commit a2fca7a36d21fc9517fb31dafafc03f92fbf859b Author: jzlv Date: Tue Apr 13 19:23:11 2021 +0800 first commit diff --git a/.cproject b/.cproject new file mode 100644 index 00000000..12c85d88 --- /dev/null +++ b/.cproject @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + make + BOARD=bl706_iot + APP=helloworld + true + false + true + + + make + clean + true + false + true + + + make + INTERFACE=jlink + download + true + false + true + + + + \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..7628a207 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +out/* +build/* +.vscode/settings.json +.settings + +**/.cdk +**/Lst +**/Obj + +examples/**/*.mk +examples/**/*.cdkws +!examples/bl_mcu_sdk.cdkws +examples/**/*.mk +examples/**/*.bat +examples/**/cdk/*.txt + +tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader_cfg.ini +tools/bflb_flash_tool/chips/bl702/img_create_mcu/bootinfo.bin +tools/bflb_flash_tool/chips/bl702/img_create_mcu/img.bin +tools/bflb_flash_tool/chips/bl702/img_create_mcu/whole_img.bin +tools/bflb_flash_tool/chips/bl702/img_create_mcu/whole_img.pack +tools/bflb_flash_tool/img/project.bin +tools/bflb_flash_tool/log/* \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 00000000..ea32820e --- /dev/null +++ b/.project @@ -0,0 +1,27 @@ + + + bl_mcu_sdk + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..7b69b573 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,23 @@ +cmake_minimum_required(VERSION 3.10) +set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/tools/cmake/riscv64-unknown-elf-gcc.cmake) +include(${CMAKE_SOURCE_DIR}/tools/cmake/compiler_flags.cmake) +include(${CMAKE_SOURCE_DIR}/tools/cmake/tools.cmake) + +PROJECT(${BOARD} C CXX ASM) + +include_directories(${CMAKE_SOURCE_DIR}/common/misc) +include_directories(${CMAKE_SOURCE_DIR}/bsp/bsp_common/platform) +include_directories(${CMAKE_SOURCE_DIR}/bsp/board/${BOARD}) + +add_subdirectory(common) +add_subdirectory(components/fatfs) +add_subdirectory(components/usb_stack) +add_subdirectory(drivers/${mcu}_driver) + +if(${SUPPORT_SHELL} STREQUAL "ENABLE") +add_subdirectory(components/shell) +else() +endif() + +search_application(${CMAKE_SOURCE_DIR}/examples) + diff --git a/Jlink_bl_mcu_sdk.launch b/Jlink_bl_mcu_sdk.launch new file mode 100644 index 00000000..df2b3c46 --- /dev/null +++ b/Jlink_bl_mcu_sdk.launch @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..85f48b21 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + 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 [2020] [BOUFFALO LAB (NANJING) CO., LTD.] + + 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. \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..99bcf1eb --- /dev/null +++ b/Makefile @@ -0,0 +1,24 @@ +BOARD?=bl706_iot +APP?=helloworld +CHIP?=bl702 +INTERFACE?=jlink +BAUDRATE ?=12000 + +export BOARD +export APP +# The command to remove a file. +RM = cmake -E rm -rf + +build: + cmake -E make_directory build + cmake -E copy project.build build + make -C ./build -f ./project.build + +download: + ./tools/bflb_flash_tool/bflb_mcu_tool --chipname=$(CHIP) --interface=$(INTERFACE) --baudrate=$(BAUDRATE) + +clean: + $(RM) out + $(RM) build +.PHONY:build clean download + diff --git a/Preload.cmake b/Preload.cmake new file mode 100644 index 00000000..6c16e991 --- /dev/null +++ b/Preload.cmake @@ -0,0 +1 @@ +set(CMAKE_GENERATOR "Unix Makefiles" CACHE INTERNAL "" FORCE) \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 00000000..d8b27add --- /dev/null +++ b/README.md @@ -0,0 +1,117 @@ +# 简介 + +**bl mcu sdk** 是博流智能科技团队专为 BL602/BL604,BL702/BL704/BL706 以及未来其他系列芯片提供的 MCU 软件开发包。 + +## 代码框架 + +``` + +bl_mcu_sdk +├── bsp +│ ├── board +│ │ ├── bl706_avb +│ │ ├── bl706_iot +│ │ └── bl602_xxx +│ └── bsp_common +├── common +│ ├── device +│ ├── libc +│ ├── list +│ ├── memheap +│ ├── misc +│ ├── partition +│ ├── ring_buffer +│ └── soft_crc +├── components +│ ├── fatfs +│ ├── freertos +│ ├── shell +│ └── usb_stack +├── docs +│ ├── bl70x_docs +│ ├── development_guide +├── drivers +│ ├── bl602_driver +│ └── bl702_driver +├── examples +│ ├── adc +│ ├── audio +│ ├── camera +│ ├── coremark +│ ├── dac +│ ├── dhrystone +│ ├── dma +│ ├── gpio +│ ├── hellowd +│ ├── i2c +│ ├── i2s +│ ├── memheap +│ ├── spi +│ ├── uart +│ └── usb +├── out +└── tools + ├── bflb_flash_tool + ├── cdk_flashloader + ├── cmake + └── openocd + +``` + +- bsp 存放板级相关的配置文件和驱动。 +- common 存放一些常见的函数库 +- components 存放第三方库 +- drivers 存放芯片外设驱动库 +- examples 存放外设 demo +- out 存放目标文件输出路径 +- tools 存放一些工具包 + +# 资源 + +## 硬件资源 + +- BL706 IOT 开发板 +- BL706 AVB 开发板 + +## 芯片手册 + +[芯片参考手册](https://dev.bouffalolab.com/media/upload/doc/BL702_BL704_706_RM_zh_CN_1.1.pdf)|[芯片数据手册](https://dev.bouffalolab.com/media/upload/doc/BL702_BL704_BL706_DS_zh_CN_Combo_1.7.pdf) + +更多资料请访问 BouffaloLab 开发者网站: [https://dev.bouffalolab.com/](https://dev.bouffalolab.com/) + +## 文档教程 + +[bl mcu sdk 文档教程](http://bouffalolab.gitee.io/bl_mcu_sdk) + +## 视频教程 + +- [五分钟带你了解 RISC-V 的指令集架构](https://www.bilibili.com/video/BV1aA411L77o) +- [BL706 开发板基于 Eclipse 的环境搭建](https://www.bilibili.com/video/BV1HK4y1o7P1) +- [BL706 开发板基于 CDK 的环境搭建](https://www.bilibili.com/video/BV14U4y1h7d2) + +## 工具 + +- [Eclipse](https://dev.bouffalolab.com/media/upload/download/BouffaloLab_eclipse_x86_64_win.zip) Windows 下 eclipse 开发免安装包 +- [CDK](https://occ.t-head.cn/development/activities/cdk) ,平头哥剑池 CDK 集成开发环境,建议使用 CDK v2.8.4 以上版本 +- [cmake 3.19](https://cmake.org/files/v3.19/) , cmake 编译工具,建议使用 cmake v3.19 以上版本 +- [J-Link v10](https://www.segger.com/downloads/jlink), J-Link 调试器,用于在线调试芯片,建议使用 J-Link V10 以上版本硬件,软件驱动建议使用 V6.98 版本 + +博流提供的图形化烧写工具: +- [Bouffalo Lab Dev Cube For Windows](https://dev.bouffalolab.com/media/upload/download/BouffaloLabDevCube-1.5.0-win32.zip) +- [Bouffalo Lab Dev Cube For Ubuntu](https://dev.bouffalolab.com/media/upload/download/bouffalo_build_tool_for_ubuntu_v1.0.0.rar) + +## 论坛 + +博流开发者交流论坛: [https://bbs.bouffalolab.com/](https://bbs.bouffalolab.com/) + +# 许可协议 + +**bl mcu sdk** 完全开源,遵循 Apache License 2.0 开源许可协议,可以免费在商业产品中使用,并且不需要公开私有代码。 + +``` +/* + * Copyright (c) 2021 Bouffalolab team + * + * SPDX-License-Identifier: Apache-2.0 + */ + ``` \ No newline at end of file diff --git a/bl_mcu_flash.launch b/bl_mcu_flash.launch new file mode 100644 index 00000000..11865fe3 --- /dev/null +++ b/bl_mcu_flash.launch @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/board/bl706_avb/bl702_config.h b/bsp/board/bl706_avb/bl702_config.h new file mode 100644 index 00000000..d241ede9 --- /dev/null +++ b/bsp/board/bl706_avb/bl702_config.h @@ -0,0 +1,7 @@ +#ifndef __BL702_CONFIG_H__ +#define __BL702_CONFIG_H__ + +#include "peripheral_config.h" +#include "clock_config.h" + +#endif \ No newline at end of file diff --git a/bsp/board/bl706_avb/board.c b/bsp/board/bl706_avb/board.c new file mode 100644 index 00000000..ac592708 --- /dev/null +++ b/bsp/board/bl706_avb/board.c @@ -0,0 +1,235 @@ +#include "hal_gpio.h" +#include "hal_clock.h" +#include "bl702_glb.h" +#include "pinmux_config.h" + +struct pin_mux_cfg +{ + uint8_t pin; + uint16_t func; +}; + +static const struct pin_mux_cfg af_pin_table[] = +{ + { + .pin = GPIO_PIN_0, + .func = CONFIG_GPIO0_FUNC + }, + { + .pin = GPIO_PIN_1, + .func = CONFIG_GPIO1_FUNC + }, + { + .pin = GPIO_PIN_2, + .func = CONFIG_GPIO2_FUNC + }, + { + .pin = GPIO_PIN_3, + .func = CONFIG_GPIO3_FUNC + }, + { + .pin = GPIO_PIN_4, + .func = CONFIG_GPIO4_FUNC + }, + { + .pin = GPIO_PIN_5, + .func = CONFIG_GPIO5_FUNC + }, + { + .pin = GPIO_PIN_6, + .func = CONFIG_GPIO6_FUNC + }, + { + .pin = GPIO_PIN_7, + .func = CONFIG_GPIO7_FUNC + }, + { + .pin = GPIO_PIN_8, + .func = CONFIG_GPIO8_FUNC + }, + { + .pin = GPIO_PIN_9, + .func = CONFIG_GPIO9_FUNC + }, + { + .pin = GPIO_PIN_10, + .func = CONFIG_GPIO10_FUNC + }, + { + .pin = GPIO_PIN_11, + .func = CONFIG_GPIO11_FUNC + }, + { + .pin = GPIO_PIN_12, + .func = CONFIG_GPIO12_FUNC + }, + { + .pin = GPIO_PIN_13, + .func = CONFIG_GPIO13_FUNC + }, + { + .pin = GPIO_PIN_14, + .func = CONFIG_GPIO14_FUNC + }, + { + .pin = GPIO_PIN_15, + .func = CONFIG_GPIO15_FUNC + }, + { + .pin = GPIO_PIN_16, + .func = CONFIG_GPIO16_FUNC + }, + { + .pin = GPIO_PIN_17, + .func = CONFIG_GPIO17_FUNC + }, + { + .pin = GPIO_PIN_18, + .func = CONFIG_GPIO18_FUNC + }, + { + .pin = GPIO_PIN_19, + .func = CONFIG_GPIO19_FUNC + }, + { + .pin = GPIO_PIN_20, + .func = CONFIG_GPIO20_FUNC + }, + { + .pin = GPIO_PIN_21, + .func = CONFIG_GPIO21_FUNC + }, + { + .pin = GPIO_PIN_22, + .func = CONFIG_GPIO22_FUNC + }, + { + .pin = GPIO_PIN_23, + .func = CONFIG_GPIO23_FUNC + }, + { + .pin = GPIO_PIN_24, + .func = CONFIG_GPIO24_FUNC + }, + { + .pin = GPIO_PIN_25, + .func = CONFIG_GPIO25_FUNC + }, + { + .pin = GPIO_PIN_26, + .func = CONFIG_GPIO26_FUNC + }, + { + .pin = GPIO_PIN_27, + .func = CONFIG_GPIO27_FUNC + }, + { + .pin = GPIO_PIN_28, + .func = CONFIG_GPIO28_FUNC + }, + { + .pin = GPIO_PIN_29, + .func = CONFIG_GPIO29_FUNC + }, + { + .pin = GPIO_PIN_30, + .func = CONFIG_GPIO30_FUNC + }, + { + .pin = GPIO_PIN_31, + .func = CONFIG_GPIO31_FUNC + }, + { + .pin = GPIO_PIN_32, + .func = CONFIG_GPIO32_FUNC + }, + { + .pin = GPIO_PIN_33, + .func = CONFIG_GPIO33_FUNC + }, + { + .pin = GPIO_PIN_34, + .func = CONFIG_GPIO34_FUNC + }, + { + .pin = GPIO_PIN_35, + .func = CONFIG_GPIO35_FUNC + }, + { + .pin = GPIO_PIN_36, + .func = CONFIG_GPIO36_FUNC + }, + { + .pin = GPIO_PIN_37, + .func = CONFIG_GPIO37_FUNC + } + +}; + +static void board_pin_mux_init(void) +{ + GLB_GPIO_Cfg_Type gpio_cfg; + + gpio_cfg.drive = 0; + gpio_cfg.smtCtrl = 1; + gpio_cfg.gpioMode = GPIO_MODE_AF; + gpio_cfg.pullType = GPIO_PULL_UP; + + for (int i = 0; i < sizeof(af_pin_table)/sizeof(af_pin_table[0]); i++) + { + gpio_cfg.gpioPin = af_pin_table[i].pin; + gpio_cfg.gpioFun = af_pin_table[i].func; + + if(af_pin_table[i].func == GPIO_FUN_UNUSED) + { + continue; + } + else if(af_pin_table[i].func == GPIO_FUN_PWM) + { + gpio_cfg.pullType = GPIO_PULL_DOWN; + } + else if((af_pin_table[i].func & 0x70) == 0x70) + { + gpio_cfg.gpioFun = GPIO_FUN_UART; + uint8_t sig = af_pin_table[i].func & 0x07; + GLB_UART_Fun_Sel((gpio_cfg.gpioPin % 8), sig); + } + GLB_GPIO_Init(&gpio_cfg); + } + +} + +static void board_clock_init(void) +{ + system_clock_init(); + peripheral_clock_init(); +} + +void bl_show_info(void) +{ + MSG(" ____ __ __ _ _ _ \r\n"); + MSG(" | _ \\ / _|/ _| | | | | | | \r\n"); + MSG(" | |_) | ___ _ _| |_| |_ __ _| | ___ | | __ _| |__ \r\n"); + MSG(" | _ < / _ \\| | | | _| _/ _` | |/ _ \\| |/ _` | '_ \\ \r\n"); + MSG(" | |_) | (_) | |_| | | | || (_| | | (_) | | (_| | |_) |\r\n"); + MSG(" |____/ \\___/ \\__,_|_| |_| \\__,_|_|\\___/|_|\\__,_|_.__/ \r\n"); + MSG("\r\n"); + MSG("Build:%s,%s\r\n",__TIME__,__DATE__); + MSG("2016 - 2030 Copyright by bouffalolab team\r\n"); + +#if 0 + MSG("root clock:%dM\r\n",system_clock_get(SYSTEM_CLOCK_ROOT_CLOCK)/1000000); + MSG("fclk clock:%dM\r\n",system_clock_get(SYSTEM_CLOCK_FCLK)/1000000); + MSG("bclk clock:%dM\r\n",system_clock_get(SYSTEM_CLOCK_BCLK)/1000000); + + MSG("uart clock:%dM\r\n",peripheral_clock_get(PERIPHERAL_CLOCK_UART)/1000000); + MSG("spi clock:%dM\r\n",peripheral_clock_get(PERIPHERAL_CLOCK_SPI)/1000000); + MSG("i2c clock:%dM\r\n",peripheral_clock_get(PERIPHERAL_CLOCK_I2C)/1000000); +#endif +} + +void board_init(void) +{ + board_clock_init(); + board_pin_mux_init(); +} \ No newline at end of file diff --git a/bsp/board/bl706_avb/clock_config.h b/bsp/board/bl706_avb/clock_config.h new file mode 100644 index 00000000..f9d414b1 --- /dev/null +++ b/bsp/board/bl706_avb/clock_config.h @@ -0,0 +1,44 @@ +#ifndef _CLOCK_CONFIG_H +#define _CLOCK_CONFIG_H + +#define BSP_ROOT_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_144M + +#if defined(BSP_ROOT_CLOCK_SOURCE) +#define BSP_HCLK_DIV 0 +#define BSP_BCLK_DIV 1 +#endif + +#if defined(BSP_USING_UART0)||defined(BSP_USING_UART1) +#define BSP_UART_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_96M +#define BSP_UART_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_I2C0) +#define BSP_I2C_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_BCLK +#define BSP_I2C_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_SPI0) +#define BSP_SPI_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_BCLK +#define BSP_SPI_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_PWM) +#define BSP_PWM_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_XCLK +#define BSP_PWM_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_IR) +#define BSP_IR_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_XCLK +#define BSP_IR_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_I2S0) +#define BSP_I2S_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_XCLK +#define BSP_I2S_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_ADC0) +#define BSP_ADC_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_XCLK +#define BSP_ADC_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_DAC0) +#define BSP_DAC_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_XCLK +#define BSP_DAC_CLOCK_DIV 0 +#endif + +#endif \ No newline at end of file diff --git a/bsp/board/bl706_avb/peripheral_config.h b/bsp/board/bl706_avb/peripheral_config.h new file mode 100644 index 00000000..ed56edbe --- /dev/null +++ b/bsp/board/bl706_avb/peripheral_config.h @@ -0,0 +1,278 @@ +#ifndef _PERIPHERAL_CONFIG_H_ +#define _PERIPHERAL_CONFIG_H_ + +/* PERIPHERAL USING LIST */ +#define BSP_USING_ADC0 +#define BSP_USING_DAC0 +#define BSP_USING_UART0 +#define BSP_USING_UART1 +#define BSP_USING_SPI0 +#define BSP_USING_I2C0 +#define BSP_USING_I2S0 +#define BSP_USING_USB +#define BSP_USING_PWM0 +/* ----------------------*/ + + +/* PERIPHERAL With DMA LIST */ + +#define BSP_USING_DMA0_CH0 +#define BSP_USING_DMA0_CH1 + +#ifdef BSP_USING_UART1 +#define BSP_USING_DMA0_CH2 +#endif + +#ifdef BSP_USING_SPI0 +#define BSP_USING_DMA0_CH3 +#define BSP_USING_DMA0_CH4 +#endif + +#ifdef BSP_USING_I2S0 +#define BSP_USING_DMA0_CH2 +#endif + +#ifdef BSP_USING_DAC0 +#define BSP_USING_DMA0_CH6 +#endif + + +/* PERIPHERAL CONFIG */ +#if defined(BSP_USING_ADC0) +#ifndef ADC_CONFIG +#define ADC_CONFIG \ +{ \ + .clk = ADC_CLK_500KHZ,\ + .vref = ADC_VREF_3P2V,\ + .resWidth = ADC_DATA_WIDTH_16_WITH_256_AVERAGE,\ +} +#endif +#endif + +#if defined(BSP_USING_DAC0) +#ifndef DAC_CONFIG +#define DAC_CONFIG \ +{ \ + .clk = DAC_CLK_500KHZ,\ + .pin.dac0 = GLB_GPIO_PIN_11,\ + .pin.pin_num = 1,\ +} +#endif +#endif + +#if defined(BSP_USING_UART0) +#ifndef UART0_CONFIG +#define UART0_CONFIG \ +{ \ + .id = 0, \ + .baudrate = 2000000,\ + .databits = UART_DATA_LEN_8, \ + .stopbits = UART_STOP_ONE, \ + .parity = UART_PAR_NONE, \ + .fifo_threshold = 1, \ +} +#endif +#endif + +#if defined(BSP_USING_UART1) +#ifndef UART1_CONFIG +#define UART1_CONFIG \ +{ \ + .id = 1, \ + .baudrate = 2000000,\ + .databits = UART_DATA_LEN_8, \ + .stopbits = UART_STOP_ONE, \ + .parity = UART_PAR_NONE, \ + .fifo_threshold = 64, \ +} +#endif +#endif + +#if defined(BSP_USING_SPI0) +#ifndef SPI0_CONFIG +#define SPI0_CONFIG \ +{ \ + .id = 0, \ + .clk = 18000000,\ + .mode = SPI_MASTER_MODE, \ + .direction = SPI_MSB_BYTE0_DIRECTION_FIRST, \ + .clk_polaraity = SPI_POLARITY_LOW, \ + .clk_phase = SPI_PHASE_1EDGE, \ + .datasize = SPI_DATASIZE_8BIT, \ + .fifo_threshold = 1, \ +} +#endif +#endif + +#if defined(BSP_USING_PWM0) +#ifndef PWM_CONFIG_0 +#define PWM_CONFIG_0 \ +{ \ + .pin = GPIO_PIN_22, \ + .frequency = 1000000, \ + .dutyCycle = 0, \ +} +#endif +#endif + +#if defined(BSP_USING_I2S0) +#ifndef I2S0_CONFIG +#define I2S0_CONFIG \ +{ \ + .id = 0, \ + .iis_mode = I2S_MODE_MASTER,\ + .interface_mode = I2S_MODE_LEFT, \ + .sampl_freq_hz = 16*1000, \ + .channel_num = I2S_FS_CHANNELS_NUM_MONO, \ + .frame_size = I2S_FRAME_LEN_16, \ + .data_size = I2S_DATA_LEN_16, \ + .fifo_threshold = 8, \ +} +#endif +#endif + +#if defined(BSP_USING_DMA0_CH0) +#ifndef DMA0_CH0_CONFIG +#define DMA0_CH0_CONFIG \ +{ \ + .id = 0, \ + .ch = 0,\ + .direction = DMA_MEMORY_TO_MEMORY,\ + .transfer_mode = DMA_LLI_ONCE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_NONE, \ + .src_width = DMA_TRANSFER_WIDTH_32BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_32BIT , \ +} +#endif +#endif + +#if defined(BSP_USING_DMA0_CH1) +#ifndef DMA0_CH1_CONFIG +#define DMA0_CH1_CONFIG \ +{ \ + .id = 0, \ + .ch = 1,\ + .direction = DMA_MEMORY_TO_MEMORY, \ + .transfer_mode = DMA_LLI_ONCE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_NONE, \ + .src_width = DMA_TRANSFER_WIDTH_16BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_16BIT , \ +} +#endif +#endif + +#if defined(BSP_USING_DMA0_CH2) +#ifndef DMA0_CH2_CONFIG +#define DMA0_CH2_CONFIG \ +{ \ + .id = 0, \ + .ch = 2,\ + .direction = DMA_MEMORY_TO_PERIPH, \ + .transfer_mode = DMA_LLI_ONCE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_UART1_TX, \ + .src_width = DMA_TRANSFER_WIDTH_8BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_8BIT , \ +} +#endif +#endif + + +#if defined(BSP_USING_DMA0_CH3) +#ifndef DMA0_CH3_CONFIG +#define DMA0_CH3_CONFIG \ +{ \ + .id = 0, \ + .ch = 3,\ + .direction = DMA_MEMORY_TO_PERIPH, \ + .transfer_mode = DMA_LLI_ONCE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_SPI0_TX, \ + .src_width = DMA_TRANSFER_WIDTH_8BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_8BIT , \ +} +#endif +#endif + +#if defined(BSP_USING_DMA0_CH4) +#ifndef DMA0_CH4_CONFIG +#define DMA0_CH4_CONFIG \ +{ \ + .id = 0, \ + .ch = 4,\ + .direction = DMA_PERIPH_TO_MEMORY, \ + .transfer_mode = DMA_LLI_ONCE_MODE, \ + .src_req = DMA_REQUEST_SPI0_RX, \ + .dst_req = DMA_REQUEST_NONE, \ + .src_width = DMA_TRANSFER_WIDTH_8BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_8BIT , \ +} +#endif +#endif + + +#if defined(BSP_USING_DMA0_CH5) +#ifndef DMA0_CH5_CONFIG +#define DMA0_CH5_CONFIG \ +{ \ + .id = 0, \ + .ch = 5,\ + .direction = DMA_MEMORY_TO_PERIPH, \ + .transfer_mode = DMA_LLI_CYCLE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_I2S_TX, \ + .src_width = DMA_TRANSFER_WIDTH_16BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_16BIT , \ +} +#endif +#endif + +#if defined(BSP_USING_DMA0_CH6) +#ifndef DMA0_CH6_CONFIG +#define DMA0_CH6_CONFIG \ +{ \ + .id = 0, \ + .ch = 6,\ + .direction = DMA_MEMORY_TO_PERIPH, \ + .transfer_mode = DMA_LLI_CYCLE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_I2S_TX, \ + .src_width = DMA_TRANSFER_WIDTH_16BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_16BIT , \ +} +#endif +#endif + + +#if defined(BSP_USING_DMA0_CH7) +#ifndef DMA0_CH7_CONFIG +#define DMA0_CH7_CONFIG \ +{ \ + .id = 0, \ + .ch = 0,\ + .direction = DMA_MEMORY_TO_MEMORY,\ + .transfer_mode = DMA_LLI_ONCE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_NONE, \ + .src_width = DMA_TRANSFER_WIDTH_32BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_32BIT , \ +} +#endif +#endif + + + +#if defined(BSP_USING_I2C0) +#ifndef I2C0_CONFIG +#define I2C0_CONFIG \ +{ \ + .id = 0, \ + .mode = I2C_HW_MODE,\ + .phase = 15, \ +} +#endif +#endif + +#endif diff --git a/bsp/board/bl706_avb/pinmux_config.h b/bsp/board/bl706_avb/pinmux_config.h new file mode 100644 index 00000000..047fa999 --- /dev/null +++ b/bsp/board/bl706_avb/pinmux_config.h @@ -0,0 +1,180 @@ +/** + * @file pinmux_config.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef _PINMUX_CONFIG_H +#define _PINMUX_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// GPIO0 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio0 function +#define CONFIG_GPIO0_FUNC GPIO_FUN_UNUSED + +// GPIO1 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_CTS//GPIO_FUN_UART1_CTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio1 function +#define CONFIG_GPIO1_FUNC GPIO_FUN_UNUSED + +// GPIO2 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_TX//GPIO_FUN_UART1_TX//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio2 function +#define CONFIG_GPIO2_FUNC GPIO_FUN_UNUSED + +// GPIO3 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_RX//GPIO_FUN_UART1_RX//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio3 function +#define CONFIG_GPIO3_FUNC GPIO_FUN_UNUSED + +// GPIO4 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio4 function +#define CONFIG_GPIO4_FUNC GPIO_FUN_UNUSED + +// GPIO5 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_CTS//GPIO_FUN_UART1_CTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio5 function +#define CONFIG_GPIO5_FUNC GPIO_FUN_UNUSED + +// GPIO6 <2> [GPIO_FUN_UNUSED//GPIO_FUN_CLK_OUT//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_TX//GPIO_FUN_UART1_TX//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio6 function +#define CONFIG_GPIO6_FUNC GPIO_FUN_UNUSED + +// GPIO7 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RX//GPIO_FUN_UART1_RX//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio7 function +#define CONFIG_GPIO7_FUNC GPIO_FUN_USB + +// GPIO8 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio8 function +#define CONFIG_GPIO8_FUNC GPIO_FUN_USB + +// GPIO9 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio9 function +#define CONFIG_GPIO9_FUNC GPIO_FUN_UNUSED + +// GPIO10 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio10 function +#define CONFIG_GPIO10_FUNC GPIO_FUN_UNUSED + +// GPIO11 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio11 function +#define CONFIG_GPIO11_FUNC GPIO_FUN_UNUSED + +// GPIO12 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio12 function +#define CONFIG_GPIO12_FUNC GPIO_FUN_UNUSED + +// GPIO13 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio13 function +#define CONFIG_GPIO13_FUNC GPIO_FUN_UNUSED + +// GPIO14 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio14 function +#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX + +// GPIO15 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio15 function +#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX + +// GPIO16 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio16 function +#define CONFIG_GPIO16_FUNC GPIO_FUN_UNUSED + +// GPIO17 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio17 function +#define CONFIG_GPIO17_FUNC GPIO_FUN_UNUSED + +// GPIO18 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio18 function +#define CONFIG_GPIO18_FUNC GPIO_FUN_UART1_TX + +// GPIO19 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio19 function +#define CONFIG_GPIO19_FUNC GPIO_FUN_UART1_RX + +// GPIO20 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio20 function +#define CONFIG_GPIO20_FUNC GPIO_FUN_UNUSED + +// GPIO21 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio21 function +#define CONFIG_GPIO21_FUNC GPIO_FUN_UNUSED + +// GPIO22 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio22 function +#define CONFIG_GPIO22_FUNC GPIO_FUN_UNUSED + +// GPIO23 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio23 function +#define CONFIG_GPIO23_FUNC GPIO_FUN_UNUSED + +// GPIO24 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio24 function +#define CONFIG_GPIO24_FUNC GPIO_FUN_UNUSED + +// GPIO25 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio25 function +#define CONFIG_GPIO25_FUNC GPIO_FUN_UNUSED + +// GPIO26 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio26 function +#define CONFIG_GPIO26_FUNC GPIO_FUN_UNUSED + +// GPIO27 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio27 function +#define CONFIG_GPIO27_FUNC GPIO_FUN_UNUSED + +// GPIO28 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio28 function +#define CONFIG_GPIO28_FUNC GPIO_FUN_UNUSED + +// GPIO29 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio29 function +#define CONFIG_GPIO29_FUNC GPIO_FUN_UNUSED + +// GPIO30 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio30 function +#define CONFIG_GPIO30_FUNC GPIO_FUN_UNUSED + +// GPIO31 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio31 function +#define CONFIG_GPIO31_FUNC GPIO_FUN_UNUSED + +// GPIO32 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio32 function +#define CONFIG_GPIO32_FUNC GPIO_FUN_UNUSED + +// GPIO33 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio33 function +#define CONFIG_GPIO33_FUNC GPIO_FUN_UNUSED + +// GPIO34 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio34 function +#define CONFIG_GPIO34_FUNC GPIO_FUN_UNUSED + +// GPIO35 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio35 function +#define CONFIG_GPIO35_FUNC GPIO_FUN_UNUSED + +// GPIO36 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio36 function +#define CONFIG_GPIO36_FUNC GPIO_FUN_UNUSED + +// GPIO37 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio37 function +#define CONFIG_GPIO37_FUNC GPIO_FUN_UNUSED + +#endif diff --git a/bsp/board/bl706_iot/bl702_config.h b/bsp/board/bl706_iot/bl702_config.h new file mode 100644 index 00000000..766085fc --- /dev/null +++ b/bsp/board/bl706_iot/bl702_config.h @@ -0,0 +1,30 @@ +/** + * @file bl702_config.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#ifndef __BL702_CONFIG_H__ +#define __BL702_CONFIG_H__ + +#include "peripheral_config.h" +#include "clock_config.h" + +#endif \ No newline at end of file diff --git a/bsp/board/bl706_iot/board.c b/bsp/board/bl706_iot/board.c new file mode 100644 index 00000000..03181750 --- /dev/null +++ b/bsp/board/bl706_iot/board.c @@ -0,0 +1,258 @@ +/** + * @file board.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "hal_gpio.h" +#include "hal_clock.h" +#include "bl702_glb.h" +#include "pinmux_config.h" + +struct pin_mux_cfg +{ + uint8_t pin; + uint16_t func; +}; + +static const struct pin_mux_cfg af_pin_table[] = +{ + { + .pin = GPIO_PIN_0, + .func = CONFIG_GPIO0_FUNC + }, + { + .pin = GPIO_PIN_1, + .func = CONFIG_GPIO1_FUNC + }, + { + .pin = GPIO_PIN_2, + .func = CONFIG_GPIO2_FUNC + }, + { + .pin = GPIO_PIN_3, + .func = CONFIG_GPIO3_FUNC + }, + { + .pin = GPIO_PIN_4, + .func = CONFIG_GPIO4_FUNC + }, + { + .pin = GPIO_PIN_5, + .func = CONFIG_GPIO5_FUNC + }, + { + .pin = GPIO_PIN_6, + .func = CONFIG_GPIO6_FUNC + }, + { + .pin = GPIO_PIN_7, + .func = CONFIG_GPIO7_FUNC + }, + { + .pin = GPIO_PIN_8, + .func = CONFIG_GPIO8_FUNC + }, + { + .pin = GPIO_PIN_9, + .func = CONFIG_GPIO9_FUNC + }, + { + .pin = GPIO_PIN_10, + .func = CONFIG_GPIO10_FUNC + }, + { + .pin = GPIO_PIN_11, + .func = CONFIG_GPIO11_FUNC + }, + { + .pin = GPIO_PIN_12, + .func = CONFIG_GPIO12_FUNC + }, + { + .pin = GPIO_PIN_13, + .func = CONFIG_GPIO13_FUNC + }, + { + .pin = GPIO_PIN_14, + .func = CONFIG_GPIO14_FUNC + }, + { + .pin = GPIO_PIN_15, + .func = CONFIG_GPIO15_FUNC + }, + { + .pin = GPIO_PIN_16, + .func = CONFIG_GPIO16_FUNC + }, + { + .pin = GPIO_PIN_17, + .func = CONFIG_GPIO17_FUNC + }, + { + .pin = GPIO_PIN_18, + .func = CONFIG_GPIO18_FUNC + }, + { + .pin = GPIO_PIN_19, + .func = CONFIG_GPIO19_FUNC + }, + { + .pin = GPIO_PIN_20, + .func = CONFIG_GPIO20_FUNC + }, + { + .pin = GPIO_PIN_21, + .func = CONFIG_GPIO21_FUNC + }, + { + .pin = GPIO_PIN_22, + .func = CONFIG_GPIO22_FUNC + }, + { + .pin = GPIO_PIN_23, + .func = CONFIG_GPIO23_FUNC + }, + { + .pin = GPIO_PIN_24, + .func = CONFIG_GPIO24_FUNC + }, + { + .pin = GPIO_PIN_25, + .func = CONFIG_GPIO25_FUNC + }, + { + .pin = GPIO_PIN_26, + .func = CONFIG_GPIO26_FUNC + }, + { + .pin = GPIO_PIN_27, + .func = CONFIG_GPIO27_FUNC + }, + { + .pin = GPIO_PIN_28, + .func = CONFIG_GPIO28_FUNC + }, + { + .pin = GPIO_PIN_29, + .func = CONFIG_GPIO29_FUNC + }, + { + .pin = GPIO_PIN_30, + .func = CONFIG_GPIO30_FUNC + }, + { + .pin = GPIO_PIN_31, + .func = CONFIG_GPIO31_FUNC + }, + { + .pin = GPIO_PIN_32, + .func = CONFIG_GPIO32_FUNC + }, + { + .pin = GPIO_PIN_33, + .func = CONFIG_GPIO33_FUNC + }, + { + .pin = GPIO_PIN_34, + .func = CONFIG_GPIO34_FUNC + }, + { + .pin = GPIO_PIN_35, + .func = CONFIG_GPIO35_FUNC + }, + { + .pin = GPIO_PIN_36, + .func = CONFIG_GPIO36_FUNC + }, + { + .pin = GPIO_PIN_37, + .func = CONFIG_GPIO37_FUNC + } + +}; + +static void board_pin_mux_init(void) +{ + GLB_GPIO_Cfg_Type gpio_cfg; + + gpio_cfg.drive = 0; + gpio_cfg.smtCtrl = 1; + gpio_cfg.gpioMode = GPIO_MODE_AF; + gpio_cfg.pullType = GPIO_PULL_UP; + + for (int i = 0; i < sizeof(af_pin_table)/sizeof(af_pin_table[0]); i++) + { + gpio_cfg.gpioPin = af_pin_table[i].pin; + gpio_cfg.gpioFun = af_pin_table[i].func; + + if(af_pin_table[i].func == GPIO_FUN_UNUSED) + { + continue; + } + else if(af_pin_table[i].func == GPIO_FUN_PWM) + { + gpio_cfg.pullType = GPIO_PULL_DOWN; + } + else if((af_pin_table[i].func & 0x70) == 0x70) + { + gpio_cfg.gpioFun = GPIO_FUN_UART; + uint8_t sig = af_pin_table[i].func & 0x07; + GLB_UART_Fun_Sel((gpio_cfg.gpioPin % 8), sig); + } + GLB_GPIO_Init(&gpio_cfg); + } + +} + +static void board_clock_init(void) +{ + system_clock_init(); + peripheral_clock_init(); +} + +void bl_show_info(void) +{ + MSG(" ____ __ __ _ _ _ \r\n"); + MSG(" | _ \\ / _|/ _| | | | | | | \r\n"); + MSG(" | |_) | ___ _ _| |_| |_ __ _| | ___ | | __ _| |__ \r\n"); + MSG(" | _ < / _ \\| | | | _| _/ _` | |/ _ \\| |/ _` | '_ \\ \r\n"); + MSG(" | |_) | (_) | |_| | | | || (_| | | (_) | | (_| | |_) |\r\n"); + MSG(" |____/ \\___/ \\__,_|_| |_| \\__,_|_|\\___/|_|\\__,_|_.__/ \r\n"); + MSG("\r\n"); + MSG("Build:%s,%s\r\n",__TIME__,__DATE__); + MSG("2016 - 2030 Copyright by bouffalolab team\r\n"); + +#if 0 + MSG("root clock:%dM\r\n",system_clock_get(SYSTEM_CLOCK_ROOT_CLOCK)/1000000); + MSG("fclk clock:%dM\r\n",system_clock_get(SYSTEM_CLOCK_FCLK)/1000000); + MSG("bclk clock:%dM\r\n",system_clock_get(SYSTEM_CLOCK_BCLK)/1000000); + + MSG("uart clock:%dM\r\n",peripheral_clock_get(PERIPHERAL_CLOCK_UART)/1000000); + MSG("spi clock:%dM\r\n",peripheral_clock_get(PERIPHERAL_CLOCK_SPI)/1000000); + MSG("i2c clock:%dM\r\n",peripheral_clock_get(PERIPHERAL_CLOCK_I2C)/1000000); +#endif +} + +void board_init(void) +{ + board_clock_init(); + board_pin_mux_init(); +} \ No newline at end of file diff --git a/bsp/board/bl706_iot/clock_config.h b/bsp/board/bl706_iot/clock_config.h new file mode 100644 index 00000000..14365b4c --- /dev/null +++ b/bsp/board/bl706_iot/clock_config.h @@ -0,0 +1,67 @@ +/** + * @file clock_config.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#ifndef _CLOCK_CONFIG_H +#define _CLOCK_CONFIG_H + +#define BSP_ROOT_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_144M + +#if defined(BSP_ROOT_CLOCK_SOURCE) +#define BSP_HCLK_DIV 0 +#define BSP_BCLK_DIV 1 +#endif + +#if defined(BSP_USING_UART0)||defined(BSP_USING_UART1) +#define BSP_UART_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_96M +#define BSP_UART_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_I2C0) +#define BSP_I2C_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_BCLK +#define BSP_I2C_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_SPI0) +#define BSP_SPI_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_BCLK +#define BSP_SPI_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_PWM) +#define BSP_PWM_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_XCLK +#define BSP_PWM_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_IR) +#define BSP_IR_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_XCLK +#define BSP_IR_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_I2S0) +#define BSP_I2S_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_XCLK +#define BSP_I2S_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_ADC0) +#define BSP_ADC_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_XCLK +#define BSP_ADC_CLOCK_DIV 0 +#endif +#if defined(BSP_USING_DAC0) +#define BSP_DAC_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_XCLK +#define BSP_DAC_CLOCK_DIV 0 +#endif + +#endif \ No newline at end of file diff --git a/bsp/board/bl706_iot/peripheral_config.h b/bsp/board/bl706_iot/peripheral_config.h new file mode 100644 index 00000000..5bd50fe4 --- /dev/null +++ b/bsp/board/bl706_iot/peripheral_config.h @@ -0,0 +1,301 @@ +/** + * @file peripheral_config.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#ifndef _PERIPHERAL_CONFIG_H_ +#define _PERIPHERAL_CONFIG_H_ + +/* PERIPHERAL USING LIST */ +#define BSP_USING_ADC0 +#define BSP_USING_DAC0 +#define BSP_USING_UART0 +#define BSP_USING_UART1 +#define BSP_USING_SPI0 +#define BSP_USING_I2C0 +#define BSP_USING_I2S0 +#define BSP_USING_USB +#define BSP_USING_PWM0 +/* ----------------------*/ + + +/* PERIPHERAL With DMA LIST */ + +#define BSP_USING_DMA0_CH0 +#define BSP_USING_DMA0_CH1 + +#ifdef BSP_USING_UART1 +#define BSP_USING_DMA0_CH2 +#endif + +#ifdef BSP_USING_SPI0 +#define BSP_USING_DMA0_CH3 +#define BSP_USING_DMA0_CH4 +#endif + +#ifdef BSP_USING_I2S0 +#define BSP_USING_DMA0_CH2 +#endif + +#ifdef BSP_USING_DAC0 +#define BSP_USING_DMA0_CH6 +#endif + + +/* PERIPHERAL CONFIG */ +#if defined(BSP_USING_ADC0) +#ifndef ADC_CONFIG +#define ADC_CONFIG \ +{ \ + .clk = ADC_CLK_500KHZ,\ + .vref = ADC_VREF_3P2V,\ + .resWidth = ADC_DATA_WIDTH_16_WITH_256_AVERAGE,\ +} +#endif +#endif + +#if defined(BSP_USING_DAC0) +#ifndef DAC_CONFIG +#define DAC_CONFIG \ +{ \ + .clk = DAC_CLK_500KHZ,\ + .pin.dac0 = GLB_GPIO_PIN_11,\ + .pin.pin_num = 1,\ +} +#endif +#endif + +#if defined(BSP_USING_UART0) +#ifndef UART0_CONFIG +#define UART0_CONFIG \ +{ \ + .id = 0, \ + .baudrate = 2000000,\ + .databits = UART_DATA_LEN_8, \ + .stopbits = UART_STOP_ONE, \ + .parity = UART_PAR_NONE, \ + .fifo_threshold = 1, \ +} +#endif +#endif + +#if defined(BSP_USING_UART1) +#ifndef UART1_CONFIG +#define UART1_CONFIG \ +{ \ + .id = 1, \ + .baudrate = 2000000,\ + .databits = UART_DATA_LEN_8, \ + .stopbits = UART_STOP_ONE, \ + .parity = UART_PAR_NONE, \ + .fifo_threshold = 64, \ +} +#endif +#endif + +#if defined(BSP_USING_SPI0) +#ifndef SPI0_CONFIG +#define SPI0_CONFIG \ +{ \ + .id = 0, \ + .clk = 18000000,\ + .mode = SPI_MASTER_MODE, \ + .direction = SPI_MSB_BYTE0_DIRECTION_FIRST, \ + .clk_polaraity = SPI_POLARITY_LOW, \ + .clk_phase = SPI_PHASE_1EDGE, \ + .datasize = SPI_DATASIZE_8BIT, \ + .fifo_threshold = 1, \ +} +#endif +#endif + +#if defined(BSP_USING_PWM0) +#ifndef PWM_CONFIG_0 +#define PWM_CONFIG_0 \ +{ \ + .ch = 2, \ + .frequency = 1000000, \ + .dutyCycle = 0, \ +} +#endif +#endif + +#if defined(BSP_USING_I2S0) +#ifndef I2S0_CONFIG +#define I2S0_CONFIG \ +{ \ + .id = 0, \ + .iis_mode = I2S_MODE_MASTER,\ + .interface_mode = I2S_MODE_LEFT, \ + .sampl_freq_hz = 16*1000, \ + .channel_num = I2S_FS_CHANNELS_NUM_MONO, \ + .frame_size = I2S_FRAME_LEN_16, \ + .data_size = I2S_DATA_LEN_16, \ + .fifo_threshold = 8, \ +} +#endif +#endif + +#if defined(BSP_USING_DMA0_CH0) +#ifndef DMA0_CH0_CONFIG +#define DMA0_CH0_CONFIG \ +{ \ + .id = 0, \ + .ch = 0,\ + .direction = DMA_MEMORY_TO_MEMORY,\ + .transfer_mode = DMA_LLI_ONCE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_NONE, \ + .src_width = DMA_TRANSFER_WIDTH_32BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_32BIT , \ +} +#endif +#endif + +#if defined(BSP_USING_DMA0_CH1) +#ifndef DMA0_CH1_CONFIG +#define DMA0_CH1_CONFIG \ +{ \ + .id = 0, \ + .ch = 1,\ + .direction = DMA_MEMORY_TO_MEMORY, \ + .transfer_mode = DMA_LLI_ONCE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_NONE, \ + .src_width = DMA_TRANSFER_WIDTH_16BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_16BIT , \ +} +#endif +#endif + +#if defined(BSP_USING_DMA0_CH2) +#ifndef DMA0_CH2_CONFIG +#define DMA0_CH2_CONFIG \ +{ \ + .id = 0, \ + .ch = 2,\ + .direction = DMA_MEMORY_TO_PERIPH, \ + .transfer_mode = DMA_LLI_ONCE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_UART1_TX, \ + .src_width = DMA_TRANSFER_WIDTH_8BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_8BIT , \ +} +#endif +#endif + + +#if defined(BSP_USING_DMA0_CH3) +#ifndef DMA0_CH3_CONFIG +#define DMA0_CH3_CONFIG \ +{ \ + .id = 0, \ + .ch = 3,\ + .direction = DMA_MEMORY_TO_PERIPH, \ + .transfer_mode = DMA_LLI_ONCE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_SPI0_TX, \ + .src_width = DMA_TRANSFER_WIDTH_8BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_8BIT , \ +} +#endif +#endif + +#if defined(BSP_USING_DMA0_CH4) +#ifndef DMA0_CH4_CONFIG +#define DMA0_CH4_CONFIG \ +{ \ + .id = 0, \ + .ch = 4,\ + .direction = DMA_PERIPH_TO_MEMORY, \ + .transfer_mode = DMA_LLI_ONCE_MODE, \ + .src_req = DMA_REQUEST_SPI0_RX, \ + .dst_req = DMA_REQUEST_NONE, \ + .src_width = DMA_TRANSFER_WIDTH_8BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_8BIT , \ +} +#endif +#endif + + +#if defined(BSP_USING_DMA0_CH5) +#ifndef DMA0_CH5_CONFIG +#define DMA0_CH5_CONFIG \ +{ \ + .id = 0, \ + .ch = 5,\ + .direction = DMA_MEMORY_TO_PERIPH, \ + .transfer_mode = DMA_LLI_CYCLE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_I2S_TX, \ + .src_width = DMA_TRANSFER_WIDTH_16BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_16BIT , \ +} +#endif +#endif + +#if defined(BSP_USING_DMA0_CH6) +#ifndef DMA0_CH6_CONFIG +#define DMA0_CH6_CONFIG \ +{ \ + .id = 0, \ + .ch = 6,\ + .direction = DMA_MEMORY_TO_PERIPH, \ + .transfer_mode = DMA_LLI_CYCLE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_I2S_TX, \ + .src_width = DMA_TRANSFER_WIDTH_16BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_16BIT , \ +} +#endif +#endif + + +#if defined(BSP_USING_DMA0_CH7) +#ifndef DMA0_CH7_CONFIG +#define DMA0_CH7_CONFIG \ +{ \ + .id = 0, \ + .ch = 0,\ + .direction = DMA_MEMORY_TO_MEMORY,\ + .transfer_mode = DMA_LLI_ONCE_MODE, \ + .src_req = DMA_REQUEST_NONE, \ + .dst_req = DMA_REQUEST_NONE, \ + .src_width = DMA_TRANSFER_WIDTH_32BIT , \ + .dst_width = DMA_TRANSFER_WIDTH_32BIT , \ +} +#endif +#endif + + + +#if defined(BSP_USING_I2C0) +#ifndef I2C0_CONFIG +#define I2C0_CONFIG \ +{ \ + .id = 0, \ + .mode = I2C_HW_MODE,\ + .phase = 15, \ +} +#endif +#endif + +#endif diff --git a/bsp/board/bl706_iot/pinmux_config.h b/bsp/board/bl706_iot/pinmux_config.h new file mode 100644 index 00000000..990d562c --- /dev/null +++ b/bsp/board/bl706_iot/pinmux_config.h @@ -0,0 +1,180 @@ +/** + * @file pinmux_config.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef _PINMUX_CONFIG_H +#define _PINMUX_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// GPIO0 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio0 function +#define CONFIG_GPIO0_FUNC GPIO_FUN_UNUSED + +// GPIO1 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_CTS//GPIO_FUN_UART1_CTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio1 function +#define CONFIG_GPIO1_FUNC GPIO_FUN_UNUSED + +// GPIO2 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_TX//GPIO_FUN_UART1_TX//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio2 function +#define CONFIG_GPIO2_FUNC GPIO_FUN_UNUSED + +// GPIO3 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_RX//GPIO_FUN_UART1_RX//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio3 function +#define CONFIG_GPIO3_FUNC GPIO_FUN_UNUSED + +// GPIO4 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio4 function +#define CONFIG_GPIO4_FUNC GPIO_FUN_UNUSED + +// GPIO5 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_CTS//GPIO_FUN_UART1_CTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio5 function +#define CONFIG_GPIO5_FUNC GPIO_FUN_UNUSED + +// GPIO6 <2> [GPIO_FUN_UNUSED//GPIO_FUN_CLK_OUT//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_UART0_TX//GPIO_FUN_UART1_TX//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio6 function +#define CONFIG_GPIO6_FUNC GPIO_FUN_UNUSED + +// GPIO7 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RX//GPIO_FUN_UART1_RX//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio7 function +#define CONFIG_GPIO7_FUNC GPIO_FUN_USB + +// GPIO8 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio8 function +#define CONFIG_GPIO8_FUNC GPIO_FUN_USB + +// GPIO9 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio9 function +#define CONFIG_GPIO9_FUNC GPIO_FUN_UNUSED + +// GPIO10 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio10 function +#define CONFIG_GPIO10_FUNC GPIO_FUN_UNUSED + +// GPIO11 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio11 function +#define CONFIG_GPIO11_FUNC GPIO_FUN_UNUSED + +// GPIO12 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio12 function +#define CONFIG_GPIO12_FUNC GPIO_FUN_UNUSED + +// GPIO13 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio13 function +#define CONFIG_GPIO13_FUNC GPIO_FUN_UNUSED + +// GPIO14 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio14 function +#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX + +// GPIO15 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio15 function +#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX + +// GPIO16 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio16 function +#define CONFIG_GPIO16_FUNC GPIO_FUN_UNUSED + +// GPIO17 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio17 function +#define CONFIG_GPIO17_FUNC GPIO_FUN_UNUSED + +// GPIO18 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio18 function +#define CONFIG_GPIO18_FUNC GPIO_FUN_UART1_TX + +// GPIO19 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio19 function +#define CONFIG_GPIO19_FUNC GPIO_FUN_UART1_RX + +// GPIO20 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio20 function +#define CONFIG_GPIO20_FUNC GPIO_FUN_UNUSED + +// GPIO21 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio21 function +#define CONFIG_GPIO21_FUNC GPIO_FUN_UNUSED + +// GPIO22 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio22 function +#define CONFIG_GPIO22_FUNC GPIO_FUN_PWM + +// GPIO23 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio23 function +#define CONFIG_GPIO23_FUNC GPIO_FUN_UNUSED + +// GPIO24 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio24 function +#define CONFIG_GPIO24_FUNC GPIO_FUN_UNUSED + +// GPIO25 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio25 function +#define CONFIG_GPIO25_FUNC GPIO_FUN_UNUSED + +// GPIO26 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio26 function +#define CONFIG_GPIO26_FUNC GPIO_FUN_UNUSED + +// GPIO27 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio27 function +#define CONFIG_GPIO27_FUNC GPIO_FUN_UNUSED + +// GPIO28 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio28 function +#define CONFIG_GPIO28_FUNC GPIO_FUN_UNUSED + +// GPIO29 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio29 function +#define CONFIG_GPIO29_FUNC GPIO_FUN_UNUSED + +// GPIO30 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio30 function +#define CONFIG_GPIO30_FUNC GPIO_FUN_UNUSED + +// GPIO31 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio31 function +#define CONFIG_GPIO31_FUNC GPIO_FUN_UNUSED + +// GPIO32 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio32 function +#define CONFIG_GPIO32_FUNC GPIO_FUN_UNUSED + +// GPIO33 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio33 function +#define CONFIG_GPIO33_FUNC GPIO_FUN_UNUSED + +// GPIO34 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio34 function +#define CONFIG_GPIO34_FUNC GPIO_FUN_UNUSED + +// GPIO35 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio35 function +#define CONFIG_GPIO35_FUNC GPIO_FUN_UNUSED + +// GPIO36 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio36 function +#define CONFIG_GPIO36_FUNC GPIO_FUN_UNUSED + +// GPIO37 <2> [GPIO_FUN_UNUSED//GPIO_FUN_I2S//GPIO_FUN_SPI//GPIO_FUN_I2C//GPIO_FUN_PWM//GPIO_FUN_CAM//GPIO_FUN_USB//GPIO_FUN_UART0_RTS//GPIO_FUN_UART1_RTS//GPIO_FUN_ETHER_MAC//GPIO_FUN_QDEC] +// config gpio37 function +#define CONFIG_GPIO37_FUNC GPIO_FUN_UNUSED + +#endif diff --git a/bsp/bsp_common/audio/audio_core.c b/bsp/bsp_common/audio/audio_core.c new file mode 100644 index 00000000..27ac7266 --- /dev/null +++ b/bsp/bsp_common/audio/audio_core.c @@ -0,0 +1,78 @@ +/** + * @file audio_proto.c + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "drv_device.h" +#include "audio_core.h" +#include "hal_dma.h" + +volatile int (*buffer_ready_callback_func)(char bufIndex); +volatile audio_core_t * audio_core_cfg_store; +volatile int bufferIndex = 0; + +void audio_core_transfer_done(struct device *dev, void *args, uint32_t size, uint32_t state){ + + if(!state){ + if(buffer_ready_callback_func){ + buffer_ready_callback_func(bufferIndex); + } + + if(bufferIndex){ + bufferIndex = 0; + device_write(audio_core_cfg_store->audio_device,0,audio_core_cfg_store->buff1,audio_core_cfg->buff_size); + }else{ + bufferIndex = 1; + device_write(audio_core_cfg_store->audio_device,0,audio_core_cfg_store->buff2,audio_core_cfg->buff_size); + } + } +} + +int audio_core_init(audio_core_t * audio_core_cfg){ + + if(audio_core_cfg->audio_dma == NULL || + audio_core_cfg->buff_size == NULL|| + audio_core_cfg->buff1 == NULL || + audio_core_cfg->buff2 == NULL){ + return -1; + } + + + memset(audio_core_cfg->buff1,0,audio_core_cfg->buff_size); + memset(audio_core_cfg->buff2,0,audio_core_cfg->buff_size); + + device_control(audio_core_cfg->audio_device,DEVICE_CTRL_ATTACH_TX_DMA,(void*)audio_core_cfg->audio_dma); + + device_set_callback(audio_core_cfg->audio_dma, audio_core_transfer_done); + + buffer_ready_callback_func = audio_core_cfg->buffer_ready_callback; + audio_core_cfg_store = audio_core_cfg; + + device_control(audio_core_cfg->audio_dma, DEVICE_CTRL_SET_INT, NULL); + +} + +int audio_core_start(void){ + device_write(audio_core_cfg_store->audio_device,0,audio_core_cfg_store->buff1,audio_core_cfg_store->buff_size); +} + +int audio_core_stop(void){ + dma_channel_stop(audio_core_cfg_store->audio_dma); +} + diff --git a/bsp/bsp_common/audio/audio_core.h b/bsp/bsp_common/audio/audio_core.h new file mode 100644 index 00000000..997e02a2 --- /dev/null +++ b/bsp/bsp_common/audio/audio_core.h @@ -0,0 +1,45 @@ +/** + * @file audio_core.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#ifndef __AUDIO_PROTO__ +#define __AUDIO_PROTO__ + +#include "misc.h" + +typedef struct{ + + uint8_t *buff1; + uint8_t *buff2; + uint32_t buff_size; + + struct device * audio_dma; + struct device * audio_device; + + int (*buffer_ready_callback)(char bufIndex); + +}audio_core_t; + +int audio_core_init(audio_core_t * audio_core_cfg); +int audio_core_start(void); +int audio_core_stop(void); +#endif \ No newline at end of file diff --git a/bsp/bsp_common/audio/bl_audio_structure.md b/bsp/bsp_common/audio/bl_audio_structure.md new file mode 100644 index 00000000..86497707 --- /dev/null +++ b/bsp/bsp_common/audio/bl_audio_structure.md @@ -0,0 +1,42 @@ +# bl音频协议框架 + +## 核心音频播放组件 + +如下图所示 + +[![c1Q8qe.jpg](https://z3.ax1x.com/2021/04/06/c1Q8qe.jpg)](https://imgtu.com/i/c1Q8qe) + + +整体框架分为两个部分,一个部分是由核心组件提供的双缓存结构,另一个部分是用户的实际使用代码。 + +**核心组件需要两个构件** + +1 双缓存,用户需要在自己的应用中开辟两块长度相同的内存块,将其指针传入核心组件。 + +2 dma组件,用户需要将配置好了的 dma device 指针传入核心组件,此dma的作用是将设备的数据通过P->M写回Buffer 或者 将数据通过M->P写入Device。搬运的request需要在device的配置参数中给定。 + + + +**核心组件后的运行逻辑** + +当用户打开音频构架的核心组件代码后 +组件会首先初始化Buffer1和Buffer2的内容,初始化为0,并且立即打开DMA搬运。 +当DMA搬运结束,会触发Buffer_Ready中断回调。 + +在录音的应用下 + +打开核心组件后,DMA会根据Device的DMA Request,把录音数据搬运到Buffer1和Buffer2,用户需要做的是在Buffer_Ready中断回调发生后,将对应Buffer取出来,保存、或者通过下文提到的协议发送。 + +在播放音频的应用下 + +打开核心组件后,DMA会立即播放Buffer1和Buffer2的数据,但是因为最开始的时候已经初始化Buffer数据为0,所以不会有任何声音播放。用户需要在Buffer_Ready中断回调发生后,以合适的方式,将需要播放的PCM音频数据更新到Buffer中(此过程必须在下一个Buffer消耗完成之前,否则会产生问题),如果在buffer2的数据消耗结束之前还没能完成buffer1的数据更新,那么需要考虑如何加快数据更新速度,或者增加Buffer的size以提供更多操作时间。 + + +## 2 通讯协议约定 + +当用户代码部分需要与外界进行通讯时,需要统一规范一个交互的协议,这样不同的音频应用可以兼容相同的audio_cube。 + +1 传输音频文件流(目前仅支持wav格式播放) +2 每次传输的字节数,使用规范的约定字节数 +3 是否支持校验 +4 播放/暂停 停止 音量调整的固定协议 \ No newline at end of file diff --git a/bsp/bsp_common/audio/wav_info_parser.c b/bsp/bsp_common/audio/wav_info_parser.c new file mode 100644 index 00000000..8cf00117 --- /dev/null +++ b/bsp/bsp_common/audio/wav_info_parser.c @@ -0,0 +1,76 @@ +/** + * @file wav_info_parser.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "wav_info_parser.h" + +/* get File pointer from top of file*/ +int wav_data_parser(uint8_t buff[1024], wav_information_t *wav_information) +{ + uint32_t offset=0; + uint32_t chunk_id; + + /* RIFF WAVE Chunk */ + chunk_id = ((chunk_riff_t *)&buff[offset])->chunk_id; + if(chunk_id == 0x46464952) + { + wav_information->chunk_riff_offset = offset; + wav_information->chunk_riff = *((chunk_riff_t *)&buff[offset]); + offset += sizeof(chunk_riff_t); + }else{ + wav_information->chunk_riff_offset = -1; + return 1; + } + /* Format Chunk */ + chunk_id = ((chunk_format_t *)&buff[offset])->chunk_id; + if(chunk_id == 0x20746D66 && offset<1000) /* fmt */ + { + wav_information->chunk_format_offset = offset; + wav_information->chunk_format = *((chunk_format_t *)&buff[offset]); + offset += ((chunk_format_t*)&buff[offset])->chunk_size + 8; + }else + { + wav_information->chunk_format_offset = -1; + return 1; + } + /* Fact/list Chunk */ + chunk_id = ((chunk_fact_t *)&buff[offset])->chunk_id; + if((chunk_id == 0X74636166 || chunk_id == 0X5453494C) && offset<1000) /*fact or list*/ + { + wav_information->chunk_fact_offset = offset; + wav_information->chunk_fact = *((chunk_fact_t *)&buff[offset]); + offset += ((chunk_fact_t*)&buff[offset])->chunk_size + 8; + }else{ + wav_information->chunk_fact_offset = -1; + } + /* Data Chunk */ + chunk_id = ((chunk_data_t *)&buff[offset])->chunk_id; + if(chunk_id == 0X61746164 && offset<1000 ) + { + wav_information->chunk_data_offset = offset; + wav_information->chunk_data = *((chunk_data_t *)&buff[offset]); + }else{ + wav_information->chunk_data_offset = -1; + return 1; + } + return 0; +} \ No newline at end of file diff --git a/bsp/bsp_common/audio/wav_info_parser.h b/bsp/bsp_common/audio/wav_info_parser.h new file mode 100644 index 00000000..608401c5 --- /dev/null +++ b/bsp/bsp_common/audio/wav_info_parser.h @@ -0,0 +1,89 @@ +/** + * @file wav_info_parser.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#ifndef __WAV_INFO_PARSER__ +#define __WAV_INFO_PARSER__ + +#include "bl_common.h" + +/* RIFF (RIFF WAVE Chunk) */ +typedef struct __attribute__((packed)) +{ + uint32_t chunk_id; + uint32_t chunk_size; + uint32_t format; +}chunk_riff_t ; + +/* fmt (Format Chunk)*/ +typedef struct __attribute__((packed)) +{ + uint32_t chunk_id; + uint32_t chunk_size ; + uint16_t audio_format; + uint16_t num_of_channels; + uint32_t sample_rate; + uint32_t byte_rate; + uint16_t block_align; + uint16_t bits_per_sample; +}chunk_format_t; + +//fact (Fact Chunk) +typedef struct __attribute__((packed)) +{ + uint32_t chunk_id; + uint32_t chunk_size ; + uint32_t data_fact_size; +}chunk_fact_t; + +//data (Data Chunk) +typedef struct __attribute__((packed)) +{ + uint32_t chunk_id; + uint32_t chunk_size ; +}chunk_data_t; + +// +typedef enum +{ + CHUNK_RIFF, + CHUNK_FORMAT, + CHUNK_FACT, + CHUNK_DATA, +}mav_chunk_t; + +//.wav information +typedef struct +{ + int chunk_riff_offset; + chunk_riff_t chunk_riff; + int chunk_format_offset; + chunk_format_t chunk_format; + int chunk_fact_offset; + chunk_fact_t chunk_fact; + int chunk_data_offset; + chunk_data_t chunk_data; +}wav_information_t; + +int wav_data_parser(uint8_t buff[1024], wav_information_t *wav_information); + +#endif \ No newline at end of file diff --git a/bsp/bsp_common/es8388/bsp_es8388.c b/bsp/bsp_common/es8388/bsp_es8388.c new file mode 100644 index 00000000..51f6fc55 --- /dev/null +++ b/bsp/bsp_common/es8388/bsp_es8388.c @@ -0,0 +1,482 @@ +/** + * @file bsp_es8388.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "bflb_platform.h" +#include "hal_i2c.h" +#include "bsp_es8388.h" + +/** @addtogroup BL702_STD_PERIPH_DRIVER + * @{ + */ + +/** @addtogroup ES8388 + * @{ + */ + +/** @defgroup ES8388_Private_Macros + * @{ + */ + +#define ES8388_I2C_SLAVE_ADDR 0x10 + +/*@} end of group ES8388_Private_Macros */ + +/** @defgroup ES8388_Private_Types + * @{ + */ + +/*@} end of group ES8388_Private_Types */ + +/** @defgroup ES8388_Private_Variables + * @{ + */ + +/*@} end of group ES8388_Private_Variables */ + +/** @defgroup ES8388_Global_Variables + * @{ + */ + +/*@} end of group ES8388_Global_Variables */ + +/** @defgroup ES8388_Private_Fun_Declaration + * @{ + */ + +/*@} end of group ES8388_Private_Fun_Declaration */ + +/** @defgroup ES8388_Private_Functions_User_Define + * @{ + */ + +/*@} end of group ES8388_Private_Functions_User_Define */ + +/** @defgroup ES8388_Private_Functions + * @{ + */ + +struct device *es8388_i2c = NULL; + +/****************************************************************************//** + * @brief ES8388 write register + * + * @param addr: Register address + * @param data: data + * + * @return None + * +*******************************************************************************/ +BL_Err_Type ES8388_Write_Reg(uint8_t addr, uint8_t data) +{ + i2c_msg_t msg1; + + msg1.slaveaddr = ES8388_I2C_SLAVE_ADDR, + msg1.len = 1, + msg1.buf = &data; + msg1.flags = SUB_ADDR_1BYTE | I2C_WR; + msg1.subaddr = addr; + bflb_platform_delay_ms(10); + return i2c_transfer(es8388_i2c, &msg1, 1); + +} + +/****************************************************************************//** + * @brief ES8388_Read_Reg + * + * @param addr: Register address + * @param rdata: data + * + * @return None + * +*******************************************************************************/ +BL_Err_Type ES8388_Read_Reg(uint8_t addr, uint8_t* rdata) +{ + i2c_msg_t msg1; + msg1.len = 1, + msg1.buf = rdata; + msg1.subaddr = addr; + msg1.slaveaddr = ES8388_I2C_SLAVE_ADDR, + msg1.flags = SUB_ADDR_1BYTE | I2C_RD; + return i2c_transfer(es8388_i2c, &msg1, 1); + +} + +/****************************************************************************//** + * @brief ES8388 codec mode + * + * @param cfg: None + * + * @return None + * +*******************************************************************************/ +void ES8388_Codec_Mode(ES8388_Cfg_Type * cfg){ + uint8_t tempVal = 0; + + ES8388_Write_Reg(0x01,0x58);//power down whole chip analog + ES8388_Write_Reg(0x01,0x50);//power up whole chip analog + + ES8388_Write_Reg(0x02,0xf3);//power down ADC/DAC and reset ADC/DAC state machine + ES8388_Write_Reg(0x02,0xf0);//power on ADC/DAC + + ES8388_Write_Reg(0x2B,0x80);//set internal ADC and DAC use sanme LRCK clock + + ES8388_Write_Reg(0x00,0x36);//ADC clock is same as DAC . DACMCLK is the chip master clock source + + if(cfg->role == ES8388_MASTER){ + ES8388_Write_Reg(0x08,0x80); + }else{ + ES8388_Write_Reg(0x08,0x00); + } + + ES8388_Write_Reg(0x04,0x00);//power up dac + + ES8388_Write_Reg(0x05,0x00);//stop lowpower mode + ES8388_Write_Reg(0x06,0xc3);//stop lowpower mode + + if(cfg->mic_input_mode == ES8388_SINGLE_ENDED_MIC){ + /* + * default set LINPUT1 and RINPUT1 as single ended mic input + * if user want to use LINPUT2 and RINPUT2 as input + * please set 0x0a register as 0x50 + */ + ES8388_Write_Reg(0x0A,0x00);//select lin1 and rin1 as micphone input + }else{ + /* + * defualt select LIN1 and RIN1 as Mic diff input + * if user want to use LIN2 and RIN2 as input + * please set 0x0b register as 0x82 + */ + ES8388_Write_Reg(0x0A,0xf0);//set micphone input as difference mode + ES8388_Write_Reg(0x0B,0x02);//set LIN1 and RIN1 as micphone different input + } + + tempVal = cfg->data_width; + tempVal <<= 2; + tempVal |= cfg->i2s_frame; + + ES8388_Write_Reg(0x0C,tempVal); //ADC I2S Format sel as i2s_frame , data len as data_width + + tempVal = cfg->data_width; + tempVal <<= 2; + tempVal |= cfg->i2s_frame; + tempVal <<= 1; + + ES8388_Write_Reg(0x17,tempVal); //DAC I2S Format sel as i2s_frame , data len as data_width + + /* when work in master mode , BCLK is devided form MCLK + * default divider is 256 , see datasheet reigster 13 + */ + if(cfg->role == ES8388_MASTER){ + ES8388_Write_Reg(0x0d,0x02);//ADCLRCK = MCLK/256 + ES8388_Write_Reg(0x18,0x02);//DACLRCK = MCLK/256 + } + + /*set ADC/DAC default volume as 0 db */ + ES8388_Write_Reg(0x10,0x00);//LADC volume as 0db + ES8388_Write_Reg(0x11,0x00);//RADC volume as 0db + ES8388_Write_Reg(0x1A,0x00);//LDAC volume as 0db + ES8388_Write_Reg(0x1B,0x00);//RDAC volume as 0db + + tempVal = cfg->mic_pga; + tempVal <<=4 ; + tempVal |= cfg->mic_pga; + + ES8388_Write_Reg(0x09,tempVal);//set ADC PGA as mic pga + + /*ADC ALC default Setting */ + ES8388_Write_Reg(0x12,0xE2); + ES8388_Write_Reg(0x13,0xC0); + ES8388_Write_Reg(0x14,0x12); + ES8388_Write_Reg(0x15,0x06); + ES8388_Write_Reg(0x16,0xC3); + + /*Mixer setting for LDAC to LOUT and RDAC TO ROUT + * default close mixer + */ + ES8388_Write_Reg(0x27,0xB8); + ES8388_Write_Reg(0x2A,0xB8); + + ES8388_Write_Reg(0x02,0x00);//startup FSM and DLL + bflb_platform_delay_ms(500); + + /* set LOUT1 ROUT1 LOUT2 ROUT2 volume */ + ES8388_Write_Reg(0x2e,0x1E); + ES8388_Write_Reg(0x2f,0x1E); + ES8388_Write_Reg(0x30,0x1E); + ES8388_Write_Reg(0x31,0x1E); + + //ES8388_Write_Reg(0x04,0x3C);//enable LOUT & ROUT + ES8388_Write_Reg(0x04,0x24); + ES8388_Write_Reg(0x26,0x01); + ES8388_Write_Reg(0x03,0x09);//power up ADC Enable LIN &RIN. + +} + + +/****************************************************************************//** + * @brief ES8388 recording mode + * + * @param cfg: None + * + * @return None + * +*******************************************************************************/ +void ES8388_Recording_Mode(ES8388_Cfg_Type * cfg){ + uint8_t tempVal = 0; + MSG("RECORDING\r\n"); + ES8388_Write_Reg(0x01,0x58);//power down whole chip analog + ES8388_Write_Reg(0x01,0x50);//power up whole chip analog + + ES8388_Write_Reg(0x02,0xf3);//power down ADC/DAC and reset ADC/DAC state machine + ES8388_Write_Reg(0x02,0xf0);//power on ADC/DAC + ES8388_Write_Reg(0x2B,0x80);//set internal ADC and DAC use the same LRCK clock + ES8388_Write_Reg(0x00,0x16);//ADC clock is same as DAC. use ADC MCLK as internal MCLK + + if(cfg->role == ES8388_MASTER){ + ES8388_Write_Reg(0x08,0x80); + }else{ + ES8388_Write_Reg(0x08,0x00); + } + + ES8388_Write_Reg(0x04,0xc0); + ES8388_Write_Reg(0x05,0x00); + ES8388_Write_Reg(0x06,0xc3); + + if(cfg->mic_input_mode == ES8388_SINGLE_ENDED_MIC){ + /* + * default set LINPUT1 and RINPUT1 as single ended mic input + * if user want to use LINPUT2 and RINPUT2 as input + * please set 0x0a register as 0x50 + */ + //ES8388_Write_Reg(0x0A,0x00);//select lin1 and rin1 as micphone input + ES8388_Write_Reg(0x0A,0xf8); + ES8388_Write_Reg(0x0B,0x88); //analog mono mix to left ADC + //ES8388_Write_Reg(0x0B,0x90); //analog mono mix to right ADC + }else{ + /* + * defualt select LIN1 and RIN1 as Mic diff input + * if user want to use LIN2 and RIN2 as input + * please set 0x0b register as 0x82 + */ + //ES8388_Write_Reg(0x0A,0xf0);//set micphone input as difference mode + //ES8388_Write_Reg(0x0B,0x02);//set LIN1 and RIN1 as micphone different input + ES8388_Write_Reg(0x0A,0xf8); // Fixed stereo problems + ES8388_Write_Reg(0x0B,0x82); // stereo + } + + tempVal = cfg->data_width; + tempVal <<= 2; + tempVal |= cfg->i2s_frame; + + ES8388_Write_Reg(0x0C,tempVal); //ADC I2S Format sel as i2s_frame , data len as data_width + + ES8388_Write_Reg(0x0d,0x02);//ADC LRCK = MCLK/256 + + ES8388_Write_Reg(0x10,0x00);//ADC VOLUME = 0 DB + ES8388_Write_Reg(0x11,0x00);//set ADC VOLUME as 0 DB + + tempVal = cfg->mic_pga; + tempVal <<= 4; + tempVal |= cfg->mic_pga; + + ES8388_Write_Reg(0x09,tempVal);//MIC PGA SEL + + ES8388_Write_Reg(0x12,0xe2);//MIC ALC SETTING + + ES8388_Write_Reg(0x13,0xc0); + ES8388_Write_Reg(0x14,0x12); + ES8388_Write_Reg(0x15,0x06); + ES8388_Write_Reg(0x16,0xc3); + + ES8388_Write_Reg(0x02,0x55); //startup FSM and DLL + ES8388_Write_Reg(0x03,0x09); //power up adc , enable LIN and RIN +} + + +/****************************************************************************//** + * @brief ES8388 Playback mode + * + * @param cfg: None + * + * @return None + * +*******************************************************************************/ +void ES8388_Playback_Mode(ES8388_Cfg_Type * cfg){ + uint8_t tempVal = 0; + + ES8388_Write_Reg(0x00,0x80); //Reset control port register to default + ES8388_Write_Reg(0x00,0x06); //Close reset + bflb_platform_delay_ms(10); + ES8388_Write_Reg(0x02,0xF3); //Stop STM, DLL and digital block + + if(cfg->role == ES8388_MASTER){ + ES8388_Write_Reg(0x08,0x80); + }else{ + ES8388_Write_Reg(0x08,0x00); + } + + ES8388_Write_Reg(0x2B,0x80); //Set ADC and DAC have the same LRCK + ES8388_Write_Reg(0x00,0x05); //Start up reference + ES8388_Write_Reg(0x01,0x40); //Start up reference + bflb_platform_delay_ms(30); + ES8388_Write_Reg(0x03,0x00); //Power on ADC and LIN/RIN input + ES8388_Write_Reg(0x04,0x3F); //Power on DAC and LOUT/ROUT input + + + /* Set ADC */ + ES8388_Write_Reg(0x09,0x77); //MicBoost PGA = +21dB + ES8388_Write_Reg(0x0A,0xF0); //Differential input + ES8388_Write_Reg(0x0B,0x02); //Select LIN1 and RIN1 as differential input pairs + + tempVal = cfg->data_width; + tempVal <<= 2; + tempVal |= cfg->i2s_frame; + + ES8388_Write_Reg(0x0C,tempVal); //ADC I2S Format sel as i2s_frame , data len as data_width + + ES8388_Write_Reg(0x0D,0x04); //MCLK / LRCK = 512 + ES8388_Write_Reg(0x10,0x00); //LADC volume = 0dB + ES8388_Write_Reg(0x11,0x00); //RADC volume = 0dB + ES8388_Write_Reg(0x12,0xE2); //ALC enable, PGA Max.Gain = 23.5dB, Min.Gain = 0dB + ES8388_Write_Reg(0x13,0xC0); //ALC target = -4.5dB, ALC hold time = 0 ms + ES8388_Write_Reg(0x14,0x12); //Decay time = 820us, attack time = 416us + ES8388_Write_Reg(0x15,0x06); //ALC mode + ES8388_Write_Reg(0x16,0xC3); //Nose gate =-40.5dB, NGG = 0x01(mute ADC) + + tempVal = cfg->data_width; + tempVal <<= 2; + tempVal |= cfg->i2s_frame; + tempVal <<= 1; + + ES8388_Write_Reg(0x18,0x04); //MCLK / LRCK = 512 + ES8388_Write_Reg(0x1A,0x00); //LDAC volume = 0dB + ES8388_Write_Reg(0x1B,0x00); //RDAC volume = 0dB + ES8388_Write_Reg(0x26,0x00); //Setup mixer + ES8388_Write_Reg(0x27,0xB8); //Setup mixer + ES8388_Write_Reg(0x28,0x38); //Setup mixer + ES8388_Write_Reg(0x29,0x38); //Setup mixer + ES8388_Write_Reg(0x2A,0xB8); //Setup mixer + ES8388_Write_Reg(0x2E,0x1E); //Set Lout/Rout volume:0dB + ES8388_Write_Reg(0x2F,0x1E); //Set Lout/Rout volume:0dB + ES8388_Write_Reg(0x30,0x1E); //Set Lout/Rout volume:0dB + ES8388_Write_Reg(0x31,0x1E); //Set Lout/Rout volume:0dB + ES8388_Write_Reg(0x02,0x00); //Power up DEM and STM + +} + +/****************************************************************************//** + * @brief ES8388_I2C_Init + * + * @param None + * + * @return None + * +*******************************************************************************/ +int ES8388_Set_Voice_Volume(int volume) +{ + int res; + if (volume < 0) + volume = 0; + else if (volume > 100) + volume = 100; + volume /= 3; + res = ES8388_Write_Reg(0x2e, volume); + res |= ES8388_Write_Reg(0x2f, volume); + res |= ES8388_Write_Reg(0x30, volume); + res |= ES8388_Write_Reg(0x31, volume); + return res; +} + + +/****************************************************************************//** + * @brief ES8388_I2C_Init + * + * @param None + * + * @return None + * +*******************************************************************************/ +void ES8388_I2C_Init(void) +{ + i2c_register(I2C0_INDEX, "i2c", DEVICE_OFLAG_RDWR); + es8388_i2c = device_find("i2c"); + if(es8388_i2c){ + device_open(es8388_i2c, 0); + } +} + + +/****************************************************************************//** + * @brief ES8388_Reg_Dump + * + * @param None + * + * @return None + * +*******************************************************************************/ +BL_Err_Type ES8388_Reg_Dump(void) +{ + int i; + uint8_t tmp; + + for (i = 0; i < 0X3F; i++) { + if(ES8388_Read_Reg(i,&tmp) != SUCCESS) + bflb_platform_printf("iic read err\r\n"); + bflb_platform_printf("Reg[%02x]=%02x \n", i,tmp); + } + return SUCCESS; +} + + +/*@} end of group ES8388_Private_Functions */ + +/** @defgroup ES8388_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief ES8388 Init function + * + * @param cfg: None + * + * @return None + * +*******************************************************************************/ +void ES8388_Init(ES8388_Cfg_Type * cfg){ + + ES8388_I2C_Init(); + + switch(cfg -> work_mode){ + case ES8388_CODEC_MDOE: ES8388_Codec_Mode(cfg);break; + case ES8388_RECORDING_MODE:ES8388_Recording_Mode(cfg);break; + case ES8388_PLAY_BACK_MODE:ES8388_Playback_Mode(cfg);break; + default:break; + } + +} + +/*@} end of group ES8388_Public_Functions */ + +/*@} end of group ES8388 */ + +/*@} end of group BL702_STD_PERIPH_DRIVER */ diff --git a/bsp/bsp_common/es8388/bsp_es8388.h b/bsp/bsp_common/es8388/bsp_es8388.h new file mode 100644 index 00000000..f7526d09 --- /dev/null +++ b/bsp/bsp_common/es8388/bsp_es8388.h @@ -0,0 +1,192 @@ +/** + * @file bsp_es8388.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#ifndef __ES8388_H__ +#define __ES8388_H__ + +#include "bflb_platform.h" + +/** @addtogroup BL702_STD_PERIPH_DRIVER + * @{ + */ + +/** @addtogroup ES8388 + * @{ + */ + +/** @defgroup ES8388_Public_Types + * @{ + */ + +/** + * @brief ES8388 Role Matser Or Slave + */ +typedef enum { + ES8388_MASTER, /*!< Master Mode */ + ES8388_SLAVE, /*!< Slave Mode */ +}ES8388_Role_Type; + +/** + * @brief ES8388 Work Mode + */ +typedef enum { + ES8388_CODEC_MDOE, /*!< ES8388 work at codec mode */ + ES8388_RECORDING_MODE, /*!< ES8388 work at recording mode */ + ES8388_PLAY_BACK_MODE, /*!< ES8388 work at paly back mode */ + ES8388_BY_PASS_MODE, /*!< ES8388 work at by pass mode */ +}ES8388_Work_Mode; + +/** + * @brief ES8388 Microphone input type + */ +typedef enum { + ES8388_SINGLE_ENDED_MIC, /*!< Mic Single Input Mode */ + ES8388_DIFF_ENDED_MIC, /*!< Mic Different Input Mode */ +}ES8388_MIC_Input_Type; + +/** + * @brief ES8388 Microphone pga sel type + */ +typedef enum { + ES8388_MIC_PGA_0DB, /*!< Mic PGA as 0db */ + ES8388_MIC_PGA_3DB, /*!< Mic PGA as 3db */ + ES8388_MIC_PGA_6DB, /*!< Mic PGA as 6db */ + ES8388_MIC_PGA_9DB, /*!< Mic PGA as 9db */ + ES8388_MIC_PGA_12DB, /*!< Mic PGA as 12db */ + ES8388_MIC_PGA_15DB, /*!< Mic PGA as 15db */ + ES8388_MIC_PGA_18DB, /*!< Mic PGA as 18db */ + ES8388_MIC_PGA_21DB, /*!< Mic PGA as 21db */ + ES8388_MIC_PGA_24DB, /*!< Mic PGA as 24db */ +}ES8388_MIC_Input_PGA_Type; + +/** + * @brief ES8388 I2S Frame Type + */ +typedef enum { + ES8388_STD_I2S_FRAME, /*!< Standard I2S Frame */ + ES8388_LEFT_JUSTIFY_FRAME, /*!< Left Justify Frame */ + ES8388_RIGHT_JUSTIFY_FRAME, /*!< Right Justify Frame */ + ES8388_DSP_FRAME, /*!< DSP Frame */ +}ES8388_I2S_Frame_Type; + +/** + * @brief ES8388 I2S Data Len Type + */ +typedef enum { + ES8388_DATA_LEN_24, /*!< I2S Auido Data Len 24 */ + ES8388_DATA_LEN_20, /*!< I2S Auido Data Len 20 */ + ES8388_DATA_LEN_18, /*!< I2S Auido Data Len 18 */ + ES8388_DATA_LEN_16, /*!< I2S Auido Data Len 16 */ + ES8388_DATA_LEN_32, /*!< I2S Auido Data Len 32 */ +}ES8388_I2S_Data_Width; + +/** + * @brief ES8388_Cfg_Type + */ +typedef struct { + ES8388_Work_Mode work_mode; /*!< ES8388 work mode */ + ES8388_Role_Type role; /*!< ES8388 role */ + ES8388_MIC_Input_Type mic_input_mode; /*!< ES8388 mic input mode */ + ES8388_MIC_Input_PGA_Type mic_pga; /*!< ES8388 mic PGA */ + ES8388_I2S_Frame_Type i2s_frame; /*!< ES8388 I2S frame */ + ES8388_I2S_Data_Width data_width; /*!< ES8388 I2S dataWitdh */ +}ES8388_Cfg_Type; + +/*@} end of group ES8388_Public_Types */ + +/** @defgroup ES8388_Public_Constants + * @{ + */ + +/** @defgroup ES8388_ROLE_TYPE + * @{ + */ +#define IS_ES8388_ROLE_TYPE(type) (((type) == ES8388_MASTER) || \ + ((type) == ES8388_SLAVE)) + +/** @defgroup ES8388_WORK_MODE + * @{ + */ +#define IS_ES8388_WORK_MODE(type) (((type) == ES8388_CODEC_MDOE) || \ + ((type) == ES8388_RECORDING_MODE) || \ + ((type) == ES8388_PLAY_BACK_MODE) || \ + ((type) == ES8388_BY_PASS_MODE)) + +/** @defgroup ES8388_MIC_INPUT_TYPE + * @{ + */ +#define IS_ES8388_MIC_INPUT_TYPE(type) (((type) == ES8388_SINGLE_ENDED_MIC) || \ + ((type) == ES8388_DIFF_ENDED_MIC)) + +/** @defgroup ES8388_MIC_INPUT_PGA_TYPE + * @{ + */ +#define IS_ES8388_MIC_INPUT_PGA_TYPE(type) (((type) == ES8388_MIC_PGA_0DB) || \ + ((type) == ES8388_MIC_PGA_3DB) || \ + ((type) == ES8388_MIC_PGA_6DB) || \ + ((type) == ES8388_MIC_PGA_9DB) || \ + ((type) == ES8388_MIC_PGA_12DB) || \ + ((type) == ES8388_MIC_PGA_15DB) || \ + ((type) == ES8388_MIC_PGA_18DB) || \ + ((type) == ES8388_MIC_PGA_21DB) || \ + ((type) == ES8388_MIC_PGA_24DB)) + +/** @defgroup ES8388_I2S_FRAME_TYPE + * @{ + */ +#define IS_ES8388_I2S_FRAME_TYPE(type) (((type) == ES8388_STD_I2S_FRAME) || \ + ((type) == ES8388_LEFT_JUSTIFY_FRAME) || \ + ((type) == ES8388_RIGHT_JUSTIFY_FRAME) || \ + ((type) == ES8388_DSP_FRAME)) + +/** @defgroup ES8388_I2S_DATA_WIDTH + * @{ + */ +#define IS_ES8388_I2S_DATA_WIDTH(type) (((type) == ES8388_DATA_LEN_24) || \ + ((type) == ES8388_DATA_LEN_20) || \ + ((type) == ES8388_DATA_LEN_18) || \ + ((type) == ES8388_DATA_LEN_16) || \ + ((type) == ES8388_DATA_LEN_32)) + +/*@} end of group ES8388_Public_Constants */ + +/** @defgroup ES8388_Public_Macros + * @{ + */ + +/*@} end of group ES8388_Public_Macros */ + +/** @defgroup ES8388_Public_Functions + * @{ + */ +void ES8388_Init(ES8388_Cfg_Type * cfg); +BL_Err_Type ES8388_Reg_Dump(void); +int ES8388_Set_Voice_Volume(int volume); + +/*@} end of group ES8388_Public_Functions */ + +/*@} end of group ES8388 */ + +/*@} end of group BL702_STD_PERIPH_DRIVER */ + +#endif /* __ES8388_H__ */ diff --git a/bsp/bsp_common/fatfs/fatfs_sdio_sd.c b/bsp/bsp_common/fatfs/fatfs_sdio_sd.c new file mode 100644 index 00000000..8c99e73d --- /dev/null +++ b/bsp/bsp_common/fatfs/fatfs_sdio_sd.c @@ -0,0 +1,160 @@ +/** + * @file fatfs_sdio_sd.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +/*-----------------------------------------------------------------------*/ +/* Low level disk I/O module skeleton for FatFs (C)ChaN, 2019 */ +/*-----------------------------------------------------------------------*/ +/* If a working storage control module is available, it should be */ +/* attached to the FatFs via a glue function rather than modifying it. */ +/* This is an example of glue functions to attach various exsisting */ +/* storage control modules to the FatFs module with a defined API. */ +/*-----------------------------------------------------------------------*/ + +#include "ff.h" /* Obtains integer types */ +#include "diskio.h" /* Declarations of disk functions */ +#include "bsp_sdio_sdcard.h" +#include "bflb_platform.h" + +static sd_card_t gSDCardInfo; + +int RAM_disk_status() +{ + return 0; +} + +int MMC_disk_status() +{ + return 0; +} + +int USB_disk_status() +{ + return 0; +} + +int RAM_disk_initialize() +{ + return 0; +} + +int MMC_disk_initialize() +{ + static uint8_t inited=0; + + if(inited==0){ + if(SDH_Init(SDH_DATA_BUS_WIDTH_4BITS,&gSDCardInfo)==SD_OK){ + inited=1; + return 0; + }else { + return -1; + } + } + return 0; +} + +int USB_disk_initialize() +{ + return 0; +} + +int RAM_disk_read(BYTE* buff, LBA_t sector, UINT count) +{ + return 0; +} + +int MMC_disk_read(BYTE* buff, LBA_t sector, UINT count) +{ + if(SD_OK==SDH_ReadMultiBlocks(buff,sector,gSDCardInfo.blockSize,count)){ + return 0; + }else { + return -1; + } +} + +int USB_disk_read(BYTE* buff, LBA_t sector, UINT count) +{ + return 0; +} + +int RAM_disk_write(const BYTE* buff, LBA_t sector, UINT count) +{ + return 0; +} + +int MMC_disk_write(const BYTE* buff, LBA_t sector, UINT count) +{ + if(SD_OK==SDH_WriteMultiBlocks((uint8_t *)buff,sector,gSDCardInfo.blockSize,count)){ + return 0; + }else { + return -1; + } +} + +int USB_disk_write(const BYTE* buff, LBA_t sector, UINT count) +{ + return 0; +} + +int RAM_disk_ioctl(BYTE cmd, void* buff) +{ + return 0; +} + +int MMC_disk_ioctl(BYTE cmd, void* buff) +{ + switch (cmd) + { + // Get R/W sector size (WORD) + case GET_SECTOR_SIZE : + *(WORD * )buff = gSDCardInfo.blockSize; + break; + // Get erase block size in unit of sector (DWORD) + case GET_BLOCK_SIZE : + *(DWORD * )buff = 1; + break; + + case GET_SECTOR_COUNT: + *(DWORD * )buff = gSDCardInfo.blockCount; + break; + case CTRL_SYNC : + break; + default: + break; + } + return 0; +} + +int USB_disk_ioctl(BYTE cmd, void* buff) +{ + return 0; +} + +DWORD get_fattime(void) { + return ((DWORD)(2015 - 1980) << 25) /* Year 2015 */ + | ((DWORD)1 << 21) /* Month 1 */ + | ((DWORD)1 << 16) /* Mday 1 */ + | ((DWORD)0 << 11) /* Hour 0 */ + | ((DWORD)0 << 5) /* Min 0 */ + | ((DWORD)0 >> 1); /* Sec 0 */ +} + diff --git a/bsp/bsp_common/fatfs/fatfs_spi_sd.c b/bsp/bsp_common/fatfs/fatfs_spi_sd.c new file mode 100644 index 00000000..24d20c0e --- /dev/null +++ b/bsp/bsp_common/fatfs/fatfs_spi_sd.c @@ -0,0 +1,110 @@ +/** + * @file fatfs_spi_sd.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "diskio.h" +#include "bsp_spi_sd.h" +const char * FR_Table[]= +{ + "FR_OK:成功", /* (0) Succeeded */ + "FR_DISK_ERR:底层硬件错误", /* (1) A hard error occurred in the low level disk I/O layer */ + "FR_INT_ERR:断言失败", /* (2) Assertion failed */ + "FR_NOT_READY:物理驱动没有工作", /* (3) The physical drive cannot work */ + "FR_NO_FILE:文件不存在", /* (4) Could not find the file */ + "FR_NO_PATH:路径不存在", /* (5) Could not find the path */ + "FR_INVALID_NAME:无效文件名", /* (6) The path name format is invalid */ + "FR_DENIED:由于禁止访问或者目录已满访问被拒绝", /* (7) Access denied due to prohibited access or directory full */ + "FR_EXIST:文件已经存在", /* (8) Access denied due to prohibited access */ + "FR_INVALID_OBJECT:文件或者目录对象无效", /* (9) The file/directory object is invalid */ + "FR_WRITE_PROTECTED:物理驱动被写保护", /* (10) The physical drive is write protected */ + "FR_INVALID_DRIVE:逻辑驱动号无效", /* (11) The logical drive number is invalid */ + "FR_NOT_ENABLED:卷中无工作区", /* (12) The volume has no work area */ + "FR_NO_FILESYSTEM:没有有效的FAT卷", /* (13) There is no valid FAT volume */ + "FR_MKFS_ABORTED:由于参数错误f_mkfs()被终止", /* (14) The f_mkfs() aborted due to any parameter error */ + "FR_TIMEOUT:在规定的时间内无法获得访问卷的许可", /* (15) Could not get a grant to access the volume within defined period */ + "FR_LOCKED:由于文件共享策略操作被拒绝", /* (16) The operation is rejected according to the file sharing policy */ + "FR_NOT_ENOUGH_CORE:无法分配长文件名工作区", /* (17) LFN working buffer could not be allocated */ + "FR_TOO_MANY_OPEN_FILES:当前打开的文件数大于_FS_SHARE", /* (18) Number of open files > _FS_SHARE */ + "FR_INVALID_PARAMETER:参数无效" /* (19) Given parameter is invalid */ +}; + +int sd_disk_status(void) +{ + return 0; +} +int sd_disk_initialize(void) +{ + return SD_Init(&SD_CardInfo); +} +int sd_disk_read(BYTE *buff, LBA_t sector, UINT count) +{ + return SD_ReadBlock(sector, buff, count); +} +int sd_disk_write(const BYTE *buff, LBA_t sector, UINT count) +{ + return SD_WriteBlock(sector, (BYTE *)buff, count); +} +int sd_disk_ioctl(BYTE cmd, void *buff) +{ + int result = 0; + switch (cmd) + { + case CTRL_SYNC: + result = RES_OK; + break; + case GET_SECTOR_SIZE: + *(DWORD *)buff = SD_CardInfo.CardBlockSize; + result = RES_OK; + break; + case GET_BLOCK_SIZE: + *(WORD *)buff = SD_CardInfo.CardBlockSize; + result = RES_OK; + break; + case GET_SECTOR_COUNT: + *(DWORD *)buff = SD_CardInfo.CardCapacity / SD_CardInfo.CardBlockSize; + result = RES_OK; + break; + default: + result = RES_PARERR; + break; + } + return result; +} + +DSTATUS Translate_Result_Code(int result) +{ + + // MSG("%s\r\n",FR_Table[result]); + return result; +} +FATFS_DiskioDriverTypeDef pNewDiskioDriver; + +void fatfs_sd_driver_register(void) +{ + pNewDiskioDriver.MMC_disk_status = sd_disk_status; + pNewDiskioDriver.MMC_disk_initialize = sd_disk_initialize; + pNewDiskioDriver.MMC_disk_write = sd_disk_write; + pNewDiskioDriver.MMC_disk_read = sd_disk_read; + pNewDiskioDriver.MMC_disk_ioctl = sd_disk_ioctl; + pNewDiskioDriver.Translate_Result_Code = Translate_Result_Code; + disk_driver_callback_init(&pNewDiskioDriver); +} \ No newline at end of file diff --git a/bsp/bsp_common/il9431/bsp_il9431.c b/bsp/bsp_common/il9431/bsp_il9431.c new file mode 100644 index 00000000..eccec603 --- /dev/null +++ b/bsp/bsp_common/il9431/bsp_il9431.c @@ -0,0 +1,515 @@ +/** + * @file bsp_il9431.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "bsp_il9431.h" +#include "hal_spi.h" + +/** @addtogroup BL702_Peripheral_Case + * @{ + */ + +/** @addtogroup TFT_LCD + * @{ + */ + +/** @defgroup TFT_LCD_Private_Macros + * @{ + */ + +/*@} end of group TFT_LCD_Private_Macros */ + +/** @defgroup TFT_LCD_Private_Types + * @{ + */ + +/*@} end of group TFT_LCD_Private_Types */ + +/** @defgroup TFT_LCD_Private_Variables + * @{ + */ + +/*@} end of group TFT_LCD_Private_Variables */ + +/** @defgroup TFT_LCD_Global_Variables + * @{ + */ + +/*@} end of group TFT_LCD_Global_Variables */ + +/** @defgroup TFT_LCD_Private_Fun_Declaration + * @{ + */ + +/*@} end of group TFT_LCD_Private_Fun_Declaration */ + +/** @defgroup TFT_LCD_Private_Functions + * @{ + */ +struct device* spi_lcd; + +/*@} end of group TFT_LCD_Private_Functions */ + +/** @defgroup TFT_LCD_Public_Functions + * @{ + */ +void spi_lcd_init(void) +{ + spi_register(SPI0_INDEX,"spi_lcd",DEVICE_OFLAG_RDWR); + gpio_set_mode(LCD_CS_PIN,GPIO_OUTPUT_MODE); + gpio_set_mode(LCD_DC_PIN,GPIO_OUTPUT_MODE); + gpio_write(LCD_CS_PIN,1); //CS1 + gpio_write(LCD_DC_PIN,1);//DC + spi_lcd = device_find("spi_lcd"); + if(spi_lcd) + { + device_open(spi_lcd,DEVICE_OFLAG_STREAM_TX|DEVICE_OFLAG_STREAM_RX); + + } +} +/****************************************************************************//** + * @brief LCD write command + * + * @param command: Command to write + * + * @return None + * +*******************************************************************************/ +void LCD_WR_Cmd(uint8_t command) +{ + CS1_LOW; + DC_LOW; + spi_transmit(spi_lcd,&command,1,SPI_TRANSFER_TYPE_8BIT); + CS1_HIGH; +} + + +/****************************************************************************//** + * @brief LCD write 8-bit data + * + * @param data: 8-bit data to write + * + * @return None + * +*******************************************************************************/ +void LCD_WR_Byte(uint8_t data) +{ + CS1_LOW; + DC_HIGH; + spi_transmit(spi_lcd,&data,1,SPI_TRANSFER_TYPE_8BIT); + CS1_HIGH; +} + + +/****************************************************************************//** + * @brief LCD write 16-bit data + * + * @param data: 16-bit data to write + * + * @return None + * +*******************************************************************************/ +void LCD_WR_HalfWord(uint16_t data) +{ + CS1_LOW; + DC_HIGH; + spi_transmit(spi_lcd,&data,1,SPI_TRANSFER_TYPE_16BIT); + CS1_HIGH; +} + + +/****************************************************************************//** + * @brief LCD write 32-bit data + * + * @param data: 32-bit data to write + * + * @return None + * +*******************************************************************************/ +void LCD_WR_Word(uint32_t data) +{ + CS1_LOW; + DC_HIGH; + spi_transmit(spi_lcd,&data,1,SPI_TRANSFER_TYPE_32BIT); + CS1_HIGH; +} + + +/****************************************************************************//** + * @brief LCD set address + * + * @param x1: Coordinate x start + * @param y1: Coordinate y start + * @param x2: Coordinate x end + * @param y2: Coordinate y end + * + * @return None + * +*******************************************************************************/ +void LCD_Set_Addr(uint32_t x1,uint32_t y1,uint32_t x2,uint32_t y2) +{ + LCD_WR_Cmd(0x2a); + LCD_WR_Word(x2<<24 | (x2<<8&0xff0000) | (x1<<8&0xff00) | (x1>>8&0xff)); + + LCD_WR_Cmd(0x2b); + LCD_WR_Word(y2<<24 | (y2<<8&0xff0000) | (y1<<8&0xff00) | (y1>>8&0xff)); + + LCD_WR_Cmd(0x2C); +} + + +/****************************************************************************//** + * @brief SPI LCD init + * + * @param None + * + * @return None + * +*******************************************************************************/ +void LCD_Init(void) +{ + spi_lcd_init(); + + LCD_WR_Cmd(0x11); /* Exit sleep */ + bflb_platform_delay_ms(60); + + LCD_WR_Cmd(0xcf); + LCD_WR_HalfWord(0xd900); + LCD_WR_Byte(0X30); + + LCD_WR_Cmd(0xed); + LCD_WR_Word(0x81120364); + + LCD_WR_Cmd(0xe8); + LCD_WR_HalfWord(0x1085); + LCD_WR_Byte(0x78); + + LCD_WR_Cmd(0xcb); + LCD_WR_Word(0x34002c39); + LCD_WR_Byte(0x02); + + LCD_WR_Cmd(0xf7); + LCD_WR_Byte(0x20); + + LCD_WR_Cmd(0xea); + LCD_WR_HalfWord(0x0000); + + LCD_WR_Cmd(0xc0); /* Power control */ + LCD_WR_Byte(0x23); /* VRH[5:0] */ + LCD_WR_Cmd(0xc1); /* Power control */ + LCD_WR_Byte(0x12); /* SAP[2:0];BT[3:0] */ + LCD_WR_Cmd(0xc2); + LCD_WR_Byte(0x11); + LCD_WR_Cmd(0xC5); /* VCM control */ + LCD_WR_HalfWord(0x3040); + LCD_WR_Cmd(0xc7); /* VCM control2 */ + LCD_WR_Byte(0xa9); + LCD_WR_Cmd(0x3a); + LCD_WR_Byte(0x55); + LCD_WR_Cmd(0x36); /* Memory Access Control */ + LCD_WR_Byte(0x08); + LCD_WR_Cmd(0xb1); /* Frame Rate Control */ + LCD_WR_HalfWord(0x1800); + LCD_WR_Cmd(0xb6); /* Display Function Control */ + LCD_WR_HalfWord(0xa20a); + LCD_WR_Cmd(0xf2); /* 3Gamma Function Disable */ + LCD_WR_Byte(0x00); + LCD_WR_Cmd(0xf7); + LCD_WR_Byte(0x20); + LCD_WR_Cmd(0x26); /* Gamma curve selected */ + LCD_WR_Byte(0x01); + LCD_WR_Cmd(0xe0); /* Set Gamma */ + LCD_WR_Word(0x0b23241f); + LCD_WR_Word(0xd850080f); + LCD_WR_Word(0x000a083b); + LCD_WR_HalfWord(0x0000); + LCD_WR_Byte(0x00); + LCD_WR_Cmd(0Xe1); /* Set Gamma */ + LCD_WR_Word(0x041c1b00); + LCD_WR_Word(0x272f0710); + LCD_WR_Word(0x0f150744); + LCD_WR_HalfWord(0x3f3f); + LCD_WR_Byte(0x1f); + LCD_WR_Cmd(0x29); /* Display on */ +} + + +/****************************************************************************//** + * @brief LCD clear display + * + * @param color: Color to fill + * + * @return None + * +*******************************************************************************/ +void LCD_Clear(uint16_t color) +{ + uint16_t i,j; + LCD_Set_Addr(0,0,LCD_W-1,LCD_H-1); + for(i=0;i absY){ + for(i=0;i0){ + LCD_DrawPoint(x1+i,y1+temp,color); + }else{ + LCD_DrawPoint(x1-i,y1+temp,color); + } + } + } + else{ + for(i=0;i0){ + LCD_DrawPoint(x1+temp,y1+i,color); + }else{ + LCD_DrawPoint(x1+temp,y1-i,color); + } + } + } +} + + +/****************************************************************************//** + * @brief LCD draw rectangle + * + * @param x1: Coordinate x start + * @param y1: Coordinate y start + * @param x2: Coordinate x end + * @param y2: Coordinate y end + * @param color: Color of the rectangle + * + * @return None + * +*******************************************************************************/ +void LCD_DrawRectangle(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint16_t color) +{ + LCD_DrawLine(x1,y1,x2,y1,color); + LCD_DrawLine(x2,y1,x2,y2,color); + LCD_DrawLine(x2,y2,x1,y2,color); + LCD_DrawLine(x1,y2,x1,y1,color); +} + + +/****************************************************************************//** + * @brief LCD draw circle + * + * @param x: Center coordinate x + * @param y: Center coordinate y + * @param r: Radius + * @param color: Color of the circle + * + * @return None + * +*******************************************************************************/ +void LCD_DrawCircle(uint16_t x,uint16_t y,uint16_t r,uint16_t color) +{ + int a = 0,b; + int di; + b = r; + di = 3-(r<<1); + while(a <= b) + { + LCD_DrawPoint(x-b,y-a,color); + LCD_DrawPoint(x+b,y-a,color); + LCD_DrawPoint(x-a,y+b,color); + LCD_DrawPoint(x-b,y-a,color); + LCD_DrawPoint(x-a,y-b,color); + LCD_DrawPoint(x+b,y+a,color); + LCD_DrawPoint(x+a,y-b,color); + LCD_DrawPoint(x+a,y+b,color); + LCD_DrawPoint(x-b,y+a,color); + a++; + if(di<0){ + di += 4*a+6; + }else{ + di += 10+4*(a-b); + b--; + } + LCD_DrawPoint(x+a,y+b,color); + } +} + + +/****************************************************************************//** + * @brief LCD fill the area with color + * + * @param x1: Coordinate x start + * @param y1: Coordinate y start + * @param x2: Coordinate x end + * @param y2: Coordinate y end + * @param color: Color to fill + * + * @return None + * +*******************************************************************************/ +void LCD_DrawArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint16_t color) +{ + uint16_t i,j; + LCD_Set_Addr(x1,y1,x2,y2); + for(i=y1;i<=y2;i++) + { + for(j=x1;j<=x2;j++)LCD_WR_HalfWord(color); + } +} + + +/****************************************************************************//** + * @brief LCD draw picture + * + * @param x1: Coordinate x start + * @param y1: Coordinate y start + * @param x2: Coordinate x end + * @param y2: Coordinate y end + * @param picture: Color array of the picture + * + * @return None + * +*******************************************************************************/ +void LCD_DrawPicture(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint16_t* picture) +{ + uint32_t i; + LCD_Set_Addr(x1,y1,x2,y2); + for(i=0;i>3)<<3|(g>>5)|(g>>2)<<13|(b>>3)<<8)&0xffff) +/* Calculate 32-bit or 16-bit absolute value */ +#define ABS32(value) ((value^(value>>31))-(value>>31)) +#define ABS16(value) ((value^(value>>15))-(value>>15)) + +/*@} end of group TFT_LCD_Public_Macros */ + +/** @defgroup TFT_LCD_Public_Functions + * @{ + */ + +/** + * @brief Tft_lcd Functions + */ +void LCD_WR_Cmd(uint8_t command); +void LCD_WR_Byte(uint8_t data); +void LCD_WR_HalfWord(uint16_t data); +void LCD_WR_Word(uint32_t data); +void LCD_Set_Addr(uint32_t x1,uint32_t y1,uint32_t x2,uint32_t y2); +void LCD_Init(void); +void LCD_Clear(uint16_t color); +void LCD_DrawPoint(uint16_t x,uint16_t y,uint16_t color); +void LCD_DrawLine(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint16_t color); +void LCD_DrawRectangle(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint16_t color); +void LCD_DrawCircle(uint16_t x,uint16_t y,uint16_t r,uint16_t color); +void LCD_DrawArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint16_t color); +void LCD_DrawPicture(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint16_t* picture); +// void LCD_UartDrawPicture(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,UART_ID_Type uartId); +void LCD_DrawChinese(uint16_t x,uint16_t y,uint8_t* character,uint16_t bColor,uint16_t cColor); + +/*@} end of group TFT_LCD_Public_Functions */ + +/*@} end of group TFT_LCD */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __TFT_LCD_H__ */ diff --git a/bsp/bsp_common/platform/bflb_platform.c b/bsp/bsp_common/platform/bflb_platform.c new file mode 100644 index 00000000..aaeec362 --- /dev/null +++ b/bsp/bsp_common/platform/bflb_platform.c @@ -0,0 +1,251 @@ +/** + * @file bflb_platform.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "hal_uart.h" +#include "hal_mtimer.h" +#include "drv_mmheap.h" +#include "ring_buffer.h" +#include "drv_shell.h" +extern uint32_t _HeapBase; +extern uint32_t _HeapSize; + +static uint8_t uart_dbg_disable=0; + +#ifdef SHELL_SUPPORT +Shell shell; +char shellBuffer[512]; + +void uart0_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state) +{ + uint8_t data; + + if (state == UART_EVENT_RX_FIFO) + { + data = *(uint8_t *)args; + shellHandler(&shell, data); + } +} + +void userShellWrite(char data) +{ + struct device *uart = device_find("debug_log"); + device_write(uart, 0, (uint8_t *)&data, 1); +} + +void shell_init(void) +{ + + shell.write = userShellWrite; + shellInit(&shell, shellBuffer, 512); +} +#else +void uart0_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state) +{ + if (state == UART_EVENT_RX_FIFO) + { + + } +} +#endif + +__WEAK__ void board_init(void) +{ + +} +__WEAK__ void bl_show_info(void) +{ + +} + +void bflb_platform_init(uint32_t baudrate) +{ + disable_irq(); + + board_init(); + + mtimer_init(); + + if(!uart_dbg_disable){ + uart_register(UART0_INDEX, "debug_log", DEVICE_OFLAG_RDWR); + struct device *uart = device_find("debug_log"); + + if (uart) + { + device_open(uart, DEVICE_OFLAG_STREAM_TX | DEVICE_OFLAG_INT_RX); + device_set_callback(uart, uart0_irq_callback); + device_control(uart, DEVICE_CTRL_SET_INT, (void *)(UART_RX_FIFO_IT)); + } + + bl_show_info(); + } + +#ifdef SHELL_SUPPORT + shell_init(); +#endif + + if (!mmheap_init_with_pool(&_HeapBase, (size_t)&_HeapSize)) + { + MSG("dynamic memory init success,heap size = 0x%x \r\n", &_HeapSize); + } + else + { + MSG("dynamic memory init error\r\n"); + } + + enable_irq(); +} + +void bflb_platform_printf(char *fmt, ...) +{ + struct device *uart = device_find("debug_log"); + char print_buf[128]; + va_list ap; + + if(!uart_dbg_disable){ + va_start(ap, fmt); + vsnprintf(print_buf, sizeof(print_buf) - 1, fmt, ap); + va_end(ap); + + device_write(uart, 0, (uint8_t *)print_buf, strlen(print_buf)); + } +} + +void bflb_platform_print_set(uint8_t disable) +{ + uart_dbg_disable=disable; +} +void bflb_platform_dump(uint8_t *data, uint32_t len) +{ + uint32_t i = 0; + + if(!uart_dbg_disable){ + for (i = 0; i < len; i++) + { + if (i % 16 == 0) + { + bflb_platform_printf("\r\n"); + } + bflb_platform_printf("%02x ", data[i]); + } + bflb_platform_printf("\r\n"); + } +} + +void bflb_platform_init_time() +{ + mtimer_init(); +} + +void bflb_platform_deinit_time() +{ + mtimer_deinit(); +} + +void bflb_platform_set_alarm_time(uint64_t time,void( *interruptFun )( void )) +{ + mtimer_set_alarm_time(time,interruptFun); +} + +void bflb_platform_clear_time() +{ + mtimer_clear_time(); +} + +void bflb_platform_start_time() +{ + mtimer_start(); +} + +void bflb_platform_stop_time() +{ + mtimer_stop(); +} + +uint64_t bflb_platform_get_time_ms() +{ + return mtimer_get_time_ms(); +} + +uint64_t bflb_platform_get_time_us() +{ + return mtimer_get_time_us(); +} + +void bflb_platform_delay_ms(uint32_t ms) +{ + mtimer_delay_ms(ms); +} +void bflb_platform_delay_us(uint32_t us) +{ + mtimer_delay_us(us); +} + +void bflb_print_device_list(void){ + struct device *dev; + dlist_t *node; + uint8_t device_index=0; + + MSG("Device List Print\r\n"); + + dlist_for_each(node, device_get_list_header()) + { + dev = dlist_entry(node, struct device, list); + + MSG("Index %d\r\nDevice Name = %s \r\n",device_index,dev->name); + + switch(dev->type){ + + case DEVICE_CLASS_GPIO: + MSG("Device Type = %s \r\n","GPIO");break; + case DEVICE_CLASS_UART: + MSG("Device Type = %s \r\n","UART");break; + case DEVICE_CLASS_SPI: + MSG("Device Type = %s \r\n","SPI");break; + case DEVICE_CLASS_I2C: + MSG("Device Type = %s \r\n","I2C");break; + case DEVICE_CLASS_ADC: + MSG("Device Type = %s \r\n","ADC");break; + case DEVICE_CLASS_DMA: + MSG("Device Type = %s \r\n","DMA");break; + case DEVICE_CLASS_TIMER: + MSG("Device Type = %s \r\n","TIMER");break; + case DEVICE_CLASS_PWM: + MSG("Device Type = %s \r\n","PWM");break; + case DEVICE_CLASS_SDIO: + MSG("Device Type = %s \r\n","SDIO");break; + case DEVICE_CLASS_USB: + MSG("Device Type = %s \r\n","USB");break; + case DEVICE_CLASS_I2S: + MSG("Device Type = %s \r\n","I2S");break; + case DEVICE_CLASS_CAMERA: + MSG("Device Type = %s \r\n","CAMERA");break; + case DEVICE_CLASS_NONE: break; + default : break; + } + + MSG("Device Handle = 0x%x \r\n",dev); + MSG("---------------------\r\n",dev); + + device_index++; + } +} \ No newline at end of file diff --git a/bsp/bsp_common/platform/bflb_platform.h b/bsp/bsp_common/platform/bflb_platform.h new file mode 100644 index 00000000..d908d464 --- /dev/null +++ b/bsp/bsp_common/platform/bflb_platform.h @@ -0,0 +1,95 @@ +/** + * @file bflb_platform.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#ifndef _BFLB_PLATFORM_H +#define _BFLB_PLATFORM_H + +#include "misc.h" + +#define MSG(a,...) bflb_platform_printf(a,##__VA_ARGS__) +#define MSG_ERR(a,...) bflb_platform_printf(a,##__VA_ARGS__) +#define BL_CASE_FAIL {MSG(" Case Fail\r\n");while(1){bflb_platform_delay_ms(1);}} +#define BL_CASE_SUCCESS {MSG(" Case Success\r\n");while(1){bflb_platform_delay_ms(1);}} + +/* compatible with old version */ +#ifndef DBG_TAG +#define DBG_TAG "DEBUG" +#endif + +/* + * The color for terminal (foreground) + * BLACK 30 + * RED 31 + * GREEN 32 + * YELLOW 33 + * BLUE 34 + * PURPLE 35 + * CYAN 36 + * WHITE 37 + */ +#define _DBG_COLOR(n) bflb_platform_printf("\033["#n"m") +#define _DBG_LOG_HDR(lvl_name, color_n) \ + bflb_platform_printf("\033["#color_n"m["lvl_name"/"DBG_TAG"] ") +#define _DBG_LOG_X_END \ + bflb_platform_printf("\033[0m\n") + +#define dbg_log_line(lvl, color_n, fmt, ...) \ + do \ + { \ + _DBG_LOG_HDR(lvl, color_n); \ + bflb_platform_printf(fmt, ##__VA_ARGS__); \ + _DBG_LOG_X_END; \ + } \ + while (0) + +#define LOG_D(fmt, ...) dbg_log_line("D", 0, fmt, ##__VA_ARGS__) +#define LOG_I(fmt, ...) dbg_log_line("I", 35, fmt, ##__VA_ARGS__) +#define LOG_W(fmt, ...) dbg_log_line("W", 33, fmt, ##__VA_ARGS__) +#define LOG_E(fmt, ...) dbg_log_line("E", 31, fmt, ##__VA_ARGS__) +#define LOG_RAW(...) bflb_platform_printf(__VA_ARGS__) + +#ifdef DEBUG +void check_failed(uint8_t *file, uint32_t line); +#define CHECK_PARAM(expr) ((expr) ? (void)0 : check_failed((uint8_t *)__FILE__, __LINE__)) +#else +#define CHECK_PARAM(expr) ((void)0) +#endif /* DEBUG */ + +void bflb_platform_init(uint32_t baudrate); +void bflb_platform_printf(char *fmt,...); +void bflb_platform_dump(uint8_t *data, uint32_t len); + +void bflb_platform_init_time(void); +void bflb_platform_clear_time(void); +uint64_t bflb_platform_get_time_ms(void); +uint64_t bflb_platform_get_time_us(void); +void bflb_platform_start_time(void); +void bflb_platform_stop_time(void); +void bflb_platform_set_alarm_time(uint64_t time,void( *interruptFun )( void )); +void bflb_platform_deinit_time(void); +void bflb_platform_delay_ms(uint32_t ms); +void bflb_platform_delay_us(uint32_t us); + +void bflb_print_device_list(void); + +#endif \ No newline at end of file diff --git a/bsp/bsp_common/spi_sd/bsp_spi_sd.c b/bsp/bsp_common/spi_sd/bsp_spi_sd.c new file mode 100644 index 00000000..d5ea9c9f --- /dev/null +++ b/bsp/bsp_common/spi_sd/bsp_spi_sd.c @@ -0,0 +1,970 @@ +/** + * @file bsp_spi_sd.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "hal_spi.h" +#include "hal_gpio.h" +#include "hal_dma.h" +#include "bl702_spi.h" +#include "bsp_spi_sd.h" + +struct device* spi0; +struct device* dma_ch3; +struct device* dma_ch4; + +SD_CardInfoTypedef SD_CardInfo = {0}; + + +uint8_t SD_SPI_Init(void) +{ + spi_register(0,"spi0",DEVICE_OFLAG_RDWR); + dma_register(DMA0_CH3_INDEX, "ch3", DEVICE_OFLAG_RDWR); + dma_register(DMA0_CH4_INDEX, "ch4", DEVICE_OFLAG_RDWR); + gpio_set_mode(SPI_PIN_CS,GPIO_OUTPUT_MODE); + gpio_write(SPI_PIN_CS,1); + spi0 = device_find("spi0"); + if(spi0) + { + device_open(spi0,DEVICE_OFLAG_DMA_TX|DEVICE_OFLAG_DMA_RX); + } + + dma_ch3 = device_find("ch3"); + if (dma_ch3) + { + ((dma_device_t*)dma_ch3)->direction = DMA_MEMORY_TO_PERIPH; + ((dma_device_t*)dma_ch3)->transfer_mode = DMA_LLI_ONCE_MODE; + ((dma_device_t*)dma_ch3)->src_req = DMA_REQUEST_NONE; + ((dma_device_t*)dma_ch3)->dst_req = DMA_REQUEST_SPI0_TX; + ((dma_device_t*)dma_ch3)->src_width = DMA_TRANSFER_WIDTH_8BIT; + ((dma_device_t*)dma_ch3)->dst_width = DMA_TRANSFER_WIDTH_8BIT; + device_open(dma_ch3, 0); + device_set_callback(dma_ch3, NULL); + device_control(dma_ch3, DEVICE_CTRL_SET_INT, NULL); + } + + dma_ch4 = device_find("ch4"); + if (dma_ch4) + { + ((dma_device_t*)dma_ch4)->direction = DMA_PERIPH_TO_MEMORY; + ((dma_device_t*)dma_ch4)->transfer_mode = DMA_LLI_ONCE_MODE; + ((dma_device_t*)dma_ch4)->src_req = DMA_REQUEST_SPI0_RX; + ((dma_device_t*)dma_ch4)->dst_req = DMA_REQUEST_NONE; + ((dma_device_t*)dma_ch4)->src_width = DMA_TRANSFER_WIDTH_8BIT ; + ((dma_device_t*)dma_ch4)->dst_width = DMA_TRANSFER_WIDTH_8BIT ; + device_open(dma_ch4, 0); + device_set_callback(dma_ch4, NULL); + device_control(dma_ch4, DEVICE_CTRL_SET_INT, NULL); + } + + return SUCCESS; +} + +BL_Err_Type SPI_ReadWriteByte(uint8_t *txBuff, uint8_t *rxBuff, uint32_t length) +{ + static SPI_FifoCfg_Type SPI_fifoconfig={ + .txFifoThreshold = 1, + .rxFifoThreshold = 1, + .txFifoDmaEnable = ENABLE, + .rxFifoDmaEnable = ENABLE, + }; + + // DMA自动与手动无法同时使用,DmaEnable开启后,一旦进行手动发送,之后DMA发送就会卡死 + // test code: + // MSG("SPI_DMA_test 1\r\n"); + // dma_reload(dma_ch3, (uint32_t)txBuff, (uint32_t)DMA_ADDR_SPI_TDR, length); + // dma_reload(dma_ch4, (uint32_t)DMA_ADDR_SPI_RDR, (uint32_t)rxBuff, length); + // dma_channel_start(dma_ch3); + // dma_channel_start(dma_ch4); + // while (device_control(dma_ch3, DMA_CHANNEL_GET_STATUS_CMD, NULL) || device_control(dma_ch4, DMA_CHANNEL_GET_STATUS_CMD, NULL)) + // { + // } + // MSG("SPI_DMA_test 2\r\n"); + // spi_transmit_receive(spi0,txBuff,rxBuff,length,SPI_DATASIZE_8BIT); + // MSG("SPI_DMA_test 3\r\n"); + + if(length<500) + { + if(SPI_fifoconfig.txFifoDmaEnable == ENABLE || SPI_fifoconfig.rxFifoDmaEnable == ENABLE) + { + SPI_fifoconfig.txFifoDmaEnable = DISABLE; + SPI_fifoconfig.rxFifoDmaEnable = DISABLE; + SPI_FifoConfig(SPI_ID_0,&SPI_fifoconfig); + } + spi_transmit_receive(spi0,txBuff,rxBuff,length,SPI_DATASIZE_8BIT); + } + else{ + if(SPI_fifoconfig.txFifoDmaEnable == DISABLE || SPI_fifoconfig.rxFifoDmaEnable == DISABLE) + { + SPI_fifoconfig.txFifoDmaEnable = ENABLE; + SPI_fifoconfig.rxFifoDmaEnable = ENABLE; + SPI_FifoConfig(SPI_ID_0,&SPI_fifoconfig); + } + dma_reload(dma_ch3, (uint32_t)txBuff, (uint32_t)DMA_ADDR_SPI_TDR, length); + dma_reload(dma_ch4, (uint32_t)DMA_ADDR_SPI_RDR, (uint32_t)rxBuff, length); + dma_channel_start(dma_ch3); + dma_channel_start(dma_ch4); + while(device_control(dma_ch3,DMA_CHANNEL_GET_STATUS_CMD,NULL)||device_control(dma_ch4,DMA_CHANNEL_GET_STATUS_CMD,NULL)) + { + } + dma_channel_stop(dma_ch3); + dma_channel_stop(dma_ch4); + } + + return SUCCESS; +} +void SPI_CS_WriteBit(uint8_t bit) +{ + gpio_write(SPI_PIN_CS,bit); +} +/**************************************************************************** + * @brief SPI_SetSpeed + * + * +*******************************************************************************/ +static void SD_SPI_SetSpeed(uint8_t mode) +{ + switch (mode){ + case (0): + device_control(spi0, DEVICE_CTRL_SPI_CONFIG_CLOCK_CMD,(void*)(300 * 1000)); + break; + case (1): + device_control(spi0, DEVICE_CTRL_SPI_CONFIG_CLOCK_CMD,(void*)(18 * 1000 * 1000)); + break; + case (2): + device_control(spi0, DEVICE_CTRL_SPI_CONFIG_CLOCK_CMD,(void*)(40 * 1000 * 1000)); + break; + default: + break; + } +} + +/**************************************************************************** + * @brief SPI_CS_WriteBit + * + * +*******************************************************************************/ +// static void SPI_CS_WriteBit(uint8_t bit) +// { +// GLB_GPIO_Write(SPI_PIN_CS, bit); +// } + +/****************************************************************************/ /** + * @brief SD_GetResponse + * + * +*******************************************************************************/ +static BL_Err_Type SD_GetResponse(uint8_t Response) +{ + uint8_t rx; + uint8_t t_0xFF = 0xFF; + uint16_t Count = 0xFFFE; + do{ + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + Count--; + } while (rx != Response && Count); + + if (Count == 0) + return ERROR; + else + return SUCCESS; +} + +/**************************************************************************** + * @brief SD_SendCommand + * + * +*******************************************************************************/ +static uint8_t SD_SendCommand(uint8_t cmd, uint32_t arg, uint8_t crc) +{ + uint8_t rx; + uint8_t t_0xFF = 0xFF; + uint8_t rxbuff[6]; + uint8_t txbuff[6]; + uint8_t retry = 0; + + SPI_CS_WriteBit(1); + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + + SPI_CS_WriteBit(0); + SD_GetResponse(0xFF); + + txbuff[0] = cmd | 0x40; + txbuff[1] = (uint8_t)(arg >> 24); + txbuff[2] = (uint8_t)(arg >> 16); + txbuff[3] = (uint8_t)(arg >> 8); + txbuff[4] = (uint8_t)(arg); + txbuff[5] = (uint8_t)(crc); + + SPI_ReadWriteByte(txbuff, rxbuff, 6); + + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + + do{ + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + retry++; + } while (rx == 0xFF && retry < 20); + + //MSG("CMD%d :%d num:%d\r\n",cmd,rx,retry); + SPI_CS_WriteBit(1); + SPI_ReadWriteByte(&t_0xFF, &retry, 1); + + return rx; +} + +/**************************************************************************** + * @brief SD_SendCommand_NoDeassert + * + * +*******************************************************************************/ +static uint8_t SD_SendCommand_NoDeassert(uint8_t cmd, uint32_t arg, uint8_t crc) +{ + uint8_t rx; + uint8_t t_0xFF = 0xFF; + uint8_t rxbuff[6]; + uint8_t txbuff[6]; + uint8_t retry = 0; + + SPI_CS_WriteBit(1); + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + + SPI_CS_WriteBit(0); + SD_GetResponse(0xFF); + + txbuff[0] = cmd | 0x40; + txbuff[1] = (uint8_t)(arg >> 24); + txbuff[2] = (uint8_t)(arg >> 16); + txbuff[3] = (uint8_t)(arg >> 8); + txbuff[4] = (uint8_t)(arg); + txbuff[5] = (uint8_t)(crc); + + SPI_ReadWriteByte(txbuff, rxbuff, 6); + + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + + do{ + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + retry++; + } while (rx == 0xFF && retry < 20); + + //MSG("CMD%d :%d num:%d\r\n",cmd,rx,retry); + + return rx; +} + +/**************************************************************************** + * @brief SD_Idle_Sta + * + * +*******************************************************************************/ +static BL_Err_Type SD_Idle_Sta(void) +{ + uint16_t i; + uint8_t rx = 0; + uint8_t t_0xFF = 0xFF; + uint8_t retry = 0; + + SPI_CS_WriteBit(1); + + for (i = 0; i < 10; i++) + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + + do + { + rx = SD_SendCommand(CMD0, 0, 0x95); + retry++; + } while (rx != MSD_IN_IDLE_STATE && retry < 100); + + if (retry >= 100) + { + //MSG("SD IDLE err:%d\r\n",rx); + return ERROR; + } + else + { + //MSG("SD IDLE success\r\n"); + return SUCCESS; + } +} + + +/****************************************************************************/ /** + * @brief SD_ReceiveData + * + * + * +*******************************************************************************/ +uint8_t SD_ReceiveData(uint8_t *data, uint16_t len, uint8_t release) +{ + uint8_t rx; + uint8_t t_0xFF = 0xFF; + uint16_t i; + + SPI_CS_WriteBit(0); + /* get token */ + if (SD_GetResponse(0xFE)) + { + SPI_CS_WriteBit(1); + MSG("sd receive err: no token\r\n"); + return ERROR; + } + else + { + //MSG("sd get token\r\n"); + } + + for (i = 0; i < len; i++) + { + SPI_ReadWriteByte(&t_0xFF, data + i, 1); + } + /* two dummy CRC */ + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + /* */ + if (release) + SPI_CS_WriteBit(1); + + return SUCCESS; +} + +/****************************************************************************/ /** + * @brief SD_SendBlock + * + * + * +*******************************************************************************/ +uint8_t SD_SendBlock(uint8_t *buf, uint8_t cmd) +{ + uint8_t rx; + uint8_t rxbuff[512]; + uint8_t t_0xFF = 0xFF; + uint16_t i; + /* Waiti for free */ + if (SD_GetResponse(0xFF)) + { + SPI_CS_WriteBit(1); + return ERROR; + } + + /* send token */ + SPI_ReadWriteByte(&cmd, &rx, 1); + + if (cmd != 0xFD) + { + /* send block data */ + SPI_ReadWriteByte(buf, rxbuff, 512); + /* two dummy CRC */ + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + /* 8 clock */ + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + + if ((rx & 0x1F) != 0x05) + { + //MSG("sd send err:%d\r\n",rx,1); + SPI_CS_WriteBit(1); + return rx; + } + i = 0; + do + { + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + i++; + } while (rx != 0xFF && i <= 0xFFFE); + } + return 0; +} + +/****************************************************************************/ /** + * @brief SD_GetCID + * + * +*******************************************************************************/ +// static uint8_t SD_GetCID(uint8_t *cid_data) +// { +// uint8_t rx, i; +// rx = SD_SendCommand(CMD10, 0, 0xFF); +// if (rx) +// { +// MSG("get CID err:%d\r\n", rx); +// return rx; +// } +// SD_ReceiveData(cid_data, 16, RELEASE); +// MSG("sd cid:"); +// for (i = 0; i < 16; i++) +// MSG("%02X ", cid_data[i]); +// MSG("end\r\n"); + +// return SUCCESS; +// } + +// /**************************************************************************** +// * @brief SD_GetCSD +// * +// * +// *******************************************************************************/ +// static uint8_t SD_GetCSD(uint8_t *sid_data) +// { +// uint8_t rx, i; +// rx = SD_SendCommand(CMD9, 0, 0xFF); +// if (rx) +// { +// MSG("get CSD err: CMD9 %d\r\n", rx); +// return rx; +// } +// SD_ReceiveData(sid_data, 16, RELEASE); + +// MSG("sd sid:"); +// for (i = 0; i < 16; i++) +// MSG("%02X ", sid_data[i]); +// MSG("end\r\n"); + +// return SUCCESS; +// } + +// /****************************************************************************/ /** +// * @brief SD_GetCapacity +// * +// * +// *******************************************************************************/ +// uint64_t SD_GetCapacity() +// { +// uint8_t csd[16] = {0}; +// uint8_t r1; +// uint16_t i; +// uint64_t Capacity, temp; + +// if (SD_GetCSD(csd) != 0) +// return ERROR; +// /* SDHC */ +// if ((csd[0] & 0xC0) == 0x40) +// { +// Capacity = (uint64_t)csd[9]; +// Capacity += ((uint64_t)csd[8]) << 8; +// Capacity += ((uint64_t)csd[7] & 0x3F) << 16; +// Capacity = (Capacity + 1) << 9; /* sector */ +// //Capacity*=512; /* KByte */ +// MSG("SDHC capacity:%lld MByte\r\n", Capacity / 1024); +// } +// else +// { +// i = csd[6] & 0x03; +// i <<= 8; +// i += csd[7]; +// i <<= 2; +// i += ((csd[8] & 0xc0) >> 6); +// /*C_SIZE_MULT */ +// r1 = csd[9] & 0x03; +// r1 <<= 1; +// r1 += ((csd[10] & 0x80) >> 7); +// r1 += 2; +// temp = 1; +// while (r1) +// { +// temp *= 2; +// r1--; +// } +// Capacity = ((uint64_t)(i + 1)) * ((uint64_t)temp); +// /* READ_BL_LEN */ +// i = csd[5] & 0x0f; +// /* BLOCK_LEN */ +// temp = 1; +// while (i) +// { +// temp *= 2; +// i--; +// } +// /* The final result */ +// Capacity *= (uint64_t)temp; //字节为单位 +// MSG("SD capacity:%u MByte\r\n", Capacity / 1024 / 1024); +// } +// return (uint32_t)Capacity; +// } + +/****************************************************************************/ /** + * @brief SD_Get_CardInfo + * + * +*******************************************************************************/ +uint8_t SD_Get_CardInfo(SD_CardInfoTypedef *pCardInfo) +{ + uint8_t rx,t_0xFF; + uint32_t tmp = 0; + /* get cid */ + rx = SD_SendCommand(CMD10, 0, 0xFF); + if (rx) + return 1; + SD_ReceiveData(pCardInfo->SD_cid.CID, 16, RELEASE); + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + /* get csd */ + rx = SD_SendCommand(CMD9, 0, 0xFF); + if (rx) + return 1; + SD_ReceiveData(pCardInfo->SD_csd.CSD, 16, RELEASE); + + /* Byte 0 */ + tmp = pCardInfo->SD_csd.CSD[0]; + pCardInfo->SD_csd.CSDStruct = (uint8_t)((tmp & 0xC0) >> 6); + pCardInfo->SD_csd.SysSpecVersion = (uint8_t)((tmp & 0x3C) >> 2); + pCardInfo->SD_csd.Reserved1 = tmp & 0x03; + /* Byte 1 */ + tmp = pCardInfo->SD_csd.CSD[1]; + pCardInfo->SD_csd.TAAC = (uint8_t)tmp; + /* Byte 2 */ + tmp = pCardInfo->SD_csd.CSD[2]; + pCardInfo->SD_csd.NSAC = (uint8_t)tmp; + /* Byte 3 */ + tmp = pCardInfo->SD_csd.CSD[3]; + pCardInfo->SD_csd.MaxBusClkFrec = (uint8_t)tmp; + /* Byte 4 */ + tmp = pCardInfo->SD_csd.CSD[4] ; + pCardInfo->SD_csd.CardComdClasses = (uint16_t)(tmp << 4); + /* Byte 5 */ + tmp = pCardInfo->SD_csd.CSD[5]; + pCardInfo->SD_csd.CardComdClasses |= (uint16_t)((tmp & 0xF0) >> 4); + pCardInfo->SD_csd.RdBlockLen = (uint8_t)(tmp & 0x0F); + /* Byte 6 */ + tmp = pCardInfo->SD_csd.CSD[6]; + pCardInfo->SD_csd.PartBlockRead = (uint8_t)((tmp & 0x80) >> 7); + pCardInfo->SD_csd.WrBlockMisalign = (uint8_t)((tmp & 0x40) >> 6); + pCardInfo->SD_csd.RdBlockMisalign = (uint8_t)((tmp & 0x20) >> 5); + pCardInfo->SD_csd.DSRImpl = (uint8_t)((tmp & 0x10) >> 4); + pCardInfo->SD_csd.Reserved2 = 0; /*!< Reserved */ + + if ((pCardInfo->CardType == SD_TYPE_V1) || (pCardInfo->CardType == SD_TYPE_V2)) + { + pCardInfo->SD_csd.DeviceSize = (tmp & 0x03) << 10; + /* Byte 7 */ + tmp = pCardInfo->SD_csd.CSD[7] ; + pCardInfo->SD_csd.DeviceSize |= (tmp) << 2; + /* Byte 8 */ + tmp = pCardInfo->SD_csd.CSD[8] ; + pCardInfo->SD_csd.DeviceSize |= (tmp & 0xC0) >> 6; + pCardInfo->SD_csd.MaxRdCurrentVDDMin = (tmp & 0x38) >> 3; + pCardInfo->SD_csd.MaxRdCurrentVDDMax = (tmp & 0x07); + /* Byte 9 */ + tmp = pCardInfo->SD_csd.CSD[9] ; + pCardInfo->SD_csd.MaxWrCurrentVDDMin = (tmp & 0xE0) >> 5; + pCardInfo->SD_csd.MaxWrCurrentVDDMax = (tmp & 0x1C) >> 2; + pCardInfo->SD_csd.DeviceSizeMul = (tmp & 0x03) << 1; + /* Byte 10 */ + tmp = pCardInfo->SD_csd.CSD[10] ; + pCardInfo->SD_csd.DeviceSizeMul |= (tmp & 0x80) >> 7; + + pCardInfo->CardCapacity = (pCardInfo->SD_csd.DeviceSize + 1); + pCardInfo->CardCapacity *= (1 << (pCardInfo->SD_csd.DeviceSizeMul + 2)); + pCardInfo->CardBlockSize = 1 << (pCardInfo->SD_csd.RdBlockLen); + pCardInfo->CardCapacity *= pCardInfo->CardBlockSize; + } + else if (pCardInfo->CardType == SD_TYPE_V2HC) + { + /* Byte 7 */ + tmp = pCardInfo->SD_csd.CSD[7] ; + pCardInfo->SD_csd.DeviceSize = (tmp & 0x3F) << 16; + /* Byte 8 */ + tmp = pCardInfo->SD_csd.CSD[8] ; + pCardInfo->SD_csd.DeviceSize |= (tmp << 8); + /* Byte 9 */ + tmp = pCardInfo->SD_csd.CSD[9]; + pCardInfo->SD_csd.DeviceSize |= (tmp); + /* Byte 10 */ + tmp = pCardInfo->SD_csd.CSD[10] ; + + pCardInfo->CardCapacity = (uint64_t)((((uint64_t)pCardInfo->SD_csd.DeviceSize + 1)) * 512 * 1024); + pCardInfo->CardBlockSize = 512; + } + else + { + /* Not supported card type */ + } + pCardInfo->SD_csd.EraseGrSize = (tmp & 0x40) >> 6; + pCardInfo->SD_csd.EraseGrMul = (tmp & 0x3F) << 1; + /* Byte 11 */ + tmp = pCardInfo->SD_csd.CSD[11]; + pCardInfo->SD_csd.EraseGrMul |= (tmp & 0x80) >> 7; + pCardInfo->SD_csd.WrProtectGrSize = (tmp & 0x7F); + /* Byte 12 */ + tmp = pCardInfo->SD_csd.CSD[12]; + pCardInfo->SD_csd.WrProtectGrEnable = (tmp & 0x80) >> 7; + pCardInfo->SD_csd.ManDeflECC = (tmp & 0x60) >> 5; + pCardInfo->SD_csd.WrSpeedFact = (tmp & 0x1C) >> 2; + pCardInfo->SD_csd.MaxWrBlockLen = (tmp & 0x03) << 2; + /* Byte 13 */ + tmp = pCardInfo->SD_csd.CSD[13]; + pCardInfo->SD_csd.MaxWrBlockLen |= (tmp & 0xC0) >> 6; + pCardInfo->SD_csd.WriteBlockPaPartial = (tmp & 0x20) >> 5; + pCardInfo->SD_csd.Reserved3 = 0; + pCardInfo->SD_csd.ContentProtectAppli = (tmp & 0x01); + /* Byte 14 */ + tmp = pCardInfo->SD_csd.CSD[14] ; + pCardInfo->SD_csd.FileFormatGrouop = (tmp & 0x80) >> 7; + pCardInfo->SD_csd.CopyFlag = (tmp & 0x40) >> 6; + pCardInfo->SD_csd.PermWrProtect = (tmp & 0x20) >> 5; + pCardInfo->SD_csd.TempWrProtect = (tmp & 0x10) >> 4; + pCardInfo->SD_csd.FileFormat = (tmp & 0x0C) >> 2; + pCardInfo->SD_csd.ECC = (tmp & 0x03); + /* Byte 15 */ + tmp = pCardInfo->SD_csd.CSD[15]; + pCardInfo->SD_csd.CSD_CRC = (tmp & 0xFE) >> 1; + pCardInfo->SD_csd.Reserved4 = 1; + + /* Byte 0 */ + tmp = pCardInfo->SD_cid.CID[0] ; + pCardInfo->SD_cid.ManufacturerID = tmp; + /* Byte 1 */ + tmp = pCardInfo->SD_cid.CID[1]; + pCardInfo->SD_cid.OEM_AppliID = tmp << 8; + /* Byte 2 */ + tmp = pCardInfo->SD_cid.CID[2]; + pCardInfo->SD_cid.OEM_AppliID |= tmp; + /* Byte 3 */ + tmp = pCardInfo->SD_cid.CID[3]; + pCardInfo->SD_cid.ProdName1 = tmp << 24; + /* Byte 4 */ + tmp = pCardInfo->SD_cid.CID[4]; + pCardInfo->SD_cid.ProdName1 |= tmp << 16; + /* Byte 5 */ + tmp = pCardInfo->SD_cid.CID[5]; + pCardInfo->SD_cid.ProdName1 |= tmp << 8; + /* Byte 6 */ + tmp = pCardInfo->SD_cid.CID[6]; + pCardInfo->SD_cid.ProdName1 |= tmp; + /* Byte 7 */ + tmp = pCardInfo->SD_cid.CID[7]; + pCardInfo->SD_cid.ProdName2 = tmp; + /* Byte 8 */ + tmp = pCardInfo->SD_cid.CID[8] ; + pCardInfo->SD_cid.ProdRev = tmp; + /* Byte 9 */ + tmp = pCardInfo->SD_cid.CID[9]; + pCardInfo->SD_cid.ProdSN = tmp << 24; + /* Byte 10 */ + tmp = pCardInfo->SD_cid.CID[10]; + pCardInfo->SD_cid.ProdSN |= tmp << 16; + /* Byte 11 */ + tmp = pCardInfo->SD_cid.CID[11]; + pCardInfo->SD_cid.ProdSN |= tmp << 8; + /* Byte 12 */ + tmp = pCardInfo->SD_cid.CID[12]; + pCardInfo->SD_cid.ProdSN |= tmp; + /* Byte 13 */ + tmp = pCardInfo->SD_cid.CID[13]; + pCardInfo->SD_cid.Reserved1 |= (tmp & 0xF0) >> 4; + pCardInfo->SD_cid.ManufactDate = (tmp & 0x0F) << 8; + /* Byte 14 */ + tmp = pCardInfo->SD_cid.CID[14]; + pCardInfo->SD_cid.ManufactDate |= tmp; + /* Byte 15 */ + tmp = pCardInfo->SD_cid.CID[16]; + pCardInfo->SD_cid.CID_CRC = (tmp & 0xFE) >> 1; + pCardInfo->SD_cid.Reserved2 = 1; + return 0; +} + +/****************************************************************************/ /** + * @brief SD_ReadSingleBlock + * + * +*******************************************************************************/ +uint8_t SD_ReadBlock(uint32_t sector, uint8_t *buffer, uint32_t num) +{ + uint8_t rx; + uint8_t t_0xFF; + SPI_CS_WriteBit(0); + /* sector to byte */ + if (SD_CardInfo.CardType != SD_TYPE_V2HC){ + sector = sector << 9; + } + if (num == 1){ + rx = SD_SendCommand(CMD17, sector, 0); + if (rx) + { + MSG("SD CMD17 err:%02X\r\n", rx); + return rx; + } + rx = SD_ReceiveData(buffer, 512, RELEASE); + if (rx != 0) + { + MSG("SD sing read err:%02X\r\n", rx); + return rx; + } + } + else{ + rx = SD_SendCommand(CMD18, sector, 0); + if (rx) + { + MSG("SD CMD18 err:%02X\r\n", rx); + return rx; + } + while (num--) + { + rx = SD_ReceiveData(buffer, 512, NO_RELEASE); + if (rx != 0) + { + MSG("SD read err:%02X\r\n", rx); + return rx; + } + buffer += 512; + } + rx = SD_SendCommand(CMD12, 0, 0); + SPI_CS_WriteBit(1); + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + } + return SUCCESS; +} +/****************************************************************************/ /** + * @brief SD_WriteSingleBlock + * + * +*******************************************************************************/ +uint8_t SD_WriteBlock(uint32_t sector, uint8_t *data, uint32_t num) +{ + uint8_t rx; + uint8_t t_0xFF; + + /* sector to byte */ + if (SD_CardInfo.CardType != SD_TYPE_V2HC){ + sector = sector << 9; + } + + if (SD_GetResponse(0xFF)){ + return 1; + } + if (num == 1){ + rx = SD_SendCommand(CMD24, sector, 1); + if (rx) + { + MSG("SD CMD24 err:%d\r\n", rx); + return rx; + } + SPI_CS_WriteBit(0); + rx = SD_SendBlock(data, 0xFE); + if (rx) + { + MSG("write err\r\n"); + SPI_CS_WriteBit(0); + return rx; + } + } + else if (num > 1){ + if (SD_CardInfo.CardType != SD_TYPE_MMC) + { + rx = SD_SendCommand(CMD55, 0, 1); + if (rx == 0) + rx = SD_SendCommand(ACMD23, num, 1); + if (rx != 0) + { + MSG("SD ACMD23 err:%d\r\n", rx); + return rx; + } + } + rx = SD_SendCommand(CMD25, sector, 1); + if (rx != 0) + { + MSG("SD ACMD25 err:%d\r\n", rx); + return rx; + } + SPI_CS_WriteBit(0); + do + { + rx = SD_SendBlock(data, 0xFC); + data += 512; + } while (--num && rx == 0); + rx = SD_SendBlock(data, 0xFD); + } + SPI_CS_WriteBit(1); + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + return 0; +} +/****************************************************************************/ /** + * @brief SD init + * + * + * + * +*******************************************************************************/ +uint8_t SD_Init(SD_CardInfoTypedef *pCardInfo) +{ + uint8_t rx; + uint8_t t_0xFF = 0xFF; + //uint8_t txbuff[6]; + uint8_t rxbuff[6]; + uint16_t retry = 0,i; + + SD_SPI_Init(); + + SPI_CS_WriteBit(1); + /* low speed */ + SD_SPI_SetSpeed(0); + + if (SD_Idle_Sta()) + { + MSG("SD IDLE err:%d\r\n", rx); + return ERROR; + } + else + { + MSG("SD IDLE success\r\n"); + } + + /* send CMD8 */ + rx = SD_SendCommand_NoDeassert(CMD8, 0x1aa, 0x87); + /* sd card v1.0 */ + if (rx == 0x05) + { + + pCardInfo->CardType = SD_TYPE_V1; + SPI_CS_WriteBit(1); + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + /* send CMD55+CMD41 sd init */ + do + { + rx = SD_SendCommand(CMD55, 0, 0); + if (rx != 0x01) + { + MSG("sdv1 CMD55 err:%d\r\n", rx); + return rx; + } + rx = SD_SendCommand(ACMD41, 0, 0); + retry++; + + } while (rx != 0x00 && retry < 100); + + /* mmc card init */ + if (retry >= 100) + { + retry = 0; + do + { + rx = SD_SendCommand(CMD1, 0, 0); + retry++; + } while (rx != 0x00 && retry < 100); + + if (retry >= 100) + { + MSG("sdv2 CMD1 timeout err:%d\r\n", rx); + return ERROR; + } + else + { + pCardInfo->CardType = SD_TYPE_MMC; + } + } + /* high speed */ + SD_SPI_SetSpeed(1); + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + + /* set sector size */ + rx = SD_SendCommand(CMD16, 512, 0xff); + if (rx != 0x00) + { + MSG("sdv1 CMD16 err:%d\r\n", rx); + return rx; + } + } + /* sd card v2.0 */ + else if (rx == 0x01) + { + + SPI_ReadWriteByte(&t_0xFF, rxbuff + 0, 1); + SPI_ReadWriteByte(&t_0xFF, rxbuff + 1, 1); + SPI_ReadWriteByte(&t_0xFF, rxbuff + 2, 1); + SPI_ReadWriteByte(&t_0xFF, rxbuff + 3, 1); + + SPI_CS_WriteBit(1); + /* next 8 clocks */ + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + /* 2.7V - 3.6V */ + if (rxbuff[2] == 0x01 && rxbuff[3] == 0xAA) + { + retry = 0; + do + { + rx = SD_SendCommand(CMD55, 0, 0); + if (rx != 0x01) + { + MSG("sdv2 CMD55 err:%d\r\n", rx); + return rx; + } + rx = SD_SendCommand(ACMD41, 0x40000000, 0); + retry++; + if (retry > 200) + { + MSG("sdv2 CMD41 timeout err:%d\r\n", rx); + return rx; + } + } while (rx != 0); + /* send CMD58 */ + rx = SD_SendCommand_NoDeassert(CMD58, 0, 0); + if (rx != 0X00) + { + MSG("sdv2 CMD58 err:%d\r\n", rx); + return rx; + } + /* get OCR */ + SPI_ReadWriteByte(&t_0xFF, rxbuff + 0, 1); + SPI_ReadWriteByte(&t_0xFF, rxbuff + 1, 1); + SPI_ReadWriteByte(&t_0xFF, rxbuff + 2, 1); + SPI_ReadWriteByte(&t_0xFF, rxbuff + 3, 1); + + SPI_CS_WriteBit(1); + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + /* bit32 CCS: 1-SDHC 0-SD2.0 */ + if (rxbuff[0] & 0x40) + { + pCardInfo->CardType = SD_TYPE_V2HC; + MSG("sdv2hc success\r\n"); + } + else + { + pCardInfo->CardType = SD_TYPE_V2; + MSG("sdv2.0 success\r\n"); + } + + /* set sector size */ + rx = SD_SendCommand(CMD16, 512, 0xff); + if (rx != 0x00) + MSG("sdv1 CMD16 err:%d\r\n", rx); + /* high speed */ + SD_SPI_SetSpeed(1); + SPI_ReadWriteByte(&t_0xFF, &rx, 1); + } + } + else + { + return 1; + } + MSG("sd init success\r\n"); + + SD_Get_CardInfo(pCardInfo); + + MSG(" sd csd:"); + for (i = 0; i < 4; i++) + MSG("%X ", pCardInfo->SD_csd.CSD[i]); + MSG("end\r\n sd cid:"); + for (i = 0; i < 4; i++) + MSG("%X ", pCardInfo->SD_cid.CID[i]); + MSG("end\r\n"); + MSG("SDHC CardBlockSize:%d Byte\r\n", (pCardInfo->CardBlockSize)); + MSG("SDHC CardCapacity:%lld MByte\r\n", (SD_CardInfo.CardCapacity/1024/1024)); + + return 0; +} diff --git a/bsp/bsp_common/spi_sd/bsp_spi_sd.h b/bsp/bsp_common/spi_sd/bsp_spi_sd.h new file mode 100644 index 00000000..07696194 --- /dev/null +++ b/bsp/bsp_common/spi_sd/bsp_spi_sd.h @@ -0,0 +1,149 @@ +/** + * @file bsp_spi_sd.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#ifndef __SPI_SD_H__ +#define __SPI_SD_H__ + +#define SPI_PIN_CS GPIO_PIN_10 + +//SD传输数据结束后是否释放总线宏定义 +#define NO_RELEASE 0 +#define RELEASE 1 +// SD卡类型定义 +#define SD_TYPE_MMC 0 +#define SD_TYPE_V1 1 +#define SD_TYPE_V2 2 +#define SD_TYPE_V2HC 4 + +#define CMD0 0 // Resets the SD memory card. +#define CMD1 1 // Sends host capacity support information and activates the card's initialization process. +#define CMD8 8 // Sends SD Memory Card interface condition, which includes host supply voltage information and asks the card whether card supports voltage. +#define CMD9 9 // Addressed card sends its card specific data (CSD) on the CMD line. +#define CMD10 10 // Addressed card sends its card identification (CID) on the CMD line. +#define CMD12 12 // Forces the card to stop transmission. +#define CMD16 16 // Sets the block length (in bytes for SDSC) for all following block commands (read, write, lock). + // Default block length is fixed to 512 Bytes. Not effective for SDHS and SDXC +#define CMD17 17 // Reads single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of fixed 512 bytes in case of SDHC and SDXC +#define CMD18 18 // Continuously transfers data blocks from card to host until interrupted by STOP_TRANSMISSION command +#define ACMD23 23 // Specify block count for CMD18 and CMD25 +#define CMD24 24 // Writes single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of fixed 512 bytes in case of SDHC and SDXC. +#define CMD25 25 // Continuously writes blocks of data until a STOP_TRANSMISSION follows. +#define ACMD41 41 // +#define CMD55 55 // Indicates to the card that the next command is an application specific command rather than a standard command. +#define CMD58 58 // get OCR +#define CMD59 59 // enable/disable crc + +//数据写入回应字意义 +#define MSD_DATA_OK 0x05 +#define MSD_DATA_CRC_ERROR 0x0B +#define MSD_DATA_WRITE_ERROR 0x0D +#define MSD_DATA_OTHER_ERROR 0xFF +//SD卡回应标记字 +#define MSD_RESPONSE_NO_ERROR 0x00 // Card state is ready +#define MSD_IN_IDLE_STATE 0x01 // Card is in identification state +#define MSD_ERASE_RESET 0x02 // Card is in standby state +#define MSD_ILLEGAL_COMMAND 0x04 // Card is in transfer state +#define MSD_COM_CRC_ERROR 0x08 // Card is sending an operation +#define MSD_ERASE_SEQUENCE_ERROR 0x10 // Card is receiving operation information +#define MSD_ADDRESS_ERROR 0x20 // Card is in programming state +#define MSD_PARAMETER_ERROR 0x40 // Card is disconnected +#define MSD_RESPONSE_FAILURE 0xFF // Card is in error state + +typedef struct +{ + uint8_t CSD[16]; /*!< SD card specific data table */ + uint8_t CSDStruct; /*!< CSD structure */ + uint8_t SysSpecVersion; /*!< System specification version */ + uint8_t Reserved1; /*!< Reserved */ + uint8_t TAAC; /*!< Data read access time 1 */ + uint8_t NSAC; /*!< Data read access time 2 in CLK cycles */ + uint8_t MaxBusClkFrec; /*!< Max. bus clock frequency */ + uint16_t CardComdClasses; /*!< Card command classes */ + uint8_t RdBlockLen; /*!< Max. read data block length */ + uint8_t PartBlockRead; /*!< Partial blocks for read allowed */ + uint8_t WrBlockMisalign; /*!< Write block misalignment */ + uint8_t RdBlockMisalign; /*!< Read block misalignment */ + uint8_t DSRImpl; /*!< DSR implemented */ + uint8_t Reserved2; /*!< Reserved */ + uint32_t DeviceSize; /*!< Device Size */ + uint8_t MaxRdCurrentVDDMin; /*!< Max. read current @ VDD min */ + uint8_t MaxRdCurrentVDDMax; /*!< Max. read current @ VDD max */ + uint8_t MaxWrCurrentVDDMin; /*!< Max. write current @ VDD min */ + uint8_t MaxWrCurrentVDDMax; /*!< Max. write current @ VDD max */ + uint8_t DeviceSizeMul; /*!< Device size multiplier */ + uint8_t EraseGrSize; /*!< Erase group size */ + uint8_t EraseGrMul; /*!< Erase group size multiplier */ + uint8_t WrProtectGrSize; /*!< Write protect group size */ + uint8_t WrProtectGrEnable; /*!< Write protect group enable */ + uint8_t ManDeflECC; /*!< Manufacturer default ECC */ + uint8_t WrSpeedFact; /*!< Write speed factor */ + uint8_t MaxWrBlockLen; /*!< Max. write data block length */ + uint8_t WriteBlockPaPartial; /*!< Partial blocks for write allowed */ + uint8_t Reserved3; /*!< Reserved */ + uint8_t ContentProtectAppli; /*!< Content protection application */ + uint8_t FileFormatGrouop; /*!< File format group */ + uint8_t CopyFlag; /*!< Copy flag (OTP) */ + uint8_t PermWrProtect; /*!< Permanent write protection */ + uint8_t TempWrProtect; /*!< Temporary write protection */ + uint8_t FileFormat; /*!< File format */ + uint8_t ECC; /*!< ECC code */ + uint8_t CSD_CRC; /*!< CSD CRC */ + uint8_t Reserved4; /*!< Always 1 */ + +} SD_CSDTypedef; + +typedef struct +{ + uint8_t CID[16]; /*!< SD card identification number table */ + uint8_t ManufacturerID; /*!< Manufacturer ID */ + uint16_t OEM_AppliID; /*!< OEM/Application ID */ + uint32_t ProdName1; /*!< Product Name part1 */ + uint8_t ProdName2; /*!< Product Name part2 */ + uint8_t ProdRev; /*!< Product Revision */ + uint32_t ProdSN; /*!< Product Serial Number */ + uint8_t Reserved1; /*!< Reserved1 */ + uint16_t ManufactDate; /*!< Manufacturing Date */ + uint8_t CID_CRC; /*!< CID CRC */ + uint8_t Reserved2; /*!< Always 1 */ + +} SD_CIDTypedef; + +typedef struct SD_CardInfoTypedef +{ + SD_CSDTypedef SD_csd; /*!< SD card specific data register */ + SD_CIDTypedef SD_cid; /*!< SD card identification number register */ + uint64_t CardCapacity; /*!< Card capacity */ + uint32_t CardBlockSize; /*!< Card block size */ + uint16_t RCA; /*!< SD relative card address */ + uint8_t CardType; /*!< SD card type */ +} SD_CardInfoTypedef; + +extern SD_CardInfoTypedef SD_CardInfo; + +uint8_t SD_Init(SD_CardInfoTypedef *pCardInfo); +uint8_t SD_Get_CardInfo(SD_CardInfoTypedef *pCardInfo); + +uint8_t SD_ReadBlock(uint32_t sector, uint8_t *buffer, uint32_t num); +uint8_t SD_WriteBlock(uint32_t sector, uint8_t *buffer, uint32_t num); + +#endif \ No newline at end of file diff --git a/bsp/bsp_common/usb/uart_interface.c b/bsp/bsp_common/usb/uart_interface.c new file mode 100644 index 00000000..a14ca40d --- /dev/null +++ b/bsp/bsp_common/usb/uart_interface.c @@ -0,0 +1,197 @@ +/** + * @file uart_interface.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "hal_gpio.h" +#include "uart_interface.h" +#include "hal_usb.h" +#include "hal_dma.h" + +#define USB_OUT_RINGBUFFER_SIZE (8 * 1024) +#define UART_RX_RINGBUFFER_SIZE (8 * 1024) +#define UART_TX_DMA_SIZE (4095) + +uint8_t usb_rx_mem[USB_OUT_RINGBUFFER_SIZE] __attribute__((section(".system_ram"))); +uint8_t uart_rx_mem[UART_RX_RINGBUFFER_SIZE] __attribute__((section(".system_ram"))); + +uint8_t src_buffer[UART_TX_DMA_SIZE] __attribute__((section(".tcm_code"))); + +struct device* uart1; +struct device* dma_ch2; + +Ring_Buffer_Type usb_rx_rb; +Ring_Buffer_Type uart1_rx_rb; + +void uart_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state) +{ + if (state == UART_EVENT_RX_FIFO) + { + if (size && size < Ring_Buffer_Get_Empty_Length(&uart1_rx_rb)) + { + Ring_Buffer_Write(&uart1_rx_rb, (uint8_t *)args, size); + } + else + { + MSG("RF\r\n"); + } + } + else if (state == UART_EVENT_RTO) + { + if (size && size < Ring_Buffer_Get_Empty_Length(&uart1_rx_rb)) + { + Ring_Buffer_Write(&uart1_rx_rb, (uint8_t *)args, size); + } + else + { + MSG("RTO\r\n"); + } + } + else if (state == UART_RX_FER_IT) + { + MSG("ov\r\n"); + } +} +void uart1_init(void) +{ + uart_register(UART1_INDEX, "uart1", DEVICE_OFLAG_RDWR); + uart1 = device_find("uart1"); + + if (uart1) + { + device_open(uart1, DEVICE_OFLAG_DMA_TX | DEVICE_OFLAG_INT_RX); //uart0 tx dma mode + device_set_callback(uart1, uart_irq_callback); + device_control(uart1, DEVICE_CTRL_SET_INT, (void *)(UART_RX_FIFO_IT | UART_RTO_IT | UART_RX_FER_IT)); + } + + dma_register(DMA0_CH2_INDEX, "ch2", DEVICE_OFLAG_RDWR); + dma_ch2 = device_find("ch2"); + if (dma_ch2) + { + device_open(dma_ch2, 0); + //device_set_callback(dma_ch2, NULL); + //device_control(dma_ch2, DEVICE_CTRL_SET_INT, NULL); + } + device_control(uart1, DEVICE_CTRL_UART_ATTACH_TX_DMA, dma_ch2); + +} + +void uart1_config(uint32_t baudrate, uart_databits_t databits, uart_parity_t parity, uart_stopbits_t stopbits) +{ + uart_param_cfg_t cfg; + cfg.baudrate = baudrate; + cfg.stopbits = stopbits; + cfg.parity = parity; + + if (databits == 5) + { + cfg.databits = UART_DATA_LEN_5; + } + else if (databits == 6) + { + cfg.databits = UART_DATA_LEN_6; + } + else if (databits == 7) + { + cfg.databits = UART_DATA_LEN_7; + } + else if (databits == 8) + { + cfg.databits = UART_DATA_LEN_8; + } + + device_control(uart1, DEVICE_CTRL_CONFIG, &cfg); +} + +void uart1_dtr_init(void) +{ + gpio_set_mode(GPIO_PIN_21, GPIO_OUTPUT_MODE); +} +void uart1_rts_init(void) +{ + gpio_set_mode(GPIO_PIN_20, GPIO_OUTPUT_MODE); +} +void dtr_pin_set(uint8_t status) +{ + gpio_write(GPIO_PIN_21, status); +} +void rts_pin_set(uint8_t status) +{ + gpio_write(GPIO_PIN_20, status); +} +void ringbuffer_lock() +{ + disable_irq(); +} +void ringbuffer_unlock() +{ + enable_irq(); +} + +void uart_ringbuffer_init(void) +{ + /* init mem for ring_buffer */ + memset(usb_rx_mem, 0, USB_OUT_RINGBUFFER_SIZE); + memset(uart_rx_mem, 0, UART_RX_RINGBUFFER_SIZE); + + /* init ring_buffer */ + Ring_Buffer_Init(&usb_rx_rb, usb_rx_mem, USB_OUT_RINGBUFFER_SIZE, ringbuffer_lock, ringbuffer_unlock); + Ring_Buffer_Init(&uart1_rx_rb, uart_rx_mem, UART_RX_RINGBUFFER_SIZE, ringbuffer_lock, ringbuffer_unlock); +} + +static dma_control_data_t uart_dma_ctrl_cfg = +{ + .bits.fix_cnt = 0, + .bits.dst_min_mode = 0, + .bits.dst_add_mode = 0, + .bits.SI = 1, + .bits.DI = 0, + .bits.SWidth = DMA_TRANSFER_WIDTH_8BIT, + .bits.DWidth = DMA_TRANSFER_WIDTH_8BIT, + .bits.SBSize = 0, + .bits.DBSize = 0, + .bits.I = 0, + .bits.TransferSize = 4095 +}; +static dma_lli_ctrl_t uart_lli_list = +{ + .src_addr = (uint32_t)src_buffer, + .dst_addr = DMA_ADDR_UART1_TDR, + .nextlli = 0 +}; + +void uart_send_from_ringbuffer(void) +{ + if (!device_control(dma_ch2, DMA_CHANNEL_GET_STATUS_CMD, NULL)) + { + uint32_t avalibleCnt = Ring_Buffer_Read(&usb_rx_rb, src_buffer, UART_TX_DMA_SIZE); + + if (avalibleCnt) + { + dma_channel_stop(dma_ch2); + uart_dma_ctrl_cfg.bits.TransferSize = avalibleCnt; + memcpy(&uart_lli_list.cfg, &uart_dma_ctrl_cfg, sizeof(dma_control_data_t)); + device_control(dma_ch2,DMA_CHANNEL_UPDATE_CMD,(void*)((uint32_t)&uart_lli_list)); + dma_channel_start(dma_ch2); + //device_write(uart1, 0, src_buffer, avalibleCnt); + } + } +} \ No newline at end of file diff --git a/bsp/bsp_common/usb/uart_interface.h b/bsp/bsp_common/usb/uart_interface.h new file mode 100644 index 00000000..9fc5e095 --- /dev/null +++ b/bsp/bsp_common/usb/uart_interface.h @@ -0,0 +1,41 @@ +/** + * @file uart_interface.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#ifndef __UART_IF_H__ +#define __UART_IF_H__ + +#include "hal_uart.h" +#include "ring_buffer.h" + +extern Ring_Buffer_Type usb_rx_rb; +extern Ring_Buffer_Type uart1_rx_rb; + +void uart1_init(void); +void uart1_config(uint32_t baudrate,uart_databits_t databits,uart_parity_t parity,uart_stopbits_t stopbits); +void uart1_dtr_init(void); +void uart1_rts_init(void); +void dtr_pin_set(uint8_t status); +void rts_pin_set(uint8_t status); +void uart_ringbuffer_init(void); +void uart_send_from_ringbuffer(void); +#endif \ No newline at end of file diff --git a/bsp/bsp_common/usb/usb_dc.c b/bsp/bsp_common/usb/usb_dc.c new file mode 100644 index 00000000..38fdcea1 --- /dev/null +++ b/bsp/bsp_common/usb/usb_dc.c @@ -0,0 +1,116 @@ +/** + * @file usb_dc.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "hal_usb.h" +#include "stdbool.h" +#include "usbd_core.h" + +struct device *usb; + +static void usb_dc_event_callback(struct device *dev, void *args, uint32_t size, uint32_t state) +{ + switch (state) + { + case USB_DC_EVENT_ERROR: + break; + case USB_DC_EVENT_RESET: + { + struct usbd_endpoint_cfg ep_cfg[2]; + ep_cfg[0].ep_addr = USB_CONTROL_IN_EP0; + ep_cfg[0].ep_mps = USB_CTRL_EP_MPS; + ep_cfg[0].ep_type = USBD_EP_TYPE_BULK; + ep_cfg[1].ep_addr = USB_CONTROL_OUT_EP0; + ep_cfg[1].ep_mps = USB_CTRL_EP_MPS; + ep_cfg[1].ep_type = USBD_EP_TYPE_BULK; + usbd_ep_open(&ep_cfg[0]); + usbd_ep_open(&ep_cfg[1]); + usbd_set_address(0); + + usbd_event_notify_handler(USB_EVENT_RESET,NULL); + } + break; + case USB_DC_EVENT_SOF: + break; + case USB_DC_EVENT_SETUP_NOTIFY: + usbd_event_notify_handler(USB_EVENT_SETUP_NOTIFY,NULL); + break; + case USB_DC_EVENT_EP0_IN_NOTIFY: + usbd_event_notify_handler(USB_EVENT_EP0_IN_NOTIFY,NULL); + break; + case USB_DC_EVENT_EP0_OUT_NOTIFY: + usbd_event_notify_handler(USB_EVENT_EP0_OUT_NOTIFY,NULL); + break; + case USB_DC_EVENT_EP_IN_NOTIFY: + usbd_event_notify_handler(USB_EVENT_EP_IN_NOTIFY,args); + break; + case USB_DC_EVENT_EP_OUT_NOTIFY: + usbd_event_notify_handler(USB_EVENT_EP_OUT_NOTIFY,args); + break; + default: + break; + } +} +struct device* usb_dc_init(void) +{ + usb_dc_register(USB_INDEX, "usb", DEVICE_OFLAG_RDWR); + usb = device_find("usb"); + device_set_callback(usb,usb_dc_event_callback); + device_open(usb, 0); + return usb; +} + +int usbd_set_address(const uint8_t addr) +{ + return device_control(usb,DEVICE_CTRL_USB_DC_SET_ADDR,(void*)(uint32_t)addr); +} + +int usbd_ep_open(const struct usbd_endpoint_cfg *ep_cfg) +{ + return usb_dc_ep_open(usb,(const struct usb_dc_ep_cfg*)ep_cfg); +} +int usbd_ep_close(const uint8_t ep) +{ + return 0; +} +int usbd_ep_set_stall(const uint8_t ep) +{ + return device_control(usb,DEVICE_CTRL_USB_DC_SET_STALL,(void*)(uint32_t)ep); +} +int usbd_ep_clear_stall(const uint8_t ep) +{ + return device_control(usb,DEVICE_CTRL_USB_DC_CLR_STALL,(void*)(uint32_t)ep); +} +int usbd_ep_is_stalled(const uint8_t ep, uint8_t *stalled) +{ + return usb_dc_ep_is_stalled(usb,ep,stalled); +} + +int usbd_ep_write(const uint8_t ep, const uint8_t *data, uint32_t data_len, uint32_t *ret_bytes) +{ + return usb_dc_ep_write(usb,ep,data,data_len,ret_bytes); +} + +int usbd_ep_read(const uint8_t ep, uint8_t *data, uint32_t max_data_len,uint32_t *read_bytes) +{ + return usb_dc_ep_read(usb,ep,data,max_data_len,read_bytes); +} diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt new file mode 100644 index 00000000..8ca766d2 --- /dev/null +++ b/common/CMakeLists.txt @@ -0,0 +1,64 @@ +################# Add global include ################# +list(APPEND ADD_INCLUDE +"${CMAKE_CURRENT_SOURCE_DIR}/libc/inc" +"${CMAKE_CURRENT_SOURCE_DIR}/ring_buffer" +"${CMAKE_CURRENT_SOURCE_DIR}/soft_crc" +"${CMAKE_CURRENT_SOURCE_DIR}/memheap" +"${CMAKE_CURRENT_SOURCE_DIR}/libc/inc/arm_gcc" +"${CMAKE_CURRENT_SOURCE_DIR}/libc/inc/bits" +"${CMAKE_CURRENT_SOURCE_DIR}/libc/inc/sys" +"${CMAKE_CURRENT_SOURCE_DIR}/misc" +"${CMAKE_CURRENT_SOURCE_DIR}/list" +"${CMAKE_CURRENT_SOURCE_DIR}/device" +) +####################################################### + +################# Add private include ################# +# list(APPEND ADD_PRIVATE_INCLUDE +# ) +####################################################### + +############## Add current dir source files ########### +file(GLOB_RECURSE sources +"${CMAKE_CURRENT_SOURCE_DIR}/libc/src/*.c" +"${CMAKE_CURRENT_SOURCE_DIR}/ring_buffer/*.c" +"${CMAKE_CURRENT_SOURCE_DIR}/soft_crc/*.c" +"${CMAKE_CURRENT_SOURCE_DIR}/memheap/*.c" +"${CMAKE_CURRENT_SOURCE_DIR}/misc/*.c" +"${CMAKE_CURRENT_SOURCE_DIR}/device/*.c" +"${CMAKE_CURRENT_SOURCE_DIR}/partition/*.c" +) + +#aux_source_directory(. sources) +list(APPEND ADD_SRCS ${sources}) +list(REMOVE_ITEM ADD_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/libc/src/strtox.c" "${CMAKE_CURRENT_SOURCE_DIR}/libc/src/atox.c") +####################################################### + +########### Add required/dependent components ######### +#list(APPEND ADD_REQUIREMENTS BSP_${BOARD}_Driver) +####################################################### + +############ Add static libs ########################## +# if(CONFIG_COMPONENT1_INCLUDE_STATIC_LIB) +# list(APPEND ADD_STATIC_LIB "lib/libtest.a") +# endif() +####################################################### + +############ Add dynamic libs ######################### +# list(APPEND ADD_DYNAMIC_LIB "lib/arch/v831/libmaix_nn.so" +# "lib/arch/v831/libmaix_cam.so" +# ) +####################################################### + +############ Add global compile option ################ +#add components denpend on this component +# list(APPEND ADD_DEFINITIONS -D${BOARD} -DARCH_RISCV) +####################################################### + +############ Add private compile option ################ +#add compile option for this component that won't affect other modules +#list(APPEND ADD_DEFINITIONS_PRIVATE -D${BOARD}_DRIVER) +####################################################### + + +generate_library() diff --git a/common/device/drv_device.c b/common/device/drv_device.c new file mode 100644 index 00000000..20fa9b9c --- /dev/null +++ b/common/device/drv_device.c @@ -0,0 +1,330 @@ +/** + * @file drv_device.c + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "drv_device.h" +#include "string.h" + +#define dev_open (dev->open) +#define dev_close (dev->close) +#define dev_read (dev->read) +#define dev_write (dev->write) +#define dev_control (dev->control) + +dlist_t device_head = DLIST_OBJECT_INIT(device_head); +/** + * This function will copy string no more than n bytes. + * + * @param dst the string to copy + * @param src the string to be copied + * @param n the maximum copied length + * + * @return the result + */ +static char *device_strncpy(char *dst, const char *src, uint32_t n) +{ + if (n != 0) + { + char *d = dst; + const char *s = src; + + do + { + if ((*d++ = *s++) == 0) + { + /* NUL pad the remaining n-1 bytes */ + while (--n != 0) + *d++ = 0; + break; + } + } while (--n != 0); + } + + return (dst); +} +/** + * This function will compare string no more than n bytes. + * + * @param dst the string to copy + * @param src the string to be copied + * @param n the maximum copied length + * + * @return the result + */ +static int32_t device_strncmp(const char *cs, const char *ct, uint32_t count) +{ + signed char __res = 0; + + while (count) + { + if ((__res = *cs - *ct++) != 0 || !*cs++) + break; + count--; + } + + return __res; +} +/** + * This function registers a device driver with specified name. + * + * @param dev the pointer of device driver structure + * @param name the device driver's name + * @param flags the capabilities flag of device + * + * @return the error code, DEVICE_EOK on initialization successfully. + */ +int device_register(struct device *dev, const char *name, uint16_t flag) +{ +#define OBJECT_DEVICE_TYPE 0 +#define OBJECT_FLAG_DEFAULT 0 + + dlist_t *node; + + dlist_for_each(node, &device_head) + { + struct device *dev_obj; + dev_obj = dlist_entry(node, struct device, list); + if (dev_obj == dev) + { + return -DEVICE_EEXIST; + } + } + + dev->oflag = flag; + device_strncpy(dev->name, name, NAME_MAX); + + dlist_insert_after(&device_head, &(dev->list)); + dev->status = DEVICE_REGISTERED; + return DEVICE_EOK; +} +/** + * This function get device list header + * + * @param None + * + * @return device header + */ +dlist_t * device_get_list_header(void){ + return &device_head; +} +/** + * This function unregisters a device driver with specified name. + * + * @param dev the pointer of device driver structure + * @param name the device driver's name + * @param flags the capabilities flag of device + * + * @return the error code, DEVICE_EOK on initialization successfully. + */ +int device_unregister(const char *name) +{ + struct device* dev = device_find(name); + if(!dev) + return -DEVICE_ENODEV; + /* remove from old list */ + dlist_remove(&(dev->list)); + return DEVICE_EOK; +} + + + +/** + * This function finds a device driver by specified name. + * + * @param name the device driver's name + * + * @return the registered device driver on successful, or NULL on failure. + */ +struct device *device_find(const char *name) +{ + struct device *dev; + dlist_t *node; + + dlist_for_each(node, &device_head) + { + dev = dlist_entry(node, struct device, list); + if (device_strncmp(dev->name, name, NAME_MAX) == 0) + { + return dev; + } + } + return NULL; +} + +/** + * This function will open a device + * + * @param dev the pointer of device driver structure + * @param oflag the flags for device open + * + * @return the result + */ +int device_open(struct device *dev, uint16_t oflag) +{ + int retval = DEVICE_EOK; + + if ((dev->status == DEVICE_REGISTERED) || (dev->status == DEVICE_CLOSED)) + { + if (dev_open != NULL) + { + retval = dev_open(dev, oflag); + dev->status = DEVICE_OPENED; + dev->oflag |= oflag; + } + } + else + { + retval = -DEVICE_EFAULT; + } + return retval; +} +/** + * This function will close a device + * + * @param dev the pointer of device driver structure + * + * @return the result + */ +int device_close(struct device *dev) +{ + int retval = DEVICE_EOK; + + if (dev->status == DEVICE_OPENED) + { + if (dev_close != NULL) + { + retval = dev_close(dev); + dev->status = DEVICE_CLOSED; + dev->oflag = 0; + } + } + else + { + retval = -DEVICE_EFAULT; + } + return retval; +} +/** + * This function will perform a variety of control functions on devices. + * + * @param dev the pointer of device driver structure + * @param cmd the command sent to device + * @param arg the argument of command + * + * @return the result + */ +int device_control(struct device *dev, int cmd, void *args) +{ + int retval = DEVICE_EOK; + + if (dev->status >= DEVICE_REGISTERED) + { + if (dev_control != NULL) + { + retval = dev_control(dev, cmd, args); + } + } + else + { + retval = -DEVICE_EFAULT; + } + return retval; +} +/** + * This function will write some data to a device. + * + * @param dev the pointer of device driver structure + * @param pos the position of written + * @param buffer the data buffer to be written to device + * @param size the size of buffer + * + * @return the actually written size on successful, otherwise negative returned. + */ +int device_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size) +{ + int retval = DEVICE_EOK; + + if (dev->status == DEVICE_OPENED) + { + if (dev_write != NULL) + { + retval = dev_write(dev, pos, buffer, size); + } + } + else + { + retval = -DEVICE_EFAULT; + } + return retval; +} +/** + * This function will read some data from a device. + * + * @param dev the pointer of device driver structure + * @param pos the position of reading + * @param buffer the data buffer to save read data + * @param size the size of buffer + * + * @return the actually read size on successful, otherwise negative returned. + */ +int device_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size) +{ + int retval = DEVICE_EOK; + + if (dev->status == DEVICE_OPENED) + { + if (dev_read != NULL) + { + retval = dev_read(dev, pos, buffer, size); + } + } + else + { + retval = -DEVICE_EFAULT; + } + return retval; +} +/** + * This function will read some data from a device. + * + * @param dev the pointer of device driver structure + * @param pos the position of reading + * @param buffer the data buffer to save read data + * @param size the size of buffer + * + * @return the actually read size on successful, otherwise negative returned. + */ +int device_set_callback(struct device *dev, void (*callback)(struct device *dev, void *args, uint32_t size, uint32_t event)) +{ + int retval = DEVICE_EOK; + + if (dev->status > DEVICE_UNREGISTER) + { + if (callback != NULL) + { + dev->callback = callback; + } + } + else + { + retval = -DEVICE_EFAULT; + } + return retval; +} \ No newline at end of file diff --git a/common/device/drv_device.h b/common/device/drv_device.h new file mode 100644 index 00000000..b13f96fb --- /dev/null +++ b/common/device/drv_device.h @@ -0,0 +1,129 @@ +/** + * @file drv_device.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __DRV_DEVICE_H__ +#define __DRV_DEVICE_H__ + +#include "drv_list.h" +#include "bflb_platform.h" + +#define NAME_MAX 10 /* max device name*/ + +#define DEVICE_OFLAG_RDONLY 0x1000 /* open with read only */ +#define DEVICE_OFLAG_WRONLY 0x2000 /* open with write only */ +#define DEVICE_OFLAG_RDWR 0x3000 /* open with read and write */ + +#define DEVICE_OFLAG_STREAM_TX 0x001 /* open with poll tx */ +#define DEVICE_OFLAG_STREAM_RX 0x002 /* open with poll rx */ +#define DEVICE_OFLAG_INT_TX 0x004 /* open with interrupt tx */ +#define DEVICE_OFLAG_INT_RX 0x008 /* open with interrupt rx */ +#define DEVICE_OFLAG_DMA_TX 0x010 /* open with dma tx */ +#define DEVICE_OFLAG_DMA_RX 0x020 /* open with dma rx */ + +#define DEVICE_CTRL_SET_INT 0x01 /* set interrupt */ +#define DEVICE_CTRL_CLR_INT 0x02 /* clear interrupt */ +#define DEVICE_CTRL_GET_INT 0x03 /* get interrupt status*/ +#define DEVICE_CTRL_RESUME 0x04 /* resume device */ +#define DEVICE_CTRL_SUSPEND 0x05 /* suspend device */ +#define DEVICE_CTRL_CONFIG 0x06 /* config device */ +#define DEVICE_CTRL_GET_CONFIG 0x07 /* get device configuration */ + +/* + * POSIX Error codes + */ + +#define DEVICE_EOK 0 +#define DEVICE_EFAULT 14 /* Bad address */ +#define DEVICE_EEXIST 17 /* device exists */ +#define DEVICE_ENODEV 19 /* No such device */ +#define DEVICE_EINVAL 22 /* Invalid argument */ +#define DEVICE_ENOSPACE 23 /* No more Device for Allocate */ +#define __ASSERT_PRINT(fmt, ...) bflb_platform_printf(fmt, ##__VA_ARGS__) + +#define __ASSERT_LOC(test) \ + __ASSERT_PRINT("ASSERTION FAIL [%s] @ %s:%d\n", \ + #test, \ + __FILE__, __LINE__) + +#define DEVICE_ASSERT(test, fmt, ...) \ + do { \ + if (!(test)) { \ + __ASSERT_LOC(test); \ + __ASSERT_PRINT(fmt, ##__VA_ARGS__); \ + } \ + } while (0) + + +enum device_class_type +{ + DEVICE_CLASS_NONE = 0, + DEVICE_CLASS_GPIO, + DEVICE_CLASS_UART, + DEVICE_CLASS_SPI, + DEVICE_CLASS_I2C, + DEVICE_CLASS_ADC, + DEVICE_CLASS_DMA, + DEVICE_CLASS_TIMER, + DEVICE_CLASS_PWM, + DEVICE_CLASS_SDIO, + DEVICE_CLASS_USB, + DEVICE_CLASS_I2S, + DEVICE_CLASS_CAMERA, + DEVICE_CLASS_SEC_HASH, +} ; + +enum device_status_type +{ + DEVICE_UNREGISTER = 0, + DEVICE_REGISTERED, + DEVICE_OPENED, + DEVICE_CLOSED +} ; + +struct device +{ + char name[NAME_MAX]; /*name of device */ + dlist_t list; /*list node of device */ + enum device_status_type status; /*status of device */ + enum device_class_type type; /*type of device */ + uint16_t oflag; /*oflag of device */ + + int (*open)(struct device *dev, uint16_t oflag); + int (*close)(struct device *dev); + int (*control)(struct device *dev, int cmd, void *args); + int (*write)(struct device *dev, uint32_t pos, const void *buffer, uint32_t size); + int (*read)(struct device *dev, uint32_t pos, void *buffer, uint32_t size); + void (*callback)(struct device *dev, void *args, uint32_t size, uint32_t event); + void *handle; +}; + +int device_register(struct device *dev, const char *name, uint16_t flag); +int device_unregister(const char *name); +struct device *device_find(const char *name); +int device_open(struct device *dev, uint16_t oflag); +int device_close(struct device *dev); +int device_control(struct device *dev, int cmd, void *args); +int device_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size); +int device_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size); +int device_set_callback(struct device *dev, void (*callback)(struct device *dev, void *args, uint32_t size, uint32_t event)); +dlist_t * device_get_list_header(void); +#endif \ No newline at end of file diff --git a/common/libc/LICENSE b/common/libc/LICENSE new file mode 100644 index 00000000..79a98597 --- /dev/null +++ b/common/libc/LICENSE @@ -0,0 +1,62 @@ +Some files are derived from files copyrighted by the Regents of The +University of California, and are available under the following +license: + +Note: The advertising clause in the license appearing on BSD Unix +files was officially rescinded by the Director of the Office of +Technology Licensing of the University of California on July 22 +1999. He states that clause 3 is "hereby deleted in its entirety." + + * Copyright (c) + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University 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 REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + + ----- + +For all remaining files, the following license applies: + + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * Any copyright notice(s) and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/common/libc/README b/common/libc/README new file mode 100644 index 00000000..de1c3db6 --- /dev/null +++ b/common/libc/README @@ -0,0 +1,8 @@ +This is a subset of klibc (http://www.kernel.org/pub/linux/libs/klibc/) +which is itself a subset of standard C library functions. + +The provided functions are those which can be safely used in the SDK +environment. + +The included code was extracted from klibc version 1.5.15 without any +of the GPL licensed parts. See the LICENSE file for details. diff --git a/common/libc/inc/arm_gcc/compat_attribute.h b/common/libc/inc/arm_gcc/compat_attribute.h new file mode 100644 index 00000000..a6e34f72 --- /dev/null +++ b/common/libc/inc/arm_gcc/compat_attribute.h @@ -0,0 +1,28 @@ + + + +#ifndef _COMPAT_ATTRIBUTE_H_ +#define _COMPAT_ATTRIBUTE_H_ + +#define __DEPRECATED__(x) __attribute__((deprecated(x))) +#define __PACKED__ __attribute__ ((packed)) + +#define __PACKED_START__ +#define __PACKED_END__ __PACKED__ + +#define __UNUSED__ __attribute__((unused)) +#define __MAY_ALIAS__ __attribute__((may_alias)) + +#define __ALIGNED__(y) __attribute__((aligned(y))) +#define __SECTION__(y) __attribute__((section(#y))) + +#define __FORCED_INLINE__ inline __attribute__((always_inline)) +#define __NOINLINE__ __attribute__((noinline)) + +#define __WEAK__ __attribute__((weak)) +#define __INTERRUPT__ __attribute__((interrupt)) +#define __USED__ __attribute__((used)) +#define __NAKED__ __attribute__((naked)) + +#define __VISIBILITY__ __attribute__((visibility("default"))) +#endif /* _COMPAT_ATTRIBUTE_H_ */ diff --git a/common/libc/inc/arm_gcc/compat_compiler.h b/common/libc/inc/arm_gcc/compat_compiler.h new file mode 100644 index 00000000..659944ac --- /dev/null +++ b/common/libc/inc/arm_gcc/compat_compiler.h @@ -0,0 +1,6 @@ + + +#ifndef _COMPAT_COMPILER_H_ +#define _COMPAT_COMPILER_H_ +#endif /* _COMPAT_COMPILER_H_ */ + diff --git a/common/libc/inc/arm_gcc/compat_errno.h b/common/libc/inc/arm_gcc/compat_errno.h new file mode 100644 index 00000000..a40123a4 --- /dev/null +++ b/common/libc/inc/arm_gcc/compat_errno.h @@ -0,0 +1,9 @@ + + +#ifndef _COMPAT_ERRNO_H_ +#define _COMPAT_ERRNO_H_ + + +#include + +#endif /* _COMPAT_ERRNO_H_ */ diff --git a/common/libc/inc/arm_gcc/compat_param.h b/common/libc/inc/arm_gcc/compat_param.h new file mode 100644 index 00000000..cb7ae8fc --- /dev/null +++ b/common/libc/inc/arm_gcc/compat_param.h @@ -0,0 +1,6 @@ +#ifndef _COMPAT_PARAM_H +#define _COMPAT_PARAM_H + +#include /* need this to define BSD */ + +#endif /* _COMPAT_PARAM_H */ diff --git a/common/libc/inc/arm_gcc/compat_time.h b/common/libc/inc/arm_gcc/compat_time.h new file mode 100644 index 00000000..ad6513af --- /dev/null +++ b/common/libc/inc/arm_gcc/compat_time.h @@ -0,0 +1,10 @@ + + + +#ifndef _COMPAT_TIME_H_ +#define _COMPAT_TIME_H_ + + +#include + +#endif /* _COMPAT_TIME_H_ */ diff --git a/common/libc/inc/bits/ctype_base.h b/common/libc/inc/bits/ctype_base.h new file mode 100644 index 00000000..87a497da --- /dev/null +++ b/common/libc/inc/bits/ctype_base.h @@ -0,0 +1,29 @@ + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/common/libc/inc/ctype.h b/common/libc/inc/ctype.h new file mode 100644 index 00000000..f4433195 --- /dev/null +++ b/common/libc/inc/ctype.h @@ -0,0 +1,140 @@ +/* + * ctype.h + * + * This assumes ISO 8859-1, being a reasonable superset of ASCII. + */ + +#ifndef _CTYPE_H +#define _CTYPE_H + +#include +#include + +#define _U (1 << 0) +#define _L (1 << 1) +#define _N (1 << 2) +#define _S (1 << 3) +#define _P (1 << 4) +#define _C (1 << 5) +#define _X (1 << 6) +#define _B (1 << 7) + +/* + * This relies on the following definitions: + * + * cntrl = !print + * alpha = upper|lower + * graph = punct|alpha|digit + * blank = '\t' || ' ' (per POSIX requirement) + */ +enum { + __ctype_upper = _U, + __ctype_lower = _L, + __ctype_digit = _N, + __ctype_xdigit = _S, + __ctype_space = _P, + __ctype_print = _C, + __ctype_punct = _X, + __ctype_cntrl = _B +}; + +__extern int isalnum(int); +__extern int isalpha(int); +__extern int isascii(int); +__extern int isblank(int); +__extern int iscntrl(int); +__extern int isdigit(int); +__extern int isgraph(int); +__extern int islower(int); +__extern int isprint(int); +__extern int ispunct(int); +__extern int isspace(int); +__extern int isupper(int); +__extern int isxdigit(int); +__extern int toupper(int); +__extern int tolower(int); + +extern const unsigned char __ctypes[]; + +__must_inline int __ctype_isalnum(int __c) +{ + return __ctypes[__c + 1] & + (__ctype_upper | __ctype_lower | __ctype_digit); +} + +__must_inline int __ctype_isalpha(int __c) +{ + return __ctypes[__c + 1] & (__ctype_upper | __ctype_lower); +} + +__must_inline int __ctype_isascii(int __c) +{ + return !(__c & ~0x7f); +} + +__must_inline int __ctype_isblank(int __c) +{ + return (__c == '\t') || (__c == ' '); +} + +__must_inline int __ctype_iscntrl(int __c) +{ + return __ctypes[__c + 1] & __ctype_cntrl; +} + +__must_inline int __ctype_isdigit(int __c) +{ + return ((unsigned)__c - '0') <= 9; +} + +__must_inline int __ctype_isgraph(int __c) +{ + return __ctypes[__c + 1] & + (__ctype_upper | __ctype_lower | __ctype_digit | __ctype_punct); +} + +__must_inline int __ctype_islower(int __c) +{ + return __ctypes[__c + 1] & __ctype_lower; +} + +__must_inline int __ctype_isprint(int __c) +{ + return __ctypes[__c + 1] & __ctype_print; +} + +__must_inline int __ctype_ispunct(int __c) +{ + return __ctypes[__c + 1] & __ctype_punct; +} + +__must_inline int __ctype_isspace(int __c) +{ + return __ctypes[__c + 1] & __ctype_space; +} + +__must_inline int __ctype_isupper(int __c) +{ + return __ctypes[__c + 1] & __ctype_upper; +} + +__must_inline int __ctype_isxdigit(int __c) +{ + return __ctypes[__c + 1] & __ctype_xdigit; +} + +/* Note: this is decimal, not hex, to avoid accidental promotion to unsigned */ +#define _toupper(__c) ((__c) & ~32) +#define _tolower(__c) ((__c) | 32) + +__must_inline int __ctype_toupper(int __c) +{ + return __ctype_islower(__c) ? _toupper(__c) : __c; +} + +__must_inline int __ctype_tolower(int __c) +{ + return __ctype_isupper(__c) ? _tolower(__c) : __c; +} + +#endif /* _CTYPE_H */ diff --git a/common/libc/inc/extern.h b/common/libc/inc/extern.h new file mode 100644 index 00000000..47c3e848 --- /dev/null +++ b/common/libc/inc/extern.h @@ -0,0 +1,16 @@ +/* + * klibc/extern.h + */ + +#ifndef _EXTERN_H +#define _EXTERN_H + +#ifdef __cplusplus +#define __extern extern "C" +#else +#define __extern extern +#endif + +#define __alias(x) __attribute__((weak, alias(x))) + +#endif /* _EXTERN_H */ diff --git a/common/libc/inc/fnmatch.h b/common/libc/inc/fnmatch.h new file mode 100644 index 00000000..1a62f778 --- /dev/null +++ b/common/libc/inc/fnmatch.h @@ -0,0 +1,15 @@ +#ifndef _FNMATCH_H +#define _FNMATCH_H + +#include + +#define FNM_NOMATCH 1 + +#define FNM_PATHNAME 1 +#define FNM_FILE_NAME FNM_PATHNAME +#define FNM_NOESCAPE 2 +#define FNM_PERIOD 4 + +__extern int fnmatch(const char *, const char *, int); + +#endif /* _FNMATCH_H */ diff --git a/common/libc/inc/inttypes.h b/common/libc/inc/inttypes.h new file mode 100644 index 00000000..69a73225 --- /dev/null +++ b/common/libc/inc/inttypes.h @@ -0,0 +1,227 @@ +/* + * inttypes.h + */ + +#ifndef _INTTYPES_H +#define _INTTYPES_H + +#include +#include +#include +#include + +static __inline intmax_t imaxabs(intmax_t __n) +{ + return (__n < (intmax_t) 0) ? -__n : __n; +} + +__extern intmax_t strtoimax(const char *, char **, int); +__extern uintmax_t strtoumax(const char *, char **, int); + +/* extensions */ +__extern intmax_t strntoimax(const char *, char **, int, size_t); +__extern uintmax_t strntoumax(const char *, char **, int, size_t); + +#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) + +#define PRId8 "d" +#define PRId16 "d" +#define PRId32 "d" +#define PRId64 __PRI64_RANK "d" + +#define PRIdLEAST8 "d" +#define PRIdLEAST16 "d" +#define PRIdLEAST32 "d" +#define PRIdLEAST64 __PRI64_RANK "d" + +#define PRIdFAST8 "d" +#define PRIdFAST16 __PRIFAST_RANK "d" +#define PRIdFAST32 __PRIFAST_RANK "d" +#define PRIdFAST64 __PRI64_RANK "d" + +#define PRIdMAX __PRI64_RANK "d" +#define PRIdPTR __PRIPTR_RANK "d" + +#define PRIi8 "i" +#define PRIi16 "i" +#define PRIi32 "i" +#define PRIi64 __PRI64_RANK "i" + +#define PRIiLEAST8 "i" +#define PRIiLEAST16 "i" +#define PRIiLEAST32 "i" +#define PRIiLEAST64 __PRI64_RANK "i" + +#define PRIiFAST8 "i" +#define PRIiFAST16 __PRIFAST_RANK "i" +#define PRIiFAST32 __PRIFAST_RANK "i" +#define PRIiFAST64 __PRI64_RANK "i" + +#define PRIiMAX __PRI64_RANK "i" +#define PRIiPTR __PRIPTR_RANK "i" + +#define PRIo8 "o" +#define PRIo16 "o" +#define PRIo32 "o" +#define PRIo64 __PRI64_RANK "o" + +#define PRIoLEAST8 "o" +#define PRIoLEAST16 "o" +#define PRIoLEAST32 "o" +#define PRIoLEAST64 __PRI64_RANK "o" + +#define PRIoFAST8 "o" +#define PRIoFAST16 __PRIFAST_RANK "o" +#define PRIoFAST32 __PRIFAST_RANK "o" +#define PRIoFAST64 __PRI64_RANK "o" + +#define PRIoMAX __PRI64_RANK "o" +#define PRIoPTR __PRIPTR_RANK "o" + +#define PRIu8 "u" +#define PRIu16 "u" +#define PRIu32 "u" +#define PRIu64 __PRI64_RANK "u" + +#define PRIuLEAST8 "u" +#define PRIuLEAST16 "u" +#define PRIuLEAST32 "u" +#define PRIuLEAST64 __PRI64_RANK "u" + +#define PRIuFAST8 "u" +#define PRIuFAST16 __PRIFAST_RANK "u" +#define PRIuFAST32 __PRIFAST_RANK "u" +#define PRIuFAST64 __PRI64_RANK "u" + +#define PRIuMAX __PRI64_RANK "u" +#define PRIuPTR __PRIPTR_RANK "u" + +#define PRIx8 "x" +#define PRIx16 "x" +#define PRIx32 "x" +#define PRIx64 __PRI64_RANK "x" + +#define PRIxLEAST8 "x" +#define PRIxLEAST16 "x" +#define PRIxLEAST32 "x" +#define PRIxLEAST64 __PRI64_RANK "x" + +#define PRIxFAST8 "x" +#define PRIxFAST16 __PRIFAST_RANK "x" +#define PRIxFAST32 __PRIFAST_RANK "x" +#define PRIxFAST64 __PRI64_RANK "x" + +#define PRIxMAX __PRI64_RANK "x" +#define PRIxPTR __PRIPTR_RANK "x" + +#define PRIX8 "X" +#define PRIX16 "X" +#define PRIX32 "X" +#define PRIX64 __PRI64_RANK "X" + +#define PRIXLEAST8 "X" +#define PRIXLEAST16 "X" +#define PRIXLEAST32 "X" +#define PRIXLEAST64 __PRI64_RANK "X" + +#define PRIXFAST8 "X" +#define PRIXFAST16 __PRIFAST_RANK "X" +#define PRIXFAST32 __PRIFAST_RANK "X" +#define PRIXFAST64 __PRI64_RANK "X" + +#define PRIXMAX __PRI64_RANK "X" +#define PRIXPTR __PRIPTR_RANK "X" + +#define SCNd8 "hhd" +#define SCNd16 "hd" +#define SCNd32 "d" +#define SCNd64 __PRI64_RANK "d" + +#define SCNdLEAST8 "hhd" +#define SCNdLEAST16 "hd" +#define SCNdLEAST32 "d" +#define SCNdLEAST64 __PRI64_RANK "d" + +#define SCNdFAST8 "hhd" +#define SCNdFAST16 __PRIFAST_RANK "d" +#define SCNdFAST32 __PRIFAST_RANK "d" +#define SCNdFAST64 __PRI64_RANK "d" + +#define SCNdMAX __PRI64_RANK "d" +#define SCNdPTR __PRIPTR_RANK "d" + +#define SCNi8 "hhi" +#define SCNi16 "hi" +#define SCNi32 "i" +#define SCNi64 __PRI64_RANK "i" + +#define SCNiLEAST8 "hhi" +#define SCNiLEAST16 "hi" +#define SCNiLEAST32 "i" +#define SCNiLEAST64 __PRI64_RANK "i" + +#define SCNiFAST8 "hhi" +#define SCNiFAST16 __PRIFAST_RANK "i" +#define SCNiFAST32 __PRIFAST_RANK "i" +#define SCNiFAST64 __PRI64_RANK "i" + +#define SCNiMAX __PRI64_RANK "i" +#define SCNiPTR __PRIPTR_RANK "i" + +#define SCNo8 "hho" +#define SCNo16 "ho" +#define SCNo32 "o" +#define SCNo64 __PRI64_RANK "o" + +#define SCNoLEAST8 "hho" +#define SCNoLEAST16 "ho" +#define SCNoLEAST32 "o" +#define SCNoLEAST64 __PRI64_RANK "o" + +#define SCNoFAST8 "hho" +#define SCNoFAST16 __PRIFAST_RANK "o" +#define SCNoFAST32 __PRIFAST_RANK "o" +#define SCNoFAST64 __PRI64_RANK "o" + +#define SCNoMAX __PRI64_RANK "o" +#define SCNoPTR __PRIPTR_RANK "o" + +#define SCNu8 "hhu" +#define SCNu16 "hu" +#define SCNu32 "u" +#define SCNu64 __PRI64_RANK "u" + +#define SCNuLEAST8 "hhu" +#define SCNuLEAST16 "hu" +#define SCNuLEAST32 "u" +#define SCNuLEAST64 __PRI64_RANK "u" + +#define SCNuFAST8 "hhu" +#define SCNuFAST16 __PRIFAST_RANK "u" +#define SCNuFAST32 __PRIFAST_RANK "u" +#define SCNuFAST64 __PRI64_RANK "u" + +#define SCNuMAX __PRI64_RANK "u" +#define SCNuPTR __PRIPTR_RANK "u" + +#define SCNx8 "hhx" +#define SCNx16 "hx" +#define SCNx32 "x" +#define SCNx64 __PRI64_RANK "x" + +#define SCNxLEAST8 "hhx" +#define SCNxLEAST16 "hx" +#define SCNxLEAST32 "x" +#define SCNxLEAST64 __PRI64_RANK "x" + +#define SCNxFAST8 "hhx" +#define SCNxFAST16 __PRIFAST_RANK "x" +#define SCNxFAST32 __PRIFAST_RANK "x" +#define SCNxFAST64 __PRI64_RANK "x" + +#define SCNxMAX __PRI64_RANK "x" +#define SCNxPTR __PRIPTR_RANK "x" + +#endif + +#endif /* _INTTYPES_H */ diff --git a/common/libc/inc/libc_compiler.h b/common/libc/inc/libc_compiler.h new file mode 100644 index 00000000..7e59ed42 --- /dev/null +++ b/common/libc/inc/libc_compiler.h @@ -0,0 +1,109 @@ +/* + * libc compiler.h + * + * Various compiler features + */ + +#ifndef _LIBC_COMPILER_H +#define _LIBC_COMPILER_H + +/* Specific calling conventions */ +/* __cdecl is used when we want varadic and non-varadic functions to have + the same binary calling convention. */ +#ifdef __i386__ +# ifdef __GNUC__ +# define __cdecl __attribute__((cdecl,regparm(0))) +# else + /* Most other C compilers have __cdecl as a keyword */ +# endif +#else +# define __cdecl /* Meaningless on non-i386 */ +#endif + +/* How to declare a function that *must* be inlined */ +/* Use "extern inline" even in the gcc3+ case to avoid warnings in ctype.h */ +#ifdef __GNUC__ +# if __GNUC__ >= 3 +# ifdef __GNUC_STDC_INLINE__ +# define __must_inline extern __inline__ \ + __attribute__((__gnu_inline__,__always_inline__)) +# else +# define __must_inline extern __inline__ __attribute__((__always_inline__)) +# endif +# else +# define __must_inline extern __inline__ +# endif +#else +# define __must_inline __inline /* Just hope this works... */ +# define __inline inline +#endif + +/* How to declare a function that does not return */ +#ifdef __GNUC__ +# define __noreturn void __attribute__((noreturn)) +#else +# define __noreturn void +#endif + +/* "const" function: + + Many functions do not examine any values except their arguments, + and have no effects except the return value. Basically this is + just slightly more strict class than the `pure' attribute above, + since function is not allowed to read global memory. + + Note that a function that has pointer arguments and examines the + data pointed to must _not_ be declared `const'. Likewise, a + function that calls a non-`const' function usually must not be + `const'. It does not make sense for a `const' function to return + `void'. +*/ +#ifdef __GNUC__ +# define __constfunc __attribute__((const)) +#else +# define __constfunc +#endif +#undef __attribute_const__ +#define __attribute_const__ __constfunc + +/* "pure" function: + + Many functions have no effects except the return value and their + return value depends only on the parameters and/or global + variables. Such a function can be subject to common subexpression + elimination and loop optimization just as an arithmetic operator + would be. These functions should be declared with the attribute + `pure'. +*/ +#ifdef __GNUC__ +# define __purefunc __attribute__((pure)) +#else +# define __purefunc +#endif +#undef __attribute_pure__ +#define __attribute_pure__ __purefunc + +/* Format attribute */ +#ifdef __GNUC__ +# define __formatfunc(t,f,a) __attribute__((format(t,f,a))) +#else +# define __formatfunc(t,f,a) +#endif + +/* malloc() function (returns unaliased pointer) */ +#if defined(__GNUC__) && (__GNUC__ >= 3) +# define __mallocfunc __attribute__((malloc)) +#else +# define __mallocfunc +#endif + +/* likely/unlikely */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) +# define __likely(x) __builtin_expect(!!(x), 1) +# define __unlikely(x) __builtin_expect(!!(x), 0) +#else +# define __likely(x) (!!(x)) +# define __unlikely(x) (!!(x)) +#endif + +#endif diff --git a/common/libc/inc/limits.h b/common/libc/inc/limits.h new file mode 100644 index 00000000..69ed4aaa --- /dev/null +++ b/common/libc/inc/limits.h @@ -0,0 +1,53 @@ +/* + * limits.h + */ + +#ifndef _LIMITS_H +#define _LIMITS_H + +#define CHAR_BIT 8 +#define SHRT_BIT 16 +#define INT_BIT 32 +#define LONGLONG_BIT 64 + +#define SCHAR_MIN (-128) +#define SCHAR_MAX 127 +#define UCHAR_MAX 255 + +#ifdef __CHAR_UNSIGNED__ +# define CHAR_MIN 0 +# define CHAR_MAX UCHAR_MAX +#else +# define CHAR_MIN SCHAR_MIN +# define CHAR_MAX SCHAR_MAX +#endif + +#define SHRT_MIN (-32768) +#define SHRT_MAX 32767 +#define USHRT_MAX 65535 + + +#define INT_MIN (-2147483647-1) +#define INT_MAX 2147483647 +#define UINT_MAX 4294967295U + +#if __riscv_xlen == 64 +# define LONG_BIT 64 + +# define LONG_MIN (-9223372036854775807LL-1) +# define LONG_MAX 9223372036854775807LL +# define ULONG_MAX 18446744073709551615ULL +#else +# define LONG_BIT 32 + +# define LONG_MIN (-2147483647L-1) +# define LONG_MAX 2147483647L +# define ULONG_MAX 4294967295UL +#endif + +#define LONGLONG_MIN (-9223372036854775807LL-1) +#define LONGLONG_MAX 9223372036854775807LL +#define ULONGLONG_MAX 18446744073709551615ULL + + +#endif /* _LIMITS_H */ diff --git a/common/libc/inc/stdarg.h b/common/libc/inc/stdarg.h new file mode 100644 index 00000000..cc324b82 --- /dev/null +++ b/common/libc/inc/stdarg.h @@ -0,0 +1,14 @@ +/* + * stdarg.h + * + * This is just a wrapper for the gcc one, but defines va_copy() + * even if gcc doesn't. + */ + +/* Note: the _STDARG_H macro belongs to the gcc header... */ +#include_next + +/* Older gcc considers this an extension, so it's double underbar only */ +#ifndef va_copy +#define va_copy(d,s) __va_copy(d,s) +#endif diff --git a/common/libc/inc/stdbool.h b/common/libc/inc/stdbool.h new file mode 100644 index 00000000..ad98632b --- /dev/null +++ b/common/libc/inc/stdbool.h @@ -0,0 +1,14 @@ +/* + * stdbool.h + */ + +#ifndef _STDBOOL_H +#define _STDBOOL_H + +#ifndef __cplusplus +#define bool _Bool +#define true 1 +#define false 0 +#endif + +#endif /* _STDBOOL_H */ diff --git a/common/libc/inc/stddef.h b/common/libc/inc/stddef.h new file mode 100644 index 00000000..c607e692 --- /dev/null +++ b/common/libc/inc/stddef.h @@ -0,0 +1,29 @@ +/* + * stddef.h + */ + +#ifndef _STDDEF_H +#define _STDDEF_H + +#define _SIZE_T +typedef unsigned long size_t; + +#define _PTRDIFF_T +typedef signed int ptrdiff_t; + +#ifndef __ICCARM__ +#define _WINT_T +typedef signed int wint_t; +#endif + +#undef NULL +#ifdef __cplusplus +# define NULL 0 +#else +# define NULL ((void *)0) +#endif + +#undef offsetof +#define offsetof(t,m) ((size_t)&((t *)0)->m) + +#endif /* _STDDEF_H */ diff --git a/common/libc/inc/stdint.h b/common/libc/inc/stdint.h new file mode 100644 index 00000000..56c97cef --- /dev/null +++ b/common/libc/inc/stdint.h @@ -0,0 +1,163 @@ +/* + * stdint.h + */ + +#ifndef _STDINT_H +#define _STDINT_H + +typedef signed char int8_t; +typedef short int int16_t; +typedef int int32_t; +typedef long long int int64_t; + +typedef unsigned char uint8_t; +typedef unsigned short int uint16_t; +typedef unsigned int uint32_t; +typedef unsigned long long int uint64_t; + +typedef int int_fast16_t; +typedef int int_fast32_t; + +typedef unsigned int uint_fast16_t; +typedef unsigned int uint_fast32_t; + +#if __riscv_xlen == 32 + typedef int intptr_t; + typedef unsigned int uintptr_t; + +#define __INT64_C(c) c ## LL +#define __UINT64_C(c) c ## ULL +#elif __riscv_xlen == 64 + typedef long long intptr_t; + typedef unsigned long long uintptr_t; +#else +# error "unsupported __riscv_xlen" +#endif + +#define __PRI64_RANK "ll" +#define __PRIFAST_RANK "" +#define __PRIPTR_RANK "" +typedef int8_t int_least8_t; +typedef int16_t int_least16_t; +typedef int32_t int_least32_t; +typedef int64_t int_least64_t; + +typedef uint8_t uint_least8_t; +typedef uint16_t uint_least16_t; +typedef uint32_t uint_least32_t; +typedef uint64_t uint_least64_t; + +typedef int8_t int_fast8_t; +typedef int64_t int_fast64_t; + +typedef uint8_t uint_fast8_t; +typedef uint64_t uint_fast64_t; + +typedef int64_t intmax_t; +typedef uint64_t uintmax_t; + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) + +#define INT8_MIN (-128) +#define INT16_MIN (-32768) +#define INT32_MIN (-2147483647-1) +#define INT64_MIN (__INT64_C(-9223372036854775807)-1) + +#define INT8_MAX (127) +#define INT16_MAX (32767) +#define INT32_MAX (2147483647) +#define INT64_MAX (__INT64_C(9223372036854775807)) + +#define UINT8_MAX (255U) +#define UINT16_MAX (65535U) +#define UINT32_MAX (4294967295U) +#define UINT64_MAX (__UINT64_C(18446744073709551615)) + +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST64_MIN INT64_MIN + +#define INT_LEAST8_MAX INT8_MAX +#define INT_LEAST16_MAX INT16_MAX +#define INT_LEAST32_MAX INT32_MAX +#define INT_LEAST64_MAX INT64_MAX + +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX + +#define INT_FAST8_MIN INT8_MIN +#define INT_FAST64_MIN INT64_MIN + +#define INT_FAST8_MAX INT8_MAX +#define INT_FAST64_MAX INT64_MAX + +#define UINT_FAST8_MAX UINT8_MAX +#define UINT_FAST64_MAX UINT64_MAX + +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX + +#define INTPTR_MIN INT32_MIN +#define INTPTR_MAX INT32_MAX +#define UINTPTR_MAX UINT32_MAX + +#define PTRDIFF_MIN INT32_MIN +#define PTRDIFF_MAX INT32_MAX + +#endif + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) + +#define INT8_C(c) c +#define INT16_C(c) c +#define INT32_C(c) c +#define INT64_C(c) __INT64_C(c) + +#define UINT8_C(c) c ## U +#define UINT16_C(c) c ## U +#define UINT32_C(c) c ## U +#define UINT64_C(c) __UINT64_C(c) + +#define INT_LEAST8_C(c) INT8_C(c) +#define INT_LEAST16_C(c) INT16_C(c) +#define INT_LEAST32_C(c) INT32_C(c) +#define INT_LEAST64_C(c) INT64_C(c) + +#define UINT_LEAST8_C(c) UINT8_C(c) +#define UINT_LEAST16_C(c) UINT16_C(c) +#define UINT_LEAST32_C(c) UINT32_C(c) +#define UINT_LEAST64_C(c) UINT64_C(c) + +#define INT_FAST8_C(c) INT8_C(c) +#define INT_FAST64_C(c) INT64_C(c) + +#define UINT_FAST8_C(c) UINT8_C(c) +#define UINT_FAST64_C(c) UINT64_C(c) + +#define INTMAX_C(c) INT64_C(c) +#define UINTMAX_C(c) UINT64_C(c) + +#define INT_FAST16_C(c) INT32_C(c) +#define INT_FAST32_C(c) INT32_C(c) + +#define UINT_FAST16_C(c) UINT32_C(c) +#define UINT_FAST32_C(c) UINT32_C(c) + +#define INTPTR_C(c) INT32_C(c) +#define UINTPTR_C(c) UINT32_C(c) +#define PTRDIFF_C(c) INT32_C(c) + +#endif + +#endif /* _STDINT_H */ diff --git a/common/libc/inc/stdio.h b/common/libc/inc/stdio.h new file mode 100644 index 00000000..3ac51bf1 --- /dev/null +++ b/common/libc/inc/stdio.h @@ -0,0 +1,24 @@ +/* + * stdio.h + */ + +#ifndef _STDIO_H +#define _STDIO_H + +#include +#include +#include + +/* The actual IO functions are not included. */ +#if __riscv_xlen == 64 +# include_next +#else +__extern int sprintf(char *, const char *, ...); +__extern int vsprintf(char *, const char *, va_list); +__extern int snprintf(char *__restrict, size_t, const char *__restrict, ...); +__extern int vsnprintf(char *, size_t, const char *, va_list); +__extern int sscanf(const char *, const char *, ...); +__extern int vsscanf(const char *, const char *, va_list); +#endif /* __riscv_xlen == 64 */ + +#endif /* _STDIO_H */ diff --git a/common/libc/inc/stdlib.h b/common/libc/inc/stdlib.h new file mode 100644 index 00000000..a6ba2e01 --- /dev/null +++ b/common/libc/inc/stdlib.h @@ -0,0 +1,62 @@ +/* + * stdlib.h + */ + +#ifndef _STDLIB_H +#define _STDLIB_H + +#include +#include +#include + +#define EXIT_FAILURE 1 +#define EXIT_SUCCESS 0 + +static __inline int abs(int __n) +{ + return (__n < 0) ? -__n : __n; +} + +#if __riscv_xlen == 64 +# include_next +__extern long jrand48(unsigned short *); +#else +__extern int atoi(const char *); +__extern double atof(const char *); +__extern long atol(const char *); +__extern long long atoll(const char *); +static __inline long labs(long __n) +{ + return (__n < 0L) ? -__n : __n; +} + +static __inline long long llabs(long long __n) +{ + return (__n < 0LL) ? -__n : __n; +} + +__extern long strtol(const char *, char **, int); +__extern long long strtoll(const char *, char **, int); +__extern unsigned long strtoul(const char *, char **, int); +__extern unsigned long long strtoull(const char *, char **, int); + +typedef int (*__comparefunc_t) (const void *, const void *); +__extern void *bsearch(const void *, const void *, size_t, size_t, + __comparefunc_t); +__extern void qsort(void *, size_t, size_t, __comparefunc_t); + +__extern long jrand48(unsigned short *); +__extern long mrand48(void); +__extern long nrand48(unsigned short *); +__extern long lrand48(void); +__extern unsigned short *seed48(unsigned short *); +__extern void srand48(long); + +#define RAND_MAX 0x7fffffff +__extern int rand(void); +__extern void srand(unsigned int __s); +__extern long random(void); +__extern void srandom(unsigned int __s); +#endif /* __riscv_xlen == 64 */ + +#endif /* _STDLIB_H */ diff --git a/common/libc/inc/string.h b/common/libc/inc/string.h new file mode 100644 index 00000000..3785ab7f --- /dev/null +++ b/common/libc/inc/string.h @@ -0,0 +1,52 @@ +/* + * string.h + */ + +#ifndef _STRING_H +#define _STRING_H + +#include +#include +#include +#if __riscv_xlen == 64 +__extern void memswap(void *m1, void *m2, size_t n); +__extern void *memmem(const void *haystack, size_t n, const void *needle, size_t m); +__extern char *strtok_r(char *, const char *, char **); +__extern char *strsep(char **, const char *); +# include_next +#else +__extern void *memccpy(void *, const void *, int, size_t); +__extern void *memchr(const void *, int, size_t); +__extern void *memrchr(const void *, int, size_t); +__extern int memcmp(const void *, const void *, size_t); +__extern void *memcpy(void *, const void *, size_t); +__extern void *memmove(void *, const void *, size_t); +__extern void *memset(void *, int, size_t); +__extern void *memmem(const void *, size_t, const void *, size_t); +__extern void memswap(void *, void *, size_t); +__extern void bzero(void *, size_t); +__extern int strcasecmp(const char *, const char *); +__extern int strncasecmp(const char *, const char *, size_t); +__extern char *strcat(char *, const char *); +__extern char *strchr(const char *, int); +__extern char *strrchr(const char *, int); +__extern int strcmp(const char *, const char *); +__extern char *strcpy(char *, const char *); +__extern size_t strcspn(const char *, const char *); +__extern size_t strlen(const char *); +__extern size_t strnlen(const char *, size_t); +__extern char *strncat(char *, const char *, size_t); +__extern size_t strlcat(char *, const char *, size_t); +__extern int strncmp(const char *, const char *, size_t); +__extern char *strncpy(char *, const char *, size_t); +__extern size_t strlcpy(char *, const char *, size_t); +__extern char *strpbrk(const char *, const char *); +__extern char *strsep(char **, const char *); +__extern size_t strspn(const char *, const char *); +__extern char *strstr(const char *, const char *); +__extern char *strtok(char *, const char *); +__extern char *strtok_r(char *, const char *, char **); +char *index(const char *s, int c); +#endif /* __riscv_xlen == 64 */ + +#endif /* _STRING_H */ diff --git a/common/libc/inc/sys/types.h b/common/libc/inc/sys/types.h new file mode 100644 index 00000000..4e776586 --- /dev/null +++ b/common/libc/inc/sys/types.h @@ -0,0 +1,97 @@ +/* + * sys/types.h + */ + +#ifndef _SYS_TYPES_H +#define _SYS_TYPES_H + +#include +#include + +#define _SSIZE_T +typedef ptrdiff_t ssize_t; + +#undef NULL +#if defined(__cplusplus) +#define NULL 0 +#else +#define NULL ((void *)0) +#endif + +typedef int daddr_t; +typedef char *caddr_t; + +/* BSD */ +typedef unsigned char u_char; +typedef unsigned short u_short; +typedef unsigned int u_int; +typedef unsigned long u_long; + +/* SysV */ +typedef unsigned char unchar; +typedef unsigned short ushort; +typedef unsigned int uint; +typedef unsigned long ulong; + +/* More BSD */ +typedef uint8_t u_int8_t; +typedef uint16_t u_int16_t; +typedef uint32_t u_int32_t; +typedef uint64_t u_int64_t; + +/* Time related */ +typedef signed int sbintime_t; + +/* Required by cyassl build */ +typedef long off_t; +typedef short dev_t; +typedef unsigned short ino_t; +typedef unsigned short nlink_t; +typedef unsigned short uid_t; +typedef unsigned short mode_t; +typedef unsigned short gid_t; +typedef signed char pid_t; +typedef unsigned long useconds_t; + +/* + * Some headers seem to require this... + */ +#ifndef BITS_PER_LONG +# define BITS_PER_LONG 32 +#endif + +/* + * The following FD_SET macros were added to solve the issue where the + * lwip/sockets.h saw different sys/types.h files when built, and when its + * header files sys/sockets file was included by the SDK. + */ +/* + * Select uses bit masks of file descriptors in longs. + * These macros manipulate such bit fields (the filesystem macros use chars). + * FD_SETSIZE may be defined by the user, but the default here + * should be >= NOFILE (param.h). + */ +#ifndef FD_SET +#ifndef FD_SETSIZE +#define FD_SETSIZE 64 +#endif +#define FD_SET(n, p) ((p)->fd_bits[(n)/8] |= (1 << ((n) & 7))) +#define FD_CLR(n, p) ((p)->fd_bits[(n)/8] &= ~(1 << ((n) & 7))) +#define FD_ISSET(n, p) ((p)->fd_bits[(n)/8] & (1 << ((n) & 7))) +#define FD_ZERO(p) memset((void *)(p), 0, sizeof(*(p))) + +typedef struct fd_set { + unsigned char fd_bits[(FD_SETSIZE + 7) / 8]; +} fd_set; +#endif /* FD_SET */ + +#ifndef __ICCARM__ +/* wmsdk: Added from sys/times.h and machine/types.h */ +#define _CLOCK_T_ unsigned long /* clock() */ +#ifndef __clock_t_defined +typedef _CLOCK_T_ clock_t; +#define __clock_t_defined +#endif +#endif + +#endif /* _SYS_TYPES_H */ diff --git a/common/libc/src/atof.c b/common/libc/src/atof.c new file mode 100644 index 00000000..97b074d9 --- /dev/null +++ b/common/libc/src/atof.c @@ -0,0 +1,102 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * atof.c + * + * The atof() function + */ + +#include +#include +#include +#include +#include + +static inline int digitval(int ch) +{ + if (ch >= '0' && ch <= '9') { + return ch - '0'; + } else if (ch >= 'A' && ch <= 'Z') { + return ch - 'A' + 10; + } else if (ch >= 'a' && ch <= 'z') { + return ch - 'a' + 10; + } else { + return -1; + } +} + +double strntof(const char *nptr, char **endptr, int base, size_t n) +{ + int minus = 0; + double v = 0.0, m = 0.0, divisor = 1.0; + int d; + + while (n && isspace((unsigned char)*nptr)) { + nptr++; + n--; + } + + /* Single optional + or - */ + if (n) { + char c = *nptr; + if (c == '-' || c == '+') { + minus = (c == '-'); + nptr++; + n--; + } + } + + if (base == 0) { + if (n >= 2 && nptr[0] == '0' && + (nptr[1] == 'x' || nptr[1] == 'X')) { + n -= 2; + nptr += 2; + base = 16; + } else if (n >= 1 && nptr[0] == '0') { + n--; + nptr++; + base = 8; + } else { + base = 10; + } + } else if (base == 16) { + if (n >= 2 && nptr[0] == '0' && + (nptr[1] == 'x' || nptr[1] == 'X')) { + n -= 2; + nptr += 2; + } + } + + while (n && (d = digitval(*nptr)) >= 0 && d < base) { + v = v * base + d; + n--; + nptr++; + } + + if (*nptr == '.') { + n--; + nptr++; + while (n && (d = digitval(*nptr)) >= 0 && d < base) { + m = m * base + d; + n--; + nptr++; + divisor *= 10.0; + } + } + + if (endptr) + *endptr = (char *)nptr; + + v = v + (m / divisor); + + return minus ? -v : v; +} + + +double atof(const char *nptr) +{ + return strntof(nptr, NULL, 0, strlen(nptr)); +} + diff --git a/common/libc/src/atoi.c b/common/libc/src/atoi.c new file mode 100644 index 00000000..fd655c3d --- /dev/null +++ b/common/libc/src/atoi.c @@ -0,0 +1,7 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#define TYPE int +#define NAME atoi +#include "atox.c" diff --git a/common/libc/src/atol.c b/common/libc/src/atol.c new file mode 100644 index 00000000..36f331ab --- /dev/null +++ b/common/libc/src/atol.c @@ -0,0 +1,7 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#define TYPE long +#define NAME atol +#include "atox.c" diff --git a/common/libc/src/atoll.c b/common/libc/src/atoll.c new file mode 100644 index 00000000..25df79e1 --- /dev/null +++ b/common/libc/src/atoll.c @@ -0,0 +1,3 @@ +#define TYPE long long +#define NAME atoll +#include "atox.c" diff --git a/common/libc/src/atox.c b/common/libc/src/atox.c new file mode 100644 index 00000000..9f95d5d2 --- /dev/null +++ b/common/libc/src/atox.c @@ -0,0 +1,19 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * atox.c + * + * atoi(), atol(), atoll() + */ + +#include +#include +#include +//#include + +TYPE NAME(const char *nptr) +{ + return (TYPE) strntoumax(nptr, (char **)NULL, 10, ~(size_t) 0); +} diff --git a/common/libc/src/bsearch.c b/common/libc/src/bsearch.c new file mode 100644 index 00000000..69c3b405 --- /dev/null +++ b/common/libc/src/bsearch.c @@ -0,0 +1,31 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * bsearch.c + */ + +#include + +void *bsearch(const void *key, const void *base, size_t nmemb, + size_t size, int (*cmp) (const void *, const void *)) +{ + while (nmemb) { + size_t mididx = nmemb / 2; + const void *midobj = (const unsigned char *) base + + mididx * size; + int diff = cmp(key, midobj); + + if (diff == 0) + return (void *)midobj; + + if (diff > 0) { + base = (const unsigned char *) midobj + size; + nmemb -= mididx + 1; + } else + nmemb = mididx; + } + + return NULL; +} diff --git a/common/libc/src/common.c b/common/libc/src/common.c new file mode 100644 index 00000000..b8834be4 --- /dev/null +++ b/common/libc/src/common.c @@ -0,0 +1,25 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +//#include + +void __assert_func(const char *file, int line, + const char *func, const char *failedexpr) +{ +#if 0 + printf("assertion \"%s\" failed: file \"%s\", line %d%s%s\n", + failedexpr, file, line, func ? ", function: " : "", + func ? func : ""); + + /* Ensure that nothing runs after this */ + while (1) + ; +#endif +} + +float strtof(const char *nptr, char **endptr) +{ +// printf("Float print not supported yet!\r\n"); + return 0; +} diff --git a/common/libc/src/ctype_isalnum.c b/common/libc/src/ctype_isalnum.c new file mode 100644 index 00000000..201e9352 --- /dev/null +++ b/common/libc/src/ctype_isalnum.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(isalnum) diff --git a/common/libc/src/ctype_isalpha.c b/common/libc/src/ctype_isalpha.c new file mode 100644 index 00000000..6a7e70c4 --- /dev/null +++ b/common/libc/src/ctype_isalpha.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(isalpha) diff --git a/common/libc/src/ctype_isascii.c b/common/libc/src/ctype_isascii.c new file mode 100644 index 00000000..d56c8a95 --- /dev/null +++ b/common/libc/src/ctype_isascii.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(isascii) diff --git a/common/libc/src/ctype_isblank.c b/common/libc/src/ctype_isblank.c new file mode 100644 index 00000000..4dcc47a2 --- /dev/null +++ b/common/libc/src/ctype_isblank.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(isblank) diff --git a/common/libc/src/ctype_iscntrl.c b/common/libc/src/ctype_iscntrl.c new file mode 100644 index 00000000..98eda158 --- /dev/null +++ b/common/libc/src/ctype_iscntrl.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(iscntrl) diff --git a/common/libc/src/ctype_isdigit.c b/common/libc/src/ctype_isdigit.c new file mode 100644 index 00000000..222c6006 --- /dev/null +++ b/common/libc/src/ctype_isdigit.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(isdigit) diff --git a/common/libc/src/ctype_isgraph.c b/common/libc/src/ctype_isgraph.c new file mode 100644 index 00000000..8b417663 --- /dev/null +++ b/common/libc/src/ctype_isgraph.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(isgraph) diff --git a/common/libc/src/ctype_islower.c b/common/libc/src/ctype_islower.c new file mode 100644 index 00000000..796205c2 --- /dev/null +++ b/common/libc/src/ctype_islower.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(islower) diff --git a/common/libc/src/ctype_isprint.c b/common/libc/src/ctype_isprint.c new file mode 100644 index 00000000..495d8f5d --- /dev/null +++ b/common/libc/src/ctype_isprint.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(isprint) diff --git a/common/libc/src/ctype_ispunct.c b/common/libc/src/ctype_ispunct.c new file mode 100644 index 00000000..97dc64f2 --- /dev/null +++ b/common/libc/src/ctype_ispunct.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(ispunct) diff --git a/common/libc/src/ctype_isspace.c b/common/libc/src/ctype_isspace.c new file mode 100644 index 00000000..2b3b5dc0 --- /dev/null +++ b/common/libc/src/ctype_isspace.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(isspace) diff --git a/common/libc/src/ctype_isupper.c b/common/libc/src/ctype_isupper.c new file mode 100644 index 00000000..f6f7173b --- /dev/null +++ b/common/libc/src/ctype_isupper.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(isupper) diff --git a/common/libc/src/ctype_isxdigit.c b/common/libc/src/ctype_isxdigit.c new file mode 100644 index 00000000..9b4db7c6 --- /dev/null +++ b/common/libc/src/ctype_isxdigit.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(isxdigit) diff --git a/common/libc/src/ctype_tolower.c b/common/libc/src/ctype_tolower.c new file mode 100644 index 00000000..7a5fd834 --- /dev/null +++ b/common/libc/src/ctype_tolower.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(tolower) diff --git a/common/libc/src/ctype_toupper.c b/common/libc/src/ctype_toupper.c new file mode 100644 index 00000000..56878d6f --- /dev/null +++ b/common/libc/src/ctype_toupper.c @@ -0,0 +1,6 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include "ctypefunc.h" +CTYPEFUNC(toupper) diff --git a/common/libc/src/ctypefunc.h b/common/libc/src/ctypefunc.h new file mode 100644 index 00000000..f9e247df --- /dev/null +++ b/common/libc/src/ctypefunc.h @@ -0,0 +1,13 @@ +/* + * ctype/ctype.h + * + * Common header for out-of-line ctype functions + */ + +#define __CTYPE_NO_INLINE +#include + +#define CTYPEFUNC(X) \ + int X(int c) { \ + return __ctype_##X(c); \ + } diff --git a/common/libc/src/ctypes.c b/common/libc/src/ctypes.c new file mode 100644 index 00000000..45754480 --- /dev/null +++ b/common/libc/src/ctypes.c @@ -0,0 +1,288 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * ctypes.c + * + * This is the array that defines classes. + * This assumes ISO 8859-1. + */ + +#include + +const unsigned char __ctypes[257] = { + 0, /* EOF */ + + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl | __ctype_space, /* BS */ + __ctype_cntrl | __ctype_space, /* TAB */ + __ctype_cntrl | __ctype_space, /* LF */ + __ctype_cntrl | __ctype_space, /* VT */ + __ctype_cntrl | __ctype_space, /* FF */ + __ctype_cntrl | __ctype_space, /* CR */ + __ctype_cntrl, /* control character */ + + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + + __ctype_print | __ctype_space, /* space */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + + __ctype_print | __ctype_digit | __ctype_xdigit, /* digit */ + __ctype_print | __ctype_digit | __ctype_xdigit, /* digit */ + __ctype_print | __ctype_digit | __ctype_xdigit, /* digit */ + __ctype_print | __ctype_digit | __ctype_xdigit, /* digit */ + __ctype_print | __ctype_digit | __ctype_xdigit, /* digit */ + __ctype_print | __ctype_digit | __ctype_xdigit, /* digit */ + __ctype_print | __ctype_digit | __ctype_xdigit, /* digit */ + __ctype_print | __ctype_digit | __ctype_xdigit, /* digit */ + __ctype_print | __ctype_digit | __ctype_xdigit, /* digit */ + __ctype_print | __ctype_digit | __ctype_xdigit, /* digit */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_upper | __ctype_xdigit, /* A-F */ + __ctype_print | __ctype_upper | __ctype_xdigit, /* A-F */ + __ctype_print | __ctype_upper | __ctype_xdigit, /* A-F */ + __ctype_print | __ctype_upper | __ctype_xdigit, /* A-F */ + __ctype_print | __ctype_upper | __ctype_xdigit, /* A-F */ + __ctype_print | __ctype_upper | __ctype_xdigit, /* A-F */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_upper, /* G-Z */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_lower | __ctype_xdigit, /* a-f */ + __ctype_print | __ctype_lower | __ctype_xdigit, /* a-f */ + __ctype_print | __ctype_lower | __ctype_xdigit, /* a-f */ + __ctype_print | __ctype_lower | __ctype_xdigit, /* a-f */ + __ctype_print | __ctype_lower | __ctype_xdigit, /* a-f */ + __ctype_print | __ctype_lower | __ctype_xdigit, /* a-f */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_lower, /* g-z */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_cntrl, /* control character */ + + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + __ctype_cntrl, /* control character */ + + __ctype_print | __ctype_space, /* NBSP */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_punct, /* punctuation */ + + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_upper, /* upper accented */ + __ctype_print | __ctype_lower, /* lower accented */ + + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_punct, /* punctuation */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ + __ctype_print | __ctype_lower, /* lower accented */ +}; diff --git a/common/libc/src/fnmatch.c b/common/libc/src/fnmatch.c new file mode 100644 index 00000000..a7773308 --- /dev/null +++ b/common/libc/src/fnmatch.c @@ -0,0 +1,76 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * fnmatch.c + * + * Original implementation by Kay Sievers, modified by H. Peter Anvin. + */ + +#include + +int fnmatch(const char *p, const char *s, int flags) +{ + if (flags & FNM_PATHNAME && *s == '/') + return (*p != '/') || fnmatch(p+1, s+1, flags); + if (flags & FNM_PERIOD && *s == '.') + return (*p != '.') || fnmatch(p+1, s+1, flags); + + flags &= ~FNM_PERIOD; /* Only applies at beginning */ + + if (!(flags & FNM_NOESCAPE) && *p == '\\') { + p++; + return (*p != *s) || fnmatch(p+1, s+1, flags); + } + + if (*s == '\0') { + while (*p == '*') + p++; + return (*p != '\0'); + } + + switch (*p) { + case '[': + { + int not_mark = 0; + p++; + if (*p == '!') { + not_mark = 1; + p++; + } + while ((*p != '\0') && (*p != ']')) { + int match = 0; + if (p[1] == '-') { + if ((*s >= *p) && (*s <= p[2])) + match = 1; + p += 3; + } else { + match = (*p == *s); + p++; + } + if (match ^ not_mark) { + while ((*p != '\0') && (*p != ']')) + p++; + if (*p == ']') + return fnmatch(p+1, s+1, flags); + } + } + } + break; + case '*': + if (fnmatch(p, s+1, flags)) + return fnmatch(p+1, s, flags); + return 0; + case '\0': + if (*s == '\0') { + return 0; + } + break; + default: + if ((*p == *s) || (*p == '?')) + return fnmatch(p+1, s+1, flags); + break; + } + return 1; +} diff --git a/common/libc/src/jrand48.c b/common/libc/src/jrand48.c new file mode 100644 index 00000000..f9c12179 --- /dev/null +++ b/common/libc/src/jrand48.c @@ -0,0 +1,28 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * jrand48.c + */ + +#include +#include + +long jrand48(unsigned short xsubi[3]) +{ + uint64_t x; + + /* The xsubi[] array is littleendian by spec */ + x = (uint64_t) (uint16_t) xsubi[0] + + ((uint64_t) (uint16_t) xsubi[1] << 16) + + ((uint64_t) (uint16_t) xsubi[2] << 32); + + x = (0x5deece66dULL * x) + 0xb; + + xsubi[0] = (unsigned short)(uint16_t) x; + xsubi[1] = (unsigned short)(uint16_t) (x >> 16); + xsubi[2] = (unsigned short)(uint16_t) (x >> 32); + + return (long)(int32_t) (x >> 16); +} diff --git a/common/libc/src/lrand48.c b/common/libc/src/lrand48.c new file mode 100644 index 00000000..7c4f5235 --- /dev/null +++ b/common/libc/src/lrand48.c @@ -0,0 +1,27 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * lrand48.c + */ + +#include +#include + +unsigned short __rand48_seed[3]; /* Common with mrand48.c, srand48.c */ + +long lrand48(void) +{ + return (uint32_t) jrand48(__rand48_seed) >> 1; +} + +int rand(void) +{ + return (int)lrand48(); +} + +long random(void) +{ + return lrand48(); +} diff --git a/common/libc/src/memccpy.c b/common/libc/src/memccpy.c new file mode 100644 index 00000000..49790774 --- /dev/null +++ b/common/libc/src/memccpy.c @@ -0,0 +1,27 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * memccpy.c + * + * memccpy() + */ + +#include +#include + +void *memccpy(void *dst, const void *src, int c, size_t n) +{ + char *q = (char *)dst; + const char *p = (char *)src; + char ch; + + while (n--) { + *q++ = ch = *p++; + if (ch == (char)c) + return q; + } + + return NULL; /* No instance of "c" found */ +} diff --git a/common/libc/src/memchr.c b/common/libc/src/memchr.c new file mode 100644 index 00000000..ec8dbea2 --- /dev/null +++ b/common/libc/src/memchr.c @@ -0,0 +1,23 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * memchr.c + */ + +#include +#include + +void *memchr(const void *s, int c, size_t n) +{ + const unsigned char *sp = (unsigned char *)s; + + while (n--) { + if (*sp == (unsigned char)c) + return (void *)sp; + sp++; + } + + return NULL; +} diff --git a/common/libc/src/memcmp.c b/common/libc/src/memcmp.c new file mode 100644 index 00000000..3133aa00 --- /dev/null +++ b/common/libc/src/memcmp.c @@ -0,0 +1,23 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * memcmp.c + */ + +#include + +int memcmp(const void *s1, const void *s2, size_t n) +{ + const unsigned char *c1 = (unsigned char *)s1, *c2 = (unsigned char *)s2; + int d = 0; + + while (n--) { + d = (int)*c1++ - (int)*c2++; + if (d) + break; + } + + return d; +} diff --git a/common/libc/src/memcpy.c b/common/libc/src/memcpy.c new file mode 100644 index 00000000..8df627ed --- /dev/null +++ b/common/libc/src/memcpy.c @@ -0,0 +1,16 @@ +/* + * memcpy.c + */ + +#include +#include + +void *memcpy(void *dst, const void *src, size_t n) +{ + const char *p = (char *)src; + char *q = (char *)dst; + while (n--) { + *q++ = *p++; + } + return dst; +} diff --git a/common/libc/src/memmem.c b/common/libc/src/memmem.c new file mode 100644 index 00000000..385620b7 --- /dev/null +++ b/common/libc/src/memmem.c @@ -0,0 +1,56 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * memmem.c + * + * Find a byte string inside a longer byte string + * + * This uses the "Not So Naive" algorithm, a very simple but + * usually effective algorithm, see: + * + * http://www-igm.univ-mlv.fr/~lecroq/string/ + */ + +#include + +void *memmem(const void *haystack, size_t n, const void *needle, size_t m) +{ + const unsigned char *y = (const unsigned char *)haystack; + const unsigned char *x = (const unsigned char *)needle; + + size_t j, k, l; + + if (m > n || !m || !n) + return NULL; + + if (1 != m) { + if (x[0] == x[1]) { + k = 2; + l = 1; + } else { + k = 1; + l = 2; + } + + j = 0; + while (j <= n - m) { + if (x[1] != y[j + 1]) { + j += k; + } else { + if (!memcmp(x + 2, y + j + 2, m - 2) + && x[0] == y[j]) + return (void *)&y[j]; + j += l; + } + } + } else + do { + if (*y == *x) + return (void *)y; + y++; + } while (--n); + + return NULL; +} diff --git a/common/libc/src/memrchr.c b/common/libc/src/memrchr.c new file mode 100644 index 00000000..6a9b8e7e --- /dev/null +++ b/common/libc/src/memrchr.c @@ -0,0 +1,23 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * memrchr.c + */ + +#include +#include + +void *memrchr(const void *s, int c, size_t n) +{ + const unsigned char *sp = (const unsigned char *)s + n - 1; + + while (n--) { + if (*sp == (unsigned char)c) + return (void *)sp; + sp--; + } + + return NULL; +} diff --git a/common/libc/src/memset.c b/common/libc/src/memset.c new file mode 100644 index 00000000..ff5fa22b --- /dev/null +++ b/common/libc/src/memset.c @@ -0,0 +1,16 @@ +/* + * memset.c + */ + +#include +#include + +void *memset(void *dst, int c, size_t n) +{ + char *q = (char *)dst; + while (n--) { + *q++ = c; + __asm volatile ("":::"memory"); + } + return dst; +} diff --git a/common/libc/src/memswap.c b/common/libc/src/memswap.c new file mode 100644 index 00000000..495085d1 --- /dev/null +++ b/common/libc/src/memswap.c @@ -0,0 +1,28 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * memswap() + * + * Swaps the contents of two nonoverlapping memory areas. + * This really could be done faster... + */ + +#include + +void memswap(void *m1, void *m2, size_t n) +{ + char *p = (char *)m1; + char *q = (char *)m2; + char tmp; + + while (n--) { + tmp = *p; + *p = *q; + *q = tmp; + + p++; + q++; + } +} diff --git a/common/libc/src/mrand48.c b/common/libc/src/mrand48.c new file mode 100644 index 00000000..b3195bbd --- /dev/null +++ b/common/libc/src/mrand48.c @@ -0,0 +1,18 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * mrand48.c + */ + +#include +#include + +/* Common with lrand48.c, srand48.c */ +extern unsigned short __rand48_seed[3]; + +long mrand48(void) +{ + return jrand48(__rand48_seed); +} diff --git a/common/libc/src/nrand48.c b/common/libc/src/nrand48.c new file mode 100644 index 00000000..c50e5dda --- /dev/null +++ b/common/libc/src/nrand48.c @@ -0,0 +1,15 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * nrand48.c + */ + +#include +#include + +long nrand48(unsigned short xsubi[3]) +{ + return (long)((uint32_t) jrand48(xsubi) >> 1); +} diff --git a/common/libc/src/qsort.c b/common/libc/src/qsort.c new file mode 100644 index 00000000..02ca044d --- /dev/null +++ b/common/libc/src/qsort.c @@ -0,0 +1,52 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * qsort.c + * + * This is actually combsort. It's an O(n log n) algorithm with + * simplicity/small code size being its main virtue. + */ + +#include +#include +#include +#include +//#include + +static __inline size_t newgap(size_t gap) +{ + gap = (gap * 10) / 13; + if (gap == 9 || gap == 10) + gap = 11; + + if (gap < 1) + gap = 1; + return gap; +} + +void qsort(void *base, size_t nmemb, size_t size, + int (*compar) (const void *, const void *)) +{ + size_t gap = nmemb; + size_t i, j; + char *p1, *p2; + int swapped; + + if (!nmemb) + return; + + do { + gap = newgap(gap); + swapped = 0; + + for (i = 0, p1 = (char*)base; i < nmemb - gap; i++, p1 += size) { + j = i + gap; + if (compar(p1, p2 = (char *)base + j * size) > 0) { + memswap(p1, p2, size); + swapped = 1; + } + } + } while (gap > 1 || swapped); +} diff --git a/common/libc/src/seed48.c b/common/libc/src/seed48.c new file mode 100644 index 00000000..357f3bf1 --- /dev/null +++ b/common/libc/src/seed48.c @@ -0,0 +1,22 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * seed48.c + */ + +#include +#include +#include + +extern unsigned short __rand48_seed[3]; + +unsigned short *seed48(unsigned short int xsubi[3]) +{ + static unsigned short oldseed[3]; + memcpy(oldseed, __rand48_seed, sizeof __rand48_seed); + memcpy(__rand48_seed, xsubi, sizeof __rand48_seed); + + return oldseed; +} diff --git a/common/libc/src/snprintf.c b/common/libc/src/snprintf.c new file mode 100644 index 00000000..06c35552 --- /dev/null +++ b/common/libc/src/snprintf.c @@ -0,0 +1,21 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * snprintf.c + */ + +#include +#include + +int snprintf(char *buffer, size_t n, const char *format, ...) +{ + va_list ap; + int rv; + + va_start(ap, format); + rv = vsnprintf(buffer, n, format, ap); + va_end(ap); + return rv; +} diff --git a/common/libc/src/sprintf.c b/common/libc/src/sprintf.c new file mode 100644 index 00000000..8145d362 --- /dev/null +++ b/common/libc/src/sprintf.c @@ -0,0 +1,22 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * sprintf.c + */ + +#include +#include + +int sprintf(char *buffer, const char *format, ...) +{ + va_list ap; + int rv; + + va_start(ap, format); + rv = vsnprintf(buffer, (~(unsigned int) 0)>>1, format, ap); + va_end(ap); + + return rv; +} diff --git a/common/libc/src/srand48.c b/common/libc/src/srand48.c new file mode 100644 index 00000000..f3412c32 --- /dev/null +++ b/common/libc/src/srand48.c @@ -0,0 +1,30 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * srand48.c + */ + +#include +#include + +/* Common with mrand48.c, lrand48.c */ +extern unsigned short __rand48_seed[3]; + +void srand48(long seedval) +{ + __rand48_seed[0] = 0x330e; + __rand48_seed[1] = (unsigned short)seedval; + __rand48_seed[2] = (unsigned short)((uint32_t) seedval >> 16); +} + +void srand(unsigned int __s) +{ + srand48(__s); +} + +void srandom(unsigned int __s) +{ + srand48(__s); +} diff --git a/common/libc/src/sscanf.c b/common/libc/src/sscanf.c new file mode 100644 index 00000000..e6ac85bd --- /dev/null +++ b/common/libc/src/sscanf.c @@ -0,0 +1,22 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * sscanf() + */ + +#include +#include + +int sscanf(const char *str, const char *format, ...) +{ + va_list ap; + int rv; + + va_start(ap, format); + rv = vsscanf(str, format, ap); + va_end(ap); + + return rv; +} diff --git a/common/libc/src/stdlib.c b/common/libc/src/stdlib.c new file mode 100644 index 00000000..8e31fa6f --- /dev/null +++ b/common/libc/src/stdlib.c @@ -0,0 +1,31 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + * + * This functions implement WMSDK specific memory allocator routines. + */ + +#include +#include +#include + +#ifndef BFLB_IN_BENCHMARK +void *malloc(size_t size) +{ + return NULL; +} + +void free(void *ptr) +{ +} +#endif + +void *calloc(size_t nmemb, size_t size) +{ + return NULL; +} + +void *realloc(void *ptr, size_t size) +{ + return NULL; +} diff --git a/common/libc/src/strcasecmp.c b/common/libc/src/strcasecmp.c new file mode 100644 index 00000000..7d42cc5e --- /dev/null +++ b/common/libc/src/strcasecmp.c @@ -0,0 +1,28 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strcasecmp.c + */ + +#include +#include + +int strcasecmp(const char *s1, const char *s2) +{ + const unsigned char *c1 = (const unsigned char *)s1; + const unsigned char *c2 = (const unsigned char *)s2; + unsigned char ch; + int d = 0; + + while (1) { + /* toupper() expects an unsigned char (implicitly cast to int) + as input, and returns an int, which is exactly what we want. */ + d = toupper(ch = *c1++) - toupper(*c2++); + if (d || !ch) + break; + } + + return d; +} diff --git a/common/libc/src/strcat.c b/common/libc/src/strcat.c new file mode 100644 index 00000000..0cd9377b --- /dev/null +++ b/common/libc/src/strcat.c @@ -0,0 +1,15 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strcat.c + */ + +#include + +char *strcat(char *dst, const char *src) +{ + strcpy(strchr(dst, '\0'), src); + return dst; +} diff --git a/common/libc/src/strchr.c b/common/libc/src/strchr.c new file mode 100644 index 00000000..a9e99881 --- /dev/null +++ b/common/libc/src/strchr.c @@ -0,0 +1,22 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strchr.c + */ + +#include +#include + +__WEAK__ +char *strchr(const char *s, int c) +{ + while (*s != (char)c) { + if (!*s) + return NULL; + s++; + } + + return (char *)s; +} diff --git a/common/libc/src/strcmp.c b/common/libc/src/strcmp.c new file mode 100644 index 00000000..b74373ff --- /dev/null +++ b/common/libc/src/strcmp.c @@ -0,0 +1,29 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strcmp.c + */ + +#include + +#ifdef BFLB_IN_BENCHMARK +int bflb_strcmp(const char *s1, const char *s2) +#else +int strcmp(const char *s1, const char *s2) +#endif +{ + const unsigned char *c1 = (const unsigned char *)s1; + const unsigned char *c2 = (const unsigned char *)s2; + unsigned char ch; + int d = 0; + + while (1) { + d = (int)(ch = *c1++) - (int)*c2++; + if (d || !ch) + break; + } + + return d; +} diff --git a/common/libc/src/strcpy.c b/common/libc/src/strcpy.c new file mode 100644 index 00000000..68f291ae --- /dev/null +++ b/common/libc/src/strcpy.c @@ -0,0 +1,24 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strcpy.c + * + * strcpy() + */ + +#include + +char *strcpy(char *dst, const char *src) +{ + char *q = dst; + const char *p = src; + char ch; + + do { + *q++ = ch = *p++; + } while (ch); + + return dst; +} diff --git a/common/libc/src/strcspn.c b/common/libc/src/strcspn.c new file mode 100644 index 00000000..b0cd78a8 --- /dev/null +++ b/common/libc/src/strcspn.c @@ -0,0 +1,16 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strcspn + */ + +#include + +#include "strxspn.h" + +size_t strcspn(const char *s, const char *reject) +{ + return __strxspn(s, reject, 1); +} diff --git a/common/libc/src/strlcat.c b/common/libc/src/strlcat.c new file mode 100644 index 00000000..7c0c6ad7 --- /dev/null +++ b/common/libc/src/strlcat.c @@ -0,0 +1,34 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strlcat.c + */ + +#include + +size_t strlcat(char *dst, const char *src, size_t size) +{ + size_t bytes = 0; + char *q = dst; + const char *p = src; + char ch; + + while (bytes < size && *q) { + q++; + bytes++; + } + if (bytes == size) + return (bytes + strlen(src)); + + while ((ch = *p++)) { + if (bytes + 1 < size) + *q++ = ch; + + bytes++; + } + + *q = '\0'; + return bytes; +} diff --git a/common/libc/src/strlcpy.c b/common/libc/src/strlcpy.c new file mode 100644 index 00000000..a1ca46e4 --- /dev/null +++ b/common/libc/src/strlcpy.c @@ -0,0 +1,30 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strlcpy.c + */ + +#include + +size_t strlcpy(char *dst, const char *src, size_t size) +{ + size_t bytes = 0; + char *q = dst; + const char *p = src; + char ch; + + while ((ch = *p++)) { + if (bytes + 1 < size) + *q++ = ch; + + bytes++; + } + + /* If size == 0 there is no space for a final null... */ + if (size) + *q = '\0'; + + return bytes; +} diff --git a/common/libc/src/strlen.c b/common/libc/src/strlen.c new file mode 100644 index 00000000..bf567988 --- /dev/null +++ b/common/libc/src/strlen.c @@ -0,0 +1,17 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strlen() + */ + +#include + +size_t strlen(const char *s) +{ + const char *ss = s; + while (*ss) + ss++; + return ss - s; +} diff --git a/common/libc/src/strncasecmp.c b/common/libc/src/strncasecmp.c new file mode 100644 index 00000000..b480b865 --- /dev/null +++ b/common/libc/src/strncasecmp.c @@ -0,0 +1,28 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strncasecmp.c + */ + +#include +#include + +int strncasecmp(const char *s1, const char *s2, size_t n) +{ + const unsigned char *c1 = (const unsigned char *)s1; + const unsigned char *c2 = (const unsigned char *)s2; + unsigned char ch; + int d = 0; + + while (n--) { + /* toupper() expects an unsigned char (implicitly cast to int) + as input, and returns an int, which is exactly what we want. */ + d = toupper(ch = *c1++) - toupper(*c2++); + if (d || !ch) + break; + } + + return d; +} diff --git a/common/libc/src/strncat.c b/common/libc/src/strncat.c new file mode 100644 index 00000000..e9a7f934 --- /dev/null +++ b/common/libc/src/strncat.c @@ -0,0 +1,25 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strncat.c + */ + +#include + +char *strncat(char *dst, const char *src, size_t n) +{ + char *q = strchr(dst, '\0'); + const char *p = src; + char ch; + + while (n--) { + *q++ = ch = *p++; + if (!ch) + return dst; + } + *q = '\0'; + + return dst; +} diff --git a/common/libc/src/strncmp.c b/common/libc/src/strncmp.c new file mode 100644 index 00000000..ffa85547 --- /dev/null +++ b/common/libc/src/strncmp.c @@ -0,0 +1,25 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strncmp.c + */ + +#include + +int strncmp(const char *s1, const char *s2, size_t n) +{ + const unsigned char *c1 = (const unsigned char *)s1; + const unsigned char *c2 = (const unsigned char *)s2; + unsigned char ch; + int d = 0; + + while (n--) { + d = (int)(ch = *c1++) - (int)*c2++; + if (d || !ch) + break; + } + + return d; +} diff --git a/common/libc/src/strncpy.c b/common/libc/src/strncpy.c new file mode 100644 index 00000000..6ae3f466 --- /dev/null +++ b/common/libc/src/strncpy.c @@ -0,0 +1,28 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strncpy.c + */ + +#include + +char *strncpy(char *dst, const char *src, size_t n) +{ + char *q = dst; + const char *p = src; + char ch; + + while (n) { + n--; + *q++ = ch = *p++; + if (!ch) + break; + } + + /* The specs say strncpy() fills the entire buffer with NUL. Sigh. */ + memset(q, 0, n); + + return dst; +} diff --git a/common/libc/src/strnlen.c b/common/libc/src/strnlen.c new file mode 100644 index 00000000..fb60071d --- /dev/null +++ b/common/libc/src/strnlen.c @@ -0,0 +1,22 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strnlen() + */ + +#include + +size_t strnlen(const char *s, size_t maxlen) +{ + const char *ss = s; + + /* Important: the maxlen test must precede the reference through ss; + since the byte beyond the maximum may segfault */ + while ((maxlen > 0) && *ss) { + ss++; + maxlen--; + } + return ss - s; +} diff --git a/common/libc/src/strntoimax.c b/common/libc/src/strntoimax.c new file mode 100644 index 00000000..e9187b80 --- /dev/null +++ b/common/libc/src/strntoimax.c @@ -0,0 +1,18 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strntoimax.c + * + * strntoimax() + */ + +#include +#include +//#include + +intmax_t strntoimax(const char *nptr, char **endptr, int base, size_t n) +{ + return (intmax_t) strntoumax(nptr, endptr, base, n); +} diff --git a/common/libc/src/strntoumax.c b/common/libc/src/strntoumax.c new file mode 100644 index 00000000..b66450f7 --- /dev/null +++ b/common/libc/src/strntoumax.c @@ -0,0 +1,81 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strntoumax.c + * + * The strntoumax() function and associated + */ + +#include +#include +#include +#include + +static __inline int digitval(int ch) +{ + if (ch >= '0' && ch <= '9') { + return ch - '0'; + } else if (ch >= 'A' && ch <= 'Z') { + return ch - 'A' + 10; + } else if (ch >= 'a' && ch <= 'z') { + return ch - 'a' + 10; + } else { + return -1; + } +} + +uintmax_t strntoumax(const char *nptr, char **endptr, int base, size_t n) +{ + int minus = 0; + uintmax_t v = 0; + int d; + + while (n && isspace((unsigned char)*nptr)) { + nptr++; + n--; + } + + /* Single optional + or - */ + if (n) { + char c = *nptr; + if (c == '-' || c == '+') { + minus = (c == '-'); + nptr++; + n--; + } + } + + if (base == 0) { + if (n >= 2 && nptr[0] == '0' && + (nptr[1] == 'x' || nptr[1] == 'X')) { + n -= 2; + nptr += 2; + base = 16; + } else if (n >= 1 && nptr[0] == '0') { + n--; + nptr++; + base = 8; + } else { + base = 10; + } + } else if (base == 16) { + if (n >= 2 && nptr[0] == '0' && + (nptr[1] == 'x' || nptr[1] == 'X')) { + n -= 2; + nptr += 2; + } + } + + while (n && (d = digitval(*nptr)) >= 0 && d < base) { + v = v * base + d; + n--; + nptr++; + } + + if (endptr) + *endptr = (char *)nptr; + + return minus ? -v : v; +} diff --git a/common/libc/src/strpbrk.c b/common/libc/src/strpbrk.c new file mode 100644 index 00000000..2c8d2b40 --- /dev/null +++ b/common/libc/src/strpbrk.c @@ -0,0 +1,18 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strpbrk + */ + +#include + +#include "strxspn.h" + +char *strpbrk(const char *s, const char *accept) +{ + const char *ss = s + __strxspn(s, accept, 1); + + return *ss ? (char *)ss : NULL; +} diff --git a/common/libc/src/strrchr.c b/common/libc/src/strrchr.c new file mode 100644 index 00000000..4bbae0c1 --- /dev/null +++ b/common/libc/src/strrchr.c @@ -0,0 +1,22 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strrchr.c + */ + +#include + +char *strrchr(const char *s, int c) +{ + const char *found = NULL; + + while (*s) { + if (*s == (char)c) + found = s; + s++; + } + + return (char *)found; +} diff --git a/common/libc/src/strsep.c b/common/libc/src/strsep.c new file mode 100644 index 00000000..417e8e1a --- /dev/null +++ b/common/libc/src/strsep.c @@ -0,0 +1,25 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strsep.c + */ + +#include + +char *strsep(char **stringp, const char *delim) +{ + char *s = *stringp; + char *e; + + if (!s) + return NULL; + + e = strpbrk(s, delim); + if (e) + *e++ = '\0'; + + *stringp = e; + return s; +} diff --git a/common/libc/src/strspn.c b/common/libc/src/strspn.c new file mode 100644 index 00000000..cfa708b3 --- /dev/null +++ b/common/libc/src/strspn.c @@ -0,0 +1,16 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strspn + */ + +#include + +#include "strxspn.h" + +size_t strspn(const char *s, const char *accept) +{ + return __strxspn(s, accept, 0); +} diff --git a/common/libc/src/strstr.c b/common/libc/src/strstr.c new file mode 100644 index 00000000..762c5ff3 --- /dev/null +++ b/common/libc/src/strstr.c @@ -0,0 +1,16 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strstr.c + */ + +#include +//#include + +char *strstr(const char *haystack, const char *needle) +{ + return (char *)memmem(haystack, strlen(haystack), needle, + strlen(needle)); +} diff --git a/common/libc/src/strtoimax.c b/common/libc/src/strtoimax.c new file mode 100644 index 00000000..ba4bd1e6 --- /dev/null +++ b/common/libc/src/strtoimax.c @@ -0,0 +1,7 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#define TYPE intmax_t +#define NAME strtoimax +#include "strtox.c" diff --git a/common/libc/src/strtok.c b/common/libc/src/strtok.c new file mode 100644 index 00000000..9f730953 --- /dev/null +++ b/common/libc/src/strtok.c @@ -0,0 +1,16 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strtok.c + */ + +#include + +char *strtok(char *s, const char *delim) +{ + static char *holder; + + return strtok_r(s, delim, &holder); +} diff --git a/common/libc/src/strtok_r.c b/common/libc/src/strtok_r.c new file mode 100644 index 00000000..be63d04d --- /dev/null +++ b/common/libc/src/strtok_r.c @@ -0,0 +1,17 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#include + +char *strtok_r(char *s, const char *delim, char **holder) +{ + if (s) + *holder = s; + + do { + s = strsep(holder, delim); + } while (s && !*s); + + return s; +} diff --git a/common/libc/src/strtol.c b/common/libc/src/strtol.c new file mode 100644 index 00000000..773db454 --- /dev/null +++ b/common/libc/src/strtol.c @@ -0,0 +1,7 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#define TYPE signed long +#define NAME strtol +#include "strtox.c" diff --git a/common/libc/src/strtoll.c b/common/libc/src/strtoll.c new file mode 100644 index 00000000..ef19ae87 --- /dev/null +++ b/common/libc/src/strtoll.c @@ -0,0 +1,7 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#define TYPE signed long long +#define NAME strtoll +#include "strtox.c" diff --git a/common/libc/src/strtoul.c b/common/libc/src/strtoul.c new file mode 100644 index 00000000..1ee24f34 --- /dev/null +++ b/common/libc/src/strtoul.c @@ -0,0 +1,7 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#define TYPE unsigned long +#define NAME strtoul +#include "strtox.c" diff --git a/common/libc/src/strtoull.c b/common/libc/src/strtoull.c new file mode 100644 index 00000000..0bcf8026 --- /dev/null +++ b/common/libc/src/strtoull.c @@ -0,0 +1,7 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#define TYPE unsigned long long +#define NAME strtoull +#include "strtox.c" diff --git a/common/libc/src/strtoumax.c b/common/libc/src/strtoumax.c new file mode 100644 index 00000000..37cad718 --- /dev/null +++ b/common/libc/src/strtoumax.c @@ -0,0 +1,7 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +#define TYPE uintmax_t +#define NAME strtoumax +#include "strtox.c" diff --git a/common/libc/src/strtox.c b/common/libc/src/strtox.c new file mode 100644 index 00000000..df1746f7 --- /dev/null +++ b/common/libc/src/strtox.c @@ -0,0 +1,19 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strtox.c + * + * strto...() functions, by macro definition + */ + +#include +#include +#include +#include + +WEAK TYPE NAME(const char *nptr, char **endptr, int base) +{ + return (TYPE) strntoumax(nptr, endptr, base, ~(size_t) 0); +} diff --git a/common/libc/src/strxspn.c b/common/libc/src/strxspn.c new file mode 100644 index 00000000..f4969c56 --- /dev/null +++ b/common/libc/src/strxspn.c @@ -0,0 +1,33 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * strpbrk + */ + +#include +#include +#include +#include +#include "strxspn.h" + +size_t __strxspn(const char *s, const char *map, int parity) +{ + char matchmap[UCHAR_MAX + 1]; + size_t n = 0; + + /* Create bitmap */ + memset(matchmap, 0, sizeof matchmap); + while (*map) + matchmap[(unsigned char)*map++] = 1; + + /* Make sure the null character never matches */ + matchmap[0] = parity; + + /* Calculate span length */ + while (matchmap[(unsigned char)*s++] ^ parity) + n++; + + return n; +} diff --git a/common/libc/src/strxspn.h b/common/libc/src/strxspn.h new file mode 100644 index 00000000..ce56ff29 --- /dev/null +++ b/common/libc/src/strxspn.h @@ -0,0 +1,12 @@ +/* + * strxspn.h + */ + +#ifndef STRXSPN_H +#define STRXSPN_H + +#include + +extern size_t __strxspn(const char *s, const char *map, int parity); + +#endif diff --git a/common/libc/src/vsnprintf.c b/common/libc/src/vsnprintf.c new file mode 100644 index 00000000..782181f4 --- /dev/null +++ b/common/libc/src/vsnprintf.c @@ -0,0 +1,821 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * vsnprintf.c + * + * vsnprintf(), from which the rest of the printf() + * family is built + */ + +#include +#include +#include +#include +#include +#include + +enum flag { + FL_ZERO = 0x01, /* Zero modifier */ + FL_MINUS = 0x02, /* Minus modifier */ + FL_PLUS = 0x04, /* Plus modifier */ + FL_TICK = 0x08, /* ' modifier */ + FL_SPACE = 0x10, /* Space modifier */ + FL_HASH = 0x20, /* # modifier */ + FL_SIGNED = 0x40, /* Number is signed */ + FL_UPPER = 0x80 /* Upper case digits */ +}; + +/* These may have to be adjusted on certain implementations */ +enum ranks { + rank_char = -2, + rank_short = -1, + rank_int = 0, + rank_long = 1, + rank_longlong = 2 +}; + +#define MIN_RANK rank_char +#define MAX_RANK rank_longlong + +#define INTMAX_RANK rank_longlong +#define SIZE_T_RANK rank_long +#define PTRDIFF_T_RANK rank_long + +#define EMIT(x) { if (o < n) { *q++ = (x); } o++; } +static size_t +format_int(char *q, size_t n, uintmax_t val, unsigned int flags, + int base, int width, int prec) +{ + char *qq; + size_t o = 0, oo; + static const char lcdigits[] = "0123456789abcdef"; + static const char ucdigits[] = "0123456789ABCDEF"; + const char *digits; + uintmax_t tmpval; + int minus = 0; + int ndigits = 0, nchars; + int tickskip, b4tick; + + /* Select type of digits */ + digits = (flags & FL_UPPER) ? ucdigits : lcdigits; + + /* If signed, separate out the minus */ + if (flags & FL_SIGNED && (intmax_t) val < 0) { + minus = 1; + val = (uintmax_t) (-(intmax_t) val); + } + + /* Count the number of digits needed. This returns zero for 0. */ + tmpval = val; + while (tmpval) { + tmpval /= base; + ndigits++; + } + + /* Adjust ndigits for size of output */ + + if (flags & FL_HASH && base == 8) { + if (prec < ndigits + 1) + prec = ndigits + 1; + } + + if (ndigits < prec) { + ndigits = prec; /* Mandatory number padding */ + } else if (val == 0) { + ndigits = 1; /* Zero still requires space */ + } + + /* For ', figure out what the skip should be */ + if (flags & FL_TICK) { + tickskip = (base == 16) ? 4 : 3; + } else { + tickskip = ndigits; /* No tick marks */ + } + + /* Tick marks aren't digits, but generated by the number converter */ + ndigits += (ndigits - 1) / tickskip; + + /* Now compute the number of nondigits */ + nchars = ndigits; + + if (minus || (flags & (FL_PLUS | FL_SPACE))) + nchars++; /* Need space for sign */ + if ((flags & FL_HASH) && base == 16) { + nchars += 2; /* Add 0x for hex */ + } + + /* Emit early space padding */ + if (!(flags & (FL_MINUS | FL_ZERO)) && width > nchars) { + while (width > nchars) { + EMIT(' '); + width--; + } + } + + /* Emit nondigits */ + if (minus) { + EMIT('-'); + } else if (flags & FL_PLUS) { + EMIT('+'); + } else if (flags & FL_SPACE) { + EMIT(' '); + } + + if ((flags & FL_HASH) && base == 16) { + EMIT('0'); + EMIT((flags & FL_UPPER) ? 'X' : 'x'); + } + + /* Emit zero padding */ + if ((flags & (FL_MINUS | FL_ZERO)) == FL_ZERO && width > ndigits) { + while (width > nchars) { + EMIT('0'); + width--; + } + } + + /* Generate the number. This is done from right to left. */ + q += ndigits; /* Advance the pointer to end of number */ + o += ndigits; + qq = q; + oo = o; /* Temporary values */ + + b4tick = tickskip; + while (ndigits > 0) { + if (!b4tick--) { + qq--; + oo--; + ndigits--; + if (oo < n) + *qq = '_'; + b4tick = tickskip - 1; + } + qq--; + oo--; + ndigits--; + if (oo < n) + *qq = digits[val % base]; + val /= base; + } + + /* Emit late space padding */ + while ((flags & FL_MINUS) && width > nchars) { + EMIT(' '); + width--; + } + + return o; +} + +#ifdef BFLB_PRINT_FLOAT_SUPPORT + +#define ZEROPAD (1<<0) /* Pad with zero */ +#define SIGN (1<<1) /* Unsigned/signed long */ +#define PLUS (1<<2) /* Show plus */ +#define SPACE (1<<3) /* Spacer */ +#define LEFT (1<<4) /* Left justified */ +#define HEX_PREP (1<<5) /* 0x */ +#define UPPERCASE (1<<6) /* 'ABCDEF' */ + +#include +#define CVTBUFSIZE 80 + +static char *cvt(double arg, int ndigits, int *decpt, int *sign, char *buf, int eflag) +{ + int r2; + double fi, fj; + char *p, *p1; + + if (ndigits < 0) ndigits = 0; + if (ndigits >= CVTBUFSIZE - 1) ndigits = CVTBUFSIZE - 2; + r2 = 0; + *sign = 0; + p = &buf[0]; + if (arg < 0) + { + *sign = 1; + arg = -arg; + } + arg = modf(arg, &fi); + p1 = &buf[CVTBUFSIZE]; + + if (fi != 0) + { + p1 = &buf[CVTBUFSIZE]; + while (fi != 0) + { + fj = modf(fi / 10, &fi); + *--p1 = (int)((fj + 0.03) * 10) + '0'; + r2++; + } + while (p1 < &buf[CVTBUFSIZE]) *p++ = *p1++; + } + else if (arg > 0) + { + while ((fj = arg * 10) < 1) + { + arg = fj; + r2--; + } + } + p1 = &buf[ndigits]; + if (eflag == 0) p1 += r2; + *decpt = r2; + if (p1 < &buf[0]) + { + buf[0] = '\0'; + return buf; + } + while (p <= p1 && p < &buf[CVTBUFSIZE]) + { + arg *= 10; + arg = modf(arg, &fj); + *p++ = (int) fj + '0'; + } + if (p1 >= &buf[CVTBUFSIZE]) + { + buf[CVTBUFSIZE - 1] = '\0'; + return buf; + } + p = p1; + *p1 += 5; + while (*p1 > '9') + { + *p1 = '0'; + if (p1 > buf) + ++*--p1; + else + { + *p1 = '1'; + (*decpt)++; + if (eflag == 0) + { + if (p > buf) *p = '0'; + p++; + } + } + } + *p = '\0'; + return buf; +} + +char *ecvtbuf(double arg, int ndigits, int *decpt, int *sign, char *buf) +{ + return cvt(arg, ndigits, decpt, sign, buf, 1); +} + +char *fcvtbuf(double arg, int ndigits, int *decpt, int *sign, char *buf) +{ + return cvt(arg, ndigits, decpt, sign, buf, 0); +} + +static void ee_bufcpy(char *d, char *s, int count); + +void ee_bufcpy(char *pd, char *ps, int count) { + char *pe=ps+count; + while (ps!=pe) + *pd++=*ps++; +} + +static void parse_float(double value, char *buffer, char fmt, int precision) +{ + int decpt, sign, exp, pos; + char *digits = NULL; + char cvtbuf[80]; + int capexp = 0; + int magnitude; + + if (fmt == 'G' || fmt == 'E') + { + capexp = 1; + fmt += 'a' - 'A'; + } + + if (fmt == 'g') + { + digits = ecvtbuf(value, precision, &decpt, &sign, cvtbuf); + magnitude = decpt - 1; + if (magnitude < -4 || magnitude > precision - 1) + { + fmt = 'e'; + precision -= 1; + } + else + { + fmt = 'f'; + precision -= decpt; + } + } + + if (fmt == 'e') + { + digits = ecvtbuf(value, precision + 1, &decpt, &sign, cvtbuf); + + if (sign) *buffer++ = '-'; + *buffer++ = *digits; + if (precision > 0) *buffer++ = '.'; + ee_bufcpy(buffer, digits + 1, precision); + buffer += precision; + *buffer++ = capexp ? 'E' : 'e'; + + if (decpt == 0) + { + if (value == 0.0) + exp = 0; + else + exp = -1; + } + else + exp = decpt - 1; + + if (exp < 0) + { + *buffer++ = '-'; + exp = -exp; + } + else + *buffer++ = '+'; + + buffer[2] = (exp % 10) + '0'; + exp = exp / 10; + buffer[1] = (exp % 10) + '0'; + exp = exp / 10; + buffer[0] = (exp % 10) + '0'; + buffer += 3; + } + else if (fmt == 'f') + { + digits = fcvtbuf(value, precision, &decpt, &sign, cvtbuf); + if (sign) *buffer++ = '-'; + if (*digits) + { + if (decpt <= 0) + { + *buffer++ = '0'; + *buffer++ = '.'; + for (pos = 0; pos < -decpt; pos++) *buffer++ = '0'; + while (*digits) *buffer++ = *digits++; + } + else + { + pos = 0; + while (*digits) + { + if (pos++ == decpt) *buffer++ = '.'; + *buffer++ = *digits++; + } + } + } + else + { + *buffer++ = '0'; + if (precision > 0) + { + *buffer++ = '.'; + for (pos = 0; pos < precision; pos++) *buffer++ = '0'; + } + } + } + + *buffer = '\0'; +} + +static void decimal_point(char *buffer) +{ + while (*buffer) + { + if (*buffer == '.') return; + if (*buffer == 'e' || *buffer == 'E') break; + buffer++; + } + + if (*buffer) + { + int n = strnlen(buffer,256); + while (n > 0) + { + buffer[n + 1] = buffer[n]; + n--; + } + + *buffer = '.'; + } + else + { + *buffer++ = '.'; + *buffer = '\0'; + } +} + +static void cropzeros(char *buffer) +{ + char *stop; + + while (*buffer && *buffer != '.') buffer++; + if (*buffer++) + { + while (*buffer && *buffer != 'e' && *buffer != 'E') buffer++; + stop = buffer--; + while (*buffer == '0') buffer--; + if (*buffer == '.') buffer--; + while (buffer!=stop) + *++buffer=0; + } +} + +static char *flt(char *str, double num, int size, int precision, char fmt, int flags) +{ + char tmp[80]; + char c, sign; + int n, i; + + // Left align means no zero padding + if (flags & LEFT) flags &= ~ZEROPAD; + + // Determine padding and sign char + c = (flags & ZEROPAD) ? '0' : ' '; + sign = 0; + if (flags & SIGN) + { + if (num < 0.0) + { + sign = '-'; + num = -num; + size--; + } + else if (flags & PLUS) + { + sign = '+'; + size--; + } + else if (flags & SPACE) + { + sign = ' '; + size--; + } + } + + // Compute the precision value + if (precision < 0) + precision = 6; // Default precision: 6 + + // Convert floating point number to text + parse_float(num, tmp, fmt, precision); + + if ((flags & HEX_PREP) && precision == 0) decimal_point(tmp); + if (fmt == 'g' && !(flags & HEX_PREP)) cropzeros(tmp); + + n = strnlen(tmp,256); + + // Output number with alignment and padding + size -= n; + if (!(flags & (ZEROPAD | LEFT))) while (size-- > 0) *str++ = ' '; + if (sign) *str++ = sign; + if (!(flags & LEFT)) while (size-- > 0) *str++ = c; + for (i = 0; i < n; i++) *str++ = tmp[i]; + while (size-- > 0) *str++ = ' '; + + return str; +} +#endif + +int vsnprintf(char *buffer, size_t n, const char *format, va_list ap) +{ + const char *p = format; + char ch; + char *q = buffer; + size_t o = 0; /* Number of characters output */ + uintmax_t val = 0; + int rank = rank_int; /* Default rank */ + int width = 0; + int prec = -1; + int base; + size_t sz; + unsigned int flags = 0; + enum { + st_normal, /* Ground state */ + st_flags, /* Special flags */ + st_width, /* Field width */ + st_prec, /* Field precision */ + st_modifiers /* Length or conversion modifiers */ + } state = st_normal; + const char *sarg; /* %s string argument */ + char carg; /* %c char argument */ + int slen; /* String length */ + + while ((ch = *p++)) { + switch (state) { + case st_normal: + if (ch == '%') { + state = st_flags; + flags = 0; + rank = rank_int; + width = 0; + prec = -1; + } else { + EMIT(ch); + } + break; + + case st_flags: + switch (ch) { + case '-': + flags |= FL_MINUS; + break; + case '+': + flags |= FL_PLUS; + break; + case '\'': + flags |= FL_TICK; + break; + case ' ': + flags |= FL_SPACE; + break; + case '#': + flags |= FL_HASH; + break; + case '0': + flags |= FL_ZERO; + break; + default: + state = st_width; + p--; /* Process this character again */ + break; + } + break; + + case st_width: + if (ch >= '0' && ch <= '9') { + width = width * 10 + (ch - '0'); + } else if (ch == '*') { + width = va_arg(ap, int); + if (width < 0) { + width = -width; + flags |= FL_MINUS; + } + } else if (ch == '.') { + prec = 0; /* Precision given */ + state = st_prec; + } else { + state = st_modifiers; + p--; /* Process this character again */ + } + break; + + case st_prec: + if (ch >= '0' && ch <= '9') { + prec = prec * 10 + (ch - '0'); + } else if (ch == '*') { + prec = va_arg(ap, int); + if (prec < 0) + prec = -1; + } else { + state = st_modifiers; + p--; /* Process this character again */ + } + break; + + case st_modifiers: + switch (ch) { + /* Length modifiers - nonterminal sequences */ + case 'h': + rank--; /* Shorter rank */ + break; + case 'l': + rank++; /* Longer rank */ + break; + case 'j': + rank = INTMAX_RANK; + break; + case 'z': + rank = SIZE_T_RANK; + break; + case 't': + rank = PTRDIFF_T_RANK; + break; + case 'L': + case 'q': + rank += 2; + break; + default: + /* Output modifiers - terminal sequences */ + + /* Next state will be normal */ + state = st_normal; + + /* Canonicalize rank */ + if (rank < MIN_RANK) + rank = MIN_RANK; + else if (rank > MAX_RANK) + rank = MAX_RANK; + + switch (ch) { + case 'P': /* Upper case pointer */ + flags |= FL_UPPER; + __attribute__ ((fallthrough)); + /* fall through */ + case 'p': /* Pointer */ + base = 16; + prec = (CHAR_BIT*sizeof(void *)+3)/4; + flags |= FL_HASH; + val = (uintmax_t)(uintptr_t) + va_arg(ap, void *); + goto is_integer; + + case 'd': /* Signed decimal output */ + case 'i': + base = 10; + flags |= FL_SIGNED; + switch (rank) { + case rank_char: + /* Yes, all these casts are + needed... */ + val = (uintmax_t)(intmax_t) + (signed char) + va_arg(ap, signed int); + break; + case rank_short: + val = (uintmax_t)(intmax_t) + (signed short) + va_arg(ap, signed int); + break; + case rank_int: + val = (uintmax_t)(intmax_t) + va_arg(ap, signed int); + break; + case rank_long: + val = (uintmax_t)(intmax_t) + va_arg(ap, signed long); + break; + case rank_longlong: + val = (uintmax_t)(intmax_t) + va_arg(ap, + signed long long); + break; + default: + break; + } + goto is_integer; + case 'o': /* Octal */ + base = 8; + goto is_unsigned; + case 'u': /* Unsigned decimal */ + base = 10; + goto is_unsigned; + case 'X': /* Upper case hexadecimal */ + flags |= FL_UPPER; + __attribute__ ((fallthrough)); + /* fall through */ + case 'x': /* Hexadecimal */ + base = 16; + goto is_unsigned; + + is_unsigned: + switch (rank) { + case rank_char: + val = (uintmax_t) + (unsigned char) + va_arg(ap, unsigned + int); + break; + case rank_short: + val = (uintmax_t) + (unsigned short) + va_arg(ap, unsigned + int); + break; + case rank_int: + val = (uintmax_t) + va_arg(ap, unsigned + int); + break; + case rank_long: + val = (uintmax_t) + va_arg(ap, unsigned + long); + break; + case rank_longlong: + val = (uintmax_t) + va_arg(ap, unsigned + long long); + break; + default: + break; + } + /* fall through */ + + is_integer: + sz = format_int(q, (o < n) ? n - o : 0, + val, flags, base, + width, prec); + q += sz; + o += sz; + break; + + case 'c': /* Character */ + carg = (char)va_arg(ap, int); + sarg = &carg; + slen = 1; + goto is_string; + case 's': /* String */ + sarg = va_arg(ap, const char *); + sarg = sarg ? sarg : "(null)"; + slen = strlen(sarg); + goto is_string; + + is_string: + { + char sch; + int i; + + if (prec != -1 && slen > prec) + slen = prec; + + if (width > slen + && !(flags & FL_MINUS)) { + char pad = + (flags & FL_ZERO) ? + '0' : ' '; + while (width > slen) { + EMIT(pad); + width--; + } + } + for (i = slen; i; i--) { + sch = *sarg++; + EMIT(sch); + } + if (width > slen + && (flags & FL_MINUS)) { + while (width > slen) { + EMIT(' '); + width--; + } + } + } + break; + + case 'n': + { + /* Output the number of + characters written */ + + switch (rank) { + case rank_char: + *va_arg(ap, + signed char *) + = o; + break; + case rank_short: + *va_arg(ap, + signed short *) + = o; + break; + case rank_int: + *va_arg(ap, + signed int *) + = o; + break; + case rank_long: + *va_arg(ap, + signed long *) + = o; + break; + case rank_longlong: + *va_arg(ap, + signed long long *) + = o; + break; + default: + break; + } + } + break; + #ifdef BFLB_PRINT_FLOAT_SUPPORT + case 'f': + { + q = flt(q, va_arg(ap, double), width, prec, ch, SIGN); + continue; + } + #endif + + default: /* Anything else, including % */ + EMIT(ch); + break; + } + } + default: + break; + } + } + + /* Null-terminate the string */ + if (o < n) + *q = '\0'; /* No overflow */ + else if (n > 0) + buffer[n - 1] = '\0'; /* Overflow - terminate at end of buffer */ + + return o; +} diff --git a/common/libc/src/vsprintf.c b/common/libc/src/vsprintf.c new file mode 100644 index 00000000..2ceaf27c --- /dev/null +++ b/common/libc/src/vsprintf.c @@ -0,0 +1,15 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * vsprintf.c + */ + +#include +#include + +int vsprintf(char *buffer, const char *format, va_list ap) +{ + return vsnprintf(buffer, (~(unsigned int) 0)>>1, format, ap); +} diff --git a/common/libc/src/vsscanf.c b/common/libc/src/vsscanf.c new file mode 100644 index 00000000..942e9eb2 --- /dev/null +++ b/common/libc/src/vsscanf.c @@ -0,0 +1,418 @@ +/* + * Derived from: + * http://www.kernel.org/pub/linux/libs/klibc/ + */ +/* + * vsscanf.c + * + * vsscanf(), from which the rest of the scanf() + * family is built + */ + +#include +#include +#include +#include +#include +#include +#include +//#include +#include + +#ifndef LONG_BIT +#define LONG_BIT (CHAR_BIT*sizeof(long)) +#endif + +enum flag { + FL_SPLAT = 0x01, /* Drop the value, do not assign */ + FL_INV = 0x02, /* Character-set with inverse */ + FL_WIDTH = 0x04, /* Field width specified */ + FL_MINUS = 0x08, /* Negative number */ +}; + +enum ranks { + rank_char = -2, + rank_short = -1, + rank_int = 0, + rank_long = 1, + rank_longlong = 2, + rank_ptr = INT_MAX /* Special value used for pointers */ +}; + +#define MIN_RANK rank_char +#define MAX_RANK rank_longlong + +#define INTMAX_RANK rank_longlong +#define SIZE_T_RANK rank_long +#define PTRDIFF_T_RANK rank_long + +enum bail { + bail_none = 0, /* No error condition */ + bail_eof, /* Hit EOF */ + bail_err /* Conversion mismatch */ +}; + +static __inline const char *skipspace(const char *p) +{ + while (isspace((unsigned char)*p)) + p++; + return p; +} + +#undef set_bit +static __inline void set_bit(unsigned long *bitmap, unsigned int bit) +{ + bitmap[bit / LONG_BIT] |= 1UL << (bit % LONG_BIT); +} + +#undef test_bit +static __inline int test_bit(unsigned long *bitmap, unsigned int bit) +{ + return (int)(bitmap[bit / LONG_BIT] >> (bit % LONG_BIT)) & 1; +} + +int vsscanf(const char *buffer, const char *format, va_list ap) +{ + const char *p = format; + char ch; + unsigned char uc; + const char *q = buffer; + const char *qq; + uintmax_t val = 0; + int rank = rank_int; /* Default rank */ + unsigned int width = UINT_MAX; + int base; + unsigned int flags = 0; + enum { + st_normal, /* Ground state */ + st_flags, /* Special flags */ + st_width, /* Field width */ + st_modifiers, /* Length or conversion modifiers */ + st_match_init, /* Initial state of %[ sequence */ + st_match, /* Main state of %[ sequence */ + st_match_range, /* After - in a %[ sequence */ + } state = st_normal; + char *sarg = NULL; /* %s %c or %[ string argument */ + enum bail bail = bail_none; + __UNUSED__ int sign; + int converted = 0; /* Successful conversions */ + unsigned long matchmap[((1 << CHAR_BIT) + (LONG_BIT - 1)) / LONG_BIT]; + int matchinv = 0; /* Is match map inverted? */ + unsigned char range_start = 0; + + while ((ch = *p++) && !bail) { + switch (state) { + case st_normal: + if (ch == '%') { + state = st_flags; + flags = 0; + rank = rank_int; + width = UINT_MAX; + } else if (isspace((unsigned char)ch)) { + q = skipspace(q); + } else { + if (*q == ch) + q++; + else + bail = bail_err; /* Match failure */ + } + break; + + case st_flags: + switch (ch) { + case '*': + flags |= FL_SPLAT; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + width = (ch - '0'); + state = st_width; + flags |= FL_WIDTH; + break; + default: + state = st_modifiers; + p--; /* Process this character again */ + break; + } + break; + + case st_width: + if (ch >= '0' && ch <= '9') { + width = width * 10 + (ch - '0'); + } else { + state = st_modifiers; + p--; /* Process this character again */ + } + break; + + case st_modifiers: + switch (ch) { + /* Length modifiers - nonterminal sequences */ + case 'h': + rank--; /* Shorter rank */ + break; + case 'l': + rank++; /* Longer rank */ + break; + case 'j': + rank = INTMAX_RANK; + break; + case 'z': + rank = SIZE_T_RANK; + break; + case 't': + rank = PTRDIFF_T_RANK; + break; + case 'L': + case 'q': + rank = rank_longlong; /* long double/long long */ + break; + + default: + /* Output modifiers - terminal sequences */ + /* Next state will be normal */ + state = st_normal; + + /* Canonicalize rank */ + if (rank < MIN_RANK) + rank = MIN_RANK; + else if (rank > MAX_RANK) + rank = MAX_RANK; + + switch (ch) { + case 'P': /* Upper case pointer */ + case 'p': /* Pointer */ + rank = rank_ptr; + base = 0; + sign = 0; + goto scan_int; + + case 'i': /* Base-independent integer */ + base = 0; + sign = 1; + goto scan_int; + + case 'd': /* Decimal integer */ + base = 10; + sign = 1; + goto scan_int; + + case 'o': /* Octal integer */ + base = 8; + sign = 0; + goto scan_int; + + case 'u': /* Unsigned decimal integer */ + base = 10; + sign = 0; + goto scan_int; + + case 'x': /* Hexadecimal integer */ + case 'X': + base = 16; + sign = 0; + goto scan_int; + + case 'n': /* # of characters consumed */ + val = (q - buffer); + goto set_integer; + + scan_int: + q = skipspace(q); + if (!*q) { + bail = bail_eof; + break; + } + val = + strntoumax(q, (char **)&qq, base, + width); + if (qq == q) { + bail = bail_err; + break; + } + q = qq; + if (!(flags & FL_SPLAT)) + converted++; + /* fall through */ + + set_integer: + if (!(flags & FL_SPLAT)) { + switch (rank) { + case rank_char: + *va_arg(ap, + unsigned char *) + = val; + break; + case rank_short: + *va_arg(ap, + unsigned short + *) = val; + break; + case rank_int: + *va_arg(ap, + unsigned int *) + = val; + break; + case rank_long: + *va_arg(ap, + unsigned long *) + = val; + break; + case rank_longlong: + *va_arg(ap, + unsigned long + long *) = val; + break; + case rank_ptr: + *va_arg(ap, void **) = + (void *) + (uintptr_t)val; + break; + default: + break; + } + } + break; + + case 'c': /* Character */ + /* Default width == 1 */ + width = (flags & FL_WIDTH) ? width : 1; + if (flags & FL_SPLAT) { + while (width--) { + if (!*q) { + bail = bail_eof; + break; + } + } + } else { + sarg = va_arg(ap, char *); + while (width--) { + if (!*q) { + bail = bail_eof; + break; + } + *sarg++ = *q++; + } + if (!bail) + converted++; + } + break; + + case 's': /* String */ + uc = 1; /* Anything nonzero */ + if (flags & FL_SPLAT) { + while (width-- && (uc = *q) && + !isspace(uc)) { + q++; + } + } else { + char *sp; + sp = sarg = va_arg(ap, char *); + while (width-- && (uc = *q) && + !isspace(uc)) { + *sp++ = uc; + q++; + } + if (sarg != sp) { + /* Terminate output */ + *sp = '\0'; + converted++; + } + } + if (!uc) + bail = bail_eof; + break; + + case '[': /* Character range */ + sarg = (flags & FL_SPLAT) ? NULL + : va_arg(ap, char *); + state = st_match_init; + matchinv = 0; + memset(matchmap, 0, sizeof matchmap); + break; + + case '%': /* %% sequence */ + if (*q == '%') + q++; + else + bail = bail_err; + break; + + default: /* Anything else */ + /* Unknown sequence */ + bail = bail_err; + break; + } + } + break; + + case st_match_init: /* Initial state for %[ match */ + if (ch == '^' && !(flags & FL_INV)) { + matchinv = 1; + } else { + set_bit(matchmap, (unsigned char)ch); + state = st_match; + } + break; + + case st_match: /* Main state for %[ match */ + if (ch == ']') { + goto match_run; + } else if (ch == '-') { + range_start = (unsigned char)ch; + state = st_match_range; + } else { + set_bit(matchmap, (unsigned char)ch); + } + break; + + case st_match_range: /* %[ match after - */ + if (ch == ']') { + /* - was last character */ + set_bit(matchmap, (unsigned char)'-'); + goto match_run; + } else { + int i; + for (i = range_start; i < (unsigned char)ch; + i++) + set_bit(matchmap, i); + state = st_match; + } + break; + + match_run: /* Match expression finished */ + qq = q; + uc = 1; /* Anything nonzero */ + while (width && (uc = *q) + && test_bit(matchmap, uc)^matchinv) { + if (sarg) + *sarg++ = uc; + q++; + } + if (q != qq && sarg) { + *sarg = '\0'; + converted++; + } else { + bail = bail_err; + } + if (!uc) + bail = bail_eof; + break; + default: + break; + } + } + + if (bail == bail_eof && !converted) + converted = -1; /* Return EOF (-1) */ + + return converted; +} diff --git a/common/list/drv_list.h b/common/list/drv_list.h new file mode 100644 index 00000000..2ad8ef0f --- /dev/null +++ b/common/list/drv_list.h @@ -0,0 +1,468 @@ +/** + * @file drv_list.h + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __DRV_LIST_H__ +#define __DRV_LIST_H__ + +#include "string.h" +#include "stdint.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * container_of - return the member address of ptr, if the type of ptr is the + * struct type. + */ +#define container_of(ptr, type, member) \ + ((type *)((char *)(ptr) - (unsigned long)(&((type *)0)->member))) + + +/** + * Double List structure + */ +struct dlist_node +{ + struct dlist_node *next; /**< point to next node. */ + struct dlist_node *prev; /**< point to prev node. */ +}; +typedef struct dlist_node dlist_t; /**< Type for lists. */ + + +/** + * @brief initialize a list + * + * @param l list to be initialized + */ +static inline void dlist_init(dlist_t *l) +{ + l->next = l->prev = l; +} + +/** + * @brief insert a node after a list + * + * @param l list to insert it + * @param n new node to be inserted + */ +static inline void dlist_insert_after(dlist_t *l, dlist_t *n) +{ + l->next->prev = n; + n->next = l->next; + + l->next = n; + n->prev = l; +} + +/** + * @brief insert a node before a list + * + * @param n new node to be inserted + * @param l list to insert it + */ +static inline void dlist_insert_before(dlist_t *l, dlist_t *n) +{ + l->prev->next = n; + n->prev = l->prev; + + l->prev = n; + n->next = l; +} + +/** + * @brief remove node from list. + * @param n the node to remove from the list. + */ +static inline void dlist_remove(dlist_t *n) +{ + n->next->prev = n->prev; + n->prev->next = n->next; + + n->next = n->prev = n; +} + +/** + * @brief move node from list. + * @param n the node to remove from the list. + */ +static inline void dlist_move_head(dlist_t *l, dlist_t *n) +{ + dlist_remove(n); + dlist_insert_after(l,n); +} + +/** + * @brief move node from list. + * @param n the node to remove from the list. + */ +static inline void dlist_move_tail(dlist_t *l, dlist_t *n) +{ + dlist_remove(n); + dlist_insert_before(l,n); +} + +/** + * @brief tests whether a list is empty + * @param l the list to test. + */ +static inline int dlist_isempty(const dlist_t *l) +{ + return l->next == l; +} + +/** + * @brief get the list length + * @param l the list to get. + */ +static inline unsigned int dlist_len(const dlist_t *l) +{ + unsigned int len = 0; + const dlist_t *p = l; + while (p->next != l) + { + p = p->next; + len ++; + } + + return len; +} + +/** + * @brief initialize a dlist object + */ +#define DLIST_OBJECT_INIT(object) { &(object), &(object) } +/** + * @brief initialize a dlist object + */ +#define DLIST_DEFINE(list) \ + dlist_t list = { &(list), &(list) } + +/** + * dlist_first_entry - get the first element from a list + * @ptr: the list head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_struct within the struct. + * + * Note, that list is expected to be not empty. + */ +#define dlist_first_entry(ptr, type, member) \ + dlist_entry((ptr)->next, type, member) +/** + * dlist_first_entry_or_null - get the first element from a list + * @ptr: the list head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_struct within the struct. + * + * Note, that list is expected to be not empty. + */ +#define dlist_first_entry_or_null(ptr, type, member) \ + (dlist_isempty(ptr) ? NULL : dlist_first_entry(ptr, type, member)) + +/** + * @brief get the struct for this entry + * @param node the entry point + * @param type the type of structure + * @param member the name of list in structure + */ +#define dlist_entry(node, type, member) \ + container_of(node, type, member) + +/** + * dlist_for_each - iterate over a list + * @pos: the dlist_t * to use as a loop cursor. + * @head: the head for your list. + */ +#define dlist_for_each(pos, head) \ + for (pos = (head)->next; pos != (head); pos = pos->next) + +/** + * dlist_for_each_prev - iterate over a list + * @pos: the dlist_t * to use as a loop cursor. + * @head: the head for your list. + */ +#define dlist_for_each_prev(pos, head) \ + for (pos = (head)->prev; pos != (head); pos = pos->prev) + +/** + * dlist_for_each_safe - iterate over a list safe against removal of list entry + * @pos: the dlist_t * to use as a loop cursor. + * @n: another dlist_t * to use as temporary storage + * @head: the head for your list. + */ +#define dlist_for_each_safe(pos, n, head) \ + for (pos = (head)->next, n = pos->next; pos != (head); \ + pos = n, n = pos->next) + +#define dlist_for_each_prev_safe(pos, n, head) \ + for (pos = (head)->prev, n = pos->prev; pos != (head); \ + pos = n, n = pos->prev) +/** + * dlist_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define dlist_for_each_entry(pos, head, member) \ + for (pos = dlist_entry((head)->next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = dlist_entry(pos->member.next, typeof(*pos), member)) + +/** + * dlist_for_each_entry_reverse - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define dlist_for_each_entry_reverse(pos, head, member) \ + for (pos = dlist_entry((head)->prev, typeof(*pos), member); \ + &pos->member != (head); \ + pos = dlist_entry(pos->member.prev, typeof(*pos), member)) + +/** + * dlist_for_each_entry_safe - iterate over list of given type safe against removal of list entry + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define dlist_for_each_entry_safe(pos, n, head, member) \ + for (pos = dlist_entry((head)->next, typeof(*pos), member), \ + n = dlist_entry(pos->member.next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = n, n = dlist_entry(n->member.next, typeof(*n), member)) + +/** + * dlist_for_each_entry_safe - iterate over list of given type safe against removal of list entry + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define dlist_for_each_entry_safe_reverse(pos, n, head, member) \ + for (pos = dlist_entry((head)->prev, typeof(*pos), field), \ + n = dlist_entry(pos->member.prev, typeof(*pos), member); \ + &pos->member != (head); \ + pos = n, n = dlist_entry(pos->member.prev, typeof(*pos), member)) + +/** + * Single List structure + */ +struct slist_node +{ + struct slist_node *next; /**< point to next node. */ +}; +typedef struct slist_node slist_t; /**< Type for single list. */ + + +/** + * @brief initialize a single list + * + * @param l the single list to be initialized + */ +static inline void slist_init(slist_t *l) +{ + l->next = NULL; +} + +static inline void slist_add_head(slist_t *l, slist_t *n) +{ + n->next = l->next; + l->next = n; +} + +static inline void slist_add_tail(slist_t *l, slist_t *n) +{ + while (l->next) l = l->next; + + /* append the node to the tail */ + l->next = n; + n->next = NULL; +} + +static inline void slist_insert(slist_t *l, slist_t *next, slist_t *n) +{ + if (!next) + { + slist_add_tail(next, l); + return; + } + + while (l->next) + { + if (l->next == next) + { + l->next = n; + n->next = next; + } + + l = l->next; + } +} + +static inline slist_t *slist_remove(slist_t *l, slist_t *n) +{ + /* remove slist head */ + while (l->next && l->next != n) l = l->next; + + /* remove node */ + if (l->next != (slist_t *)0) l->next = l->next->next; + + return l; +} + +static inline unsigned int slist_len(const slist_t *l) +{ + unsigned int len = 0; + const slist_t *list = l->next; + while (list != NULL) + { + list = list->next; + len ++; + } + + return len; +} + +static inline unsigned int slist_contains(slist_t *l, slist_t *n) +{ + while (l->next) + { + if (l->next == n) + { + return 0; + } + + l = l->next; + } + + return 1; +} + +static inline slist_t *slist_head(slist_t *l) +{ + return l->next; +} + +static inline slist_t *slist_tail(slist_t *l) +{ + while (l->next) l = l->next; + + return l; +} + +static inline slist_t *slist_next(slist_t *n) +{ + return n->next; +} + +static inline int slist_isempty(slist_t *l) +{ + return l->next == NULL; +} + +/** + * @brief initialize a slist object + */ +#define SLIST_OBJECT_INIT(object) { NULL } + +/** + * @brief initialize a slist object + */ +#define SLIST_DEFINE(slist) \ + slist_t slist = { NULL } + +/** + * @brief get the struct for this single list node + * @param node the entry point + * @param type the type of structure + * @param member the name of list in structure + */ +#define slist_entry(node, type, member) \ + container_of(node, type, member) + +/** + * slist_first_entry - get the first element from a slist + * @ptr: the slist head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the slist_struct within the struct. + * + * Note, that slist is expected to be not empty. + */ +#define slist_first_entry(ptr, type, member) \ + slist_entry((ptr)->next, type, member) + +/** + * slist_tail_entry - get the tail element from a slist + * @ptr: the slist head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the slist_struct within the struct. + * + * Note, that slist is expected to be not empty. + */ +#define slist_tail_entry(ptr, type, member) \ + slist_entry(slist_tail(ptr), type, member) + +/** + * slist_first_entry_or_null - get the first element from a slist + * @ptr: the slist head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the slist_struct within the struct. + * + * Note, that slist is expected to be not empty. + */ +#define slist_first_entry_or_null(ptr, type, member) \ + (slist_isempty(ptr) ? NULL : slist_first_entry(ptr, type, member)) + +/** + * slist_for_each - iterate over a single list + * @pos: the slist_t * to use as a loop cursor. + * @head: the head for your single list. + */ +#define slist_for_each(pos, head) \ + for (pos = (head)->next; pos != NULL; pos = pos->next) + +#define slist_for_each_safe(pos, next, head) \ + for (pos = (head)->next, next = pos->next; pos; \ + pos = next, next = pos->next) + +/** + * slist_for_each_entry - iterate over single list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your single list. + * @member: the name of the list_struct within the struct. + */ +#define slist_for_each_entry(pos, head, member) \ + for (pos = slist_entry((head)->next, typeof(*pos), member); \ + &pos->member != (NULL); \ + pos = slist_entry(pos->member.next, typeof(*pos), member)) + +#define slist_for_each_entry_safe(pos, n, head, member) \ + for (pos = slist_entry((head)->next, typeof(*pos), member), \ + n = slist_entry(pos->member.next, typeof(*pos), member); \ + &pos->member != (NULL); \ + pos = n, n = slist_entry(pos->member.next, typeof(*pos), member)) + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/common/memheap/drv_mmheap.c b/common/memheap/drv_mmheap.c new file mode 100644 index 00000000..f88f8cc7 --- /dev/null +++ b/common/memheap/drv_mmheap.c @@ -0,0 +1,768 @@ +/** + * @file drv_mmheap.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "drv_mmheap.h" + +mmheap_ctl_t mmheap_ctl; + +static int generic_fls(uint32_t x) +{ + int r = 32; + if (!x) + return 0; + + if (!(x & 0xffff0000u)) { + x <<= 16; + r -= 16; + } + if (!(x & 0xff000000u)) { + x <<= 8; + r -= 8; + } + if (!(x & 0xf0000000u)) { + x <<= 4; + r -= 4; + } + if (!(x & 0xc0000000u)) { + x <<= 2; + r -= 2; + } + if (!(x & 0x80000000u)) { + x <<= 1; + r -= 1; + } + return r; +} + +static int __ffs(uint32_t word) +{ + return generic_fls(word & (~word + 1)) - 1; +} + +static int __fls(uint32_t word) +{ + return generic_fls(word) - 1; +} + +static inline size_t blk_size(const mmheap_blk_t *blk) +{ + return blk->size & MMHEAP_BLOCK_SIZE_MASK; +} + +static inline void blk_set_size(mmheap_blk_t *blk, size_t size) +{ + blk->size = size | (blk->size & MMHEAP_BLOCK_STATE_MASK); +} + +static inline int blk_is_last(const mmheap_blk_t* blk) +{ + return blk_size(blk) == 0; +} + +static inline int blk_is_free(const mmheap_blk_t *blk) +{ + return blk->size & MMHEAP_BLOCK_CURR_FREE; +} + +static inline void blk_set_free(mmheap_blk_t *blk) +{ + blk->size |= MMHEAP_BLOCK_CURR_FREE; +} + +static inline void blk_set_used(mmheap_blk_t *blk) +{ + blk->size &= ~MMHEAP_BLOCK_CURR_FREE; +} + +static inline int blk_is_prev_free(const mmheap_blk_t *blk) +{ + return blk->size & MMHEAP_BLOCK_PREV_FREE; +} + +static inline void blk_set_prev_free(mmheap_blk_t *blk) +{ + blk->size |= MMHEAP_BLOCK_PREV_FREE; +} + +static void blk_set_prev_used(mmheap_blk_t *blk) +{ + blk->size &= ~MMHEAP_BLOCK_PREV_FREE; +} + +static inline mmheap_blk_t *blk_from_ptr(const void *ptr) +{ + return (mmheap_blk_t *)((uint32_t)ptr - MMHEAP_BLK_START_OFFSET); +} + +static inline void *blk_to_ptr(const mmheap_blk_t *blk) +{ + return (void *)((uint32_t)blk + MMHEAP_BLK_START_OFFSET); +} + +/* Return location of next block after block of given size. */ +static inline mmheap_blk_t *offset_to_blk(const void *ptr, int diff) +{ + return (mmheap_blk_t *)((uint32_t)ptr + diff); +} + +/* Return location of previous block. */ +static inline mmheap_blk_t *blk_prev(const mmheap_blk_t *blk) +{ + return blk->prev_phys_blk; +} + +/* Return location of next existing block. */ +static mmheap_blk_t *blk_next(const mmheap_blk_t *blk) +{ + mmheap_blk_t *next_blk; + + next_blk = offset_to_blk(blk_to_ptr(blk), blk_size(blk) - MMHEAP_BLK_HEADER_OVERHEAD); + return next_blk; +} + +/* Link a new block with its physical neighbor, return the neighbor. */ +static mmheap_blk_t *blk_link_next(mmheap_blk_t *blk) +{ + mmheap_blk_t *next_blk; + + next_blk = blk_next(blk); + next_blk->prev_phys_blk = blk; + return next_blk; +} + +static void blk_mark_as_free(mmheap_blk_t *blk) +{ + mmheap_blk_t *next_blk; + + /* Link the block to the next block, first. */ + next_blk = blk_link_next(blk); + blk_set_prev_free(next_blk); + blk_set_free(blk); +} + +static void blk_mark_as_used(mmheap_blk_t *blk) +{ + mmheap_blk_t *next_blk; + + next_blk = blk_next(blk); + blk_set_prev_used(next_blk); + blk_set_used(blk); +} + +static inline size_t align_up(size_t x, size_t align) +{ + return (x + (align - 1)) & ~(align - 1); +} + +static inline size_t align_down(size_t x, size_t align) +{ + return x - (x & (align - 1)); +} + +static inline void *align_ptr(const void *ptr, size_t align) +{ + return (void *)(((uint32_t)ptr + (align -1)) & ~(align -1)); +} + +/* +** Adjust an allocation size to be aligned to word size, and no smaller +** than internal minimum. +*/ +static size_t adjust_request_size(size_t size, size_t align) +{ + size_t adjust_size = 0; + + if (!size) { + return 0; + } + + adjust_size = align_up(size, align); + if (adjust_size > MMHEAP_BLK_SIZE_MAX) { + return 0; + } + + /* aligned sized must not exceed block_size_max or we'll go out of bounds on sl_bitmap */ + return adjust_size > MMHEAP_BLK_SIZE_MIN ? adjust_size : MMHEAP_BLK_SIZE_MIN; +} + +/* +** TLSF utility functions. In most cases, these are direct translations of +** the documentation found in the white paper. +*/ +static void mapping_insert(size_t size, int *fli, int *sli) +{ + int fl, sl; + + if (size < MMHEAP_SMALL_BLOCK_SIZE) { + /* Store small blocks in first list. */ + fl = 0; + sl = (int)size / (MMHEAP_SMALL_BLOCK_SIZE / MMHEAP_SL_INDEX_COUNT); + } else { + fl = __fls(size); + sl = ((int)size >> (fl - MMHEAP_SL_INDEX_COUNT_LOG2)) ^ (1 << MMHEAP_SL_INDEX_COUNT_LOG2); + fl -= (MMHEAP_FL_INDEX_SHIFT - 1); + } + *fli = fl; + *sli = sl; +} + +/* This version rounds up to the next block size (for allocations) */ +static void mapping_search(size_t size, int *fli, int *sli) +{ + size_t round; + + if (size >= MMHEAP_SMALL_BLOCK_SIZE) { + round = (1 << (__fls(size) - MMHEAP_SL_INDEX_COUNT_LOG2)) - 1; + size += round; + } + mapping_insert(size, fli, sli); +} + +static mmheap_blk_t *blk_search_suitable(int *fli, int *sli) +{ + int fl, sl; + uint32_t sl_map, fl_map; + + fl = *fli; + sl = *sli; + + /* + ** First, search for a block in the list associated with the given + ** fl/sl index. + */ + sl_map = mmheap_ctl.sl_bitmap[fl] & (~0U << sl); + if (!sl_map) { + /* No block exists. Search in the next largest first-level list. */ + fl_map = mmheap_ctl.fl_bitmap & (~0U << (fl + 1)); + if (!fl_map) { + /* No free blocks available, memory has been exhausted. */ + return 0; + } + + fl = __ffs(fl_map); + *fli = fl; + sl_map = mmheap_ctl.sl_bitmap[fl]; + } + sl = __ffs(sl_map); + *sli = sl; + + /* Return the first block in the free list. */ + return mmheap_ctl.blocks[fl][sl]; +} + +/* Insert a free block into the free block list. */ +static void insert_free_block(mmheap_blk_t *blk, int fl, int sl) +{ + mmheap_blk_t *curr; + + curr = mmheap_ctl.blocks[fl][sl]; + blk->next_free = curr; + blk->prev_free = &mmheap_ctl.block_null; + curr->prev_free = blk; + + /* + ** Insert the new block at the head of the list, and mark the first- + ** and second-level bitmaps appropriately. + */ + mmheap_ctl.blocks[fl][sl] = blk; + mmheap_ctl.fl_bitmap |= (1 << fl); + mmheap_ctl.sl_bitmap[fl] |= (1 << sl); +} + +/* Remove a free block from the free list.*/ +static void remove_free_block(mmheap_blk_t *blk, int fl, int sl) +{ + mmheap_blk_t *prev_blk; + mmheap_blk_t *next_blk; + + prev_blk = blk->prev_free; + next_blk = blk->next_free; + next_blk->prev_free = prev_blk; + prev_blk->next_free = next_blk; + + /* If this block is the head of the free list, set new head. */ + if (mmheap_ctl.blocks[fl][sl] == blk) { + mmheap_ctl.blocks[fl][sl] = next_blk; + + /* If the new head is null, clear the bitmap. */ + if (next_blk == &mmheap_ctl.block_null) { + mmheap_ctl.sl_bitmap[fl] &= ~(1 << sl); + + /* If the second bitmap is now empty, clear the fl bitmap. */ + if (!mmheap_ctl.sl_bitmap[fl]) { + mmheap_ctl.fl_bitmap &= ~(1 << fl); + } + } + } +} + +/* Remove a given block from the free list. */ +static void blk_remove(mmheap_blk_t *blk) +{ + int fl, sl; + + mapping_insert(blk_size(blk), &fl, &sl); + remove_free_block(blk, fl, sl); +} + +/* Insert a given block into the free list. */ +static void blk_insert(mmheap_blk_t *blk) +{ + int fl, sl; + + mapping_insert(blk_size(blk), &fl, &sl); + insert_free_block(blk, fl, sl); +} + +static int blk_can_split(mmheap_blk_t *blk, size_t size) +{ + return blk_size(blk) >= sizeof(mmheap_blk_t) + size; +} + +/* Split a block into two, the second of which is free. */ +static mmheap_blk_t *blk_split(mmheap_blk_t *blk, size_t size) +{ + mmheap_blk_t *remaining; + size_t remain_size; + + /* Calculate the amount of space left in the remaining block. */ + remaining = offset_to_blk(blk_to_ptr(blk), size - MMHEAP_BLK_HEADER_OVERHEAD); + remain_size = blk_size(blk) - (size + MMHEAP_BLK_HEADER_OVERHEAD); + + blk_set_size(remaining, remain_size); + + blk_set_size(blk, size); + blk_mark_as_free(remaining); + + return remaining; +} + +/* Absorb a free block's storage into an adjacent previous free block. */ +static mmheap_blk_t *blk_absorb(mmheap_blk_t *prev_blk, mmheap_blk_t *blk) +{ + prev_blk->size += blk_size(blk) + MMHEAP_BLK_HEADER_OVERHEAD; + blk_link_next(prev_blk); + return prev_blk; +} + +/* Merge a just-freed block with an adjacent previous free block. */ +static mmheap_blk_t *blk_merge_prev(mmheap_blk_t *blk) +{ + mmheap_blk_t *prev_blk; + + if (blk_is_prev_free(blk)) { + prev_blk = blk_prev(blk); + blk_remove(prev_blk); + blk = blk_absorb(prev_blk, blk); + } + + return blk; +} + +/* Merge a just-freed block with an adjacent free block. */ +static mmheap_blk_t *blk_merge_next(mmheap_blk_t *blk) +{ + mmheap_blk_t *next_blk; + + next_blk = blk_next(blk); + if (blk_is_free(next_blk)) { + blk_remove(next_blk); + blk = blk_absorb(blk, next_blk); + } + + return blk; +} + +/* Trim any trailing block space off the end of a block, return to pool. */ +static void blk_trim_free(mmheap_blk_t *blk, size_t size) +{ + mmheap_blk_t *remaining_blk; + + if (blk_can_split(blk, size)) { + remaining_blk = blk_split(blk, size); + blk_link_next(blk); + blk_set_prev_free(remaining_blk); + blk_insert(remaining_blk); + } +} + +/* Trim any trailing block space off the end of a used block, return to pool. */ +static void blk_trim_used(mmheap_blk_t *blk, size_t size) +{ + mmheap_blk_t *remaining_blk; + + if (blk_can_split(blk, size)) { + /* If the next block is free, we must coalesce. */ + remaining_blk = blk_split(blk, size); + blk_set_prev_used(remaining_blk); + + remaining_blk = blk_merge_next(remaining_blk); + blk_insert(remaining_blk); + } +} + +static mmheap_blk_t *blk_trim_free_leading(mmheap_blk_t *blk, size_t size) +{ + mmheap_blk_t *remaining_blk; + + remaining_blk = blk; + if (blk_can_split(blk, size)) { + /* We want the 2nd block. */ + remaining_blk = blk_split(blk, size - MMHEAP_BLK_HEADER_OVERHEAD); + blk_set_prev_free(remaining_blk); + + blk_link_next(blk); + blk_insert(blk); + } + + return remaining_blk; +} + +static mmheap_blk_t *blk_locate_free(size_t size) +{ + int fl = 0, sl = 0; + mmheap_blk_t *blk = NULL; + + if (!size) { + return NULL; + } + + mapping_search(size, &fl, &sl); + + /* + ** mapping_search can futz with the size, so for excessively large sizes it can sometimes wind up + ** with indices that are off the end of the block array. + ** So, we protect against that here, since this is the only callsite of mapping_search. + ** Note that we don't need to check sl, since it comes from a modulo operation that guarantees it's always in range. + */ + if (fl < MMHEAP_FL_INDEX_COUNT) { + blk = blk_search_suitable(&fl, &sl); + } + + if (blk) { + remove_free_block(blk, fl, sl); + } + + return blk; +} + +static void *blk_prepare_used(mmheap_blk_t *blk, size_t size) +{ + if (!blk) { + return NULL; + } + blk_trim_free(blk, size); + blk_mark_as_used(blk); + return blk_to_ptr(blk); +} + +static void control_construct(void) +{ + int i, j; + + mmheap_ctl.pool_cnt = 0u; + for (i = 0; i < MMHEAP_POOL_MAX; ++i) { + mmheap_ctl.pool_start[i] = (void *)NULL; + } + + mmheap_ctl.block_null.next_free = &mmheap_ctl.block_null; + mmheap_ctl.block_null.prev_free = &mmheap_ctl.block_null; + + mmheap_ctl.fl_bitmap = 0; + for (i = 0; i < MMHEAP_FL_INDEX_COUNT; ++i) { + mmheap_ctl.sl_bitmap[i] = 0; + for (j = 0; j < MMHEAP_SL_INDEX_COUNT; ++j) { + mmheap_ctl.blocks[i][j] = &mmheap_ctl.block_null; + } + } +} + +static inline int mmheap_pool_is_full(void) +{ + return mmheap_ctl.pool_cnt == MMHEAP_POOL_MAX; +} + +static int mmheap_pool_is_exist(void *pool_start) +{ + int i = 0; + + for (i = 0; i < mmheap_ctl.pool_cnt; ++i) { + if (mmheap_ctl.pool_start[i] == pool_start) { + return 1; + } + } + return 0; +} + +static inline void mmheap_pool_record(void *pool_start) +{ + mmheap_ctl.pool_start[mmheap_ctl.pool_cnt++] = pool_start; +} + +static void mmheap_pool_unrecord(void *pool_start) +{ + int i = 0; + + for (i = 0; i < mmheap_ctl.pool_cnt; ++i) { + if (mmheap_ctl.pool_start[i] == pool_start) { + break; + } + } + if (i != mmheap_ctl.pool_cnt - 1) { + mmheap_ctl.pool_start[i] = mmheap_ctl.pool_start[mmheap_ctl.pool_cnt - 1]; + } + --mmheap_ctl.pool_cnt; +} + + +int mmheap_init_with_pool(void *pool_start, size_t pool_size) +{ + control_construct(); + + return mmheap_pool_add(pool_start, pool_size); +} + +void *mmheap_alloc(size_t size) +{ + size_t adjust_size; + mmheap_blk_t *blk; + + adjust_size = adjust_request_size(size, MMHEAP_ALIGN_SIZE); + blk = blk_locate_free(adjust_size); + if (!blk) { + return NULL; + } + + return blk_prepare_used(blk, adjust_size); +} + +void *mmheap_calloc(size_t num, size_t size) +{ + void *ptr; + + ptr = mmheap_alloc(num * size); + if (ptr) { + memset(ptr, 0, num * size); + } + + return ptr; +} + +void *mmheap_aligned_alloc(size_t size, size_t align) +{ + mmheap_blk_t *blk; + void *ptr, *aligned, *next_aligned; + size_t adjust_size, aligned_size; + size_t gap_minimum, size_with_gap, gap, gap_remain, offset; + + adjust_size = adjust_request_size(size, MMHEAP_ALIGN_SIZE); + gap_minimum = sizeof(mmheap_blk_t); + size_with_gap = adjust_request_size(adjust_size + align + gap_minimum, align); + aligned_size = (adjust_size && align > MMHEAP_ALIGN_SIZE) ? size_with_gap : adjust_size; + + blk = blk_locate_free(aligned_size); + if (!blk) { + return NULL; + } + + ptr = blk_to_ptr(blk); + aligned = align_ptr(ptr, align); + gap = (size_t)((uint32_t)aligned - (uint32_t)ptr); + + if (gap && gap < gap_minimum) { + gap_remain = gap_minimum - gap; + offset = gap_remain > align ? gap_remain : align; + next_aligned = (void *)((uint32_t)aligned + offset); + + aligned = align_ptr(next_aligned, align); + gap = (size_t)((uint32_t)aligned - (uint32_t)ptr); + } + + if (gap) { + blk = blk_trim_free_leading(blk, gap); + } + + return blk_prepare_used(blk, adjust_size); +} + +void mmheap_free(void *ptr) +{ + mmheap_blk_t *blk; + + if (!ptr) { + return; + } + + blk = blk_from_ptr(ptr); + blk_mark_as_free(blk); + blk = blk_merge_prev(blk); + blk = blk_merge_next(blk); + blk_insert(blk); +} + +void *mmheap_realloc(void *ptr, size_t size) +{ + void *p = 0; + mmheap_blk_t *curr_blk, *next_blk; + size_t curr_size, combined_size, adjust_size, min_size; + + if (ptr && size == 0) { + mmheap_free(ptr); + return NULL; + } + + if (!ptr) { + return mmheap_alloc(size); + } + + curr_blk = blk_from_ptr(ptr); + next_blk = blk_next(curr_blk); + + curr_size = blk_size(curr_blk); + combined_size = curr_size + blk_size(next_blk) + MMHEAP_BLK_HEADER_OVERHEAD; + adjust_size = adjust_request_size(size, MMHEAP_ALIGN_SIZE); + + if (adjust_size > curr_size && (!blk_is_free(next_blk) || adjust_size > combined_size)) { + p = mmheap_alloc(size); + if (p) { + min_size = curr_size < size ? curr_size : size; + memcpy(p, ptr, min_size); + mmheap_free(ptr); + } + } else { + if (adjust_size > curr_size) { + blk_merge_next(curr_blk); + blk_mark_as_used(curr_blk); + } + + blk_trim_used(curr_blk, adjust_size); + p = ptr; + } + + return p; +} + +int mmheap_pool_add(void *pool_start, size_t pool_size) +{ + mmheap_blk_t *curr_blk; + mmheap_blk_t *next_blk; + size_t size_aligned; + + if (mmheap_pool_is_full()) { + return MEMHEAP_STATUS_OVERFLOW; + } + + if (mmheap_pool_is_exist(pool_start)) { + return MEMHEAP_STATUS_ALREADY_EXIST; + } + + size_aligned = align_down(pool_size - 2 * MMHEAP_BLK_HEADER_OVERHEAD, MMHEAP_ALIGN_SIZE); + + if (((uint32_t)pool_start % MMHEAP_ALIGN_SIZE) != 0u) { + return MEMHEAP_STATUS_INVALID_ADDR; + } + + if (size_aligned < MMHEAP_BLK_SIZE_MIN || + size_aligned > MMHEAP_BLK_SIZE_MAX) { + return MEMHEAP_STATUS_INVALID_SIZE; + } + + /* + ** Create the main free block. Offset the start of the block slightly + ** so that the prev_phys_block field falls outside of the pool - + ** it will never be used. + */ + curr_blk = offset_to_blk(pool_start, -MMHEAP_BLK_HEADER_OVERHEAD); + blk_set_size(curr_blk, size_aligned); + blk_set_free(curr_blk); + blk_set_prev_used(curr_blk); + blk_insert(curr_blk); + + /* Split the block to create a zero-size sentinel block. */ + next_blk = blk_link_next(curr_blk); + blk_set_size(next_blk, 0); + blk_set_used(next_blk); + blk_set_prev_free(next_blk); + + mmheap_pool_record(pool_start); + + return MEMHEAP_STATUS_OK; +} + + int mmheap_pool_rmv(void *pool_start) +{ + int fl = 0, sl = 0; + mmheap_blk_t *blk; + + if (!mmheap_pool_is_exist(pool_start)) { + return MEMHEAP_STATUS_ALREADY_NOT_EXIST; + } + + blk = offset_to_blk(pool_start, -MMHEAP_BLK_HEADER_OVERHEAD); + mapping_insert(blk_size(blk), &fl, &sl); + remove_free_block(blk, fl, sl); + + mmheap_pool_unrecord(pool_start); + return MEMHEAP_STATUS_OK; +} + + int mmheap_pool_check(void *pool_start, mmheap_info_t *info) +{ + mmheap_blk_t* blk; + + memset(info, 0, sizeof(mmheap_info_t)); + + blk = offset_to_blk(pool_start, -MMHEAP_BLK_HEADER_OVERHEAD); + + while (blk && !blk_is_last(blk)) { + if (blk_is_free(blk)) { + info->free += blk_size(blk); + } else { + info->used += blk_size(blk); + } + blk = blk_next(blk); + } + + return MEMHEAP_STATUS_OK; +} + + +int mmheap_check(mmheap_info_t *info) +{ + int i; + int err; + mmheap_info_t pool_info; + + memset(info, 0, sizeof(mmheap_info_t)); + + for (i = 0; i < mmheap_ctl.pool_cnt; ++i) { + err = mmheap_pool_check(mmheap_ctl.pool_start[i], &pool_info); + if (err != MEMHEAP_STATUS_OK) { + return err; + } + + info->free += pool_info.free; + info->used += pool_info.used; + } + + return 0; +} diff --git a/common/memheap/drv_mmheap.h b/common/memheap/drv_mmheap.h new file mode 100644 index 00000000..795210a8 --- /dev/null +++ b/common/memheap/drv_mmheap.h @@ -0,0 +1,196 @@ +/** + * @file drv_mmheap.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef _DRV_MMHEAP_H_ +#define _DRV_MMHEAP_H_ + +#include "stdint.h" +#include "string.h" + +#define MEMHEAP_STATUS_OK 0 +#define MEMHEAP_STATUS_INVALID_ADDR -1 +#define MEMHEAP_STATUS_INVALID_SIZE -2 +#define MEMHEAP_STATUS_OVERFLOW -3 +#define MEMHEAP_STATUS_ALREADY_NOT_EXIST -4 +#define MEMHEAP_STATUS_ALREADY_EXIST -5 + +/** + * log2 of number of linear subdivisions of block sizes. Larger + * values require more memory in the control structure. Values of + * 4 or 5 are typical. + */ +#define MMHEAP_SL_INDEX_COUNT_LOG2 5 + +/* All allocation sizes and addresses are aligned to 4 bytes. */ +#define MMHEAP_ALIGN_SIZE_LOG2 2 +#define MMHEAP_ALIGN_SIZE (1 << MMHEAP_ALIGN_SIZE_LOG2) + +/* + * We support allocations of sizes up to (1 << MMHEAP_FL_INDEX_MAX) bits. + * However, because we linearly subdivide the second-level lists, and + * our minimum size granularity is 4 bytes, it doesn't make sense to + * create first-level lists for sizes smaller than K_MMHEAP_SL_INDEX_COUNT * 4, + * or (1 << (K_MMHEAP_SL_INDEX_COUNT_LOG2 + 2)) bytes, as there we will be + * trying to split size ranges into more slots than we have available. + * Instead, we calculate the minimum threshold size, and place all + * blocks below that size into the 0th first-level list. + */ +#define MMHEAP_FL_INDEX_MAX 30 +#define MMHEAP_SL_INDEX_COUNT (1 << MMHEAP_SL_INDEX_COUNT_LOG2) +#define MMHEAP_FL_INDEX_SHIFT (MMHEAP_SL_INDEX_COUNT_LOG2 + MMHEAP_ALIGN_SIZE_LOG2) +#define MMHEAP_FL_INDEX_COUNT (MMHEAP_FL_INDEX_MAX - MMHEAP_FL_INDEX_SHIFT + 1) + +#define MMHEAP_SMALL_BLOCK_SIZE (1 << MMHEAP_FL_INDEX_SHIFT) + +#define MMHEAP_BLOCK_CURR_FREE (1 << 0) +#define MMHEAP_BLOCK_PREV_FREE (1 << 1) +#define MMHEAP_BLOCK_SIZE_MASK ~(MMHEAP_BLOCK_CURR_FREE | MMHEAP_BLOCK_PREV_FREE) +#define MMHEAP_BLOCK_STATE_MASK (MMHEAP_BLOCK_CURR_FREE | MMHEAP_BLOCK_PREV_FREE) + +typedef struct +{ + uint32_t used; /* space is used */ + uint32_t free; /* space is free */ +} mmheap_info_t; + +/** + * Block structure. + * + * There are several implementation subtleties involved: + * - The prev_phys_block field is only valid if the previous block is free. + * - The prev_phys_block field is actually stored at the end of the + * previous block. It appears at the beginning of this structure only to + * simplify the implementation. + * - The next_free / prev_free fields are only valid if the block is free. + */ +typedef struct mmheap_blk_st { + struct mmheap_blk_st *prev_phys_blk; + + size_t size; + + struct mmheap_blk_st *next_free; + struct mmheap_blk_st *prev_free; +} mmheap_blk_t; + +/** + * A free block must be large enough to store its header minus the size of + * the prev_phys_block field, and no larger than the number of addressable + * bits for FL_INDEX. + */ +#define MMHEAP_BLK_SIZE_MIN (sizeof(mmheap_blk_t) - sizeof(mmheap_blk_t *)) +#define MMHEAP_BLK_SIZE_MAX (1 << MMHEAP_FL_INDEX_MAX) + +#define MMHEAP_BLK_HEADER_OVERHEAD (sizeof(size_t)) +#define MMHEAP_BLK_START_OFFSET (((uint32_t)&(((mmheap_blk_t *)0)->size))+ sizeof(size_t)) + +#define MMHEAP_POOL_MAX 3 + +/** + * memory heap control + */ +typedef struct +{ + int pool_cnt; + void *pool_start[MMHEAP_POOL_MAX]; + + mmheap_blk_t block_null; /**< Empty lists point at this block to indicate they are free. */ + + uint32_t fl_bitmap; /**< Bitmaps for free lists. */ + uint32_t sl_bitmap[MMHEAP_FL_INDEX_COUNT]; + + mmheap_blk_t *blocks[MMHEAP_FL_INDEX_COUNT][MMHEAP_SL_INDEX_COUNT]; /**< Head of free lists. */ +} mmheap_ctl_t; + +/** + * @brief Add a pool. + * Add addtional pool to the heap. + * + * @attention None + * + * @param[in] pool_start start address of the pool. + * @param[in] pool_size size of the pool. + * + * @return errcode + */ +int mmheap_pool_add(void *pool_start, size_t pool_size); + +/** + * @brief Alloc memory. + * Allocate size bytes and returns a pointer to the allocated memory. + * + * @attention size should no bigger than MMHEAP_BLK_SIZE_MAX. + * + * @param[in] size size of the memory. + * + * @return the pointer to the allocated memory. + */ +void *mmheap_alloc(size_t size); + +void *mmheap_calloc(size_t num, size_t size); + +/** + * @brief Alloc start address aligned memory from the heap. + * Alloc aligned address and specified size memory from the heap. + * + * @attention + * + * @param[in] size size of the memory. + * @param[in] align address align mask of the memory. + * + * @return the pointer to the allocated memory. + */ +void *mmheap_aligned_alloc(size_t size, size_t align); + +/** + * @brief Realloc memory from the heap. + * Change the size of the memory block pointed to by ptr to size bytes. + * + * @attention + *
    + *
  • if ptr is NULL, then the call is equivalent to mmheap_alloc(size), for all values of size. + *
  • if ptr is if size is equal to zero, and ptr is not K_NULL, then the call is equivalent to mmheap_free(ptr). + *
+ * + * @param[in] ptr old pointer to the memory space. + * @param[in] size new size of the memory space. + * + * @return the new pointer to the allocated memory. + */ +void *mmheap_realloc(void *ptr, size_t size); + +/** + * @brief Free the memory. + * Free the memory space pointed to by ptr, which must have been returned by a previous call to mmheap_alloc(), mmheap_aligned_alloc(), or mmheap_realloc(). + * + * @attention + * + * @param[in] ptr pointer to the memory. + * + * @return None. + */ +void mmheap_free(void *ptr); + + +int mmheap_init_with_pool(void *pool_start, size_t pool_size); + + +#endif /* _DRV_MMHEAP_H_ */ \ No newline at end of file diff --git a/common/misc/gcc.h b/common/misc/gcc.h new file mode 100644 index 00000000..0a28471b --- /dev/null +++ b/common/misc/gcc.h @@ -0,0 +1,85 @@ +/** + * @file gcc.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef _GCC_H +#define _GCC_H + +/*------------------ RealView Compiler -----------------*/ +#if defined(__GNUC__) + +#define __ASM__ __asm +#define __VOLATILE__ volatile + +#define __INLINE__ inline +#define __STATIC__ static +#define __STATIC_INLINE__ static inline + +#define likely(x) __builtin_expect(!!(x), 1) +#define unlikely(x) __builtin_expect(!!(x), 0) +#define __UNUSED__ __attribute__((__unused__)) +#define __USED__ __attribute__((__used__)) +#define __PACKED__ __attribute__((packed)) +#define __ALIGNED__(x) __attribute__((aligned(x))) +#define __PURE__ __attribute__((__pure__)) +#define __CONST__ __attribute__((__const__)) +#define __NO_RETURN__ __attribute__((__noreturn__)) +#define __NAKED__ __attribute__((naked)) +#define __WEAK__ __attribute__((weak)) +#define SECTION(x) __attribute__((section(x))) +#define __API__ __declspec(dllexport) + +#endif + +#ifdef __GNUC__ + +#define WARN_UNUSED_RET __attribute__ ((warn_unused_result)) +#define WEAK __attribute__ ((weak)) + +#ifndef PACK_START +#define PACK_START +#endif +#ifndef PACK_END +#define PACK_END __attribute__((packed)) +#endif +#define NORETURN __attribute__ ((noreturn)) + +/* alignment value should be a power of 2 */ +#define ALIGN(num, align) MASK(num, (typeof(num))align - 1) + +#define ALIGN_2(num) ALIGN(num, 2) +#define ALIGN_4(num) ALIGN(num, 4) +#define ALIGN_8(num) ALIGN(num, 8) +#define ALIGN_16(num) ALIGN(num, 16) +#define ALIGN_32(num) ALIGN(num, 32) + +#else /* __GNUC__ */ + +#define WARN_UNUSED_RET +#define WEAK __weak + +#define PACK_START __packed +#define PACK_END +#define NORETURN + +#endif /* __GNUC__ */ + +#endif \ No newline at end of file diff --git a/common/misc/misc.c b/common/misc/misc.c new file mode 100644 index 00000000..53bed6c8 --- /dev/null +++ b/common/misc/misc.c @@ -0,0 +1,220 @@ +/** + * @file misc.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "misc.h" + +#ifndef BFLB_USE_ROM_DRIVER +/****************************************************************************/ /** + * @brief Char memcpy + * + * @param dst: Destination + * @param src: Source + * @param n: Count of char + * + * @return Destination pointer + * + *******************************************************************************/ +__WEAK__ +void *ATTR_TCM_SECTION arch_memcpy(void *dst, const void *src, uint32_t n) +{ + const uint8_t *p = src; + uint8_t *q = dst; + + while (n--) + { + *q++ = *p++; + } + return dst; +} + +/****************************************************************************/ /** + * @brief Word memcpy + * + * @param dst: Destination + * @param src: Source + * @param n: Count of words + * + * @return Destination pointer + * + *******************************************************************************/ +__WEAK__ +uint32_t *ATTR_TCM_SECTION arch_memcpy4(uint32_t *dst, const uint32_t *src, uint32_t n) +{ + const uint32_t *p = src; + uint32_t *q = dst; + + while (n--) + { + *q++ = *p++; + } + return dst; +} + +/****************************************************************************/ /** + * @brief Fast memcpy + * + * @param dst: Destination + * @param src: Source + * @param n: Count of bytes + * + * @return Destination pointer + * + *******************************************************************************/ +__WEAK__ +void *ATTR_TCM_SECTION arch_memcpy_fast(void *pdst, const void *psrc, uint32_t n) +{ + uint32_t left, done, i = 0; + uint8_t *dst = (uint8_t *)pdst; + uint8_t *src = (uint8_t *)psrc; + + if (((uint32_t)dst & 0x3) == 0 && ((uint32_t)src & 0x3) == 0) + { + arch_memcpy4((uint32_t *)dst, (const uint32_t *)src, n >> 2); + left = n % 4; + done = n - left; + while (i < left) + { + dst[done + i] = src[done + i]; + i++; + } + } + else + { + memcpy(dst, src, n); + } + return dst; +} + +/****************************************************************************/ /** + * @brief char memset + * + * @param dst: Destination + * @param val: Value to set + * @param n: Count of char + * + * @return Destination pointer + * + *******************************************************************************/ +__WEAK__ +void *ATTR_TCM_SECTION arch_memset(void *s, uint8_t c, uint32_t n) +{ + uint8_t *p = (uint8_t *)s; + + while (n > 0) + { + *p++ = (uint8_t)c; + --n; + } + return s; +} +/****************************************************************************/ /** + * @brief Word memset + * + * @param dst: Destination + * @param val: Value to set + * @param n: Count of words + * + * @return Destination pointer + * + *******************************************************************************/ +__WEAK__ +uint32_t *ATTR_TCM_SECTION arch_memset4(uint32_t *dst, const uint32_t val, uint32_t n) +{ + uint32_t *q = dst; + + while (n--) + { + *q++ = val; + } + return dst; +} + +/****************************************************************************/ /** + * @brief string compare + * + * @param s1: string 1 + * @param s2: string 2 + * @param n: Count of chars + * + * @return compare result + * + *******************************************************************************/ +__WEAK__ +int ATTR_TCM_SECTION arch_memcmp(const void *s1, const void *s2, uint32_t n) +{ + const unsigned char *c1 = s1, *c2 = s2; + int d = 0; + + while (n--) + { + d = (int)*c1++ - (int)*c2++; + if (d) + break; + } + + return d; +} +#endif + +void memcopy_to_fifo(void* fifo_addr,uint8_t* data,uint32_t length) +{ + uint8_t *p = (uint8_t *)fifo_addr; + uint8_t *q = data; + + while (length--) { + *p = *q++; + } +} + +void fifocopy_to_mem(void* fifo_addr,uint8_t* data,uint32_t length) +{ + uint8_t *p = (uint8_t *)fifo_addr; + uint8_t *q = data; + + while (length--) { + *q++ = *p; + } +} + +#ifdef DEBUG +/******************************************************************************* +* @brief Reports the name of the source file and the source line number +* where the CHECK_PARAM error has occurred. + +* @param file: Pointer to the source file name +* @param line: assert_param error line source number + +* @return None +*******************************************************************************/ +void check_failed(uint8_t *file, uint32_t line) +{ + /* Infinite loop */ + while (1) + ; +} +#endif /* DEBUG */ + +/*@} end of group DRIVER_Public_Functions */ + +/*@} end of group DRIVER_COMMON */ + +/*@} end of group BL602_Periph_Driver */ diff --git a/common/misc/misc.h b/common/misc/misc.h new file mode 100644 index 00000000..cafb5d81 --- /dev/null +++ b/common/misc/misc.h @@ -0,0 +1,204 @@ +/** + * @file misc.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef _MISC_H +#define _MISC_H + +#include "stdio.h" +#include "stdint.h" +#include "string.h" +#include "stdarg.h" +#include "stdbool.h" +#include "gcc.h" +/*@} end of group COMMON_Public_Types */ + +/** @defgroup COMMON_Public_Constants + * @{ + */ + +/** + * @brief Memory access macro + */ +#define BL_RD_WORD(addr) (*((volatile uint32_t*)(addr))) +#define BL_WR_WORD(addr,val) ((*(volatile uint32_t*)(addr))=(val)) +#define BL_RD_SHORT(addr) (*((volatile uint16_t*)(addr))) +#define BL_WR_SHORT(addr,val) ((*(volatile uint16_t*)(addr))=(val)) +#define BL_RD_BYTE(addr) (*((volatile uint8_t*)(addr))) +#define BL_WR_BYTE(addr,val) ((*(volatile uint8_t*)(addr))=(val)) +#define BL_RDWD_FRM_BYTEP(p) ((p[3]<<24)|(p[2]<<16)|(p[1]<<8)|(p[0])) +#define BL_WRWD_TO_BYTEP(p,val) {p[0]=val&0xff;p[1]=(val>>8)&0xff;p[2]=(val>>16)&0xff;p[3]=(val>>24)&0xff;} +/** + * @brief Register access macro + */ +#define BL_RD_REG16(addr,regname) BL_RD_SHORT(addr+regname##_OFFSET) +#define BL_WR_REG16(addr,regname,val) BL_WR_SHORT(addr+regname##_OFFSET,val) +#define BL_RD_REG(addr,regname) BL_RD_WORD(addr+regname##_OFFSET) +#define BL_WR_REG(addr,regname,val) BL_WR_WORD(addr+regname##_OFFSET,val) +#define BL_SET_REG_BIT(val,bitname) ( (val) |(1U<> bitname##_POS ) +#define BL_SET_REG_BITS_VAL(val,bitname,bitval) ( ((val)&bitname##_UMSK) | ((uint32_t)(bitval)<ptTable; + PtTable_Entry_Config *ptEntries=ptStuff->ptEntries; + uint32_t *pCrc32; + uint32_t entriesLen=sizeof(PtTable_Entry_Config)*ptTable->entryCnt; + + if(ptTable->magicCode==BFLB_PT_MAGIC_CODE){ + if (ptTable->entryCnt > PT_ENTRY_MAX) { + MSG_ERR("PT Entry Count Error\r\n"); + return 0; + } + if(ptTable->crc32!= + BFLB_Soft_CRC32((uint8_t*)ptTable,sizeof(PtTable_Config)-4)){ + MSG_ERR("PT CRC Error\r\n"); + return 0; + } + pCrc32=(uint32_t *)((uintptr_t)ptEntries+entriesLen); + if(*pCrc32!=BFLB_Soft_CRC32((uint8_t*)ptEntries,entriesLen)){ + MSG_ERR("PT Entry CRC Error\r\n"); + return 0; + } + return 1; + } + return 0; +} + +/*@} end of group PARTITION_Private_Functions */ + +/** @defgroup PARTITION_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Register partition flash read write erase fucntion + * + * @param erase: Flash erase function + * @param write: Flash write function + * @param read: Flash read function + * + * @return None + * +*******************************************************************************/ +void PtTable_Set_Flash_Operation(pPtTable_Flash_Erase erase,pPtTable_Flash_Write write,pPtTable_Flash_Read read) +{ + PtTable_Flash_Erase=erase; + PtTable_Flash_Write=write; + PtTable_Flash_Read=read; +} + +/****************************************************************************//** + * @brief Get active partition table whole stuff + * + * @param ptStuff[2]: Partition table stuff pointer + * + * @return Active partition table ID + * +*******************************************************************************/ +PtTable_ID_Type PtTable_Get_Active_Partition_Need_Lock(PtTable_Stuff_Config ptStuff[2]) +{ + uint32_t ptValid[2]={0,0}; + PtTable_ID_Type activePtID; + + if(ptStuff==NULL){ + return PT_TABLE_ID_INVALID; + } + activePtID=PT_TABLE_ID_INVALID; + + PtTable_Flash_Read(BFLB_PT_TABLE0_ADDRESS,(uint8_t *)&ptStuff[0],sizeof(PtTable_Stuff_Config)); + ptValid[0]=PtTable_Valid(&ptStuff[0]); + + PtTable_Flash_Read(BFLB_PT_TABLE1_ADDRESS,(uint8_t *)&ptStuff[1],sizeof(PtTable_Stuff_Config)); + ptValid[1]=PtTable_Valid(&ptStuff[1]); + + if(ptValid[0]==1 && ptValid[1]==1){ + if(ptStuff[0].ptTable.age>=ptStuff[1].ptTable.age){ + activePtID=PT_TABLE_ID_0; + }else{ + activePtID=PT_TABLE_ID_1; + } + }else if(ptValid[0]==1){ + activePtID=PT_TABLE_ID_0; + }else if(ptValid[1]==1){ + activePtID=PT_TABLE_ID_1; + } + return activePtID; +} + +/****************************************************************************//** + * @brief Get partition entry according to entry ID + * + * @param ptStuff: Partition table stuff pointer + * @param type: Type of partition entry + * @param ptEntry: Partition entry pointer to store read data + * + * @return PT_ERROR_SUCCESS or PT_ERROR_ENTRY_NOT_FOUND or PT_ERROR_PARAMETER + * +*******************************************************************************/ +PtTable_Error_Type PtTable_Get_Active_Entries_By_ID(PtTable_Stuff_Config *ptStuff, + PtTable_Entry_Type type, + PtTable_Entry_Config *ptEntry) +{ + uint32_t i=0; + + if(ptStuff==NULL||ptEntry==NULL){ + return PT_ERROR_PARAMETER; + } + for (i=0; i < ptStuff->ptTable.entryCnt; i++) { + if (ptStuff->ptEntries[i].type == type){ + ARCH_MemCpy_Fast(ptEntry,&ptStuff->ptEntries[i],sizeof(PtTable_Entry_Config)); + return PT_ERROR_SUCCESS; + } + } + return PT_ERROR_ENTRY_NOT_FOUND; +} + +/****************************************************************************//** + * @brief Get partition entry according to entry name + * + * @param ptStuff: Partition table stuff pointer + * @param name: Name of partition entry + * @param ptEntry: Partition entry pointer to store read data + * + * @return PT_ERROR_SUCCESS or PT_ERROR_ENTRY_NOT_FOUND or PT_ERROR_PARAMETER + * +*******************************************************************************/ +PtTable_Error_Type PtTable_Get_Active_Entries_By_Name(PtTable_Stuff_Config *ptStuff, + uint8_t *name, + PtTable_Entry_Config *ptEntry) +{ + uint32_t i=0; + uint32_t len=strlen((char *)name); + + if(ptStuff==NULL||ptEntry==NULL){ + return PT_ERROR_PARAMETER; + } + for (i=0; i < ptStuff->ptTable.entryCnt; i++) { + if (strlen((char *)ptStuff->ptEntries[i].name) == len && + memcmp((char *)ptStuff->ptEntries[i].name,(char *)name,len) == 0){ + ARCH_MemCpy_Fast(ptEntry,&ptStuff->ptEntries[i],sizeof(PtTable_Entry_Config)); + return PT_ERROR_SUCCESS; + } + } + return PT_ERROR_ENTRY_NOT_FOUND; +} + +/****************************************************************************//** + * @brief Update partition entry + * + * @param targetTableID: Target partition table to update + * @param ptStuff: Partition table stuff pointer + * @param ptEntry: Partition entry pointer to update + * + * @return Partition update result + * +*******************************************************************************/ +PtTable_Error_Type PtTable_Update_Entry(PtTable_ID_Type targetTableID, + PtTable_Stuff_Config *ptStuff, + PtTable_Entry_Config *ptEntry) +{ + uint32_t i=0; + int32_t ret; + uint32_t writeAddr; + uint32_t entriesLen; + PtTable_Config *ptTable; + PtTable_Entry_Config *ptEntries; + uint32_t *pCrc32; + + if(ptEntry==NULL||ptStuff==NULL){ + return PT_ERROR_PARAMETER; + } + + ptTable=&ptStuff->ptTable; + ptEntries=ptStuff->ptEntries; + + if(targetTableID==PT_TABLE_ID_INVALID){ + return PT_ERROR_TABLE_NOT_VALID; + } + + if(targetTableID==PT_TABLE_ID_0){ + writeAddr=BFLB_PT_TABLE0_ADDRESS; + }else{ + writeAddr=BFLB_PT_TABLE1_ADDRESS; + } + for (i=0; i < ptTable->entryCnt; i++) { + if (ptEntries[i].type == ptEntry->type){ + ARCH_MemCpy_Fast(&ptEntries[i],ptEntry,sizeof(PtTable_Entry_Config)); + break; + } + } + if(i==ptTable->entryCnt){ + /* Not found this entry ,add new one */ + if(ptTable->entryCntentryCnt],ptEntry,sizeof(PtTable_Entry_Config)); + ptTable->entryCnt++; + }else{ + return PT_ERROR_ENTRY_UPDATE_FAIL; + } + } + + /* Prepare write back to flash */ + /* Update age */ + ptTable->age++; + ptTable->crc32=BFLB_Soft_CRC32((uint8_t*)ptTable,sizeof(PtTable_Config)-4); + + /* Update entries CRC */ + entriesLen=ptTable->entryCnt*sizeof(PtTable_Entry_Config); + pCrc32=(uint32_t *)((uintptr_t)ptEntries+entriesLen); + *pCrc32=BFLB_Soft_CRC32((uint8_t *)&ptEntries[0],entriesLen); + + /* Write back to flash */ + /* Erase flash first */ + ret=PtTable_Flash_Erase(writeAddr,writeAddr+sizeof(PtTable_Config)+entriesLen+4-1); + if(ret!=0){ + MSG_ERR("Flash Erase error\r\n"); + return PT_ERROR_FALSH_WRITE; + } + /* Write flash */ + ret=PtTable_Flash_Write(writeAddr,(uint8_t *)ptStuff,sizeof(PtTable_Stuff_Config)); + if(ret!=0){ + MSG_ERR("Flash Write error\r\n"); + return PT_ERROR_FALSH_WRITE; + } + + return PT_ERROR_SUCCESS; +} + +/****************************************************************************//** + * @brief Create partition entry + * + * @param ptID: Partition table ID + * + * @return Partition create result + * +*******************************************************************************/ +PtTable_Error_Type PtTable_Create(PtTable_ID_Type ptID) +{ + uint32_t writeAddr; + int32_t ret; + PtTable_Config ptTable; + + if(ptID==PT_TABLE_ID_INVALID){ + return PT_ERROR_TABLE_NOT_VALID; + } + + if(ptID==PT_TABLE_ID_0){ + writeAddr=BFLB_PT_TABLE0_ADDRESS; + }else{ + writeAddr=BFLB_PT_TABLE1_ADDRESS; + } + + /* Prepare write back to flash */ + ptTable.magicCode=BFLB_PT_MAGIC_CODE; + ptTable.version=0; + ptTable.entryCnt=0; + ptTable.age=0; + ptTable.crc32=BFLB_Soft_CRC32((uint8_t*)&ptTable,sizeof(PtTable_Config)-4); + /* Write back to flash */ + ret=PtTable_Flash_Erase(writeAddr,writeAddr+sizeof(PtTable_Config)-1); + if(ret!=0){ + MSG_ERR("Flash Erase error\r\n"); + return PT_ERROR_FALSH_ERASE; + } + ret=PtTable_Flash_Write(writeAddr,(uint8_t *)&ptTable,sizeof(PtTable_Config)); + if(ret!=0){ + MSG_ERR("Flash Write error\r\n"); + return PT_ERROR_FALSH_WRITE; + } + return PT_ERROR_SUCCESS; +} + +/*@} end of group PARTITION_Public_Functions */ + +/*@} end of group PARTITION */ + +/*@} end of group BFLB_Common_Driver */ diff --git a/common/partition/partition.h b/common/partition/partition.h new file mode 100644 index 00000000..d8b3c3d2 --- /dev/null +++ b/common/partition/partition.h @@ -0,0 +1,177 @@ +/** + * @file partition.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __PARTITION_H__ +#define __PARTITION_H__ + +#include "stdint.h" +#include "string.h" + +/** @addtogroup BFLB_Common_Driver + * @{ + */ + +/** @addtogroup PARTITION + * @{ + */ + +/** @defgroup PARTITION_Public_Types + * @{ + */ + +/** + * @brief Partition table error type definition + */ +typedef enum { + PT_ERROR_SUCCESS, /*!< Partition table error type:success */ + PT_ERROR_TABLE_NOT_VALID, /*!< Partition table error type:table not found */ + PT_ERROR_ENTRY_NOT_FOUND, /*!< Partition table error type:entry not found */ + PT_ERROR_ENTRY_UPDATE_FAIL, /*!< Partition table error type:entry update fail */ + PT_ERROR_CRC32, /*!< Partition table error type:crc32 error */ + PT_ERROR_PARAMETER, /*!< Partition table error type:input parameter error */ + PT_ERROR_FALSH_READ, /*!< Partition table error type:flash read error */ + PT_ERROR_FALSH_WRITE, /*!< Partition table error type:flash write error */ + PT_ERROR_FALSH_ERASE, /*!< Partition table error type:flash erase error */ +}PtTable_Error_Type; + +/** + * @brief Partition id type definition + */ +typedef enum { + PT_TABLE_ID_0, /*!< Partition table ID 0 */ + PT_TABLE_ID_1, /*!< Partition table ID 1 */ + PT_TABLE_ID_INVALID, /*!< Partition table ID invalid */ +}PtTable_ID_Type; + +/** + * @brief Partition id type definition + */ +typedef enum { + PT_ENTRY_FW_CPU0, /*!< Partition entry type:CPU0 firmware */ + PT_ENTRY_FW_CPU1, /*!< Partition entry type:CPU1 firmware */ + PT_ENTRY_MAX=16, /*!< Partition entry type:Max */ +}PtTable_Entry_Type; + +/** + * @brief Partition table config definition + */ +typedef struct { + uint32_t magicCode; /*!< Partition table magic code */ + uint16_t version; /*!< Partition table verdion */ + uint16_t entryCnt; /*!< Partition table entry count */ + uint32_t age; /*!< Partition table age */ + uint32_t crc32; /*!< Partition table CRC32 value */ +}PtTable_Config; + +/** + * @brief Partition table entry config definition + */ +typedef struct { + uint8_t type; /*!< Partition entry type */ + uint8_t device; /*!< Partition entry device */ + uint8_t activeIndex; /*!< Partition entry active index */ + uint8_t name[9]; /*!< Partition entry name */ + uint32_t Address[2]; /*!< Partition entry start address */ + uint32_t maxLen[2]; /*!< Partition entry max length */ + uint32_t len; /*!< Partition entry length */ + uint32_t age; /*!< Partition entry age */ +}PtTable_Entry_Config; + +/** + * @brief Partition table stuff config definition + */ +typedef struct { + PtTable_Config ptTable; /*!< Partition table */ + PtTable_Entry_Config ptEntries[PT_ENTRY_MAX]; /*!< Partition entries */ + uint32_t crc32; /*!< Partition entries crc32 */ +}PtTable_Stuff_Config; + +/*@} end of group PARTITION_Public_Types */ + +/** @defgroup PARTITION_Public_Constants + * @{ + */ + +/** @defgroup PTTABLE_ERROR_TYPE + * @{ + */ +#define IS_PTTABLE_ERROR_TYPE(type) (((type) == PT_ERROR_SUCCESS) || \ + ((type) == PT_ERROR_TABLE_NOT_VALID) || \ + ((type) == PT_ERROR_ENTRY_NOT_FOUND) || \ + ((type) == PT_ERROR_ENTRY_UPDATE_FAIL) || \ + ((type) == PT_ERROR_CRC32) || \ + ((type) == PT_ERROR_PARAMETER) || \ + ((type) == PT_ERROR_FALSH_READ) || \ + ((type) == PT_ERROR_FALSH_WRITE) || \ + ((type) == PT_ERROR_FALSH_ERASE)) + +/** @defgroup PTTABLE_ID_TYPE + * @{ + */ +#define IS_PTTABLE_ID_TYPE(type) (((type) == PT_TABLE_ID_0) || \ + ((type) == PT_TABLE_ID_1) || \ + ((type) == PT_TABLE_ID_INVALID)) + +/** @defgroup PTTABLE_ENTRY_TYPE + * @{ + */ +#define IS_PTTABLE_ENTRY_TYPE(type) (((type) == PT_ENTRY_FW_CPU0) || \ + ((type) == PT_ENTRY_FW_CPU1) || \ + ((type) == PT_ENTRY_MAX)) + +/*@} end of group PARTITION_Public_Constants */ + +/** @defgroup PARTITION_Public_Macros + * @{ + */ +#define BFLB_PT_TABLE0_ADDRESS 0xE000 +#define BFLB_PT_TABLE1_ADDRESS 0xF000 +#define BFLB_PT_MAGIC_CODE 0x54504642 +typedef int (*pPtTable_Flash_Erase)(uint32_t startaddr,uint32_t endaddr); +typedef int (*pPtTable_Flash_Write)(uint32_t addr,uint8_t *data, uint32_t len); +typedef int (*pPtTable_Flash_Read) (uint32_t addr,uint8_t *data, uint32_t len); + +/*@} end of group PARTITION_Public_Macros */ + +/** @defgroup PARTITION_Public_Functions + * @{ + */ +void PtTable_Set_Flash_Operation(pPtTable_Flash_Erase erase,pPtTable_Flash_Write write,pPtTable_Flash_Read read); +PtTable_ID_Type PtTable_Get_Active_Partition_Need_Lock(PtTable_Stuff_Config ptStuff[2]); +PtTable_Error_Type PtTable_Get_Active_Entries_By_ID(PtTable_Stuff_Config *ptStuff, + PtTable_Entry_Type type, +PtTable_Entry_Config *ptEntry); +PtTable_Error_Type PtTable_Get_Active_Entries_By_Name(PtTable_Stuff_Config *ptStuff, + uint8_t *name, +PtTable_Entry_Config *ptEntry); +PtTable_Error_Type PtTable_Update_Entry(PtTable_ID_Type targetTableID, +PtTable_Stuff_Config *ptStuff, + PtTable_Entry_Config *ptEntry); +PtTable_Error_Type PtTable_Create(PtTable_ID_Type ptID); + +/*@} end of group PARTITION_Public_Functions */ + +/*@} end of group PARTITION */ + +/*@} end of group BFLB_Common_Driver */ + +#endif /* __PARTITION_H__ */ diff --git a/common/ring_buffer/ring_buffer.c b/common/ring_buffer/ring_buffer.c new file mode 100644 index 00000000..94182887 --- /dev/null +++ b/common/ring_buffer/ring_buffer.c @@ -0,0 +1,678 @@ +/** + * @file ring_buffer.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "ring_buffer.h" + +/** @addtogroup BL_Common_Component + * @{ + */ + +/** @addtogroup RING_BUFFER + * @{ + */ + +/** @defgroup RING_BUFFER_Private_Macros + * @{ + */ + +/*@} end of group RING_BUFFER_Private_Macros */ + +/** @defgroup RING_BUFFER_Private_Types + * @{ + */ + +/*@} end of group RING_BUFFER_Private_Types */ + +/** @defgroup RING_BUFFER_Private_Fun_Declaration + * @{ + */ + +/*@} end of group RING_BUFFER_Private_Fun_Declaration */ + +/** @defgroup RING_BUFFER_Private_Variables + * @{ + */ + +/*@} end of group RING_BUFFER_Private_Variables */ + +/** @defgroup RING_BUFFER_Global_Variables + * @{ + */ + +/*@} end of group RING_BUFFER_Global_Variables */ + +/** @defgroup RING_BUFFER_Private_Functions + * @{ + */ + +/*@} end of group RING_BUFFER_Private_Functions */ + +/** @defgroup RING_BUFFER_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Ring buffer init function + * + * @param rbType: Ring buffer type structure pointer + * @param buffer: Pointer of ring buffer + * @param size: Size of ring buffer + * @param lockCb: Ring buffer lock callback function pointer + * @param unlockCb: Ring buffer unlock callback function pointer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type Ring_Buffer_Init(Ring_Buffer_Type* rbType,uint8_t* buffer,uint32_t size,ringBuffer_Lock_Callback* lockCb,ringBuffer_Lock_Callback* unlockCb) +{ + /* Init ring buffer pointer */ + rbType->pointer = buffer; + + /* Init read/write mirror and index */ + rbType->readMirror = 0; + rbType->readIndex = 0; + rbType->writeMirror = 0; + rbType->writeIndex = 0; + + /* Set ring buffer size */ + rbType->size = size; + + /* Set lock and unlock callback function */ + rbType->lock = lockCb; + rbType->unlock = unlockCb; + + return SUCCESS; +} + + +/****************************************************************************//** + * @brief Ring buffer reset function + * + * @param rbType: Ring buffer type structure pointer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type Ring_Buffer_Reset(Ring_Buffer_Type* rbType) +{ + if(rbType->lock != NULL){ + rbType->lock(); + } + + /* Clear read/write mirror and index */ + rbType->readMirror = 0; + rbType->readIndex = 0; + rbType->writeMirror = 0; + rbType->writeIndex = 0; + + if(rbType->unlock != NULL){ + rbType->unlock(); + } + + return SUCCESS; +} + + +/****************************************************************************//** + * @brief Use callback function to write ring buffer function + * + * @param rbType: Ring buffer type structure pointer + * @param length: Length of data want to write + * @param writeCb: Callback function pointer + * @param parameter: Parameter that callback function may use + * + * @return Length of data actually write + * +*******************************************************************************/ +uint32_t Ring_Buffer_Write_Callback(Ring_Buffer_Type* rbType,uint32_t length,ringBuffer_Write_Callback* writeCb,void* parameter) +{ + uint32_t sizeRemained = Ring_Buffer_Get_Empty_Length(rbType); + + if(writeCb == NULL){ + return 0; + } + + if(rbType->lock != NULL){ + rbType->lock(); + } + + /* Ring buffer has no space for new data */ + if(sizeRemained == 0){ + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return 0; + } + + /* Drop part of data when length out of space remained */ + if(length > sizeRemained){ + length = sizeRemained; + } + + /* Get size of space remained in current mirror */ + sizeRemained = rbType->size - rbType->writeIndex; + + if(sizeRemained > length){ + /* Space remained is enough for data in current mirror */ + writeCb(parameter,&rbType->pointer[rbType->writeIndex],length); + rbType->writeIndex += length; + }else{ + /* Data is divided to two parts with different mirror */ + writeCb(parameter,&rbType->pointer[rbType->writeIndex],sizeRemained); + writeCb(parameter,&rbType->pointer[0],length-sizeRemained); + rbType->writeIndex = length-sizeRemained; + rbType->writeMirror = ~rbType->writeMirror; + } + + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return length; +} + + +/****************************************************************************//** + * @brief Copy data from data buffer to ring buffer function + * + * @param parameter: Pointer to source pointer + * @param dest: Ring buffer to write + * @param length: Length of data to write + * + * @return None + * +*******************************************************************************/ +static void Ring_Buffer_Write_Copy(void* parameter,uint8_t* dest,uint32_t length) +{ + uint8_t **src = (uint8_t **)parameter; + + ARCH_MemCpy_Fast(dest,*src,length); + *src += length; +} + + +/****************************************************************************//** + * @brief Write ring buffer function + * + * @param rbType: Ring buffer type structure pointer + * @param data: Data to write + * @param length: Length of data + * + * @return Length of data writted actually + * +*******************************************************************************/ +uint32_t Ring_Buffer_Write(Ring_Buffer_Type* rbType,const uint8_t* data,uint32_t length) +{ + return Ring_Buffer_Write_Callback(rbType,length,Ring_Buffer_Write_Copy,&data); +} + + +/****************************************************************************//** + * @brief Write 1 byte to ring buffer function + * + * @param rbType: Ring buffer type structure pointer + * @param data: Data to write + * + * @return Length of data writted actually + * +*******************************************************************************/ +uint32_t Ring_Buffer_Write_Byte(Ring_Buffer_Type* rbType,const uint8_t data) +{ + if(rbType->lock != NULL){ + rbType->lock(); + } + + /* Ring buffer has no space for new data */ + if(!Ring_Buffer_Get_Empty_Length(rbType)){ + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return 0; + } + + rbType->pointer[rbType->writeIndex] = data; + + /* Judge to change index and mirror */ + if(rbType->writeIndex != (rbType->size-1)){ + rbType->writeIndex++; + }else{ + rbType->writeIndex = 0; + rbType->writeMirror = ~rbType->writeMirror; + } + + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return 1; +} + + +/****************************************************************************//** + * @brief Write ring buffer function, old data will be covered by new data when ring buffer is + * full + * + * @param rbType: Ring buffer type structure pointer + * @param data: Data to write + * @param length: Length of data + * + * @return Length of data writted actually + * +*******************************************************************************/ +uint32_t Ring_Buffer_Write_Force(Ring_Buffer_Type* rbType,const uint8_t* data,uint32_t length) +{ + uint32_t sizeRemained = Ring_Buffer_Get_Empty_Length(rbType); + uint32_t indexRemained = rbType->size - rbType->writeIndex; + + if(rbType->lock != NULL){ + rbType->lock(); + } + + /* Drop extra data when data length is large than size of ring buffer */ + if(length > rbType->size){ + data = &data[length - rbType->size]; + length = rbType->size; + } + + if(indexRemained > length){ + /* Space remained is enough for data in current mirror */ + ARCH_MemCpy_Fast(&rbType->pointer[rbType->writeIndex],data,length); + rbType->writeIndex += length; + + /* Update read index */ + if(length > sizeRemained){ + rbType->readIndex = rbType->writeIndex; + } + }else{ + /* Data is divided to two parts with different mirror */ + ARCH_MemCpy_Fast(&rbType->pointer[rbType->writeIndex],data,indexRemained); + ARCH_MemCpy_Fast(&rbType->pointer[0],&data[indexRemained],length-indexRemained); + rbType->writeIndex = length-indexRemained; + rbType->writeMirror = ~rbType->writeMirror; + + /* Update read index and mirror */ + if(length > sizeRemained){ + rbType->readIndex = rbType->writeIndex; + rbType->readMirror = ~rbType->readMirror; + } + } + + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return length; +} + + +/****************************************************************************//** + * @brief Write 1 byte to ring buffer function, old data will be covered by new data when ring + * buffer is full + * + * @param rbType: Ring buffer type structure pointer + * @param data: Data to write + * + * @return Length of data writted actually + * +*******************************************************************************/ +uint32_t Ring_Buffer_Write_Byte_Force(Ring_Buffer_Type* rbType,const uint8_t data) +{ + Ring_Buffer_Status_Type status = Ring_Buffer_Get_Status(rbType); + + if(rbType->lock != NULL){ + rbType->lock(); + } + + rbType->pointer[rbType->writeIndex] = data; + + /* Judge to change index and mirror */ + if(rbType->writeIndex == rbType->size-1){ + rbType->writeIndex = 0; + rbType->writeMirror = ~rbType->writeMirror; + + /* Update read index and mirror */ + if(status == RING_BUFFER_FULL){ + rbType->readIndex = rbType->writeIndex; + rbType->readMirror = ~rbType->readMirror; + } + }else{ + rbType->writeIndex++; + + /* Update read index */ + if(status == RING_BUFFER_FULL){ + rbType->readIndex = rbType->writeIndex; + } + } + + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return 1; +} + + +/****************************************************************************//** + * @brief Use callback function to read ring buffer function + * + * @param rbType: Ring buffer type structure pointer + * @param length: Length of data want to read + * @param readCb: Callback function pointer + * @param parameter: Parameter that callback function may use + * + * @return Length of data actually read + * +*******************************************************************************/ +uint32_t Ring_Buffer_Read_Callback(Ring_Buffer_Type* rbType,uint32_t length,ringBuffer_Read_Callback* readCb,void* parameter) +{ + uint32_t size = Ring_Buffer_Get_Length(rbType); + + if(readCb == NULL){ + return 0; + } + + if(rbType->lock != NULL){ + rbType->lock(); + } + + /* Ring buffer has no data */ + if(!size){ + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return 0; + } + + /* Ring buffer do not have enough data */ + if(size < length){ + length = size; + } + + /* Get size of space remained in current mirror */ + size = rbType->size - rbType->readIndex; + + if(size > length){ + /* Read all data needed */ + readCb(parameter,&rbType->pointer[rbType->readIndex],length); + rbType->readIndex += length; + }else{ + /* Read two part of data in different mirror */ + readCb(parameter,&rbType->pointer[rbType->readIndex],size); + readCb(parameter,&rbType->pointer[0],length-size); + rbType->readIndex = length-size; + rbType->readMirror = ~rbType->readMirror; + } + + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return length; +} + + +/****************************************************************************//** + * @brief Copy data from ring buffer to data buffer function + * + * @param parameter: Pointer to destination pointer + * @param data: Data buffer to copy + * @param length: Length of data to copy + * + * @return None + * +*******************************************************************************/ +static void Ring_Buffer_Read_Copy(void* parameter,uint8_t* data,uint32_t length) +{ + uint8_t **dest = (uint8_t **)parameter; + + ARCH_MemCpy_Fast(*dest,data,length); + *dest += length; +} + + +/****************************************************************************//** + * @brief Read ring buffer function + * + * @param rbType: Ring buffer type structure pointer + * @param data: Buffer for data read + * @param length: Length of data to read + * + * @return Length of data read actually + * +*******************************************************************************/ +uint32_t Ring_Buffer_Read(Ring_Buffer_Type* rbType,uint8_t* data,uint32_t length) +{ + return Ring_Buffer_Read_Callback(rbType,length,Ring_Buffer_Read_Copy,&data); +} + + +/****************************************************************************//** + * @brief Read 1 byte from ring buffer function + * + * @param rbType: Ring buffer type structure pointer + * @param data: Data read + * + * @return Length of data actually read + * +*******************************************************************************/ +uint32_t Ring_Buffer_Read_Byte(Ring_Buffer_Type* rbType,uint8_t* data) +{ + if(rbType->lock != NULL){ + rbType->lock(); + } + + /* Ring buffer has no data */ + if(!Ring_Buffer_Get_Length(rbType)){ + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return 0; + } + + /* Read data */ + *data = rbType->pointer[rbType->readIndex]; + + /* Update read index and mirror */ + if(rbType->readIndex == rbType->size-1){ + rbType->readIndex = 0; + rbType->readMirror = ~rbType->readMirror; + }else{ + rbType->readIndex++; + } + + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return 1; +} + + +/****************************************************************************//** + * @brief Read ring buffer function, do not remove from buffer actually + * + * @param rbType: Ring buffer type structure pointer + * @param data: Buffer for data read + * @param length: Length of data to read + * + * @return Length of data read actually + * +*******************************************************************************/ +uint32_t Ring_Buffer_Peek(Ring_Buffer_Type* rbType,uint8_t* data,uint32_t length) +{ + uint32_t size = Ring_Buffer_Get_Length(rbType); + + if(rbType->lock != NULL){ + rbType->lock(); + } + + /* Ring buffer has no data */ + if(!size){ + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return 0; + } + + /* Ring buffer do not have enough data */ + if(size < length){ + length = size; + } + + /* Get size of space remained in current mirror */ + size = rbType->size - rbType->readIndex; + + if(size > length){ + /* Read all data needed */ + ARCH_MemCpy_Fast(data,&rbType->pointer[rbType->readIndex],length); + }else{ + /* Read two part of data in different mirror */ + ARCH_MemCpy_Fast(data,&rbType->pointer[rbType->readIndex],size); + ARCH_MemCpy_Fast(&data[size],&rbType->pointer[0],length-size); + } + + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return length; +} + + +/****************************************************************************//** + * @brief Read 1 byte from ring buffer function, do not remove from buffer actually + * + * @param rbType: Ring buffer type structure pointer + * @param data: Data read + * + * @return Length of data actually read + * +*******************************************************************************/ +uint32_t Ring_Buffer_Peek_Byte(Ring_Buffer_Type* rbType,uint8_t* data) +{ + if(rbType->lock != NULL){ + rbType->lock(); + } + + /* Ring buffer has no data */ + if(!Ring_Buffer_Get_Length(rbType)){ + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return 0; + } + + /* Read data */ + *data = rbType->pointer[rbType->readIndex]; + + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return 1; +} + + +/****************************************************************************//** + * @brief Get length of data in ring buffer function + * + * @param rbType: Ring buffer type structure pointer + * + * @return Length of data + * +*******************************************************************************/ +uint32_t Ring_Buffer_Get_Length(Ring_Buffer_Type* rbType) +{ + uint32_t readMirror = 0; + uint32_t writeMirror = 0; + uint32_t readIndex = 0; + uint32_t writeIndex = 0; + uint32_t size = 0; + + if(rbType->lock != NULL){ + rbType->lock(); + } + + readMirror = rbType->readMirror; + writeMirror = rbType->writeMirror; + readIndex = rbType->readIndex; + writeIndex = rbType->writeIndex; + size = rbType->size; + + if(rbType->unlock != NULL){ + rbType->unlock(); + } + + if(readMirror == writeMirror){ + return writeIndex - readIndex; + }else{ + return size - (readIndex - writeIndex); + } +} + + +/****************************************************************************//** + * @brief Get space remained in ring buffer function + * + * @param rbType: Ring buffer type structure pointer + * + * @return Length of space remained + * +*******************************************************************************/ +uint32_t Ring_Buffer_Get_Empty_Length(Ring_Buffer_Type* rbType) +{ + return (rbType->size - Ring_Buffer_Get_Length(rbType)); +} + + +/****************************************************************************//** + * @brief Get ring buffer status function + * + * @param rbType: Ring buffer type structure pointer + * + * @return Status of ring buffer + * +*******************************************************************************/ +Ring_Buffer_Status_Type Ring_Buffer_Get_Status(Ring_Buffer_Type* rbType) +{ + if(rbType->lock != NULL){ + rbType->lock(); + } + + /* Judge empty or full */ + if(rbType->readIndex == rbType->writeIndex){ + if(rbType->readMirror == rbType->writeMirror){ + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return RING_BUFFER_EMPTY; + }else{ + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return RING_BUFFER_FULL; + } + } + if(rbType->unlock != NULL){ + rbType->unlock(); + } + return RING_BUFFER_PARTIAL; +} + + +/*@} end of group RING_BUFFER_Public_Functions */ + +/*@} end of group RING_BUFFER */ + +/*@} end of group BL_Common_Component */ diff --git a/common/ring_buffer/ring_buffer.h b/common/ring_buffer/ring_buffer.h new file mode 100644 index 00000000..ff53b8f6 --- /dev/null +++ b/common/ring_buffer/ring_buffer.h @@ -0,0 +1,115 @@ +/** + * @file ring_buffer.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __RING_BUFFER_H__ +#define __RING_BUFFER_H__ + +#include "misc.h" + +/** @addtogroup BL_Common_Component + * @{ + */ + +/** @addtogroup RING_BUFFER + * @{ + */ + +/** @defgroup RING_BUFFER_Public_Types + * @{ + */ + +/** + * @brief Ring buffer status type definition + */ +typedef enum { + RING_BUFFER_EMPTY, /*!< Ring buffer is empty */ + RING_BUFFER_PARTIAL, /*!< Ring buffer has partial data */ + RING_BUFFER_FULL, /*!< Ring buffer is full */ +}Ring_Buffer_Status_Type; + +/** + * @brief Ring buffer structure definition + */ +typedef struct { + uint8_t* pointer; /*!< Pointer of ring buffer */ + uint8_t readMirror; /*!< Read mirror,used to judge empty or full */ + uint32_t readIndex; /*!< Index of read address */ + uint8_t writeMirror; /*!< Write mirror,used to judge empty or full */ + uint32_t writeIndex; /*!< Index of write address */ + uint32_t size; /*!< Size of ring buffer */ + void (*lock)(void); /*!< Lock ring buffer */ + void (*unlock)(void); /*!< Unlock ring buffer */ +}Ring_Buffer_Type; + +/*@} end of group RING_BUFFER_Public_Types */ + +/** @defgroup RING_BUFFER_Public_Constants + * @{ + */ + +/** @defgroup RING_BUFFER_STATUS_TYPE + * @{ + */ +#define IS_RING_BUFFER_STATUS_TYPE(type) (((type) == RING_BUFFER_EMPTY) || \ + ((type) == RING_BUFFER_PARTIAL) || \ + ((type) == RING_BUFFER_FULL)) + +/*@} end of group RING_BUFFER_Public_Constants */ + +/** @defgroup RING_BUFFER_Public_Macros + * @{ + */ +typedef void (ringBuffer_Lock_Callback)(void); +typedef void (ringBuffer_Read_Callback)(void*,uint8_t*,uint32_t); +typedef void (ringBuffer_Write_Callback)(void*,uint8_t*,uint32_t); + +/*@} end of group RING_BUFFER_Public_Macros */ + +/** @defgroup RING_BUFFER_Public_Functions + * @{ + */ +BL_Err_Type Ring_Buffer_Init(Ring_Buffer_Type* rbType,uint8_t* buffer,uint32_t size,ringBuffer_Lock_Callback* lockCb, + ringBuffer_Lock_Callback* unlockCb); +BL_Err_Type Ring_Buffer_Reset(Ring_Buffer_Type* rbType); +uint32_t Ring_Buffer_Write_Callback(Ring_Buffer_Type* rbType,uint32_t length,ringBuffer_Write_Callback* writeCb, + void* parameter); +uint32_t Ring_Buffer_Write(Ring_Buffer_Type* rbType,const uint8_t* data,uint32_t length); +uint32_t Ring_Buffer_Write_Byte(Ring_Buffer_Type* rbType,const uint8_t data); +uint32_t Ring_Buffer_Write_Force(Ring_Buffer_Type* rbType,const uint8_t* data,uint32_t length); +uint32_t Ring_Buffer_Write_Byte_Force(Ring_Buffer_Type* rbType,const uint8_t data); +uint32_t Ring_Buffer_Read_Callback(Ring_Buffer_Type* rbType,uint32_t length,ringBuffer_Read_Callback* readCb, + void* parameter); +uint32_t Ring_Buffer_Read(Ring_Buffer_Type* rbType,uint8_t* data,uint32_t length); +uint32_t Ring_Buffer_Read_Byte(Ring_Buffer_Type* rbType,uint8_t* data); +uint32_t Ring_Buffer_Peek(Ring_Buffer_Type* rbType,uint8_t* data,uint32_t length); +uint32_t Ring_Buffer_Peek_Byte(Ring_Buffer_Type* rbType,uint8_t* data); +uint32_t Ring_Buffer_Get_Length(Ring_Buffer_Type* rbType); +uint32_t Ring_Buffer_Get_Empty_Length(Ring_Buffer_Type* rbType); +Ring_Buffer_Status_Type Ring_Buffer_Get_Status(Ring_Buffer_Type* rbType); + +/*@} end of group RING_BUFFER_Public_Functions */ + +/*@} end of group RING_BUFFER */ + +/*@} end of group BL_Common_Component */ + +#endif /* __RING_BUFFER_H__ */ diff --git a/common/soft_crc/softcrc.c b/common/soft_crc/softcrc.c new file mode 100644 index 00000000..a5970b8d --- /dev/null +++ b/common/soft_crc/softcrc.c @@ -0,0 +1,189 @@ +/** + * @file softcrc.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "softcrc.h" +#include "misc.h" +// ---------------- POPULAR POLYNOMIALS ---------------- +// CCITT: x^16 + x^12 + x^5 + x^0 (0x1021,init 0x0000) +// CRC-16: x^16 + x^15 + x^2 + x^0 (0x8005,init 0xFFFF) +// we use 0x8005 here and + +const uint8_t chCRCHTalbe[] = +{ +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, +0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, +0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, +0x00, 0xC1, 0x81, 0x40 +}; + +const uint8_t chCRCLTalbe[] = +{ +0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, +0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, +0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, +0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, +0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, +0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, +0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, +0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, +0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, +0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, +0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, +0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, +0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, +0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, +0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, +0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, +0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, +0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, +0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, +0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, +0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, +0x41, 0x81, 0x80, 0x40 +}; + +uint16_t BFLB_Soft_CRC16(void * dataIn, uint32_t len) +{ + uint8_t chCRCHi = 0xFF; + uint8_t chCRCLo = 0xFF; + uint16_t wIndex; + uint8_t* data=(uint8_t *) dataIn; + + while (len--){ + wIndex = chCRCLo ^ *data++ ; + chCRCLo = chCRCHi ^ chCRCHTalbe[wIndex]; + chCRCHi = chCRCLTalbe[wIndex] ; + } + + return ((chCRCHi << 8) | chCRCLo) ; +} + +/* +x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1 +*/ +const uint32_t crc32Tab[256] = { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, + 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, + 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, + 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, + 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, + 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, + 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, + 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, + 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, + 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, + 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, + 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, + 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, + 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, + 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, + 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, + 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, + 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d +}; + +uint32_t BFLB_Soft_CRC32_Table( void *dataIn, uint32_t len) +{ + uint32_t crc=0; + uint8_t *data=(uint8_t *)dataIn; + + crc = crc ^ 0xffffffff; + + while (len--) + crc = crc32Tab[(crc ^ *data++) & 0xFF] ^ (crc >> 8); + + return crc ^ 0xffffffff; +} +#ifndef BFLB_USE_ROM_DRIVER +/****************************************************************************** +* Name: CRC-32 x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1 +* Poly: 0x4C11DB7 +* Init: 0xFFFFFFF +* Refin: True +* Refout: True +* Xorout: 0xFFFFFFF +* Alias: CRC_32/ADCCP +* Use: WinRAR,ect. +*****************************************************************************/ +__WEAK__ +uint32_t ATTR_TCM_SECTION BFLB_Soft_CRC32(void *dataIn, uint32_t len) +{ + uint8_t i; + uint32_t crc = 0xffffffff; // Initial value + uint8_t *data=(uint8_t *)dataIn; + + while(len--){ + crc ^= *data++; // crc ^= *data; data++; + for (i = 0; i < 8; ++i){ + if (crc & 1){ + crc = (crc >> 1) ^ 0xEDB88320;// 0xEDB88320= reverse 0x04C11DB7 + }else{ + crc = (crc >> 1); + } + } + } + return ~crc; +} +#endif diff --git a/common/soft_crc/softcrc.h b/common/soft_crc/softcrc.h new file mode 100644 index 00000000..5d12d164 --- /dev/null +++ b/common/soft_crc/softcrc.h @@ -0,0 +1,31 @@ +/** + * @file softcrc.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __SOFTCRC_H__ +#define __SOFTCRC_H__ + +#include "stdint.h" + +uint16_t BFLB_Soft_CRC16 (void *dataIn, uint32_t len); +uint32_t BFLB_Soft_CRC32 (void *dataIn, uint32_t len); + +#endif diff --git a/components/fatfs/CMakeLists.txt b/components/fatfs/CMakeLists.txt new file mode 100644 index 00000000..38a1a11a --- /dev/null +++ b/components/fatfs/CMakeLists.txt @@ -0,0 +1,52 @@ +################# Add global include ################# +list(APPEND ADD_INCLUDE +"${CMAKE_CURRENT_SOURCE_DIR}" +) +####################################################### + +################# Add private include ################# +# list(APPEND ADD_PRIVATE_INCLUDE +# "${CMAKE_SOURCE_DIR}/BSP_Common/ring_buffer" +# "${CMAKE_SOURCE_DIR}/BSP_Driver/BSP_${BOARD}_Driver/StdDriver/Inc" +# "${CMAKE_SOURCE_DIR}/BSP_Driver/BSP_${BOARD}_Driver/StdDriver/Inc" +# "${CMAKE_SOURCE_DIR}/BSP_Driver/BSP_${BOARD}_Driver/Peripherals" +# "${CMAKE_SOURCE_DIR}/BSP_Driver/BSP_${BOARD}_Driver/RISCV/Device/Bouffalo/${BOARD}/Startup" +# "${CMAKE_SOURCE_DIR}/BSP_Driver/BSP_${BOARD}_Driver/RISCV/Core/Include" +# ) +####################################################### + +############## Add current dir source files ########### +file(GLOB_RECURSE sources "${CMAKE_CURRENT_SOURCE_DIR}/*.c") +list(APPEND ADD_SRCS ${sources}) +# aux_source_directory(src ADD_SRCS) +# list(REMOVE_ITEM ADD_SRCS "${CMAKE_CURRENT_SOURCE_DIR}") +####################################################### + +########### Add required/dependent components ######### +#list(APPEND ADD_REQUIREMENTS BSP_${BOARD}_Driver BSP_Common) +####################################################### + +############ Add static libs ########################## +# if(CONFIG_COMPONENT1_INCLUDE_STATIC_LIB) +# list(APPEND ADD_STATIC_LIB "lib/libtest.a") +# endif() +####################################################### + +############ Add dynamic libs ######################### +# list(APPEND ADD_DYNAMIC_LIB "lib/arch/v831/libmaix_nn.so" +# "lib/arch/v831/libmaix_cam.so" +# ) +####################################################### + +############ Add global compile option ################ +#add components denpend on this component +# list(APPEND ADD_DEFINITIONS -DAAAAA222=1 +# -DAAAAA333=1) +####################################################### + +############ Add private compile option ################ +#add compile option for this component that won't affect other modules +# list(APPEND ADD_DEFINITIONS_PRIVATE -DAAAAA=1) +####################################################### + +generate_library() diff --git a/components/fatfs/diskio.c b/components/fatfs/diskio.c new file mode 100644 index 00000000..618ea969 --- /dev/null +++ b/components/fatfs/diskio.c @@ -0,0 +1,293 @@ +/*-----------------------------------------------------------------------*/ +/* Low level disk I/O module skeleton for FatFs (C)ChaN, 2019 */ +/*-----------------------------------------------------------------------*/ +/* If a working storage control module is available, it should be */ +/* attached to the FatFs via a glue function rather than modifying it. */ +/* This is an example of glue functions to attach various exsisting */ +/* storage control modules to the FatFs module with a defined API. */ +/*-----------------------------------------------------------------------*/ + +#include "ff.h" /* Obtains integer types */ +#include "diskio.h" /* Declarations of disk functions */ +#include "stddef.h" + +/* Definitions of physical drive number for each drive */ +#define DEV_RAM 0 /* Example: Map Ramdisk to physical drive 0 */ +#define DEV_MMC 1 /* Example: Map MMC/SD card to physical drive 1 */ +#define DEV_USB 2 /* Example: Map USB MSD to physical drive 2 */ + + +FATFS_DiskioDriverTypeDef pDiskioDriver = { + .RAM_disk_status = NULL, + .MMC_disk_status = NULL, + .USB_disk_status = NULL, + .RAM_disk_initialize = NULL, + .MMC_disk_initialize = NULL, + .USB_disk_initialize = NULL, + .RAM_disk_read = NULL, + .MMC_disk_read = NULL, + .USB_disk_read = NULL, + .RAM_disk_write = NULL, + .MMC_disk_write = NULL, + .USB_disk_write = NULL, + .RAM_disk_ioctl = NULL, + .MMC_disk_ioctl = NULL, + .USB_disk_ioctl = NULL, + .Translate_Result_Code = NULL, +}; + + +/*-----------------------------------------------------------------------*/ +/* init driver callback */ +/*-----------------------------------------------------------------------*/ +void disk_driver_callback_init(FATFS_DiskioDriverTypeDef *pNewDriver) +{ + pDiskioDriver.RAM_disk_status = pNewDriver->RAM_disk_status ; + pDiskioDriver.MMC_disk_status = pNewDriver->MMC_disk_status ; + pDiskioDriver.USB_disk_status = pNewDriver->USB_disk_status ; + pDiskioDriver.RAM_disk_initialize = pNewDriver->RAM_disk_initialize ; + pDiskioDriver.MMC_disk_initialize = pNewDriver->MMC_disk_initialize ; + pDiskioDriver.USB_disk_initialize = pNewDriver->USB_disk_initialize ; + pDiskioDriver.RAM_disk_read = pNewDriver->RAM_disk_read ; + pDiskioDriver.MMC_disk_read = pNewDriver->MMC_disk_read ; + pDiskioDriver.USB_disk_read = pNewDriver->USB_disk_read ; + pDiskioDriver.RAM_disk_write = pNewDriver->RAM_disk_write ; + pDiskioDriver.MMC_disk_write = pNewDriver->MMC_disk_write ; + pDiskioDriver.USB_disk_write = pNewDriver->USB_disk_write ; + pDiskioDriver.RAM_disk_ioctl = pNewDriver->RAM_disk_ioctl ; + pDiskioDriver.MMC_disk_ioctl = pNewDriver->MMC_disk_ioctl ; + pDiskioDriver.USB_disk_ioctl = pNewDriver->USB_disk_ioctl ; + pDiskioDriver.Translate_Result_Code = pNewDriver->Translate_Result_Code ; +} + + + +/*-----------------------------------------------------------------------*/ +/* Get Drive Status */ +/*-----------------------------------------------------------------------*/ + +DSTATUS disk_status ( + BYTE pdrv /* Physical drive nmuber to identify the drive */ +) +{ + DSTATUS stat = STA_NOINIT; + int result = 0; + + switch (pdrv) { + case DEV_RAM : + if(pDiskioDriver.RAM_disk_status){ + result = pDiskioDriver.RAM_disk_status(); + } + break; + + case DEV_MMC : + if(pDiskioDriver.MMC_disk_status){ + result = pDiskioDriver.MMC_disk_status(); + } + break; + + case DEV_USB : + if(pDiskioDriver.USB_disk_status){ + result = pDiskioDriver.USB_disk_status(); + } + break; + + default : + return STA_NOINIT; + } + + /* translate the reslut code here */ + if(pDiskioDriver.Translate_Result_Code){ + stat = pDiskioDriver.Translate_Result_Code(result); + } + + return stat; +} + + + +/*-----------------------------------------------------------------------*/ +/* Inidialize a Drive */ +/*-----------------------------------------------------------------------*/ + +DSTATUS disk_initialize ( + BYTE pdrv /* Physical drive nmuber to identify the drive */ +) +{ + DSTATUS stat = STA_NOINIT; + int result = 0; + + switch (pdrv) { + case DEV_RAM : + if(pDiskioDriver.RAM_disk_initialize){ + result = pDiskioDriver.RAM_disk_initialize(); + } + break; + + case DEV_MMC : + if(pDiskioDriver.MMC_disk_initialize){ + result = pDiskioDriver.MMC_disk_initialize(); + } + break; + + case DEV_USB : + if(pDiskioDriver.USB_disk_initialize){ + result = pDiskioDriver.USB_disk_initialize(); + } + break; + + default : + return STA_NOINIT; + } + + /* translate the reslut code here */ + if(pDiskioDriver.Translate_Result_Code){ + stat = pDiskioDriver.Translate_Result_Code(result); + } + + return stat; +} + + + +/*-----------------------------------------------------------------------*/ +/* Read Sector(s) */ +/*-----------------------------------------------------------------------*/ + +DRESULT disk_read ( + BYTE pdrv, /* Physical drive nmuber to identify the drive */ + BYTE *buff, /* Data buffer to store read data */ + LBA_t sector, /* Start sector in LBA */ + UINT count /* Number of sectors to read */ +) +{ + DSTATUS stat = STA_NOINIT; + int result = 0; + + switch (pdrv) { + case DEV_RAM : + if(pDiskioDriver.RAM_disk_read){ + result = pDiskioDriver.RAM_disk_read(buff, sector, count); + } + break; + + case DEV_MMC : + if(pDiskioDriver.MMC_disk_read){ + result = pDiskioDriver.MMC_disk_read(buff, sector, count); + } + break; + + case DEV_USB : + if(pDiskioDriver.USB_disk_read){ + result = pDiskioDriver.USB_disk_read(buff, sector, count); + } + break; + + default : + return RES_PARERR; + } + + /* translate the reslut code here */ + if(pDiskioDriver.Translate_Result_Code){ + stat = pDiskioDriver.Translate_Result_Code(result); + } + + return stat; +} + + + +/*-----------------------------------------------------------------------*/ +/* Write Sector(s) */ +/*-----------------------------------------------------------------------*/ + +#if FF_FS_READONLY == 0 + +DRESULT disk_write ( + BYTE pdrv, /* Physical drive nmuber to identify the drive */ + const BYTE *buff, /* Data to be written */ + LBA_t sector, /* Start sector in LBA */ + UINT count /* Number of sectors to write */ +) +{ + DSTATUS stat = STA_NOINIT; + int result = 0; + + switch (pdrv) { + case DEV_RAM : + if(pDiskioDriver.RAM_disk_write){ + result = pDiskioDriver.RAM_disk_write(buff, sector, count); + } + break; + + case DEV_MMC : + if(pDiskioDriver.MMC_disk_write){ + result = pDiskioDriver.MMC_disk_write(buff, sector, count); + } + break; + + case DEV_USB : + if(pDiskioDriver.USB_disk_write){ + result = pDiskioDriver.USB_disk_write(buff, sector, count); + } + break; + + default : + return RES_PARERR; + } + + /* translate the reslut code here */ + if(pDiskioDriver.Translate_Result_Code){ + stat = pDiskioDriver.Translate_Result_Code(result); + } + + return stat; +} + +#endif + + +/*-----------------------------------------------------------------------*/ +/* Miscellaneous Functions */ +/*-----------------------------------------------------------------------*/ + +DRESULT disk_ioctl ( + BYTE pdrv, /* Physical drive nmuber (0..) */ + BYTE cmd, /* Control code */ + void *buff /* Buffer to send/receive control data */ +) +{ + DSTATUS stat = STA_NOINIT; + int result = 0; + + switch (pdrv) { + case DEV_RAM : + if(pDiskioDriver.RAM_disk_ioctl){ + result = pDiskioDriver.RAM_disk_ioctl(cmd, buff); + } + break; + + case DEV_MMC : + if(pDiskioDriver.MMC_disk_ioctl){ + result = pDiskioDriver.MMC_disk_ioctl(cmd, buff); + } + break; + + case DEV_USB : + if(pDiskioDriver.USB_disk_ioctl){ + result = pDiskioDriver.USB_disk_ioctl(cmd, buff); + } + break; + + default : + return RES_PARERR; + } + + /* translate the reslut code here */ + if(pDiskioDriver.Translate_Result_Code){ + stat = pDiskioDriver.Translate_Result_Code(result); + } + + return stat; +} + diff --git a/components/fatfs/diskio.h b/components/fatfs/diskio.h new file mode 100644 index 00000000..e4fff87f --- /dev/null +++ b/components/fatfs/diskio.h @@ -0,0 +1,118 @@ +/*-----------------------------------------------------------------------/ +/ Low level disk interface modlue include file (C)ChaN, 2019 / +/-----------------------------------------------------------------------*/ + +#ifndef _DISKIO_DEFINED +#define _DISKIO_DEFINED + +#ifdef __cplusplus +extern "C" { +#endif + +#include "ffconf.h" +#include "ff.h" + +/* Status of Disk Functions */ +typedef BYTE DSTATUS; + +/* Results of Disk Functions */ +typedef enum { + RES_OK = 0, /* 0: Successful */ + RES_ERROR, /* 1: R/W Error */ + RES_WRPRT, /* 2: Write Protected */ + RES_NOTRDY, /* 3: Not Ready */ + RES_PARERR /* 4: Invalid Parameter */ +} DRESULT; + + +/******************user code****************************/ +typedef struct +{ + /* get status */ + int (*RAM_disk_status)(void); + int (*MMC_disk_status)(void); + int (*USB_disk_status)(void); + + /* init */ + int (*RAM_disk_initialize)(void); + int (*MMC_disk_initialize)(void); + int (*USB_disk_initialize)(void); + + /* read */ + int (*RAM_disk_read)(BYTE *buff, LBA_t sector, UINT count); + int (*MMC_disk_read)(BYTE *buff, LBA_t sector, UINT count); + int (*USB_disk_read)(BYTE *buff, LBA_t sector, UINT count); + + /* write */ + int (*RAM_disk_write)(const BYTE *buff, LBA_t sector, UINT count); + int (*MMC_disk_write)(const BYTE *buff, LBA_t sector, UINT count); + int (*USB_disk_write)(const BYTE *buff, LBA_t sector, UINT count); + + /* ioctl */ + int (*RAM_disk_ioctl)(BYTE cmd, void *buff); + int (*MMC_disk_ioctl)(BYTE cmd, void *buff); + int (*USB_disk_ioctl)(BYTE cmd, void *buff); + + /* translate reslut code */ + DSTATUS (*Translate_Result_Code)(int result); +}FATFS_DiskioDriverTypeDef; + +extern FATFS_DiskioDriverTypeDef pDiskioDriver; + +void disk_driver_callback_init(FATFS_DiskioDriverTypeDef *pNewDriver); +/******************user code****************************/ + + +/*---------------------------------------*/ +/* Prototypes for disk control functions */ + + +DSTATUS disk_initialize (BYTE pdrv); +DSTATUS disk_status (BYTE pdrv); +DRESULT disk_read (BYTE pdrv, BYTE* buff, LBA_t sector, UINT count); +DRESULT disk_write (BYTE pdrv, const BYTE* buff, LBA_t sector, UINT count); +DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff); + + +/* Disk Status Bits (DSTATUS) */ + +#define STA_NOINIT 0x01 /* Drive not initialized */ +#define STA_NODISK 0x02 /* No medium in the drive */ +#define STA_PROTECT 0x04 /* Write protected */ + + +/* Command code for disk_ioctrl fucntion */ + +/* Generic command (Used by FatFs) */ +#define CTRL_SYNC 0 /* Complete pending write process (needed at FF_FS_READONLY == 0) */ +#define GET_SECTOR_COUNT 1 /* Get media size (needed at FF_USE_MKFS == 1) */ +#define GET_SECTOR_SIZE 2 /* Get sector size (needed at FF_MAX_SS != FF_MIN_SS) */ +#define GET_BLOCK_SIZE 3 /* Get erase block size (needed at FF_USE_MKFS == 1) */ +#define CTRL_TRIM 4 /* Inform device that the data on the block of sectors is no longer used (needed at FF_USE_TRIM == 1) */ + +/* Generic command (Not used by FatFs) */ +#define CTRL_POWER 5 /* Get/Set power status */ +#define CTRL_LOCK 6 /* Lock/Unlock media removal */ +#define CTRL_EJECT 7 /* Eject media */ +#define CTRL_FORMAT 8 /* Create physical format on the media */ + +/* MMC/SDC specific ioctl command */ +#define MMC_GET_TYPE 10 /* Get card type */ +#define MMC_GET_CSD 11 /* Get CSD */ +#define MMC_GET_CID 12 /* Get CID */ +#define MMC_GET_OCR 13 /* Get OCR */ +#define MMC_GET_SDSTAT 14 /* Get SD status */ +#define ISDIO_READ 55 /* Read data form SD iSDIO register */ +#define ISDIO_WRITE 56 /* Write data to SD iSDIO register */ +#define ISDIO_MRITE 57 /* Masked write data to SD iSDIO register */ + +/* ATA/CF specific ioctl command */ +#define ATA_GET_REV 20 /* Get F/W revision */ +#define ATA_GET_MODEL 21 /* Get model name */ +#define ATA_GET_SN 22 /* Get serial number */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/fatfs/ff.c b/components/fatfs/ff.c new file mode 100644 index 00000000..02299f77 --- /dev/null +++ b/components/fatfs/ff.c @@ -0,0 +1,6852 @@ +/*----------------------------------------------------------------------------/ +/ FatFs - Generic FAT Filesystem Module R0.14 / +/-----------------------------------------------------------------------------/ +/ +/ Copyright (C) 2019, ChaN, all right reserved. +/ +/ FatFs module is an open source software. Redistribution and use of FatFs in +/ source and binary forms, with or without modification, are permitted provided +/ that the following condition is met: +/ +/ 1. Redistributions of source code must retain the above copyright notice, +/ this condition and the following disclaimer. +/ +/ This software is provided by the copyright holder and contributors "AS IS" +/ and any warranties related to this software are DISCLAIMED. +/ The copyright owner or contributors be NOT LIABLE for any damages caused +/ by use of this software. +/ +/----------------------------------------------------------------------------*/ + + +#include "ff.h" /* Declarations of FatFs API */ +#include "diskio.h" /* Declarations of device I/O functions */ + + +/*-------------------------------------------------------------------------- + + Module Private Definitions + +---------------------------------------------------------------------------*/ + +#if FF_DEFINED != 86606 /* Revision ID */ +#error Wrong include file (ff.h). +#endif + + +/* Limits and boundaries */ +#define MAX_DIR 0x200000 /* Max size of FAT directory */ +#define MAX_DIR_EX 0x10000000 /* Max size of exFAT directory */ +#define MAX_FAT12 0xFF5 /* Max FAT12 clusters (differs from specs, but right for real DOS/Windows behavior) */ +#define MAX_FAT16 0xFFF5 /* Max FAT16 clusters (differs from specs, but right for real DOS/Windows behavior) */ +#define MAX_FAT32 0x0FFFFFF5 /* Max FAT32 clusters (not specified, practical limit) */ +#define MAX_EXFAT 0x7FFFFFFD /* Max exFAT clusters (differs from specs, implementation limit) */ + + +/* Character code support macros */ +#define IsUpper(c) ((c) >= 'A' && (c) <= 'Z') +#define IsLower(c) ((c) >= 'a' && (c) <= 'z') +#define IsDigit(c) ((c) >= '0' && (c) <= '9') +#define IsSurrogate(c) ((c) >= 0xD800 && (c) <= 0xDFFF) +#define IsSurrogateH(c) ((c) >= 0xD800 && (c) <= 0xDBFF) +#define IsSurrogateL(c) ((c) >= 0xDC00 && (c) <= 0xDFFF) + + +/* Additional file access control and file status flags for internal use */ +#define FA_SEEKEND 0x20 /* Seek to end of the file on file open */ +#define FA_MODIFIED 0x40 /* File has been modified */ +#define FA_DIRTY 0x80 /* FIL.buf[] needs to be written-back */ + + +/* Additional file attribute bits for internal use */ +#define AM_VOL 0x08 /* Volume label */ +#define AM_LFN 0x0F /* LFN entry */ +#define AM_MASK 0x3F /* Mask of defined bits */ + + +/* Name status flags in fn[11] */ +#define NSFLAG 11 /* Index of the name status byte */ +#define NS_LOSS 0x01 /* Out of 8.3 format */ +#define NS_LFN 0x02 /* Force to create LFN entry */ +#define NS_LAST 0x04 /* Last segment */ +#define NS_BODY 0x08 /* Lower case flag (body) */ +#define NS_EXT 0x10 /* Lower case flag (ext) */ +#define NS_DOT 0x20 /* Dot entry */ +#define NS_NOLFN 0x40 /* Do not find LFN */ +#define NS_NONAME 0x80 /* Not followed */ + + +/* exFAT directory entry types */ +#define ET_BITMAP 0x81 /* Allocation bitmap */ +#define ET_UPCASE 0x82 /* Up-case table */ +#define ET_VLABEL 0x83 /* Volume label */ +#define ET_FILEDIR 0x85 /* File and directory */ +#define ET_STREAM 0xC0 /* Stream extension */ +#define ET_FILENAME 0xC1 /* Name extension */ + + +/* FatFs refers the FAT structure as simple byte array instead of structure member +/ because the C structure is not binary compatible between different platforms */ + +#define BS_JmpBoot 0 /* x86 jump instruction (3-byte) */ +#define BS_OEMName 3 /* OEM name (8-byte) */ +#define BPB_BytsPerSec 11 /* Sector size [byte] (WORD) */ +#define BPB_SecPerClus 13 /* Cluster size [sector] (BYTE) */ +#define BPB_RsvdSecCnt 14 /* Size of reserved area [sector] (WORD) */ +#define BPB_NumFATs 16 /* Number of FATs (BYTE) */ +#define BPB_RootEntCnt 17 /* Size of root directory area for FAT [entry] (WORD) */ +#define BPB_TotSec16 19 /* Volume size (16-bit) [sector] (WORD) */ +#define BPB_Media 21 /* Media descriptor byte (BYTE) */ +#define BPB_FATSz16 22 /* FAT size (16-bit) [sector] (WORD) */ +#define BPB_SecPerTrk 24 /* Number of sectors per track for int13h [sector] (WORD) */ +#define BPB_NumHeads 26 /* Number of heads for int13h (WORD) */ +#define BPB_HiddSec 28 /* Volume offset from top of the drive (DWORD) */ +#define BPB_TotSec32 32 /* Volume size (32-bit) [sector] (DWORD) */ +#define BS_DrvNum 36 /* Physical drive number for int13h (BYTE) */ +#define BS_NTres 37 /* WindowsNT error flag (BYTE) */ +#define BS_BootSig 38 /* Extended boot signature (BYTE) */ +#define BS_VolID 39 /* Volume serial number (DWORD) */ +#define BS_VolLab 43 /* Volume label string (8-byte) */ +#define BS_FilSysType 54 /* Filesystem type string (8-byte) */ +#define BS_BootCode 62 /* Boot code (448-byte) */ +#define BS_55AA 510 /* Signature word (WORD) */ + +#define BPB_FATSz32 36 /* FAT32: FAT size [sector] (DWORD) */ +#define BPB_ExtFlags32 40 /* FAT32: Extended flags (WORD) */ +#define BPB_FSVer32 42 /* FAT32: Filesystem version (WORD) */ +#define BPB_RootClus32 44 /* FAT32: Root directory cluster (DWORD) */ +#define BPB_FSInfo32 48 /* FAT32: Offset of FSINFO sector (WORD) */ +#define BPB_BkBootSec32 50 /* FAT32: Offset of backup boot sector (WORD) */ +#define BS_DrvNum32 64 /* FAT32: Physical drive number for int13h (BYTE) */ +#define BS_NTres32 65 /* FAT32: Error flag (BYTE) */ +#define BS_BootSig32 66 /* FAT32: Extended boot signature (BYTE) */ +#define BS_VolID32 67 /* FAT32: Volume serial number (DWORD) */ +#define BS_VolLab32 71 /* FAT32: Volume label string (8-byte) */ +#define BS_FilSysType32 82 /* FAT32: Filesystem type string (8-byte) */ +#define BS_BootCode32 90 /* FAT32: Boot code (420-byte) */ + +#define BPB_ZeroedEx 11 /* exFAT: MBZ field (53-byte) */ +#define BPB_VolOfsEx 64 /* exFAT: Volume offset from top of the drive [sector] (QWORD) */ +#define BPB_TotSecEx 72 /* exFAT: Volume size [sector] (QWORD) */ +#define BPB_FatOfsEx 80 /* exFAT: FAT offset from top of the volume [sector] (DWORD) */ +#define BPB_FatSzEx 84 /* exFAT: FAT size [sector] (DWORD) */ +#define BPB_DataOfsEx 88 /* exFAT: Data offset from top of the volume [sector] (DWORD) */ +#define BPB_NumClusEx 92 /* exFAT: Number of clusters (DWORD) */ +#define BPB_RootClusEx 96 /* exFAT: Root directory start cluster (DWORD) */ +#define BPB_VolIDEx 100 /* exFAT: Volume serial number (DWORD) */ +#define BPB_FSVerEx 104 /* exFAT: Filesystem version (WORD) */ +#define BPB_VolFlagEx 106 /* exFAT: Volume flags (WORD) */ +#define BPB_BytsPerSecEx 108 /* exFAT: Log2 of sector size in unit of byte (BYTE) */ +#define BPB_SecPerClusEx 109 /* exFAT: Log2 of cluster size in unit of sector (BYTE) */ +#define BPB_NumFATsEx 110 /* exFAT: Number of FATs (BYTE) */ +#define BPB_DrvNumEx 111 /* exFAT: Physical drive number for int13h (BYTE) */ +#define BPB_PercInUseEx 112 /* exFAT: Percent in use (BYTE) */ +#define BPB_RsvdEx 113 /* exFAT: Reserved (7-byte) */ +#define BS_BootCodeEx 120 /* exFAT: Boot code (390-byte) */ + +#define DIR_Name 0 /* Short file name (11-byte) */ +#define DIR_Attr 11 /* Attribute (BYTE) */ +#define DIR_NTres 12 /* Lower case flag (BYTE) */ +#define DIR_CrtTime10 13 /* Created time sub-second (BYTE) */ +#define DIR_CrtTime 14 /* Created time (DWORD) */ +#define DIR_LstAccDate 18 /* Last accessed date (WORD) */ +#define DIR_FstClusHI 20 /* Higher 16-bit of first cluster (WORD) */ +#define DIR_ModTime 22 /* Modified time (DWORD) */ +#define DIR_FstClusLO 26 /* Lower 16-bit of first cluster (WORD) */ +#define DIR_FileSize 28 /* File size (DWORD) */ +#define LDIR_Ord 0 /* LFN: LFN order and LLE flag (BYTE) */ +#define LDIR_Attr 11 /* LFN: LFN attribute (BYTE) */ +#define LDIR_Type 12 /* LFN: Entry type (BYTE) */ +#define LDIR_Chksum 13 /* LFN: Checksum of the SFN (BYTE) */ +#define LDIR_FstClusLO 26 /* LFN: MBZ field (WORD) */ +#define XDIR_Type 0 /* exFAT: Type of exFAT directory entry (BYTE) */ +#define XDIR_NumLabel 1 /* exFAT: Number of volume label characters (BYTE) */ +#define XDIR_Label 2 /* exFAT: Volume label (11-WORD) */ +#define XDIR_CaseSum 4 /* exFAT: Sum of case conversion table (DWORD) */ +#define XDIR_NumSec 1 /* exFAT: Number of secondary entries (BYTE) */ +#define XDIR_SetSum 2 /* exFAT: Sum of the set of directory entries (WORD) */ +#define XDIR_Attr 4 /* exFAT: File attribute (WORD) */ +#define XDIR_CrtTime 8 /* exFAT: Created time (DWORD) */ +#define XDIR_ModTime 12 /* exFAT: Modified time (DWORD) */ +#define XDIR_AccTime 16 /* exFAT: Last accessed time (DWORD) */ +#define XDIR_CrtTime10 20 /* exFAT: Created time subsecond (BYTE) */ +#define XDIR_ModTime10 21 /* exFAT: Modified time subsecond (BYTE) */ +#define XDIR_CrtTZ 22 /* exFAT: Created timezone (BYTE) */ +#define XDIR_ModTZ 23 /* exFAT: Modified timezone (BYTE) */ +#define XDIR_AccTZ 24 /* exFAT: Last accessed timezone (BYTE) */ +#define XDIR_GenFlags 33 /* exFAT: General secondary flags (BYTE) */ +#define XDIR_NumName 35 /* exFAT: Number of file name characters (BYTE) */ +#define XDIR_NameHash 36 /* exFAT: Hash of file name (WORD) */ +#define XDIR_ValidFileSize 40 /* exFAT: Valid file size (QWORD) */ +#define XDIR_FstClus 52 /* exFAT: First cluster of the file data (DWORD) */ +#define XDIR_FileSize 56 /* exFAT: File/Directory size (QWORD) */ + +#define SZDIRE 32 /* Size of a directory entry */ +#define DDEM 0xE5 /* Deleted directory entry mark set to DIR_Name[0] */ +#define RDDEM 0x05 /* Replacement of the character collides with DDEM */ +#define LLEF 0x40 /* Last long entry flag in LDIR_Ord */ + +#define FSI_LeadSig 0 /* FAT32 FSI: Leading signature (DWORD) */ +#define FSI_StrucSig 484 /* FAT32 FSI: Structure signature (DWORD) */ +#define FSI_Free_Count 488 /* FAT32 FSI: Number of free clusters (DWORD) */ +#define FSI_Nxt_Free 492 /* FAT32 FSI: Last allocated cluster (DWORD) */ + +#define MBR_Table 446 /* MBR: Offset of partition table in the MBR */ +#define SZ_PTE 16 /* MBR: Size of a partition table entry */ +#define PTE_Boot 0 /* MBR PTE: Boot indicator */ +#define PTE_StHead 1 /* MBR PTE: Start head */ +#define PTE_StSec 2 /* MBR PTE: Start sector */ +#define PTE_StCyl 3 /* MBR PTE: Start cylinder */ +#define PTE_System 4 /* MBR PTE: System ID */ +#define PTE_EdHead 5 /* MBR PTE: End head */ +#define PTE_EdSec 6 /* MBR PTE: End sector */ +#define PTE_EdCyl 7 /* MBR PTE: End cylinder */ +#define PTE_StLba 8 /* MBR PTE: Start in LBA */ +#define PTE_SizLba 12 /* MBR PTE: Size in LBA */ + +#define GPTH_Sign 0 /* GPT: Header signature (8-byte) */ +#define GPTH_Rev 8 /* GPT: Revision (DWORD) */ +#define GPTH_Size 12 /* GPT: Header size (DWORD) */ +#define GPTH_Bcc 16 /* GPT: Header BCC (DWORD) */ +#define GPTH_CurLba 24 /* GPT: Main header LBA (QWORD) */ +#define GPTH_BakLba 32 /* GPT: Backup header LBA (QWORD) */ +#define GPTH_FstLba 40 /* GPT: First LBA for partitions (QWORD) */ +#define GPTH_LstLba 48 /* GPT: Last LBA for partitions (QWORD) */ +#define GPTH_DskGuid 56 /* GPT: Disk GUID (16-byte) */ +#define GPTH_PtOfs 72 /* GPT: Partation table LBA (QWORD) */ +#define GPTH_PtNum 80 /* GPT: Number of table entries (DWORD) */ +#define GPTH_PteSize 84 /* GPT: Size of table entry (DWORD) */ +#define GPTH_PtBcc 88 /* GPT: Partation table BCC (DWORD) */ +#define SZ_GPTE 128 /* GPT: Size of partition table entry */ +#define GPTE_PtGuid 0 /* GPT PTE: Partition type GUID (16-byte) */ +#define GPTE_UpGuid 16 /* GPT PTE: Partition unique GUID (16-byte) */ +#define GPTE_FstLba 32 /* GPT PTE: First LBA (QWORD) */ +#define GPTE_LstLba 40 /* GPT PTE: Last LBA inclusive (QWORD) */ +#define GPTE_Flags 48 /* GPT PTE: Flags (QWORD) */ +#define GPTE_Name 56 /* GPT PTE: Name */ + + +/* Post process on fatal error in the file operations */ +#define ABORT(fs, res) { fp->err = (BYTE)(res); LEAVE_FF(fs, res); } + + +/* Re-entrancy related */ +#if FF_FS_REENTRANT +#if FF_USE_LFN == 1 +#error Static LFN work area cannot be used at thread-safe configuration +#endif +#define LEAVE_FF(fs, res) { unlock_fs(fs, res); return res; } +#else +#define LEAVE_FF(fs, res) return res +#endif + + +/* Definitions of logical drive - physical location conversion */ +#if FF_MULTI_PARTITION +#define LD2PD(vol) VolToPart[vol].pd /* Get physical drive number */ +#define LD2PT(vol) VolToPart[vol].pt /* Get partition index */ +#else +#define LD2PD(vol) (BYTE)(vol) /* Each logical drive is associated with the same physical drive number */ +#define LD2PT(vol) 0 /* Find first valid partition or in SFD */ +#endif + + +/* Definitions of sector size */ +#if (FF_MAX_SS < FF_MIN_SS) || (FF_MAX_SS != 512 && FF_MAX_SS != 1024 && FF_MAX_SS != 2048 && FF_MAX_SS != 4096) || (FF_MIN_SS != 512 && FF_MIN_SS != 1024 && FF_MIN_SS != 2048 && FF_MIN_SS != 4096) +#error Wrong sector size configuration +#endif +#if FF_MAX_SS == FF_MIN_SS +#define SS(fs) ((UINT)FF_MAX_SS) /* Fixed sector size */ +#else +#define SS(fs) ((fs)->ssize) /* Variable sector size */ +#endif + + +/* Timestamp */ +#if FF_FS_NORTC == 1 +#if FF_NORTC_YEAR < 1980 || FF_NORTC_YEAR > 2107 || FF_NORTC_MON < 1 || FF_NORTC_MON > 12 || FF_NORTC_MDAY < 1 || FF_NORTC_MDAY > 31 +#error Invalid FF_FS_NORTC settings +#endif +#define GET_FATTIME() ((DWORD)(FF_NORTC_YEAR - 1980) << 25 | (DWORD)FF_NORTC_MON << 21 | (DWORD)FF_NORTC_MDAY << 16) +#else +#define GET_FATTIME() get_fattime() +#endif + + +/* File lock controls */ +#if FF_FS_LOCK != 0 +#if FF_FS_READONLY +#error FF_FS_LOCK must be 0 at read-only configuration +#endif +typedef struct { + FATFS *fs; /* Object ID 1, volume (NULL:blank entry) */ + DWORD clu; /* Object ID 2, containing directory (0:root) */ + DWORD ofs; /* Object ID 3, offset in the directory */ + WORD ctr; /* Object open counter, 0:none, 0x01..0xFF:read mode open count, 0x100:write mode */ +} FILESEM; +#endif + + +/* SBCS up-case tables (\x80-\xFF) */ +#define TBL_CT437 {0x80,0x9A,0x45,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x49,0x49,0x49,0x8E,0x8F, \ + 0x90,0x92,0x92,0x4F,0x99,0x4F,0x55,0x55,0x59,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT720 {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT737 {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0x90,0x92,0x92,0x93,0x94,0x95,0x96,0x97,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, \ + 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0xAA,0x92,0x93,0x94,0x95,0x96, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0x97,0xEA,0xEB,0xEC,0xE4,0xED,0xEE,0xEF,0xF5,0xF0,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT771 {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDC,0xDE,0xDE, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0xF0,0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF8,0xFA,0xFA,0xFC,0xFC,0xFE,0xFF} +#define TBL_CT775 {0x80,0x9A,0x91,0xA0,0x8E,0x95,0x8F,0x80,0xAD,0xED,0x8A,0x8A,0xA1,0x8D,0x8E,0x8F, \ + 0x90,0x92,0x92,0xE2,0x99,0x95,0x96,0x97,0x97,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \ + 0xA0,0xA1,0xE0,0xA3,0xA3,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xB5,0xB6,0xB7,0xB8,0xBD,0xBE,0xC6,0xC7,0xA5,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE3,0xE8,0xE8,0xEA,0xEA,0xEE,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT850 {0x43,0x55,0x45,0x41,0x41,0x41,0x41,0x43,0x45,0x45,0x45,0x49,0x49,0x49,0x41,0x41, \ + 0x45,0x92,0x92,0x4F,0x4F,0x4F,0x55,0x55,0x59,0x4F,0x55,0x4F,0x9C,0x4F,0x9E,0x9F, \ + 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0x41,0x41,0x41,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0x41,0x41,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD1,0xD1,0x45,0x45,0x45,0x49,0x49,0x49,0x49,0xD9,0xDA,0xDB,0xDC,0xDD,0x49,0xDF, \ + 0x4F,0xE1,0x4F,0x4F,0x4F,0x4F,0xE6,0xE8,0xE8,0x55,0x55,0x55,0x59,0x59,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT852 {0x80,0x9A,0x90,0xB6,0x8E,0xDE,0x8F,0x80,0x9D,0xD3,0x8A,0x8A,0xD7,0x8D,0x8E,0x8F, \ + 0x90,0x91,0x91,0xE2,0x99,0x95,0x95,0x97,0x97,0x99,0x9A,0x9B,0x9B,0x9D,0x9E,0xAC, \ + 0xB5,0xD6,0xE0,0xE9,0xA4,0xA4,0xA6,0xA6,0xA8,0xA8,0xAA,0x8D,0xAC,0xB8,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBD,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC6,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD1,0xD1,0xD2,0xD3,0xD2,0xD5,0xD6,0xD7,0xB7,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE3,0xD5,0xE6,0xE6,0xE8,0xE9,0xE8,0xEB,0xED,0xED,0xDD,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xEB,0xFC,0xFC,0xFE,0xFF} +#define TBL_CT855 {0x81,0x81,0x83,0x83,0x85,0x85,0x87,0x87,0x89,0x89,0x8B,0x8B,0x8D,0x8D,0x8F,0x8F, \ + 0x91,0x91,0x93,0x93,0x95,0x95,0x97,0x97,0x99,0x99,0x9B,0x9B,0x9D,0x9D,0x9F,0x9F, \ + 0xA1,0xA1,0xA3,0xA3,0xA5,0xA5,0xA7,0xA7,0xA9,0xA9,0xAB,0xAB,0xAD,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB6,0xB6,0xB8,0xB8,0xB9,0xBA,0xBB,0xBC,0xBE,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD1,0xD1,0xD3,0xD3,0xD5,0xD5,0xD7,0xD7,0xDD,0xD9,0xDA,0xDB,0xDC,0xDD,0xE0,0xDF, \ + 0xE0,0xE2,0xE2,0xE4,0xE4,0xE6,0xE6,0xE8,0xE8,0xEA,0xEA,0xEC,0xEC,0xEE,0xEE,0xEF, \ + 0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF8,0xFA,0xFA,0xFC,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT857 {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0x49,0x8E,0x8F, \ + 0x90,0x92,0x92,0xE2,0x99,0xE3,0xEA,0xEB,0x98,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9E, \ + 0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA6,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0x49,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xDE,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT860 {0x80,0x9A,0x90,0x8F,0x8E,0x91,0x86,0x80,0x89,0x89,0x92,0x8B,0x8C,0x98,0x8E,0x8F, \ + 0x90,0x91,0x92,0x8C,0x99,0xA9,0x96,0x9D,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x86,0x8B,0x9F,0x96,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT861 {0x80,0x9A,0x90,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x8B,0x8B,0x8D,0x8E,0x8F, \ + 0x90,0x92,0x92,0x4F,0x99,0x8D,0x55,0x97,0x97,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \ + 0xA4,0xA5,0xA6,0xA7,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT862 {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT863 {0x43,0x55,0x45,0x41,0x41,0x41,0x86,0x43,0x45,0x45,0x45,0x49,0x49,0x8D,0x41,0x8F, \ + 0x45,0x45,0x45,0x4F,0x45,0x49,0x55,0x55,0x98,0x4F,0x55,0x9B,0x9C,0x55,0x55,0x9F, \ + 0xA0,0xA1,0x4F,0x55,0xA4,0xA5,0xA6,0xA7,0x49,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT864 {0x80,0x9A,0x45,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x49,0x49,0x49,0x8E,0x8F, \ + 0x90,0x92,0x92,0x4F,0x99,0x4F,0x55,0x55,0x59,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT865 {0x80,0x9A,0x90,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x49,0x49,0x49,0x8E,0x8F, \ + 0x90,0x92,0x92,0x4F,0x99,0x4F,0x55,0x55,0x59,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT866 {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0xF0,0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} +#define TBL_CT869 {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x86,0x9C,0x8D,0x8F,0x90, \ + 0x91,0x90,0x92,0x95,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xA4,0xA5,0xA6,0xD9,0xDA,0xDB,0xDC,0xA7,0xA8,0xDF, \ + 0xA9,0xAA,0xAC,0xAD,0xB5,0xB6,0xB7,0xB8,0xBD,0xBE,0xC6,0xC7,0xCF,0xCF,0xD0,0xEF, \ + 0xF0,0xF1,0xD1,0xD2,0xD3,0xF5,0xD4,0xF7,0xF8,0xF9,0xD5,0x96,0x95,0x98,0xFE,0xFF} + + +/* DBCS code range |----- 1st byte -----| |----------- 2nd byte -----------| */ +/* <------> <------> <------> <------> <------> */ +#define TBL_DC932 {0x81, 0x9F, 0xE0, 0xFC, 0x40, 0x7E, 0x80, 0xFC, 0x00, 0x00} +#define TBL_DC936 {0x81, 0xFE, 0x00, 0x00, 0x40, 0x7E, 0x80, 0xFE, 0x00, 0x00} +#define TBL_DC949 {0x81, 0xFE, 0x00, 0x00, 0x41, 0x5A, 0x61, 0x7A, 0x81, 0xFE} +#define TBL_DC950 {0x81, 0xFE, 0x00, 0x00, 0x40, 0x7E, 0xA1, 0xFE, 0x00, 0x00} + + +/* Macros for table definitions */ +#define MERGE_2STR(a, b) a ## b +#define MKCVTBL(hd, cp) MERGE_2STR(hd, cp) + + + + +/*-------------------------------------------------------------------------- + + Module Private Work Area + +---------------------------------------------------------------------------*/ +/* Remark: Variables defined here without initial value shall be guaranteed +/ zero/null at start-up. If not, the linker option or start-up routine is +/ not compliance with C standard. */ + +/*--------------------------------*/ +/* File/Volume controls */ +/*--------------------------------*/ + +#if FF_VOLUMES < 1 || FF_VOLUMES > 10 +#error Wrong FF_VOLUMES setting +#endif +static FATFS* FatFs[FF_VOLUMES]; /* Pointer to the filesystem objects (logical drives) */ +static WORD Fsid; /* Filesystem mount ID */ + +#if FF_FS_RPATH != 0 +static BYTE CurrVol; /* Current drive */ +#endif + +#if FF_FS_LOCK != 0 +static FILESEM Files[FF_FS_LOCK]; /* Open object lock semaphores */ +#endif + +#if FF_STR_VOLUME_ID +#ifdef FF_VOLUME_STRS +static const char* const VolumeStr[FF_VOLUMES] = {FF_VOLUME_STRS}; /* Pre-defined volume ID */ +#endif +#endif + +#if FF_LBA64 +#if FF_MIN_GPT > 0x100000000 +#error Wrong FF_MIN_GPT setting +#endif +static const BYTE GUID_MS_Basic[16] = {0xA2,0xA0,0xD0,0xEB,0xE5,0xB9,0x33,0x44,0x87,0xC0,0x68,0xB6,0xB7,0x26,0x99,0xC7}; +#endif + + + +/*--------------------------------*/ +/* LFN/Directory working buffer */ +/*--------------------------------*/ + +#if FF_USE_LFN == 0 /* Non-LFN configuration */ +#if FF_FS_EXFAT +#error LFN must be enabled when enable exFAT +#endif +#define DEF_NAMBUF +#define INIT_NAMBUF(fs) +#define FREE_NAMBUF() +#define LEAVE_MKFS(res) return res + +#else /* LFN configurations */ +#if FF_MAX_LFN < 12 || FF_MAX_LFN > 255 +#error Wrong setting of FF_MAX_LFN +#endif +#if FF_LFN_BUF < FF_SFN_BUF || FF_SFN_BUF < 12 +#error Wrong setting of FF_LFN_BUF or FF_SFN_BUF +#endif +#if FF_LFN_UNICODE < 0 || FF_LFN_UNICODE > 3 +#error Wrong setting of FF_LFN_UNICODE +#endif +static const BYTE LfnOfs[] = {1,3,5,7,9,14,16,18,20,22,24,28,30}; /* FAT: Offset of LFN characters in the directory entry */ +#define MAXDIRB(nc) ((nc + 44U) / 15 * SZDIRE) /* exFAT: Size of directory entry block scratchpad buffer needed for the name length */ + +#if FF_USE_LFN == 1 /* LFN enabled with static working buffer */ +#if FF_FS_EXFAT +static BYTE DirBuf[MAXDIRB(FF_MAX_LFN)]; /* Directory entry block scratchpad buffer */ +#endif +static WCHAR LfnBuf[FF_MAX_LFN + 1]; /* LFN working buffer */ +#define DEF_NAMBUF +#define INIT_NAMBUF(fs) +#define FREE_NAMBUF() +#define LEAVE_MKFS(res) return res + +#elif FF_USE_LFN == 2 /* LFN enabled with dynamic working buffer on the stack */ +#if FF_FS_EXFAT +#define DEF_NAMBUF WCHAR lbuf[FF_MAX_LFN+1]; BYTE dbuf[MAXDIRB(FF_MAX_LFN)]; /* LFN working buffer and directory entry block scratchpad buffer */ +#define INIT_NAMBUF(fs) { (fs)->lfnbuf = lbuf; (fs)->dirbuf = dbuf; } +#define FREE_NAMBUF() +#else +#define DEF_NAMBUF WCHAR lbuf[FF_MAX_LFN+1]; /* LFN working buffer */ +#define INIT_NAMBUF(fs) { (fs)->lfnbuf = lbuf; } +#define FREE_NAMBUF() +#endif +#define LEAVE_MKFS(res) return res + +#elif FF_USE_LFN == 3 /* LFN enabled with dynamic working buffer on the heap */ +#if FF_FS_EXFAT +#define DEF_NAMBUF WCHAR *lfn; /* Pointer to LFN working buffer and directory entry block scratchpad buffer */ +#define INIT_NAMBUF(fs) { lfn = ff_memalloc((FF_MAX_LFN+1)*2 + MAXDIRB(FF_MAX_LFN)); if (!lfn) LEAVE_FF(fs, FR_NOT_ENOUGH_CORE); (fs)->lfnbuf = lfn; (fs)->dirbuf = (BYTE*)(lfn+FF_MAX_LFN+1); } +#define FREE_NAMBUF() ff_memfree(lfn) +#else +#define DEF_NAMBUF WCHAR *lfn; /* Pointer to LFN working buffer */ +#define INIT_NAMBUF(fs) { lfn = ff_memalloc((FF_MAX_LFN+1)*2); if (!lfn) LEAVE_FF(fs, FR_NOT_ENOUGH_CORE); (fs)->lfnbuf = lfn; } +#define FREE_NAMBUF() ff_memfree(lfn) +#endif +#define LEAVE_MKFS(res) { if (!work) ff_memfree(buf); return res; } +#define MAX_MALLOC 0x8000 /* Must be >=FF_MAX_SS */ + +#else +#error Wrong setting of FF_USE_LFN + +#endif /* FF_USE_LFN == 1 */ +#endif /* FF_USE_LFN == 0 */ + + + +/*--------------------------------*/ +/* Code conversion tables */ +/*--------------------------------*/ + +#if FF_CODE_PAGE == 0 /* Run-time code page configuration */ +#define CODEPAGE CodePage +static WORD CodePage; /* Current code page */ +static const BYTE *ExCvt, *DbcTbl; /* Pointer to current SBCS up-case table and DBCS code range table below */ + +static const BYTE Ct437[] = TBL_CT437; +static const BYTE Ct720[] = TBL_CT720; +static const BYTE Ct737[] = TBL_CT737; +static const BYTE Ct771[] = TBL_CT771; +static const BYTE Ct775[] = TBL_CT775; +static const BYTE Ct850[] = TBL_CT850; +static const BYTE Ct852[] = TBL_CT852; +static const BYTE Ct855[] = TBL_CT855; +static const BYTE Ct857[] = TBL_CT857; +static const BYTE Ct860[] = TBL_CT860; +static const BYTE Ct861[] = TBL_CT861; +static const BYTE Ct862[] = TBL_CT862; +static const BYTE Ct863[] = TBL_CT863; +static const BYTE Ct864[] = TBL_CT864; +static const BYTE Ct865[] = TBL_CT865; +static const BYTE Ct866[] = TBL_CT866; +static const BYTE Ct869[] = TBL_CT869; +static const BYTE Dc932[] = TBL_DC932; +static const BYTE Dc936[] = TBL_DC936; +static const BYTE Dc949[] = TBL_DC949; +static const BYTE Dc950[] = TBL_DC950; + +#elif FF_CODE_PAGE < 900 /* Static code page configuration (SBCS) */ +#define CODEPAGE FF_CODE_PAGE +static const BYTE ExCvt[] = MKCVTBL(TBL_CT, FF_CODE_PAGE); + +#else /* Static code page configuration (DBCS) */ +#define CODEPAGE FF_CODE_PAGE +static const BYTE DbcTbl[] = MKCVTBL(TBL_DC, FF_CODE_PAGE); + +#endif + + + + +/*-------------------------------------------------------------------------- + + Module Private Functions + +---------------------------------------------------------------------------*/ + + +/*-----------------------------------------------------------------------*/ +/* Load/Store multi-byte word in the FAT structure */ +/*-----------------------------------------------------------------------*/ + +static WORD ld_word (const BYTE* ptr) /* Load a 2-byte little-endian word */ +{ + WORD rv; + + rv = ptr[1]; + rv = rv << 8 | ptr[0]; + return rv; +} + +static DWORD ld_dword (const BYTE* ptr) /* Load a 4-byte little-endian word */ +{ + DWORD rv; + + rv = ptr[3]; + rv = rv << 8 | ptr[2]; + rv = rv << 8 | ptr[1]; + rv = rv << 8 | ptr[0]; + return rv; +} + +#if FF_FS_EXFAT +static QWORD ld_qword (const BYTE* ptr) /* Load an 8-byte little-endian word */ +{ + QWORD rv; + + rv = ptr[7]; + rv = rv << 8 | ptr[6]; + rv = rv << 8 | ptr[5]; + rv = rv << 8 | ptr[4]; + rv = rv << 8 | ptr[3]; + rv = rv << 8 | ptr[2]; + rv = rv << 8 | ptr[1]; + rv = rv << 8 | ptr[0]; + return rv; +} +#endif + +#if !FF_FS_READONLY +static void st_word (BYTE* ptr, WORD val) /* Store a 2-byte word in little-endian */ +{ + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; +} + +static void st_dword (BYTE* ptr, DWORD val) /* Store a 4-byte word in little-endian */ +{ + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; +} + +#if FF_FS_EXFAT +static void st_qword (BYTE* ptr, QWORD val) /* Store an 8-byte word in little-endian */ +{ + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; +} +#endif +#endif /* !FF_FS_READONLY */ + + + +/*-----------------------------------------------------------------------*/ +/* String functions */ +/*-----------------------------------------------------------------------*/ + +/* Copy memory to memory */ +static void mem_cpy (void* dst, const void* src, UINT cnt) +{ + BYTE *d = (BYTE*)dst; + const BYTE *s = (const BYTE*)src; + + if (cnt != 0) { + do { + *d++ = *s++; + } while (--cnt); + } +} + + +/* Fill memory block */ +static void mem_set (void* dst, int val, UINT cnt) +{ + BYTE *d = (BYTE*)dst; + + do { + *d++ = (BYTE)val; + } while (--cnt); +} + + +/* Compare memory block */ +static int mem_cmp (const void* dst, const void* src, UINT cnt) /* ZR:same, NZ:different */ +{ + const BYTE *d = (const BYTE *)dst, *s = (const BYTE *)src; + int r = 0; + + do { + r = *d++ - *s++; + } while (--cnt && r == 0); + + return r; +} + + +/* Check if chr is contained in the string */ +static int chk_chr (const char* str, int chr) /* NZ:contained, ZR:not contained */ +{ + while (*str && *str != chr) str++; + return *str; +} + + +/* Test if the byte is DBC 1st byte */ +static int dbc_1st (BYTE c) +{ +#if FF_CODE_PAGE == 0 /* Variable code page */ + if (DbcTbl && c >= DbcTbl[0]) { + if (c <= DbcTbl[1]) return 1; /* 1st byte range 1 */ + if (c >= DbcTbl[2] && c <= DbcTbl[3]) return 1; /* 1st byte range 2 */ + } +#elif FF_CODE_PAGE >= 900 /* DBCS fixed code page */ + if (c >= DbcTbl[0]) { + if (c <= DbcTbl[1]) return 1; + if (c >= DbcTbl[2] && c <= DbcTbl[3]) return 1; + } +#else /* SBCS fixed code page */ + if (c != 0) return 0; /* Always false */ +#endif + return 0; +} + + +/* Test if the byte is DBC 2nd byte */ +static int dbc_2nd (BYTE c) +{ +#if FF_CODE_PAGE == 0 /* Variable code page */ + if (DbcTbl && c >= DbcTbl[4]) { + if (c <= DbcTbl[5]) return 1; /* 2nd byte range 1 */ + if (c >= DbcTbl[6] && c <= DbcTbl[7]) return 1; /* 2nd byte range 2 */ + if (c >= DbcTbl[8] && c <= DbcTbl[9]) return 1; /* 2nd byte range 3 */ + } +#elif FF_CODE_PAGE >= 900 /* DBCS fixed code page */ + if (c >= DbcTbl[4]) { + if (c <= DbcTbl[5]) return 1; + if (c >= DbcTbl[6] && c <= DbcTbl[7]) return 1; + if (c >= DbcTbl[8] && c <= DbcTbl[9]) return 1; + } +#else /* SBCS fixed code page */ + if (c != 0) return 0; /* Always false */ +#endif + return 0; +} + + +#if FF_USE_LFN + +/* Get a Unicode code point from the TCHAR string in defined API encodeing */ +static DWORD tchar2uni ( /* Returns a character in UTF-16 encoding (>=0x10000 on surrogate pair, 0xFFFFFFFF on decode error) */ + const TCHAR** str /* Pointer to pointer to TCHAR string in configured encoding */ +) +{ + DWORD uc; + const TCHAR *p = *str; + +#if FF_LFN_UNICODE == 1 /* UTF-16 input */ + WCHAR wc; + + uc = *p++; /* Get a unit */ + if (IsSurrogate(uc)) { /* Surrogate? */ + wc = *p++; /* Get low surrogate */ + if (!IsSurrogateH(uc) || !IsSurrogateL(wc)) return 0xFFFFFFFF; /* Wrong surrogate? */ + uc = uc << 16 | wc; + } + +#elif FF_LFN_UNICODE == 2 /* UTF-8 input */ + BYTE b; + int nf; + + uc = (BYTE)*p++; /* Get an encoding unit */ + if (uc & 0x80) { /* Multiple byte code? */ + if ((uc & 0xE0) == 0xC0) { /* 2-byte sequence? */ + uc &= 0x1F; nf = 1; + } else { + if ((uc & 0xF0) == 0xE0) { /* 3-byte sequence? */ + uc &= 0x0F; nf = 2; + } else { + if ((uc & 0xF8) == 0xF0) { /* 4-byte sequence? */ + uc &= 0x07; nf = 3; + } else { /* Wrong sequence */ + return 0xFFFFFFFF; + } + } + } + do { /* Get trailing bytes */ + b = (BYTE)*p++; + if ((b & 0xC0) != 0x80) return 0xFFFFFFFF; /* Wrong sequence? */ + uc = uc << 6 | (b & 0x3F); + } while (--nf != 0); + if (uc < 0x80 || IsSurrogate(uc) || uc >= 0x110000) return 0xFFFFFFFF; /* Wrong code? */ + if (uc >= 0x010000) uc = 0xD800DC00 | ((uc - 0x10000) << 6 & 0x3FF0000) | (uc & 0x3FF); /* Make a surrogate pair if needed */ + } + +#elif FF_LFN_UNICODE == 3 /* UTF-32 input */ + uc = (TCHAR)*p++; /* Get a unit */ + if (uc >= 0x110000 || IsSurrogate(uc)) return 0xFFFFFFFF; /* Wrong code? */ + if (uc >= 0x010000) uc = 0xD800DC00 | ((uc - 0x10000) << 6 & 0x3FF0000) | (uc & 0x3FF); /* Make a surrogate pair if needed */ + +#else /* ANSI/OEM input */ + BYTE b; + WCHAR wc; + + wc = (BYTE)*p++; /* Get a byte */ + if (dbc_1st((BYTE)wc)) { /* Is it a DBC 1st byte? */ + b = (BYTE)*p++; /* Get 2nd byte */ + if (!dbc_2nd(b)) return 0xFFFFFFFF; /* Invalid code? */ + wc = (wc << 8) + b; /* Make a DBC */ + } + if (wc != 0) { + wc = ff_oem2uni(wc, CODEPAGE); /* ANSI/OEM ==> Unicode */ + if (wc == 0) return 0xFFFFFFFF; /* Invalid code? */ + } + uc = wc; + +#endif + *str = p; /* Next read pointer */ + return uc; +} + + +/* Output a TCHAR string in defined API encoding */ +static BYTE put_utf ( /* Returns number of encoding units written (0:buffer overflow or wrong encoding) */ + DWORD chr, /* UTF-16 encoded character (Surrogate pair if >=0x10000) */ + TCHAR* buf, /* Output buffer */ + UINT szb /* Size of the buffer */ +) +{ +#if FF_LFN_UNICODE == 1 /* UTF-16 output */ + WCHAR hs, wc; + + hs = (WCHAR)(chr >> 16); + wc = (WCHAR)chr; + if (hs == 0) { /* Single encoding unit? */ + if (szb < 1 || IsSurrogate(wc)) return 0; /* Buffer overflow or wrong code? */ + *buf = wc; + return 1; + } + if (szb < 2 || !IsSurrogateH(hs) || !IsSurrogateL(wc)) return 0; /* Buffer overflow or wrong surrogate? */ + *buf++ = hs; + *buf++ = wc; + return 2; + +#elif FF_LFN_UNICODE == 2 /* UTF-8 output */ + DWORD hc; + + if (chr < 0x80) { /* Single byte code? */ + if (szb < 1) return 0; /* Buffer overflow? */ + *buf = (TCHAR)chr; + return 1; + } + if (chr < 0x800) { /* 2-byte sequence? */ + if (szb < 2) return 0; /* Buffer overflow? */ + *buf++ = (TCHAR)(0xC0 | (chr >> 6 & 0x1F)); + *buf++ = (TCHAR)(0x80 | (chr >> 0 & 0x3F)); + return 2; + } + if (chr < 0x10000) { /* 3-byte sequence? */ + if (szb < 3 || IsSurrogate(chr)) return 0; /* Buffer overflow or wrong code? */ + *buf++ = (TCHAR)(0xE0 | (chr >> 12 & 0x0F)); + *buf++ = (TCHAR)(0x80 | (chr >> 6 & 0x3F)); + *buf++ = (TCHAR)(0x80 | (chr >> 0 & 0x3F)); + return 3; + } + /* 4-byte sequence */ + if (szb < 4) return 0; /* Buffer overflow? */ + hc = ((chr & 0xFFFF0000) - 0xD8000000) >> 6; /* Get high 10 bits */ + chr = (chr & 0xFFFF) - 0xDC00; /* Get low 10 bits */ + if (hc >= 0x100000 || chr >= 0x400) return 0; /* Wrong surrogate? */ + chr = (hc | chr) + 0x10000; + *buf++ = (TCHAR)(0xF0 | (chr >> 18 & 0x07)); + *buf++ = (TCHAR)(0x80 | (chr >> 12 & 0x3F)); + *buf++ = (TCHAR)(0x80 | (chr >> 6 & 0x3F)); + *buf++ = (TCHAR)(0x80 | (chr >> 0 & 0x3F)); + return 4; + +#elif FF_LFN_UNICODE == 3 /* UTF-32 output */ + DWORD hc; + + if (szb < 1) return 0; /* Buffer overflow? */ + if (chr >= 0x10000) { /* Out of BMP? */ + hc = ((chr & 0xFFFF0000) - 0xD8000000) >> 6; /* Get high 10 bits */ + chr = (chr & 0xFFFF) - 0xDC00; /* Get low 10 bits */ + if (hc >= 0x100000 || chr >= 0x400) return 0; /* Wrong surrogate? */ + chr = (hc | chr) + 0x10000; + } + *buf++ = (TCHAR)chr; + return 1; + +#else /* ANSI/OEM output */ + WCHAR wc; + + wc = ff_uni2oem(chr, CODEPAGE); + if (wc >= 0x100) { /* Is this a DBC? */ + if (szb < 2) return 0; + *buf++ = (char)(wc >> 8); /* Store DBC 1st byte */ + *buf++ = (TCHAR)wc; /* Store DBC 2nd byte */ + return 2; + } + if (wc == 0 || szb < 1) return 0; /* Invalid char or buffer overflow? */ + *buf++ = (TCHAR)wc; /* Store the character */ + return 1; +#endif +} +#endif /* FF_USE_LFN */ + + +#if FF_FS_REENTRANT +/*-----------------------------------------------------------------------*/ +/* Request/Release grant to access the volume */ +/*-----------------------------------------------------------------------*/ +static int lock_fs ( /* 1:Ok, 0:timeout */ + FATFS* fs /* Filesystem object */ +) +{ + return ff_req_grant(fs->sobj); +} + + +static void unlock_fs ( + FATFS* fs, /* Filesystem object */ + FRESULT res /* Result code to be returned */ +) +{ + if (fs && res != FR_NOT_ENABLED && res != FR_INVALID_DRIVE && res != FR_TIMEOUT) { + ff_rel_grant(fs->sobj); + } +} + +#endif + + + +#if FF_FS_LOCK != 0 +/*-----------------------------------------------------------------------*/ +/* File lock control functions */ +/*-----------------------------------------------------------------------*/ + +static FRESULT chk_lock ( /* Check if the file can be accessed */ + DIR* dp, /* Directory object pointing the file to be checked */ + int acc /* Desired access type (0:Read mode open, 1:Write mode open, 2:Delete or rename) */ +) +{ + UINT i, be; + + /* Search open object table for the object */ + be = 0; + for (i = 0; i < FF_FS_LOCK; i++) { + if (Files[i].fs) { /* Existing entry */ + if (Files[i].fs == dp->obj.fs && /* Check if the object matches with an open object */ + Files[i].clu == dp->obj.sclust && + Files[i].ofs == dp->dptr) break; + } else { /* Blank entry */ + be = 1; + } + } + if (i == FF_FS_LOCK) { /* The object has not been opened */ + return (!be && acc != 2) ? FR_TOO_MANY_OPEN_FILES : FR_OK; /* Is there a blank entry for new object? */ + } + + /* The object was opened. Reject any open against writing file and all write mode open */ + return (acc != 0 || Files[i].ctr == 0x100) ? FR_LOCKED : FR_OK; +} + + +static int enq_lock (void) /* Check if an entry is available for a new object */ +{ + UINT i; + + for (i = 0; i < FF_FS_LOCK && Files[i].fs; i++) ; + return (i == FF_FS_LOCK) ? 0 : 1; +} + + +static UINT inc_lock ( /* Increment object open counter and returns its index (0:Internal error) */ + DIR* dp, /* Directory object pointing the file to register or increment */ + int acc /* Desired access (0:Read, 1:Write, 2:Delete/Rename) */ +) +{ + UINT i; + + + for (i = 0; i < FF_FS_LOCK; i++) { /* Find the object */ + if (Files[i].fs == dp->obj.fs + && Files[i].clu == dp->obj.sclust + && Files[i].ofs == dp->dptr) break; + } + + if (i == FF_FS_LOCK) { /* Not opened. Register it as new. */ + for (i = 0; i < FF_FS_LOCK && Files[i].fs; i++) ; + if (i == FF_FS_LOCK) return 0; /* No free entry to register (int err) */ + Files[i].fs = dp->obj.fs; + Files[i].clu = dp->obj.sclust; + Files[i].ofs = dp->dptr; + Files[i].ctr = 0; + } + + if (acc >= 1 && Files[i].ctr) return 0; /* Access violation (int err) */ + + Files[i].ctr = acc ? 0x100 : Files[i].ctr + 1; /* Set semaphore value */ + + return i + 1; /* Index number origin from 1 */ +} + + +static FRESULT dec_lock ( /* Decrement object open counter */ + UINT i /* Semaphore index (1..) */ +) +{ + WORD n; + FRESULT res; + + + if (--i < FF_FS_LOCK) { /* Index number origin from 0 */ + n = Files[i].ctr; + if (n == 0x100) n = 0; /* If write mode open, delete the entry */ + if (n > 0) n--; /* Decrement read mode open count */ + Files[i].ctr = n; + if (n == 0) Files[i].fs = 0; /* Delete the entry if open count gets zero */ + res = FR_OK; + } else { + res = FR_INT_ERR; /* Invalid index nunber */ + } + return res; +} + + +static void clear_lock ( /* Clear lock entries of the volume */ + FATFS *fs +) +{ + UINT i; + + for (i = 0; i < FF_FS_LOCK; i++) { + if (Files[i].fs == fs) Files[i].fs = 0; + } +} + +#endif /* FF_FS_LOCK != 0 */ + + + +/*-----------------------------------------------------------------------*/ +/* Move/Flush disk access window in the filesystem object */ +/*-----------------------------------------------------------------------*/ +#if !FF_FS_READONLY +static FRESULT sync_window ( /* Returns FR_OK or FR_DISK_ERR */ + FATFS* fs /* Filesystem object */ +) +{ + FRESULT res = FR_OK; + + + if (fs->wflag) { /* Is the disk access window dirty? */ + if (disk_write(fs->pdrv, fs->win, fs->winsect, 1) == RES_OK) { /* Write it back into the volume */ + fs->wflag = 0; /* Clear window dirty flag */ + if (fs->winsect - fs->fatbase < fs->fsize) { /* Is it in the 1st FAT? */ + if (fs->n_fats == 2) disk_write(fs->pdrv, fs->win, fs->winsect + fs->fsize, 1); /* Reflect it to 2nd FAT if needed */ + } + } else { + res = FR_DISK_ERR; + } + } + return res; +} +#endif + + +static FRESULT move_window ( /* Returns FR_OK or FR_DISK_ERR */ + FATFS* fs, /* Filesystem object */ + LBA_t sect /* Sector LBA to make appearance in the fs->win[] */ +) +{ + FRESULT res = FR_OK; + + + if (sect != fs->winsect) { /* Window offset changed? */ +#if !FF_FS_READONLY + res = sync_window(fs); /* Flush the window */ +#endif + if (res == FR_OK) { /* Fill sector window with new data */ + if (disk_read(fs->pdrv, fs->win, sect, 1) != RES_OK) { + sect = (LBA_t)0 - 1; /* Invalidate window if read data is not valid */ + res = FR_DISK_ERR; + } + fs->winsect = sect; + } + } + return res; +} + + + + +#if !FF_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Synchronize filesystem and data on the storage */ +/*-----------------------------------------------------------------------*/ + +static FRESULT sync_fs ( /* Returns FR_OK or FR_DISK_ERR */ + FATFS* fs /* Filesystem object */ +) +{ + FRESULT res; + + + res = sync_window(fs); + if (res == FR_OK) { + if (fs->fs_type == FS_FAT32 && fs->fsi_flag == 1) { /* FAT32: Update FSInfo sector if needed */ + /* Create FSInfo structure */ + mem_set(fs->win, 0, sizeof fs->win); + st_word(fs->win + BS_55AA, 0xAA55); + st_dword(fs->win + FSI_LeadSig, 0x41615252); + st_dword(fs->win + FSI_StrucSig, 0x61417272); + st_dword(fs->win + FSI_Free_Count, fs->free_clst); + st_dword(fs->win + FSI_Nxt_Free, fs->last_clst); + /* Write it into the FSInfo sector */ + fs->winsect = fs->volbase + 1; + disk_write(fs->pdrv, fs->win, fs->winsect, 1); + fs->fsi_flag = 0; + } + /* Make sure that no pending write process in the lower layer */ + if (disk_ioctl(fs->pdrv, CTRL_SYNC, 0) != RES_OK) res = FR_DISK_ERR; + } + + return res; +} + +#endif + + + +/*-----------------------------------------------------------------------*/ +/* Get physical sector number from cluster number */ +/*-----------------------------------------------------------------------*/ + +static LBA_t clst2sect ( /* !=0:Sector number, 0:Failed (invalid cluster#) */ + FATFS* fs, /* Filesystem object */ + DWORD clst /* Cluster# to be converted */ +) +{ + clst -= 2; /* Cluster number is origin from 2 */ + if (clst >= fs->n_fatent - 2) return 0; /* Is it invalid cluster number? */ + return fs->database + (LBA_t)fs->csize * clst; /* Start sector number of the cluster */ +} + + + + +/*-----------------------------------------------------------------------*/ +/* FAT access - Read value of a FAT entry */ +/*-----------------------------------------------------------------------*/ + +static DWORD get_fat ( /* 0xFFFFFFFF:Disk error, 1:Internal error, 2..0x7FFFFFFF:Cluster status */ + FFOBJID* obj, /* Corresponding object */ + DWORD clst /* Cluster number to get the value */ +) +{ + UINT wc, bc; + DWORD val; + FATFS *fs = obj->fs; + + + if (clst < 2 || clst >= fs->n_fatent) { /* Check if in valid range */ + val = 1; /* Internal error */ + + } else { + val = 0xFFFFFFFF; /* Default value falls on disk error */ + + switch (fs->fs_type) { + case FS_FAT12 : + bc = (UINT)clst; bc += bc / 2; + if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; + wc = fs->win[bc++ % SS(fs)]; /* Get 1st byte of the entry */ + if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; + wc |= fs->win[bc % SS(fs)] << 8; /* Merge 2nd byte of the entry */ + val = (clst & 1) ? (wc >> 4) : (wc & 0xFFF); /* Adjust bit position */ + break; + + case FS_FAT16 : + if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 2))) != FR_OK) break; + val = ld_word(fs->win + clst * 2 % SS(fs)); /* Simple WORD array */ + break; + + case FS_FAT32 : + if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 4))) != FR_OK) break; + val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x0FFFFFFF; /* Simple DWORD array but mask out upper 4 bits */ + break; +#if FF_FS_EXFAT + case FS_EXFAT : + if ((obj->objsize != 0 && obj->sclust != 0) || obj->stat == 0) { /* Object except root dir must have valid data length */ + DWORD cofs = clst - obj->sclust; /* Offset from start cluster */ + DWORD clen = (DWORD)((LBA_t)((obj->objsize - 1) / SS(fs)) / fs->csize); /* Number of clusters - 1 */ + + if (obj->stat == 2 && cofs <= clen) { /* Is it a contiguous chain? */ + val = (cofs == clen) ? 0x7FFFFFFF : clst + 1; /* No data on the FAT, generate the value */ + break; + } + if (obj->stat == 3 && cofs < obj->n_cont) { /* Is it in the 1st fragment? */ + val = clst + 1; /* Generate the value */ + break; + } + if (obj->stat != 2) { /* Get value from FAT if FAT chain is valid */ + if (obj->n_frag != 0) { /* Is it on the growing edge? */ + val = 0x7FFFFFFF; /* Generate EOC */ + } else { + if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 4))) != FR_OK) break; + val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x7FFFFFFF; + } + break; + } + } + /* go to default */ +#endif + default: + val = 1; /* Internal error */ + } + } + + return val; +} + + + + +#if !FF_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* FAT access - Change value of a FAT entry */ +/*-----------------------------------------------------------------------*/ + +static FRESULT put_fat ( /* FR_OK(0):succeeded, !=0:error */ + FATFS* fs, /* Corresponding filesystem object */ + DWORD clst, /* FAT index number (cluster number) to be changed */ + DWORD val /* New value to be set to the entry */ +) +{ + UINT bc; + BYTE *p; + FRESULT res = FR_INT_ERR; + + + if (clst >= 2 && clst < fs->n_fatent) { /* Check if in valid range */ + switch (fs->fs_type) { + case FS_FAT12 : + bc = (UINT)clst; bc += bc / 2; /* bc: byte offset of the entry */ + res = move_window(fs, fs->fatbase + (bc / SS(fs))); + if (res != FR_OK) break; + p = fs->win + bc++ % SS(fs); + *p = (clst & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val; /* Update 1st byte */ + fs->wflag = 1; + res = move_window(fs, fs->fatbase + (bc / SS(fs))); + if (res != FR_OK) break; + p = fs->win + bc % SS(fs); + *p = (clst & 1) ? (BYTE)(val >> 4) : ((*p & 0xF0) | ((BYTE)(val >> 8) & 0x0F)); /* Update 2nd byte */ + fs->wflag = 1; + break; + + case FS_FAT16 : + res = move_window(fs, fs->fatbase + (clst / (SS(fs) / 2))); + if (res != FR_OK) break; + st_word(fs->win + clst * 2 % SS(fs), (WORD)val); /* Simple WORD array */ + fs->wflag = 1; + break; + + case FS_FAT32 : +#if FF_FS_EXFAT + case FS_EXFAT : +#endif + res = move_window(fs, fs->fatbase + (clst / (SS(fs) / 4))); + if (res != FR_OK) break; + if (!FF_FS_EXFAT || fs->fs_type != FS_EXFAT) { + val = (val & 0x0FFFFFFF) | (ld_dword(fs->win + clst * 4 % SS(fs)) & 0xF0000000); + } + st_dword(fs->win + clst * 4 % SS(fs), val); + fs->wflag = 1; + break; + + /* add this for make pass */ + default : + break; + } + } + return res; +} + +#endif /* !FF_FS_READONLY */ + + + + +#if FF_FS_EXFAT && !FF_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* exFAT: Accessing FAT and Allocation Bitmap */ +/*-----------------------------------------------------------------------*/ + +/*--------------------------------------*/ +/* Find a contiguous free cluster block */ +/*--------------------------------------*/ + +static DWORD find_bitmap ( /* 0:Not found, 2..:Cluster block found, 0xFFFFFFFF:Disk error */ + FATFS* fs, /* Filesystem object */ + DWORD clst, /* Cluster number to scan from */ + DWORD ncl /* Number of contiguous clusters to find (1..) */ +) +{ + BYTE bm, bv; + UINT i; + DWORD val, scl, ctr; + + + clst -= 2; /* The first bit in the bitmap corresponds to cluster #2 */ + if (clst >= fs->n_fatent - 2) clst = 0; + scl = val = clst; ctr = 0; + for (;;) { + if (move_window(fs, fs->bitbase + val / 8 / SS(fs)) != FR_OK) return 0xFFFFFFFF; + i = val / 8 % SS(fs); bm = 1 << (val % 8); + do { + do { + bv = fs->win[i] & bm; bm <<= 1; /* Get bit value */ + if (++val >= fs->n_fatent - 2) { /* Next cluster (with wrap-around) */ + val = 0; bm = 0; i = SS(fs); + } + if (bv == 0) { /* Is it a free cluster? */ + if (++ctr == ncl) return scl + 2; /* Check if run length is sufficient for required */ + } else { + scl = val; ctr = 0; /* Encountered a cluster in-use, restart to scan */ + } + if (val == clst) return 0; /* All cluster scanned? */ + } while (bm != 0); + bm = 1; + } while (++i < SS(fs)); + } +} + + +/*----------------------------------------*/ +/* Set/Clear a block of allocation bitmap */ +/*----------------------------------------*/ + +static FRESULT change_bitmap ( + FATFS* fs, /* Filesystem object */ + DWORD clst, /* Cluster number to change from */ + DWORD ncl, /* Number of clusters to be changed */ + int bv /* bit value to be set (0 or 1) */ +) +{ + BYTE bm; + UINT i; + LBA_t sect; + + + clst -= 2; /* The first bit corresponds to cluster #2 */ + sect = fs->bitbase + clst / 8 / SS(fs); /* Sector address */ + i = clst / 8 % SS(fs); /* Byte offset in the sector */ + bm = 1 << (clst % 8); /* Bit mask in the byte */ + for (;;) { + if (move_window(fs, sect++) != FR_OK) return FR_DISK_ERR; + do { + do { + if (bv == (int)((fs->win[i] & bm) != 0)) return FR_INT_ERR; /* Is the bit expected value? */ + fs->win[i] ^= bm; /* Flip the bit */ + fs->wflag = 1; + if (--ncl == 0) return FR_OK; /* All bits processed? */ + } while (bm <<= 1); /* Next bit */ + bm = 1; + } while (++i < SS(fs)); /* Next byte */ + i = 0; + } +} + + +/*---------------------------------------------*/ +/* Fill the first fragment of the FAT chain */ +/*---------------------------------------------*/ + +static FRESULT fill_first_frag ( + FFOBJID* obj /* Pointer to the corresponding object */ +) +{ + FRESULT res; + DWORD cl, n; + + + if (obj->stat == 3) { /* Has the object been changed 'fragmented' in this session? */ + for (cl = obj->sclust, n = obj->n_cont; n; cl++, n--) { /* Create cluster chain on the FAT */ + res = put_fat(obj->fs, cl, cl + 1); + if (res != FR_OK) return res; + } + obj->stat = 0; /* Change status 'FAT chain is valid' */ + } + return FR_OK; +} + + +/*---------------------------------------------*/ +/* Fill the last fragment of the FAT chain */ +/*---------------------------------------------*/ + +static FRESULT fill_last_frag ( + FFOBJID* obj, /* Pointer to the corresponding object */ + DWORD lcl, /* Last cluster of the fragment */ + DWORD term /* Value to set the last FAT entry */ +) +{ + FRESULT res; + + + while (obj->n_frag > 0) { /* Create the chain of last fragment */ + res = put_fat(obj->fs, lcl - obj->n_frag + 1, (obj->n_frag > 1) ? lcl - obj->n_frag + 2 : term); + if (res != FR_OK) return res; + obj->n_frag--; + } + return FR_OK; +} + +#endif /* FF_FS_EXFAT && !FF_FS_READONLY */ + + + +#if !FF_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* FAT handling - Remove a cluster chain */ +/*-----------------------------------------------------------------------*/ + +static FRESULT remove_chain ( /* FR_OK(0):succeeded, !=0:error */ + FFOBJID* obj, /* Corresponding object */ + DWORD clst, /* Cluster to remove a chain from */ + DWORD pclst /* Previous cluster of clst (0 if entire chain) */ +) +{ + FRESULT res = FR_OK; + DWORD nxt; + FATFS *fs = obj->fs; +#if FF_FS_EXFAT || FF_USE_TRIM + DWORD scl = clst, ecl = clst; +#endif +#if FF_USE_TRIM + LBA_t rt[2]; +#endif + + if (clst < 2 || clst >= fs->n_fatent) return FR_INT_ERR; /* Check if in valid range */ + + /* Mark the previous cluster 'EOC' on the FAT if it exists */ + if (pclst != 0 && (!FF_FS_EXFAT || fs->fs_type != FS_EXFAT || obj->stat != 2)) { + res = put_fat(fs, pclst, 0xFFFFFFFF); + if (res != FR_OK) return res; + } + + /* Remove the chain */ + do { + nxt = get_fat(obj, clst); /* Get cluster status */ + if (nxt == 0) break; /* Empty cluster? */ + if (nxt == 1) return FR_INT_ERR; /* Internal error? */ + if (nxt == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error? */ + if (!FF_FS_EXFAT || fs->fs_type != FS_EXFAT) { + res = put_fat(fs, clst, 0); /* Mark the cluster 'free' on the FAT */ + if (res != FR_OK) return res; + } + if (fs->free_clst < fs->n_fatent - 2) { /* Update FSINFO */ + fs->free_clst++; + fs->fsi_flag |= 1; + } +#if FF_FS_EXFAT || FF_USE_TRIM + if (ecl + 1 == nxt) { /* Is next cluster contiguous? */ + ecl = nxt; + } else { /* End of contiguous cluster block */ +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + res = change_bitmap(fs, scl, ecl - scl + 1, 0); /* Mark the cluster block 'free' on the bitmap */ + if (res != FR_OK) return res; + } +#endif +#if FF_USE_TRIM + rt[0] = clst2sect(fs, scl); /* Start of data area to be freed */ + rt[1] = clst2sect(fs, ecl) + fs->csize - 1; /* End of data area to be freed */ + disk_ioctl(fs->pdrv, CTRL_TRIM, rt); /* Inform storage device that the data in the block may be erased */ +#endif + scl = ecl = nxt; + } +#endif + clst = nxt; /* Next cluster */ + } while (clst < fs->n_fatent); /* Repeat while not the last link */ + +#if FF_FS_EXFAT + /* Some post processes for chain status */ + if (fs->fs_type == FS_EXFAT) { + if (pclst == 0) { /* Has the entire chain been removed? */ + obj->stat = 0; /* Change the chain status 'initial' */ + } else { + if (obj->stat == 0) { /* Is it a fragmented chain from the beginning of this session? */ + clst = obj->sclust; /* Follow the chain to check if it gets contiguous */ + while (clst != pclst) { + nxt = get_fat(obj, clst); + if (nxt < 2) return FR_INT_ERR; + if (nxt == 0xFFFFFFFF) return FR_DISK_ERR; + if (nxt != clst + 1) break; /* Not contiguous? */ + clst++; + } + if (clst == pclst) { /* Has the chain got contiguous again? */ + obj->stat = 2; /* Change the chain status 'contiguous' */ + } + } else { + if (obj->stat == 3 && pclst >= obj->sclust && pclst <= obj->sclust + obj->n_cont) { /* Was the chain fragmented in this session and got contiguous again? */ + obj->stat = 2; /* Change the chain status 'contiguous' */ + } + } + } + } +#endif + return FR_OK; +} + + + + +/*-----------------------------------------------------------------------*/ +/* FAT handling - Stretch a chain or Create a new chain */ +/*-----------------------------------------------------------------------*/ + +static DWORD create_chain ( /* 0:No free cluster, 1:Internal error, 0xFFFFFFFF:Disk error, >=2:New cluster# */ + FFOBJID* obj, /* Corresponding object */ + DWORD clst /* Cluster# to stretch, 0:Create a new chain */ +) +{ + DWORD cs, ncl, scl; + FRESULT res; + FATFS *fs = obj->fs; + + + if (clst == 0) { /* Create a new chain */ + scl = fs->last_clst; /* Suggested cluster to start to find */ + if (scl == 0 || scl >= fs->n_fatent) scl = 1; + } + else { /* Stretch a chain */ + cs = get_fat(obj, clst); /* Check the cluster status */ + if (cs < 2) return 1; /* Test for insanity */ + if (cs == 0xFFFFFFFF) return cs; /* Test for disk error */ + if (cs < fs->n_fatent) return cs; /* It is already followed by next cluster */ + scl = clst; /* Cluster to start to find */ + } + if (fs->free_clst == 0) return 0; /* No free cluster */ + +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + ncl = find_bitmap(fs, scl, 1); /* Find a free cluster */ + if (ncl == 0 || ncl == 0xFFFFFFFF) return ncl; /* No free cluster or hard error? */ + res = change_bitmap(fs, ncl, 1, 1); /* Mark the cluster 'in use' */ + if (res == FR_INT_ERR) return 1; + if (res == FR_DISK_ERR) return 0xFFFFFFFF; + if (clst == 0) { /* Is it a new chain? */ + obj->stat = 2; /* Set status 'contiguous' */ + } else { /* It is a stretched chain */ + if (obj->stat == 2 && ncl != scl + 1) { /* Is the chain got fragmented? */ + obj->n_cont = scl - obj->sclust; /* Set size of the contiguous part */ + obj->stat = 3; /* Change status 'just fragmented' */ + } + } + if (obj->stat != 2) { /* Is the file non-contiguous? */ + if (ncl == clst + 1) { /* Is the cluster next to previous one? */ + obj->n_frag = obj->n_frag ? obj->n_frag + 1 : 2; /* Increment size of last framgent */ + } else { /* New fragment */ + if (obj->n_frag == 0) obj->n_frag = 1; + res = fill_last_frag(obj, clst, ncl); /* Fill last fragment on the FAT and link it to new one */ + if (res == FR_OK) obj->n_frag = 1; + } + } + } else +#endif + { /* On the FAT/FAT32 volume */ + ncl = 0; + if (scl == clst) { /* Stretching an existing chain? */ + ncl = scl + 1; /* Test if next cluster is free */ + if (ncl >= fs->n_fatent) ncl = 2; + cs = get_fat(obj, ncl); /* Get next cluster status */ + if (cs == 1 || cs == 0xFFFFFFFF) return cs; /* Test for error */ + if (cs != 0) { /* Not free? */ + cs = fs->last_clst; /* Start at suggested cluster if it is valid */ + if (cs >= 2 && cs < fs->n_fatent) scl = cs; + ncl = 0; + } + } + if (ncl == 0) { /* The new cluster cannot be contiguous and find another fragment */ + ncl = scl; /* Start cluster */ + for (;;) { + ncl++; /* Next cluster */ + if (ncl >= fs->n_fatent) { /* Check wrap-around */ + ncl = 2; + if (ncl > scl) return 0; /* No free cluster found? */ + } + cs = get_fat(obj, ncl); /* Get the cluster status */ + if (cs == 0) break; /* Found a free cluster? */ + if (cs == 1 || cs == 0xFFFFFFFF) return cs; /* Test for error */ + if (ncl == scl) return 0; /* No free cluster found? */ + } + } + res = put_fat(fs, ncl, 0xFFFFFFFF); /* Mark the new cluster 'EOC' */ + if (res == FR_OK && clst != 0) { + res = put_fat(fs, clst, ncl); /* Link it from the previous one if needed */ + } + } + + if (res == FR_OK) { /* Update FSINFO if function succeeded. */ + fs->last_clst = ncl; + if (fs->free_clst <= fs->n_fatent - 2) fs->free_clst--; + fs->fsi_flag |= 1; + } else { + ncl = (res == FR_DISK_ERR) ? 0xFFFFFFFF : 1; /* Failed. Generate error status */ + } + + return ncl; /* Return new cluster number or error status */ +} + +#endif /* !FF_FS_READONLY */ + + + + +#if FF_USE_FASTSEEK +/*-----------------------------------------------------------------------*/ +/* FAT handling - Convert offset into cluster with link map table */ +/*-----------------------------------------------------------------------*/ + +static DWORD clmt_clust ( /* <2:Error, >=2:Cluster number */ + FIL* fp, /* Pointer to the file object */ + FSIZE_t ofs /* File offset to be converted to cluster# */ +) +{ + DWORD cl, ncl, *tbl; + FATFS *fs = fp->obj.fs; + + + tbl = fp->cltbl + 1; /* Top of CLMT */ + cl = (DWORD)(ofs / SS(fs) / fs->csize); /* Cluster order from top of the file */ + for (;;) { + ncl = *tbl++; /* Number of cluters in the fragment */ + if (ncl == 0) return 0; /* End of table? (error) */ + if (cl < ncl) break; /* In this fragment? */ + cl -= ncl; tbl++; /* Next fragment */ + } + return cl + *tbl; /* Return the cluster number */ +} + +#endif /* FF_USE_FASTSEEK */ + + + + +/*-----------------------------------------------------------------------*/ +/* Directory handling - Fill a cluster with zeros */ +/*-----------------------------------------------------------------------*/ + +#if !FF_FS_READONLY +static FRESULT dir_clear ( /* Returns FR_OK or FR_DISK_ERR */ + FATFS *fs, /* Filesystem object */ + DWORD clst /* Directory table to clear */ +) +{ + LBA_t sect; + UINT n, szb; + BYTE *ibuf; + + + if (sync_window(fs) != FR_OK) return FR_DISK_ERR; /* Flush disk access window */ + sect = clst2sect(fs, clst); /* Top of the cluster */ + fs->winsect = sect; /* Set window to top of the cluster */ + mem_set(fs->win, 0, sizeof fs->win); /* Clear window buffer */ +#if FF_USE_LFN == 3 /* Quick table clear by using multi-secter write */ + /* Allocate a temporary buffer */ + for (szb = ((DWORD)fs->csize * SS(fs) >= MAX_MALLOC) ? MAX_MALLOC : fs->csize * SS(fs), ibuf = 0; szb > SS(fs) && (ibuf = ff_memalloc(szb)) == 0; szb /= 2) ; + if (szb > SS(fs)) { /* Buffer allocated? */ + mem_set(ibuf, 0, szb); + szb /= SS(fs); /* Bytes -> Sectors */ + for (n = 0; n < fs->csize && disk_write(fs->pdrv, ibuf, sect + n, szb) == RES_OK; n += szb) ; /* Fill the cluster with 0 */ + ff_memfree(ibuf); + } else +#endif + { + ibuf = fs->win; szb = 1; /* Use window buffer (many single-sector writes may take a time) */ + for (n = 0; n < fs->csize && disk_write(fs->pdrv, ibuf, sect + n, szb) == RES_OK; n += szb) ; /* Fill the cluster with 0 */ + } + return (n == fs->csize) ? FR_OK : FR_DISK_ERR; +} +#endif /* !FF_FS_READONLY */ + + + + +/*-----------------------------------------------------------------------*/ +/* Directory handling - Set directory index */ +/*-----------------------------------------------------------------------*/ + +static FRESULT dir_sdi ( /* FR_OK(0):succeeded, !=0:error */ + DIR* dp, /* Pointer to directory object */ + DWORD ofs /* Offset of directory table */ +) +{ + DWORD csz, clst; + FATFS *fs = dp->obj.fs; + + + if (ofs >= (DWORD)((FF_FS_EXFAT && fs->fs_type == FS_EXFAT) ? MAX_DIR_EX : MAX_DIR) || ofs % SZDIRE) { /* Check range of offset and alignment */ + return FR_INT_ERR; + } + dp->dptr = ofs; /* Set current offset */ + clst = dp->obj.sclust; /* Table start cluster (0:root) */ + if (clst == 0 && fs->fs_type >= FS_FAT32) { /* Replace cluster# 0 with root cluster# */ + clst = (DWORD)fs->dirbase; + if (FF_FS_EXFAT) dp->obj.stat = 0; /* exFAT: Root dir has an FAT chain */ + } + + if (clst == 0) { /* Static table (root-directory on the FAT volume) */ + if (ofs / SZDIRE >= fs->n_rootdir) return FR_INT_ERR; /* Is index out of range? */ + dp->sect = fs->dirbase; + + } else { /* Dynamic table (sub-directory or root-directory on the FAT32/exFAT volume) */ + csz = (DWORD)fs->csize * SS(fs); /* Bytes per cluster */ + while (ofs >= csz) { /* Follow cluster chain */ + clst = get_fat(&dp->obj, clst); /* Get next cluster */ + if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + if (clst < 2 || clst >= fs->n_fatent) return FR_INT_ERR; /* Reached to end of table or internal error */ + ofs -= csz; + } + dp->sect = clst2sect(fs, clst); + } + dp->clust = clst; /* Current cluster# */ + if (dp->sect == 0) return FR_INT_ERR; + dp->sect += ofs / SS(fs); /* Sector# of the directory entry */ + dp->dir = fs->win + (ofs % SS(fs)); /* Pointer to the entry in the win[] */ + + return FR_OK; +} + + + + +/*-----------------------------------------------------------------------*/ +/* Directory handling - Move directory table index next */ +/*-----------------------------------------------------------------------*/ + +static FRESULT dir_next ( /* FR_OK(0):succeeded, FR_NO_FILE:End of table, FR_DENIED:Could not stretch */ + DIR* dp, /* Pointer to the directory object */ + int stretch /* 0: Do not stretch table, 1: Stretch table if needed */ +) +{ + DWORD ofs, clst; + FATFS *fs = dp->obj.fs; + + + ofs = dp->dptr + SZDIRE; /* Next entry */ + if (ofs >= (DWORD)((FF_FS_EXFAT && fs->fs_type == FS_EXFAT) ? MAX_DIR_EX : MAX_DIR)) dp->sect = 0; /* Disable it if the offset reached the max value */ + if (dp->sect == 0) return FR_NO_FILE; /* Report EOT if it has been disabled */ + + if (ofs % SS(fs) == 0) { /* Sector changed? */ + dp->sect++; /* Next sector */ + + if (dp->clust == 0) { /* Static table */ + if (ofs / SZDIRE >= fs->n_rootdir) { /* Report EOT if it reached end of static table */ + dp->sect = 0; return FR_NO_FILE; + } + } + else { /* Dynamic table */ + if ((ofs / SS(fs) & (fs->csize - 1)) == 0) { /* Cluster changed? */ + clst = get_fat(&dp->obj, dp->clust); /* Get next cluster */ + if (clst <= 1) return FR_INT_ERR; /* Internal error */ + if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + if (clst >= fs->n_fatent) { /* It reached end of dynamic table */ +#if !FF_FS_READONLY + if (!stretch) { /* If no stretch, report EOT */ + dp->sect = 0; return FR_NO_FILE; + } + clst = create_chain(&dp->obj, dp->clust); /* Allocate a cluster */ + if (clst == 0) return FR_DENIED; /* No free cluster */ + if (clst == 1) return FR_INT_ERR; /* Internal error */ + if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + if (dir_clear(fs, clst) != FR_OK) return FR_DISK_ERR; /* Clean up the stretched table */ + if (FF_FS_EXFAT) dp->obj.stat |= 4; /* exFAT: The directory has been stretched */ +#else + if (!stretch) dp->sect = 0; /* (this line is to suppress compiler warning) */ + dp->sect = 0; return FR_NO_FILE; /* Report EOT */ +#endif + } + dp->clust = clst; /* Initialize data for new cluster */ + dp->sect = clst2sect(fs, clst); + } + } + } + dp->dptr = ofs; /* Current entry */ + dp->dir = fs->win + ofs % SS(fs); /* Pointer to the entry in the win[] */ + + return FR_OK; +} + + + + +#if !FF_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Directory handling - Reserve a block of directory entries */ +/*-----------------------------------------------------------------------*/ + +static FRESULT dir_alloc ( /* FR_OK(0):succeeded, !=0:error */ + DIR* dp, /* Pointer to the directory object */ + UINT nent /* Number of contiguous entries to allocate */ +) +{ + FRESULT res; + UINT n; + FATFS *fs = dp->obj.fs; + + + res = dir_sdi(dp, 0); + if (res == FR_OK) { + n = 0; + do { + res = move_window(fs, dp->sect); + if (res != FR_OK) break; +#if FF_FS_EXFAT + if ((fs->fs_type == FS_EXFAT) ? (int)((dp->dir[XDIR_Type] & 0x80) == 0) : (int)(dp->dir[DIR_Name] == DDEM || dp->dir[DIR_Name] == 0)) { +#else + if (dp->dir[DIR_Name] == DDEM || dp->dir[DIR_Name] == 0) { +#endif + if (++n == nent) break; /* A block of contiguous free entries is found */ + } else { + n = 0; /* Not a blank entry. Restart to search */ + } + res = dir_next(dp, 1); + } while (res == FR_OK); /* Next entry with table stretch enabled */ + } + + if (res == FR_NO_FILE) res = FR_DENIED; /* No directory entry to allocate */ + return res; +} + +#endif /* !FF_FS_READONLY */ + + + + +/*-----------------------------------------------------------------------*/ +/* FAT: Directory handling - Load/Store start cluster number */ +/*-----------------------------------------------------------------------*/ + +static DWORD ld_clust ( /* Returns the top cluster value of the SFN entry */ + FATFS* fs, /* Pointer to the fs object */ + const BYTE* dir /* Pointer to the key entry */ +) +{ + DWORD cl; + + cl = ld_word(dir + DIR_FstClusLO); + if (fs->fs_type == FS_FAT32) { + cl |= (DWORD)ld_word(dir + DIR_FstClusHI) << 16; + } + + return cl; +} + + +#if !FF_FS_READONLY +static void st_clust ( + FATFS* fs, /* Pointer to the fs object */ + BYTE* dir, /* Pointer to the key entry */ + DWORD cl /* Value to be set */ +) +{ + st_word(dir + DIR_FstClusLO, (WORD)cl); + if (fs->fs_type == FS_FAT32) { + st_word(dir + DIR_FstClusHI, (WORD)(cl >> 16)); + } +} +#endif + + + +#if FF_USE_LFN +/*--------------------------------------------------------*/ +/* FAT-LFN: Compare a part of file name with an LFN entry */ +/*--------------------------------------------------------*/ + +static int cmp_lfn ( /* 1:matched, 0:not matched */ + const WCHAR* lfnbuf, /* Pointer to the LFN working buffer to be compared */ + BYTE* dir /* Pointer to the directory entry containing the part of LFN */ +) +{ + UINT i, s; + WCHAR wc, uc; + + + if (ld_word(dir + LDIR_FstClusLO) != 0) return 0; /* Check LDIR_FstClusLO */ + + i = ((dir[LDIR_Ord] & 0x3F) - 1) * 13; /* Offset in the LFN buffer */ + + for (wc = 1, s = 0; s < 13; s++) { /* Process all characters in the entry */ + uc = ld_word(dir + LfnOfs[s]); /* Pick an LFN character */ + if (wc != 0) { + if (i >= FF_MAX_LFN + 1 || ff_wtoupper(uc) != ff_wtoupper(lfnbuf[i++])) { /* Compare it */ + return 0; /* Not matched */ + } + wc = uc; + } else { + if (uc != 0xFFFF) return 0; /* Check filler */ + } + } + + if ((dir[LDIR_Ord] & LLEF) && wc && lfnbuf[i]) return 0; /* Last segment matched but different length */ + + return 1; /* The part of LFN matched */ +} + + +#if FF_FS_MINIMIZE <= 1 || FF_FS_RPATH >= 2 || FF_USE_LABEL || FF_FS_EXFAT +/*-----------------------------------------------------*/ +/* FAT-LFN: Pick a part of file name from an LFN entry */ +/*-----------------------------------------------------*/ + +static int pick_lfn ( /* 1:succeeded, 0:buffer overflow or invalid LFN entry */ + WCHAR* lfnbuf, /* Pointer to the LFN working buffer */ + BYTE* dir /* Pointer to the LFN entry */ +) +{ + UINT i, s; + WCHAR wc, uc; + + + if (ld_word(dir + LDIR_FstClusLO) != 0) return 0; /* Check LDIR_FstClusLO is 0 */ + + i = ((dir[LDIR_Ord] & ~LLEF) - 1) * 13; /* Offset in the LFN buffer */ + + for (wc = 1, s = 0; s < 13; s++) { /* Process all characters in the entry */ + uc = ld_word(dir + LfnOfs[s]); /* Pick an LFN character */ + if (wc != 0) { + if (i >= FF_MAX_LFN + 1) return 0; /* Buffer overflow? */ + lfnbuf[i++] = wc = uc; /* Store it */ + } else { + if (uc != 0xFFFF) return 0; /* Check filler */ + } + } + + if (dir[LDIR_Ord] & LLEF && wc != 0) { /* Put terminator if it is the last LFN part and not terminated */ + if (i >= FF_MAX_LFN + 1) return 0; /* Buffer overflow? */ + lfnbuf[i] = 0; + } + + return 1; /* The part of LFN is valid */ +} +#endif + + +#if !FF_FS_READONLY +/*-----------------------------------------*/ +/* FAT-LFN: Create an entry of LFN entries */ +/*-----------------------------------------*/ + +static void put_lfn ( + const WCHAR* lfn, /* Pointer to the LFN */ + BYTE* dir, /* Pointer to the LFN entry to be created */ + BYTE ord, /* LFN order (1-20) */ + BYTE sum /* Checksum of the corresponding SFN */ +) +{ + UINT i, s; + WCHAR wc; + + + dir[LDIR_Chksum] = sum; /* Set checksum */ + dir[LDIR_Attr] = AM_LFN; /* Set attribute. LFN entry */ + dir[LDIR_Type] = 0; + st_word(dir + LDIR_FstClusLO, 0); + + i = (ord - 1) * 13; /* Get offset in the LFN working buffer */ + s = wc = 0; + do { + if (wc != 0xFFFF) wc = lfn[i++]; /* Get an effective character */ + st_word(dir + LfnOfs[s], wc); /* Put it */ + if (wc == 0) wc = 0xFFFF; /* Padding characters for following items */ + } while (++s < 13); + if (wc == 0xFFFF || !lfn[i]) ord |= LLEF; /* Last LFN part is the start of LFN sequence */ + dir[LDIR_Ord] = ord; /* Set the LFN order */ +} + +#endif /* !FF_FS_READONLY */ +#endif /* FF_USE_LFN */ + + + +#if FF_USE_LFN && !FF_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* FAT-LFN: Create a Numbered SFN */ +/*-----------------------------------------------------------------------*/ + +static void gen_numname ( + BYTE* dst, /* Pointer to the buffer to store numbered SFN */ + const BYTE* src, /* Pointer to SFN */ + const WCHAR* lfn, /* Pointer to LFN */ + UINT seq /* Sequence number */ +) +{ + BYTE ns[8], c; + UINT i, j; + WCHAR wc; + DWORD sreg; + + + mem_cpy(dst, src, 11); + + if (seq > 5) { /* In case of many collisions, generate a hash number instead of sequential number */ + sreg = seq; + while (*lfn) { /* Create a CRC as hash value */ + wc = *lfn++; + for (i = 0; i < 16; i++) { + sreg = (sreg << 1) + (wc & 1); + wc >>= 1; + if (sreg & 0x10000) sreg ^= 0x11021; + } + } + seq = (UINT)sreg; + } + + /* itoa (hexdecimal) */ + i = 7; + do { + c = (BYTE)((seq % 16) + '0'); + if (c > '9') c += 7; + ns[i--] = c; + seq /= 16; + } while (seq); + ns[i] = '~'; + + /* Append the number to the SFN body */ + for (j = 0; j < i && dst[j] != ' '; j++) { + if (dbc_1st(dst[j])) { + if (j == i - 1) break; + j++; + } + } + do { + dst[j++] = (i < 8) ? ns[i++] : ' '; + } while (j < 8); +} +#endif /* FF_USE_LFN && !FF_FS_READONLY */ + + + +#if FF_USE_LFN +/*-----------------------------------------------------------------------*/ +/* FAT-LFN: Calculate checksum of an SFN entry */ +/*-----------------------------------------------------------------------*/ + +static BYTE sum_sfn ( + const BYTE* dir /* Pointer to the SFN entry */ +) +{ + BYTE sum = 0; + UINT n = 11; + + do { + sum = (sum >> 1) + (sum << 7) + *dir++; + } while (--n); + return sum; +} + +#endif /* FF_USE_LFN */ + + + +#if FF_FS_EXFAT +/*-----------------------------------------------------------------------*/ +/* exFAT: Checksum */ +/*-----------------------------------------------------------------------*/ + +static WORD xdir_sum ( /* Get checksum of the directoly entry block */ + const BYTE* dir /* Directory entry block to be calculated */ +) +{ + UINT i, szblk; + WORD sum; + + + szblk = (dir[XDIR_NumSec] + 1) * SZDIRE; /* Number of bytes of the entry block */ + for (i = sum = 0; i < szblk; i++) { + if (i == XDIR_SetSum) { /* Skip 2-byte sum field */ + i++; + } else { + sum = ((sum & 1) ? 0x8000 : 0) + (sum >> 1) + dir[i]; + } + } + return sum; +} + + + +static WORD xname_sum ( /* Get check sum (to be used as hash) of the file name */ + const WCHAR* name /* File name to be calculated */ +) +{ + WCHAR chr; + WORD sum = 0; + + + while ((chr = *name++) != 0) { + chr = (WCHAR)ff_wtoupper(chr); /* File name needs to be up-case converted */ + sum = ((sum & 1) ? 0x8000 : 0) + (sum >> 1) + (chr & 0xFF); + sum = ((sum & 1) ? 0x8000 : 0) + (sum >> 1) + (chr >> 8); + } + return sum; +} + + +#if !FF_FS_READONLY && FF_USE_MKFS +static DWORD xsum32 ( /* Returns 32-bit checksum */ + BYTE dat, /* Byte to be calculated (byte-by-byte processing) */ + DWORD sum /* Previous sum value */ +) +{ + sum = ((sum & 1) ? 0x80000000 : 0) + (sum >> 1) + dat; + return sum; +} +#endif + + +#if FF_FS_MINIMIZE <= 1 || FF_FS_RPATH >= 2 +/*------------------------------------------------------*/ +/* exFAT: Get object information from a directory block */ +/*------------------------------------------------------*/ + +static void get_xfileinfo ( + BYTE* dirb, /* Pointer to the direcotry entry block 85+C0+C1s */ + FILINFO* fno /* Buffer to store the extracted file information */ +) +{ + WCHAR wc, hs; + UINT di, si, nc; + + /* Get file name from the entry block */ + si = SZDIRE * 2; /* 1st C1 entry */ + nc = 0; hs = 0; di = 0; + while (nc < dirb[XDIR_NumName]) { + if (si >= MAXDIRB(FF_MAX_LFN)) { di = 0; break; } /* Truncated directory block? */ + if ((si % SZDIRE) == 0) si += 2; /* Skip entry type field */ + wc = ld_word(dirb + si); si += 2; nc++; /* Get a character */ + if (hs == 0 && IsSurrogate(wc)) { /* Is it a surrogate? */ + hs = wc; continue; /* Get low surrogate */ + } + wc = put_utf((DWORD)hs << 16 | wc, &fno->fname[di], FF_LFN_BUF - di); /* Store it in API encoding */ + if (wc == 0) { di = 0; break; } /* Buffer overflow or wrong encoding? */ + di += wc; + hs = 0; + } + if (hs != 0) di = 0; /* Broken surrogate pair? */ + if (di == 0) fno->fname[di++] = '?'; /* Inaccessible object name? */ + fno->fname[di] = 0; /* Terminate the name */ + fno->altname[0] = 0; /* exFAT does not support SFN */ + + fno->fattrib = dirb[XDIR_Attr]; /* Attribute */ + fno->fsize = (fno->fattrib & AM_DIR) ? 0 : ld_qword(dirb + XDIR_FileSize); /* Size */ + fno->ftime = ld_word(dirb + XDIR_ModTime + 0); /* Time */ + fno->fdate = ld_word(dirb + XDIR_ModTime + 2); /* Date */ +} + +#endif /* FF_FS_MINIMIZE <= 1 || FF_FS_RPATH >= 2 */ + + +/*-----------------------------------*/ +/* exFAT: Get a directry entry block */ +/*-----------------------------------*/ + +static FRESULT load_xdir ( /* FR_INT_ERR: invalid entry block */ + DIR* dp /* Reading direcotry object pointing top of the entry block to load */ +) +{ + FRESULT res; + UINT i, sz_ent; + BYTE* dirb = dp->obj.fs->dirbuf; /* Pointer to the on-memory direcotry entry block 85+C0+C1s */ + + + /* Load file-directory entry */ + res = move_window(dp->obj.fs, dp->sect); + if (res != FR_OK) return res; + if (dp->dir[XDIR_Type] != ET_FILEDIR) return FR_INT_ERR; /* Invalid order */ + mem_cpy(dirb + 0 * SZDIRE, dp->dir, SZDIRE); + sz_ent = (dirb[XDIR_NumSec] + 1) * SZDIRE; + if (sz_ent < 3 * SZDIRE || sz_ent > 19 * SZDIRE) return FR_INT_ERR; + + /* Load stream-extension entry */ + res = dir_next(dp, 0); + if (res == FR_NO_FILE) res = FR_INT_ERR; /* It cannot be */ + if (res != FR_OK) return res; + res = move_window(dp->obj.fs, dp->sect); + if (res != FR_OK) return res; + if (dp->dir[XDIR_Type] != ET_STREAM) return FR_INT_ERR; /* Invalid order */ + mem_cpy(dirb + 1 * SZDIRE, dp->dir, SZDIRE); + if (MAXDIRB(dirb[XDIR_NumName]) > sz_ent) return FR_INT_ERR; + + /* Load file-name entries */ + i = 2 * SZDIRE; /* Name offset to load */ + do { + res = dir_next(dp, 0); + if (res == FR_NO_FILE) res = FR_INT_ERR; /* It cannot be */ + if (res != FR_OK) return res; + res = move_window(dp->obj.fs, dp->sect); + if (res != FR_OK) return res; + if (dp->dir[XDIR_Type] != ET_FILENAME) return FR_INT_ERR; /* Invalid order */ + if (i < MAXDIRB(FF_MAX_LFN)) mem_cpy(dirb + i, dp->dir, SZDIRE); + } while ((i += SZDIRE) < sz_ent); + + /* Sanity check (do it for only accessible object) */ + if (i <= MAXDIRB(FF_MAX_LFN)) { + if (xdir_sum(dirb) != ld_word(dirb + XDIR_SetSum)) return FR_INT_ERR; + } + return FR_OK; +} + + +/*------------------------------------------------------------------*/ +/* exFAT: Initialize object allocation info with loaded entry block */ +/*------------------------------------------------------------------*/ + +static void init_alloc_info ( + FATFS* fs, /* Filesystem object */ + FFOBJID* obj /* Object allocation information to be initialized */ +) +{ + obj->sclust = ld_dword(fs->dirbuf + XDIR_FstClus); /* Start cluster */ + obj->objsize = ld_qword(fs->dirbuf + XDIR_FileSize); /* Size */ + obj->stat = fs->dirbuf[XDIR_GenFlags] & 2; /* Allocation status */ + obj->n_frag = 0; /* No last fragment info */ +} + + + +#if !FF_FS_READONLY || FF_FS_RPATH != 0 +/*------------------------------------------------*/ +/* exFAT: Load the object's directory entry block */ +/*------------------------------------------------*/ + +static FRESULT load_obj_xdir ( + DIR* dp, /* Blank directory object to be used to access containing direcotry */ + const FFOBJID* obj /* Object with its containing directory information */ +) +{ + FRESULT res; + + /* Open object containing directory */ + dp->obj.fs = obj->fs; + dp->obj.sclust = obj->c_scl; + dp->obj.stat = (BYTE)obj->c_size; + dp->obj.objsize = obj->c_size & 0xFFFFFF00; + dp->obj.n_frag = 0; + dp->blk_ofs = obj->c_ofs; + + res = dir_sdi(dp, dp->blk_ofs); /* Goto object's entry block */ + if (res == FR_OK) { + res = load_xdir(dp); /* Load the object's entry block */ + } + return res; +} +#endif + + +#if !FF_FS_READONLY +/*----------------------------------------*/ +/* exFAT: Store the directory entry block */ +/*----------------------------------------*/ + +static FRESULT store_xdir ( + DIR* dp /* Pointer to the direcotry object */ +) +{ + FRESULT res; + UINT nent; + BYTE* dirb = dp->obj.fs->dirbuf; /* Pointer to the direcotry entry block 85+C0+C1s */ + + /* Create set sum */ + st_word(dirb + XDIR_SetSum, xdir_sum(dirb)); + nent = dirb[XDIR_NumSec] + 1; + + /* Store the direcotry entry block to the directory */ + res = dir_sdi(dp, dp->blk_ofs); + while (res == FR_OK) { + res = move_window(dp->obj.fs, dp->sect); + if (res != FR_OK) break; + mem_cpy(dp->dir, dirb, SZDIRE); + dp->obj.fs->wflag = 1; + if (--nent == 0) break; + dirb += SZDIRE; + res = dir_next(dp, 0); + } + return (res == FR_OK || res == FR_DISK_ERR) ? res : FR_INT_ERR; +} + + + +/*-------------------------------------------*/ +/* exFAT: Create a new directory enrty block */ +/*-------------------------------------------*/ + +static void create_xdir ( + BYTE* dirb, /* Pointer to the direcotry entry block buffer */ + const WCHAR* lfn /* Pointer to the object name */ +) +{ + UINT i; + BYTE nc1, nlen; + WCHAR wc; + + + /* Create file-directory and stream-extension entry */ + mem_set(dirb, 0, 2 * SZDIRE); + dirb[0 * SZDIRE + XDIR_Type] = ET_FILEDIR; + dirb[1 * SZDIRE + XDIR_Type] = ET_STREAM; + + /* Create file-name entries */ + i = SZDIRE * 2; /* Top of file_name entries */ + nlen = nc1 = 0; wc = 1; + do { + dirb[i++] = ET_FILENAME; dirb[i++] = 0; + do { /* Fill name field */ + if (wc != 0 && (wc = lfn[nlen]) != 0) nlen++; /* Get a character if exist */ + st_word(dirb + i, wc); /* Store it */ + i += 2; + } while (i % SZDIRE != 0); + nc1++; + } while (lfn[nlen]); /* Fill next entry if any char follows */ + + dirb[XDIR_NumName] = nlen; /* Set name length */ + dirb[XDIR_NumSec] = 1 + nc1; /* Set secondary count (C0 + C1s) */ + st_word(dirb + XDIR_NameHash, xname_sum(lfn)); /* Set name hash */ +} + +#endif /* !FF_FS_READONLY */ +#endif /* FF_FS_EXFAT */ + + + +#if FF_FS_MINIMIZE <= 1 || FF_FS_RPATH >= 2 || FF_USE_LABEL || FF_FS_EXFAT +/*-----------------------------------------------------------------------*/ +/* Read an object from the directory */ +/*-----------------------------------------------------------------------*/ + +#define DIR_READ_FILE(dp) dir_read(dp, 0) +#define DIR_READ_LABEL(dp) dir_read(dp, 1) + +static FRESULT dir_read ( + DIR* dp, /* Pointer to the directory object */ + int vol /* Filtered by 0:file/directory or 1:volume label */ +) +{ + FRESULT res = FR_NO_FILE; + FATFS *fs = dp->obj.fs; + BYTE attr, b; +#if FF_USE_LFN + BYTE ord = 0xFF, sum = 0xFF; +#endif + + while (dp->sect) { + res = move_window(fs, dp->sect); + if (res != FR_OK) break; + b = dp->dir[DIR_Name]; /* Test for the entry type */ + if (b == 0) { + res = FR_NO_FILE; break; /* Reached to end of the directory */ + } +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + if (FF_USE_LABEL && vol) { + if (b == ET_VLABEL) break; /* Volume label entry? */ + } else { + if (b == ET_FILEDIR) { /* Start of the file entry block? */ + dp->blk_ofs = dp->dptr; /* Get location of the block */ + res = load_xdir(dp); /* Load the entry block */ + if (res == FR_OK) { + dp->obj.attr = fs->dirbuf[XDIR_Attr] & AM_MASK; /* Get attribute */ + } + break; + } + } + } else +#endif + { /* On the FAT/FAT32 volume */ + dp->obj.attr = attr = dp->dir[DIR_Attr] & AM_MASK; /* Get attribute */ +#if FF_USE_LFN /* LFN configuration */ + if (b == DDEM || b == '.' || (int)((attr & ~AM_ARC) == AM_VOL) != vol) { /* An entry without valid data */ + ord = 0xFF; + } else { + if (attr == AM_LFN) { /* An LFN entry is found */ + if (b & LLEF) { /* Is it start of an LFN sequence? */ + sum = dp->dir[LDIR_Chksum]; + b &= (BYTE)~LLEF; ord = b; + dp->blk_ofs = dp->dptr; + } + /* Check LFN validity and capture it */ + ord = (b == ord && sum == dp->dir[LDIR_Chksum] && pick_lfn(fs->lfnbuf, dp->dir)) ? ord - 1 : 0xFF; + } else { /* An SFN entry is found */ + if (ord != 0 || sum != sum_sfn(dp->dir)) { /* Is there a valid LFN? */ + dp->blk_ofs = 0xFFFFFFFF; /* It has no LFN. */ + } + break; + } + } +#else /* Non LFN configuration */ + if (b != DDEM && b != '.' && attr != AM_LFN && (int)((attr & ~AM_ARC) == AM_VOL) == vol) { /* Is it a valid entry? */ + break; + } +#endif + } + res = dir_next(dp, 0); /* Next entry */ + if (res != FR_OK) break; + } + + if (res != FR_OK) dp->sect = 0; /* Terminate the read operation on error or EOT */ + return res; +} + +#endif /* FF_FS_MINIMIZE <= 1 || FF_USE_LABEL || FF_FS_RPATH >= 2 */ + + + +/*-----------------------------------------------------------------------*/ +/* Directory handling - Find an object in the directory */ +/*-----------------------------------------------------------------------*/ + +static FRESULT dir_find ( /* FR_OK(0):succeeded, !=0:error */ + DIR* dp /* Pointer to the directory object with the file name */ +) +{ + FRESULT res; + FATFS *fs = dp->obj.fs; + BYTE c; +#if FF_USE_LFN + BYTE a, ord, sum; +#endif + + res = dir_sdi(dp, 0); /* Rewind directory object */ + if (res != FR_OK) return res; +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + BYTE nc; + UINT di, ni; + WORD hash = xname_sum(fs->lfnbuf); /* Hash value of the name to find */ + + while ((res = DIR_READ_FILE(dp)) == FR_OK) { /* Read an item */ +#if FF_MAX_LFN < 255 + if (fs->dirbuf[XDIR_NumName] > FF_MAX_LFN) continue; /* Skip comparison if inaccessible object name */ +#endif + if (ld_word(fs->dirbuf + XDIR_NameHash) != hash) continue; /* Skip comparison if hash mismatched */ + for (nc = fs->dirbuf[XDIR_NumName], di = SZDIRE * 2, ni = 0; nc; nc--, di += 2, ni++) { /* Compare the name */ + if ((di % SZDIRE) == 0) di += 2; + if (ff_wtoupper(ld_word(fs->dirbuf + di)) != ff_wtoupper(fs->lfnbuf[ni])) break; + } + if (nc == 0 && !fs->lfnbuf[ni]) break; /* Name matched? */ + } + return res; + } +#endif + /* On the FAT/FAT32 volume */ +#if FF_USE_LFN + ord = sum = 0xFF; dp->blk_ofs = 0xFFFFFFFF; /* Reset LFN sequence */ +#endif + do { + res = move_window(fs, dp->sect); + if (res != FR_OK) break; + c = dp->dir[DIR_Name]; + if (c == 0) { res = FR_NO_FILE; break; } /* Reached to end of table */ +#if FF_USE_LFN /* LFN configuration */ + dp->obj.attr = a = dp->dir[DIR_Attr] & AM_MASK; + if (c == DDEM || ((a & AM_VOL) && a != AM_LFN)) { /* An entry without valid data */ + ord = 0xFF; dp->blk_ofs = 0xFFFFFFFF; /* Reset LFN sequence */ + } else { + if (a == AM_LFN) { /* An LFN entry is found */ + if (!(dp->fn[NSFLAG] & NS_NOLFN)) { + if (c & LLEF) { /* Is it start of LFN sequence? */ + sum = dp->dir[LDIR_Chksum]; + c &= (BYTE)~LLEF; ord = c; /* LFN start order */ + dp->blk_ofs = dp->dptr; /* Start offset of LFN */ + } + /* Check validity of the LFN entry and compare it with given name */ + ord = (c == ord && sum == dp->dir[LDIR_Chksum] && cmp_lfn(fs->lfnbuf, dp->dir)) ? ord - 1 : 0xFF; + } + } else { /* An SFN entry is found */ + if (ord == 0 && sum == sum_sfn(dp->dir)) break; /* LFN matched? */ + if (!(dp->fn[NSFLAG] & NS_LOSS) && !mem_cmp(dp->dir, dp->fn, 11)) break; /* SFN matched? */ + ord = 0xFF; dp->blk_ofs = 0xFFFFFFFF; /* Reset LFN sequence */ + } + } +#else /* Non LFN configuration */ + dp->obj.attr = dp->dir[DIR_Attr] & AM_MASK; + if (!(dp->dir[DIR_Attr] & AM_VOL) && !mem_cmp(dp->dir, dp->fn, 11)) break; /* Is it a valid entry? */ +#endif + res = dir_next(dp, 0); /* Next entry */ + } while (res == FR_OK); + + return res; +} + + + + +#if !FF_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Register an object to the directory */ +/*-----------------------------------------------------------------------*/ + +static FRESULT dir_register ( /* FR_OK:succeeded, FR_DENIED:no free entry or too many SFN collision, FR_DISK_ERR:disk error */ + DIR* dp /* Target directory with object name to be created */ +) +{ + FRESULT res; + FATFS *fs = dp->obj.fs; +#if FF_USE_LFN /* LFN configuration */ + UINT n, nlen, nent; + BYTE sn[12], sum; + + + if (dp->fn[NSFLAG] & (NS_DOT | NS_NONAME)) return FR_INVALID_NAME; /* Check name validity */ + for (nlen = 0; fs->lfnbuf[nlen]; nlen++) ; /* Get lfn length */ + +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + nent = (nlen + 14) / 15 + 2; /* Number of entries to allocate (85+C0+C1s) */ + res = dir_alloc(dp, nent); /* Allocate directory entries */ + if (res != FR_OK) return res; + dp->blk_ofs = dp->dptr - SZDIRE * (nent - 1); /* Set the allocated entry block offset */ + + if (dp->obj.stat & 4) { /* Has the directory been stretched by new allocation? */ + dp->obj.stat &= ~4; + res = fill_first_frag(&dp->obj); /* Fill the first fragment on the FAT if needed */ + if (res != FR_OK) return res; + res = fill_last_frag(&dp->obj, dp->clust, 0xFFFFFFFF); /* Fill the last fragment on the FAT if needed */ + if (res != FR_OK) return res; + if (dp->obj.sclust != 0) { /* Is it a sub-directory? */ + DIR dj; + + res = load_obj_xdir(&dj, &dp->obj); /* Load the object status */ + if (res != FR_OK) return res; + dp->obj.objsize += (DWORD)fs->csize * SS(fs); /* Increase the directory size by cluster size */ + st_qword(fs->dirbuf + XDIR_FileSize, dp->obj.objsize); + st_qword(fs->dirbuf + XDIR_ValidFileSize, dp->obj.objsize); + fs->dirbuf[XDIR_GenFlags] = dp->obj.stat | 1; /* Update the allocation status */ + res = store_xdir(&dj); /* Store the object status */ + if (res != FR_OK) return res; + } + } + + create_xdir(fs->dirbuf, fs->lfnbuf); /* Create on-memory directory block to be written later */ + return FR_OK; + } +#endif + /* On the FAT/FAT32 volume */ + mem_cpy(sn, dp->fn, 12); + if (sn[NSFLAG] & NS_LOSS) { /* When LFN is out of 8.3 format, generate a numbered name */ + dp->fn[NSFLAG] = NS_NOLFN; /* Find only SFN */ + for (n = 1; n < 100; n++) { + gen_numname(dp->fn, sn, fs->lfnbuf, n); /* Generate a numbered name */ + res = dir_find(dp); /* Check if the name collides with existing SFN */ + if (res != FR_OK) break; + } + if (n == 100) return FR_DENIED; /* Abort if too many collisions */ + if (res != FR_NO_FILE) return res; /* Abort if the result is other than 'not collided' */ + dp->fn[NSFLAG] = sn[NSFLAG]; + } + + /* Create an SFN with/without LFNs. */ + nent = (sn[NSFLAG] & NS_LFN) ? (nlen + 12) / 13 + 1 : 1; /* Number of entries to allocate */ + res = dir_alloc(dp, nent); /* Allocate entries */ + if (res == FR_OK && --nent) { /* Set LFN entry if needed */ + res = dir_sdi(dp, dp->dptr - nent * SZDIRE); + if (res == FR_OK) { + sum = sum_sfn(dp->fn); /* Checksum value of the SFN tied to the LFN */ + do { /* Store LFN entries in bottom first */ + res = move_window(fs, dp->sect); + if (res != FR_OK) break; + put_lfn(fs->lfnbuf, dp->dir, (BYTE)nent, sum); + fs->wflag = 1; + res = dir_next(dp, 0); /* Next entry */ + } while (res == FR_OK && --nent); + } + } + +#else /* Non LFN configuration */ + res = dir_alloc(dp, 1); /* Allocate an entry for SFN */ + +#endif + + /* Set SFN entry */ + if (res == FR_OK) { + res = move_window(fs, dp->sect); + if (res == FR_OK) { + mem_set(dp->dir, 0, SZDIRE); /* Clean the entry */ + mem_cpy(dp->dir + DIR_Name, dp->fn, 11); /* Put SFN */ +#if FF_USE_LFN + dp->dir[DIR_NTres] = dp->fn[NSFLAG] & (NS_BODY | NS_EXT); /* Put NT flag */ +#endif + fs->wflag = 1; + } + } + + return res; +} + +#endif /* !FF_FS_READONLY */ + + + +#if !FF_FS_READONLY && FF_FS_MINIMIZE == 0 +/*-----------------------------------------------------------------------*/ +/* Remove an object from the directory */ +/*-----------------------------------------------------------------------*/ + +static FRESULT dir_remove ( /* FR_OK:Succeeded, FR_DISK_ERR:A disk error */ + DIR* dp /* Directory object pointing the entry to be removed */ +) +{ + FRESULT res; + FATFS *fs = dp->obj.fs; +#if FF_USE_LFN /* LFN configuration */ + DWORD last = dp->dptr; + + res = (dp->blk_ofs == 0xFFFFFFFF) ? FR_OK : dir_sdi(dp, dp->blk_ofs); /* Goto top of the entry block if LFN is exist */ + if (res == FR_OK) { + do { + res = move_window(fs, dp->sect); + if (res != FR_OK) break; + if (FF_FS_EXFAT && fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + dp->dir[XDIR_Type] &= 0x7F; /* Clear the entry InUse flag. */ + } else { /* On the FAT/FAT32 volume */ + dp->dir[DIR_Name] = DDEM; /* Mark the entry 'deleted'. */ + } + fs->wflag = 1; + if (dp->dptr >= last) break; /* If reached last entry then all entries of the object has been deleted. */ + res = dir_next(dp, 0); /* Next entry */ + } while (res == FR_OK); + if (res == FR_NO_FILE) res = FR_INT_ERR; + } +#else /* Non LFN configuration */ + + res = move_window(fs, dp->sect); + if (res == FR_OK) { + dp->dir[DIR_Name] = DDEM; /* Mark the entry 'deleted'.*/ + fs->wflag = 1; + } +#endif + + return res; +} + +#endif /* !FF_FS_READONLY && FF_FS_MINIMIZE == 0 */ + + + +#if FF_FS_MINIMIZE <= 1 || FF_FS_RPATH >= 2 +/*-----------------------------------------------------------------------*/ +/* Get file information from directory entry */ +/*-----------------------------------------------------------------------*/ + +static void get_fileinfo ( + DIR* dp, /* Pointer to the directory object */ + FILINFO* fno /* Pointer to the file information to be filled */ +) +{ + UINT si, di; +#if FF_USE_LFN + BYTE lcf; + WCHAR wc, hs; + FATFS *fs = dp->obj.fs; +#else + TCHAR c; +#endif + + + fno->fname[0] = 0; /* Invaidate file info */ + if (dp->sect == 0) return; /* Exit if read pointer has reached end of directory */ + +#if FF_USE_LFN /* LFN configuration */ +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + get_xfileinfo(fs->dirbuf, fno); + return; + } else +#endif + { /* On the FAT/FAT32 volume */ + if (dp->blk_ofs != 0xFFFFFFFF) { /* Get LFN if available */ + si = di = hs = 0; + while (fs->lfnbuf[si] != 0) { + wc = fs->lfnbuf[si++]; /* Get an LFN character (UTF-16) */ + if (hs == 0 && IsSurrogate(wc)) { /* Is it a surrogate? */ + hs = wc; continue; /* Get low surrogate */ + } + wc = put_utf((DWORD)hs << 16 | wc, &fno->fname[di], FF_LFN_BUF - di); /* Store it in UTF-16 or UTF-8 encoding */ + if (wc == 0) { di = 0; break; } /* Invalid char or buffer overflow? */ + di += wc; + hs = 0; + } + if (hs != 0) di = 0; /* Broken surrogate pair? */ + fno->fname[di] = 0; /* Terminate the LFN (null string means LFN is invalid) */ + } + } + + si = di = 0; + while (si < 11) { /* Get SFN from SFN entry */ + wc = dp->dir[si++]; /* Get a char */ + if (wc == ' ') continue; /* Skip padding spaces */ + if (wc == RDDEM) wc = DDEM; /* Restore replaced DDEM character */ + if (si == 9 && di < FF_SFN_BUF) fno->altname[di++] = '.'; /* Insert a . if extension is exist */ +#if FF_LFN_UNICODE >= 1 /* Unicode output */ + if (dbc_1st((BYTE)wc) && si != 8 && si != 11 && dbc_2nd(dp->dir[si])) { /* Make a DBC if needed */ + wc = wc << 8 | dp->dir[si++]; + } + wc = ff_oem2uni(wc, CODEPAGE); /* ANSI/OEM -> Unicode */ + if (wc == 0) { di = 0; break; } /* Wrong char in the current code page? */ + wc = put_utf(wc, &fno->altname[di], FF_SFN_BUF - di); /* Store it in Unicode */ + if (wc == 0) { di = 0; break; } /* Buffer overflow? */ + di += wc; +#else /* ANSI/OEM output */ + fno->altname[di++] = (TCHAR)wc; /* Store it without any conversion */ +#endif + } + fno->altname[di] = 0; /* Terminate the SFN (null string means SFN is invalid) */ + + if (fno->fname[0] == 0) { /* If LFN is invalid, altname[] needs to be copied to fname[] */ + if (di == 0) { /* If LFN and SFN both are invalid, this object is inaccesible */ + fno->fname[di++] = '?'; + } else { + for (si = di = 0, lcf = NS_BODY; fno->altname[si]; si++, di++) { /* Copy altname[] to fname[] with case information */ + wc = (WCHAR)fno->altname[si]; + if (wc == '.') lcf = NS_EXT; + if (IsUpper(wc) && (dp->dir[DIR_NTres] & lcf)) wc += 0x20; + fno->fname[di] = (TCHAR)wc; + } + } + fno->fname[di] = 0; /* Terminate the LFN */ + if (!dp->dir[DIR_NTres]) fno->altname[0] = 0; /* Altname is not needed if neither LFN nor case info is exist. */ + } + +#else /* Non-LFN configuration */ + si = di = 0; + while (si < 11) { /* Copy name body and extension */ + c = (TCHAR)dp->dir[si++]; + if (c == ' ') continue; /* Skip padding spaces */ + if (c == RDDEM) c = DDEM; /* Restore replaced DDEM character */ + if (si == 9) fno->fname[di++] = '.';/* Insert a . if extension is exist */ + fno->fname[di++] = c; + } + fno->fname[di] = 0; +#endif + + fno->fattrib = dp->dir[DIR_Attr]; /* Attribute */ + fno->fsize = ld_dword(dp->dir + DIR_FileSize); /* Size */ + fno->ftime = ld_word(dp->dir + DIR_ModTime + 0); /* Time */ + fno->fdate = ld_word(dp->dir + DIR_ModTime + 2); /* Date */ +} + +#endif /* FF_FS_MINIMIZE <= 1 || FF_FS_RPATH >= 2 */ + + + +#if FF_USE_FIND && FF_FS_MINIMIZE <= 1 +/*-----------------------------------------------------------------------*/ +/* Pattern matching */ +/*-----------------------------------------------------------------------*/ + +static DWORD get_achar ( /* Get a character and advances ptr */ + const TCHAR** ptr /* Pointer to pointer to the ANSI/OEM or Unicode string */ +) +{ + DWORD chr; + + +#if FF_USE_LFN && FF_LFN_UNICODE >= 1 /* Unicode input */ + chr = tchar2uni(ptr); + if (chr == 0xFFFFFFFF) chr = 0; /* Wrong UTF encoding is recognized as end of the string */ + chr = ff_wtoupper(chr); + +#else /* ANSI/OEM input */ + chr = (BYTE)*(*ptr)++; /* Get a byte */ + if (IsLower(chr)) chr -= 0x20; /* To upper ASCII char */ +#if FF_CODE_PAGE == 0 + if (ExCvt && chr >= 0x80) chr = ExCvt[chr - 0x80]; /* To upper SBCS extended char */ +#elif FF_CODE_PAGE < 900 + if (chr >= 0x80) chr = ExCvt[chr - 0x80]; /* To upper SBCS extended char */ +#endif +#if FF_CODE_PAGE == 0 || FF_CODE_PAGE >= 900 + if (dbc_1st((BYTE)chr)) { /* Get DBC 2nd byte if needed */ + chr = dbc_2nd((BYTE)**ptr) ? chr << 8 | (BYTE)*(*ptr)++ : 0; + } +#endif + +#endif + return chr; +} + + +static int pattern_matching ( /* 0:not matched, 1:matched */ + const TCHAR* pat, /* Matching pattern */ + const TCHAR* nam, /* String to be tested */ + int skip, /* Number of pre-skip chars (number of ?s) */ + int inf /* Infinite search (* specified) */ +) +{ + const TCHAR *pp, *np; + DWORD pc, nc; + int nm, nx; + + + while (skip--) { /* Pre-skip name chars */ + if (!get_achar(&nam)) return 0; /* Branch mismatched if less name chars */ + } + if (*pat == 0 && inf) return 1; /* (short circuit) */ + + do { + pp = pat; np = nam; /* Top of pattern and name to match */ + for (;;) { + if (*pp == '?' || *pp == '*') { /* Wildcard? */ + nm = nx = 0; + do { /* Analyze the wildcard block */ + if (*pp++ == '?') nm++; else nx = 1; + } while (*pp == '?' || *pp == '*'); + if (pattern_matching(pp, np, nm, nx)) return 1; /* Test new branch (recurs upto number of wildcard blocks in the pattern) */ + nc = *np; break; /* Branch mismatched */ + } + pc = get_achar(&pp); /* Get a pattern char */ + nc = get_achar(&np); /* Get a name char */ + if (pc != nc) break; /* Branch mismatched? */ + if (pc == 0) return 1; /* Branch matched? (matched at end of both strings) */ + } + get_achar(&nam); /* nam++ */ + } while (inf && nc); /* Retry until end of name if infinite search is specified */ + + return 0; +} + +#endif /* FF_USE_FIND && FF_FS_MINIMIZE <= 1 */ + + + +/*-----------------------------------------------------------------------*/ +/* Pick a top segment and create the object name in directory form */ +/*-----------------------------------------------------------------------*/ + +static FRESULT create_name ( /* FR_OK: successful, FR_INVALID_NAME: could not create */ + DIR* dp, /* Pointer to the directory object */ + const TCHAR** path /* Pointer to pointer to the segment in the path string */ +) +{ +#if FF_USE_LFN /* LFN configuration */ + BYTE b, cf; + WCHAR wc, *lfn; + DWORD uc; + UINT i, ni, si, di; + const TCHAR *p; + + + /* Create LFN into LFN working buffer */ + p = *path; lfn = dp->obj.fs->lfnbuf; di = 0; + for (;;) { + uc = tchar2uni(&p); /* Get a character */ + if (uc == 0xFFFFFFFF) return FR_INVALID_NAME; /* Invalid code or UTF decode error */ + if (uc >= 0x10000) lfn[di++] = (WCHAR)(uc >> 16); /* Store high surrogate if needed */ + wc = (WCHAR)uc; + if (wc < ' ' || wc == '/' || wc == '\\') break; /* Break if end of the path or a separator is found */ + if (wc < 0x80 && chk_chr("\"*:<>\?|\x7F", wc)) return FR_INVALID_NAME; /* Reject illegal characters for LFN */ + if (di >= FF_MAX_LFN) return FR_INVALID_NAME; /* Reject too long name */ + lfn[di++] = wc; /* Store the Unicode character */ + } + if (wc < ' ') { /* End of path? */ + cf = NS_LAST; /* Set last segment flag */ + } else { + cf = 0; /* Next segment follows */ + while (*p == '/' || *p == '\\') p++; /* Skip duplicated separators if exist */ + } + *path = p; /* Return pointer to the next segment */ + +#if FF_FS_RPATH != 0 + if ((di == 1 && lfn[di - 1] == '.') || + (di == 2 && lfn[di - 1] == '.' && lfn[di - 2] == '.')) { /* Is this segment a dot name? */ + lfn[di] = 0; + for (i = 0; i < 11; i++) { /* Create dot name for SFN entry */ + dp->fn[i] = (i < di) ? '.' : ' '; + } + dp->fn[i] = cf | NS_DOT; /* This is a dot entry */ + return FR_OK; + } +#endif + while (di) { /* Snip off trailing spaces and dots if exist */ + wc = lfn[di - 1]; + if (wc != ' ' && wc != '.') break; + di--; + } + lfn[di] = 0; /* LFN is created into the working buffer */ + if (di == 0) return FR_INVALID_NAME; /* Reject null name */ + + /* Create SFN in directory form */ + for (si = 0; lfn[si] == ' '; si++) ; /* Remove leading spaces */ + if (si > 0 || lfn[si] == '.') cf |= NS_LOSS | NS_LFN; /* Is there any leading space or dot? */ + while (di > 0 && lfn[di - 1] != '.') di--; /* Find last dot (di<=si: no extension) */ + + mem_set(dp->fn, ' ', 11); + i = b = 0; ni = 8; + for (;;) { + wc = lfn[si++]; /* Get an LFN character */ + if (wc == 0) break; /* Break on end of the LFN */ + if (wc == ' ' || (wc == '.' && si != di)) { /* Remove embedded spaces and dots */ + cf |= NS_LOSS | NS_LFN; + continue; + } + + if (i >= ni || si == di) { /* End of field? */ + if (ni == 11) { /* Name extension overflow? */ + cf |= NS_LOSS | NS_LFN; + break; + } + if (si != di) cf |= NS_LOSS | NS_LFN; /* Name body overflow? */ + if (si > di) break; /* No name extension? */ + si = di; i = 8; ni = 11; b <<= 2; /* Enter name extension */ + continue; + } + + if (wc >= 0x80) { /* Is this a non-ASCII character? */ + cf |= NS_LFN; /* LFN entry needs to be created */ +#if FF_CODE_PAGE == 0 + if (ExCvt) { /* At SBCS */ + wc = ff_uni2oem(wc, CODEPAGE); /* Unicode ==> ANSI/OEM code */ + if (wc & 0x80) wc = ExCvt[wc & 0x7F]; /* Convert extended character to upper (SBCS) */ + } else { /* At DBCS */ + wc = ff_uni2oem(ff_wtoupper(wc), CODEPAGE); /* Unicode ==> Upper convert ==> ANSI/OEM code */ + } +#elif FF_CODE_PAGE < 900 /* SBCS cfg */ + wc = ff_uni2oem(wc, CODEPAGE); /* Unicode ==> ANSI/OEM code */ + if (wc & 0x80) wc = ExCvt[wc & 0x7F]; /* Convert extended character to upper (SBCS) */ +#else /* DBCS cfg */ + wc = ff_uni2oem(ff_wtoupper(wc), CODEPAGE); /* Unicode ==> Upper convert ==> ANSI/OEM code */ +#endif + } + + if (wc >= 0x100) { /* Is this a DBC? */ + if (i >= ni - 1) { /* Field overflow? */ + cf |= NS_LOSS | NS_LFN; + i = ni; continue; /* Next field */ + } + dp->fn[i++] = (BYTE)(wc >> 8); /* Put 1st byte */ + } else { /* SBC */ + if (wc == 0 || chk_chr("+,;=[]", wc)) { /* Replace illegal characters for SFN if needed */ + wc = '_'; cf |= NS_LOSS | NS_LFN;/* Lossy conversion */ + } else { + if (IsUpper(wc)) { /* ASCII upper case? */ + b |= 2; + } + if (IsLower(wc)) { /* ASCII lower case? */ + b |= 1; wc -= 0x20; + } + } + } + dp->fn[i++] = (BYTE)wc; + } + + if (dp->fn[0] == DDEM) dp->fn[0] = RDDEM; /* If the first character collides with DDEM, replace it with RDDEM */ + + if (ni == 8) b <<= 2; /* Shift capital flags if no extension */ + if ((b & 0x0C) == 0x0C || (b & 0x03) == 0x03) cf |= NS_LFN; /* LFN entry needs to be created if composite capitals */ + if (!(cf & NS_LFN)) { /* When LFN is in 8.3 format without extended character, NT flags are created */ + if (b & 0x01) cf |= NS_EXT; /* NT flag (Extension has small capital letters only) */ + if (b & 0x04) cf |= NS_BODY; /* NT flag (Body has small capital letters only) */ + } + + dp->fn[NSFLAG] = cf; /* SFN is created into dp->fn[] */ + + return FR_OK; + + +#else /* FF_USE_LFN : Non-LFN configuration */ + BYTE c, d, *sfn; + UINT ni, si, i; + const char *p; + + /* Create file name in directory form */ + p = *path; sfn = dp->fn; + mem_set(sfn, ' ', 11); + si = i = 0; ni = 8; +#if FF_FS_RPATH != 0 + if (p[si] == '.') { /* Is this a dot entry? */ + for (;;) { + c = (BYTE)p[si++]; + if (c != '.' || si >= 3) break; + sfn[i++] = c; + } + if (c != '/' && c != '\\' && c > ' ') return FR_INVALID_NAME; + *path = p + si; /* Return pointer to the next segment */ + sfn[NSFLAG] = (c <= ' ') ? NS_LAST | NS_DOT : NS_DOT; /* Set last segment flag if end of the path */ + return FR_OK; + } +#endif + for (;;) { + c = (BYTE)p[si++]; /* Get a byte */ + if (c <= ' ') break; /* Break if end of the path name */ + if (c == '/' || c == '\\') { /* Break if a separator is found */ + while (p[si] == '/' || p[si] == '\\') si++; /* Skip duplicated separator if exist */ + break; + } + if (c == '.' || i >= ni) { /* End of body or field overflow? */ + if (ni == 11 || c != '.') return FR_INVALID_NAME; /* Field overflow or invalid dot? */ + i = 8; ni = 11; /* Enter file extension field */ + continue; + } +#if FF_CODE_PAGE == 0 + if (ExCvt && c >= 0x80) { /* Is SBC extended character? */ + c = ExCvt[c & 0x7F]; /* To upper SBC extended character */ + } +#elif FF_CODE_PAGE < 900 + if (c >= 0x80) { /* Is SBC extended character? */ + c = ExCvt[c & 0x7F]; /* To upper SBC extended character */ + } +#endif + if (dbc_1st(c)) { /* Check if it is a DBC 1st byte */ + d = (BYTE)p[si++]; /* Get 2nd byte */ + if (!dbc_2nd(d) || i >= ni - 1) return FR_INVALID_NAME; /* Reject invalid DBC */ + sfn[i++] = c; + sfn[i++] = d; + } else { /* SBC */ + if (chk_chr("\"*+,:;<=>\?[]|\x7F", c)) return FR_INVALID_NAME; /* Reject illegal chrs for SFN */ + if (IsLower(c)) c -= 0x20; /* To upper */ + sfn[i++] = c; + } + } + *path = p + si; /* Return pointer to the next segment */ + if (i == 0) return FR_INVALID_NAME; /* Reject nul string */ + + if (sfn[0] == DDEM) sfn[0] = RDDEM; /* If the first character collides with DDEM, replace it with RDDEM */ + sfn[NSFLAG] = (c <= ' ') ? NS_LAST : 0; /* Set last segment flag if end of the path */ + + return FR_OK; +#endif /* FF_USE_LFN */ +} + + + + +/*-----------------------------------------------------------------------*/ +/* Follow a file path */ +/*-----------------------------------------------------------------------*/ + +static FRESULT follow_path ( /* FR_OK(0): successful, !=0: error code */ + DIR* dp, /* Directory object to return last directory and found object */ + const TCHAR* path /* Full-path string to find a file or directory */ +) +{ + FRESULT res; + BYTE ns; + FATFS *fs = dp->obj.fs; + + +#if FF_FS_RPATH != 0 + if (*path != '/' && *path != '\\') { /* Without heading separator */ + dp->obj.sclust = fs->cdir; /* Start from current directory */ + } else +#endif + { /* With heading separator */ + while (*path == '/' || *path == '\\') path++; /* Strip heading separator */ + dp->obj.sclust = 0; /* Start from root directory */ + } +#if FF_FS_EXFAT + dp->obj.n_frag = 0; /* Invalidate last fragment counter of the object */ +#if FF_FS_RPATH != 0 + if (fs->fs_type == FS_EXFAT && dp->obj.sclust) { /* exFAT: Retrieve the sub-directory's status */ + DIR dj; + + dp->obj.c_scl = fs->cdc_scl; + dp->obj.c_size = fs->cdc_size; + dp->obj.c_ofs = fs->cdc_ofs; + res = load_obj_xdir(&dj, &dp->obj); + if (res != FR_OK) return res; + dp->obj.objsize = ld_dword(fs->dirbuf + XDIR_FileSize); + dp->obj.stat = fs->dirbuf[XDIR_GenFlags] & 2; + } +#endif +#endif + + if ((UINT)*path < ' ') { /* Null path name is the origin directory itself */ + dp->fn[NSFLAG] = NS_NONAME; + res = dir_sdi(dp, 0); + + } else { /* Follow path */ + for (;;) { + res = create_name(dp, &path); /* Get a segment name of the path */ + if (res != FR_OK) break; + res = dir_find(dp); /* Find an object with the segment name */ + ns = dp->fn[NSFLAG]; + if (res != FR_OK) { /* Failed to find the object */ + if (res == FR_NO_FILE) { /* Object is not found */ + if (FF_FS_RPATH && (ns & NS_DOT)) { /* If dot entry is not exist, stay there */ + if (!(ns & NS_LAST)) continue; /* Continue to follow if not last segment */ + dp->fn[NSFLAG] = NS_NONAME; + res = FR_OK; + } else { /* Could not find the object */ + if (!(ns & NS_LAST)) res = FR_NO_PATH; /* Adjust error code if not last segment */ + } + } + break; + } + if (ns & NS_LAST) break; /* Last segment matched. Function completed. */ + /* Get into the sub-directory */ + if (!(dp->obj.attr & AM_DIR)) { /* It is not a sub-directory and cannot follow */ + res = FR_NO_PATH; break; + } +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* Save containing directory information for next dir */ + dp->obj.c_scl = dp->obj.sclust; + dp->obj.c_size = ((DWORD)dp->obj.objsize & 0xFFFFFF00) | dp->obj.stat; + dp->obj.c_ofs = dp->blk_ofs; + init_alloc_info(fs, &dp->obj); /* Open next directory */ + } else +#endif + { + dp->obj.sclust = ld_clust(fs, fs->win + dp->dptr % SS(fs)); /* Open next directory */ + } + } + } + + return res; +} + + + + +/*-----------------------------------------------------------------------*/ +/* Get logical drive number from path name */ +/*-----------------------------------------------------------------------*/ + +static int get_ldnumber ( /* Returns logical drive number (-1:invalid drive number or null pointer) */ + const TCHAR** path /* Pointer to pointer to the path name */ +) +{ + const TCHAR *tp, *tt; + TCHAR tc; + int i, vol = -1; +#if FF_STR_VOLUME_ID /* Find string volume ID */ + const char *sp; + char c; +#endif + + tt = tp = *path; + if (!tp) return vol; /* Invalid path name? */ + do tc = *tt++; while ((UINT)tc >= (FF_USE_LFN ? ' ' : '!') && tc != ':'); /* Find a colon in the path */ + + if (tc == ':') { /* DOS/Windows style volume ID? */ + i = FF_VOLUMES; + if (IsDigit(*tp) && tp + 2 == tt) { /* Is there a numeric volume ID + colon? */ + i = (int)*tp - '0'; /* Get the LD number */ + } +#if FF_STR_VOLUME_ID == 1 /* Arbitrary string is enabled */ + else { + i = 0; + do { + sp = VolumeStr[i]; tp = *path; /* This string volume ID and path name */ + do { /* Compare the volume ID with path name */ + c = *sp++; tc = *tp++; + if (IsLower(c)) c -= 0x20; + if (IsLower(tc)) tc -= 0x20; + } while (c && (TCHAR)c == tc); + } while ((c || tp != tt) && ++i < FF_VOLUMES); /* Repeat for each id until pattern match */ + } +#endif + if (i < FF_VOLUMES) { /* If a volume ID is found, get the drive number and strip it */ + vol = i; /* Drive number */ + *path = tt; /* Snip the drive prefix off */ + } + return vol; + } +#if FF_STR_VOLUME_ID == 2 /* Unix style volume ID is enabled */ + if (*tp == '/') { + i = 0; + do { + sp = VolumeStr[i]; tp = *path; /* This string volume ID and path name */ + do { /* Compare the volume ID with path name */ + c = *sp++; tc = *(++tp); + if (IsLower(c)) c -= 0x20; + if (IsLower(tc)) tc -= 0x20; + } while (c && (TCHAR)c == tc); + } while ((c || (tc != '/' && (UINT)tc >= (FF_USE_LFN ? ' ' : '!'))) && ++i < FF_VOLUMES); /* Repeat for each ID until pattern match */ + if (i < FF_VOLUMES) { /* If a volume ID is found, get the drive number and strip it */ + vol = i; /* Drive number */ + *path = tp; /* Snip the drive prefix off */ + return vol; + } + } +#endif + /* No drive prefix is found */ +#if FF_FS_RPATH != 0 + vol = CurrVol; /* Default drive is current drive */ +#else + vol = 0; /* Default drive is 0 */ +#endif + return vol; /* Return the default drive */ +} + + + + +/*-----------------------------------------------------------------------*/ +/* GPT support functions */ +/*-----------------------------------------------------------------------*/ + +#if FF_LBA64 + +/* Calculate CRC32 in byte-by-byte */ + +static DWORD crc32 ( /* Returns next CRC value */ + DWORD crc, /* Current CRC value */ + BYTE d /* A byte to be processed */ +) +{ + BYTE b; + + + for (b = 1; b; b <<= 1) { + crc ^= (d & b) ? 1 : 0; + crc = (crc & 1) ? crc >> 1 ^ 0xEDB88320 : crc >> 1; + } + return crc; +} + + +/* Check validity of GPT header */ + +static int test_gpt_header ( /* 0:Invalid, 1:Valid */ + const BYTE* gpth /* Pointer to the GPT header */ +) +{ + UINT i; + DWORD bcc; + + + if (mem_cmp(gpth + GPTH_Sign, "EFI PART" "\0\0\1\0" "\x5C\0\0", 16)) return 0; /* Check sign, version (1.0) and length (92) */ + for (i = 0, bcc = 0xFFFFFFFF; i < 92; i++) { /* Check header BCC */ + bcc = crc32(bcc, i - GPTH_Bcc < 4 ? 0 : gpth[i]); + } + if (~bcc != ld_dword(gpth + GPTH_Bcc)) return 0; + if (ld_dword(gpth + GPTH_PteSize) != SZ_GPTE) return 0; /* Table entry size (must be SZ_GPTE bytes) */ + if (ld_dword(gpth + GPTH_PtNum) > 128) return 0; /* Table size (must be 128 entries or less) */ + + return 1; +} + +#if !FF_FS_READONLY && FF_USE_MKFS + +/* Generate random value */ +static DWORD make_rand ( + DWORD seed, /* Seed value */ + BYTE* buff, /* Output buffer */ + UINT n /* Data length */ +) +{ + UINT r; + + + if (seed == 0) seed = 1; + do { + for (r = 0; r < 8; r++) seed = seed & 1 ? seed >> 1 ^ 0xA3000000 : seed >> 1; /* Shift 8 bits the 32-bit LFSR */ + *buff++ = (BYTE)seed; + } while (--n); + return seed; +} + +#endif +#endif + + + +/*-----------------------------------------------------------------------*/ +/* Load a sector and check if it is an FAT VBR */ +/*-----------------------------------------------------------------------*/ + +/* Check what the sector is */ + +static UINT check_fs ( /* 0:FAT VBR, 1:exFAT VBR, 2:Valid BS but not FAT, 3:Invalid BS, 4:Disk error */ + FATFS* fs, /* Filesystem object */ + LBA_t sect /* Sector to load and check if it is an FAT-VBR or not */ +) +{ + fs->wflag = 0; fs->winsect = (LBA_t)0 - 1; /* Invaidate window */ + if (move_window(fs, sect) != FR_OK) return 4; /* Load the boot sector */ + + if (ld_word(fs->win + BS_55AA) != 0xAA55) return 3; /* Check boot signature (always here regardless of the sector size) */ + + if (FF_FS_EXFAT && !mem_cmp(fs->win + BS_JmpBoot, "\xEB\x76\x90" "EXFAT ", 11)) return 1; /* Check if exFAT VBR */ + + if (fs->win[BS_JmpBoot] == 0xE9 || fs->win[BS_JmpBoot] == 0xEB || fs->win[BS_JmpBoot] == 0xE8) { /* Valid JumpBoot code? */ + if (!mem_cmp(fs->win + BS_FilSysType, "FAT", 3)) return 0; /* Is it an FAT VBR? */ + if (!mem_cmp(fs->win + BS_FilSysType32, "FAT32", 5)) return 0; /* Is it an FAT32 VBR? */ + } + return 2; /* Valid BS but not FAT */ +} + + +/* Find an FAT volume */ +/* (It supports only generic partitioning rules, MBR, GPT and SFD) */ + +static UINT find_volume ( /* Returns BS status found in the hosting drive */ + FATFS* fs, /* Filesystem object */ + UINT part /* Partition to fined = 0:auto, 1..:forced */ +) +{ + UINT fmt, i; + DWORD mbr_pt[4]; + + + fmt = check_fs(fs, 0); /* Load sector 0 and check if it is an FAT VBR as SFD */ + if (fmt != 2 && (fmt >= 3 || part == 0)) return fmt; /* Returns if it is a FAT VBR as auto scan, not a BS or disk error */ + + /* Sector 0 is not an FAT VBR or forced partition number wants a partition */ + +#if FF_LBA64 + if (fs->win[MBR_Table + PTE_System] == 0xEE) { /* GPT protective MBR? */ + DWORD n_ent, v_ent, ofs; + QWORD pt_lba; + + if (move_window(fs, 1) != FR_OK) return 4; /* Load GPT header sector (next to MBR) */ + if (!test_gpt_header(fs->win)) return 3; /* Check if GPT header is valid */ + n_ent = ld_dword(fs->win + GPTH_PtNum); /* Number of entries */ + pt_lba = ld_qword(fs->win + GPTH_PtOfs); /* Table location */ + for (v_ent = i = 0; i < n_ent; i++) { /* Find FAT partition */ + if (move_window(fs, pt_lba + i * SZ_GPTE / SS(fs)) != FR_OK) return 4; /* PT sector */ + ofs = i * SZ_GPTE % SS(fs); /* Offset in the sector */ + if (!mem_cmp(fs->win + ofs + GPTE_PtGuid, GUID_MS_Basic, 16)) { /* MS basic data partition? */ + v_ent++; + fmt = check_fs(fs, ld_qword(fs->win + ofs + GPTE_FstLba)); /* Load VBR and check status */ + if (part == 0 && fmt <= 1) return fmt; /* Auto search (valid FAT volume found first) */ + if (part != 0 && v_ent == part) return fmt; /* Forced partition order (regardless of it is valid or not) */ + } + } + return 3; /* Not found */ + } +#endif + if (FF_MULTI_PARTITION && part > 4) return 3; /* MBR has 4 partitions max */ + for (i = 0; i < 4; i++) { /* Load partition offset in the MBR */ + mbr_pt[i] = ld_dword(fs->win + MBR_Table + i * SZ_PTE + PTE_StLba); + } + i = part ? part - 1 : 0; /* Table index to find first */ + do { /* Find an FAT volume */ + fmt = mbr_pt[i] ? check_fs(fs, mbr_pt[i]) : 3; /* Check if the partition is FAT */ + } while (part == 0 && fmt >= 2 && ++i < 4); + return fmt; +} + + + + +/*-----------------------------------------------------------------------*/ +/* Determine logical drive number and mount the volume if needed */ +/*-----------------------------------------------------------------------*/ + +static FRESULT mount_volume ( /* FR_OK(0): successful, !=0: an error occurred */ + const TCHAR** path, /* Pointer to pointer to the path name (drive number) */ + FATFS** rfs, /* Pointer to pointer to the found filesystem object */ + BYTE mode /* !=0: Check write protection for write access */ +) +{ + int vol; + DSTATUS stat; + LBA_t bsect; + DWORD tsect, sysect, fasize, nclst, szbfat; + WORD nrsv; + FATFS *fs; + UINT fmt; + + + /* Get logical drive number */ + *rfs = 0; + vol = get_ldnumber(path); + if (vol < 0) return FR_INVALID_DRIVE; + + /* Check if the filesystem object is valid or not */ + fs = FatFs[vol]; /* Get pointer to the filesystem object */ + if (!fs) return FR_NOT_ENABLED; /* Is the filesystem object available? */ +#if FF_FS_REENTRANT + if (!lock_fs(fs)) return FR_TIMEOUT; /* Lock the volume */ +#endif + *rfs = fs; /* Return pointer to the filesystem object */ + + mode &= (BYTE)~FA_READ; /* Desired access mode, write access or not */ + if (fs->fs_type != 0) { /* If the volume has been mounted */ + stat = disk_status(fs->pdrv); + if (!(stat & STA_NOINIT)) { /* and the physical drive is kept initialized */ + if (!FF_FS_READONLY && mode && (stat & STA_PROTECT)) { /* Check write protection if needed */ + return FR_WRITE_PROTECTED; + } + return FR_OK; /* The filesystem object is already valid */ + } + } + + /* The filesystem object is not valid. */ + /* Following code attempts to mount the volume. (find a FAT volume, analyze the BPB and initialize the filesystem object) */ + + fs->fs_type = 0; /* Clear the filesystem object */ + fs->pdrv = LD2PD(vol); /* Volume hosting physical drive */ + stat = disk_initialize(fs->pdrv); /* Initialize the physical drive */ + if (stat & STA_NOINIT) { /* Check if the initialization succeeded */ + return FR_NOT_READY; /* Failed to initialize due to no medium or hard error */ + } + if (!FF_FS_READONLY && mode && (stat & STA_PROTECT)) { /* Check disk write protection if needed */ + return FR_WRITE_PROTECTED; + } +#if FF_MAX_SS != FF_MIN_SS /* Get sector size (multiple sector size cfg only) */ + if (disk_ioctl(fs->pdrv, GET_SECTOR_SIZE, &SS(fs)) != RES_OK) return FR_DISK_ERR; + if (SS(fs) > FF_MAX_SS || SS(fs) < FF_MIN_SS || (SS(fs) & (SS(fs) - 1))) return FR_DISK_ERR; +#endif + + /* Find an FAT volume on the drive */ + fmt = find_volume(fs, LD2PT(vol)); + if (fmt == 4) return FR_DISK_ERR; /* An error occured in the disk I/O layer */ + if (fmt >= 2) return FR_NO_FILESYSTEM; /* No FAT volume is found */ + bsect = fs->winsect; /* Volume location */ + + /* An FAT volume is found (bsect). Following code initializes the filesystem object */ + +#if FF_FS_EXFAT + if (fmt == 1) { + QWORD maxlba; + DWORD so, cv, bcl, i; + + for (i = BPB_ZeroedEx; i < BPB_ZeroedEx + 53 && fs->win[i] == 0; i++) ; /* Check zero filler */ + if (i < BPB_ZeroedEx + 53) return FR_NO_FILESYSTEM; + + if (ld_word(fs->win + BPB_FSVerEx) != 0x100) return FR_NO_FILESYSTEM; /* Check exFAT version (must be version 1.0) */ + + if (1 << fs->win[BPB_BytsPerSecEx] != SS(fs)) { /* (BPB_BytsPerSecEx must be equal to the physical sector size) */ + return FR_NO_FILESYSTEM; + } + + maxlba = ld_qword(fs->win + BPB_TotSecEx) + bsect; /* Last LBA + 1 of the volume */ + if (!FF_LBA64 && maxlba >= 0x100000000) return FR_NO_FILESYSTEM; /* (It cannot be handled in 32-bit LBA) */ + + fs->fsize = ld_dword(fs->win + BPB_FatSzEx); /* Number of sectors per FAT */ + + fs->n_fats = fs->win[BPB_NumFATsEx]; /* Number of FATs */ + if (fs->n_fats != 1) return FR_NO_FILESYSTEM; /* (Supports only 1 FAT) */ + + fs->csize = 1 << fs->win[BPB_SecPerClusEx]; /* Cluster size */ + if (fs->csize == 0) return FR_NO_FILESYSTEM; /* (Must be 1..32768) */ + + nclst = ld_dword(fs->win + BPB_NumClusEx); /* Number of clusters */ + if (nclst > MAX_EXFAT) return FR_NO_FILESYSTEM; /* (Too many clusters) */ + fs->n_fatent = nclst + 2; + + /* Boundaries and Limits */ + fs->volbase = bsect; + fs->database = bsect + ld_dword(fs->win + BPB_DataOfsEx); + fs->fatbase = bsect + ld_dword(fs->win + BPB_FatOfsEx); + if (maxlba < (QWORD)fs->database + nclst * fs->csize) return FR_NO_FILESYSTEM; /* (Volume size must not be smaller than the size requiered) */ + fs->dirbase = ld_dword(fs->win + BPB_RootClusEx); + + /* Get bitmap location and check if it is contiguous (implementation assumption) */ + so = i = 0; + for (;;) { /* Find the bitmap entry in the root directory (in only first cluster) */ + if (i == 0) { + if (so >= fs->csize) return FR_NO_FILESYSTEM; /* Not found? */ + if (move_window(fs, clst2sect(fs, (DWORD)fs->dirbase) + so) != FR_OK) return FR_DISK_ERR; + so++; + } + if (fs->win[i] == ET_BITMAP) break; /* Is it a bitmap entry? */ + i = (i + SZDIRE) % SS(fs); /* Next entry */ + } + bcl = ld_dword(fs->win + i + 20); /* Bitmap cluster */ + if (bcl < 2 || bcl >= fs->n_fatent) return FR_NO_FILESYSTEM; + fs->bitbase = fs->database + fs->csize * (bcl - 2); /* Bitmap sector */ + for (;;) { /* Check if bitmap is contiguous */ + if (move_window(fs, fs->fatbase + bcl / (SS(fs) / 4)) != FR_OK) return FR_DISK_ERR; + cv = ld_dword(fs->win + bcl % (SS(fs) / 4) * 4); + if (cv == 0xFFFFFFFF) break; /* Last link? */ + if (cv != ++bcl) return FR_NO_FILESYSTEM; /* Fragmented? */ + } + +#if !FF_FS_READONLY + fs->last_clst = fs->free_clst = 0xFFFFFFFF; /* Initialize cluster allocation information */ +#endif + fmt = FS_EXFAT; /* FAT sub-type */ + } else +#endif /* FF_FS_EXFAT */ + { + if (ld_word(fs->win + BPB_BytsPerSec) != SS(fs)) return FR_NO_FILESYSTEM; /* (BPB_BytsPerSec must be equal to the physical sector size) */ + + fasize = ld_word(fs->win + BPB_FATSz16); /* Number of sectors per FAT */ + if (fasize == 0) fasize = ld_dword(fs->win + BPB_FATSz32); + fs->fsize = fasize; + + fs->n_fats = fs->win[BPB_NumFATs]; /* Number of FATs */ + if (fs->n_fats != 1 && fs->n_fats != 2) return FR_NO_FILESYSTEM; /* (Must be 1 or 2) */ + fasize *= fs->n_fats; /* Number of sectors for FAT area */ + + fs->csize = fs->win[BPB_SecPerClus]; /* Cluster size */ + if (fs->csize == 0 || (fs->csize & (fs->csize - 1))) return FR_NO_FILESYSTEM; /* (Must be power of 2) */ + + fs->n_rootdir = ld_word(fs->win + BPB_RootEntCnt); /* Number of root directory entries */ + if (fs->n_rootdir % (SS(fs) / SZDIRE)) return FR_NO_FILESYSTEM; /* (Must be sector aligned) */ + + tsect = ld_word(fs->win + BPB_TotSec16); /* Number of sectors on the volume */ + if (tsect == 0) tsect = ld_dword(fs->win + BPB_TotSec32); + + nrsv = ld_word(fs->win + BPB_RsvdSecCnt); /* Number of reserved sectors */ + if (nrsv == 0) return FR_NO_FILESYSTEM; /* (Must not be 0) */ + + /* Determine the FAT sub type */ + sysect = nrsv + fasize + fs->n_rootdir / (SS(fs) / SZDIRE); /* RSV + FAT + DIR */ + if (tsect < sysect) return FR_NO_FILESYSTEM; /* (Invalid volume size) */ + nclst = (tsect - sysect) / fs->csize; /* Number of clusters */ + if (nclst == 0) return FR_NO_FILESYSTEM; /* (Invalid volume size) */ + fmt = 0; + if (nclst <= MAX_FAT32) fmt = FS_FAT32; + if (nclst <= MAX_FAT16) fmt = FS_FAT16; + if (nclst <= MAX_FAT12) fmt = FS_FAT12; + if (fmt == 0) return FR_NO_FILESYSTEM; + + /* Boundaries and Limits */ + fs->n_fatent = nclst + 2; /* Number of FAT entries */ + fs->volbase = bsect; /* Volume start sector */ + fs->fatbase = bsect + nrsv; /* FAT start sector */ + fs->database = bsect + sysect; /* Data start sector */ + if (fmt == FS_FAT32) { + if (ld_word(fs->win + BPB_FSVer32) != 0) return FR_NO_FILESYSTEM; /* (Must be FAT32 revision 0.0) */ + if (fs->n_rootdir != 0) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be 0) */ + fs->dirbase = ld_dword(fs->win + BPB_RootClus32); /* Root directory start cluster */ + szbfat = fs->n_fatent * 4; /* (Needed FAT size) */ + } else { + if (fs->n_rootdir == 0) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must not be 0) */ + fs->dirbase = fs->fatbase + fasize; /* Root directory start sector */ + szbfat = (fmt == FS_FAT16) ? /* (Needed FAT size) */ + fs->n_fatent * 2 : fs->n_fatent * 3 / 2 + (fs->n_fatent & 1); + } + if (fs->fsize < (szbfat + (SS(fs) - 1)) / SS(fs)) return FR_NO_FILESYSTEM; /* (BPB_FATSz must not be less than the size needed) */ + +#if !FF_FS_READONLY + /* Get FSInfo if available */ + fs->last_clst = fs->free_clst = 0xFFFFFFFF; /* Initialize cluster allocation information */ + fs->fsi_flag = 0x80; +#if (FF_FS_NOFSINFO & 3) != 3 + if (fmt == FS_FAT32 /* Allow to update FSInfo only if BPB_FSInfo32 == 1 */ + && ld_word(fs->win + BPB_FSInfo32) == 1 + && move_window(fs, bsect + 1) == FR_OK) + { + fs->fsi_flag = 0; + if (ld_word(fs->win + BS_55AA) == 0xAA55 /* Load FSInfo data if available */ + && ld_dword(fs->win + FSI_LeadSig) == 0x41615252 + && ld_dword(fs->win + FSI_StrucSig) == 0x61417272) + { +#if (FF_FS_NOFSINFO & 1) == 0 + fs->free_clst = ld_dword(fs->win + FSI_Free_Count); +#endif +#if (FF_FS_NOFSINFO & 2) == 0 + fs->last_clst = ld_dword(fs->win + FSI_Nxt_Free); +#endif + } + } +#endif /* (FF_FS_NOFSINFO & 3) != 3 */ +#endif /* !FF_FS_READONLY */ + } + + fs->fs_type = (BYTE)fmt;/* FAT sub-type */ + fs->id = ++Fsid; /* Volume mount ID */ +#if FF_USE_LFN == 1 + fs->lfnbuf = LfnBuf; /* Static LFN working buffer */ +#if FF_FS_EXFAT + fs->dirbuf = DirBuf; /* Static directory block scratchpad buuffer */ +#endif +#endif +#if FF_FS_RPATH != 0 + fs->cdir = 0; /* Initialize current directory */ +#endif +#if FF_FS_LOCK != 0 /* Clear file lock semaphores */ + clear_lock(fs); +#endif + return FR_OK; +} + + + + +/*-----------------------------------------------------------------------*/ +/* Check if the file/directory object is valid or not */ +/*-----------------------------------------------------------------------*/ + +static FRESULT validate ( /* Returns FR_OK or FR_INVALID_OBJECT */ + FFOBJID* obj, /* Pointer to the FFOBJID, the 1st member in the FIL/DIR object, to check validity */ + FATFS** rfs /* Pointer to pointer to the owner filesystem object to return */ +) +{ + FRESULT res = FR_INVALID_OBJECT; + + + if (obj && obj->fs && obj->fs->fs_type && obj->id == obj->fs->id) { /* Test if the object is valid */ +#if FF_FS_REENTRANT + if (lock_fs(obj->fs)) { /* Obtain the filesystem object */ + if (!(disk_status(obj->fs->pdrv) & STA_NOINIT)) { /* Test if the phsical drive is kept initialized */ + res = FR_OK; + } else { + unlock_fs(obj->fs, FR_OK); + } + } else { + res = FR_TIMEOUT; + } +#else + if (!(disk_status(obj->fs->pdrv) & STA_NOINIT)) { /* Test if the phsical drive is kept initialized */ + res = FR_OK; + } +#endif + } + *rfs = (res == FR_OK) ? obj->fs : 0; /* Corresponding filesystem object */ + return res; +} + + + + +/*--------------------------------------------------------------------------- + + Public Functions (FatFs API) + +----------------------------------------------------------------------------*/ + + + +/*-----------------------------------------------------------------------*/ +/* Mount/Unmount a Logical Drive */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_mount ( + FATFS* fs, /* Pointer to the filesystem object (NULL:unmount)*/ + const TCHAR* path, /* Logical drive number to be mounted/unmounted */ + BYTE opt /* Mode option 0:Do not mount (delayed mount), 1:Mount immediately */ +) +{ + FATFS *cfs; + int vol; + FRESULT res; + const TCHAR *rp = path; + + + /* Get logical drive number */ + vol = get_ldnumber(&rp); + if (vol < 0) return FR_INVALID_DRIVE; + cfs = FatFs[vol]; /* Pointer to fs object */ + + if (cfs) { +#if FF_FS_LOCK != 0 + clear_lock(cfs); +#endif +#if FF_FS_REENTRANT /* Discard sync object of the current volume */ + if (!ff_del_syncobj(cfs->sobj)) return FR_INT_ERR; +#endif + cfs->fs_type = 0; /* Clear old fs object */ + } + + if (fs) { + fs->fs_type = 0; /* Clear new fs object */ +#if FF_FS_REENTRANT /* Create sync object for the new volume */ + if (!ff_cre_syncobj((BYTE)vol, &fs->sobj)) return FR_INT_ERR; +#endif + } + FatFs[vol] = fs; /* Register new fs object */ + + if (opt == 0) return FR_OK; /* Do not mount now, it will be mounted later */ + + res = mount_volume(&path, &fs, 0); /* Force mounted the volume */ + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Open or Create a File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_open ( + FIL* fp, /* Pointer to the blank file object */ + const TCHAR* path, /* Pointer to the file name */ + BYTE mode /* Access mode and file open mode flags */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; +#if !FF_FS_READONLY + DWORD cl, bcs, clst; + LBA_t sc; + FSIZE_t ofs; +#endif + DEF_NAMBUF + + + if (!fp) return FR_INVALID_OBJECT; + + /* Get logical drive number */ + mode &= FF_FS_READONLY ? FA_READ : FA_READ | FA_WRITE | FA_CREATE_ALWAYS | FA_CREATE_NEW | FA_OPEN_ALWAYS | FA_OPEN_APPEND; + res = mount_volume(&path, &fs, mode); + if (res == FR_OK) { + dj.obj.fs = fs; + INIT_NAMBUF(fs); + res = follow_path(&dj, path); /* Follow the file path */ +#if !FF_FS_READONLY /* Read/Write configuration */ + if (res == FR_OK) { + if (dj.fn[NSFLAG] & NS_NONAME) { /* Origin directory itself? */ + res = FR_INVALID_NAME; + } +#if FF_FS_LOCK != 0 + else { + res = chk_lock(&dj, (mode & ~FA_READ) ? 1 : 0); /* Check if the file can be used */ + } +#endif + } + /* Create or Open a file */ + if (mode & (FA_CREATE_ALWAYS | FA_OPEN_ALWAYS | FA_CREATE_NEW)) { + if (res != FR_OK) { /* No file, create new */ + if (res == FR_NO_FILE) { /* There is no file to open, create a new entry */ +#if FF_FS_LOCK != 0 + res = enq_lock() ? dir_register(&dj) : FR_TOO_MANY_OPEN_FILES; +#else + res = dir_register(&dj); +#endif + } + mode |= FA_CREATE_ALWAYS; /* File is created */ + } + else { /* Any object with the same name is already existing */ + if (dj.obj.attr & (AM_RDO | AM_DIR)) { /* Cannot overwrite it (R/O or DIR) */ + res = FR_DENIED; + } else { + if (mode & FA_CREATE_NEW) res = FR_EXIST; /* Cannot create as new file */ + } + } + if (res == FR_OK && (mode & FA_CREATE_ALWAYS)) { /* Truncate the file if overwrite mode */ +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + /* Get current allocation info */ + fp->obj.fs = fs; + init_alloc_info(fs, &fp->obj); + /* Set directory entry block initial state */ + mem_set(fs->dirbuf + 2, 0, 30); /* Clear 85 entry except for NumSec */ + mem_set(fs->dirbuf + 38, 0, 26); /* Clear C0 entry except for NumName and NameHash */ + fs->dirbuf[XDIR_Attr] = AM_ARC; + st_dword(fs->dirbuf + XDIR_CrtTime, GET_FATTIME()); + fs->dirbuf[XDIR_GenFlags] = 1; + res = store_xdir(&dj); + if (res == FR_OK && fp->obj.sclust != 0) { /* Remove the cluster chain if exist */ + res = remove_chain(&fp->obj, fp->obj.sclust, 0); + fs->last_clst = fp->obj.sclust - 1; /* Reuse the cluster hole */ + } + } else +#endif + { + /* Set directory entry initial state */ + cl = ld_clust(fs, dj.dir); /* Get current cluster chain */ + st_dword(dj.dir + DIR_CrtTime, GET_FATTIME()); /* Set created time */ + dj.dir[DIR_Attr] = AM_ARC; /* Reset attribute */ + st_clust(fs, dj.dir, 0); /* Reset file allocation info */ + st_dword(dj.dir + DIR_FileSize, 0); + fs->wflag = 1; + if (cl != 0) { /* Remove the cluster chain if exist */ + sc = fs->winsect; + res = remove_chain(&dj.obj, cl, 0); + if (res == FR_OK) { + res = move_window(fs, sc); + fs->last_clst = cl - 1; /* Reuse the cluster hole */ + } + } + } + } + } + else { /* Open an existing file */ + if (res == FR_OK) { /* Is the object exsiting? */ + if (dj.obj.attr & AM_DIR) { /* File open against a directory */ + res = FR_NO_FILE; + } else { + if ((mode & FA_WRITE) && (dj.obj.attr & AM_RDO)) { /* Write mode open against R/O file */ + res = FR_DENIED; + } + } + } + } + if (res == FR_OK) { + if (mode & FA_CREATE_ALWAYS) mode |= FA_MODIFIED; /* Set file change flag if created or overwritten */ + fp->dir_sect = fs->winsect; /* Pointer to the directory entry */ + fp->dir_ptr = dj.dir; +#if FF_FS_LOCK != 0 + fp->obj.lockid = inc_lock(&dj, (mode & ~FA_READ) ? 1 : 0); /* Lock the file for this session */ + if (fp->obj.lockid == 0) res = FR_INT_ERR; +#endif + } +#else /* R/O configuration */ + if (res == FR_OK) { + if (dj.fn[NSFLAG] & NS_NONAME) { /* Is it origin directory itself? */ + res = FR_INVALID_NAME; + } else { + if (dj.obj.attr & AM_DIR) { /* Is it a directory? */ + res = FR_NO_FILE; + } + } + } +#endif + + if (res == FR_OK) { +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + fp->obj.c_scl = dj.obj.sclust; /* Get containing directory info */ + fp->obj.c_size = ((DWORD)dj.obj.objsize & 0xFFFFFF00) | dj.obj.stat; + fp->obj.c_ofs = dj.blk_ofs; + init_alloc_info(fs, &fp->obj); + } else +#endif + { + fp->obj.sclust = ld_clust(fs, dj.dir); /* Get object allocation info */ + fp->obj.objsize = ld_dword(dj.dir + DIR_FileSize); + } +#if FF_USE_FASTSEEK + fp->cltbl = 0; /* Disable fast seek mode */ +#endif + fp->obj.fs = fs; /* Validate the file object */ + fp->obj.id = fs->id; + fp->flag = mode; /* Set file access mode */ + fp->err = 0; /* Clear error flag */ + fp->sect = 0; /* Invalidate current data sector */ + fp->fptr = 0; /* Set file pointer top of the file */ +#if !FF_FS_READONLY +#if !FF_FS_TINY + mem_set(fp->buf, 0, sizeof fp->buf); /* Clear sector buffer */ +#endif + if ((mode & FA_SEEKEND) && fp->obj.objsize > 0) { /* Seek to end of file if FA_OPEN_APPEND is specified */ + fp->fptr = fp->obj.objsize; /* Offset to seek */ + bcs = (DWORD)fs->csize * SS(fs); /* Cluster size in byte */ + clst = fp->obj.sclust; /* Follow the cluster chain */ + for (ofs = fp->obj.objsize; res == FR_OK && ofs > bcs; ofs -= bcs) { + clst = get_fat(&fp->obj, clst); + if (clst <= 1) res = FR_INT_ERR; + if (clst == 0xFFFFFFFF) res = FR_DISK_ERR; + } + fp->clust = clst; + if (res == FR_OK && ofs % SS(fs)) { /* Fill sector buffer if not on the sector boundary */ + sc = clst2sect(fs, clst); + if (sc == 0) { + res = FR_INT_ERR; + } else { + fp->sect = sc + (DWORD)(ofs / SS(fs)); +#if !FF_FS_TINY + if (disk_read(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) res = FR_DISK_ERR; +#endif + } + } + } +#endif + } + + FREE_NAMBUF(); + } + + if (res != FR_OK) fp->obj.fs = 0; /* Invalidate file object on error */ + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Read File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_read ( + FIL* fp, /* Pointer to the file object */ + void* buff, /* Pointer to data buffer */ + UINT btr, /* Number of bytes to read */ + UINT* br /* Pointer to number of bytes read */ +) +{ + FRESULT res; + FATFS *fs; + DWORD clst; + LBA_t sect; + FSIZE_t remain; + UINT rcnt, cc, csect; + BYTE *rbuff = (BYTE*)buff; + + + *br = 0; /* Clear read byte counter */ + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ + if (!(fp->flag & FA_READ)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + remain = fp->obj.objsize - fp->fptr; + if (btr > remain) btr = (UINT)remain; /* Truncate btr by remaining bytes */ + + for ( ; btr; /* Repeat until btr bytes read */ + btr -= rcnt, *br += rcnt, rbuff += rcnt, fp->fptr += rcnt) { + if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + csect = (UINT)(fp->fptr / SS(fs) & (fs->csize - 1)); /* Sector offset in the cluster */ + if (csect == 0) { /* On the cluster boundary? */ + if (fp->fptr == 0) { /* On the top of the file? */ + clst = fp->obj.sclust; /* Follow cluster chain from the origin */ + } else { /* Middle or end of the file */ +#if FF_USE_FASTSEEK + if (fp->cltbl) { + clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */ + } else +#endif + { + clst = get_fat(&fp->obj, fp->clust); /* Follow cluster chain on the FAT */ + } + } + if (clst < 2) ABORT(fs, FR_INT_ERR); + if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + fp->clust = clst; /* Update current cluster */ + } + sect = clst2sect(fs, fp->clust); /* Get current sector */ + if (sect == 0) ABORT(fs, FR_INT_ERR); + sect += csect; + cc = btr / SS(fs); /* When remaining bytes >= sector size, */ + if (cc > 0) { /* Read maximum contiguous sectors directly */ + if (csect + cc > fs->csize) { /* Clip at cluster boundary */ + cc = fs->csize - csect; + } + if (disk_read(fs->pdrv, rbuff, sect, cc) != RES_OK) ABORT(fs, FR_DISK_ERR); +#if !FF_FS_READONLY && FF_FS_MINIMIZE <= 2 /* Replace one of the read sectors with cached data if it contains a dirty sector */ +#if FF_FS_TINY + if (fs->wflag && fs->winsect - sect < cc) { + mem_cpy(rbuff + ((fs->winsect - sect) * SS(fs)), fs->win, SS(fs)); + } +#else + if ((fp->flag & FA_DIRTY) && fp->sect - sect < cc) { + mem_cpy(rbuff + ((fp->sect - sect) * SS(fs)), fp->buf, SS(fs)); + } +#endif +#endif + rcnt = SS(fs) * cc; /* Number of bytes transferred */ + continue; + } +#if !FF_FS_TINY + if (fp->sect != sect) { /* Load data sector if not in cache */ +#if !FF_FS_READONLY + if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ + if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif + if (disk_read(fs->pdrv, fp->buf, sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Fill sector cache */ + } +#endif + fp->sect = sect; + } + rcnt = SS(fs) - (UINT)fp->fptr % SS(fs); /* Number of bytes remains in the sector */ + if (rcnt > btr) rcnt = btr; /* Clip it by btr if needed */ +#if FF_FS_TINY + if (move_window(fs, fp->sect) != FR_OK) ABORT(fs, FR_DISK_ERR); /* Move sector window */ + mem_cpy(rbuff, fs->win + fp->fptr % SS(fs), rcnt); /* Extract partial sector */ +#else + mem_cpy(rbuff, fp->buf + fp->fptr % SS(fs), rcnt); /* Extract partial sector */ +#endif + } + + LEAVE_FF(fs, FR_OK); +} + + + + +#if !FF_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Write File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_write ( + FIL* fp, /* Pointer to the file object */ + const void* buff, /* Pointer to the data to be written */ + UINT btw, /* Number of bytes to write */ + UINT* bw /* Pointer to number of bytes written */ +) +{ + FRESULT res; + FATFS *fs; + DWORD clst; + LBA_t sect; + UINT wcnt, cc, csect; + const BYTE *wbuff = (const BYTE*)buff; + + + *bw = 0; /* Clear write byte counter */ + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ + if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + + /* Check fptr wrap-around (file size cannot reach 4 GiB at FAT volume) */ + if ((!FF_FS_EXFAT || fs->fs_type != FS_EXFAT) && (DWORD)(fp->fptr + btw) < (DWORD)fp->fptr) { + btw = (UINT)(0xFFFFFFFF - (DWORD)fp->fptr); + } + + for ( ; btw; /* Repeat until all data written */ + btw -= wcnt, *bw += wcnt, wbuff += wcnt, fp->fptr += wcnt, fp->obj.objsize = (fp->fptr > fp->obj.objsize) ? fp->fptr : fp->obj.objsize) { + if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + csect = (UINT)(fp->fptr / SS(fs)) & (fs->csize - 1); /* Sector offset in the cluster */ + if (csect == 0) { /* On the cluster boundary? */ + if (fp->fptr == 0) { /* On the top of the file? */ + clst = fp->obj.sclust; /* Follow from the origin */ + if (clst == 0) { /* If no cluster is allocated, */ + clst = create_chain(&fp->obj, 0); /* create a new cluster chain */ + } + } else { /* On the middle or end of the file */ +#if FF_USE_FASTSEEK + if (fp->cltbl) { + clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */ + } else +#endif + { + clst = create_chain(&fp->obj, fp->clust); /* Follow or stretch cluster chain on the FAT */ + } + } + if (clst == 0) break; /* Could not allocate a new cluster (disk full) */ + if (clst == 1) ABORT(fs, FR_INT_ERR); + if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + fp->clust = clst; /* Update current cluster */ + if (fp->obj.sclust == 0) fp->obj.sclust = clst; /* Set start cluster if the first write */ + } +#if FF_FS_TINY + if (fs->winsect == fp->sect && sync_window(fs) != FR_OK) ABORT(fs, FR_DISK_ERR); /* Write-back sector cache */ +#else + if (fp->flag & FA_DIRTY) { /* Write-back sector cache */ + if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif + sect = clst2sect(fs, fp->clust); /* Get current sector */ + if (sect == 0) ABORT(fs, FR_INT_ERR); + sect += csect; + cc = btw / SS(fs); /* When remaining bytes >= sector size, */ + if (cc > 0) { /* Write maximum contiguous sectors directly */ + if (csect + cc > fs->csize) { /* Clip at cluster boundary */ + cc = fs->csize - csect; + } + if (disk_write(fs->pdrv, wbuff, sect, cc) != RES_OK) ABORT(fs, FR_DISK_ERR); +#if FF_FS_MINIMIZE <= 2 +#if FF_FS_TINY + if (fs->winsect - sect < cc) { /* Refill sector cache if it gets invalidated by the direct write */ + mem_cpy(fs->win, wbuff + ((fs->winsect - sect) * SS(fs)), SS(fs)); + fs->wflag = 0; + } +#else + if (fp->sect - sect < cc) { /* Refill sector cache if it gets invalidated by the direct write */ + mem_cpy(fp->buf, wbuff + ((fp->sect - sect) * SS(fs)), SS(fs)); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif +#endif + wcnt = SS(fs) * cc; /* Number of bytes transferred */ + continue; + } +#if FF_FS_TINY + if (fp->fptr >= fp->obj.objsize) { /* Avoid silly cache filling on the growing edge */ + if (sync_window(fs) != FR_OK) ABORT(fs, FR_DISK_ERR); + fs->winsect = sect; + } +#else + if (fp->sect != sect && /* Fill sector cache with file data */ + fp->fptr < fp->obj.objsize && + disk_read(fs->pdrv, fp->buf, sect, 1) != RES_OK) { + ABORT(fs, FR_DISK_ERR); + } +#endif + fp->sect = sect; + } + wcnt = SS(fs) - (UINT)fp->fptr % SS(fs); /* Number of bytes remains in the sector */ + if (wcnt > btw) wcnt = btw; /* Clip it by btw if needed */ +#if FF_FS_TINY + if (move_window(fs, fp->sect) != FR_OK) ABORT(fs, FR_DISK_ERR); /* Move sector window */ + mem_cpy(fs->win + fp->fptr % SS(fs), wbuff, wcnt); /* Fit data to the sector */ + fs->wflag = 1; +#else + mem_cpy(fp->buf + fp->fptr % SS(fs), wbuff, wcnt); /* Fit data to the sector */ + fp->flag |= FA_DIRTY; +#endif + } + + fp->flag |= FA_MODIFIED; /* Set file change flag */ + + LEAVE_FF(fs, FR_OK); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Synchronize the File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_sync ( + FIL* fp /* Pointer to the file object */ +) +{ + FRESULT res; + FATFS *fs; + DWORD tm; + BYTE *dir; + + + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res == FR_OK) { + if (fp->flag & FA_MODIFIED) { /* Is there any change to the file? */ +#if !FF_FS_TINY + if (fp->flag & FA_DIRTY) { /* Write-back cached data if needed */ + if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) LEAVE_FF(fs, FR_DISK_ERR); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif + /* Update the directory entry */ + tm = GET_FATTIME(); /* Modified time */ +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + res = fill_first_frag(&fp->obj); /* Fill first fragment on the FAT if needed */ + if (res == FR_OK) { + res = fill_last_frag(&fp->obj, fp->clust, 0xFFFFFFFF); /* Fill last fragment on the FAT if needed */ + } + if (res == FR_OK) { + DIR dj; + DEF_NAMBUF + + INIT_NAMBUF(fs); + res = load_obj_xdir(&dj, &fp->obj); /* Load directory entry block */ + if (res == FR_OK) { + fs->dirbuf[XDIR_Attr] |= AM_ARC; /* Set archive attribute to indicate that the file has been changed */ + fs->dirbuf[XDIR_GenFlags] = fp->obj.stat | 1; /* Update file allocation information */ + st_dword(fs->dirbuf + XDIR_FstClus, fp->obj.sclust); /* Update start cluster */ + st_qword(fs->dirbuf + XDIR_FileSize, fp->obj.objsize); /* Update file size */ + st_qword(fs->dirbuf + XDIR_ValidFileSize, fp->obj.objsize); /* (FatFs does not support Valid File Size feature) */ + st_dword(fs->dirbuf + XDIR_ModTime, tm); /* Update modified time */ + fs->dirbuf[XDIR_ModTime10] = 0; + st_dword(fs->dirbuf + XDIR_AccTime, 0); + res = store_xdir(&dj); /* Restore it to the directory */ + if (res == FR_OK) { + res = sync_fs(fs); + fp->flag &= (BYTE)~FA_MODIFIED; + } + } + FREE_NAMBUF(); + } + } else +#endif + { + res = move_window(fs, fp->dir_sect); + if (res == FR_OK) { + dir = fp->dir_ptr; + dir[DIR_Attr] |= AM_ARC; /* Set archive attribute to indicate that the file has been changed */ + st_clust(fp->obj.fs, dir, fp->obj.sclust); /* Update file allocation information */ + st_dword(dir + DIR_FileSize, (DWORD)fp->obj.objsize); /* Update file size */ + st_dword(dir + DIR_ModTime, tm); /* Update modified time */ + st_word(dir + DIR_LstAccDate, 0); + fs->wflag = 1; + res = sync_fs(fs); /* Restore it to the directory */ + fp->flag &= (BYTE)~FA_MODIFIED; + } + } + } + } + + LEAVE_FF(fs, res); +} + +#endif /* !FF_FS_READONLY */ + + + + +/*-----------------------------------------------------------------------*/ +/* Close File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_close ( + FIL* fp /* Pointer to the file object to be closed */ +) +{ + FRESULT res; + FATFS *fs; + +#if !FF_FS_READONLY + res = f_sync(fp); /* Flush cached data */ + if (res == FR_OK) +#endif + { + res = validate(&fp->obj, &fs); /* Lock volume */ + if (res == FR_OK) { +#if FF_FS_LOCK != 0 + res = dec_lock(fp->obj.lockid); /* Decrement file open counter */ + if (res == FR_OK) fp->obj.fs = 0; /* Invalidate file object */ +#else + fp->obj.fs = 0; /* Invalidate file object */ +#endif +#if FF_FS_REENTRANT + unlock_fs(fs, FR_OK); /* Unlock volume */ +#endif + } + } + return res; +} + + + + +#if FF_FS_RPATH >= 1 +/*-----------------------------------------------------------------------*/ +/* Change Current Directory or Current Drive, Get Current Directory */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_chdrive ( + const TCHAR* path /* Drive number to set */ +) +{ + int vol; + + + /* Get logical drive number */ + vol = get_ldnumber(&path); + if (vol < 0) return FR_INVALID_DRIVE; + CurrVol = (BYTE)vol; /* Set it as current volume */ + + return FR_OK; +} + + + +FRESULT f_chdir ( + const TCHAR* path /* Pointer to the directory path */ +) +{ +#if FF_STR_VOLUME_ID == 2 + UINT i; +#endif + FRESULT res; + DIR dj; + FATFS *fs; + DEF_NAMBUF + + + /* Get logical drive */ + res = mount_volume(&path, &fs, 0); + if (res == FR_OK) { + dj.obj.fs = fs; + INIT_NAMBUF(fs); + res = follow_path(&dj, path); /* Follow the path */ + if (res == FR_OK) { /* Follow completed */ + if (dj.fn[NSFLAG] & NS_NONAME) { /* Is it the start directory itself? */ + fs->cdir = dj.obj.sclust; +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + fs->cdc_scl = dj.obj.c_scl; + fs->cdc_size = dj.obj.c_size; + fs->cdc_ofs = dj.obj.c_ofs; + } +#endif + } else { + if (dj.obj.attr & AM_DIR) { /* It is a sub-directory */ +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + fs->cdir = ld_dword(fs->dirbuf + XDIR_FstClus); /* Sub-directory cluster */ + fs->cdc_scl = dj.obj.sclust; /* Save containing directory information */ + fs->cdc_size = ((DWORD)dj.obj.objsize & 0xFFFFFF00) | dj.obj.stat; + fs->cdc_ofs = dj.blk_ofs; + } else +#endif + { + fs->cdir = ld_clust(fs, dj.dir); /* Sub-directory cluster */ + } + } else { + res = FR_NO_PATH; /* Reached but a file */ + } + } + } + FREE_NAMBUF(); + if (res == FR_NO_FILE) res = FR_NO_PATH; +#if FF_STR_VOLUME_ID == 2 /* Also current drive is changed at Unix style volume ID */ + if (res == FR_OK) { + for (i = FF_VOLUMES - 1; i && fs != FatFs[i]; i--) ; /* Set current drive */ + CurrVol = (BYTE)i; + } +#endif + } + + LEAVE_FF(fs, res); +} + + +#if FF_FS_RPATH >= 2 +FRESULT f_getcwd ( + TCHAR* buff, /* Pointer to the directory path */ + UINT len /* Size of buff in unit of TCHAR */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; + UINT i, n; + DWORD ccl; + TCHAR *tp = buff; +#if FF_VOLUMES >= 2 + UINT vl; +#if FF_STR_VOLUME_ID + const char *vp; +#endif +#endif + FILINFO fno; + DEF_NAMBUF + + + /* Get logical drive */ + buff[0] = 0; /* Set null string to get current volume */ + res = mount_volume((const TCHAR**)&buff, &fs, 0); /* Get current volume */ + if (res == FR_OK) { + dj.obj.fs = fs; + INIT_NAMBUF(fs); + + /* Follow parent directories and create the path */ + i = len; /* Bottom of buffer (directory stack base) */ + if (!FF_FS_EXFAT || fs->fs_type != FS_EXFAT) { /* (Cannot do getcwd on exFAT and returns root path) */ + dj.obj.sclust = fs->cdir; /* Start to follow upper directory from current directory */ + while ((ccl = dj.obj.sclust) != 0) { /* Repeat while current directory is a sub-directory */ + res = dir_sdi(&dj, 1 * SZDIRE); /* Get parent directory */ + if (res != FR_OK) break; + res = move_window(fs, dj.sect); + if (res != FR_OK) break; + dj.obj.sclust = ld_clust(fs, dj.dir); /* Goto parent directory */ + res = dir_sdi(&dj, 0); + if (res != FR_OK) break; + do { /* Find the entry links to the child directory */ + res = DIR_READ_FILE(&dj); + if (res != FR_OK) break; + if (ccl == ld_clust(fs, dj.dir)) break; /* Found the entry */ + res = dir_next(&dj, 0); + } while (res == FR_OK); + if (res == FR_NO_FILE) res = FR_INT_ERR;/* It cannot be 'not found'. */ + if (res != FR_OK) break; + get_fileinfo(&dj, &fno); /* Get the directory name and push it to the buffer */ + for (n = 0; fno.fname[n]; n++) ; /* Name length */ + if (i < n + 1) { /* Insufficient space to store the path name? */ + res = FR_NOT_ENOUGH_CORE; break; + } + while (n) buff[--i] = fno.fname[--n]; /* Stack the name */ + buff[--i] = '/'; + } + } + if (res == FR_OK) { + if (i == len) buff[--i] = '/'; /* Is it the root-directory? */ +#if FF_VOLUMES >= 2 /* Put drive prefix */ + vl = 0; +#if FF_STR_VOLUME_ID >= 1 /* String volume ID */ + for (n = 0, vp = (const char*)VolumeStr[CurrVol]; vp[n]; n++) ; + if (i >= n + 2) { + if (FF_STR_VOLUME_ID == 2) *tp++ = (TCHAR)'/'; + for (vl = 0; vl < n; *tp++ = (TCHAR)vp[vl], vl++) ; + if (FF_STR_VOLUME_ID == 1) *tp++ = (TCHAR)':'; + vl++; + } +#else /* Numeric volume ID */ + if (i >= 3) { + *tp++ = (TCHAR)'0' + CurrVol; + *tp++ = (TCHAR)':'; + vl = 2; + } +#endif + if (vl == 0) res = FR_NOT_ENOUGH_CORE; +#endif + /* Add current directory path */ + if (res == FR_OK) { + do *tp++ = buff[i++]; while (i < len); /* Copy stacked path string */ + } + } + FREE_NAMBUF(); + } + + *tp = 0; + LEAVE_FF(fs, res); +} + +#endif /* FF_FS_RPATH >= 2 */ +#endif /* FF_FS_RPATH >= 1 */ + + + +#if FF_FS_MINIMIZE <= 2 +/*-----------------------------------------------------------------------*/ +/* Seek File Read/Write Pointer */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_lseek ( + FIL* fp, /* Pointer to the file object */ + FSIZE_t ofs /* File pointer from top of file */ +) +{ + FRESULT res; + FATFS *fs; + DWORD clst, bcs; + LBA_t nsect; + FSIZE_t ifptr; +#if FF_USE_FASTSEEK + DWORD cl, pcl, ncl, tcl, tlen, ulen, *tbl; + LBA_t dsc; +#endif + + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res == FR_OK) res = (FRESULT)fp->err; +#if FF_FS_EXFAT && !FF_FS_READONLY + if (res == FR_OK && fs->fs_type == FS_EXFAT) { + res = fill_last_frag(&fp->obj, fp->clust, 0xFFFFFFFF); /* Fill last fragment on the FAT if needed */ + } +#endif + if (res != FR_OK) LEAVE_FF(fs, res); + +#if FF_USE_FASTSEEK + if (fp->cltbl) { /* Fast seek */ + if (ofs == CREATE_LINKMAP) { /* Create CLMT */ + tbl = fp->cltbl; + tlen = *tbl++; ulen = 2; /* Given table size and required table size */ + cl = fp->obj.sclust; /* Origin of the chain */ + if (cl != 0) { + do { + /* Get a fragment */ + tcl = cl; ncl = 0; ulen += 2; /* Top, length and used items */ + do { + pcl = cl; ncl++; + cl = get_fat(&fp->obj, cl); + if (cl <= 1) ABORT(fs, FR_INT_ERR); + if (cl == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + } while (cl == pcl + 1); + if (ulen <= tlen) { /* Store the length and top of the fragment */ + *tbl++ = ncl; *tbl++ = tcl; + } + } while (cl < fs->n_fatent); /* Repeat until end of chain */ + } + *fp->cltbl = ulen; /* Number of items used */ + if (ulen <= tlen) { + *tbl = 0; /* Terminate table */ + } else { + res = FR_NOT_ENOUGH_CORE; /* Given table size is smaller than required */ + } + } else { /* Fast seek */ + if (ofs > fp->obj.objsize) ofs = fp->obj.objsize; /* Clip offset at the file size */ + fp->fptr = ofs; /* Set file pointer */ + if (ofs > 0) { + fp->clust = clmt_clust(fp, ofs - 1); + dsc = clst2sect(fs, fp->clust); + if (dsc == 0) ABORT(fs, FR_INT_ERR); + dsc += (DWORD)((ofs - 1) / SS(fs)) & (fs->csize - 1); + if (fp->fptr % SS(fs) && dsc != fp->sect) { /* Refill sector cache if needed */ +#if !FF_FS_TINY +#if !FF_FS_READONLY + if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ + if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif + if (disk_read(fs->pdrv, fp->buf, dsc, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Load current sector */ +#endif + fp->sect = dsc; + } + } + } + } else +#endif + + /* Normal Seek */ + { +#if FF_FS_EXFAT + if (fs->fs_type != FS_EXFAT && ofs >= 0x100000000) ofs = 0xFFFFFFFF; /* Clip at 4 GiB - 1 if at FATxx */ +#endif + if (ofs > fp->obj.objsize && (FF_FS_READONLY || !(fp->flag & FA_WRITE))) { /* In read-only mode, clip offset with the file size */ + ofs = fp->obj.objsize; + } + ifptr = fp->fptr; + fp->fptr = nsect = 0; + if (ofs > 0) { + bcs = (DWORD)fs->csize * SS(fs); /* Cluster size (byte) */ + if (ifptr > 0 && + (ofs - 1) / bcs >= (ifptr - 1) / bcs) { /* When seek to same or following cluster, */ + fp->fptr = (ifptr - 1) & ~(FSIZE_t)(bcs - 1); /* start from the current cluster */ + ofs -= fp->fptr; + clst = fp->clust; + } else { /* When seek to back cluster, */ + clst = fp->obj.sclust; /* start from the first cluster */ +#if !FF_FS_READONLY + if (clst == 0) { /* If no cluster chain, create a new chain */ + clst = create_chain(&fp->obj, 0); + if (clst == 1) ABORT(fs, FR_INT_ERR); + if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + fp->obj.sclust = clst; + } +#endif + fp->clust = clst; + } + if (clst != 0) { + while (ofs > bcs) { /* Cluster following loop */ + ofs -= bcs; fp->fptr += bcs; +#if !FF_FS_READONLY + if (fp->flag & FA_WRITE) { /* Check if in write mode or not */ + if (FF_FS_EXFAT && fp->fptr > fp->obj.objsize) { /* No FAT chain object needs correct objsize to generate FAT value */ + fp->obj.objsize = fp->fptr; + fp->flag |= FA_MODIFIED; + } + clst = create_chain(&fp->obj, clst); /* Follow chain with forceed stretch */ + if (clst == 0) { /* Clip file size in case of disk full */ + ofs = 0; break; + } + } else +#endif + { + clst = get_fat(&fp->obj, clst); /* Follow cluster chain if not in write mode */ + } + if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + if (clst <= 1 || clst >= fs->n_fatent) ABORT(fs, FR_INT_ERR); + fp->clust = clst; + } + fp->fptr += ofs; + if (ofs % SS(fs)) { + nsect = clst2sect(fs, clst); /* Current sector */ + if (nsect == 0) ABORT(fs, FR_INT_ERR); + nsect += (DWORD)(ofs / SS(fs)); + } + } + } + if (!FF_FS_READONLY && fp->fptr > fp->obj.objsize) { /* Set file change flag if the file size is extended */ + fp->obj.objsize = fp->fptr; + fp->flag |= FA_MODIFIED; + } + if (fp->fptr % SS(fs) && nsect != fp->sect) { /* Fill sector cache if needed */ +#if !FF_FS_TINY +#if !FF_FS_READONLY + if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ + if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif + if (disk_read(fs->pdrv, fp->buf, nsect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Fill sector cache */ +#endif + fp->sect = nsect; + } + } + + LEAVE_FF(fs, res); +} + + + +#if FF_FS_MINIMIZE <= 1 +/*-----------------------------------------------------------------------*/ +/* Create a Directory Object */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_opendir ( + DIR* dp, /* Pointer to directory object to create */ + const TCHAR* path /* Pointer to the directory path */ +) +{ + FRESULT res; + FATFS *fs; + DEF_NAMBUF + + + if (!dp) return FR_INVALID_OBJECT; + + /* Get logical drive */ + res = mount_volume(&path, &fs, 0); + if (res == FR_OK) { + dp->obj.fs = fs; + INIT_NAMBUF(fs); + res = follow_path(dp, path); /* Follow the path to the directory */ + if (res == FR_OK) { /* Follow completed */ + if (!(dp->fn[NSFLAG] & NS_NONAME)) { /* It is not the origin directory itself */ + if (dp->obj.attr & AM_DIR) { /* This object is a sub-directory */ +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + dp->obj.c_scl = dp->obj.sclust; /* Get containing directory inforamation */ + dp->obj.c_size = ((DWORD)dp->obj.objsize & 0xFFFFFF00) | dp->obj.stat; + dp->obj.c_ofs = dp->blk_ofs; + init_alloc_info(fs, &dp->obj); /* Get object allocation info */ + } else +#endif + { + dp->obj.sclust = ld_clust(fs, dp->dir); /* Get object allocation info */ + } + } else { /* This object is a file */ + res = FR_NO_PATH; + } + } + if (res == FR_OK) { + dp->obj.id = fs->id; + res = dir_sdi(dp, 0); /* Rewind directory */ +#if FF_FS_LOCK != 0 + if (res == FR_OK) { + if (dp->obj.sclust != 0) { + dp->obj.lockid = inc_lock(dp, 0); /* Lock the sub directory */ + if (!dp->obj.lockid) res = FR_TOO_MANY_OPEN_FILES; + } else { + dp->obj.lockid = 0; /* Root directory need not to be locked */ + } + } +#endif + } + } + FREE_NAMBUF(); + if (res == FR_NO_FILE) res = FR_NO_PATH; + } + if (res != FR_OK) dp->obj.fs = 0; /* Invalidate the directory object if function faild */ + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Close Directory */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_closedir ( + DIR *dp /* Pointer to the directory object to be closed */ +) +{ + FRESULT res; + FATFS *fs; + + + res = validate(&dp->obj, &fs); /* Check validity of the file object */ + if (res == FR_OK) { +#if FF_FS_LOCK != 0 + if (dp->obj.lockid) res = dec_lock(dp->obj.lockid); /* Decrement sub-directory open counter */ + if (res == FR_OK) dp->obj.fs = 0; /* Invalidate directory object */ +#else + dp->obj.fs = 0; /* Invalidate directory object */ +#endif +#if FF_FS_REENTRANT + unlock_fs(fs, FR_OK); /* Unlock volume */ +#endif + } + return res; +} + + + + +/*-----------------------------------------------------------------------*/ +/* Read Directory Entries in Sequence */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_readdir ( + DIR* dp, /* Pointer to the open directory object */ + FILINFO* fno /* Pointer to file information to return */ +) +{ + FRESULT res; + FATFS *fs; + DEF_NAMBUF + + + res = validate(&dp->obj, &fs); /* Check validity of the directory object */ + if (res == FR_OK) { + if (!fno) { + res = dir_sdi(dp, 0); /* Rewind the directory object */ + } else { + INIT_NAMBUF(fs); + res = DIR_READ_FILE(dp); /* Read an item */ + if (res == FR_NO_FILE) res = FR_OK; /* Ignore end of directory */ + if (res == FR_OK) { /* A valid entry is found */ + get_fileinfo(dp, fno); /* Get the object information */ + res = dir_next(dp, 0); /* Increment index for next */ + if (res == FR_NO_FILE) res = FR_OK; /* Ignore end of directory now */ + } + FREE_NAMBUF(); + } + } + LEAVE_FF(fs, res); +} + + + +#if FF_USE_FIND +/*-----------------------------------------------------------------------*/ +/* Find Next File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_findnext ( + DIR* dp, /* Pointer to the open directory object */ + FILINFO* fno /* Pointer to the file information structure */ +) +{ + FRESULT res; + + + for (;;) { + res = f_readdir(dp, fno); /* Get a directory item */ + if (res != FR_OK || !fno || !fno->fname[0]) break; /* Terminate if any error or end of directory */ + if (pattern_matching(dp->pat, fno->fname, 0, 0)) break; /* Test for the file name */ +#if FF_USE_LFN && FF_USE_FIND == 2 + if (pattern_matching(dp->pat, fno->altname, 0, 0)) break; /* Test for alternative name if exist */ +#endif + } + return res; +} + + + +/*-----------------------------------------------------------------------*/ +/* Find First File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_findfirst ( + DIR* dp, /* Pointer to the blank directory object */ + FILINFO* fno, /* Pointer to the file information structure */ + const TCHAR* path, /* Pointer to the directory to open */ + const TCHAR* pattern /* Pointer to the matching pattern */ +) +{ + FRESULT res; + + + dp->pat = pattern; /* Save pointer to pattern string */ + res = f_opendir(dp, path); /* Open the target directory */ + if (res == FR_OK) { + res = f_findnext(dp, fno); /* Find the first item */ + } + return res; +} + +#endif /* FF_USE_FIND */ + + + +#if FF_FS_MINIMIZE == 0 +/*-----------------------------------------------------------------------*/ +/* Get File Status */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_stat ( + const TCHAR* path, /* Pointer to the file path */ + FILINFO* fno /* Pointer to file information to return */ +) +{ + FRESULT res; + DIR dj; + DEF_NAMBUF + + + /* Get logical drive */ + res = mount_volume(&path, &dj.obj.fs, 0); + if (res == FR_OK) { + INIT_NAMBUF(dj.obj.fs); + res = follow_path(&dj, path); /* Follow the file path */ + if (res == FR_OK) { /* Follow completed */ + if (dj.fn[NSFLAG] & NS_NONAME) { /* It is origin directory */ + res = FR_INVALID_NAME; + } else { /* Found an object */ + if (fno) get_fileinfo(&dj, fno); + } + } + FREE_NAMBUF(); + } + + LEAVE_FF(dj.obj.fs, res); +} + + + +#if !FF_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Get Number of Free Clusters */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_getfree ( + const TCHAR* path, /* Logical drive number */ + DWORD* nclst, /* Pointer to a variable to return number of free clusters */ + FATFS** fatfs /* Pointer to return pointer to corresponding filesystem object */ +) +{ + FRESULT res; + FATFS *fs; + DWORD nfree, clst, stat; + LBA_t sect; + UINT i; + FFOBJID obj; + + + /* Get logical drive */ + res = mount_volume(&path, &fs, 0); + if (res == FR_OK) { + *fatfs = fs; /* Return ptr to the fs object */ + /* If free_clst is valid, return it without full FAT scan */ + if (fs->free_clst <= fs->n_fatent - 2) { + *nclst = fs->free_clst; + } else { + /* Scan FAT to obtain number of free clusters */ + nfree = 0; + if (fs->fs_type == FS_FAT12) { /* FAT12: Scan bit field FAT entries */ + clst = 2; obj.fs = fs; + do { + stat = get_fat(&obj, clst); + if (stat == 0xFFFFFFFF) { res = FR_DISK_ERR; break; } + if (stat == 1) { res = FR_INT_ERR; break; } + if (stat == 0) nfree++; + } while (++clst < fs->n_fatent); + } else { +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* exFAT: Scan allocation bitmap */ + BYTE bm; + UINT b; + + clst = fs->n_fatent - 2; /* Number of clusters */ + sect = fs->bitbase; /* Bitmap sector */ + i = 0; /* Offset in the sector */ + do { /* Counts numbuer of bits with zero in the bitmap */ + if (i == 0) { + res = move_window(fs, sect++); + if (res != FR_OK) break; + } + for (b = 8, bm = fs->win[i]; b && clst; b--, clst--) { + if (!(bm & 1)) nfree++; + bm >>= 1; + } + i = (i + 1) % SS(fs); + } while (clst); + } else +#endif + { /* FAT16/32: Scan WORD/DWORD FAT entries */ + clst = fs->n_fatent; /* Number of entries */ + sect = fs->fatbase; /* Top of the FAT */ + i = 0; /* Offset in the sector */ + do { /* Counts numbuer of entries with zero in the FAT */ + if (i == 0) { + res = move_window(fs, sect++); + if (res != FR_OK) break; + } + if (fs->fs_type == FS_FAT16) { + if (ld_word(fs->win + i) == 0) nfree++; + i += 2; + } else { + if ((ld_dword(fs->win + i) & 0x0FFFFFFF) == 0) nfree++; + i += 4; + } + i %= SS(fs); + } while (--clst); + } + } + *nclst = nfree; /* Return the free clusters */ + fs->free_clst = nfree; /* Now free_clst is valid */ + fs->fsi_flag |= 1; /* FAT32: FSInfo is to be updated */ + } + } + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Truncate File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_truncate ( + FIL* fp /* Pointer to the file object */ +) +{ + FRESULT res; + FATFS *fs; + DWORD ncl; + + + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); + if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + + if (fp->fptr < fp->obj.objsize) { /* Process when fptr is not on the eof */ + if (fp->fptr == 0) { /* When set file size to zero, remove entire cluster chain */ + res = remove_chain(&fp->obj, fp->obj.sclust, 0); + fp->obj.sclust = 0; + } else { /* When truncate a part of the file, remove remaining clusters */ + ncl = get_fat(&fp->obj, fp->clust); + res = FR_OK; + if (ncl == 0xFFFFFFFF) res = FR_DISK_ERR; + if (ncl == 1) res = FR_INT_ERR; + if (res == FR_OK && ncl < fs->n_fatent) { + res = remove_chain(&fp->obj, ncl, fp->clust); + } + } + fp->obj.objsize = fp->fptr; /* Set file size to current read/write point */ + fp->flag |= FA_MODIFIED; +#if !FF_FS_TINY + if (res == FR_OK && (fp->flag & FA_DIRTY)) { + if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) { + res = FR_DISK_ERR; + } else { + fp->flag &= (BYTE)~FA_DIRTY; + } + } +#endif + if (res != FR_OK) ABORT(fs, res); + } + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Delete a File/Directory */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_unlink ( + const TCHAR* path /* Pointer to the file or directory path */ +) +{ + FRESULT res; + DIR dj, sdj; + DWORD dclst = 0; + FATFS *fs; +#if FF_FS_EXFAT + FFOBJID obj; +#endif + DEF_NAMBUF + + + /* Get logical drive */ + res = mount_volume(&path, &fs, FA_WRITE); + if (res == FR_OK) { + dj.obj.fs = fs; + INIT_NAMBUF(fs); + res = follow_path(&dj, path); /* Follow the file path */ + if (FF_FS_RPATH && res == FR_OK && (dj.fn[NSFLAG] & NS_DOT)) { + res = FR_INVALID_NAME; /* Cannot remove dot entry */ + } +#if FF_FS_LOCK != 0 + if (res == FR_OK) res = chk_lock(&dj, 2); /* Check if it is an open object */ +#endif + if (res == FR_OK) { /* The object is accessible */ + if (dj.fn[NSFLAG] & NS_NONAME) { + res = FR_INVALID_NAME; /* Cannot remove the origin directory */ + } else { + if (dj.obj.attr & AM_RDO) { + res = FR_DENIED; /* Cannot remove R/O object */ + } + } + if (res == FR_OK) { +#if FF_FS_EXFAT + obj.fs = fs; + if (fs->fs_type == FS_EXFAT) { + init_alloc_info(fs, &obj); + dclst = obj.sclust; + } else +#endif + { + dclst = ld_clust(fs, dj.dir); + } + if (dj.obj.attr & AM_DIR) { /* Is it a sub-directory? */ +#if FF_FS_RPATH != 0 + if (dclst == fs->cdir) { /* Is it the current directory? */ + res = FR_DENIED; + } else +#endif + { + sdj.obj.fs = fs; /* Open the sub-directory */ + sdj.obj.sclust = dclst; +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + sdj.obj.objsize = obj.objsize; + sdj.obj.stat = obj.stat; + } +#endif + res = dir_sdi(&sdj, 0); + if (res == FR_OK) { + res = DIR_READ_FILE(&sdj); /* Test if the directory is empty */ + if (res == FR_OK) res = FR_DENIED; /* Not empty? */ + if (res == FR_NO_FILE) res = FR_OK; /* Empty? */ + } + } + } + } + if (res == FR_OK) { + res = dir_remove(&dj); /* Remove the directory entry */ + if (res == FR_OK && dclst != 0) { /* Remove the cluster chain if exist */ +#if FF_FS_EXFAT + res = remove_chain(&obj, dclst, 0); +#else + res = remove_chain(&dj.obj, dclst, 0); +#endif + } + if (res == FR_OK) res = sync_fs(fs); + } + } + FREE_NAMBUF(); + } + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Create a Directory */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_mkdir ( + const TCHAR* path /* Pointer to the directory path */ +) +{ + FRESULT res; + DIR dj; + FFOBJID sobj; + FATFS *fs; + DWORD dcl, pcl, tm; + DEF_NAMBUF + + + res = mount_volume(&path, &fs, FA_WRITE); /* Get logical drive */ + if (res == FR_OK) { + dj.obj.fs = fs; + INIT_NAMBUF(fs); + res = follow_path(&dj, path); /* Follow the file path */ + if (res == FR_OK) res = FR_EXIST; /* Name collision? */ + if (FF_FS_RPATH && res == FR_NO_FILE && (dj.fn[NSFLAG] & NS_DOT)) { /* Invalid name? */ + res = FR_INVALID_NAME; + } + if (res == FR_NO_FILE) { /* It is clear to create a new directory */ + sobj.fs = fs; /* New object id to create a new chain */ + dcl = create_chain(&sobj, 0); /* Allocate a cluster for the new directory */ + res = FR_OK; + if (dcl == 0) res = FR_DENIED; /* No space to allocate a new cluster? */ + if (dcl == 1) res = FR_INT_ERR; /* Any insanity? */ + if (dcl == 0xFFFFFFFF) res = FR_DISK_ERR; /* Disk error? */ + tm = GET_FATTIME(); + if (res == FR_OK) { + res = dir_clear(fs, dcl); /* Clean up the new table */ + if (res == FR_OK) { + if (!FF_FS_EXFAT || fs->fs_type != FS_EXFAT) { /* Create dot entries (FAT only) */ + mem_set(fs->win + DIR_Name, ' ', 11); /* Create "." entry */ + fs->win[DIR_Name] = '.'; + fs->win[DIR_Attr] = AM_DIR; + st_dword(fs->win + DIR_ModTime, tm); + st_clust(fs, fs->win, dcl); + mem_cpy(fs->win + SZDIRE, fs->win, SZDIRE); /* Create ".." entry */ + fs->win[SZDIRE + 1] = '.'; pcl = dj.obj.sclust; + st_clust(fs, fs->win + SZDIRE, pcl); + fs->wflag = 1; + } + res = dir_register(&dj); /* Register the object to the parent directoy */ + } + } + if (res == FR_OK) { +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* Initialize directory entry block */ + st_dword(fs->dirbuf + XDIR_ModTime, tm); /* Created time */ + st_dword(fs->dirbuf + XDIR_FstClus, dcl); /* Table start cluster */ + st_dword(fs->dirbuf + XDIR_FileSize, (DWORD)fs->csize * SS(fs)); /* Directory size needs to be valid */ + st_dword(fs->dirbuf + XDIR_ValidFileSize, (DWORD)fs->csize * SS(fs)); + fs->dirbuf[XDIR_GenFlags] = 3; /* Initialize the object flag */ + fs->dirbuf[XDIR_Attr] = AM_DIR; /* Attribute */ + res = store_xdir(&dj); + } else +#endif + { + st_dword(dj.dir + DIR_ModTime, tm); /* Created time */ + st_clust(fs, dj.dir, dcl); /* Table start cluster */ + dj.dir[DIR_Attr] = AM_DIR; /* Attribute */ + fs->wflag = 1; + } + if (res == FR_OK) { + res = sync_fs(fs); + } + } else { + remove_chain(&sobj, dcl, 0); /* Could not register, remove the allocated cluster */ + } + } + FREE_NAMBUF(); + } + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Rename a File/Directory */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_rename ( + const TCHAR* path_old, /* Pointer to the object name to be renamed */ + const TCHAR* path_new /* Pointer to the new name */ +) +{ + FRESULT res; + DIR djo, djn; + FATFS *fs; + BYTE buf[FF_FS_EXFAT ? SZDIRE * 2 : SZDIRE], *dir; + LBA_t sect; + DEF_NAMBUF + + + get_ldnumber(&path_new); /* Snip the drive number of new name off */ + res = mount_volume(&path_old, &fs, FA_WRITE); /* Get logical drive of the old object */ + if (res == FR_OK) { + djo.obj.fs = fs; + INIT_NAMBUF(fs); + res = follow_path(&djo, path_old); /* Check old object */ + if (res == FR_OK && (djo.fn[NSFLAG] & (NS_DOT | NS_NONAME))) res = FR_INVALID_NAME; /* Check validity of name */ +#if FF_FS_LOCK != 0 + if (res == FR_OK) { + res = chk_lock(&djo, 2); + } +#endif + if (res == FR_OK) { /* Object to be renamed is found */ +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* At exFAT volume */ + BYTE nf, nn; + WORD nh; + + mem_cpy(buf, fs->dirbuf, SZDIRE * 2); /* Save 85+C0 entry of old object */ + mem_cpy(&djn, &djo, sizeof djo); + res = follow_path(&djn, path_new); /* Make sure if new object name is not in use */ + if (res == FR_OK) { /* Is new name already in use by any other object? */ + res = (djn.obj.sclust == djo.obj.sclust && djn.dptr == djo.dptr) ? FR_NO_FILE : FR_EXIST; + } + if (res == FR_NO_FILE) { /* It is a valid path and no name collision */ + res = dir_register(&djn); /* Register the new entry */ + if (res == FR_OK) { + nf = fs->dirbuf[XDIR_NumSec]; nn = fs->dirbuf[XDIR_NumName]; + nh = ld_word(fs->dirbuf + XDIR_NameHash); + mem_cpy(fs->dirbuf, buf, SZDIRE * 2); /* Restore 85+C0 entry */ + fs->dirbuf[XDIR_NumSec] = nf; fs->dirbuf[XDIR_NumName] = nn; + st_word(fs->dirbuf + XDIR_NameHash, nh); + if (!(fs->dirbuf[XDIR_Attr] & AM_DIR)) fs->dirbuf[XDIR_Attr] |= AM_ARC; /* Set archive attribute if it is a file */ +/* Start of critical section where an interruption can cause a cross-link */ + res = store_xdir(&djn); + } + } + } else +#endif + { /* At FAT/FAT32 volume */ + mem_cpy(buf, djo.dir, SZDIRE); /* Save directory entry of the object */ + mem_cpy(&djn, &djo, sizeof (DIR)); /* Duplicate the directory object */ + res = follow_path(&djn, path_new); /* Make sure if new object name is not in use */ + if (res == FR_OK) { /* Is new name already in use by any other object? */ + res = (djn.obj.sclust == djo.obj.sclust && djn.dptr == djo.dptr) ? FR_NO_FILE : FR_EXIST; + } + if (res == FR_NO_FILE) { /* It is a valid path and no name collision */ + res = dir_register(&djn); /* Register the new entry */ + if (res == FR_OK) { + dir = djn.dir; /* Copy directory entry of the object except name */ + mem_cpy(dir + 13, buf + 13, SZDIRE - 13); + dir[DIR_Attr] = buf[DIR_Attr]; + if (!(dir[DIR_Attr] & AM_DIR)) dir[DIR_Attr] |= AM_ARC; /* Set archive attribute if it is a file */ + fs->wflag = 1; + if ((dir[DIR_Attr] & AM_DIR) && djo.obj.sclust != djn.obj.sclust) { /* Update .. entry in the sub-directory if needed */ + sect = clst2sect(fs, ld_clust(fs, dir)); + if (sect == 0) { + res = FR_INT_ERR; + } else { +/* Start of critical section where an interruption can cause a cross-link */ + res = move_window(fs, sect); + dir = fs->win + SZDIRE * 1; /* Ptr to .. entry */ + if (res == FR_OK && dir[1] == '.') { + st_clust(fs, dir, djn.obj.sclust); + fs->wflag = 1; + } + } + } + } + } + } + if (res == FR_OK) { + res = dir_remove(&djo); /* Remove old entry */ + if (res == FR_OK) { + res = sync_fs(fs); + } + } +/* End of the critical section */ + } + FREE_NAMBUF(); + } + + LEAVE_FF(fs, res); +} + +#endif /* !FF_FS_READONLY */ +#endif /* FF_FS_MINIMIZE == 0 */ +#endif /* FF_FS_MINIMIZE <= 1 */ +#endif /* FF_FS_MINIMIZE <= 2 */ + + + +#if FF_USE_CHMOD && !FF_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Change Attribute */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_chmod ( + const TCHAR* path, /* Pointer to the file path */ + BYTE attr, /* Attribute bits */ + BYTE mask /* Attribute mask to change */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; + DEF_NAMBUF + + + res = mount_volume(&path, &fs, FA_WRITE); /* Get logical drive */ + if (res == FR_OK) { + dj.obj.fs = fs; + INIT_NAMBUF(fs); + res = follow_path(&dj, path); /* Follow the file path */ + if (res == FR_OK && (dj.fn[NSFLAG] & (NS_DOT | NS_NONAME))) res = FR_INVALID_NAME; /* Check object validity */ + if (res == FR_OK) { + mask &= AM_RDO|AM_HID|AM_SYS|AM_ARC; /* Valid attribute mask */ +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + fs->dirbuf[XDIR_Attr] = (attr & mask) | (fs->dirbuf[XDIR_Attr] & (BYTE)~mask); /* Apply attribute change */ + res = store_xdir(&dj); + } else +#endif + { + dj.dir[DIR_Attr] = (attr & mask) | (dj.dir[DIR_Attr] & (BYTE)~mask); /* Apply attribute change */ + fs->wflag = 1; + } + if (res == FR_OK) { + res = sync_fs(fs); + } + } + FREE_NAMBUF(); + } + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Change Timestamp */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_utime ( + const TCHAR* path, /* Pointer to the file/directory name */ + const FILINFO* fno /* Pointer to the timestamp to be set */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; + DEF_NAMBUF + + + res = mount_volume(&path, &fs, FA_WRITE); /* Get logical drive */ + if (res == FR_OK) { + dj.obj.fs = fs; + INIT_NAMBUF(fs); + res = follow_path(&dj, path); /* Follow the file path */ + if (res == FR_OK && (dj.fn[NSFLAG] & (NS_DOT | NS_NONAME))) res = FR_INVALID_NAME; /* Check object validity */ + if (res == FR_OK) { +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + st_dword(fs->dirbuf + XDIR_ModTime, (DWORD)fno->fdate << 16 | fno->ftime); + res = store_xdir(&dj); + } else +#endif + { + st_dword(dj.dir + DIR_ModTime, (DWORD)fno->fdate << 16 | fno->ftime); + fs->wflag = 1; + } + if (res == FR_OK) { + res = sync_fs(fs); + } + } + FREE_NAMBUF(); + } + + LEAVE_FF(fs, res); +} + +#endif /* FF_USE_CHMOD && !FF_FS_READONLY */ + + + +#if FF_USE_LABEL +/*-----------------------------------------------------------------------*/ +/* Get Volume Label */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_getlabel ( + const TCHAR* path, /* Logical drive number */ + TCHAR* label, /* Buffer to store the volume label */ + DWORD* vsn /* Variable to store the volume serial number */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; + UINT si, di; + WCHAR wc; + + /* Get logical drive */ + res = mount_volume(&path, &fs, 0); + + /* Get volume label */ + if (res == FR_OK && label) { + dj.obj.fs = fs; dj.obj.sclust = 0; /* Open root directory */ + res = dir_sdi(&dj, 0); + if (res == FR_OK) { + res = DIR_READ_LABEL(&dj); /* Find a volume label entry */ + if (res == FR_OK) { +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + WCHAR hs; + + for (si = di = hs = 0; si < dj.dir[XDIR_NumLabel]; si++) { /* Extract volume label from 83 entry */ + wc = ld_word(dj.dir + XDIR_Label + si * 2); + if (hs == 0 && IsSurrogate(wc)) { /* Is the code a surrogate? */ + hs = wc; continue; + } + wc = put_utf((DWORD)hs << 16 | wc, &label[di], 4); + if (wc == 0) { di = 0; break; } + di += wc; + hs = 0; + } + if (hs != 0) di = 0; /* Broken surrogate pair? */ + label[di] = 0; + } else +#endif + { + si = di = 0; /* Extract volume label from AM_VOL entry */ + while (si < 11) { + wc = dj.dir[si++]; +#if FF_USE_LFN && FF_LFN_UNICODE >= 1 /* Unicode output */ + if (dbc_1st((BYTE)wc) && si < 11) wc = wc << 8 | dj.dir[si++]; /* Is it a DBC? */ + wc = ff_oem2uni(wc, CODEPAGE); /* Convert it into Unicode */ + if (wc != 0) wc = put_utf(wc, &label[di], 4); /* Put it in Unicode */ + if (wc == 0) { di = 0; break; } + di += wc; +#else /* ANSI/OEM output */ + label[di++] = (TCHAR)wc; +#endif + } + do { /* Truncate trailing spaces */ + label[di] = 0; + if (di == 0) break; + } while (label[--di] == ' '); + } + } + } + if (res == FR_NO_FILE) { /* No label entry and return nul string */ + label[0] = 0; + res = FR_OK; + } + } + + /* Get volume serial number */ + if (res == FR_OK && vsn) { + res = move_window(fs, fs->volbase); + if (res == FR_OK) { + switch (fs->fs_type) { + case FS_EXFAT: + di = BPB_VolIDEx; break; + + case FS_FAT32: + di = BS_VolID32; break; + + default: + di = BS_VolID; + } + *vsn = ld_dword(fs->win + di); + } + } + + LEAVE_FF(fs, res); +} + + + +#if !FF_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Set Volume Label */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_setlabel ( + const TCHAR* label /* Volume label to set with heading logical drive number */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; + BYTE dirvn[22]; + UINT di; + WCHAR wc; + static const char badchr[] = "+.,;=[]/\\\"*:<>\?|\x7F"; /* [0..] for FAT, [7..] for exFAT */ +#if FF_USE_LFN + DWORD dc; +#endif + + /* Get logical drive */ + res = mount_volume(&label, &fs, FA_WRITE); + if (res != FR_OK) LEAVE_FF(fs, res); + +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + mem_set(dirvn, 0, 22); + di = 0; + while ((UINT)*label >= ' ') { /* Create volume label */ + dc = tchar2uni(&label); /* Get a Unicode character */ + if (dc >= 0x10000) { + if (dc == 0xFFFFFFFF || di >= 10) { /* Wrong surrogate or buffer overflow */ + dc = 0; + } else { + st_word(dirvn + di * 2, (WCHAR)(dc >> 16)); di++; + } + } + if (dc == 0 || chk_chr(badchr + 7, (int)dc) || di >= 11) { /* Check validity of the volume label */ + LEAVE_FF(fs, FR_INVALID_NAME); + } + st_word(dirvn + di * 2, (WCHAR)dc); di++; + } + } else +#endif + { /* On the FAT/FAT32 volume */ + mem_set(dirvn, ' ', 11); + di = 0; + while ((UINT)*label >= ' ') { /* Create volume label */ +#if FF_USE_LFN + dc = tchar2uni(&label); + wc = (dc < 0x10000) ? ff_uni2oem(ff_wtoupper(dc), CODEPAGE) : 0; +#else /* ANSI/OEM input */ + wc = (BYTE)*label++; + if (dbc_1st((BYTE)wc)) wc = dbc_2nd((BYTE)*label) ? wc << 8 | (BYTE)*label++ : 0; + if (IsLower(wc)) wc -= 0x20; /* To upper ASCII characters */ +#if FF_CODE_PAGE == 0 + if (ExCvt && wc >= 0x80) wc = ExCvt[wc - 0x80]; /* To upper extended characters (SBCS cfg) */ +#elif FF_CODE_PAGE < 900 + if (wc >= 0x80) wc = ExCvt[wc - 0x80]; /* To upper extended characters (SBCS cfg) */ +#endif +#endif + if (wc == 0 || chk_chr(badchr + 0, (int)wc) || di >= (UINT)((wc >= 0x100) ? 10 : 11)) { /* Reject invalid characters for volume label */ + LEAVE_FF(fs, FR_INVALID_NAME); + } + if (wc >= 0x100) dirvn[di++] = (BYTE)(wc >> 8); + dirvn[di++] = (BYTE)wc; + } + if (dirvn[0] == DDEM) LEAVE_FF(fs, FR_INVALID_NAME); /* Reject illegal name (heading DDEM) */ + while (di && dirvn[di - 1] == ' ') di--; /* Snip trailing spaces */ + } + + /* Set volume label */ + dj.obj.fs = fs; dj.obj.sclust = 0; /* Open root directory */ + res = dir_sdi(&dj, 0); + if (res == FR_OK) { + res = DIR_READ_LABEL(&dj); /* Get volume label entry */ + if (res == FR_OK) { + if (FF_FS_EXFAT && fs->fs_type == FS_EXFAT) { + dj.dir[XDIR_NumLabel] = (BYTE)di; /* Change the volume label */ + mem_cpy(dj.dir + XDIR_Label, dirvn, 22); + } else { + if (di != 0) { + mem_cpy(dj.dir, dirvn, 11); /* Change the volume label */ + } else { + dj.dir[DIR_Name] = DDEM; /* Remove the volume label */ + } + } + fs->wflag = 1; + res = sync_fs(fs); + } else { /* No volume label entry or an error */ + if (res == FR_NO_FILE) { + res = FR_OK; + if (di != 0) { /* Create a volume label entry */ + res = dir_alloc(&dj, 1); /* Allocate an entry */ + if (res == FR_OK) { + mem_set(dj.dir, 0, SZDIRE); /* Clean the entry */ + if (FF_FS_EXFAT && fs->fs_type == FS_EXFAT) { + dj.dir[XDIR_Type] = ET_VLABEL; /* Create volume label entry */ + dj.dir[XDIR_NumLabel] = (BYTE)di; + mem_cpy(dj.dir + XDIR_Label, dirvn, 22); + } else { + dj.dir[DIR_Attr] = AM_VOL; /* Create volume label entry */ + mem_cpy(dj.dir, dirvn, 11); + } + fs->wflag = 1; + res = sync_fs(fs); + } + } + } + } + } + + LEAVE_FF(fs, res); +} + +#endif /* !FF_FS_READONLY */ +#endif /* FF_USE_LABEL */ + + + +#if FF_USE_EXPAND && !FF_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Allocate a Contiguous Blocks to the File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_expand ( + FIL* fp, /* Pointer to the file object */ + FSIZE_t fsz, /* File size to be expanded to */ + BYTE opt /* Operation mode 0:Find and prepare or 1:Find and allocate */ +) +{ + FRESULT res; + FATFS *fs; + DWORD n, clst, stcl, scl, ncl, tcl, lclst; + + + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); + if (fsz == 0 || fp->obj.objsize != 0 || !(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); +#if FF_FS_EXFAT + if (fs->fs_type != FS_EXFAT && fsz >= 0x100000000) LEAVE_FF(fs, FR_DENIED); /* Check if in size limit */ +#endif + n = (DWORD)fs->csize * SS(fs); /* Cluster size */ + tcl = (DWORD)(fsz / n) + ((fsz & (n - 1)) ? 1 : 0); /* Number of clusters required */ + stcl = fs->last_clst; lclst = 0; + if (stcl < 2 || stcl >= fs->n_fatent) stcl = 2; + +#if FF_FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + scl = find_bitmap(fs, stcl, tcl); /* Find a contiguous cluster block */ + if (scl == 0) res = FR_DENIED; /* No contiguous cluster block was found */ + if (scl == 0xFFFFFFFF) res = FR_DISK_ERR; + if (res == FR_OK) { /* A contiguous free area is found */ + if (opt) { /* Allocate it now */ + res = change_bitmap(fs, scl, tcl, 1); /* Mark the cluster block 'in use' */ + lclst = scl + tcl - 1; + } else { /* Set it as suggested point for next allocation */ + lclst = scl - 1; + } + } + } else +#endif + { + scl = clst = stcl; ncl = 0; + for (;;) { /* Find a contiguous cluster block */ + n = get_fat(&fp->obj, clst); + if (++clst >= fs->n_fatent) clst = 2; + if (n == 1) { res = FR_INT_ERR; break; } + if (n == 0xFFFFFFFF) { res = FR_DISK_ERR; break; } + if (n == 0) { /* Is it a free cluster? */ + if (++ncl == tcl) break; /* Break if a contiguous cluster block is found */ + } else { + scl = clst; ncl = 0; /* Not a free cluster */ + } + if (clst == stcl) { res = FR_DENIED; break; } /* No contiguous cluster? */ + } + if (res == FR_OK) { /* A contiguous free area is found */ + if (opt) { /* Allocate it now */ + for (clst = scl, n = tcl; n; clst++, n--) { /* Create a cluster chain on the FAT */ + res = put_fat(fs, clst, (n == 1) ? 0xFFFFFFFF : clst + 1); + if (res != FR_OK) break; + lclst = clst; + } + } else { /* Set it as suggested point for next allocation */ + lclst = scl - 1; + } + } + } + + if (res == FR_OK) { + fs->last_clst = lclst; /* Set suggested start cluster to start next */ + if (opt) { /* Is it allocated now? */ + fp->obj.sclust = scl; /* Update object allocation information */ + fp->obj.objsize = fsz; + if (FF_FS_EXFAT) fp->obj.stat = 2; /* Set status 'contiguous chain' */ + fp->flag |= FA_MODIFIED; + if (fs->free_clst <= fs->n_fatent - 2) { /* Update FSINFO */ + fs->free_clst -= tcl; + fs->fsi_flag |= 1; + } + } + } + + LEAVE_FF(fs, res); +} + +#endif /* FF_USE_EXPAND && !FF_FS_READONLY */ + + + +#if FF_USE_FORWARD +/*-----------------------------------------------------------------------*/ +/* Forward Data to the Stream Directly */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_forward ( + FIL* fp, /* Pointer to the file object */ + UINT (*func)(const BYTE*,UINT), /* Pointer to the streaming function */ + UINT btf, /* Number of bytes to forward */ + UINT* bf /* Pointer to number of bytes forwarded */ +) +{ + FRESULT res; + FATFS *fs; + DWORD clst; + LBA_t sect; + FSIZE_t remain; + UINT rcnt, csect; + BYTE *dbuf; + + + *bf = 0; /* Clear transfer byte counter */ + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); + if (!(fp->flag & FA_READ)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + + remain = fp->obj.objsize - fp->fptr; + if (btf > remain) btf = (UINT)remain; /* Truncate btf by remaining bytes */ + + for ( ; btf && (*func)(0, 0); /* Repeat until all data transferred or stream goes busy */ + fp->fptr += rcnt, *bf += rcnt, btf -= rcnt) { + csect = (UINT)(fp->fptr / SS(fs) & (fs->csize - 1)); /* Sector offset in the cluster */ + if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + if (csect == 0) { /* On the cluster boundary? */ + clst = (fp->fptr == 0) ? /* On the top of the file? */ + fp->obj.sclust : get_fat(&fp->obj, fp->clust); + if (clst <= 1) ABORT(fs, FR_INT_ERR); + if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + fp->clust = clst; /* Update current cluster */ + } + } + sect = clst2sect(fs, fp->clust); /* Get current data sector */ + if (sect == 0) ABORT(fs, FR_INT_ERR); + sect += csect; +#if FF_FS_TINY + if (move_window(fs, sect) != FR_OK) ABORT(fs, FR_DISK_ERR); /* Move sector window to the file data */ + dbuf = fs->win; +#else + if (fp->sect != sect) { /* Fill sector cache with file data */ +#if !FF_FS_READONLY + if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ + if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif + if (disk_read(fs->pdrv, fp->buf, sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + } + dbuf = fp->buf; +#endif + fp->sect = sect; + rcnt = SS(fs) - (UINT)fp->fptr % SS(fs); /* Number of bytes remains in the sector */ + if (rcnt > btf) rcnt = btf; /* Clip it by btr if needed */ + rcnt = (*func)(dbuf + ((UINT)fp->fptr % SS(fs)), rcnt); /* Forward the file data */ + if (rcnt == 0) ABORT(fs, FR_INT_ERR); + } + + LEAVE_FF(fs, FR_OK); +} +#endif /* FF_USE_FORWARD */ + + + +#if !FF_FS_READONLY && FF_USE_MKFS +/*-----------------------------------------------------------------------*/ +/* Create an FAT/exFAT volume */ +/*-----------------------------------------------------------------------*/ + +#define N_SEC_TRACK 63 /* Sectors per track for determination of drive CHS */ +#define GPT_ALIGN 0x100000 /* Alignment of partitions in GPT [byte] (>=128KB) */ +#define GPT_ITEMS 128 /* Number of GPT table size (>=128, sector aligned) */ + + +/* Create partitions on the physical drive */ + +static FRESULT create_partition ( + BYTE drv, /* Physical drive number */ + const LBA_t plst[], /* Partition list */ + UINT sys, /* System ID (for only MBR, temp setting) and bit8:GPT */ + BYTE* buf /* Working buffer for a sector */ +) +{ + UINT i, cy; + LBA_t sz_drv; + DWORD sz_drv32, s_lba32, n_lba32; + BYTE *pte, hd, n_hd, sc, n_sc; + + /* Get drive size */ + if (disk_ioctl(drv, GET_SECTOR_COUNT, &sz_drv) != RES_OK) return FR_DISK_ERR; + +#if FF_LBA64 + if (sz_drv >= FF_MIN_GPT) { /* Create partitions in GPT */ + WORD ss; + UINT sz_pt, pi, si, ofs; + DWORD bcc, rnd, align; + QWORD s_lba64, n_lba64, sz_pool, s_bpt; + static const BYTE gpt_mbr[16] = {0x00, 0x00, 0x02, 0x00, 0xEE, 0xFE, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF}; + +#if FF_MAX_SS != FF_MIN_SS + if (disk_ioctl(drv, GET_SECTOR_SIZE, &ss) != RES_OK) return FR_DISK_ERR; /* Get sector size */ + if (ss > FF_MAX_SS || ss < FF_MIN_SS || (ss & (ss - 1))) return FR_DISK_ERR; +#else + ss = FF_MAX_SS; +#endif + rnd = GET_FATTIME(); /* Random seed */ + align = GPT_ALIGN / ss; /* Partition alignment [sector] */ + sz_pt = GPT_ITEMS * SZ_GPTE / ss; /* Size of PT [sector] */ + s_bpt = sz_drv - sz_pt - 1; /* Backup PT start sector */ + s_lba64 = 2 + sz_pt; /* First allocatable sector */ + sz_pool = s_bpt - s_lba64; /* Size of allocatable area */ + bcc = 0xFFFFFFFF; n_lba64 = 1; + pi = si = 0; /* partition table index, size table index */ + do { + if (pi * SZ_GPTE % ss == 0) mem_set(buf, 0, ss); /* Clean the buffer if needed */ + if (n_lba64 != 0) { /* Is the size table not termintated? */ + s_lba64 = (s_lba64 + align - 1) & ((QWORD)0 - align); /* Align partition start */ + n_lba64 = plst[si++]; /* Get a partition size */ + if (n_lba64 <= 100) { /* Is the size in percentage? */ + n_lba64 = sz_pool * n_lba64 / 100; + n_lba64 = (n_lba64 + align - 1) & ((QWORD)0 - align); /* Align partition end (only if in percentage) */ + } + if (s_lba64 + n_lba64 > s_bpt) { /* Clip at end of the pool */ + n_lba64 = (s_lba64 < s_bpt) ? s_bpt - s_lba64 : 0; + } + } + if (n_lba64 != 0) { /* Add a partition? */ + ofs = pi * SZ_GPTE % ss; + mem_cpy(buf + ofs + GPTE_PtGuid, GUID_MS_Basic, 16); /* Partition GUID (Microsoft Basic Data) */ + rnd = make_rand(rnd, buf + ofs + GPTE_UpGuid, 16); /* Unique partition GUID */ + st_qword(buf + ofs + GPTE_FstLba, s_lba64); /* Partition start LBA */ + st_qword(buf + ofs + GPTE_LstLba, s_lba64 + n_lba64 - 1); /* Partition end LBA */ + s_lba64 += n_lba64; /* Next partition LBA */ + } + if ((pi + 1) * SZ_GPTE % ss == 0) { /* Write the buffer if it is filled up */ + for (i = 0; i < ss; bcc = crc32(bcc, buf[i++])) ; /* Calculate table check sum */ + if (disk_write(drv, buf, 2 + pi * SZ_GPTE / ss, 1) != RES_OK) return FR_DISK_ERR; /* Primary table */ + if (disk_write(drv, buf, s_bpt + pi * SZ_GPTE / ss, 1) != RES_OK) return FR_DISK_ERR; /* Secondary table */ + } + } while (++pi < GPT_ITEMS); + + /* Create primary GPT header */ + mem_set(buf, 0, ss); + mem_cpy(buf + GPTH_Sign, "EFI PART" "\0\0\1\0" "\x5C\0\0", 16); /* Signature, version (1.0) and size (92) */ + st_dword(buf + GPTH_PtBcc, ~bcc); /* Table check sum */ + st_qword(buf + GPTH_CurLba, 1); /* LBA of this header */ + st_qword(buf + GPTH_BakLba, sz_drv - 1); /* LBA of another header */ + st_qword(buf + GPTH_FstLba, 2 + sz_pt); /* LBA of first allocatable sector */ + st_qword(buf + GPTH_LstLba, s_bpt - 1); /* LBA of last allocatable sector */ + st_dword(buf + GPTH_PteSize, SZ_GPTE); /* Size of a table entry */ + st_dword(buf + GPTH_PtNum, GPT_ITEMS); /* Number of table entries */ + st_dword(buf + GPTH_PtOfs, 2); /* LBA of this table */ + rnd = make_rand(rnd, buf + GPTH_DskGuid, 16); /* Disk GUID */ + for (i = 0, bcc= 0xFFFFFFFF; i < 92; bcc = crc32(bcc, buf[i++])) ; /* Calculate header check sum */ + st_dword(buf + GPTH_Bcc, ~bcc); /* Header check sum */ + if (disk_write(drv, buf, 1, 1) != RES_OK) return FR_DISK_ERR; + + /* Create secondary GPT header */ + st_qword(buf + GPTH_CurLba, sz_drv - 1); /* LBA of this header */ + st_qword(buf + GPTH_BakLba, 1); /* LBA of another header */ + st_qword(buf + GPTH_PtOfs, s_bpt); /* LBA of this table */ + st_dword(buf + GPTH_Bcc, 0); + for (i = 0, bcc= 0xFFFFFFFF; i < 92; bcc = crc32(bcc, buf[i++])) ; /* Calculate header check sum */ + st_dword(buf + GPTH_Bcc, ~bcc); /* Header check sum */ + if (disk_write(drv, buf, sz_drv - 1, 1) != RES_OK) return FR_DISK_ERR; + + /* Create protective MBR */ + mem_set(buf, 0, ss); + mem_cpy(buf + MBR_Table, gpt_mbr, 16); /* Create a GPT partition */ + st_word(buf + BS_55AA, 0xAA55); + if (disk_write(drv, buf, 0, 1) != RES_OK) return FR_DISK_ERR; + + } else +#endif + { /* Create partitions in MBR */ + sz_drv32 = (DWORD)sz_drv; + n_sc = N_SEC_TRACK; /* Determine drive CHS without any consideration of the drive geometry */ + for (n_hd = 8; n_hd != 0 && sz_drv32 / n_hd / n_sc > 1024; n_hd *= 2) ; + if (n_hd == 0) n_hd = 255; /* Number of heads needs to be <256 */ + + mem_set(buf, 0, FF_MAX_SS); /* Clear MBR */ + pte = buf + MBR_Table; /* Partition table in the MBR */ + for (i = 0, s_lba32 = n_sc; i < 4 && s_lba32 != 0 && s_lba32 < sz_drv32; i++, s_lba32 += n_lba32) { + n_lba32 = (DWORD)plst[i]; /* Get partition size */ + if (n_lba32 <= 100) n_lba32 = (n_lba32 == 100) ? sz_drv32 : sz_drv32 / 100 * n_lba32; /* Size in percentage? */ + if (s_lba32 + n_lba32 > sz_drv32 || s_lba32 + n_lba32 < s_lba32) n_lba32 = sz_drv32 - s_lba32; /* Clip at drive size */ + if (n_lba32 == 0) break; /* End of table or no sector to allocate? */ + + st_dword(pte + PTE_StLba, s_lba32); /* Start LBA */ + st_dword(pte + PTE_SizLba, n_lba32); /* Number of sectors */ + pte[PTE_System] = (BYTE)sys; /* System type */ + + cy = (UINT)(s_lba32 / n_sc / n_hd); /* Start cylinder */ + hd = (BYTE)(s_lba32 / n_sc % n_hd); /* Start head */ + sc = (BYTE)(s_lba32 % n_sc + 1); /* Start sector */ + pte[PTE_StHead] = hd; + pte[PTE_StSec] = (BYTE)((cy >> 2 & 0xC0) | sc); + pte[PTE_StCyl] = (BYTE)cy; + + cy = (UINT)((s_lba32 + n_lba32 - 1) / n_sc / n_hd); /* End cylinder */ + hd = (BYTE)((s_lba32 + n_lba32 - 1) / n_sc % n_hd); /* End head */ + sc = (BYTE)((s_lba32 + n_lba32 - 1) % n_sc + 1); /* End sector */ + pte[PTE_EdHead] = hd; + pte[PTE_EdSec] = (BYTE)((cy >> 2 & 0xC0) | sc); + pte[PTE_EdCyl] = (BYTE)cy; + + pte += SZ_PTE; /* Next entry */ + } + + st_word(buf + BS_55AA, 0xAA55); /* MBR signature */ + if (disk_write(drv, buf, 0, 1) != RES_OK) return FR_DISK_ERR; /* Write it to the MBR */ + } + + return FR_OK; +} + + + +FRESULT f_mkfs ( + const TCHAR* path, /* Logical drive number */ + const MKFS_PARM* opt, /* Format options */ + void* work, /* Pointer to working buffer (null: use heap memory) */ + UINT len /* Size of working buffer [byte] */ +) +{ + static const WORD cst[] = {1, 4, 16, 64, 256, 512, 0}; /* Cluster size boundary for FAT volume (4Ks unit) */ + static const WORD cst32[] = {1, 2, 4, 8, 16, 32, 0}; /* Cluster size boundary for FAT32 volume (128Ks unit) */ + static const MKFS_PARM defopt = {FM_ANY, 0, 0, 0, 0}; /* Default parameter */ + BYTE fsopt, fsty, sys, *buf, *pte, pdrv, ipart; + WORD ss; /* Sector size */ + DWORD sz_buf, sz_blk, n_clst, pau, nsect, n; + LBA_t sz_vol, b_vol, b_fat, b_data; /* Size of volume, Base LBA of volume, fat, data */ + LBA_t sect, lba[2]; + DWORD sz_rsv, sz_fat, sz_dir, sz_au; /* Size of reserved, fat, dir, data, cluster */ + UINT n_fat, n_root, i; /* Index, Number of FATs and Number of roor dir entries */ + int vol; + DSTATUS ds; + FRESULT fr; + + + /* Check mounted drive and clear work area */ + vol = get_ldnumber(&path); /* Get target logical drive */ + if (vol < 0) return FR_INVALID_DRIVE; + if (FatFs[vol]) FatFs[vol]->fs_type = 0; /* Clear the fs object if mounted */ + pdrv = LD2PD(vol); /* Physical drive */ + ipart = LD2PT(vol); /* Partition (0:create as new, 1..:get from partition table) */ + if (!opt) opt = &defopt; /* Use default parameter if it is not given */ + + /* Get physical drive status (sz_drv, sz_blk, ss) */ + ds = disk_initialize(pdrv); + if (ds & STA_NOINIT) return FR_NOT_READY; + if (ds & STA_PROTECT) return FR_WRITE_PROTECTED; + sz_blk = opt->align; + if (sz_blk == 0 && disk_ioctl(pdrv, GET_BLOCK_SIZE, &sz_blk) != RES_OK) sz_blk = 1; + if (sz_blk == 0 || sz_blk > 0x8000 || (sz_blk & (sz_blk - 1))) sz_blk = 1; +#if FF_MAX_SS != FF_MIN_SS + if (disk_ioctl(pdrv, GET_SECTOR_SIZE, &ss) != RES_OK) return FR_DISK_ERR; + if (ss > FF_MAX_SS || ss < FF_MIN_SS || (ss & (ss - 1))) return FR_DISK_ERR; +#else + ss = FF_MAX_SS; +#endif + /* Options for FAT sub-type and FAT parameters */ + fsopt = opt->fmt & (FM_ANY | FM_SFD); + n_fat = (opt->n_fat >= 1 && opt->n_fat <= 2) ? opt->n_fat : 1; + n_root = (opt->n_root >= 1 && opt->n_root <= 32768 && (opt->n_root % (ss / SZDIRE)) == 0) ? opt->n_root : 512; + sz_au = (opt->au_size <= 0x1000000 && (opt->au_size & (opt->au_size - 1)) == 0) ? opt->au_size : 0; + sz_au /= ss; /* Byte --> Sector */ + + /* Get working buffer */ + sz_buf = len / ss; /* Size of working buffer [sector] */ + if (sz_buf == 0) return FR_NOT_ENOUGH_CORE; + buf = (BYTE*)work; /* Working buffer */ +#if FF_USE_LFN == 3 + if (!buf) buf = ff_memalloc(sz_buf * ss); /* Use heap memory for working buffer */ +#endif + if (!buf) return FR_NOT_ENOUGH_CORE; + + /* Determine where the volume to be located (b_vol, sz_vol) */ + b_vol = sz_vol = 0; + if (FF_MULTI_PARTITION && ipart != 0) { /* Is the volume associated with any specific partition? */ + /* Get partition location from the existing partition table */ + if (disk_read(pdrv, buf, 0, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); /* Load MBR */ + if (ld_word(buf + BS_55AA) != 0xAA55) LEAVE_MKFS(FR_MKFS_ABORTED); /* Check if MBR is valid */ +#if FF_LBA64 + if (buf[MBR_Table + PTE_System] == 0xEE) { /* GPT protective MBR? */ + DWORD n_ent, ofs; + QWORD pt_lba; + + /* Get the partition location from GPT */ + if (disk_read(pdrv, buf, 1, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); /* Load GPT header sector (next to MBR) */ + if (!test_gpt_header(buf)) LEAVE_MKFS(FR_MKFS_ABORTED); /* Check if GPT header is valid */ + n_ent = ld_dword(buf + GPTH_PtNum); /* Number of entries */ + pt_lba = ld_qword(buf + GPTH_PtOfs); /* Table start sector */ + ofs = i = 0; + while (n_ent) { /* Find MS Basic partition with order of ipart */ + if (ofs == 0 && disk_read(pdrv, buf, pt_lba++, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); /* Get PT sector */ + if (!mem_cmp(buf + ofs + GPTE_PtGuid, GUID_MS_Basic, 16) && ++i == ipart) { /* MS basic data partition? */ + b_vol = ld_qword(buf + ofs + GPTE_FstLba); + sz_vol = ld_qword(buf + ofs + GPTE_LstLba) - b_vol + 1; + break; + } + n_ent--; ofs = (ofs + SZ_GPTE) % ss; /* Next entry */ + } + if (n_ent == 0) LEAVE_MKFS(FR_MKFS_ABORTED); /* Partition not found */ + fsopt |= 0x80; /* Partitioning is in GPT */ + } else +#endif + { /* Get the partition location from MBR partition table */ + pte = buf + (MBR_Table + (ipart - 1) * SZ_PTE); + if (ipart > 4 || pte[PTE_System] == 0) LEAVE_MKFS(FR_MKFS_ABORTED); /* No partition? */ + b_vol = ld_dword(pte + PTE_StLba); /* Get volume start sector */ + sz_vol = ld_dword(pte + PTE_SizLba); /* Get volume size */ + } + } else { /* The volume is associated with a physical drive */ + if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &sz_vol) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); + if (!(fsopt & FM_SFD)) { /* To be partitioned? */ + /* Create a single-partition on the drive in this function */ +#if FF_LBA64 + if (sz_vol >= FF_MIN_GPT) { /* Which partition type to create, MBR or GPT? */ + fsopt |= 0x80; /* Partitioning is in GPT */ + b_vol = GPT_ALIGN / ss; sz_vol -= b_vol + GPT_ITEMS * SZ_GPTE / ss + 1; /* Estimated partition offset and size */ + } else +#endif + { /* Partitioning is in MBR */ + if (sz_vol > N_SEC_TRACK) { + b_vol = N_SEC_TRACK; sz_vol -= b_vol; /* Estimated partition offset and size */ + } + } + } + } + if (sz_vol < 128) LEAVE_MKFS(FR_MKFS_ABORTED); /* Check if volume size is >=128s */ + + /* Now start to create a FAT volume at b_vol and sz_vol */ + + do { /* Pre-determine the FAT type */ + if (FF_FS_EXFAT && (fsopt & FM_EXFAT)) { /* exFAT possible? */ + if ((fsopt & FM_ANY) == FM_EXFAT || sz_vol >= 0x4000000 || sz_au > 128) { /* exFAT only, vol >= 64MS or sz_au > 128S ? */ + fsty = FS_EXFAT; break; + } + } +#if FF_LBA64 + if (sz_vol >= 0x100000000) LEAVE_MKFS(FR_MKFS_ABORTED); /* Too large volume for FAT/FAT32 */ +#endif + if (sz_au > 128) sz_au = 128; /* Invalid AU for FAT/FAT32? */ + if (fsopt & FM_FAT32) { /* FAT32 possible? */ + if (!(fsopt & FM_FAT)) { /* no-FAT? */ + fsty = FS_FAT32; break; + } + } + if (!(fsopt & FM_FAT)) LEAVE_MKFS(FR_INVALID_PARAMETER); /* no-FAT? */ + fsty = FS_FAT16; + } while (0); + +#if FF_FS_EXFAT + if (fsty == FS_EXFAT) { /* Create an exFAT volume */ + DWORD szb_bit, szb_case, sum, nb, cl, tbl[3]; + WCHAR ch, si; + UINT j, st; + BYTE b; + + if (sz_vol < 0x1000) LEAVE_MKFS(FR_MKFS_ABORTED); /* Too small volume for exFAT? */ +#if FF_USE_TRIM + lba[0] = b_vol; lba[1] = b_vol + sz_vol - 1; /* Inform storage device that the volume area may be erased */ + disk_ioctl(pdrv, CTRL_TRIM, lba); +#endif + /* Determine FAT location, data location and number of clusters */ + if (sz_au == 0) { /* AU auto-selection */ + sz_au = 8; + if (sz_vol >= 0x80000) sz_au = 64; /* >= 512Ks */ + if (sz_vol >= 0x4000000) sz_au = 256; /* >= 64Ms */ + } + b_fat = b_vol + 32; /* FAT start at offset 32 */ + sz_fat = (DWORD)((sz_vol / sz_au + 2) * 4 + ss - 1) / ss; /* Number of FAT sectors */ + b_data = (b_fat + sz_fat + sz_blk - 1) & ~((LBA_t)sz_blk - 1); /* Align data area to the erase block boundary */ + if (b_data - b_vol >= sz_vol / 2) LEAVE_MKFS(FR_MKFS_ABORTED); /* Too small volume? */ + n_clst = (DWORD)(sz_vol - (b_data - b_vol)) / sz_au; /* Number of clusters */ + if (n_clst <16) LEAVE_MKFS(FR_MKFS_ABORTED); /* Too few clusters? */ + if (n_clst > MAX_EXFAT) LEAVE_MKFS(FR_MKFS_ABORTED); /* Too many clusters? */ + + szb_bit = (n_clst + 7) / 8; /* Size of allocation bitmap */ + tbl[0] = (szb_bit + sz_au * ss - 1) / (sz_au * ss); /* Number of allocation bitmap clusters */ + + /* Create a compressed up-case table */ + sect = b_data + sz_au * tbl[0]; /* Table start sector */ + sum = 0; /* Table checksum to be stored in the 82 entry */ + st = 0; si = 0; i = 0; j = 0; szb_case = 0; + do { + switch (st) { + case 0: + ch = (WCHAR)ff_wtoupper(si); /* Get an up-case char */ + if (ch != si) { + si++; break; /* Store the up-case char if exist */ + } + for (j = 1; (WCHAR)(si + j) && (WCHAR)(si + j) == ff_wtoupper((WCHAR)(si + j)); j++) ; /* Get run length of no-case block */ + if (j >= 128) { + ch = 0xFFFF; st = 2; break; /* Compress the no-case block if run is >= 128 */ + } + st = 1; /* Do not compress short run */ + /* go to next case */ + case 1: + ch = si++; /* Fill the short run */ + if (--j == 0) st = 0; + break; + + default: + ch = (WCHAR)j; si += (WCHAR)j; /* Number of chars to skip */ + st = 0; + } + sum = xsum32(buf[i + 0] = (BYTE)ch, sum); /* Put it into the write buffer */ + sum = xsum32(buf[i + 1] = (BYTE)(ch >> 8), sum); + i += 2; szb_case += 2; + if (si == 0 || i == sz_buf * ss) { /* Write buffered data when buffer full or end of process */ + n = (i + ss - 1) / ss; + if (disk_write(pdrv, buf, sect, n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); + sect += n; i = 0; + } + } while (si); + tbl[1] = (szb_case + sz_au * ss - 1) / (sz_au * ss); /* Number of up-case table clusters */ + tbl[2] = 1; /* Number of root dir clusters */ + + /* Initialize the allocation bitmap */ + sect = b_data; nsect = (szb_bit + ss - 1) / ss; /* Start of bitmap and number of sectors */ + nb = tbl[0] + tbl[1] + tbl[2]; /* Number of clusters in-use by system */ + do { + mem_set(buf, 0, sz_buf * ss); + for (i = 0; nb >= 8 && i < sz_buf * ss; buf[i++] = 0xFF, nb -= 8) ; + for (b = 1; nb != 0 && i < sz_buf * ss; buf[i] |= b, b <<= 1, nb--) ; + n = (nsect > sz_buf) ? sz_buf : nsect; /* Write the buffered data */ + if (disk_write(pdrv, buf, sect, n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); + sect += n; nsect -= n; + } while (nsect); + + /* Initialize the FAT */ + sect = b_fat; nsect = sz_fat; /* Start of FAT and number of FAT sectors */ + j = nb = cl = 0; + do { + mem_set(buf, 0, sz_buf * ss); i = 0; /* Clear work area and reset write index */ + if (cl == 0) { /* Set FAT [0] and FAT[1] */ + st_dword(buf + i, 0xFFFFFFF8); i += 4; cl++; + st_dword(buf + i, 0xFFFFFFFF); i += 4; cl++; + } + do { /* Create chains of bitmap, up-case and root dir */ + while (nb != 0 && i < sz_buf * ss) { /* Create a chain */ + st_dword(buf + i, (nb > 1) ? cl + 1 : 0xFFFFFFFF); + i += 4; cl++; nb--; + } + if (nb == 0 && j < 3) nb = tbl[j++]; /* Next chain */ + } while (nb != 0 && i < sz_buf * ss); + n = (nsect > sz_buf) ? sz_buf : nsect; /* Write the buffered data */ + if (disk_write(pdrv, buf, sect, n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); + sect += n; nsect -= n; + } while (nsect); + + /* Initialize the root directory */ + mem_set(buf, 0, sz_buf * ss); + buf[SZDIRE * 0 + 0] = ET_VLABEL; /* Volume label entry (no label) */ + buf[SZDIRE * 1 + 0] = ET_BITMAP; /* Bitmap entry */ + st_dword(buf + SZDIRE * 1 + 20, 2); /* cluster */ + st_dword(buf + SZDIRE * 1 + 24, szb_bit); /* size */ + buf[SZDIRE * 2 + 0] = ET_UPCASE; /* Up-case table entry */ + st_dword(buf + SZDIRE * 2 + 4, sum); /* sum */ + st_dword(buf + SZDIRE * 2 + 20, 2 + tbl[0]); /* cluster */ + st_dword(buf + SZDIRE * 2 + 24, szb_case); /* size */ + sect = b_data + sz_au * (tbl[0] + tbl[1]); nsect = sz_au; /* Start of the root directory and number of sectors */ + do { /* Fill root directory sectors */ + n = (nsect > sz_buf) ? sz_buf : nsect; + if (disk_write(pdrv, buf, sect, n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); + mem_set(buf, 0, ss); + sect += n; nsect -= n; + } while (nsect); + + /* Create two set of the exFAT VBR blocks */ + sect = b_vol; + for (n = 0; n < 2; n++) { + /* Main record (+0) */ + mem_set(buf, 0, ss); + mem_cpy(buf + BS_JmpBoot, "\xEB\x76\x90" "EXFAT ", 11); /* Boot jump code (x86), OEM name */ + st_qword(buf + BPB_VolOfsEx, b_vol); /* Volume offset in the physical drive [sector] */ + st_qword(buf + BPB_TotSecEx, sz_vol); /* Volume size [sector] */ + st_dword(buf + BPB_FatOfsEx, (DWORD)(b_fat - b_vol)); /* FAT offset [sector] */ + st_dword(buf + BPB_FatSzEx, sz_fat); /* FAT size [sector] */ + st_dword(buf + BPB_DataOfsEx, (DWORD)(b_data - b_vol)); /* Data offset [sector] */ + st_dword(buf + BPB_NumClusEx, n_clst); /* Number of clusters */ + st_dword(buf + BPB_RootClusEx, 2 + tbl[0] + tbl[1]); /* Root dir cluster # */ + st_dword(buf + BPB_VolIDEx, GET_FATTIME()); /* VSN */ + st_word(buf + BPB_FSVerEx, 0x100); /* Filesystem version (1.00) */ + for (buf[BPB_BytsPerSecEx] = 0, i = ss; i >>= 1; buf[BPB_BytsPerSecEx]++) ; /* Log2 of sector size [byte] */ + for (buf[BPB_SecPerClusEx] = 0, i = sz_au; i >>= 1; buf[BPB_SecPerClusEx]++) ; /* Log2 of cluster size [sector] */ + buf[BPB_NumFATsEx] = 1; /* Number of FATs */ + buf[BPB_DrvNumEx] = 0x80; /* Drive number (for int13) */ + st_word(buf + BS_BootCodeEx, 0xFEEB); /* Boot code (x86) */ + st_word(buf + BS_55AA, 0xAA55); /* Signature (placed here regardless of sector size) */ + for (i = sum = 0; i < ss; i++) { /* VBR checksum */ + if (i != BPB_VolFlagEx && i != BPB_VolFlagEx + 1 && i != BPB_PercInUseEx) sum = xsum32(buf[i], sum); + } + if (disk_write(pdrv, buf, sect++, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); + /* Extended bootstrap record (+1..+8) */ + mem_set(buf, 0, ss); + st_word(buf + ss - 2, 0xAA55); /* Signature (placed at end of sector) */ + for (j = 1; j < 9; j++) { + for (i = 0; i < ss; sum = xsum32(buf[i++], sum)) ; /* VBR checksum */ + if (disk_write(pdrv, buf, sect++, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); + } + /* OEM/Reserved record (+9..+10) */ + mem_set(buf, 0, ss); + for ( ; j < 11; j++) { + for (i = 0; i < ss; sum = xsum32(buf[i++], sum)) ; /* VBR checksum */ + if (disk_write(pdrv, buf, sect++, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); + } + /* Sum record (+11) */ + for (i = 0; i < ss; i += 4) st_dword(buf + i, sum); /* Fill with checksum value */ + if (disk_write(pdrv, buf, sect++, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); + } + + } else +#endif /* FF_FS_EXFAT */ + { /* Create an FAT/FAT32 volume */ + do { + pau = sz_au; + /* Pre-determine number of clusters and FAT sub-type */ + if (fsty == FS_FAT32) { /* FAT32 volume */ + if (pau == 0) { /* AU auto-selection */ + n = (DWORD)sz_vol / 0x20000; /* Volume size in unit of 128KS */ + for (i = 0, pau = 1; cst32[i] && cst32[i] <= n; i++, pau <<= 1) ; /* Get from table */ + } + n_clst = (DWORD)sz_vol / pau; /* Number of clusters */ + sz_fat = (n_clst * 4 + 8 + ss - 1) / ss; /* FAT size [sector] */ + sz_rsv = 32; /* Number of reserved sectors */ + sz_dir = 0; /* No static directory */ + if (n_clst <= MAX_FAT16 || n_clst > MAX_FAT32) LEAVE_MKFS(FR_MKFS_ABORTED); + } else { /* FAT volume */ + if (pau == 0) { /* au auto-selection */ + n = (DWORD)sz_vol / 0x1000; /* Volume size in unit of 4KS */ + for (i = 0, pau = 1; cst[i] && cst[i] <= n; i++, pau <<= 1) ; /* Get from table */ + } + n_clst = (DWORD)sz_vol / pau; + if (n_clst > MAX_FAT12) { + n = n_clst * 2 + 4; /* FAT size [byte] */ + } else { + fsty = FS_FAT12; + n = (n_clst * 3 + 1) / 2 + 3; /* FAT size [byte] */ + } + sz_fat = (n + ss - 1) / ss; /* FAT size [sector] */ + sz_rsv = 1; /* Number of reserved sectors */ + sz_dir = (DWORD)n_root * SZDIRE / ss; /* Root dir size [sector] */ + } + b_fat = b_vol + sz_rsv; /* FAT base */ + b_data = b_fat + sz_fat * n_fat + sz_dir; /* Data base */ + + /* Align data area to erase block boundary (for flash memory media) */ + n = (DWORD)(((b_data + sz_blk - 1) & ~(sz_blk - 1)) - b_data); /* Sectors to next nearest from current data base */ + if (fsty == FS_FAT32) { /* FAT32: Move FAT */ + sz_rsv += n; b_fat += n; + } else { /* FAT: Expand FAT */ + if (n % n_fat) { /* Adjust fractional error if needed */ + n--; sz_rsv++; b_fat++; + } + sz_fat += n / n_fat; + } + + /* Determine number of clusters and final check of validity of the FAT sub-type */ + if (sz_vol < b_data + pau * 16 - b_vol) LEAVE_MKFS(FR_MKFS_ABORTED); /* Too small volume? */ + n_clst = ((DWORD)sz_vol - sz_rsv - sz_fat * n_fat - sz_dir) / pau; + if (fsty == FS_FAT32) { + if (n_clst <= MAX_FAT16) { /* Too few clusters for FAT32? */ + if (sz_au == 0 && (sz_au = pau / 2) != 0) continue; /* Adjust cluster size and retry */ + LEAVE_MKFS(FR_MKFS_ABORTED); + } + } + if (fsty == FS_FAT16) { + if (n_clst > MAX_FAT16) { /* Too many clusters for FAT16 */ + if (sz_au == 0 && (pau * 2) <= 64) { + sz_au = pau * 2; continue; /* Adjust cluster size and retry */ + } + if ((fsopt & FM_FAT32)) { + fsty = FS_FAT32; continue; /* Switch type to FAT32 and retry */ + } + if (sz_au == 0 && (sz_au = pau * 2) <= 128) continue; /* Adjust cluster size and retry */ + LEAVE_MKFS(FR_MKFS_ABORTED); + } + if (n_clst <= MAX_FAT12) { /* Too few clusters for FAT16 */ + if (sz_au == 0 && (sz_au = pau * 2) <= 128) continue; /* Adjust cluster size and retry */ + LEAVE_MKFS(FR_MKFS_ABORTED); + } + } + if (fsty == FS_FAT12 && n_clst > MAX_FAT12) LEAVE_MKFS(FR_MKFS_ABORTED); /* Too many clusters for FAT12 */ + + /* Ok, it is the valid cluster configuration */ + break; + } while (1); + +#if FF_USE_TRIM + lba[0] = b_vol; lba[1] = b_vol + sz_vol - 1; /* Inform storage device that the volume area may be erased */ + disk_ioctl(pdrv, CTRL_TRIM, lba); +#endif + /* Create FAT VBR */ + mem_set(buf, 0, ss); + mem_cpy(buf + BS_JmpBoot, "\xEB\xFE\x90" "MSDOS5.0", 11);/* Boot jump code (x86), OEM name */ + st_word(buf + BPB_BytsPerSec, ss); /* Sector size [byte] */ + buf[BPB_SecPerClus] = (BYTE)pau; /* Cluster size [sector] */ + st_word(buf + BPB_RsvdSecCnt, (WORD)sz_rsv); /* Size of reserved area */ + buf[BPB_NumFATs] = (BYTE)n_fat; /* Number of FATs */ + st_word(buf + BPB_RootEntCnt, (WORD)((fsty == FS_FAT32) ? 0 : n_root)); /* Number of root directory entries */ + if (sz_vol < 0x10000) { + st_word(buf + BPB_TotSec16, (WORD)sz_vol); /* Volume size in 16-bit LBA */ + } else { + st_dword(buf + BPB_TotSec32, (DWORD)sz_vol); /* Volume size in 32-bit LBA */ + } + buf[BPB_Media] = 0xF8; /* Media descriptor byte */ + st_word(buf + BPB_SecPerTrk, 63); /* Number of sectors per track (for int13) */ + st_word(buf + BPB_NumHeads, 255); /* Number of heads (for int13) */ + st_dword(buf + BPB_HiddSec, (DWORD)b_vol); /* Volume offset in the physical drive [sector] */ + if (fsty == FS_FAT32) { + st_dword(buf + BS_VolID32, GET_FATTIME()); /* VSN */ + st_dword(buf + BPB_FATSz32, sz_fat); /* FAT size [sector] */ + st_dword(buf + BPB_RootClus32, 2); /* Root directory cluster # (2) */ + st_word(buf + BPB_FSInfo32, 1); /* Offset of FSINFO sector (VBR + 1) */ + st_word(buf + BPB_BkBootSec32, 6); /* Offset of backup VBR (VBR + 6) */ + buf[BS_DrvNum32] = 0x80; /* Drive number (for int13) */ + buf[BS_BootSig32] = 0x29; /* Extended boot signature */ + mem_cpy(buf + BS_VolLab32, "NO NAME " "FAT32 ", 19); /* Volume label, FAT signature */ + } else { + st_dword(buf + BS_VolID, GET_FATTIME()); /* VSN */ + st_word(buf + BPB_FATSz16, (WORD)sz_fat); /* FAT size [sector] */ + buf[BS_DrvNum] = 0x80; /* Drive number (for int13) */ + buf[BS_BootSig] = 0x29; /* Extended boot signature */ + mem_cpy(buf + BS_VolLab, "NO NAME " "FAT ", 19); /* Volume label, FAT signature */ + } + st_word(buf + BS_55AA, 0xAA55); /* Signature (offset is fixed here regardless of sector size) */ + if (disk_write(pdrv, buf, b_vol, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); /* Write it to the VBR sector */ + + /* Create FSINFO record if needed */ + if (fsty == FS_FAT32) { + disk_write(pdrv, buf, b_vol + 6, 1); /* Write backup VBR (VBR + 6) */ + mem_set(buf, 0, ss); + st_dword(buf + FSI_LeadSig, 0x41615252); + st_dword(buf + FSI_StrucSig, 0x61417272); + st_dword(buf + FSI_Free_Count, n_clst - 1); /* Number of free clusters */ + st_dword(buf + FSI_Nxt_Free, 2); /* Last allocated cluster# */ + st_word(buf + BS_55AA, 0xAA55); + disk_write(pdrv, buf, b_vol + 7, 1); /* Write backup FSINFO (VBR + 7) */ + disk_write(pdrv, buf, b_vol + 1, 1); /* Write original FSINFO (VBR + 1) */ + } + + /* Initialize FAT area */ + mem_set(buf, 0, sz_buf * ss); + sect = b_fat; /* FAT start sector */ + for (i = 0; i < n_fat; i++) { /* Initialize FATs each */ + if (fsty == FS_FAT32) { + st_dword(buf + 0, 0xFFFFFFF8); /* FAT[0] */ + st_dword(buf + 4, 0xFFFFFFFF); /* FAT[1] */ + st_dword(buf + 8, 0x0FFFFFFF); /* FAT[2] (root directory) */ + } else { + st_dword(buf + 0, (fsty == FS_FAT12) ? 0xFFFFF8 : 0xFFFFFFF8); /* FAT[0] and FAT[1] */ + } + nsect = sz_fat; /* Number of FAT sectors */ + do { /* Fill FAT sectors */ + n = (nsect > sz_buf) ? sz_buf : nsect; + if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); + mem_set(buf, 0, ss); /* Rest of FAT all are cleared */ + sect += n; nsect -= n; + } while (nsect); + } + + /* Initialize root directory (fill with zero) */ + nsect = (fsty == FS_FAT32) ? pau : sz_dir; /* Number of root directory sectors */ + do { + n = (nsect > sz_buf) ? sz_buf : nsect; + if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); + sect += n; nsect -= n; + } while (nsect); + } + + /* A FAT volume has been created here */ + + /* Determine system ID in the MBR partition table */ + if (FF_FS_EXFAT && fsty == FS_EXFAT) { + sys = 0x07; /* exFAT */ + } else { + if (fsty == FS_FAT32) { + sys = 0x0C; /* FAT32X */ + } else { + if (sz_vol >= 0x10000) { + sys = 0x06; /* FAT12/16 (large) */ + } else { + sys = (fsty == FS_FAT16) ? 0x04 : 0x01; /* FAT16 : FAT12 */ + } + } + } + + /* Update partition information */ + if (FF_MULTI_PARTITION && ipart != 0) { /* Volume is in the existing partition */ + if (!FF_LBA64 || !(fsopt & 0x80)) { + /* Update system ID in the partition table */ + if (disk_read(pdrv, buf, 0, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); /* Read the MBR */ + buf[MBR_Table + (ipart - 1) * SZ_PTE + PTE_System] = sys; /* Set system ID */ + if (disk_write(pdrv, buf, 0, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); /* Write it back to the MBR */ + } + } else { /* Volume as a new single partition */ + if (!(fsopt & FM_SFD)) { /* Create partition table if not in SFD */ + lba[0] = sz_vol, lba[1] = 0; + fr = create_partition(pdrv, lba, sys, buf); + if (fr != FR_OK) LEAVE_MKFS(fr); + } + } + + if (disk_ioctl(pdrv, CTRL_SYNC, 0) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); + + LEAVE_MKFS(FR_OK); +} + + + + +#if FF_MULTI_PARTITION +/*-----------------------------------------------------------------------*/ +/* Create Partition Table on the Physical Drive */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_fdisk ( + BYTE pdrv, /* Physical drive number */ + const LBA_t ptbl[], /* Pointer to the size table for each partitions */ + void* work /* Pointer to the working buffer (null: use heap memory) */ +) +{ + BYTE *buf = (BYTE*)work; + DSTATUS stat; + + + stat = disk_initialize(pdrv); + if (stat & STA_NOINIT) return FR_NOT_READY; + if (stat & STA_PROTECT) return FR_WRITE_PROTECTED; +#if FF_USE_LFN == 3 + if (!buf) buf = ff_memalloc(FF_MAX_SS); /* Use heap memory for working buffer */ +#endif + if (!buf) return FR_NOT_ENOUGH_CORE; + + LEAVE_MKFS(create_partition(pdrv, ptbl, 0x07, buf)); +} + +#endif /* FF_MULTI_PARTITION */ +#endif /* !FF_FS_READONLY && FF_USE_MKFS */ + + + + +#if FF_USE_STRFUNC +#if FF_USE_LFN && FF_LFN_UNICODE && (FF_STRF_ENCODE < 0 || FF_STRF_ENCODE > 3) +#error Wrong FF_STRF_ENCODE setting +#endif +/*-----------------------------------------------------------------------*/ +/* Get a String from the File */ +/*-----------------------------------------------------------------------*/ + +TCHAR* f_gets ( + TCHAR* buff, /* Pointer to the buffer to store read string */ + int len, /* Size of string buffer (items) */ + FIL* fp /* Pointer to the file object */ +) +{ + int nc = 0; + TCHAR *p = buff; + BYTE s[4]; + UINT rc; + DWORD dc; +#if FF_USE_LFN && FF_LFN_UNICODE && FF_STRF_ENCODE <= 2 + WCHAR wc; +#endif +#if FF_USE_LFN && FF_LFN_UNICODE && FF_STRF_ENCODE == 3 + UINT ct; +#endif + +#if FF_USE_LFN && FF_LFN_UNICODE /* With code conversion (Unicode API) */ + /* Make a room for the character and terminator */ + if (FF_LFN_UNICODE == 1) len -= (FF_STRF_ENCODE == 0) ? 1 : 2; + if (FF_LFN_UNICODE == 2) len -= (FF_STRF_ENCODE == 0) ? 3 : 4; + if (FF_LFN_UNICODE == 3) len -= 1; + while (nc < len) { +#if FF_STRF_ENCODE == 0 /* Read a character in ANSI/OEM */ + f_read(fp, s, 1, &rc); /* Get a code unit */ + if (rc != 1) break; /* EOF? */ + wc = s[0]; + if (dbc_1st((BYTE)wc)) { /* DBC 1st byte? */ + f_read(fp, s, 1, &rc); /* Get DBC 2nd byte */ + if (rc != 1 || !dbc_2nd(s[0])) continue; /* Wrong code? */ + wc = wc << 8 | s[0]; + } + dc = ff_oem2uni(wc, CODEPAGE); /* OEM --> */ + if (dc == 0) continue; +#elif FF_STRF_ENCODE == 1 || FF_STRF_ENCODE == 2 /* Read a character in UTF-16LE/BE */ + f_read(fp, s, 2, &rc); /* Get a code unit */ + if (rc != 2) break; /* EOF? */ + dc = (FF_STRF_ENCODE == 1) ? ld_word(s) : s[0] << 8 | s[1]; + if (IsSurrogateL(dc)) continue; /* Broken surrogate pair? */ + if (IsSurrogateH(dc)) { /* High surrogate? */ + f_read(fp, s, 2, &rc); /* Get low surrogate */ + if (rc != 2) break; /* EOF? */ + wc = (FF_STRF_ENCODE == 1) ? ld_word(s) : s[0] << 8 | s[1]; + if (!IsSurrogateL(wc)) continue; /* Broken surrogate pair? */ + dc = ((dc & 0x3FF) + 0x40) << 10 | (wc & 0x3FF); /* Merge surrogate pair */ + } +#else /* Read a character in UTF-8 */ + f_read(fp, s, 1, &rc); /* Get a code unit */ + if (rc != 1) break; /* EOF? */ + dc = s[0]; + if (dc >= 0x80) { /* Multi-byte sequence? */ + ct = 0; + if ((dc & 0xE0) == 0xC0) { dc &= 0x1F; ct = 1; } /* 2-byte sequence? */ + if ((dc & 0xF0) == 0xE0) { dc &= 0x0F; ct = 2; } /* 3-byte sequence? */ + if ((dc & 0xF8) == 0xF0) { dc &= 0x07; ct = 3; } /* 4-byte sequence? */ + if (ct == 0) continue; + f_read(fp, s, ct, &rc); /* Get trailing bytes */ + if (rc != ct) break; + rc = 0; + do { /* Merge the byte sequence */ + if ((s[rc] & 0xC0) != 0x80) break; + dc = dc << 6 | (s[rc] & 0x3F); + } while (++rc < ct); + if (rc != ct || dc < 0x80 || IsSurrogate(dc) || dc >= 0x110000) continue; /* Wrong encoding? */ + } +#endif + /* A code point is avaialble in dc to be output */ + + if (FF_USE_STRFUNC == 2 && dc == '\r') continue; /* Strip \r off if needed */ +#if FF_LFN_UNICODE == 1 || FF_LFN_UNICODE == 3 /* Output it in UTF-16/32 encoding */ + if (FF_LFN_UNICODE == 1 && dc >= 0x10000) { /* Out of BMP at UTF-16? */ + *p++ = (TCHAR)(0xD800 | ((dc >> 10) - 0x40)); nc++; /* Make and output high surrogate */ + dc = 0xDC00 | (dc & 0x3FF); /* Make low surrogate */ + } + *p++ = (TCHAR)dc; nc++; + if (dc == '\n') break; /* End of line? */ +#elif FF_LFN_UNICODE == 2 /* Output it in UTF-8 encoding */ + if (dc < 0x80) { /* Single byte? */ + *p++ = (TCHAR)dc; + nc++; + if (dc == '\n') break; /* End of line? */ + } else { + if (dc < 0x800) { /* 2-byte sequence? */ + *p++ = (TCHAR)(0xC0 | (dc >> 6 & 0x1F)); + *p++ = (TCHAR)(0x80 | (dc >> 0 & 0x3F)); + nc += 2; + } else { + if (dc < 0x10000) { /* 3-byte sequence? */ + *p++ = (TCHAR)(0xE0 | (dc >> 12 & 0x0F)); + *p++ = (TCHAR)(0x80 | (dc >> 6 & 0x3F)); + *p++ = (TCHAR)(0x80 | (dc >> 0 & 0x3F)); + nc += 3; + } else { /* 4-byte sequence? */ + *p++ = (TCHAR)(0xF0 | (dc >> 18 & 0x07)); + *p++ = (TCHAR)(0x80 | (dc >> 12 & 0x3F)); + *p++ = (TCHAR)(0x80 | (dc >> 6 & 0x3F)); + *p++ = (TCHAR)(0x80 | (dc >> 0 & 0x3F)); + nc += 4; + } + } + } +#endif + } + +#else /* Byte-by-byte read without any conversion (ANSI/OEM API) */ + len -= 1; /* Make a room for the terminator */ + while (nc < len) { + f_read(fp, s, 1, &rc); /* Get a byte */ + if (rc != 1) break; /* EOF? */ + dc = s[0]; + if (FF_USE_STRFUNC == 2 && dc == '\r') continue; + *p++ = (TCHAR)dc; nc++; + if (dc == '\n') break; + } +#endif + + *p = 0; /* Terminate the string */ + return nc ? buff : 0; /* When no data read due to EOF or error, return with error. */ +} + + + + +#if !FF_FS_READONLY +#include +/*-----------------------------------------------------------------------*/ +/* Put a Character to the File (sub-functions) */ +/*-----------------------------------------------------------------------*/ + +/* Putchar output buffer and work area */ + +typedef struct { + FIL *fp; /* Ptr to the writing file */ + int idx, nchr; /* Write index of buf[] (-1:error), number of encoding units written */ +#if FF_USE_LFN && FF_LFN_UNICODE == 1 + WCHAR hs; +#elif FF_USE_LFN && FF_LFN_UNICODE == 2 + BYTE bs[4]; + UINT wi, ct; +#endif + BYTE buf[64]; /* Write buffer */ +} putbuff; + + +/* Buffered write with code conversion */ + +static void putc_bfd (putbuff* pb, TCHAR c) +{ + UINT n; + int i, nc; +#if FF_USE_LFN && FF_LFN_UNICODE + WCHAR hs, wc; +#if FF_LFN_UNICODE == 2 + DWORD dc; + TCHAR *tp; +#endif +#endif + + if (FF_USE_STRFUNC == 2 && c == '\n') { /* LF -> CRLF conversion */ + putc_bfd(pb, '\r'); + } + + i = pb->idx; /* Write index of pb->buf[] */ + if (i < 0) return; + nc = pb->nchr; /* Write unit counter */ + +#if FF_USE_LFN && FF_LFN_UNICODE +#if FF_LFN_UNICODE == 1 /* UTF-16 input */ + if (IsSurrogateH(c)) { /* High surrogate? */ + pb->hs = c; return; /* Save it for next */ + } + hs = pb->hs; pb->hs = 0; + if (hs != 0) { /* There is a leading high surrogate */ + if (!IsSurrogateL(c)) hs = 0; /* Discard high surrogate if not a surrogate pair */ + } else { + if (IsSurrogateL(c)) return; /* Discard stray low surrogate */ + } + wc = c; +#elif FF_LFN_UNICODE == 2 /* UTF-8 input */ + for (;;) { + if (pb->ct == 0) { /* Out of multi-byte sequence? */ + pb->bs[pb->wi = 0] = (BYTE)c; /* Save 1st byte */ + if ((BYTE)c < 0x80) break; /* Single byte? */ + if (((BYTE)c & 0xE0) == 0xC0) pb->ct = 1; /* 2-byte sequence? */ + if (((BYTE)c & 0xF0) == 0xE0) pb->ct = 2; /* 3-byte sequence? */ + if (((BYTE)c & 0xF1) == 0xF0) pb->ct = 3; /* 4-byte sequence? */ + return; + } else { /* In the multi-byte sequence */ + if (((BYTE)c & 0xC0) != 0x80) { /* Broken sequence? */ + pb->ct = 0; continue; + } + pb->bs[++pb->wi] = (BYTE)c; /* Save the trailing byte */ + if (--pb->ct == 0) break; /* End of multi-byte sequence? */ + return; + } + } + tp = (TCHAR*)pb->bs; + dc = tchar2uni(&tp); /* UTF-8 ==> UTF-16 */ + if (dc == 0xFFFFFFFF) return; /* Wrong code? */ + wc = (WCHAR)dc; + hs = (WCHAR)(dc >> 16); +#elif FF_LFN_UNICODE == 3 /* UTF-32 input */ + if (IsSurrogate(c) || c >= 0x110000) return; /* Discard invalid code */ + if (c >= 0x10000) { /* Out of BMP? */ + hs = (WCHAR)(0xD800 | ((c >> 10) - 0x40)); /* Make high surrogate */ + wc = 0xDC00 | (c & 0x3FF); /* Make low surrogate */ + } else { + hs = 0; + wc = (WCHAR)c; + } +#endif + /* A code point in UTF-16 is available in hs and wc */ + +#if FF_STRF_ENCODE == 1 /* Write a code point in UTF-16LE */ + if (hs != 0) { /* Surrogate pair? */ + st_word(&pb->buf[i], hs); + i += 2; + nc++; + } + st_word(&pb->buf[i], wc); + i += 2; +#elif FF_STRF_ENCODE == 2 /* Write a code point in UTF-16BE */ + if (hs != 0) { /* Surrogate pair? */ + pb->buf[i++] = (BYTE)(hs >> 8); + pb->buf[i++] = (BYTE)hs; + nc++; + } + pb->buf[i++] = (BYTE)(wc >> 8); + pb->buf[i++] = (BYTE)wc; +#elif FF_STRF_ENCODE == 3 /* Write a code point in UTF-8 */ + if (hs != 0) { /* 4-byte sequence? */ + nc += 3; + hs = (hs & 0x3FF) + 0x40; + pb->buf[i++] = (BYTE)(0xF0 | hs >> 8); + pb->buf[i++] = (BYTE)(0x80 | (hs >> 2 & 0x3F)); + pb->buf[i++] = (BYTE)(0x80 | (hs & 3) << 4 | (wc >> 6 & 0x0F)); + pb->buf[i++] = (BYTE)(0x80 | (wc & 0x3F)); + } else { + if (wc < 0x80) { /* Single byte? */ + pb->buf[i++] = (BYTE)wc; + } else { + if (wc < 0x800) { /* 2-byte sequence? */ + nc += 1; + pb->buf[i++] = (BYTE)(0xC0 | wc >> 6); + } else { /* 3-byte sequence */ + nc += 2; + pb->buf[i++] = (BYTE)(0xE0 | wc >> 12); + pb->buf[i++] = (BYTE)(0x80 | (wc >> 6 & 0x3F)); + } + pb->buf[i++] = (BYTE)(0x80 | (wc & 0x3F)); + } + } +#else /* Write a code point in ANSI/OEM */ + if (hs != 0) return; + wc = ff_uni2oem(wc, CODEPAGE); /* UTF-16 ==> ANSI/OEM */ + if (wc == 0) return; + if (wc >= 0x100) { + pb->buf[i++] = (BYTE)(wc >> 8); nc++; + } + pb->buf[i++] = (BYTE)wc; +#endif + +#else /* ANSI/OEM input (without re-encoding) */ + pb->buf[i++] = (BYTE)c; +#endif + + if (i >= (int)(sizeof pb->buf) - 4) { /* Write buffered characters to the file */ + f_write(pb->fp, pb->buf, (UINT)i, &n); + i = (n == (UINT)i) ? 0 : -1; + } + pb->idx = i; + pb->nchr = nc + 1; +} + + +/* Flush remaining characters in the buffer */ + +static int putc_flush (putbuff* pb) +{ + UINT nw; + + if ( pb->idx >= 0 /* Flush buffered characters to the file */ + && f_write(pb->fp, pb->buf, (UINT)pb->idx, &nw) == FR_OK + && (UINT)pb->idx == nw) return pb->nchr; + return EOF; +} + + +/* Initialize write buffer */ + +static void putc_init (putbuff* pb, FIL* fp) +{ + mem_set(pb, 0, sizeof (putbuff)); + pb->fp = fp; +} + + + +int f_putc ( + TCHAR c, /* A character to be output */ + FIL* fp /* Pointer to the file object */ +) +{ + putbuff pb; + + + putc_init(&pb, fp); + putc_bfd(&pb, c); /* Put the character */ + return putc_flush(&pb); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Put a String to the File */ +/*-----------------------------------------------------------------------*/ + +int f_puts ( + const TCHAR* str, /* Pointer to the string to be output */ + FIL* fp /* Pointer to the file object */ +) +{ + putbuff pb; + + + putc_init(&pb, fp); + while (*str) putc_bfd(&pb, *str++); /* Put the string */ + return putc_flush(&pb); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Put a Formatted String to the File */ +/*-----------------------------------------------------------------------*/ + +int f_printf ( + FIL* fp, /* Pointer to the file object */ + const TCHAR* fmt, /* Pointer to the format string */ + ... /* Optional arguments... */ +) +{ + va_list arp; + putbuff pb; + BYTE f, r; + UINT i, j, w; + DWORD v; + TCHAR c, d, str[32], *p; + + + putc_init(&pb, fp); + + va_start(arp, fmt); + + for (;;) { + c = *fmt++; + if (c == 0) break; /* End of string */ + if (c != '%') { /* Non escape character */ + putc_bfd(&pb, c); + continue; + } + w = f = 0; + c = *fmt++; + if (c == '0') { /* Flag: '0' padding */ + f = 1; c = *fmt++; + } else { + if (c == '-') { /* Flag: left justified */ + f = 2; c = *fmt++; + } + } + if (c == '*') { /* Minimum width by argument */ + w = va_arg(arp, int); + c = *fmt++; + } else { + while (IsDigit(c)) { /* Minimum width */ + w = w * 10 + c - '0'; + c = *fmt++; + } + } + if (c == 'l' || c == 'L') { /* Type prefix: Size is long int */ + f |= 4; c = *fmt++; + } + if (c == 0) break; + d = c; + if (IsLower(d)) d -= 0x20; + switch (d) { /* Atgument type is... */ + case 'S' : /* String */ + p = va_arg(arp, TCHAR*); + for (j = 0; p[j]; j++) ; + if (!(f & 2)) { /* Right padded */ + while (j++ < w) putc_bfd(&pb, ' ') ; + } + while (*p) putc_bfd(&pb, *p++) ; /* String body */ + while (j++ < w) putc_bfd(&pb, ' ') ; /* Left padded */ + continue; + + case 'C' : /* Character */ + putc_bfd(&pb, (TCHAR)va_arg(arp, int)); continue; + + case 'B' : /* Unsigned binary */ + r = 2; break; + + case 'O' : /* Unsigned octal */ + r = 8; break; + + case 'D' : /* Signed decimal */ + case 'U' : /* Unsigned decimal */ + r = 10; break; + + case 'X' : /* Unsigned hexdecimal */ + r = 16; break; + + default: /* Unknown type (pass-through) */ + putc_bfd(&pb, c); continue; + } + + /* Get an argument and put it in numeral */ + v = (f & 4) ? (DWORD)va_arg(arp, long) : ((d == 'D') ? (DWORD)(long)va_arg(arp, int) : (DWORD)va_arg(arp, unsigned int)); + if (d == 'D' && (v & 0x80000000)) { + v = 0 - v; + f |= 8; + } + i = 0; + do { + d = (TCHAR)(v % r); v /= r; + if (d > 9) d += (c == 'x') ? 0x27 : 0x07; + str[i++] = d + '0'; + } while (v && i < sizeof str / sizeof *str); + if (f & 8) str[i++] = '-'; + j = i; d = (f & 1) ? '0' : ' '; + if (!(f & 2)) { + while (j++ < w) putc_bfd(&pb, d); /* Right pad */ + } + do { + putc_bfd(&pb, str[--i]); /* Number body */ + } while (i); + while (j++ < w) putc_bfd(&pb, d); /* Left pad */ + } + + va_end(arp); + + return putc_flush(&pb); +} + +#endif /* !FF_FS_READONLY */ +#endif /* FF_USE_STRFUNC */ + + + +#if FF_CODE_PAGE == 0 +/*-----------------------------------------------------------------------*/ +/* Set Active Codepage for the Path Name */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_setcp ( + WORD cp /* Value to be set as active code page */ +) +{ + static const WORD validcp[] = { 437, 720, 737, 771, 775, 850, 852, 857, 860, 861, 862, 863, 864, 865, 866, 869, 932, 936, 949, 950, 0}; + static const BYTE* const tables[] = {Ct437, Ct720, Ct737, Ct771, Ct775, Ct850, Ct852, Ct857, Ct860, Ct861, Ct862, Ct863, Ct864, Ct865, Ct866, Ct869, Dc932, Dc936, Dc949, Dc950, 0}; + UINT i; + + + for (i = 0; validcp[i] != 0 && validcp[i] != cp; i++) ; /* Find the code page */ + if (validcp[i] != cp) return FR_INVALID_PARAMETER; /* Not found? */ + + CodePage = cp; + if (cp >= 900) { /* DBCS */ + ExCvt = 0; + DbcTbl = tables[i]; + } else { /* SBCS */ + ExCvt = tables[i]; + DbcTbl = 0; + } + return FR_OK; +} +#endif /* FF_CODE_PAGE == 0 */ + diff --git a/components/fatfs/ff.h b/components/fatfs/ff.h new file mode 100644 index 00000000..52250416 --- /dev/null +++ b/components/fatfs/ff.h @@ -0,0 +1,426 @@ +/*----------------------------------------------------------------------------/ +/ FatFs - Generic FAT Filesystem module R0.14 / +/-----------------------------------------------------------------------------/ +/ +/ Copyright (C) 2019, ChaN, all right reserved. +/ +/ FatFs module is an open source software. Redistribution and use of FatFs in +/ source and binary forms, with or without modification, are permitted provided +/ that the following condition is met: + +/ 1. Redistributions of source code must retain the above copyright notice, +/ this condition and the following disclaimer. +/ +/ This software is provided by the copyright holder and contributors "AS IS" +/ and any warranties related to this software are DISCLAIMED. +/ The copyright owner or contributors be NOT LIABLE for any damages caused +/ by use of this software. +/ +/----------------------------------------------------------------------------*/ + + +#ifndef FF_DEFINED +#define FF_DEFINED 86606 /* Revision ID */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "ffconf.h" /* FatFs configuration options */ + +#if FF_DEFINED != FFCONF_DEF +#error Wrong configuration file (ffconf.h). +#endif + + +/* Integer types used for FatFs API */ + +#if defined(_WIN32) /* Main development platform */ +#define FF_INTDEF 2 +#include +typedef unsigned __int64 QWORD; +#elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__cplusplus) /* C99 or later */ +#define FF_INTDEF 2 +#include +typedef unsigned int UINT; /* int must be 16-bit or 32-bit */ +typedef unsigned char BYTE; /* char must be 8-bit */ +typedef uint16_t WORD; /* 16-bit unsigned integer */ +typedef uint32_t DWORD; /* 32-bit unsigned integer */ +typedef uint64_t QWORD; /* 64-bit unsigned integer */ +typedef WORD WCHAR; /* UTF-16 character type */ +#else /* Earlier than C99 */ +#define FF_INTDEF 1 +typedef unsigned int UINT; /* int must be 16-bit or 32-bit */ +typedef unsigned char BYTE; /* char must be 8-bit */ +typedef unsigned short WORD; /* 16-bit unsigned integer */ +typedef unsigned long DWORD; /* 32-bit unsigned integer */ +typedef WORD WCHAR; /* UTF-16 character type */ +#endif + + +/* Definitions of volume management */ + +#if FF_MULTI_PARTITION /* Multiple partition configuration */ +typedef struct { + BYTE pd; /* Physical drive number */ + BYTE pt; /* Partition: 0:Auto detect, 1-4:Forced partition) */ +} PARTITION; +extern PARTITION VolToPart[]; /* Volume - Partition mapping table */ +#endif + +#if FF_STR_VOLUME_ID +#ifndef FF_VOLUME_STRS +extern const char* VolumeStr[FF_VOLUMES]; /* User defied volume ID */ +#endif +#endif + + + +/* Type of path name strings on FatFs API */ + +#ifndef _INC_TCHAR +#define _INC_TCHAR + +#if FF_USE_LFN && FF_LFN_UNICODE == 1 /* Unicode in UTF-16 encoding */ +typedef WCHAR TCHAR; +#define _T(x) L ## x +#define _TEXT(x) L ## x +#elif FF_USE_LFN && FF_LFN_UNICODE == 2 /* Unicode in UTF-8 encoding */ +typedef char TCHAR; +#define _T(x) u8 ## x +#define _TEXT(x) u8 ## x +#elif FF_USE_LFN && FF_LFN_UNICODE == 3 /* Unicode in UTF-32 encoding */ +typedef DWORD TCHAR; +#define _T(x) U ## x +#define _TEXT(x) U ## x +#elif FF_USE_LFN && (FF_LFN_UNICODE < 0 || FF_LFN_UNICODE > 3) +#error Wrong FF_LFN_UNICODE setting +#else /* ANSI/OEM code in SBCS/DBCS */ +typedef char TCHAR; +#define _T(x) x +#define _TEXT(x) x +#endif + +#endif + + + +/* Type of file size and LBA variables */ + +#if FF_FS_EXFAT +#if FF_INTDEF != 2 +#error exFAT feature wants C99 or later +#endif +typedef QWORD FSIZE_t; +#if FF_LBA64 +typedef QWORD LBA_t; +#else +typedef DWORD LBA_t; +#endif +#else +#if FF_LBA64 +#error exFAT needs to be enabled when enable 64-bit LBA +#endif +typedef DWORD FSIZE_t; +typedef DWORD LBA_t; +#endif + + + +/* Filesystem object structure (FATFS) */ + +typedef struct { + BYTE fs_type; /* Filesystem type (0:not mounted) */ + BYTE pdrv; /* Associated physical drive */ + BYTE n_fats; /* Number of FATs (1 or 2) */ + BYTE wflag; /* win[] flag (b0:dirty) */ + BYTE fsi_flag; /* FSINFO flags (b7:disabled, b0:dirty) */ + WORD id; /* Volume mount ID */ + WORD n_rootdir; /* Number of root directory entries (FAT12/16) */ + WORD csize; /* Cluster size [sectors] */ +#if FF_MAX_SS != FF_MIN_SS + WORD ssize; /* Sector size (512, 1024, 2048 or 4096) */ +#endif +#if FF_USE_LFN + WCHAR* lfnbuf; /* LFN working buffer */ +#endif +#if FF_FS_EXFAT + BYTE* dirbuf; /* Directory entry block scratchpad buffer for exFAT */ +#endif +#if FF_FS_REENTRANT + FF_SYNC_t sobj; /* Identifier of sync object */ +#endif +#if !FF_FS_READONLY + DWORD last_clst; /* Last allocated cluster */ + DWORD free_clst; /* Number of free clusters */ +#endif +#if FF_FS_RPATH + DWORD cdir; /* Current directory start cluster (0:root) */ +#if FF_FS_EXFAT + DWORD cdc_scl; /* Containing directory start cluster (invalid when cdir is 0) */ + DWORD cdc_size; /* b31-b8:Size of containing directory, b7-b0: Chain status */ + DWORD cdc_ofs; /* Offset in the containing directory (invalid when cdir is 0) */ +#endif +#endif + DWORD n_fatent; /* Number of FAT entries (number of clusters + 2) */ + DWORD fsize; /* Size of an FAT [sectors] */ + LBA_t volbase; /* Volume base sector */ + LBA_t fatbase; /* FAT base sector */ + LBA_t dirbase; /* Root directory base sector/cluster */ + LBA_t database; /* Data base sector */ +#if FF_FS_EXFAT + LBA_t bitbase; /* Allocation bitmap base sector */ +#endif + LBA_t winsect; /* Current sector appearing in the win[] */ + BYTE win[FF_MAX_SS]; /* Disk access window for Directory, FAT (and file data at tiny cfg) */ +} FATFS; + + + +/* Object ID and allocation information (FFOBJID) */ + +typedef struct { + FATFS* fs; /* Pointer to the hosting volume of this object */ + WORD id; /* Hosting volume mount ID */ + BYTE attr; /* Object attribute */ + BYTE stat; /* Object chain status (b1-0: =0:not contiguous, =2:contiguous, =3:fragmented in this session, b2:sub-directory stretched) */ + DWORD sclust; /* Object data start cluster (0:no cluster or root directory) */ + FSIZE_t objsize; /* Object size (valid when sclust != 0) */ +#if FF_FS_EXFAT + DWORD n_cont; /* Size of first fragment - 1 (valid when stat == 3) */ + DWORD n_frag; /* Size of last fragment needs to be written to FAT (valid when not zero) */ + DWORD c_scl; /* Containing directory start cluster (valid when sclust != 0) */ + DWORD c_size; /* b31-b8:Size of containing directory, b7-b0: Chain status (valid when c_scl != 0) */ + DWORD c_ofs; /* Offset in the containing directory (valid when file object and sclust != 0) */ +#endif +#if FF_FS_LOCK + UINT lockid; /* File lock ID origin from 1 (index of file semaphore table Files[]) */ +#endif +} FFOBJID; + + + +/* File object structure (FIL) */ + +typedef struct { + FFOBJID obj; /* Object identifier (must be the 1st member to detect invalid object pointer) */ + BYTE flag; /* File status flags */ + BYTE err; /* Abort flag (error code) */ + FSIZE_t fptr; /* File read/write pointer (Zeroed on file open) */ + DWORD clust; /* Current cluster of fpter (invalid when fptr is 0) */ + LBA_t sect; /* Sector number appearing in buf[] (0:invalid) */ +#if !FF_FS_READONLY + LBA_t dir_sect; /* Sector number containing the directory entry (not used at exFAT) */ + BYTE* dir_ptr; /* Pointer to the directory entry in the win[] (not used at exFAT) */ +#endif +#if FF_USE_FASTSEEK + DWORD* cltbl; /* Pointer to the cluster link map table (nulled on open, set by application) */ +#endif +#if !FF_FS_TINY + BYTE buf[FF_MAX_SS]; /* File private data read/write window */ +#endif +} FIL; + + + +/* Directory object structure (DIR) */ + +typedef struct { + FFOBJID obj; /* Object identifier */ + DWORD dptr; /* Current read/write offset */ + DWORD clust; /* Current cluster */ + LBA_t sect; /* Current sector (0:Read operation has terminated) */ + BYTE* dir; /* Pointer to the directory item in the win[] */ + BYTE fn[12]; /* SFN (in/out) {body[8],ext[3],status[1]} */ +#if FF_USE_LFN + DWORD blk_ofs; /* Offset of current entry block being processed (0xFFFFFFFF:Invalid) */ +#endif +#if FF_USE_FIND + const TCHAR* pat; /* Pointer to the name matching pattern */ +#endif +} DIR; + + + +/* File information structure (FILINFO) */ + +typedef struct { + FSIZE_t fsize; /* File size */ + WORD fdate; /* Modified date */ + WORD ftime; /* Modified time */ + BYTE fattrib; /* File attribute */ +#if FF_USE_LFN + TCHAR altname[FF_SFN_BUF + 1];/* Altenative file name */ + TCHAR fname[FF_LFN_BUF + 1]; /* Primary file name */ +#else + TCHAR fname[12 + 1]; /* File name */ +#endif +} FILINFO; + + + +/* Format parameter structure (MKFS_PARM) */ + +typedef struct { + BYTE fmt; /* Format option (FM_FAT, FM_FAT32, FM_EXFAT and FM_SFD) */ + BYTE n_fat; /* Number of FATs */ + UINT align; /* Data area alignment (sector) */ + UINT n_root; /* Number of root directory entries */ + DWORD au_size; /* Cluster size (byte) */ +} MKFS_PARM; + + + +/* File function return code (FRESULT) */ + +typedef enum { + FR_OK = 0, /* (0) Succeeded */ + FR_DISK_ERR, /* (1) A hard error occurred in the low level disk I/O layer */ + FR_INT_ERR, /* (2) Assertion failed */ + FR_NOT_READY, /* (3) The physical drive cannot work */ + FR_NO_FILE, /* (4) Could not find the file */ + FR_NO_PATH, /* (5) Could not find the path */ + FR_INVALID_NAME, /* (6) The path name format is invalid */ + FR_DENIED, /* (7) Access denied due to prohibited access or directory full */ + FR_EXIST, /* (8) Access denied due to prohibited access */ + FR_INVALID_OBJECT, /* (9) The file/directory object is invalid */ + FR_WRITE_PROTECTED, /* (10) The physical drive is write protected */ + FR_INVALID_DRIVE, /* (11) The logical drive number is invalid */ + FR_NOT_ENABLED, /* (12) The volume has no work area */ + FR_NO_FILESYSTEM, /* (13) There is no valid FAT volume */ + FR_MKFS_ABORTED, /* (14) The f_mkfs() aborted due to any problem */ + FR_TIMEOUT, /* (15) Could not get a grant to access the volume within defined period */ + FR_LOCKED, /* (16) The operation is rejected according to the file sharing policy */ + FR_NOT_ENOUGH_CORE, /* (17) LFN working buffer could not be allocated */ + FR_TOO_MANY_OPEN_FILES, /* (18) Number of open files > FF_FS_LOCK */ + FR_INVALID_PARAMETER /* (19) Given parameter is invalid */ +} FRESULT; + + + +/*--------------------------------------------------------------*/ +/* FatFs module application interface */ + +FRESULT f_open (FIL* fp, const TCHAR* path, BYTE mode); /* Open or create a file */ +FRESULT f_close (FIL* fp); /* Close an open file object */ +FRESULT f_read (FIL* fp, void* buff, UINT btr, UINT* br); /* Read data from the file */ +FRESULT f_write (FIL* fp, const void* buff, UINT btw, UINT* bw); /* Write data to the file */ +FRESULT f_lseek (FIL* fp, FSIZE_t ofs); /* Move file pointer of the file object */ +FRESULT f_truncate (FIL* fp); /* Truncate the file */ +FRESULT f_sync (FIL* fp); /* Flush cached data of the writing file */ +FRESULT f_opendir (DIR* dp, const TCHAR* path); /* Open a directory */ +FRESULT f_closedir (DIR* dp); /* Close an open directory */ +FRESULT f_readdir (DIR* dp, FILINFO* fno); /* Read a directory item */ +FRESULT f_findfirst (DIR* dp, FILINFO* fno, const TCHAR* path, const TCHAR* pattern); /* Find first file */ +FRESULT f_findnext (DIR* dp, FILINFO* fno); /* Find next file */ +FRESULT f_mkdir (const TCHAR* path); /* Create a sub directory */ +FRESULT f_unlink (const TCHAR* path); /* Delete an existing file or directory */ +FRESULT f_rename (const TCHAR* path_old, const TCHAR* path_new); /* Rename/Move a file or directory */ +FRESULT f_stat (const TCHAR* path, FILINFO* fno); /* Get file status */ +FRESULT f_chmod (const TCHAR* path, BYTE attr, BYTE mask); /* Change attribute of a file/dir */ +FRESULT f_utime (const TCHAR* path, const FILINFO* fno); /* Change timestamp of a file/dir */ +FRESULT f_chdir (const TCHAR* path); /* Change current directory */ +FRESULT f_chdrive (const TCHAR* path); /* Change current drive */ +FRESULT f_getcwd (TCHAR* buff, UINT len); /* Get current directory */ +FRESULT f_getfree (const TCHAR* path, DWORD* nclst, FATFS** fatfs); /* Get number of free clusters on the drive */ +FRESULT f_getlabel (const TCHAR* path, TCHAR* label, DWORD* vsn); /* Get volume label */ +FRESULT f_setlabel (const TCHAR* label); /* Set volume label */ +FRESULT f_forward (FIL* fp, UINT(*func)(const BYTE*,UINT), UINT btf, UINT* bf); /* Forward data to the stream */ +FRESULT f_expand (FIL* fp, FSIZE_t fsz, BYTE opt); /* Allocate a contiguous block to the file */ +FRESULT f_mount (FATFS* fs, const TCHAR* path, BYTE opt); /* Mount/Unmount a logical drive */ +FRESULT f_mkfs (const TCHAR* path, const MKFS_PARM* opt, void* work, UINT len); /* Create a FAT volume */ +FRESULT f_fdisk (BYTE pdrv, const LBA_t ptbl[], void* work); /* Divide a physical drive into some partitions */ +FRESULT f_setcp (WORD cp); /* Set current code page */ +int f_putc (TCHAR c, FIL* fp); /* Put a character to the file */ +int f_puts (const TCHAR* str, FIL* cp); /* Put a string to the file */ +int f_printf (FIL* fp, const TCHAR* str, ...); /* Put a formatted string to the file */ +TCHAR* f_gets (TCHAR* buff, int len, FIL* fp); /* Get a string from the file */ + +#define f_eof(fp) ((int)((fp)->fptr == (fp)->obj.objsize)) +#define f_error(fp) ((fp)->err) +#define f_tell(fp) ((fp)->fptr) +#define f_size(fp) ((fp)->obj.objsize) +#define f_rewind(fp) f_lseek((fp), 0) +#define f_rewinddir(dp) f_readdir((dp), 0) +#define f_rmdir(path) f_unlink(path) +#define f_unmount(path) f_mount(0, path, 0) + +#ifndef EOF +#define EOF (-1) +#endif + + + + +/*--------------------------------------------------------------*/ +/* Additional user defined functions */ + +/* RTC function */ +#if !FF_FS_READONLY && !FF_FS_NORTC +DWORD get_fattime (void); +#endif + +/* LFN support functions */ +#if FF_USE_LFN >= 1 /* Code conversion (defined in unicode.c) */ +WCHAR ff_oem2uni (WCHAR oem, WORD cp); /* OEM code to Unicode conversion */ +WCHAR ff_uni2oem (DWORD uni, WORD cp); /* Unicode to OEM code conversion */ +DWORD ff_wtoupper (DWORD uni); /* Unicode upper-case conversion */ +#endif +#if FF_USE_LFN == 3 /* Dynamic memory allocation */ +void* ff_memalloc (UINT msize); /* Allocate memory block */ +void ff_memfree (void* mblock); /* Free memory block */ +#endif + +/* Sync functions */ +#if FF_FS_REENTRANT +int ff_cre_syncobj (BYTE vol, FF_SYNC_t* sobj); /* Create a sync object */ +int ff_req_grant (FF_SYNC_t sobj); /* Lock sync object */ +void ff_rel_grant (FF_SYNC_t sobj); /* Unlock sync object */ +int ff_del_syncobj (FF_SYNC_t sobj); /* Delete a sync object */ +#endif + + + + +/*--------------------------------------------------------------*/ +/* Flags and offset address */ + + +/* File access mode and open method flags (3rd argument of f_open) */ +#define FA_READ 0x01 +#define FA_WRITE 0x02 +#define FA_OPEN_EXISTING 0x00 +#define FA_CREATE_NEW 0x04 +#define FA_CREATE_ALWAYS 0x08 +#define FA_OPEN_ALWAYS 0x10 +#define FA_OPEN_APPEND 0x30 + +/* Fast seek controls (2nd argument of f_lseek) */ +#define CREATE_LINKMAP ((FSIZE_t)0 - 1) + +/* Format options (2nd argument of f_mkfs) */ +#define FM_FAT 0x01 +#define FM_FAT32 0x02 +#define FM_EXFAT 0x04 +#define FM_ANY 0x07 +#define FM_SFD 0x08 + +/* Filesystem type (FATFS.fs_type) */ +#define FS_FAT12 1 +#define FS_FAT16 2 +#define FS_FAT32 3 +#define FS_EXFAT 4 + +/* File attribute bits for directory entry (FILINFO.fattrib) */ +#define AM_RDO 0x01 /* Read only */ +#define AM_HID 0x02 /* Hidden */ +#define AM_SYS 0x04 /* System */ +#define AM_DIR 0x10 /* Directory */ +#define AM_ARC 0x20 /* Archive */ + + +#ifdef __cplusplus +} +#endif + +#endif /* FF_DEFINED */ diff --git a/components/fatfs/ffconf.h b/components/fatfs/ffconf.h new file mode 100644 index 00000000..279011bb --- /dev/null +++ b/components/fatfs/ffconf.h @@ -0,0 +1,298 @@ +/*---------------------------------------------------------------------------/ +/ FatFs Functional Configurations +/---------------------------------------------------------------------------*/ + +#define FFCONF_DEF 86606 /* Revision ID */ + +/*---------------------------------------------------------------------------/ +/ Function Configurations +/---------------------------------------------------------------------------*/ + +#define FF_FS_READONLY 0 +/* This option switches read-only configuration. (0:Read/Write or 1:Read-only) +/ Read-only configuration removes writing API functions, f_write(), f_sync(), +/ f_unlink(), f_mkdir(), f_chmod(), f_rename(), f_truncate(), f_getfree() +/ and optional writing functions as well. */ + + +#define FF_FS_MINIMIZE 0 +/* This option defines minimization level to remove some basic API functions. +/ +/ 0: Basic functions are fully enabled. +/ 1: f_stat(), f_getfree(), f_unlink(), f_mkdir(), f_truncate() and f_rename() +/ are removed. +/ 2: f_opendir(), f_readdir() and f_closedir() are removed in addition to 1. +/ 3: f_lseek() function is removed in addition to 2. */ + + +#define FF_USE_STRFUNC 0 +/* This option switches string functions, f_gets(), f_putc(), f_puts() and f_printf(). +/ +/ 0: Disable string functions. +/ 1: Enable without LF-CRLF conversion. +/ 2: Enable with LF-CRLF conversion. */ + + +#define FF_USE_FIND 0 +/* This option switches filtered directory read functions, f_findfirst() and +/ f_findnext(). (0:Disable, 1:Enable 2:Enable with matching altname[] too) */ + + +#define FF_USE_MKFS 1 +/* This option switches f_mkfs() function. (0:Disable or 1:Enable) */ + + +#define FF_USE_FASTSEEK 1 +/* This option switches fast seek function. (0:Disable or 1:Enable) */ + + +#define FF_USE_EXPAND 0 +/* This option switches f_expand function. (0:Disable or 1:Enable) */ + + +#define FF_USE_CHMOD 0 +/* This option switches attribute manipulation functions, f_chmod() and f_utime(). +/ (0:Disable or 1:Enable) Also FF_FS_READONLY needs to be 0 to enable this option. */ + + +#define FF_USE_LABEL 0 +/* This option switches volume label functions, f_getlabel() and f_setlabel(). +/ (0:Disable or 1:Enable) */ + + +#define FF_USE_FORWARD 0 +/* This option switches f_forward() function. (0:Disable or 1:Enable) */ + + +/*---------------------------------------------------------------------------/ +/ Locale and Namespace Configurations +/---------------------------------------------------------------------------*/ + +#define FF_CODE_PAGE 437 +/* This option specifies the OEM code page to be used on the target system. +/ Incorrect code page setting can cause a file open failure. +/ +/ 437 - U.S. +/ 720 - Arabic +/ 737 - Greek +/ 771 - KBL +/ 775 - Baltic +/ 850 - Latin 1 +/ 852 - Latin 2 +/ 855 - Cyrillic +/ 857 - Turkish +/ 860 - Portuguese +/ 861 - Icelandic +/ 862 - Hebrew +/ 863 - Canadian French +/ 864 - Arabic +/ 865 - Nordic +/ 866 - Russian +/ 869 - Greek 2 +/ 932 - Japanese (DBCS) +/ 936 - Simplified Chinese (DBCS) +/ 949 - Korean (DBCS) +/ 950 - Traditional Chinese (DBCS) +/ 0 - Include all code pages above and configured by f_setcp() +*/ + + +#define FF_USE_LFN 1 +#define FF_MAX_LFN 255 +/* The FF_USE_LFN switches the support for LFN (long file name). +/ +/ 0: Disable LFN. FF_MAX_LFN has no effect. +/ 1: Enable LFN with static working buffer on the BSS. Always NOT thread-safe. +/ 2: Enable LFN with dynamic working buffer on the STACK. +/ 3: Enable LFN with dynamic working buffer on the HEAP. +/ +/ To enable the LFN, ffunicode.c needs to be added to the project. The LFN function +/ requiers certain internal working buffer occupies (FF_MAX_LFN + 1) * 2 bytes and +/ additional (FF_MAX_LFN + 44) / 15 * 32 bytes when exFAT is enabled. +/ The FF_MAX_LFN defines size of the working buffer in UTF-16 code unit and it can +/ be in range of 12 to 255. It is recommended to be set it 255 to fully support LFN +/ specification. +/ When use stack for the working buffer, take care on stack overflow. When use heap +/ memory for the working buffer, memory management functions, ff_memalloc() and +/ ff_memfree() exemplified in ffsystem.c, need to be added to the project. */ + + +#define FF_LFN_UNICODE 0 +/* This option switches the character encoding on the API when LFN is enabled. +/ +/ 0: ANSI/OEM in current CP (TCHAR = char) +/ 1: Unicode in UTF-16 (TCHAR = WCHAR) +/ 2: Unicode in UTF-8 (TCHAR = char) +/ 3: Unicode in UTF-32 (TCHAR = DWORD) +/ +/ Also behavior of string I/O functions will be affected by this option. +/ When LFN is not enabled, this option has no effect. */ + + +#define FF_LFN_BUF 255 +#define FF_SFN_BUF 12 +/* This set of options defines size of file name members in the FILINFO structure +/ which is used to read out directory items. These values should be suffcient for +/ the file names to read. The maximum possible length of the read file name depends +/ on character encoding. When LFN is not enabled, these options have no effect. */ + + +#define FF_STRF_ENCODE 3 +/* When FF_LFN_UNICODE >= 1 with LFN enabled, string I/O functions, f_gets(), +/ f_putc(), f_puts and f_printf() convert the character encoding in it. +/ This option selects assumption of character encoding ON THE FILE to be +/ read/written via those functions. +/ +/ 0: ANSI/OEM in current CP +/ 1: Unicode in UTF-16LE +/ 2: Unicode in UTF-16BE +/ 3: Unicode in UTF-8 +*/ + + +#define FF_FS_RPATH 0 +/* This option configures support for relative path. +/ +/ 0: Disable relative path and remove related functions. +/ 1: Enable relative path. f_chdir() and f_chdrive() are available. +/ 2: f_getcwd() function is available in addition to 1. +*/ + + +/*---------------------------------------------------------------------------/ +/ Drive/Volume Configurations +/---------------------------------------------------------------------------*/ + +#define FF_VOLUMES 3 +/* Number of volumes (logical drives) to be used. (1-10) */ + + +#define FF_STR_VOLUME_ID 0 +#define FF_VOLUME_STRS "RAM","NAND","CF","SD","SD2","USB","USB2","USB3" +/* FF_STR_VOLUME_ID switches support for volume ID in arbitrary strings. +/ When FF_STR_VOLUME_ID is set to 1 or 2, arbitrary strings can be used as drive +/ number in the path name. FF_VOLUME_STRS defines the volume ID strings for each +/ logical drives. Number of items must not be less than FF_VOLUMES. Valid +/ characters for the volume ID strings are A-Z, a-z and 0-9, however, they are +/ compared in case-insensitive. If FF_STR_VOLUME_ID >= 1 and FF_VOLUME_STRS is +/ not defined, a user defined volume string table needs to be defined as: +/ +/ const char* VolumeStr[FF_VOLUMES] = {"ram","flash","sd","usb",... +*/ + + +#define FF_MULTI_PARTITION 0 +/* This option switches support for multiple volumes on the physical drive. +/ By default (0), each logical drive number is bound to the same physical drive +/ number and only an FAT volume found on the physical drive will be mounted. +/ When this function is enabled (1), each logical drive number can be bound to +/ arbitrary physical drive and partition listed in the VolToPart[]. Also f_fdisk() +/ funciton will be available. */ + + +#define FF_MIN_SS 512 +#define FF_MAX_SS 512 +/* This set of options configures the range of sector size to be supported. (512, +/ 1024, 2048 or 4096) Always set both 512 for most systems, generic memory card and +/ harddisk. But a larger value may be required for on-board flash memory and some +/ type of optical media. When FF_MAX_SS is larger than FF_MIN_SS, FatFs is configured +/ for variable sector size mode and disk_ioctl() function needs to implement +/ GET_SECTOR_SIZE command. */ + + +#define FF_LBA64 0 +/* This option switches support for 64-bit LBA. (0:Disable or 1:Enable) +/ To enable the 64-bit LBA, also exFAT needs to be enabled. (FF_FS_EXFAT == 1) */ + + +#define FF_MIN_GPT 0x100000000 +/* Minimum number of sectors to switch GPT format to create partition in f_mkfs and +/ f_fdisk function. 0x100000000 max. This option has no effect when FF_LBA64 == 0. */ + + +#define FF_USE_TRIM 0 +/* This option switches support for ATA-TRIM. (0:Disable or 1:Enable) +/ To enable Trim function, also CTRL_TRIM command should be implemented to the +/ disk_ioctl() function. */ + + + +/*---------------------------------------------------------------------------/ +/ System Configurations +/---------------------------------------------------------------------------*/ + +#define FF_FS_TINY 0 +/* This option switches tiny buffer configuration. (0:Normal or 1:Tiny) +/ At the tiny configuration, size of file object (FIL) is shrinked FF_MAX_SS bytes. +/ Instead of private sector buffer eliminated from the file object, common sector +/ buffer in the filesystem object (FATFS) is used for the file data transfer. */ + + +#define FF_FS_EXFAT 0 +/* This option switches support for exFAT filesystem. (0:Disable or 1:Enable) +/ To enable exFAT, also LFN needs to be enabled. (FF_USE_LFN >= 1) +/ Note that enabling exFAT discards ANSI C (C89) compatibility. */ + + +#define FF_FS_NORTC 1 +#define FF_NORTC_MON 1 +#define FF_NORTC_MDAY 1 +#define FF_NORTC_YEAR 2019 +/* The option FF_FS_NORTC switches timestamp functiton. If the system does not have +/ any RTC function or valid timestamp is not needed, set FF_FS_NORTC = 1 to disable +/ the timestamp function. Every object modified by FatFs will have a fixed timestamp +/ defined by FF_NORTC_MON, FF_NORTC_MDAY and FF_NORTC_YEAR in local time. +/ To enable timestamp function (FF_FS_NORTC = 0), get_fattime() function need to be +/ added to the project to read current time form real-time clock. FF_NORTC_MON, +/ FF_NORTC_MDAY and FF_NORTC_YEAR have no effect. +/ These options have no effect in read-only configuration (FF_FS_READONLY = 1). */ + + +#define FF_FS_NOFSINFO 0 +/* If you need to know correct free space on the FAT32 volume, set bit 0 of this +/ option, and f_getfree() function at first time after volume mount will force +/ a full FAT scan. Bit 1 controls the use of last allocated cluster number. +/ +/ bit0=0: Use free cluster count in the FSINFO if available. +/ bit0=1: Do not trust free cluster count in the FSINFO. +/ bit1=0: Use last allocated cluster number in the FSINFO if available. +/ bit1=1: Do not trust last allocated cluster number in the FSINFO. +*/ + + +#define FF_FS_LOCK 0 +/* The option FF_FS_LOCK switches file lock function to control duplicated file open +/ and illegal operation to open objects. This option must be 0 when FF_FS_READONLY +/ is 1. +/ +/ 0: Disable file lock function. To avoid volume corruption, application program +/ should avoid illegal open, remove and rename to the open objects. +/ >0: Enable file lock function. The value defines how many files/sub-directories +/ can be opened simultaneously under file lock control. Note that the file +/ lock control is independent of re-entrancy. */ + + +/* #include // O/S definitions */ +#define FF_FS_REENTRANT 0 +#define FF_FS_TIMEOUT 1000 +#define FF_SYNC_t HANDLE +/* The option FF_FS_REENTRANT switches the re-entrancy (thread safe) of the FatFs +/ module itself. Note that regardless of this option, file access to different +/ volume is always re-entrant and volume control functions, f_mount(), f_mkfs() +/ and f_fdisk() function, are always not re-entrant. Only file/directory access +/ to the same volume is under control of this function. +/ +/ 0: Disable re-entrancy. FF_FS_TIMEOUT and FF_SYNC_t have no effect. +/ 1: Enable re-entrancy. Also user provided synchronization handlers, +/ ff_req_grant(), ff_rel_grant(), ff_del_syncobj() and ff_cre_syncobj() +/ function, must be added to the project. Samples are available in +/ option/syscall.c. +/ +/ The FF_FS_TIMEOUT defines timeout period in unit of time tick. +/ The FF_SYNC_t defines O/S dependent sync object type. e.g. HANDLE, ID, OS_EVENT*, +/ SemaphoreHandle_t and etc. A header file for O/S definitions needs to be +/ included somewhere in the scope of ff.h. */ + + + +/*--- End of configuration options ---*/ diff --git a/components/fatfs/ffsystem.c b/components/fatfs/ffsystem.c new file mode 100644 index 00000000..b88ce155 --- /dev/null +++ b/components/fatfs/ffsystem.c @@ -0,0 +1,170 @@ +/*------------------------------------------------------------------------*/ +/* Sample Code of OS Dependent Functions for FatFs */ +/* (C)ChaN, 2018 */ +/*------------------------------------------------------------------------*/ + + +#include "ff.h" + + +#if FF_USE_LFN == 3 /* Dynamic memory allocation */ + +/*------------------------------------------------------------------------*/ +/* Allocate a memory block */ +/*------------------------------------------------------------------------*/ + +void* ff_memalloc ( /* Returns pointer to the allocated memory block (null if not enough core) */ + UINT msize /* Number of bytes to allocate */ +) +{ + return malloc(msize); /* Allocate a new memory block with POSIX API */ +} + + +/*------------------------------------------------------------------------*/ +/* Free a memory block */ +/*------------------------------------------------------------------------*/ + +void ff_memfree ( + void* mblock /* Pointer to the memory block to free (nothing to do if null) */ +) +{ + free(mblock); /* Free the memory block with POSIX API */ +} + +#endif + + + +#if FF_FS_REENTRANT /* Mutal exclusion */ + +/*------------------------------------------------------------------------*/ +/* Create a Synchronization Object */ +/*------------------------------------------------------------------------*/ +/* This function is called in f_mount() function to create a new +/ synchronization object for the volume, such as semaphore and mutex. +/ When a 0 is returned, the f_mount() function fails with FR_INT_ERR. +*/ + +//const osMutexDef_t Mutex[FF_VOLUMES]; /* Table of CMSIS-RTOS mutex */ + + +int ff_cre_syncobj ( /* 1:Function succeeded, 0:Could not create the sync object */ + BYTE vol, /* Corresponding volume (logical drive number) */ + FF_SYNC_t* sobj /* Pointer to return the created sync object */ +) +{ + /* Win32 */ + *sobj = CreateMutex(NULL, FALSE, NULL); + return (int)(*sobj != INVALID_HANDLE_VALUE); + + /* uITRON */ +// T_CSEM csem = {TA_TPRI,1,1}; +// *sobj = acre_sem(&csem); +// return (int)(*sobj > 0); + + /* uC/OS-II */ +// OS_ERR err; +// *sobj = OSMutexCreate(0, &err); +// return (int)(err == OS_NO_ERR); + + /* FreeRTOS */ +// *sobj = xSemaphoreCreateMutex(); +// return (int)(*sobj != NULL); + + /* CMSIS-RTOS */ +// *sobj = osMutexCreate(&Mutex[vol]); +// return (int)(*sobj != NULL); +} + + +/*------------------------------------------------------------------------*/ +/* Delete a Synchronization Object */ +/*------------------------------------------------------------------------*/ +/* This function is called in f_mount() function to delete a synchronization +/ object that created with ff_cre_syncobj() function. When a 0 is returned, +/ the f_mount() function fails with FR_INT_ERR. +*/ + +int ff_del_syncobj ( /* 1:Function succeeded, 0:Could not delete due to an error */ + FF_SYNC_t sobj /* Sync object tied to the logical drive to be deleted */ +) +{ + /* Win32 */ + return (int)CloseHandle(sobj); + + /* uITRON */ +// return (int)(del_sem(sobj) == E_OK); + + /* uC/OS-II */ +// OS_ERR err; +// OSMutexDel(sobj, OS_DEL_ALWAYS, &err); +// return (int)(err == OS_NO_ERR); + + /* FreeRTOS */ +// vSemaphoreDelete(sobj); +// return 1; + + /* CMSIS-RTOS */ +// return (int)(osMutexDelete(sobj) == osOK); +} + + +/*------------------------------------------------------------------------*/ +/* Request Grant to Access the Volume */ +/*------------------------------------------------------------------------*/ +/* This function is called on entering file functions to lock the volume. +/ When a 0 is returned, the file function fails with FR_TIMEOUT. +*/ + +int ff_req_grant ( /* 1:Got a grant to access the volume, 0:Could not get a grant */ + FF_SYNC_t sobj /* Sync object to wait */ +) +{ + /* Win32 */ + return (int)(WaitForSingleObject(sobj, FF_FS_TIMEOUT) == WAIT_OBJECT_0); + + /* uITRON */ +// return (int)(wai_sem(sobj) == E_OK); + + /* uC/OS-II */ +// OS_ERR err; +// OSMutexPend(sobj, FF_FS_TIMEOUT, &err)); +// return (int)(err == OS_NO_ERR); + + /* FreeRTOS */ +// return (int)(xSemaphoreTake(sobj, FF_FS_TIMEOUT) == pdTRUE); + + /* CMSIS-RTOS */ +// return (int)(osMutexWait(sobj, FF_FS_TIMEOUT) == osOK); +} + + +/*------------------------------------------------------------------------*/ +/* Release Grant to Access the Volume */ +/*------------------------------------------------------------------------*/ +/* This function is called on leaving file functions to unlock the volume. +*/ + +void ff_rel_grant ( + FF_SYNC_t sobj /* Sync object to be signaled */ +) +{ + /* Win32 */ + ReleaseMutex(sobj); + + /* uITRON */ +// sig_sem(sobj); + + /* uC/OS-II */ +// OSMutexPost(sobj); + + /* FreeRTOS */ +// xSemaphoreGive(sobj); + + /* CMSIS-RTOS */ +// osMutexRelease(sobj); +} + +#endif + diff --git a/components/fatfs/ffunicode.c b/components/fatfs/ffunicode.c new file mode 100644 index 00000000..1196eb34 --- /dev/null +++ b/components/fatfs/ffunicode.c @@ -0,0 +1,15596 @@ +/*------------------------------------------------------------------------*/ +/* Unicode handling functions for FatFs R0.13+ */ +/*------------------------------------------------------------------------*/ +/* This module will occupy a huge memory in the .const section when the / +/ FatFs is configured for LFN with DBCS. If the system has any Unicode / +/ utilitiy for the code conversion, this module should be modified to use / +/ that function to avoid silly memory consumption. / +/-------------------------------------------------------------------------*/ +/* +/ Copyright (C) 2014, ChaN, all right reserved. +/ +/ FatFs module is an open source software. Redistribution and use of FatFs in +/ source and binary forms, with or without modification, are permitted provided +/ that the following condition is met: +/ +/ 1. Redistributions of source code must retain the above copyright notice, +/ this condition and the following disclaimer. +/ +/ This software is provided by the copyright holder and contributors "AS IS" +/ and any warranties related to this software are DISCLAIMED. +/ The copyright owner or contributors be NOT LIABLE for any damages caused +/ by use of this software. +*/ + + +#include "ff.h" + +#if FF_USE_LFN /* This module will be blanked if non-LFN configuration */ + +#define MERGE2(a, b) a ## b +#define CVTBL(tbl, cp) MERGE2(tbl, cp) + + +/*------------------------------------------------------------------------*/ +/* Code Conversion Tables */ +/*------------------------------------------------------------------------*/ + +#if FF_CODE_PAGE == 932 || FF_CODE_PAGE == 0 /* Japanese */ +static const WCHAR uni2oem932[] = { /* Unicode --> Shift_JIS pairs */ + 0x00A7, 0x8198, 0x00A8, 0x814E, 0x00B0, 0x818B, 0x00B1, 0x817D, 0x00B4, 0x814C, 0x00B6, 0x81F7, 0x00D7, 0x817E, 0x00F7, 0x8180, + 0x0391, 0x839F, 0x0392, 0x83A0, 0x0393, 0x83A1, 0x0394, 0x83A2, 0x0395, 0x83A3, 0x0396, 0x83A4, 0x0397, 0x83A5, 0x0398, 0x83A6, + 0x0399, 0x83A7, 0x039A, 0x83A8, 0x039B, 0x83A9, 0x039C, 0x83AA, 0x039D, 0x83AB, 0x039E, 0x83AC, 0x039F, 0x83AD, 0x03A0, 0x83AE, + 0x03A1, 0x83AF, 0x03A3, 0x83B0, 0x03A4, 0x83B1, 0x03A5, 0x83B2, 0x03A6, 0x83B3, 0x03A7, 0x83B4, 0x03A8, 0x83B5, 0x03A9, 0x83B6, + 0x03B1, 0x83BF, 0x03B2, 0x83C0, 0x03B3, 0x83C1, 0x03B4, 0x83C2, 0x03B5, 0x83C3, 0x03B6, 0x83C4, 0x03B7, 0x83C5, 0x03B8, 0x83C6, + 0x03B9, 0x83C7, 0x03BA, 0x83C8, 0x03BB, 0x83C9, 0x03BC, 0x83CA, 0x03BD, 0x83CB, 0x03BE, 0x83CC, 0x03BF, 0x83CD, 0x03C0, 0x83CE, + 0x03C1, 0x83CF, 0x03C3, 0x83D0, 0x03C4, 0x83D1, 0x03C5, 0x83D2, 0x03C6, 0x83D3, 0x03C7, 0x83D4, 0x03C8, 0x83D5, 0x03C9, 0x83D6, + 0x0401, 0x8446, 0x0410, 0x8440, 0x0411, 0x8441, 0x0412, 0x8442, 0x0413, 0x8443, 0x0414, 0x8444, 0x0415, 0x8445, 0x0416, 0x8447, + 0x0417, 0x8448, 0x0418, 0x8449, 0x0419, 0x844A, 0x041A, 0x844B, 0x041B, 0x844C, 0x041C, 0x844D, 0x041D, 0x844E, 0x041E, 0x844F, + 0x041F, 0x8450, 0x0420, 0x8451, 0x0421, 0x8452, 0x0422, 0x8453, 0x0423, 0x8454, 0x0424, 0x8455, 0x0425, 0x8456, 0x0426, 0x8457, + 0x0427, 0x8458, 0x0428, 0x8459, 0x0429, 0x845A, 0x042A, 0x845B, 0x042B, 0x845C, 0x042C, 0x845D, 0x042D, 0x845E, 0x042E, 0x845F, + 0x042F, 0x8460, 0x0430, 0x8470, 0x0431, 0x8471, 0x0432, 0x8472, 0x0433, 0x8473, 0x0434, 0x8474, 0x0435, 0x8475, 0x0436, 0x8477, + 0x0437, 0x8478, 0x0438, 0x8479, 0x0439, 0x847A, 0x043A, 0x847B, 0x043B, 0x847C, 0x043C, 0x847D, 0x043D, 0x847E, 0x043E, 0x8480, + 0x043F, 0x8481, 0x0440, 0x8482, 0x0441, 0x8483, 0x0442, 0x8484, 0x0443, 0x8485, 0x0444, 0x8486, 0x0445, 0x8487, 0x0446, 0x8488, + 0x0447, 0x8489, 0x0448, 0x848A, 0x0449, 0x848B, 0x044A, 0x848C, 0x044B, 0x848D, 0x044C, 0x848E, 0x044D, 0x848F, 0x044E, 0x8490, + 0x044F, 0x8491, 0x0451, 0x8476, 0x2010, 0x815D, 0x2015, 0x815C, 0x2018, 0x8165, 0x2019, 0x8166, 0x201C, 0x8167, 0x201D, 0x8168, + 0x2020, 0x81F5, 0x2021, 0x81F6, 0x2025, 0x8164, 0x2026, 0x8163, 0x2030, 0x81F1, 0x2032, 0x818C, 0x2033, 0x818D, 0x203B, 0x81A6, + 0x2103, 0x818E, 0x2116, 0x8782, 0x2121, 0x8784, 0x212B, 0x81F0, 0x2160, 0x8754, 0x2161, 0x8755, 0x2162, 0x8756, 0x2163, 0x8757, + 0x2164, 0x8758, 0x2165, 0x8759, 0x2166, 0x875A, 0x2167, 0x875B, 0x2168, 0x875C, 0x2169, 0x875D, 0x2170, 0xFA40, 0x2171, 0xFA41, + 0x2172, 0xFA42, 0x2173, 0xFA43, 0x2174, 0xFA44, 0x2175, 0xFA45, 0x2176, 0xFA46, 0x2177, 0xFA47, 0x2178, 0xFA48, 0x2179, 0xFA49, + 0x2190, 0x81A9, 0x2191, 0x81AA, 0x2192, 0x81A8, 0x2193, 0x81AB, 0x21D2, 0x81CB, 0x21D4, 0x81CC, 0x2200, 0x81CD, 0x2202, 0x81DD, + 0x2203, 0x81CE, 0x2207, 0x81DE, 0x2208, 0x81B8, 0x220B, 0x81B9, 0x2211, 0x8794, 0x221A, 0x81E3, 0x221D, 0x81E5, 0x221E, 0x8187, + 0x221F, 0x8798, 0x2220, 0x81DA, 0x2225, 0x8161, 0x2227, 0x81C8, 0x2228, 0x81C9, 0x2229, 0x81BF, 0x222A, 0x81BE, 0x222B, 0x81E7, + 0x222C, 0x81E8, 0x222E, 0x8793, 0x2234, 0x8188, 0x2235, 0x81E6, 0x223D, 0x81E4, 0x2252, 0x81E0, 0x2260, 0x8182, 0x2261, 0x81DF, + 0x2266, 0x8185, 0x2267, 0x8186, 0x226A, 0x81E1, 0x226B, 0x81E2, 0x2282, 0x81BC, 0x2283, 0x81BD, 0x2286, 0x81BA, 0x2287, 0x81BB, + 0x22A5, 0x81DB, 0x22BF, 0x8799, 0x2312, 0x81DC, 0x2460, 0x8740, 0x2461, 0x8741, 0x2462, 0x8742, 0x2463, 0x8743, 0x2464, 0x8744, + 0x2465, 0x8745, 0x2466, 0x8746, 0x2467, 0x8747, 0x2468, 0x8748, 0x2469, 0x8749, 0x246A, 0x874A, 0x246B, 0x874B, 0x246C, 0x874C, + 0x246D, 0x874D, 0x246E, 0x874E, 0x246F, 0x874F, 0x2470, 0x8750, 0x2471, 0x8751, 0x2472, 0x8752, 0x2473, 0x8753, 0x2500, 0x849F, + 0x2501, 0x84AA, 0x2502, 0x84A0, 0x2503, 0x84AB, 0x250C, 0x84A1, 0x250F, 0x84AC, 0x2510, 0x84A2, 0x2513, 0x84AD, 0x2514, 0x84A4, + 0x2517, 0x84AF, 0x2518, 0x84A3, 0x251B, 0x84AE, 0x251C, 0x84A5, 0x251D, 0x84BA, 0x2520, 0x84B5, 0x2523, 0x84B0, 0x2524, 0x84A7, + 0x2525, 0x84BC, 0x2528, 0x84B7, 0x252B, 0x84B2, 0x252C, 0x84A6, 0x252F, 0x84B6, 0x2530, 0x84BB, 0x2533, 0x84B1, 0x2534, 0x84A8, + 0x2537, 0x84B8, 0x2538, 0x84BD, 0x253B, 0x84B3, 0x253C, 0x84A9, 0x253F, 0x84B9, 0x2542, 0x84BE, 0x254B, 0x84B4, 0x25A0, 0x81A1, + 0x25A1, 0x81A0, 0x25B2, 0x81A3, 0x25B3, 0x81A2, 0x25BC, 0x81A5, 0x25BD, 0x81A4, 0x25C6, 0x819F, 0x25C7, 0x819E, 0x25CB, 0x819B, + 0x25CE, 0x819D, 0x25CF, 0x819C, 0x25EF, 0x81FC, 0x2605, 0x819A, 0x2606, 0x8199, 0x2640, 0x818A, 0x2642, 0x8189, 0x266A, 0x81F4, + 0x266D, 0x81F3, 0x266F, 0x81F2, 0x3000, 0x8140, 0x3001, 0x8141, 0x3002, 0x8142, 0x3003, 0x8156, 0x3005, 0x8158, 0x3006, 0x8159, + 0x3007, 0x815A, 0x3008, 0x8171, 0x3009, 0x8172, 0x300A, 0x8173, 0x300B, 0x8174, 0x300C, 0x8175, 0x300D, 0x8176, 0x300E, 0x8177, + 0x300F, 0x8178, 0x3010, 0x8179, 0x3011, 0x817A, 0x3012, 0x81A7, 0x3013, 0x81AC, 0x3014, 0x816B, 0x3015, 0x816C, 0x301D, 0x8780, + 0x301F, 0x8781, 0x3041, 0x829F, 0x3042, 0x82A0, 0x3043, 0x82A1, 0x3044, 0x82A2, 0x3045, 0x82A3, 0x3046, 0x82A4, 0x3047, 0x82A5, + 0x3048, 0x82A6, 0x3049, 0x82A7, 0x304A, 0x82A8, 0x304B, 0x82A9, 0x304C, 0x82AA, 0x304D, 0x82AB, 0x304E, 0x82AC, 0x304F, 0x82AD, + 0x3050, 0x82AE, 0x3051, 0x82AF, 0x3052, 0x82B0, 0x3053, 0x82B1, 0x3054, 0x82B2, 0x3055, 0x82B3, 0x3056, 0x82B4, 0x3057, 0x82B5, + 0x3058, 0x82B6, 0x3059, 0x82B7, 0x305A, 0x82B8, 0x305B, 0x82B9, 0x305C, 0x82BA, 0x305D, 0x82BB, 0x305E, 0x82BC, 0x305F, 0x82BD, + 0x3060, 0x82BE, 0x3061, 0x82BF, 0x3062, 0x82C0, 0x3063, 0x82C1, 0x3064, 0x82C2, 0x3065, 0x82C3, 0x3066, 0x82C4, 0x3067, 0x82C5, + 0x3068, 0x82C6, 0x3069, 0x82C7, 0x306A, 0x82C8, 0x306B, 0x82C9, 0x306C, 0x82CA, 0x306D, 0x82CB, 0x306E, 0x82CC, 0x306F, 0x82CD, + 0x3070, 0x82CE, 0x3071, 0x82CF, 0x3072, 0x82D0, 0x3073, 0x82D1, 0x3074, 0x82D2, 0x3075, 0x82D3, 0x3076, 0x82D4, 0x3077, 0x82D5, + 0x3078, 0x82D6, 0x3079, 0x82D7, 0x307A, 0x82D8, 0x307B, 0x82D9, 0x307C, 0x82DA, 0x307D, 0x82DB, 0x307E, 0x82DC, 0x307F, 0x82DD, + 0x3080, 0x82DE, 0x3081, 0x82DF, 0x3082, 0x82E0, 0x3083, 0x82E1, 0x3084, 0x82E2, 0x3085, 0x82E3, 0x3086, 0x82E4, 0x3087, 0x82E5, + 0x3088, 0x82E6, 0x3089, 0x82E7, 0x308A, 0x82E8, 0x308B, 0x82E9, 0x308C, 0x82EA, 0x308D, 0x82EB, 0x308E, 0x82EC, 0x308F, 0x82ED, + 0x3090, 0x82EE, 0x3091, 0x82EF, 0x3092, 0x82F0, 0x3093, 0x82F1, 0x309B, 0x814A, 0x309C, 0x814B, 0x309D, 0x8154, 0x309E, 0x8155, + 0x30A1, 0x8340, 0x30A2, 0x8341, 0x30A3, 0x8342, 0x30A4, 0x8343, 0x30A5, 0x8344, 0x30A6, 0x8345, 0x30A7, 0x8346, 0x30A8, 0x8347, + 0x30A9, 0x8348, 0x30AA, 0x8349, 0x30AB, 0x834A, 0x30AC, 0x834B, 0x30AD, 0x834C, 0x30AE, 0x834D, 0x30AF, 0x834E, 0x30B0, 0x834F, + 0x30B1, 0x8350, 0x30B2, 0x8351, 0x30B3, 0x8352, 0x30B4, 0x8353, 0x30B5, 0x8354, 0x30B6, 0x8355, 0x30B7, 0x8356, 0x30B8, 0x8357, + 0x30B9, 0x8358, 0x30BA, 0x8359, 0x30BB, 0x835A, 0x30BC, 0x835B, 0x30BD, 0x835C, 0x30BE, 0x835D, 0x30BF, 0x835E, 0x30C0, 0x835F, + 0x30C1, 0x8360, 0x30C2, 0x8361, 0x30C3, 0x8362, 0x30C4, 0x8363, 0x30C5, 0x8364, 0x30C6, 0x8365, 0x30C7, 0x8366, 0x30C8, 0x8367, + 0x30C9, 0x8368, 0x30CA, 0x8369, 0x30CB, 0x836A, 0x30CC, 0x836B, 0x30CD, 0x836C, 0x30CE, 0x836D, 0x30CF, 0x836E, 0x30D0, 0x836F, + 0x30D1, 0x8370, 0x30D2, 0x8371, 0x30D3, 0x8372, 0x30D4, 0x8373, 0x30D5, 0x8374, 0x30D6, 0x8375, 0x30D7, 0x8376, 0x30D8, 0x8377, + 0x30D9, 0x8378, 0x30DA, 0x8379, 0x30DB, 0x837A, 0x30DC, 0x837B, 0x30DD, 0x837C, 0x30DE, 0x837D, 0x30DF, 0x837E, 0x30E0, 0x8380, + 0x30E1, 0x8381, 0x30E2, 0x8382, 0x30E3, 0x8383, 0x30E4, 0x8384, 0x30E5, 0x8385, 0x30E6, 0x8386, 0x30E7, 0x8387, 0x30E8, 0x8388, + 0x30E9, 0x8389, 0x30EA, 0x838A, 0x30EB, 0x838B, 0x30EC, 0x838C, 0x30ED, 0x838D, 0x30EE, 0x838E, 0x30EF, 0x838F, 0x30F0, 0x8390, + 0x30F1, 0x8391, 0x30F2, 0x8392, 0x30F3, 0x8393, 0x30F4, 0x8394, 0x30F5, 0x8395, 0x30F6, 0x8396, 0x30FB, 0x8145, 0x30FC, 0x815B, + 0x30FD, 0x8152, 0x30FE, 0x8153, 0x3231, 0x878A, 0x3232, 0x878B, 0x3239, 0x878C, 0x32A4, 0x8785, 0x32A5, 0x8786, 0x32A6, 0x8787, + 0x32A7, 0x8788, 0x32A8, 0x8789, 0x3303, 0x8765, 0x330D, 0x8769, 0x3314, 0x8760, 0x3318, 0x8763, 0x3322, 0x8761, 0x3323, 0x876B, + 0x3326, 0x876A, 0x3327, 0x8764, 0x332B, 0x876C, 0x3336, 0x8766, 0x333B, 0x876E, 0x3349, 0x875F, 0x334A, 0x876D, 0x334D, 0x8762, + 0x3351, 0x8767, 0x3357, 0x8768, 0x337B, 0x877E, 0x337C, 0x878F, 0x337D, 0x878E, 0x337E, 0x878D, 0x338E, 0x8772, 0x338F, 0x8773, + 0x339C, 0x876F, 0x339D, 0x8770, 0x339E, 0x8771, 0x33A1, 0x8775, 0x33C4, 0x8774, 0x33CD, 0x8783, 0x4E00, 0x88EA, 0x4E01, 0x929A, + 0x4E03, 0x8EB5, 0x4E07, 0x969C, 0x4E08, 0x8FE4, 0x4E09, 0x8E4F, 0x4E0A, 0x8FE3, 0x4E0B, 0x89BA, 0x4E0D, 0x9573, 0x4E0E, 0x975E, + 0x4E10, 0x98A0, 0x4E11, 0x894E, 0x4E14, 0x8A8E, 0x4E15, 0x98A1, 0x4E16, 0x90A2, 0x4E17, 0x99C0, 0x4E18, 0x8B75, 0x4E19, 0x95B8, + 0x4E1E, 0x8FE5, 0x4E21, 0x97BC, 0x4E26, 0x95C0, 0x4E28, 0xFA68, 0x4E2A, 0x98A2, 0x4E2D, 0x9286, 0x4E31, 0x98A3, 0x4E32, 0x8BF8, + 0x4E36, 0x98A4, 0x4E38, 0x8ADB, 0x4E39, 0x924F, 0x4E3B, 0x8EE5, 0x4E3C, 0x98A5, 0x4E3F, 0x98A6, 0x4E42, 0x98A7, 0x4E43, 0x9454, + 0x4E45, 0x8B76, 0x4E4B, 0x9456, 0x4E4D, 0x93E1, 0x4E4E, 0x8CC1, 0x4E4F, 0x9652, 0x4E55, 0xE568, 0x4E56, 0x98A8, 0x4E57, 0x8FE6, + 0x4E58, 0x98A9, 0x4E59, 0x89B3, 0x4E5D, 0x8BE3, 0x4E5E, 0x8CEE, 0x4E5F, 0x96E7, 0x4E62, 0x9BA4, 0x4E71, 0x9790, 0x4E73, 0x93FB, + 0x4E7E, 0x8AA3, 0x4E80, 0x8B54, 0x4E82, 0x98AA, 0x4E85, 0x98AB, 0x4E86, 0x97B9, 0x4E88, 0x975C, 0x4E89, 0x9188, 0x4E8A, 0x98AD, + 0x4E8B, 0x8E96, 0x4E8C, 0x93F1, 0x4E8E, 0x98B0, 0x4E91, 0x895D, 0x4E92, 0x8CDD, 0x4E94, 0x8CDC, 0x4E95, 0x88E4, 0x4E98, 0x986A, + 0x4E99, 0x9869, 0x4E9B, 0x8DB1, 0x4E9C, 0x889F, 0x4E9E, 0x98B1, 0x4E9F, 0x98B2, 0x4EA0, 0x98B3, 0x4EA1, 0x9653, 0x4EA2, 0x98B4, + 0x4EA4, 0x8CF0, 0x4EA5, 0x88E5, 0x4EA6, 0x9692, 0x4EA8, 0x8B9C, 0x4EAB, 0x8B9D, 0x4EAC, 0x8B9E, 0x4EAD, 0x92E0, 0x4EAE, 0x97BA, + 0x4EB0, 0x98B5, 0x4EB3, 0x98B6, 0x4EB6, 0x98B7, 0x4EBA, 0x906C, 0x4EC0, 0x8F59, 0x4EC1, 0x906D, 0x4EC2, 0x98BC, 0x4EC4, 0x98BA, + 0x4EC6, 0x98BB, 0x4EC7, 0x8B77, 0x4ECA, 0x8DA1, 0x4ECB, 0x89EE, 0x4ECD, 0x98B9, 0x4ECE, 0x98B8, 0x4ECF, 0x95A7, 0x4ED4, 0x8E65, + 0x4ED5, 0x8E64, 0x4ED6, 0x91BC, 0x4ED7, 0x98BD, 0x4ED8, 0x9574, 0x4ED9, 0x90E5, 0x4EDD, 0x8157, 0x4EDE, 0x98BE, 0x4EDF, 0x98C0, + 0x4EE1, 0xFA69, 0x4EE3, 0x91E3, 0x4EE4, 0x97DF, 0x4EE5, 0x88C8, 0x4EED, 0x98BF, 0x4EEE, 0x89BC, 0x4EF0, 0x8BC2, 0x4EF2, 0x9287, + 0x4EF6, 0x8C8F, 0x4EF7, 0x98C1, 0x4EFB, 0x9443, 0x4EFC, 0xFA6A, 0x4F00, 0xFA6B, 0x4F01, 0x8AE9, 0x4F03, 0xFA6C, 0x4F09, 0x98C2, + 0x4F0A, 0x88C9, 0x4F0D, 0x8CDE, 0x4F0E, 0x8AEA, 0x4F0F, 0x959A, 0x4F10, 0x94B0, 0x4F11, 0x8B78, 0x4F1A, 0x89EF, 0x4F1C, 0x98E5, + 0x4F1D, 0x9360, 0x4F2F, 0x948C, 0x4F30, 0x98C4, 0x4F34, 0x94BA, 0x4F36, 0x97E0, 0x4F38, 0x904C, 0x4F39, 0xFA6D, 0x4F3A, 0x8E66, + 0x4F3C, 0x8E97, 0x4F3D, 0x89BE, 0x4F43, 0x92CF, 0x4F46, 0x9241, 0x4F47, 0x98C8, 0x4F4D, 0x88CA, 0x4F4E, 0x92E1, 0x4F4F, 0x8F5A, + 0x4F50, 0x8DB2, 0x4F51, 0x9743, 0x4F53, 0x91CC, 0x4F55, 0x89BD, 0x4F56, 0xFA6E, 0x4F57, 0x98C7, 0x4F59, 0x975D, 0x4F5A, 0x98C3, + 0x4F5B, 0x98C5, 0x4F5C, 0x8DEC, 0x4F5D, 0x98C6, 0x4F5E, 0x9B43, 0x4F69, 0x98CE, 0x4F6F, 0x98D1, 0x4F70, 0x98CF, 0x4F73, 0x89C0, + 0x4F75, 0x95B9, 0x4F76, 0x98C9, 0x4F7B, 0x98CD, 0x4F7C, 0x8CF1, 0x4F7F, 0x8E67, 0x4F83, 0x8AA4, 0x4F86, 0x98D2, 0x4F88, 0x98CA, + 0x4F8A, 0xFA70, 0x4F8B, 0x97E1, 0x4F8D, 0x8E98, 0x4F8F, 0x98CB, 0x4F91, 0x98D0, 0x4F92, 0xFA6F, 0x4F94, 0xFA72, 0x4F96, 0x98D3, + 0x4F98, 0x98CC, 0x4F9A, 0xFA71, 0x4F9B, 0x8B9F, 0x4F9D, 0x88CB, 0x4FA0, 0x8BA0, 0x4FA1, 0x89BF, 0x4FAB, 0x9B44, 0x4FAD, 0x9699, + 0x4FAE, 0x958E, 0x4FAF, 0x8CF2, 0x4FB5, 0x904E, 0x4FB6, 0x97B5, 0x4FBF, 0x95D6, 0x4FC2, 0x8C57, 0x4FC3, 0x91A3, 0x4FC4, 0x89E2, + 0x4FC9, 0xFA61, 0x4FCA, 0x8F72, 0x4FCD, 0xFA73, 0x4FCE, 0x98D7, 0x4FD0, 0x98DC, 0x4FD1, 0x98DA, 0x4FD4, 0x98D5, 0x4FD7, 0x91AD, + 0x4FD8, 0x98D8, 0x4FDA, 0x98DB, 0x4FDB, 0x98D9, 0x4FDD, 0x95DB, 0x4FDF, 0x98D6, 0x4FE1, 0x904D, 0x4FE3, 0x9693, 0x4FE4, 0x98DD, + 0x4FE5, 0x98DE, 0x4FEE, 0x8F43, 0x4FEF, 0x98EB, 0x4FF3, 0x946F, 0x4FF5, 0x9555, 0x4FF6, 0x98E6, 0x4FF8, 0x95EE, 0x4FFA, 0x89B4, + 0x4FFE, 0x98EA, 0x4FFF, 0xFA76, 0x5005, 0x98E4, 0x5006, 0x98ED, 0x5009, 0x9171, 0x500B, 0x8CC2, 0x500D, 0x947B, 0x500F, 0xE0C5, + 0x5011, 0x98EC, 0x5012, 0x937C, 0x5014, 0x98E1, 0x5016, 0x8CF4, 0x5019, 0x8CF3, 0x501A, 0x98DF, 0x501E, 0xFA77, 0x501F, 0x8ED8, + 0x5021, 0x98E7, 0x5022, 0xFA75, 0x5023, 0x95ED, 0x5024, 0x926C, 0x5025, 0x98E3, 0x5026, 0x8C91, 0x5028, 0x98E0, 0x5029, 0x98E8, + 0x502A, 0x98E2, 0x502B, 0x97CF, 0x502C, 0x98E9, 0x502D, 0x9860, 0x5036, 0x8BE4, 0x5039, 0x8C90, 0x5040, 0xFA74, 0x5042, 0xFA7A, + 0x5043, 0x98EE, 0x5046, 0xFA78, 0x5047, 0x98EF, 0x5048, 0x98F3, 0x5049, 0x88CC, 0x504F, 0x95CE, 0x5050, 0x98F2, 0x5055, 0x98F1, + 0x5056, 0x98F5, 0x505A, 0x98F4, 0x505C, 0x92E2, 0x5065, 0x8C92, 0x506C, 0x98F6, 0x5070, 0xFA79, 0x5072, 0x8EC3, 0x5074, 0x91A4, + 0x5075, 0x92E3, 0x5076, 0x8BF4, 0x5078, 0x98F7, 0x507D, 0x8B55, 0x5080, 0x98F8, 0x5085, 0x98FA, 0x508D, 0x9654, 0x5091, 0x8C86, + 0x5094, 0xFA7B, 0x5098, 0x8E50, 0x5099, 0x94F5, 0x509A, 0x98F9, 0x50AC, 0x8DC3, 0x50AD, 0x9762, 0x50B2, 0x98FC, 0x50B3, 0x9942, + 0x50B4, 0x98FB, 0x50B5, 0x8DC2, 0x50B7, 0x8F9D, 0x50BE, 0x8C58, 0x50C2, 0x9943, 0x50C5, 0x8BCD, 0x50C9, 0x9940, 0x50CA, 0x9941, + 0x50CD, 0x93AD, 0x50CF, 0x919C, 0x50D1, 0x8BA1, 0x50D5, 0x966C, 0x50D6, 0x9944, 0x50D8, 0xFA7D, 0x50DA, 0x97BB, 0x50DE, 0x9945, + 0x50E3, 0x9948, 0x50E5, 0x9946, 0x50E7, 0x916D, 0x50ED, 0x9947, 0x50EE, 0x9949, 0x50F4, 0xFA7C, 0x50F5, 0x994B, 0x50F9, 0x994A, + 0x50FB, 0x95C6, 0x5100, 0x8B56, 0x5101, 0x994D, 0x5102, 0x994E, 0x5104, 0x89AD, 0x5109, 0x994C, 0x5112, 0x8EF2, 0x5114, 0x9951, + 0x5115, 0x9950, 0x5116, 0x994F, 0x5118, 0x98D4, 0x511A, 0x9952, 0x511F, 0x8F9E, 0x5121, 0x9953, 0x512A, 0x9744, 0x5132, 0x96D7, + 0x5137, 0x9955, 0x513A, 0x9954, 0x513B, 0x9957, 0x513C, 0x9956, 0x513F, 0x9958, 0x5140, 0x9959, 0x5141, 0x88F2, 0x5143, 0x8CB3, + 0x5144, 0x8C5A, 0x5145, 0x8F5B, 0x5146, 0x929B, 0x5147, 0x8BA2, 0x5148, 0x90E6, 0x5149, 0x8CF5, 0x514A, 0xFA7E, 0x514B, 0x8D8E, + 0x514C, 0x995B, 0x514D, 0x96C6, 0x514E, 0x9365, 0x5150, 0x8E99, 0x5152, 0x995A, 0x5154, 0x995C, 0x515A, 0x937D, 0x515C, 0x8A95, + 0x5162, 0x995D, 0x5164, 0xFA80, 0x5165, 0x93FC, 0x5168, 0x9153, 0x5169, 0x995F, 0x516A, 0x9960, 0x516B, 0x94AA, 0x516C, 0x8CF6, + 0x516D, 0x985A, 0x516E, 0x9961, 0x5171, 0x8BA4, 0x5175, 0x95BA, 0x5176, 0x91B4, 0x5177, 0x8BEF, 0x5178, 0x9354, 0x517C, 0x8C93, + 0x5180, 0x9962, 0x5182, 0x9963, 0x5185, 0x93E0, 0x5186, 0x897E, 0x5189, 0x9966, 0x518A, 0x8DFB, 0x518C, 0x9965, 0x518D, 0x8DC4, + 0x518F, 0x9967, 0x5190, 0xE3EC, 0x5191, 0x9968, 0x5192, 0x9660, 0x5193, 0x9969, 0x5195, 0x996A, 0x5196, 0x996B, 0x5197, 0x8FE7, + 0x5199, 0x8ECA, 0x519D, 0xFA81, 0x51A0, 0x8AA5, 0x51A2, 0x996E, 0x51A4, 0x996C, 0x51A5, 0x96BB, 0x51A6, 0x996D, 0x51A8, 0x9579, + 0x51A9, 0x996F, 0x51AA, 0x9970, 0x51AB, 0x9971, 0x51AC, 0x937E, 0x51B0, 0x9975, 0x51B1, 0x9973, 0x51B2, 0x9974, 0x51B3, 0x9972, + 0x51B4, 0x8DE1, 0x51B5, 0x9976, 0x51B6, 0x96E8, 0x51B7, 0x97E2, 0x51BD, 0x9977, 0x51BE, 0xFA82, 0x51C4, 0x90A6, 0x51C5, 0x9978, + 0x51C6, 0x8F79, 0x51C9, 0x9979, 0x51CB, 0x929C, 0x51CC, 0x97BD, 0x51CD, 0x9380, 0x51D6, 0x99C3, 0x51DB, 0x997A, 0x51DC, 0xEAA3, + 0x51DD, 0x8BC3, 0x51E0, 0x997B, 0x51E1, 0x967D, 0x51E6, 0x8F88, 0x51E7, 0x91FA, 0x51E9, 0x997D, 0x51EA, 0x93E2, 0x51EC, 0xFA83, + 0x51ED, 0x997E, 0x51F0, 0x9980, 0x51F1, 0x8A4D, 0x51F5, 0x9981, 0x51F6, 0x8BA5, 0x51F8, 0x93CA, 0x51F9, 0x899A, 0x51FA, 0x8F6F, + 0x51FD, 0x949F, 0x51FE, 0x9982, 0x5200, 0x9381, 0x5203, 0x906E, 0x5204, 0x9983, 0x5206, 0x95AA, 0x5207, 0x90D8, 0x5208, 0x8AA0, + 0x520A, 0x8AA7, 0x520B, 0x9984, 0x520E, 0x9986, 0x5211, 0x8C59, 0x5214, 0x9985, 0x5215, 0xFA84, 0x5217, 0x97F1, 0x521D, 0x8F89, + 0x5224, 0x94BB, 0x5225, 0x95CA, 0x5227, 0x9987, 0x5229, 0x9798, 0x522A, 0x9988, 0x522E, 0x9989, 0x5230, 0x939E, 0x5233, 0x998A, + 0x5236, 0x90A7, 0x5237, 0x8DFC, 0x5238, 0x8C94, 0x5239, 0x998B, 0x523A, 0x8E68, 0x523B, 0x8D8F, 0x5243, 0x92E4, 0x5244, 0x998D, + 0x5247, 0x91A5, 0x524A, 0x8DED, 0x524B, 0x998E, 0x524C, 0x998F, 0x524D, 0x914F, 0x524F, 0x998C, 0x5254, 0x9991, 0x5256, 0x9655, + 0x525B, 0x8D84, 0x525E, 0x9990, 0x5263, 0x8C95, 0x5264, 0x8DDC, 0x5265, 0x948D, 0x5269, 0x9994, 0x526A, 0x9992, 0x526F, 0x959B, + 0x5270, 0x8FE8, 0x5271, 0x999B, 0x5272, 0x8A84, 0x5273, 0x9995, 0x5274, 0x9993, 0x5275, 0x916E, 0x527D, 0x9997, 0x527F, 0x9996, + 0x5283, 0x8A63, 0x5287, 0x8C80, 0x5288, 0x999C, 0x5289, 0x97AB, 0x528D, 0x9998, 0x5291, 0x999D, 0x5292, 0x999A, 0x5294, 0x9999, + 0x529B, 0x97CD, 0x529C, 0xFA85, 0x529F, 0x8CF7, 0x52A0, 0x89C1, 0x52A3, 0x97F2, 0x52A6, 0xFA86, 0x52A9, 0x8F95, 0x52AA, 0x9377, + 0x52AB, 0x8D85, 0x52AC, 0x99A0, 0x52AD, 0x99A1, 0x52AF, 0xFB77, 0x52B1, 0x97E3, 0x52B4, 0x984A, 0x52B5, 0x99A3, 0x52B9, 0x8CF8, + 0x52BC, 0x99A2, 0x52BE, 0x8A4E, 0x52C0, 0xFA87, 0x52C1, 0x99A4, 0x52C3, 0x9675, 0x52C5, 0x92BA, 0x52C7, 0x9745, 0x52C9, 0x95D7, + 0x52CD, 0x99A5, 0x52D2, 0xE8D3, 0x52D5, 0x93AE, 0x52D7, 0x99A6, 0x52D8, 0x8AA8, 0x52D9, 0x96B1, 0x52DB, 0xFA88, 0x52DD, 0x8F9F, + 0x52DE, 0x99A7, 0x52DF, 0x95E5, 0x52E0, 0x99AB, 0x52E2, 0x90A8, 0x52E3, 0x99A8, 0x52E4, 0x8BCE, 0x52E6, 0x99A9, 0x52E7, 0x8AA9, + 0x52F2, 0x8C4D, 0x52F3, 0x99AC, 0x52F5, 0x99AD, 0x52F8, 0x99AE, 0x52F9, 0x99AF, 0x52FA, 0x8ED9, 0x52FE, 0x8CF9, 0x52FF, 0x96DC, + 0x5300, 0xFA89, 0x5301, 0x96E6, 0x5302, 0x93F5, 0x5305, 0x95EF, 0x5306, 0x99B0, 0x5307, 0xFA8A, 0x5308, 0x99B1, 0x530D, 0x99B3, + 0x530F, 0x99B5, 0x5310, 0x99B4, 0x5315, 0x99B6, 0x5316, 0x89BB, 0x5317, 0x966B, 0x5319, 0x8DFA, 0x531A, 0x99B7, 0x531D, 0x9178, + 0x5320, 0x8FA0, 0x5321, 0x8BA7, 0x5323, 0x99B8, 0x5324, 0xFA8B, 0x532A, 0x94D9, 0x532F, 0x99B9, 0x5331, 0x99BA, 0x5333, 0x99BB, + 0x5338, 0x99BC, 0x5339, 0x9543, 0x533A, 0x8BE6, 0x533B, 0x88E3, 0x533F, 0x93BD, 0x5340, 0x99BD, 0x5341, 0x8F5C, 0x5343, 0x90E7, + 0x5345, 0x99BF, 0x5346, 0x99BE, 0x5347, 0x8FA1, 0x5348, 0x8CDF, 0x5349, 0x99C1, 0x534A, 0x94BC, 0x534D, 0x99C2, 0x5351, 0x94DA, + 0x5352, 0x91B2, 0x5353, 0x91EC, 0x5354, 0x8BA6, 0x5357, 0x93EC, 0x5358, 0x9250, 0x535A, 0x948E, 0x535C, 0x966D, 0x535E, 0x99C4, + 0x5360, 0x90E8, 0x5366, 0x8C54, 0x5369, 0x99C5, 0x536E, 0x99C6, 0x536F, 0x894B, 0x5370, 0x88F3, 0x5371, 0x8AEB, 0x5372, 0xFA8C, + 0x5373, 0x91A6, 0x5374, 0x8B70, 0x5375, 0x9791, 0x5377, 0x99C9, 0x5378, 0x89B5, 0x537B, 0x99C8, 0x537F, 0x8BA8, 0x5382, 0x99CA, + 0x5384, 0x96EF, 0x5393, 0xFA8D, 0x5396, 0x99CB, 0x5398, 0x97D0, 0x539A, 0x8CFA, 0x539F, 0x8CB4, 0x53A0, 0x99CC, 0x53A5, 0x99CE, + 0x53A6, 0x99CD, 0x53A8, 0x907E, 0x53A9, 0x8958, 0x53AD, 0x897D, 0x53AE, 0x99CF, 0x53B0, 0x99D0, 0x53B2, 0xFA8E, 0x53B3, 0x8CB5, + 0x53B6, 0x99D1, 0x53BB, 0x8B8E, 0x53C2, 0x8E51, 0x53C3, 0x99D2, 0x53C8, 0x9694, 0x53C9, 0x8DB3, 0x53CA, 0x8B79, 0x53CB, 0x9746, + 0x53CC, 0x916F, 0x53CD, 0x94BD, 0x53CE, 0x8EFB, 0x53D4, 0x8F66, 0x53D6, 0x8EE6, 0x53D7, 0x8EF3, 0x53D9, 0x8F96, 0x53DB, 0x94BE, + 0x53DD, 0xFA8F, 0x53DF, 0x99D5, 0x53E1, 0x8962, 0x53E2, 0x9170, 0x53E3, 0x8CFB, 0x53E4, 0x8CC3, 0x53E5, 0x8BE5, 0x53E8, 0x99D9, + 0x53E9, 0x9240, 0x53EA, 0x91FC, 0x53EB, 0x8BA9, 0x53EC, 0x8FA2, 0x53ED, 0x99DA, 0x53EE, 0x99D8, 0x53EF, 0x89C2, 0x53F0, 0x91E4, + 0x53F1, 0x8EB6, 0x53F2, 0x8E6A, 0x53F3, 0x8945, 0x53F6, 0x8A90, 0x53F7, 0x8D86, 0x53F8, 0x8E69, 0x53FA, 0x99DB, 0x5401, 0x99DC, + 0x5403, 0x8B68, 0x5404, 0x8A65, 0x5408, 0x8D87, 0x5409, 0x8B67, 0x540A, 0x92DD, 0x540B, 0x8944, 0x540C, 0x93AF, 0x540D, 0x96BC, + 0x540E, 0x8D40, 0x540F, 0x9799, 0x5410, 0x9366, 0x5411, 0x8CFC, 0x541B, 0x8C4E, 0x541D, 0x99E5, 0x541F, 0x8BE1, 0x5420, 0x9669, + 0x5426, 0x94DB, 0x5429, 0x99E4, 0x542B, 0x8ADC, 0x542C, 0x99DF, 0x542D, 0x99E0, 0x542E, 0x99E2, 0x5436, 0x99E3, 0x5438, 0x8B7A, + 0x5439, 0x9081, 0x543B, 0x95AB, 0x543C, 0x99E1, 0x543D, 0x99DD, 0x543E, 0x8CE1, 0x5440, 0x99DE, 0x5442, 0x9843, 0x5446, 0x95F0, + 0x5448, 0x92E6, 0x5449, 0x8CE0, 0x544A, 0x8D90, 0x544E, 0x99E6, 0x5451, 0x93DB, 0x545F, 0x99EA, 0x5468, 0x8EFC, 0x546A, 0x8EF4, + 0x5470, 0x99ED, 0x5471, 0x99EB, 0x5473, 0x96A1, 0x5475, 0x99E8, 0x5476, 0x99F1, 0x5477, 0x99EC, 0x547B, 0x99EF, 0x547C, 0x8CC4, + 0x547D, 0x96BD, 0x5480, 0x99F0, 0x5484, 0x99F2, 0x5486, 0x99F4, 0x548A, 0xFA92, 0x548B, 0x8DEE, 0x548C, 0x9861, 0x548E, 0x99E9, + 0x548F, 0x99E7, 0x5490, 0x99F3, 0x5492, 0x99EE, 0x549C, 0xFA91, 0x54A2, 0x99F6, 0x54A4, 0x9A42, 0x54A5, 0x99F8, 0x54A8, 0x99FC, + 0x54A9, 0xFA93, 0x54AB, 0x9A40, 0x54AC, 0x99F9, 0x54AF, 0x9A5D, 0x54B2, 0x8DE7, 0x54B3, 0x8A50, 0x54B8, 0x99F7, 0x54BC, 0x9A44, + 0x54BD, 0x88F4, 0x54BE, 0x9A43, 0x54C0, 0x88A3, 0x54C1, 0x9569, 0x54C2, 0x9A41, 0x54C4, 0x99FA, 0x54C7, 0x99F5, 0x54C8, 0x99FB, + 0x54C9, 0x8DC6, 0x54D8, 0x9A45, 0x54E1, 0x88F5, 0x54E2, 0x9A4E, 0x54E5, 0x9A46, 0x54E6, 0x9A47, 0x54E8, 0x8FA3, 0x54E9, 0x9689, + 0x54ED, 0x9A4C, 0x54EE, 0x9A4B, 0x54F2, 0x934E, 0x54FA, 0x9A4D, 0x54FD, 0x9A4A, 0x54FF, 0xFA94, 0x5504, 0x8953, 0x5506, 0x8DB4, + 0x5507, 0x904F, 0x550F, 0x9A48, 0x5510, 0x9382, 0x5514, 0x9A49, 0x5516, 0x88A0, 0x552E, 0x9A53, 0x552F, 0x9742, 0x5531, 0x8FA5, + 0x5533, 0x9A59, 0x5538, 0x9A58, 0x5539, 0x9A4F, 0x553E, 0x91C1, 0x5540, 0x9A50, 0x5544, 0x91ED, 0x5545, 0x9A55, 0x5546, 0x8FA4, + 0x554C, 0x9A52, 0x554F, 0x96E2, 0x5553, 0x8C5B, 0x5556, 0x9A56, 0x5557, 0x9A57, 0x555C, 0x9A54, 0x555D, 0x9A5A, 0x5563, 0x9A51, + 0x557B, 0x9A60, 0x557C, 0x9A65, 0x557E, 0x9A61, 0x5580, 0x9A5C, 0x5583, 0x9A66, 0x5584, 0x9150, 0x5586, 0xFA95, 0x5587, 0x9A68, + 0x5589, 0x8D41, 0x558A, 0x9A5E, 0x558B, 0x929D, 0x5598, 0x9A62, 0x5599, 0x9A5B, 0x559A, 0x8AAB, 0x559C, 0x8AEC, 0x559D, 0x8A85, + 0x559E, 0x9A63, 0x559F, 0x9A5F, 0x55A7, 0x8C96, 0x55A8, 0x9A69, 0x55A9, 0x9A67, 0x55AA, 0x9172, 0x55AB, 0x8B69, 0x55AC, 0x8BAA, + 0x55AE, 0x9A64, 0x55B0, 0x8BF2, 0x55B6, 0x8963, 0x55C4, 0x9A6D, 0x55C5, 0x9A6B, 0x55C7, 0x9AA5, 0x55D4, 0x9A70, 0x55DA, 0x9A6A, + 0x55DC, 0x9A6E, 0x55DF, 0x9A6C, 0x55E3, 0x8E6B, 0x55E4, 0x9A6F, 0x55F7, 0x9A72, 0x55F9, 0x9A77, 0x55FD, 0x9A75, 0x55FE, 0x9A74, + 0x5606, 0x9251, 0x5609, 0x89C3, 0x5614, 0x9A71, 0x5616, 0x9A73, 0x5617, 0x8FA6, 0x5618, 0x8952, 0x561B, 0x9A76, 0x5629, 0x89DC, + 0x562F, 0x9A82, 0x5631, 0x8FFA, 0x5632, 0x9A7D, 0x5634, 0x9A7B, 0x5636, 0x9A7C, 0x5638, 0x9A7E, 0x5642, 0x895C, 0x564C, 0x9158, + 0x564E, 0x9A78, 0x5650, 0x9A79, 0x565B, 0x8A9A, 0x5664, 0x9A81, 0x5668, 0x8AED, 0x566A, 0x9A84, 0x566B, 0x9A80, 0x566C, 0x9A83, + 0x5674, 0x95AC, 0x5678, 0x93D3, 0x567A, 0x94B6, 0x5680, 0x9A86, 0x5686, 0x9A85, 0x5687, 0x8A64, 0x568A, 0x9A87, 0x568F, 0x9A8A, + 0x5694, 0x9A89, 0x56A0, 0x9A88, 0x56A2, 0x9458, 0x56A5, 0x9A8B, 0x56AE, 0x9A8C, 0x56B4, 0x9A8E, 0x56B6, 0x9A8D, 0x56BC, 0x9A90, + 0x56C0, 0x9A93, 0x56C1, 0x9A91, 0x56C2, 0x9A8F, 0x56C3, 0x9A92, 0x56C8, 0x9A94, 0x56CE, 0x9A95, 0x56D1, 0x9A96, 0x56D3, 0x9A97, + 0x56D7, 0x9A98, 0x56D8, 0x9964, 0x56DA, 0x8EFA, 0x56DB, 0x8E6C, 0x56DE, 0x89F1, 0x56E0, 0x88F6, 0x56E3, 0x9263, 0x56EE, 0x9A99, + 0x56F0, 0x8DA2, 0x56F2, 0x88CD, 0x56F3, 0x907D, 0x56F9, 0x9A9A, 0x56FA, 0x8CC5, 0x56FD, 0x8D91, 0x56FF, 0x9A9C, 0x5700, 0x9A9B, + 0x5703, 0x95DE, 0x5704, 0x9A9D, 0x5708, 0x9A9F, 0x5709, 0x9A9E, 0x570B, 0x9AA0, 0x570D, 0x9AA1, 0x570F, 0x8C97, 0x5712, 0x8980, + 0x5713, 0x9AA2, 0x5716, 0x9AA4, 0x5718, 0x9AA3, 0x571C, 0x9AA6, 0x571F, 0x9379, 0x5726, 0x9AA7, 0x5727, 0x88B3, 0x5728, 0x8DDD, + 0x572D, 0x8C5C, 0x5730, 0x926E, 0x5737, 0x9AA8, 0x5738, 0x9AA9, 0x573B, 0x9AAB, 0x5740, 0x9AAC, 0x5742, 0x8DE2, 0x5747, 0x8BCF, + 0x574A, 0x9656, 0x574E, 0x9AAA, 0x574F, 0x9AAD, 0x5750, 0x8DBF, 0x5751, 0x8D42, 0x5759, 0xFA96, 0x5761, 0x9AB1, 0x5764, 0x8DA3, + 0x5765, 0xFA97, 0x5766, 0x9252, 0x5769, 0x9AAE, 0x576A, 0x92D8, 0x577F, 0x9AB2, 0x5782, 0x9082, 0x5788, 0x9AB0, 0x5789, 0x9AB3, + 0x578B, 0x8C5E, 0x5793, 0x9AB4, 0x57A0, 0x9AB5, 0x57A2, 0x8D43, 0x57A3, 0x8A5F, 0x57A4, 0x9AB7, 0x57AA, 0x9AB8, 0x57AC, 0xFA98, + 0x57B0, 0x9AB9, 0x57B3, 0x9AB6, 0x57C0, 0x9AAF, 0x57C3, 0x9ABA, 0x57C6, 0x9ABB, 0x57C7, 0xFA9A, 0x57C8, 0xFA99, 0x57CB, 0x9684, + 0x57CE, 0x8FE9, 0x57D2, 0x9ABD, 0x57D3, 0x9ABE, 0x57D4, 0x9ABC, 0x57D6, 0x9AC0, 0x57DC, 0x9457, 0x57DF, 0x88E6, 0x57E0, 0x9575, + 0x57E3, 0x9AC1, 0x57F4, 0x8FFB, 0x57F7, 0x8EB7, 0x57F9, 0x947C, 0x57FA, 0x8AEE, 0x57FC, 0x8DE9, 0x5800, 0x9678, 0x5802, 0x93B0, + 0x5805, 0x8C98, 0x5806, 0x91CD, 0x580A, 0x9ABF, 0x580B, 0x9AC2, 0x5815, 0x91C2, 0x5819, 0x9AC3, 0x581D, 0x9AC4, 0x5821, 0x9AC6, + 0x5824, 0x92E7, 0x582A, 0x8AAC, 0x582F, 0xEA9F, 0x5830, 0x8981, 0x5831, 0x95F1, 0x5834, 0x8FEA, 0x5835, 0x9367, 0x583A, 0x8DE4, + 0x583D, 0x9ACC, 0x5840, 0x95BB, 0x5841, 0x97DB, 0x584A, 0x89F2, 0x584B, 0x9AC8, 0x5851, 0x9159, 0x5852, 0x9ACB, 0x5854, 0x9383, + 0x5857, 0x9368, 0x5858, 0x9384, 0x5859, 0x94B7, 0x585A, 0x92CB, 0x585E, 0x8DC7, 0x5862, 0x9AC7, 0x5869, 0x8996, 0x586B, 0x9355, + 0x5870, 0x9AC9, 0x5872, 0x9AC5, 0x5875, 0x906F, 0x5879, 0x9ACD, 0x587E, 0x8F6D, 0x5883, 0x8BAB, 0x5885, 0x9ACE, 0x5893, 0x95E6, + 0x5897, 0x919D, 0x589C, 0x92C4, 0x589E, 0xFA9D, 0x589F, 0x9AD0, 0x58A8, 0x966E, 0x58AB, 0x9AD1, 0x58AE, 0x9AD6, 0x58B2, 0xFA9E, + 0x58B3, 0x95AD, 0x58B8, 0x9AD5, 0x58B9, 0x9ACF, 0x58BA, 0x9AD2, 0x58BB, 0x9AD4, 0x58BE, 0x8DA4, 0x58C1, 0x95C7, 0x58C5, 0x9AD7, + 0x58C7, 0x9264, 0x58CA, 0x89F3, 0x58CC, 0x8FEB, 0x58D1, 0x9AD9, 0x58D3, 0x9AD8, 0x58D5, 0x8D88, 0x58D7, 0x9ADA, 0x58D8, 0x9ADC, + 0x58D9, 0x9ADB, 0x58DC, 0x9ADE, 0x58DE, 0x9AD3, 0x58DF, 0x9AE0, 0x58E4, 0x9ADF, 0x58E5, 0x9ADD, 0x58EB, 0x8E6D, 0x58EC, 0x9070, + 0x58EE, 0x9173, 0x58EF, 0x9AE1, 0x58F0, 0x90BA, 0x58F1, 0x88EB, 0x58F2, 0x9484, 0x58F7, 0x92D9, 0x58F9, 0x9AE3, 0x58FA, 0x9AE2, + 0x58FB, 0x9AE4, 0x58FC, 0x9AE5, 0x58FD, 0x9AE6, 0x5902, 0x9AE7, 0x5909, 0x95CF, 0x590A, 0x9AE8, 0x590B, 0xFA9F, 0x590F, 0x89C4, + 0x5910, 0x9AE9, 0x5915, 0x975B, 0x5916, 0x8A4F, 0x5918, 0x99C7, 0x5919, 0x8F67, 0x591A, 0x91BD, 0x591B, 0x9AEA, 0x591C, 0x96E9, + 0x5922, 0x96B2, 0x5925, 0x9AEC, 0x5927, 0x91E5, 0x5929, 0x9356, 0x592A, 0x91BE, 0x592B, 0x9576, 0x592C, 0x9AED, 0x592D, 0x9AEE, + 0x592E, 0x899B, 0x5931, 0x8EB8, 0x5932, 0x9AEF, 0x5937, 0x88CE, 0x5938, 0x9AF0, 0x593E, 0x9AF1, 0x5944, 0x8982, 0x5947, 0x8AEF, + 0x5948, 0x93DE, 0x5949, 0x95F2, 0x594E, 0x9AF5, 0x594F, 0x9174, 0x5950, 0x9AF4, 0x5951, 0x8C5F, 0x5953, 0xFAA0, 0x5954, 0x967A, + 0x5955, 0x9AF3, 0x5957, 0x9385, 0x5958, 0x9AF7, 0x595A, 0x9AF6, 0x595B, 0xFAA1, 0x595D, 0xFAA2, 0x5960, 0x9AF9, 0x5962, 0x9AF8, + 0x5963, 0xFAA3, 0x5965, 0x899C, 0x5967, 0x9AFA, 0x5968, 0x8FA7, 0x5969, 0x9AFC, 0x596A, 0x9244, 0x596C, 0x9AFB, 0x596E, 0x95B1, + 0x5973, 0x8F97, 0x5974, 0x937A, 0x5978, 0x9B40, 0x597D, 0x8D44, 0x5981, 0x9B41, 0x5982, 0x9440, 0x5983, 0x94DC, 0x5984, 0x96CF, + 0x598A, 0x9444, 0x598D, 0x9B4A, 0x5993, 0x8B57, 0x5996, 0x9764, 0x5999, 0x96AD, 0x599B, 0x9BAA, 0x599D, 0x9B42, 0x59A3, 0x9B45, + 0x59A4, 0xFAA4, 0x59A5, 0x91C3, 0x59A8, 0x9657, 0x59AC, 0x9369, 0x59B2, 0x9B46, 0x59B9, 0x9685, 0x59BA, 0xFAA5, 0x59BB, 0x8DC8, + 0x59BE, 0x8FA8, 0x59C6, 0x9B47, 0x59C9, 0x8E6F, 0x59CB, 0x8E6E, 0x59D0, 0x88B7, 0x59D1, 0x8CC6, 0x59D3, 0x90A9, 0x59D4, 0x88CF, + 0x59D9, 0x9B4B, 0x59DA, 0x9B4C, 0x59DC, 0x9B49, 0x59E5, 0x8957, 0x59E6, 0x8AAD, 0x59E8, 0x9B48, 0x59EA, 0x96C3, 0x59EB, 0x9550, + 0x59F6, 0x88A6, 0x59FB, 0x88F7, 0x59FF, 0x8E70, 0x5A01, 0x88D0, 0x5A03, 0x88A1, 0x5A09, 0x9B51, 0x5A11, 0x9B4F, 0x5A18, 0x96BA, + 0x5A1A, 0x9B52, 0x5A1C, 0x9B50, 0x5A1F, 0x9B4E, 0x5A20, 0x9050, 0x5A25, 0x9B4D, 0x5A29, 0x95D8, 0x5A2F, 0x8CE2, 0x5A35, 0x9B56, + 0x5A36, 0x9B57, 0x5A3C, 0x8FA9, 0x5A40, 0x9B53, 0x5A41, 0x984B, 0x5A46, 0x946B, 0x5A49, 0x9B55, 0x5A5A, 0x8DA5, 0x5A62, 0x9B58, + 0x5A66, 0x9577, 0x5A6A, 0x9B59, 0x5A6C, 0x9B54, 0x5A7F, 0x96B9, 0x5A92, 0x947D, 0x5A9A, 0x9B5A, 0x5A9B, 0x9551, 0x5ABC, 0x9B5B, + 0x5ABD, 0x9B5F, 0x5ABE, 0x9B5C, 0x5AC1, 0x89C5, 0x5AC2, 0x9B5E, 0x5AC9, 0x8EB9, 0x5ACB, 0x9B5D, 0x5ACC, 0x8C99, 0x5AD0, 0x9B6B, + 0x5AD6, 0x9B64, 0x5AD7, 0x9B61, 0x5AE1, 0x9284, 0x5AE3, 0x9B60, 0x5AE6, 0x9B62, 0x5AE9, 0x9B63, 0x5AFA, 0x9B65, 0x5AFB, 0x9B66, + 0x5B09, 0x8AF0, 0x5B0B, 0x9B68, 0x5B0C, 0x9B67, 0x5B16, 0x9B69, 0x5B22, 0x8FEC, 0x5B2A, 0x9B6C, 0x5B2C, 0x92DA, 0x5B30, 0x8964, + 0x5B32, 0x9B6A, 0x5B36, 0x9B6D, 0x5B3E, 0x9B6E, 0x5B40, 0x9B71, 0x5B43, 0x9B6F, 0x5B45, 0x9B70, 0x5B50, 0x8E71, 0x5B51, 0x9B72, + 0x5B54, 0x8D45, 0x5B55, 0x9B73, 0x5B56, 0xFAA6, 0x5B57, 0x8E9A, 0x5B58, 0x91B6, 0x5B5A, 0x9B74, 0x5B5B, 0x9B75, 0x5B5C, 0x8E79, + 0x5B5D, 0x8D46, 0x5B5F, 0x96D0, 0x5B63, 0x8B47, 0x5B64, 0x8CC7, 0x5B65, 0x9B76, 0x5B66, 0x8A77, 0x5B69, 0x9B77, 0x5B6B, 0x91B7, + 0x5B70, 0x9B78, 0x5B71, 0x9BA1, 0x5B73, 0x9B79, 0x5B75, 0x9B7A, 0x5B78, 0x9B7B, 0x5B7A, 0x9B7D, 0x5B80, 0x9B7E, 0x5B83, 0x9B80, + 0x5B85, 0x91EE, 0x5B87, 0x8946, 0x5B88, 0x8EE7, 0x5B89, 0x88C0, 0x5B8B, 0x9176, 0x5B8C, 0x8AAE, 0x5B8D, 0x8EB3, 0x5B8F, 0x8D47, + 0x5B95, 0x9386, 0x5B97, 0x8F40, 0x5B98, 0x8AAF, 0x5B99, 0x9288, 0x5B9A, 0x92E8, 0x5B9B, 0x88B6, 0x5B9C, 0x8B58, 0x5B9D, 0x95F3, + 0x5B9F, 0x8EC0, 0x5BA2, 0x8B71, 0x5BA3, 0x90E9, 0x5BA4, 0x8EBA, 0x5BA5, 0x9747, 0x5BA6, 0x9B81, 0x5BAE, 0x8B7B, 0x5BB0, 0x8DC9, + 0x5BB3, 0x8A51, 0x5BB4, 0x8983, 0x5BB5, 0x8FAA, 0x5BB6, 0x89C6, 0x5BB8, 0x9B82, 0x5BB9, 0x9765, 0x5BBF, 0x8F68, 0x5BC0, 0xFAA7, + 0x5BC2, 0x8EE2, 0x5BC3, 0x9B83, 0x5BC4, 0x8AF1, 0x5BC5, 0x93D0, 0x5BC6, 0x96A7, 0x5BC7, 0x9B84, 0x5BC9, 0x9B85, 0x5BCC, 0x9578, + 0x5BD0, 0x9B87, 0x5BD2, 0x8AA6, 0x5BD3, 0x8BF5, 0x5BD4, 0x9B86, 0x5BD8, 0xFAA9, 0x5BDB, 0x8AB0, 0x5BDD, 0x9051, 0x5BDE, 0x9B8B, + 0x5BDF, 0x8E40, 0x5BE1, 0x89C7, 0x5BE2, 0x9B8A, 0x5BE4, 0x9B88, 0x5BE5, 0x9B8C, 0x5BE6, 0x9B89, 0x5BE7, 0x944A, 0x5BE8, 0x9ECB, + 0x5BE9, 0x9052, 0x5BEB, 0x9B8D, 0x5BEC, 0xFAAA, 0x5BEE, 0x97BE, 0x5BF0, 0x9B8E, 0x5BF3, 0x9B90, 0x5BF5, 0x929E, 0x5BF6, 0x9B8F, + 0x5BF8, 0x90A1, 0x5BFA, 0x8E9B, 0x5BFE, 0x91CE, 0x5BFF, 0x8EF5, 0x5C01, 0x9595, 0x5C02, 0x90EA, 0x5C04, 0x8ECB, 0x5C05, 0x9B91, + 0x5C06, 0x8FAB, 0x5C07, 0x9B92, 0x5C08, 0x9B93, 0x5C09, 0x88D1, 0x5C0A, 0x91B8, 0x5C0B, 0x9071, 0x5C0D, 0x9B94, 0x5C0E, 0x93B1, + 0x5C0F, 0x8FAC, 0x5C11, 0x8FAD, 0x5C13, 0x9B95, 0x5C16, 0x90EB, 0x5C1A, 0x8FAE, 0x5C1E, 0xFAAB, 0x5C20, 0x9B96, 0x5C22, 0x9B97, + 0x5C24, 0x96DE, 0x5C28, 0x9B98, 0x5C2D, 0x8BC4, 0x5C31, 0x8F41, 0x5C38, 0x9B99, 0x5C39, 0x9B9A, 0x5C3A, 0x8EDA, 0x5C3B, 0x904B, + 0x5C3C, 0x93F2, 0x5C3D, 0x9073, 0x5C3E, 0x94F6, 0x5C3F, 0x9441, 0x5C40, 0x8BC7, 0x5C41, 0x9B9B, 0x5C45, 0x8B8F, 0x5C46, 0x9B9C, + 0x5C48, 0x8BFC, 0x5C4A, 0x93CD, 0x5C4B, 0x89AE, 0x5C4D, 0x8E72, 0x5C4E, 0x9B9D, 0x5C4F, 0x9BA0, 0x5C50, 0x9B9F, 0x5C51, 0x8BFB, + 0x5C53, 0x9B9E, 0x5C55, 0x9357, 0x5C5E, 0x91AE, 0x5C60, 0x936A, 0x5C61, 0x8EC6, 0x5C64, 0x9177, 0x5C65, 0x979A, 0x5C6C, 0x9BA2, + 0x5C6E, 0x9BA3, 0x5C6F, 0x93D4, 0x5C71, 0x8E52, 0x5C76, 0x9BA5, 0x5C79, 0x9BA6, 0x5C8C, 0x9BA7, 0x5C90, 0x8AF2, 0x5C91, 0x9BA8, + 0x5C94, 0x9BA9, 0x5CA1, 0x89AA, 0x5CA6, 0xFAAC, 0x5CA8, 0x915A, 0x5CA9, 0x8AE2, 0x5CAB, 0x9BAB, 0x5CAC, 0x96A6, 0x5CB1, 0x91D0, + 0x5CB3, 0x8A78, 0x5CB6, 0x9BAD, 0x5CB7, 0x9BAF, 0x5CB8, 0x8ADD, 0x5CBA, 0xFAAD, 0x5CBB, 0x9BAC, 0x5CBC, 0x9BAE, 0x5CBE, 0x9BB1, + 0x5CC5, 0x9BB0, 0x5CC7, 0x9BB2, 0x5CD9, 0x9BB3, 0x5CE0, 0x93BB, 0x5CE1, 0x8BAC, 0x5CE8, 0x89E3, 0x5CE9, 0x9BB4, 0x5CEA, 0x9BB9, + 0x5CED, 0x9BB7, 0x5CEF, 0x95F5, 0x5CF0, 0x95F4, 0x5CF5, 0xFAAE, 0x5CF6, 0x9387, 0x5CFA, 0x9BB6, 0x5CFB, 0x8F73, 0x5CFD, 0x9BB5, + 0x5D07, 0x9092, 0x5D0B, 0x9BBA, 0x5D0E, 0x8DE8, 0x5D11, 0x9BC0, 0x5D14, 0x9BC1, 0x5D15, 0x9BBB, 0x5D16, 0x8A52, 0x5D17, 0x9BBC, + 0x5D18, 0x9BC5, 0x5D19, 0x9BC4, 0x5D1A, 0x9BC3, 0x5D1B, 0x9BBF, 0x5D1F, 0x9BBE, 0x5D22, 0x9BC2, 0x5D27, 0xFAAF, 0x5D29, 0x95F6, + 0x5D42, 0xFAB2, 0x5D4B, 0x9BC9, 0x5D4C, 0x9BC6, 0x5D4E, 0x9BC8, 0x5D50, 0x9792, 0x5D52, 0x9BC7, 0x5D53, 0xFAB0, 0x5D5C, 0x9BBD, + 0x5D69, 0x9093, 0x5D6C, 0x9BCA, 0x5D6D, 0xFAB3, 0x5D6F, 0x8DB5, 0x5D73, 0x9BCB, 0x5D76, 0x9BCC, 0x5D82, 0x9BCF, 0x5D84, 0x9BCE, + 0x5D87, 0x9BCD, 0x5D8B, 0x9388, 0x5D8C, 0x9BB8, 0x5D90, 0x9BD5, 0x5D9D, 0x9BD1, 0x5DA2, 0x9BD0, 0x5DAC, 0x9BD2, 0x5DAE, 0x9BD3, + 0x5DB7, 0x9BD6, 0x5DB8, 0xFAB4, 0x5DB9, 0xFAB5, 0x5DBA, 0x97E4, 0x5DBC, 0x9BD7, 0x5DBD, 0x9BD4, 0x5DC9, 0x9BD8, 0x5DCC, 0x8ADE, + 0x5DCD, 0x9BD9, 0x5DD0, 0xFAB6, 0x5DD2, 0x9BDB, 0x5DD3, 0x9BDA, 0x5DD6, 0x9BDC, 0x5DDB, 0x9BDD, 0x5DDD, 0x90EC, 0x5DDE, 0x8F42, + 0x5DE1, 0x8F84, 0x5DE3, 0x9183, 0x5DE5, 0x8D48, 0x5DE6, 0x8DB6, 0x5DE7, 0x8D49, 0x5DE8, 0x8B90, 0x5DEB, 0x9BDE, 0x5DEE, 0x8DB7, + 0x5DF1, 0x8CC8, 0x5DF2, 0x9BDF, 0x5DF3, 0x96A4, 0x5DF4, 0x9462, 0x5DF5, 0x9BE0, 0x5DF7, 0x8D4A, 0x5DFB, 0x8AAA, 0x5DFD, 0x9246, + 0x5DFE, 0x8BD0, 0x5E02, 0x8E73, 0x5E03, 0x957A, 0x5E06, 0x94BF, 0x5E0B, 0x9BE1, 0x5E0C, 0x8AF3, 0x5E11, 0x9BE4, 0x5E16, 0x929F, + 0x5E19, 0x9BE3, 0x5E1A, 0x9BE2, 0x5E1B, 0x9BE5, 0x5E1D, 0x92E9, 0x5E25, 0x9083, 0x5E2B, 0x8E74, 0x5E2D, 0x90C8, 0x5E2F, 0x91D1, + 0x5E30, 0x8B41, 0x5E33, 0x92A0, 0x5E36, 0x9BE6, 0x5E37, 0x9BE7, 0x5E38, 0x8FED, 0x5E3D, 0x9658, 0x5E40, 0x9BEA, 0x5E43, 0x9BE9, + 0x5E44, 0x9BE8, 0x5E45, 0x959D, 0x5E47, 0x9BF1, 0x5E4C, 0x9679, 0x5E4E, 0x9BEB, 0x5E54, 0x9BED, 0x5E55, 0x968B, 0x5E57, 0x9BEC, + 0x5E5F, 0x9BEE, 0x5E61, 0x94A6, 0x5E62, 0x9BEF, 0x5E63, 0x95BC, 0x5E64, 0x9BF0, 0x5E72, 0x8AB1, 0x5E73, 0x95BD, 0x5E74, 0x944E, + 0x5E75, 0x9BF2, 0x5E76, 0x9BF3, 0x5E78, 0x8D4B, 0x5E79, 0x8AB2, 0x5E7A, 0x9BF4, 0x5E7B, 0x8CB6, 0x5E7C, 0x9763, 0x5E7D, 0x9748, + 0x5E7E, 0x8AF4, 0x5E7F, 0x9BF6, 0x5E81, 0x92A1, 0x5E83, 0x8D4C, 0x5E84, 0x8FAF, 0x5E87, 0x94DD, 0x5E8A, 0x8FB0, 0x5E8F, 0x8F98, + 0x5E95, 0x92EA, 0x5E96, 0x95F7, 0x5E97, 0x9358, 0x5E9A, 0x8D4D, 0x5E9C, 0x957B, 0x5EA0, 0x9BF7, 0x5EA6, 0x9378, 0x5EA7, 0x8DC0, + 0x5EAB, 0x8CC9, 0x5EAD, 0x92EB, 0x5EB5, 0x88C1, 0x5EB6, 0x8F8E, 0x5EB7, 0x8D4E, 0x5EB8, 0x9766, 0x5EC1, 0x9BF8, 0x5EC2, 0x9BF9, + 0x5EC3, 0x9470, 0x5EC8, 0x9BFA, 0x5EC9, 0x97F5, 0x5ECA, 0x984C, 0x5ECF, 0x9BFC, 0x5ED0, 0x9BFB, 0x5ED3, 0x8A66, 0x5ED6, 0x9C40, + 0x5EDA, 0x9C43, 0x5EDB, 0x9C44, 0x5EDD, 0x9C42, 0x5EDF, 0x955F, 0x5EE0, 0x8FB1, 0x5EE1, 0x9C46, 0x5EE2, 0x9C45, 0x5EE3, 0x9C41, + 0x5EE8, 0x9C47, 0x5EE9, 0x9C48, 0x5EEC, 0x9C49, 0x5EF0, 0x9C4C, 0x5EF1, 0x9C4A, 0x5EF3, 0x9C4B, 0x5EF4, 0x9C4D, 0x5EF6, 0x8984, + 0x5EF7, 0x92EC, 0x5EF8, 0x9C4E, 0x5EFA, 0x8C9A, 0x5EFB, 0x89F4, 0x5EFC, 0x9455, 0x5EFE, 0x9C4F, 0x5EFF, 0x93F9, 0x5F01, 0x95D9, + 0x5F03, 0x9C50, 0x5F04, 0x984D, 0x5F09, 0x9C51, 0x5F0A, 0x95BE, 0x5F0B, 0x9C54, 0x5F0C, 0x989F, 0x5F0D, 0x98AF, 0x5F0F, 0x8EAE, + 0x5F10, 0x93F3, 0x5F11, 0x9C55, 0x5F13, 0x8B7C, 0x5F14, 0x92A2, 0x5F15, 0x88F8, 0x5F16, 0x9C56, 0x5F17, 0x95A4, 0x5F18, 0x8D4F, + 0x5F1B, 0x926F, 0x5F1F, 0x92ED, 0x5F21, 0xFAB7, 0x5F25, 0x96ED, 0x5F26, 0x8CB7, 0x5F27, 0x8CCA, 0x5F29, 0x9C57, 0x5F2D, 0x9C58, + 0x5F2F, 0x9C5E, 0x5F31, 0x8EE3, 0x5F34, 0xFAB8, 0x5F35, 0x92A3, 0x5F37, 0x8BAD, 0x5F38, 0x9C59, 0x5F3C, 0x954A, 0x5F3E, 0x9265, + 0x5F41, 0x9C5A, 0x5F45, 0xFA67, 0x5F48, 0x9C5B, 0x5F4A, 0x8BAE, 0x5F4C, 0x9C5C, 0x5F4E, 0x9C5D, 0x5F51, 0x9C5F, 0x5F53, 0x9396, + 0x5F56, 0x9C60, 0x5F57, 0x9C61, 0x5F59, 0x9C62, 0x5F5C, 0x9C53, 0x5F5D, 0x9C52, 0x5F61, 0x9C63, 0x5F62, 0x8C60, 0x5F66, 0x9546, + 0x5F67, 0xFAB9, 0x5F69, 0x8DCA, 0x5F6A, 0x9556, 0x5F6B, 0x92A4, 0x5F6C, 0x956A, 0x5F6D, 0x9C64, 0x5F70, 0x8FB2, 0x5F71, 0x8965, + 0x5F73, 0x9C65, 0x5F77, 0x9C66, 0x5F79, 0x96F0, 0x5F7C, 0x94DE, 0x5F7F, 0x9C69, 0x5F80, 0x899D, 0x5F81, 0x90AA, 0x5F82, 0x9C68, + 0x5F83, 0x9C67, 0x5F84, 0x8C61, 0x5F85, 0x91D2, 0x5F87, 0x9C6D, 0x5F88, 0x9C6B, 0x5F8A, 0x9C6A, 0x5F8B, 0x97A5, 0x5F8C, 0x8CE3, + 0x5F90, 0x8F99, 0x5F91, 0x9C6C, 0x5F92, 0x936B, 0x5F93, 0x8F5D, 0x5F97, 0x93BE, 0x5F98, 0x9C70, 0x5F99, 0x9C6F, 0x5F9E, 0x9C6E, + 0x5FA0, 0x9C71, 0x5FA1, 0x8CE4, 0x5FA8, 0x9C72, 0x5FA9, 0x959C, 0x5FAA, 0x8F7A, 0x5FAD, 0x9C73, 0x5FAE, 0x94F7, 0x5FB3, 0x93BF, + 0x5FB4, 0x92A5, 0x5FB7, 0xFABA, 0x5FB9, 0x934F, 0x5FBC, 0x9C74, 0x5FBD, 0x8B4A, 0x5FC3, 0x9053, 0x5FC5, 0x954B, 0x5FCC, 0x8AF5, + 0x5FCD, 0x9445, 0x5FD6, 0x9C75, 0x5FD7, 0x8E75, 0x5FD8, 0x9659, 0x5FD9, 0x965A, 0x5FDC, 0x899E, 0x5FDD, 0x9C7A, 0x5FDE, 0xFABB, + 0x5FE0, 0x9289, 0x5FE4, 0x9C77, 0x5FEB, 0x89F5, 0x5FF0, 0x9CAB, 0x5FF1, 0x9C79, 0x5FF5, 0x944F, 0x5FF8, 0x9C78, 0x5FFB, 0x9C76, + 0x5FFD, 0x8D9A, 0x5FFF, 0x9C7C, 0x600E, 0x9C83, 0x600F, 0x9C89, 0x6010, 0x9C81, 0x6012, 0x937B, 0x6015, 0x9C86, 0x6016, 0x957C, + 0x6019, 0x9C80, 0x601B, 0x9C85, 0x601C, 0x97E5, 0x601D, 0x8E76, 0x6020, 0x91D3, 0x6021, 0x9C7D, 0x6025, 0x8B7D, 0x6026, 0x9C88, + 0x6027, 0x90AB, 0x6028, 0x8985, 0x6029, 0x9C82, 0x602A, 0x89F6, 0x602B, 0x9C87, 0x602F, 0x8BAF, 0x6031, 0x9C84, 0x603A, 0x9C8A, + 0x6041, 0x9C8C, 0x6042, 0x9C96, 0x6043, 0x9C94, 0x6046, 0x9C91, 0x604A, 0x9C90, 0x604B, 0x97F6, 0x604D, 0x9C92, 0x6050, 0x8BB0, + 0x6052, 0x8D50, 0x6055, 0x8F9A, 0x6059, 0x9C99, 0x605A, 0x9C8B, 0x605D, 0xFABC, 0x605F, 0x9C8F, 0x6060, 0x9C7E, 0x6062, 0x89F8, + 0x6063, 0x9C93, 0x6064, 0x9C95, 0x6065, 0x9270, 0x6068, 0x8DA6, 0x6069, 0x89B6, 0x606A, 0x9C8D, 0x606B, 0x9C98, 0x606C, 0x9C97, + 0x606D, 0x8BB1, 0x606F, 0x91A7, 0x6070, 0x8A86, 0x6075, 0x8C62, 0x6077, 0x9C8E, 0x6081, 0x9C9A, 0x6083, 0x9C9D, 0x6084, 0x9C9F, + 0x6085, 0xFABD, 0x6089, 0x8EBB, 0x608A, 0xFABE, 0x608B, 0x9CA5, 0x608C, 0x92EE, 0x608D, 0x9C9B, 0x6092, 0x9CA3, 0x6094, 0x89F7, + 0x6096, 0x9CA1, 0x6097, 0x9CA2, 0x609A, 0x9C9E, 0x609B, 0x9CA0, 0x609F, 0x8CE5, 0x60A0, 0x9749, 0x60A3, 0x8AB3, 0x60A6, 0x8978, + 0x60A7, 0x9CA4, 0x60A9, 0x9459, 0x60AA, 0x88AB, 0x60B2, 0x94DF, 0x60B3, 0x9C7B, 0x60B4, 0x9CAA, 0x60B5, 0x9CAE, 0x60B6, 0x96E3, + 0x60B8, 0x9CA7, 0x60BC, 0x9389, 0x60BD, 0x9CAC, 0x60C5, 0x8FEE, 0x60C6, 0x9CAD, 0x60C7, 0x93D5, 0x60D1, 0x9866, 0x60D3, 0x9CA9, + 0x60D5, 0xFAC0, 0x60D8, 0x9CAF, 0x60DA, 0x8D9B, 0x60DC, 0x90C9, 0x60DE, 0xFABF, 0x60DF, 0x88D2, 0x60E0, 0x9CA8, 0x60E1, 0x9CA6, + 0x60E3, 0x9179, 0x60E7, 0x9C9C, 0x60E8, 0x8E53, 0x60F0, 0x91C4, 0x60F1, 0x9CBB, 0x60F2, 0xFAC2, 0x60F3, 0x917A, 0x60F4, 0x9CB6, + 0x60F6, 0x9CB3, 0x60F7, 0x9CB4, 0x60F9, 0x8EE4, 0x60FA, 0x9CB7, 0x60FB, 0x9CBA, 0x6100, 0x9CB5, 0x6101, 0x8F44, 0x6103, 0x9CB8, + 0x6106, 0x9CB2, 0x6108, 0x96FA, 0x6109, 0x96F9, 0x610D, 0x9CBC, 0x610E, 0x9CBD, 0x610F, 0x88D3, 0x6111, 0xFAC3, 0x6115, 0x9CB1, + 0x611A, 0x8BF0, 0x611B, 0x88A4, 0x611F, 0x8AB4, 0x6120, 0xFAC1, 0x6121, 0x9CB9, 0x6127, 0x9CC1, 0x6128, 0x9CC0, 0x612C, 0x9CC5, + 0x6130, 0xFAC5, 0x6134, 0x9CC6, 0x6137, 0xFAC4, 0x613C, 0x9CC4, 0x613D, 0x9CC7, 0x613E, 0x9CBF, 0x613F, 0x9CC3, 0x6142, 0x9CC8, + 0x6144, 0x9CC9, 0x6147, 0x9CBE, 0x6148, 0x8E9C, 0x614A, 0x9CC2, 0x614B, 0x91D4, 0x614C, 0x8D51, 0x614D, 0x9CB0, 0x614E, 0x9054, + 0x6153, 0x9CD6, 0x6155, 0x95E7, 0x6158, 0x9CCC, 0x6159, 0x9CCD, 0x615A, 0x9CCE, 0x615D, 0x9CD5, 0x615F, 0x9CD4, 0x6162, 0x969D, + 0x6163, 0x8AB5, 0x6165, 0x9CD2, 0x6167, 0x8C64, 0x6168, 0x8A53, 0x616B, 0x9CCF, 0x616E, 0x97B6, 0x616F, 0x9CD1, 0x6170, 0x88D4, + 0x6171, 0x9CD3, 0x6173, 0x9CCA, 0x6174, 0x9CD0, 0x6175, 0x9CD7, 0x6176, 0x8C63, 0x6177, 0x9CCB, 0x617E, 0x977C, 0x6182, 0x974A, + 0x6187, 0x9CDA, 0x618A, 0x9CDE, 0x618E, 0x919E, 0x6190, 0x97F7, 0x6191, 0x9CDF, 0x6194, 0x9CDC, 0x6196, 0x9CD9, 0x6198, 0xFAC6, + 0x6199, 0x9CD8, 0x619A, 0x9CDD, 0x61A4, 0x95AE, 0x61A7, 0x93B2, 0x61A9, 0x8C65, 0x61AB, 0x9CE0, 0x61AC, 0x9CDB, 0x61AE, 0x9CE1, + 0x61B2, 0x8C9B, 0x61B6, 0x89AF, 0x61BA, 0x9CE9, 0x61BE, 0x8AB6, 0x61C3, 0x9CE7, 0x61C6, 0x9CE8, 0x61C7, 0x8DA7, 0x61C8, 0x9CE6, + 0x61C9, 0x9CE4, 0x61CA, 0x9CE3, 0x61CB, 0x9CEA, 0x61CC, 0x9CE2, 0x61CD, 0x9CEC, 0x61D0, 0x89F9, 0x61E3, 0x9CEE, 0x61E6, 0x9CED, + 0x61F2, 0x92A6, 0x61F4, 0x9CF1, 0x61F6, 0x9CEF, 0x61F7, 0x9CE5, 0x61F8, 0x8C9C, 0x61FA, 0x9CF0, 0x61FC, 0x9CF4, 0x61FD, 0x9CF3, + 0x61FE, 0x9CF5, 0x61FF, 0x9CF2, 0x6200, 0x9CF6, 0x6208, 0x9CF7, 0x6209, 0x9CF8, 0x620A, 0x95E8, 0x620C, 0x9CFA, 0x620D, 0x9CF9, + 0x620E, 0x8F5E, 0x6210, 0x90AC, 0x6211, 0x89E4, 0x6212, 0x89FA, 0x6213, 0xFAC7, 0x6214, 0x9CFB, 0x6216, 0x88BD, 0x621A, 0x90CA, + 0x621B, 0x9CFC, 0x621D, 0xE6C1, 0x621E, 0x9D40, 0x621F, 0x8C81, 0x6221, 0x9D41, 0x6226, 0x90ED, 0x622A, 0x9D42, 0x622E, 0x9D43, + 0x622F, 0x8B59, 0x6230, 0x9D44, 0x6232, 0x9D45, 0x6233, 0x9D46, 0x6234, 0x91D5, 0x6238, 0x8CCB, 0x623B, 0x96DF, 0x623F, 0x965B, + 0x6240, 0x8F8A, 0x6241, 0x9D47, 0x6247, 0x90EE, 0x6248, 0xE7BB, 0x6249, 0x94E0, 0x624B, 0x8EE8, 0x624D, 0x8DCB, 0x624E, 0x9D48, + 0x6253, 0x91C5, 0x6255, 0x95A5, 0x6258, 0x91EF, 0x625B, 0x9D4B, 0x625E, 0x9D49, 0x6260, 0x9D4C, 0x6263, 0x9D4A, 0x6268, 0x9D4D, + 0x626E, 0x95AF, 0x6271, 0x88B5, 0x6276, 0x957D, 0x6279, 0x94E1, 0x627C, 0x9D4E, 0x627E, 0x9D51, 0x627F, 0x8FB3, 0x6280, 0x8B5A, + 0x6282, 0x9D4F, 0x6283, 0x9D56, 0x6284, 0x8FB4, 0x6289, 0x9D50, 0x628A, 0x9463, 0x6291, 0x977D, 0x6292, 0x9D52, 0x6293, 0x9D53, + 0x6294, 0x9D57, 0x6295, 0x938A, 0x6296, 0x9D54, 0x6297, 0x8D52, 0x6298, 0x90DC, 0x629B, 0x9D65, 0x629C, 0x94B2, 0x629E, 0x91F0, + 0x62A6, 0xFAC8, 0x62AB, 0x94E2, 0x62AC, 0x9DAB, 0x62B1, 0x95F8, 0x62B5, 0x92EF, 0x62B9, 0x9695, 0x62BB, 0x9D5A, 0x62BC, 0x899F, + 0x62BD, 0x928A, 0x62C2, 0x9D63, 0x62C5, 0x9253, 0x62C6, 0x9D5D, 0x62C7, 0x9D64, 0x62C8, 0x9D5F, 0x62C9, 0x9D66, 0x62CA, 0x9D62, + 0x62CC, 0x9D61, 0x62CD, 0x948F, 0x62CF, 0x9D5B, 0x62D0, 0x89FB, 0x62D1, 0x9D59, 0x62D2, 0x8B91, 0x62D3, 0x91F1, 0x62D4, 0x9D55, + 0x62D7, 0x9D58, 0x62D8, 0x8D53, 0x62D9, 0x90D9, 0x62DB, 0x8FB5, 0x62DC, 0x9D60, 0x62DD, 0x9471, 0x62E0, 0x8B92, 0x62E1, 0x8A67, + 0x62EC, 0x8A87, 0x62ED, 0x9040, 0x62EE, 0x9D68, 0x62EF, 0x9D6D, 0x62F1, 0x9D69, 0x62F3, 0x8C9D, 0x62F5, 0x9D6E, 0x62F6, 0x8E41, + 0x62F7, 0x8D89, 0x62FE, 0x8F45, 0x62FF, 0x9D5C, 0x6301, 0x8E9D, 0x6302, 0x9D6B, 0x6307, 0x8E77, 0x6308, 0x9D6C, 0x6309, 0x88C2, + 0x630C, 0x9D67, 0x6311, 0x92A7, 0x6319, 0x8B93, 0x631F, 0x8BB2, 0x6327, 0x9D6A, 0x6328, 0x88A5, 0x632B, 0x8DC1, 0x632F, 0x9055, + 0x633A, 0x92F0, 0x633D, 0x94D2, 0x633E, 0x9D70, 0x633F, 0x917D, 0x6349, 0x91A8, 0x634C, 0x8E4A, 0x634D, 0x9D71, 0x634F, 0x9D73, + 0x6350, 0x9D6F, 0x6355, 0x95DF, 0x6357, 0x92BB, 0x635C, 0x917B, 0x6367, 0x95F9, 0x6368, 0x8ECC, 0x6369, 0x9D80, 0x636B, 0x9D7E, + 0x636E, 0x9098, 0x6372, 0x8C9E, 0x6376, 0x9D78, 0x6377, 0x8FB7, 0x637A, 0x93E6, 0x637B, 0x9450, 0x6380, 0x9D76, 0x6383, 0x917C, + 0x6388, 0x8EF6, 0x6389, 0x9D7B, 0x638C, 0x8FB6, 0x638E, 0x9D75, 0x638F, 0x9D7A, 0x6392, 0x9472, 0x6396, 0x9D74, 0x6398, 0x8C40, + 0x639B, 0x8A7C, 0x639F, 0x9D7C, 0x63A0, 0x97A9, 0x63A1, 0x8DCC, 0x63A2, 0x9254, 0x63A3, 0x9D79, 0x63A5, 0x90DA, 0x63A7, 0x8D54, + 0x63A8, 0x9084, 0x63A9, 0x8986, 0x63AA, 0x915B, 0x63AB, 0x9D77, 0x63AC, 0x8B64, 0x63B2, 0x8C66, 0x63B4, 0x92CD, 0x63B5, 0x9D7D, + 0x63BB, 0x917E, 0x63BE, 0x9D81, 0x63C0, 0x9D83, 0x63C3, 0x91B5, 0x63C4, 0x9D89, 0x63C6, 0x9D84, 0x63C9, 0x9D86, 0x63CF, 0x9560, + 0x63D0, 0x92F1, 0x63D2, 0x9D87, 0x63D6, 0x974B, 0x63DA, 0x9767, 0x63DB, 0x8AB7, 0x63E1, 0x88AC, 0x63E3, 0x9D85, 0x63E9, 0x9D82, + 0x63EE, 0x8AF6, 0x63F4, 0x8987, 0x63F5, 0xFAC9, 0x63F6, 0x9D88, 0x63FA, 0x9768, 0x6406, 0x9D8C, 0x640D, 0x91B9, 0x640F, 0x9D93, + 0x6413, 0x9D8D, 0x6416, 0x9D8A, 0x6417, 0x9D91, 0x641C, 0x9D72, 0x6426, 0x9D8E, 0x6428, 0x9D92, 0x642C, 0x94C0, 0x642D, 0x938B, + 0x6434, 0x9D8B, 0x6436, 0x9D8F, 0x643A, 0x8C67, 0x643E, 0x8DEF, 0x6442, 0x90DB, 0x644E, 0x9D97, 0x6458, 0x9345, 0x6460, 0xFACA, + 0x6467, 0x9D94, 0x6469, 0x9680, 0x646F, 0x9D95, 0x6476, 0x9D96, 0x6478, 0x96CC, 0x647A, 0x90A0, 0x6483, 0x8C82, 0x6488, 0x9D9D, + 0x6492, 0x8E54, 0x6493, 0x9D9A, 0x6495, 0x9D99, 0x649A, 0x9451, 0x649D, 0xFACB, 0x649E, 0x93B3, 0x64A4, 0x9350, 0x64A5, 0x9D9B, + 0x64A9, 0x9D9C, 0x64AB, 0x958F, 0x64AD, 0x9464, 0x64AE, 0x8E42, 0x64B0, 0x90EF, 0x64B2, 0x966F, 0x64B9, 0x8A68, 0x64BB, 0x9DA3, + 0x64BC, 0x9D9E, 0x64C1, 0x9769, 0x64C2, 0x9DA5, 0x64C5, 0x9DA1, 0x64C7, 0x9DA2, 0x64CD, 0x9180, 0x64CE, 0xFACC, 0x64D2, 0x9DA0, + 0x64D4, 0x9D5E, 0x64D8, 0x9DA4, 0x64DA, 0x9D9F, 0x64E0, 0x9DA9, 0x64E1, 0x9DAA, 0x64E2, 0x9346, 0x64E3, 0x9DAC, 0x64E6, 0x8E43, + 0x64E7, 0x9DA7, 0x64EC, 0x8B5B, 0x64EF, 0x9DAD, 0x64F1, 0x9DA6, 0x64F2, 0x9DB1, 0x64F4, 0x9DB0, 0x64F6, 0x9DAF, 0x64FA, 0x9DB2, + 0x64FD, 0x9DB4, 0x64FE, 0x8FEF, 0x6500, 0x9DB3, 0x6505, 0x9DB7, 0x6518, 0x9DB5, 0x651C, 0x9DB6, 0x651D, 0x9D90, 0x6523, 0x9DB9, + 0x6524, 0x9DB8, 0x652A, 0x9D98, 0x652B, 0x9DBA, 0x652C, 0x9DAE, 0x652F, 0x8E78, 0x6534, 0x9DBB, 0x6535, 0x9DBC, 0x6536, 0x9DBE, + 0x6537, 0x9DBD, 0x6538, 0x9DBF, 0x6539, 0x89FC, 0x653B, 0x8D55, 0x653E, 0x95FA, 0x653F, 0x90AD, 0x6545, 0x8CCC, 0x6548, 0x9DC1, + 0x654D, 0x9DC4, 0x654E, 0xFACD, 0x654F, 0x9571, 0x6551, 0x8B7E, 0x6555, 0x9DC3, 0x6556, 0x9DC2, 0x6557, 0x9473, 0x6558, 0x9DC5, + 0x6559, 0x8BB3, 0x655D, 0x9DC7, 0x655E, 0x9DC6, 0x6562, 0x8AB8, 0x6563, 0x8E55, 0x6566, 0x93D6, 0x656C, 0x8C68, 0x6570, 0x9094, + 0x6572, 0x9DC8, 0x6574, 0x90AE, 0x6575, 0x9347, 0x6577, 0x957E, 0x6578, 0x9DC9, 0x6582, 0x9DCA, 0x6583, 0x9DCB, 0x6587, 0x95B6, + 0x6588, 0x9B7C, 0x6589, 0x90C4, 0x658C, 0x956B, 0x658E, 0x8DD6, 0x6590, 0x94E3, 0x6591, 0x94C1, 0x6597, 0x936C, 0x6599, 0x97BF, + 0x659B, 0x9DCD, 0x659C, 0x8ECE, 0x659F, 0x9DCE, 0x65A1, 0x88B4, 0x65A4, 0x8BD2, 0x65A5, 0x90CB, 0x65A7, 0x9580, 0x65AB, 0x9DCF, + 0x65AC, 0x8E61, 0x65AD, 0x9266, 0x65AF, 0x8E7A, 0x65B0, 0x9056, 0x65B7, 0x9DD0, 0x65B9, 0x95FB, 0x65BC, 0x8997, 0x65BD, 0x8E7B, + 0x65C1, 0x9DD3, 0x65C3, 0x9DD1, 0x65C4, 0x9DD4, 0x65C5, 0x97B7, 0x65C6, 0x9DD2, 0x65CB, 0x90F9, 0x65CC, 0x9DD5, 0x65CF, 0x91B0, + 0x65D2, 0x9DD6, 0x65D7, 0x8AF8, 0x65D9, 0x9DD8, 0x65DB, 0x9DD7, 0x65E0, 0x9DD9, 0x65E1, 0x9DDA, 0x65E2, 0x8AF9, 0x65E5, 0x93FA, + 0x65E6, 0x9255, 0x65E7, 0x8B8C, 0x65E8, 0x8E7C, 0x65E9, 0x9181, 0x65EC, 0x8F7B, 0x65ED, 0x88AE, 0x65F1, 0x9DDB, 0x65FA, 0x89A0, + 0x65FB, 0x9DDF, 0x6600, 0xFACE, 0x6602, 0x8D56, 0x6603, 0x9DDE, 0x6606, 0x8DA9, 0x6607, 0x8FB8, 0x6609, 0xFAD1, 0x660A, 0x9DDD, + 0x660C, 0x8FB9, 0x660E, 0x96BE, 0x660F, 0x8DA8, 0x6613, 0x88D5, 0x6614, 0x90CC, 0x6615, 0xFACF, 0x661C, 0x9DE4, 0x661E, 0xFAD3, + 0x661F, 0x90AF, 0x6620, 0x8966, 0x6624, 0xFAD4, 0x6625, 0x8F74, 0x6627, 0x9686, 0x6628, 0x8DF0, 0x662D, 0x8FBA, 0x662E, 0xFAD2, + 0x662F, 0x90A5, 0x6631, 0xFA63, 0x6634, 0x9DE3, 0x6635, 0x9DE1, 0x6636, 0x9DE2, 0x663B, 0xFAD0, 0x663C, 0x928B, 0x663F, 0x9E45, + 0x6641, 0x9DE8, 0x6642, 0x8E9E, 0x6643, 0x8D57, 0x6644, 0x9DE6, 0x6649, 0x9DE7, 0x664B, 0x9057, 0x664F, 0x9DE5, 0x6652, 0x8E4E, + 0x6657, 0xFAD6, 0x6659, 0xFAD7, 0x665D, 0x9DEA, 0x665E, 0x9DE9, 0x665F, 0x9DEE, 0x6662, 0x9DEF, 0x6664, 0x9DEB, 0x6665, 0xFAD5, + 0x6666, 0x8A41, 0x6667, 0x9DEC, 0x6668, 0x9DED, 0x6669, 0x94D3, 0x666E, 0x9581, 0x666F, 0x8C69, 0x6670, 0x9DF0, 0x6673, 0xFAD9, + 0x6674, 0x90B0, 0x6676, 0x8FBB, 0x667A, 0x9271, 0x6681, 0x8BC5, 0x6683, 0x9DF1, 0x6684, 0x9DF5, 0x6687, 0x89C9, 0x6688, 0x9DF2, + 0x6689, 0x9DF4, 0x668E, 0x9DF3, 0x6691, 0x8F8B, 0x6696, 0x9267, 0x6697, 0x88C3, 0x6698, 0x9DF6, 0x6699, 0xFADA, 0x669D, 0x9DF7, + 0x66A0, 0xFADB, 0x66A2, 0x92A8, 0x66A6, 0x97EF, 0x66AB, 0x8E62, 0x66AE, 0x95E9, 0x66B2, 0xFADC, 0x66B4, 0x965C, 0x66B8, 0x9E41, + 0x66B9, 0x9DF9, 0x66BC, 0x9DFC, 0x66BE, 0x9DFB, 0x66BF, 0xFADD, 0x66C1, 0x9DF8, 0x66C4, 0x9E40, 0x66C7, 0x93DC, 0x66C9, 0x9DFA, + 0x66D6, 0x9E42, 0x66D9, 0x8F8C, 0x66DA, 0x9E43, 0x66DC, 0x976A, 0x66DD, 0x9498, 0x66E0, 0x9E44, 0x66E6, 0x9E46, 0x66E9, 0x9E47, + 0x66F0, 0x9E48, 0x66F2, 0x8BC8, 0x66F3, 0x8967, 0x66F4, 0x8D58, 0x66F5, 0x9E49, 0x66F7, 0x9E4A, 0x66F8, 0x8F91, 0x66F9, 0x9182, + 0x66FA, 0xFADE, 0x66FB, 0xFA66, 0x66FC, 0x99D6, 0x66FD, 0x915D, 0x66FE, 0x915C, 0x66FF, 0x91D6, 0x6700, 0x8DC5, 0x6703, 0x98F0, + 0x6708, 0x8C8E, 0x6709, 0x974C, 0x670B, 0x95FC, 0x670D, 0x959E, 0x670E, 0xFADF, 0x670F, 0x9E4B, 0x6714, 0x8DF1, 0x6715, 0x92BD, + 0x6716, 0x9E4C, 0x6717, 0x984E, 0x671B, 0x965D, 0x671D, 0x92A9, 0x671E, 0x9E4D, 0x671F, 0x8AFA, 0x6726, 0x9E4E, 0x6727, 0x9E4F, + 0x6728, 0x96D8, 0x672A, 0x96A2, 0x672B, 0x9696, 0x672C, 0x967B, 0x672D, 0x8E44, 0x672E, 0x9E51, 0x6731, 0x8EE9, 0x6734, 0x9670, + 0x6736, 0x9E53, 0x6737, 0x9E56, 0x6738, 0x9E55, 0x673A, 0x8AF7, 0x673D, 0x8B80, 0x673F, 0x9E52, 0x6741, 0x9E54, 0x6746, 0x9E57, + 0x6749, 0x9099, 0x674E, 0x979B, 0x674F, 0x88C7, 0x6750, 0x8DDE, 0x6751, 0x91BA, 0x6753, 0x8EDB, 0x6756, 0x8FF1, 0x6759, 0x9E5A, + 0x675C, 0x936D, 0x675E, 0x9E58, 0x675F, 0x91A9, 0x6760, 0x9E59, 0x6761, 0x8FF0, 0x6762, 0x96DB, 0x6763, 0x9E5B, 0x6764, 0x9E5C, + 0x6765, 0x9788, 0x6766, 0xFAE1, 0x676A, 0x9E61, 0x676D, 0x8D59, 0x676F, 0x9474, 0x6770, 0x9E5E, 0x6771, 0x938C, 0x6772, 0x9DDC, + 0x6773, 0x9DE0, 0x6775, 0x8B6E, 0x6777, 0x9466, 0x677C, 0x9E60, 0x677E, 0x8FBC, 0x677F, 0x94C2, 0x6785, 0x9E66, 0x6787, 0x94F8, + 0x6789, 0x9E5D, 0x678B, 0x9E63, 0x678C, 0x9E62, 0x6790, 0x90CD, 0x6795, 0x968D, 0x6797, 0x97D1, 0x679A, 0x9687, 0x679C, 0x89CA, + 0x679D, 0x8E7D, 0x67A0, 0x9867, 0x67A1, 0x9E65, 0x67A2, 0x9095, 0x67A6, 0x9E64, 0x67A9, 0x9E5F, 0x67AF, 0x8CCD, 0x67B3, 0x9E6B, + 0x67B4, 0x9E69, 0x67B6, 0x89CB, 0x67B7, 0x9E67, 0x67B8, 0x9E6D, 0x67B9, 0x9E73, 0x67BB, 0xFAE2, 0x67C0, 0xFAE4, 0x67C1, 0x91C6, + 0x67C4, 0x95BF, 0x67C6, 0x9E75, 0x67CA, 0x9541, 0x67CE, 0x9E74, 0x67CF, 0x9490, 0x67D0, 0x965E, 0x67D1, 0x8AB9, 0x67D3, 0x90F5, + 0x67D4, 0x8F5F, 0x67D8, 0x92D1, 0x67DA, 0x974D, 0x67DD, 0x9E70, 0x67DE, 0x9E6F, 0x67E2, 0x9E71, 0x67E4, 0x9E6E, 0x67E7, 0x9E76, + 0x67E9, 0x9E6C, 0x67EC, 0x9E6A, 0x67EE, 0x9E72, 0x67EF, 0x9E68, 0x67F1, 0x928C, 0x67F3, 0x96F6, 0x67F4, 0x8EC4, 0x67F5, 0x8DF2, + 0x67FB, 0x8DB8, 0x67FE, 0x968F, 0x67FF, 0x8A60, 0x6801, 0xFAE5, 0x6802, 0x92CC, 0x6803, 0x93C8, 0x6804, 0x8968, 0x6813, 0x90F0, + 0x6816, 0x90B2, 0x6817, 0x8C49, 0x681E, 0x9E78, 0x6821, 0x8D5A, 0x6822, 0x8A9C, 0x6829, 0x9E7A, 0x682A, 0x8A94, 0x682B, 0x9E81, + 0x6832, 0x9E7D, 0x6834, 0x90F1, 0x6838, 0x8A6A, 0x6839, 0x8DAA, 0x683C, 0x8A69, 0x683D, 0x8DCD, 0x6840, 0x9E7B, 0x6841, 0x8C85, + 0x6842, 0x8C6A, 0x6843, 0x938D, 0x6844, 0xFAE6, 0x6846, 0x9E79, 0x6848, 0x88C4, 0x684D, 0x9E7C, 0x684E, 0x9E7E, 0x6850, 0x8BCB, + 0x6851, 0x8C4B, 0x6852, 0xFAE3, 0x6853, 0x8ABA, 0x6854, 0x8B6A, 0x6859, 0x9E82, 0x685C, 0x8DF7, 0x685D, 0x9691, 0x685F, 0x8E56, + 0x6863, 0x9E83, 0x6867, 0x954F, 0x6874, 0x9E8F, 0x6876, 0x89B1, 0x6877, 0x9E84, 0x687E, 0x9E95, 0x687F, 0x9E85, 0x6881, 0x97C0, + 0x6883, 0x9E8C, 0x6885, 0x947E, 0x688D, 0x9E94, 0x688F, 0x9E87, 0x6893, 0x88B2, 0x6894, 0x9E89, 0x6897, 0x8D5B, 0x689B, 0x9E8B, + 0x689D, 0x9E8A, 0x689F, 0x9E86, 0x68A0, 0x9E91, 0x68A2, 0x8FBD, 0x68A6, 0x9AEB, 0x68A7, 0x8CE6, 0x68A8, 0x979C, 0x68AD, 0x9E88, + 0x68AF, 0x92F2, 0x68B0, 0x8A42, 0x68B1, 0x8DAB, 0x68B3, 0x9E80, 0x68B5, 0x9E90, 0x68B6, 0x8A81, 0x68B9, 0x9E8E, 0x68BA, 0x9E92, + 0x68BC, 0x938E, 0x68C4, 0x8AFC, 0x68C6, 0x9EB0, 0x68C8, 0xFA64, 0x68C9, 0x96C7, 0x68CA, 0x9E97, 0x68CB, 0x8AFB, 0x68CD, 0x9E9E, + 0x68CF, 0xFAE7, 0x68D2, 0x965F, 0x68D4, 0x9E9F, 0x68D5, 0x9EA1, 0x68D7, 0x9EA5, 0x68D8, 0x9E99, 0x68DA, 0x9249, 0x68DF, 0x938F, + 0x68E0, 0x9EA9, 0x68E1, 0x9E9C, 0x68E3, 0x9EA6, 0x68E7, 0x9EA0, 0x68EE, 0x9058, 0x68EF, 0x9EAA, 0x68F2, 0x90B1, 0x68F9, 0x9EA8, + 0x68FA, 0x8ABB, 0x6900, 0x986F, 0x6901, 0x9E96, 0x6904, 0x9EA4, 0x6905, 0x88D6, 0x6908, 0x9E98, 0x690B, 0x96B8, 0x690C, 0x9E9D, + 0x690D, 0x9041, 0x690E, 0x92C5, 0x690F, 0x9E93, 0x6912, 0x9EA3, 0x6919, 0x909A, 0x691A, 0x9EAD, 0x691B, 0x8A91, 0x691C, 0x8C9F, + 0x6921, 0x9EAF, 0x6922, 0x9E9A, 0x6923, 0x9EAE, 0x6925, 0x9EA7, 0x6926, 0x9E9B, 0x6928, 0x9EAB, 0x692A, 0x9EAC, 0x6930, 0x9EBD, + 0x6934, 0x93CC, 0x6936, 0x9EA2, 0x6939, 0x9EB9, 0x693D, 0x9EBB, 0x693F, 0x92D6, 0x694A, 0x976B, 0x6953, 0x9596, 0x6954, 0x9EB6, + 0x6955, 0x91C8, 0x6959, 0x9EBC, 0x695A, 0x915E, 0x695C, 0x9EB3, 0x695D, 0x9EC0, 0x695E, 0x9EBF, 0x6960, 0x93ED, 0x6961, 0x9EBE, + 0x6962, 0x93E8, 0x6968, 0xFAE9, 0x696A, 0x9EC2, 0x696B, 0x9EB5, 0x696D, 0x8BC6, 0x696E, 0x9EB8, 0x696F, 0x8F7C, 0x6973, 0x9480, + 0x6974, 0x9EBA, 0x6975, 0x8BC9, 0x6977, 0x9EB2, 0x6978, 0x9EB4, 0x6979, 0x9EB1, 0x697C, 0x984F, 0x697D, 0x8A79, 0x697E, 0x9EB7, + 0x6981, 0x9EC1, 0x6982, 0x8A54, 0x698A, 0x8DE5, 0x698E, 0x897C, 0x6991, 0x9ED2, 0x6994, 0x9850, 0x6995, 0x9ED5, 0x6998, 0xFAEB, + 0x699B, 0x9059, 0x699C, 0x9ED4, 0x69A0, 0x9ED3, 0x69A7, 0x9ED0, 0x69AE, 0x9EC4, 0x69B1, 0x9EE1, 0x69B2, 0x9EC3, 0x69B4, 0x9ED6, + 0x69BB, 0x9ECE, 0x69BE, 0x9EC9, 0x69BF, 0x9EC6, 0x69C1, 0x9EC7, 0x69C3, 0x9ECF, 0x69C7, 0xEAA0, 0x69CA, 0x9ECC, 0x69CB, 0x8D5C, + 0x69CC, 0x92C6, 0x69CD, 0x9184, 0x69CE, 0x9ECA, 0x69D0, 0x9EC5, 0x69D3, 0x9EC8, 0x69D8, 0x976C, 0x69D9, 0x968A, 0x69DD, 0x9ECD, + 0x69DE, 0x9ED7, 0x69E2, 0xFAEC, 0x69E7, 0x9EDF, 0x69E8, 0x9ED8, 0x69EB, 0x9EE5, 0x69ED, 0x9EE3, 0x69F2, 0x9EDE, 0x69F9, 0x9EDD, + 0x69FB, 0x92CE, 0x69FD, 0x9185, 0x69FF, 0x9EDB, 0x6A02, 0x9ED9, 0x6A05, 0x9EE0, 0x6A0A, 0x9EE6, 0x6A0B, 0x94F3, 0x6A0C, 0x9EEC, + 0x6A12, 0x9EE7, 0x6A13, 0x9EEA, 0x6A14, 0x9EE4, 0x6A17, 0x9294, 0x6A19, 0x9557, 0x6A1B, 0x9EDA, 0x6A1E, 0x9EE2, 0x6A1F, 0x8FBE, + 0x6A21, 0x96CD, 0x6A22, 0x9EF6, 0x6A23, 0x9EE9, 0x6A29, 0x8CA0, 0x6A2A, 0x89A1, 0x6A2B, 0x8A7E, 0x6A2E, 0x9ED1, 0x6A30, 0xFAED, + 0x6A35, 0x8FBF, 0x6A36, 0x9EEE, 0x6A38, 0x9EF5, 0x6A39, 0x8EF7, 0x6A3A, 0x8A92, 0x6A3D, 0x924D, 0x6A44, 0x9EEB, 0x6A46, 0xFAEF, + 0x6A47, 0x9EF0, 0x6A48, 0x9EF4, 0x6A4B, 0x8BB4, 0x6A58, 0x8B6B, 0x6A59, 0x9EF2, 0x6A5F, 0x8B40, 0x6A61, 0x93C9, 0x6A62, 0x9EF1, + 0x6A66, 0x9EF3, 0x6A6B, 0xFAEE, 0x6A72, 0x9EED, 0x6A73, 0xFAF0, 0x6A78, 0x9EEF, 0x6A7E, 0xFAF1, 0x6A7F, 0x8A80, 0x6A80, 0x9268, + 0x6A84, 0x9EFA, 0x6A8D, 0x9EF8, 0x6A8E, 0x8CE7, 0x6A90, 0x9EF7, 0x6A97, 0x9F40, 0x6A9C, 0x9E77, 0x6AA0, 0x9EF9, 0x6AA2, 0x9EFB, + 0x6AA3, 0x9EFC, 0x6AAA, 0x9F4B, 0x6AAC, 0x9F47, 0x6AAE, 0x9E8D, 0x6AB3, 0x9F46, 0x6AB8, 0x9F45, 0x6ABB, 0x9F42, 0x6AC1, 0x9EE8, + 0x6AC2, 0x9F44, 0x6AC3, 0x9F43, 0x6AD1, 0x9F49, 0x6AD3, 0x9845, 0x6ADA, 0x9F4C, 0x6ADB, 0x8BF9, 0x6ADE, 0x9F48, 0x6ADF, 0x9F4A, + 0x6AE2, 0xFAF2, 0x6AE4, 0xFAF3, 0x6AE8, 0x94A5, 0x6AEA, 0x9F4D, 0x6AFA, 0x9F51, 0x6AFB, 0x9F4E, 0x6B04, 0x9793, 0x6B05, 0x9F4F, + 0x6B0A, 0x9EDC, 0x6B12, 0x9F52, 0x6B16, 0x9F53, 0x6B1D, 0x8954, 0x6B1F, 0x9F55, 0x6B20, 0x8C87, 0x6B21, 0x8E9F, 0x6B23, 0x8BD3, + 0x6B27, 0x89A2, 0x6B32, 0x977E, 0x6B37, 0x9F57, 0x6B38, 0x9F56, 0x6B39, 0x9F59, 0x6B3A, 0x8B5C, 0x6B3D, 0x8BD4, 0x6B3E, 0x8ABC, + 0x6B43, 0x9F5C, 0x6B47, 0x9F5B, 0x6B49, 0x9F5D, 0x6B4C, 0x89CC, 0x6B4E, 0x9256, 0x6B50, 0x9F5E, 0x6B53, 0x8ABD, 0x6B54, 0x9F60, + 0x6B59, 0x9F5F, 0x6B5B, 0x9F61, 0x6B5F, 0x9F62, 0x6B61, 0x9F63, 0x6B62, 0x8E7E, 0x6B63, 0x90B3, 0x6B64, 0x8D9F, 0x6B66, 0x9590, + 0x6B69, 0x95E0, 0x6B6A, 0x9863, 0x6B6F, 0x8E95, 0x6B73, 0x8DCE, 0x6B74, 0x97F0, 0x6B78, 0x9F64, 0x6B79, 0x9F65, 0x6B7B, 0x8E80, + 0x6B7F, 0x9F66, 0x6B80, 0x9F67, 0x6B83, 0x9F69, 0x6B84, 0x9F68, 0x6B86, 0x9677, 0x6B89, 0x8F7D, 0x6B8A, 0x8EEA, 0x6B8B, 0x8E63, + 0x6B8D, 0x9F6A, 0x6B95, 0x9F6C, 0x6B96, 0x9042, 0x6B98, 0x9F6B, 0x6B9E, 0x9F6D, 0x6BA4, 0x9F6E, 0x6BAA, 0x9F6F, 0x6BAB, 0x9F70, + 0x6BAF, 0x9F71, 0x6BB1, 0x9F73, 0x6BB2, 0x9F72, 0x6BB3, 0x9F74, 0x6BB4, 0x89A3, 0x6BB5, 0x9269, 0x6BB7, 0x9F75, 0x6BBA, 0x8E45, + 0x6BBB, 0x8A6B, 0x6BBC, 0x9F76, 0x6BBF, 0x9361, 0x6BC0, 0x9ACA, 0x6BC5, 0x8B42, 0x6BC6, 0x9F77, 0x6BCB, 0x9F78, 0x6BCD, 0x95EA, + 0x6BCE, 0x9688, 0x6BD2, 0x93C5, 0x6BD3, 0x9F79, 0x6BD4, 0x94E4, 0x6BD6, 0xFAF4, 0x6BD8, 0x94F9, 0x6BDB, 0x96D1, 0x6BDF, 0x9F7A, + 0x6BEB, 0x9F7C, 0x6BEC, 0x9F7B, 0x6BEF, 0x9F7E, 0x6BF3, 0x9F7D, 0x6C08, 0x9F81, 0x6C0F, 0x8E81, 0x6C11, 0x96AF, 0x6C13, 0x9F82, + 0x6C14, 0x9F83, 0x6C17, 0x8B43, 0x6C1B, 0x9F84, 0x6C23, 0x9F86, 0x6C24, 0x9F85, 0x6C34, 0x9085, 0x6C37, 0x9558, 0x6C38, 0x8969, + 0x6C3E, 0x94C3, 0x6C3F, 0xFAF5, 0x6C40, 0x92F3, 0x6C41, 0x8F60, 0x6C42, 0x8B81, 0x6C4E, 0x94C4, 0x6C50, 0x8EAC, 0x6C55, 0x9F88, + 0x6C57, 0x8ABE, 0x6C5A, 0x8998, 0x6C5C, 0xFAF6, 0x6C5D, 0x93F0, 0x6C5E, 0x9F87, 0x6C5F, 0x8D5D, 0x6C60, 0x9272, 0x6C62, 0x9F89, + 0x6C68, 0x9F91, 0x6C6A, 0x9F8A, 0x6C6F, 0xFAF8, 0x6C70, 0x91BF, 0x6C72, 0x8B82, 0x6C73, 0x9F92, 0x6C7A, 0x8C88, 0x6C7D, 0x8B44, + 0x6C7E, 0x9F90, 0x6C81, 0x9F8E, 0x6C82, 0x9F8B, 0x6C83, 0x9780, 0x6C86, 0xFAF7, 0x6C88, 0x92BE, 0x6C8C, 0x93D7, 0x6C8D, 0x9F8C, + 0x6C90, 0x9F94, 0x6C92, 0x9F93, 0x6C93, 0x8C42, 0x6C96, 0x89AB, 0x6C99, 0x8DB9, 0x6C9A, 0x9F8D, 0x6C9B, 0x9F8F, 0x6CA1, 0x9676, + 0x6CA2, 0x91F2, 0x6CAB, 0x9697, 0x6CAE, 0x9F9C, 0x6CB1, 0x9F9D, 0x6CB3, 0x89CD, 0x6CB8, 0x95A6, 0x6CB9, 0x96FB, 0x6CBA, 0x9F9F, + 0x6CBB, 0x8EA1, 0x6CBC, 0x8FC0, 0x6CBD, 0x9F98, 0x6CBE, 0x9F9E, 0x6CBF, 0x8988, 0x6CC1, 0x8BB5, 0x6CC4, 0x9F95, 0x6CC5, 0x9F9A, + 0x6CC9, 0x90F2, 0x6CCA, 0x9491, 0x6CCC, 0x94E5, 0x6CD3, 0x9F97, 0x6CD5, 0x9640, 0x6CD7, 0x9F99, 0x6CD9, 0x9FA2, 0x6CDA, 0xFAF9, + 0x6CDB, 0x9FA0, 0x6CDD, 0x9F9B, 0x6CE1, 0x9641, 0x6CE2, 0x9467, 0x6CE3, 0x8B83, 0x6CE5, 0x9344, 0x6CE8, 0x928D, 0x6CEA, 0x9FA3, + 0x6CEF, 0x9FA1, 0x6CF0, 0x91D7, 0x6CF1, 0x9F96, 0x6CF3, 0x896A, 0x6D04, 0xFAFA, 0x6D0B, 0x976D, 0x6D0C, 0x9FAE, 0x6D12, 0x9FAD, + 0x6D17, 0x90F4, 0x6D19, 0x9FAA, 0x6D1B, 0x978C, 0x6D1E, 0x93B4, 0x6D1F, 0x9FA4, 0x6D25, 0x92C3, 0x6D29, 0x896B, 0x6D2A, 0x8D5E, + 0x6D2B, 0x9FA7, 0x6D32, 0x8F46, 0x6D33, 0x9FAC, 0x6D35, 0x9FAB, 0x6D36, 0x9FA6, 0x6D38, 0x9FA9, 0x6D3B, 0x8A88, 0x6D3D, 0x9FA8, + 0x6D3E, 0x9468, 0x6D41, 0x97AC, 0x6D44, 0x8FF2, 0x6D45, 0x90F3, 0x6D59, 0x9FB4, 0x6D5A, 0x9FB2, 0x6D5C, 0x956C, 0x6D63, 0x9FAF, + 0x6D64, 0x9FB1, 0x6D66, 0x8959, 0x6D69, 0x8D5F, 0x6D6A, 0x9851, 0x6D6C, 0x8A5C, 0x6D6E, 0x9582, 0x6D6F, 0xFAFC, 0x6D74, 0x9781, + 0x6D77, 0x8A43, 0x6D78, 0x905A, 0x6D79, 0x9FB3, 0x6D85, 0x9FB8, 0x6D87, 0xFAFB, 0x6D88, 0x8FC1, 0x6D8C, 0x974F, 0x6D8E, 0x9FB5, + 0x6D93, 0x9FB0, 0x6D95, 0x9FB6, 0x6D96, 0xFB40, 0x6D99, 0x97DC, 0x6D9B, 0x9393, 0x6D9C, 0x93C0, 0x6DAC, 0xFB41, 0x6DAF, 0x8A55, + 0x6DB2, 0x8974, 0x6DB5, 0x9FBC, 0x6DB8, 0x9FBF, 0x6DBC, 0x97C1, 0x6DC0, 0x9784, 0x6DC5, 0x9FC6, 0x6DC6, 0x9FC0, 0x6DC7, 0x9FBD, + 0x6DCB, 0x97D2, 0x6DCC, 0x9FC3, 0x6DCF, 0xFB42, 0x6DD1, 0x8F69, 0x6DD2, 0x9FC5, 0x6DD5, 0x9FCA, 0x6DD8, 0x9391, 0x6DD9, 0x9FC8, + 0x6DDE, 0x9FC2, 0x6DE1, 0x9257, 0x6DE4, 0x9FC9, 0x6DE6, 0x9FBE, 0x6DE8, 0x9FC4, 0x6DEA, 0x9FCB, 0x6DEB, 0x88FA, 0x6DEC, 0x9FC1, + 0x6DEE, 0x9FCC, 0x6DF1, 0x905B, 0x6DF2, 0xFB44, 0x6DF3, 0x8F7E, 0x6DF5, 0x95A3, 0x6DF7, 0x8DAC, 0x6DF8, 0xFB43, 0x6DF9, 0x9FB9, + 0x6DFA, 0x9FC7, 0x6DFB, 0x9359, 0x6DFC, 0xFB45, 0x6E05, 0x90B4, 0x6E07, 0x8A89, 0x6E08, 0x8DCF, 0x6E09, 0x8FC2, 0x6E0A, 0x9FBB, + 0x6E0B, 0x8F61, 0x6E13, 0x8C6B, 0x6E15, 0x9FBA, 0x6E19, 0x9FD0, 0x6E1A, 0x8F8D, 0x6E1B, 0x8CB8, 0x6E1D, 0x9FDF, 0x6E1F, 0x9FD9, + 0x6E20, 0x8B94, 0x6E21, 0x936E, 0x6E23, 0x9FD4, 0x6E24, 0x9FDD, 0x6E25, 0x88AD, 0x6E26, 0x8951, 0x6E27, 0xFB48, 0x6E29, 0x89B7, + 0x6E2B, 0x9FD6, 0x6E2C, 0x91AA, 0x6E2D, 0x9FCD, 0x6E2E, 0x9FCF, 0x6E2F, 0x8D60, 0x6E38, 0x9FE0, 0x6E39, 0xFB46, 0x6E3A, 0x9FDB, + 0x6E3C, 0xFB49, 0x6E3E, 0x9FD3, 0x6E43, 0x9FDA, 0x6E4A, 0x96A9, 0x6E4D, 0x9FD8, 0x6E4E, 0x9FDC, 0x6E56, 0x8CCE, 0x6E58, 0x8FC3, + 0x6E5B, 0x9258, 0x6E5C, 0xFB47, 0x6E5F, 0x9FD2, 0x6E67, 0x974E, 0x6E6B, 0x9FD5, 0x6E6E, 0x9FCE, 0x6E6F, 0x9392, 0x6E72, 0x9FD1, + 0x6E76, 0x9FD7, 0x6E7E, 0x9870, 0x6E7F, 0x8EBC, 0x6E80, 0x969E, 0x6E82, 0x9FE1, 0x6E8C, 0x94AC, 0x6E8F, 0x9FED, 0x6E90, 0x8CB9, + 0x6E96, 0x8F80, 0x6E98, 0x9FE3, 0x6E9C, 0x97AD, 0x6E9D, 0x8D61, 0x6E9F, 0x9FF0, 0x6EA2, 0x88EC, 0x6EA5, 0x9FEE, 0x6EAA, 0x9FE2, + 0x6EAF, 0x9FE8, 0x6EB2, 0x9FEA, 0x6EB6, 0x976E, 0x6EB7, 0x9FE5, 0x6EBA, 0x934D, 0x6EBD, 0x9FE7, 0x6EBF, 0xFB4A, 0x6EC2, 0x9FEF, + 0x6EC4, 0x9FE9, 0x6EC5, 0x96C5, 0x6EC9, 0x9FE4, 0x6ECB, 0x8EA0, 0x6ECC, 0x9FFC, 0x6ED1, 0x8A8A, 0x6ED3, 0x9FE6, 0x6ED4, 0x9FEB, + 0x6ED5, 0x9FEC, 0x6EDD, 0x91EA, 0x6EDE, 0x91D8, 0x6EEC, 0x9FF4, 0x6EEF, 0x9FFA, 0x6EF2, 0x9FF8, 0x6EF4, 0x9348, 0x6EF7, 0xE042, + 0x6EF8, 0x9FF5, 0x6EFE, 0x9FF6, 0x6EFF, 0x9FDE, 0x6F01, 0x8B99, 0x6F02, 0x9559, 0x6F06, 0x8EBD, 0x6F09, 0x8D97, 0x6F0F, 0x9852, + 0x6F11, 0x9FF2, 0x6F13, 0xE041, 0x6F14, 0x8989, 0x6F15, 0x9186, 0x6F20, 0x9499, 0x6F22, 0x8ABF, 0x6F23, 0x97F8, 0x6F2B, 0x969F, + 0x6F2C, 0x92D0, 0x6F31, 0x9FF9, 0x6F32, 0x9FFB, 0x6F38, 0x9151, 0x6F3E, 0xE040, 0x6F3F, 0x9FF7, 0x6F41, 0x9FF1, 0x6F45, 0x8AC1, + 0x6F54, 0x8C89, 0x6F58, 0xE04E, 0x6F5B, 0xE049, 0x6F5C, 0x90F6, 0x6F5F, 0x8A83, 0x6F64, 0x8F81, 0x6F66, 0xE052, 0x6F6D, 0xE04B, + 0x6F6E, 0x92AA, 0x6F6F, 0xE048, 0x6F70, 0x92D7, 0x6F74, 0xE06B, 0x6F78, 0xE045, 0x6F7A, 0xE044, 0x6F7C, 0xE04D, 0x6F80, 0xE047, + 0x6F81, 0xE046, 0x6F82, 0xE04C, 0x6F84, 0x909F, 0x6F86, 0xE043, 0x6F88, 0xFB4B, 0x6F8E, 0xE04F, 0x6F91, 0xE050, 0x6F97, 0x8AC0, + 0x6FA1, 0xE055, 0x6FA3, 0xE054, 0x6FA4, 0xE056, 0x6FAA, 0xE059, 0x6FB1, 0x9362, 0x6FB3, 0xE053, 0x6FB5, 0xFB4C, 0x6FB9, 0xE057, + 0x6FC0, 0x8C83, 0x6FC1, 0x91F7, 0x6FC2, 0xE051, 0x6FC3, 0x945A, 0x6FC6, 0xE058, 0x6FD4, 0xE05D, 0x6FD5, 0xE05B, 0x6FD8, 0xE05E, + 0x6FDB, 0xE061, 0x6FDF, 0xE05A, 0x6FE0, 0x8D8A, 0x6FE1, 0x9447, 0x6FE4, 0x9FB7, 0x6FEB, 0x9794, 0x6FEC, 0xE05C, 0x6FEE, 0xE060, + 0x6FEF, 0x91F3, 0x6FF1, 0xE05F, 0x6FF3, 0xE04A, 0x6FF5, 0xFB4D, 0x6FF6, 0xE889, 0x6FFA, 0xE064, 0x6FFE, 0xE068, 0x7001, 0xE066, + 0x7005, 0xFB4E, 0x7007, 0xFB4F, 0x7009, 0xE062, 0x700B, 0xE063, 0x700F, 0xE067, 0x7011, 0xE065, 0x7015, 0x956D, 0x7018, 0xE06D, + 0x701A, 0xE06A, 0x701B, 0xE069, 0x701D, 0xE06C, 0x701E, 0x93D2, 0x701F, 0xE06E, 0x7026, 0x9295, 0x7027, 0x91EB, 0x7028, 0xFB50, + 0x702C, 0x90A3, 0x7030, 0xE06F, 0x7032, 0xE071, 0x703E, 0xE070, 0x704C, 0x9FF3, 0x7051, 0xE072, 0x7058, 0x93E5, 0x7063, 0xE073, + 0x706B, 0x89CE, 0x706F, 0x9394, 0x7070, 0x8A44, 0x7078, 0x8B84, 0x707C, 0x8EDC, 0x707D, 0x8DD0, 0x7085, 0xFB51, 0x7089, 0x9846, + 0x708A, 0x9086, 0x708E, 0x898A, 0x7092, 0xE075, 0x7099, 0xE074, 0x70AB, 0xFB52, 0x70AC, 0xE078, 0x70AD, 0x9259, 0x70AE, 0xE07B, + 0x70AF, 0xE076, 0x70B3, 0xE07A, 0x70B8, 0xE079, 0x70B9, 0x935F, 0x70BA, 0x88D7, 0x70BB, 0xFA62, 0x70C8, 0x97F3, 0x70CB, 0xE07D, + 0x70CF, 0x8947, 0x70D9, 0xE080, 0x70DD, 0xE07E, 0x70DF, 0xE07C, 0x70F1, 0xE077, 0x70F9, 0x9642, 0x70FD, 0xE082, 0x7104, 0xFB54, + 0x7109, 0xE081, 0x710F, 0xFB53, 0x7114, 0x898B, 0x7119, 0xE084, 0x711A, 0x95B0, 0x711C, 0xE083, 0x7121, 0x96B3, 0x7126, 0x8FC5, + 0x7136, 0x9152, 0x713C, 0x8FC4, 0x7146, 0xFB56, 0x7147, 0xFB57, 0x7149, 0x97F9, 0x714C, 0xE08A, 0x714E, 0x90F7, 0x7155, 0xE086, + 0x7156, 0xE08B, 0x7159, 0x898C, 0x715C, 0xFB55, 0x7162, 0xE089, 0x7164, 0x9481, 0x7165, 0xE085, 0x7166, 0xE088, 0x7167, 0x8FC6, + 0x7169, 0x94CF, 0x716C, 0xE08C, 0x716E, 0x8ECF, 0x717D, 0x90F8, 0x7184, 0xE08F, 0x7188, 0xE087, 0x718A, 0x8C46, 0x718F, 0xE08D, + 0x7194, 0x976F, 0x7195, 0xE090, 0x7199, 0xEAA4, 0x719F, 0x8F6E, 0x71A8, 0xE091, 0x71AC, 0xE092, 0x71B1, 0x944D, 0x71B9, 0xE094, + 0x71BE, 0xE095, 0x71C1, 0xFB59, 0x71C3, 0x9452, 0x71C8, 0x9395, 0x71C9, 0xE097, 0x71CE, 0xE099, 0x71D0, 0x97D3, 0x71D2, 0xE096, + 0x71D4, 0xE098, 0x71D5, 0x898D, 0x71D7, 0xE093, 0x71DF, 0x9A7A, 0x71E0, 0xE09A, 0x71E5, 0x9187, 0x71E6, 0x8E57, 0x71E7, 0xE09C, + 0x71EC, 0xE09B, 0x71ED, 0x9043, 0x71EE, 0x99D7, 0x71F5, 0xE09D, 0x71F9, 0xE09F, 0x71FB, 0xE08E, 0x71FC, 0xE09E, 0x71FE, 0xFB5A, + 0x71FF, 0xE0A0, 0x7206, 0x949A, 0x720D, 0xE0A1, 0x7210, 0xE0A2, 0x721B, 0xE0A3, 0x7228, 0xE0A4, 0x722A, 0x92DC, 0x722C, 0xE0A6, + 0x722D, 0xE0A5, 0x7230, 0xE0A7, 0x7232, 0xE0A8, 0x7235, 0x8EDD, 0x7236, 0x9583, 0x723A, 0x96EA, 0x723B, 0xE0A9, 0x723C, 0xE0AA, + 0x723D, 0x9175, 0x723E, 0x8EA2, 0x723F, 0xE0AB, 0x7240, 0xE0AC, 0x7246, 0xE0AD, 0x7247, 0x95D0, 0x7248, 0x94C5, 0x724B, 0xE0AE, + 0x724C, 0x9476, 0x7252, 0x92AB, 0x7258, 0xE0AF, 0x7259, 0x89E5, 0x725B, 0x8B8D, 0x725D, 0x96C4, 0x725F, 0x96B4, 0x7261, 0x89B2, + 0x7262, 0x9853, 0x7267, 0x9671, 0x7269, 0x95A8, 0x7272, 0x90B5, 0x7274, 0xE0B0, 0x7279, 0x93C1, 0x727D, 0x8CA1, 0x727E, 0xE0B1, + 0x7280, 0x8DD2, 0x7281, 0xE0B3, 0x7282, 0xE0B2, 0x7287, 0xE0B4, 0x7292, 0xE0B5, 0x7296, 0xE0B6, 0x72A0, 0x8B5D, 0x72A2, 0xE0B7, + 0x72A7, 0xE0B8, 0x72AC, 0x8CA2, 0x72AF, 0x94C6, 0x72B1, 0xFB5B, 0x72B2, 0xE0BA, 0x72B6, 0x8FF3, 0x72B9, 0xE0B9, 0x72BE, 0xFB5C, + 0x72C2, 0x8BB6, 0x72C3, 0xE0BB, 0x72C4, 0xE0BD, 0x72C6, 0xE0BC, 0x72CE, 0xE0BE, 0x72D0, 0x8CCF, 0x72D2, 0xE0BF, 0x72D7, 0x8BE7, + 0x72D9, 0x915F, 0x72DB, 0x8D9D, 0x72E0, 0xE0C1, 0x72E1, 0xE0C2, 0x72E2, 0xE0C0, 0x72E9, 0x8EEB, 0x72EC, 0x93C6, 0x72ED, 0x8BB7, + 0x72F7, 0xE0C4, 0x72F8, 0x924B, 0x72F9, 0xE0C3, 0x72FC, 0x9854, 0x72FD, 0x9482, 0x730A, 0xE0C7, 0x7316, 0xE0C9, 0x7317, 0xE0C6, + 0x731B, 0x96D2, 0x731C, 0xE0C8, 0x731D, 0xE0CA, 0x731F, 0x97C2, 0x7324, 0xFB5D, 0x7325, 0xE0CE, 0x7329, 0xE0CD, 0x732A, 0x9296, + 0x732B, 0x944C, 0x732E, 0x8CA3, 0x732F, 0xE0CC, 0x7334, 0xE0CB, 0x7336, 0x9750, 0x7337, 0x9751, 0x733E, 0xE0CF, 0x733F, 0x898E, + 0x7344, 0x8D96, 0x7345, 0x8E82, 0x734E, 0xE0D0, 0x734F, 0xE0D1, 0x7357, 0xE0D3, 0x7363, 0x8F62, 0x7368, 0xE0D5, 0x736A, 0xE0D4, + 0x7370, 0xE0D6, 0x7372, 0x8A6C, 0x7375, 0xE0D8, 0x7377, 0xFB5F, 0x7378, 0xE0D7, 0x737A, 0xE0DA, 0x737B, 0xE0D9, 0x7384, 0x8CBA, + 0x7387, 0x97A6, 0x7389, 0x8BCA, 0x738B, 0x89A4, 0x7396, 0x8BE8, 0x73A9, 0x8ADF, 0x73B2, 0x97E6, 0x73B3, 0xE0DC, 0x73BB, 0xE0DE, + 0x73BD, 0xFB60, 0x73C0, 0xE0DF, 0x73C2, 0x89CF, 0x73C8, 0xE0DB, 0x73C9, 0xFB61, 0x73CA, 0x8E58, 0x73CD, 0x92BF, 0x73CE, 0xE0DD, + 0x73D2, 0xFB64, 0x73D6, 0xFB62, 0x73DE, 0xE0E2, 0x73E0, 0x8EEC, 0x73E3, 0xFB63, 0x73E5, 0xE0E0, 0x73EA, 0x8C5D, 0x73ED, 0x94C7, + 0x73EE, 0xE0E1, 0x73F1, 0xE0FC, 0x73F5, 0xFB66, 0x73F8, 0xE0E7, 0x73FE, 0x8CBB, 0x7403, 0x8B85, 0x7405, 0xE0E4, 0x7406, 0x979D, + 0x7407, 0xFB65, 0x7409, 0x97AE, 0x7422, 0x91F4, 0x7425, 0xE0E6, 0x7426, 0xFB67, 0x7429, 0xFB69, 0x742A, 0xFB68, 0x742E, 0xFB6A, + 0x7432, 0xE0E8, 0x7433, 0x97D4, 0x7434, 0x8BD5, 0x7435, 0x94FA, 0x7436, 0x9469, 0x743A, 0xE0E9, 0x743F, 0xE0EB, 0x7441, 0xE0EE, + 0x7455, 0xE0EA, 0x7459, 0xE0ED, 0x745A, 0x8CE8, 0x745B, 0x896C, 0x745C, 0xE0EF, 0x745E, 0x9090, 0x745F, 0xE0EC, 0x7460, 0x97DA, + 0x7462, 0xFB6B, 0x7463, 0xE0F2, 0x7464, 0xEAA2, 0x7469, 0xE0F0, 0x746A, 0xE0F3, 0x746F, 0xE0E5, 0x7470, 0xE0F1, 0x7473, 0x8DBA, + 0x7476, 0xE0F4, 0x747E, 0xE0F5, 0x7483, 0x979E, 0x7489, 0xFB6C, 0x748B, 0xE0F6, 0x749E, 0xE0F7, 0x749F, 0xFB6D, 0x74A2, 0xE0E3, + 0x74A7, 0xE0F8, 0x74B0, 0x8AC2, 0x74BD, 0x8EA3, 0x74CA, 0xE0F9, 0x74CF, 0xE0FA, 0x74D4, 0xE0FB, 0x74DC, 0x895A, 0x74E0, 0xE140, + 0x74E2, 0x955A, 0x74E3, 0xE141, 0x74E6, 0x8AA2, 0x74E7, 0xE142, 0x74E9, 0xE143, 0x74EE, 0xE144, 0x74F0, 0xE146, 0x74F1, 0xE147, + 0x74F2, 0xE145, 0x74F6, 0x9572, 0x74F7, 0xE149, 0x74F8, 0xE148, 0x7501, 0xFB6E, 0x7503, 0xE14B, 0x7504, 0xE14A, 0x7505, 0xE14C, + 0x750C, 0xE14D, 0x750D, 0xE14F, 0x750E, 0xE14E, 0x7511, 0x8D99, 0x7513, 0xE151, 0x7515, 0xE150, 0x7518, 0x8AC3, 0x751A, 0x9072, + 0x751C, 0x935B, 0x751E, 0xE152, 0x751F, 0x90B6, 0x7523, 0x8E59, 0x7525, 0x8999, 0x7526, 0xE153, 0x7528, 0x9770, 0x752B, 0x95E1, + 0x752C, 0xE154, 0x752F, 0xFAA8, 0x7530, 0x9363, 0x7531, 0x9752, 0x7532, 0x8D62, 0x7533, 0x905C, 0x7537, 0x926A, 0x7538, 0x99B2, + 0x753A, 0x92AC, 0x753B, 0x89E6, 0x753C, 0xE155, 0x7544, 0xE156, 0x7546, 0xE15B, 0x7549, 0xE159, 0x754A, 0xE158, 0x754B, 0x9DC0, + 0x754C, 0x8A45, 0x754D, 0xE157, 0x754F, 0x88D8, 0x7551, 0x94A8, 0x7554, 0x94C8, 0x7559, 0x97AF, 0x755A, 0xE15C, 0x755B, 0xE15A, + 0x755C, 0x927B, 0x755D, 0x90A4, 0x7560, 0x94A9, 0x7562, 0x954C, 0x7564, 0xE15E, 0x7565, 0x97AA, 0x7566, 0x8C6C, 0x7567, 0xE15F, + 0x7569, 0xE15D, 0x756A, 0x94D4, 0x756B, 0xE160, 0x756D, 0xE161, 0x756F, 0xFB6F, 0x7570, 0x88D9, 0x7573, 0x8FF4, 0x7574, 0xE166, + 0x7576, 0xE163, 0x7577, 0x93EB, 0x7578, 0xE162, 0x757F, 0x8B45, 0x7582, 0xE169, 0x7586, 0xE164, 0x7587, 0xE165, 0x7589, 0xE168, + 0x758A, 0xE167, 0x758B, 0x9544, 0x758E, 0x9161, 0x758F, 0x9160, 0x7591, 0x8B5E, 0x7594, 0xE16A, 0x759A, 0xE16B, 0x759D, 0xE16C, + 0x75A3, 0xE16E, 0x75A5, 0xE16D, 0x75AB, 0x8975, 0x75B1, 0xE176, 0x75B2, 0x94E6, 0x75B3, 0xE170, 0x75B5, 0xE172, 0x75B8, 0xE174, + 0x75B9, 0x905D, 0x75BC, 0xE175, 0x75BD, 0xE173, 0x75BE, 0x8EBE, 0x75C2, 0xE16F, 0x75C3, 0xE171, 0x75C5, 0x9561, 0x75C7, 0x8FC7, + 0x75CA, 0xE178, 0x75CD, 0xE177, 0x75D2, 0xE179, 0x75D4, 0x8EA4, 0x75D5, 0x8DAD, 0x75D8, 0x9397, 0x75D9, 0xE17A, 0x75DB, 0x92C9, + 0x75DE, 0xE17C, 0x75E2, 0x979F, 0x75E3, 0xE17B, 0x75E9, 0x9189, 0x75F0, 0xE182, 0x75F2, 0xE184, 0x75F3, 0xE185, 0x75F4, 0x9273, + 0x75FA, 0xE183, 0x75FC, 0xE180, 0x75FE, 0xE17D, 0x75FF, 0xE17E, 0x7601, 0xE181, 0x7609, 0xE188, 0x760B, 0xE186, 0x760D, 0xE187, + 0x761F, 0xE189, 0x7620, 0xE18B, 0x7621, 0xE18C, 0x7622, 0xE18D, 0x7624, 0xE18E, 0x7627, 0xE18A, 0x7630, 0xE190, 0x7634, 0xE18F, + 0x763B, 0xE191, 0x7642, 0x97C3, 0x7646, 0xE194, 0x7647, 0xE192, 0x7648, 0xE193, 0x764C, 0x8AE0, 0x7652, 0x96FC, 0x7656, 0x95C8, + 0x7658, 0xE196, 0x765C, 0xE195, 0x7661, 0xE197, 0x7662, 0xE198, 0x7667, 0xE19C, 0x7668, 0xE199, 0x7669, 0xE19A, 0x766A, 0xE19B, + 0x766C, 0xE19D, 0x7670, 0xE19E, 0x7672, 0xE19F, 0x7676, 0xE1A0, 0x7678, 0xE1A1, 0x767A, 0x94AD, 0x767B, 0x936F, 0x767C, 0xE1A2, + 0x767D, 0x9492, 0x767E, 0x9553, 0x7680, 0xE1A3, 0x7682, 0xFB70, 0x7683, 0xE1A4, 0x7684, 0x9349, 0x7686, 0x8A46, 0x7687, 0x8D63, + 0x7688, 0xE1A5, 0x768B, 0xE1A6, 0x768E, 0xE1A7, 0x7690, 0x8E48, 0x7693, 0xE1A9, 0x7696, 0xE1A8, 0x7699, 0xE1AA, 0x769A, 0xE1AB, + 0x769B, 0xFB73, 0x769C, 0xFB71, 0x769E, 0xFB72, 0x76A6, 0xFB74, 0x76AE, 0x94E7, 0x76B0, 0xE1AC, 0x76B4, 0xE1AD, 0x76B7, 0xEA89, + 0x76B8, 0xE1AE, 0x76B9, 0xE1AF, 0x76BA, 0xE1B0, 0x76BF, 0x8E4D, 0x76C2, 0xE1B1, 0x76C3, 0x9475, 0x76C6, 0x967E, 0x76C8, 0x896D, + 0x76CA, 0x8976, 0x76CD, 0xE1B2, 0x76D2, 0xE1B4, 0x76D6, 0xE1B3, 0x76D7, 0x9390, 0x76DB, 0x90B7, 0x76DC, 0x9F58, 0x76DE, 0xE1B5, + 0x76DF, 0x96BF, 0x76E1, 0xE1B6, 0x76E3, 0x8AC4, 0x76E4, 0x94D5, 0x76E5, 0xE1B7, 0x76E7, 0xE1B8, 0x76EA, 0xE1B9, 0x76EE, 0x96DA, + 0x76F2, 0x96D3, 0x76F4, 0x92BC, 0x76F8, 0x918A, 0x76FB, 0xE1BB, 0x76FE, 0x8F82, 0x7701, 0x8FC8, 0x7704, 0xE1BE, 0x7707, 0xE1BD, + 0x7708, 0xE1BC, 0x7709, 0x94FB, 0x770B, 0x8AC5, 0x770C, 0x8CA7, 0x771B, 0xE1C4, 0x771E, 0xE1C1, 0x771F, 0x905E, 0x7720, 0x96B0, + 0x7724, 0xE1C0, 0x7725, 0xE1C2, 0x7726, 0xE1C3, 0x7729, 0xE1BF, 0x7737, 0xE1C5, 0x7738, 0xE1C6, 0x773A, 0x92AD, 0x773C, 0x8AE1, + 0x7740, 0x9285, 0x7746, 0xFB76, 0x7747, 0xE1C7, 0x775A, 0xE1C8, 0x775B, 0xE1CB, 0x7761, 0x9087, 0x7763, 0x93C2, 0x7765, 0xE1CC, + 0x7766, 0x9672, 0x7768, 0xE1C9, 0x776B, 0xE1CA, 0x7779, 0xE1CF, 0x777E, 0xE1CE, 0x777F, 0xE1CD, 0x778B, 0xE1D1, 0x778E, 0xE1D0, + 0x7791, 0xE1D2, 0x779E, 0xE1D4, 0x77A0, 0xE1D3, 0x77A5, 0x95CB, 0x77AC, 0x8F75, 0x77AD, 0x97C4, 0x77B0, 0xE1D5, 0x77B3, 0x93B5, + 0x77B6, 0xE1D6, 0x77B9, 0xE1D7, 0x77BB, 0xE1DB, 0x77BC, 0xE1D9, 0x77BD, 0xE1DA, 0x77BF, 0xE1D8, 0x77C7, 0xE1DC, 0x77CD, 0xE1DD, + 0x77D7, 0xE1DE, 0x77DA, 0xE1DF, 0x77DB, 0x96B5, 0x77DC, 0xE1E0, 0x77E2, 0x96EE, 0x77E3, 0xE1E1, 0x77E5, 0x926D, 0x77E7, 0x948A, + 0x77E9, 0x8BE9, 0x77ED, 0x925A, 0x77EE, 0xE1E2, 0x77EF, 0x8BB8, 0x77F3, 0x90CE, 0x77FC, 0xE1E3, 0x7802, 0x8DBB, 0x780C, 0xE1E4, + 0x7812, 0xE1E5, 0x7814, 0x8CA4, 0x7815, 0x8DD3, 0x7820, 0xE1E7, 0x7821, 0xFB78, 0x7825, 0x9375, 0x7826, 0x8DD4, 0x7827, 0x8B6D, + 0x7832, 0x9643, 0x7834, 0x946A, 0x783A, 0x9376, 0x783F, 0x8D7B, 0x7845, 0xE1E9, 0x784E, 0xFB79, 0x785D, 0x8FC9, 0x7864, 0xFB7A, + 0x786B, 0x97B0, 0x786C, 0x8D64, 0x786F, 0x8CA5, 0x7872, 0x94A1, 0x7874, 0xE1EB, 0x787A, 0xFB7B, 0x787C, 0xE1ED, 0x7881, 0x8CE9, + 0x7886, 0xE1EC, 0x7887, 0x92F4, 0x788C, 0xE1EF, 0x788D, 0x8A56, 0x788E, 0xE1EA, 0x7891, 0x94E8, 0x7893, 0x894F, 0x7895, 0x8DEA, + 0x7897, 0x9871, 0x789A, 0xE1EE, 0x78A3, 0xE1F0, 0x78A7, 0x95C9, 0x78A9, 0x90D7, 0x78AA, 0xE1F2, 0x78AF, 0xE1F3, 0x78B5, 0xE1F1, + 0x78BA, 0x8A6D, 0x78BC, 0xE1F9, 0x78BE, 0xE1F8, 0x78C1, 0x8EA5, 0x78C5, 0xE1FA, 0x78C6, 0xE1F5, 0x78CA, 0xE1FB, 0x78CB, 0xE1F6, + 0x78D0, 0x94D6, 0x78D1, 0xE1F4, 0x78D4, 0xE1F7, 0x78DA, 0xE241, 0x78E7, 0xE240, 0x78E8, 0x9681, 0x78EC, 0xE1FC, 0x78EF, 0x88E9, + 0x78F4, 0xE243, 0x78FD, 0xE242, 0x7901, 0x8FCA, 0x7907, 0xE244, 0x790E, 0x9162, 0x7911, 0xE246, 0x7912, 0xE245, 0x7919, 0xE247, + 0x7926, 0xE1E6, 0x792A, 0xE1E8, 0x792B, 0xE249, 0x792C, 0xE248, 0x7930, 0xFB7C, 0x793A, 0x8EA6, 0x793C, 0x97E7, 0x793E, 0x8ED0, + 0x7940, 0xE24A, 0x7941, 0x8C56, 0x7947, 0x8B5F, 0x7948, 0x8B46, 0x7949, 0x8E83, 0x7950, 0x9753, 0x7953, 0xE250, 0x7955, 0xE24F, + 0x7956, 0x9163, 0x7957, 0xE24C, 0x795A, 0xE24E, 0x795D, 0x8F6A, 0x795E, 0x905F, 0x795F, 0xE24D, 0x7960, 0xE24B, 0x7962, 0x9449, + 0x7965, 0x8FCB, 0x7968, 0x955B, 0x796D, 0x8DD5, 0x7977, 0x9398, 0x797A, 0xE251, 0x797F, 0xE252, 0x7980, 0xE268, 0x7981, 0x8BD6, + 0x7984, 0x985C, 0x7985, 0x9154, 0x798A, 0xE253, 0x798D, 0x89D0, 0x798E, 0x92F5, 0x798F, 0x959F, 0x7994, 0xFB81, 0x799B, 0xFB83, + 0x799D, 0xE254, 0x79A6, 0x8B9A, 0x79A7, 0xE255, 0x79AA, 0xE257, 0x79AE, 0xE258, 0x79B0, 0x9448, 0x79B3, 0xE259, 0x79B9, 0xE25A, + 0x79BA, 0xE25B, 0x79BD, 0x8BD7, 0x79BE, 0x89D1, 0x79BF, 0x93C3, 0x79C0, 0x8F47, 0x79C1, 0x8E84, 0x79C9, 0xE25C, 0x79CB, 0x8F48, + 0x79D1, 0x89C8, 0x79D2, 0x9562, 0x79D5, 0xE25D, 0x79D8, 0x94E9, 0x79DF, 0x9164, 0x79E1, 0xE260, 0x79E3, 0xE261, 0x79E4, 0x9489, + 0x79E6, 0x9060, 0x79E7, 0xE25E, 0x79E9, 0x9281, 0x79EC, 0xE25F, 0x79F0, 0x8FCC, 0x79FB, 0x88DA, 0x7A00, 0x8B48, 0x7A08, 0xE262, + 0x7A0B, 0x92F6, 0x7A0D, 0xE263, 0x7A0E, 0x90C5, 0x7A14, 0x96AB, 0x7A17, 0x9542, 0x7A18, 0xE264, 0x7A19, 0xE265, 0x7A1A, 0x9274, + 0x7A1C, 0x97C5, 0x7A1F, 0xE267, 0x7A20, 0xE266, 0x7A2E, 0x8EED, 0x7A31, 0xE269, 0x7A32, 0x88EE, 0x7A37, 0xE26C, 0x7A3B, 0xE26A, + 0x7A3C, 0x89D2, 0x7A3D, 0x8C6D, 0x7A3E, 0xE26B, 0x7A3F, 0x8D65, 0x7A40, 0x8D92, 0x7A42, 0x95E4, 0x7A43, 0xE26D, 0x7A46, 0x9673, + 0x7A49, 0xE26F, 0x7A4D, 0x90CF, 0x7A4E, 0x896E, 0x7A4F, 0x89B8, 0x7A50, 0x88AA, 0x7A57, 0xE26E, 0x7A61, 0xE270, 0x7A62, 0xE271, + 0x7A63, 0x8FF5, 0x7A69, 0xE272, 0x7A6B, 0x8A6E, 0x7A70, 0xE274, 0x7A74, 0x8C8A, 0x7A76, 0x8B86, 0x7A79, 0xE275, 0x7A7A, 0x8BF3, + 0x7A7D, 0xE276, 0x7A7F, 0x90FA, 0x7A81, 0x93CB, 0x7A83, 0x90DE, 0x7A84, 0x8DF3, 0x7A88, 0xE277, 0x7A92, 0x9282, 0x7A93, 0x918B, + 0x7A95, 0xE279, 0x7A96, 0xE27B, 0x7A97, 0xE278, 0x7A98, 0xE27A, 0x7A9F, 0x8C41, 0x7AA9, 0xE27C, 0x7AAA, 0x8C45, 0x7AAE, 0x8B87, + 0x7AAF, 0x9771, 0x7AB0, 0xE27E, 0x7AB6, 0xE280, 0x7ABA, 0x894D, 0x7ABF, 0xE283, 0x7AC3, 0x8A96, 0x7AC4, 0xE282, 0x7AC5, 0xE281, + 0x7AC7, 0xE285, 0x7AC8, 0xE27D, 0x7ACA, 0xE286, 0x7ACB, 0x97A7, 0x7ACD, 0xE287, 0x7ACF, 0xE288, 0x7AD1, 0xFB84, 0x7AD2, 0x9AF2, + 0x7AD3, 0xE28A, 0x7AD5, 0xE289, 0x7AD9, 0xE28B, 0x7ADA, 0xE28C, 0x7ADC, 0x97B3, 0x7ADD, 0xE28D, 0x7ADF, 0xE8ED, 0x7AE0, 0x8FCD, + 0x7AE1, 0xE28E, 0x7AE2, 0xE28F, 0x7AE3, 0x8F76, 0x7AE5, 0x93B6, 0x7AE6, 0xE290, 0x7AE7, 0xFB85, 0x7AEA, 0x9247, 0x7AEB, 0xFB87, + 0x7AED, 0xE291, 0x7AEF, 0x925B, 0x7AF0, 0xE292, 0x7AF6, 0x8BA3, 0x7AF8, 0x995E, 0x7AF9, 0x927C, 0x7AFA, 0x8EB1, 0x7AFF, 0x8AC6, + 0x7B02, 0xE293, 0x7B04, 0xE2A0, 0x7B06, 0xE296, 0x7B08, 0x8B88, 0x7B0A, 0xE295, 0x7B0B, 0xE2A2, 0x7B0F, 0xE294, 0x7B11, 0x8FCE, + 0x7B18, 0xE298, 0x7B19, 0xE299, 0x7B1B, 0x934A, 0x7B1E, 0xE29A, 0x7B20, 0x8A7D, 0x7B25, 0x9079, 0x7B26, 0x9584, 0x7B28, 0xE29C, + 0x7B2C, 0x91E6, 0x7B33, 0xE297, 0x7B35, 0xE29B, 0x7B36, 0xE29D, 0x7B39, 0x8DF9, 0x7B45, 0xE2A4, 0x7B46, 0x954D, 0x7B48, 0x94A4, + 0x7B49, 0x9399, 0x7B4B, 0x8BD8, 0x7B4C, 0xE2A3, 0x7B4D, 0xE2A1, 0x7B4F, 0x94B3, 0x7B50, 0xE29E, 0x7B51, 0x927D, 0x7B52, 0x939B, + 0x7B54, 0x939A, 0x7B56, 0x8DF4, 0x7B5D, 0xE2B6, 0x7B65, 0xE2A6, 0x7B67, 0xE2A8, 0x7B6C, 0xE2AB, 0x7B6E, 0xE2AC, 0x7B70, 0xE2A9, + 0x7B71, 0xE2AA, 0x7B74, 0xE2A7, 0x7B75, 0xE2A5, 0x7B7A, 0xE29F, 0x7B86, 0x95CD, 0x7B87, 0x89D3, 0x7B8B, 0xE2B3, 0x7B8D, 0xE2B0, + 0x7B8F, 0xE2B5, 0x7B92, 0xE2B4, 0x7B94, 0x9493, 0x7B95, 0x96A5, 0x7B97, 0x8E5A, 0x7B98, 0xE2AE, 0x7B99, 0xE2B7, 0x7B9A, 0xE2B2, + 0x7B9C, 0xE2B1, 0x7B9D, 0xE2AD, 0x7B9E, 0xFB88, 0x7B9F, 0xE2AF, 0x7BA1, 0x8AC7, 0x7BAA, 0x925C, 0x7BAD, 0x90FB, 0x7BB1, 0x94A0, + 0x7BB4, 0xE2BC, 0x7BB8, 0x94A2, 0x7BC0, 0x90DF, 0x7BC1, 0xE2B9, 0x7BC4, 0x94CD, 0x7BC6, 0xE2BD, 0x7BC7, 0x95D1, 0x7BC9, 0x927A, + 0x7BCB, 0xE2B8, 0x7BCC, 0xE2BA, 0x7BCF, 0xE2BB, 0x7BDD, 0xE2BE, 0x7BE0, 0x8EC2, 0x7BE4, 0x93C4, 0x7BE5, 0xE2C3, 0x7BE6, 0xE2C2, + 0x7BE9, 0xE2BF, 0x7BED, 0x9855, 0x7BF3, 0xE2C8, 0x7BF6, 0xE2CC, 0x7BF7, 0xE2C9, 0x7C00, 0xE2C5, 0x7C07, 0xE2C6, 0x7C0D, 0xE2CB, + 0x7C11, 0xE2C0, 0x7C12, 0x99D3, 0x7C13, 0xE2C7, 0x7C14, 0xE2C1, 0x7C17, 0xE2CA, 0x7C1F, 0xE2D0, 0x7C21, 0x8AC8, 0x7C23, 0xE2CD, + 0x7C27, 0xE2CE, 0x7C2A, 0xE2CF, 0x7C2B, 0xE2D2, 0x7C37, 0xE2D1, 0x7C38, 0x94F4, 0x7C3D, 0xE2D3, 0x7C3E, 0x97FA, 0x7C3F, 0x95EB, + 0x7C40, 0xE2D8, 0x7C43, 0xE2D5, 0x7C4C, 0xE2D4, 0x7C4D, 0x90D0, 0x7C4F, 0xE2D7, 0x7C50, 0xE2D9, 0x7C54, 0xE2D6, 0x7C56, 0xE2DD, + 0x7C58, 0xE2DA, 0x7C5F, 0xE2DB, 0x7C60, 0xE2C4, 0x7C64, 0xE2DC, 0x7C65, 0xE2DE, 0x7C6C, 0xE2DF, 0x7C73, 0x95C4, 0x7C75, 0xE2E0, + 0x7C7E, 0x96E0, 0x7C81, 0x8BCC, 0x7C82, 0x8C48, 0x7C83, 0xE2E1, 0x7C89, 0x95B2, 0x7C8B, 0x9088, 0x7C8D, 0x96AE, 0x7C90, 0xE2E2, + 0x7C92, 0x97B1, 0x7C95, 0x9494, 0x7C97, 0x9165, 0x7C98, 0x9453, 0x7C9B, 0x8F6C, 0x7C9F, 0x88BE, 0x7CA1, 0xE2E7, 0x7CA2, 0xE2E5, + 0x7CA4, 0xE2E3, 0x7CA5, 0x8A9F, 0x7CA7, 0x8FCF, 0x7CA8, 0xE2E8, 0x7CAB, 0xE2E6, 0x7CAD, 0xE2E4, 0x7CAE, 0xE2EC, 0x7CB1, 0xE2EB, + 0x7CB2, 0xE2EA, 0x7CB3, 0xE2E9, 0x7CB9, 0xE2ED, 0x7CBD, 0xE2EE, 0x7CBE, 0x90B8, 0x7CC0, 0xE2EF, 0x7CC2, 0xE2F1, 0x7CC5, 0xE2F0, + 0x7CCA, 0x8CD0, 0x7CCE, 0x9157, 0x7CD2, 0xE2F3, 0x7CD6, 0x939C, 0x7CD8, 0xE2F2, 0x7CDC, 0xE2F4, 0x7CDE, 0x95B3, 0x7CDF, 0x918C, + 0x7CE0, 0x8D66, 0x7CE2, 0xE2F5, 0x7CE7, 0x97C6, 0x7CEF, 0xE2F7, 0x7CF2, 0xE2F8, 0x7CF4, 0xE2F9, 0x7CF6, 0xE2FA, 0x7CF8, 0x8E85, + 0x7CFA, 0xE2FB, 0x7CFB, 0x8C6E, 0x7CFE, 0x8B8A, 0x7D00, 0x8B49, 0x7D02, 0xE340, 0x7D04, 0x96F1, 0x7D05, 0x8D67, 0x7D06, 0xE2FC, + 0x7D0A, 0xE343, 0x7D0B, 0x96E4, 0x7D0D, 0x945B, 0x7D10, 0x9552, 0x7D14, 0x8F83, 0x7D15, 0xE342, 0x7D17, 0x8ED1, 0x7D18, 0x8D68, + 0x7D19, 0x8E86, 0x7D1A, 0x8B89, 0x7D1B, 0x95B4, 0x7D1C, 0xE341, 0x7D20, 0x9166, 0x7D21, 0x9661, 0x7D22, 0x8DF5, 0x7D2B, 0x8E87, + 0x7D2C, 0x92DB, 0x7D2E, 0xE346, 0x7D2F, 0x97DD, 0x7D30, 0x8DD7, 0x7D32, 0xE347, 0x7D33, 0x9061, 0x7D35, 0xE349, 0x7D39, 0x8FD0, + 0x7D3A, 0x8DAE, 0x7D3F, 0xE348, 0x7D42, 0x8F49, 0x7D43, 0x8CBC, 0x7D44, 0x9167, 0x7D45, 0xE344, 0x7D46, 0xE34A, 0x7D48, 0xFB8A, + 0x7D4B, 0xE345, 0x7D4C, 0x8C6F, 0x7D4E, 0xE34D, 0x7D4F, 0xE351, 0x7D50, 0x8C8B, 0x7D56, 0xE34C, 0x7D5B, 0xE355, 0x7D5C, 0xFB8B, + 0x7D5E, 0x8D69, 0x7D61, 0x978D, 0x7D62, 0x88BA, 0x7D63, 0xE352, 0x7D66, 0x8B8B, 0x7D68, 0xE34F, 0x7D6E, 0xE350, 0x7D71, 0x939D, + 0x7D72, 0xE34E, 0x7D73, 0xE34B, 0x7D75, 0x8A47, 0x7D76, 0x90E2, 0x7D79, 0x8CA6, 0x7D7D, 0xE357, 0x7D89, 0xE354, 0x7D8F, 0xE356, + 0x7D93, 0xE353, 0x7D99, 0x8C70, 0x7D9A, 0x91B1, 0x7D9B, 0xE358, 0x7D9C, 0x918E, 0x7D9F, 0xE365, 0x7DA0, 0xFB8D, 0x7DA2, 0xE361, + 0x7DA3, 0xE35B, 0x7DAB, 0xE35F, 0x7DAC, 0x8EF8, 0x7DAD, 0x88DB, 0x7DAE, 0xE35A, 0x7DAF, 0xE362, 0x7DB0, 0xE366, 0x7DB1, 0x8D6A, + 0x7DB2, 0x96D4, 0x7DB4, 0x92D4, 0x7DB5, 0xE35C, 0x7DB7, 0xFB8C, 0x7DB8, 0xE364, 0x7DBA, 0xE359, 0x7DBB, 0x925D, 0x7DBD, 0xE35E, + 0x7DBE, 0x88BB, 0x7DBF, 0x96C8, 0x7DC7, 0xE35D, 0x7DCA, 0x8BD9, 0x7DCB, 0x94EA, 0x7DCF, 0x918D, 0x7DD1, 0x97CE, 0x7DD2, 0x8F8F, + 0x7DD5, 0xE38E, 0x7DD6, 0xFB8E, 0x7DD8, 0xE367, 0x7DDA, 0x90FC, 0x7DDC, 0xE363, 0x7DDD, 0xE368, 0x7DDE, 0xE36A, 0x7DE0, 0x92F7, + 0x7DE1, 0xE36D, 0x7DE4, 0xE369, 0x7DE8, 0x95D2, 0x7DE9, 0x8AC9, 0x7DEC, 0x96C9, 0x7DEF, 0x88DC, 0x7DF2, 0xE36C, 0x7DF4, 0x97FB, + 0x7DFB, 0xE36B, 0x7E01, 0x898F, 0x7E04, 0x93EA, 0x7E05, 0xE36E, 0x7E09, 0xE375, 0x7E0A, 0xE36F, 0x7E0B, 0xE376, 0x7E12, 0xE372, + 0x7E1B, 0x949B, 0x7E1E, 0x8EC8, 0x7E1F, 0xE374, 0x7E21, 0xE371, 0x7E22, 0xE377, 0x7E23, 0xE370, 0x7E26, 0x8F63, 0x7E2B, 0x9644, + 0x7E2E, 0x8F6B, 0x7E31, 0xE373, 0x7E32, 0xE380, 0x7E35, 0xE37B, 0x7E37, 0xE37E, 0x7E39, 0xE37C, 0x7E3A, 0xE381, 0x7E3B, 0xE37A, + 0x7E3D, 0xE360, 0x7E3E, 0x90D1, 0x7E41, 0x94C9, 0x7E43, 0xE37D, 0x7E46, 0xE378, 0x7E4A, 0x9140, 0x7E4B, 0x8C71, 0x7E4D, 0x8F4A, + 0x7E52, 0xFB8F, 0x7E54, 0x9044, 0x7E55, 0x9155, 0x7E56, 0xE384, 0x7E59, 0xE386, 0x7E5A, 0xE387, 0x7E5D, 0xE383, 0x7E5E, 0xE385, + 0x7E66, 0xE379, 0x7E67, 0xE382, 0x7E69, 0xE38A, 0x7E6A, 0xE389, 0x7E6D, 0x969A, 0x7E70, 0x8C4A, 0x7E79, 0xE388, 0x7E7B, 0xE38C, + 0x7E7C, 0xE38B, 0x7E7D, 0xE38F, 0x7E7F, 0xE391, 0x7E82, 0x8E5B, 0x7E83, 0xE38D, 0x7E88, 0xE392, 0x7E89, 0xE393, 0x7E8A, 0xFA5C, + 0x7E8C, 0xE394, 0x7E8E, 0xE39A, 0x7E8F, 0x935A, 0x7E90, 0xE396, 0x7E92, 0xE395, 0x7E93, 0xE397, 0x7E94, 0xE398, 0x7E96, 0xE399, + 0x7E9B, 0xE39B, 0x7E9C, 0xE39C, 0x7F36, 0x8ACA, 0x7F38, 0xE39D, 0x7F3A, 0xE39E, 0x7F45, 0xE39F, 0x7F47, 0xFB90, 0x7F4C, 0xE3A0, + 0x7F4D, 0xE3A1, 0x7F4E, 0xE3A2, 0x7F50, 0xE3A3, 0x7F51, 0xE3A4, 0x7F54, 0xE3A6, 0x7F55, 0xE3A5, 0x7F58, 0xE3A7, 0x7F5F, 0xE3A8, + 0x7F60, 0xE3A9, 0x7F67, 0xE3AC, 0x7F68, 0xE3AA, 0x7F69, 0xE3AB, 0x7F6A, 0x8DDF, 0x7F6B, 0x8C72, 0x7F6E, 0x9275, 0x7F70, 0x94B1, + 0x7F72, 0x8F90, 0x7F75, 0x946C, 0x7F77, 0x94EB, 0x7F78, 0xE3AD, 0x7F79, 0x9CEB, 0x7F82, 0xE3AE, 0x7F83, 0xE3B0, 0x7F85, 0x9785, + 0x7F86, 0xE3AF, 0x7F87, 0xE3B2, 0x7F88, 0xE3B1, 0x7F8A, 0x9772, 0x7F8C, 0xE3B3, 0x7F8E, 0x94FC, 0x7F94, 0xE3B4, 0x7F9A, 0xE3B7, + 0x7F9D, 0xE3B6, 0x7F9E, 0xE3B5, 0x7FA1, 0xFB91, 0x7FA3, 0xE3B8, 0x7FA4, 0x8C51, 0x7FA8, 0x9141, 0x7FA9, 0x8B60, 0x7FAE, 0xE3BC, + 0x7FAF, 0xE3B9, 0x7FB2, 0xE3BA, 0x7FB6, 0xE3BD, 0x7FB8, 0xE3BE, 0x7FB9, 0xE3BB, 0x7FBD, 0x8948, 0x7FC1, 0x89A5, 0x7FC5, 0xE3C0, + 0x7FC6, 0xE3C1, 0x7FCA, 0xE3C2, 0x7FCC, 0x9782, 0x7FD2, 0x8F4B, 0x7FD4, 0xE3C4, 0x7FD5, 0xE3C3, 0x7FE0, 0x9089, 0x7FE1, 0xE3C5, + 0x7FE6, 0xE3C6, 0x7FE9, 0xE3C7, 0x7FEB, 0x8AE3, 0x7FF0, 0x8ACB, 0x7FF3, 0xE3C8, 0x7FF9, 0xE3C9, 0x7FFB, 0x967C, 0x7FFC, 0x9783, + 0x8000, 0x9773, 0x8001, 0x9856, 0x8003, 0x8D6C, 0x8004, 0xE3CC, 0x8005, 0x8ED2, 0x8006, 0xE3CB, 0x800B, 0xE3CD, 0x800C, 0x8EA7, + 0x8010, 0x91CF, 0x8012, 0xE3CE, 0x8015, 0x8D6B, 0x8017, 0x96D5, 0x8018, 0xE3CF, 0x8019, 0xE3D0, 0x801C, 0xE3D1, 0x8021, 0xE3D2, + 0x8028, 0xE3D3, 0x8033, 0x8EA8, 0x8036, 0x96EB, 0x803B, 0xE3D5, 0x803D, 0x925E, 0x803F, 0xE3D4, 0x8046, 0xE3D7, 0x804A, 0xE3D6, + 0x8052, 0xE3D8, 0x8056, 0x90B9, 0x8058, 0xE3D9, 0x805A, 0xE3DA, 0x805E, 0x95B7, 0x805F, 0xE3DB, 0x8061, 0x918F, 0x8062, 0xE3DC, + 0x8068, 0xE3DD, 0x806F, 0x97FC, 0x8070, 0xE3E0, 0x8072, 0xE3DF, 0x8073, 0xE3DE, 0x8074, 0x92AE, 0x8076, 0xE3E1, 0x8077, 0x9045, + 0x8079, 0xE3E2, 0x807D, 0xE3E3, 0x807E, 0x9857, 0x807F, 0xE3E4, 0x8084, 0xE3E5, 0x8085, 0xE3E7, 0x8086, 0xE3E6, 0x8087, 0x94A3, + 0x8089, 0x93F7, 0x808B, 0x985D, 0x808C, 0x94A7, 0x8093, 0xE3E9, 0x8096, 0x8FD1, 0x8098, 0x9549, 0x809A, 0xE3EA, 0x809B, 0xE3E8, + 0x809D, 0x8ACC, 0x80A1, 0x8CD2, 0x80A2, 0x8E88, 0x80A5, 0x94EC, 0x80A9, 0x8CA8, 0x80AA, 0x9662, 0x80AC, 0xE3ED, 0x80AD, 0xE3EB, + 0x80AF, 0x8D6D, 0x80B1, 0x8D6E, 0x80B2, 0x88E7, 0x80B4, 0x8DE6, 0x80BA, 0x9478, 0x80C3, 0x88DD, 0x80C4, 0xE3F2, 0x80C6, 0x925F, + 0x80CC, 0x9477, 0x80CE, 0x91D9, 0x80D6, 0xE3F4, 0x80D9, 0xE3F0, 0x80DA, 0xE3F3, 0x80DB, 0xE3EE, 0x80DD, 0xE3F1, 0x80DE, 0x9645, + 0x80E1, 0x8CD3, 0x80E4, 0x88FB, 0x80E5, 0xE3EF, 0x80EF, 0xE3F6, 0x80F1, 0xE3F7, 0x80F4, 0x93B7, 0x80F8, 0x8BB9, 0x80FC, 0xE445, + 0x80FD, 0x945C, 0x8102, 0x8E89, 0x8105, 0x8BBA, 0x8106, 0x90C6, 0x8107, 0x9865, 0x8108, 0x96AC, 0x8109, 0xE3F5, 0x810A, 0x90D2, + 0x811A, 0x8B72, 0x811B, 0xE3F8, 0x8123, 0xE3FA, 0x8129, 0xE3F9, 0x812F, 0xE3FB, 0x8131, 0x9245, 0x8133, 0x945D, 0x8139, 0x92AF, + 0x813E, 0xE442, 0x8146, 0xE441, 0x814B, 0xE3FC, 0x814E, 0x9074, 0x8150, 0x9585, 0x8151, 0xE444, 0x8153, 0xE443, 0x8154, 0x8D6F, + 0x8155, 0x9872, 0x815F, 0xE454, 0x8165, 0xE448, 0x8166, 0xE449, 0x816B, 0x8EEE, 0x816E, 0xE447, 0x8170, 0x8D98, 0x8171, 0xE446, + 0x8174, 0xE44A, 0x8178, 0x92B0, 0x8179, 0x95A0, 0x817A, 0x9142, 0x817F, 0x91DA, 0x8180, 0xE44E, 0x8182, 0xE44F, 0x8183, 0xE44B, + 0x8188, 0xE44C, 0x818A, 0xE44D, 0x818F, 0x8D70, 0x8193, 0xE455, 0x8195, 0xE451, 0x819A, 0x9586, 0x819C, 0x968C, 0x819D, 0x9547, + 0x81A0, 0xE450, 0x81A3, 0xE453, 0x81A4, 0xE452, 0x81A8, 0x9663, 0x81A9, 0xE456, 0x81B0, 0xE457, 0x81B3, 0x9156, 0x81B5, 0xE458, + 0x81B8, 0xE45A, 0x81BA, 0xE45E, 0x81BD, 0xE45B, 0x81BE, 0xE459, 0x81BF, 0x945E, 0x81C0, 0xE45C, 0x81C2, 0xE45D, 0x81C6, 0x89B0, + 0x81C8, 0xE464, 0x81C9, 0xE45F, 0x81CD, 0xE460, 0x81D1, 0xE461, 0x81D3, 0x919F, 0x81D8, 0xE463, 0x81D9, 0xE462, 0x81DA, 0xE465, + 0x81DF, 0xE466, 0x81E0, 0xE467, 0x81E3, 0x9062, 0x81E5, 0x89E7, 0x81E7, 0xE468, 0x81E8, 0x97D5, 0x81EA, 0x8EA9, 0x81ED, 0x8F4C, + 0x81F3, 0x8E8A, 0x81F4, 0x9276, 0x81FA, 0xE469, 0x81FB, 0xE46A, 0x81FC, 0x8950, 0x81FE, 0xE46B, 0x8201, 0xE46C, 0x8202, 0xE46D, + 0x8205, 0xE46E, 0x8207, 0xE46F, 0x8208, 0x8BBB, 0x8209, 0x9DA8, 0x820A, 0xE470, 0x820C, 0x90E3, 0x820D, 0xE471, 0x820E, 0x8EC9, + 0x8210, 0xE472, 0x8212, 0x98AE, 0x8216, 0xE473, 0x8217, 0x95DC, 0x8218, 0x8ADA, 0x821B, 0x9143, 0x821C, 0x8F77, 0x821E, 0x9591, + 0x821F, 0x8F4D, 0x8229, 0xE474, 0x822A, 0x8D71, 0x822B, 0xE475, 0x822C, 0x94CA, 0x822E, 0xE484, 0x8233, 0xE477, 0x8235, 0x91C7, + 0x8236, 0x9495, 0x8237, 0x8CBD, 0x8238, 0xE476, 0x8239, 0x9144, 0x8240, 0xE478, 0x8247, 0x92F8, 0x8258, 0xE47A, 0x8259, 0xE479, + 0x825A, 0xE47C, 0x825D, 0xE47B, 0x825F, 0xE47D, 0x8262, 0xE480, 0x8264, 0xE47E, 0x8266, 0x8ACD, 0x8268, 0xE481, 0x826A, 0xE482, + 0x826B, 0xE483, 0x826E, 0x8DAF, 0x826F, 0x97C7, 0x8271, 0xE485, 0x8272, 0x9046, 0x8276, 0x8990, 0x8277, 0xE486, 0x8278, 0xE487, + 0x827E, 0xE488, 0x828B, 0x88F0, 0x828D, 0xE489, 0x8292, 0xE48A, 0x8299, 0x9587, 0x829D, 0x8EC5, 0x829F, 0xE48C, 0x82A5, 0x8A48, + 0x82A6, 0x88B0, 0x82AB, 0xE48B, 0x82AC, 0xE48E, 0x82AD, 0x946D, 0x82AF, 0x9063, 0x82B1, 0x89D4, 0x82B3, 0x9646, 0x82B8, 0x8C7C, + 0x82B9, 0x8BDA, 0x82BB, 0xE48D, 0x82BD, 0x89E8, 0x82C5, 0x8AA1, 0x82D1, 0x8991, 0x82D2, 0xE492, 0x82D3, 0x97E8, 0x82D4, 0x91DB, + 0x82D7, 0x9563, 0x82D9, 0xE49E, 0x82DB, 0x89D5, 0x82DC, 0xE49C, 0x82DE, 0xE49A, 0x82DF, 0xE491, 0x82E1, 0xE48F, 0x82E3, 0xE490, + 0x82E5, 0x8EE1, 0x82E6, 0x8BEA, 0x82E7, 0x9297, 0x82EB, 0x93CF, 0x82F1, 0x8970, 0x82F3, 0xE494, 0x82F4, 0xE493, 0x82F9, 0xE499, + 0x82FA, 0xE495, 0x82FB, 0xE498, 0x8301, 0xFB93, 0x8302, 0x96CE, 0x8303, 0xE497, 0x8304, 0x89D6, 0x8305, 0x8A9D, 0x8306, 0xE49B, + 0x8309, 0xE49D, 0x830E, 0x8C73, 0x8316, 0xE4A1, 0x8317, 0xE4AA, 0x8318, 0xE4AB, 0x831C, 0x88A9, 0x8323, 0xE4B2, 0x8328, 0x88EF, + 0x832B, 0xE4A9, 0x832F, 0xE4A8, 0x8331, 0xE4A3, 0x8332, 0xE4A2, 0x8334, 0xE4A0, 0x8335, 0xE49F, 0x8336, 0x9283, 0x8338, 0x91F9, + 0x8339, 0xE4A5, 0x8340, 0xE4A4, 0x8345, 0xE4A7, 0x8349, 0x9190, 0x834A, 0x8C74, 0x834F, 0x8960, 0x8350, 0xE4A6, 0x8352, 0x8D72, + 0x8358, 0x9191, 0x8362, 0xFB94, 0x8373, 0xE4B8, 0x8375, 0xE4B9, 0x8377, 0x89D7, 0x837B, 0x89AC, 0x837C, 0xE4B6, 0x837F, 0xFB95, + 0x8385, 0xE4AC, 0x8387, 0xE4B4, 0x8389, 0xE4BB, 0x838A, 0xE4B5, 0x838E, 0xE4B3, 0x8393, 0xE496, 0x8396, 0xE4B1, 0x839A, 0xE4AD, + 0x839E, 0x8ACE, 0x839F, 0xE4AF, 0x83A0, 0xE4BA, 0x83A2, 0xE4B0, 0x83A8, 0xE4BC, 0x83AA, 0xE4AE, 0x83AB, 0x949C, 0x83B1, 0x9789, + 0x83B5, 0xE4B7, 0x83BD, 0xE4CD, 0x83C1, 0xE4C5, 0x83C5, 0x909B, 0x83C7, 0xFB96, 0x83CA, 0x8B65, 0x83CC, 0x8BDB, 0x83CE, 0xE4C0, + 0x83D3, 0x89D9, 0x83D6, 0x8FD2, 0x83D8, 0xE4C3, 0x83DC, 0x8DD8, 0x83DF, 0x9370, 0x83E0, 0xE4C8, 0x83E9, 0x95EC, 0x83EB, 0xE4BF, + 0x83EF, 0x89D8, 0x83F0, 0x8CD4, 0x83F1, 0x9548, 0x83F2, 0xE4C9, 0x83F4, 0xE4BD, 0x83F6, 0xFB97, 0x83F7, 0xE4C6, 0x83FB, 0xE4D0, + 0x83FD, 0xE4C1, 0x8403, 0xE4C2, 0x8404, 0x93B8, 0x8407, 0xE4C7, 0x840B, 0xE4C4, 0x840C, 0x9647, 0x840D, 0xE4CA, 0x840E, 0x88DE, + 0x8413, 0xE4BE, 0x8420, 0xE4CC, 0x8422, 0xE4CB, 0x8429, 0x948B, 0x842A, 0xE4D2, 0x842C, 0xE4DD, 0x8431, 0x8A9E, 0x8435, 0xE4E0, + 0x8438, 0xE4CE, 0x843C, 0xE4D3, 0x843D, 0x978E, 0x8446, 0xE4DC, 0x8448, 0xFB98, 0x8449, 0x9774, 0x844E, 0x97A8, 0x8457, 0x9298, + 0x845B, 0x8A8B, 0x8461, 0x9592, 0x8462, 0xE4E2, 0x8463, 0x939F, 0x8466, 0x88AF, 0x8469, 0xE4DB, 0x846B, 0xE4D7, 0x846C, 0x9192, + 0x846D, 0xE4D1, 0x846E, 0xE4D9, 0x846F, 0xE4DE, 0x8471, 0x944B, 0x8475, 0x88A8, 0x8477, 0xE4D6, 0x8479, 0xE4DF, 0x847A, 0x9598, + 0x8482, 0xE4DA, 0x8484, 0xE4D5, 0x848B, 0x8FD3, 0x8490, 0x8F4E, 0x8494, 0x8EAA, 0x8499, 0x96D6, 0x849C, 0x9566, 0x849F, 0xE4E5, + 0x84A1, 0xE4EE, 0x84AD, 0xE4D8, 0x84B2, 0x8A97, 0x84B4, 0xFB99, 0x84B8, 0x8FF6, 0x84B9, 0xE4E3, 0x84BB, 0xE4E8, 0x84BC, 0x9193, + 0x84BF, 0xE4E4, 0x84C1, 0xE4EB, 0x84C4, 0x927E, 0x84C6, 0xE4EC, 0x84C9, 0x9775, 0x84CA, 0xE4E1, 0x84CB, 0x8A57, 0x84CD, 0xE4E7, + 0x84D0, 0xE4EA, 0x84D1, 0x96AA, 0x84D6, 0xE4ED, 0x84D9, 0xE4E6, 0x84DA, 0xE4E9, 0x84DC, 0xFA60, 0x84EC, 0x9648, 0x84EE, 0x9840, + 0x84F4, 0xE4F1, 0x84FC, 0xE4F8, 0x84FF, 0xE4F0, 0x8500, 0x8EC1, 0x8506, 0xE4CF, 0x8511, 0x95CC, 0x8513, 0x96A0, 0x8514, 0xE4F7, + 0x8515, 0xE4F6, 0x8517, 0xE4F2, 0x8518, 0xE4F3, 0x851A, 0x8955, 0x851F, 0xE4F5, 0x8521, 0xE4EF, 0x8526, 0x92D3, 0x852C, 0xE4F4, + 0x852D, 0x88FC, 0x8535, 0x91A0, 0x853D, 0x95C1, 0x8540, 0xE4F9, 0x8541, 0xE540, 0x8543, 0x94D7, 0x8548, 0xE4FC, 0x8549, 0x8FD4, + 0x854A, 0x8EC7, 0x854B, 0xE542, 0x854E, 0x8BBC, 0x8553, 0xFB9A, 0x8555, 0xE543, 0x8557, 0x9599, 0x8558, 0xE4FB, 0x8559, 0xFB9B, + 0x855A, 0xE4D4, 0x8563, 0xE4FA, 0x8568, 0x986E, 0x8569, 0x93A0, 0x856A, 0x9593, 0x856B, 0xFB9C, 0x856D, 0xE54A, 0x8577, 0xE550, + 0x857E, 0xE551, 0x8580, 0xE544, 0x8584, 0x9496, 0x8587, 0xE54E, 0x8588, 0xE546, 0x858A, 0xE548, 0x8590, 0xE552, 0x8591, 0xE547, + 0x8594, 0xE54B, 0x8597, 0x8992, 0x8599, 0x93E3, 0x859B, 0xE54C, 0x859C, 0xE54F, 0x85A4, 0xE545, 0x85A6, 0x9145, 0x85A8, 0xE549, + 0x85A9, 0x8E46, 0x85AA, 0x9064, 0x85AB, 0x8C4F, 0x85AC, 0x96F2, 0x85AE, 0x96F7, 0x85AF, 0x8F92, 0x85B0, 0xFB9E, 0x85B9, 0xE556, + 0x85BA, 0xE554, 0x85C1, 0x986D, 0x85C9, 0xE553, 0x85CD, 0x9795, 0x85CF, 0xE555, 0x85D0, 0xE557, 0x85D5, 0xE558, 0x85DC, 0xE55B, + 0x85DD, 0xE559, 0x85E4, 0x93A1, 0x85E5, 0xE55A, 0x85E9, 0x94CB, 0x85EA, 0xE54D, 0x85F7, 0x8F93, 0x85F9, 0xE55C, 0x85FA, 0xE561, + 0x85FB, 0x9194, 0x85FE, 0xE560, 0x8602, 0xE541, 0x8606, 0xE562, 0x8607, 0x9168, 0x860A, 0xE55D, 0x860B, 0xE55F, 0x8613, 0xE55E, + 0x8616, 0x9F50, 0x8617, 0x9F41, 0x861A, 0xE564, 0x8622, 0xE563, 0x862D, 0x9796, 0x862F, 0xE1BA, 0x8630, 0xE565, 0x863F, 0xE566, + 0x864D, 0xE567, 0x864E, 0x8CD5, 0x8650, 0x8B73, 0x8654, 0xE569, 0x8655, 0x997C, 0x865A, 0x8B95, 0x865C, 0x97B8, 0x865E, 0x8BF1, + 0x865F, 0xE56A, 0x8667, 0xE56B, 0x866B, 0x928E, 0x8671, 0xE56C, 0x8679, 0x93F8, 0x867B, 0x88B8, 0x868A, 0x89E1, 0x868B, 0xE571, + 0x868C, 0xE572, 0x8693, 0xE56D, 0x8695, 0x8E5C, 0x86A3, 0xE56E, 0x86A4, 0x9461, 0x86A9, 0xE56F, 0x86AA, 0xE570, 0x86AB, 0xE57A, + 0x86AF, 0xE574, 0x86B0, 0xE577, 0x86B6, 0xE573, 0x86C4, 0xE575, 0x86C6, 0xE576, 0x86C7, 0x8ED6, 0x86C9, 0xE578, 0x86CB, 0x9260, + 0x86CD, 0x8C75, 0x86CE, 0x8A61, 0x86D4, 0xE57B, 0x86D9, 0x8A5E, 0x86DB, 0xE581, 0x86DE, 0xE57C, 0x86DF, 0xE580, 0x86E4, 0x94B8, + 0x86E9, 0xE57D, 0x86EC, 0xE57E, 0x86ED, 0x9567, 0x86EE, 0x94D8, 0x86EF, 0xE582, 0x86F8, 0x91FB, 0x86F9, 0xE58C, 0x86FB, 0xE588, + 0x86FE, 0x89E9, 0x8700, 0xE586, 0x8702, 0x9649, 0x8703, 0xE587, 0x8706, 0xE584, 0x8708, 0xE585, 0x8709, 0xE58A, 0x870A, 0xE58D, + 0x870D, 0xE58B, 0x8711, 0xE589, 0x8712, 0xE583, 0x8718, 0x9277, 0x871A, 0xE594, 0x871C, 0x96A8, 0x8725, 0xE592, 0x8729, 0xE593, + 0x8734, 0xE58E, 0x8737, 0xE590, 0x873B, 0xE591, 0x873F, 0xE58F, 0x8749, 0x90E4, 0x874B, 0x9858, 0x874C, 0xE598, 0x874E, 0xE599, + 0x8753, 0xE59F, 0x8755, 0x9049, 0x8757, 0xE59B, 0x8759, 0xE59E, 0x875F, 0xE596, 0x8760, 0xE595, 0x8763, 0xE5A0, 0x8766, 0x89DA, + 0x8768, 0xE59C, 0x876A, 0xE5A1, 0x876E, 0xE59D, 0x8774, 0xE59A, 0x8776, 0x92B1, 0x8778, 0xE597, 0x877F, 0x9488, 0x8782, 0xE5A5, + 0x878D, 0x975A, 0x879F, 0xE5A4, 0x87A2, 0xE5A3, 0x87AB, 0xE5AC, 0x87AF, 0xE5A6, 0x87B3, 0xE5AE, 0x87BA, 0x9786, 0x87BB, 0xE5B1, + 0x87BD, 0xE5A8, 0x87C0, 0xE5A9, 0x87C4, 0xE5AD, 0x87C6, 0xE5B0, 0x87C7, 0xE5AF, 0x87CB, 0xE5A7, 0x87D0, 0xE5AA, 0x87D2, 0xE5BB, + 0x87E0, 0xE5B4, 0x87EF, 0xE5B2, 0x87F2, 0xE5B3, 0x87F6, 0xE5B8, 0x87F7, 0xE5B9, 0x87F9, 0x8A49, 0x87FB, 0x8B61, 0x87FE, 0xE5B7, + 0x8805, 0xE5A2, 0x8807, 0xFBA1, 0x880D, 0xE5B6, 0x880E, 0xE5BA, 0x880F, 0xE5B5, 0x8811, 0xE5BC, 0x8815, 0xE5BE, 0x8816, 0xE5BD, + 0x8821, 0xE5C0, 0x8822, 0xE5BF, 0x8823, 0xE579, 0x8827, 0xE5C4, 0x8831, 0xE5C1, 0x8836, 0xE5C2, 0x8839, 0xE5C3, 0x883B, 0xE5C5, + 0x8840, 0x8C8C, 0x8842, 0xE5C7, 0x8844, 0xE5C6, 0x8846, 0x8F4F, 0x884C, 0x8D73, 0x884D, 0x9FA5, 0x8852, 0xE5C8, 0x8853, 0x8F70, + 0x8857, 0x8A58, 0x8859, 0xE5C9, 0x885B, 0x8971, 0x885D, 0x8FD5, 0x885E, 0xE5CA, 0x8861, 0x8D74, 0x8862, 0xE5CB, 0x8863, 0x88DF, + 0x8868, 0x955C, 0x886B, 0xE5CC, 0x8870, 0x908A, 0x8872, 0xE5D3, 0x8875, 0xE5D0, 0x8877, 0x928F, 0x887D, 0xE5D1, 0x887E, 0xE5CE, + 0x887F, 0x8BDC, 0x8881, 0xE5CD, 0x8882, 0xE5D4, 0x8888, 0x8C55, 0x888B, 0x91DC, 0x888D, 0xE5DA, 0x8892, 0xE5D6, 0x8896, 0x91B3, + 0x8897, 0xE5D5, 0x8899, 0xE5D8, 0x889E, 0xE5CF, 0x88A2, 0xE5D9, 0x88A4, 0xE5DB, 0x88AB, 0x94ED, 0x88AE, 0xE5D7, 0x88B0, 0xE5DC, + 0x88B1, 0xE5DE, 0x88B4, 0x8CD1, 0x88B5, 0xE5D2, 0x88B7, 0x88BF, 0x88BF, 0xE5DD, 0x88C1, 0x8DD9, 0x88C2, 0x97F4, 0x88C3, 0xE5DF, + 0x88C4, 0xE5E0, 0x88C5, 0x9195, 0x88CF, 0x97A0, 0x88D4, 0xE5E1, 0x88D5, 0x9754, 0x88D8, 0xE5E2, 0x88D9, 0xE5E3, 0x88DC, 0x95E2, + 0x88DD, 0xE5E4, 0x88DF, 0x8DBE, 0x88E1, 0x97A1, 0x88E8, 0xE5E9, 0x88F2, 0xE5EA, 0x88F3, 0x8FD6, 0x88F4, 0xE5E8, 0x88F5, 0xFBA2, + 0x88F8, 0x9787, 0x88F9, 0xE5E5, 0x88FC, 0xE5E7, 0x88FD, 0x90BB, 0x88FE, 0x909E, 0x8902, 0xE5E6, 0x8904, 0xE5EB, 0x8907, 0x95A1, + 0x890A, 0xE5ED, 0x890C, 0xE5EC, 0x8910, 0x8A8C, 0x8912, 0x964A, 0x8913, 0xE5EE, 0x891C, 0xFA5D, 0x891D, 0xE5FA, 0x891E, 0xE5F0, + 0x8925, 0xE5F1, 0x892A, 0xE5F2, 0x892B, 0xE5F3, 0x8936, 0xE5F7, 0x8938, 0xE5F8, 0x893B, 0xE5F6, 0x8941, 0xE5F4, 0x8943, 0xE5EF, + 0x8944, 0xE5F5, 0x894C, 0xE5F9, 0x894D, 0xE8B5, 0x8956, 0x89A6, 0x895E, 0xE5FC, 0x895F, 0x8BDD, 0x8960, 0xE5FB, 0x8964, 0xE641, + 0x8966, 0xE640, 0x896A, 0xE643, 0x896D, 0xE642, 0x896F, 0xE644, 0x8972, 0x8F50, 0x8974, 0xE645, 0x8977, 0xE646, 0x897E, 0xE647, + 0x897F, 0x90BC, 0x8981, 0x9776, 0x8983, 0xE648, 0x8986, 0x95A2, 0x8987, 0x9465, 0x8988, 0xE649, 0x898A, 0xE64A, 0x898B, 0x8CA9, + 0x898F, 0x8B4B, 0x8993, 0xE64B, 0x8996, 0x8E8B, 0x8997, 0x9460, 0x8998, 0xE64C, 0x899A, 0x8A6F, 0x89A1, 0xE64D, 0x89A6, 0xE64F, + 0x89A7, 0x9797, 0x89A9, 0xE64E, 0x89AA, 0x9065, 0x89AC, 0xE650, 0x89AF, 0xE651, 0x89B2, 0xE652, 0x89B3, 0x8ACF, 0x89BA, 0xE653, + 0x89BD, 0xE654, 0x89BF, 0xE655, 0x89C0, 0xE656, 0x89D2, 0x8A70, 0x89DA, 0xE657, 0x89DC, 0xE658, 0x89DD, 0xE659, 0x89E3, 0x89F0, + 0x89E6, 0x9047, 0x89E7, 0xE65A, 0x89F4, 0xE65B, 0x89F8, 0xE65C, 0x8A00, 0x8CBE, 0x8A02, 0x92F9, 0x8A03, 0xE65D, 0x8A08, 0x8C76, + 0x8A0A, 0x9075, 0x8A0C, 0xE660, 0x8A0E, 0x93A2, 0x8A10, 0xE65F, 0x8A12, 0xFBA3, 0x8A13, 0x8C50, 0x8A16, 0xE65E, 0x8A17, 0x91F5, + 0x8A18, 0x8B4C, 0x8A1B, 0xE661, 0x8A1D, 0xE662, 0x8A1F, 0x8FD7, 0x8A23, 0x8C8D, 0x8A25, 0xE663, 0x8A2A, 0x964B, 0x8A2D, 0x90DD, + 0x8A31, 0x8B96, 0x8A33, 0x96F3, 0x8A34, 0x9169, 0x8A36, 0xE664, 0x8A37, 0xFBA4, 0x8A3A, 0x9066, 0x8A3B, 0x9290, 0x8A3C, 0x8FD8, + 0x8A41, 0xE665, 0x8A46, 0xE668, 0x8A48, 0xE669, 0x8A50, 0x8DBC, 0x8A51, 0x91C0, 0x8A52, 0xE667, 0x8A54, 0x8FD9, 0x8A55, 0x955D, + 0x8A5B, 0xE666, 0x8A5E, 0x8E8C, 0x8A60, 0x8972, 0x8A62, 0xE66D, 0x8A63, 0x8C77, 0x8A66, 0x8E8E, 0x8A69, 0x8E8D, 0x8A6B, 0x986C, + 0x8A6C, 0xE66C, 0x8A6D, 0xE66B, 0x8A6E, 0x9146, 0x8A70, 0x8B6C, 0x8A71, 0x9862, 0x8A72, 0x8A59, 0x8A73, 0x8FDA, 0x8A79, 0xFBA5, + 0x8A7C, 0xE66A, 0x8A82, 0xE66F, 0x8A84, 0xE670, 0x8A85, 0xE66E, 0x8A87, 0x8CD6, 0x8A89, 0x975F, 0x8A8C, 0x8E8F, 0x8A8D, 0x9446, + 0x8A91, 0xE673, 0x8A93, 0x90BE, 0x8A95, 0x9261, 0x8A98, 0x9755, 0x8A9A, 0xE676, 0x8A9E, 0x8CEA, 0x8AA0, 0x90BD, 0x8AA1, 0xE672, + 0x8AA3, 0xE677, 0x8AA4, 0x8CEB, 0x8AA5, 0xE674, 0x8AA6, 0xE675, 0x8AA7, 0xFBA6, 0x8AA8, 0xE671, 0x8AAC, 0x90E0, 0x8AAD, 0x93C7, + 0x8AB0, 0x924E, 0x8AB2, 0x89DB, 0x8AB9, 0x94EE, 0x8ABC, 0x8B62, 0x8ABE, 0xFBA7, 0x8ABF, 0x92B2, 0x8AC2, 0xE67A, 0x8AC4, 0xE678, + 0x8AC7, 0x926B, 0x8ACB, 0x90BF, 0x8ACC, 0x8AD0, 0x8ACD, 0xE679, 0x8ACF, 0x907A, 0x8AD2, 0x97C8, 0x8AD6, 0x985F, 0x8ADA, 0xE67B, + 0x8ADB, 0xE687, 0x8ADC, 0x92B3, 0x8ADE, 0xE686, 0x8ADF, 0xFBA8, 0x8AE0, 0xE683, 0x8AE1, 0xE68B, 0x8AE2, 0xE684, 0x8AE4, 0xE680, + 0x8AE6, 0x92FA, 0x8AE7, 0xE67E, 0x8AEB, 0xE67C, 0x8AED, 0x9740, 0x8AEE, 0x8E90, 0x8AF1, 0xE681, 0x8AF3, 0xE67D, 0x8AF6, 0xFBAA, + 0x8AF7, 0xE685, 0x8AF8, 0x8F94, 0x8AFA, 0x8CBF, 0x8AFE, 0x91F8, 0x8B00, 0x9664, 0x8B01, 0x8979, 0x8B02, 0x88E0, 0x8B04, 0x93A3, + 0x8B07, 0xE689, 0x8B0C, 0xE688, 0x8B0E, 0x93E4, 0x8B10, 0xE68D, 0x8B14, 0xE682, 0x8B16, 0xE68C, 0x8B17, 0xE68E, 0x8B19, 0x8CAA, + 0x8B1A, 0xE68A, 0x8B1B, 0x8D75, 0x8B1D, 0x8ED3, 0x8B20, 0xE68F, 0x8B21, 0x9777, 0x8B26, 0xE692, 0x8B28, 0xE695, 0x8B2B, 0xE693, + 0x8B2C, 0x9554, 0x8B33, 0xE690, 0x8B39, 0x8BDE, 0x8B3E, 0xE694, 0x8B41, 0xE696, 0x8B49, 0xE69A, 0x8B4C, 0xE697, 0x8B4E, 0xE699, + 0x8B4F, 0xE698, 0x8B53, 0xFBAB, 0x8B56, 0xE69B, 0x8B58, 0x8EAF, 0x8B5A, 0xE69D, 0x8B5B, 0xE69C, 0x8B5C, 0x9588, 0x8B5F, 0xE69F, + 0x8B66, 0x8C78, 0x8B6B, 0xE69E, 0x8B6C, 0xE6A0, 0x8B6F, 0xE6A1, 0x8B70, 0x8B63, 0x8B71, 0xE3BF, 0x8B72, 0x8FF7, 0x8B74, 0xE6A2, + 0x8B77, 0x8CEC, 0x8B7D, 0xE6A3, 0x8B7F, 0xFBAC, 0x8B80, 0xE6A4, 0x8B83, 0x8E5D, 0x8B8A, 0x9DCC, 0x8B8C, 0xE6A5, 0x8B8E, 0xE6A6, + 0x8B90, 0x8F51, 0x8B92, 0xE6A7, 0x8B93, 0xE6A8, 0x8B96, 0xE6A9, 0x8B99, 0xE6AA, 0x8B9A, 0xE6AB, 0x8C37, 0x924A, 0x8C3A, 0xE6AC, + 0x8C3F, 0xE6AE, 0x8C41, 0xE6AD, 0x8C46, 0x93A4, 0x8C48, 0xE6AF, 0x8C4A, 0x964C, 0x8C4C, 0xE6B0, 0x8C4E, 0xE6B1, 0x8C50, 0xE6B2, + 0x8C55, 0xE6B3, 0x8C5A, 0x93D8, 0x8C61, 0x8FDB, 0x8C62, 0xE6B4, 0x8C6A, 0x8D8B, 0x8C6B, 0x98AC, 0x8C6C, 0xE6B5, 0x8C78, 0xE6B6, + 0x8C79, 0x955E, 0x8C7A, 0xE6B7, 0x8C7C, 0xE6BF, 0x8C82, 0xE6B8, 0x8C85, 0xE6BA, 0x8C89, 0xE6B9, 0x8C8A, 0xE6BB, 0x8C8C, 0x9665, + 0x8C8D, 0xE6BC, 0x8C8E, 0xE6BD, 0x8C94, 0xE6BE, 0x8C98, 0xE6C0, 0x8C9D, 0x8A4C, 0x8C9E, 0x92E5, 0x8CA0, 0x9589, 0x8CA1, 0x8DE0, + 0x8CA2, 0x8D76, 0x8CA7, 0x956E, 0x8CA8, 0x89DD, 0x8CA9, 0x94CC, 0x8CAA, 0xE6C3, 0x8CAB, 0x8AD1, 0x8CAC, 0x90D3, 0x8CAD, 0xE6C2, + 0x8CAE, 0xE6C7, 0x8CAF, 0x9299, 0x8CB0, 0x96E1, 0x8CB2, 0xE6C5, 0x8CB3, 0xE6C6, 0x8CB4, 0x8B4D, 0x8CB6, 0xE6C8, 0x8CB7, 0x9483, + 0x8CB8, 0x91DD, 0x8CBB, 0x94EF, 0x8CBC, 0x935C, 0x8CBD, 0xE6C4, 0x8CBF, 0x9666, 0x8CC0, 0x89EA, 0x8CC1, 0xE6CA, 0x8CC2, 0x9847, + 0x8CC3, 0x92C0, 0x8CC4, 0x9864, 0x8CC7, 0x8E91, 0x8CC8, 0xE6C9, 0x8CCA, 0x91AF, 0x8CCD, 0xE6DA, 0x8CCE, 0x9147, 0x8CD1, 0x93F6, + 0x8CD3, 0x956F, 0x8CDA, 0xE6CD, 0x8CDB, 0x8E5E, 0x8CDC, 0x8E92, 0x8CDE, 0x8FDC, 0x8CE0, 0x9485, 0x8CE2, 0x8CAB, 0x8CE3, 0xE6CC, + 0x8CE4, 0xE6CB, 0x8CE6, 0x958A, 0x8CEA, 0x8EBF, 0x8CED, 0x9371, 0x8CF0, 0xFBAD, 0x8CF4, 0xFBAE, 0x8CFA, 0xE6CF, 0x8CFB, 0xE6D0, + 0x8CFC, 0x8D77, 0x8CFD, 0xE6CE, 0x8D04, 0xE6D1, 0x8D05, 0xE6D2, 0x8D07, 0xE6D4, 0x8D08, 0x91A1, 0x8D0A, 0xE6D3, 0x8D0B, 0x8AE4, + 0x8D0D, 0xE6D6, 0x8D0F, 0xE6D5, 0x8D10, 0xE6D7, 0x8D12, 0xFBAF, 0x8D13, 0xE6D9, 0x8D14, 0xE6DB, 0x8D16, 0xE6DC, 0x8D64, 0x90D4, + 0x8D66, 0x8ECD, 0x8D67, 0xE6DD, 0x8D6B, 0x8A71, 0x8D6D, 0xE6DE, 0x8D70, 0x9196, 0x8D71, 0xE6DF, 0x8D73, 0xE6E0, 0x8D74, 0x958B, + 0x8D76, 0xFBB0, 0x8D77, 0x8B4E, 0x8D81, 0xE6E1, 0x8D85, 0x92B4, 0x8D8A, 0x897A, 0x8D99, 0xE6E2, 0x8DA3, 0x8EEF, 0x8DA8, 0x9096, + 0x8DB3, 0x91AB, 0x8DBA, 0xE6E5, 0x8DBE, 0xE6E4, 0x8DC2, 0xE6E3, 0x8DCB, 0xE6EB, 0x8DCC, 0xE6E9, 0x8DCF, 0xE6E6, 0x8DD6, 0xE6E8, + 0x8DDA, 0xE6E7, 0x8DDB, 0xE6EA, 0x8DDD, 0x8B97, 0x8DDF, 0xE6EE, 0x8DE1, 0x90D5, 0x8DE3, 0xE6EF, 0x8DE8, 0x8CD7, 0x8DEA, 0xE6EC, + 0x8DEB, 0xE6ED, 0x8DEF, 0x9848, 0x8DF3, 0x92B5, 0x8DF5, 0x9148, 0x8DFC, 0xE6F0, 0x8DFF, 0xE6F3, 0x8E08, 0xE6F1, 0x8E09, 0xE6F2, + 0x8E0A, 0x9778, 0x8E0F, 0x93A5, 0x8E10, 0xE6F6, 0x8E1D, 0xE6F4, 0x8E1E, 0xE6F5, 0x8E1F, 0xE6F7, 0x8E2A, 0xE748, 0x8E30, 0xE6FA, + 0x8E34, 0xE6FB, 0x8E35, 0xE6F9, 0x8E42, 0xE6F8, 0x8E44, 0x92FB, 0x8E47, 0xE740, 0x8E48, 0xE744, 0x8E49, 0xE741, 0x8E4A, 0xE6FC, + 0x8E4C, 0xE742, 0x8E50, 0xE743, 0x8E55, 0xE74A, 0x8E59, 0xE745, 0x8E5F, 0x90D6, 0x8E60, 0xE747, 0x8E63, 0xE749, 0x8E64, 0xE746, + 0x8E72, 0xE74C, 0x8E74, 0x8F52, 0x8E76, 0xE74B, 0x8E7C, 0xE74D, 0x8E81, 0xE74E, 0x8E84, 0xE751, 0x8E85, 0xE750, 0x8E87, 0xE74F, + 0x8E8A, 0xE753, 0x8E8B, 0xE752, 0x8E8D, 0x96F4, 0x8E91, 0xE755, 0x8E93, 0xE754, 0x8E94, 0xE756, 0x8E99, 0xE757, 0x8EA1, 0xE759, + 0x8EAA, 0xE758, 0x8EAB, 0x9067, 0x8EAC, 0xE75A, 0x8EAF, 0x8BEB, 0x8EB0, 0xE75B, 0x8EB1, 0xE75D, 0x8EBE, 0xE75E, 0x8EC5, 0xE75F, + 0x8EC6, 0xE75C, 0x8EC8, 0xE760, 0x8ECA, 0x8ED4, 0x8ECB, 0xE761, 0x8ECC, 0x8B4F, 0x8ECD, 0x8C52, 0x8ECF, 0xFBB2, 0x8ED2, 0x8CAC, + 0x8EDB, 0xE762, 0x8EDF, 0x93EE, 0x8EE2, 0x935D, 0x8EE3, 0xE763, 0x8EEB, 0xE766, 0x8EF8, 0x8EB2, 0x8EFB, 0xE765, 0x8EFC, 0xE764, + 0x8EFD, 0x8C79, 0x8EFE, 0xE767, 0x8F03, 0x8A72, 0x8F05, 0xE769, 0x8F09, 0x8DDA, 0x8F0A, 0xE768, 0x8F0C, 0xE771, 0x8F12, 0xE76B, + 0x8F13, 0xE76D, 0x8F14, 0x95E3, 0x8F15, 0xE76A, 0x8F19, 0xE76C, 0x8F1B, 0xE770, 0x8F1C, 0xE76E, 0x8F1D, 0x8B50, 0x8F1F, 0xE76F, + 0x8F26, 0xE772, 0x8F29, 0x9479, 0x8F2A, 0x97D6, 0x8F2F, 0x8F53, 0x8F33, 0xE773, 0x8F38, 0x9741, 0x8F39, 0xE775, 0x8F3B, 0xE774, + 0x8F3E, 0xE778, 0x8F3F, 0x9760, 0x8F42, 0xE777, 0x8F44, 0x8A8D, 0x8F45, 0xE776, 0x8F46, 0xE77B, 0x8F49, 0xE77A, 0x8F4C, 0xE779, + 0x8F4D, 0x9351, 0x8F4E, 0xE77C, 0x8F57, 0xE77D, 0x8F5C, 0xE77E, 0x8F5F, 0x8D8C, 0x8F61, 0x8C44, 0x8F62, 0xE780, 0x8F63, 0xE781, + 0x8F64, 0xE782, 0x8F9B, 0x9068, 0x8F9C, 0xE783, 0x8F9E, 0x8EAB, 0x8F9F, 0xE784, 0x8FA3, 0xE785, 0x8FA7, 0x999F, 0x8FA8, 0x999E, + 0x8FAD, 0xE786, 0x8FAE, 0xE390, 0x8FAF, 0xE787, 0x8FB0, 0x9243, 0x8FB1, 0x904A, 0x8FB2, 0x945F, 0x8FB7, 0xE788, 0x8FBA, 0x95D3, + 0x8FBB, 0x92D2, 0x8FBC, 0x8D9E, 0x8FBF, 0x9248, 0x8FC2, 0x8949, 0x8FC4, 0x9698, 0x8FC5, 0x9076, 0x8FCE, 0x8C7D, 0x8FD1, 0x8BDF, + 0x8FD4, 0x95D4, 0x8FDA, 0xE789, 0x8FE2, 0xE78B, 0x8FE5, 0xE78A, 0x8FE6, 0x89DE, 0x8FE9, 0x93F4, 0x8FEA, 0xE78C, 0x8FEB, 0x9497, + 0x8FED, 0x9352, 0x8FEF, 0xE78D, 0x8FF0, 0x8F71, 0x8FF4, 0xE78F, 0x8FF7, 0x96C0, 0x8FF8, 0xE79E, 0x8FF9, 0xE791, 0x8FFA, 0xE792, + 0x8FFD, 0x92C7, 0x9000, 0x91DE, 0x9001, 0x9197, 0x9003, 0x93A6, 0x9005, 0xE790, 0x9006, 0x8B74, 0x900B, 0xE799, 0x900D, 0xE796, + 0x900E, 0xE7A3, 0x900F, 0x93A7, 0x9010, 0x9280, 0x9011, 0xE793, 0x9013, 0x92FC, 0x9014, 0x9372, 0x9015, 0xE794, 0x9016, 0xE798, + 0x9017, 0x9080, 0x9019, 0x9487, 0x901A, 0x92CA, 0x901D, 0x90C0, 0x901E, 0xE797, 0x901F, 0x91AC, 0x9020, 0x91A2, 0x9021, 0xE795, + 0x9022, 0x88A7, 0x9023, 0x9841, 0x9027, 0xE79A, 0x902E, 0x91DF, 0x9031, 0x8F54, 0x9032, 0x9069, 0x9035, 0xE79C, 0x9036, 0xE79B, + 0x9038, 0x88ED, 0x9039, 0xE79D, 0x903C, 0x954E, 0x903E, 0xE7A5, 0x9041, 0x93D9, 0x9042, 0x908B, 0x9045, 0x9278, 0x9047, 0x8BF6, + 0x9049, 0xE7A4, 0x904A, 0x9756, 0x904B, 0x895E, 0x904D, 0x95D5, 0x904E, 0x89DF, 0x904F, 0xE79F, 0x9050, 0xE7A0, 0x9051, 0xE7A1, + 0x9052, 0xE7A2, 0x9053, 0x93B9, 0x9054, 0x9242, 0x9055, 0x88E1, 0x9056, 0xE7A6, 0x9058, 0xE7A7, 0x9059, 0xEAA1, 0x905C, 0x91BB, + 0x905E, 0xE7A8, 0x9060, 0x8993, 0x9061, 0x916B, 0x9063, 0x8CAD, 0x9065, 0x9779, 0x9067, 0xFBB5, 0x9068, 0xE7A9, 0x9069, 0x934B, + 0x906D, 0x9198, 0x906E, 0x8ED5, 0x906F, 0xE7AA, 0x9072, 0xE7AD, 0x9075, 0x8F85, 0x9076, 0xE7AB, 0x9077, 0x914A, 0x9078, 0x9149, + 0x907A, 0x88E2, 0x907C, 0x97C9, 0x907D, 0xE7AF, 0x907F, 0x94F0, 0x9080, 0xE7B1, 0x9081, 0xE7B0, 0x9082, 0xE7AE, 0x9083, 0xE284, + 0x9084, 0x8AD2, 0x9087, 0xE78E, 0x9089, 0xE7B3, 0x908A, 0xE7B2, 0x908F, 0xE7B4, 0x9091, 0x9757, 0x90A3, 0x93DF, 0x90A6, 0x964D, + 0x90A8, 0xE7B5, 0x90AA, 0x8ED7, 0x90AF, 0xE7B6, 0x90B1, 0xE7B7, 0x90B5, 0xE7B8, 0x90B8, 0x9340, 0x90C1, 0x88E8, 0x90CA, 0x8D78, + 0x90CE, 0x9859, 0x90DB, 0xE7BC, 0x90DE, 0xFBB6, 0x90E1, 0x8C53, 0x90E2, 0xE7B9, 0x90E4, 0xE7BA, 0x90E8, 0x9594, 0x90ED, 0x8A73, + 0x90F5, 0x9758, 0x90F7, 0x8BBD, 0x90FD, 0x9373, 0x9102, 0xE7BD, 0x9112, 0xE7BE, 0x9115, 0xFBB8, 0x9119, 0xE7BF, 0x9127, 0xFBB9, + 0x912D, 0x9341, 0x9130, 0xE7C1, 0x9132, 0xE7C0, 0x9149, 0x93D1, 0x914A, 0xE7C2, 0x914B, 0x8F55, 0x914C, 0x8EDE, 0x914D, 0x947A, + 0x914E, 0x9291, 0x9152, 0x8EF0, 0x9154, 0x908C, 0x9156, 0xE7C3, 0x9158, 0xE7C4, 0x9162, 0x907C, 0x9163, 0xE7C5, 0x9165, 0xE7C6, + 0x9169, 0xE7C7, 0x916A, 0x978F, 0x916C, 0x8F56, 0x9172, 0xE7C9, 0x9173, 0xE7C8, 0x9175, 0x8D79, 0x9177, 0x8D93, 0x9178, 0x8E5F, + 0x9182, 0xE7CC, 0x9187, 0x8F86, 0x9189, 0xE7CB, 0x918B, 0xE7CA, 0x918D, 0x91E7, 0x9190, 0x8CED, 0x9192, 0x90C1, 0x9197, 0x94AE, + 0x919C, 0x8F58, 0x91A2, 0xE7CD, 0x91A4, 0x8FDD, 0x91AA, 0xE7D0, 0x91AB, 0xE7CE, 0x91AF, 0xE7CF, 0x91B4, 0xE7D2, 0x91B5, 0xE7D1, + 0x91B8, 0x8FF8, 0x91BA, 0xE7D3, 0x91C0, 0xE7D4, 0x91C1, 0xE7D5, 0x91C6, 0x94CE, 0x91C7, 0x8DD1, 0x91C8, 0x8EDF, 0x91C9, 0xE7D6, + 0x91CB, 0xE7D7, 0x91CC, 0x97A2, 0x91CD, 0x8F64, 0x91CE, 0x96EC, 0x91CF, 0x97CA, 0x91D0, 0xE7D8, 0x91D1, 0x8BE0, 0x91D6, 0xE7D9, + 0x91D7, 0xFBBB, 0x91D8, 0x9342, 0x91DA, 0xFBBA, 0x91DB, 0xE7DC, 0x91DC, 0x8A98, 0x91DD, 0x906A, 0x91DE, 0xFBBC, 0x91DF, 0xE7DA, + 0x91E1, 0xE7DB, 0x91E3, 0x92DE, 0x91E4, 0xFBBF, 0x91E5, 0xFBC0, 0x91E6, 0x9674, 0x91E7, 0x8BFA, 0x91ED, 0xFBBD, 0x91EE, 0xFBBE, + 0x91F5, 0xE7DE, 0x91F6, 0xE7DF, 0x91FC, 0xE7DD, 0x91FF, 0xE7E1, 0x9206, 0xFBC1, 0x920A, 0xFBC3, 0x920D, 0x93DD, 0x920E, 0x8A62, + 0x9210, 0xFBC2, 0x9211, 0xE7E5, 0x9214, 0xE7E2, 0x9215, 0xE7E4, 0x921E, 0xE7E0, 0x9229, 0xE86E, 0x922C, 0xE7E3, 0x9234, 0x97E9, + 0x9237, 0x8CD8, 0x9239, 0xFBCA, 0x923A, 0xFBC4, 0x923C, 0xFBC6, 0x923F, 0xE7ED, 0x9240, 0xFBC5, 0x9244, 0x9353, 0x9245, 0xE7E8, + 0x9248, 0xE7EB, 0x9249, 0xE7E9, 0x924B, 0xE7EE, 0x924E, 0xFBC7, 0x9250, 0xE7EF, 0x9251, 0xFBC9, 0x9257, 0xE7E7, 0x9259, 0xFBC8, + 0x925A, 0xE7F4, 0x925B, 0x8994, 0x925E, 0xE7E6, 0x9262, 0x94AB, 0x9264, 0xE7EA, 0x9266, 0x8FDE, 0x9267, 0xFBCB, 0x9271, 0x8D7A, + 0x9277, 0xFBCD, 0x9278, 0xFBCE, 0x927E, 0x9667, 0x9280, 0x8BE2, 0x9283, 0x8F65, 0x9285, 0x93BA, 0x9288, 0xFA5F, 0x9291, 0x914C, + 0x9293, 0xE7F2, 0x9295, 0xE7EC, 0x9296, 0xE7F1, 0x9298, 0x96C1, 0x929A, 0x92B6, 0x929B, 0xE7F3, 0x929C, 0xE7F0, 0x92A7, 0xFBCC, + 0x92AD, 0x914B, 0x92B7, 0xE7F7, 0x92B9, 0xE7F6, 0x92CF, 0xE7F5, 0x92D0, 0xFBD2, 0x92D2, 0x964E, 0x92D3, 0xFBD6, 0x92D5, 0xFBD4, + 0x92D7, 0xFBD0, 0x92D9, 0xFBD1, 0x92E0, 0xFBD5, 0x92E4, 0x8F9B, 0x92E7, 0xFBCF, 0x92E9, 0xE7F8, 0x92EA, 0x95DD, 0x92ED, 0x8973, + 0x92F2, 0x9565, 0x92F3, 0x9292, 0x92F8, 0x8B98, 0x92F9, 0xFA65, 0x92FA, 0xE7FA, 0x92FB, 0xFBD9, 0x92FC, 0x8D7C, 0x92FF, 0xFBDC, + 0x9302, 0xFBDE, 0x9306, 0x8E4B, 0x930F, 0xE7F9, 0x9310, 0x908D, 0x9318, 0x908E, 0x9319, 0xE840, 0x931A, 0xE842, 0x931D, 0xFBDD, + 0x931E, 0xFBDB, 0x9320, 0x8FF9, 0x9321, 0xFBD8, 0x9322, 0xE841, 0x9323, 0xE843, 0x9325, 0xFBD7, 0x9326, 0x8BD1, 0x9328, 0x9564, + 0x932B, 0x8EE0, 0x932C, 0x9842, 0x932E, 0xE7FC, 0x932F, 0x8DF6, 0x9332, 0x985E, 0x9335, 0xE845, 0x933A, 0xE844, 0x933B, 0xE846, + 0x9344, 0xE7FB, 0x9348, 0xFA5E, 0x934B, 0x93E7, 0x934D, 0x9374, 0x9354, 0x92D5, 0x9356, 0xE84B, 0x9357, 0xFBE0, 0x935B, 0x9262, + 0x935C, 0xE847, 0x9360, 0xE848, 0x936C, 0x8C4C, 0x936E, 0xE84A, 0x9370, 0xFBDF, 0x9375, 0x8CAE, 0x937C, 0xE849, 0x937E, 0x8FDF, + 0x938C, 0x8A99, 0x9394, 0xE84F, 0x9396, 0x8DBD, 0x9397, 0x9199, 0x939A, 0x92C8, 0x93A4, 0xFBE1, 0x93A7, 0x8A5A, 0x93AC, 0xE84D, + 0x93AD, 0xE84E, 0x93AE, 0x92C1, 0x93B0, 0xE84C, 0x93B9, 0xE850, 0x93C3, 0xE856, 0x93C6, 0xFBE2, 0x93C8, 0xE859, 0x93D0, 0xE858, + 0x93D1, 0x934C, 0x93D6, 0xE851, 0x93D7, 0xE852, 0x93D8, 0xE855, 0x93DD, 0xE857, 0x93DE, 0xFBE3, 0x93E1, 0x8BBE, 0x93E4, 0xE85A, + 0x93E5, 0xE854, 0x93E8, 0xE853, 0x93F8, 0xFBE4, 0x9403, 0xE85E, 0x9407, 0xE85F, 0x9410, 0xE860, 0x9413, 0xE85D, 0x9414, 0xE85C, + 0x9418, 0x8FE0, 0x9419, 0x93A8, 0x941A, 0xE85B, 0x9421, 0xE864, 0x942B, 0xE862, 0x9431, 0xFBE5, 0x9435, 0xE863, 0x9436, 0xE861, + 0x9438, 0x91F6, 0x943A, 0xE865, 0x9441, 0xE866, 0x9444, 0xE868, 0x9445, 0xFBE6, 0x9448, 0xFBE7, 0x9451, 0x8AD3, 0x9452, 0xE867, + 0x9453, 0x96F8, 0x945A, 0xE873, 0x945B, 0xE869, 0x945E, 0xE86C, 0x9460, 0xE86A, 0x9462, 0xE86B, 0x946A, 0xE86D, 0x9470, 0xE86F, + 0x9475, 0xE870, 0x9477, 0xE871, 0x947C, 0xE874, 0x947D, 0xE872, 0x947E, 0xE875, 0x947F, 0xE877, 0x9481, 0xE876, 0x9577, 0x92B7, + 0x9580, 0x96E5, 0x9582, 0xE878, 0x9583, 0x914D, 0x9587, 0xE879, 0x9589, 0x95C2, 0x958A, 0xE87A, 0x958B, 0x8A4A, 0x958F, 0x895B, + 0x9591, 0x8AD5, 0x9592, 0xFBE8, 0x9593, 0x8AD4, 0x9594, 0xE87B, 0x9596, 0xE87C, 0x9598, 0xE87D, 0x9599, 0xE87E, 0x95A0, 0xE880, + 0x95A2, 0x8AD6, 0x95A3, 0x8A74, 0x95A4, 0x8D7D, 0x95A5, 0x94B4, 0x95A7, 0xE882, 0x95A8, 0xE881, 0x95AD, 0xE883, 0x95B2, 0x897B, + 0x95B9, 0xE886, 0x95BB, 0xE885, 0x95BC, 0xE884, 0x95BE, 0xE887, 0x95C3, 0xE88A, 0x95C7, 0x88C5, 0x95CA, 0xE888, 0x95CC, 0xE88C, + 0x95CD, 0xE88B, 0x95D4, 0xE88E, 0x95D5, 0xE88D, 0x95D6, 0xE88F, 0x95D8, 0x93AC, 0x95DC, 0xE890, 0x95E1, 0xE891, 0x95E2, 0xE893, + 0x95E5, 0xE892, 0x961C, 0x958C, 0x9621, 0xE894, 0x9628, 0xE895, 0x962A, 0x8DE3, 0x962E, 0xE896, 0x962F, 0xE897, 0x9632, 0x9668, + 0x963B, 0x916A, 0x963F, 0x88A2, 0x9640, 0x91C9, 0x9642, 0xE898, 0x9644, 0x958D, 0x964B, 0xE89B, 0x964C, 0xE899, 0x964D, 0x8D7E, + 0x964F, 0xE89A, 0x9650, 0x8CC0, 0x965B, 0x95C3, 0x965C, 0xE89D, 0x965D, 0xE89F, 0x965E, 0xE89E, 0x965F, 0xE8A0, 0x9662, 0x8940, + 0x9663, 0x9077, 0x9664, 0x8F9C, 0x9665, 0x8AD7, 0x9666, 0xE8A1, 0x966A, 0x9486, 0x966C, 0xE8A3, 0x9670, 0x8941, 0x9672, 0xE8A2, + 0x9673, 0x92C2, 0x9675, 0x97CB, 0x9676, 0x93A9, 0x9677, 0xE89C, 0x9678, 0x97A4, 0x967A, 0x8CAF, 0x967D, 0x977A, 0x9685, 0x8BF7, + 0x9686, 0x97B2, 0x9688, 0x8C47, 0x968A, 0x91E0, 0x968B, 0xE440, 0x968D, 0xE8A4, 0x968E, 0x8A4B, 0x968F, 0x908F, 0x9694, 0x8A75, + 0x9695, 0xE8A6, 0x9697, 0xE8A7, 0x9698, 0xE8A5, 0x9699, 0x8C84, 0x969B, 0x8DDB, 0x969C, 0x8FE1, 0x969D, 0xFBEB, 0x96A0, 0x8942, + 0x96A3, 0x97D7, 0x96A7, 0xE8A9, 0x96A8, 0xE7AC, 0x96AA, 0xE8A8, 0x96AF, 0xFBEC, 0x96B0, 0xE8AC, 0x96B1, 0xE8AA, 0x96B2, 0xE8AB, + 0x96B4, 0xE8AD, 0x96B6, 0xE8AE, 0x96B7, 0x97EA, 0x96B8, 0xE8AF, 0x96B9, 0xE8B0, 0x96BB, 0x90C7, 0x96BC, 0x94B9, 0x96C0, 0x909D, + 0x96C1, 0x8AE5, 0x96C4, 0x9759, 0x96C5, 0x89EB, 0x96C6, 0x8F57, 0x96C7, 0x8CD9, 0x96C9, 0xE8B3, 0x96CB, 0xE8B2, 0x96CC, 0x8E93, + 0x96CD, 0xE8B4, 0x96CE, 0xE8B1, 0x96D1, 0x8E47, 0x96D5, 0xE8B8, 0x96D6, 0xE5AB, 0x96D9, 0x99D4, 0x96DB, 0x9097, 0x96DC, 0xE8B6, + 0x96E2, 0x97A3, 0x96E3, 0x93EF, 0x96E8, 0x894A, 0x96EA, 0x90E1, 0x96EB, 0x8EB4, 0x96F0, 0x95B5, 0x96F2, 0x895F, 0x96F6, 0x97EB, + 0x96F7, 0x978B, 0x96F9, 0xE8B9, 0x96FB, 0x9364, 0x9700, 0x8EF9, 0x9704, 0xE8BA, 0x9706, 0xE8BB, 0x9707, 0x906B, 0x9708, 0xE8BC, + 0x970A, 0x97EC, 0x970D, 0xE8B7, 0x970E, 0xE8BE, 0x970F, 0xE8C0, 0x9711, 0xE8BF, 0x9713, 0xE8BD, 0x9716, 0xE8C1, 0x9719, 0xE8C2, + 0x971C, 0x919A, 0x971E, 0x89E0, 0x9724, 0xE8C3, 0x9727, 0x96B6, 0x972A, 0xE8C4, 0x9730, 0xE8C5, 0x9732, 0x9849, 0x9733, 0xFBED, + 0x9738, 0x9E50, 0x9739, 0xE8C6, 0x973B, 0xFBEE, 0x973D, 0xE8C7, 0x973E, 0xE8C8, 0x9742, 0xE8CC, 0x9743, 0xFBEF, 0x9744, 0xE8C9, + 0x9746, 0xE8CA, 0x9748, 0xE8CB, 0x9749, 0xE8CD, 0x974D, 0xFBF0, 0x974F, 0xFBF1, 0x9751, 0xFBF2, 0x9752, 0x90C2, 0x9755, 0xFBF3, + 0x9756, 0x96F5, 0x9759, 0x90C3, 0x975C, 0xE8CE, 0x975E, 0x94F1, 0x9760, 0xE8CF, 0x9761, 0xEA72, 0x9762, 0x96CA, 0x9764, 0xE8D0, + 0x9766, 0xE8D1, 0x9768, 0xE8D2, 0x9769, 0x8A76, 0x976B, 0xE8D4, 0x976D, 0x9078, 0x9771, 0xE8D5, 0x9774, 0x8C43, 0x9779, 0xE8D6, + 0x977A, 0xE8DA, 0x977C, 0xE8D8, 0x9781, 0xE8D9, 0x9784, 0x8A93, 0x9785, 0xE8D7, 0x9786, 0xE8DB, 0x978B, 0xE8DC, 0x978D, 0x88C6, + 0x978F, 0xE8DD, 0x9790, 0xE8DE, 0x9798, 0x8FE2, 0x979C, 0xE8DF, 0x97A0, 0x8B66, 0x97A3, 0xE8E2, 0x97A6, 0xE8E1, 0x97A8, 0xE8E0, + 0x97AB, 0xE691, 0x97AD, 0x95DA, 0x97B3, 0xE8E3, 0x97B4, 0xE8E4, 0x97C3, 0xE8E5, 0x97C6, 0xE8E6, 0x97C8, 0xE8E7, 0x97CB, 0xE8E8, + 0x97D3, 0x8AD8, 0x97DC, 0xE8E9, 0x97ED, 0xE8EA, 0x97EE, 0x9442, 0x97F2, 0xE8EC, 0x97F3, 0x89B9, 0x97F5, 0xE8EF, 0x97F6, 0xE8EE, + 0x97FB, 0x8943, 0x97FF, 0x8BBF, 0x9801, 0x95C5, 0x9802, 0x92B8, 0x9803, 0x8DA0, 0x9805, 0x8D80, 0x9806, 0x8F87, 0x9808, 0x907B, + 0x980C, 0xE8F1, 0x980F, 0xE8F0, 0x9810, 0x9761, 0x9811, 0x8AE6, 0x9812, 0x94D0, 0x9813, 0x93DA, 0x9817, 0x909C, 0x9818, 0x97CC, + 0x981A, 0x8C7A, 0x9821, 0xE8F4, 0x9824, 0xE8F3, 0x982C, 0x966A, 0x982D, 0x93AA, 0x9834, 0x896F, 0x9837, 0xE8F5, 0x9838, 0xE8F2, + 0x983B, 0x9570, 0x983C, 0x978A, 0x983D, 0xE8F6, 0x9846, 0xE8F7, 0x984B, 0xE8F9, 0x984C, 0x91E8, 0x984D, 0x8A7A, 0x984E, 0x8A7B, + 0x984F, 0xE8F8, 0x9854, 0x8AE7, 0x9855, 0x8CB0, 0x9857, 0xFBF4, 0x9858, 0x8AE8, 0x985B, 0x935E, 0x985E, 0x97DE, 0x9865, 0xFBF5, + 0x9867, 0x8CDA, 0x986B, 0xE8FA, 0x986F, 0xE8FB, 0x9870, 0xE8FC, 0x9871, 0xE940, 0x9873, 0xE942, 0x9874, 0xE941, 0x98A8, 0x9597, + 0x98AA, 0xE943, 0x98AF, 0xE944, 0x98B1, 0xE945, 0x98B6, 0xE946, 0x98C3, 0xE948, 0x98C4, 0xE947, 0x98C6, 0xE949, 0x98DB, 0x94F2, + 0x98DC, 0xE3CA, 0x98DF, 0x9048, 0x98E2, 0x8B51, 0x98E9, 0xE94A, 0x98EB, 0xE94B, 0x98ED, 0x99AA, 0x98EE, 0x9F5A, 0x98EF, 0x94D1, + 0x98F2, 0x88F9, 0x98F4, 0x88B9, 0x98FC, 0x8E94, 0x98FD, 0x964F, 0x98FE, 0x8FFC, 0x9903, 0xE94C, 0x9905, 0x96DD, 0x9909, 0xE94D, + 0x990A, 0x977B, 0x990C, 0x8961, 0x9910, 0x8E60, 0x9912, 0xE94E, 0x9913, 0x89EC, 0x9914, 0xE94F, 0x9918, 0xE950, 0x991D, 0xE952, + 0x991E, 0xE953, 0x9920, 0xE955, 0x9921, 0xE951, 0x9924, 0xE954, 0x9927, 0xFBF8, 0x9928, 0x8AD9, 0x992C, 0xE956, 0x992E, 0xE957, + 0x993D, 0xE958, 0x993E, 0xE959, 0x9942, 0xE95A, 0x9945, 0xE95C, 0x9949, 0xE95B, 0x994B, 0xE95E, 0x994C, 0xE961, 0x9950, 0xE95D, + 0x9951, 0xE95F, 0x9952, 0xE960, 0x9955, 0xE962, 0x9957, 0x8BC0, 0x9996, 0x8EF1, 0x9997, 0xE963, 0x9998, 0xE964, 0x9999, 0x8D81, + 0x999E, 0xFBFA, 0x99A5, 0xE965, 0x99A8, 0x8A5D, 0x99AC, 0x946E, 0x99AD, 0xE966, 0x99AE, 0xE967, 0x99B3, 0x9279, 0x99B4, 0x93E9, + 0x99BC, 0xE968, 0x99C1, 0x949D, 0x99C4, 0x91CA, 0x99C5, 0x8977, 0x99C6, 0x8BEC, 0x99C8, 0x8BED, 0x99D0, 0x9293, 0x99D1, 0xE96D, + 0x99D2, 0x8BEE, 0x99D5, 0x89ED, 0x99D8, 0xE96C, 0x99DB, 0xE96A, 0x99DD, 0xE96B, 0x99DF, 0xE969, 0x99E2, 0xE977, 0x99ED, 0xE96E, + 0x99EE, 0xE96F, 0x99F1, 0xE970, 0x99F2, 0xE971, 0x99F8, 0xE973, 0x99FB, 0xE972, 0x99FF, 0x8F78, 0x9A01, 0xE974, 0x9A05, 0xE976, + 0x9A0E, 0x8B52, 0x9A0F, 0xE975, 0x9A12, 0x919B, 0x9A13, 0x8CB1, 0x9A19, 0xE978, 0x9A28, 0x91CB, 0x9A2B, 0xE979, 0x9A30, 0x93AB, + 0x9A37, 0xE97A, 0x9A3E, 0xE980, 0x9A40, 0xE97D, 0x9A42, 0xE97C, 0x9A43, 0xE97E, 0x9A45, 0xE97B, 0x9A4D, 0xE982, 0x9A4E, 0xFBFB, + 0x9A55, 0xE981, 0x9A57, 0xE984, 0x9A5A, 0x8BC1, 0x9A5B, 0xE983, 0x9A5F, 0xE985, 0x9A62, 0xE986, 0x9A64, 0xE988, 0x9A65, 0xE987, + 0x9A69, 0xE989, 0x9A6A, 0xE98B, 0x9A6B, 0xE98A, 0x9AA8, 0x8D9C, 0x9AAD, 0xE98C, 0x9AB0, 0xE98D, 0x9AB8, 0x8A5B, 0x9ABC, 0xE98E, + 0x9AC0, 0xE98F, 0x9AC4, 0x9091, 0x9ACF, 0xE990, 0x9AD1, 0xE991, 0x9AD3, 0xE992, 0x9AD4, 0xE993, 0x9AD8, 0x8D82, 0x9AD9, 0xFBFC, + 0x9ADC, 0xFC40, 0x9ADE, 0xE994, 0x9ADF, 0xE995, 0x9AE2, 0xE996, 0x9AE3, 0xE997, 0x9AE6, 0xE998, 0x9AEA, 0x94AF, 0x9AEB, 0xE99A, + 0x9AED, 0x9545, 0x9AEE, 0xE99B, 0x9AEF, 0xE999, 0x9AF1, 0xE99D, 0x9AF4, 0xE99C, 0x9AF7, 0xE99E, 0x9AFB, 0xE99F, 0x9B06, 0xE9A0, + 0x9B18, 0xE9A1, 0x9B1A, 0xE9A2, 0x9B1F, 0xE9A3, 0x9B22, 0xE9A4, 0x9B23, 0xE9A5, 0x9B25, 0xE9A6, 0x9B27, 0xE9A7, 0x9B28, 0xE9A8, + 0x9B29, 0xE9A9, 0x9B2A, 0xE9AA, 0x9B2E, 0xE9AB, 0x9B2F, 0xE9AC, 0x9B31, 0x9F54, 0x9B32, 0xE9AD, 0x9B3B, 0xE2F6, 0x9B3C, 0x8B53, + 0x9B41, 0x8A40, 0x9B42, 0x8DB0, 0x9B43, 0xE9AF, 0x9B44, 0xE9AE, 0x9B45, 0x96A3, 0x9B4D, 0xE9B1, 0x9B4E, 0xE9B2, 0x9B4F, 0xE9B0, + 0x9B51, 0xE9B3, 0x9B54, 0x9682, 0x9B58, 0xE9B4, 0x9B5A, 0x8B9B, 0x9B6F, 0x9844, 0x9B72, 0xFC42, 0x9B74, 0xE9B5, 0x9B75, 0xFC41, + 0x9B83, 0xE9B7, 0x9B8E, 0x88BC, 0x9B8F, 0xFC43, 0x9B91, 0xE9B8, 0x9B92, 0x95A9, 0x9B93, 0xE9B6, 0x9B96, 0xE9B9, 0x9B97, 0xE9BA, + 0x9B9F, 0xE9BB, 0x9BA0, 0xE9BC, 0x9BA8, 0xE9BD, 0x9BAA, 0x968E, 0x9BAB, 0x8E4C, 0x9BAD, 0x8DF8, 0x9BAE, 0x914E, 0x9BB1, 0xFC44, + 0x9BB4, 0xE9BE, 0x9BB9, 0xE9C1, 0x9BBB, 0xFC45, 0x9BC0, 0xE9BF, 0x9BC6, 0xE9C2, 0x9BC9, 0x8CEF, 0x9BCA, 0xE9C0, 0x9BCF, 0xE9C3, + 0x9BD1, 0xE9C4, 0x9BD2, 0xE9C5, 0x9BD4, 0xE9C9, 0x9BD6, 0x8E49, 0x9BDB, 0x91E2, 0x9BE1, 0xE9CA, 0x9BE2, 0xE9C7, 0x9BE3, 0xE9C6, + 0x9BE4, 0xE9C8, 0x9BE8, 0x8C7E, 0x9BF0, 0xE9CE, 0x9BF1, 0xE9CD, 0x9BF2, 0xE9CC, 0x9BF5, 0x88B1, 0x9C00, 0xFC46, 0x9C04, 0xE9D8, + 0x9C06, 0xE9D4, 0x9C08, 0xE9D5, 0x9C09, 0xE9D1, 0x9C0A, 0xE9D7, 0x9C0C, 0xE9D3, 0x9C0D, 0x8A82, 0x9C10, 0x986B, 0x9C12, 0xE9D6, + 0x9C13, 0xE9D2, 0x9C14, 0xE9D0, 0x9C15, 0xE9CF, 0x9C1B, 0xE9DA, 0x9C21, 0xE9DD, 0x9C24, 0xE9DC, 0x9C25, 0xE9DB, 0x9C2D, 0x9568, + 0x9C2E, 0xE9D9, 0x9C2F, 0x88F1, 0x9C30, 0xE9DE, 0x9C32, 0xE9E0, 0x9C39, 0x8A8F, 0x9C3A, 0xE9CB, 0x9C3B, 0x8956, 0x9C3E, 0xE9E2, + 0x9C46, 0xE9E1, 0x9C47, 0xE9DF, 0x9C48, 0x924C, 0x9C52, 0x9690, 0x9C57, 0x97D8, 0x9C5A, 0xE9E3, 0x9C60, 0xE9E4, 0x9C67, 0xE9E5, + 0x9C76, 0xE9E6, 0x9C78, 0xE9E7, 0x9CE5, 0x92B9, 0x9CE7, 0xE9E8, 0x9CE9, 0x94B5, 0x9CEB, 0xE9ED, 0x9CEC, 0xE9E9, 0x9CF0, 0xE9EA, + 0x9CF3, 0x9650, 0x9CF4, 0x96C2, 0x9CF6, 0x93CE, 0x9D03, 0xE9EE, 0x9D06, 0xE9EF, 0x9D07, 0x93BC, 0x9D08, 0xE9EC, 0x9D09, 0xE9EB, + 0x9D0E, 0x89A8, 0x9D12, 0xE9F7, 0x9D15, 0xE9F6, 0x9D1B, 0x8995, 0x9D1F, 0xE9F4, 0x9D23, 0xE9F3, 0x9D26, 0xE9F1, 0x9D28, 0x8A9B, + 0x9D2A, 0xE9F0, 0x9D2B, 0x8EB0, 0x9D2C, 0x89A7, 0x9D3B, 0x8D83, 0x9D3E, 0xE9FA, 0x9D3F, 0xE9F9, 0x9D41, 0xE9F8, 0x9D44, 0xE9F5, + 0x9D46, 0xE9FB, 0x9D48, 0xE9FC, 0x9D50, 0xEA44, 0x9D51, 0xEA43, 0x9D59, 0xEA45, 0x9D5C, 0x894C, 0x9D5D, 0xEA40, 0x9D5E, 0xEA41, + 0x9D60, 0x8D94, 0x9D61, 0x96B7, 0x9D64, 0xEA42, 0x9D6B, 0xFC48, 0x9D6C, 0x9651, 0x9D6F, 0xEA4A, 0x9D70, 0xFC47, 0x9D72, 0xEA46, + 0x9D7A, 0xEA4B, 0x9D87, 0xEA48, 0x9D89, 0xEA47, 0x9D8F, 0x8C7B, 0x9D9A, 0xEA4C, 0x9DA4, 0xEA4D, 0x9DA9, 0xEA4E, 0x9DAB, 0xEA49, + 0x9DAF, 0xE9F2, 0x9DB2, 0xEA4F, 0x9DB4, 0x92DF, 0x9DB8, 0xEA53, 0x9DBA, 0xEA54, 0x9DBB, 0xEA52, 0x9DC1, 0xEA51, 0x9DC2, 0xEA57, + 0x9DC4, 0xEA50, 0x9DC6, 0xEA55, 0x9DCF, 0xEA56, 0x9DD3, 0xEA59, 0x9DD9, 0xEA58, 0x9DE6, 0xEA5B, 0x9DED, 0xEA5C, 0x9DEF, 0xEA5D, + 0x9DF2, 0x9868, 0x9DF8, 0xEA5A, 0x9DF9, 0x91E9, 0x9DFA, 0x8DEB, 0x9DFD, 0xEA5E, 0x9E19, 0xFC4A, 0x9E1A, 0xEA5F, 0x9E1B, 0xEA60, + 0x9E1E, 0xEA61, 0x9E75, 0xEA62, 0x9E78, 0x8CB2, 0x9E79, 0xEA63, 0x9E7D, 0xEA64, 0x9E7F, 0x8EAD, 0x9E81, 0xEA65, 0x9E88, 0xEA66, + 0x9E8B, 0xEA67, 0x9E8C, 0xEA68, 0x9E91, 0xEA6B, 0x9E92, 0xEA69, 0x9E93, 0x985B, 0x9E95, 0xEA6A, 0x9E97, 0x97ED, 0x9E9D, 0xEA6C, + 0x9E9F, 0x97D9, 0x9EA5, 0xEA6D, 0x9EA6, 0x949E, 0x9EA9, 0xEA6E, 0x9EAA, 0xEA70, 0x9EAD, 0xEA71, 0x9EB8, 0xEA6F, 0x9EB9, 0x8D8D, + 0x9EBA, 0x96CB, 0x9EBB, 0x9683, 0x9EBC, 0x9BF5, 0x9EBE, 0x9F80, 0x9EBF, 0x969B, 0x9EC4, 0x89A9, 0x9ECC, 0xEA73, 0x9ECD, 0x8B6F, + 0x9ECE, 0xEA74, 0x9ECF, 0xEA75, 0x9ED0, 0xEA76, 0x9ED1, 0xFC4B, 0x9ED2, 0x8D95, 0x9ED4, 0xEA77, 0x9ED8, 0xE0D2, 0x9ED9, 0x96D9, + 0x9EDB, 0x91E1, 0x9EDC, 0xEA78, 0x9EDD, 0xEA7A, 0x9EDE, 0xEA79, 0x9EE0, 0xEA7B, 0x9EE5, 0xEA7C, 0x9EE8, 0xEA7D, 0x9EEF, 0xEA7E, + 0x9EF4, 0xEA80, 0x9EF6, 0xEA81, 0x9EF7, 0xEA82, 0x9EF9, 0xEA83, 0x9EFB, 0xEA84, 0x9EFC, 0xEA85, 0x9EFD, 0xEA86, 0x9F07, 0xEA87, + 0x9F08, 0xEA88, 0x9F0E, 0x9343, 0x9F13, 0x8CDB, 0x9F15, 0xEA8A, 0x9F20, 0x916C, 0x9F21, 0xEA8B, 0x9F2C, 0xEA8C, 0x9F3B, 0x9540, + 0x9F3E, 0xEA8D, 0x9F4A, 0xEA8E, 0x9F4B, 0xE256, 0x9F4E, 0xE6D8, 0x9F4F, 0xE8EB, 0x9F52, 0xEA8F, 0x9F54, 0xEA90, 0x9F5F, 0xEA92, + 0x9F60, 0xEA93, 0x9F61, 0xEA94, 0x9F62, 0x97EE, 0x9F63, 0xEA91, 0x9F66, 0xEA95, 0x9F67, 0xEA96, 0x9F6A, 0xEA98, 0x9F6C, 0xEA97, + 0x9F72, 0xEA9A, 0x9F76, 0xEA9B, 0x9F77, 0xEA99, 0x9F8D, 0x97B4, 0x9F95, 0xEA9C, 0x9F9C, 0xEA9D, 0x9F9D, 0xE273, 0x9FA0, 0xEA9E, + 0xF929, 0xFAE0, 0xF9DC, 0xFBE9, 0xFA0E, 0xFA90, 0xFA0F, 0xFA9B, 0xFA10, 0xFA9C, 0xFA11, 0xFAB1, 0xFA12, 0xFAD8, 0xFA13, 0xFAE8, + 0xFA14, 0xFAEA, 0xFA15, 0xFB58, 0xFA16, 0xFB5E, 0xFA17, 0xFB75, 0xFA18, 0xFB7D, 0xFA19, 0xFB7E, 0xFA1A, 0xFB80, 0xFA1B, 0xFB82, + 0xFA1C, 0xFB86, 0xFA1D, 0xFB89, 0xFA1E, 0xFB92, 0xFA1F, 0xFB9D, 0xFA20, 0xFB9F, 0xFA21, 0xFBA0, 0xFA22, 0xFBA9, 0xFA23, 0xFBB1, + 0xFA24, 0xFBB3, 0xFA25, 0xFBB4, 0xFA26, 0xFBB7, 0xFA27, 0xFBD3, 0xFA28, 0xFBDA, 0xFA29, 0xFBEA, 0xFA2A, 0xFBF6, 0xFA2B, 0xFBF7, + 0xFA2C, 0xFBF9, 0xFA2D, 0xFC49, 0xFF01, 0x8149, 0xFF02, 0xFA57, 0xFF03, 0x8194, 0xFF04, 0x8190, 0xFF05, 0x8193, 0xFF06, 0x8195, + 0xFF07, 0xFA56, 0xFF08, 0x8169, 0xFF09, 0x816A, 0xFF0A, 0x8196, 0xFF0B, 0x817B, 0xFF0C, 0x8143, 0xFF0D, 0x817C, 0xFF0E, 0x8144, + 0xFF0F, 0x815E, 0xFF10, 0x824F, 0xFF11, 0x8250, 0xFF12, 0x8251, 0xFF13, 0x8252, 0xFF14, 0x8253, 0xFF15, 0x8254, 0xFF16, 0x8255, + 0xFF17, 0x8256, 0xFF18, 0x8257, 0xFF19, 0x8258, 0xFF1A, 0x8146, 0xFF1B, 0x8147, 0xFF1C, 0x8183, 0xFF1D, 0x8181, 0xFF1E, 0x8184, + 0xFF1F, 0x8148, 0xFF20, 0x8197, 0xFF21, 0x8260, 0xFF22, 0x8261, 0xFF23, 0x8262, 0xFF24, 0x8263, 0xFF25, 0x8264, 0xFF26, 0x8265, + 0xFF27, 0x8266, 0xFF28, 0x8267, 0xFF29, 0x8268, 0xFF2A, 0x8269, 0xFF2B, 0x826A, 0xFF2C, 0x826B, 0xFF2D, 0x826C, 0xFF2E, 0x826D, + 0xFF2F, 0x826E, 0xFF30, 0x826F, 0xFF31, 0x8270, 0xFF32, 0x8271, 0xFF33, 0x8272, 0xFF34, 0x8273, 0xFF35, 0x8274, 0xFF36, 0x8275, + 0xFF37, 0x8276, 0xFF38, 0x8277, 0xFF39, 0x8278, 0xFF3A, 0x8279, 0xFF3B, 0x816D, 0xFF3C, 0x815F, 0xFF3D, 0x816E, 0xFF3E, 0x814F, + 0xFF3F, 0x8151, 0xFF40, 0x814D, 0xFF41, 0x8281, 0xFF42, 0x8282, 0xFF43, 0x8283, 0xFF44, 0x8284, 0xFF45, 0x8285, 0xFF46, 0x8286, + 0xFF47, 0x8287, 0xFF48, 0x8288, 0xFF49, 0x8289, 0xFF4A, 0x828A, 0xFF4B, 0x828B, 0xFF4C, 0x828C, 0xFF4D, 0x828D, 0xFF4E, 0x828E, + 0xFF4F, 0x828F, 0xFF50, 0x8290, 0xFF51, 0x8291, 0xFF52, 0x8292, 0xFF53, 0x8293, 0xFF54, 0x8294, 0xFF55, 0x8295, 0xFF56, 0x8296, + 0xFF57, 0x8297, 0xFF58, 0x8298, 0xFF59, 0x8299, 0xFF5A, 0x829A, 0xFF5B, 0x816F, 0xFF5C, 0x8162, 0xFF5D, 0x8170, 0xFF5E, 0x8160, + 0xFF61, 0x00A1, 0xFF62, 0x00A2, 0xFF63, 0x00A3, 0xFF64, 0x00A4, 0xFF65, 0x00A5, 0xFF66, 0x00A6, 0xFF67, 0x00A7, 0xFF68, 0x00A8, + 0xFF69, 0x00A9, 0xFF6A, 0x00AA, 0xFF6B, 0x00AB, 0xFF6C, 0x00AC, 0xFF6D, 0x00AD, 0xFF6E, 0x00AE, 0xFF6F, 0x00AF, 0xFF70, 0x00B0, + 0xFF71, 0x00B1, 0xFF72, 0x00B2, 0xFF73, 0x00B3, 0xFF74, 0x00B4, 0xFF75, 0x00B5, 0xFF76, 0x00B6, 0xFF77, 0x00B7, 0xFF78, 0x00B8, + 0xFF79, 0x00B9, 0xFF7A, 0x00BA, 0xFF7B, 0x00BB, 0xFF7C, 0x00BC, 0xFF7D, 0x00BD, 0xFF7E, 0x00BE, 0xFF7F, 0x00BF, 0xFF80, 0x00C0, + 0xFF81, 0x00C1, 0xFF82, 0x00C2, 0xFF83, 0x00C3, 0xFF84, 0x00C4, 0xFF85, 0x00C5, 0xFF86, 0x00C6, 0xFF87, 0x00C7, 0xFF88, 0x00C8, + 0xFF89, 0x00C9, 0xFF8A, 0x00CA, 0xFF8B, 0x00CB, 0xFF8C, 0x00CC, 0xFF8D, 0x00CD, 0xFF8E, 0x00CE, 0xFF8F, 0x00CF, 0xFF90, 0x00D0, + 0xFF91, 0x00D1, 0xFF92, 0x00D2, 0xFF93, 0x00D3, 0xFF94, 0x00D4, 0xFF95, 0x00D5, 0xFF96, 0x00D6, 0xFF97, 0x00D7, 0xFF98, 0x00D8, + 0xFF99, 0x00D9, 0xFF9A, 0x00DA, 0xFF9B, 0x00DB, 0xFF9C, 0x00DC, 0xFF9D, 0x00DD, 0xFF9E, 0x00DE, 0xFF9F, 0x00DF, 0xFFE0, 0x8191, + 0xFFE1, 0x8192, 0xFFE2, 0x81CA, 0xFFE3, 0x8150, 0xFFE4, 0xFA55, 0xFFE5, 0x818F, 0, 0 +}; + +static const WCHAR oem2uni932[] = { /* Shift_JIS --> Unicode pairs */ + 0x00A1, 0xFF61, 0x00A2, 0xFF62, 0x00A3, 0xFF63, 0x00A4, 0xFF64, 0x00A5, 0xFF65, 0x00A6, 0xFF66, 0x00A7, 0xFF67, 0x00A8, 0xFF68, + 0x00A9, 0xFF69, 0x00AA, 0xFF6A, 0x00AB, 0xFF6B, 0x00AC, 0xFF6C, 0x00AD, 0xFF6D, 0x00AE, 0xFF6E, 0x00AF, 0xFF6F, 0x00B0, 0xFF70, + 0x00B1, 0xFF71, 0x00B2, 0xFF72, 0x00B3, 0xFF73, 0x00B4, 0xFF74, 0x00B5, 0xFF75, 0x00B6, 0xFF76, 0x00B7, 0xFF77, 0x00B8, 0xFF78, + 0x00B9, 0xFF79, 0x00BA, 0xFF7A, 0x00BB, 0xFF7B, 0x00BC, 0xFF7C, 0x00BD, 0xFF7D, 0x00BE, 0xFF7E, 0x00BF, 0xFF7F, 0x00C0, 0xFF80, + 0x00C1, 0xFF81, 0x00C2, 0xFF82, 0x00C3, 0xFF83, 0x00C4, 0xFF84, 0x00C5, 0xFF85, 0x00C6, 0xFF86, 0x00C7, 0xFF87, 0x00C8, 0xFF88, + 0x00C9, 0xFF89, 0x00CA, 0xFF8A, 0x00CB, 0xFF8B, 0x00CC, 0xFF8C, 0x00CD, 0xFF8D, 0x00CE, 0xFF8E, 0x00CF, 0xFF8F, 0x00D0, 0xFF90, + 0x00D1, 0xFF91, 0x00D2, 0xFF92, 0x00D3, 0xFF93, 0x00D4, 0xFF94, 0x00D5, 0xFF95, 0x00D6, 0xFF96, 0x00D7, 0xFF97, 0x00D8, 0xFF98, + 0x00D9, 0xFF99, 0x00DA, 0xFF9A, 0x00DB, 0xFF9B, 0x00DC, 0xFF9C, 0x00DD, 0xFF9D, 0x00DE, 0xFF9E, 0x00DF, 0xFF9F, 0x8140, 0x3000, + 0x8141, 0x3001, 0x8142, 0x3002, 0x8143, 0xFF0C, 0x8144, 0xFF0E, 0x8145, 0x30FB, 0x8146, 0xFF1A, 0x8147, 0xFF1B, 0x8148, 0xFF1F, + 0x8149, 0xFF01, 0x814A, 0x309B, 0x814B, 0x309C, 0x814C, 0x00B4, 0x814D, 0xFF40, 0x814E, 0x00A8, 0x814F, 0xFF3E, 0x8150, 0xFFE3, + 0x8151, 0xFF3F, 0x8152, 0x30FD, 0x8153, 0x30FE, 0x8154, 0x309D, 0x8155, 0x309E, 0x8156, 0x3003, 0x8157, 0x4EDD, 0x8158, 0x3005, + 0x8159, 0x3006, 0x815A, 0x3007, 0x815B, 0x30FC, 0x815C, 0x2015, 0x815D, 0x2010, 0x815E, 0xFF0F, 0x815F, 0xFF3C, 0x8160, 0xFF5E, + 0x8161, 0x2225, 0x8162, 0xFF5C, 0x8163, 0x2026, 0x8164, 0x2025, 0x8165, 0x2018, 0x8166, 0x2019, 0x8167, 0x201C, 0x8168, 0x201D, + 0x8169, 0xFF08, 0x816A, 0xFF09, 0x816B, 0x3014, 0x816C, 0x3015, 0x816D, 0xFF3B, 0x816E, 0xFF3D, 0x816F, 0xFF5B, 0x8170, 0xFF5D, + 0x8171, 0x3008, 0x8172, 0x3009, 0x8173, 0x300A, 0x8174, 0x300B, 0x8175, 0x300C, 0x8176, 0x300D, 0x8177, 0x300E, 0x8178, 0x300F, + 0x8179, 0x3010, 0x817A, 0x3011, 0x817B, 0xFF0B, 0x817C, 0xFF0D, 0x817D, 0x00B1, 0x817E, 0x00D7, 0x8180, 0x00F7, 0x8181, 0xFF1D, + 0x8182, 0x2260, 0x8183, 0xFF1C, 0x8184, 0xFF1E, 0x8185, 0x2266, 0x8186, 0x2267, 0x8187, 0x221E, 0x8188, 0x2234, 0x8189, 0x2642, + 0x818A, 0x2640, 0x818B, 0x00B0, 0x818C, 0x2032, 0x818D, 0x2033, 0x818E, 0x2103, 0x818F, 0xFFE5, 0x8190, 0xFF04, 0x8191, 0xFFE0, + 0x8192, 0xFFE1, 0x8193, 0xFF05, 0x8194, 0xFF03, 0x8195, 0xFF06, 0x8196, 0xFF0A, 0x8197, 0xFF20, 0x8198, 0x00A7, 0x8199, 0x2606, + 0x819A, 0x2605, 0x819B, 0x25CB, 0x819C, 0x25CF, 0x819D, 0x25CE, 0x819E, 0x25C7, 0x819F, 0x25C6, 0x81A0, 0x25A1, 0x81A1, 0x25A0, + 0x81A2, 0x25B3, 0x81A3, 0x25B2, 0x81A4, 0x25BD, 0x81A5, 0x25BC, 0x81A6, 0x203B, 0x81A7, 0x3012, 0x81A8, 0x2192, 0x81A9, 0x2190, + 0x81AA, 0x2191, 0x81AB, 0x2193, 0x81AC, 0x3013, 0x81B8, 0x2208, 0x81B9, 0x220B, 0x81BA, 0x2286, 0x81BB, 0x2287, 0x81BC, 0x2282, + 0x81BD, 0x2283, 0x81BE, 0x222A, 0x81BF, 0x2229, 0x81C8, 0x2227, 0x81C9, 0x2228, 0x81CA, 0xFFE2, 0x81CB, 0x21D2, 0x81CC, 0x21D4, + 0x81CD, 0x2200, 0x81CE, 0x2203, 0x81DA, 0x2220, 0x81DB, 0x22A5, 0x81DC, 0x2312, 0x81DD, 0x2202, 0x81DE, 0x2207, 0x81DF, 0x2261, + 0x81E0, 0x2252, 0x81E1, 0x226A, 0x81E2, 0x226B, 0x81E3, 0x221A, 0x81E4, 0x223D, 0x81E5, 0x221D, 0x81E6, 0x2235, 0x81E7, 0x222B, + 0x81E8, 0x222C, 0x81F0, 0x212B, 0x81F1, 0x2030, 0x81F2, 0x266F, 0x81F3, 0x266D, 0x81F4, 0x266A, 0x81F5, 0x2020, 0x81F6, 0x2021, + 0x81F7, 0x00B6, 0x81FC, 0x25EF, 0x824F, 0xFF10, 0x8250, 0xFF11, 0x8251, 0xFF12, 0x8252, 0xFF13, 0x8253, 0xFF14, 0x8254, 0xFF15, + 0x8255, 0xFF16, 0x8256, 0xFF17, 0x8257, 0xFF18, 0x8258, 0xFF19, 0x8260, 0xFF21, 0x8261, 0xFF22, 0x8262, 0xFF23, 0x8263, 0xFF24, + 0x8264, 0xFF25, 0x8265, 0xFF26, 0x8266, 0xFF27, 0x8267, 0xFF28, 0x8268, 0xFF29, 0x8269, 0xFF2A, 0x826A, 0xFF2B, 0x826B, 0xFF2C, + 0x826C, 0xFF2D, 0x826D, 0xFF2E, 0x826E, 0xFF2F, 0x826F, 0xFF30, 0x8270, 0xFF31, 0x8271, 0xFF32, 0x8272, 0xFF33, 0x8273, 0xFF34, + 0x8274, 0xFF35, 0x8275, 0xFF36, 0x8276, 0xFF37, 0x8277, 0xFF38, 0x8278, 0xFF39, 0x8279, 0xFF3A, 0x8281, 0xFF41, 0x8282, 0xFF42, + 0x8283, 0xFF43, 0x8284, 0xFF44, 0x8285, 0xFF45, 0x8286, 0xFF46, 0x8287, 0xFF47, 0x8288, 0xFF48, 0x8289, 0xFF49, 0x828A, 0xFF4A, + 0x828B, 0xFF4B, 0x828C, 0xFF4C, 0x828D, 0xFF4D, 0x828E, 0xFF4E, 0x828F, 0xFF4F, 0x8290, 0xFF50, 0x8291, 0xFF51, 0x8292, 0xFF52, + 0x8293, 0xFF53, 0x8294, 0xFF54, 0x8295, 0xFF55, 0x8296, 0xFF56, 0x8297, 0xFF57, 0x8298, 0xFF58, 0x8299, 0xFF59, 0x829A, 0xFF5A, + 0x829F, 0x3041, 0x82A0, 0x3042, 0x82A1, 0x3043, 0x82A2, 0x3044, 0x82A3, 0x3045, 0x82A4, 0x3046, 0x82A5, 0x3047, 0x82A6, 0x3048, + 0x82A7, 0x3049, 0x82A8, 0x304A, 0x82A9, 0x304B, 0x82AA, 0x304C, 0x82AB, 0x304D, 0x82AC, 0x304E, 0x82AD, 0x304F, 0x82AE, 0x3050, + 0x82AF, 0x3051, 0x82B0, 0x3052, 0x82B1, 0x3053, 0x82B2, 0x3054, 0x82B3, 0x3055, 0x82B4, 0x3056, 0x82B5, 0x3057, 0x82B6, 0x3058, + 0x82B7, 0x3059, 0x82B8, 0x305A, 0x82B9, 0x305B, 0x82BA, 0x305C, 0x82BB, 0x305D, 0x82BC, 0x305E, 0x82BD, 0x305F, 0x82BE, 0x3060, + 0x82BF, 0x3061, 0x82C0, 0x3062, 0x82C1, 0x3063, 0x82C2, 0x3064, 0x82C3, 0x3065, 0x82C4, 0x3066, 0x82C5, 0x3067, 0x82C6, 0x3068, + 0x82C7, 0x3069, 0x82C8, 0x306A, 0x82C9, 0x306B, 0x82CA, 0x306C, 0x82CB, 0x306D, 0x82CC, 0x306E, 0x82CD, 0x306F, 0x82CE, 0x3070, + 0x82CF, 0x3071, 0x82D0, 0x3072, 0x82D1, 0x3073, 0x82D2, 0x3074, 0x82D3, 0x3075, 0x82D4, 0x3076, 0x82D5, 0x3077, 0x82D6, 0x3078, + 0x82D7, 0x3079, 0x82D8, 0x307A, 0x82D9, 0x307B, 0x82DA, 0x307C, 0x82DB, 0x307D, 0x82DC, 0x307E, 0x82DD, 0x307F, 0x82DE, 0x3080, + 0x82DF, 0x3081, 0x82E0, 0x3082, 0x82E1, 0x3083, 0x82E2, 0x3084, 0x82E3, 0x3085, 0x82E4, 0x3086, 0x82E5, 0x3087, 0x82E6, 0x3088, + 0x82E7, 0x3089, 0x82E8, 0x308A, 0x82E9, 0x308B, 0x82EA, 0x308C, 0x82EB, 0x308D, 0x82EC, 0x308E, 0x82ED, 0x308F, 0x82EE, 0x3090, + 0x82EF, 0x3091, 0x82F0, 0x3092, 0x82F1, 0x3093, 0x8340, 0x30A1, 0x8341, 0x30A2, 0x8342, 0x30A3, 0x8343, 0x30A4, 0x8344, 0x30A5, + 0x8345, 0x30A6, 0x8346, 0x30A7, 0x8347, 0x30A8, 0x8348, 0x30A9, 0x8349, 0x30AA, 0x834A, 0x30AB, 0x834B, 0x30AC, 0x834C, 0x30AD, + 0x834D, 0x30AE, 0x834E, 0x30AF, 0x834F, 0x30B0, 0x8350, 0x30B1, 0x8351, 0x30B2, 0x8352, 0x30B3, 0x8353, 0x30B4, 0x8354, 0x30B5, + 0x8355, 0x30B6, 0x8356, 0x30B7, 0x8357, 0x30B8, 0x8358, 0x30B9, 0x8359, 0x30BA, 0x835A, 0x30BB, 0x835B, 0x30BC, 0x835C, 0x30BD, + 0x835D, 0x30BE, 0x835E, 0x30BF, 0x835F, 0x30C0, 0x8360, 0x30C1, 0x8361, 0x30C2, 0x8362, 0x30C3, 0x8363, 0x30C4, 0x8364, 0x30C5, + 0x8365, 0x30C6, 0x8366, 0x30C7, 0x8367, 0x30C8, 0x8368, 0x30C9, 0x8369, 0x30CA, 0x836A, 0x30CB, 0x836B, 0x30CC, 0x836C, 0x30CD, + 0x836D, 0x30CE, 0x836E, 0x30CF, 0x836F, 0x30D0, 0x8370, 0x30D1, 0x8371, 0x30D2, 0x8372, 0x30D3, 0x8373, 0x30D4, 0x8374, 0x30D5, + 0x8375, 0x30D6, 0x8376, 0x30D7, 0x8377, 0x30D8, 0x8378, 0x30D9, 0x8379, 0x30DA, 0x837A, 0x30DB, 0x837B, 0x30DC, 0x837C, 0x30DD, + 0x837D, 0x30DE, 0x837E, 0x30DF, 0x8380, 0x30E0, 0x8381, 0x30E1, 0x8382, 0x30E2, 0x8383, 0x30E3, 0x8384, 0x30E4, 0x8385, 0x30E5, + 0x8386, 0x30E6, 0x8387, 0x30E7, 0x8388, 0x30E8, 0x8389, 0x30E9, 0x838A, 0x30EA, 0x838B, 0x30EB, 0x838C, 0x30EC, 0x838D, 0x30ED, + 0x838E, 0x30EE, 0x838F, 0x30EF, 0x8390, 0x30F0, 0x8391, 0x30F1, 0x8392, 0x30F2, 0x8393, 0x30F3, 0x8394, 0x30F4, 0x8395, 0x30F5, + 0x8396, 0x30F6, 0x839F, 0x0391, 0x83A0, 0x0392, 0x83A1, 0x0393, 0x83A2, 0x0394, 0x83A3, 0x0395, 0x83A4, 0x0396, 0x83A5, 0x0397, + 0x83A6, 0x0398, 0x83A7, 0x0399, 0x83A8, 0x039A, 0x83A9, 0x039B, 0x83AA, 0x039C, 0x83AB, 0x039D, 0x83AC, 0x039E, 0x83AD, 0x039F, + 0x83AE, 0x03A0, 0x83AF, 0x03A1, 0x83B0, 0x03A3, 0x83B1, 0x03A4, 0x83B2, 0x03A5, 0x83B3, 0x03A6, 0x83B4, 0x03A7, 0x83B5, 0x03A8, + 0x83B6, 0x03A9, 0x83BF, 0x03B1, 0x83C0, 0x03B2, 0x83C1, 0x03B3, 0x83C2, 0x03B4, 0x83C3, 0x03B5, 0x83C4, 0x03B6, 0x83C5, 0x03B7, + 0x83C6, 0x03B8, 0x83C7, 0x03B9, 0x83C8, 0x03BA, 0x83C9, 0x03BB, 0x83CA, 0x03BC, 0x83CB, 0x03BD, 0x83CC, 0x03BE, 0x83CD, 0x03BF, + 0x83CE, 0x03C0, 0x83CF, 0x03C1, 0x83D0, 0x03C3, 0x83D1, 0x03C4, 0x83D2, 0x03C5, 0x83D3, 0x03C6, 0x83D4, 0x03C7, 0x83D5, 0x03C8, + 0x83D6, 0x03C9, 0x8440, 0x0410, 0x8441, 0x0411, 0x8442, 0x0412, 0x8443, 0x0413, 0x8444, 0x0414, 0x8445, 0x0415, 0x8446, 0x0401, + 0x8447, 0x0416, 0x8448, 0x0417, 0x8449, 0x0418, 0x844A, 0x0419, 0x844B, 0x041A, 0x844C, 0x041B, 0x844D, 0x041C, 0x844E, 0x041D, + 0x844F, 0x041E, 0x8450, 0x041F, 0x8451, 0x0420, 0x8452, 0x0421, 0x8453, 0x0422, 0x8454, 0x0423, 0x8455, 0x0424, 0x8456, 0x0425, + 0x8457, 0x0426, 0x8458, 0x0427, 0x8459, 0x0428, 0x845A, 0x0429, 0x845B, 0x042A, 0x845C, 0x042B, 0x845D, 0x042C, 0x845E, 0x042D, + 0x845F, 0x042E, 0x8460, 0x042F, 0x8470, 0x0430, 0x8471, 0x0431, 0x8472, 0x0432, 0x8473, 0x0433, 0x8474, 0x0434, 0x8475, 0x0435, + 0x8476, 0x0451, 0x8477, 0x0436, 0x8478, 0x0437, 0x8479, 0x0438, 0x847A, 0x0439, 0x847B, 0x043A, 0x847C, 0x043B, 0x847D, 0x043C, + 0x847E, 0x043D, 0x8480, 0x043E, 0x8481, 0x043F, 0x8482, 0x0440, 0x8483, 0x0441, 0x8484, 0x0442, 0x8485, 0x0443, 0x8486, 0x0444, + 0x8487, 0x0445, 0x8488, 0x0446, 0x8489, 0x0447, 0x848A, 0x0448, 0x848B, 0x0449, 0x848C, 0x044A, 0x848D, 0x044B, 0x848E, 0x044C, + 0x848F, 0x044D, 0x8490, 0x044E, 0x8491, 0x044F, 0x849F, 0x2500, 0x84A0, 0x2502, 0x84A1, 0x250C, 0x84A2, 0x2510, 0x84A3, 0x2518, + 0x84A4, 0x2514, 0x84A5, 0x251C, 0x84A6, 0x252C, 0x84A7, 0x2524, 0x84A8, 0x2534, 0x84A9, 0x253C, 0x84AA, 0x2501, 0x84AB, 0x2503, + 0x84AC, 0x250F, 0x84AD, 0x2513, 0x84AE, 0x251B, 0x84AF, 0x2517, 0x84B0, 0x2523, 0x84B1, 0x2533, 0x84B2, 0x252B, 0x84B3, 0x253B, + 0x84B4, 0x254B, 0x84B5, 0x2520, 0x84B6, 0x252F, 0x84B7, 0x2528, 0x84B8, 0x2537, 0x84B9, 0x253F, 0x84BA, 0x251D, 0x84BB, 0x2530, + 0x84BC, 0x2525, 0x84BD, 0x2538, 0x84BE, 0x2542, 0x8740, 0x2460, 0x8741, 0x2461, 0x8742, 0x2462, 0x8743, 0x2463, 0x8744, 0x2464, + 0x8745, 0x2465, 0x8746, 0x2466, 0x8747, 0x2467, 0x8748, 0x2468, 0x8749, 0x2469, 0x874A, 0x246A, 0x874B, 0x246B, 0x874C, 0x246C, + 0x874D, 0x246D, 0x874E, 0x246E, 0x874F, 0x246F, 0x8750, 0x2470, 0x8751, 0x2471, 0x8752, 0x2472, 0x8753, 0x2473, 0x8754, 0x2160, + 0x8755, 0x2161, 0x8756, 0x2162, 0x8757, 0x2163, 0x8758, 0x2164, 0x8759, 0x2165, 0x875A, 0x2166, 0x875B, 0x2167, 0x875C, 0x2168, + 0x875D, 0x2169, 0x875F, 0x3349, 0x8760, 0x3314, 0x8761, 0x3322, 0x8762, 0x334D, 0x8763, 0x3318, 0x8764, 0x3327, 0x8765, 0x3303, + 0x8766, 0x3336, 0x8767, 0x3351, 0x8768, 0x3357, 0x8769, 0x330D, 0x876A, 0x3326, 0x876B, 0x3323, 0x876C, 0x332B, 0x876D, 0x334A, + 0x876E, 0x333B, 0x876F, 0x339C, 0x8770, 0x339D, 0x8771, 0x339E, 0x8772, 0x338E, 0x8773, 0x338F, 0x8774, 0x33C4, 0x8775, 0x33A1, + 0x877E, 0x337B, 0x8780, 0x301D, 0x8781, 0x301F, 0x8782, 0x2116, 0x8783, 0x33CD, 0x8784, 0x2121, 0x8785, 0x32A4, 0x8786, 0x32A5, + 0x8787, 0x32A6, 0x8788, 0x32A7, 0x8789, 0x32A8, 0x878A, 0x3231, 0x878B, 0x3232, 0x878C, 0x3239, 0x878D, 0x337E, 0x878E, 0x337D, + 0x878F, 0x337C, 0x8793, 0x222E, 0x8794, 0x2211, 0x8798, 0x221F, 0x8799, 0x22BF, 0x889F, 0x4E9C, 0x88A0, 0x5516, 0x88A1, 0x5A03, + 0x88A2, 0x963F, 0x88A3, 0x54C0, 0x88A4, 0x611B, 0x88A5, 0x6328, 0x88A6, 0x59F6, 0x88A7, 0x9022, 0x88A8, 0x8475, 0x88A9, 0x831C, + 0x88AA, 0x7A50, 0x88AB, 0x60AA, 0x88AC, 0x63E1, 0x88AD, 0x6E25, 0x88AE, 0x65ED, 0x88AF, 0x8466, 0x88B0, 0x82A6, 0x88B1, 0x9BF5, + 0x88B2, 0x6893, 0x88B3, 0x5727, 0x88B4, 0x65A1, 0x88B5, 0x6271, 0x88B6, 0x5B9B, 0x88B7, 0x59D0, 0x88B8, 0x867B, 0x88B9, 0x98F4, + 0x88BA, 0x7D62, 0x88BB, 0x7DBE, 0x88BC, 0x9B8E, 0x88BD, 0x6216, 0x88BE, 0x7C9F, 0x88BF, 0x88B7, 0x88C0, 0x5B89, 0x88C1, 0x5EB5, + 0x88C2, 0x6309, 0x88C3, 0x6697, 0x88C4, 0x6848, 0x88C5, 0x95C7, 0x88C6, 0x978D, 0x88C7, 0x674F, 0x88C8, 0x4EE5, 0x88C9, 0x4F0A, + 0x88CA, 0x4F4D, 0x88CB, 0x4F9D, 0x88CC, 0x5049, 0x88CD, 0x56F2, 0x88CE, 0x5937, 0x88CF, 0x59D4, 0x88D0, 0x5A01, 0x88D1, 0x5C09, + 0x88D2, 0x60DF, 0x88D3, 0x610F, 0x88D4, 0x6170, 0x88D5, 0x6613, 0x88D6, 0x6905, 0x88D7, 0x70BA, 0x88D8, 0x754F, 0x88D9, 0x7570, + 0x88DA, 0x79FB, 0x88DB, 0x7DAD, 0x88DC, 0x7DEF, 0x88DD, 0x80C3, 0x88DE, 0x840E, 0x88DF, 0x8863, 0x88E0, 0x8B02, 0x88E1, 0x9055, + 0x88E2, 0x907A, 0x88E3, 0x533B, 0x88E4, 0x4E95, 0x88E5, 0x4EA5, 0x88E6, 0x57DF, 0x88E7, 0x80B2, 0x88E8, 0x90C1, 0x88E9, 0x78EF, + 0x88EA, 0x4E00, 0x88EB, 0x58F1, 0x88EC, 0x6EA2, 0x88ED, 0x9038, 0x88EE, 0x7A32, 0x88EF, 0x8328, 0x88F0, 0x828B, 0x88F1, 0x9C2F, + 0x88F2, 0x5141, 0x88F3, 0x5370, 0x88F4, 0x54BD, 0x88F5, 0x54E1, 0x88F6, 0x56E0, 0x88F7, 0x59FB, 0x88F8, 0x5F15, 0x88F9, 0x98F2, + 0x88FA, 0x6DEB, 0x88FB, 0x80E4, 0x88FC, 0x852D, 0x8940, 0x9662, 0x8941, 0x9670, 0x8942, 0x96A0, 0x8943, 0x97FB, 0x8944, 0x540B, + 0x8945, 0x53F3, 0x8946, 0x5B87, 0x8947, 0x70CF, 0x8948, 0x7FBD, 0x8949, 0x8FC2, 0x894A, 0x96E8, 0x894B, 0x536F, 0x894C, 0x9D5C, + 0x894D, 0x7ABA, 0x894E, 0x4E11, 0x894F, 0x7893, 0x8950, 0x81FC, 0x8951, 0x6E26, 0x8952, 0x5618, 0x8953, 0x5504, 0x8954, 0x6B1D, + 0x8955, 0x851A, 0x8956, 0x9C3B, 0x8957, 0x59E5, 0x8958, 0x53A9, 0x8959, 0x6D66, 0x895A, 0x74DC, 0x895B, 0x958F, 0x895C, 0x5642, + 0x895D, 0x4E91, 0x895E, 0x904B, 0x895F, 0x96F2, 0x8960, 0x834F, 0x8961, 0x990C, 0x8962, 0x53E1, 0x8963, 0x55B6, 0x8964, 0x5B30, + 0x8965, 0x5F71, 0x8966, 0x6620, 0x8967, 0x66F3, 0x8968, 0x6804, 0x8969, 0x6C38, 0x896A, 0x6CF3, 0x896B, 0x6D29, 0x896C, 0x745B, + 0x896D, 0x76C8, 0x896E, 0x7A4E, 0x896F, 0x9834, 0x8970, 0x82F1, 0x8971, 0x885B, 0x8972, 0x8A60, 0x8973, 0x92ED, 0x8974, 0x6DB2, + 0x8975, 0x75AB, 0x8976, 0x76CA, 0x8977, 0x99C5, 0x8978, 0x60A6, 0x8979, 0x8B01, 0x897A, 0x8D8A, 0x897B, 0x95B2, 0x897C, 0x698E, + 0x897D, 0x53AD, 0x897E, 0x5186, 0x8980, 0x5712, 0x8981, 0x5830, 0x8982, 0x5944, 0x8983, 0x5BB4, 0x8984, 0x5EF6, 0x8985, 0x6028, + 0x8986, 0x63A9, 0x8987, 0x63F4, 0x8988, 0x6CBF, 0x8989, 0x6F14, 0x898A, 0x708E, 0x898B, 0x7114, 0x898C, 0x7159, 0x898D, 0x71D5, + 0x898E, 0x733F, 0x898F, 0x7E01, 0x8990, 0x8276, 0x8991, 0x82D1, 0x8992, 0x8597, 0x8993, 0x9060, 0x8994, 0x925B, 0x8995, 0x9D1B, + 0x8996, 0x5869, 0x8997, 0x65BC, 0x8998, 0x6C5A, 0x8999, 0x7525, 0x899A, 0x51F9, 0x899B, 0x592E, 0x899C, 0x5965, 0x899D, 0x5F80, + 0x899E, 0x5FDC, 0x899F, 0x62BC, 0x89A0, 0x65FA, 0x89A1, 0x6A2A, 0x89A2, 0x6B27, 0x89A3, 0x6BB4, 0x89A4, 0x738B, 0x89A5, 0x7FC1, + 0x89A6, 0x8956, 0x89A7, 0x9D2C, 0x89A8, 0x9D0E, 0x89A9, 0x9EC4, 0x89AA, 0x5CA1, 0x89AB, 0x6C96, 0x89AC, 0x837B, 0x89AD, 0x5104, + 0x89AE, 0x5C4B, 0x89AF, 0x61B6, 0x89B0, 0x81C6, 0x89B1, 0x6876, 0x89B2, 0x7261, 0x89B3, 0x4E59, 0x89B4, 0x4FFA, 0x89B5, 0x5378, + 0x89B6, 0x6069, 0x89B7, 0x6E29, 0x89B8, 0x7A4F, 0x89B9, 0x97F3, 0x89BA, 0x4E0B, 0x89BB, 0x5316, 0x89BC, 0x4EEE, 0x89BD, 0x4F55, + 0x89BE, 0x4F3D, 0x89BF, 0x4FA1, 0x89C0, 0x4F73, 0x89C1, 0x52A0, 0x89C2, 0x53EF, 0x89C3, 0x5609, 0x89C4, 0x590F, 0x89C5, 0x5AC1, + 0x89C6, 0x5BB6, 0x89C7, 0x5BE1, 0x89C8, 0x79D1, 0x89C9, 0x6687, 0x89CA, 0x679C, 0x89CB, 0x67B6, 0x89CC, 0x6B4C, 0x89CD, 0x6CB3, + 0x89CE, 0x706B, 0x89CF, 0x73C2, 0x89D0, 0x798D, 0x89D1, 0x79BE, 0x89D2, 0x7A3C, 0x89D3, 0x7B87, 0x89D4, 0x82B1, 0x89D5, 0x82DB, + 0x89D6, 0x8304, 0x89D7, 0x8377, 0x89D8, 0x83EF, 0x89D9, 0x83D3, 0x89DA, 0x8766, 0x89DB, 0x8AB2, 0x89DC, 0x5629, 0x89DD, 0x8CA8, + 0x89DE, 0x8FE6, 0x89DF, 0x904E, 0x89E0, 0x971E, 0x89E1, 0x868A, 0x89E2, 0x4FC4, 0x89E3, 0x5CE8, 0x89E4, 0x6211, 0x89E5, 0x7259, + 0x89E6, 0x753B, 0x89E7, 0x81E5, 0x89E8, 0x82BD, 0x89E9, 0x86FE, 0x89EA, 0x8CC0, 0x89EB, 0x96C5, 0x89EC, 0x9913, 0x89ED, 0x99D5, + 0x89EE, 0x4ECB, 0x89EF, 0x4F1A, 0x89F0, 0x89E3, 0x89F1, 0x56DE, 0x89F2, 0x584A, 0x89F3, 0x58CA, 0x89F4, 0x5EFB, 0x89F5, 0x5FEB, + 0x89F6, 0x602A, 0x89F7, 0x6094, 0x89F8, 0x6062, 0x89F9, 0x61D0, 0x89FA, 0x6212, 0x89FB, 0x62D0, 0x89FC, 0x6539, 0x8A40, 0x9B41, + 0x8A41, 0x6666, 0x8A42, 0x68B0, 0x8A43, 0x6D77, 0x8A44, 0x7070, 0x8A45, 0x754C, 0x8A46, 0x7686, 0x8A47, 0x7D75, 0x8A48, 0x82A5, + 0x8A49, 0x87F9, 0x8A4A, 0x958B, 0x8A4B, 0x968E, 0x8A4C, 0x8C9D, 0x8A4D, 0x51F1, 0x8A4E, 0x52BE, 0x8A4F, 0x5916, 0x8A50, 0x54B3, + 0x8A51, 0x5BB3, 0x8A52, 0x5D16, 0x8A53, 0x6168, 0x8A54, 0x6982, 0x8A55, 0x6DAF, 0x8A56, 0x788D, 0x8A57, 0x84CB, 0x8A58, 0x8857, + 0x8A59, 0x8A72, 0x8A5A, 0x93A7, 0x8A5B, 0x9AB8, 0x8A5C, 0x6D6C, 0x8A5D, 0x99A8, 0x8A5E, 0x86D9, 0x8A5F, 0x57A3, 0x8A60, 0x67FF, + 0x8A61, 0x86CE, 0x8A62, 0x920E, 0x8A63, 0x5283, 0x8A64, 0x5687, 0x8A65, 0x5404, 0x8A66, 0x5ED3, 0x8A67, 0x62E1, 0x8A68, 0x64B9, + 0x8A69, 0x683C, 0x8A6A, 0x6838, 0x8A6B, 0x6BBB, 0x8A6C, 0x7372, 0x8A6D, 0x78BA, 0x8A6E, 0x7A6B, 0x8A6F, 0x899A, 0x8A70, 0x89D2, + 0x8A71, 0x8D6B, 0x8A72, 0x8F03, 0x8A73, 0x90ED, 0x8A74, 0x95A3, 0x8A75, 0x9694, 0x8A76, 0x9769, 0x8A77, 0x5B66, 0x8A78, 0x5CB3, + 0x8A79, 0x697D, 0x8A7A, 0x984D, 0x8A7B, 0x984E, 0x8A7C, 0x639B, 0x8A7D, 0x7B20, 0x8A7E, 0x6A2B, 0x8A80, 0x6A7F, 0x8A81, 0x68B6, + 0x8A82, 0x9C0D, 0x8A83, 0x6F5F, 0x8A84, 0x5272, 0x8A85, 0x559D, 0x8A86, 0x6070, 0x8A87, 0x62EC, 0x8A88, 0x6D3B, 0x8A89, 0x6E07, + 0x8A8A, 0x6ED1, 0x8A8B, 0x845B, 0x8A8C, 0x8910, 0x8A8D, 0x8F44, 0x8A8E, 0x4E14, 0x8A8F, 0x9C39, 0x8A90, 0x53F6, 0x8A91, 0x691B, + 0x8A92, 0x6A3A, 0x8A93, 0x9784, 0x8A94, 0x682A, 0x8A95, 0x515C, 0x8A96, 0x7AC3, 0x8A97, 0x84B2, 0x8A98, 0x91DC, 0x8A99, 0x938C, + 0x8A9A, 0x565B, 0x8A9B, 0x9D28, 0x8A9C, 0x6822, 0x8A9D, 0x8305, 0x8A9E, 0x8431, 0x8A9F, 0x7CA5, 0x8AA0, 0x5208, 0x8AA1, 0x82C5, + 0x8AA2, 0x74E6, 0x8AA3, 0x4E7E, 0x8AA4, 0x4F83, 0x8AA5, 0x51A0, 0x8AA6, 0x5BD2, 0x8AA7, 0x520A, 0x8AA8, 0x52D8, 0x8AA9, 0x52E7, + 0x8AAA, 0x5DFB, 0x8AAB, 0x559A, 0x8AAC, 0x582A, 0x8AAD, 0x59E6, 0x8AAE, 0x5B8C, 0x8AAF, 0x5B98, 0x8AB0, 0x5BDB, 0x8AB1, 0x5E72, + 0x8AB2, 0x5E79, 0x8AB3, 0x60A3, 0x8AB4, 0x611F, 0x8AB5, 0x6163, 0x8AB6, 0x61BE, 0x8AB7, 0x63DB, 0x8AB8, 0x6562, 0x8AB9, 0x67D1, + 0x8ABA, 0x6853, 0x8ABB, 0x68FA, 0x8ABC, 0x6B3E, 0x8ABD, 0x6B53, 0x8ABE, 0x6C57, 0x8ABF, 0x6F22, 0x8AC0, 0x6F97, 0x8AC1, 0x6F45, + 0x8AC2, 0x74B0, 0x8AC3, 0x7518, 0x8AC4, 0x76E3, 0x8AC5, 0x770B, 0x8AC6, 0x7AFF, 0x8AC7, 0x7BA1, 0x8AC8, 0x7C21, 0x8AC9, 0x7DE9, + 0x8ACA, 0x7F36, 0x8ACB, 0x7FF0, 0x8ACC, 0x809D, 0x8ACD, 0x8266, 0x8ACE, 0x839E, 0x8ACF, 0x89B3, 0x8AD0, 0x8ACC, 0x8AD1, 0x8CAB, + 0x8AD2, 0x9084, 0x8AD3, 0x9451, 0x8AD4, 0x9593, 0x8AD5, 0x9591, 0x8AD6, 0x95A2, 0x8AD7, 0x9665, 0x8AD8, 0x97D3, 0x8AD9, 0x9928, + 0x8ADA, 0x8218, 0x8ADB, 0x4E38, 0x8ADC, 0x542B, 0x8ADD, 0x5CB8, 0x8ADE, 0x5DCC, 0x8ADF, 0x73A9, 0x8AE0, 0x764C, 0x8AE1, 0x773C, + 0x8AE2, 0x5CA9, 0x8AE3, 0x7FEB, 0x8AE4, 0x8D0B, 0x8AE5, 0x96C1, 0x8AE6, 0x9811, 0x8AE7, 0x9854, 0x8AE8, 0x9858, 0x8AE9, 0x4F01, + 0x8AEA, 0x4F0E, 0x8AEB, 0x5371, 0x8AEC, 0x559C, 0x8AED, 0x5668, 0x8AEE, 0x57FA, 0x8AEF, 0x5947, 0x8AF0, 0x5B09, 0x8AF1, 0x5BC4, + 0x8AF2, 0x5C90, 0x8AF3, 0x5E0C, 0x8AF4, 0x5E7E, 0x8AF5, 0x5FCC, 0x8AF6, 0x63EE, 0x8AF7, 0x673A, 0x8AF8, 0x65D7, 0x8AF9, 0x65E2, + 0x8AFA, 0x671F, 0x8AFB, 0x68CB, 0x8AFC, 0x68C4, 0x8B40, 0x6A5F, 0x8B41, 0x5E30, 0x8B42, 0x6BC5, 0x8B43, 0x6C17, 0x8B44, 0x6C7D, + 0x8B45, 0x757F, 0x8B46, 0x7948, 0x8B47, 0x5B63, 0x8B48, 0x7A00, 0x8B49, 0x7D00, 0x8B4A, 0x5FBD, 0x8B4B, 0x898F, 0x8B4C, 0x8A18, + 0x8B4D, 0x8CB4, 0x8B4E, 0x8D77, 0x8B4F, 0x8ECC, 0x8B50, 0x8F1D, 0x8B51, 0x98E2, 0x8B52, 0x9A0E, 0x8B53, 0x9B3C, 0x8B54, 0x4E80, + 0x8B55, 0x507D, 0x8B56, 0x5100, 0x8B57, 0x5993, 0x8B58, 0x5B9C, 0x8B59, 0x622F, 0x8B5A, 0x6280, 0x8B5B, 0x64EC, 0x8B5C, 0x6B3A, + 0x8B5D, 0x72A0, 0x8B5E, 0x7591, 0x8B5F, 0x7947, 0x8B60, 0x7FA9, 0x8B61, 0x87FB, 0x8B62, 0x8ABC, 0x8B63, 0x8B70, 0x8B64, 0x63AC, + 0x8B65, 0x83CA, 0x8B66, 0x97A0, 0x8B67, 0x5409, 0x8B68, 0x5403, 0x8B69, 0x55AB, 0x8B6A, 0x6854, 0x8B6B, 0x6A58, 0x8B6C, 0x8A70, + 0x8B6D, 0x7827, 0x8B6E, 0x6775, 0x8B6F, 0x9ECD, 0x8B70, 0x5374, 0x8B71, 0x5BA2, 0x8B72, 0x811A, 0x8B73, 0x8650, 0x8B74, 0x9006, + 0x8B75, 0x4E18, 0x8B76, 0x4E45, 0x8B77, 0x4EC7, 0x8B78, 0x4F11, 0x8B79, 0x53CA, 0x8B7A, 0x5438, 0x8B7B, 0x5BAE, 0x8B7C, 0x5F13, + 0x8B7D, 0x6025, 0x8B7E, 0x6551, 0x8B80, 0x673D, 0x8B81, 0x6C42, 0x8B82, 0x6C72, 0x8B83, 0x6CE3, 0x8B84, 0x7078, 0x8B85, 0x7403, + 0x8B86, 0x7A76, 0x8B87, 0x7AAE, 0x8B88, 0x7B08, 0x8B89, 0x7D1A, 0x8B8A, 0x7CFE, 0x8B8B, 0x7D66, 0x8B8C, 0x65E7, 0x8B8D, 0x725B, + 0x8B8E, 0x53BB, 0x8B8F, 0x5C45, 0x8B90, 0x5DE8, 0x8B91, 0x62D2, 0x8B92, 0x62E0, 0x8B93, 0x6319, 0x8B94, 0x6E20, 0x8B95, 0x865A, + 0x8B96, 0x8A31, 0x8B97, 0x8DDD, 0x8B98, 0x92F8, 0x8B99, 0x6F01, 0x8B9A, 0x79A6, 0x8B9B, 0x9B5A, 0x8B9C, 0x4EA8, 0x8B9D, 0x4EAB, + 0x8B9E, 0x4EAC, 0x8B9F, 0x4F9B, 0x8BA0, 0x4FA0, 0x8BA1, 0x50D1, 0x8BA2, 0x5147, 0x8BA3, 0x7AF6, 0x8BA4, 0x5171, 0x8BA5, 0x51F6, + 0x8BA6, 0x5354, 0x8BA7, 0x5321, 0x8BA8, 0x537F, 0x8BA9, 0x53EB, 0x8BAA, 0x55AC, 0x8BAB, 0x5883, 0x8BAC, 0x5CE1, 0x8BAD, 0x5F37, + 0x8BAE, 0x5F4A, 0x8BAF, 0x602F, 0x8BB0, 0x6050, 0x8BB1, 0x606D, 0x8BB2, 0x631F, 0x8BB3, 0x6559, 0x8BB4, 0x6A4B, 0x8BB5, 0x6CC1, + 0x8BB6, 0x72C2, 0x8BB7, 0x72ED, 0x8BB8, 0x77EF, 0x8BB9, 0x80F8, 0x8BBA, 0x8105, 0x8BBB, 0x8208, 0x8BBC, 0x854E, 0x8BBD, 0x90F7, + 0x8BBE, 0x93E1, 0x8BBF, 0x97FF, 0x8BC0, 0x9957, 0x8BC1, 0x9A5A, 0x8BC2, 0x4EF0, 0x8BC3, 0x51DD, 0x8BC4, 0x5C2D, 0x8BC5, 0x6681, + 0x8BC6, 0x696D, 0x8BC7, 0x5C40, 0x8BC8, 0x66F2, 0x8BC9, 0x6975, 0x8BCA, 0x7389, 0x8BCB, 0x6850, 0x8BCC, 0x7C81, 0x8BCD, 0x50C5, + 0x8BCE, 0x52E4, 0x8BCF, 0x5747, 0x8BD0, 0x5DFE, 0x8BD1, 0x9326, 0x8BD2, 0x65A4, 0x8BD3, 0x6B23, 0x8BD4, 0x6B3D, 0x8BD5, 0x7434, + 0x8BD6, 0x7981, 0x8BD7, 0x79BD, 0x8BD8, 0x7B4B, 0x8BD9, 0x7DCA, 0x8BDA, 0x82B9, 0x8BDB, 0x83CC, 0x8BDC, 0x887F, 0x8BDD, 0x895F, + 0x8BDE, 0x8B39, 0x8BDF, 0x8FD1, 0x8BE0, 0x91D1, 0x8BE1, 0x541F, 0x8BE2, 0x9280, 0x8BE3, 0x4E5D, 0x8BE4, 0x5036, 0x8BE5, 0x53E5, + 0x8BE6, 0x533A, 0x8BE7, 0x72D7, 0x8BE8, 0x7396, 0x8BE9, 0x77E9, 0x8BEA, 0x82E6, 0x8BEB, 0x8EAF, 0x8BEC, 0x99C6, 0x8BED, 0x99C8, + 0x8BEE, 0x99D2, 0x8BEF, 0x5177, 0x8BF0, 0x611A, 0x8BF1, 0x865E, 0x8BF2, 0x55B0, 0x8BF3, 0x7A7A, 0x8BF4, 0x5076, 0x8BF5, 0x5BD3, + 0x8BF6, 0x9047, 0x8BF7, 0x9685, 0x8BF8, 0x4E32, 0x8BF9, 0x6ADB, 0x8BFA, 0x91E7, 0x8BFB, 0x5C51, 0x8BFC, 0x5C48, 0x8C40, 0x6398, + 0x8C41, 0x7A9F, 0x8C42, 0x6C93, 0x8C43, 0x9774, 0x8C44, 0x8F61, 0x8C45, 0x7AAA, 0x8C46, 0x718A, 0x8C47, 0x9688, 0x8C48, 0x7C82, + 0x8C49, 0x6817, 0x8C4A, 0x7E70, 0x8C4B, 0x6851, 0x8C4C, 0x936C, 0x8C4D, 0x52F2, 0x8C4E, 0x541B, 0x8C4F, 0x85AB, 0x8C50, 0x8A13, + 0x8C51, 0x7FA4, 0x8C52, 0x8ECD, 0x8C53, 0x90E1, 0x8C54, 0x5366, 0x8C55, 0x8888, 0x8C56, 0x7941, 0x8C57, 0x4FC2, 0x8C58, 0x50BE, + 0x8C59, 0x5211, 0x8C5A, 0x5144, 0x8C5B, 0x5553, 0x8C5C, 0x572D, 0x8C5D, 0x73EA, 0x8C5E, 0x578B, 0x8C5F, 0x5951, 0x8C60, 0x5F62, + 0x8C61, 0x5F84, 0x8C62, 0x6075, 0x8C63, 0x6176, 0x8C64, 0x6167, 0x8C65, 0x61A9, 0x8C66, 0x63B2, 0x8C67, 0x643A, 0x8C68, 0x656C, + 0x8C69, 0x666F, 0x8C6A, 0x6842, 0x8C6B, 0x6E13, 0x8C6C, 0x7566, 0x8C6D, 0x7A3D, 0x8C6E, 0x7CFB, 0x8C6F, 0x7D4C, 0x8C70, 0x7D99, + 0x8C71, 0x7E4B, 0x8C72, 0x7F6B, 0x8C73, 0x830E, 0x8C74, 0x834A, 0x8C75, 0x86CD, 0x8C76, 0x8A08, 0x8C77, 0x8A63, 0x8C78, 0x8B66, + 0x8C79, 0x8EFD, 0x8C7A, 0x981A, 0x8C7B, 0x9D8F, 0x8C7C, 0x82B8, 0x8C7D, 0x8FCE, 0x8C7E, 0x9BE8, 0x8C80, 0x5287, 0x8C81, 0x621F, + 0x8C82, 0x6483, 0x8C83, 0x6FC0, 0x8C84, 0x9699, 0x8C85, 0x6841, 0x8C86, 0x5091, 0x8C87, 0x6B20, 0x8C88, 0x6C7A, 0x8C89, 0x6F54, + 0x8C8A, 0x7A74, 0x8C8B, 0x7D50, 0x8C8C, 0x8840, 0x8C8D, 0x8A23, 0x8C8E, 0x6708, 0x8C8F, 0x4EF6, 0x8C90, 0x5039, 0x8C91, 0x5026, + 0x8C92, 0x5065, 0x8C93, 0x517C, 0x8C94, 0x5238, 0x8C95, 0x5263, 0x8C96, 0x55A7, 0x8C97, 0x570F, 0x8C98, 0x5805, 0x8C99, 0x5ACC, + 0x8C9A, 0x5EFA, 0x8C9B, 0x61B2, 0x8C9C, 0x61F8, 0x8C9D, 0x62F3, 0x8C9E, 0x6372, 0x8C9F, 0x691C, 0x8CA0, 0x6A29, 0x8CA1, 0x727D, + 0x8CA2, 0x72AC, 0x8CA3, 0x732E, 0x8CA4, 0x7814, 0x8CA5, 0x786F, 0x8CA6, 0x7D79, 0x8CA7, 0x770C, 0x8CA8, 0x80A9, 0x8CA9, 0x898B, + 0x8CAA, 0x8B19, 0x8CAB, 0x8CE2, 0x8CAC, 0x8ED2, 0x8CAD, 0x9063, 0x8CAE, 0x9375, 0x8CAF, 0x967A, 0x8CB0, 0x9855, 0x8CB1, 0x9A13, + 0x8CB2, 0x9E78, 0x8CB3, 0x5143, 0x8CB4, 0x539F, 0x8CB5, 0x53B3, 0x8CB6, 0x5E7B, 0x8CB7, 0x5F26, 0x8CB8, 0x6E1B, 0x8CB9, 0x6E90, + 0x8CBA, 0x7384, 0x8CBB, 0x73FE, 0x8CBC, 0x7D43, 0x8CBD, 0x8237, 0x8CBE, 0x8A00, 0x8CBF, 0x8AFA, 0x8CC0, 0x9650, 0x8CC1, 0x4E4E, + 0x8CC2, 0x500B, 0x8CC3, 0x53E4, 0x8CC4, 0x547C, 0x8CC5, 0x56FA, 0x8CC6, 0x59D1, 0x8CC7, 0x5B64, 0x8CC8, 0x5DF1, 0x8CC9, 0x5EAB, + 0x8CCA, 0x5F27, 0x8CCB, 0x6238, 0x8CCC, 0x6545, 0x8CCD, 0x67AF, 0x8CCE, 0x6E56, 0x8CCF, 0x72D0, 0x8CD0, 0x7CCA, 0x8CD1, 0x88B4, + 0x8CD2, 0x80A1, 0x8CD3, 0x80E1, 0x8CD4, 0x83F0, 0x8CD5, 0x864E, 0x8CD6, 0x8A87, 0x8CD7, 0x8DE8, 0x8CD8, 0x9237, 0x8CD9, 0x96C7, + 0x8CDA, 0x9867, 0x8CDB, 0x9F13, 0x8CDC, 0x4E94, 0x8CDD, 0x4E92, 0x8CDE, 0x4F0D, 0x8CDF, 0x5348, 0x8CE0, 0x5449, 0x8CE1, 0x543E, + 0x8CE2, 0x5A2F, 0x8CE3, 0x5F8C, 0x8CE4, 0x5FA1, 0x8CE5, 0x609F, 0x8CE6, 0x68A7, 0x8CE7, 0x6A8E, 0x8CE8, 0x745A, 0x8CE9, 0x7881, + 0x8CEA, 0x8A9E, 0x8CEB, 0x8AA4, 0x8CEC, 0x8B77, 0x8CED, 0x9190, 0x8CEE, 0x4E5E, 0x8CEF, 0x9BC9, 0x8CF0, 0x4EA4, 0x8CF1, 0x4F7C, + 0x8CF2, 0x4FAF, 0x8CF3, 0x5019, 0x8CF4, 0x5016, 0x8CF5, 0x5149, 0x8CF6, 0x516C, 0x8CF7, 0x529F, 0x8CF8, 0x52B9, 0x8CF9, 0x52FE, + 0x8CFA, 0x539A, 0x8CFB, 0x53E3, 0x8CFC, 0x5411, 0x8D40, 0x540E, 0x8D41, 0x5589, 0x8D42, 0x5751, 0x8D43, 0x57A2, 0x8D44, 0x597D, + 0x8D45, 0x5B54, 0x8D46, 0x5B5D, 0x8D47, 0x5B8F, 0x8D48, 0x5DE5, 0x8D49, 0x5DE7, 0x8D4A, 0x5DF7, 0x8D4B, 0x5E78, 0x8D4C, 0x5E83, + 0x8D4D, 0x5E9A, 0x8D4E, 0x5EB7, 0x8D4F, 0x5F18, 0x8D50, 0x6052, 0x8D51, 0x614C, 0x8D52, 0x6297, 0x8D53, 0x62D8, 0x8D54, 0x63A7, + 0x8D55, 0x653B, 0x8D56, 0x6602, 0x8D57, 0x6643, 0x8D58, 0x66F4, 0x8D59, 0x676D, 0x8D5A, 0x6821, 0x8D5B, 0x6897, 0x8D5C, 0x69CB, + 0x8D5D, 0x6C5F, 0x8D5E, 0x6D2A, 0x8D5F, 0x6D69, 0x8D60, 0x6E2F, 0x8D61, 0x6E9D, 0x8D62, 0x7532, 0x8D63, 0x7687, 0x8D64, 0x786C, + 0x8D65, 0x7A3F, 0x8D66, 0x7CE0, 0x8D67, 0x7D05, 0x8D68, 0x7D18, 0x8D69, 0x7D5E, 0x8D6A, 0x7DB1, 0x8D6B, 0x8015, 0x8D6C, 0x8003, + 0x8D6D, 0x80AF, 0x8D6E, 0x80B1, 0x8D6F, 0x8154, 0x8D70, 0x818F, 0x8D71, 0x822A, 0x8D72, 0x8352, 0x8D73, 0x884C, 0x8D74, 0x8861, + 0x8D75, 0x8B1B, 0x8D76, 0x8CA2, 0x8D77, 0x8CFC, 0x8D78, 0x90CA, 0x8D79, 0x9175, 0x8D7A, 0x9271, 0x8D7B, 0x783F, 0x8D7C, 0x92FC, + 0x8D7D, 0x95A4, 0x8D7E, 0x964D, 0x8D80, 0x9805, 0x8D81, 0x9999, 0x8D82, 0x9AD8, 0x8D83, 0x9D3B, 0x8D84, 0x525B, 0x8D85, 0x52AB, + 0x8D86, 0x53F7, 0x8D87, 0x5408, 0x8D88, 0x58D5, 0x8D89, 0x62F7, 0x8D8A, 0x6FE0, 0x8D8B, 0x8C6A, 0x8D8C, 0x8F5F, 0x8D8D, 0x9EB9, + 0x8D8E, 0x514B, 0x8D8F, 0x523B, 0x8D90, 0x544A, 0x8D91, 0x56FD, 0x8D92, 0x7A40, 0x8D93, 0x9177, 0x8D94, 0x9D60, 0x8D95, 0x9ED2, + 0x8D96, 0x7344, 0x8D97, 0x6F09, 0x8D98, 0x8170, 0x8D99, 0x7511, 0x8D9A, 0x5FFD, 0x8D9B, 0x60DA, 0x8D9C, 0x9AA8, 0x8D9D, 0x72DB, + 0x8D9E, 0x8FBC, 0x8D9F, 0x6B64, 0x8DA0, 0x9803, 0x8DA1, 0x4ECA, 0x8DA2, 0x56F0, 0x8DA3, 0x5764, 0x8DA4, 0x58BE, 0x8DA5, 0x5A5A, + 0x8DA6, 0x6068, 0x8DA7, 0x61C7, 0x8DA8, 0x660F, 0x8DA9, 0x6606, 0x8DAA, 0x6839, 0x8DAB, 0x68B1, 0x8DAC, 0x6DF7, 0x8DAD, 0x75D5, + 0x8DAE, 0x7D3A, 0x8DAF, 0x826E, 0x8DB0, 0x9B42, 0x8DB1, 0x4E9B, 0x8DB2, 0x4F50, 0x8DB3, 0x53C9, 0x8DB4, 0x5506, 0x8DB5, 0x5D6F, + 0x8DB6, 0x5DE6, 0x8DB7, 0x5DEE, 0x8DB8, 0x67FB, 0x8DB9, 0x6C99, 0x8DBA, 0x7473, 0x8DBB, 0x7802, 0x8DBC, 0x8A50, 0x8DBD, 0x9396, + 0x8DBE, 0x88DF, 0x8DBF, 0x5750, 0x8DC0, 0x5EA7, 0x8DC1, 0x632B, 0x8DC2, 0x50B5, 0x8DC3, 0x50AC, 0x8DC4, 0x518D, 0x8DC5, 0x6700, + 0x8DC6, 0x54C9, 0x8DC7, 0x585E, 0x8DC8, 0x59BB, 0x8DC9, 0x5BB0, 0x8DCA, 0x5F69, 0x8DCB, 0x624D, 0x8DCC, 0x63A1, 0x8DCD, 0x683D, + 0x8DCE, 0x6B73, 0x8DCF, 0x6E08, 0x8DD0, 0x707D, 0x8DD1, 0x91C7, 0x8DD2, 0x7280, 0x8DD3, 0x7815, 0x8DD4, 0x7826, 0x8DD5, 0x796D, + 0x8DD6, 0x658E, 0x8DD7, 0x7D30, 0x8DD8, 0x83DC, 0x8DD9, 0x88C1, 0x8DDA, 0x8F09, 0x8DDB, 0x969B, 0x8DDC, 0x5264, 0x8DDD, 0x5728, + 0x8DDE, 0x6750, 0x8DDF, 0x7F6A, 0x8DE0, 0x8CA1, 0x8DE1, 0x51B4, 0x8DE2, 0x5742, 0x8DE3, 0x962A, 0x8DE4, 0x583A, 0x8DE5, 0x698A, + 0x8DE6, 0x80B4, 0x8DE7, 0x54B2, 0x8DE8, 0x5D0E, 0x8DE9, 0x57FC, 0x8DEA, 0x7895, 0x8DEB, 0x9DFA, 0x8DEC, 0x4F5C, 0x8DED, 0x524A, + 0x8DEE, 0x548B, 0x8DEF, 0x643E, 0x8DF0, 0x6628, 0x8DF1, 0x6714, 0x8DF2, 0x67F5, 0x8DF3, 0x7A84, 0x8DF4, 0x7B56, 0x8DF5, 0x7D22, + 0x8DF6, 0x932F, 0x8DF7, 0x685C, 0x8DF8, 0x9BAD, 0x8DF9, 0x7B39, 0x8DFA, 0x5319, 0x8DFB, 0x518A, 0x8DFC, 0x5237, 0x8E40, 0x5BDF, + 0x8E41, 0x62F6, 0x8E42, 0x64AE, 0x8E43, 0x64E6, 0x8E44, 0x672D, 0x8E45, 0x6BBA, 0x8E46, 0x85A9, 0x8E47, 0x96D1, 0x8E48, 0x7690, + 0x8E49, 0x9BD6, 0x8E4A, 0x634C, 0x8E4B, 0x9306, 0x8E4C, 0x9BAB, 0x8E4D, 0x76BF, 0x8E4E, 0x6652, 0x8E4F, 0x4E09, 0x8E50, 0x5098, + 0x8E51, 0x53C2, 0x8E52, 0x5C71, 0x8E53, 0x60E8, 0x8E54, 0x6492, 0x8E55, 0x6563, 0x8E56, 0x685F, 0x8E57, 0x71E6, 0x8E58, 0x73CA, + 0x8E59, 0x7523, 0x8E5A, 0x7B97, 0x8E5B, 0x7E82, 0x8E5C, 0x8695, 0x8E5D, 0x8B83, 0x8E5E, 0x8CDB, 0x8E5F, 0x9178, 0x8E60, 0x9910, + 0x8E61, 0x65AC, 0x8E62, 0x66AB, 0x8E63, 0x6B8B, 0x8E64, 0x4ED5, 0x8E65, 0x4ED4, 0x8E66, 0x4F3A, 0x8E67, 0x4F7F, 0x8E68, 0x523A, + 0x8E69, 0x53F8, 0x8E6A, 0x53F2, 0x8E6B, 0x55E3, 0x8E6C, 0x56DB, 0x8E6D, 0x58EB, 0x8E6E, 0x59CB, 0x8E6F, 0x59C9, 0x8E70, 0x59FF, + 0x8E71, 0x5B50, 0x8E72, 0x5C4D, 0x8E73, 0x5E02, 0x8E74, 0x5E2B, 0x8E75, 0x5FD7, 0x8E76, 0x601D, 0x8E77, 0x6307, 0x8E78, 0x652F, + 0x8E79, 0x5B5C, 0x8E7A, 0x65AF, 0x8E7B, 0x65BD, 0x8E7C, 0x65E8, 0x8E7D, 0x679D, 0x8E7E, 0x6B62, 0x8E80, 0x6B7B, 0x8E81, 0x6C0F, + 0x8E82, 0x7345, 0x8E83, 0x7949, 0x8E84, 0x79C1, 0x8E85, 0x7CF8, 0x8E86, 0x7D19, 0x8E87, 0x7D2B, 0x8E88, 0x80A2, 0x8E89, 0x8102, + 0x8E8A, 0x81F3, 0x8E8B, 0x8996, 0x8E8C, 0x8A5E, 0x8E8D, 0x8A69, 0x8E8E, 0x8A66, 0x8E8F, 0x8A8C, 0x8E90, 0x8AEE, 0x8E91, 0x8CC7, + 0x8E92, 0x8CDC, 0x8E93, 0x96CC, 0x8E94, 0x98FC, 0x8E95, 0x6B6F, 0x8E96, 0x4E8B, 0x8E97, 0x4F3C, 0x8E98, 0x4F8D, 0x8E99, 0x5150, + 0x8E9A, 0x5B57, 0x8E9B, 0x5BFA, 0x8E9C, 0x6148, 0x8E9D, 0x6301, 0x8E9E, 0x6642, 0x8E9F, 0x6B21, 0x8EA0, 0x6ECB, 0x8EA1, 0x6CBB, + 0x8EA2, 0x723E, 0x8EA3, 0x74BD, 0x8EA4, 0x75D4, 0x8EA5, 0x78C1, 0x8EA6, 0x793A, 0x8EA7, 0x800C, 0x8EA8, 0x8033, 0x8EA9, 0x81EA, + 0x8EAA, 0x8494, 0x8EAB, 0x8F9E, 0x8EAC, 0x6C50, 0x8EAD, 0x9E7F, 0x8EAE, 0x5F0F, 0x8EAF, 0x8B58, 0x8EB0, 0x9D2B, 0x8EB1, 0x7AFA, + 0x8EB2, 0x8EF8, 0x8EB3, 0x5B8D, 0x8EB4, 0x96EB, 0x8EB5, 0x4E03, 0x8EB6, 0x53F1, 0x8EB7, 0x57F7, 0x8EB8, 0x5931, 0x8EB9, 0x5AC9, + 0x8EBA, 0x5BA4, 0x8EBB, 0x6089, 0x8EBC, 0x6E7F, 0x8EBD, 0x6F06, 0x8EBE, 0x75BE, 0x8EBF, 0x8CEA, 0x8EC0, 0x5B9F, 0x8EC1, 0x8500, + 0x8EC2, 0x7BE0, 0x8EC3, 0x5072, 0x8EC4, 0x67F4, 0x8EC5, 0x829D, 0x8EC6, 0x5C61, 0x8EC7, 0x854A, 0x8EC8, 0x7E1E, 0x8EC9, 0x820E, + 0x8ECA, 0x5199, 0x8ECB, 0x5C04, 0x8ECC, 0x6368, 0x8ECD, 0x8D66, 0x8ECE, 0x659C, 0x8ECF, 0x716E, 0x8ED0, 0x793E, 0x8ED1, 0x7D17, + 0x8ED2, 0x8005, 0x8ED3, 0x8B1D, 0x8ED4, 0x8ECA, 0x8ED5, 0x906E, 0x8ED6, 0x86C7, 0x8ED7, 0x90AA, 0x8ED8, 0x501F, 0x8ED9, 0x52FA, + 0x8EDA, 0x5C3A, 0x8EDB, 0x6753, 0x8EDC, 0x707C, 0x8EDD, 0x7235, 0x8EDE, 0x914C, 0x8EDF, 0x91C8, 0x8EE0, 0x932B, 0x8EE1, 0x82E5, + 0x8EE2, 0x5BC2, 0x8EE3, 0x5F31, 0x8EE4, 0x60F9, 0x8EE5, 0x4E3B, 0x8EE6, 0x53D6, 0x8EE7, 0x5B88, 0x8EE8, 0x624B, 0x8EE9, 0x6731, + 0x8EEA, 0x6B8A, 0x8EEB, 0x72E9, 0x8EEC, 0x73E0, 0x8EED, 0x7A2E, 0x8EEE, 0x816B, 0x8EEF, 0x8DA3, 0x8EF0, 0x9152, 0x8EF1, 0x9996, + 0x8EF2, 0x5112, 0x8EF3, 0x53D7, 0x8EF4, 0x546A, 0x8EF5, 0x5BFF, 0x8EF6, 0x6388, 0x8EF7, 0x6A39, 0x8EF8, 0x7DAC, 0x8EF9, 0x9700, + 0x8EFA, 0x56DA, 0x8EFB, 0x53CE, 0x8EFC, 0x5468, 0x8F40, 0x5B97, 0x8F41, 0x5C31, 0x8F42, 0x5DDE, 0x8F43, 0x4FEE, 0x8F44, 0x6101, + 0x8F45, 0x62FE, 0x8F46, 0x6D32, 0x8F47, 0x79C0, 0x8F48, 0x79CB, 0x8F49, 0x7D42, 0x8F4A, 0x7E4D, 0x8F4B, 0x7FD2, 0x8F4C, 0x81ED, + 0x8F4D, 0x821F, 0x8F4E, 0x8490, 0x8F4F, 0x8846, 0x8F50, 0x8972, 0x8F51, 0x8B90, 0x8F52, 0x8E74, 0x8F53, 0x8F2F, 0x8F54, 0x9031, + 0x8F55, 0x914B, 0x8F56, 0x916C, 0x8F57, 0x96C6, 0x8F58, 0x919C, 0x8F59, 0x4EC0, 0x8F5A, 0x4F4F, 0x8F5B, 0x5145, 0x8F5C, 0x5341, + 0x8F5D, 0x5F93, 0x8F5E, 0x620E, 0x8F5F, 0x67D4, 0x8F60, 0x6C41, 0x8F61, 0x6E0B, 0x8F62, 0x7363, 0x8F63, 0x7E26, 0x8F64, 0x91CD, + 0x8F65, 0x9283, 0x8F66, 0x53D4, 0x8F67, 0x5919, 0x8F68, 0x5BBF, 0x8F69, 0x6DD1, 0x8F6A, 0x795D, 0x8F6B, 0x7E2E, 0x8F6C, 0x7C9B, + 0x8F6D, 0x587E, 0x8F6E, 0x719F, 0x8F6F, 0x51FA, 0x8F70, 0x8853, 0x8F71, 0x8FF0, 0x8F72, 0x4FCA, 0x8F73, 0x5CFB, 0x8F74, 0x6625, + 0x8F75, 0x77AC, 0x8F76, 0x7AE3, 0x8F77, 0x821C, 0x8F78, 0x99FF, 0x8F79, 0x51C6, 0x8F7A, 0x5FAA, 0x8F7B, 0x65EC, 0x8F7C, 0x696F, + 0x8F7D, 0x6B89, 0x8F7E, 0x6DF3, 0x8F80, 0x6E96, 0x8F81, 0x6F64, 0x8F82, 0x76FE, 0x8F83, 0x7D14, 0x8F84, 0x5DE1, 0x8F85, 0x9075, + 0x8F86, 0x9187, 0x8F87, 0x9806, 0x8F88, 0x51E6, 0x8F89, 0x521D, 0x8F8A, 0x6240, 0x8F8B, 0x6691, 0x8F8C, 0x66D9, 0x8F8D, 0x6E1A, + 0x8F8E, 0x5EB6, 0x8F8F, 0x7DD2, 0x8F90, 0x7F72, 0x8F91, 0x66F8, 0x8F92, 0x85AF, 0x8F93, 0x85F7, 0x8F94, 0x8AF8, 0x8F95, 0x52A9, + 0x8F96, 0x53D9, 0x8F97, 0x5973, 0x8F98, 0x5E8F, 0x8F99, 0x5F90, 0x8F9A, 0x6055, 0x8F9B, 0x92E4, 0x8F9C, 0x9664, 0x8F9D, 0x50B7, + 0x8F9E, 0x511F, 0x8F9F, 0x52DD, 0x8FA0, 0x5320, 0x8FA1, 0x5347, 0x8FA2, 0x53EC, 0x8FA3, 0x54E8, 0x8FA4, 0x5546, 0x8FA5, 0x5531, + 0x8FA6, 0x5617, 0x8FA7, 0x5968, 0x8FA8, 0x59BE, 0x8FA9, 0x5A3C, 0x8FAA, 0x5BB5, 0x8FAB, 0x5C06, 0x8FAC, 0x5C0F, 0x8FAD, 0x5C11, + 0x8FAE, 0x5C1A, 0x8FAF, 0x5E84, 0x8FB0, 0x5E8A, 0x8FB1, 0x5EE0, 0x8FB2, 0x5F70, 0x8FB3, 0x627F, 0x8FB4, 0x6284, 0x8FB5, 0x62DB, + 0x8FB6, 0x638C, 0x8FB7, 0x6377, 0x8FB8, 0x6607, 0x8FB9, 0x660C, 0x8FBA, 0x662D, 0x8FBB, 0x6676, 0x8FBC, 0x677E, 0x8FBD, 0x68A2, + 0x8FBE, 0x6A1F, 0x8FBF, 0x6A35, 0x8FC0, 0x6CBC, 0x8FC1, 0x6D88, 0x8FC2, 0x6E09, 0x8FC3, 0x6E58, 0x8FC4, 0x713C, 0x8FC5, 0x7126, + 0x8FC6, 0x7167, 0x8FC7, 0x75C7, 0x8FC8, 0x7701, 0x8FC9, 0x785D, 0x8FCA, 0x7901, 0x8FCB, 0x7965, 0x8FCC, 0x79F0, 0x8FCD, 0x7AE0, + 0x8FCE, 0x7B11, 0x8FCF, 0x7CA7, 0x8FD0, 0x7D39, 0x8FD1, 0x8096, 0x8FD2, 0x83D6, 0x8FD3, 0x848B, 0x8FD4, 0x8549, 0x8FD5, 0x885D, + 0x8FD6, 0x88F3, 0x8FD7, 0x8A1F, 0x8FD8, 0x8A3C, 0x8FD9, 0x8A54, 0x8FDA, 0x8A73, 0x8FDB, 0x8C61, 0x8FDC, 0x8CDE, 0x8FDD, 0x91A4, + 0x8FDE, 0x9266, 0x8FDF, 0x937E, 0x8FE0, 0x9418, 0x8FE1, 0x969C, 0x8FE2, 0x9798, 0x8FE3, 0x4E0A, 0x8FE4, 0x4E08, 0x8FE5, 0x4E1E, + 0x8FE6, 0x4E57, 0x8FE7, 0x5197, 0x8FE8, 0x5270, 0x8FE9, 0x57CE, 0x8FEA, 0x5834, 0x8FEB, 0x58CC, 0x8FEC, 0x5B22, 0x8FED, 0x5E38, + 0x8FEE, 0x60C5, 0x8FEF, 0x64FE, 0x8FF0, 0x6761, 0x8FF1, 0x6756, 0x8FF2, 0x6D44, 0x8FF3, 0x72B6, 0x8FF4, 0x7573, 0x8FF5, 0x7A63, + 0x8FF6, 0x84B8, 0x8FF7, 0x8B72, 0x8FF8, 0x91B8, 0x8FF9, 0x9320, 0x8FFA, 0x5631, 0x8FFB, 0x57F4, 0x8FFC, 0x98FE, 0x9040, 0x62ED, + 0x9041, 0x690D, 0x9042, 0x6B96, 0x9043, 0x71ED, 0x9044, 0x7E54, 0x9045, 0x8077, 0x9046, 0x8272, 0x9047, 0x89E6, 0x9048, 0x98DF, + 0x9049, 0x8755, 0x904A, 0x8FB1, 0x904B, 0x5C3B, 0x904C, 0x4F38, 0x904D, 0x4FE1, 0x904E, 0x4FB5, 0x904F, 0x5507, 0x9050, 0x5A20, + 0x9051, 0x5BDD, 0x9052, 0x5BE9, 0x9053, 0x5FC3, 0x9054, 0x614E, 0x9055, 0x632F, 0x9056, 0x65B0, 0x9057, 0x664B, 0x9058, 0x68EE, + 0x9059, 0x699B, 0x905A, 0x6D78, 0x905B, 0x6DF1, 0x905C, 0x7533, 0x905D, 0x75B9, 0x905E, 0x771F, 0x905F, 0x795E, 0x9060, 0x79E6, + 0x9061, 0x7D33, 0x9062, 0x81E3, 0x9063, 0x82AF, 0x9064, 0x85AA, 0x9065, 0x89AA, 0x9066, 0x8A3A, 0x9067, 0x8EAB, 0x9068, 0x8F9B, + 0x9069, 0x9032, 0x906A, 0x91DD, 0x906B, 0x9707, 0x906C, 0x4EBA, 0x906D, 0x4EC1, 0x906E, 0x5203, 0x906F, 0x5875, 0x9070, 0x58EC, + 0x9071, 0x5C0B, 0x9072, 0x751A, 0x9073, 0x5C3D, 0x9074, 0x814E, 0x9075, 0x8A0A, 0x9076, 0x8FC5, 0x9077, 0x9663, 0x9078, 0x976D, + 0x9079, 0x7B25, 0x907A, 0x8ACF, 0x907B, 0x9808, 0x907C, 0x9162, 0x907D, 0x56F3, 0x907E, 0x53A8, 0x9080, 0x9017, 0x9081, 0x5439, + 0x9082, 0x5782, 0x9083, 0x5E25, 0x9084, 0x63A8, 0x9085, 0x6C34, 0x9086, 0x708A, 0x9087, 0x7761, 0x9088, 0x7C8B, 0x9089, 0x7FE0, + 0x908A, 0x8870, 0x908B, 0x9042, 0x908C, 0x9154, 0x908D, 0x9310, 0x908E, 0x9318, 0x908F, 0x968F, 0x9090, 0x745E, 0x9091, 0x9AC4, + 0x9092, 0x5D07, 0x9093, 0x5D69, 0x9094, 0x6570, 0x9095, 0x67A2, 0x9096, 0x8DA8, 0x9097, 0x96DB, 0x9098, 0x636E, 0x9099, 0x6749, + 0x909A, 0x6919, 0x909B, 0x83C5, 0x909C, 0x9817, 0x909D, 0x96C0, 0x909E, 0x88FE, 0x909F, 0x6F84, 0x90A0, 0x647A, 0x90A1, 0x5BF8, + 0x90A2, 0x4E16, 0x90A3, 0x702C, 0x90A4, 0x755D, 0x90A5, 0x662F, 0x90A6, 0x51C4, 0x90A7, 0x5236, 0x90A8, 0x52E2, 0x90A9, 0x59D3, + 0x90AA, 0x5F81, 0x90AB, 0x6027, 0x90AC, 0x6210, 0x90AD, 0x653F, 0x90AE, 0x6574, 0x90AF, 0x661F, 0x90B0, 0x6674, 0x90B1, 0x68F2, + 0x90B2, 0x6816, 0x90B3, 0x6B63, 0x90B4, 0x6E05, 0x90B5, 0x7272, 0x90B6, 0x751F, 0x90B7, 0x76DB, 0x90B8, 0x7CBE, 0x90B9, 0x8056, + 0x90BA, 0x58F0, 0x90BB, 0x88FD, 0x90BC, 0x897F, 0x90BD, 0x8AA0, 0x90BE, 0x8A93, 0x90BF, 0x8ACB, 0x90C0, 0x901D, 0x90C1, 0x9192, + 0x90C2, 0x9752, 0x90C3, 0x9759, 0x90C4, 0x6589, 0x90C5, 0x7A0E, 0x90C6, 0x8106, 0x90C7, 0x96BB, 0x90C8, 0x5E2D, 0x90C9, 0x60DC, + 0x90CA, 0x621A, 0x90CB, 0x65A5, 0x90CC, 0x6614, 0x90CD, 0x6790, 0x90CE, 0x77F3, 0x90CF, 0x7A4D, 0x90D0, 0x7C4D, 0x90D1, 0x7E3E, + 0x90D2, 0x810A, 0x90D3, 0x8CAC, 0x90D4, 0x8D64, 0x90D5, 0x8DE1, 0x90D6, 0x8E5F, 0x90D7, 0x78A9, 0x90D8, 0x5207, 0x90D9, 0x62D9, + 0x90DA, 0x63A5, 0x90DB, 0x6442, 0x90DC, 0x6298, 0x90DD, 0x8A2D, 0x90DE, 0x7A83, 0x90DF, 0x7BC0, 0x90E0, 0x8AAC, 0x90E1, 0x96EA, + 0x90E2, 0x7D76, 0x90E3, 0x820C, 0x90E4, 0x8749, 0x90E5, 0x4ED9, 0x90E6, 0x5148, 0x90E7, 0x5343, 0x90E8, 0x5360, 0x90E9, 0x5BA3, + 0x90EA, 0x5C02, 0x90EB, 0x5C16, 0x90EC, 0x5DDD, 0x90ED, 0x6226, 0x90EE, 0x6247, 0x90EF, 0x64B0, 0x90F0, 0x6813, 0x90F1, 0x6834, + 0x90F2, 0x6CC9, 0x90F3, 0x6D45, 0x90F4, 0x6D17, 0x90F5, 0x67D3, 0x90F6, 0x6F5C, 0x90F7, 0x714E, 0x90F8, 0x717D, 0x90F9, 0x65CB, + 0x90FA, 0x7A7F, 0x90FB, 0x7BAD, 0x90FC, 0x7DDA, 0x9140, 0x7E4A, 0x9141, 0x7FA8, 0x9142, 0x817A, 0x9143, 0x821B, 0x9144, 0x8239, + 0x9145, 0x85A6, 0x9146, 0x8A6E, 0x9147, 0x8CCE, 0x9148, 0x8DF5, 0x9149, 0x9078, 0x914A, 0x9077, 0x914B, 0x92AD, 0x914C, 0x9291, + 0x914D, 0x9583, 0x914E, 0x9BAE, 0x914F, 0x524D, 0x9150, 0x5584, 0x9151, 0x6F38, 0x9152, 0x7136, 0x9153, 0x5168, 0x9154, 0x7985, + 0x9155, 0x7E55, 0x9156, 0x81B3, 0x9157, 0x7CCE, 0x9158, 0x564C, 0x9159, 0x5851, 0x915A, 0x5CA8, 0x915B, 0x63AA, 0x915C, 0x66FE, + 0x915D, 0x66FD, 0x915E, 0x695A, 0x915F, 0x72D9, 0x9160, 0x758F, 0x9161, 0x758E, 0x9162, 0x790E, 0x9163, 0x7956, 0x9164, 0x79DF, + 0x9165, 0x7C97, 0x9166, 0x7D20, 0x9167, 0x7D44, 0x9168, 0x8607, 0x9169, 0x8A34, 0x916A, 0x963B, 0x916B, 0x9061, 0x916C, 0x9F20, + 0x916D, 0x50E7, 0x916E, 0x5275, 0x916F, 0x53CC, 0x9170, 0x53E2, 0x9171, 0x5009, 0x9172, 0x55AA, 0x9173, 0x58EE, 0x9174, 0x594F, + 0x9175, 0x723D, 0x9176, 0x5B8B, 0x9177, 0x5C64, 0x9178, 0x531D, 0x9179, 0x60E3, 0x917A, 0x60F3, 0x917B, 0x635C, 0x917C, 0x6383, + 0x917D, 0x633F, 0x917E, 0x63BB, 0x9180, 0x64CD, 0x9181, 0x65E9, 0x9182, 0x66F9, 0x9183, 0x5DE3, 0x9184, 0x69CD, 0x9185, 0x69FD, + 0x9186, 0x6F15, 0x9187, 0x71E5, 0x9188, 0x4E89, 0x9189, 0x75E9, 0x918A, 0x76F8, 0x918B, 0x7A93, 0x918C, 0x7CDF, 0x918D, 0x7DCF, + 0x918E, 0x7D9C, 0x918F, 0x8061, 0x9190, 0x8349, 0x9191, 0x8358, 0x9192, 0x846C, 0x9193, 0x84BC, 0x9194, 0x85FB, 0x9195, 0x88C5, + 0x9196, 0x8D70, 0x9197, 0x9001, 0x9198, 0x906D, 0x9199, 0x9397, 0x919A, 0x971C, 0x919B, 0x9A12, 0x919C, 0x50CF, 0x919D, 0x5897, + 0x919E, 0x618E, 0x919F, 0x81D3, 0x91A0, 0x8535, 0x91A1, 0x8D08, 0x91A2, 0x9020, 0x91A3, 0x4FC3, 0x91A4, 0x5074, 0x91A5, 0x5247, + 0x91A6, 0x5373, 0x91A7, 0x606F, 0x91A8, 0x6349, 0x91A9, 0x675F, 0x91AA, 0x6E2C, 0x91AB, 0x8DB3, 0x91AC, 0x901F, 0x91AD, 0x4FD7, + 0x91AE, 0x5C5E, 0x91AF, 0x8CCA, 0x91B0, 0x65CF, 0x91B1, 0x7D9A, 0x91B2, 0x5352, 0x91B3, 0x8896, 0x91B4, 0x5176, 0x91B5, 0x63C3, + 0x91B6, 0x5B58, 0x91B7, 0x5B6B, 0x91B8, 0x5C0A, 0x91B9, 0x640D, 0x91BA, 0x6751, 0x91BB, 0x905C, 0x91BC, 0x4ED6, 0x91BD, 0x591A, + 0x91BE, 0x592A, 0x91BF, 0x6C70, 0x91C0, 0x8A51, 0x91C1, 0x553E, 0x91C2, 0x5815, 0x91C3, 0x59A5, 0x91C4, 0x60F0, 0x91C5, 0x6253, + 0x91C6, 0x67C1, 0x91C7, 0x8235, 0x91C8, 0x6955, 0x91C9, 0x9640, 0x91CA, 0x99C4, 0x91CB, 0x9A28, 0x91CC, 0x4F53, 0x91CD, 0x5806, + 0x91CE, 0x5BFE, 0x91CF, 0x8010, 0x91D0, 0x5CB1, 0x91D1, 0x5E2F, 0x91D2, 0x5F85, 0x91D3, 0x6020, 0x91D4, 0x614B, 0x91D5, 0x6234, + 0x91D6, 0x66FF, 0x91D7, 0x6CF0, 0x91D8, 0x6EDE, 0x91D9, 0x80CE, 0x91DA, 0x817F, 0x91DB, 0x82D4, 0x91DC, 0x888B, 0x91DD, 0x8CB8, + 0x91DE, 0x9000, 0x91DF, 0x902E, 0x91E0, 0x968A, 0x91E1, 0x9EDB, 0x91E2, 0x9BDB, 0x91E3, 0x4EE3, 0x91E4, 0x53F0, 0x91E5, 0x5927, + 0x91E6, 0x7B2C, 0x91E7, 0x918D, 0x91E8, 0x984C, 0x91E9, 0x9DF9, 0x91EA, 0x6EDD, 0x91EB, 0x7027, 0x91EC, 0x5353, 0x91ED, 0x5544, + 0x91EE, 0x5B85, 0x91EF, 0x6258, 0x91F0, 0x629E, 0x91F1, 0x62D3, 0x91F2, 0x6CA2, 0x91F3, 0x6FEF, 0x91F4, 0x7422, 0x91F5, 0x8A17, + 0x91F6, 0x9438, 0x91F7, 0x6FC1, 0x91F8, 0x8AFE, 0x91F9, 0x8338, 0x91FA, 0x51E7, 0x91FB, 0x86F8, 0x91FC, 0x53EA, 0x9240, 0x53E9, + 0x9241, 0x4F46, 0x9242, 0x9054, 0x9243, 0x8FB0, 0x9244, 0x596A, 0x9245, 0x8131, 0x9246, 0x5DFD, 0x9247, 0x7AEA, 0x9248, 0x8FBF, + 0x9249, 0x68DA, 0x924A, 0x8C37, 0x924B, 0x72F8, 0x924C, 0x9C48, 0x924D, 0x6A3D, 0x924E, 0x8AB0, 0x924F, 0x4E39, 0x9250, 0x5358, + 0x9251, 0x5606, 0x9252, 0x5766, 0x9253, 0x62C5, 0x9254, 0x63A2, 0x9255, 0x65E6, 0x9256, 0x6B4E, 0x9257, 0x6DE1, 0x9258, 0x6E5B, + 0x9259, 0x70AD, 0x925A, 0x77ED, 0x925B, 0x7AEF, 0x925C, 0x7BAA, 0x925D, 0x7DBB, 0x925E, 0x803D, 0x925F, 0x80C6, 0x9260, 0x86CB, + 0x9261, 0x8A95, 0x9262, 0x935B, 0x9263, 0x56E3, 0x9264, 0x58C7, 0x9265, 0x5F3E, 0x9266, 0x65AD, 0x9267, 0x6696, 0x9268, 0x6A80, + 0x9269, 0x6BB5, 0x926A, 0x7537, 0x926B, 0x8AC7, 0x926C, 0x5024, 0x926D, 0x77E5, 0x926E, 0x5730, 0x926F, 0x5F1B, 0x9270, 0x6065, + 0x9271, 0x667A, 0x9272, 0x6C60, 0x9273, 0x75F4, 0x9274, 0x7A1A, 0x9275, 0x7F6E, 0x9276, 0x81F4, 0x9277, 0x8718, 0x9278, 0x9045, + 0x9279, 0x99B3, 0x927A, 0x7BC9, 0x927B, 0x755C, 0x927C, 0x7AF9, 0x927D, 0x7B51, 0x927E, 0x84C4, 0x9280, 0x9010, 0x9281, 0x79E9, + 0x9282, 0x7A92, 0x9283, 0x8336, 0x9284, 0x5AE1, 0x9285, 0x7740, 0x9286, 0x4E2D, 0x9287, 0x4EF2, 0x9288, 0x5B99, 0x9289, 0x5FE0, + 0x928A, 0x62BD, 0x928B, 0x663C, 0x928C, 0x67F1, 0x928D, 0x6CE8, 0x928E, 0x866B, 0x928F, 0x8877, 0x9290, 0x8A3B, 0x9291, 0x914E, + 0x9292, 0x92F3, 0x9293, 0x99D0, 0x9294, 0x6A17, 0x9295, 0x7026, 0x9296, 0x732A, 0x9297, 0x82E7, 0x9298, 0x8457, 0x9299, 0x8CAF, + 0x929A, 0x4E01, 0x929B, 0x5146, 0x929C, 0x51CB, 0x929D, 0x558B, 0x929E, 0x5BF5, 0x929F, 0x5E16, 0x92A0, 0x5E33, 0x92A1, 0x5E81, + 0x92A2, 0x5F14, 0x92A3, 0x5F35, 0x92A4, 0x5F6B, 0x92A5, 0x5FB4, 0x92A6, 0x61F2, 0x92A7, 0x6311, 0x92A8, 0x66A2, 0x92A9, 0x671D, + 0x92AA, 0x6F6E, 0x92AB, 0x7252, 0x92AC, 0x753A, 0x92AD, 0x773A, 0x92AE, 0x8074, 0x92AF, 0x8139, 0x92B0, 0x8178, 0x92B1, 0x8776, + 0x92B2, 0x8ABF, 0x92B3, 0x8ADC, 0x92B4, 0x8D85, 0x92B5, 0x8DF3, 0x92B6, 0x929A, 0x92B7, 0x9577, 0x92B8, 0x9802, 0x92B9, 0x9CE5, + 0x92BA, 0x52C5, 0x92BB, 0x6357, 0x92BC, 0x76F4, 0x92BD, 0x6715, 0x92BE, 0x6C88, 0x92BF, 0x73CD, 0x92C0, 0x8CC3, 0x92C1, 0x93AE, + 0x92C2, 0x9673, 0x92C3, 0x6D25, 0x92C4, 0x589C, 0x92C5, 0x690E, 0x92C6, 0x69CC, 0x92C7, 0x8FFD, 0x92C8, 0x939A, 0x92C9, 0x75DB, + 0x92CA, 0x901A, 0x92CB, 0x585A, 0x92CC, 0x6802, 0x92CD, 0x63B4, 0x92CE, 0x69FB, 0x92CF, 0x4F43, 0x92D0, 0x6F2C, 0x92D1, 0x67D8, + 0x92D2, 0x8FBB, 0x92D3, 0x8526, 0x92D4, 0x7DB4, 0x92D5, 0x9354, 0x92D6, 0x693F, 0x92D7, 0x6F70, 0x92D8, 0x576A, 0x92D9, 0x58F7, + 0x92DA, 0x5B2C, 0x92DB, 0x7D2C, 0x92DC, 0x722A, 0x92DD, 0x540A, 0x92DE, 0x91E3, 0x92DF, 0x9DB4, 0x92E0, 0x4EAD, 0x92E1, 0x4F4E, + 0x92E2, 0x505C, 0x92E3, 0x5075, 0x92E4, 0x5243, 0x92E5, 0x8C9E, 0x92E6, 0x5448, 0x92E7, 0x5824, 0x92E8, 0x5B9A, 0x92E9, 0x5E1D, + 0x92EA, 0x5E95, 0x92EB, 0x5EAD, 0x92EC, 0x5EF7, 0x92ED, 0x5F1F, 0x92EE, 0x608C, 0x92EF, 0x62B5, 0x92F0, 0x633A, 0x92F1, 0x63D0, + 0x92F2, 0x68AF, 0x92F3, 0x6C40, 0x92F4, 0x7887, 0x92F5, 0x798E, 0x92F6, 0x7A0B, 0x92F7, 0x7DE0, 0x92F8, 0x8247, 0x92F9, 0x8A02, + 0x92FA, 0x8AE6, 0x92FB, 0x8E44, 0x92FC, 0x9013, 0x9340, 0x90B8, 0x9341, 0x912D, 0x9342, 0x91D8, 0x9343, 0x9F0E, 0x9344, 0x6CE5, + 0x9345, 0x6458, 0x9346, 0x64E2, 0x9347, 0x6575, 0x9348, 0x6EF4, 0x9349, 0x7684, 0x934A, 0x7B1B, 0x934B, 0x9069, 0x934C, 0x93D1, + 0x934D, 0x6EBA, 0x934E, 0x54F2, 0x934F, 0x5FB9, 0x9350, 0x64A4, 0x9351, 0x8F4D, 0x9352, 0x8FED, 0x9353, 0x9244, 0x9354, 0x5178, + 0x9355, 0x586B, 0x9356, 0x5929, 0x9357, 0x5C55, 0x9358, 0x5E97, 0x9359, 0x6DFB, 0x935A, 0x7E8F, 0x935B, 0x751C, 0x935C, 0x8CBC, + 0x935D, 0x8EE2, 0x935E, 0x985B, 0x935F, 0x70B9, 0x9360, 0x4F1D, 0x9361, 0x6BBF, 0x9362, 0x6FB1, 0x9363, 0x7530, 0x9364, 0x96FB, + 0x9365, 0x514E, 0x9366, 0x5410, 0x9367, 0x5835, 0x9368, 0x5857, 0x9369, 0x59AC, 0x936A, 0x5C60, 0x936B, 0x5F92, 0x936C, 0x6597, + 0x936D, 0x675C, 0x936E, 0x6E21, 0x936F, 0x767B, 0x9370, 0x83DF, 0x9371, 0x8CED, 0x9372, 0x9014, 0x9373, 0x90FD, 0x9374, 0x934D, + 0x9375, 0x7825, 0x9376, 0x783A, 0x9377, 0x52AA, 0x9378, 0x5EA6, 0x9379, 0x571F, 0x937A, 0x5974, 0x937B, 0x6012, 0x937C, 0x5012, + 0x937D, 0x515A, 0x937E, 0x51AC, 0x9380, 0x51CD, 0x9381, 0x5200, 0x9382, 0x5510, 0x9383, 0x5854, 0x9384, 0x5858, 0x9385, 0x5957, + 0x9386, 0x5B95, 0x9387, 0x5CF6, 0x9388, 0x5D8B, 0x9389, 0x60BC, 0x938A, 0x6295, 0x938B, 0x642D, 0x938C, 0x6771, 0x938D, 0x6843, + 0x938E, 0x68BC, 0x938F, 0x68DF, 0x9390, 0x76D7, 0x9391, 0x6DD8, 0x9392, 0x6E6F, 0x9393, 0x6D9B, 0x9394, 0x706F, 0x9395, 0x71C8, + 0x9396, 0x5F53, 0x9397, 0x75D8, 0x9398, 0x7977, 0x9399, 0x7B49, 0x939A, 0x7B54, 0x939B, 0x7B52, 0x939C, 0x7CD6, 0x939D, 0x7D71, + 0x939E, 0x5230, 0x939F, 0x8463, 0x93A0, 0x8569, 0x93A1, 0x85E4, 0x93A2, 0x8A0E, 0x93A3, 0x8B04, 0x93A4, 0x8C46, 0x93A5, 0x8E0F, + 0x93A6, 0x9003, 0x93A7, 0x900F, 0x93A8, 0x9419, 0x93A9, 0x9676, 0x93AA, 0x982D, 0x93AB, 0x9A30, 0x93AC, 0x95D8, 0x93AD, 0x50CD, + 0x93AE, 0x52D5, 0x93AF, 0x540C, 0x93B0, 0x5802, 0x93B1, 0x5C0E, 0x93B2, 0x61A7, 0x93B3, 0x649E, 0x93B4, 0x6D1E, 0x93B5, 0x77B3, + 0x93B6, 0x7AE5, 0x93B7, 0x80F4, 0x93B8, 0x8404, 0x93B9, 0x9053, 0x93BA, 0x9285, 0x93BB, 0x5CE0, 0x93BC, 0x9D07, 0x93BD, 0x533F, + 0x93BE, 0x5F97, 0x93BF, 0x5FB3, 0x93C0, 0x6D9C, 0x93C1, 0x7279, 0x93C2, 0x7763, 0x93C3, 0x79BF, 0x93C4, 0x7BE4, 0x93C5, 0x6BD2, + 0x93C6, 0x72EC, 0x93C7, 0x8AAD, 0x93C8, 0x6803, 0x93C9, 0x6A61, 0x93CA, 0x51F8, 0x93CB, 0x7A81, 0x93CC, 0x6934, 0x93CD, 0x5C4A, + 0x93CE, 0x9CF6, 0x93CF, 0x82EB, 0x93D0, 0x5BC5, 0x93D1, 0x9149, 0x93D2, 0x701E, 0x93D3, 0x5678, 0x93D4, 0x5C6F, 0x93D5, 0x60C7, + 0x93D6, 0x6566, 0x93D7, 0x6C8C, 0x93D8, 0x8C5A, 0x93D9, 0x9041, 0x93DA, 0x9813, 0x93DB, 0x5451, 0x93DC, 0x66C7, 0x93DD, 0x920D, + 0x93DE, 0x5948, 0x93DF, 0x90A3, 0x93E0, 0x5185, 0x93E1, 0x4E4D, 0x93E2, 0x51EA, 0x93E3, 0x8599, 0x93E4, 0x8B0E, 0x93E5, 0x7058, + 0x93E6, 0x637A, 0x93E7, 0x934B, 0x93E8, 0x6962, 0x93E9, 0x99B4, 0x93EA, 0x7E04, 0x93EB, 0x7577, 0x93EC, 0x5357, 0x93ED, 0x6960, + 0x93EE, 0x8EDF, 0x93EF, 0x96E3, 0x93F0, 0x6C5D, 0x93F1, 0x4E8C, 0x93F2, 0x5C3C, 0x93F3, 0x5F10, 0x93F4, 0x8FE9, 0x93F5, 0x5302, + 0x93F6, 0x8CD1, 0x93F7, 0x8089, 0x93F8, 0x8679, 0x93F9, 0x5EFF, 0x93FA, 0x65E5, 0x93FB, 0x4E73, 0x93FC, 0x5165, 0x9440, 0x5982, + 0x9441, 0x5C3F, 0x9442, 0x97EE, 0x9443, 0x4EFB, 0x9444, 0x598A, 0x9445, 0x5FCD, 0x9446, 0x8A8D, 0x9447, 0x6FE1, 0x9448, 0x79B0, + 0x9449, 0x7962, 0x944A, 0x5BE7, 0x944B, 0x8471, 0x944C, 0x732B, 0x944D, 0x71B1, 0x944E, 0x5E74, 0x944F, 0x5FF5, 0x9450, 0x637B, + 0x9451, 0x649A, 0x9452, 0x71C3, 0x9453, 0x7C98, 0x9454, 0x4E43, 0x9455, 0x5EFC, 0x9456, 0x4E4B, 0x9457, 0x57DC, 0x9458, 0x56A2, + 0x9459, 0x60A9, 0x945A, 0x6FC3, 0x945B, 0x7D0D, 0x945C, 0x80FD, 0x945D, 0x8133, 0x945E, 0x81BF, 0x945F, 0x8FB2, 0x9460, 0x8997, + 0x9461, 0x86A4, 0x9462, 0x5DF4, 0x9463, 0x628A, 0x9464, 0x64AD, 0x9465, 0x8987, 0x9466, 0x6777, 0x9467, 0x6CE2, 0x9468, 0x6D3E, + 0x9469, 0x7436, 0x946A, 0x7834, 0x946B, 0x5A46, 0x946C, 0x7F75, 0x946D, 0x82AD, 0x946E, 0x99AC, 0x946F, 0x4FF3, 0x9470, 0x5EC3, + 0x9471, 0x62DD, 0x9472, 0x6392, 0x9473, 0x6557, 0x9474, 0x676F, 0x9475, 0x76C3, 0x9476, 0x724C, 0x9477, 0x80CC, 0x9478, 0x80BA, + 0x9479, 0x8F29, 0x947A, 0x914D, 0x947B, 0x500D, 0x947C, 0x57F9, 0x947D, 0x5A92, 0x947E, 0x6885, 0x9480, 0x6973, 0x9481, 0x7164, + 0x9482, 0x72FD, 0x9483, 0x8CB7, 0x9484, 0x58F2, 0x9485, 0x8CE0, 0x9486, 0x966A, 0x9487, 0x9019, 0x9488, 0x877F, 0x9489, 0x79E4, + 0x948A, 0x77E7, 0x948B, 0x8429, 0x948C, 0x4F2F, 0x948D, 0x5265, 0x948E, 0x535A, 0x948F, 0x62CD, 0x9490, 0x67CF, 0x9491, 0x6CCA, + 0x9492, 0x767D, 0x9493, 0x7B94, 0x9494, 0x7C95, 0x9495, 0x8236, 0x9496, 0x8584, 0x9497, 0x8FEB, 0x9498, 0x66DD, 0x9499, 0x6F20, + 0x949A, 0x7206, 0x949B, 0x7E1B, 0x949C, 0x83AB, 0x949D, 0x99C1, 0x949E, 0x9EA6, 0x949F, 0x51FD, 0x94A0, 0x7BB1, 0x94A1, 0x7872, + 0x94A2, 0x7BB8, 0x94A3, 0x8087, 0x94A4, 0x7B48, 0x94A5, 0x6AE8, 0x94A6, 0x5E61, 0x94A7, 0x808C, 0x94A8, 0x7551, 0x94A9, 0x7560, + 0x94AA, 0x516B, 0x94AB, 0x9262, 0x94AC, 0x6E8C, 0x94AD, 0x767A, 0x94AE, 0x9197, 0x94AF, 0x9AEA, 0x94B0, 0x4F10, 0x94B1, 0x7F70, + 0x94B2, 0x629C, 0x94B3, 0x7B4F, 0x94B4, 0x95A5, 0x94B5, 0x9CE9, 0x94B6, 0x567A, 0x94B7, 0x5859, 0x94B8, 0x86E4, 0x94B9, 0x96BC, + 0x94BA, 0x4F34, 0x94BB, 0x5224, 0x94BC, 0x534A, 0x94BD, 0x53CD, 0x94BE, 0x53DB, 0x94BF, 0x5E06, 0x94C0, 0x642C, 0x94C1, 0x6591, + 0x94C2, 0x677F, 0x94C3, 0x6C3E, 0x94C4, 0x6C4E, 0x94C5, 0x7248, 0x94C6, 0x72AF, 0x94C7, 0x73ED, 0x94C8, 0x7554, 0x94C9, 0x7E41, + 0x94CA, 0x822C, 0x94CB, 0x85E9, 0x94CC, 0x8CA9, 0x94CD, 0x7BC4, 0x94CE, 0x91C6, 0x94CF, 0x7169, 0x94D0, 0x9812, 0x94D1, 0x98EF, + 0x94D2, 0x633D, 0x94D3, 0x6669, 0x94D4, 0x756A, 0x94D5, 0x76E4, 0x94D6, 0x78D0, 0x94D7, 0x8543, 0x94D8, 0x86EE, 0x94D9, 0x532A, + 0x94DA, 0x5351, 0x94DB, 0x5426, 0x94DC, 0x5983, 0x94DD, 0x5E87, 0x94DE, 0x5F7C, 0x94DF, 0x60B2, 0x94E0, 0x6249, 0x94E1, 0x6279, + 0x94E2, 0x62AB, 0x94E3, 0x6590, 0x94E4, 0x6BD4, 0x94E5, 0x6CCC, 0x94E6, 0x75B2, 0x94E7, 0x76AE, 0x94E8, 0x7891, 0x94E9, 0x79D8, + 0x94EA, 0x7DCB, 0x94EB, 0x7F77, 0x94EC, 0x80A5, 0x94ED, 0x88AB, 0x94EE, 0x8AB9, 0x94EF, 0x8CBB, 0x94F0, 0x907F, 0x94F1, 0x975E, + 0x94F2, 0x98DB, 0x94F3, 0x6A0B, 0x94F4, 0x7C38, 0x94F5, 0x5099, 0x94F6, 0x5C3E, 0x94F7, 0x5FAE, 0x94F8, 0x6787, 0x94F9, 0x6BD8, + 0x94FA, 0x7435, 0x94FB, 0x7709, 0x94FC, 0x7F8E, 0x9540, 0x9F3B, 0x9541, 0x67CA, 0x9542, 0x7A17, 0x9543, 0x5339, 0x9544, 0x758B, + 0x9545, 0x9AED, 0x9546, 0x5F66, 0x9547, 0x819D, 0x9548, 0x83F1, 0x9549, 0x8098, 0x954A, 0x5F3C, 0x954B, 0x5FC5, 0x954C, 0x7562, + 0x954D, 0x7B46, 0x954E, 0x903C, 0x954F, 0x6867, 0x9550, 0x59EB, 0x9551, 0x5A9B, 0x9552, 0x7D10, 0x9553, 0x767E, 0x9554, 0x8B2C, + 0x9555, 0x4FF5, 0x9556, 0x5F6A, 0x9557, 0x6A19, 0x9558, 0x6C37, 0x9559, 0x6F02, 0x955A, 0x74E2, 0x955B, 0x7968, 0x955C, 0x8868, + 0x955D, 0x8A55, 0x955E, 0x8C79, 0x955F, 0x5EDF, 0x9560, 0x63CF, 0x9561, 0x75C5, 0x9562, 0x79D2, 0x9563, 0x82D7, 0x9564, 0x9328, + 0x9565, 0x92F2, 0x9566, 0x849C, 0x9567, 0x86ED, 0x9568, 0x9C2D, 0x9569, 0x54C1, 0x956A, 0x5F6C, 0x956B, 0x658C, 0x956C, 0x6D5C, + 0x956D, 0x7015, 0x956E, 0x8CA7, 0x956F, 0x8CD3, 0x9570, 0x983B, 0x9571, 0x654F, 0x9572, 0x74F6, 0x9573, 0x4E0D, 0x9574, 0x4ED8, + 0x9575, 0x57E0, 0x9576, 0x592B, 0x9577, 0x5A66, 0x9578, 0x5BCC, 0x9579, 0x51A8, 0x957A, 0x5E03, 0x957B, 0x5E9C, 0x957C, 0x6016, + 0x957D, 0x6276, 0x957E, 0x6577, 0x9580, 0x65A7, 0x9581, 0x666E, 0x9582, 0x6D6E, 0x9583, 0x7236, 0x9584, 0x7B26, 0x9585, 0x8150, + 0x9586, 0x819A, 0x9587, 0x8299, 0x9588, 0x8B5C, 0x9589, 0x8CA0, 0x958A, 0x8CE6, 0x958B, 0x8D74, 0x958C, 0x961C, 0x958D, 0x9644, + 0x958E, 0x4FAE, 0x958F, 0x64AB, 0x9590, 0x6B66, 0x9591, 0x821E, 0x9592, 0x8461, 0x9593, 0x856A, 0x9594, 0x90E8, 0x9595, 0x5C01, + 0x9596, 0x6953, 0x9597, 0x98A8, 0x9598, 0x847A, 0x9599, 0x8557, 0x959A, 0x4F0F, 0x959B, 0x526F, 0x959C, 0x5FA9, 0x959D, 0x5E45, + 0x959E, 0x670D, 0x959F, 0x798F, 0x95A0, 0x8179, 0x95A1, 0x8907, 0x95A2, 0x8986, 0x95A3, 0x6DF5, 0x95A4, 0x5F17, 0x95A5, 0x6255, + 0x95A6, 0x6CB8, 0x95A7, 0x4ECF, 0x95A8, 0x7269, 0x95A9, 0x9B92, 0x95AA, 0x5206, 0x95AB, 0x543B, 0x95AC, 0x5674, 0x95AD, 0x58B3, + 0x95AE, 0x61A4, 0x95AF, 0x626E, 0x95B0, 0x711A, 0x95B1, 0x596E, 0x95B2, 0x7C89, 0x95B3, 0x7CDE, 0x95B4, 0x7D1B, 0x95B5, 0x96F0, + 0x95B6, 0x6587, 0x95B7, 0x805E, 0x95B8, 0x4E19, 0x95B9, 0x4F75, 0x95BA, 0x5175, 0x95BB, 0x5840, 0x95BC, 0x5E63, 0x95BD, 0x5E73, + 0x95BE, 0x5F0A, 0x95BF, 0x67C4, 0x95C0, 0x4E26, 0x95C1, 0x853D, 0x95C2, 0x9589, 0x95C3, 0x965B, 0x95C4, 0x7C73, 0x95C5, 0x9801, + 0x95C6, 0x50FB, 0x95C7, 0x58C1, 0x95C8, 0x7656, 0x95C9, 0x78A7, 0x95CA, 0x5225, 0x95CB, 0x77A5, 0x95CC, 0x8511, 0x95CD, 0x7B86, + 0x95CE, 0x504F, 0x95CF, 0x5909, 0x95D0, 0x7247, 0x95D1, 0x7BC7, 0x95D2, 0x7DE8, 0x95D3, 0x8FBA, 0x95D4, 0x8FD4, 0x95D5, 0x904D, + 0x95D6, 0x4FBF, 0x95D7, 0x52C9, 0x95D8, 0x5A29, 0x95D9, 0x5F01, 0x95DA, 0x97AD, 0x95DB, 0x4FDD, 0x95DC, 0x8217, 0x95DD, 0x92EA, + 0x95DE, 0x5703, 0x95DF, 0x6355, 0x95E0, 0x6B69, 0x95E1, 0x752B, 0x95E2, 0x88DC, 0x95E3, 0x8F14, 0x95E4, 0x7A42, 0x95E5, 0x52DF, + 0x95E6, 0x5893, 0x95E7, 0x6155, 0x95E8, 0x620A, 0x95E9, 0x66AE, 0x95EA, 0x6BCD, 0x95EB, 0x7C3F, 0x95EC, 0x83E9, 0x95ED, 0x5023, + 0x95EE, 0x4FF8, 0x95EF, 0x5305, 0x95F0, 0x5446, 0x95F1, 0x5831, 0x95F2, 0x5949, 0x95F3, 0x5B9D, 0x95F4, 0x5CF0, 0x95F5, 0x5CEF, + 0x95F6, 0x5D29, 0x95F7, 0x5E96, 0x95F8, 0x62B1, 0x95F9, 0x6367, 0x95FA, 0x653E, 0x95FB, 0x65B9, 0x95FC, 0x670B, 0x9640, 0x6CD5, + 0x9641, 0x6CE1, 0x9642, 0x70F9, 0x9643, 0x7832, 0x9644, 0x7E2B, 0x9645, 0x80DE, 0x9646, 0x82B3, 0x9647, 0x840C, 0x9648, 0x84EC, + 0x9649, 0x8702, 0x964A, 0x8912, 0x964B, 0x8A2A, 0x964C, 0x8C4A, 0x964D, 0x90A6, 0x964E, 0x92D2, 0x964F, 0x98FD, 0x9650, 0x9CF3, + 0x9651, 0x9D6C, 0x9652, 0x4E4F, 0x9653, 0x4EA1, 0x9654, 0x508D, 0x9655, 0x5256, 0x9656, 0x574A, 0x9657, 0x59A8, 0x9658, 0x5E3D, + 0x9659, 0x5FD8, 0x965A, 0x5FD9, 0x965B, 0x623F, 0x965C, 0x66B4, 0x965D, 0x671B, 0x965E, 0x67D0, 0x965F, 0x68D2, 0x9660, 0x5192, + 0x9661, 0x7D21, 0x9662, 0x80AA, 0x9663, 0x81A8, 0x9664, 0x8B00, 0x9665, 0x8C8C, 0x9666, 0x8CBF, 0x9667, 0x927E, 0x9668, 0x9632, + 0x9669, 0x5420, 0x966A, 0x982C, 0x966B, 0x5317, 0x966C, 0x50D5, 0x966D, 0x535C, 0x966E, 0x58A8, 0x966F, 0x64B2, 0x9670, 0x6734, + 0x9671, 0x7267, 0x9672, 0x7766, 0x9673, 0x7A46, 0x9674, 0x91E6, 0x9675, 0x52C3, 0x9676, 0x6CA1, 0x9677, 0x6B86, 0x9678, 0x5800, + 0x9679, 0x5E4C, 0x967A, 0x5954, 0x967B, 0x672C, 0x967C, 0x7FFB, 0x967D, 0x51E1, 0x967E, 0x76C6, 0x9680, 0x6469, 0x9681, 0x78E8, + 0x9682, 0x9B54, 0x9683, 0x9EBB, 0x9684, 0x57CB, 0x9685, 0x59B9, 0x9686, 0x6627, 0x9687, 0x679A, 0x9688, 0x6BCE, 0x9689, 0x54E9, + 0x968A, 0x69D9, 0x968B, 0x5E55, 0x968C, 0x819C, 0x968D, 0x6795, 0x968E, 0x9BAA, 0x968F, 0x67FE, 0x9690, 0x9C52, 0x9691, 0x685D, + 0x9692, 0x4EA6, 0x9693, 0x4FE3, 0x9694, 0x53C8, 0x9695, 0x62B9, 0x9696, 0x672B, 0x9697, 0x6CAB, 0x9698, 0x8FC4, 0x9699, 0x4FAD, + 0x969A, 0x7E6D, 0x969B, 0x9EBF, 0x969C, 0x4E07, 0x969D, 0x6162, 0x969E, 0x6E80, 0x969F, 0x6F2B, 0x96A0, 0x8513, 0x96A1, 0x5473, + 0x96A2, 0x672A, 0x96A3, 0x9B45, 0x96A4, 0x5DF3, 0x96A5, 0x7B95, 0x96A6, 0x5CAC, 0x96A7, 0x5BC6, 0x96A8, 0x871C, 0x96A9, 0x6E4A, + 0x96AA, 0x84D1, 0x96AB, 0x7A14, 0x96AC, 0x8108, 0x96AD, 0x5999, 0x96AE, 0x7C8D, 0x96AF, 0x6C11, 0x96B0, 0x7720, 0x96B1, 0x52D9, + 0x96B2, 0x5922, 0x96B3, 0x7121, 0x96B4, 0x725F, 0x96B5, 0x77DB, 0x96B6, 0x9727, 0x96B7, 0x9D61, 0x96B8, 0x690B, 0x96B9, 0x5A7F, + 0x96BA, 0x5A18, 0x96BB, 0x51A5, 0x96BC, 0x540D, 0x96BD, 0x547D, 0x96BE, 0x660E, 0x96BF, 0x76DF, 0x96C0, 0x8FF7, 0x96C1, 0x9298, + 0x96C2, 0x9CF4, 0x96C3, 0x59EA, 0x96C4, 0x725D, 0x96C5, 0x6EC5, 0x96C6, 0x514D, 0x96C7, 0x68C9, 0x96C8, 0x7DBF, 0x96C9, 0x7DEC, + 0x96CA, 0x9762, 0x96CB, 0x9EBA, 0x96CC, 0x6478, 0x96CD, 0x6A21, 0x96CE, 0x8302, 0x96CF, 0x5984, 0x96D0, 0x5B5F, 0x96D1, 0x6BDB, + 0x96D2, 0x731B, 0x96D3, 0x76F2, 0x96D4, 0x7DB2, 0x96D5, 0x8017, 0x96D6, 0x8499, 0x96D7, 0x5132, 0x96D8, 0x6728, 0x96D9, 0x9ED9, + 0x96DA, 0x76EE, 0x96DB, 0x6762, 0x96DC, 0x52FF, 0x96DD, 0x9905, 0x96DE, 0x5C24, 0x96DF, 0x623B, 0x96E0, 0x7C7E, 0x96E1, 0x8CB0, + 0x96E2, 0x554F, 0x96E3, 0x60B6, 0x96E4, 0x7D0B, 0x96E5, 0x9580, 0x96E6, 0x5301, 0x96E7, 0x4E5F, 0x96E8, 0x51B6, 0x96E9, 0x591C, + 0x96EA, 0x723A, 0x96EB, 0x8036, 0x96EC, 0x91CE, 0x96ED, 0x5F25, 0x96EE, 0x77E2, 0x96EF, 0x5384, 0x96F0, 0x5F79, 0x96F1, 0x7D04, + 0x96F2, 0x85AC, 0x96F3, 0x8A33, 0x96F4, 0x8E8D, 0x96F5, 0x9756, 0x96F6, 0x67F3, 0x96F7, 0x85AE, 0x96F8, 0x9453, 0x96F9, 0x6109, + 0x96FA, 0x6108, 0x96FB, 0x6CB9, 0x96FC, 0x7652, 0x9740, 0x8AED, 0x9741, 0x8F38, 0x9742, 0x552F, 0x9743, 0x4F51, 0x9744, 0x512A, + 0x9745, 0x52C7, 0x9746, 0x53CB, 0x9747, 0x5BA5, 0x9748, 0x5E7D, 0x9749, 0x60A0, 0x974A, 0x6182, 0x974B, 0x63D6, 0x974C, 0x6709, + 0x974D, 0x67DA, 0x974E, 0x6E67, 0x974F, 0x6D8C, 0x9750, 0x7336, 0x9751, 0x7337, 0x9752, 0x7531, 0x9753, 0x7950, 0x9754, 0x88D5, + 0x9755, 0x8A98, 0x9756, 0x904A, 0x9757, 0x9091, 0x9758, 0x90F5, 0x9759, 0x96C4, 0x975A, 0x878D, 0x975B, 0x5915, 0x975C, 0x4E88, + 0x975D, 0x4F59, 0x975E, 0x4E0E, 0x975F, 0x8A89, 0x9760, 0x8F3F, 0x9761, 0x9810, 0x9762, 0x50AD, 0x9763, 0x5E7C, 0x9764, 0x5996, + 0x9765, 0x5BB9, 0x9766, 0x5EB8, 0x9767, 0x63DA, 0x9768, 0x63FA, 0x9769, 0x64C1, 0x976A, 0x66DC, 0x976B, 0x694A, 0x976C, 0x69D8, + 0x976D, 0x6D0B, 0x976E, 0x6EB6, 0x976F, 0x7194, 0x9770, 0x7528, 0x9771, 0x7AAF, 0x9772, 0x7F8A, 0x9773, 0x8000, 0x9774, 0x8449, + 0x9775, 0x84C9, 0x9776, 0x8981, 0x9777, 0x8B21, 0x9778, 0x8E0A, 0x9779, 0x9065, 0x977A, 0x967D, 0x977B, 0x990A, 0x977C, 0x617E, + 0x977D, 0x6291, 0x977E, 0x6B32, 0x9780, 0x6C83, 0x9781, 0x6D74, 0x9782, 0x7FCC, 0x9783, 0x7FFC, 0x9784, 0x6DC0, 0x9785, 0x7F85, + 0x9786, 0x87BA, 0x9787, 0x88F8, 0x9788, 0x6765, 0x9789, 0x83B1, 0x978A, 0x983C, 0x978B, 0x96F7, 0x978C, 0x6D1B, 0x978D, 0x7D61, + 0x978E, 0x843D, 0x978F, 0x916A, 0x9790, 0x4E71, 0x9791, 0x5375, 0x9792, 0x5D50, 0x9793, 0x6B04, 0x9794, 0x6FEB, 0x9795, 0x85CD, + 0x9796, 0x862D, 0x9797, 0x89A7, 0x9798, 0x5229, 0x9799, 0x540F, 0x979A, 0x5C65, 0x979B, 0x674E, 0x979C, 0x68A8, 0x979D, 0x7406, + 0x979E, 0x7483, 0x979F, 0x75E2, 0x97A0, 0x88CF, 0x97A1, 0x88E1, 0x97A2, 0x91CC, 0x97A3, 0x96E2, 0x97A4, 0x9678, 0x97A5, 0x5F8B, + 0x97A6, 0x7387, 0x97A7, 0x7ACB, 0x97A8, 0x844E, 0x97A9, 0x63A0, 0x97AA, 0x7565, 0x97AB, 0x5289, 0x97AC, 0x6D41, 0x97AD, 0x6E9C, + 0x97AE, 0x7409, 0x97AF, 0x7559, 0x97B0, 0x786B, 0x97B1, 0x7C92, 0x97B2, 0x9686, 0x97B3, 0x7ADC, 0x97B4, 0x9F8D, 0x97B5, 0x4FB6, + 0x97B6, 0x616E, 0x97B7, 0x65C5, 0x97B8, 0x865C, 0x97B9, 0x4E86, 0x97BA, 0x4EAE, 0x97BB, 0x50DA, 0x97BC, 0x4E21, 0x97BD, 0x51CC, + 0x97BE, 0x5BEE, 0x97BF, 0x6599, 0x97C0, 0x6881, 0x97C1, 0x6DBC, 0x97C2, 0x731F, 0x97C3, 0x7642, 0x97C4, 0x77AD, 0x97C5, 0x7A1C, + 0x97C6, 0x7CE7, 0x97C7, 0x826F, 0x97C8, 0x8AD2, 0x97C9, 0x907C, 0x97CA, 0x91CF, 0x97CB, 0x9675, 0x97CC, 0x9818, 0x97CD, 0x529B, + 0x97CE, 0x7DD1, 0x97CF, 0x502B, 0x97D0, 0x5398, 0x97D1, 0x6797, 0x97D2, 0x6DCB, 0x97D3, 0x71D0, 0x97D4, 0x7433, 0x97D5, 0x81E8, + 0x97D6, 0x8F2A, 0x97D7, 0x96A3, 0x97D8, 0x9C57, 0x97D9, 0x9E9F, 0x97DA, 0x7460, 0x97DB, 0x5841, 0x97DC, 0x6D99, 0x97DD, 0x7D2F, + 0x97DE, 0x985E, 0x97DF, 0x4EE4, 0x97E0, 0x4F36, 0x97E1, 0x4F8B, 0x97E2, 0x51B7, 0x97E3, 0x52B1, 0x97E4, 0x5DBA, 0x97E5, 0x601C, + 0x97E6, 0x73B2, 0x97E7, 0x793C, 0x97E8, 0x82D3, 0x97E9, 0x9234, 0x97EA, 0x96B7, 0x97EB, 0x96F6, 0x97EC, 0x970A, 0x97ED, 0x9E97, + 0x97EE, 0x9F62, 0x97EF, 0x66A6, 0x97F0, 0x6B74, 0x97F1, 0x5217, 0x97F2, 0x52A3, 0x97F3, 0x70C8, 0x97F4, 0x88C2, 0x97F5, 0x5EC9, + 0x97F6, 0x604B, 0x97F7, 0x6190, 0x97F8, 0x6F23, 0x97F9, 0x7149, 0x97FA, 0x7C3E, 0x97FB, 0x7DF4, 0x97FC, 0x806F, 0x9840, 0x84EE, + 0x9841, 0x9023, 0x9842, 0x932C, 0x9843, 0x5442, 0x9844, 0x9B6F, 0x9845, 0x6AD3, 0x9846, 0x7089, 0x9847, 0x8CC2, 0x9848, 0x8DEF, + 0x9849, 0x9732, 0x984A, 0x52B4, 0x984B, 0x5A41, 0x984C, 0x5ECA, 0x984D, 0x5F04, 0x984E, 0x6717, 0x984F, 0x697C, 0x9850, 0x6994, + 0x9851, 0x6D6A, 0x9852, 0x6F0F, 0x9853, 0x7262, 0x9854, 0x72FC, 0x9855, 0x7BED, 0x9856, 0x8001, 0x9857, 0x807E, 0x9858, 0x874B, + 0x9859, 0x90CE, 0x985A, 0x516D, 0x985B, 0x9E93, 0x985C, 0x7984, 0x985D, 0x808B, 0x985E, 0x9332, 0x985F, 0x8AD6, 0x9860, 0x502D, + 0x9861, 0x548C, 0x9862, 0x8A71, 0x9863, 0x6B6A, 0x9864, 0x8CC4, 0x9865, 0x8107, 0x9866, 0x60D1, 0x9867, 0x67A0, 0x9868, 0x9DF2, + 0x9869, 0x4E99, 0x986A, 0x4E98, 0x986B, 0x9C10, 0x986C, 0x8A6B, 0x986D, 0x85C1, 0x986E, 0x8568, 0x986F, 0x6900, 0x9870, 0x6E7E, + 0x9871, 0x7897, 0x9872, 0x8155, 0x989F, 0x5F0C, 0x98A0, 0x4E10, 0x98A1, 0x4E15, 0x98A2, 0x4E2A, 0x98A3, 0x4E31, 0x98A4, 0x4E36, + 0x98A5, 0x4E3C, 0x98A6, 0x4E3F, 0x98A7, 0x4E42, 0x98A8, 0x4E56, 0x98A9, 0x4E58, 0x98AA, 0x4E82, 0x98AB, 0x4E85, 0x98AC, 0x8C6B, + 0x98AD, 0x4E8A, 0x98AE, 0x8212, 0x98AF, 0x5F0D, 0x98B0, 0x4E8E, 0x98B1, 0x4E9E, 0x98B2, 0x4E9F, 0x98B3, 0x4EA0, 0x98B4, 0x4EA2, + 0x98B5, 0x4EB0, 0x98B6, 0x4EB3, 0x98B7, 0x4EB6, 0x98B8, 0x4ECE, 0x98B9, 0x4ECD, 0x98BA, 0x4EC4, 0x98BB, 0x4EC6, 0x98BC, 0x4EC2, + 0x98BD, 0x4ED7, 0x98BE, 0x4EDE, 0x98BF, 0x4EED, 0x98C0, 0x4EDF, 0x98C1, 0x4EF7, 0x98C2, 0x4F09, 0x98C3, 0x4F5A, 0x98C4, 0x4F30, + 0x98C5, 0x4F5B, 0x98C6, 0x4F5D, 0x98C7, 0x4F57, 0x98C8, 0x4F47, 0x98C9, 0x4F76, 0x98CA, 0x4F88, 0x98CB, 0x4F8F, 0x98CC, 0x4F98, + 0x98CD, 0x4F7B, 0x98CE, 0x4F69, 0x98CF, 0x4F70, 0x98D0, 0x4F91, 0x98D1, 0x4F6F, 0x98D2, 0x4F86, 0x98D3, 0x4F96, 0x98D4, 0x5118, + 0x98D5, 0x4FD4, 0x98D6, 0x4FDF, 0x98D7, 0x4FCE, 0x98D8, 0x4FD8, 0x98D9, 0x4FDB, 0x98DA, 0x4FD1, 0x98DB, 0x4FDA, 0x98DC, 0x4FD0, + 0x98DD, 0x4FE4, 0x98DE, 0x4FE5, 0x98DF, 0x501A, 0x98E0, 0x5028, 0x98E1, 0x5014, 0x98E2, 0x502A, 0x98E3, 0x5025, 0x98E4, 0x5005, + 0x98E5, 0x4F1C, 0x98E6, 0x4FF6, 0x98E7, 0x5021, 0x98E8, 0x5029, 0x98E9, 0x502C, 0x98EA, 0x4FFE, 0x98EB, 0x4FEF, 0x98EC, 0x5011, + 0x98ED, 0x5006, 0x98EE, 0x5043, 0x98EF, 0x5047, 0x98F0, 0x6703, 0x98F1, 0x5055, 0x98F2, 0x5050, 0x98F3, 0x5048, 0x98F4, 0x505A, + 0x98F5, 0x5056, 0x98F6, 0x506C, 0x98F7, 0x5078, 0x98F8, 0x5080, 0x98F9, 0x509A, 0x98FA, 0x5085, 0x98FB, 0x50B4, 0x98FC, 0x50B2, + 0x9940, 0x50C9, 0x9941, 0x50CA, 0x9942, 0x50B3, 0x9943, 0x50C2, 0x9944, 0x50D6, 0x9945, 0x50DE, 0x9946, 0x50E5, 0x9947, 0x50ED, + 0x9948, 0x50E3, 0x9949, 0x50EE, 0x994A, 0x50F9, 0x994B, 0x50F5, 0x994C, 0x5109, 0x994D, 0x5101, 0x994E, 0x5102, 0x994F, 0x5116, + 0x9950, 0x5115, 0x9951, 0x5114, 0x9952, 0x511A, 0x9953, 0x5121, 0x9954, 0x513A, 0x9955, 0x5137, 0x9956, 0x513C, 0x9957, 0x513B, + 0x9958, 0x513F, 0x9959, 0x5140, 0x995A, 0x5152, 0x995B, 0x514C, 0x995C, 0x5154, 0x995D, 0x5162, 0x995E, 0x7AF8, 0x995F, 0x5169, + 0x9960, 0x516A, 0x9961, 0x516E, 0x9962, 0x5180, 0x9963, 0x5182, 0x9964, 0x56D8, 0x9965, 0x518C, 0x9966, 0x5189, 0x9967, 0x518F, + 0x9968, 0x5191, 0x9969, 0x5193, 0x996A, 0x5195, 0x996B, 0x5196, 0x996C, 0x51A4, 0x996D, 0x51A6, 0x996E, 0x51A2, 0x996F, 0x51A9, + 0x9970, 0x51AA, 0x9971, 0x51AB, 0x9972, 0x51B3, 0x9973, 0x51B1, 0x9974, 0x51B2, 0x9975, 0x51B0, 0x9976, 0x51B5, 0x9977, 0x51BD, + 0x9978, 0x51C5, 0x9979, 0x51C9, 0x997A, 0x51DB, 0x997B, 0x51E0, 0x997C, 0x8655, 0x997D, 0x51E9, 0x997E, 0x51ED, 0x9980, 0x51F0, + 0x9981, 0x51F5, 0x9982, 0x51FE, 0x9983, 0x5204, 0x9984, 0x520B, 0x9985, 0x5214, 0x9986, 0x520E, 0x9987, 0x5227, 0x9988, 0x522A, + 0x9989, 0x522E, 0x998A, 0x5233, 0x998B, 0x5239, 0x998C, 0x524F, 0x998D, 0x5244, 0x998E, 0x524B, 0x998F, 0x524C, 0x9990, 0x525E, + 0x9991, 0x5254, 0x9992, 0x526A, 0x9993, 0x5274, 0x9994, 0x5269, 0x9995, 0x5273, 0x9996, 0x527F, 0x9997, 0x527D, 0x9998, 0x528D, + 0x9999, 0x5294, 0x999A, 0x5292, 0x999B, 0x5271, 0x999C, 0x5288, 0x999D, 0x5291, 0x999E, 0x8FA8, 0x999F, 0x8FA7, 0x99A0, 0x52AC, + 0x99A1, 0x52AD, 0x99A2, 0x52BC, 0x99A3, 0x52B5, 0x99A4, 0x52C1, 0x99A5, 0x52CD, 0x99A6, 0x52D7, 0x99A7, 0x52DE, 0x99A8, 0x52E3, + 0x99A9, 0x52E6, 0x99AA, 0x98ED, 0x99AB, 0x52E0, 0x99AC, 0x52F3, 0x99AD, 0x52F5, 0x99AE, 0x52F8, 0x99AF, 0x52F9, 0x99B0, 0x5306, + 0x99B1, 0x5308, 0x99B2, 0x7538, 0x99B3, 0x530D, 0x99B4, 0x5310, 0x99B5, 0x530F, 0x99B6, 0x5315, 0x99B7, 0x531A, 0x99B8, 0x5323, + 0x99B9, 0x532F, 0x99BA, 0x5331, 0x99BB, 0x5333, 0x99BC, 0x5338, 0x99BD, 0x5340, 0x99BE, 0x5346, 0x99BF, 0x5345, 0x99C0, 0x4E17, + 0x99C1, 0x5349, 0x99C2, 0x534D, 0x99C3, 0x51D6, 0x99C4, 0x535E, 0x99C5, 0x5369, 0x99C6, 0x536E, 0x99C7, 0x5918, 0x99C8, 0x537B, + 0x99C9, 0x5377, 0x99CA, 0x5382, 0x99CB, 0x5396, 0x99CC, 0x53A0, 0x99CD, 0x53A6, 0x99CE, 0x53A5, 0x99CF, 0x53AE, 0x99D0, 0x53B0, + 0x99D1, 0x53B6, 0x99D2, 0x53C3, 0x99D3, 0x7C12, 0x99D4, 0x96D9, 0x99D5, 0x53DF, 0x99D6, 0x66FC, 0x99D7, 0x71EE, 0x99D8, 0x53EE, + 0x99D9, 0x53E8, 0x99DA, 0x53ED, 0x99DB, 0x53FA, 0x99DC, 0x5401, 0x99DD, 0x543D, 0x99DE, 0x5440, 0x99DF, 0x542C, 0x99E0, 0x542D, + 0x99E1, 0x543C, 0x99E2, 0x542E, 0x99E3, 0x5436, 0x99E4, 0x5429, 0x99E5, 0x541D, 0x99E6, 0x544E, 0x99E7, 0x548F, 0x99E8, 0x5475, + 0x99E9, 0x548E, 0x99EA, 0x545F, 0x99EB, 0x5471, 0x99EC, 0x5477, 0x99ED, 0x5470, 0x99EE, 0x5492, 0x99EF, 0x547B, 0x99F0, 0x5480, + 0x99F1, 0x5476, 0x99F2, 0x5484, 0x99F3, 0x5490, 0x99F4, 0x5486, 0x99F5, 0x54C7, 0x99F6, 0x54A2, 0x99F7, 0x54B8, 0x99F8, 0x54A5, + 0x99F9, 0x54AC, 0x99FA, 0x54C4, 0x99FB, 0x54C8, 0x99FC, 0x54A8, 0x9A40, 0x54AB, 0x9A41, 0x54C2, 0x9A42, 0x54A4, 0x9A43, 0x54BE, + 0x9A44, 0x54BC, 0x9A45, 0x54D8, 0x9A46, 0x54E5, 0x9A47, 0x54E6, 0x9A48, 0x550F, 0x9A49, 0x5514, 0x9A4A, 0x54FD, 0x9A4B, 0x54EE, + 0x9A4C, 0x54ED, 0x9A4D, 0x54FA, 0x9A4E, 0x54E2, 0x9A4F, 0x5539, 0x9A50, 0x5540, 0x9A51, 0x5563, 0x9A52, 0x554C, 0x9A53, 0x552E, + 0x9A54, 0x555C, 0x9A55, 0x5545, 0x9A56, 0x5556, 0x9A57, 0x5557, 0x9A58, 0x5538, 0x9A59, 0x5533, 0x9A5A, 0x555D, 0x9A5B, 0x5599, + 0x9A5C, 0x5580, 0x9A5D, 0x54AF, 0x9A5E, 0x558A, 0x9A5F, 0x559F, 0x9A60, 0x557B, 0x9A61, 0x557E, 0x9A62, 0x5598, 0x9A63, 0x559E, + 0x9A64, 0x55AE, 0x9A65, 0x557C, 0x9A66, 0x5583, 0x9A67, 0x55A9, 0x9A68, 0x5587, 0x9A69, 0x55A8, 0x9A6A, 0x55DA, 0x9A6B, 0x55C5, + 0x9A6C, 0x55DF, 0x9A6D, 0x55C4, 0x9A6E, 0x55DC, 0x9A6F, 0x55E4, 0x9A70, 0x55D4, 0x9A71, 0x5614, 0x9A72, 0x55F7, 0x9A73, 0x5616, + 0x9A74, 0x55FE, 0x9A75, 0x55FD, 0x9A76, 0x561B, 0x9A77, 0x55F9, 0x9A78, 0x564E, 0x9A79, 0x5650, 0x9A7A, 0x71DF, 0x9A7B, 0x5634, + 0x9A7C, 0x5636, 0x9A7D, 0x5632, 0x9A7E, 0x5638, 0x9A80, 0x566B, 0x9A81, 0x5664, 0x9A82, 0x562F, 0x9A83, 0x566C, 0x9A84, 0x566A, + 0x9A85, 0x5686, 0x9A86, 0x5680, 0x9A87, 0x568A, 0x9A88, 0x56A0, 0x9A89, 0x5694, 0x9A8A, 0x568F, 0x9A8B, 0x56A5, 0x9A8C, 0x56AE, + 0x9A8D, 0x56B6, 0x9A8E, 0x56B4, 0x9A8F, 0x56C2, 0x9A90, 0x56BC, 0x9A91, 0x56C1, 0x9A92, 0x56C3, 0x9A93, 0x56C0, 0x9A94, 0x56C8, + 0x9A95, 0x56CE, 0x9A96, 0x56D1, 0x9A97, 0x56D3, 0x9A98, 0x56D7, 0x9A99, 0x56EE, 0x9A9A, 0x56F9, 0x9A9B, 0x5700, 0x9A9C, 0x56FF, + 0x9A9D, 0x5704, 0x9A9E, 0x5709, 0x9A9F, 0x5708, 0x9AA0, 0x570B, 0x9AA1, 0x570D, 0x9AA2, 0x5713, 0x9AA3, 0x5718, 0x9AA4, 0x5716, + 0x9AA5, 0x55C7, 0x9AA6, 0x571C, 0x9AA7, 0x5726, 0x9AA8, 0x5737, 0x9AA9, 0x5738, 0x9AAA, 0x574E, 0x9AAB, 0x573B, 0x9AAC, 0x5740, + 0x9AAD, 0x574F, 0x9AAE, 0x5769, 0x9AAF, 0x57C0, 0x9AB0, 0x5788, 0x9AB1, 0x5761, 0x9AB2, 0x577F, 0x9AB3, 0x5789, 0x9AB4, 0x5793, + 0x9AB5, 0x57A0, 0x9AB6, 0x57B3, 0x9AB7, 0x57A4, 0x9AB8, 0x57AA, 0x9AB9, 0x57B0, 0x9ABA, 0x57C3, 0x9ABB, 0x57C6, 0x9ABC, 0x57D4, + 0x9ABD, 0x57D2, 0x9ABE, 0x57D3, 0x9ABF, 0x580A, 0x9AC0, 0x57D6, 0x9AC1, 0x57E3, 0x9AC2, 0x580B, 0x9AC3, 0x5819, 0x9AC4, 0x581D, + 0x9AC5, 0x5872, 0x9AC6, 0x5821, 0x9AC7, 0x5862, 0x9AC8, 0x584B, 0x9AC9, 0x5870, 0x9ACA, 0x6BC0, 0x9ACB, 0x5852, 0x9ACC, 0x583D, + 0x9ACD, 0x5879, 0x9ACE, 0x5885, 0x9ACF, 0x58B9, 0x9AD0, 0x589F, 0x9AD1, 0x58AB, 0x9AD2, 0x58BA, 0x9AD3, 0x58DE, 0x9AD4, 0x58BB, + 0x9AD5, 0x58B8, 0x9AD6, 0x58AE, 0x9AD7, 0x58C5, 0x9AD8, 0x58D3, 0x9AD9, 0x58D1, 0x9ADA, 0x58D7, 0x9ADB, 0x58D9, 0x9ADC, 0x58D8, + 0x9ADD, 0x58E5, 0x9ADE, 0x58DC, 0x9ADF, 0x58E4, 0x9AE0, 0x58DF, 0x9AE1, 0x58EF, 0x9AE2, 0x58FA, 0x9AE3, 0x58F9, 0x9AE4, 0x58FB, + 0x9AE5, 0x58FC, 0x9AE6, 0x58FD, 0x9AE7, 0x5902, 0x9AE8, 0x590A, 0x9AE9, 0x5910, 0x9AEA, 0x591B, 0x9AEB, 0x68A6, 0x9AEC, 0x5925, + 0x9AED, 0x592C, 0x9AEE, 0x592D, 0x9AEF, 0x5932, 0x9AF0, 0x5938, 0x9AF1, 0x593E, 0x9AF2, 0x7AD2, 0x9AF3, 0x5955, 0x9AF4, 0x5950, + 0x9AF5, 0x594E, 0x9AF6, 0x595A, 0x9AF7, 0x5958, 0x9AF8, 0x5962, 0x9AF9, 0x5960, 0x9AFA, 0x5967, 0x9AFB, 0x596C, 0x9AFC, 0x5969, + 0x9B40, 0x5978, 0x9B41, 0x5981, 0x9B42, 0x599D, 0x9B43, 0x4F5E, 0x9B44, 0x4FAB, 0x9B45, 0x59A3, 0x9B46, 0x59B2, 0x9B47, 0x59C6, + 0x9B48, 0x59E8, 0x9B49, 0x59DC, 0x9B4A, 0x598D, 0x9B4B, 0x59D9, 0x9B4C, 0x59DA, 0x9B4D, 0x5A25, 0x9B4E, 0x5A1F, 0x9B4F, 0x5A11, + 0x9B50, 0x5A1C, 0x9B51, 0x5A09, 0x9B52, 0x5A1A, 0x9B53, 0x5A40, 0x9B54, 0x5A6C, 0x9B55, 0x5A49, 0x9B56, 0x5A35, 0x9B57, 0x5A36, + 0x9B58, 0x5A62, 0x9B59, 0x5A6A, 0x9B5A, 0x5A9A, 0x9B5B, 0x5ABC, 0x9B5C, 0x5ABE, 0x9B5D, 0x5ACB, 0x9B5E, 0x5AC2, 0x9B5F, 0x5ABD, + 0x9B60, 0x5AE3, 0x9B61, 0x5AD7, 0x9B62, 0x5AE6, 0x9B63, 0x5AE9, 0x9B64, 0x5AD6, 0x9B65, 0x5AFA, 0x9B66, 0x5AFB, 0x9B67, 0x5B0C, + 0x9B68, 0x5B0B, 0x9B69, 0x5B16, 0x9B6A, 0x5B32, 0x9B6B, 0x5AD0, 0x9B6C, 0x5B2A, 0x9B6D, 0x5B36, 0x9B6E, 0x5B3E, 0x9B6F, 0x5B43, + 0x9B70, 0x5B45, 0x9B71, 0x5B40, 0x9B72, 0x5B51, 0x9B73, 0x5B55, 0x9B74, 0x5B5A, 0x9B75, 0x5B5B, 0x9B76, 0x5B65, 0x9B77, 0x5B69, + 0x9B78, 0x5B70, 0x9B79, 0x5B73, 0x9B7A, 0x5B75, 0x9B7B, 0x5B78, 0x9B7C, 0x6588, 0x9B7D, 0x5B7A, 0x9B7E, 0x5B80, 0x9B80, 0x5B83, + 0x9B81, 0x5BA6, 0x9B82, 0x5BB8, 0x9B83, 0x5BC3, 0x9B84, 0x5BC7, 0x9B85, 0x5BC9, 0x9B86, 0x5BD4, 0x9B87, 0x5BD0, 0x9B88, 0x5BE4, + 0x9B89, 0x5BE6, 0x9B8A, 0x5BE2, 0x9B8B, 0x5BDE, 0x9B8C, 0x5BE5, 0x9B8D, 0x5BEB, 0x9B8E, 0x5BF0, 0x9B8F, 0x5BF6, 0x9B90, 0x5BF3, + 0x9B91, 0x5C05, 0x9B92, 0x5C07, 0x9B93, 0x5C08, 0x9B94, 0x5C0D, 0x9B95, 0x5C13, 0x9B96, 0x5C20, 0x9B97, 0x5C22, 0x9B98, 0x5C28, + 0x9B99, 0x5C38, 0x9B9A, 0x5C39, 0x9B9B, 0x5C41, 0x9B9C, 0x5C46, 0x9B9D, 0x5C4E, 0x9B9E, 0x5C53, 0x9B9F, 0x5C50, 0x9BA0, 0x5C4F, + 0x9BA1, 0x5B71, 0x9BA2, 0x5C6C, 0x9BA3, 0x5C6E, 0x9BA4, 0x4E62, 0x9BA5, 0x5C76, 0x9BA6, 0x5C79, 0x9BA7, 0x5C8C, 0x9BA8, 0x5C91, + 0x9BA9, 0x5C94, 0x9BAA, 0x599B, 0x9BAB, 0x5CAB, 0x9BAC, 0x5CBB, 0x9BAD, 0x5CB6, 0x9BAE, 0x5CBC, 0x9BAF, 0x5CB7, 0x9BB0, 0x5CC5, + 0x9BB1, 0x5CBE, 0x9BB2, 0x5CC7, 0x9BB3, 0x5CD9, 0x9BB4, 0x5CE9, 0x9BB5, 0x5CFD, 0x9BB6, 0x5CFA, 0x9BB7, 0x5CED, 0x9BB8, 0x5D8C, + 0x9BB9, 0x5CEA, 0x9BBA, 0x5D0B, 0x9BBB, 0x5D15, 0x9BBC, 0x5D17, 0x9BBD, 0x5D5C, 0x9BBE, 0x5D1F, 0x9BBF, 0x5D1B, 0x9BC0, 0x5D11, + 0x9BC1, 0x5D14, 0x9BC2, 0x5D22, 0x9BC3, 0x5D1A, 0x9BC4, 0x5D19, 0x9BC5, 0x5D18, 0x9BC6, 0x5D4C, 0x9BC7, 0x5D52, 0x9BC8, 0x5D4E, + 0x9BC9, 0x5D4B, 0x9BCA, 0x5D6C, 0x9BCB, 0x5D73, 0x9BCC, 0x5D76, 0x9BCD, 0x5D87, 0x9BCE, 0x5D84, 0x9BCF, 0x5D82, 0x9BD0, 0x5DA2, + 0x9BD1, 0x5D9D, 0x9BD2, 0x5DAC, 0x9BD3, 0x5DAE, 0x9BD4, 0x5DBD, 0x9BD5, 0x5D90, 0x9BD6, 0x5DB7, 0x9BD7, 0x5DBC, 0x9BD8, 0x5DC9, + 0x9BD9, 0x5DCD, 0x9BDA, 0x5DD3, 0x9BDB, 0x5DD2, 0x9BDC, 0x5DD6, 0x9BDD, 0x5DDB, 0x9BDE, 0x5DEB, 0x9BDF, 0x5DF2, 0x9BE0, 0x5DF5, + 0x9BE1, 0x5E0B, 0x9BE2, 0x5E1A, 0x9BE3, 0x5E19, 0x9BE4, 0x5E11, 0x9BE5, 0x5E1B, 0x9BE6, 0x5E36, 0x9BE7, 0x5E37, 0x9BE8, 0x5E44, + 0x9BE9, 0x5E43, 0x9BEA, 0x5E40, 0x9BEB, 0x5E4E, 0x9BEC, 0x5E57, 0x9BED, 0x5E54, 0x9BEE, 0x5E5F, 0x9BEF, 0x5E62, 0x9BF0, 0x5E64, + 0x9BF1, 0x5E47, 0x9BF2, 0x5E75, 0x9BF3, 0x5E76, 0x9BF4, 0x5E7A, 0x9BF5, 0x9EBC, 0x9BF6, 0x5E7F, 0x9BF7, 0x5EA0, 0x9BF8, 0x5EC1, + 0x9BF9, 0x5EC2, 0x9BFA, 0x5EC8, 0x9BFB, 0x5ED0, 0x9BFC, 0x5ECF, 0x9C40, 0x5ED6, 0x9C41, 0x5EE3, 0x9C42, 0x5EDD, 0x9C43, 0x5EDA, + 0x9C44, 0x5EDB, 0x9C45, 0x5EE2, 0x9C46, 0x5EE1, 0x9C47, 0x5EE8, 0x9C48, 0x5EE9, 0x9C49, 0x5EEC, 0x9C4A, 0x5EF1, 0x9C4B, 0x5EF3, + 0x9C4C, 0x5EF0, 0x9C4D, 0x5EF4, 0x9C4E, 0x5EF8, 0x9C4F, 0x5EFE, 0x9C50, 0x5F03, 0x9C51, 0x5F09, 0x9C52, 0x5F5D, 0x9C53, 0x5F5C, + 0x9C54, 0x5F0B, 0x9C55, 0x5F11, 0x9C56, 0x5F16, 0x9C57, 0x5F29, 0x9C58, 0x5F2D, 0x9C59, 0x5F38, 0x9C5A, 0x5F41, 0x9C5B, 0x5F48, + 0x9C5C, 0x5F4C, 0x9C5D, 0x5F4E, 0x9C5E, 0x5F2F, 0x9C5F, 0x5F51, 0x9C60, 0x5F56, 0x9C61, 0x5F57, 0x9C62, 0x5F59, 0x9C63, 0x5F61, + 0x9C64, 0x5F6D, 0x9C65, 0x5F73, 0x9C66, 0x5F77, 0x9C67, 0x5F83, 0x9C68, 0x5F82, 0x9C69, 0x5F7F, 0x9C6A, 0x5F8A, 0x9C6B, 0x5F88, + 0x9C6C, 0x5F91, 0x9C6D, 0x5F87, 0x9C6E, 0x5F9E, 0x9C6F, 0x5F99, 0x9C70, 0x5F98, 0x9C71, 0x5FA0, 0x9C72, 0x5FA8, 0x9C73, 0x5FAD, + 0x9C74, 0x5FBC, 0x9C75, 0x5FD6, 0x9C76, 0x5FFB, 0x9C77, 0x5FE4, 0x9C78, 0x5FF8, 0x9C79, 0x5FF1, 0x9C7A, 0x5FDD, 0x9C7B, 0x60B3, + 0x9C7C, 0x5FFF, 0x9C7D, 0x6021, 0x9C7E, 0x6060, 0x9C80, 0x6019, 0x9C81, 0x6010, 0x9C82, 0x6029, 0x9C83, 0x600E, 0x9C84, 0x6031, + 0x9C85, 0x601B, 0x9C86, 0x6015, 0x9C87, 0x602B, 0x9C88, 0x6026, 0x9C89, 0x600F, 0x9C8A, 0x603A, 0x9C8B, 0x605A, 0x9C8C, 0x6041, + 0x9C8D, 0x606A, 0x9C8E, 0x6077, 0x9C8F, 0x605F, 0x9C90, 0x604A, 0x9C91, 0x6046, 0x9C92, 0x604D, 0x9C93, 0x6063, 0x9C94, 0x6043, + 0x9C95, 0x6064, 0x9C96, 0x6042, 0x9C97, 0x606C, 0x9C98, 0x606B, 0x9C99, 0x6059, 0x9C9A, 0x6081, 0x9C9B, 0x608D, 0x9C9C, 0x60E7, + 0x9C9D, 0x6083, 0x9C9E, 0x609A, 0x9C9F, 0x6084, 0x9CA0, 0x609B, 0x9CA1, 0x6096, 0x9CA2, 0x6097, 0x9CA3, 0x6092, 0x9CA4, 0x60A7, + 0x9CA5, 0x608B, 0x9CA6, 0x60E1, 0x9CA7, 0x60B8, 0x9CA8, 0x60E0, 0x9CA9, 0x60D3, 0x9CAA, 0x60B4, 0x9CAB, 0x5FF0, 0x9CAC, 0x60BD, + 0x9CAD, 0x60C6, 0x9CAE, 0x60B5, 0x9CAF, 0x60D8, 0x9CB0, 0x614D, 0x9CB1, 0x6115, 0x9CB2, 0x6106, 0x9CB3, 0x60F6, 0x9CB4, 0x60F7, + 0x9CB5, 0x6100, 0x9CB6, 0x60F4, 0x9CB7, 0x60FA, 0x9CB8, 0x6103, 0x9CB9, 0x6121, 0x9CBA, 0x60FB, 0x9CBB, 0x60F1, 0x9CBC, 0x610D, + 0x9CBD, 0x610E, 0x9CBE, 0x6147, 0x9CBF, 0x613E, 0x9CC0, 0x6128, 0x9CC1, 0x6127, 0x9CC2, 0x614A, 0x9CC3, 0x613F, 0x9CC4, 0x613C, + 0x9CC5, 0x612C, 0x9CC6, 0x6134, 0x9CC7, 0x613D, 0x9CC8, 0x6142, 0x9CC9, 0x6144, 0x9CCA, 0x6173, 0x9CCB, 0x6177, 0x9CCC, 0x6158, + 0x9CCD, 0x6159, 0x9CCE, 0x615A, 0x9CCF, 0x616B, 0x9CD0, 0x6174, 0x9CD1, 0x616F, 0x9CD2, 0x6165, 0x9CD3, 0x6171, 0x9CD4, 0x615F, + 0x9CD5, 0x615D, 0x9CD6, 0x6153, 0x9CD7, 0x6175, 0x9CD8, 0x6199, 0x9CD9, 0x6196, 0x9CDA, 0x6187, 0x9CDB, 0x61AC, 0x9CDC, 0x6194, + 0x9CDD, 0x619A, 0x9CDE, 0x618A, 0x9CDF, 0x6191, 0x9CE0, 0x61AB, 0x9CE1, 0x61AE, 0x9CE2, 0x61CC, 0x9CE3, 0x61CA, 0x9CE4, 0x61C9, + 0x9CE5, 0x61F7, 0x9CE6, 0x61C8, 0x9CE7, 0x61C3, 0x9CE8, 0x61C6, 0x9CE9, 0x61BA, 0x9CEA, 0x61CB, 0x9CEB, 0x7F79, 0x9CEC, 0x61CD, + 0x9CED, 0x61E6, 0x9CEE, 0x61E3, 0x9CEF, 0x61F6, 0x9CF0, 0x61FA, 0x9CF1, 0x61F4, 0x9CF2, 0x61FF, 0x9CF3, 0x61FD, 0x9CF4, 0x61FC, + 0x9CF5, 0x61FE, 0x9CF6, 0x6200, 0x9CF7, 0x6208, 0x9CF8, 0x6209, 0x9CF9, 0x620D, 0x9CFA, 0x620C, 0x9CFB, 0x6214, 0x9CFC, 0x621B, + 0x9D40, 0x621E, 0x9D41, 0x6221, 0x9D42, 0x622A, 0x9D43, 0x622E, 0x9D44, 0x6230, 0x9D45, 0x6232, 0x9D46, 0x6233, 0x9D47, 0x6241, + 0x9D48, 0x624E, 0x9D49, 0x625E, 0x9D4A, 0x6263, 0x9D4B, 0x625B, 0x9D4C, 0x6260, 0x9D4D, 0x6268, 0x9D4E, 0x627C, 0x9D4F, 0x6282, + 0x9D50, 0x6289, 0x9D51, 0x627E, 0x9D52, 0x6292, 0x9D53, 0x6293, 0x9D54, 0x6296, 0x9D55, 0x62D4, 0x9D56, 0x6283, 0x9D57, 0x6294, + 0x9D58, 0x62D7, 0x9D59, 0x62D1, 0x9D5A, 0x62BB, 0x9D5B, 0x62CF, 0x9D5C, 0x62FF, 0x9D5D, 0x62C6, 0x9D5E, 0x64D4, 0x9D5F, 0x62C8, + 0x9D60, 0x62DC, 0x9D61, 0x62CC, 0x9D62, 0x62CA, 0x9D63, 0x62C2, 0x9D64, 0x62C7, 0x9D65, 0x629B, 0x9D66, 0x62C9, 0x9D67, 0x630C, + 0x9D68, 0x62EE, 0x9D69, 0x62F1, 0x9D6A, 0x6327, 0x9D6B, 0x6302, 0x9D6C, 0x6308, 0x9D6D, 0x62EF, 0x9D6E, 0x62F5, 0x9D6F, 0x6350, + 0x9D70, 0x633E, 0x9D71, 0x634D, 0x9D72, 0x641C, 0x9D73, 0x634F, 0x9D74, 0x6396, 0x9D75, 0x638E, 0x9D76, 0x6380, 0x9D77, 0x63AB, + 0x9D78, 0x6376, 0x9D79, 0x63A3, 0x9D7A, 0x638F, 0x9D7B, 0x6389, 0x9D7C, 0x639F, 0x9D7D, 0x63B5, 0x9D7E, 0x636B, 0x9D80, 0x6369, + 0x9D81, 0x63BE, 0x9D82, 0x63E9, 0x9D83, 0x63C0, 0x9D84, 0x63C6, 0x9D85, 0x63E3, 0x9D86, 0x63C9, 0x9D87, 0x63D2, 0x9D88, 0x63F6, + 0x9D89, 0x63C4, 0x9D8A, 0x6416, 0x9D8B, 0x6434, 0x9D8C, 0x6406, 0x9D8D, 0x6413, 0x9D8E, 0x6426, 0x9D8F, 0x6436, 0x9D90, 0x651D, + 0x9D91, 0x6417, 0x9D92, 0x6428, 0x9D93, 0x640F, 0x9D94, 0x6467, 0x9D95, 0x646F, 0x9D96, 0x6476, 0x9D97, 0x644E, 0x9D98, 0x652A, + 0x9D99, 0x6495, 0x9D9A, 0x6493, 0x9D9B, 0x64A5, 0x9D9C, 0x64A9, 0x9D9D, 0x6488, 0x9D9E, 0x64BC, 0x9D9F, 0x64DA, 0x9DA0, 0x64D2, + 0x9DA1, 0x64C5, 0x9DA2, 0x64C7, 0x9DA3, 0x64BB, 0x9DA4, 0x64D8, 0x9DA5, 0x64C2, 0x9DA6, 0x64F1, 0x9DA7, 0x64E7, 0x9DA8, 0x8209, + 0x9DA9, 0x64E0, 0x9DAA, 0x64E1, 0x9DAB, 0x62AC, 0x9DAC, 0x64E3, 0x9DAD, 0x64EF, 0x9DAE, 0x652C, 0x9DAF, 0x64F6, 0x9DB0, 0x64F4, + 0x9DB1, 0x64F2, 0x9DB2, 0x64FA, 0x9DB3, 0x6500, 0x9DB4, 0x64FD, 0x9DB5, 0x6518, 0x9DB6, 0x651C, 0x9DB7, 0x6505, 0x9DB8, 0x6524, + 0x9DB9, 0x6523, 0x9DBA, 0x652B, 0x9DBB, 0x6534, 0x9DBC, 0x6535, 0x9DBD, 0x6537, 0x9DBE, 0x6536, 0x9DBF, 0x6538, 0x9DC0, 0x754B, + 0x9DC1, 0x6548, 0x9DC2, 0x6556, 0x9DC3, 0x6555, 0x9DC4, 0x654D, 0x9DC5, 0x6558, 0x9DC6, 0x655E, 0x9DC7, 0x655D, 0x9DC8, 0x6572, + 0x9DC9, 0x6578, 0x9DCA, 0x6582, 0x9DCB, 0x6583, 0x9DCC, 0x8B8A, 0x9DCD, 0x659B, 0x9DCE, 0x659F, 0x9DCF, 0x65AB, 0x9DD0, 0x65B7, + 0x9DD1, 0x65C3, 0x9DD2, 0x65C6, 0x9DD3, 0x65C1, 0x9DD4, 0x65C4, 0x9DD5, 0x65CC, 0x9DD6, 0x65D2, 0x9DD7, 0x65DB, 0x9DD8, 0x65D9, + 0x9DD9, 0x65E0, 0x9DDA, 0x65E1, 0x9DDB, 0x65F1, 0x9DDC, 0x6772, 0x9DDD, 0x660A, 0x9DDE, 0x6603, 0x9DDF, 0x65FB, 0x9DE0, 0x6773, + 0x9DE1, 0x6635, 0x9DE2, 0x6636, 0x9DE3, 0x6634, 0x9DE4, 0x661C, 0x9DE5, 0x664F, 0x9DE6, 0x6644, 0x9DE7, 0x6649, 0x9DE8, 0x6641, + 0x9DE9, 0x665E, 0x9DEA, 0x665D, 0x9DEB, 0x6664, 0x9DEC, 0x6667, 0x9DED, 0x6668, 0x9DEE, 0x665F, 0x9DEF, 0x6662, 0x9DF0, 0x6670, + 0x9DF1, 0x6683, 0x9DF2, 0x6688, 0x9DF3, 0x668E, 0x9DF4, 0x6689, 0x9DF5, 0x6684, 0x9DF6, 0x6698, 0x9DF7, 0x669D, 0x9DF8, 0x66C1, + 0x9DF9, 0x66B9, 0x9DFA, 0x66C9, 0x9DFB, 0x66BE, 0x9DFC, 0x66BC, 0x9E40, 0x66C4, 0x9E41, 0x66B8, 0x9E42, 0x66D6, 0x9E43, 0x66DA, + 0x9E44, 0x66E0, 0x9E45, 0x663F, 0x9E46, 0x66E6, 0x9E47, 0x66E9, 0x9E48, 0x66F0, 0x9E49, 0x66F5, 0x9E4A, 0x66F7, 0x9E4B, 0x670F, + 0x9E4C, 0x6716, 0x9E4D, 0x671E, 0x9E4E, 0x6726, 0x9E4F, 0x6727, 0x9E50, 0x9738, 0x9E51, 0x672E, 0x9E52, 0x673F, 0x9E53, 0x6736, + 0x9E54, 0x6741, 0x9E55, 0x6738, 0x9E56, 0x6737, 0x9E57, 0x6746, 0x9E58, 0x675E, 0x9E59, 0x6760, 0x9E5A, 0x6759, 0x9E5B, 0x6763, + 0x9E5C, 0x6764, 0x9E5D, 0x6789, 0x9E5E, 0x6770, 0x9E5F, 0x67A9, 0x9E60, 0x677C, 0x9E61, 0x676A, 0x9E62, 0x678C, 0x9E63, 0x678B, + 0x9E64, 0x67A6, 0x9E65, 0x67A1, 0x9E66, 0x6785, 0x9E67, 0x67B7, 0x9E68, 0x67EF, 0x9E69, 0x67B4, 0x9E6A, 0x67EC, 0x9E6B, 0x67B3, + 0x9E6C, 0x67E9, 0x9E6D, 0x67B8, 0x9E6E, 0x67E4, 0x9E6F, 0x67DE, 0x9E70, 0x67DD, 0x9E71, 0x67E2, 0x9E72, 0x67EE, 0x9E73, 0x67B9, + 0x9E74, 0x67CE, 0x9E75, 0x67C6, 0x9E76, 0x67E7, 0x9E77, 0x6A9C, 0x9E78, 0x681E, 0x9E79, 0x6846, 0x9E7A, 0x6829, 0x9E7B, 0x6840, + 0x9E7C, 0x684D, 0x9E7D, 0x6832, 0x9E7E, 0x684E, 0x9E80, 0x68B3, 0x9E81, 0x682B, 0x9E82, 0x6859, 0x9E83, 0x6863, 0x9E84, 0x6877, + 0x9E85, 0x687F, 0x9E86, 0x689F, 0x9E87, 0x688F, 0x9E88, 0x68AD, 0x9E89, 0x6894, 0x9E8A, 0x689D, 0x9E8B, 0x689B, 0x9E8C, 0x6883, + 0x9E8D, 0x6AAE, 0x9E8E, 0x68B9, 0x9E8F, 0x6874, 0x9E90, 0x68B5, 0x9E91, 0x68A0, 0x9E92, 0x68BA, 0x9E93, 0x690F, 0x9E94, 0x688D, + 0x9E95, 0x687E, 0x9E96, 0x6901, 0x9E97, 0x68CA, 0x9E98, 0x6908, 0x9E99, 0x68D8, 0x9E9A, 0x6922, 0x9E9B, 0x6926, 0x9E9C, 0x68E1, + 0x9E9D, 0x690C, 0x9E9E, 0x68CD, 0x9E9F, 0x68D4, 0x9EA0, 0x68E7, 0x9EA1, 0x68D5, 0x9EA2, 0x6936, 0x9EA3, 0x6912, 0x9EA4, 0x6904, + 0x9EA5, 0x68D7, 0x9EA6, 0x68E3, 0x9EA7, 0x6925, 0x9EA8, 0x68F9, 0x9EA9, 0x68E0, 0x9EAA, 0x68EF, 0x9EAB, 0x6928, 0x9EAC, 0x692A, + 0x9EAD, 0x691A, 0x9EAE, 0x6923, 0x9EAF, 0x6921, 0x9EB0, 0x68C6, 0x9EB1, 0x6979, 0x9EB2, 0x6977, 0x9EB3, 0x695C, 0x9EB4, 0x6978, + 0x9EB5, 0x696B, 0x9EB6, 0x6954, 0x9EB7, 0x697E, 0x9EB8, 0x696E, 0x9EB9, 0x6939, 0x9EBA, 0x6974, 0x9EBB, 0x693D, 0x9EBC, 0x6959, + 0x9EBD, 0x6930, 0x9EBE, 0x6961, 0x9EBF, 0x695E, 0x9EC0, 0x695D, 0x9EC1, 0x6981, 0x9EC2, 0x696A, 0x9EC3, 0x69B2, 0x9EC4, 0x69AE, + 0x9EC5, 0x69D0, 0x9EC6, 0x69BF, 0x9EC7, 0x69C1, 0x9EC8, 0x69D3, 0x9EC9, 0x69BE, 0x9ECA, 0x69CE, 0x9ECB, 0x5BE8, 0x9ECC, 0x69CA, + 0x9ECD, 0x69DD, 0x9ECE, 0x69BB, 0x9ECF, 0x69C3, 0x9ED0, 0x69A7, 0x9ED1, 0x6A2E, 0x9ED2, 0x6991, 0x9ED3, 0x69A0, 0x9ED4, 0x699C, + 0x9ED5, 0x6995, 0x9ED6, 0x69B4, 0x9ED7, 0x69DE, 0x9ED8, 0x69E8, 0x9ED9, 0x6A02, 0x9EDA, 0x6A1B, 0x9EDB, 0x69FF, 0x9EDC, 0x6B0A, + 0x9EDD, 0x69F9, 0x9EDE, 0x69F2, 0x9EDF, 0x69E7, 0x9EE0, 0x6A05, 0x9EE1, 0x69B1, 0x9EE2, 0x6A1E, 0x9EE3, 0x69ED, 0x9EE4, 0x6A14, + 0x9EE5, 0x69EB, 0x9EE6, 0x6A0A, 0x9EE7, 0x6A12, 0x9EE8, 0x6AC1, 0x9EE9, 0x6A23, 0x9EEA, 0x6A13, 0x9EEB, 0x6A44, 0x9EEC, 0x6A0C, + 0x9EED, 0x6A72, 0x9EEE, 0x6A36, 0x9EEF, 0x6A78, 0x9EF0, 0x6A47, 0x9EF1, 0x6A62, 0x9EF2, 0x6A59, 0x9EF3, 0x6A66, 0x9EF4, 0x6A48, + 0x9EF5, 0x6A38, 0x9EF6, 0x6A22, 0x9EF7, 0x6A90, 0x9EF8, 0x6A8D, 0x9EF9, 0x6AA0, 0x9EFA, 0x6A84, 0x9EFB, 0x6AA2, 0x9EFC, 0x6AA3, + 0x9F40, 0x6A97, 0x9F41, 0x8617, 0x9F42, 0x6ABB, 0x9F43, 0x6AC3, 0x9F44, 0x6AC2, 0x9F45, 0x6AB8, 0x9F46, 0x6AB3, 0x9F47, 0x6AAC, + 0x9F48, 0x6ADE, 0x9F49, 0x6AD1, 0x9F4A, 0x6ADF, 0x9F4B, 0x6AAA, 0x9F4C, 0x6ADA, 0x9F4D, 0x6AEA, 0x9F4E, 0x6AFB, 0x9F4F, 0x6B05, + 0x9F50, 0x8616, 0x9F51, 0x6AFA, 0x9F52, 0x6B12, 0x9F53, 0x6B16, 0x9F54, 0x9B31, 0x9F55, 0x6B1F, 0x9F56, 0x6B38, 0x9F57, 0x6B37, + 0x9F58, 0x76DC, 0x9F59, 0x6B39, 0x9F5A, 0x98EE, 0x9F5B, 0x6B47, 0x9F5C, 0x6B43, 0x9F5D, 0x6B49, 0x9F5E, 0x6B50, 0x9F5F, 0x6B59, + 0x9F60, 0x6B54, 0x9F61, 0x6B5B, 0x9F62, 0x6B5F, 0x9F63, 0x6B61, 0x9F64, 0x6B78, 0x9F65, 0x6B79, 0x9F66, 0x6B7F, 0x9F67, 0x6B80, + 0x9F68, 0x6B84, 0x9F69, 0x6B83, 0x9F6A, 0x6B8D, 0x9F6B, 0x6B98, 0x9F6C, 0x6B95, 0x9F6D, 0x6B9E, 0x9F6E, 0x6BA4, 0x9F6F, 0x6BAA, + 0x9F70, 0x6BAB, 0x9F71, 0x6BAF, 0x9F72, 0x6BB2, 0x9F73, 0x6BB1, 0x9F74, 0x6BB3, 0x9F75, 0x6BB7, 0x9F76, 0x6BBC, 0x9F77, 0x6BC6, + 0x9F78, 0x6BCB, 0x9F79, 0x6BD3, 0x9F7A, 0x6BDF, 0x9F7B, 0x6BEC, 0x9F7C, 0x6BEB, 0x9F7D, 0x6BF3, 0x9F7E, 0x6BEF, 0x9F80, 0x9EBE, + 0x9F81, 0x6C08, 0x9F82, 0x6C13, 0x9F83, 0x6C14, 0x9F84, 0x6C1B, 0x9F85, 0x6C24, 0x9F86, 0x6C23, 0x9F87, 0x6C5E, 0x9F88, 0x6C55, + 0x9F89, 0x6C62, 0x9F8A, 0x6C6A, 0x9F8B, 0x6C82, 0x9F8C, 0x6C8D, 0x9F8D, 0x6C9A, 0x9F8E, 0x6C81, 0x9F8F, 0x6C9B, 0x9F90, 0x6C7E, + 0x9F91, 0x6C68, 0x9F92, 0x6C73, 0x9F93, 0x6C92, 0x9F94, 0x6C90, 0x9F95, 0x6CC4, 0x9F96, 0x6CF1, 0x9F97, 0x6CD3, 0x9F98, 0x6CBD, + 0x9F99, 0x6CD7, 0x9F9A, 0x6CC5, 0x9F9B, 0x6CDD, 0x9F9C, 0x6CAE, 0x9F9D, 0x6CB1, 0x9F9E, 0x6CBE, 0x9F9F, 0x6CBA, 0x9FA0, 0x6CDB, + 0x9FA1, 0x6CEF, 0x9FA2, 0x6CD9, 0x9FA3, 0x6CEA, 0x9FA4, 0x6D1F, 0x9FA5, 0x884D, 0x9FA6, 0x6D36, 0x9FA7, 0x6D2B, 0x9FA8, 0x6D3D, + 0x9FA9, 0x6D38, 0x9FAA, 0x6D19, 0x9FAB, 0x6D35, 0x9FAC, 0x6D33, 0x9FAD, 0x6D12, 0x9FAE, 0x6D0C, 0x9FAF, 0x6D63, 0x9FB0, 0x6D93, + 0x9FB1, 0x6D64, 0x9FB2, 0x6D5A, 0x9FB3, 0x6D79, 0x9FB4, 0x6D59, 0x9FB5, 0x6D8E, 0x9FB6, 0x6D95, 0x9FB7, 0x6FE4, 0x9FB8, 0x6D85, + 0x9FB9, 0x6DF9, 0x9FBA, 0x6E15, 0x9FBB, 0x6E0A, 0x9FBC, 0x6DB5, 0x9FBD, 0x6DC7, 0x9FBE, 0x6DE6, 0x9FBF, 0x6DB8, 0x9FC0, 0x6DC6, + 0x9FC1, 0x6DEC, 0x9FC2, 0x6DDE, 0x9FC3, 0x6DCC, 0x9FC4, 0x6DE8, 0x9FC5, 0x6DD2, 0x9FC6, 0x6DC5, 0x9FC7, 0x6DFA, 0x9FC8, 0x6DD9, + 0x9FC9, 0x6DE4, 0x9FCA, 0x6DD5, 0x9FCB, 0x6DEA, 0x9FCC, 0x6DEE, 0x9FCD, 0x6E2D, 0x9FCE, 0x6E6E, 0x9FCF, 0x6E2E, 0x9FD0, 0x6E19, + 0x9FD1, 0x6E72, 0x9FD2, 0x6E5F, 0x9FD3, 0x6E3E, 0x9FD4, 0x6E23, 0x9FD5, 0x6E6B, 0x9FD6, 0x6E2B, 0x9FD7, 0x6E76, 0x9FD8, 0x6E4D, + 0x9FD9, 0x6E1F, 0x9FDA, 0x6E43, 0x9FDB, 0x6E3A, 0x9FDC, 0x6E4E, 0x9FDD, 0x6E24, 0x9FDE, 0x6EFF, 0x9FDF, 0x6E1D, 0x9FE0, 0x6E38, + 0x9FE1, 0x6E82, 0x9FE2, 0x6EAA, 0x9FE3, 0x6E98, 0x9FE4, 0x6EC9, 0x9FE5, 0x6EB7, 0x9FE6, 0x6ED3, 0x9FE7, 0x6EBD, 0x9FE8, 0x6EAF, + 0x9FE9, 0x6EC4, 0x9FEA, 0x6EB2, 0x9FEB, 0x6ED4, 0x9FEC, 0x6ED5, 0x9FED, 0x6E8F, 0x9FEE, 0x6EA5, 0x9FEF, 0x6EC2, 0x9FF0, 0x6E9F, + 0x9FF1, 0x6F41, 0x9FF2, 0x6F11, 0x9FF3, 0x704C, 0x9FF4, 0x6EEC, 0x9FF5, 0x6EF8, 0x9FF6, 0x6EFE, 0x9FF7, 0x6F3F, 0x9FF8, 0x6EF2, + 0x9FF9, 0x6F31, 0x9FFA, 0x6EEF, 0x9FFB, 0x6F32, 0x9FFC, 0x6ECC, 0xE040, 0x6F3E, 0xE041, 0x6F13, 0xE042, 0x6EF7, 0xE043, 0x6F86, + 0xE044, 0x6F7A, 0xE045, 0x6F78, 0xE046, 0x6F81, 0xE047, 0x6F80, 0xE048, 0x6F6F, 0xE049, 0x6F5B, 0xE04A, 0x6FF3, 0xE04B, 0x6F6D, + 0xE04C, 0x6F82, 0xE04D, 0x6F7C, 0xE04E, 0x6F58, 0xE04F, 0x6F8E, 0xE050, 0x6F91, 0xE051, 0x6FC2, 0xE052, 0x6F66, 0xE053, 0x6FB3, + 0xE054, 0x6FA3, 0xE055, 0x6FA1, 0xE056, 0x6FA4, 0xE057, 0x6FB9, 0xE058, 0x6FC6, 0xE059, 0x6FAA, 0xE05A, 0x6FDF, 0xE05B, 0x6FD5, + 0xE05C, 0x6FEC, 0xE05D, 0x6FD4, 0xE05E, 0x6FD8, 0xE05F, 0x6FF1, 0xE060, 0x6FEE, 0xE061, 0x6FDB, 0xE062, 0x7009, 0xE063, 0x700B, + 0xE064, 0x6FFA, 0xE065, 0x7011, 0xE066, 0x7001, 0xE067, 0x700F, 0xE068, 0x6FFE, 0xE069, 0x701B, 0xE06A, 0x701A, 0xE06B, 0x6F74, + 0xE06C, 0x701D, 0xE06D, 0x7018, 0xE06E, 0x701F, 0xE06F, 0x7030, 0xE070, 0x703E, 0xE071, 0x7032, 0xE072, 0x7051, 0xE073, 0x7063, + 0xE074, 0x7099, 0xE075, 0x7092, 0xE076, 0x70AF, 0xE077, 0x70F1, 0xE078, 0x70AC, 0xE079, 0x70B8, 0xE07A, 0x70B3, 0xE07B, 0x70AE, + 0xE07C, 0x70DF, 0xE07D, 0x70CB, 0xE07E, 0x70DD, 0xE080, 0x70D9, 0xE081, 0x7109, 0xE082, 0x70FD, 0xE083, 0x711C, 0xE084, 0x7119, + 0xE085, 0x7165, 0xE086, 0x7155, 0xE087, 0x7188, 0xE088, 0x7166, 0xE089, 0x7162, 0xE08A, 0x714C, 0xE08B, 0x7156, 0xE08C, 0x716C, + 0xE08D, 0x718F, 0xE08E, 0x71FB, 0xE08F, 0x7184, 0xE090, 0x7195, 0xE091, 0x71A8, 0xE092, 0x71AC, 0xE093, 0x71D7, 0xE094, 0x71B9, + 0xE095, 0x71BE, 0xE096, 0x71D2, 0xE097, 0x71C9, 0xE098, 0x71D4, 0xE099, 0x71CE, 0xE09A, 0x71E0, 0xE09B, 0x71EC, 0xE09C, 0x71E7, + 0xE09D, 0x71F5, 0xE09E, 0x71FC, 0xE09F, 0x71F9, 0xE0A0, 0x71FF, 0xE0A1, 0x720D, 0xE0A2, 0x7210, 0xE0A3, 0x721B, 0xE0A4, 0x7228, + 0xE0A5, 0x722D, 0xE0A6, 0x722C, 0xE0A7, 0x7230, 0xE0A8, 0x7232, 0xE0A9, 0x723B, 0xE0AA, 0x723C, 0xE0AB, 0x723F, 0xE0AC, 0x7240, + 0xE0AD, 0x7246, 0xE0AE, 0x724B, 0xE0AF, 0x7258, 0xE0B0, 0x7274, 0xE0B1, 0x727E, 0xE0B2, 0x7282, 0xE0B3, 0x7281, 0xE0B4, 0x7287, + 0xE0B5, 0x7292, 0xE0B6, 0x7296, 0xE0B7, 0x72A2, 0xE0B8, 0x72A7, 0xE0B9, 0x72B9, 0xE0BA, 0x72B2, 0xE0BB, 0x72C3, 0xE0BC, 0x72C6, + 0xE0BD, 0x72C4, 0xE0BE, 0x72CE, 0xE0BF, 0x72D2, 0xE0C0, 0x72E2, 0xE0C1, 0x72E0, 0xE0C2, 0x72E1, 0xE0C3, 0x72F9, 0xE0C4, 0x72F7, + 0xE0C5, 0x500F, 0xE0C6, 0x7317, 0xE0C7, 0x730A, 0xE0C8, 0x731C, 0xE0C9, 0x7316, 0xE0CA, 0x731D, 0xE0CB, 0x7334, 0xE0CC, 0x732F, + 0xE0CD, 0x7329, 0xE0CE, 0x7325, 0xE0CF, 0x733E, 0xE0D0, 0x734E, 0xE0D1, 0x734F, 0xE0D2, 0x9ED8, 0xE0D3, 0x7357, 0xE0D4, 0x736A, + 0xE0D5, 0x7368, 0xE0D6, 0x7370, 0xE0D7, 0x7378, 0xE0D8, 0x7375, 0xE0D9, 0x737B, 0xE0DA, 0x737A, 0xE0DB, 0x73C8, 0xE0DC, 0x73B3, + 0xE0DD, 0x73CE, 0xE0DE, 0x73BB, 0xE0DF, 0x73C0, 0xE0E0, 0x73E5, 0xE0E1, 0x73EE, 0xE0E2, 0x73DE, 0xE0E3, 0x74A2, 0xE0E4, 0x7405, + 0xE0E5, 0x746F, 0xE0E6, 0x7425, 0xE0E7, 0x73F8, 0xE0E8, 0x7432, 0xE0E9, 0x743A, 0xE0EA, 0x7455, 0xE0EB, 0x743F, 0xE0EC, 0x745F, + 0xE0ED, 0x7459, 0xE0EE, 0x7441, 0xE0EF, 0x745C, 0xE0F0, 0x7469, 0xE0F1, 0x7470, 0xE0F2, 0x7463, 0xE0F3, 0x746A, 0xE0F4, 0x7476, + 0xE0F5, 0x747E, 0xE0F6, 0x748B, 0xE0F7, 0x749E, 0xE0F8, 0x74A7, 0xE0F9, 0x74CA, 0xE0FA, 0x74CF, 0xE0FB, 0x74D4, 0xE0FC, 0x73F1, + 0xE140, 0x74E0, 0xE141, 0x74E3, 0xE142, 0x74E7, 0xE143, 0x74E9, 0xE144, 0x74EE, 0xE145, 0x74F2, 0xE146, 0x74F0, 0xE147, 0x74F1, + 0xE148, 0x74F8, 0xE149, 0x74F7, 0xE14A, 0x7504, 0xE14B, 0x7503, 0xE14C, 0x7505, 0xE14D, 0x750C, 0xE14E, 0x750E, 0xE14F, 0x750D, + 0xE150, 0x7515, 0xE151, 0x7513, 0xE152, 0x751E, 0xE153, 0x7526, 0xE154, 0x752C, 0xE155, 0x753C, 0xE156, 0x7544, 0xE157, 0x754D, + 0xE158, 0x754A, 0xE159, 0x7549, 0xE15A, 0x755B, 0xE15B, 0x7546, 0xE15C, 0x755A, 0xE15D, 0x7569, 0xE15E, 0x7564, 0xE15F, 0x7567, + 0xE160, 0x756B, 0xE161, 0x756D, 0xE162, 0x7578, 0xE163, 0x7576, 0xE164, 0x7586, 0xE165, 0x7587, 0xE166, 0x7574, 0xE167, 0x758A, + 0xE168, 0x7589, 0xE169, 0x7582, 0xE16A, 0x7594, 0xE16B, 0x759A, 0xE16C, 0x759D, 0xE16D, 0x75A5, 0xE16E, 0x75A3, 0xE16F, 0x75C2, + 0xE170, 0x75B3, 0xE171, 0x75C3, 0xE172, 0x75B5, 0xE173, 0x75BD, 0xE174, 0x75B8, 0xE175, 0x75BC, 0xE176, 0x75B1, 0xE177, 0x75CD, + 0xE178, 0x75CA, 0xE179, 0x75D2, 0xE17A, 0x75D9, 0xE17B, 0x75E3, 0xE17C, 0x75DE, 0xE17D, 0x75FE, 0xE17E, 0x75FF, 0xE180, 0x75FC, + 0xE181, 0x7601, 0xE182, 0x75F0, 0xE183, 0x75FA, 0xE184, 0x75F2, 0xE185, 0x75F3, 0xE186, 0x760B, 0xE187, 0x760D, 0xE188, 0x7609, + 0xE189, 0x761F, 0xE18A, 0x7627, 0xE18B, 0x7620, 0xE18C, 0x7621, 0xE18D, 0x7622, 0xE18E, 0x7624, 0xE18F, 0x7634, 0xE190, 0x7630, + 0xE191, 0x763B, 0xE192, 0x7647, 0xE193, 0x7648, 0xE194, 0x7646, 0xE195, 0x765C, 0xE196, 0x7658, 0xE197, 0x7661, 0xE198, 0x7662, + 0xE199, 0x7668, 0xE19A, 0x7669, 0xE19B, 0x766A, 0xE19C, 0x7667, 0xE19D, 0x766C, 0xE19E, 0x7670, 0xE19F, 0x7672, 0xE1A0, 0x7676, + 0xE1A1, 0x7678, 0xE1A2, 0x767C, 0xE1A3, 0x7680, 0xE1A4, 0x7683, 0xE1A5, 0x7688, 0xE1A6, 0x768B, 0xE1A7, 0x768E, 0xE1A8, 0x7696, + 0xE1A9, 0x7693, 0xE1AA, 0x7699, 0xE1AB, 0x769A, 0xE1AC, 0x76B0, 0xE1AD, 0x76B4, 0xE1AE, 0x76B8, 0xE1AF, 0x76B9, 0xE1B0, 0x76BA, + 0xE1B1, 0x76C2, 0xE1B2, 0x76CD, 0xE1B3, 0x76D6, 0xE1B4, 0x76D2, 0xE1B5, 0x76DE, 0xE1B6, 0x76E1, 0xE1B7, 0x76E5, 0xE1B8, 0x76E7, + 0xE1B9, 0x76EA, 0xE1BA, 0x862F, 0xE1BB, 0x76FB, 0xE1BC, 0x7708, 0xE1BD, 0x7707, 0xE1BE, 0x7704, 0xE1BF, 0x7729, 0xE1C0, 0x7724, + 0xE1C1, 0x771E, 0xE1C2, 0x7725, 0xE1C3, 0x7726, 0xE1C4, 0x771B, 0xE1C5, 0x7737, 0xE1C6, 0x7738, 0xE1C7, 0x7747, 0xE1C8, 0x775A, + 0xE1C9, 0x7768, 0xE1CA, 0x776B, 0xE1CB, 0x775B, 0xE1CC, 0x7765, 0xE1CD, 0x777F, 0xE1CE, 0x777E, 0xE1CF, 0x7779, 0xE1D0, 0x778E, + 0xE1D1, 0x778B, 0xE1D2, 0x7791, 0xE1D3, 0x77A0, 0xE1D4, 0x779E, 0xE1D5, 0x77B0, 0xE1D6, 0x77B6, 0xE1D7, 0x77B9, 0xE1D8, 0x77BF, + 0xE1D9, 0x77BC, 0xE1DA, 0x77BD, 0xE1DB, 0x77BB, 0xE1DC, 0x77C7, 0xE1DD, 0x77CD, 0xE1DE, 0x77D7, 0xE1DF, 0x77DA, 0xE1E0, 0x77DC, + 0xE1E1, 0x77E3, 0xE1E2, 0x77EE, 0xE1E3, 0x77FC, 0xE1E4, 0x780C, 0xE1E5, 0x7812, 0xE1E6, 0x7926, 0xE1E7, 0x7820, 0xE1E8, 0x792A, + 0xE1E9, 0x7845, 0xE1EA, 0x788E, 0xE1EB, 0x7874, 0xE1EC, 0x7886, 0xE1ED, 0x787C, 0xE1EE, 0x789A, 0xE1EF, 0x788C, 0xE1F0, 0x78A3, + 0xE1F1, 0x78B5, 0xE1F2, 0x78AA, 0xE1F3, 0x78AF, 0xE1F4, 0x78D1, 0xE1F5, 0x78C6, 0xE1F6, 0x78CB, 0xE1F7, 0x78D4, 0xE1F8, 0x78BE, + 0xE1F9, 0x78BC, 0xE1FA, 0x78C5, 0xE1FB, 0x78CA, 0xE1FC, 0x78EC, 0xE240, 0x78E7, 0xE241, 0x78DA, 0xE242, 0x78FD, 0xE243, 0x78F4, + 0xE244, 0x7907, 0xE245, 0x7912, 0xE246, 0x7911, 0xE247, 0x7919, 0xE248, 0x792C, 0xE249, 0x792B, 0xE24A, 0x7940, 0xE24B, 0x7960, + 0xE24C, 0x7957, 0xE24D, 0x795F, 0xE24E, 0x795A, 0xE24F, 0x7955, 0xE250, 0x7953, 0xE251, 0x797A, 0xE252, 0x797F, 0xE253, 0x798A, + 0xE254, 0x799D, 0xE255, 0x79A7, 0xE256, 0x9F4B, 0xE257, 0x79AA, 0xE258, 0x79AE, 0xE259, 0x79B3, 0xE25A, 0x79B9, 0xE25B, 0x79BA, + 0xE25C, 0x79C9, 0xE25D, 0x79D5, 0xE25E, 0x79E7, 0xE25F, 0x79EC, 0xE260, 0x79E1, 0xE261, 0x79E3, 0xE262, 0x7A08, 0xE263, 0x7A0D, + 0xE264, 0x7A18, 0xE265, 0x7A19, 0xE266, 0x7A20, 0xE267, 0x7A1F, 0xE268, 0x7980, 0xE269, 0x7A31, 0xE26A, 0x7A3B, 0xE26B, 0x7A3E, + 0xE26C, 0x7A37, 0xE26D, 0x7A43, 0xE26E, 0x7A57, 0xE26F, 0x7A49, 0xE270, 0x7A61, 0xE271, 0x7A62, 0xE272, 0x7A69, 0xE273, 0x9F9D, + 0xE274, 0x7A70, 0xE275, 0x7A79, 0xE276, 0x7A7D, 0xE277, 0x7A88, 0xE278, 0x7A97, 0xE279, 0x7A95, 0xE27A, 0x7A98, 0xE27B, 0x7A96, + 0xE27C, 0x7AA9, 0xE27D, 0x7AC8, 0xE27E, 0x7AB0, 0xE280, 0x7AB6, 0xE281, 0x7AC5, 0xE282, 0x7AC4, 0xE283, 0x7ABF, 0xE284, 0x9083, + 0xE285, 0x7AC7, 0xE286, 0x7ACA, 0xE287, 0x7ACD, 0xE288, 0x7ACF, 0xE289, 0x7AD5, 0xE28A, 0x7AD3, 0xE28B, 0x7AD9, 0xE28C, 0x7ADA, + 0xE28D, 0x7ADD, 0xE28E, 0x7AE1, 0xE28F, 0x7AE2, 0xE290, 0x7AE6, 0xE291, 0x7AED, 0xE292, 0x7AF0, 0xE293, 0x7B02, 0xE294, 0x7B0F, + 0xE295, 0x7B0A, 0xE296, 0x7B06, 0xE297, 0x7B33, 0xE298, 0x7B18, 0xE299, 0x7B19, 0xE29A, 0x7B1E, 0xE29B, 0x7B35, 0xE29C, 0x7B28, + 0xE29D, 0x7B36, 0xE29E, 0x7B50, 0xE29F, 0x7B7A, 0xE2A0, 0x7B04, 0xE2A1, 0x7B4D, 0xE2A2, 0x7B0B, 0xE2A3, 0x7B4C, 0xE2A4, 0x7B45, + 0xE2A5, 0x7B75, 0xE2A6, 0x7B65, 0xE2A7, 0x7B74, 0xE2A8, 0x7B67, 0xE2A9, 0x7B70, 0xE2AA, 0x7B71, 0xE2AB, 0x7B6C, 0xE2AC, 0x7B6E, + 0xE2AD, 0x7B9D, 0xE2AE, 0x7B98, 0xE2AF, 0x7B9F, 0xE2B0, 0x7B8D, 0xE2B1, 0x7B9C, 0xE2B2, 0x7B9A, 0xE2B3, 0x7B8B, 0xE2B4, 0x7B92, + 0xE2B5, 0x7B8F, 0xE2B6, 0x7B5D, 0xE2B7, 0x7B99, 0xE2B8, 0x7BCB, 0xE2B9, 0x7BC1, 0xE2BA, 0x7BCC, 0xE2BB, 0x7BCF, 0xE2BC, 0x7BB4, + 0xE2BD, 0x7BC6, 0xE2BE, 0x7BDD, 0xE2BF, 0x7BE9, 0xE2C0, 0x7C11, 0xE2C1, 0x7C14, 0xE2C2, 0x7BE6, 0xE2C3, 0x7BE5, 0xE2C4, 0x7C60, + 0xE2C5, 0x7C00, 0xE2C6, 0x7C07, 0xE2C7, 0x7C13, 0xE2C8, 0x7BF3, 0xE2C9, 0x7BF7, 0xE2CA, 0x7C17, 0xE2CB, 0x7C0D, 0xE2CC, 0x7BF6, + 0xE2CD, 0x7C23, 0xE2CE, 0x7C27, 0xE2CF, 0x7C2A, 0xE2D0, 0x7C1F, 0xE2D1, 0x7C37, 0xE2D2, 0x7C2B, 0xE2D3, 0x7C3D, 0xE2D4, 0x7C4C, + 0xE2D5, 0x7C43, 0xE2D6, 0x7C54, 0xE2D7, 0x7C4F, 0xE2D8, 0x7C40, 0xE2D9, 0x7C50, 0xE2DA, 0x7C58, 0xE2DB, 0x7C5F, 0xE2DC, 0x7C64, + 0xE2DD, 0x7C56, 0xE2DE, 0x7C65, 0xE2DF, 0x7C6C, 0xE2E0, 0x7C75, 0xE2E1, 0x7C83, 0xE2E2, 0x7C90, 0xE2E3, 0x7CA4, 0xE2E4, 0x7CAD, + 0xE2E5, 0x7CA2, 0xE2E6, 0x7CAB, 0xE2E7, 0x7CA1, 0xE2E8, 0x7CA8, 0xE2E9, 0x7CB3, 0xE2EA, 0x7CB2, 0xE2EB, 0x7CB1, 0xE2EC, 0x7CAE, + 0xE2ED, 0x7CB9, 0xE2EE, 0x7CBD, 0xE2EF, 0x7CC0, 0xE2F0, 0x7CC5, 0xE2F1, 0x7CC2, 0xE2F2, 0x7CD8, 0xE2F3, 0x7CD2, 0xE2F4, 0x7CDC, + 0xE2F5, 0x7CE2, 0xE2F6, 0x9B3B, 0xE2F7, 0x7CEF, 0xE2F8, 0x7CF2, 0xE2F9, 0x7CF4, 0xE2FA, 0x7CF6, 0xE2FB, 0x7CFA, 0xE2FC, 0x7D06, + 0xE340, 0x7D02, 0xE341, 0x7D1C, 0xE342, 0x7D15, 0xE343, 0x7D0A, 0xE344, 0x7D45, 0xE345, 0x7D4B, 0xE346, 0x7D2E, 0xE347, 0x7D32, + 0xE348, 0x7D3F, 0xE349, 0x7D35, 0xE34A, 0x7D46, 0xE34B, 0x7D73, 0xE34C, 0x7D56, 0xE34D, 0x7D4E, 0xE34E, 0x7D72, 0xE34F, 0x7D68, + 0xE350, 0x7D6E, 0xE351, 0x7D4F, 0xE352, 0x7D63, 0xE353, 0x7D93, 0xE354, 0x7D89, 0xE355, 0x7D5B, 0xE356, 0x7D8F, 0xE357, 0x7D7D, + 0xE358, 0x7D9B, 0xE359, 0x7DBA, 0xE35A, 0x7DAE, 0xE35B, 0x7DA3, 0xE35C, 0x7DB5, 0xE35D, 0x7DC7, 0xE35E, 0x7DBD, 0xE35F, 0x7DAB, + 0xE360, 0x7E3D, 0xE361, 0x7DA2, 0xE362, 0x7DAF, 0xE363, 0x7DDC, 0xE364, 0x7DB8, 0xE365, 0x7D9F, 0xE366, 0x7DB0, 0xE367, 0x7DD8, + 0xE368, 0x7DDD, 0xE369, 0x7DE4, 0xE36A, 0x7DDE, 0xE36B, 0x7DFB, 0xE36C, 0x7DF2, 0xE36D, 0x7DE1, 0xE36E, 0x7E05, 0xE36F, 0x7E0A, + 0xE370, 0x7E23, 0xE371, 0x7E21, 0xE372, 0x7E12, 0xE373, 0x7E31, 0xE374, 0x7E1F, 0xE375, 0x7E09, 0xE376, 0x7E0B, 0xE377, 0x7E22, + 0xE378, 0x7E46, 0xE379, 0x7E66, 0xE37A, 0x7E3B, 0xE37B, 0x7E35, 0xE37C, 0x7E39, 0xE37D, 0x7E43, 0xE37E, 0x7E37, 0xE380, 0x7E32, + 0xE381, 0x7E3A, 0xE382, 0x7E67, 0xE383, 0x7E5D, 0xE384, 0x7E56, 0xE385, 0x7E5E, 0xE386, 0x7E59, 0xE387, 0x7E5A, 0xE388, 0x7E79, + 0xE389, 0x7E6A, 0xE38A, 0x7E69, 0xE38B, 0x7E7C, 0xE38C, 0x7E7B, 0xE38D, 0x7E83, 0xE38E, 0x7DD5, 0xE38F, 0x7E7D, 0xE390, 0x8FAE, + 0xE391, 0x7E7F, 0xE392, 0x7E88, 0xE393, 0x7E89, 0xE394, 0x7E8C, 0xE395, 0x7E92, 0xE396, 0x7E90, 0xE397, 0x7E93, 0xE398, 0x7E94, + 0xE399, 0x7E96, 0xE39A, 0x7E8E, 0xE39B, 0x7E9B, 0xE39C, 0x7E9C, 0xE39D, 0x7F38, 0xE39E, 0x7F3A, 0xE39F, 0x7F45, 0xE3A0, 0x7F4C, + 0xE3A1, 0x7F4D, 0xE3A2, 0x7F4E, 0xE3A3, 0x7F50, 0xE3A4, 0x7F51, 0xE3A5, 0x7F55, 0xE3A6, 0x7F54, 0xE3A7, 0x7F58, 0xE3A8, 0x7F5F, + 0xE3A9, 0x7F60, 0xE3AA, 0x7F68, 0xE3AB, 0x7F69, 0xE3AC, 0x7F67, 0xE3AD, 0x7F78, 0xE3AE, 0x7F82, 0xE3AF, 0x7F86, 0xE3B0, 0x7F83, + 0xE3B1, 0x7F88, 0xE3B2, 0x7F87, 0xE3B3, 0x7F8C, 0xE3B4, 0x7F94, 0xE3B5, 0x7F9E, 0xE3B6, 0x7F9D, 0xE3B7, 0x7F9A, 0xE3B8, 0x7FA3, + 0xE3B9, 0x7FAF, 0xE3BA, 0x7FB2, 0xE3BB, 0x7FB9, 0xE3BC, 0x7FAE, 0xE3BD, 0x7FB6, 0xE3BE, 0x7FB8, 0xE3BF, 0x8B71, 0xE3C0, 0x7FC5, + 0xE3C1, 0x7FC6, 0xE3C2, 0x7FCA, 0xE3C3, 0x7FD5, 0xE3C4, 0x7FD4, 0xE3C5, 0x7FE1, 0xE3C6, 0x7FE6, 0xE3C7, 0x7FE9, 0xE3C8, 0x7FF3, + 0xE3C9, 0x7FF9, 0xE3CA, 0x98DC, 0xE3CB, 0x8006, 0xE3CC, 0x8004, 0xE3CD, 0x800B, 0xE3CE, 0x8012, 0xE3CF, 0x8018, 0xE3D0, 0x8019, + 0xE3D1, 0x801C, 0xE3D2, 0x8021, 0xE3D3, 0x8028, 0xE3D4, 0x803F, 0xE3D5, 0x803B, 0xE3D6, 0x804A, 0xE3D7, 0x8046, 0xE3D8, 0x8052, + 0xE3D9, 0x8058, 0xE3DA, 0x805A, 0xE3DB, 0x805F, 0xE3DC, 0x8062, 0xE3DD, 0x8068, 0xE3DE, 0x8073, 0xE3DF, 0x8072, 0xE3E0, 0x8070, + 0xE3E1, 0x8076, 0xE3E2, 0x8079, 0xE3E3, 0x807D, 0xE3E4, 0x807F, 0xE3E5, 0x8084, 0xE3E6, 0x8086, 0xE3E7, 0x8085, 0xE3E8, 0x809B, + 0xE3E9, 0x8093, 0xE3EA, 0x809A, 0xE3EB, 0x80AD, 0xE3EC, 0x5190, 0xE3ED, 0x80AC, 0xE3EE, 0x80DB, 0xE3EF, 0x80E5, 0xE3F0, 0x80D9, + 0xE3F1, 0x80DD, 0xE3F2, 0x80C4, 0xE3F3, 0x80DA, 0xE3F4, 0x80D6, 0xE3F5, 0x8109, 0xE3F6, 0x80EF, 0xE3F7, 0x80F1, 0xE3F8, 0x811B, + 0xE3F9, 0x8129, 0xE3FA, 0x8123, 0xE3FB, 0x812F, 0xE3FC, 0x814B, 0xE440, 0x968B, 0xE441, 0x8146, 0xE442, 0x813E, 0xE443, 0x8153, + 0xE444, 0x8151, 0xE445, 0x80FC, 0xE446, 0x8171, 0xE447, 0x816E, 0xE448, 0x8165, 0xE449, 0x8166, 0xE44A, 0x8174, 0xE44B, 0x8183, + 0xE44C, 0x8188, 0xE44D, 0x818A, 0xE44E, 0x8180, 0xE44F, 0x8182, 0xE450, 0x81A0, 0xE451, 0x8195, 0xE452, 0x81A4, 0xE453, 0x81A3, + 0xE454, 0x815F, 0xE455, 0x8193, 0xE456, 0x81A9, 0xE457, 0x81B0, 0xE458, 0x81B5, 0xE459, 0x81BE, 0xE45A, 0x81B8, 0xE45B, 0x81BD, + 0xE45C, 0x81C0, 0xE45D, 0x81C2, 0xE45E, 0x81BA, 0xE45F, 0x81C9, 0xE460, 0x81CD, 0xE461, 0x81D1, 0xE462, 0x81D9, 0xE463, 0x81D8, + 0xE464, 0x81C8, 0xE465, 0x81DA, 0xE466, 0x81DF, 0xE467, 0x81E0, 0xE468, 0x81E7, 0xE469, 0x81FA, 0xE46A, 0x81FB, 0xE46B, 0x81FE, + 0xE46C, 0x8201, 0xE46D, 0x8202, 0xE46E, 0x8205, 0xE46F, 0x8207, 0xE470, 0x820A, 0xE471, 0x820D, 0xE472, 0x8210, 0xE473, 0x8216, + 0xE474, 0x8229, 0xE475, 0x822B, 0xE476, 0x8238, 0xE477, 0x8233, 0xE478, 0x8240, 0xE479, 0x8259, 0xE47A, 0x8258, 0xE47B, 0x825D, + 0xE47C, 0x825A, 0xE47D, 0x825F, 0xE47E, 0x8264, 0xE480, 0x8262, 0xE481, 0x8268, 0xE482, 0x826A, 0xE483, 0x826B, 0xE484, 0x822E, + 0xE485, 0x8271, 0xE486, 0x8277, 0xE487, 0x8278, 0xE488, 0x827E, 0xE489, 0x828D, 0xE48A, 0x8292, 0xE48B, 0x82AB, 0xE48C, 0x829F, + 0xE48D, 0x82BB, 0xE48E, 0x82AC, 0xE48F, 0x82E1, 0xE490, 0x82E3, 0xE491, 0x82DF, 0xE492, 0x82D2, 0xE493, 0x82F4, 0xE494, 0x82F3, + 0xE495, 0x82FA, 0xE496, 0x8393, 0xE497, 0x8303, 0xE498, 0x82FB, 0xE499, 0x82F9, 0xE49A, 0x82DE, 0xE49B, 0x8306, 0xE49C, 0x82DC, + 0xE49D, 0x8309, 0xE49E, 0x82D9, 0xE49F, 0x8335, 0xE4A0, 0x8334, 0xE4A1, 0x8316, 0xE4A2, 0x8332, 0xE4A3, 0x8331, 0xE4A4, 0x8340, + 0xE4A5, 0x8339, 0xE4A6, 0x8350, 0xE4A7, 0x8345, 0xE4A8, 0x832F, 0xE4A9, 0x832B, 0xE4AA, 0x8317, 0xE4AB, 0x8318, 0xE4AC, 0x8385, + 0xE4AD, 0x839A, 0xE4AE, 0x83AA, 0xE4AF, 0x839F, 0xE4B0, 0x83A2, 0xE4B1, 0x8396, 0xE4B2, 0x8323, 0xE4B3, 0x838E, 0xE4B4, 0x8387, + 0xE4B5, 0x838A, 0xE4B6, 0x837C, 0xE4B7, 0x83B5, 0xE4B8, 0x8373, 0xE4B9, 0x8375, 0xE4BA, 0x83A0, 0xE4BB, 0x8389, 0xE4BC, 0x83A8, + 0xE4BD, 0x83F4, 0xE4BE, 0x8413, 0xE4BF, 0x83EB, 0xE4C0, 0x83CE, 0xE4C1, 0x83FD, 0xE4C2, 0x8403, 0xE4C3, 0x83D8, 0xE4C4, 0x840B, + 0xE4C5, 0x83C1, 0xE4C6, 0x83F7, 0xE4C7, 0x8407, 0xE4C8, 0x83E0, 0xE4C9, 0x83F2, 0xE4CA, 0x840D, 0xE4CB, 0x8422, 0xE4CC, 0x8420, + 0xE4CD, 0x83BD, 0xE4CE, 0x8438, 0xE4CF, 0x8506, 0xE4D0, 0x83FB, 0xE4D1, 0x846D, 0xE4D2, 0x842A, 0xE4D3, 0x843C, 0xE4D4, 0x855A, + 0xE4D5, 0x8484, 0xE4D6, 0x8477, 0xE4D7, 0x846B, 0xE4D8, 0x84AD, 0xE4D9, 0x846E, 0xE4DA, 0x8482, 0xE4DB, 0x8469, 0xE4DC, 0x8446, + 0xE4DD, 0x842C, 0xE4DE, 0x846F, 0xE4DF, 0x8479, 0xE4E0, 0x8435, 0xE4E1, 0x84CA, 0xE4E2, 0x8462, 0xE4E3, 0x84B9, 0xE4E4, 0x84BF, + 0xE4E5, 0x849F, 0xE4E6, 0x84D9, 0xE4E7, 0x84CD, 0xE4E8, 0x84BB, 0xE4E9, 0x84DA, 0xE4EA, 0x84D0, 0xE4EB, 0x84C1, 0xE4EC, 0x84C6, + 0xE4ED, 0x84D6, 0xE4EE, 0x84A1, 0xE4EF, 0x8521, 0xE4F0, 0x84FF, 0xE4F1, 0x84F4, 0xE4F2, 0x8517, 0xE4F3, 0x8518, 0xE4F4, 0x852C, + 0xE4F5, 0x851F, 0xE4F6, 0x8515, 0xE4F7, 0x8514, 0xE4F8, 0x84FC, 0xE4F9, 0x8540, 0xE4FA, 0x8563, 0xE4FB, 0x8558, 0xE4FC, 0x8548, + 0xE540, 0x8541, 0xE541, 0x8602, 0xE542, 0x854B, 0xE543, 0x8555, 0xE544, 0x8580, 0xE545, 0x85A4, 0xE546, 0x8588, 0xE547, 0x8591, + 0xE548, 0x858A, 0xE549, 0x85A8, 0xE54A, 0x856D, 0xE54B, 0x8594, 0xE54C, 0x859B, 0xE54D, 0x85EA, 0xE54E, 0x8587, 0xE54F, 0x859C, + 0xE550, 0x8577, 0xE551, 0x857E, 0xE552, 0x8590, 0xE553, 0x85C9, 0xE554, 0x85BA, 0xE555, 0x85CF, 0xE556, 0x85B9, 0xE557, 0x85D0, + 0xE558, 0x85D5, 0xE559, 0x85DD, 0xE55A, 0x85E5, 0xE55B, 0x85DC, 0xE55C, 0x85F9, 0xE55D, 0x860A, 0xE55E, 0x8613, 0xE55F, 0x860B, + 0xE560, 0x85FE, 0xE561, 0x85FA, 0xE562, 0x8606, 0xE563, 0x8622, 0xE564, 0x861A, 0xE565, 0x8630, 0xE566, 0x863F, 0xE567, 0x864D, + 0xE568, 0x4E55, 0xE569, 0x8654, 0xE56A, 0x865F, 0xE56B, 0x8667, 0xE56C, 0x8671, 0xE56D, 0x8693, 0xE56E, 0x86A3, 0xE56F, 0x86A9, + 0xE570, 0x86AA, 0xE571, 0x868B, 0xE572, 0x868C, 0xE573, 0x86B6, 0xE574, 0x86AF, 0xE575, 0x86C4, 0xE576, 0x86C6, 0xE577, 0x86B0, + 0xE578, 0x86C9, 0xE579, 0x8823, 0xE57A, 0x86AB, 0xE57B, 0x86D4, 0xE57C, 0x86DE, 0xE57D, 0x86E9, 0xE57E, 0x86EC, 0xE580, 0x86DF, + 0xE581, 0x86DB, 0xE582, 0x86EF, 0xE583, 0x8712, 0xE584, 0x8706, 0xE585, 0x8708, 0xE586, 0x8700, 0xE587, 0x8703, 0xE588, 0x86FB, + 0xE589, 0x8711, 0xE58A, 0x8709, 0xE58B, 0x870D, 0xE58C, 0x86F9, 0xE58D, 0x870A, 0xE58E, 0x8734, 0xE58F, 0x873F, 0xE590, 0x8737, + 0xE591, 0x873B, 0xE592, 0x8725, 0xE593, 0x8729, 0xE594, 0x871A, 0xE595, 0x8760, 0xE596, 0x875F, 0xE597, 0x8778, 0xE598, 0x874C, + 0xE599, 0x874E, 0xE59A, 0x8774, 0xE59B, 0x8757, 0xE59C, 0x8768, 0xE59D, 0x876E, 0xE59E, 0x8759, 0xE59F, 0x8753, 0xE5A0, 0x8763, + 0xE5A1, 0x876A, 0xE5A2, 0x8805, 0xE5A3, 0x87A2, 0xE5A4, 0x879F, 0xE5A5, 0x8782, 0xE5A6, 0x87AF, 0xE5A7, 0x87CB, 0xE5A8, 0x87BD, + 0xE5A9, 0x87C0, 0xE5AA, 0x87D0, 0xE5AB, 0x96D6, 0xE5AC, 0x87AB, 0xE5AD, 0x87C4, 0xE5AE, 0x87B3, 0xE5AF, 0x87C7, 0xE5B0, 0x87C6, + 0xE5B1, 0x87BB, 0xE5B2, 0x87EF, 0xE5B3, 0x87F2, 0xE5B4, 0x87E0, 0xE5B5, 0x880F, 0xE5B6, 0x880D, 0xE5B7, 0x87FE, 0xE5B8, 0x87F6, + 0xE5B9, 0x87F7, 0xE5BA, 0x880E, 0xE5BB, 0x87D2, 0xE5BC, 0x8811, 0xE5BD, 0x8816, 0xE5BE, 0x8815, 0xE5BF, 0x8822, 0xE5C0, 0x8821, + 0xE5C1, 0x8831, 0xE5C2, 0x8836, 0xE5C3, 0x8839, 0xE5C4, 0x8827, 0xE5C5, 0x883B, 0xE5C6, 0x8844, 0xE5C7, 0x8842, 0xE5C8, 0x8852, + 0xE5C9, 0x8859, 0xE5CA, 0x885E, 0xE5CB, 0x8862, 0xE5CC, 0x886B, 0xE5CD, 0x8881, 0xE5CE, 0x887E, 0xE5CF, 0x889E, 0xE5D0, 0x8875, + 0xE5D1, 0x887D, 0xE5D2, 0x88B5, 0xE5D3, 0x8872, 0xE5D4, 0x8882, 0xE5D5, 0x8897, 0xE5D6, 0x8892, 0xE5D7, 0x88AE, 0xE5D8, 0x8899, + 0xE5D9, 0x88A2, 0xE5DA, 0x888D, 0xE5DB, 0x88A4, 0xE5DC, 0x88B0, 0xE5DD, 0x88BF, 0xE5DE, 0x88B1, 0xE5DF, 0x88C3, 0xE5E0, 0x88C4, + 0xE5E1, 0x88D4, 0xE5E2, 0x88D8, 0xE5E3, 0x88D9, 0xE5E4, 0x88DD, 0xE5E5, 0x88F9, 0xE5E6, 0x8902, 0xE5E7, 0x88FC, 0xE5E8, 0x88F4, + 0xE5E9, 0x88E8, 0xE5EA, 0x88F2, 0xE5EB, 0x8904, 0xE5EC, 0x890C, 0xE5ED, 0x890A, 0xE5EE, 0x8913, 0xE5EF, 0x8943, 0xE5F0, 0x891E, + 0xE5F1, 0x8925, 0xE5F2, 0x892A, 0xE5F3, 0x892B, 0xE5F4, 0x8941, 0xE5F5, 0x8944, 0xE5F6, 0x893B, 0xE5F7, 0x8936, 0xE5F8, 0x8938, + 0xE5F9, 0x894C, 0xE5FA, 0x891D, 0xE5FB, 0x8960, 0xE5FC, 0x895E, 0xE640, 0x8966, 0xE641, 0x8964, 0xE642, 0x896D, 0xE643, 0x896A, + 0xE644, 0x896F, 0xE645, 0x8974, 0xE646, 0x8977, 0xE647, 0x897E, 0xE648, 0x8983, 0xE649, 0x8988, 0xE64A, 0x898A, 0xE64B, 0x8993, + 0xE64C, 0x8998, 0xE64D, 0x89A1, 0xE64E, 0x89A9, 0xE64F, 0x89A6, 0xE650, 0x89AC, 0xE651, 0x89AF, 0xE652, 0x89B2, 0xE653, 0x89BA, + 0xE654, 0x89BD, 0xE655, 0x89BF, 0xE656, 0x89C0, 0xE657, 0x89DA, 0xE658, 0x89DC, 0xE659, 0x89DD, 0xE65A, 0x89E7, 0xE65B, 0x89F4, + 0xE65C, 0x89F8, 0xE65D, 0x8A03, 0xE65E, 0x8A16, 0xE65F, 0x8A10, 0xE660, 0x8A0C, 0xE661, 0x8A1B, 0xE662, 0x8A1D, 0xE663, 0x8A25, + 0xE664, 0x8A36, 0xE665, 0x8A41, 0xE666, 0x8A5B, 0xE667, 0x8A52, 0xE668, 0x8A46, 0xE669, 0x8A48, 0xE66A, 0x8A7C, 0xE66B, 0x8A6D, + 0xE66C, 0x8A6C, 0xE66D, 0x8A62, 0xE66E, 0x8A85, 0xE66F, 0x8A82, 0xE670, 0x8A84, 0xE671, 0x8AA8, 0xE672, 0x8AA1, 0xE673, 0x8A91, + 0xE674, 0x8AA5, 0xE675, 0x8AA6, 0xE676, 0x8A9A, 0xE677, 0x8AA3, 0xE678, 0x8AC4, 0xE679, 0x8ACD, 0xE67A, 0x8AC2, 0xE67B, 0x8ADA, + 0xE67C, 0x8AEB, 0xE67D, 0x8AF3, 0xE67E, 0x8AE7, 0xE680, 0x8AE4, 0xE681, 0x8AF1, 0xE682, 0x8B14, 0xE683, 0x8AE0, 0xE684, 0x8AE2, + 0xE685, 0x8AF7, 0xE686, 0x8ADE, 0xE687, 0x8ADB, 0xE688, 0x8B0C, 0xE689, 0x8B07, 0xE68A, 0x8B1A, 0xE68B, 0x8AE1, 0xE68C, 0x8B16, + 0xE68D, 0x8B10, 0xE68E, 0x8B17, 0xE68F, 0x8B20, 0xE690, 0x8B33, 0xE691, 0x97AB, 0xE692, 0x8B26, 0xE693, 0x8B2B, 0xE694, 0x8B3E, + 0xE695, 0x8B28, 0xE696, 0x8B41, 0xE697, 0x8B4C, 0xE698, 0x8B4F, 0xE699, 0x8B4E, 0xE69A, 0x8B49, 0xE69B, 0x8B56, 0xE69C, 0x8B5B, + 0xE69D, 0x8B5A, 0xE69E, 0x8B6B, 0xE69F, 0x8B5F, 0xE6A0, 0x8B6C, 0xE6A1, 0x8B6F, 0xE6A2, 0x8B74, 0xE6A3, 0x8B7D, 0xE6A4, 0x8B80, + 0xE6A5, 0x8B8C, 0xE6A6, 0x8B8E, 0xE6A7, 0x8B92, 0xE6A8, 0x8B93, 0xE6A9, 0x8B96, 0xE6AA, 0x8B99, 0xE6AB, 0x8B9A, 0xE6AC, 0x8C3A, + 0xE6AD, 0x8C41, 0xE6AE, 0x8C3F, 0xE6AF, 0x8C48, 0xE6B0, 0x8C4C, 0xE6B1, 0x8C4E, 0xE6B2, 0x8C50, 0xE6B3, 0x8C55, 0xE6B4, 0x8C62, + 0xE6B5, 0x8C6C, 0xE6B6, 0x8C78, 0xE6B7, 0x8C7A, 0xE6B8, 0x8C82, 0xE6B9, 0x8C89, 0xE6BA, 0x8C85, 0xE6BB, 0x8C8A, 0xE6BC, 0x8C8D, + 0xE6BD, 0x8C8E, 0xE6BE, 0x8C94, 0xE6BF, 0x8C7C, 0xE6C0, 0x8C98, 0xE6C1, 0x621D, 0xE6C2, 0x8CAD, 0xE6C3, 0x8CAA, 0xE6C4, 0x8CBD, + 0xE6C5, 0x8CB2, 0xE6C6, 0x8CB3, 0xE6C7, 0x8CAE, 0xE6C8, 0x8CB6, 0xE6C9, 0x8CC8, 0xE6CA, 0x8CC1, 0xE6CB, 0x8CE4, 0xE6CC, 0x8CE3, + 0xE6CD, 0x8CDA, 0xE6CE, 0x8CFD, 0xE6CF, 0x8CFA, 0xE6D0, 0x8CFB, 0xE6D1, 0x8D04, 0xE6D2, 0x8D05, 0xE6D3, 0x8D0A, 0xE6D4, 0x8D07, + 0xE6D5, 0x8D0F, 0xE6D6, 0x8D0D, 0xE6D7, 0x8D10, 0xE6D8, 0x9F4E, 0xE6D9, 0x8D13, 0xE6DA, 0x8CCD, 0xE6DB, 0x8D14, 0xE6DC, 0x8D16, + 0xE6DD, 0x8D67, 0xE6DE, 0x8D6D, 0xE6DF, 0x8D71, 0xE6E0, 0x8D73, 0xE6E1, 0x8D81, 0xE6E2, 0x8D99, 0xE6E3, 0x8DC2, 0xE6E4, 0x8DBE, + 0xE6E5, 0x8DBA, 0xE6E6, 0x8DCF, 0xE6E7, 0x8DDA, 0xE6E8, 0x8DD6, 0xE6E9, 0x8DCC, 0xE6EA, 0x8DDB, 0xE6EB, 0x8DCB, 0xE6EC, 0x8DEA, + 0xE6ED, 0x8DEB, 0xE6EE, 0x8DDF, 0xE6EF, 0x8DE3, 0xE6F0, 0x8DFC, 0xE6F1, 0x8E08, 0xE6F2, 0x8E09, 0xE6F3, 0x8DFF, 0xE6F4, 0x8E1D, + 0xE6F5, 0x8E1E, 0xE6F6, 0x8E10, 0xE6F7, 0x8E1F, 0xE6F8, 0x8E42, 0xE6F9, 0x8E35, 0xE6FA, 0x8E30, 0xE6FB, 0x8E34, 0xE6FC, 0x8E4A, + 0xE740, 0x8E47, 0xE741, 0x8E49, 0xE742, 0x8E4C, 0xE743, 0x8E50, 0xE744, 0x8E48, 0xE745, 0x8E59, 0xE746, 0x8E64, 0xE747, 0x8E60, + 0xE748, 0x8E2A, 0xE749, 0x8E63, 0xE74A, 0x8E55, 0xE74B, 0x8E76, 0xE74C, 0x8E72, 0xE74D, 0x8E7C, 0xE74E, 0x8E81, 0xE74F, 0x8E87, + 0xE750, 0x8E85, 0xE751, 0x8E84, 0xE752, 0x8E8B, 0xE753, 0x8E8A, 0xE754, 0x8E93, 0xE755, 0x8E91, 0xE756, 0x8E94, 0xE757, 0x8E99, + 0xE758, 0x8EAA, 0xE759, 0x8EA1, 0xE75A, 0x8EAC, 0xE75B, 0x8EB0, 0xE75C, 0x8EC6, 0xE75D, 0x8EB1, 0xE75E, 0x8EBE, 0xE75F, 0x8EC5, + 0xE760, 0x8EC8, 0xE761, 0x8ECB, 0xE762, 0x8EDB, 0xE763, 0x8EE3, 0xE764, 0x8EFC, 0xE765, 0x8EFB, 0xE766, 0x8EEB, 0xE767, 0x8EFE, + 0xE768, 0x8F0A, 0xE769, 0x8F05, 0xE76A, 0x8F15, 0xE76B, 0x8F12, 0xE76C, 0x8F19, 0xE76D, 0x8F13, 0xE76E, 0x8F1C, 0xE76F, 0x8F1F, + 0xE770, 0x8F1B, 0xE771, 0x8F0C, 0xE772, 0x8F26, 0xE773, 0x8F33, 0xE774, 0x8F3B, 0xE775, 0x8F39, 0xE776, 0x8F45, 0xE777, 0x8F42, + 0xE778, 0x8F3E, 0xE779, 0x8F4C, 0xE77A, 0x8F49, 0xE77B, 0x8F46, 0xE77C, 0x8F4E, 0xE77D, 0x8F57, 0xE77E, 0x8F5C, 0xE780, 0x8F62, + 0xE781, 0x8F63, 0xE782, 0x8F64, 0xE783, 0x8F9C, 0xE784, 0x8F9F, 0xE785, 0x8FA3, 0xE786, 0x8FAD, 0xE787, 0x8FAF, 0xE788, 0x8FB7, + 0xE789, 0x8FDA, 0xE78A, 0x8FE5, 0xE78B, 0x8FE2, 0xE78C, 0x8FEA, 0xE78D, 0x8FEF, 0xE78E, 0x9087, 0xE78F, 0x8FF4, 0xE790, 0x9005, + 0xE791, 0x8FF9, 0xE792, 0x8FFA, 0xE793, 0x9011, 0xE794, 0x9015, 0xE795, 0x9021, 0xE796, 0x900D, 0xE797, 0x901E, 0xE798, 0x9016, + 0xE799, 0x900B, 0xE79A, 0x9027, 0xE79B, 0x9036, 0xE79C, 0x9035, 0xE79D, 0x9039, 0xE79E, 0x8FF8, 0xE79F, 0x904F, 0xE7A0, 0x9050, + 0xE7A1, 0x9051, 0xE7A2, 0x9052, 0xE7A3, 0x900E, 0xE7A4, 0x9049, 0xE7A5, 0x903E, 0xE7A6, 0x9056, 0xE7A7, 0x9058, 0xE7A8, 0x905E, + 0xE7A9, 0x9068, 0xE7AA, 0x906F, 0xE7AB, 0x9076, 0xE7AC, 0x96A8, 0xE7AD, 0x9072, 0xE7AE, 0x9082, 0xE7AF, 0x907D, 0xE7B0, 0x9081, + 0xE7B1, 0x9080, 0xE7B2, 0x908A, 0xE7B3, 0x9089, 0xE7B4, 0x908F, 0xE7B5, 0x90A8, 0xE7B6, 0x90AF, 0xE7B7, 0x90B1, 0xE7B8, 0x90B5, + 0xE7B9, 0x90E2, 0xE7BA, 0x90E4, 0xE7BB, 0x6248, 0xE7BC, 0x90DB, 0xE7BD, 0x9102, 0xE7BE, 0x9112, 0xE7BF, 0x9119, 0xE7C0, 0x9132, + 0xE7C1, 0x9130, 0xE7C2, 0x914A, 0xE7C3, 0x9156, 0xE7C4, 0x9158, 0xE7C5, 0x9163, 0xE7C6, 0x9165, 0xE7C7, 0x9169, 0xE7C8, 0x9173, + 0xE7C9, 0x9172, 0xE7CA, 0x918B, 0xE7CB, 0x9189, 0xE7CC, 0x9182, 0xE7CD, 0x91A2, 0xE7CE, 0x91AB, 0xE7CF, 0x91AF, 0xE7D0, 0x91AA, + 0xE7D1, 0x91B5, 0xE7D2, 0x91B4, 0xE7D3, 0x91BA, 0xE7D4, 0x91C0, 0xE7D5, 0x91C1, 0xE7D6, 0x91C9, 0xE7D7, 0x91CB, 0xE7D8, 0x91D0, + 0xE7D9, 0x91D6, 0xE7DA, 0x91DF, 0xE7DB, 0x91E1, 0xE7DC, 0x91DB, 0xE7DD, 0x91FC, 0xE7DE, 0x91F5, 0xE7DF, 0x91F6, 0xE7E0, 0x921E, + 0xE7E1, 0x91FF, 0xE7E2, 0x9214, 0xE7E3, 0x922C, 0xE7E4, 0x9215, 0xE7E5, 0x9211, 0xE7E6, 0x925E, 0xE7E7, 0x9257, 0xE7E8, 0x9245, + 0xE7E9, 0x9249, 0xE7EA, 0x9264, 0xE7EB, 0x9248, 0xE7EC, 0x9295, 0xE7ED, 0x923F, 0xE7EE, 0x924B, 0xE7EF, 0x9250, 0xE7F0, 0x929C, + 0xE7F1, 0x9296, 0xE7F2, 0x9293, 0xE7F3, 0x929B, 0xE7F4, 0x925A, 0xE7F5, 0x92CF, 0xE7F6, 0x92B9, 0xE7F7, 0x92B7, 0xE7F8, 0x92E9, + 0xE7F9, 0x930F, 0xE7FA, 0x92FA, 0xE7FB, 0x9344, 0xE7FC, 0x932E, 0xE840, 0x9319, 0xE841, 0x9322, 0xE842, 0x931A, 0xE843, 0x9323, + 0xE844, 0x933A, 0xE845, 0x9335, 0xE846, 0x933B, 0xE847, 0x935C, 0xE848, 0x9360, 0xE849, 0x937C, 0xE84A, 0x936E, 0xE84B, 0x9356, + 0xE84C, 0x93B0, 0xE84D, 0x93AC, 0xE84E, 0x93AD, 0xE84F, 0x9394, 0xE850, 0x93B9, 0xE851, 0x93D6, 0xE852, 0x93D7, 0xE853, 0x93E8, + 0xE854, 0x93E5, 0xE855, 0x93D8, 0xE856, 0x93C3, 0xE857, 0x93DD, 0xE858, 0x93D0, 0xE859, 0x93C8, 0xE85A, 0x93E4, 0xE85B, 0x941A, + 0xE85C, 0x9414, 0xE85D, 0x9413, 0xE85E, 0x9403, 0xE85F, 0x9407, 0xE860, 0x9410, 0xE861, 0x9436, 0xE862, 0x942B, 0xE863, 0x9435, + 0xE864, 0x9421, 0xE865, 0x943A, 0xE866, 0x9441, 0xE867, 0x9452, 0xE868, 0x9444, 0xE869, 0x945B, 0xE86A, 0x9460, 0xE86B, 0x9462, + 0xE86C, 0x945E, 0xE86D, 0x946A, 0xE86E, 0x9229, 0xE86F, 0x9470, 0xE870, 0x9475, 0xE871, 0x9477, 0xE872, 0x947D, 0xE873, 0x945A, + 0xE874, 0x947C, 0xE875, 0x947E, 0xE876, 0x9481, 0xE877, 0x947F, 0xE878, 0x9582, 0xE879, 0x9587, 0xE87A, 0x958A, 0xE87B, 0x9594, + 0xE87C, 0x9596, 0xE87D, 0x9598, 0xE87E, 0x9599, 0xE880, 0x95A0, 0xE881, 0x95A8, 0xE882, 0x95A7, 0xE883, 0x95AD, 0xE884, 0x95BC, + 0xE885, 0x95BB, 0xE886, 0x95B9, 0xE887, 0x95BE, 0xE888, 0x95CA, 0xE889, 0x6FF6, 0xE88A, 0x95C3, 0xE88B, 0x95CD, 0xE88C, 0x95CC, + 0xE88D, 0x95D5, 0xE88E, 0x95D4, 0xE88F, 0x95D6, 0xE890, 0x95DC, 0xE891, 0x95E1, 0xE892, 0x95E5, 0xE893, 0x95E2, 0xE894, 0x9621, + 0xE895, 0x9628, 0xE896, 0x962E, 0xE897, 0x962F, 0xE898, 0x9642, 0xE899, 0x964C, 0xE89A, 0x964F, 0xE89B, 0x964B, 0xE89C, 0x9677, + 0xE89D, 0x965C, 0xE89E, 0x965E, 0xE89F, 0x965D, 0xE8A0, 0x965F, 0xE8A1, 0x9666, 0xE8A2, 0x9672, 0xE8A3, 0x966C, 0xE8A4, 0x968D, + 0xE8A5, 0x9698, 0xE8A6, 0x9695, 0xE8A7, 0x9697, 0xE8A8, 0x96AA, 0xE8A9, 0x96A7, 0xE8AA, 0x96B1, 0xE8AB, 0x96B2, 0xE8AC, 0x96B0, + 0xE8AD, 0x96B4, 0xE8AE, 0x96B6, 0xE8AF, 0x96B8, 0xE8B0, 0x96B9, 0xE8B1, 0x96CE, 0xE8B2, 0x96CB, 0xE8B3, 0x96C9, 0xE8B4, 0x96CD, + 0xE8B5, 0x894D, 0xE8B6, 0x96DC, 0xE8B7, 0x970D, 0xE8B8, 0x96D5, 0xE8B9, 0x96F9, 0xE8BA, 0x9704, 0xE8BB, 0x9706, 0xE8BC, 0x9708, + 0xE8BD, 0x9713, 0xE8BE, 0x970E, 0xE8BF, 0x9711, 0xE8C0, 0x970F, 0xE8C1, 0x9716, 0xE8C2, 0x9719, 0xE8C3, 0x9724, 0xE8C4, 0x972A, + 0xE8C5, 0x9730, 0xE8C6, 0x9739, 0xE8C7, 0x973D, 0xE8C8, 0x973E, 0xE8C9, 0x9744, 0xE8CA, 0x9746, 0xE8CB, 0x9748, 0xE8CC, 0x9742, + 0xE8CD, 0x9749, 0xE8CE, 0x975C, 0xE8CF, 0x9760, 0xE8D0, 0x9764, 0xE8D1, 0x9766, 0xE8D2, 0x9768, 0xE8D3, 0x52D2, 0xE8D4, 0x976B, + 0xE8D5, 0x9771, 0xE8D6, 0x9779, 0xE8D7, 0x9785, 0xE8D8, 0x977C, 0xE8D9, 0x9781, 0xE8DA, 0x977A, 0xE8DB, 0x9786, 0xE8DC, 0x978B, + 0xE8DD, 0x978F, 0xE8DE, 0x9790, 0xE8DF, 0x979C, 0xE8E0, 0x97A8, 0xE8E1, 0x97A6, 0xE8E2, 0x97A3, 0xE8E3, 0x97B3, 0xE8E4, 0x97B4, + 0xE8E5, 0x97C3, 0xE8E6, 0x97C6, 0xE8E7, 0x97C8, 0xE8E8, 0x97CB, 0xE8E9, 0x97DC, 0xE8EA, 0x97ED, 0xE8EB, 0x9F4F, 0xE8EC, 0x97F2, + 0xE8ED, 0x7ADF, 0xE8EE, 0x97F6, 0xE8EF, 0x97F5, 0xE8F0, 0x980F, 0xE8F1, 0x980C, 0xE8F2, 0x9838, 0xE8F3, 0x9824, 0xE8F4, 0x9821, + 0xE8F5, 0x9837, 0xE8F6, 0x983D, 0xE8F7, 0x9846, 0xE8F8, 0x984F, 0xE8F9, 0x984B, 0xE8FA, 0x986B, 0xE8FB, 0x986F, 0xE8FC, 0x9870, + 0xE940, 0x9871, 0xE941, 0x9874, 0xE942, 0x9873, 0xE943, 0x98AA, 0xE944, 0x98AF, 0xE945, 0x98B1, 0xE946, 0x98B6, 0xE947, 0x98C4, + 0xE948, 0x98C3, 0xE949, 0x98C6, 0xE94A, 0x98E9, 0xE94B, 0x98EB, 0xE94C, 0x9903, 0xE94D, 0x9909, 0xE94E, 0x9912, 0xE94F, 0x9914, + 0xE950, 0x9918, 0xE951, 0x9921, 0xE952, 0x991D, 0xE953, 0x991E, 0xE954, 0x9924, 0xE955, 0x9920, 0xE956, 0x992C, 0xE957, 0x992E, + 0xE958, 0x993D, 0xE959, 0x993E, 0xE95A, 0x9942, 0xE95B, 0x9949, 0xE95C, 0x9945, 0xE95D, 0x9950, 0xE95E, 0x994B, 0xE95F, 0x9951, + 0xE960, 0x9952, 0xE961, 0x994C, 0xE962, 0x9955, 0xE963, 0x9997, 0xE964, 0x9998, 0xE965, 0x99A5, 0xE966, 0x99AD, 0xE967, 0x99AE, + 0xE968, 0x99BC, 0xE969, 0x99DF, 0xE96A, 0x99DB, 0xE96B, 0x99DD, 0xE96C, 0x99D8, 0xE96D, 0x99D1, 0xE96E, 0x99ED, 0xE96F, 0x99EE, + 0xE970, 0x99F1, 0xE971, 0x99F2, 0xE972, 0x99FB, 0xE973, 0x99F8, 0xE974, 0x9A01, 0xE975, 0x9A0F, 0xE976, 0x9A05, 0xE977, 0x99E2, + 0xE978, 0x9A19, 0xE979, 0x9A2B, 0xE97A, 0x9A37, 0xE97B, 0x9A45, 0xE97C, 0x9A42, 0xE97D, 0x9A40, 0xE97E, 0x9A43, 0xE980, 0x9A3E, + 0xE981, 0x9A55, 0xE982, 0x9A4D, 0xE983, 0x9A5B, 0xE984, 0x9A57, 0xE985, 0x9A5F, 0xE986, 0x9A62, 0xE987, 0x9A65, 0xE988, 0x9A64, + 0xE989, 0x9A69, 0xE98A, 0x9A6B, 0xE98B, 0x9A6A, 0xE98C, 0x9AAD, 0xE98D, 0x9AB0, 0xE98E, 0x9ABC, 0xE98F, 0x9AC0, 0xE990, 0x9ACF, + 0xE991, 0x9AD1, 0xE992, 0x9AD3, 0xE993, 0x9AD4, 0xE994, 0x9ADE, 0xE995, 0x9ADF, 0xE996, 0x9AE2, 0xE997, 0x9AE3, 0xE998, 0x9AE6, + 0xE999, 0x9AEF, 0xE99A, 0x9AEB, 0xE99B, 0x9AEE, 0xE99C, 0x9AF4, 0xE99D, 0x9AF1, 0xE99E, 0x9AF7, 0xE99F, 0x9AFB, 0xE9A0, 0x9B06, + 0xE9A1, 0x9B18, 0xE9A2, 0x9B1A, 0xE9A3, 0x9B1F, 0xE9A4, 0x9B22, 0xE9A5, 0x9B23, 0xE9A6, 0x9B25, 0xE9A7, 0x9B27, 0xE9A8, 0x9B28, + 0xE9A9, 0x9B29, 0xE9AA, 0x9B2A, 0xE9AB, 0x9B2E, 0xE9AC, 0x9B2F, 0xE9AD, 0x9B32, 0xE9AE, 0x9B44, 0xE9AF, 0x9B43, 0xE9B0, 0x9B4F, + 0xE9B1, 0x9B4D, 0xE9B2, 0x9B4E, 0xE9B3, 0x9B51, 0xE9B4, 0x9B58, 0xE9B5, 0x9B74, 0xE9B6, 0x9B93, 0xE9B7, 0x9B83, 0xE9B8, 0x9B91, + 0xE9B9, 0x9B96, 0xE9BA, 0x9B97, 0xE9BB, 0x9B9F, 0xE9BC, 0x9BA0, 0xE9BD, 0x9BA8, 0xE9BE, 0x9BB4, 0xE9BF, 0x9BC0, 0xE9C0, 0x9BCA, + 0xE9C1, 0x9BB9, 0xE9C2, 0x9BC6, 0xE9C3, 0x9BCF, 0xE9C4, 0x9BD1, 0xE9C5, 0x9BD2, 0xE9C6, 0x9BE3, 0xE9C7, 0x9BE2, 0xE9C8, 0x9BE4, + 0xE9C9, 0x9BD4, 0xE9CA, 0x9BE1, 0xE9CB, 0x9C3A, 0xE9CC, 0x9BF2, 0xE9CD, 0x9BF1, 0xE9CE, 0x9BF0, 0xE9CF, 0x9C15, 0xE9D0, 0x9C14, + 0xE9D1, 0x9C09, 0xE9D2, 0x9C13, 0xE9D3, 0x9C0C, 0xE9D4, 0x9C06, 0xE9D5, 0x9C08, 0xE9D6, 0x9C12, 0xE9D7, 0x9C0A, 0xE9D8, 0x9C04, + 0xE9D9, 0x9C2E, 0xE9DA, 0x9C1B, 0xE9DB, 0x9C25, 0xE9DC, 0x9C24, 0xE9DD, 0x9C21, 0xE9DE, 0x9C30, 0xE9DF, 0x9C47, 0xE9E0, 0x9C32, + 0xE9E1, 0x9C46, 0xE9E2, 0x9C3E, 0xE9E3, 0x9C5A, 0xE9E4, 0x9C60, 0xE9E5, 0x9C67, 0xE9E6, 0x9C76, 0xE9E7, 0x9C78, 0xE9E8, 0x9CE7, + 0xE9E9, 0x9CEC, 0xE9EA, 0x9CF0, 0xE9EB, 0x9D09, 0xE9EC, 0x9D08, 0xE9ED, 0x9CEB, 0xE9EE, 0x9D03, 0xE9EF, 0x9D06, 0xE9F0, 0x9D2A, + 0xE9F1, 0x9D26, 0xE9F2, 0x9DAF, 0xE9F3, 0x9D23, 0xE9F4, 0x9D1F, 0xE9F5, 0x9D44, 0xE9F6, 0x9D15, 0xE9F7, 0x9D12, 0xE9F8, 0x9D41, + 0xE9F9, 0x9D3F, 0xE9FA, 0x9D3E, 0xE9FB, 0x9D46, 0xE9FC, 0x9D48, 0xEA40, 0x9D5D, 0xEA41, 0x9D5E, 0xEA42, 0x9D64, 0xEA43, 0x9D51, + 0xEA44, 0x9D50, 0xEA45, 0x9D59, 0xEA46, 0x9D72, 0xEA47, 0x9D89, 0xEA48, 0x9D87, 0xEA49, 0x9DAB, 0xEA4A, 0x9D6F, 0xEA4B, 0x9D7A, + 0xEA4C, 0x9D9A, 0xEA4D, 0x9DA4, 0xEA4E, 0x9DA9, 0xEA4F, 0x9DB2, 0xEA50, 0x9DC4, 0xEA51, 0x9DC1, 0xEA52, 0x9DBB, 0xEA53, 0x9DB8, + 0xEA54, 0x9DBA, 0xEA55, 0x9DC6, 0xEA56, 0x9DCF, 0xEA57, 0x9DC2, 0xEA58, 0x9DD9, 0xEA59, 0x9DD3, 0xEA5A, 0x9DF8, 0xEA5B, 0x9DE6, + 0xEA5C, 0x9DED, 0xEA5D, 0x9DEF, 0xEA5E, 0x9DFD, 0xEA5F, 0x9E1A, 0xEA60, 0x9E1B, 0xEA61, 0x9E1E, 0xEA62, 0x9E75, 0xEA63, 0x9E79, + 0xEA64, 0x9E7D, 0xEA65, 0x9E81, 0xEA66, 0x9E88, 0xEA67, 0x9E8B, 0xEA68, 0x9E8C, 0xEA69, 0x9E92, 0xEA6A, 0x9E95, 0xEA6B, 0x9E91, + 0xEA6C, 0x9E9D, 0xEA6D, 0x9EA5, 0xEA6E, 0x9EA9, 0xEA6F, 0x9EB8, 0xEA70, 0x9EAA, 0xEA71, 0x9EAD, 0xEA72, 0x9761, 0xEA73, 0x9ECC, + 0xEA74, 0x9ECE, 0xEA75, 0x9ECF, 0xEA76, 0x9ED0, 0xEA77, 0x9ED4, 0xEA78, 0x9EDC, 0xEA79, 0x9EDE, 0xEA7A, 0x9EDD, 0xEA7B, 0x9EE0, + 0xEA7C, 0x9EE5, 0xEA7D, 0x9EE8, 0xEA7E, 0x9EEF, 0xEA80, 0x9EF4, 0xEA81, 0x9EF6, 0xEA82, 0x9EF7, 0xEA83, 0x9EF9, 0xEA84, 0x9EFB, + 0xEA85, 0x9EFC, 0xEA86, 0x9EFD, 0xEA87, 0x9F07, 0xEA88, 0x9F08, 0xEA89, 0x76B7, 0xEA8A, 0x9F15, 0xEA8B, 0x9F21, 0xEA8C, 0x9F2C, + 0xEA8D, 0x9F3E, 0xEA8E, 0x9F4A, 0xEA8F, 0x9F52, 0xEA90, 0x9F54, 0xEA91, 0x9F63, 0xEA92, 0x9F5F, 0xEA93, 0x9F60, 0xEA94, 0x9F61, + 0xEA95, 0x9F66, 0xEA96, 0x9F67, 0xEA97, 0x9F6C, 0xEA98, 0x9F6A, 0xEA99, 0x9F77, 0xEA9A, 0x9F72, 0xEA9B, 0x9F76, 0xEA9C, 0x9F95, + 0xEA9D, 0x9F9C, 0xEA9E, 0x9FA0, 0xEA9F, 0x582F, 0xEAA0, 0x69C7, 0xEAA1, 0x9059, 0xEAA2, 0x7464, 0xEAA3, 0x51DC, 0xEAA4, 0x7199, + 0xFA40, 0x2170, 0xFA41, 0x2171, 0xFA42, 0x2172, 0xFA43, 0x2173, 0xFA44, 0x2174, 0xFA45, 0x2175, 0xFA46, 0x2176, 0xFA47, 0x2177, + 0xFA48, 0x2178, 0xFA49, 0x2179, 0xFA55, 0xFFE4, 0xFA56, 0xFF07, 0xFA57, 0xFF02, 0xFA5C, 0x7E8A, 0xFA5D, 0x891C, 0xFA5E, 0x9348, + 0xFA5F, 0x9288, 0xFA60, 0x84DC, 0xFA61, 0x4FC9, 0xFA62, 0x70BB, 0xFA63, 0x6631, 0xFA64, 0x68C8, 0xFA65, 0x92F9, 0xFA66, 0x66FB, + 0xFA67, 0x5F45, 0xFA68, 0x4E28, 0xFA69, 0x4EE1, 0xFA6A, 0x4EFC, 0xFA6B, 0x4F00, 0xFA6C, 0x4F03, 0xFA6D, 0x4F39, 0xFA6E, 0x4F56, + 0xFA6F, 0x4F92, 0xFA70, 0x4F8A, 0xFA71, 0x4F9A, 0xFA72, 0x4F94, 0xFA73, 0x4FCD, 0xFA74, 0x5040, 0xFA75, 0x5022, 0xFA76, 0x4FFF, + 0xFA77, 0x501E, 0xFA78, 0x5046, 0xFA79, 0x5070, 0xFA7A, 0x5042, 0xFA7B, 0x5094, 0xFA7C, 0x50F4, 0xFA7D, 0x50D8, 0xFA7E, 0x514A, + 0xFA80, 0x5164, 0xFA81, 0x519D, 0xFA82, 0x51BE, 0xFA83, 0x51EC, 0xFA84, 0x5215, 0xFA85, 0x529C, 0xFA86, 0x52A6, 0xFA87, 0x52C0, + 0xFA88, 0x52DB, 0xFA89, 0x5300, 0xFA8A, 0x5307, 0xFA8B, 0x5324, 0xFA8C, 0x5372, 0xFA8D, 0x5393, 0xFA8E, 0x53B2, 0xFA8F, 0x53DD, + 0xFA90, 0xFA0E, 0xFA91, 0x549C, 0xFA92, 0x548A, 0xFA93, 0x54A9, 0xFA94, 0x54FF, 0xFA95, 0x5586, 0xFA96, 0x5759, 0xFA97, 0x5765, + 0xFA98, 0x57AC, 0xFA99, 0x57C8, 0xFA9A, 0x57C7, 0xFA9B, 0xFA0F, 0xFA9C, 0xFA10, 0xFA9D, 0x589E, 0xFA9E, 0x58B2, 0xFA9F, 0x590B, + 0xFAA0, 0x5953, 0xFAA1, 0x595B, 0xFAA2, 0x595D, 0xFAA3, 0x5963, 0xFAA4, 0x59A4, 0xFAA5, 0x59BA, 0xFAA6, 0x5B56, 0xFAA7, 0x5BC0, + 0xFAA8, 0x752F, 0xFAA9, 0x5BD8, 0xFAAA, 0x5BEC, 0xFAAB, 0x5C1E, 0xFAAC, 0x5CA6, 0xFAAD, 0x5CBA, 0xFAAE, 0x5CF5, 0xFAAF, 0x5D27, + 0xFAB0, 0x5D53, 0xFAB1, 0xFA11, 0xFAB2, 0x5D42, 0xFAB3, 0x5D6D, 0xFAB4, 0x5DB8, 0xFAB5, 0x5DB9, 0xFAB6, 0x5DD0, 0xFAB7, 0x5F21, + 0xFAB8, 0x5F34, 0xFAB9, 0x5F67, 0xFABA, 0x5FB7, 0xFABB, 0x5FDE, 0xFABC, 0x605D, 0xFABD, 0x6085, 0xFABE, 0x608A, 0xFABF, 0x60DE, + 0xFAC0, 0x60D5, 0xFAC1, 0x6120, 0xFAC2, 0x60F2, 0xFAC3, 0x6111, 0xFAC4, 0x6137, 0xFAC5, 0x6130, 0xFAC6, 0x6198, 0xFAC7, 0x6213, + 0xFAC8, 0x62A6, 0xFAC9, 0x63F5, 0xFACA, 0x6460, 0xFACB, 0x649D, 0xFACC, 0x64CE, 0xFACD, 0x654E, 0xFACE, 0x6600, 0xFACF, 0x6615, + 0xFAD0, 0x663B, 0xFAD1, 0x6609, 0xFAD2, 0x662E, 0xFAD3, 0x661E, 0xFAD4, 0x6624, 0xFAD5, 0x6665, 0xFAD6, 0x6657, 0xFAD7, 0x6659, + 0xFAD8, 0xFA12, 0xFAD9, 0x6673, 0xFADA, 0x6699, 0xFADB, 0x66A0, 0xFADC, 0x66B2, 0xFADD, 0x66BF, 0xFADE, 0x66FA, 0xFADF, 0x670E, + 0xFAE0, 0xF929, 0xFAE1, 0x6766, 0xFAE2, 0x67BB, 0xFAE3, 0x6852, 0xFAE4, 0x67C0, 0xFAE5, 0x6801, 0xFAE6, 0x6844, 0xFAE7, 0x68CF, + 0xFAE8, 0xFA13, 0xFAE9, 0x6968, 0xFAEA, 0xFA14, 0xFAEB, 0x6998, 0xFAEC, 0x69E2, 0xFAED, 0x6A30, 0xFAEE, 0x6A6B, 0xFAEF, 0x6A46, + 0xFAF0, 0x6A73, 0xFAF1, 0x6A7E, 0xFAF2, 0x6AE2, 0xFAF3, 0x6AE4, 0xFAF4, 0x6BD6, 0xFAF5, 0x6C3F, 0xFAF6, 0x6C5C, 0xFAF7, 0x6C86, + 0xFAF8, 0x6C6F, 0xFAF9, 0x6CDA, 0xFAFA, 0x6D04, 0xFAFB, 0x6D87, 0xFAFC, 0x6D6F, 0xFB40, 0x6D96, 0xFB41, 0x6DAC, 0xFB42, 0x6DCF, + 0xFB43, 0x6DF8, 0xFB44, 0x6DF2, 0xFB45, 0x6DFC, 0xFB46, 0x6E39, 0xFB47, 0x6E5C, 0xFB48, 0x6E27, 0xFB49, 0x6E3C, 0xFB4A, 0x6EBF, + 0xFB4B, 0x6F88, 0xFB4C, 0x6FB5, 0xFB4D, 0x6FF5, 0xFB4E, 0x7005, 0xFB4F, 0x7007, 0xFB50, 0x7028, 0xFB51, 0x7085, 0xFB52, 0x70AB, + 0xFB53, 0x710F, 0xFB54, 0x7104, 0xFB55, 0x715C, 0xFB56, 0x7146, 0xFB57, 0x7147, 0xFB58, 0xFA15, 0xFB59, 0x71C1, 0xFB5A, 0x71FE, + 0xFB5B, 0x72B1, 0xFB5C, 0x72BE, 0xFB5D, 0x7324, 0xFB5E, 0xFA16, 0xFB5F, 0x7377, 0xFB60, 0x73BD, 0xFB61, 0x73C9, 0xFB62, 0x73D6, + 0xFB63, 0x73E3, 0xFB64, 0x73D2, 0xFB65, 0x7407, 0xFB66, 0x73F5, 0xFB67, 0x7426, 0xFB68, 0x742A, 0xFB69, 0x7429, 0xFB6A, 0x742E, + 0xFB6B, 0x7462, 0xFB6C, 0x7489, 0xFB6D, 0x749F, 0xFB6E, 0x7501, 0xFB6F, 0x756F, 0xFB70, 0x7682, 0xFB71, 0x769C, 0xFB72, 0x769E, + 0xFB73, 0x769B, 0xFB74, 0x76A6, 0xFB75, 0xFA17, 0xFB76, 0x7746, 0xFB77, 0x52AF, 0xFB78, 0x7821, 0xFB79, 0x784E, 0xFB7A, 0x7864, + 0xFB7B, 0x787A, 0xFB7C, 0x7930, 0xFB7D, 0xFA18, 0xFB7E, 0xFA19, 0xFB80, 0xFA1A, 0xFB81, 0x7994, 0xFB82, 0xFA1B, 0xFB83, 0x799B, + 0xFB84, 0x7AD1, 0xFB85, 0x7AE7, 0xFB86, 0xFA1C, 0xFB87, 0x7AEB, 0xFB88, 0x7B9E, 0xFB89, 0xFA1D, 0xFB8A, 0x7D48, 0xFB8B, 0x7D5C, + 0xFB8C, 0x7DB7, 0xFB8D, 0x7DA0, 0xFB8E, 0x7DD6, 0xFB8F, 0x7E52, 0xFB90, 0x7F47, 0xFB91, 0x7FA1, 0xFB92, 0xFA1E, 0xFB93, 0x8301, + 0xFB94, 0x8362, 0xFB95, 0x837F, 0xFB96, 0x83C7, 0xFB97, 0x83F6, 0xFB98, 0x8448, 0xFB99, 0x84B4, 0xFB9A, 0x8553, 0xFB9B, 0x8559, + 0xFB9C, 0x856B, 0xFB9D, 0xFA1F, 0xFB9E, 0x85B0, 0xFB9F, 0xFA20, 0xFBA0, 0xFA21, 0xFBA1, 0x8807, 0xFBA2, 0x88F5, 0xFBA3, 0x8A12, + 0xFBA4, 0x8A37, 0xFBA5, 0x8A79, 0xFBA6, 0x8AA7, 0xFBA7, 0x8ABE, 0xFBA8, 0x8ADF, 0xFBA9, 0xFA22, 0xFBAA, 0x8AF6, 0xFBAB, 0x8B53, + 0xFBAC, 0x8B7F, 0xFBAD, 0x8CF0, 0xFBAE, 0x8CF4, 0xFBAF, 0x8D12, 0xFBB0, 0x8D76, 0xFBB1, 0xFA23, 0xFBB2, 0x8ECF, 0xFBB3, 0xFA24, + 0xFBB4, 0xFA25, 0xFBB5, 0x9067, 0xFBB6, 0x90DE, 0xFBB7, 0xFA26, 0xFBB8, 0x9115, 0xFBB9, 0x9127, 0xFBBA, 0x91DA, 0xFBBB, 0x91D7, + 0xFBBC, 0x91DE, 0xFBBD, 0x91ED, 0xFBBE, 0x91EE, 0xFBBF, 0x91E4, 0xFBC0, 0x91E5, 0xFBC1, 0x9206, 0xFBC2, 0x9210, 0xFBC3, 0x920A, + 0xFBC4, 0x923A, 0xFBC5, 0x9240, 0xFBC6, 0x923C, 0xFBC7, 0x924E, 0xFBC8, 0x9259, 0xFBC9, 0x9251, 0xFBCA, 0x9239, 0xFBCB, 0x9267, + 0xFBCC, 0x92A7, 0xFBCD, 0x9277, 0xFBCE, 0x9278, 0xFBCF, 0x92E7, 0xFBD0, 0x92D7, 0xFBD1, 0x92D9, 0xFBD2, 0x92D0, 0xFBD3, 0xFA27, + 0xFBD4, 0x92D5, 0xFBD5, 0x92E0, 0xFBD6, 0x92D3, 0xFBD7, 0x9325, 0xFBD8, 0x9321, 0xFBD9, 0x92FB, 0xFBDA, 0xFA28, 0xFBDB, 0x931E, + 0xFBDC, 0x92FF, 0xFBDD, 0x931D, 0xFBDE, 0x9302, 0xFBDF, 0x9370, 0xFBE0, 0x9357, 0xFBE1, 0x93A4, 0xFBE2, 0x93C6, 0xFBE3, 0x93DE, + 0xFBE4, 0x93F8, 0xFBE5, 0x9431, 0xFBE6, 0x9445, 0xFBE7, 0x9448, 0xFBE8, 0x9592, 0xFBE9, 0xF9DC, 0xFBEA, 0xFA29, 0xFBEB, 0x969D, + 0xFBEC, 0x96AF, 0xFBED, 0x9733, 0xFBEE, 0x973B, 0xFBEF, 0x9743, 0xFBF0, 0x974D, 0xFBF1, 0x974F, 0xFBF2, 0x9751, 0xFBF3, 0x9755, + 0xFBF4, 0x9857, 0xFBF5, 0x9865, 0xFBF6, 0xFA2A, 0xFBF7, 0xFA2B, 0xFBF8, 0x9927, 0xFBF9, 0xFA2C, 0xFBFA, 0x999E, 0xFBFB, 0x9A4E, + 0xFBFC, 0x9AD9, 0xFC40, 0x9ADC, 0xFC41, 0x9B75, 0xFC42, 0x9B72, 0xFC43, 0x9B8F, 0xFC44, 0x9BB1, 0xFC45, 0x9BBB, 0xFC46, 0x9C00, + 0xFC47, 0x9D70, 0xFC48, 0x9D6B, 0xFC49, 0xFA2D, 0xFC4A, 0x9E19, 0xFC4B, 0x9ED1, 0, 0 +}; +#endif + +#if FF_CODE_PAGE == 936 || FF_CODE_PAGE == 0 /* Simplified Chinese */ +static const WCHAR uni2oem936[] = { /* Unicode --> GBK pairs */ + 0x00A4, 0xA1E8, 0x00A7, 0xA1EC, 0x00A8, 0xA1A7, 0x00B0, 0xA1E3, 0x00B1, 0xA1C0, 0x00B7, 0xA1A4, 0x00D7, 0xA1C1, 0x00E0, 0xA8A4, + 0x00E1, 0xA8A2, 0x00E8, 0xA8A8, 0x00E9, 0xA8A6, 0x00EA, 0xA8BA, 0x00EC, 0xA8AC, 0x00ED, 0xA8AA, 0x00F2, 0xA8B0, 0x00F3, 0xA8AE, + 0x00F7, 0xA1C2, 0x00F9, 0xA8B4, 0x00FA, 0xA8B2, 0x00FC, 0xA8B9, 0x0101, 0xA8A1, 0x0113, 0xA8A5, 0x011B, 0xA8A7, 0x012B, 0xA8A9, + 0x0144, 0xA8BD, 0x0148, 0xA8BE, 0x014D, 0xA8AD, 0x016B, 0xA8B1, 0x01CE, 0xA8A3, 0x01D0, 0xA8AB, 0x01D2, 0xA8AF, 0x01D4, 0xA8B3, + 0x01D6, 0xA8B5, 0x01D8, 0xA8B6, 0x01DA, 0xA8B7, 0x01DC, 0xA8B8, 0x0251, 0xA8BB, 0x0261, 0xA8C0, 0x02C7, 0xA1A6, 0x02C9, 0xA1A5, + 0x02CA, 0xA840, 0x02CB, 0xA841, 0x02D9, 0xA842, 0x0391, 0xA6A1, 0x0392, 0xA6A2, 0x0393, 0xA6A3, 0x0394, 0xA6A4, 0x0395, 0xA6A5, + 0x0396, 0xA6A6, 0x0397, 0xA6A7, 0x0398, 0xA6A8, 0x0399, 0xA6A9, 0x039A, 0xA6AA, 0x039B, 0xA6AB, 0x039C, 0xA6AC, 0x039D, 0xA6AD, + 0x039E, 0xA6AE, 0x039F, 0xA6AF, 0x03A0, 0xA6B0, 0x03A1, 0xA6B1, 0x03A3, 0xA6B2, 0x03A4, 0xA6B3, 0x03A5, 0xA6B4, 0x03A6, 0xA6B5, + 0x03A7, 0xA6B6, 0x03A8, 0xA6B7, 0x03A9, 0xA6B8, 0x03B1, 0xA6C1, 0x03B2, 0xA6C2, 0x03B3, 0xA6C3, 0x03B4, 0xA6C4, 0x03B5, 0xA6C5, + 0x03B6, 0xA6C6, 0x03B7, 0xA6C7, 0x03B8, 0xA6C8, 0x03B9, 0xA6C9, 0x03BA, 0xA6CA, 0x03BB, 0xA6CB, 0x03BC, 0xA6CC, 0x03BD, 0xA6CD, + 0x03BE, 0xA6CE, 0x03BF, 0xA6CF, 0x03C0, 0xA6D0, 0x03C1, 0xA6D1, 0x03C3, 0xA6D2, 0x03C4, 0xA6D3, 0x03C5, 0xA6D4, 0x03C6, 0xA6D5, + 0x03C7, 0xA6D6, 0x03C8, 0xA6D7, 0x03C9, 0xA6D8, 0x0401, 0xA7A7, 0x0410, 0xA7A1, 0x0411, 0xA7A2, 0x0412, 0xA7A3, 0x0413, 0xA7A4, + 0x0414, 0xA7A5, 0x0415, 0xA7A6, 0x0416, 0xA7A8, 0x0417, 0xA7A9, 0x0418, 0xA7AA, 0x0419, 0xA7AB, 0x041A, 0xA7AC, 0x041B, 0xA7AD, + 0x041C, 0xA7AE, 0x041D, 0xA7AF, 0x041E, 0xA7B0, 0x041F, 0xA7B1, 0x0420, 0xA7B2, 0x0421, 0xA7B3, 0x0422, 0xA7B4, 0x0423, 0xA7B5, + 0x0424, 0xA7B6, 0x0425, 0xA7B7, 0x0426, 0xA7B8, 0x0427, 0xA7B9, 0x0428, 0xA7BA, 0x0429, 0xA7BB, 0x042A, 0xA7BC, 0x042B, 0xA7BD, + 0x042C, 0xA7BE, 0x042D, 0xA7BF, 0x042E, 0xA7C0, 0x042F, 0xA7C1, 0x0430, 0xA7D1, 0x0431, 0xA7D2, 0x0432, 0xA7D3, 0x0433, 0xA7D4, + 0x0434, 0xA7D5, 0x0435, 0xA7D6, 0x0436, 0xA7D8, 0x0437, 0xA7D9, 0x0438, 0xA7DA, 0x0439, 0xA7DB, 0x043A, 0xA7DC, 0x043B, 0xA7DD, + 0x043C, 0xA7DE, 0x043D, 0xA7DF, 0x043E, 0xA7E0, 0x043F, 0xA7E1, 0x0440, 0xA7E2, 0x0441, 0xA7E3, 0x0442, 0xA7E4, 0x0443, 0xA7E5, + 0x0444, 0xA7E6, 0x0445, 0xA7E7, 0x0446, 0xA7E8, 0x0447, 0xA7E9, 0x0448, 0xA7EA, 0x0449, 0xA7EB, 0x044A, 0xA7EC, 0x044B, 0xA7ED, + 0x044C, 0xA7EE, 0x044D, 0xA7EF, 0x044E, 0xA7F0, 0x044F, 0xA7F1, 0x0451, 0xA7D7, 0x2010, 0xA95C, 0x2013, 0xA843, 0x2014, 0xA1AA, + 0x2015, 0xA844, 0x2016, 0xA1AC, 0x2018, 0xA1AE, 0x2019, 0xA1AF, 0x201C, 0xA1B0, 0x201D, 0xA1B1, 0x2025, 0xA845, 0x2026, 0xA1AD, + 0x2030, 0xA1EB, 0x2032, 0xA1E4, 0x2033, 0xA1E5, 0x2035, 0xA846, 0x203B, 0xA1F9, 0x20AC, 0x0080, 0x2103, 0xA1E6, 0x2105, 0xA847, + 0x2109, 0xA848, 0x2116, 0xA1ED, 0x2121, 0xA959, 0x2160, 0xA2F1, 0x2161, 0xA2F2, 0x2162, 0xA2F3, 0x2163, 0xA2F4, 0x2164, 0xA2F5, + 0x2165, 0xA2F6, 0x2166, 0xA2F7, 0x2167, 0xA2F8, 0x2168, 0xA2F9, 0x2169, 0xA2FA, 0x216A, 0xA2FB, 0x216B, 0xA2FC, 0x2170, 0xA2A1, + 0x2171, 0xA2A2, 0x2172, 0xA2A3, 0x2173, 0xA2A4, 0x2174, 0xA2A5, 0x2175, 0xA2A6, 0x2176, 0xA2A7, 0x2177, 0xA2A8, 0x2178, 0xA2A9, + 0x2179, 0xA2AA, 0x2190, 0xA1FB, 0x2191, 0xA1FC, 0x2192, 0xA1FA, 0x2193, 0xA1FD, 0x2196, 0xA849, 0x2197, 0xA84A, 0x2198, 0xA84B, + 0x2199, 0xA84C, 0x2208, 0xA1CA, 0x220F, 0xA1C7, 0x2211, 0xA1C6, 0x2215, 0xA84D, 0x221A, 0xA1CC, 0x221D, 0xA1D8, 0x221E, 0xA1DE, + 0x221F, 0xA84E, 0x2220, 0xA1CF, 0x2223, 0xA84F, 0x2225, 0xA1CE, 0x2227, 0xA1C4, 0x2228, 0xA1C5, 0x2229, 0xA1C9, 0x222A, 0xA1C8, + 0x222B, 0xA1D2, 0x222E, 0xA1D3, 0x2234, 0xA1E0, 0x2235, 0xA1DF, 0x2236, 0xA1C3, 0x2237, 0xA1CB, 0x223D, 0xA1D7, 0x2248, 0xA1D6, + 0x224C, 0xA1D5, 0x2252, 0xA850, 0x2260, 0xA1D9, 0x2261, 0xA1D4, 0x2264, 0xA1DC, 0x2265, 0xA1DD, 0x2266, 0xA851, 0x2267, 0xA852, + 0x226E, 0xA1DA, 0x226F, 0xA1DB, 0x2295, 0xA892, 0x2299, 0xA1D1, 0x22A5, 0xA1CD, 0x22BF, 0xA853, 0x2312, 0xA1D0, 0x2460, 0xA2D9, + 0x2461, 0xA2DA, 0x2462, 0xA2DB, 0x2463, 0xA2DC, 0x2464, 0xA2DD, 0x2465, 0xA2DE, 0x2466, 0xA2DF, 0x2467, 0xA2E0, 0x2468, 0xA2E1, + 0x2469, 0xA2E2, 0x2474, 0xA2C5, 0x2475, 0xA2C6, 0x2476, 0xA2C7, 0x2477, 0xA2C8, 0x2478, 0xA2C9, 0x2479, 0xA2CA, 0x247A, 0xA2CB, + 0x247B, 0xA2CC, 0x247C, 0xA2CD, 0x247D, 0xA2CE, 0x247E, 0xA2CF, 0x247F, 0xA2D0, 0x2480, 0xA2D1, 0x2481, 0xA2D2, 0x2482, 0xA2D3, + 0x2483, 0xA2D4, 0x2484, 0xA2D5, 0x2485, 0xA2D6, 0x2486, 0xA2D7, 0x2487, 0xA2D8, 0x2488, 0xA2B1, 0x2489, 0xA2B2, 0x248A, 0xA2B3, + 0x248B, 0xA2B4, 0x248C, 0xA2B5, 0x248D, 0xA2B6, 0x248E, 0xA2B7, 0x248F, 0xA2B8, 0x2490, 0xA2B9, 0x2491, 0xA2BA, 0x2492, 0xA2BB, + 0x2493, 0xA2BC, 0x2494, 0xA2BD, 0x2495, 0xA2BE, 0x2496, 0xA2BF, 0x2497, 0xA2C0, 0x2498, 0xA2C1, 0x2499, 0xA2C2, 0x249A, 0xA2C3, + 0x249B, 0xA2C4, 0x2500, 0xA9A4, 0x2501, 0xA9A5, 0x2502, 0xA9A6, 0x2503, 0xA9A7, 0x2504, 0xA9A8, 0x2505, 0xA9A9, 0x2506, 0xA9AA, + 0x2507, 0xA9AB, 0x2508, 0xA9AC, 0x2509, 0xA9AD, 0x250A, 0xA9AE, 0x250B, 0xA9AF, 0x250C, 0xA9B0, 0x250D, 0xA9B1, 0x250E, 0xA9B2, + 0x250F, 0xA9B3, 0x2510, 0xA9B4, 0x2511, 0xA9B5, 0x2512, 0xA9B6, 0x2513, 0xA9B7, 0x2514, 0xA9B8, 0x2515, 0xA9B9, 0x2516, 0xA9BA, + 0x2517, 0xA9BB, 0x2518, 0xA9BC, 0x2519, 0xA9BD, 0x251A, 0xA9BE, 0x251B, 0xA9BF, 0x251C, 0xA9C0, 0x251D, 0xA9C1, 0x251E, 0xA9C2, + 0x251F, 0xA9C3, 0x2520, 0xA9C4, 0x2521, 0xA9C5, 0x2522, 0xA9C6, 0x2523, 0xA9C7, 0x2524, 0xA9C8, 0x2525, 0xA9C9, 0x2526, 0xA9CA, + 0x2527, 0xA9CB, 0x2528, 0xA9CC, 0x2529, 0xA9CD, 0x252A, 0xA9CE, 0x252B, 0xA9CF, 0x252C, 0xA9D0, 0x252D, 0xA9D1, 0x252E, 0xA9D2, + 0x252F, 0xA9D3, 0x2530, 0xA9D4, 0x2531, 0xA9D5, 0x2532, 0xA9D6, 0x2533, 0xA9D7, 0x2534, 0xA9D8, 0x2535, 0xA9D9, 0x2536, 0xA9DA, + 0x2537, 0xA9DB, 0x2538, 0xA9DC, 0x2539, 0xA9DD, 0x253A, 0xA9DE, 0x253B, 0xA9DF, 0x253C, 0xA9E0, 0x253D, 0xA9E1, 0x253E, 0xA9E2, + 0x253F, 0xA9E3, 0x2540, 0xA9E4, 0x2541, 0xA9E5, 0x2542, 0xA9E6, 0x2543, 0xA9E7, 0x2544, 0xA9E8, 0x2545, 0xA9E9, 0x2546, 0xA9EA, + 0x2547, 0xA9EB, 0x2548, 0xA9EC, 0x2549, 0xA9ED, 0x254A, 0xA9EE, 0x254B, 0xA9EF, 0x2550, 0xA854, 0x2551, 0xA855, 0x2552, 0xA856, + 0x2553, 0xA857, 0x2554, 0xA858, 0x2555, 0xA859, 0x2556, 0xA85A, 0x2557, 0xA85B, 0x2558, 0xA85C, 0x2559, 0xA85D, 0x255A, 0xA85E, + 0x255B, 0xA85F, 0x255C, 0xA860, 0x255D, 0xA861, 0x255E, 0xA862, 0x255F, 0xA863, 0x2560, 0xA864, 0x2561, 0xA865, 0x2562, 0xA866, + 0x2563, 0xA867, 0x2564, 0xA868, 0x2565, 0xA869, 0x2566, 0xA86A, 0x2567, 0xA86B, 0x2568, 0xA86C, 0x2569, 0xA86D, 0x256A, 0xA86E, + 0x256B, 0xA86F, 0x256C, 0xA870, 0x256D, 0xA871, 0x256E, 0xA872, 0x256F, 0xA873, 0x2570, 0xA874, 0x2571, 0xA875, 0x2572, 0xA876, + 0x2573, 0xA877, 0x2581, 0xA878, 0x2582, 0xA879, 0x2583, 0xA87A, 0x2584, 0xA87B, 0x2585, 0xA87C, 0x2586, 0xA87D, 0x2587, 0xA87E, + 0x2588, 0xA880, 0x2589, 0xA881, 0x258A, 0xA882, 0x258B, 0xA883, 0x258C, 0xA884, 0x258D, 0xA885, 0x258E, 0xA886, 0x258F, 0xA887, + 0x2593, 0xA888, 0x2594, 0xA889, 0x2595, 0xA88A, 0x25A0, 0xA1F6, 0x25A1, 0xA1F5, 0x25B2, 0xA1F8, 0x25B3, 0xA1F7, 0x25BC, 0xA88B, + 0x25BD, 0xA88C, 0x25C6, 0xA1F4, 0x25C7, 0xA1F3, 0x25CB, 0xA1F0, 0x25CE, 0xA1F2, 0x25CF, 0xA1F1, 0x25E2, 0xA88D, 0x25E3, 0xA88E, + 0x25E4, 0xA88F, 0x25E5, 0xA890, 0x2605, 0xA1EF, 0x2606, 0xA1EE, 0x2609, 0xA891, 0x2640, 0xA1E2, 0x2642, 0xA1E1, 0x3000, 0xA1A1, + 0x3001, 0xA1A2, 0x3002, 0xA1A3, 0x3003, 0xA1A8, 0x3005, 0xA1A9, 0x3006, 0xA965, 0x3007, 0xA996, 0x3008, 0xA1B4, 0x3009, 0xA1B5, + 0x300A, 0xA1B6, 0x300B, 0xA1B7, 0x300C, 0xA1B8, 0x300D, 0xA1B9, 0x300E, 0xA1BA, 0x300F, 0xA1BB, 0x3010, 0xA1BE, 0x3011, 0xA1BF, + 0x3012, 0xA893, 0x3013, 0xA1FE, 0x3014, 0xA1B2, 0x3015, 0xA1B3, 0x3016, 0xA1BC, 0x3017, 0xA1BD, 0x301D, 0xA894, 0x301E, 0xA895, + 0x3021, 0xA940, 0x3022, 0xA941, 0x3023, 0xA942, 0x3024, 0xA943, 0x3025, 0xA944, 0x3026, 0xA945, 0x3027, 0xA946, 0x3028, 0xA947, + 0x3029, 0xA948, 0x3041, 0xA4A1, 0x3042, 0xA4A2, 0x3043, 0xA4A3, 0x3044, 0xA4A4, 0x3045, 0xA4A5, 0x3046, 0xA4A6, 0x3047, 0xA4A7, + 0x3048, 0xA4A8, 0x3049, 0xA4A9, 0x304A, 0xA4AA, 0x304B, 0xA4AB, 0x304C, 0xA4AC, 0x304D, 0xA4AD, 0x304E, 0xA4AE, 0x304F, 0xA4AF, + 0x3050, 0xA4B0, 0x3051, 0xA4B1, 0x3052, 0xA4B2, 0x3053, 0xA4B3, 0x3054, 0xA4B4, 0x3055, 0xA4B5, 0x3056, 0xA4B6, 0x3057, 0xA4B7, + 0x3058, 0xA4B8, 0x3059, 0xA4B9, 0x305A, 0xA4BA, 0x305B, 0xA4BB, 0x305C, 0xA4BC, 0x305D, 0xA4BD, 0x305E, 0xA4BE, 0x305F, 0xA4BF, + 0x3060, 0xA4C0, 0x3061, 0xA4C1, 0x3062, 0xA4C2, 0x3063, 0xA4C3, 0x3064, 0xA4C4, 0x3065, 0xA4C5, 0x3066, 0xA4C6, 0x3067, 0xA4C7, + 0x3068, 0xA4C8, 0x3069, 0xA4C9, 0x306A, 0xA4CA, 0x306B, 0xA4CB, 0x306C, 0xA4CC, 0x306D, 0xA4CD, 0x306E, 0xA4CE, 0x306F, 0xA4CF, + 0x3070, 0xA4D0, 0x3071, 0xA4D1, 0x3072, 0xA4D2, 0x3073, 0xA4D3, 0x3074, 0xA4D4, 0x3075, 0xA4D5, 0x3076, 0xA4D6, 0x3077, 0xA4D7, + 0x3078, 0xA4D8, 0x3079, 0xA4D9, 0x307A, 0xA4DA, 0x307B, 0xA4DB, 0x307C, 0xA4DC, 0x307D, 0xA4DD, 0x307E, 0xA4DE, 0x307F, 0xA4DF, + 0x3080, 0xA4E0, 0x3081, 0xA4E1, 0x3082, 0xA4E2, 0x3083, 0xA4E3, 0x3084, 0xA4E4, 0x3085, 0xA4E5, 0x3086, 0xA4E6, 0x3087, 0xA4E7, + 0x3088, 0xA4E8, 0x3089, 0xA4E9, 0x308A, 0xA4EA, 0x308B, 0xA4EB, 0x308C, 0xA4EC, 0x308D, 0xA4ED, 0x308E, 0xA4EE, 0x308F, 0xA4EF, + 0x3090, 0xA4F0, 0x3091, 0xA4F1, 0x3092, 0xA4F2, 0x3093, 0xA4F3, 0x309B, 0xA961, 0x309C, 0xA962, 0x309D, 0xA966, 0x309E, 0xA967, + 0x30A1, 0xA5A1, 0x30A2, 0xA5A2, 0x30A3, 0xA5A3, 0x30A4, 0xA5A4, 0x30A5, 0xA5A5, 0x30A6, 0xA5A6, 0x30A7, 0xA5A7, 0x30A8, 0xA5A8, + 0x30A9, 0xA5A9, 0x30AA, 0xA5AA, 0x30AB, 0xA5AB, 0x30AC, 0xA5AC, 0x30AD, 0xA5AD, 0x30AE, 0xA5AE, 0x30AF, 0xA5AF, 0x30B0, 0xA5B0, + 0x30B1, 0xA5B1, 0x30B2, 0xA5B2, 0x30B3, 0xA5B3, 0x30B4, 0xA5B4, 0x30B5, 0xA5B5, 0x30B6, 0xA5B6, 0x30B7, 0xA5B7, 0x30B8, 0xA5B8, + 0x30B9, 0xA5B9, 0x30BA, 0xA5BA, 0x30BB, 0xA5BB, 0x30BC, 0xA5BC, 0x30BD, 0xA5BD, 0x30BE, 0xA5BE, 0x30BF, 0xA5BF, 0x30C0, 0xA5C0, + 0x30C1, 0xA5C1, 0x30C2, 0xA5C2, 0x30C3, 0xA5C3, 0x30C4, 0xA5C4, 0x30C5, 0xA5C5, 0x30C6, 0xA5C6, 0x30C7, 0xA5C7, 0x30C8, 0xA5C8, + 0x30C9, 0xA5C9, 0x30CA, 0xA5CA, 0x30CB, 0xA5CB, 0x30CC, 0xA5CC, 0x30CD, 0xA5CD, 0x30CE, 0xA5CE, 0x30CF, 0xA5CF, 0x30D0, 0xA5D0, + 0x30D1, 0xA5D1, 0x30D2, 0xA5D2, 0x30D3, 0xA5D3, 0x30D4, 0xA5D4, 0x30D5, 0xA5D5, 0x30D6, 0xA5D6, 0x30D7, 0xA5D7, 0x30D8, 0xA5D8, + 0x30D9, 0xA5D9, 0x30DA, 0xA5DA, 0x30DB, 0xA5DB, 0x30DC, 0xA5DC, 0x30DD, 0xA5DD, 0x30DE, 0xA5DE, 0x30DF, 0xA5DF, 0x30E0, 0xA5E0, + 0x30E1, 0xA5E1, 0x30E2, 0xA5E2, 0x30E3, 0xA5E3, 0x30E4, 0xA5E4, 0x30E5, 0xA5E5, 0x30E6, 0xA5E6, 0x30E7, 0xA5E7, 0x30E8, 0xA5E8, + 0x30E9, 0xA5E9, 0x30EA, 0xA5EA, 0x30EB, 0xA5EB, 0x30EC, 0xA5EC, 0x30ED, 0xA5ED, 0x30EE, 0xA5EE, 0x30EF, 0xA5EF, 0x30F0, 0xA5F0, + 0x30F1, 0xA5F1, 0x30F2, 0xA5F2, 0x30F3, 0xA5F3, 0x30F4, 0xA5F4, 0x30F5, 0xA5F5, 0x30F6, 0xA5F6, 0x30FC, 0xA960, 0x30FD, 0xA963, + 0x30FE, 0xA964, 0x3105, 0xA8C5, 0x3106, 0xA8C6, 0x3107, 0xA8C7, 0x3108, 0xA8C8, 0x3109, 0xA8C9, 0x310A, 0xA8CA, 0x310B, 0xA8CB, + 0x310C, 0xA8CC, 0x310D, 0xA8CD, 0x310E, 0xA8CE, 0x310F, 0xA8CF, 0x3110, 0xA8D0, 0x3111, 0xA8D1, 0x3112, 0xA8D2, 0x3113, 0xA8D3, + 0x3114, 0xA8D4, 0x3115, 0xA8D5, 0x3116, 0xA8D6, 0x3117, 0xA8D7, 0x3118, 0xA8D8, 0x3119, 0xA8D9, 0x311A, 0xA8DA, 0x311B, 0xA8DB, + 0x311C, 0xA8DC, 0x311D, 0xA8DD, 0x311E, 0xA8DE, 0x311F, 0xA8DF, 0x3120, 0xA8E0, 0x3121, 0xA8E1, 0x3122, 0xA8E2, 0x3123, 0xA8E3, + 0x3124, 0xA8E4, 0x3125, 0xA8E5, 0x3126, 0xA8E6, 0x3127, 0xA8E7, 0x3128, 0xA8E8, 0x3129, 0xA8E9, 0x3220, 0xA2E5, 0x3221, 0xA2E6, + 0x3222, 0xA2E7, 0x3223, 0xA2E8, 0x3224, 0xA2E9, 0x3225, 0xA2EA, 0x3226, 0xA2EB, 0x3227, 0xA2EC, 0x3228, 0xA2ED, 0x3229, 0xA2EE, + 0x3231, 0xA95A, 0x32A3, 0xA949, 0x338E, 0xA94A, 0x338F, 0xA94B, 0x339C, 0xA94C, 0x339D, 0xA94D, 0x339E, 0xA94E, 0x33A1, 0xA94F, + 0x33C4, 0xA950, 0x33CE, 0xA951, 0x33D1, 0xA952, 0x33D2, 0xA953, 0x33D5, 0xA954, 0x4E00, 0xD2BB, 0x4E01, 0xB6A1, 0x4E02, 0x8140, + 0x4E03, 0xC6DF, 0x4E04, 0x8141, 0x4E05, 0x8142, 0x4E06, 0x8143, 0x4E07, 0xCDF2, 0x4E08, 0xD5C9, 0x4E09, 0xC8FD, 0x4E0A, 0xC9CF, + 0x4E0B, 0xCFC2, 0x4E0C, 0xD8A2, 0x4E0D, 0xB2BB, 0x4E0E, 0xD3EB, 0x4E0F, 0x8144, 0x4E10, 0xD8A4, 0x4E11, 0xB3F3, 0x4E12, 0x8145, + 0x4E13, 0xD7A8, 0x4E14, 0xC7D2, 0x4E15, 0xD8A7, 0x4E16, 0xCAC0, 0x4E17, 0x8146, 0x4E18, 0xC7F0, 0x4E19, 0xB1FB, 0x4E1A, 0xD2B5, + 0x4E1B, 0xB4D4, 0x4E1C, 0xB6AB, 0x4E1D, 0xCBBF, 0x4E1E, 0xD8A9, 0x4E1F, 0x8147, 0x4E20, 0x8148, 0x4E21, 0x8149, 0x4E22, 0xB6AA, + 0x4E23, 0x814A, 0x4E24, 0xC1BD, 0x4E25, 0xD1CF, 0x4E26, 0x814B, 0x4E27, 0xC9A5, 0x4E28, 0xD8AD, 0x4E29, 0x814C, 0x4E2A, 0xB8F6, + 0x4E2B, 0xD1BE, 0x4E2C, 0xE3DC, 0x4E2D, 0xD6D0, 0x4E2E, 0x814D, 0x4E2F, 0x814E, 0x4E30, 0xB7E1, 0x4E31, 0x814F, 0x4E32, 0xB4AE, + 0x4E33, 0x8150, 0x4E34, 0xC1D9, 0x4E35, 0x8151, 0x4E36, 0xD8BC, 0x4E37, 0x8152, 0x4E38, 0xCDE8, 0x4E39, 0xB5A4, 0x4E3A, 0xCEAA, + 0x4E3B, 0xD6F7, 0x4E3C, 0x8153, 0x4E3D, 0xC0F6, 0x4E3E, 0xBED9, 0x4E3F, 0xD8AF, 0x4E40, 0x8154, 0x4E41, 0x8155, 0x4E42, 0x8156, + 0x4E43, 0xC4CB, 0x4E44, 0x8157, 0x4E45, 0xBEC3, 0x4E46, 0x8158, 0x4E47, 0xD8B1, 0x4E48, 0xC3B4, 0x4E49, 0xD2E5, 0x4E4A, 0x8159, + 0x4E4B, 0xD6AE, 0x4E4C, 0xCEDA, 0x4E4D, 0xD5A7, 0x4E4E, 0xBAF5, 0x4E4F, 0xB7A6, 0x4E50, 0xC0D6, 0x4E51, 0x815A, 0x4E52, 0xC6B9, + 0x4E53, 0xC5D2, 0x4E54, 0xC7C7, 0x4E55, 0x815B, 0x4E56, 0xB9D4, 0x4E57, 0x815C, 0x4E58, 0xB3CB, 0x4E59, 0xD2D2, 0x4E5A, 0x815D, + 0x4E5B, 0x815E, 0x4E5C, 0xD8BF, 0x4E5D, 0xBEC5, 0x4E5E, 0xC6F2, 0x4E5F, 0xD2B2, 0x4E60, 0xCFB0, 0x4E61, 0xCFE7, 0x4E62, 0x815F, + 0x4E63, 0x8160, 0x4E64, 0x8161, 0x4E65, 0x8162, 0x4E66, 0xCAE9, 0x4E67, 0x8163, 0x4E68, 0x8164, 0x4E69, 0xD8C0, 0x4E6A, 0x8165, + 0x4E6B, 0x8166, 0x4E6C, 0x8167, 0x4E6D, 0x8168, 0x4E6E, 0x8169, 0x4E6F, 0x816A, 0x4E70, 0xC2F2, 0x4E71, 0xC2D2, 0x4E72, 0x816B, + 0x4E73, 0xC8E9, 0x4E74, 0x816C, 0x4E75, 0x816D, 0x4E76, 0x816E, 0x4E77, 0x816F, 0x4E78, 0x8170, 0x4E79, 0x8171, 0x4E7A, 0x8172, + 0x4E7B, 0x8173, 0x4E7C, 0x8174, 0x4E7D, 0x8175, 0x4E7E, 0xC7AC, 0x4E7F, 0x8176, 0x4E80, 0x8177, 0x4E81, 0x8178, 0x4E82, 0x8179, + 0x4E83, 0x817A, 0x4E84, 0x817B, 0x4E85, 0x817C, 0x4E86, 0xC1CB, 0x4E87, 0x817D, 0x4E88, 0xD3E8, 0x4E89, 0xD5F9, 0x4E8A, 0x817E, + 0x4E8B, 0xCAC2, 0x4E8C, 0xB6FE, 0x4E8D, 0xD8A1, 0x4E8E, 0xD3DA, 0x4E8F, 0xBFF7, 0x4E90, 0x8180, 0x4E91, 0xD4C6, 0x4E92, 0xBBA5, + 0x4E93, 0xD8C1, 0x4E94, 0xCEE5, 0x4E95, 0xBEAE, 0x4E96, 0x8181, 0x4E97, 0x8182, 0x4E98, 0xD8A8, 0x4E99, 0x8183, 0x4E9A, 0xD1C7, + 0x4E9B, 0xD0A9, 0x4E9C, 0x8184, 0x4E9D, 0x8185, 0x4E9E, 0x8186, 0x4E9F, 0xD8BD, 0x4EA0, 0xD9EF, 0x4EA1, 0xCDF6, 0x4EA2, 0xBFBA, + 0x4EA3, 0x8187, 0x4EA4, 0xBDBB, 0x4EA5, 0xBAA5, 0x4EA6, 0xD2E0, 0x4EA7, 0xB2FA, 0x4EA8, 0xBAE0, 0x4EA9, 0xC4B6, 0x4EAA, 0x8188, + 0x4EAB, 0xCFED, 0x4EAC, 0xBEA9, 0x4EAD, 0xCDA4, 0x4EAE, 0xC1C1, 0x4EAF, 0x8189, 0x4EB0, 0x818A, 0x4EB1, 0x818B, 0x4EB2, 0xC7D7, + 0x4EB3, 0xD9F1, 0x4EB4, 0x818C, 0x4EB5, 0xD9F4, 0x4EB6, 0x818D, 0x4EB7, 0x818E, 0x4EB8, 0x818F, 0x4EB9, 0x8190, 0x4EBA, 0xC8CB, + 0x4EBB, 0xD8E9, 0x4EBC, 0x8191, 0x4EBD, 0x8192, 0x4EBE, 0x8193, 0x4EBF, 0xD2DA, 0x4EC0, 0xCAB2, 0x4EC1, 0xC8CA, 0x4EC2, 0xD8EC, + 0x4EC3, 0xD8EA, 0x4EC4, 0xD8C6, 0x4EC5, 0xBDF6, 0x4EC6, 0xC6CD, 0x4EC7, 0xB3F0, 0x4EC8, 0x8194, 0x4EC9, 0xD8EB, 0x4ECA, 0xBDF1, + 0x4ECB, 0xBDE9, 0x4ECC, 0x8195, 0x4ECD, 0xC8D4, 0x4ECE, 0xB4D3, 0x4ECF, 0x8196, 0x4ED0, 0x8197, 0x4ED1, 0xC2D8, 0x4ED2, 0x8198, + 0x4ED3, 0xB2D6, 0x4ED4, 0xD7D0, 0x4ED5, 0xCACB, 0x4ED6, 0xCBFB, 0x4ED7, 0xD5CC, 0x4ED8, 0xB8B6, 0x4ED9, 0xCFC9, 0x4EDA, 0x8199, + 0x4EDB, 0x819A, 0x4EDC, 0x819B, 0x4EDD, 0xD9DA, 0x4EDE, 0xD8F0, 0x4EDF, 0xC7AA, 0x4EE0, 0x819C, 0x4EE1, 0xD8EE, 0x4EE2, 0x819D, + 0x4EE3, 0xB4FA, 0x4EE4, 0xC1EE, 0x4EE5, 0xD2D4, 0x4EE6, 0x819E, 0x4EE7, 0x819F, 0x4EE8, 0xD8ED, 0x4EE9, 0x81A0, 0x4EEA, 0xD2C7, + 0x4EEB, 0xD8EF, 0x4EEC, 0xC3C7, 0x4EED, 0x81A1, 0x4EEE, 0x81A2, 0x4EEF, 0x81A3, 0x4EF0, 0xD1F6, 0x4EF1, 0x81A4, 0x4EF2, 0xD6D9, + 0x4EF3, 0xD8F2, 0x4EF4, 0x81A5, 0x4EF5, 0xD8F5, 0x4EF6, 0xBCFE, 0x4EF7, 0xBCDB, 0x4EF8, 0x81A6, 0x4EF9, 0x81A7, 0x4EFA, 0x81A8, + 0x4EFB, 0xC8CE, 0x4EFC, 0x81A9, 0x4EFD, 0xB7DD, 0x4EFE, 0x81AA, 0x4EFF, 0xB7C2, 0x4F00, 0x81AB, 0x4F01, 0xC6F3, 0x4F02, 0x81AC, + 0x4F03, 0x81AD, 0x4F04, 0x81AE, 0x4F05, 0x81AF, 0x4F06, 0x81B0, 0x4F07, 0x81B1, 0x4F08, 0x81B2, 0x4F09, 0xD8F8, 0x4F0A, 0xD2C1, + 0x4F0B, 0x81B3, 0x4F0C, 0x81B4, 0x4F0D, 0xCEE9, 0x4F0E, 0xBCBF, 0x4F0F, 0xB7FC, 0x4F10, 0xB7A5, 0x4F11, 0xD0DD, 0x4F12, 0x81B5, + 0x4F13, 0x81B6, 0x4F14, 0x81B7, 0x4F15, 0x81B8, 0x4F16, 0x81B9, 0x4F17, 0xD6DA, 0x4F18, 0xD3C5, 0x4F19, 0xBBEF, 0x4F1A, 0xBBE1, + 0x4F1B, 0xD8F1, 0x4F1C, 0x81BA, 0x4F1D, 0x81BB, 0x4F1E, 0xC9A1, 0x4F1F, 0xCEB0, 0x4F20, 0xB4AB, 0x4F21, 0x81BC, 0x4F22, 0xD8F3, + 0x4F23, 0x81BD, 0x4F24, 0xC9CB, 0x4F25, 0xD8F6, 0x4F26, 0xC2D7, 0x4F27, 0xD8F7, 0x4F28, 0x81BE, 0x4F29, 0x81BF, 0x4F2A, 0xCEB1, + 0x4F2B, 0xD8F9, 0x4F2C, 0x81C0, 0x4F2D, 0x81C1, 0x4F2E, 0x81C2, 0x4F2F, 0xB2AE, 0x4F30, 0xB9C0, 0x4F31, 0x81C3, 0x4F32, 0xD9A3, + 0x4F33, 0x81C4, 0x4F34, 0xB0E9, 0x4F35, 0x81C5, 0x4F36, 0xC1E6, 0x4F37, 0x81C6, 0x4F38, 0xC9EC, 0x4F39, 0x81C7, 0x4F3A, 0xCBC5, + 0x4F3B, 0x81C8, 0x4F3C, 0xCBC6, 0x4F3D, 0xD9A4, 0x4F3E, 0x81C9, 0x4F3F, 0x81CA, 0x4F40, 0x81CB, 0x4F41, 0x81CC, 0x4F42, 0x81CD, + 0x4F43, 0xB5E8, 0x4F44, 0x81CE, 0x4F45, 0x81CF, 0x4F46, 0xB5AB, 0x4F47, 0x81D0, 0x4F48, 0x81D1, 0x4F49, 0x81D2, 0x4F4A, 0x81D3, + 0x4F4B, 0x81D4, 0x4F4C, 0x81D5, 0x4F4D, 0xCEBB, 0x4F4E, 0xB5CD, 0x4F4F, 0xD7A1, 0x4F50, 0xD7F4, 0x4F51, 0xD3D3, 0x4F52, 0x81D6, + 0x4F53, 0xCCE5, 0x4F54, 0x81D7, 0x4F55, 0xBACE, 0x4F56, 0x81D8, 0x4F57, 0xD9A2, 0x4F58, 0xD9DC, 0x4F59, 0xD3E0, 0x4F5A, 0xD8FD, + 0x4F5B, 0xB7F0, 0x4F5C, 0xD7F7, 0x4F5D, 0xD8FE, 0x4F5E, 0xD8FA, 0x4F5F, 0xD9A1, 0x4F60, 0xC4E3, 0x4F61, 0x81D9, 0x4F62, 0x81DA, + 0x4F63, 0xD3B6, 0x4F64, 0xD8F4, 0x4F65, 0xD9DD, 0x4F66, 0x81DB, 0x4F67, 0xD8FB, 0x4F68, 0x81DC, 0x4F69, 0xC5E5, 0x4F6A, 0x81DD, + 0x4F6B, 0x81DE, 0x4F6C, 0xC0D0, 0x4F6D, 0x81DF, 0x4F6E, 0x81E0, 0x4F6F, 0xD1F0, 0x4F70, 0xB0DB, 0x4F71, 0x81E1, 0x4F72, 0x81E2, + 0x4F73, 0xBCD1, 0x4F74, 0xD9A6, 0x4F75, 0x81E3, 0x4F76, 0xD9A5, 0x4F77, 0x81E4, 0x4F78, 0x81E5, 0x4F79, 0x81E6, 0x4F7A, 0x81E7, + 0x4F7B, 0xD9AC, 0x4F7C, 0xD9AE, 0x4F7D, 0x81E8, 0x4F7E, 0xD9AB, 0x4F7F, 0xCAB9, 0x4F80, 0x81E9, 0x4F81, 0x81EA, 0x4F82, 0x81EB, + 0x4F83, 0xD9A9, 0x4F84, 0xD6B6, 0x4F85, 0x81EC, 0x4F86, 0x81ED, 0x4F87, 0x81EE, 0x4F88, 0xB3DE, 0x4F89, 0xD9A8, 0x4F8A, 0x81EF, + 0x4F8B, 0xC0FD, 0x4F8C, 0x81F0, 0x4F8D, 0xCACC, 0x4F8E, 0x81F1, 0x4F8F, 0xD9AA, 0x4F90, 0x81F2, 0x4F91, 0xD9A7, 0x4F92, 0x81F3, + 0x4F93, 0x81F4, 0x4F94, 0xD9B0, 0x4F95, 0x81F5, 0x4F96, 0x81F6, 0x4F97, 0xB6B1, 0x4F98, 0x81F7, 0x4F99, 0x81F8, 0x4F9A, 0x81F9, + 0x4F9B, 0xB9A9, 0x4F9C, 0x81FA, 0x4F9D, 0xD2C0, 0x4F9E, 0x81FB, 0x4F9F, 0x81FC, 0x4FA0, 0xCFC0, 0x4FA1, 0x81FD, 0x4FA2, 0x81FE, + 0x4FA3, 0xC2C2, 0x4FA4, 0x8240, 0x4FA5, 0xBDC4, 0x4FA6, 0xD5EC, 0x4FA7, 0xB2E0, 0x4FA8, 0xC7C8, 0x4FA9, 0xBFEB, 0x4FAA, 0xD9AD, + 0x4FAB, 0x8241, 0x4FAC, 0xD9AF, 0x4FAD, 0x8242, 0x4FAE, 0xCEEA, 0x4FAF, 0xBAEE, 0x4FB0, 0x8243, 0x4FB1, 0x8244, 0x4FB2, 0x8245, + 0x4FB3, 0x8246, 0x4FB4, 0x8247, 0x4FB5, 0xC7D6, 0x4FB6, 0x8248, 0x4FB7, 0x8249, 0x4FB8, 0x824A, 0x4FB9, 0x824B, 0x4FBA, 0x824C, + 0x4FBB, 0x824D, 0x4FBC, 0x824E, 0x4FBD, 0x824F, 0x4FBE, 0x8250, 0x4FBF, 0xB1E3, 0x4FC0, 0x8251, 0x4FC1, 0x8252, 0x4FC2, 0x8253, + 0x4FC3, 0xB4D9, 0x4FC4, 0xB6ED, 0x4FC5, 0xD9B4, 0x4FC6, 0x8254, 0x4FC7, 0x8255, 0x4FC8, 0x8256, 0x4FC9, 0x8257, 0x4FCA, 0xBFA1, + 0x4FCB, 0x8258, 0x4FCC, 0x8259, 0x4FCD, 0x825A, 0x4FCE, 0xD9DE, 0x4FCF, 0xC7CE, 0x4FD0, 0xC0FE, 0x4FD1, 0xD9B8, 0x4FD2, 0x825B, + 0x4FD3, 0x825C, 0x4FD4, 0x825D, 0x4FD5, 0x825E, 0x4FD6, 0x825F, 0x4FD7, 0xCBD7, 0x4FD8, 0xB7FD, 0x4FD9, 0x8260, 0x4FDA, 0xD9B5, + 0x4FDB, 0x8261, 0x4FDC, 0xD9B7, 0x4FDD, 0xB1A3, 0x4FDE, 0xD3E1, 0x4FDF, 0xD9B9, 0x4FE0, 0x8262, 0x4FE1, 0xD0C5, 0x4FE2, 0x8263, + 0x4FE3, 0xD9B6, 0x4FE4, 0x8264, 0x4FE5, 0x8265, 0x4FE6, 0xD9B1, 0x4FE7, 0x8266, 0x4FE8, 0xD9B2, 0x4FE9, 0xC1A9, 0x4FEA, 0xD9B3, + 0x4FEB, 0x8267, 0x4FEC, 0x8268, 0x4FED, 0xBCF3, 0x4FEE, 0xD0DE, 0x4FEF, 0xB8A9, 0x4FF0, 0x8269, 0x4FF1, 0xBEE3, 0x4FF2, 0x826A, + 0x4FF3, 0xD9BD, 0x4FF4, 0x826B, 0x4FF5, 0x826C, 0x4FF6, 0x826D, 0x4FF7, 0x826E, 0x4FF8, 0xD9BA, 0x4FF9, 0x826F, 0x4FFA, 0xB0B3, + 0x4FFB, 0x8270, 0x4FFC, 0x8271, 0x4FFD, 0x8272, 0x4FFE, 0xD9C2, 0x4FFF, 0x8273, 0x5000, 0x8274, 0x5001, 0x8275, 0x5002, 0x8276, + 0x5003, 0x8277, 0x5004, 0x8278, 0x5005, 0x8279, 0x5006, 0x827A, 0x5007, 0x827B, 0x5008, 0x827C, 0x5009, 0x827D, 0x500A, 0x827E, + 0x500B, 0x8280, 0x500C, 0xD9C4, 0x500D, 0xB1B6, 0x500E, 0x8281, 0x500F, 0xD9BF, 0x5010, 0x8282, 0x5011, 0x8283, 0x5012, 0xB5B9, + 0x5013, 0x8284, 0x5014, 0xBEF3, 0x5015, 0x8285, 0x5016, 0x8286, 0x5017, 0x8287, 0x5018, 0xCCC8, 0x5019, 0xBAF2, 0x501A, 0xD2D0, + 0x501B, 0x8288, 0x501C, 0xD9C3, 0x501D, 0x8289, 0x501E, 0x828A, 0x501F, 0xBDE8, 0x5020, 0x828B, 0x5021, 0xB3AB, 0x5022, 0x828C, + 0x5023, 0x828D, 0x5024, 0x828E, 0x5025, 0xD9C5, 0x5026, 0xBEEB, 0x5027, 0x828F, 0x5028, 0xD9C6, 0x5029, 0xD9BB, 0x502A, 0xC4DF, + 0x502B, 0x8290, 0x502C, 0xD9BE, 0x502D, 0xD9C1, 0x502E, 0xD9C0, 0x502F, 0x8291, 0x5030, 0x8292, 0x5031, 0x8293, 0x5032, 0x8294, + 0x5033, 0x8295, 0x5034, 0x8296, 0x5035, 0x8297, 0x5036, 0x8298, 0x5037, 0x8299, 0x5038, 0x829A, 0x5039, 0x829B, 0x503A, 0xD5AE, + 0x503B, 0x829C, 0x503C, 0xD6B5, 0x503D, 0x829D, 0x503E, 0xC7E3, 0x503F, 0x829E, 0x5040, 0x829F, 0x5041, 0x82A0, 0x5042, 0x82A1, + 0x5043, 0xD9C8, 0x5044, 0x82A2, 0x5045, 0x82A3, 0x5046, 0x82A4, 0x5047, 0xBCD9, 0x5048, 0xD9CA, 0x5049, 0x82A5, 0x504A, 0x82A6, + 0x504B, 0x82A7, 0x504C, 0xD9BC, 0x504D, 0x82A8, 0x504E, 0xD9CB, 0x504F, 0xC6AB, 0x5050, 0x82A9, 0x5051, 0x82AA, 0x5052, 0x82AB, + 0x5053, 0x82AC, 0x5054, 0x82AD, 0x5055, 0xD9C9, 0x5056, 0x82AE, 0x5057, 0x82AF, 0x5058, 0x82B0, 0x5059, 0x82B1, 0x505A, 0xD7F6, + 0x505B, 0x82B2, 0x505C, 0xCDA3, 0x505D, 0x82B3, 0x505E, 0x82B4, 0x505F, 0x82B5, 0x5060, 0x82B6, 0x5061, 0x82B7, 0x5062, 0x82B8, + 0x5063, 0x82B9, 0x5064, 0x82BA, 0x5065, 0xBDA1, 0x5066, 0x82BB, 0x5067, 0x82BC, 0x5068, 0x82BD, 0x5069, 0x82BE, 0x506A, 0x82BF, + 0x506B, 0x82C0, 0x506C, 0xD9CC, 0x506D, 0x82C1, 0x506E, 0x82C2, 0x506F, 0x82C3, 0x5070, 0x82C4, 0x5071, 0x82C5, 0x5072, 0x82C6, + 0x5073, 0x82C7, 0x5074, 0x82C8, 0x5075, 0x82C9, 0x5076, 0xC5BC, 0x5077, 0xCDB5, 0x5078, 0x82CA, 0x5079, 0x82CB, 0x507A, 0x82CC, + 0x507B, 0xD9CD, 0x507C, 0x82CD, 0x507D, 0x82CE, 0x507E, 0xD9C7, 0x507F, 0xB3A5, 0x5080, 0xBFFE, 0x5081, 0x82CF, 0x5082, 0x82D0, + 0x5083, 0x82D1, 0x5084, 0x82D2, 0x5085, 0xB8B5, 0x5086, 0x82D3, 0x5087, 0x82D4, 0x5088, 0xC0FC, 0x5089, 0x82D5, 0x508A, 0x82D6, + 0x508B, 0x82D7, 0x508C, 0x82D8, 0x508D, 0xB0F8, 0x508E, 0x82D9, 0x508F, 0x82DA, 0x5090, 0x82DB, 0x5091, 0x82DC, 0x5092, 0x82DD, + 0x5093, 0x82DE, 0x5094, 0x82DF, 0x5095, 0x82E0, 0x5096, 0x82E1, 0x5097, 0x82E2, 0x5098, 0x82E3, 0x5099, 0x82E4, 0x509A, 0x82E5, + 0x509B, 0x82E6, 0x509C, 0x82E7, 0x509D, 0x82E8, 0x509E, 0x82E9, 0x509F, 0x82EA, 0x50A0, 0x82EB, 0x50A1, 0x82EC, 0x50A2, 0x82ED, + 0x50A3, 0xB4F6, 0x50A4, 0x82EE, 0x50A5, 0xD9CE, 0x50A6, 0x82EF, 0x50A7, 0xD9CF, 0x50A8, 0xB4A2, 0x50A9, 0xD9D0, 0x50AA, 0x82F0, + 0x50AB, 0x82F1, 0x50AC, 0xB4DF, 0x50AD, 0x82F2, 0x50AE, 0x82F3, 0x50AF, 0x82F4, 0x50B0, 0x82F5, 0x50B1, 0x82F6, 0x50B2, 0xB0C1, + 0x50B3, 0x82F7, 0x50B4, 0x82F8, 0x50B5, 0x82F9, 0x50B6, 0x82FA, 0x50B7, 0x82FB, 0x50B8, 0x82FC, 0x50B9, 0x82FD, 0x50BA, 0xD9D1, + 0x50BB, 0xC9B5, 0x50BC, 0x82FE, 0x50BD, 0x8340, 0x50BE, 0x8341, 0x50BF, 0x8342, 0x50C0, 0x8343, 0x50C1, 0x8344, 0x50C2, 0x8345, + 0x50C3, 0x8346, 0x50C4, 0x8347, 0x50C5, 0x8348, 0x50C6, 0x8349, 0x50C7, 0x834A, 0x50C8, 0x834B, 0x50C9, 0x834C, 0x50CA, 0x834D, + 0x50CB, 0x834E, 0x50CC, 0x834F, 0x50CD, 0x8350, 0x50CE, 0x8351, 0x50CF, 0xCFF1, 0x50D0, 0x8352, 0x50D1, 0x8353, 0x50D2, 0x8354, + 0x50D3, 0x8355, 0x50D4, 0x8356, 0x50D5, 0x8357, 0x50D6, 0xD9D2, 0x50D7, 0x8358, 0x50D8, 0x8359, 0x50D9, 0x835A, 0x50DA, 0xC1C5, + 0x50DB, 0x835B, 0x50DC, 0x835C, 0x50DD, 0x835D, 0x50DE, 0x835E, 0x50DF, 0x835F, 0x50E0, 0x8360, 0x50E1, 0x8361, 0x50E2, 0x8362, + 0x50E3, 0x8363, 0x50E4, 0x8364, 0x50E5, 0x8365, 0x50E6, 0xD9D6, 0x50E7, 0xC9AE, 0x50E8, 0x8366, 0x50E9, 0x8367, 0x50EA, 0x8368, + 0x50EB, 0x8369, 0x50EC, 0xD9D5, 0x50ED, 0xD9D4, 0x50EE, 0xD9D7, 0x50EF, 0x836A, 0x50F0, 0x836B, 0x50F1, 0x836C, 0x50F2, 0x836D, + 0x50F3, 0xCBDB, 0x50F4, 0x836E, 0x50F5, 0xBDA9, 0x50F6, 0x836F, 0x50F7, 0x8370, 0x50F8, 0x8371, 0x50F9, 0x8372, 0x50FA, 0x8373, + 0x50FB, 0xC6A7, 0x50FC, 0x8374, 0x50FD, 0x8375, 0x50FE, 0x8376, 0x50FF, 0x8377, 0x5100, 0x8378, 0x5101, 0x8379, 0x5102, 0x837A, + 0x5103, 0x837B, 0x5104, 0x837C, 0x5105, 0x837D, 0x5106, 0xD9D3, 0x5107, 0xD9D8, 0x5108, 0x837E, 0x5109, 0x8380, 0x510A, 0x8381, + 0x510B, 0xD9D9, 0x510C, 0x8382, 0x510D, 0x8383, 0x510E, 0x8384, 0x510F, 0x8385, 0x5110, 0x8386, 0x5111, 0x8387, 0x5112, 0xC8E5, + 0x5113, 0x8388, 0x5114, 0x8389, 0x5115, 0x838A, 0x5116, 0x838B, 0x5117, 0x838C, 0x5118, 0x838D, 0x5119, 0x838E, 0x511A, 0x838F, + 0x511B, 0x8390, 0x511C, 0x8391, 0x511D, 0x8392, 0x511E, 0x8393, 0x511F, 0x8394, 0x5120, 0x8395, 0x5121, 0xC0DC, 0x5122, 0x8396, + 0x5123, 0x8397, 0x5124, 0x8398, 0x5125, 0x8399, 0x5126, 0x839A, 0x5127, 0x839B, 0x5128, 0x839C, 0x5129, 0x839D, 0x512A, 0x839E, + 0x512B, 0x839F, 0x512C, 0x83A0, 0x512D, 0x83A1, 0x512E, 0x83A2, 0x512F, 0x83A3, 0x5130, 0x83A4, 0x5131, 0x83A5, 0x5132, 0x83A6, + 0x5133, 0x83A7, 0x5134, 0x83A8, 0x5135, 0x83A9, 0x5136, 0x83AA, 0x5137, 0x83AB, 0x5138, 0x83AC, 0x5139, 0x83AD, 0x513A, 0x83AE, + 0x513B, 0x83AF, 0x513C, 0x83B0, 0x513D, 0x83B1, 0x513E, 0x83B2, 0x513F, 0xB6F9, 0x5140, 0xD8A3, 0x5141, 0xD4CA, 0x5142, 0x83B3, + 0x5143, 0xD4AA, 0x5144, 0xD0D6, 0x5145, 0xB3E4, 0x5146, 0xD5D7, 0x5147, 0x83B4, 0x5148, 0xCFC8, 0x5149, 0xB9E2, 0x514A, 0x83B5, + 0x514B, 0xBFCB, 0x514C, 0x83B6, 0x514D, 0xC3E2, 0x514E, 0x83B7, 0x514F, 0x83B8, 0x5150, 0x83B9, 0x5151, 0xB6D2, 0x5152, 0x83BA, + 0x5153, 0x83BB, 0x5154, 0xCDC3, 0x5155, 0xD9EE, 0x5156, 0xD9F0, 0x5157, 0x83BC, 0x5158, 0x83BD, 0x5159, 0x83BE, 0x515A, 0xB5B3, + 0x515B, 0x83BF, 0x515C, 0xB6B5, 0x515D, 0x83C0, 0x515E, 0x83C1, 0x515F, 0x83C2, 0x5160, 0x83C3, 0x5161, 0x83C4, 0x5162, 0xBEA4, + 0x5163, 0x83C5, 0x5164, 0x83C6, 0x5165, 0xC8EB, 0x5166, 0x83C7, 0x5167, 0x83C8, 0x5168, 0xC8AB, 0x5169, 0x83C9, 0x516A, 0x83CA, + 0x516B, 0xB0CB, 0x516C, 0xB9AB, 0x516D, 0xC1F9, 0x516E, 0xD9E2, 0x516F, 0x83CB, 0x5170, 0xC0BC, 0x5171, 0xB9B2, 0x5172, 0x83CC, + 0x5173, 0xB9D8, 0x5174, 0xD0CB, 0x5175, 0xB1F8, 0x5176, 0xC6E4, 0x5177, 0xBEDF, 0x5178, 0xB5E4, 0x5179, 0xD7C8, 0x517A, 0x83CD, + 0x517B, 0xD1F8, 0x517C, 0xBCE6, 0x517D, 0xCADE, 0x517E, 0x83CE, 0x517F, 0x83CF, 0x5180, 0xBCBD, 0x5181, 0xD9E6, 0x5182, 0xD8E7, + 0x5183, 0x83D0, 0x5184, 0x83D1, 0x5185, 0xC4DA, 0x5186, 0x83D2, 0x5187, 0x83D3, 0x5188, 0xB8D4, 0x5189, 0xC8BD, 0x518A, 0x83D4, + 0x518B, 0x83D5, 0x518C, 0xB2E1, 0x518D, 0xD4D9, 0x518E, 0x83D6, 0x518F, 0x83D7, 0x5190, 0x83D8, 0x5191, 0x83D9, 0x5192, 0xC3B0, + 0x5193, 0x83DA, 0x5194, 0x83DB, 0x5195, 0xC3E1, 0x5196, 0xDAA2, 0x5197, 0xC8DF, 0x5198, 0x83DC, 0x5199, 0xD0B4, 0x519A, 0x83DD, + 0x519B, 0xBEFC, 0x519C, 0xC5A9, 0x519D, 0x83DE, 0x519E, 0x83DF, 0x519F, 0x83E0, 0x51A0, 0xB9DA, 0x51A1, 0x83E1, 0x51A2, 0xDAA3, + 0x51A3, 0x83E2, 0x51A4, 0xD4A9, 0x51A5, 0xDAA4, 0x51A6, 0x83E3, 0x51A7, 0x83E4, 0x51A8, 0x83E5, 0x51A9, 0x83E6, 0x51AA, 0x83E7, + 0x51AB, 0xD9FB, 0x51AC, 0xB6AC, 0x51AD, 0x83E8, 0x51AE, 0x83E9, 0x51AF, 0xB7EB, 0x51B0, 0xB1F9, 0x51B1, 0xD9FC, 0x51B2, 0xB3E5, + 0x51B3, 0xBEF6, 0x51B4, 0x83EA, 0x51B5, 0xBFF6, 0x51B6, 0xD2B1, 0x51B7, 0xC0E4, 0x51B8, 0x83EB, 0x51B9, 0x83EC, 0x51BA, 0x83ED, + 0x51BB, 0xB6B3, 0x51BC, 0xD9FE, 0x51BD, 0xD9FD, 0x51BE, 0x83EE, 0x51BF, 0x83EF, 0x51C0, 0xBEBB, 0x51C1, 0x83F0, 0x51C2, 0x83F1, + 0x51C3, 0x83F2, 0x51C4, 0xC6E0, 0x51C5, 0x83F3, 0x51C6, 0xD7BC, 0x51C7, 0xDAA1, 0x51C8, 0x83F4, 0x51C9, 0xC1B9, 0x51CA, 0x83F5, + 0x51CB, 0xB5F2, 0x51CC, 0xC1E8, 0x51CD, 0x83F6, 0x51CE, 0x83F7, 0x51CF, 0xBCF5, 0x51D0, 0x83F8, 0x51D1, 0xB4D5, 0x51D2, 0x83F9, + 0x51D3, 0x83FA, 0x51D4, 0x83FB, 0x51D5, 0x83FC, 0x51D6, 0x83FD, 0x51D7, 0x83FE, 0x51D8, 0x8440, 0x51D9, 0x8441, 0x51DA, 0x8442, + 0x51DB, 0xC1DD, 0x51DC, 0x8443, 0x51DD, 0xC4FD, 0x51DE, 0x8444, 0x51DF, 0x8445, 0x51E0, 0xBCB8, 0x51E1, 0xB7B2, 0x51E2, 0x8446, + 0x51E3, 0x8447, 0x51E4, 0xB7EF, 0x51E5, 0x8448, 0x51E6, 0x8449, 0x51E7, 0x844A, 0x51E8, 0x844B, 0x51E9, 0x844C, 0x51EA, 0x844D, + 0x51EB, 0xD9EC, 0x51EC, 0x844E, 0x51ED, 0xC6BE, 0x51EE, 0x844F, 0x51EF, 0xBFAD, 0x51F0, 0xBBCB, 0x51F1, 0x8450, 0x51F2, 0x8451, + 0x51F3, 0xB5CA, 0x51F4, 0x8452, 0x51F5, 0xDBC9, 0x51F6, 0xD0D7, 0x51F7, 0x8453, 0x51F8, 0xCDB9, 0x51F9, 0xB0BC, 0x51FA, 0xB3F6, + 0x51FB, 0xBBF7, 0x51FC, 0xDBCA, 0x51FD, 0xBAAF, 0x51FE, 0x8454, 0x51FF, 0xD4E4, 0x5200, 0xB5B6, 0x5201, 0xB5F3, 0x5202, 0xD8D6, + 0x5203, 0xC8D0, 0x5204, 0x8455, 0x5205, 0x8456, 0x5206, 0xB7D6, 0x5207, 0xC7D0, 0x5208, 0xD8D7, 0x5209, 0x8457, 0x520A, 0xBFAF, + 0x520B, 0x8458, 0x520C, 0x8459, 0x520D, 0xDBBB, 0x520E, 0xD8D8, 0x520F, 0x845A, 0x5210, 0x845B, 0x5211, 0xD0CC, 0x5212, 0xBBAE, + 0x5213, 0x845C, 0x5214, 0x845D, 0x5215, 0x845E, 0x5216, 0xEBBE, 0x5217, 0xC1D0, 0x5218, 0xC1F5, 0x5219, 0xD4F2, 0x521A, 0xB8D5, + 0x521B, 0xB4B4, 0x521C, 0x845F, 0x521D, 0xB3F5, 0x521E, 0x8460, 0x521F, 0x8461, 0x5220, 0xC9BE, 0x5221, 0x8462, 0x5222, 0x8463, + 0x5223, 0x8464, 0x5224, 0xC5D0, 0x5225, 0x8465, 0x5226, 0x8466, 0x5227, 0x8467, 0x5228, 0xC5D9, 0x5229, 0xC0FB, 0x522A, 0x8468, + 0x522B, 0xB1F0, 0x522C, 0x8469, 0x522D, 0xD8D9, 0x522E, 0xB9CE, 0x522F, 0x846A, 0x5230, 0xB5BD, 0x5231, 0x846B, 0x5232, 0x846C, + 0x5233, 0xD8DA, 0x5234, 0x846D, 0x5235, 0x846E, 0x5236, 0xD6C6, 0x5237, 0xCBA2, 0x5238, 0xC8AF, 0x5239, 0xC9B2, 0x523A, 0xB4CC, + 0x523B, 0xBFCC, 0x523C, 0x846F, 0x523D, 0xB9F4, 0x523E, 0x8470, 0x523F, 0xD8DB, 0x5240, 0xD8DC, 0x5241, 0xB6E7, 0x5242, 0xBCC1, + 0x5243, 0xCCEA, 0x5244, 0x8471, 0x5245, 0x8472, 0x5246, 0x8473, 0x5247, 0x8474, 0x5248, 0x8475, 0x5249, 0x8476, 0x524A, 0xCFF7, + 0x524B, 0x8477, 0x524C, 0xD8DD, 0x524D, 0xC7B0, 0x524E, 0x8478, 0x524F, 0x8479, 0x5250, 0xB9D0, 0x5251, 0xBDA3, 0x5252, 0x847A, + 0x5253, 0x847B, 0x5254, 0xCCDE, 0x5255, 0x847C, 0x5256, 0xC6CA, 0x5257, 0x847D, 0x5258, 0x847E, 0x5259, 0x8480, 0x525A, 0x8481, + 0x525B, 0x8482, 0x525C, 0xD8E0, 0x525D, 0x8483, 0x525E, 0xD8DE, 0x525F, 0x8484, 0x5260, 0x8485, 0x5261, 0xD8DF, 0x5262, 0x8486, + 0x5263, 0x8487, 0x5264, 0x8488, 0x5265, 0xB0FE, 0x5266, 0x8489, 0x5267, 0xBEE7, 0x5268, 0x848A, 0x5269, 0xCAA3, 0x526A, 0xBCF4, + 0x526B, 0x848B, 0x526C, 0x848C, 0x526D, 0x848D, 0x526E, 0x848E, 0x526F, 0xB8B1, 0x5270, 0x848F, 0x5271, 0x8490, 0x5272, 0xB8EE, + 0x5273, 0x8491, 0x5274, 0x8492, 0x5275, 0x8493, 0x5276, 0x8494, 0x5277, 0x8495, 0x5278, 0x8496, 0x5279, 0x8497, 0x527A, 0x8498, + 0x527B, 0x8499, 0x527C, 0x849A, 0x527D, 0xD8E2, 0x527E, 0x849B, 0x527F, 0xBDCB, 0x5280, 0x849C, 0x5281, 0xD8E4, 0x5282, 0xD8E3, + 0x5283, 0x849D, 0x5284, 0x849E, 0x5285, 0x849F, 0x5286, 0x84A0, 0x5287, 0x84A1, 0x5288, 0xC5FC, 0x5289, 0x84A2, 0x528A, 0x84A3, + 0x528B, 0x84A4, 0x528C, 0x84A5, 0x528D, 0x84A6, 0x528E, 0x84A7, 0x528F, 0x84A8, 0x5290, 0xD8E5, 0x5291, 0x84A9, 0x5292, 0x84AA, + 0x5293, 0xD8E6, 0x5294, 0x84AB, 0x5295, 0x84AC, 0x5296, 0x84AD, 0x5297, 0x84AE, 0x5298, 0x84AF, 0x5299, 0x84B0, 0x529A, 0x84B1, + 0x529B, 0xC1A6, 0x529C, 0x84B2, 0x529D, 0xC8B0, 0x529E, 0xB0EC, 0x529F, 0xB9A6, 0x52A0, 0xBCD3, 0x52A1, 0xCEF1, 0x52A2, 0xDBBD, + 0x52A3, 0xC1D3, 0x52A4, 0x84B3, 0x52A5, 0x84B4, 0x52A6, 0x84B5, 0x52A7, 0x84B6, 0x52A8, 0xB6AF, 0x52A9, 0xD6FA, 0x52AA, 0xC5AC, + 0x52AB, 0xBDD9, 0x52AC, 0xDBBE, 0x52AD, 0xDBBF, 0x52AE, 0x84B7, 0x52AF, 0x84B8, 0x52B0, 0x84B9, 0x52B1, 0xC0F8, 0x52B2, 0xBEA2, + 0x52B3, 0xC0CD, 0x52B4, 0x84BA, 0x52B5, 0x84BB, 0x52B6, 0x84BC, 0x52B7, 0x84BD, 0x52B8, 0x84BE, 0x52B9, 0x84BF, 0x52BA, 0x84C0, + 0x52BB, 0x84C1, 0x52BC, 0x84C2, 0x52BD, 0x84C3, 0x52BE, 0xDBC0, 0x52BF, 0xCAC6, 0x52C0, 0x84C4, 0x52C1, 0x84C5, 0x52C2, 0x84C6, + 0x52C3, 0xB2AA, 0x52C4, 0x84C7, 0x52C5, 0x84C8, 0x52C6, 0x84C9, 0x52C7, 0xD3C2, 0x52C8, 0x84CA, 0x52C9, 0xC3E3, 0x52CA, 0x84CB, + 0x52CB, 0xD1AB, 0x52CC, 0x84CC, 0x52CD, 0x84CD, 0x52CE, 0x84CE, 0x52CF, 0x84CF, 0x52D0, 0xDBC2, 0x52D1, 0x84D0, 0x52D2, 0xC0D5, + 0x52D3, 0x84D1, 0x52D4, 0x84D2, 0x52D5, 0x84D3, 0x52D6, 0xDBC3, 0x52D7, 0x84D4, 0x52D8, 0xBFB1, 0x52D9, 0x84D5, 0x52DA, 0x84D6, + 0x52DB, 0x84D7, 0x52DC, 0x84D8, 0x52DD, 0x84D9, 0x52DE, 0x84DA, 0x52DF, 0xC4BC, 0x52E0, 0x84DB, 0x52E1, 0x84DC, 0x52E2, 0x84DD, + 0x52E3, 0x84DE, 0x52E4, 0xC7DA, 0x52E5, 0x84DF, 0x52E6, 0x84E0, 0x52E7, 0x84E1, 0x52E8, 0x84E2, 0x52E9, 0x84E3, 0x52EA, 0x84E4, + 0x52EB, 0x84E5, 0x52EC, 0x84E6, 0x52ED, 0x84E7, 0x52EE, 0x84E8, 0x52EF, 0x84E9, 0x52F0, 0xDBC4, 0x52F1, 0x84EA, 0x52F2, 0x84EB, + 0x52F3, 0x84EC, 0x52F4, 0x84ED, 0x52F5, 0x84EE, 0x52F6, 0x84EF, 0x52F7, 0x84F0, 0x52F8, 0x84F1, 0x52F9, 0xD9E8, 0x52FA, 0xC9D7, + 0x52FB, 0x84F2, 0x52FC, 0x84F3, 0x52FD, 0x84F4, 0x52FE, 0xB9B4, 0x52FF, 0xCEF0, 0x5300, 0xD4C8, 0x5301, 0x84F5, 0x5302, 0x84F6, + 0x5303, 0x84F7, 0x5304, 0x84F8, 0x5305, 0xB0FC, 0x5306, 0xB4D2, 0x5307, 0x84F9, 0x5308, 0xD0D9, 0x5309, 0x84FA, 0x530A, 0x84FB, + 0x530B, 0x84FC, 0x530C, 0x84FD, 0x530D, 0xD9E9, 0x530E, 0x84FE, 0x530F, 0xDECB, 0x5310, 0xD9EB, 0x5311, 0x8540, 0x5312, 0x8541, + 0x5313, 0x8542, 0x5314, 0x8543, 0x5315, 0xD8B0, 0x5316, 0xBBAF, 0x5317, 0xB1B1, 0x5318, 0x8544, 0x5319, 0xB3D7, 0x531A, 0xD8CE, + 0x531B, 0x8545, 0x531C, 0x8546, 0x531D, 0xD4D1, 0x531E, 0x8547, 0x531F, 0x8548, 0x5320, 0xBDB3, 0x5321, 0xBFEF, 0x5322, 0x8549, + 0x5323, 0xCFBB, 0x5324, 0x854A, 0x5325, 0x854B, 0x5326, 0xD8D0, 0x5327, 0x854C, 0x5328, 0x854D, 0x5329, 0x854E, 0x532A, 0xB7CB, + 0x532B, 0x854F, 0x532C, 0x8550, 0x532D, 0x8551, 0x532E, 0xD8D1, 0x532F, 0x8552, 0x5330, 0x8553, 0x5331, 0x8554, 0x5332, 0x8555, + 0x5333, 0x8556, 0x5334, 0x8557, 0x5335, 0x8558, 0x5336, 0x8559, 0x5337, 0x855A, 0x5338, 0x855B, 0x5339, 0xC6A5, 0x533A, 0xC7F8, + 0x533B, 0xD2BD, 0x533C, 0x855C, 0x533D, 0x855D, 0x533E, 0xD8D2, 0x533F, 0xC4E4, 0x5340, 0x855E, 0x5341, 0xCAAE, 0x5342, 0x855F, + 0x5343, 0xC7A7, 0x5344, 0x8560, 0x5345, 0xD8A6, 0x5346, 0x8561, 0x5347, 0xC9FD, 0x5348, 0xCEE7, 0x5349, 0xBBDC, 0x534A, 0xB0EB, + 0x534B, 0x8562, 0x534C, 0x8563, 0x534D, 0x8564, 0x534E, 0xBBAA, 0x534F, 0xD0AD, 0x5350, 0x8565, 0x5351, 0xB1B0, 0x5352, 0xD7E4, + 0x5353, 0xD7BF, 0x5354, 0x8566, 0x5355, 0xB5A5, 0x5356, 0xC2F4, 0x5357, 0xC4CF, 0x5358, 0x8567, 0x5359, 0x8568, 0x535A, 0xB2A9, + 0x535B, 0x8569, 0x535C, 0xB2B7, 0x535D, 0x856A, 0x535E, 0xB1E5, 0x535F, 0xDFB2, 0x5360, 0xD5BC, 0x5361, 0xBFA8, 0x5362, 0xC2AC, + 0x5363, 0xD8D5, 0x5364, 0xC2B1, 0x5365, 0x856B, 0x5366, 0xD8D4, 0x5367, 0xCED4, 0x5368, 0x856C, 0x5369, 0xDAE0, 0x536A, 0x856D, + 0x536B, 0xCEC0, 0x536C, 0x856E, 0x536D, 0x856F, 0x536E, 0xD8B4, 0x536F, 0xC3AE, 0x5370, 0xD3A1, 0x5371, 0xCEA3, 0x5372, 0x8570, + 0x5373, 0xBCB4, 0x5374, 0xC8B4, 0x5375, 0xC2D1, 0x5376, 0x8571, 0x5377, 0xBEED, 0x5378, 0xD0B6, 0x5379, 0x8572, 0x537A, 0xDAE1, + 0x537B, 0x8573, 0x537C, 0x8574, 0x537D, 0x8575, 0x537E, 0x8576, 0x537F, 0xC7E4, 0x5380, 0x8577, 0x5381, 0x8578, 0x5382, 0xB3A7, + 0x5383, 0x8579, 0x5384, 0xB6F2, 0x5385, 0xCCFC, 0x5386, 0xC0FA, 0x5387, 0x857A, 0x5388, 0x857B, 0x5389, 0xC0F7, 0x538A, 0x857C, + 0x538B, 0xD1B9, 0x538C, 0xD1E1, 0x538D, 0xD8C7, 0x538E, 0x857D, 0x538F, 0x857E, 0x5390, 0x8580, 0x5391, 0x8581, 0x5392, 0x8582, + 0x5393, 0x8583, 0x5394, 0x8584, 0x5395, 0xB2DE, 0x5396, 0x8585, 0x5397, 0x8586, 0x5398, 0xC0E5, 0x5399, 0x8587, 0x539A, 0xBAF1, + 0x539B, 0x8588, 0x539C, 0x8589, 0x539D, 0xD8C8, 0x539E, 0x858A, 0x539F, 0xD4AD, 0x53A0, 0x858B, 0x53A1, 0x858C, 0x53A2, 0xCFE1, + 0x53A3, 0xD8C9, 0x53A4, 0x858D, 0x53A5, 0xD8CA, 0x53A6, 0xCFC3, 0x53A7, 0x858E, 0x53A8, 0xB3F8, 0x53A9, 0xBEC7, 0x53AA, 0x858F, + 0x53AB, 0x8590, 0x53AC, 0x8591, 0x53AD, 0x8592, 0x53AE, 0xD8CB, 0x53AF, 0x8593, 0x53B0, 0x8594, 0x53B1, 0x8595, 0x53B2, 0x8596, + 0x53B3, 0x8597, 0x53B4, 0x8598, 0x53B5, 0x8599, 0x53B6, 0xDBCC, 0x53B7, 0x859A, 0x53B8, 0x859B, 0x53B9, 0x859C, 0x53BA, 0x859D, + 0x53BB, 0xC8A5, 0x53BC, 0x859E, 0x53BD, 0x859F, 0x53BE, 0x85A0, 0x53BF, 0xCFD8, 0x53C0, 0x85A1, 0x53C1, 0xC8FE, 0x53C2, 0xB2CE, + 0x53C3, 0x85A2, 0x53C4, 0x85A3, 0x53C5, 0x85A4, 0x53C6, 0x85A5, 0x53C7, 0x85A6, 0x53C8, 0xD3D6, 0x53C9, 0xB2E6, 0x53CA, 0xBCB0, + 0x53CB, 0xD3D1, 0x53CC, 0xCBAB, 0x53CD, 0xB7B4, 0x53CE, 0x85A7, 0x53CF, 0x85A8, 0x53D0, 0x85A9, 0x53D1, 0xB7A2, 0x53D2, 0x85AA, + 0x53D3, 0x85AB, 0x53D4, 0xCAE5, 0x53D5, 0x85AC, 0x53D6, 0xC8A1, 0x53D7, 0xCADC, 0x53D8, 0xB1E4, 0x53D9, 0xD0F0, 0x53DA, 0x85AD, + 0x53DB, 0xC5D1, 0x53DC, 0x85AE, 0x53DD, 0x85AF, 0x53DE, 0x85B0, 0x53DF, 0xDBC5, 0x53E0, 0xB5FE, 0x53E1, 0x85B1, 0x53E2, 0x85B2, + 0x53E3, 0xBFDA, 0x53E4, 0xB9C5, 0x53E5, 0xBEE4, 0x53E6, 0xC1ED, 0x53E7, 0x85B3, 0x53E8, 0xDFB6, 0x53E9, 0xDFB5, 0x53EA, 0xD6BB, + 0x53EB, 0xBDD0, 0x53EC, 0xD5D9, 0x53ED, 0xB0C8, 0x53EE, 0xB6A3, 0x53EF, 0xBFC9, 0x53F0, 0xCCA8, 0x53F1, 0xDFB3, 0x53F2, 0xCAB7, + 0x53F3, 0xD3D2, 0x53F4, 0x85B4, 0x53F5, 0xD8CF, 0x53F6, 0xD2B6, 0x53F7, 0xBAC5, 0x53F8, 0xCBBE, 0x53F9, 0xCCBE, 0x53FA, 0x85B5, + 0x53FB, 0xDFB7, 0x53FC, 0xB5F0, 0x53FD, 0xDFB4, 0x53FE, 0x85B6, 0x53FF, 0x85B7, 0x5400, 0x85B8, 0x5401, 0xD3F5, 0x5402, 0x85B9, + 0x5403, 0xB3D4, 0x5404, 0xB8F7, 0x5405, 0x85BA, 0x5406, 0xDFBA, 0x5407, 0x85BB, 0x5408, 0xBACF, 0x5409, 0xBCAA, 0x540A, 0xB5F5, + 0x540B, 0x85BC, 0x540C, 0xCDAC, 0x540D, 0xC3FB, 0x540E, 0xBAF3, 0x540F, 0xC0F4, 0x5410, 0xCDC2, 0x5411, 0xCFF2, 0x5412, 0xDFB8, + 0x5413, 0xCFC5, 0x5414, 0x85BD, 0x5415, 0xC2C0, 0x5416, 0xDFB9, 0x5417, 0xC2F0, 0x5418, 0x85BE, 0x5419, 0x85BF, 0x541A, 0x85C0, + 0x541B, 0xBEFD, 0x541C, 0x85C1, 0x541D, 0xC1DF, 0x541E, 0xCDCC, 0x541F, 0xD2F7, 0x5420, 0xB7CD, 0x5421, 0xDFC1, 0x5422, 0x85C2, + 0x5423, 0xDFC4, 0x5424, 0x85C3, 0x5425, 0x85C4, 0x5426, 0xB7F1, 0x5427, 0xB0C9, 0x5428, 0xB6D6, 0x5429, 0xB7D4, 0x542A, 0x85C5, + 0x542B, 0xBAAC, 0x542C, 0xCCFD, 0x542D, 0xBFD4, 0x542E, 0xCBB1, 0x542F, 0xC6F4, 0x5430, 0x85C6, 0x5431, 0xD6A8, 0x5432, 0xDFC5, + 0x5433, 0x85C7, 0x5434, 0xCEE2, 0x5435, 0xB3B3, 0x5436, 0x85C8, 0x5437, 0x85C9, 0x5438, 0xCEFC, 0x5439, 0xB4B5, 0x543A, 0x85CA, + 0x543B, 0xCEC7, 0x543C, 0xBAF0, 0x543D, 0x85CB, 0x543E, 0xCEE1, 0x543F, 0x85CC, 0x5440, 0xD1BD, 0x5441, 0x85CD, 0x5442, 0x85CE, + 0x5443, 0xDFC0, 0x5444, 0x85CF, 0x5445, 0x85D0, 0x5446, 0xB4F4, 0x5447, 0x85D1, 0x5448, 0xB3CA, 0x5449, 0x85D2, 0x544A, 0xB8E6, + 0x544B, 0xDFBB, 0x544C, 0x85D3, 0x544D, 0x85D4, 0x544E, 0x85D5, 0x544F, 0x85D6, 0x5450, 0xC4C5, 0x5451, 0x85D7, 0x5452, 0xDFBC, + 0x5453, 0xDFBD, 0x5454, 0xDFBE, 0x5455, 0xC5BB, 0x5456, 0xDFBF, 0x5457, 0xDFC2, 0x5458, 0xD4B1, 0x5459, 0xDFC3, 0x545A, 0x85D8, + 0x545B, 0xC7BA, 0x545C, 0xCED8, 0x545D, 0x85D9, 0x545E, 0x85DA, 0x545F, 0x85DB, 0x5460, 0x85DC, 0x5461, 0x85DD, 0x5462, 0xC4D8, + 0x5463, 0x85DE, 0x5464, 0xDFCA, 0x5465, 0x85DF, 0x5466, 0xDFCF, 0x5467, 0x85E0, 0x5468, 0xD6DC, 0x5469, 0x85E1, 0x546A, 0x85E2, + 0x546B, 0x85E3, 0x546C, 0x85E4, 0x546D, 0x85E5, 0x546E, 0x85E6, 0x546F, 0x85E7, 0x5470, 0x85E8, 0x5471, 0xDFC9, 0x5472, 0xDFDA, + 0x5473, 0xCEB6, 0x5474, 0x85E9, 0x5475, 0xBAC7, 0x5476, 0xDFCE, 0x5477, 0xDFC8, 0x5478, 0xC5DE, 0x5479, 0x85EA, 0x547A, 0x85EB, + 0x547B, 0xC9EB, 0x547C, 0xBAF4, 0x547D, 0xC3FC, 0x547E, 0x85EC, 0x547F, 0x85ED, 0x5480, 0xBED7, 0x5481, 0x85EE, 0x5482, 0xDFC6, + 0x5483, 0x85EF, 0x5484, 0xDFCD, 0x5485, 0x85F0, 0x5486, 0xC5D8, 0x5487, 0x85F1, 0x5488, 0x85F2, 0x5489, 0x85F3, 0x548A, 0x85F4, + 0x548B, 0xD5A6, 0x548C, 0xBACD, 0x548D, 0x85F5, 0x548E, 0xBECC, 0x548F, 0xD3BD, 0x5490, 0xB8C0, 0x5491, 0x85F6, 0x5492, 0xD6E4, + 0x5493, 0x85F7, 0x5494, 0xDFC7, 0x5495, 0xB9BE, 0x5496, 0xBFA7, 0x5497, 0x85F8, 0x5498, 0x85F9, 0x5499, 0xC1FC, 0x549A, 0xDFCB, + 0x549B, 0xDFCC, 0x549C, 0x85FA, 0x549D, 0xDFD0, 0x549E, 0x85FB, 0x549F, 0x85FC, 0x54A0, 0x85FD, 0x54A1, 0x85FE, 0x54A2, 0x8640, + 0x54A3, 0xDFDB, 0x54A4, 0xDFE5, 0x54A5, 0x8641, 0x54A6, 0xDFD7, 0x54A7, 0xDFD6, 0x54A8, 0xD7C9, 0x54A9, 0xDFE3, 0x54AA, 0xDFE4, + 0x54AB, 0xE5EB, 0x54AC, 0xD2A7, 0x54AD, 0xDFD2, 0x54AE, 0x8642, 0x54AF, 0xBFA9, 0x54B0, 0x8643, 0x54B1, 0xD4DB, 0x54B2, 0x8644, + 0x54B3, 0xBFC8, 0x54B4, 0xDFD4, 0x54B5, 0x8645, 0x54B6, 0x8646, 0x54B7, 0x8647, 0x54B8, 0xCFCC, 0x54B9, 0x8648, 0x54BA, 0x8649, + 0x54BB, 0xDFDD, 0x54BC, 0x864A, 0x54BD, 0xD1CA, 0x54BE, 0x864B, 0x54BF, 0xDFDE, 0x54C0, 0xB0A7, 0x54C1, 0xC6B7, 0x54C2, 0xDFD3, + 0x54C3, 0x864C, 0x54C4, 0xBAE5, 0x54C5, 0x864D, 0x54C6, 0xB6DF, 0x54C7, 0xCDDB, 0x54C8, 0xB9FE, 0x54C9, 0xD4D5, 0x54CA, 0x864E, + 0x54CB, 0x864F, 0x54CC, 0xDFDF, 0x54CD, 0xCFEC, 0x54CE, 0xB0A5, 0x54CF, 0xDFE7, 0x54D0, 0xDFD1, 0x54D1, 0xD1C6, 0x54D2, 0xDFD5, + 0x54D3, 0xDFD8, 0x54D4, 0xDFD9, 0x54D5, 0xDFDC, 0x54D6, 0x8650, 0x54D7, 0xBBA9, 0x54D8, 0x8651, 0x54D9, 0xDFE0, 0x54DA, 0xDFE1, + 0x54DB, 0x8652, 0x54DC, 0xDFE2, 0x54DD, 0xDFE6, 0x54DE, 0xDFE8, 0x54DF, 0xD3B4, 0x54E0, 0x8653, 0x54E1, 0x8654, 0x54E2, 0x8655, + 0x54E3, 0x8656, 0x54E4, 0x8657, 0x54E5, 0xB8E7, 0x54E6, 0xC5B6, 0x54E7, 0xDFEA, 0x54E8, 0xC9DA, 0x54E9, 0xC1A8, 0x54EA, 0xC4C4, + 0x54EB, 0x8658, 0x54EC, 0x8659, 0x54ED, 0xBFDE, 0x54EE, 0xCFF8, 0x54EF, 0x865A, 0x54F0, 0x865B, 0x54F1, 0x865C, 0x54F2, 0xD5DC, + 0x54F3, 0xDFEE, 0x54F4, 0x865D, 0x54F5, 0x865E, 0x54F6, 0x865F, 0x54F7, 0x8660, 0x54F8, 0x8661, 0x54F9, 0x8662, 0x54FA, 0xB2B8, + 0x54FB, 0x8663, 0x54FC, 0xBADF, 0x54FD, 0xDFEC, 0x54FE, 0x8664, 0x54FF, 0xDBC1, 0x5500, 0x8665, 0x5501, 0xD1E4, 0x5502, 0x8666, + 0x5503, 0x8667, 0x5504, 0x8668, 0x5505, 0x8669, 0x5506, 0xCBF4, 0x5507, 0xB4BD, 0x5508, 0x866A, 0x5509, 0xB0A6, 0x550A, 0x866B, + 0x550B, 0x866C, 0x550C, 0x866D, 0x550D, 0x866E, 0x550E, 0x866F, 0x550F, 0xDFF1, 0x5510, 0xCCC6, 0x5511, 0xDFF2, 0x5512, 0x8670, + 0x5513, 0x8671, 0x5514, 0xDFED, 0x5515, 0x8672, 0x5516, 0x8673, 0x5517, 0x8674, 0x5518, 0x8675, 0x5519, 0x8676, 0x551A, 0x8677, + 0x551B, 0xDFE9, 0x551C, 0x8678, 0x551D, 0x8679, 0x551E, 0x867A, 0x551F, 0x867B, 0x5520, 0xDFEB, 0x5521, 0x867C, 0x5522, 0xDFEF, + 0x5523, 0xDFF0, 0x5524, 0xBBBD, 0x5525, 0x867D, 0x5526, 0x867E, 0x5527, 0xDFF3, 0x5528, 0x8680, 0x5529, 0x8681, 0x552A, 0xDFF4, + 0x552B, 0x8682, 0x552C, 0xBBA3, 0x552D, 0x8683, 0x552E, 0xCADB, 0x552F, 0xCEA8, 0x5530, 0xE0A7, 0x5531, 0xB3AA, 0x5532, 0x8684, + 0x5533, 0xE0A6, 0x5534, 0x8685, 0x5535, 0x8686, 0x5536, 0x8687, 0x5537, 0xE0A1, 0x5538, 0x8688, 0x5539, 0x8689, 0x553A, 0x868A, + 0x553B, 0x868B, 0x553C, 0xDFFE, 0x553D, 0x868C, 0x553E, 0xCDD9, 0x553F, 0xDFFC, 0x5540, 0x868D, 0x5541, 0xDFFA, 0x5542, 0x868E, + 0x5543, 0xBFD0, 0x5544, 0xD7C4, 0x5545, 0x868F, 0x5546, 0xC9CC, 0x5547, 0x8690, 0x5548, 0x8691, 0x5549, 0xDFF8, 0x554A, 0xB0A1, + 0x554B, 0x8692, 0x554C, 0x8693, 0x554D, 0x8694, 0x554E, 0x8695, 0x554F, 0x8696, 0x5550, 0xDFFD, 0x5551, 0x8697, 0x5552, 0x8698, + 0x5553, 0x8699, 0x5554, 0x869A, 0x5555, 0xDFFB, 0x5556, 0xE0A2, 0x5557, 0x869B, 0x5558, 0x869C, 0x5559, 0x869D, 0x555A, 0x869E, + 0x555B, 0x869F, 0x555C, 0xE0A8, 0x555D, 0x86A0, 0x555E, 0x86A1, 0x555F, 0x86A2, 0x5560, 0x86A3, 0x5561, 0xB7C8, 0x5562, 0x86A4, + 0x5563, 0x86A5, 0x5564, 0xC6A1, 0x5565, 0xC9B6, 0x5566, 0xC0B2, 0x5567, 0xDFF5, 0x5568, 0x86A6, 0x5569, 0x86A7, 0x556A, 0xC5BE, + 0x556B, 0x86A8, 0x556C, 0xD8C4, 0x556D, 0xDFF9, 0x556E, 0xC4F6, 0x556F, 0x86A9, 0x5570, 0x86AA, 0x5571, 0x86AB, 0x5572, 0x86AC, + 0x5573, 0x86AD, 0x5574, 0x86AE, 0x5575, 0xE0A3, 0x5576, 0xE0A4, 0x5577, 0xE0A5, 0x5578, 0xD0A5, 0x5579, 0x86AF, 0x557A, 0x86B0, + 0x557B, 0xE0B4, 0x557C, 0xCCE4, 0x557D, 0x86B1, 0x557E, 0xE0B1, 0x557F, 0x86B2, 0x5580, 0xBFA6, 0x5581, 0xE0AF, 0x5582, 0xCEB9, + 0x5583, 0xE0AB, 0x5584, 0xC9C6, 0x5585, 0x86B3, 0x5586, 0x86B4, 0x5587, 0xC0AE, 0x5588, 0xE0AE, 0x5589, 0xBAED, 0x558A, 0xBAB0, + 0x558B, 0xE0A9, 0x558C, 0x86B5, 0x558D, 0x86B6, 0x558E, 0x86B7, 0x558F, 0xDFF6, 0x5590, 0x86B8, 0x5591, 0xE0B3, 0x5592, 0x86B9, + 0x5593, 0x86BA, 0x5594, 0xE0B8, 0x5595, 0x86BB, 0x5596, 0x86BC, 0x5597, 0x86BD, 0x5598, 0xB4AD, 0x5599, 0xE0B9, 0x559A, 0x86BE, + 0x559B, 0x86BF, 0x559C, 0xCFB2, 0x559D, 0xBAC8, 0x559E, 0x86C0, 0x559F, 0xE0B0, 0x55A0, 0x86C1, 0x55A1, 0x86C2, 0x55A2, 0x86C3, + 0x55A3, 0x86C4, 0x55A4, 0x86C5, 0x55A5, 0x86C6, 0x55A6, 0x86C7, 0x55A7, 0xD0FA, 0x55A8, 0x86C8, 0x55A9, 0x86C9, 0x55AA, 0x86CA, + 0x55AB, 0x86CB, 0x55AC, 0x86CC, 0x55AD, 0x86CD, 0x55AE, 0x86CE, 0x55AF, 0x86CF, 0x55B0, 0x86D0, 0x55B1, 0xE0AC, 0x55B2, 0x86D1, + 0x55B3, 0xD4FB, 0x55B4, 0x86D2, 0x55B5, 0xDFF7, 0x55B6, 0x86D3, 0x55B7, 0xC5E7, 0x55B8, 0x86D4, 0x55B9, 0xE0AD, 0x55BA, 0x86D5, + 0x55BB, 0xD3F7, 0x55BC, 0x86D6, 0x55BD, 0xE0B6, 0x55BE, 0xE0B7, 0x55BF, 0x86D7, 0x55C0, 0x86D8, 0x55C1, 0x86D9, 0x55C2, 0x86DA, + 0x55C3, 0x86DB, 0x55C4, 0xE0C4, 0x55C5, 0xD0E1, 0x55C6, 0x86DC, 0x55C7, 0x86DD, 0x55C8, 0x86DE, 0x55C9, 0xE0BC, 0x55CA, 0x86DF, + 0x55CB, 0x86E0, 0x55CC, 0xE0C9, 0x55CD, 0xE0CA, 0x55CE, 0x86E1, 0x55CF, 0x86E2, 0x55D0, 0x86E3, 0x55D1, 0xE0BE, 0x55D2, 0xE0AA, + 0x55D3, 0xC9A4, 0x55D4, 0xE0C1, 0x55D5, 0x86E4, 0x55D6, 0xE0B2, 0x55D7, 0x86E5, 0x55D8, 0x86E6, 0x55D9, 0x86E7, 0x55DA, 0x86E8, + 0x55DB, 0x86E9, 0x55DC, 0xCAC8, 0x55DD, 0xE0C3, 0x55DE, 0x86EA, 0x55DF, 0xE0B5, 0x55E0, 0x86EB, 0x55E1, 0xCECB, 0x55E2, 0x86EC, + 0x55E3, 0xCBC3, 0x55E4, 0xE0CD, 0x55E5, 0xE0C6, 0x55E6, 0xE0C2, 0x55E7, 0x86ED, 0x55E8, 0xE0CB, 0x55E9, 0x86EE, 0x55EA, 0xE0BA, + 0x55EB, 0xE0BF, 0x55EC, 0xE0C0, 0x55ED, 0x86EF, 0x55EE, 0x86F0, 0x55EF, 0xE0C5, 0x55F0, 0x86F1, 0x55F1, 0x86F2, 0x55F2, 0xE0C7, + 0x55F3, 0xE0C8, 0x55F4, 0x86F3, 0x55F5, 0xE0CC, 0x55F6, 0x86F4, 0x55F7, 0xE0BB, 0x55F8, 0x86F5, 0x55F9, 0x86F6, 0x55FA, 0x86F7, + 0x55FB, 0x86F8, 0x55FC, 0x86F9, 0x55FD, 0xCBD4, 0x55FE, 0xE0D5, 0x55FF, 0x86FA, 0x5600, 0xE0D6, 0x5601, 0xE0D2, 0x5602, 0x86FB, + 0x5603, 0x86FC, 0x5604, 0x86FD, 0x5605, 0x86FE, 0x5606, 0x8740, 0x5607, 0x8741, 0x5608, 0xE0D0, 0x5609, 0xBCCE, 0x560A, 0x8742, + 0x560B, 0x8743, 0x560C, 0xE0D1, 0x560D, 0x8744, 0x560E, 0xB8C2, 0x560F, 0xD8C5, 0x5610, 0x8745, 0x5611, 0x8746, 0x5612, 0x8747, + 0x5613, 0x8748, 0x5614, 0x8749, 0x5615, 0x874A, 0x5616, 0x874B, 0x5617, 0x874C, 0x5618, 0xD0EA, 0x5619, 0x874D, 0x561A, 0x874E, + 0x561B, 0xC2EF, 0x561C, 0x874F, 0x561D, 0x8750, 0x561E, 0xE0CF, 0x561F, 0xE0BD, 0x5620, 0x8751, 0x5621, 0x8752, 0x5622, 0x8753, + 0x5623, 0xE0D4, 0x5624, 0xE0D3, 0x5625, 0x8754, 0x5626, 0x8755, 0x5627, 0xE0D7, 0x5628, 0x8756, 0x5629, 0x8757, 0x562A, 0x8758, + 0x562B, 0x8759, 0x562C, 0xE0DC, 0x562D, 0xE0D8, 0x562E, 0x875A, 0x562F, 0x875B, 0x5630, 0x875C, 0x5631, 0xD6F6, 0x5632, 0xB3B0, + 0x5633, 0x875D, 0x5634, 0xD7EC, 0x5635, 0x875E, 0x5636, 0xCBBB, 0x5637, 0x875F, 0x5638, 0x8760, 0x5639, 0xE0DA, 0x563A, 0x8761, + 0x563B, 0xCEFB, 0x563C, 0x8762, 0x563D, 0x8763, 0x563E, 0x8764, 0x563F, 0xBAD9, 0x5640, 0x8765, 0x5641, 0x8766, 0x5642, 0x8767, + 0x5643, 0x8768, 0x5644, 0x8769, 0x5645, 0x876A, 0x5646, 0x876B, 0x5647, 0x876C, 0x5648, 0x876D, 0x5649, 0x876E, 0x564A, 0x876F, + 0x564B, 0x8770, 0x564C, 0xE0E1, 0x564D, 0xE0DD, 0x564E, 0xD2AD, 0x564F, 0x8771, 0x5650, 0x8772, 0x5651, 0x8773, 0x5652, 0x8774, + 0x5653, 0x8775, 0x5654, 0xE0E2, 0x5655, 0x8776, 0x5656, 0x8777, 0x5657, 0xE0DB, 0x5658, 0xE0D9, 0x5659, 0xE0DF, 0x565A, 0x8778, + 0x565B, 0x8779, 0x565C, 0xE0E0, 0x565D, 0x877A, 0x565E, 0x877B, 0x565F, 0x877C, 0x5660, 0x877D, 0x5661, 0x877E, 0x5662, 0xE0DE, + 0x5663, 0x8780, 0x5664, 0xE0E4, 0x5665, 0x8781, 0x5666, 0x8782, 0x5667, 0x8783, 0x5668, 0xC6F7, 0x5669, 0xD8AC, 0x566A, 0xD4EB, + 0x566B, 0xE0E6, 0x566C, 0xCAC9, 0x566D, 0x8784, 0x566E, 0x8785, 0x566F, 0x8786, 0x5670, 0x8787, 0x5671, 0xE0E5, 0x5672, 0x8788, + 0x5673, 0x8789, 0x5674, 0x878A, 0x5675, 0x878B, 0x5676, 0xB8C1, 0x5677, 0x878C, 0x5678, 0x878D, 0x5679, 0x878E, 0x567A, 0x878F, + 0x567B, 0xE0E7, 0x567C, 0xE0E8, 0x567D, 0x8790, 0x567E, 0x8791, 0x567F, 0x8792, 0x5680, 0x8793, 0x5681, 0x8794, 0x5682, 0x8795, + 0x5683, 0x8796, 0x5684, 0x8797, 0x5685, 0xE0E9, 0x5686, 0xE0E3, 0x5687, 0x8798, 0x5688, 0x8799, 0x5689, 0x879A, 0x568A, 0x879B, + 0x568B, 0x879C, 0x568C, 0x879D, 0x568D, 0x879E, 0x568E, 0xBABF, 0x568F, 0xCCE7, 0x5690, 0x879F, 0x5691, 0x87A0, 0x5692, 0x87A1, + 0x5693, 0xE0EA, 0x5694, 0x87A2, 0x5695, 0x87A3, 0x5696, 0x87A4, 0x5697, 0x87A5, 0x5698, 0x87A6, 0x5699, 0x87A7, 0x569A, 0x87A8, + 0x569B, 0x87A9, 0x569C, 0x87AA, 0x569D, 0x87AB, 0x569E, 0x87AC, 0x569F, 0x87AD, 0x56A0, 0x87AE, 0x56A1, 0x87AF, 0x56A2, 0x87B0, + 0x56A3, 0xCFF9, 0x56A4, 0x87B1, 0x56A5, 0x87B2, 0x56A6, 0x87B3, 0x56A7, 0x87B4, 0x56A8, 0x87B5, 0x56A9, 0x87B6, 0x56AA, 0x87B7, + 0x56AB, 0x87B8, 0x56AC, 0x87B9, 0x56AD, 0x87BA, 0x56AE, 0x87BB, 0x56AF, 0xE0EB, 0x56B0, 0x87BC, 0x56B1, 0x87BD, 0x56B2, 0x87BE, + 0x56B3, 0x87BF, 0x56B4, 0x87C0, 0x56B5, 0x87C1, 0x56B6, 0x87C2, 0x56B7, 0xC8C2, 0x56B8, 0x87C3, 0x56B9, 0x87C4, 0x56BA, 0x87C5, + 0x56BB, 0x87C6, 0x56BC, 0xBDC0, 0x56BD, 0x87C7, 0x56BE, 0x87C8, 0x56BF, 0x87C9, 0x56C0, 0x87CA, 0x56C1, 0x87CB, 0x56C2, 0x87CC, + 0x56C3, 0x87CD, 0x56C4, 0x87CE, 0x56C5, 0x87CF, 0x56C6, 0x87D0, 0x56C7, 0x87D1, 0x56C8, 0x87D2, 0x56C9, 0x87D3, 0x56CA, 0xC4D2, + 0x56CB, 0x87D4, 0x56CC, 0x87D5, 0x56CD, 0x87D6, 0x56CE, 0x87D7, 0x56CF, 0x87D8, 0x56D0, 0x87D9, 0x56D1, 0x87DA, 0x56D2, 0x87DB, + 0x56D3, 0x87DC, 0x56D4, 0xE0EC, 0x56D5, 0x87DD, 0x56D6, 0x87DE, 0x56D7, 0xE0ED, 0x56D8, 0x87DF, 0x56D9, 0x87E0, 0x56DA, 0xC7F4, + 0x56DB, 0xCBC4, 0x56DC, 0x87E1, 0x56DD, 0xE0EE, 0x56DE, 0xBBD8, 0x56DF, 0xD8B6, 0x56E0, 0xD2F2, 0x56E1, 0xE0EF, 0x56E2, 0xCDC5, + 0x56E3, 0x87E2, 0x56E4, 0xB6DA, 0x56E5, 0x87E3, 0x56E6, 0x87E4, 0x56E7, 0x87E5, 0x56E8, 0x87E6, 0x56E9, 0x87E7, 0x56EA, 0x87E8, + 0x56EB, 0xE0F1, 0x56EC, 0x87E9, 0x56ED, 0xD4B0, 0x56EE, 0x87EA, 0x56EF, 0x87EB, 0x56F0, 0xC0A7, 0x56F1, 0xB4D1, 0x56F2, 0x87EC, + 0x56F3, 0x87ED, 0x56F4, 0xCEA7, 0x56F5, 0xE0F0, 0x56F6, 0x87EE, 0x56F7, 0x87EF, 0x56F8, 0x87F0, 0x56F9, 0xE0F2, 0x56FA, 0xB9CC, + 0x56FB, 0x87F1, 0x56FC, 0x87F2, 0x56FD, 0xB9FA, 0x56FE, 0xCDBC, 0x56FF, 0xE0F3, 0x5700, 0x87F3, 0x5701, 0x87F4, 0x5702, 0x87F5, + 0x5703, 0xC6D4, 0x5704, 0xE0F4, 0x5705, 0x87F6, 0x5706, 0xD4B2, 0x5707, 0x87F7, 0x5708, 0xC8A6, 0x5709, 0xE0F6, 0x570A, 0xE0F5, + 0x570B, 0x87F8, 0x570C, 0x87F9, 0x570D, 0x87FA, 0x570E, 0x87FB, 0x570F, 0x87FC, 0x5710, 0x87FD, 0x5711, 0x87FE, 0x5712, 0x8840, + 0x5713, 0x8841, 0x5714, 0x8842, 0x5715, 0x8843, 0x5716, 0x8844, 0x5717, 0x8845, 0x5718, 0x8846, 0x5719, 0x8847, 0x571A, 0x8848, + 0x571B, 0x8849, 0x571C, 0xE0F7, 0x571D, 0x884A, 0x571E, 0x884B, 0x571F, 0xCDC1, 0x5720, 0x884C, 0x5721, 0x884D, 0x5722, 0x884E, + 0x5723, 0xCAA5, 0x5724, 0x884F, 0x5725, 0x8850, 0x5726, 0x8851, 0x5727, 0x8852, 0x5728, 0xD4DA, 0x5729, 0xDBD7, 0x572A, 0xDBD9, + 0x572B, 0x8853, 0x572C, 0xDBD8, 0x572D, 0xB9E7, 0x572E, 0xDBDC, 0x572F, 0xDBDD, 0x5730, 0xB5D8, 0x5731, 0x8854, 0x5732, 0x8855, + 0x5733, 0xDBDA, 0x5734, 0x8856, 0x5735, 0x8857, 0x5736, 0x8858, 0x5737, 0x8859, 0x5738, 0x885A, 0x5739, 0xDBDB, 0x573A, 0xB3A1, + 0x573B, 0xDBDF, 0x573C, 0x885B, 0x573D, 0x885C, 0x573E, 0xBBF8, 0x573F, 0x885D, 0x5740, 0xD6B7, 0x5741, 0x885E, 0x5742, 0xDBE0, + 0x5743, 0x885F, 0x5744, 0x8860, 0x5745, 0x8861, 0x5746, 0x8862, 0x5747, 0xBEF9, 0x5748, 0x8863, 0x5749, 0x8864, 0x574A, 0xB7BB, + 0x574B, 0x8865, 0x574C, 0xDBD0, 0x574D, 0xCCAE, 0x574E, 0xBFB2, 0x574F, 0xBBB5, 0x5750, 0xD7F8, 0x5751, 0xBFD3, 0x5752, 0x8866, + 0x5753, 0x8867, 0x5754, 0x8868, 0x5755, 0x8869, 0x5756, 0x886A, 0x5757, 0xBFE9, 0x5758, 0x886B, 0x5759, 0x886C, 0x575A, 0xBCE1, + 0x575B, 0xCCB3, 0x575C, 0xDBDE, 0x575D, 0xB0D3, 0x575E, 0xCEEB, 0x575F, 0xB7D8, 0x5760, 0xD7B9, 0x5761, 0xC6C2, 0x5762, 0x886D, + 0x5763, 0x886E, 0x5764, 0xC0A4, 0x5765, 0x886F, 0x5766, 0xCCB9, 0x5767, 0x8870, 0x5768, 0xDBE7, 0x5769, 0xDBE1, 0x576A, 0xC6BA, + 0x576B, 0xDBE3, 0x576C, 0x8871, 0x576D, 0xDBE8, 0x576E, 0x8872, 0x576F, 0xC5F7, 0x5770, 0x8873, 0x5771, 0x8874, 0x5772, 0x8875, + 0x5773, 0xDBEA, 0x5774, 0x8876, 0x5775, 0x8877, 0x5776, 0xDBE9, 0x5777, 0xBFC0, 0x5778, 0x8878, 0x5779, 0x8879, 0x577A, 0x887A, + 0x577B, 0xDBE6, 0x577C, 0xDBE5, 0x577D, 0x887B, 0x577E, 0x887C, 0x577F, 0x887D, 0x5780, 0x887E, 0x5781, 0x8880, 0x5782, 0xB4B9, + 0x5783, 0xC0AC, 0x5784, 0xC2A2, 0x5785, 0xDBE2, 0x5786, 0xDBE4, 0x5787, 0x8881, 0x5788, 0x8882, 0x5789, 0x8883, 0x578A, 0x8884, + 0x578B, 0xD0CD, 0x578C, 0xDBED, 0x578D, 0x8885, 0x578E, 0x8886, 0x578F, 0x8887, 0x5790, 0x8888, 0x5791, 0x8889, 0x5792, 0xC0DD, + 0x5793, 0xDBF2, 0x5794, 0x888A, 0x5795, 0x888B, 0x5796, 0x888C, 0x5797, 0x888D, 0x5798, 0x888E, 0x5799, 0x888F, 0x579A, 0x8890, + 0x579B, 0xB6E2, 0x579C, 0x8891, 0x579D, 0x8892, 0x579E, 0x8893, 0x579F, 0x8894, 0x57A0, 0xDBF3, 0x57A1, 0xDBD2, 0x57A2, 0xB9B8, + 0x57A3, 0xD4AB, 0x57A4, 0xDBEC, 0x57A5, 0x8895, 0x57A6, 0xBFD1, 0x57A7, 0xDBF0, 0x57A8, 0x8896, 0x57A9, 0xDBD1, 0x57AA, 0x8897, + 0x57AB, 0xB5E6, 0x57AC, 0x8898, 0x57AD, 0xDBEB, 0x57AE, 0xBFE5, 0x57AF, 0x8899, 0x57B0, 0x889A, 0x57B1, 0x889B, 0x57B2, 0xDBEE, + 0x57B3, 0x889C, 0x57B4, 0xDBF1, 0x57B5, 0x889D, 0x57B6, 0x889E, 0x57B7, 0x889F, 0x57B8, 0xDBF9, 0x57B9, 0x88A0, 0x57BA, 0x88A1, + 0x57BB, 0x88A2, 0x57BC, 0x88A3, 0x57BD, 0x88A4, 0x57BE, 0x88A5, 0x57BF, 0x88A6, 0x57C0, 0x88A7, 0x57C1, 0x88A8, 0x57C2, 0xB9A1, + 0x57C3, 0xB0A3, 0x57C4, 0x88A9, 0x57C5, 0x88AA, 0x57C6, 0x88AB, 0x57C7, 0x88AC, 0x57C8, 0x88AD, 0x57C9, 0x88AE, 0x57CA, 0x88AF, + 0x57CB, 0xC2F1, 0x57CC, 0x88B0, 0x57CD, 0x88B1, 0x57CE, 0xB3C7, 0x57CF, 0xDBEF, 0x57D0, 0x88B2, 0x57D1, 0x88B3, 0x57D2, 0xDBF8, + 0x57D3, 0x88B4, 0x57D4, 0xC6D2, 0x57D5, 0xDBF4, 0x57D6, 0x88B5, 0x57D7, 0x88B6, 0x57D8, 0xDBF5, 0x57D9, 0xDBF7, 0x57DA, 0xDBF6, + 0x57DB, 0x88B7, 0x57DC, 0x88B8, 0x57DD, 0xDBFE, 0x57DE, 0x88B9, 0x57DF, 0xD3F2, 0x57E0, 0xB2BA, 0x57E1, 0x88BA, 0x57E2, 0x88BB, + 0x57E3, 0x88BC, 0x57E4, 0xDBFD, 0x57E5, 0x88BD, 0x57E6, 0x88BE, 0x57E7, 0x88BF, 0x57E8, 0x88C0, 0x57E9, 0x88C1, 0x57EA, 0x88C2, + 0x57EB, 0x88C3, 0x57EC, 0x88C4, 0x57ED, 0xDCA4, 0x57EE, 0x88C5, 0x57EF, 0xDBFB, 0x57F0, 0x88C6, 0x57F1, 0x88C7, 0x57F2, 0x88C8, + 0x57F3, 0x88C9, 0x57F4, 0xDBFA, 0x57F5, 0x88CA, 0x57F6, 0x88CB, 0x57F7, 0x88CC, 0x57F8, 0xDBFC, 0x57F9, 0xC5E0, 0x57FA, 0xBBF9, + 0x57FB, 0x88CD, 0x57FC, 0x88CE, 0x57FD, 0xDCA3, 0x57FE, 0x88CF, 0x57FF, 0x88D0, 0x5800, 0xDCA5, 0x5801, 0x88D1, 0x5802, 0xCCC3, + 0x5803, 0x88D2, 0x5804, 0x88D3, 0x5805, 0x88D4, 0x5806, 0xB6D1, 0x5807, 0xDDC0, 0x5808, 0x88D5, 0x5809, 0x88D6, 0x580A, 0x88D7, + 0x580B, 0xDCA1, 0x580C, 0x88D8, 0x580D, 0xDCA2, 0x580E, 0x88D9, 0x580F, 0x88DA, 0x5810, 0x88DB, 0x5811, 0xC7B5, 0x5812, 0x88DC, + 0x5813, 0x88DD, 0x5814, 0x88DE, 0x5815, 0xB6E9, 0x5816, 0x88DF, 0x5817, 0x88E0, 0x5818, 0x88E1, 0x5819, 0xDCA7, 0x581A, 0x88E2, + 0x581B, 0x88E3, 0x581C, 0x88E4, 0x581D, 0x88E5, 0x581E, 0xDCA6, 0x581F, 0x88E6, 0x5820, 0xDCA9, 0x5821, 0xB1A4, 0x5822, 0x88E7, + 0x5823, 0x88E8, 0x5824, 0xB5CC, 0x5825, 0x88E9, 0x5826, 0x88EA, 0x5827, 0x88EB, 0x5828, 0x88EC, 0x5829, 0x88ED, 0x582A, 0xBFB0, + 0x582B, 0x88EE, 0x582C, 0x88EF, 0x582D, 0x88F0, 0x582E, 0x88F1, 0x582F, 0x88F2, 0x5830, 0xD1DF, 0x5831, 0x88F3, 0x5832, 0x88F4, + 0x5833, 0x88F5, 0x5834, 0x88F6, 0x5835, 0xB6C2, 0x5836, 0x88F7, 0x5837, 0x88F8, 0x5838, 0x88F9, 0x5839, 0x88FA, 0x583A, 0x88FB, + 0x583B, 0x88FC, 0x583C, 0x88FD, 0x583D, 0x88FE, 0x583E, 0x8940, 0x583F, 0x8941, 0x5840, 0x8942, 0x5841, 0x8943, 0x5842, 0x8944, + 0x5843, 0x8945, 0x5844, 0xDCA8, 0x5845, 0x8946, 0x5846, 0x8947, 0x5847, 0x8948, 0x5848, 0x8949, 0x5849, 0x894A, 0x584A, 0x894B, + 0x584B, 0x894C, 0x584C, 0xCBFA, 0x584D, 0xEBF3, 0x584E, 0x894D, 0x584F, 0x894E, 0x5850, 0x894F, 0x5851, 0xCBDC, 0x5852, 0x8950, + 0x5853, 0x8951, 0x5854, 0xCBFE, 0x5855, 0x8952, 0x5856, 0x8953, 0x5857, 0x8954, 0x5858, 0xCCC1, 0x5859, 0x8955, 0x585A, 0x8956, + 0x585B, 0x8957, 0x585C, 0x8958, 0x585D, 0x8959, 0x585E, 0xC8FB, 0x585F, 0x895A, 0x5860, 0x895B, 0x5861, 0x895C, 0x5862, 0x895D, + 0x5863, 0x895E, 0x5864, 0x895F, 0x5865, 0xDCAA, 0x5866, 0x8960, 0x5867, 0x8961, 0x5868, 0x8962, 0x5869, 0x8963, 0x586A, 0x8964, + 0x586B, 0xCCEE, 0x586C, 0xDCAB, 0x586D, 0x8965, 0x586E, 0x8966, 0x586F, 0x8967, 0x5870, 0x8968, 0x5871, 0x8969, 0x5872, 0x896A, + 0x5873, 0x896B, 0x5874, 0x896C, 0x5875, 0x896D, 0x5876, 0x896E, 0x5877, 0x896F, 0x5878, 0x8970, 0x5879, 0x8971, 0x587A, 0x8972, + 0x587B, 0x8973, 0x587C, 0x8974, 0x587D, 0x8975, 0x587E, 0xDBD3, 0x587F, 0x8976, 0x5880, 0xDCAF, 0x5881, 0xDCAC, 0x5882, 0x8977, + 0x5883, 0xBEB3, 0x5884, 0x8978, 0x5885, 0xCAFB, 0x5886, 0x8979, 0x5887, 0x897A, 0x5888, 0x897B, 0x5889, 0xDCAD, 0x588A, 0x897C, + 0x588B, 0x897D, 0x588C, 0x897E, 0x588D, 0x8980, 0x588E, 0x8981, 0x588F, 0x8982, 0x5890, 0x8983, 0x5891, 0x8984, 0x5892, 0xC9CA, + 0x5893, 0xC4B9, 0x5894, 0x8985, 0x5895, 0x8986, 0x5896, 0x8987, 0x5897, 0x8988, 0x5898, 0x8989, 0x5899, 0xC7BD, 0x589A, 0xDCAE, + 0x589B, 0x898A, 0x589C, 0x898B, 0x589D, 0x898C, 0x589E, 0xD4F6, 0x589F, 0xD0E6, 0x58A0, 0x898D, 0x58A1, 0x898E, 0x58A2, 0x898F, + 0x58A3, 0x8990, 0x58A4, 0x8991, 0x58A5, 0x8992, 0x58A6, 0x8993, 0x58A7, 0x8994, 0x58A8, 0xC4AB, 0x58A9, 0xB6D5, 0x58AA, 0x8995, + 0x58AB, 0x8996, 0x58AC, 0x8997, 0x58AD, 0x8998, 0x58AE, 0x8999, 0x58AF, 0x899A, 0x58B0, 0x899B, 0x58B1, 0x899C, 0x58B2, 0x899D, + 0x58B3, 0x899E, 0x58B4, 0x899F, 0x58B5, 0x89A0, 0x58B6, 0x89A1, 0x58B7, 0x89A2, 0x58B8, 0x89A3, 0x58B9, 0x89A4, 0x58BA, 0x89A5, + 0x58BB, 0x89A6, 0x58BC, 0xDBD4, 0x58BD, 0x89A7, 0x58BE, 0x89A8, 0x58BF, 0x89A9, 0x58C0, 0x89AA, 0x58C1, 0xB1DA, 0x58C2, 0x89AB, + 0x58C3, 0x89AC, 0x58C4, 0x89AD, 0x58C5, 0xDBD5, 0x58C6, 0x89AE, 0x58C7, 0x89AF, 0x58C8, 0x89B0, 0x58C9, 0x89B1, 0x58CA, 0x89B2, + 0x58CB, 0x89B3, 0x58CC, 0x89B4, 0x58CD, 0x89B5, 0x58CE, 0x89B6, 0x58CF, 0x89B7, 0x58D0, 0x89B8, 0x58D1, 0xDBD6, 0x58D2, 0x89B9, + 0x58D3, 0x89BA, 0x58D4, 0x89BB, 0x58D5, 0xBABE, 0x58D6, 0x89BC, 0x58D7, 0x89BD, 0x58D8, 0x89BE, 0x58D9, 0x89BF, 0x58DA, 0x89C0, + 0x58DB, 0x89C1, 0x58DC, 0x89C2, 0x58DD, 0x89C3, 0x58DE, 0x89C4, 0x58DF, 0x89C5, 0x58E0, 0x89C6, 0x58E1, 0x89C7, 0x58E2, 0x89C8, + 0x58E3, 0x89C9, 0x58E4, 0xC8C0, 0x58E5, 0x89CA, 0x58E6, 0x89CB, 0x58E7, 0x89CC, 0x58E8, 0x89CD, 0x58E9, 0x89CE, 0x58EA, 0x89CF, + 0x58EB, 0xCABF, 0x58EC, 0xC8C9, 0x58ED, 0x89D0, 0x58EE, 0xD7B3, 0x58EF, 0x89D1, 0x58F0, 0xC9F9, 0x58F1, 0x89D2, 0x58F2, 0x89D3, + 0x58F3, 0xBFC7, 0x58F4, 0x89D4, 0x58F5, 0x89D5, 0x58F6, 0xBAF8, 0x58F7, 0x89D6, 0x58F8, 0x89D7, 0x58F9, 0xD2BC, 0x58FA, 0x89D8, + 0x58FB, 0x89D9, 0x58FC, 0x89DA, 0x58FD, 0x89DB, 0x58FE, 0x89DC, 0x58FF, 0x89DD, 0x5900, 0x89DE, 0x5901, 0x89DF, 0x5902, 0xE2BA, + 0x5903, 0x89E0, 0x5904, 0xB4A6, 0x5905, 0x89E1, 0x5906, 0x89E2, 0x5907, 0xB1B8, 0x5908, 0x89E3, 0x5909, 0x89E4, 0x590A, 0x89E5, + 0x590B, 0x89E6, 0x590C, 0x89E7, 0x590D, 0xB8B4, 0x590E, 0x89E8, 0x590F, 0xCFC4, 0x5910, 0x89E9, 0x5911, 0x89EA, 0x5912, 0x89EB, + 0x5913, 0x89EC, 0x5914, 0xD9E7, 0x5915, 0xCFA6, 0x5916, 0xCDE2, 0x5917, 0x89ED, 0x5918, 0x89EE, 0x5919, 0xD9ED, 0x591A, 0xB6E0, + 0x591B, 0x89EF, 0x591C, 0xD2B9, 0x591D, 0x89F0, 0x591E, 0x89F1, 0x591F, 0xB9BB, 0x5920, 0x89F2, 0x5921, 0x89F3, 0x5922, 0x89F4, + 0x5923, 0x89F5, 0x5924, 0xE2B9, 0x5925, 0xE2B7, 0x5926, 0x89F6, 0x5927, 0xB4F3, 0x5928, 0x89F7, 0x5929, 0xCCEC, 0x592A, 0xCCAB, + 0x592B, 0xB7F2, 0x592C, 0x89F8, 0x592D, 0xD8B2, 0x592E, 0xD1EB, 0x592F, 0xBABB, 0x5930, 0x89F9, 0x5931, 0xCAA7, 0x5932, 0x89FA, + 0x5933, 0x89FB, 0x5934, 0xCDB7, 0x5935, 0x89FC, 0x5936, 0x89FD, 0x5937, 0xD2C4, 0x5938, 0xBFE4, 0x5939, 0xBCD0, 0x593A, 0xB6E1, + 0x593B, 0x89FE, 0x593C, 0xDEC5, 0x593D, 0x8A40, 0x593E, 0x8A41, 0x593F, 0x8A42, 0x5940, 0x8A43, 0x5941, 0xDEC6, 0x5942, 0xDBBC, + 0x5943, 0x8A44, 0x5944, 0xD1D9, 0x5945, 0x8A45, 0x5946, 0x8A46, 0x5947, 0xC6E6, 0x5948, 0xC4CE, 0x5949, 0xB7EE, 0x594A, 0x8A47, + 0x594B, 0xB7DC, 0x594C, 0x8A48, 0x594D, 0x8A49, 0x594E, 0xBFFC, 0x594F, 0xD7E0, 0x5950, 0x8A4A, 0x5951, 0xC6F5, 0x5952, 0x8A4B, + 0x5953, 0x8A4C, 0x5954, 0xB1BC, 0x5955, 0xDEC8, 0x5956, 0xBDB1, 0x5957, 0xCCD7, 0x5958, 0xDECA, 0x5959, 0x8A4D, 0x595A, 0xDEC9, + 0x595B, 0x8A4E, 0x595C, 0x8A4F, 0x595D, 0x8A50, 0x595E, 0x8A51, 0x595F, 0x8A52, 0x5960, 0xB5EC, 0x5961, 0x8A53, 0x5962, 0xC9DD, + 0x5963, 0x8A54, 0x5964, 0x8A55, 0x5965, 0xB0C2, 0x5966, 0x8A56, 0x5967, 0x8A57, 0x5968, 0x8A58, 0x5969, 0x8A59, 0x596A, 0x8A5A, + 0x596B, 0x8A5B, 0x596C, 0x8A5C, 0x596D, 0x8A5D, 0x596E, 0x8A5E, 0x596F, 0x8A5F, 0x5970, 0x8A60, 0x5971, 0x8A61, 0x5972, 0x8A62, + 0x5973, 0xC5AE, 0x5974, 0xC5AB, 0x5975, 0x8A63, 0x5976, 0xC4CC, 0x5977, 0x8A64, 0x5978, 0xBCE9, 0x5979, 0xCBFD, 0x597A, 0x8A65, + 0x597B, 0x8A66, 0x597C, 0x8A67, 0x597D, 0xBAC3, 0x597E, 0x8A68, 0x597F, 0x8A69, 0x5980, 0x8A6A, 0x5981, 0xE5F9, 0x5982, 0xC8E7, + 0x5983, 0xE5FA, 0x5984, 0xCDFD, 0x5985, 0x8A6B, 0x5986, 0xD7B1, 0x5987, 0xB8BE, 0x5988, 0xC2E8, 0x5989, 0x8A6C, 0x598A, 0xC8D1, + 0x598B, 0x8A6D, 0x598C, 0x8A6E, 0x598D, 0xE5FB, 0x598E, 0x8A6F, 0x598F, 0x8A70, 0x5990, 0x8A71, 0x5991, 0x8A72, 0x5992, 0xB6CA, + 0x5993, 0xBCCB, 0x5994, 0x8A73, 0x5995, 0x8A74, 0x5996, 0xD1FD, 0x5997, 0xE6A1, 0x5998, 0x8A75, 0x5999, 0xC3EE, 0x599A, 0x8A76, + 0x599B, 0x8A77, 0x599C, 0x8A78, 0x599D, 0x8A79, 0x599E, 0xE6A4, 0x599F, 0x8A7A, 0x59A0, 0x8A7B, 0x59A1, 0x8A7C, 0x59A2, 0x8A7D, + 0x59A3, 0xE5FE, 0x59A4, 0xE6A5, 0x59A5, 0xCDD7, 0x59A6, 0x8A7E, 0x59A7, 0x8A80, 0x59A8, 0xB7C1, 0x59A9, 0xE5FC, 0x59AA, 0xE5FD, + 0x59AB, 0xE6A3, 0x59AC, 0x8A81, 0x59AD, 0x8A82, 0x59AE, 0xC4DD, 0x59AF, 0xE6A8, 0x59B0, 0x8A83, 0x59B1, 0x8A84, 0x59B2, 0xE6A7, + 0x59B3, 0x8A85, 0x59B4, 0x8A86, 0x59B5, 0x8A87, 0x59B6, 0x8A88, 0x59B7, 0x8A89, 0x59B8, 0x8A8A, 0x59B9, 0xC3C3, 0x59BA, 0x8A8B, + 0x59BB, 0xC6DE, 0x59BC, 0x8A8C, 0x59BD, 0x8A8D, 0x59BE, 0xE6AA, 0x59BF, 0x8A8E, 0x59C0, 0x8A8F, 0x59C1, 0x8A90, 0x59C2, 0x8A91, + 0x59C3, 0x8A92, 0x59C4, 0x8A93, 0x59C5, 0x8A94, 0x59C6, 0xC4B7, 0x59C7, 0x8A95, 0x59C8, 0x8A96, 0x59C9, 0x8A97, 0x59CA, 0xE6A2, + 0x59CB, 0xCABC, 0x59CC, 0x8A98, 0x59CD, 0x8A99, 0x59CE, 0x8A9A, 0x59CF, 0x8A9B, 0x59D0, 0xBDE3, 0x59D1, 0xB9C3, 0x59D2, 0xE6A6, + 0x59D3, 0xD0D5, 0x59D4, 0xCEAF, 0x59D5, 0x8A9C, 0x59D6, 0x8A9D, 0x59D7, 0xE6A9, 0x59D8, 0xE6B0, 0x59D9, 0x8A9E, 0x59DA, 0xD2A6, + 0x59DB, 0x8A9F, 0x59DC, 0xBDAA, 0x59DD, 0xE6AD, 0x59DE, 0x8AA0, 0x59DF, 0x8AA1, 0x59E0, 0x8AA2, 0x59E1, 0x8AA3, 0x59E2, 0x8AA4, + 0x59E3, 0xE6AF, 0x59E4, 0x8AA5, 0x59E5, 0xC0D1, 0x59E6, 0x8AA6, 0x59E7, 0x8AA7, 0x59E8, 0xD2CC, 0x59E9, 0x8AA8, 0x59EA, 0x8AA9, + 0x59EB, 0x8AAA, 0x59EC, 0xBCA7, 0x59ED, 0x8AAB, 0x59EE, 0x8AAC, 0x59EF, 0x8AAD, 0x59F0, 0x8AAE, 0x59F1, 0x8AAF, 0x59F2, 0x8AB0, + 0x59F3, 0x8AB1, 0x59F4, 0x8AB2, 0x59F5, 0x8AB3, 0x59F6, 0x8AB4, 0x59F7, 0x8AB5, 0x59F8, 0x8AB6, 0x59F9, 0xE6B1, 0x59FA, 0x8AB7, + 0x59FB, 0xD2F6, 0x59FC, 0x8AB8, 0x59FD, 0x8AB9, 0x59FE, 0x8ABA, 0x59FF, 0xD7CB, 0x5A00, 0x8ABB, 0x5A01, 0xCDFE, 0x5A02, 0x8ABC, + 0x5A03, 0xCDDE, 0x5A04, 0xC2A6, 0x5A05, 0xE6AB, 0x5A06, 0xE6AC, 0x5A07, 0xBDBF, 0x5A08, 0xE6AE, 0x5A09, 0xE6B3, 0x5A0A, 0x8ABD, + 0x5A0B, 0x8ABE, 0x5A0C, 0xE6B2, 0x5A0D, 0x8ABF, 0x5A0E, 0x8AC0, 0x5A0F, 0x8AC1, 0x5A10, 0x8AC2, 0x5A11, 0xE6B6, 0x5A12, 0x8AC3, + 0x5A13, 0xE6B8, 0x5A14, 0x8AC4, 0x5A15, 0x8AC5, 0x5A16, 0x8AC6, 0x5A17, 0x8AC7, 0x5A18, 0xC4EF, 0x5A19, 0x8AC8, 0x5A1A, 0x8AC9, + 0x5A1B, 0x8ACA, 0x5A1C, 0xC4C8, 0x5A1D, 0x8ACB, 0x5A1E, 0x8ACC, 0x5A1F, 0xBEEA, 0x5A20, 0xC9EF, 0x5A21, 0x8ACD, 0x5A22, 0x8ACE, + 0x5A23, 0xE6B7, 0x5A24, 0x8ACF, 0x5A25, 0xB6F0, 0x5A26, 0x8AD0, 0x5A27, 0x8AD1, 0x5A28, 0x8AD2, 0x5A29, 0xC3E4, 0x5A2A, 0x8AD3, + 0x5A2B, 0x8AD4, 0x5A2C, 0x8AD5, 0x5A2D, 0x8AD6, 0x5A2E, 0x8AD7, 0x5A2F, 0x8AD8, 0x5A30, 0x8AD9, 0x5A31, 0xD3E9, 0x5A32, 0xE6B4, + 0x5A33, 0x8ADA, 0x5A34, 0xE6B5, 0x5A35, 0x8ADB, 0x5A36, 0xC8A2, 0x5A37, 0x8ADC, 0x5A38, 0x8ADD, 0x5A39, 0x8ADE, 0x5A3A, 0x8ADF, + 0x5A3B, 0x8AE0, 0x5A3C, 0xE6BD, 0x5A3D, 0x8AE1, 0x5A3E, 0x8AE2, 0x5A3F, 0x8AE3, 0x5A40, 0xE6B9, 0x5A41, 0x8AE4, 0x5A42, 0x8AE5, + 0x5A43, 0x8AE6, 0x5A44, 0x8AE7, 0x5A45, 0x8AE8, 0x5A46, 0xC6C5, 0x5A47, 0x8AE9, 0x5A48, 0x8AEA, 0x5A49, 0xCDF1, 0x5A4A, 0xE6BB, + 0x5A4B, 0x8AEB, 0x5A4C, 0x8AEC, 0x5A4D, 0x8AED, 0x5A4E, 0x8AEE, 0x5A4F, 0x8AEF, 0x5A50, 0x8AF0, 0x5A51, 0x8AF1, 0x5A52, 0x8AF2, + 0x5A53, 0x8AF3, 0x5A54, 0x8AF4, 0x5A55, 0xE6BC, 0x5A56, 0x8AF5, 0x5A57, 0x8AF6, 0x5A58, 0x8AF7, 0x5A59, 0x8AF8, 0x5A5A, 0xBBE9, + 0x5A5B, 0x8AF9, 0x5A5C, 0x8AFA, 0x5A5D, 0x8AFB, 0x5A5E, 0x8AFC, 0x5A5F, 0x8AFD, 0x5A60, 0x8AFE, 0x5A61, 0x8B40, 0x5A62, 0xE6BE, + 0x5A63, 0x8B41, 0x5A64, 0x8B42, 0x5A65, 0x8B43, 0x5A66, 0x8B44, 0x5A67, 0xE6BA, 0x5A68, 0x8B45, 0x5A69, 0x8B46, 0x5A6A, 0xC0B7, + 0x5A6B, 0x8B47, 0x5A6C, 0x8B48, 0x5A6D, 0x8B49, 0x5A6E, 0x8B4A, 0x5A6F, 0x8B4B, 0x5A70, 0x8B4C, 0x5A71, 0x8B4D, 0x5A72, 0x8B4E, + 0x5A73, 0x8B4F, 0x5A74, 0xD3A4, 0x5A75, 0xE6BF, 0x5A76, 0xC9F4, 0x5A77, 0xE6C3, 0x5A78, 0x8B50, 0x5A79, 0x8B51, 0x5A7A, 0xE6C4, + 0x5A7B, 0x8B52, 0x5A7C, 0x8B53, 0x5A7D, 0x8B54, 0x5A7E, 0x8B55, 0x5A7F, 0xD0F6, 0x5A80, 0x8B56, 0x5A81, 0x8B57, 0x5A82, 0x8B58, + 0x5A83, 0x8B59, 0x5A84, 0x8B5A, 0x5A85, 0x8B5B, 0x5A86, 0x8B5C, 0x5A87, 0x8B5D, 0x5A88, 0x8B5E, 0x5A89, 0x8B5F, 0x5A8A, 0x8B60, + 0x5A8B, 0x8B61, 0x5A8C, 0x8B62, 0x5A8D, 0x8B63, 0x5A8E, 0x8B64, 0x5A8F, 0x8B65, 0x5A90, 0x8B66, 0x5A91, 0x8B67, 0x5A92, 0xC3BD, + 0x5A93, 0x8B68, 0x5A94, 0x8B69, 0x5A95, 0x8B6A, 0x5A96, 0x8B6B, 0x5A97, 0x8B6C, 0x5A98, 0x8B6D, 0x5A99, 0x8B6E, 0x5A9A, 0xC3C4, + 0x5A9B, 0xE6C2, 0x5A9C, 0x8B6F, 0x5A9D, 0x8B70, 0x5A9E, 0x8B71, 0x5A9F, 0x8B72, 0x5AA0, 0x8B73, 0x5AA1, 0x8B74, 0x5AA2, 0x8B75, + 0x5AA3, 0x8B76, 0x5AA4, 0x8B77, 0x5AA5, 0x8B78, 0x5AA6, 0x8B79, 0x5AA7, 0x8B7A, 0x5AA8, 0x8B7B, 0x5AA9, 0x8B7C, 0x5AAA, 0xE6C1, + 0x5AAB, 0x8B7D, 0x5AAC, 0x8B7E, 0x5AAD, 0x8B80, 0x5AAE, 0x8B81, 0x5AAF, 0x8B82, 0x5AB0, 0x8B83, 0x5AB1, 0x8B84, 0x5AB2, 0xE6C7, + 0x5AB3, 0xCFB1, 0x5AB4, 0x8B85, 0x5AB5, 0xEBF4, 0x5AB6, 0x8B86, 0x5AB7, 0x8B87, 0x5AB8, 0xE6CA, 0x5AB9, 0x8B88, 0x5ABA, 0x8B89, + 0x5ABB, 0x8B8A, 0x5ABC, 0x8B8B, 0x5ABD, 0x8B8C, 0x5ABE, 0xE6C5, 0x5ABF, 0x8B8D, 0x5AC0, 0x8B8E, 0x5AC1, 0xBCDE, 0x5AC2, 0xC9A9, + 0x5AC3, 0x8B8F, 0x5AC4, 0x8B90, 0x5AC5, 0x8B91, 0x5AC6, 0x8B92, 0x5AC7, 0x8B93, 0x5AC8, 0x8B94, 0x5AC9, 0xBCB5, 0x5ACA, 0x8B95, + 0x5ACB, 0x8B96, 0x5ACC, 0xCFD3, 0x5ACD, 0x8B97, 0x5ACE, 0x8B98, 0x5ACF, 0x8B99, 0x5AD0, 0x8B9A, 0x5AD1, 0x8B9B, 0x5AD2, 0xE6C8, + 0x5AD3, 0x8B9C, 0x5AD4, 0xE6C9, 0x5AD5, 0x8B9D, 0x5AD6, 0xE6CE, 0x5AD7, 0x8B9E, 0x5AD8, 0xE6D0, 0x5AD9, 0x8B9F, 0x5ADA, 0x8BA0, + 0x5ADB, 0x8BA1, 0x5ADC, 0xE6D1, 0x5ADD, 0x8BA2, 0x5ADE, 0x8BA3, 0x5ADF, 0x8BA4, 0x5AE0, 0xE6CB, 0x5AE1, 0xB5D5, 0x5AE2, 0x8BA5, + 0x5AE3, 0xE6CC, 0x5AE4, 0x8BA6, 0x5AE5, 0x8BA7, 0x5AE6, 0xE6CF, 0x5AE7, 0x8BA8, 0x5AE8, 0x8BA9, 0x5AE9, 0xC4DB, 0x5AEA, 0x8BAA, + 0x5AEB, 0xE6C6, 0x5AEC, 0x8BAB, 0x5AED, 0x8BAC, 0x5AEE, 0x8BAD, 0x5AEF, 0x8BAE, 0x5AF0, 0x8BAF, 0x5AF1, 0xE6CD, 0x5AF2, 0x8BB0, + 0x5AF3, 0x8BB1, 0x5AF4, 0x8BB2, 0x5AF5, 0x8BB3, 0x5AF6, 0x8BB4, 0x5AF7, 0x8BB5, 0x5AF8, 0x8BB6, 0x5AF9, 0x8BB7, 0x5AFA, 0x8BB8, + 0x5AFB, 0x8BB9, 0x5AFC, 0x8BBA, 0x5AFD, 0x8BBB, 0x5AFE, 0x8BBC, 0x5AFF, 0x8BBD, 0x5B00, 0x8BBE, 0x5B01, 0x8BBF, 0x5B02, 0x8BC0, + 0x5B03, 0x8BC1, 0x5B04, 0x8BC2, 0x5B05, 0x8BC3, 0x5B06, 0x8BC4, 0x5B07, 0x8BC5, 0x5B08, 0x8BC6, 0x5B09, 0xE6D2, 0x5B0A, 0x8BC7, + 0x5B0B, 0x8BC8, 0x5B0C, 0x8BC9, 0x5B0D, 0x8BCA, 0x5B0E, 0x8BCB, 0x5B0F, 0x8BCC, 0x5B10, 0x8BCD, 0x5B11, 0x8BCE, 0x5B12, 0x8BCF, + 0x5B13, 0x8BD0, 0x5B14, 0x8BD1, 0x5B15, 0x8BD2, 0x5B16, 0xE6D4, 0x5B17, 0xE6D3, 0x5B18, 0x8BD3, 0x5B19, 0x8BD4, 0x5B1A, 0x8BD5, + 0x5B1B, 0x8BD6, 0x5B1C, 0x8BD7, 0x5B1D, 0x8BD8, 0x5B1E, 0x8BD9, 0x5B1F, 0x8BDA, 0x5B20, 0x8BDB, 0x5B21, 0x8BDC, 0x5B22, 0x8BDD, + 0x5B23, 0x8BDE, 0x5B24, 0x8BDF, 0x5B25, 0x8BE0, 0x5B26, 0x8BE1, 0x5B27, 0x8BE2, 0x5B28, 0x8BE3, 0x5B29, 0x8BE4, 0x5B2A, 0x8BE5, + 0x5B2B, 0x8BE6, 0x5B2C, 0x8BE7, 0x5B2D, 0x8BE8, 0x5B2E, 0x8BE9, 0x5B2F, 0x8BEA, 0x5B30, 0x8BEB, 0x5B31, 0x8BEC, 0x5B32, 0xE6D5, + 0x5B33, 0x8BED, 0x5B34, 0xD9F8, 0x5B35, 0x8BEE, 0x5B36, 0x8BEF, 0x5B37, 0xE6D6, 0x5B38, 0x8BF0, 0x5B39, 0x8BF1, 0x5B3A, 0x8BF2, + 0x5B3B, 0x8BF3, 0x5B3C, 0x8BF4, 0x5B3D, 0x8BF5, 0x5B3E, 0x8BF6, 0x5B3F, 0x8BF7, 0x5B40, 0xE6D7, 0x5B41, 0x8BF8, 0x5B42, 0x8BF9, + 0x5B43, 0x8BFA, 0x5B44, 0x8BFB, 0x5B45, 0x8BFC, 0x5B46, 0x8BFD, 0x5B47, 0x8BFE, 0x5B48, 0x8C40, 0x5B49, 0x8C41, 0x5B4A, 0x8C42, + 0x5B4B, 0x8C43, 0x5B4C, 0x8C44, 0x5B4D, 0x8C45, 0x5B4E, 0x8C46, 0x5B4F, 0x8C47, 0x5B50, 0xD7D3, 0x5B51, 0xE6DD, 0x5B52, 0x8C48, + 0x5B53, 0xE6DE, 0x5B54, 0xBFD7, 0x5B55, 0xD4D0, 0x5B56, 0x8C49, 0x5B57, 0xD7D6, 0x5B58, 0xB4E6, 0x5B59, 0xCBEF, 0x5B5A, 0xE6DA, + 0x5B5B, 0xD8C3, 0x5B5C, 0xD7CE, 0x5B5D, 0xD0A2, 0x5B5E, 0x8C4A, 0x5B5F, 0xC3CF, 0x5B60, 0x8C4B, 0x5B61, 0x8C4C, 0x5B62, 0xE6DF, + 0x5B63, 0xBCBE, 0x5B64, 0xB9C2, 0x5B65, 0xE6DB, 0x5B66, 0xD1A7, 0x5B67, 0x8C4D, 0x5B68, 0x8C4E, 0x5B69, 0xBAA2, 0x5B6A, 0xC2CF, + 0x5B6B, 0x8C4F, 0x5B6C, 0xD8AB, 0x5B6D, 0x8C50, 0x5B6E, 0x8C51, 0x5B6F, 0x8C52, 0x5B70, 0xCAEB, 0x5B71, 0xE5EE, 0x5B72, 0x8C53, + 0x5B73, 0xE6DC, 0x5B74, 0x8C54, 0x5B75, 0xB7F5, 0x5B76, 0x8C55, 0x5B77, 0x8C56, 0x5B78, 0x8C57, 0x5B79, 0x8C58, 0x5B7A, 0xC8E6, + 0x5B7B, 0x8C59, 0x5B7C, 0x8C5A, 0x5B7D, 0xC4F5, 0x5B7E, 0x8C5B, 0x5B7F, 0x8C5C, 0x5B80, 0xE5B2, 0x5B81, 0xC4FE, 0x5B82, 0x8C5D, + 0x5B83, 0xCBFC, 0x5B84, 0xE5B3, 0x5B85, 0xD5AC, 0x5B86, 0x8C5E, 0x5B87, 0xD3EE, 0x5B88, 0xCAD8, 0x5B89, 0xB0B2, 0x5B8A, 0x8C5F, + 0x5B8B, 0xCBCE, 0x5B8C, 0xCDEA, 0x5B8D, 0x8C60, 0x5B8E, 0x8C61, 0x5B8F, 0xBAEA, 0x5B90, 0x8C62, 0x5B91, 0x8C63, 0x5B92, 0x8C64, + 0x5B93, 0xE5B5, 0x5B94, 0x8C65, 0x5B95, 0xE5B4, 0x5B96, 0x8C66, 0x5B97, 0xD7DA, 0x5B98, 0xB9D9, 0x5B99, 0xD6E6, 0x5B9A, 0xB6A8, + 0x5B9B, 0xCDF0, 0x5B9C, 0xD2CB, 0x5B9D, 0xB1A6, 0x5B9E, 0xCAB5, 0x5B9F, 0x8C67, 0x5BA0, 0xB3E8, 0x5BA1, 0xC9F3, 0x5BA2, 0xBFCD, + 0x5BA3, 0xD0FB, 0x5BA4, 0xCAD2, 0x5BA5, 0xE5B6, 0x5BA6, 0xBBC2, 0x5BA7, 0x8C68, 0x5BA8, 0x8C69, 0x5BA9, 0x8C6A, 0x5BAA, 0xCFDC, + 0x5BAB, 0xB9AC, 0x5BAC, 0x8C6B, 0x5BAD, 0x8C6C, 0x5BAE, 0x8C6D, 0x5BAF, 0x8C6E, 0x5BB0, 0xD4D7, 0x5BB1, 0x8C6F, 0x5BB2, 0x8C70, + 0x5BB3, 0xBAA6, 0x5BB4, 0xD1E7, 0x5BB5, 0xCFFC, 0x5BB6, 0xBCD2, 0x5BB7, 0x8C71, 0x5BB8, 0xE5B7, 0x5BB9, 0xC8DD, 0x5BBA, 0x8C72, + 0x5BBB, 0x8C73, 0x5BBC, 0x8C74, 0x5BBD, 0xBFED, 0x5BBE, 0xB1F6, 0x5BBF, 0xCBDE, 0x5BC0, 0x8C75, 0x5BC1, 0x8C76, 0x5BC2, 0xBCC5, + 0x5BC3, 0x8C77, 0x5BC4, 0xBCC4, 0x5BC5, 0xD2FA, 0x5BC6, 0xC3DC, 0x5BC7, 0xBFDC, 0x5BC8, 0x8C78, 0x5BC9, 0x8C79, 0x5BCA, 0x8C7A, + 0x5BCB, 0x8C7B, 0x5BCC, 0xB8BB, 0x5BCD, 0x8C7C, 0x5BCE, 0x8C7D, 0x5BCF, 0x8C7E, 0x5BD0, 0xC3C2, 0x5BD1, 0x8C80, 0x5BD2, 0xBAAE, + 0x5BD3, 0xD4A2, 0x5BD4, 0x8C81, 0x5BD5, 0x8C82, 0x5BD6, 0x8C83, 0x5BD7, 0x8C84, 0x5BD8, 0x8C85, 0x5BD9, 0x8C86, 0x5BDA, 0x8C87, + 0x5BDB, 0x8C88, 0x5BDC, 0x8C89, 0x5BDD, 0xC7DE, 0x5BDE, 0xC4AF, 0x5BDF, 0xB2EC, 0x5BE0, 0x8C8A, 0x5BE1, 0xB9D1, 0x5BE2, 0x8C8B, + 0x5BE3, 0x8C8C, 0x5BE4, 0xE5BB, 0x5BE5, 0xC1C8, 0x5BE6, 0x8C8D, 0x5BE7, 0x8C8E, 0x5BE8, 0xD5AF, 0x5BE9, 0x8C8F, 0x5BEA, 0x8C90, + 0x5BEB, 0x8C91, 0x5BEC, 0x8C92, 0x5BED, 0x8C93, 0x5BEE, 0xE5BC, 0x5BEF, 0x8C94, 0x5BF0, 0xE5BE, 0x5BF1, 0x8C95, 0x5BF2, 0x8C96, + 0x5BF3, 0x8C97, 0x5BF4, 0x8C98, 0x5BF5, 0x8C99, 0x5BF6, 0x8C9A, 0x5BF7, 0x8C9B, 0x5BF8, 0xB4E7, 0x5BF9, 0xB6D4, 0x5BFA, 0xCBC2, + 0x5BFB, 0xD1B0, 0x5BFC, 0xB5BC, 0x5BFD, 0x8C9C, 0x5BFE, 0x8C9D, 0x5BFF, 0xCAD9, 0x5C00, 0x8C9E, 0x5C01, 0xB7E2, 0x5C02, 0x8C9F, + 0x5C03, 0x8CA0, 0x5C04, 0xC9E4, 0x5C05, 0x8CA1, 0x5C06, 0xBDAB, 0x5C07, 0x8CA2, 0x5C08, 0x8CA3, 0x5C09, 0xCEBE, 0x5C0A, 0xD7F0, + 0x5C0B, 0x8CA4, 0x5C0C, 0x8CA5, 0x5C0D, 0x8CA6, 0x5C0E, 0x8CA7, 0x5C0F, 0xD0A1, 0x5C10, 0x8CA8, 0x5C11, 0xC9D9, 0x5C12, 0x8CA9, + 0x5C13, 0x8CAA, 0x5C14, 0xB6FB, 0x5C15, 0xE6D8, 0x5C16, 0xBCE2, 0x5C17, 0x8CAB, 0x5C18, 0xB3BE, 0x5C19, 0x8CAC, 0x5C1A, 0xC9D0, + 0x5C1B, 0x8CAD, 0x5C1C, 0xE6D9, 0x5C1D, 0xB3A2, 0x5C1E, 0x8CAE, 0x5C1F, 0x8CAF, 0x5C20, 0x8CB0, 0x5C21, 0x8CB1, 0x5C22, 0xDECC, + 0x5C23, 0x8CB2, 0x5C24, 0xD3C8, 0x5C25, 0xDECD, 0x5C26, 0x8CB3, 0x5C27, 0xD2A2, 0x5C28, 0x8CB4, 0x5C29, 0x8CB5, 0x5C2A, 0x8CB6, + 0x5C2B, 0x8CB7, 0x5C2C, 0xDECE, 0x5C2D, 0x8CB8, 0x5C2E, 0x8CB9, 0x5C2F, 0x8CBA, 0x5C30, 0x8CBB, 0x5C31, 0xBECD, 0x5C32, 0x8CBC, + 0x5C33, 0x8CBD, 0x5C34, 0xDECF, 0x5C35, 0x8CBE, 0x5C36, 0x8CBF, 0x5C37, 0x8CC0, 0x5C38, 0xCAAC, 0x5C39, 0xD2FC, 0x5C3A, 0xB3DF, + 0x5C3B, 0xE5EA, 0x5C3C, 0xC4E1, 0x5C3D, 0xBEA1, 0x5C3E, 0xCEB2, 0x5C3F, 0xC4F2, 0x5C40, 0xBED6, 0x5C41, 0xC6A8, 0x5C42, 0xB2E3, + 0x5C43, 0x8CC1, 0x5C44, 0x8CC2, 0x5C45, 0xBED3, 0x5C46, 0x8CC3, 0x5C47, 0x8CC4, 0x5C48, 0xC7FC, 0x5C49, 0xCCEB, 0x5C4A, 0xBDEC, + 0x5C4B, 0xCEDD, 0x5C4C, 0x8CC5, 0x5C4D, 0x8CC6, 0x5C4E, 0xCABA, 0x5C4F, 0xC6C1, 0x5C50, 0xE5EC, 0x5C51, 0xD0BC, 0x5C52, 0x8CC7, + 0x5C53, 0x8CC8, 0x5C54, 0x8CC9, 0x5C55, 0xD5B9, 0x5C56, 0x8CCA, 0x5C57, 0x8CCB, 0x5C58, 0x8CCC, 0x5C59, 0xE5ED, 0x5C5A, 0x8CCD, + 0x5C5B, 0x8CCE, 0x5C5C, 0x8CCF, 0x5C5D, 0x8CD0, 0x5C5E, 0xCAF4, 0x5C5F, 0x8CD1, 0x5C60, 0xCDC0, 0x5C61, 0xC2C5, 0x5C62, 0x8CD2, + 0x5C63, 0xE5EF, 0x5C64, 0x8CD3, 0x5C65, 0xC2C4, 0x5C66, 0xE5F0, 0x5C67, 0x8CD4, 0x5C68, 0x8CD5, 0x5C69, 0x8CD6, 0x5C6A, 0x8CD7, + 0x5C6B, 0x8CD8, 0x5C6C, 0x8CD9, 0x5C6D, 0x8CDA, 0x5C6E, 0xE5F8, 0x5C6F, 0xCDCD, 0x5C70, 0x8CDB, 0x5C71, 0xC9BD, 0x5C72, 0x8CDC, + 0x5C73, 0x8CDD, 0x5C74, 0x8CDE, 0x5C75, 0x8CDF, 0x5C76, 0x8CE0, 0x5C77, 0x8CE1, 0x5C78, 0x8CE2, 0x5C79, 0xD2D9, 0x5C7A, 0xE1A8, + 0x5C7B, 0x8CE3, 0x5C7C, 0x8CE4, 0x5C7D, 0x8CE5, 0x5C7E, 0x8CE6, 0x5C7F, 0xD3EC, 0x5C80, 0x8CE7, 0x5C81, 0xCBEA, 0x5C82, 0xC6F1, + 0x5C83, 0x8CE8, 0x5C84, 0x8CE9, 0x5C85, 0x8CEA, 0x5C86, 0x8CEB, 0x5C87, 0x8CEC, 0x5C88, 0xE1AC, 0x5C89, 0x8CED, 0x5C8A, 0x8CEE, + 0x5C8B, 0x8CEF, 0x5C8C, 0xE1A7, 0x5C8D, 0xE1A9, 0x5C8E, 0x8CF0, 0x5C8F, 0x8CF1, 0x5C90, 0xE1AA, 0x5C91, 0xE1AF, 0x5C92, 0x8CF2, + 0x5C93, 0x8CF3, 0x5C94, 0xB2ED, 0x5C95, 0x8CF4, 0x5C96, 0xE1AB, 0x5C97, 0xB8DA, 0x5C98, 0xE1AD, 0x5C99, 0xE1AE, 0x5C9A, 0xE1B0, + 0x5C9B, 0xB5BA, 0x5C9C, 0xE1B1, 0x5C9D, 0x8CF5, 0x5C9E, 0x8CF6, 0x5C9F, 0x8CF7, 0x5CA0, 0x8CF8, 0x5CA1, 0x8CF9, 0x5CA2, 0xE1B3, + 0x5CA3, 0xE1B8, 0x5CA4, 0x8CFA, 0x5CA5, 0x8CFB, 0x5CA6, 0x8CFC, 0x5CA7, 0x8CFD, 0x5CA8, 0x8CFE, 0x5CA9, 0xD1D2, 0x5CAA, 0x8D40, + 0x5CAB, 0xE1B6, 0x5CAC, 0xE1B5, 0x5CAD, 0xC1EB, 0x5CAE, 0x8D41, 0x5CAF, 0x8D42, 0x5CB0, 0x8D43, 0x5CB1, 0xE1B7, 0x5CB2, 0x8D44, + 0x5CB3, 0xD4C0, 0x5CB4, 0x8D45, 0x5CB5, 0xE1B2, 0x5CB6, 0x8D46, 0x5CB7, 0xE1BA, 0x5CB8, 0xB0B6, 0x5CB9, 0x8D47, 0x5CBA, 0x8D48, + 0x5CBB, 0x8D49, 0x5CBC, 0x8D4A, 0x5CBD, 0xE1B4, 0x5CBE, 0x8D4B, 0x5CBF, 0xBFF9, 0x5CC0, 0x8D4C, 0x5CC1, 0xE1B9, 0x5CC2, 0x8D4D, + 0x5CC3, 0x8D4E, 0x5CC4, 0xE1BB, 0x5CC5, 0x8D4F, 0x5CC6, 0x8D50, 0x5CC7, 0x8D51, 0x5CC8, 0x8D52, 0x5CC9, 0x8D53, 0x5CCA, 0x8D54, + 0x5CCB, 0xE1BE, 0x5CCC, 0x8D55, 0x5CCD, 0x8D56, 0x5CCE, 0x8D57, 0x5CCF, 0x8D58, 0x5CD0, 0x8D59, 0x5CD1, 0x8D5A, 0x5CD2, 0xE1BC, + 0x5CD3, 0x8D5B, 0x5CD4, 0x8D5C, 0x5CD5, 0x8D5D, 0x5CD6, 0x8D5E, 0x5CD7, 0x8D5F, 0x5CD8, 0x8D60, 0x5CD9, 0xD6C5, 0x5CDA, 0x8D61, + 0x5CDB, 0x8D62, 0x5CDC, 0x8D63, 0x5CDD, 0x8D64, 0x5CDE, 0x8D65, 0x5CDF, 0x8D66, 0x5CE0, 0x8D67, 0x5CE1, 0xCFBF, 0x5CE2, 0x8D68, + 0x5CE3, 0x8D69, 0x5CE4, 0xE1BD, 0x5CE5, 0xE1BF, 0x5CE6, 0xC2CD, 0x5CE7, 0x8D6A, 0x5CE8, 0xB6EB, 0x5CE9, 0x8D6B, 0x5CEA, 0xD3F8, + 0x5CEB, 0x8D6C, 0x5CEC, 0x8D6D, 0x5CED, 0xC7CD, 0x5CEE, 0x8D6E, 0x5CEF, 0x8D6F, 0x5CF0, 0xB7E5, 0x5CF1, 0x8D70, 0x5CF2, 0x8D71, + 0x5CF3, 0x8D72, 0x5CF4, 0x8D73, 0x5CF5, 0x8D74, 0x5CF6, 0x8D75, 0x5CF7, 0x8D76, 0x5CF8, 0x8D77, 0x5CF9, 0x8D78, 0x5CFA, 0x8D79, + 0x5CFB, 0xBEFE, 0x5CFC, 0x8D7A, 0x5CFD, 0x8D7B, 0x5CFE, 0x8D7C, 0x5CFF, 0x8D7D, 0x5D00, 0x8D7E, 0x5D01, 0x8D80, 0x5D02, 0xE1C0, + 0x5D03, 0xE1C1, 0x5D04, 0x8D81, 0x5D05, 0x8D82, 0x5D06, 0xE1C7, 0x5D07, 0xB3E7, 0x5D08, 0x8D83, 0x5D09, 0x8D84, 0x5D0A, 0x8D85, + 0x5D0B, 0x8D86, 0x5D0C, 0x8D87, 0x5D0D, 0x8D88, 0x5D0E, 0xC6E9, 0x5D0F, 0x8D89, 0x5D10, 0x8D8A, 0x5D11, 0x8D8B, 0x5D12, 0x8D8C, + 0x5D13, 0x8D8D, 0x5D14, 0xB4DE, 0x5D15, 0x8D8E, 0x5D16, 0xD1C2, 0x5D17, 0x8D8F, 0x5D18, 0x8D90, 0x5D19, 0x8D91, 0x5D1A, 0x8D92, + 0x5D1B, 0xE1C8, 0x5D1C, 0x8D93, 0x5D1D, 0x8D94, 0x5D1E, 0xE1C6, 0x5D1F, 0x8D95, 0x5D20, 0x8D96, 0x5D21, 0x8D97, 0x5D22, 0x8D98, + 0x5D23, 0x8D99, 0x5D24, 0xE1C5, 0x5D25, 0x8D9A, 0x5D26, 0xE1C3, 0x5D27, 0xE1C2, 0x5D28, 0x8D9B, 0x5D29, 0xB1C0, 0x5D2A, 0x8D9C, + 0x5D2B, 0x8D9D, 0x5D2C, 0x8D9E, 0x5D2D, 0xD5B8, 0x5D2E, 0xE1C4, 0x5D2F, 0x8D9F, 0x5D30, 0x8DA0, 0x5D31, 0x8DA1, 0x5D32, 0x8DA2, + 0x5D33, 0x8DA3, 0x5D34, 0xE1CB, 0x5D35, 0x8DA4, 0x5D36, 0x8DA5, 0x5D37, 0x8DA6, 0x5D38, 0x8DA7, 0x5D39, 0x8DA8, 0x5D3A, 0x8DA9, + 0x5D3B, 0x8DAA, 0x5D3C, 0x8DAB, 0x5D3D, 0xE1CC, 0x5D3E, 0xE1CA, 0x5D3F, 0x8DAC, 0x5D40, 0x8DAD, 0x5D41, 0x8DAE, 0x5D42, 0x8DAF, + 0x5D43, 0x8DB0, 0x5D44, 0x8DB1, 0x5D45, 0x8DB2, 0x5D46, 0x8DB3, 0x5D47, 0xEFFA, 0x5D48, 0x8DB4, 0x5D49, 0x8DB5, 0x5D4A, 0xE1D3, + 0x5D4B, 0xE1D2, 0x5D4C, 0xC7B6, 0x5D4D, 0x8DB6, 0x5D4E, 0x8DB7, 0x5D4F, 0x8DB8, 0x5D50, 0x8DB9, 0x5D51, 0x8DBA, 0x5D52, 0x8DBB, + 0x5D53, 0x8DBC, 0x5D54, 0x8DBD, 0x5D55, 0x8DBE, 0x5D56, 0x8DBF, 0x5D57, 0x8DC0, 0x5D58, 0xE1C9, 0x5D59, 0x8DC1, 0x5D5A, 0x8DC2, + 0x5D5B, 0xE1CE, 0x5D5C, 0x8DC3, 0x5D5D, 0xE1D0, 0x5D5E, 0x8DC4, 0x5D5F, 0x8DC5, 0x5D60, 0x8DC6, 0x5D61, 0x8DC7, 0x5D62, 0x8DC8, + 0x5D63, 0x8DC9, 0x5D64, 0x8DCA, 0x5D65, 0x8DCB, 0x5D66, 0x8DCC, 0x5D67, 0x8DCD, 0x5D68, 0x8DCE, 0x5D69, 0xE1D4, 0x5D6A, 0x8DCF, + 0x5D6B, 0xE1D1, 0x5D6C, 0xE1CD, 0x5D6D, 0x8DD0, 0x5D6E, 0x8DD1, 0x5D6F, 0xE1CF, 0x5D70, 0x8DD2, 0x5D71, 0x8DD3, 0x5D72, 0x8DD4, + 0x5D73, 0x8DD5, 0x5D74, 0xE1D5, 0x5D75, 0x8DD6, 0x5D76, 0x8DD7, 0x5D77, 0x8DD8, 0x5D78, 0x8DD9, 0x5D79, 0x8DDA, 0x5D7A, 0x8DDB, + 0x5D7B, 0x8DDC, 0x5D7C, 0x8DDD, 0x5D7D, 0x8DDE, 0x5D7E, 0x8DDF, 0x5D7F, 0x8DE0, 0x5D80, 0x8DE1, 0x5D81, 0x8DE2, 0x5D82, 0xE1D6, + 0x5D83, 0x8DE3, 0x5D84, 0x8DE4, 0x5D85, 0x8DE5, 0x5D86, 0x8DE6, 0x5D87, 0x8DE7, 0x5D88, 0x8DE8, 0x5D89, 0x8DE9, 0x5D8A, 0x8DEA, + 0x5D8B, 0x8DEB, 0x5D8C, 0x8DEC, 0x5D8D, 0x8DED, 0x5D8E, 0x8DEE, 0x5D8F, 0x8DEF, 0x5D90, 0x8DF0, 0x5D91, 0x8DF1, 0x5D92, 0x8DF2, + 0x5D93, 0x8DF3, 0x5D94, 0x8DF4, 0x5D95, 0x8DF5, 0x5D96, 0x8DF6, 0x5D97, 0x8DF7, 0x5D98, 0x8DF8, 0x5D99, 0xE1D7, 0x5D9A, 0x8DF9, + 0x5D9B, 0x8DFA, 0x5D9C, 0x8DFB, 0x5D9D, 0xE1D8, 0x5D9E, 0x8DFC, 0x5D9F, 0x8DFD, 0x5DA0, 0x8DFE, 0x5DA1, 0x8E40, 0x5DA2, 0x8E41, + 0x5DA3, 0x8E42, 0x5DA4, 0x8E43, 0x5DA5, 0x8E44, 0x5DA6, 0x8E45, 0x5DA7, 0x8E46, 0x5DA8, 0x8E47, 0x5DA9, 0x8E48, 0x5DAA, 0x8E49, + 0x5DAB, 0x8E4A, 0x5DAC, 0x8E4B, 0x5DAD, 0x8E4C, 0x5DAE, 0x8E4D, 0x5DAF, 0x8E4E, 0x5DB0, 0x8E4F, 0x5DB1, 0x8E50, 0x5DB2, 0x8E51, + 0x5DB3, 0x8E52, 0x5DB4, 0x8E53, 0x5DB5, 0x8E54, 0x5DB6, 0x8E55, 0x5DB7, 0xE1DA, 0x5DB8, 0x8E56, 0x5DB9, 0x8E57, 0x5DBA, 0x8E58, + 0x5DBB, 0x8E59, 0x5DBC, 0x8E5A, 0x5DBD, 0x8E5B, 0x5DBE, 0x8E5C, 0x5DBF, 0x8E5D, 0x5DC0, 0x8E5E, 0x5DC1, 0x8E5F, 0x5DC2, 0x8E60, + 0x5DC3, 0x8E61, 0x5DC4, 0x8E62, 0x5DC5, 0xE1DB, 0x5DC6, 0x8E63, 0x5DC7, 0x8E64, 0x5DC8, 0x8E65, 0x5DC9, 0x8E66, 0x5DCA, 0x8E67, + 0x5DCB, 0x8E68, 0x5DCC, 0x8E69, 0x5DCD, 0xCEA1, 0x5DCE, 0x8E6A, 0x5DCF, 0x8E6B, 0x5DD0, 0x8E6C, 0x5DD1, 0x8E6D, 0x5DD2, 0x8E6E, + 0x5DD3, 0x8E6F, 0x5DD4, 0x8E70, 0x5DD5, 0x8E71, 0x5DD6, 0x8E72, 0x5DD7, 0x8E73, 0x5DD8, 0x8E74, 0x5DD9, 0x8E75, 0x5DDA, 0x8E76, + 0x5DDB, 0xE7DD, 0x5DDC, 0x8E77, 0x5DDD, 0xB4A8, 0x5DDE, 0xD6DD, 0x5DDF, 0x8E78, 0x5DE0, 0x8E79, 0x5DE1, 0xD1B2, 0x5DE2, 0xB3B2, + 0x5DE3, 0x8E7A, 0x5DE4, 0x8E7B, 0x5DE5, 0xB9A4, 0x5DE6, 0xD7F3, 0x5DE7, 0xC7C9, 0x5DE8, 0xBEDE, 0x5DE9, 0xB9AE, 0x5DEA, 0x8E7C, + 0x5DEB, 0xCED7, 0x5DEC, 0x8E7D, 0x5DED, 0x8E7E, 0x5DEE, 0xB2EE, 0x5DEF, 0xDBCF, 0x5DF0, 0x8E80, 0x5DF1, 0xBCBA, 0x5DF2, 0xD2D1, + 0x5DF3, 0xCBC8, 0x5DF4, 0xB0CD, 0x5DF5, 0x8E81, 0x5DF6, 0x8E82, 0x5DF7, 0xCFEF, 0x5DF8, 0x8E83, 0x5DF9, 0x8E84, 0x5DFA, 0x8E85, + 0x5DFB, 0x8E86, 0x5DFC, 0x8E87, 0x5DFD, 0xD9E3, 0x5DFE, 0xBDED, 0x5DFF, 0x8E88, 0x5E00, 0x8E89, 0x5E01, 0xB1D2, 0x5E02, 0xCAD0, + 0x5E03, 0xB2BC, 0x5E04, 0x8E8A, 0x5E05, 0xCBA7, 0x5E06, 0xB7AB, 0x5E07, 0x8E8B, 0x5E08, 0xCAA6, 0x5E09, 0x8E8C, 0x5E0A, 0x8E8D, + 0x5E0B, 0x8E8E, 0x5E0C, 0xCFA3, 0x5E0D, 0x8E8F, 0x5E0E, 0x8E90, 0x5E0F, 0xE0F8, 0x5E10, 0xD5CA, 0x5E11, 0xE0FB, 0x5E12, 0x8E91, + 0x5E13, 0x8E92, 0x5E14, 0xE0FA, 0x5E15, 0xC5C1, 0x5E16, 0xCCFB, 0x5E17, 0x8E93, 0x5E18, 0xC1B1, 0x5E19, 0xE0F9, 0x5E1A, 0xD6E3, + 0x5E1B, 0xB2AF, 0x5E1C, 0xD6C4, 0x5E1D, 0xB5DB, 0x5E1E, 0x8E94, 0x5E1F, 0x8E95, 0x5E20, 0x8E96, 0x5E21, 0x8E97, 0x5E22, 0x8E98, + 0x5E23, 0x8E99, 0x5E24, 0x8E9A, 0x5E25, 0x8E9B, 0x5E26, 0xB4F8, 0x5E27, 0xD6A1, 0x5E28, 0x8E9C, 0x5E29, 0x8E9D, 0x5E2A, 0x8E9E, + 0x5E2B, 0x8E9F, 0x5E2C, 0x8EA0, 0x5E2D, 0xCFAF, 0x5E2E, 0xB0EF, 0x5E2F, 0x8EA1, 0x5E30, 0x8EA2, 0x5E31, 0xE0FC, 0x5E32, 0x8EA3, + 0x5E33, 0x8EA4, 0x5E34, 0x8EA5, 0x5E35, 0x8EA6, 0x5E36, 0x8EA7, 0x5E37, 0xE1A1, 0x5E38, 0xB3A3, 0x5E39, 0x8EA8, 0x5E3A, 0x8EA9, + 0x5E3B, 0xE0FD, 0x5E3C, 0xE0FE, 0x5E3D, 0xC3B1, 0x5E3E, 0x8EAA, 0x5E3F, 0x8EAB, 0x5E40, 0x8EAC, 0x5E41, 0x8EAD, 0x5E42, 0xC3DD, + 0x5E43, 0x8EAE, 0x5E44, 0xE1A2, 0x5E45, 0xB7F9, 0x5E46, 0x8EAF, 0x5E47, 0x8EB0, 0x5E48, 0x8EB1, 0x5E49, 0x8EB2, 0x5E4A, 0x8EB3, + 0x5E4B, 0x8EB4, 0x5E4C, 0xBBCF, 0x5E4D, 0x8EB5, 0x5E4E, 0x8EB6, 0x5E4F, 0x8EB7, 0x5E50, 0x8EB8, 0x5E51, 0x8EB9, 0x5E52, 0x8EBA, + 0x5E53, 0x8EBB, 0x5E54, 0xE1A3, 0x5E55, 0xC4BB, 0x5E56, 0x8EBC, 0x5E57, 0x8EBD, 0x5E58, 0x8EBE, 0x5E59, 0x8EBF, 0x5E5A, 0x8EC0, + 0x5E5B, 0xE1A4, 0x5E5C, 0x8EC1, 0x5E5D, 0x8EC2, 0x5E5E, 0xE1A5, 0x5E5F, 0x8EC3, 0x5E60, 0x8EC4, 0x5E61, 0xE1A6, 0x5E62, 0xB4B1, + 0x5E63, 0x8EC5, 0x5E64, 0x8EC6, 0x5E65, 0x8EC7, 0x5E66, 0x8EC8, 0x5E67, 0x8EC9, 0x5E68, 0x8ECA, 0x5E69, 0x8ECB, 0x5E6A, 0x8ECC, + 0x5E6B, 0x8ECD, 0x5E6C, 0x8ECE, 0x5E6D, 0x8ECF, 0x5E6E, 0x8ED0, 0x5E6F, 0x8ED1, 0x5E70, 0x8ED2, 0x5E71, 0x8ED3, 0x5E72, 0xB8C9, + 0x5E73, 0xC6BD, 0x5E74, 0xC4EA, 0x5E75, 0x8ED4, 0x5E76, 0xB2A2, 0x5E77, 0x8ED5, 0x5E78, 0xD0D2, 0x5E79, 0x8ED6, 0x5E7A, 0xE7DB, + 0x5E7B, 0xBBC3, 0x5E7C, 0xD3D7, 0x5E7D, 0xD3C4, 0x5E7E, 0x8ED7, 0x5E7F, 0xB9E3, 0x5E80, 0xE2CF, 0x5E81, 0x8ED8, 0x5E82, 0x8ED9, + 0x5E83, 0x8EDA, 0x5E84, 0xD7AF, 0x5E85, 0x8EDB, 0x5E86, 0xC7EC, 0x5E87, 0xB1D3, 0x5E88, 0x8EDC, 0x5E89, 0x8EDD, 0x5E8A, 0xB4B2, + 0x5E8B, 0xE2D1, 0x5E8C, 0x8EDE, 0x5E8D, 0x8EDF, 0x5E8E, 0x8EE0, 0x5E8F, 0xD0F2, 0x5E90, 0xC2AE, 0x5E91, 0xE2D0, 0x5E92, 0x8EE1, + 0x5E93, 0xBFE2, 0x5E94, 0xD3A6, 0x5E95, 0xB5D7, 0x5E96, 0xE2D2, 0x5E97, 0xB5EA, 0x5E98, 0x8EE2, 0x5E99, 0xC3ED, 0x5E9A, 0xB8FD, + 0x5E9B, 0x8EE3, 0x5E9C, 0xB8AE, 0x5E9D, 0x8EE4, 0x5E9E, 0xC5D3, 0x5E9F, 0xB7CF, 0x5EA0, 0xE2D4, 0x5EA1, 0x8EE5, 0x5EA2, 0x8EE6, + 0x5EA3, 0x8EE7, 0x5EA4, 0x8EE8, 0x5EA5, 0xE2D3, 0x5EA6, 0xB6C8, 0x5EA7, 0xD7F9, 0x5EA8, 0x8EE9, 0x5EA9, 0x8EEA, 0x5EAA, 0x8EEB, + 0x5EAB, 0x8EEC, 0x5EAC, 0x8EED, 0x5EAD, 0xCDA5, 0x5EAE, 0x8EEE, 0x5EAF, 0x8EEF, 0x5EB0, 0x8EF0, 0x5EB1, 0x8EF1, 0x5EB2, 0x8EF2, + 0x5EB3, 0xE2D8, 0x5EB4, 0x8EF3, 0x5EB5, 0xE2D6, 0x5EB6, 0xCAFC, 0x5EB7, 0xBFB5, 0x5EB8, 0xD3B9, 0x5EB9, 0xE2D5, 0x5EBA, 0x8EF4, + 0x5EBB, 0x8EF5, 0x5EBC, 0x8EF6, 0x5EBD, 0x8EF7, 0x5EBE, 0xE2D7, 0x5EBF, 0x8EF8, 0x5EC0, 0x8EF9, 0x5EC1, 0x8EFA, 0x5EC2, 0x8EFB, + 0x5EC3, 0x8EFC, 0x5EC4, 0x8EFD, 0x5EC5, 0x8EFE, 0x5EC6, 0x8F40, 0x5EC7, 0x8F41, 0x5EC8, 0x8F42, 0x5EC9, 0xC1AE, 0x5ECA, 0xC0C8, + 0x5ECB, 0x8F43, 0x5ECC, 0x8F44, 0x5ECD, 0x8F45, 0x5ECE, 0x8F46, 0x5ECF, 0x8F47, 0x5ED0, 0x8F48, 0x5ED1, 0xE2DB, 0x5ED2, 0xE2DA, + 0x5ED3, 0xC0AA, 0x5ED4, 0x8F49, 0x5ED5, 0x8F4A, 0x5ED6, 0xC1CE, 0x5ED7, 0x8F4B, 0x5ED8, 0x8F4C, 0x5ED9, 0x8F4D, 0x5EDA, 0x8F4E, + 0x5EDB, 0xE2DC, 0x5EDC, 0x8F4F, 0x5EDD, 0x8F50, 0x5EDE, 0x8F51, 0x5EDF, 0x8F52, 0x5EE0, 0x8F53, 0x5EE1, 0x8F54, 0x5EE2, 0x8F55, + 0x5EE3, 0x8F56, 0x5EE4, 0x8F57, 0x5EE5, 0x8F58, 0x5EE6, 0x8F59, 0x5EE7, 0x8F5A, 0x5EE8, 0xE2DD, 0x5EE9, 0x8F5B, 0x5EEA, 0xE2DE, + 0x5EEB, 0x8F5C, 0x5EEC, 0x8F5D, 0x5EED, 0x8F5E, 0x5EEE, 0x8F5F, 0x5EEF, 0x8F60, 0x5EF0, 0x8F61, 0x5EF1, 0x8F62, 0x5EF2, 0x8F63, + 0x5EF3, 0x8F64, 0x5EF4, 0xDBC8, 0x5EF5, 0x8F65, 0x5EF6, 0xD1D3, 0x5EF7, 0xCDA2, 0x5EF8, 0x8F66, 0x5EF9, 0x8F67, 0x5EFA, 0xBDA8, + 0x5EFB, 0x8F68, 0x5EFC, 0x8F69, 0x5EFD, 0x8F6A, 0x5EFE, 0xDEC3, 0x5EFF, 0xD8A5, 0x5F00, 0xBFAA, 0x5F01, 0xDBCD, 0x5F02, 0xD2EC, + 0x5F03, 0xC6FA, 0x5F04, 0xC5AA, 0x5F05, 0x8F6B, 0x5F06, 0x8F6C, 0x5F07, 0x8F6D, 0x5F08, 0xDEC4, 0x5F09, 0x8F6E, 0x5F0A, 0xB1D7, + 0x5F0B, 0xDFAE, 0x5F0C, 0x8F6F, 0x5F0D, 0x8F70, 0x5F0E, 0x8F71, 0x5F0F, 0xCABD, 0x5F10, 0x8F72, 0x5F11, 0xDFB1, 0x5F12, 0x8F73, + 0x5F13, 0xB9AD, 0x5F14, 0x8F74, 0x5F15, 0xD2FD, 0x5F16, 0x8F75, 0x5F17, 0xB8A5, 0x5F18, 0xBAEB, 0x5F19, 0x8F76, 0x5F1A, 0x8F77, + 0x5F1B, 0xB3DA, 0x5F1C, 0x8F78, 0x5F1D, 0x8F79, 0x5F1E, 0x8F7A, 0x5F1F, 0xB5DC, 0x5F20, 0xD5C5, 0x5F21, 0x8F7B, 0x5F22, 0x8F7C, + 0x5F23, 0x8F7D, 0x5F24, 0x8F7E, 0x5F25, 0xC3D6, 0x5F26, 0xCFD2, 0x5F27, 0xBBA1, 0x5F28, 0x8F80, 0x5F29, 0xE5F3, 0x5F2A, 0xE5F2, + 0x5F2B, 0x8F81, 0x5F2C, 0x8F82, 0x5F2D, 0xE5F4, 0x5F2E, 0x8F83, 0x5F2F, 0xCDE4, 0x5F30, 0x8F84, 0x5F31, 0xC8F5, 0x5F32, 0x8F85, + 0x5F33, 0x8F86, 0x5F34, 0x8F87, 0x5F35, 0x8F88, 0x5F36, 0x8F89, 0x5F37, 0x8F8A, 0x5F38, 0x8F8B, 0x5F39, 0xB5AF, 0x5F3A, 0xC7BF, + 0x5F3B, 0x8F8C, 0x5F3C, 0xE5F6, 0x5F3D, 0x8F8D, 0x5F3E, 0x8F8E, 0x5F3F, 0x8F8F, 0x5F40, 0xECB0, 0x5F41, 0x8F90, 0x5F42, 0x8F91, + 0x5F43, 0x8F92, 0x5F44, 0x8F93, 0x5F45, 0x8F94, 0x5F46, 0x8F95, 0x5F47, 0x8F96, 0x5F48, 0x8F97, 0x5F49, 0x8F98, 0x5F4A, 0x8F99, + 0x5F4B, 0x8F9A, 0x5F4C, 0x8F9B, 0x5F4D, 0x8F9C, 0x5F4E, 0x8F9D, 0x5F4F, 0x8F9E, 0x5F50, 0xE5E6, 0x5F51, 0x8F9F, 0x5F52, 0xB9E9, + 0x5F53, 0xB5B1, 0x5F54, 0x8FA0, 0x5F55, 0xC2BC, 0x5F56, 0xE5E8, 0x5F57, 0xE5E7, 0x5F58, 0xE5E9, 0x5F59, 0x8FA1, 0x5F5A, 0x8FA2, + 0x5F5B, 0x8FA3, 0x5F5C, 0x8FA4, 0x5F5D, 0xD2CD, 0x5F5E, 0x8FA5, 0x5F5F, 0x8FA6, 0x5F60, 0x8FA7, 0x5F61, 0xE1EA, 0x5F62, 0xD0CE, + 0x5F63, 0x8FA8, 0x5F64, 0xCDAE, 0x5F65, 0x8FA9, 0x5F66, 0xD1E5, 0x5F67, 0x8FAA, 0x5F68, 0x8FAB, 0x5F69, 0xB2CA, 0x5F6A, 0xB1EB, + 0x5F6B, 0x8FAC, 0x5F6C, 0xB1F2, 0x5F6D, 0xC5ED, 0x5F6E, 0x8FAD, 0x5F6F, 0x8FAE, 0x5F70, 0xD5C3, 0x5F71, 0xD3B0, 0x5F72, 0x8FAF, + 0x5F73, 0xE1DC, 0x5F74, 0x8FB0, 0x5F75, 0x8FB1, 0x5F76, 0x8FB2, 0x5F77, 0xE1DD, 0x5F78, 0x8FB3, 0x5F79, 0xD2DB, 0x5F7A, 0x8FB4, + 0x5F7B, 0xB3B9, 0x5F7C, 0xB1CB, 0x5F7D, 0x8FB5, 0x5F7E, 0x8FB6, 0x5F7F, 0x8FB7, 0x5F80, 0xCDF9, 0x5F81, 0xD5F7, 0x5F82, 0xE1DE, + 0x5F83, 0x8FB8, 0x5F84, 0xBEB6, 0x5F85, 0xB4FD, 0x5F86, 0x8FB9, 0x5F87, 0xE1DF, 0x5F88, 0xBADC, 0x5F89, 0xE1E0, 0x5F8A, 0xBBB2, + 0x5F8B, 0xC2C9, 0x5F8C, 0xE1E1, 0x5F8D, 0x8FBA, 0x5F8E, 0x8FBB, 0x5F8F, 0x8FBC, 0x5F90, 0xD0EC, 0x5F91, 0x8FBD, 0x5F92, 0xCDBD, + 0x5F93, 0x8FBE, 0x5F94, 0x8FBF, 0x5F95, 0xE1E2, 0x5F96, 0x8FC0, 0x5F97, 0xB5C3, 0x5F98, 0xC5C7, 0x5F99, 0xE1E3, 0x5F9A, 0x8FC1, + 0x5F9B, 0x8FC2, 0x5F9C, 0xE1E4, 0x5F9D, 0x8FC3, 0x5F9E, 0x8FC4, 0x5F9F, 0x8FC5, 0x5FA0, 0x8FC6, 0x5FA1, 0xD3F9, 0x5FA2, 0x8FC7, + 0x5FA3, 0x8FC8, 0x5FA4, 0x8FC9, 0x5FA5, 0x8FCA, 0x5FA6, 0x8FCB, 0x5FA7, 0x8FCC, 0x5FA8, 0xE1E5, 0x5FA9, 0x8FCD, 0x5FAA, 0xD1AD, + 0x5FAB, 0x8FCE, 0x5FAC, 0x8FCF, 0x5FAD, 0xE1E6, 0x5FAE, 0xCEA2, 0x5FAF, 0x8FD0, 0x5FB0, 0x8FD1, 0x5FB1, 0x8FD2, 0x5FB2, 0x8FD3, + 0x5FB3, 0x8FD4, 0x5FB4, 0x8FD5, 0x5FB5, 0xE1E7, 0x5FB6, 0x8FD6, 0x5FB7, 0xB5C2, 0x5FB8, 0x8FD7, 0x5FB9, 0x8FD8, 0x5FBA, 0x8FD9, + 0x5FBB, 0x8FDA, 0x5FBC, 0xE1E8, 0x5FBD, 0xBBD5, 0x5FBE, 0x8FDB, 0x5FBF, 0x8FDC, 0x5FC0, 0x8FDD, 0x5FC1, 0x8FDE, 0x5FC2, 0x8FDF, + 0x5FC3, 0xD0C4, 0x5FC4, 0xE2E0, 0x5FC5, 0xB1D8, 0x5FC6, 0xD2E4, 0x5FC7, 0x8FE0, 0x5FC8, 0x8FE1, 0x5FC9, 0xE2E1, 0x5FCA, 0x8FE2, + 0x5FCB, 0x8FE3, 0x5FCC, 0xBCC9, 0x5FCD, 0xC8CC, 0x5FCE, 0x8FE4, 0x5FCF, 0xE2E3, 0x5FD0, 0xECFE, 0x5FD1, 0xECFD, 0x5FD2, 0xDFAF, + 0x5FD3, 0x8FE5, 0x5FD4, 0x8FE6, 0x5FD5, 0x8FE7, 0x5FD6, 0xE2E2, 0x5FD7, 0xD6BE, 0x5FD8, 0xCDFC, 0x5FD9, 0xC3A6, 0x5FDA, 0x8FE8, + 0x5FDB, 0x8FE9, 0x5FDC, 0x8FEA, 0x5FDD, 0xE3C3, 0x5FDE, 0x8FEB, 0x5FDF, 0x8FEC, 0x5FE0, 0xD6D2, 0x5FE1, 0xE2E7, 0x5FE2, 0x8FED, + 0x5FE3, 0x8FEE, 0x5FE4, 0xE2E8, 0x5FE5, 0x8FEF, 0x5FE6, 0x8FF0, 0x5FE7, 0xD3C7, 0x5FE8, 0x8FF1, 0x5FE9, 0x8FF2, 0x5FEA, 0xE2EC, + 0x5FEB, 0xBFEC, 0x5FEC, 0x8FF3, 0x5FED, 0xE2ED, 0x5FEE, 0xE2E5, 0x5FEF, 0x8FF4, 0x5FF0, 0x8FF5, 0x5FF1, 0xB3C0, 0x5FF2, 0x8FF6, + 0x5FF3, 0x8FF7, 0x5FF4, 0x8FF8, 0x5FF5, 0xC4EE, 0x5FF6, 0x8FF9, 0x5FF7, 0x8FFA, 0x5FF8, 0xE2EE, 0x5FF9, 0x8FFB, 0x5FFA, 0x8FFC, + 0x5FFB, 0xD0C3, 0x5FFC, 0x8FFD, 0x5FFD, 0xBAF6, 0x5FFE, 0xE2E9, 0x5FFF, 0xB7DE, 0x6000, 0xBBB3, 0x6001, 0xCCAC, 0x6002, 0xCBCB, + 0x6003, 0xE2E4, 0x6004, 0xE2E6, 0x6005, 0xE2EA, 0x6006, 0xE2EB, 0x6007, 0x8FFE, 0x6008, 0x9040, 0x6009, 0x9041, 0x600A, 0xE2F7, + 0x600B, 0x9042, 0x600C, 0x9043, 0x600D, 0xE2F4, 0x600E, 0xD4F5, 0x600F, 0xE2F3, 0x6010, 0x9044, 0x6011, 0x9045, 0x6012, 0xC5AD, + 0x6013, 0x9046, 0x6014, 0xD5FA, 0x6015, 0xC5C2, 0x6016, 0xB2C0, 0x6017, 0x9047, 0x6018, 0x9048, 0x6019, 0xE2EF, 0x601A, 0x9049, + 0x601B, 0xE2F2, 0x601C, 0xC1AF, 0x601D, 0xCBBC, 0x601E, 0x904A, 0x601F, 0x904B, 0x6020, 0xB5A1, 0x6021, 0xE2F9, 0x6022, 0x904C, + 0x6023, 0x904D, 0x6024, 0x904E, 0x6025, 0xBCB1, 0x6026, 0xE2F1, 0x6027, 0xD0D4, 0x6028, 0xD4B9, 0x6029, 0xE2F5, 0x602A, 0xB9D6, + 0x602B, 0xE2F6, 0x602C, 0x904F, 0x602D, 0x9050, 0x602E, 0x9051, 0x602F, 0xC7D3, 0x6030, 0x9052, 0x6031, 0x9053, 0x6032, 0x9054, + 0x6033, 0x9055, 0x6034, 0x9056, 0x6035, 0xE2F0, 0x6036, 0x9057, 0x6037, 0x9058, 0x6038, 0x9059, 0x6039, 0x905A, 0x603A, 0x905B, + 0x603B, 0xD7DC, 0x603C, 0xEDA1, 0x603D, 0x905C, 0x603E, 0x905D, 0x603F, 0xE2F8, 0x6040, 0x905E, 0x6041, 0xEDA5, 0x6042, 0xE2FE, + 0x6043, 0xCAD1, 0x6044, 0x905F, 0x6045, 0x9060, 0x6046, 0x9061, 0x6047, 0x9062, 0x6048, 0x9063, 0x6049, 0x9064, 0x604A, 0x9065, + 0x604B, 0xC1B5, 0x604C, 0x9066, 0x604D, 0xBBD0, 0x604E, 0x9067, 0x604F, 0x9068, 0x6050, 0xBFD6, 0x6051, 0x9069, 0x6052, 0xBAE3, + 0x6053, 0x906A, 0x6054, 0x906B, 0x6055, 0xCBA1, 0x6056, 0x906C, 0x6057, 0x906D, 0x6058, 0x906E, 0x6059, 0xEDA6, 0x605A, 0xEDA3, + 0x605B, 0x906F, 0x605C, 0x9070, 0x605D, 0xEDA2, 0x605E, 0x9071, 0x605F, 0x9072, 0x6060, 0x9073, 0x6061, 0x9074, 0x6062, 0xBBD6, + 0x6063, 0xEDA7, 0x6064, 0xD0F4, 0x6065, 0x9075, 0x6066, 0x9076, 0x6067, 0xEDA4, 0x6068, 0xBADE, 0x6069, 0xB6F7, 0x606A, 0xE3A1, + 0x606B, 0xB6B2, 0x606C, 0xCCF1, 0x606D, 0xB9A7, 0x606E, 0x9077, 0x606F, 0xCFA2, 0x6070, 0xC7A1, 0x6071, 0x9078, 0x6072, 0x9079, + 0x6073, 0xBFD2, 0x6074, 0x907A, 0x6075, 0x907B, 0x6076, 0xB6F1, 0x6077, 0x907C, 0x6078, 0xE2FA, 0x6079, 0xE2FB, 0x607A, 0xE2FD, + 0x607B, 0xE2FC, 0x607C, 0xC4D5, 0x607D, 0xE3A2, 0x607E, 0x907D, 0x607F, 0xD3C1, 0x6080, 0x907E, 0x6081, 0x9080, 0x6082, 0x9081, + 0x6083, 0xE3A7, 0x6084, 0xC7C4, 0x6085, 0x9082, 0x6086, 0x9083, 0x6087, 0x9084, 0x6088, 0x9085, 0x6089, 0xCFA4, 0x608A, 0x9086, + 0x608B, 0x9087, 0x608C, 0xE3A9, 0x608D, 0xBAB7, 0x608E, 0x9088, 0x608F, 0x9089, 0x6090, 0x908A, 0x6091, 0x908B, 0x6092, 0xE3A8, + 0x6093, 0x908C, 0x6094, 0xBBDA, 0x6095, 0x908D, 0x6096, 0xE3A3, 0x6097, 0x908E, 0x6098, 0x908F, 0x6099, 0x9090, 0x609A, 0xE3A4, + 0x609B, 0xE3AA, 0x609C, 0x9091, 0x609D, 0xE3A6, 0x609E, 0x9092, 0x609F, 0xCEF2, 0x60A0, 0xD3C6, 0x60A1, 0x9093, 0x60A2, 0x9094, + 0x60A3, 0xBBBC, 0x60A4, 0x9095, 0x60A5, 0x9096, 0x60A6, 0xD4C3, 0x60A7, 0x9097, 0x60A8, 0xC4FA, 0x60A9, 0x9098, 0x60AA, 0x9099, + 0x60AB, 0xEDA8, 0x60AC, 0xD0FC, 0x60AD, 0xE3A5, 0x60AE, 0x909A, 0x60AF, 0xC3F5, 0x60B0, 0x909B, 0x60B1, 0xE3AD, 0x60B2, 0xB1AF, + 0x60B3, 0x909C, 0x60B4, 0xE3B2, 0x60B5, 0x909D, 0x60B6, 0x909E, 0x60B7, 0x909F, 0x60B8, 0xBCC2, 0x60B9, 0x90A0, 0x60BA, 0x90A1, + 0x60BB, 0xE3AC, 0x60BC, 0xB5BF, 0x60BD, 0x90A2, 0x60BE, 0x90A3, 0x60BF, 0x90A4, 0x60C0, 0x90A5, 0x60C1, 0x90A6, 0x60C2, 0x90A7, + 0x60C3, 0x90A8, 0x60C4, 0x90A9, 0x60C5, 0xC7E9, 0x60C6, 0xE3B0, 0x60C7, 0x90AA, 0x60C8, 0x90AB, 0x60C9, 0x90AC, 0x60CA, 0xBEAA, + 0x60CB, 0xCDEF, 0x60CC, 0x90AD, 0x60CD, 0x90AE, 0x60CE, 0x90AF, 0x60CF, 0x90B0, 0x60D0, 0x90B1, 0x60D1, 0xBBF3, 0x60D2, 0x90B2, + 0x60D3, 0x90B3, 0x60D4, 0x90B4, 0x60D5, 0xCCE8, 0x60D6, 0x90B5, 0x60D7, 0x90B6, 0x60D8, 0xE3AF, 0x60D9, 0x90B7, 0x60DA, 0xE3B1, + 0x60DB, 0x90B8, 0x60DC, 0xCFA7, 0x60DD, 0xE3AE, 0x60DE, 0x90B9, 0x60DF, 0xCEA9, 0x60E0, 0xBBDD, 0x60E1, 0x90BA, 0x60E2, 0x90BB, + 0x60E3, 0x90BC, 0x60E4, 0x90BD, 0x60E5, 0x90BE, 0x60E6, 0xB5EB, 0x60E7, 0xBEE5, 0x60E8, 0xB2D2, 0x60E9, 0xB3CD, 0x60EA, 0x90BF, + 0x60EB, 0xB1B9, 0x60EC, 0xE3AB, 0x60ED, 0xB2D1, 0x60EE, 0xB5AC, 0x60EF, 0xB9DF, 0x60F0, 0xB6E8, 0x60F1, 0x90C0, 0x60F2, 0x90C1, + 0x60F3, 0xCFEB, 0x60F4, 0xE3B7, 0x60F5, 0x90C2, 0x60F6, 0xBBCC, 0x60F7, 0x90C3, 0x60F8, 0x90C4, 0x60F9, 0xC8C7, 0x60FA, 0xD0CA, + 0x60FB, 0x90C5, 0x60FC, 0x90C6, 0x60FD, 0x90C7, 0x60FE, 0x90C8, 0x60FF, 0x90C9, 0x6100, 0xE3B8, 0x6101, 0xB3EE, 0x6102, 0x90CA, + 0x6103, 0x90CB, 0x6104, 0x90CC, 0x6105, 0x90CD, 0x6106, 0xEDA9, 0x6107, 0x90CE, 0x6108, 0xD3FA, 0x6109, 0xD3E4, 0x610A, 0x90CF, + 0x610B, 0x90D0, 0x610C, 0x90D1, 0x610D, 0xEDAA, 0x610E, 0xE3B9, 0x610F, 0xD2E2, 0x6110, 0x90D2, 0x6111, 0x90D3, 0x6112, 0x90D4, + 0x6113, 0x90D5, 0x6114, 0x90D6, 0x6115, 0xE3B5, 0x6116, 0x90D7, 0x6117, 0x90D8, 0x6118, 0x90D9, 0x6119, 0x90DA, 0x611A, 0xD3DE, + 0x611B, 0x90DB, 0x611C, 0x90DC, 0x611D, 0x90DD, 0x611E, 0x90DE, 0x611F, 0xB8D0, 0x6120, 0xE3B3, 0x6121, 0x90DF, 0x6122, 0x90E0, + 0x6123, 0xE3B6, 0x6124, 0xB7DF, 0x6125, 0x90E1, 0x6126, 0xE3B4, 0x6127, 0xC0A2, 0x6128, 0x90E2, 0x6129, 0x90E3, 0x612A, 0x90E4, + 0x612B, 0xE3BA, 0x612C, 0x90E5, 0x612D, 0x90E6, 0x612E, 0x90E7, 0x612F, 0x90E8, 0x6130, 0x90E9, 0x6131, 0x90EA, 0x6132, 0x90EB, + 0x6133, 0x90EC, 0x6134, 0x90ED, 0x6135, 0x90EE, 0x6136, 0x90EF, 0x6137, 0x90F0, 0x6138, 0x90F1, 0x6139, 0x90F2, 0x613A, 0x90F3, + 0x613B, 0x90F4, 0x613C, 0x90F5, 0x613D, 0x90F6, 0x613E, 0x90F7, 0x613F, 0xD4B8, 0x6140, 0x90F8, 0x6141, 0x90F9, 0x6142, 0x90FA, + 0x6143, 0x90FB, 0x6144, 0x90FC, 0x6145, 0x90FD, 0x6146, 0x90FE, 0x6147, 0x9140, 0x6148, 0xB4C8, 0x6149, 0x9141, 0x614A, 0xE3BB, + 0x614B, 0x9142, 0x614C, 0xBBC5, 0x614D, 0x9143, 0x614E, 0xC9F7, 0x614F, 0x9144, 0x6150, 0x9145, 0x6151, 0xC9E5, 0x6152, 0x9146, + 0x6153, 0x9147, 0x6154, 0x9148, 0x6155, 0xC4BD, 0x6156, 0x9149, 0x6157, 0x914A, 0x6158, 0x914B, 0x6159, 0x914C, 0x615A, 0x914D, + 0x615B, 0x914E, 0x615C, 0x914F, 0x615D, 0xEDAB, 0x615E, 0x9150, 0x615F, 0x9151, 0x6160, 0x9152, 0x6161, 0x9153, 0x6162, 0xC2FD, + 0x6163, 0x9154, 0x6164, 0x9155, 0x6165, 0x9156, 0x6166, 0x9157, 0x6167, 0xBBDB, 0x6168, 0xBFAE, 0x6169, 0x9158, 0x616A, 0x9159, + 0x616B, 0x915A, 0x616C, 0x915B, 0x616D, 0x915C, 0x616E, 0x915D, 0x616F, 0x915E, 0x6170, 0xCEBF, 0x6171, 0x915F, 0x6172, 0x9160, + 0x6173, 0x9161, 0x6174, 0x9162, 0x6175, 0xE3BC, 0x6176, 0x9163, 0x6177, 0xBFB6, 0x6178, 0x9164, 0x6179, 0x9165, 0x617A, 0x9166, + 0x617B, 0x9167, 0x617C, 0x9168, 0x617D, 0x9169, 0x617E, 0x916A, 0x617F, 0x916B, 0x6180, 0x916C, 0x6181, 0x916D, 0x6182, 0x916E, + 0x6183, 0x916F, 0x6184, 0x9170, 0x6185, 0x9171, 0x6186, 0x9172, 0x6187, 0x9173, 0x6188, 0x9174, 0x6189, 0x9175, 0x618A, 0x9176, + 0x618B, 0xB1EF, 0x618C, 0x9177, 0x618D, 0x9178, 0x618E, 0xD4F7, 0x618F, 0x9179, 0x6190, 0x917A, 0x6191, 0x917B, 0x6192, 0x917C, + 0x6193, 0x917D, 0x6194, 0xE3BE, 0x6195, 0x917E, 0x6196, 0x9180, 0x6197, 0x9181, 0x6198, 0x9182, 0x6199, 0x9183, 0x619A, 0x9184, + 0x619B, 0x9185, 0x619C, 0x9186, 0x619D, 0xEDAD, 0x619E, 0x9187, 0x619F, 0x9188, 0x61A0, 0x9189, 0x61A1, 0x918A, 0x61A2, 0x918B, + 0x61A3, 0x918C, 0x61A4, 0x918D, 0x61A5, 0x918E, 0x61A6, 0x918F, 0x61A7, 0xE3BF, 0x61A8, 0xBAA9, 0x61A9, 0xEDAC, 0x61AA, 0x9190, + 0x61AB, 0x9191, 0x61AC, 0xE3BD, 0x61AD, 0x9192, 0x61AE, 0x9193, 0x61AF, 0x9194, 0x61B0, 0x9195, 0x61B1, 0x9196, 0x61B2, 0x9197, + 0x61B3, 0x9198, 0x61B4, 0x9199, 0x61B5, 0x919A, 0x61B6, 0x919B, 0x61B7, 0xE3C0, 0x61B8, 0x919C, 0x61B9, 0x919D, 0x61BA, 0x919E, + 0x61BB, 0x919F, 0x61BC, 0x91A0, 0x61BD, 0x91A1, 0x61BE, 0xBAB6, 0x61BF, 0x91A2, 0x61C0, 0x91A3, 0x61C1, 0x91A4, 0x61C2, 0xB6AE, + 0x61C3, 0x91A5, 0x61C4, 0x91A6, 0x61C5, 0x91A7, 0x61C6, 0x91A8, 0x61C7, 0x91A9, 0x61C8, 0xD0B8, 0x61C9, 0x91AA, 0x61CA, 0xB0C3, + 0x61CB, 0xEDAE, 0x61CC, 0x91AB, 0x61CD, 0x91AC, 0x61CE, 0x91AD, 0x61CF, 0x91AE, 0x61D0, 0x91AF, 0x61D1, 0xEDAF, 0x61D2, 0xC0C1, + 0x61D3, 0x91B0, 0x61D4, 0xE3C1, 0x61D5, 0x91B1, 0x61D6, 0x91B2, 0x61D7, 0x91B3, 0x61D8, 0x91B4, 0x61D9, 0x91B5, 0x61DA, 0x91B6, + 0x61DB, 0x91B7, 0x61DC, 0x91B8, 0x61DD, 0x91B9, 0x61DE, 0x91BA, 0x61DF, 0x91BB, 0x61E0, 0x91BC, 0x61E1, 0x91BD, 0x61E2, 0x91BE, + 0x61E3, 0x91BF, 0x61E4, 0x91C0, 0x61E5, 0x91C1, 0x61E6, 0xC5B3, 0x61E7, 0x91C2, 0x61E8, 0x91C3, 0x61E9, 0x91C4, 0x61EA, 0x91C5, + 0x61EB, 0x91C6, 0x61EC, 0x91C7, 0x61ED, 0x91C8, 0x61EE, 0x91C9, 0x61EF, 0x91CA, 0x61F0, 0x91CB, 0x61F1, 0x91CC, 0x61F2, 0x91CD, + 0x61F3, 0x91CE, 0x61F4, 0x91CF, 0x61F5, 0xE3C2, 0x61F6, 0x91D0, 0x61F7, 0x91D1, 0x61F8, 0x91D2, 0x61F9, 0x91D3, 0x61FA, 0x91D4, + 0x61FB, 0x91D5, 0x61FC, 0x91D6, 0x61FD, 0x91D7, 0x61FE, 0x91D8, 0x61FF, 0xDCB2, 0x6200, 0x91D9, 0x6201, 0x91DA, 0x6202, 0x91DB, + 0x6203, 0x91DC, 0x6204, 0x91DD, 0x6205, 0x91DE, 0x6206, 0xEDB0, 0x6207, 0x91DF, 0x6208, 0xB8EA, 0x6209, 0x91E0, 0x620A, 0xCEEC, + 0x620B, 0xEAA7, 0x620C, 0xD0E7, 0x620D, 0xCAF9, 0x620E, 0xC8D6, 0x620F, 0xCFB7, 0x6210, 0xB3C9, 0x6211, 0xCED2, 0x6212, 0xBDE4, + 0x6213, 0x91E1, 0x6214, 0x91E2, 0x6215, 0xE3DE, 0x6216, 0xBBF2, 0x6217, 0xEAA8, 0x6218, 0xD5BD, 0x6219, 0x91E3, 0x621A, 0xC6DD, + 0x621B, 0xEAA9, 0x621C, 0x91E4, 0x621D, 0x91E5, 0x621E, 0x91E6, 0x621F, 0xEAAA, 0x6220, 0x91E7, 0x6221, 0xEAAC, 0x6222, 0xEAAB, + 0x6223, 0x91E8, 0x6224, 0xEAAE, 0x6225, 0xEAAD, 0x6226, 0x91E9, 0x6227, 0x91EA, 0x6228, 0x91EB, 0x6229, 0x91EC, 0x622A, 0xBDD8, + 0x622B, 0x91ED, 0x622C, 0xEAAF, 0x622D, 0x91EE, 0x622E, 0xC2BE, 0x622F, 0x91EF, 0x6230, 0x91F0, 0x6231, 0x91F1, 0x6232, 0x91F2, + 0x6233, 0xB4C1, 0x6234, 0xB4F7, 0x6235, 0x91F3, 0x6236, 0x91F4, 0x6237, 0xBBA7, 0x6238, 0x91F5, 0x6239, 0x91F6, 0x623A, 0x91F7, + 0x623B, 0x91F8, 0x623C, 0x91F9, 0x623D, 0xECE6, 0x623E, 0xECE5, 0x623F, 0xB7BF, 0x6240, 0xCBF9, 0x6241, 0xB1E2, 0x6242, 0x91FA, + 0x6243, 0xECE7, 0x6244, 0x91FB, 0x6245, 0x91FC, 0x6246, 0x91FD, 0x6247, 0xC9C8, 0x6248, 0xECE8, 0x6249, 0xECE9, 0x624A, 0x91FE, + 0x624B, 0xCAD6, 0x624C, 0xDED0, 0x624D, 0xB2C5, 0x624E, 0xD4FA, 0x624F, 0x9240, 0x6250, 0x9241, 0x6251, 0xC6CB, 0x6252, 0xB0C7, + 0x6253, 0xB4F2, 0x6254, 0xC8D3, 0x6255, 0x9242, 0x6256, 0x9243, 0x6257, 0x9244, 0x6258, 0xCDD0, 0x6259, 0x9245, 0x625A, 0x9246, + 0x625B, 0xBFB8, 0x625C, 0x9247, 0x625D, 0x9248, 0x625E, 0x9249, 0x625F, 0x924A, 0x6260, 0x924B, 0x6261, 0x924C, 0x6262, 0x924D, + 0x6263, 0xBFDB, 0x6264, 0x924E, 0x6265, 0x924F, 0x6266, 0xC7A4, 0x6267, 0xD6B4, 0x6268, 0x9250, 0x6269, 0xC0A9, 0x626A, 0xDED1, + 0x626B, 0xC9A8, 0x626C, 0xD1EF, 0x626D, 0xC5A4, 0x626E, 0xB0E7, 0x626F, 0xB3B6, 0x6270, 0xC8C5, 0x6271, 0x9251, 0x6272, 0x9252, + 0x6273, 0xB0E2, 0x6274, 0x9253, 0x6275, 0x9254, 0x6276, 0xB7F6, 0x6277, 0x9255, 0x6278, 0x9256, 0x6279, 0xC5FA, 0x627A, 0x9257, + 0x627B, 0x9258, 0x627C, 0xB6F3, 0x627D, 0x9259, 0x627E, 0xD5D2, 0x627F, 0xB3D0, 0x6280, 0xBCBC, 0x6281, 0x925A, 0x6282, 0x925B, + 0x6283, 0x925C, 0x6284, 0xB3AD, 0x6285, 0x925D, 0x6286, 0x925E, 0x6287, 0x925F, 0x6288, 0x9260, 0x6289, 0xBEF1, 0x628A, 0xB0D1, + 0x628B, 0x9261, 0x628C, 0x9262, 0x628D, 0x9263, 0x628E, 0x9264, 0x628F, 0x9265, 0x6290, 0x9266, 0x6291, 0xD2D6, 0x6292, 0xCAE3, + 0x6293, 0xD7A5, 0x6294, 0x9267, 0x6295, 0xCDB6, 0x6296, 0xB6B6, 0x6297, 0xBFB9, 0x6298, 0xD5DB, 0x6299, 0x9268, 0x629A, 0xB8A7, + 0x629B, 0xC5D7, 0x629C, 0x9269, 0x629D, 0x926A, 0x629E, 0x926B, 0x629F, 0xDED2, 0x62A0, 0xBFD9, 0x62A1, 0xC2D5, 0x62A2, 0xC7C0, + 0x62A3, 0x926C, 0x62A4, 0xBBA4, 0x62A5, 0xB1A8, 0x62A6, 0x926D, 0x62A7, 0x926E, 0x62A8, 0xC5EA, 0x62A9, 0x926F, 0x62AA, 0x9270, + 0x62AB, 0xC5FB, 0x62AC, 0xCCA7, 0x62AD, 0x9271, 0x62AE, 0x9272, 0x62AF, 0x9273, 0x62B0, 0x9274, 0x62B1, 0xB1A7, 0x62B2, 0x9275, + 0x62B3, 0x9276, 0x62B4, 0x9277, 0x62B5, 0xB5D6, 0x62B6, 0x9278, 0x62B7, 0x9279, 0x62B8, 0x927A, 0x62B9, 0xC4A8, 0x62BA, 0x927B, + 0x62BB, 0xDED3, 0x62BC, 0xD1BA, 0x62BD, 0xB3E9, 0x62BE, 0x927C, 0x62BF, 0xC3F2, 0x62C0, 0x927D, 0x62C1, 0x927E, 0x62C2, 0xB7F7, + 0x62C3, 0x9280, 0x62C4, 0xD6F4, 0x62C5, 0xB5A3, 0x62C6, 0xB2F0, 0x62C7, 0xC4B4, 0x62C8, 0xC4E9, 0x62C9, 0xC0AD, 0x62CA, 0xDED4, + 0x62CB, 0x9281, 0x62CC, 0xB0E8, 0x62CD, 0xC5C4, 0x62CE, 0xC1E0, 0x62CF, 0x9282, 0x62D0, 0xB9D5, 0x62D1, 0x9283, 0x62D2, 0xBEDC, + 0x62D3, 0xCDD8, 0x62D4, 0xB0CE, 0x62D5, 0x9284, 0x62D6, 0xCDCF, 0x62D7, 0xDED6, 0x62D8, 0xBED0, 0x62D9, 0xD7BE, 0x62DA, 0xDED5, + 0x62DB, 0xD5D0, 0x62DC, 0xB0DD, 0x62DD, 0x9285, 0x62DE, 0x9286, 0x62DF, 0xC4E2, 0x62E0, 0x9287, 0x62E1, 0x9288, 0x62E2, 0xC2A3, + 0x62E3, 0xBCF0, 0x62E4, 0x9289, 0x62E5, 0xD3B5, 0x62E6, 0xC0B9, 0x62E7, 0xC5A1, 0x62E8, 0xB2A6, 0x62E9, 0xD4F1, 0x62EA, 0x928A, + 0x62EB, 0x928B, 0x62EC, 0xC0A8, 0x62ED, 0xCAC3, 0x62EE, 0xDED7, 0x62EF, 0xD5FC, 0x62F0, 0x928C, 0x62F1, 0xB9B0, 0x62F2, 0x928D, + 0x62F3, 0xC8AD, 0x62F4, 0xCBA9, 0x62F5, 0x928E, 0x62F6, 0xDED9, 0x62F7, 0xBFBD, 0x62F8, 0x928F, 0x62F9, 0x9290, 0x62FA, 0x9291, + 0x62FB, 0x9292, 0x62FC, 0xC6B4, 0x62FD, 0xD7A7, 0x62FE, 0xCAB0, 0x62FF, 0xC4C3, 0x6300, 0x9293, 0x6301, 0xB3D6, 0x6302, 0xB9D2, + 0x6303, 0x9294, 0x6304, 0x9295, 0x6305, 0x9296, 0x6306, 0x9297, 0x6307, 0xD6B8, 0x6308, 0xEAFC, 0x6309, 0xB0B4, 0x630A, 0x9298, + 0x630B, 0x9299, 0x630C, 0x929A, 0x630D, 0x929B, 0x630E, 0xBFE6, 0x630F, 0x929C, 0x6310, 0x929D, 0x6311, 0xCCF4, 0x6312, 0x929E, + 0x6313, 0x929F, 0x6314, 0x92A0, 0x6315, 0x92A1, 0x6316, 0xCDDA, 0x6317, 0x92A2, 0x6318, 0x92A3, 0x6319, 0x92A4, 0x631A, 0xD6BF, + 0x631B, 0xC2CE, 0x631C, 0x92A5, 0x631D, 0xCECE, 0x631E, 0xCCA2, 0x631F, 0xD0AE, 0x6320, 0xC4D3, 0x6321, 0xB5B2, 0x6322, 0xDED8, + 0x6323, 0xD5F5, 0x6324, 0xBCB7, 0x6325, 0xBBD3, 0x6326, 0x92A6, 0x6327, 0x92A7, 0x6328, 0xB0A4, 0x6329, 0x92A8, 0x632A, 0xC5B2, + 0x632B, 0xB4EC, 0x632C, 0x92A9, 0x632D, 0x92AA, 0x632E, 0x92AB, 0x632F, 0xD5F1, 0x6330, 0x92AC, 0x6331, 0x92AD, 0x6332, 0xEAFD, + 0x6333, 0x92AE, 0x6334, 0x92AF, 0x6335, 0x92B0, 0x6336, 0x92B1, 0x6337, 0x92B2, 0x6338, 0x92B3, 0x6339, 0xDEDA, 0x633A, 0xCDA6, + 0x633B, 0x92B4, 0x633C, 0x92B5, 0x633D, 0xCDEC, 0x633E, 0x92B6, 0x633F, 0x92B7, 0x6340, 0x92B8, 0x6341, 0x92B9, 0x6342, 0xCEE6, + 0x6343, 0xDEDC, 0x6344, 0x92BA, 0x6345, 0xCDB1, 0x6346, 0xC0A6, 0x6347, 0x92BB, 0x6348, 0x92BC, 0x6349, 0xD7BD, 0x634A, 0x92BD, + 0x634B, 0xDEDB, 0x634C, 0xB0C6, 0x634D, 0xBAB4, 0x634E, 0xC9D3, 0x634F, 0xC4F3, 0x6350, 0xBEE8, 0x6351, 0x92BE, 0x6352, 0x92BF, + 0x6353, 0x92C0, 0x6354, 0x92C1, 0x6355, 0xB2B6, 0x6356, 0x92C2, 0x6357, 0x92C3, 0x6358, 0x92C4, 0x6359, 0x92C5, 0x635A, 0x92C6, + 0x635B, 0x92C7, 0x635C, 0x92C8, 0x635D, 0x92C9, 0x635E, 0xC0CC, 0x635F, 0xCBF0, 0x6360, 0x92CA, 0x6361, 0xBCF1, 0x6362, 0xBBBB, + 0x6363, 0xB5B7, 0x6364, 0x92CB, 0x6365, 0x92CC, 0x6366, 0x92CD, 0x6367, 0xC5F5, 0x6368, 0x92CE, 0x6369, 0xDEE6, 0x636A, 0x92CF, + 0x636B, 0x92D0, 0x636C, 0x92D1, 0x636D, 0xDEE3, 0x636E, 0xBEDD, 0x636F, 0x92D2, 0x6370, 0x92D3, 0x6371, 0xDEDF, 0x6372, 0x92D4, + 0x6373, 0x92D5, 0x6374, 0x92D6, 0x6375, 0x92D7, 0x6376, 0xB4B7, 0x6377, 0xBDDD, 0x6378, 0x92D8, 0x6379, 0x92D9, 0x637A, 0xDEE0, + 0x637B, 0xC4ED, 0x637C, 0x92DA, 0x637D, 0x92DB, 0x637E, 0x92DC, 0x637F, 0x92DD, 0x6380, 0xCFC6, 0x6381, 0x92DE, 0x6382, 0xB5E0, + 0x6383, 0x92DF, 0x6384, 0x92E0, 0x6385, 0x92E1, 0x6386, 0x92E2, 0x6387, 0xB6DE, 0x6388, 0xCADA, 0x6389, 0xB5F4, 0x638A, 0xDEE5, + 0x638B, 0x92E3, 0x638C, 0xD5C6, 0x638D, 0x92E4, 0x638E, 0xDEE1, 0x638F, 0xCCCD, 0x6390, 0xC6FE, 0x6391, 0x92E5, 0x6392, 0xC5C5, + 0x6393, 0x92E6, 0x6394, 0x92E7, 0x6395, 0x92E8, 0x6396, 0xD2B4, 0x6397, 0x92E9, 0x6398, 0xBEF2, 0x6399, 0x92EA, 0x639A, 0x92EB, + 0x639B, 0x92EC, 0x639C, 0x92ED, 0x639D, 0x92EE, 0x639E, 0x92EF, 0x639F, 0x92F0, 0x63A0, 0xC2D3, 0x63A1, 0x92F1, 0x63A2, 0xCCBD, + 0x63A3, 0xB3B8, 0x63A4, 0x92F2, 0x63A5, 0xBDD3, 0x63A6, 0x92F3, 0x63A7, 0xBFD8, 0x63A8, 0xCDC6, 0x63A9, 0xD1DA, 0x63AA, 0xB4EB, + 0x63AB, 0x92F4, 0x63AC, 0xDEE4, 0x63AD, 0xDEDD, 0x63AE, 0xDEE7, 0x63AF, 0x92F5, 0x63B0, 0xEAFE, 0x63B1, 0x92F6, 0x63B2, 0x92F7, + 0x63B3, 0xC2B0, 0x63B4, 0xDEE2, 0x63B5, 0x92F8, 0x63B6, 0x92F9, 0x63B7, 0xD6C0, 0x63B8, 0xB5A7, 0x63B9, 0x92FA, 0x63BA, 0xB2F4, + 0x63BB, 0x92FB, 0x63BC, 0xDEE8, 0x63BD, 0x92FC, 0x63BE, 0xDEF2, 0x63BF, 0x92FD, 0x63C0, 0x92FE, 0x63C1, 0x9340, 0x63C2, 0x9341, + 0x63C3, 0x9342, 0x63C4, 0xDEED, 0x63C5, 0x9343, 0x63C6, 0xDEF1, 0x63C7, 0x9344, 0x63C8, 0x9345, 0x63C9, 0xC8E0, 0x63CA, 0x9346, + 0x63CB, 0x9347, 0x63CC, 0x9348, 0x63CD, 0xD7E1, 0x63CE, 0xDEEF, 0x63CF, 0xC3E8, 0x63D0, 0xCCE1, 0x63D1, 0x9349, 0x63D2, 0xB2E5, + 0x63D3, 0x934A, 0x63D4, 0x934B, 0x63D5, 0x934C, 0x63D6, 0xD2BE, 0x63D7, 0x934D, 0x63D8, 0x934E, 0x63D9, 0x934F, 0x63DA, 0x9350, + 0x63DB, 0x9351, 0x63DC, 0x9352, 0x63DD, 0x9353, 0x63DE, 0xDEEE, 0x63DF, 0x9354, 0x63E0, 0xDEEB, 0x63E1, 0xCED5, 0x63E2, 0x9355, + 0x63E3, 0xB4A7, 0x63E4, 0x9356, 0x63E5, 0x9357, 0x63E6, 0x9358, 0x63E7, 0x9359, 0x63E8, 0x935A, 0x63E9, 0xBFAB, 0x63EA, 0xBEBE, + 0x63EB, 0x935B, 0x63EC, 0x935C, 0x63ED, 0xBDD2, 0x63EE, 0x935D, 0x63EF, 0x935E, 0x63F0, 0x935F, 0x63F1, 0x9360, 0x63F2, 0xDEE9, + 0x63F3, 0x9361, 0x63F4, 0xD4AE, 0x63F5, 0x9362, 0x63F6, 0xDEDE, 0x63F7, 0x9363, 0x63F8, 0xDEEA, 0x63F9, 0x9364, 0x63FA, 0x9365, + 0x63FB, 0x9366, 0x63FC, 0x9367, 0x63FD, 0xC0BF, 0x63FE, 0x9368, 0x63FF, 0xDEEC, 0x6400, 0xB2F3, 0x6401, 0xB8E9, 0x6402, 0xC2A7, + 0x6403, 0x9369, 0x6404, 0x936A, 0x6405, 0xBDC1, 0x6406, 0x936B, 0x6407, 0x936C, 0x6408, 0x936D, 0x6409, 0x936E, 0x640A, 0x936F, + 0x640B, 0xDEF5, 0x640C, 0xDEF8, 0x640D, 0x9370, 0x640E, 0x9371, 0x640F, 0xB2AB, 0x6410, 0xB4A4, 0x6411, 0x9372, 0x6412, 0x9373, + 0x6413, 0xB4EA, 0x6414, 0xC9A6, 0x6415, 0x9374, 0x6416, 0x9375, 0x6417, 0x9376, 0x6418, 0x9377, 0x6419, 0x9378, 0x641A, 0x9379, + 0x641B, 0xDEF6, 0x641C, 0xCBD1, 0x641D, 0x937A, 0x641E, 0xB8E3, 0x641F, 0x937B, 0x6420, 0xDEF7, 0x6421, 0xDEFA, 0x6422, 0x937C, + 0x6423, 0x937D, 0x6424, 0x937E, 0x6425, 0x9380, 0x6426, 0xDEF9, 0x6427, 0x9381, 0x6428, 0x9382, 0x6429, 0x9383, 0x642A, 0xCCC2, + 0x642B, 0x9384, 0x642C, 0xB0E1, 0x642D, 0xB4EE, 0x642E, 0x9385, 0x642F, 0x9386, 0x6430, 0x9387, 0x6431, 0x9388, 0x6432, 0x9389, + 0x6433, 0x938A, 0x6434, 0xE5BA, 0x6435, 0x938B, 0x6436, 0x938C, 0x6437, 0x938D, 0x6438, 0x938E, 0x6439, 0x938F, 0x643A, 0xD0AF, + 0x643B, 0x9390, 0x643C, 0x9391, 0x643D, 0xB2EB, 0x643E, 0x9392, 0x643F, 0xEBA1, 0x6440, 0x9393, 0x6441, 0xDEF4, 0x6442, 0x9394, + 0x6443, 0x9395, 0x6444, 0xC9E3, 0x6445, 0xDEF3, 0x6446, 0xB0DA, 0x6447, 0xD2A1, 0x6448, 0xB1F7, 0x6449, 0x9396, 0x644A, 0xCCAF, + 0x644B, 0x9397, 0x644C, 0x9398, 0x644D, 0x9399, 0x644E, 0x939A, 0x644F, 0x939B, 0x6450, 0x939C, 0x6451, 0x939D, 0x6452, 0xDEF0, + 0x6453, 0x939E, 0x6454, 0xCBA4, 0x6455, 0x939F, 0x6456, 0x93A0, 0x6457, 0x93A1, 0x6458, 0xD5AA, 0x6459, 0x93A2, 0x645A, 0x93A3, + 0x645B, 0x93A4, 0x645C, 0x93A5, 0x645D, 0x93A6, 0x645E, 0xDEFB, 0x645F, 0x93A7, 0x6460, 0x93A8, 0x6461, 0x93A9, 0x6462, 0x93AA, + 0x6463, 0x93AB, 0x6464, 0x93AC, 0x6465, 0x93AD, 0x6466, 0x93AE, 0x6467, 0xB4DD, 0x6468, 0x93AF, 0x6469, 0xC4A6, 0x646A, 0x93B0, + 0x646B, 0x93B1, 0x646C, 0x93B2, 0x646D, 0xDEFD, 0x646E, 0x93B3, 0x646F, 0x93B4, 0x6470, 0x93B5, 0x6471, 0x93B6, 0x6472, 0x93B7, + 0x6473, 0x93B8, 0x6474, 0x93B9, 0x6475, 0x93BA, 0x6476, 0x93BB, 0x6477, 0x93BC, 0x6478, 0xC3FE, 0x6479, 0xC4A1, 0x647A, 0xDFA1, + 0x647B, 0x93BD, 0x647C, 0x93BE, 0x647D, 0x93BF, 0x647E, 0x93C0, 0x647F, 0x93C1, 0x6480, 0x93C2, 0x6481, 0x93C3, 0x6482, 0xC1CC, + 0x6483, 0x93C4, 0x6484, 0xDEFC, 0x6485, 0xBEEF, 0x6486, 0x93C5, 0x6487, 0xC6B2, 0x6488, 0x93C6, 0x6489, 0x93C7, 0x648A, 0x93C8, + 0x648B, 0x93C9, 0x648C, 0x93CA, 0x648D, 0x93CB, 0x648E, 0x93CC, 0x648F, 0x93CD, 0x6490, 0x93CE, 0x6491, 0xB3C5, 0x6492, 0xC8F6, + 0x6493, 0x93CF, 0x6494, 0x93D0, 0x6495, 0xCBBA, 0x6496, 0xDEFE, 0x6497, 0x93D1, 0x6498, 0x93D2, 0x6499, 0xDFA4, 0x649A, 0x93D3, + 0x649B, 0x93D4, 0x649C, 0x93D5, 0x649D, 0x93D6, 0x649E, 0xD7B2, 0x649F, 0x93D7, 0x64A0, 0x93D8, 0x64A1, 0x93D9, 0x64A2, 0x93DA, + 0x64A3, 0x93DB, 0x64A4, 0xB3B7, 0x64A5, 0x93DC, 0x64A6, 0x93DD, 0x64A7, 0x93DE, 0x64A8, 0x93DF, 0x64A9, 0xC1C3, 0x64AA, 0x93E0, + 0x64AB, 0x93E1, 0x64AC, 0xC7CB, 0x64AD, 0xB2A5, 0x64AE, 0xB4E9, 0x64AF, 0x93E2, 0x64B0, 0xD7AB, 0x64B1, 0x93E3, 0x64B2, 0x93E4, + 0x64B3, 0x93E5, 0x64B4, 0x93E6, 0x64B5, 0xC4EC, 0x64B6, 0x93E7, 0x64B7, 0xDFA2, 0x64B8, 0xDFA3, 0x64B9, 0x93E8, 0x64BA, 0xDFA5, + 0x64BB, 0x93E9, 0x64BC, 0xBAB3, 0x64BD, 0x93EA, 0x64BE, 0x93EB, 0x64BF, 0x93EC, 0x64C0, 0xDFA6, 0x64C1, 0x93ED, 0x64C2, 0xC0DE, + 0x64C3, 0x93EE, 0x64C4, 0x93EF, 0x64C5, 0xC9C3, 0x64C6, 0x93F0, 0x64C7, 0x93F1, 0x64C8, 0x93F2, 0x64C9, 0x93F3, 0x64CA, 0x93F4, + 0x64CB, 0x93F5, 0x64CC, 0x93F6, 0x64CD, 0xB2D9, 0x64CE, 0xC7E6, 0x64CF, 0x93F7, 0x64D0, 0xDFA7, 0x64D1, 0x93F8, 0x64D2, 0xC7DC, + 0x64D3, 0x93F9, 0x64D4, 0x93FA, 0x64D5, 0x93FB, 0x64D6, 0x93FC, 0x64D7, 0xDFA8, 0x64D8, 0xEBA2, 0x64D9, 0x93FD, 0x64DA, 0x93FE, + 0x64DB, 0x9440, 0x64DC, 0x9441, 0x64DD, 0x9442, 0x64DE, 0xCBD3, 0x64DF, 0x9443, 0x64E0, 0x9444, 0x64E1, 0x9445, 0x64E2, 0xDFAA, + 0x64E3, 0x9446, 0x64E4, 0xDFA9, 0x64E5, 0x9447, 0x64E6, 0xB2C1, 0x64E7, 0x9448, 0x64E8, 0x9449, 0x64E9, 0x944A, 0x64EA, 0x944B, + 0x64EB, 0x944C, 0x64EC, 0x944D, 0x64ED, 0x944E, 0x64EE, 0x944F, 0x64EF, 0x9450, 0x64F0, 0x9451, 0x64F1, 0x9452, 0x64F2, 0x9453, + 0x64F3, 0x9454, 0x64F4, 0x9455, 0x64F5, 0x9456, 0x64F6, 0x9457, 0x64F7, 0x9458, 0x64F8, 0x9459, 0x64F9, 0x945A, 0x64FA, 0x945B, + 0x64FB, 0x945C, 0x64FC, 0x945D, 0x64FD, 0x945E, 0x64FE, 0x945F, 0x64FF, 0x9460, 0x6500, 0xC5CA, 0x6501, 0x9461, 0x6502, 0x9462, + 0x6503, 0x9463, 0x6504, 0x9464, 0x6505, 0x9465, 0x6506, 0x9466, 0x6507, 0x9467, 0x6508, 0x9468, 0x6509, 0xDFAB, 0x650A, 0x9469, + 0x650B, 0x946A, 0x650C, 0x946B, 0x650D, 0x946C, 0x650E, 0x946D, 0x650F, 0x946E, 0x6510, 0x946F, 0x6511, 0x9470, 0x6512, 0xD4DC, + 0x6513, 0x9471, 0x6514, 0x9472, 0x6515, 0x9473, 0x6516, 0x9474, 0x6517, 0x9475, 0x6518, 0xC8C1, 0x6519, 0x9476, 0x651A, 0x9477, + 0x651B, 0x9478, 0x651C, 0x9479, 0x651D, 0x947A, 0x651E, 0x947B, 0x651F, 0x947C, 0x6520, 0x947D, 0x6521, 0x947E, 0x6522, 0x9480, + 0x6523, 0x9481, 0x6524, 0x9482, 0x6525, 0xDFAC, 0x6526, 0x9483, 0x6527, 0x9484, 0x6528, 0x9485, 0x6529, 0x9486, 0x652A, 0x9487, + 0x652B, 0xBEF0, 0x652C, 0x9488, 0x652D, 0x9489, 0x652E, 0xDFAD, 0x652F, 0xD6A7, 0x6530, 0x948A, 0x6531, 0x948B, 0x6532, 0x948C, + 0x6533, 0x948D, 0x6534, 0xEAB7, 0x6535, 0xEBB6, 0x6536, 0xCAD5, 0x6537, 0x948E, 0x6538, 0xD8FC, 0x6539, 0xB8C4, 0x653A, 0x948F, + 0x653B, 0xB9A5, 0x653C, 0x9490, 0x653D, 0x9491, 0x653E, 0xB7C5, 0x653F, 0xD5FE, 0x6540, 0x9492, 0x6541, 0x9493, 0x6542, 0x9494, + 0x6543, 0x9495, 0x6544, 0x9496, 0x6545, 0xB9CA, 0x6546, 0x9497, 0x6547, 0x9498, 0x6548, 0xD0A7, 0x6549, 0xF4CD, 0x654A, 0x9499, + 0x654B, 0x949A, 0x654C, 0xB5D0, 0x654D, 0x949B, 0x654E, 0x949C, 0x654F, 0xC3F4, 0x6550, 0x949D, 0x6551, 0xBEC8, 0x6552, 0x949E, + 0x6553, 0x949F, 0x6554, 0x94A0, 0x6555, 0xEBB7, 0x6556, 0xB0BD, 0x6557, 0x94A1, 0x6558, 0x94A2, 0x6559, 0xBDCC, 0x655A, 0x94A3, + 0x655B, 0xC1B2, 0x655C, 0x94A4, 0x655D, 0xB1D6, 0x655E, 0xB3A8, 0x655F, 0x94A5, 0x6560, 0x94A6, 0x6561, 0x94A7, 0x6562, 0xB8D2, + 0x6563, 0xC9A2, 0x6564, 0x94A8, 0x6565, 0x94A9, 0x6566, 0xB6D8, 0x6567, 0x94AA, 0x6568, 0x94AB, 0x6569, 0x94AC, 0x656A, 0x94AD, + 0x656B, 0xEBB8, 0x656C, 0xBEB4, 0x656D, 0x94AE, 0x656E, 0x94AF, 0x656F, 0x94B0, 0x6570, 0xCAFD, 0x6571, 0x94B1, 0x6572, 0xC7C3, + 0x6573, 0x94B2, 0x6574, 0xD5FB, 0x6575, 0x94B3, 0x6576, 0x94B4, 0x6577, 0xB7F3, 0x6578, 0x94B5, 0x6579, 0x94B6, 0x657A, 0x94B7, + 0x657B, 0x94B8, 0x657C, 0x94B9, 0x657D, 0x94BA, 0x657E, 0x94BB, 0x657F, 0x94BC, 0x6580, 0x94BD, 0x6581, 0x94BE, 0x6582, 0x94BF, + 0x6583, 0x94C0, 0x6584, 0x94C1, 0x6585, 0x94C2, 0x6586, 0x94C3, 0x6587, 0xCEC4, 0x6588, 0x94C4, 0x6589, 0x94C5, 0x658A, 0x94C6, + 0x658B, 0xD5AB, 0x658C, 0xB1F3, 0x658D, 0x94C7, 0x658E, 0x94C8, 0x658F, 0x94C9, 0x6590, 0xECB3, 0x6591, 0xB0DF, 0x6592, 0x94CA, + 0x6593, 0xECB5, 0x6594, 0x94CB, 0x6595, 0x94CC, 0x6596, 0x94CD, 0x6597, 0xB6B7, 0x6598, 0x94CE, 0x6599, 0xC1CF, 0x659A, 0x94CF, + 0x659B, 0xF5FA, 0x659C, 0xD0B1, 0x659D, 0x94D0, 0x659E, 0x94D1, 0x659F, 0xD5E5, 0x65A0, 0x94D2, 0x65A1, 0xCED3, 0x65A2, 0x94D3, + 0x65A3, 0x94D4, 0x65A4, 0xBDEF, 0x65A5, 0xB3E2, 0x65A6, 0x94D5, 0x65A7, 0xB8AB, 0x65A8, 0x94D6, 0x65A9, 0xD5B6, 0x65AA, 0x94D7, + 0x65AB, 0xEDBD, 0x65AC, 0x94D8, 0x65AD, 0xB6CF, 0x65AE, 0x94D9, 0x65AF, 0xCBB9, 0x65B0, 0xD0C2, 0x65B1, 0x94DA, 0x65B2, 0x94DB, + 0x65B3, 0x94DC, 0x65B4, 0x94DD, 0x65B5, 0x94DE, 0x65B6, 0x94DF, 0x65B7, 0x94E0, 0x65B8, 0x94E1, 0x65B9, 0xB7BD, 0x65BA, 0x94E2, + 0x65BB, 0x94E3, 0x65BC, 0xECB6, 0x65BD, 0xCAA9, 0x65BE, 0x94E4, 0x65BF, 0x94E5, 0x65C0, 0x94E6, 0x65C1, 0xC5D4, 0x65C2, 0x94E7, + 0x65C3, 0xECB9, 0x65C4, 0xECB8, 0x65C5, 0xC2C3, 0x65C6, 0xECB7, 0x65C7, 0x94E8, 0x65C8, 0x94E9, 0x65C9, 0x94EA, 0x65CA, 0x94EB, + 0x65CB, 0xD0FD, 0x65CC, 0xECBA, 0x65CD, 0x94EC, 0x65CE, 0xECBB, 0x65CF, 0xD7E5, 0x65D0, 0x94ED, 0x65D1, 0x94EE, 0x65D2, 0xECBC, + 0x65D3, 0x94EF, 0x65D4, 0x94F0, 0x65D5, 0x94F1, 0x65D6, 0xECBD, 0x65D7, 0xC6EC, 0x65D8, 0x94F2, 0x65D9, 0x94F3, 0x65DA, 0x94F4, + 0x65DB, 0x94F5, 0x65DC, 0x94F6, 0x65DD, 0x94F7, 0x65DE, 0x94F8, 0x65DF, 0x94F9, 0x65E0, 0xCEDE, 0x65E1, 0x94FA, 0x65E2, 0xBCC8, + 0x65E3, 0x94FB, 0x65E4, 0x94FC, 0x65E5, 0xC8D5, 0x65E6, 0xB5A9, 0x65E7, 0xBEC9, 0x65E8, 0xD6BC, 0x65E9, 0xD4E7, 0x65EA, 0x94FD, + 0x65EB, 0x94FE, 0x65EC, 0xD1AE, 0x65ED, 0xD0F1, 0x65EE, 0xEAB8, 0x65EF, 0xEAB9, 0x65F0, 0xEABA, 0x65F1, 0xBAB5, 0x65F2, 0x9540, + 0x65F3, 0x9541, 0x65F4, 0x9542, 0x65F5, 0x9543, 0x65F6, 0xCAB1, 0x65F7, 0xBFF5, 0x65F8, 0x9544, 0x65F9, 0x9545, 0x65FA, 0xCDFA, + 0x65FB, 0x9546, 0x65FC, 0x9547, 0x65FD, 0x9548, 0x65FE, 0x9549, 0x65FF, 0x954A, 0x6600, 0xEAC0, 0x6601, 0x954B, 0x6602, 0xB0BA, + 0x6603, 0xEABE, 0x6604, 0x954C, 0x6605, 0x954D, 0x6606, 0xC0A5, 0x6607, 0x954E, 0x6608, 0x954F, 0x6609, 0x9550, 0x660A, 0xEABB, + 0x660B, 0x9551, 0x660C, 0xB2FD, 0x660D, 0x9552, 0x660E, 0xC3F7, 0x660F, 0xBBE8, 0x6610, 0x9553, 0x6611, 0x9554, 0x6612, 0x9555, + 0x6613, 0xD2D7, 0x6614, 0xCEF4, 0x6615, 0xEABF, 0x6616, 0x9556, 0x6617, 0x9557, 0x6618, 0x9558, 0x6619, 0xEABC, 0x661A, 0x9559, + 0x661B, 0x955A, 0x661C, 0x955B, 0x661D, 0xEAC3, 0x661E, 0x955C, 0x661F, 0xD0C7, 0x6620, 0xD3B3, 0x6621, 0x955D, 0x6622, 0x955E, + 0x6623, 0x955F, 0x6624, 0x9560, 0x6625, 0xB4BA, 0x6626, 0x9561, 0x6627, 0xC3C1, 0x6628, 0xD7F2, 0x6629, 0x9562, 0x662A, 0x9563, + 0x662B, 0x9564, 0x662C, 0x9565, 0x662D, 0xD5D1, 0x662E, 0x9566, 0x662F, 0xCAC7, 0x6630, 0x9567, 0x6631, 0xEAC5, 0x6632, 0x9568, + 0x6633, 0x9569, 0x6634, 0xEAC4, 0x6635, 0xEAC7, 0x6636, 0xEAC6, 0x6637, 0x956A, 0x6638, 0x956B, 0x6639, 0x956C, 0x663A, 0x956D, + 0x663B, 0x956E, 0x663C, 0xD6E7, 0x663D, 0x956F, 0x663E, 0xCFD4, 0x663F, 0x9570, 0x6640, 0x9571, 0x6641, 0xEACB, 0x6642, 0x9572, + 0x6643, 0xBBCE, 0x6644, 0x9573, 0x6645, 0x9574, 0x6646, 0x9575, 0x6647, 0x9576, 0x6648, 0x9577, 0x6649, 0x9578, 0x664A, 0x9579, + 0x664B, 0xBDFA, 0x664C, 0xC9CE, 0x664D, 0x957A, 0x664E, 0x957B, 0x664F, 0xEACC, 0x6650, 0x957C, 0x6651, 0x957D, 0x6652, 0xC9B9, + 0x6653, 0xCFFE, 0x6654, 0xEACA, 0x6655, 0xD4CE, 0x6656, 0xEACD, 0x6657, 0xEACF, 0x6658, 0x957E, 0x6659, 0x9580, 0x665A, 0xCDED, + 0x665B, 0x9581, 0x665C, 0x9582, 0x665D, 0x9583, 0x665E, 0x9584, 0x665F, 0xEAC9, 0x6660, 0x9585, 0x6661, 0xEACE, 0x6662, 0x9586, + 0x6663, 0x9587, 0x6664, 0xCEEE, 0x6665, 0x9588, 0x6666, 0xBBDE, 0x6667, 0x9589, 0x6668, 0xB3BF, 0x6669, 0x958A, 0x666A, 0x958B, + 0x666B, 0x958C, 0x666C, 0x958D, 0x666D, 0x958E, 0x666E, 0xC6D5, 0x666F, 0xBEB0, 0x6670, 0xCEFA, 0x6671, 0x958F, 0x6672, 0x9590, + 0x6673, 0x9591, 0x6674, 0xC7E7, 0x6675, 0x9592, 0x6676, 0xBEA7, 0x6677, 0xEAD0, 0x6678, 0x9593, 0x6679, 0x9594, 0x667A, 0xD6C7, + 0x667B, 0x9595, 0x667C, 0x9596, 0x667D, 0x9597, 0x667E, 0xC1C0, 0x667F, 0x9598, 0x6680, 0x9599, 0x6681, 0x959A, 0x6682, 0xD4DD, + 0x6683, 0x959B, 0x6684, 0xEAD1, 0x6685, 0x959C, 0x6686, 0x959D, 0x6687, 0xCFBE, 0x6688, 0x959E, 0x6689, 0x959F, 0x668A, 0x95A0, + 0x668B, 0x95A1, 0x668C, 0xEAD2, 0x668D, 0x95A2, 0x668E, 0x95A3, 0x668F, 0x95A4, 0x6690, 0x95A5, 0x6691, 0xCAEE, 0x6692, 0x95A6, + 0x6693, 0x95A7, 0x6694, 0x95A8, 0x6695, 0x95A9, 0x6696, 0xC5AF, 0x6697, 0xB0B5, 0x6698, 0x95AA, 0x6699, 0x95AB, 0x669A, 0x95AC, + 0x669B, 0x95AD, 0x669C, 0x95AE, 0x669D, 0xEAD4, 0x669E, 0x95AF, 0x669F, 0x95B0, 0x66A0, 0x95B1, 0x66A1, 0x95B2, 0x66A2, 0x95B3, + 0x66A3, 0x95B4, 0x66A4, 0x95B5, 0x66A5, 0x95B6, 0x66A6, 0x95B7, 0x66A7, 0xEAD3, 0x66A8, 0xF4DF, 0x66A9, 0x95B8, 0x66AA, 0x95B9, + 0x66AB, 0x95BA, 0x66AC, 0x95BB, 0x66AD, 0x95BC, 0x66AE, 0xC4BA, 0x66AF, 0x95BD, 0x66B0, 0x95BE, 0x66B1, 0x95BF, 0x66B2, 0x95C0, + 0x66B3, 0x95C1, 0x66B4, 0xB1A9, 0x66B5, 0x95C2, 0x66B6, 0x95C3, 0x66B7, 0x95C4, 0x66B8, 0x95C5, 0x66B9, 0xE5DF, 0x66BA, 0x95C6, + 0x66BB, 0x95C7, 0x66BC, 0x95C8, 0x66BD, 0x95C9, 0x66BE, 0xEAD5, 0x66BF, 0x95CA, 0x66C0, 0x95CB, 0x66C1, 0x95CC, 0x66C2, 0x95CD, + 0x66C3, 0x95CE, 0x66C4, 0x95CF, 0x66C5, 0x95D0, 0x66C6, 0x95D1, 0x66C7, 0x95D2, 0x66C8, 0x95D3, 0x66C9, 0x95D4, 0x66CA, 0x95D5, + 0x66CB, 0x95D6, 0x66CC, 0x95D7, 0x66CD, 0x95D8, 0x66CE, 0x95D9, 0x66CF, 0x95DA, 0x66D0, 0x95DB, 0x66D1, 0x95DC, 0x66D2, 0x95DD, + 0x66D3, 0x95DE, 0x66D4, 0x95DF, 0x66D5, 0x95E0, 0x66D6, 0x95E1, 0x66D7, 0x95E2, 0x66D8, 0x95E3, 0x66D9, 0xCAEF, 0x66DA, 0x95E4, + 0x66DB, 0xEAD6, 0x66DC, 0xEAD7, 0x66DD, 0xC6D8, 0x66DE, 0x95E5, 0x66DF, 0x95E6, 0x66E0, 0x95E7, 0x66E1, 0x95E8, 0x66E2, 0x95E9, + 0x66E3, 0x95EA, 0x66E4, 0x95EB, 0x66E5, 0x95EC, 0x66E6, 0xEAD8, 0x66E7, 0x95ED, 0x66E8, 0x95EE, 0x66E9, 0xEAD9, 0x66EA, 0x95EF, + 0x66EB, 0x95F0, 0x66EC, 0x95F1, 0x66ED, 0x95F2, 0x66EE, 0x95F3, 0x66EF, 0x95F4, 0x66F0, 0xD4BB, 0x66F1, 0x95F5, 0x66F2, 0xC7FA, + 0x66F3, 0xD2B7, 0x66F4, 0xB8FC, 0x66F5, 0x95F6, 0x66F6, 0x95F7, 0x66F7, 0xEAC2, 0x66F8, 0x95F8, 0x66F9, 0xB2DC, 0x66FA, 0x95F9, + 0x66FB, 0x95FA, 0x66FC, 0xC2FC, 0x66FD, 0x95FB, 0x66FE, 0xD4F8, 0x66FF, 0xCCE6, 0x6700, 0xD7EE, 0x6701, 0x95FC, 0x6702, 0x95FD, + 0x6703, 0x95FE, 0x6704, 0x9640, 0x6705, 0x9641, 0x6706, 0x9642, 0x6707, 0x9643, 0x6708, 0xD4C2, 0x6709, 0xD3D0, 0x670A, 0xEBC3, + 0x670B, 0xC5F3, 0x670C, 0x9644, 0x670D, 0xB7FE, 0x670E, 0x9645, 0x670F, 0x9646, 0x6710, 0xEBD4, 0x6711, 0x9647, 0x6712, 0x9648, + 0x6713, 0x9649, 0x6714, 0xCBB7, 0x6715, 0xEBDE, 0x6716, 0x964A, 0x6717, 0xC0CA, 0x6718, 0x964B, 0x6719, 0x964C, 0x671A, 0x964D, + 0x671B, 0xCDFB, 0x671C, 0x964E, 0x671D, 0xB3AF, 0x671E, 0x964F, 0x671F, 0xC6DA, 0x6720, 0x9650, 0x6721, 0x9651, 0x6722, 0x9652, + 0x6723, 0x9653, 0x6724, 0x9654, 0x6725, 0x9655, 0x6726, 0xEBFC, 0x6727, 0x9656, 0x6728, 0xC4BE, 0x6729, 0x9657, 0x672A, 0xCEB4, + 0x672B, 0xC4A9, 0x672C, 0xB1BE, 0x672D, 0xD4FD, 0x672E, 0x9658, 0x672F, 0xCAF5, 0x6730, 0x9659, 0x6731, 0xD6EC, 0x6732, 0x965A, + 0x6733, 0x965B, 0x6734, 0xC6D3, 0x6735, 0xB6E4, 0x6736, 0x965C, 0x6737, 0x965D, 0x6738, 0x965E, 0x6739, 0x965F, 0x673A, 0xBBFA, + 0x673B, 0x9660, 0x673C, 0x9661, 0x673D, 0xD0E0, 0x673E, 0x9662, 0x673F, 0x9663, 0x6740, 0xC9B1, 0x6741, 0x9664, 0x6742, 0xD4D3, + 0x6743, 0xC8A8, 0x6744, 0x9665, 0x6745, 0x9666, 0x6746, 0xB8CB, 0x6747, 0x9667, 0x6748, 0xE8BE, 0x6749, 0xC9BC, 0x674A, 0x9668, + 0x674B, 0x9669, 0x674C, 0xE8BB, 0x674D, 0x966A, 0x674E, 0xC0EE, 0x674F, 0xD0D3, 0x6750, 0xB2C4, 0x6751, 0xB4E5, 0x6752, 0x966B, + 0x6753, 0xE8BC, 0x6754, 0x966C, 0x6755, 0x966D, 0x6756, 0xD5C8, 0x6757, 0x966E, 0x6758, 0x966F, 0x6759, 0x9670, 0x675A, 0x9671, + 0x675B, 0x9672, 0x675C, 0xB6C5, 0x675D, 0x9673, 0x675E, 0xE8BD, 0x675F, 0xCAF8, 0x6760, 0xB8DC, 0x6761, 0xCCF5, 0x6762, 0x9674, + 0x6763, 0x9675, 0x6764, 0x9676, 0x6765, 0xC0B4, 0x6766, 0x9677, 0x6767, 0x9678, 0x6768, 0xD1EE, 0x6769, 0xE8BF, 0x676A, 0xE8C2, + 0x676B, 0x9679, 0x676C, 0x967A, 0x676D, 0xBABC, 0x676E, 0x967B, 0x676F, 0xB1AD, 0x6770, 0xBDDC, 0x6771, 0x967C, 0x6772, 0xEABD, + 0x6773, 0xE8C3, 0x6774, 0x967D, 0x6775, 0xE8C6, 0x6776, 0x967E, 0x6777, 0xE8CB, 0x6778, 0x9680, 0x6779, 0x9681, 0x677A, 0x9682, + 0x677B, 0x9683, 0x677C, 0xE8CC, 0x677D, 0x9684, 0x677E, 0xCBC9, 0x677F, 0xB0E5, 0x6780, 0x9685, 0x6781, 0xBCAB, 0x6782, 0x9686, + 0x6783, 0x9687, 0x6784, 0xB9B9, 0x6785, 0x9688, 0x6786, 0x9689, 0x6787, 0xE8C1, 0x6788, 0x968A, 0x6789, 0xCDF7, 0x678A, 0x968B, + 0x678B, 0xE8CA, 0x678C, 0x968C, 0x678D, 0x968D, 0x678E, 0x968E, 0x678F, 0x968F, 0x6790, 0xCEF6, 0x6791, 0x9690, 0x6792, 0x9691, + 0x6793, 0x9692, 0x6794, 0x9693, 0x6795, 0xD5ED, 0x6796, 0x9694, 0x6797, 0xC1D6, 0x6798, 0xE8C4, 0x6799, 0x9695, 0x679A, 0xC3B6, + 0x679B, 0x9696, 0x679C, 0xB9FB, 0x679D, 0xD6A6, 0x679E, 0xE8C8, 0x679F, 0x9697, 0x67A0, 0x9698, 0x67A1, 0x9699, 0x67A2, 0xCAE0, + 0x67A3, 0xD4E6, 0x67A4, 0x969A, 0x67A5, 0xE8C0, 0x67A6, 0x969B, 0x67A7, 0xE8C5, 0x67A8, 0xE8C7, 0x67A9, 0x969C, 0x67AA, 0xC7B9, + 0x67AB, 0xB7E3, 0x67AC, 0x969D, 0x67AD, 0xE8C9, 0x67AE, 0x969E, 0x67AF, 0xBFDD, 0x67B0, 0xE8D2, 0x67B1, 0x969F, 0x67B2, 0x96A0, + 0x67B3, 0xE8D7, 0x67B4, 0x96A1, 0x67B5, 0xE8D5, 0x67B6, 0xBCDC, 0x67B7, 0xBCCF, 0x67B8, 0xE8DB, 0x67B9, 0x96A2, 0x67BA, 0x96A3, + 0x67BB, 0x96A4, 0x67BC, 0x96A5, 0x67BD, 0x96A6, 0x67BE, 0x96A7, 0x67BF, 0x96A8, 0x67C0, 0x96A9, 0x67C1, 0xE8DE, 0x67C2, 0x96AA, + 0x67C3, 0xE8DA, 0x67C4, 0xB1FA, 0x67C5, 0x96AB, 0x67C6, 0x96AC, 0x67C7, 0x96AD, 0x67C8, 0x96AE, 0x67C9, 0x96AF, 0x67CA, 0x96B0, + 0x67CB, 0x96B1, 0x67CC, 0x96B2, 0x67CD, 0x96B3, 0x67CE, 0x96B4, 0x67CF, 0xB0D8, 0x67D0, 0xC4B3, 0x67D1, 0xB8CC, 0x67D2, 0xC6E2, + 0x67D3, 0xC8BE, 0x67D4, 0xC8E1, 0x67D5, 0x96B5, 0x67D6, 0x96B6, 0x67D7, 0x96B7, 0x67D8, 0xE8CF, 0x67D9, 0xE8D4, 0x67DA, 0xE8D6, + 0x67DB, 0x96B8, 0x67DC, 0xB9F1, 0x67DD, 0xE8D8, 0x67DE, 0xD7F5, 0x67DF, 0x96B9, 0x67E0, 0xC4FB, 0x67E1, 0x96BA, 0x67E2, 0xE8DC, + 0x67E3, 0x96BB, 0x67E4, 0x96BC, 0x67E5, 0xB2E9, 0x67E6, 0x96BD, 0x67E7, 0x96BE, 0x67E8, 0x96BF, 0x67E9, 0xE8D1, 0x67EA, 0x96C0, + 0x67EB, 0x96C1, 0x67EC, 0xBCED, 0x67ED, 0x96C2, 0x67EE, 0x96C3, 0x67EF, 0xBFC2, 0x67F0, 0xE8CD, 0x67F1, 0xD6F9, 0x67F2, 0x96C4, + 0x67F3, 0xC1F8, 0x67F4, 0xB2F1, 0x67F5, 0x96C5, 0x67F6, 0x96C6, 0x67F7, 0x96C7, 0x67F8, 0x96C8, 0x67F9, 0x96C9, 0x67FA, 0x96CA, + 0x67FB, 0x96CB, 0x67FC, 0x96CC, 0x67FD, 0xE8DF, 0x67FE, 0x96CD, 0x67FF, 0xCAC1, 0x6800, 0xE8D9, 0x6801, 0x96CE, 0x6802, 0x96CF, + 0x6803, 0x96D0, 0x6804, 0x96D1, 0x6805, 0xD5A4, 0x6806, 0x96D2, 0x6807, 0xB1EA, 0x6808, 0xD5BB, 0x6809, 0xE8CE, 0x680A, 0xE8D0, + 0x680B, 0xB6B0, 0x680C, 0xE8D3, 0x680D, 0x96D3, 0x680E, 0xE8DD, 0x680F, 0xC0B8, 0x6810, 0x96D4, 0x6811, 0xCAF7, 0x6812, 0x96D5, + 0x6813, 0xCBA8, 0x6814, 0x96D6, 0x6815, 0x96D7, 0x6816, 0xC6DC, 0x6817, 0xC0F5, 0x6818, 0x96D8, 0x6819, 0x96D9, 0x681A, 0x96DA, + 0x681B, 0x96DB, 0x681C, 0x96DC, 0x681D, 0xE8E9, 0x681E, 0x96DD, 0x681F, 0x96DE, 0x6820, 0x96DF, 0x6821, 0xD0A3, 0x6822, 0x96E0, + 0x6823, 0x96E1, 0x6824, 0x96E2, 0x6825, 0x96E3, 0x6826, 0x96E4, 0x6827, 0x96E5, 0x6828, 0x96E6, 0x6829, 0xE8F2, 0x682A, 0xD6EA, + 0x682B, 0x96E7, 0x682C, 0x96E8, 0x682D, 0x96E9, 0x682E, 0x96EA, 0x682F, 0x96EB, 0x6830, 0x96EC, 0x6831, 0x96ED, 0x6832, 0xE8E0, + 0x6833, 0xE8E1, 0x6834, 0x96EE, 0x6835, 0x96EF, 0x6836, 0x96F0, 0x6837, 0xD1F9, 0x6838, 0xBACB, 0x6839, 0xB8F9, 0x683A, 0x96F1, + 0x683B, 0x96F2, 0x683C, 0xB8F1, 0x683D, 0xD4D4, 0x683E, 0xE8EF, 0x683F, 0x96F3, 0x6840, 0xE8EE, 0x6841, 0xE8EC, 0x6842, 0xB9F0, + 0x6843, 0xCCD2, 0x6844, 0xE8E6, 0x6845, 0xCEA6, 0x6846, 0xBFF2, 0x6847, 0x96F4, 0x6848, 0xB0B8, 0x6849, 0xE8F1, 0x684A, 0xE8F0, + 0x684B, 0x96F5, 0x684C, 0xD7C0, 0x684D, 0x96F6, 0x684E, 0xE8E4, 0x684F, 0x96F7, 0x6850, 0xCDA9, 0x6851, 0xC9A3, 0x6852, 0x96F8, + 0x6853, 0xBBB8, 0x6854, 0xBDDB, 0x6855, 0xE8EA, 0x6856, 0x96F9, 0x6857, 0x96FA, 0x6858, 0x96FB, 0x6859, 0x96FC, 0x685A, 0x96FD, + 0x685B, 0x96FE, 0x685C, 0x9740, 0x685D, 0x9741, 0x685E, 0x9742, 0x685F, 0x9743, 0x6860, 0xE8E2, 0x6861, 0xE8E3, 0x6862, 0xE8E5, + 0x6863, 0xB5B5, 0x6864, 0xE8E7, 0x6865, 0xC7C5, 0x6866, 0xE8EB, 0x6867, 0xE8ED, 0x6868, 0xBDB0, 0x6869, 0xD7AE, 0x686A, 0x9744, + 0x686B, 0xE8F8, 0x686C, 0x9745, 0x686D, 0x9746, 0x686E, 0x9747, 0x686F, 0x9748, 0x6870, 0x9749, 0x6871, 0x974A, 0x6872, 0x974B, + 0x6873, 0x974C, 0x6874, 0xE8F5, 0x6875, 0x974D, 0x6876, 0xCDB0, 0x6877, 0xE8F6, 0x6878, 0x974E, 0x6879, 0x974F, 0x687A, 0x9750, + 0x687B, 0x9751, 0x687C, 0x9752, 0x687D, 0x9753, 0x687E, 0x9754, 0x687F, 0x9755, 0x6880, 0x9756, 0x6881, 0xC1BA, 0x6882, 0x9757, + 0x6883, 0xE8E8, 0x6884, 0x9758, 0x6885, 0xC3B7, 0x6886, 0xB0F0, 0x6887, 0x9759, 0x6888, 0x975A, 0x6889, 0x975B, 0x688A, 0x975C, + 0x688B, 0x975D, 0x688C, 0x975E, 0x688D, 0x975F, 0x688E, 0x9760, 0x688F, 0xE8F4, 0x6890, 0x9761, 0x6891, 0x9762, 0x6892, 0x9763, + 0x6893, 0xE8F7, 0x6894, 0x9764, 0x6895, 0x9765, 0x6896, 0x9766, 0x6897, 0xB9A3, 0x6898, 0x9767, 0x6899, 0x9768, 0x689A, 0x9769, + 0x689B, 0x976A, 0x689C, 0x976B, 0x689D, 0x976C, 0x689E, 0x976D, 0x689F, 0x976E, 0x68A0, 0x976F, 0x68A1, 0x9770, 0x68A2, 0xC9D2, + 0x68A3, 0x9771, 0x68A4, 0x9772, 0x68A5, 0x9773, 0x68A6, 0xC3CE, 0x68A7, 0xCEE0, 0x68A8, 0xC0E6, 0x68A9, 0x9774, 0x68AA, 0x9775, + 0x68AB, 0x9776, 0x68AC, 0x9777, 0x68AD, 0xCBF3, 0x68AE, 0x9778, 0x68AF, 0xCCDD, 0x68B0, 0xD0B5, 0x68B1, 0x9779, 0x68B2, 0x977A, + 0x68B3, 0xCAE1, 0x68B4, 0x977B, 0x68B5, 0xE8F3, 0x68B6, 0x977C, 0x68B7, 0x977D, 0x68B8, 0x977E, 0x68B9, 0x9780, 0x68BA, 0x9781, + 0x68BB, 0x9782, 0x68BC, 0x9783, 0x68BD, 0x9784, 0x68BE, 0x9785, 0x68BF, 0x9786, 0x68C0, 0xBCEC, 0x68C1, 0x9787, 0x68C2, 0xE8F9, + 0x68C3, 0x9788, 0x68C4, 0x9789, 0x68C5, 0x978A, 0x68C6, 0x978B, 0x68C7, 0x978C, 0x68C8, 0x978D, 0x68C9, 0xC3DE, 0x68CA, 0x978E, + 0x68CB, 0xC6E5, 0x68CC, 0x978F, 0x68CD, 0xB9F7, 0x68CE, 0x9790, 0x68CF, 0x9791, 0x68D0, 0x9792, 0x68D1, 0x9793, 0x68D2, 0xB0F4, + 0x68D3, 0x9794, 0x68D4, 0x9795, 0x68D5, 0xD7D8, 0x68D6, 0x9796, 0x68D7, 0x9797, 0x68D8, 0xBCAC, 0x68D9, 0x9798, 0x68DA, 0xC5EF, + 0x68DB, 0x9799, 0x68DC, 0x979A, 0x68DD, 0x979B, 0x68DE, 0x979C, 0x68DF, 0x979D, 0x68E0, 0xCCC4, 0x68E1, 0x979E, 0x68E2, 0x979F, + 0x68E3, 0xE9A6, 0x68E4, 0x97A0, 0x68E5, 0x97A1, 0x68E6, 0x97A2, 0x68E7, 0x97A3, 0x68E8, 0x97A4, 0x68E9, 0x97A5, 0x68EA, 0x97A6, + 0x68EB, 0x97A7, 0x68EC, 0x97A8, 0x68ED, 0x97A9, 0x68EE, 0xC9AD, 0x68EF, 0x97AA, 0x68F0, 0xE9A2, 0x68F1, 0xC0E2, 0x68F2, 0x97AB, + 0x68F3, 0x97AC, 0x68F4, 0x97AD, 0x68F5, 0xBFC3, 0x68F6, 0x97AE, 0x68F7, 0x97AF, 0x68F8, 0x97B0, 0x68F9, 0xE8FE, 0x68FA, 0xB9D7, + 0x68FB, 0x97B1, 0x68FC, 0xE8FB, 0x68FD, 0x97B2, 0x68FE, 0x97B3, 0x68FF, 0x97B4, 0x6900, 0x97B5, 0x6901, 0xE9A4, 0x6902, 0x97B6, + 0x6903, 0x97B7, 0x6904, 0x97B8, 0x6905, 0xD2CE, 0x6906, 0x97B9, 0x6907, 0x97BA, 0x6908, 0x97BB, 0x6909, 0x97BC, 0x690A, 0x97BD, + 0x690B, 0xE9A3, 0x690C, 0x97BE, 0x690D, 0xD6B2, 0x690E, 0xD7B5, 0x690F, 0x97BF, 0x6910, 0xE9A7, 0x6911, 0x97C0, 0x6912, 0xBDB7, + 0x6913, 0x97C1, 0x6914, 0x97C2, 0x6915, 0x97C3, 0x6916, 0x97C4, 0x6917, 0x97C5, 0x6918, 0x97C6, 0x6919, 0x97C7, 0x691A, 0x97C8, + 0x691B, 0x97C9, 0x691C, 0x97CA, 0x691D, 0x97CB, 0x691E, 0x97CC, 0x691F, 0xE8FC, 0x6920, 0xE8FD, 0x6921, 0x97CD, 0x6922, 0x97CE, + 0x6923, 0x97CF, 0x6924, 0xE9A1, 0x6925, 0x97D0, 0x6926, 0x97D1, 0x6927, 0x97D2, 0x6928, 0x97D3, 0x6929, 0x97D4, 0x692A, 0x97D5, + 0x692B, 0x97D6, 0x692C, 0x97D7, 0x692D, 0xCDD6, 0x692E, 0x97D8, 0x692F, 0x97D9, 0x6930, 0xD2AC, 0x6931, 0x97DA, 0x6932, 0x97DB, + 0x6933, 0x97DC, 0x6934, 0xE9B2, 0x6935, 0x97DD, 0x6936, 0x97DE, 0x6937, 0x97DF, 0x6938, 0x97E0, 0x6939, 0xE9A9, 0x693A, 0x97E1, + 0x693B, 0x97E2, 0x693C, 0x97E3, 0x693D, 0xB4AA, 0x693E, 0x97E4, 0x693F, 0xB4BB, 0x6940, 0x97E5, 0x6941, 0x97E6, 0x6942, 0xE9AB, + 0x6943, 0x97E7, 0x6944, 0x97E8, 0x6945, 0x97E9, 0x6946, 0x97EA, 0x6947, 0x97EB, 0x6948, 0x97EC, 0x6949, 0x97ED, 0x694A, 0x97EE, + 0x694B, 0x97EF, 0x694C, 0x97F0, 0x694D, 0x97F1, 0x694E, 0x97F2, 0x694F, 0x97F3, 0x6950, 0x97F4, 0x6951, 0x97F5, 0x6952, 0x97F6, + 0x6953, 0x97F7, 0x6954, 0xD0A8, 0x6955, 0x97F8, 0x6956, 0x97F9, 0x6957, 0xE9A5, 0x6958, 0x97FA, 0x6959, 0x97FB, 0x695A, 0xB3FE, + 0x695B, 0x97FC, 0x695C, 0x97FD, 0x695D, 0xE9AC, 0x695E, 0xC0E3, 0x695F, 0x97FE, 0x6960, 0xE9AA, 0x6961, 0x9840, 0x6962, 0x9841, + 0x6963, 0xE9B9, 0x6964, 0x9842, 0x6965, 0x9843, 0x6966, 0xE9B8, 0x6967, 0x9844, 0x6968, 0x9845, 0x6969, 0x9846, 0x696A, 0x9847, + 0x696B, 0xE9AE, 0x696C, 0x9848, 0x696D, 0x9849, 0x696E, 0xE8FA, 0x696F, 0x984A, 0x6970, 0x984B, 0x6971, 0xE9A8, 0x6972, 0x984C, + 0x6973, 0x984D, 0x6974, 0x984E, 0x6975, 0x984F, 0x6976, 0x9850, 0x6977, 0xBFAC, 0x6978, 0xE9B1, 0x6979, 0xE9BA, 0x697A, 0x9851, + 0x697B, 0x9852, 0x697C, 0xC2A5, 0x697D, 0x9853, 0x697E, 0x9854, 0x697F, 0x9855, 0x6980, 0xE9AF, 0x6981, 0x9856, 0x6982, 0xB8C5, + 0x6983, 0x9857, 0x6984, 0xE9AD, 0x6985, 0x9858, 0x6986, 0xD3DC, 0x6987, 0xE9B4, 0x6988, 0xE9B5, 0x6989, 0xE9B7, 0x698A, 0x9859, + 0x698B, 0x985A, 0x698C, 0x985B, 0x698D, 0xE9C7, 0x698E, 0x985C, 0x698F, 0x985D, 0x6990, 0x985E, 0x6991, 0x985F, 0x6992, 0x9860, + 0x6993, 0x9861, 0x6994, 0xC0C6, 0x6995, 0xE9C5, 0x6996, 0x9862, 0x6997, 0x9863, 0x6998, 0xE9B0, 0x6999, 0x9864, 0x699A, 0x9865, + 0x699B, 0xE9BB, 0x699C, 0xB0F1, 0x699D, 0x9866, 0x699E, 0x9867, 0x699F, 0x9868, 0x69A0, 0x9869, 0x69A1, 0x986A, 0x69A2, 0x986B, + 0x69A3, 0x986C, 0x69A4, 0x986D, 0x69A5, 0x986E, 0x69A6, 0x986F, 0x69A7, 0xE9BC, 0x69A8, 0xD5A5, 0x69A9, 0x9870, 0x69AA, 0x9871, + 0x69AB, 0xE9BE, 0x69AC, 0x9872, 0x69AD, 0xE9BF, 0x69AE, 0x9873, 0x69AF, 0x9874, 0x69B0, 0x9875, 0x69B1, 0xE9C1, 0x69B2, 0x9876, + 0x69B3, 0x9877, 0x69B4, 0xC1F1, 0x69B5, 0x9878, 0x69B6, 0x9879, 0x69B7, 0xC8B6, 0x69B8, 0x987A, 0x69B9, 0x987B, 0x69BA, 0x987C, + 0x69BB, 0xE9BD, 0x69BC, 0x987D, 0x69BD, 0x987E, 0x69BE, 0x9880, 0x69BF, 0x9881, 0x69C0, 0x9882, 0x69C1, 0xE9C2, 0x69C2, 0x9883, + 0x69C3, 0x9884, 0x69C4, 0x9885, 0x69C5, 0x9886, 0x69C6, 0x9887, 0x69C7, 0x9888, 0x69C8, 0x9889, 0x69C9, 0x988A, 0x69CA, 0xE9C3, + 0x69CB, 0x988B, 0x69CC, 0xE9B3, 0x69CD, 0x988C, 0x69CE, 0xE9B6, 0x69CF, 0x988D, 0x69D0, 0xBBB1, 0x69D1, 0x988E, 0x69D2, 0x988F, + 0x69D3, 0x9890, 0x69D4, 0xE9C0, 0x69D5, 0x9891, 0x69D6, 0x9892, 0x69D7, 0x9893, 0x69D8, 0x9894, 0x69D9, 0x9895, 0x69DA, 0x9896, + 0x69DB, 0xBCF7, 0x69DC, 0x9897, 0x69DD, 0x9898, 0x69DE, 0x9899, 0x69DF, 0xE9C4, 0x69E0, 0xE9C6, 0x69E1, 0x989A, 0x69E2, 0x989B, + 0x69E3, 0x989C, 0x69E4, 0x989D, 0x69E5, 0x989E, 0x69E6, 0x989F, 0x69E7, 0x98A0, 0x69E8, 0x98A1, 0x69E9, 0x98A2, 0x69EA, 0x98A3, + 0x69EB, 0x98A4, 0x69EC, 0x98A5, 0x69ED, 0xE9CA, 0x69EE, 0x98A6, 0x69EF, 0x98A7, 0x69F0, 0x98A8, 0x69F1, 0x98A9, 0x69F2, 0xE9CE, + 0x69F3, 0x98AA, 0x69F4, 0x98AB, 0x69F5, 0x98AC, 0x69F6, 0x98AD, 0x69F7, 0x98AE, 0x69F8, 0x98AF, 0x69F9, 0x98B0, 0x69FA, 0x98B1, + 0x69FB, 0x98B2, 0x69FC, 0x98B3, 0x69FD, 0xB2DB, 0x69FE, 0x98B4, 0x69FF, 0xE9C8, 0x6A00, 0x98B5, 0x6A01, 0x98B6, 0x6A02, 0x98B7, + 0x6A03, 0x98B8, 0x6A04, 0x98B9, 0x6A05, 0x98BA, 0x6A06, 0x98BB, 0x6A07, 0x98BC, 0x6A08, 0x98BD, 0x6A09, 0x98BE, 0x6A0A, 0xB7AE, + 0x6A0B, 0x98BF, 0x6A0C, 0x98C0, 0x6A0D, 0x98C1, 0x6A0E, 0x98C2, 0x6A0F, 0x98C3, 0x6A10, 0x98C4, 0x6A11, 0x98C5, 0x6A12, 0x98C6, + 0x6A13, 0x98C7, 0x6A14, 0x98C8, 0x6A15, 0x98C9, 0x6A16, 0x98CA, 0x6A17, 0xE9CB, 0x6A18, 0xE9CC, 0x6A19, 0x98CB, 0x6A1A, 0x98CC, + 0x6A1B, 0x98CD, 0x6A1C, 0x98CE, 0x6A1D, 0x98CF, 0x6A1E, 0x98D0, 0x6A1F, 0xD5C1, 0x6A20, 0x98D1, 0x6A21, 0xC4A3, 0x6A22, 0x98D2, + 0x6A23, 0x98D3, 0x6A24, 0x98D4, 0x6A25, 0x98D5, 0x6A26, 0x98D6, 0x6A27, 0x98D7, 0x6A28, 0xE9D8, 0x6A29, 0x98D8, 0x6A2A, 0xBAE1, + 0x6A2B, 0x98D9, 0x6A2C, 0x98DA, 0x6A2D, 0x98DB, 0x6A2E, 0x98DC, 0x6A2F, 0xE9C9, 0x6A30, 0x98DD, 0x6A31, 0xD3A3, 0x6A32, 0x98DE, + 0x6A33, 0x98DF, 0x6A34, 0x98E0, 0x6A35, 0xE9D4, 0x6A36, 0x98E1, 0x6A37, 0x98E2, 0x6A38, 0x98E3, 0x6A39, 0x98E4, 0x6A3A, 0x98E5, + 0x6A3B, 0x98E6, 0x6A3C, 0x98E7, 0x6A3D, 0xE9D7, 0x6A3E, 0xE9D0, 0x6A3F, 0x98E8, 0x6A40, 0x98E9, 0x6A41, 0x98EA, 0x6A42, 0x98EB, + 0x6A43, 0x98EC, 0x6A44, 0xE9CF, 0x6A45, 0x98ED, 0x6A46, 0x98EE, 0x6A47, 0xC7C1, 0x6A48, 0x98EF, 0x6A49, 0x98F0, 0x6A4A, 0x98F1, + 0x6A4B, 0x98F2, 0x6A4C, 0x98F3, 0x6A4D, 0x98F4, 0x6A4E, 0x98F5, 0x6A4F, 0x98F6, 0x6A50, 0xE9D2, 0x6A51, 0x98F7, 0x6A52, 0x98F8, + 0x6A53, 0x98F9, 0x6A54, 0x98FA, 0x6A55, 0x98FB, 0x6A56, 0x98FC, 0x6A57, 0x98FD, 0x6A58, 0xE9D9, 0x6A59, 0xB3C8, 0x6A5A, 0x98FE, + 0x6A5B, 0xE9D3, 0x6A5C, 0x9940, 0x6A5D, 0x9941, 0x6A5E, 0x9942, 0x6A5F, 0x9943, 0x6A60, 0x9944, 0x6A61, 0xCFF0, 0x6A62, 0x9945, + 0x6A63, 0x9946, 0x6A64, 0x9947, 0x6A65, 0xE9CD, 0x6A66, 0x9948, 0x6A67, 0x9949, 0x6A68, 0x994A, 0x6A69, 0x994B, 0x6A6A, 0x994C, + 0x6A6B, 0x994D, 0x6A6C, 0x994E, 0x6A6D, 0x994F, 0x6A6E, 0x9950, 0x6A6F, 0x9951, 0x6A70, 0x9952, 0x6A71, 0xB3F7, 0x6A72, 0x9953, + 0x6A73, 0x9954, 0x6A74, 0x9955, 0x6A75, 0x9956, 0x6A76, 0x9957, 0x6A77, 0x9958, 0x6A78, 0x9959, 0x6A79, 0xE9D6, 0x6A7A, 0x995A, + 0x6A7B, 0x995B, 0x6A7C, 0xE9DA, 0x6A7D, 0x995C, 0x6A7E, 0x995D, 0x6A7F, 0x995E, 0x6A80, 0xCCB4, 0x6A81, 0x995F, 0x6A82, 0x9960, + 0x6A83, 0x9961, 0x6A84, 0xCFAD, 0x6A85, 0x9962, 0x6A86, 0x9963, 0x6A87, 0x9964, 0x6A88, 0x9965, 0x6A89, 0x9966, 0x6A8A, 0x9967, + 0x6A8B, 0x9968, 0x6A8C, 0x9969, 0x6A8D, 0x996A, 0x6A8E, 0xE9D5, 0x6A8F, 0x996B, 0x6A90, 0xE9DC, 0x6A91, 0xE9DB, 0x6A92, 0x996C, + 0x6A93, 0x996D, 0x6A94, 0x996E, 0x6A95, 0x996F, 0x6A96, 0x9970, 0x6A97, 0xE9DE, 0x6A98, 0x9971, 0x6A99, 0x9972, 0x6A9A, 0x9973, + 0x6A9B, 0x9974, 0x6A9C, 0x9975, 0x6A9D, 0x9976, 0x6A9E, 0x9977, 0x6A9F, 0x9978, 0x6AA0, 0xE9D1, 0x6AA1, 0x9979, 0x6AA2, 0x997A, + 0x6AA3, 0x997B, 0x6AA4, 0x997C, 0x6AA5, 0x997D, 0x6AA6, 0x997E, 0x6AA7, 0x9980, 0x6AA8, 0x9981, 0x6AA9, 0xE9DD, 0x6AAA, 0x9982, + 0x6AAB, 0xE9DF, 0x6AAC, 0xC3CA, 0x6AAD, 0x9983, 0x6AAE, 0x9984, 0x6AAF, 0x9985, 0x6AB0, 0x9986, 0x6AB1, 0x9987, 0x6AB2, 0x9988, + 0x6AB3, 0x9989, 0x6AB4, 0x998A, 0x6AB5, 0x998B, 0x6AB6, 0x998C, 0x6AB7, 0x998D, 0x6AB8, 0x998E, 0x6AB9, 0x998F, 0x6ABA, 0x9990, + 0x6ABB, 0x9991, 0x6ABC, 0x9992, 0x6ABD, 0x9993, 0x6ABE, 0x9994, 0x6ABF, 0x9995, 0x6AC0, 0x9996, 0x6AC1, 0x9997, 0x6AC2, 0x9998, + 0x6AC3, 0x9999, 0x6AC4, 0x999A, 0x6AC5, 0x999B, 0x6AC6, 0x999C, 0x6AC7, 0x999D, 0x6AC8, 0x999E, 0x6AC9, 0x999F, 0x6ACA, 0x99A0, + 0x6ACB, 0x99A1, 0x6ACC, 0x99A2, 0x6ACD, 0x99A3, 0x6ACE, 0x99A4, 0x6ACF, 0x99A5, 0x6AD0, 0x99A6, 0x6AD1, 0x99A7, 0x6AD2, 0x99A8, + 0x6AD3, 0x99A9, 0x6AD4, 0x99AA, 0x6AD5, 0x99AB, 0x6AD6, 0x99AC, 0x6AD7, 0x99AD, 0x6AD8, 0x99AE, 0x6AD9, 0x99AF, 0x6ADA, 0x99B0, + 0x6ADB, 0x99B1, 0x6ADC, 0x99B2, 0x6ADD, 0x99B3, 0x6ADE, 0x99B4, 0x6ADF, 0x99B5, 0x6AE0, 0x99B6, 0x6AE1, 0x99B7, 0x6AE2, 0x99B8, + 0x6AE3, 0x99B9, 0x6AE4, 0x99BA, 0x6AE5, 0x99BB, 0x6AE6, 0x99BC, 0x6AE7, 0x99BD, 0x6AE8, 0x99BE, 0x6AE9, 0x99BF, 0x6AEA, 0x99C0, + 0x6AEB, 0x99C1, 0x6AEC, 0x99C2, 0x6AED, 0x99C3, 0x6AEE, 0x99C4, 0x6AEF, 0x99C5, 0x6AF0, 0x99C6, 0x6AF1, 0x99C7, 0x6AF2, 0x99C8, + 0x6AF3, 0x99C9, 0x6AF4, 0x99CA, 0x6AF5, 0x99CB, 0x6AF6, 0x99CC, 0x6AF7, 0x99CD, 0x6AF8, 0x99CE, 0x6AF9, 0x99CF, 0x6AFA, 0x99D0, + 0x6AFB, 0x99D1, 0x6AFC, 0x99D2, 0x6AFD, 0x99D3, 0x6AFE, 0x99D4, 0x6AFF, 0x99D5, 0x6B00, 0x99D6, 0x6B01, 0x99D7, 0x6B02, 0x99D8, + 0x6B03, 0x99D9, 0x6B04, 0x99DA, 0x6B05, 0x99DB, 0x6B06, 0x99DC, 0x6B07, 0x99DD, 0x6B08, 0x99DE, 0x6B09, 0x99DF, 0x6B0A, 0x99E0, + 0x6B0B, 0x99E1, 0x6B0C, 0x99E2, 0x6B0D, 0x99E3, 0x6B0E, 0x99E4, 0x6B0F, 0x99E5, 0x6B10, 0x99E6, 0x6B11, 0x99E7, 0x6B12, 0x99E8, + 0x6B13, 0x99E9, 0x6B14, 0x99EA, 0x6B15, 0x99EB, 0x6B16, 0x99EC, 0x6B17, 0x99ED, 0x6B18, 0x99EE, 0x6B19, 0x99EF, 0x6B1A, 0x99F0, + 0x6B1B, 0x99F1, 0x6B1C, 0x99F2, 0x6B1D, 0x99F3, 0x6B1E, 0x99F4, 0x6B1F, 0x99F5, 0x6B20, 0xC7B7, 0x6B21, 0xB4CE, 0x6B22, 0xBBB6, + 0x6B23, 0xD0C0, 0x6B24, 0xECA3, 0x6B25, 0x99F6, 0x6B26, 0x99F7, 0x6B27, 0xC5B7, 0x6B28, 0x99F8, 0x6B29, 0x99F9, 0x6B2A, 0x99FA, + 0x6B2B, 0x99FB, 0x6B2C, 0x99FC, 0x6B2D, 0x99FD, 0x6B2E, 0x99FE, 0x6B2F, 0x9A40, 0x6B30, 0x9A41, 0x6B31, 0x9A42, 0x6B32, 0xD3FB, + 0x6B33, 0x9A43, 0x6B34, 0x9A44, 0x6B35, 0x9A45, 0x6B36, 0x9A46, 0x6B37, 0xECA4, 0x6B38, 0x9A47, 0x6B39, 0xECA5, 0x6B3A, 0xC6DB, + 0x6B3B, 0x9A48, 0x6B3C, 0x9A49, 0x6B3D, 0x9A4A, 0x6B3E, 0xBFEE, 0x6B3F, 0x9A4B, 0x6B40, 0x9A4C, 0x6B41, 0x9A4D, 0x6B42, 0x9A4E, + 0x6B43, 0xECA6, 0x6B44, 0x9A4F, 0x6B45, 0x9A50, 0x6B46, 0xECA7, 0x6B47, 0xD0AA, 0x6B48, 0x9A51, 0x6B49, 0xC7B8, 0x6B4A, 0x9A52, + 0x6B4B, 0x9A53, 0x6B4C, 0xB8E8, 0x6B4D, 0x9A54, 0x6B4E, 0x9A55, 0x6B4F, 0x9A56, 0x6B50, 0x9A57, 0x6B51, 0x9A58, 0x6B52, 0x9A59, + 0x6B53, 0x9A5A, 0x6B54, 0x9A5B, 0x6B55, 0x9A5C, 0x6B56, 0x9A5D, 0x6B57, 0x9A5E, 0x6B58, 0x9A5F, 0x6B59, 0xECA8, 0x6B5A, 0x9A60, + 0x6B5B, 0x9A61, 0x6B5C, 0x9A62, 0x6B5D, 0x9A63, 0x6B5E, 0x9A64, 0x6B5F, 0x9A65, 0x6B60, 0x9A66, 0x6B61, 0x9A67, 0x6B62, 0xD6B9, + 0x6B63, 0xD5FD, 0x6B64, 0xB4CB, 0x6B65, 0xB2BD, 0x6B66, 0xCEE4, 0x6B67, 0xC6E7, 0x6B68, 0x9A68, 0x6B69, 0x9A69, 0x6B6A, 0xCDE1, + 0x6B6B, 0x9A6A, 0x6B6C, 0x9A6B, 0x6B6D, 0x9A6C, 0x6B6E, 0x9A6D, 0x6B6F, 0x9A6E, 0x6B70, 0x9A6F, 0x6B71, 0x9A70, 0x6B72, 0x9A71, + 0x6B73, 0x9A72, 0x6B74, 0x9A73, 0x6B75, 0x9A74, 0x6B76, 0x9A75, 0x6B77, 0x9A76, 0x6B78, 0x9A77, 0x6B79, 0xB4F5, 0x6B7A, 0x9A78, + 0x6B7B, 0xCBC0, 0x6B7C, 0xBCDF, 0x6B7D, 0x9A79, 0x6B7E, 0x9A7A, 0x6B7F, 0x9A7B, 0x6B80, 0x9A7C, 0x6B81, 0xE9E2, 0x6B82, 0xE9E3, + 0x6B83, 0xD1EA, 0x6B84, 0xE9E5, 0x6B85, 0x9A7D, 0x6B86, 0xB4F9, 0x6B87, 0xE9E4, 0x6B88, 0x9A7E, 0x6B89, 0xD1B3, 0x6B8A, 0xCAE2, + 0x6B8B, 0xB2D0, 0x6B8C, 0x9A80, 0x6B8D, 0xE9E8, 0x6B8E, 0x9A81, 0x6B8F, 0x9A82, 0x6B90, 0x9A83, 0x6B91, 0x9A84, 0x6B92, 0xE9E6, + 0x6B93, 0xE9E7, 0x6B94, 0x9A85, 0x6B95, 0x9A86, 0x6B96, 0xD6B3, 0x6B97, 0x9A87, 0x6B98, 0x9A88, 0x6B99, 0x9A89, 0x6B9A, 0xE9E9, + 0x6B9B, 0xE9EA, 0x6B9C, 0x9A8A, 0x6B9D, 0x9A8B, 0x6B9E, 0x9A8C, 0x6B9F, 0x9A8D, 0x6BA0, 0x9A8E, 0x6BA1, 0xE9EB, 0x6BA2, 0x9A8F, + 0x6BA3, 0x9A90, 0x6BA4, 0x9A91, 0x6BA5, 0x9A92, 0x6BA6, 0x9A93, 0x6BA7, 0x9A94, 0x6BA8, 0x9A95, 0x6BA9, 0x9A96, 0x6BAA, 0xE9EC, + 0x6BAB, 0x9A97, 0x6BAC, 0x9A98, 0x6BAD, 0x9A99, 0x6BAE, 0x9A9A, 0x6BAF, 0x9A9B, 0x6BB0, 0x9A9C, 0x6BB1, 0x9A9D, 0x6BB2, 0x9A9E, + 0x6BB3, 0xECAF, 0x6BB4, 0xC5B9, 0x6BB5, 0xB6CE, 0x6BB6, 0x9A9F, 0x6BB7, 0xD2F3, 0x6BB8, 0x9AA0, 0x6BB9, 0x9AA1, 0x6BBA, 0x9AA2, + 0x6BBB, 0x9AA3, 0x6BBC, 0x9AA4, 0x6BBD, 0x9AA5, 0x6BBE, 0x9AA6, 0x6BBF, 0xB5EE, 0x6BC0, 0x9AA7, 0x6BC1, 0xBBD9, 0x6BC2, 0xECB1, + 0x6BC3, 0x9AA8, 0x6BC4, 0x9AA9, 0x6BC5, 0xD2E3, 0x6BC6, 0x9AAA, 0x6BC7, 0x9AAB, 0x6BC8, 0x9AAC, 0x6BC9, 0x9AAD, 0x6BCA, 0x9AAE, + 0x6BCB, 0xCEE3, 0x6BCC, 0x9AAF, 0x6BCD, 0xC4B8, 0x6BCE, 0x9AB0, 0x6BCF, 0xC3BF, 0x6BD0, 0x9AB1, 0x6BD1, 0x9AB2, 0x6BD2, 0xB6BE, + 0x6BD3, 0xD8B9, 0x6BD4, 0xB1C8, 0x6BD5, 0xB1CF, 0x6BD6, 0xB1D1, 0x6BD7, 0xC5FE, 0x6BD8, 0x9AB3, 0x6BD9, 0xB1D0, 0x6BDA, 0x9AB4, + 0x6BDB, 0xC3AB, 0x6BDC, 0x9AB5, 0x6BDD, 0x9AB6, 0x6BDE, 0x9AB7, 0x6BDF, 0x9AB8, 0x6BE0, 0x9AB9, 0x6BE1, 0xD5B1, 0x6BE2, 0x9ABA, + 0x6BE3, 0x9ABB, 0x6BE4, 0x9ABC, 0x6BE5, 0x9ABD, 0x6BE6, 0x9ABE, 0x6BE7, 0x9ABF, 0x6BE8, 0x9AC0, 0x6BE9, 0x9AC1, 0x6BEA, 0xEBA4, + 0x6BEB, 0xBAC1, 0x6BEC, 0x9AC2, 0x6BED, 0x9AC3, 0x6BEE, 0x9AC4, 0x6BEF, 0xCCBA, 0x6BF0, 0x9AC5, 0x6BF1, 0x9AC6, 0x6BF2, 0x9AC7, + 0x6BF3, 0xEBA5, 0x6BF4, 0x9AC8, 0x6BF5, 0xEBA7, 0x6BF6, 0x9AC9, 0x6BF7, 0x9ACA, 0x6BF8, 0x9ACB, 0x6BF9, 0xEBA8, 0x6BFA, 0x9ACC, + 0x6BFB, 0x9ACD, 0x6BFC, 0x9ACE, 0x6BFD, 0xEBA6, 0x6BFE, 0x9ACF, 0x6BFF, 0x9AD0, 0x6C00, 0x9AD1, 0x6C01, 0x9AD2, 0x6C02, 0x9AD3, + 0x6C03, 0x9AD4, 0x6C04, 0x9AD5, 0x6C05, 0xEBA9, 0x6C06, 0xEBAB, 0x6C07, 0xEBAA, 0x6C08, 0x9AD6, 0x6C09, 0x9AD7, 0x6C0A, 0x9AD8, + 0x6C0B, 0x9AD9, 0x6C0C, 0x9ADA, 0x6C0D, 0xEBAC, 0x6C0E, 0x9ADB, 0x6C0F, 0xCACF, 0x6C10, 0xD8B5, 0x6C11, 0xC3F1, 0x6C12, 0x9ADC, + 0x6C13, 0xC3A5, 0x6C14, 0xC6F8, 0x6C15, 0xEBAD, 0x6C16, 0xC4CA, 0x6C17, 0x9ADD, 0x6C18, 0xEBAE, 0x6C19, 0xEBAF, 0x6C1A, 0xEBB0, + 0x6C1B, 0xB7D5, 0x6C1C, 0x9ADE, 0x6C1D, 0x9ADF, 0x6C1E, 0x9AE0, 0x6C1F, 0xB7FA, 0x6C20, 0x9AE1, 0x6C21, 0xEBB1, 0x6C22, 0xC7E2, + 0x6C23, 0x9AE2, 0x6C24, 0xEBB3, 0x6C25, 0x9AE3, 0x6C26, 0xBAA4, 0x6C27, 0xD1F5, 0x6C28, 0xB0B1, 0x6C29, 0xEBB2, 0x6C2A, 0xEBB4, + 0x6C2B, 0x9AE4, 0x6C2C, 0x9AE5, 0x6C2D, 0x9AE6, 0x6C2E, 0xB5AA, 0x6C2F, 0xC2C8, 0x6C30, 0xC7E8, 0x6C31, 0x9AE7, 0x6C32, 0xEBB5, + 0x6C33, 0x9AE8, 0x6C34, 0xCBAE, 0x6C35, 0xE3DF, 0x6C36, 0x9AE9, 0x6C37, 0x9AEA, 0x6C38, 0xD3C0, 0x6C39, 0x9AEB, 0x6C3A, 0x9AEC, + 0x6C3B, 0x9AED, 0x6C3C, 0x9AEE, 0x6C3D, 0xD9DB, 0x6C3E, 0x9AEF, 0x6C3F, 0x9AF0, 0x6C40, 0xCDA1, 0x6C41, 0xD6AD, 0x6C42, 0xC7F3, + 0x6C43, 0x9AF1, 0x6C44, 0x9AF2, 0x6C45, 0x9AF3, 0x6C46, 0xD9E0, 0x6C47, 0xBBE3, 0x6C48, 0x9AF4, 0x6C49, 0xBABA, 0x6C4A, 0xE3E2, + 0x6C4B, 0x9AF5, 0x6C4C, 0x9AF6, 0x6C4D, 0x9AF7, 0x6C4E, 0x9AF8, 0x6C4F, 0x9AF9, 0x6C50, 0xCFAB, 0x6C51, 0x9AFA, 0x6C52, 0x9AFB, + 0x6C53, 0x9AFC, 0x6C54, 0xE3E0, 0x6C55, 0xC9C7, 0x6C56, 0x9AFD, 0x6C57, 0xBAB9, 0x6C58, 0x9AFE, 0x6C59, 0x9B40, 0x6C5A, 0x9B41, + 0x6C5B, 0xD1B4, 0x6C5C, 0xE3E1, 0x6C5D, 0xC8EA, 0x6C5E, 0xB9AF, 0x6C5F, 0xBDAD, 0x6C60, 0xB3D8, 0x6C61, 0xCEDB, 0x6C62, 0x9B42, + 0x6C63, 0x9B43, 0x6C64, 0xCCC0, 0x6C65, 0x9B44, 0x6C66, 0x9B45, 0x6C67, 0x9B46, 0x6C68, 0xE3E8, 0x6C69, 0xE3E9, 0x6C6A, 0xCDF4, + 0x6C6B, 0x9B47, 0x6C6C, 0x9B48, 0x6C6D, 0x9B49, 0x6C6E, 0x9B4A, 0x6C6F, 0x9B4B, 0x6C70, 0xCCAD, 0x6C71, 0x9B4C, 0x6C72, 0xBCB3, + 0x6C73, 0x9B4D, 0x6C74, 0xE3EA, 0x6C75, 0x9B4E, 0x6C76, 0xE3EB, 0x6C77, 0x9B4F, 0x6C78, 0x9B50, 0x6C79, 0xD0DA, 0x6C7A, 0x9B51, + 0x6C7B, 0x9B52, 0x6C7C, 0x9B53, 0x6C7D, 0xC6FB, 0x6C7E, 0xB7DA, 0x6C7F, 0x9B54, 0x6C80, 0x9B55, 0x6C81, 0xC7DF, 0x6C82, 0xD2CA, + 0x6C83, 0xCED6, 0x6C84, 0x9B56, 0x6C85, 0xE3E4, 0x6C86, 0xE3EC, 0x6C87, 0x9B57, 0x6C88, 0xC9F2, 0x6C89, 0xB3C1, 0x6C8A, 0x9B58, + 0x6C8B, 0x9B59, 0x6C8C, 0xE3E7, 0x6C8D, 0x9B5A, 0x6C8E, 0x9B5B, 0x6C8F, 0xC6E3, 0x6C90, 0xE3E5, 0x6C91, 0x9B5C, 0x6C92, 0x9B5D, + 0x6C93, 0xEDB3, 0x6C94, 0xE3E6, 0x6C95, 0x9B5E, 0x6C96, 0x9B5F, 0x6C97, 0x9B60, 0x6C98, 0x9B61, 0x6C99, 0xC9B3, 0x6C9A, 0x9B62, + 0x6C9B, 0xC5E6, 0x6C9C, 0x9B63, 0x6C9D, 0x9B64, 0x6C9E, 0x9B65, 0x6C9F, 0xB9B5, 0x6CA0, 0x9B66, 0x6CA1, 0xC3BB, 0x6CA2, 0x9B67, + 0x6CA3, 0xE3E3, 0x6CA4, 0xC5BD, 0x6CA5, 0xC1A4, 0x6CA6, 0xC2D9, 0x6CA7, 0xB2D7, 0x6CA8, 0x9B68, 0x6CA9, 0xE3ED, 0x6CAA, 0xBBA6, + 0x6CAB, 0xC4AD, 0x6CAC, 0x9B69, 0x6CAD, 0xE3F0, 0x6CAE, 0xBEDA, 0x6CAF, 0x9B6A, 0x6CB0, 0x9B6B, 0x6CB1, 0xE3FB, 0x6CB2, 0xE3F5, + 0x6CB3, 0xBAD3, 0x6CB4, 0x9B6C, 0x6CB5, 0x9B6D, 0x6CB6, 0x9B6E, 0x6CB7, 0x9B6F, 0x6CB8, 0xB7D0, 0x6CB9, 0xD3CD, 0x6CBA, 0x9B70, + 0x6CBB, 0xD6CE, 0x6CBC, 0xD5D3, 0x6CBD, 0xB9C1, 0x6CBE, 0xD5B4, 0x6CBF, 0xD1D8, 0x6CC0, 0x9B71, 0x6CC1, 0x9B72, 0x6CC2, 0x9B73, + 0x6CC3, 0x9B74, 0x6CC4, 0xD0B9, 0x6CC5, 0xC7F6, 0x6CC6, 0x9B75, 0x6CC7, 0x9B76, 0x6CC8, 0x9B77, 0x6CC9, 0xC8AA, 0x6CCA, 0xB2B4, + 0x6CCB, 0x9B78, 0x6CCC, 0xC3DA, 0x6CCD, 0x9B79, 0x6CCE, 0x9B7A, 0x6CCF, 0x9B7B, 0x6CD0, 0xE3EE, 0x6CD1, 0x9B7C, 0x6CD2, 0x9B7D, + 0x6CD3, 0xE3FC, 0x6CD4, 0xE3EF, 0x6CD5, 0xB7A8, 0x6CD6, 0xE3F7, 0x6CD7, 0xE3F4, 0x6CD8, 0x9B7E, 0x6CD9, 0x9B80, 0x6CDA, 0x9B81, + 0x6CDB, 0xB7BA, 0x6CDC, 0x9B82, 0x6CDD, 0x9B83, 0x6CDE, 0xC5A2, 0x6CDF, 0x9B84, 0x6CE0, 0xE3F6, 0x6CE1, 0xC5DD, 0x6CE2, 0xB2A8, + 0x6CE3, 0xC6FC, 0x6CE4, 0x9B85, 0x6CE5, 0xC4E0, 0x6CE6, 0x9B86, 0x6CE7, 0x9B87, 0x6CE8, 0xD7A2, 0x6CE9, 0x9B88, 0x6CEA, 0xC0E1, + 0x6CEB, 0xE3F9, 0x6CEC, 0x9B89, 0x6CED, 0x9B8A, 0x6CEE, 0xE3FA, 0x6CEF, 0xE3FD, 0x6CF0, 0xCCA9, 0x6CF1, 0xE3F3, 0x6CF2, 0x9B8B, + 0x6CF3, 0xD3BE, 0x6CF4, 0x9B8C, 0x6CF5, 0xB1C3, 0x6CF6, 0xEDB4, 0x6CF7, 0xE3F1, 0x6CF8, 0xE3F2, 0x6CF9, 0x9B8D, 0x6CFA, 0xE3F8, + 0x6CFB, 0xD0BA, 0x6CFC, 0xC6C3, 0x6CFD, 0xD4F3, 0x6CFE, 0xE3FE, 0x6CFF, 0x9B8E, 0x6D00, 0x9B8F, 0x6D01, 0xBDE0, 0x6D02, 0x9B90, + 0x6D03, 0x9B91, 0x6D04, 0xE4A7, 0x6D05, 0x9B92, 0x6D06, 0x9B93, 0x6D07, 0xE4A6, 0x6D08, 0x9B94, 0x6D09, 0x9B95, 0x6D0A, 0x9B96, + 0x6D0B, 0xD1F3, 0x6D0C, 0xE4A3, 0x6D0D, 0x9B97, 0x6D0E, 0xE4A9, 0x6D0F, 0x9B98, 0x6D10, 0x9B99, 0x6D11, 0x9B9A, 0x6D12, 0xC8F7, + 0x6D13, 0x9B9B, 0x6D14, 0x9B9C, 0x6D15, 0x9B9D, 0x6D16, 0x9B9E, 0x6D17, 0xCFB4, 0x6D18, 0x9B9F, 0x6D19, 0xE4A8, 0x6D1A, 0xE4AE, + 0x6D1B, 0xC2E5, 0x6D1C, 0x9BA0, 0x6D1D, 0x9BA1, 0x6D1E, 0xB6B4, 0x6D1F, 0x9BA2, 0x6D20, 0x9BA3, 0x6D21, 0x9BA4, 0x6D22, 0x9BA5, + 0x6D23, 0x9BA6, 0x6D24, 0x9BA7, 0x6D25, 0xBDF2, 0x6D26, 0x9BA8, 0x6D27, 0xE4A2, 0x6D28, 0x9BA9, 0x6D29, 0x9BAA, 0x6D2A, 0xBAE9, + 0x6D2B, 0xE4AA, 0x6D2C, 0x9BAB, 0x6D2D, 0x9BAC, 0x6D2E, 0xE4AC, 0x6D2F, 0x9BAD, 0x6D30, 0x9BAE, 0x6D31, 0xB6FD, 0x6D32, 0xD6DE, + 0x6D33, 0xE4B2, 0x6D34, 0x9BAF, 0x6D35, 0xE4AD, 0x6D36, 0x9BB0, 0x6D37, 0x9BB1, 0x6D38, 0x9BB2, 0x6D39, 0xE4A1, 0x6D3A, 0x9BB3, + 0x6D3B, 0xBBEE, 0x6D3C, 0xCDDD, 0x6D3D, 0xC7A2, 0x6D3E, 0xC5C9, 0x6D3F, 0x9BB4, 0x6D40, 0x9BB5, 0x6D41, 0xC1F7, 0x6D42, 0x9BB6, + 0x6D43, 0xE4A4, 0x6D44, 0x9BB7, 0x6D45, 0xC7B3, 0x6D46, 0xBDAC, 0x6D47, 0xBDBD, 0x6D48, 0xE4A5, 0x6D49, 0x9BB8, 0x6D4A, 0xD7C7, + 0x6D4B, 0xB2E2, 0x6D4C, 0x9BB9, 0x6D4D, 0xE4AB, 0x6D4E, 0xBCC3, 0x6D4F, 0xE4AF, 0x6D50, 0x9BBA, 0x6D51, 0xBBEB, 0x6D52, 0xE4B0, + 0x6D53, 0xC5A8, 0x6D54, 0xE4B1, 0x6D55, 0x9BBB, 0x6D56, 0x9BBC, 0x6D57, 0x9BBD, 0x6D58, 0x9BBE, 0x6D59, 0xD5E3, 0x6D5A, 0xBFA3, + 0x6D5B, 0x9BBF, 0x6D5C, 0xE4BA, 0x6D5D, 0x9BC0, 0x6D5E, 0xE4B7, 0x6D5F, 0x9BC1, 0x6D60, 0xE4BB, 0x6D61, 0x9BC2, 0x6D62, 0x9BC3, + 0x6D63, 0xE4BD, 0x6D64, 0x9BC4, 0x6D65, 0x9BC5, 0x6D66, 0xC6D6, 0x6D67, 0x9BC6, 0x6D68, 0x9BC7, 0x6D69, 0xBAC6, 0x6D6A, 0xC0CB, + 0x6D6B, 0x9BC8, 0x6D6C, 0x9BC9, 0x6D6D, 0x9BCA, 0x6D6E, 0xB8A1, 0x6D6F, 0xE4B4, 0x6D70, 0x9BCB, 0x6D71, 0x9BCC, 0x6D72, 0x9BCD, + 0x6D73, 0x9BCE, 0x6D74, 0xD4A1, 0x6D75, 0x9BCF, 0x6D76, 0x9BD0, 0x6D77, 0xBAA3, 0x6D78, 0xBDFE, 0x6D79, 0x9BD1, 0x6D7A, 0x9BD2, + 0x6D7B, 0x9BD3, 0x6D7C, 0xE4BC, 0x6D7D, 0x9BD4, 0x6D7E, 0x9BD5, 0x6D7F, 0x9BD6, 0x6D80, 0x9BD7, 0x6D81, 0x9BD8, 0x6D82, 0xCDBF, + 0x6D83, 0x9BD9, 0x6D84, 0x9BDA, 0x6D85, 0xC4F9, 0x6D86, 0x9BDB, 0x6D87, 0x9BDC, 0x6D88, 0xCFFB, 0x6D89, 0xC9E6, 0x6D8A, 0x9BDD, + 0x6D8B, 0x9BDE, 0x6D8C, 0xD3BF, 0x6D8D, 0x9BDF, 0x6D8E, 0xCFD1, 0x6D8F, 0x9BE0, 0x6D90, 0x9BE1, 0x6D91, 0xE4B3, 0x6D92, 0x9BE2, + 0x6D93, 0xE4B8, 0x6D94, 0xE4B9, 0x6D95, 0xCCE9, 0x6D96, 0x9BE3, 0x6D97, 0x9BE4, 0x6D98, 0x9BE5, 0x6D99, 0x9BE6, 0x6D9A, 0x9BE7, + 0x6D9B, 0xCCCE, 0x6D9C, 0x9BE8, 0x6D9D, 0xC0D4, 0x6D9E, 0xE4B5, 0x6D9F, 0xC1B0, 0x6DA0, 0xE4B6, 0x6DA1, 0xCED0, 0x6DA2, 0x9BE9, + 0x6DA3, 0xBBC1, 0x6DA4, 0xB5D3, 0x6DA5, 0x9BEA, 0x6DA6, 0xC8F3, 0x6DA7, 0xBDA7, 0x6DA8, 0xD5C7, 0x6DA9, 0xC9AC, 0x6DAA, 0xB8A2, + 0x6DAB, 0xE4CA, 0x6DAC, 0x9BEB, 0x6DAD, 0x9BEC, 0x6DAE, 0xE4CC, 0x6DAF, 0xD1C4, 0x6DB0, 0x9BED, 0x6DB1, 0x9BEE, 0x6DB2, 0xD2BA, + 0x6DB3, 0x9BEF, 0x6DB4, 0x9BF0, 0x6DB5, 0xBAAD, 0x6DB6, 0x9BF1, 0x6DB7, 0x9BF2, 0x6DB8, 0xBAD4, 0x6DB9, 0x9BF3, 0x6DBA, 0x9BF4, + 0x6DBB, 0x9BF5, 0x6DBC, 0x9BF6, 0x6DBD, 0x9BF7, 0x6DBE, 0x9BF8, 0x6DBF, 0xE4C3, 0x6DC0, 0xB5ED, 0x6DC1, 0x9BF9, 0x6DC2, 0x9BFA, + 0x6DC3, 0x9BFB, 0x6DC4, 0xD7CD, 0x6DC5, 0xE4C0, 0x6DC6, 0xCFFD, 0x6DC7, 0xE4BF, 0x6DC8, 0x9BFC, 0x6DC9, 0x9BFD, 0x6DCA, 0x9BFE, + 0x6DCB, 0xC1DC, 0x6DCC, 0xCCCA, 0x6DCD, 0x9C40, 0x6DCE, 0x9C41, 0x6DCF, 0x9C42, 0x6DD0, 0x9C43, 0x6DD1, 0xCAE7, 0x6DD2, 0x9C44, + 0x6DD3, 0x9C45, 0x6DD4, 0x9C46, 0x6DD5, 0x9C47, 0x6DD6, 0xC4D7, 0x6DD7, 0x9C48, 0x6DD8, 0xCCD4, 0x6DD9, 0xE4C8, 0x6DDA, 0x9C49, + 0x6DDB, 0x9C4A, 0x6DDC, 0x9C4B, 0x6DDD, 0xE4C7, 0x6DDE, 0xE4C1, 0x6DDF, 0x9C4C, 0x6DE0, 0xE4C4, 0x6DE1, 0xB5AD, 0x6DE2, 0x9C4D, + 0x6DE3, 0x9C4E, 0x6DE4, 0xD3D9, 0x6DE5, 0x9C4F, 0x6DE6, 0xE4C6, 0x6DE7, 0x9C50, 0x6DE8, 0x9C51, 0x6DE9, 0x9C52, 0x6DEA, 0x9C53, + 0x6DEB, 0xD2F9, 0x6DEC, 0xB4E3, 0x6DED, 0x9C54, 0x6DEE, 0xBBB4, 0x6DEF, 0x9C55, 0x6DF0, 0x9C56, 0x6DF1, 0xC9EE, 0x6DF2, 0x9C57, + 0x6DF3, 0xB4BE, 0x6DF4, 0x9C58, 0x6DF5, 0x9C59, 0x6DF6, 0x9C5A, 0x6DF7, 0xBBEC, 0x6DF8, 0x9C5B, 0x6DF9, 0xD1CD, 0x6DFA, 0x9C5C, + 0x6DFB, 0xCCED, 0x6DFC, 0xEDB5, 0x6DFD, 0x9C5D, 0x6DFE, 0x9C5E, 0x6DFF, 0x9C5F, 0x6E00, 0x9C60, 0x6E01, 0x9C61, 0x6E02, 0x9C62, + 0x6E03, 0x9C63, 0x6E04, 0x9C64, 0x6E05, 0xC7E5, 0x6E06, 0x9C65, 0x6E07, 0x9C66, 0x6E08, 0x9C67, 0x6E09, 0x9C68, 0x6E0A, 0xD4A8, + 0x6E0B, 0x9C69, 0x6E0C, 0xE4CB, 0x6E0D, 0xD7D5, 0x6E0E, 0xE4C2, 0x6E0F, 0x9C6A, 0x6E10, 0xBDA5, 0x6E11, 0xE4C5, 0x6E12, 0x9C6B, + 0x6E13, 0x9C6C, 0x6E14, 0xD3E6, 0x6E15, 0x9C6D, 0x6E16, 0xE4C9, 0x6E17, 0xC9F8, 0x6E18, 0x9C6E, 0x6E19, 0x9C6F, 0x6E1A, 0xE4BE, + 0x6E1B, 0x9C70, 0x6E1C, 0x9C71, 0x6E1D, 0xD3E5, 0x6E1E, 0x9C72, 0x6E1F, 0x9C73, 0x6E20, 0xC7FE, 0x6E21, 0xB6C9, 0x6E22, 0x9C74, + 0x6E23, 0xD4FC, 0x6E24, 0xB2B3, 0x6E25, 0xE4D7, 0x6E26, 0x9C75, 0x6E27, 0x9C76, 0x6E28, 0x9C77, 0x6E29, 0xCEC2, 0x6E2A, 0x9C78, + 0x6E2B, 0xE4CD, 0x6E2C, 0x9C79, 0x6E2D, 0xCEBC, 0x6E2E, 0x9C7A, 0x6E2F, 0xB8DB, 0x6E30, 0x9C7B, 0x6E31, 0x9C7C, 0x6E32, 0xE4D6, + 0x6E33, 0x9C7D, 0x6E34, 0xBFCA, 0x6E35, 0x9C7E, 0x6E36, 0x9C80, 0x6E37, 0x9C81, 0x6E38, 0xD3CE, 0x6E39, 0x9C82, 0x6E3A, 0xC3EC, + 0x6E3B, 0x9C83, 0x6E3C, 0x9C84, 0x6E3D, 0x9C85, 0x6E3E, 0x9C86, 0x6E3F, 0x9C87, 0x6E40, 0x9C88, 0x6E41, 0x9C89, 0x6E42, 0x9C8A, + 0x6E43, 0xC5C8, 0x6E44, 0xE4D8, 0x6E45, 0x9C8B, 0x6E46, 0x9C8C, 0x6E47, 0x9C8D, 0x6E48, 0x9C8E, 0x6E49, 0x9C8F, 0x6E4A, 0x9C90, + 0x6E4B, 0x9C91, 0x6E4C, 0x9C92, 0x6E4D, 0xCDC4, 0x6E4E, 0xE4CF, 0x6E4F, 0x9C93, 0x6E50, 0x9C94, 0x6E51, 0x9C95, 0x6E52, 0x9C96, + 0x6E53, 0xE4D4, 0x6E54, 0xE4D5, 0x6E55, 0x9C97, 0x6E56, 0xBAFE, 0x6E57, 0x9C98, 0x6E58, 0xCFE6, 0x6E59, 0x9C99, 0x6E5A, 0x9C9A, + 0x6E5B, 0xD5BF, 0x6E5C, 0x9C9B, 0x6E5D, 0x9C9C, 0x6E5E, 0x9C9D, 0x6E5F, 0xE4D2, 0x6E60, 0x9C9E, 0x6E61, 0x9C9F, 0x6E62, 0x9CA0, + 0x6E63, 0x9CA1, 0x6E64, 0x9CA2, 0x6E65, 0x9CA3, 0x6E66, 0x9CA4, 0x6E67, 0x9CA5, 0x6E68, 0x9CA6, 0x6E69, 0x9CA7, 0x6E6A, 0x9CA8, + 0x6E6B, 0xE4D0, 0x6E6C, 0x9CA9, 0x6E6D, 0x9CAA, 0x6E6E, 0xE4CE, 0x6E6F, 0x9CAB, 0x6E70, 0x9CAC, 0x6E71, 0x9CAD, 0x6E72, 0x9CAE, + 0x6E73, 0x9CAF, 0x6E74, 0x9CB0, 0x6E75, 0x9CB1, 0x6E76, 0x9CB2, 0x6E77, 0x9CB3, 0x6E78, 0x9CB4, 0x6E79, 0x9CB5, 0x6E7A, 0x9CB6, + 0x6E7B, 0x9CB7, 0x6E7C, 0x9CB8, 0x6E7D, 0x9CB9, 0x6E7E, 0xCDE5, 0x6E7F, 0xCAAA, 0x6E80, 0x9CBA, 0x6E81, 0x9CBB, 0x6E82, 0x9CBC, + 0x6E83, 0xC0A3, 0x6E84, 0x9CBD, 0x6E85, 0xBDA6, 0x6E86, 0xE4D3, 0x6E87, 0x9CBE, 0x6E88, 0x9CBF, 0x6E89, 0xB8C8, 0x6E8A, 0x9CC0, + 0x6E8B, 0x9CC1, 0x6E8C, 0x9CC2, 0x6E8D, 0x9CC3, 0x6E8E, 0x9CC4, 0x6E8F, 0xE4E7, 0x6E90, 0xD4B4, 0x6E91, 0x9CC5, 0x6E92, 0x9CC6, + 0x6E93, 0x9CC7, 0x6E94, 0x9CC8, 0x6E95, 0x9CC9, 0x6E96, 0x9CCA, 0x6E97, 0x9CCB, 0x6E98, 0xE4DB, 0x6E99, 0x9CCC, 0x6E9A, 0x9CCD, + 0x6E9B, 0x9CCE, 0x6E9C, 0xC1EF, 0x6E9D, 0x9CCF, 0x6E9E, 0x9CD0, 0x6E9F, 0xE4E9, 0x6EA0, 0x9CD1, 0x6EA1, 0x9CD2, 0x6EA2, 0xD2E7, + 0x6EA3, 0x9CD3, 0x6EA4, 0x9CD4, 0x6EA5, 0xE4DF, 0x6EA6, 0x9CD5, 0x6EA7, 0xE4E0, 0x6EA8, 0x9CD6, 0x6EA9, 0x9CD7, 0x6EAA, 0xCFAA, + 0x6EAB, 0x9CD8, 0x6EAC, 0x9CD9, 0x6EAD, 0x9CDA, 0x6EAE, 0x9CDB, 0x6EAF, 0xCBDD, 0x6EB0, 0x9CDC, 0x6EB1, 0xE4DA, 0x6EB2, 0xE4D1, + 0x6EB3, 0x9CDD, 0x6EB4, 0xE4E5, 0x6EB5, 0x9CDE, 0x6EB6, 0xC8DC, 0x6EB7, 0xE4E3, 0x6EB8, 0x9CDF, 0x6EB9, 0x9CE0, 0x6EBA, 0xC4E7, + 0x6EBB, 0xE4E2, 0x6EBC, 0x9CE1, 0x6EBD, 0xE4E1, 0x6EBE, 0x9CE2, 0x6EBF, 0x9CE3, 0x6EC0, 0x9CE4, 0x6EC1, 0xB3FC, 0x6EC2, 0xE4E8, + 0x6EC3, 0x9CE5, 0x6EC4, 0x9CE6, 0x6EC5, 0x9CE7, 0x6EC6, 0x9CE8, 0x6EC7, 0xB5E1, 0x6EC8, 0x9CE9, 0x6EC9, 0x9CEA, 0x6ECA, 0x9CEB, + 0x6ECB, 0xD7CC, 0x6ECC, 0x9CEC, 0x6ECD, 0x9CED, 0x6ECE, 0x9CEE, 0x6ECF, 0xE4E6, 0x6ED0, 0x9CEF, 0x6ED1, 0xBBAC, 0x6ED2, 0x9CF0, + 0x6ED3, 0xD7D2, 0x6ED4, 0xCCCF, 0x6ED5, 0xEBF8, 0x6ED6, 0x9CF1, 0x6ED7, 0xE4E4, 0x6ED8, 0x9CF2, 0x6ED9, 0x9CF3, 0x6EDA, 0xB9F6, + 0x6EDB, 0x9CF4, 0x6EDC, 0x9CF5, 0x6EDD, 0x9CF6, 0x6EDE, 0xD6CD, 0x6EDF, 0xE4D9, 0x6EE0, 0xE4DC, 0x6EE1, 0xC2FA, 0x6EE2, 0xE4DE, + 0x6EE3, 0x9CF7, 0x6EE4, 0xC2CB, 0x6EE5, 0xC0C4, 0x6EE6, 0xC2D0, 0x6EE7, 0x9CF8, 0x6EE8, 0xB1F5, 0x6EE9, 0xCCB2, 0x6EEA, 0x9CF9, + 0x6EEB, 0x9CFA, 0x6EEC, 0x9CFB, 0x6EED, 0x9CFC, 0x6EEE, 0x9CFD, 0x6EEF, 0x9CFE, 0x6EF0, 0x9D40, 0x6EF1, 0x9D41, 0x6EF2, 0x9D42, + 0x6EF3, 0x9D43, 0x6EF4, 0xB5CE, 0x6EF5, 0x9D44, 0x6EF6, 0x9D45, 0x6EF7, 0x9D46, 0x6EF8, 0x9D47, 0x6EF9, 0xE4EF, 0x6EFA, 0x9D48, + 0x6EFB, 0x9D49, 0x6EFC, 0x9D4A, 0x6EFD, 0x9D4B, 0x6EFE, 0x9D4C, 0x6EFF, 0x9D4D, 0x6F00, 0x9D4E, 0x6F01, 0x9D4F, 0x6F02, 0xC6AF, + 0x6F03, 0x9D50, 0x6F04, 0x9D51, 0x6F05, 0x9D52, 0x6F06, 0xC6E1, 0x6F07, 0x9D53, 0x6F08, 0x9D54, 0x6F09, 0xE4F5, 0x6F0A, 0x9D55, + 0x6F0B, 0x9D56, 0x6F0C, 0x9D57, 0x6F0D, 0x9D58, 0x6F0E, 0x9D59, 0x6F0F, 0xC2A9, 0x6F10, 0x9D5A, 0x6F11, 0x9D5B, 0x6F12, 0x9D5C, + 0x6F13, 0xC0EC, 0x6F14, 0xD1DD, 0x6F15, 0xE4EE, 0x6F16, 0x9D5D, 0x6F17, 0x9D5E, 0x6F18, 0x9D5F, 0x6F19, 0x9D60, 0x6F1A, 0x9D61, + 0x6F1B, 0x9D62, 0x6F1C, 0x9D63, 0x6F1D, 0x9D64, 0x6F1E, 0x9D65, 0x6F1F, 0x9D66, 0x6F20, 0xC4AE, 0x6F21, 0x9D67, 0x6F22, 0x9D68, + 0x6F23, 0x9D69, 0x6F24, 0xE4ED, 0x6F25, 0x9D6A, 0x6F26, 0x9D6B, 0x6F27, 0x9D6C, 0x6F28, 0x9D6D, 0x6F29, 0xE4F6, 0x6F2A, 0xE4F4, + 0x6F2B, 0xC2FE, 0x6F2C, 0x9D6E, 0x6F2D, 0xE4DD, 0x6F2E, 0x9D6F, 0x6F2F, 0xE4F0, 0x6F30, 0x9D70, 0x6F31, 0xCAFE, 0x6F32, 0x9D71, + 0x6F33, 0xD5C4, 0x6F34, 0x9D72, 0x6F35, 0x9D73, 0x6F36, 0xE4F1, 0x6F37, 0x9D74, 0x6F38, 0x9D75, 0x6F39, 0x9D76, 0x6F3A, 0x9D77, + 0x6F3B, 0x9D78, 0x6F3C, 0x9D79, 0x6F3D, 0x9D7A, 0x6F3E, 0xD1FA, 0x6F3F, 0x9D7B, 0x6F40, 0x9D7C, 0x6F41, 0x9D7D, 0x6F42, 0x9D7E, + 0x6F43, 0x9D80, 0x6F44, 0x9D81, 0x6F45, 0x9D82, 0x6F46, 0xE4EB, 0x6F47, 0xE4EC, 0x6F48, 0x9D83, 0x6F49, 0x9D84, 0x6F4A, 0x9D85, + 0x6F4B, 0xE4F2, 0x6F4C, 0x9D86, 0x6F4D, 0xCEAB, 0x6F4E, 0x9D87, 0x6F4F, 0x9D88, 0x6F50, 0x9D89, 0x6F51, 0x9D8A, 0x6F52, 0x9D8B, + 0x6F53, 0x9D8C, 0x6F54, 0x9D8D, 0x6F55, 0x9D8E, 0x6F56, 0x9D8F, 0x6F57, 0x9D90, 0x6F58, 0xC5CB, 0x6F59, 0x9D91, 0x6F5A, 0x9D92, + 0x6F5B, 0x9D93, 0x6F5C, 0xC7B1, 0x6F5D, 0x9D94, 0x6F5E, 0xC2BA, 0x6F5F, 0x9D95, 0x6F60, 0x9D96, 0x6F61, 0x9D97, 0x6F62, 0xE4EA, + 0x6F63, 0x9D98, 0x6F64, 0x9D99, 0x6F65, 0x9D9A, 0x6F66, 0xC1CA, 0x6F67, 0x9D9B, 0x6F68, 0x9D9C, 0x6F69, 0x9D9D, 0x6F6A, 0x9D9E, + 0x6F6B, 0x9D9F, 0x6F6C, 0x9DA0, 0x6F6D, 0xCCB6, 0x6F6E, 0xB3B1, 0x6F6F, 0x9DA1, 0x6F70, 0x9DA2, 0x6F71, 0x9DA3, 0x6F72, 0xE4FB, + 0x6F73, 0x9DA4, 0x6F74, 0xE4F3, 0x6F75, 0x9DA5, 0x6F76, 0x9DA6, 0x6F77, 0x9DA7, 0x6F78, 0xE4FA, 0x6F79, 0x9DA8, 0x6F7A, 0xE4FD, + 0x6F7B, 0x9DA9, 0x6F7C, 0xE4FC, 0x6F7D, 0x9DAA, 0x6F7E, 0x9DAB, 0x6F7F, 0x9DAC, 0x6F80, 0x9DAD, 0x6F81, 0x9DAE, 0x6F82, 0x9DAF, + 0x6F83, 0x9DB0, 0x6F84, 0xB3CE, 0x6F85, 0x9DB1, 0x6F86, 0x9DB2, 0x6F87, 0x9DB3, 0x6F88, 0xB3BA, 0x6F89, 0xE4F7, 0x6F8A, 0x9DB4, + 0x6F8B, 0x9DB5, 0x6F8C, 0xE4F9, 0x6F8D, 0xE4F8, 0x6F8E, 0xC5EC, 0x6F8F, 0x9DB6, 0x6F90, 0x9DB7, 0x6F91, 0x9DB8, 0x6F92, 0x9DB9, + 0x6F93, 0x9DBA, 0x6F94, 0x9DBB, 0x6F95, 0x9DBC, 0x6F96, 0x9DBD, 0x6F97, 0x9DBE, 0x6F98, 0x9DBF, 0x6F99, 0x9DC0, 0x6F9A, 0x9DC1, + 0x6F9B, 0x9DC2, 0x6F9C, 0xC0BD, 0x6F9D, 0x9DC3, 0x6F9E, 0x9DC4, 0x6F9F, 0x9DC5, 0x6FA0, 0x9DC6, 0x6FA1, 0xD4E8, 0x6FA2, 0x9DC7, + 0x6FA3, 0x9DC8, 0x6FA4, 0x9DC9, 0x6FA5, 0x9DCA, 0x6FA6, 0x9DCB, 0x6FA7, 0xE5A2, 0x6FA8, 0x9DCC, 0x6FA9, 0x9DCD, 0x6FAA, 0x9DCE, + 0x6FAB, 0x9DCF, 0x6FAC, 0x9DD0, 0x6FAD, 0x9DD1, 0x6FAE, 0x9DD2, 0x6FAF, 0x9DD3, 0x6FB0, 0x9DD4, 0x6FB1, 0x9DD5, 0x6FB2, 0x9DD6, + 0x6FB3, 0xB0C4, 0x6FB4, 0x9DD7, 0x6FB5, 0x9DD8, 0x6FB6, 0xE5A4, 0x6FB7, 0x9DD9, 0x6FB8, 0x9DDA, 0x6FB9, 0xE5A3, 0x6FBA, 0x9DDB, + 0x6FBB, 0x9DDC, 0x6FBC, 0x9DDD, 0x6FBD, 0x9DDE, 0x6FBE, 0x9DDF, 0x6FBF, 0x9DE0, 0x6FC0, 0xBCA4, 0x6FC1, 0x9DE1, 0x6FC2, 0xE5A5, + 0x6FC3, 0x9DE2, 0x6FC4, 0x9DE3, 0x6FC5, 0x9DE4, 0x6FC6, 0x9DE5, 0x6FC7, 0x9DE6, 0x6FC8, 0x9DE7, 0x6FC9, 0xE5A1, 0x6FCA, 0x9DE8, + 0x6FCB, 0x9DE9, 0x6FCC, 0x9DEA, 0x6FCD, 0x9DEB, 0x6FCE, 0x9DEC, 0x6FCF, 0x9DED, 0x6FD0, 0x9DEE, 0x6FD1, 0xE4FE, 0x6FD2, 0xB1F4, + 0x6FD3, 0x9DEF, 0x6FD4, 0x9DF0, 0x6FD5, 0x9DF1, 0x6FD6, 0x9DF2, 0x6FD7, 0x9DF3, 0x6FD8, 0x9DF4, 0x6FD9, 0x9DF5, 0x6FDA, 0x9DF6, + 0x6FDB, 0x9DF7, 0x6FDC, 0x9DF8, 0x6FDD, 0x9DF9, 0x6FDE, 0xE5A8, 0x6FDF, 0x9DFA, 0x6FE0, 0xE5A9, 0x6FE1, 0xE5A6, 0x6FE2, 0x9DFB, + 0x6FE3, 0x9DFC, 0x6FE4, 0x9DFD, 0x6FE5, 0x9DFE, 0x6FE6, 0x9E40, 0x6FE7, 0x9E41, 0x6FE8, 0x9E42, 0x6FE9, 0x9E43, 0x6FEA, 0x9E44, + 0x6FEB, 0x9E45, 0x6FEC, 0x9E46, 0x6FED, 0x9E47, 0x6FEE, 0xE5A7, 0x6FEF, 0xE5AA, 0x6FF0, 0x9E48, 0x6FF1, 0x9E49, 0x6FF2, 0x9E4A, + 0x6FF3, 0x9E4B, 0x6FF4, 0x9E4C, 0x6FF5, 0x9E4D, 0x6FF6, 0x9E4E, 0x6FF7, 0x9E4F, 0x6FF8, 0x9E50, 0x6FF9, 0x9E51, 0x6FFA, 0x9E52, + 0x6FFB, 0x9E53, 0x6FFC, 0x9E54, 0x6FFD, 0x9E55, 0x6FFE, 0x9E56, 0x6FFF, 0x9E57, 0x7000, 0x9E58, 0x7001, 0x9E59, 0x7002, 0x9E5A, + 0x7003, 0x9E5B, 0x7004, 0x9E5C, 0x7005, 0x9E5D, 0x7006, 0x9E5E, 0x7007, 0x9E5F, 0x7008, 0x9E60, 0x7009, 0x9E61, 0x700A, 0x9E62, + 0x700B, 0x9E63, 0x700C, 0x9E64, 0x700D, 0x9E65, 0x700E, 0x9E66, 0x700F, 0x9E67, 0x7010, 0x9E68, 0x7011, 0xC6D9, 0x7012, 0x9E69, + 0x7013, 0x9E6A, 0x7014, 0x9E6B, 0x7015, 0x9E6C, 0x7016, 0x9E6D, 0x7017, 0x9E6E, 0x7018, 0x9E6F, 0x7019, 0x9E70, 0x701A, 0xE5AB, + 0x701B, 0xE5AD, 0x701C, 0x9E71, 0x701D, 0x9E72, 0x701E, 0x9E73, 0x701F, 0x9E74, 0x7020, 0x9E75, 0x7021, 0x9E76, 0x7022, 0x9E77, + 0x7023, 0xE5AC, 0x7024, 0x9E78, 0x7025, 0x9E79, 0x7026, 0x9E7A, 0x7027, 0x9E7B, 0x7028, 0x9E7C, 0x7029, 0x9E7D, 0x702A, 0x9E7E, + 0x702B, 0x9E80, 0x702C, 0x9E81, 0x702D, 0x9E82, 0x702E, 0x9E83, 0x702F, 0x9E84, 0x7030, 0x9E85, 0x7031, 0x9E86, 0x7032, 0x9E87, + 0x7033, 0x9E88, 0x7034, 0x9E89, 0x7035, 0xE5AF, 0x7036, 0x9E8A, 0x7037, 0x9E8B, 0x7038, 0x9E8C, 0x7039, 0xE5AE, 0x703A, 0x9E8D, + 0x703B, 0x9E8E, 0x703C, 0x9E8F, 0x703D, 0x9E90, 0x703E, 0x9E91, 0x703F, 0x9E92, 0x7040, 0x9E93, 0x7041, 0x9E94, 0x7042, 0x9E95, + 0x7043, 0x9E96, 0x7044, 0x9E97, 0x7045, 0x9E98, 0x7046, 0x9E99, 0x7047, 0x9E9A, 0x7048, 0x9E9B, 0x7049, 0x9E9C, 0x704A, 0x9E9D, + 0x704B, 0x9E9E, 0x704C, 0xB9E0, 0x704D, 0x9E9F, 0x704E, 0x9EA0, 0x704F, 0xE5B0, 0x7050, 0x9EA1, 0x7051, 0x9EA2, 0x7052, 0x9EA3, + 0x7053, 0x9EA4, 0x7054, 0x9EA5, 0x7055, 0x9EA6, 0x7056, 0x9EA7, 0x7057, 0x9EA8, 0x7058, 0x9EA9, 0x7059, 0x9EAA, 0x705A, 0x9EAB, + 0x705B, 0x9EAC, 0x705C, 0x9EAD, 0x705D, 0x9EAE, 0x705E, 0xE5B1, 0x705F, 0x9EAF, 0x7060, 0x9EB0, 0x7061, 0x9EB1, 0x7062, 0x9EB2, + 0x7063, 0x9EB3, 0x7064, 0x9EB4, 0x7065, 0x9EB5, 0x7066, 0x9EB6, 0x7067, 0x9EB7, 0x7068, 0x9EB8, 0x7069, 0x9EB9, 0x706A, 0x9EBA, + 0x706B, 0xBBF0, 0x706C, 0xECE1, 0x706D, 0xC3F0, 0x706E, 0x9EBB, 0x706F, 0xB5C6, 0x7070, 0xBBD2, 0x7071, 0x9EBC, 0x7072, 0x9EBD, + 0x7073, 0x9EBE, 0x7074, 0x9EBF, 0x7075, 0xC1E9, 0x7076, 0xD4EE, 0x7077, 0x9EC0, 0x7078, 0xBEC4, 0x7079, 0x9EC1, 0x707A, 0x9EC2, + 0x707B, 0x9EC3, 0x707C, 0xD7C6, 0x707D, 0x9EC4, 0x707E, 0xD4D6, 0x707F, 0xB2D3, 0x7080, 0xECBE, 0x7081, 0x9EC5, 0x7082, 0x9EC6, + 0x7083, 0x9EC7, 0x7084, 0x9EC8, 0x7085, 0xEAC1, 0x7086, 0x9EC9, 0x7087, 0x9ECA, 0x7088, 0x9ECB, 0x7089, 0xC2AF, 0x708A, 0xB4B6, + 0x708B, 0x9ECC, 0x708C, 0x9ECD, 0x708D, 0x9ECE, 0x708E, 0xD1D7, 0x708F, 0x9ECF, 0x7090, 0x9ED0, 0x7091, 0x9ED1, 0x7092, 0xB3B4, + 0x7093, 0x9ED2, 0x7094, 0xC8B2, 0x7095, 0xBFBB, 0x7096, 0xECC0, 0x7097, 0x9ED3, 0x7098, 0x9ED4, 0x7099, 0xD6CB, 0x709A, 0x9ED5, + 0x709B, 0x9ED6, 0x709C, 0xECBF, 0x709D, 0xECC1, 0x709E, 0x9ED7, 0x709F, 0x9ED8, 0x70A0, 0x9ED9, 0x70A1, 0x9EDA, 0x70A2, 0x9EDB, + 0x70A3, 0x9EDC, 0x70A4, 0x9EDD, 0x70A5, 0x9EDE, 0x70A6, 0x9EDF, 0x70A7, 0x9EE0, 0x70A8, 0x9EE1, 0x70A9, 0x9EE2, 0x70AA, 0x9EE3, + 0x70AB, 0xECC5, 0x70AC, 0xBEE6, 0x70AD, 0xCCBF, 0x70AE, 0xC5DA, 0x70AF, 0xBEBC, 0x70B0, 0x9EE4, 0x70B1, 0xECC6, 0x70B2, 0x9EE5, + 0x70B3, 0xB1FE, 0x70B4, 0x9EE6, 0x70B5, 0x9EE7, 0x70B6, 0x9EE8, 0x70B7, 0xECC4, 0x70B8, 0xD5A8, 0x70B9, 0xB5E3, 0x70BA, 0x9EE9, + 0x70BB, 0xECC2, 0x70BC, 0xC1B6, 0x70BD, 0xB3E3, 0x70BE, 0x9EEA, 0x70BF, 0x9EEB, 0x70C0, 0xECC3, 0x70C1, 0xCBB8, 0x70C2, 0xC0C3, + 0x70C3, 0xCCFE, 0x70C4, 0x9EEC, 0x70C5, 0x9EED, 0x70C6, 0x9EEE, 0x70C7, 0x9EEF, 0x70C8, 0xC1D2, 0x70C9, 0x9EF0, 0x70CA, 0xECC8, + 0x70CB, 0x9EF1, 0x70CC, 0x9EF2, 0x70CD, 0x9EF3, 0x70CE, 0x9EF4, 0x70CF, 0x9EF5, 0x70D0, 0x9EF6, 0x70D1, 0x9EF7, 0x70D2, 0x9EF8, + 0x70D3, 0x9EF9, 0x70D4, 0x9EFA, 0x70D5, 0x9EFB, 0x70D6, 0x9EFC, 0x70D7, 0x9EFD, 0x70D8, 0xBAE6, 0x70D9, 0xC0D3, 0x70DA, 0x9EFE, + 0x70DB, 0xD6F2, 0x70DC, 0x9F40, 0x70DD, 0x9F41, 0x70DE, 0x9F42, 0x70DF, 0xD1CC, 0x70E0, 0x9F43, 0x70E1, 0x9F44, 0x70E2, 0x9F45, + 0x70E3, 0x9F46, 0x70E4, 0xBFBE, 0x70E5, 0x9F47, 0x70E6, 0xB7B3, 0x70E7, 0xC9D5, 0x70E8, 0xECC7, 0x70E9, 0xBBE2, 0x70EA, 0x9F48, + 0x70EB, 0xCCCC, 0x70EC, 0xBDFD, 0x70ED, 0xC8C8, 0x70EE, 0x9F49, 0x70EF, 0xCFA9, 0x70F0, 0x9F4A, 0x70F1, 0x9F4B, 0x70F2, 0x9F4C, + 0x70F3, 0x9F4D, 0x70F4, 0x9F4E, 0x70F5, 0x9F4F, 0x70F6, 0x9F50, 0x70F7, 0xCDE9, 0x70F8, 0x9F51, 0x70F9, 0xC5EB, 0x70FA, 0x9F52, + 0x70FB, 0x9F53, 0x70FC, 0x9F54, 0x70FD, 0xB7E9, 0x70FE, 0x9F55, 0x70FF, 0x9F56, 0x7100, 0x9F57, 0x7101, 0x9F58, 0x7102, 0x9F59, + 0x7103, 0x9F5A, 0x7104, 0x9F5B, 0x7105, 0x9F5C, 0x7106, 0x9F5D, 0x7107, 0x9F5E, 0x7108, 0x9F5F, 0x7109, 0xD1C9, 0x710A, 0xBAB8, + 0x710B, 0x9F60, 0x710C, 0x9F61, 0x710D, 0x9F62, 0x710E, 0x9F63, 0x710F, 0x9F64, 0x7110, 0xECC9, 0x7111, 0x9F65, 0x7112, 0x9F66, + 0x7113, 0xECCA, 0x7114, 0x9F67, 0x7115, 0xBBC0, 0x7116, 0xECCB, 0x7117, 0x9F68, 0x7118, 0xECE2, 0x7119, 0xB1BA, 0x711A, 0xB7D9, + 0x711B, 0x9F69, 0x711C, 0x9F6A, 0x711D, 0x9F6B, 0x711E, 0x9F6C, 0x711F, 0x9F6D, 0x7120, 0x9F6E, 0x7121, 0x9F6F, 0x7122, 0x9F70, + 0x7123, 0x9F71, 0x7124, 0x9F72, 0x7125, 0x9F73, 0x7126, 0xBDB9, 0x7127, 0x9F74, 0x7128, 0x9F75, 0x7129, 0x9F76, 0x712A, 0x9F77, + 0x712B, 0x9F78, 0x712C, 0x9F79, 0x712D, 0x9F7A, 0x712E, 0x9F7B, 0x712F, 0xECCC, 0x7130, 0xD1E6, 0x7131, 0xECCD, 0x7132, 0x9F7C, + 0x7133, 0x9F7D, 0x7134, 0x9F7E, 0x7135, 0x9F80, 0x7136, 0xC8BB, 0x7137, 0x9F81, 0x7138, 0x9F82, 0x7139, 0x9F83, 0x713A, 0x9F84, + 0x713B, 0x9F85, 0x713C, 0x9F86, 0x713D, 0x9F87, 0x713E, 0x9F88, 0x713F, 0x9F89, 0x7140, 0x9F8A, 0x7141, 0x9F8B, 0x7142, 0x9F8C, + 0x7143, 0x9F8D, 0x7144, 0x9F8E, 0x7145, 0xECD1, 0x7146, 0x9F8F, 0x7147, 0x9F90, 0x7148, 0x9F91, 0x7149, 0x9F92, 0x714A, 0xECD3, + 0x714B, 0x9F93, 0x714C, 0xBBCD, 0x714D, 0x9F94, 0x714E, 0xBCE5, 0x714F, 0x9F95, 0x7150, 0x9F96, 0x7151, 0x9F97, 0x7152, 0x9F98, + 0x7153, 0x9F99, 0x7154, 0x9F9A, 0x7155, 0x9F9B, 0x7156, 0x9F9C, 0x7157, 0x9F9D, 0x7158, 0x9F9E, 0x7159, 0x9F9F, 0x715A, 0x9FA0, + 0x715B, 0x9FA1, 0x715C, 0xECCF, 0x715D, 0x9FA2, 0x715E, 0xC9B7, 0x715F, 0x9FA3, 0x7160, 0x9FA4, 0x7161, 0x9FA5, 0x7162, 0x9FA6, + 0x7163, 0x9FA7, 0x7164, 0xC3BA, 0x7165, 0x9FA8, 0x7166, 0xECE3, 0x7167, 0xD5D5, 0x7168, 0xECD0, 0x7169, 0x9FA9, 0x716A, 0x9FAA, + 0x716B, 0x9FAB, 0x716C, 0x9FAC, 0x716D, 0x9FAD, 0x716E, 0xD6F3, 0x716F, 0x9FAE, 0x7170, 0x9FAF, 0x7171, 0x9FB0, 0x7172, 0xECD2, + 0x7173, 0xECCE, 0x7174, 0x9FB1, 0x7175, 0x9FB2, 0x7176, 0x9FB3, 0x7177, 0x9FB4, 0x7178, 0xECD4, 0x7179, 0x9FB5, 0x717A, 0xECD5, + 0x717B, 0x9FB6, 0x717C, 0x9FB7, 0x717D, 0xC9BF, 0x717E, 0x9FB8, 0x717F, 0x9FB9, 0x7180, 0x9FBA, 0x7181, 0x9FBB, 0x7182, 0x9FBC, + 0x7183, 0x9FBD, 0x7184, 0xCFA8, 0x7185, 0x9FBE, 0x7186, 0x9FBF, 0x7187, 0x9FC0, 0x7188, 0x9FC1, 0x7189, 0x9FC2, 0x718A, 0xD0DC, + 0x718B, 0x9FC3, 0x718C, 0x9FC4, 0x718D, 0x9FC5, 0x718E, 0x9FC6, 0x718F, 0xD1AC, 0x7190, 0x9FC7, 0x7191, 0x9FC8, 0x7192, 0x9FC9, + 0x7193, 0x9FCA, 0x7194, 0xC8DB, 0x7195, 0x9FCB, 0x7196, 0x9FCC, 0x7197, 0x9FCD, 0x7198, 0xECD6, 0x7199, 0xCEF5, 0x719A, 0x9FCE, + 0x719B, 0x9FCF, 0x719C, 0x9FD0, 0x719D, 0x9FD1, 0x719E, 0x9FD2, 0x719F, 0xCAEC, 0x71A0, 0xECDA, 0x71A1, 0x9FD3, 0x71A2, 0x9FD4, + 0x71A3, 0x9FD5, 0x71A4, 0x9FD6, 0x71A5, 0x9FD7, 0x71A6, 0x9FD8, 0x71A7, 0x9FD9, 0x71A8, 0xECD9, 0x71A9, 0x9FDA, 0x71AA, 0x9FDB, + 0x71AB, 0x9FDC, 0x71AC, 0xB0BE, 0x71AD, 0x9FDD, 0x71AE, 0x9FDE, 0x71AF, 0x9FDF, 0x71B0, 0x9FE0, 0x71B1, 0x9FE1, 0x71B2, 0x9FE2, + 0x71B3, 0xECD7, 0x71B4, 0x9FE3, 0x71B5, 0xECD8, 0x71B6, 0x9FE4, 0x71B7, 0x9FE5, 0x71B8, 0x9FE6, 0x71B9, 0xECE4, 0x71BA, 0x9FE7, + 0x71BB, 0x9FE8, 0x71BC, 0x9FE9, 0x71BD, 0x9FEA, 0x71BE, 0x9FEB, 0x71BF, 0x9FEC, 0x71C0, 0x9FED, 0x71C1, 0x9FEE, 0x71C2, 0x9FEF, + 0x71C3, 0xC8BC, 0x71C4, 0x9FF0, 0x71C5, 0x9FF1, 0x71C6, 0x9FF2, 0x71C7, 0x9FF3, 0x71C8, 0x9FF4, 0x71C9, 0x9FF5, 0x71CA, 0x9FF6, + 0x71CB, 0x9FF7, 0x71CC, 0x9FF8, 0x71CD, 0x9FF9, 0x71CE, 0xC1C7, 0x71CF, 0x9FFA, 0x71D0, 0x9FFB, 0x71D1, 0x9FFC, 0x71D2, 0x9FFD, + 0x71D3, 0x9FFE, 0x71D4, 0xECDC, 0x71D5, 0xD1E0, 0x71D6, 0xA040, 0x71D7, 0xA041, 0x71D8, 0xA042, 0x71D9, 0xA043, 0x71DA, 0xA044, + 0x71DB, 0xA045, 0x71DC, 0xA046, 0x71DD, 0xA047, 0x71DE, 0xA048, 0x71DF, 0xA049, 0x71E0, 0xECDB, 0x71E1, 0xA04A, 0x71E2, 0xA04B, + 0x71E3, 0xA04C, 0x71E4, 0xA04D, 0x71E5, 0xD4EF, 0x71E6, 0xA04E, 0x71E7, 0xECDD, 0x71E8, 0xA04F, 0x71E9, 0xA050, 0x71EA, 0xA051, + 0x71EB, 0xA052, 0x71EC, 0xA053, 0x71ED, 0xA054, 0x71EE, 0xDBC6, 0x71EF, 0xA055, 0x71F0, 0xA056, 0x71F1, 0xA057, 0x71F2, 0xA058, + 0x71F3, 0xA059, 0x71F4, 0xA05A, 0x71F5, 0xA05B, 0x71F6, 0xA05C, 0x71F7, 0xA05D, 0x71F8, 0xA05E, 0x71F9, 0xECDE, 0x71FA, 0xA05F, + 0x71FB, 0xA060, 0x71FC, 0xA061, 0x71FD, 0xA062, 0x71FE, 0xA063, 0x71FF, 0xA064, 0x7200, 0xA065, 0x7201, 0xA066, 0x7202, 0xA067, + 0x7203, 0xA068, 0x7204, 0xA069, 0x7205, 0xA06A, 0x7206, 0xB1AC, 0x7207, 0xA06B, 0x7208, 0xA06C, 0x7209, 0xA06D, 0x720A, 0xA06E, + 0x720B, 0xA06F, 0x720C, 0xA070, 0x720D, 0xA071, 0x720E, 0xA072, 0x720F, 0xA073, 0x7210, 0xA074, 0x7211, 0xA075, 0x7212, 0xA076, + 0x7213, 0xA077, 0x7214, 0xA078, 0x7215, 0xA079, 0x7216, 0xA07A, 0x7217, 0xA07B, 0x7218, 0xA07C, 0x7219, 0xA07D, 0x721A, 0xA07E, + 0x721B, 0xA080, 0x721C, 0xA081, 0x721D, 0xECDF, 0x721E, 0xA082, 0x721F, 0xA083, 0x7220, 0xA084, 0x7221, 0xA085, 0x7222, 0xA086, + 0x7223, 0xA087, 0x7224, 0xA088, 0x7225, 0xA089, 0x7226, 0xA08A, 0x7227, 0xA08B, 0x7228, 0xECE0, 0x7229, 0xA08C, 0x722A, 0xD7A6, + 0x722B, 0xA08D, 0x722C, 0xC5C0, 0x722D, 0xA08E, 0x722E, 0xA08F, 0x722F, 0xA090, 0x7230, 0xEBBC, 0x7231, 0xB0AE, 0x7232, 0xA091, + 0x7233, 0xA092, 0x7234, 0xA093, 0x7235, 0xBEF4, 0x7236, 0xB8B8, 0x7237, 0xD2AF, 0x7238, 0xB0D6, 0x7239, 0xB5F9, 0x723A, 0xA094, + 0x723B, 0xD8B3, 0x723C, 0xA095, 0x723D, 0xCBAC, 0x723E, 0xA096, 0x723F, 0xE3DD, 0x7240, 0xA097, 0x7241, 0xA098, 0x7242, 0xA099, + 0x7243, 0xA09A, 0x7244, 0xA09B, 0x7245, 0xA09C, 0x7246, 0xA09D, 0x7247, 0xC6AC, 0x7248, 0xB0E6, 0x7249, 0xA09E, 0x724A, 0xA09F, + 0x724B, 0xA0A0, 0x724C, 0xC5C6, 0x724D, 0xEBB9, 0x724E, 0xA0A1, 0x724F, 0xA0A2, 0x7250, 0xA0A3, 0x7251, 0xA0A4, 0x7252, 0xEBBA, + 0x7253, 0xA0A5, 0x7254, 0xA0A6, 0x7255, 0xA0A7, 0x7256, 0xEBBB, 0x7257, 0xA0A8, 0x7258, 0xA0A9, 0x7259, 0xD1C0, 0x725A, 0xA0AA, + 0x725B, 0xC5A3, 0x725C, 0xA0AB, 0x725D, 0xEAF2, 0x725E, 0xA0AC, 0x725F, 0xC4B2, 0x7260, 0xA0AD, 0x7261, 0xC4B5, 0x7262, 0xC0CE, + 0x7263, 0xA0AE, 0x7264, 0xA0AF, 0x7265, 0xA0B0, 0x7266, 0xEAF3, 0x7267, 0xC4C1, 0x7268, 0xA0B1, 0x7269, 0xCEEF, 0x726A, 0xA0B2, + 0x726B, 0xA0B3, 0x726C, 0xA0B4, 0x726D, 0xA0B5, 0x726E, 0xEAF0, 0x726F, 0xEAF4, 0x7270, 0xA0B6, 0x7271, 0xA0B7, 0x7272, 0xC9FC, + 0x7273, 0xA0B8, 0x7274, 0xA0B9, 0x7275, 0xC7A3, 0x7276, 0xA0BA, 0x7277, 0xA0BB, 0x7278, 0xA0BC, 0x7279, 0xCCD8, 0x727A, 0xCEFE, + 0x727B, 0xA0BD, 0x727C, 0xA0BE, 0x727D, 0xA0BF, 0x727E, 0xEAF5, 0x727F, 0xEAF6, 0x7280, 0xCFAC, 0x7281, 0xC0E7, 0x7282, 0xA0C0, + 0x7283, 0xA0C1, 0x7284, 0xEAF7, 0x7285, 0xA0C2, 0x7286, 0xA0C3, 0x7287, 0xA0C4, 0x7288, 0xA0C5, 0x7289, 0xA0C6, 0x728A, 0xB6BF, + 0x728B, 0xEAF8, 0x728C, 0xA0C7, 0x728D, 0xEAF9, 0x728E, 0xA0C8, 0x728F, 0xEAFA, 0x7290, 0xA0C9, 0x7291, 0xA0CA, 0x7292, 0xEAFB, + 0x7293, 0xA0CB, 0x7294, 0xA0CC, 0x7295, 0xA0CD, 0x7296, 0xA0CE, 0x7297, 0xA0CF, 0x7298, 0xA0D0, 0x7299, 0xA0D1, 0x729A, 0xA0D2, + 0x729B, 0xA0D3, 0x729C, 0xA0D4, 0x729D, 0xA0D5, 0x729E, 0xA0D6, 0x729F, 0xEAF1, 0x72A0, 0xA0D7, 0x72A1, 0xA0D8, 0x72A2, 0xA0D9, + 0x72A3, 0xA0DA, 0x72A4, 0xA0DB, 0x72A5, 0xA0DC, 0x72A6, 0xA0DD, 0x72A7, 0xA0DE, 0x72A8, 0xA0DF, 0x72A9, 0xA0E0, 0x72AA, 0xA0E1, + 0x72AB, 0xA0E2, 0x72AC, 0xC8AE, 0x72AD, 0xE1EB, 0x72AE, 0xA0E3, 0x72AF, 0xB7B8, 0x72B0, 0xE1EC, 0x72B1, 0xA0E4, 0x72B2, 0xA0E5, + 0x72B3, 0xA0E6, 0x72B4, 0xE1ED, 0x72B5, 0xA0E7, 0x72B6, 0xD7B4, 0x72B7, 0xE1EE, 0x72B8, 0xE1EF, 0x72B9, 0xD3CC, 0x72BA, 0xA0E8, + 0x72BB, 0xA0E9, 0x72BC, 0xA0EA, 0x72BD, 0xA0EB, 0x72BE, 0xA0EC, 0x72BF, 0xA0ED, 0x72C0, 0xA0EE, 0x72C1, 0xE1F1, 0x72C2, 0xBFF1, + 0x72C3, 0xE1F0, 0x72C4, 0xB5D2, 0x72C5, 0xA0EF, 0x72C6, 0xA0F0, 0x72C7, 0xA0F1, 0x72C8, 0xB1B7, 0x72C9, 0xA0F2, 0x72CA, 0xA0F3, + 0x72CB, 0xA0F4, 0x72CC, 0xA0F5, 0x72CD, 0xE1F3, 0x72CE, 0xE1F2, 0x72CF, 0xA0F6, 0x72D0, 0xBAFC, 0x72D1, 0xA0F7, 0x72D2, 0xE1F4, + 0x72D3, 0xA0F8, 0x72D4, 0xA0F9, 0x72D5, 0xA0FA, 0x72D6, 0xA0FB, 0x72D7, 0xB9B7, 0x72D8, 0xA0FC, 0x72D9, 0xBED1, 0x72DA, 0xA0FD, + 0x72DB, 0xA0FE, 0x72DC, 0xAA40, 0x72DD, 0xAA41, 0x72DE, 0xC4FC, 0x72DF, 0xAA42, 0x72E0, 0xBADD, 0x72E1, 0xBDC6, 0x72E2, 0xAA43, + 0x72E3, 0xAA44, 0x72E4, 0xAA45, 0x72E5, 0xAA46, 0x72E6, 0xAA47, 0x72E7, 0xAA48, 0x72E8, 0xE1F5, 0x72E9, 0xE1F7, 0x72EA, 0xAA49, + 0x72EB, 0xAA4A, 0x72EC, 0xB6C0, 0x72ED, 0xCFC1, 0x72EE, 0xCAA8, 0x72EF, 0xE1F6, 0x72F0, 0xD5F8, 0x72F1, 0xD3FC, 0x72F2, 0xE1F8, + 0x72F3, 0xE1FC, 0x72F4, 0xE1F9, 0x72F5, 0xAA4B, 0x72F6, 0xAA4C, 0x72F7, 0xE1FA, 0x72F8, 0xC0EA, 0x72F9, 0xAA4D, 0x72FA, 0xE1FE, + 0x72FB, 0xE2A1, 0x72FC, 0xC0C7, 0x72FD, 0xAA4E, 0x72FE, 0xAA4F, 0x72FF, 0xAA50, 0x7300, 0xAA51, 0x7301, 0xE1FB, 0x7302, 0xAA52, + 0x7303, 0xE1FD, 0x7304, 0xAA53, 0x7305, 0xAA54, 0x7306, 0xAA55, 0x7307, 0xAA56, 0x7308, 0xAA57, 0x7309, 0xAA58, 0x730A, 0xE2A5, + 0x730B, 0xAA59, 0x730C, 0xAA5A, 0x730D, 0xAA5B, 0x730E, 0xC1D4, 0x730F, 0xAA5C, 0x7310, 0xAA5D, 0x7311, 0xAA5E, 0x7312, 0xAA5F, + 0x7313, 0xE2A3, 0x7314, 0xAA60, 0x7315, 0xE2A8, 0x7316, 0xB2FE, 0x7317, 0xE2A2, 0x7318, 0xAA61, 0x7319, 0xAA62, 0x731A, 0xAA63, + 0x731B, 0xC3CD, 0x731C, 0xB2C2, 0x731D, 0xE2A7, 0x731E, 0xE2A6, 0x731F, 0xAA64, 0x7320, 0xAA65, 0x7321, 0xE2A4, 0x7322, 0xE2A9, + 0x7323, 0xAA66, 0x7324, 0xAA67, 0x7325, 0xE2AB, 0x7326, 0xAA68, 0x7327, 0xAA69, 0x7328, 0xAA6A, 0x7329, 0xD0C9, 0x732A, 0xD6ED, + 0x732B, 0xC3A8, 0x732C, 0xE2AC, 0x732D, 0xAA6B, 0x732E, 0xCFD7, 0x732F, 0xAA6C, 0x7330, 0xAA6D, 0x7331, 0xE2AE, 0x7332, 0xAA6E, + 0x7333, 0xAA6F, 0x7334, 0xBAEF, 0x7335, 0xAA70, 0x7336, 0xAA71, 0x7337, 0xE9E0, 0x7338, 0xE2AD, 0x7339, 0xE2AA, 0x733A, 0xAA72, + 0x733B, 0xAA73, 0x733C, 0xAA74, 0x733D, 0xAA75, 0x733E, 0xBBAB, 0x733F, 0xD4B3, 0x7340, 0xAA76, 0x7341, 0xAA77, 0x7342, 0xAA78, + 0x7343, 0xAA79, 0x7344, 0xAA7A, 0x7345, 0xAA7B, 0x7346, 0xAA7C, 0x7347, 0xAA7D, 0x7348, 0xAA7E, 0x7349, 0xAA80, 0x734A, 0xAA81, + 0x734B, 0xAA82, 0x734C, 0xAA83, 0x734D, 0xE2B0, 0x734E, 0xAA84, 0x734F, 0xAA85, 0x7350, 0xE2AF, 0x7351, 0xAA86, 0x7352, 0xE9E1, + 0x7353, 0xAA87, 0x7354, 0xAA88, 0x7355, 0xAA89, 0x7356, 0xAA8A, 0x7357, 0xE2B1, 0x7358, 0xAA8B, 0x7359, 0xAA8C, 0x735A, 0xAA8D, + 0x735B, 0xAA8E, 0x735C, 0xAA8F, 0x735D, 0xAA90, 0x735E, 0xAA91, 0x735F, 0xAA92, 0x7360, 0xE2B2, 0x7361, 0xAA93, 0x7362, 0xAA94, + 0x7363, 0xAA95, 0x7364, 0xAA96, 0x7365, 0xAA97, 0x7366, 0xAA98, 0x7367, 0xAA99, 0x7368, 0xAA9A, 0x7369, 0xAA9B, 0x736A, 0xAA9C, + 0x736B, 0xAA9D, 0x736C, 0xE2B3, 0x736D, 0xCCA1, 0x736E, 0xAA9E, 0x736F, 0xE2B4, 0x7370, 0xAA9F, 0x7371, 0xAAA0, 0x7372, 0xAB40, + 0x7373, 0xAB41, 0x7374, 0xAB42, 0x7375, 0xAB43, 0x7376, 0xAB44, 0x7377, 0xAB45, 0x7378, 0xAB46, 0x7379, 0xAB47, 0x737A, 0xAB48, + 0x737B, 0xAB49, 0x737C, 0xAB4A, 0x737D, 0xAB4B, 0x737E, 0xE2B5, 0x737F, 0xAB4C, 0x7380, 0xAB4D, 0x7381, 0xAB4E, 0x7382, 0xAB4F, + 0x7383, 0xAB50, 0x7384, 0xD0FE, 0x7385, 0xAB51, 0x7386, 0xAB52, 0x7387, 0xC2CA, 0x7388, 0xAB53, 0x7389, 0xD3F1, 0x738A, 0xAB54, + 0x738B, 0xCDF5, 0x738C, 0xAB55, 0x738D, 0xAB56, 0x738E, 0xE7E0, 0x738F, 0xAB57, 0x7390, 0xAB58, 0x7391, 0xE7E1, 0x7392, 0xAB59, + 0x7393, 0xAB5A, 0x7394, 0xAB5B, 0x7395, 0xAB5C, 0x7396, 0xBEC1, 0x7397, 0xAB5D, 0x7398, 0xAB5E, 0x7399, 0xAB5F, 0x739A, 0xAB60, + 0x739B, 0xC2EA, 0x739C, 0xAB61, 0x739D, 0xAB62, 0x739E, 0xAB63, 0x739F, 0xE7E4, 0x73A0, 0xAB64, 0x73A1, 0xAB65, 0x73A2, 0xE7E3, + 0x73A3, 0xAB66, 0x73A4, 0xAB67, 0x73A5, 0xAB68, 0x73A6, 0xAB69, 0x73A7, 0xAB6A, 0x73A8, 0xAB6B, 0x73A9, 0xCDE6, 0x73AA, 0xAB6C, + 0x73AB, 0xC3B5, 0x73AC, 0xAB6D, 0x73AD, 0xAB6E, 0x73AE, 0xE7E2, 0x73AF, 0xBBB7, 0x73B0, 0xCFD6, 0x73B1, 0xAB6F, 0x73B2, 0xC1E1, + 0x73B3, 0xE7E9, 0x73B4, 0xAB70, 0x73B5, 0xAB71, 0x73B6, 0xAB72, 0x73B7, 0xE7E8, 0x73B8, 0xAB73, 0x73B9, 0xAB74, 0x73BA, 0xE7F4, + 0x73BB, 0xB2A3, 0x73BC, 0xAB75, 0x73BD, 0xAB76, 0x73BE, 0xAB77, 0x73BF, 0xAB78, 0x73C0, 0xE7EA, 0x73C1, 0xAB79, 0x73C2, 0xE7E6, + 0x73C3, 0xAB7A, 0x73C4, 0xAB7B, 0x73C5, 0xAB7C, 0x73C6, 0xAB7D, 0x73C7, 0xAB7E, 0x73C8, 0xE7EC, 0x73C9, 0xE7EB, 0x73CA, 0xC9BA, + 0x73CB, 0xAB80, 0x73CC, 0xAB81, 0x73CD, 0xD5E4, 0x73CE, 0xAB82, 0x73CF, 0xE7E5, 0x73D0, 0xB7A9, 0x73D1, 0xE7E7, 0x73D2, 0xAB83, + 0x73D3, 0xAB84, 0x73D4, 0xAB85, 0x73D5, 0xAB86, 0x73D6, 0xAB87, 0x73D7, 0xAB88, 0x73D8, 0xAB89, 0x73D9, 0xE7EE, 0x73DA, 0xAB8A, + 0x73DB, 0xAB8B, 0x73DC, 0xAB8C, 0x73DD, 0xAB8D, 0x73DE, 0xE7F3, 0x73DF, 0xAB8E, 0x73E0, 0xD6E9, 0x73E1, 0xAB8F, 0x73E2, 0xAB90, + 0x73E3, 0xAB91, 0x73E4, 0xAB92, 0x73E5, 0xE7ED, 0x73E6, 0xAB93, 0x73E7, 0xE7F2, 0x73E8, 0xAB94, 0x73E9, 0xE7F1, 0x73EA, 0xAB95, + 0x73EB, 0xAB96, 0x73EC, 0xAB97, 0x73ED, 0xB0E0, 0x73EE, 0xAB98, 0x73EF, 0xAB99, 0x73F0, 0xAB9A, 0x73F1, 0xAB9B, 0x73F2, 0xE7F5, + 0x73F3, 0xAB9C, 0x73F4, 0xAB9D, 0x73F5, 0xAB9E, 0x73F6, 0xAB9F, 0x73F7, 0xABA0, 0x73F8, 0xAC40, 0x73F9, 0xAC41, 0x73FA, 0xAC42, + 0x73FB, 0xAC43, 0x73FC, 0xAC44, 0x73FD, 0xAC45, 0x73FE, 0xAC46, 0x73FF, 0xAC47, 0x7400, 0xAC48, 0x7401, 0xAC49, 0x7402, 0xAC4A, + 0x7403, 0xC7F2, 0x7404, 0xAC4B, 0x7405, 0xC0C5, 0x7406, 0xC0ED, 0x7407, 0xAC4C, 0x7408, 0xAC4D, 0x7409, 0xC1F0, 0x740A, 0xE7F0, + 0x740B, 0xAC4E, 0x740C, 0xAC4F, 0x740D, 0xAC50, 0x740E, 0xAC51, 0x740F, 0xE7F6, 0x7410, 0xCBF6, 0x7411, 0xAC52, 0x7412, 0xAC53, + 0x7413, 0xAC54, 0x7414, 0xAC55, 0x7415, 0xAC56, 0x7416, 0xAC57, 0x7417, 0xAC58, 0x7418, 0xAC59, 0x7419, 0xAC5A, 0x741A, 0xE8A2, + 0x741B, 0xE8A1, 0x741C, 0xAC5B, 0x741D, 0xAC5C, 0x741E, 0xAC5D, 0x741F, 0xAC5E, 0x7420, 0xAC5F, 0x7421, 0xAC60, 0x7422, 0xD7C1, + 0x7423, 0xAC61, 0x7424, 0xAC62, 0x7425, 0xE7FA, 0x7426, 0xE7F9, 0x7427, 0xAC63, 0x7428, 0xE7FB, 0x7429, 0xAC64, 0x742A, 0xE7F7, + 0x742B, 0xAC65, 0x742C, 0xE7FE, 0x742D, 0xAC66, 0x742E, 0xE7FD, 0x742F, 0xAC67, 0x7430, 0xE7FC, 0x7431, 0xAC68, 0x7432, 0xAC69, + 0x7433, 0xC1D5, 0x7434, 0xC7D9, 0x7435, 0xC5FD, 0x7436, 0xC5C3, 0x7437, 0xAC6A, 0x7438, 0xAC6B, 0x7439, 0xAC6C, 0x743A, 0xAC6D, + 0x743B, 0xAC6E, 0x743C, 0xC7ED, 0x743D, 0xAC6F, 0x743E, 0xAC70, 0x743F, 0xAC71, 0x7440, 0xAC72, 0x7441, 0xE8A3, 0x7442, 0xAC73, + 0x7443, 0xAC74, 0x7444, 0xAC75, 0x7445, 0xAC76, 0x7446, 0xAC77, 0x7447, 0xAC78, 0x7448, 0xAC79, 0x7449, 0xAC7A, 0x744A, 0xAC7B, + 0x744B, 0xAC7C, 0x744C, 0xAC7D, 0x744D, 0xAC7E, 0x744E, 0xAC80, 0x744F, 0xAC81, 0x7450, 0xAC82, 0x7451, 0xAC83, 0x7452, 0xAC84, + 0x7453, 0xAC85, 0x7454, 0xAC86, 0x7455, 0xE8A6, 0x7456, 0xAC87, 0x7457, 0xE8A5, 0x7458, 0xAC88, 0x7459, 0xE8A7, 0x745A, 0xBAF7, + 0x745B, 0xE7F8, 0x745C, 0xE8A4, 0x745D, 0xAC89, 0x745E, 0xC8F0, 0x745F, 0xC9AA, 0x7460, 0xAC8A, 0x7461, 0xAC8B, 0x7462, 0xAC8C, + 0x7463, 0xAC8D, 0x7464, 0xAC8E, 0x7465, 0xAC8F, 0x7466, 0xAC90, 0x7467, 0xAC91, 0x7468, 0xAC92, 0x7469, 0xAC93, 0x746A, 0xAC94, + 0x746B, 0xAC95, 0x746C, 0xAC96, 0x746D, 0xE8A9, 0x746E, 0xAC97, 0x746F, 0xAC98, 0x7470, 0xB9E5, 0x7471, 0xAC99, 0x7472, 0xAC9A, + 0x7473, 0xAC9B, 0x7474, 0xAC9C, 0x7475, 0xAC9D, 0x7476, 0xD1FE, 0x7477, 0xE8A8, 0x7478, 0xAC9E, 0x7479, 0xAC9F, 0x747A, 0xACA0, + 0x747B, 0xAD40, 0x747C, 0xAD41, 0x747D, 0xAD42, 0x747E, 0xE8AA, 0x747F, 0xAD43, 0x7480, 0xE8AD, 0x7481, 0xE8AE, 0x7482, 0xAD44, + 0x7483, 0xC1A7, 0x7484, 0xAD45, 0x7485, 0xAD46, 0x7486, 0xAD47, 0x7487, 0xE8AF, 0x7488, 0xAD48, 0x7489, 0xAD49, 0x748A, 0xAD4A, + 0x748B, 0xE8B0, 0x748C, 0xAD4B, 0x748D, 0xAD4C, 0x748E, 0xE8AC, 0x748F, 0xAD4D, 0x7490, 0xE8B4, 0x7491, 0xAD4E, 0x7492, 0xAD4F, + 0x7493, 0xAD50, 0x7494, 0xAD51, 0x7495, 0xAD52, 0x7496, 0xAD53, 0x7497, 0xAD54, 0x7498, 0xAD55, 0x7499, 0xAD56, 0x749A, 0xAD57, + 0x749B, 0xAD58, 0x749C, 0xE8AB, 0x749D, 0xAD59, 0x749E, 0xE8B1, 0x749F, 0xAD5A, 0x74A0, 0xAD5B, 0x74A1, 0xAD5C, 0x74A2, 0xAD5D, + 0x74A3, 0xAD5E, 0x74A4, 0xAD5F, 0x74A5, 0xAD60, 0x74A6, 0xAD61, 0x74A7, 0xE8B5, 0x74A8, 0xE8B2, 0x74A9, 0xE8B3, 0x74AA, 0xAD62, + 0x74AB, 0xAD63, 0x74AC, 0xAD64, 0x74AD, 0xAD65, 0x74AE, 0xAD66, 0x74AF, 0xAD67, 0x74B0, 0xAD68, 0x74B1, 0xAD69, 0x74B2, 0xAD6A, + 0x74B3, 0xAD6B, 0x74B4, 0xAD6C, 0x74B5, 0xAD6D, 0x74B6, 0xAD6E, 0x74B7, 0xAD6F, 0x74B8, 0xAD70, 0x74B9, 0xAD71, 0x74BA, 0xE8B7, + 0x74BB, 0xAD72, 0x74BC, 0xAD73, 0x74BD, 0xAD74, 0x74BE, 0xAD75, 0x74BF, 0xAD76, 0x74C0, 0xAD77, 0x74C1, 0xAD78, 0x74C2, 0xAD79, + 0x74C3, 0xAD7A, 0x74C4, 0xAD7B, 0x74C5, 0xAD7C, 0x74C6, 0xAD7D, 0x74C7, 0xAD7E, 0x74C8, 0xAD80, 0x74C9, 0xAD81, 0x74CA, 0xAD82, + 0x74CB, 0xAD83, 0x74CC, 0xAD84, 0x74CD, 0xAD85, 0x74CE, 0xAD86, 0x74CF, 0xAD87, 0x74D0, 0xAD88, 0x74D1, 0xAD89, 0x74D2, 0xE8B6, + 0x74D3, 0xAD8A, 0x74D4, 0xAD8B, 0x74D5, 0xAD8C, 0x74D6, 0xAD8D, 0x74D7, 0xAD8E, 0x74D8, 0xAD8F, 0x74D9, 0xAD90, 0x74DA, 0xAD91, + 0x74DB, 0xAD92, 0x74DC, 0xB9CF, 0x74DD, 0xAD93, 0x74DE, 0xF0AC, 0x74DF, 0xAD94, 0x74E0, 0xF0AD, 0x74E1, 0xAD95, 0x74E2, 0xC6B0, + 0x74E3, 0xB0EA, 0x74E4, 0xC8BF, 0x74E5, 0xAD96, 0x74E6, 0xCDDF, 0x74E7, 0xAD97, 0x74E8, 0xAD98, 0x74E9, 0xAD99, 0x74EA, 0xAD9A, + 0x74EB, 0xAD9B, 0x74EC, 0xAD9C, 0x74ED, 0xAD9D, 0x74EE, 0xCECD, 0x74EF, 0xEAB1, 0x74F0, 0xAD9E, 0x74F1, 0xAD9F, 0x74F2, 0xADA0, + 0x74F3, 0xAE40, 0x74F4, 0xEAB2, 0x74F5, 0xAE41, 0x74F6, 0xC6BF, 0x74F7, 0xB4C9, 0x74F8, 0xAE42, 0x74F9, 0xAE43, 0x74FA, 0xAE44, + 0x74FB, 0xAE45, 0x74FC, 0xAE46, 0x74FD, 0xAE47, 0x74FE, 0xAE48, 0x74FF, 0xEAB3, 0x7500, 0xAE49, 0x7501, 0xAE4A, 0x7502, 0xAE4B, + 0x7503, 0xAE4C, 0x7504, 0xD5E7, 0x7505, 0xAE4D, 0x7506, 0xAE4E, 0x7507, 0xAE4F, 0x7508, 0xAE50, 0x7509, 0xAE51, 0x750A, 0xAE52, + 0x750B, 0xAE53, 0x750C, 0xAE54, 0x750D, 0xDDF9, 0x750E, 0xAE55, 0x750F, 0xEAB4, 0x7510, 0xAE56, 0x7511, 0xEAB5, 0x7512, 0xAE57, + 0x7513, 0xEAB6, 0x7514, 0xAE58, 0x7515, 0xAE59, 0x7516, 0xAE5A, 0x7517, 0xAE5B, 0x7518, 0xB8CA, 0x7519, 0xDFB0, 0x751A, 0xC9F5, + 0x751B, 0xAE5C, 0x751C, 0xCCF0, 0x751D, 0xAE5D, 0x751E, 0xAE5E, 0x751F, 0xC9FA, 0x7520, 0xAE5F, 0x7521, 0xAE60, 0x7522, 0xAE61, + 0x7523, 0xAE62, 0x7524, 0xAE63, 0x7525, 0xC9FB, 0x7526, 0xAE64, 0x7527, 0xAE65, 0x7528, 0xD3C3, 0x7529, 0xCBA6, 0x752A, 0xAE66, + 0x752B, 0xB8A6, 0x752C, 0xF0AE, 0x752D, 0xB1C2, 0x752E, 0xAE67, 0x752F, 0xE5B8, 0x7530, 0xCCEF, 0x7531, 0xD3C9, 0x7532, 0xBCD7, + 0x7533, 0xC9EA, 0x7534, 0xAE68, 0x7535, 0xB5E7, 0x7536, 0xAE69, 0x7537, 0xC4D0, 0x7538, 0xB5E9, 0x7539, 0xAE6A, 0x753A, 0xEEAE, + 0x753B, 0xBBAD, 0x753C, 0xAE6B, 0x753D, 0xAE6C, 0x753E, 0xE7DE, 0x753F, 0xAE6D, 0x7540, 0xEEAF, 0x7541, 0xAE6E, 0x7542, 0xAE6F, + 0x7543, 0xAE70, 0x7544, 0xAE71, 0x7545, 0xB3A9, 0x7546, 0xAE72, 0x7547, 0xAE73, 0x7548, 0xEEB2, 0x7549, 0xAE74, 0x754A, 0xAE75, + 0x754B, 0xEEB1, 0x754C, 0xBDE7, 0x754D, 0xAE76, 0x754E, 0xEEB0, 0x754F, 0xCEB7, 0x7550, 0xAE77, 0x7551, 0xAE78, 0x7552, 0xAE79, + 0x7553, 0xAE7A, 0x7554, 0xC5CF, 0x7555, 0xAE7B, 0x7556, 0xAE7C, 0x7557, 0xAE7D, 0x7558, 0xAE7E, 0x7559, 0xC1F4, 0x755A, 0xDBCE, + 0x755B, 0xEEB3, 0x755C, 0xD0F3, 0x755D, 0xAE80, 0x755E, 0xAE81, 0x755F, 0xAE82, 0x7560, 0xAE83, 0x7561, 0xAE84, 0x7562, 0xAE85, + 0x7563, 0xAE86, 0x7564, 0xAE87, 0x7565, 0xC2D4, 0x7566, 0xC6E8, 0x7567, 0xAE88, 0x7568, 0xAE89, 0x7569, 0xAE8A, 0x756A, 0xB7AC, + 0x756B, 0xAE8B, 0x756C, 0xAE8C, 0x756D, 0xAE8D, 0x756E, 0xAE8E, 0x756F, 0xAE8F, 0x7570, 0xAE90, 0x7571, 0xAE91, 0x7572, 0xEEB4, + 0x7573, 0xAE92, 0x7574, 0xB3EB, 0x7575, 0xAE93, 0x7576, 0xAE94, 0x7577, 0xAE95, 0x7578, 0xBBFB, 0x7579, 0xEEB5, 0x757A, 0xAE96, + 0x757B, 0xAE97, 0x757C, 0xAE98, 0x757D, 0xAE99, 0x757E, 0xAE9A, 0x757F, 0xE7DC, 0x7580, 0xAE9B, 0x7581, 0xAE9C, 0x7582, 0xAE9D, + 0x7583, 0xEEB6, 0x7584, 0xAE9E, 0x7585, 0xAE9F, 0x7586, 0xBDAE, 0x7587, 0xAEA0, 0x7588, 0xAF40, 0x7589, 0xAF41, 0x758A, 0xAF42, + 0x758B, 0xF1E2, 0x758C, 0xAF43, 0x758D, 0xAF44, 0x758E, 0xAF45, 0x758F, 0xCAE8, 0x7590, 0xAF46, 0x7591, 0xD2C9, 0x7592, 0xF0DA, + 0x7593, 0xAF47, 0x7594, 0xF0DB, 0x7595, 0xAF48, 0x7596, 0xF0DC, 0x7597, 0xC1C6, 0x7598, 0xAF49, 0x7599, 0xB8ED, 0x759A, 0xBECE, + 0x759B, 0xAF4A, 0x759C, 0xAF4B, 0x759D, 0xF0DE, 0x759E, 0xAF4C, 0x759F, 0xC5B1, 0x75A0, 0xF0DD, 0x75A1, 0xD1F1, 0x75A2, 0xAF4D, + 0x75A3, 0xF0E0, 0x75A4, 0xB0CC, 0x75A5, 0xBDEA, 0x75A6, 0xAF4E, 0x75A7, 0xAF4F, 0x75A8, 0xAF50, 0x75A9, 0xAF51, 0x75AA, 0xAF52, + 0x75AB, 0xD2DF, 0x75AC, 0xF0DF, 0x75AD, 0xAF53, 0x75AE, 0xB4AF, 0x75AF, 0xB7E8, 0x75B0, 0xF0E6, 0x75B1, 0xF0E5, 0x75B2, 0xC6A3, + 0x75B3, 0xF0E1, 0x75B4, 0xF0E2, 0x75B5, 0xB4C3, 0x75B6, 0xAF54, 0x75B7, 0xAF55, 0x75B8, 0xF0E3, 0x75B9, 0xD5EE, 0x75BA, 0xAF56, + 0x75BB, 0xAF57, 0x75BC, 0xCCDB, 0x75BD, 0xBED2, 0x75BE, 0xBCB2, 0x75BF, 0xAF58, 0x75C0, 0xAF59, 0x75C1, 0xAF5A, 0x75C2, 0xF0E8, + 0x75C3, 0xF0E7, 0x75C4, 0xF0E4, 0x75C5, 0xB2A1, 0x75C6, 0xAF5B, 0x75C7, 0xD6A2, 0x75C8, 0xD3B8, 0x75C9, 0xBEB7, 0x75CA, 0xC8AC, + 0x75CB, 0xAF5C, 0x75CC, 0xAF5D, 0x75CD, 0xF0EA, 0x75CE, 0xAF5E, 0x75CF, 0xAF5F, 0x75D0, 0xAF60, 0x75D1, 0xAF61, 0x75D2, 0xD1F7, + 0x75D3, 0xAF62, 0x75D4, 0xD6CC, 0x75D5, 0xBADB, 0x75D6, 0xF0E9, 0x75D7, 0xAF63, 0x75D8, 0xB6BB, 0x75D9, 0xAF64, 0x75DA, 0xAF65, + 0x75DB, 0xCDB4, 0x75DC, 0xAF66, 0x75DD, 0xAF67, 0x75DE, 0xC6A6, 0x75DF, 0xAF68, 0x75E0, 0xAF69, 0x75E1, 0xAF6A, 0x75E2, 0xC1A1, + 0x75E3, 0xF0EB, 0x75E4, 0xF0EE, 0x75E5, 0xAF6B, 0x75E6, 0xF0ED, 0x75E7, 0xF0F0, 0x75E8, 0xF0EC, 0x75E9, 0xAF6C, 0x75EA, 0xBBBE, + 0x75EB, 0xF0EF, 0x75EC, 0xAF6D, 0x75ED, 0xAF6E, 0x75EE, 0xAF6F, 0x75EF, 0xAF70, 0x75F0, 0xCCB5, 0x75F1, 0xF0F2, 0x75F2, 0xAF71, + 0x75F3, 0xAF72, 0x75F4, 0xB3D5, 0x75F5, 0xAF73, 0x75F6, 0xAF74, 0x75F7, 0xAF75, 0x75F8, 0xAF76, 0x75F9, 0xB1D4, 0x75FA, 0xAF77, + 0x75FB, 0xAF78, 0x75FC, 0xF0F3, 0x75FD, 0xAF79, 0x75FE, 0xAF7A, 0x75FF, 0xF0F4, 0x7600, 0xF0F6, 0x7601, 0xB4E1, 0x7602, 0xAF7B, + 0x7603, 0xF0F1, 0x7604, 0xAF7C, 0x7605, 0xF0F7, 0x7606, 0xAF7D, 0x7607, 0xAF7E, 0x7608, 0xAF80, 0x7609, 0xAF81, 0x760A, 0xF0FA, + 0x760B, 0xAF82, 0x760C, 0xF0F8, 0x760D, 0xAF83, 0x760E, 0xAF84, 0x760F, 0xAF85, 0x7610, 0xF0F5, 0x7611, 0xAF86, 0x7612, 0xAF87, + 0x7613, 0xAF88, 0x7614, 0xAF89, 0x7615, 0xF0FD, 0x7616, 0xAF8A, 0x7617, 0xF0F9, 0x7618, 0xF0FC, 0x7619, 0xF0FE, 0x761A, 0xAF8B, + 0x761B, 0xF1A1, 0x761C, 0xAF8C, 0x761D, 0xAF8D, 0x761E, 0xAF8E, 0x761F, 0xCEC1, 0x7620, 0xF1A4, 0x7621, 0xAF8F, 0x7622, 0xF1A3, + 0x7623, 0xAF90, 0x7624, 0xC1F6, 0x7625, 0xF0FB, 0x7626, 0xCADD, 0x7627, 0xAF91, 0x7628, 0xAF92, 0x7629, 0xB4F1, 0x762A, 0xB1F1, + 0x762B, 0xCCB1, 0x762C, 0xAF93, 0x762D, 0xF1A6, 0x762E, 0xAF94, 0x762F, 0xAF95, 0x7630, 0xF1A7, 0x7631, 0xAF96, 0x7632, 0xAF97, + 0x7633, 0xF1AC, 0x7634, 0xD5CE, 0x7635, 0xF1A9, 0x7636, 0xAF98, 0x7637, 0xAF99, 0x7638, 0xC8B3, 0x7639, 0xAF9A, 0x763A, 0xAF9B, + 0x763B, 0xAF9C, 0x763C, 0xF1A2, 0x763D, 0xAF9D, 0x763E, 0xF1AB, 0x763F, 0xF1A8, 0x7640, 0xF1A5, 0x7641, 0xAF9E, 0x7642, 0xAF9F, + 0x7643, 0xF1AA, 0x7644, 0xAFA0, 0x7645, 0xB040, 0x7646, 0xB041, 0x7647, 0xB042, 0x7648, 0xB043, 0x7649, 0xB044, 0x764A, 0xB045, + 0x764B, 0xB046, 0x764C, 0xB0A9, 0x764D, 0xF1AD, 0x764E, 0xB047, 0x764F, 0xB048, 0x7650, 0xB049, 0x7651, 0xB04A, 0x7652, 0xB04B, + 0x7653, 0xB04C, 0x7654, 0xF1AF, 0x7655, 0xB04D, 0x7656, 0xF1B1, 0x7657, 0xB04E, 0x7658, 0xB04F, 0x7659, 0xB050, 0x765A, 0xB051, + 0x765B, 0xB052, 0x765C, 0xF1B0, 0x765D, 0xB053, 0x765E, 0xF1AE, 0x765F, 0xB054, 0x7660, 0xB055, 0x7661, 0xB056, 0x7662, 0xB057, + 0x7663, 0xD1A2, 0x7664, 0xB058, 0x7665, 0xB059, 0x7666, 0xB05A, 0x7667, 0xB05B, 0x7668, 0xB05C, 0x7669, 0xB05D, 0x766A, 0xB05E, + 0x766B, 0xF1B2, 0x766C, 0xB05F, 0x766D, 0xB060, 0x766E, 0xB061, 0x766F, 0xF1B3, 0x7670, 0xB062, 0x7671, 0xB063, 0x7672, 0xB064, + 0x7673, 0xB065, 0x7674, 0xB066, 0x7675, 0xB067, 0x7676, 0xB068, 0x7677, 0xB069, 0x7678, 0xB9EF, 0x7679, 0xB06A, 0x767A, 0xB06B, + 0x767B, 0xB5C7, 0x767C, 0xB06C, 0x767D, 0xB0D7, 0x767E, 0xB0D9, 0x767F, 0xB06D, 0x7680, 0xB06E, 0x7681, 0xB06F, 0x7682, 0xD4ED, + 0x7683, 0xB070, 0x7684, 0xB5C4, 0x7685, 0xB071, 0x7686, 0xBDD4, 0x7687, 0xBBCA, 0x7688, 0xF0A7, 0x7689, 0xB072, 0x768A, 0xB073, + 0x768B, 0xB8DE, 0x768C, 0xB074, 0x768D, 0xB075, 0x768E, 0xF0A8, 0x768F, 0xB076, 0x7690, 0xB077, 0x7691, 0xB0A8, 0x7692, 0xB078, + 0x7693, 0xF0A9, 0x7694, 0xB079, 0x7695, 0xB07A, 0x7696, 0xCDEE, 0x7697, 0xB07B, 0x7698, 0xB07C, 0x7699, 0xF0AA, 0x769A, 0xB07D, + 0x769B, 0xB07E, 0x769C, 0xB080, 0x769D, 0xB081, 0x769E, 0xB082, 0x769F, 0xB083, 0x76A0, 0xB084, 0x76A1, 0xB085, 0x76A2, 0xB086, + 0x76A3, 0xB087, 0x76A4, 0xF0AB, 0x76A5, 0xB088, 0x76A6, 0xB089, 0x76A7, 0xB08A, 0x76A8, 0xB08B, 0x76A9, 0xB08C, 0x76AA, 0xB08D, + 0x76AB, 0xB08E, 0x76AC, 0xB08F, 0x76AD, 0xB090, 0x76AE, 0xC6A4, 0x76AF, 0xB091, 0x76B0, 0xB092, 0x76B1, 0xD6E5, 0x76B2, 0xF1E4, + 0x76B3, 0xB093, 0x76B4, 0xF1E5, 0x76B5, 0xB094, 0x76B6, 0xB095, 0x76B7, 0xB096, 0x76B8, 0xB097, 0x76B9, 0xB098, 0x76BA, 0xB099, + 0x76BB, 0xB09A, 0x76BC, 0xB09B, 0x76BD, 0xB09C, 0x76BE, 0xB09D, 0x76BF, 0xC3F3, 0x76C0, 0xB09E, 0x76C1, 0xB09F, 0x76C2, 0xD3DB, + 0x76C3, 0xB0A0, 0x76C4, 0xB140, 0x76C5, 0xD6D1, 0x76C6, 0xC5E8, 0x76C7, 0xB141, 0x76C8, 0xD3AF, 0x76C9, 0xB142, 0x76CA, 0xD2E6, + 0x76CB, 0xB143, 0x76CC, 0xB144, 0x76CD, 0xEEC1, 0x76CE, 0xB0BB, 0x76CF, 0xD5B5, 0x76D0, 0xD1CE, 0x76D1, 0xBCE0, 0x76D2, 0xBAD0, + 0x76D3, 0xB145, 0x76D4, 0xBFF8, 0x76D5, 0xB146, 0x76D6, 0xB8C7, 0x76D7, 0xB5C1, 0x76D8, 0xC5CC, 0x76D9, 0xB147, 0x76DA, 0xB148, + 0x76DB, 0xCAA2, 0x76DC, 0xB149, 0x76DD, 0xB14A, 0x76DE, 0xB14B, 0x76DF, 0xC3CB, 0x76E0, 0xB14C, 0x76E1, 0xB14D, 0x76E2, 0xB14E, + 0x76E3, 0xB14F, 0x76E4, 0xB150, 0x76E5, 0xEEC2, 0x76E6, 0xB151, 0x76E7, 0xB152, 0x76E8, 0xB153, 0x76E9, 0xB154, 0x76EA, 0xB155, + 0x76EB, 0xB156, 0x76EC, 0xB157, 0x76ED, 0xB158, 0x76EE, 0xC4BF, 0x76EF, 0xB6A2, 0x76F0, 0xB159, 0x76F1, 0xEDEC, 0x76F2, 0xC3A4, + 0x76F3, 0xB15A, 0x76F4, 0xD6B1, 0x76F5, 0xB15B, 0x76F6, 0xB15C, 0x76F7, 0xB15D, 0x76F8, 0xCFE0, 0x76F9, 0xEDEF, 0x76FA, 0xB15E, + 0x76FB, 0xB15F, 0x76FC, 0xC5CE, 0x76FD, 0xB160, 0x76FE, 0xB6DC, 0x76FF, 0xB161, 0x7700, 0xB162, 0x7701, 0xCAA1, 0x7702, 0xB163, + 0x7703, 0xB164, 0x7704, 0xEDED, 0x7705, 0xB165, 0x7706, 0xB166, 0x7707, 0xEDF0, 0x7708, 0xEDF1, 0x7709, 0xC3BC, 0x770A, 0xB167, + 0x770B, 0xBFB4, 0x770C, 0xB168, 0x770D, 0xEDEE, 0x770E, 0xB169, 0x770F, 0xB16A, 0x7710, 0xB16B, 0x7711, 0xB16C, 0x7712, 0xB16D, + 0x7713, 0xB16E, 0x7714, 0xB16F, 0x7715, 0xB170, 0x7716, 0xB171, 0x7717, 0xB172, 0x7718, 0xB173, 0x7719, 0xEDF4, 0x771A, 0xEDF2, + 0x771B, 0xB174, 0x771C, 0xB175, 0x771D, 0xB176, 0x771E, 0xB177, 0x771F, 0xD5E6, 0x7720, 0xC3DF, 0x7721, 0xB178, 0x7722, 0xEDF3, + 0x7723, 0xB179, 0x7724, 0xB17A, 0x7725, 0xB17B, 0x7726, 0xEDF6, 0x7727, 0xB17C, 0x7728, 0xD5A3, 0x7729, 0xD1A3, 0x772A, 0xB17D, + 0x772B, 0xB17E, 0x772C, 0xB180, 0x772D, 0xEDF5, 0x772E, 0xB181, 0x772F, 0xC3D0, 0x7730, 0xB182, 0x7731, 0xB183, 0x7732, 0xB184, + 0x7733, 0xB185, 0x7734, 0xB186, 0x7735, 0xEDF7, 0x7736, 0xBFF4, 0x7737, 0xBEEC, 0x7738, 0xEDF8, 0x7739, 0xB187, 0x773A, 0xCCF7, + 0x773B, 0xB188, 0x773C, 0xD1DB, 0x773D, 0xB189, 0x773E, 0xB18A, 0x773F, 0xB18B, 0x7740, 0xD7C5, 0x7741, 0xD5F6, 0x7742, 0xB18C, + 0x7743, 0xEDFC, 0x7744, 0xB18D, 0x7745, 0xB18E, 0x7746, 0xB18F, 0x7747, 0xEDFB, 0x7748, 0xB190, 0x7749, 0xB191, 0x774A, 0xB192, + 0x774B, 0xB193, 0x774C, 0xB194, 0x774D, 0xB195, 0x774E, 0xB196, 0x774F, 0xB197, 0x7750, 0xEDF9, 0x7751, 0xEDFA, 0x7752, 0xB198, + 0x7753, 0xB199, 0x7754, 0xB19A, 0x7755, 0xB19B, 0x7756, 0xB19C, 0x7757, 0xB19D, 0x7758, 0xB19E, 0x7759, 0xB19F, 0x775A, 0xEDFD, + 0x775B, 0xBEA6, 0x775C, 0xB1A0, 0x775D, 0xB240, 0x775E, 0xB241, 0x775F, 0xB242, 0x7760, 0xB243, 0x7761, 0xCBAF, 0x7762, 0xEEA1, + 0x7763, 0xB6BD, 0x7764, 0xB244, 0x7765, 0xEEA2, 0x7766, 0xC4C0, 0x7767, 0xB245, 0x7768, 0xEDFE, 0x7769, 0xB246, 0x776A, 0xB247, + 0x776B, 0xBDDE, 0x776C, 0xB2C7, 0x776D, 0xB248, 0x776E, 0xB249, 0x776F, 0xB24A, 0x7770, 0xB24B, 0x7771, 0xB24C, 0x7772, 0xB24D, + 0x7773, 0xB24E, 0x7774, 0xB24F, 0x7775, 0xB250, 0x7776, 0xB251, 0x7777, 0xB252, 0x7778, 0xB253, 0x7779, 0xB6C3, 0x777A, 0xB254, + 0x777B, 0xB255, 0x777C, 0xB256, 0x777D, 0xEEA5, 0x777E, 0xD8BA, 0x777F, 0xEEA3, 0x7780, 0xEEA6, 0x7781, 0xB257, 0x7782, 0xB258, + 0x7783, 0xB259, 0x7784, 0xC3E9, 0x7785, 0xB3F2, 0x7786, 0xB25A, 0x7787, 0xB25B, 0x7788, 0xB25C, 0x7789, 0xB25D, 0x778A, 0xB25E, + 0x778B, 0xB25F, 0x778C, 0xEEA7, 0x778D, 0xEEA4, 0x778E, 0xCFB9, 0x778F, 0xB260, 0x7790, 0xB261, 0x7791, 0xEEA8, 0x7792, 0xC2F7, + 0x7793, 0xB262, 0x7794, 0xB263, 0x7795, 0xB264, 0x7796, 0xB265, 0x7797, 0xB266, 0x7798, 0xB267, 0x7799, 0xB268, 0x779A, 0xB269, + 0x779B, 0xB26A, 0x779C, 0xB26B, 0x779D, 0xB26C, 0x779E, 0xB26D, 0x779F, 0xEEA9, 0x77A0, 0xEEAA, 0x77A1, 0xB26E, 0x77A2, 0xDEAB, + 0x77A3, 0xB26F, 0x77A4, 0xB270, 0x77A5, 0xC6B3, 0x77A6, 0xB271, 0x77A7, 0xC7C6, 0x77A8, 0xB272, 0x77A9, 0xD6F5, 0x77AA, 0xB5C9, + 0x77AB, 0xB273, 0x77AC, 0xCBB2, 0x77AD, 0xB274, 0x77AE, 0xB275, 0x77AF, 0xB276, 0x77B0, 0xEEAB, 0x77B1, 0xB277, 0x77B2, 0xB278, + 0x77B3, 0xCDAB, 0x77B4, 0xB279, 0x77B5, 0xEEAC, 0x77B6, 0xB27A, 0x77B7, 0xB27B, 0x77B8, 0xB27C, 0x77B9, 0xB27D, 0x77BA, 0xB27E, + 0x77BB, 0xD5B0, 0x77BC, 0xB280, 0x77BD, 0xEEAD, 0x77BE, 0xB281, 0x77BF, 0xF6C4, 0x77C0, 0xB282, 0x77C1, 0xB283, 0x77C2, 0xB284, + 0x77C3, 0xB285, 0x77C4, 0xB286, 0x77C5, 0xB287, 0x77C6, 0xB288, 0x77C7, 0xB289, 0x77C8, 0xB28A, 0x77C9, 0xB28B, 0x77CA, 0xB28C, + 0x77CB, 0xB28D, 0x77CC, 0xB28E, 0x77CD, 0xDBC7, 0x77CE, 0xB28F, 0x77CF, 0xB290, 0x77D0, 0xB291, 0x77D1, 0xB292, 0x77D2, 0xB293, + 0x77D3, 0xB294, 0x77D4, 0xB295, 0x77D5, 0xB296, 0x77D6, 0xB297, 0x77D7, 0xB4A3, 0x77D8, 0xB298, 0x77D9, 0xB299, 0x77DA, 0xB29A, + 0x77DB, 0xC3AC, 0x77DC, 0xF1E6, 0x77DD, 0xB29B, 0x77DE, 0xB29C, 0x77DF, 0xB29D, 0x77E0, 0xB29E, 0x77E1, 0xB29F, 0x77E2, 0xCAB8, + 0x77E3, 0xD2D3, 0x77E4, 0xB2A0, 0x77E5, 0xD6AA, 0x77E6, 0xB340, 0x77E7, 0xEFF2, 0x77E8, 0xB341, 0x77E9, 0xBED8, 0x77EA, 0xB342, + 0x77EB, 0xBDC3, 0x77EC, 0xEFF3, 0x77ED, 0xB6CC, 0x77EE, 0xB0AB, 0x77EF, 0xB343, 0x77F0, 0xB344, 0x77F1, 0xB345, 0x77F2, 0xB346, + 0x77F3, 0xCAAF, 0x77F4, 0xB347, 0x77F5, 0xB348, 0x77F6, 0xEDB6, 0x77F7, 0xB349, 0x77F8, 0xEDB7, 0x77F9, 0xB34A, 0x77FA, 0xB34B, + 0x77FB, 0xB34C, 0x77FC, 0xB34D, 0x77FD, 0xCEF9, 0x77FE, 0xB7AF, 0x77FF, 0xBFF3, 0x7800, 0xEDB8, 0x7801, 0xC2EB, 0x7802, 0xC9B0, + 0x7803, 0xB34E, 0x7804, 0xB34F, 0x7805, 0xB350, 0x7806, 0xB351, 0x7807, 0xB352, 0x7808, 0xB353, 0x7809, 0xEDB9, 0x780A, 0xB354, + 0x780B, 0xB355, 0x780C, 0xC6F6, 0x780D, 0xBFB3, 0x780E, 0xB356, 0x780F, 0xB357, 0x7810, 0xB358, 0x7811, 0xEDBC, 0x7812, 0xC5F8, + 0x7813, 0xB359, 0x7814, 0xD1D0, 0x7815, 0xB35A, 0x7816, 0xD7A9, 0x7817, 0xEDBA, 0x7818, 0xEDBB, 0x7819, 0xB35B, 0x781A, 0xD1E2, + 0x781B, 0xB35C, 0x781C, 0xEDBF, 0x781D, 0xEDC0, 0x781E, 0xB35D, 0x781F, 0xEDC4, 0x7820, 0xB35E, 0x7821, 0xB35F, 0x7822, 0xB360, + 0x7823, 0xEDC8, 0x7824, 0xB361, 0x7825, 0xEDC6, 0x7826, 0xEDCE, 0x7827, 0xD5E8, 0x7828, 0xB362, 0x7829, 0xEDC9, 0x782A, 0xB363, + 0x782B, 0xB364, 0x782C, 0xEDC7, 0x782D, 0xEDBE, 0x782E, 0xB365, 0x782F, 0xB366, 0x7830, 0xC5E9, 0x7831, 0xB367, 0x7832, 0xB368, + 0x7833, 0xB369, 0x7834, 0xC6C6, 0x7835, 0xB36A, 0x7836, 0xB36B, 0x7837, 0xC9E9, 0x7838, 0xD4D2, 0x7839, 0xEDC1, 0x783A, 0xEDC2, + 0x783B, 0xEDC3, 0x783C, 0xEDC5, 0x783D, 0xB36C, 0x783E, 0xC0F9, 0x783F, 0xB36D, 0x7840, 0xB4A1, 0x7841, 0xB36E, 0x7842, 0xB36F, + 0x7843, 0xB370, 0x7844, 0xB371, 0x7845, 0xB9E8, 0x7846, 0xB372, 0x7847, 0xEDD0, 0x7848, 0xB373, 0x7849, 0xB374, 0x784A, 0xB375, + 0x784B, 0xB376, 0x784C, 0xEDD1, 0x784D, 0xB377, 0x784E, 0xEDCA, 0x784F, 0xB378, 0x7850, 0xEDCF, 0x7851, 0xB379, 0x7852, 0xCEF8, + 0x7853, 0xB37A, 0x7854, 0xB37B, 0x7855, 0xCBB6, 0x7856, 0xEDCC, 0x7857, 0xEDCD, 0x7858, 0xB37C, 0x7859, 0xB37D, 0x785A, 0xB37E, + 0x785B, 0xB380, 0x785C, 0xB381, 0x785D, 0xCFF5, 0x785E, 0xB382, 0x785F, 0xB383, 0x7860, 0xB384, 0x7861, 0xB385, 0x7862, 0xB386, + 0x7863, 0xB387, 0x7864, 0xB388, 0x7865, 0xB389, 0x7866, 0xB38A, 0x7867, 0xB38B, 0x7868, 0xB38C, 0x7869, 0xB38D, 0x786A, 0xEDD2, + 0x786B, 0xC1F2, 0x786C, 0xD3B2, 0x786D, 0xEDCB, 0x786E, 0xC8B7, 0x786F, 0xB38E, 0x7870, 0xB38F, 0x7871, 0xB390, 0x7872, 0xB391, + 0x7873, 0xB392, 0x7874, 0xB393, 0x7875, 0xB394, 0x7876, 0xB395, 0x7877, 0xBCEF, 0x7878, 0xB396, 0x7879, 0xB397, 0x787A, 0xB398, + 0x787B, 0xB399, 0x787C, 0xC5F0, 0x787D, 0xB39A, 0x787E, 0xB39B, 0x787F, 0xB39C, 0x7880, 0xB39D, 0x7881, 0xB39E, 0x7882, 0xB39F, + 0x7883, 0xB3A0, 0x7884, 0xB440, 0x7885, 0xB441, 0x7886, 0xB442, 0x7887, 0xEDD6, 0x7888, 0xB443, 0x7889, 0xB5EF, 0x788A, 0xB444, + 0x788B, 0xB445, 0x788C, 0xC2B5, 0x788D, 0xB0AD, 0x788E, 0xCBE9, 0x788F, 0xB446, 0x7890, 0xB447, 0x7891, 0xB1AE, 0x7892, 0xB448, + 0x7893, 0xEDD4, 0x7894, 0xB449, 0x7895, 0xB44A, 0x7896, 0xB44B, 0x7897, 0xCDEB, 0x7898, 0xB5E2, 0x7899, 0xB44C, 0x789A, 0xEDD5, + 0x789B, 0xEDD3, 0x789C, 0xEDD7, 0x789D, 0xB44D, 0x789E, 0xB44E, 0x789F, 0xB5FA, 0x78A0, 0xB44F, 0x78A1, 0xEDD8, 0x78A2, 0xB450, + 0x78A3, 0xEDD9, 0x78A4, 0xB451, 0x78A5, 0xEDDC, 0x78A6, 0xB452, 0x78A7, 0xB1CC, 0x78A8, 0xB453, 0x78A9, 0xB454, 0x78AA, 0xB455, + 0x78AB, 0xB456, 0x78AC, 0xB457, 0x78AD, 0xB458, 0x78AE, 0xB459, 0x78AF, 0xB45A, 0x78B0, 0xC5F6, 0x78B1, 0xBCEE, 0x78B2, 0xEDDA, + 0x78B3, 0xCCBC, 0x78B4, 0xB2EA, 0x78B5, 0xB45B, 0x78B6, 0xB45C, 0x78B7, 0xB45D, 0x78B8, 0xB45E, 0x78B9, 0xEDDB, 0x78BA, 0xB45F, + 0x78BB, 0xB460, 0x78BC, 0xB461, 0x78BD, 0xB462, 0x78BE, 0xC4EB, 0x78BF, 0xB463, 0x78C0, 0xB464, 0x78C1, 0xB4C5, 0x78C2, 0xB465, + 0x78C3, 0xB466, 0x78C4, 0xB467, 0x78C5, 0xB0F5, 0x78C6, 0xB468, 0x78C7, 0xB469, 0x78C8, 0xB46A, 0x78C9, 0xEDDF, 0x78CA, 0xC0DA, + 0x78CB, 0xB4E8, 0x78CC, 0xB46B, 0x78CD, 0xB46C, 0x78CE, 0xB46D, 0x78CF, 0xB46E, 0x78D0, 0xC5CD, 0x78D1, 0xB46F, 0x78D2, 0xB470, + 0x78D3, 0xB471, 0x78D4, 0xEDDD, 0x78D5, 0xBFC4, 0x78D6, 0xB472, 0x78D7, 0xB473, 0x78D8, 0xB474, 0x78D9, 0xEDDE, 0x78DA, 0xB475, + 0x78DB, 0xB476, 0x78DC, 0xB477, 0x78DD, 0xB478, 0x78DE, 0xB479, 0x78DF, 0xB47A, 0x78E0, 0xB47B, 0x78E1, 0xB47C, 0x78E2, 0xB47D, + 0x78E3, 0xB47E, 0x78E4, 0xB480, 0x78E5, 0xB481, 0x78E6, 0xB482, 0x78E7, 0xB483, 0x78E8, 0xC4A5, 0x78E9, 0xB484, 0x78EA, 0xB485, + 0x78EB, 0xB486, 0x78EC, 0xEDE0, 0x78ED, 0xB487, 0x78EE, 0xB488, 0x78EF, 0xB489, 0x78F0, 0xB48A, 0x78F1, 0xB48B, 0x78F2, 0xEDE1, + 0x78F3, 0xB48C, 0x78F4, 0xEDE3, 0x78F5, 0xB48D, 0x78F6, 0xB48E, 0x78F7, 0xC1D7, 0x78F8, 0xB48F, 0x78F9, 0xB490, 0x78FA, 0xBBC7, + 0x78FB, 0xB491, 0x78FC, 0xB492, 0x78FD, 0xB493, 0x78FE, 0xB494, 0x78FF, 0xB495, 0x7900, 0xB496, 0x7901, 0xBDB8, 0x7902, 0xB497, + 0x7903, 0xB498, 0x7904, 0xB499, 0x7905, 0xEDE2, 0x7906, 0xB49A, 0x7907, 0xB49B, 0x7908, 0xB49C, 0x7909, 0xB49D, 0x790A, 0xB49E, + 0x790B, 0xB49F, 0x790C, 0xB4A0, 0x790D, 0xB540, 0x790E, 0xB541, 0x790F, 0xB542, 0x7910, 0xB543, 0x7911, 0xB544, 0x7912, 0xB545, + 0x7913, 0xEDE4, 0x7914, 0xB546, 0x7915, 0xB547, 0x7916, 0xB548, 0x7917, 0xB549, 0x7918, 0xB54A, 0x7919, 0xB54B, 0x791A, 0xB54C, + 0x791B, 0xB54D, 0x791C, 0xB54E, 0x791D, 0xB54F, 0x791E, 0xEDE6, 0x791F, 0xB550, 0x7920, 0xB551, 0x7921, 0xB552, 0x7922, 0xB553, + 0x7923, 0xB554, 0x7924, 0xEDE5, 0x7925, 0xB555, 0x7926, 0xB556, 0x7927, 0xB557, 0x7928, 0xB558, 0x7929, 0xB559, 0x792A, 0xB55A, + 0x792B, 0xB55B, 0x792C, 0xB55C, 0x792D, 0xB55D, 0x792E, 0xB55E, 0x792F, 0xB55F, 0x7930, 0xB560, 0x7931, 0xB561, 0x7932, 0xB562, + 0x7933, 0xB563, 0x7934, 0xEDE7, 0x7935, 0xB564, 0x7936, 0xB565, 0x7937, 0xB566, 0x7938, 0xB567, 0x7939, 0xB568, 0x793A, 0xCABE, + 0x793B, 0xECEA, 0x793C, 0xC0F1, 0x793D, 0xB569, 0x793E, 0xC9E7, 0x793F, 0xB56A, 0x7940, 0xECEB, 0x7941, 0xC6EE, 0x7942, 0xB56B, + 0x7943, 0xB56C, 0x7944, 0xB56D, 0x7945, 0xB56E, 0x7946, 0xECEC, 0x7947, 0xB56F, 0x7948, 0xC6ED, 0x7949, 0xECED, 0x794A, 0xB570, + 0x794B, 0xB571, 0x794C, 0xB572, 0x794D, 0xB573, 0x794E, 0xB574, 0x794F, 0xB575, 0x7950, 0xB576, 0x7951, 0xB577, 0x7952, 0xB578, + 0x7953, 0xECF0, 0x7954, 0xB579, 0x7955, 0xB57A, 0x7956, 0xD7E6, 0x7957, 0xECF3, 0x7958, 0xB57B, 0x7959, 0xB57C, 0x795A, 0xECF1, + 0x795B, 0xECEE, 0x795C, 0xECEF, 0x795D, 0xD7A3, 0x795E, 0xC9F1, 0x795F, 0xCBEE, 0x7960, 0xECF4, 0x7961, 0xB57D, 0x7962, 0xECF2, + 0x7963, 0xB57E, 0x7964, 0xB580, 0x7965, 0xCFE9, 0x7966, 0xB581, 0x7967, 0xECF6, 0x7968, 0xC6B1, 0x7969, 0xB582, 0x796A, 0xB583, + 0x796B, 0xB584, 0x796C, 0xB585, 0x796D, 0xBCC0, 0x796E, 0xB586, 0x796F, 0xECF5, 0x7970, 0xB587, 0x7971, 0xB588, 0x7972, 0xB589, + 0x7973, 0xB58A, 0x7974, 0xB58B, 0x7975, 0xB58C, 0x7976, 0xB58D, 0x7977, 0xB5BB, 0x7978, 0xBBF6, 0x7979, 0xB58E, 0x797A, 0xECF7, + 0x797B, 0xB58F, 0x797C, 0xB590, 0x797D, 0xB591, 0x797E, 0xB592, 0x797F, 0xB593, 0x7980, 0xD9F7, 0x7981, 0xBDFB, 0x7982, 0xB594, + 0x7983, 0xB595, 0x7984, 0xC2BB, 0x7985, 0xECF8, 0x7986, 0xB596, 0x7987, 0xB597, 0x7988, 0xB598, 0x7989, 0xB599, 0x798A, 0xECF9, + 0x798B, 0xB59A, 0x798C, 0xB59B, 0x798D, 0xB59C, 0x798E, 0xB59D, 0x798F, 0xB8A3, 0x7990, 0xB59E, 0x7991, 0xB59F, 0x7992, 0xB5A0, + 0x7993, 0xB640, 0x7994, 0xB641, 0x7995, 0xB642, 0x7996, 0xB643, 0x7997, 0xB644, 0x7998, 0xB645, 0x7999, 0xB646, 0x799A, 0xECFA, + 0x799B, 0xB647, 0x799C, 0xB648, 0x799D, 0xB649, 0x799E, 0xB64A, 0x799F, 0xB64B, 0x79A0, 0xB64C, 0x79A1, 0xB64D, 0x79A2, 0xB64E, + 0x79A3, 0xB64F, 0x79A4, 0xB650, 0x79A5, 0xB651, 0x79A6, 0xB652, 0x79A7, 0xECFB, 0x79A8, 0xB653, 0x79A9, 0xB654, 0x79AA, 0xB655, + 0x79AB, 0xB656, 0x79AC, 0xB657, 0x79AD, 0xB658, 0x79AE, 0xB659, 0x79AF, 0xB65A, 0x79B0, 0xB65B, 0x79B1, 0xB65C, 0x79B2, 0xB65D, + 0x79B3, 0xECFC, 0x79B4, 0xB65E, 0x79B5, 0xB65F, 0x79B6, 0xB660, 0x79B7, 0xB661, 0x79B8, 0xB662, 0x79B9, 0xD3ED, 0x79BA, 0xD8AE, + 0x79BB, 0xC0EB, 0x79BC, 0xB663, 0x79BD, 0xC7DD, 0x79BE, 0xBACC, 0x79BF, 0xB664, 0x79C0, 0xD0E3, 0x79C1, 0xCBBD, 0x79C2, 0xB665, + 0x79C3, 0xCDBA, 0x79C4, 0xB666, 0x79C5, 0xB667, 0x79C6, 0xB8D1, 0x79C7, 0xB668, 0x79C8, 0xB669, 0x79C9, 0xB1FC, 0x79CA, 0xB66A, + 0x79CB, 0xC7EF, 0x79CC, 0xB66B, 0x79CD, 0xD6D6, 0x79CE, 0xB66C, 0x79CF, 0xB66D, 0x79D0, 0xB66E, 0x79D1, 0xBFC6, 0x79D2, 0xC3EB, + 0x79D3, 0xB66F, 0x79D4, 0xB670, 0x79D5, 0xEFF5, 0x79D6, 0xB671, 0x79D7, 0xB672, 0x79D8, 0xC3D8, 0x79D9, 0xB673, 0x79DA, 0xB674, + 0x79DB, 0xB675, 0x79DC, 0xB676, 0x79DD, 0xB677, 0x79DE, 0xB678, 0x79DF, 0xD7E2, 0x79E0, 0xB679, 0x79E1, 0xB67A, 0x79E2, 0xB67B, + 0x79E3, 0xEFF7, 0x79E4, 0xB3D3, 0x79E5, 0xB67C, 0x79E6, 0xC7D8, 0x79E7, 0xD1ED, 0x79E8, 0xB67D, 0x79E9, 0xD6C8, 0x79EA, 0xB67E, + 0x79EB, 0xEFF8, 0x79EC, 0xB680, 0x79ED, 0xEFF6, 0x79EE, 0xB681, 0x79EF, 0xBBFD, 0x79F0, 0xB3C6, 0x79F1, 0xB682, 0x79F2, 0xB683, + 0x79F3, 0xB684, 0x79F4, 0xB685, 0x79F5, 0xB686, 0x79F6, 0xB687, 0x79F7, 0xB688, 0x79F8, 0xBDD5, 0x79F9, 0xB689, 0x79FA, 0xB68A, + 0x79FB, 0xD2C6, 0x79FC, 0xB68B, 0x79FD, 0xBBE0, 0x79FE, 0xB68C, 0x79FF, 0xB68D, 0x7A00, 0xCFA1, 0x7A01, 0xB68E, 0x7A02, 0xEFFC, + 0x7A03, 0xEFFB, 0x7A04, 0xB68F, 0x7A05, 0xB690, 0x7A06, 0xEFF9, 0x7A07, 0xB691, 0x7A08, 0xB692, 0x7A09, 0xB693, 0x7A0A, 0xB694, + 0x7A0B, 0xB3CC, 0x7A0C, 0xB695, 0x7A0D, 0xC9D4, 0x7A0E, 0xCBB0, 0x7A0F, 0xB696, 0x7A10, 0xB697, 0x7A11, 0xB698, 0x7A12, 0xB699, + 0x7A13, 0xB69A, 0x7A14, 0xEFFE, 0x7A15, 0xB69B, 0x7A16, 0xB69C, 0x7A17, 0xB0DE, 0x7A18, 0xB69D, 0x7A19, 0xB69E, 0x7A1A, 0xD6C9, + 0x7A1B, 0xB69F, 0x7A1C, 0xB6A0, 0x7A1D, 0xB740, 0x7A1E, 0xEFFD, 0x7A1F, 0xB741, 0x7A20, 0xB3ED, 0x7A21, 0xB742, 0x7A22, 0xB743, + 0x7A23, 0xF6D5, 0x7A24, 0xB744, 0x7A25, 0xB745, 0x7A26, 0xB746, 0x7A27, 0xB747, 0x7A28, 0xB748, 0x7A29, 0xB749, 0x7A2A, 0xB74A, + 0x7A2B, 0xB74B, 0x7A2C, 0xB74C, 0x7A2D, 0xB74D, 0x7A2E, 0xB74E, 0x7A2F, 0xB74F, 0x7A30, 0xB750, 0x7A31, 0xB751, 0x7A32, 0xB752, + 0x7A33, 0xCEC8, 0x7A34, 0xB753, 0x7A35, 0xB754, 0x7A36, 0xB755, 0x7A37, 0xF0A2, 0x7A38, 0xB756, 0x7A39, 0xF0A1, 0x7A3A, 0xB757, + 0x7A3B, 0xB5BE, 0x7A3C, 0xBCDA, 0x7A3D, 0xBBFC, 0x7A3E, 0xB758, 0x7A3F, 0xB8E5, 0x7A40, 0xB759, 0x7A41, 0xB75A, 0x7A42, 0xB75B, + 0x7A43, 0xB75C, 0x7A44, 0xB75D, 0x7A45, 0xB75E, 0x7A46, 0xC4C2, 0x7A47, 0xB75F, 0x7A48, 0xB760, 0x7A49, 0xB761, 0x7A4A, 0xB762, + 0x7A4B, 0xB763, 0x7A4C, 0xB764, 0x7A4D, 0xB765, 0x7A4E, 0xB766, 0x7A4F, 0xB767, 0x7A50, 0xB768, 0x7A51, 0xF0A3, 0x7A52, 0xB769, + 0x7A53, 0xB76A, 0x7A54, 0xB76B, 0x7A55, 0xB76C, 0x7A56, 0xB76D, 0x7A57, 0xCBEB, 0x7A58, 0xB76E, 0x7A59, 0xB76F, 0x7A5A, 0xB770, + 0x7A5B, 0xB771, 0x7A5C, 0xB772, 0x7A5D, 0xB773, 0x7A5E, 0xB774, 0x7A5F, 0xB775, 0x7A60, 0xB776, 0x7A61, 0xB777, 0x7A62, 0xB778, + 0x7A63, 0xB779, 0x7A64, 0xB77A, 0x7A65, 0xB77B, 0x7A66, 0xB77C, 0x7A67, 0xB77D, 0x7A68, 0xB77E, 0x7A69, 0xB780, 0x7A6A, 0xB781, + 0x7A6B, 0xB782, 0x7A6C, 0xB783, 0x7A6D, 0xB784, 0x7A6E, 0xB785, 0x7A6F, 0xB786, 0x7A70, 0xF0A6, 0x7A71, 0xB787, 0x7A72, 0xB788, + 0x7A73, 0xB789, 0x7A74, 0xD1A8, 0x7A75, 0xB78A, 0x7A76, 0xBEBF, 0x7A77, 0xC7EE, 0x7A78, 0xF1B6, 0x7A79, 0xF1B7, 0x7A7A, 0xBFD5, + 0x7A7B, 0xB78B, 0x7A7C, 0xB78C, 0x7A7D, 0xB78D, 0x7A7E, 0xB78E, 0x7A7F, 0xB4A9, 0x7A80, 0xF1B8, 0x7A81, 0xCDBB, 0x7A82, 0xB78F, + 0x7A83, 0xC7D4, 0x7A84, 0xD5AD, 0x7A85, 0xB790, 0x7A86, 0xF1B9, 0x7A87, 0xB791, 0x7A88, 0xF1BA, 0x7A89, 0xB792, 0x7A8A, 0xB793, + 0x7A8B, 0xB794, 0x7A8C, 0xB795, 0x7A8D, 0xC7CF, 0x7A8E, 0xB796, 0x7A8F, 0xB797, 0x7A90, 0xB798, 0x7A91, 0xD2A4, 0x7A92, 0xD6CF, + 0x7A93, 0xB799, 0x7A94, 0xB79A, 0x7A95, 0xF1BB, 0x7A96, 0xBDD1, 0x7A97, 0xB4B0, 0x7A98, 0xBEBD, 0x7A99, 0xB79B, 0x7A9A, 0xB79C, + 0x7A9B, 0xB79D, 0x7A9C, 0xB4DC, 0x7A9D, 0xCED1, 0x7A9E, 0xB79E, 0x7A9F, 0xBFDF, 0x7AA0, 0xF1BD, 0x7AA1, 0xB79F, 0x7AA2, 0xB7A0, + 0x7AA3, 0xB840, 0x7AA4, 0xB841, 0x7AA5, 0xBFFA, 0x7AA6, 0xF1BC, 0x7AA7, 0xB842, 0x7AA8, 0xF1BF, 0x7AA9, 0xB843, 0x7AAA, 0xB844, + 0x7AAB, 0xB845, 0x7AAC, 0xF1BE, 0x7AAD, 0xF1C0, 0x7AAE, 0xB846, 0x7AAF, 0xB847, 0x7AB0, 0xB848, 0x7AB1, 0xB849, 0x7AB2, 0xB84A, + 0x7AB3, 0xF1C1, 0x7AB4, 0xB84B, 0x7AB5, 0xB84C, 0x7AB6, 0xB84D, 0x7AB7, 0xB84E, 0x7AB8, 0xB84F, 0x7AB9, 0xB850, 0x7ABA, 0xB851, + 0x7ABB, 0xB852, 0x7ABC, 0xB853, 0x7ABD, 0xB854, 0x7ABE, 0xB855, 0x7ABF, 0xC1FE, 0x7AC0, 0xB856, 0x7AC1, 0xB857, 0x7AC2, 0xB858, + 0x7AC3, 0xB859, 0x7AC4, 0xB85A, 0x7AC5, 0xB85B, 0x7AC6, 0xB85C, 0x7AC7, 0xB85D, 0x7AC8, 0xB85E, 0x7AC9, 0xB85F, 0x7ACA, 0xB860, + 0x7ACB, 0xC1A2, 0x7ACC, 0xB861, 0x7ACD, 0xB862, 0x7ACE, 0xB863, 0x7ACF, 0xB864, 0x7AD0, 0xB865, 0x7AD1, 0xB866, 0x7AD2, 0xB867, + 0x7AD3, 0xB868, 0x7AD4, 0xB869, 0x7AD5, 0xB86A, 0x7AD6, 0xCAFA, 0x7AD7, 0xB86B, 0x7AD8, 0xB86C, 0x7AD9, 0xD5BE, 0x7ADA, 0xB86D, + 0x7ADB, 0xB86E, 0x7ADC, 0xB86F, 0x7ADD, 0xB870, 0x7ADE, 0xBEBA, 0x7ADF, 0xBEB9, 0x7AE0, 0xD5C2, 0x7AE1, 0xB871, 0x7AE2, 0xB872, + 0x7AE3, 0xBFA2, 0x7AE4, 0xB873, 0x7AE5, 0xCDAF, 0x7AE6, 0xF1B5, 0x7AE7, 0xB874, 0x7AE8, 0xB875, 0x7AE9, 0xB876, 0x7AEA, 0xB877, + 0x7AEB, 0xB878, 0x7AEC, 0xB879, 0x7AED, 0xBDDF, 0x7AEE, 0xB87A, 0x7AEF, 0xB6CB, 0x7AF0, 0xB87B, 0x7AF1, 0xB87C, 0x7AF2, 0xB87D, + 0x7AF3, 0xB87E, 0x7AF4, 0xB880, 0x7AF5, 0xB881, 0x7AF6, 0xB882, 0x7AF7, 0xB883, 0x7AF8, 0xB884, 0x7AF9, 0xD6F1, 0x7AFA, 0xF3C3, + 0x7AFB, 0xB885, 0x7AFC, 0xB886, 0x7AFD, 0xF3C4, 0x7AFE, 0xB887, 0x7AFF, 0xB8CD, 0x7B00, 0xB888, 0x7B01, 0xB889, 0x7B02, 0xB88A, + 0x7B03, 0xF3C6, 0x7B04, 0xF3C7, 0x7B05, 0xB88B, 0x7B06, 0xB0CA, 0x7B07, 0xB88C, 0x7B08, 0xF3C5, 0x7B09, 0xB88D, 0x7B0A, 0xF3C9, + 0x7B0B, 0xCBF1, 0x7B0C, 0xB88E, 0x7B0D, 0xB88F, 0x7B0E, 0xB890, 0x7B0F, 0xF3CB, 0x7B10, 0xB891, 0x7B11, 0xD0A6, 0x7B12, 0xB892, + 0x7B13, 0xB893, 0x7B14, 0xB1CA, 0x7B15, 0xF3C8, 0x7B16, 0xB894, 0x7B17, 0xB895, 0x7B18, 0xB896, 0x7B19, 0xF3CF, 0x7B1A, 0xB897, + 0x7B1B, 0xB5D1, 0x7B1C, 0xB898, 0x7B1D, 0xB899, 0x7B1E, 0xF3D7, 0x7B1F, 0xB89A, 0x7B20, 0xF3D2, 0x7B21, 0xB89B, 0x7B22, 0xB89C, + 0x7B23, 0xB89D, 0x7B24, 0xF3D4, 0x7B25, 0xF3D3, 0x7B26, 0xB7FB, 0x7B27, 0xB89E, 0x7B28, 0xB1BF, 0x7B29, 0xB89F, 0x7B2A, 0xF3CE, + 0x7B2B, 0xF3CA, 0x7B2C, 0xB5DA, 0x7B2D, 0xB8A0, 0x7B2E, 0xF3D0, 0x7B2F, 0xB940, 0x7B30, 0xB941, 0x7B31, 0xF3D1, 0x7B32, 0xB942, + 0x7B33, 0xF3D5, 0x7B34, 0xB943, 0x7B35, 0xB944, 0x7B36, 0xB945, 0x7B37, 0xB946, 0x7B38, 0xF3CD, 0x7B39, 0xB947, 0x7B3A, 0xBCE3, + 0x7B3B, 0xB948, 0x7B3C, 0xC1FD, 0x7B3D, 0xB949, 0x7B3E, 0xF3D6, 0x7B3F, 0xB94A, 0x7B40, 0xB94B, 0x7B41, 0xB94C, 0x7B42, 0xB94D, + 0x7B43, 0xB94E, 0x7B44, 0xB94F, 0x7B45, 0xF3DA, 0x7B46, 0xB950, 0x7B47, 0xF3CC, 0x7B48, 0xB951, 0x7B49, 0xB5C8, 0x7B4A, 0xB952, + 0x7B4B, 0xBDEE, 0x7B4C, 0xF3DC, 0x7B4D, 0xB953, 0x7B4E, 0xB954, 0x7B4F, 0xB7A4, 0x7B50, 0xBFF0, 0x7B51, 0xD6FE, 0x7B52, 0xCDB2, + 0x7B53, 0xB955, 0x7B54, 0xB4F0, 0x7B55, 0xB956, 0x7B56, 0xB2DF, 0x7B57, 0xB957, 0x7B58, 0xF3D8, 0x7B59, 0xB958, 0x7B5A, 0xF3D9, + 0x7B5B, 0xC9B8, 0x7B5C, 0xB959, 0x7B5D, 0xF3DD, 0x7B5E, 0xB95A, 0x7B5F, 0xB95B, 0x7B60, 0xF3DE, 0x7B61, 0xB95C, 0x7B62, 0xF3E1, + 0x7B63, 0xB95D, 0x7B64, 0xB95E, 0x7B65, 0xB95F, 0x7B66, 0xB960, 0x7B67, 0xB961, 0x7B68, 0xB962, 0x7B69, 0xB963, 0x7B6A, 0xB964, + 0x7B6B, 0xB965, 0x7B6C, 0xB966, 0x7B6D, 0xB967, 0x7B6E, 0xF3DF, 0x7B6F, 0xB968, 0x7B70, 0xB969, 0x7B71, 0xF3E3, 0x7B72, 0xF3E2, + 0x7B73, 0xB96A, 0x7B74, 0xB96B, 0x7B75, 0xF3DB, 0x7B76, 0xB96C, 0x7B77, 0xBFEA, 0x7B78, 0xB96D, 0x7B79, 0xB3EF, 0x7B7A, 0xB96E, + 0x7B7B, 0xF3E0, 0x7B7C, 0xB96F, 0x7B7D, 0xB970, 0x7B7E, 0xC7A9, 0x7B7F, 0xB971, 0x7B80, 0xBCF2, 0x7B81, 0xB972, 0x7B82, 0xB973, + 0x7B83, 0xB974, 0x7B84, 0xB975, 0x7B85, 0xF3EB, 0x7B86, 0xB976, 0x7B87, 0xB977, 0x7B88, 0xB978, 0x7B89, 0xB979, 0x7B8A, 0xB97A, + 0x7B8B, 0xB97B, 0x7B8C, 0xB97C, 0x7B8D, 0xB9BF, 0x7B8E, 0xB97D, 0x7B8F, 0xB97E, 0x7B90, 0xF3E4, 0x7B91, 0xB980, 0x7B92, 0xB981, + 0x7B93, 0xB982, 0x7B94, 0xB2AD, 0x7B95, 0xBBFE, 0x7B96, 0xB983, 0x7B97, 0xCBE3, 0x7B98, 0xB984, 0x7B99, 0xB985, 0x7B9A, 0xB986, + 0x7B9B, 0xB987, 0x7B9C, 0xF3ED, 0x7B9D, 0xF3E9, 0x7B9E, 0xB988, 0x7B9F, 0xB989, 0x7BA0, 0xB98A, 0x7BA1, 0xB9DC, 0x7BA2, 0xF3EE, + 0x7BA3, 0xB98B, 0x7BA4, 0xB98C, 0x7BA5, 0xB98D, 0x7BA6, 0xF3E5, 0x7BA7, 0xF3E6, 0x7BA8, 0xF3EA, 0x7BA9, 0xC2E1, 0x7BAA, 0xF3EC, + 0x7BAB, 0xF3EF, 0x7BAC, 0xF3E8, 0x7BAD, 0xBCFD, 0x7BAE, 0xB98E, 0x7BAF, 0xB98F, 0x7BB0, 0xB990, 0x7BB1, 0xCFE4, 0x7BB2, 0xB991, + 0x7BB3, 0xB992, 0x7BB4, 0xF3F0, 0x7BB5, 0xB993, 0x7BB6, 0xB994, 0x7BB7, 0xB995, 0x7BB8, 0xF3E7, 0x7BB9, 0xB996, 0x7BBA, 0xB997, + 0x7BBB, 0xB998, 0x7BBC, 0xB999, 0x7BBD, 0xB99A, 0x7BBE, 0xB99B, 0x7BBF, 0xB99C, 0x7BC0, 0xB99D, 0x7BC1, 0xF3F2, 0x7BC2, 0xB99E, + 0x7BC3, 0xB99F, 0x7BC4, 0xB9A0, 0x7BC5, 0xBA40, 0x7BC6, 0xD7AD, 0x7BC7, 0xC6AA, 0x7BC8, 0xBA41, 0x7BC9, 0xBA42, 0x7BCA, 0xBA43, + 0x7BCB, 0xBA44, 0x7BCC, 0xF3F3, 0x7BCD, 0xBA45, 0x7BCE, 0xBA46, 0x7BCF, 0xBA47, 0x7BD0, 0xBA48, 0x7BD1, 0xF3F1, 0x7BD2, 0xBA49, + 0x7BD3, 0xC2A8, 0x7BD4, 0xBA4A, 0x7BD5, 0xBA4B, 0x7BD6, 0xBA4C, 0x7BD7, 0xBA4D, 0x7BD8, 0xBA4E, 0x7BD9, 0xB8DD, 0x7BDA, 0xF3F5, + 0x7BDB, 0xBA4F, 0x7BDC, 0xBA50, 0x7BDD, 0xF3F4, 0x7BDE, 0xBA51, 0x7BDF, 0xBA52, 0x7BE0, 0xBA53, 0x7BE1, 0xB4DB, 0x7BE2, 0xBA54, + 0x7BE3, 0xBA55, 0x7BE4, 0xBA56, 0x7BE5, 0xF3F6, 0x7BE6, 0xF3F7, 0x7BE7, 0xBA57, 0x7BE8, 0xBA58, 0x7BE9, 0xBA59, 0x7BEA, 0xF3F8, + 0x7BEB, 0xBA5A, 0x7BEC, 0xBA5B, 0x7BED, 0xBA5C, 0x7BEE, 0xC0BA, 0x7BEF, 0xBA5D, 0x7BF0, 0xBA5E, 0x7BF1, 0xC0E9, 0x7BF2, 0xBA5F, + 0x7BF3, 0xBA60, 0x7BF4, 0xBA61, 0x7BF5, 0xBA62, 0x7BF6, 0xBA63, 0x7BF7, 0xC5F1, 0x7BF8, 0xBA64, 0x7BF9, 0xBA65, 0x7BFA, 0xBA66, + 0x7BFB, 0xBA67, 0x7BFC, 0xF3FB, 0x7BFD, 0xBA68, 0x7BFE, 0xF3FA, 0x7BFF, 0xBA69, 0x7C00, 0xBA6A, 0x7C01, 0xBA6B, 0x7C02, 0xBA6C, + 0x7C03, 0xBA6D, 0x7C04, 0xBA6E, 0x7C05, 0xBA6F, 0x7C06, 0xBA70, 0x7C07, 0xB4D8, 0x7C08, 0xBA71, 0x7C09, 0xBA72, 0x7C0A, 0xBA73, + 0x7C0B, 0xF3FE, 0x7C0C, 0xF3F9, 0x7C0D, 0xBA74, 0x7C0E, 0xBA75, 0x7C0F, 0xF3FC, 0x7C10, 0xBA76, 0x7C11, 0xBA77, 0x7C12, 0xBA78, + 0x7C13, 0xBA79, 0x7C14, 0xBA7A, 0x7C15, 0xBA7B, 0x7C16, 0xF3FD, 0x7C17, 0xBA7C, 0x7C18, 0xBA7D, 0x7C19, 0xBA7E, 0x7C1A, 0xBA80, + 0x7C1B, 0xBA81, 0x7C1C, 0xBA82, 0x7C1D, 0xBA83, 0x7C1E, 0xBA84, 0x7C1F, 0xF4A1, 0x7C20, 0xBA85, 0x7C21, 0xBA86, 0x7C22, 0xBA87, + 0x7C23, 0xBA88, 0x7C24, 0xBA89, 0x7C25, 0xBA8A, 0x7C26, 0xF4A3, 0x7C27, 0xBBC9, 0x7C28, 0xBA8B, 0x7C29, 0xBA8C, 0x7C2A, 0xF4A2, + 0x7C2B, 0xBA8D, 0x7C2C, 0xBA8E, 0x7C2D, 0xBA8F, 0x7C2E, 0xBA90, 0x7C2F, 0xBA91, 0x7C30, 0xBA92, 0x7C31, 0xBA93, 0x7C32, 0xBA94, + 0x7C33, 0xBA95, 0x7C34, 0xBA96, 0x7C35, 0xBA97, 0x7C36, 0xBA98, 0x7C37, 0xBA99, 0x7C38, 0xF4A4, 0x7C39, 0xBA9A, 0x7C3A, 0xBA9B, + 0x7C3B, 0xBA9C, 0x7C3C, 0xBA9D, 0x7C3D, 0xBA9E, 0x7C3E, 0xBA9F, 0x7C3F, 0xB2BE, 0x7C40, 0xF4A6, 0x7C41, 0xF4A5, 0x7C42, 0xBAA0, + 0x7C43, 0xBB40, 0x7C44, 0xBB41, 0x7C45, 0xBB42, 0x7C46, 0xBB43, 0x7C47, 0xBB44, 0x7C48, 0xBB45, 0x7C49, 0xBB46, 0x7C4A, 0xBB47, + 0x7C4B, 0xBB48, 0x7C4C, 0xBB49, 0x7C4D, 0xBCAE, 0x7C4E, 0xBB4A, 0x7C4F, 0xBB4B, 0x7C50, 0xBB4C, 0x7C51, 0xBB4D, 0x7C52, 0xBB4E, + 0x7C53, 0xBB4F, 0x7C54, 0xBB50, 0x7C55, 0xBB51, 0x7C56, 0xBB52, 0x7C57, 0xBB53, 0x7C58, 0xBB54, 0x7C59, 0xBB55, 0x7C5A, 0xBB56, + 0x7C5B, 0xBB57, 0x7C5C, 0xBB58, 0x7C5D, 0xBB59, 0x7C5E, 0xBB5A, 0x7C5F, 0xBB5B, 0x7C60, 0xBB5C, 0x7C61, 0xBB5D, 0x7C62, 0xBB5E, + 0x7C63, 0xBB5F, 0x7C64, 0xBB60, 0x7C65, 0xBB61, 0x7C66, 0xBB62, 0x7C67, 0xBB63, 0x7C68, 0xBB64, 0x7C69, 0xBB65, 0x7C6A, 0xBB66, + 0x7C6B, 0xBB67, 0x7C6C, 0xBB68, 0x7C6D, 0xBB69, 0x7C6E, 0xBB6A, 0x7C6F, 0xBB6B, 0x7C70, 0xBB6C, 0x7C71, 0xBB6D, 0x7C72, 0xBB6E, + 0x7C73, 0xC3D7, 0x7C74, 0xD9E1, 0x7C75, 0xBB6F, 0x7C76, 0xBB70, 0x7C77, 0xBB71, 0x7C78, 0xBB72, 0x7C79, 0xBB73, 0x7C7A, 0xBB74, + 0x7C7B, 0xC0E0, 0x7C7C, 0xF4CC, 0x7C7D, 0xD7D1, 0x7C7E, 0xBB75, 0x7C7F, 0xBB76, 0x7C80, 0xBB77, 0x7C81, 0xBB78, 0x7C82, 0xBB79, + 0x7C83, 0xBB7A, 0x7C84, 0xBB7B, 0x7C85, 0xBB7C, 0x7C86, 0xBB7D, 0x7C87, 0xBB7E, 0x7C88, 0xBB80, 0x7C89, 0xB7DB, 0x7C8A, 0xBB81, + 0x7C8B, 0xBB82, 0x7C8C, 0xBB83, 0x7C8D, 0xBB84, 0x7C8E, 0xBB85, 0x7C8F, 0xBB86, 0x7C90, 0xBB87, 0x7C91, 0xF4CE, 0x7C92, 0xC1A3, + 0x7C93, 0xBB88, 0x7C94, 0xBB89, 0x7C95, 0xC6C9, 0x7C96, 0xBB8A, 0x7C97, 0xB4D6, 0x7C98, 0xD5B3, 0x7C99, 0xBB8B, 0x7C9A, 0xBB8C, + 0x7C9B, 0xBB8D, 0x7C9C, 0xF4D0, 0x7C9D, 0xF4CF, 0x7C9E, 0xF4D1, 0x7C9F, 0xCBDA, 0x7CA0, 0xBB8E, 0x7CA1, 0xBB8F, 0x7CA2, 0xF4D2, + 0x7CA3, 0xBB90, 0x7CA4, 0xD4C1, 0x7CA5, 0xD6E0, 0x7CA6, 0xBB91, 0x7CA7, 0xBB92, 0x7CA8, 0xBB93, 0x7CA9, 0xBB94, 0x7CAA, 0xB7E0, + 0x7CAB, 0xBB95, 0x7CAC, 0xBB96, 0x7CAD, 0xBB97, 0x7CAE, 0xC1B8, 0x7CAF, 0xBB98, 0x7CB0, 0xBB99, 0x7CB1, 0xC1BB, 0x7CB2, 0xF4D3, + 0x7CB3, 0xBEAC, 0x7CB4, 0xBB9A, 0x7CB5, 0xBB9B, 0x7CB6, 0xBB9C, 0x7CB7, 0xBB9D, 0x7CB8, 0xBB9E, 0x7CB9, 0xB4E2, 0x7CBA, 0xBB9F, + 0x7CBB, 0xBBA0, 0x7CBC, 0xF4D4, 0x7CBD, 0xF4D5, 0x7CBE, 0xBEAB, 0x7CBF, 0xBC40, 0x7CC0, 0xBC41, 0x7CC1, 0xF4D6, 0x7CC2, 0xBC42, + 0x7CC3, 0xBC43, 0x7CC4, 0xBC44, 0x7CC5, 0xF4DB, 0x7CC6, 0xBC45, 0x7CC7, 0xF4D7, 0x7CC8, 0xF4DA, 0x7CC9, 0xBC46, 0x7CCA, 0xBAFD, + 0x7CCB, 0xBC47, 0x7CCC, 0xF4D8, 0x7CCD, 0xF4D9, 0x7CCE, 0xBC48, 0x7CCF, 0xBC49, 0x7CD0, 0xBC4A, 0x7CD1, 0xBC4B, 0x7CD2, 0xBC4C, + 0x7CD3, 0xBC4D, 0x7CD4, 0xBC4E, 0x7CD5, 0xB8E2, 0x7CD6, 0xCCC7, 0x7CD7, 0xF4DC, 0x7CD8, 0xBC4F, 0x7CD9, 0xB2DA, 0x7CDA, 0xBC50, + 0x7CDB, 0xBC51, 0x7CDC, 0xC3D3, 0x7CDD, 0xBC52, 0x7CDE, 0xBC53, 0x7CDF, 0xD4E3, 0x7CE0, 0xBFB7, 0x7CE1, 0xBC54, 0x7CE2, 0xBC55, + 0x7CE3, 0xBC56, 0x7CE4, 0xBC57, 0x7CE5, 0xBC58, 0x7CE6, 0xBC59, 0x7CE7, 0xBC5A, 0x7CE8, 0xF4DD, 0x7CE9, 0xBC5B, 0x7CEA, 0xBC5C, + 0x7CEB, 0xBC5D, 0x7CEC, 0xBC5E, 0x7CED, 0xBC5F, 0x7CEE, 0xBC60, 0x7CEF, 0xC5B4, 0x7CF0, 0xBC61, 0x7CF1, 0xBC62, 0x7CF2, 0xBC63, + 0x7CF3, 0xBC64, 0x7CF4, 0xBC65, 0x7CF5, 0xBC66, 0x7CF6, 0xBC67, 0x7CF7, 0xBC68, 0x7CF8, 0xF4E9, 0x7CF9, 0xBC69, 0x7CFA, 0xBC6A, + 0x7CFB, 0xCFB5, 0x7CFC, 0xBC6B, 0x7CFD, 0xBC6C, 0x7CFE, 0xBC6D, 0x7CFF, 0xBC6E, 0x7D00, 0xBC6F, 0x7D01, 0xBC70, 0x7D02, 0xBC71, + 0x7D03, 0xBC72, 0x7D04, 0xBC73, 0x7D05, 0xBC74, 0x7D06, 0xBC75, 0x7D07, 0xBC76, 0x7D08, 0xBC77, 0x7D09, 0xBC78, 0x7D0A, 0xCEC9, + 0x7D0B, 0xBC79, 0x7D0C, 0xBC7A, 0x7D0D, 0xBC7B, 0x7D0E, 0xBC7C, 0x7D0F, 0xBC7D, 0x7D10, 0xBC7E, 0x7D11, 0xBC80, 0x7D12, 0xBC81, + 0x7D13, 0xBC82, 0x7D14, 0xBC83, 0x7D15, 0xBC84, 0x7D16, 0xBC85, 0x7D17, 0xBC86, 0x7D18, 0xBC87, 0x7D19, 0xBC88, 0x7D1A, 0xBC89, + 0x7D1B, 0xBC8A, 0x7D1C, 0xBC8B, 0x7D1D, 0xBC8C, 0x7D1E, 0xBC8D, 0x7D1F, 0xBC8E, 0x7D20, 0xCBD8, 0x7D21, 0xBC8F, 0x7D22, 0xCBF7, + 0x7D23, 0xBC90, 0x7D24, 0xBC91, 0x7D25, 0xBC92, 0x7D26, 0xBC93, 0x7D27, 0xBDF4, 0x7D28, 0xBC94, 0x7D29, 0xBC95, 0x7D2A, 0xBC96, + 0x7D2B, 0xD7CF, 0x7D2C, 0xBC97, 0x7D2D, 0xBC98, 0x7D2E, 0xBC99, 0x7D2F, 0xC0DB, 0x7D30, 0xBC9A, 0x7D31, 0xBC9B, 0x7D32, 0xBC9C, + 0x7D33, 0xBC9D, 0x7D34, 0xBC9E, 0x7D35, 0xBC9F, 0x7D36, 0xBCA0, 0x7D37, 0xBD40, 0x7D38, 0xBD41, 0x7D39, 0xBD42, 0x7D3A, 0xBD43, + 0x7D3B, 0xBD44, 0x7D3C, 0xBD45, 0x7D3D, 0xBD46, 0x7D3E, 0xBD47, 0x7D3F, 0xBD48, 0x7D40, 0xBD49, 0x7D41, 0xBD4A, 0x7D42, 0xBD4B, + 0x7D43, 0xBD4C, 0x7D44, 0xBD4D, 0x7D45, 0xBD4E, 0x7D46, 0xBD4F, 0x7D47, 0xBD50, 0x7D48, 0xBD51, 0x7D49, 0xBD52, 0x7D4A, 0xBD53, + 0x7D4B, 0xBD54, 0x7D4C, 0xBD55, 0x7D4D, 0xBD56, 0x7D4E, 0xBD57, 0x7D4F, 0xBD58, 0x7D50, 0xBD59, 0x7D51, 0xBD5A, 0x7D52, 0xBD5B, + 0x7D53, 0xBD5C, 0x7D54, 0xBD5D, 0x7D55, 0xBD5E, 0x7D56, 0xBD5F, 0x7D57, 0xBD60, 0x7D58, 0xBD61, 0x7D59, 0xBD62, 0x7D5A, 0xBD63, + 0x7D5B, 0xBD64, 0x7D5C, 0xBD65, 0x7D5D, 0xBD66, 0x7D5E, 0xBD67, 0x7D5F, 0xBD68, 0x7D60, 0xBD69, 0x7D61, 0xBD6A, 0x7D62, 0xBD6B, + 0x7D63, 0xBD6C, 0x7D64, 0xBD6D, 0x7D65, 0xBD6E, 0x7D66, 0xBD6F, 0x7D67, 0xBD70, 0x7D68, 0xBD71, 0x7D69, 0xBD72, 0x7D6A, 0xBD73, + 0x7D6B, 0xBD74, 0x7D6C, 0xBD75, 0x7D6D, 0xBD76, 0x7D6E, 0xD0F5, 0x7D6F, 0xBD77, 0x7D70, 0xBD78, 0x7D71, 0xBD79, 0x7D72, 0xBD7A, + 0x7D73, 0xBD7B, 0x7D74, 0xBD7C, 0x7D75, 0xBD7D, 0x7D76, 0xBD7E, 0x7D77, 0xF4EA, 0x7D78, 0xBD80, 0x7D79, 0xBD81, 0x7D7A, 0xBD82, + 0x7D7B, 0xBD83, 0x7D7C, 0xBD84, 0x7D7D, 0xBD85, 0x7D7E, 0xBD86, 0x7D7F, 0xBD87, 0x7D80, 0xBD88, 0x7D81, 0xBD89, 0x7D82, 0xBD8A, + 0x7D83, 0xBD8B, 0x7D84, 0xBD8C, 0x7D85, 0xBD8D, 0x7D86, 0xBD8E, 0x7D87, 0xBD8F, 0x7D88, 0xBD90, 0x7D89, 0xBD91, 0x7D8A, 0xBD92, + 0x7D8B, 0xBD93, 0x7D8C, 0xBD94, 0x7D8D, 0xBD95, 0x7D8E, 0xBD96, 0x7D8F, 0xBD97, 0x7D90, 0xBD98, 0x7D91, 0xBD99, 0x7D92, 0xBD9A, + 0x7D93, 0xBD9B, 0x7D94, 0xBD9C, 0x7D95, 0xBD9D, 0x7D96, 0xBD9E, 0x7D97, 0xBD9F, 0x7D98, 0xBDA0, 0x7D99, 0xBE40, 0x7D9A, 0xBE41, + 0x7D9B, 0xBE42, 0x7D9C, 0xBE43, 0x7D9D, 0xBE44, 0x7D9E, 0xBE45, 0x7D9F, 0xBE46, 0x7DA0, 0xBE47, 0x7DA1, 0xBE48, 0x7DA2, 0xBE49, + 0x7DA3, 0xBE4A, 0x7DA4, 0xBE4B, 0x7DA5, 0xBE4C, 0x7DA6, 0xF4EB, 0x7DA7, 0xBE4D, 0x7DA8, 0xBE4E, 0x7DA9, 0xBE4F, 0x7DAA, 0xBE50, + 0x7DAB, 0xBE51, 0x7DAC, 0xBE52, 0x7DAD, 0xBE53, 0x7DAE, 0xF4EC, 0x7DAF, 0xBE54, 0x7DB0, 0xBE55, 0x7DB1, 0xBE56, 0x7DB2, 0xBE57, + 0x7DB3, 0xBE58, 0x7DB4, 0xBE59, 0x7DB5, 0xBE5A, 0x7DB6, 0xBE5B, 0x7DB7, 0xBE5C, 0x7DB8, 0xBE5D, 0x7DB9, 0xBE5E, 0x7DBA, 0xBE5F, + 0x7DBB, 0xBE60, 0x7DBC, 0xBE61, 0x7DBD, 0xBE62, 0x7DBE, 0xBE63, 0x7DBF, 0xBE64, 0x7DC0, 0xBE65, 0x7DC1, 0xBE66, 0x7DC2, 0xBE67, + 0x7DC3, 0xBE68, 0x7DC4, 0xBE69, 0x7DC5, 0xBE6A, 0x7DC6, 0xBE6B, 0x7DC7, 0xBE6C, 0x7DC8, 0xBE6D, 0x7DC9, 0xBE6E, 0x7DCA, 0xBE6F, + 0x7DCB, 0xBE70, 0x7DCC, 0xBE71, 0x7DCD, 0xBE72, 0x7DCE, 0xBE73, 0x7DCF, 0xBE74, 0x7DD0, 0xBE75, 0x7DD1, 0xBE76, 0x7DD2, 0xBE77, + 0x7DD3, 0xBE78, 0x7DD4, 0xBE79, 0x7DD5, 0xBE7A, 0x7DD6, 0xBE7B, 0x7DD7, 0xBE7C, 0x7DD8, 0xBE7D, 0x7DD9, 0xBE7E, 0x7DDA, 0xBE80, + 0x7DDB, 0xBE81, 0x7DDC, 0xBE82, 0x7DDD, 0xBE83, 0x7DDE, 0xBE84, 0x7DDF, 0xBE85, 0x7DE0, 0xBE86, 0x7DE1, 0xBE87, 0x7DE2, 0xBE88, + 0x7DE3, 0xBE89, 0x7DE4, 0xBE8A, 0x7DE5, 0xBE8B, 0x7DE6, 0xBE8C, 0x7DE7, 0xBE8D, 0x7DE8, 0xBE8E, 0x7DE9, 0xBE8F, 0x7DEA, 0xBE90, + 0x7DEB, 0xBE91, 0x7DEC, 0xBE92, 0x7DED, 0xBE93, 0x7DEE, 0xBE94, 0x7DEF, 0xBE95, 0x7DF0, 0xBE96, 0x7DF1, 0xBE97, 0x7DF2, 0xBE98, + 0x7DF3, 0xBE99, 0x7DF4, 0xBE9A, 0x7DF5, 0xBE9B, 0x7DF6, 0xBE9C, 0x7DF7, 0xBE9D, 0x7DF8, 0xBE9E, 0x7DF9, 0xBE9F, 0x7DFA, 0xBEA0, + 0x7DFB, 0xBF40, 0x7DFC, 0xBF41, 0x7DFD, 0xBF42, 0x7DFE, 0xBF43, 0x7DFF, 0xBF44, 0x7E00, 0xBF45, 0x7E01, 0xBF46, 0x7E02, 0xBF47, + 0x7E03, 0xBF48, 0x7E04, 0xBF49, 0x7E05, 0xBF4A, 0x7E06, 0xBF4B, 0x7E07, 0xBF4C, 0x7E08, 0xBF4D, 0x7E09, 0xBF4E, 0x7E0A, 0xBF4F, + 0x7E0B, 0xBF50, 0x7E0C, 0xBF51, 0x7E0D, 0xBF52, 0x7E0E, 0xBF53, 0x7E0F, 0xBF54, 0x7E10, 0xBF55, 0x7E11, 0xBF56, 0x7E12, 0xBF57, + 0x7E13, 0xBF58, 0x7E14, 0xBF59, 0x7E15, 0xBF5A, 0x7E16, 0xBF5B, 0x7E17, 0xBF5C, 0x7E18, 0xBF5D, 0x7E19, 0xBF5E, 0x7E1A, 0xBF5F, + 0x7E1B, 0xBF60, 0x7E1C, 0xBF61, 0x7E1D, 0xBF62, 0x7E1E, 0xBF63, 0x7E1F, 0xBF64, 0x7E20, 0xBF65, 0x7E21, 0xBF66, 0x7E22, 0xBF67, + 0x7E23, 0xBF68, 0x7E24, 0xBF69, 0x7E25, 0xBF6A, 0x7E26, 0xBF6B, 0x7E27, 0xBF6C, 0x7E28, 0xBF6D, 0x7E29, 0xBF6E, 0x7E2A, 0xBF6F, + 0x7E2B, 0xBF70, 0x7E2C, 0xBF71, 0x7E2D, 0xBF72, 0x7E2E, 0xBF73, 0x7E2F, 0xBF74, 0x7E30, 0xBF75, 0x7E31, 0xBF76, 0x7E32, 0xBF77, + 0x7E33, 0xBF78, 0x7E34, 0xBF79, 0x7E35, 0xBF7A, 0x7E36, 0xBF7B, 0x7E37, 0xBF7C, 0x7E38, 0xBF7D, 0x7E39, 0xBF7E, 0x7E3A, 0xBF80, + 0x7E3B, 0xF7E3, 0x7E3C, 0xBF81, 0x7E3D, 0xBF82, 0x7E3E, 0xBF83, 0x7E3F, 0xBF84, 0x7E40, 0xBF85, 0x7E41, 0xB7B1, 0x7E42, 0xBF86, + 0x7E43, 0xBF87, 0x7E44, 0xBF88, 0x7E45, 0xBF89, 0x7E46, 0xBF8A, 0x7E47, 0xF4ED, 0x7E48, 0xBF8B, 0x7E49, 0xBF8C, 0x7E4A, 0xBF8D, + 0x7E4B, 0xBF8E, 0x7E4C, 0xBF8F, 0x7E4D, 0xBF90, 0x7E4E, 0xBF91, 0x7E4F, 0xBF92, 0x7E50, 0xBF93, 0x7E51, 0xBF94, 0x7E52, 0xBF95, + 0x7E53, 0xBF96, 0x7E54, 0xBF97, 0x7E55, 0xBF98, 0x7E56, 0xBF99, 0x7E57, 0xBF9A, 0x7E58, 0xBF9B, 0x7E59, 0xBF9C, 0x7E5A, 0xBF9D, + 0x7E5B, 0xBF9E, 0x7E5C, 0xBF9F, 0x7E5D, 0xBFA0, 0x7E5E, 0xC040, 0x7E5F, 0xC041, 0x7E60, 0xC042, 0x7E61, 0xC043, 0x7E62, 0xC044, + 0x7E63, 0xC045, 0x7E64, 0xC046, 0x7E65, 0xC047, 0x7E66, 0xC048, 0x7E67, 0xC049, 0x7E68, 0xC04A, 0x7E69, 0xC04B, 0x7E6A, 0xC04C, + 0x7E6B, 0xC04D, 0x7E6C, 0xC04E, 0x7E6D, 0xC04F, 0x7E6E, 0xC050, 0x7E6F, 0xC051, 0x7E70, 0xC052, 0x7E71, 0xC053, 0x7E72, 0xC054, + 0x7E73, 0xC055, 0x7E74, 0xC056, 0x7E75, 0xC057, 0x7E76, 0xC058, 0x7E77, 0xC059, 0x7E78, 0xC05A, 0x7E79, 0xC05B, 0x7E7A, 0xC05C, + 0x7E7B, 0xC05D, 0x7E7C, 0xC05E, 0x7E7D, 0xC05F, 0x7E7E, 0xC060, 0x7E7F, 0xC061, 0x7E80, 0xC062, 0x7E81, 0xC063, 0x7E82, 0xD7EB, + 0x7E83, 0xC064, 0x7E84, 0xC065, 0x7E85, 0xC066, 0x7E86, 0xC067, 0x7E87, 0xC068, 0x7E88, 0xC069, 0x7E89, 0xC06A, 0x7E8A, 0xC06B, + 0x7E8B, 0xC06C, 0x7E8C, 0xC06D, 0x7E8D, 0xC06E, 0x7E8E, 0xC06F, 0x7E8F, 0xC070, 0x7E90, 0xC071, 0x7E91, 0xC072, 0x7E92, 0xC073, + 0x7E93, 0xC074, 0x7E94, 0xC075, 0x7E95, 0xC076, 0x7E96, 0xC077, 0x7E97, 0xC078, 0x7E98, 0xC079, 0x7E99, 0xC07A, 0x7E9A, 0xC07B, + 0x7E9B, 0xF4EE, 0x7E9C, 0xC07C, 0x7E9D, 0xC07D, 0x7E9E, 0xC07E, 0x7E9F, 0xE6F9, 0x7EA0, 0xBEC0, 0x7EA1, 0xE6FA, 0x7EA2, 0xBAEC, + 0x7EA3, 0xE6FB, 0x7EA4, 0xCFCB, 0x7EA5, 0xE6FC, 0x7EA6, 0xD4BC, 0x7EA7, 0xBCB6, 0x7EA8, 0xE6FD, 0x7EA9, 0xE6FE, 0x7EAA, 0xBCCD, + 0x7EAB, 0xC8D2, 0x7EAC, 0xCEB3, 0x7EAD, 0xE7A1, 0x7EAE, 0xC080, 0x7EAF, 0xB4BF, 0x7EB0, 0xE7A2, 0x7EB1, 0xC9B4, 0x7EB2, 0xB8D9, + 0x7EB3, 0xC4C9, 0x7EB4, 0xC081, 0x7EB5, 0xD7DD, 0x7EB6, 0xC2DA, 0x7EB7, 0xB7D7, 0x7EB8, 0xD6BD, 0x7EB9, 0xCEC6, 0x7EBA, 0xB7C4, + 0x7EBB, 0xC082, 0x7EBC, 0xC083, 0x7EBD, 0xC5A6, 0x7EBE, 0xE7A3, 0x7EBF, 0xCFDF, 0x7EC0, 0xE7A4, 0x7EC1, 0xE7A5, 0x7EC2, 0xE7A6, + 0x7EC3, 0xC1B7, 0x7EC4, 0xD7E9, 0x7EC5, 0xC9F0, 0x7EC6, 0xCFB8, 0x7EC7, 0xD6AF, 0x7EC8, 0xD6D5, 0x7EC9, 0xE7A7, 0x7ECA, 0xB0ED, + 0x7ECB, 0xE7A8, 0x7ECC, 0xE7A9, 0x7ECD, 0xC9DC, 0x7ECE, 0xD2EF, 0x7ECF, 0xBEAD, 0x7ED0, 0xE7AA, 0x7ED1, 0xB0F3, 0x7ED2, 0xC8DE, + 0x7ED3, 0xBDE1, 0x7ED4, 0xE7AB, 0x7ED5, 0xC8C6, 0x7ED6, 0xC084, 0x7ED7, 0xE7AC, 0x7ED8, 0xBBE6, 0x7ED9, 0xB8F8, 0x7EDA, 0xD1A4, + 0x7EDB, 0xE7AD, 0x7EDC, 0xC2E7, 0x7EDD, 0xBEF8, 0x7EDE, 0xBDCA, 0x7EDF, 0xCDB3, 0x7EE0, 0xE7AE, 0x7EE1, 0xE7AF, 0x7EE2, 0xBEEE, + 0x7EE3, 0xD0E5, 0x7EE4, 0xC085, 0x7EE5, 0xCBE7, 0x7EE6, 0xCCD0, 0x7EE7, 0xBCCC, 0x7EE8, 0xE7B0, 0x7EE9, 0xBCA8, 0x7EEA, 0xD0F7, + 0x7EEB, 0xE7B1, 0x7EEC, 0xC086, 0x7EED, 0xD0F8, 0x7EEE, 0xE7B2, 0x7EEF, 0xE7B3, 0x7EF0, 0xB4C2, 0x7EF1, 0xE7B4, 0x7EF2, 0xE7B5, + 0x7EF3, 0xC9FE, 0x7EF4, 0xCEAC, 0x7EF5, 0xC3E0, 0x7EF6, 0xE7B7, 0x7EF7, 0xB1C1, 0x7EF8, 0xB3F1, 0x7EF9, 0xC087, 0x7EFA, 0xE7B8, + 0x7EFB, 0xE7B9, 0x7EFC, 0xD7DB, 0x7EFD, 0xD5C0, 0x7EFE, 0xE7BA, 0x7EFF, 0xC2CC, 0x7F00, 0xD7BA, 0x7F01, 0xE7BB, 0x7F02, 0xE7BC, + 0x7F03, 0xE7BD, 0x7F04, 0xBCEA, 0x7F05, 0xC3E5, 0x7F06, 0xC0C2, 0x7F07, 0xE7BE, 0x7F08, 0xE7BF, 0x7F09, 0xBCA9, 0x7F0A, 0xC088, + 0x7F0B, 0xE7C0, 0x7F0C, 0xE7C1, 0x7F0D, 0xE7B6, 0x7F0E, 0xB6D0, 0x7F0F, 0xE7C2, 0x7F10, 0xC089, 0x7F11, 0xE7C3, 0x7F12, 0xE7C4, + 0x7F13, 0xBBBA, 0x7F14, 0xB5DE, 0x7F15, 0xC2C6, 0x7F16, 0xB1E0, 0x7F17, 0xE7C5, 0x7F18, 0xD4B5, 0x7F19, 0xE7C6, 0x7F1A, 0xB8BF, + 0x7F1B, 0xE7C8, 0x7F1C, 0xE7C7, 0x7F1D, 0xB7EC, 0x7F1E, 0xC08A, 0x7F1F, 0xE7C9, 0x7F20, 0xB2F8, 0x7F21, 0xE7CA, 0x7F22, 0xE7CB, + 0x7F23, 0xE7CC, 0x7F24, 0xE7CD, 0x7F25, 0xE7CE, 0x7F26, 0xE7CF, 0x7F27, 0xE7D0, 0x7F28, 0xD3A7, 0x7F29, 0xCBF5, 0x7F2A, 0xE7D1, + 0x7F2B, 0xE7D2, 0x7F2C, 0xE7D3, 0x7F2D, 0xE7D4, 0x7F2E, 0xC9C9, 0x7F2F, 0xE7D5, 0x7F30, 0xE7D6, 0x7F31, 0xE7D7, 0x7F32, 0xE7D8, + 0x7F33, 0xE7D9, 0x7F34, 0xBDC9, 0x7F35, 0xE7DA, 0x7F36, 0xF3BE, 0x7F37, 0xC08B, 0x7F38, 0xB8D7, 0x7F39, 0xC08C, 0x7F3A, 0xC8B1, + 0x7F3B, 0xC08D, 0x7F3C, 0xC08E, 0x7F3D, 0xC08F, 0x7F3E, 0xC090, 0x7F3F, 0xC091, 0x7F40, 0xC092, 0x7F41, 0xC093, 0x7F42, 0xF3BF, + 0x7F43, 0xC094, 0x7F44, 0xF3C0, 0x7F45, 0xF3C1, 0x7F46, 0xC095, 0x7F47, 0xC096, 0x7F48, 0xC097, 0x7F49, 0xC098, 0x7F4A, 0xC099, + 0x7F4B, 0xC09A, 0x7F4C, 0xC09B, 0x7F4D, 0xC09C, 0x7F4E, 0xC09D, 0x7F4F, 0xC09E, 0x7F50, 0xB9DE, 0x7F51, 0xCDF8, 0x7F52, 0xC09F, + 0x7F53, 0xC0A0, 0x7F54, 0xD8E8, 0x7F55, 0xBAB1, 0x7F56, 0xC140, 0x7F57, 0xC2DE, 0x7F58, 0xEEB7, 0x7F59, 0xC141, 0x7F5A, 0xB7A3, + 0x7F5B, 0xC142, 0x7F5C, 0xC143, 0x7F5D, 0xC144, 0x7F5E, 0xC145, 0x7F5F, 0xEEB9, 0x7F60, 0xC146, 0x7F61, 0xEEB8, 0x7F62, 0xB0D5, + 0x7F63, 0xC147, 0x7F64, 0xC148, 0x7F65, 0xC149, 0x7F66, 0xC14A, 0x7F67, 0xC14B, 0x7F68, 0xEEBB, 0x7F69, 0xD5D6, 0x7F6A, 0xD7EF, + 0x7F6B, 0xC14C, 0x7F6C, 0xC14D, 0x7F6D, 0xC14E, 0x7F6E, 0xD6C3, 0x7F6F, 0xC14F, 0x7F70, 0xC150, 0x7F71, 0xEEBD, 0x7F72, 0xCAF0, + 0x7F73, 0xC151, 0x7F74, 0xEEBC, 0x7F75, 0xC152, 0x7F76, 0xC153, 0x7F77, 0xC154, 0x7F78, 0xC155, 0x7F79, 0xEEBE, 0x7F7A, 0xC156, + 0x7F7B, 0xC157, 0x7F7C, 0xC158, 0x7F7D, 0xC159, 0x7F7E, 0xEEC0, 0x7F7F, 0xC15A, 0x7F80, 0xC15B, 0x7F81, 0xEEBF, 0x7F82, 0xC15C, + 0x7F83, 0xC15D, 0x7F84, 0xC15E, 0x7F85, 0xC15F, 0x7F86, 0xC160, 0x7F87, 0xC161, 0x7F88, 0xC162, 0x7F89, 0xC163, 0x7F8A, 0xD1F2, + 0x7F8B, 0xC164, 0x7F8C, 0xC7BC, 0x7F8D, 0xC165, 0x7F8E, 0xC3C0, 0x7F8F, 0xC166, 0x7F90, 0xC167, 0x7F91, 0xC168, 0x7F92, 0xC169, + 0x7F93, 0xC16A, 0x7F94, 0xB8E1, 0x7F95, 0xC16B, 0x7F96, 0xC16C, 0x7F97, 0xC16D, 0x7F98, 0xC16E, 0x7F99, 0xC16F, 0x7F9A, 0xC1E7, + 0x7F9B, 0xC170, 0x7F9C, 0xC171, 0x7F9D, 0xF4C6, 0x7F9E, 0xD0DF, 0x7F9F, 0xF4C7, 0x7FA0, 0xC172, 0x7FA1, 0xCFDB, 0x7FA2, 0xC173, + 0x7FA3, 0xC174, 0x7FA4, 0xC8BA, 0x7FA5, 0xC175, 0x7FA6, 0xC176, 0x7FA7, 0xF4C8, 0x7FA8, 0xC177, 0x7FA9, 0xC178, 0x7FAA, 0xC179, + 0x7FAB, 0xC17A, 0x7FAC, 0xC17B, 0x7FAD, 0xC17C, 0x7FAE, 0xC17D, 0x7FAF, 0xF4C9, 0x7FB0, 0xF4CA, 0x7FB1, 0xC17E, 0x7FB2, 0xF4CB, + 0x7FB3, 0xC180, 0x7FB4, 0xC181, 0x7FB5, 0xC182, 0x7FB6, 0xC183, 0x7FB7, 0xC184, 0x7FB8, 0xD9FA, 0x7FB9, 0xB8FE, 0x7FBA, 0xC185, + 0x7FBB, 0xC186, 0x7FBC, 0xE5F1, 0x7FBD, 0xD3F0, 0x7FBE, 0xC187, 0x7FBF, 0xF4E0, 0x7FC0, 0xC188, 0x7FC1, 0xCECC, 0x7FC2, 0xC189, + 0x7FC3, 0xC18A, 0x7FC4, 0xC18B, 0x7FC5, 0xB3E1, 0x7FC6, 0xC18C, 0x7FC7, 0xC18D, 0x7FC8, 0xC18E, 0x7FC9, 0xC18F, 0x7FCA, 0xF1B4, + 0x7FCB, 0xC190, 0x7FCC, 0xD2EE, 0x7FCD, 0xC191, 0x7FCE, 0xF4E1, 0x7FCF, 0xC192, 0x7FD0, 0xC193, 0x7FD1, 0xC194, 0x7FD2, 0xC195, + 0x7FD3, 0xC196, 0x7FD4, 0xCFE8, 0x7FD5, 0xF4E2, 0x7FD6, 0xC197, 0x7FD7, 0xC198, 0x7FD8, 0xC7CC, 0x7FD9, 0xC199, 0x7FDA, 0xC19A, + 0x7FDB, 0xC19B, 0x7FDC, 0xC19C, 0x7FDD, 0xC19D, 0x7FDE, 0xC19E, 0x7FDF, 0xB5D4, 0x7FE0, 0xB4E4, 0x7FE1, 0xF4E4, 0x7FE2, 0xC19F, + 0x7FE3, 0xC1A0, 0x7FE4, 0xC240, 0x7FE5, 0xF4E3, 0x7FE6, 0xF4E5, 0x7FE7, 0xC241, 0x7FE8, 0xC242, 0x7FE9, 0xF4E6, 0x7FEA, 0xC243, + 0x7FEB, 0xC244, 0x7FEC, 0xC245, 0x7FED, 0xC246, 0x7FEE, 0xF4E7, 0x7FEF, 0xC247, 0x7FF0, 0xBAB2, 0x7FF1, 0xB0BF, 0x7FF2, 0xC248, + 0x7FF3, 0xF4E8, 0x7FF4, 0xC249, 0x7FF5, 0xC24A, 0x7FF6, 0xC24B, 0x7FF7, 0xC24C, 0x7FF8, 0xC24D, 0x7FF9, 0xC24E, 0x7FFA, 0xC24F, + 0x7FFB, 0xB7AD, 0x7FFC, 0xD2ED, 0x7FFD, 0xC250, 0x7FFE, 0xC251, 0x7FFF, 0xC252, 0x8000, 0xD2AB, 0x8001, 0xC0CF, 0x8002, 0xC253, + 0x8003, 0xBFBC, 0x8004, 0xEBA3, 0x8005, 0xD5DF, 0x8006, 0xEAC8, 0x8007, 0xC254, 0x8008, 0xC255, 0x8009, 0xC256, 0x800A, 0xC257, + 0x800B, 0xF1F3, 0x800C, 0xB6F8, 0x800D, 0xCBA3, 0x800E, 0xC258, 0x800F, 0xC259, 0x8010, 0xC4CD, 0x8011, 0xC25A, 0x8012, 0xF1E7, + 0x8013, 0xC25B, 0x8014, 0xF1E8, 0x8015, 0xB8FB, 0x8016, 0xF1E9, 0x8017, 0xBAC4, 0x8018, 0xD4C5, 0x8019, 0xB0D2, 0x801A, 0xC25C, + 0x801B, 0xC25D, 0x801C, 0xF1EA, 0x801D, 0xC25E, 0x801E, 0xC25F, 0x801F, 0xC260, 0x8020, 0xF1EB, 0x8021, 0xC261, 0x8022, 0xF1EC, + 0x8023, 0xC262, 0x8024, 0xC263, 0x8025, 0xF1ED, 0x8026, 0xF1EE, 0x8027, 0xF1EF, 0x8028, 0xF1F1, 0x8029, 0xF1F0, 0x802A, 0xC5D5, + 0x802B, 0xC264, 0x802C, 0xC265, 0x802D, 0xC266, 0x802E, 0xC267, 0x802F, 0xC268, 0x8030, 0xC269, 0x8031, 0xF1F2, 0x8032, 0xC26A, + 0x8033, 0xB6FA, 0x8034, 0xC26B, 0x8035, 0xF1F4, 0x8036, 0xD2AE, 0x8037, 0xDEC7, 0x8038, 0xCBCA, 0x8039, 0xC26C, 0x803A, 0xC26D, + 0x803B, 0xB3DC, 0x803C, 0xC26E, 0x803D, 0xB5A2, 0x803E, 0xC26F, 0x803F, 0xB9A2, 0x8040, 0xC270, 0x8041, 0xC271, 0x8042, 0xC4F4, + 0x8043, 0xF1F5, 0x8044, 0xC272, 0x8045, 0xC273, 0x8046, 0xF1F6, 0x8047, 0xC274, 0x8048, 0xC275, 0x8049, 0xC276, 0x804A, 0xC1C4, + 0x804B, 0xC1FB, 0x804C, 0xD6B0, 0x804D, 0xF1F7, 0x804E, 0xC277, 0x804F, 0xC278, 0x8050, 0xC279, 0x8051, 0xC27A, 0x8052, 0xF1F8, + 0x8053, 0xC27B, 0x8054, 0xC1AA, 0x8055, 0xC27C, 0x8056, 0xC27D, 0x8057, 0xC27E, 0x8058, 0xC6B8, 0x8059, 0xC280, 0x805A, 0xBEDB, + 0x805B, 0xC281, 0x805C, 0xC282, 0x805D, 0xC283, 0x805E, 0xC284, 0x805F, 0xC285, 0x8060, 0xC286, 0x8061, 0xC287, 0x8062, 0xC288, + 0x8063, 0xC289, 0x8064, 0xC28A, 0x8065, 0xC28B, 0x8066, 0xC28C, 0x8067, 0xC28D, 0x8068, 0xC28E, 0x8069, 0xF1F9, 0x806A, 0xB4CF, + 0x806B, 0xC28F, 0x806C, 0xC290, 0x806D, 0xC291, 0x806E, 0xC292, 0x806F, 0xC293, 0x8070, 0xC294, 0x8071, 0xF1FA, 0x8072, 0xC295, + 0x8073, 0xC296, 0x8074, 0xC297, 0x8075, 0xC298, 0x8076, 0xC299, 0x8077, 0xC29A, 0x8078, 0xC29B, 0x8079, 0xC29C, 0x807A, 0xC29D, + 0x807B, 0xC29E, 0x807C, 0xC29F, 0x807D, 0xC2A0, 0x807E, 0xC340, 0x807F, 0xEDB2, 0x8080, 0xEDB1, 0x8081, 0xC341, 0x8082, 0xC342, + 0x8083, 0xCBE0, 0x8084, 0xD2DE, 0x8085, 0xC343, 0x8086, 0xCBC1, 0x8087, 0xD5D8, 0x8088, 0xC344, 0x8089, 0xC8E2, 0x808A, 0xC345, + 0x808B, 0xC0DF, 0x808C, 0xBCA1, 0x808D, 0xC346, 0x808E, 0xC347, 0x808F, 0xC348, 0x8090, 0xC349, 0x8091, 0xC34A, 0x8092, 0xC34B, + 0x8093, 0xEBC1, 0x8094, 0xC34C, 0x8095, 0xC34D, 0x8096, 0xD0A4, 0x8097, 0xC34E, 0x8098, 0xD6E2, 0x8099, 0xC34F, 0x809A, 0xB6C7, + 0x809B, 0xB8D8, 0x809C, 0xEBC0, 0x809D, 0xB8CE, 0x809E, 0xC350, 0x809F, 0xEBBF, 0x80A0, 0xB3A6, 0x80A1, 0xB9C9, 0x80A2, 0xD6AB, + 0x80A3, 0xC351, 0x80A4, 0xB7F4, 0x80A5, 0xB7CA, 0x80A6, 0xC352, 0x80A7, 0xC353, 0x80A8, 0xC354, 0x80A9, 0xBCE7, 0x80AA, 0xB7BE, + 0x80AB, 0xEBC6, 0x80AC, 0xC355, 0x80AD, 0xEBC7, 0x80AE, 0xB0B9, 0x80AF, 0xBFCF, 0x80B0, 0xC356, 0x80B1, 0xEBC5, 0x80B2, 0xD3FD, + 0x80B3, 0xC357, 0x80B4, 0xEBC8, 0x80B5, 0xC358, 0x80B6, 0xC359, 0x80B7, 0xEBC9, 0x80B8, 0xC35A, 0x80B9, 0xC35B, 0x80BA, 0xB7CE, + 0x80BB, 0xC35C, 0x80BC, 0xEBC2, 0x80BD, 0xEBC4, 0x80BE, 0xC9F6, 0x80BF, 0xD6D7, 0x80C0, 0xD5CD, 0x80C1, 0xD0B2, 0x80C2, 0xEBCF, + 0x80C3, 0xCEB8, 0x80C4, 0xEBD0, 0x80C5, 0xC35D, 0x80C6, 0xB5A8, 0x80C7, 0xC35E, 0x80C8, 0xC35F, 0x80C9, 0xC360, 0x80CA, 0xC361, + 0x80CB, 0xC362, 0x80CC, 0xB1B3, 0x80CD, 0xEBD2, 0x80CE, 0xCCA5, 0x80CF, 0xC363, 0x80D0, 0xC364, 0x80D1, 0xC365, 0x80D2, 0xC366, + 0x80D3, 0xC367, 0x80D4, 0xC368, 0x80D5, 0xC369, 0x80D6, 0xC5D6, 0x80D7, 0xEBD3, 0x80D8, 0xC36A, 0x80D9, 0xEBD1, 0x80DA, 0xC5DF, + 0x80DB, 0xEBCE, 0x80DC, 0xCAA4, 0x80DD, 0xEBD5, 0x80DE, 0xB0FB, 0x80DF, 0xC36B, 0x80E0, 0xC36C, 0x80E1, 0xBAFA, 0x80E2, 0xC36D, + 0x80E3, 0xC36E, 0x80E4, 0xD8B7, 0x80E5, 0xF1E3, 0x80E6, 0xC36F, 0x80E7, 0xEBCA, 0x80E8, 0xEBCB, 0x80E9, 0xEBCC, 0x80EA, 0xEBCD, + 0x80EB, 0xEBD6, 0x80EC, 0xE6C0, 0x80ED, 0xEBD9, 0x80EE, 0xC370, 0x80EF, 0xBFE8, 0x80F0, 0xD2C8, 0x80F1, 0xEBD7, 0x80F2, 0xEBDC, + 0x80F3, 0xB8EC, 0x80F4, 0xEBD8, 0x80F5, 0xC371, 0x80F6, 0xBDBA, 0x80F7, 0xC372, 0x80F8, 0xD0D8, 0x80F9, 0xC373, 0x80FA, 0xB0B7, + 0x80FB, 0xC374, 0x80FC, 0xEBDD, 0x80FD, 0xC4DC, 0x80FE, 0xC375, 0x80FF, 0xC376, 0x8100, 0xC377, 0x8101, 0xC378, 0x8102, 0xD6AC, + 0x8103, 0xC379, 0x8104, 0xC37A, 0x8105, 0xC37B, 0x8106, 0xB4E0, 0x8107, 0xC37C, 0x8108, 0xC37D, 0x8109, 0xC2F6, 0x810A, 0xBCB9, + 0x810B, 0xC37E, 0x810C, 0xC380, 0x810D, 0xEBDA, 0x810E, 0xEBDB, 0x810F, 0xD4E0, 0x8110, 0xC6EA, 0x8111, 0xC4D4, 0x8112, 0xEBDF, + 0x8113, 0xC5A7, 0x8114, 0xD9F5, 0x8115, 0xC381, 0x8116, 0xB2B1, 0x8117, 0xC382, 0x8118, 0xEBE4, 0x8119, 0xC383, 0x811A, 0xBDC5, + 0x811B, 0xC384, 0x811C, 0xC385, 0x811D, 0xC386, 0x811E, 0xEBE2, 0x811F, 0xC387, 0x8120, 0xC388, 0x8121, 0xC389, 0x8122, 0xC38A, + 0x8123, 0xC38B, 0x8124, 0xC38C, 0x8125, 0xC38D, 0x8126, 0xC38E, 0x8127, 0xC38F, 0x8128, 0xC390, 0x8129, 0xC391, 0x812A, 0xC392, + 0x812B, 0xC393, 0x812C, 0xEBE3, 0x812D, 0xC394, 0x812E, 0xC395, 0x812F, 0xB8AC, 0x8130, 0xC396, 0x8131, 0xCDD1, 0x8132, 0xEBE5, + 0x8133, 0xC397, 0x8134, 0xC398, 0x8135, 0xC399, 0x8136, 0xEBE1, 0x8137, 0xC39A, 0x8138, 0xC1B3, 0x8139, 0xC39B, 0x813A, 0xC39C, + 0x813B, 0xC39D, 0x813C, 0xC39E, 0x813D, 0xC39F, 0x813E, 0xC6A2, 0x813F, 0xC3A0, 0x8140, 0xC440, 0x8141, 0xC441, 0x8142, 0xC442, + 0x8143, 0xC443, 0x8144, 0xC444, 0x8145, 0xC445, 0x8146, 0xCCF3, 0x8147, 0xC446, 0x8148, 0xEBE6, 0x8149, 0xC447, 0x814A, 0xC0B0, + 0x814B, 0xD2B8, 0x814C, 0xEBE7, 0x814D, 0xC448, 0x814E, 0xC449, 0x814F, 0xC44A, 0x8150, 0xB8AF, 0x8151, 0xB8AD, 0x8152, 0xC44B, + 0x8153, 0xEBE8, 0x8154, 0xC7BB, 0x8155, 0xCDF3, 0x8156, 0xC44C, 0x8157, 0xC44D, 0x8158, 0xC44E, 0x8159, 0xEBEA, 0x815A, 0xEBEB, + 0x815B, 0xC44F, 0x815C, 0xC450, 0x815D, 0xC451, 0x815E, 0xC452, 0x815F, 0xC453, 0x8160, 0xEBED, 0x8161, 0xC454, 0x8162, 0xC455, + 0x8163, 0xC456, 0x8164, 0xC457, 0x8165, 0xD0C8, 0x8166, 0xC458, 0x8167, 0xEBF2, 0x8168, 0xC459, 0x8169, 0xEBEE, 0x816A, 0xC45A, + 0x816B, 0xC45B, 0x816C, 0xC45C, 0x816D, 0xEBF1, 0x816E, 0xC8F9, 0x816F, 0xC45D, 0x8170, 0xD1FC, 0x8171, 0xEBEC, 0x8172, 0xC45E, + 0x8173, 0xC45F, 0x8174, 0xEBE9, 0x8175, 0xC460, 0x8176, 0xC461, 0x8177, 0xC462, 0x8178, 0xC463, 0x8179, 0xB8B9, 0x817A, 0xCFD9, + 0x817B, 0xC4E5, 0x817C, 0xEBEF, 0x817D, 0xEBF0, 0x817E, 0xCCDA, 0x817F, 0xCDC8, 0x8180, 0xB0F2, 0x8181, 0xC464, 0x8182, 0xEBF6, + 0x8183, 0xC465, 0x8184, 0xC466, 0x8185, 0xC467, 0x8186, 0xC468, 0x8187, 0xC469, 0x8188, 0xEBF5, 0x8189, 0xC46A, 0x818A, 0xB2B2, + 0x818B, 0xC46B, 0x818C, 0xC46C, 0x818D, 0xC46D, 0x818E, 0xC46E, 0x818F, 0xB8E0, 0x8190, 0xC46F, 0x8191, 0xEBF7, 0x8192, 0xC470, + 0x8193, 0xC471, 0x8194, 0xC472, 0x8195, 0xC473, 0x8196, 0xC474, 0x8197, 0xC475, 0x8198, 0xB1EC, 0x8199, 0xC476, 0x819A, 0xC477, + 0x819B, 0xCCC5, 0x819C, 0xC4A4, 0x819D, 0xCFA5, 0x819E, 0xC478, 0x819F, 0xC479, 0x81A0, 0xC47A, 0x81A1, 0xC47B, 0x81A2, 0xC47C, + 0x81A3, 0xEBF9, 0x81A4, 0xC47D, 0x81A5, 0xC47E, 0x81A6, 0xECA2, 0x81A7, 0xC480, 0x81A8, 0xC5F2, 0x81A9, 0xC481, 0x81AA, 0xEBFA, + 0x81AB, 0xC482, 0x81AC, 0xC483, 0x81AD, 0xC484, 0x81AE, 0xC485, 0x81AF, 0xC486, 0x81B0, 0xC487, 0x81B1, 0xC488, 0x81B2, 0xC489, + 0x81B3, 0xC9C5, 0x81B4, 0xC48A, 0x81B5, 0xC48B, 0x81B6, 0xC48C, 0x81B7, 0xC48D, 0x81B8, 0xC48E, 0x81B9, 0xC48F, 0x81BA, 0xE2DF, + 0x81BB, 0xEBFE, 0x81BC, 0xC490, 0x81BD, 0xC491, 0x81BE, 0xC492, 0x81BF, 0xC493, 0x81C0, 0xCDCE, 0x81C1, 0xECA1, 0x81C2, 0xB1DB, + 0x81C3, 0xD3B7, 0x81C4, 0xC494, 0x81C5, 0xC495, 0x81C6, 0xD2DC, 0x81C7, 0xC496, 0x81C8, 0xC497, 0x81C9, 0xC498, 0x81CA, 0xEBFD, + 0x81CB, 0xC499, 0x81CC, 0xEBFB, 0x81CD, 0xC49A, 0x81CE, 0xC49B, 0x81CF, 0xC49C, 0x81D0, 0xC49D, 0x81D1, 0xC49E, 0x81D2, 0xC49F, + 0x81D3, 0xC4A0, 0x81D4, 0xC540, 0x81D5, 0xC541, 0x81D6, 0xC542, 0x81D7, 0xC543, 0x81D8, 0xC544, 0x81D9, 0xC545, 0x81DA, 0xC546, + 0x81DB, 0xC547, 0x81DC, 0xC548, 0x81DD, 0xC549, 0x81DE, 0xC54A, 0x81DF, 0xC54B, 0x81E0, 0xC54C, 0x81E1, 0xC54D, 0x81E2, 0xC54E, + 0x81E3, 0xB3BC, 0x81E4, 0xC54F, 0x81E5, 0xC550, 0x81E6, 0xC551, 0x81E7, 0xEAB0, 0x81E8, 0xC552, 0x81E9, 0xC553, 0x81EA, 0xD7D4, + 0x81EB, 0xC554, 0x81EC, 0xF4AB, 0x81ED, 0xB3F4, 0x81EE, 0xC555, 0x81EF, 0xC556, 0x81F0, 0xC557, 0x81F1, 0xC558, 0x81F2, 0xC559, + 0x81F3, 0xD6C1, 0x81F4, 0xD6C2, 0x81F5, 0xC55A, 0x81F6, 0xC55B, 0x81F7, 0xC55C, 0x81F8, 0xC55D, 0x81F9, 0xC55E, 0x81FA, 0xC55F, + 0x81FB, 0xD5E9, 0x81FC, 0xBECA, 0x81FD, 0xC560, 0x81FE, 0xF4A7, 0x81FF, 0xC561, 0x8200, 0xD2A8, 0x8201, 0xF4A8, 0x8202, 0xF4A9, + 0x8203, 0xC562, 0x8204, 0xF4AA, 0x8205, 0xBECB, 0x8206, 0xD3DF, 0x8207, 0xC563, 0x8208, 0xC564, 0x8209, 0xC565, 0x820A, 0xC566, + 0x820B, 0xC567, 0x820C, 0xC9E0, 0x820D, 0xC9E1, 0x820E, 0xC568, 0x820F, 0xC569, 0x8210, 0xF3C2, 0x8211, 0xC56A, 0x8212, 0xCAE6, + 0x8213, 0xC56B, 0x8214, 0xCCF2, 0x8215, 0xC56C, 0x8216, 0xC56D, 0x8217, 0xC56E, 0x8218, 0xC56F, 0x8219, 0xC570, 0x821A, 0xC571, + 0x821B, 0xE2B6, 0x821C, 0xCBB4, 0x821D, 0xC572, 0x821E, 0xCEE8, 0x821F, 0xD6DB, 0x8220, 0xC573, 0x8221, 0xF4AD, 0x8222, 0xF4AE, + 0x8223, 0xF4AF, 0x8224, 0xC574, 0x8225, 0xC575, 0x8226, 0xC576, 0x8227, 0xC577, 0x8228, 0xF4B2, 0x8229, 0xC578, 0x822A, 0xBABD, + 0x822B, 0xF4B3, 0x822C, 0xB0E3, 0x822D, 0xF4B0, 0x822E, 0xC579, 0x822F, 0xF4B1, 0x8230, 0xBDA2, 0x8231, 0xB2D5, 0x8232, 0xC57A, + 0x8233, 0xF4B6, 0x8234, 0xF4B7, 0x8235, 0xB6E6, 0x8236, 0xB2B0, 0x8237, 0xCFCF, 0x8238, 0xF4B4, 0x8239, 0xB4AC, 0x823A, 0xC57B, + 0x823B, 0xF4B5, 0x823C, 0xC57C, 0x823D, 0xC57D, 0x823E, 0xF4B8, 0x823F, 0xC57E, 0x8240, 0xC580, 0x8241, 0xC581, 0x8242, 0xC582, + 0x8243, 0xC583, 0x8244, 0xF4B9, 0x8245, 0xC584, 0x8246, 0xC585, 0x8247, 0xCDA7, 0x8248, 0xC586, 0x8249, 0xF4BA, 0x824A, 0xC587, + 0x824B, 0xF4BB, 0x824C, 0xC588, 0x824D, 0xC589, 0x824E, 0xC58A, 0x824F, 0xF4BC, 0x8250, 0xC58B, 0x8251, 0xC58C, 0x8252, 0xC58D, + 0x8253, 0xC58E, 0x8254, 0xC58F, 0x8255, 0xC590, 0x8256, 0xC591, 0x8257, 0xC592, 0x8258, 0xCBD2, 0x8259, 0xC593, 0x825A, 0xF4BD, + 0x825B, 0xC594, 0x825C, 0xC595, 0x825D, 0xC596, 0x825E, 0xC597, 0x825F, 0xF4BE, 0x8260, 0xC598, 0x8261, 0xC599, 0x8262, 0xC59A, + 0x8263, 0xC59B, 0x8264, 0xC59C, 0x8265, 0xC59D, 0x8266, 0xC59E, 0x8267, 0xC59F, 0x8268, 0xF4BF, 0x8269, 0xC5A0, 0x826A, 0xC640, + 0x826B, 0xC641, 0x826C, 0xC642, 0x826D, 0xC643, 0x826E, 0xF4DE, 0x826F, 0xC1BC, 0x8270, 0xBCE8, 0x8271, 0xC644, 0x8272, 0xC9AB, + 0x8273, 0xD1DE, 0x8274, 0xE5F5, 0x8275, 0xC645, 0x8276, 0xC646, 0x8277, 0xC647, 0x8278, 0xC648, 0x8279, 0xDCB3, 0x827A, 0xD2D5, + 0x827B, 0xC649, 0x827C, 0xC64A, 0x827D, 0xDCB4, 0x827E, 0xB0AC, 0x827F, 0xDCB5, 0x8280, 0xC64B, 0x8281, 0xC64C, 0x8282, 0xBDDA, + 0x8283, 0xC64D, 0x8284, 0xDCB9, 0x8285, 0xC64E, 0x8286, 0xC64F, 0x8287, 0xC650, 0x8288, 0xD8C2, 0x8289, 0xC651, 0x828A, 0xDCB7, + 0x828B, 0xD3F3, 0x828C, 0xC652, 0x828D, 0xC9D6, 0x828E, 0xDCBA, 0x828F, 0xDCB6, 0x8290, 0xC653, 0x8291, 0xDCBB, 0x8292, 0xC3A2, + 0x8293, 0xC654, 0x8294, 0xC655, 0x8295, 0xC656, 0x8296, 0xC657, 0x8297, 0xDCBC, 0x8298, 0xDCC5, 0x8299, 0xDCBD, 0x829A, 0xC658, + 0x829B, 0xC659, 0x829C, 0xCEDF, 0x829D, 0xD6A5, 0x829E, 0xC65A, 0x829F, 0xDCCF, 0x82A0, 0xC65B, 0x82A1, 0xDCCD, 0x82A2, 0xC65C, + 0x82A3, 0xC65D, 0x82A4, 0xDCD2, 0x82A5, 0xBDE6, 0x82A6, 0xC2AB, 0x82A7, 0xC65E, 0x82A8, 0xDCB8, 0x82A9, 0xDCCB, 0x82AA, 0xDCCE, + 0x82AB, 0xDCBE, 0x82AC, 0xB7D2, 0x82AD, 0xB0C5, 0x82AE, 0xDCC7, 0x82AF, 0xD0BE, 0x82B0, 0xDCC1, 0x82B1, 0xBBA8, 0x82B2, 0xC65F, + 0x82B3, 0xB7BC, 0x82B4, 0xDCCC, 0x82B5, 0xC660, 0x82B6, 0xC661, 0x82B7, 0xDCC6, 0x82B8, 0xDCBF, 0x82B9, 0xC7DB, 0x82BA, 0xC662, + 0x82BB, 0xC663, 0x82BC, 0xC664, 0x82BD, 0xD1BF, 0x82BE, 0xDCC0, 0x82BF, 0xC665, 0x82C0, 0xC666, 0x82C1, 0xDCCA, 0x82C2, 0xC667, + 0x82C3, 0xC668, 0x82C4, 0xDCD0, 0x82C5, 0xC669, 0x82C6, 0xC66A, 0x82C7, 0xCEAD, 0x82C8, 0xDCC2, 0x82C9, 0xC66B, 0x82CA, 0xDCC3, + 0x82CB, 0xDCC8, 0x82CC, 0xDCC9, 0x82CD, 0xB2D4, 0x82CE, 0xDCD1, 0x82CF, 0xCBD5, 0x82D0, 0xC66C, 0x82D1, 0xD4B7, 0x82D2, 0xDCDB, + 0x82D3, 0xDCDF, 0x82D4, 0xCCA6, 0x82D5, 0xDCE6, 0x82D6, 0xC66D, 0x82D7, 0xC3E7, 0x82D8, 0xDCDC, 0x82D9, 0xC66E, 0x82DA, 0xC66F, + 0x82DB, 0xBFC1, 0x82DC, 0xDCD9, 0x82DD, 0xC670, 0x82DE, 0xB0FA, 0x82DF, 0xB9B6, 0x82E0, 0xDCE5, 0x82E1, 0xDCD3, 0x82E2, 0xC671, + 0x82E3, 0xDCC4, 0x82E4, 0xDCD6, 0x82E5, 0xC8F4, 0x82E6, 0xBFE0, 0x82E7, 0xC672, 0x82E8, 0xC673, 0x82E9, 0xC674, 0x82EA, 0xC675, + 0x82EB, 0xC9BB, 0x82EC, 0xC676, 0x82ED, 0xC677, 0x82EE, 0xC678, 0x82EF, 0xB1BD, 0x82F0, 0xC679, 0x82F1, 0xD3A2, 0x82F2, 0xC67A, + 0x82F3, 0xC67B, 0x82F4, 0xDCDA, 0x82F5, 0xC67C, 0x82F6, 0xC67D, 0x82F7, 0xDCD5, 0x82F8, 0xC67E, 0x82F9, 0xC6BB, 0x82FA, 0xC680, + 0x82FB, 0xDCDE, 0x82FC, 0xC681, 0x82FD, 0xC682, 0x82FE, 0xC683, 0x82FF, 0xC684, 0x8300, 0xC685, 0x8301, 0xD7C2, 0x8302, 0xC3AF, + 0x8303, 0xB7B6, 0x8304, 0xC7D1, 0x8305, 0xC3A9, 0x8306, 0xDCE2, 0x8307, 0xDCD8, 0x8308, 0xDCEB, 0x8309, 0xDCD4, 0x830A, 0xC686, + 0x830B, 0xC687, 0x830C, 0xDCDD, 0x830D, 0xC688, 0x830E, 0xBEA5, 0x830F, 0xDCD7, 0x8310, 0xC689, 0x8311, 0xDCE0, 0x8312, 0xC68A, + 0x8313, 0xC68B, 0x8314, 0xDCE3, 0x8315, 0xDCE4, 0x8316, 0xC68C, 0x8317, 0xDCF8, 0x8318, 0xC68D, 0x8319, 0xC68E, 0x831A, 0xDCE1, + 0x831B, 0xDDA2, 0x831C, 0xDCE7, 0x831D, 0xC68F, 0x831E, 0xC690, 0x831F, 0xC691, 0x8320, 0xC692, 0x8321, 0xC693, 0x8322, 0xC694, + 0x8323, 0xC695, 0x8324, 0xC696, 0x8325, 0xC697, 0x8326, 0xC698, 0x8327, 0xBCEB, 0x8328, 0xB4C4, 0x8329, 0xC699, 0x832A, 0xC69A, + 0x832B, 0xC3A3, 0x832C, 0xB2E7, 0x832D, 0xDCFA, 0x832E, 0xC69B, 0x832F, 0xDCF2, 0x8330, 0xC69C, 0x8331, 0xDCEF, 0x8332, 0xC69D, + 0x8333, 0xDCFC, 0x8334, 0xDCEE, 0x8335, 0xD2F0, 0x8336, 0xB2E8, 0x8337, 0xC69E, 0x8338, 0xC8D7, 0x8339, 0xC8E3, 0x833A, 0xDCFB, + 0x833B, 0xC69F, 0x833C, 0xDCED, 0x833D, 0xC6A0, 0x833E, 0xC740, 0x833F, 0xC741, 0x8340, 0xDCF7, 0x8341, 0xC742, 0x8342, 0xC743, + 0x8343, 0xDCF5, 0x8344, 0xC744, 0x8345, 0xC745, 0x8346, 0xBEA3, 0x8347, 0xDCF4, 0x8348, 0xC746, 0x8349, 0xB2DD, 0x834A, 0xC747, + 0x834B, 0xC748, 0x834C, 0xC749, 0x834D, 0xC74A, 0x834E, 0xC74B, 0x834F, 0xDCF3, 0x8350, 0xBCF6, 0x8351, 0xDCE8, 0x8352, 0xBBC4, + 0x8353, 0xC74C, 0x8354, 0xC0F3, 0x8355, 0xC74D, 0x8356, 0xC74E, 0x8357, 0xC74F, 0x8358, 0xC750, 0x8359, 0xC751, 0x835A, 0xBCD4, + 0x835B, 0xDCE9, 0x835C, 0xDCEA, 0x835D, 0xC752, 0x835E, 0xDCF1, 0x835F, 0xDCF6, 0x8360, 0xDCF9, 0x8361, 0xB5B4, 0x8362, 0xC753, + 0x8363, 0xC8D9, 0x8364, 0xBBE7, 0x8365, 0xDCFE, 0x8366, 0xDCFD, 0x8367, 0xD3AB, 0x8368, 0xDDA1, 0x8369, 0xDDA3, 0x836A, 0xDDA5, + 0x836B, 0xD2F1, 0x836C, 0xDDA4, 0x836D, 0xDDA6, 0x836E, 0xDDA7, 0x836F, 0xD2A9, 0x8370, 0xC754, 0x8371, 0xC755, 0x8372, 0xC756, + 0x8373, 0xC757, 0x8374, 0xC758, 0x8375, 0xC759, 0x8376, 0xC75A, 0x8377, 0xBAC9, 0x8378, 0xDDA9, 0x8379, 0xC75B, 0x837A, 0xC75C, + 0x837B, 0xDDB6, 0x837C, 0xDDB1, 0x837D, 0xDDB4, 0x837E, 0xC75D, 0x837F, 0xC75E, 0x8380, 0xC75F, 0x8381, 0xC760, 0x8382, 0xC761, + 0x8383, 0xC762, 0x8384, 0xC763, 0x8385, 0xDDB0, 0x8386, 0xC6CE, 0x8387, 0xC764, 0x8388, 0xC765, 0x8389, 0xC0F2, 0x838A, 0xC766, + 0x838B, 0xC767, 0x838C, 0xC768, 0x838D, 0xC769, 0x838E, 0xC9AF, 0x838F, 0xC76A, 0x8390, 0xC76B, 0x8391, 0xC76C, 0x8392, 0xDCEC, + 0x8393, 0xDDAE, 0x8394, 0xC76D, 0x8395, 0xC76E, 0x8396, 0xC76F, 0x8397, 0xC770, 0x8398, 0xDDB7, 0x8399, 0xC771, 0x839A, 0xC772, + 0x839B, 0xDCF0, 0x839C, 0xDDAF, 0x839D, 0xC773, 0x839E, 0xDDB8, 0x839F, 0xC774, 0x83A0, 0xDDAC, 0x83A1, 0xC775, 0x83A2, 0xC776, + 0x83A3, 0xC777, 0x83A4, 0xC778, 0x83A5, 0xC779, 0x83A6, 0xC77A, 0x83A7, 0xC77B, 0x83A8, 0xDDB9, 0x83A9, 0xDDB3, 0x83AA, 0xDDAD, + 0x83AB, 0xC4AA, 0x83AC, 0xC77C, 0x83AD, 0xC77D, 0x83AE, 0xC77E, 0x83AF, 0xC780, 0x83B0, 0xDDA8, 0x83B1, 0xC0B3, 0x83B2, 0xC1AB, + 0x83B3, 0xDDAA, 0x83B4, 0xDDAB, 0x83B5, 0xC781, 0x83B6, 0xDDB2, 0x83B7, 0xBBF1, 0x83B8, 0xDDB5, 0x83B9, 0xD3A8, 0x83BA, 0xDDBA, + 0x83BB, 0xC782, 0x83BC, 0xDDBB, 0x83BD, 0xC3A7, 0x83BE, 0xC783, 0x83BF, 0xC784, 0x83C0, 0xDDD2, 0x83C1, 0xDDBC, 0x83C2, 0xC785, + 0x83C3, 0xC786, 0x83C4, 0xC787, 0x83C5, 0xDDD1, 0x83C6, 0xC788, 0x83C7, 0xB9BD, 0x83C8, 0xC789, 0x83C9, 0xC78A, 0x83CA, 0xBED5, + 0x83CB, 0xC78B, 0x83CC, 0xBEFA, 0x83CD, 0xC78C, 0x83CE, 0xC78D, 0x83CF, 0xBACA, 0x83D0, 0xC78E, 0x83D1, 0xC78F, 0x83D2, 0xC790, + 0x83D3, 0xC791, 0x83D4, 0xDDCA, 0x83D5, 0xC792, 0x83D6, 0xDDC5, 0x83D7, 0xC793, 0x83D8, 0xDDBF, 0x83D9, 0xC794, 0x83DA, 0xC795, + 0x83DB, 0xC796, 0x83DC, 0xB2CB, 0x83DD, 0xDDC3, 0x83DE, 0xC797, 0x83DF, 0xDDCB, 0x83E0, 0xB2A4, 0x83E1, 0xDDD5, 0x83E2, 0xC798, + 0x83E3, 0xC799, 0x83E4, 0xC79A, 0x83E5, 0xDDBE, 0x83E6, 0xC79B, 0x83E7, 0xC79C, 0x83E8, 0xC79D, 0x83E9, 0xC6D0, 0x83EA, 0xDDD0, + 0x83EB, 0xC79E, 0x83EC, 0xC79F, 0x83ED, 0xC7A0, 0x83EE, 0xC840, 0x83EF, 0xC841, 0x83F0, 0xDDD4, 0x83F1, 0xC1E2, 0x83F2, 0xB7C6, + 0x83F3, 0xC842, 0x83F4, 0xC843, 0x83F5, 0xC844, 0x83F6, 0xC845, 0x83F7, 0xC846, 0x83F8, 0xDDCE, 0x83F9, 0xDDCF, 0x83FA, 0xC847, + 0x83FB, 0xC848, 0x83FC, 0xC849, 0x83FD, 0xDDC4, 0x83FE, 0xC84A, 0x83FF, 0xC84B, 0x8400, 0xC84C, 0x8401, 0xDDBD, 0x8402, 0xC84D, + 0x8403, 0xDDCD, 0x8404, 0xCCD1, 0x8405, 0xC84E, 0x8406, 0xDDC9, 0x8407, 0xC84F, 0x8408, 0xC850, 0x8409, 0xC851, 0x840A, 0xC852, + 0x840B, 0xDDC2, 0x840C, 0xC3C8, 0x840D, 0xC6BC, 0x840E, 0xCEAE, 0x840F, 0xDDCC, 0x8410, 0xC853, 0x8411, 0xDDC8, 0x8412, 0xC854, + 0x8413, 0xC855, 0x8414, 0xC856, 0x8415, 0xC857, 0x8416, 0xC858, 0x8417, 0xC859, 0x8418, 0xDDC1, 0x8419, 0xC85A, 0x841A, 0xC85B, + 0x841B, 0xC85C, 0x841C, 0xDDC6, 0x841D, 0xC2DC, 0x841E, 0xC85D, 0x841F, 0xC85E, 0x8420, 0xC85F, 0x8421, 0xC860, 0x8422, 0xC861, + 0x8423, 0xC862, 0x8424, 0xD3A9, 0x8425, 0xD3AA, 0x8426, 0xDDD3, 0x8427, 0xCFF4, 0x8428, 0xC8F8, 0x8429, 0xC863, 0x842A, 0xC864, + 0x842B, 0xC865, 0x842C, 0xC866, 0x842D, 0xC867, 0x842E, 0xC868, 0x842F, 0xC869, 0x8430, 0xC86A, 0x8431, 0xDDE6, 0x8432, 0xC86B, + 0x8433, 0xC86C, 0x8434, 0xC86D, 0x8435, 0xC86E, 0x8436, 0xC86F, 0x8437, 0xC870, 0x8438, 0xDDC7, 0x8439, 0xC871, 0x843A, 0xC872, + 0x843B, 0xC873, 0x843C, 0xDDE0, 0x843D, 0xC2E4, 0x843E, 0xC874, 0x843F, 0xC875, 0x8440, 0xC876, 0x8441, 0xC877, 0x8442, 0xC878, + 0x8443, 0xC879, 0x8444, 0xC87A, 0x8445, 0xC87B, 0x8446, 0xDDE1, 0x8447, 0xC87C, 0x8448, 0xC87D, 0x8449, 0xC87E, 0x844A, 0xC880, + 0x844B, 0xC881, 0x844C, 0xC882, 0x844D, 0xC883, 0x844E, 0xC884, 0x844F, 0xC885, 0x8450, 0xC886, 0x8451, 0xDDD7, 0x8452, 0xC887, + 0x8453, 0xC888, 0x8454, 0xC889, 0x8455, 0xC88A, 0x8456, 0xC88B, 0x8457, 0xD6F8, 0x8458, 0xC88C, 0x8459, 0xDDD9, 0x845A, 0xDDD8, + 0x845B, 0xB8F0, 0x845C, 0xDDD6, 0x845D, 0xC88D, 0x845E, 0xC88E, 0x845F, 0xC88F, 0x8460, 0xC890, 0x8461, 0xC6CF, 0x8462, 0xC891, + 0x8463, 0xB6AD, 0x8464, 0xC892, 0x8465, 0xC893, 0x8466, 0xC894, 0x8467, 0xC895, 0x8468, 0xC896, 0x8469, 0xDDE2, 0x846A, 0xC897, + 0x846B, 0xBAF9, 0x846C, 0xD4E1, 0x846D, 0xDDE7, 0x846E, 0xC898, 0x846F, 0xC899, 0x8470, 0xC89A, 0x8471, 0xB4D0, 0x8472, 0xC89B, + 0x8473, 0xDDDA, 0x8474, 0xC89C, 0x8475, 0xBFFB, 0x8476, 0xDDE3, 0x8477, 0xC89D, 0x8478, 0xDDDF, 0x8479, 0xC89E, 0x847A, 0xDDDD, + 0x847B, 0xC89F, 0x847C, 0xC8A0, 0x847D, 0xC940, 0x847E, 0xC941, 0x847F, 0xC942, 0x8480, 0xC943, 0x8481, 0xC944, 0x8482, 0xB5D9, + 0x8483, 0xC945, 0x8484, 0xC946, 0x8485, 0xC947, 0x8486, 0xC948, 0x8487, 0xDDDB, 0x8488, 0xDDDC, 0x8489, 0xDDDE, 0x848A, 0xC949, + 0x848B, 0xBDAF, 0x848C, 0xDDE4, 0x848D, 0xC94A, 0x848E, 0xDDE5, 0x848F, 0xC94B, 0x8490, 0xC94C, 0x8491, 0xC94D, 0x8492, 0xC94E, + 0x8493, 0xC94F, 0x8494, 0xC950, 0x8495, 0xC951, 0x8496, 0xC952, 0x8497, 0xDDF5, 0x8498, 0xC953, 0x8499, 0xC3C9, 0x849A, 0xC954, + 0x849B, 0xC955, 0x849C, 0xCBE2, 0x849D, 0xC956, 0x849E, 0xC957, 0x849F, 0xC958, 0x84A0, 0xC959, 0x84A1, 0xDDF2, 0x84A2, 0xC95A, + 0x84A3, 0xC95B, 0x84A4, 0xC95C, 0x84A5, 0xC95D, 0x84A6, 0xC95E, 0x84A7, 0xC95F, 0x84A8, 0xC960, 0x84A9, 0xC961, 0x84AA, 0xC962, + 0x84AB, 0xC963, 0x84AC, 0xC964, 0x84AD, 0xC965, 0x84AE, 0xC966, 0x84AF, 0xD8E1, 0x84B0, 0xC967, 0x84B1, 0xC968, 0x84B2, 0xC6D1, + 0x84B3, 0xC969, 0x84B4, 0xDDF4, 0x84B5, 0xC96A, 0x84B6, 0xC96B, 0x84B7, 0xC96C, 0x84B8, 0xD5F4, 0x84B9, 0xDDF3, 0x84BA, 0xDDF0, + 0x84BB, 0xC96D, 0x84BC, 0xC96E, 0x84BD, 0xDDEC, 0x84BE, 0xC96F, 0x84BF, 0xDDEF, 0x84C0, 0xC970, 0x84C1, 0xDDE8, 0x84C2, 0xC971, + 0x84C3, 0xC972, 0x84C4, 0xD0EE, 0x84C5, 0xC973, 0x84C6, 0xC974, 0x84C7, 0xC975, 0x84C8, 0xC976, 0x84C9, 0xC8D8, 0x84CA, 0xDDEE, + 0x84CB, 0xC977, 0x84CC, 0xC978, 0x84CD, 0xDDE9, 0x84CE, 0xC979, 0x84CF, 0xC97A, 0x84D0, 0xDDEA, 0x84D1, 0xCBF2, 0x84D2, 0xC97B, + 0x84D3, 0xDDED, 0x84D4, 0xC97C, 0x84D5, 0xC97D, 0x84D6, 0xB1CD, 0x84D7, 0xC97E, 0x84D8, 0xC980, 0x84D9, 0xC981, 0x84DA, 0xC982, + 0x84DB, 0xC983, 0x84DC, 0xC984, 0x84DD, 0xC0B6, 0x84DE, 0xC985, 0x84DF, 0xBCBB, 0x84E0, 0xDDF1, 0x84E1, 0xC986, 0x84E2, 0xC987, + 0x84E3, 0xDDF7, 0x84E4, 0xC988, 0x84E5, 0xDDF6, 0x84E6, 0xDDEB, 0x84E7, 0xC989, 0x84E8, 0xC98A, 0x84E9, 0xC98B, 0x84EA, 0xC98C, + 0x84EB, 0xC98D, 0x84EC, 0xC5EE, 0x84ED, 0xC98E, 0x84EE, 0xC98F, 0x84EF, 0xC990, 0x84F0, 0xDDFB, 0x84F1, 0xC991, 0x84F2, 0xC992, + 0x84F3, 0xC993, 0x84F4, 0xC994, 0x84F5, 0xC995, 0x84F6, 0xC996, 0x84F7, 0xC997, 0x84F8, 0xC998, 0x84F9, 0xC999, 0x84FA, 0xC99A, + 0x84FB, 0xC99B, 0x84FC, 0xDEA4, 0x84FD, 0xC99C, 0x84FE, 0xC99D, 0x84FF, 0xDEA3, 0x8500, 0xC99E, 0x8501, 0xC99F, 0x8502, 0xC9A0, + 0x8503, 0xCA40, 0x8504, 0xCA41, 0x8505, 0xCA42, 0x8506, 0xCA43, 0x8507, 0xCA44, 0x8508, 0xCA45, 0x8509, 0xCA46, 0x850A, 0xCA47, + 0x850B, 0xCA48, 0x850C, 0xDDF8, 0x850D, 0xCA49, 0x850E, 0xCA4A, 0x850F, 0xCA4B, 0x8510, 0xCA4C, 0x8511, 0xC3EF, 0x8512, 0xCA4D, + 0x8513, 0xC2FB, 0x8514, 0xCA4E, 0x8515, 0xCA4F, 0x8516, 0xCA50, 0x8517, 0xD5E1, 0x8518, 0xCA51, 0x8519, 0xCA52, 0x851A, 0xCEB5, + 0x851B, 0xCA53, 0x851C, 0xCA54, 0x851D, 0xCA55, 0x851E, 0xCA56, 0x851F, 0xDDFD, 0x8520, 0xCA57, 0x8521, 0xB2CC, 0x8522, 0xCA58, + 0x8523, 0xCA59, 0x8524, 0xCA5A, 0x8525, 0xCA5B, 0x8526, 0xCA5C, 0x8527, 0xCA5D, 0x8528, 0xCA5E, 0x8529, 0xCA5F, 0x852A, 0xCA60, + 0x852B, 0xC4E8, 0x852C, 0xCADF, 0x852D, 0xCA61, 0x852E, 0xCA62, 0x852F, 0xCA63, 0x8530, 0xCA64, 0x8531, 0xCA65, 0x8532, 0xCA66, + 0x8533, 0xCA67, 0x8534, 0xCA68, 0x8535, 0xCA69, 0x8536, 0xCA6A, 0x8537, 0xC7BE, 0x8538, 0xDDFA, 0x8539, 0xDDFC, 0x853A, 0xDDFE, + 0x853B, 0xDEA2, 0x853C, 0xB0AA, 0x853D, 0xB1CE, 0x853E, 0xCA6B, 0x853F, 0xCA6C, 0x8540, 0xCA6D, 0x8541, 0xCA6E, 0x8542, 0xCA6F, + 0x8543, 0xDEAC, 0x8544, 0xCA70, 0x8545, 0xCA71, 0x8546, 0xCA72, 0x8547, 0xCA73, 0x8548, 0xDEA6, 0x8549, 0xBDB6, 0x854A, 0xC8EF, + 0x854B, 0xCA74, 0x854C, 0xCA75, 0x854D, 0xCA76, 0x854E, 0xCA77, 0x854F, 0xCA78, 0x8550, 0xCA79, 0x8551, 0xCA7A, 0x8552, 0xCA7B, + 0x8553, 0xCA7C, 0x8554, 0xCA7D, 0x8555, 0xCA7E, 0x8556, 0xDEA1, 0x8557, 0xCA80, 0x8558, 0xCA81, 0x8559, 0xDEA5, 0x855A, 0xCA82, + 0x855B, 0xCA83, 0x855C, 0xCA84, 0x855D, 0xCA85, 0x855E, 0xDEA9, 0x855F, 0xCA86, 0x8560, 0xCA87, 0x8561, 0xCA88, 0x8562, 0xCA89, + 0x8563, 0xCA8A, 0x8564, 0xDEA8, 0x8565, 0xCA8B, 0x8566, 0xCA8C, 0x8567, 0xCA8D, 0x8568, 0xDEA7, 0x8569, 0xCA8E, 0x856A, 0xCA8F, + 0x856B, 0xCA90, 0x856C, 0xCA91, 0x856D, 0xCA92, 0x856E, 0xCA93, 0x856F, 0xCA94, 0x8570, 0xCA95, 0x8571, 0xCA96, 0x8572, 0xDEAD, + 0x8573, 0xCA97, 0x8574, 0xD4CC, 0x8575, 0xCA98, 0x8576, 0xCA99, 0x8577, 0xCA9A, 0x8578, 0xCA9B, 0x8579, 0xDEB3, 0x857A, 0xDEAA, + 0x857B, 0xDEAE, 0x857C, 0xCA9C, 0x857D, 0xCA9D, 0x857E, 0xC0D9, 0x857F, 0xCA9E, 0x8580, 0xCA9F, 0x8581, 0xCAA0, 0x8582, 0xCB40, + 0x8583, 0xCB41, 0x8584, 0xB1A1, 0x8585, 0xDEB6, 0x8586, 0xCB42, 0x8587, 0xDEB1, 0x8588, 0xCB43, 0x8589, 0xCB44, 0x858A, 0xCB45, + 0x858B, 0xCB46, 0x858C, 0xCB47, 0x858D, 0xCB48, 0x858E, 0xCB49, 0x858F, 0xDEB2, 0x8590, 0xCB4A, 0x8591, 0xCB4B, 0x8592, 0xCB4C, + 0x8593, 0xCB4D, 0x8594, 0xCB4E, 0x8595, 0xCB4F, 0x8596, 0xCB50, 0x8597, 0xCB51, 0x8598, 0xCB52, 0x8599, 0xCB53, 0x859A, 0xCB54, + 0x859B, 0xD1A6, 0x859C, 0xDEB5, 0x859D, 0xCB55, 0x859E, 0xCB56, 0x859F, 0xCB57, 0x85A0, 0xCB58, 0x85A1, 0xCB59, 0x85A2, 0xCB5A, + 0x85A3, 0xCB5B, 0x85A4, 0xDEAF, 0x85A5, 0xCB5C, 0x85A6, 0xCB5D, 0x85A7, 0xCB5E, 0x85A8, 0xDEB0, 0x85A9, 0xCB5F, 0x85AA, 0xD0BD, + 0x85AB, 0xCB60, 0x85AC, 0xCB61, 0x85AD, 0xCB62, 0x85AE, 0xDEB4, 0x85AF, 0xCAED, 0x85B0, 0xDEB9, 0x85B1, 0xCB63, 0x85B2, 0xCB64, + 0x85B3, 0xCB65, 0x85B4, 0xCB66, 0x85B5, 0xCB67, 0x85B6, 0xCB68, 0x85B7, 0xDEB8, 0x85B8, 0xCB69, 0x85B9, 0xDEB7, 0x85BA, 0xCB6A, + 0x85BB, 0xCB6B, 0x85BC, 0xCB6C, 0x85BD, 0xCB6D, 0x85BE, 0xCB6E, 0x85BF, 0xCB6F, 0x85C0, 0xCB70, 0x85C1, 0xDEBB, 0x85C2, 0xCB71, + 0x85C3, 0xCB72, 0x85C4, 0xCB73, 0x85C5, 0xCB74, 0x85C6, 0xCB75, 0x85C7, 0xCB76, 0x85C8, 0xCB77, 0x85C9, 0xBDE5, 0x85CA, 0xCB78, + 0x85CB, 0xCB79, 0x85CC, 0xCB7A, 0x85CD, 0xCB7B, 0x85CE, 0xCB7C, 0x85CF, 0xB2D8, 0x85D0, 0xC3EA, 0x85D1, 0xCB7D, 0x85D2, 0xCB7E, + 0x85D3, 0xDEBA, 0x85D4, 0xCB80, 0x85D5, 0xC5BA, 0x85D6, 0xCB81, 0x85D7, 0xCB82, 0x85D8, 0xCB83, 0x85D9, 0xCB84, 0x85DA, 0xCB85, + 0x85DB, 0xCB86, 0x85DC, 0xDEBC, 0x85DD, 0xCB87, 0x85DE, 0xCB88, 0x85DF, 0xCB89, 0x85E0, 0xCB8A, 0x85E1, 0xCB8B, 0x85E2, 0xCB8C, + 0x85E3, 0xCB8D, 0x85E4, 0xCCD9, 0x85E5, 0xCB8E, 0x85E6, 0xCB8F, 0x85E7, 0xCB90, 0x85E8, 0xCB91, 0x85E9, 0xB7AA, 0x85EA, 0xCB92, + 0x85EB, 0xCB93, 0x85EC, 0xCB94, 0x85ED, 0xCB95, 0x85EE, 0xCB96, 0x85EF, 0xCB97, 0x85F0, 0xCB98, 0x85F1, 0xCB99, 0x85F2, 0xCB9A, + 0x85F3, 0xCB9B, 0x85F4, 0xCB9C, 0x85F5, 0xCB9D, 0x85F6, 0xCB9E, 0x85F7, 0xCB9F, 0x85F8, 0xCBA0, 0x85F9, 0xCC40, 0x85FA, 0xCC41, + 0x85FB, 0xD4E5, 0x85FC, 0xCC42, 0x85FD, 0xCC43, 0x85FE, 0xCC44, 0x85FF, 0xDEBD, 0x8600, 0xCC45, 0x8601, 0xCC46, 0x8602, 0xCC47, + 0x8603, 0xCC48, 0x8604, 0xCC49, 0x8605, 0xDEBF, 0x8606, 0xCC4A, 0x8607, 0xCC4B, 0x8608, 0xCC4C, 0x8609, 0xCC4D, 0x860A, 0xCC4E, + 0x860B, 0xCC4F, 0x860C, 0xCC50, 0x860D, 0xCC51, 0x860E, 0xCC52, 0x860F, 0xCC53, 0x8610, 0xCC54, 0x8611, 0xC4A2, 0x8612, 0xCC55, + 0x8613, 0xCC56, 0x8614, 0xCC57, 0x8615, 0xCC58, 0x8616, 0xDEC1, 0x8617, 0xCC59, 0x8618, 0xCC5A, 0x8619, 0xCC5B, 0x861A, 0xCC5C, + 0x861B, 0xCC5D, 0x861C, 0xCC5E, 0x861D, 0xCC5F, 0x861E, 0xCC60, 0x861F, 0xCC61, 0x8620, 0xCC62, 0x8621, 0xCC63, 0x8622, 0xCC64, + 0x8623, 0xCC65, 0x8624, 0xCC66, 0x8625, 0xCC67, 0x8626, 0xCC68, 0x8627, 0xDEBE, 0x8628, 0xCC69, 0x8629, 0xDEC0, 0x862A, 0xCC6A, + 0x862B, 0xCC6B, 0x862C, 0xCC6C, 0x862D, 0xCC6D, 0x862E, 0xCC6E, 0x862F, 0xCC6F, 0x8630, 0xCC70, 0x8631, 0xCC71, 0x8632, 0xCC72, + 0x8633, 0xCC73, 0x8634, 0xCC74, 0x8635, 0xCC75, 0x8636, 0xCC76, 0x8637, 0xCC77, 0x8638, 0xD5BA, 0x8639, 0xCC78, 0x863A, 0xCC79, + 0x863B, 0xCC7A, 0x863C, 0xDEC2, 0x863D, 0xCC7B, 0x863E, 0xCC7C, 0x863F, 0xCC7D, 0x8640, 0xCC7E, 0x8641, 0xCC80, 0x8642, 0xCC81, + 0x8643, 0xCC82, 0x8644, 0xCC83, 0x8645, 0xCC84, 0x8646, 0xCC85, 0x8647, 0xCC86, 0x8648, 0xCC87, 0x8649, 0xCC88, 0x864A, 0xCC89, + 0x864B, 0xCC8A, 0x864C, 0xCC8B, 0x864D, 0xF2AE, 0x864E, 0xBBA2, 0x864F, 0xC2B2, 0x8650, 0xC5B0, 0x8651, 0xC2C7, 0x8652, 0xCC8C, + 0x8653, 0xCC8D, 0x8654, 0xF2AF, 0x8655, 0xCC8E, 0x8656, 0xCC8F, 0x8657, 0xCC90, 0x8658, 0xCC91, 0x8659, 0xCC92, 0x865A, 0xD0E9, + 0x865B, 0xCC93, 0x865C, 0xCC94, 0x865D, 0xCC95, 0x865E, 0xD3DD, 0x865F, 0xCC96, 0x8660, 0xCC97, 0x8661, 0xCC98, 0x8662, 0xEBBD, + 0x8663, 0xCC99, 0x8664, 0xCC9A, 0x8665, 0xCC9B, 0x8666, 0xCC9C, 0x8667, 0xCC9D, 0x8668, 0xCC9E, 0x8669, 0xCC9F, 0x866A, 0xCCA0, + 0x866B, 0xB3E6, 0x866C, 0xF2B0, 0x866D, 0xCD40, 0x866E, 0xF2B1, 0x866F, 0xCD41, 0x8670, 0xCD42, 0x8671, 0xCAAD, 0x8672, 0xCD43, + 0x8673, 0xCD44, 0x8674, 0xCD45, 0x8675, 0xCD46, 0x8676, 0xCD47, 0x8677, 0xCD48, 0x8678, 0xCD49, 0x8679, 0xBAE7, 0x867A, 0xF2B3, + 0x867B, 0xF2B5, 0x867C, 0xF2B4, 0x867D, 0xCBE4, 0x867E, 0xCFBA, 0x867F, 0xF2B2, 0x8680, 0xCAB4, 0x8681, 0xD2CF, 0x8682, 0xC2EC, + 0x8683, 0xCD4A, 0x8684, 0xCD4B, 0x8685, 0xCD4C, 0x8686, 0xCD4D, 0x8687, 0xCD4E, 0x8688, 0xCD4F, 0x8689, 0xCD50, 0x868A, 0xCEC3, + 0x868B, 0xF2B8, 0x868C, 0xB0F6, 0x868D, 0xF2B7, 0x868E, 0xCD51, 0x868F, 0xCD52, 0x8690, 0xCD53, 0x8691, 0xCD54, 0x8692, 0xCD55, + 0x8693, 0xF2BE, 0x8694, 0xCD56, 0x8695, 0xB2CF, 0x8696, 0xCD57, 0x8697, 0xCD58, 0x8698, 0xCD59, 0x8699, 0xCD5A, 0x869A, 0xCD5B, + 0x869B, 0xCD5C, 0x869C, 0xD1C1, 0x869D, 0xF2BA, 0x869E, 0xCD5D, 0x869F, 0xCD5E, 0x86A0, 0xCD5F, 0x86A1, 0xCD60, 0x86A2, 0xCD61, + 0x86A3, 0xF2BC, 0x86A4, 0xD4E9, 0x86A5, 0xCD62, 0x86A6, 0xCD63, 0x86A7, 0xF2BB, 0x86A8, 0xF2B6, 0x86A9, 0xF2BF, 0x86AA, 0xF2BD, + 0x86AB, 0xCD64, 0x86AC, 0xF2B9, 0x86AD, 0xCD65, 0x86AE, 0xCD66, 0x86AF, 0xF2C7, 0x86B0, 0xF2C4, 0x86B1, 0xF2C6, 0x86B2, 0xCD67, + 0x86B3, 0xCD68, 0x86B4, 0xF2CA, 0x86B5, 0xF2C2, 0x86B6, 0xF2C0, 0x86B7, 0xCD69, 0x86B8, 0xCD6A, 0x86B9, 0xCD6B, 0x86BA, 0xF2C5, + 0x86BB, 0xCD6C, 0x86BC, 0xCD6D, 0x86BD, 0xCD6E, 0x86BE, 0xCD6F, 0x86BF, 0xCD70, 0x86C0, 0xD6FB, 0x86C1, 0xCD71, 0x86C2, 0xCD72, + 0x86C3, 0xCD73, 0x86C4, 0xF2C1, 0x86C5, 0xCD74, 0x86C6, 0xC7F9, 0x86C7, 0xC9DF, 0x86C8, 0xCD75, 0x86C9, 0xF2C8, 0x86CA, 0xB9C6, + 0x86CB, 0xB5B0, 0x86CC, 0xCD76, 0x86CD, 0xCD77, 0x86CE, 0xF2C3, 0x86CF, 0xF2C9, 0x86D0, 0xF2D0, 0x86D1, 0xF2D6, 0x86D2, 0xCD78, + 0x86D3, 0xCD79, 0x86D4, 0xBBD7, 0x86D5, 0xCD7A, 0x86D6, 0xCD7B, 0x86D7, 0xCD7C, 0x86D8, 0xF2D5, 0x86D9, 0xCDDC, 0x86DA, 0xCD7D, + 0x86DB, 0xD6EB, 0x86DC, 0xCD7E, 0x86DD, 0xCD80, 0x86DE, 0xF2D2, 0x86DF, 0xF2D4, 0x86E0, 0xCD81, 0x86E1, 0xCD82, 0x86E2, 0xCD83, + 0x86E3, 0xCD84, 0x86E4, 0xB8F2, 0x86E5, 0xCD85, 0x86E6, 0xCD86, 0x86E7, 0xCD87, 0x86E8, 0xCD88, 0x86E9, 0xF2CB, 0x86EA, 0xCD89, + 0x86EB, 0xCD8A, 0x86EC, 0xCD8B, 0x86ED, 0xF2CE, 0x86EE, 0xC2F9, 0x86EF, 0xCD8C, 0x86F0, 0xD5DD, 0x86F1, 0xF2CC, 0x86F2, 0xF2CD, + 0x86F3, 0xF2CF, 0x86F4, 0xF2D3, 0x86F5, 0xCD8D, 0x86F6, 0xCD8E, 0x86F7, 0xCD8F, 0x86F8, 0xF2D9, 0x86F9, 0xD3BC, 0x86FA, 0xCD90, + 0x86FB, 0xCD91, 0x86FC, 0xCD92, 0x86FD, 0xCD93, 0x86FE, 0xB6EA, 0x86FF, 0xCD94, 0x8700, 0xCAF1, 0x8701, 0xCD95, 0x8702, 0xB7E4, + 0x8703, 0xF2D7, 0x8704, 0xCD96, 0x8705, 0xCD97, 0x8706, 0xCD98, 0x8707, 0xF2D8, 0x8708, 0xF2DA, 0x8709, 0xF2DD, 0x870A, 0xF2DB, + 0x870B, 0xCD99, 0x870C, 0xCD9A, 0x870D, 0xF2DC, 0x870E, 0xCD9B, 0x870F, 0xCD9C, 0x8710, 0xCD9D, 0x8711, 0xCD9E, 0x8712, 0xD1D1, + 0x8713, 0xF2D1, 0x8714, 0xCD9F, 0x8715, 0xCDC9, 0x8716, 0xCDA0, 0x8717, 0xCECF, 0x8718, 0xD6A9, 0x8719, 0xCE40, 0x871A, 0xF2E3, + 0x871B, 0xCE41, 0x871C, 0xC3DB, 0x871D, 0xCE42, 0x871E, 0xF2E0, 0x871F, 0xCE43, 0x8720, 0xCE44, 0x8721, 0xC0AF, 0x8722, 0xF2EC, + 0x8723, 0xF2DE, 0x8724, 0xCE45, 0x8725, 0xF2E1, 0x8726, 0xCE46, 0x8727, 0xCE47, 0x8728, 0xCE48, 0x8729, 0xF2E8, 0x872A, 0xCE49, + 0x872B, 0xCE4A, 0x872C, 0xCE4B, 0x872D, 0xCE4C, 0x872E, 0xF2E2, 0x872F, 0xCE4D, 0x8730, 0xCE4E, 0x8731, 0xF2E7, 0x8732, 0xCE4F, + 0x8733, 0xCE50, 0x8734, 0xF2E6, 0x8735, 0xCE51, 0x8736, 0xCE52, 0x8737, 0xF2E9, 0x8738, 0xCE53, 0x8739, 0xCE54, 0x873A, 0xCE55, + 0x873B, 0xF2DF, 0x873C, 0xCE56, 0x873D, 0xCE57, 0x873E, 0xF2E4, 0x873F, 0xF2EA, 0x8740, 0xCE58, 0x8741, 0xCE59, 0x8742, 0xCE5A, + 0x8743, 0xCE5B, 0x8744, 0xCE5C, 0x8745, 0xCE5D, 0x8746, 0xCE5E, 0x8747, 0xD3AC, 0x8748, 0xF2E5, 0x8749, 0xB2F5, 0x874A, 0xCE5F, + 0x874B, 0xCE60, 0x874C, 0xF2F2, 0x874D, 0xCE61, 0x874E, 0xD0AB, 0x874F, 0xCE62, 0x8750, 0xCE63, 0x8751, 0xCE64, 0x8752, 0xCE65, + 0x8753, 0xF2F5, 0x8754, 0xCE66, 0x8755, 0xCE67, 0x8756, 0xCE68, 0x8757, 0xBBC8, 0x8758, 0xCE69, 0x8759, 0xF2F9, 0x875A, 0xCE6A, + 0x875B, 0xCE6B, 0x875C, 0xCE6C, 0x875D, 0xCE6D, 0x875E, 0xCE6E, 0x875F, 0xCE6F, 0x8760, 0xF2F0, 0x8761, 0xCE70, 0x8762, 0xCE71, + 0x8763, 0xF2F6, 0x8764, 0xF2F8, 0x8765, 0xF2FA, 0x8766, 0xCE72, 0x8767, 0xCE73, 0x8768, 0xCE74, 0x8769, 0xCE75, 0x876A, 0xCE76, + 0x876B, 0xCE77, 0x876C, 0xCE78, 0x876D, 0xCE79, 0x876E, 0xF2F3, 0x876F, 0xCE7A, 0x8770, 0xF2F1, 0x8771, 0xCE7B, 0x8772, 0xCE7C, + 0x8773, 0xCE7D, 0x8774, 0xBAFB, 0x8775, 0xCE7E, 0x8776, 0xB5FB, 0x8777, 0xCE80, 0x8778, 0xCE81, 0x8779, 0xCE82, 0x877A, 0xCE83, + 0x877B, 0xF2EF, 0x877C, 0xF2F7, 0x877D, 0xF2ED, 0x877E, 0xF2EE, 0x877F, 0xCE84, 0x8780, 0xCE85, 0x8781, 0xCE86, 0x8782, 0xF2EB, + 0x8783, 0xF3A6, 0x8784, 0xCE87, 0x8785, 0xF3A3, 0x8786, 0xCE88, 0x8787, 0xCE89, 0x8788, 0xF3A2, 0x8789, 0xCE8A, 0x878A, 0xCE8B, + 0x878B, 0xF2F4, 0x878C, 0xCE8C, 0x878D, 0xC8DA, 0x878E, 0xCE8D, 0x878F, 0xCE8E, 0x8790, 0xCE8F, 0x8791, 0xCE90, 0x8792, 0xCE91, + 0x8793, 0xF2FB, 0x8794, 0xCE92, 0x8795, 0xCE93, 0x8796, 0xCE94, 0x8797, 0xF3A5, 0x8798, 0xCE95, 0x8799, 0xCE96, 0x879A, 0xCE97, + 0x879B, 0xCE98, 0x879C, 0xCE99, 0x879D, 0xCE9A, 0x879E, 0xCE9B, 0x879F, 0xC3F8, 0x87A0, 0xCE9C, 0x87A1, 0xCE9D, 0x87A2, 0xCE9E, + 0x87A3, 0xCE9F, 0x87A4, 0xCEA0, 0x87A5, 0xCF40, 0x87A6, 0xCF41, 0x87A7, 0xCF42, 0x87A8, 0xF2FD, 0x87A9, 0xCF43, 0x87AA, 0xCF44, + 0x87AB, 0xF3A7, 0x87AC, 0xF3A9, 0x87AD, 0xF3A4, 0x87AE, 0xCF45, 0x87AF, 0xF2FC, 0x87B0, 0xCF46, 0x87B1, 0xCF47, 0x87B2, 0xCF48, + 0x87B3, 0xF3AB, 0x87B4, 0xCF49, 0x87B5, 0xF3AA, 0x87B6, 0xCF4A, 0x87B7, 0xCF4B, 0x87B8, 0xCF4C, 0x87B9, 0xCF4D, 0x87BA, 0xC2DD, + 0x87BB, 0xCF4E, 0x87BC, 0xCF4F, 0x87BD, 0xF3AE, 0x87BE, 0xCF50, 0x87BF, 0xCF51, 0x87C0, 0xF3B0, 0x87C1, 0xCF52, 0x87C2, 0xCF53, + 0x87C3, 0xCF54, 0x87C4, 0xCF55, 0x87C5, 0xCF56, 0x87C6, 0xF3A1, 0x87C7, 0xCF57, 0x87C8, 0xCF58, 0x87C9, 0xCF59, 0x87CA, 0xF3B1, + 0x87CB, 0xF3AC, 0x87CC, 0xCF5A, 0x87CD, 0xCF5B, 0x87CE, 0xCF5C, 0x87CF, 0xCF5D, 0x87D0, 0xCF5E, 0x87D1, 0xF3AF, 0x87D2, 0xF2FE, + 0x87D3, 0xF3AD, 0x87D4, 0xCF5F, 0x87D5, 0xCF60, 0x87D6, 0xCF61, 0x87D7, 0xCF62, 0x87D8, 0xCF63, 0x87D9, 0xCF64, 0x87DA, 0xCF65, + 0x87DB, 0xF3B2, 0x87DC, 0xCF66, 0x87DD, 0xCF67, 0x87DE, 0xCF68, 0x87DF, 0xCF69, 0x87E0, 0xF3B4, 0x87E1, 0xCF6A, 0x87E2, 0xCF6B, + 0x87E3, 0xCF6C, 0x87E4, 0xCF6D, 0x87E5, 0xF3A8, 0x87E6, 0xCF6E, 0x87E7, 0xCF6F, 0x87E8, 0xCF70, 0x87E9, 0xCF71, 0x87EA, 0xF3B3, + 0x87EB, 0xCF72, 0x87EC, 0xCF73, 0x87ED, 0xCF74, 0x87EE, 0xF3B5, 0x87EF, 0xCF75, 0x87F0, 0xCF76, 0x87F1, 0xCF77, 0x87F2, 0xCF78, + 0x87F3, 0xCF79, 0x87F4, 0xCF7A, 0x87F5, 0xCF7B, 0x87F6, 0xCF7C, 0x87F7, 0xCF7D, 0x87F8, 0xCF7E, 0x87F9, 0xD0B7, 0x87FA, 0xCF80, + 0x87FB, 0xCF81, 0x87FC, 0xCF82, 0x87FD, 0xCF83, 0x87FE, 0xF3B8, 0x87FF, 0xCF84, 0x8800, 0xCF85, 0x8801, 0xCF86, 0x8802, 0xCF87, + 0x8803, 0xD9F9, 0x8804, 0xCF88, 0x8805, 0xCF89, 0x8806, 0xCF8A, 0x8807, 0xCF8B, 0x8808, 0xCF8C, 0x8809, 0xCF8D, 0x880A, 0xF3B9, + 0x880B, 0xCF8E, 0x880C, 0xCF8F, 0x880D, 0xCF90, 0x880E, 0xCF91, 0x880F, 0xCF92, 0x8810, 0xCF93, 0x8811, 0xCF94, 0x8812, 0xCF95, + 0x8813, 0xF3B7, 0x8814, 0xCF96, 0x8815, 0xC8E4, 0x8816, 0xF3B6, 0x8817, 0xCF97, 0x8818, 0xCF98, 0x8819, 0xCF99, 0x881A, 0xCF9A, + 0x881B, 0xF3BA, 0x881C, 0xCF9B, 0x881D, 0xCF9C, 0x881E, 0xCF9D, 0x881F, 0xCF9E, 0x8820, 0xCF9F, 0x8821, 0xF3BB, 0x8822, 0xB4C0, + 0x8823, 0xCFA0, 0x8824, 0xD040, 0x8825, 0xD041, 0x8826, 0xD042, 0x8827, 0xD043, 0x8828, 0xD044, 0x8829, 0xD045, 0x882A, 0xD046, + 0x882B, 0xD047, 0x882C, 0xD048, 0x882D, 0xD049, 0x882E, 0xD04A, 0x882F, 0xD04B, 0x8830, 0xD04C, 0x8831, 0xD04D, 0x8832, 0xEEC3, + 0x8833, 0xD04E, 0x8834, 0xD04F, 0x8835, 0xD050, 0x8836, 0xD051, 0x8837, 0xD052, 0x8838, 0xD053, 0x8839, 0xF3BC, 0x883A, 0xD054, + 0x883B, 0xD055, 0x883C, 0xF3BD, 0x883D, 0xD056, 0x883E, 0xD057, 0x883F, 0xD058, 0x8840, 0xD1AA, 0x8841, 0xD059, 0x8842, 0xD05A, + 0x8843, 0xD05B, 0x8844, 0xF4AC, 0x8845, 0xD0C6, 0x8846, 0xD05C, 0x8847, 0xD05D, 0x8848, 0xD05E, 0x8849, 0xD05F, 0x884A, 0xD060, + 0x884B, 0xD061, 0x884C, 0xD0D0, 0x884D, 0xD1DC, 0x884E, 0xD062, 0x884F, 0xD063, 0x8850, 0xD064, 0x8851, 0xD065, 0x8852, 0xD066, + 0x8853, 0xD067, 0x8854, 0xCFCE, 0x8855, 0xD068, 0x8856, 0xD069, 0x8857, 0xBDD6, 0x8858, 0xD06A, 0x8859, 0xD1C3, 0x885A, 0xD06B, + 0x885B, 0xD06C, 0x885C, 0xD06D, 0x885D, 0xD06E, 0x885E, 0xD06F, 0x885F, 0xD070, 0x8860, 0xD071, 0x8861, 0xBAE2, 0x8862, 0xE1E9, + 0x8863, 0xD2C2, 0x8864, 0xF1C2, 0x8865, 0xB2B9, 0x8866, 0xD072, 0x8867, 0xD073, 0x8868, 0xB1ED, 0x8869, 0xF1C3, 0x886A, 0xD074, + 0x886B, 0xC9C0, 0x886C, 0xB3C4, 0x886D, 0xD075, 0x886E, 0xD9F2, 0x886F, 0xD076, 0x8870, 0xCBA5, 0x8871, 0xD077, 0x8872, 0xF1C4, + 0x8873, 0xD078, 0x8874, 0xD079, 0x8875, 0xD07A, 0x8876, 0xD07B, 0x8877, 0xD6D4, 0x8878, 0xD07C, 0x8879, 0xD07D, 0x887A, 0xD07E, + 0x887B, 0xD080, 0x887C, 0xD081, 0x887D, 0xF1C5, 0x887E, 0xF4C0, 0x887F, 0xF1C6, 0x8880, 0xD082, 0x8881, 0xD4AC, 0x8882, 0xF1C7, + 0x8883, 0xD083, 0x8884, 0xB0C0, 0x8885, 0xF4C1, 0x8886, 0xD084, 0x8887, 0xD085, 0x8888, 0xF4C2, 0x8889, 0xD086, 0x888A, 0xD087, + 0x888B, 0xB4FC, 0x888C, 0xD088, 0x888D, 0xC5DB, 0x888E, 0xD089, 0x888F, 0xD08A, 0x8890, 0xD08B, 0x8891, 0xD08C, 0x8892, 0xCCBB, + 0x8893, 0xD08D, 0x8894, 0xD08E, 0x8895, 0xD08F, 0x8896, 0xD0E4, 0x8897, 0xD090, 0x8898, 0xD091, 0x8899, 0xD092, 0x889A, 0xD093, + 0x889B, 0xD094, 0x889C, 0xCDE0, 0x889D, 0xD095, 0x889E, 0xD096, 0x889F, 0xD097, 0x88A0, 0xD098, 0x88A1, 0xD099, 0x88A2, 0xF1C8, + 0x88A3, 0xD09A, 0x88A4, 0xD9F3, 0x88A5, 0xD09B, 0x88A6, 0xD09C, 0x88A7, 0xD09D, 0x88A8, 0xD09E, 0x88A9, 0xD09F, 0x88AA, 0xD0A0, + 0x88AB, 0xB1BB, 0x88AC, 0xD140, 0x88AD, 0xCFAE, 0x88AE, 0xD141, 0x88AF, 0xD142, 0x88B0, 0xD143, 0x88B1, 0xB8A4, 0x88B2, 0xD144, + 0x88B3, 0xD145, 0x88B4, 0xD146, 0x88B5, 0xD147, 0x88B6, 0xD148, 0x88B7, 0xF1CA, 0x88B8, 0xD149, 0x88B9, 0xD14A, 0x88BA, 0xD14B, + 0x88BB, 0xD14C, 0x88BC, 0xF1CB, 0x88BD, 0xD14D, 0x88BE, 0xD14E, 0x88BF, 0xD14F, 0x88C0, 0xD150, 0x88C1, 0xB2C3, 0x88C2, 0xC1D1, + 0x88C3, 0xD151, 0x88C4, 0xD152, 0x88C5, 0xD7B0, 0x88C6, 0xF1C9, 0x88C7, 0xD153, 0x88C8, 0xD154, 0x88C9, 0xF1CC, 0x88CA, 0xD155, + 0x88CB, 0xD156, 0x88CC, 0xD157, 0x88CD, 0xD158, 0x88CE, 0xF1CE, 0x88CF, 0xD159, 0x88D0, 0xD15A, 0x88D1, 0xD15B, 0x88D2, 0xD9F6, + 0x88D3, 0xD15C, 0x88D4, 0xD2E1, 0x88D5, 0xD4A3, 0x88D6, 0xD15D, 0x88D7, 0xD15E, 0x88D8, 0xF4C3, 0x88D9, 0xC8B9, 0x88DA, 0xD15F, + 0x88DB, 0xD160, 0x88DC, 0xD161, 0x88DD, 0xD162, 0x88DE, 0xD163, 0x88DF, 0xF4C4, 0x88E0, 0xD164, 0x88E1, 0xD165, 0x88E2, 0xF1CD, + 0x88E3, 0xF1CF, 0x88E4, 0xBFE3, 0x88E5, 0xF1D0, 0x88E6, 0xD166, 0x88E7, 0xD167, 0x88E8, 0xF1D4, 0x88E9, 0xD168, 0x88EA, 0xD169, + 0x88EB, 0xD16A, 0x88EC, 0xD16B, 0x88ED, 0xD16C, 0x88EE, 0xD16D, 0x88EF, 0xD16E, 0x88F0, 0xF1D6, 0x88F1, 0xF1D1, 0x88F2, 0xD16F, + 0x88F3, 0xC9D1, 0x88F4, 0xC5E1, 0x88F5, 0xD170, 0x88F6, 0xD171, 0x88F7, 0xD172, 0x88F8, 0xC2E3, 0x88F9, 0xB9FC, 0x88FA, 0xD173, + 0x88FB, 0xD174, 0x88FC, 0xF1D3, 0x88FD, 0xD175, 0x88FE, 0xF1D5, 0x88FF, 0xD176, 0x8900, 0xD177, 0x8901, 0xD178, 0x8902, 0xB9D3, + 0x8903, 0xD179, 0x8904, 0xD17A, 0x8905, 0xD17B, 0x8906, 0xD17C, 0x8907, 0xD17D, 0x8908, 0xD17E, 0x8909, 0xD180, 0x890A, 0xF1DB, + 0x890B, 0xD181, 0x890C, 0xD182, 0x890D, 0xD183, 0x890E, 0xD184, 0x890F, 0xD185, 0x8910, 0xBAD6, 0x8911, 0xD186, 0x8912, 0xB0FD, + 0x8913, 0xF1D9, 0x8914, 0xD187, 0x8915, 0xD188, 0x8916, 0xD189, 0x8917, 0xD18A, 0x8918, 0xD18B, 0x8919, 0xF1D8, 0x891A, 0xF1D2, + 0x891B, 0xF1DA, 0x891C, 0xD18C, 0x891D, 0xD18D, 0x891E, 0xD18E, 0x891F, 0xD18F, 0x8920, 0xD190, 0x8921, 0xF1D7, 0x8922, 0xD191, + 0x8923, 0xD192, 0x8924, 0xD193, 0x8925, 0xC8EC, 0x8926, 0xD194, 0x8927, 0xD195, 0x8928, 0xD196, 0x8929, 0xD197, 0x892A, 0xCDCA, + 0x892B, 0xF1DD, 0x892C, 0xD198, 0x892D, 0xD199, 0x892E, 0xD19A, 0x892F, 0xD19B, 0x8930, 0xE5BD, 0x8931, 0xD19C, 0x8932, 0xD19D, + 0x8933, 0xD19E, 0x8934, 0xF1DC, 0x8935, 0xD19F, 0x8936, 0xF1DE, 0x8937, 0xD1A0, 0x8938, 0xD240, 0x8939, 0xD241, 0x893A, 0xD242, + 0x893B, 0xD243, 0x893C, 0xD244, 0x893D, 0xD245, 0x893E, 0xD246, 0x893F, 0xD247, 0x8940, 0xD248, 0x8941, 0xF1DF, 0x8942, 0xD249, + 0x8943, 0xD24A, 0x8944, 0xCFE5, 0x8945, 0xD24B, 0x8946, 0xD24C, 0x8947, 0xD24D, 0x8948, 0xD24E, 0x8949, 0xD24F, 0x894A, 0xD250, + 0x894B, 0xD251, 0x894C, 0xD252, 0x894D, 0xD253, 0x894E, 0xD254, 0x894F, 0xD255, 0x8950, 0xD256, 0x8951, 0xD257, 0x8952, 0xD258, + 0x8953, 0xD259, 0x8954, 0xD25A, 0x8955, 0xD25B, 0x8956, 0xD25C, 0x8957, 0xD25D, 0x8958, 0xD25E, 0x8959, 0xD25F, 0x895A, 0xD260, + 0x895B, 0xD261, 0x895C, 0xD262, 0x895D, 0xD263, 0x895E, 0xF4C5, 0x895F, 0xBDF3, 0x8960, 0xD264, 0x8961, 0xD265, 0x8962, 0xD266, + 0x8963, 0xD267, 0x8964, 0xD268, 0x8965, 0xD269, 0x8966, 0xF1E0, 0x8967, 0xD26A, 0x8968, 0xD26B, 0x8969, 0xD26C, 0x896A, 0xD26D, + 0x896B, 0xD26E, 0x896C, 0xD26F, 0x896D, 0xD270, 0x896E, 0xD271, 0x896F, 0xD272, 0x8970, 0xD273, 0x8971, 0xD274, 0x8972, 0xD275, + 0x8973, 0xD276, 0x8974, 0xD277, 0x8975, 0xD278, 0x8976, 0xD279, 0x8977, 0xD27A, 0x8978, 0xD27B, 0x8979, 0xD27C, 0x897A, 0xD27D, + 0x897B, 0xF1E1, 0x897C, 0xD27E, 0x897D, 0xD280, 0x897E, 0xD281, 0x897F, 0xCEF7, 0x8980, 0xD282, 0x8981, 0xD2AA, 0x8982, 0xD283, + 0x8983, 0xF1FB, 0x8984, 0xD284, 0x8985, 0xD285, 0x8986, 0xB8B2, 0x8987, 0xD286, 0x8988, 0xD287, 0x8989, 0xD288, 0x898A, 0xD289, + 0x898B, 0xD28A, 0x898C, 0xD28B, 0x898D, 0xD28C, 0x898E, 0xD28D, 0x898F, 0xD28E, 0x8990, 0xD28F, 0x8991, 0xD290, 0x8992, 0xD291, + 0x8993, 0xD292, 0x8994, 0xD293, 0x8995, 0xD294, 0x8996, 0xD295, 0x8997, 0xD296, 0x8998, 0xD297, 0x8999, 0xD298, 0x899A, 0xD299, + 0x899B, 0xD29A, 0x899C, 0xD29B, 0x899D, 0xD29C, 0x899E, 0xD29D, 0x899F, 0xD29E, 0x89A0, 0xD29F, 0x89A1, 0xD2A0, 0x89A2, 0xD340, + 0x89A3, 0xD341, 0x89A4, 0xD342, 0x89A5, 0xD343, 0x89A6, 0xD344, 0x89A7, 0xD345, 0x89A8, 0xD346, 0x89A9, 0xD347, 0x89AA, 0xD348, + 0x89AB, 0xD349, 0x89AC, 0xD34A, 0x89AD, 0xD34B, 0x89AE, 0xD34C, 0x89AF, 0xD34D, 0x89B0, 0xD34E, 0x89B1, 0xD34F, 0x89B2, 0xD350, + 0x89B3, 0xD351, 0x89B4, 0xD352, 0x89B5, 0xD353, 0x89B6, 0xD354, 0x89B7, 0xD355, 0x89B8, 0xD356, 0x89B9, 0xD357, 0x89BA, 0xD358, + 0x89BB, 0xD359, 0x89BC, 0xD35A, 0x89BD, 0xD35B, 0x89BE, 0xD35C, 0x89BF, 0xD35D, 0x89C0, 0xD35E, 0x89C1, 0xBCFB, 0x89C2, 0xB9DB, + 0x89C3, 0xD35F, 0x89C4, 0xB9E6, 0x89C5, 0xC3D9, 0x89C6, 0xCAD3, 0x89C7, 0xEAE8, 0x89C8, 0xC0C0, 0x89C9, 0xBEF5, 0x89CA, 0xEAE9, + 0x89CB, 0xEAEA, 0x89CC, 0xEAEB, 0x89CD, 0xD360, 0x89CE, 0xEAEC, 0x89CF, 0xEAED, 0x89D0, 0xEAEE, 0x89D1, 0xEAEF, 0x89D2, 0xBDC7, + 0x89D3, 0xD361, 0x89D4, 0xD362, 0x89D5, 0xD363, 0x89D6, 0xF5FB, 0x89D7, 0xD364, 0x89D8, 0xD365, 0x89D9, 0xD366, 0x89DA, 0xF5FD, + 0x89DB, 0xD367, 0x89DC, 0xF5FE, 0x89DD, 0xD368, 0x89DE, 0xF5FC, 0x89DF, 0xD369, 0x89E0, 0xD36A, 0x89E1, 0xD36B, 0x89E2, 0xD36C, + 0x89E3, 0xBDE2, 0x89E4, 0xD36D, 0x89E5, 0xF6A1, 0x89E6, 0xB4A5, 0x89E7, 0xD36E, 0x89E8, 0xD36F, 0x89E9, 0xD370, 0x89EA, 0xD371, + 0x89EB, 0xF6A2, 0x89EC, 0xD372, 0x89ED, 0xD373, 0x89EE, 0xD374, 0x89EF, 0xF6A3, 0x89F0, 0xD375, 0x89F1, 0xD376, 0x89F2, 0xD377, + 0x89F3, 0xECB2, 0x89F4, 0xD378, 0x89F5, 0xD379, 0x89F6, 0xD37A, 0x89F7, 0xD37B, 0x89F8, 0xD37C, 0x89F9, 0xD37D, 0x89FA, 0xD37E, + 0x89FB, 0xD380, 0x89FC, 0xD381, 0x89FD, 0xD382, 0x89FE, 0xD383, 0x89FF, 0xD384, 0x8A00, 0xD1D4, 0x8A01, 0xD385, 0x8A02, 0xD386, + 0x8A03, 0xD387, 0x8A04, 0xD388, 0x8A05, 0xD389, 0x8A06, 0xD38A, 0x8A07, 0xD9EA, 0x8A08, 0xD38B, 0x8A09, 0xD38C, 0x8A0A, 0xD38D, + 0x8A0B, 0xD38E, 0x8A0C, 0xD38F, 0x8A0D, 0xD390, 0x8A0E, 0xD391, 0x8A0F, 0xD392, 0x8A10, 0xD393, 0x8A11, 0xD394, 0x8A12, 0xD395, + 0x8A13, 0xD396, 0x8A14, 0xD397, 0x8A15, 0xD398, 0x8A16, 0xD399, 0x8A17, 0xD39A, 0x8A18, 0xD39B, 0x8A19, 0xD39C, 0x8A1A, 0xD39D, + 0x8A1B, 0xD39E, 0x8A1C, 0xD39F, 0x8A1D, 0xD3A0, 0x8A1E, 0xD440, 0x8A1F, 0xD441, 0x8A20, 0xD442, 0x8A21, 0xD443, 0x8A22, 0xD444, + 0x8A23, 0xD445, 0x8A24, 0xD446, 0x8A25, 0xD447, 0x8A26, 0xD448, 0x8A27, 0xD449, 0x8A28, 0xD44A, 0x8A29, 0xD44B, 0x8A2A, 0xD44C, + 0x8A2B, 0xD44D, 0x8A2C, 0xD44E, 0x8A2D, 0xD44F, 0x8A2E, 0xD450, 0x8A2F, 0xD451, 0x8A30, 0xD452, 0x8A31, 0xD453, 0x8A32, 0xD454, + 0x8A33, 0xD455, 0x8A34, 0xD456, 0x8A35, 0xD457, 0x8A36, 0xD458, 0x8A37, 0xD459, 0x8A38, 0xD45A, 0x8A39, 0xD45B, 0x8A3A, 0xD45C, + 0x8A3B, 0xD45D, 0x8A3C, 0xD45E, 0x8A3D, 0xD45F, 0x8A3E, 0xF6A4, 0x8A3F, 0xD460, 0x8A40, 0xD461, 0x8A41, 0xD462, 0x8A42, 0xD463, + 0x8A43, 0xD464, 0x8A44, 0xD465, 0x8A45, 0xD466, 0x8A46, 0xD467, 0x8A47, 0xD468, 0x8A48, 0xEEBA, 0x8A49, 0xD469, 0x8A4A, 0xD46A, + 0x8A4B, 0xD46B, 0x8A4C, 0xD46C, 0x8A4D, 0xD46D, 0x8A4E, 0xD46E, 0x8A4F, 0xD46F, 0x8A50, 0xD470, 0x8A51, 0xD471, 0x8A52, 0xD472, + 0x8A53, 0xD473, 0x8A54, 0xD474, 0x8A55, 0xD475, 0x8A56, 0xD476, 0x8A57, 0xD477, 0x8A58, 0xD478, 0x8A59, 0xD479, 0x8A5A, 0xD47A, + 0x8A5B, 0xD47B, 0x8A5C, 0xD47C, 0x8A5D, 0xD47D, 0x8A5E, 0xD47E, 0x8A5F, 0xD480, 0x8A60, 0xD481, 0x8A61, 0xD482, 0x8A62, 0xD483, + 0x8A63, 0xD484, 0x8A64, 0xD485, 0x8A65, 0xD486, 0x8A66, 0xD487, 0x8A67, 0xD488, 0x8A68, 0xD489, 0x8A69, 0xD48A, 0x8A6A, 0xD48B, + 0x8A6B, 0xD48C, 0x8A6C, 0xD48D, 0x8A6D, 0xD48E, 0x8A6E, 0xD48F, 0x8A6F, 0xD490, 0x8A70, 0xD491, 0x8A71, 0xD492, 0x8A72, 0xD493, + 0x8A73, 0xD494, 0x8A74, 0xD495, 0x8A75, 0xD496, 0x8A76, 0xD497, 0x8A77, 0xD498, 0x8A78, 0xD499, 0x8A79, 0xD5B2, 0x8A7A, 0xD49A, + 0x8A7B, 0xD49B, 0x8A7C, 0xD49C, 0x8A7D, 0xD49D, 0x8A7E, 0xD49E, 0x8A7F, 0xD49F, 0x8A80, 0xD4A0, 0x8A81, 0xD540, 0x8A82, 0xD541, + 0x8A83, 0xD542, 0x8A84, 0xD543, 0x8A85, 0xD544, 0x8A86, 0xD545, 0x8A87, 0xD546, 0x8A88, 0xD547, 0x8A89, 0xD3FE, 0x8A8A, 0xCCDC, + 0x8A8B, 0xD548, 0x8A8C, 0xD549, 0x8A8D, 0xD54A, 0x8A8E, 0xD54B, 0x8A8F, 0xD54C, 0x8A90, 0xD54D, 0x8A91, 0xD54E, 0x8A92, 0xD54F, + 0x8A93, 0xCAC4, 0x8A94, 0xD550, 0x8A95, 0xD551, 0x8A96, 0xD552, 0x8A97, 0xD553, 0x8A98, 0xD554, 0x8A99, 0xD555, 0x8A9A, 0xD556, + 0x8A9B, 0xD557, 0x8A9C, 0xD558, 0x8A9D, 0xD559, 0x8A9E, 0xD55A, 0x8A9F, 0xD55B, 0x8AA0, 0xD55C, 0x8AA1, 0xD55D, 0x8AA2, 0xD55E, + 0x8AA3, 0xD55F, 0x8AA4, 0xD560, 0x8AA5, 0xD561, 0x8AA6, 0xD562, 0x8AA7, 0xD563, 0x8AA8, 0xD564, 0x8AA9, 0xD565, 0x8AAA, 0xD566, + 0x8AAB, 0xD567, 0x8AAC, 0xD568, 0x8AAD, 0xD569, 0x8AAE, 0xD56A, 0x8AAF, 0xD56B, 0x8AB0, 0xD56C, 0x8AB1, 0xD56D, 0x8AB2, 0xD56E, + 0x8AB3, 0xD56F, 0x8AB4, 0xD570, 0x8AB5, 0xD571, 0x8AB6, 0xD572, 0x8AB7, 0xD573, 0x8AB8, 0xD574, 0x8AB9, 0xD575, 0x8ABA, 0xD576, + 0x8ABB, 0xD577, 0x8ABC, 0xD578, 0x8ABD, 0xD579, 0x8ABE, 0xD57A, 0x8ABF, 0xD57B, 0x8AC0, 0xD57C, 0x8AC1, 0xD57D, 0x8AC2, 0xD57E, + 0x8AC3, 0xD580, 0x8AC4, 0xD581, 0x8AC5, 0xD582, 0x8AC6, 0xD583, 0x8AC7, 0xD584, 0x8AC8, 0xD585, 0x8AC9, 0xD586, 0x8ACA, 0xD587, + 0x8ACB, 0xD588, 0x8ACC, 0xD589, 0x8ACD, 0xD58A, 0x8ACE, 0xD58B, 0x8ACF, 0xD58C, 0x8AD0, 0xD58D, 0x8AD1, 0xD58E, 0x8AD2, 0xD58F, + 0x8AD3, 0xD590, 0x8AD4, 0xD591, 0x8AD5, 0xD592, 0x8AD6, 0xD593, 0x8AD7, 0xD594, 0x8AD8, 0xD595, 0x8AD9, 0xD596, 0x8ADA, 0xD597, + 0x8ADB, 0xD598, 0x8ADC, 0xD599, 0x8ADD, 0xD59A, 0x8ADE, 0xD59B, 0x8ADF, 0xD59C, 0x8AE0, 0xD59D, 0x8AE1, 0xD59E, 0x8AE2, 0xD59F, + 0x8AE3, 0xD5A0, 0x8AE4, 0xD640, 0x8AE5, 0xD641, 0x8AE6, 0xD642, 0x8AE7, 0xD643, 0x8AE8, 0xD644, 0x8AE9, 0xD645, 0x8AEA, 0xD646, + 0x8AEB, 0xD647, 0x8AEC, 0xD648, 0x8AED, 0xD649, 0x8AEE, 0xD64A, 0x8AEF, 0xD64B, 0x8AF0, 0xD64C, 0x8AF1, 0xD64D, 0x8AF2, 0xD64E, + 0x8AF3, 0xD64F, 0x8AF4, 0xD650, 0x8AF5, 0xD651, 0x8AF6, 0xD652, 0x8AF7, 0xD653, 0x8AF8, 0xD654, 0x8AF9, 0xD655, 0x8AFA, 0xD656, + 0x8AFB, 0xD657, 0x8AFC, 0xD658, 0x8AFD, 0xD659, 0x8AFE, 0xD65A, 0x8AFF, 0xD65B, 0x8B00, 0xD65C, 0x8B01, 0xD65D, 0x8B02, 0xD65E, + 0x8B03, 0xD65F, 0x8B04, 0xD660, 0x8B05, 0xD661, 0x8B06, 0xD662, 0x8B07, 0xE5C0, 0x8B08, 0xD663, 0x8B09, 0xD664, 0x8B0A, 0xD665, + 0x8B0B, 0xD666, 0x8B0C, 0xD667, 0x8B0D, 0xD668, 0x8B0E, 0xD669, 0x8B0F, 0xD66A, 0x8B10, 0xD66B, 0x8B11, 0xD66C, 0x8B12, 0xD66D, + 0x8B13, 0xD66E, 0x8B14, 0xD66F, 0x8B15, 0xD670, 0x8B16, 0xD671, 0x8B17, 0xD672, 0x8B18, 0xD673, 0x8B19, 0xD674, 0x8B1A, 0xD675, + 0x8B1B, 0xD676, 0x8B1C, 0xD677, 0x8B1D, 0xD678, 0x8B1E, 0xD679, 0x8B1F, 0xD67A, 0x8B20, 0xD67B, 0x8B21, 0xD67C, 0x8B22, 0xD67D, + 0x8B23, 0xD67E, 0x8B24, 0xD680, 0x8B25, 0xD681, 0x8B26, 0xF6A5, 0x8B27, 0xD682, 0x8B28, 0xD683, 0x8B29, 0xD684, 0x8B2A, 0xD685, + 0x8B2B, 0xD686, 0x8B2C, 0xD687, 0x8B2D, 0xD688, 0x8B2E, 0xD689, 0x8B2F, 0xD68A, 0x8B30, 0xD68B, 0x8B31, 0xD68C, 0x8B32, 0xD68D, + 0x8B33, 0xD68E, 0x8B34, 0xD68F, 0x8B35, 0xD690, 0x8B36, 0xD691, 0x8B37, 0xD692, 0x8B38, 0xD693, 0x8B39, 0xD694, 0x8B3A, 0xD695, + 0x8B3B, 0xD696, 0x8B3C, 0xD697, 0x8B3D, 0xD698, 0x8B3E, 0xD699, 0x8B3F, 0xD69A, 0x8B40, 0xD69B, 0x8B41, 0xD69C, 0x8B42, 0xD69D, + 0x8B43, 0xD69E, 0x8B44, 0xD69F, 0x8B45, 0xD6A0, 0x8B46, 0xD740, 0x8B47, 0xD741, 0x8B48, 0xD742, 0x8B49, 0xD743, 0x8B4A, 0xD744, + 0x8B4B, 0xD745, 0x8B4C, 0xD746, 0x8B4D, 0xD747, 0x8B4E, 0xD748, 0x8B4F, 0xD749, 0x8B50, 0xD74A, 0x8B51, 0xD74B, 0x8B52, 0xD74C, + 0x8B53, 0xD74D, 0x8B54, 0xD74E, 0x8B55, 0xD74F, 0x8B56, 0xD750, 0x8B57, 0xD751, 0x8B58, 0xD752, 0x8B59, 0xD753, 0x8B5A, 0xD754, + 0x8B5B, 0xD755, 0x8B5C, 0xD756, 0x8B5D, 0xD757, 0x8B5E, 0xD758, 0x8B5F, 0xD759, 0x8B60, 0xD75A, 0x8B61, 0xD75B, 0x8B62, 0xD75C, + 0x8B63, 0xD75D, 0x8B64, 0xD75E, 0x8B65, 0xD75F, 0x8B66, 0xBEAF, 0x8B67, 0xD760, 0x8B68, 0xD761, 0x8B69, 0xD762, 0x8B6A, 0xD763, + 0x8B6B, 0xD764, 0x8B6C, 0xC6A9, 0x8B6D, 0xD765, 0x8B6E, 0xD766, 0x8B6F, 0xD767, 0x8B70, 0xD768, 0x8B71, 0xD769, 0x8B72, 0xD76A, + 0x8B73, 0xD76B, 0x8B74, 0xD76C, 0x8B75, 0xD76D, 0x8B76, 0xD76E, 0x8B77, 0xD76F, 0x8B78, 0xD770, 0x8B79, 0xD771, 0x8B7A, 0xD772, + 0x8B7B, 0xD773, 0x8B7C, 0xD774, 0x8B7D, 0xD775, 0x8B7E, 0xD776, 0x8B7F, 0xD777, 0x8B80, 0xD778, 0x8B81, 0xD779, 0x8B82, 0xD77A, + 0x8B83, 0xD77B, 0x8B84, 0xD77C, 0x8B85, 0xD77D, 0x8B86, 0xD77E, 0x8B87, 0xD780, 0x8B88, 0xD781, 0x8B89, 0xD782, 0x8B8A, 0xD783, + 0x8B8B, 0xD784, 0x8B8C, 0xD785, 0x8B8D, 0xD786, 0x8B8E, 0xD787, 0x8B8F, 0xD788, 0x8B90, 0xD789, 0x8B91, 0xD78A, 0x8B92, 0xD78B, + 0x8B93, 0xD78C, 0x8B94, 0xD78D, 0x8B95, 0xD78E, 0x8B96, 0xD78F, 0x8B97, 0xD790, 0x8B98, 0xD791, 0x8B99, 0xD792, 0x8B9A, 0xD793, + 0x8B9B, 0xD794, 0x8B9C, 0xD795, 0x8B9D, 0xD796, 0x8B9E, 0xD797, 0x8B9F, 0xD798, 0x8BA0, 0xDAA5, 0x8BA1, 0xBCC6, 0x8BA2, 0xB6A9, + 0x8BA3, 0xB8BC, 0x8BA4, 0xC8CF, 0x8BA5, 0xBCA5, 0x8BA6, 0xDAA6, 0x8BA7, 0xDAA7, 0x8BA8, 0xCCD6, 0x8BA9, 0xC8C3, 0x8BAA, 0xDAA8, + 0x8BAB, 0xC6FD, 0x8BAC, 0xD799, 0x8BAD, 0xD1B5, 0x8BAE, 0xD2E9, 0x8BAF, 0xD1B6, 0x8BB0, 0xBCC7, 0x8BB1, 0xD79A, 0x8BB2, 0xBDB2, + 0x8BB3, 0xBBE4, 0x8BB4, 0xDAA9, 0x8BB5, 0xDAAA, 0x8BB6, 0xD1C8, 0x8BB7, 0xDAAB, 0x8BB8, 0xD0ED, 0x8BB9, 0xB6EF, 0x8BBA, 0xC2DB, + 0x8BBB, 0xD79B, 0x8BBC, 0xCBCF, 0x8BBD, 0xB7ED, 0x8BBE, 0xC9E8, 0x8BBF, 0xB7C3, 0x8BC0, 0xBEF7, 0x8BC1, 0xD6A4, 0x8BC2, 0xDAAC, + 0x8BC3, 0xDAAD, 0x8BC4, 0xC6C0, 0x8BC5, 0xD7E7, 0x8BC6, 0xCAB6, 0x8BC7, 0xD79C, 0x8BC8, 0xD5A9, 0x8BC9, 0xCBDF, 0x8BCA, 0xD5EF, + 0x8BCB, 0xDAAE, 0x8BCC, 0xD6DF, 0x8BCD, 0xB4CA, 0x8BCE, 0xDAB0, 0x8BCF, 0xDAAF, 0x8BD0, 0xD79D, 0x8BD1, 0xD2EB, 0x8BD2, 0xDAB1, + 0x8BD3, 0xDAB2, 0x8BD4, 0xDAB3, 0x8BD5, 0xCAD4, 0x8BD6, 0xDAB4, 0x8BD7, 0xCAAB, 0x8BD8, 0xDAB5, 0x8BD9, 0xDAB6, 0x8BDA, 0xB3CF, + 0x8BDB, 0xD6EF, 0x8BDC, 0xDAB7, 0x8BDD, 0xBBB0, 0x8BDE, 0xB5AE, 0x8BDF, 0xDAB8, 0x8BE0, 0xDAB9, 0x8BE1, 0xB9EE, 0x8BE2, 0xD1AF, + 0x8BE3, 0xD2E8, 0x8BE4, 0xDABA, 0x8BE5, 0xB8C3, 0x8BE6, 0xCFEA, 0x8BE7, 0xB2EF, 0x8BE8, 0xDABB, 0x8BE9, 0xDABC, 0x8BEA, 0xD79E, + 0x8BEB, 0xBDEB, 0x8BEC, 0xCEDC, 0x8BED, 0xD3EF, 0x8BEE, 0xDABD, 0x8BEF, 0xCEF3, 0x8BF0, 0xDABE, 0x8BF1, 0xD3D5, 0x8BF2, 0xBBE5, + 0x8BF3, 0xDABF, 0x8BF4, 0xCBB5, 0x8BF5, 0xCBD0, 0x8BF6, 0xDAC0, 0x8BF7, 0xC7EB, 0x8BF8, 0xD6EE, 0x8BF9, 0xDAC1, 0x8BFA, 0xC5B5, + 0x8BFB, 0xB6C1, 0x8BFC, 0xDAC2, 0x8BFD, 0xB7CC, 0x8BFE, 0xBFCE, 0x8BFF, 0xDAC3, 0x8C00, 0xDAC4, 0x8C01, 0xCBAD, 0x8C02, 0xDAC5, + 0x8C03, 0xB5F7, 0x8C04, 0xDAC6, 0x8C05, 0xC1C2, 0x8C06, 0xD7BB, 0x8C07, 0xDAC7, 0x8C08, 0xCCB8, 0x8C09, 0xD79F, 0x8C0A, 0xD2EA, + 0x8C0B, 0xC4B1, 0x8C0C, 0xDAC8, 0x8C0D, 0xB5FD, 0x8C0E, 0xBBD1, 0x8C0F, 0xDAC9, 0x8C10, 0xD0B3, 0x8C11, 0xDACA, 0x8C12, 0xDACB, + 0x8C13, 0xCEBD, 0x8C14, 0xDACC, 0x8C15, 0xDACD, 0x8C16, 0xDACE, 0x8C17, 0xB2F7, 0x8C18, 0xDAD1, 0x8C19, 0xDACF, 0x8C1A, 0xD1E8, + 0x8C1B, 0xDAD0, 0x8C1C, 0xC3D5, 0x8C1D, 0xDAD2, 0x8C1E, 0xD7A0, 0x8C1F, 0xDAD3, 0x8C20, 0xDAD4, 0x8C21, 0xDAD5, 0x8C22, 0xD0BB, + 0x8C23, 0xD2A5, 0x8C24, 0xB0F9, 0x8C25, 0xDAD6, 0x8C26, 0xC7AB, 0x8C27, 0xDAD7, 0x8C28, 0xBDF7, 0x8C29, 0xC3A1, 0x8C2A, 0xDAD8, + 0x8C2B, 0xDAD9, 0x8C2C, 0xC3FD, 0x8C2D, 0xCCB7, 0x8C2E, 0xDADA, 0x8C2F, 0xDADB, 0x8C30, 0xC0BE, 0x8C31, 0xC6D7, 0x8C32, 0xDADC, + 0x8C33, 0xDADD, 0x8C34, 0xC7B4, 0x8C35, 0xDADE, 0x8C36, 0xDADF, 0x8C37, 0xB9C8, 0x8C38, 0xD840, 0x8C39, 0xD841, 0x8C3A, 0xD842, + 0x8C3B, 0xD843, 0x8C3C, 0xD844, 0x8C3D, 0xD845, 0x8C3E, 0xD846, 0x8C3F, 0xD847, 0x8C40, 0xD848, 0x8C41, 0xBBED, 0x8C42, 0xD849, + 0x8C43, 0xD84A, 0x8C44, 0xD84B, 0x8C45, 0xD84C, 0x8C46, 0xB6B9, 0x8C47, 0xF4F8, 0x8C48, 0xD84D, 0x8C49, 0xF4F9, 0x8C4A, 0xD84E, + 0x8C4B, 0xD84F, 0x8C4C, 0xCDE3, 0x8C4D, 0xD850, 0x8C4E, 0xD851, 0x8C4F, 0xD852, 0x8C50, 0xD853, 0x8C51, 0xD854, 0x8C52, 0xD855, + 0x8C53, 0xD856, 0x8C54, 0xD857, 0x8C55, 0xF5B9, 0x8C56, 0xD858, 0x8C57, 0xD859, 0x8C58, 0xD85A, 0x8C59, 0xD85B, 0x8C5A, 0xEBE0, + 0x8C5B, 0xD85C, 0x8C5C, 0xD85D, 0x8C5D, 0xD85E, 0x8C5E, 0xD85F, 0x8C5F, 0xD860, 0x8C60, 0xD861, 0x8C61, 0xCFF3, 0x8C62, 0xBBBF, + 0x8C63, 0xD862, 0x8C64, 0xD863, 0x8C65, 0xD864, 0x8C66, 0xD865, 0x8C67, 0xD866, 0x8C68, 0xD867, 0x8C69, 0xD868, 0x8C6A, 0xBAC0, + 0x8C6B, 0xD4A5, 0x8C6C, 0xD869, 0x8C6D, 0xD86A, 0x8C6E, 0xD86B, 0x8C6F, 0xD86C, 0x8C70, 0xD86D, 0x8C71, 0xD86E, 0x8C72, 0xD86F, + 0x8C73, 0xE1D9, 0x8C74, 0xD870, 0x8C75, 0xD871, 0x8C76, 0xD872, 0x8C77, 0xD873, 0x8C78, 0xF5F4, 0x8C79, 0xB1AA, 0x8C7A, 0xB2F2, + 0x8C7B, 0xD874, 0x8C7C, 0xD875, 0x8C7D, 0xD876, 0x8C7E, 0xD877, 0x8C7F, 0xD878, 0x8C80, 0xD879, 0x8C81, 0xD87A, 0x8C82, 0xF5F5, + 0x8C83, 0xD87B, 0x8C84, 0xD87C, 0x8C85, 0xF5F7, 0x8C86, 0xD87D, 0x8C87, 0xD87E, 0x8C88, 0xD880, 0x8C89, 0xBAD1, 0x8C8A, 0xF5F6, + 0x8C8B, 0xD881, 0x8C8C, 0xC3B2, 0x8C8D, 0xD882, 0x8C8E, 0xD883, 0x8C8F, 0xD884, 0x8C90, 0xD885, 0x8C91, 0xD886, 0x8C92, 0xD887, + 0x8C93, 0xD888, 0x8C94, 0xF5F9, 0x8C95, 0xD889, 0x8C96, 0xD88A, 0x8C97, 0xD88B, 0x8C98, 0xF5F8, 0x8C99, 0xD88C, 0x8C9A, 0xD88D, + 0x8C9B, 0xD88E, 0x8C9C, 0xD88F, 0x8C9D, 0xD890, 0x8C9E, 0xD891, 0x8C9F, 0xD892, 0x8CA0, 0xD893, 0x8CA1, 0xD894, 0x8CA2, 0xD895, + 0x8CA3, 0xD896, 0x8CA4, 0xD897, 0x8CA5, 0xD898, 0x8CA6, 0xD899, 0x8CA7, 0xD89A, 0x8CA8, 0xD89B, 0x8CA9, 0xD89C, 0x8CAA, 0xD89D, + 0x8CAB, 0xD89E, 0x8CAC, 0xD89F, 0x8CAD, 0xD8A0, 0x8CAE, 0xD940, 0x8CAF, 0xD941, 0x8CB0, 0xD942, 0x8CB1, 0xD943, 0x8CB2, 0xD944, + 0x8CB3, 0xD945, 0x8CB4, 0xD946, 0x8CB5, 0xD947, 0x8CB6, 0xD948, 0x8CB7, 0xD949, 0x8CB8, 0xD94A, 0x8CB9, 0xD94B, 0x8CBA, 0xD94C, + 0x8CBB, 0xD94D, 0x8CBC, 0xD94E, 0x8CBD, 0xD94F, 0x8CBE, 0xD950, 0x8CBF, 0xD951, 0x8CC0, 0xD952, 0x8CC1, 0xD953, 0x8CC2, 0xD954, + 0x8CC3, 0xD955, 0x8CC4, 0xD956, 0x8CC5, 0xD957, 0x8CC6, 0xD958, 0x8CC7, 0xD959, 0x8CC8, 0xD95A, 0x8CC9, 0xD95B, 0x8CCA, 0xD95C, + 0x8CCB, 0xD95D, 0x8CCC, 0xD95E, 0x8CCD, 0xD95F, 0x8CCE, 0xD960, 0x8CCF, 0xD961, 0x8CD0, 0xD962, 0x8CD1, 0xD963, 0x8CD2, 0xD964, + 0x8CD3, 0xD965, 0x8CD4, 0xD966, 0x8CD5, 0xD967, 0x8CD6, 0xD968, 0x8CD7, 0xD969, 0x8CD8, 0xD96A, 0x8CD9, 0xD96B, 0x8CDA, 0xD96C, + 0x8CDB, 0xD96D, 0x8CDC, 0xD96E, 0x8CDD, 0xD96F, 0x8CDE, 0xD970, 0x8CDF, 0xD971, 0x8CE0, 0xD972, 0x8CE1, 0xD973, 0x8CE2, 0xD974, + 0x8CE3, 0xD975, 0x8CE4, 0xD976, 0x8CE5, 0xD977, 0x8CE6, 0xD978, 0x8CE7, 0xD979, 0x8CE8, 0xD97A, 0x8CE9, 0xD97B, 0x8CEA, 0xD97C, + 0x8CEB, 0xD97D, 0x8CEC, 0xD97E, 0x8CED, 0xD980, 0x8CEE, 0xD981, 0x8CEF, 0xD982, 0x8CF0, 0xD983, 0x8CF1, 0xD984, 0x8CF2, 0xD985, + 0x8CF3, 0xD986, 0x8CF4, 0xD987, 0x8CF5, 0xD988, 0x8CF6, 0xD989, 0x8CF7, 0xD98A, 0x8CF8, 0xD98B, 0x8CF9, 0xD98C, 0x8CFA, 0xD98D, + 0x8CFB, 0xD98E, 0x8CFC, 0xD98F, 0x8CFD, 0xD990, 0x8CFE, 0xD991, 0x8CFF, 0xD992, 0x8D00, 0xD993, 0x8D01, 0xD994, 0x8D02, 0xD995, + 0x8D03, 0xD996, 0x8D04, 0xD997, 0x8D05, 0xD998, 0x8D06, 0xD999, 0x8D07, 0xD99A, 0x8D08, 0xD99B, 0x8D09, 0xD99C, 0x8D0A, 0xD99D, + 0x8D0B, 0xD99E, 0x8D0C, 0xD99F, 0x8D0D, 0xD9A0, 0x8D0E, 0xDA40, 0x8D0F, 0xDA41, 0x8D10, 0xDA42, 0x8D11, 0xDA43, 0x8D12, 0xDA44, + 0x8D13, 0xDA45, 0x8D14, 0xDA46, 0x8D15, 0xDA47, 0x8D16, 0xDA48, 0x8D17, 0xDA49, 0x8D18, 0xDA4A, 0x8D19, 0xDA4B, 0x8D1A, 0xDA4C, + 0x8D1B, 0xDA4D, 0x8D1C, 0xDA4E, 0x8D1D, 0xB1B4, 0x8D1E, 0xD5EA, 0x8D1F, 0xB8BA, 0x8D20, 0xDA4F, 0x8D21, 0xB9B1, 0x8D22, 0xB2C6, + 0x8D23, 0xD4F0, 0x8D24, 0xCFCD, 0x8D25, 0xB0DC, 0x8D26, 0xD5CB, 0x8D27, 0xBBF5, 0x8D28, 0xD6CA, 0x8D29, 0xB7B7, 0x8D2A, 0xCCB0, + 0x8D2B, 0xC6B6, 0x8D2C, 0xB1E1, 0x8D2D, 0xB9BA, 0x8D2E, 0xD6FC, 0x8D2F, 0xB9E1, 0x8D30, 0xB7A1, 0x8D31, 0xBCFA, 0x8D32, 0xEADA, + 0x8D33, 0xEADB, 0x8D34, 0xCCF9, 0x8D35, 0xB9F3, 0x8D36, 0xEADC, 0x8D37, 0xB4FB, 0x8D38, 0xC3B3, 0x8D39, 0xB7D1, 0x8D3A, 0xBAD8, + 0x8D3B, 0xEADD, 0x8D3C, 0xD4F4, 0x8D3D, 0xEADE, 0x8D3E, 0xBCD6, 0x8D3F, 0xBBDF, 0x8D40, 0xEADF, 0x8D41, 0xC1DE, 0x8D42, 0xC2B8, + 0x8D43, 0xD4DF, 0x8D44, 0xD7CA, 0x8D45, 0xEAE0, 0x8D46, 0xEAE1, 0x8D47, 0xEAE4, 0x8D48, 0xEAE2, 0x8D49, 0xEAE3, 0x8D4A, 0xC9DE, + 0x8D4B, 0xB8B3, 0x8D4C, 0xB6C4, 0x8D4D, 0xEAE5, 0x8D4E, 0xCAEA, 0x8D4F, 0xC9CD, 0x8D50, 0xB4CD, 0x8D51, 0xDA50, 0x8D52, 0xDA51, + 0x8D53, 0xE2D9, 0x8D54, 0xC5E2, 0x8D55, 0xEAE6, 0x8D56, 0xC0B5, 0x8D57, 0xDA52, 0x8D58, 0xD7B8, 0x8D59, 0xEAE7, 0x8D5A, 0xD7AC, + 0x8D5B, 0xC8FC, 0x8D5C, 0xD8D3, 0x8D5D, 0xD8CD, 0x8D5E, 0xD4DE, 0x8D5F, 0xDA53, 0x8D60, 0xD4F9, 0x8D61, 0xC9C4, 0x8D62, 0xD3AE, + 0x8D63, 0xB8D3, 0x8D64, 0xB3E0, 0x8D65, 0xDA54, 0x8D66, 0xC9E2, 0x8D67, 0xF4F6, 0x8D68, 0xDA55, 0x8D69, 0xDA56, 0x8D6A, 0xDA57, + 0x8D6B, 0xBAD5, 0x8D6C, 0xDA58, 0x8D6D, 0xF4F7, 0x8D6E, 0xDA59, 0x8D6F, 0xDA5A, 0x8D70, 0xD7DF, 0x8D71, 0xDA5B, 0x8D72, 0xDA5C, + 0x8D73, 0xF4F1, 0x8D74, 0xB8B0, 0x8D75, 0xD5D4, 0x8D76, 0xB8CF, 0x8D77, 0xC6F0, 0x8D78, 0xDA5D, 0x8D79, 0xDA5E, 0x8D7A, 0xDA5F, + 0x8D7B, 0xDA60, 0x8D7C, 0xDA61, 0x8D7D, 0xDA62, 0x8D7E, 0xDA63, 0x8D7F, 0xDA64, 0x8D80, 0xDA65, 0x8D81, 0xB3C3, 0x8D82, 0xDA66, + 0x8D83, 0xDA67, 0x8D84, 0xF4F2, 0x8D85, 0xB3AC, 0x8D86, 0xDA68, 0x8D87, 0xDA69, 0x8D88, 0xDA6A, 0x8D89, 0xDA6B, 0x8D8A, 0xD4BD, + 0x8D8B, 0xC7F7, 0x8D8C, 0xDA6C, 0x8D8D, 0xDA6D, 0x8D8E, 0xDA6E, 0x8D8F, 0xDA6F, 0x8D90, 0xDA70, 0x8D91, 0xF4F4, 0x8D92, 0xDA71, + 0x8D93, 0xDA72, 0x8D94, 0xF4F3, 0x8D95, 0xDA73, 0x8D96, 0xDA74, 0x8D97, 0xDA75, 0x8D98, 0xDA76, 0x8D99, 0xDA77, 0x8D9A, 0xDA78, + 0x8D9B, 0xDA79, 0x8D9C, 0xDA7A, 0x8D9D, 0xDA7B, 0x8D9E, 0xDA7C, 0x8D9F, 0xCCCB, 0x8DA0, 0xDA7D, 0x8DA1, 0xDA7E, 0x8DA2, 0xDA80, + 0x8DA3, 0xC8A4, 0x8DA4, 0xDA81, 0x8DA5, 0xDA82, 0x8DA6, 0xDA83, 0x8DA7, 0xDA84, 0x8DA8, 0xDA85, 0x8DA9, 0xDA86, 0x8DAA, 0xDA87, + 0x8DAB, 0xDA88, 0x8DAC, 0xDA89, 0x8DAD, 0xDA8A, 0x8DAE, 0xDA8B, 0x8DAF, 0xDA8C, 0x8DB0, 0xDA8D, 0x8DB1, 0xF4F5, 0x8DB2, 0xDA8E, + 0x8DB3, 0xD7E3, 0x8DB4, 0xC5BF, 0x8DB5, 0xF5C0, 0x8DB6, 0xDA8F, 0x8DB7, 0xDA90, 0x8DB8, 0xF5BB, 0x8DB9, 0xDA91, 0x8DBA, 0xF5C3, + 0x8DBB, 0xDA92, 0x8DBC, 0xF5C2, 0x8DBD, 0xDA93, 0x8DBE, 0xD6BA, 0x8DBF, 0xF5C1, 0x8DC0, 0xDA94, 0x8DC1, 0xDA95, 0x8DC2, 0xDA96, + 0x8DC3, 0xD4BE, 0x8DC4, 0xF5C4, 0x8DC5, 0xDA97, 0x8DC6, 0xF5CC, 0x8DC7, 0xDA98, 0x8DC8, 0xDA99, 0x8DC9, 0xDA9A, 0x8DCA, 0xDA9B, + 0x8DCB, 0xB0CF, 0x8DCC, 0xB5F8, 0x8DCD, 0xDA9C, 0x8DCE, 0xF5C9, 0x8DCF, 0xF5CA, 0x8DD0, 0xDA9D, 0x8DD1, 0xC5DC, 0x8DD2, 0xDA9E, + 0x8DD3, 0xDA9F, 0x8DD4, 0xDAA0, 0x8DD5, 0xDB40, 0x8DD6, 0xF5C5, 0x8DD7, 0xF5C6, 0x8DD8, 0xDB41, 0x8DD9, 0xDB42, 0x8DDA, 0xF5C7, + 0x8DDB, 0xF5CB, 0x8DDC, 0xDB43, 0x8DDD, 0xBEE0, 0x8DDE, 0xF5C8, 0x8DDF, 0xB8FA, 0x8DE0, 0xDB44, 0x8DE1, 0xDB45, 0x8DE2, 0xDB46, + 0x8DE3, 0xF5D0, 0x8DE4, 0xF5D3, 0x8DE5, 0xDB47, 0x8DE6, 0xDB48, 0x8DE7, 0xDB49, 0x8DE8, 0xBFE7, 0x8DE9, 0xDB4A, 0x8DEA, 0xB9F2, + 0x8DEB, 0xF5BC, 0x8DEC, 0xF5CD, 0x8DED, 0xDB4B, 0x8DEE, 0xDB4C, 0x8DEF, 0xC2B7, 0x8DF0, 0xDB4D, 0x8DF1, 0xDB4E, 0x8DF2, 0xDB4F, + 0x8DF3, 0xCCF8, 0x8DF4, 0xDB50, 0x8DF5, 0xBCF9, 0x8DF6, 0xDB51, 0x8DF7, 0xF5CE, 0x8DF8, 0xF5CF, 0x8DF9, 0xF5D1, 0x8DFA, 0xB6E5, + 0x8DFB, 0xF5D2, 0x8DFC, 0xDB52, 0x8DFD, 0xF5D5, 0x8DFE, 0xDB53, 0x8DFF, 0xDB54, 0x8E00, 0xDB55, 0x8E01, 0xDB56, 0x8E02, 0xDB57, + 0x8E03, 0xDB58, 0x8E04, 0xDB59, 0x8E05, 0xF5BD, 0x8E06, 0xDB5A, 0x8E07, 0xDB5B, 0x8E08, 0xDB5C, 0x8E09, 0xF5D4, 0x8E0A, 0xD3BB, + 0x8E0B, 0xDB5D, 0x8E0C, 0xB3EC, 0x8E0D, 0xDB5E, 0x8E0E, 0xDB5F, 0x8E0F, 0xCCA4, 0x8E10, 0xDB60, 0x8E11, 0xDB61, 0x8E12, 0xDB62, + 0x8E13, 0xDB63, 0x8E14, 0xF5D6, 0x8E15, 0xDB64, 0x8E16, 0xDB65, 0x8E17, 0xDB66, 0x8E18, 0xDB67, 0x8E19, 0xDB68, 0x8E1A, 0xDB69, + 0x8E1B, 0xDB6A, 0x8E1C, 0xDB6B, 0x8E1D, 0xF5D7, 0x8E1E, 0xBEE1, 0x8E1F, 0xF5D8, 0x8E20, 0xDB6C, 0x8E21, 0xDB6D, 0x8E22, 0xCCDF, + 0x8E23, 0xF5DB, 0x8E24, 0xDB6E, 0x8E25, 0xDB6F, 0x8E26, 0xDB70, 0x8E27, 0xDB71, 0x8E28, 0xDB72, 0x8E29, 0xB2C8, 0x8E2A, 0xD7D9, + 0x8E2B, 0xDB73, 0x8E2C, 0xF5D9, 0x8E2D, 0xDB74, 0x8E2E, 0xF5DA, 0x8E2F, 0xF5DC, 0x8E30, 0xDB75, 0x8E31, 0xF5E2, 0x8E32, 0xDB76, + 0x8E33, 0xDB77, 0x8E34, 0xDB78, 0x8E35, 0xF5E0, 0x8E36, 0xDB79, 0x8E37, 0xDB7A, 0x8E38, 0xDB7B, 0x8E39, 0xF5DF, 0x8E3A, 0xF5DD, + 0x8E3B, 0xDB7C, 0x8E3C, 0xDB7D, 0x8E3D, 0xF5E1, 0x8E3E, 0xDB7E, 0x8E3F, 0xDB80, 0x8E40, 0xF5DE, 0x8E41, 0xF5E4, 0x8E42, 0xF5E5, + 0x8E43, 0xDB81, 0x8E44, 0xCCE3, 0x8E45, 0xDB82, 0x8E46, 0xDB83, 0x8E47, 0xE5BF, 0x8E48, 0xB5B8, 0x8E49, 0xF5E3, 0x8E4A, 0xF5E8, + 0x8E4B, 0xCCA3, 0x8E4C, 0xDB84, 0x8E4D, 0xDB85, 0x8E4E, 0xDB86, 0x8E4F, 0xDB87, 0x8E50, 0xDB88, 0x8E51, 0xF5E6, 0x8E52, 0xF5E7, + 0x8E53, 0xDB89, 0x8E54, 0xDB8A, 0x8E55, 0xDB8B, 0x8E56, 0xDB8C, 0x8E57, 0xDB8D, 0x8E58, 0xDB8E, 0x8E59, 0xF5BE, 0x8E5A, 0xDB8F, + 0x8E5B, 0xDB90, 0x8E5C, 0xDB91, 0x8E5D, 0xDB92, 0x8E5E, 0xDB93, 0x8E5F, 0xDB94, 0x8E60, 0xDB95, 0x8E61, 0xDB96, 0x8E62, 0xDB97, + 0x8E63, 0xDB98, 0x8E64, 0xDB99, 0x8E65, 0xDB9A, 0x8E66, 0xB1C4, 0x8E67, 0xDB9B, 0x8E68, 0xDB9C, 0x8E69, 0xF5BF, 0x8E6A, 0xDB9D, + 0x8E6B, 0xDB9E, 0x8E6C, 0xB5C5, 0x8E6D, 0xB2E4, 0x8E6E, 0xDB9F, 0x8E6F, 0xF5EC, 0x8E70, 0xF5E9, 0x8E71, 0xDBA0, 0x8E72, 0xB6D7, + 0x8E73, 0xDC40, 0x8E74, 0xF5ED, 0x8E75, 0xDC41, 0x8E76, 0xF5EA, 0x8E77, 0xDC42, 0x8E78, 0xDC43, 0x8E79, 0xDC44, 0x8E7A, 0xDC45, + 0x8E7B, 0xDC46, 0x8E7C, 0xF5EB, 0x8E7D, 0xDC47, 0x8E7E, 0xDC48, 0x8E7F, 0xB4DA, 0x8E80, 0xDC49, 0x8E81, 0xD4EA, 0x8E82, 0xDC4A, + 0x8E83, 0xDC4B, 0x8E84, 0xDC4C, 0x8E85, 0xF5EE, 0x8E86, 0xDC4D, 0x8E87, 0xB3F9, 0x8E88, 0xDC4E, 0x8E89, 0xDC4F, 0x8E8A, 0xDC50, + 0x8E8B, 0xDC51, 0x8E8C, 0xDC52, 0x8E8D, 0xDC53, 0x8E8E, 0xDC54, 0x8E8F, 0xF5EF, 0x8E90, 0xF5F1, 0x8E91, 0xDC55, 0x8E92, 0xDC56, + 0x8E93, 0xDC57, 0x8E94, 0xF5F0, 0x8E95, 0xDC58, 0x8E96, 0xDC59, 0x8E97, 0xDC5A, 0x8E98, 0xDC5B, 0x8E99, 0xDC5C, 0x8E9A, 0xDC5D, + 0x8E9B, 0xDC5E, 0x8E9C, 0xF5F2, 0x8E9D, 0xDC5F, 0x8E9E, 0xF5F3, 0x8E9F, 0xDC60, 0x8EA0, 0xDC61, 0x8EA1, 0xDC62, 0x8EA2, 0xDC63, + 0x8EA3, 0xDC64, 0x8EA4, 0xDC65, 0x8EA5, 0xDC66, 0x8EA6, 0xDC67, 0x8EA7, 0xDC68, 0x8EA8, 0xDC69, 0x8EA9, 0xDC6A, 0x8EAA, 0xDC6B, + 0x8EAB, 0xC9ED, 0x8EAC, 0xB9AA, 0x8EAD, 0xDC6C, 0x8EAE, 0xDC6D, 0x8EAF, 0xC7FB, 0x8EB0, 0xDC6E, 0x8EB1, 0xDC6F, 0x8EB2, 0xB6E3, + 0x8EB3, 0xDC70, 0x8EB4, 0xDC71, 0x8EB5, 0xDC72, 0x8EB6, 0xDC73, 0x8EB7, 0xDC74, 0x8EB8, 0xDC75, 0x8EB9, 0xDC76, 0x8EBA, 0xCCC9, + 0x8EBB, 0xDC77, 0x8EBC, 0xDC78, 0x8EBD, 0xDC79, 0x8EBE, 0xDC7A, 0x8EBF, 0xDC7B, 0x8EC0, 0xDC7C, 0x8EC1, 0xDC7D, 0x8EC2, 0xDC7E, + 0x8EC3, 0xDC80, 0x8EC4, 0xDC81, 0x8EC5, 0xDC82, 0x8EC6, 0xDC83, 0x8EC7, 0xDC84, 0x8EC8, 0xDC85, 0x8EC9, 0xDC86, 0x8ECA, 0xDC87, + 0x8ECB, 0xDC88, 0x8ECC, 0xDC89, 0x8ECD, 0xDC8A, 0x8ECE, 0xEAA6, 0x8ECF, 0xDC8B, 0x8ED0, 0xDC8C, 0x8ED1, 0xDC8D, 0x8ED2, 0xDC8E, + 0x8ED3, 0xDC8F, 0x8ED4, 0xDC90, 0x8ED5, 0xDC91, 0x8ED6, 0xDC92, 0x8ED7, 0xDC93, 0x8ED8, 0xDC94, 0x8ED9, 0xDC95, 0x8EDA, 0xDC96, + 0x8EDB, 0xDC97, 0x8EDC, 0xDC98, 0x8EDD, 0xDC99, 0x8EDE, 0xDC9A, 0x8EDF, 0xDC9B, 0x8EE0, 0xDC9C, 0x8EE1, 0xDC9D, 0x8EE2, 0xDC9E, + 0x8EE3, 0xDC9F, 0x8EE4, 0xDCA0, 0x8EE5, 0xDD40, 0x8EE6, 0xDD41, 0x8EE7, 0xDD42, 0x8EE8, 0xDD43, 0x8EE9, 0xDD44, 0x8EEA, 0xDD45, + 0x8EEB, 0xDD46, 0x8EEC, 0xDD47, 0x8EED, 0xDD48, 0x8EEE, 0xDD49, 0x8EEF, 0xDD4A, 0x8EF0, 0xDD4B, 0x8EF1, 0xDD4C, 0x8EF2, 0xDD4D, + 0x8EF3, 0xDD4E, 0x8EF4, 0xDD4F, 0x8EF5, 0xDD50, 0x8EF6, 0xDD51, 0x8EF7, 0xDD52, 0x8EF8, 0xDD53, 0x8EF9, 0xDD54, 0x8EFA, 0xDD55, + 0x8EFB, 0xDD56, 0x8EFC, 0xDD57, 0x8EFD, 0xDD58, 0x8EFE, 0xDD59, 0x8EFF, 0xDD5A, 0x8F00, 0xDD5B, 0x8F01, 0xDD5C, 0x8F02, 0xDD5D, + 0x8F03, 0xDD5E, 0x8F04, 0xDD5F, 0x8F05, 0xDD60, 0x8F06, 0xDD61, 0x8F07, 0xDD62, 0x8F08, 0xDD63, 0x8F09, 0xDD64, 0x8F0A, 0xDD65, + 0x8F0B, 0xDD66, 0x8F0C, 0xDD67, 0x8F0D, 0xDD68, 0x8F0E, 0xDD69, 0x8F0F, 0xDD6A, 0x8F10, 0xDD6B, 0x8F11, 0xDD6C, 0x8F12, 0xDD6D, + 0x8F13, 0xDD6E, 0x8F14, 0xDD6F, 0x8F15, 0xDD70, 0x8F16, 0xDD71, 0x8F17, 0xDD72, 0x8F18, 0xDD73, 0x8F19, 0xDD74, 0x8F1A, 0xDD75, + 0x8F1B, 0xDD76, 0x8F1C, 0xDD77, 0x8F1D, 0xDD78, 0x8F1E, 0xDD79, 0x8F1F, 0xDD7A, 0x8F20, 0xDD7B, 0x8F21, 0xDD7C, 0x8F22, 0xDD7D, + 0x8F23, 0xDD7E, 0x8F24, 0xDD80, 0x8F25, 0xDD81, 0x8F26, 0xDD82, 0x8F27, 0xDD83, 0x8F28, 0xDD84, 0x8F29, 0xDD85, 0x8F2A, 0xDD86, + 0x8F2B, 0xDD87, 0x8F2C, 0xDD88, 0x8F2D, 0xDD89, 0x8F2E, 0xDD8A, 0x8F2F, 0xDD8B, 0x8F30, 0xDD8C, 0x8F31, 0xDD8D, 0x8F32, 0xDD8E, + 0x8F33, 0xDD8F, 0x8F34, 0xDD90, 0x8F35, 0xDD91, 0x8F36, 0xDD92, 0x8F37, 0xDD93, 0x8F38, 0xDD94, 0x8F39, 0xDD95, 0x8F3A, 0xDD96, + 0x8F3B, 0xDD97, 0x8F3C, 0xDD98, 0x8F3D, 0xDD99, 0x8F3E, 0xDD9A, 0x8F3F, 0xDD9B, 0x8F40, 0xDD9C, 0x8F41, 0xDD9D, 0x8F42, 0xDD9E, + 0x8F43, 0xDD9F, 0x8F44, 0xDDA0, 0x8F45, 0xDE40, 0x8F46, 0xDE41, 0x8F47, 0xDE42, 0x8F48, 0xDE43, 0x8F49, 0xDE44, 0x8F4A, 0xDE45, + 0x8F4B, 0xDE46, 0x8F4C, 0xDE47, 0x8F4D, 0xDE48, 0x8F4E, 0xDE49, 0x8F4F, 0xDE4A, 0x8F50, 0xDE4B, 0x8F51, 0xDE4C, 0x8F52, 0xDE4D, + 0x8F53, 0xDE4E, 0x8F54, 0xDE4F, 0x8F55, 0xDE50, 0x8F56, 0xDE51, 0x8F57, 0xDE52, 0x8F58, 0xDE53, 0x8F59, 0xDE54, 0x8F5A, 0xDE55, + 0x8F5B, 0xDE56, 0x8F5C, 0xDE57, 0x8F5D, 0xDE58, 0x8F5E, 0xDE59, 0x8F5F, 0xDE5A, 0x8F60, 0xDE5B, 0x8F61, 0xDE5C, 0x8F62, 0xDE5D, + 0x8F63, 0xDE5E, 0x8F64, 0xDE5F, 0x8F65, 0xDE60, 0x8F66, 0xB3B5, 0x8F67, 0xD4FE, 0x8F68, 0xB9EC, 0x8F69, 0xD0F9, 0x8F6A, 0xDE61, + 0x8F6B, 0xE9ED, 0x8F6C, 0xD7AA, 0x8F6D, 0xE9EE, 0x8F6E, 0xC2D6, 0x8F6F, 0xC8ED, 0x8F70, 0xBAE4, 0x8F71, 0xE9EF, 0x8F72, 0xE9F0, + 0x8F73, 0xE9F1, 0x8F74, 0xD6E1, 0x8F75, 0xE9F2, 0x8F76, 0xE9F3, 0x8F77, 0xE9F5, 0x8F78, 0xE9F4, 0x8F79, 0xE9F6, 0x8F7A, 0xE9F7, + 0x8F7B, 0xC7E1, 0x8F7C, 0xE9F8, 0x8F7D, 0xD4D8, 0x8F7E, 0xE9F9, 0x8F7F, 0xBDCE, 0x8F80, 0xDE62, 0x8F81, 0xE9FA, 0x8F82, 0xE9FB, + 0x8F83, 0xBDCF, 0x8F84, 0xE9FC, 0x8F85, 0xB8A8, 0x8F86, 0xC1BE, 0x8F87, 0xE9FD, 0x8F88, 0xB1B2, 0x8F89, 0xBBD4, 0x8F8A, 0xB9F5, + 0x8F8B, 0xE9FE, 0x8F8C, 0xDE63, 0x8F8D, 0xEAA1, 0x8F8E, 0xEAA2, 0x8F8F, 0xEAA3, 0x8F90, 0xB7F8, 0x8F91, 0xBCAD, 0x8F92, 0xDE64, + 0x8F93, 0xCAE4, 0x8F94, 0xE0CE, 0x8F95, 0xD4AF, 0x8F96, 0xCFBD, 0x8F97, 0xD5B7, 0x8F98, 0xEAA4, 0x8F99, 0xD5DE, 0x8F9A, 0xEAA5, + 0x8F9B, 0xD0C1, 0x8F9C, 0xB9BC, 0x8F9D, 0xDE65, 0x8F9E, 0xB4C7, 0x8F9F, 0xB1D9, 0x8FA0, 0xDE66, 0x8FA1, 0xDE67, 0x8FA2, 0xDE68, + 0x8FA3, 0xC0B1, 0x8FA4, 0xDE69, 0x8FA5, 0xDE6A, 0x8FA6, 0xDE6B, 0x8FA7, 0xDE6C, 0x8FA8, 0xB1E6, 0x8FA9, 0xB1E7, 0x8FAA, 0xDE6D, + 0x8FAB, 0xB1E8, 0x8FAC, 0xDE6E, 0x8FAD, 0xDE6F, 0x8FAE, 0xDE70, 0x8FAF, 0xDE71, 0x8FB0, 0xB3BD, 0x8FB1, 0xC8E8, 0x8FB2, 0xDE72, + 0x8FB3, 0xDE73, 0x8FB4, 0xDE74, 0x8FB5, 0xDE75, 0x8FB6, 0xE5C1, 0x8FB7, 0xDE76, 0x8FB8, 0xDE77, 0x8FB9, 0xB1DF, 0x8FBA, 0xDE78, + 0x8FBB, 0xDE79, 0x8FBC, 0xDE7A, 0x8FBD, 0xC1C9, 0x8FBE, 0xB4EF, 0x8FBF, 0xDE7B, 0x8FC0, 0xDE7C, 0x8FC1, 0xC7A8, 0x8FC2, 0xD3D8, + 0x8FC3, 0xDE7D, 0x8FC4, 0xC6F9, 0x8FC5, 0xD1B8, 0x8FC6, 0xDE7E, 0x8FC7, 0xB9FD, 0x8FC8, 0xC2F5, 0x8FC9, 0xDE80, 0x8FCA, 0xDE81, + 0x8FCB, 0xDE82, 0x8FCC, 0xDE83, 0x8FCD, 0xDE84, 0x8FCE, 0xD3AD, 0x8FCF, 0xDE85, 0x8FD0, 0xD4CB, 0x8FD1, 0xBDFC, 0x8FD2, 0xDE86, + 0x8FD3, 0xE5C2, 0x8FD4, 0xB7B5, 0x8FD5, 0xE5C3, 0x8FD6, 0xDE87, 0x8FD7, 0xDE88, 0x8FD8, 0xBBB9, 0x8FD9, 0xD5E2, 0x8FDA, 0xDE89, + 0x8FDB, 0xBDF8, 0x8FDC, 0xD4B6, 0x8FDD, 0xCEA5, 0x8FDE, 0xC1AC, 0x8FDF, 0xB3D9, 0x8FE0, 0xDE8A, 0x8FE1, 0xDE8B, 0x8FE2, 0xCCF6, + 0x8FE3, 0xDE8C, 0x8FE4, 0xE5C6, 0x8FE5, 0xE5C4, 0x8FE6, 0xE5C8, 0x8FE7, 0xDE8D, 0x8FE8, 0xE5CA, 0x8FE9, 0xE5C7, 0x8FEA, 0xB5CF, + 0x8FEB, 0xC6C8, 0x8FEC, 0xDE8E, 0x8FED, 0xB5FC, 0x8FEE, 0xE5C5, 0x8FEF, 0xDE8F, 0x8FF0, 0xCAF6, 0x8FF1, 0xDE90, 0x8FF2, 0xDE91, + 0x8FF3, 0xE5C9, 0x8FF4, 0xDE92, 0x8FF5, 0xDE93, 0x8FF6, 0xDE94, 0x8FF7, 0xC3D4, 0x8FF8, 0xB1C5, 0x8FF9, 0xBCA3, 0x8FFA, 0xDE95, + 0x8FFB, 0xDE96, 0x8FFC, 0xDE97, 0x8FFD, 0xD7B7, 0x8FFE, 0xDE98, 0x8FFF, 0xDE99, 0x9000, 0xCDCB, 0x9001, 0xCBCD, 0x9002, 0xCACA, + 0x9003, 0xCCD3, 0x9004, 0xE5CC, 0x9005, 0xE5CB, 0x9006, 0xC4E6, 0x9007, 0xDE9A, 0x9008, 0xDE9B, 0x9009, 0xD1A1, 0x900A, 0xD1B7, + 0x900B, 0xE5CD, 0x900C, 0xDE9C, 0x900D, 0xE5D0, 0x900E, 0xDE9D, 0x900F, 0xCDB8, 0x9010, 0xD6F0, 0x9011, 0xE5CF, 0x9012, 0xB5DD, + 0x9013, 0xDE9E, 0x9014, 0xCDBE, 0x9015, 0xDE9F, 0x9016, 0xE5D1, 0x9017, 0xB6BA, 0x9018, 0xDEA0, 0x9019, 0xDF40, 0x901A, 0xCDA8, + 0x901B, 0xB9E4, 0x901C, 0xDF41, 0x901D, 0xCAC5, 0x901E, 0xB3D1, 0x901F, 0xCBD9, 0x9020, 0xD4EC, 0x9021, 0xE5D2, 0x9022, 0xB7EA, + 0x9023, 0xDF42, 0x9024, 0xDF43, 0x9025, 0xDF44, 0x9026, 0xE5CE, 0x9027, 0xDF45, 0x9028, 0xDF46, 0x9029, 0xDF47, 0x902A, 0xDF48, + 0x902B, 0xDF49, 0x902C, 0xDF4A, 0x902D, 0xE5D5, 0x902E, 0xB4FE, 0x902F, 0xE5D6, 0x9030, 0xDF4B, 0x9031, 0xDF4C, 0x9032, 0xDF4D, + 0x9033, 0xDF4E, 0x9034, 0xDF4F, 0x9035, 0xE5D3, 0x9036, 0xE5D4, 0x9037, 0xDF50, 0x9038, 0xD2DD, 0x9039, 0xDF51, 0x903A, 0xDF52, + 0x903B, 0xC2DF, 0x903C, 0xB1C6, 0x903D, 0xDF53, 0x903E, 0xD3E2, 0x903F, 0xDF54, 0x9040, 0xDF55, 0x9041, 0xB6DD, 0x9042, 0xCBEC, + 0x9043, 0xDF56, 0x9044, 0xE5D7, 0x9045, 0xDF57, 0x9046, 0xDF58, 0x9047, 0xD3F6, 0x9048, 0xDF59, 0x9049, 0xDF5A, 0x904A, 0xDF5B, + 0x904B, 0xDF5C, 0x904C, 0xDF5D, 0x904D, 0xB1E9, 0x904E, 0xDF5E, 0x904F, 0xB6F4, 0x9050, 0xE5DA, 0x9051, 0xE5D8, 0x9052, 0xE5D9, + 0x9053, 0xB5C0, 0x9054, 0xDF5F, 0x9055, 0xDF60, 0x9056, 0xDF61, 0x9057, 0xD2C5, 0x9058, 0xE5DC, 0x9059, 0xDF62, 0x905A, 0xDF63, + 0x905B, 0xE5DE, 0x905C, 0xDF64, 0x905D, 0xDF65, 0x905E, 0xDF66, 0x905F, 0xDF67, 0x9060, 0xDF68, 0x9061, 0xDF69, 0x9062, 0xE5DD, + 0x9063, 0xC7B2, 0x9064, 0xDF6A, 0x9065, 0xD2A3, 0x9066, 0xDF6B, 0x9067, 0xDF6C, 0x9068, 0xE5DB, 0x9069, 0xDF6D, 0x906A, 0xDF6E, + 0x906B, 0xDF6F, 0x906C, 0xDF70, 0x906D, 0xD4E2, 0x906E, 0xD5DA, 0x906F, 0xDF71, 0x9070, 0xDF72, 0x9071, 0xDF73, 0x9072, 0xDF74, + 0x9073, 0xDF75, 0x9074, 0xE5E0, 0x9075, 0xD7F1, 0x9076, 0xDF76, 0x9077, 0xDF77, 0x9078, 0xDF78, 0x9079, 0xDF79, 0x907A, 0xDF7A, + 0x907B, 0xDF7B, 0x907C, 0xDF7C, 0x907D, 0xE5E1, 0x907E, 0xDF7D, 0x907F, 0xB1DC, 0x9080, 0xD1FB, 0x9081, 0xDF7E, 0x9082, 0xE5E2, + 0x9083, 0xE5E4, 0x9084, 0xDF80, 0x9085, 0xDF81, 0x9086, 0xDF82, 0x9087, 0xDF83, 0x9088, 0xE5E3, 0x9089, 0xDF84, 0x908A, 0xDF85, + 0x908B, 0xE5E5, 0x908C, 0xDF86, 0x908D, 0xDF87, 0x908E, 0xDF88, 0x908F, 0xDF89, 0x9090, 0xDF8A, 0x9091, 0xD2D8, 0x9092, 0xDF8B, + 0x9093, 0xB5CB, 0x9094, 0xDF8C, 0x9095, 0xE7DF, 0x9096, 0xDF8D, 0x9097, 0xDAF5, 0x9098, 0xDF8E, 0x9099, 0xDAF8, 0x909A, 0xDF8F, + 0x909B, 0xDAF6, 0x909C, 0xDF90, 0x909D, 0xDAF7, 0x909E, 0xDF91, 0x909F, 0xDF92, 0x90A0, 0xDF93, 0x90A1, 0xDAFA, 0x90A2, 0xD0CF, + 0x90A3, 0xC4C7, 0x90A4, 0xDF94, 0x90A5, 0xDF95, 0x90A6, 0xB0EE, 0x90A7, 0xDF96, 0x90A8, 0xDF97, 0x90A9, 0xDF98, 0x90AA, 0xD0B0, + 0x90AB, 0xDF99, 0x90AC, 0xDAF9, 0x90AD, 0xDF9A, 0x90AE, 0xD3CA, 0x90AF, 0xBAAA, 0x90B0, 0xDBA2, 0x90B1, 0xC7F1, 0x90B2, 0xDF9B, + 0x90B3, 0xDAFC, 0x90B4, 0xDAFB, 0x90B5, 0xC9DB, 0x90B6, 0xDAFD, 0x90B7, 0xDF9C, 0x90B8, 0xDBA1, 0x90B9, 0xD7DE, 0x90BA, 0xDAFE, + 0x90BB, 0xC1DA, 0x90BC, 0xDF9D, 0x90BD, 0xDF9E, 0x90BE, 0xDBA5, 0x90BF, 0xDF9F, 0x90C0, 0xDFA0, 0x90C1, 0xD3F4, 0x90C2, 0xE040, + 0x90C3, 0xE041, 0x90C4, 0xDBA7, 0x90C5, 0xDBA4, 0x90C6, 0xE042, 0x90C7, 0xDBA8, 0x90C8, 0xE043, 0x90C9, 0xE044, 0x90CA, 0xBDBC, + 0x90CB, 0xE045, 0x90CC, 0xE046, 0x90CD, 0xE047, 0x90CE, 0xC0C9, 0x90CF, 0xDBA3, 0x90D0, 0xDBA6, 0x90D1, 0xD6A3, 0x90D2, 0xE048, + 0x90D3, 0xDBA9, 0x90D4, 0xE049, 0x90D5, 0xE04A, 0x90D6, 0xE04B, 0x90D7, 0xDBAD, 0x90D8, 0xE04C, 0x90D9, 0xE04D, 0x90DA, 0xE04E, + 0x90DB, 0xDBAE, 0x90DC, 0xDBAC, 0x90DD, 0xBAC2, 0x90DE, 0xE04F, 0x90DF, 0xE050, 0x90E0, 0xE051, 0x90E1, 0xBFA4, 0x90E2, 0xDBAB, + 0x90E3, 0xE052, 0x90E4, 0xE053, 0x90E5, 0xE054, 0x90E6, 0xDBAA, 0x90E7, 0xD4C7, 0x90E8, 0xB2BF, 0x90E9, 0xE055, 0x90EA, 0xE056, + 0x90EB, 0xDBAF, 0x90EC, 0xE057, 0x90ED, 0xB9F9, 0x90EE, 0xE058, 0x90EF, 0xDBB0, 0x90F0, 0xE059, 0x90F1, 0xE05A, 0x90F2, 0xE05B, + 0x90F3, 0xE05C, 0x90F4, 0xB3BB, 0x90F5, 0xE05D, 0x90F6, 0xE05E, 0x90F7, 0xE05F, 0x90F8, 0xB5A6, 0x90F9, 0xE060, 0x90FA, 0xE061, + 0x90FB, 0xE062, 0x90FC, 0xE063, 0x90FD, 0xB6BC, 0x90FE, 0xDBB1, 0x90FF, 0xE064, 0x9100, 0xE065, 0x9101, 0xE066, 0x9102, 0xB6F5, + 0x9103, 0xE067, 0x9104, 0xDBB2, 0x9105, 0xE068, 0x9106, 0xE069, 0x9107, 0xE06A, 0x9108, 0xE06B, 0x9109, 0xE06C, 0x910A, 0xE06D, + 0x910B, 0xE06E, 0x910C, 0xE06F, 0x910D, 0xE070, 0x910E, 0xE071, 0x910F, 0xE072, 0x9110, 0xE073, 0x9111, 0xE074, 0x9112, 0xE075, + 0x9113, 0xE076, 0x9114, 0xE077, 0x9115, 0xE078, 0x9116, 0xE079, 0x9117, 0xE07A, 0x9118, 0xE07B, 0x9119, 0xB1C9, 0x911A, 0xE07C, + 0x911B, 0xE07D, 0x911C, 0xE07E, 0x911D, 0xE080, 0x911E, 0xDBB4, 0x911F, 0xE081, 0x9120, 0xE082, 0x9121, 0xE083, 0x9122, 0xDBB3, + 0x9123, 0xDBB5, 0x9124, 0xE084, 0x9125, 0xE085, 0x9126, 0xE086, 0x9127, 0xE087, 0x9128, 0xE088, 0x9129, 0xE089, 0x912A, 0xE08A, + 0x912B, 0xE08B, 0x912C, 0xE08C, 0x912D, 0xE08D, 0x912E, 0xE08E, 0x912F, 0xDBB7, 0x9130, 0xE08F, 0x9131, 0xDBB6, 0x9132, 0xE090, + 0x9133, 0xE091, 0x9134, 0xE092, 0x9135, 0xE093, 0x9136, 0xE094, 0x9137, 0xE095, 0x9138, 0xE096, 0x9139, 0xDBB8, 0x913A, 0xE097, + 0x913B, 0xE098, 0x913C, 0xE099, 0x913D, 0xE09A, 0x913E, 0xE09B, 0x913F, 0xE09C, 0x9140, 0xE09D, 0x9141, 0xE09E, 0x9142, 0xE09F, + 0x9143, 0xDBB9, 0x9144, 0xE0A0, 0x9145, 0xE140, 0x9146, 0xDBBA, 0x9147, 0xE141, 0x9148, 0xE142, 0x9149, 0xD3CF, 0x914A, 0xF4FA, + 0x914B, 0xC7F5, 0x914C, 0xD7C3, 0x914D, 0xC5E4, 0x914E, 0xF4FC, 0x914F, 0xF4FD, 0x9150, 0xF4FB, 0x9151, 0xE143, 0x9152, 0xBEC6, + 0x9153, 0xE144, 0x9154, 0xE145, 0x9155, 0xE146, 0x9156, 0xE147, 0x9157, 0xD0EF, 0x9158, 0xE148, 0x9159, 0xE149, 0x915A, 0xB7D3, + 0x915B, 0xE14A, 0x915C, 0xE14B, 0x915D, 0xD4CD, 0x915E, 0xCCAA, 0x915F, 0xE14C, 0x9160, 0xE14D, 0x9161, 0xF5A2, 0x9162, 0xF5A1, + 0x9163, 0xBAA8, 0x9164, 0xF4FE, 0x9165, 0xCBD6, 0x9166, 0xE14E, 0x9167, 0xE14F, 0x9168, 0xE150, 0x9169, 0xF5A4, 0x916A, 0xC0D2, + 0x916B, 0xE151, 0x916C, 0xB3EA, 0x916D, 0xE152, 0x916E, 0xCDAA, 0x916F, 0xF5A5, 0x9170, 0xF5A3, 0x9171, 0xBDB4, 0x9172, 0xF5A8, + 0x9173, 0xE153, 0x9174, 0xF5A9, 0x9175, 0xBDCD, 0x9176, 0xC3B8, 0x9177, 0xBFE1, 0x9178, 0xCBE1, 0x9179, 0xF5AA, 0x917A, 0xE154, + 0x917B, 0xE155, 0x917C, 0xE156, 0x917D, 0xF5A6, 0x917E, 0xF5A7, 0x917F, 0xC4F0, 0x9180, 0xE157, 0x9181, 0xE158, 0x9182, 0xE159, + 0x9183, 0xE15A, 0x9184, 0xE15B, 0x9185, 0xF5AC, 0x9186, 0xE15C, 0x9187, 0xB4BC, 0x9188, 0xE15D, 0x9189, 0xD7ED, 0x918A, 0xE15E, + 0x918B, 0xB4D7, 0x918C, 0xF5AB, 0x918D, 0xF5AE, 0x918E, 0xE15F, 0x918F, 0xE160, 0x9190, 0xF5AD, 0x9191, 0xF5AF, 0x9192, 0xD0D1, + 0x9193, 0xE161, 0x9194, 0xE162, 0x9195, 0xE163, 0x9196, 0xE164, 0x9197, 0xE165, 0x9198, 0xE166, 0x9199, 0xE167, 0x919A, 0xC3D1, + 0x919B, 0xC8A9, 0x919C, 0xE168, 0x919D, 0xE169, 0x919E, 0xE16A, 0x919F, 0xE16B, 0x91A0, 0xE16C, 0x91A1, 0xE16D, 0x91A2, 0xF5B0, + 0x91A3, 0xF5B1, 0x91A4, 0xE16E, 0x91A5, 0xE16F, 0x91A6, 0xE170, 0x91A7, 0xE171, 0x91A8, 0xE172, 0x91A9, 0xE173, 0x91AA, 0xF5B2, + 0x91AB, 0xE174, 0x91AC, 0xE175, 0x91AD, 0xF5B3, 0x91AE, 0xF5B4, 0x91AF, 0xF5B5, 0x91B0, 0xE176, 0x91B1, 0xE177, 0x91B2, 0xE178, + 0x91B3, 0xE179, 0x91B4, 0xF5B7, 0x91B5, 0xF5B6, 0x91B6, 0xE17A, 0x91B7, 0xE17B, 0x91B8, 0xE17C, 0x91B9, 0xE17D, 0x91BA, 0xF5B8, + 0x91BB, 0xE17E, 0x91BC, 0xE180, 0x91BD, 0xE181, 0x91BE, 0xE182, 0x91BF, 0xE183, 0x91C0, 0xE184, 0x91C1, 0xE185, 0x91C2, 0xE186, + 0x91C3, 0xE187, 0x91C4, 0xE188, 0x91C5, 0xE189, 0x91C6, 0xE18A, 0x91C7, 0xB2C9, 0x91C8, 0xE18B, 0x91C9, 0xD3D4, 0x91CA, 0xCACD, + 0x91CB, 0xE18C, 0x91CC, 0xC0EF, 0x91CD, 0xD6D8, 0x91CE, 0xD2B0, 0x91CF, 0xC1BF, 0x91D0, 0xE18D, 0x91D1, 0xBDF0, 0x91D2, 0xE18E, + 0x91D3, 0xE18F, 0x91D4, 0xE190, 0x91D5, 0xE191, 0x91D6, 0xE192, 0x91D7, 0xE193, 0x91D8, 0xE194, 0x91D9, 0xE195, 0x91DA, 0xE196, + 0x91DB, 0xE197, 0x91DC, 0xB8AA, 0x91DD, 0xE198, 0x91DE, 0xE199, 0x91DF, 0xE19A, 0x91E0, 0xE19B, 0x91E1, 0xE19C, 0x91E2, 0xE19D, + 0x91E3, 0xE19E, 0x91E4, 0xE19F, 0x91E5, 0xE1A0, 0x91E6, 0xE240, 0x91E7, 0xE241, 0x91E8, 0xE242, 0x91E9, 0xE243, 0x91EA, 0xE244, + 0x91EB, 0xE245, 0x91EC, 0xE246, 0x91ED, 0xE247, 0x91EE, 0xE248, 0x91EF, 0xE249, 0x91F0, 0xE24A, 0x91F1, 0xE24B, 0x91F2, 0xE24C, + 0x91F3, 0xE24D, 0x91F4, 0xE24E, 0x91F5, 0xE24F, 0x91F6, 0xE250, 0x91F7, 0xE251, 0x91F8, 0xE252, 0x91F9, 0xE253, 0x91FA, 0xE254, + 0x91FB, 0xE255, 0x91FC, 0xE256, 0x91FD, 0xE257, 0x91FE, 0xE258, 0x91FF, 0xE259, 0x9200, 0xE25A, 0x9201, 0xE25B, 0x9202, 0xE25C, + 0x9203, 0xE25D, 0x9204, 0xE25E, 0x9205, 0xE25F, 0x9206, 0xE260, 0x9207, 0xE261, 0x9208, 0xE262, 0x9209, 0xE263, 0x920A, 0xE264, + 0x920B, 0xE265, 0x920C, 0xE266, 0x920D, 0xE267, 0x920E, 0xE268, 0x920F, 0xE269, 0x9210, 0xE26A, 0x9211, 0xE26B, 0x9212, 0xE26C, + 0x9213, 0xE26D, 0x9214, 0xE26E, 0x9215, 0xE26F, 0x9216, 0xE270, 0x9217, 0xE271, 0x9218, 0xE272, 0x9219, 0xE273, 0x921A, 0xE274, + 0x921B, 0xE275, 0x921C, 0xE276, 0x921D, 0xE277, 0x921E, 0xE278, 0x921F, 0xE279, 0x9220, 0xE27A, 0x9221, 0xE27B, 0x9222, 0xE27C, + 0x9223, 0xE27D, 0x9224, 0xE27E, 0x9225, 0xE280, 0x9226, 0xE281, 0x9227, 0xE282, 0x9228, 0xE283, 0x9229, 0xE284, 0x922A, 0xE285, + 0x922B, 0xE286, 0x922C, 0xE287, 0x922D, 0xE288, 0x922E, 0xE289, 0x922F, 0xE28A, 0x9230, 0xE28B, 0x9231, 0xE28C, 0x9232, 0xE28D, + 0x9233, 0xE28E, 0x9234, 0xE28F, 0x9235, 0xE290, 0x9236, 0xE291, 0x9237, 0xE292, 0x9238, 0xE293, 0x9239, 0xE294, 0x923A, 0xE295, + 0x923B, 0xE296, 0x923C, 0xE297, 0x923D, 0xE298, 0x923E, 0xE299, 0x923F, 0xE29A, 0x9240, 0xE29B, 0x9241, 0xE29C, 0x9242, 0xE29D, + 0x9243, 0xE29E, 0x9244, 0xE29F, 0x9245, 0xE2A0, 0x9246, 0xE340, 0x9247, 0xE341, 0x9248, 0xE342, 0x9249, 0xE343, 0x924A, 0xE344, + 0x924B, 0xE345, 0x924C, 0xE346, 0x924D, 0xE347, 0x924E, 0xE348, 0x924F, 0xE349, 0x9250, 0xE34A, 0x9251, 0xE34B, 0x9252, 0xE34C, + 0x9253, 0xE34D, 0x9254, 0xE34E, 0x9255, 0xE34F, 0x9256, 0xE350, 0x9257, 0xE351, 0x9258, 0xE352, 0x9259, 0xE353, 0x925A, 0xE354, + 0x925B, 0xE355, 0x925C, 0xE356, 0x925D, 0xE357, 0x925E, 0xE358, 0x925F, 0xE359, 0x9260, 0xE35A, 0x9261, 0xE35B, 0x9262, 0xE35C, + 0x9263, 0xE35D, 0x9264, 0xE35E, 0x9265, 0xE35F, 0x9266, 0xE360, 0x9267, 0xE361, 0x9268, 0xE362, 0x9269, 0xE363, 0x926A, 0xE364, + 0x926B, 0xE365, 0x926C, 0xE366, 0x926D, 0xE367, 0x926E, 0xE368, 0x926F, 0xE369, 0x9270, 0xE36A, 0x9271, 0xE36B, 0x9272, 0xE36C, + 0x9273, 0xE36D, 0x9274, 0xBCF8, 0x9275, 0xE36E, 0x9276, 0xE36F, 0x9277, 0xE370, 0x9278, 0xE371, 0x9279, 0xE372, 0x927A, 0xE373, + 0x927B, 0xE374, 0x927C, 0xE375, 0x927D, 0xE376, 0x927E, 0xE377, 0x927F, 0xE378, 0x9280, 0xE379, 0x9281, 0xE37A, 0x9282, 0xE37B, + 0x9283, 0xE37C, 0x9284, 0xE37D, 0x9285, 0xE37E, 0x9286, 0xE380, 0x9287, 0xE381, 0x9288, 0xE382, 0x9289, 0xE383, 0x928A, 0xE384, + 0x928B, 0xE385, 0x928C, 0xE386, 0x928D, 0xE387, 0x928E, 0xF6C6, 0x928F, 0xE388, 0x9290, 0xE389, 0x9291, 0xE38A, 0x9292, 0xE38B, + 0x9293, 0xE38C, 0x9294, 0xE38D, 0x9295, 0xE38E, 0x9296, 0xE38F, 0x9297, 0xE390, 0x9298, 0xE391, 0x9299, 0xE392, 0x929A, 0xE393, + 0x929B, 0xE394, 0x929C, 0xE395, 0x929D, 0xE396, 0x929E, 0xE397, 0x929F, 0xE398, 0x92A0, 0xE399, 0x92A1, 0xE39A, 0x92A2, 0xE39B, + 0x92A3, 0xE39C, 0x92A4, 0xE39D, 0x92A5, 0xE39E, 0x92A6, 0xE39F, 0x92A7, 0xE3A0, 0x92A8, 0xE440, 0x92A9, 0xE441, 0x92AA, 0xE442, + 0x92AB, 0xE443, 0x92AC, 0xE444, 0x92AD, 0xE445, 0x92AE, 0xF6C7, 0x92AF, 0xE446, 0x92B0, 0xE447, 0x92B1, 0xE448, 0x92B2, 0xE449, + 0x92B3, 0xE44A, 0x92B4, 0xE44B, 0x92B5, 0xE44C, 0x92B6, 0xE44D, 0x92B7, 0xE44E, 0x92B8, 0xE44F, 0x92B9, 0xE450, 0x92BA, 0xE451, + 0x92BB, 0xE452, 0x92BC, 0xE453, 0x92BD, 0xE454, 0x92BE, 0xE455, 0x92BF, 0xE456, 0x92C0, 0xE457, 0x92C1, 0xE458, 0x92C2, 0xE459, + 0x92C3, 0xE45A, 0x92C4, 0xE45B, 0x92C5, 0xE45C, 0x92C6, 0xE45D, 0x92C7, 0xE45E, 0x92C8, 0xF6C8, 0x92C9, 0xE45F, 0x92CA, 0xE460, + 0x92CB, 0xE461, 0x92CC, 0xE462, 0x92CD, 0xE463, 0x92CE, 0xE464, 0x92CF, 0xE465, 0x92D0, 0xE466, 0x92D1, 0xE467, 0x92D2, 0xE468, + 0x92D3, 0xE469, 0x92D4, 0xE46A, 0x92D5, 0xE46B, 0x92D6, 0xE46C, 0x92D7, 0xE46D, 0x92D8, 0xE46E, 0x92D9, 0xE46F, 0x92DA, 0xE470, + 0x92DB, 0xE471, 0x92DC, 0xE472, 0x92DD, 0xE473, 0x92DE, 0xE474, 0x92DF, 0xE475, 0x92E0, 0xE476, 0x92E1, 0xE477, 0x92E2, 0xE478, + 0x92E3, 0xE479, 0x92E4, 0xE47A, 0x92E5, 0xE47B, 0x92E6, 0xE47C, 0x92E7, 0xE47D, 0x92E8, 0xE47E, 0x92E9, 0xE480, 0x92EA, 0xE481, + 0x92EB, 0xE482, 0x92EC, 0xE483, 0x92ED, 0xE484, 0x92EE, 0xE485, 0x92EF, 0xE486, 0x92F0, 0xE487, 0x92F1, 0xE488, 0x92F2, 0xE489, + 0x92F3, 0xE48A, 0x92F4, 0xE48B, 0x92F5, 0xE48C, 0x92F6, 0xE48D, 0x92F7, 0xE48E, 0x92F8, 0xE48F, 0x92F9, 0xE490, 0x92FA, 0xE491, + 0x92FB, 0xE492, 0x92FC, 0xE493, 0x92FD, 0xE494, 0x92FE, 0xE495, 0x92FF, 0xE496, 0x9300, 0xE497, 0x9301, 0xE498, 0x9302, 0xE499, + 0x9303, 0xE49A, 0x9304, 0xE49B, 0x9305, 0xE49C, 0x9306, 0xE49D, 0x9307, 0xE49E, 0x9308, 0xE49F, 0x9309, 0xE4A0, 0x930A, 0xE540, + 0x930B, 0xE541, 0x930C, 0xE542, 0x930D, 0xE543, 0x930E, 0xE544, 0x930F, 0xE545, 0x9310, 0xE546, 0x9311, 0xE547, 0x9312, 0xE548, + 0x9313, 0xE549, 0x9314, 0xE54A, 0x9315, 0xE54B, 0x9316, 0xE54C, 0x9317, 0xE54D, 0x9318, 0xE54E, 0x9319, 0xE54F, 0x931A, 0xE550, + 0x931B, 0xE551, 0x931C, 0xE552, 0x931D, 0xE553, 0x931E, 0xE554, 0x931F, 0xE555, 0x9320, 0xE556, 0x9321, 0xE557, 0x9322, 0xE558, + 0x9323, 0xE559, 0x9324, 0xE55A, 0x9325, 0xE55B, 0x9326, 0xE55C, 0x9327, 0xE55D, 0x9328, 0xE55E, 0x9329, 0xE55F, 0x932A, 0xE560, + 0x932B, 0xE561, 0x932C, 0xE562, 0x932D, 0xE563, 0x932E, 0xE564, 0x932F, 0xE565, 0x9330, 0xE566, 0x9331, 0xE567, 0x9332, 0xE568, + 0x9333, 0xE569, 0x9334, 0xE56A, 0x9335, 0xE56B, 0x9336, 0xE56C, 0x9337, 0xE56D, 0x9338, 0xE56E, 0x9339, 0xE56F, 0x933A, 0xE570, + 0x933B, 0xE571, 0x933C, 0xE572, 0x933D, 0xE573, 0x933E, 0xF6C9, 0x933F, 0xE574, 0x9340, 0xE575, 0x9341, 0xE576, 0x9342, 0xE577, + 0x9343, 0xE578, 0x9344, 0xE579, 0x9345, 0xE57A, 0x9346, 0xE57B, 0x9347, 0xE57C, 0x9348, 0xE57D, 0x9349, 0xE57E, 0x934A, 0xE580, + 0x934B, 0xE581, 0x934C, 0xE582, 0x934D, 0xE583, 0x934E, 0xE584, 0x934F, 0xE585, 0x9350, 0xE586, 0x9351, 0xE587, 0x9352, 0xE588, + 0x9353, 0xE589, 0x9354, 0xE58A, 0x9355, 0xE58B, 0x9356, 0xE58C, 0x9357, 0xE58D, 0x9358, 0xE58E, 0x9359, 0xE58F, 0x935A, 0xE590, + 0x935B, 0xE591, 0x935C, 0xE592, 0x935D, 0xE593, 0x935E, 0xE594, 0x935F, 0xE595, 0x9360, 0xE596, 0x9361, 0xE597, 0x9362, 0xE598, + 0x9363, 0xE599, 0x9364, 0xE59A, 0x9365, 0xE59B, 0x9366, 0xE59C, 0x9367, 0xE59D, 0x9368, 0xE59E, 0x9369, 0xE59F, 0x936A, 0xF6CA, + 0x936B, 0xE5A0, 0x936C, 0xE640, 0x936D, 0xE641, 0x936E, 0xE642, 0x936F, 0xE643, 0x9370, 0xE644, 0x9371, 0xE645, 0x9372, 0xE646, + 0x9373, 0xE647, 0x9374, 0xE648, 0x9375, 0xE649, 0x9376, 0xE64A, 0x9377, 0xE64B, 0x9378, 0xE64C, 0x9379, 0xE64D, 0x937A, 0xE64E, + 0x937B, 0xE64F, 0x937C, 0xE650, 0x937D, 0xE651, 0x937E, 0xE652, 0x937F, 0xE653, 0x9380, 0xE654, 0x9381, 0xE655, 0x9382, 0xE656, + 0x9383, 0xE657, 0x9384, 0xE658, 0x9385, 0xE659, 0x9386, 0xE65A, 0x9387, 0xE65B, 0x9388, 0xE65C, 0x9389, 0xE65D, 0x938A, 0xE65E, + 0x938B, 0xE65F, 0x938C, 0xE660, 0x938D, 0xE661, 0x938E, 0xE662, 0x938F, 0xF6CC, 0x9390, 0xE663, 0x9391, 0xE664, 0x9392, 0xE665, + 0x9393, 0xE666, 0x9394, 0xE667, 0x9395, 0xE668, 0x9396, 0xE669, 0x9397, 0xE66A, 0x9398, 0xE66B, 0x9399, 0xE66C, 0x939A, 0xE66D, + 0x939B, 0xE66E, 0x939C, 0xE66F, 0x939D, 0xE670, 0x939E, 0xE671, 0x939F, 0xE672, 0x93A0, 0xE673, 0x93A1, 0xE674, 0x93A2, 0xE675, + 0x93A3, 0xE676, 0x93A4, 0xE677, 0x93A5, 0xE678, 0x93A6, 0xE679, 0x93A7, 0xE67A, 0x93A8, 0xE67B, 0x93A9, 0xE67C, 0x93AA, 0xE67D, + 0x93AB, 0xE67E, 0x93AC, 0xE680, 0x93AD, 0xE681, 0x93AE, 0xE682, 0x93AF, 0xE683, 0x93B0, 0xE684, 0x93B1, 0xE685, 0x93B2, 0xE686, + 0x93B3, 0xE687, 0x93B4, 0xE688, 0x93B5, 0xE689, 0x93B6, 0xE68A, 0x93B7, 0xE68B, 0x93B8, 0xE68C, 0x93B9, 0xE68D, 0x93BA, 0xE68E, + 0x93BB, 0xE68F, 0x93BC, 0xE690, 0x93BD, 0xE691, 0x93BE, 0xE692, 0x93BF, 0xE693, 0x93C0, 0xE694, 0x93C1, 0xE695, 0x93C2, 0xE696, + 0x93C3, 0xE697, 0x93C4, 0xE698, 0x93C5, 0xE699, 0x93C6, 0xE69A, 0x93C7, 0xE69B, 0x93C8, 0xE69C, 0x93C9, 0xE69D, 0x93CA, 0xF6CB, + 0x93CB, 0xE69E, 0x93CC, 0xE69F, 0x93CD, 0xE6A0, 0x93CE, 0xE740, 0x93CF, 0xE741, 0x93D0, 0xE742, 0x93D1, 0xE743, 0x93D2, 0xE744, + 0x93D3, 0xE745, 0x93D4, 0xE746, 0x93D5, 0xE747, 0x93D6, 0xF7E9, 0x93D7, 0xE748, 0x93D8, 0xE749, 0x93D9, 0xE74A, 0x93DA, 0xE74B, + 0x93DB, 0xE74C, 0x93DC, 0xE74D, 0x93DD, 0xE74E, 0x93DE, 0xE74F, 0x93DF, 0xE750, 0x93E0, 0xE751, 0x93E1, 0xE752, 0x93E2, 0xE753, + 0x93E3, 0xE754, 0x93E4, 0xE755, 0x93E5, 0xE756, 0x93E6, 0xE757, 0x93E7, 0xE758, 0x93E8, 0xE759, 0x93E9, 0xE75A, 0x93EA, 0xE75B, + 0x93EB, 0xE75C, 0x93EC, 0xE75D, 0x93ED, 0xE75E, 0x93EE, 0xE75F, 0x93EF, 0xE760, 0x93F0, 0xE761, 0x93F1, 0xE762, 0x93F2, 0xE763, + 0x93F3, 0xE764, 0x93F4, 0xE765, 0x93F5, 0xE766, 0x93F6, 0xE767, 0x93F7, 0xE768, 0x93F8, 0xE769, 0x93F9, 0xE76A, 0x93FA, 0xE76B, + 0x93FB, 0xE76C, 0x93FC, 0xE76D, 0x93FD, 0xE76E, 0x93FE, 0xE76F, 0x93FF, 0xE770, 0x9400, 0xE771, 0x9401, 0xE772, 0x9402, 0xE773, + 0x9403, 0xE774, 0x9404, 0xE775, 0x9405, 0xE776, 0x9406, 0xE777, 0x9407, 0xE778, 0x9408, 0xE779, 0x9409, 0xE77A, 0x940A, 0xE77B, + 0x940B, 0xE77C, 0x940C, 0xE77D, 0x940D, 0xE77E, 0x940E, 0xE780, 0x940F, 0xE781, 0x9410, 0xE782, 0x9411, 0xE783, 0x9412, 0xE784, + 0x9413, 0xE785, 0x9414, 0xE786, 0x9415, 0xE787, 0x9416, 0xE788, 0x9417, 0xE789, 0x9418, 0xE78A, 0x9419, 0xE78B, 0x941A, 0xE78C, + 0x941B, 0xE78D, 0x941C, 0xE78E, 0x941D, 0xE78F, 0x941E, 0xE790, 0x941F, 0xE791, 0x9420, 0xE792, 0x9421, 0xE793, 0x9422, 0xE794, + 0x9423, 0xE795, 0x9424, 0xE796, 0x9425, 0xE797, 0x9426, 0xE798, 0x9427, 0xE799, 0x9428, 0xE79A, 0x9429, 0xE79B, 0x942A, 0xE79C, + 0x942B, 0xE79D, 0x942C, 0xE79E, 0x942D, 0xE79F, 0x942E, 0xE7A0, 0x942F, 0xE840, 0x9430, 0xE841, 0x9431, 0xE842, 0x9432, 0xE843, + 0x9433, 0xE844, 0x9434, 0xE845, 0x9435, 0xE846, 0x9436, 0xE847, 0x9437, 0xE848, 0x9438, 0xE849, 0x9439, 0xE84A, 0x943A, 0xE84B, + 0x943B, 0xE84C, 0x943C, 0xE84D, 0x943D, 0xE84E, 0x943E, 0xF6CD, 0x943F, 0xE84F, 0x9440, 0xE850, 0x9441, 0xE851, 0x9442, 0xE852, + 0x9443, 0xE853, 0x9444, 0xE854, 0x9445, 0xE855, 0x9446, 0xE856, 0x9447, 0xE857, 0x9448, 0xE858, 0x9449, 0xE859, 0x944A, 0xE85A, + 0x944B, 0xE85B, 0x944C, 0xE85C, 0x944D, 0xE85D, 0x944E, 0xE85E, 0x944F, 0xE85F, 0x9450, 0xE860, 0x9451, 0xE861, 0x9452, 0xE862, + 0x9453, 0xE863, 0x9454, 0xE864, 0x9455, 0xE865, 0x9456, 0xE866, 0x9457, 0xE867, 0x9458, 0xE868, 0x9459, 0xE869, 0x945A, 0xE86A, + 0x945B, 0xE86B, 0x945C, 0xE86C, 0x945D, 0xE86D, 0x945E, 0xE86E, 0x945F, 0xE86F, 0x9460, 0xE870, 0x9461, 0xE871, 0x9462, 0xE872, + 0x9463, 0xE873, 0x9464, 0xE874, 0x9465, 0xE875, 0x9466, 0xE876, 0x9467, 0xE877, 0x9468, 0xE878, 0x9469, 0xE879, 0x946A, 0xE87A, + 0x946B, 0xF6CE, 0x946C, 0xE87B, 0x946D, 0xE87C, 0x946E, 0xE87D, 0x946F, 0xE87E, 0x9470, 0xE880, 0x9471, 0xE881, 0x9472, 0xE882, + 0x9473, 0xE883, 0x9474, 0xE884, 0x9475, 0xE885, 0x9476, 0xE886, 0x9477, 0xE887, 0x9478, 0xE888, 0x9479, 0xE889, 0x947A, 0xE88A, + 0x947B, 0xE88B, 0x947C, 0xE88C, 0x947D, 0xE88D, 0x947E, 0xE88E, 0x947F, 0xE88F, 0x9480, 0xE890, 0x9481, 0xE891, 0x9482, 0xE892, + 0x9483, 0xE893, 0x9484, 0xE894, 0x9485, 0xEEC4, 0x9486, 0xEEC5, 0x9487, 0xEEC6, 0x9488, 0xD5EB, 0x9489, 0xB6A4, 0x948A, 0xEEC8, + 0x948B, 0xEEC7, 0x948C, 0xEEC9, 0x948D, 0xEECA, 0x948E, 0xC7A5, 0x948F, 0xEECB, 0x9490, 0xEECC, 0x9491, 0xE895, 0x9492, 0xB7B0, + 0x9493, 0xB5F6, 0x9494, 0xEECD, 0x9495, 0xEECF, 0x9496, 0xE896, 0x9497, 0xEECE, 0x9498, 0xE897, 0x9499, 0xB8C6, 0x949A, 0xEED0, + 0x949B, 0xEED1, 0x949C, 0xEED2, 0x949D, 0xB6DB, 0x949E, 0xB3AE, 0x949F, 0xD6D3, 0x94A0, 0xC4C6, 0x94A1, 0xB1B5, 0x94A2, 0xB8D6, + 0x94A3, 0xEED3, 0x94A4, 0xEED4, 0x94A5, 0xD4BF, 0x94A6, 0xC7D5, 0x94A7, 0xBEFB, 0x94A8, 0xCED9, 0x94A9, 0xB9B3, 0x94AA, 0xEED6, + 0x94AB, 0xEED5, 0x94AC, 0xEED8, 0x94AD, 0xEED7, 0x94AE, 0xC5A5, 0x94AF, 0xEED9, 0x94B0, 0xEEDA, 0x94B1, 0xC7AE, 0x94B2, 0xEEDB, + 0x94B3, 0xC7AF, 0x94B4, 0xEEDC, 0x94B5, 0xB2A7, 0x94B6, 0xEEDD, 0x94B7, 0xEEDE, 0x94B8, 0xEEDF, 0x94B9, 0xEEE0, 0x94BA, 0xEEE1, + 0x94BB, 0xD7EA, 0x94BC, 0xEEE2, 0x94BD, 0xEEE3, 0x94BE, 0xBCD8, 0x94BF, 0xEEE4, 0x94C0, 0xD3CB, 0x94C1, 0xCCFA, 0x94C2, 0xB2AC, + 0x94C3, 0xC1E5, 0x94C4, 0xEEE5, 0x94C5, 0xC7A6, 0x94C6, 0xC3AD, 0x94C7, 0xE898, 0x94C8, 0xEEE6, 0x94C9, 0xEEE7, 0x94CA, 0xEEE8, + 0x94CB, 0xEEE9, 0x94CC, 0xEEEA, 0x94CD, 0xEEEB, 0x94CE, 0xEEEC, 0x94CF, 0xE899, 0x94D0, 0xEEED, 0x94D1, 0xEEEE, 0x94D2, 0xEEEF, + 0x94D3, 0xE89A, 0x94D4, 0xE89B, 0x94D5, 0xEEF0, 0x94D6, 0xEEF1, 0x94D7, 0xEEF2, 0x94D8, 0xEEF4, 0x94D9, 0xEEF3, 0x94DA, 0xE89C, + 0x94DB, 0xEEF5, 0x94DC, 0xCDAD, 0x94DD, 0xC2C1, 0x94DE, 0xEEF6, 0x94DF, 0xEEF7, 0x94E0, 0xEEF8, 0x94E1, 0xD5A1, 0x94E2, 0xEEF9, + 0x94E3, 0xCFB3, 0x94E4, 0xEEFA, 0x94E5, 0xEEFB, 0x94E6, 0xE89D, 0x94E7, 0xEEFC, 0x94E8, 0xEEFD, 0x94E9, 0xEFA1, 0x94EA, 0xEEFE, + 0x94EB, 0xEFA2, 0x94EC, 0xB8F5, 0x94ED, 0xC3FA, 0x94EE, 0xEFA3, 0x94EF, 0xEFA4, 0x94F0, 0xBDC2, 0x94F1, 0xD2BF, 0x94F2, 0xB2F9, + 0x94F3, 0xEFA5, 0x94F4, 0xEFA6, 0x94F5, 0xEFA7, 0x94F6, 0xD2F8, 0x94F7, 0xEFA8, 0x94F8, 0xD6FD, 0x94F9, 0xEFA9, 0x94FA, 0xC6CC, + 0x94FB, 0xE89E, 0x94FC, 0xEFAA, 0x94FD, 0xEFAB, 0x94FE, 0xC1B4, 0x94FF, 0xEFAC, 0x9500, 0xCFFA, 0x9501, 0xCBF8, 0x9502, 0xEFAE, + 0x9503, 0xEFAD, 0x9504, 0xB3FA, 0x9505, 0xB9F8, 0x9506, 0xEFAF, 0x9507, 0xEFB0, 0x9508, 0xD0E2, 0x9509, 0xEFB1, 0x950A, 0xEFB2, + 0x950B, 0xB7E6, 0x950C, 0xD0BF, 0x950D, 0xEFB3, 0x950E, 0xEFB4, 0x950F, 0xEFB5, 0x9510, 0xC8F1, 0x9511, 0xCCE0, 0x9512, 0xEFB6, + 0x9513, 0xEFB7, 0x9514, 0xEFB8, 0x9515, 0xEFB9, 0x9516, 0xEFBA, 0x9517, 0xD5E0, 0x9518, 0xEFBB, 0x9519, 0xB4ED, 0x951A, 0xC3AA, + 0x951B, 0xEFBC, 0x951C, 0xE89F, 0x951D, 0xEFBD, 0x951E, 0xEFBE, 0x951F, 0xEFBF, 0x9520, 0xE8A0, 0x9521, 0xCEFD, 0x9522, 0xEFC0, + 0x9523, 0xC2E0, 0x9524, 0xB4B8, 0x9525, 0xD7B6, 0x9526, 0xBDF5, 0x9527, 0xE940, 0x9528, 0xCFC7, 0x9529, 0xEFC3, 0x952A, 0xEFC1, + 0x952B, 0xEFC2, 0x952C, 0xEFC4, 0x952D, 0xB6A7, 0x952E, 0xBCFC, 0x952F, 0xBEE2, 0x9530, 0xC3CC, 0x9531, 0xEFC5, 0x9532, 0xEFC6, + 0x9533, 0xE941, 0x9534, 0xEFC7, 0x9535, 0xEFCF, 0x9536, 0xEFC8, 0x9537, 0xEFC9, 0x9538, 0xEFCA, 0x9539, 0xC7C2, 0x953A, 0xEFF1, + 0x953B, 0xB6CD, 0x953C, 0xEFCB, 0x953D, 0xE942, 0x953E, 0xEFCC, 0x953F, 0xEFCD, 0x9540, 0xB6C6, 0x9541, 0xC3BE, 0x9542, 0xEFCE, + 0x9543, 0xE943, 0x9544, 0xEFD0, 0x9545, 0xEFD1, 0x9546, 0xEFD2, 0x9547, 0xD5F2, 0x9548, 0xE944, 0x9549, 0xEFD3, 0x954A, 0xC4F7, + 0x954B, 0xE945, 0x954C, 0xEFD4, 0x954D, 0xC4F8, 0x954E, 0xEFD5, 0x954F, 0xEFD6, 0x9550, 0xB8E4, 0x9551, 0xB0F7, 0x9552, 0xEFD7, + 0x9553, 0xEFD8, 0x9554, 0xEFD9, 0x9555, 0xE946, 0x9556, 0xEFDA, 0x9557, 0xEFDB, 0x9558, 0xEFDC, 0x9559, 0xEFDD, 0x955A, 0xE947, + 0x955B, 0xEFDE, 0x955C, 0xBEB5, 0x955D, 0xEFE1, 0x955E, 0xEFDF, 0x955F, 0xEFE0, 0x9560, 0xE948, 0x9561, 0xEFE2, 0x9562, 0xEFE3, + 0x9563, 0xC1CD, 0x9564, 0xEFE4, 0x9565, 0xEFE5, 0x9566, 0xEFE6, 0x9567, 0xEFE7, 0x9568, 0xEFE8, 0x9569, 0xEFE9, 0x956A, 0xEFEA, + 0x956B, 0xEFEB, 0x956C, 0xEFEC, 0x956D, 0xC0D8, 0x956E, 0xE949, 0x956F, 0xEFED, 0x9570, 0xC1AD, 0x9571, 0xEFEE, 0x9572, 0xEFEF, + 0x9573, 0xEFF0, 0x9574, 0xE94A, 0x9575, 0xE94B, 0x9576, 0xCFE2, 0x9577, 0xE94C, 0x9578, 0xE94D, 0x9579, 0xE94E, 0x957A, 0xE94F, + 0x957B, 0xE950, 0x957C, 0xE951, 0x957D, 0xE952, 0x957E, 0xE953, 0x957F, 0xB3A4, 0x9580, 0xE954, 0x9581, 0xE955, 0x9582, 0xE956, + 0x9583, 0xE957, 0x9584, 0xE958, 0x9585, 0xE959, 0x9586, 0xE95A, 0x9587, 0xE95B, 0x9588, 0xE95C, 0x9589, 0xE95D, 0x958A, 0xE95E, + 0x958B, 0xE95F, 0x958C, 0xE960, 0x958D, 0xE961, 0x958E, 0xE962, 0x958F, 0xE963, 0x9590, 0xE964, 0x9591, 0xE965, 0x9592, 0xE966, + 0x9593, 0xE967, 0x9594, 0xE968, 0x9595, 0xE969, 0x9596, 0xE96A, 0x9597, 0xE96B, 0x9598, 0xE96C, 0x9599, 0xE96D, 0x959A, 0xE96E, + 0x959B, 0xE96F, 0x959C, 0xE970, 0x959D, 0xE971, 0x959E, 0xE972, 0x959F, 0xE973, 0x95A0, 0xE974, 0x95A1, 0xE975, 0x95A2, 0xE976, + 0x95A3, 0xE977, 0x95A4, 0xE978, 0x95A5, 0xE979, 0x95A6, 0xE97A, 0x95A7, 0xE97B, 0x95A8, 0xE97C, 0x95A9, 0xE97D, 0x95AA, 0xE97E, + 0x95AB, 0xE980, 0x95AC, 0xE981, 0x95AD, 0xE982, 0x95AE, 0xE983, 0x95AF, 0xE984, 0x95B0, 0xE985, 0x95B1, 0xE986, 0x95B2, 0xE987, + 0x95B3, 0xE988, 0x95B4, 0xE989, 0x95B5, 0xE98A, 0x95B6, 0xE98B, 0x95B7, 0xE98C, 0x95B8, 0xE98D, 0x95B9, 0xE98E, 0x95BA, 0xE98F, + 0x95BB, 0xE990, 0x95BC, 0xE991, 0x95BD, 0xE992, 0x95BE, 0xE993, 0x95BF, 0xE994, 0x95C0, 0xE995, 0x95C1, 0xE996, 0x95C2, 0xE997, + 0x95C3, 0xE998, 0x95C4, 0xE999, 0x95C5, 0xE99A, 0x95C6, 0xE99B, 0x95C7, 0xE99C, 0x95C8, 0xE99D, 0x95C9, 0xE99E, 0x95CA, 0xE99F, + 0x95CB, 0xE9A0, 0x95CC, 0xEA40, 0x95CD, 0xEA41, 0x95CE, 0xEA42, 0x95CF, 0xEA43, 0x95D0, 0xEA44, 0x95D1, 0xEA45, 0x95D2, 0xEA46, + 0x95D3, 0xEA47, 0x95D4, 0xEA48, 0x95D5, 0xEA49, 0x95D6, 0xEA4A, 0x95D7, 0xEA4B, 0x95D8, 0xEA4C, 0x95D9, 0xEA4D, 0x95DA, 0xEA4E, + 0x95DB, 0xEA4F, 0x95DC, 0xEA50, 0x95DD, 0xEA51, 0x95DE, 0xEA52, 0x95DF, 0xEA53, 0x95E0, 0xEA54, 0x95E1, 0xEA55, 0x95E2, 0xEA56, + 0x95E3, 0xEA57, 0x95E4, 0xEA58, 0x95E5, 0xEA59, 0x95E6, 0xEA5A, 0x95E7, 0xEA5B, 0x95E8, 0xC3C5, 0x95E9, 0xE3C5, 0x95EA, 0xC9C1, + 0x95EB, 0xE3C6, 0x95EC, 0xEA5C, 0x95ED, 0xB1D5, 0x95EE, 0xCECA, 0x95EF, 0xB4B3, 0x95F0, 0xC8F2, 0x95F1, 0xE3C7, 0x95F2, 0xCFD0, + 0x95F3, 0xE3C8, 0x95F4, 0xBCE4, 0x95F5, 0xE3C9, 0x95F6, 0xE3CA, 0x95F7, 0xC3C6, 0x95F8, 0xD5A2, 0x95F9, 0xC4D6, 0x95FA, 0xB9EB, + 0x95FB, 0xCEC5, 0x95FC, 0xE3CB, 0x95FD, 0xC3F6, 0x95FE, 0xE3CC, 0x95FF, 0xEA5D, 0x9600, 0xB7A7, 0x9601, 0xB8F3, 0x9602, 0xBAD2, + 0x9603, 0xE3CD, 0x9604, 0xE3CE, 0x9605, 0xD4C4, 0x9606, 0xE3CF, 0x9607, 0xEA5E, 0x9608, 0xE3D0, 0x9609, 0xD1CB, 0x960A, 0xE3D1, + 0x960B, 0xE3D2, 0x960C, 0xE3D3, 0x960D, 0xE3D4, 0x960E, 0xD1D6, 0x960F, 0xE3D5, 0x9610, 0xB2FB, 0x9611, 0xC0BB, 0x9612, 0xE3D6, + 0x9613, 0xEA5F, 0x9614, 0xC0AB, 0x9615, 0xE3D7, 0x9616, 0xE3D8, 0x9617, 0xE3D9, 0x9618, 0xEA60, 0x9619, 0xE3DA, 0x961A, 0xE3DB, + 0x961B, 0xEA61, 0x961C, 0xB8B7, 0x961D, 0xDAE2, 0x961E, 0xEA62, 0x961F, 0xB6D3, 0x9620, 0xEA63, 0x9621, 0xDAE4, 0x9622, 0xDAE3, + 0x9623, 0xEA64, 0x9624, 0xEA65, 0x9625, 0xEA66, 0x9626, 0xEA67, 0x9627, 0xEA68, 0x9628, 0xEA69, 0x9629, 0xEA6A, 0x962A, 0xDAE6, + 0x962B, 0xEA6B, 0x962C, 0xEA6C, 0x962D, 0xEA6D, 0x962E, 0xC8EE, 0x962F, 0xEA6E, 0x9630, 0xEA6F, 0x9631, 0xDAE5, 0x9632, 0xB7C0, + 0x9633, 0xD1F4, 0x9634, 0xD2F5, 0x9635, 0xD5F3, 0x9636, 0xBDD7, 0x9637, 0xEA70, 0x9638, 0xEA71, 0x9639, 0xEA72, 0x963A, 0xEA73, + 0x963B, 0xD7E8, 0x963C, 0xDAE8, 0x963D, 0xDAE7, 0x963E, 0xEA74, 0x963F, 0xB0A2, 0x9640, 0xCDD3, 0x9641, 0xEA75, 0x9642, 0xDAE9, + 0x9643, 0xEA76, 0x9644, 0xB8BD, 0x9645, 0xBCCA, 0x9646, 0xC2BD, 0x9647, 0xC2A4, 0x9648, 0xB3C2, 0x9649, 0xDAEA, 0x964A, 0xEA77, + 0x964B, 0xC2AA, 0x964C, 0xC4B0, 0x964D, 0xBDB5, 0x964E, 0xEA78, 0x964F, 0xEA79, 0x9650, 0xCFDE, 0x9651, 0xEA7A, 0x9652, 0xEA7B, + 0x9653, 0xEA7C, 0x9654, 0xDAEB, 0x9655, 0xC9C2, 0x9656, 0xEA7D, 0x9657, 0xEA7E, 0x9658, 0xEA80, 0x9659, 0xEA81, 0x965A, 0xEA82, + 0x965B, 0xB1DD, 0x965C, 0xEA83, 0x965D, 0xEA84, 0x965E, 0xEA85, 0x965F, 0xDAEC, 0x9660, 0xEA86, 0x9661, 0xB6B8, 0x9662, 0xD4BA, + 0x9663, 0xEA87, 0x9664, 0xB3FD, 0x9665, 0xEA88, 0x9666, 0xEA89, 0x9667, 0xDAED, 0x9668, 0xD4C9, 0x9669, 0xCFD5, 0x966A, 0xC5E3, + 0x966B, 0xEA8A, 0x966C, 0xDAEE, 0x966D, 0xEA8B, 0x966E, 0xEA8C, 0x966F, 0xEA8D, 0x9670, 0xEA8E, 0x9671, 0xEA8F, 0x9672, 0xDAEF, + 0x9673, 0xEA90, 0x9674, 0xDAF0, 0x9675, 0xC1EA, 0x9676, 0xCCD5, 0x9677, 0xCFDD, 0x9678, 0xEA91, 0x9679, 0xEA92, 0x967A, 0xEA93, + 0x967B, 0xEA94, 0x967C, 0xEA95, 0x967D, 0xEA96, 0x967E, 0xEA97, 0x967F, 0xEA98, 0x9680, 0xEA99, 0x9681, 0xEA9A, 0x9682, 0xEA9B, + 0x9683, 0xEA9C, 0x9684, 0xEA9D, 0x9685, 0xD3E7, 0x9686, 0xC2A1, 0x9687, 0xEA9E, 0x9688, 0xDAF1, 0x9689, 0xEA9F, 0x968A, 0xEAA0, + 0x968B, 0xCBE5, 0x968C, 0xEB40, 0x968D, 0xDAF2, 0x968E, 0xEB41, 0x968F, 0xCBE6, 0x9690, 0xD2FE, 0x9691, 0xEB42, 0x9692, 0xEB43, + 0x9693, 0xEB44, 0x9694, 0xB8F4, 0x9695, 0xEB45, 0x9696, 0xEB46, 0x9697, 0xDAF3, 0x9698, 0xB0AF, 0x9699, 0xCFB6, 0x969A, 0xEB47, + 0x969B, 0xEB48, 0x969C, 0xD5CF, 0x969D, 0xEB49, 0x969E, 0xEB4A, 0x969F, 0xEB4B, 0x96A0, 0xEB4C, 0x96A1, 0xEB4D, 0x96A2, 0xEB4E, + 0x96A3, 0xEB4F, 0x96A4, 0xEB50, 0x96A5, 0xEB51, 0x96A6, 0xEB52, 0x96A7, 0xCBED, 0x96A8, 0xEB53, 0x96A9, 0xEB54, 0x96AA, 0xEB55, + 0x96AB, 0xEB56, 0x96AC, 0xEB57, 0x96AD, 0xEB58, 0x96AE, 0xEB59, 0x96AF, 0xEB5A, 0x96B0, 0xDAF4, 0x96B1, 0xEB5B, 0x96B2, 0xEB5C, + 0x96B3, 0xE3C4, 0x96B4, 0xEB5D, 0x96B5, 0xEB5E, 0x96B6, 0xC1A5, 0x96B7, 0xEB5F, 0x96B8, 0xEB60, 0x96B9, 0xF6BF, 0x96BA, 0xEB61, + 0x96BB, 0xEB62, 0x96BC, 0xF6C0, 0x96BD, 0xF6C1, 0x96BE, 0xC4D1, 0x96BF, 0xEB63, 0x96C0, 0xC8B8, 0x96C1, 0xD1E3, 0x96C2, 0xEB64, + 0x96C3, 0xEB65, 0x96C4, 0xD0DB, 0x96C5, 0xD1C5, 0x96C6, 0xBCAF, 0x96C7, 0xB9CD, 0x96C8, 0xEB66, 0x96C9, 0xEFF4, 0x96CA, 0xEB67, + 0x96CB, 0xEB68, 0x96CC, 0xB4C6, 0x96CD, 0xD3BA, 0x96CE, 0xF6C2, 0x96CF, 0xB3FB, 0x96D0, 0xEB69, 0x96D1, 0xEB6A, 0x96D2, 0xF6C3, + 0x96D3, 0xEB6B, 0x96D4, 0xEB6C, 0x96D5, 0xB5F1, 0x96D6, 0xEB6D, 0x96D7, 0xEB6E, 0x96D8, 0xEB6F, 0x96D9, 0xEB70, 0x96DA, 0xEB71, + 0x96DB, 0xEB72, 0x96DC, 0xEB73, 0x96DD, 0xEB74, 0x96DE, 0xEB75, 0x96DF, 0xEB76, 0x96E0, 0xF6C5, 0x96E1, 0xEB77, 0x96E2, 0xEB78, + 0x96E3, 0xEB79, 0x96E4, 0xEB7A, 0x96E5, 0xEB7B, 0x96E6, 0xEB7C, 0x96E7, 0xEB7D, 0x96E8, 0xD3EA, 0x96E9, 0xF6A7, 0x96EA, 0xD1A9, + 0x96EB, 0xEB7E, 0x96EC, 0xEB80, 0x96ED, 0xEB81, 0x96EE, 0xEB82, 0x96EF, 0xF6A9, 0x96F0, 0xEB83, 0x96F1, 0xEB84, 0x96F2, 0xEB85, + 0x96F3, 0xF6A8, 0x96F4, 0xEB86, 0x96F5, 0xEB87, 0x96F6, 0xC1E3, 0x96F7, 0xC0D7, 0x96F8, 0xEB88, 0x96F9, 0xB1A2, 0x96FA, 0xEB89, + 0x96FB, 0xEB8A, 0x96FC, 0xEB8B, 0x96FD, 0xEB8C, 0x96FE, 0xCEED, 0x96FF, 0xEB8D, 0x9700, 0xD0E8, 0x9701, 0xF6AB, 0x9702, 0xEB8E, + 0x9703, 0xEB8F, 0x9704, 0xCFF6, 0x9705, 0xEB90, 0x9706, 0xF6AA, 0x9707, 0xD5F0, 0x9708, 0xF6AC, 0x9709, 0xC3B9, 0x970A, 0xEB91, + 0x970B, 0xEB92, 0x970C, 0xEB93, 0x970D, 0xBBF4, 0x970E, 0xF6AE, 0x970F, 0xF6AD, 0x9710, 0xEB94, 0x9711, 0xEB95, 0x9712, 0xEB96, + 0x9713, 0xC4DE, 0x9714, 0xEB97, 0x9715, 0xEB98, 0x9716, 0xC1D8, 0x9717, 0xEB99, 0x9718, 0xEB9A, 0x9719, 0xEB9B, 0x971A, 0xEB9C, + 0x971B, 0xEB9D, 0x971C, 0xCBAA, 0x971D, 0xEB9E, 0x971E, 0xCFBC, 0x971F, 0xEB9F, 0x9720, 0xEBA0, 0x9721, 0xEC40, 0x9722, 0xEC41, + 0x9723, 0xEC42, 0x9724, 0xEC43, 0x9725, 0xEC44, 0x9726, 0xEC45, 0x9727, 0xEC46, 0x9728, 0xEC47, 0x9729, 0xEC48, 0x972A, 0xF6AF, + 0x972B, 0xEC49, 0x972C, 0xEC4A, 0x972D, 0xF6B0, 0x972E, 0xEC4B, 0x972F, 0xEC4C, 0x9730, 0xF6B1, 0x9731, 0xEC4D, 0x9732, 0xC2B6, + 0x9733, 0xEC4E, 0x9734, 0xEC4F, 0x9735, 0xEC50, 0x9736, 0xEC51, 0x9737, 0xEC52, 0x9738, 0xB0D4, 0x9739, 0xC5F9, 0x973A, 0xEC53, + 0x973B, 0xEC54, 0x973C, 0xEC55, 0x973D, 0xEC56, 0x973E, 0xF6B2, 0x973F, 0xEC57, 0x9740, 0xEC58, 0x9741, 0xEC59, 0x9742, 0xEC5A, + 0x9743, 0xEC5B, 0x9744, 0xEC5C, 0x9745, 0xEC5D, 0x9746, 0xEC5E, 0x9747, 0xEC5F, 0x9748, 0xEC60, 0x9749, 0xEC61, 0x974A, 0xEC62, + 0x974B, 0xEC63, 0x974C, 0xEC64, 0x974D, 0xEC65, 0x974E, 0xEC66, 0x974F, 0xEC67, 0x9750, 0xEC68, 0x9751, 0xEC69, 0x9752, 0xC7E0, + 0x9753, 0xF6A6, 0x9754, 0xEC6A, 0x9755, 0xEC6B, 0x9756, 0xBEB8, 0x9757, 0xEC6C, 0x9758, 0xEC6D, 0x9759, 0xBEB2, 0x975A, 0xEC6E, + 0x975B, 0xB5E5, 0x975C, 0xEC6F, 0x975D, 0xEC70, 0x975E, 0xB7C7, 0x975F, 0xEC71, 0x9760, 0xBFBF, 0x9761, 0xC3D2, 0x9762, 0xC3E6, + 0x9763, 0xEC72, 0x9764, 0xEC73, 0x9765, 0xD8CC, 0x9766, 0xEC74, 0x9767, 0xEC75, 0x9768, 0xEC76, 0x9769, 0xB8EF, 0x976A, 0xEC77, + 0x976B, 0xEC78, 0x976C, 0xEC79, 0x976D, 0xEC7A, 0x976E, 0xEC7B, 0x976F, 0xEC7C, 0x9770, 0xEC7D, 0x9771, 0xEC7E, 0x9772, 0xEC80, + 0x9773, 0xBDF9, 0x9774, 0xD1A5, 0x9775, 0xEC81, 0x9776, 0xB0D0, 0x9777, 0xEC82, 0x9778, 0xEC83, 0x9779, 0xEC84, 0x977A, 0xEC85, + 0x977B, 0xEC86, 0x977C, 0xF7B0, 0x977D, 0xEC87, 0x977E, 0xEC88, 0x977F, 0xEC89, 0x9780, 0xEC8A, 0x9781, 0xEC8B, 0x9782, 0xEC8C, + 0x9783, 0xEC8D, 0x9784, 0xEC8E, 0x9785, 0xF7B1, 0x9786, 0xEC8F, 0x9787, 0xEC90, 0x9788, 0xEC91, 0x9789, 0xEC92, 0x978A, 0xEC93, + 0x978B, 0xD0AC, 0x978C, 0xEC94, 0x978D, 0xB0B0, 0x978E, 0xEC95, 0x978F, 0xEC96, 0x9790, 0xEC97, 0x9791, 0xF7B2, 0x9792, 0xF7B3, + 0x9793, 0xEC98, 0x9794, 0xF7B4, 0x9795, 0xEC99, 0x9796, 0xEC9A, 0x9797, 0xEC9B, 0x9798, 0xC7CA, 0x9799, 0xEC9C, 0x979A, 0xEC9D, + 0x979B, 0xEC9E, 0x979C, 0xEC9F, 0x979D, 0xECA0, 0x979E, 0xED40, 0x979F, 0xED41, 0x97A0, 0xBECF, 0x97A1, 0xED42, 0x97A2, 0xED43, + 0x97A3, 0xF7B7, 0x97A4, 0xED44, 0x97A5, 0xED45, 0x97A6, 0xED46, 0x97A7, 0xED47, 0x97A8, 0xED48, 0x97A9, 0xED49, 0x97AA, 0xED4A, + 0x97AB, 0xF7B6, 0x97AC, 0xED4B, 0x97AD, 0xB1DE, 0x97AE, 0xED4C, 0x97AF, 0xF7B5, 0x97B0, 0xED4D, 0x97B1, 0xED4E, 0x97B2, 0xF7B8, + 0x97B3, 0xED4F, 0x97B4, 0xF7B9, 0x97B5, 0xED50, 0x97B6, 0xED51, 0x97B7, 0xED52, 0x97B8, 0xED53, 0x97B9, 0xED54, 0x97BA, 0xED55, + 0x97BB, 0xED56, 0x97BC, 0xED57, 0x97BD, 0xED58, 0x97BE, 0xED59, 0x97BF, 0xED5A, 0x97C0, 0xED5B, 0x97C1, 0xED5C, 0x97C2, 0xED5D, + 0x97C3, 0xED5E, 0x97C4, 0xED5F, 0x97C5, 0xED60, 0x97C6, 0xED61, 0x97C7, 0xED62, 0x97C8, 0xED63, 0x97C9, 0xED64, 0x97CA, 0xED65, + 0x97CB, 0xED66, 0x97CC, 0xED67, 0x97CD, 0xED68, 0x97CE, 0xED69, 0x97CF, 0xED6A, 0x97D0, 0xED6B, 0x97D1, 0xED6C, 0x97D2, 0xED6D, + 0x97D3, 0xED6E, 0x97D4, 0xED6F, 0x97D5, 0xED70, 0x97D6, 0xED71, 0x97D7, 0xED72, 0x97D8, 0xED73, 0x97D9, 0xED74, 0x97DA, 0xED75, + 0x97DB, 0xED76, 0x97DC, 0xED77, 0x97DD, 0xED78, 0x97DE, 0xED79, 0x97DF, 0xED7A, 0x97E0, 0xED7B, 0x97E1, 0xED7C, 0x97E2, 0xED7D, + 0x97E3, 0xED7E, 0x97E4, 0xED80, 0x97E5, 0xED81, 0x97E6, 0xCEA4, 0x97E7, 0xC8CD, 0x97E8, 0xED82, 0x97E9, 0xBAAB, 0x97EA, 0xE8B8, + 0x97EB, 0xE8B9, 0x97EC, 0xE8BA, 0x97ED, 0xBEC2, 0x97EE, 0xED83, 0x97EF, 0xED84, 0x97F0, 0xED85, 0x97F1, 0xED86, 0x97F2, 0xED87, + 0x97F3, 0xD2F4, 0x97F4, 0xED88, 0x97F5, 0xD4CF, 0x97F6, 0xC9D8, 0x97F7, 0xED89, 0x97F8, 0xED8A, 0x97F9, 0xED8B, 0x97FA, 0xED8C, + 0x97FB, 0xED8D, 0x97FC, 0xED8E, 0x97FD, 0xED8F, 0x97FE, 0xED90, 0x97FF, 0xED91, 0x9800, 0xED92, 0x9801, 0xED93, 0x9802, 0xED94, + 0x9803, 0xED95, 0x9804, 0xED96, 0x9805, 0xED97, 0x9806, 0xED98, 0x9807, 0xED99, 0x9808, 0xED9A, 0x9809, 0xED9B, 0x980A, 0xED9C, + 0x980B, 0xED9D, 0x980C, 0xED9E, 0x980D, 0xED9F, 0x980E, 0xEDA0, 0x980F, 0xEE40, 0x9810, 0xEE41, 0x9811, 0xEE42, 0x9812, 0xEE43, + 0x9813, 0xEE44, 0x9814, 0xEE45, 0x9815, 0xEE46, 0x9816, 0xEE47, 0x9817, 0xEE48, 0x9818, 0xEE49, 0x9819, 0xEE4A, 0x981A, 0xEE4B, + 0x981B, 0xEE4C, 0x981C, 0xEE4D, 0x981D, 0xEE4E, 0x981E, 0xEE4F, 0x981F, 0xEE50, 0x9820, 0xEE51, 0x9821, 0xEE52, 0x9822, 0xEE53, + 0x9823, 0xEE54, 0x9824, 0xEE55, 0x9825, 0xEE56, 0x9826, 0xEE57, 0x9827, 0xEE58, 0x9828, 0xEE59, 0x9829, 0xEE5A, 0x982A, 0xEE5B, + 0x982B, 0xEE5C, 0x982C, 0xEE5D, 0x982D, 0xEE5E, 0x982E, 0xEE5F, 0x982F, 0xEE60, 0x9830, 0xEE61, 0x9831, 0xEE62, 0x9832, 0xEE63, + 0x9833, 0xEE64, 0x9834, 0xEE65, 0x9835, 0xEE66, 0x9836, 0xEE67, 0x9837, 0xEE68, 0x9838, 0xEE69, 0x9839, 0xEE6A, 0x983A, 0xEE6B, + 0x983B, 0xEE6C, 0x983C, 0xEE6D, 0x983D, 0xEE6E, 0x983E, 0xEE6F, 0x983F, 0xEE70, 0x9840, 0xEE71, 0x9841, 0xEE72, 0x9842, 0xEE73, + 0x9843, 0xEE74, 0x9844, 0xEE75, 0x9845, 0xEE76, 0x9846, 0xEE77, 0x9847, 0xEE78, 0x9848, 0xEE79, 0x9849, 0xEE7A, 0x984A, 0xEE7B, + 0x984B, 0xEE7C, 0x984C, 0xEE7D, 0x984D, 0xEE7E, 0x984E, 0xEE80, 0x984F, 0xEE81, 0x9850, 0xEE82, 0x9851, 0xEE83, 0x9852, 0xEE84, + 0x9853, 0xEE85, 0x9854, 0xEE86, 0x9855, 0xEE87, 0x9856, 0xEE88, 0x9857, 0xEE89, 0x9858, 0xEE8A, 0x9859, 0xEE8B, 0x985A, 0xEE8C, + 0x985B, 0xEE8D, 0x985C, 0xEE8E, 0x985D, 0xEE8F, 0x985E, 0xEE90, 0x985F, 0xEE91, 0x9860, 0xEE92, 0x9861, 0xEE93, 0x9862, 0xEE94, + 0x9863, 0xEE95, 0x9864, 0xEE96, 0x9865, 0xEE97, 0x9866, 0xEE98, 0x9867, 0xEE99, 0x9868, 0xEE9A, 0x9869, 0xEE9B, 0x986A, 0xEE9C, + 0x986B, 0xEE9D, 0x986C, 0xEE9E, 0x986D, 0xEE9F, 0x986E, 0xEEA0, 0x986F, 0xEF40, 0x9870, 0xEF41, 0x9871, 0xEF42, 0x9872, 0xEF43, + 0x9873, 0xEF44, 0x9874, 0xEF45, 0x9875, 0xD2B3, 0x9876, 0xB6A5, 0x9877, 0xC7EA, 0x9878, 0xF1FC, 0x9879, 0xCFEE, 0x987A, 0xCBB3, + 0x987B, 0xD0EB, 0x987C, 0xE7EF, 0x987D, 0xCDE7, 0x987E, 0xB9CB, 0x987F, 0xB6D9, 0x9880, 0xF1FD, 0x9881, 0xB0E4, 0x9882, 0xCBCC, + 0x9883, 0xF1FE, 0x9884, 0xD4A4, 0x9885, 0xC2AD, 0x9886, 0xC1EC, 0x9887, 0xC6C4, 0x9888, 0xBEB1, 0x9889, 0xF2A1, 0x988A, 0xBCD5, + 0x988B, 0xEF46, 0x988C, 0xF2A2, 0x988D, 0xF2A3, 0x988E, 0xEF47, 0x988F, 0xF2A4, 0x9890, 0xD2C3, 0x9891, 0xC6B5, 0x9892, 0xEF48, + 0x9893, 0xCDC7, 0x9894, 0xF2A5, 0x9895, 0xEF49, 0x9896, 0xD3B1, 0x9897, 0xBFC5, 0x9898, 0xCCE2, 0x9899, 0xEF4A, 0x989A, 0xF2A6, + 0x989B, 0xF2A7, 0x989C, 0xD1D5, 0x989D, 0xB6EE, 0x989E, 0xF2A8, 0x989F, 0xF2A9, 0x98A0, 0xB5DF, 0x98A1, 0xF2AA, 0x98A2, 0xF2AB, + 0x98A3, 0xEF4B, 0x98A4, 0xB2FC, 0x98A5, 0xF2AC, 0x98A6, 0xF2AD, 0x98A7, 0xC8A7, 0x98A8, 0xEF4C, 0x98A9, 0xEF4D, 0x98AA, 0xEF4E, + 0x98AB, 0xEF4F, 0x98AC, 0xEF50, 0x98AD, 0xEF51, 0x98AE, 0xEF52, 0x98AF, 0xEF53, 0x98B0, 0xEF54, 0x98B1, 0xEF55, 0x98B2, 0xEF56, + 0x98B3, 0xEF57, 0x98B4, 0xEF58, 0x98B5, 0xEF59, 0x98B6, 0xEF5A, 0x98B7, 0xEF5B, 0x98B8, 0xEF5C, 0x98B9, 0xEF5D, 0x98BA, 0xEF5E, + 0x98BB, 0xEF5F, 0x98BC, 0xEF60, 0x98BD, 0xEF61, 0x98BE, 0xEF62, 0x98BF, 0xEF63, 0x98C0, 0xEF64, 0x98C1, 0xEF65, 0x98C2, 0xEF66, + 0x98C3, 0xEF67, 0x98C4, 0xEF68, 0x98C5, 0xEF69, 0x98C6, 0xEF6A, 0x98C7, 0xEF6B, 0x98C8, 0xEF6C, 0x98C9, 0xEF6D, 0x98CA, 0xEF6E, + 0x98CB, 0xEF6F, 0x98CC, 0xEF70, 0x98CD, 0xEF71, 0x98CE, 0xB7E7, 0x98CF, 0xEF72, 0x98D0, 0xEF73, 0x98D1, 0xECA9, 0x98D2, 0xECAA, + 0x98D3, 0xECAB, 0x98D4, 0xEF74, 0x98D5, 0xECAC, 0x98D6, 0xEF75, 0x98D7, 0xEF76, 0x98D8, 0xC6AE, 0x98D9, 0xECAD, 0x98DA, 0xECAE, + 0x98DB, 0xEF77, 0x98DC, 0xEF78, 0x98DD, 0xEF79, 0x98DE, 0xB7C9, 0x98DF, 0xCAB3, 0x98E0, 0xEF7A, 0x98E1, 0xEF7B, 0x98E2, 0xEF7C, + 0x98E3, 0xEF7D, 0x98E4, 0xEF7E, 0x98E5, 0xEF80, 0x98E6, 0xEF81, 0x98E7, 0xE2B8, 0x98E8, 0xF7CF, 0x98E9, 0xEF82, 0x98EA, 0xEF83, + 0x98EB, 0xEF84, 0x98EC, 0xEF85, 0x98ED, 0xEF86, 0x98EE, 0xEF87, 0x98EF, 0xEF88, 0x98F0, 0xEF89, 0x98F1, 0xEF8A, 0x98F2, 0xEF8B, + 0x98F3, 0xEF8C, 0x98F4, 0xEF8D, 0x98F5, 0xEF8E, 0x98F6, 0xEF8F, 0x98F7, 0xEF90, 0x98F8, 0xEF91, 0x98F9, 0xEF92, 0x98FA, 0xEF93, + 0x98FB, 0xEF94, 0x98FC, 0xEF95, 0x98FD, 0xEF96, 0x98FE, 0xEF97, 0x98FF, 0xEF98, 0x9900, 0xEF99, 0x9901, 0xEF9A, 0x9902, 0xEF9B, + 0x9903, 0xEF9C, 0x9904, 0xEF9D, 0x9905, 0xEF9E, 0x9906, 0xEF9F, 0x9907, 0xEFA0, 0x9908, 0xF040, 0x9909, 0xF041, 0x990A, 0xF042, + 0x990B, 0xF043, 0x990C, 0xF044, 0x990D, 0xF7D0, 0x990E, 0xF045, 0x990F, 0xF046, 0x9910, 0xB2CD, 0x9911, 0xF047, 0x9912, 0xF048, + 0x9913, 0xF049, 0x9914, 0xF04A, 0x9915, 0xF04B, 0x9916, 0xF04C, 0x9917, 0xF04D, 0x9918, 0xF04E, 0x9919, 0xF04F, 0x991A, 0xF050, + 0x991B, 0xF051, 0x991C, 0xF052, 0x991D, 0xF053, 0x991E, 0xF054, 0x991F, 0xF055, 0x9920, 0xF056, 0x9921, 0xF057, 0x9922, 0xF058, + 0x9923, 0xF059, 0x9924, 0xF05A, 0x9925, 0xF05B, 0x9926, 0xF05C, 0x9927, 0xF05D, 0x9928, 0xF05E, 0x9929, 0xF05F, 0x992A, 0xF060, + 0x992B, 0xF061, 0x992C, 0xF062, 0x992D, 0xF063, 0x992E, 0xF7D1, 0x992F, 0xF064, 0x9930, 0xF065, 0x9931, 0xF066, 0x9932, 0xF067, + 0x9933, 0xF068, 0x9934, 0xF069, 0x9935, 0xF06A, 0x9936, 0xF06B, 0x9937, 0xF06C, 0x9938, 0xF06D, 0x9939, 0xF06E, 0x993A, 0xF06F, + 0x993B, 0xF070, 0x993C, 0xF071, 0x993D, 0xF072, 0x993E, 0xF073, 0x993F, 0xF074, 0x9940, 0xF075, 0x9941, 0xF076, 0x9942, 0xF077, + 0x9943, 0xF078, 0x9944, 0xF079, 0x9945, 0xF07A, 0x9946, 0xF07B, 0x9947, 0xF07C, 0x9948, 0xF07D, 0x9949, 0xF07E, 0x994A, 0xF080, + 0x994B, 0xF081, 0x994C, 0xF082, 0x994D, 0xF083, 0x994E, 0xF084, 0x994F, 0xF085, 0x9950, 0xF086, 0x9951, 0xF087, 0x9952, 0xF088, + 0x9953, 0xF089, 0x9954, 0xF7D3, 0x9955, 0xF7D2, 0x9956, 0xF08A, 0x9957, 0xF08B, 0x9958, 0xF08C, 0x9959, 0xF08D, 0x995A, 0xF08E, + 0x995B, 0xF08F, 0x995C, 0xF090, 0x995D, 0xF091, 0x995E, 0xF092, 0x995F, 0xF093, 0x9960, 0xF094, 0x9961, 0xF095, 0x9962, 0xF096, + 0x9963, 0xE2BB, 0x9964, 0xF097, 0x9965, 0xBCA2, 0x9966, 0xF098, 0x9967, 0xE2BC, 0x9968, 0xE2BD, 0x9969, 0xE2BE, 0x996A, 0xE2BF, + 0x996B, 0xE2C0, 0x996C, 0xE2C1, 0x996D, 0xB7B9, 0x996E, 0xD2FB, 0x996F, 0xBDA4, 0x9970, 0xCACE, 0x9971, 0xB1A5, 0x9972, 0xCBC7, + 0x9973, 0xF099, 0x9974, 0xE2C2, 0x9975, 0xB6FC, 0x9976, 0xC8C4, 0x9977, 0xE2C3, 0x9978, 0xF09A, 0x9979, 0xF09B, 0x997A, 0xBDC8, + 0x997B, 0xF09C, 0x997C, 0xB1FD, 0x997D, 0xE2C4, 0x997E, 0xF09D, 0x997F, 0xB6F6, 0x9980, 0xE2C5, 0x9981, 0xC4D9, 0x9982, 0xF09E, + 0x9983, 0xF09F, 0x9984, 0xE2C6, 0x9985, 0xCFDA, 0x9986, 0xB9DD, 0x9987, 0xE2C7, 0x9988, 0xC0A1, 0x9989, 0xF0A0, 0x998A, 0xE2C8, + 0x998B, 0xB2F6, 0x998C, 0xF140, 0x998D, 0xE2C9, 0x998E, 0xF141, 0x998F, 0xC1F3, 0x9990, 0xE2CA, 0x9991, 0xE2CB, 0x9992, 0xC2F8, + 0x9993, 0xE2CC, 0x9994, 0xE2CD, 0x9995, 0xE2CE, 0x9996, 0xCAD7, 0x9997, 0xD8B8, 0x9998, 0xD9E5, 0x9999, 0xCFE3, 0x999A, 0xF142, + 0x999B, 0xF143, 0x999C, 0xF144, 0x999D, 0xF145, 0x999E, 0xF146, 0x999F, 0xF147, 0x99A0, 0xF148, 0x99A1, 0xF149, 0x99A2, 0xF14A, + 0x99A3, 0xF14B, 0x99A4, 0xF14C, 0x99A5, 0xF0A5, 0x99A6, 0xF14D, 0x99A7, 0xF14E, 0x99A8, 0xDCB0, 0x99A9, 0xF14F, 0x99AA, 0xF150, + 0x99AB, 0xF151, 0x99AC, 0xF152, 0x99AD, 0xF153, 0x99AE, 0xF154, 0x99AF, 0xF155, 0x99B0, 0xF156, 0x99B1, 0xF157, 0x99B2, 0xF158, + 0x99B3, 0xF159, 0x99B4, 0xF15A, 0x99B5, 0xF15B, 0x99B6, 0xF15C, 0x99B7, 0xF15D, 0x99B8, 0xF15E, 0x99B9, 0xF15F, 0x99BA, 0xF160, + 0x99BB, 0xF161, 0x99BC, 0xF162, 0x99BD, 0xF163, 0x99BE, 0xF164, 0x99BF, 0xF165, 0x99C0, 0xF166, 0x99C1, 0xF167, 0x99C2, 0xF168, + 0x99C3, 0xF169, 0x99C4, 0xF16A, 0x99C5, 0xF16B, 0x99C6, 0xF16C, 0x99C7, 0xF16D, 0x99C8, 0xF16E, 0x99C9, 0xF16F, 0x99CA, 0xF170, + 0x99CB, 0xF171, 0x99CC, 0xF172, 0x99CD, 0xF173, 0x99CE, 0xF174, 0x99CF, 0xF175, 0x99D0, 0xF176, 0x99D1, 0xF177, 0x99D2, 0xF178, + 0x99D3, 0xF179, 0x99D4, 0xF17A, 0x99D5, 0xF17B, 0x99D6, 0xF17C, 0x99D7, 0xF17D, 0x99D8, 0xF17E, 0x99D9, 0xF180, 0x99DA, 0xF181, + 0x99DB, 0xF182, 0x99DC, 0xF183, 0x99DD, 0xF184, 0x99DE, 0xF185, 0x99DF, 0xF186, 0x99E0, 0xF187, 0x99E1, 0xF188, 0x99E2, 0xF189, + 0x99E3, 0xF18A, 0x99E4, 0xF18B, 0x99E5, 0xF18C, 0x99E6, 0xF18D, 0x99E7, 0xF18E, 0x99E8, 0xF18F, 0x99E9, 0xF190, 0x99EA, 0xF191, + 0x99EB, 0xF192, 0x99EC, 0xF193, 0x99ED, 0xF194, 0x99EE, 0xF195, 0x99EF, 0xF196, 0x99F0, 0xF197, 0x99F1, 0xF198, 0x99F2, 0xF199, + 0x99F3, 0xF19A, 0x99F4, 0xF19B, 0x99F5, 0xF19C, 0x99F6, 0xF19D, 0x99F7, 0xF19E, 0x99F8, 0xF19F, 0x99F9, 0xF1A0, 0x99FA, 0xF240, + 0x99FB, 0xF241, 0x99FC, 0xF242, 0x99FD, 0xF243, 0x99FE, 0xF244, 0x99FF, 0xF245, 0x9A00, 0xF246, 0x9A01, 0xF247, 0x9A02, 0xF248, + 0x9A03, 0xF249, 0x9A04, 0xF24A, 0x9A05, 0xF24B, 0x9A06, 0xF24C, 0x9A07, 0xF24D, 0x9A08, 0xF24E, 0x9A09, 0xF24F, 0x9A0A, 0xF250, + 0x9A0B, 0xF251, 0x9A0C, 0xF252, 0x9A0D, 0xF253, 0x9A0E, 0xF254, 0x9A0F, 0xF255, 0x9A10, 0xF256, 0x9A11, 0xF257, 0x9A12, 0xF258, + 0x9A13, 0xF259, 0x9A14, 0xF25A, 0x9A15, 0xF25B, 0x9A16, 0xF25C, 0x9A17, 0xF25D, 0x9A18, 0xF25E, 0x9A19, 0xF25F, 0x9A1A, 0xF260, + 0x9A1B, 0xF261, 0x9A1C, 0xF262, 0x9A1D, 0xF263, 0x9A1E, 0xF264, 0x9A1F, 0xF265, 0x9A20, 0xF266, 0x9A21, 0xF267, 0x9A22, 0xF268, + 0x9A23, 0xF269, 0x9A24, 0xF26A, 0x9A25, 0xF26B, 0x9A26, 0xF26C, 0x9A27, 0xF26D, 0x9A28, 0xF26E, 0x9A29, 0xF26F, 0x9A2A, 0xF270, + 0x9A2B, 0xF271, 0x9A2C, 0xF272, 0x9A2D, 0xF273, 0x9A2E, 0xF274, 0x9A2F, 0xF275, 0x9A30, 0xF276, 0x9A31, 0xF277, 0x9A32, 0xF278, + 0x9A33, 0xF279, 0x9A34, 0xF27A, 0x9A35, 0xF27B, 0x9A36, 0xF27C, 0x9A37, 0xF27D, 0x9A38, 0xF27E, 0x9A39, 0xF280, 0x9A3A, 0xF281, + 0x9A3B, 0xF282, 0x9A3C, 0xF283, 0x9A3D, 0xF284, 0x9A3E, 0xF285, 0x9A3F, 0xF286, 0x9A40, 0xF287, 0x9A41, 0xF288, 0x9A42, 0xF289, + 0x9A43, 0xF28A, 0x9A44, 0xF28B, 0x9A45, 0xF28C, 0x9A46, 0xF28D, 0x9A47, 0xF28E, 0x9A48, 0xF28F, 0x9A49, 0xF290, 0x9A4A, 0xF291, + 0x9A4B, 0xF292, 0x9A4C, 0xF293, 0x9A4D, 0xF294, 0x9A4E, 0xF295, 0x9A4F, 0xF296, 0x9A50, 0xF297, 0x9A51, 0xF298, 0x9A52, 0xF299, + 0x9A53, 0xF29A, 0x9A54, 0xF29B, 0x9A55, 0xF29C, 0x9A56, 0xF29D, 0x9A57, 0xF29E, 0x9A58, 0xF29F, 0x9A59, 0xF2A0, 0x9A5A, 0xF340, + 0x9A5B, 0xF341, 0x9A5C, 0xF342, 0x9A5D, 0xF343, 0x9A5E, 0xF344, 0x9A5F, 0xF345, 0x9A60, 0xF346, 0x9A61, 0xF347, 0x9A62, 0xF348, + 0x9A63, 0xF349, 0x9A64, 0xF34A, 0x9A65, 0xF34B, 0x9A66, 0xF34C, 0x9A67, 0xF34D, 0x9A68, 0xF34E, 0x9A69, 0xF34F, 0x9A6A, 0xF350, + 0x9A6B, 0xF351, 0x9A6C, 0xC2ED, 0x9A6D, 0xD4A6, 0x9A6E, 0xCDD4, 0x9A6F, 0xD1B1, 0x9A70, 0xB3DB, 0x9A71, 0xC7FD, 0x9A72, 0xF352, + 0x9A73, 0xB2B5, 0x9A74, 0xC2BF, 0x9A75, 0xE6E0, 0x9A76, 0xCABB, 0x9A77, 0xE6E1, 0x9A78, 0xE6E2, 0x9A79, 0xBED4, 0x9A7A, 0xE6E3, + 0x9A7B, 0xD7A4, 0x9A7C, 0xCDD5, 0x9A7D, 0xE6E5, 0x9A7E, 0xBCDD, 0x9A7F, 0xE6E4, 0x9A80, 0xE6E6, 0x9A81, 0xE6E7, 0x9A82, 0xC2EE, + 0x9A83, 0xF353, 0x9A84, 0xBDBE, 0x9A85, 0xE6E8, 0x9A86, 0xC2E6, 0x9A87, 0xBAA7, 0x9A88, 0xE6E9, 0x9A89, 0xF354, 0x9A8A, 0xE6EA, + 0x9A8B, 0xB3D2, 0x9A8C, 0xD1E9, 0x9A8D, 0xF355, 0x9A8E, 0xF356, 0x9A8F, 0xBFA5, 0x9A90, 0xE6EB, 0x9A91, 0xC6EF, 0x9A92, 0xE6EC, + 0x9A93, 0xE6ED, 0x9A94, 0xF357, 0x9A95, 0xF358, 0x9A96, 0xE6EE, 0x9A97, 0xC6AD, 0x9A98, 0xE6EF, 0x9A99, 0xF359, 0x9A9A, 0xC9A7, + 0x9A9B, 0xE6F0, 0x9A9C, 0xE6F1, 0x9A9D, 0xE6F2, 0x9A9E, 0xE5B9, 0x9A9F, 0xE6F3, 0x9AA0, 0xE6F4, 0x9AA1, 0xC2E2, 0x9AA2, 0xE6F5, + 0x9AA3, 0xE6F6, 0x9AA4, 0xD6E8, 0x9AA5, 0xE6F7, 0x9AA6, 0xF35A, 0x9AA7, 0xE6F8, 0x9AA8, 0xB9C7, 0x9AA9, 0xF35B, 0x9AAA, 0xF35C, + 0x9AAB, 0xF35D, 0x9AAC, 0xF35E, 0x9AAD, 0xF35F, 0x9AAE, 0xF360, 0x9AAF, 0xF361, 0x9AB0, 0xF7BB, 0x9AB1, 0xF7BA, 0x9AB2, 0xF362, + 0x9AB3, 0xF363, 0x9AB4, 0xF364, 0x9AB5, 0xF365, 0x9AB6, 0xF7BE, 0x9AB7, 0xF7BC, 0x9AB8, 0xBAA1, 0x9AB9, 0xF366, 0x9ABA, 0xF7BF, + 0x9ABB, 0xF367, 0x9ABC, 0xF7C0, 0x9ABD, 0xF368, 0x9ABE, 0xF369, 0x9ABF, 0xF36A, 0x9AC0, 0xF7C2, 0x9AC1, 0xF7C1, 0x9AC2, 0xF7C4, + 0x9AC3, 0xF36B, 0x9AC4, 0xF36C, 0x9AC5, 0xF7C3, 0x9AC6, 0xF36D, 0x9AC7, 0xF36E, 0x9AC8, 0xF36F, 0x9AC9, 0xF370, 0x9ACA, 0xF371, + 0x9ACB, 0xF7C5, 0x9ACC, 0xF7C6, 0x9ACD, 0xF372, 0x9ACE, 0xF373, 0x9ACF, 0xF374, 0x9AD0, 0xF375, 0x9AD1, 0xF7C7, 0x9AD2, 0xF376, + 0x9AD3, 0xCBE8, 0x9AD4, 0xF377, 0x9AD5, 0xF378, 0x9AD6, 0xF379, 0x9AD7, 0xF37A, 0x9AD8, 0xB8DF, 0x9AD9, 0xF37B, 0x9ADA, 0xF37C, + 0x9ADB, 0xF37D, 0x9ADC, 0xF37E, 0x9ADD, 0xF380, 0x9ADE, 0xF381, 0x9ADF, 0xF7D4, 0x9AE0, 0xF382, 0x9AE1, 0xF7D5, 0x9AE2, 0xF383, + 0x9AE3, 0xF384, 0x9AE4, 0xF385, 0x9AE5, 0xF386, 0x9AE6, 0xF7D6, 0x9AE7, 0xF387, 0x9AE8, 0xF388, 0x9AE9, 0xF389, 0x9AEA, 0xF38A, + 0x9AEB, 0xF7D8, 0x9AEC, 0xF38B, 0x9AED, 0xF7DA, 0x9AEE, 0xF38C, 0x9AEF, 0xF7D7, 0x9AF0, 0xF38D, 0x9AF1, 0xF38E, 0x9AF2, 0xF38F, + 0x9AF3, 0xF390, 0x9AF4, 0xF391, 0x9AF5, 0xF392, 0x9AF6, 0xF393, 0x9AF7, 0xF394, 0x9AF8, 0xF395, 0x9AF9, 0xF7DB, 0x9AFA, 0xF396, + 0x9AFB, 0xF7D9, 0x9AFC, 0xF397, 0x9AFD, 0xF398, 0x9AFE, 0xF399, 0x9AFF, 0xF39A, 0x9B00, 0xF39B, 0x9B01, 0xF39C, 0x9B02, 0xF39D, + 0x9B03, 0xD7D7, 0x9B04, 0xF39E, 0x9B05, 0xF39F, 0x9B06, 0xF3A0, 0x9B07, 0xF440, 0x9B08, 0xF7DC, 0x9B09, 0xF441, 0x9B0A, 0xF442, + 0x9B0B, 0xF443, 0x9B0C, 0xF444, 0x9B0D, 0xF445, 0x9B0E, 0xF446, 0x9B0F, 0xF7DD, 0x9B10, 0xF447, 0x9B11, 0xF448, 0x9B12, 0xF449, + 0x9B13, 0xF7DE, 0x9B14, 0xF44A, 0x9B15, 0xF44B, 0x9B16, 0xF44C, 0x9B17, 0xF44D, 0x9B18, 0xF44E, 0x9B19, 0xF44F, 0x9B1A, 0xF450, + 0x9B1B, 0xF451, 0x9B1C, 0xF452, 0x9B1D, 0xF453, 0x9B1E, 0xF454, 0x9B1F, 0xF7DF, 0x9B20, 0xF455, 0x9B21, 0xF456, 0x9B22, 0xF457, + 0x9B23, 0xF7E0, 0x9B24, 0xF458, 0x9B25, 0xF459, 0x9B26, 0xF45A, 0x9B27, 0xF45B, 0x9B28, 0xF45C, 0x9B29, 0xF45D, 0x9B2A, 0xF45E, + 0x9B2B, 0xF45F, 0x9B2C, 0xF460, 0x9B2D, 0xF461, 0x9B2E, 0xF462, 0x9B2F, 0xDBCB, 0x9B30, 0xF463, 0x9B31, 0xF464, 0x9B32, 0xD8AA, + 0x9B33, 0xF465, 0x9B34, 0xF466, 0x9B35, 0xF467, 0x9B36, 0xF468, 0x9B37, 0xF469, 0x9B38, 0xF46A, 0x9B39, 0xF46B, 0x9B3A, 0xF46C, + 0x9B3B, 0xE5F7, 0x9B3C, 0xB9ED, 0x9B3D, 0xF46D, 0x9B3E, 0xF46E, 0x9B3F, 0xF46F, 0x9B40, 0xF470, 0x9B41, 0xBFFD, 0x9B42, 0xBBEA, + 0x9B43, 0xF7C9, 0x9B44, 0xC6C7, 0x9B45, 0xF7C8, 0x9B46, 0xF471, 0x9B47, 0xF7CA, 0x9B48, 0xF7CC, 0x9B49, 0xF7CB, 0x9B4A, 0xF472, + 0x9B4B, 0xF473, 0x9B4C, 0xF474, 0x9B4D, 0xF7CD, 0x9B4E, 0xF475, 0x9B4F, 0xCEBA, 0x9B50, 0xF476, 0x9B51, 0xF7CE, 0x9B52, 0xF477, + 0x9B53, 0xF478, 0x9B54, 0xC4A7, 0x9B55, 0xF479, 0x9B56, 0xF47A, 0x9B57, 0xF47B, 0x9B58, 0xF47C, 0x9B59, 0xF47D, 0x9B5A, 0xF47E, + 0x9B5B, 0xF480, 0x9B5C, 0xF481, 0x9B5D, 0xF482, 0x9B5E, 0xF483, 0x9B5F, 0xF484, 0x9B60, 0xF485, 0x9B61, 0xF486, 0x9B62, 0xF487, + 0x9B63, 0xF488, 0x9B64, 0xF489, 0x9B65, 0xF48A, 0x9B66, 0xF48B, 0x9B67, 0xF48C, 0x9B68, 0xF48D, 0x9B69, 0xF48E, 0x9B6A, 0xF48F, + 0x9B6B, 0xF490, 0x9B6C, 0xF491, 0x9B6D, 0xF492, 0x9B6E, 0xF493, 0x9B6F, 0xF494, 0x9B70, 0xF495, 0x9B71, 0xF496, 0x9B72, 0xF497, + 0x9B73, 0xF498, 0x9B74, 0xF499, 0x9B75, 0xF49A, 0x9B76, 0xF49B, 0x9B77, 0xF49C, 0x9B78, 0xF49D, 0x9B79, 0xF49E, 0x9B7A, 0xF49F, + 0x9B7B, 0xF4A0, 0x9B7C, 0xF540, 0x9B7D, 0xF541, 0x9B7E, 0xF542, 0x9B7F, 0xF543, 0x9B80, 0xF544, 0x9B81, 0xF545, 0x9B82, 0xF546, + 0x9B83, 0xF547, 0x9B84, 0xF548, 0x9B85, 0xF549, 0x9B86, 0xF54A, 0x9B87, 0xF54B, 0x9B88, 0xF54C, 0x9B89, 0xF54D, 0x9B8A, 0xF54E, + 0x9B8B, 0xF54F, 0x9B8C, 0xF550, 0x9B8D, 0xF551, 0x9B8E, 0xF552, 0x9B8F, 0xF553, 0x9B90, 0xF554, 0x9B91, 0xF555, 0x9B92, 0xF556, + 0x9B93, 0xF557, 0x9B94, 0xF558, 0x9B95, 0xF559, 0x9B96, 0xF55A, 0x9B97, 0xF55B, 0x9B98, 0xF55C, 0x9B99, 0xF55D, 0x9B9A, 0xF55E, + 0x9B9B, 0xF55F, 0x9B9C, 0xF560, 0x9B9D, 0xF561, 0x9B9E, 0xF562, 0x9B9F, 0xF563, 0x9BA0, 0xF564, 0x9BA1, 0xF565, 0x9BA2, 0xF566, + 0x9BA3, 0xF567, 0x9BA4, 0xF568, 0x9BA5, 0xF569, 0x9BA6, 0xF56A, 0x9BA7, 0xF56B, 0x9BA8, 0xF56C, 0x9BA9, 0xF56D, 0x9BAA, 0xF56E, + 0x9BAB, 0xF56F, 0x9BAC, 0xF570, 0x9BAD, 0xF571, 0x9BAE, 0xF572, 0x9BAF, 0xF573, 0x9BB0, 0xF574, 0x9BB1, 0xF575, 0x9BB2, 0xF576, + 0x9BB3, 0xF577, 0x9BB4, 0xF578, 0x9BB5, 0xF579, 0x9BB6, 0xF57A, 0x9BB7, 0xF57B, 0x9BB8, 0xF57C, 0x9BB9, 0xF57D, 0x9BBA, 0xF57E, + 0x9BBB, 0xF580, 0x9BBC, 0xF581, 0x9BBD, 0xF582, 0x9BBE, 0xF583, 0x9BBF, 0xF584, 0x9BC0, 0xF585, 0x9BC1, 0xF586, 0x9BC2, 0xF587, + 0x9BC3, 0xF588, 0x9BC4, 0xF589, 0x9BC5, 0xF58A, 0x9BC6, 0xF58B, 0x9BC7, 0xF58C, 0x9BC8, 0xF58D, 0x9BC9, 0xF58E, 0x9BCA, 0xF58F, + 0x9BCB, 0xF590, 0x9BCC, 0xF591, 0x9BCD, 0xF592, 0x9BCE, 0xF593, 0x9BCF, 0xF594, 0x9BD0, 0xF595, 0x9BD1, 0xF596, 0x9BD2, 0xF597, + 0x9BD3, 0xF598, 0x9BD4, 0xF599, 0x9BD5, 0xF59A, 0x9BD6, 0xF59B, 0x9BD7, 0xF59C, 0x9BD8, 0xF59D, 0x9BD9, 0xF59E, 0x9BDA, 0xF59F, + 0x9BDB, 0xF5A0, 0x9BDC, 0xF640, 0x9BDD, 0xF641, 0x9BDE, 0xF642, 0x9BDF, 0xF643, 0x9BE0, 0xF644, 0x9BE1, 0xF645, 0x9BE2, 0xF646, + 0x9BE3, 0xF647, 0x9BE4, 0xF648, 0x9BE5, 0xF649, 0x9BE6, 0xF64A, 0x9BE7, 0xF64B, 0x9BE8, 0xF64C, 0x9BE9, 0xF64D, 0x9BEA, 0xF64E, + 0x9BEB, 0xF64F, 0x9BEC, 0xF650, 0x9BED, 0xF651, 0x9BEE, 0xF652, 0x9BEF, 0xF653, 0x9BF0, 0xF654, 0x9BF1, 0xF655, 0x9BF2, 0xF656, + 0x9BF3, 0xF657, 0x9BF4, 0xF658, 0x9BF5, 0xF659, 0x9BF6, 0xF65A, 0x9BF7, 0xF65B, 0x9BF8, 0xF65C, 0x9BF9, 0xF65D, 0x9BFA, 0xF65E, + 0x9BFB, 0xF65F, 0x9BFC, 0xF660, 0x9BFD, 0xF661, 0x9BFE, 0xF662, 0x9BFF, 0xF663, 0x9C00, 0xF664, 0x9C01, 0xF665, 0x9C02, 0xF666, + 0x9C03, 0xF667, 0x9C04, 0xF668, 0x9C05, 0xF669, 0x9C06, 0xF66A, 0x9C07, 0xF66B, 0x9C08, 0xF66C, 0x9C09, 0xF66D, 0x9C0A, 0xF66E, + 0x9C0B, 0xF66F, 0x9C0C, 0xF670, 0x9C0D, 0xF671, 0x9C0E, 0xF672, 0x9C0F, 0xF673, 0x9C10, 0xF674, 0x9C11, 0xF675, 0x9C12, 0xF676, + 0x9C13, 0xF677, 0x9C14, 0xF678, 0x9C15, 0xF679, 0x9C16, 0xF67A, 0x9C17, 0xF67B, 0x9C18, 0xF67C, 0x9C19, 0xF67D, 0x9C1A, 0xF67E, + 0x9C1B, 0xF680, 0x9C1C, 0xF681, 0x9C1D, 0xF682, 0x9C1E, 0xF683, 0x9C1F, 0xF684, 0x9C20, 0xF685, 0x9C21, 0xF686, 0x9C22, 0xF687, + 0x9C23, 0xF688, 0x9C24, 0xF689, 0x9C25, 0xF68A, 0x9C26, 0xF68B, 0x9C27, 0xF68C, 0x9C28, 0xF68D, 0x9C29, 0xF68E, 0x9C2A, 0xF68F, + 0x9C2B, 0xF690, 0x9C2C, 0xF691, 0x9C2D, 0xF692, 0x9C2E, 0xF693, 0x9C2F, 0xF694, 0x9C30, 0xF695, 0x9C31, 0xF696, 0x9C32, 0xF697, + 0x9C33, 0xF698, 0x9C34, 0xF699, 0x9C35, 0xF69A, 0x9C36, 0xF69B, 0x9C37, 0xF69C, 0x9C38, 0xF69D, 0x9C39, 0xF69E, 0x9C3A, 0xF69F, + 0x9C3B, 0xF6A0, 0x9C3C, 0xF740, 0x9C3D, 0xF741, 0x9C3E, 0xF742, 0x9C3F, 0xF743, 0x9C40, 0xF744, 0x9C41, 0xF745, 0x9C42, 0xF746, + 0x9C43, 0xF747, 0x9C44, 0xF748, 0x9C45, 0xF749, 0x9C46, 0xF74A, 0x9C47, 0xF74B, 0x9C48, 0xF74C, 0x9C49, 0xF74D, 0x9C4A, 0xF74E, + 0x9C4B, 0xF74F, 0x9C4C, 0xF750, 0x9C4D, 0xF751, 0x9C4E, 0xF752, 0x9C4F, 0xF753, 0x9C50, 0xF754, 0x9C51, 0xF755, 0x9C52, 0xF756, + 0x9C53, 0xF757, 0x9C54, 0xF758, 0x9C55, 0xF759, 0x9C56, 0xF75A, 0x9C57, 0xF75B, 0x9C58, 0xF75C, 0x9C59, 0xF75D, 0x9C5A, 0xF75E, + 0x9C5B, 0xF75F, 0x9C5C, 0xF760, 0x9C5D, 0xF761, 0x9C5E, 0xF762, 0x9C5F, 0xF763, 0x9C60, 0xF764, 0x9C61, 0xF765, 0x9C62, 0xF766, + 0x9C63, 0xF767, 0x9C64, 0xF768, 0x9C65, 0xF769, 0x9C66, 0xF76A, 0x9C67, 0xF76B, 0x9C68, 0xF76C, 0x9C69, 0xF76D, 0x9C6A, 0xF76E, + 0x9C6B, 0xF76F, 0x9C6C, 0xF770, 0x9C6D, 0xF771, 0x9C6E, 0xF772, 0x9C6F, 0xF773, 0x9C70, 0xF774, 0x9C71, 0xF775, 0x9C72, 0xF776, + 0x9C73, 0xF777, 0x9C74, 0xF778, 0x9C75, 0xF779, 0x9C76, 0xF77A, 0x9C77, 0xF77B, 0x9C78, 0xF77C, 0x9C79, 0xF77D, 0x9C7A, 0xF77E, + 0x9C7B, 0xF780, 0x9C7C, 0xD3E3, 0x9C7D, 0xF781, 0x9C7E, 0xF782, 0x9C7F, 0xF6CF, 0x9C80, 0xF783, 0x9C81, 0xC2B3, 0x9C82, 0xF6D0, + 0x9C83, 0xF784, 0x9C84, 0xF785, 0x9C85, 0xF6D1, 0x9C86, 0xF6D2, 0x9C87, 0xF6D3, 0x9C88, 0xF6D4, 0x9C89, 0xF786, 0x9C8A, 0xF787, + 0x9C8B, 0xF6D6, 0x9C8C, 0xF788, 0x9C8D, 0xB1AB, 0x9C8E, 0xF6D7, 0x9C8F, 0xF789, 0x9C90, 0xF6D8, 0x9C91, 0xF6D9, 0x9C92, 0xF6DA, + 0x9C93, 0xF78A, 0x9C94, 0xF6DB, 0x9C95, 0xF6DC, 0x9C96, 0xF78B, 0x9C97, 0xF78C, 0x9C98, 0xF78D, 0x9C99, 0xF78E, 0x9C9A, 0xF6DD, + 0x9C9B, 0xF6DE, 0x9C9C, 0xCFCA, 0x9C9D, 0xF78F, 0x9C9E, 0xF6DF, 0x9C9F, 0xF6E0, 0x9CA0, 0xF6E1, 0x9CA1, 0xF6E2, 0x9CA2, 0xF6E3, + 0x9CA3, 0xF6E4, 0x9CA4, 0xC0F0, 0x9CA5, 0xF6E5, 0x9CA6, 0xF6E6, 0x9CA7, 0xF6E7, 0x9CA8, 0xF6E8, 0x9CA9, 0xF6E9, 0x9CAA, 0xF790, + 0x9CAB, 0xF6EA, 0x9CAC, 0xF791, 0x9CAD, 0xF6EB, 0x9CAE, 0xF6EC, 0x9CAF, 0xF792, 0x9CB0, 0xF6ED, 0x9CB1, 0xF6EE, 0x9CB2, 0xF6EF, + 0x9CB3, 0xF6F0, 0x9CB4, 0xF6F1, 0x9CB5, 0xF6F2, 0x9CB6, 0xF6F3, 0x9CB7, 0xF6F4, 0x9CB8, 0xBEA8, 0x9CB9, 0xF793, 0x9CBA, 0xF6F5, + 0x9CBB, 0xF6F6, 0x9CBC, 0xF6F7, 0x9CBD, 0xF6F8, 0x9CBE, 0xF794, 0x9CBF, 0xF795, 0x9CC0, 0xF796, 0x9CC1, 0xF797, 0x9CC2, 0xF798, + 0x9CC3, 0xC8FA, 0x9CC4, 0xF6F9, 0x9CC5, 0xF6FA, 0x9CC6, 0xF6FB, 0x9CC7, 0xF6FC, 0x9CC8, 0xF799, 0x9CC9, 0xF79A, 0x9CCA, 0xF6FD, + 0x9CCB, 0xF6FE, 0x9CCC, 0xF7A1, 0x9CCD, 0xF7A2, 0x9CCE, 0xF7A3, 0x9CCF, 0xF7A4, 0x9CD0, 0xF7A5, 0x9CD1, 0xF79B, 0x9CD2, 0xF79C, + 0x9CD3, 0xF7A6, 0x9CD4, 0xF7A7, 0x9CD5, 0xF7A8, 0x9CD6, 0xB1EE, 0x9CD7, 0xF7A9, 0x9CD8, 0xF7AA, 0x9CD9, 0xF7AB, 0x9CDA, 0xF79D, + 0x9CDB, 0xF79E, 0x9CDC, 0xF7AC, 0x9CDD, 0xF7AD, 0x9CDE, 0xC1DB, 0x9CDF, 0xF7AE, 0x9CE0, 0xF79F, 0x9CE1, 0xF7A0, 0x9CE2, 0xF7AF, + 0x9CE3, 0xF840, 0x9CE4, 0xF841, 0x9CE5, 0xF842, 0x9CE6, 0xF843, 0x9CE7, 0xF844, 0x9CE8, 0xF845, 0x9CE9, 0xF846, 0x9CEA, 0xF847, + 0x9CEB, 0xF848, 0x9CEC, 0xF849, 0x9CED, 0xF84A, 0x9CEE, 0xF84B, 0x9CEF, 0xF84C, 0x9CF0, 0xF84D, 0x9CF1, 0xF84E, 0x9CF2, 0xF84F, + 0x9CF3, 0xF850, 0x9CF4, 0xF851, 0x9CF5, 0xF852, 0x9CF6, 0xF853, 0x9CF7, 0xF854, 0x9CF8, 0xF855, 0x9CF9, 0xF856, 0x9CFA, 0xF857, + 0x9CFB, 0xF858, 0x9CFC, 0xF859, 0x9CFD, 0xF85A, 0x9CFE, 0xF85B, 0x9CFF, 0xF85C, 0x9D00, 0xF85D, 0x9D01, 0xF85E, 0x9D02, 0xF85F, + 0x9D03, 0xF860, 0x9D04, 0xF861, 0x9D05, 0xF862, 0x9D06, 0xF863, 0x9D07, 0xF864, 0x9D08, 0xF865, 0x9D09, 0xF866, 0x9D0A, 0xF867, + 0x9D0B, 0xF868, 0x9D0C, 0xF869, 0x9D0D, 0xF86A, 0x9D0E, 0xF86B, 0x9D0F, 0xF86C, 0x9D10, 0xF86D, 0x9D11, 0xF86E, 0x9D12, 0xF86F, + 0x9D13, 0xF870, 0x9D14, 0xF871, 0x9D15, 0xF872, 0x9D16, 0xF873, 0x9D17, 0xF874, 0x9D18, 0xF875, 0x9D19, 0xF876, 0x9D1A, 0xF877, + 0x9D1B, 0xF878, 0x9D1C, 0xF879, 0x9D1D, 0xF87A, 0x9D1E, 0xF87B, 0x9D1F, 0xF87C, 0x9D20, 0xF87D, 0x9D21, 0xF87E, 0x9D22, 0xF880, + 0x9D23, 0xF881, 0x9D24, 0xF882, 0x9D25, 0xF883, 0x9D26, 0xF884, 0x9D27, 0xF885, 0x9D28, 0xF886, 0x9D29, 0xF887, 0x9D2A, 0xF888, + 0x9D2B, 0xF889, 0x9D2C, 0xF88A, 0x9D2D, 0xF88B, 0x9D2E, 0xF88C, 0x9D2F, 0xF88D, 0x9D30, 0xF88E, 0x9D31, 0xF88F, 0x9D32, 0xF890, + 0x9D33, 0xF891, 0x9D34, 0xF892, 0x9D35, 0xF893, 0x9D36, 0xF894, 0x9D37, 0xF895, 0x9D38, 0xF896, 0x9D39, 0xF897, 0x9D3A, 0xF898, + 0x9D3B, 0xF899, 0x9D3C, 0xF89A, 0x9D3D, 0xF89B, 0x9D3E, 0xF89C, 0x9D3F, 0xF89D, 0x9D40, 0xF89E, 0x9D41, 0xF89F, 0x9D42, 0xF8A0, + 0x9D43, 0xF940, 0x9D44, 0xF941, 0x9D45, 0xF942, 0x9D46, 0xF943, 0x9D47, 0xF944, 0x9D48, 0xF945, 0x9D49, 0xF946, 0x9D4A, 0xF947, + 0x9D4B, 0xF948, 0x9D4C, 0xF949, 0x9D4D, 0xF94A, 0x9D4E, 0xF94B, 0x9D4F, 0xF94C, 0x9D50, 0xF94D, 0x9D51, 0xF94E, 0x9D52, 0xF94F, + 0x9D53, 0xF950, 0x9D54, 0xF951, 0x9D55, 0xF952, 0x9D56, 0xF953, 0x9D57, 0xF954, 0x9D58, 0xF955, 0x9D59, 0xF956, 0x9D5A, 0xF957, + 0x9D5B, 0xF958, 0x9D5C, 0xF959, 0x9D5D, 0xF95A, 0x9D5E, 0xF95B, 0x9D5F, 0xF95C, 0x9D60, 0xF95D, 0x9D61, 0xF95E, 0x9D62, 0xF95F, + 0x9D63, 0xF960, 0x9D64, 0xF961, 0x9D65, 0xF962, 0x9D66, 0xF963, 0x9D67, 0xF964, 0x9D68, 0xF965, 0x9D69, 0xF966, 0x9D6A, 0xF967, + 0x9D6B, 0xF968, 0x9D6C, 0xF969, 0x9D6D, 0xF96A, 0x9D6E, 0xF96B, 0x9D6F, 0xF96C, 0x9D70, 0xF96D, 0x9D71, 0xF96E, 0x9D72, 0xF96F, + 0x9D73, 0xF970, 0x9D74, 0xF971, 0x9D75, 0xF972, 0x9D76, 0xF973, 0x9D77, 0xF974, 0x9D78, 0xF975, 0x9D79, 0xF976, 0x9D7A, 0xF977, + 0x9D7B, 0xF978, 0x9D7C, 0xF979, 0x9D7D, 0xF97A, 0x9D7E, 0xF97B, 0x9D7F, 0xF97C, 0x9D80, 0xF97D, 0x9D81, 0xF97E, 0x9D82, 0xF980, + 0x9D83, 0xF981, 0x9D84, 0xF982, 0x9D85, 0xF983, 0x9D86, 0xF984, 0x9D87, 0xF985, 0x9D88, 0xF986, 0x9D89, 0xF987, 0x9D8A, 0xF988, + 0x9D8B, 0xF989, 0x9D8C, 0xF98A, 0x9D8D, 0xF98B, 0x9D8E, 0xF98C, 0x9D8F, 0xF98D, 0x9D90, 0xF98E, 0x9D91, 0xF98F, 0x9D92, 0xF990, + 0x9D93, 0xF991, 0x9D94, 0xF992, 0x9D95, 0xF993, 0x9D96, 0xF994, 0x9D97, 0xF995, 0x9D98, 0xF996, 0x9D99, 0xF997, 0x9D9A, 0xF998, + 0x9D9B, 0xF999, 0x9D9C, 0xF99A, 0x9D9D, 0xF99B, 0x9D9E, 0xF99C, 0x9D9F, 0xF99D, 0x9DA0, 0xF99E, 0x9DA1, 0xF99F, 0x9DA2, 0xF9A0, + 0x9DA3, 0xFA40, 0x9DA4, 0xFA41, 0x9DA5, 0xFA42, 0x9DA6, 0xFA43, 0x9DA7, 0xFA44, 0x9DA8, 0xFA45, 0x9DA9, 0xFA46, 0x9DAA, 0xFA47, + 0x9DAB, 0xFA48, 0x9DAC, 0xFA49, 0x9DAD, 0xFA4A, 0x9DAE, 0xFA4B, 0x9DAF, 0xFA4C, 0x9DB0, 0xFA4D, 0x9DB1, 0xFA4E, 0x9DB2, 0xFA4F, + 0x9DB3, 0xFA50, 0x9DB4, 0xFA51, 0x9DB5, 0xFA52, 0x9DB6, 0xFA53, 0x9DB7, 0xFA54, 0x9DB8, 0xFA55, 0x9DB9, 0xFA56, 0x9DBA, 0xFA57, + 0x9DBB, 0xFA58, 0x9DBC, 0xFA59, 0x9DBD, 0xFA5A, 0x9DBE, 0xFA5B, 0x9DBF, 0xFA5C, 0x9DC0, 0xFA5D, 0x9DC1, 0xFA5E, 0x9DC2, 0xFA5F, + 0x9DC3, 0xFA60, 0x9DC4, 0xFA61, 0x9DC5, 0xFA62, 0x9DC6, 0xFA63, 0x9DC7, 0xFA64, 0x9DC8, 0xFA65, 0x9DC9, 0xFA66, 0x9DCA, 0xFA67, + 0x9DCB, 0xFA68, 0x9DCC, 0xFA69, 0x9DCD, 0xFA6A, 0x9DCE, 0xFA6B, 0x9DCF, 0xFA6C, 0x9DD0, 0xFA6D, 0x9DD1, 0xFA6E, 0x9DD2, 0xFA6F, + 0x9DD3, 0xFA70, 0x9DD4, 0xFA71, 0x9DD5, 0xFA72, 0x9DD6, 0xFA73, 0x9DD7, 0xFA74, 0x9DD8, 0xFA75, 0x9DD9, 0xFA76, 0x9DDA, 0xFA77, + 0x9DDB, 0xFA78, 0x9DDC, 0xFA79, 0x9DDD, 0xFA7A, 0x9DDE, 0xFA7B, 0x9DDF, 0xFA7C, 0x9DE0, 0xFA7D, 0x9DE1, 0xFA7E, 0x9DE2, 0xFA80, + 0x9DE3, 0xFA81, 0x9DE4, 0xFA82, 0x9DE5, 0xFA83, 0x9DE6, 0xFA84, 0x9DE7, 0xFA85, 0x9DE8, 0xFA86, 0x9DE9, 0xFA87, 0x9DEA, 0xFA88, + 0x9DEB, 0xFA89, 0x9DEC, 0xFA8A, 0x9DED, 0xFA8B, 0x9DEE, 0xFA8C, 0x9DEF, 0xFA8D, 0x9DF0, 0xFA8E, 0x9DF1, 0xFA8F, 0x9DF2, 0xFA90, + 0x9DF3, 0xFA91, 0x9DF4, 0xFA92, 0x9DF5, 0xFA93, 0x9DF6, 0xFA94, 0x9DF7, 0xFA95, 0x9DF8, 0xFA96, 0x9DF9, 0xFA97, 0x9DFA, 0xFA98, + 0x9DFB, 0xFA99, 0x9DFC, 0xFA9A, 0x9DFD, 0xFA9B, 0x9DFE, 0xFA9C, 0x9DFF, 0xFA9D, 0x9E00, 0xFA9E, 0x9E01, 0xFA9F, 0x9E02, 0xFAA0, + 0x9E03, 0xFB40, 0x9E04, 0xFB41, 0x9E05, 0xFB42, 0x9E06, 0xFB43, 0x9E07, 0xFB44, 0x9E08, 0xFB45, 0x9E09, 0xFB46, 0x9E0A, 0xFB47, + 0x9E0B, 0xFB48, 0x9E0C, 0xFB49, 0x9E0D, 0xFB4A, 0x9E0E, 0xFB4B, 0x9E0F, 0xFB4C, 0x9E10, 0xFB4D, 0x9E11, 0xFB4E, 0x9E12, 0xFB4F, + 0x9E13, 0xFB50, 0x9E14, 0xFB51, 0x9E15, 0xFB52, 0x9E16, 0xFB53, 0x9E17, 0xFB54, 0x9E18, 0xFB55, 0x9E19, 0xFB56, 0x9E1A, 0xFB57, + 0x9E1B, 0xFB58, 0x9E1C, 0xFB59, 0x9E1D, 0xFB5A, 0x9E1E, 0xFB5B, 0x9E1F, 0xC4F1, 0x9E20, 0xF0AF, 0x9E21, 0xBCA6, 0x9E22, 0xF0B0, + 0x9E23, 0xC3F9, 0x9E24, 0xFB5C, 0x9E25, 0xC5B8, 0x9E26, 0xD1BB, 0x9E27, 0xFB5D, 0x9E28, 0xF0B1, 0x9E29, 0xF0B2, 0x9E2A, 0xF0B3, + 0x9E2B, 0xF0B4, 0x9E2C, 0xF0B5, 0x9E2D, 0xD1BC, 0x9E2E, 0xFB5E, 0x9E2F, 0xD1EC, 0x9E30, 0xFB5F, 0x9E31, 0xF0B7, 0x9E32, 0xF0B6, + 0x9E33, 0xD4A7, 0x9E34, 0xFB60, 0x9E35, 0xCDD2, 0x9E36, 0xF0B8, 0x9E37, 0xF0BA, 0x9E38, 0xF0B9, 0x9E39, 0xF0BB, 0x9E3A, 0xF0BC, + 0x9E3B, 0xFB61, 0x9E3C, 0xFB62, 0x9E3D, 0xB8EB, 0x9E3E, 0xF0BD, 0x9E3F, 0xBAE8, 0x9E40, 0xFB63, 0x9E41, 0xF0BE, 0x9E42, 0xF0BF, + 0x9E43, 0xBEE9, 0x9E44, 0xF0C0, 0x9E45, 0xB6EC, 0x9E46, 0xF0C1, 0x9E47, 0xF0C2, 0x9E48, 0xF0C3, 0x9E49, 0xF0C4, 0x9E4A, 0xC8B5, + 0x9E4B, 0xF0C5, 0x9E4C, 0xF0C6, 0x9E4D, 0xFB64, 0x9E4E, 0xF0C7, 0x9E4F, 0xC5F4, 0x9E50, 0xFB65, 0x9E51, 0xF0C8, 0x9E52, 0xFB66, + 0x9E53, 0xFB67, 0x9E54, 0xFB68, 0x9E55, 0xF0C9, 0x9E56, 0xFB69, 0x9E57, 0xF0CA, 0x9E58, 0xF7BD, 0x9E59, 0xFB6A, 0x9E5A, 0xF0CB, + 0x9E5B, 0xF0CC, 0x9E5C, 0xF0CD, 0x9E5D, 0xFB6B, 0x9E5E, 0xF0CE, 0x9E5F, 0xFB6C, 0x9E60, 0xFB6D, 0x9E61, 0xFB6E, 0x9E62, 0xFB6F, + 0x9E63, 0xF0CF, 0x9E64, 0xBAD7, 0x9E65, 0xFB70, 0x9E66, 0xF0D0, 0x9E67, 0xF0D1, 0x9E68, 0xF0D2, 0x9E69, 0xF0D3, 0x9E6A, 0xF0D4, + 0x9E6B, 0xF0D5, 0x9E6C, 0xF0D6, 0x9E6D, 0xF0D8, 0x9E6E, 0xFB71, 0x9E6F, 0xFB72, 0x9E70, 0xD3A5, 0x9E71, 0xF0D7, 0x9E72, 0xFB73, + 0x9E73, 0xF0D9, 0x9E74, 0xFB74, 0x9E75, 0xFB75, 0x9E76, 0xFB76, 0x9E77, 0xFB77, 0x9E78, 0xFB78, 0x9E79, 0xFB79, 0x9E7A, 0xFB7A, + 0x9E7B, 0xFB7B, 0x9E7C, 0xFB7C, 0x9E7D, 0xFB7D, 0x9E7E, 0xF5BA, 0x9E7F, 0xC2B9, 0x9E80, 0xFB7E, 0x9E81, 0xFB80, 0x9E82, 0xF7E4, + 0x9E83, 0xFB81, 0x9E84, 0xFB82, 0x9E85, 0xFB83, 0x9E86, 0xFB84, 0x9E87, 0xF7E5, 0x9E88, 0xF7E6, 0x9E89, 0xFB85, 0x9E8A, 0xFB86, + 0x9E8B, 0xF7E7, 0x9E8C, 0xFB87, 0x9E8D, 0xFB88, 0x9E8E, 0xFB89, 0x9E8F, 0xFB8A, 0x9E90, 0xFB8B, 0x9E91, 0xFB8C, 0x9E92, 0xF7E8, + 0x9E93, 0xC2B4, 0x9E94, 0xFB8D, 0x9E95, 0xFB8E, 0x9E96, 0xFB8F, 0x9E97, 0xFB90, 0x9E98, 0xFB91, 0x9E99, 0xFB92, 0x9E9A, 0xFB93, + 0x9E9B, 0xFB94, 0x9E9C, 0xFB95, 0x9E9D, 0xF7EA, 0x9E9E, 0xFB96, 0x9E9F, 0xF7EB, 0x9EA0, 0xFB97, 0x9EA1, 0xFB98, 0x9EA2, 0xFB99, + 0x9EA3, 0xFB9A, 0x9EA4, 0xFB9B, 0x9EA5, 0xFB9C, 0x9EA6, 0xC2F3, 0x9EA7, 0xFB9D, 0x9EA8, 0xFB9E, 0x9EA9, 0xFB9F, 0x9EAA, 0xFBA0, + 0x9EAB, 0xFC40, 0x9EAC, 0xFC41, 0x9EAD, 0xFC42, 0x9EAE, 0xFC43, 0x9EAF, 0xFC44, 0x9EB0, 0xFC45, 0x9EB1, 0xFC46, 0x9EB2, 0xFC47, + 0x9EB3, 0xFC48, 0x9EB4, 0xF4F0, 0x9EB5, 0xFC49, 0x9EB6, 0xFC4A, 0x9EB7, 0xFC4B, 0x9EB8, 0xF4EF, 0x9EB9, 0xFC4C, 0x9EBA, 0xFC4D, + 0x9EBB, 0xC2E9, 0x9EBC, 0xFC4E, 0x9EBD, 0xF7E1, 0x9EBE, 0xF7E2, 0x9EBF, 0xFC4F, 0x9EC0, 0xFC50, 0x9EC1, 0xFC51, 0x9EC2, 0xFC52, + 0x9EC3, 0xFC53, 0x9EC4, 0xBBC6, 0x9EC5, 0xFC54, 0x9EC6, 0xFC55, 0x9EC7, 0xFC56, 0x9EC8, 0xFC57, 0x9EC9, 0xD9E4, 0x9ECA, 0xFC58, + 0x9ECB, 0xFC59, 0x9ECC, 0xFC5A, 0x9ECD, 0xCAF2, 0x9ECE, 0xC0E8, 0x9ECF, 0xF0A4, 0x9ED0, 0xFC5B, 0x9ED1, 0xBADA, 0x9ED2, 0xFC5C, + 0x9ED3, 0xFC5D, 0x9ED4, 0xC7AD, 0x9ED5, 0xFC5E, 0x9ED6, 0xFC5F, 0x9ED7, 0xFC60, 0x9ED8, 0xC4AC, 0x9ED9, 0xFC61, 0x9EDA, 0xFC62, + 0x9EDB, 0xF7EC, 0x9EDC, 0xF7ED, 0x9EDD, 0xF7EE, 0x9EDE, 0xFC63, 0x9EDF, 0xF7F0, 0x9EE0, 0xF7EF, 0x9EE1, 0xFC64, 0x9EE2, 0xF7F1, + 0x9EE3, 0xFC65, 0x9EE4, 0xFC66, 0x9EE5, 0xF7F4, 0x9EE6, 0xFC67, 0x9EE7, 0xF7F3, 0x9EE8, 0xFC68, 0x9EE9, 0xF7F2, 0x9EEA, 0xF7F5, + 0x9EEB, 0xFC69, 0x9EEC, 0xFC6A, 0x9EED, 0xFC6B, 0x9EEE, 0xFC6C, 0x9EEF, 0xF7F6, 0x9EF0, 0xFC6D, 0x9EF1, 0xFC6E, 0x9EF2, 0xFC6F, + 0x9EF3, 0xFC70, 0x9EF4, 0xFC71, 0x9EF5, 0xFC72, 0x9EF6, 0xFC73, 0x9EF7, 0xFC74, 0x9EF8, 0xFC75, 0x9EF9, 0xEDE9, 0x9EFA, 0xFC76, + 0x9EFB, 0xEDEA, 0x9EFC, 0xEDEB, 0x9EFD, 0xFC77, 0x9EFE, 0xF6BC, 0x9EFF, 0xFC78, 0x9F00, 0xFC79, 0x9F01, 0xFC7A, 0x9F02, 0xFC7B, + 0x9F03, 0xFC7C, 0x9F04, 0xFC7D, 0x9F05, 0xFC7E, 0x9F06, 0xFC80, 0x9F07, 0xFC81, 0x9F08, 0xFC82, 0x9F09, 0xFC83, 0x9F0A, 0xFC84, + 0x9F0B, 0xF6BD, 0x9F0C, 0xFC85, 0x9F0D, 0xF6BE, 0x9F0E, 0xB6A6, 0x9F0F, 0xFC86, 0x9F10, 0xD8BE, 0x9F11, 0xFC87, 0x9F12, 0xFC88, + 0x9F13, 0xB9C4, 0x9F14, 0xFC89, 0x9F15, 0xFC8A, 0x9F16, 0xFC8B, 0x9F17, 0xD8BB, 0x9F18, 0xFC8C, 0x9F19, 0xDCB1, 0x9F1A, 0xFC8D, + 0x9F1B, 0xFC8E, 0x9F1C, 0xFC8F, 0x9F1D, 0xFC90, 0x9F1E, 0xFC91, 0x9F1F, 0xFC92, 0x9F20, 0xCAF3, 0x9F21, 0xFC93, 0x9F22, 0xF7F7, + 0x9F23, 0xFC94, 0x9F24, 0xFC95, 0x9F25, 0xFC96, 0x9F26, 0xFC97, 0x9F27, 0xFC98, 0x9F28, 0xFC99, 0x9F29, 0xFC9A, 0x9F2A, 0xFC9B, + 0x9F2B, 0xFC9C, 0x9F2C, 0xF7F8, 0x9F2D, 0xFC9D, 0x9F2E, 0xFC9E, 0x9F2F, 0xF7F9, 0x9F30, 0xFC9F, 0x9F31, 0xFCA0, 0x9F32, 0xFD40, + 0x9F33, 0xFD41, 0x9F34, 0xFD42, 0x9F35, 0xFD43, 0x9F36, 0xFD44, 0x9F37, 0xF7FB, 0x9F38, 0xFD45, 0x9F39, 0xF7FA, 0x9F3A, 0xFD46, + 0x9F3B, 0xB1C7, 0x9F3C, 0xFD47, 0x9F3D, 0xF7FC, 0x9F3E, 0xF7FD, 0x9F3F, 0xFD48, 0x9F40, 0xFD49, 0x9F41, 0xFD4A, 0x9F42, 0xFD4B, + 0x9F43, 0xFD4C, 0x9F44, 0xF7FE, 0x9F45, 0xFD4D, 0x9F46, 0xFD4E, 0x9F47, 0xFD4F, 0x9F48, 0xFD50, 0x9F49, 0xFD51, 0x9F4A, 0xFD52, + 0x9F4B, 0xFD53, 0x9F4C, 0xFD54, 0x9F4D, 0xFD55, 0x9F4E, 0xFD56, 0x9F4F, 0xFD57, 0x9F50, 0xC6EB, 0x9F51, 0xECB4, 0x9F52, 0xFD58, + 0x9F53, 0xFD59, 0x9F54, 0xFD5A, 0x9F55, 0xFD5B, 0x9F56, 0xFD5C, 0x9F57, 0xFD5D, 0x9F58, 0xFD5E, 0x9F59, 0xFD5F, 0x9F5A, 0xFD60, + 0x9F5B, 0xFD61, 0x9F5C, 0xFD62, 0x9F5D, 0xFD63, 0x9F5E, 0xFD64, 0x9F5F, 0xFD65, 0x9F60, 0xFD66, 0x9F61, 0xFD67, 0x9F62, 0xFD68, + 0x9F63, 0xFD69, 0x9F64, 0xFD6A, 0x9F65, 0xFD6B, 0x9F66, 0xFD6C, 0x9F67, 0xFD6D, 0x9F68, 0xFD6E, 0x9F69, 0xFD6F, 0x9F6A, 0xFD70, + 0x9F6B, 0xFD71, 0x9F6C, 0xFD72, 0x9F6D, 0xFD73, 0x9F6E, 0xFD74, 0x9F6F, 0xFD75, 0x9F70, 0xFD76, 0x9F71, 0xFD77, 0x9F72, 0xFD78, + 0x9F73, 0xFD79, 0x9F74, 0xFD7A, 0x9F75, 0xFD7B, 0x9F76, 0xFD7C, 0x9F77, 0xFD7D, 0x9F78, 0xFD7E, 0x9F79, 0xFD80, 0x9F7A, 0xFD81, + 0x9F7B, 0xFD82, 0x9F7C, 0xFD83, 0x9F7D, 0xFD84, 0x9F7E, 0xFD85, 0x9F7F, 0xB3DD, 0x9F80, 0xF6B3, 0x9F81, 0xFD86, 0x9F82, 0xFD87, + 0x9F83, 0xF6B4, 0x9F84, 0xC1E4, 0x9F85, 0xF6B5, 0x9F86, 0xF6B6, 0x9F87, 0xF6B7, 0x9F88, 0xF6B8, 0x9F89, 0xF6B9, 0x9F8A, 0xF6BA, + 0x9F8B, 0xC8A3, 0x9F8C, 0xF6BB, 0x9F8D, 0xFD88, 0x9F8E, 0xFD89, 0x9F8F, 0xFD8A, 0x9F90, 0xFD8B, 0x9F91, 0xFD8C, 0x9F92, 0xFD8D, + 0x9F93, 0xFD8E, 0x9F94, 0xFD8F, 0x9F95, 0xFD90, 0x9F96, 0xFD91, 0x9F97, 0xFD92, 0x9F98, 0xFD93, 0x9F99, 0xC1FA, 0x9F9A, 0xB9A8, + 0x9F9B, 0xEDE8, 0x9F9C, 0xFD94, 0x9F9D, 0xFD95, 0x9F9E, 0xFD96, 0x9F9F, 0xB9EA, 0x9FA0, 0xD9DF, 0x9FA1, 0xFD97, 0x9FA2, 0xFD98, + 0x9FA3, 0xFD99, 0x9FA4, 0xFD9A, 0x9FA5, 0xFD9B, 0xF92C, 0xFD9C, 0xF979, 0xFD9D, 0xF995, 0xFD9E, 0xF9E7, 0xFD9F, 0xF9F1, 0xFDA0, + 0xFA0C, 0xFE40, 0xFA0D, 0xFE41, 0xFA0E, 0xFE42, 0xFA0F, 0xFE43, 0xFA11, 0xFE44, 0xFA13, 0xFE45, 0xFA14, 0xFE46, 0xFA18, 0xFE47, + 0xFA1F, 0xFE48, 0xFA20, 0xFE49, 0xFA21, 0xFE4A, 0xFA23, 0xFE4B, 0xFA24, 0xFE4C, 0xFA27, 0xFE4D, 0xFA28, 0xFE4E, 0xFA29, 0xFE4F, + 0xFE30, 0xA955, 0xFE31, 0xA6F2, 0xFE33, 0xA6F4, 0xFE34, 0xA6F5, 0xFE35, 0xA6E0, 0xFE36, 0xA6E1, 0xFE37, 0xA6F0, 0xFE38, 0xA6F1, + 0xFE39, 0xA6E2, 0xFE3A, 0xA6E3, 0xFE3B, 0xA6EE, 0xFE3C, 0xA6EF, 0xFE3D, 0xA6E6, 0xFE3E, 0xA6E7, 0xFE3F, 0xA6E4, 0xFE40, 0xA6E5, + 0xFE41, 0xA6E8, 0xFE42, 0xA6E9, 0xFE43, 0xA6EA, 0xFE44, 0xA6EB, 0xFE49, 0xA968, 0xFE4A, 0xA969, 0xFE4B, 0xA96A, 0xFE4C, 0xA96B, + 0xFE4D, 0xA96C, 0xFE4E, 0xA96D, 0xFE4F, 0xA96E, 0xFE50, 0xA96F, 0xFE51, 0xA970, 0xFE52, 0xA971, 0xFE54, 0xA972, 0xFE55, 0xA973, + 0xFE56, 0xA974, 0xFE57, 0xA975, 0xFE59, 0xA976, 0xFE5A, 0xA977, 0xFE5B, 0xA978, 0xFE5C, 0xA979, 0xFE5D, 0xA97A, 0xFE5E, 0xA97B, + 0xFE5F, 0xA97C, 0xFE60, 0xA97D, 0xFE61, 0xA97E, 0xFE62, 0xA980, 0xFE63, 0xA981, 0xFE64, 0xA982, 0xFE65, 0xA983, 0xFE66, 0xA984, + 0xFE68, 0xA985, 0xFE69, 0xA986, 0xFE6A, 0xA987, 0xFE6B, 0xA988, 0xFF01, 0xA3A1, 0xFF02, 0xA3A2, 0xFF03, 0xA3A3, 0xFF04, 0xA1E7, + 0xFF05, 0xA3A5, 0xFF06, 0xA3A6, 0xFF07, 0xA3A7, 0xFF08, 0xA3A8, 0xFF09, 0xA3A9, 0xFF0A, 0xA3AA, 0xFF0B, 0xA3AB, 0xFF0C, 0xA3AC, + 0xFF0D, 0xA3AD, 0xFF0E, 0xA3AE, 0xFF0F, 0xA3AF, 0xFF10, 0xA3B0, 0xFF11, 0xA3B1, 0xFF12, 0xA3B2, 0xFF13, 0xA3B3, 0xFF14, 0xA3B4, + 0xFF15, 0xA3B5, 0xFF16, 0xA3B6, 0xFF17, 0xA3B7, 0xFF18, 0xA3B8, 0xFF19, 0xA3B9, 0xFF1A, 0xA3BA, 0xFF1B, 0xA3BB, 0xFF1C, 0xA3BC, + 0xFF1D, 0xA3BD, 0xFF1E, 0xA3BE, 0xFF1F, 0xA3BF, 0xFF20, 0xA3C0, 0xFF21, 0xA3C1, 0xFF22, 0xA3C2, 0xFF23, 0xA3C3, 0xFF24, 0xA3C4, + 0xFF25, 0xA3C5, 0xFF26, 0xA3C6, 0xFF27, 0xA3C7, 0xFF28, 0xA3C8, 0xFF29, 0xA3C9, 0xFF2A, 0xA3CA, 0xFF2B, 0xA3CB, 0xFF2C, 0xA3CC, + 0xFF2D, 0xA3CD, 0xFF2E, 0xA3CE, 0xFF2F, 0xA3CF, 0xFF30, 0xA3D0, 0xFF31, 0xA3D1, 0xFF32, 0xA3D2, 0xFF33, 0xA3D3, 0xFF34, 0xA3D4, + 0xFF35, 0xA3D5, 0xFF36, 0xA3D6, 0xFF37, 0xA3D7, 0xFF38, 0xA3D8, 0xFF39, 0xA3D9, 0xFF3A, 0xA3DA, 0xFF3B, 0xA3DB, 0xFF3C, 0xA3DC, + 0xFF3D, 0xA3DD, 0xFF3E, 0xA3DE, 0xFF3F, 0xA3DF, 0xFF40, 0xA3E0, 0xFF41, 0xA3E1, 0xFF42, 0xA3E2, 0xFF43, 0xA3E3, 0xFF44, 0xA3E4, + 0xFF45, 0xA3E5, 0xFF46, 0xA3E6, 0xFF47, 0xA3E7, 0xFF48, 0xA3E8, 0xFF49, 0xA3E9, 0xFF4A, 0xA3EA, 0xFF4B, 0xA3EB, 0xFF4C, 0xA3EC, + 0xFF4D, 0xA3ED, 0xFF4E, 0xA3EE, 0xFF4F, 0xA3EF, 0xFF50, 0xA3F0, 0xFF51, 0xA3F1, 0xFF52, 0xA3F2, 0xFF53, 0xA3F3, 0xFF54, 0xA3F4, + 0xFF55, 0xA3F5, 0xFF56, 0xA3F6, 0xFF57, 0xA3F7, 0xFF58, 0xA3F8, 0xFF59, 0xA3F9, 0xFF5A, 0xA3FA, 0xFF5B, 0xA3FB, 0xFF5C, 0xA3FC, + 0xFF5D, 0xA3FD, 0xFF5E, 0xA1AB, 0xFFE0, 0xA1E9, 0xFFE1, 0xA1EA, 0xFFE2, 0xA956, 0xFFE3, 0xA3FE, 0xFFE4, 0xA957, 0xFFE5, 0xA3A4, + 0, 0 +}; + +static const WCHAR oem2uni936[] = { /* GBK --> Unicode pairs */ + 0x0080, 0x20AC, 0x8140, 0x4E02, 0x8141, 0x4E04, 0x8142, 0x4E05, 0x8143, 0x4E06, 0x8144, 0x4E0F, 0x8145, 0x4E12, 0x8146, 0x4E17, + 0x8147, 0x4E1F, 0x8148, 0x4E20, 0x8149, 0x4E21, 0x814A, 0x4E23, 0x814B, 0x4E26, 0x814C, 0x4E29, 0x814D, 0x4E2E, 0x814E, 0x4E2F, + 0x814F, 0x4E31, 0x8150, 0x4E33, 0x8151, 0x4E35, 0x8152, 0x4E37, 0x8153, 0x4E3C, 0x8154, 0x4E40, 0x8155, 0x4E41, 0x8156, 0x4E42, + 0x8157, 0x4E44, 0x8158, 0x4E46, 0x8159, 0x4E4A, 0x815A, 0x4E51, 0x815B, 0x4E55, 0x815C, 0x4E57, 0x815D, 0x4E5A, 0x815E, 0x4E5B, + 0x815F, 0x4E62, 0x8160, 0x4E63, 0x8161, 0x4E64, 0x8162, 0x4E65, 0x8163, 0x4E67, 0x8164, 0x4E68, 0x8165, 0x4E6A, 0x8166, 0x4E6B, + 0x8167, 0x4E6C, 0x8168, 0x4E6D, 0x8169, 0x4E6E, 0x816A, 0x4E6F, 0x816B, 0x4E72, 0x816C, 0x4E74, 0x816D, 0x4E75, 0x816E, 0x4E76, + 0x816F, 0x4E77, 0x8170, 0x4E78, 0x8171, 0x4E79, 0x8172, 0x4E7A, 0x8173, 0x4E7B, 0x8174, 0x4E7C, 0x8175, 0x4E7D, 0x8176, 0x4E7F, + 0x8177, 0x4E80, 0x8178, 0x4E81, 0x8179, 0x4E82, 0x817A, 0x4E83, 0x817B, 0x4E84, 0x817C, 0x4E85, 0x817D, 0x4E87, 0x817E, 0x4E8A, + 0x8180, 0x4E90, 0x8181, 0x4E96, 0x8182, 0x4E97, 0x8183, 0x4E99, 0x8184, 0x4E9C, 0x8185, 0x4E9D, 0x8186, 0x4E9E, 0x8187, 0x4EA3, + 0x8188, 0x4EAA, 0x8189, 0x4EAF, 0x818A, 0x4EB0, 0x818B, 0x4EB1, 0x818C, 0x4EB4, 0x818D, 0x4EB6, 0x818E, 0x4EB7, 0x818F, 0x4EB8, + 0x8190, 0x4EB9, 0x8191, 0x4EBC, 0x8192, 0x4EBD, 0x8193, 0x4EBE, 0x8194, 0x4EC8, 0x8195, 0x4ECC, 0x8196, 0x4ECF, 0x8197, 0x4ED0, + 0x8198, 0x4ED2, 0x8199, 0x4EDA, 0x819A, 0x4EDB, 0x819B, 0x4EDC, 0x819C, 0x4EE0, 0x819D, 0x4EE2, 0x819E, 0x4EE6, 0x819F, 0x4EE7, + 0x81A0, 0x4EE9, 0x81A1, 0x4EED, 0x81A2, 0x4EEE, 0x81A3, 0x4EEF, 0x81A4, 0x4EF1, 0x81A5, 0x4EF4, 0x81A6, 0x4EF8, 0x81A7, 0x4EF9, + 0x81A8, 0x4EFA, 0x81A9, 0x4EFC, 0x81AA, 0x4EFE, 0x81AB, 0x4F00, 0x81AC, 0x4F02, 0x81AD, 0x4F03, 0x81AE, 0x4F04, 0x81AF, 0x4F05, + 0x81B0, 0x4F06, 0x81B1, 0x4F07, 0x81B2, 0x4F08, 0x81B3, 0x4F0B, 0x81B4, 0x4F0C, 0x81B5, 0x4F12, 0x81B6, 0x4F13, 0x81B7, 0x4F14, + 0x81B8, 0x4F15, 0x81B9, 0x4F16, 0x81BA, 0x4F1C, 0x81BB, 0x4F1D, 0x81BC, 0x4F21, 0x81BD, 0x4F23, 0x81BE, 0x4F28, 0x81BF, 0x4F29, + 0x81C0, 0x4F2C, 0x81C1, 0x4F2D, 0x81C2, 0x4F2E, 0x81C3, 0x4F31, 0x81C4, 0x4F33, 0x81C5, 0x4F35, 0x81C6, 0x4F37, 0x81C7, 0x4F39, + 0x81C8, 0x4F3B, 0x81C9, 0x4F3E, 0x81CA, 0x4F3F, 0x81CB, 0x4F40, 0x81CC, 0x4F41, 0x81CD, 0x4F42, 0x81CE, 0x4F44, 0x81CF, 0x4F45, + 0x81D0, 0x4F47, 0x81D1, 0x4F48, 0x81D2, 0x4F49, 0x81D3, 0x4F4A, 0x81D4, 0x4F4B, 0x81D5, 0x4F4C, 0x81D6, 0x4F52, 0x81D7, 0x4F54, + 0x81D8, 0x4F56, 0x81D9, 0x4F61, 0x81DA, 0x4F62, 0x81DB, 0x4F66, 0x81DC, 0x4F68, 0x81DD, 0x4F6A, 0x81DE, 0x4F6B, 0x81DF, 0x4F6D, + 0x81E0, 0x4F6E, 0x81E1, 0x4F71, 0x81E2, 0x4F72, 0x81E3, 0x4F75, 0x81E4, 0x4F77, 0x81E5, 0x4F78, 0x81E6, 0x4F79, 0x81E7, 0x4F7A, + 0x81E8, 0x4F7D, 0x81E9, 0x4F80, 0x81EA, 0x4F81, 0x81EB, 0x4F82, 0x81EC, 0x4F85, 0x81ED, 0x4F86, 0x81EE, 0x4F87, 0x81EF, 0x4F8A, + 0x81F0, 0x4F8C, 0x81F1, 0x4F8E, 0x81F2, 0x4F90, 0x81F3, 0x4F92, 0x81F4, 0x4F93, 0x81F5, 0x4F95, 0x81F6, 0x4F96, 0x81F7, 0x4F98, + 0x81F8, 0x4F99, 0x81F9, 0x4F9A, 0x81FA, 0x4F9C, 0x81FB, 0x4F9E, 0x81FC, 0x4F9F, 0x81FD, 0x4FA1, 0x81FE, 0x4FA2, 0x8240, 0x4FA4, + 0x8241, 0x4FAB, 0x8242, 0x4FAD, 0x8243, 0x4FB0, 0x8244, 0x4FB1, 0x8245, 0x4FB2, 0x8246, 0x4FB3, 0x8247, 0x4FB4, 0x8248, 0x4FB6, + 0x8249, 0x4FB7, 0x824A, 0x4FB8, 0x824B, 0x4FB9, 0x824C, 0x4FBA, 0x824D, 0x4FBB, 0x824E, 0x4FBC, 0x824F, 0x4FBD, 0x8250, 0x4FBE, + 0x8251, 0x4FC0, 0x8252, 0x4FC1, 0x8253, 0x4FC2, 0x8254, 0x4FC6, 0x8255, 0x4FC7, 0x8256, 0x4FC8, 0x8257, 0x4FC9, 0x8258, 0x4FCB, + 0x8259, 0x4FCC, 0x825A, 0x4FCD, 0x825B, 0x4FD2, 0x825C, 0x4FD3, 0x825D, 0x4FD4, 0x825E, 0x4FD5, 0x825F, 0x4FD6, 0x8260, 0x4FD9, + 0x8261, 0x4FDB, 0x8262, 0x4FE0, 0x8263, 0x4FE2, 0x8264, 0x4FE4, 0x8265, 0x4FE5, 0x8266, 0x4FE7, 0x8267, 0x4FEB, 0x8268, 0x4FEC, + 0x8269, 0x4FF0, 0x826A, 0x4FF2, 0x826B, 0x4FF4, 0x826C, 0x4FF5, 0x826D, 0x4FF6, 0x826E, 0x4FF7, 0x826F, 0x4FF9, 0x8270, 0x4FFB, + 0x8271, 0x4FFC, 0x8272, 0x4FFD, 0x8273, 0x4FFF, 0x8274, 0x5000, 0x8275, 0x5001, 0x8276, 0x5002, 0x8277, 0x5003, 0x8278, 0x5004, + 0x8279, 0x5005, 0x827A, 0x5006, 0x827B, 0x5007, 0x827C, 0x5008, 0x827D, 0x5009, 0x827E, 0x500A, 0x8280, 0x500B, 0x8281, 0x500E, + 0x8282, 0x5010, 0x8283, 0x5011, 0x8284, 0x5013, 0x8285, 0x5015, 0x8286, 0x5016, 0x8287, 0x5017, 0x8288, 0x501B, 0x8289, 0x501D, + 0x828A, 0x501E, 0x828B, 0x5020, 0x828C, 0x5022, 0x828D, 0x5023, 0x828E, 0x5024, 0x828F, 0x5027, 0x8290, 0x502B, 0x8291, 0x502F, + 0x8292, 0x5030, 0x8293, 0x5031, 0x8294, 0x5032, 0x8295, 0x5033, 0x8296, 0x5034, 0x8297, 0x5035, 0x8298, 0x5036, 0x8299, 0x5037, + 0x829A, 0x5038, 0x829B, 0x5039, 0x829C, 0x503B, 0x829D, 0x503D, 0x829E, 0x503F, 0x829F, 0x5040, 0x82A0, 0x5041, 0x82A1, 0x5042, + 0x82A2, 0x5044, 0x82A3, 0x5045, 0x82A4, 0x5046, 0x82A5, 0x5049, 0x82A6, 0x504A, 0x82A7, 0x504B, 0x82A8, 0x504D, 0x82A9, 0x5050, + 0x82AA, 0x5051, 0x82AB, 0x5052, 0x82AC, 0x5053, 0x82AD, 0x5054, 0x82AE, 0x5056, 0x82AF, 0x5057, 0x82B0, 0x5058, 0x82B1, 0x5059, + 0x82B2, 0x505B, 0x82B3, 0x505D, 0x82B4, 0x505E, 0x82B5, 0x505F, 0x82B6, 0x5060, 0x82B7, 0x5061, 0x82B8, 0x5062, 0x82B9, 0x5063, + 0x82BA, 0x5064, 0x82BB, 0x5066, 0x82BC, 0x5067, 0x82BD, 0x5068, 0x82BE, 0x5069, 0x82BF, 0x506A, 0x82C0, 0x506B, 0x82C1, 0x506D, + 0x82C2, 0x506E, 0x82C3, 0x506F, 0x82C4, 0x5070, 0x82C5, 0x5071, 0x82C6, 0x5072, 0x82C7, 0x5073, 0x82C8, 0x5074, 0x82C9, 0x5075, + 0x82CA, 0x5078, 0x82CB, 0x5079, 0x82CC, 0x507A, 0x82CD, 0x507C, 0x82CE, 0x507D, 0x82CF, 0x5081, 0x82D0, 0x5082, 0x82D1, 0x5083, + 0x82D2, 0x5084, 0x82D3, 0x5086, 0x82D4, 0x5087, 0x82D5, 0x5089, 0x82D6, 0x508A, 0x82D7, 0x508B, 0x82D8, 0x508C, 0x82D9, 0x508E, + 0x82DA, 0x508F, 0x82DB, 0x5090, 0x82DC, 0x5091, 0x82DD, 0x5092, 0x82DE, 0x5093, 0x82DF, 0x5094, 0x82E0, 0x5095, 0x82E1, 0x5096, + 0x82E2, 0x5097, 0x82E3, 0x5098, 0x82E4, 0x5099, 0x82E5, 0x509A, 0x82E6, 0x509B, 0x82E7, 0x509C, 0x82E8, 0x509D, 0x82E9, 0x509E, + 0x82EA, 0x509F, 0x82EB, 0x50A0, 0x82EC, 0x50A1, 0x82ED, 0x50A2, 0x82EE, 0x50A4, 0x82EF, 0x50A6, 0x82F0, 0x50AA, 0x82F1, 0x50AB, + 0x82F2, 0x50AD, 0x82F3, 0x50AE, 0x82F4, 0x50AF, 0x82F5, 0x50B0, 0x82F6, 0x50B1, 0x82F7, 0x50B3, 0x82F8, 0x50B4, 0x82F9, 0x50B5, + 0x82FA, 0x50B6, 0x82FB, 0x50B7, 0x82FC, 0x50B8, 0x82FD, 0x50B9, 0x82FE, 0x50BC, 0x8340, 0x50BD, 0x8341, 0x50BE, 0x8342, 0x50BF, + 0x8343, 0x50C0, 0x8344, 0x50C1, 0x8345, 0x50C2, 0x8346, 0x50C3, 0x8347, 0x50C4, 0x8348, 0x50C5, 0x8349, 0x50C6, 0x834A, 0x50C7, + 0x834B, 0x50C8, 0x834C, 0x50C9, 0x834D, 0x50CA, 0x834E, 0x50CB, 0x834F, 0x50CC, 0x8350, 0x50CD, 0x8351, 0x50CE, 0x8352, 0x50D0, + 0x8353, 0x50D1, 0x8354, 0x50D2, 0x8355, 0x50D3, 0x8356, 0x50D4, 0x8357, 0x50D5, 0x8358, 0x50D7, 0x8359, 0x50D8, 0x835A, 0x50D9, + 0x835B, 0x50DB, 0x835C, 0x50DC, 0x835D, 0x50DD, 0x835E, 0x50DE, 0x835F, 0x50DF, 0x8360, 0x50E0, 0x8361, 0x50E1, 0x8362, 0x50E2, + 0x8363, 0x50E3, 0x8364, 0x50E4, 0x8365, 0x50E5, 0x8366, 0x50E8, 0x8367, 0x50E9, 0x8368, 0x50EA, 0x8369, 0x50EB, 0x836A, 0x50EF, + 0x836B, 0x50F0, 0x836C, 0x50F1, 0x836D, 0x50F2, 0x836E, 0x50F4, 0x836F, 0x50F6, 0x8370, 0x50F7, 0x8371, 0x50F8, 0x8372, 0x50F9, + 0x8373, 0x50FA, 0x8374, 0x50FC, 0x8375, 0x50FD, 0x8376, 0x50FE, 0x8377, 0x50FF, 0x8378, 0x5100, 0x8379, 0x5101, 0x837A, 0x5102, + 0x837B, 0x5103, 0x837C, 0x5104, 0x837D, 0x5105, 0x837E, 0x5108, 0x8380, 0x5109, 0x8381, 0x510A, 0x8382, 0x510C, 0x8383, 0x510D, + 0x8384, 0x510E, 0x8385, 0x510F, 0x8386, 0x5110, 0x8387, 0x5111, 0x8388, 0x5113, 0x8389, 0x5114, 0x838A, 0x5115, 0x838B, 0x5116, + 0x838C, 0x5117, 0x838D, 0x5118, 0x838E, 0x5119, 0x838F, 0x511A, 0x8390, 0x511B, 0x8391, 0x511C, 0x8392, 0x511D, 0x8393, 0x511E, + 0x8394, 0x511F, 0x8395, 0x5120, 0x8396, 0x5122, 0x8397, 0x5123, 0x8398, 0x5124, 0x8399, 0x5125, 0x839A, 0x5126, 0x839B, 0x5127, + 0x839C, 0x5128, 0x839D, 0x5129, 0x839E, 0x512A, 0x839F, 0x512B, 0x83A0, 0x512C, 0x83A1, 0x512D, 0x83A2, 0x512E, 0x83A3, 0x512F, + 0x83A4, 0x5130, 0x83A5, 0x5131, 0x83A6, 0x5132, 0x83A7, 0x5133, 0x83A8, 0x5134, 0x83A9, 0x5135, 0x83AA, 0x5136, 0x83AB, 0x5137, + 0x83AC, 0x5138, 0x83AD, 0x5139, 0x83AE, 0x513A, 0x83AF, 0x513B, 0x83B0, 0x513C, 0x83B1, 0x513D, 0x83B2, 0x513E, 0x83B3, 0x5142, + 0x83B4, 0x5147, 0x83B5, 0x514A, 0x83B6, 0x514C, 0x83B7, 0x514E, 0x83B8, 0x514F, 0x83B9, 0x5150, 0x83BA, 0x5152, 0x83BB, 0x5153, + 0x83BC, 0x5157, 0x83BD, 0x5158, 0x83BE, 0x5159, 0x83BF, 0x515B, 0x83C0, 0x515D, 0x83C1, 0x515E, 0x83C2, 0x515F, 0x83C3, 0x5160, + 0x83C4, 0x5161, 0x83C5, 0x5163, 0x83C6, 0x5164, 0x83C7, 0x5166, 0x83C8, 0x5167, 0x83C9, 0x5169, 0x83CA, 0x516A, 0x83CB, 0x516F, + 0x83CC, 0x5172, 0x83CD, 0x517A, 0x83CE, 0x517E, 0x83CF, 0x517F, 0x83D0, 0x5183, 0x83D1, 0x5184, 0x83D2, 0x5186, 0x83D3, 0x5187, + 0x83D4, 0x518A, 0x83D5, 0x518B, 0x83D6, 0x518E, 0x83D7, 0x518F, 0x83D8, 0x5190, 0x83D9, 0x5191, 0x83DA, 0x5193, 0x83DB, 0x5194, + 0x83DC, 0x5198, 0x83DD, 0x519A, 0x83DE, 0x519D, 0x83DF, 0x519E, 0x83E0, 0x519F, 0x83E1, 0x51A1, 0x83E2, 0x51A3, 0x83E3, 0x51A6, + 0x83E4, 0x51A7, 0x83E5, 0x51A8, 0x83E6, 0x51A9, 0x83E7, 0x51AA, 0x83E8, 0x51AD, 0x83E9, 0x51AE, 0x83EA, 0x51B4, 0x83EB, 0x51B8, + 0x83EC, 0x51B9, 0x83ED, 0x51BA, 0x83EE, 0x51BE, 0x83EF, 0x51BF, 0x83F0, 0x51C1, 0x83F1, 0x51C2, 0x83F2, 0x51C3, 0x83F3, 0x51C5, + 0x83F4, 0x51C8, 0x83F5, 0x51CA, 0x83F6, 0x51CD, 0x83F7, 0x51CE, 0x83F8, 0x51D0, 0x83F9, 0x51D2, 0x83FA, 0x51D3, 0x83FB, 0x51D4, + 0x83FC, 0x51D5, 0x83FD, 0x51D6, 0x83FE, 0x51D7, 0x8440, 0x51D8, 0x8441, 0x51D9, 0x8442, 0x51DA, 0x8443, 0x51DC, 0x8444, 0x51DE, + 0x8445, 0x51DF, 0x8446, 0x51E2, 0x8447, 0x51E3, 0x8448, 0x51E5, 0x8449, 0x51E6, 0x844A, 0x51E7, 0x844B, 0x51E8, 0x844C, 0x51E9, + 0x844D, 0x51EA, 0x844E, 0x51EC, 0x844F, 0x51EE, 0x8450, 0x51F1, 0x8451, 0x51F2, 0x8452, 0x51F4, 0x8453, 0x51F7, 0x8454, 0x51FE, + 0x8455, 0x5204, 0x8456, 0x5205, 0x8457, 0x5209, 0x8458, 0x520B, 0x8459, 0x520C, 0x845A, 0x520F, 0x845B, 0x5210, 0x845C, 0x5213, + 0x845D, 0x5214, 0x845E, 0x5215, 0x845F, 0x521C, 0x8460, 0x521E, 0x8461, 0x521F, 0x8462, 0x5221, 0x8463, 0x5222, 0x8464, 0x5223, + 0x8465, 0x5225, 0x8466, 0x5226, 0x8467, 0x5227, 0x8468, 0x522A, 0x8469, 0x522C, 0x846A, 0x522F, 0x846B, 0x5231, 0x846C, 0x5232, + 0x846D, 0x5234, 0x846E, 0x5235, 0x846F, 0x523C, 0x8470, 0x523E, 0x8471, 0x5244, 0x8472, 0x5245, 0x8473, 0x5246, 0x8474, 0x5247, + 0x8475, 0x5248, 0x8476, 0x5249, 0x8477, 0x524B, 0x8478, 0x524E, 0x8479, 0x524F, 0x847A, 0x5252, 0x847B, 0x5253, 0x847C, 0x5255, + 0x847D, 0x5257, 0x847E, 0x5258, 0x8480, 0x5259, 0x8481, 0x525A, 0x8482, 0x525B, 0x8483, 0x525D, 0x8484, 0x525F, 0x8485, 0x5260, + 0x8486, 0x5262, 0x8487, 0x5263, 0x8488, 0x5264, 0x8489, 0x5266, 0x848A, 0x5268, 0x848B, 0x526B, 0x848C, 0x526C, 0x848D, 0x526D, + 0x848E, 0x526E, 0x848F, 0x5270, 0x8490, 0x5271, 0x8491, 0x5273, 0x8492, 0x5274, 0x8493, 0x5275, 0x8494, 0x5276, 0x8495, 0x5277, + 0x8496, 0x5278, 0x8497, 0x5279, 0x8498, 0x527A, 0x8499, 0x527B, 0x849A, 0x527C, 0x849B, 0x527E, 0x849C, 0x5280, 0x849D, 0x5283, + 0x849E, 0x5284, 0x849F, 0x5285, 0x84A0, 0x5286, 0x84A1, 0x5287, 0x84A2, 0x5289, 0x84A3, 0x528A, 0x84A4, 0x528B, 0x84A5, 0x528C, + 0x84A6, 0x528D, 0x84A7, 0x528E, 0x84A8, 0x528F, 0x84A9, 0x5291, 0x84AA, 0x5292, 0x84AB, 0x5294, 0x84AC, 0x5295, 0x84AD, 0x5296, + 0x84AE, 0x5297, 0x84AF, 0x5298, 0x84B0, 0x5299, 0x84B1, 0x529A, 0x84B2, 0x529C, 0x84B3, 0x52A4, 0x84B4, 0x52A5, 0x84B5, 0x52A6, + 0x84B6, 0x52A7, 0x84B7, 0x52AE, 0x84B8, 0x52AF, 0x84B9, 0x52B0, 0x84BA, 0x52B4, 0x84BB, 0x52B5, 0x84BC, 0x52B6, 0x84BD, 0x52B7, + 0x84BE, 0x52B8, 0x84BF, 0x52B9, 0x84C0, 0x52BA, 0x84C1, 0x52BB, 0x84C2, 0x52BC, 0x84C3, 0x52BD, 0x84C4, 0x52C0, 0x84C5, 0x52C1, + 0x84C6, 0x52C2, 0x84C7, 0x52C4, 0x84C8, 0x52C5, 0x84C9, 0x52C6, 0x84CA, 0x52C8, 0x84CB, 0x52CA, 0x84CC, 0x52CC, 0x84CD, 0x52CD, + 0x84CE, 0x52CE, 0x84CF, 0x52CF, 0x84D0, 0x52D1, 0x84D1, 0x52D3, 0x84D2, 0x52D4, 0x84D3, 0x52D5, 0x84D4, 0x52D7, 0x84D5, 0x52D9, + 0x84D6, 0x52DA, 0x84D7, 0x52DB, 0x84D8, 0x52DC, 0x84D9, 0x52DD, 0x84DA, 0x52DE, 0x84DB, 0x52E0, 0x84DC, 0x52E1, 0x84DD, 0x52E2, + 0x84DE, 0x52E3, 0x84DF, 0x52E5, 0x84E0, 0x52E6, 0x84E1, 0x52E7, 0x84E2, 0x52E8, 0x84E3, 0x52E9, 0x84E4, 0x52EA, 0x84E5, 0x52EB, + 0x84E6, 0x52EC, 0x84E7, 0x52ED, 0x84E8, 0x52EE, 0x84E9, 0x52EF, 0x84EA, 0x52F1, 0x84EB, 0x52F2, 0x84EC, 0x52F3, 0x84ED, 0x52F4, + 0x84EE, 0x52F5, 0x84EF, 0x52F6, 0x84F0, 0x52F7, 0x84F1, 0x52F8, 0x84F2, 0x52FB, 0x84F3, 0x52FC, 0x84F4, 0x52FD, 0x84F5, 0x5301, + 0x84F6, 0x5302, 0x84F7, 0x5303, 0x84F8, 0x5304, 0x84F9, 0x5307, 0x84FA, 0x5309, 0x84FB, 0x530A, 0x84FC, 0x530B, 0x84FD, 0x530C, + 0x84FE, 0x530E, 0x8540, 0x5311, 0x8541, 0x5312, 0x8542, 0x5313, 0x8543, 0x5314, 0x8544, 0x5318, 0x8545, 0x531B, 0x8546, 0x531C, + 0x8547, 0x531E, 0x8548, 0x531F, 0x8549, 0x5322, 0x854A, 0x5324, 0x854B, 0x5325, 0x854C, 0x5327, 0x854D, 0x5328, 0x854E, 0x5329, + 0x854F, 0x532B, 0x8550, 0x532C, 0x8551, 0x532D, 0x8552, 0x532F, 0x8553, 0x5330, 0x8554, 0x5331, 0x8555, 0x5332, 0x8556, 0x5333, + 0x8557, 0x5334, 0x8558, 0x5335, 0x8559, 0x5336, 0x855A, 0x5337, 0x855B, 0x5338, 0x855C, 0x533C, 0x855D, 0x533D, 0x855E, 0x5340, + 0x855F, 0x5342, 0x8560, 0x5344, 0x8561, 0x5346, 0x8562, 0x534B, 0x8563, 0x534C, 0x8564, 0x534D, 0x8565, 0x5350, 0x8566, 0x5354, + 0x8567, 0x5358, 0x8568, 0x5359, 0x8569, 0x535B, 0x856A, 0x535D, 0x856B, 0x5365, 0x856C, 0x5368, 0x856D, 0x536A, 0x856E, 0x536C, + 0x856F, 0x536D, 0x8570, 0x5372, 0x8571, 0x5376, 0x8572, 0x5379, 0x8573, 0x537B, 0x8574, 0x537C, 0x8575, 0x537D, 0x8576, 0x537E, + 0x8577, 0x5380, 0x8578, 0x5381, 0x8579, 0x5383, 0x857A, 0x5387, 0x857B, 0x5388, 0x857C, 0x538A, 0x857D, 0x538E, 0x857E, 0x538F, + 0x8580, 0x5390, 0x8581, 0x5391, 0x8582, 0x5392, 0x8583, 0x5393, 0x8584, 0x5394, 0x8585, 0x5396, 0x8586, 0x5397, 0x8587, 0x5399, + 0x8588, 0x539B, 0x8589, 0x539C, 0x858A, 0x539E, 0x858B, 0x53A0, 0x858C, 0x53A1, 0x858D, 0x53A4, 0x858E, 0x53A7, 0x858F, 0x53AA, + 0x8590, 0x53AB, 0x8591, 0x53AC, 0x8592, 0x53AD, 0x8593, 0x53AF, 0x8594, 0x53B0, 0x8595, 0x53B1, 0x8596, 0x53B2, 0x8597, 0x53B3, + 0x8598, 0x53B4, 0x8599, 0x53B5, 0x859A, 0x53B7, 0x859B, 0x53B8, 0x859C, 0x53B9, 0x859D, 0x53BA, 0x859E, 0x53BC, 0x859F, 0x53BD, + 0x85A0, 0x53BE, 0x85A1, 0x53C0, 0x85A2, 0x53C3, 0x85A3, 0x53C4, 0x85A4, 0x53C5, 0x85A5, 0x53C6, 0x85A6, 0x53C7, 0x85A7, 0x53CE, + 0x85A8, 0x53CF, 0x85A9, 0x53D0, 0x85AA, 0x53D2, 0x85AB, 0x53D3, 0x85AC, 0x53D5, 0x85AD, 0x53DA, 0x85AE, 0x53DC, 0x85AF, 0x53DD, + 0x85B0, 0x53DE, 0x85B1, 0x53E1, 0x85B2, 0x53E2, 0x85B3, 0x53E7, 0x85B4, 0x53F4, 0x85B5, 0x53FA, 0x85B6, 0x53FE, 0x85B7, 0x53FF, + 0x85B8, 0x5400, 0x85B9, 0x5402, 0x85BA, 0x5405, 0x85BB, 0x5407, 0x85BC, 0x540B, 0x85BD, 0x5414, 0x85BE, 0x5418, 0x85BF, 0x5419, + 0x85C0, 0x541A, 0x85C1, 0x541C, 0x85C2, 0x5422, 0x85C3, 0x5424, 0x85C4, 0x5425, 0x85C5, 0x542A, 0x85C6, 0x5430, 0x85C7, 0x5433, + 0x85C8, 0x5436, 0x85C9, 0x5437, 0x85CA, 0x543A, 0x85CB, 0x543D, 0x85CC, 0x543F, 0x85CD, 0x5441, 0x85CE, 0x5442, 0x85CF, 0x5444, + 0x85D0, 0x5445, 0x85D1, 0x5447, 0x85D2, 0x5449, 0x85D3, 0x544C, 0x85D4, 0x544D, 0x85D5, 0x544E, 0x85D6, 0x544F, 0x85D7, 0x5451, + 0x85D8, 0x545A, 0x85D9, 0x545D, 0x85DA, 0x545E, 0x85DB, 0x545F, 0x85DC, 0x5460, 0x85DD, 0x5461, 0x85DE, 0x5463, 0x85DF, 0x5465, + 0x85E0, 0x5467, 0x85E1, 0x5469, 0x85E2, 0x546A, 0x85E3, 0x546B, 0x85E4, 0x546C, 0x85E5, 0x546D, 0x85E6, 0x546E, 0x85E7, 0x546F, + 0x85E8, 0x5470, 0x85E9, 0x5474, 0x85EA, 0x5479, 0x85EB, 0x547A, 0x85EC, 0x547E, 0x85ED, 0x547F, 0x85EE, 0x5481, 0x85EF, 0x5483, + 0x85F0, 0x5485, 0x85F1, 0x5487, 0x85F2, 0x5488, 0x85F3, 0x5489, 0x85F4, 0x548A, 0x85F5, 0x548D, 0x85F6, 0x5491, 0x85F7, 0x5493, + 0x85F8, 0x5497, 0x85F9, 0x5498, 0x85FA, 0x549C, 0x85FB, 0x549E, 0x85FC, 0x549F, 0x85FD, 0x54A0, 0x85FE, 0x54A1, 0x8640, 0x54A2, + 0x8641, 0x54A5, 0x8642, 0x54AE, 0x8643, 0x54B0, 0x8644, 0x54B2, 0x8645, 0x54B5, 0x8646, 0x54B6, 0x8647, 0x54B7, 0x8648, 0x54B9, + 0x8649, 0x54BA, 0x864A, 0x54BC, 0x864B, 0x54BE, 0x864C, 0x54C3, 0x864D, 0x54C5, 0x864E, 0x54CA, 0x864F, 0x54CB, 0x8650, 0x54D6, + 0x8651, 0x54D8, 0x8652, 0x54DB, 0x8653, 0x54E0, 0x8654, 0x54E1, 0x8655, 0x54E2, 0x8656, 0x54E3, 0x8657, 0x54E4, 0x8658, 0x54EB, + 0x8659, 0x54EC, 0x865A, 0x54EF, 0x865B, 0x54F0, 0x865C, 0x54F1, 0x865D, 0x54F4, 0x865E, 0x54F5, 0x865F, 0x54F6, 0x8660, 0x54F7, + 0x8661, 0x54F8, 0x8662, 0x54F9, 0x8663, 0x54FB, 0x8664, 0x54FE, 0x8665, 0x5500, 0x8666, 0x5502, 0x8667, 0x5503, 0x8668, 0x5504, + 0x8669, 0x5505, 0x866A, 0x5508, 0x866B, 0x550A, 0x866C, 0x550B, 0x866D, 0x550C, 0x866E, 0x550D, 0x866F, 0x550E, 0x8670, 0x5512, + 0x8671, 0x5513, 0x8672, 0x5515, 0x8673, 0x5516, 0x8674, 0x5517, 0x8675, 0x5518, 0x8676, 0x5519, 0x8677, 0x551A, 0x8678, 0x551C, + 0x8679, 0x551D, 0x867A, 0x551E, 0x867B, 0x551F, 0x867C, 0x5521, 0x867D, 0x5525, 0x867E, 0x5526, 0x8680, 0x5528, 0x8681, 0x5529, + 0x8682, 0x552B, 0x8683, 0x552D, 0x8684, 0x5532, 0x8685, 0x5534, 0x8686, 0x5535, 0x8687, 0x5536, 0x8688, 0x5538, 0x8689, 0x5539, + 0x868A, 0x553A, 0x868B, 0x553B, 0x868C, 0x553D, 0x868D, 0x5540, 0x868E, 0x5542, 0x868F, 0x5545, 0x8690, 0x5547, 0x8691, 0x5548, + 0x8692, 0x554B, 0x8693, 0x554C, 0x8694, 0x554D, 0x8695, 0x554E, 0x8696, 0x554F, 0x8697, 0x5551, 0x8698, 0x5552, 0x8699, 0x5553, + 0x869A, 0x5554, 0x869B, 0x5557, 0x869C, 0x5558, 0x869D, 0x5559, 0x869E, 0x555A, 0x869F, 0x555B, 0x86A0, 0x555D, 0x86A1, 0x555E, + 0x86A2, 0x555F, 0x86A3, 0x5560, 0x86A4, 0x5562, 0x86A5, 0x5563, 0x86A6, 0x5568, 0x86A7, 0x5569, 0x86A8, 0x556B, 0x86A9, 0x556F, + 0x86AA, 0x5570, 0x86AB, 0x5571, 0x86AC, 0x5572, 0x86AD, 0x5573, 0x86AE, 0x5574, 0x86AF, 0x5579, 0x86B0, 0x557A, 0x86B1, 0x557D, + 0x86B2, 0x557F, 0x86B3, 0x5585, 0x86B4, 0x5586, 0x86B5, 0x558C, 0x86B6, 0x558D, 0x86B7, 0x558E, 0x86B8, 0x5590, 0x86B9, 0x5592, + 0x86BA, 0x5593, 0x86BB, 0x5595, 0x86BC, 0x5596, 0x86BD, 0x5597, 0x86BE, 0x559A, 0x86BF, 0x559B, 0x86C0, 0x559E, 0x86C1, 0x55A0, + 0x86C2, 0x55A1, 0x86C3, 0x55A2, 0x86C4, 0x55A3, 0x86C5, 0x55A4, 0x86C6, 0x55A5, 0x86C7, 0x55A6, 0x86C8, 0x55A8, 0x86C9, 0x55A9, + 0x86CA, 0x55AA, 0x86CB, 0x55AB, 0x86CC, 0x55AC, 0x86CD, 0x55AD, 0x86CE, 0x55AE, 0x86CF, 0x55AF, 0x86D0, 0x55B0, 0x86D1, 0x55B2, + 0x86D2, 0x55B4, 0x86D3, 0x55B6, 0x86D4, 0x55B8, 0x86D5, 0x55BA, 0x86D6, 0x55BC, 0x86D7, 0x55BF, 0x86D8, 0x55C0, 0x86D9, 0x55C1, + 0x86DA, 0x55C2, 0x86DB, 0x55C3, 0x86DC, 0x55C6, 0x86DD, 0x55C7, 0x86DE, 0x55C8, 0x86DF, 0x55CA, 0x86E0, 0x55CB, 0x86E1, 0x55CE, + 0x86E2, 0x55CF, 0x86E3, 0x55D0, 0x86E4, 0x55D5, 0x86E5, 0x55D7, 0x86E6, 0x55D8, 0x86E7, 0x55D9, 0x86E8, 0x55DA, 0x86E9, 0x55DB, + 0x86EA, 0x55DE, 0x86EB, 0x55E0, 0x86EC, 0x55E2, 0x86ED, 0x55E7, 0x86EE, 0x55E9, 0x86EF, 0x55ED, 0x86F0, 0x55EE, 0x86F1, 0x55F0, + 0x86F2, 0x55F1, 0x86F3, 0x55F4, 0x86F4, 0x55F6, 0x86F5, 0x55F8, 0x86F6, 0x55F9, 0x86F7, 0x55FA, 0x86F8, 0x55FB, 0x86F9, 0x55FC, + 0x86FA, 0x55FF, 0x86FB, 0x5602, 0x86FC, 0x5603, 0x86FD, 0x5604, 0x86FE, 0x5605, 0x8740, 0x5606, 0x8741, 0x5607, 0x8742, 0x560A, + 0x8743, 0x560B, 0x8744, 0x560D, 0x8745, 0x5610, 0x8746, 0x5611, 0x8747, 0x5612, 0x8748, 0x5613, 0x8749, 0x5614, 0x874A, 0x5615, + 0x874B, 0x5616, 0x874C, 0x5617, 0x874D, 0x5619, 0x874E, 0x561A, 0x874F, 0x561C, 0x8750, 0x561D, 0x8751, 0x5620, 0x8752, 0x5621, + 0x8753, 0x5622, 0x8754, 0x5625, 0x8755, 0x5626, 0x8756, 0x5628, 0x8757, 0x5629, 0x8758, 0x562A, 0x8759, 0x562B, 0x875A, 0x562E, + 0x875B, 0x562F, 0x875C, 0x5630, 0x875D, 0x5633, 0x875E, 0x5635, 0x875F, 0x5637, 0x8760, 0x5638, 0x8761, 0x563A, 0x8762, 0x563C, + 0x8763, 0x563D, 0x8764, 0x563E, 0x8765, 0x5640, 0x8766, 0x5641, 0x8767, 0x5642, 0x8768, 0x5643, 0x8769, 0x5644, 0x876A, 0x5645, + 0x876B, 0x5646, 0x876C, 0x5647, 0x876D, 0x5648, 0x876E, 0x5649, 0x876F, 0x564A, 0x8770, 0x564B, 0x8771, 0x564F, 0x8772, 0x5650, + 0x8773, 0x5651, 0x8774, 0x5652, 0x8775, 0x5653, 0x8776, 0x5655, 0x8777, 0x5656, 0x8778, 0x565A, 0x8779, 0x565B, 0x877A, 0x565D, + 0x877B, 0x565E, 0x877C, 0x565F, 0x877D, 0x5660, 0x877E, 0x5661, 0x8780, 0x5663, 0x8781, 0x5665, 0x8782, 0x5666, 0x8783, 0x5667, + 0x8784, 0x566D, 0x8785, 0x566E, 0x8786, 0x566F, 0x8787, 0x5670, 0x8788, 0x5672, 0x8789, 0x5673, 0x878A, 0x5674, 0x878B, 0x5675, + 0x878C, 0x5677, 0x878D, 0x5678, 0x878E, 0x5679, 0x878F, 0x567A, 0x8790, 0x567D, 0x8791, 0x567E, 0x8792, 0x567F, 0x8793, 0x5680, + 0x8794, 0x5681, 0x8795, 0x5682, 0x8796, 0x5683, 0x8797, 0x5684, 0x8798, 0x5687, 0x8799, 0x5688, 0x879A, 0x5689, 0x879B, 0x568A, + 0x879C, 0x568B, 0x879D, 0x568C, 0x879E, 0x568D, 0x879F, 0x5690, 0x87A0, 0x5691, 0x87A1, 0x5692, 0x87A2, 0x5694, 0x87A3, 0x5695, + 0x87A4, 0x5696, 0x87A5, 0x5697, 0x87A6, 0x5698, 0x87A7, 0x5699, 0x87A8, 0x569A, 0x87A9, 0x569B, 0x87AA, 0x569C, 0x87AB, 0x569D, + 0x87AC, 0x569E, 0x87AD, 0x569F, 0x87AE, 0x56A0, 0x87AF, 0x56A1, 0x87B0, 0x56A2, 0x87B1, 0x56A4, 0x87B2, 0x56A5, 0x87B3, 0x56A6, + 0x87B4, 0x56A7, 0x87B5, 0x56A8, 0x87B6, 0x56A9, 0x87B7, 0x56AA, 0x87B8, 0x56AB, 0x87B9, 0x56AC, 0x87BA, 0x56AD, 0x87BB, 0x56AE, + 0x87BC, 0x56B0, 0x87BD, 0x56B1, 0x87BE, 0x56B2, 0x87BF, 0x56B3, 0x87C0, 0x56B4, 0x87C1, 0x56B5, 0x87C2, 0x56B6, 0x87C3, 0x56B8, + 0x87C4, 0x56B9, 0x87C5, 0x56BA, 0x87C6, 0x56BB, 0x87C7, 0x56BD, 0x87C8, 0x56BE, 0x87C9, 0x56BF, 0x87CA, 0x56C0, 0x87CB, 0x56C1, + 0x87CC, 0x56C2, 0x87CD, 0x56C3, 0x87CE, 0x56C4, 0x87CF, 0x56C5, 0x87D0, 0x56C6, 0x87D1, 0x56C7, 0x87D2, 0x56C8, 0x87D3, 0x56C9, + 0x87D4, 0x56CB, 0x87D5, 0x56CC, 0x87D6, 0x56CD, 0x87D7, 0x56CE, 0x87D8, 0x56CF, 0x87D9, 0x56D0, 0x87DA, 0x56D1, 0x87DB, 0x56D2, + 0x87DC, 0x56D3, 0x87DD, 0x56D5, 0x87DE, 0x56D6, 0x87DF, 0x56D8, 0x87E0, 0x56D9, 0x87E1, 0x56DC, 0x87E2, 0x56E3, 0x87E3, 0x56E5, + 0x87E4, 0x56E6, 0x87E5, 0x56E7, 0x87E6, 0x56E8, 0x87E7, 0x56E9, 0x87E8, 0x56EA, 0x87E9, 0x56EC, 0x87EA, 0x56EE, 0x87EB, 0x56EF, + 0x87EC, 0x56F2, 0x87ED, 0x56F3, 0x87EE, 0x56F6, 0x87EF, 0x56F7, 0x87F0, 0x56F8, 0x87F1, 0x56FB, 0x87F2, 0x56FC, 0x87F3, 0x5700, + 0x87F4, 0x5701, 0x87F5, 0x5702, 0x87F6, 0x5705, 0x87F7, 0x5707, 0x87F8, 0x570B, 0x87F9, 0x570C, 0x87FA, 0x570D, 0x87FB, 0x570E, + 0x87FC, 0x570F, 0x87FD, 0x5710, 0x87FE, 0x5711, 0x8840, 0x5712, 0x8841, 0x5713, 0x8842, 0x5714, 0x8843, 0x5715, 0x8844, 0x5716, + 0x8845, 0x5717, 0x8846, 0x5718, 0x8847, 0x5719, 0x8848, 0x571A, 0x8849, 0x571B, 0x884A, 0x571D, 0x884B, 0x571E, 0x884C, 0x5720, + 0x884D, 0x5721, 0x884E, 0x5722, 0x884F, 0x5724, 0x8850, 0x5725, 0x8851, 0x5726, 0x8852, 0x5727, 0x8853, 0x572B, 0x8854, 0x5731, + 0x8855, 0x5732, 0x8856, 0x5734, 0x8857, 0x5735, 0x8858, 0x5736, 0x8859, 0x5737, 0x885A, 0x5738, 0x885B, 0x573C, 0x885C, 0x573D, + 0x885D, 0x573F, 0x885E, 0x5741, 0x885F, 0x5743, 0x8860, 0x5744, 0x8861, 0x5745, 0x8862, 0x5746, 0x8863, 0x5748, 0x8864, 0x5749, + 0x8865, 0x574B, 0x8866, 0x5752, 0x8867, 0x5753, 0x8868, 0x5754, 0x8869, 0x5755, 0x886A, 0x5756, 0x886B, 0x5758, 0x886C, 0x5759, + 0x886D, 0x5762, 0x886E, 0x5763, 0x886F, 0x5765, 0x8870, 0x5767, 0x8871, 0x576C, 0x8872, 0x576E, 0x8873, 0x5770, 0x8874, 0x5771, + 0x8875, 0x5772, 0x8876, 0x5774, 0x8877, 0x5775, 0x8878, 0x5778, 0x8879, 0x5779, 0x887A, 0x577A, 0x887B, 0x577D, 0x887C, 0x577E, + 0x887D, 0x577F, 0x887E, 0x5780, 0x8880, 0x5781, 0x8881, 0x5787, 0x8882, 0x5788, 0x8883, 0x5789, 0x8884, 0x578A, 0x8885, 0x578D, + 0x8886, 0x578E, 0x8887, 0x578F, 0x8888, 0x5790, 0x8889, 0x5791, 0x888A, 0x5794, 0x888B, 0x5795, 0x888C, 0x5796, 0x888D, 0x5797, + 0x888E, 0x5798, 0x888F, 0x5799, 0x8890, 0x579A, 0x8891, 0x579C, 0x8892, 0x579D, 0x8893, 0x579E, 0x8894, 0x579F, 0x8895, 0x57A5, + 0x8896, 0x57A8, 0x8897, 0x57AA, 0x8898, 0x57AC, 0x8899, 0x57AF, 0x889A, 0x57B0, 0x889B, 0x57B1, 0x889C, 0x57B3, 0x889D, 0x57B5, + 0x889E, 0x57B6, 0x889F, 0x57B7, 0x88A0, 0x57B9, 0x88A1, 0x57BA, 0x88A2, 0x57BB, 0x88A3, 0x57BC, 0x88A4, 0x57BD, 0x88A5, 0x57BE, + 0x88A6, 0x57BF, 0x88A7, 0x57C0, 0x88A8, 0x57C1, 0x88A9, 0x57C4, 0x88AA, 0x57C5, 0x88AB, 0x57C6, 0x88AC, 0x57C7, 0x88AD, 0x57C8, + 0x88AE, 0x57C9, 0x88AF, 0x57CA, 0x88B0, 0x57CC, 0x88B1, 0x57CD, 0x88B2, 0x57D0, 0x88B3, 0x57D1, 0x88B4, 0x57D3, 0x88B5, 0x57D6, + 0x88B6, 0x57D7, 0x88B7, 0x57DB, 0x88B8, 0x57DC, 0x88B9, 0x57DE, 0x88BA, 0x57E1, 0x88BB, 0x57E2, 0x88BC, 0x57E3, 0x88BD, 0x57E5, + 0x88BE, 0x57E6, 0x88BF, 0x57E7, 0x88C0, 0x57E8, 0x88C1, 0x57E9, 0x88C2, 0x57EA, 0x88C3, 0x57EB, 0x88C4, 0x57EC, 0x88C5, 0x57EE, + 0x88C6, 0x57F0, 0x88C7, 0x57F1, 0x88C8, 0x57F2, 0x88C9, 0x57F3, 0x88CA, 0x57F5, 0x88CB, 0x57F6, 0x88CC, 0x57F7, 0x88CD, 0x57FB, + 0x88CE, 0x57FC, 0x88CF, 0x57FE, 0x88D0, 0x57FF, 0x88D1, 0x5801, 0x88D2, 0x5803, 0x88D3, 0x5804, 0x88D4, 0x5805, 0x88D5, 0x5808, + 0x88D6, 0x5809, 0x88D7, 0x580A, 0x88D8, 0x580C, 0x88D9, 0x580E, 0x88DA, 0x580F, 0x88DB, 0x5810, 0x88DC, 0x5812, 0x88DD, 0x5813, + 0x88DE, 0x5814, 0x88DF, 0x5816, 0x88E0, 0x5817, 0x88E1, 0x5818, 0x88E2, 0x581A, 0x88E3, 0x581B, 0x88E4, 0x581C, 0x88E5, 0x581D, + 0x88E6, 0x581F, 0x88E7, 0x5822, 0x88E8, 0x5823, 0x88E9, 0x5825, 0x88EA, 0x5826, 0x88EB, 0x5827, 0x88EC, 0x5828, 0x88ED, 0x5829, + 0x88EE, 0x582B, 0x88EF, 0x582C, 0x88F0, 0x582D, 0x88F1, 0x582E, 0x88F2, 0x582F, 0x88F3, 0x5831, 0x88F4, 0x5832, 0x88F5, 0x5833, + 0x88F6, 0x5834, 0x88F7, 0x5836, 0x88F8, 0x5837, 0x88F9, 0x5838, 0x88FA, 0x5839, 0x88FB, 0x583A, 0x88FC, 0x583B, 0x88FD, 0x583C, + 0x88FE, 0x583D, 0x8940, 0x583E, 0x8941, 0x583F, 0x8942, 0x5840, 0x8943, 0x5841, 0x8944, 0x5842, 0x8945, 0x5843, 0x8946, 0x5845, + 0x8947, 0x5846, 0x8948, 0x5847, 0x8949, 0x5848, 0x894A, 0x5849, 0x894B, 0x584A, 0x894C, 0x584B, 0x894D, 0x584E, 0x894E, 0x584F, + 0x894F, 0x5850, 0x8950, 0x5852, 0x8951, 0x5853, 0x8952, 0x5855, 0x8953, 0x5856, 0x8954, 0x5857, 0x8955, 0x5859, 0x8956, 0x585A, + 0x8957, 0x585B, 0x8958, 0x585C, 0x8959, 0x585D, 0x895A, 0x585F, 0x895B, 0x5860, 0x895C, 0x5861, 0x895D, 0x5862, 0x895E, 0x5863, + 0x895F, 0x5864, 0x8960, 0x5866, 0x8961, 0x5867, 0x8962, 0x5868, 0x8963, 0x5869, 0x8964, 0x586A, 0x8965, 0x586D, 0x8966, 0x586E, + 0x8967, 0x586F, 0x8968, 0x5870, 0x8969, 0x5871, 0x896A, 0x5872, 0x896B, 0x5873, 0x896C, 0x5874, 0x896D, 0x5875, 0x896E, 0x5876, + 0x896F, 0x5877, 0x8970, 0x5878, 0x8971, 0x5879, 0x8972, 0x587A, 0x8973, 0x587B, 0x8974, 0x587C, 0x8975, 0x587D, 0x8976, 0x587F, + 0x8977, 0x5882, 0x8978, 0x5884, 0x8979, 0x5886, 0x897A, 0x5887, 0x897B, 0x5888, 0x897C, 0x588A, 0x897D, 0x588B, 0x897E, 0x588C, + 0x8980, 0x588D, 0x8981, 0x588E, 0x8982, 0x588F, 0x8983, 0x5890, 0x8984, 0x5891, 0x8985, 0x5894, 0x8986, 0x5895, 0x8987, 0x5896, + 0x8988, 0x5897, 0x8989, 0x5898, 0x898A, 0x589B, 0x898B, 0x589C, 0x898C, 0x589D, 0x898D, 0x58A0, 0x898E, 0x58A1, 0x898F, 0x58A2, + 0x8990, 0x58A3, 0x8991, 0x58A4, 0x8992, 0x58A5, 0x8993, 0x58A6, 0x8994, 0x58A7, 0x8995, 0x58AA, 0x8996, 0x58AB, 0x8997, 0x58AC, + 0x8998, 0x58AD, 0x8999, 0x58AE, 0x899A, 0x58AF, 0x899B, 0x58B0, 0x899C, 0x58B1, 0x899D, 0x58B2, 0x899E, 0x58B3, 0x899F, 0x58B4, + 0x89A0, 0x58B5, 0x89A1, 0x58B6, 0x89A2, 0x58B7, 0x89A3, 0x58B8, 0x89A4, 0x58B9, 0x89A5, 0x58BA, 0x89A6, 0x58BB, 0x89A7, 0x58BD, + 0x89A8, 0x58BE, 0x89A9, 0x58BF, 0x89AA, 0x58C0, 0x89AB, 0x58C2, 0x89AC, 0x58C3, 0x89AD, 0x58C4, 0x89AE, 0x58C6, 0x89AF, 0x58C7, + 0x89B0, 0x58C8, 0x89B1, 0x58C9, 0x89B2, 0x58CA, 0x89B3, 0x58CB, 0x89B4, 0x58CC, 0x89B5, 0x58CD, 0x89B6, 0x58CE, 0x89B7, 0x58CF, + 0x89B8, 0x58D0, 0x89B9, 0x58D2, 0x89BA, 0x58D3, 0x89BB, 0x58D4, 0x89BC, 0x58D6, 0x89BD, 0x58D7, 0x89BE, 0x58D8, 0x89BF, 0x58D9, + 0x89C0, 0x58DA, 0x89C1, 0x58DB, 0x89C2, 0x58DC, 0x89C3, 0x58DD, 0x89C4, 0x58DE, 0x89C5, 0x58DF, 0x89C6, 0x58E0, 0x89C7, 0x58E1, + 0x89C8, 0x58E2, 0x89C9, 0x58E3, 0x89CA, 0x58E5, 0x89CB, 0x58E6, 0x89CC, 0x58E7, 0x89CD, 0x58E8, 0x89CE, 0x58E9, 0x89CF, 0x58EA, + 0x89D0, 0x58ED, 0x89D1, 0x58EF, 0x89D2, 0x58F1, 0x89D3, 0x58F2, 0x89D4, 0x58F4, 0x89D5, 0x58F5, 0x89D6, 0x58F7, 0x89D7, 0x58F8, + 0x89D8, 0x58FA, 0x89D9, 0x58FB, 0x89DA, 0x58FC, 0x89DB, 0x58FD, 0x89DC, 0x58FE, 0x89DD, 0x58FF, 0x89DE, 0x5900, 0x89DF, 0x5901, + 0x89E0, 0x5903, 0x89E1, 0x5905, 0x89E2, 0x5906, 0x89E3, 0x5908, 0x89E4, 0x5909, 0x89E5, 0x590A, 0x89E6, 0x590B, 0x89E7, 0x590C, + 0x89E8, 0x590E, 0x89E9, 0x5910, 0x89EA, 0x5911, 0x89EB, 0x5912, 0x89EC, 0x5913, 0x89ED, 0x5917, 0x89EE, 0x5918, 0x89EF, 0x591B, + 0x89F0, 0x591D, 0x89F1, 0x591E, 0x89F2, 0x5920, 0x89F3, 0x5921, 0x89F4, 0x5922, 0x89F5, 0x5923, 0x89F6, 0x5926, 0x89F7, 0x5928, + 0x89F8, 0x592C, 0x89F9, 0x5930, 0x89FA, 0x5932, 0x89FB, 0x5933, 0x89FC, 0x5935, 0x89FD, 0x5936, 0x89FE, 0x593B, 0x8A40, 0x593D, + 0x8A41, 0x593E, 0x8A42, 0x593F, 0x8A43, 0x5940, 0x8A44, 0x5943, 0x8A45, 0x5945, 0x8A46, 0x5946, 0x8A47, 0x594A, 0x8A48, 0x594C, + 0x8A49, 0x594D, 0x8A4A, 0x5950, 0x8A4B, 0x5952, 0x8A4C, 0x5953, 0x8A4D, 0x5959, 0x8A4E, 0x595B, 0x8A4F, 0x595C, 0x8A50, 0x595D, + 0x8A51, 0x595E, 0x8A52, 0x595F, 0x8A53, 0x5961, 0x8A54, 0x5963, 0x8A55, 0x5964, 0x8A56, 0x5966, 0x8A57, 0x5967, 0x8A58, 0x5968, + 0x8A59, 0x5969, 0x8A5A, 0x596A, 0x8A5B, 0x596B, 0x8A5C, 0x596C, 0x8A5D, 0x596D, 0x8A5E, 0x596E, 0x8A5F, 0x596F, 0x8A60, 0x5970, + 0x8A61, 0x5971, 0x8A62, 0x5972, 0x8A63, 0x5975, 0x8A64, 0x5977, 0x8A65, 0x597A, 0x8A66, 0x597B, 0x8A67, 0x597C, 0x8A68, 0x597E, + 0x8A69, 0x597F, 0x8A6A, 0x5980, 0x8A6B, 0x5985, 0x8A6C, 0x5989, 0x8A6D, 0x598B, 0x8A6E, 0x598C, 0x8A6F, 0x598E, 0x8A70, 0x598F, + 0x8A71, 0x5990, 0x8A72, 0x5991, 0x8A73, 0x5994, 0x8A74, 0x5995, 0x8A75, 0x5998, 0x8A76, 0x599A, 0x8A77, 0x599B, 0x8A78, 0x599C, + 0x8A79, 0x599D, 0x8A7A, 0x599F, 0x8A7B, 0x59A0, 0x8A7C, 0x59A1, 0x8A7D, 0x59A2, 0x8A7E, 0x59A6, 0x8A80, 0x59A7, 0x8A81, 0x59AC, + 0x8A82, 0x59AD, 0x8A83, 0x59B0, 0x8A84, 0x59B1, 0x8A85, 0x59B3, 0x8A86, 0x59B4, 0x8A87, 0x59B5, 0x8A88, 0x59B6, 0x8A89, 0x59B7, + 0x8A8A, 0x59B8, 0x8A8B, 0x59BA, 0x8A8C, 0x59BC, 0x8A8D, 0x59BD, 0x8A8E, 0x59BF, 0x8A8F, 0x59C0, 0x8A90, 0x59C1, 0x8A91, 0x59C2, + 0x8A92, 0x59C3, 0x8A93, 0x59C4, 0x8A94, 0x59C5, 0x8A95, 0x59C7, 0x8A96, 0x59C8, 0x8A97, 0x59C9, 0x8A98, 0x59CC, 0x8A99, 0x59CD, + 0x8A9A, 0x59CE, 0x8A9B, 0x59CF, 0x8A9C, 0x59D5, 0x8A9D, 0x59D6, 0x8A9E, 0x59D9, 0x8A9F, 0x59DB, 0x8AA0, 0x59DE, 0x8AA1, 0x59DF, + 0x8AA2, 0x59E0, 0x8AA3, 0x59E1, 0x8AA4, 0x59E2, 0x8AA5, 0x59E4, 0x8AA6, 0x59E6, 0x8AA7, 0x59E7, 0x8AA8, 0x59E9, 0x8AA9, 0x59EA, + 0x8AAA, 0x59EB, 0x8AAB, 0x59ED, 0x8AAC, 0x59EE, 0x8AAD, 0x59EF, 0x8AAE, 0x59F0, 0x8AAF, 0x59F1, 0x8AB0, 0x59F2, 0x8AB1, 0x59F3, + 0x8AB2, 0x59F4, 0x8AB3, 0x59F5, 0x8AB4, 0x59F6, 0x8AB5, 0x59F7, 0x8AB6, 0x59F8, 0x8AB7, 0x59FA, 0x8AB8, 0x59FC, 0x8AB9, 0x59FD, + 0x8ABA, 0x59FE, 0x8ABB, 0x5A00, 0x8ABC, 0x5A02, 0x8ABD, 0x5A0A, 0x8ABE, 0x5A0B, 0x8ABF, 0x5A0D, 0x8AC0, 0x5A0E, 0x8AC1, 0x5A0F, + 0x8AC2, 0x5A10, 0x8AC3, 0x5A12, 0x8AC4, 0x5A14, 0x8AC5, 0x5A15, 0x8AC6, 0x5A16, 0x8AC7, 0x5A17, 0x8AC8, 0x5A19, 0x8AC9, 0x5A1A, + 0x8ACA, 0x5A1B, 0x8ACB, 0x5A1D, 0x8ACC, 0x5A1E, 0x8ACD, 0x5A21, 0x8ACE, 0x5A22, 0x8ACF, 0x5A24, 0x8AD0, 0x5A26, 0x8AD1, 0x5A27, + 0x8AD2, 0x5A28, 0x8AD3, 0x5A2A, 0x8AD4, 0x5A2B, 0x8AD5, 0x5A2C, 0x8AD6, 0x5A2D, 0x8AD7, 0x5A2E, 0x8AD8, 0x5A2F, 0x8AD9, 0x5A30, + 0x8ADA, 0x5A33, 0x8ADB, 0x5A35, 0x8ADC, 0x5A37, 0x8ADD, 0x5A38, 0x8ADE, 0x5A39, 0x8ADF, 0x5A3A, 0x8AE0, 0x5A3B, 0x8AE1, 0x5A3D, + 0x8AE2, 0x5A3E, 0x8AE3, 0x5A3F, 0x8AE4, 0x5A41, 0x8AE5, 0x5A42, 0x8AE6, 0x5A43, 0x8AE7, 0x5A44, 0x8AE8, 0x5A45, 0x8AE9, 0x5A47, + 0x8AEA, 0x5A48, 0x8AEB, 0x5A4B, 0x8AEC, 0x5A4C, 0x8AED, 0x5A4D, 0x8AEE, 0x5A4E, 0x8AEF, 0x5A4F, 0x8AF0, 0x5A50, 0x8AF1, 0x5A51, + 0x8AF2, 0x5A52, 0x8AF3, 0x5A53, 0x8AF4, 0x5A54, 0x8AF5, 0x5A56, 0x8AF6, 0x5A57, 0x8AF7, 0x5A58, 0x8AF8, 0x5A59, 0x8AF9, 0x5A5B, + 0x8AFA, 0x5A5C, 0x8AFB, 0x5A5D, 0x8AFC, 0x5A5E, 0x8AFD, 0x5A5F, 0x8AFE, 0x5A60, 0x8B40, 0x5A61, 0x8B41, 0x5A63, 0x8B42, 0x5A64, + 0x8B43, 0x5A65, 0x8B44, 0x5A66, 0x8B45, 0x5A68, 0x8B46, 0x5A69, 0x8B47, 0x5A6B, 0x8B48, 0x5A6C, 0x8B49, 0x5A6D, 0x8B4A, 0x5A6E, + 0x8B4B, 0x5A6F, 0x8B4C, 0x5A70, 0x8B4D, 0x5A71, 0x8B4E, 0x5A72, 0x8B4F, 0x5A73, 0x8B50, 0x5A78, 0x8B51, 0x5A79, 0x8B52, 0x5A7B, + 0x8B53, 0x5A7C, 0x8B54, 0x5A7D, 0x8B55, 0x5A7E, 0x8B56, 0x5A80, 0x8B57, 0x5A81, 0x8B58, 0x5A82, 0x8B59, 0x5A83, 0x8B5A, 0x5A84, + 0x8B5B, 0x5A85, 0x8B5C, 0x5A86, 0x8B5D, 0x5A87, 0x8B5E, 0x5A88, 0x8B5F, 0x5A89, 0x8B60, 0x5A8A, 0x8B61, 0x5A8B, 0x8B62, 0x5A8C, + 0x8B63, 0x5A8D, 0x8B64, 0x5A8E, 0x8B65, 0x5A8F, 0x8B66, 0x5A90, 0x8B67, 0x5A91, 0x8B68, 0x5A93, 0x8B69, 0x5A94, 0x8B6A, 0x5A95, + 0x8B6B, 0x5A96, 0x8B6C, 0x5A97, 0x8B6D, 0x5A98, 0x8B6E, 0x5A99, 0x8B6F, 0x5A9C, 0x8B70, 0x5A9D, 0x8B71, 0x5A9E, 0x8B72, 0x5A9F, + 0x8B73, 0x5AA0, 0x8B74, 0x5AA1, 0x8B75, 0x5AA2, 0x8B76, 0x5AA3, 0x8B77, 0x5AA4, 0x8B78, 0x5AA5, 0x8B79, 0x5AA6, 0x8B7A, 0x5AA7, + 0x8B7B, 0x5AA8, 0x8B7C, 0x5AA9, 0x8B7D, 0x5AAB, 0x8B7E, 0x5AAC, 0x8B80, 0x5AAD, 0x8B81, 0x5AAE, 0x8B82, 0x5AAF, 0x8B83, 0x5AB0, + 0x8B84, 0x5AB1, 0x8B85, 0x5AB4, 0x8B86, 0x5AB6, 0x8B87, 0x5AB7, 0x8B88, 0x5AB9, 0x8B89, 0x5ABA, 0x8B8A, 0x5ABB, 0x8B8B, 0x5ABC, + 0x8B8C, 0x5ABD, 0x8B8D, 0x5ABF, 0x8B8E, 0x5AC0, 0x8B8F, 0x5AC3, 0x8B90, 0x5AC4, 0x8B91, 0x5AC5, 0x8B92, 0x5AC6, 0x8B93, 0x5AC7, + 0x8B94, 0x5AC8, 0x8B95, 0x5ACA, 0x8B96, 0x5ACB, 0x8B97, 0x5ACD, 0x8B98, 0x5ACE, 0x8B99, 0x5ACF, 0x8B9A, 0x5AD0, 0x8B9B, 0x5AD1, + 0x8B9C, 0x5AD3, 0x8B9D, 0x5AD5, 0x8B9E, 0x5AD7, 0x8B9F, 0x5AD9, 0x8BA0, 0x5ADA, 0x8BA1, 0x5ADB, 0x8BA2, 0x5ADD, 0x8BA3, 0x5ADE, + 0x8BA4, 0x5ADF, 0x8BA5, 0x5AE2, 0x8BA6, 0x5AE4, 0x8BA7, 0x5AE5, 0x8BA8, 0x5AE7, 0x8BA9, 0x5AE8, 0x8BAA, 0x5AEA, 0x8BAB, 0x5AEC, + 0x8BAC, 0x5AED, 0x8BAD, 0x5AEE, 0x8BAE, 0x5AEF, 0x8BAF, 0x5AF0, 0x8BB0, 0x5AF2, 0x8BB1, 0x5AF3, 0x8BB2, 0x5AF4, 0x8BB3, 0x5AF5, + 0x8BB4, 0x5AF6, 0x8BB5, 0x5AF7, 0x8BB6, 0x5AF8, 0x8BB7, 0x5AF9, 0x8BB8, 0x5AFA, 0x8BB9, 0x5AFB, 0x8BBA, 0x5AFC, 0x8BBB, 0x5AFD, + 0x8BBC, 0x5AFE, 0x8BBD, 0x5AFF, 0x8BBE, 0x5B00, 0x8BBF, 0x5B01, 0x8BC0, 0x5B02, 0x8BC1, 0x5B03, 0x8BC2, 0x5B04, 0x8BC3, 0x5B05, + 0x8BC4, 0x5B06, 0x8BC5, 0x5B07, 0x8BC6, 0x5B08, 0x8BC7, 0x5B0A, 0x8BC8, 0x5B0B, 0x8BC9, 0x5B0C, 0x8BCA, 0x5B0D, 0x8BCB, 0x5B0E, + 0x8BCC, 0x5B0F, 0x8BCD, 0x5B10, 0x8BCE, 0x5B11, 0x8BCF, 0x5B12, 0x8BD0, 0x5B13, 0x8BD1, 0x5B14, 0x8BD2, 0x5B15, 0x8BD3, 0x5B18, + 0x8BD4, 0x5B19, 0x8BD5, 0x5B1A, 0x8BD6, 0x5B1B, 0x8BD7, 0x5B1C, 0x8BD8, 0x5B1D, 0x8BD9, 0x5B1E, 0x8BDA, 0x5B1F, 0x8BDB, 0x5B20, + 0x8BDC, 0x5B21, 0x8BDD, 0x5B22, 0x8BDE, 0x5B23, 0x8BDF, 0x5B24, 0x8BE0, 0x5B25, 0x8BE1, 0x5B26, 0x8BE2, 0x5B27, 0x8BE3, 0x5B28, + 0x8BE4, 0x5B29, 0x8BE5, 0x5B2A, 0x8BE6, 0x5B2B, 0x8BE7, 0x5B2C, 0x8BE8, 0x5B2D, 0x8BE9, 0x5B2E, 0x8BEA, 0x5B2F, 0x8BEB, 0x5B30, + 0x8BEC, 0x5B31, 0x8BED, 0x5B33, 0x8BEE, 0x5B35, 0x8BEF, 0x5B36, 0x8BF0, 0x5B38, 0x8BF1, 0x5B39, 0x8BF2, 0x5B3A, 0x8BF3, 0x5B3B, + 0x8BF4, 0x5B3C, 0x8BF5, 0x5B3D, 0x8BF6, 0x5B3E, 0x8BF7, 0x5B3F, 0x8BF8, 0x5B41, 0x8BF9, 0x5B42, 0x8BFA, 0x5B43, 0x8BFB, 0x5B44, + 0x8BFC, 0x5B45, 0x8BFD, 0x5B46, 0x8BFE, 0x5B47, 0x8C40, 0x5B48, 0x8C41, 0x5B49, 0x8C42, 0x5B4A, 0x8C43, 0x5B4B, 0x8C44, 0x5B4C, + 0x8C45, 0x5B4D, 0x8C46, 0x5B4E, 0x8C47, 0x5B4F, 0x8C48, 0x5B52, 0x8C49, 0x5B56, 0x8C4A, 0x5B5E, 0x8C4B, 0x5B60, 0x8C4C, 0x5B61, + 0x8C4D, 0x5B67, 0x8C4E, 0x5B68, 0x8C4F, 0x5B6B, 0x8C50, 0x5B6D, 0x8C51, 0x5B6E, 0x8C52, 0x5B6F, 0x8C53, 0x5B72, 0x8C54, 0x5B74, + 0x8C55, 0x5B76, 0x8C56, 0x5B77, 0x8C57, 0x5B78, 0x8C58, 0x5B79, 0x8C59, 0x5B7B, 0x8C5A, 0x5B7C, 0x8C5B, 0x5B7E, 0x8C5C, 0x5B7F, + 0x8C5D, 0x5B82, 0x8C5E, 0x5B86, 0x8C5F, 0x5B8A, 0x8C60, 0x5B8D, 0x8C61, 0x5B8E, 0x8C62, 0x5B90, 0x8C63, 0x5B91, 0x8C64, 0x5B92, + 0x8C65, 0x5B94, 0x8C66, 0x5B96, 0x8C67, 0x5B9F, 0x8C68, 0x5BA7, 0x8C69, 0x5BA8, 0x8C6A, 0x5BA9, 0x8C6B, 0x5BAC, 0x8C6C, 0x5BAD, + 0x8C6D, 0x5BAE, 0x8C6E, 0x5BAF, 0x8C6F, 0x5BB1, 0x8C70, 0x5BB2, 0x8C71, 0x5BB7, 0x8C72, 0x5BBA, 0x8C73, 0x5BBB, 0x8C74, 0x5BBC, + 0x8C75, 0x5BC0, 0x8C76, 0x5BC1, 0x8C77, 0x5BC3, 0x8C78, 0x5BC8, 0x8C79, 0x5BC9, 0x8C7A, 0x5BCA, 0x8C7B, 0x5BCB, 0x8C7C, 0x5BCD, + 0x8C7D, 0x5BCE, 0x8C7E, 0x5BCF, 0x8C80, 0x5BD1, 0x8C81, 0x5BD4, 0x8C82, 0x5BD5, 0x8C83, 0x5BD6, 0x8C84, 0x5BD7, 0x8C85, 0x5BD8, + 0x8C86, 0x5BD9, 0x8C87, 0x5BDA, 0x8C88, 0x5BDB, 0x8C89, 0x5BDC, 0x8C8A, 0x5BE0, 0x8C8B, 0x5BE2, 0x8C8C, 0x5BE3, 0x8C8D, 0x5BE6, + 0x8C8E, 0x5BE7, 0x8C8F, 0x5BE9, 0x8C90, 0x5BEA, 0x8C91, 0x5BEB, 0x8C92, 0x5BEC, 0x8C93, 0x5BED, 0x8C94, 0x5BEF, 0x8C95, 0x5BF1, + 0x8C96, 0x5BF2, 0x8C97, 0x5BF3, 0x8C98, 0x5BF4, 0x8C99, 0x5BF5, 0x8C9A, 0x5BF6, 0x8C9B, 0x5BF7, 0x8C9C, 0x5BFD, 0x8C9D, 0x5BFE, + 0x8C9E, 0x5C00, 0x8C9F, 0x5C02, 0x8CA0, 0x5C03, 0x8CA1, 0x5C05, 0x8CA2, 0x5C07, 0x8CA3, 0x5C08, 0x8CA4, 0x5C0B, 0x8CA5, 0x5C0C, + 0x8CA6, 0x5C0D, 0x8CA7, 0x5C0E, 0x8CA8, 0x5C10, 0x8CA9, 0x5C12, 0x8CAA, 0x5C13, 0x8CAB, 0x5C17, 0x8CAC, 0x5C19, 0x8CAD, 0x5C1B, + 0x8CAE, 0x5C1E, 0x8CAF, 0x5C1F, 0x8CB0, 0x5C20, 0x8CB1, 0x5C21, 0x8CB2, 0x5C23, 0x8CB3, 0x5C26, 0x8CB4, 0x5C28, 0x8CB5, 0x5C29, + 0x8CB6, 0x5C2A, 0x8CB7, 0x5C2B, 0x8CB8, 0x5C2D, 0x8CB9, 0x5C2E, 0x8CBA, 0x5C2F, 0x8CBB, 0x5C30, 0x8CBC, 0x5C32, 0x8CBD, 0x5C33, + 0x8CBE, 0x5C35, 0x8CBF, 0x5C36, 0x8CC0, 0x5C37, 0x8CC1, 0x5C43, 0x8CC2, 0x5C44, 0x8CC3, 0x5C46, 0x8CC4, 0x5C47, 0x8CC5, 0x5C4C, + 0x8CC6, 0x5C4D, 0x8CC7, 0x5C52, 0x8CC8, 0x5C53, 0x8CC9, 0x5C54, 0x8CCA, 0x5C56, 0x8CCB, 0x5C57, 0x8CCC, 0x5C58, 0x8CCD, 0x5C5A, + 0x8CCE, 0x5C5B, 0x8CCF, 0x5C5C, 0x8CD0, 0x5C5D, 0x8CD1, 0x5C5F, 0x8CD2, 0x5C62, 0x8CD3, 0x5C64, 0x8CD4, 0x5C67, 0x8CD5, 0x5C68, + 0x8CD6, 0x5C69, 0x8CD7, 0x5C6A, 0x8CD8, 0x5C6B, 0x8CD9, 0x5C6C, 0x8CDA, 0x5C6D, 0x8CDB, 0x5C70, 0x8CDC, 0x5C72, 0x8CDD, 0x5C73, + 0x8CDE, 0x5C74, 0x8CDF, 0x5C75, 0x8CE0, 0x5C76, 0x8CE1, 0x5C77, 0x8CE2, 0x5C78, 0x8CE3, 0x5C7B, 0x8CE4, 0x5C7C, 0x8CE5, 0x5C7D, + 0x8CE6, 0x5C7E, 0x8CE7, 0x5C80, 0x8CE8, 0x5C83, 0x8CE9, 0x5C84, 0x8CEA, 0x5C85, 0x8CEB, 0x5C86, 0x8CEC, 0x5C87, 0x8CED, 0x5C89, + 0x8CEE, 0x5C8A, 0x8CEF, 0x5C8B, 0x8CF0, 0x5C8E, 0x8CF1, 0x5C8F, 0x8CF2, 0x5C92, 0x8CF3, 0x5C93, 0x8CF4, 0x5C95, 0x8CF5, 0x5C9D, + 0x8CF6, 0x5C9E, 0x8CF7, 0x5C9F, 0x8CF8, 0x5CA0, 0x8CF9, 0x5CA1, 0x8CFA, 0x5CA4, 0x8CFB, 0x5CA5, 0x8CFC, 0x5CA6, 0x8CFD, 0x5CA7, + 0x8CFE, 0x5CA8, 0x8D40, 0x5CAA, 0x8D41, 0x5CAE, 0x8D42, 0x5CAF, 0x8D43, 0x5CB0, 0x8D44, 0x5CB2, 0x8D45, 0x5CB4, 0x8D46, 0x5CB6, + 0x8D47, 0x5CB9, 0x8D48, 0x5CBA, 0x8D49, 0x5CBB, 0x8D4A, 0x5CBC, 0x8D4B, 0x5CBE, 0x8D4C, 0x5CC0, 0x8D4D, 0x5CC2, 0x8D4E, 0x5CC3, + 0x8D4F, 0x5CC5, 0x8D50, 0x5CC6, 0x8D51, 0x5CC7, 0x8D52, 0x5CC8, 0x8D53, 0x5CC9, 0x8D54, 0x5CCA, 0x8D55, 0x5CCC, 0x8D56, 0x5CCD, + 0x8D57, 0x5CCE, 0x8D58, 0x5CCF, 0x8D59, 0x5CD0, 0x8D5A, 0x5CD1, 0x8D5B, 0x5CD3, 0x8D5C, 0x5CD4, 0x8D5D, 0x5CD5, 0x8D5E, 0x5CD6, + 0x8D5F, 0x5CD7, 0x8D60, 0x5CD8, 0x8D61, 0x5CDA, 0x8D62, 0x5CDB, 0x8D63, 0x5CDC, 0x8D64, 0x5CDD, 0x8D65, 0x5CDE, 0x8D66, 0x5CDF, + 0x8D67, 0x5CE0, 0x8D68, 0x5CE2, 0x8D69, 0x5CE3, 0x8D6A, 0x5CE7, 0x8D6B, 0x5CE9, 0x8D6C, 0x5CEB, 0x8D6D, 0x5CEC, 0x8D6E, 0x5CEE, + 0x8D6F, 0x5CEF, 0x8D70, 0x5CF1, 0x8D71, 0x5CF2, 0x8D72, 0x5CF3, 0x8D73, 0x5CF4, 0x8D74, 0x5CF5, 0x8D75, 0x5CF6, 0x8D76, 0x5CF7, + 0x8D77, 0x5CF8, 0x8D78, 0x5CF9, 0x8D79, 0x5CFA, 0x8D7A, 0x5CFC, 0x8D7B, 0x5CFD, 0x8D7C, 0x5CFE, 0x8D7D, 0x5CFF, 0x8D7E, 0x5D00, + 0x8D80, 0x5D01, 0x8D81, 0x5D04, 0x8D82, 0x5D05, 0x8D83, 0x5D08, 0x8D84, 0x5D09, 0x8D85, 0x5D0A, 0x8D86, 0x5D0B, 0x8D87, 0x5D0C, + 0x8D88, 0x5D0D, 0x8D89, 0x5D0F, 0x8D8A, 0x5D10, 0x8D8B, 0x5D11, 0x8D8C, 0x5D12, 0x8D8D, 0x5D13, 0x8D8E, 0x5D15, 0x8D8F, 0x5D17, + 0x8D90, 0x5D18, 0x8D91, 0x5D19, 0x8D92, 0x5D1A, 0x8D93, 0x5D1C, 0x8D94, 0x5D1D, 0x8D95, 0x5D1F, 0x8D96, 0x5D20, 0x8D97, 0x5D21, + 0x8D98, 0x5D22, 0x8D99, 0x5D23, 0x8D9A, 0x5D25, 0x8D9B, 0x5D28, 0x8D9C, 0x5D2A, 0x8D9D, 0x5D2B, 0x8D9E, 0x5D2C, 0x8D9F, 0x5D2F, + 0x8DA0, 0x5D30, 0x8DA1, 0x5D31, 0x8DA2, 0x5D32, 0x8DA3, 0x5D33, 0x8DA4, 0x5D35, 0x8DA5, 0x5D36, 0x8DA6, 0x5D37, 0x8DA7, 0x5D38, + 0x8DA8, 0x5D39, 0x8DA9, 0x5D3A, 0x8DAA, 0x5D3B, 0x8DAB, 0x5D3C, 0x8DAC, 0x5D3F, 0x8DAD, 0x5D40, 0x8DAE, 0x5D41, 0x8DAF, 0x5D42, + 0x8DB0, 0x5D43, 0x8DB1, 0x5D44, 0x8DB2, 0x5D45, 0x8DB3, 0x5D46, 0x8DB4, 0x5D48, 0x8DB5, 0x5D49, 0x8DB6, 0x5D4D, 0x8DB7, 0x5D4E, + 0x8DB8, 0x5D4F, 0x8DB9, 0x5D50, 0x8DBA, 0x5D51, 0x8DBB, 0x5D52, 0x8DBC, 0x5D53, 0x8DBD, 0x5D54, 0x8DBE, 0x5D55, 0x8DBF, 0x5D56, + 0x8DC0, 0x5D57, 0x8DC1, 0x5D59, 0x8DC2, 0x5D5A, 0x8DC3, 0x5D5C, 0x8DC4, 0x5D5E, 0x8DC5, 0x5D5F, 0x8DC6, 0x5D60, 0x8DC7, 0x5D61, + 0x8DC8, 0x5D62, 0x8DC9, 0x5D63, 0x8DCA, 0x5D64, 0x8DCB, 0x5D65, 0x8DCC, 0x5D66, 0x8DCD, 0x5D67, 0x8DCE, 0x5D68, 0x8DCF, 0x5D6A, + 0x8DD0, 0x5D6D, 0x8DD1, 0x5D6E, 0x8DD2, 0x5D70, 0x8DD3, 0x5D71, 0x8DD4, 0x5D72, 0x8DD5, 0x5D73, 0x8DD6, 0x5D75, 0x8DD7, 0x5D76, + 0x8DD8, 0x5D77, 0x8DD9, 0x5D78, 0x8DDA, 0x5D79, 0x8DDB, 0x5D7A, 0x8DDC, 0x5D7B, 0x8DDD, 0x5D7C, 0x8DDE, 0x5D7D, 0x8DDF, 0x5D7E, + 0x8DE0, 0x5D7F, 0x8DE1, 0x5D80, 0x8DE2, 0x5D81, 0x8DE3, 0x5D83, 0x8DE4, 0x5D84, 0x8DE5, 0x5D85, 0x8DE6, 0x5D86, 0x8DE7, 0x5D87, + 0x8DE8, 0x5D88, 0x8DE9, 0x5D89, 0x8DEA, 0x5D8A, 0x8DEB, 0x5D8B, 0x8DEC, 0x5D8C, 0x8DED, 0x5D8D, 0x8DEE, 0x5D8E, 0x8DEF, 0x5D8F, + 0x8DF0, 0x5D90, 0x8DF1, 0x5D91, 0x8DF2, 0x5D92, 0x8DF3, 0x5D93, 0x8DF4, 0x5D94, 0x8DF5, 0x5D95, 0x8DF6, 0x5D96, 0x8DF7, 0x5D97, + 0x8DF8, 0x5D98, 0x8DF9, 0x5D9A, 0x8DFA, 0x5D9B, 0x8DFB, 0x5D9C, 0x8DFC, 0x5D9E, 0x8DFD, 0x5D9F, 0x8DFE, 0x5DA0, 0x8E40, 0x5DA1, + 0x8E41, 0x5DA2, 0x8E42, 0x5DA3, 0x8E43, 0x5DA4, 0x8E44, 0x5DA5, 0x8E45, 0x5DA6, 0x8E46, 0x5DA7, 0x8E47, 0x5DA8, 0x8E48, 0x5DA9, + 0x8E49, 0x5DAA, 0x8E4A, 0x5DAB, 0x8E4B, 0x5DAC, 0x8E4C, 0x5DAD, 0x8E4D, 0x5DAE, 0x8E4E, 0x5DAF, 0x8E4F, 0x5DB0, 0x8E50, 0x5DB1, + 0x8E51, 0x5DB2, 0x8E52, 0x5DB3, 0x8E53, 0x5DB4, 0x8E54, 0x5DB5, 0x8E55, 0x5DB6, 0x8E56, 0x5DB8, 0x8E57, 0x5DB9, 0x8E58, 0x5DBA, + 0x8E59, 0x5DBB, 0x8E5A, 0x5DBC, 0x8E5B, 0x5DBD, 0x8E5C, 0x5DBE, 0x8E5D, 0x5DBF, 0x8E5E, 0x5DC0, 0x8E5F, 0x5DC1, 0x8E60, 0x5DC2, + 0x8E61, 0x5DC3, 0x8E62, 0x5DC4, 0x8E63, 0x5DC6, 0x8E64, 0x5DC7, 0x8E65, 0x5DC8, 0x8E66, 0x5DC9, 0x8E67, 0x5DCA, 0x8E68, 0x5DCB, + 0x8E69, 0x5DCC, 0x8E6A, 0x5DCE, 0x8E6B, 0x5DCF, 0x8E6C, 0x5DD0, 0x8E6D, 0x5DD1, 0x8E6E, 0x5DD2, 0x8E6F, 0x5DD3, 0x8E70, 0x5DD4, + 0x8E71, 0x5DD5, 0x8E72, 0x5DD6, 0x8E73, 0x5DD7, 0x8E74, 0x5DD8, 0x8E75, 0x5DD9, 0x8E76, 0x5DDA, 0x8E77, 0x5DDC, 0x8E78, 0x5DDF, + 0x8E79, 0x5DE0, 0x8E7A, 0x5DE3, 0x8E7B, 0x5DE4, 0x8E7C, 0x5DEA, 0x8E7D, 0x5DEC, 0x8E7E, 0x5DED, 0x8E80, 0x5DF0, 0x8E81, 0x5DF5, + 0x8E82, 0x5DF6, 0x8E83, 0x5DF8, 0x8E84, 0x5DF9, 0x8E85, 0x5DFA, 0x8E86, 0x5DFB, 0x8E87, 0x5DFC, 0x8E88, 0x5DFF, 0x8E89, 0x5E00, + 0x8E8A, 0x5E04, 0x8E8B, 0x5E07, 0x8E8C, 0x5E09, 0x8E8D, 0x5E0A, 0x8E8E, 0x5E0B, 0x8E8F, 0x5E0D, 0x8E90, 0x5E0E, 0x8E91, 0x5E12, + 0x8E92, 0x5E13, 0x8E93, 0x5E17, 0x8E94, 0x5E1E, 0x8E95, 0x5E1F, 0x8E96, 0x5E20, 0x8E97, 0x5E21, 0x8E98, 0x5E22, 0x8E99, 0x5E23, + 0x8E9A, 0x5E24, 0x8E9B, 0x5E25, 0x8E9C, 0x5E28, 0x8E9D, 0x5E29, 0x8E9E, 0x5E2A, 0x8E9F, 0x5E2B, 0x8EA0, 0x5E2C, 0x8EA1, 0x5E2F, + 0x8EA2, 0x5E30, 0x8EA3, 0x5E32, 0x8EA4, 0x5E33, 0x8EA5, 0x5E34, 0x8EA6, 0x5E35, 0x8EA7, 0x5E36, 0x8EA8, 0x5E39, 0x8EA9, 0x5E3A, + 0x8EAA, 0x5E3E, 0x8EAB, 0x5E3F, 0x8EAC, 0x5E40, 0x8EAD, 0x5E41, 0x8EAE, 0x5E43, 0x8EAF, 0x5E46, 0x8EB0, 0x5E47, 0x8EB1, 0x5E48, + 0x8EB2, 0x5E49, 0x8EB3, 0x5E4A, 0x8EB4, 0x5E4B, 0x8EB5, 0x5E4D, 0x8EB6, 0x5E4E, 0x8EB7, 0x5E4F, 0x8EB8, 0x5E50, 0x8EB9, 0x5E51, + 0x8EBA, 0x5E52, 0x8EBB, 0x5E53, 0x8EBC, 0x5E56, 0x8EBD, 0x5E57, 0x8EBE, 0x5E58, 0x8EBF, 0x5E59, 0x8EC0, 0x5E5A, 0x8EC1, 0x5E5C, + 0x8EC2, 0x5E5D, 0x8EC3, 0x5E5F, 0x8EC4, 0x5E60, 0x8EC5, 0x5E63, 0x8EC6, 0x5E64, 0x8EC7, 0x5E65, 0x8EC8, 0x5E66, 0x8EC9, 0x5E67, + 0x8ECA, 0x5E68, 0x8ECB, 0x5E69, 0x8ECC, 0x5E6A, 0x8ECD, 0x5E6B, 0x8ECE, 0x5E6C, 0x8ECF, 0x5E6D, 0x8ED0, 0x5E6E, 0x8ED1, 0x5E6F, + 0x8ED2, 0x5E70, 0x8ED3, 0x5E71, 0x8ED4, 0x5E75, 0x8ED5, 0x5E77, 0x8ED6, 0x5E79, 0x8ED7, 0x5E7E, 0x8ED8, 0x5E81, 0x8ED9, 0x5E82, + 0x8EDA, 0x5E83, 0x8EDB, 0x5E85, 0x8EDC, 0x5E88, 0x8EDD, 0x5E89, 0x8EDE, 0x5E8C, 0x8EDF, 0x5E8D, 0x8EE0, 0x5E8E, 0x8EE1, 0x5E92, + 0x8EE2, 0x5E98, 0x8EE3, 0x5E9B, 0x8EE4, 0x5E9D, 0x8EE5, 0x5EA1, 0x8EE6, 0x5EA2, 0x8EE7, 0x5EA3, 0x8EE8, 0x5EA4, 0x8EE9, 0x5EA8, + 0x8EEA, 0x5EA9, 0x8EEB, 0x5EAA, 0x8EEC, 0x5EAB, 0x8EED, 0x5EAC, 0x8EEE, 0x5EAE, 0x8EEF, 0x5EAF, 0x8EF0, 0x5EB0, 0x8EF1, 0x5EB1, + 0x8EF2, 0x5EB2, 0x8EF3, 0x5EB4, 0x8EF4, 0x5EBA, 0x8EF5, 0x5EBB, 0x8EF6, 0x5EBC, 0x8EF7, 0x5EBD, 0x8EF8, 0x5EBF, 0x8EF9, 0x5EC0, + 0x8EFA, 0x5EC1, 0x8EFB, 0x5EC2, 0x8EFC, 0x5EC3, 0x8EFD, 0x5EC4, 0x8EFE, 0x5EC5, 0x8F40, 0x5EC6, 0x8F41, 0x5EC7, 0x8F42, 0x5EC8, + 0x8F43, 0x5ECB, 0x8F44, 0x5ECC, 0x8F45, 0x5ECD, 0x8F46, 0x5ECE, 0x8F47, 0x5ECF, 0x8F48, 0x5ED0, 0x8F49, 0x5ED4, 0x8F4A, 0x5ED5, + 0x8F4B, 0x5ED7, 0x8F4C, 0x5ED8, 0x8F4D, 0x5ED9, 0x8F4E, 0x5EDA, 0x8F4F, 0x5EDC, 0x8F50, 0x5EDD, 0x8F51, 0x5EDE, 0x8F52, 0x5EDF, + 0x8F53, 0x5EE0, 0x8F54, 0x5EE1, 0x8F55, 0x5EE2, 0x8F56, 0x5EE3, 0x8F57, 0x5EE4, 0x8F58, 0x5EE5, 0x8F59, 0x5EE6, 0x8F5A, 0x5EE7, + 0x8F5B, 0x5EE9, 0x8F5C, 0x5EEB, 0x8F5D, 0x5EEC, 0x8F5E, 0x5EED, 0x8F5F, 0x5EEE, 0x8F60, 0x5EEF, 0x8F61, 0x5EF0, 0x8F62, 0x5EF1, + 0x8F63, 0x5EF2, 0x8F64, 0x5EF3, 0x8F65, 0x5EF5, 0x8F66, 0x5EF8, 0x8F67, 0x5EF9, 0x8F68, 0x5EFB, 0x8F69, 0x5EFC, 0x8F6A, 0x5EFD, + 0x8F6B, 0x5F05, 0x8F6C, 0x5F06, 0x8F6D, 0x5F07, 0x8F6E, 0x5F09, 0x8F6F, 0x5F0C, 0x8F70, 0x5F0D, 0x8F71, 0x5F0E, 0x8F72, 0x5F10, + 0x8F73, 0x5F12, 0x8F74, 0x5F14, 0x8F75, 0x5F16, 0x8F76, 0x5F19, 0x8F77, 0x5F1A, 0x8F78, 0x5F1C, 0x8F79, 0x5F1D, 0x8F7A, 0x5F1E, + 0x8F7B, 0x5F21, 0x8F7C, 0x5F22, 0x8F7D, 0x5F23, 0x8F7E, 0x5F24, 0x8F80, 0x5F28, 0x8F81, 0x5F2B, 0x8F82, 0x5F2C, 0x8F83, 0x5F2E, + 0x8F84, 0x5F30, 0x8F85, 0x5F32, 0x8F86, 0x5F33, 0x8F87, 0x5F34, 0x8F88, 0x5F35, 0x8F89, 0x5F36, 0x8F8A, 0x5F37, 0x8F8B, 0x5F38, + 0x8F8C, 0x5F3B, 0x8F8D, 0x5F3D, 0x8F8E, 0x5F3E, 0x8F8F, 0x5F3F, 0x8F90, 0x5F41, 0x8F91, 0x5F42, 0x8F92, 0x5F43, 0x8F93, 0x5F44, + 0x8F94, 0x5F45, 0x8F95, 0x5F46, 0x8F96, 0x5F47, 0x8F97, 0x5F48, 0x8F98, 0x5F49, 0x8F99, 0x5F4A, 0x8F9A, 0x5F4B, 0x8F9B, 0x5F4C, + 0x8F9C, 0x5F4D, 0x8F9D, 0x5F4E, 0x8F9E, 0x5F4F, 0x8F9F, 0x5F51, 0x8FA0, 0x5F54, 0x8FA1, 0x5F59, 0x8FA2, 0x5F5A, 0x8FA3, 0x5F5B, + 0x8FA4, 0x5F5C, 0x8FA5, 0x5F5E, 0x8FA6, 0x5F5F, 0x8FA7, 0x5F60, 0x8FA8, 0x5F63, 0x8FA9, 0x5F65, 0x8FAA, 0x5F67, 0x8FAB, 0x5F68, + 0x8FAC, 0x5F6B, 0x8FAD, 0x5F6E, 0x8FAE, 0x5F6F, 0x8FAF, 0x5F72, 0x8FB0, 0x5F74, 0x8FB1, 0x5F75, 0x8FB2, 0x5F76, 0x8FB3, 0x5F78, + 0x8FB4, 0x5F7A, 0x8FB5, 0x5F7D, 0x8FB6, 0x5F7E, 0x8FB7, 0x5F7F, 0x8FB8, 0x5F83, 0x8FB9, 0x5F86, 0x8FBA, 0x5F8D, 0x8FBB, 0x5F8E, + 0x8FBC, 0x5F8F, 0x8FBD, 0x5F91, 0x8FBE, 0x5F93, 0x8FBF, 0x5F94, 0x8FC0, 0x5F96, 0x8FC1, 0x5F9A, 0x8FC2, 0x5F9B, 0x8FC3, 0x5F9D, + 0x8FC4, 0x5F9E, 0x8FC5, 0x5F9F, 0x8FC6, 0x5FA0, 0x8FC7, 0x5FA2, 0x8FC8, 0x5FA3, 0x8FC9, 0x5FA4, 0x8FCA, 0x5FA5, 0x8FCB, 0x5FA6, + 0x8FCC, 0x5FA7, 0x8FCD, 0x5FA9, 0x8FCE, 0x5FAB, 0x8FCF, 0x5FAC, 0x8FD0, 0x5FAF, 0x8FD1, 0x5FB0, 0x8FD2, 0x5FB1, 0x8FD3, 0x5FB2, + 0x8FD4, 0x5FB3, 0x8FD5, 0x5FB4, 0x8FD6, 0x5FB6, 0x8FD7, 0x5FB8, 0x8FD8, 0x5FB9, 0x8FD9, 0x5FBA, 0x8FDA, 0x5FBB, 0x8FDB, 0x5FBE, + 0x8FDC, 0x5FBF, 0x8FDD, 0x5FC0, 0x8FDE, 0x5FC1, 0x8FDF, 0x5FC2, 0x8FE0, 0x5FC7, 0x8FE1, 0x5FC8, 0x8FE2, 0x5FCA, 0x8FE3, 0x5FCB, + 0x8FE4, 0x5FCE, 0x8FE5, 0x5FD3, 0x8FE6, 0x5FD4, 0x8FE7, 0x5FD5, 0x8FE8, 0x5FDA, 0x8FE9, 0x5FDB, 0x8FEA, 0x5FDC, 0x8FEB, 0x5FDE, + 0x8FEC, 0x5FDF, 0x8FED, 0x5FE2, 0x8FEE, 0x5FE3, 0x8FEF, 0x5FE5, 0x8FF0, 0x5FE6, 0x8FF1, 0x5FE8, 0x8FF2, 0x5FE9, 0x8FF3, 0x5FEC, + 0x8FF4, 0x5FEF, 0x8FF5, 0x5FF0, 0x8FF6, 0x5FF2, 0x8FF7, 0x5FF3, 0x8FF8, 0x5FF4, 0x8FF9, 0x5FF6, 0x8FFA, 0x5FF7, 0x8FFB, 0x5FF9, + 0x8FFC, 0x5FFA, 0x8FFD, 0x5FFC, 0x8FFE, 0x6007, 0x9040, 0x6008, 0x9041, 0x6009, 0x9042, 0x600B, 0x9043, 0x600C, 0x9044, 0x6010, + 0x9045, 0x6011, 0x9046, 0x6013, 0x9047, 0x6017, 0x9048, 0x6018, 0x9049, 0x601A, 0x904A, 0x601E, 0x904B, 0x601F, 0x904C, 0x6022, + 0x904D, 0x6023, 0x904E, 0x6024, 0x904F, 0x602C, 0x9050, 0x602D, 0x9051, 0x602E, 0x9052, 0x6030, 0x9053, 0x6031, 0x9054, 0x6032, + 0x9055, 0x6033, 0x9056, 0x6034, 0x9057, 0x6036, 0x9058, 0x6037, 0x9059, 0x6038, 0x905A, 0x6039, 0x905B, 0x603A, 0x905C, 0x603D, + 0x905D, 0x603E, 0x905E, 0x6040, 0x905F, 0x6044, 0x9060, 0x6045, 0x9061, 0x6046, 0x9062, 0x6047, 0x9063, 0x6048, 0x9064, 0x6049, + 0x9065, 0x604A, 0x9066, 0x604C, 0x9067, 0x604E, 0x9068, 0x604F, 0x9069, 0x6051, 0x906A, 0x6053, 0x906B, 0x6054, 0x906C, 0x6056, + 0x906D, 0x6057, 0x906E, 0x6058, 0x906F, 0x605B, 0x9070, 0x605C, 0x9071, 0x605E, 0x9072, 0x605F, 0x9073, 0x6060, 0x9074, 0x6061, + 0x9075, 0x6065, 0x9076, 0x6066, 0x9077, 0x606E, 0x9078, 0x6071, 0x9079, 0x6072, 0x907A, 0x6074, 0x907B, 0x6075, 0x907C, 0x6077, + 0x907D, 0x607E, 0x907E, 0x6080, 0x9080, 0x6081, 0x9081, 0x6082, 0x9082, 0x6085, 0x9083, 0x6086, 0x9084, 0x6087, 0x9085, 0x6088, + 0x9086, 0x608A, 0x9087, 0x608B, 0x9088, 0x608E, 0x9089, 0x608F, 0x908A, 0x6090, 0x908B, 0x6091, 0x908C, 0x6093, 0x908D, 0x6095, + 0x908E, 0x6097, 0x908F, 0x6098, 0x9090, 0x6099, 0x9091, 0x609C, 0x9092, 0x609E, 0x9093, 0x60A1, 0x9094, 0x60A2, 0x9095, 0x60A4, + 0x9096, 0x60A5, 0x9097, 0x60A7, 0x9098, 0x60A9, 0x9099, 0x60AA, 0x909A, 0x60AE, 0x909B, 0x60B0, 0x909C, 0x60B3, 0x909D, 0x60B5, + 0x909E, 0x60B6, 0x909F, 0x60B7, 0x90A0, 0x60B9, 0x90A1, 0x60BA, 0x90A2, 0x60BD, 0x90A3, 0x60BE, 0x90A4, 0x60BF, 0x90A5, 0x60C0, + 0x90A6, 0x60C1, 0x90A7, 0x60C2, 0x90A8, 0x60C3, 0x90A9, 0x60C4, 0x90AA, 0x60C7, 0x90AB, 0x60C8, 0x90AC, 0x60C9, 0x90AD, 0x60CC, + 0x90AE, 0x60CD, 0x90AF, 0x60CE, 0x90B0, 0x60CF, 0x90B1, 0x60D0, 0x90B2, 0x60D2, 0x90B3, 0x60D3, 0x90B4, 0x60D4, 0x90B5, 0x60D6, + 0x90B6, 0x60D7, 0x90B7, 0x60D9, 0x90B8, 0x60DB, 0x90B9, 0x60DE, 0x90BA, 0x60E1, 0x90BB, 0x60E2, 0x90BC, 0x60E3, 0x90BD, 0x60E4, + 0x90BE, 0x60E5, 0x90BF, 0x60EA, 0x90C0, 0x60F1, 0x90C1, 0x60F2, 0x90C2, 0x60F5, 0x90C3, 0x60F7, 0x90C4, 0x60F8, 0x90C5, 0x60FB, + 0x90C6, 0x60FC, 0x90C7, 0x60FD, 0x90C8, 0x60FE, 0x90C9, 0x60FF, 0x90CA, 0x6102, 0x90CB, 0x6103, 0x90CC, 0x6104, 0x90CD, 0x6105, + 0x90CE, 0x6107, 0x90CF, 0x610A, 0x90D0, 0x610B, 0x90D1, 0x610C, 0x90D2, 0x6110, 0x90D3, 0x6111, 0x90D4, 0x6112, 0x90D5, 0x6113, + 0x90D6, 0x6114, 0x90D7, 0x6116, 0x90D8, 0x6117, 0x90D9, 0x6118, 0x90DA, 0x6119, 0x90DB, 0x611B, 0x90DC, 0x611C, 0x90DD, 0x611D, + 0x90DE, 0x611E, 0x90DF, 0x6121, 0x90E0, 0x6122, 0x90E1, 0x6125, 0x90E2, 0x6128, 0x90E3, 0x6129, 0x90E4, 0x612A, 0x90E5, 0x612C, + 0x90E6, 0x612D, 0x90E7, 0x612E, 0x90E8, 0x612F, 0x90E9, 0x6130, 0x90EA, 0x6131, 0x90EB, 0x6132, 0x90EC, 0x6133, 0x90ED, 0x6134, + 0x90EE, 0x6135, 0x90EF, 0x6136, 0x90F0, 0x6137, 0x90F1, 0x6138, 0x90F2, 0x6139, 0x90F3, 0x613A, 0x90F4, 0x613B, 0x90F5, 0x613C, + 0x90F6, 0x613D, 0x90F7, 0x613E, 0x90F8, 0x6140, 0x90F9, 0x6141, 0x90FA, 0x6142, 0x90FB, 0x6143, 0x90FC, 0x6144, 0x90FD, 0x6145, + 0x90FE, 0x6146, 0x9140, 0x6147, 0x9141, 0x6149, 0x9142, 0x614B, 0x9143, 0x614D, 0x9144, 0x614F, 0x9145, 0x6150, 0x9146, 0x6152, + 0x9147, 0x6153, 0x9148, 0x6154, 0x9149, 0x6156, 0x914A, 0x6157, 0x914B, 0x6158, 0x914C, 0x6159, 0x914D, 0x615A, 0x914E, 0x615B, + 0x914F, 0x615C, 0x9150, 0x615E, 0x9151, 0x615F, 0x9152, 0x6160, 0x9153, 0x6161, 0x9154, 0x6163, 0x9155, 0x6164, 0x9156, 0x6165, + 0x9157, 0x6166, 0x9158, 0x6169, 0x9159, 0x616A, 0x915A, 0x616B, 0x915B, 0x616C, 0x915C, 0x616D, 0x915D, 0x616E, 0x915E, 0x616F, + 0x915F, 0x6171, 0x9160, 0x6172, 0x9161, 0x6173, 0x9162, 0x6174, 0x9163, 0x6176, 0x9164, 0x6178, 0x9165, 0x6179, 0x9166, 0x617A, + 0x9167, 0x617B, 0x9168, 0x617C, 0x9169, 0x617D, 0x916A, 0x617E, 0x916B, 0x617F, 0x916C, 0x6180, 0x916D, 0x6181, 0x916E, 0x6182, + 0x916F, 0x6183, 0x9170, 0x6184, 0x9171, 0x6185, 0x9172, 0x6186, 0x9173, 0x6187, 0x9174, 0x6188, 0x9175, 0x6189, 0x9176, 0x618A, + 0x9177, 0x618C, 0x9178, 0x618D, 0x9179, 0x618F, 0x917A, 0x6190, 0x917B, 0x6191, 0x917C, 0x6192, 0x917D, 0x6193, 0x917E, 0x6195, + 0x9180, 0x6196, 0x9181, 0x6197, 0x9182, 0x6198, 0x9183, 0x6199, 0x9184, 0x619A, 0x9185, 0x619B, 0x9186, 0x619C, 0x9187, 0x619E, + 0x9188, 0x619F, 0x9189, 0x61A0, 0x918A, 0x61A1, 0x918B, 0x61A2, 0x918C, 0x61A3, 0x918D, 0x61A4, 0x918E, 0x61A5, 0x918F, 0x61A6, + 0x9190, 0x61AA, 0x9191, 0x61AB, 0x9192, 0x61AD, 0x9193, 0x61AE, 0x9194, 0x61AF, 0x9195, 0x61B0, 0x9196, 0x61B1, 0x9197, 0x61B2, + 0x9198, 0x61B3, 0x9199, 0x61B4, 0x919A, 0x61B5, 0x919B, 0x61B6, 0x919C, 0x61B8, 0x919D, 0x61B9, 0x919E, 0x61BA, 0x919F, 0x61BB, + 0x91A0, 0x61BC, 0x91A1, 0x61BD, 0x91A2, 0x61BF, 0x91A3, 0x61C0, 0x91A4, 0x61C1, 0x91A5, 0x61C3, 0x91A6, 0x61C4, 0x91A7, 0x61C5, + 0x91A8, 0x61C6, 0x91A9, 0x61C7, 0x91AA, 0x61C9, 0x91AB, 0x61CC, 0x91AC, 0x61CD, 0x91AD, 0x61CE, 0x91AE, 0x61CF, 0x91AF, 0x61D0, + 0x91B0, 0x61D3, 0x91B1, 0x61D5, 0x91B2, 0x61D6, 0x91B3, 0x61D7, 0x91B4, 0x61D8, 0x91B5, 0x61D9, 0x91B6, 0x61DA, 0x91B7, 0x61DB, + 0x91B8, 0x61DC, 0x91B9, 0x61DD, 0x91BA, 0x61DE, 0x91BB, 0x61DF, 0x91BC, 0x61E0, 0x91BD, 0x61E1, 0x91BE, 0x61E2, 0x91BF, 0x61E3, + 0x91C0, 0x61E4, 0x91C1, 0x61E5, 0x91C2, 0x61E7, 0x91C3, 0x61E8, 0x91C4, 0x61E9, 0x91C5, 0x61EA, 0x91C6, 0x61EB, 0x91C7, 0x61EC, + 0x91C8, 0x61ED, 0x91C9, 0x61EE, 0x91CA, 0x61EF, 0x91CB, 0x61F0, 0x91CC, 0x61F1, 0x91CD, 0x61F2, 0x91CE, 0x61F3, 0x91CF, 0x61F4, + 0x91D0, 0x61F6, 0x91D1, 0x61F7, 0x91D2, 0x61F8, 0x91D3, 0x61F9, 0x91D4, 0x61FA, 0x91D5, 0x61FB, 0x91D6, 0x61FC, 0x91D7, 0x61FD, + 0x91D8, 0x61FE, 0x91D9, 0x6200, 0x91DA, 0x6201, 0x91DB, 0x6202, 0x91DC, 0x6203, 0x91DD, 0x6204, 0x91DE, 0x6205, 0x91DF, 0x6207, + 0x91E0, 0x6209, 0x91E1, 0x6213, 0x91E2, 0x6214, 0x91E3, 0x6219, 0x91E4, 0x621C, 0x91E5, 0x621D, 0x91E6, 0x621E, 0x91E7, 0x6220, + 0x91E8, 0x6223, 0x91E9, 0x6226, 0x91EA, 0x6227, 0x91EB, 0x6228, 0x91EC, 0x6229, 0x91ED, 0x622B, 0x91EE, 0x622D, 0x91EF, 0x622F, + 0x91F0, 0x6230, 0x91F1, 0x6231, 0x91F2, 0x6232, 0x91F3, 0x6235, 0x91F4, 0x6236, 0x91F5, 0x6238, 0x91F6, 0x6239, 0x91F7, 0x623A, + 0x91F8, 0x623B, 0x91F9, 0x623C, 0x91FA, 0x6242, 0x91FB, 0x6244, 0x91FC, 0x6245, 0x91FD, 0x6246, 0x91FE, 0x624A, 0x9240, 0x624F, + 0x9241, 0x6250, 0x9242, 0x6255, 0x9243, 0x6256, 0x9244, 0x6257, 0x9245, 0x6259, 0x9246, 0x625A, 0x9247, 0x625C, 0x9248, 0x625D, + 0x9249, 0x625E, 0x924A, 0x625F, 0x924B, 0x6260, 0x924C, 0x6261, 0x924D, 0x6262, 0x924E, 0x6264, 0x924F, 0x6265, 0x9250, 0x6268, + 0x9251, 0x6271, 0x9252, 0x6272, 0x9253, 0x6274, 0x9254, 0x6275, 0x9255, 0x6277, 0x9256, 0x6278, 0x9257, 0x627A, 0x9258, 0x627B, + 0x9259, 0x627D, 0x925A, 0x6281, 0x925B, 0x6282, 0x925C, 0x6283, 0x925D, 0x6285, 0x925E, 0x6286, 0x925F, 0x6287, 0x9260, 0x6288, + 0x9261, 0x628B, 0x9262, 0x628C, 0x9263, 0x628D, 0x9264, 0x628E, 0x9265, 0x628F, 0x9266, 0x6290, 0x9267, 0x6294, 0x9268, 0x6299, + 0x9269, 0x629C, 0x926A, 0x629D, 0x926B, 0x629E, 0x926C, 0x62A3, 0x926D, 0x62A6, 0x926E, 0x62A7, 0x926F, 0x62A9, 0x9270, 0x62AA, + 0x9271, 0x62AD, 0x9272, 0x62AE, 0x9273, 0x62AF, 0x9274, 0x62B0, 0x9275, 0x62B2, 0x9276, 0x62B3, 0x9277, 0x62B4, 0x9278, 0x62B6, + 0x9279, 0x62B7, 0x927A, 0x62B8, 0x927B, 0x62BA, 0x927C, 0x62BE, 0x927D, 0x62C0, 0x927E, 0x62C1, 0x9280, 0x62C3, 0x9281, 0x62CB, + 0x9282, 0x62CF, 0x9283, 0x62D1, 0x9284, 0x62D5, 0x9285, 0x62DD, 0x9286, 0x62DE, 0x9287, 0x62E0, 0x9288, 0x62E1, 0x9289, 0x62E4, + 0x928A, 0x62EA, 0x928B, 0x62EB, 0x928C, 0x62F0, 0x928D, 0x62F2, 0x928E, 0x62F5, 0x928F, 0x62F8, 0x9290, 0x62F9, 0x9291, 0x62FA, + 0x9292, 0x62FB, 0x9293, 0x6300, 0x9294, 0x6303, 0x9295, 0x6304, 0x9296, 0x6305, 0x9297, 0x6306, 0x9298, 0x630A, 0x9299, 0x630B, + 0x929A, 0x630C, 0x929B, 0x630D, 0x929C, 0x630F, 0x929D, 0x6310, 0x929E, 0x6312, 0x929F, 0x6313, 0x92A0, 0x6314, 0x92A1, 0x6315, + 0x92A2, 0x6317, 0x92A3, 0x6318, 0x92A4, 0x6319, 0x92A5, 0x631C, 0x92A6, 0x6326, 0x92A7, 0x6327, 0x92A8, 0x6329, 0x92A9, 0x632C, + 0x92AA, 0x632D, 0x92AB, 0x632E, 0x92AC, 0x6330, 0x92AD, 0x6331, 0x92AE, 0x6333, 0x92AF, 0x6334, 0x92B0, 0x6335, 0x92B1, 0x6336, + 0x92B2, 0x6337, 0x92B3, 0x6338, 0x92B4, 0x633B, 0x92B5, 0x633C, 0x92B6, 0x633E, 0x92B7, 0x633F, 0x92B8, 0x6340, 0x92B9, 0x6341, + 0x92BA, 0x6344, 0x92BB, 0x6347, 0x92BC, 0x6348, 0x92BD, 0x634A, 0x92BE, 0x6351, 0x92BF, 0x6352, 0x92C0, 0x6353, 0x92C1, 0x6354, + 0x92C2, 0x6356, 0x92C3, 0x6357, 0x92C4, 0x6358, 0x92C5, 0x6359, 0x92C6, 0x635A, 0x92C7, 0x635B, 0x92C8, 0x635C, 0x92C9, 0x635D, + 0x92CA, 0x6360, 0x92CB, 0x6364, 0x92CC, 0x6365, 0x92CD, 0x6366, 0x92CE, 0x6368, 0x92CF, 0x636A, 0x92D0, 0x636B, 0x92D1, 0x636C, + 0x92D2, 0x636F, 0x92D3, 0x6370, 0x92D4, 0x6372, 0x92D5, 0x6373, 0x92D6, 0x6374, 0x92D7, 0x6375, 0x92D8, 0x6378, 0x92D9, 0x6379, + 0x92DA, 0x637C, 0x92DB, 0x637D, 0x92DC, 0x637E, 0x92DD, 0x637F, 0x92DE, 0x6381, 0x92DF, 0x6383, 0x92E0, 0x6384, 0x92E1, 0x6385, + 0x92E2, 0x6386, 0x92E3, 0x638B, 0x92E4, 0x638D, 0x92E5, 0x6391, 0x92E6, 0x6393, 0x92E7, 0x6394, 0x92E8, 0x6395, 0x92E9, 0x6397, + 0x92EA, 0x6399, 0x92EB, 0x639A, 0x92EC, 0x639B, 0x92ED, 0x639C, 0x92EE, 0x639D, 0x92EF, 0x639E, 0x92F0, 0x639F, 0x92F1, 0x63A1, + 0x92F2, 0x63A4, 0x92F3, 0x63A6, 0x92F4, 0x63AB, 0x92F5, 0x63AF, 0x92F6, 0x63B1, 0x92F7, 0x63B2, 0x92F8, 0x63B5, 0x92F9, 0x63B6, + 0x92FA, 0x63B9, 0x92FB, 0x63BB, 0x92FC, 0x63BD, 0x92FD, 0x63BF, 0x92FE, 0x63C0, 0x9340, 0x63C1, 0x9341, 0x63C2, 0x9342, 0x63C3, + 0x9343, 0x63C5, 0x9344, 0x63C7, 0x9345, 0x63C8, 0x9346, 0x63CA, 0x9347, 0x63CB, 0x9348, 0x63CC, 0x9349, 0x63D1, 0x934A, 0x63D3, + 0x934B, 0x63D4, 0x934C, 0x63D5, 0x934D, 0x63D7, 0x934E, 0x63D8, 0x934F, 0x63D9, 0x9350, 0x63DA, 0x9351, 0x63DB, 0x9352, 0x63DC, + 0x9353, 0x63DD, 0x9354, 0x63DF, 0x9355, 0x63E2, 0x9356, 0x63E4, 0x9357, 0x63E5, 0x9358, 0x63E6, 0x9359, 0x63E7, 0x935A, 0x63E8, + 0x935B, 0x63EB, 0x935C, 0x63EC, 0x935D, 0x63EE, 0x935E, 0x63EF, 0x935F, 0x63F0, 0x9360, 0x63F1, 0x9361, 0x63F3, 0x9362, 0x63F5, + 0x9363, 0x63F7, 0x9364, 0x63F9, 0x9365, 0x63FA, 0x9366, 0x63FB, 0x9367, 0x63FC, 0x9368, 0x63FE, 0x9369, 0x6403, 0x936A, 0x6404, + 0x936B, 0x6406, 0x936C, 0x6407, 0x936D, 0x6408, 0x936E, 0x6409, 0x936F, 0x640A, 0x9370, 0x640D, 0x9371, 0x640E, 0x9372, 0x6411, + 0x9373, 0x6412, 0x9374, 0x6415, 0x9375, 0x6416, 0x9376, 0x6417, 0x9377, 0x6418, 0x9378, 0x6419, 0x9379, 0x641A, 0x937A, 0x641D, + 0x937B, 0x641F, 0x937C, 0x6422, 0x937D, 0x6423, 0x937E, 0x6424, 0x9380, 0x6425, 0x9381, 0x6427, 0x9382, 0x6428, 0x9383, 0x6429, + 0x9384, 0x642B, 0x9385, 0x642E, 0x9386, 0x642F, 0x9387, 0x6430, 0x9388, 0x6431, 0x9389, 0x6432, 0x938A, 0x6433, 0x938B, 0x6435, + 0x938C, 0x6436, 0x938D, 0x6437, 0x938E, 0x6438, 0x938F, 0x6439, 0x9390, 0x643B, 0x9391, 0x643C, 0x9392, 0x643E, 0x9393, 0x6440, + 0x9394, 0x6442, 0x9395, 0x6443, 0x9396, 0x6449, 0x9397, 0x644B, 0x9398, 0x644C, 0x9399, 0x644D, 0x939A, 0x644E, 0x939B, 0x644F, + 0x939C, 0x6450, 0x939D, 0x6451, 0x939E, 0x6453, 0x939F, 0x6455, 0x93A0, 0x6456, 0x93A1, 0x6457, 0x93A2, 0x6459, 0x93A3, 0x645A, + 0x93A4, 0x645B, 0x93A5, 0x645C, 0x93A6, 0x645D, 0x93A7, 0x645F, 0x93A8, 0x6460, 0x93A9, 0x6461, 0x93AA, 0x6462, 0x93AB, 0x6463, + 0x93AC, 0x6464, 0x93AD, 0x6465, 0x93AE, 0x6466, 0x93AF, 0x6468, 0x93B0, 0x646A, 0x93B1, 0x646B, 0x93B2, 0x646C, 0x93B3, 0x646E, + 0x93B4, 0x646F, 0x93B5, 0x6470, 0x93B6, 0x6471, 0x93B7, 0x6472, 0x93B8, 0x6473, 0x93B9, 0x6474, 0x93BA, 0x6475, 0x93BB, 0x6476, + 0x93BC, 0x6477, 0x93BD, 0x647B, 0x93BE, 0x647C, 0x93BF, 0x647D, 0x93C0, 0x647E, 0x93C1, 0x647F, 0x93C2, 0x6480, 0x93C3, 0x6481, + 0x93C4, 0x6483, 0x93C5, 0x6486, 0x93C6, 0x6488, 0x93C7, 0x6489, 0x93C8, 0x648A, 0x93C9, 0x648B, 0x93CA, 0x648C, 0x93CB, 0x648D, + 0x93CC, 0x648E, 0x93CD, 0x648F, 0x93CE, 0x6490, 0x93CF, 0x6493, 0x93D0, 0x6494, 0x93D1, 0x6497, 0x93D2, 0x6498, 0x93D3, 0x649A, + 0x93D4, 0x649B, 0x93D5, 0x649C, 0x93D6, 0x649D, 0x93D7, 0x649F, 0x93D8, 0x64A0, 0x93D9, 0x64A1, 0x93DA, 0x64A2, 0x93DB, 0x64A3, + 0x93DC, 0x64A5, 0x93DD, 0x64A6, 0x93DE, 0x64A7, 0x93DF, 0x64A8, 0x93E0, 0x64AA, 0x93E1, 0x64AB, 0x93E2, 0x64AF, 0x93E3, 0x64B1, + 0x93E4, 0x64B2, 0x93E5, 0x64B3, 0x93E6, 0x64B4, 0x93E7, 0x64B6, 0x93E8, 0x64B9, 0x93E9, 0x64BB, 0x93EA, 0x64BD, 0x93EB, 0x64BE, + 0x93EC, 0x64BF, 0x93ED, 0x64C1, 0x93EE, 0x64C3, 0x93EF, 0x64C4, 0x93F0, 0x64C6, 0x93F1, 0x64C7, 0x93F2, 0x64C8, 0x93F3, 0x64C9, + 0x93F4, 0x64CA, 0x93F5, 0x64CB, 0x93F6, 0x64CC, 0x93F7, 0x64CF, 0x93F8, 0x64D1, 0x93F9, 0x64D3, 0x93FA, 0x64D4, 0x93FB, 0x64D5, + 0x93FC, 0x64D6, 0x93FD, 0x64D9, 0x93FE, 0x64DA, 0x9440, 0x64DB, 0x9441, 0x64DC, 0x9442, 0x64DD, 0x9443, 0x64DF, 0x9444, 0x64E0, + 0x9445, 0x64E1, 0x9446, 0x64E3, 0x9447, 0x64E5, 0x9448, 0x64E7, 0x9449, 0x64E8, 0x944A, 0x64E9, 0x944B, 0x64EA, 0x944C, 0x64EB, + 0x944D, 0x64EC, 0x944E, 0x64ED, 0x944F, 0x64EE, 0x9450, 0x64EF, 0x9451, 0x64F0, 0x9452, 0x64F1, 0x9453, 0x64F2, 0x9454, 0x64F3, + 0x9455, 0x64F4, 0x9456, 0x64F5, 0x9457, 0x64F6, 0x9458, 0x64F7, 0x9459, 0x64F8, 0x945A, 0x64F9, 0x945B, 0x64FA, 0x945C, 0x64FB, + 0x945D, 0x64FC, 0x945E, 0x64FD, 0x945F, 0x64FE, 0x9460, 0x64FF, 0x9461, 0x6501, 0x9462, 0x6502, 0x9463, 0x6503, 0x9464, 0x6504, + 0x9465, 0x6505, 0x9466, 0x6506, 0x9467, 0x6507, 0x9468, 0x6508, 0x9469, 0x650A, 0x946A, 0x650B, 0x946B, 0x650C, 0x946C, 0x650D, + 0x946D, 0x650E, 0x946E, 0x650F, 0x946F, 0x6510, 0x9470, 0x6511, 0x9471, 0x6513, 0x9472, 0x6514, 0x9473, 0x6515, 0x9474, 0x6516, + 0x9475, 0x6517, 0x9476, 0x6519, 0x9477, 0x651A, 0x9478, 0x651B, 0x9479, 0x651C, 0x947A, 0x651D, 0x947B, 0x651E, 0x947C, 0x651F, + 0x947D, 0x6520, 0x947E, 0x6521, 0x9480, 0x6522, 0x9481, 0x6523, 0x9482, 0x6524, 0x9483, 0x6526, 0x9484, 0x6527, 0x9485, 0x6528, + 0x9486, 0x6529, 0x9487, 0x652A, 0x9488, 0x652C, 0x9489, 0x652D, 0x948A, 0x6530, 0x948B, 0x6531, 0x948C, 0x6532, 0x948D, 0x6533, + 0x948E, 0x6537, 0x948F, 0x653A, 0x9490, 0x653C, 0x9491, 0x653D, 0x9492, 0x6540, 0x9493, 0x6541, 0x9494, 0x6542, 0x9495, 0x6543, + 0x9496, 0x6544, 0x9497, 0x6546, 0x9498, 0x6547, 0x9499, 0x654A, 0x949A, 0x654B, 0x949B, 0x654D, 0x949C, 0x654E, 0x949D, 0x6550, + 0x949E, 0x6552, 0x949F, 0x6553, 0x94A0, 0x6554, 0x94A1, 0x6557, 0x94A2, 0x6558, 0x94A3, 0x655A, 0x94A4, 0x655C, 0x94A5, 0x655F, + 0x94A6, 0x6560, 0x94A7, 0x6561, 0x94A8, 0x6564, 0x94A9, 0x6565, 0x94AA, 0x6567, 0x94AB, 0x6568, 0x94AC, 0x6569, 0x94AD, 0x656A, + 0x94AE, 0x656D, 0x94AF, 0x656E, 0x94B0, 0x656F, 0x94B1, 0x6571, 0x94B2, 0x6573, 0x94B3, 0x6575, 0x94B4, 0x6576, 0x94B5, 0x6578, + 0x94B6, 0x6579, 0x94B7, 0x657A, 0x94B8, 0x657B, 0x94B9, 0x657C, 0x94BA, 0x657D, 0x94BB, 0x657E, 0x94BC, 0x657F, 0x94BD, 0x6580, + 0x94BE, 0x6581, 0x94BF, 0x6582, 0x94C0, 0x6583, 0x94C1, 0x6584, 0x94C2, 0x6585, 0x94C3, 0x6586, 0x94C4, 0x6588, 0x94C5, 0x6589, + 0x94C6, 0x658A, 0x94C7, 0x658D, 0x94C8, 0x658E, 0x94C9, 0x658F, 0x94CA, 0x6592, 0x94CB, 0x6594, 0x94CC, 0x6595, 0x94CD, 0x6596, + 0x94CE, 0x6598, 0x94CF, 0x659A, 0x94D0, 0x659D, 0x94D1, 0x659E, 0x94D2, 0x65A0, 0x94D3, 0x65A2, 0x94D4, 0x65A3, 0x94D5, 0x65A6, + 0x94D6, 0x65A8, 0x94D7, 0x65AA, 0x94D8, 0x65AC, 0x94D9, 0x65AE, 0x94DA, 0x65B1, 0x94DB, 0x65B2, 0x94DC, 0x65B3, 0x94DD, 0x65B4, + 0x94DE, 0x65B5, 0x94DF, 0x65B6, 0x94E0, 0x65B7, 0x94E1, 0x65B8, 0x94E2, 0x65BA, 0x94E3, 0x65BB, 0x94E4, 0x65BE, 0x94E5, 0x65BF, + 0x94E6, 0x65C0, 0x94E7, 0x65C2, 0x94E8, 0x65C7, 0x94E9, 0x65C8, 0x94EA, 0x65C9, 0x94EB, 0x65CA, 0x94EC, 0x65CD, 0x94ED, 0x65D0, + 0x94EE, 0x65D1, 0x94EF, 0x65D3, 0x94F0, 0x65D4, 0x94F1, 0x65D5, 0x94F2, 0x65D8, 0x94F3, 0x65D9, 0x94F4, 0x65DA, 0x94F5, 0x65DB, + 0x94F6, 0x65DC, 0x94F7, 0x65DD, 0x94F8, 0x65DE, 0x94F9, 0x65DF, 0x94FA, 0x65E1, 0x94FB, 0x65E3, 0x94FC, 0x65E4, 0x94FD, 0x65EA, + 0x94FE, 0x65EB, 0x9540, 0x65F2, 0x9541, 0x65F3, 0x9542, 0x65F4, 0x9543, 0x65F5, 0x9544, 0x65F8, 0x9545, 0x65F9, 0x9546, 0x65FB, + 0x9547, 0x65FC, 0x9548, 0x65FD, 0x9549, 0x65FE, 0x954A, 0x65FF, 0x954B, 0x6601, 0x954C, 0x6604, 0x954D, 0x6605, 0x954E, 0x6607, + 0x954F, 0x6608, 0x9550, 0x6609, 0x9551, 0x660B, 0x9552, 0x660D, 0x9553, 0x6610, 0x9554, 0x6611, 0x9555, 0x6612, 0x9556, 0x6616, + 0x9557, 0x6617, 0x9558, 0x6618, 0x9559, 0x661A, 0x955A, 0x661B, 0x955B, 0x661C, 0x955C, 0x661E, 0x955D, 0x6621, 0x955E, 0x6622, + 0x955F, 0x6623, 0x9560, 0x6624, 0x9561, 0x6626, 0x9562, 0x6629, 0x9563, 0x662A, 0x9564, 0x662B, 0x9565, 0x662C, 0x9566, 0x662E, + 0x9567, 0x6630, 0x9568, 0x6632, 0x9569, 0x6633, 0x956A, 0x6637, 0x956B, 0x6638, 0x956C, 0x6639, 0x956D, 0x663A, 0x956E, 0x663B, + 0x956F, 0x663D, 0x9570, 0x663F, 0x9571, 0x6640, 0x9572, 0x6642, 0x9573, 0x6644, 0x9574, 0x6645, 0x9575, 0x6646, 0x9576, 0x6647, + 0x9577, 0x6648, 0x9578, 0x6649, 0x9579, 0x664A, 0x957A, 0x664D, 0x957B, 0x664E, 0x957C, 0x6650, 0x957D, 0x6651, 0x957E, 0x6658, + 0x9580, 0x6659, 0x9581, 0x665B, 0x9582, 0x665C, 0x9583, 0x665D, 0x9584, 0x665E, 0x9585, 0x6660, 0x9586, 0x6662, 0x9587, 0x6663, + 0x9588, 0x6665, 0x9589, 0x6667, 0x958A, 0x6669, 0x958B, 0x666A, 0x958C, 0x666B, 0x958D, 0x666C, 0x958E, 0x666D, 0x958F, 0x6671, + 0x9590, 0x6672, 0x9591, 0x6673, 0x9592, 0x6675, 0x9593, 0x6678, 0x9594, 0x6679, 0x9595, 0x667B, 0x9596, 0x667C, 0x9597, 0x667D, + 0x9598, 0x667F, 0x9599, 0x6680, 0x959A, 0x6681, 0x959B, 0x6683, 0x959C, 0x6685, 0x959D, 0x6686, 0x959E, 0x6688, 0x959F, 0x6689, + 0x95A0, 0x668A, 0x95A1, 0x668B, 0x95A2, 0x668D, 0x95A3, 0x668E, 0x95A4, 0x668F, 0x95A5, 0x6690, 0x95A6, 0x6692, 0x95A7, 0x6693, + 0x95A8, 0x6694, 0x95A9, 0x6695, 0x95AA, 0x6698, 0x95AB, 0x6699, 0x95AC, 0x669A, 0x95AD, 0x669B, 0x95AE, 0x669C, 0x95AF, 0x669E, + 0x95B0, 0x669F, 0x95B1, 0x66A0, 0x95B2, 0x66A1, 0x95B3, 0x66A2, 0x95B4, 0x66A3, 0x95B5, 0x66A4, 0x95B6, 0x66A5, 0x95B7, 0x66A6, + 0x95B8, 0x66A9, 0x95B9, 0x66AA, 0x95BA, 0x66AB, 0x95BB, 0x66AC, 0x95BC, 0x66AD, 0x95BD, 0x66AF, 0x95BE, 0x66B0, 0x95BF, 0x66B1, + 0x95C0, 0x66B2, 0x95C1, 0x66B3, 0x95C2, 0x66B5, 0x95C3, 0x66B6, 0x95C4, 0x66B7, 0x95C5, 0x66B8, 0x95C6, 0x66BA, 0x95C7, 0x66BB, + 0x95C8, 0x66BC, 0x95C9, 0x66BD, 0x95CA, 0x66BF, 0x95CB, 0x66C0, 0x95CC, 0x66C1, 0x95CD, 0x66C2, 0x95CE, 0x66C3, 0x95CF, 0x66C4, + 0x95D0, 0x66C5, 0x95D1, 0x66C6, 0x95D2, 0x66C7, 0x95D3, 0x66C8, 0x95D4, 0x66C9, 0x95D5, 0x66CA, 0x95D6, 0x66CB, 0x95D7, 0x66CC, + 0x95D8, 0x66CD, 0x95D9, 0x66CE, 0x95DA, 0x66CF, 0x95DB, 0x66D0, 0x95DC, 0x66D1, 0x95DD, 0x66D2, 0x95DE, 0x66D3, 0x95DF, 0x66D4, + 0x95E0, 0x66D5, 0x95E1, 0x66D6, 0x95E2, 0x66D7, 0x95E3, 0x66D8, 0x95E4, 0x66DA, 0x95E5, 0x66DE, 0x95E6, 0x66DF, 0x95E7, 0x66E0, + 0x95E8, 0x66E1, 0x95E9, 0x66E2, 0x95EA, 0x66E3, 0x95EB, 0x66E4, 0x95EC, 0x66E5, 0x95ED, 0x66E7, 0x95EE, 0x66E8, 0x95EF, 0x66EA, + 0x95F0, 0x66EB, 0x95F1, 0x66EC, 0x95F2, 0x66ED, 0x95F3, 0x66EE, 0x95F4, 0x66EF, 0x95F5, 0x66F1, 0x95F6, 0x66F5, 0x95F7, 0x66F6, + 0x95F8, 0x66F8, 0x95F9, 0x66FA, 0x95FA, 0x66FB, 0x95FB, 0x66FD, 0x95FC, 0x6701, 0x95FD, 0x6702, 0x95FE, 0x6703, 0x9640, 0x6704, + 0x9641, 0x6705, 0x9642, 0x6706, 0x9643, 0x6707, 0x9644, 0x670C, 0x9645, 0x670E, 0x9646, 0x670F, 0x9647, 0x6711, 0x9648, 0x6712, + 0x9649, 0x6713, 0x964A, 0x6716, 0x964B, 0x6718, 0x964C, 0x6719, 0x964D, 0x671A, 0x964E, 0x671C, 0x964F, 0x671E, 0x9650, 0x6720, + 0x9651, 0x6721, 0x9652, 0x6722, 0x9653, 0x6723, 0x9654, 0x6724, 0x9655, 0x6725, 0x9656, 0x6727, 0x9657, 0x6729, 0x9658, 0x672E, + 0x9659, 0x6730, 0x965A, 0x6732, 0x965B, 0x6733, 0x965C, 0x6736, 0x965D, 0x6737, 0x965E, 0x6738, 0x965F, 0x6739, 0x9660, 0x673B, + 0x9661, 0x673C, 0x9662, 0x673E, 0x9663, 0x673F, 0x9664, 0x6741, 0x9665, 0x6744, 0x9666, 0x6745, 0x9667, 0x6747, 0x9668, 0x674A, + 0x9669, 0x674B, 0x966A, 0x674D, 0x966B, 0x6752, 0x966C, 0x6754, 0x966D, 0x6755, 0x966E, 0x6757, 0x966F, 0x6758, 0x9670, 0x6759, + 0x9671, 0x675A, 0x9672, 0x675B, 0x9673, 0x675D, 0x9674, 0x6762, 0x9675, 0x6763, 0x9676, 0x6764, 0x9677, 0x6766, 0x9678, 0x6767, + 0x9679, 0x676B, 0x967A, 0x676C, 0x967B, 0x676E, 0x967C, 0x6771, 0x967D, 0x6774, 0x967E, 0x6776, 0x9680, 0x6778, 0x9681, 0x6779, + 0x9682, 0x677A, 0x9683, 0x677B, 0x9684, 0x677D, 0x9685, 0x6780, 0x9686, 0x6782, 0x9687, 0x6783, 0x9688, 0x6785, 0x9689, 0x6786, + 0x968A, 0x6788, 0x968B, 0x678A, 0x968C, 0x678C, 0x968D, 0x678D, 0x968E, 0x678E, 0x968F, 0x678F, 0x9690, 0x6791, 0x9691, 0x6792, + 0x9692, 0x6793, 0x9693, 0x6794, 0x9694, 0x6796, 0x9695, 0x6799, 0x9696, 0x679B, 0x9697, 0x679F, 0x9698, 0x67A0, 0x9699, 0x67A1, + 0x969A, 0x67A4, 0x969B, 0x67A6, 0x969C, 0x67A9, 0x969D, 0x67AC, 0x969E, 0x67AE, 0x969F, 0x67B1, 0x96A0, 0x67B2, 0x96A1, 0x67B4, + 0x96A2, 0x67B9, 0x96A3, 0x67BA, 0x96A4, 0x67BB, 0x96A5, 0x67BC, 0x96A6, 0x67BD, 0x96A7, 0x67BE, 0x96A8, 0x67BF, 0x96A9, 0x67C0, + 0x96AA, 0x67C2, 0x96AB, 0x67C5, 0x96AC, 0x67C6, 0x96AD, 0x67C7, 0x96AE, 0x67C8, 0x96AF, 0x67C9, 0x96B0, 0x67CA, 0x96B1, 0x67CB, + 0x96B2, 0x67CC, 0x96B3, 0x67CD, 0x96B4, 0x67CE, 0x96B5, 0x67D5, 0x96B6, 0x67D6, 0x96B7, 0x67D7, 0x96B8, 0x67DB, 0x96B9, 0x67DF, + 0x96BA, 0x67E1, 0x96BB, 0x67E3, 0x96BC, 0x67E4, 0x96BD, 0x67E6, 0x96BE, 0x67E7, 0x96BF, 0x67E8, 0x96C0, 0x67EA, 0x96C1, 0x67EB, + 0x96C2, 0x67ED, 0x96C3, 0x67EE, 0x96C4, 0x67F2, 0x96C5, 0x67F5, 0x96C6, 0x67F6, 0x96C7, 0x67F7, 0x96C8, 0x67F8, 0x96C9, 0x67F9, + 0x96CA, 0x67FA, 0x96CB, 0x67FB, 0x96CC, 0x67FC, 0x96CD, 0x67FE, 0x96CE, 0x6801, 0x96CF, 0x6802, 0x96D0, 0x6803, 0x96D1, 0x6804, + 0x96D2, 0x6806, 0x96D3, 0x680D, 0x96D4, 0x6810, 0x96D5, 0x6812, 0x96D6, 0x6814, 0x96D7, 0x6815, 0x96D8, 0x6818, 0x96D9, 0x6819, + 0x96DA, 0x681A, 0x96DB, 0x681B, 0x96DC, 0x681C, 0x96DD, 0x681E, 0x96DE, 0x681F, 0x96DF, 0x6820, 0x96E0, 0x6822, 0x96E1, 0x6823, + 0x96E2, 0x6824, 0x96E3, 0x6825, 0x96E4, 0x6826, 0x96E5, 0x6827, 0x96E6, 0x6828, 0x96E7, 0x682B, 0x96E8, 0x682C, 0x96E9, 0x682D, + 0x96EA, 0x682E, 0x96EB, 0x682F, 0x96EC, 0x6830, 0x96ED, 0x6831, 0x96EE, 0x6834, 0x96EF, 0x6835, 0x96F0, 0x6836, 0x96F1, 0x683A, + 0x96F2, 0x683B, 0x96F3, 0x683F, 0x96F4, 0x6847, 0x96F5, 0x684B, 0x96F6, 0x684D, 0x96F7, 0x684F, 0x96F8, 0x6852, 0x96F9, 0x6856, + 0x96FA, 0x6857, 0x96FB, 0x6858, 0x96FC, 0x6859, 0x96FD, 0x685A, 0x96FE, 0x685B, 0x9740, 0x685C, 0x9741, 0x685D, 0x9742, 0x685E, + 0x9743, 0x685F, 0x9744, 0x686A, 0x9745, 0x686C, 0x9746, 0x686D, 0x9747, 0x686E, 0x9748, 0x686F, 0x9749, 0x6870, 0x974A, 0x6871, + 0x974B, 0x6872, 0x974C, 0x6873, 0x974D, 0x6875, 0x974E, 0x6878, 0x974F, 0x6879, 0x9750, 0x687A, 0x9751, 0x687B, 0x9752, 0x687C, + 0x9753, 0x687D, 0x9754, 0x687E, 0x9755, 0x687F, 0x9756, 0x6880, 0x9757, 0x6882, 0x9758, 0x6884, 0x9759, 0x6887, 0x975A, 0x6888, + 0x975B, 0x6889, 0x975C, 0x688A, 0x975D, 0x688B, 0x975E, 0x688C, 0x975F, 0x688D, 0x9760, 0x688E, 0x9761, 0x6890, 0x9762, 0x6891, + 0x9763, 0x6892, 0x9764, 0x6894, 0x9765, 0x6895, 0x9766, 0x6896, 0x9767, 0x6898, 0x9768, 0x6899, 0x9769, 0x689A, 0x976A, 0x689B, + 0x976B, 0x689C, 0x976C, 0x689D, 0x976D, 0x689E, 0x976E, 0x689F, 0x976F, 0x68A0, 0x9770, 0x68A1, 0x9771, 0x68A3, 0x9772, 0x68A4, + 0x9773, 0x68A5, 0x9774, 0x68A9, 0x9775, 0x68AA, 0x9776, 0x68AB, 0x9777, 0x68AC, 0x9778, 0x68AE, 0x9779, 0x68B1, 0x977A, 0x68B2, + 0x977B, 0x68B4, 0x977C, 0x68B6, 0x977D, 0x68B7, 0x977E, 0x68B8, 0x9780, 0x68B9, 0x9781, 0x68BA, 0x9782, 0x68BB, 0x9783, 0x68BC, + 0x9784, 0x68BD, 0x9785, 0x68BE, 0x9786, 0x68BF, 0x9787, 0x68C1, 0x9788, 0x68C3, 0x9789, 0x68C4, 0x978A, 0x68C5, 0x978B, 0x68C6, + 0x978C, 0x68C7, 0x978D, 0x68C8, 0x978E, 0x68CA, 0x978F, 0x68CC, 0x9790, 0x68CE, 0x9791, 0x68CF, 0x9792, 0x68D0, 0x9793, 0x68D1, + 0x9794, 0x68D3, 0x9795, 0x68D4, 0x9796, 0x68D6, 0x9797, 0x68D7, 0x9798, 0x68D9, 0x9799, 0x68DB, 0x979A, 0x68DC, 0x979B, 0x68DD, + 0x979C, 0x68DE, 0x979D, 0x68DF, 0x979E, 0x68E1, 0x979F, 0x68E2, 0x97A0, 0x68E4, 0x97A1, 0x68E5, 0x97A2, 0x68E6, 0x97A3, 0x68E7, + 0x97A4, 0x68E8, 0x97A5, 0x68E9, 0x97A6, 0x68EA, 0x97A7, 0x68EB, 0x97A8, 0x68EC, 0x97A9, 0x68ED, 0x97AA, 0x68EF, 0x97AB, 0x68F2, + 0x97AC, 0x68F3, 0x97AD, 0x68F4, 0x97AE, 0x68F6, 0x97AF, 0x68F7, 0x97B0, 0x68F8, 0x97B1, 0x68FB, 0x97B2, 0x68FD, 0x97B3, 0x68FE, + 0x97B4, 0x68FF, 0x97B5, 0x6900, 0x97B6, 0x6902, 0x97B7, 0x6903, 0x97B8, 0x6904, 0x97B9, 0x6906, 0x97BA, 0x6907, 0x97BB, 0x6908, + 0x97BC, 0x6909, 0x97BD, 0x690A, 0x97BE, 0x690C, 0x97BF, 0x690F, 0x97C0, 0x6911, 0x97C1, 0x6913, 0x97C2, 0x6914, 0x97C3, 0x6915, + 0x97C4, 0x6916, 0x97C5, 0x6917, 0x97C6, 0x6918, 0x97C7, 0x6919, 0x97C8, 0x691A, 0x97C9, 0x691B, 0x97CA, 0x691C, 0x97CB, 0x691D, + 0x97CC, 0x691E, 0x97CD, 0x6921, 0x97CE, 0x6922, 0x97CF, 0x6923, 0x97D0, 0x6925, 0x97D1, 0x6926, 0x97D2, 0x6927, 0x97D3, 0x6928, + 0x97D4, 0x6929, 0x97D5, 0x692A, 0x97D6, 0x692B, 0x97D7, 0x692C, 0x97D8, 0x692E, 0x97D9, 0x692F, 0x97DA, 0x6931, 0x97DB, 0x6932, + 0x97DC, 0x6933, 0x97DD, 0x6935, 0x97DE, 0x6936, 0x97DF, 0x6937, 0x97E0, 0x6938, 0x97E1, 0x693A, 0x97E2, 0x693B, 0x97E3, 0x693C, + 0x97E4, 0x693E, 0x97E5, 0x6940, 0x97E6, 0x6941, 0x97E7, 0x6943, 0x97E8, 0x6944, 0x97E9, 0x6945, 0x97EA, 0x6946, 0x97EB, 0x6947, + 0x97EC, 0x6948, 0x97ED, 0x6949, 0x97EE, 0x694A, 0x97EF, 0x694B, 0x97F0, 0x694C, 0x97F1, 0x694D, 0x97F2, 0x694E, 0x97F3, 0x694F, + 0x97F4, 0x6950, 0x97F5, 0x6951, 0x97F6, 0x6952, 0x97F7, 0x6953, 0x97F8, 0x6955, 0x97F9, 0x6956, 0x97FA, 0x6958, 0x97FB, 0x6959, + 0x97FC, 0x695B, 0x97FD, 0x695C, 0x97FE, 0x695F, 0x9840, 0x6961, 0x9841, 0x6962, 0x9842, 0x6964, 0x9843, 0x6965, 0x9844, 0x6967, + 0x9845, 0x6968, 0x9846, 0x6969, 0x9847, 0x696A, 0x9848, 0x696C, 0x9849, 0x696D, 0x984A, 0x696F, 0x984B, 0x6970, 0x984C, 0x6972, + 0x984D, 0x6973, 0x984E, 0x6974, 0x984F, 0x6975, 0x9850, 0x6976, 0x9851, 0x697A, 0x9852, 0x697B, 0x9853, 0x697D, 0x9854, 0x697E, + 0x9855, 0x697F, 0x9856, 0x6981, 0x9857, 0x6983, 0x9858, 0x6985, 0x9859, 0x698A, 0x985A, 0x698B, 0x985B, 0x698C, 0x985C, 0x698E, + 0x985D, 0x698F, 0x985E, 0x6990, 0x985F, 0x6991, 0x9860, 0x6992, 0x9861, 0x6993, 0x9862, 0x6996, 0x9863, 0x6997, 0x9864, 0x6999, + 0x9865, 0x699A, 0x9866, 0x699D, 0x9867, 0x699E, 0x9868, 0x699F, 0x9869, 0x69A0, 0x986A, 0x69A1, 0x986B, 0x69A2, 0x986C, 0x69A3, + 0x986D, 0x69A4, 0x986E, 0x69A5, 0x986F, 0x69A6, 0x9870, 0x69A9, 0x9871, 0x69AA, 0x9872, 0x69AC, 0x9873, 0x69AE, 0x9874, 0x69AF, + 0x9875, 0x69B0, 0x9876, 0x69B2, 0x9877, 0x69B3, 0x9878, 0x69B5, 0x9879, 0x69B6, 0x987A, 0x69B8, 0x987B, 0x69B9, 0x987C, 0x69BA, + 0x987D, 0x69BC, 0x987E, 0x69BD, 0x9880, 0x69BE, 0x9881, 0x69BF, 0x9882, 0x69C0, 0x9883, 0x69C2, 0x9884, 0x69C3, 0x9885, 0x69C4, + 0x9886, 0x69C5, 0x9887, 0x69C6, 0x9888, 0x69C7, 0x9889, 0x69C8, 0x988A, 0x69C9, 0x988B, 0x69CB, 0x988C, 0x69CD, 0x988D, 0x69CF, + 0x988E, 0x69D1, 0x988F, 0x69D2, 0x9890, 0x69D3, 0x9891, 0x69D5, 0x9892, 0x69D6, 0x9893, 0x69D7, 0x9894, 0x69D8, 0x9895, 0x69D9, + 0x9896, 0x69DA, 0x9897, 0x69DC, 0x9898, 0x69DD, 0x9899, 0x69DE, 0x989A, 0x69E1, 0x989B, 0x69E2, 0x989C, 0x69E3, 0x989D, 0x69E4, + 0x989E, 0x69E5, 0x989F, 0x69E6, 0x98A0, 0x69E7, 0x98A1, 0x69E8, 0x98A2, 0x69E9, 0x98A3, 0x69EA, 0x98A4, 0x69EB, 0x98A5, 0x69EC, + 0x98A6, 0x69EE, 0x98A7, 0x69EF, 0x98A8, 0x69F0, 0x98A9, 0x69F1, 0x98AA, 0x69F3, 0x98AB, 0x69F4, 0x98AC, 0x69F5, 0x98AD, 0x69F6, + 0x98AE, 0x69F7, 0x98AF, 0x69F8, 0x98B0, 0x69F9, 0x98B1, 0x69FA, 0x98B2, 0x69FB, 0x98B3, 0x69FC, 0x98B4, 0x69FE, 0x98B5, 0x6A00, + 0x98B6, 0x6A01, 0x98B7, 0x6A02, 0x98B8, 0x6A03, 0x98B9, 0x6A04, 0x98BA, 0x6A05, 0x98BB, 0x6A06, 0x98BC, 0x6A07, 0x98BD, 0x6A08, + 0x98BE, 0x6A09, 0x98BF, 0x6A0B, 0x98C0, 0x6A0C, 0x98C1, 0x6A0D, 0x98C2, 0x6A0E, 0x98C3, 0x6A0F, 0x98C4, 0x6A10, 0x98C5, 0x6A11, + 0x98C6, 0x6A12, 0x98C7, 0x6A13, 0x98C8, 0x6A14, 0x98C9, 0x6A15, 0x98CA, 0x6A16, 0x98CB, 0x6A19, 0x98CC, 0x6A1A, 0x98CD, 0x6A1B, + 0x98CE, 0x6A1C, 0x98CF, 0x6A1D, 0x98D0, 0x6A1E, 0x98D1, 0x6A20, 0x98D2, 0x6A22, 0x98D3, 0x6A23, 0x98D4, 0x6A24, 0x98D5, 0x6A25, + 0x98D6, 0x6A26, 0x98D7, 0x6A27, 0x98D8, 0x6A29, 0x98D9, 0x6A2B, 0x98DA, 0x6A2C, 0x98DB, 0x6A2D, 0x98DC, 0x6A2E, 0x98DD, 0x6A30, + 0x98DE, 0x6A32, 0x98DF, 0x6A33, 0x98E0, 0x6A34, 0x98E1, 0x6A36, 0x98E2, 0x6A37, 0x98E3, 0x6A38, 0x98E4, 0x6A39, 0x98E5, 0x6A3A, + 0x98E6, 0x6A3B, 0x98E7, 0x6A3C, 0x98E8, 0x6A3F, 0x98E9, 0x6A40, 0x98EA, 0x6A41, 0x98EB, 0x6A42, 0x98EC, 0x6A43, 0x98ED, 0x6A45, + 0x98EE, 0x6A46, 0x98EF, 0x6A48, 0x98F0, 0x6A49, 0x98F1, 0x6A4A, 0x98F2, 0x6A4B, 0x98F3, 0x6A4C, 0x98F4, 0x6A4D, 0x98F5, 0x6A4E, + 0x98F6, 0x6A4F, 0x98F7, 0x6A51, 0x98F8, 0x6A52, 0x98F9, 0x6A53, 0x98FA, 0x6A54, 0x98FB, 0x6A55, 0x98FC, 0x6A56, 0x98FD, 0x6A57, + 0x98FE, 0x6A5A, 0x9940, 0x6A5C, 0x9941, 0x6A5D, 0x9942, 0x6A5E, 0x9943, 0x6A5F, 0x9944, 0x6A60, 0x9945, 0x6A62, 0x9946, 0x6A63, + 0x9947, 0x6A64, 0x9948, 0x6A66, 0x9949, 0x6A67, 0x994A, 0x6A68, 0x994B, 0x6A69, 0x994C, 0x6A6A, 0x994D, 0x6A6B, 0x994E, 0x6A6C, + 0x994F, 0x6A6D, 0x9950, 0x6A6E, 0x9951, 0x6A6F, 0x9952, 0x6A70, 0x9953, 0x6A72, 0x9954, 0x6A73, 0x9955, 0x6A74, 0x9956, 0x6A75, + 0x9957, 0x6A76, 0x9958, 0x6A77, 0x9959, 0x6A78, 0x995A, 0x6A7A, 0x995B, 0x6A7B, 0x995C, 0x6A7D, 0x995D, 0x6A7E, 0x995E, 0x6A7F, + 0x995F, 0x6A81, 0x9960, 0x6A82, 0x9961, 0x6A83, 0x9962, 0x6A85, 0x9963, 0x6A86, 0x9964, 0x6A87, 0x9965, 0x6A88, 0x9966, 0x6A89, + 0x9967, 0x6A8A, 0x9968, 0x6A8B, 0x9969, 0x6A8C, 0x996A, 0x6A8D, 0x996B, 0x6A8F, 0x996C, 0x6A92, 0x996D, 0x6A93, 0x996E, 0x6A94, + 0x996F, 0x6A95, 0x9970, 0x6A96, 0x9971, 0x6A98, 0x9972, 0x6A99, 0x9973, 0x6A9A, 0x9974, 0x6A9B, 0x9975, 0x6A9C, 0x9976, 0x6A9D, + 0x9977, 0x6A9E, 0x9978, 0x6A9F, 0x9979, 0x6AA1, 0x997A, 0x6AA2, 0x997B, 0x6AA3, 0x997C, 0x6AA4, 0x997D, 0x6AA5, 0x997E, 0x6AA6, + 0x9980, 0x6AA7, 0x9981, 0x6AA8, 0x9982, 0x6AAA, 0x9983, 0x6AAD, 0x9984, 0x6AAE, 0x9985, 0x6AAF, 0x9986, 0x6AB0, 0x9987, 0x6AB1, + 0x9988, 0x6AB2, 0x9989, 0x6AB3, 0x998A, 0x6AB4, 0x998B, 0x6AB5, 0x998C, 0x6AB6, 0x998D, 0x6AB7, 0x998E, 0x6AB8, 0x998F, 0x6AB9, + 0x9990, 0x6ABA, 0x9991, 0x6ABB, 0x9992, 0x6ABC, 0x9993, 0x6ABD, 0x9994, 0x6ABE, 0x9995, 0x6ABF, 0x9996, 0x6AC0, 0x9997, 0x6AC1, + 0x9998, 0x6AC2, 0x9999, 0x6AC3, 0x999A, 0x6AC4, 0x999B, 0x6AC5, 0x999C, 0x6AC6, 0x999D, 0x6AC7, 0x999E, 0x6AC8, 0x999F, 0x6AC9, + 0x99A0, 0x6ACA, 0x99A1, 0x6ACB, 0x99A2, 0x6ACC, 0x99A3, 0x6ACD, 0x99A4, 0x6ACE, 0x99A5, 0x6ACF, 0x99A6, 0x6AD0, 0x99A7, 0x6AD1, + 0x99A8, 0x6AD2, 0x99A9, 0x6AD3, 0x99AA, 0x6AD4, 0x99AB, 0x6AD5, 0x99AC, 0x6AD6, 0x99AD, 0x6AD7, 0x99AE, 0x6AD8, 0x99AF, 0x6AD9, + 0x99B0, 0x6ADA, 0x99B1, 0x6ADB, 0x99B2, 0x6ADC, 0x99B3, 0x6ADD, 0x99B4, 0x6ADE, 0x99B5, 0x6ADF, 0x99B6, 0x6AE0, 0x99B7, 0x6AE1, + 0x99B8, 0x6AE2, 0x99B9, 0x6AE3, 0x99BA, 0x6AE4, 0x99BB, 0x6AE5, 0x99BC, 0x6AE6, 0x99BD, 0x6AE7, 0x99BE, 0x6AE8, 0x99BF, 0x6AE9, + 0x99C0, 0x6AEA, 0x99C1, 0x6AEB, 0x99C2, 0x6AEC, 0x99C3, 0x6AED, 0x99C4, 0x6AEE, 0x99C5, 0x6AEF, 0x99C6, 0x6AF0, 0x99C7, 0x6AF1, + 0x99C8, 0x6AF2, 0x99C9, 0x6AF3, 0x99CA, 0x6AF4, 0x99CB, 0x6AF5, 0x99CC, 0x6AF6, 0x99CD, 0x6AF7, 0x99CE, 0x6AF8, 0x99CF, 0x6AF9, + 0x99D0, 0x6AFA, 0x99D1, 0x6AFB, 0x99D2, 0x6AFC, 0x99D3, 0x6AFD, 0x99D4, 0x6AFE, 0x99D5, 0x6AFF, 0x99D6, 0x6B00, 0x99D7, 0x6B01, + 0x99D8, 0x6B02, 0x99D9, 0x6B03, 0x99DA, 0x6B04, 0x99DB, 0x6B05, 0x99DC, 0x6B06, 0x99DD, 0x6B07, 0x99DE, 0x6B08, 0x99DF, 0x6B09, + 0x99E0, 0x6B0A, 0x99E1, 0x6B0B, 0x99E2, 0x6B0C, 0x99E3, 0x6B0D, 0x99E4, 0x6B0E, 0x99E5, 0x6B0F, 0x99E6, 0x6B10, 0x99E7, 0x6B11, + 0x99E8, 0x6B12, 0x99E9, 0x6B13, 0x99EA, 0x6B14, 0x99EB, 0x6B15, 0x99EC, 0x6B16, 0x99ED, 0x6B17, 0x99EE, 0x6B18, 0x99EF, 0x6B19, + 0x99F0, 0x6B1A, 0x99F1, 0x6B1B, 0x99F2, 0x6B1C, 0x99F3, 0x6B1D, 0x99F4, 0x6B1E, 0x99F5, 0x6B1F, 0x99F6, 0x6B25, 0x99F7, 0x6B26, + 0x99F8, 0x6B28, 0x99F9, 0x6B29, 0x99FA, 0x6B2A, 0x99FB, 0x6B2B, 0x99FC, 0x6B2C, 0x99FD, 0x6B2D, 0x99FE, 0x6B2E, 0x9A40, 0x6B2F, + 0x9A41, 0x6B30, 0x9A42, 0x6B31, 0x9A43, 0x6B33, 0x9A44, 0x6B34, 0x9A45, 0x6B35, 0x9A46, 0x6B36, 0x9A47, 0x6B38, 0x9A48, 0x6B3B, + 0x9A49, 0x6B3C, 0x9A4A, 0x6B3D, 0x9A4B, 0x6B3F, 0x9A4C, 0x6B40, 0x9A4D, 0x6B41, 0x9A4E, 0x6B42, 0x9A4F, 0x6B44, 0x9A50, 0x6B45, + 0x9A51, 0x6B48, 0x9A52, 0x6B4A, 0x9A53, 0x6B4B, 0x9A54, 0x6B4D, 0x9A55, 0x6B4E, 0x9A56, 0x6B4F, 0x9A57, 0x6B50, 0x9A58, 0x6B51, + 0x9A59, 0x6B52, 0x9A5A, 0x6B53, 0x9A5B, 0x6B54, 0x9A5C, 0x6B55, 0x9A5D, 0x6B56, 0x9A5E, 0x6B57, 0x9A5F, 0x6B58, 0x9A60, 0x6B5A, + 0x9A61, 0x6B5B, 0x9A62, 0x6B5C, 0x9A63, 0x6B5D, 0x9A64, 0x6B5E, 0x9A65, 0x6B5F, 0x9A66, 0x6B60, 0x9A67, 0x6B61, 0x9A68, 0x6B68, + 0x9A69, 0x6B69, 0x9A6A, 0x6B6B, 0x9A6B, 0x6B6C, 0x9A6C, 0x6B6D, 0x9A6D, 0x6B6E, 0x9A6E, 0x6B6F, 0x9A6F, 0x6B70, 0x9A70, 0x6B71, + 0x9A71, 0x6B72, 0x9A72, 0x6B73, 0x9A73, 0x6B74, 0x9A74, 0x6B75, 0x9A75, 0x6B76, 0x9A76, 0x6B77, 0x9A77, 0x6B78, 0x9A78, 0x6B7A, + 0x9A79, 0x6B7D, 0x9A7A, 0x6B7E, 0x9A7B, 0x6B7F, 0x9A7C, 0x6B80, 0x9A7D, 0x6B85, 0x9A7E, 0x6B88, 0x9A80, 0x6B8C, 0x9A81, 0x6B8E, + 0x9A82, 0x6B8F, 0x9A83, 0x6B90, 0x9A84, 0x6B91, 0x9A85, 0x6B94, 0x9A86, 0x6B95, 0x9A87, 0x6B97, 0x9A88, 0x6B98, 0x9A89, 0x6B99, + 0x9A8A, 0x6B9C, 0x9A8B, 0x6B9D, 0x9A8C, 0x6B9E, 0x9A8D, 0x6B9F, 0x9A8E, 0x6BA0, 0x9A8F, 0x6BA2, 0x9A90, 0x6BA3, 0x9A91, 0x6BA4, + 0x9A92, 0x6BA5, 0x9A93, 0x6BA6, 0x9A94, 0x6BA7, 0x9A95, 0x6BA8, 0x9A96, 0x6BA9, 0x9A97, 0x6BAB, 0x9A98, 0x6BAC, 0x9A99, 0x6BAD, + 0x9A9A, 0x6BAE, 0x9A9B, 0x6BAF, 0x9A9C, 0x6BB0, 0x9A9D, 0x6BB1, 0x9A9E, 0x6BB2, 0x9A9F, 0x6BB6, 0x9AA0, 0x6BB8, 0x9AA1, 0x6BB9, + 0x9AA2, 0x6BBA, 0x9AA3, 0x6BBB, 0x9AA4, 0x6BBC, 0x9AA5, 0x6BBD, 0x9AA6, 0x6BBE, 0x9AA7, 0x6BC0, 0x9AA8, 0x6BC3, 0x9AA9, 0x6BC4, + 0x9AAA, 0x6BC6, 0x9AAB, 0x6BC7, 0x9AAC, 0x6BC8, 0x9AAD, 0x6BC9, 0x9AAE, 0x6BCA, 0x9AAF, 0x6BCC, 0x9AB0, 0x6BCE, 0x9AB1, 0x6BD0, + 0x9AB2, 0x6BD1, 0x9AB3, 0x6BD8, 0x9AB4, 0x6BDA, 0x9AB5, 0x6BDC, 0x9AB6, 0x6BDD, 0x9AB7, 0x6BDE, 0x9AB8, 0x6BDF, 0x9AB9, 0x6BE0, + 0x9ABA, 0x6BE2, 0x9ABB, 0x6BE3, 0x9ABC, 0x6BE4, 0x9ABD, 0x6BE5, 0x9ABE, 0x6BE6, 0x9ABF, 0x6BE7, 0x9AC0, 0x6BE8, 0x9AC1, 0x6BE9, + 0x9AC2, 0x6BEC, 0x9AC3, 0x6BED, 0x9AC4, 0x6BEE, 0x9AC5, 0x6BF0, 0x9AC6, 0x6BF1, 0x9AC7, 0x6BF2, 0x9AC8, 0x6BF4, 0x9AC9, 0x6BF6, + 0x9ACA, 0x6BF7, 0x9ACB, 0x6BF8, 0x9ACC, 0x6BFA, 0x9ACD, 0x6BFB, 0x9ACE, 0x6BFC, 0x9ACF, 0x6BFE, 0x9AD0, 0x6BFF, 0x9AD1, 0x6C00, + 0x9AD2, 0x6C01, 0x9AD3, 0x6C02, 0x9AD4, 0x6C03, 0x9AD5, 0x6C04, 0x9AD6, 0x6C08, 0x9AD7, 0x6C09, 0x9AD8, 0x6C0A, 0x9AD9, 0x6C0B, + 0x9ADA, 0x6C0C, 0x9ADB, 0x6C0E, 0x9ADC, 0x6C12, 0x9ADD, 0x6C17, 0x9ADE, 0x6C1C, 0x9ADF, 0x6C1D, 0x9AE0, 0x6C1E, 0x9AE1, 0x6C20, + 0x9AE2, 0x6C23, 0x9AE3, 0x6C25, 0x9AE4, 0x6C2B, 0x9AE5, 0x6C2C, 0x9AE6, 0x6C2D, 0x9AE7, 0x6C31, 0x9AE8, 0x6C33, 0x9AE9, 0x6C36, + 0x9AEA, 0x6C37, 0x9AEB, 0x6C39, 0x9AEC, 0x6C3A, 0x9AED, 0x6C3B, 0x9AEE, 0x6C3C, 0x9AEF, 0x6C3E, 0x9AF0, 0x6C3F, 0x9AF1, 0x6C43, + 0x9AF2, 0x6C44, 0x9AF3, 0x6C45, 0x9AF4, 0x6C48, 0x9AF5, 0x6C4B, 0x9AF6, 0x6C4C, 0x9AF7, 0x6C4D, 0x9AF8, 0x6C4E, 0x9AF9, 0x6C4F, + 0x9AFA, 0x6C51, 0x9AFB, 0x6C52, 0x9AFC, 0x6C53, 0x9AFD, 0x6C56, 0x9AFE, 0x6C58, 0x9B40, 0x6C59, 0x9B41, 0x6C5A, 0x9B42, 0x6C62, + 0x9B43, 0x6C63, 0x9B44, 0x6C65, 0x9B45, 0x6C66, 0x9B46, 0x6C67, 0x9B47, 0x6C6B, 0x9B48, 0x6C6C, 0x9B49, 0x6C6D, 0x9B4A, 0x6C6E, + 0x9B4B, 0x6C6F, 0x9B4C, 0x6C71, 0x9B4D, 0x6C73, 0x9B4E, 0x6C75, 0x9B4F, 0x6C77, 0x9B50, 0x6C78, 0x9B51, 0x6C7A, 0x9B52, 0x6C7B, + 0x9B53, 0x6C7C, 0x9B54, 0x6C7F, 0x9B55, 0x6C80, 0x9B56, 0x6C84, 0x9B57, 0x6C87, 0x9B58, 0x6C8A, 0x9B59, 0x6C8B, 0x9B5A, 0x6C8D, + 0x9B5B, 0x6C8E, 0x9B5C, 0x6C91, 0x9B5D, 0x6C92, 0x9B5E, 0x6C95, 0x9B5F, 0x6C96, 0x9B60, 0x6C97, 0x9B61, 0x6C98, 0x9B62, 0x6C9A, + 0x9B63, 0x6C9C, 0x9B64, 0x6C9D, 0x9B65, 0x6C9E, 0x9B66, 0x6CA0, 0x9B67, 0x6CA2, 0x9B68, 0x6CA8, 0x9B69, 0x6CAC, 0x9B6A, 0x6CAF, + 0x9B6B, 0x6CB0, 0x9B6C, 0x6CB4, 0x9B6D, 0x6CB5, 0x9B6E, 0x6CB6, 0x9B6F, 0x6CB7, 0x9B70, 0x6CBA, 0x9B71, 0x6CC0, 0x9B72, 0x6CC1, + 0x9B73, 0x6CC2, 0x9B74, 0x6CC3, 0x9B75, 0x6CC6, 0x9B76, 0x6CC7, 0x9B77, 0x6CC8, 0x9B78, 0x6CCB, 0x9B79, 0x6CCD, 0x9B7A, 0x6CCE, + 0x9B7B, 0x6CCF, 0x9B7C, 0x6CD1, 0x9B7D, 0x6CD2, 0x9B7E, 0x6CD8, 0x9B80, 0x6CD9, 0x9B81, 0x6CDA, 0x9B82, 0x6CDC, 0x9B83, 0x6CDD, + 0x9B84, 0x6CDF, 0x9B85, 0x6CE4, 0x9B86, 0x6CE6, 0x9B87, 0x6CE7, 0x9B88, 0x6CE9, 0x9B89, 0x6CEC, 0x9B8A, 0x6CED, 0x9B8B, 0x6CF2, + 0x9B8C, 0x6CF4, 0x9B8D, 0x6CF9, 0x9B8E, 0x6CFF, 0x9B8F, 0x6D00, 0x9B90, 0x6D02, 0x9B91, 0x6D03, 0x9B92, 0x6D05, 0x9B93, 0x6D06, + 0x9B94, 0x6D08, 0x9B95, 0x6D09, 0x9B96, 0x6D0A, 0x9B97, 0x6D0D, 0x9B98, 0x6D0F, 0x9B99, 0x6D10, 0x9B9A, 0x6D11, 0x9B9B, 0x6D13, + 0x9B9C, 0x6D14, 0x9B9D, 0x6D15, 0x9B9E, 0x6D16, 0x9B9F, 0x6D18, 0x9BA0, 0x6D1C, 0x9BA1, 0x6D1D, 0x9BA2, 0x6D1F, 0x9BA3, 0x6D20, + 0x9BA4, 0x6D21, 0x9BA5, 0x6D22, 0x9BA6, 0x6D23, 0x9BA7, 0x6D24, 0x9BA8, 0x6D26, 0x9BA9, 0x6D28, 0x9BAA, 0x6D29, 0x9BAB, 0x6D2C, + 0x9BAC, 0x6D2D, 0x9BAD, 0x6D2F, 0x9BAE, 0x6D30, 0x9BAF, 0x6D34, 0x9BB0, 0x6D36, 0x9BB1, 0x6D37, 0x9BB2, 0x6D38, 0x9BB3, 0x6D3A, + 0x9BB4, 0x6D3F, 0x9BB5, 0x6D40, 0x9BB6, 0x6D42, 0x9BB7, 0x6D44, 0x9BB8, 0x6D49, 0x9BB9, 0x6D4C, 0x9BBA, 0x6D50, 0x9BBB, 0x6D55, + 0x9BBC, 0x6D56, 0x9BBD, 0x6D57, 0x9BBE, 0x6D58, 0x9BBF, 0x6D5B, 0x9BC0, 0x6D5D, 0x9BC1, 0x6D5F, 0x9BC2, 0x6D61, 0x9BC3, 0x6D62, + 0x9BC4, 0x6D64, 0x9BC5, 0x6D65, 0x9BC6, 0x6D67, 0x9BC7, 0x6D68, 0x9BC8, 0x6D6B, 0x9BC9, 0x6D6C, 0x9BCA, 0x6D6D, 0x9BCB, 0x6D70, + 0x9BCC, 0x6D71, 0x9BCD, 0x6D72, 0x9BCE, 0x6D73, 0x9BCF, 0x6D75, 0x9BD0, 0x6D76, 0x9BD1, 0x6D79, 0x9BD2, 0x6D7A, 0x9BD3, 0x6D7B, + 0x9BD4, 0x6D7D, 0x9BD5, 0x6D7E, 0x9BD6, 0x6D7F, 0x9BD7, 0x6D80, 0x9BD8, 0x6D81, 0x9BD9, 0x6D83, 0x9BDA, 0x6D84, 0x9BDB, 0x6D86, + 0x9BDC, 0x6D87, 0x9BDD, 0x6D8A, 0x9BDE, 0x6D8B, 0x9BDF, 0x6D8D, 0x9BE0, 0x6D8F, 0x9BE1, 0x6D90, 0x9BE2, 0x6D92, 0x9BE3, 0x6D96, + 0x9BE4, 0x6D97, 0x9BE5, 0x6D98, 0x9BE6, 0x6D99, 0x9BE7, 0x6D9A, 0x9BE8, 0x6D9C, 0x9BE9, 0x6DA2, 0x9BEA, 0x6DA5, 0x9BEB, 0x6DAC, + 0x9BEC, 0x6DAD, 0x9BED, 0x6DB0, 0x9BEE, 0x6DB1, 0x9BEF, 0x6DB3, 0x9BF0, 0x6DB4, 0x9BF1, 0x6DB6, 0x9BF2, 0x6DB7, 0x9BF3, 0x6DB9, + 0x9BF4, 0x6DBA, 0x9BF5, 0x6DBB, 0x9BF6, 0x6DBC, 0x9BF7, 0x6DBD, 0x9BF8, 0x6DBE, 0x9BF9, 0x6DC1, 0x9BFA, 0x6DC2, 0x9BFB, 0x6DC3, + 0x9BFC, 0x6DC8, 0x9BFD, 0x6DC9, 0x9BFE, 0x6DCA, 0x9C40, 0x6DCD, 0x9C41, 0x6DCE, 0x9C42, 0x6DCF, 0x9C43, 0x6DD0, 0x9C44, 0x6DD2, + 0x9C45, 0x6DD3, 0x9C46, 0x6DD4, 0x9C47, 0x6DD5, 0x9C48, 0x6DD7, 0x9C49, 0x6DDA, 0x9C4A, 0x6DDB, 0x9C4B, 0x6DDC, 0x9C4C, 0x6DDF, + 0x9C4D, 0x6DE2, 0x9C4E, 0x6DE3, 0x9C4F, 0x6DE5, 0x9C50, 0x6DE7, 0x9C51, 0x6DE8, 0x9C52, 0x6DE9, 0x9C53, 0x6DEA, 0x9C54, 0x6DED, + 0x9C55, 0x6DEF, 0x9C56, 0x6DF0, 0x9C57, 0x6DF2, 0x9C58, 0x6DF4, 0x9C59, 0x6DF5, 0x9C5A, 0x6DF6, 0x9C5B, 0x6DF8, 0x9C5C, 0x6DFA, + 0x9C5D, 0x6DFD, 0x9C5E, 0x6DFE, 0x9C5F, 0x6DFF, 0x9C60, 0x6E00, 0x9C61, 0x6E01, 0x9C62, 0x6E02, 0x9C63, 0x6E03, 0x9C64, 0x6E04, + 0x9C65, 0x6E06, 0x9C66, 0x6E07, 0x9C67, 0x6E08, 0x9C68, 0x6E09, 0x9C69, 0x6E0B, 0x9C6A, 0x6E0F, 0x9C6B, 0x6E12, 0x9C6C, 0x6E13, + 0x9C6D, 0x6E15, 0x9C6E, 0x6E18, 0x9C6F, 0x6E19, 0x9C70, 0x6E1B, 0x9C71, 0x6E1C, 0x9C72, 0x6E1E, 0x9C73, 0x6E1F, 0x9C74, 0x6E22, + 0x9C75, 0x6E26, 0x9C76, 0x6E27, 0x9C77, 0x6E28, 0x9C78, 0x6E2A, 0x9C79, 0x6E2C, 0x9C7A, 0x6E2E, 0x9C7B, 0x6E30, 0x9C7C, 0x6E31, + 0x9C7D, 0x6E33, 0x9C7E, 0x6E35, 0x9C80, 0x6E36, 0x9C81, 0x6E37, 0x9C82, 0x6E39, 0x9C83, 0x6E3B, 0x9C84, 0x6E3C, 0x9C85, 0x6E3D, + 0x9C86, 0x6E3E, 0x9C87, 0x6E3F, 0x9C88, 0x6E40, 0x9C89, 0x6E41, 0x9C8A, 0x6E42, 0x9C8B, 0x6E45, 0x9C8C, 0x6E46, 0x9C8D, 0x6E47, + 0x9C8E, 0x6E48, 0x9C8F, 0x6E49, 0x9C90, 0x6E4A, 0x9C91, 0x6E4B, 0x9C92, 0x6E4C, 0x9C93, 0x6E4F, 0x9C94, 0x6E50, 0x9C95, 0x6E51, + 0x9C96, 0x6E52, 0x9C97, 0x6E55, 0x9C98, 0x6E57, 0x9C99, 0x6E59, 0x9C9A, 0x6E5A, 0x9C9B, 0x6E5C, 0x9C9C, 0x6E5D, 0x9C9D, 0x6E5E, + 0x9C9E, 0x6E60, 0x9C9F, 0x6E61, 0x9CA0, 0x6E62, 0x9CA1, 0x6E63, 0x9CA2, 0x6E64, 0x9CA3, 0x6E65, 0x9CA4, 0x6E66, 0x9CA5, 0x6E67, + 0x9CA6, 0x6E68, 0x9CA7, 0x6E69, 0x9CA8, 0x6E6A, 0x9CA9, 0x6E6C, 0x9CAA, 0x6E6D, 0x9CAB, 0x6E6F, 0x9CAC, 0x6E70, 0x9CAD, 0x6E71, + 0x9CAE, 0x6E72, 0x9CAF, 0x6E73, 0x9CB0, 0x6E74, 0x9CB1, 0x6E75, 0x9CB2, 0x6E76, 0x9CB3, 0x6E77, 0x9CB4, 0x6E78, 0x9CB5, 0x6E79, + 0x9CB6, 0x6E7A, 0x9CB7, 0x6E7B, 0x9CB8, 0x6E7C, 0x9CB9, 0x6E7D, 0x9CBA, 0x6E80, 0x9CBB, 0x6E81, 0x9CBC, 0x6E82, 0x9CBD, 0x6E84, + 0x9CBE, 0x6E87, 0x9CBF, 0x6E88, 0x9CC0, 0x6E8A, 0x9CC1, 0x6E8B, 0x9CC2, 0x6E8C, 0x9CC3, 0x6E8D, 0x9CC4, 0x6E8E, 0x9CC5, 0x6E91, + 0x9CC6, 0x6E92, 0x9CC7, 0x6E93, 0x9CC8, 0x6E94, 0x9CC9, 0x6E95, 0x9CCA, 0x6E96, 0x9CCB, 0x6E97, 0x9CCC, 0x6E99, 0x9CCD, 0x6E9A, + 0x9CCE, 0x6E9B, 0x9CCF, 0x6E9D, 0x9CD0, 0x6E9E, 0x9CD1, 0x6EA0, 0x9CD2, 0x6EA1, 0x9CD3, 0x6EA3, 0x9CD4, 0x6EA4, 0x9CD5, 0x6EA6, + 0x9CD6, 0x6EA8, 0x9CD7, 0x6EA9, 0x9CD8, 0x6EAB, 0x9CD9, 0x6EAC, 0x9CDA, 0x6EAD, 0x9CDB, 0x6EAE, 0x9CDC, 0x6EB0, 0x9CDD, 0x6EB3, + 0x9CDE, 0x6EB5, 0x9CDF, 0x6EB8, 0x9CE0, 0x6EB9, 0x9CE1, 0x6EBC, 0x9CE2, 0x6EBE, 0x9CE3, 0x6EBF, 0x9CE4, 0x6EC0, 0x9CE5, 0x6EC3, + 0x9CE6, 0x6EC4, 0x9CE7, 0x6EC5, 0x9CE8, 0x6EC6, 0x9CE9, 0x6EC8, 0x9CEA, 0x6EC9, 0x9CEB, 0x6ECA, 0x9CEC, 0x6ECC, 0x9CED, 0x6ECD, + 0x9CEE, 0x6ECE, 0x9CEF, 0x6ED0, 0x9CF0, 0x6ED2, 0x9CF1, 0x6ED6, 0x9CF2, 0x6ED8, 0x9CF3, 0x6ED9, 0x9CF4, 0x6EDB, 0x9CF5, 0x6EDC, + 0x9CF6, 0x6EDD, 0x9CF7, 0x6EE3, 0x9CF8, 0x6EE7, 0x9CF9, 0x6EEA, 0x9CFA, 0x6EEB, 0x9CFB, 0x6EEC, 0x9CFC, 0x6EED, 0x9CFD, 0x6EEE, + 0x9CFE, 0x6EEF, 0x9D40, 0x6EF0, 0x9D41, 0x6EF1, 0x9D42, 0x6EF2, 0x9D43, 0x6EF3, 0x9D44, 0x6EF5, 0x9D45, 0x6EF6, 0x9D46, 0x6EF7, + 0x9D47, 0x6EF8, 0x9D48, 0x6EFA, 0x9D49, 0x6EFB, 0x9D4A, 0x6EFC, 0x9D4B, 0x6EFD, 0x9D4C, 0x6EFE, 0x9D4D, 0x6EFF, 0x9D4E, 0x6F00, + 0x9D4F, 0x6F01, 0x9D50, 0x6F03, 0x9D51, 0x6F04, 0x9D52, 0x6F05, 0x9D53, 0x6F07, 0x9D54, 0x6F08, 0x9D55, 0x6F0A, 0x9D56, 0x6F0B, + 0x9D57, 0x6F0C, 0x9D58, 0x6F0D, 0x9D59, 0x6F0E, 0x9D5A, 0x6F10, 0x9D5B, 0x6F11, 0x9D5C, 0x6F12, 0x9D5D, 0x6F16, 0x9D5E, 0x6F17, + 0x9D5F, 0x6F18, 0x9D60, 0x6F19, 0x9D61, 0x6F1A, 0x9D62, 0x6F1B, 0x9D63, 0x6F1C, 0x9D64, 0x6F1D, 0x9D65, 0x6F1E, 0x9D66, 0x6F1F, + 0x9D67, 0x6F21, 0x9D68, 0x6F22, 0x9D69, 0x6F23, 0x9D6A, 0x6F25, 0x9D6B, 0x6F26, 0x9D6C, 0x6F27, 0x9D6D, 0x6F28, 0x9D6E, 0x6F2C, + 0x9D6F, 0x6F2E, 0x9D70, 0x6F30, 0x9D71, 0x6F32, 0x9D72, 0x6F34, 0x9D73, 0x6F35, 0x9D74, 0x6F37, 0x9D75, 0x6F38, 0x9D76, 0x6F39, + 0x9D77, 0x6F3A, 0x9D78, 0x6F3B, 0x9D79, 0x6F3C, 0x9D7A, 0x6F3D, 0x9D7B, 0x6F3F, 0x9D7C, 0x6F40, 0x9D7D, 0x6F41, 0x9D7E, 0x6F42, + 0x9D80, 0x6F43, 0x9D81, 0x6F44, 0x9D82, 0x6F45, 0x9D83, 0x6F48, 0x9D84, 0x6F49, 0x9D85, 0x6F4A, 0x9D86, 0x6F4C, 0x9D87, 0x6F4E, + 0x9D88, 0x6F4F, 0x9D89, 0x6F50, 0x9D8A, 0x6F51, 0x9D8B, 0x6F52, 0x9D8C, 0x6F53, 0x9D8D, 0x6F54, 0x9D8E, 0x6F55, 0x9D8F, 0x6F56, + 0x9D90, 0x6F57, 0x9D91, 0x6F59, 0x9D92, 0x6F5A, 0x9D93, 0x6F5B, 0x9D94, 0x6F5D, 0x9D95, 0x6F5F, 0x9D96, 0x6F60, 0x9D97, 0x6F61, + 0x9D98, 0x6F63, 0x9D99, 0x6F64, 0x9D9A, 0x6F65, 0x9D9B, 0x6F67, 0x9D9C, 0x6F68, 0x9D9D, 0x6F69, 0x9D9E, 0x6F6A, 0x9D9F, 0x6F6B, + 0x9DA0, 0x6F6C, 0x9DA1, 0x6F6F, 0x9DA2, 0x6F70, 0x9DA3, 0x6F71, 0x9DA4, 0x6F73, 0x9DA5, 0x6F75, 0x9DA6, 0x6F76, 0x9DA7, 0x6F77, + 0x9DA8, 0x6F79, 0x9DA9, 0x6F7B, 0x9DAA, 0x6F7D, 0x9DAB, 0x6F7E, 0x9DAC, 0x6F7F, 0x9DAD, 0x6F80, 0x9DAE, 0x6F81, 0x9DAF, 0x6F82, + 0x9DB0, 0x6F83, 0x9DB1, 0x6F85, 0x9DB2, 0x6F86, 0x9DB3, 0x6F87, 0x9DB4, 0x6F8A, 0x9DB5, 0x6F8B, 0x9DB6, 0x6F8F, 0x9DB7, 0x6F90, + 0x9DB8, 0x6F91, 0x9DB9, 0x6F92, 0x9DBA, 0x6F93, 0x9DBB, 0x6F94, 0x9DBC, 0x6F95, 0x9DBD, 0x6F96, 0x9DBE, 0x6F97, 0x9DBF, 0x6F98, + 0x9DC0, 0x6F99, 0x9DC1, 0x6F9A, 0x9DC2, 0x6F9B, 0x9DC3, 0x6F9D, 0x9DC4, 0x6F9E, 0x9DC5, 0x6F9F, 0x9DC6, 0x6FA0, 0x9DC7, 0x6FA2, + 0x9DC8, 0x6FA3, 0x9DC9, 0x6FA4, 0x9DCA, 0x6FA5, 0x9DCB, 0x6FA6, 0x9DCC, 0x6FA8, 0x9DCD, 0x6FA9, 0x9DCE, 0x6FAA, 0x9DCF, 0x6FAB, + 0x9DD0, 0x6FAC, 0x9DD1, 0x6FAD, 0x9DD2, 0x6FAE, 0x9DD3, 0x6FAF, 0x9DD4, 0x6FB0, 0x9DD5, 0x6FB1, 0x9DD6, 0x6FB2, 0x9DD7, 0x6FB4, + 0x9DD8, 0x6FB5, 0x9DD9, 0x6FB7, 0x9DDA, 0x6FB8, 0x9DDB, 0x6FBA, 0x9DDC, 0x6FBB, 0x9DDD, 0x6FBC, 0x9DDE, 0x6FBD, 0x9DDF, 0x6FBE, + 0x9DE0, 0x6FBF, 0x9DE1, 0x6FC1, 0x9DE2, 0x6FC3, 0x9DE3, 0x6FC4, 0x9DE4, 0x6FC5, 0x9DE5, 0x6FC6, 0x9DE6, 0x6FC7, 0x9DE7, 0x6FC8, + 0x9DE8, 0x6FCA, 0x9DE9, 0x6FCB, 0x9DEA, 0x6FCC, 0x9DEB, 0x6FCD, 0x9DEC, 0x6FCE, 0x9DED, 0x6FCF, 0x9DEE, 0x6FD0, 0x9DEF, 0x6FD3, + 0x9DF0, 0x6FD4, 0x9DF1, 0x6FD5, 0x9DF2, 0x6FD6, 0x9DF3, 0x6FD7, 0x9DF4, 0x6FD8, 0x9DF5, 0x6FD9, 0x9DF6, 0x6FDA, 0x9DF7, 0x6FDB, + 0x9DF8, 0x6FDC, 0x9DF9, 0x6FDD, 0x9DFA, 0x6FDF, 0x9DFB, 0x6FE2, 0x9DFC, 0x6FE3, 0x9DFD, 0x6FE4, 0x9DFE, 0x6FE5, 0x9E40, 0x6FE6, + 0x9E41, 0x6FE7, 0x9E42, 0x6FE8, 0x9E43, 0x6FE9, 0x9E44, 0x6FEA, 0x9E45, 0x6FEB, 0x9E46, 0x6FEC, 0x9E47, 0x6FED, 0x9E48, 0x6FF0, + 0x9E49, 0x6FF1, 0x9E4A, 0x6FF2, 0x9E4B, 0x6FF3, 0x9E4C, 0x6FF4, 0x9E4D, 0x6FF5, 0x9E4E, 0x6FF6, 0x9E4F, 0x6FF7, 0x9E50, 0x6FF8, + 0x9E51, 0x6FF9, 0x9E52, 0x6FFA, 0x9E53, 0x6FFB, 0x9E54, 0x6FFC, 0x9E55, 0x6FFD, 0x9E56, 0x6FFE, 0x9E57, 0x6FFF, 0x9E58, 0x7000, + 0x9E59, 0x7001, 0x9E5A, 0x7002, 0x9E5B, 0x7003, 0x9E5C, 0x7004, 0x9E5D, 0x7005, 0x9E5E, 0x7006, 0x9E5F, 0x7007, 0x9E60, 0x7008, + 0x9E61, 0x7009, 0x9E62, 0x700A, 0x9E63, 0x700B, 0x9E64, 0x700C, 0x9E65, 0x700D, 0x9E66, 0x700E, 0x9E67, 0x700F, 0x9E68, 0x7010, + 0x9E69, 0x7012, 0x9E6A, 0x7013, 0x9E6B, 0x7014, 0x9E6C, 0x7015, 0x9E6D, 0x7016, 0x9E6E, 0x7017, 0x9E6F, 0x7018, 0x9E70, 0x7019, + 0x9E71, 0x701C, 0x9E72, 0x701D, 0x9E73, 0x701E, 0x9E74, 0x701F, 0x9E75, 0x7020, 0x9E76, 0x7021, 0x9E77, 0x7022, 0x9E78, 0x7024, + 0x9E79, 0x7025, 0x9E7A, 0x7026, 0x9E7B, 0x7027, 0x9E7C, 0x7028, 0x9E7D, 0x7029, 0x9E7E, 0x702A, 0x9E80, 0x702B, 0x9E81, 0x702C, + 0x9E82, 0x702D, 0x9E83, 0x702E, 0x9E84, 0x702F, 0x9E85, 0x7030, 0x9E86, 0x7031, 0x9E87, 0x7032, 0x9E88, 0x7033, 0x9E89, 0x7034, + 0x9E8A, 0x7036, 0x9E8B, 0x7037, 0x9E8C, 0x7038, 0x9E8D, 0x703A, 0x9E8E, 0x703B, 0x9E8F, 0x703C, 0x9E90, 0x703D, 0x9E91, 0x703E, + 0x9E92, 0x703F, 0x9E93, 0x7040, 0x9E94, 0x7041, 0x9E95, 0x7042, 0x9E96, 0x7043, 0x9E97, 0x7044, 0x9E98, 0x7045, 0x9E99, 0x7046, + 0x9E9A, 0x7047, 0x9E9B, 0x7048, 0x9E9C, 0x7049, 0x9E9D, 0x704A, 0x9E9E, 0x704B, 0x9E9F, 0x704D, 0x9EA0, 0x704E, 0x9EA1, 0x7050, + 0x9EA2, 0x7051, 0x9EA3, 0x7052, 0x9EA4, 0x7053, 0x9EA5, 0x7054, 0x9EA6, 0x7055, 0x9EA7, 0x7056, 0x9EA8, 0x7057, 0x9EA9, 0x7058, + 0x9EAA, 0x7059, 0x9EAB, 0x705A, 0x9EAC, 0x705B, 0x9EAD, 0x705C, 0x9EAE, 0x705D, 0x9EAF, 0x705F, 0x9EB0, 0x7060, 0x9EB1, 0x7061, + 0x9EB2, 0x7062, 0x9EB3, 0x7063, 0x9EB4, 0x7064, 0x9EB5, 0x7065, 0x9EB6, 0x7066, 0x9EB7, 0x7067, 0x9EB8, 0x7068, 0x9EB9, 0x7069, + 0x9EBA, 0x706A, 0x9EBB, 0x706E, 0x9EBC, 0x7071, 0x9EBD, 0x7072, 0x9EBE, 0x7073, 0x9EBF, 0x7074, 0x9EC0, 0x7077, 0x9EC1, 0x7079, + 0x9EC2, 0x707A, 0x9EC3, 0x707B, 0x9EC4, 0x707D, 0x9EC5, 0x7081, 0x9EC6, 0x7082, 0x9EC7, 0x7083, 0x9EC8, 0x7084, 0x9EC9, 0x7086, + 0x9ECA, 0x7087, 0x9ECB, 0x7088, 0x9ECC, 0x708B, 0x9ECD, 0x708C, 0x9ECE, 0x708D, 0x9ECF, 0x708F, 0x9ED0, 0x7090, 0x9ED1, 0x7091, + 0x9ED2, 0x7093, 0x9ED3, 0x7097, 0x9ED4, 0x7098, 0x9ED5, 0x709A, 0x9ED6, 0x709B, 0x9ED7, 0x709E, 0x9ED8, 0x709F, 0x9ED9, 0x70A0, + 0x9EDA, 0x70A1, 0x9EDB, 0x70A2, 0x9EDC, 0x70A3, 0x9EDD, 0x70A4, 0x9EDE, 0x70A5, 0x9EDF, 0x70A6, 0x9EE0, 0x70A7, 0x9EE1, 0x70A8, + 0x9EE2, 0x70A9, 0x9EE3, 0x70AA, 0x9EE4, 0x70B0, 0x9EE5, 0x70B2, 0x9EE6, 0x70B4, 0x9EE7, 0x70B5, 0x9EE8, 0x70B6, 0x9EE9, 0x70BA, + 0x9EEA, 0x70BE, 0x9EEB, 0x70BF, 0x9EEC, 0x70C4, 0x9EED, 0x70C5, 0x9EEE, 0x70C6, 0x9EEF, 0x70C7, 0x9EF0, 0x70C9, 0x9EF1, 0x70CB, + 0x9EF2, 0x70CC, 0x9EF3, 0x70CD, 0x9EF4, 0x70CE, 0x9EF5, 0x70CF, 0x9EF6, 0x70D0, 0x9EF7, 0x70D1, 0x9EF8, 0x70D2, 0x9EF9, 0x70D3, + 0x9EFA, 0x70D4, 0x9EFB, 0x70D5, 0x9EFC, 0x70D6, 0x9EFD, 0x70D7, 0x9EFE, 0x70DA, 0x9F40, 0x70DC, 0x9F41, 0x70DD, 0x9F42, 0x70DE, + 0x9F43, 0x70E0, 0x9F44, 0x70E1, 0x9F45, 0x70E2, 0x9F46, 0x70E3, 0x9F47, 0x70E5, 0x9F48, 0x70EA, 0x9F49, 0x70EE, 0x9F4A, 0x70F0, + 0x9F4B, 0x70F1, 0x9F4C, 0x70F2, 0x9F4D, 0x70F3, 0x9F4E, 0x70F4, 0x9F4F, 0x70F5, 0x9F50, 0x70F6, 0x9F51, 0x70F8, 0x9F52, 0x70FA, + 0x9F53, 0x70FB, 0x9F54, 0x70FC, 0x9F55, 0x70FE, 0x9F56, 0x70FF, 0x9F57, 0x7100, 0x9F58, 0x7101, 0x9F59, 0x7102, 0x9F5A, 0x7103, + 0x9F5B, 0x7104, 0x9F5C, 0x7105, 0x9F5D, 0x7106, 0x9F5E, 0x7107, 0x9F5F, 0x7108, 0x9F60, 0x710B, 0x9F61, 0x710C, 0x9F62, 0x710D, + 0x9F63, 0x710E, 0x9F64, 0x710F, 0x9F65, 0x7111, 0x9F66, 0x7112, 0x9F67, 0x7114, 0x9F68, 0x7117, 0x9F69, 0x711B, 0x9F6A, 0x711C, + 0x9F6B, 0x711D, 0x9F6C, 0x711E, 0x9F6D, 0x711F, 0x9F6E, 0x7120, 0x9F6F, 0x7121, 0x9F70, 0x7122, 0x9F71, 0x7123, 0x9F72, 0x7124, + 0x9F73, 0x7125, 0x9F74, 0x7127, 0x9F75, 0x7128, 0x9F76, 0x7129, 0x9F77, 0x712A, 0x9F78, 0x712B, 0x9F79, 0x712C, 0x9F7A, 0x712D, + 0x9F7B, 0x712E, 0x9F7C, 0x7132, 0x9F7D, 0x7133, 0x9F7E, 0x7134, 0x9F80, 0x7135, 0x9F81, 0x7137, 0x9F82, 0x7138, 0x9F83, 0x7139, + 0x9F84, 0x713A, 0x9F85, 0x713B, 0x9F86, 0x713C, 0x9F87, 0x713D, 0x9F88, 0x713E, 0x9F89, 0x713F, 0x9F8A, 0x7140, 0x9F8B, 0x7141, + 0x9F8C, 0x7142, 0x9F8D, 0x7143, 0x9F8E, 0x7144, 0x9F8F, 0x7146, 0x9F90, 0x7147, 0x9F91, 0x7148, 0x9F92, 0x7149, 0x9F93, 0x714B, + 0x9F94, 0x714D, 0x9F95, 0x714F, 0x9F96, 0x7150, 0x9F97, 0x7151, 0x9F98, 0x7152, 0x9F99, 0x7153, 0x9F9A, 0x7154, 0x9F9B, 0x7155, + 0x9F9C, 0x7156, 0x9F9D, 0x7157, 0x9F9E, 0x7158, 0x9F9F, 0x7159, 0x9FA0, 0x715A, 0x9FA1, 0x715B, 0x9FA2, 0x715D, 0x9FA3, 0x715F, + 0x9FA4, 0x7160, 0x9FA5, 0x7161, 0x9FA6, 0x7162, 0x9FA7, 0x7163, 0x9FA8, 0x7165, 0x9FA9, 0x7169, 0x9FAA, 0x716A, 0x9FAB, 0x716B, + 0x9FAC, 0x716C, 0x9FAD, 0x716D, 0x9FAE, 0x716F, 0x9FAF, 0x7170, 0x9FB0, 0x7171, 0x9FB1, 0x7174, 0x9FB2, 0x7175, 0x9FB3, 0x7176, + 0x9FB4, 0x7177, 0x9FB5, 0x7179, 0x9FB6, 0x717B, 0x9FB7, 0x717C, 0x9FB8, 0x717E, 0x9FB9, 0x717F, 0x9FBA, 0x7180, 0x9FBB, 0x7181, + 0x9FBC, 0x7182, 0x9FBD, 0x7183, 0x9FBE, 0x7185, 0x9FBF, 0x7186, 0x9FC0, 0x7187, 0x9FC1, 0x7188, 0x9FC2, 0x7189, 0x9FC3, 0x718B, + 0x9FC4, 0x718C, 0x9FC5, 0x718D, 0x9FC6, 0x718E, 0x9FC7, 0x7190, 0x9FC8, 0x7191, 0x9FC9, 0x7192, 0x9FCA, 0x7193, 0x9FCB, 0x7195, + 0x9FCC, 0x7196, 0x9FCD, 0x7197, 0x9FCE, 0x719A, 0x9FCF, 0x719B, 0x9FD0, 0x719C, 0x9FD1, 0x719D, 0x9FD2, 0x719E, 0x9FD3, 0x71A1, + 0x9FD4, 0x71A2, 0x9FD5, 0x71A3, 0x9FD6, 0x71A4, 0x9FD7, 0x71A5, 0x9FD8, 0x71A6, 0x9FD9, 0x71A7, 0x9FDA, 0x71A9, 0x9FDB, 0x71AA, + 0x9FDC, 0x71AB, 0x9FDD, 0x71AD, 0x9FDE, 0x71AE, 0x9FDF, 0x71AF, 0x9FE0, 0x71B0, 0x9FE1, 0x71B1, 0x9FE2, 0x71B2, 0x9FE3, 0x71B4, + 0x9FE4, 0x71B6, 0x9FE5, 0x71B7, 0x9FE6, 0x71B8, 0x9FE7, 0x71BA, 0x9FE8, 0x71BB, 0x9FE9, 0x71BC, 0x9FEA, 0x71BD, 0x9FEB, 0x71BE, + 0x9FEC, 0x71BF, 0x9FED, 0x71C0, 0x9FEE, 0x71C1, 0x9FEF, 0x71C2, 0x9FF0, 0x71C4, 0x9FF1, 0x71C5, 0x9FF2, 0x71C6, 0x9FF3, 0x71C7, + 0x9FF4, 0x71C8, 0x9FF5, 0x71C9, 0x9FF6, 0x71CA, 0x9FF7, 0x71CB, 0x9FF8, 0x71CC, 0x9FF9, 0x71CD, 0x9FFA, 0x71CF, 0x9FFB, 0x71D0, + 0x9FFC, 0x71D1, 0x9FFD, 0x71D2, 0x9FFE, 0x71D3, 0xA040, 0x71D6, 0xA041, 0x71D7, 0xA042, 0x71D8, 0xA043, 0x71D9, 0xA044, 0x71DA, + 0xA045, 0x71DB, 0xA046, 0x71DC, 0xA047, 0x71DD, 0xA048, 0x71DE, 0xA049, 0x71DF, 0xA04A, 0x71E1, 0xA04B, 0x71E2, 0xA04C, 0x71E3, + 0xA04D, 0x71E4, 0xA04E, 0x71E6, 0xA04F, 0x71E8, 0xA050, 0x71E9, 0xA051, 0x71EA, 0xA052, 0x71EB, 0xA053, 0x71EC, 0xA054, 0x71ED, + 0xA055, 0x71EF, 0xA056, 0x71F0, 0xA057, 0x71F1, 0xA058, 0x71F2, 0xA059, 0x71F3, 0xA05A, 0x71F4, 0xA05B, 0x71F5, 0xA05C, 0x71F6, + 0xA05D, 0x71F7, 0xA05E, 0x71F8, 0xA05F, 0x71FA, 0xA060, 0x71FB, 0xA061, 0x71FC, 0xA062, 0x71FD, 0xA063, 0x71FE, 0xA064, 0x71FF, + 0xA065, 0x7200, 0xA066, 0x7201, 0xA067, 0x7202, 0xA068, 0x7203, 0xA069, 0x7204, 0xA06A, 0x7205, 0xA06B, 0x7207, 0xA06C, 0x7208, + 0xA06D, 0x7209, 0xA06E, 0x720A, 0xA06F, 0x720B, 0xA070, 0x720C, 0xA071, 0x720D, 0xA072, 0x720E, 0xA073, 0x720F, 0xA074, 0x7210, + 0xA075, 0x7211, 0xA076, 0x7212, 0xA077, 0x7213, 0xA078, 0x7214, 0xA079, 0x7215, 0xA07A, 0x7216, 0xA07B, 0x7217, 0xA07C, 0x7218, + 0xA07D, 0x7219, 0xA07E, 0x721A, 0xA080, 0x721B, 0xA081, 0x721C, 0xA082, 0x721E, 0xA083, 0x721F, 0xA084, 0x7220, 0xA085, 0x7221, + 0xA086, 0x7222, 0xA087, 0x7223, 0xA088, 0x7224, 0xA089, 0x7225, 0xA08A, 0x7226, 0xA08B, 0x7227, 0xA08C, 0x7229, 0xA08D, 0x722B, + 0xA08E, 0x722D, 0xA08F, 0x722E, 0xA090, 0x722F, 0xA091, 0x7232, 0xA092, 0x7233, 0xA093, 0x7234, 0xA094, 0x723A, 0xA095, 0x723C, + 0xA096, 0x723E, 0xA097, 0x7240, 0xA098, 0x7241, 0xA099, 0x7242, 0xA09A, 0x7243, 0xA09B, 0x7244, 0xA09C, 0x7245, 0xA09D, 0x7246, + 0xA09E, 0x7249, 0xA09F, 0x724A, 0xA0A0, 0x724B, 0xA0A1, 0x724E, 0xA0A2, 0x724F, 0xA0A3, 0x7250, 0xA0A4, 0x7251, 0xA0A5, 0x7253, + 0xA0A6, 0x7254, 0xA0A7, 0x7255, 0xA0A8, 0x7257, 0xA0A9, 0x7258, 0xA0AA, 0x725A, 0xA0AB, 0x725C, 0xA0AC, 0x725E, 0xA0AD, 0x7260, + 0xA0AE, 0x7263, 0xA0AF, 0x7264, 0xA0B0, 0x7265, 0xA0B1, 0x7268, 0xA0B2, 0x726A, 0xA0B3, 0x726B, 0xA0B4, 0x726C, 0xA0B5, 0x726D, + 0xA0B6, 0x7270, 0xA0B7, 0x7271, 0xA0B8, 0x7273, 0xA0B9, 0x7274, 0xA0BA, 0x7276, 0xA0BB, 0x7277, 0xA0BC, 0x7278, 0xA0BD, 0x727B, + 0xA0BE, 0x727C, 0xA0BF, 0x727D, 0xA0C0, 0x7282, 0xA0C1, 0x7283, 0xA0C2, 0x7285, 0xA0C3, 0x7286, 0xA0C4, 0x7287, 0xA0C5, 0x7288, + 0xA0C6, 0x7289, 0xA0C7, 0x728C, 0xA0C8, 0x728E, 0xA0C9, 0x7290, 0xA0CA, 0x7291, 0xA0CB, 0x7293, 0xA0CC, 0x7294, 0xA0CD, 0x7295, + 0xA0CE, 0x7296, 0xA0CF, 0x7297, 0xA0D0, 0x7298, 0xA0D1, 0x7299, 0xA0D2, 0x729A, 0xA0D3, 0x729B, 0xA0D4, 0x729C, 0xA0D5, 0x729D, + 0xA0D6, 0x729E, 0xA0D7, 0x72A0, 0xA0D8, 0x72A1, 0xA0D9, 0x72A2, 0xA0DA, 0x72A3, 0xA0DB, 0x72A4, 0xA0DC, 0x72A5, 0xA0DD, 0x72A6, + 0xA0DE, 0x72A7, 0xA0DF, 0x72A8, 0xA0E0, 0x72A9, 0xA0E1, 0x72AA, 0xA0E2, 0x72AB, 0xA0E3, 0x72AE, 0xA0E4, 0x72B1, 0xA0E5, 0x72B2, + 0xA0E6, 0x72B3, 0xA0E7, 0x72B5, 0xA0E8, 0x72BA, 0xA0E9, 0x72BB, 0xA0EA, 0x72BC, 0xA0EB, 0x72BD, 0xA0EC, 0x72BE, 0xA0ED, 0x72BF, + 0xA0EE, 0x72C0, 0xA0EF, 0x72C5, 0xA0F0, 0x72C6, 0xA0F1, 0x72C7, 0xA0F2, 0x72C9, 0xA0F3, 0x72CA, 0xA0F4, 0x72CB, 0xA0F5, 0x72CC, + 0xA0F6, 0x72CF, 0xA0F7, 0x72D1, 0xA0F8, 0x72D3, 0xA0F9, 0x72D4, 0xA0FA, 0x72D5, 0xA0FB, 0x72D6, 0xA0FC, 0x72D8, 0xA0FD, 0x72DA, + 0xA0FE, 0x72DB, 0xA1A1, 0x3000, 0xA1A2, 0x3001, 0xA1A3, 0x3002, 0xA1A4, 0x00B7, 0xA1A5, 0x02C9, 0xA1A6, 0x02C7, 0xA1A7, 0x00A8, + 0xA1A8, 0x3003, 0xA1A9, 0x3005, 0xA1AA, 0x2014, 0xA1AB, 0xFF5E, 0xA1AC, 0x2016, 0xA1AD, 0x2026, 0xA1AE, 0x2018, 0xA1AF, 0x2019, + 0xA1B0, 0x201C, 0xA1B1, 0x201D, 0xA1B2, 0x3014, 0xA1B3, 0x3015, 0xA1B4, 0x3008, 0xA1B5, 0x3009, 0xA1B6, 0x300A, 0xA1B7, 0x300B, + 0xA1B8, 0x300C, 0xA1B9, 0x300D, 0xA1BA, 0x300E, 0xA1BB, 0x300F, 0xA1BC, 0x3016, 0xA1BD, 0x3017, 0xA1BE, 0x3010, 0xA1BF, 0x3011, + 0xA1C0, 0x00B1, 0xA1C1, 0x00D7, 0xA1C2, 0x00F7, 0xA1C3, 0x2236, 0xA1C4, 0x2227, 0xA1C5, 0x2228, 0xA1C6, 0x2211, 0xA1C7, 0x220F, + 0xA1C8, 0x222A, 0xA1C9, 0x2229, 0xA1CA, 0x2208, 0xA1CB, 0x2237, 0xA1CC, 0x221A, 0xA1CD, 0x22A5, 0xA1CE, 0x2225, 0xA1CF, 0x2220, + 0xA1D0, 0x2312, 0xA1D1, 0x2299, 0xA1D2, 0x222B, 0xA1D3, 0x222E, 0xA1D4, 0x2261, 0xA1D5, 0x224C, 0xA1D6, 0x2248, 0xA1D7, 0x223D, + 0xA1D8, 0x221D, 0xA1D9, 0x2260, 0xA1DA, 0x226E, 0xA1DB, 0x226F, 0xA1DC, 0x2264, 0xA1DD, 0x2265, 0xA1DE, 0x221E, 0xA1DF, 0x2235, + 0xA1E0, 0x2234, 0xA1E1, 0x2642, 0xA1E2, 0x2640, 0xA1E3, 0x00B0, 0xA1E4, 0x2032, 0xA1E5, 0x2033, 0xA1E6, 0x2103, 0xA1E7, 0xFF04, + 0xA1E8, 0x00A4, 0xA1E9, 0xFFE0, 0xA1EA, 0xFFE1, 0xA1EB, 0x2030, 0xA1EC, 0x00A7, 0xA1ED, 0x2116, 0xA1EE, 0x2606, 0xA1EF, 0x2605, + 0xA1F0, 0x25CB, 0xA1F1, 0x25CF, 0xA1F2, 0x25CE, 0xA1F3, 0x25C7, 0xA1F4, 0x25C6, 0xA1F5, 0x25A1, 0xA1F6, 0x25A0, 0xA1F7, 0x25B3, + 0xA1F8, 0x25B2, 0xA1F9, 0x203B, 0xA1FA, 0x2192, 0xA1FB, 0x2190, 0xA1FC, 0x2191, 0xA1FD, 0x2193, 0xA1FE, 0x3013, 0xA2A1, 0x2170, + 0xA2A2, 0x2171, 0xA2A3, 0x2172, 0xA2A4, 0x2173, 0xA2A5, 0x2174, 0xA2A6, 0x2175, 0xA2A7, 0x2176, 0xA2A8, 0x2177, 0xA2A9, 0x2178, + 0xA2AA, 0x2179, 0xA2B1, 0x2488, 0xA2B2, 0x2489, 0xA2B3, 0x248A, 0xA2B4, 0x248B, 0xA2B5, 0x248C, 0xA2B6, 0x248D, 0xA2B7, 0x248E, + 0xA2B8, 0x248F, 0xA2B9, 0x2490, 0xA2BA, 0x2491, 0xA2BB, 0x2492, 0xA2BC, 0x2493, 0xA2BD, 0x2494, 0xA2BE, 0x2495, 0xA2BF, 0x2496, + 0xA2C0, 0x2497, 0xA2C1, 0x2498, 0xA2C2, 0x2499, 0xA2C3, 0x249A, 0xA2C4, 0x249B, 0xA2C5, 0x2474, 0xA2C6, 0x2475, 0xA2C7, 0x2476, + 0xA2C8, 0x2477, 0xA2C9, 0x2478, 0xA2CA, 0x2479, 0xA2CB, 0x247A, 0xA2CC, 0x247B, 0xA2CD, 0x247C, 0xA2CE, 0x247D, 0xA2CF, 0x247E, + 0xA2D0, 0x247F, 0xA2D1, 0x2480, 0xA2D2, 0x2481, 0xA2D3, 0x2482, 0xA2D4, 0x2483, 0xA2D5, 0x2484, 0xA2D6, 0x2485, 0xA2D7, 0x2486, + 0xA2D8, 0x2487, 0xA2D9, 0x2460, 0xA2DA, 0x2461, 0xA2DB, 0x2462, 0xA2DC, 0x2463, 0xA2DD, 0x2464, 0xA2DE, 0x2465, 0xA2DF, 0x2466, + 0xA2E0, 0x2467, 0xA2E1, 0x2468, 0xA2E2, 0x2469, 0xA2E5, 0x3220, 0xA2E6, 0x3221, 0xA2E7, 0x3222, 0xA2E8, 0x3223, 0xA2E9, 0x3224, + 0xA2EA, 0x3225, 0xA2EB, 0x3226, 0xA2EC, 0x3227, 0xA2ED, 0x3228, 0xA2EE, 0x3229, 0xA2F1, 0x2160, 0xA2F2, 0x2161, 0xA2F3, 0x2162, + 0xA2F4, 0x2163, 0xA2F5, 0x2164, 0xA2F6, 0x2165, 0xA2F7, 0x2166, 0xA2F8, 0x2167, 0xA2F9, 0x2168, 0xA2FA, 0x2169, 0xA2FB, 0x216A, + 0xA2FC, 0x216B, 0xA3A1, 0xFF01, 0xA3A2, 0xFF02, 0xA3A3, 0xFF03, 0xA3A4, 0xFFE5, 0xA3A5, 0xFF05, 0xA3A6, 0xFF06, 0xA3A7, 0xFF07, + 0xA3A8, 0xFF08, 0xA3A9, 0xFF09, 0xA3AA, 0xFF0A, 0xA3AB, 0xFF0B, 0xA3AC, 0xFF0C, 0xA3AD, 0xFF0D, 0xA3AE, 0xFF0E, 0xA3AF, 0xFF0F, + 0xA3B0, 0xFF10, 0xA3B1, 0xFF11, 0xA3B2, 0xFF12, 0xA3B3, 0xFF13, 0xA3B4, 0xFF14, 0xA3B5, 0xFF15, 0xA3B6, 0xFF16, 0xA3B7, 0xFF17, + 0xA3B8, 0xFF18, 0xA3B9, 0xFF19, 0xA3BA, 0xFF1A, 0xA3BB, 0xFF1B, 0xA3BC, 0xFF1C, 0xA3BD, 0xFF1D, 0xA3BE, 0xFF1E, 0xA3BF, 0xFF1F, + 0xA3C0, 0xFF20, 0xA3C1, 0xFF21, 0xA3C2, 0xFF22, 0xA3C3, 0xFF23, 0xA3C4, 0xFF24, 0xA3C5, 0xFF25, 0xA3C6, 0xFF26, 0xA3C7, 0xFF27, + 0xA3C8, 0xFF28, 0xA3C9, 0xFF29, 0xA3CA, 0xFF2A, 0xA3CB, 0xFF2B, 0xA3CC, 0xFF2C, 0xA3CD, 0xFF2D, 0xA3CE, 0xFF2E, 0xA3CF, 0xFF2F, + 0xA3D0, 0xFF30, 0xA3D1, 0xFF31, 0xA3D2, 0xFF32, 0xA3D3, 0xFF33, 0xA3D4, 0xFF34, 0xA3D5, 0xFF35, 0xA3D6, 0xFF36, 0xA3D7, 0xFF37, + 0xA3D8, 0xFF38, 0xA3D9, 0xFF39, 0xA3DA, 0xFF3A, 0xA3DB, 0xFF3B, 0xA3DC, 0xFF3C, 0xA3DD, 0xFF3D, 0xA3DE, 0xFF3E, 0xA3DF, 0xFF3F, + 0xA3E0, 0xFF40, 0xA3E1, 0xFF41, 0xA3E2, 0xFF42, 0xA3E3, 0xFF43, 0xA3E4, 0xFF44, 0xA3E5, 0xFF45, 0xA3E6, 0xFF46, 0xA3E7, 0xFF47, + 0xA3E8, 0xFF48, 0xA3E9, 0xFF49, 0xA3EA, 0xFF4A, 0xA3EB, 0xFF4B, 0xA3EC, 0xFF4C, 0xA3ED, 0xFF4D, 0xA3EE, 0xFF4E, 0xA3EF, 0xFF4F, + 0xA3F0, 0xFF50, 0xA3F1, 0xFF51, 0xA3F2, 0xFF52, 0xA3F3, 0xFF53, 0xA3F4, 0xFF54, 0xA3F5, 0xFF55, 0xA3F6, 0xFF56, 0xA3F7, 0xFF57, + 0xA3F8, 0xFF58, 0xA3F9, 0xFF59, 0xA3FA, 0xFF5A, 0xA3FB, 0xFF5B, 0xA3FC, 0xFF5C, 0xA3FD, 0xFF5D, 0xA3FE, 0xFFE3, 0xA4A1, 0x3041, + 0xA4A2, 0x3042, 0xA4A3, 0x3043, 0xA4A4, 0x3044, 0xA4A5, 0x3045, 0xA4A6, 0x3046, 0xA4A7, 0x3047, 0xA4A8, 0x3048, 0xA4A9, 0x3049, + 0xA4AA, 0x304A, 0xA4AB, 0x304B, 0xA4AC, 0x304C, 0xA4AD, 0x304D, 0xA4AE, 0x304E, 0xA4AF, 0x304F, 0xA4B0, 0x3050, 0xA4B1, 0x3051, + 0xA4B2, 0x3052, 0xA4B3, 0x3053, 0xA4B4, 0x3054, 0xA4B5, 0x3055, 0xA4B6, 0x3056, 0xA4B7, 0x3057, 0xA4B8, 0x3058, 0xA4B9, 0x3059, + 0xA4BA, 0x305A, 0xA4BB, 0x305B, 0xA4BC, 0x305C, 0xA4BD, 0x305D, 0xA4BE, 0x305E, 0xA4BF, 0x305F, 0xA4C0, 0x3060, 0xA4C1, 0x3061, + 0xA4C2, 0x3062, 0xA4C3, 0x3063, 0xA4C4, 0x3064, 0xA4C5, 0x3065, 0xA4C6, 0x3066, 0xA4C7, 0x3067, 0xA4C8, 0x3068, 0xA4C9, 0x3069, + 0xA4CA, 0x306A, 0xA4CB, 0x306B, 0xA4CC, 0x306C, 0xA4CD, 0x306D, 0xA4CE, 0x306E, 0xA4CF, 0x306F, 0xA4D0, 0x3070, 0xA4D1, 0x3071, + 0xA4D2, 0x3072, 0xA4D3, 0x3073, 0xA4D4, 0x3074, 0xA4D5, 0x3075, 0xA4D6, 0x3076, 0xA4D7, 0x3077, 0xA4D8, 0x3078, 0xA4D9, 0x3079, + 0xA4DA, 0x307A, 0xA4DB, 0x307B, 0xA4DC, 0x307C, 0xA4DD, 0x307D, 0xA4DE, 0x307E, 0xA4DF, 0x307F, 0xA4E0, 0x3080, 0xA4E1, 0x3081, + 0xA4E2, 0x3082, 0xA4E3, 0x3083, 0xA4E4, 0x3084, 0xA4E5, 0x3085, 0xA4E6, 0x3086, 0xA4E7, 0x3087, 0xA4E8, 0x3088, 0xA4E9, 0x3089, + 0xA4EA, 0x308A, 0xA4EB, 0x308B, 0xA4EC, 0x308C, 0xA4ED, 0x308D, 0xA4EE, 0x308E, 0xA4EF, 0x308F, 0xA4F0, 0x3090, 0xA4F1, 0x3091, + 0xA4F2, 0x3092, 0xA4F3, 0x3093, 0xA5A1, 0x30A1, 0xA5A2, 0x30A2, 0xA5A3, 0x30A3, 0xA5A4, 0x30A4, 0xA5A5, 0x30A5, 0xA5A6, 0x30A6, + 0xA5A7, 0x30A7, 0xA5A8, 0x30A8, 0xA5A9, 0x30A9, 0xA5AA, 0x30AA, 0xA5AB, 0x30AB, 0xA5AC, 0x30AC, 0xA5AD, 0x30AD, 0xA5AE, 0x30AE, + 0xA5AF, 0x30AF, 0xA5B0, 0x30B0, 0xA5B1, 0x30B1, 0xA5B2, 0x30B2, 0xA5B3, 0x30B3, 0xA5B4, 0x30B4, 0xA5B5, 0x30B5, 0xA5B6, 0x30B6, + 0xA5B7, 0x30B7, 0xA5B8, 0x30B8, 0xA5B9, 0x30B9, 0xA5BA, 0x30BA, 0xA5BB, 0x30BB, 0xA5BC, 0x30BC, 0xA5BD, 0x30BD, 0xA5BE, 0x30BE, + 0xA5BF, 0x30BF, 0xA5C0, 0x30C0, 0xA5C1, 0x30C1, 0xA5C2, 0x30C2, 0xA5C3, 0x30C3, 0xA5C4, 0x30C4, 0xA5C5, 0x30C5, 0xA5C6, 0x30C6, + 0xA5C7, 0x30C7, 0xA5C8, 0x30C8, 0xA5C9, 0x30C9, 0xA5CA, 0x30CA, 0xA5CB, 0x30CB, 0xA5CC, 0x30CC, 0xA5CD, 0x30CD, 0xA5CE, 0x30CE, + 0xA5CF, 0x30CF, 0xA5D0, 0x30D0, 0xA5D1, 0x30D1, 0xA5D2, 0x30D2, 0xA5D3, 0x30D3, 0xA5D4, 0x30D4, 0xA5D5, 0x30D5, 0xA5D6, 0x30D6, + 0xA5D7, 0x30D7, 0xA5D8, 0x30D8, 0xA5D9, 0x30D9, 0xA5DA, 0x30DA, 0xA5DB, 0x30DB, 0xA5DC, 0x30DC, 0xA5DD, 0x30DD, 0xA5DE, 0x30DE, + 0xA5DF, 0x30DF, 0xA5E0, 0x30E0, 0xA5E1, 0x30E1, 0xA5E2, 0x30E2, 0xA5E3, 0x30E3, 0xA5E4, 0x30E4, 0xA5E5, 0x30E5, 0xA5E6, 0x30E6, + 0xA5E7, 0x30E7, 0xA5E8, 0x30E8, 0xA5E9, 0x30E9, 0xA5EA, 0x30EA, 0xA5EB, 0x30EB, 0xA5EC, 0x30EC, 0xA5ED, 0x30ED, 0xA5EE, 0x30EE, + 0xA5EF, 0x30EF, 0xA5F0, 0x30F0, 0xA5F1, 0x30F1, 0xA5F2, 0x30F2, 0xA5F3, 0x30F3, 0xA5F4, 0x30F4, 0xA5F5, 0x30F5, 0xA5F6, 0x30F6, + 0xA6A1, 0x0391, 0xA6A2, 0x0392, 0xA6A3, 0x0393, 0xA6A4, 0x0394, 0xA6A5, 0x0395, 0xA6A6, 0x0396, 0xA6A7, 0x0397, 0xA6A8, 0x0398, + 0xA6A9, 0x0399, 0xA6AA, 0x039A, 0xA6AB, 0x039B, 0xA6AC, 0x039C, 0xA6AD, 0x039D, 0xA6AE, 0x039E, 0xA6AF, 0x039F, 0xA6B0, 0x03A0, + 0xA6B1, 0x03A1, 0xA6B2, 0x03A3, 0xA6B3, 0x03A4, 0xA6B4, 0x03A5, 0xA6B5, 0x03A6, 0xA6B6, 0x03A7, 0xA6B7, 0x03A8, 0xA6B8, 0x03A9, + 0xA6C1, 0x03B1, 0xA6C2, 0x03B2, 0xA6C3, 0x03B3, 0xA6C4, 0x03B4, 0xA6C5, 0x03B5, 0xA6C6, 0x03B6, 0xA6C7, 0x03B7, 0xA6C8, 0x03B8, + 0xA6C9, 0x03B9, 0xA6CA, 0x03BA, 0xA6CB, 0x03BB, 0xA6CC, 0x03BC, 0xA6CD, 0x03BD, 0xA6CE, 0x03BE, 0xA6CF, 0x03BF, 0xA6D0, 0x03C0, + 0xA6D1, 0x03C1, 0xA6D2, 0x03C3, 0xA6D3, 0x03C4, 0xA6D4, 0x03C5, 0xA6D5, 0x03C6, 0xA6D6, 0x03C7, 0xA6D7, 0x03C8, 0xA6D8, 0x03C9, + 0xA6E0, 0xFE35, 0xA6E1, 0xFE36, 0xA6E2, 0xFE39, 0xA6E3, 0xFE3A, 0xA6E4, 0xFE3F, 0xA6E5, 0xFE40, 0xA6E6, 0xFE3D, 0xA6E7, 0xFE3E, + 0xA6E8, 0xFE41, 0xA6E9, 0xFE42, 0xA6EA, 0xFE43, 0xA6EB, 0xFE44, 0xA6EE, 0xFE3B, 0xA6EF, 0xFE3C, 0xA6F0, 0xFE37, 0xA6F1, 0xFE38, + 0xA6F2, 0xFE31, 0xA6F4, 0xFE33, 0xA6F5, 0xFE34, 0xA7A1, 0x0410, 0xA7A2, 0x0411, 0xA7A3, 0x0412, 0xA7A4, 0x0413, 0xA7A5, 0x0414, + 0xA7A6, 0x0415, 0xA7A7, 0x0401, 0xA7A8, 0x0416, 0xA7A9, 0x0417, 0xA7AA, 0x0418, 0xA7AB, 0x0419, 0xA7AC, 0x041A, 0xA7AD, 0x041B, + 0xA7AE, 0x041C, 0xA7AF, 0x041D, 0xA7B0, 0x041E, 0xA7B1, 0x041F, 0xA7B2, 0x0420, 0xA7B3, 0x0421, 0xA7B4, 0x0422, 0xA7B5, 0x0423, + 0xA7B6, 0x0424, 0xA7B7, 0x0425, 0xA7B8, 0x0426, 0xA7B9, 0x0427, 0xA7BA, 0x0428, 0xA7BB, 0x0429, 0xA7BC, 0x042A, 0xA7BD, 0x042B, + 0xA7BE, 0x042C, 0xA7BF, 0x042D, 0xA7C0, 0x042E, 0xA7C1, 0x042F, 0xA7D1, 0x0430, 0xA7D2, 0x0431, 0xA7D3, 0x0432, 0xA7D4, 0x0433, + 0xA7D5, 0x0434, 0xA7D6, 0x0435, 0xA7D7, 0x0451, 0xA7D8, 0x0436, 0xA7D9, 0x0437, 0xA7DA, 0x0438, 0xA7DB, 0x0439, 0xA7DC, 0x043A, + 0xA7DD, 0x043B, 0xA7DE, 0x043C, 0xA7DF, 0x043D, 0xA7E0, 0x043E, 0xA7E1, 0x043F, 0xA7E2, 0x0440, 0xA7E3, 0x0441, 0xA7E4, 0x0442, + 0xA7E5, 0x0443, 0xA7E6, 0x0444, 0xA7E7, 0x0445, 0xA7E8, 0x0446, 0xA7E9, 0x0447, 0xA7EA, 0x0448, 0xA7EB, 0x0449, 0xA7EC, 0x044A, + 0xA7ED, 0x044B, 0xA7EE, 0x044C, 0xA7EF, 0x044D, 0xA7F0, 0x044E, 0xA7F1, 0x044F, 0xA840, 0x02CA, 0xA841, 0x02CB, 0xA842, 0x02D9, + 0xA843, 0x2013, 0xA844, 0x2015, 0xA845, 0x2025, 0xA846, 0x2035, 0xA847, 0x2105, 0xA848, 0x2109, 0xA849, 0x2196, 0xA84A, 0x2197, + 0xA84B, 0x2198, 0xA84C, 0x2199, 0xA84D, 0x2215, 0xA84E, 0x221F, 0xA84F, 0x2223, 0xA850, 0x2252, 0xA851, 0x2266, 0xA852, 0x2267, + 0xA853, 0x22BF, 0xA854, 0x2550, 0xA855, 0x2551, 0xA856, 0x2552, 0xA857, 0x2553, 0xA858, 0x2554, 0xA859, 0x2555, 0xA85A, 0x2556, + 0xA85B, 0x2557, 0xA85C, 0x2558, 0xA85D, 0x2559, 0xA85E, 0x255A, 0xA85F, 0x255B, 0xA860, 0x255C, 0xA861, 0x255D, 0xA862, 0x255E, + 0xA863, 0x255F, 0xA864, 0x2560, 0xA865, 0x2561, 0xA866, 0x2562, 0xA867, 0x2563, 0xA868, 0x2564, 0xA869, 0x2565, 0xA86A, 0x2566, + 0xA86B, 0x2567, 0xA86C, 0x2568, 0xA86D, 0x2569, 0xA86E, 0x256A, 0xA86F, 0x256B, 0xA870, 0x256C, 0xA871, 0x256D, 0xA872, 0x256E, + 0xA873, 0x256F, 0xA874, 0x2570, 0xA875, 0x2571, 0xA876, 0x2572, 0xA877, 0x2573, 0xA878, 0x2581, 0xA879, 0x2582, 0xA87A, 0x2583, + 0xA87B, 0x2584, 0xA87C, 0x2585, 0xA87D, 0x2586, 0xA87E, 0x2587, 0xA880, 0x2588, 0xA881, 0x2589, 0xA882, 0x258A, 0xA883, 0x258B, + 0xA884, 0x258C, 0xA885, 0x258D, 0xA886, 0x258E, 0xA887, 0x258F, 0xA888, 0x2593, 0xA889, 0x2594, 0xA88A, 0x2595, 0xA88B, 0x25BC, + 0xA88C, 0x25BD, 0xA88D, 0x25E2, 0xA88E, 0x25E3, 0xA88F, 0x25E4, 0xA890, 0x25E5, 0xA891, 0x2609, 0xA892, 0x2295, 0xA893, 0x3012, + 0xA894, 0x301D, 0xA895, 0x301E, 0xA8A1, 0x0101, 0xA8A2, 0x00E1, 0xA8A3, 0x01CE, 0xA8A4, 0x00E0, 0xA8A5, 0x0113, 0xA8A6, 0x00E9, + 0xA8A7, 0x011B, 0xA8A8, 0x00E8, 0xA8A9, 0x012B, 0xA8AA, 0x00ED, 0xA8AB, 0x01D0, 0xA8AC, 0x00EC, 0xA8AD, 0x014D, 0xA8AE, 0x00F3, + 0xA8AF, 0x01D2, 0xA8B0, 0x00F2, 0xA8B1, 0x016B, 0xA8B2, 0x00FA, 0xA8B3, 0x01D4, 0xA8B4, 0x00F9, 0xA8B5, 0x01D6, 0xA8B6, 0x01D8, + 0xA8B7, 0x01DA, 0xA8B8, 0x01DC, 0xA8B9, 0x00FC, 0xA8BA, 0x00EA, 0xA8BB, 0x0251, 0xA8BD, 0x0144, 0xA8BE, 0x0148, 0xA8C0, 0x0261, + 0xA8C5, 0x3105, 0xA8C6, 0x3106, 0xA8C7, 0x3107, 0xA8C8, 0x3108, 0xA8C9, 0x3109, 0xA8CA, 0x310A, 0xA8CB, 0x310B, 0xA8CC, 0x310C, + 0xA8CD, 0x310D, 0xA8CE, 0x310E, 0xA8CF, 0x310F, 0xA8D0, 0x3110, 0xA8D1, 0x3111, 0xA8D2, 0x3112, 0xA8D3, 0x3113, 0xA8D4, 0x3114, + 0xA8D5, 0x3115, 0xA8D6, 0x3116, 0xA8D7, 0x3117, 0xA8D8, 0x3118, 0xA8D9, 0x3119, 0xA8DA, 0x311A, 0xA8DB, 0x311B, 0xA8DC, 0x311C, + 0xA8DD, 0x311D, 0xA8DE, 0x311E, 0xA8DF, 0x311F, 0xA8E0, 0x3120, 0xA8E1, 0x3121, 0xA8E2, 0x3122, 0xA8E3, 0x3123, 0xA8E4, 0x3124, + 0xA8E5, 0x3125, 0xA8E6, 0x3126, 0xA8E7, 0x3127, 0xA8E8, 0x3128, 0xA8E9, 0x3129, 0xA940, 0x3021, 0xA941, 0x3022, 0xA942, 0x3023, + 0xA943, 0x3024, 0xA944, 0x3025, 0xA945, 0x3026, 0xA946, 0x3027, 0xA947, 0x3028, 0xA948, 0x3029, 0xA949, 0x32A3, 0xA94A, 0x338E, + 0xA94B, 0x338F, 0xA94C, 0x339C, 0xA94D, 0x339D, 0xA94E, 0x339E, 0xA94F, 0x33A1, 0xA950, 0x33C4, 0xA951, 0x33CE, 0xA952, 0x33D1, + 0xA953, 0x33D2, 0xA954, 0x33D5, 0xA955, 0xFE30, 0xA956, 0xFFE2, 0xA957, 0xFFE4, 0xA959, 0x2121, 0xA95A, 0x3231, 0xA95C, 0x2010, + 0xA960, 0x30FC, 0xA961, 0x309B, 0xA962, 0x309C, 0xA963, 0x30FD, 0xA964, 0x30FE, 0xA965, 0x3006, 0xA966, 0x309D, 0xA967, 0x309E, + 0xA968, 0xFE49, 0xA969, 0xFE4A, 0xA96A, 0xFE4B, 0xA96B, 0xFE4C, 0xA96C, 0xFE4D, 0xA96D, 0xFE4E, 0xA96E, 0xFE4F, 0xA96F, 0xFE50, + 0xA970, 0xFE51, 0xA971, 0xFE52, 0xA972, 0xFE54, 0xA973, 0xFE55, 0xA974, 0xFE56, 0xA975, 0xFE57, 0xA976, 0xFE59, 0xA977, 0xFE5A, + 0xA978, 0xFE5B, 0xA979, 0xFE5C, 0xA97A, 0xFE5D, 0xA97B, 0xFE5E, 0xA97C, 0xFE5F, 0xA97D, 0xFE60, 0xA97E, 0xFE61, 0xA980, 0xFE62, + 0xA981, 0xFE63, 0xA982, 0xFE64, 0xA983, 0xFE65, 0xA984, 0xFE66, 0xA985, 0xFE68, 0xA986, 0xFE69, 0xA987, 0xFE6A, 0xA988, 0xFE6B, + 0xA996, 0x3007, 0xA9A4, 0x2500, 0xA9A5, 0x2501, 0xA9A6, 0x2502, 0xA9A7, 0x2503, 0xA9A8, 0x2504, 0xA9A9, 0x2505, 0xA9AA, 0x2506, + 0xA9AB, 0x2507, 0xA9AC, 0x2508, 0xA9AD, 0x2509, 0xA9AE, 0x250A, 0xA9AF, 0x250B, 0xA9B0, 0x250C, 0xA9B1, 0x250D, 0xA9B2, 0x250E, + 0xA9B3, 0x250F, 0xA9B4, 0x2510, 0xA9B5, 0x2511, 0xA9B6, 0x2512, 0xA9B7, 0x2513, 0xA9B8, 0x2514, 0xA9B9, 0x2515, 0xA9BA, 0x2516, + 0xA9BB, 0x2517, 0xA9BC, 0x2518, 0xA9BD, 0x2519, 0xA9BE, 0x251A, 0xA9BF, 0x251B, 0xA9C0, 0x251C, 0xA9C1, 0x251D, 0xA9C2, 0x251E, + 0xA9C3, 0x251F, 0xA9C4, 0x2520, 0xA9C5, 0x2521, 0xA9C6, 0x2522, 0xA9C7, 0x2523, 0xA9C8, 0x2524, 0xA9C9, 0x2525, 0xA9CA, 0x2526, + 0xA9CB, 0x2527, 0xA9CC, 0x2528, 0xA9CD, 0x2529, 0xA9CE, 0x252A, 0xA9CF, 0x252B, 0xA9D0, 0x252C, 0xA9D1, 0x252D, 0xA9D2, 0x252E, + 0xA9D3, 0x252F, 0xA9D4, 0x2530, 0xA9D5, 0x2531, 0xA9D6, 0x2532, 0xA9D7, 0x2533, 0xA9D8, 0x2534, 0xA9D9, 0x2535, 0xA9DA, 0x2536, + 0xA9DB, 0x2537, 0xA9DC, 0x2538, 0xA9DD, 0x2539, 0xA9DE, 0x253A, 0xA9DF, 0x253B, 0xA9E0, 0x253C, 0xA9E1, 0x253D, 0xA9E2, 0x253E, + 0xA9E3, 0x253F, 0xA9E4, 0x2540, 0xA9E5, 0x2541, 0xA9E6, 0x2542, 0xA9E7, 0x2543, 0xA9E8, 0x2544, 0xA9E9, 0x2545, 0xA9EA, 0x2546, + 0xA9EB, 0x2547, 0xA9EC, 0x2548, 0xA9ED, 0x2549, 0xA9EE, 0x254A, 0xA9EF, 0x254B, 0xAA40, 0x72DC, 0xAA41, 0x72DD, 0xAA42, 0x72DF, + 0xAA43, 0x72E2, 0xAA44, 0x72E3, 0xAA45, 0x72E4, 0xAA46, 0x72E5, 0xAA47, 0x72E6, 0xAA48, 0x72E7, 0xAA49, 0x72EA, 0xAA4A, 0x72EB, + 0xAA4B, 0x72F5, 0xAA4C, 0x72F6, 0xAA4D, 0x72F9, 0xAA4E, 0x72FD, 0xAA4F, 0x72FE, 0xAA50, 0x72FF, 0xAA51, 0x7300, 0xAA52, 0x7302, + 0xAA53, 0x7304, 0xAA54, 0x7305, 0xAA55, 0x7306, 0xAA56, 0x7307, 0xAA57, 0x7308, 0xAA58, 0x7309, 0xAA59, 0x730B, 0xAA5A, 0x730C, + 0xAA5B, 0x730D, 0xAA5C, 0x730F, 0xAA5D, 0x7310, 0xAA5E, 0x7311, 0xAA5F, 0x7312, 0xAA60, 0x7314, 0xAA61, 0x7318, 0xAA62, 0x7319, + 0xAA63, 0x731A, 0xAA64, 0x731F, 0xAA65, 0x7320, 0xAA66, 0x7323, 0xAA67, 0x7324, 0xAA68, 0x7326, 0xAA69, 0x7327, 0xAA6A, 0x7328, + 0xAA6B, 0x732D, 0xAA6C, 0x732F, 0xAA6D, 0x7330, 0xAA6E, 0x7332, 0xAA6F, 0x7333, 0xAA70, 0x7335, 0xAA71, 0x7336, 0xAA72, 0x733A, + 0xAA73, 0x733B, 0xAA74, 0x733C, 0xAA75, 0x733D, 0xAA76, 0x7340, 0xAA77, 0x7341, 0xAA78, 0x7342, 0xAA79, 0x7343, 0xAA7A, 0x7344, + 0xAA7B, 0x7345, 0xAA7C, 0x7346, 0xAA7D, 0x7347, 0xAA7E, 0x7348, 0xAA80, 0x7349, 0xAA81, 0x734A, 0xAA82, 0x734B, 0xAA83, 0x734C, + 0xAA84, 0x734E, 0xAA85, 0x734F, 0xAA86, 0x7351, 0xAA87, 0x7353, 0xAA88, 0x7354, 0xAA89, 0x7355, 0xAA8A, 0x7356, 0xAA8B, 0x7358, + 0xAA8C, 0x7359, 0xAA8D, 0x735A, 0xAA8E, 0x735B, 0xAA8F, 0x735C, 0xAA90, 0x735D, 0xAA91, 0x735E, 0xAA92, 0x735F, 0xAA93, 0x7361, + 0xAA94, 0x7362, 0xAA95, 0x7363, 0xAA96, 0x7364, 0xAA97, 0x7365, 0xAA98, 0x7366, 0xAA99, 0x7367, 0xAA9A, 0x7368, 0xAA9B, 0x7369, + 0xAA9C, 0x736A, 0xAA9D, 0x736B, 0xAA9E, 0x736E, 0xAA9F, 0x7370, 0xAAA0, 0x7371, 0xAB40, 0x7372, 0xAB41, 0x7373, 0xAB42, 0x7374, + 0xAB43, 0x7375, 0xAB44, 0x7376, 0xAB45, 0x7377, 0xAB46, 0x7378, 0xAB47, 0x7379, 0xAB48, 0x737A, 0xAB49, 0x737B, 0xAB4A, 0x737C, + 0xAB4B, 0x737D, 0xAB4C, 0x737F, 0xAB4D, 0x7380, 0xAB4E, 0x7381, 0xAB4F, 0x7382, 0xAB50, 0x7383, 0xAB51, 0x7385, 0xAB52, 0x7386, + 0xAB53, 0x7388, 0xAB54, 0x738A, 0xAB55, 0x738C, 0xAB56, 0x738D, 0xAB57, 0x738F, 0xAB58, 0x7390, 0xAB59, 0x7392, 0xAB5A, 0x7393, + 0xAB5B, 0x7394, 0xAB5C, 0x7395, 0xAB5D, 0x7397, 0xAB5E, 0x7398, 0xAB5F, 0x7399, 0xAB60, 0x739A, 0xAB61, 0x739C, 0xAB62, 0x739D, + 0xAB63, 0x739E, 0xAB64, 0x73A0, 0xAB65, 0x73A1, 0xAB66, 0x73A3, 0xAB67, 0x73A4, 0xAB68, 0x73A5, 0xAB69, 0x73A6, 0xAB6A, 0x73A7, + 0xAB6B, 0x73A8, 0xAB6C, 0x73AA, 0xAB6D, 0x73AC, 0xAB6E, 0x73AD, 0xAB6F, 0x73B1, 0xAB70, 0x73B4, 0xAB71, 0x73B5, 0xAB72, 0x73B6, + 0xAB73, 0x73B8, 0xAB74, 0x73B9, 0xAB75, 0x73BC, 0xAB76, 0x73BD, 0xAB77, 0x73BE, 0xAB78, 0x73BF, 0xAB79, 0x73C1, 0xAB7A, 0x73C3, + 0xAB7B, 0x73C4, 0xAB7C, 0x73C5, 0xAB7D, 0x73C6, 0xAB7E, 0x73C7, 0xAB80, 0x73CB, 0xAB81, 0x73CC, 0xAB82, 0x73CE, 0xAB83, 0x73D2, + 0xAB84, 0x73D3, 0xAB85, 0x73D4, 0xAB86, 0x73D5, 0xAB87, 0x73D6, 0xAB88, 0x73D7, 0xAB89, 0x73D8, 0xAB8A, 0x73DA, 0xAB8B, 0x73DB, + 0xAB8C, 0x73DC, 0xAB8D, 0x73DD, 0xAB8E, 0x73DF, 0xAB8F, 0x73E1, 0xAB90, 0x73E2, 0xAB91, 0x73E3, 0xAB92, 0x73E4, 0xAB93, 0x73E6, + 0xAB94, 0x73E8, 0xAB95, 0x73EA, 0xAB96, 0x73EB, 0xAB97, 0x73EC, 0xAB98, 0x73EE, 0xAB99, 0x73EF, 0xAB9A, 0x73F0, 0xAB9B, 0x73F1, + 0xAB9C, 0x73F3, 0xAB9D, 0x73F4, 0xAB9E, 0x73F5, 0xAB9F, 0x73F6, 0xABA0, 0x73F7, 0xAC40, 0x73F8, 0xAC41, 0x73F9, 0xAC42, 0x73FA, + 0xAC43, 0x73FB, 0xAC44, 0x73FC, 0xAC45, 0x73FD, 0xAC46, 0x73FE, 0xAC47, 0x73FF, 0xAC48, 0x7400, 0xAC49, 0x7401, 0xAC4A, 0x7402, + 0xAC4B, 0x7404, 0xAC4C, 0x7407, 0xAC4D, 0x7408, 0xAC4E, 0x740B, 0xAC4F, 0x740C, 0xAC50, 0x740D, 0xAC51, 0x740E, 0xAC52, 0x7411, + 0xAC53, 0x7412, 0xAC54, 0x7413, 0xAC55, 0x7414, 0xAC56, 0x7415, 0xAC57, 0x7416, 0xAC58, 0x7417, 0xAC59, 0x7418, 0xAC5A, 0x7419, + 0xAC5B, 0x741C, 0xAC5C, 0x741D, 0xAC5D, 0x741E, 0xAC5E, 0x741F, 0xAC5F, 0x7420, 0xAC60, 0x7421, 0xAC61, 0x7423, 0xAC62, 0x7424, + 0xAC63, 0x7427, 0xAC64, 0x7429, 0xAC65, 0x742B, 0xAC66, 0x742D, 0xAC67, 0x742F, 0xAC68, 0x7431, 0xAC69, 0x7432, 0xAC6A, 0x7437, + 0xAC6B, 0x7438, 0xAC6C, 0x7439, 0xAC6D, 0x743A, 0xAC6E, 0x743B, 0xAC6F, 0x743D, 0xAC70, 0x743E, 0xAC71, 0x743F, 0xAC72, 0x7440, + 0xAC73, 0x7442, 0xAC74, 0x7443, 0xAC75, 0x7444, 0xAC76, 0x7445, 0xAC77, 0x7446, 0xAC78, 0x7447, 0xAC79, 0x7448, 0xAC7A, 0x7449, + 0xAC7B, 0x744A, 0xAC7C, 0x744B, 0xAC7D, 0x744C, 0xAC7E, 0x744D, 0xAC80, 0x744E, 0xAC81, 0x744F, 0xAC82, 0x7450, 0xAC83, 0x7451, + 0xAC84, 0x7452, 0xAC85, 0x7453, 0xAC86, 0x7454, 0xAC87, 0x7456, 0xAC88, 0x7458, 0xAC89, 0x745D, 0xAC8A, 0x7460, 0xAC8B, 0x7461, + 0xAC8C, 0x7462, 0xAC8D, 0x7463, 0xAC8E, 0x7464, 0xAC8F, 0x7465, 0xAC90, 0x7466, 0xAC91, 0x7467, 0xAC92, 0x7468, 0xAC93, 0x7469, + 0xAC94, 0x746A, 0xAC95, 0x746B, 0xAC96, 0x746C, 0xAC97, 0x746E, 0xAC98, 0x746F, 0xAC99, 0x7471, 0xAC9A, 0x7472, 0xAC9B, 0x7473, + 0xAC9C, 0x7474, 0xAC9D, 0x7475, 0xAC9E, 0x7478, 0xAC9F, 0x7479, 0xACA0, 0x747A, 0xAD40, 0x747B, 0xAD41, 0x747C, 0xAD42, 0x747D, + 0xAD43, 0x747F, 0xAD44, 0x7482, 0xAD45, 0x7484, 0xAD46, 0x7485, 0xAD47, 0x7486, 0xAD48, 0x7488, 0xAD49, 0x7489, 0xAD4A, 0x748A, + 0xAD4B, 0x748C, 0xAD4C, 0x748D, 0xAD4D, 0x748F, 0xAD4E, 0x7491, 0xAD4F, 0x7492, 0xAD50, 0x7493, 0xAD51, 0x7494, 0xAD52, 0x7495, + 0xAD53, 0x7496, 0xAD54, 0x7497, 0xAD55, 0x7498, 0xAD56, 0x7499, 0xAD57, 0x749A, 0xAD58, 0x749B, 0xAD59, 0x749D, 0xAD5A, 0x749F, + 0xAD5B, 0x74A0, 0xAD5C, 0x74A1, 0xAD5D, 0x74A2, 0xAD5E, 0x74A3, 0xAD5F, 0x74A4, 0xAD60, 0x74A5, 0xAD61, 0x74A6, 0xAD62, 0x74AA, + 0xAD63, 0x74AB, 0xAD64, 0x74AC, 0xAD65, 0x74AD, 0xAD66, 0x74AE, 0xAD67, 0x74AF, 0xAD68, 0x74B0, 0xAD69, 0x74B1, 0xAD6A, 0x74B2, + 0xAD6B, 0x74B3, 0xAD6C, 0x74B4, 0xAD6D, 0x74B5, 0xAD6E, 0x74B6, 0xAD6F, 0x74B7, 0xAD70, 0x74B8, 0xAD71, 0x74B9, 0xAD72, 0x74BB, + 0xAD73, 0x74BC, 0xAD74, 0x74BD, 0xAD75, 0x74BE, 0xAD76, 0x74BF, 0xAD77, 0x74C0, 0xAD78, 0x74C1, 0xAD79, 0x74C2, 0xAD7A, 0x74C3, + 0xAD7B, 0x74C4, 0xAD7C, 0x74C5, 0xAD7D, 0x74C6, 0xAD7E, 0x74C7, 0xAD80, 0x74C8, 0xAD81, 0x74C9, 0xAD82, 0x74CA, 0xAD83, 0x74CB, + 0xAD84, 0x74CC, 0xAD85, 0x74CD, 0xAD86, 0x74CE, 0xAD87, 0x74CF, 0xAD88, 0x74D0, 0xAD89, 0x74D1, 0xAD8A, 0x74D3, 0xAD8B, 0x74D4, + 0xAD8C, 0x74D5, 0xAD8D, 0x74D6, 0xAD8E, 0x74D7, 0xAD8F, 0x74D8, 0xAD90, 0x74D9, 0xAD91, 0x74DA, 0xAD92, 0x74DB, 0xAD93, 0x74DD, + 0xAD94, 0x74DF, 0xAD95, 0x74E1, 0xAD96, 0x74E5, 0xAD97, 0x74E7, 0xAD98, 0x74E8, 0xAD99, 0x74E9, 0xAD9A, 0x74EA, 0xAD9B, 0x74EB, + 0xAD9C, 0x74EC, 0xAD9D, 0x74ED, 0xAD9E, 0x74F0, 0xAD9F, 0x74F1, 0xADA0, 0x74F2, 0xAE40, 0x74F3, 0xAE41, 0x74F5, 0xAE42, 0x74F8, + 0xAE43, 0x74F9, 0xAE44, 0x74FA, 0xAE45, 0x74FB, 0xAE46, 0x74FC, 0xAE47, 0x74FD, 0xAE48, 0x74FE, 0xAE49, 0x7500, 0xAE4A, 0x7501, + 0xAE4B, 0x7502, 0xAE4C, 0x7503, 0xAE4D, 0x7505, 0xAE4E, 0x7506, 0xAE4F, 0x7507, 0xAE50, 0x7508, 0xAE51, 0x7509, 0xAE52, 0x750A, + 0xAE53, 0x750B, 0xAE54, 0x750C, 0xAE55, 0x750E, 0xAE56, 0x7510, 0xAE57, 0x7512, 0xAE58, 0x7514, 0xAE59, 0x7515, 0xAE5A, 0x7516, + 0xAE5B, 0x7517, 0xAE5C, 0x751B, 0xAE5D, 0x751D, 0xAE5E, 0x751E, 0xAE5F, 0x7520, 0xAE60, 0x7521, 0xAE61, 0x7522, 0xAE62, 0x7523, + 0xAE63, 0x7524, 0xAE64, 0x7526, 0xAE65, 0x7527, 0xAE66, 0x752A, 0xAE67, 0x752E, 0xAE68, 0x7534, 0xAE69, 0x7536, 0xAE6A, 0x7539, + 0xAE6B, 0x753C, 0xAE6C, 0x753D, 0xAE6D, 0x753F, 0xAE6E, 0x7541, 0xAE6F, 0x7542, 0xAE70, 0x7543, 0xAE71, 0x7544, 0xAE72, 0x7546, + 0xAE73, 0x7547, 0xAE74, 0x7549, 0xAE75, 0x754A, 0xAE76, 0x754D, 0xAE77, 0x7550, 0xAE78, 0x7551, 0xAE79, 0x7552, 0xAE7A, 0x7553, + 0xAE7B, 0x7555, 0xAE7C, 0x7556, 0xAE7D, 0x7557, 0xAE7E, 0x7558, 0xAE80, 0x755D, 0xAE81, 0x755E, 0xAE82, 0x755F, 0xAE83, 0x7560, + 0xAE84, 0x7561, 0xAE85, 0x7562, 0xAE86, 0x7563, 0xAE87, 0x7564, 0xAE88, 0x7567, 0xAE89, 0x7568, 0xAE8A, 0x7569, 0xAE8B, 0x756B, + 0xAE8C, 0x756C, 0xAE8D, 0x756D, 0xAE8E, 0x756E, 0xAE8F, 0x756F, 0xAE90, 0x7570, 0xAE91, 0x7571, 0xAE92, 0x7573, 0xAE93, 0x7575, + 0xAE94, 0x7576, 0xAE95, 0x7577, 0xAE96, 0x757A, 0xAE97, 0x757B, 0xAE98, 0x757C, 0xAE99, 0x757D, 0xAE9A, 0x757E, 0xAE9B, 0x7580, + 0xAE9C, 0x7581, 0xAE9D, 0x7582, 0xAE9E, 0x7584, 0xAE9F, 0x7585, 0xAEA0, 0x7587, 0xAF40, 0x7588, 0xAF41, 0x7589, 0xAF42, 0x758A, + 0xAF43, 0x758C, 0xAF44, 0x758D, 0xAF45, 0x758E, 0xAF46, 0x7590, 0xAF47, 0x7593, 0xAF48, 0x7595, 0xAF49, 0x7598, 0xAF4A, 0x759B, + 0xAF4B, 0x759C, 0xAF4C, 0x759E, 0xAF4D, 0x75A2, 0xAF4E, 0x75A6, 0xAF4F, 0x75A7, 0xAF50, 0x75A8, 0xAF51, 0x75A9, 0xAF52, 0x75AA, + 0xAF53, 0x75AD, 0xAF54, 0x75B6, 0xAF55, 0x75B7, 0xAF56, 0x75BA, 0xAF57, 0x75BB, 0xAF58, 0x75BF, 0xAF59, 0x75C0, 0xAF5A, 0x75C1, + 0xAF5B, 0x75C6, 0xAF5C, 0x75CB, 0xAF5D, 0x75CC, 0xAF5E, 0x75CE, 0xAF5F, 0x75CF, 0xAF60, 0x75D0, 0xAF61, 0x75D1, 0xAF62, 0x75D3, + 0xAF63, 0x75D7, 0xAF64, 0x75D9, 0xAF65, 0x75DA, 0xAF66, 0x75DC, 0xAF67, 0x75DD, 0xAF68, 0x75DF, 0xAF69, 0x75E0, 0xAF6A, 0x75E1, + 0xAF6B, 0x75E5, 0xAF6C, 0x75E9, 0xAF6D, 0x75EC, 0xAF6E, 0x75ED, 0xAF6F, 0x75EE, 0xAF70, 0x75EF, 0xAF71, 0x75F2, 0xAF72, 0x75F3, + 0xAF73, 0x75F5, 0xAF74, 0x75F6, 0xAF75, 0x75F7, 0xAF76, 0x75F8, 0xAF77, 0x75FA, 0xAF78, 0x75FB, 0xAF79, 0x75FD, 0xAF7A, 0x75FE, + 0xAF7B, 0x7602, 0xAF7C, 0x7604, 0xAF7D, 0x7606, 0xAF7E, 0x7607, 0xAF80, 0x7608, 0xAF81, 0x7609, 0xAF82, 0x760B, 0xAF83, 0x760D, + 0xAF84, 0x760E, 0xAF85, 0x760F, 0xAF86, 0x7611, 0xAF87, 0x7612, 0xAF88, 0x7613, 0xAF89, 0x7614, 0xAF8A, 0x7616, 0xAF8B, 0x761A, + 0xAF8C, 0x761C, 0xAF8D, 0x761D, 0xAF8E, 0x761E, 0xAF8F, 0x7621, 0xAF90, 0x7623, 0xAF91, 0x7627, 0xAF92, 0x7628, 0xAF93, 0x762C, + 0xAF94, 0x762E, 0xAF95, 0x762F, 0xAF96, 0x7631, 0xAF97, 0x7632, 0xAF98, 0x7636, 0xAF99, 0x7637, 0xAF9A, 0x7639, 0xAF9B, 0x763A, + 0xAF9C, 0x763B, 0xAF9D, 0x763D, 0xAF9E, 0x7641, 0xAF9F, 0x7642, 0xAFA0, 0x7644, 0xB040, 0x7645, 0xB041, 0x7646, 0xB042, 0x7647, + 0xB043, 0x7648, 0xB044, 0x7649, 0xB045, 0x764A, 0xB046, 0x764B, 0xB047, 0x764E, 0xB048, 0x764F, 0xB049, 0x7650, 0xB04A, 0x7651, + 0xB04B, 0x7652, 0xB04C, 0x7653, 0xB04D, 0x7655, 0xB04E, 0x7657, 0xB04F, 0x7658, 0xB050, 0x7659, 0xB051, 0x765A, 0xB052, 0x765B, + 0xB053, 0x765D, 0xB054, 0x765F, 0xB055, 0x7660, 0xB056, 0x7661, 0xB057, 0x7662, 0xB058, 0x7664, 0xB059, 0x7665, 0xB05A, 0x7666, + 0xB05B, 0x7667, 0xB05C, 0x7668, 0xB05D, 0x7669, 0xB05E, 0x766A, 0xB05F, 0x766C, 0xB060, 0x766D, 0xB061, 0x766E, 0xB062, 0x7670, + 0xB063, 0x7671, 0xB064, 0x7672, 0xB065, 0x7673, 0xB066, 0x7674, 0xB067, 0x7675, 0xB068, 0x7676, 0xB069, 0x7677, 0xB06A, 0x7679, + 0xB06B, 0x767A, 0xB06C, 0x767C, 0xB06D, 0x767F, 0xB06E, 0x7680, 0xB06F, 0x7681, 0xB070, 0x7683, 0xB071, 0x7685, 0xB072, 0x7689, + 0xB073, 0x768A, 0xB074, 0x768C, 0xB075, 0x768D, 0xB076, 0x768F, 0xB077, 0x7690, 0xB078, 0x7692, 0xB079, 0x7694, 0xB07A, 0x7695, + 0xB07B, 0x7697, 0xB07C, 0x7698, 0xB07D, 0x769A, 0xB07E, 0x769B, 0xB080, 0x769C, 0xB081, 0x769D, 0xB082, 0x769E, 0xB083, 0x769F, + 0xB084, 0x76A0, 0xB085, 0x76A1, 0xB086, 0x76A2, 0xB087, 0x76A3, 0xB088, 0x76A5, 0xB089, 0x76A6, 0xB08A, 0x76A7, 0xB08B, 0x76A8, + 0xB08C, 0x76A9, 0xB08D, 0x76AA, 0xB08E, 0x76AB, 0xB08F, 0x76AC, 0xB090, 0x76AD, 0xB091, 0x76AF, 0xB092, 0x76B0, 0xB093, 0x76B3, + 0xB094, 0x76B5, 0xB095, 0x76B6, 0xB096, 0x76B7, 0xB097, 0x76B8, 0xB098, 0x76B9, 0xB099, 0x76BA, 0xB09A, 0x76BB, 0xB09B, 0x76BC, + 0xB09C, 0x76BD, 0xB09D, 0x76BE, 0xB09E, 0x76C0, 0xB09F, 0x76C1, 0xB0A0, 0x76C3, 0xB0A1, 0x554A, 0xB0A2, 0x963F, 0xB0A3, 0x57C3, + 0xB0A4, 0x6328, 0xB0A5, 0x54CE, 0xB0A6, 0x5509, 0xB0A7, 0x54C0, 0xB0A8, 0x7691, 0xB0A9, 0x764C, 0xB0AA, 0x853C, 0xB0AB, 0x77EE, + 0xB0AC, 0x827E, 0xB0AD, 0x788D, 0xB0AE, 0x7231, 0xB0AF, 0x9698, 0xB0B0, 0x978D, 0xB0B1, 0x6C28, 0xB0B2, 0x5B89, 0xB0B3, 0x4FFA, + 0xB0B4, 0x6309, 0xB0B5, 0x6697, 0xB0B6, 0x5CB8, 0xB0B7, 0x80FA, 0xB0B8, 0x6848, 0xB0B9, 0x80AE, 0xB0BA, 0x6602, 0xB0BB, 0x76CE, + 0xB0BC, 0x51F9, 0xB0BD, 0x6556, 0xB0BE, 0x71AC, 0xB0BF, 0x7FF1, 0xB0C0, 0x8884, 0xB0C1, 0x50B2, 0xB0C2, 0x5965, 0xB0C3, 0x61CA, + 0xB0C4, 0x6FB3, 0xB0C5, 0x82AD, 0xB0C6, 0x634C, 0xB0C7, 0x6252, 0xB0C8, 0x53ED, 0xB0C9, 0x5427, 0xB0CA, 0x7B06, 0xB0CB, 0x516B, + 0xB0CC, 0x75A4, 0xB0CD, 0x5DF4, 0xB0CE, 0x62D4, 0xB0CF, 0x8DCB, 0xB0D0, 0x9776, 0xB0D1, 0x628A, 0xB0D2, 0x8019, 0xB0D3, 0x575D, + 0xB0D4, 0x9738, 0xB0D5, 0x7F62, 0xB0D6, 0x7238, 0xB0D7, 0x767D, 0xB0D8, 0x67CF, 0xB0D9, 0x767E, 0xB0DA, 0x6446, 0xB0DB, 0x4F70, + 0xB0DC, 0x8D25, 0xB0DD, 0x62DC, 0xB0DE, 0x7A17, 0xB0DF, 0x6591, 0xB0E0, 0x73ED, 0xB0E1, 0x642C, 0xB0E2, 0x6273, 0xB0E3, 0x822C, + 0xB0E4, 0x9881, 0xB0E5, 0x677F, 0xB0E6, 0x7248, 0xB0E7, 0x626E, 0xB0E8, 0x62CC, 0xB0E9, 0x4F34, 0xB0EA, 0x74E3, 0xB0EB, 0x534A, + 0xB0EC, 0x529E, 0xB0ED, 0x7ECA, 0xB0EE, 0x90A6, 0xB0EF, 0x5E2E, 0xB0F0, 0x6886, 0xB0F1, 0x699C, 0xB0F2, 0x8180, 0xB0F3, 0x7ED1, + 0xB0F4, 0x68D2, 0xB0F5, 0x78C5, 0xB0F6, 0x868C, 0xB0F7, 0x9551, 0xB0F8, 0x508D, 0xB0F9, 0x8C24, 0xB0FA, 0x82DE, 0xB0FB, 0x80DE, + 0xB0FC, 0x5305, 0xB0FD, 0x8912, 0xB0FE, 0x5265, 0xB140, 0x76C4, 0xB141, 0x76C7, 0xB142, 0x76C9, 0xB143, 0x76CB, 0xB144, 0x76CC, + 0xB145, 0x76D3, 0xB146, 0x76D5, 0xB147, 0x76D9, 0xB148, 0x76DA, 0xB149, 0x76DC, 0xB14A, 0x76DD, 0xB14B, 0x76DE, 0xB14C, 0x76E0, + 0xB14D, 0x76E1, 0xB14E, 0x76E2, 0xB14F, 0x76E3, 0xB150, 0x76E4, 0xB151, 0x76E6, 0xB152, 0x76E7, 0xB153, 0x76E8, 0xB154, 0x76E9, + 0xB155, 0x76EA, 0xB156, 0x76EB, 0xB157, 0x76EC, 0xB158, 0x76ED, 0xB159, 0x76F0, 0xB15A, 0x76F3, 0xB15B, 0x76F5, 0xB15C, 0x76F6, + 0xB15D, 0x76F7, 0xB15E, 0x76FA, 0xB15F, 0x76FB, 0xB160, 0x76FD, 0xB161, 0x76FF, 0xB162, 0x7700, 0xB163, 0x7702, 0xB164, 0x7703, + 0xB165, 0x7705, 0xB166, 0x7706, 0xB167, 0x770A, 0xB168, 0x770C, 0xB169, 0x770E, 0xB16A, 0x770F, 0xB16B, 0x7710, 0xB16C, 0x7711, + 0xB16D, 0x7712, 0xB16E, 0x7713, 0xB16F, 0x7714, 0xB170, 0x7715, 0xB171, 0x7716, 0xB172, 0x7717, 0xB173, 0x7718, 0xB174, 0x771B, + 0xB175, 0x771C, 0xB176, 0x771D, 0xB177, 0x771E, 0xB178, 0x7721, 0xB179, 0x7723, 0xB17A, 0x7724, 0xB17B, 0x7725, 0xB17C, 0x7727, + 0xB17D, 0x772A, 0xB17E, 0x772B, 0xB180, 0x772C, 0xB181, 0x772E, 0xB182, 0x7730, 0xB183, 0x7731, 0xB184, 0x7732, 0xB185, 0x7733, + 0xB186, 0x7734, 0xB187, 0x7739, 0xB188, 0x773B, 0xB189, 0x773D, 0xB18A, 0x773E, 0xB18B, 0x773F, 0xB18C, 0x7742, 0xB18D, 0x7744, + 0xB18E, 0x7745, 0xB18F, 0x7746, 0xB190, 0x7748, 0xB191, 0x7749, 0xB192, 0x774A, 0xB193, 0x774B, 0xB194, 0x774C, 0xB195, 0x774D, + 0xB196, 0x774E, 0xB197, 0x774F, 0xB198, 0x7752, 0xB199, 0x7753, 0xB19A, 0x7754, 0xB19B, 0x7755, 0xB19C, 0x7756, 0xB19D, 0x7757, + 0xB19E, 0x7758, 0xB19F, 0x7759, 0xB1A0, 0x775C, 0xB1A1, 0x8584, 0xB1A2, 0x96F9, 0xB1A3, 0x4FDD, 0xB1A4, 0x5821, 0xB1A5, 0x9971, + 0xB1A6, 0x5B9D, 0xB1A7, 0x62B1, 0xB1A8, 0x62A5, 0xB1A9, 0x66B4, 0xB1AA, 0x8C79, 0xB1AB, 0x9C8D, 0xB1AC, 0x7206, 0xB1AD, 0x676F, + 0xB1AE, 0x7891, 0xB1AF, 0x60B2, 0xB1B0, 0x5351, 0xB1B1, 0x5317, 0xB1B2, 0x8F88, 0xB1B3, 0x80CC, 0xB1B4, 0x8D1D, 0xB1B5, 0x94A1, + 0xB1B6, 0x500D, 0xB1B7, 0x72C8, 0xB1B8, 0x5907, 0xB1B9, 0x60EB, 0xB1BA, 0x7119, 0xB1BB, 0x88AB, 0xB1BC, 0x5954, 0xB1BD, 0x82EF, + 0xB1BE, 0x672C, 0xB1BF, 0x7B28, 0xB1C0, 0x5D29, 0xB1C1, 0x7EF7, 0xB1C2, 0x752D, 0xB1C3, 0x6CF5, 0xB1C4, 0x8E66, 0xB1C5, 0x8FF8, + 0xB1C6, 0x903C, 0xB1C7, 0x9F3B, 0xB1C8, 0x6BD4, 0xB1C9, 0x9119, 0xB1CA, 0x7B14, 0xB1CB, 0x5F7C, 0xB1CC, 0x78A7, 0xB1CD, 0x84D6, + 0xB1CE, 0x853D, 0xB1CF, 0x6BD5, 0xB1D0, 0x6BD9, 0xB1D1, 0x6BD6, 0xB1D2, 0x5E01, 0xB1D3, 0x5E87, 0xB1D4, 0x75F9, 0xB1D5, 0x95ED, + 0xB1D6, 0x655D, 0xB1D7, 0x5F0A, 0xB1D8, 0x5FC5, 0xB1D9, 0x8F9F, 0xB1DA, 0x58C1, 0xB1DB, 0x81C2, 0xB1DC, 0x907F, 0xB1DD, 0x965B, + 0xB1DE, 0x97AD, 0xB1DF, 0x8FB9, 0xB1E0, 0x7F16, 0xB1E1, 0x8D2C, 0xB1E2, 0x6241, 0xB1E3, 0x4FBF, 0xB1E4, 0x53D8, 0xB1E5, 0x535E, + 0xB1E6, 0x8FA8, 0xB1E7, 0x8FA9, 0xB1E8, 0x8FAB, 0xB1E9, 0x904D, 0xB1EA, 0x6807, 0xB1EB, 0x5F6A, 0xB1EC, 0x8198, 0xB1ED, 0x8868, + 0xB1EE, 0x9CD6, 0xB1EF, 0x618B, 0xB1F0, 0x522B, 0xB1F1, 0x762A, 0xB1F2, 0x5F6C, 0xB1F3, 0x658C, 0xB1F4, 0x6FD2, 0xB1F5, 0x6EE8, + 0xB1F6, 0x5BBE, 0xB1F7, 0x6448, 0xB1F8, 0x5175, 0xB1F9, 0x51B0, 0xB1FA, 0x67C4, 0xB1FB, 0x4E19, 0xB1FC, 0x79C9, 0xB1FD, 0x997C, + 0xB1FE, 0x70B3, 0xB240, 0x775D, 0xB241, 0x775E, 0xB242, 0x775F, 0xB243, 0x7760, 0xB244, 0x7764, 0xB245, 0x7767, 0xB246, 0x7769, + 0xB247, 0x776A, 0xB248, 0x776D, 0xB249, 0x776E, 0xB24A, 0x776F, 0xB24B, 0x7770, 0xB24C, 0x7771, 0xB24D, 0x7772, 0xB24E, 0x7773, + 0xB24F, 0x7774, 0xB250, 0x7775, 0xB251, 0x7776, 0xB252, 0x7777, 0xB253, 0x7778, 0xB254, 0x777A, 0xB255, 0x777B, 0xB256, 0x777C, + 0xB257, 0x7781, 0xB258, 0x7782, 0xB259, 0x7783, 0xB25A, 0x7786, 0xB25B, 0x7787, 0xB25C, 0x7788, 0xB25D, 0x7789, 0xB25E, 0x778A, + 0xB25F, 0x778B, 0xB260, 0x778F, 0xB261, 0x7790, 0xB262, 0x7793, 0xB263, 0x7794, 0xB264, 0x7795, 0xB265, 0x7796, 0xB266, 0x7797, + 0xB267, 0x7798, 0xB268, 0x7799, 0xB269, 0x779A, 0xB26A, 0x779B, 0xB26B, 0x779C, 0xB26C, 0x779D, 0xB26D, 0x779E, 0xB26E, 0x77A1, + 0xB26F, 0x77A3, 0xB270, 0x77A4, 0xB271, 0x77A6, 0xB272, 0x77A8, 0xB273, 0x77AB, 0xB274, 0x77AD, 0xB275, 0x77AE, 0xB276, 0x77AF, + 0xB277, 0x77B1, 0xB278, 0x77B2, 0xB279, 0x77B4, 0xB27A, 0x77B6, 0xB27B, 0x77B7, 0xB27C, 0x77B8, 0xB27D, 0x77B9, 0xB27E, 0x77BA, + 0xB280, 0x77BC, 0xB281, 0x77BE, 0xB282, 0x77C0, 0xB283, 0x77C1, 0xB284, 0x77C2, 0xB285, 0x77C3, 0xB286, 0x77C4, 0xB287, 0x77C5, + 0xB288, 0x77C6, 0xB289, 0x77C7, 0xB28A, 0x77C8, 0xB28B, 0x77C9, 0xB28C, 0x77CA, 0xB28D, 0x77CB, 0xB28E, 0x77CC, 0xB28F, 0x77CE, + 0xB290, 0x77CF, 0xB291, 0x77D0, 0xB292, 0x77D1, 0xB293, 0x77D2, 0xB294, 0x77D3, 0xB295, 0x77D4, 0xB296, 0x77D5, 0xB297, 0x77D6, + 0xB298, 0x77D8, 0xB299, 0x77D9, 0xB29A, 0x77DA, 0xB29B, 0x77DD, 0xB29C, 0x77DE, 0xB29D, 0x77DF, 0xB29E, 0x77E0, 0xB29F, 0x77E1, + 0xB2A0, 0x77E4, 0xB2A1, 0x75C5, 0xB2A2, 0x5E76, 0xB2A3, 0x73BB, 0xB2A4, 0x83E0, 0xB2A5, 0x64AD, 0xB2A6, 0x62E8, 0xB2A7, 0x94B5, + 0xB2A8, 0x6CE2, 0xB2A9, 0x535A, 0xB2AA, 0x52C3, 0xB2AB, 0x640F, 0xB2AC, 0x94C2, 0xB2AD, 0x7B94, 0xB2AE, 0x4F2F, 0xB2AF, 0x5E1B, + 0xB2B0, 0x8236, 0xB2B1, 0x8116, 0xB2B2, 0x818A, 0xB2B3, 0x6E24, 0xB2B4, 0x6CCA, 0xB2B5, 0x9A73, 0xB2B6, 0x6355, 0xB2B7, 0x535C, + 0xB2B8, 0x54FA, 0xB2B9, 0x8865, 0xB2BA, 0x57E0, 0xB2BB, 0x4E0D, 0xB2BC, 0x5E03, 0xB2BD, 0x6B65, 0xB2BE, 0x7C3F, 0xB2BF, 0x90E8, + 0xB2C0, 0x6016, 0xB2C1, 0x64E6, 0xB2C2, 0x731C, 0xB2C3, 0x88C1, 0xB2C4, 0x6750, 0xB2C5, 0x624D, 0xB2C6, 0x8D22, 0xB2C7, 0x776C, + 0xB2C8, 0x8E29, 0xB2C9, 0x91C7, 0xB2CA, 0x5F69, 0xB2CB, 0x83DC, 0xB2CC, 0x8521, 0xB2CD, 0x9910, 0xB2CE, 0x53C2, 0xB2CF, 0x8695, + 0xB2D0, 0x6B8B, 0xB2D1, 0x60ED, 0xB2D2, 0x60E8, 0xB2D3, 0x707F, 0xB2D4, 0x82CD, 0xB2D5, 0x8231, 0xB2D6, 0x4ED3, 0xB2D7, 0x6CA7, + 0xB2D8, 0x85CF, 0xB2D9, 0x64CD, 0xB2DA, 0x7CD9, 0xB2DB, 0x69FD, 0xB2DC, 0x66F9, 0xB2DD, 0x8349, 0xB2DE, 0x5395, 0xB2DF, 0x7B56, + 0xB2E0, 0x4FA7, 0xB2E1, 0x518C, 0xB2E2, 0x6D4B, 0xB2E3, 0x5C42, 0xB2E4, 0x8E6D, 0xB2E5, 0x63D2, 0xB2E6, 0x53C9, 0xB2E7, 0x832C, + 0xB2E8, 0x8336, 0xB2E9, 0x67E5, 0xB2EA, 0x78B4, 0xB2EB, 0x643D, 0xB2EC, 0x5BDF, 0xB2ED, 0x5C94, 0xB2EE, 0x5DEE, 0xB2EF, 0x8BE7, + 0xB2F0, 0x62C6, 0xB2F1, 0x67F4, 0xB2F2, 0x8C7A, 0xB2F3, 0x6400, 0xB2F4, 0x63BA, 0xB2F5, 0x8749, 0xB2F6, 0x998B, 0xB2F7, 0x8C17, + 0xB2F8, 0x7F20, 0xB2F9, 0x94F2, 0xB2FA, 0x4EA7, 0xB2FB, 0x9610, 0xB2FC, 0x98A4, 0xB2FD, 0x660C, 0xB2FE, 0x7316, 0xB340, 0x77E6, + 0xB341, 0x77E8, 0xB342, 0x77EA, 0xB343, 0x77EF, 0xB344, 0x77F0, 0xB345, 0x77F1, 0xB346, 0x77F2, 0xB347, 0x77F4, 0xB348, 0x77F5, + 0xB349, 0x77F7, 0xB34A, 0x77F9, 0xB34B, 0x77FA, 0xB34C, 0x77FB, 0xB34D, 0x77FC, 0xB34E, 0x7803, 0xB34F, 0x7804, 0xB350, 0x7805, + 0xB351, 0x7806, 0xB352, 0x7807, 0xB353, 0x7808, 0xB354, 0x780A, 0xB355, 0x780B, 0xB356, 0x780E, 0xB357, 0x780F, 0xB358, 0x7810, + 0xB359, 0x7813, 0xB35A, 0x7815, 0xB35B, 0x7819, 0xB35C, 0x781B, 0xB35D, 0x781E, 0xB35E, 0x7820, 0xB35F, 0x7821, 0xB360, 0x7822, + 0xB361, 0x7824, 0xB362, 0x7828, 0xB363, 0x782A, 0xB364, 0x782B, 0xB365, 0x782E, 0xB366, 0x782F, 0xB367, 0x7831, 0xB368, 0x7832, + 0xB369, 0x7833, 0xB36A, 0x7835, 0xB36B, 0x7836, 0xB36C, 0x783D, 0xB36D, 0x783F, 0xB36E, 0x7841, 0xB36F, 0x7842, 0xB370, 0x7843, + 0xB371, 0x7844, 0xB372, 0x7846, 0xB373, 0x7848, 0xB374, 0x7849, 0xB375, 0x784A, 0xB376, 0x784B, 0xB377, 0x784D, 0xB378, 0x784F, + 0xB379, 0x7851, 0xB37A, 0x7853, 0xB37B, 0x7854, 0xB37C, 0x7858, 0xB37D, 0x7859, 0xB37E, 0x785A, 0xB380, 0x785B, 0xB381, 0x785C, + 0xB382, 0x785E, 0xB383, 0x785F, 0xB384, 0x7860, 0xB385, 0x7861, 0xB386, 0x7862, 0xB387, 0x7863, 0xB388, 0x7864, 0xB389, 0x7865, + 0xB38A, 0x7866, 0xB38B, 0x7867, 0xB38C, 0x7868, 0xB38D, 0x7869, 0xB38E, 0x786F, 0xB38F, 0x7870, 0xB390, 0x7871, 0xB391, 0x7872, + 0xB392, 0x7873, 0xB393, 0x7874, 0xB394, 0x7875, 0xB395, 0x7876, 0xB396, 0x7878, 0xB397, 0x7879, 0xB398, 0x787A, 0xB399, 0x787B, + 0xB39A, 0x787D, 0xB39B, 0x787E, 0xB39C, 0x787F, 0xB39D, 0x7880, 0xB39E, 0x7881, 0xB39F, 0x7882, 0xB3A0, 0x7883, 0xB3A1, 0x573A, + 0xB3A2, 0x5C1D, 0xB3A3, 0x5E38, 0xB3A4, 0x957F, 0xB3A5, 0x507F, 0xB3A6, 0x80A0, 0xB3A7, 0x5382, 0xB3A8, 0x655E, 0xB3A9, 0x7545, + 0xB3AA, 0x5531, 0xB3AB, 0x5021, 0xB3AC, 0x8D85, 0xB3AD, 0x6284, 0xB3AE, 0x949E, 0xB3AF, 0x671D, 0xB3B0, 0x5632, 0xB3B1, 0x6F6E, + 0xB3B2, 0x5DE2, 0xB3B3, 0x5435, 0xB3B4, 0x7092, 0xB3B5, 0x8F66, 0xB3B6, 0x626F, 0xB3B7, 0x64A4, 0xB3B8, 0x63A3, 0xB3B9, 0x5F7B, + 0xB3BA, 0x6F88, 0xB3BB, 0x90F4, 0xB3BC, 0x81E3, 0xB3BD, 0x8FB0, 0xB3BE, 0x5C18, 0xB3BF, 0x6668, 0xB3C0, 0x5FF1, 0xB3C1, 0x6C89, + 0xB3C2, 0x9648, 0xB3C3, 0x8D81, 0xB3C4, 0x886C, 0xB3C5, 0x6491, 0xB3C6, 0x79F0, 0xB3C7, 0x57CE, 0xB3C8, 0x6A59, 0xB3C9, 0x6210, + 0xB3CA, 0x5448, 0xB3CB, 0x4E58, 0xB3CC, 0x7A0B, 0xB3CD, 0x60E9, 0xB3CE, 0x6F84, 0xB3CF, 0x8BDA, 0xB3D0, 0x627F, 0xB3D1, 0x901E, + 0xB3D2, 0x9A8B, 0xB3D3, 0x79E4, 0xB3D4, 0x5403, 0xB3D5, 0x75F4, 0xB3D6, 0x6301, 0xB3D7, 0x5319, 0xB3D8, 0x6C60, 0xB3D9, 0x8FDF, + 0xB3DA, 0x5F1B, 0xB3DB, 0x9A70, 0xB3DC, 0x803B, 0xB3DD, 0x9F7F, 0xB3DE, 0x4F88, 0xB3DF, 0x5C3A, 0xB3E0, 0x8D64, 0xB3E1, 0x7FC5, + 0xB3E2, 0x65A5, 0xB3E3, 0x70BD, 0xB3E4, 0x5145, 0xB3E5, 0x51B2, 0xB3E6, 0x866B, 0xB3E7, 0x5D07, 0xB3E8, 0x5BA0, 0xB3E9, 0x62BD, + 0xB3EA, 0x916C, 0xB3EB, 0x7574, 0xB3EC, 0x8E0C, 0xB3ED, 0x7A20, 0xB3EE, 0x6101, 0xB3EF, 0x7B79, 0xB3F0, 0x4EC7, 0xB3F1, 0x7EF8, + 0xB3F2, 0x7785, 0xB3F3, 0x4E11, 0xB3F4, 0x81ED, 0xB3F5, 0x521D, 0xB3F6, 0x51FA, 0xB3F7, 0x6A71, 0xB3F8, 0x53A8, 0xB3F9, 0x8E87, + 0xB3FA, 0x9504, 0xB3FB, 0x96CF, 0xB3FC, 0x6EC1, 0xB3FD, 0x9664, 0xB3FE, 0x695A, 0xB440, 0x7884, 0xB441, 0x7885, 0xB442, 0x7886, + 0xB443, 0x7888, 0xB444, 0x788A, 0xB445, 0x788B, 0xB446, 0x788F, 0xB447, 0x7890, 0xB448, 0x7892, 0xB449, 0x7894, 0xB44A, 0x7895, + 0xB44B, 0x7896, 0xB44C, 0x7899, 0xB44D, 0x789D, 0xB44E, 0x789E, 0xB44F, 0x78A0, 0xB450, 0x78A2, 0xB451, 0x78A4, 0xB452, 0x78A6, + 0xB453, 0x78A8, 0xB454, 0x78A9, 0xB455, 0x78AA, 0xB456, 0x78AB, 0xB457, 0x78AC, 0xB458, 0x78AD, 0xB459, 0x78AE, 0xB45A, 0x78AF, + 0xB45B, 0x78B5, 0xB45C, 0x78B6, 0xB45D, 0x78B7, 0xB45E, 0x78B8, 0xB45F, 0x78BA, 0xB460, 0x78BB, 0xB461, 0x78BC, 0xB462, 0x78BD, + 0xB463, 0x78BF, 0xB464, 0x78C0, 0xB465, 0x78C2, 0xB466, 0x78C3, 0xB467, 0x78C4, 0xB468, 0x78C6, 0xB469, 0x78C7, 0xB46A, 0x78C8, + 0xB46B, 0x78CC, 0xB46C, 0x78CD, 0xB46D, 0x78CE, 0xB46E, 0x78CF, 0xB46F, 0x78D1, 0xB470, 0x78D2, 0xB471, 0x78D3, 0xB472, 0x78D6, + 0xB473, 0x78D7, 0xB474, 0x78D8, 0xB475, 0x78DA, 0xB476, 0x78DB, 0xB477, 0x78DC, 0xB478, 0x78DD, 0xB479, 0x78DE, 0xB47A, 0x78DF, + 0xB47B, 0x78E0, 0xB47C, 0x78E1, 0xB47D, 0x78E2, 0xB47E, 0x78E3, 0xB480, 0x78E4, 0xB481, 0x78E5, 0xB482, 0x78E6, 0xB483, 0x78E7, + 0xB484, 0x78E9, 0xB485, 0x78EA, 0xB486, 0x78EB, 0xB487, 0x78ED, 0xB488, 0x78EE, 0xB489, 0x78EF, 0xB48A, 0x78F0, 0xB48B, 0x78F1, + 0xB48C, 0x78F3, 0xB48D, 0x78F5, 0xB48E, 0x78F6, 0xB48F, 0x78F8, 0xB490, 0x78F9, 0xB491, 0x78FB, 0xB492, 0x78FC, 0xB493, 0x78FD, + 0xB494, 0x78FE, 0xB495, 0x78FF, 0xB496, 0x7900, 0xB497, 0x7902, 0xB498, 0x7903, 0xB499, 0x7904, 0xB49A, 0x7906, 0xB49B, 0x7907, + 0xB49C, 0x7908, 0xB49D, 0x7909, 0xB49E, 0x790A, 0xB49F, 0x790B, 0xB4A0, 0x790C, 0xB4A1, 0x7840, 0xB4A2, 0x50A8, 0xB4A3, 0x77D7, + 0xB4A4, 0x6410, 0xB4A5, 0x89E6, 0xB4A6, 0x5904, 0xB4A7, 0x63E3, 0xB4A8, 0x5DDD, 0xB4A9, 0x7A7F, 0xB4AA, 0x693D, 0xB4AB, 0x4F20, + 0xB4AC, 0x8239, 0xB4AD, 0x5598, 0xB4AE, 0x4E32, 0xB4AF, 0x75AE, 0xB4B0, 0x7A97, 0xB4B1, 0x5E62, 0xB4B2, 0x5E8A, 0xB4B3, 0x95EF, + 0xB4B4, 0x521B, 0xB4B5, 0x5439, 0xB4B6, 0x708A, 0xB4B7, 0x6376, 0xB4B8, 0x9524, 0xB4B9, 0x5782, 0xB4BA, 0x6625, 0xB4BB, 0x693F, + 0xB4BC, 0x9187, 0xB4BD, 0x5507, 0xB4BE, 0x6DF3, 0xB4BF, 0x7EAF, 0xB4C0, 0x8822, 0xB4C1, 0x6233, 0xB4C2, 0x7EF0, 0xB4C3, 0x75B5, + 0xB4C4, 0x8328, 0xB4C5, 0x78C1, 0xB4C6, 0x96CC, 0xB4C7, 0x8F9E, 0xB4C8, 0x6148, 0xB4C9, 0x74F7, 0xB4CA, 0x8BCD, 0xB4CB, 0x6B64, + 0xB4CC, 0x523A, 0xB4CD, 0x8D50, 0xB4CE, 0x6B21, 0xB4CF, 0x806A, 0xB4D0, 0x8471, 0xB4D1, 0x56F1, 0xB4D2, 0x5306, 0xB4D3, 0x4ECE, + 0xB4D4, 0x4E1B, 0xB4D5, 0x51D1, 0xB4D6, 0x7C97, 0xB4D7, 0x918B, 0xB4D8, 0x7C07, 0xB4D9, 0x4FC3, 0xB4DA, 0x8E7F, 0xB4DB, 0x7BE1, + 0xB4DC, 0x7A9C, 0xB4DD, 0x6467, 0xB4DE, 0x5D14, 0xB4DF, 0x50AC, 0xB4E0, 0x8106, 0xB4E1, 0x7601, 0xB4E2, 0x7CB9, 0xB4E3, 0x6DEC, + 0xB4E4, 0x7FE0, 0xB4E5, 0x6751, 0xB4E6, 0x5B58, 0xB4E7, 0x5BF8, 0xB4E8, 0x78CB, 0xB4E9, 0x64AE, 0xB4EA, 0x6413, 0xB4EB, 0x63AA, + 0xB4EC, 0x632B, 0xB4ED, 0x9519, 0xB4EE, 0x642D, 0xB4EF, 0x8FBE, 0xB4F0, 0x7B54, 0xB4F1, 0x7629, 0xB4F2, 0x6253, 0xB4F3, 0x5927, + 0xB4F4, 0x5446, 0xB4F5, 0x6B79, 0xB4F6, 0x50A3, 0xB4F7, 0x6234, 0xB4F8, 0x5E26, 0xB4F9, 0x6B86, 0xB4FA, 0x4EE3, 0xB4FB, 0x8D37, + 0xB4FC, 0x888B, 0xB4FD, 0x5F85, 0xB4FE, 0x902E, 0xB540, 0x790D, 0xB541, 0x790E, 0xB542, 0x790F, 0xB543, 0x7910, 0xB544, 0x7911, + 0xB545, 0x7912, 0xB546, 0x7914, 0xB547, 0x7915, 0xB548, 0x7916, 0xB549, 0x7917, 0xB54A, 0x7918, 0xB54B, 0x7919, 0xB54C, 0x791A, + 0xB54D, 0x791B, 0xB54E, 0x791C, 0xB54F, 0x791D, 0xB550, 0x791F, 0xB551, 0x7920, 0xB552, 0x7921, 0xB553, 0x7922, 0xB554, 0x7923, + 0xB555, 0x7925, 0xB556, 0x7926, 0xB557, 0x7927, 0xB558, 0x7928, 0xB559, 0x7929, 0xB55A, 0x792A, 0xB55B, 0x792B, 0xB55C, 0x792C, + 0xB55D, 0x792D, 0xB55E, 0x792E, 0xB55F, 0x792F, 0xB560, 0x7930, 0xB561, 0x7931, 0xB562, 0x7932, 0xB563, 0x7933, 0xB564, 0x7935, + 0xB565, 0x7936, 0xB566, 0x7937, 0xB567, 0x7938, 0xB568, 0x7939, 0xB569, 0x793D, 0xB56A, 0x793F, 0xB56B, 0x7942, 0xB56C, 0x7943, + 0xB56D, 0x7944, 0xB56E, 0x7945, 0xB56F, 0x7947, 0xB570, 0x794A, 0xB571, 0x794B, 0xB572, 0x794C, 0xB573, 0x794D, 0xB574, 0x794E, + 0xB575, 0x794F, 0xB576, 0x7950, 0xB577, 0x7951, 0xB578, 0x7952, 0xB579, 0x7954, 0xB57A, 0x7955, 0xB57B, 0x7958, 0xB57C, 0x7959, + 0xB57D, 0x7961, 0xB57E, 0x7963, 0xB580, 0x7964, 0xB581, 0x7966, 0xB582, 0x7969, 0xB583, 0x796A, 0xB584, 0x796B, 0xB585, 0x796C, + 0xB586, 0x796E, 0xB587, 0x7970, 0xB588, 0x7971, 0xB589, 0x7972, 0xB58A, 0x7973, 0xB58B, 0x7974, 0xB58C, 0x7975, 0xB58D, 0x7976, + 0xB58E, 0x7979, 0xB58F, 0x797B, 0xB590, 0x797C, 0xB591, 0x797D, 0xB592, 0x797E, 0xB593, 0x797F, 0xB594, 0x7982, 0xB595, 0x7983, + 0xB596, 0x7986, 0xB597, 0x7987, 0xB598, 0x7988, 0xB599, 0x7989, 0xB59A, 0x798B, 0xB59B, 0x798C, 0xB59C, 0x798D, 0xB59D, 0x798E, + 0xB59E, 0x7990, 0xB59F, 0x7991, 0xB5A0, 0x7992, 0xB5A1, 0x6020, 0xB5A2, 0x803D, 0xB5A3, 0x62C5, 0xB5A4, 0x4E39, 0xB5A5, 0x5355, + 0xB5A6, 0x90F8, 0xB5A7, 0x63B8, 0xB5A8, 0x80C6, 0xB5A9, 0x65E6, 0xB5AA, 0x6C2E, 0xB5AB, 0x4F46, 0xB5AC, 0x60EE, 0xB5AD, 0x6DE1, + 0xB5AE, 0x8BDE, 0xB5AF, 0x5F39, 0xB5B0, 0x86CB, 0xB5B1, 0x5F53, 0xB5B2, 0x6321, 0xB5B3, 0x515A, 0xB5B4, 0x8361, 0xB5B5, 0x6863, + 0xB5B6, 0x5200, 0xB5B7, 0x6363, 0xB5B8, 0x8E48, 0xB5B9, 0x5012, 0xB5BA, 0x5C9B, 0xB5BB, 0x7977, 0xB5BC, 0x5BFC, 0xB5BD, 0x5230, + 0xB5BE, 0x7A3B, 0xB5BF, 0x60BC, 0xB5C0, 0x9053, 0xB5C1, 0x76D7, 0xB5C2, 0x5FB7, 0xB5C3, 0x5F97, 0xB5C4, 0x7684, 0xB5C5, 0x8E6C, + 0xB5C6, 0x706F, 0xB5C7, 0x767B, 0xB5C8, 0x7B49, 0xB5C9, 0x77AA, 0xB5CA, 0x51F3, 0xB5CB, 0x9093, 0xB5CC, 0x5824, 0xB5CD, 0x4F4E, + 0xB5CE, 0x6EF4, 0xB5CF, 0x8FEA, 0xB5D0, 0x654C, 0xB5D1, 0x7B1B, 0xB5D2, 0x72C4, 0xB5D3, 0x6DA4, 0xB5D4, 0x7FDF, 0xB5D5, 0x5AE1, + 0xB5D6, 0x62B5, 0xB5D7, 0x5E95, 0xB5D8, 0x5730, 0xB5D9, 0x8482, 0xB5DA, 0x7B2C, 0xB5DB, 0x5E1D, 0xB5DC, 0x5F1F, 0xB5DD, 0x9012, + 0xB5DE, 0x7F14, 0xB5DF, 0x98A0, 0xB5E0, 0x6382, 0xB5E1, 0x6EC7, 0xB5E2, 0x7898, 0xB5E3, 0x70B9, 0xB5E4, 0x5178, 0xB5E5, 0x975B, + 0xB5E6, 0x57AB, 0xB5E7, 0x7535, 0xB5E8, 0x4F43, 0xB5E9, 0x7538, 0xB5EA, 0x5E97, 0xB5EB, 0x60E6, 0xB5EC, 0x5960, 0xB5ED, 0x6DC0, + 0xB5EE, 0x6BBF, 0xB5EF, 0x7889, 0xB5F0, 0x53FC, 0xB5F1, 0x96D5, 0xB5F2, 0x51CB, 0xB5F3, 0x5201, 0xB5F4, 0x6389, 0xB5F5, 0x540A, + 0xB5F6, 0x9493, 0xB5F7, 0x8C03, 0xB5F8, 0x8DCC, 0xB5F9, 0x7239, 0xB5FA, 0x789F, 0xB5FB, 0x8776, 0xB5FC, 0x8FED, 0xB5FD, 0x8C0D, + 0xB5FE, 0x53E0, 0xB640, 0x7993, 0xB641, 0x7994, 0xB642, 0x7995, 0xB643, 0x7996, 0xB644, 0x7997, 0xB645, 0x7998, 0xB646, 0x7999, + 0xB647, 0x799B, 0xB648, 0x799C, 0xB649, 0x799D, 0xB64A, 0x799E, 0xB64B, 0x799F, 0xB64C, 0x79A0, 0xB64D, 0x79A1, 0xB64E, 0x79A2, + 0xB64F, 0x79A3, 0xB650, 0x79A4, 0xB651, 0x79A5, 0xB652, 0x79A6, 0xB653, 0x79A8, 0xB654, 0x79A9, 0xB655, 0x79AA, 0xB656, 0x79AB, + 0xB657, 0x79AC, 0xB658, 0x79AD, 0xB659, 0x79AE, 0xB65A, 0x79AF, 0xB65B, 0x79B0, 0xB65C, 0x79B1, 0xB65D, 0x79B2, 0xB65E, 0x79B4, + 0xB65F, 0x79B5, 0xB660, 0x79B6, 0xB661, 0x79B7, 0xB662, 0x79B8, 0xB663, 0x79BC, 0xB664, 0x79BF, 0xB665, 0x79C2, 0xB666, 0x79C4, + 0xB667, 0x79C5, 0xB668, 0x79C7, 0xB669, 0x79C8, 0xB66A, 0x79CA, 0xB66B, 0x79CC, 0xB66C, 0x79CE, 0xB66D, 0x79CF, 0xB66E, 0x79D0, + 0xB66F, 0x79D3, 0xB670, 0x79D4, 0xB671, 0x79D6, 0xB672, 0x79D7, 0xB673, 0x79D9, 0xB674, 0x79DA, 0xB675, 0x79DB, 0xB676, 0x79DC, + 0xB677, 0x79DD, 0xB678, 0x79DE, 0xB679, 0x79E0, 0xB67A, 0x79E1, 0xB67B, 0x79E2, 0xB67C, 0x79E5, 0xB67D, 0x79E8, 0xB67E, 0x79EA, + 0xB680, 0x79EC, 0xB681, 0x79EE, 0xB682, 0x79F1, 0xB683, 0x79F2, 0xB684, 0x79F3, 0xB685, 0x79F4, 0xB686, 0x79F5, 0xB687, 0x79F6, + 0xB688, 0x79F7, 0xB689, 0x79F9, 0xB68A, 0x79FA, 0xB68B, 0x79FC, 0xB68C, 0x79FE, 0xB68D, 0x79FF, 0xB68E, 0x7A01, 0xB68F, 0x7A04, + 0xB690, 0x7A05, 0xB691, 0x7A07, 0xB692, 0x7A08, 0xB693, 0x7A09, 0xB694, 0x7A0A, 0xB695, 0x7A0C, 0xB696, 0x7A0F, 0xB697, 0x7A10, + 0xB698, 0x7A11, 0xB699, 0x7A12, 0xB69A, 0x7A13, 0xB69B, 0x7A15, 0xB69C, 0x7A16, 0xB69D, 0x7A18, 0xB69E, 0x7A19, 0xB69F, 0x7A1B, + 0xB6A0, 0x7A1C, 0xB6A1, 0x4E01, 0xB6A2, 0x76EF, 0xB6A3, 0x53EE, 0xB6A4, 0x9489, 0xB6A5, 0x9876, 0xB6A6, 0x9F0E, 0xB6A7, 0x952D, + 0xB6A8, 0x5B9A, 0xB6A9, 0x8BA2, 0xB6AA, 0x4E22, 0xB6AB, 0x4E1C, 0xB6AC, 0x51AC, 0xB6AD, 0x8463, 0xB6AE, 0x61C2, 0xB6AF, 0x52A8, + 0xB6B0, 0x680B, 0xB6B1, 0x4F97, 0xB6B2, 0x606B, 0xB6B3, 0x51BB, 0xB6B4, 0x6D1E, 0xB6B5, 0x515C, 0xB6B6, 0x6296, 0xB6B7, 0x6597, + 0xB6B8, 0x9661, 0xB6B9, 0x8C46, 0xB6BA, 0x9017, 0xB6BB, 0x75D8, 0xB6BC, 0x90FD, 0xB6BD, 0x7763, 0xB6BE, 0x6BD2, 0xB6BF, 0x728A, + 0xB6C0, 0x72EC, 0xB6C1, 0x8BFB, 0xB6C2, 0x5835, 0xB6C3, 0x7779, 0xB6C4, 0x8D4C, 0xB6C5, 0x675C, 0xB6C6, 0x9540, 0xB6C7, 0x809A, + 0xB6C8, 0x5EA6, 0xB6C9, 0x6E21, 0xB6CA, 0x5992, 0xB6CB, 0x7AEF, 0xB6CC, 0x77ED, 0xB6CD, 0x953B, 0xB6CE, 0x6BB5, 0xB6CF, 0x65AD, + 0xB6D0, 0x7F0E, 0xB6D1, 0x5806, 0xB6D2, 0x5151, 0xB6D3, 0x961F, 0xB6D4, 0x5BF9, 0xB6D5, 0x58A9, 0xB6D6, 0x5428, 0xB6D7, 0x8E72, + 0xB6D8, 0x6566, 0xB6D9, 0x987F, 0xB6DA, 0x56E4, 0xB6DB, 0x949D, 0xB6DC, 0x76FE, 0xB6DD, 0x9041, 0xB6DE, 0x6387, 0xB6DF, 0x54C6, + 0xB6E0, 0x591A, 0xB6E1, 0x593A, 0xB6E2, 0x579B, 0xB6E3, 0x8EB2, 0xB6E4, 0x6735, 0xB6E5, 0x8DFA, 0xB6E6, 0x8235, 0xB6E7, 0x5241, + 0xB6E8, 0x60F0, 0xB6E9, 0x5815, 0xB6EA, 0x86FE, 0xB6EB, 0x5CE8, 0xB6EC, 0x9E45, 0xB6ED, 0x4FC4, 0xB6EE, 0x989D, 0xB6EF, 0x8BB9, + 0xB6F0, 0x5A25, 0xB6F1, 0x6076, 0xB6F2, 0x5384, 0xB6F3, 0x627C, 0xB6F4, 0x904F, 0xB6F5, 0x9102, 0xB6F6, 0x997F, 0xB6F7, 0x6069, + 0xB6F8, 0x800C, 0xB6F9, 0x513F, 0xB6FA, 0x8033, 0xB6FB, 0x5C14, 0xB6FC, 0x9975, 0xB6FD, 0x6D31, 0xB6FE, 0x4E8C, 0xB740, 0x7A1D, + 0xB741, 0x7A1F, 0xB742, 0x7A21, 0xB743, 0x7A22, 0xB744, 0x7A24, 0xB745, 0x7A25, 0xB746, 0x7A26, 0xB747, 0x7A27, 0xB748, 0x7A28, + 0xB749, 0x7A29, 0xB74A, 0x7A2A, 0xB74B, 0x7A2B, 0xB74C, 0x7A2C, 0xB74D, 0x7A2D, 0xB74E, 0x7A2E, 0xB74F, 0x7A2F, 0xB750, 0x7A30, + 0xB751, 0x7A31, 0xB752, 0x7A32, 0xB753, 0x7A34, 0xB754, 0x7A35, 0xB755, 0x7A36, 0xB756, 0x7A38, 0xB757, 0x7A3A, 0xB758, 0x7A3E, + 0xB759, 0x7A40, 0xB75A, 0x7A41, 0xB75B, 0x7A42, 0xB75C, 0x7A43, 0xB75D, 0x7A44, 0xB75E, 0x7A45, 0xB75F, 0x7A47, 0xB760, 0x7A48, + 0xB761, 0x7A49, 0xB762, 0x7A4A, 0xB763, 0x7A4B, 0xB764, 0x7A4C, 0xB765, 0x7A4D, 0xB766, 0x7A4E, 0xB767, 0x7A4F, 0xB768, 0x7A50, + 0xB769, 0x7A52, 0xB76A, 0x7A53, 0xB76B, 0x7A54, 0xB76C, 0x7A55, 0xB76D, 0x7A56, 0xB76E, 0x7A58, 0xB76F, 0x7A59, 0xB770, 0x7A5A, + 0xB771, 0x7A5B, 0xB772, 0x7A5C, 0xB773, 0x7A5D, 0xB774, 0x7A5E, 0xB775, 0x7A5F, 0xB776, 0x7A60, 0xB777, 0x7A61, 0xB778, 0x7A62, + 0xB779, 0x7A63, 0xB77A, 0x7A64, 0xB77B, 0x7A65, 0xB77C, 0x7A66, 0xB77D, 0x7A67, 0xB77E, 0x7A68, 0xB780, 0x7A69, 0xB781, 0x7A6A, + 0xB782, 0x7A6B, 0xB783, 0x7A6C, 0xB784, 0x7A6D, 0xB785, 0x7A6E, 0xB786, 0x7A6F, 0xB787, 0x7A71, 0xB788, 0x7A72, 0xB789, 0x7A73, + 0xB78A, 0x7A75, 0xB78B, 0x7A7B, 0xB78C, 0x7A7C, 0xB78D, 0x7A7D, 0xB78E, 0x7A7E, 0xB78F, 0x7A82, 0xB790, 0x7A85, 0xB791, 0x7A87, + 0xB792, 0x7A89, 0xB793, 0x7A8A, 0xB794, 0x7A8B, 0xB795, 0x7A8C, 0xB796, 0x7A8E, 0xB797, 0x7A8F, 0xB798, 0x7A90, 0xB799, 0x7A93, + 0xB79A, 0x7A94, 0xB79B, 0x7A99, 0xB79C, 0x7A9A, 0xB79D, 0x7A9B, 0xB79E, 0x7A9E, 0xB79F, 0x7AA1, 0xB7A0, 0x7AA2, 0xB7A1, 0x8D30, + 0xB7A2, 0x53D1, 0xB7A3, 0x7F5A, 0xB7A4, 0x7B4F, 0xB7A5, 0x4F10, 0xB7A6, 0x4E4F, 0xB7A7, 0x9600, 0xB7A8, 0x6CD5, 0xB7A9, 0x73D0, + 0xB7AA, 0x85E9, 0xB7AB, 0x5E06, 0xB7AC, 0x756A, 0xB7AD, 0x7FFB, 0xB7AE, 0x6A0A, 0xB7AF, 0x77FE, 0xB7B0, 0x9492, 0xB7B1, 0x7E41, + 0xB7B2, 0x51E1, 0xB7B3, 0x70E6, 0xB7B4, 0x53CD, 0xB7B5, 0x8FD4, 0xB7B6, 0x8303, 0xB7B7, 0x8D29, 0xB7B8, 0x72AF, 0xB7B9, 0x996D, + 0xB7BA, 0x6CDB, 0xB7BB, 0x574A, 0xB7BC, 0x82B3, 0xB7BD, 0x65B9, 0xB7BE, 0x80AA, 0xB7BF, 0x623F, 0xB7C0, 0x9632, 0xB7C1, 0x59A8, + 0xB7C2, 0x4EFF, 0xB7C3, 0x8BBF, 0xB7C4, 0x7EBA, 0xB7C5, 0x653E, 0xB7C6, 0x83F2, 0xB7C7, 0x975E, 0xB7C8, 0x5561, 0xB7C9, 0x98DE, + 0xB7CA, 0x80A5, 0xB7CB, 0x532A, 0xB7CC, 0x8BFD, 0xB7CD, 0x5420, 0xB7CE, 0x80BA, 0xB7CF, 0x5E9F, 0xB7D0, 0x6CB8, 0xB7D1, 0x8D39, + 0xB7D2, 0x82AC, 0xB7D3, 0x915A, 0xB7D4, 0x5429, 0xB7D5, 0x6C1B, 0xB7D6, 0x5206, 0xB7D7, 0x7EB7, 0xB7D8, 0x575F, 0xB7D9, 0x711A, + 0xB7DA, 0x6C7E, 0xB7DB, 0x7C89, 0xB7DC, 0x594B, 0xB7DD, 0x4EFD, 0xB7DE, 0x5FFF, 0xB7DF, 0x6124, 0xB7E0, 0x7CAA, 0xB7E1, 0x4E30, + 0xB7E2, 0x5C01, 0xB7E3, 0x67AB, 0xB7E4, 0x8702, 0xB7E5, 0x5CF0, 0xB7E6, 0x950B, 0xB7E7, 0x98CE, 0xB7E8, 0x75AF, 0xB7E9, 0x70FD, + 0xB7EA, 0x9022, 0xB7EB, 0x51AF, 0xB7EC, 0x7F1D, 0xB7ED, 0x8BBD, 0xB7EE, 0x5949, 0xB7EF, 0x51E4, 0xB7F0, 0x4F5B, 0xB7F1, 0x5426, + 0xB7F2, 0x592B, 0xB7F3, 0x6577, 0xB7F4, 0x80A4, 0xB7F5, 0x5B75, 0xB7F6, 0x6276, 0xB7F7, 0x62C2, 0xB7F8, 0x8F90, 0xB7F9, 0x5E45, + 0xB7FA, 0x6C1F, 0xB7FB, 0x7B26, 0xB7FC, 0x4F0F, 0xB7FD, 0x4FD8, 0xB7FE, 0x670D, 0xB840, 0x7AA3, 0xB841, 0x7AA4, 0xB842, 0x7AA7, + 0xB843, 0x7AA9, 0xB844, 0x7AAA, 0xB845, 0x7AAB, 0xB846, 0x7AAE, 0xB847, 0x7AAF, 0xB848, 0x7AB0, 0xB849, 0x7AB1, 0xB84A, 0x7AB2, + 0xB84B, 0x7AB4, 0xB84C, 0x7AB5, 0xB84D, 0x7AB6, 0xB84E, 0x7AB7, 0xB84F, 0x7AB8, 0xB850, 0x7AB9, 0xB851, 0x7ABA, 0xB852, 0x7ABB, + 0xB853, 0x7ABC, 0xB854, 0x7ABD, 0xB855, 0x7ABE, 0xB856, 0x7AC0, 0xB857, 0x7AC1, 0xB858, 0x7AC2, 0xB859, 0x7AC3, 0xB85A, 0x7AC4, + 0xB85B, 0x7AC5, 0xB85C, 0x7AC6, 0xB85D, 0x7AC7, 0xB85E, 0x7AC8, 0xB85F, 0x7AC9, 0xB860, 0x7ACA, 0xB861, 0x7ACC, 0xB862, 0x7ACD, + 0xB863, 0x7ACE, 0xB864, 0x7ACF, 0xB865, 0x7AD0, 0xB866, 0x7AD1, 0xB867, 0x7AD2, 0xB868, 0x7AD3, 0xB869, 0x7AD4, 0xB86A, 0x7AD5, + 0xB86B, 0x7AD7, 0xB86C, 0x7AD8, 0xB86D, 0x7ADA, 0xB86E, 0x7ADB, 0xB86F, 0x7ADC, 0xB870, 0x7ADD, 0xB871, 0x7AE1, 0xB872, 0x7AE2, + 0xB873, 0x7AE4, 0xB874, 0x7AE7, 0xB875, 0x7AE8, 0xB876, 0x7AE9, 0xB877, 0x7AEA, 0xB878, 0x7AEB, 0xB879, 0x7AEC, 0xB87A, 0x7AEE, + 0xB87B, 0x7AF0, 0xB87C, 0x7AF1, 0xB87D, 0x7AF2, 0xB87E, 0x7AF3, 0xB880, 0x7AF4, 0xB881, 0x7AF5, 0xB882, 0x7AF6, 0xB883, 0x7AF7, + 0xB884, 0x7AF8, 0xB885, 0x7AFB, 0xB886, 0x7AFC, 0xB887, 0x7AFE, 0xB888, 0x7B00, 0xB889, 0x7B01, 0xB88A, 0x7B02, 0xB88B, 0x7B05, + 0xB88C, 0x7B07, 0xB88D, 0x7B09, 0xB88E, 0x7B0C, 0xB88F, 0x7B0D, 0xB890, 0x7B0E, 0xB891, 0x7B10, 0xB892, 0x7B12, 0xB893, 0x7B13, + 0xB894, 0x7B16, 0xB895, 0x7B17, 0xB896, 0x7B18, 0xB897, 0x7B1A, 0xB898, 0x7B1C, 0xB899, 0x7B1D, 0xB89A, 0x7B1F, 0xB89B, 0x7B21, + 0xB89C, 0x7B22, 0xB89D, 0x7B23, 0xB89E, 0x7B27, 0xB89F, 0x7B29, 0xB8A0, 0x7B2D, 0xB8A1, 0x6D6E, 0xB8A2, 0x6DAA, 0xB8A3, 0x798F, + 0xB8A4, 0x88B1, 0xB8A5, 0x5F17, 0xB8A6, 0x752B, 0xB8A7, 0x629A, 0xB8A8, 0x8F85, 0xB8A9, 0x4FEF, 0xB8AA, 0x91DC, 0xB8AB, 0x65A7, + 0xB8AC, 0x812F, 0xB8AD, 0x8151, 0xB8AE, 0x5E9C, 0xB8AF, 0x8150, 0xB8B0, 0x8D74, 0xB8B1, 0x526F, 0xB8B2, 0x8986, 0xB8B3, 0x8D4B, + 0xB8B4, 0x590D, 0xB8B5, 0x5085, 0xB8B6, 0x4ED8, 0xB8B7, 0x961C, 0xB8B8, 0x7236, 0xB8B9, 0x8179, 0xB8BA, 0x8D1F, 0xB8BB, 0x5BCC, + 0xB8BC, 0x8BA3, 0xB8BD, 0x9644, 0xB8BE, 0x5987, 0xB8BF, 0x7F1A, 0xB8C0, 0x5490, 0xB8C1, 0x5676, 0xB8C2, 0x560E, 0xB8C3, 0x8BE5, + 0xB8C4, 0x6539, 0xB8C5, 0x6982, 0xB8C6, 0x9499, 0xB8C7, 0x76D6, 0xB8C8, 0x6E89, 0xB8C9, 0x5E72, 0xB8CA, 0x7518, 0xB8CB, 0x6746, + 0xB8CC, 0x67D1, 0xB8CD, 0x7AFF, 0xB8CE, 0x809D, 0xB8CF, 0x8D76, 0xB8D0, 0x611F, 0xB8D1, 0x79C6, 0xB8D2, 0x6562, 0xB8D3, 0x8D63, + 0xB8D4, 0x5188, 0xB8D5, 0x521A, 0xB8D6, 0x94A2, 0xB8D7, 0x7F38, 0xB8D8, 0x809B, 0xB8D9, 0x7EB2, 0xB8DA, 0x5C97, 0xB8DB, 0x6E2F, + 0xB8DC, 0x6760, 0xB8DD, 0x7BD9, 0xB8DE, 0x768B, 0xB8DF, 0x9AD8, 0xB8E0, 0x818F, 0xB8E1, 0x7F94, 0xB8E2, 0x7CD5, 0xB8E3, 0x641E, + 0xB8E4, 0x9550, 0xB8E5, 0x7A3F, 0xB8E6, 0x544A, 0xB8E7, 0x54E5, 0xB8E8, 0x6B4C, 0xB8E9, 0x6401, 0xB8EA, 0x6208, 0xB8EB, 0x9E3D, + 0xB8EC, 0x80F3, 0xB8ED, 0x7599, 0xB8EE, 0x5272, 0xB8EF, 0x9769, 0xB8F0, 0x845B, 0xB8F1, 0x683C, 0xB8F2, 0x86E4, 0xB8F3, 0x9601, + 0xB8F4, 0x9694, 0xB8F5, 0x94EC, 0xB8F6, 0x4E2A, 0xB8F7, 0x5404, 0xB8F8, 0x7ED9, 0xB8F9, 0x6839, 0xB8FA, 0x8DDF, 0xB8FB, 0x8015, + 0xB8FC, 0x66F4, 0xB8FD, 0x5E9A, 0xB8FE, 0x7FB9, 0xB940, 0x7B2F, 0xB941, 0x7B30, 0xB942, 0x7B32, 0xB943, 0x7B34, 0xB944, 0x7B35, + 0xB945, 0x7B36, 0xB946, 0x7B37, 0xB947, 0x7B39, 0xB948, 0x7B3B, 0xB949, 0x7B3D, 0xB94A, 0x7B3F, 0xB94B, 0x7B40, 0xB94C, 0x7B41, + 0xB94D, 0x7B42, 0xB94E, 0x7B43, 0xB94F, 0x7B44, 0xB950, 0x7B46, 0xB951, 0x7B48, 0xB952, 0x7B4A, 0xB953, 0x7B4D, 0xB954, 0x7B4E, + 0xB955, 0x7B53, 0xB956, 0x7B55, 0xB957, 0x7B57, 0xB958, 0x7B59, 0xB959, 0x7B5C, 0xB95A, 0x7B5E, 0xB95B, 0x7B5F, 0xB95C, 0x7B61, + 0xB95D, 0x7B63, 0xB95E, 0x7B64, 0xB95F, 0x7B65, 0xB960, 0x7B66, 0xB961, 0x7B67, 0xB962, 0x7B68, 0xB963, 0x7B69, 0xB964, 0x7B6A, + 0xB965, 0x7B6B, 0xB966, 0x7B6C, 0xB967, 0x7B6D, 0xB968, 0x7B6F, 0xB969, 0x7B70, 0xB96A, 0x7B73, 0xB96B, 0x7B74, 0xB96C, 0x7B76, + 0xB96D, 0x7B78, 0xB96E, 0x7B7A, 0xB96F, 0x7B7C, 0xB970, 0x7B7D, 0xB971, 0x7B7F, 0xB972, 0x7B81, 0xB973, 0x7B82, 0xB974, 0x7B83, + 0xB975, 0x7B84, 0xB976, 0x7B86, 0xB977, 0x7B87, 0xB978, 0x7B88, 0xB979, 0x7B89, 0xB97A, 0x7B8A, 0xB97B, 0x7B8B, 0xB97C, 0x7B8C, + 0xB97D, 0x7B8E, 0xB97E, 0x7B8F, 0xB980, 0x7B91, 0xB981, 0x7B92, 0xB982, 0x7B93, 0xB983, 0x7B96, 0xB984, 0x7B98, 0xB985, 0x7B99, + 0xB986, 0x7B9A, 0xB987, 0x7B9B, 0xB988, 0x7B9E, 0xB989, 0x7B9F, 0xB98A, 0x7BA0, 0xB98B, 0x7BA3, 0xB98C, 0x7BA4, 0xB98D, 0x7BA5, + 0xB98E, 0x7BAE, 0xB98F, 0x7BAF, 0xB990, 0x7BB0, 0xB991, 0x7BB2, 0xB992, 0x7BB3, 0xB993, 0x7BB5, 0xB994, 0x7BB6, 0xB995, 0x7BB7, + 0xB996, 0x7BB9, 0xB997, 0x7BBA, 0xB998, 0x7BBB, 0xB999, 0x7BBC, 0xB99A, 0x7BBD, 0xB99B, 0x7BBE, 0xB99C, 0x7BBF, 0xB99D, 0x7BC0, + 0xB99E, 0x7BC2, 0xB99F, 0x7BC3, 0xB9A0, 0x7BC4, 0xB9A1, 0x57C2, 0xB9A2, 0x803F, 0xB9A3, 0x6897, 0xB9A4, 0x5DE5, 0xB9A5, 0x653B, + 0xB9A6, 0x529F, 0xB9A7, 0x606D, 0xB9A8, 0x9F9A, 0xB9A9, 0x4F9B, 0xB9AA, 0x8EAC, 0xB9AB, 0x516C, 0xB9AC, 0x5BAB, 0xB9AD, 0x5F13, + 0xB9AE, 0x5DE9, 0xB9AF, 0x6C5E, 0xB9B0, 0x62F1, 0xB9B1, 0x8D21, 0xB9B2, 0x5171, 0xB9B3, 0x94A9, 0xB9B4, 0x52FE, 0xB9B5, 0x6C9F, + 0xB9B6, 0x82DF, 0xB9B7, 0x72D7, 0xB9B8, 0x57A2, 0xB9B9, 0x6784, 0xB9BA, 0x8D2D, 0xB9BB, 0x591F, 0xB9BC, 0x8F9C, 0xB9BD, 0x83C7, + 0xB9BE, 0x5495, 0xB9BF, 0x7B8D, 0xB9C0, 0x4F30, 0xB9C1, 0x6CBD, 0xB9C2, 0x5B64, 0xB9C3, 0x59D1, 0xB9C4, 0x9F13, 0xB9C5, 0x53E4, + 0xB9C6, 0x86CA, 0xB9C7, 0x9AA8, 0xB9C8, 0x8C37, 0xB9C9, 0x80A1, 0xB9CA, 0x6545, 0xB9CB, 0x987E, 0xB9CC, 0x56FA, 0xB9CD, 0x96C7, + 0xB9CE, 0x522E, 0xB9CF, 0x74DC, 0xB9D0, 0x5250, 0xB9D1, 0x5BE1, 0xB9D2, 0x6302, 0xB9D3, 0x8902, 0xB9D4, 0x4E56, 0xB9D5, 0x62D0, + 0xB9D6, 0x602A, 0xB9D7, 0x68FA, 0xB9D8, 0x5173, 0xB9D9, 0x5B98, 0xB9DA, 0x51A0, 0xB9DB, 0x89C2, 0xB9DC, 0x7BA1, 0xB9DD, 0x9986, + 0xB9DE, 0x7F50, 0xB9DF, 0x60EF, 0xB9E0, 0x704C, 0xB9E1, 0x8D2F, 0xB9E2, 0x5149, 0xB9E3, 0x5E7F, 0xB9E4, 0x901B, 0xB9E5, 0x7470, + 0xB9E6, 0x89C4, 0xB9E7, 0x572D, 0xB9E8, 0x7845, 0xB9E9, 0x5F52, 0xB9EA, 0x9F9F, 0xB9EB, 0x95FA, 0xB9EC, 0x8F68, 0xB9ED, 0x9B3C, + 0xB9EE, 0x8BE1, 0xB9EF, 0x7678, 0xB9F0, 0x6842, 0xB9F1, 0x67DC, 0xB9F2, 0x8DEA, 0xB9F3, 0x8D35, 0xB9F4, 0x523D, 0xB9F5, 0x8F8A, + 0xB9F6, 0x6EDA, 0xB9F7, 0x68CD, 0xB9F8, 0x9505, 0xB9F9, 0x90ED, 0xB9FA, 0x56FD, 0xB9FB, 0x679C, 0xB9FC, 0x88F9, 0xB9FD, 0x8FC7, + 0xB9FE, 0x54C8, 0xBA40, 0x7BC5, 0xBA41, 0x7BC8, 0xBA42, 0x7BC9, 0xBA43, 0x7BCA, 0xBA44, 0x7BCB, 0xBA45, 0x7BCD, 0xBA46, 0x7BCE, + 0xBA47, 0x7BCF, 0xBA48, 0x7BD0, 0xBA49, 0x7BD2, 0xBA4A, 0x7BD4, 0xBA4B, 0x7BD5, 0xBA4C, 0x7BD6, 0xBA4D, 0x7BD7, 0xBA4E, 0x7BD8, + 0xBA4F, 0x7BDB, 0xBA50, 0x7BDC, 0xBA51, 0x7BDE, 0xBA52, 0x7BDF, 0xBA53, 0x7BE0, 0xBA54, 0x7BE2, 0xBA55, 0x7BE3, 0xBA56, 0x7BE4, + 0xBA57, 0x7BE7, 0xBA58, 0x7BE8, 0xBA59, 0x7BE9, 0xBA5A, 0x7BEB, 0xBA5B, 0x7BEC, 0xBA5C, 0x7BED, 0xBA5D, 0x7BEF, 0xBA5E, 0x7BF0, + 0xBA5F, 0x7BF2, 0xBA60, 0x7BF3, 0xBA61, 0x7BF4, 0xBA62, 0x7BF5, 0xBA63, 0x7BF6, 0xBA64, 0x7BF8, 0xBA65, 0x7BF9, 0xBA66, 0x7BFA, + 0xBA67, 0x7BFB, 0xBA68, 0x7BFD, 0xBA69, 0x7BFF, 0xBA6A, 0x7C00, 0xBA6B, 0x7C01, 0xBA6C, 0x7C02, 0xBA6D, 0x7C03, 0xBA6E, 0x7C04, + 0xBA6F, 0x7C05, 0xBA70, 0x7C06, 0xBA71, 0x7C08, 0xBA72, 0x7C09, 0xBA73, 0x7C0A, 0xBA74, 0x7C0D, 0xBA75, 0x7C0E, 0xBA76, 0x7C10, + 0xBA77, 0x7C11, 0xBA78, 0x7C12, 0xBA79, 0x7C13, 0xBA7A, 0x7C14, 0xBA7B, 0x7C15, 0xBA7C, 0x7C17, 0xBA7D, 0x7C18, 0xBA7E, 0x7C19, + 0xBA80, 0x7C1A, 0xBA81, 0x7C1B, 0xBA82, 0x7C1C, 0xBA83, 0x7C1D, 0xBA84, 0x7C1E, 0xBA85, 0x7C20, 0xBA86, 0x7C21, 0xBA87, 0x7C22, + 0xBA88, 0x7C23, 0xBA89, 0x7C24, 0xBA8A, 0x7C25, 0xBA8B, 0x7C28, 0xBA8C, 0x7C29, 0xBA8D, 0x7C2B, 0xBA8E, 0x7C2C, 0xBA8F, 0x7C2D, + 0xBA90, 0x7C2E, 0xBA91, 0x7C2F, 0xBA92, 0x7C30, 0xBA93, 0x7C31, 0xBA94, 0x7C32, 0xBA95, 0x7C33, 0xBA96, 0x7C34, 0xBA97, 0x7C35, + 0xBA98, 0x7C36, 0xBA99, 0x7C37, 0xBA9A, 0x7C39, 0xBA9B, 0x7C3A, 0xBA9C, 0x7C3B, 0xBA9D, 0x7C3C, 0xBA9E, 0x7C3D, 0xBA9F, 0x7C3E, + 0xBAA0, 0x7C42, 0xBAA1, 0x9AB8, 0xBAA2, 0x5B69, 0xBAA3, 0x6D77, 0xBAA4, 0x6C26, 0xBAA5, 0x4EA5, 0xBAA6, 0x5BB3, 0xBAA7, 0x9A87, + 0xBAA8, 0x9163, 0xBAA9, 0x61A8, 0xBAAA, 0x90AF, 0xBAAB, 0x97E9, 0xBAAC, 0x542B, 0xBAAD, 0x6DB5, 0xBAAE, 0x5BD2, 0xBAAF, 0x51FD, + 0xBAB0, 0x558A, 0xBAB1, 0x7F55, 0xBAB2, 0x7FF0, 0xBAB3, 0x64BC, 0xBAB4, 0x634D, 0xBAB5, 0x65F1, 0xBAB6, 0x61BE, 0xBAB7, 0x608D, + 0xBAB8, 0x710A, 0xBAB9, 0x6C57, 0xBABA, 0x6C49, 0xBABB, 0x592F, 0xBABC, 0x676D, 0xBABD, 0x822A, 0xBABE, 0x58D5, 0xBABF, 0x568E, + 0xBAC0, 0x8C6A, 0xBAC1, 0x6BEB, 0xBAC2, 0x90DD, 0xBAC3, 0x597D, 0xBAC4, 0x8017, 0xBAC5, 0x53F7, 0xBAC6, 0x6D69, 0xBAC7, 0x5475, + 0xBAC8, 0x559D, 0xBAC9, 0x8377, 0xBACA, 0x83CF, 0xBACB, 0x6838, 0xBACC, 0x79BE, 0xBACD, 0x548C, 0xBACE, 0x4F55, 0xBACF, 0x5408, + 0xBAD0, 0x76D2, 0xBAD1, 0x8C89, 0xBAD2, 0x9602, 0xBAD3, 0x6CB3, 0xBAD4, 0x6DB8, 0xBAD5, 0x8D6B, 0xBAD6, 0x8910, 0xBAD7, 0x9E64, + 0xBAD8, 0x8D3A, 0xBAD9, 0x563F, 0xBADA, 0x9ED1, 0xBADB, 0x75D5, 0xBADC, 0x5F88, 0xBADD, 0x72E0, 0xBADE, 0x6068, 0xBADF, 0x54FC, + 0xBAE0, 0x4EA8, 0xBAE1, 0x6A2A, 0xBAE2, 0x8861, 0xBAE3, 0x6052, 0xBAE4, 0x8F70, 0xBAE5, 0x54C4, 0xBAE6, 0x70D8, 0xBAE7, 0x8679, + 0xBAE8, 0x9E3F, 0xBAE9, 0x6D2A, 0xBAEA, 0x5B8F, 0xBAEB, 0x5F18, 0xBAEC, 0x7EA2, 0xBAED, 0x5589, 0xBAEE, 0x4FAF, 0xBAEF, 0x7334, + 0xBAF0, 0x543C, 0xBAF1, 0x539A, 0xBAF2, 0x5019, 0xBAF3, 0x540E, 0xBAF4, 0x547C, 0xBAF5, 0x4E4E, 0xBAF6, 0x5FFD, 0xBAF7, 0x745A, + 0xBAF8, 0x58F6, 0xBAF9, 0x846B, 0xBAFA, 0x80E1, 0xBAFB, 0x8774, 0xBAFC, 0x72D0, 0xBAFD, 0x7CCA, 0xBAFE, 0x6E56, 0xBB40, 0x7C43, + 0xBB41, 0x7C44, 0xBB42, 0x7C45, 0xBB43, 0x7C46, 0xBB44, 0x7C47, 0xBB45, 0x7C48, 0xBB46, 0x7C49, 0xBB47, 0x7C4A, 0xBB48, 0x7C4B, + 0xBB49, 0x7C4C, 0xBB4A, 0x7C4E, 0xBB4B, 0x7C4F, 0xBB4C, 0x7C50, 0xBB4D, 0x7C51, 0xBB4E, 0x7C52, 0xBB4F, 0x7C53, 0xBB50, 0x7C54, + 0xBB51, 0x7C55, 0xBB52, 0x7C56, 0xBB53, 0x7C57, 0xBB54, 0x7C58, 0xBB55, 0x7C59, 0xBB56, 0x7C5A, 0xBB57, 0x7C5B, 0xBB58, 0x7C5C, + 0xBB59, 0x7C5D, 0xBB5A, 0x7C5E, 0xBB5B, 0x7C5F, 0xBB5C, 0x7C60, 0xBB5D, 0x7C61, 0xBB5E, 0x7C62, 0xBB5F, 0x7C63, 0xBB60, 0x7C64, + 0xBB61, 0x7C65, 0xBB62, 0x7C66, 0xBB63, 0x7C67, 0xBB64, 0x7C68, 0xBB65, 0x7C69, 0xBB66, 0x7C6A, 0xBB67, 0x7C6B, 0xBB68, 0x7C6C, + 0xBB69, 0x7C6D, 0xBB6A, 0x7C6E, 0xBB6B, 0x7C6F, 0xBB6C, 0x7C70, 0xBB6D, 0x7C71, 0xBB6E, 0x7C72, 0xBB6F, 0x7C75, 0xBB70, 0x7C76, + 0xBB71, 0x7C77, 0xBB72, 0x7C78, 0xBB73, 0x7C79, 0xBB74, 0x7C7A, 0xBB75, 0x7C7E, 0xBB76, 0x7C7F, 0xBB77, 0x7C80, 0xBB78, 0x7C81, + 0xBB79, 0x7C82, 0xBB7A, 0x7C83, 0xBB7B, 0x7C84, 0xBB7C, 0x7C85, 0xBB7D, 0x7C86, 0xBB7E, 0x7C87, 0xBB80, 0x7C88, 0xBB81, 0x7C8A, + 0xBB82, 0x7C8B, 0xBB83, 0x7C8C, 0xBB84, 0x7C8D, 0xBB85, 0x7C8E, 0xBB86, 0x7C8F, 0xBB87, 0x7C90, 0xBB88, 0x7C93, 0xBB89, 0x7C94, + 0xBB8A, 0x7C96, 0xBB8B, 0x7C99, 0xBB8C, 0x7C9A, 0xBB8D, 0x7C9B, 0xBB8E, 0x7CA0, 0xBB8F, 0x7CA1, 0xBB90, 0x7CA3, 0xBB91, 0x7CA6, + 0xBB92, 0x7CA7, 0xBB93, 0x7CA8, 0xBB94, 0x7CA9, 0xBB95, 0x7CAB, 0xBB96, 0x7CAC, 0xBB97, 0x7CAD, 0xBB98, 0x7CAF, 0xBB99, 0x7CB0, + 0xBB9A, 0x7CB4, 0xBB9B, 0x7CB5, 0xBB9C, 0x7CB6, 0xBB9D, 0x7CB7, 0xBB9E, 0x7CB8, 0xBB9F, 0x7CBA, 0xBBA0, 0x7CBB, 0xBBA1, 0x5F27, + 0xBBA2, 0x864E, 0xBBA3, 0x552C, 0xBBA4, 0x62A4, 0xBBA5, 0x4E92, 0xBBA6, 0x6CAA, 0xBBA7, 0x6237, 0xBBA8, 0x82B1, 0xBBA9, 0x54D7, + 0xBBAA, 0x534E, 0xBBAB, 0x733E, 0xBBAC, 0x6ED1, 0xBBAD, 0x753B, 0xBBAE, 0x5212, 0xBBAF, 0x5316, 0xBBB0, 0x8BDD, 0xBBB1, 0x69D0, + 0xBBB2, 0x5F8A, 0xBBB3, 0x6000, 0xBBB4, 0x6DEE, 0xBBB5, 0x574F, 0xBBB6, 0x6B22, 0xBBB7, 0x73AF, 0xBBB8, 0x6853, 0xBBB9, 0x8FD8, + 0xBBBA, 0x7F13, 0xBBBB, 0x6362, 0xBBBC, 0x60A3, 0xBBBD, 0x5524, 0xBBBE, 0x75EA, 0xBBBF, 0x8C62, 0xBBC0, 0x7115, 0xBBC1, 0x6DA3, + 0xBBC2, 0x5BA6, 0xBBC3, 0x5E7B, 0xBBC4, 0x8352, 0xBBC5, 0x614C, 0xBBC6, 0x9EC4, 0xBBC7, 0x78FA, 0xBBC8, 0x8757, 0xBBC9, 0x7C27, + 0xBBCA, 0x7687, 0xBBCB, 0x51F0, 0xBBCC, 0x60F6, 0xBBCD, 0x714C, 0xBBCE, 0x6643, 0xBBCF, 0x5E4C, 0xBBD0, 0x604D, 0xBBD1, 0x8C0E, + 0xBBD2, 0x7070, 0xBBD3, 0x6325, 0xBBD4, 0x8F89, 0xBBD5, 0x5FBD, 0xBBD6, 0x6062, 0xBBD7, 0x86D4, 0xBBD8, 0x56DE, 0xBBD9, 0x6BC1, + 0xBBDA, 0x6094, 0xBBDB, 0x6167, 0xBBDC, 0x5349, 0xBBDD, 0x60E0, 0xBBDE, 0x6666, 0xBBDF, 0x8D3F, 0xBBE0, 0x79FD, 0xBBE1, 0x4F1A, + 0xBBE2, 0x70E9, 0xBBE3, 0x6C47, 0xBBE4, 0x8BB3, 0xBBE5, 0x8BF2, 0xBBE6, 0x7ED8, 0xBBE7, 0x8364, 0xBBE8, 0x660F, 0xBBE9, 0x5A5A, + 0xBBEA, 0x9B42, 0xBBEB, 0x6D51, 0xBBEC, 0x6DF7, 0xBBED, 0x8C41, 0xBBEE, 0x6D3B, 0xBBEF, 0x4F19, 0xBBF0, 0x706B, 0xBBF1, 0x83B7, + 0xBBF2, 0x6216, 0xBBF3, 0x60D1, 0xBBF4, 0x970D, 0xBBF5, 0x8D27, 0xBBF6, 0x7978, 0xBBF7, 0x51FB, 0xBBF8, 0x573E, 0xBBF9, 0x57FA, + 0xBBFA, 0x673A, 0xBBFB, 0x7578, 0xBBFC, 0x7A3D, 0xBBFD, 0x79EF, 0xBBFE, 0x7B95, 0xBC40, 0x7CBF, 0xBC41, 0x7CC0, 0xBC42, 0x7CC2, + 0xBC43, 0x7CC3, 0xBC44, 0x7CC4, 0xBC45, 0x7CC6, 0xBC46, 0x7CC9, 0xBC47, 0x7CCB, 0xBC48, 0x7CCE, 0xBC49, 0x7CCF, 0xBC4A, 0x7CD0, + 0xBC4B, 0x7CD1, 0xBC4C, 0x7CD2, 0xBC4D, 0x7CD3, 0xBC4E, 0x7CD4, 0xBC4F, 0x7CD8, 0xBC50, 0x7CDA, 0xBC51, 0x7CDB, 0xBC52, 0x7CDD, + 0xBC53, 0x7CDE, 0xBC54, 0x7CE1, 0xBC55, 0x7CE2, 0xBC56, 0x7CE3, 0xBC57, 0x7CE4, 0xBC58, 0x7CE5, 0xBC59, 0x7CE6, 0xBC5A, 0x7CE7, + 0xBC5B, 0x7CE9, 0xBC5C, 0x7CEA, 0xBC5D, 0x7CEB, 0xBC5E, 0x7CEC, 0xBC5F, 0x7CED, 0xBC60, 0x7CEE, 0xBC61, 0x7CF0, 0xBC62, 0x7CF1, + 0xBC63, 0x7CF2, 0xBC64, 0x7CF3, 0xBC65, 0x7CF4, 0xBC66, 0x7CF5, 0xBC67, 0x7CF6, 0xBC68, 0x7CF7, 0xBC69, 0x7CF9, 0xBC6A, 0x7CFA, + 0xBC6B, 0x7CFC, 0xBC6C, 0x7CFD, 0xBC6D, 0x7CFE, 0xBC6E, 0x7CFF, 0xBC6F, 0x7D00, 0xBC70, 0x7D01, 0xBC71, 0x7D02, 0xBC72, 0x7D03, + 0xBC73, 0x7D04, 0xBC74, 0x7D05, 0xBC75, 0x7D06, 0xBC76, 0x7D07, 0xBC77, 0x7D08, 0xBC78, 0x7D09, 0xBC79, 0x7D0B, 0xBC7A, 0x7D0C, + 0xBC7B, 0x7D0D, 0xBC7C, 0x7D0E, 0xBC7D, 0x7D0F, 0xBC7E, 0x7D10, 0xBC80, 0x7D11, 0xBC81, 0x7D12, 0xBC82, 0x7D13, 0xBC83, 0x7D14, + 0xBC84, 0x7D15, 0xBC85, 0x7D16, 0xBC86, 0x7D17, 0xBC87, 0x7D18, 0xBC88, 0x7D19, 0xBC89, 0x7D1A, 0xBC8A, 0x7D1B, 0xBC8B, 0x7D1C, + 0xBC8C, 0x7D1D, 0xBC8D, 0x7D1E, 0xBC8E, 0x7D1F, 0xBC8F, 0x7D21, 0xBC90, 0x7D23, 0xBC91, 0x7D24, 0xBC92, 0x7D25, 0xBC93, 0x7D26, + 0xBC94, 0x7D28, 0xBC95, 0x7D29, 0xBC96, 0x7D2A, 0xBC97, 0x7D2C, 0xBC98, 0x7D2D, 0xBC99, 0x7D2E, 0xBC9A, 0x7D30, 0xBC9B, 0x7D31, + 0xBC9C, 0x7D32, 0xBC9D, 0x7D33, 0xBC9E, 0x7D34, 0xBC9F, 0x7D35, 0xBCA0, 0x7D36, 0xBCA1, 0x808C, 0xBCA2, 0x9965, 0xBCA3, 0x8FF9, + 0xBCA4, 0x6FC0, 0xBCA5, 0x8BA5, 0xBCA6, 0x9E21, 0xBCA7, 0x59EC, 0xBCA8, 0x7EE9, 0xBCA9, 0x7F09, 0xBCAA, 0x5409, 0xBCAB, 0x6781, + 0xBCAC, 0x68D8, 0xBCAD, 0x8F91, 0xBCAE, 0x7C4D, 0xBCAF, 0x96C6, 0xBCB0, 0x53CA, 0xBCB1, 0x6025, 0xBCB2, 0x75BE, 0xBCB3, 0x6C72, + 0xBCB4, 0x5373, 0xBCB5, 0x5AC9, 0xBCB6, 0x7EA7, 0xBCB7, 0x6324, 0xBCB8, 0x51E0, 0xBCB9, 0x810A, 0xBCBA, 0x5DF1, 0xBCBB, 0x84DF, + 0xBCBC, 0x6280, 0xBCBD, 0x5180, 0xBCBE, 0x5B63, 0xBCBF, 0x4F0E, 0xBCC0, 0x796D, 0xBCC1, 0x5242, 0xBCC2, 0x60B8, 0xBCC3, 0x6D4E, + 0xBCC4, 0x5BC4, 0xBCC5, 0x5BC2, 0xBCC6, 0x8BA1, 0xBCC7, 0x8BB0, 0xBCC8, 0x65E2, 0xBCC9, 0x5FCC, 0xBCCA, 0x9645, 0xBCCB, 0x5993, + 0xBCCC, 0x7EE7, 0xBCCD, 0x7EAA, 0xBCCE, 0x5609, 0xBCCF, 0x67B7, 0xBCD0, 0x5939, 0xBCD1, 0x4F73, 0xBCD2, 0x5BB6, 0xBCD3, 0x52A0, + 0xBCD4, 0x835A, 0xBCD5, 0x988A, 0xBCD6, 0x8D3E, 0xBCD7, 0x7532, 0xBCD8, 0x94BE, 0xBCD9, 0x5047, 0xBCDA, 0x7A3C, 0xBCDB, 0x4EF7, + 0xBCDC, 0x67B6, 0xBCDD, 0x9A7E, 0xBCDE, 0x5AC1, 0xBCDF, 0x6B7C, 0xBCE0, 0x76D1, 0xBCE1, 0x575A, 0xBCE2, 0x5C16, 0xBCE3, 0x7B3A, + 0xBCE4, 0x95F4, 0xBCE5, 0x714E, 0xBCE6, 0x517C, 0xBCE7, 0x80A9, 0xBCE8, 0x8270, 0xBCE9, 0x5978, 0xBCEA, 0x7F04, 0xBCEB, 0x8327, + 0xBCEC, 0x68C0, 0xBCED, 0x67EC, 0xBCEE, 0x78B1, 0xBCEF, 0x7877, 0xBCF0, 0x62E3, 0xBCF1, 0x6361, 0xBCF2, 0x7B80, 0xBCF3, 0x4FED, + 0xBCF4, 0x526A, 0xBCF5, 0x51CF, 0xBCF6, 0x8350, 0xBCF7, 0x69DB, 0xBCF8, 0x9274, 0xBCF9, 0x8DF5, 0xBCFA, 0x8D31, 0xBCFB, 0x89C1, + 0xBCFC, 0x952E, 0xBCFD, 0x7BAD, 0xBCFE, 0x4EF6, 0xBD40, 0x7D37, 0xBD41, 0x7D38, 0xBD42, 0x7D39, 0xBD43, 0x7D3A, 0xBD44, 0x7D3B, + 0xBD45, 0x7D3C, 0xBD46, 0x7D3D, 0xBD47, 0x7D3E, 0xBD48, 0x7D3F, 0xBD49, 0x7D40, 0xBD4A, 0x7D41, 0xBD4B, 0x7D42, 0xBD4C, 0x7D43, + 0xBD4D, 0x7D44, 0xBD4E, 0x7D45, 0xBD4F, 0x7D46, 0xBD50, 0x7D47, 0xBD51, 0x7D48, 0xBD52, 0x7D49, 0xBD53, 0x7D4A, 0xBD54, 0x7D4B, + 0xBD55, 0x7D4C, 0xBD56, 0x7D4D, 0xBD57, 0x7D4E, 0xBD58, 0x7D4F, 0xBD59, 0x7D50, 0xBD5A, 0x7D51, 0xBD5B, 0x7D52, 0xBD5C, 0x7D53, + 0xBD5D, 0x7D54, 0xBD5E, 0x7D55, 0xBD5F, 0x7D56, 0xBD60, 0x7D57, 0xBD61, 0x7D58, 0xBD62, 0x7D59, 0xBD63, 0x7D5A, 0xBD64, 0x7D5B, + 0xBD65, 0x7D5C, 0xBD66, 0x7D5D, 0xBD67, 0x7D5E, 0xBD68, 0x7D5F, 0xBD69, 0x7D60, 0xBD6A, 0x7D61, 0xBD6B, 0x7D62, 0xBD6C, 0x7D63, + 0xBD6D, 0x7D64, 0xBD6E, 0x7D65, 0xBD6F, 0x7D66, 0xBD70, 0x7D67, 0xBD71, 0x7D68, 0xBD72, 0x7D69, 0xBD73, 0x7D6A, 0xBD74, 0x7D6B, + 0xBD75, 0x7D6C, 0xBD76, 0x7D6D, 0xBD77, 0x7D6F, 0xBD78, 0x7D70, 0xBD79, 0x7D71, 0xBD7A, 0x7D72, 0xBD7B, 0x7D73, 0xBD7C, 0x7D74, + 0xBD7D, 0x7D75, 0xBD7E, 0x7D76, 0xBD80, 0x7D78, 0xBD81, 0x7D79, 0xBD82, 0x7D7A, 0xBD83, 0x7D7B, 0xBD84, 0x7D7C, 0xBD85, 0x7D7D, + 0xBD86, 0x7D7E, 0xBD87, 0x7D7F, 0xBD88, 0x7D80, 0xBD89, 0x7D81, 0xBD8A, 0x7D82, 0xBD8B, 0x7D83, 0xBD8C, 0x7D84, 0xBD8D, 0x7D85, + 0xBD8E, 0x7D86, 0xBD8F, 0x7D87, 0xBD90, 0x7D88, 0xBD91, 0x7D89, 0xBD92, 0x7D8A, 0xBD93, 0x7D8B, 0xBD94, 0x7D8C, 0xBD95, 0x7D8D, + 0xBD96, 0x7D8E, 0xBD97, 0x7D8F, 0xBD98, 0x7D90, 0xBD99, 0x7D91, 0xBD9A, 0x7D92, 0xBD9B, 0x7D93, 0xBD9C, 0x7D94, 0xBD9D, 0x7D95, + 0xBD9E, 0x7D96, 0xBD9F, 0x7D97, 0xBDA0, 0x7D98, 0xBDA1, 0x5065, 0xBDA2, 0x8230, 0xBDA3, 0x5251, 0xBDA4, 0x996F, 0xBDA5, 0x6E10, + 0xBDA6, 0x6E85, 0xBDA7, 0x6DA7, 0xBDA8, 0x5EFA, 0xBDA9, 0x50F5, 0xBDAA, 0x59DC, 0xBDAB, 0x5C06, 0xBDAC, 0x6D46, 0xBDAD, 0x6C5F, + 0xBDAE, 0x7586, 0xBDAF, 0x848B, 0xBDB0, 0x6868, 0xBDB1, 0x5956, 0xBDB2, 0x8BB2, 0xBDB3, 0x5320, 0xBDB4, 0x9171, 0xBDB5, 0x964D, + 0xBDB6, 0x8549, 0xBDB7, 0x6912, 0xBDB8, 0x7901, 0xBDB9, 0x7126, 0xBDBA, 0x80F6, 0xBDBB, 0x4EA4, 0xBDBC, 0x90CA, 0xBDBD, 0x6D47, + 0xBDBE, 0x9A84, 0xBDBF, 0x5A07, 0xBDC0, 0x56BC, 0xBDC1, 0x6405, 0xBDC2, 0x94F0, 0xBDC3, 0x77EB, 0xBDC4, 0x4FA5, 0xBDC5, 0x811A, + 0xBDC6, 0x72E1, 0xBDC7, 0x89D2, 0xBDC8, 0x997A, 0xBDC9, 0x7F34, 0xBDCA, 0x7EDE, 0xBDCB, 0x527F, 0xBDCC, 0x6559, 0xBDCD, 0x9175, + 0xBDCE, 0x8F7F, 0xBDCF, 0x8F83, 0xBDD0, 0x53EB, 0xBDD1, 0x7A96, 0xBDD2, 0x63ED, 0xBDD3, 0x63A5, 0xBDD4, 0x7686, 0xBDD5, 0x79F8, + 0xBDD6, 0x8857, 0xBDD7, 0x9636, 0xBDD8, 0x622A, 0xBDD9, 0x52AB, 0xBDDA, 0x8282, 0xBDDB, 0x6854, 0xBDDC, 0x6770, 0xBDDD, 0x6377, + 0xBDDE, 0x776B, 0xBDDF, 0x7AED, 0xBDE0, 0x6D01, 0xBDE1, 0x7ED3, 0xBDE2, 0x89E3, 0xBDE3, 0x59D0, 0xBDE4, 0x6212, 0xBDE5, 0x85C9, + 0xBDE6, 0x82A5, 0xBDE7, 0x754C, 0xBDE8, 0x501F, 0xBDE9, 0x4ECB, 0xBDEA, 0x75A5, 0xBDEB, 0x8BEB, 0xBDEC, 0x5C4A, 0xBDED, 0x5DFE, + 0xBDEE, 0x7B4B, 0xBDEF, 0x65A4, 0xBDF0, 0x91D1, 0xBDF1, 0x4ECA, 0xBDF2, 0x6D25, 0xBDF3, 0x895F, 0xBDF4, 0x7D27, 0xBDF5, 0x9526, + 0xBDF6, 0x4EC5, 0xBDF7, 0x8C28, 0xBDF8, 0x8FDB, 0xBDF9, 0x9773, 0xBDFA, 0x664B, 0xBDFB, 0x7981, 0xBDFC, 0x8FD1, 0xBDFD, 0x70EC, + 0xBDFE, 0x6D78, 0xBE40, 0x7D99, 0xBE41, 0x7D9A, 0xBE42, 0x7D9B, 0xBE43, 0x7D9C, 0xBE44, 0x7D9D, 0xBE45, 0x7D9E, 0xBE46, 0x7D9F, + 0xBE47, 0x7DA0, 0xBE48, 0x7DA1, 0xBE49, 0x7DA2, 0xBE4A, 0x7DA3, 0xBE4B, 0x7DA4, 0xBE4C, 0x7DA5, 0xBE4D, 0x7DA7, 0xBE4E, 0x7DA8, + 0xBE4F, 0x7DA9, 0xBE50, 0x7DAA, 0xBE51, 0x7DAB, 0xBE52, 0x7DAC, 0xBE53, 0x7DAD, 0xBE54, 0x7DAF, 0xBE55, 0x7DB0, 0xBE56, 0x7DB1, + 0xBE57, 0x7DB2, 0xBE58, 0x7DB3, 0xBE59, 0x7DB4, 0xBE5A, 0x7DB5, 0xBE5B, 0x7DB6, 0xBE5C, 0x7DB7, 0xBE5D, 0x7DB8, 0xBE5E, 0x7DB9, + 0xBE5F, 0x7DBA, 0xBE60, 0x7DBB, 0xBE61, 0x7DBC, 0xBE62, 0x7DBD, 0xBE63, 0x7DBE, 0xBE64, 0x7DBF, 0xBE65, 0x7DC0, 0xBE66, 0x7DC1, + 0xBE67, 0x7DC2, 0xBE68, 0x7DC3, 0xBE69, 0x7DC4, 0xBE6A, 0x7DC5, 0xBE6B, 0x7DC6, 0xBE6C, 0x7DC7, 0xBE6D, 0x7DC8, 0xBE6E, 0x7DC9, + 0xBE6F, 0x7DCA, 0xBE70, 0x7DCB, 0xBE71, 0x7DCC, 0xBE72, 0x7DCD, 0xBE73, 0x7DCE, 0xBE74, 0x7DCF, 0xBE75, 0x7DD0, 0xBE76, 0x7DD1, + 0xBE77, 0x7DD2, 0xBE78, 0x7DD3, 0xBE79, 0x7DD4, 0xBE7A, 0x7DD5, 0xBE7B, 0x7DD6, 0xBE7C, 0x7DD7, 0xBE7D, 0x7DD8, 0xBE7E, 0x7DD9, + 0xBE80, 0x7DDA, 0xBE81, 0x7DDB, 0xBE82, 0x7DDC, 0xBE83, 0x7DDD, 0xBE84, 0x7DDE, 0xBE85, 0x7DDF, 0xBE86, 0x7DE0, 0xBE87, 0x7DE1, + 0xBE88, 0x7DE2, 0xBE89, 0x7DE3, 0xBE8A, 0x7DE4, 0xBE8B, 0x7DE5, 0xBE8C, 0x7DE6, 0xBE8D, 0x7DE7, 0xBE8E, 0x7DE8, 0xBE8F, 0x7DE9, + 0xBE90, 0x7DEA, 0xBE91, 0x7DEB, 0xBE92, 0x7DEC, 0xBE93, 0x7DED, 0xBE94, 0x7DEE, 0xBE95, 0x7DEF, 0xBE96, 0x7DF0, 0xBE97, 0x7DF1, + 0xBE98, 0x7DF2, 0xBE99, 0x7DF3, 0xBE9A, 0x7DF4, 0xBE9B, 0x7DF5, 0xBE9C, 0x7DF6, 0xBE9D, 0x7DF7, 0xBE9E, 0x7DF8, 0xBE9F, 0x7DF9, + 0xBEA0, 0x7DFA, 0xBEA1, 0x5C3D, 0xBEA2, 0x52B2, 0xBEA3, 0x8346, 0xBEA4, 0x5162, 0xBEA5, 0x830E, 0xBEA6, 0x775B, 0xBEA7, 0x6676, + 0xBEA8, 0x9CB8, 0xBEA9, 0x4EAC, 0xBEAA, 0x60CA, 0xBEAB, 0x7CBE, 0xBEAC, 0x7CB3, 0xBEAD, 0x7ECF, 0xBEAE, 0x4E95, 0xBEAF, 0x8B66, + 0xBEB0, 0x666F, 0xBEB1, 0x9888, 0xBEB2, 0x9759, 0xBEB3, 0x5883, 0xBEB4, 0x656C, 0xBEB5, 0x955C, 0xBEB6, 0x5F84, 0xBEB7, 0x75C9, + 0xBEB8, 0x9756, 0xBEB9, 0x7ADF, 0xBEBA, 0x7ADE, 0xBEBB, 0x51C0, 0xBEBC, 0x70AF, 0xBEBD, 0x7A98, 0xBEBE, 0x63EA, 0xBEBF, 0x7A76, + 0xBEC0, 0x7EA0, 0xBEC1, 0x7396, 0xBEC2, 0x97ED, 0xBEC3, 0x4E45, 0xBEC4, 0x7078, 0xBEC5, 0x4E5D, 0xBEC6, 0x9152, 0xBEC7, 0x53A9, + 0xBEC8, 0x6551, 0xBEC9, 0x65E7, 0xBECA, 0x81FC, 0xBECB, 0x8205, 0xBECC, 0x548E, 0xBECD, 0x5C31, 0xBECE, 0x759A, 0xBECF, 0x97A0, + 0xBED0, 0x62D8, 0xBED1, 0x72D9, 0xBED2, 0x75BD, 0xBED3, 0x5C45, 0xBED4, 0x9A79, 0xBED5, 0x83CA, 0xBED6, 0x5C40, 0xBED7, 0x5480, + 0xBED8, 0x77E9, 0xBED9, 0x4E3E, 0xBEDA, 0x6CAE, 0xBEDB, 0x805A, 0xBEDC, 0x62D2, 0xBEDD, 0x636E, 0xBEDE, 0x5DE8, 0xBEDF, 0x5177, + 0xBEE0, 0x8DDD, 0xBEE1, 0x8E1E, 0xBEE2, 0x952F, 0xBEE3, 0x4FF1, 0xBEE4, 0x53E5, 0xBEE5, 0x60E7, 0xBEE6, 0x70AC, 0xBEE7, 0x5267, + 0xBEE8, 0x6350, 0xBEE9, 0x9E43, 0xBEEA, 0x5A1F, 0xBEEB, 0x5026, 0xBEEC, 0x7737, 0xBEED, 0x5377, 0xBEEE, 0x7EE2, 0xBEEF, 0x6485, + 0xBEF0, 0x652B, 0xBEF1, 0x6289, 0xBEF2, 0x6398, 0xBEF3, 0x5014, 0xBEF4, 0x7235, 0xBEF5, 0x89C9, 0xBEF6, 0x51B3, 0xBEF7, 0x8BC0, + 0xBEF8, 0x7EDD, 0xBEF9, 0x5747, 0xBEFA, 0x83CC, 0xBEFB, 0x94A7, 0xBEFC, 0x519B, 0xBEFD, 0x541B, 0xBEFE, 0x5CFB, 0xBF40, 0x7DFB, + 0xBF41, 0x7DFC, 0xBF42, 0x7DFD, 0xBF43, 0x7DFE, 0xBF44, 0x7DFF, 0xBF45, 0x7E00, 0xBF46, 0x7E01, 0xBF47, 0x7E02, 0xBF48, 0x7E03, + 0xBF49, 0x7E04, 0xBF4A, 0x7E05, 0xBF4B, 0x7E06, 0xBF4C, 0x7E07, 0xBF4D, 0x7E08, 0xBF4E, 0x7E09, 0xBF4F, 0x7E0A, 0xBF50, 0x7E0B, + 0xBF51, 0x7E0C, 0xBF52, 0x7E0D, 0xBF53, 0x7E0E, 0xBF54, 0x7E0F, 0xBF55, 0x7E10, 0xBF56, 0x7E11, 0xBF57, 0x7E12, 0xBF58, 0x7E13, + 0xBF59, 0x7E14, 0xBF5A, 0x7E15, 0xBF5B, 0x7E16, 0xBF5C, 0x7E17, 0xBF5D, 0x7E18, 0xBF5E, 0x7E19, 0xBF5F, 0x7E1A, 0xBF60, 0x7E1B, + 0xBF61, 0x7E1C, 0xBF62, 0x7E1D, 0xBF63, 0x7E1E, 0xBF64, 0x7E1F, 0xBF65, 0x7E20, 0xBF66, 0x7E21, 0xBF67, 0x7E22, 0xBF68, 0x7E23, + 0xBF69, 0x7E24, 0xBF6A, 0x7E25, 0xBF6B, 0x7E26, 0xBF6C, 0x7E27, 0xBF6D, 0x7E28, 0xBF6E, 0x7E29, 0xBF6F, 0x7E2A, 0xBF70, 0x7E2B, + 0xBF71, 0x7E2C, 0xBF72, 0x7E2D, 0xBF73, 0x7E2E, 0xBF74, 0x7E2F, 0xBF75, 0x7E30, 0xBF76, 0x7E31, 0xBF77, 0x7E32, 0xBF78, 0x7E33, + 0xBF79, 0x7E34, 0xBF7A, 0x7E35, 0xBF7B, 0x7E36, 0xBF7C, 0x7E37, 0xBF7D, 0x7E38, 0xBF7E, 0x7E39, 0xBF80, 0x7E3A, 0xBF81, 0x7E3C, + 0xBF82, 0x7E3D, 0xBF83, 0x7E3E, 0xBF84, 0x7E3F, 0xBF85, 0x7E40, 0xBF86, 0x7E42, 0xBF87, 0x7E43, 0xBF88, 0x7E44, 0xBF89, 0x7E45, + 0xBF8A, 0x7E46, 0xBF8B, 0x7E48, 0xBF8C, 0x7E49, 0xBF8D, 0x7E4A, 0xBF8E, 0x7E4B, 0xBF8F, 0x7E4C, 0xBF90, 0x7E4D, 0xBF91, 0x7E4E, + 0xBF92, 0x7E4F, 0xBF93, 0x7E50, 0xBF94, 0x7E51, 0xBF95, 0x7E52, 0xBF96, 0x7E53, 0xBF97, 0x7E54, 0xBF98, 0x7E55, 0xBF99, 0x7E56, + 0xBF9A, 0x7E57, 0xBF9B, 0x7E58, 0xBF9C, 0x7E59, 0xBF9D, 0x7E5A, 0xBF9E, 0x7E5B, 0xBF9F, 0x7E5C, 0xBFA0, 0x7E5D, 0xBFA1, 0x4FCA, + 0xBFA2, 0x7AE3, 0xBFA3, 0x6D5A, 0xBFA4, 0x90E1, 0xBFA5, 0x9A8F, 0xBFA6, 0x5580, 0xBFA7, 0x5496, 0xBFA8, 0x5361, 0xBFA9, 0x54AF, + 0xBFAA, 0x5F00, 0xBFAB, 0x63E9, 0xBFAC, 0x6977, 0xBFAD, 0x51EF, 0xBFAE, 0x6168, 0xBFAF, 0x520A, 0xBFB0, 0x582A, 0xBFB1, 0x52D8, + 0xBFB2, 0x574E, 0xBFB3, 0x780D, 0xBFB4, 0x770B, 0xBFB5, 0x5EB7, 0xBFB6, 0x6177, 0xBFB7, 0x7CE0, 0xBFB8, 0x625B, 0xBFB9, 0x6297, + 0xBFBA, 0x4EA2, 0xBFBB, 0x7095, 0xBFBC, 0x8003, 0xBFBD, 0x62F7, 0xBFBE, 0x70E4, 0xBFBF, 0x9760, 0xBFC0, 0x5777, 0xBFC1, 0x82DB, + 0xBFC2, 0x67EF, 0xBFC3, 0x68F5, 0xBFC4, 0x78D5, 0xBFC5, 0x9897, 0xBFC6, 0x79D1, 0xBFC7, 0x58F3, 0xBFC8, 0x54B3, 0xBFC9, 0x53EF, + 0xBFCA, 0x6E34, 0xBFCB, 0x514B, 0xBFCC, 0x523B, 0xBFCD, 0x5BA2, 0xBFCE, 0x8BFE, 0xBFCF, 0x80AF, 0xBFD0, 0x5543, 0xBFD1, 0x57A6, + 0xBFD2, 0x6073, 0xBFD3, 0x5751, 0xBFD4, 0x542D, 0xBFD5, 0x7A7A, 0xBFD6, 0x6050, 0xBFD7, 0x5B54, 0xBFD8, 0x63A7, 0xBFD9, 0x62A0, + 0xBFDA, 0x53E3, 0xBFDB, 0x6263, 0xBFDC, 0x5BC7, 0xBFDD, 0x67AF, 0xBFDE, 0x54ED, 0xBFDF, 0x7A9F, 0xBFE0, 0x82E6, 0xBFE1, 0x9177, + 0xBFE2, 0x5E93, 0xBFE3, 0x88E4, 0xBFE4, 0x5938, 0xBFE5, 0x57AE, 0xBFE6, 0x630E, 0xBFE7, 0x8DE8, 0xBFE8, 0x80EF, 0xBFE9, 0x5757, + 0xBFEA, 0x7B77, 0xBFEB, 0x4FA9, 0xBFEC, 0x5FEB, 0xBFED, 0x5BBD, 0xBFEE, 0x6B3E, 0xBFEF, 0x5321, 0xBFF0, 0x7B50, 0xBFF1, 0x72C2, + 0xBFF2, 0x6846, 0xBFF3, 0x77FF, 0xBFF4, 0x7736, 0xBFF5, 0x65F7, 0xBFF6, 0x51B5, 0xBFF7, 0x4E8F, 0xBFF8, 0x76D4, 0xBFF9, 0x5CBF, + 0xBFFA, 0x7AA5, 0xBFFB, 0x8475, 0xBFFC, 0x594E, 0xBFFD, 0x9B41, 0xBFFE, 0x5080, 0xC040, 0x7E5E, 0xC041, 0x7E5F, 0xC042, 0x7E60, + 0xC043, 0x7E61, 0xC044, 0x7E62, 0xC045, 0x7E63, 0xC046, 0x7E64, 0xC047, 0x7E65, 0xC048, 0x7E66, 0xC049, 0x7E67, 0xC04A, 0x7E68, + 0xC04B, 0x7E69, 0xC04C, 0x7E6A, 0xC04D, 0x7E6B, 0xC04E, 0x7E6C, 0xC04F, 0x7E6D, 0xC050, 0x7E6E, 0xC051, 0x7E6F, 0xC052, 0x7E70, + 0xC053, 0x7E71, 0xC054, 0x7E72, 0xC055, 0x7E73, 0xC056, 0x7E74, 0xC057, 0x7E75, 0xC058, 0x7E76, 0xC059, 0x7E77, 0xC05A, 0x7E78, + 0xC05B, 0x7E79, 0xC05C, 0x7E7A, 0xC05D, 0x7E7B, 0xC05E, 0x7E7C, 0xC05F, 0x7E7D, 0xC060, 0x7E7E, 0xC061, 0x7E7F, 0xC062, 0x7E80, + 0xC063, 0x7E81, 0xC064, 0x7E83, 0xC065, 0x7E84, 0xC066, 0x7E85, 0xC067, 0x7E86, 0xC068, 0x7E87, 0xC069, 0x7E88, 0xC06A, 0x7E89, + 0xC06B, 0x7E8A, 0xC06C, 0x7E8B, 0xC06D, 0x7E8C, 0xC06E, 0x7E8D, 0xC06F, 0x7E8E, 0xC070, 0x7E8F, 0xC071, 0x7E90, 0xC072, 0x7E91, + 0xC073, 0x7E92, 0xC074, 0x7E93, 0xC075, 0x7E94, 0xC076, 0x7E95, 0xC077, 0x7E96, 0xC078, 0x7E97, 0xC079, 0x7E98, 0xC07A, 0x7E99, + 0xC07B, 0x7E9A, 0xC07C, 0x7E9C, 0xC07D, 0x7E9D, 0xC07E, 0x7E9E, 0xC080, 0x7EAE, 0xC081, 0x7EB4, 0xC082, 0x7EBB, 0xC083, 0x7EBC, + 0xC084, 0x7ED6, 0xC085, 0x7EE4, 0xC086, 0x7EEC, 0xC087, 0x7EF9, 0xC088, 0x7F0A, 0xC089, 0x7F10, 0xC08A, 0x7F1E, 0xC08B, 0x7F37, + 0xC08C, 0x7F39, 0xC08D, 0x7F3B, 0xC08E, 0x7F3C, 0xC08F, 0x7F3D, 0xC090, 0x7F3E, 0xC091, 0x7F3F, 0xC092, 0x7F40, 0xC093, 0x7F41, + 0xC094, 0x7F43, 0xC095, 0x7F46, 0xC096, 0x7F47, 0xC097, 0x7F48, 0xC098, 0x7F49, 0xC099, 0x7F4A, 0xC09A, 0x7F4B, 0xC09B, 0x7F4C, + 0xC09C, 0x7F4D, 0xC09D, 0x7F4E, 0xC09E, 0x7F4F, 0xC09F, 0x7F52, 0xC0A0, 0x7F53, 0xC0A1, 0x9988, 0xC0A2, 0x6127, 0xC0A3, 0x6E83, + 0xC0A4, 0x5764, 0xC0A5, 0x6606, 0xC0A6, 0x6346, 0xC0A7, 0x56F0, 0xC0A8, 0x62EC, 0xC0A9, 0x6269, 0xC0AA, 0x5ED3, 0xC0AB, 0x9614, + 0xC0AC, 0x5783, 0xC0AD, 0x62C9, 0xC0AE, 0x5587, 0xC0AF, 0x8721, 0xC0B0, 0x814A, 0xC0B1, 0x8FA3, 0xC0B2, 0x5566, 0xC0B3, 0x83B1, + 0xC0B4, 0x6765, 0xC0B5, 0x8D56, 0xC0B6, 0x84DD, 0xC0B7, 0x5A6A, 0xC0B8, 0x680F, 0xC0B9, 0x62E6, 0xC0BA, 0x7BEE, 0xC0BB, 0x9611, + 0xC0BC, 0x5170, 0xC0BD, 0x6F9C, 0xC0BE, 0x8C30, 0xC0BF, 0x63FD, 0xC0C0, 0x89C8, 0xC0C1, 0x61D2, 0xC0C2, 0x7F06, 0xC0C3, 0x70C2, + 0xC0C4, 0x6EE5, 0xC0C5, 0x7405, 0xC0C6, 0x6994, 0xC0C7, 0x72FC, 0xC0C8, 0x5ECA, 0xC0C9, 0x90CE, 0xC0CA, 0x6717, 0xC0CB, 0x6D6A, + 0xC0CC, 0x635E, 0xC0CD, 0x52B3, 0xC0CE, 0x7262, 0xC0CF, 0x8001, 0xC0D0, 0x4F6C, 0xC0D1, 0x59E5, 0xC0D2, 0x916A, 0xC0D3, 0x70D9, + 0xC0D4, 0x6D9D, 0xC0D5, 0x52D2, 0xC0D6, 0x4E50, 0xC0D7, 0x96F7, 0xC0D8, 0x956D, 0xC0D9, 0x857E, 0xC0DA, 0x78CA, 0xC0DB, 0x7D2F, + 0xC0DC, 0x5121, 0xC0DD, 0x5792, 0xC0DE, 0x64C2, 0xC0DF, 0x808B, 0xC0E0, 0x7C7B, 0xC0E1, 0x6CEA, 0xC0E2, 0x68F1, 0xC0E3, 0x695E, + 0xC0E4, 0x51B7, 0xC0E5, 0x5398, 0xC0E6, 0x68A8, 0xC0E7, 0x7281, 0xC0E8, 0x9ECE, 0xC0E9, 0x7BF1, 0xC0EA, 0x72F8, 0xC0EB, 0x79BB, + 0xC0EC, 0x6F13, 0xC0ED, 0x7406, 0xC0EE, 0x674E, 0xC0EF, 0x91CC, 0xC0F0, 0x9CA4, 0xC0F1, 0x793C, 0xC0F2, 0x8389, 0xC0F3, 0x8354, + 0xC0F4, 0x540F, 0xC0F5, 0x6817, 0xC0F6, 0x4E3D, 0xC0F7, 0x5389, 0xC0F8, 0x52B1, 0xC0F9, 0x783E, 0xC0FA, 0x5386, 0xC0FB, 0x5229, + 0xC0FC, 0x5088, 0xC0FD, 0x4F8B, 0xC0FE, 0x4FD0, 0xC140, 0x7F56, 0xC141, 0x7F59, 0xC142, 0x7F5B, 0xC143, 0x7F5C, 0xC144, 0x7F5D, + 0xC145, 0x7F5E, 0xC146, 0x7F60, 0xC147, 0x7F63, 0xC148, 0x7F64, 0xC149, 0x7F65, 0xC14A, 0x7F66, 0xC14B, 0x7F67, 0xC14C, 0x7F6B, + 0xC14D, 0x7F6C, 0xC14E, 0x7F6D, 0xC14F, 0x7F6F, 0xC150, 0x7F70, 0xC151, 0x7F73, 0xC152, 0x7F75, 0xC153, 0x7F76, 0xC154, 0x7F77, + 0xC155, 0x7F78, 0xC156, 0x7F7A, 0xC157, 0x7F7B, 0xC158, 0x7F7C, 0xC159, 0x7F7D, 0xC15A, 0x7F7F, 0xC15B, 0x7F80, 0xC15C, 0x7F82, + 0xC15D, 0x7F83, 0xC15E, 0x7F84, 0xC15F, 0x7F85, 0xC160, 0x7F86, 0xC161, 0x7F87, 0xC162, 0x7F88, 0xC163, 0x7F89, 0xC164, 0x7F8B, + 0xC165, 0x7F8D, 0xC166, 0x7F8F, 0xC167, 0x7F90, 0xC168, 0x7F91, 0xC169, 0x7F92, 0xC16A, 0x7F93, 0xC16B, 0x7F95, 0xC16C, 0x7F96, + 0xC16D, 0x7F97, 0xC16E, 0x7F98, 0xC16F, 0x7F99, 0xC170, 0x7F9B, 0xC171, 0x7F9C, 0xC172, 0x7FA0, 0xC173, 0x7FA2, 0xC174, 0x7FA3, + 0xC175, 0x7FA5, 0xC176, 0x7FA6, 0xC177, 0x7FA8, 0xC178, 0x7FA9, 0xC179, 0x7FAA, 0xC17A, 0x7FAB, 0xC17B, 0x7FAC, 0xC17C, 0x7FAD, + 0xC17D, 0x7FAE, 0xC17E, 0x7FB1, 0xC180, 0x7FB3, 0xC181, 0x7FB4, 0xC182, 0x7FB5, 0xC183, 0x7FB6, 0xC184, 0x7FB7, 0xC185, 0x7FBA, + 0xC186, 0x7FBB, 0xC187, 0x7FBE, 0xC188, 0x7FC0, 0xC189, 0x7FC2, 0xC18A, 0x7FC3, 0xC18B, 0x7FC4, 0xC18C, 0x7FC6, 0xC18D, 0x7FC7, + 0xC18E, 0x7FC8, 0xC18F, 0x7FC9, 0xC190, 0x7FCB, 0xC191, 0x7FCD, 0xC192, 0x7FCF, 0xC193, 0x7FD0, 0xC194, 0x7FD1, 0xC195, 0x7FD2, + 0xC196, 0x7FD3, 0xC197, 0x7FD6, 0xC198, 0x7FD7, 0xC199, 0x7FD9, 0xC19A, 0x7FDA, 0xC19B, 0x7FDB, 0xC19C, 0x7FDC, 0xC19D, 0x7FDD, + 0xC19E, 0x7FDE, 0xC19F, 0x7FE2, 0xC1A0, 0x7FE3, 0xC1A1, 0x75E2, 0xC1A2, 0x7ACB, 0xC1A3, 0x7C92, 0xC1A4, 0x6CA5, 0xC1A5, 0x96B6, + 0xC1A6, 0x529B, 0xC1A7, 0x7483, 0xC1A8, 0x54E9, 0xC1A9, 0x4FE9, 0xC1AA, 0x8054, 0xC1AB, 0x83B2, 0xC1AC, 0x8FDE, 0xC1AD, 0x9570, + 0xC1AE, 0x5EC9, 0xC1AF, 0x601C, 0xC1B0, 0x6D9F, 0xC1B1, 0x5E18, 0xC1B2, 0x655B, 0xC1B3, 0x8138, 0xC1B4, 0x94FE, 0xC1B5, 0x604B, + 0xC1B6, 0x70BC, 0xC1B7, 0x7EC3, 0xC1B8, 0x7CAE, 0xC1B9, 0x51C9, 0xC1BA, 0x6881, 0xC1BB, 0x7CB1, 0xC1BC, 0x826F, 0xC1BD, 0x4E24, + 0xC1BE, 0x8F86, 0xC1BF, 0x91CF, 0xC1C0, 0x667E, 0xC1C1, 0x4EAE, 0xC1C2, 0x8C05, 0xC1C3, 0x64A9, 0xC1C4, 0x804A, 0xC1C5, 0x50DA, + 0xC1C6, 0x7597, 0xC1C7, 0x71CE, 0xC1C8, 0x5BE5, 0xC1C9, 0x8FBD, 0xC1CA, 0x6F66, 0xC1CB, 0x4E86, 0xC1CC, 0x6482, 0xC1CD, 0x9563, + 0xC1CE, 0x5ED6, 0xC1CF, 0x6599, 0xC1D0, 0x5217, 0xC1D1, 0x88C2, 0xC1D2, 0x70C8, 0xC1D3, 0x52A3, 0xC1D4, 0x730E, 0xC1D5, 0x7433, + 0xC1D6, 0x6797, 0xC1D7, 0x78F7, 0xC1D8, 0x9716, 0xC1D9, 0x4E34, 0xC1DA, 0x90BB, 0xC1DB, 0x9CDE, 0xC1DC, 0x6DCB, 0xC1DD, 0x51DB, + 0xC1DE, 0x8D41, 0xC1DF, 0x541D, 0xC1E0, 0x62CE, 0xC1E1, 0x73B2, 0xC1E2, 0x83F1, 0xC1E3, 0x96F6, 0xC1E4, 0x9F84, 0xC1E5, 0x94C3, + 0xC1E6, 0x4F36, 0xC1E7, 0x7F9A, 0xC1E8, 0x51CC, 0xC1E9, 0x7075, 0xC1EA, 0x9675, 0xC1EB, 0x5CAD, 0xC1EC, 0x9886, 0xC1ED, 0x53E6, + 0xC1EE, 0x4EE4, 0xC1EF, 0x6E9C, 0xC1F0, 0x7409, 0xC1F1, 0x69B4, 0xC1F2, 0x786B, 0xC1F3, 0x998F, 0xC1F4, 0x7559, 0xC1F5, 0x5218, + 0xC1F6, 0x7624, 0xC1F7, 0x6D41, 0xC1F8, 0x67F3, 0xC1F9, 0x516D, 0xC1FA, 0x9F99, 0xC1FB, 0x804B, 0xC1FC, 0x5499, 0xC1FD, 0x7B3C, + 0xC1FE, 0x7ABF, 0xC240, 0x7FE4, 0xC241, 0x7FE7, 0xC242, 0x7FE8, 0xC243, 0x7FEA, 0xC244, 0x7FEB, 0xC245, 0x7FEC, 0xC246, 0x7FED, + 0xC247, 0x7FEF, 0xC248, 0x7FF2, 0xC249, 0x7FF4, 0xC24A, 0x7FF5, 0xC24B, 0x7FF6, 0xC24C, 0x7FF7, 0xC24D, 0x7FF8, 0xC24E, 0x7FF9, + 0xC24F, 0x7FFA, 0xC250, 0x7FFD, 0xC251, 0x7FFE, 0xC252, 0x7FFF, 0xC253, 0x8002, 0xC254, 0x8007, 0xC255, 0x8008, 0xC256, 0x8009, + 0xC257, 0x800A, 0xC258, 0x800E, 0xC259, 0x800F, 0xC25A, 0x8011, 0xC25B, 0x8013, 0xC25C, 0x801A, 0xC25D, 0x801B, 0xC25E, 0x801D, + 0xC25F, 0x801E, 0xC260, 0x801F, 0xC261, 0x8021, 0xC262, 0x8023, 0xC263, 0x8024, 0xC264, 0x802B, 0xC265, 0x802C, 0xC266, 0x802D, + 0xC267, 0x802E, 0xC268, 0x802F, 0xC269, 0x8030, 0xC26A, 0x8032, 0xC26B, 0x8034, 0xC26C, 0x8039, 0xC26D, 0x803A, 0xC26E, 0x803C, + 0xC26F, 0x803E, 0xC270, 0x8040, 0xC271, 0x8041, 0xC272, 0x8044, 0xC273, 0x8045, 0xC274, 0x8047, 0xC275, 0x8048, 0xC276, 0x8049, + 0xC277, 0x804E, 0xC278, 0x804F, 0xC279, 0x8050, 0xC27A, 0x8051, 0xC27B, 0x8053, 0xC27C, 0x8055, 0xC27D, 0x8056, 0xC27E, 0x8057, + 0xC280, 0x8059, 0xC281, 0x805B, 0xC282, 0x805C, 0xC283, 0x805D, 0xC284, 0x805E, 0xC285, 0x805F, 0xC286, 0x8060, 0xC287, 0x8061, + 0xC288, 0x8062, 0xC289, 0x8063, 0xC28A, 0x8064, 0xC28B, 0x8065, 0xC28C, 0x8066, 0xC28D, 0x8067, 0xC28E, 0x8068, 0xC28F, 0x806B, + 0xC290, 0x806C, 0xC291, 0x806D, 0xC292, 0x806E, 0xC293, 0x806F, 0xC294, 0x8070, 0xC295, 0x8072, 0xC296, 0x8073, 0xC297, 0x8074, + 0xC298, 0x8075, 0xC299, 0x8076, 0xC29A, 0x8077, 0xC29B, 0x8078, 0xC29C, 0x8079, 0xC29D, 0x807A, 0xC29E, 0x807B, 0xC29F, 0x807C, + 0xC2A0, 0x807D, 0xC2A1, 0x9686, 0xC2A2, 0x5784, 0xC2A3, 0x62E2, 0xC2A4, 0x9647, 0xC2A5, 0x697C, 0xC2A6, 0x5A04, 0xC2A7, 0x6402, + 0xC2A8, 0x7BD3, 0xC2A9, 0x6F0F, 0xC2AA, 0x964B, 0xC2AB, 0x82A6, 0xC2AC, 0x5362, 0xC2AD, 0x9885, 0xC2AE, 0x5E90, 0xC2AF, 0x7089, + 0xC2B0, 0x63B3, 0xC2B1, 0x5364, 0xC2B2, 0x864F, 0xC2B3, 0x9C81, 0xC2B4, 0x9E93, 0xC2B5, 0x788C, 0xC2B6, 0x9732, 0xC2B7, 0x8DEF, + 0xC2B8, 0x8D42, 0xC2B9, 0x9E7F, 0xC2BA, 0x6F5E, 0xC2BB, 0x7984, 0xC2BC, 0x5F55, 0xC2BD, 0x9646, 0xC2BE, 0x622E, 0xC2BF, 0x9A74, + 0xC2C0, 0x5415, 0xC2C1, 0x94DD, 0xC2C2, 0x4FA3, 0xC2C3, 0x65C5, 0xC2C4, 0x5C65, 0xC2C5, 0x5C61, 0xC2C6, 0x7F15, 0xC2C7, 0x8651, + 0xC2C8, 0x6C2F, 0xC2C9, 0x5F8B, 0xC2CA, 0x7387, 0xC2CB, 0x6EE4, 0xC2CC, 0x7EFF, 0xC2CD, 0x5CE6, 0xC2CE, 0x631B, 0xC2CF, 0x5B6A, + 0xC2D0, 0x6EE6, 0xC2D1, 0x5375, 0xC2D2, 0x4E71, 0xC2D3, 0x63A0, 0xC2D4, 0x7565, 0xC2D5, 0x62A1, 0xC2D6, 0x8F6E, 0xC2D7, 0x4F26, + 0xC2D8, 0x4ED1, 0xC2D9, 0x6CA6, 0xC2DA, 0x7EB6, 0xC2DB, 0x8BBA, 0xC2DC, 0x841D, 0xC2DD, 0x87BA, 0xC2DE, 0x7F57, 0xC2DF, 0x903B, + 0xC2E0, 0x9523, 0xC2E1, 0x7BA9, 0xC2E2, 0x9AA1, 0xC2E3, 0x88F8, 0xC2E4, 0x843D, 0xC2E5, 0x6D1B, 0xC2E6, 0x9A86, 0xC2E7, 0x7EDC, + 0xC2E8, 0x5988, 0xC2E9, 0x9EBB, 0xC2EA, 0x739B, 0xC2EB, 0x7801, 0xC2EC, 0x8682, 0xC2ED, 0x9A6C, 0xC2EE, 0x9A82, 0xC2EF, 0x561B, + 0xC2F0, 0x5417, 0xC2F1, 0x57CB, 0xC2F2, 0x4E70, 0xC2F3, 0x9EA6, 0xC2F4, 0x5356, 0xC2F5, 0x8FC8, 0xC2F6, 0x8109, 0xC2F7, 0x7792, + 0xC2F8, 0x9992, 0xC2F9, 0x86EE, 0xC2FA, 0x6EE1, 0xC2FB, 0x8513, 0xC2FC, 0x66FC, 0xC2FD, 0x6162, 0xC2FE, 0x6F2B, 0xC340, 0x807E, + 0xC341, 0x8081, 0xC342, 0x8082, 0xC343, 0x8085, 0xC344, 0x8088, 0xC345, 0x808A, 0xC346, 0x808D, 0xC347, 0x808E, 0xC348, 0x808F, + 0xC349, 0x8090, 0xC34A, 0x8091, 0xC34B, 0x8092, 0xC34C, 0x8094, 0xC34D, 0x8095, 0xC34E, 0x8097, 0xC34F, 0x8099, 0xC350, 0x809E, + 0xC351, 0x80A3, 0xC352, 0x80A6, 0xC353, 0x80A7, 0xC354, 0x80A8, 0xC355, 0x80AC, 0xC356, 0x80B0, 0xC357, 0x80B3, 0xC358, 0x80B5, + 0xC359, 0x80B6, 0xC35A, 0x80B8, 0xC35B, 0x80B9, 0xC35C, 0x80BB, 0xC35D, 0x80C5, 0xC35E, 0x80C7, 0xC35F, 0x80C8, 0xC360, 0x80C9, + 0xC361, 0x80CA, 0xC362, 0x80CB, 0xC363, 0x80CF, 0xC364, 0x80D0, 0xC365, 0x80D1, 0xC366, 0x80D2, 0xC367, 0x80D3, 0xC368, 0x80D4, + 0xC369, 0x80D5, 0xC36A, 0x80D8, 0xC36B, 0x80DF, 0xC36C, 0x80E0, 0xC36D, 0x80E2, 0xC36E, 0x80E3, 0xC36F, 0x80E6, 0xC370, 0x80EE, + 0xC371, 0x80F5, 0xC372, 0x80F7, 0xC373, 0x80F9, 0xC374, 0x80FB, 0xC375, 0x80FE, 0xC376, 0x80FF, 0xC377, 0x8100, 0xC378, 0x8101, + 0xC379, 0x8103, 0xC37A, 0x8104, 0xC37B, 0x8105, 0xC37C, 0x8107, 0xC37D, 0x8108, 0xC37E, 0x810B, 0xC380, 0x810C, 0xC381, 0x8115, + 0xC382, 0x8117, 0xC383, 0x8119, 0xC384, 0x811B, 0xC385, 0x811C, 0xC386, 0x811D, 0xC387, 0x811F, 0xC388, 0x8120, 0xC389, 0x8121, + 0xC38A, 0x8122, 0xC38B, 0x8123, 0xC38C, 0x8124, 0xC38D, 0x8125, 0xC38E, 0x8126, 0xC38F, 0x8127, 0xC390, 0x8128, 0xC391, 0x8129, + 0xC392, 0x812A, 0xC393, 0x812B, 0xC394, 0x812D, 0xC395, 0x812E, 0xC396, 0x8130, 0xC397, 0x8133, 0xC398, 0x8134, 0xC399, 0x8135, + 0xC39A, 0x8137, 0xC39B, 0x8139, 0xC39C, 0x813A, 0xC39D, 0x813B, 0xC39E, 0x813C, 0xC39F, 0x813D, 0xC3A0, 0x813F, 0xC3A1, 0x8C29, + 0xC3A2, 0x8292, 0xC3A3, 0x832B, 0xC3A4, 0x76F2, 0xC3A5, 0x6C13, 0xC3A6, 0x5FD9, 0xC3A7, 0x83BD, 0xC3A8, 0x732B, 0xC3A9, 0x8305, + 0xC3AA, 0x951A, 0xC3AB, 0x6BDB, 0xC3AC, 0x77DB, 0xC3AD, 0x94C6, 0xC3AE, 0x536F, 0xC3AF, 0x8302, 0xC3B0, 0x5192, 0xC3B1, 0x5E3D, + 0xC3B2, 0x8C8C, 0xC3B3, 0x8D38, 0xC3B4, 0x4E48, 0xC3B5, 0x73AB, 0xC3B6, 0x679A, 0xC3B7, 0x6885, 0xC3B8, 0x9176, 0xC3B9, 0x9709, + 0xC3BA, 0x7164, 0xC3BB, 0x6CA1, 0xC3BC, 0x7709, 0xC3BD, 0x5A92, 0xC3BE, 0x9541, 0xC3BF, 0x6BCF, 0xC3C0, 0x7F8E, 0xC3C1, 0x6627, + 0xC3C2, 0x5BD0, 0xC3C3, 0x59B9, 0xC3C4, 0x5A9A, 0xC3C5, 0x95E8, 0xC3C6, 0x95F7, 0xC3C7, 0x4EEC, 0xC3C8, 0x840C, 0xC3C9, 0x8499, + 0xC3CA, 0x6AAC, 0xC3CB, 0x76DF, 0xC3CC, 0x9530, 0xC3CD, 0x731B, 0xC3CE, 0x68A6, 0xC3CF, 0x5B5F, 0xC3D0, 0x772F, 0xC3D1, 0x919A, + 0xC3D2, 0x9761, 0xC3D3, 0x7CDC, 0xC3D4, 0x8FF7, 0xC3D5, 0x8C1C, 0xC3D6, 0x5F25, 0xC3D7, 0x7C73, 0xC3D8, 0x79D8, 0xC3D9, 0x89C5, + 0xC3DA, 0x6CCC, 0xC3DB, 0x871C, 0xC3DC, 0x5BC6, 0xC3DD, 0x5E42, 0xC3DE, 0x68C9, 0xC3DF, 0x7720, 0xC3E0, 0x7EF5, 0xC3E1, 0x5195, + 0xC3E2, 0x514D, 0xC3E3, 0x52C9, 0xC3E4, 0x5A29, 0xC3E5, 0x7F05, 0xC3E6, 0x9762, 0xC3E7, 0x82D7, 0xC3E8, 0x63CF, 0xC3E9, 0x7784, + 0xC3EA, 0x85D0, 0xC3EB, 0x79D2, 0xC3EC, 0x6E3A, 0xC3ED, 0x5E99, 0xC3EE, 0x5999, 0xC3EF, 0x8511, 0xC3F0, 0x706D, 0xC3F1, 0x6C11, + 0xC3F2, 0x62BF, 0xC3F3, 0x76BF, 0xC3F4, 0x654F, 0xC3F5, 0x60AF, 0xC3F6, 0x95FD, 0xC3F7, 0x660E, 0xC3F8, 0x879F, 0xC3F9, 0x9E23, + 0xC3FA, 0x94ED, 0xC3FB, 0x540D, 0xC3FC, 0x547D, 0xC3FD, 0x8C2C, 0xC3FE, 0x6478, 0xC440, 0x8140, 0xC441, 0x8141, 0xC442, 0x8142, + 0xC443, 0x8143, 0xC444, 0x8144, 0xC445, 0x8145, 0xC446, 0x8147, 0xC447, 0x8149, 0xC448, 0x814D, 0xC449, 0x814E, 0xC44A, 0x814F, + 0xC44B, 0x8152, 0xC44C, 0x8156, 0xC44D, 0x8157, 0xC44E, 0x8158, 0xC44F, 0x815B, 0xC450, 0x815C, 0xC451, 0x815D, 0xC452, 0x815E, + 0xC453, 0x815F, 0xC454, 0x8161, 0xC455, 0x8162, 0xC456, 0x8163, 0xC457, 0x8164, 0xC458, 0x8166, 0xC459, 0x8168, 0xC45A, 0x816A, + 0xC45B, 0x816B, 0xC45C, 0x816C, 0xC45D, 0x816F, 0xC45E, 0x8172, 0xC45F, 0x8173, 0xC460, 0x8175, 0xC461, 0x8176, 0xC462, 0x8177, + 0xC463, 0x8178, 0xC464, 0x8181, 0xC465, 0x8183, 0xC466, 0x8184, 0xC467, 0x8185, 0xC468, 0x8186, 0xC469, 0x8187, 0xC46A, 0x8189, + 0xC46B, 0x818B, 0xC46C, 0x818C, 0xC46D, 0x818D, 0xC46E, 0x818E, 0xC46F, 0x8190, 0xC470, 0x8192, 0xC471, 0x8193, 0xC472, 0x8194, + 0xC473, 0x8195, 0xC474, 0x8196, 0xC475, 0x8197, 0xC476, 0x8199, 0xC477, 0x819A, 0xC478, 0x819E, 0xC479, 0x819F, 0xC47A, 0x81A0, + 0xC47B, 0x81A1, 0xC47C, 0x81A2, 0xC47D, 0x81A4, 0xC47E, 0x81A5, 0xC480, 0x81A7, 0xC481, 0x81A9, 0xC482, 0x81AB, 0xC483, 0x81AC, + 0xC484, 0x81AD, 0xC485, 0x81AE, 0xC486, 0x81AF, 0xC487, 0x81B0, 0xC488, 0x81B1, 0xC489, 0x81B2, 0xC48A, 0x81B4, 0xC48B, 0x81B5, + 0xC48C, 0x81B6, 0xC48D, 0x81B7, 0xC48E, 0x81B8, 0xC48F, 0x81B9, 0xC490, 0x81BC, 0xC491, 0x81BD, 0xC492, 0x81BE, 0xC493, 0x81BF, + 0xC494, 0x81C4, 0xC495, 0x81C5, 0xC496, 0x81C7, 0xC497, 0x81C8, 0xC498, 0x81C9, 0xC499, 0x81CB, 0xC49A, 0x81CD, 0xC49B, 0x81CE, + 0xC49C, 0x81CF, 0xC49D, 0x81D0, 0xC49E, 0x81D1, 0xC49F, 0x81D2, 0xC4A0, 0x81D3, 0xC4A1, 0x6479, 0xC4A2, 0x8611, 0xC4A3, 0x6A21, + 0xC4A4, 0x819C, 0xC4A5, 0x78E8, 0xC4A6, 0x6469, 0xC4A7, 0x9B54, 0xC4A8, 0x62B9, 0xC4A9, 0x672B, 0xC4AA, 0x83AB, 0xC4AB, 0x58A8, + 0xC4AC, 0x9ED8, 0xC4AD, 0x6CAB, 0xC4AE, 0x6F20, 0xC4AF, 0x5BDE, 0xC4B0, 0x964C, 0xC4B1, 0x8C0B, 0xC4B2, 0x725F, 0xC4B3, 0x67D0, + 0xC4B4, 0x62C7, 0xC4B5, 0x7261, 0xC4B6, 0x4EA9, 0xC4B7, 0x59C6, 0xC4B8, 0x6BCD, 0xC4B9, 0x5893, 0xC4BA, 0x66AE, 0xC4BB, 0x5E55, + 0xC4BC, 0x52DF, 0xC4BD, 0x6155, 0xC4BE, 0x6728, 0xC4BF, 0x76EE, 0xC4C0, 0x7766, 0xC4C1, 0x7267, 0xC4C2, 0x7A46, 0xC4C3, 0x62FF, + 0xC4C4, 0x54EA, 0xC4C5, 0x5450, 0xC4C6, 0x94A0, 0xC4C7, 0x90A3, 0xC4C8, 0x5A1C, 0xC4C9, 0x7EB3, 0xC4CA, 0x6C16, 0xC4CB, 0x4E43, + 0xC4CC, 0x5976, 0xC4CD, 0x8010, 0xC4CE, 0x5948, 0xC4CF, 0x5357, 0xC4D0, 0x7537, 0xC4D1, 0x96BE, 0xC4D2, 0x56CA, 0xC4D3, 0x6320, + 0xC4D4, 0x8111, 0xC4D5, 0x607C, 0xC4D6, 0x95F9, 0xC4D7, 0x6DD6, 0xC4D8, 0x5462, 0xC4D9, 0x9981, 0xC4DA, 0x5185, 0xC4DB, 0x5AE9, + 0xC4DC, 0x80FD, 0xC4DD, 0x59AE, 0xC4DE, 0x9713, 0xC4DF, 0x502A, 0xC4E0, 0x6CE5, 0xC4E1, 0x5C3C, 0xC4E2, 0x62DF, 0xC4E3, 0x4F60, + 0xC4E4, 0x533F, 0xC4E5, 0x817B, 0xC4E6, 0x9006, 0xC4E7, 0x6EBA, 0xC4E8, 0x852B, 0xC4E9, 0x62C8, 0xC4EA, 0x5E74, 0xC4EB, 0x78BE, + 0xC4EC, 0x64B5, 0xC4ED, 0x637B, 0xC4EE, 0x5FF5, 0xC4EF, 0x5A18, 0xC4F0, 0x917F, 0xC4F1, 0x9E1F, 0xC4F2, 0x5C3F, 0xC4F3, 0x634F, + 0xC4F4, 0x8042, 0xC4F5, 0x5B7D, 0xC4F6, 0x556E, 0xC4F7, 0x954A, 0xC4F8, 0x954D, 0xC4F9, 0x6D85, 0xC4FA, 0x60A8, 0xC4FB, 0x67E0, + 0xC4FC, 0x72DE, 0xC4FD, 0x51DD, 0xC4FE, 0x5B81, 0xC540, 0x81D4, 0xC541, 0x81D5, 0xC542, 0x81D6, 0xC543, 0x81D7, 0xC544, 0x81D8, + 0xC545, 0x81D9, 0xC546, 0x81DA, 0xC547, 0x81DB, 0xC548, 0x81DC, 0xC549, 0x81DD, 0xC54A, 0x81DE, 0xC54B, 0x81DF, 0xC54C, 0x81E0, + 0xC54D, 0x81E1, 0xC54E, 0x81E2, 0xC54F, 0x81E4, 0xC550, 0x81E5, 0xC551, 0x81E6, 0xC552, 0x81E8, 0xC553, 0x81E9, 0xC554, 0x81EB, + 0xC555, 0x81EE, 0xC556, 0x81EF, 0xC557, 0x81F0, 0xC558, 0x81F1, 0xC559, 0x81F2, 0xC55A, 0x81F5, 0xC55B, 0x81F6, 0xC55C, 0x81F7, + 0xC55D, 0x81F8, 0xC55E, 0x81F9, 0xC55F, 0x81FA, 0xC560, 0x81FD, 0xC561, 0x81FF, 0xC562, 0x8203, 0xC563, 0x8207, 0xC564, 0x8208, + 0xC565, 0x8209, 0xC566, 0x820A, 0xC567, 0x820B, 0xC568, 0x820E, 0xC569, 0x820F, 0xC56A, 0x8211, 0xC56B, 0x8213, 0xC56C, 0x8215, + 0xC56D, 0x8216, 0xC56E, 0x8217, 0xC56F, 0x8218, 0xC570, 0x8219, 0xC571, 0x821A, 0xC572, 0x821D, 0xC573, 0x8220, 0xC574, 0x8224, + 0xC575, 0x8225, 0xC576, 0x8226, 0xC577, 0x8227, 0xC578, 0x8229, 0xC579, 0x822E, 0xC57A, 0x8232, 0xC57B, 0x823A, 0xC57C, 0x823C, + 0xC57D, 0x823D, 0xC57E, 0x823F, 0xC580, 0x8240, 0xC581, 0x8241, 0xC582, 0x8242, 0xC583, 0x8243, 0xC584, 0x8245, 0xC585, 0x8246, + 0xC586, 0x8248, 0xC587, 0x824A, 0xC588, 0x824C, 0xC589, 0x824D, 0xC58A, 0x824E, 0xC58B, 0x8250, 0xC58C, 0x8251, 0xC58D, 0x8252, + 0xC58E, 0x8253, 0xC58F, 0x8254, 0xC590, 0x8255, 0xC591, 0x8256, 0xC592, 0x8257, 0xC593, 0x8259, 0xC594, 0x825B, 0xC595, 0x825C, + 0xC596, 0x825D, 0xC597, 0x825E, 0xC598, 0x8260, 0xC599, 0x8261, 0xC59A, 0x8262, 0xC59B, 0x8263, 0xC59C, 0x8264, 0xC59D, 0x8265, + 0xC59E, 0x8266, 0xC59F, 0x8267, 0xC5A0, 0x8269, 0xC5A1, 0x62E7, 0xC5A2, 0x6CDE, 0xC5A3, 0x725B, 0xC5A4, 0x626D, 0xC5A5, 0x94AE, + 0xC5A6, 0x7EBD, 0xC5A7, 0x8113, 0xC5A8, 0x6D53, 0xC5A9, 0x519C, 0xC5AA, 0x5F04, 0xC5AB, 0x5974, 0xC5AC, 0x52AA, 0xC5AD, 0x6012, + 0xC5AE, 0x5973, 0xC5AF, 0x6696, 0xC5B0, 0x8650, 0xC5B1, 0x759F, 0xC5B2, 0x632A, 0xC5B3, 0x61E6, 0xC5B4, 0x7CEF, 0xC5B5, 0x8BFA, + 0xC5B6, 0x54E6, 0xC5B7, 0x6B27, 0xC5B8, 0x9E25, 0xC5B9, 0x6BB4, 0xC5BA, 0x85D5, 0xC5BB, 0x5455, 0xC5BC, 0x5076, 0xC5BD, 0x6CA4, + 0xC5BE, 0x556A, 0xC5BF, 0x8DB4, 0xC5C0, 0x722C, 0xC5C1, 0x5E15, 0xC5C2, 0x6015, 0xC5C3, 0x7436, 0xC5C4, 0x62CD, 0xC5C5, 0x6392, + 0xC5C6, 0x724C, 0xC5C7, 0x5F98, 0xC5C8, 0x6E43, 0xC5C9, 0x6D3E, 0xC5CA, 0x6500, 0xC5CB, 0x6F58, 0xC5CC, 0x76D8, 0xC5CD, 0x78D0, + 0xC5CE, 0x76FC, 0xC5CF, 0x7554, 0xC5D0, 0x5224, 0xC5D1, 0x53DB, 0xC5D2, 0x4E53, 0xC5D3, 0x5E9E, 0xC5D4, 0x65C1, 0xC5D5, 0x802A, + 0xC5D6, 0x80D6, 0xC5D7, 0x629B, 0xC5D8, 0x5486, 0xC5D9, 0x5228, 0xC5DA, 0x70AE, 0xC5DB, 0x888D, 0xC5DC, 0x8DD1, 0xC5DD, 0x6CE1, + 0xC5DE, 0x5478, 0xC5DF, 0x80DA, 0xC5E0, 0x57F9, 0xC5E1, 0x88F4, 0xC5E2, 0x8D54, 0xC5E3, 0x966A, 0xC5E4, 0x914D, 0xC5E5, 0x4F69, + 0xC5E6, 0x6C9B, 0xC5E7, 0x55B7, 0xC5E8, 0x76C6, 0xC5E9, 0x7830, 0xC5EA, 0x62A8, 0xC5EB, 0x70F9, 0xC5EC, 0x6F8E, 0xC5ED, 0x5F6D, + 0xC5EE, 0x84EC, 0xC5EF, 0x68DA, 0xC5F0, 0x787C, 0xC5F1, 0x7BF7, 0xC5F2, 0x81A8, 0xC5F3, 0x670B, 0xC5F4, 0x9E4F, 0xC5F5, 0x6367, + 0xC5F6, 0x78B0, 0xC5F7, 0x576F, 0xC5F8, 0x7812, 0xC5F9, 0x9739, 0xC5FA, 0x6279, 0xC5FB, 0x62AB, 0xC5FC, 0x5288, 0xC5FD, 0x7435, + 0xC5FE, 0x6BD7, 0xC640, 0x826A, 0xC641, 0x826B, 0xC642, 0x826C, 0xC643, 0x826D, 0xC644, 0x8271, 0xC645, 0x8275, 0xC646, 0x8276, + 0xC647, 0x8277, 0xC648, 0x8278, 0xC649, 0x827B, 0xC64A, 0x827C, 0xC64B, 0x8280, 0xC64C, 0x8281, 0xC64D, 0x8283, 0xC64E, 0x8285, + 0xC64F, 0x8286, 0xC650, 0x8287, 0xC651, 0x8289, 0xC652, 0x828C, 0xC653, 0x8290, 0xC654, 0x8293, 0xC655, 0x8294, 0xC656, 0x8295, + 0xC657, 0x8296, 0xC658, 0x829A, 0xC659, 0x829B, 0xC65A, 0x829E, 0xC65B, 0x82A0, 0xC65C, 0x82A2, 0xC65D, 0x82A3, 0xC65E, 0x82A7, + 0xC65F, 0x82B2, 0xC660, 0x82B5, 0xC661, 0x82B6, 0xC662, 0x82BA, 0xC663, 0x82BB, 0xC664, 0x82BC, 0xC665, 0x82BF, 0xC666, 0x82C0, + 0xC667, 0x82C2, 0xC668, 0x82C3, 0xC669, 0x82C5, 0xC66A, 0x82C6, 0xC66B, 0x82C9, 0xC66C, 0x82D0, 0xC66D, 0x82D6, 0xC66E, 0x82D9, + 0xC66F, 0x82DA, 0xC670, 0x82DD, 0xC671, 0x82E2, 0xC672, 0x82E7, 0xC673, 0x82E8, 0xC674, 0x82E9, 0xC675, 0x82EA, 0xC676, 0x82EC, + 0xC677, 0x82ED, 0xC678, 0x82EE, 0xC679, 0x82F0, 0xC67A, 0x82F2, 0xC67B, 0x82F3, 0xC67C, 0x82F5, 0xC67D, 0x82F6, 0xC67E, 0x82F8, + 0xC680, 0x82FA, 0xC681, 0x82FC, 0xC682, 0x82FD, 0xC683, 0x82FE, 0xC684, 0x82FF, 0xC685, 0x8300, 0xC686, 0x830A, 0xC687, 0x830B, + 0xC688, 0x830D, 0xC689, 0x8310, 0xC68A, 0x8312, 0xC68B, 0x8313, 0xC68C, 0x8316, 0xC68D, 0x8318, 0xC68E, 0x8319, 0xC68F, 0x831D, + 0xC690, 0x831E, 0xC691, 0x831F, 0xC692, 0x8320, 0xC693, 0x8321, 0xC694, 0x8322, 0xC695, 0x8323, 0xC696, 0x8324, 0xC697, 0x8325, + 0xC698, 0x8326, 0xC699, 0x8329, 0xC69A, 0x832A, 0xC69B, 0x832E, 0xC69C, 0x8330, 0xC69D, 0x8332, 0xC69E, 0x8337, 0xC69F, 0x833B, + 0xC6A0, 0x833D, 0xC6A1, 0x5564, 0xC6A2, 0x813E, 0xC6A3, 0x75B2, 0xC6A4, 0x76AE, 0xC6A5, 0x5339, 0xC6A6, 0x75DE, 0xC6A7, 0x50FB, + 0xC6A8, 0x5C41, 0xC6A9, 0x8B6C, 0xC6AA, 0x7BC7, 0xC6AB, 0x504F, 0xC6AC, 0x7247, 0xC6AD, 0x9A97, 0xC6AE, 0x98D8, 0xC6AF, 0x6F02, + 0xC6B0, 0x74E2, 0xC6B1, 0x7968, 0xC6B2, 0x6487, 0xC6B3, 0x77A5, 0xC6B4, 0x62FC, 0xC6B5, 0x9891, 0xC6B6, 0x8D2B, 0xC6B7, 0x54C1, + 0xC6B8, 0x8058, 0xC6B9, 0x4E52, 0xC6BA, 0x576A, 0xC6BB, 0x82F9, 0xC6BC, 0x840D, 0xC6BD, 0x5E73, 0xC6BE, 0x51ED, 0xC6BF, 0x74F6, + 0xC6C0, 0x8BC4, 0xC6C1, 0x5C4F, 0xC6C2, 0x5761, 0xC6C3, 0x6CFC, 0xC6C4, 0x9887, 0xC6C5, 0x5A46, 0xC6C6, 0x7834, 0xC6C7, 0x9B44, + 0xC6C8, 0x8FEB, 0xC6C9, 0x7C95, 0xC6CA, 0x5256, 0xC6CB, 0x6251, 0xC6CC, 0x94FA, 0xC6CD, 0x4EC6, 0xC6CE, 0x8386, 0xC6CF, 0x8461, + 0xC6D0, 0x83E9, 0xC6D1, 0x84B2, 0xC6D2, 0x57D4, 0xC6D3, 0x6734, 0xC6D4, 0x5703, 0xC6D5, 0x666E, 0xC6D6, 0x6D66, 0xC6D7, 0x8C31, + 0xC6D8, 0x66DD, 0xC6D9, 0x7011, 0xC6DA, 0x671F, 0xC6DB, 0x6B3A, 0xC6DC, 0x6816, 0xC6DD, 0x621A, 0xC6DE, 0x59BB, 0xC6DF, 0x4E03, + 0xC6E0, 0x51C4, 0xC6E1, 0x6F06, 0xC6E2, 0x67D2, 0xC6E3, 0x6C8F, 0xC6E4, 0x5176, 0xC6E5, 0x68CB, 0xC6E6, 0x5947, 0xC6E7, 0x6B67, + 0xC6E8, 0x7566, 0xC6E9, 0x5D0E, 0xC6EA, 0x8110, 0xC6EB, 0x9F50, 0xC6EC, 0x65D7, 0xC6ED, 0x7948, 0xC6EE, 0x7941, 0xC6EF, 0x9A91, + 0xC6F0, 0x8D77, 0xC6F1, 0x5C82, 0xC6F2, 0x4E5E, 0xC6F3, 0x4F01, 0xC6F4, 0x542F, 0xC6F5, 0x5951, 0xC6F6, 0x780C, 0xC6F7, 0x5668, + 0xC6F8, 0x6C14, 0xC6F9, 0x8FC4, 0xC6FA, 0x5F03, 0xC6FB, 0x6C7D, 0xC6FC, 0x6CE3, 0xC6FD, 0x8BAB, 0xC6FE, 0x6390, 0xC740, 0x833E, + 0xC741, 0x833F, 0xC742, 0x8341, 0xC743, 0x8342, 0xC744, 0x8344, 0xC745, 0x8345, 0xC746, 0x8348, 0xC747, 0x834A, 0xC748, 0x834B, + 0xC749, 0x834C, 0xC74A, 0x834D, 0xC74B, 0x834E, 0xC74C, 0x8353, 0xC74D, 0x8355, 0xC74E, 0x8356, 0xC74F, 0x8357, 0xC750, 0x8358, + 0xC751, 0x8359, 0xC752, 0x835D, 0xC753, 0x8362, 0xC754, 0x8370, 0xC755, 0x8371, 0xC756, 0x8372, 0xC757, 0x8373, 0xC758, 0x8374, + 0xC759, 0x8375, 0xC75A, 0x8376, 0xC75B, 0x8379, 0xC75C, 0x837A, 0xC75D, 0x837E, 0xC75E, 0x837F, 0xC75F, 0x8380, 0xC760, 0x8381, + 0xC761, 0x8382, 0xC762, 0x8383, 0xC763, 0x8384, 0xC764, 0x8387, 0xC765, 0x8388, 0xC766, 0x838A, 0xC767, 0x838B, 0xC768, 0x838C, + 0xC769, 0x838D, 0xC76A, 0x838F, 0xC76B, 0x8390, 0xC76C, 0x8391, 0xC76D, 0x8394, 0xC76E, 0x8395, 0xC76F, 0x8396, 0xC770, 0x8397, + 0xC771, 0x8399, 0xC772, 0x839A, 0xC773, 0x839D, 0xC774, 0x839F, 0xC775, 0x83A1, 0xC776, 0x83A2, 0xC777, 0x83A3, 0xC778, 0x83A4, + 0xC779, 0x83A5, 0xC77A, 0x83A6, 0xC77B, 0x83A7, 0xC77C, 0x83AC, 0xC77D, 0x83AD, 0xC77E, 0x83AE, 0xC780, 0x83AF, 0xC781, 0x83B5, + 0xC782, 0x83BB, 0xC783, 0x83BE, 0xC784, 0x83BF, 0xC785, 0x83C2, 0xC786, 0x83C3, 0xC787, 0x83C4, 0xC788, 0x83C6, 0xC789, 0x83C8, + 0xC78A, 0x83C9, 0xC78B, 0x83CB, 0xC78C, 0x83CD, 0xC78D, 0x83CE, 0xC78E, 0x83D0, 0xC78F, 0x83D1, 0xC790, 0x83D2, 0xC791, 0x83D3, + 0xC792, 0x83D5, 0xC793, 0x83D7, 0xC794, 0x83D9, 0xC795, 0x83DA, 0xC796, 0x83DB, 0xC797, 0x83DE, 0xC798, 0x83E2, 0xC799, 0x83E3, + 0xC79A, 0x83E4, 0xC79B, 0x83E6, 0xC79C, 0x83E7, 0xC79D, 0x83E8, 0xC79E, 0x83EB, 0xC79F, 0x83EC, 0xC7A0, 0x83ED, 0xC7A1, 0x6070, + 0xC7A2, 0x6D3D, 0xC7A3, 0x7275, 0xC7A4, 0x6266, 0xC7A5, 0x948E, 0xC7A6, 0x94C5, 0xC7A7, 0x5343, 0xC7A8, 0x8FC1, 0xC7A9, 0x7B7E, + 0xC7AA, 0x4EDF, 0xC7AB, 0x8C26, 0xC7AC, 0x4E7E, 0xC7AD, 0x9ED4, 0xC7AE, 0x94B1, 0xC7AF, 0x94B3, 0xC7B0, 0x524D, 0xC7B1, 0x6F5C, + 0xC7B2, 0x9063, 0xC7B3, 0x6D45, 0xC7B4, 0x8C34, 0xC7B5, 0x5811, 0xC7B6, 0x5D4C, 0xC7B7, 0x6B20, 0xC7B8, 0x6B49, 0xC7B9, 0x67AA, + 0xC7BA, 0x545B, 0xC7BB, 0x8154, 0xC7BC, 0x7F8C, 0xC7BD, 0x5899, 0xC7BE, 0x8537, 0xC7BF, 0x5F3A, 0xC7C0, 0x62A2, 0xC7C1, 0x6A47, + 0xC7C2, 0x9539, 0xC7C3, 0x6572, 0xC7C4, 0x6084, 0xC7C5, 0x6865, 0xC7C6, 0x77A7, 0xC7C7, 0x4E54, 0xC7C8, 0x4FA8, 0xC7C9, 0x5DE7, + 0xC7CA, 0x9798, 0xC7CB, 0x64AC, 0xC7CC, 0x7FD8, 0xC7CD, 0x5CED, 0xC7CE, 0x4FCF, 0xC7CF, 0x7A8D, 0xC7D0, 0x5207, 0xC7D1, 0x8304, + 0xC7D2, 0x4E14, 0xC7D3, 0x602F, 0xC7D4, 0x7A83, 0xC7D5, 0x94A6, 0xC7D6, 0x4FB5, 0xC7D7, 0x4EB2, 0xC7D8, 0x79E6, 0xC7D9, 0x7434, + 0xC7DA, 0x52E4, 0xC7DB, 0x82B9, 0xC7DC, 0x64D2, 0xC7DD, 0x79BD, 0xC7DE, 0x5BDD, 0xC7DF, 0x6C81, 0xC7E0, 0x9752, 0xC7E1, 0x8F7B, + 0xC7E2, 0x6C22, 0xC7E3, 0x503E, 0xC7E4, 0x537F, 0xC7E5, 0x6E05, 0xC7E6, 0x64CE, 0xC7E7, 0x6674, 0xC7E8, 0x6C30, 0xC7E9, 0x60C5, + 0xC7EA, 0x9877, 0xC7EB, 0x8BF7, 0xC7EC, 0x5E86, 0xC7ED, 0x743C, 0xC7EE, 0x7A77, 0xC7EF, 0x79CB, 0xC7F0, 0x4E18, 0xC7F1, 0x90B1, + 0xC7F2, 0x7403, 0xC7F3, 0x6C42, 0xC7F4, 0x56DA, 0xC7F5, 0x914B, 0xC7F6, 0x6CC5, 0xC7F7, 0x8D8B, 0xC7F8, 0x533A, 0xC7F9, 0x86C6, + 0xC7FA, 0x66F2, 0xC7FB, 0x8EAF, 0xC7FC, 0x5C48, 0xC7FD, 0x9A71, 0xC7FE, 0x6E20, 0xC840, 0x83EE, 0xC841, 0x83EF, 0xC842, 0x83F3, + 0xC843, 0x83F4, 0xC844, 0x83F5, 0xC845, 0x83F6, 0xC846, 0x83F7, 0xC847, 0x83FA, 0xC848, 0x83FB, 0xC849, 0x83FC, 0xC84A, 0x83FE, + 0xC84B, 0x83FF, 0xC84C, 0x8400, 0xC84D, 0x8402, 0xC84E, 0x8405, 0xC84F, 0x8407, 0xC850, 0x8408, 0xC851, 0x8409, 0xC852, 0x840A, + 0xC853, 0x8410, 0xC854, 0x8412, 0xC855, 0x8413, 0xC856, 0x8414, 0xC857, 0x8415, 0xC858, 0x8416, 0xC859, 0x8417, 0xC85A, 0x8419, + 0xC85B, 0x841A, 0xC85C, 0x841B, 0xC85D, 0x841E, 0xC85E, 0x841F, 0xC85F, 0x8420, 0xC860, 0x8421, 0xC861, 0x8422, 0xC862, 0x8423, + 0xC863, 0x8429, 0xC864, 0x842A, 0xC865, 0x842B, 0xC866, 0x842C, 0xC867, 0x842D, 0xC868, 0x842E, 0xC869, 0x842F, 0xC86A, 0x8430, + 0xC86B, 0x8432, 0xC86C, 0x8433, 0xC86D, 0x8434, 0xC86E, 0x8435, 0xC86F, 0x8436, 0xC870, 0x8437, 0xC871, 0x8439, 0xC872, 0x843A, + 0xC873, 0x843B, 0xC874, 0x843E, 0xC875, 0x843F, 0xC876, 0x8440, 0xC877, 0x8441, 0xC878, 0x8442, 0xC879, 0x8443, 0xC87A, 0x8444, + 0xC87B, 0x8445, 0xC87C, 0x8447, 0xC87D, 0x8448, 0xC87E, 0x8449, 0xC880, 0x844A, 0xC881, 0x844B, 0xC882, 0x844C, 0xC883, 0x844D, + 0xC884, 0x844E, 0xC885, 0x844F, 0xC886, 0x8450, 0xC887, 0x8452, 0xC888, 0x8453, 0xC889, 0x8454, 0xC88A, 0x8455, 0xC88B, 0x8456, + 0xC88C, 0x8458, 0xC88D, 0x845D, 0xC88E, 0x845E, 0xC88F, 0x845F, 0xC890, 0x8460, 0xC891, 0x8462, 0xC892, 0x8464, 0xC893, 0x8465, + 0xC894, 0x8466, 0xC895, 0x8467, 0xC896, 0x8468, 0xC897, 0x846A, 0xC898, 0x846E, 0xC899, 0x846F, 0xC89A, 0x8470, 0xC89B, 0x8472, + 0xC89C, 0x8474, 0xC89D, 0x8477, 0xC89E, 0x8479, 0xC89F, 0x847B, 0xC8A0, 0x847C, 0xC8A1, 0x53D6, 0xC8A2, 0x5A36, 0xC8A3, 0x9F8B, + 0xC8A4, 0x8DA3, 0xC8A5, 0x53BB, 0xC8A6, 0x5708, 0xC8A7, 0x98A7, 0xC8A8, 0x6743, 0xC8A9, 0x919B, 0xC8AA, 0x6CC9, 0xC8AB, 0x5168, + 0xC8AC, 0x75CA, 0xC8AD, 0x62F3, 0xC8AE, 0x72AC, 0xC8AF, 0x5238, 0xC8B0, 0x529D, 0xC8B1, 0x7F3A, 0xC8B2, 0x7094, 0xC8B3, 0x7638, + 0xC8B4, 0x5374, 0xC8B5, 0x9E4A, 0xC8B6, 0x69B7, 0xC8B7, 0x786E, 0xC8B8, 0x96C0, 0xC8B9, 0x88D9, 0xC8BA, 0x7FA4, 0xC8BB, 0x7136, + 0xC8BC, 0x71C3, 0xC8BD, 0x5189, 0xC8BE, 0x67D3, 0xC8BF, 0x74E4, 0xC8C0, 0x58E4, 0xC8C1, 0x6518, 0xC8C2, 0x56B7, 0xC8C3, 0x8BA9, + 0xC8C4, 0x9976, 0xC8C5, 0x6270, 0xC8C6, 0x7ED5, 0xC8C7, 0x60F9, 0xC8C8, 0x70ED, 0xC8C9, 0x58EC, 0xC8CA, 0x4EC1, 0xC8CB, 0x4EBA, + 0xC8CC, 0x5FCD, 0xC8CD, 0x97E7, 0xC8CE, 0x4EFB, 0xC8CF, 0x8BA4, 0xC8D0, 0x5203, 0xC8D1, 0x598A, 0xC8D2, 0x7EAB, 0xC8D3, 0x6254, + 0xC8D4, 0x4ECD, 0xC8D5, 0x65E5, 0xC8D6, 0x620E, 0xC8D7, 0x8338, 0xC8D8, 0x84C9, 0xC8D9, 0x8363, 0xC8DA, 0x878D, 0xC8DB, 0x7194, + 0xC8DC, 0x6EB6, 0xC8DD, 0x5BB9, 0xC8DE, 0x7ED2, 0xC8DF, 0x5197, 0xC8E0, 0x63C9, 0xC8E1, 0x67D4, 0xC8E2, 0x8089, 0xC8E3, 0x8339, + 0xC8E4, 0x8815, 0xC8E5, 0x5112, 0xC8E6, 0x5B7A, 0xC8E7, 0x5982, 0xC8E8, 0x8FB1, 0xC8E9, 0x4E73, 0xC8EA, 0x6C5D, 0xC8EB, 0x5165, + 0xC8EC, 0x8925, 0xC8ED, 0x8F6F, 0xC8EE, 0x962E, 0xC8EF, 0x854A, 0xC8F0, 0x745E, 0xC8F1, 0x9510, 0xC8F2, 0x95F0, 0xC8F3, 0x6DA6, + 0xC8F4, 0x82E5, 0xC8F5, 0x5F31, 0xC8F6, 0x6492, 0xC8F7, 0x6D12, 0xC8F8, 0x8428, 0xC8F9, 0x816E, 0xC8FA, 0x9CC3, 0xC8FB, 0x585E, + 0xC8FC, 0x8D5B, 0xC8FD, 0x4E09, 0xC8FE, 0x53C1, 0xC940, 0x847D, 0xC941, 0x847E, 0xC942, 0x847F, 0xC943, 0x8480, 0xC944, 0x8481, + 0xC945, 0x8483, 0xC946, 0x8484, 0xC947, 0x8485, 0xC948, 0x8486, 0xC949, 0x848A, 0xC94A, 0x848D, 0xC94B, 0x848F, 0xC94C, 0x8490, + 0xC94D, 0x8491, 0xC94E, 0x8492, 0xC94F, 0x8493, 0xC950, 0x8494, 0xC951, 0x8495, 0xC952, 0x8496, 0xC953, 0x8498, 0xC954, 0x849A, + 0xC955, 0x849B, 0xC956, 0x849D, 0xC957, 0x849E, 0xC958, 0x849F, 0xC959, 0x84A0, 0xC95A, 0x84A2, 0xC95B, 0x84A3, 0xC95C, 0x84A4, + 0xC95D, 0x84A5, 0xC95E, 0x84A6, 0xC95F, 0x84A7, 0xC960, 0x84A8, 0xC961, 0x84A9, 0xC962, 0x84AA, 0xC963, 0x84AB, 0xC964, 0x84AC, + 0xC965, 0x84AD, 0xC966, 0x84AE, 0xC967, 0x84B0, 0xC968, 0x84B1, 0xC969, 0x84B3, 0xC96A, 0x84B5, 0xC96B, 0x84B6, 0xC96C, 0x84B7, + 0xC96D, 0x84BB, 0xC96E, 0x84BC, 0xC96F, 0x84BE, 0xC970, 0x84C0, 0xC971, 0x84C2, 0xC972, 0x84C3, 0xC973, 0x84C5, 0xC974, 0x84C6, + 0xC975, 0x84C7, 0xC976, 0x84C8, 0xC977, 0x84CB, 0xC978, 0x84CC, 0xC979, 0x84CE, 0xC97A, 0x84CF, 0xC97B, 0x84D2, 0xC97C, 0x84D4, + 0xC97D, 0x84D5, 0xC97E, 0x84D7, 0xC980, 0x84D8, 0xC981, 0x84D9, 0xC982, 0x84DA, 0xC983, 0x84DB, 0xC984, 0x84DC, 0xC985, 0x84DE, + 0xC986, 0x84E1, 0xC987, 0x84E2, 0xC988, 0x84E4, 0xC989, 0x84E7, 0xC98A, 0x84E8, 0xC98B, 0x84E9, 0xC98C, 0x84EA, 0xC98D, 0x84EB, + 0xC98E, 0x84ED, 0xC98F, 0x84EE, 0xC990, 0x84EF, 0xC991, 0x84F1, 0xC992, 0x84F2, 0xC993, 0x84F3, 0xC994, 0x84F4, 0xC995, 0x84F5, + 0xC996, 0x84F6, 0xC997, 0x84F7, 0xC998, 0x84F8, 0xC999, 0x84F9, 0xC99A, 0x84FA, 0xC99B, 0x84FB, 0xC99C, 0x84FD, 0xC99D, 0x84FE, + 0xC99E, 0x8500, 0xC99F, 0x8501, 0xC9A0, 0x8502, 0xC9A1, 0x4F1E, 0xC9A2, 0x6563, 0xC9A3, 0x6851, 0xC9A4, 0x55D3, 0xC9A5, 0x4E27, + 0xC9A6, 0x6414, 0xC9A7, 0x9A9A, 0xC9A8, 0x626B, 0xC9A9, 0x5AC2, 0xC9AA, 0x745F, 0xC9AB, 0x8272, 0xC9AC, 0x6DA9, 0xC9AD, 0x68EE, + 0xC9AE, 0x50E7, 0xC9AF, 0x838E, 0xC9B0, 0x7802, 0xC9B1, 0x6740, 0xC9B2, 0x5239, 0xC9B3, 0x6C99, 0xC9B4, 0x7EB1, 0xC9B5, 0x50BB, + 0xC9B6, 0x5565, 0xC9B7, 0x715E, 0xC9B8, 0x7B5B, 0xC9B9, 0x6652, 0xC9BA, 0x73CA, 0xC9BB, 0x82EB, 0xC9BC, 0x6749, 0xC9BD, 0x5C71, + 0xC9BE, 0x5220, 0xC9BF, 0x717D, 0xC9C0, 0x886B, 0xC9C1, 0x95EA, 0xC9C2, 0x9655, 0xC9C3, 0x64C5, 0xC9C4, 0x8D61, 0xC9C5, 0x81B3, + 0xC9C6, 0x5584, 0xC9C7, 0x6C55, 0xC9C8, 0x6247, 0xC9C9, 0x7F2E, 0xC9CA, 0x5892, 0xC9CB, 0x4F24, 0xC9CC, 0x5546, 0xC9CD, 0x8D4F, + 0xC9CE, 0x664C, 0xC9CF, 0x4E0A, 0xC9D0, 0x5C1A, 0xC9D1, 0x88F3, 0xC9D2, 0x68A2, 0xC9D3, 0x634E, 0xC9D4, 0x7A0D, 0xC9D5, 0x70E7, + 0xC9D6, 0x828D, 0xC9D7, 0x52FA, 0xC9D8, 0x97F6, 0xC9D9, 0x5C11, 0xC9DA, 0x54E8, 0xC9DB, 0x90B5, 0xC9DC, 0x7ECD, 0xC9DD, 0x5962, + 0xC9DE, 0x8D4A, 0xC9DF, 0x86C7, 0xC9E0, 0x820C, 0xC9E1, 0x820D, 0xC9E2, 0x8D66, 0xC9E3, 0x6444, 0xC9E4, 0x5C04, 0xC9E5, 0x6151, + 0xC9E6, 0x6D89, 0xC9E7, 0x793E, 0xC9E8, 0x8BBE, 0xC9E9, 0x7837, 0xC9EA, 0x7533, 0xC9EB, 0x547B, 0xC9EC, 0x4F38, 0xC9ED, 0x8EAB, + 0xC9EE, 0x6DF1, 0xC9EF, 0x5A20, 0xC9F0, 0x7EC5, 0xC9F1, 0x795E, 0xC9F2, 0x6C88, 0xC9F3, 0x5BA1, 0xC9F4, 0x5A76, 0xC9F5, 0x751A, + 0xC9F6, 0x80BE, 0xC9F7, 0x614E, 0xC9F8, 0x6E17, 0xC9F9, 0x58F0, 0xC9FA, 0x751F, 0xC9FB, 0x7525, 0xC9FC, 0x7272, 0xC9FD, 0x5347, + 0xC9FE, 0x7EF3, 0xCA40, 0x8503, 0xCA41, 0x8504, 0xCA42, 0x8505, 0xCA43, 0x8506, 0xCA44, 0x8507, 0xCA45, 0x8508, 0xCA46, 0x8509, + 0xCA47, 0x850A, 0xCA48, 0x850B, 0xCA49, 0x850D, 0xCA4A, 0x850E, 0xCA4B, 0x850F, 0xCA4C, 0x8510, 0xCA4D, 0x8512, 0xCA4E, 0x8514, + 0xCA4F, 0x8515, 0xCA50, 0x8516, 0xCA51, 0x8518, 0xCA52, 0x8519, 0xCA53, 0x851B, 0xCA54, 0x851C, 0xCA55, 0x851D, 0xCA56, 0x851E, + 0xCA57, 0x8520, 0xCA58, 0x8522, 0xCA59, 0x8523, 0xCA5A, 0x8524, 0xCA5B, 0x8525, 0xCA5C, 0x8526, 0xCA5D, 0x8527, 0xCA5E, 0x8528, + 0xCA5F, 0x8529, 0xCA60, 0x852A, 0xCA61, 0x852D, 0xCA62, 0x852E, 0xCA63, 0x852F, 0xCA64, 0x8530, 0xCA65, 0x8531, 0xCA66, 0x8532, + 0xCA67, 0x8533, 0xCA68, 0x8534, 0xCA69, 0x8535, 0xCA6A, 0x8536, 0xCA6B, 0x853E, 0xCA6C, 0x853F, 0xCA6D, 0x8540, 0xCA6E, 0x8541, + 0xCA6F, 0x8542, 0xCA70, 0x8544, 0xCA71, 0x8545, 0xCA72, 0x8546, 0xCA73, 0x8547, 0xCA74, 0x854B, 0xCA75, 0x854C, 0xCA76, 0x854D, + 0xCA77, 0x854E, 0xCA78, 0x854F, 0xCA79, 0x8550, 0xCA7A, 0x8551, 0xCA7B, 0x8552, 0xCA7C, 0x8553, 0xCA7D, 0x8554, 0xCA7E, 0x8555, + 0xCA80, 0x8557, 0xCA81, 0x8558, 0xCA82, 0x855A, 0xCA83, 0x855B, 0xCA84, 0x855C, 0xCA85, 0x855D, 0xCA86, 0x855F, 0xCA87, 0x8560, + 0xCA88, 0x8561, 0xCA89, 0x8562, 0xCA8A, 0x8563, 0xCA8B, 0x8565, 0xCA8C, 0x8566, 0xCA8D, 0x8567, 0xCA8E, 0x8569, 0xCA8F, 0x856A, + 0xCA90, 0x856B, 0xCA91, 0x856C, 0xCA92, 0x856D, 0xCA93, 0x856E, 0xCA94, 0x856F, 0xCA95, 0x8570, 0xCA96, 0x8571, 0xCA97, 0x8573, + 0xCA98, 0x8575, 0xCA99, 0x8576, 0xCA9A, 0x8577, 0xCA9B, 0x8578, 0xCA9C, 0x857C, 0xCA9D, 0x857D, 0xCA9E, 0x857F, 0xCA9F, 0x8580, + 0xCAA0, 0x8581, 0xCAA1, 0x7701, 0xCAA2, 0x76DB, 0xCAA3, 0x5269, 0xCAA4, 0x80DC, 0xCAA5, 0x5723, 0xCAA6, 0x5E08, 0xCAA7, 0x5931, + 0xCAA8, 0x72EE, 0xCAA9, 0x65BD, 0xCAAA, 0x6E7F, 0xCAAB, 0x8BD7, 0xCAAC, 0x5C38, 0xCAAD, 0x8671, 0xCAAE, 0x5341, 0xCAAF, 0x77F3, + 0xCAB0, 0x62FE, 0xCAB1, 0x65F6, 0xCAB2, 0x4EC0, 0xCAB3, 0x98DF, 0xCAB4, 0x8680, 0xCAB5, 0x5B9E, 0xCAB6, 0x8BC6, 0xCAB7, 0x53F2, + 0xCAB8, 0x77E2, 0xCAB9, 0x4F7F, 0xCABA, 0x5C4E, 0xCABB, 0x9A76, 0xCABC, 0x59CB, 0xCABD, 0x5F0F, 0xCABE, 0x793A, 0xCABF, 0x58EB, + 0xCAC0, 0x4E16, 0xCAC1, 0x67FF, 0xCAC2, 0x4E8B, 0xCAC3, 0x62ED, 0xCAC4, 0x8A93, 0xCAC5, 0x901D, 0xCAC6, 0x52BF, 0xCAC7, 0x662F, + 0xCAC8, 0x55DC, 0xCAC9, 0x566C, 0xCACA, 0x9002, 0xCACB, 0x4ED5, 0xCACC, 0x4F8D, 0xCACD, 0x91CA, 0xCACE, 0x9970, 0xCACF, 0x6C0F, + 0xCAD0, 0x5E02, 0xCAD1, 0x6043, 0xCAD2, 0x5BA4, 0xCAD3, 0x89C6, 0xCAD4, 0x8BD5, 0xCAD5, 0x6536, 0xCAD6, 0x624B, 0xCAD7, 0x9996, + 0xCAD8, 0x5B88, 0xCAD9, 0x5BFF, 0xCADA, 0x6388, 0xCADB, 0x552E, 0xCADC, 0x53D7, 0xCADD, 0x7626, 0xCADE, 0x517D, 0xCADF, 0x852C, + 0xCAE0, 0x67A2, 0xCAE1, 0x68B3, 0xCAE2, 0x6B8A, 0xCAE3, 0x6292, 0xCAE4, 0x8F93, 0xCAE5, 0x53D4, 0xCAE6, 0x8212, 0xCAE7, 0x6DD1, + 0xCAE8, 0x758F, 0xCAE9, 0x4E66, 0xCAEA, 0x8D4E, 0xCAEB, 0x5B70, 0xCAEC, 0x719F, 0xCAED, 0x85AF, 0xCAEE, 0x6691, 0xCAEF, 0x66D9, + 0xCAF0, 0x7F72, 0xCAF1, 0x8700, 0xCAF2, 0x9ECD, 0xCAF3, 0x9F20, 0xCAF4, 0x5C5E, 0xCAF5, 0x672F, 0xCAF6, 0x8FF0, 0xCAF7, 0x6811, + 0xCAF8, 0x675F, 0xCAF9, 0x620D, 0xCAFA, 0x7AD6, 0xCAFB, 0x5885, 0xCAFC, 0x5EB6, 0xCAFD, 0x6570, 0xCAFE, 0x6F31, 0xCB40, 0x8582, + 0xCB41, 0x8583, 0xCB42, 0x8586, 0xCB43, 0x8588, 0xCB44, 0x8589, 0xCB45, 0x858A, 0xCB46, 0x858B, 0xCB47, 0x858C, 0xCB48, 0x858D, + 0xCB49, 0x858E, 0xCB4A, 0x8590, 0xCB4B, 0x8591, 0xCB4C, 0x8592, 0xCB4D, 0x8593, 0xCB4E, 0x8594, 0xCB4F, 0x8595, 0xCB50, 0x8596, + 0xCB51, 0x8597, 0xCB52, 0x8598, 0xCB53, 0x8599, 0xCB54, 0x859A, 0xCB55, 0x859D, 0xCB56, 0x859E, 0xCB57, 0x859F, 0xCB58, 0x85A0, + 0xCB59, 0x85A1, 0xCB5A, 0x85A2, 0xCB5B, 0x85A3, 0xCB5C, 0x85A5, 0xCB5D, 0x85A6, 0xCB5E, 0x85A7, 0xCB5F, 0x85A9, 0xCB60, 0x85AB, + 0xCB61, 0x85AC, 0xCB62, 0x85AD, 0xCB63, 0x85B1, 0xCB64, 0x85B2, 0xCB65, 0x85B3, 0xCB66, 0x85B4, 0xCB67, 0x85B5, 0xCB68, 0x85B6, + 0xCB69, 0x85B8, 0xCB6A, 0x85BA, 0xCB6B, 0x85BB, 0xCB6C, 0x85BC, 0xCB6D, 0x85BD, 0xCB6E, 0x85BE, 0xCB6F, 0x85BF, 0xCB70, 0x85C0, + 0xCB71, 0x85C2, 0xCB72, 0x85C3, 0xCB73, 0x85C4, 0xCB74, 0x85C5, 0xCB75, 0x85C6, 0xCB76, 0x85C7, 0xCB77, 0x85C8, 0xCB78, 0x85CA, + 0xCB79, 0x85CB, 0xCB7A, 0x85CC, 0xCB7B, 0x85CD, 0xCB7C, 0x85CE, 0xCB7D, 0x85D1, 0xCB7E, 0x85D2, 0xCB80, 0x85D4, 0xCB81, 0x85D6, + 0xCB82, 0x85D7, 0xCB83, 0x85D8, 0xCB84, 0x85D9, 0xCB85, 0x85DA, 0xCB86, 0x85DB, 0xCB87, 0x85DD, 0xCB88, 0x85DE, 0xCB89, 0x85DF, + 0xCB8A, 0x85E0, 0xCB8B, 0x85E1, 0xCB8C, 0x85E2, 0xCB8D, 0x85E3, 0xCB8E, 0x85E5, 0xCB8F, 0x85E6, 0xCB90, 0x85E7, 0xCB91, 0x85E8, + 0xCB92, 0x85EA, 0xCB93, 0x85EB, 0xCB94, 0x85EC, 0xCB95, 0x85ED, 0xCB96, 0x85EE, 0xCB97, 0x85EF, 0xCB98, 0x85F0, 0xCB99, 0x85F1, + 0xCB9A, 0x85F2, 0xCB9B, 0x85F3, 0xCB9C, 0x85F4, 0xCB9D, 0x85F5, 0xCB9E, 0x85F6, 0xCB9F, 0x85F7, 0xCBA0, 0x85F8, 0xCBA1, 0x6055, + 0xCBA2, 0x5237, 0xCBA3, 0x800D, 0xCBA4, 0x6454, 0xCBA5, 0x8870, 0xCBA6, 0x7529, 0xCBA7, 0x5E05, 0xCBA8, 0x6813, 0xCBA9, 0x62F4, + 0xCBAA, 0x971C, 0xCBAB, 0x53CC, 0xCBAC, 0x723D, 0xCBAD, 0x8C01, 0xCBAE, 0x6C34, 0xCBAF, 0x7761, 0xCBB0, 0x7A0E, 0xCBB1, 0x542E, + 0xCBB2, 0x77AC, 0xCBB3, 0x987A, 0xCBB4, 0x821C, 0xCBB5, 0x8BF4, 0xCBB6, 0x7855, 0xCBB7, 0x6714, 0xCBB8, 0x70C1, 0xCBB9, 0x65AF, + 0xCBBA, 0x6495, 0xCBBB, 0x5636, 0xCBBC, 0x601D, 0xCBBD, 0x79C1, 0xCBBE, 0x53F8, 0xCBBF, 0x4E1D, 0xCBC0, 0x6B7B, 0xCBC1, 0x8086, + 0xCBC2, 0x5BFA, 0xCBC3, 0x55E3, 0xCBC4, 0x56DB, 0xCBC5, 0x4F3A, 0xCBC6, 0x4F3C, 0xCBC7, 0x9972, 0xCBC8, 0x5DF3, 0xCBC9, 0x677E, + 0xCBCA, 0x8038, 0xCBCB, 0x6002, 0xCBCC, 0x9882, 0xCBCD, 0x9001, 0xCBCE, 0x5B8B, 0xCBCF, 0x8BBC, 0xCBD0, 0x8BF5, 0xCBD1, 0x641C, + 0xCBD2, 0x8258, 0xCBD3, 0x64DE, 0xCBD4, 0x55FD, 0xCBD5, 0x82CF, 0xCBD6, 0x9165, 0xCBD7, 0x4FD7, 0xCBD8, 0x7D20, 0xCBD9, 0x901F, + 0xCBDA, 0x7C9F, 0xCBDB, 0x50F3, 0xCBDC, 0x5851, 0xCBDD, 0x6EAF, 0xCBDE, 0x5BBF, 0xCBDF, 0x8BC9, 0xCBE0, 0x8083, 0xCBE1, 0x9178, + 0xCBE2, 0x849C, 0xCBE3, 0x7B97, 0xCBE4, 0x867D, 0xCBE5, 0x968B, 0xCBE6, 0x968F, 0xCBE7, 0x7EE5, 0xCBE8, 0x9AD3, 0xCBE9, 0x788E, + 0xCBEA, 0x5C81, 0xCBEB, 0x7A57, 0xCBEC, 0x9042, 0xCBED, 0x96A7, 0xCBEE, 0x795F, 0xCBEF, 0x5B59, 0xCBF0, 0x635F, 0xCBF1, 0x7B0B, + 0xCBF2, 0x84D1, 0xCBF3, 0x68AD, 0xCBF4, 0x5506, 0xCBF5, 0x7F29, 0xCBF6, 0x7410, 0xCBF7, 0x7D22, 0xCBF8, 0x9501, 0xCBF9, 0x6240, + 0xCBFA, 0x584C, 0xCBFB, 0x4ED6, 0xCBFC, 0x5B83, 0xCBFD, 0x5979, 0xCBFE, 0x5854, 0xCC40, 0x85F9, 0xCC41, 0x85FA, 0xCC42, 0x85FC, + 0xCC43, 0x85FD, 0xCC44, 0x85FE, 0xCC45, 0x8600, 0xCC46, 0x8601, 0xCC47, 0x8602, 0xCC48, 0x8603, 0xCC49, 0x8604, 0xCC4A, 0x8606, + 0xCC4B, 0x8607, 0xCC4C, 0x8608, 0xCC4D, 0x8609, 0xCC4E, 0x860A, 0xCC4F, 0x860B, 0xCC50, 0x860C, 0xCC51, 0x860D, 0xCC52, 0x860E, + 0xCC53, 0x860F, 0xCC54, 0x8610, 0xCC55, 0x8612, 0xCC56, 0x8613, 0xCC57, 0x8614, 0xCC58, 0x8615, 0xCC59, 0x8617, 0xCC5A, 0x8618, + 0xCC5B, 0x8619, 0xCC5C, 0x861A, 0xCC5D, 0x861B, 0xCC5E, 0x861C, 0xCC5F, 0x861D, 0xCC60, 0x861E, 0xCC61, 0x861F, 0xCC62, 0x8620, + 0xCC63, 0x8621, 0xCC64, 0x8622, 0xCC65, 0x8623, 0xCC66, 0x8624, 0xCC67, 0x8625, 0xCC68, 0x8626, 0xCC69, 0x8628, 0xCC6A, 0x862A, + 0xCC6B, 0x862B, 0xCC6C, 0x862C, 0xCC6D, 0x862D, 0xCC6E, 0x862E, 0xCC6F, 0x862F, 0xCC70, 0x8630, 0xCC71, 0x8631, 0xCC72, 0x8632, + 0xCC73, 0x8633, 0xCC74, 0x8634, 0xCC75, 0x8635, 0xCC76, 0x8636, 0xCC77, 0x8637, 0xCC78, 0x8639, 0xCC79, 0x863A, 0xCC7A, 0x863B, + 0xCC7B, 0x863D, 0xCC7C, 0x863E, 0xCC7D, 0x863F, 0xCC7E, 0x8640, 0xCC80, 0x8641, 0xCC81, 0x8642, 0xCC82, 0x8643, 0xCC83, 0x8644, + 0xCC84, 0x8645, 0xCC85, 0x8646, 0xCC86, 0x8647, 0xCC87, 0x8648, 0xCC88, 0x8649, 0xCC89, 0x864A, 0xCC8A, 0x864B, 0xCC8B, 0x864C, + 0xCC8C, 0x8652, 0xCC8D, 0x8653, 0xCC8E, 0x8655, 0xCC8F, 0x8656, 0xCC90, 0x8657, 0xCC91, 0x8658, 0xCC92, 0x8659, 0xCC93, 0x865B, + 0xCC94, 0x865C, 0xCC95, 0x865D, 0xCC96, 0x865F, 0xCC97, 0x8660, 0xCC98, 0x8661, 0xCC99, 0x8663, 0xCC9A, 0x8664, 0xCC9B, 0x8665, + 0xCC9C, 0x8666, 0xCC9D, 0x8667, 0xCC9E, 0x8668, 0xCC9F, 0x8669, 0xCCA0, 0x866A, 0xCCA1, 0x736D, 0xCCA2, 0x631E, 0xCCA3, 0x8E4B, + 0xCCA4, 0x8E0F, 0xCCA5, 0x80CE, 0xCCA6, 0x82D4, 0xCCA7, 0x62AC, 0xCCA8, 0x53F0, 0xCCA9, 0x6CF0, 0xCCAA, 0x915E, 0xCCAB, 0x592A, + 0xCCAC, 0x6001, 0xCCAD, 0x6C70, 0xCCAE, 0x574D, 0xCCAF, 0x644A, 0xCCB0, 0x8D2A, 0xCCB1, 0x762B, 0xCCB2, 0x6EE9, 0xCCB3, 0x575B, + 0xCCB4, 0x6A80, 0xCCB5, 0x75F0, 0xCCB6, 0x6F6D, 0xCCB7, 0x8C2D, 0xCCB8, 0x8C08, 0xCCB9, 0x5766, 0xCCBA, 0x6BEF, 0xCCBB, 0x8892, + 0xCCBC, 0x78B3, 0xCCBD, 0x63A2, 0xCCBE, 0x53F9, 0xCCBF, 0x70AD, 0xCCC0, 0x6C64, 0xCCC1, 0x5858, 0xCCC2, 0x642A, 0xCCC3, 0x5802, + 0xCCC4, 0x68E0, 0xCCC5, 0x819B, 0xCCC6, 0x5510, 0xCCC7, 0x7CD6, 0xCCC8, 0x5018, 0xCCC9, 0x8EBA, 0xCCCA, 0x6DCC, 0xCCCB, 0x8D9F, + 0xCCCC, 0x70EB, 0xCCCD, 0x638F, 0xCCCE, 0x6D9B, 0xCCCF, 0x6ED4, 0xCCD0, 0x7EE6, 0xCCD1, 0x8404, 0xCCD2, 0x6843, 0xCCD3, 0x9003, + 0xCCD4, 0x6DD8, 0xCCD5, 0x9676, 0xCCD6, 0x8BA8, 0xCCD7, 0x5957, 0xCCD8, 0x7279, 0xCCD9, 0x85E4, 0xCCDA, 0x817E, 0xCCDB, 0x75BC, + 0xCCDC, 0x8A8A, 0xCCDD, 0x68AF, 0xCCDE, 0x5254, 0xCCDF, 0x8E22, 0xCCE0, 0x9511, 0xCCE1, 0x63D0, 0xCCE2, 0x9898, 0xCCE3, 0x8E44, + 0xCCE4, 0x557C, 0xCCE5, 0x4F53, 0xCCE6, 0x66FF, 0xCCE7, 0x568F, 0xCCE8, 0x60D5, 0xCCE9, 0x6D95, 0xCCEA, 0x5243, 0xCCEB, 0x5C49, + 0xCCEC, 0x5929, 0xCCED, 0x6DFB, 0xCCEE, 0x586B, 0xCCEF, 0x7530, 0xCCF0, 0x751C, 0xCCF1, 0x606C, 0xCCF2, 0x8214, 0xCCF3, 0x8146, + 0xCCF4, 0x6311, 0xCCF5, 0x6761, 0xCCF6, 0x8FE2, 0xCCF7, 0x773A, 0xCCF8, 0x8DF3, 0xCCF9, 0x8D34, 0xCCFA, 0x94C1, 0xCCFB, 0x5E16, + 0xCCFC, 0x5385, 0xCCFD, 0x542C, 0xCCFE, 0x70C3, 0xCD40, 0x866D, 0xCD41, 0x866F, 0xCD42, 0x8670, 0xCD43, 0x8672, 0xCD44, 0x8673, + 0xCD45, 0x8674, 0xCD46, 0x8675, 0xCD47, 0x8676, 0xCD48, 0x8677, 0xCD49, 0x8678, 0xCD4A, 0x8683, 0xCD4B, 0x8684, 0xCD4C, 0x8685, + 0xCD4D, 0x8686, 0xCD4E, 0x8687, 0xCD4F, 0x8688, 0xCD50, 0x8689, 0xCD51, 0x868E, 0xCD52, 0x868F, 0xCD53, 0x8690, 0xCD54, 0x8691, + 0xCD55, 0x8692, 0xCD56, 0x8694, 0xCD57, 0x8696, 0xCD58, 0x8697, 0xCD59, 0x8698, 0xCD5A, 0x8699, 0xCD5B, 0x869A, 0xCD5C, 0x869B, + 0xCD5D, 0x869E, 0xCD5E, 0x869F, 0xCD5F, 0x86A0, 0xCD60, 0x86A1, 0xCD61, 0x86A2, 0xCD62, 0x86A5, 0xCD63, 0x86A6, 0xCD64, 0x86AB, + 0xCD65, 0x86AD, 0xCD66, 0x86AE, 0xCD67, 0x86B2, 0xCD68, 0x86B3, 0xCD69, 0x86B7, 0xCD6A, 0x86B8, 0xCD6B, 0x86B9, 0xCD6C, 0x86BB, + 0xCD6D, 0x86BC, 0xCD6E, 0x86BD, 0xCD6F, 0x86BE, 0xCD70, 0x86BF, 0xCD71, 0x86C1, 0xCD72, 0x86C2, 0xCD73, 0x86C3, 0xCD74, 0x86C5, + 0xCD75, 0x86C8, 0xCD76, 0x86CC, 0xCD77, 0x86CD, 0xCD78, 0x86D2, 0xCD79, 0x86D3, 0xCD7A, 0x86D5, 0xCD7B, 0x86D6, 0xCD7C, 0x86D7, + 0xCD7D, 0x86DA, 0xCD7E, 0x86DC, 0xCD80, 0x86DD, 0xCD81, 0x86E0, 0xCD82, 0x86E1, 0xCD83, 0x86E2, 0xCD84, 0x86E3, 0xCD85, 0x86E5, + 0xCD86, 0x86E6, 0xCD87, 0x86E7, 0xCD88, 0x86E8, 0xCD89, 0x86EA, 0xCD8A, 0x86EB, 0xCD8B, 0x86EC, 0xCD8C, 0x86EF, 0xCD8D, 0x86F5, + 0xCD8E, 0x86F6, 0xCD8F, 0x86F7, 0xCD90, 0x86FA, 0xCD91, 0x86FB, 0xCD92, 0x86FC, 0xCD93, 0x86FD, 0xCD94, 0x86FF, 0xCD95, 0x8701, + 0xCD96, 0x8704, 0xCD97, 0x8705, 0xCD98, 0x8706, 0xCD99, 0x870B, 0xCD9A, 0x870C, 0xCD9B, 0x870E, 0xCD9C, 0x870F, 0xCD9D, 0x8710, + 0xCD9E, 0x8711, 0xCD9F, 0x8714, 0xCDA0, 0x8716, 0xCDA1, 0x6C40, 0xCDA2, 0x5EF7, 0xCDA3, 0x505C, 0xCDA4, 0x4EAD, 0xCDA5, 0x5EAD, + 0xCDA6, 0x633A, 0xCDA7, 0x8247, 0xCDA8, 0x901A, 0xCDA9, 0x6850, 0xCDAA, 0x916E, 0xCDAB, 0x77B3, 0xCDAC, 0x540C, 0xCDAD, 0x94DC, + 0xCDAE, 0x5F64, 0xCDAF, 0x7AE5, 0xCDB0, 0x6876, 0xCDB1, 0x6345, 0xCDB2, 0x7B52, 0xCDB3, 0x7EDF, 0xCDB4, 0x75DB, 0xCDB5, 0x5077, + 0xCDB6, 0x6295, 0xCDB7, 0x5934, 0xCDB8, 0x900F, 0xCDB9, 0x51F8, 0xCDBA, 0x79C3, 0xCDBB, 0x7A81, 0xCDBC, 0x56FE, 0xCDBD, 0x5F92, + 0xCDBE, 0x9014, 0xCDBF, 0x6D82, 0xCDC0, 0x5C60, 0xCDC1, 0x571F, 0xCDC2, 0x5410, 0xCDC3, 0x5154, 0xCDC4, 0x6E4D, 0xCDC5, 0x56E2, + 0xCDC6, 0x63A8, 0xCDC7, 0x9893, 0xCDC8, 0x817F, 0xCDC9, 0x8715, 0xCDCA, 0x892A, 0xCDCB, 0x9000, 0xCDCC, 0x541E, 0xCDCD, 0x5C6F, + 0xCDCE, 0x81C0, 0xCDCF, 0x62D6, 0xCDD0, 0x6258, 0xCDD1, 0x8131, 0xCDD2, 0x9E35, 0xCDD3, 0x9640, 0xCDD4, 0x9A6E, 0xCDD5, 0x9A7C, + 0xCDD6, 0x692D, 0xCDD7, 0x59A5, 0xCDD8, 0x62D3, 0xCDD9, 0x553E, 0xCDDA, 0x6316, 0xCDDB, 0x54C7, 0xCDDC, 0x86D9, 0xCDDD, 0x6D3C, + 0xCDDE, 0x5A03, 0xCDDF, 0x74E6, 0xCDE0, 0x889C, 0xCDE1, 0x6B6A, 0xCDE2, 0x5916, 0xCDE3, 0x8C4C, 0xCDE4, 0x5F2F, 0xCDE5, 0x6E7E, + 0xCDE6, 0x73A9, 0xCDE7, 0x987D, 0xCDE8, 0x4E38, 0xCDE9, 0x70F7, 0xCDEA, 0x5B8C, 0xCDEB, 0x7897, 0xCDEC, 0x633D, 0xCDED, 0x665A, + 0xCDEE, 0x7696, 0xCDEF, 0x60CB, 0xCDF0, 0x5B9B, 0xCDF1, 0x5A49, 0xCDF2, 0x4E07, 0xCDF3, 0x8155, 0xCDF4, 0x6C6A, 0xCDF5, 0x738B, + 0xCDF6, 0x4EA1, 0xCDF7, 0x6789, 0xCDF8, 0x7F51, 0xCDF9, 0x5F80, 0xCDFA, 0x65FA, 0xCDFB, 0x671B, 0xCDFC, 0x5FD8, 0xCDFD, 0x5984, + 0xCDFE, 0x5A01, 0xCE40, 0x8719, 0xCE41, 0x871B, 0xCE42, 0x871D, 0xCE43, 0x871F, 0xCE44, 0x8720, 0xCE45, 0x8724, 0xCE46, 0x8726, + 0xCE47, 0x8727, 0xCE48, 0x8728, 0xCE49, 0x872A, 0xCE4A, 0x872B, 0xCE4B, 0x872C, 0xCE4C, 0x872D, 0xCE4D, 0x872F, 0xCE4E, 0x8730, + 0xCE4F, 0x8732, 0xCE50, 0x8733, 0xCE51, 0x8735, 0xCE52, 0x8736, 0xCE53, 0x8738, 0xCE54, 0x8739, 0xCE55, 0x873A, 0xCE56, 0x873C, + 0xCE57, 0x873D, 0xCE58, 0x8740, 0xCE59, 0x8741, 0xCE5A, 0x8742, 0xCE5B, 0x8743, 0xCE5C, 0x8744, 0xCE5D, 0x8745, 0xCE5E, 0x8746, + 0xCE5F, 0x874A, 0xCE60, 0x874B, 0xCE61, 0x874D, 0xCE62, 0x874F, 0xCE63, 0x8750, 0xCE64, 0x8751, 0xCE65, 0x8752, 0xCE66, 0x8754, + 0xCE67, 0x8755, 0xCE68, 0x8756, 0xCE69, 0x8758, 0xCE6A, 0x875A, 0xCE6B, 0x875B, 0xCE6C, 0x875C, 0xCE6D, 0x875D, 0xCE6E, 0x875E, + 0xCE6F, 0x875F, 0xCE70, 0x8761, 0xCE71, 0x8762, 0xCE72, 0x8766, 0xCE73, 0x8767, 0xCE74, 0x8768, 0xCE75, 0x8769, 0xCE76, 0x876A, + 0xCE77, 0x876B, 0xCE78, 0x876C, 0xCE79, 0x876D, 0xCE7A, 0x876F, 0xCE7B, 0x8771, 0xCE7C, 0x8772, 0xCE7D, 0x8773, 0xCE7E, 0x8775, + 0xCE80, 0x8777, 0xCE81, 0x8778, 0xCE82, 0x8779, 0xCE83, 0x877A, 0xCE84, 0x877F, 0xCE85, 0x8780, 0xCE86, 0x8781, 0xCE87, 0x8784, + 0xCE88, 0x8786, 0xCE89, 0x8787, 0xCE8A, 0x8789, 0xCE8B, 0x878A, 0xCE8C, 0x878C, 0xCE8D, 0x878E, 0xCE8E, 0x878F, 0xCE8F, 0x8790, + 0xCE90, 0x8791, 0xCE91, 0x8792, 0xCE92, 0x8794, 0xCE93, 0x8795, 0xCE94, 0x8796, 0xCE95, 0x8798, 0xCE96, 0x8799, 0xCE97, 0x879A, + 0xCE98, 0x879B, 0xCE99, 0x879C, 0xCE9A, 0x879D, 0xCE9B, 0x879E, 0xCE9C, 0x87A0, 0xCE9D, 0x87A1, 0xCE9E, 0x87A2, 0xCE9F, 0x87A3, + 0xCEA0, 0x87A4, 0xCEA1, 0x5DCD, 0xCEA2, 0x5FAE, 0xCEA3, 0x5371, 0xCEA4, 0x97E6, 0xCEA5, 0x8FDD, 0xCEA6, 0x6845, 0xCEA7, 0x56F4, + 0xCEA8, 0x552F, 0xCEA9, 0x60DF, 0xCEAA, 0x4E3A, 0xCEAB, 0x6F4D, 0xCEAC, 0x7EF4, 0xCEAD, 0x82C7, 0xCEAE, 0x840E, 0xCEAF, 0x59D4, + 0xCEB0, 0x4F1F, 0xCEB1, 0x4F2A, 0xCEB2, 0x5C3E, 0xCEB3, 0x7EAC, 0xCEB4, 0x672A, 0xCEB5, 0x851A, 0xCEB6, 0x5473, 0xCEB7, 0x754F, + 0xCEB8, 0x80C3, 0xCEB9, 0x5582, 0xCEBA, 0x9B4F, 0xCEBB, 0x4F4D, 0xCEBC, 0x6E2D, 0xCEBD, 0x8C13, 0xCEBE, 0x5C09, 0xCEBF, 0x6170, + 0xCEC0, 0x536B, 0xCEC1, 0x761F, 0xCEC2, 0x6E29, 0xCEC3, 0x868A, 0xCEC4, 0x6587, 0xCEC5, 0x95FB, 0xCEC6, 0x7EB9, 0xCEC7, 0x543B, + 0xCEC8, 0x7A33, 0xCEC9, 0x7D0A, 0xCECA, 0x95EE, 0xCECB, 0x55E1, 0xCECC, 0x7FC1, 0xCECD, 0x74EE, 0xCECE, 0x631D, 0xCECF, 0x8717, + 0xCED0, 0x6DA1, 0xCED1, 0x7A9D, 0xCED2, 0x6211, 0xCED3, 0x65A1, 0xCED4, 0x5367, 0xCED5, 0x63E1, 0xCED6, 0x6C83, 0xCED7, 0x5DEB, + 0xCED8, 0x545C, 0xCED9, 0x94A8, 0xCEDA, 0x4E4C, 0xCEDB, 0x6C61, 0xCEDC, 0x8BEC, 0xCEDD, 0x5C4B, 0xCEDE, 0x65E0, 0xCEDF, 0x829C, + 0xCEE0, 0x68A7, 0xCEE1, 0x543E, 0xCEE2, 0x5434, 0xCEE3, 0x6BCB, 0xCEE4, 0x6B66, 0xCEE5, 0x4E94, 0xCEE6, 0x6342, 0xCEE7, 0x5348, + 0xCEE8, 0x821E, 0xCEE9, 0x4F0D, 0xCEEA, 0x4FAE, 0xCEEB, 0x575E, 0xCEEC, 0x620A, 0xCEED, 0x96FE, 0xCEEE, 0x6664, 0xCEEF, 0x7269, + 0xCEF0, 0x52FF, 0xCEF1, 0x52A1, 0xCEF2, 0x609F, 0xCEF3, 0x8BEF, 0xCEF4, 0x6614, 0xCEF5, 0x7199, 0xCEF6, 0x6790, 0xCEF7, 0x897F, + 0xCEF8, 0x7852, 0xCEF9, 0x77FD, 0xCEFA, 0x6670, 0xCEFB, 0x563B, 0xCEFC, 0x5438, 0xCEFD, 0x9521, 0xCEFE, 0x727A, 0xCF40, 0x87A5, + 0xCF41, 0x87A6, 0xCF42, 0x87A7, 0xCF43, 0x87A9, 0xCF44, 0x87AA, 0xCF45, 0x87AE, 0xCF46, 0x87B0, 0xCF47, 0x87B1, 0xCF48, 0x87B2, + 0xCF49, 0x87B4, 0xCF4A, 0x87B6, 0xCF4B, 0x87B7, 0xCF4C, 0x87B8, 0xCF4D, 0x87B9, 0xCF4E, 0x87BB, 0xCF4F, 0x87BC, 0xCF50, 0x87BE, + 0xCF51, 0x87BF, 0xCF52, 0x87C1, 0xCF53, 0x87C2, 0xCF54, 0x87C3, 0xCF55, 0x87C4, 0xCF56, 0x87C5, 0xCF57, 0x87C7, 0xCF58, 0x87C8, + 0xCF59, 0x87C9, 0xCF5A, 0x87CC, 0xCF5B, 0x87CD, 0xCF5C, 0x87CE, 0xCF5D, 0x87CF, 0xCF5E, 0x87D0, 0xCF5F, 0x87D4, 0xCF60, 0x87D5, + 0xCF61, 0x87D6, 0xCF62, 0x87D7, 0xCF63, 0x87D8, 0xCF64, 0x87D9, 0xCF65, 0x87DA, 0xCF66, 0x87DC, 0xCF67, 0x87DD, 0xCF68, 0x87DE, + 0xCF69, 0x87DF, 0xCF6A, 0x87E1, 0xCF6B, 0x87E2, 0xCF6C, 0x87E3, 0xCF6D, 0x87E4, 0xCF6E, 0x87E6, 0xCF6F, 0x87E7, 0xCF70, 0x87E8, + 0xCF71, 0x87E9, 0xCF72, 0x87EB, 0xCF73, 0x87EC, 0xCF74, 0x87ED, 0xCF75, 0x87EF, 0xCF76, 0x87F0, 0xCF77, 0x87F1, 0xCF78, 0x87F2, + 0xCF79, 0x87F3, 0xCF7A, 0x87F4, 0xCF7B, 0x87F5, 0xCF7C, 0x87F6, 0xCF7D, 0x87F7, 0xCF7E, 0x87F8, 0xCF80, 0x87FA, 0xCF81, 0x87FB, + 0xCF82, 0x87FC, 0xCF83, 0x87FD, 0xCF84, 0x87FF, 0xCF85, 0x8800, 0xCF86, 0x8801, 0xCF87, 0x8802, 0xCF88, 0x8804, 0xCF89, 0x8805, + 0xCF8A, 0x8806, 0xCF8B, 0x8807, 0xCF8C, 0x8808, 0xCF8D, 0x8809, 0xCF8E, 0x880B, 0xCF8F, 0x880C, 0xCF90, 0x880D, 0xCF91, 0x880E, + 0xCF92, 0x880F, 0xCF93, 0x8810, 0xCF94, 0x8811, 0xCF95, 0x8812, 0xCF96, 0x8814, 0xCF97, 0x8817, 0xCF98, 0x8818, 0xCF99, 0x8819, + 0xCF9A, 0x881A, 0xCF9B, 0x881C, 0xCF9C, 0x881D, 0xCF9D, 0x881E, 0xCF9E, 0x881F, 0xCF9F, 0x8820, 0xCFA0, 0x8823, 0xCFA1, 0x7A00, + 0xCFA2, 0x606F, 0xCFA3, 0x5E0C, 0xCFA4, 0x6089, 0xCFA5, 0x819D, 0xCFA6, 0x5915, 0xCFA7, 0x60DC, 0xCFA8, 0x7184, 0xCFA9, 0x70EF, + 0xCFAA, 0x6EAA, 0xCFAB, 0x6C50, 0xCFAC, 0x7280, 0xCFAD, 0x6A84, 0xCFAE, 0x88AD, 0xCFAF, 0x5E2D, 0xCFB0, 0x4E60, 0xCFB1, 0x5AB3, + 0xCFB2, 0x559C, 0xCFB3, 0x94E3, 0xCFB4, 0x6D17, 0xCFB5, 0x7CFB, 0xCFB6, 0x9699, 0xCFB7, 0x620F, 0xCFB8, 0x7EC6, 0xCFB9, 0x778E, + 0xCFBA, 0x867E, 0xCFBB, 0x5323, 0xCFBC, 0x971E, 0xCFBD, 0x8F96, 0xCFBE, 0x6687, 0xCFBF, 0x5CE1, 0xCFC0, 0x4FA0, 0xCFC1, 0x72ED, + 0xCFC2, 0x4E0B, 0xCFC3, 0x53A6, 0xCFC4, 0x590F, 0xCFC5, 0x5413, 0xCFC6, 0x6380, 0xCFC7, 0x9528, 0xCFC8, 0x5148, 0xCFC9, 0x4ED9, + 0xCFCA, 0x9C9C, 0xCFCB, 0x7EA4, 0xCFCC, 0x54B8, 0xCFCD, 0x8D24, 0xCFCE, 0x8854, 0xCFCF, 0x8237, 0xCFD0, 0x95F2, 0xCFD1, 0x6D8E, + 0xCFD2, 0x5F26, 0xCFD3, 0x5ACC, 0xCFD4, 0x663E, 0xCFD5, 0x9669, 0xCFD6, 0x73B0, 0xCFD7, 0x732E, 0xCFD8, 0x53BF, 0xCFD9, 0x817A, + 0xCFDA, 0x9985, 0xCFDB, 0x7FA1, 0xCFDC, 0x5BAA, 0xCFDD, 0x9677, 0xCFDE, 0x9650, 0xCFDF, 0x7EBF, 0xCFE0, 0x76F8, 0xCFE1, 0x53A2, + 0xCFE2, 0x9576, 0xCFE3, 0x9999, 0xCFE4, 0x7BB1, 0xCFE5, 0x8944, 0xCFE6, 0x6E58, 0xCFE7, 0x4E61, 0xCFE8, 0x7FD4, 0xCFE9, 0x7965, + 0xCFEA, 0x8BE6, 0xCFEB, 0x60F3, 0xCFEC, 0x54CD, 0xCFED, 0x4EAB, 0xCFEE, 0x9879, 0xCFEF, 0x5DF7, 0xCFF0, 0x6A61, 0xCFF1, 0x50CF, + 0xCFF2, 0x5411, 0xCFF3, 0x8C61, 0xCFF4, 0x8427, 0xCFF5, 0x785D, 0xCFF6, 0x9704, 0xCFF7, 0x524A, 0xCFF8, 0x54EE, 0xCFF9, 0x56A3, + 0xCFFA, 0x9500, 0xCFFB, 0x6D88, 0xCFFC, 0x5BB5, 0xCFFD, 0x6DC6, 0xCFFE, 0x6653, 0xD040, 0x8824, 0xD041, 0x8825, 0xD042, 0x8826, + 0xD043, 0x8827, 0xD044, 0x8828, 0xD045, 0x8829, 0xD046, 0x882A, 0xD047, 0x882B, 0xD048, 0x882C, 0xD049, 0x882D, 0xD04A, 0x882E, + 0xD04B, 0x882F, 0xD04C, 0x8830, 0xD04D, 0x8831, 0xD04E, 0x8833, 0xD04F, 0x8834, 0xD050, 0x8835, 0xD051, 0x8836, 0xD052, 0x8837, + 0xD053, 0x8838, 0xD054, 0x883A, 0xD055, 0x883B, 0xD056, 0x883D, 0xD057, 0x883E, 0xD058, 0x883F, 0xD059, 0x8841, 0xD05A, 0x8842, + 0xD05B, 0x8843, 0xD05C, 0x8846, 0xD05D, 0x8847, 0xD05E, 0x8848, 0xD05F, 0x8849, 0xD060, 0x884A, 0xD061, 0x884B, 0xD062, 0x884E, + 0xD063, 0x884F, 0xD064, 0x8850, 0xD065, 0x8851, 0xD066, 0x8852, 0xD067, 0x8853, 0xD068, 0x8855, 0xD069, 0x8856, 0xD06A, 0x8858, + 0xD06B, 0x885A, 0xD06C, 0x885B, 0xD06D, 0x885C, 0xD06E, 0x885D, 0xD06F, 0x885E, 0xD070, 0x885F, 0xD071, 0x8860, 0xD072, 0x8866, + 0xD073, 0x8867, 0xD074, 0x886A, 0xD075, 0x886D, 0xD076, 0x886F, 0xD077, 0x8871, 0xD078, 0x8873, 0xD079, 0x8874, 0xD07A, 0x8875, + 0xD07B, 0x8876, 0xD07C, 0x8878, 0xD07D, 0x8879, 0xD07E, 0x887A, 0xD080, 0x887B, 0xD081, 0x887C, 0xD082, 0x8880, 0xD083, 0x8883, + 0xD084, 0x8886, 0xD085, 0x8887, 0xD086, 0x8889, 0xD087, 0x888A, 0xD088, 0x888C, 0xD089, 0x888E, 0xD08A, 0x888F, 0xD08B, 0x8890, + 0xD08C, 0x8891, 0xD08D, 0x8893, 0xD08E, 0x8894, 0xD08F, 0x8895, 0xD090, 0x8897, 0xD091, 0x8898, 0xD092, 0x8899, 0xD093, 0x889A, + 0xD094, 0x889B, 0xD095, 0x889D, 0xD096, 0x889E, 0xD097, 0x889F, 0xD098, 0x88A0, 0xD099, 0x88A1, 0xD09A, 0x88A3, 0xD09B, 0x88A5, + 0xD09C, 0x88A6, 0xD09D, 0x88A7, 0xD09E, 0x88A8, 0xD09F, 0x88A9, 0xD0A0, 0x88AA, 0xD0A1, 0x5C0F, 0xD0A2, 0x5B5D, 0xD0A3, 0x6821, + 0xD0A4, 0x8096, 0xD0A5, 0x5578, 0xD0A6, 0x7B11, 0xD0A7, 0x6548, 0xD0A8, 0x6954, 0xD0A9, 0x4E9B, 0xD0AA, 0x6B47, 0xD0AB, 0x874E, + 0xD0AC, 0x978B, 0xD0AD, 0x534F, 0xD0AE, 0x631F, 0xD0AF, 0x643A, 0xD0B0, 0x90AA, 0xD0B1, 0x659C, 0xD0B2, 0x80C1, 0xD0B3, 0x8C10, + 0xD0B4, 0x5199, 0xD0B5, 0x68B0, 0xD0B6, 0x5378, 0xD0B7, 0x87F9, 0xD0B8, 0x61C8, 0xD0B9, 0x6CC4, 0xD0BA, 0x6CFB, 0xD0BB, 0x8C22, + 0xD0BC, 0x5C51, 0xD0BD, 0x85AA, 0xD0BE, 0x82AF, 0xD0BF, 0x950C, 0xD0C0, 0x6B23, 0xD0C1, 0x8F9B, 0xD0C2, 0x65B0, 0xD0C3, 0x5FFB, + 0xD0C4, 0x5FC3, 0xD0C5, 0x4FE1, 0xD0C6, 0x8845, 0xD0C7, 0x661F, 0xD0C8, 0x8165, 0xD0C9, 0x7329, 0xD0CA, 0x60FA, 0xD0CB, 0x5174, + 0xD0CC, 0x5211, 0xD0CD, 0x578B, 0xD0CE, 0x5F62, 0xD0CF, 0x90A2, 0xD0D0, 0x884C, 0xD0D1, 0x9192, 0xD0D2, 0x5E78, 0xD0D3, 0x674F, + 0xD0D4, 0x6027, 0xD0D5, 0x59D3, 0xD0D6, 0x5144, 0xD0D7, 0x51F6, 0xD0D8, 0x80F8, 0xD0D9, 0x5308, 0xD0DA, 0x6C79, 0xD0DB, 0x96C4, + 0xD0DC, 0x718A, 0xD0DD, 0x4F11, 0xD0DE, 0x4FEE, 0xD0DF, 0x7F9E, 0xD0E0, 0x673D, 0xD0E1, 0x55C5, 0xD0E2, 0x9508, 0xD0E3, 0x79C0, + 0xD0E4, 0x8896, 0xD0E5, 0x7EE3, 0xD0E6, 0x589F, 0xD0E7, 0x620C, 0xD0E8, 0x9700, 0xD0E9, 0x865A, 0xD0EA, 0x5618, 0xD0EB, 0x987B, + 0xD0EC, 0x5F90, 0xD0ED, 0x8BB8, 0xD0EE, 0x84C4, 0xD0EF, 0x9157, 0xD0F0, 0x53D9, 0xD0F1, 0x65ED, 0xD0F2, 0x5E8F, 0xD0F3, 0x755C, + 0xD0F4, 0x6064, 0xD0F5, 0x7D6E, 0xD0F6, 0x5A7F, 0xD0F7, 0x7EEA, 0xD0F8, 0x7EED, 0xD0F9, 0x8F69, 0xD0FA, 0x55A7, 0xD0FB, 0x5BA3, + 0xD0FC, 0x60AC, 0xD0FD, 0x65CB, 0xD0FE, 0x7384, 0xD140, 0x88AC, 0xD141, 0x88AE, 0xD142, 0x88AF, 0xD143, 0x88B0, 0xD144, 0x88B2, + 0xD145, 0x88B3, 0xD146, 0x88B4, 0xD147, 0x88B5, 0xD148, 0x88B6, 0xD149, 0x88B8, 0xD14A, 0x88B9, 0xD14B, 0x88BA, 0xD14C, 0x88BB, + 0xD14D, 0x88BD, 0xD14E, 0x88BE, 0xD14F, 0x88BF, 0xD150, 0x88C0, 0xD151, 0x88C3, 0xD152, 0x88C4, 0xD153, 0x88C7, 0xD154, 0x88C8, + 0xD155, 0x88CA, 0xD156, 0x88CB, 0xD157, 0x88CC, 0xD158, 0x88CD, 0xD159, 0x88CF, 0xD15A, 0x88D0, 0xD15B, 0x88D1, 0xD15C, 0x88D3, + 0xD15D, 0x88D6, 0xD15E, 0x88D7, 0xD15F, 0x88DA, 0xD160, 0x88DB, 0xD161, 0x88DC, 0xD162, 0x88DD, 0xD163, 0x88DE, 0xD164, 0x88E0, + 0xD165, 0x88E1, 0xD166, 0x88E6, 0xD167, 0x88E7, 0xD168, 0x88E9, 0xD169, 0x88EA, 0xD16A, 0x88EB, 0xD16B, 0x88EC, 0xD16C, 0x88ED, + 0xD16D, 0x88EE, 0xD16E, 0x88EF, 0xD16F, 0x88F2, 0xD170, 0x88F5, 0xD171, 0x88F6, 0xD172, 0x88F7, 0xD173, 0x88FA, 0xD174, 0x88FB, + 0xD175, 0x88FD, 0xD176, 0x88FF, 0xD177, 0x8900, 0xD178, 0x8901, 0xD179, 0x8903, 0xD17A, 0x8904, 0xD17B, 0x8905, 0xD17C, 0x8906, + 0xD17D, 0x8907, 0xD17E, 0x8908, 0xD180, 0x8909, 0xD181, 0x890B, 0xD182, 0x890C, 0xD183, 0x890D, 0xD184, 0x890E, 0xD185, 0x890F, + 0xD186, 0x8911, 0xD187, 0x8914, 0xD188, 0x8915, 0xD189, 0x8916, 0xD18A, 0x8917, 0xD18B, 0x8918, 0xD18C, 0x891C, 0xD18D, 0x891D, + 0xD18E, 0x891E, 0xD18F, 0x891F, 0xD190, 0x8920, 0xD191, 0x8922, 0xD192, 0x8923, 0xD193, 0x8924, 0xD194, 0x8926, 0xD195, 0x8927, + 0xD196, 0x8928, 0xD197, 0x8929, 0xD198, 0x892C, 0xD199, 0x892D, 0xD19A, 0x892E, 0xD19B, 0x892F, 0xD19C, 0x8931, 0xD19D, 0x8932, + 0xD19E, 0x8933, 0xD19F, 0x8935, 0xD1A0, 0x8937, 0xD1A1, 0x9009, 0xD1A2, 0x7663, 0xD1A3, 0x7729, 0xD1A4, 0x7EDA, 0xD1A5, 0x9774, + 0xD1A6, 0x859B, 0xD1A7, 0x5B66, 0xD1A8, 0x7A74, 0xD1A9, 0x96EA, 0xD1AA, 0x8840, 0xD1AB, 0x52CB, 0xD1AC, 0x718F, 0xD1AD, 0x5FAA, + 0xD1AE, 0x65EC, 0xD1AF, 0x8BE2, 0xD1B0, 0x5BFB, 0xD1B1, 0x9A6F, 0xD1B2, 0x5DE1, 0xD1B3, 0x6B89, 0xD1B4, 0x6C5B, 0xD1B5, 0x8BAD, + 0xD1B6, 0x8BAF, 0xD1B7, 0x900A, 0xD1B8, 0x8FC5, 0xD1B9, 0x538B, 0xD1BA, 0x62BC, 0xD1BB, 0x9E26, 0xD1BC, 0x9E2D, 0xD1BD, 0x5440, + 0xD1BE, 0x4E2B, 0xD1BF, 0x82BD, 0xD1C0, 0x7259, 0xD1C1, 0x869C, 0xD1C2, 0x5D16, 0xD1C3, 0x8859, 0xD1C4, 0x6DAF, 0xD1C5, 0x96C5, + 0xD1C6, 0x54D1, 0xD1C7, 0x4E9A, 0xD1C8, 0x8BB6, 0xD1C9, 0x7109, 0xD1CA, 0x54BD, 0xD1CB, 0x9609, 0xD1CC, 0x70DF, 0xD1CD, 0x6DF9, + 0xD1CE, 0x76D0, 0xD1CF, 0x4E25, 0xD1D0, 0x7814, 0xD1D1, 0x8712, 0xD1D2, 0x5CA9, 0xD1D3, 0x5EF6, 0xD1D4, 0x8A00, 0xD1D5, 0x989C, + 0xD1D6, 0x960E, 0xD1D7, 0x708E, 0xD1D8, 0x6CBF, 0xD1D9, 0x5944, 0xD1DA, 0x63A9, 0xD1DB, 0x773C, 0xD1DC, 0x884D, 0xD1DD, 0x6F14, + 0xD1DE, 0x8273, 0xD1DF, 0x5830, 0xD1E0, 0x71D5, 0xD1E1, 0x538C, 0xD1E2, 0x781A, 0xD1E3, 0x96C1, 0xD1E4, 0x5501, 0xD1E5, 0x5F66, + 0xD1E6, 0x7130, 0xD1E7, 0x5BB4, 0xD1E8, 0x8C1A, 0xD1E9, 0x9A8C, 0xD1EA, 0x6B83, 0xD1EB, 0x592E, 0xD1EC, 0x9E2F, 0xD1ED, 0x79E7, + 0xD1EE, 0x6768, 0xD1EF, 0x626C, 0xD1F0, 0x4F6F, 0xD1F1, 0x75A1, 0xD1F2, 0x7F8A, 0xD1F3, 0x6D0B, 0xD1F4, 0x9633, 0xD1F5, 0x6C27, + 0xD1F6, 0x4EF0, 0xD1F7, 0x75D2, 0xD1F8, 0x517B, 0xD1F9, 0x6837, 0xD1FA, 0x6F3E, 0xD1FB, 0x9080, 0xD1FC, 0x8170, 0xD1FD, 0x5996, + 0xD1FE, 0x7476, 0xD240, 0x8938, 0xD241, 0x8939, 0xD242, 0x893A, 0xD243, 0x893B, 0xD244, 0x893C, 0xD245, 0x893D, 0xD246, 0x893E, + 0xD247, 0x893F, 0xD248, 0x8940, 0xD249, 0x8942, 0xD24A, 0x8943, 0xD24B, 0x8945, 0xD24C, 0x8946, 0xD24D, 0x8947, 0xD24E, 0x8948, + 0xD24F, 0x8949, 0xD250, 0x894A, 0xD251, 0x894B, 0xD252, 0x894C, 0xD253, 0x894D, 0xD254, 0x894E, 0xD255, 0x894F, 0xD256, 0x8950, + 0xD257, 0x8951, 0xD258, 0x8952, 0xD259, 0x8953, 0xD25A, 0x8954, 0xD25B, 0x8955, 0xD25C, 0x8956, 0xD25D, 0x8957, 0xD25E, 0x8958, + 0xD25F, 0x8959, 0xD260, 0x895A, 0xD261, 0x895B, 0xD262, 0x895C, 0xD263, 0x895D, 0xD264, 0x8960, 0xD265, 0x8961, 0xD266, 0x8962, + 0xD267, 0x8963, 0xD268, 0x8964, 0xD269, 0x8965, 0xD26A, 0x8967, 0xD26B, 0x8968, 0xD26C, 0x8969, 0xD26D, 0x896A, 0xD26E, 0x896B, + 0xD26F, 0x896C, 0xD270, 0x896D, 0xD271, 0x896E, 0xD272, 0x896F, 0xD273, 0x8970, 0xD274, 0x8971, 0xD275, 0x8972, 0xD276, 0x8973, + 0xD277, 0x8974, 0xD278, 0x8975, 0xD279, 0x8976, 0xD27A, 0x8977, 0xD27B, 0x8978, 0xD27C, 0x8979, 0xD27D, 0x897A, 0xD27E, 0x897C, + 0xD280, 0x897D, 0xD281, 0x897E, 0xD282, 0x8980, 0xD283, 0x8982, 0xD284, 0x8984, 0xD285, 0x8985, 0xD286, 0x8987, 0xD287, 0x8988, + 0xD288, 0x8989, 0xD289, 0x898A, 0xD28A, 0x898B, 0xD28B, 0x898C, 0xD28C, 0x898D, 0xD28D, 0x898E, 0xD28E, 0x898F, 0xD28F, 0x8990, + 0xD290, 0x8991, 0xD291, 0x8992, 0xD292, 0x8993, 0xD293, 0x8994, 0xD294, 0x8995, 0xD295, 0x8996, 0xD296, 0x8997, 0xD297, 0x8998, + 0xD298, 0x8999, 0xD299, 0x899A, 0xD29A, 0x899B, 0xD29B, 0x899C, 0xD29C, 0x899D, 0xD29D, 0x899E, 0xD29E, 0x899F, 0xD29F, 0x89A0, + 0xD2A0, 0x89A1, 0xD2A1, 0x6447, 0xD2A2, 0x5C27, 0xD2A3, 0x9065, 0xD2A4, 0x7A91, 0xD2A5, 0x8C23, 0xD2A6, 0x59DA, 0xD2A7, 0x54AC, + 0xD2A8, 0x8200, 0xD2A9, 0x836F, 0xD2AA, 0x8981, 0xD2AB, 0x8000, 0xD2AC, 0x6930, 0xD2AD, 0x564E, 0xD2AE, 0x8036, 0xD2AF, 0x7237, + 0xD2B0, 0x91CE, 0xD2B1, 0x51B6, 0xD2B2, 0x4E5F, 0xD2B3, 0x9875, 0xD2B4, 0x6396, 0xD2B5, 0x4E1A, 0xD2B6, 0x53F6, 0xD2B7, 0x66F3, + 0xD2B8, 0x814B, 0xD2B9, 0x591C, 0xD2BA, 0x6DB2, 0xD2BB, 0x4E00, 0xD2BC, 0x58F9, 0xD2BD, 0x533B, 0xD2BE, 0x63D6, 0xD2BF, 0x94F1, + 0xD2C0, 0x4F9D, 0xD2C1, 0x4F0A, 0xD2C2, 0x8863, 0xD2C3, 0x9890, 0xD2C4, 0x5937, 0xD2C5, 0x9057, 0xD2C6, 0x79FB, 0xD2C7, 0x4EEA, + 0xD2C8, 0x80F0, 0xD2C9, 0x7591, 0xD2CA, 0x6C82, 0xD2CB, 0x5B9C, 0xD2CC, 0x59E8, 0xD2CD, 0x5F5D, 0xD2CE, 0x6905, 0xD2CF, 0x8681, + 0xD2D0, 0x501A, 0xD2D1, 0x5DF2, 0xD2D2, 0x4E59, 0xD2D3, 0x77E3, 0xD2D4, 0x4EE5, 0xD2D5, 0x827A, 0xD2D6, 0x6291, 0xD2D7, 0x6613, + 0xD2D8, 0x9091, 0xD2D9, 0x5C79, 0xD2DA, 0x4EBF, 0xD2DB, 0x5F79, 0xD2DC, 0x81C6, 0xD2DD, 0x9038, 0xD2DE, 0x8084, 0xD2DF, 0x75AB, + 0xD2E0, 0x4EA6, 0xD2E1, 0x88D4, 0xD2E2, 0x610F, 0xD2E3, 0x6BC5, 0xD2E4, 0x5FC6, 0xD2E5, 0x4E49, 0xD2E6, 0x76CA, 0xD2E7, 0x6EA2, + 0xD2E8, 0x8BE3, 0xD2E9, 0x8BAE, 0xD2EA, 0x8C0A, 0xD2EB, 0x8BD1, 0xD2EC, 0x5F02, 0xD2ED, 0x7FFC, 0xD2EE, 0x7FCC, 0xD2EF, 0x7ECE, + 0xD2F0, 0x8335, 0xD2F1, 0x836B, 0xD2F2, 0x56E0, 0xD2F3, 0x6BB7, 0xD2F4, 0x97F3, 0xD2F5, 0x9634, 0xD2F6, 0x59FB, 0xD2F7, 0x541F, + 0xD2F8, 0x94F6, 0xD2F9, 0x6DEB, 0xD2FA, 0x5BC5, 0xD2FB, 0x996E, 0xD2FC, 0x5C39, 0xD2FD, 0x5F15, 0xD2FE, 0x9690, 0xD340, 0x89A2, + 0xD341, 0x89A3, 0xD342, 0x89A4, 0xD343, 0x89A5, 0xD344, 0x89A6, 0xD345, 0x89A7, 0xD346, 0x89A8, 0xD347, 0x89A9, 0xD348, 0x89AA, + 0xD349, 0x89AB, 0xD34A, 0x89AC, 0xD34B, 0x89AD, 0xD34C, 0x89AE, 0xD34D, 0x89AF, 0xD34E, 0x89B0, 0xD34F, 0x89B1, 0xD350, 0x89B2, + 0xD351, 0x89B3, 0xD352, 0x89B4, 0xD353, 0x89B5, 0xD354, 0x89B6, 0xD355, 0x89B7, 0xD356, 0x89B8, 0xD357, 0x89B9, 0xD358, 0x89BA, + 0xD359, 0x89BB, 0xD35A, 0x89BC, 0xD35B, 0x89BD, 0xD35C, 0x89BE, 0xD35D, 0x89BF, 0xD35E, 0x89C0, 0xD35F, 0x89C3, 0xD360, 0x89CD, + 0xD361, 0x89D3, 0xD362, 0x89D4, 0xD363, 0x89D5, 0xD364, 0x89D7, 0xD365, 0x89D8, 0xD366, 0x89D9, 0xD367, 0x89DB, 0xD368, 0x89DD, + 0xD369, 0x89DF, 0xD36A, 0x89E0, 0xD36B, 0x89E1, 0xD36C, 0x89E2, 0xD36D, 0x89E4, 0xD36E, 0x89E7, 0xD36F, 0x89E8, 0xD370, 0x89E9, + 0xD371, 0x89EA, 0xD372, 0x89EC, 0xD373, 0x89ED, 0xD374, 0x89EE, 0xD375, 0x89F0, 0xD376, 0x89F1, 0xD377, 0x89F2, 0xD378, 0x89F4, + 0xD379, 0x89F5, 0xD37A, 0x89F6, 0xD37B, 0x89F7, 0xD37C, 0x89F8, 0xD37D, 0x89F9, 0xD37E, 0x89FA, 0xD380, 0x89FB, 0xD381, 0x89FC, + 0xD382, 0x89FD, 0xD383, 0x89FE, 0xD384, 0x89FF, 0xD385, 0x8A01, 0xD386, 0x8A02, 0xD387, 0x8A03, 0xD388, 0x8A04, 0xD389, 0x8A05, + 0xD38A, 0x8A06, 0xD38B, 0x8A08, 0xD38C, 0x8A09, 0xD38D, 0x8A0A, 0xD38E, 0x8A0B, 0xD38F, 0x8A0C, 0xD390, 0x8A0D, 0xD391, 0x8A0E, + 0xD392, 0x8A0F, 0xD393, 0x8A10, 0xD394, 0x8A11, 0xD395, 0x8A12, 0xD396, 0x8A13, 0xD397, 0x8A14, 0xD398, 0x8A15, 0xD399, 0x8A16, + 0xD39A, 0x8A17, 0xD39B, 0x8A18, 0xD39C, 0x8A19, 0xD39D, 0x8A1A, 0xD39E, 0x8A1B, 0xD39F, 0x8A1C, 0xD3A0, 0x8A1D, 0xD3A1, 0x5370, + 0xD3A2, 0x82F1, 0xD3A3, 0x6A31, 0xD3A4, 0x5A74, 0xD3A5, 0x9E70, 0xD3A6, 0x5E94, 0xD3A7, 0x7F28, 0xD3A8, 0x83B9, 0xD3A9, 0x8424, + 0xD3AA, 0x8425, 0xD3AB, 0x8367, 0xD3AC, 0x8747, 0xD3AD, 0x8FCE, 0xD3AE, 0x8D62, 0xD3AF, 0x76C8, 0xD3B0, 0x5F71, 0xD3B1, 0x9896, + 0xD3B2, 0x786C, 0xD3B3, 0x6620, 0xD3B4, 0x54DF, 0xD3B5, 0x62E5, 0xD3B6, 0x4F63, 0xD3B7, 0x81C3, 0xD3B8, 0x75C8, 0xD3B9, 0x5EB8, + 0xD3BA, 0x96CD, 0xD3BB, 0x8E0A, 0xD3BC, 0x86F9, 0xD3BD, 0x548F, 0xD3BE, 0x6CF3, 0xD3BF, 0x6D8C, 0xD3C0, 0x6C38, 0xD3C1, 0x607F, + 0xD3C2, 0x52C7, 0xD3C3, 0x7528, 0xD3C4, 0x5E7D, 0xD3C5, 0x4F18, 0xD3C6, 0x60A0, 0xD3C7, 0x5FE7, 0xD3C8, 0x5C24, 0xD3C9, 0x7531, + 0xD3CA, 0x90AE, 0xD3CB, 0x94C0, 0xD3CC, 0x72B9, 0xD3CD, 0x6CB9, 0xD3CE, 0x6E38, 0xD3CF, 0x9149, 0xD3D0, 0x6709, 0xD3D1, 0x53CB, + 0xD3D2, 0x53F3, 0xD3D3, 0x4F51, 0xD3D4, 0x91C9, 0xD3D5, 0x8BF1, 0xD3D6, 0x53C8, 0xD3D7, 0x5E7C, 0xD3D8, 0x8FC2, 0xD3D9, 0x6DE4, + 0xD3DA, 0x4E8E, 0xD3DB, 0x76C2, 0xD3DC, 0x6986, 0xD3DD, 0x865E, 0xD3DE, 0x611A, 0xD3DF, 0x8206, 0xD3E0, 0x4F59, 0xD3E1, 0x4FDE, + 0xD3E2, 0x903E, 0xD3E3, 0x9C7C, 0xD3E4, 0x6109, 0xD3E5, 0x6E1D, 0xD3E6, 0x6E14, 0xD3E7, 0x9685, 0xD3E8, 0x4E88, 0xD3E9, 0x5A31, + 0xD3EA, 0x96E8, 0xD3EB, 0x4E0E, 0xD3EC, 0x5C7F, 0xD3ED, 0x79B9, 0xD3EE, 0x5B87, 0xD3EF, 0x8BED, 0xD3F0, 0x7FBD, 0xD3F1, 0x7389, + 0xD3F2, 0x57DF, 0xD3F3, 0x828B, 0xD3F4, 0x90C1, 0xD3F5, 0x5401, 0xD3F6, 0x9047, 0xD3F7, 0x55BB, 0xD3F8, 0x5CEA, 0xD3F9, 0x5FA1, + 0xD3FA, 0x6108, 0xD3FB, 0x6B32, 0xD3FC, 0x72F1, 0xD3FD, 0x80B2, 0xD3FE, 0x8A89, 0xD440, 0x8A1E, 0xD441, 0x8A1F, 0xD442, 0x8A20, + 0xD443, 0x8A21, 0xD444, 0x8A22, 0xD445, 0x8A23, 0xD446, 0x8A24, 0xD447, 0x8A25, 0xD448, 0x8A26, 0xD449, 0x8A27, 0xD44A, 0x8A28, + 0xD44B, 0x8A29, 0xD44C, 0x8A2A, 0xD44D, 0x8A2B, 0xD44E, 0x8A2C, 0xD44F, 0x8A2D, 0xD450, 0x8A2E, 0xD451, 0x8A2F, 0xD452, 0x8A30, + 0xD453, 0x8A31, 0xD454, 0x8A32, 0xD455, 0x8A33, 0xD456, 0x8A34, 0xD457, 0x8A35, 0xD458, 0x8A36, 0xD459, 0x8A37, 0xD45A, 0x8A38, + 0xD45B, 0x8A39, 0xD45C, 0x8A3A, 0xD45D, 0x8A3B, 0xD45E, 0x8A3C, 0xD45F, 0x8A3D, 0xD460, 0x8A3F, 0xD461, 0x8A40, 0xD462, 0x8A41, + 0xD463, 0x8A42, 0xD464, 0x8A43, 0xD465, 0x8A44, 0xD466, 0x8A45, 0xD467, 0x8A46, 0xD468, 0x8A47, 0xD469, 0x8A49, 0xD46A, 0x8A4A, + 0xD46B, 0x8A4B, 0xD46C, 0x8A4C, 0xD46D, 0x8A4D, 0xD46E, 0x8A4E, 0xD46F, 0x8A4F, 0xD470, 0x8A50, 0xD471, 0x8A51, 0xD472, 0x8A52, + 0xD473, 0x8A53, 0xD474, 0x8A54, 0xD475, 0x8A55, 0xD476, 0x8A56, 0xD477, 0x8A57, 0xD478, 0x8A58, 0xD479, 0x8A59, 0xD47A, 0x8A5A, + 0xD47B, 0x8A5B, 0xD47C, 0x8A5C, 0xD47D, 0x8A5D, 0xD47E, 0x8A5E, 0xD480, 0x8A5F, 0xD481, 0x8A60, 0xD482, 0x8A61, 0xD483, 0x8A62, + 0xD484, 0x8A63, 0xD485, 0x8A64, 0xD486, 0x8A65, 0xD487, 0x8A66, 0xD488, 0x8A67, 0xD489, 0x8A68, 0xD48A, 0x8A69, 0xD48B, 0x8A6A, + 0xD48C, 0x8A6B, 0xD48D, 0x8A6C, 0xD48E, 0x8A6D, 0xD48F, 0x8A6E, 0xD490, 0x8A6F, 0xD491, 0x8A70, 0xD492, 0x8A71, 0xD493, 0x8A72, + 0xD494, 0x8A73, 0xD495, 0x8A74, 0xD496, 0x8A75, 0xD497, 0x8A76, 0xD498, 0x8A77, 0xD499, 0x8A78, 0xD49A, 0x8A7A, 0xD49B, 0x8A7B, + 0xD49C, 0x8A7C, 0xD49D, 0x8A7D, 0xD49E, 0x8A7E, 0xD49F, 0x8A7F, 0xD4A0, 0x8A80, 0xD4A1, 0x6D74, 0xD4A2, 0x5BD3, 0xD4A3, 0x88D5, + 0xD4A4, 0x9884, 0xD4A5, 0x8C6B, 0xD4A6, 0x9A6D, 0xD4A7, 0x9E33, 0xD4A8, 0x6E0A, 0xD4A9, 0x51A4, 0xD4AA, 0x5143, 0xD4AB, 0x57A3, + 0xD4AC, 0x8881, 0xD4AD, 0x539F, 0xD4AE, 0x63F4, 0xD4AF, 0x8F95, 0xD4B0, 0x56ED, 0xD4B1, 0x5458, 0xD4B2, 0x5706, 0xD4B3, 0x733F, + 0xD4B4, 0x6E90, 0xD4B5, 0x7F18, 0xD4B6, 0x8FDC, 0xD4B7, 0x82D1, 0xD4B8, 0x613F, 0xD4B9, 0x6028, 0xD4BA, 0x9662, 0xD4BB, 0x66F0, + 0xD4BC, 0x7EA6, 0xD4BD, 0x8D8A, 0xD4BE, 0x8DC3, 0xD4BF, 0x94A5, 0xD4C0, 0x5CB3, 0xD4C1, 0x7CA4, 0xD4C2, 0x6708, 0xD4C3, 0x60A6, + 0xD4C4, 0x9605, 0xD4C5, 0x8018, 0xD4C6, 0x4E91, 0xD4C7, 0x90E7, 0xD4C8, 0x5300, 0xD4C9, 0x9668, 0xD4CA, 0x5141, 0xD4CB, 0x8FD0, + 0xD4CC, 0x8574, 0xD4CD, 0x915D, 0xD4CE, 0x6655, 0xD4CF, 0x97F5, 0xD4D0, 0x5B55, 0xD4D1, 0x531D, 0xD4D2, 0x7838, 0xD4D3, 0x6742, + 0xD4D4, 0x683D, 0xD4D5, 0x54C9, 0xD4D6, 0x707E, 0xD4D7, 0x5BB0, 0xD4D8, 0x8F7D, 0xD4D9, 0x518D, 0xD4DA, 0x5728, 0xD4DB, 0x54B1, + 0xD4DC, 0x6512, 0xD4DD, 0x6682, 0xD4DE, 0x8D5E, 0xD4DF, 0x8D43, 0xD4E0, 0x810F, 0xD4E1, 0x846C, 0xD4E2, 0x906D, 0xD4E3, 0x7CDF, + 0xD4E4, 0x51FF, 0xD4E5, 0x85FB, 0xD4E6, 0x67A3, 0xD4E7, 0x65E9, 0xD4E8, 0x6FA1, 0xD4E9, 0x86A4, 0xD4EA, 0x8E81, 0xD4EB, 0x566A, + 0xD4EC, 0x9020, 0xD4ED, 0x7682, 0xD4EE, 0x7076, 0xD4EF, 0x71E5, 0xD4F0, 0x8D23, 0xD4F1, 0x62E9, 0xD4F2, 0x5219, 0xD4F3, 0x6CFD, + 0xD4F4, 0x8D3C, 0xD4F5, 0x600E, 0xD4F6, 0x589E, 0xD4F7, 0x618E, 0xD4F8, 0x66FE, 0xD4F9, 0x8D60, 0xD4FA, 0x624E, 0xD4FB, 0x55B3, + 0xD4FC, 0x6E23, 0xD4FD, 0x672D, 0xD4FE, 0x8F67, 0xD540, 0x8A81, 0xD541, 0x8A82, 0xD542, 0x8A83, 0xD543, 0x8A84, 0xD544, 0x8A85, + 0xD545, 0x8A86, 0xD546, 0x8A87, 0xD547, 0x8A88, 0xD548, 0x8A8B, 0xD549, 0x8A8C, 0xD54A, 0x8A8D, 0xD54B, 0x8A8E, 0xD54C, 0x8A8F, + 0xD54D, 0x8A90, 0xD54E, 0x8A91, 0xD54F, 0x8A92, 0xD550, 0x8A94, 0xD551, 0x8A95, 0xD552, 0x8A96, 0xD553, 0x8A97, 0xD554, 0x8A98, + 0xD555, 0x8A99, 0xD556, 0x8A9A, 0xD557, 0x8A9B, 0xD558, 0x8A9C, 0xD559, 0x8A9D, 0xD55A, 0x8A9E, 0xD55B, 0x8A9F, 0xD55C, 0x8AA0, + 0xD55D, 0x8AA1, 0xD55E, 0x8AA2, 0xD55F, 0x8AA3, 0xD560, 0x8AA4, 0xD561, 0x8AA5, 0xD562, 0x8AA6, 0xD563, 0x8AA7, 0xD564, 0x8AA8, + 0xD565, 0x8AA9, 0xD566, 0x8AAA, 0xD567, 0x8AAB, 0xD568, 0x8AAC, 0xD569, 0x8AAD, 0xD56A, 0x8AAE, 0xD56B, 0x8AAF, 0xD56C, 0x8AB0, + 0xD56D, 0x8AB1, 0xD56E, 0x8AB2, 0xD56F, 0x8AB3, 0xD570, 0x8AB4, 0xD571, 0x8AB5, 0xD572, 0x8AB6, 0xD573, 0x8AB7, 0xD574, 0x8AB8, + 0xD575, 0x8AB9, 0xD576, 0x8ABA, 0xD577, 0x8ABB, 0xD578, 0x8ABC, 0xD579, 0x8ABD, 0xD57A, 0x8ABE, 0xD57B, 0x8ABF, 0xD57C, 0x8AC0, + 0xD57D, 0x8AC1, 0xD57E, 0x8AC2, 0xD580, 0x8AC3, 0xD581, 0x8AC4, 0xD582, 0x8AC5, 0xD583, 0x8AC6, 0xD584, 0x8AC7, 0xD585, 0x8AC8, + 0xD586, 0x8AC9, 0xD587, 0x8ACA, 0xD588, 0x8ACB, 0xD589, 0x8ACC, 0xD58A, 0x8ACD, 0xD58B, 0x8ACE, 0xD58C, 0x8ACF, 0xD58D, 0x8AD0, + 0xD58E, 0x8AD1, 0xD58F, 0x8AD2, 0xD590, 0x8AD3, 0xD591, 0x8AD4, 0xD592, 0x8AD5, 0xD593, 0x8AD6, 0xD594, 0x8AD7, 0xD595, 0x8AD8, + 0xD596, 0x8AD9, 0xD597, 0x8ADA, 0xD598, 0x8ADB, 0xD599, 0x8ADC, 0xD59A, 0x8ADD, 0xD59B, 0x8ADE, 0xD59C, 0x8ADF, 0xD59D, 0x8AE0, + 0xD59E, 0x8AE1, 0xD59F, 0x8AE2, 0xD5A0, 0x8AE3, 0xD5A1, 0x94E1, 0xD5A2, 0x95F8, 0xD5A3, 0x7728, 0xD5A4, 0x6805, 0xD5A5, 0x69A8, + 0xD5A6, 0x548B, 0xD5A7, 0x4E4D, 0xD5A8, 0x70B8, 0xD5A9, 0x8BC8, 0xD5AA, 0x6458, 0xD5AB, 0x658B, 0xD5AC, 0x5B85, 0xD5AD, 0x7A84, + 0xD5AE, 0x503A, 0xD5AF, 0x5BE8, 0xD5B0, 0x77BB, 0xD5B1, 0x6BE1, 0xD5B2, 0x8A79, 0xD5B3, 0x7C98, 0xD5B4, 0x6CBE, 0xD5B5, 0x76CF, + 0xD5B6, 0x65A9, 0xD5B7, 0x8F97, 0xD5B8, 0x5D2D, 0xD5B9, 0x5C55, 0xD5BA, 0x8638, 0xD5BB, 0x6808, 0xD5BC, 0x5360, 0xD5BD, 0x6218, + 0xD5BE, 0x7AD9, 0xD5BF, 0x6E5B, 0xD5C0, 0x7EFD, 0xD5C1, 0x6A1F, 0xD5C2, 0x7AE0, 0xD5C3, 0x5F70, 0xD5C4, 0x6F33, 0xD5C5, 0x5F20, + 0xD5C6, 0x638C, 0xD5C7, 0x6DA8, 0xD5C8, 0x6756, 0xD5C9, 0x4E08, 0xD5CA, 0x5E10, 0xD5CB, 0x8D26, 0xD5CC, 0x4ED7, 0xD5CD, 0x80C0, + 0xD5CE, 0x7634, 0xD5CF, 0x969C, 0xD5D0, 0x62DB, 0xD5D1, 0x662D, 0xD5D2, 0x627E, 0xD5D3, 0x6CBC, 0xD5D4, 0x8D75, 0xD5D5, 0x7167, + 0xD5D6, 0x7F69, 0xD5D7, 0x5146, 0xD5D8, 0x8087, 0xD5D9, 0x53EC, 0xD5DA, 0x906E, 0xD5DB, 0x6298, 0xD5DC, 0x54F2, 0xD5DD, 0x86F0, + 0xD5DE, 0x8F99, 0xD5DF, 0x8005, 0xD5E0, 0x9517, 0xD5E1, 0x8517, 0xD5E2, 0x8FD9, 0xD5E3, 0x6D59, 0xD5E4, 0x73CD, 0xD5E5, 0x659F, + 0xD5E6, 0x771F, 0xD5E7, 0x7504, 0xD5E8, 0x7827, 0xD5E9, 0x81FB, 0xD5EA, 0x8D1E, 0xD5EB, 0x9488, 0xD5EC, 0x4FA6, 0xD5ED, 0x6795, + 0xD5EE, 0x75B9, 0xD5EF, 0x8BCA, 0xD5F0, 0x9707, 0xD5F1, 0x632F, 0xD5F2, 0x9547, 0xD5F3, 0x9635, 0xD5F4, 0x84B8, 0xD5F5, 0x6323, + 0xD5F6, 0x7741, 0xD5F7, 0x5F81, 0xD5F8, 0x72F0, 0xD5F9, 0x4E89, 0xD5FA, 0x6014, 0xD5FB, 0x6574, 0xD5FC, 0x62EF, 0xD5FD, 0x6B63, + 0xD5FE, 0x653F, 0xD640, 0x8AE4, 0xD641, 0x8AE5, 0xD642, 0x8AE6, 0xD643, 0x8AE7, 0xD644, 0x8AE8, 0xD645, 0x8AE9, 0xD646, 0x8AEA, + 0xD647, 0x8AEB, 0xD648, 0x8AEC, 0xD649, 0x8AED, 0xD64A, 0x8AEE, 0xD64B, 0x8AEF, 0xD64C, 0x8AF0, 0xD64D, 0x8AF1, 0xD64E, 0x8AF2, + 0xD64F, 0x8AF3, 0xD650, 0x8AF4, 0xD651, 0x8AF5, 0xD652, 0x8AF6, 0xD653, 0x8AF7, 0xD654, 0x8AF8, 0xD655, 0x8AF9, 0xD656, 0x8AFA, + 0xD657, 0x8AFB, 0xD658, 0x8AFC, 0xD659, 0x8AFD, 0xD65A, 0x8AFE, 0xD65B, 0x8AFF, 0xD65C, 0x8B00, 0xD65D, 0x8B01, 0xD65E, 0x8B02, + 0xD65F, 0x8B03, 0xD660, 0x8B04, 0xD661, 0x8B05, 0xD662, 0x8B06, 0xD663, 0x8B08, 0xD664, 0x8B09, 0xD665, 0x8B0A, 0xD666, 0x8B0B, + 0xD667, 0x8B0C, 0xD668, 0x8B0D, 0xD669, 0x8B0E, 0xD66A, 0x8B0F, 0xD66B, 0x8B10, 0xD66C, 0x8B11, 0xD66D, 0x8B12, 0xD66E, 0x8B13, + 0xD66F, 0x8B14, 0xD670, 0x8B15, 0xD671, 0x8B16, 0xD672, 0x8B17, 0xD673, 0x8B18, 0xD674, 0x8B19, 0xD675, 0x8B1A, 0xD676, 0x8B1B, + 0xD677, 0x8B1C, 0xD678, 0x8B1D, 0xD679, 0x8B1E, 0xD67A, 0x8B1F, 0xD67B, 0x8B20, 0xD67C, 0x8B21, 0xD67D, 0x8B22, 0xD67E, 0x8B23, + 0xD680, 0x8B24, 0xD681, 0x8B25, 0xD682, 0x8B27, 0xD683, 0x8B28, 0xD684, 0x8B29, 0xD685, 0x8B2A, 0xD686, 0x8B2B, 0xD687, 0x8B2C, + 0xD688, 0x8B2D, 0xD689, 0x8B2E, 0xD68A, 0x8B2F, 0xD68B, 0x8B30, 0xD68C, 0x8B31, 0xD68D, 0x8B32, 0xD68E, 0x8B33, 0xD68F, 0x8B34, + 0xD690, 0x8B35, 0xD691, 0x8B36, 0xD692, 0x8B37, 0xD693, 0x8B38, 0xD694, 0x8B39, 0xD695, 0x8B3A, 0xD696, 0x8B3B, 0xD697, 0x8B3C, + 0xD698, 0x8B3D, 0xD699, 0x8B3E, 0xD69A, 0x8B3F, 0xD69B, 0x8B40, 0xD69C, 0x8B41, 0xD69D, 0x8B42, 0xD69E, 0x8B43, 0xD69F, 0x8B44, + 0xD6A0, 0x8B45, 0xD6A1, 0x5E27, 0xD6A2, 0x75C7, 0xD6A3, 0x90D1, 0xD6A4, 0x8BC1, 0xD6A5, 0x829D, 0xD6A6, 0x679D, 0xD6A7, 0x652F, + 0xD6A8, 0x5431, 0xD6A9, 0x8718, 0xD6AA, 0x77E5, 0xD6AB, 0x80A2, 0xD6AC, 0x8102, 0xD6AD, 0x6C41, 0xD6AE, 0x4E4B, 0xD6AF, 0x7EC7, + 0xD6B0, 0x804C, 0xD6B1, 0x76F4, 0xD6B2, 0x690D, 0xD6B3, 0x6B96, 0xD6B4, 0x6267, 0xD6B5, 0x503C, 0xD6B6, 0x4F84, 0xD6B7, 0x5740, + 0xD6B8, 0x6307, 0xD6B9, 0x6B62, 0xD6BA, 0x8DBE, 0xD6BB, 0x53EA, 0xD6BC, 0x65E8, 0xD6BD, 0x7EB8, 0xD6BE, 0x5FD7, 0xD6BF, 0x631A, + 0xD6C0, 0x63B7, 0xD6C1, 0x81F3, 0xD6C2, 0x81F4, 0xD6C3, 0x7F6E, 0xD6C4, 0x5E1C, 0xD6C5, 0x5CD9, 0xD6C6, 0x5236, 0xD6C7, 0x667A, + 0xD6C8, 0x79E9, 0xD6C9, 0x7A1A, 0xD6CA, 0x8D28, 0xD6CB, 0x7099, 0xD6CC, 0x75D4, 0xD6CD, 0x6EDE, 0xD6CE, 0x6CBB, 0xD6CF, 0x7A92, + 0xD6D0, 0x4E2D, 0xD6D1, 0x76C5, 0xD6D2, 0x5FE0, 0xD6D3, 0x949F, 0xD6D4, 0x8877, 0xD6D5, 0x7EC8, 0xD6D6, 0x79CD, 0xD6D7, 0x80BF, + 0xD6D8, 0x91CD, 0xD6D9, 0x4EF2, 0xD6DA, 0x4F17, 0xD6DB, 0x821F, 0xD6DC, 0x5468, 0xD6DD, 0x5DDE, 0xD6DE, 0x6D32, 0xD6DF, 0x8BCC, + 0xD6E0, 0x7CA5, 0xD6E1, 0x8F74, 0xD6E2, 0x8098, 0xD6E3, 0x5E1A, 0xD6E4, 0x5492, 0xD6E5, 0x76B1, 0xD6E6, 0x5B99, 0xD6E7, 0x663C, + 0xD6E8, 0x9AA4, 0xD6E9, 0x73E0, 0xD6EA, 0x682A, 0xD6EB, 0x86DB, 0xD6EC, 0x6731, 0xD6ED, 0x732A, 0xD6EE, 0x8BF8, 0xD6EF, 0x8BDB, + 0xD6F0, 0x9010, 0xD6F1, 0x7AF9, 0xD6F2, 0x70DB, 0xD6F3, 0x716E, 0xD6F4, 0x62C4, 0xD6F5, 0x77A9, 0xD6F6, 0x5631, 0xD6F7, 0x4E3B, + 0xD6F8, 0x8457, 0xD6F9, 0x67F1, 0xD6FA, 0x52A9, 0xD6FB, 0x86C0, 0xD6FC, 0x8D2E, 0xD6FD, 0x94F8, 0xD6FE, 0x7B51, 0xD740, 0x8B46, + 0xD741, 0x8B47, 0xD742, 0x8B48, 0xD743, 0x8B49, 0xD744, 0x8B4A, 0xD745, 0x8B4B, 0xD746, 0x8B4C, 0xD747, 0x8B4D, 0xD748, 0x8B4E, + 0xD749, 0x8B4F, 0xD74A, 0x8B50, 0xD74B, 0x8B51, 0xD74C, 0x8B52, 0xD74D, 0x8B53, 0xD74E, 0x8B54, 0xD74F, 0x8B55, 0xD750, 0x8B56, + 0xD751, 0x8B57, 0xD752, 0x8B58, 0xD753, 0x8B59, 0xD754, 0x8B5A, 0xD755, 0x8B5B, 0xD756, 0x8B5C, 0xD757, 0x8B5D, 0xD758, 0x8B5E, + 0xD759, 0x8B5F, 0xD75A, 0x8B60, 0xD75B, 0x8B61, 0xD75C, 0x8B62, 0xD75D, 0x8B63, 0xD75E, 0x8B64, 0xD75F, 0x8B65, 0xD760, 0x8B67, + 0xD761, 0x8B68, 0xD762, 0x8B69, 0xD763, 0x8B6A, 0xD764, 0x8B6B, 0xD765, 0x8B6D, 0xD766, 0x8B6E, 0xD767, 0x8B6F, 0xD768, 0x8B70, + 0xD769, 0x8B71, 0xD76A, 0x8B72, 0xD76B, 0x8B73, 0xD76C, 0x8B74, 0xD76D, 0x8B75, 0xD76E, 0x8B76, 0xD76F, 0x8B77, 0xD770, 0x8B78, + 0xD771, 0x8B79, 0xD772, 0x8B7A, 0xD773, 0x8B7B, 0xD774, 0x8B7C, 0xD775, 0x8B7D, 0xD776, 0x8B7E, 0xD777, 0x8B7F, 0xD778, 0x8B80, + 0xD779, 0x8B81, 0xD77A, 0x8B82, 0xD77B, 0x8B83, 0xD77C, 0x8B84, 0xD77D, 0x8B85, 0xD77E, 0x8B86, 0xD780, 0x8B87, 0xD781, 0x8B88, + 0xD782, 0x8B89, 0xD783, 0x8B8A, 0xD784, 0x8B8B, 0xD785, 0x8B8C, 0xD786, 0x8B8D, 0xD787, 0x8B8E, 0xD788, 0x8B8F, 0xD789, 0x8B90, + 0xD78A, 0x8B91, 0xD78B, 0x8B92, 0xD78C, 0x8B93, 0xD78D, 0x8B94, 0xD78E, 0x8B95, 0xD78F, 0x8B96, 0xD790, 0x8B97, 0xD791, 0x8B98, + 0xD792, 0x8B99, 0xD793, 0x8B9A, 0xD794, 0x8B9B, 0xD795, 0x8B9C, 0xD796, 0x8B9D, 0xD797, 0x8B9E, 0xD798, 0x8B9F, 0xD799, 0x8BAC, + 0xD79A, 0x8BB1, 0xD79B, 0x8BBB, 0xD79C, 0x8BC7, 0xD79D, 0x8BD0, 0xD79E, 0x8BEA, 0xD79F, 0x8C09, 0xD7A0, 0x8C1E, 0xD7A1, 0x4F4F, + 0xD7A2, 0x6CE8, 0xD7A3, 0x795D, 0xD7A4, 0x9A7B, 0xD7A5, 0x6293, 0xD7A6, 0x722A, 0xD7A7, 0x62FD, 0xD7A8, 0x4E13, 0xD7A9, 0x7816, + 0xD7AA, 0x8F6C, 0xD7AB, 0x64B0, 0xD7AC, 0x8D5A, 0xD7AD, 0x7BC6, 0xD7AE, 0x6869, 0xD7AF, 0x5E84, 0xD7B0, 0x88C5, 0xD7B1, 0x5986, + 0xD7B2, 0x649E, 0xD7B3, 0x58EE, 0xD7B4, 0x72B6, 0xD7B5, 0x690E, 0xD7B6, 0x9525, 0xD7B7, 0x8FFD, 0xD7B8, 0x8D58, 0xD7B9, 0x5760, + 0xD7BA, 0x7F00, 0xD7BB, 0x8C06, 0xD7BC, 0x51C6, 0xD7BD, 0x6349, 0xD7BE, 0x62D9, 0xD7BF, 0x5353, 0xD7C0, 0x684C, 0xD7C1, 0x7422, + 0xD7C2, 0x8301, 0xD7C3, 0x914C, 0xD7C4, 0x5544, 0xD7C5, 0x7740, 0xD7C6, 0x707C, 0xD7C7, 0x6D4A, 0xD7C8, 0x5179, 0xD7C9, 0x54A8, + 0xD7CA, 0x8D44, 0xD7CB, 0x59FF, 0xD7CC, 0x6ECB, 0xD7CD, 0x6DC4, 0xD7CE, 0x5B5C, 0xD7CF, 0x7D2B, 0xD7D0, 0x4ED4, 0xD7D1, 0x7C7D, + 0xD7D2, 0x6ED3, 0xD7D3, 0x5B50, 0xD7D4, 0x81EA, 0xD7D5, 0x6E0D, 0xD7D6, 0x5B57, 0xD7D7, 0x9B03, 0xD7D8, 0x68D5, 0xD7D9, 0x8E2A, + 0xD7DA, 0x5B97, 0xD7DB, 0x7EFC, 0xD7DC, 0x603B, 0xD7DD, 0x7EB5, 0xD7DE, 0x90B9, 0xD7DF, 0x8D70, 0xD7E0, 0x594F, 0xD7E1, 0x63CD, + 0xD7E2, 0x79DF, 0xD7E3, 0x8DB3, 0xD7E4, 0x5352, 0xD7E5, 0x65CF, 0xD7E6, 0x7956, 0xD7E7, 0x8BC5, 0xD7E8, 0x963B, 0xD7E9, 0x7EC4, + 0xD7EA, 0x94BB, 0xD7EB, 0x7E82, 0xD7EC, 0x5634, 0xD7ED, 0x9189, 0xD7EE, 0x6700, 0xD7EF, 0x7F6A, 0xD7F0, 0x5C0A, 0xD7F1, 0x9075, + 0xD7F2, 0x6628, 0xD7F3, 0x5DE6, 0xD7F4, 0x4F50, 0xD7F5, 0x67DE, 0xD7F6, 0x505A, 0xD7F7, 0x4F5C, 0xD7F8, 0x5750, 0xD7F9, 0x5EA7, + 0xD840, 0x8C38, 0xD841, 0x8C39, 0xD842, 0x8C3A, 0xD843, 0x8C3B, 0xD844, 0x8C3C, 0xD845, 0x8C3D, 0xD846, 0x8C3E, 0xD847, 0x8C3F, + 0xD848, 0x8C40, 0xD849, 0x8C42, 0xD84A, 0x8C43, 0xD84B, 0x8C44, 0xD84C, 0x8C45, 0xD84D, 0x8C48, 0xD84E, 0x8C4A, 0xD84F, 0x8C4B, + 0xD850, 0x8C4D, 0xD851, 0x8C4E, 0xD852, 0x8C4F, 0xD853, 0x8C50, 0xD854, 0x8C51, 0xD855, 0x8C52, 0xD856, 0x8C53, 0xD857, 0x8C54, + 0xD858, 0x8C56, 0xD859, 0x8C57, 0xD85A, 0x8C58, 0xD85B, 0x8C59, 0xD85C, 0x8C5B, 0xD85D, 0x8C5C, 0xD85E, 0x8C5D, 0xD85F, 0x8C5E, + 0xD860, 0x8C5F, 0xD861, 0x8C60, 0xD862, 0x8C63, 0xD863, 0x8C64, 0xD864, 0x8C65, 0xD865, 0x8C66, 0xD866, 0x8C67, 0xD867, 0x8C68, + 0xD868, 0x8C69, 0xD869, 0x8C6C, 0xD86A, 0x8C6D, 0xD86B, 0x8C6E, 0xD86C, 0x8C6F, 0xD86D, 0x8C70, 0xD86E, 0x8C71, 0xD86F, 0x8C72, + 0xD870, 0x8C74, 0xD871, 0x8C75, 0xD872, 0x8C76, 0xD873, 0x8C77, 0xD874, 0x8C7B, 0xD875, 0x8C7C, 0xD876, 0x8C7D, 0xD877, 0x8C7E, + 0xD878, 0x8C7F, 0xD879, 0x8C80, 0xD87A, 0x8C81, 0xD87B, 0x8C83, 0xD87C, 0x8C84, 0xD87D, 0x8C86, 0xD87E, 0x8C87, 0xD880, 0x8C88, + 0xD881, 0x8C8B, 0xD882, 0x8C8D, 0xD883, 0x8C8E, 0xD884, 0x8C8F, 0xD885, 0x8C90, 0xD886, 0x8C91, 0xD887, 0x8C92, 0xD888, 0x8C93, + 0xD889, 0x8C95, 0xD88A, 0x8C96, 0xD88B, 0x8C97, 0xD88C, 0x8C99, 0xD88D, 0x8C9A, 0xD88E, 0x8C9B, 0xD88F, 0x8C9C, 0xD890, 0x8C9D, + 0xD891, 0x8C9E, 0xD892, 0x8C9F, 0xD893, 0x8CA0, 0xD894, 0x8CA1, 0xD895, 0x8CA2, 0xD896, 0x8CA3, 0xD897, 0x8CA4, 0xD898, 0x8CA5, + 0xD899, 0x8CA6, 0xD89A, 0x8CA7, 0xD89B, 0x8CA8, 0xD89C, 0x8CA9, 0xD89D, 0x8CAA, 0xD89E, 0x8CAB, 0xD89F, 0x8CAC, 0xD8A0, 0x8CAD, + 0xD8A1, 0x4E8D, 0xD8A2, 0x4E0C, 0xD8A3, 0x5140, 0xD8A4, 0x4E10, 0xD8A5, 0x5EFF, 0xD8A6, 0x5345, 0xD8A7, 0x4E15, 0xD8A8, 0x4E98, + 0xD8A9, 0x4E1E, 0xD8AA, 0x9B32, 0xD8AB, 0x5B6C, 0xD8AC, 0x5669, 0xD8AD, 0x4E28, 0xD8AE, 0x79BA, 0xD8AF, 0x4E3F, 0xD8B0, 0x5315, + 0xD8B1, 0x4E47, 0xD8B2, 0x592D, 0xD8B3, 0x723B, 0xD8B4, 0x536E, 0xD8B5, 0x6C10, 0xD8B6, 0x56DF, 0xD8B7, 0x80E4, 0xD8B8, 0x9997, + 0xD8B9, 0x6BD3, 0xD8BA, 0x777E, 0xD8BB, 0x9F17, 0xD8BC, 0x4E36, 0xD8BD, 0x4E9F, 0xD8BE, 0x9F10, 0xD8BF, 0x4E5C, 0xD8C0, 0x4E69, + 0xD8C1, 0x4E93, 0xD8C2, 0x8288, 0xD8C3, 0x5B5B, 0xD8C4, 0x556C, 0xD8C5, 0x560F, 0xD8C6, 0x4EC4, 0xD8C7, 0x538D, 0xD8C8, 0x539D, + 0xD8C9, 0x53A3, 0xD8CA, 0x53A5, 0xD8CB, 0x53AE, 0xD8CC, 0x9765, 0xD8CD, 0x8D5D, 0xD8CE, 0x531A, 0xD8CF, 0x53F5, 0xD8D0, 0x5326, + 0xD8D1, 0x532E, 0xD8D2, 0x533E, 0xD8D3, 0x8D5C, 0xD8D4, 0x5366, 0xD8D5, 0x5363, 0xD8D6, 0x5202, 0xD8D7, 0x5208, 0xD8D8, 0x520E, + 0xD8D9, 0x522D, 0xD8DA, 0x5233, 0xD8DB, 0x523F, 0xD8DC, 0x5240, 0xD8DD, 0x524C, 0xD8DE, 0x525E, 0xD8DF, 0x5261, 0xD8E0, 0x525C, + 0xD8E1, 0x84AF, 0xD8E2, 0x527D, 0xD8E3, 0x5282, 0xD8E4, 0x5281, 0xD8E5, 0x5290, 0xD8E6, 0x5293, 0xD8E7, 0x5182, 0xD8E8, 0x7F54, + 0xD8E9, 0x4EBB, 0xD8EA, 0x4EC3, 0xD8EB, 0x4EC9, 0xD8EC, 0x4EC2, 0xD8ED, 0x4EE8, 0xD8EE, 0x4EE1, 0xD8EF, 0x4EEB, 0xD8F0, 0x4EDE, + 0xD8F1, 0x4F1B, 0xD8F2, 0x4EF3, 0xD8F3, 0x4F22, 0xD8F4, 0x4F64, 0xD8F5, 0x4EF5, 0xD8F6, 0x4F25, 0xD8F7, 0x4F27, 0xD8F8, 0x4F09, + 0xD8F9, 0x4F2B, 0xD8FA, 0x4F5E, 0xD8FB, 0x4F67, 0xD8FC, 0x6538, 0xD8FD, 0x4F5A, 0xD8FE, 0x4F5D, 0xD940, 0x8CAE, 0xD941, 0x8CAF, + 0xD942, 0x8CB0, 0xD943, 0x8CB1, 0xD944, 0x8CB2, 0xD945, 0x8CB3, 0xD946, 0x8CB4, 0xD947, 0x8CB5, 0xD948, 0x8CB6, 0xD949, 0x8CB7, + 0xD94A, 0x8CB8, 0xD94B, 0x8CB9, 0xD94C, 0x8CBA, 0xD94D, 0x8CBB, 0xD94E, 0x8CBC, 0xD94F, 0x8CBD, 0xD950, 0x8CBE, 0xD951, 0x8CBF, + 0xD952, 0x8CC0, 0xD953, 0x8CC1, 0xD954, 0x8CC2, 0xD955, 0x8CC3, 0xD956, 0x8CC4, 0xD957, 0x8CC5, 0xD958, 0x8CC6, 0xD959, 0x8CC7, + 0xD95A, 0x8CC8, 0xD95B, 0x8CC9, 0xD95C, 0x8CCA, 0xD95D, 0x8CCB, 0xD95E, 0x8CCC, 0xD95F, 0x8CCD, 0xD960, 0x8CCE, 0xD961, 0x8CCF, + 0xD962, 0x8CD0, 0xD963, 0x8CD1, 0xD964, 0x8CD2, 0xD965, 0x8CD3, 0xD966, 0x8CD4, 0xD967, 0x8CD5, 0xD968, 0x8CD6, 0xD969, 0x8CD7, + 0xD96A, 0x8CD8, 0xD96B, 0x8CD9, 0xD96C, 0x8CDA, 0xD96D, 0x8CDB, 0xD96E, 0x8CDC, 0xD96F, 0x8CDD, 0xD970, 0x8CDE, 0xD971, 0x8CDF, + 0xD972, 0x8CE0, 0xD973, 0x8CE1, 0xD974, 0x8CE2, 0xD975, 0x8CE3, 0xD976, 0x8CE4, 0xD977, 0x8CE5, 0xD978, 0x8CE6, 0xD979, 0x8CE7, + 0xD97A, 0x8CE8, 0xD97B, 0x8CE9, 0xD97C, 0x8CEA, 0xD97D, 0x8CEB, 0xD97E, 0x8CEC, 0xD980, 0x8CED, 0xD981, 0x8CEE, 0xD982, 0x8CEF, + 0xD983, 0x8CF0, 0xD984, 0x8CF1, 0xD985, 0x8CF2, 0xD986, 0x8CF3, 0xD987, 0x8CF4, 0xD988, 0x8CF5, 0xD989, 0x8CF6, 0xD98A, 0x8CF7, + 0xD98B, 0x8CF8, 0xD98C, 0x8CF9, 0xD98D, 0x8CFA, 0xD98E, 0x8CFB, 0xD98F, 0x8CFC, 0xD990, 0x8CFD, 0xD991, 0x8CFE, 0xD992, 0x8CFF, + 0xD993, 0x8D00, 0xD994, 0x8D01, 0xD995, 0x8D02, 0xD996, 0x8D03, 0xD997, 0x8D04, 0xD998, 0x8D05, 0xD999, 0x8D06, 0xD99A, 0x8D07, + 0xD99B, 0x8D08, 0xD99C, 0x8D09, 0xD99D, 0x8D0A, 0xD99E, 0x8D0B, 0xD99F, 0x8D0C, 0xD9A0, 0x8D0D, 0xD9A1, 0x4F5F, 0xD9A2, 0x4F57, + 0xD9A3, 0x4F32, 0xD9A4, 0x4F3D, 0xD9A5, 0x4F76, 0xD9A6, 0x4F74, 0xD9A7, 0x4F91, 0xD9A8, 0x4F89, 0xD9A9, 0x4F83, 0xD9AA, 0x4F8F, + 0xD9AB, 0x4F7E, 0xD9AC, 0x4F7B, 0xD9AD, 0x4FAA, 0xD9AE, 0x4F7C, 0xD9AF, 0x4FAC, 0xD9B0, 0x4F94, 0xD9B1, 0x4FE6, 0xD9B2, 0x4FE8, + 0xD9B3, 0x4FEA, 0xD9B4, 0x4FC5, 0xD9B5, 0x4FDA, 0xD9B6, 0x4FE3, 0xD9B7, 0x4FDC, 0xD9B8, 0x4FD1, 0xD9B9, 0x4FDF, 0xD9BA, 0x4FF8, + 0xD9BB, 0x5029, 0xD9BC, 0x504C, 0xD9BD, 0x4FF3, 0xD9BE, 0x502C, 0xD9BF, 0x500F, 0xD9C0, 0x502E, 0xD9C1, 0x502D, 0xD9C2, 0x4FFE, + 0xD9C3, 0x501C, 0xD9C4, 0x500C, 0xD9C5, 0x5025, 0xD9C6, 0x5028, 0xD9C7, 0x507E, 0xD9C8, 0x5043, 0xD9C9, 0x5055, 0xD9CA, 0x5048, + 0xD9CB, 0x504E, 0xD9CC, 0x506C, 0xD9CD, 0x507B, 0xD9CE, 0x50A5, 0xD9CF, 0x50A7, 0xD9D0, 0x50A9, 0xD9D1, 0x50BA, 0xD9D2, 0x50D6, + 0xD9D3, 0x5106, 0xD9D4, 0x50ED, 0xD9D5, 0x50EC, 0xD9D6, 0x50E6, 0xD9D7, 0x50EE, 0xD9D8, 0x5107, 0xD9D9, 0x510B, 0xD9DA, 0x4EDD, + 0xD9DB, 0x6C3D, 0xD9DC, 0x4F58, 0xD9DD, 0x4F65, 0xD9DE, 0x4FCE, 0xD9DF, 0x9FA0, 0xD9E0, 0x6C46, 0xD9E1, 0x7C74, 0xD9E2, 0x516E, + 0xD9E3, 0x5DFD, 0xD9E4, 0x9EC9, 0xD9E5, 0x9998, 0xD9E6, 0x5181, 0xD9E7, 0x5914, 0xD9E8, 0x52F9, 0xD9E9, 0x530D, 0xD9EA, 0x8A07, + 0xD9EB, 0x5310, 0xD9EC, 0x51EB, 0xD9ED, 0x5919, 0xD9EE, 0x5155, 0xD9EF, 0x4EA0, 0xD9F0, 0x5156, 0xD9F1, 0x4EB3, 0xD9F2, 0x886E, + 0xD9F3, 0x88A4, 0xD9F4, 0x4EB5, 0xD9F5, 0x8114, 0xD9F6, 0x88D2, 0xD9F7, 0x7980, 0xD9F8, 0x5B34, 0xD9F9, 0x8803, 0xD9FA, 0x7FB8, + 0xD9FB, 0x51AB, 0xD9FC, 0x51B1, 0xD9FD, 0x51BD, 0xD9FE, 0x51BC, 0xDA40, 0x8D0E, 0xDA41, 0x8D0F, 0xDA42, 0x8D10, 0xDA43, 0x8D11, + 0xDA44, 0x8D12, 0xDA45, 0x8D13, 0xDA46, 0x8D14, 0xDA47, 0x8D15, 0xDA48, 0x8D16, 0xDA49, 0x8D17, 0xDA4A, 0x8D18, 0xDA4B, 0x8D19, + 0xDA4C, 0x8D1A, 0xDA4D, 0x8D1B, 0xDA4E, 0x8D1C, 0xDA4F, 0x8D20, 0xDA50, 0x8D51, 0xDA51, 0x8D52, 0xDA52, 0x8D57, 0xDA53, 0x8D5F, + 0xDA54, 0x8D65, 0xDA55, 0x8D68, 0xDA56, 0x8D69, 0xDA57, 0x8D6A, 0xDA58, 0x8D6C, 0xDA59, 0x8D6E, 0xDA5A, 0x8D6F, 0xDA5B, 0x8D71, + 0xDA5C, 0x8D72, 0xDA5D, 0x8D78, 0xDA5E, 0x8D79, 0xDA5F, 0x8D7A, 0xDA60, 0x8D7B, 0xDA61, 0x8D7C, 0xDA62, 0x8D7D, 0xDA63, 0x8D7E, + 0xDA64, 0x8D7F, 0xDA65, 0x8D80, 0xDA66, 0x8D82, 0xDA67, 0x8D83, 0xDA68, 0x8D86, 0xDA69, 0x8D87, 0xDA6A, 0x8D88, 0xDA6B, 0x8D89, + 0xDA6C, 0x8D8C, 0xDA6D, 0x8D8D, 0xDA6E, 0x8D8E, 0xDA6F, 0x8D8F, 0xDA70, 0x8D90, 0xDA71, 0x8D92, 0xDA72, 0x8D93, 0xDA73, 0x8D95, + 0xDA74, 0x8D96, 0xDA75, 0x8D97, 0xDA76, 0x8D98, 0xDA77, 0x8D99, 0xDA78, 0x8D9A, 0xDA79, 0x8D9B, 0xDA7A, 0x8D9C, 0xDA7B, 0x8D9D, + 0xDA7C, 0x8D9E, 0xDA7D, 0x8DA0, 0xDA7E, 0x8DA1, 0xDA80, 0x8DA2, 0xDA81, 0x8DA4, 0xDA82, 0x8DA5, 0xDA83, 0x8DA6, 0xDA84, 0x8DA7, + 0xDA85, 0x8DA8, 0xDA86, 0x8DA9, 0xDA87, 0x8DAA, 0xDA88, 0x8DAB, 0xDA89, 0x8DAC, 0xDA8A, 0x8DAD, 0xDA8B, 0x8DAE, 0xDA8C, 0x8DAF, + 0xDA8D, 0x8DB0, 0xDA8E, 0x8DB2, 0xDA8F, 0x8DB6, 0xDA90, 0x8DB7, 0xDA91, 0x8DB9, 0xDA92, 0x8DBB, 0xDA93, 0x8DBD, 0xDA94, 0x8DC0, + 0xDA95, 0x8DC1, 0xDA96, 0x8DC2, 0xDA97, 0x8DC5, 0xDA98, 0x8DC7, 0xDA99, 0x8DC8, 0xDA9A, 0x8DC9, 0xDA9B, 0x8DCA, 0xDA9C, 0x8DCD, + 0xDA9D, 0x8DD0, 0xDA9E, 0x8DD2, 0xDA9F, 0x8DD3, 0xDAA0, 0x8DD4, 0xDAA1, 0x51C7, 0xDAA2, 0x5196, 0xDAA3, 0x51A2, 0xDAA4, 0x51A5, + 0xDAA5, 0x8BA0, 0xDAA6, 0x8BA6, 0xDAA7, 0x8BA7, 0xDAA8, 0x8BAA, 0xDAA9, 0x8BB4, 0xDAAA, 0x8BB5, 0xDAAB, 0x8BB7, 0xDAAC, 0x8BC2, + 0xDAAD, 0x8BC3, 0xDAAE, 0x8BCB, 0xDAAF, 0x8BCF, 0xDAB0, 0x8BCE, 0xDAB1, 0x8BD2, 0xDAB2, 0x8BD3, 0xDAB3, 0x8BD4, 0xDAB4, 0x8BD6, + 0xDAB5, 0x8BD8, 0xDAB6, 0x8BD9, 0xDAB7, 0x8BDC, 0xDAB8, 0x8BDF, 0xDAB9, 0x8BE0, 0xDABA, 0x8BE4, 0xDABB, 0x8BE8, 0xDABC, 0x8BE9, + 0xDABD, 0x8BEE, 0xDABE, 0x8BF0, 0xDABF, 0x8BF3, 0xDAC0, 0x8BF6, 0xDAC1, 0x8BF9, 0xDAC2, 0x8BFC, 0xDAC3, 0x8BFF, 0xDAC4, 0x8C00, + 0xDAC5, 0x8C02, 0xDAC6, 0x8C04, 0xDAC7, 0x8C07, 0xDAC8, 0x8C0C, 0xDAC9, 0x8C0F, 0xDACA, 0x8C11, 0xDACB, 0x8C12, 0xDACC, 0x8C14, + 0xDACD, 0x8C15, 0xDACE, 0x8C16, 0xDACF, 0x8C19, 0xDAD0, 0x8C1B, 0xDAD1, 0x8C18, 0xDAD2, 0x8C1D, 0xDAD3, 0x8C1F, 0xDAD4, 0x8C20, + 0xDAD5, 0x8C21, 0xDAD6, 0x8C25, 0xDAD7, 0x8C27, 0xDAD8, 0x8C2A, 0xDAD9, 0x8C2B, 0xDADA, 0x8C2E, 0xDADB, 0x8C2F, 0xDADC, 0x8C32, + 0xDADD, 0x8C33, 0xDADE, 0x8C35, 0xDADF, 0x8C36, 0xDAE0, 0x5369, 0xDAE1, 0x537A, 0xDAE2, 0x961D, 0xDAE3, 0x9622, 0xDAE4, 0x9621, + 0xDAE5, 0x9631, 0xDAE6, 0x962A, 0xDAE7, 0x963D, 0xDAE8, 0x963C, 0xDAE9, 0x9642, 0xDAEA, 0x9649, 0xDAEB, 0x9654, 0xDAEC, 0x965F, + 0xDAED, 0x9667, 0xDAEE, 0x966C, 0xDAEF, 0x9672, 0xDAF0, 0x9674, 0xDAF1, 0x9688, 0xDAF2, 0x968D, 0xDAF3, 0x9697, 0xDAF4, 0x96B0, + 0xDAF5, 0x9097, 0xDAF6, 0x909B, 0xDAF7, 0x909D, 0xDAF8, 0x9099, 0xDAF9, 0x90AC, 0xDAFA, 0x90A1, 0xDAFB, 0x90B4, 0xDAFC, 0x90B3, + 0xDAFD, 0x90B6, 0xDAFE, 0x90BA, 0xDB40, 0x8DD5, 0xDB41, 0x8DD8, 0xDB42, 0x8DD9, 0xDB43, 0x8DDC, 0xDB44, 0x8DE0, 0xDB45, 0x8DE1, + 0xDB46, 0x8DE2, 0xDB47, 0x8DE5, 0xDB48, 0x8DE6, 0xDB49, 0x8DE7, 0xDB4A, 0x8DE9, 0xDB4B, 0x8DED, 0xDB4C, 0x8DEE, 0xDB4D, 0x8DF0, + 0xDB4E, 0x8DF1, 0xDB4F, 0x8DF2, 0xDB50, 0x8DF4, 0xDB51, 0x8DF6, 0xDB52, 0x8DFC, 0xDB53, 0x8DFE, 0xDB54, 0x8DFF, 0xDB55, 0x8E00, + 0xDB56, 0x8E01, 0xDB57, 0x8E02, 0xDB58, 0x8E03, 0xDB59, 0x8E04, 0xDB5A, 0x8E06, 0xDB5B, 0x8E07, 0xDB5C, 0x8E08, 0xDB5D, 0x8E0B, + 0xDB5E, 0x8E0D, 0xDB5F, 0x8E0E, 0xDB60, 0x8E10, 0xDB61, 0x8E11, 0xDB62, 0x8E12, 0xDB63, 0x8E13, 0xDB64, 0x8E15, 0xDB65, 0x8E16, + 0xDB66, 0x8E17, 0xDB67, 0x8E18, 0xDB68, 0x8E19, 0xDB69, 0x8E1A, 0xDB6A, 0x8E1B, 0xDB6B, 0x8E1C, 0xDB6C, 0x8E20, 0xDB6D, 0x8E21, + 0xDB6E, 0x8E24, 0xDB6F, 0x8E25, 0xDB70, 0x8E26, 0xDB71, 0x8E27, 0xDB72, 0x8E28, 0xDB73, 0x8E2B, 0xDB74, 0x8E2D, 0xDB75, 0x8E30, + 0xDB76, 0x8E32, 0xDB77, 0x8E33, 0xDB78, 0x8E34, 0xDB79, 0x8E36, 0xDB7A, 0x8E37, 0xDB7B, 0x8E38, 0xDB7C, 0x8E3B, 0xDB7D, 0x8E3C, + 0xDB7E, 0x8E3E, 0xDB80, 0x8E3F, 0xDB81, 0x8E43, 0xDB82, 0x8E45, 0xDB83, 0x8E46, 0xDB84, 0x8E4C, 0xDB85, 0x8E4D, 0xDB86, 0x8E4E, + 0xDB87, 0x8E4F, 0xDB88, 0x8E50, 0xDB89, 0x8E53, 0xDB8A, 0x8E54, 0xDB8B, 0x8E55, 0xDB8C, 0x8E56, 0xDB8D, 0x8E57, 0xDB8E, 0x8E58, + 0xDB8F, 0x8E5A, 0xDB90, 0x8E5B, 0xDB91, 0x8E5C, 0xDB92, 0x8E5D, 0xDB93, 0x8E5E, 0xDB94, 0x8E5F, 0xDB95, 0x8E60, 0xDB96, 0x8E61, + 0xDB97, 0x8E62, 0xDB98, 0x8E63, 0xDB99, 0x8E64, 0xDB9A, 0x8E65, 0xDB9B, 0x8E67, 0xDB9C, 0x8E68, 0xDB9D, 0x8E6A, 0xDB9E, 0x8E6B, + 0xDB9F, 0x8E6E, 0xDBA0, 0x8E71, 0xDBA1, 0x90B8, 0xDBA2, 0x90B0, 0xDBA3, 0x90CF, 0xDBA4, 0x90C5, 0xDBA5, 0x90BE, 0xDBA6, 0x90D0, + 0xDBA7, 0x90C4, 0xDBA8, 0x90C7, 0xDBA9, 0x90D3, 0xDBAA, 0x90E6, 0xDBAB, 0x90E2, 0xDBAC, 0x90DC, 0xDBAD, 0x90D7, 0xDBAE, 0x90DB, + 0xDBAF, 0x90EB, 0xDBB0, 0x90EF, 0xDBB1, 0x90FE, 0xDBB2, 0x9104, 0xDBB3, 0x9122, 0xDBB4, 0x911E, 0xDBB5, 0x9123, 0xDBB6, 0x9131, + 0xDBB7, 0x912F, 0xDBB8, 0x9139, 0xDBB9, 0x9143, 0xDBBA, 0x9146, 0xDBBB, 0x520D, 0xDBBC, 0x5942, 0xDBBD, 0x52A2, 0xDBBE, 0x52AC, + 0xDBBF, 0x52AD, 0xDBC0, 0x52BE, 0xDBC1, 0x54FF, 0xDBC2, 0x52D0, 0xDBC3, 0x52D6, 0xDBC4, 0x52F0, 0xDBC5, 0x53DF, 0xDBC6, 0x71EE, + 0xDBC7, 0x77CD, 0xDBC8, 0x5EF4, 0xDBC9, 0x51F5, 0xDBCA, 0x51FC, 0xDBCB, 0x9B2F, 0xDBCC, 0x53B6, 0xDBCD, 0x5F01, 0xDBCE, 0x755A, + 0xDBCF, 0x5DEF, 0xDBD0, 0x574C, 0xDBD1, 0x57A9, 0xDBD2, 0x57A1, 0xDBD3, 0x587E, 0xDBD4, 0x58BC, 0xDBD5, 0x58C5, 0xDBD6, 0x58D1, + 0xDBD7, 0x5729, 0xDBD8, 0x572C, 0xDBD9, 0x572A, 0xDBDA, 0x5733, 0xDBDB, 0x5739, 0xDBDC, 0x572E, 0xDBDD, 0x572F, 0xDBDE, 0x575C, + 0xDBDF, 0x573B, 0xDBE0, 0x5742, 0xDBE1, 0x5769, 0xDBE2, 0x5785, 0xDBE3, 0x576B, 0xDBE4, 0x5786, 0xDBE5, 0x577C, 0xDBE6, 0x577B, + 0xDBE7, 0x5768, 0xDBE8, 0x576D, 0xDBE9, 0x5776, 0xDBEA, 0x5773, 0xDBEB, 0x57AD, 0xDBEC, 0x57A4, 0xDBED, 0x578C, 0xDBEE, 0x57B2, + 0xDBEF, 0x57CF, 0xDBF0, 0x57A7, 0xDBF1, 0x57B4, 0xDBF2, 0x5793, 0xDBF3, 0x57A0, 0xDBF4, 0x57D5, 0xDBF5, 0x57D8, 0xDBF6, 0x57DA, + 0xDBF7, 0x57D9, 0xDBF8, 0x57D2, 0xDBF9, 0x57B8, 0xDBFA, 0x57F4, 0xDBFB, 0x57EF, 0xDBFC, 0x57F8, 0xDBFD, 0x57E4, 0xDBFE, 0x57DD, + 0xDC40, 0x8E73, 0xDC41, 0x8E75, 0xDC42, 0x8E77, 0xDC43, 0x8E78, 0xDC44, 0x8E79, 0xDC45, 0x8E7A, 0xDC46, 0x8E7B, 0xDC47, 0x8E7D, + 0xDC48, 0x8E7E, 0xDC49, 0x8E80, 0xDC4A, 0x8E82, 0xDC4B, 0x8E83, 0xDC4C, 0x8E84, 0xDC4D, 0x8E86, 0xDC4E, 0x8E88, 0xDC4F, 0x8E89, + 0xDC50, 0x8E8A, 0xDC51, 0x8E8B, 0xDC52, 0x8E8C, 0xDC53, 0x8E8D, 0xDC54, 0x8E8E, 0xDC55, 0x8E91, 0xDC56, 0x8E92, 0xDC57, 0x8E93, + 0xDC58, 0x8E95, 0xDC59, 0x8E96, 0xDC5A, 0x8E97, 0xDC5B, 0x8E98, 0xDC5C, 0x8E99, 0xDC5D, 0x8E9A, 0xDC5E, 0x8E9B, 0xDC5F, 0x8E9D, + 0xDC60, 0x8E9F, 0xDC61, 0x8EA0, 0xDC62, 0x8EA1, 0xDC63, 0x8EA2, 0xDC64, 0x8EA3, 0xDC65, 0x8EA4, 0xDC66, 0x8EA5, 0xDC67, 0x8EA6, + 0xDC68, 0x8EA7, 0xDC69, 0x8EA8, 0xDC6A, 0x8EA9, 0xDC6B, 0x8EAA, 0xDC6C, 0x8EAD, 0xDC6D, 0x8EAE, 0xDC6E, 0x8EB0, 0xDC6F, 0x8EB1, + 0xDC70, 0x8EB3, 0xDC71, 0x8EB4, 0xDC72, 0x8EB5, 0xDC73, 0x8EB6, 0xDC74, 0x8EB7, 0xDC75, 0x8EB8, 0xDC76, 0x8EB9, 0xDC77, 0x8EBB, + 0xDC78, 0x8EBC, 0xDC79, 0x8EBD, 0xDC7A, 0x8EBE, 0xDC7B, 0x8EBF, 0xDC7C, 0x8EC0, 0xDC7D, 0x8EC1, 0xDC7E, 0x8EC2, 0xDC80, 0x8EC3, + 0xDC81, 0x8EC4, 0xDC82, 0x8EC5, 0xDC83, 0x8EC6, 0xDC84, 0x8EC7, 0xDC85, 0x8EC8, 0xDC86, 0x8EC9, 0xDC87, 0x8ECA, 0xDC88, 0x8ECB, + 0xDC89, 0x8ECC, 0xDC8A, 0x8ECD, 0xDC8B, 0x8ECF, 0xDC8C, 0x8ED0, 0xDC8D, 0x8ED1, 0xDC8E, 0x8ED2, 0xDC8F, 0x8ED3, 0xDC90, 0x8ED4, + 0xDC91, 0x8ED5, 0xDC92, 0x8ED6, 0xDC93, 0x8ED7, 0xDC94, 0x8ED8, 0xDC95, 0x8ED9, 0xDC96, 0x8EDA, 0xDC97, 0x8EDB, 0xDC98, 0x8EDC, + 0xDC99, 0x8EDD, 0xDC9A, 0x8EDE, 0xDC9B, 0x8EDF, 0xDC9C, 0x8EE0, 0xDC9D, 0x8EE1, 0xDC9E, 0x8EE2, 0xDC9F, 0x8EE3, 0xDCA0, 0x8EE4, + 0xDCA1, 0x580B, 0xDCA2, 0x580D, 0xDCA3, 0x57FD, 0xDCA4, 0x57ED, 0xDCA5, 0x5800, 0xDCA6, 0x581E, 0xDCA7, 0x5819, 0xDCA8, 0x5844, + 0xDCA9, 0x5820, 0xDCAA, 0x5865, 0xDCAB, 0x586C, 0xDCAC, 0x5881, 0xDCAD, 0x5889, 0xDCAE, 0x589A, 0xDCAF, 0x5880, 0xDCB0, 0x99A8, + 0xDCB1, 0x9F19, 0xDCB2, 0x61FF, 0xDCB3, 0x8279, 0xDCB4, 0x827D, 0xDCB5, 0x827F, 0xDCB6, 0x828F, 0xDCB7, 0x828A, 0xDCB8, 0x82A8, + 0xDCB9, 0x8284, 0xDCBA, 0x828E, 0xDCBB, 0x8291, 0xDCBC, 0x8297, 0xDCBD, 0x8299, 0xDCBE, 0x82AB, 0xDCBF, 0x82B8, 0xDCC0, 0x82BE, + 0xDCC1, 0x82B0, 0xDCC2, 0x82C8, 0xDCC3, 0x82CA, 0xDCC4, 0x82E3, 0xDCC5, 0x8298, 0xDCC6, 0x82B7, 0xDCC7, 0x82AE, 0xDCC8, 0x82CB, + 0xDCC9, 0x82CC, 0xDCCA, 0x82C1, 0xDCCB, 0x82A9, 0xDCCC, 0x82B4, 0xDCCD, 0x82A1, 0xDCCE, 0x82AA, 0xDCCF, 0x829F, 0xDCD0, 0x82C4, + 0xDCD1, 0x82CE, 0xDCD2, 0x82A4, 0xDCD3, 0x82E1, 0xDCD4, 0x8309, 0xDCD5, 0x82F7, 0xDCD6, 0x82E4, 0xDCD7, 0x830F, 0xDCD8, 0x8307, + 0xDCD9, 0x82DC, 0xDCDA, 0x82F4, 0xDCDB, 0x82D2, 0xDCDC, 0x82D8, 0xDCDD, 0x830C, 0xDCDE, 0x82FB, 0xDCDF, 0x82D3, 0xDCE0, 0x8311, + 0xDCE1, 0x831A, 0xDCE2, 0x8306, 0xDCE3, 0x8314, 0xDCE4, 0x8315, 0xDCE5, 0x82E0, 0xDCE6, 0x82D5, 0xDCE7, 0x831C, 0xDCE8, 0x8351, + 0xDCE9, 0x835B, 0xDCEA, 0x835C, 0xDCEB, 0x8308, 0xDCEC, 0x8392, 0xDCED, 0x833C, 0xDCEE, 0x8334, 0xDCEF, 0x8331, 0xDCF0, 0x839B, + 0xDCF1, 0x835E, 0xDCF2, 0x832F, 0xDCF3, 0x834F, 0xDCF4, 0x8347, 0xDCF5, 0x8343, 0xDCF6, 0x835F, 0xDCF7, 0x8340, 0xDCF8, 0x8317, + 0xDCF9, 0x8360, 0xDCFA, 0x832D, 0xDCFB, 0x833A, 0xDCFC, 0x8333, 0xDCFD, 0x8366, 0xDCFE, 0x8365, 0xDD40, 0x8EE5, 0xDD41, 0x8EE6, + 0xDD42, 0x8EE7, 0xDD43, 0x8EE8, 0xDD44, 0x8EE9, 0xDD45, 0x8EEA, 0xDD46, 0x8EEB, 0xDD47, 0x8EEC, 0xDD48, 0x8EED, 0xDD49, 0x8EEE, + 0xDD4A, 0x8EEF, 0xDD4B, 0x8EF0, 0xDD4C, 0x8EF1, 0xDD4D, 0x8EF2, 0xDD4E, 0x8EF3, 0xDD4F, 0x8EF4, 0xDD50, 0x8EF5, 0xDD51, 0x8EF6, + 0xDD52, 0x8EF7, 0xDD53, 0x8EF8, 0xDD54, 0x8EF9, 0xDD55, 0x8EFA, 0xDD56, 0x8EFB, 0xDD57, 0x8EFC, 0xDD58, 0x8EFD, 0xDD59, 0x8EFE, + 0xDD5A, 0x8EFF, 0xDD5B, 0x8F00, 0xDD5C, 0x8F01, 0xDD5D, 0x8F02, 0xDD5E, 0x8F03, 0xDD5F, 0x8F04, 0xDD60, 0x8F05, 0xDD61, 0x8F06, + 0xDD62, 0x8F07, 0xDD63, 0x8F08, 0xDD64, 0x8F09, 0xDD65, 0x8F0A, 0xDD66, 0x8F0B, 0xDD67, 0x8F0C, 0xDD68, 0x8F0D, 0xDD69, 0x8F0E, + 0xDD6A, 0x8F0F, 0xDD6B, 0x8F10, 0xDD6C, 0x8F11, 0xDD6D, 0x8F12, 0xDD6E, 0x8F13, 0xDD6F, 0x8F14, 0xDD70, 0x8F15, 0xDD71, 0x8F16, + 0xDD72, 0x8F17, 0xDD73, 0x8F18, 0xDD74, 0x8F19, 0xDD75, 0x8F1A, 0xDD76, 0x8F1B, 0xDD77, 0x8F1C, 0xDD78, 0x8F1D, 0xDD79, 0x8F1E, + 0xDD7A, 0x8F1F, 0xDD7B, 0x8F20, 0xDD7C, 0x8F21, 0xDD7D, 0x8F22, 0xDD7E, 0x8F23, 0xDD80, 0x8F24, 0xDD81, 0x8F25, 0xDD82, 0x8F26, + 0xDD83, 0x8F27, 0xDD84, 0x8F28, 0xDD85, 0x8F29, 0xDD86, 0x8F2A, 0xDD87, 0x8F2B, 0xDD88, 0x8F2C, 0xDD89, 0x8F2D, 0xDD8A, 0x8F2E, + 0xDD8B, 0x8F2F, 0xDD8C, 0x8F30, 0xDD8D, 0x8F31, 0xDD8E, 0x8F32, 0xDD8F, 0x8F33, 0xDD90, 0x8F34, 0xDD91, 0x8F35, 0xDD92, 0x8F36, + 0xDD93, 0x8F37, 0xDD94, 0x8F38, 0xDD95, 0x8F39, 0xDD96, 0x8F3A, 0xDD97, 0x8F3B, 0xDD98, 0x8F3C, 0xDD99, 0x8F3D, 0xDD9A, 0x8F3E, + 0xDD9B, 0x8F3F, 0xDD9C, 0x8F40, 0xDD9D, 0x8F41, 0xDD9E, 0x8F42, 0xDD9F, 0x8F43, 0xDDA0, 0x8F44, 0xDDA1, 0x8368, 0xDDA2, 0x831B, + 0xDDA3, 0x8369, 0xDDA4, 0x836C, 0xDDA5, 0x836A, 0xDDA6, 0x836D, 0xDDA7, 0x836E, 0xDDA8, 0x83B0, 0xDDA9, 0x8378, 0xDDAA, 0x83B3, + 0xDDAB, 0x83B4, 0xDDAC, 0x83A0, 0xDDAD, 0x83AA, 0xDDAE, 0x8393, 0xDDAF, 0x839C, 0xDDB0, 0x8385, 0xDDB1, 0x837C, 0xDDB2, 0x83B6, + 0xDDB3, 0x83A9, 0xDDB4, 0x837D, 0xDDB5, 0x83B8, 0xDDB6, 0x837B, 0xDDB7, 0x8398, 0xDDB8, 0x839E, 0xDDB9, 0x83A8, 0xDDBA, 0x83BA, + 0xDDBB, 0x83BC, 0xDDBC, 0x83C1, 0xDDBD, 0x8401, 0xDDBE, 0x83E5, 0xDDBF, 0x83D8, 0xDDC0, 0x5807, 0xDDC1, 0x8418, 0xDDC2, 0x840B, + 0xDDC3, 0x83DD, 0xDDC4, 0x83FD, 0xDDC5, 0x83D6, 0xDDC6, 0x841C, 0xDDC7, 0x8438, 0xDDC8, 0x8411, 0xDDC9, 0x8406, 0xDDCA, 0x83D4, + 0xDDCB, 0x83DF, 0xDDCC, 0x840F, 0xDDCD, 0x8403, 0xDDCE, 0x83F8, 0xDDCF, 0x83F9, 0xDDD0, 0x83EA, 0xDDD1, 0x83C5, 0xDDD2, 0x83C0, + 0xDDD3, 0x8426, 0xDDD4, 0x83F0, 0xDDD5, 0x83E1, 0xDDD6, 0x845C, 0xDDD7, 0x8451, 0xDDD8, 0x845A, 0xDDD9, 0x8459, 0xDDDA, 0x8473, + 0xDDDB, 0x8487, 0xDDDC, 0x8488, 0xDDDD, 0x847A, 0xDDDE, 0x8489, 0xDDDF, 0x8478, 0xDDE0, 0x843C, 0xDDE1, 0x8446, 0xDDE2, 0x8469, + 0xDDE3, 0x8476, 0xDDE4, 0x848C, 0xDDE5, 0x848E, 0xDDE6, 0x8431, 0xDDE7, 0x846D, 0xDDE8, 0x84C1, 0xDDE9, 0x84CD, 0xDDEA, 0x84D0, + 0xDDEB, 0x84E6, 0xDDEC, 0x84BD, 0xDDED, 0x84D3, 0xDDEE, 0x84CA, 0xDDEF, 0x84BF, 0xDDF0, 0x84BA, 0xDDF1, 0x84E0, 0xDDF2, 0x84A1, + 0xDDF3, 0x84B9, 0xDDF4, 0x84B4, 0xDDF5, 0x8497, 0xDDF6, 0x84E5, 0xDDF7, 0x84E3, 0xDDF8, 0x850C, 0xDDF9, 0x750D, 0xDDFA, 0x8538, + 0xDDFB, 0x84F0, 0xDDFC, 0x8539, 0xDDFD, 0x851F, 0xDDFE, 0x853A, 0xDE40, 0x8F45, 0xDE41, 0x8F46, 0xDE42, 0x8F47, 0xDE43, 0x8F48, + 0xDE44, 0x8F49, 0xDE45, 0x8F4A, 0xDE46, 0x8F4B, 0xDE47, 0x8F4C, 0xDE48, 0x8F4D, 0xDE49, 0x8F4E, 0xDE4A, 0x8F4F, 0xDE4B, 0x8F50, + 0xDE4C, 0x8F51, 0xDE4D, 0x8F52, 0xDE4E, 0x8F53, 0xDE4F, 0x8F54, 0xDE50, 0x8F55, 0xDE51, 0x8F56, 0xDE52, 0x8F57, 0xDE53, 0x8F58, + 0xDE54, 0x8F59, 0xDE55, 0x8F5A, 0xDE56, 0x8F5B, 0xDE57, 0x8F5C, 0xDE58, 0x8F5D, 0xDE59, 0x8F5E, 0xDE5A, 0x8F5F, 0xDE5B, 0x8F60, + 0xDE5C, 0x8F61, 0xDE5D, 0x8F62, 0xDE5E, 0x8F63, 0xDE5F, 0x8F64, 0xDE60, 0x8F65, 0xDE61, 0x8F6A, 0xDE62, 0x8F80, 0xDE63, 0x8F8C, + 0xDE64, 0x8F92, 0xDE65, 0x8F9D, 0xDE66, 0x8FA0, 0xDE67, 0x8FA1, 0xDE68, 0x8FA2, 0xDE69, 0x8FA4, 0xDE6A, 0x8FA5, 0xDE6B, 0x8FA6, + 0xDE6C, 0x8FA7, 0xDE6D, 0x8FAA, 0xDE6E, 0x8FAC, 0xDE6F, 0x8FAD, 0xDE70, 0x8FAE, 0xDE71, 0x8FAF, 0xDE72, 0x8FB2, 0xDE73, 0x8FB3, + 0xDE74, 0x8FB4, 0xDE75, 0x8FB5, 0xDE76, 0x8FB7, 0xDE77, 0x8FB8, 0xDE78, 0x8FBA, 0xDE79, 0x8FBB, 0xDE7A, 0x8FBC, 0xDE7B, 0x8FBF, + 0xDE7C, 0x8FC0, 0xDE7D, 0x8FC3, 0xDE7E, 0x8FC6, 0xDE80, 0x8FC9, 0xDE81, 0x8FCA, 0xDE82, 0x8FCB, 0xDE83, 0x8FCC, 0xDE84, 0x8FCD, + 0xDE85, 0x8FCF, 0xDE86, 0x8FD2, 0xDE87, 0x8FD6, 0xDE88, 0x8FD7, 0xDE89, 0x8FDA, 0xDE8A, 0x8FE0, 0xDE8B, 0x8FE1, 0xDE8C, 0x8FE3, + 0xDE8D, 0x8FE7, 0xDE8E, 0x8FEC, 0xDE8F, 0x8FEF, 0xDE90, 0x8FF1, 0xDE91, 0x8FF2, 0xDE92, 0x8FF4, 0xDE93, 0x8FF5, 0xDE94, 0x8FF6, + 0xDE95, 0x8FFA, 0xDE96, 0x8FFB, 0xDE97, 0x8FFC, 0xDE98, 0x8FFE, 0xDE99, 0x8FFF, 0xDE9A, 0x9007, 0xDE9B, 0x9008, 0xDE9C, 0x900C, + 0xDE9D, 0x900E, 0xDE9E, 0x9013, 0xDE9F, 0x9015, 0xDEA0, 0x9018, 0xDEA1, 0x8556, 0xDEA2, 0x853B, 0xDEA3, 0x84FF, 0xDEA4, 0x84FC, + 0xDEA5, 0x8559, 0xDEA6, 0x8548, 0xDEA7, 0x8568, 0xDEA8, 0x8564, 0xDEA9, 0x855E, 0xDEAA, 0x857A, 0xDEAB, 0x77A2, 0xDEAC, 0x8543, + 0xDEAD, 0x8572, 0xDEAE, 0x857B, 0xDEAF, 0x85A4, 0xDEB0, 0x85A8, 0xDEB1, 0x8587, 0xDEB2, 0x858F, 0xDEB3, 0x8579, 0xDEB4, 0x85AE, + 0xDEB5, 0x859C, 0xDEB6, 0x8585, 0xDEB7, 0x85B9, 0xDEB8, 0x85B7, 0xDEB9, 0x85B0, 0xDEBA, 0x85D3, 0xDEBB, 0x85C1, 0xDEBC, 0x85DC, + 0xDEBD, 0x85FF, 0xDEBE, 0x8627, 0xDEBF, 0x8605, 0xDEC0, 0x8629, 0xDEC1, 0x8616, 0xDEC2, 0x863C, 0xDEC3, 0x5EFE, 0xDEC4, 0x5F08, + 0xDEC5, 0x593C, 0xDEC6, 0x5941, 0xDEC7, 0x8037, 0xDEC8, 0x5955, 0xDEC9, 0x595A, 0xDECA, 0x5958, 0xDECB, 0x530F, 0xDECC, 0x5C22, + 0xDECD, 0x5C25, 0xDECE, 0x5C2C, 0xDECF, 0x5C34, 0xDED0, 0x624C, 0xDED1, 0x626A, 0xDED2, 0x629F, 0xDED3, 0x62BB, 0xDED4, 0x62CA, + 0xDED5, 0x62DA, 0xDED6, 0x62D7, 0xDED7, 0x62EE, 0xDED8, 0x6322, 0xDED9, 0x62F6, 0xDEDA, 0x6339, 0xDEDB, 0x634B, 0xDEDC, 0x6343, + 0xDEDD, 0x63AD, 0xDEDE, 0x63F6, 0xDEDF, 0x6371, 0xDEE0, 0x637A, 0xDEE1, 0x638E, 0xDEE2, 0x63B4, 0xDEE3, 0x636D, 0xDEE4, 0x63AC, + 0xDEE5, 0x638A, 0xDEE6, 0x6369, 0xDEE7, 0x63AE, 0xDEE8, 0x63BC, 0xDEE9, 0x63F2, 0xDEEA, 0x63F8, 0xDEEB, 0x63E0, 0xDEEC, 0x63FF, + 0xDEED, 0x63C4, 0xDEEE, 0x63DE, 0xDEEF, 0x63CE, 0xDEF0, 0x6452, 0xDEF1, 0x63C6, 0xDEF2, 0x63BE, 0xDEF3, 0x6445, 0xDEF4, 0x6441, + 0xDEF5, 0x640B, 0xDEF6, 0x641B, 0xDEF7, 0x6420, 0xDEF8, 0x640C, 0xDEF9, 0x6426, 0xDEFA, 0x6421, 0xDEFB, 0x645E, 0xDEFC, 0x6484, + 0xDEFD, 0x646D, 0xDEFE, 0x6496, 0xDF40, 0x9019, 0xDF41, 0x901C, 0xDF42, 0x9023, 0xDF43, 0x9024, 0xDF44, 0x9025, 0xDF45, 0x9027, + 0xDF46, 0x9028, 0xDF47, 0x9029, 0xDF48, 0x902A, 0xDF49, 0x902B, 0xDF4A, 0x902C, 0xDF4B, 0x9030, 0xDF4C, 0x9031, 0xDF4D, 0x9032, + 0xDF4E, 0x9033, 0xDF4F, 0x9034, 0xDF50, 0x9037, 0xDF51, 0x9039, 0xDF52, 0x903A, 0xDF53, 0x903D, 0xDF54, 0x903F, 0xDF55, 0x9040, + 0xDF56, 0x9043, 0xDF57, 0x9045, 0xDF58, 0x9046, 0xDF59, 0x9048, 0xDF5A, 0x9049, 0xDF5B, 0x904A, 0xDF5C, 0x904B, 0xDF5D, 0x904C, + 0xDF5E, 0x904E, 0xDF5F, 0x9054, 0xDF60, 0x9055, 0xDF61, 0x9056, 0xDF62, 0x9059, 0xDF63, 0x905A, 0xDF64, 0x905C, 0xDF65, 0x905D, + 0xDF66, 0x905E, 0xDF67, 0x905F, 0xDF68, 0x9060, 0xDF69, 0x9061, 0xDF6A, 0x9064, 0xDF6B, 0x9066, 0xDF6C, 0x9067, 0xDF6D, 0x9069, + 0xDF6E, 0x906A, 0xDF6F, 0x906B, 0xDF70, 0x906C, 0xDF71, 0x906F, 0xDF72, 0x9070, 0xDF73, 0x9071, 0xDF74, 0x9072, 0xDF75, 0x9073, + 0xDF76, 0x9076, 0xDF77, 0x9077, 0xDF78, 0x9078, 0xDF79, 0x9079, 0xDF7A, 0x907A, 0xDF7B, 0x907B, 0xDF7C, 0x907C, 0xDF7D, 0x907E, + 0xDF7E, 0x9081, 0xDF80, 0x9084, 0xDF81, 0x9085, 0xDF82, 0x9086, 0xDF83, 0x9087, 0xDF84, 0x9089, 0xDF85, 0x908A, 0xDF86, 0x908C, + 0xDF87, 0x908D, 0xDF88, 0x908E, 0xDF89, 0x908F, 0xDF8A, 0x9090, 0xDF8B, 0x9092, 0xDF8C, 0x9094, 0xDF8D, 0x9096, 0xDF8E, 0x9098, + 0xDF8F, 0x909A, 0xDF90, 0x909C, 0xDF91, 0x909E, 0xDF92, 0x909F, 0xDF93, 0x90A0, 0xDF94, 0x90A4, 0xDF95, 0x90A5, 0xDF96, 0x90A7, + 0xDF97, 0x90A8, 0xDF98, 0x90A9, 0xDF99, 0x90AB, 0xDF9A, 0x90AD, 0xDF9B, 0x90B2, 0xDF9C, 0x90B7, 0xDF9D, 0x90BC, 0xDF9E, 0x90BD, + 0xDF9F, 0x90BF, 0xDFA0, 0x90C0, 0xDFA1, 0x647A, 0xDFA2, 0x64B7, 0xDFA3, 0x64B8, 0xDFA4, 0x6499, 0xDFA5, 0x64BA, 0xDFA6, 0x64C0, + 0xDFA7, 0x64D0, 0xDFA8, 0x64D7, 0xDFA9, 0x64E4, 0xDFAA, 0x64E2, 0xDFAB, 0x6509, 0xDFAC, 0x6525, 0xDFAD, 0x652E, 0xDFAE, 0x5F0B, + 0xDFAF, 0x5FD2, 0xDFB0, 0x7519, 0xDFB1, 0x5F11, 0xDFB2, 0x535F, 0xDFB3, 0x53F1, 0xDFB4, 0x53FD, 0xDFB5, 0x53E9, 0xDFB6, 0x53E8, + 0xDFB7, 0x53FB, 0xDFB8, 0x5412, 0xDFB9, 0x5416, 0xDFBA, 0x5406, 0xDFBB, 0x544B, 0xDFBC, 0x5452, 0xDFBD, 0x5453, 0xDFBE, 0x5454, + 0xDFBF, 0x5456, 0xDFC0, 0x5443, 0xDFC1, 0x5421, 0xDFC2, 0x5457, 0xDFC3, 0x5459, 0xDFC4, 0x5423, 0xDFC5, 0x5432, 0xDFC6, 0x5482, + 0xDFC7, 0x5494, 0xDFC8, 0x5477, 0xDFC9, 0x5471, 0xDFCA, 0x5464, 0xDFCB, 0x549A, 0xDFCC, 0x549B, 0xDFCD, 0x5484, 0xDFCE, 0x5476, + 0xDFCF, 0x5466, 0xDFD0, 0x549D, 0xDFD1, 0x54D0, 0xDFD2, 0x54AD, 0xDFD3, 0x54C2, 0xDFD4, 0x54B4, 0xDFD5, 0x54D2, 0xDFD6, 0x54A7, + 0xDFD7, 0x54A6, 0xDFD8, 0x54D3, 0xDFD9, 0x54D4, 0xDFDA, 0x5472, 0xDFDB, 0x54A3, 0xDFDC, 0x54D5, 0xDFDD, 0x54BB, 0xDFDE, 0x54BF, + 0xDFDF, 0x54CC, 0xDFE0, 0x54D9, 0xDFE1, 0x54DA, 0xDFE2, 0x54DC, 0xDFE3, 0x54A9, 0xDFE4, 0x54AA, 0xDFE5, 0x54A4, 0xDFE6, 0x54DD, + 0xDFE7, 0x54CF, 0xDFE8, 0x54DE, 0xDFE9, 0x551B, 0xDFEA, 0x54E7, 0xDFEB, 0x5520, 0xDFEC, 0x54FD, 0xDFED, 0x5514, 0xDFEE, 0x54F3, + 0xDFEF, 0x5522, 0xDFF0, 0x5523, 0xDFF1, 0x550F, 0xDFF2, 0x5511, 0xDFF3, 0x5527, 0xDFF4, 0x552A, 0xDFF5, 0x5567, 0xDFF6, 0x558F, + 0xDFF7, 0x55B5, 0xDFF8, 0x5549, 0xDFF9, 0x556D, 0xDFFA, 0x5541, 0xDFFB, 0x5555, 0xDFFC, 0x553F, 0xDFFD, 0x5550, 0xDFFE, 0x553C, + 0xE040, 0x90C2, 0xE041, 0x90C3, 0xE042, 0x90C6, 0xE043, 0x90C8, 0xE044, 0x90C9, 0xE045, 0x90CB, 0xE046, 0x90CC, 0xE047, 0x90CD, + 0xE048, 0x90D2, 0xE049, 0x90D4, 0xE04A, 0x90D5, 0xE04B, 0x90D6, 0xE04C, 0x90D8, 0xE04D, 0x90D9, 0xE04E, 0x90DA, 0xE04F, 0x90DE, + 0xE050, 0x90DF, 0xE051, 0x90E0, 0xE052, 0x90E3, 0xE053, 0x90E4, 0xE054, 0x90E5, 0xE055, 0x90E9, 0xE056, 0x90EA, 0xE057, 0x90EC, + 0xE058, 0x90EE, 0xE059, 0x90F0, 0xE05A, 0x90F1, 0xE05B, 0x90F2, 0xE05C, 0x90F3, 0xE05D, 0x90F5, 0xE05E, 0x90F6, 0xE05F, 0x90F7, + 0xE060, 0x90F9, 0xE061, 0x90FA, 0xE062, 0x90FB, 0xE063, 0x90FC, 0xE064, 0x90FF, 0xE065, 0x9100, 0xE066, 0x9101, 0xE067, 0x9103, + 0xE068, 0x9105, 0xE069, 0x9106, 0xE06A, 0x9107, 0xE06B, 0x9108, 0xE06C, 0x9109, 0xE06D, 0x910A, 0xE06E, 0x910B, 0xE06F, 0x910C, + 0xE070, 0x910D, 0xE071, 0x910E, 0xE072, 0x910F, 0xE073, 0x9110, 0xE074, 0x9111, 0xE075, 0x9112, 0xE076, 0x9113, 0xE077, 0x9114, + 0xE078, 0x9115, 0xE079, 0x9116, 0xE07A, 0x9117, 0xE07B, 0x9118, 0xE07C, 0x911A, 0xE07D, 0x911B, 0xE07E, 0x911C, 0xE080, 0x911D, + 0xE081, 0x911F, 0xE082, 0x9120, 0xE083, 0x9121, 0xE084, 0x9124, 0xE085, 0x9125, 0xE086, 0x9126, 0xE087, 0x9127, 0xE088, 0x9128, + 0xE089, 0x9129, 0xE08A, 0x912A, 0xE08B, 0x912B, 0xE08C, 0x912C, 0xE08D, 0x912D, 0xE08E, 0x912E, 0xE08F, 0x9130, 0xE090, 0x9132, + 0xE091, 0x9133, 0xE092, 0x9134, 0xE093, 0x9135, 0xE094, 0x9136, 0xE095, 0x9137, 0xE096, 0x9138, 0xE097, 0x913A, 0xE098, 0x913B, + 0xE099, 0x913C, 0xE09A, 0x913D, 0xE09B, 0x913E, 0xE09C, 0x913F, 0xE09D, 0x9140, 0xE09E, 0x9141, 0xE09F, 0x9142, 0xE0A0, 0x9144, + 0xE0A1, 0x5537, 0xE0A2, 0x5556, 0xE0A3, 0x5575, 0xE0A4, 0x5576, 0xE0A5, 0x5577, 0xE0A6, 0x5533, 0xE0A7, 0x5530, 0xE0A8, 0x555C, + 0xE0A9, 0x558B, 0xE0AA, 0x55D2, 0xE0AB, 0x5583, 0xE0AC, 0x55B1, 0xE0AD, 0x55B9, 0xE0AE, 0x5588, 0xE0AF, 0x5581, 0xE0B0, 0x559F, + 0xE0B1, 0x557E, 0xE0B2, 0x55D6, 0xE0B3, 0x5591, 0xE0B4, 0x557B, 0xE0B5, 0x55DF, 0xE0B6, 0x55BD, 0xE0B7, 0x55BE, 0xE0B8, 0x5594, + 0xE0B9, 0x5599, 0xE0BA, 0x55EA, 0xE0BB, 0x55F7, 0xE0BC, 0x55C9, 0xE0BD, 0x561F, 0xE0BE, 0x55D1, 0xE0BF, 0x55EB, 0xE0C0, 0x55EC, + 0xE0C1, 0x55D4, 0xE0C2, 0x55E6, 0xE0C3, 0x55DD, 0xE0C4, 0x55C4, 0xE0C5, 0x55EF, 0xE0C6, 0x55E5, 0xE0C7, 0x55F2, 0xE0C8, 0x55F3, + 0xE0C9, 0x55CC, 0xE0CA, 0x55CD, 0xE0CB, 0x55E8, 0xE0CC, 0x55F5, 0xE0CD, 0x55E4, 0xE0CE, 0x8F94, 0xE0CF, 0x561E, 0xE0D0, 0x5608, + 0xE0D1, 0x560C, 0xE0D2, 0x5601, 0xE0D3, 0x5624, 0xE0D4, 0x5623, 0xE0D5, 0x55FE, 0xE0D6, 0x5600, 0xE0D7, 0x5627, 0xE0D8, 0x562D, + 0xE0D9, 0x5658, 0xE0DA, 0x5639, 0xE0DB, 0x5657, 0xE0DC, 0x562C, 0xE0DD, 0x564D, 0xE0DE, 0x5662, 0xE0DF, 0x5659, 0xE0E0, 0x565C, + 0xE0E1, 0x564C, 0xE0E2, 0x5654, 0xE0E3, 0x5686, 0xE0E4, 0x5664, 0xE0E5, 0x5671, 0xE0E6, 0x566B, 0xE0E7, 0x567B, 0xE0E8, 0x567C, + 0xE0E9, 0x5685, 0xE0EA, 0x5693, 0xE0EB, 0x56AF, 0xE0EC, 0x56D4, 0xE0ED, 0x56D7, 0xE0EE, 0x56DD, 0xE0EF, 0x56E1, 0xE0F0, 0x56F5, + 0xE0F1, 0x56EB, 0xE0F2, 0x56F9, 0xE0F3, 0x56FF, 0xE0F4, 0x5704, 0xE0F5, 0x570A, 0xE0F6, 0x5709, 0xE0F7, 0x571C, 0xE0F8, 0x5E0F, + 0xE0F9, 0x5E19, 0xE0FA, 0x5E14, 0xE0FB, 0x5E11, 0xE0FC, 0x5E31, 0xE0FD, 0x5E3B, 0xE0FE, 0x5E3C, 0xE140, 0x9145, 0xE141, 0x9147, + 0xE142, 0x9148, 0xE143, 0x9151, 0xE144, 0x9153, 0xE145, 0x9154, 0xE146, 0x9155, 0xE147, 0x9156, 0xE148, 0x9158, 0xE149, 0x9159, + 0xE14A, 0x915B, 0xE14B, 0x915C, 0xE14C, 0x915F, 0xE14D, 0x9160, 0xE14E, 0x9166, 0xE14F, 0x9167, 0xE150, 0x9168, 0xE151, 0x916B, + 0xE152, 0x916D, 0xE153, 0x9173, 0xE154, 0x917A, 0xE155, 0x917B, 0xE156, 0x917C, 0xE157, 0x9180, 0xE158, 0x9181, 0xE159, 0x9182, + 0xE15A, 0x9183, 0xE15B, 0x9184, 0xE15C, 0x9186, 0xE15D, 0x9188, 0xE15E, 0x918A, 0xE15F, 0x918E, 0xE160, 0x918F, 0xE161, 0x9193, + 0xE162, 0x9194, 0xE163, 0x9195, 0xE164, 0x9196, 0xE165, 0x9197, 0xE166, 0x9198, 0xE167, 0x9199, 0xE168, 0x919C, 0xE169, 0x919D, + 0xE16A, 0x919E, 0xE16B, 0x919F, 0xE16C, 0x91A0, 0xE16D, 0x91A1, 0xE16E, 0x91A4, 0xE16F, 0x91A5, 0xE170, 0x91A6, 0xE171, 0x91A7, + 0xE172, 0x91A8, 0xE173, 0x91A9, 0xE174, 0x91AB, 0xE175, 0x91AC, 0xE176, 0x91B0, 0xE177, 0x91B1, 0xE178, 0x91B2, 0xE179, 0x91B3, + 0xE17A, 0x91B6, 0xE17B, 0x91B7, 0xE17C, 0x91B8, 0xE17D, 0x91B9, 0xE17E, 0x91BB, 0xE180, 0x91BC, 0xE181, 0x91BD, 0xE182, 0x91BE, + 0xE183, 0x91BF, 0xE184, 0x91C0, 0xE185, 0x91C1, 0xE186, 0x91C2, 0xE187, 0x91C3, 0xE188, 0x91C4, 0xE189, 0x91C5, 0xE18A, 0x91C6, + 0xE18B, 0x91C8, 0xE18C, 0x91CB, 0xE18D, 0x91D0, 0xE18E, 0x91D2, 0xE18F, 0x91D3, 0xE190, 0x91D4, 0xE191, 0x91D5, 0xE192, 0x91D6, + 0xE193, 0x91D7, 0xE194, 0x91D8, 0xE195, 0x91D9, 0xE196, 0x91DA, 0xE197, 0x91DB, 0xE198, 0x91DD, 0xE199, 0x91DE, 0xE19A, 0x91DF, + 0xE19B, 0x91E0, 0xE19C, 0x91E1, 0xE19D, 0x91E2, 0xE19E, 0x91E3, 0xE19F, 0x91E4, 0xE1A0, 0x91E5, 0xE1A1, 0x5E37, 0xE1A2, 0x5E44, + 0xE1A3, 0x5E54, 0xE1A4, 0x5E5B, 0xE1A5, 0x5E5E, 0xE1A6, 0x5E61, 0xE1A7, 0x5C8C, 0xE1A8, 0x5C7A, 0xE1A9, 0x5C8D, 0xE1AA, 0x5C90, + 0xE1AB, 0x5C96, 0xE1AC, 0x5C88, 0xE1AD, 0x5C98, 0xE1AE, 0x5C99, 0xE1AF, 0x5C91, 0xE1B0, 0x5C9A, 0xE1B1, 0x5C9C, 0xE1B2, 0x5CB5, + 0xE1B3, 0x5CA2, 0xE1B4, 0x5CBD, 0xE1B5, 0x5CAC, 0xE1B6, 0x5CAB, 0xE1B7, 0x5CB1, 0xE1B8, 0x5CA3, 0xE1B9, 0x5CC1, 0xE1BA, 0x5CB7, + 0xE1BB, 0x5CC4, 0xE1BC, 0x5CD2, 0xE1BD, 0x5CE4, 0xE1BE, 0x5CCB, 0xE1BF, 0x5CE5, 0xE1C0, 0x5D02, 0xE1C1, 0x5D03, 0xE1C2, 0x5D27, + 0xE1C3, 0x5D26, 0xE1C4, 0x5D2E, 0xE1C5, 0x5D24, 0xE1C6, 0x5D1E, 0xE1C7, 0x5D06, 0xE1C8, 0x5D1B, 0xE1C9, 0x5D58, 0xE1CA, 0x5D3E, + 0xE1CB, 0x5D34, 0xE1CC, 0x5D3D, 0xE1CD, 0x5D6C, 0xE1CE, 0x5D5B, 0xE1CF, 0x5D6F, 0xE1D0, 0x5D5D, 0xE1D1, 0x5D6B, 0xE1D2, 0x5D4B, + 0xE1D3, 0x5D4A, 0xE1D4, 0x5D69, 0xE1D5, 0x5D74, 0xE1D6, 0x5D82, 0xE1D7, 0x5D99, 0xE1D8, 0x5D9D, 0xE1D9, 0x8C73, 0xE1DA, 0x5DB7, + 0xE1DB, 0x5DC5, 0xE1DC, 0x5F73, 0xE1DD, 0x5F77, 0xE1DE, 0x5F82, 0xE1DF, 0x5F87, 0xE1E0, 0x5F89, 0xE1E1, 0x5F8C, 0xE1E2, 0x5F95, + 0xE1E3, 0x5F99, 0xE1E4, 0x5F9C, 0xE1E5, 0x5FA8, 0xE1E6, 0x5FAD, 0xE1E7, 0x5FB5, 0xE1E8, 0x5FBC, 0xE1E9, 0x8862, 0xE1EA, 0x5F61, + 0xE1EB, 0x72AD, 0xE1EC, 0x72B0, 0xE1ED, 0x72B4, 0xE1EE, 0x72B7, 0xE1EF, 0x72B8, 0xE1F0, 0x72C3, 0xE1F1, 0x72C1, 0xE1F2, 0x72CE, + 0xE1F3, 0x72CD, 0xE1F4, 0x72D2, 0xE1F5, 0x72E8, 0xE1F6, 0x72EF, 0xE1F7, 0x72E9, 0xE1F8, 0x72F2, 0xE1F9, 0x72F4, 0xE1FA, 0x72F7, + 0xE1FB, 0x7301, 0xE1FC, 0x72F3, 0xE1FD, 0x7303, 0xE1FE, 0x72FA, 0xE240, 0x91E6, 0xE241, 0x91E7, 0xE242, 0x91E8, 0xE243, 0x91E9, + 0xE244, 0x91EA, 0xE245, 0x91EB, 0xE246, 0x91EC, 0xE247, 0x91ED, 0xE248, 0x91EE, 0xE249, 0x91EF, 0xE24A, 0x91F0, 0xE24B, 0x91F1, + 0xE24C, 0x91F2, 0xE24D, 0x91F3, 0xE24E, 0x91F4, 0xE24F, 0x91F5, 0xE250, 0x91F6, 0xE251, 0x91F7, 0xE252, 0x91F8, 0xE253, 0x91F9, + 0xE254, 0x91FA, 0xE255, 0x91FB, 0xE256, 0x91FC, 0xE257, 0x91FD, 0xE258, 0x91FE, 0xE259, 0x91FF, 0xE25A, 0x9200, 0xE25B, 0x9201, + 0xE25C, 0x9202, 0xE25D, 0x9203, 0xE25E, 0x9204, 0xE25F, 0x9205, 0xE260, 0x9206, 0xE261, 0x9207, 0xE262, 0x9208, 0xE263, 0x9209, + 0xE264, 0x920A, 0xE265, 0x920B, 0xE266, 0x920C, 0xE267, 0x920D, 0xE268, 0x920E, 0xE269, 0x920F, 0xE26A, 0x9210, 0xE26B, 0x9211, + 0xE26C, 0x9212, 0xE26D, 0x9213, 0xE26E, 0x9214, 0xE26F, 0x9215, 0xE270, 0x9216, 0xE271, 0x9217, 0xE272, 0x9218, 0xE273, 0x9219, + 0xE274, 0x921A, 0xE275, 0x921B, 0xE276, 0x921C, 0xE277, 0x921D, 0xE278, 0x921E, 0xE279, 0x921F, 0xE27A, 0x9220, 0xE27B, 0x9221, + 0xE27C, 0x9222, 0xE27D, 0x9223, 0xE27E, 0x9224, 0xE280, 0x9225, 0xE281, 0x9226, 0xE282, 0x9227, 0xE283, 0x9228, 0xE284, 0x9229, + 0xE285, 0x922A, 0xE286, 0x922B, 0xE287, 0x922C, 0xE288, 0x922D, 0xE289, 0x922E, 0xE28A, 0x922F, 0xE28B, 0x9230, 0xE28C, 0x9231, + 0xE28D, 0x9232, 0xE28E, 0x9233, 0xE28F, 0x9234, 0xE290, 0x9235, 0xE291, 0x9236, 0xE292, 0x9237, 0xE293, 0x9238, 0xE294, 0x9239, + 0xE295, 0x923A, 0xE296, 0x923B, 0xE297, 0x923C, 0xE298, 0x923D, 0xE299, 0x923E, 0xE29A, 0x923F, 0xE29B, 0x9240, 0xE29C, 0x9241, + 0xE29D, 0x9242, 0xE29E, 0x9243, 0xE29F, 0x9244, 0xE2A0, 0x9245, 0xE2A1, 0x72FB, 0xE2A2, 0x7317, 0xE2A3, 0x7313, 0xE2A4, 0x7321, + 0xE2A5, 0x730A, 0xE2A6, 0x731E, 0xE2A7, 0x731D, 0xE2A8, 0x7315, 0xE2A9, 0x7322, 0xE2AA, 0x7339, 0xE2AB, 0x7325, 0xE2AC, 0x732C, + 0xE2AD, 0x7338, 0xE2AE, 0x7331, 0xE2AF, 0x7350, 0xE2B0, 0x734D, 0xE2B1, 0x7357, 0xE2B2, 0x7360, 0xE2B3, 0x736C, 0xE2B4, 0x736F, + 0xE2B5, 0x737E, 0xE2B6, 0x821B, 0xE2B7, 0x5925, 0xE2B8, 0x98E7, 0xE2B9, 0x5924, 0xE2BA, 0x5902, 0xE2BB, 0x9963, 0xE2BC, 0x9967, + 0xE2BD, 0x9968, 0xE2BE, 0x9969, 0xE2BF, 0x996A, 0xE2C0, 0x996B, 0xE2C1, 0x996C, 0xE2C2, 0x9974, 0xE2C3, 0x9977, 0xE2C4, 0x997D, + 0xE2C5, 0x9980, 0xE2C6, 0x9984, 0xE2C7, 0x9987, 0xE2C8, 0x998A, 0xE2C9, 0x998D, 0xE2CA, 0x9990, 0xE2CB, 0x9991, 0xE2CC, 0x9993, + 0xE2CD, 0x9994, 0xE2CE, 0x9995, 0xE2CF, 0x5E80, 0xE2D0, 0x5E91, 0xE2D1, 0x5E8B, 0xE2D2, 0x5E96, 0xE2D3, 0x5EA5, 0xE2D4, 0x5EA0, + 0xE2D5, 0x5EB9, 0xE2D6, 0x5EB5, 0xE2D7, 0x5EBE, 0xE2D8, 0x5EB3, 0xE2D9, 0x8D53, 0xE2DA, 0x5ED2, 0xE2DB, 0x5ED1, 0xE2DC, 0x5EDB, + 0xE2DD, 0x5EE8, 0xE2DE, 0x5EEA, 0xE2DF, 0x81BA, 0xE2E0, 0x5FC4, 0xE2E1, 0x5FC9, 0xE2E2, 0x5FD6, 0xE2E3, 0x5FCF, 0xE2E4, 0x6003, + 0xE2E5, 0x5FEE, 0xE2E6, 0x6004, 0xE2E7, 0x5FE1, 0xE2E8, 0x5FE4, 0xE2E9, 0x5FFE, 0xE2EA, 0x6005, 0xE2EB, 0x6006, 0xE2EC, 0x5FEA, + 0xE2ED, 0x5FED, 0xE2EE, 0x5FF8, 0xE2EF, 0x6019, 0xE2F0, 0x6035, 0xE2F1, 0x6026, 0xE2F2, 0x601B, 0xE2F3, 0x600F, 0xE2F4, 0x600D, + 0xE2F5, 0x6029, 0xE2F6, 0x602B, 0xE2F7, 0x600A, 0xE2F8, 0x603F, 0xE2F9, 0x6021, 0xE2FA, 0x6078, 0xE2FB, 0x6079, 0xE2FC, 0x607B, + 0xE2FD, 0x607A, 0xE2FE, 0x6042, 0xE340, 0x9246, 0xE341, 0x9247, 0xE342, 0x9248, 0xE343, 0x9249, 0xE344, 0x924A, 0xE345, 0x924B, + 0xE346, 0x924C, 0xE347, 0x924D, 0xE348, 0x924E, 0xE349, 0x924F, 0xE34A, 0x9250, 0xE34B, 0x9251, 0xE34C, 0x9252, 0xE34D, 0x9253, + 0xE34E, 0x9254, 0xE34F, 0x9255, 0xE350, 0x9256, 0xE351, 0x9257, 0xE352, 0x9258, 0xE353, 0x9259, 0xE354, 0x925A, 0xE355, 0x925B, + 0xE356, 0x925C, 0xE357, 0x925D, 0xE358, 0x925E, 0xE359, 0x925F, 0xE35A, 0x9260, 0xE35B, 0x9261, 0xE35C, 0x9262, 0xE35D, 0x9263, + 0xE35E, 0x9264, 0xE35F, 0x9265, 0xE360, 0x9266, 0xE361, 0x9267, 0xE362, 0x9268, 0xE363, 0x9269, 0xE364, 0x926A, 0xE365, 0x926B, + 0xE366, 0x926C, 0xE367, 0x926D, 0xE368, 0x926E, 0xE369, 0x926F, 0xE36A, 0x9270, 0xE36B, 0x9271, 0xE36C, 0x9272, 0xE36D, 0x9273, + 0xE36E, 0x9275, 0xE36F, 0x9276, 0xE370, 0x9277, 0xE371, 0x9278, 0xE372, 0x9279, 0xE373, 0x927A, 0xE374, 0x927B, 0xE375, 0x927C, + 0xE376, 0x927D, 0xE377, 0x927E, 0xE378, 0x927F, 0xE379, 0x9280, 0xE37A, 0x9281, 0xE37B, 0x9282, 0xE37C, 0x9283, 0xE37D, 0x9284, + 0xE37E, 0x9285, 0xE380, 0x9286, 0xE381, 0x9287, 0xE382, 0x9288, 0xE383, 0x9289, 0xE384, 0x928A, 0xE385, 0x928B, 0xE386, 0x928C, + 0xE387, 0x928D, 0xE388, 0x928F, 0xE389, 0x9290, 0xE38A, 0x9291, 0xE38B, 0x9292, 0xE38C, 0x9293, 0xE38D, 0x9294, 0xE38E, 0x9295, + 0xE38F, 0x9296, 0xE390, 0x9297, 0xE391, 0x9298, 0xE392, 0x9299, 0xE393, 0x929A, 0xE394, 0x929B, 0xE395, 0x929C, 0xE396, 0x929D, + 0xE397, 0x929E, 0xE398, 0x929F, 0xE399, 0x92A0, 0xE39A, 0x92A1, 0xE39B, 0x92A2, 0xE39C, 0x92A3, 0xE39D, 0x92A4, 0xE39E, 0x92A5, + 0xE39F, 0x92A6, 0xE3A0, 0x92A7, 0xE3A1, 0x606A, 0xE3A2, 0x607D, 0xE3A3, 0x6096, 0xE3A4, 0x609A, 0xE3A5, 0x60AD, 0xE3A6, 0x609D, + 0xE3A7, 0x6083, 0xE3A8, 0x6092, 0xE3A9, 0x608C, 0xE3AA, 0x609B, 0xE3AB, 0x60EC, 0xE3AC, 0x60BB, 0xE3AD, 0x60B1, 0xE3AE, 0x60DD, + 0xE3AF, 0x60D8, 0xE3B0, 0x60C6, 0xE3B1, 0x60DA, 0xE3B2, 0x60B4, 0xE3B3, 0x6120, 0xE3B4, 0x6126, 0xE3B5, 0x6115, 0xE3B6, 0x6123, + 0xE3B7, 0x60F4, 0xE3B8, 0x6100, 0xE3B9, 0x610E, 0xE3BA, 0x612B, 0xE3BB, 0x614A, 0xE3BC, 0x6175, 0xE3BD, 0x61AC, 0xE3BE, 0x6194, + 0xE3BF, 0x61A7, 0xE3C0, 0x61B7, 0xE3C1, 0x61D4, 0xE3C2, 0x61F5, 0xE3C3, 0x5FDD, 0xE3C4, 0x96B3, 0xE3C5, 0x95E9, 0xE3C6, 0x95EB, + 0xE3C7, 0x95F1, 0xE3C8, 0x95F3, 0xE3C9, 0x95F5, 0xE3CA, 0x95F6, 0xE3CB, 0x95FC, 0xE3CC, 0x95FE, 0xE3CD, 0x9603, 0xE3CE, 0x9604, + 0xE3CF, 0x9606, 0xE3D0, 0x9608, 0xE3D1, 0x960A, 0xE3D2, 0x960B, 0xE3D3, 0x960C, 0xE3D4, 0x960D, 0xE3D5, 0x960F, 0xE3D6, 0x9612, + 0xE3D7, 0x9615, 0xE3D8, 0x9616, 0xE3D9, 0x9617, 0xE3DA, 0x9619, 0xE3DB, 0x961A, 0xE3DC, 0x4E2C, 0xE3DD, 0x723F, 0xE3DE, 0x6215, + 0xE3DF, 0x6C35, 0xE3E0, 0x6C54, 0xE3E1, 0x6C5C, 0xE3E2, 0x6C4A, 0xE3E3, 0x6CA3, 0xE3E4, 0x6C85, 0xE3E5, 0x6C90, 0xE3E6, 0x6C94, + 0xE3E7, 0x6C8C, 0xE3E8, 0x6C68, 0xE3E9, 0x6C69, 0xE3EA, 0x6C74, 0xE3EB, 0x6C76, 0xE3EC, 0x6C86, 0xE3ED, 0x6CA9, 0xE3EE, 0x6CD0, + 0xE3EF, 0x6CD4, 0xE3F0, 0x6CAD, 0xE3F1, 0x6CF7, 0xE3F2, 0x6CF8, 0xE3F3, 0x6CF1, 0xE3F4, 0x6CD7, 0xE3F5, 0x6CB2, 0xE3F6, 0x6CE0, + 0xE3F7, 0x6CD6, 0xE3F8, 0x6CFA, 0xE3F9, 0x6CEB, 0xE3FA, 0x6CEE, 0xE3FB, 0x6CB1, 0xE3FC, 0x6CD3, 0xE3FD, 0x6CEF, 0xE3FE, 0x6CFE, + 0xE440, 0x92A8, 0xE441, 0x92A9, 0xE442, 0x92AA, 0xE443, 0x92AB, 0xE444, 0x92AC, 0xE445, 0x92AD, 0xE446, 0x92AF, 0xE447, 0x92B0, + 0xE448, 0x92B1, 0xE449, 0x92B2, 0xE44A, 0x92B3, 0xE44B, 0x92B4, 0xE44C, 0x92B5, 0xE44D, 0x92B6, 0xE44E, 0x92B7, 0xE44F, 0x92B8, + 0xE450, 0x92B9, 0xE451, 0x92BA, 0xE452, 0x92BB, 0xE453, 0x92BC, 0xE454, 0x92BD, 0xE455, 0x92BE, 0xE456, 0x92BF, 0xE457, 0x92C0, + 0xE458, 0x92C1, 0xE459, 0x92C2, 0xE45A, 0x92C3, 0xE45B, 0x92C4, 0xE45C, 0x92C5, 0xE45D, 0x92C6, 0xE45E, 0x92C7, 0xE45F, 0x92C9, + 0xE460, 0x92CA, 0xE461, 0x92CB, 0xE462, 0x92CC, 0xE463, 0x92CD, 0xE464, 0x92CE, 0xE465, 0x92CF, 0xE466, 0x92D0, 0xE467, 0x92D1, + 0xE468, 0x92D2, 0xE469, 0x92D3, 0xE46A, 0x92D4, 0xE46B, 0x92D5, 0xE46C, 0x92D6, 0xE46D, 0x92D7, 0xE46E, 0x92D8, 0xE46F, 0x92D9, + 0xE470, 0x92DA, 0xE471, 0x92DB, 0xE472, 0x92DC, 0xE473, 0x92DD, 0xE474, 0x92DE, 0xE475, 0x92DF, 0xE476, 0x92E0, 0xE477, 0x92E1, + 0xE478, 0x92E2, 0xE479, 0x92E3, 0xE47A, 0x92E4, 0xE47B, 0x92E5, 0xE47C, 0x92E6, 0xE47D, 0x92E7, 0xE47E, 0x92E8, 0xE480, 0x92E9, + 0xE481, 0x92EA, 0xE482, 0x92EB, 0xE483, 0x92EC, 0xE484, 0x92ED, 0xE485, 0x92EE, 0xE486, 0x92EF, 0xE487, 0x92F0, 0xE488, 0x92F1, + 0xE489, 0x92F2, 0xE48A, 0x92F3, 0xE48B, 0x92F4, 0xE48C, 0x92F5, 0xE48D, 0x92F6, 0xE48E, 0x92F7, 0xE48F, 0x92F8, 0xE490, 0x92F9, + 0xE491, 0x92FA, 0xE492, 0x92FB, 0xE493, 0x92FC, 0xE494, 0x92FD, 0xE495, 0x92FE, 0xE496, 0x92FF, 0xE497, 0x9300, 0xE498, 0x9301, + 0xE499, 0x9302, 0xE49A, 0x9303, 0xE49B, 0x9304, 0xE49C, 0x9305, 0xE49D, 0x9306, 0xE49E, 0x9307, 0xE49F, 0x9308, 0xE4A0, 0x9309, + 0xE4A1, 0x6D39, 0xE4A2, 0x6D27, 0xE4A3, 0x6D0C, 0xE4A4, 0x6D43, 0xE4A5, 0x6D48, 0xE4A6, 0x6D07, 0xE4A7, 0x6D04, 0xE4A8, 0x6D19, + 0xE4A9, 0x6D0E, 0xE4AA, 0x6D2B, 0xE4AB, 0x6D4D, 0xE4AC, 0x6D2E, 0xE4AD, 0x6D35, 0xE4AE, 0x6D1A, 0xE4AF, 0x6D4F, 0xE4B0, 0x6D52, + 0xE4B1, 0x6D54, 0xE4B2, 0x6D33, 0xE4B3, 0x6D91, 0xE4B4, 0x6D6F, 0xE4B5, 0x6D9E, 0xE4B6, 0x6DA0, 0xE4B7, 0x6D5E, 0xE4B8, 0x6D93, + 0xE4B9, 0x6D94, 0xE4BA, 0x6D5C, 0xE4BB, 0x6D60, 0xE4BC, 0x6D7C, 0xE4BD, 0x6D63, 0xE4BE, 0x6E1A, 0xE4BF, 0x6DC7, 0xE4C0, 0x6DC5, + 0xE4C1, 0x6DDE, 0xE4C2, 0x6E0E, 0xE4C3, 0x6DBF, 0xE4C4, 0x6DE0, 0xE4C5, 0x6E11, 0xE4C6, 0x6DE6, 0xE4C7, 0x6DDD, 0xE4C8, 0x6DD9, + 0xE4C9, 0x6E16, 0xE4CA, 0x6DAB, 0xE4CB, 0x6E0C, 0xE4CC, 0x6DAE, 0xE4CD, 0x6E2B, 0xE4CE, 0x6E6E, 0xE4CF, 0x6E4E, 0xE4D0, 0x6E6B, + 0xE4D1, 0x6EB2, 0xE4D2, 0x6E5F, 0xE4D3, 0x6E86, 0xE4D4, 0x6E53, 0xE4D5, 0x6E54, 0xE4D6, 0x6E32, 0xE4D7, 0x6E25, 0xE4D8, 0x6E44, + 0xE4D9, 0x6EDF, 0xE4DA, 0x6EB1, 0xE4DB, 0x6E98, 0xE4DC, 0x6EE0, 0xE4DD, 0x6F2D, 0xE4DE, 0x6EE2, 0xE4DF, 0x6EA5, 0xE4E0, 0x6EA7, + 0xE4E1, 0x6EBD, 0xE4E2, 0x6EBB, 0xE4E3, 0x6EB7, 0xE4E4, 0x6ED7, 0xE4E5, 0x6EB4, 0xE4E6, 0x6ECF, 0xE4E7, 0x6E8F, 0xE4E8, 0x6EC2, + 0xE4E9, 0x6E9F, 0xE4EA, 0x6F62, 0xE4EB, 0x6F46, 0xE4EC, 0x6F47, 0xE4ED, 0x6F24, 0xE4EE, 0x6F15, 0xE4EF, 0x6EF9, 0xE4F0, 0x6F2F, + 0xE4F1, 0x6F36, 0xE4F2, 0x6F4B, 0xE4F3, 0x6F74, 0xE4F4, 0x6F2A, 0xE4F5, 0x6F09, 0xE4F6, 0x6F29, 0xE4F7, 0x6F89, 0xE4F8, 0x6F8D, + 0xE4F9, 0x6F8C, 0xE4FA, 0x6F78, 0xE4FB, 0x6F72, 0xE4FC, 0x6F7C, 0xE4FD, 0x6F7A, 0xE4FE, 0x6FD1, 0xE540, 0x930A, 0xE541, 0x930B, + 0xE542, 0x930C, 0xE543, 0x930D, 0xE544, 0x930E, 0xE545, 0x930F, 0xE546, 0x9310, 0xE547, 0x9311, 0xE548, 0x9312, 0xE549, 0x9313, + 0xE54A, 0x9314, 0xE54B, 0x9315, 0xE54C, 0x9316, 0xE54D, 0x9317, 0xE54E, 0x9318, 0xE54F, 0x9319, 0xE550, 0x931A, 0xE551, 0x931B, + 0xE552, 0x931C, 0xE553, 0x931D, 0xE554, 0x931E, 0xE555, 0x931F, 0xE556, 0x9320, 0xE557, 0x9321, 0xE558, 0x9322, 0xE559, 0x9323, + 0xE55A, 0x9324, 0xE55B, 0x9325, 0xE55C, 0x9326, 0xE55D, 0x9327, 0xE55E, 0x9328, 0xE55F, 0x9329, 0xE560, 0x932A, 0xE561, 0x932B, + 0xE562, 0x932C, 0xE563, 0x932D, 0xE564, 0x932E, 0xE565, 0x932F, 0xE566, 0x9330, 0xE567, 0x9331, 0xE568, 0x9332, 0xE569, 0x9333, + 0xE56A, 0x9334, 0xE56B, 0x9335, 0xE56C, 0x9336, 0xE56D, 0x9337, 0xE56E, 0x9338, 0xE56F, 0x9339, 0xE570, 0x933A, 0xE571, 0x933B, + 0xE572, 0x933C, 0xE573, 0x933D, 0xE574, 0x933F, 0xE575, 0x9340, 0xE576, 0x9341, 0xE577, 0x9342, 0xE578, 0x9343, 0xE579, 0x9344, + 0xE57A, 0x9345, 0xE57B, 0x9346, 0xE57C, 0x9347, 0xE57D, 0x9348, 0xE57E, 0x9349, 0xE580, 0x934A, 0xE581, 0x934B, 0xE582, 0x934C, + 0xE583, 0x934D, 0xE584, 0x934E, 0xE585, 0x934F, 0xE586, 0x9350, 0xE587, 0x9351, 0xE588, 0x9352, 0xE589, 0x9353, 0xE58A, 0x9354, + 0xE58B, 0x9355, 0xE58C, 0x9356, 0xE58D, 0x9357, 0xE58E, 0x9358, 0xE58F, 0x9359, 0xE590, 0x935A, 0xE591, 0x935B, 0xE592, 0x935C, + 0xE593, 0x935D, 0xE594, 0x935E, 0xE595, 0x935F, 0xE596, 0x9360, 0xE597, 0x9361, 0xE598, 0x9362, 0xE599, 0x9363, 0xE59A, 0x9364, + 0xE59B, 0x9365, 0xE59C, 0x9366, 0xE59D, 0x9367, 0xE59E, 0x9368, 0xE59F, 0x9369, 0xE5A0, 0x936B, 0xE5A1, 0x6FC9, 0xE5A2, 0x6FA7, + 0xE5A3, 0x6FB9, 0xE5A4, 0x6FB6, 0xE5A5, 0x6FC2, 0xE5A6, 0x6FE1, 0xE5A7, 0x6FEE, 0xE5A8, 0x6FDE, 0xE5A9, 0x6FE0, 0xE5AA, 0x6FEF, + 0xE5AB, 0x701A, 0xE5AC, 0x7023, 0xE5AD, 0x701B, 0xE5AE, 0x7039, 0xE5AF, 0x7035, 0xE5B0, 0x704F, 0xE5B1, 0x705E, 0xE5B2, 0x5B80, + 0xE5B3, 0x5B84, 0xE5B4, 0x5B95, 0xE5B5, 0x5B93, 0xE5B6, 0x5BA5, 0xE5B7, 0x5BB8, 0xE5B8, 0x752F, 0xE5B9, 0x9A9E, 0xE5BA, 0x6434, + 0xE5BB, 0x5BE4, 0xE5BC, 0x5BEE, 0xE5BD, 0x8930, 0xE5BE, 0x5BF0, 0xE5BF, 0x8E47, 0xE5C0, 0x8B07, 0xE5C1, 0x8FB6, 0xE5C2, 0x8FD3, + 0xE5C3, 0x8FD5, 0xE5C4, 0x8FE5, 0xE5C5, 0x8FEE, 0xE5C6, 0x8FE4, 0xE5C7, 0x8FE9, 0xE5C8, 0x8FE6, 0xE5C9, 0x8FF3, 0xE5CA, 0x8FE8, + 0xE5CB, 0x9005, 0xE5CC, 0x9004, 0xE5CD, 0x900B, 0xE5CE, 0x9026, 0xE5CF, 0x9011, 0xE5D0, 0x900D, 0xE5D1, 0x9016, 0xE5D2, 0x9021, + 0xE5D3, 0x9035, 0xE5D4, 0x9036, 0xE5D5, 0x902D, 0xE5D6, 0x902F, 0xE5D7, 0x9044, 0xE5D8, 0x9051, 0xE5D9, 0x9052, 0xE5DA, 0x9050, + 0xE5DB, 0x9068, 0xE5DC, 0x9058, 0xE5DD, 0x9062, 0xE5DE, 0x905B, 0xE5DF, 0x66B9, 0xE5E0, 0x9074, 0xE5E1, 0x907D, 0xE5E2, 0x9082, + 0xE5E3, 0x9088, 0xE5E4, 0x9083, 0xE5E5, 0x908B, 0xE5E6, 0x5F50, 0xE5E7, 0x5F57, 0xE5E8, 0x5F56, 0xE5E9, 0x5F58, 0xE5EA, 0x5C3B, + 0xE5EB, 0x54AB, 0xE5EC, 0x5C50, 0xE5ED, 0x5C59, 0xE5EE, 0x5B71, 0xE5EF, 0x5C63, 0xE5F0, 0x5C66, 0xE5F1, 0x7FBC, 0xE5F2, 0x5F2A, + 0xE5F3, 0x5F29, 0xE5F4, 0x5F2D, 0xE5F5, 0x8274, 0xE5F6, 0x5F3C, 0xE5F7, 0x9B3B, 0xE5F8, 0x5C6E, 0xE5F9, 0x5981, 0xE5FA, 0x5983, + 0xE5FB, 0x598D, 0xE5FC, 0x59A9, 0xE5FD, 0x59AA, 0xE5FE, 0x59A3, 0xE640, 0x936C, 0xE641, 0x936D, 0xE642, 0x936E, 0xE643, 0x936F, + 0xE644, 0x9370, 0xE645, 0x9371, 0xE646, 0x9372, 0xE647, 0x9373, 0xE648, 0x9374, 0xE649, 0x9375, 0xE64A, 0x9376, 0xE64B, 0x9377, + 0xE64C, 0x9378, 0xE64D, 0x9379, 0xE64E, 0x937A, 0xE64F, 0x937B, 0xE650, 0x937C, 0xE651, 0x937D, 0xE652, 0x937E, 0xE653, 0x937F, + 0xE654, 0x9380, 0xE655, 0x9381, 0xE656, 0x9382, 0xE657, 0x9383, 0xE658, 0x9384, 0xE659, 0x9385, 0xE65A, 0x9386, 0xE65B, 0x9387, + 0xE65C, 0x9388, 0xE65D, 0x9389, 0xE65E, 0x938A, 0xE65F, 0x938B, 0xE660, 0x938C, 0xE661, 0x938D, 0xE662, 0x938E, 0xE663, 0x9390, + 0xE664, 0x9391, 0xE665, 0x9392, 0xE666, 0x9393, 0xE667, 0x9394, 0xE668, 0x9395, 0xE669, 0x9396, 0xE66A, 0x9397, 0xE66B, 0x9398, + 0xE66C, 0x9399, 0xE66D, 0x939A, 0xE66E, 0x939B, 0xE66F, 0x939C, 0xE670, 0x939D, 0xE671, 0x939E, 0xE672, 0x939F, 0xE673, 0x93A0, + 0xE674, 0x93A1, 0xE675, 0x93A2, 0xE676, 0x93A3, 0xE677, 0x93A4, 0xE678, 0x93A5, 0xE679, 0x93A6, 0xE67A, 0x93A7, 0xE67B, 0x93A8, + 0xE67C, 0x93A9, 0xE67D, 0x93AA, 0xE67E, 0x93AB, 0xE680, 0x93AC, 0xE681, 0x93AD, 0xE682, 0x93AE, 0xE683, 0x93AF, 0xE684, 0x93B0, + 0xE685, 0x93B1, 0xE686, 0x93B2, 0xE687, 0x93B3, 0xE688, 0x93B4, 0xE689, 0x93B5, 0xE68A, 0x93B6, 0xE68B, 0x93B7, 0xE68C, 0x93B8, + 0xE68D, 0x93B9, 0xE68E, 0x93BA, 0xE68F, 0x93BB, 0xE690, 0x93BC, 0xE691, 0x93BD, 0xE692, 0x93BE, 0xE693, 0x93BF, 0xE694, 0x93C0, + 0xE695, 0x93C1, 0xE696, 0x93C2, 0xE697, 0x93C3, 0xE698, 0x93C4, 0xE699, 0x93C5, 0xE69A, 0x93C6, 0xE69B, 0x93C7, 0xE69C, 0x93C8, + 0xE69D, 0x93C9, 0xE69E, 0x93CB, 0xE69F, 0x93CC, 0xE6A0, 0x93CD, 0xE6A1, 0x5997, 0xE6A2, 0x59CA, 0xE6A3, 0x59AB, 0xE6A4, 0x599E, + 0xE6A5, 0x59A4, 0xE6A6, 0x59D2, 0xE6A7, 0x59B2, 0xE6A8, 0x59AF, 0xE6A9, 0x59D7, 0xE6AA, 0x59BE, 0xE6AB, 0x5A05, 0xE6AC, 0x5A06, + 0xE6AD, 0x59DD, 0xE6AE, 0x5A08, 0xE6AF, 0x59E3, 0xE6B0, 0x59D8, 0xE6B1, 0x59F9, 0xE6B2, 0x5A0C, 0xE6B3, 0x5A09, 0xE6B4, 0x5A32, + 0xE6B5, 0x5A34, 0xE6B6, 0x5A11, 0xE6B7, 0x5A23, 0xE6B8, 0x5A13, 0xE6B9, 0x5A40, 0xE6BA, 0x5A67, 0xE6BB, 0x5A4A, 0xE6BC, 0x5A55, + 0xE6BD, 0x5A3C, 0xE6BE, 0x5A62, 0xE6BF, 0x5A75, 0xE6C0, 0x80EC, 0xE6C1, 0x5AAA, 0xE6C2, 0x5A9B, 0xE6C3, 0x5A77, 0xE6C4, 0x5A7A, + 0xE6C5, 0x5ABE, 0xE6C6, 0x5AEB, 0xE6C7, 0x5AB2, 0xE6C8, 0x5AD2, 0xE6C9, 0x5AD4, 0xE6CA, 0x5AB8, 0xE6CB, 0x5AE0, 0xE6CC, 0x5AE3, + 0xE6CD, 0x5AF1, 0xE6CE, 0x5AD6, 0xE6CF, 0x5AE6, 0xE6D0, 0x5AD8, 0xE6D1, 0x5ADC, 0xE6D2, 0x5B09, 0xE6D3, 0x5B17, 0xE6D4, 0x5B16, + 0xE6D5, 0x5B32, 0xE6D6, 0x5B37, 0xE6D7, 0x5B40, 0xE6D8, 0x5C15, 0xE6D9, 0x5C1C, 0xE6DA, 0x5B5A, 0xE6DB, 0x5B65, 0xE6DC, 0x5B73, + 0xE6DD, 0x5B51, 0xE6DE, 0x5B53, 0xE6DF, 0x5B62, 0xE6E0, 0x9A75, 0xE6E1, 0x9A77, 0xE6E2, 0x9A78, 0xE6E3, 0x9A7A, 0xE6E4, 0x9A7F, + 0xE6E5, 0x9A7D, 0xE6E6, 0x9A80, 0xE6E7, 0x9A81, 0xE6E8, 0x9A85, 0xE6E9, 0x9A88, 0xE6EA, 0x9A8A, 0xE6EB, 0x9A90, 0xE6EC, 0x9A92, + 0xE6ED, 0x9A93, 0xE6EE, 0x9A96, 0xE6EF, 0x9A98, 0xE6F0, 0x9A9B, 0xE6F1, 0x9A9C, 0xE6F2, 0x9A9D, 0xE6F3, 0x9A9F, 0xE6F4, 0x9AA0, + 0xE6F5, 0x9AA2, 0xE6F6, 0x9AA3, 0xE6F7, 0x9AA5, 0xE6F8, 0x9AA7, 0xE6F9, 0x7E9F, 0xE6FA, 0x7EA1, 0xE6FB, 0x7EA3, 0xE6FC, 0x7EA5, + 0xE6FD, 0x7EA8, 0xE6FE, 0x7EA9, 0xE740, 0x93CE, 0xE741, 0x93CF, 0xE742, 0x93D0, 0xE743, 0x93D1, 0xE744, 0x93D2, 0xE745, 0x93D3, + 0xE746, 0x93D4, 0xE747, 0x93D5, 0xE748, 0x93D7, 0xE749, 0x93D8, 0xE74A, 0x93D9, 0xE74B, 0x93DA, 0xE74C, 0x93DB, 0xE74D, 0x93DC, + 0xE74E, 0x93DD, 0xE74F, 0x93DE, 0xE750, 0x93DF, 0xE751, 0x93E0, 0xE752, 0x93E1, 0xE753, 0x93E2, 0xE754, 0x93E3, 0xE755, 0x93E4, + 0xE756, 0x93E5, 0xE757, 0x93E6, 0xE758, 0x93E7, 0xE759, 0x93E8, 0xE75A, 0x93E9, 0xE75B, 0x93EA, 0xE75C, 0x93EB, 0xE75D, 0x93EC, + 0xE75E, 0x93ED, 0xE75F, 0x93EE, 0xE760, 0x93EF, 0xE761, 0x93F0, 0xE762, 0x93F1, 0xE763, 0x93F2, 0xE764, 0x93F3, 0xE765, 0x93F4, + 0xE766, 0x93F5, 0xE767, 0x93F6, 0xE768, 0x93F7, 0xE769, 0x93F8, 0xE76A, 0x93F9, 0xE76B, 0x93FA, 0xE76C, 0x93FB, 0xE76D, 0x93FC, + 0xE76E, 0x93FD, 0xE76F, 0x93FE, 0xE770, 0x93FF, 0xE771, 0x9400, 0xE772, 0x9401, 0xE773, 0x9402, 0xE774, 0x9403, 0xE775, 0x9404, + 0xE776, 0x9405, 0xE777, 0x9406, 0xE778, 0x9407, 0xE779, 0x9408, 0xE77A, 0x9409, 0xE77B, 0x940A, 0xE77C, 0x940B, 0xE77D, 0x940C, + 0xE77E, 0x940D, 0xE780, 0x940E, 0xE781, 0x940F, 0xE782, 0x9410, 0xE783, 0x9411, 0xE784, 0x9412, 0xE785, 0x9413, 0xE786, 0x9414, + 0xE787, 0x9415, 0xE788, 0x9416, 0xE789, 0x9417, 0xE78A, 0x9418, 0xE78B, 0x9419, 0xE78C, 0x941A, 0xE78D, 0x941B, 0xE78E, 0x941C, + 0xE78F, 0x941D, 0xE790, 0x941E, 0xE791, 0x941F, 0xE792, 0x9420, 0xE793, 0x9421, 0xE794, 0x9422, 0xE795, 0x9423, 0xE796, 0x9424, + 0xE797, 0x9425, 0xE798, 0x9426, 0xE799, 0x9427, 0xE79A, 0x9428, 0xE79B, 0x9429, 0xE79C, 0x942A, 0xE79D, 0x942B, 0xE79E, 0x942C, + 0xE79F, 0x942D, 0xE7A0, 0x942E, 0xE7A1, 0x7EAD, 0xE7A2, 0x7EB0, 0xE7A3, 0x7EBE, 0xE7A4, 0x7EC0, 0xE7A5, 0x7EC1, 0xE7A6, 0x7EC2, + 0xE7A7, 0x7EC9, 0xE7A8, 0x7ECB, 0xE7A9, 0x7ECC, 0xE7AA, 0x7ED0, 0xE7AB, 0x7ED4, 0xE7AC, 0x7ED7, 0xE7AD, 0x7EDB, 0xE7AE, 0x7EE0, + 0xE7AF, 0x7EE1, 0xE7B0, 0x7EE8, 0xE7B1, 0x7EEB, 0xE7B2, 0x7EEE, 0xE7B3, 0x7EEF, 0xE7B4, 0x7EF1, 0xE7B5, 0x7EF2, 0xE7B6, 0x7F0D, + 0xE7B7, 0x7EF6, 0xE7B8, 0x7EFA, 0xE7B9, 0x7EFB, 0xE7BA, 0x7EFE, 0xE7BB, 0x7F01, 0xE7BC, 0x7F02, 0xE7BD, 0x7F03, 0xE7BE, 0x7F07, + 0xE7BF, 0x7F08, 0xE7C0, 0x7F0B, 0xE7C1, 0x7F0C, 0xE7C2, 0x7F0F, 0xE7C3, 0x7F11, 0xE7C4, 0x7F12, 0xE7C5, 0x7F17, 0xE7C6, 0x7F19, + 0xE7C7, 0x7F1C, 0xE7C8, 0x7F1B, 0xE7C9, 0x7F1F, 0xE7CA, 0x7F21, 0xE7CB, 0x7F22, 0xE7CC, 0x7F23, 0xE7CD, 0x7F24, 0xE7CE, 0x7F25, + 0xE7CF, 0x7F26, 0xE7D0, 0x7F27, 0xE7D1, 0x7F2A, 0xE7D2, 0x7F2B, 0xE7D3, 0x7F2C, 0xE7D4, 0x7F2D, 0xE7D5, 0x7F2F, 0xE7D6, 0x7F30, + 0xE7D7, 0x7F31, 0xE7D8, 0x7F32, 0xE7D9, 0x7F33, 0xE7DA, 0x7F35, 0xE7DB, 0x5E7A, 0xE7DC, 0x757F, 0xE7DD, 0x5DDB, 0xE7DE, 0x753E, + 0xE7DF, 0x9095, 0xE7E0, 0x738E, 0xE7E1, 0x7391, 0xE7E2, 0x73AE, 0xE7E3, 0x73A2, 0xE7E4, 0x739F, 0xE7E5, 0x73CF, 0xE7E6, 0x73C2, + 0xE7E7, 0x73D1, 0xE7E8, 0x73B7, 0xE7E9, 0x73B3, 0xE7EA, 0x73C0, 0xE7EB, 0x73C9, 0xE7EC, 0x73C8, 0xE7ED, 0x73E5, 0xE7EE, 0x73D9, + 0xE7EF, 0x987C, 0xE7F0, 0x740A, 0xE7F1, 0x73E9, 0xE7F2, 0x73E7, 0xE7F3, 0x73DE, 0xE7F4, 0x73BA, 0xE7F5, 0x73F2, 0xE7F6, 0x740F, + 0xE7F7, 0x742A, 0xE7F8, 0x745B, 0xE7F9, 0x7426, 0xE7FA, 0x7425, 0xE7FB, 0x7428, 0xE7FC, 0x7430, 0xE7FD, 0x742E, 0xE7FE, 0x742C, + 0xE840, 0x942F, 0xE841, 0x9430, 0xE842, 0x9431, 0xE843, 0x9432, 0xE844, 0x9433, 0xE845, 0x9434, 0xE846, 0x9435, 0xE847, 0x9436, + 0xE848, 0x9437, 0xE849, 0x9438, 0xE84A, 0x9439, 0xE84B, 0x943A, 0xE84C, 0x943B, 0xE84D, 0x943C, 0xE84E, 0x943D, 0xE84F, 0x943F, + 0xE850, 0x9440, 0xE851, 0x9441, 0xE852, 0x9442, 0xE853, 0x9443, 0xE854, 0x9444, 0xE855, 0x9445, 0xE856, 0x9446, 0xE857, 0x9447, + 0xE858, 0x9448, 0xE859, 0x9449, 0xE85A, 0x944A, 0xE85B, 0x944B, 0xE85C, 0x944C, 0xE85D, 0x944D, 0xE85E, 0x944E, 0xE85F, 0x944F, + 0xE860, 0x9450, 0xE861, 0x9451, 0xE862, 0x9452, 0xE863, 0x9453, 0xE864, 0x9454, 0xE865, 0x9455, 0xE866, 0x9456, 0xE867, 0x9457, + 0xE868, 0x9458, 0xE869, 0x9459, 0xE86A, 0x945A, 0xE86B, 0x945B, 0xE86C, 0x945C, 0xE86D, 0x945D, 0xE86E, 0x945E, 0xE86F, 0x945F, + 0xE870, 0x9460, 0xE871, 0x9461, 0xE872, 0x9462, 0xE873, 0x9463, 0xE874, 0x9464, 0xE875, 0x9465, 0xE876, 0x9466, 0xE877, 0x9467, + 0xE878, 0x9468, 0xE879, 0x9469, 0xE87A, 0x946A, 0xE87B, 0x946C, 0xE87C, 0x946D, 0xE87D, 0x946E, 0xE87E, 0x946F, 0xE880, 0x9470, + 0xE881, 0x9471, 0xE882, 0x9472, 0xE883, 0x9473, 0xE884, 0x9474, 0xE885, 0x9475, 0xE886, 0x9476, 0xE887, 0x9477, 0xE888, 0x9478, + 0xE889, 0x9479, 0xE88A, 0x947A, 0xE88B, 0x947B, 0xE88C, 0x947C, 0xE88D, 0x947D, 0xE88E, 0x947E, 0xE88F, 0x947F, 0xE890, 0x9480, + 0xE891, 0x9481, 0xE892, 0x9482, 0xE893, 0x9483, 0xE894, 0x9484, 0xE895, 0x9491, 0xE896, 0x9496, 0xE897, 0x9498, 0xE898, 0x94C7, + 0xE899, 0x94CF, 0xE89A, 0x94D3, 0xE89B, 0x94D4, 0xE89C, 0x94DA, 0xE89D, 0x94E6, 0xE89E, 0x94FB, 0xE89F, 0x951C, 0xE8A0, 0x9520, + 0xE8A1, 0x741B, 0xE8A2, 0x741A, 0xE8A3, 0x7441, 0xE8A4, 0x745C, 0xE8A5, 0x7457, 0xE8A6, 0x7455, 0xE8A7, 0x7459, 0xE8A8, 0x7477, + 0xE8A9, 0x746D, 0xE8AA, 0x747E, 0xE8AB, 0x749C, 0xE8AC, 0x748E, 0xE8AD, 0x7480, 0xE8AE, 0x7481, 0xE8AF, 0x7487, 0xE8B0, 0x748B, + 0xE8B1, 0x749E, 0xE8B2, 0x74A8, 0xE8B3, 0x74A9, 0xE8B4, 0x7490, 0xE8B5, 0x74A7, 0xE8B6, 0x74D2, 0xE8B7, 0x74BA, 0xE8B8, 0x97EA, + 0xE8B9, 0x97EB, 0xE8BA, 0x97EC, 0xE8BB, 0x674C, 0xE8BC, 0x6753, 0xE8BD, 0x675E, 0xE8BE, 0x6748, 0xE8BF, 0x6769, 0xE8C0, 0x67A5, + 0xE8C1, 0x6787, 0xE8C2, 0x676A, 0xE8C3, 0x6773, 0xE8C4, 0x6798, 0xE8C5, 0x67A7, 0xE8C6, 0x6775, 0xE8C7, 0x67A8, 0xE8C8, 0x679E, + 0xE8C9, 0x67AD, 0xE8CA, 0x678B, 0xE8CB, 0x6777, 0xE8CC, 0x677C, 0xE8CD, 0x67F0, 0xE8CE, 0x6809, 0xE8CF, 0x67D8, 0xE8D0, 0x680A, + 0xE8D1, 0x67E9, 0xE8D2, 0x67B0, 0xE8D3, 0x680C, 0xE8D4, 0x67D9, 0xE8D5, 0x67B5, 0xE8D6, 0x67DA, 0xE8D7, 0x67B3, 0xE8D8, 0x67DD, + 0xE8D9, 0x6800, 0xE8DA, 0x67C3, 0xE8DB, 0x67B8, 0xE8DC, 0x67E2, 0xE8DD, 0x680E, 0xE8DE, 0x67C1, 0xE8DF, 0x67FD, 0xE8E0, 0x6832, + 0xE8E1, 0x6833, 0xE8E2, 0x6860, 0xE8E3, 0x6861, 0xE8E4, 0x684E, 0xE8E5, 0x6862, 0xE8E6, 0x6844, 0xE8E7, 0x6864, 0xE8E8, 0x6883, + 0xE8E9, 0x681D, 0xE8EA, 0x6855, 0xE8EB, 0x6866, 0xE8EC, 0x6841, 0xE8ED, 0x6867, 0xE8EE, 0x6840, 0xE8EF, 0x683E, 0xE8F0, 0x684A, + 0xE8F1, 0x6849, 0xE8F2, 0x6829, 0xE8F3, 0x68B5, 0xE8F4, 0x688F, 0xE8F5, 0x6874, 0xE8F6, 0x6877, 0xE8F7, 0x6893, 0xE8F8, 0x686B, + 0xE8F9, 0x68C2, 0xE8FA, 0x696E, 0xE8FB, 0x68FC, 0xE8FC, 0x691F, 0xE8FD, 0x6920, 0xE8FE, 0x68F9, 0xE940, 0x9527, 0xE941, 0x9533, + 0xE942, 0x953D, 0xE943, 0x9543, 0xE944, 0x9548, 0xE945, 0x954B, 0xE946, 0x9555, 0xE947, 0x955A, 0xE948, 0x9560, 0xE949, 0x956E, + 0xE94A, 0x9574, 0xE94B, 0x9575, 0xE94C, 0x9577, 0xE94D, 0x9578, 0xE94E, 0x9579, 0xE94F, 0x957A, 0xE950, 0x957B, 0xE951, 0x957C, + 0xE952, 0x957D, 0xE953, 0x957E, 0xE954, 0x9580, 0xE955, 0x9581, 0xE956, 0x9582, 0xE957, 0x9583, 0xE958, 0x9584, 0xE959, 0x9585, + 0xE95A, 0x9586, 0xE95B, 0x9587, 0xE95C, 0x9588, 0xE95D, 0x9589, 0xE95E, 0x958A, 0xE95F, 0x958B, 0xE960, 0x958C, 0xE961, 0x958D, + 0xE962, 0x958E, 0xE963, 0x958F, 0xE964, 0x9590, 0xE965, 0x9591, 0xE966, 0x9592, 0xE967, 0x9593, 0xE968, 0x9594, 0xE969, 0x9595, + 0xE96A, 0x9596, 0xE96B, 0x9597, 0xE96C, 0x9598, 0xE96D, 0x9599, 0xE96E, 0x959A, 0xE96F, 0x959B, 0xE970, 0x959C, 0xE971, 0x959D, + 0xE972, 0x959E, 0xE973, 0x959F, 0xE974, 0x95A0, 0xE975, 0x95A1, 0xE976, 0x95A2, 0xE977, 0x95A3, 0xE978, 0x95A4, 0xE979, 0x95A5, + 0xE97A, 0x95A6, 0xE97B, 0x95A7, 0xE97C, 0x95A8, 0xE97D, 0x95A9, 0xE97E, 0x95AA, 0xE980, 0x95AB, 0xE981, 0x95AC, 0xE982, 0x95AD, + 0xE983, 0x95AE, 0xE984, 0x95AF, 0xE985, 0x95B0, 0xE986, 0x95B1, 0xE987, 0x95B2, 0xE988, 0x95B3, 0xE989, 0x95B4, 0xE98A, 0x95B5, + 0xE98B, 0x95B6, 0xE98C, 0x95B7, 0xE98D, 0x95B8, 0xE98E, 0x95B9, 0xE98F, 0x95BA, 0xE990, 0x95BB, 0xE991, 0x95BC, 0xE992, 0x95BD, + 0xE993, 0x95BE, 0xE994, 0x95BF, 0xE995, 0x95C0, 0xE996, 0x95C1, 0xE997, 0x95C2, 0xE998, 0x95C3, 0xE999, 0x95C4, 0xE99A, 0x95C5, + 0xE99B, 0x95C6, 0xE99C, 0x95C7, 0xE99D, 0x95C8, 0xE99E, 0x95C9, 0xE99F, 0x95CA, 0xE9A0, 0x95CB, 0xE9A1, 0x6924, 0xE9A2, 0x68F0, + 0xE9A3, 0x690B, 0xE9A4, 0x6901, 0xE9A5, 0x6957, 0xE9A6, 0x68E3, 0xE9A7, 0x6910, 0xE9A8, 0x6971, 0xE9A9, 0x6939, 0xE9AA, 0x6960, + 0xE9AB, 0x6942, 0xE9AC, 0x695D, 0xE9AD, 0x6984, 0xE9AE, 0x696B, 0xE9AF, 0x6980, 0xE9B0, 0x6998, 0xE9B1, 0x6978, 0xE9B2, 0x6934, + 0xE9B3, 0x69CC, 0xE9B4, 0x6987, 0xE9B5, 0x6988, 0xE9B6, 0x69CE, 0xE9B7, 0x6989, 0xE9B8, 0x6966, 0xE9B9, 0x6963, 0xE9BA, 0x6979, + 0xE9BB, 0x699B, 0xE9BC, 0x69A7, 0xE9BD, 0x69BB, 0xE9BE, 0x69AB, 0xE9BF, 0x69AD, 0xE9C0, 0x69D4, 0xE9C1, 0x69B1, 0xE9C2, 0x69C1, + 0xE9C3, 0x69CA, 0xE9C4, 0x69DF, 0xE9C5, 0x6995, 0xE9C6, 0x69E0, 0xE9C7, 0x698D, 0xE9C8, 0x69FF, 0xE9C9, 0x6A2F, 0xE9CA, 0x69ED, + 0xE9CB, 0x6A17, 0xE9CC, 0x6A18, 0xE9CD, 0x6A65, 0xE9CE, 0x69F2, 0xE9CF, 0x6A44, 0xE9D0, 0x6A3E, 0xE9D1, 0x6AA0, 0xE9D2, 0x6A50, + 0xE9D3, 0x6A5B, 0xE9D4, 0x6A35, 0xE9D5, 0x6A8E, 0xE9D6, 0x6A79, 0xE9D7, 0x6A3D, 0xE9D8, 0x6A28, 0xE9D9, 0x6A58, 0xE9DA, 0x6A7C, + 0xE9DB, 0x6A91, 0xE9DC, 0x6A90, 0xE9DD, 0x6AA9, 0xE9DE, 0x6A97, 0xE9DF, 0x6AAB, 0xE9E0, 0x7337, 0xE9E1, 0x7352, 0xE9E2, 0x6B81, + 0xE9E3, 0x6B82, 0xE9E4, 0x6B87, 0xE9E5, 0x6B84, 0xE9E6, 0x6B92, 0xE9E7, 0x6B93, 0xE9E8, 0x6B8D, 0xE9E9, 0x6B9A, 0xE9EA, 0x6B9B, + 0xE9EB, 0x6BA1, 0xE9EC, 0x6BAA, 0xE9ED, 0x8F6B, 0xE9EE, 0x8F6D, 0xE9EF, 0x8F71, 0xE9F0, 0x8F72, 0xE9F1, 0x8F73, 0xE9F2, 0x8F75, + 0xE9F3, 0x8F76, 0xE9F4, 0x8F78, 0xE9F5, 0x8F77, 0xE9F6, 0x8F79, 0xE9F7, 0x8F7A, 0xE9F8, 0x8F7C, 0xE9F9, 0x8F7E, 0xE9FA, 0x8F81, + 0xE9FB, 0x8F82, 0xE9FC, 0x8F84, 0xE9FD, 0x8F87, 0xE9FE, 0x8F8B, 0xEA40, 0x95CC, 0xEA41, 0x95CD, 0xEA42, 0x95CE, 0xEA43, 0x95CF, + 0xEA44, 0x95D0, 0xEA45, 0x95D1, 0xEA46, 0x95D2, 0xEA47, 0x95D3, 0xEA48, 0x95D4, 0xEA49, 0x95D5, 0xEA4A, 0x95D6, 0xEA4B, 0x95D7, + 0xEA4C, 0x95D8, 0xEA4D, 0x95D9, 0xEA4E, 0x95DA, 0xEA4F, 0x95DB, 0xEA50, 0x95DC, 0xEA51, 0x95DD, 0xEA52, 0x95DE, 0xEA53, 0x95DF, + 0xEA54, 0x95E0, 0xEA55, 0x95E1, 0xEA56, 0x95E2, 0xEA57, 0x95E3, 0xEA58, 0x95E4, 0xEA59, 0x95E5, 0xEA5A, 0x95E6, 0xEA5B, 0x95E7, + 0xEA5C, 0x95EC, 0xEA5D, 0x95FF, 0xEA5E, 0x9607, 0xEA5F, 0x9613, 0xEA60, 0x9618, 0xEA61, 0x961B, 0xEA62, 0x961E, 0xEA63, 0x9620, + 0xEA64, 0x9623, 0xEA65, 0x9624, 0xEA66, 0x9625, 0xEA67, 0x9626, 0xEA68, 0x9627, 0xEA69, 0x9628, 0xEA6A, 0x9629, 0xEA6B, 0x962B, + 0xEA6C, 0x962C, 0xEA6D, 0x962D, 0xEA6E, 0x962F, 0xEA6F, 0x9630, 0xEA70, 0x9637, 0xEA71, 0x9638, 0xEA72, 0x9639, 0xEA73, 0x963A, + 0xEA74, 0x963E, 0xEA75, 0x9641, 0xEA76, 0x9643, 0xEA77, 0x964A, 0xEA78, 0x964E, 0xEA79, 0x964F, 0xEA7A, 0x9651, 0xEA7B, 0x9652, + 0xEA7C, 0x9653, 0xEA7D, 0x9656, 0xEA7E, 0x9657, 0xEA80, 0x9658, 0xEA81, 0x9659, 0xEA82, 0x965A, 0xEA83, 0x965C, 0xEA84, 0x965D, + 0xEA85, 0x965E, 0xEA86, 0x9660, 0xEA87, 0x9663, 0xEA88, 0x9665, 0xEA89, 0x9666, 0xEA8A, 0x966B, 0xEA8B, 0x966D, 0xEA8C, 0x966E, + 0xEA8D, 0x966F, 0xEA8E, 0x9670, 0xEA8F, 0x9671, 0xEA90, 0x9673, 0xEA91, 0x9678, 0xEA92, 0x9679, 0xEA93, 0x967A, 0xEA94, 0x967B, + 0xEA95, 0x967C, 0xEA96, 0x967D, 0xEA97, 0x967E, 0xEA98, 0x967F, 0xEA99, 0x9680, 0xEA9A, 0x9681, 0xEA9B, 0x9682, 0xEA9C, 0x9683, + 0xEA9D, 0x9684, 0xEA9E, 0x9687, 0xEA9F, 0x9689, 0xEAA0, 0x968A, 0xEAA1, 0x8F8D, 0xEAA2, 0x8F8E, 0xEAA3, 0x8F8F, 0xEAA4, 0x8F98, + 0xEAA5, 0x8F9A, 0xEAA6, 0x8ECE, 0xEAA7, 0x620B, 0xEAA8, 0x6217, 0xEAA9, 0x621B, 0xEAAA, 0x621F, 0xEAAB, 0x6222, 0xEAAC, 0x6221, + 0xEAAD, 0x6225, 0xEAAE, 0x6224, 0xEAAF, 0x622C, 0xEAB0, 0x81E7, 0xEAB1, 0x74EF, 0xEAB2, 0x74F4, 0xEAB3, 0x74FF, 0xEAB4, 0x750F, + 0xEAB5, 0x7511, 0xEAB6, 0x7513, 0xEAB7, 0x6534, 0xEAB8, 0x65EE, 0xEAB9, 0x65EF, 0xEABA, 0x65F0, 0xEABB, 0x660A, 0xEABC, 0x6619, + 0xEABD, 0x6772, 0xEABE, 0x6603, 0xEABF, 0x6615, 0xEAC0, 0x6600, 0xEAC1, 0x7085, 0xEAC2, 0x66F7, 0xEAC3, 0x661D, 0xEAC4, 0x6634, + 0xEAC5, 0x6631, 0xEAC6, 0x6636, 0xEAC7, 0x6635, 0xEAC8, 0x8006, 0xEAC9, 0x665F, 0xEACA, 0x6654, 0xEACB, 0x6641, 0xEACC, 0x664F, + 0xEACD, 0x6656, 0xEACE, 0x6661, 0xEACF, 0x6657, 0xEAD0, 0x6677, 0xEAD1, 0x6684, 0xEAD2, 0x668C, 0xEAD3, 0x66A7, 0xEAD4, 0x669D, + 0xEAD5, 0x66BE, 0xEAD6, 0x66DB, 0xEAD7, 0x66DC, 0xEAD8, 0x66E6, 0xEAD9, 0x66E9, 0xEADA, 0x8D32, 0xEADB, 0x8D33, 0xEADC, 0x8D36, + 0xEADD, 0x8D3B, 0xEADE, 0x8D3D, 0xEADF, 0x8D40, 0xEAE0, 0x8D45, 0xEAE1, 0x8D46, 0xEAE2, 0x8D48, 0xEAE3, 0x8D49, 0xEAE4, 0x8D47, + 0xEAE5, 0x8D4D, 0xEAE6, 0x8D55, 0xEAE7, 0x8D59, 0xEAE8, 0x89C7, 0xEAE9, 0x89CA, 0xEAEA, 0x89CB, 0xEAEB, 0x89CC, 0xEAEC, 0x89CE, + 0xEAED, 0x89CF, 0xEAEE, 0x89D0, 0xEAEF, 0x89D1, 0xEAF0, 0x726E, 0xEAF1, 0x729F, 0xEAF2, 0x725D, 0xEAF3, 0x7266, 0xEAF4, 0x726F, + 0xEAF5, 0x727E, 0xEAF6, 0x727F, 0xEAF7, 0x7284, 0xEAF8, 0x728B, 0xEAF9, 0x728D, 0xEAFA, 0x728F, 0xEAFB, 0x7292, 0xEAFC, 0x6308, + 0xEAFD, 0x6332, 0xEAFE, 0x63B0, 0xEB40, 0x968C, 0xEB41, 0x968E, 0xEB42, 0x9691, 0xEB43, 0x9692, 0xEB44, 0x9693, 0xEB45, 0x9695, + 0xEB46, 0x9696, 0xEB47, 0x969A, 0xEB48, 0x969B, 0xEB49, 0x969D, 0xEB4A, 0x969E, 0xEB4B, 0x969F, 0xEB4C, 0x96A0, 0xEB4D, 0x96A1, + 0xEB4E, 0x96A2, 0xEB4F, 0x96A3, 0xEB50, 0x96A4, 0xEB51, 0x96A5, 0xEB52, 0x96A6, 0xEB53, 0x96A8, 0xEB54, 0x96A9, 0xEB55, 0x96AA, + 0xEB56, 0x96AB, 0xEB57, 0x96AC, 0xEB58, 0x96AD, 0xEB59, 0x96AE, 0xEB5A, 0x96AF, 0xEB5B, 0x96B1, 0xEB5C, 0x96B2, 0xEB5D, 0x96B4, + 0xEB5E, 0x96B5, 0xEB5F, 0x96B7, 0xEB60, 0x96B8, 0xEB61, 0x96BA, 0xEB62, 0x96BB, 0xEB63, 0x96BF, 0xEB64, 0x96C2, 0xEB65, 0x96C3, + 0xEB66, 0x96C8, 0xEB67, 0x96CA, 0xEB68, 0x96CB, 0xEB69, 0x96D0, 0xEB6A, 0x96D1, 0xEB6B, 0x96D3, 0xEB6C, 0x96D4, 0xEB6D, 0x96D6, + 0xEB6E, 0x96D7, 0xEB6F, 0x96D8, 0xEB70, 0x96D9, 0xEB71, 0x96DA, 0xEB72, 0x96DB, 0xEB73, 0x96DC, 0xEB74, 0x96DD, 0xEB75, 0x96DE, + 0xEB76, 0x96DF, 0xEB77, 0x96E1, 0xEB78, 0x96E2, 0xEB79, 0x96E3, 0xEB7A, 0x96E4, 0xEB7B, 0x96E5, 0xEB7C, 0x96E6, 0xEB7D, 0x96E7, + 0xEB7E, 0x96EB, 0xEB80, 0x96EC, 0xEB81, 0x96ED, 0xEB82, 0x96EE, 0xEB83, 0x96F0, 0xEB84, 0x96F1, 0xEB85, 0x96F2, 0xEB86, 0x96F4, + 0xEB87, 0x96F5, 0xEB88, 0x96F8, 0xEB89, 0x96FA, 0xEB8A, 0x96FB, 0xEB8B, 0x96FC, 0xEB8C, 0x96FD, 0xEB8D, 0x96FF, 0xEB8E, 0x9702, + 0xEB8F, 0x9703, 0xEB90, 0x9705, 0xEB91, 0x970A, 0xEB92, 0x970B, 0xEB93, 0x970C, 0xEB94, 0x9710, 0xEB95, 0x9711, 0xEB96, 0x9712, + 0xEB97, 0x9714, 0xEB98, 0x9715, 0xEB99, 0x9717, 0xEB9A, 0x9718, 0xEB9B, 0x9719, 0xEB9C, 0x971A, 0xEB9D, 0x971B, 0xEB9E, 0x971D, + 0xEB9F, 0x971F, 0xEBA0, 0x9720, 0xEBA1, 0x643F, 0xEBA2, 0x64D8, 0xEBA3, 0x8004, 0xEBA4, 0x6BEA, 0xEBA5, 0x6BF3, 0xEBA6, 0x6BFD, + 0xEBA7, 0x6BF5, 0xEBA8, 0x6BF9, 0xEBA9, 0x6C05, 0xEBAA, 0x6C07, 0xEBAB, 0x6C06, 0xEBAC, 0x6C0D, 0xEBAD, 0x6C15, 0xEBAE, 0x6C18, + 0xEBAF, 0x6C19, 0xEBB0, 0x6C1A, 0xEBB1, 0x6C21, 0xEBB2, 0x6C29, 0xEBB3, 0x6C24, 0xEBB4, 0x6C2A, 0xEBB5, 0x6C32, 0xEBB6, 0x6535, + 0xEBB7, 0x6555, 0xEBB8, 0x656B, 0xEBB9, 0x724D, 0xEBBA, 0x7252, 0xEBBB, 0x7256, 0xEBBC, 0x7230, 0xEBBD, 0x8662, 0xEBBE, 0x5216, + 0xEBBF, 0x809F, 0xEBC0, 0x809C, 0xEBC1, 0x8093, 0xEBC2, 0x80BC, 0xEBC3, 0x670A, 0xEBC4, 0x80BD, 0xEBC5, 0x80B1, 0xEBC6, 0x80AB, + 0xEBC7, 0x80AD, 0xEBC8, 0x80B4, 0xEBC9, 0x80B7, 0xEBCA, 0x80E7, 0xEBCB, 0x80E8, 0xEBCC, 0x80E9, 0xEBCD, 0x80EA, 0xEBCE, 0x80DB, + 0xEBCF, 0x80C2, 0xEBD0, 0x80C4, 0xEBD1, 0x80D9, 0xEBD2, 0x80CD, 0xEBD3, 0x80D7, 0xEBD4, 0x6710, 0xEBD5, 0x80DD, 0xEBD6, 0x80EB, + 0xEBD7, 0x80F1, 0xEBD8, 0x80F4, 0xEBD9, 0x80ED, 0xEBDA, 0x810D, 0xEBDB, 0x810E, 0xEBDC, 0x80F2, 0xEBDD, 0x80FC, 0xEBDE, 0x6715, + 0xEBDF, 0x8112, 0xEBE0, 0x8C5A, 0xEBE1, 0x8136, 0xEBE2, 0x811E, 0xEBE3, 0x812C, 0xEBE4, 0x8118, 0xEBE5, 0x8132, 0xEBE6, 0x8148, + 0xEBE7, 0x814C, 0xEBE8, 0x8153, 0xEBE9, 0x8174, 0xEBEA, 0x8159, 0xEBEB, 0x815A, 0xEBEC, 0x8171, 0xEBED, 0x8160, 0xEBEE, 0x8169, + 0xEBEF, 0x817C, 0xEBF0, 0x817D, 0xEBF1, 0x816D, 0xEBF2, 0x8167, 0xEBF3, 0x584D, 0xEBF4, 0x5AB5, 0xEBF5, 0x8188, 0xEBF6, 0x8182, + 0xEBF7, 0x8191, 0xEBF8, 0x6ED5, 0xEBF9, 0x81A3, 0xEBFA, 0x81AA, 0xEBFB, 0x81CC, 0xEBFC, 0x6726, 0xEBFD, 0x81CA, 0xEBFE, 0x81BB, + 0xEC40, 0x9721, 0xEC41, 0x9722, 0xEC42, 0x9723, 0xEC43, 0x9724, 0xEC44, 0x9725, 0xEC45, 0x9726, 0xEC46, 0x9727, 0xEC47, 0x9728, + 0xEC48, 0x9729, 0xEC49, 0x972B, 0xEC4A, 0x972C, 0xEC4B, 0x972E, 0xEC4C, 0x972F, 0xEC4D, 0x9731, 0xEC4E, 0x9733, 0xEC4F, 0x9734, + 0xEC50, 0x9735, 0xEC51, 0x9736, 0xEC52, 0x9737, 0xEC53, 0x973A, 0xEC54, 0x973B, 0xEC55, 0x973C, 0xEC56, 0x973D, 0xEC57, 0x973F, + 0xEC58, 0x9740, 0xEC59, 0x9741, 0xEC5A, 0x9742, 0xEC5B, 0x9743, 0xEC5C, 0x9744, 0xEC5D, 0x9745, 0xEC5E, 0x9746, 0xEC5F, 0x9747, + 0xEC60, 0x9748, 0xEC61, 0x9749, 0xEC62, 0x974A, 0xEC63, 0x974B, 0xEC64, 0x974C, 0xEC65, 0x974D, 0xEC66, 0x974E, 0xEC67, 0x974F, + 0xEC68, 0x9750, 0xEC69, 0x9751, 0xEC6A, 0x9754, 0xEC6B, 0x9755, 0xEC6C, 0x9757, 0xEC6D, 0x9758, 0xEC6E, 0x975A, 0xEC6F, 0x975C, + 0xEC70, 0x975D, 0xEC71, 0x975F, 0xEC72, 0x9763, 0xEC73, 0x9764, 0xEC74, 0x9766, 0xEC75, 0x9767, 0xEC76, 0x9768, 0xEC77, 0x976A, + 0xEC78, 0x976B, 0xEC79, 0x976C, 0xEC7A, 0x976D, 0xEC7B, 0x976E, 0xEC7C, 0x976F, 0xEC7D, 0x9770, 0xEC7E, 0x9771, 0xEC80, 0x9772, + 0xEC81, 0x9775, 0xEC82, 0x9777, 0xEC83, 0x9778, 0xEC84, 0x9779, 0xEC85, 0x977A, 0xEC86, 0x977B, 0xEC87, 0x977D, 0xEC88, 0x977E, + 0xEC89, 0x977F, 0xEC8A, 0x9780, 0xEC8B, 0x9781, 0xEC8C, 0x9782, 0xEC8D, 0x9783, 0xEC8E, 0x9784, 0xEC8F, 0x9786, 0xEC90, 0x9787, + 0xEC91, 0x9788, 0xEC92, 0x9789, 0xEC93, 0x978A, 0xEC94, 0x978C, 0xEC95, 0x978E, 0xEC96, 0x978F, 0xEC97, 0x9790, 0xEC98, 0x9793, + 0xEC99, 0x9795, 0xEC9A, 0x9796, 0xEC9B, 0x9797, 0xEC9C, 0x9799, 0xEC9D, 0x979A, 0xEC9E, 0x979B, 0xEC9F, 0x979C, 0xECA0, 0x979D, + 0xECA1, 0x81C1, 0xECA2, 0x81A6, 0xECA3, 0x6B24, 0xECA4, 0x6B37, 0xECA5, 0x6B39, 0xECA6, 0x6B43, 0xECA7, 0x6B46, 0xECA8, 0x6B59, + 0xECA9, 0x98D1, 0xECAA, 0x98D2, 0xECAB, 0x98D3, 0xECAC, 0x98D5, 0xECAD, 0x98D9, 0xECAE, 0x98DA, 0xECAF, 0x6BB3, 0xECB0, 0x5F40, + 0xECB1, 0x6BC2, 0xECB2, 0x89F3, 0xECB3, 0x6590, 0xECB4, 0x9F51, 0xECB5, 0x6593, 0xECB6, 0x65BC, 0xECB7, 0x65C6, 0xECB8, 0x65C4, + 0xECB9, 0x65C3, 0xECBA, 0x65CC, 0xECBB, 0x65CE, 0xECBC, 0x65D2, 0xECBD, 0x65D6, 0xECBE, 0x7080, 0xECBF, 0x709C, 0xECC0, 0x7096, + 0xECC1, 0x709D, 0xECC2, 0x70BB, 0xECC3, 0x70C0, 0xECC4, 0x70B7, 0xECC5, 0x70AB, 0xECC6, 0x70B1, 0xECC7, 0x70E8, 0xECC8, 0x70CA, + 0xECC9, 0x7110, 0xECCA, 0x7113, 0xECCB, 0x7116, 0xECCC, 0x712F, 0xECCD, 0x7131, 0xECCE, 0x7173, 0xECCF, 0x715C, 0xECD0, 0x7168, + 0xECD1, 0x7145, 0xECD2, 0x7172, 0xECD3, 0x714A, 0xECD4, 0x7178, 0xECD5, 0x717A, 0xECD6, 0x7198, 0xECD7, 0x71B3, 0xECD8, 0x71B5, + 0xECD9, 0x71A8, 0xECDA, 0x71A0, 0xECDB, 0x71E0, 0xECDC, 0x71D4, 0xECDD, 0x71E7, 0xECDE, 0x71F9, 0xECDF, 0x721D, 0xECE0, 0x7228, + 0xECE1, 0x706C, 0xECE2, 0x7118, 0xECE3, 0x7166, 0xECE4, 0x71B9, 0xECE5, 0x623E, 0xECE6, 0x623D, 0xECE7, 0x6243, 0xECE8, 0x6248, + 0xECE9, 0x6249, 0xECEA, 0x793B, 0xECEB, 0x7940, 0xECEC, 0x7946, 0xECED, 0x7949, 0xECEE, 0x795B, 0xECEF, 0x795C, 0xECF0, 0x7953, + 0xECF1, 0x795A, 0xECF2, 0x7962, 0xECF3, 0x7957, 0xECF4, 0x7960, 0xECF5, 0x796F, 0xECF6, 0x7967, 0xECF7, 0x797A, 0xECF8, 0x7985, + 0xECF9, 0x798A, 0xECFA, 0x799A, 0xECFB, 0x79A7, 0xECFC, 0x79B3, 0xECFD, 0x5FD1, 0xECFE, 0x5FD0, 0xED40, 0x979E, 0xED41, 0x979F, + 0xED42, 0x97A1, 0xED43, 0x97A2, 0xED44, 0x97A4, 0xED45, 0x97A5, 0xED46, 0x97A6, 0xED47, 0x97A7, 0xED48, 0x97A8, 0xED49, 0x97A9, + 0xED4A, 0x97AA, 0xED4B, 0x97AC, 0xED4C, 0x97AE, 0xED4D, 0x97B0, 0xED4E, 0x97B1, 0xED4F, 0x97B3, 0xED50, 0x97B5, 0xED51, 0x97B6, + 0xED52, 0x97B7, 0xED53, 0x97B8, 0xED54, 0x97B9, 0xED55, 0x97BA, 0xED56, 0x97BB, 0xED57, 0x97BC, 0xED58, 0x97BD, 0xED59, 0x97BE, + 0xED5A, 0x97BF, 0xED5B, 0x97C0, 0xED5C, 0x97C1, 0xED5D, 0x97C2, 0xED5E, 0x97C3, 0xED5F, 0x97C4, 0xED60, 0x97C5, 0xED61, 0x97C6, + 0xED62, 0x97C7, 0xED63, 0x97C8, 0xED64, 0x97C9, 0xED65, 0x97CA, 0xED66, 0x97CB, 0xED67, 0x97CC, 0xED68, 0x97CD, 0xED69, 0x97CE, + 0xED6A, 0x97CF, 0xED6B, 0x97D0, 0xED6C, 0x97D1, 0xED6D, 0x97D2, 0xED6E, 0x97D3, 0xED6F, 0x97D4, 0xED70, 0x97D5, 0xED71, 0x97D6, + 0xED72, 0x97D7, 0xED73, 0x97D8, 0xED74, 0x97D9, 0xED75, 0x97DA, 0xED76, 0x97DB, 0xED77, 0x97DC, 0xED78, 0x97DD, 0xED79, 0x97DE, + 0xED7A, 0x97DF, 0xED7B, 0x97E0, 0xED7C, 0x97E1, 0xED7D, 0x97E2, 0xED7E, 0x97E3, 0xED80, 0x97E4, 0xED81, 0x97E5, 0xED82, 0x97E8, + 0xED83, 0x97EE, 0xED84, 0x97EF, 0xED85, 0x97F0, 0xED86, 0x97F1, 0xED87, 0x97F2, 0xED88, 0x97F4, 0xED89, 0x97F7, 0xED8A, 0x97F8, + 0xED8B, 0x97F9, 0xED8C, 0x97FA, 0xED8D, 0x97FB, 0xED8E, 0x97FC, 0xED8F, 0x97FD, 0xED90, 0x97FE, 0xED91, 0x97FF, 0xED92, 0x9800, + 0xED93, 0x9801, 0xED94, 0x9802, 0xED95, 0x9803, 0xED96, 0x9804, 0xED97, 0x9805, 0xED98, 0x9806, 0xED99, 0x9807, 0xED9A, 0x9808, + 0xED9B, 0x9809, 0xED9C, 0x980A, 0xED9D, 0x980B, 0xED9E, 0x980C, 0xED9F, 0x980D, 0xEDA0, 0x980E, 0xEDA1, 0x603C, 0xEDA2, 0x605D, + 0xEDA3, 0x605A, 0xEDA4, 0x6067, 0xEDA5, 0x6041, 0xEDA6, 0x6059, 0xEDA7, 0x6063, 0xEDA8, 0x60AB, 0xEDA9, 0x6106, 0xEDAA, 0x610D, + 0xEDAB, 0x615D, 0xEDAC, 0x61A9, 0xEDAD, 0x619D, 0xEDAE, 0x61CB, 0xEDAF, 0x61D1, 0xEDB0, 0x6206, 0xEDB1, 0x8080, 0xEDB2, 0x807F, + 0xEDB3, 0x6C93, 0xEDB4, 0x6CF6, 0xEDB5, 0x6DFC, 0xEDB6, 0x77F6, 0xEDB7, 0x77F8, 0xEDB8, 0x7800, 0xEDB9, 0x7809, 0xEDBA, 0x7817, + 0xEDBB, 0x7818, 0xEDBC, 0x7811, 0xEDBD, 0x65AB, 0xEDBE, 0x782D, 0xEDBF, 0x781C, 0xEDC0, 0x781D, 0xEDC1, 0x7839, 0xEDC2, 0x783A, + 0xEDC3, 0x783B, 0xEDC4, 0x781F, 0xEDC5, 0x783C, 0xEDC6, 0x7825, 0xEDC7, 0x782C, 0xEDC8, 0x7823, 0xEDC9, 0x7829, 0xEDCA, 0x784E, + 0xEDCB, 0x786D, 0xEDCC, 0x7856, 0xEDCD, 0x7857, 0xEDCE, 0x7826, 0xEDCF, 0x7850, 0xEDD0, 0x7847, 0xEDD1, 0x784C, 0xEDD2, 0x786A, + 0xEDD3, 0x789B, 0xEDD4, 0x7893, 0xEDD5, 0x789A, 0xEDD6, 0x7887, 0xEDD7, 0x789C, 0xEDD8, 0x78A1, 0xEDD9, 0x78A3, 0xEDDA, 0x78B2, + 0xEDDB, 0x78B9, 0xEDDC, 0x78A5, 0xEDDD, 0x78D4, 0xEDDE, 0x78D9, 0xEDDF, 0x78C9, 0xEDE0, 0x78EC, 0xEDE1, 0x78F2, 0xEDE2, 0x7905, + 0xEDE3, 0x78F4, 0xEDE4, 0x7913, 0xEDE5, 0x7924, 0xEDE6, 0x791E, 0xEDE7, 0x7934, 0xEDE8, 0x9F9B, 0xEDE9, 0x9EF9, 0xEDEA, 0x9EFB, + 0xEDEB, 0x9EFC, 0xEDEC, 0x76F1, 0xEDED, 0x7704, 0xEDEE, 0x770D, 0xEDEF, 0x76F9, 0xEDF0, 0x7707, 0xEDF1, 0x7708, 0xEDF2, 0x771A, + 0xEDF3, 0x7722, 0xEDF4, 0x7719, 0xEDF5, 0x772D, 0xEDF6, 0x7726, 0xEDF7, 0x7735, 0xEDF8, 0x7738, 0xEDF9, 0x7750, 0xEDFA, 0x7751, + 0xEDFB, 0x7747, 0xEDFC, 0x7743, 0xEDFD, 0x775A, 0xEDFE, 0x7768, 0xEE40, 0x980F, 0xEE41, 0x9810, 0xEE42, 0x9811, 0xEE43, 0x9812, + 0xEE44, 0x9813, 0xEE45, 0x9814, 0xEE46, 0x9815, 0xEE47, 0x9816, 0xEE48, 0x9817, 0xEE49, 0x9818, 0xEE4A, 0x9819, 0xEE4B, 0x981A, + 0xEE4C, 0x981B, 0xEE4D, 0x981C, 0xEE4E, 0x981D, 0xEE4F, 0x981E, 0xEE50, 0x981F, 0xEE51, 0x9820, 0xEE52, 0x9821, 0xEE53, 0x9822, + 0xEE54, 0x9823, 0xEE55, 0x9824, 0xEE56, 0x9825, 0xEE57, 0x9826, 0xEE58, 0x9827, 0xEE59, 0x9828, 0xEE5A, 0x9829, 0xEE5B, 0x982A, + 0xEE5C, 0x982B, 0xEE5D, 0x982C, 0xEE5E, 0x982D, 0xEE5F, 0x982E, 0xEE60, 0x982F, 0xEE61, 0x9830, 0xEE62, 0x9831, 0xEE63, 0x9832, + 0xEE64, 0x9833, 0xEE65, 0x9834, 0xEE66, 0x9835, 0xEE67, 0x9836, 0xEE68, 0x9837, 0xEE69, 0x9838, 0xEE6A, 0x9839, 0xEE6B, 0x983A, + 0xEE6C, 0x983B, 0xEE6D, 0x983C, 0xEE6E, 0x983D, 0xEE6F, 0x983E, 0xEE70, 0x983F, 0xEE71, 0x9840, 0xEE72, 0x9841, 0xEE73, 0x9842, + 0xEE74, 0x9843, 0xEE75, 0x9844, 0xEE76, 0x9845, 0xEE77, 0x9846, 0xEE78, 0x9847, 0xEE79, 0x9848, 0xEE7A, 0x9849, 0xEE7B, 0x984A, + 0xEE7C, 0x984B, 0xEE7D, 0x984C, 0xEE7E, 0x984D, 0xEE80, 0x984E, 0xEE81, 0x984F, 0xEE82, 0x9850, 0xEE83, 0x9851, 0xEE84, 0x9852, + 0xEE85, 0x9853, 0xEE86, 0x9854, 0xEE87, 0x9855, 0xEE88, 0x9856, 0xEE89, 0x9857, 0xEE8A, 0x9858, 0xEE8B, 0x9859, 0xEE8C, 0x985A, + 0xEE8D, 0x985B, 0xEE8E, 0x985C, 0xEE8F, 0x985D, 0xEE90, 0x985E, 0xEE91, 0x985F, 0xEE92, 0x9860, 0xEE93, 0x9861, 0xEE94, 0x9862, + 0xEE95, 0x9863, 0xEE96, 0x9864, 0xEE97, 0x9865, 0xEE98, 0x9866, 0xEE99, 0x9867, 0xEE9A, 0x9868, 0xEE9B, 0x9869, 0xEE9C, 0x986A, + 0xEE9D, 0x986B, 0xEE9E, 0x986C, 0xEE9F, 0x986D, 0xEEA0, 0x986E, 0xEEA1, 0x7762, 0xEEA2, 0x7765, 0xEEA3, 0x777F, 0xEEA4, 0x778D, + 0xEEA5, 0x777D, 0xEEA6, 0x7780, 0xEEA7, 0x778C, 0xEEA8, 0x7791, 0xEEA9, 0x779F, 0xEEAA, 0x77A0, 0xEEAB, 0x77B0, 0xEEAC, 0x77B5, + 0xEEAD, 0x77BD, 0xEEAE, 0x753A, 0xEEAF, 0x7540, 0xEEB0, 0x754E, 0xEEB1, 0x754B, 0xEEB2, 0x7548, 0xEEB3, 0x755B, 0xEEB4, 0x7572, + 0xEEB5, 0x7579, 0xEEB6, 0x7583, 0xEEB7, 0x7F58, 0xEEB8, 0x7F61, 0xEEB9, 0x7F5F, 0xEEBA, 0x8A48, 0xEEBB, 0x7F68, 0xEEBC, 0x7F74, + 0xEEBD, 0x7F71, 0xEEBE, 0x7F79, 0xEEBF, 0x7F81, 0xEEC0, 0x7F7E, 0xEEC1, 0x76CD, 0xEEC2, 0x76E5, 0xEEC3, 0x8832, 0xEEC4, 0x9485, + 0xEEC5, 0x9486, 0xEEC6, 0x9487, 0xEEC7, 0x948B, 0xEEC8, 0x948A, 0xEEC9, 0x948C, 0xEECA, 0x948D, 0xEECB, 0x948F, 0xEECC, 0x9490, + 0xEECD, 0x9494, 0xEECE, 0x9497, 0xEECF, 0x9495, 0xEED0, 0x949A, 0xEED1, 0x949B, 0xEED2, 0x949C, 0xEED3, 0x94A3, 0xEED4, 0x94A4, + 0xEED5, 0x94AB, 0xEED6, 0x94AA, 0xEED7, 0x94AD, 0xEED8, 0x94AC, 0xEED9, 0x94AF, 0xEEDA, 0x94B0, 0xEEDB, 0x94B2, 0xEEDC, 0x94B4, + 0xEEDD, 0x94B6, 0xEEDE, 0x94B7, 0xEEDF, 0x94B8, 0xEEE0, 0x94B9, 0xEEE1, 0x94BA, 0xEEE2, 0x94BC, 0xEEE3, 0x94BD, 0xEEE4, 0x94BF, + 0xEEE5, 0x94C4, 0xEEE6, 0x94C8, 0xEEE7, 0x94C9, 0xEEE8, 0x94CA, 0xEEE9, 0x94CB, 0xEEEA, 0x94CC, 0xEEEB, 0x94CD, 0xEEEC, 0x94CE, + 0xEEED, 0x94D0, 0xEEEE, 0x94D1, 0xEEEF, 0x94D2, 0xEEF0, 0x94D5, 0xEEF1, 0x94D6, 0xEEF2, 0x94D7, 0xEEF3, 0x94D9, 0xEEF4, 0x94D8, + 0xEEF5, 0x94DB, 0xEEF6, 0x94DE, 0xEEF7, 0x94DF, 0xEEF8, 0x94E0, 0xEEF9, 0x94E2, 0xEEFA, 0x94E4, 0xEEFB, 0x94E5, 0xEEFC, 0x94E7, + 0xEEFD, 0x94E8, 0xEEFE, 0x94EA, 0xEF40, 0x986F, 0xEF41, 0x9870, 0xEF42, 0x9871, 0xEF43, 0x9872, 0xEF44, 0x9873, 0xEF45, 0x9874, + 0xEF46, 0x988B, 0xEF47, 0x988E, 0xEF48, 0x9892, 0xEF49, 0x9895, 0xEF4A, 0x9899, 0xEF4B, 0x98A3, 0xEF4C, 0x98A8, 0xEF4D, 0x98A9, + 0xEF4E, 0x98AA, 0xEF4F, 0x98AB, 0xEF50, 0x98AC, 0xEF51, 0x98AD, 0xEF52, 0x98AE, 0xEF53, 0x98AF, 0xEF54, 0x98B0, 0xEF55, 0x98B1, + 0xEF56, 0x98B2, 0xEF57, 0x98B3, 0xEF58, 0x98B4, 0xEF59, 0x98B5, 0xEF5A, 0x98B6, 0xEF5B, 0x98B7, 0xEF5C, 0x98B8, 0xEF5D, 0x98B9, + 0xEF5E, 0x98BA, 0xEF5F, 0x98BB, 0xEF60, 0x98BC, 0xEF61, 0x98BD, 0xEF62, 0x98BE, 0xEF63, 0x98BF, 0xEF64, 0x98C0, 0xEF65, 0x98C1, + 0xEF66, 0x98C2, 0xEF67, 0x98C3, 0xEF68, 0x98C4, 0xEF69, 0x98C5, 0xEF6A, 0x98C6, 0xEF6B, 0x98C7, 0xEF6C, 0x98C8, 0xEF6D, 0x98C9, + 0xEF6E, 0x98CA, 0xEF6F, 0x98CB, 0xEF70, 0x98CC, 0xEF71, 0x98CD, 0xEF72, 0x98CF, 0xEF73, 0x98D0, 0xEF74, 0x98D4, 0xEF75, 0x98D6, + 0xEF76, 0x98D7, 0xEF77, 0x98DB, 0xEF78, 0x98DC, 0xEF79, 0x98DD, 0xEF7A, 0x98E0, 0xEF7B, 0x98E1, 0xEF7C, 0x98E2, 0xEF7D, 0x98E3, + 0xEF7E, 0x98E4, 0xEF80, 0x98E5, 0xEF81, 0x98E6, 0xEF82, 0x98E9, 0xEF83, 0x98EA, 0xEF84, 0x98EB, 0xEF85, 0x98EC, 0xEF86, 0x98ED, + 0xEF87, 0x98EE, 0xEF88, 0x98EF, 0xEF89, 0x98F0, 0xEF8A, 0x98F1, 0xEF8B, 0x98F2, 0xEF8C, 0x98F3, 0xEF8D, 0x98F4, 0xEF8E, 0x98F5, + 0xEF8F, 0x98F6, 0xEF90, 0x98F7, 0xEF91, 0x98F8, 0xEF92, 0x98F9, 0xEF93, 0x98FA, 0xEF94, 0x98FB, 0xEF95, 0x98FC, 0xEF96, 0x98FD, + 0xEF97, 0x98FE, 0xEF98, 0x98FF, 0xEF99, 0x9900, 0xEF9A, 0x9901, 0xEF9B, 0x9902, 0xEF9C, 0x9903, 0xEF9D, 0x9904, 0xEF9E, 0x9905, + 0xEF9F, 0x9906, 0xEFA0, 0x9907, 0xEFA1, 0x94E9, 0xEFA2, 0x94EB, 0xEFA3, 0x94EE, 0xEFA4, 0x94EF, 0xEFA5, 0x94F3, 0xEFA6, 0x94F4, + 0xEFA7, 0x94F5, 0xEFA8, 0x94F7, 0xEFA9, 0x94F9, 0xEFAA, 0x94FC, 0xEFAB, 0x94FD, 0xEFAC, 0x94FF, 0xEFAD, 0x9503, 0xEFAE, 0x9502, + 0xEFAF, 0x9506, 0xEFB0, 0x9507, 0xEFB1, 0x9509, 0xEFB2, 0x950A, 0xEFB3, 0x950D, 0xEFB4, 0x950E, 0xEFB5, 0x950F, 0xEFB6, 0x9512, + 0xEFB7, 0x9513, 0xEFB8, 0x9514, 0xEFB9, 0x9515, 0xEFBA, 0x9516, 0xEFBB, 0x9518, 0xEFBC, 0x951B, 0xEFBD, 0x951D, 0xEFBE, 0x951E, + 0xEFBF, 0x951F, 0xEFC0, 0x9522, 0xEFC1, 0x952A, 0xEFC2, 0x952B, 0xEFC3, 0x9529, 0xEFC4, 0x952C, 0xEFC5, 0x9531, 0xEFC6, 0x9532, + 0xEFC7, 0x9534, 0xEFC8, 0x9536, 0xEFC9, 0x9537, 0xEFCA, 0x9538, 0xEFCB, 0x953C, 0xEFCC, 0x953E, 0xEFCD, 0x953F, 0xEFCE, 0x9542, + 0xEFCF, 0x9535, 0xEFD0, 0x9544, 0xEFD1, 0x9545, 0xEFD2, 0x9546, 0xEFD3, 0x9549, 0xEFD4, 0x954C, 0xEFD5, 0x954E, 0xEFD6, 0x954F, + 0xEFD7, 0x9552, 0xEFD8, 0x9553, 0xEFD9, 0x9554, 0xEFDA, 0x9556, 0xEFDB, 0x9557, 0xEFDC, 0x9558, 0xEFDD, 0x9559, 0xEFDE, 0x955B, + 0xEFDF, 0x955E, 0xEFE0, 0x955F, 0xEFE1, 0x955D, 0xEFE2, 0x9561, 0xEFE3, 0x9562, 0xEFE4, 0x9564, 0xEFE5, 0x9565, 0xEFE6, 0x9566, + 0xEFE7, 0x9567, 0xEFE8, 0x9568, 0xEFE9, 0x9569, 0xEFEA, 0x956A, 0xEFEB, 0x956B, 0xEFEC, 0x956C, 0xEFED, 0x956F, 0xEFEE, 0x9571, + 0xEFEF, 0x9572, 0xEFF0, 0x9573, 0xEFF1, 0x953A, 0xEFF2, 0x77E7, 0xEFF3, 0x77EC, 0xEFF4, 0x96C9, 0xEFF5, 0x79D5, 0xEFF6, 0x79ED, + 0xEFF7, 0x79E3, 0xEFF8, 0x79EB, 0xEFF9, 0x7A06, 0xEFFA, 0x5D47, 0xEFFB, 0x7A03, 0xEFFC, 0x7A02, 0xEFFD, 0x7A1E, 0xEFFE, 0x7A14, + 0xF040, 0x9908, 0xF041, 0x9909, 0xF042, 0x990A, 0xF043, 0x990B, 0xF044, 0x990C, 0xF045, 0x990E, 0xF046, 0x990F, 0xF047, 0x9911, + 0xF048, 0x9912, 0xF049, 0x9913, 0xF04A, 0x9914, 0xF04B, 0x9915, 0xF04C, 0x9916, 0xF04D, 0x9917, 0xF04E, 0x9918, 0xF04F, 0x9919, + 0xF050, 0x991A, 0xF051, 0x991B, 0xF052, 0x991C, 0xF053, 0x991D, 0xF054, 0x991E, 0xF055, 0x991F, 0xF056, 0x9920, 0xF057, 0x9921, + 0xF058, 0x9922, 0xF059, 0x9923, 0xF05A, 0x9924, 0xF05B, 0x9925, 0xF05C, 0x9926, 0xF05D, 0x9927, 0xF05E, 0x9928, 0xF05F, 0x9929, + 0xF060, 0x992A, 0xF061, 0x992B, 0xF062, 0x992C, 0xF063, 0x992D, 0xF064, 0x992F, 0xF065, 0x9930, 0xF066, 0x9931, 0xF067, 0x9932, + 0xF068, 0x9933, 0xF069, 0x9934, 0xF06A, 0x9935, 0xF06B, 0x9936, 0xF06C, 0x9937, 0xF06D, 0x9938, 0xF06E, 0x9939, 0xF06F, 0x993A, + 0xF070, 0x993B, 0xF071, 0x993C, 0xF072, 0x993D, 0xF073, 0x993E, 0xF074, 0x993F, 0xF075, 0x9940, 0xF076, 0x9941, 0xF077, 0x9942, + 0xF078, 0x9943, 0xF079, 0x9944, 0xF07A, 0x9945, 0xF07B, 0x9946, 0xF07C, 0x9947, 0xF07D, 0x9948, 0xF07E, 0x9949, 0xF080, 0x994A, + 0xF081, 0x994B, 0xF082, 0x994C, 0xF083, 0x994D, 0xF084, 0x994E, 0xF085, 0x994F, 0xF086, 0x9950, 0xF087, 0x9951, 0xF088, 0x9952, + 0xF089, 0x9953, 0xF08A, 0x9956, 0xF08B, 0x9957, 0xF08C, 0x9958, 0xF08D, 0x9959, 0xF08E, 0x995A, 0xF08F, 0x995B, 0xF090, 0x995C, + 0xF091, 0x995D, 0xF092, 0x995E, 0xF093, 0x995F, 0xF094, 0x9960, 0xF095, 0x9961, 0xF096, 0x9962, 0xF097, 0x9964, 0xF098, 0x9966, + 0xF099, 0x9973, 0xF09A, 0x9978, 0xF09B, 0x9979, 0xF09C, 0x997B, 0xF09D, 0x997E, 0xF09E, 0x9982, 0xF09F, 0x9983, 0xF0A0, 0x9989, + 0xF0A1, 0x7A39, 0xF0A2, 0x7A37, 0xF0A3, 0x7A51, 0xF0A4, 0x9ECF, 0xF0A5, 0x99A5, 0xF0A6, 0x7A70, 0xF0A7, 0x7688, 0xF0A8, 0x768E, + 0xF0A9, 0x7693, 0xF0AA, 0x7699, 0xF0AB, 0x76A4, 0xF0AC, 0x74DE, 0xF0AD, 0x74E0, 0xF0AE, 0x752C, 0xF0AF, 0x9E20, 0xF0B0, 0x9E22, + 0xF0B1, 0x9E28, 0xF0B2, 0x9E29, 0xF0B3, 0x9E2A, 0xF0B4, 0x9E2B, 0xF0B5, 0x9E2C, 0xF0B6, 0x9E32, 0xF0B7, 0x9E31, 0xF0B8, 0x9E36, + 0xF0B9, 0x9E38, 0xF0BA, 0x9E37, 0xF0BB, 0x9E39, 0xF0BC, 0x9E3A, 0xF0BD, 0x9E3E, 0xF0BE, 0x9E41, 0xF0BF, 0x9E42, 0xF0C0, 0x9E44, + 0xF0C1, 0x9E46, 0xF0C2, 0x9E47, 0xF0C3, 0x9E48, 0xF0C4, 0x9E49, 0xF0C5, 0x9E4B, 0xF0C6, 0x9E4C, 0xF0C7, 0x9E4E, 0xF0C8, 0x9E51, + 0xF0C9, 0x9E55, 0xF0CA, 0x9E57, 0xF0CB, 0x9E5A, 0xF0CC, 0x9E5B, 0xF0CD, 0x9E5C, 0xF0CE, 0x9E5E, 0xF0CF, 0x9E63, 0xF0D0, 0x9E66, + 0xF0D1, 0x9E67, 0xF0D2, 0x9E68, 0xF0D3, 0x9E69, 0xF0D4, 0x9E6A, 0xF0D5, 0x9E6B, 0xF0D6, 0x9E6C, 0xF0D7, 0x9E71, 0xF0D8, 0x9E6D, + 0xF0D9, 0x9E73, 0xF0DA, 0x7592, 0xF0DB, 0x7594, 0xF0DC, 0x7596, 0xF0DD, 0x75A0, 0xF0DE, 0x759D, 0xF0DF, 0x75AC, 0xF0E0, 0x75A3, + 0xF0E1, 0x75B3, 0xF0E2, 0x75B4, 0xF0E3, 0x75B8, 0xF0E4, 0x75C4, 0xF0E5, 0x75B1, 0xF0E6, 0x75B0, 0xF0E7, 0x75C3, 0xF0E8, 0x75C2, + 0xF0E9, 0x75D6, 0xF0EA, 0x75CD, 0xF0EB, 0x75E3, 0xF0EC, 0x75E8, 0xF0ED, 0x75E6, 0xF0EE, 0x75E4, 0xF0EF, 0x75EB, 0xF0F0, 0x75E7, + 0xF0F1, 0x7603, 0xF0F2, 0x75F1, 0xF0F3, 0x75FC, 0xF0F4, 0x75FF, 0xF0F5, 0x7610, 0xF0F6, 0x7600, 0xF0F7, 0x7605, 0xF0F8, 0x760C, + 0xF0F9, 0x7617, 0xF0FA, 0x760A, 0xF0FB, 0x7625, 0xF0FC, 0x7618, 0xF0FD, 0x7615, 0xF0FE, 0x7619, 0xF140, 0x998C, 0xF141, 0x998E, + 0xF142, 0x999A, 0xF143, 0x999B, 0xF144, 0x999C, 0xF145, 0x999D, 0xF146, 0x999E, 0xF147, 0x999F, 0xF148, 0x99A0, 0xF149, 0x99A1, + 0xF14A, 0x99A2, 0xF14B, 0x99A3, 0xF14C, 0x99A4, 0xF14D, 0x99A6, 0xF14E, 0x99A7, 0xF14F, 0x99A9, 0xF150, 0x99AA, 0xF151, 0x99AB, + 0xF152, 0x99AC, 0xF153, 0x99AD, 0xF154, 0x99AE, 0xF155, 0x99AF, 0xF156, 0x99B0, 0xF157, 0x99B1, 0xF158, 0x99B2, 0xF159, 0x99B3, + 0xF15A, 0x99B4, 0xF15B, 0x99B5, 0xF15C, 0x99B6, 0xF15D, 0x99B7, 0xF15E, 0x99B8, 0xF15F, 0x99B9, 0xF160, 0x99BA, 0xF161, 0x99BB, + 0xF162, 0x99BC, 0xF163, 0x99BD, 0xF164, 0x99BE, 0xF165, 0x99BF, 0xF166, 0x99C0, 0xF167, 0x99C1, 0xF168, 0x99C2, 0xF169, 0x99C3, + 0xF16A, 0x99C4, 0xF16B, 0x99C5, 0xF16C, 0x99C6, 0xF16D, 0x99C7, 0xF16E, 0x99C8, 0xF16F, 0x99C9, 0xF170, 0x99CA, 0xF171, 0x99CB, + 0xF172, 0x99CC, 0xF173, 0x99CD, 0xF174, 0x99CE, 0xF175, 0x99CF, 0xF176, 0x99D0, 0xF177, 0x99D1, 0xF178, 0x99D2, 0xF179, 0x99D3, + 0xF17A, 0x99D4, 0xF17B, 0x99D5, 0xF17C, 0x99D6, 0xF17D, 0x99D7, 0xF17E, 0x99D8, 0xF180, 0x99D9, 0xF181, 0x99DA, 0xF182, 0x99DB, + 0xF183, 0x99DC, 0xF184, 0x99DD, 0xF185, 0x99DE, 0xF186, 0x99DF, 0xF187, 0x99E0, 0xF188, 0x99E1, 0xF189, 0x99E2, 0xF18A, 0x99E3, + 0xF18B, 0x99E4, 0xF18C, 0x99E5, 0xF18D, 0x99E6, 0xF18E, 0x99E7, 0xF18F, 0x99E8, 0xF190, 0x99E9, 0xF191, 0x99EA, 0xF192, 0x99EB, + 0xF193, 0x99EC, 0xF194, 0x99ED, 0xF195, 0x99EE, 0xF196, 0x99EF, 0xF197, 0x99F0, 0xF198, 0x99F1, 0xF199, 0x99F2, 0xF19A, 0x99F3, + 0xF19B, 0x99F4, 0xF19C, 0x99F5, 0xF19D, 0x99F6, 0xF19E, 0x99F7, 0xF19F, 0x99F8, 0xF1A0, 0x99F9, 0xF1A1, 0x761B, 0xF1A2, 0x763C, + 0xF1A3, 0x7622, 0xF1A4, 0x7620, 0xF1A5, 0x7640, 0xF1A6, 0x762D, 0xF1A7, 0x7630, 0xF1A8, 0x763F, 0xF1A9, 0x7635, 0xF1AA, 0x7643, + 0xF1AB, 0x763E, 0xF1AC, 0x7633, 0xF1AD, 0x764D, 0xF1AE, 0x765E, 0xF1AF, 0x7654, 0xF1B0, 0x765C, 0xF1B1, 0x7656, 0xF1B2, 0x766B, + 0xF1B3, 0x766F, 0xF1B4, 0x7FCA, 0xF1B5, 0x7AE6, 0xF1B6, 0x7A78, 0xF1B7, 0x7A79, 0xF1B8, 0x7A80, 0xF1B9, 0x7A86, 0xF1BA, 0x7A88, + 0xF1BB, 0x7A95, 0xF1BC, 0x7AA6, 0xF1BD, 0x7AA0, 0xF1BE, 0x7AAC, 0xF1BF, 0x7AA8, 0xF1C0, 0x7AAD, 0xF1C1, 0x7AB3, 0xF1C2, 0x8864, + 0xF1C3, 0x8869, 0xF1C4, 0x8872, 0xF1C5, 0x887D, 0xF1C6, 0x887F, 0xF1C7, 0x8882, 0xF1C8, 0x88A2, 0xF1C9, 0x88C6, 0xF1CA, 0x88B7, + 0xF1CB, 0x88BC, 0xF1CC, 0x88C9, 0xF1CD, 0x88E2, 0xF1CE, 0x88CE, 0xF1CF, 0x88E3, 0xF1D0, 0x88E5, 0xF1D1, 0x88F1, 0xF1D2, 0x891A, + 0xF1D3, 0x88FC, 0xF1D4, 0x88E8, 0xF1D5, 0x88FE, 0xF1D6, 0x88F0, 0xF1D7, 0x8921, 0xF1D8, 0x8919, 0xF1D9, 0x8913, 0xF1DA, 0x891B, + 0xF1DB, 0x890A, 0xF1DC, 0x8934, 0xF1DD, 0x892B, 0xF1DE, 0x8936, 0xF1DF, 0x8941, 0xF1E0, 0x8966, 0xF1E1, 0x897B, 0xF1E2, 0x758B, + 0xF1E3, 0x80E5, 0xF1E4, 0x76B2, 0xF1E5, 0x76B4, 0xF1E6, 0x77DC, 0xF1E7, 0x8012, 0xF1E8, 0x8014, 0xF1E9, 0x8016, 0xF1EA, 0x801C, + 0xF1EB, 0x8020, 0xF1EC, 0x8022, 0xF1ED, 0x8025, 0xF1EE, 0x8026, 0xF1EF, 0x8027, 0xF1F0, 0x8029, 0xF1F1, 0x8028, 0xF1F2, 0x8031, + 0xF1F3, 0x800B, 0xF1F4, 0x8035, 0xF1F5, 0x8043, 0xF1F6, 0x8046, 0xF1F7, 0x804D, 0xF1F8, 0x8052, 0xF1F9, 0x8069, 0xF1FA, 0x8071, + 0xF1FB, 0x8983, 0xF1FC, 0x9878, 0xF1FD, 0x9880, 0xF1FE, 0x9883, 0xF240, 0x99FA, 0xF241, 0x99FB, 0xF242, 0x99FC, 0xF243, 0x99FD, + 0xF244, 0x99FE, 0xF245, 0x99FF, 0xF246, 0x9A00, 0xF247, 0x9A01, 0xF248, 0x9A02, 0xF249, 0x9A03, 0xF24A, 0x9A04, 0xF24B, 0x9A05, + 0xF24C, 0x9A06, 0xF24D, 0x9A07, 0xF24E, 0x9A08, 0xF24F, 0x9A09, 0xF250, 0x9A0A, 0xF251, 0x9A0B, 0xF252, 0x9A0C, 0xF253, 0x9A0D, + 0xF254, 0x9A0E, 0xF255, 0x9A0F, 0xF256, 0x9A10, 0xF257, 0x9A11, 0xF258, 0x9A12, 0xF259, 0x9A13, 0xF25A, 0x9A14, 0xF25B, 0x9A15, + 0xF25C, 0x9A16, 0xF25D, 0x9A17, 0xF25E, 0x9A18, 0xF25F, 0x9A19, 0xF260, 0x9A1A, 0xF261, 0x9A1B, 0xF262, 0x9A1C, 0xF263, 0x9A1D, + 0xF264, 0x9A1E, 0xF265, 0x9A1F, 0xF266, 0x9A20, 0xF267, 0x9A21, 0xF268, 0x9A22, 0xF269, 0x9A23, 0xF26A, 0x9A24, 0xF26B, 0x9A25, + 0xF26C, 0x9A26, 0xF26D, 0x9A27, 0xF26E, 0x9A28, 0xF26F, 0x9A29, 0xF270, 0x9A2A, 0xF271, 0x9A2B, 0xF272, 0x9A2C, 0xF273, 0x9A2D, + 0xF274, 0x9A2E, 0xF275, 0x9A2F, 0xF276, 0x9A30, 0xF277, 0x9A31, 0xF278, 0x9A32, 0xF279, 0x9A33, 0xF27A, 0x9A34, 0xF27B, 0x9A35, + 0xF27C, 0x9A36, 0xF27D, 0x9A37, 0xF27E, 0x9A38, 0xF280, 0x9A39, 0xF281, 0x9A3A, 0xF282, 0x9A3B, 0xF283, 0x9A3C, 0xF284, 0x9A3D, + 0xF285, 0x9A3E, 0xF286, 0x9A3F, 0xF287, 0x9A40, 0xF288, 0x9A41, 0xF289, 0x9A42, 0xF28A, 0x9A43, 0xF28B, 0x9A44, 0xF28C, 0x9A45, + 0xF28D, 0x9A46, 0xF28E, 0x9A47, 0xF28F, 0x9A48, 0xF290, 0x9A49, 0xF291, 0x9A4A, 0xF292, 0x9A4B, 0xF293, 0x9A4C, 0xF294, 0x9A4D, + 0xF295, 0x9A4E, 0xF296, 0x9A4F, 0xF297, 0x9A50, 0xF298, 0x9A51, 0xF299, 0x9A52, 0xF29A, 0x9A53, 0xF29B, 0x9A54, 0xF29C, 0x9A55, + 0xF29D, 0x9A56, 0xF29E, 0x9A57, 0xF29F, 0x9A58, 0xF2A0, 0x9A59, 0xF2A1, 0x9889, 0xF2A2, 0x988C, 0xF2A3, 0x988D, 0xF2A4, 0x988F, + 0xF2A5, 0x9894, 0xF2A6, 0x989A, 0xF2A7, 0x989B, 0xF2A8, 0x989E, 0xF2A9, 0x989F, 0xF2AA, 0x98A1, 0xF2AB, 0x98A2, 0xF2AC, 0x98A5, + 0xF2AD, 0x98A6, 0xF2AE, 0x864D, 0xF2AF, 0x8654, 0xF2B0, 0x866C, 0xF2B1, 0x866E, 0xF2B2, 0x867F, 0xF2B3, 0x867A, 0xF2B4, 0x867C, + 0xF2B5, 0x867B, 0xF2B6, 0x86A8, 0xF2B7, 0x868D, 0xF2B8, 0x868B, 0xF2B9, 0x86AC, 0xF2BA, 0x869D, 0xF2BB, 0x86A7, 0xF2BC, 0x86A3, + 0xF2BD, 0x86AA, 0xF2BE, 0x8693, 0xF2BF, 0x86A9, 0xF2C0, 0x86B6, 0xF2C1, 0x86C4, 0xF2C2, 0x86B5, 0xF2C3, 0x86CE, 0xF2C4, 0x86B0, + 0xF2C5, 0x86BA, 0xF2C6, 0x86B1, 0xF2C7, 0x86AF, 0xF2C8, 0x86C9, 0xF2C9, 0x86CF, 0xF2CA, 0x86B4, 0xF2CB, 0x86E9, 0xF2CC, 0x86F1, + 0xF2CD, 0x86F2, 0xF2CE, 0x86ED, 0xF2CF, 0x86F3, 0xF2D0, 0x86D0, 0xF2D1, 0x8713, 0xF2D2, 0x86DE, 0xF2D3, 0x86F4, 0xF2D4, 0x86DF, + 0xF2D5, 0x86D8, 0xF2D6, 0x86D1, 0xF2D7, 0x8703, 0xF2D8, 0x8707, 0xF2D9, 0x86F8, 0xF2DA, 0x8708, 0xF2DB, 0x870A, 0xF2DC, 0x870D, + 0xF2DD, 0x8709, 0xF2DE, 0x8723, 0xF2DF, 0x873B, 0xF2E0, 0x871E, 0xF2E1, 0x8725, 0xF2E2, 0x872E, 0xF2E3, 0x871A, 0xF2E4, 0x873E, + 0xF2E5, 0x8748, 0xF2E6, 0x8734, 0xF2E7, 0x8731, 0xF2E8, 0x8729, 0xF2E9, 0x8737, 0xF2EA, 0x873F, 0xF2EB, 0x8782, 0xF2EC, 0x8722, + 0xF2ED, 0x877D, 0xF2EE, 0x877E, 0xF2EF, 0x877B, 0xF2F0, 0x8760, 0xF2F1, 0x8770, 0xF2F2, 0x874C, 0xF2F3, 0x876E, 0xF2F4, 0x878B, + 0xF2F5, 0x8753, 0xF2F6, 0x8763, 0xF2F7, 0x877C, 0xF2F8, 0x8764, 0xF2F9, 0x8759, 0xF2FA, 0x8765, 0xF2FB, 0x8793, 0xF2FC, 0x87AF, + 0xF2FD, 0x87A8, 0xF2FE, 0x87D2, 0xF340, 0x9A5A, 0xF341, 0x9A5B, 0xF342, 0x9A5C, 0xF343, 0x9A5D, 0xF344, 0x9A5E, 0xF345, 0x9A5F, + 0xF346, 0x9A60, 0xF347, 0x9A61, 0xF348, 0x9A62, 0xF349, 0x9A63, 0xF34A, 0x9A64, 0xF34B, 0x9A65, 0xF34C, 0x9A66, 0xF34D, 0x9A67, + 0xF34E, 0x9A68, 0xF34F, 0x9A69, 0xF350, 0x9A6A, 0xF351, 0x9A6B, 0xF352, 0x9A72, 0xF353, 0x9A83, 0xF354, 0x9A89, 0xF355, 0x9A8D, + 0xF356, 0x9A8E, 0xF357, 0x9A94, 0xF358, 0x9A95, 0xF359, 0x9A99, 0xF35A, 0x9AA6, 0xF35B, 0x9AA9, 0xF35C, 0x9AAA, 0xF35D, 0x9AAB, + 0xF35E, 0x9AAC, 0xF35F, 0x9AAD, 0xF360, 0x9AAE, 0xF361, 0x9AAF, 0xF362, 0x9AB2, 0xF363, 0x9AB3, 0xF364, 0x9AB4, 0xF365, 0x9AB5, + 0xF366, 0x9AB9, 0xF367, 0x9ABB, 0xF368, 0x9ABD, 0xF369, 0x9ABE, 0xF36A, 0x9ABF, 0xF36B, 0x9AC3, 0xF36C, 0x9AC4, 0xF36D, 0x9AC6, + 0xF36E, 0x9AC7, 0xF36F, 0x9AC8, 0xF370, 0x9AC9, 0xF371, 0x9ACA, 0xF372, 0x9ACD, 0xF373, 0x9ACE, 0xF374, 0x9ACF, 0xF375, 0x9AD0, + 0xF376, 0x9AD2, 0xF377, 0x9AD4, 0xF378, 0x9AD5, 0xF379, 0x9AD6, 0xF37A, 0x9AD7, 0xF37B, 0x9AD9, 0xF37C, 0x9ADA, 0xF37D, 0x9ADB, + 0xF37E, 0x9ADC, 0xF380, 0x9ADD, 0xF381, 0x9ADE, 0xF382, 0x9AE0, 0xF383, 0x9AE2, 0xF384, 0x9AE3, 0xF385, 0x9AE4, 0xF386, 0x9AE5, + 0xF387, 0x9AE7, 0xF388, 0x9AE8, 0xF389, 0x9AE9, 0xF38A, 0x9AEA, 0xF38B, 0x9AEC, 0xF38C, 0x9AEE, 0xF38D, 0x9AF0, 0xF38E, 0x9AF1, + 0xF38F, 0x9AF2, 0xF390, 0x9AF3, 0xF391, 0x9AF4, 0xF392, 0x9AF5, 0xF393, 0x9AF6, 0xF394, 0x9AF7, 0xF395, 0x9AF8, 0xF396, 0x9AFA, + 0xF397, 0x9AFC, 0xF398, 0x9AFD, 0xF399, 0x9AFE, 0xF39A, 0x9AFF, 0xF39B, 0x9B00, 0xF39C, 0x9B01, 0xF39D, 0x9B02, 0xF39E, 0x9B04, + 0xF39F, 0x9B05, 0xF3A0, 0x9B06, 0xF3A1, 0x87C6, 0xF3A2, 0x8788, 0xF3A3, 0x8785, 0xF3A4, 0x87AD, 0xF3A5, 0x8797, 0xF3A6, 0x8783, + 0xF3A7, 0x87AB, 0xF3A8, 0x87E5, 0xF3A9, 0x87AC, 0xF3AA, 0x87B5, 0xF3AB, 0x87B3, 0xF3AC, 0x87CB, 0xF3AD, 0x87D3, 0xF3AE, 0x87BD, + 0xF3AF, 0x87D1, 0xF3B0, 0x87C0, 0xF3B1, 0x87CA, 0xF3B2, 0x87DB, 0xF3B3, 0x87EA, 0xF3B4, 0x87E0, 0xF3B5, 0x87EE, 0xF3B6, 0x8816, + 0xF3B7, 0x8813, 0xF3B8, 0x87FE, 0xF3B9, 0x880A, 0xF3BA, 0x881B, 0xF3BB, 0x8821, 0xF3BC, 0x8839, 0xF3BD, 0x883C, 0xF3BE, 0x7F36, + 0xF3BF, 0x7F42, 0xF3C0, 0x7F44, 0xF3C1, 0x7F45, 0xF3C2, 0x8210, 0xF3C3, 0x7AFA, 0xF3C4, 0x7AFD, 0xF3C5, 0x7B08, 0xF3C6, 0x7B03, + 0xF3C7, 0x7B04, 0xF3C8, 0x7B15, 0xF3C9, 0x7B0A, 0xF3CA, 0x7B2B, 0xF3CB, 0x7B0F, 0xF3CC, 0x7B47, 0xF3CD, 0x7B38, 0xF3CE, 0x7B2A, + 0xF3CF, 0x7B19, 0xF3D0, 0x7B2E, 0xF3D1, 0x7B31, 0xF3D2, 0x7B20, 0xF3D3, 0x7B25, 0xF3D4, 0x7B24, 0xF3D5, 0x7B33, 0xF3D6, 0x7B3E, + 0xF3D7, 0x7B1E, 0xF3D8, 0x7B58, 0xF3D9, 0x7B5A, 0xF3DA, 0x7B45, 0xF3DB, 0x7B75, 0xF3DC, 0x7B4C, 0xF3DD, 0x7B5D, 0xF3DE, 0x7B60, + 0xF3DF, 0x7B6E, 0xF3E0, 0x7B7B, 0xF3E1, 0x7B62, 0xF3E2, 0x7B72, 0xF3E3, 0x7B71, 0xF3E4, 0x7B90, 0xF3E5, 0x7BA6, 0xF3E6, 0x7BA7, + 0xF3E7, 0x7BB8, 0xF3E8, 0x7BAC, 0xF3E9, 0x7B9D, 0xF3EA, 0x7BA8, 0xF3EB, 0x7B85, 0xF3EC, 0x7BAA, 0xF3ED, 0x7B9C, 0xF3EE, 0x7BA2, + 0xF3EF, 0x7BAB, 0xF3F0, 0x7BB4, 0xF3F1, 0x7BD1, 0xF3F2, 0x7BC1, 0xF3F3, 0x7BCC, 0xF3F4, 0x7BDD, 0xF3F5, 0x7BDA, 0xF3F6, 0x7BE5, + 0xF3F7, 0x7BE6, 0xF3F8, 0x7BEA, 0xF3F9, 0x7C0C, 0xF3FA, 0x7BFE, 0xF3FB, 0x7BFC, 0xF3FC, 0x7C0F, 0xF3FD, 0x7C16, 0xF3FE, 0x7C0B, + 0xF440, 0x9B07, 0xF441, 0x9B09, 0xF442, 0x9B0A, 0xF443, 0x9B0B, 0xF444, 0x9B0C, 0xF445, 0x9B0D, 0xF446, 0x9B0E, 0xF447, 0x9B10, + 0xF448, 0x9B11, 0xF449, 0x9B12, 0xF44A, 0x9B14, 0xF44B, 0x9B15, 0xF44C, 0x9B16, 0xF44D, 0x9B17, 0xF44E, 0x9B18, 0xF44F, 0x9B19, + 0xF450, 0x9B1A, 0xF451, 0x9B1B, 0xF452, 0x9B1C, 0xF453, 0x9B1D, 0xF454, 0x9B1E, 0xF455, 0x9B20, 0xF456, 0x9B21, 0xF457, 0x9B22, + 0xF458, 0x9B24, 0xF459, 0x9B25, 0xF45A, 0x9B26, 0xF45B, 0x9B27, 0xF45C, 0x9B28, 0xF45D, 0x9B29, 0xF45E, 0x9B2A, 0xF45F, 0x9B2B, + 0xF460, 0x9B2C, 0xF461, 0x9B2D, 0xF462, 0x9B2E, 0xF463, 0x9B30, 0xF464, 0x9B31, 0xF465, 0x9B33, 0xF466, 0x9B34, 0xF467, 0x9B35, + 0xF468, 0x9B36, 0xF469, 0x9B37, 0xF46A, 0x9B38, 0xF46B, 0x9B39, 0xF46C, 0x9B3A, 0xF46D, 0x9B3D, 0xF46E, 0x9B3E, 0xF46F, 0x9B3F, + 0xF470, 0x9B40, 0xF471, 0x9B46, 0xF472, 0x9B4A, 0xF473, 0x9B4B, 0xF474, 0x9B4C, 0xF475, 0x9B4E, 0xF476, 0x9B50, 0xF477, 0x9B52, + 0xF478, 0x9B53, 0xF479, 0x9B55, 0xF47A, 0x9B56, 0xF47B, 0x9B57, 0xF47C, 0x9B58, 0xF47D, 0x9B59, 0xF47E, 0x9B5A, 0xF480, 0x9B5B, + 0xF481, 0x9B5C, 0xF482, 0x9B5D, 0xF483, 0x9B5E, 0xF484, 0x9B5F, 0xF485, 0x9B60, 0xF486, 0x9B61, 0xF487, 0x9B62, 0xF488, 0x9B63, + 0xF489, 0x9B64, 0xF48A, 0x9B65, 0xF48B, 0x9B66, 0xF48C, 0x9B67, 0xF48D, 0x9B68, 0xF48E, 0x9B69, 0xF48F, 0x9B6A, 0xF490, 0x9B6B, + 0xF491, 0x9B6C, 0xF492, 0x9B6D, 0xF493, 0x9B6E, 0xF494, 0x9B6F, 0xF495, 0x9B70, 0xF496, 0x9B71, 0xF497, 0x9B72, 0xF498, 0x9B73, + 0xF499, 0x9B74, 0xF49A, 0x9B75, 0xF49B, 0x9B76, 0xF49C, 0x9B77, 0xF49D, 0x9B78, 0xF49E, 0x9B79, 0xF49F, 0x9B7A, 0xF4A0, 0x9B7B, + 0xF4A1, 0x7C1F, 0xF4A2, 0x7C2A, 0xF4A3, 0x7C26, 0xF4A4, 0x7C38, 0xF4A5, 0x7C41, 0xF4A6, 0x7C40, 0xF4A7, 0x81FE, 0xF4A8, 0x8201, + 0xF4A9, 0x8202, 0xF4AA, 0x8204, 0xF4AB, 0x81EC, 0xF4AC, 0x8844, 0xF4AD, 0x8221, 0xF4AE, 0x8222, 0xF4AF, 0x8223, 0xF4B0, 0x822D, + 0xF4B1, 0x822F, 0xF4B2, 0x8228, 0xF4B3, 0x822B, 0xF4B4, 0x8238, 0xF4B5, 0x823B, 0xF4B6, 0x8233, 0xF4B7, 0x8234, 0xF4B8, 0x823E, + 0xF4B9, 0x8244, 0xF4BA, 0x8249, 0xF4BB, 0x824B, 0xF4BC, 0x824F, 0xF4BD, 0x825A, 0xF4BE, 0x825F, 0xF4BF, 0x8268, 0xF4C0, 0x887E, + 0xF4C1, 0x8885, 0xF4C2, 0x8888, 0xF4C3, 0x88D8, 0xF4C4, 0x88DF, 0xF4C5, 0x895E, 0xF4C6, 0x7F9D, 0xF4C7, 0x7F9F, 0xF4C8, 0x7FA7, + 0xF4C9, 0x7FAF, 0xF4CA, 0x7FB0, 0xF4CB, 0x7FB2, 0xF4CC, 0x7C7C, 0xF4CD, 0x6549, 0xF4CE, 0x7C91, 0xF4CF, 0x7C9D, 0xF4D0, 0x7C9C, + 0xF4D1, 0x7C9E, 0xF4D2, 0x7CA2, 0xF4D3, 0x7CB2, 0xF4D4, 0x7CBC, 0xF4D5, 0x7CBD, 0xF4D6, 0x7CC1, 0xF4D7, 0x7CC7, 0xF4D8, 0x7CCC, + 0xF4D9, 0x7CCD, 0xF4DA, 0x7CC8, 0xF4DB, 0x7CC5, 0xF4DC, 0x7CD7, 0xF4DD, 0x7CE8, 0xF4DE, 0x826E, 0xF4DF, 0x66A8, 0xF4E0, 0x7FBF, + 0xF4E1, 0x7FCE, 0xF4E2, 0x7FD5, 0xF4E3, 0x7FE5, 0xF4E4, 0x7FE1, 0xF4E5, 0x7FE6, 0xF4E6, 0x7FE9, 0xF4E7, 0x7FEE, 0xF4E8, 0x7FF3, + 0xF4E9, 0x7CF8, 0xF4EA, 0x7D77, 0xF4EB, 0x7DA6, 0xF4EC, 0x7DAE, 0xF4ED, 0x7E47, 0xF4EE, 0x7E9B, 0xF4EF, 0x9EB8, 0xF4F0, 0x9EB4, + 0xF4F1, 0x8D73, 0xF4F2, 0x8D84, 0xF4F3, 0x8D94, 0xF4F4, 0x8D91, 0xF4F5, 0x8DB1, 0xF4F6, 0x8D67, 0xF4F7, 0x8D6D, 0xF4F8, 0x8C47, + 0xF4F9, 0x8C49, 0xF4FA, 0x914A, 0xF4FB, 0x9150, 0xF4FC, 0x914E, 0xF4FD, 0x914F, 0xF4FE, 0x9164, 0xF540, 0x9B7C, 0xF541, 0x9B7D, + 0xF542, 0x9B7E, 0xF543, 0x9B7F, 0xF544, 0x9B80, 0xF545, 0x9B81, 0xF546, 0x9B82, 0xF547, 0x9B83, 0xF548, 0x9B84, 0xF549, 0x9B85, + 0xF54A, 0x9B86, 0xF54B, 0x9B87, 0xF54C, 0x9B88, 0xF54D, 0x9B89, 0xF54E, 0x9B8A, 0xF54F, 0x9B8B, 0xF550, 0x9B8C, 0xF551, 0x9B8D, + 0xF552, 0x9B8E, 0xF553, 0x9B8F, 0xF554, 0x9B90, 0xF555, 0x9B91, 0xF556, 0x9B92, 0xF557, 0x9B93, 0xF558, 0x9B94, 0xF559, 0x9B95, + 0xF55A, 0x9B96, 0xF55B, 0x9B97, 0xF55C, 0x9B98, 0xF55D, 0x9B99, 0xF55E, 0x9B9A, 0xF55F, 0x9B9B, 0xF560, 0x9B9C, 0xF561, 0x9B9D, + 0xF562, 0x9B9E, 0xF563, 0x9B9F, 0xF564, 0x9BA0, 0xF565, 0x9BA1, 0xF566, 0x9BA2, 0xF567, 0x9BA3, 0xF568, 0x9BA4, 0xF569, 0x9BA5, + 0xF56A, 0x9BA6, 0xF56B, 0x9BA7, 0xF56C, 0x9BA8, 0xF56D, 0x9BA9, 0xF56E, 0x9BAA, 0xF56F, 0x9BAB, 0xF570, 0x9BAC, 0xF571, 0x9BAD, + 0xF572, 0x9BAE, 0xF573, 0x9BAF, 0xF574, 0x9BB0, 0xF575, 0x9BB1, 0xF576, 0x9BB2, 0xF577, 0x9BB3, 0xF578, 0x9BB4, 0xF579, 0x9BB5, + 0xF57A, 0x9BB6, 0xF57B, 0x9BB7, 0xF57C, 0x9BB8, 0xF57D, 0x9BB9, 0xF57E, 0x9BBA, 0xF580, 0x9BBB, 0xF581, 0x9BBC, 0xF582, 0x9BBD, + 0xF583, 0x9BBE, 0xF584, 0x9BBF, 0xF585, 0x9BC0, 0xF586, 0x9BC1, 0xF587, 0x9BC2, 0xF588, 0x9BC3, 0xF589, 0x9BC4, 0xF58A, 0x9BC5, + 0xF58B, 0x9BC6, 0xF58C, 0x9BC7, 0xF58D, 0x9BC8, 0xF58E, 0x9BC9, 0xF58F, 0x9BCA, 0xF590, 0x9BCB, 0xF591, 0x9BCC, 0xF592, 0x9BCD, + 0xF593, 0x9BCE, 0xF594, 0x9BCF, 0xF595, 0x9BD0, 0xF596, 0x9BD1, 0xF597, 0x9BD2, 0xF598, 0x9BD3, 0xF599, 0x9BD4, 0xF59A, 0x9BD5, + 0xF59B, 0x9BD6, 0xF59C, 0x9BD7, 0xF59D, 0x9BD8, 0xF59E, 0x9BD9, 0xF59F, 0x9BDA, 0xF5A0, 0x9BDB, 0xF5A1, 0x9162, 0xF5A2, 0x9161, + 0xF5A3, 0x9170, 0xF5A4, 0x9169, 0xF5A5, 0x916F, 0xF5A6, 0x917D, 0xF5A7, 0x917E, 0xF5A8, 0x9172, 0xF5A9, 0x9174, 0xF5AA, 0x9179, + 0xF5AB, 0x918C, 0xF5AC, 0x9185, 0xF5AD, 0x9190, 0xF5AE, 0x918D, 0xF5AF, 0x9191, 0xF5B0, 0x91A2, 0xF5B1, 0x91A3, 0xF5B2, 0x91AA, + 0xF5B3, 0x91AD, 0xF5B4, 0x91AE, 0xF5B5, 0x91AF, 0xF5B6, 0x91B5, 0xF5B7, 0x91B4, 0xF5B8, 0x91BA, 0xF5B9, 0x8C55, 0xF5BA, 0x9E7E, + 0xF5BB, 0x8DB8, 0xF5BC, 0x8DEB, 0xF5BD, 0x8E05, 0xF5BE, 0x8E59, 0xF5BF, 0x8E69, 0xF5C0, 0x8DB5, 0xF5C1, 0x8DBF, 0xF5C2, 0x8DBC, + 0xF5C3, 0x8DBA, 0xF5C4, 0x8DC4, 0xF5C5, 0x8DD6, 0xF5C6, 0x8DD7, 0xF5C7, 0x8DDA, 0xF5C8, 0x8DDE, 0xF5C9, 0x8DCE, 0xF5CA, 0x8DCF, + 0xF5CB, 0x8DDB, 0xF5CC, 0x8DC6, 0xF5CD, 0x8DEC, 0xF5CE, 0x8DF7, 0xF5CF, 0x8DF8, 0xF5D0, 0x8DE3, 0xF5D1, 0x8DF9, 0xF5D2, 0x8DFB, + 0xF5D3, 0x8DE4, 0xF5D4, 0x8E09, 0xF5D5, 0x8DFD, 0xF5D6, 0x8E14, 0xF5D7, 0x8E1D, 0xF5D8, 0x8E1F, 0xF5D9, 0x8E2C, 0xF5DA, 0x8E2E, + 0xF5DB, 0x8E23, 0xF5DC, 0x8E2F, 0xF5DD, 0x8E3A, 0xF5DE, 0x8E40, 0xF5DF, 0x8E39, 0xF5E0, 0x8E35, 0xF5E1, 0x8E3D, 0xF5E2, 0x8E31, + 0xF5E3, 0x8E49, 0xF5E4, 0x8E41, 0xF5E5, 0x8E42, 0xF5E6, 0x8E51, 0xF5E7, 0x8E52, 0xF5E8, 0x8E4A, 0xF5E9, 0x8E70, 0xF5EA, 0x8E76, + 0xF5EB, 0x8E7C, 0xF5EC, 0x8E6F, 0xF5ED, 0x8E74, 0xF5EE, 0x8E85, 0xF5EF, 0x8E8F, 0xF5F0, 0x8E94, 0xF5F1, 0x8E90, 0xF5F2, 0x8E9C, + 0xF5F3, 0x8E9E, 0xF5F4, 0x8C78, 0xF5F5, 0x8C82, 0xF5F6, 0x8C8A, 0xF5F7, 0x8C85, 0xF5F8, 0x8C98, 0xF5F9, 0x8C94, 0xF5FA, 0x659B, + 0xF5FB, 0x89D6, 0xF5FC, 0x89DE, 0xF5FD, 0x89DA, 0xF5FE, 0x89DC, 0xF640, 0x9BDC, 0xF641, 0x9BDD, 0xF642, 0x9BDE, 0xF643, 0x9BDF, + 0xF644, 0x9BE0, 0xF645, 0x9BE1, 0xF646, 0x9BE2, 0xF647, 0x9BE3, 0xF648, 0x9BE4, 0xF649, 0x9BE5, 0xF64A, 0x9BE6, 0xF64B, 0x9BE7, + 0xF64C, 0x9BE8, 0xF64D, 0x9BE9, 0xF64E, 0x9BEA, 0xF64F, 0x9BEB, 0xF650, 0x9BEC, 0xF651, 0x9BED, 0xF652, 0x9BEE, 0xF653, 0x9BEF, + 0xF654, 0x9BF0, 0xF655, 0x9BF1, 0xF656, 0x9BF2, 0xF657, 0x9BF3, 0xF658, 0x9BF4, 0xF659, 0x9BF5, 0xF65A, 0x9BF6, 0xF65B, 0x9BF7, + 0xF65C, 0x9BF8, 0xF65D, 0x9BF9, 0xF65E, 0x9BFA, 0xF65F, 0x9BFB, 0xF660, 0x9BFC, 0xF661, 0x9BFD, 0xF662, 0x9BFE, 0xF663, 0x9BFF, + 0xF664, 0x9C00, 0xF665, 0x9C01, 0xF666, 0x9C02, 0xF667, 0x9C03, 0xF668, 0x9C04, 0xF669, 0x9C05, 0xF66A, 0x9C06, 0xF66B, 0x9C07, + 0xF66C, 0x9C08, 0xF66D, 0x9C09, 0xF66E, 0x9C0A, 0xF66F, 0x9C0B, 0xF670, 0x9C0C, 0xF671, 0x9C0D, 0xF672, 0x9C0E, 0xF673, 0x9C0F, + 0xF674, 0x9C10, 0xF675, 0x9C11, 0xF676, 0x9C12, 0xF677, 0x9C13, 0xF678, 0x9C14, 0xF679, 0x9C15, 0xF67A, 0x9C16, 0xF67B, 0x9C17, + 0xF67C, 0x9C18, 0xF67D, 0x9C19, 0xF67E, 0x9C1A, 0xF680, 0x9C1B, 0xF681, 0x9C1C, 0xF682, 0x9C1D, 0xF683, 0x9C1E, 0xF684, 0x9C1F, + 0xF685, 0x9C20, 0xF686, 0x9C21, 0xF687, 0x9C22, 0xF688, 0x9C23, 0xF689, 0x9C24, 0xF68A, 0x9C25, 0xF68B, 0x9C26, 0xF68C, 0x9C27, + 0xF68D, 0x9C28, 0xF68E, 0x9C29, 0xF68F, 0x9C2A, 0xF690, 0x9C2B, 0xF691, 0x9C2C, 0xF692, 0x9C2D, 0xF693, 0x9C2E, 0xF694, 0x9C2F, + 0xF695, 0x9C30, 0xF696, 0x9C31, 0xF697, 0x9C32, 0xF698, 0x9C33, 0xF699, 0x9C34, 0xF69A, 0x9C35, 0xF69B, 0x9C36, 0xF69C, 0x9C37, + 0xF69D, 0x9C38, 0xF69E, 0x9C39, 0xF69F, 0x9C3A, 0xF6A0, 0x9C3B, 0xF6A1, 0x89E5, 0xF6A2, 0x89EB, 0xF6A3, 0x89EF, 0xF6A4, 0x8A3E, + 0xF6A5, 0x8B26, 0xF6A6, 0x9753, 0xF6A7, 0x96E9, 0xF6A8, 0x96F3, 0xF6A9, 0x96EF, 0xF6AA, 0x9706, 0xF6AB, 0x9701, 0xF6AC, 0x9708, + 0xF6AD, 0x970F, 0xF6AE, 0x970E, 0xF6AF, 0x972A, 0xF6B0, 0x972D, 0xF6B1, 0x9730, 0xF6B2, 0x973E, 0xF6B3, 0x9F80, 0xF6B4, 0x9F83, + 0xF6B5, 0x9F85, 0xF6B6, 0x9F86, 0xF6B7, 0x9F87, 0xF6B8, 0x9F88, 0xF6B9, 0x9F89, 0xF6BA, 0x9F8A, 0xF6BB, 0x9F8C, 0xF6BC, 0x9EFE, + 0xF6BD, 0x9F0B, 0xF6BE, 0x9F0D, 0xF6BF, 0x96B9, 0xF6C0, 0x96BC, 0xF6C1, 0x96BD, 0xF6C2, 0x96CE, 0xF6C3, 0x96D2, 0xF6C4, 0x77BF, + 0xF6C5, 0x96E0, 0xF6C6, 0x928E, 0xF6C7, 0x92AE, 0xF6C8, 0x92C8, 0xF6C9, 0x933E, 0xF6CA, 0x936A, 0xF6CB, 0x93CA, 0xF6CC, 0x938F, + 0xF6CD, 0x943E, 0xF6CE, 0x946B, 0xF6CF, 0x9C7F, 0xF6D0, 0x9C82, 0xF6D1, 0x9C85, 0xF6D2, 0x9C86, 0xF6D3, 0x9C87, 0xF6D4, 0x9C88, + 0xF6D5, 0x7A23, 0xF6D6, 0x9C8B, 0xF6D7, 0x9C8E, 0xF6D8, 0x9C90, 0xF6D9, 0x9C91, 0xF6DA, 0x9C92, 0xF6DB, 0x9C94, 0xF6DC, 0x9C95, + 0xF6DD, 0x9C9A, 0xF6DE, 0x9C9B, 0xF6DF, 0x9C9E, 0xF6E0, 0x9C9F, 0xF6E1, 0x9CA0, 0xF6E2, 0x9CA1, 0xF6E3, 0x9CA2, 0xF6E4, 0x9CA3, + 0xF6E5, 0x9CA5, 0xF6E6, 0x9CA6, 0xF6E7, 0x9CA7, 0xF6E8, 0x9CA8, 0xF6E9, 0x9CA9, 0xF6EA, 0x9CAB, 0xF6EB, 0x9CAD, 0xF6EC, 0x9CAE, + 0xF6ED, 0x9CB0, 0xF6EE, 0x9CB1, 0xF6EF, 0x9CB2, 0xF6F0, 0x9CB3, 0xF6F1, 0x9CB4, 0xF6F2, 0x9CB5, 0xF6F3, 0x9CB6, 0xF6F4, 0x9CB7, + 0xF6F5, 0x9CBA, 0xF6F6, 0x9CBB, 0xF6F7, 0x9CBC, 0xF6F8, 0x9CBD, 0xF6F9, 0x9CC4, 0xF6FA, 0x9CC5, 0xF6FB, 0x9CC6, 0xF6FC, 0x9CC7, + 0xF6FD, 0x9CCA, 0xF6FE, 0x9CCB, 0xF740, 0x9C3C, 0xF741, 0x9C3D, 0xF742, 0x9C3E, 0xF743, 0x9C3F, 0xF744, 0x9C40, 0xF745, 0x9C41, + 0xF746, 0x9C42, 0xF747, 0x9C43, 0xF748, 0x9C44, 0xF749, 0x9C45, 0xF74A, 0x9C46, 0xF74B, 0x9C47, 0xF74C, 0x9C48, 0xF74D, 0x9C49, + 0xF74E, 0x9C4A, 0xF74F, 0x9C4B, 0xF750, 0x9C4C, 0xF751, 0x9C4D, 0xF752, 0x9C4E, 0xF753, 0x9C4F, 0xF754, 0x9C50, 0xF755, 0x9C51, + 0xF756, 0x9C52, 0xF757, 0x9C53, 0xF758, 0x9C54, 0xF759, 0x9C55, 0xF75A, 0x9C56, 0xF75B, 0x9C57, 0xF75C, 0x9C58, 0xF75D, 0x9C59, + 0xF75E, 0x9C5A, 0xF75F, 0x9C5B, 0xF760, 0x9C5C, 0xF761, 0x9C5D, 0xF762, 0x9C5E, 0xF763, 0x9C5F, 0xF764, 0x9C60, 0xF765, 0x9C61, + 0xF766, 0x9C62, 0xF767, 0x9C63, 0xF768, 0x9C64, 0xF769, 0x9C65, 0xF76A, 0x9C66, 0xF76B, 0x9C67, 0xF76C, 0x9C68, 0xF76D, 0x9C69, + 0xF76E, 0x9C6A, 0xF76F, 0x9C6B, 0xF770, 0x9C6C, 0xF771, 0x9C6D, 0xF772, 0x9C6E, 0xF773, 0x9C6F, 0xF774, 0x9C70, 0xF775, 0x9C71, + 0xF776, 0x9C72, 0xF777, 0x9C73, 0xF778, 0x9C74, 0xF779, 0x9C75, 0xF77A, 0x9C76, 0xF77B, 0x9C77, 0xF77C, 0x9C78, 0xF77D, 0x9C79, + 0xF77E, 0x9C7A, 0xF780, 0x9C7B, 0xF781, 0x9C7D, 0xF782, 0x9C7E, 0xF783, 0x9C80, 0xF784, 0x9C83, 0xF785, 0x9C84, 0xF786, 0x9C89, + 0xF787, 0x9C8A, 0xF788, 0x9C8C, 0xF789, 0x9C8F, 0xF78A, 0x9C93, 0xF78B, 0x9C96, 0xF78C, 0x9C97, 0xF78D, 0x9C98, 0xF78E, 0x9C99, + 0xF78F, 0x9C9D, 0xF790, 0x9CAA, 0xF791, 0x9CAC, 0xF792, 0x9CAF, 0xF793, 0x9CB9, 0xF794, 0x9CBE, 0xF795, 0x9CBF, 0xF796, 0x9CC0, + 0xF797, 0x9CC1, 0xF798, 0x9CC2, 0xF799, 0x9CC8, 0xF79A, 0x9CC9, 0xF79B, 0x9CD1, 0xF79C, 0x9CD2, 0xF79D, 0x9CDA, 0xF79E, 0x9CDB, + 0xF79F, 0x9CE0, 0xF7A0, 0x9CE1, 0xF7A1, 0x9CCC, 0xF7A2, 0x9CCD, 0xF7A3, 0x9CCE, 0xF7A4, 0x9CCF, 0xF7A5, 0x9CD0, 0xF7A6, 0x9CD3, + 0xF7A7, 0x9CD4, 0xF7A8, 0x9CD5, 0xF7A9, 0x9CD7, 0xF7AA, 0x9CD8, 0xF7AB, 0x9CD9, 0xF7AC, 0x9CDC, 0xF7AD, 0x9CDD, 0xF7AE, 0x9CDF, + 0xF7AF, 0x9CE2, 0xF7B0, 0x977C, 0xF7B1, 0x9785, 0xF7B2, 0x9791, 0xF7B3, 0x9792, 0xF7B4, 0x9794, 0xF7B5, 0x97AF, 0xF7B6, 0x97AB, + 0xF7B7, 0x97A3, 0xF7B8, 0x97B2, 0xF7B9, 0x97B4, 0xF7BA, 0x9AB1, 0xF7BB, 0x9AB0, 0xF7BC, 0x9AB7, 0xF7BD, 0x9E58, 0xF7BE, 0x9AB6, + 0xF7BF, 0x9ABA, 0xF7C0, 0x9ABC, 0xF7C1, 0x9AC1, 0xF7C2, 0x9AC0, 0xF7C3, 0x9AC5, 0xF7C4, 0x9AC2, 0xF7C5, 0x9ACB, 0xF7C6, 0x9ACC, + 0xF7C7, 0x9AD1, 0xF7C8, 0x9B45, 0xF7C9, 0x9B43, 0xF7CA, 0x9B47, 0xF7CB, 0x9B49, 0xF7CC, 0x9B48, 0xF7CD, 0x9B4D, 0xF7CE, 0x9B51, + 0xF7CF, 0x98E8, 0xF7D0, 0x990D, 0xF7D1, 0x992E, 0xF7D2, 0x9955, 0xF7D3, 0x9954, 0xF7D4, 0x9ADF, 0xF7D5, 0x9AE1, 0xF7D6, 0x9AE6, + 0xF7D7, 0x9AEF, 0xF7D8, 0x9AEB, 0xF7D9, 0x9AFB, 0xF7DA, 0x9AED, 0xF7DB, 0x9AF9, 0xF7DC, 0x9B08, 0xF7DD, 0x9B0F, 0xF7DE, 0x9B13, + 0xF7DF, 0x9B1F, 0xF7E0, 0x9B23, 0xF7E1, 0x9EBD, 0xF7E2, 0x9EBE, 0xF7E3, 0x7E3B, 0xF7E4, 0x9E82, 0xF7E5, 0x9E87, 0xF7E6, 0x9E88, + 0xF7E7, 0x9E8B, 0xF7E8, 0x9E92, 0xF7E9, 0x93D6, 0xF7EA, 0x9E9D, 0xF7EB, 0x9E9F, 0xF7EC, 0x9EDB, 0xF7ED, 0x9EDC, 0xF7EE, 0x9EDD, + 0xF7EF, 0x9EE0, 0xF7F0, 0x9EDF, 0xF7F1, 0x9EE2, 0xF7F2, 0x9EE9, 0xF7F3, 0x9EE7, 0xF7F4, 0x9EE5, 0xF7F5, 0x9EEA, 0xF7F6, 0x9EEF, + 0xF7F7, 0x9F22, 0xF7F8, 0x9F2C, 0xF7F9, 0x9F2F, 0xF7FA, 0x9F39, 0xF7FB, 0x9F37, 0xF7FC, 0x9F3D, 0xF7FD, 0x9F3E, 0xF7FE, 0x9F44, + 0xF840, 0x9CE3, 0xF841, 0x9CE4, 0xF842, 0x9CE5, 0xF843, 0x9CE6, 0xF844, 0x9CE7, 0xF845, 0x9CE8, 0xF846, 0x9CE9, 0xF847, 0x9CEA, + 0xF848, 0x9CEB, 0xF849, 0x9CEC, 0xF84A, 0x9CED, 0xF84B, 0x9CEE, 0xF84C, 0x9CEF, 0xF84D, 0x9CF0, 0xF84E, 0x9CF1, 0xF84F, 0x9CF2, + 0xF850, 0x9CF3, 0xF851, 0x9CF4, 0xF852, 0x9CF5, 0xF853, 0x9CF6, 0xF854, 0x9CF7, 0xF855, 0x9CF8, 0xF856, 0x9CF9, 0xF857, 0x9CFA, + 0xF858, 0x9CFB, 0xF859, 0x9CFC, 0xF85A, 0x9CFD, 0xF85B, 0x9CFE, 0xF85C, 0x9CFF, 0xF85D, 0x9D00, 0xF85E, 0x9D01, 0xF85F, 0x9D02, + 0xF860, 0x9D03, 0xF861, 0x9D04, 0xF862, 0x9D05, 0xF863, 0x9D06, 0xF864, 0x9D07, 0xF865, 0x9D08, 0xF866, 0x9D09, 0xF867, 0x9D0A, + 0xF868, 0x9D0B, 0xF869, 0x9D0C, 0xF86A, 0x9D0D, 0xF86B, 0x9D0E, 0xF86C, 0x9D0F, 0xF86D, 0x9D10, 0xF86E, 0x9D11, 0xF86F, 0x9D12, + 0xF870, 0x9D13, 0xF871, 0x9D14, 0xF872, 0x9D15, 0xF873, 0x9D16, 0xF874, 0x9D17, 0xF875, 0x9D18, 0xF876, 0x9D19, 0xF877, 0x9D1A, + 0xF878, 0x9D1B, 0xF879, 0x9D1C, 0xF87A, 0x9D1D, 0xF87B, 0x9D1E, 0xF87C, 0x9D1F, 0xF87D, 0x9D20, 0xF87E, 0x9D21, 0xF880, 0x9D22, + 0xF881, 0x9D23, 0xF882, 0x9D24, 0xF883, 0x9D25, 0xF884, 0x9D26, 0xF885, 0x9D27, 0xF886, 0x9D28, 0xF887, 0x9D29, 0xF888, 0x9D2A, + 0xF889, 0x9D2B, 0xF88A, 0x9D2C, 0xF88B, 0x9D2D, 0xF88C, 0x9D2E, 0xF88D, 0x9D2F, 0xF88E, 0x9D30, 0xF88F, 0x9D31, 0xF890, 0x9D32, + 0xF891, 0x9D33, 0xF892, 0x9D34, 0xF893, 0x9D35, 0xF894, 0x9D36, 0xF895, 0x9D37, 0xF896, 0x9D38, 0xF897, 0x9D39, 0xF898, 0x9D3A, + 0xF899, 0x9D3B, 0xF89A, 0x9D3C, 0xF89B, 0x9D3D, 0xF89C, 0x9D3E, 0xF89D, 0x9D3F, 0xF89E, 0x9D40, 0xF89F, 0x9D41, 0xF8A0, 0x9D42, + 0xF940, 0x9D43, 0xF941, 0x9D44, 0xF942, 0x9D45, 0xF943, 0x9D46, 0xF944, 0x9D47, 0xF945, 0x9D48, 0xF946, 0x9D49, 0xF947, 0x9D4A, + 0xF948, 0x9D4B, 0xF949, 0x9D4C, 0xF94A, 0x9D4D, 0xF94B, 0x9D4E, 0xF94C, 0x9D4F, 0xF94D, 0x9D50, 0xF94E, 0x9D51, 0xF94F, 0x9D52, + 0xF950, 0x9D53, 0xF951, 0x9D54, 0xF952, 0x9D55, 0xF953, 0x9D56, 0xF954, 0x9D57, 0xF955, 0x9D58, 0xF956, 0x9D59, 0xF957, 0x9D5A, + 0xF958, 0x9D5B, 0xF959, 0x9D5C, 0xF95A, 0x9D5D, 0xF95B, 0x9D5E, 0xF95C, 0x9D5F, 0xF95D, 0x9D60, 0xF95E, 0x9D61, 0xF95F, 0x9D62, + 0xF960, 0x9D63, 0xF961, 0x9D64, 0xF962, 0x9D65, 0xF963, 0x9D66, 0xF964, 0x9D67, 0xF965, 0x9D68, 0xF966, 0x9D69, 0xF967, 0x9D6A, + 0xF968, 0x9D6B, 0xF969, 0x9D6C, 0xF96A, 0x9D6D, 0xF96B, 0x9D6E, 0xF96C, 0x9D6F, 0xF96D, 0x9D70, 0xF96E, 0x9D71, 0xF96F, 0x9D72, + 0xF970, 0x9D73, 0xF971, 0x9D74, 0xF972, 0x9D75, 0xF973, 0x9D76, 0xF974, 0x9D77, 0xF975, 0x9D78, 0xF976, 0x9D79, 0xF977, 0x9D7A, + 0xF978, 0x9D7B, 0xF979, 0x9D7C, 0xF97A, 0x9D7D, 0xF97B, 0x9D7E, 0xF97C, 0x9D7F, 0xF97D, 0x9D80, 0xF97E, 0x9D81, 0xF980, 0x9D82, + 0xF981, 0x9D83, 0xF982, 0x9D84, 0xF983, 0x9D85, 0xF984, 0x9D86, 0xF985, 0x9D87, 0xF986, 0x9D88, 0xF987, 0x9D89, 0xF988, 0x9D8A, + 0xF989, 0x9D8B, 0xF98A, 0x9D8C, 0xF98B, 0x9D8D, 0xF98C, 0x9D8E, 0xF98D, 0x9D8F, 0xF98E, 0x9D90, 0xF98F, 0x9D91, 0xF990, 0x9D92, + 0xF991, 0x9D93, 0xF992, 0x9D94, 0xF993, 0x9D95, 0xF994, 0x9D96, 0xF995, 0x9D97, 0xF996, 0x9D98, 0xF997, 0x9D99, 0xF998, 0x9D9A, + 0xF999, 0x9D9B, 0xF99A, 0x9D9C, 0xF99B, 0x9D9D, 0xF99C, 0x9D9E, 0xF99D, 0x9D9F, 0xF99E, 0x9DA0, 0xF99F, 0x9DA1, 0xF9A0, 0x9DA2, + 0xFA40, 0x9DA3, 0xFA41, 0x9DA4, 0xFA42, 0x9DA5, 0xFA43, 0x9DA6, 0xFA44, 0x9DA7, 0xFA45, 0x9DA8, 0xFA46, 0x9DA9, 0xFA47, 0x9DAA, + 0xFA48, 0x9DAB, 0xFA49, 0x9DAC, 0xFA4A, 0x9DAD, 0xFA4B, 0x9DAE, 0xFA4C, 0x9DAF, 0xFA4D, 0x9DB0, 0xFA4E, 0x9DB1, 0xFA4F, 0x9DB2, + 0xFA50, 0x9DB3, 0xFA51, 0x9DB4, 0xFA52, 0x9DB5, 0xFA53, 0x9DB6, 0xFA54, 0x9DB7, 0xFA55, 0x9DB8, 0xFA56, 0x9DB9, 0xFA57, 0x9DBA, + 0xFA58, 0x9DBB, 0xFA59, 0x9DBC, 0xFA5A, 0x9DBD, 0xFA5B, 0x9DBE, 0xFA5C, 0x9DBF, 0xFA5D, 0x9DC0, 0xFA5E, 0x9DC1, 0xFA5F, 0x9DC2, + 0xFA60, 0x9DC3, 0xFA61, 0x9DC4, 0xFA62, 0x9DC5, 0xFA63, 0x9DC6, 0xFA64, 0x9DC7, 0xFA65, 0x9DC8, 0xFA66, 0x9DC9, 0xFA67, 0x9DCA, + 0xFA68, 0x9DCB, 0xFA69, 0x9DCC, 0xFA6A, 0x9DCD, 0xFA6B, 0x9DCE, 0xFA6C, 0x9DCF, 0xFA6D, 0x9DD0, 0xFA6E, 0x9DD1, 0xFA6F, 0x9DD2, + 0xFA70, 0x9DD3, 0xFA71, 0x9DD4, 0xFA72, 0x9DD5, 0xFA73, 0x9DD6, 0xFA74, 0x9DD7, 0xFA75, 0x9DD8, 0xFA76, 0x9DD9, 0xFA77, 0x9DDA, + 0xFA78, 0x9DDB, 0xFA79, 0x9DDC, 0xFA7A, 0x9DDD, 0xFA7B, 0x9DDE, 0xFA7C, 0x9DDF, 0xFA7D, 0x9DE0, 0xFA7E, 0x9DE1, 0xFA80, 0x9DE2, + 0xFA81, 0x9DE3, 0xFA82, 0x9DE4, 0xFA83, 0x9DE5, 0xFA84, 0x9DE6, 0xFA85, 0x9DE7, 0xFA86, 0x9DE8, 0xFA87, 0x9DE9, 0xFA88, 0x9DEA, + 0xFA89, 0x9DEB, 0xFA8A, 0x9DEC, 0xFA8B, 0x9DED, 0xFA8C, 0x9DEE, 0xFA8D, 0x9DEF, 0xFA8E, 0x9DF0, 0xFA8F, 0x9DF1, 0xFA90, 0x9DF2, + 0xFA91, 0x9DF3, 0xFA92, 0x9DF4, 0xFA93, 0x9DF5, 0xFA94, 0x9DF6, 0xFA95, 0x9DF7, 0xFA96, 0x9DF8, 0xFA97, 0x9DF9, 0xFA98, 0x9DFA, + 0xFA99, 0x9DFB, 0xFA9A, 0x9DFC, 0xFA9B, 0x9DFD, 0xFA9C, 0x9DFE, 0xFA9D, 0x9DFF, 0xFA9E, 0x9E00, 0xFA9F, 0x9E01, 0xFAA0, 0x9E02, + 0xFB40, 0x9E03, 0xFB41, 0x9E04, 0xFB42, 0x9E05, 0xFB43, 0x9E06, 0xFB44, 0x9E07, 0xFB45, 0x9E08, 0xFB46, 0x9E09, 0xFB47, 0x9E0A, + 0xFB48, 0x9E0B, 0xFB49, 0x9E0C, 0xFB4A, 0x9E0D, 0xFB4B, 0x9E0E, 0xFB4C, 0x9E0F, 0xFB4D, 0x9E10, 0xFB4E, 0x9E11, 0xFB4F, 0x9E12, + 0xFB50, 0x9E13, 0xFB51, 0x9E14, 0xFB52, 0x9E15, 0xFB53, 0x9E16, 0xFB54, 0x9E17, 0xFB55, 0x9E18, 0xFB56, 0x9E19, 0xFB57, 0x9E1A, + 0xFB58, 0x9E1B, 0xFB59, 0x9E1C, 0xFB5A, 0x9E1D, 0xFB5B, 0x9E1E, 0xFB5C, 0x9E24, 0xFB5D, 0x9E27, 0xFB5E, 0x9E2E, 0xFB5F, 0x9E30, + 0xFB60, 0x9E34, 0xFB61, 0x9E3B, 0xFB62, 0x9E3C, 0xFB63, 0x9E40, 0xFB64, 0x9E4D, 0xFB65, 0x9E50, 0xFB66, 0x9E52, 0xFB67, 0x9E53, + 0xFB68, 0x9E54, 0xFB69, 0x9E56, 0xFB6A, 0x9E59, 0xFB6B, 0x9E5D, 0xFB6C, 0x9E5F, 0xFB6D, 0x9E60, 0xFB6E, 0x9E61, 0xFB6F, 0x9E62, + 0xFB70, 0x9E65, 0xFB71, 0x9E6E, 0xFB72, 0x9E6F, 0xFB73, 0x9E72, 0xFB74, 0x9E74, 0xFB75, 0x9E75, 0xFB76, 0x9E76, 0xFB77, 0x9E77, + 0xFB78, 0x9E78, 0xFB79, 0x9E79, 0xFB7A, 0x9E7A, 0xFB7B, 0x9E7B, 0xFB7C, 0x9E7C, 0xFB7D, 0x9E7D, 0xFB7E, 0x9E80, 0xFB80, 0x9E81, + 0xFB81, 0x9E83, 0xFB82, 0x9E84, 0xFB83, 0x9E85, 0xFB84, 0x9E86, 0xFB85, 0x9E89, 0xFB86, 0x9E8A, 0xFB87, 0x9E8C, 0xFB88, 0x9E8D, + 0xFB89, 0x9E8E, 0xFB8A, 0x9E8F, 0xFB8B, 0x9E90, 0xFB8C, 0x9E91, 0xFB8D, 0x9E94, 0xFB8E, 0x9E95, 0xFB8F, 0x9E96, 0xFB90, 0x9E97, + 0xFB91, 0x9E98, 0xFB92, 0x9E99, 0xFB93, 0x9E9A, 0xFB94, 0x9E9B, 0xFB95, 0x9E9C, 0xFB96, 0x9E9E, 0xFB97, 0x9EA0, 0xFB98, 0x9EA1, + 0xFB99, 0x9EA2, 0xFB9A, 0x9EA3, 0xFB9B, 0x9EA4, 0xFB9C, 0x9EA5, 0xFB9D, 0x9EA7, 0xFB9E, 0x9EA8, 0xFB9F, 0x9EA9, 0xFBA0, 0x9EAA, + 0xFC40, 0x9EAB, 0xFC41, 0x9EAC, 0xFC42, 0x9EAD, 0xFC43, 0x9EAE, 0xFC44, 0x9EAF, 0xFC45, 0x9EB0, 0xFC46, 0x9EB1, 0xFC47, 0x9EB2, + 0xFC48, 0x9EB3, 0xFC49, 0x9EB5, 0xFC4A, 0x9EB6, 0xFC4B, 0x9EB7, 0xFC4C, 0x9EB9, 0xFC4D, 0x9EBA, 0xFC4E, 0x9EBC, 0xFC4F, 0x9EBF, + 0xFC50, 0x9EC0, 0xFC51, 0x9EC1, 0xFC52, 0x9EC2, 0xFC53, 0x9EC3, 0xFC54, 0x9EC5, 0xFC55, 0x9EC6, 0xFC56, 0x9EC7, 0xFC57, 0x9EC8, + 0xFC58, 0x9ECA, 0xFC59, 0x9ECB, 0xFC5A, 0x9ECC, 0xFC5B, 0x9ED0, 0xFC5C, 0x9ED2, 0xFC5D, 0x9ED3, 0xFC5E, 0x9ED5, 0xFC5F, 0x9ED6, + 0xFC60, 0x9ED7, 0xFC61, 0x9ED9, 0xFC62, 0x9EDA, 0xFC63, 0x9EDE, 0xFC64, 0x9EE1, 0xFC65, 0x9EE3, 0xFC66, 0x9EE4, 0xFC67, 0x9EE6, + 0xFC68, 0x9EE8, 0xFC69, 0x9EEB, 0xFC6A, 0x9EEC, 0xFC6B, 0x9EED, 0xFC6C, 0x9EEE, 0xFC6D, 0x9EF0, 0xFC6E, 0x9EF1, 0xFC6F, 0x9EF2, + 0xFC70, 0x9EF3, 0xFC71, 0x9EF4, 0xFC72, 0x9EF5, 0xFC73, 0x9EF6, 0xFC74, 0x9EF7, 0xFC75, 0x9EF8, 0xFC76, 0x9EFA, 0xFC77, 0x9EFD, + 0xFC78, 0x9EFF, 0xFC79, 0x9F00, 0xFC7A, 0x9F01, 0xFC7B, 0x9F02, 0xFC7C, 0x9F03, 0xFC7D, 0x9F04, 0xFC7E, 0x9F05, 0xFC80, 0x9F06, + 0xFC81, 0x9F07, 0xFC82, 0x9F08, 0xFC83, 0x9F09, 0xFC84, 0x9F0A, 0xFC85, 0x9F0C, 0xFC86, 0x9F0F, 0xFC87, 0x9F11, 0xFC88, 0x9F12, + 0xFC89, 0x9F14, 0xFC8A, 0x9F15, 0xFC8B, 0x9F16, 0xFC8C, 0x9F18, 0xFC8D, 0x9F1A, 0xFC8E, 0x9F1B, 0xFC8F, 0x9F1C, 0xFC90, 0x9F1D, + 0xFC91, 0x9F1E, 0xFC92, 0x9F1F, 0xFC93, 0x9F21, 0xFC94, 0x9F23, 0xFC95, 0x9F24, 0xFC96, 0x9F25, 0xFC97, 0x9F26, 0xFC98, 0x9F27, + 0xFC99, 0x9F28, 0xFC9A, 0x9F29, 0xFC9B, 0x9F2A, 0xFC9C, 0x9F2B, 0xFC9D, 0x9F2D, 0xFC9E, 0x9F2E, 0xFC9F, 0x9F30, 0xFCA0, 0x9F31, + 0xFD40, 0x9F32, 0xFD41, 0x9F33, 0xFD42, 0x9F34, 0xFD43, 0x9F35, 0xFD44, 0x9F36, 0xFD45, 0x9F38, 0xFD46, 0x9F3A, 0xFD47, 0x9F3C, + 0xFD48, 0x9F3F, 0xFD49, 0x9F40, 0xFD4A, 0x9F41, 0xFD4B, 0x9F42, 0xFD4C, 0x9F43, 0xFD4D, 0x9F45, 0xFD4E, 0x9F46, 0xFD4F, 0x9F47, + 0xFD50, 0x9F48, 0xFD51, 0x9F49, 0xFD52, 0x9F4A, 0xFD53, 0x9F4B, 0xFD54, 0x9F4C, 0xFD55, 0x9F4D, 0xFD56, 0x9F4E, 0xFD57, 0x9F4F, + 0xFD58, 0x9F52, 0xFD59, 0x9F53, 0xFD5A, 0x9F54, 0xFD5B, 0x9F55, 0xFD5C, 0x9F56, 0xFD5D, 0x9F57, 0xFD5E, 0x9F58, 0xFD5F, 0x9F59, + 0xFD60, 0x9F5A, 0xFD61, 0x9F5B, 0xFD62, 0x9F5C, 0xFD63, 0x9F5D, 0xFD64, 0x9F5E, 0xFD65, 0x9F5F, 0xFD66, 0x9F60, 0xFD67, 0x9F61, + 0xFD68, 0x9F62, 0xFD69, 0x9F63, 0xFD6A, 0x9F64, 0xFD6B, 0x9F65, 0xFD6C, 0x9F66, 0xFD6D, 0x9F67, 0xFD6E, 0x9F68, 0xFD6F, 0x9F69, + 0xFD70, 0x9F6A, 0xFD71, 0x9F6B, 0xFD72, 0x9F6C, 0xFD73, 0x9F6D, 0xFD74, 0x9F6E, 0xFD75, 0x9F6F, 0xFD76, 0x9F70, 0xFD77, 0x9F71, + 0xFD78, 0x9F72, 0xFD79, 0x9F73, 0xFD7A, 0x9F74, 0xFD7B, 0x9F75, 0xFD7C, 0x9F76, 0xFD7D, 0x9F77, 0xFD7E, 0x9F78, 0xFD80, 0x9F79, + 0xFD81, 0x9F7A, 0xFD82, 0x9F7B, 0xFD83, 0x9F7C, 0xFD84, 0x9F7D, 0xFD85, 0x9F7E, 0xFD86, 0x9F81, 0xFD87, 0x9F82, 0xFD88, 0x9F8D, + 0xFD89, 0x9F8E, 0xFD8A, 0x9F8F, 0xFD8B, 0x9F90, 0xFD8C, 0x9F91, 0xFD8D, 0x9F92, 0xFD8E, 0x9F93, 0xFD8F, 0x9F94, 0xFD90, 0x9F95, + 0xFD91, 0x9F96, 0xFD92, 0x9F97, 0xFD93, 0x9F98, 0xFD94, 0x9F9C, 0xFD95, 0x9F9D, 0xFD96, 0x9F9E, 0xFD97, 0x9FA1, 0xFD98, 0x9FA2, + 0xFD99, 0x9FA3, 0xFD9A, 0x9FA4, 0xFD9B, 0x9FA5, 0xFD9C, 0xF92C, 0xFD9D, 0xF979, 0xFD9E, 0xF995, 0xFD9F, 0xF9E7, 0xFDA0, 0xF9F1, + 0xFE40, 0xFA0C, 0xFE41, 0xFA0D, 0xFE42, 0xFA0E, 0xFE43, 0xFA0F, 0xFE44, 0xFA11, 0xFE45, 0xFA13, 0xFE46, 0xFA14, 0xFE47, 0xFA18, + 0xFE48, 0xFA1F, 0xFE49, 0xFA20, 0xFE4A, 0xFA21, 0xFE4B, 0xFA23, 0xFE4C, 0xFA24, 0xFE4D, 0xFA27, 0xFE4E, 0xFA28, 0xFE4F, 0xFA29, + 0, 0 +}; +#endif + +#if FF_CODE_PAGE == 949 || FF_CODE_PAGE == 0 /* Korean */ +static const WCHAR uni2oem949[] = { /* Unicode --> Korean pairs */ + 0x00A1, 0xA2AE, 0x00A4, 0xA2B4, 0x00A7, 0xA1D7, 0x00A8, 0xA1A7, 0x00AA, 0xA8A3, 0x00AD, 0xA1A9, 0x00AE, 0xA2E7, 0x00B0, 0xA1C6, + 0x00B1, 0xA1BE, 0x00B2, 0xA9F7, 0x00B3, 0xA9F8, 0x00B4, 0xA2A5, 0x00B6, 0xA2D2, 0x00B7, 0xA1A4, 0x00B8, 0xA2AC, 0x00B9, 0xA9F6, + 0x00BA, 0xA8AC, 0x00BC, 0xA8F9, 0x00BD, 0xA8F6, 0x00BE, 0xA8FA, 0x00BF, 0xA2AF, 0x00C6, 0xA8A1, 0x00D0, 0xA8A2, 0x00D7, 0xA1BF, + 0x00D8, 0xA8AA, 0x00DE, 0xA8AD, 0x00DF, 0xA9AC, 0x00E6, 0xA9A1, 0x00F0, 0xA9A3, 0x00F7, 0xA1C0, 0x00F8, 0xA9AA, 0x00FE, 0xA9AD, + 0x0111, 0xA9A2, 0x0126, 0xA8A4, 0x0127, 0xA9A4, 0x0131, 0xA9A5, 0x0132, 0xA8A6, 0x0133, 0xA9A6, 0x0138, 0xA9A7, 0x013F, 0xA8A8, + 0x0140, 0xA9A8, 0x0141, 0xA8A9, 0x0142, 0xA9A9, 0x0149, 0xA9B0, 0x014A, 0xA8AF, 0x014B, 0xA9AF, 0x0152, 0xA8AB, 0x0153, 0xA9AB, + 0x0166, 0xA8AE, 0x0167, 0xA9AE, 0x02C7, 0xA2A7, 0x02D0, 0xA2B0, 0x02D8, 0xA2A8, 0x02D9, 0xA2AB, 0x02DA, 0xA2AA, 0x02DB, 0xA2AD, + 0x02DD, 0xA2A9, 0x0391, 0xA5C1, 0x0392, 0xA5C2, 0x0393, 0xA5C3, 0x0394, 0xA5C4, 0x0395, 0xA5C5, 0x0396, 0xA5C6, 0x0397, 0xA5C7, + 0x0398, 0xA5C8, 0x0399, 0xA5C9, 0x039A, 0xA5CA, 0x039B, 0xA5CB, 0x039C, 0xA5CC, 0x039D, 0xA5CD, 0x039E, 0xA5CE, 0x039F, 0xA5CF, + 0x03A0, 0xA5D0, 0x03A1, 0xA5D1, 0x03A3, 0xA5D2, 0x03A4, 0xA5D3, 0x03A5, 0xA5D4, 0x03A6, 0xA5D5, 0x03A7, 0xA5D6, 0x03A8, 0xA5D7, + 0x03A9, 0xA5D8, 0x03B1, 0xA5E1, 0x03B2, 0xA5E2, 0x03B3, 0xA5E3, 0x03B4, 0xA5E4, 0x03B5, 0xA5E5, 0x03B6, 0xA5E6, 0x03B7, 0xA5E7, + 0x03B8, 0xA5E8, 0x03B9, 0xA5E9, 0x03BA, 0xA5EA, 0x03BB, 0xA5EB, 0x03BC, 0xA5EC, 0x03BD, 0xA5ED, 0x03BE, 0xA5EE, 0x03BF, 0xA5EF, + 0x03C0, 0xA5F0, 0x03C1, 0xA5F1, 0x03C3, 0xA5F2, 0x03C4, 0xA5F3, 0x03C5, 0xA5F4, 0x03C6, 0xA5F5, 0x03C7, 0xA5F6, 0x03C8, 0xA5F7, + 0x03C9, 0xA5F8, 0x0401, 0xACA7, 0x0410, 0xACA1, 0x0411, 0xACA2, 0x0412, 0xACA3, 0x0413, 0xACA4, 0x0414, 0xACA5, 0x0415, 0xACA6, + 0x0416, 0xACA8, 0x0417, 0xACA9, 0x0418, 0xACAA, 0x0419, 0xACAB, 0x041A, 0xACAC, 0x041B, 0xACAD, 0x041C, 0xACAE, 0x041D, 0xACAF, + 0x041E, 0xACB0, 0x041F, 0xACB1, 0x0420, 0xACB2, 0x0421, 0xACB3, 0x0422, 0xACB4, 0x0423, 0xACB5, 0x0424, 0xACB6, 0x0425, 0xACB7, + 0x0426, 0xACB8, 0x0427, 0xACB9, 0x0428, 0xACBA, 0x0429, 0xACBB, 0x042A, 0xACBC, 0x042B, 0xACBD, 0x042C, 0xACBE, 0x042D, 0xACBF, + 0x042E, 0xACC0, 0x042F, 0xACC1, 0x0430, 0xACD1, 0x0431, 0xACD2, 0x0432, 0xACD3, 0x0433, 0xACD4, 0x0434, 0xACD5, 0x0435, 0xACD6, + 0x0436, 0xACD8, 0x0437, 0xACD9, 0x0438, 0xACDA, 0x0439, 0xACDB, 0x043A, 0xACDC, 0x043B, 0xACDD, 0x043C, 0xACDE, 0x043D, 0xACDF, + 0x043E, 0xACE0, 0x043F, 0xACE1, 0x0440, 0xACE2, 0x0441, 0xACE3, 0x0442, 0xACE4, 0x0443, 0xACE5, 0x0444, 0xACE6, 0x0445, 0xACE7, + 0x0446, 0xACE8, 0x0447, 0xACE9, 0x0448, 0xACEA, 0x0449, 0xACEB, 0x044A, 0xACEC, 0x044B, 0xACED, 0x044C, 0xACEE, 0x044D, 0xACEF, + 0x044E, 0xACF0, 0x044F, 0xACF1, 0x0451, 0xACD7, 0x2015, 0xA1AA, 0x2018, 0xA1AE, 0x2019, 0xA1AF, 0x201C, 0xA1B0, 0x201D, 0xA1B1, + 0x2020, 0xA2D3, 0x2021, 0xA2D4, 0x2025, 0xA1A5, 0x2026, 0xA1A6, 0x2030, 0xA2B6, 0x2032, 0xA1C7, 0x2033, 0xA1C8, 0x203B, 0xA1D8, + 0x2074, 0xA9F9, 0x207F, 0xA9FA, 0x2081, 0xA9FB, 0x2082, 0xA9FC, 0x2083, 0xA9FD, 0x2084, 0xA9FE, 0x20AC, 0xA2E6, 0x2103, 0xA1C9, + 0x2109, 0xA2B5, 0x2113, 0xA7A4, 0x2116, 0xA2E0, 0x2121, 0xA2E5, 0x2122, 0xA2E2, 0x2126, 0xA7D9, 0x212B, 0xA1CA, 0x2153, 0xA8F7, + 0x2154, 0xA8F8, 0x215B, 0xA8FB, 0x215C, 0xA8FC, 0x215D, 0xA8FD, 0x215E, 0xA8FE, 0x2160, 0xA5B0, 0x2161, 0xA5B1, 0x2162, 0xA5B2, + 0x2163, 0xA5B3, 0x2164, 0xA5B4, 0x2165, 0xA5B5, 0x2166, 0xA5B6, 0x2167, 0xA5B7, 0x2168, 0xA5B8, 0x2169, 0xA5B9, 0x2170, 0xA5A1, + 0x2171, 0xA5A2, 0x2172, 0xA5A3, 0x2173, 0xA5A4, 0x2174, 0xA5A5, 0x2175, 0xA5A6, 0x2176, 0xA5A7, 0x2177, 0xA5A8, 0x2178, 0xA5A9, + 0x2179, 0xA5AA, 0x2190, 0xA1E7, 0x2191, 0xA1E8, 0x2192, 0xA1E6, 0x2193, 0xA1E9, 0x2194, 0xA1EA, 0x2195, 0xA2D5, 0x2196, 0xA2D8, + 0x2197, 0xA2D6, 0x2198, 0xA2D9, 0x2199, 0xA2D7, 0x21D2, 0xA2A1, 0x21D4, 0xA2A2, 0x2200, 0xA2A3, 0x2202, 0xA1D3, 0x2203, 0xA2A4, + 0x2207, 0xA1D4, 0x2208, 0xA1F4, 0x220B, 0xA1F5, 0x220F, 0xA2B3, 0x2211, 0xA2B2, 0x221A, 0xA1EE, 0x221D, 0xA1F0, 0x221E, 0xA1C4, + 0x2220, 0xA1D0, 0x2225, 0xA1AB, 0x2227, 0xA1FC, 0x2228, 0xA1FD, 0x2229, 0xA1FB, 0x222A, 0xA1FA, 0x222B, 0xA1F2, 0x222C, 0xA1F3, + 0x222E, 0xA2B1, 0x2234, 0xA1C5, 0x2235, 0xA1F1, 0x223C, 0xA1AD, 0x223D, 0xA1EF, 0x2252, 0xA1D6, 0x2260, 0xA1C1, 0x2261, 0xA1D5, + 0x2264, 0xA1C2, 0x2265, 0xA1C3, 0x226A, 0xA1EC, 0x226B, 0xA1ED, 0x2282, 0xA1F8, 0x2283, 0xA1F9, 0x2286, 0xA1F6, 0x2287, 0xA1F7, + 0x2299, 0xA2C1, 0x22A5, 0xA1D1, 0x2312, 0xA1D2, 0x2460, 0xA8E7, 0x2461, 0xA8E8, 0x2462, 0xA8E9, 0x2463, 0xA8EA, 0x2464, 0xA8EB, + 0x2465, 0xA8EC, 0x2466, 0xA8ED, 0x2467, 0xA8EE, 0x2468, 0xA8EF, 0x2469, 0xA8F0, 0x246A, 0xA8F1, 0x246B, 0xA8F2, 0x246C, 0xA8F3, + 0x246D, 0xA8F4, 0x246E, 0xA8F5, 0x2474, 0xA9E7, 0x2475, 0xA9E8, 0x2476, 0xA9E9, 0x2477, 0xA9EA, 0x2478, 0xA9EB, 0x2479, 0xA9EC, + 0x247A, 0xA9ED, 0x247B, 0xA9EE, 0x247C, 0xA9EF, 0x247D, 0xA9F0, 0x247E, 0xA9F1, 0x247F, 0xA9F2, 0x2480, 0xA9F3, 0x2481, 0xA9F4, + 0x2482, 0xA9F5, 0x249C, 0xA9CD, 0x249D, 0xA9CE, 0x249E, 0xA9CF, 0x249F, 0xA9D0, 0x24A0, 0xA9D1, 0x24A1, 0xA9D2, 0x24A2, 0xA9D3, + 0x24A3, 0xA9D4, 0x24A4, 0xA9D5, 0x24A5, 0xA9D6, 0x24A6, 0xA9D7, 0x24A7, 0xA9D8, 0x24A8, 0xA9D9, 0x24A9, 0xA9DA, 0x24AA, 0xA9DB, + 0x24AB, 0xA9DC, 0x24AC, 0xA9DD, 0x24AD, 0xA9DE, 0x24AE, 0xA9DF, 0x24AF, 0xA9E0, 0x24B0, 0xA9E1, 0x24B1, 0xA9E2, 0x24B2, 0xA9E3, + 0x24B3, 0xA9E4, 0x24B4, 0xA9E5, 0x24B5, 0xA9E6, 0x24D0, 0xA8CD, 0x24D1, 0xA8CE, 0x24D2, 0xA8CF, 0x24D3, 0xA8D0, 0x24D4, 0xA8D1, + 0x24D5, 0xA8D2, 0x24D6, 0xA8D3, 0x24D7, 0xA8D4, 0x24D8, 0xA8D5, 0x24D9, 0xA8D6, 0x24DA, 0xA8D7, 0x24DB, 0xA8D8, 0x24DC, 0xA8D9, + 0x24DD, 0xA8DA, 0x24DE, 0xA8DB, 0x24DF, 0xA8DC, 0x24E0, 0xA8DD, 0x24E1, 0xA8DE, 0x24E2, 0xA8DF, 0x24E3, 0xA8E0, 0x24E4, 0xA8E1, + 0x24E5, 0xA8E2, 0x24E6, 0xA8E3, 0x24E7, 0xA8E4, 0x24E8, 0xA8E5, 0x24E9, 0xA8E6, 0x2500, 0xA6A1, 0x2501, 0xA6AC, 0x2502, 0xA6A2, + 0x2503, 0xA6AD, 0x250C, 0xA6A3, 0x250D, 0xA6C8, 0x250E, 0xA6C7, 0x250F, 0xA6AE, 0x2510, 0xA6A4, 0x2511, 0xA6C2, 0x2512, 0xA6C1, + 0x2513, 0xA6AF, 0x2514, 0xA6A6, 0x2515, 0xA6C6, 0x2516, 0xA6C5, 0x2517, 0xA6B1, 0x2518, 0xA6A5, 0x2519, 0xA6C4, 0x251A, 0xA6C3, + 0x251B, 0xA6B0, 0x251C, 0xA6A7, 0x251D, 0xA6BC, 0x251E, 0xA6C9, 0x251F, 0xA6CA, 0x2520, 0xA6B7, 0x2521, 0xA6CB, 0x2522, 0xA6CC, + 0x2523, 0xA6B2, 0x2524, 0xA6A9, 0x2525, 0xA6BE, 0x2526, 0xA6CD, 0x2527, 0xA6CE, 0x2528, 0xA6B9, 0x2529, 0xA6CF, 0x252A, 0xA6D0, + 0x252B, 0xA6B4, 0x252C, 0xA6A8, 0x252D, 0xA6D1, 0x252E, 0xA6D2, 0x252F, 0xA6B8, 0x2530, 0xA6BD, 0x2531, 0xA6D3, 0x2532, 0xA6D4, + 0x2533, 0xA6B3, 0x2534, 0xA6AA, 0x2535, 0xA6D5, 0x2536, 0xA6D6, 0x2537, 0xA6BA, 0x2538, 0xA6BF, 0x2539, 0xA6D7, 0x253A, 0xA6D8, + 0x253B, 0xA6B5, 0x253C, 0xA6AB, 0x253D, 0xA6D9, 0x253E, 0xA6DA, 0x253F, 0xA6BB, 0x2540, 0xA6DB, 0x2541, 0xA6DC, 0x2542, 0xA6C0, + 0x2543, 0xA6DD, 0x2544, 0xA6DE, 0x2545, 0xA6DF, 0x2546, 0xA6E0, 0x2547, 0xA6E1, 0x2548, 0xA6E2, 0x2549, 0xA6E3, 0x254A, 0xA6E4, + 0x254B, 0xA6B6, 0x2592, 0xA2C6, 0x25A0, 0xA1E1, 0x25A1, 0xA1E0, 0x25A3, 0xA2C3, 0x25A4, 0xA2C7, 0x25A5, 0xA2C8, 0x25A6, 0xA2CB, + 0x25A7, 0xA2CA, 0x25A8, 0xA2C9, 0x25A9, 0xA2CC, 0x25B2, 0xA1E3, 0x25B3, 0xA1E2, 0x25B6, 0xA2BA, 0x25B7, 0xA2B9, 0x25BC, 0xA1E5, + 0x25BD, 0xA1E4, 0x25C0, 0xA2B8, 0x25C1, 0xA2B7, 0x25C6, 0xA1DF, 0x25C7, 0xA1DE, 0x25C8, 0xA2C2, 0x25CB, 0xA1DB, 0x25CE, 0xA1DD, + 0x25CF, 0xA1DC, 0x25D0, 0xA2C4, 0x25D1, 0xA2C5, 0x2605, 0xA1DA, 0x2606, 0xA1D9, 0x260E, 0xA2CF, 0x260F, 0xA2CE, 0x261C, 0xA2D0, + 0x261E, 0xA2D1, 0x2640, 0xA1CF, 0x2642, 0xA1CE, 0x2660, 0xA2BC, 0x2661, 0xA2BD, 0x2663, 0xA2C0, 0x2664, 0xA2BB, 0x2665, 0xA2BE, + 0x2667, 0xA2BF, 0x2668, 0xA2CD, 0x2669, 0xA2DB, 0x266A, 0xA2DC, 0x266C, 0xA2DD, 0x266D, 0xA2DA, 0x3000, 0xA1A1, 0x3001, 0xA1A2, + 0x3002, 0xA1A3, 0x3003, 0xA1A8, 0x3008, 0xA1B4, 0x3009, 0xA1B5, 0x300A, 0xA1B6, 0x300B, 0xA1B7, 0x300C, 0xA1B8, 0x300D, 0xA1B9, + 0x300E, 0xA1BA, 0x300F, 0xA1BB, 0x3010, 0xA1BC, 0x3011, 0xA1BD, 0x3013, 0xA1EB, 0x3014, 0xA1B2, 0x3015, 0xA1B3, 0x3041, 0xAAA1, + 0x3042, 0xAAA2, 0x3043, 0xAAA3, 0x3044, 0xAAA4, 0x3045, 0xAAA5, 0x3046, 0xAAA6, 0x3047, 0xAAA7, 0x3048, 0xAAA8, 0x3049, 0xAAA9, + 0x304A, 0xAAAA, 0x304B, 0xAAAB, 0x304C, 0xAAAC, 0x304D, 0xAAAD, 0x304E, 0xAAAE, 0x304F, 0xAAAF, 0x3050, 0xAAB0, 0x3051, 0xAAB1, + 0x3052, 0xAAB2, 0x3053, 0xAAB3, 0x3054, 0xAAB4, 0x3055, 0xAAB5, 0x3056, 0xAAB6, 0x3057, 0xAAB7, 0x3058, 0xAAB8, 0x3059, 0xAAB9, + 0x305A, 0xAABA, 0x305B, 0xAABB, 0x305C, 0xAABC, 0x305D, 0xAABD, 0x305E, 0xAABE, 0x305F, 0xAABF, 0x3060, 0xAAC0, 0x3061, 0xAAC1, + 0x3062, 0xAAC2, 0x3063, 0xAAC3, 0x3064, 0xAAC4, 0x3065, 0xAAC5, 0x3066, 0xAAC6, 0x3067, 0xAAC7, 0x3068, 0xAAC8, 0x3069, 0xAAC9, + 0x306A, 0xAACA, 0x306B, 0xAACB, 0x306C, 0xAACC, 0x306D, 0xAACD, 0x306E, 0xAACE, 0x306F, 0xAACF, 0x3070, 0xAAD0, 0x3071, 0xAAD1, + 0x3072, 0xAAD2, 0x3073, 0xAAD3, 0x3074, 0xAAD4, 0x3075, 0xAAD5, 0x3076, 0xAAD6, 0x3077, 0xAAD7, 0x3078, 0xAAD8, 0x3079, 0xAAD9, + 0x307A, 0xAADA, 0x307B, 0xAADB, 0x307C, 0xAADC, 0x307D, 0xAADD, 0x307E, 0xAADE, 0x307F, 0xAADF, 0x3080, 0xAAE0, 0x3081, 0xAAE1, + 0x3082, 0xAAE2, 0x3083, 0xAAE3, 0x3084, 0xAAE4, 0x3085, 0xAAE5, 0x3086, 0xAAE6, 0x3087, 0xAAE7, 0x3088, 0xAAE8, 0x3089, 0xAAE9, + 0x308A, 0xAAEA, 0x308B, 0xAAEB, 0x308C, 0xAAEC, 0x308D, 0xAAED, 0x308E, 0xAAEE, 0x308F, 0xAAEF, 0x3090, 0xAAF0, 0x3091, 0xAAF1, + 0x3092, 0xAAF2, 0x3093, 0xAAF3, 0x30A1, 0xABA1, 0x30A2, 0xABA2, 0x30A3, 0xABA3, 0x30A4, 0xABA4, 0x30A5, 0xABA5, 0x30A6, 0xABA6, + 0x30A7, 0xABA7, 0x30A8, 0xABA8, 0x30A9, 0xABA9, 0x30AA, 0xABAA, 0x30AB, 0xABAB, 0x30AC, 0xABAC, 0x30AD, 0xABAD, 0x30AE, 0xABAE, + 0x30AF, 0xABAF, 0x30B0, 0xABB0, 0x30B1, 0xABB1, 0x30B2, 0xABB2, 0x30B3, 0xABB3, 0x30B4, 0xABB4, 0x30B5, 0xABB5, 0x30B6, 0xABB6, + 0x30B7, 0xABB7, 0x30B8, 0xABB8, 0x30B9, 0xABB9, 0x30BA, 0xABBA, 0x30BB, 0xABBB, 0x30BC, 0xABBC, 0x30BD, 0xABBD, 0x30BE, 0xABBE, + 0x30BF, 0xABBF, 0x30C0, 0xABC0, 0x30C1, 0xABC1, 0x30C2, 0xABC2, 0x30C3, 0xABC3, 0x30C4, 0xABC4, 0x30C5, 0xABC5, 0x30C6, 0xABC6, + 0x30C7, 0xABC7, 0x30C8, 0xABC8, 0x30C9, 0xABC9, 0x30CA, 0xABCA, 0x30CB, 0xABCB, 0x30CC, 0xABCC, 0x30CD, 0xABCD, 0x30CE, 0xABCE, + 0x30CF, 0xABCF, 0x30D0, 0xABD0, 0x30D1, 0xABD1, 0x30D2, 0xABD2, 0x30D3, 0xABD3, 0x30D4, 0xABD4, 0x30D5, 0xABD5, 0x30D6, 0xABD6, + 0x30D7, 0xABD7, 0x30D8, 0xABD8, 0x30D9, 0xABD9, 0x30DA, 0xABDA, 0x30DB, 0xABDB, 0x30DC, 0xABDC, 0x30DD, 0xABDD, 0x30DE, 0xABDE, + 0x30DF, 0xABDF, 0x30E0, 0xABE0, 0x30E1, 0xABE1, 0x30E2, 0xABE2, 0x30E3, 0xABE3, 0x30E4, 0xABE4, 0x30E5, 0xABE5, 0x30E6, 0xABE6, + 0x30E7, 0xABE7, 0x30E8, 0xABE8, 0x30E9, 0xABE9, 0x30EA, 0xABEA, 0x30EB, 0xABEB, 0x30EC, 0xABEC, 0x30ED, 0xABED, 0x30EE, 0xABEE, + 0x30EF, 0xABEF, 0x30F0, 0xABF0, 0x30F1, 0xABF1, 0x30F2, 0xABF2, 0x30F3, 0xABF3, 0x30F4, 0xABF4, 0x30F5, 0xABF5, 0x30F6, 0xABF6, + 0x3131, 0xA4A1, 0x3132, 0xA4A2, 0x3133, 0xA4A3, 0x3134, 0xA4A4, 0x3135, 0xA4A5, 0x3136, 0xA4A6, 0x3137, 0xA4A7, 0x3138, 0xA4A8, + 0x3139, 0xA4A9, 0x313A, 0xA4AA, 0x313B, 0xA4AB, 0x313C, 0xA4AC, 0x313D, 0xA4AD, 0x313E, 0xA4AE, 0x313F, 0xA4AF, 0x3140, 0xA4B0, + 0x3141, 0xA4B1, 0x3142, 0xA4B2, 0x3143, 0xA4B3, 0x3144, 0xA4B4, 0x3145, 0xA4B5, 0x3146, 0xA4B6, 0x3147, 0xA4B7, 0x3148, 0xA4B8, + 0x3149, 0xA4B9, 0x314A, 0xA4BA, 0x314B, 0xA4BB, 0x314C, 0xA4BC, 0x314D, 0xA4BD, 0x314E, 0xA4BE, 0x314F, 0xA4BF, 0x3150, 0xA4C0, + 0x3151, 0xA4C1, 0x3152, 0xA4C2, 0x3153, 0xA4C3, 0x3154, 0xA4C4, 0x3155, 0xA4C5, 0x3156, 0xA4C6, 0x3157, 0xA4C7, 0x3158, 0xA4C8, + 0x3159, 0xA4C9, 0x315A, 0xA4CA, 0x315B, 0xA4CB, 0x315C, 0xA4CC, 0x315D, 0xA4CD, 0x315E, 0xA4CE, 0x315F, 0xA4CF, 0x3160, 0xA4D0, + 0x3161, 0xA4D1, 0x3162, 0xA4D2, 0x3163, 0xA4D3, 0x3164, 0xA4D4, 0x3165, 0xA4D5, 0x3166, 0xA4D6, 0x3167, 0xA4D7, 0x3168, 0xA4D8, + 0x3169, 0xA4D9, 0x316A, 0xA4DA, 0x316B, 0xA4DB, 0x316C, 0xA4DC, 0x316D, 0xA4DD, 0x316E, 0xA4DE, 0x316F, 0xA4DF, 0x3170, 0xA4E0, + 0x3171, 0xA4E1, 0x3172, 0xA4E2, 0x3173, 0xA4E3, 0x3174, 0xA4E4, 0x3175, 0xA4E5, 0x3176, 0xA4E6, 0x3177, 0xA4E7, 0x3178, 0xA4E8, + 0x3179, 0xA4E9, 0x317A, 0xA4EA, 0x317B, 0xA4EB, 0x317C, 0xA4EC, 0x317D, 0xA4ED, 0x317E, 0xA4EE, 0x317F, 0xA4EF, 0x3180, 0xA4F0, + 0x3181, 0xA4F1, 0x3182, 0xA4F2, 0x3183, 0xA4F3, 0x3184, 0xA4F4, 0x3185, 0xA4F5, 0x3186, 0xA4F6, 0x3187, 0xA4F7, 0x3188, 0xA4F8, + 0x3189, 0xA4F9, 0x318A, 0xA4FA, 0x318B, 0xA4FB, 0x318C, 0xA4FC, 0x318D, 0xA4FD, 0x318E, 0xA4FE, 0x3200, 0xA9B1, 0x3201, 0xA9B2, + 0x3202, 0xA9B3, 0x3203, 0xA9B4, 0x3204, 0xA9B5, 0x3205, 0xA9B6, 0x3206, 0xA9B7, 0x3207, 0xA9B8, 0x3208, 0xA9B9, 0x3209, 0xA9BA, + 0x320A, 0xA9BB, 0x320B, 0xA9BC, 0x320C, 0xA9BD, 0x320D, 0xA9BE, 0x320E, 0xA9BF, 0x320F, 0xA9C0, 0x3210, 0xA9C1, 0x3211, 0xA9C2, + 0x3212, 0xA9C3, 0x3213, 0xA9C4, 0x3214, 0xA9C5, 0x3215, 0xA9C6, 0x3216, 0xA9C7, 0x3217, 0xA9C8, 0x3218, 0xA9C9, 0x3219, 0xA9CA, + 0x321A, 0xA9CB, 0x321B, 0xA9CC, 0x321C, 0xA2DF, 0x3260, 0xA8B1, 0x3261, 0xA8B2, 0x3262, 0xA8B3, 0x3263, 0xA8B4, 0x3264, 0xA8B5, + 0x3265, 0xA8B6, 0x3266, 0xA8B7, 0x3267, 0xA8B8, 0x3268, 0xA8B9, 0x3269, 0xA8BA, 0x326A, 0xA8BB, 0x326B, 0xA8BC, 0x326C, 0xA8BD, + 0x326D, 0xA8BE, 0x326E, 0xA8BF, 0x326F, 0xA8C0, 0x3270, 0xA8C1, 0x3271, 0xA8C2, 0x3272, 0xA8C3, 0x3273, 0xA8C4, 0x3274, 0xA8C5, + 0x3275, 0xA8C6, 0x3276, 0xA8C7, 0x3277, 0xA8C8, 0x3278, 0xA8C9, 0x3279, 0xA8CA, 0x327A, 0xA8CB, 0x327B, 0xA8CC, 0x327F, 0xA2DE, + 0x3380, 0xA7C9, 0x3381, 0xA7CA, 0x3382, 0xA7CB, 0x3383, 0xA7CC, 0x3384, 0xA7CD, 0x3388, 0xA7BA, 0x3389, 0xA7BB, 0x338A, 0xA7DC, + 0x338B, 0xA7DD, 0x338C, 0xA7DE, 0x338D, 0xA7B6, 0x338E, 0xA7B7, 0x338F, 0xA7B8, 0x3390, 0xA7D4, 0x3391, 0xA7D5, 0x3392, 0xA7D6, + 0x3393, 0xA7D7, 0x3394, 0xA7D8, 0x3395, 0xA7A1, 0x3396, 0xA7A2, 0x3397, 0xA7A3, 0x3398, 0xA7A5, 0x3399, 0xA7AB, 0x339A, 0xA7AC, + 0x339B, 0xA7AD, 0x339C, 0xA7AE, 0x339D, 0xA7AF, 0x339E, 0xA7B0, 0x339F, 0xA7B1, 0x33A0, 0xA7B2, 0x33A1, 0xA7B3, 0x33A2, 0xA7B4, + 0x33A3, 0xA7A7, 0x33A4, 0xA7A8, 0x33A5, 0xA7A9, 0x33A6, 0xA7AA, 0x33A7, 0xA7BD, 0x33A8, 0xA7BE, 0x33A9, 0xA7E5, 0x33AA, 0xA7E6, + 0x33AB, 0xA7E7, 0x33AC, 0xA7E8, 0x33AD, 0xA7E1, 0x33AE, 0xA7E2, 0x33AF, 0xA7E3, 0x33B0, 0xA7BF, 0x33B1, 0xA7C0, 0x33B2, 0xA7C1, + 0x33B3, 0xA7C2, 0x33B4, 0xA7C3, 0x33B5, 0xA7C4, 0x33B6, 0xA7C5, 0x33B7, 0xA7C6, 0x33B8, 0xA7C7, 0x33B9, 0xA7C8, 0x33BA, 0xA7CE, + 0x33BB, 0xA7CF, 0x33BC, 0xA7D0, 0x33BD, 0xA7D1, 0x33BE, 0xA7D2, 0x33BF, 0xA7D3, 0x33C0, 0xA7DA, 0x33C1, 0xA7DB, 0x33C2, 0xA2E3, + 0x33C3, 0xA7EC, 0x33C4, 0xA7A6, 0x33C5, 0xA7E0, 0x33C6, 0xA7EF, 0x33C7, 0xA2E1, 0x33C8, 0xA7BC, 0x33C9, 0xA7ED, 0x33CA, 0xA7B5, + 0x33CF, 0xA7B9, 0x33D0, 0xA7EA, 0x33D3, 0xA7EB, 0x33D6, 0xA7DF, 0x33D8, 0xA2E4, 0x33DB, 0xA7E4, 0x33DC, 0xA7EE, 0x33DD, 0xA7E9, + 0x4E00, 0xECE9, 0x4E01, 0xEFCB, 0x4E03, 0xF6D2, 0x4E07, 0xD8B2, 0x4E08, 0xEDDB, 0x4E09, 0xDFB2, 0x4E0A, 0xDFBE, 0x4E0B, 0xF9BB, + 0x4E0D, 0xDCF4, 0x4E11, 0xF5E4, 0x4E14, 0xF3A6, 0x4E15, 0xDDE0, 0x4E16, 0xE1A6, 0x4E18, 0xCEF8, 0x4E19, 0xDCB0, 0x4E1E, 0xE3AA, + 0x4E2D, 0xF1E9, 0x4E32, 0xCDFA, 0x4E38, 0xFCAF, 0x4E39, 0xD3A1, 0x4E3B, 0xF1AB, 0x4E42, 0xE7D1, 0x4E43, 0xD2AC, 0x4E45, 0xCEF9, + 0x4E4B, 0xF1FD, 0x4E4D, 0xDEBF, 0x4E4E, 0xFBBA, 0x4E4F, 0xF9B9, 0x4E56, 0xCED2, 0x4E58, 0xE3AB, 0x4E59, 0xEBE0, 0x4E5D, 0xCEFA, + 0x4E5E, 0xCBF7, 0x4E5F, 0xE5A5, 0x4E6B, 0xCAE1, 0x4E6D, 0xD4CC, 0x4E73, 0xEAE1, 0x4E76, 0xDCE3, 0x4E77, 0xDFAD, 0x4E7E, 0xCBEB, + 0x4E82, 0xD5AF, 0x4E86, 0xD6F5, 0x4E88, 0xE5F8, 0x4E8B, 0xDEC0, 0x4E8C, 0xECA3, 0x4E8E, 0xE9CD, 0x4E90, 0xEAA7, 0x4E91, 0xE9F6, + 0x4E92, 0xFBBB, 0x4E94, 0xE7E9, 0x4E95, 0xEFCC, 0x4E98, 0xD0E6, 0x4E9B, 0xDEC1, 0x4E9E, 0xE4AC, 0x4EA1, 0xD8CC, 0x4EA2, 0xF9F1, + 0x4EA4, 0xCEDF, 0x4EA5, 0xFAA4, 0x4EA6, 0xE6B2, 0x4EA8, 0xFAFB, 0x4EAB, 0xFABD, 0x4EAC, 0xCCC8, 0x4EAD, 0xEFCD, 0x4EAE, 0xD5D5, + 0x4EB6, 0xD3A2, 0x4EBA, 0xECD1, 0x4EC0, 0xE4A7, 0x4EC1, 0xECD2, 0x4EC4, 0xF6B1, 0x4EC7, 0xCEFB, 0x4ECA, 0xD0D1, 0x4ECB, 0xCBBF, + 0x4ECD, 0xEDA4, 0x4ED4, 0xEDA8, 0x4ED5, 0xDEC2, 0x4ED6, 0xF6E2, 0x4ED7, 0xEDDC, 0x4ED8, 0xDCF5, 0x4ED9, 0xE0B9, 0x4EDD, 0xD4CE, + 0x4EDF, 0xF4B5, 0x4EE3, 0xD3DB, 0x4EE4, 0xD6B5, 0x4EE5, 0xECA4, 0x4EF0, 0xE4E6, 0x4EF2, 0xF1EA, 0x4EF6, 0xCBEC, 0x4EF7, 0xCBC0, + 0x4EFB, 0xECF2, 0x4F01, 0xD0EA, 0x4F09, 0xF9F2, 0x4F0A, 0xECA5, 0x4F0B, 0xD0DF, 0x4F0D, 0xE7EA, 0x4F0E, 0xD0EB, 0x4F0F, 0xDCD1, + 0x4F10, 0xDBE9, 0x4F11, 0xFDCC, 0x4F2F, 0xDBD7, 0x4F34, 0xDAE1, 0x4F36, 0xD6B6, 0x4F38, 0xE3DF, 0x4F3A, 0xDEC3, 0x4F3C, 0xDEC4, + 0x4F3D, 0xCAA1, 0x4F43, 0xEEEC, 0x4F46, 0xD3A3, 0x4F47, 0xEEB7, 0x4F48, 0xF8CF, 0x4F4D, 0xEAC8, 0x4F4E, 0xEEB8, 0x4F4F, 0xF1AC, + 0x4F50, 0xF1A5, 0x4F51, 0xE9CE, 0x4F55, 0xF9BC, 0x4F59, 0xE5F9, 0x4F5A, 0xECEA, 0x4F5B, 0xDDD6, 0x4F5C, 0xEDC2, 0x4F69, 0xF8A5, + 0x4F6F, 0xE5BA, 0x4F70, 0xDBD8, 0x4F73, 0xCAA2, 0x4F76, 0xD1CD, 0x4F7A, 0xEEED, 0x4F7E, 0xECEB, 0x4F7F, 0xDEC5, 0x4F81, 0xE3E0, + 0x4F83, 0xCAC9, 0x4F84, 0xF2E9, 0x4F86, 0xD5CE, 0x4F88, 0xF6B6, 0x4F8A, 0xCEC2, 0x4F8B, 0xD6C7, 0x4F8D, 0xE3B4, 0x4F8F, 0xF1AD, + 0x4F91, 0xEAE2, 0x4F96, 0xD7C2, 0x4F98, 0xF3A7, 0x4F9B, 0xCDEA, 0x4F9D, 0xEBEE, 0x4FAE, 0xD9B2, 0x4FAF, 0xFDA5, 0x4FB5, 0xF6D5, + 0x4FB6, 0xD5E2, 0x4FBF, 0xF8B5, 0x4FC2, 0xCCF5, 0x4FC3, 0xF5B5, 0x4FC4, 0xE4AD, 0x4FC9, 0xE7EB, 0x4FCA, 0xF1D5, 0x4FCE, 0xF0BB, + 0x4FD1, 0xE9B5, 0x4FD3, 0xCCC9, 0x4FD4, 0xFAD5, 0x4FD7, 0xE1D4, 0x4FDA, 0xD7D6, 0x4FDD, 0xDCC1, 0x4FDF, 0xDEC6, 0x4FE0, 0xFAEF, + 0x4FE1, 0xE3E1, 0x4FEE, 0xE1F3, 0x4FEF, 0xDCF6, 0x4FF1, 0xCEFC, 0x4FF3, 0xDBC4, 0x4FF5, 0xF8F1, 0x4FF8, 0xDCE4, 0x4FFA, 0xE5EF, + 0x5002, 0xDCB1, 0x5006, 0xD5D6, 0x5009, 0xF3DA, 0x500B, 0xCBC1, 0x500D, 0xDBC3, 0x5011, 0xD9FA, 0x5012, 0xD3EE, 0x5016, 0xFAB8, + 0x5019, 0xFDA6, 0x501A, 0xEBEF, 0x501C, 0xF4A6, 0x501E, 0xCCCA, 0x501F, 0xF3A8, 0x5021, 0xF3DB, 0x5023, 0xDBA7, 0x5024, 0xF6B7, + 0x5026, 0xCFE6, 0x5027, 0xF0F2, 0x5028, 0xCBDA, 0x502A, 0xE7D2, 0x502B, 0xD7C3, 0x502C, 0xF6F0, 0x502D, 0xE8DE, 0x503B, 0xE5A6, + 0x5043, 0xE5E7, 0x5047, 0xCAA3, 0x5048, 0xCCA7, 0x5049, 0xEAC9, 0x504F, 0xF8B6, 0x5055, 0xFAA5, 0x505A, 0xF1AE, 0x505C, 0xEFCE, + 0x5065, 0xCBED, 0x5074, 0xF6B0, 0x5075, 0xEFCF, 0x5076, 0xE9CF, 0x5078, 0xF7DE, 0x5080, 0xCED3, 0x5085, 0xDCF7, 0x508D, 0xDBA8, + 0x5091, 0xCBF8, 0x5098, 0xDFA1, 0x5099, 0xDDE1, 0x50AC, 0xF5CA, 0x50AD, 0xE9B6, 0x50B2, 0xE7EC, 0x50B3, 0xEEEE, 0x50B5, 0xF3F0, + 0x50B7, 0xDFBF, 0x50BE, 0xCCCB, 0x50C5, 0xD0C1, 0x50C9, 0xF4D2, 0x50CA, 0xE0BA, 0x50CF, 0xDFC0, 0x50D1, 0xCEE0, 0x50D5, 0xDCD2, + 0x50D6, 0xFDEA, 0x50DA, 0xD6F6, 0x50DE, 0xEACA, 0x50E5, 0xE8E9, 0x50E7, 0xE3AC, 0x50ED, 0xF3D0, 0x50F9, 0xCAA4, 0x50FB, 0xDBF8, + 0x50FF, 0xDEC7, 0x5100, 0xEBF0, 0x5101, 0xF1D6, 0x5104, 0xE5E2, 0x5106, 0xCCCC, 0x5109, 0xCBFB, 0x5112, 0xEAE3, 0x511F, 0xDFC1, + 0x5121, 0xD6ED, 0x512A, 0xE9D0, 0x5132, 0xEEB9, 0x5137, 0xD5E3, 0x513A, 0xD1D3, 0x513C, 0xE5F0, 0x5140, 0xE8B4, 0x5141, 0xEBC3, + 0x5143, 0xEAAA, 0x5144, 0xFAFC, 0x5145, 0xF5F6, 0x5146, 0xF0BC, 0x5147, 0xFDD4, 0x5148, 0xE0BB, 0x5149, 0xCEC3, 0x514B, 0xD0BA, + 0x514C, 0xF7BA, 0x514D, 0xD8F3, 0x514E, 0xF7CD, 0x5152, 0xE4AE, 0x515C, 0xD4DF, 0x5162, 0xD0E7, 0x5165, 0xECFD, 0x5167, 0xD2AE, + 0x5168, 0xEEEF, 0x5169, 0xD5D7, 0x516A, 0xEAE4, 0x516B, 0xF8A2, 0x516C, 0xCDEB, 0x516D, 0xD7BF, 0x516E, 0xFBB1, 0x5171, 0xCDEC, + 0x5175, 0xDCB2, 0x5176, 0xD0EC, 0x5177, 0xCEFD, 0x5178, 0xEEF0, 0x517C, 0xCCC2, 0x5180, 0xD0ED, 0x5186, 0xE5F7, 0x518A, 0xF3FC, + 0x518D, 0xEEA2, 0x5192, 0xD9B3, 0x5195, 0xD8F4, 0x5197, 0xE9B7, 0x51A0, 0xCEAE, 0x51A5, 0xD9A2, 0x51AA, 0xD8F1, 0x51AC, 0xD4CF, + 0x51B6, 0xE5A7, 0x51B7, 0xD5D2, 0x51BD, 0xD6A9, 0x51C4, 0xF4A2, 0x51C6, 0xF1D7, 0x51C9, 0xD5D8, 0x51CB, 0xF0BD, 0x51CC, 0xD7D0, + 0x51CD, 0xD4D0, 0x51DC, 0xD7CF, 0x51DD, 0xEBEA, 0x51DE, 0xFDEB, 0x51E1, 0xDBED, 0x51F0, 0xFCC5, 0x51F1, 0xCBC2, 0x51F6, 0xFDD5, + 0x51F8, 0xF4C8, 0x51F9, 0xE8EA, 0x51FA, 0xF5F3, 0x51FD, 0xF9DE, 0x5200, 0xD3EF, 0x5203, 0xECD3, 0x5206, 0xDDC2, 0x5207, 0xEFB7, + 0x5208, 0xE7D4, 0x520A, 0xCACA, 0x520E, 0xD9FB, 0x5211, 0xFAFD, 0x5217, 0xD6AA, 0x521D, 0xF4F8, 0x5224, 0xF7F7, 0x5225, 0xDCAC, + 0x5229, 0xD7D7, 0x522A, 0xDFA2, 0x522E, 0xCEBE, 0x5230, 0xD3F0, 0x5236, 0xF0A4, 0x5237, 0xE1EC, 0x5238, 0xCFE7, 0x5239, 0xF3CB, + 0x523A, 0xEDA9, 0x523B, 0xCABE, 0x5243, 0xF4EF, 0x5247, 0xF6CE, 0x524A, 0xDEFB, 0x524B, 0xD0BB, 0x524C, 0xD5B7, 0x524D, 0xEEF1, + 0x5254, 0xF4A8, 0x5256, 0xDCF8, 0x525B, 0xCBA7, 0x525D, 0xDACE, 0x5261, 0xE0E6, 0x5269, 0xEDA5, 0x526A, 0xEEF2, 0x526F, 0xDCF9, + 0x5272, 0xF9DC, 0x5275, 0xF3DC, 0x527D, 0xF8F2, 0x527F, 0xF4F9, 0x5283, 0xFCF1, 0x5287, 0xD0BC, 0x5288, 0xDBF9, 0x5289, 0xD7B1, + 0x528D, 0xCBFC, 0x5291, 0xF0A5, 0x5292, 0xCBFD, 0x529B, 0xD5F4, 0x529F, 0xCDED, 0x52A0, 0xCAA5, 0x52A3, 0xD6AB, 0x52A4, 0xD0C2, + 0x52A9, 0xF0BE, 0x52AA, 0xD2BD, 0x52AB, 0xCCA4, 0x52BE, 0xFAB6, 0x52C1, 0xCCCD, 0x52C3, 0xDAFA, 0x52C5, 0xF6CF, 0x52C7, 0xE9B8, + 0x52C9, 0xD8F5, 0x52CD, 0xCCCE, 0x52D2, 0xD7CD, 0x52D5, 0xD4D1, 0x52D6, 0xE9ED, 0x52D8, 0xCAEB, 0x52D9, 0xD9E2, 0x52DB, 0xFDB2, + 0x52DD, 0xE3AD, 0x52DE, 0xD6CC, 0x52DF, 0xD9B4, 0x52E2, 0xE1A7, 0x52E3, 0xEED3, 0x52E4, 0xD0C3, 0x52F3, 0xFDB3, 0x52F5, 0xD5E4, + 0x52F8, 0xCFE8, 0x52FA, 0xEDC3, 0x52FB, 0xD0B2, 0x52FE, 0xCEFE, 0x52FF, 0xDAA8, 0x5305, 0xF8D0, 0x5308, 0xFDD6, 0x530D, 0xF8D1, + 0x530F, 0xF8D2, 0x5310, 0xDCD3, 0x5315, 0xDDE2, 0x5316, 0xFBF9, 0x5317, 0xDDC1, 0x5319, 0xE3B5, 0x5320, 0xEDDD, 0x5321, 0xCEC4, + 0x5323, 0xCBA1, 0x532A, 0xDDE3, 0x532F, 0xFCDD, 0x5339, 0xF9AF, 0x533F, 0xD2FB, 0x5340, 0xCFA1, 0x5341, 0xE4A8, 0x5343, 0xF4B6, + 0x5344, 0xECFE, 0x5347, 0xE3AE, 0x5348, 0xE7ED, 0x5349, 0xFDC1, 0x534A, 0xDAE2, 0x534D, 0xD8B3, 0x5351, 0xDDE4, 0x5352, 0xF0EF, + 0x5353, 0xF6F1, 0x5354, 0xFAF0, 0x5357, 0xD1F5, 0x535A, 0xDACF, 0x535C, 0xDCD4, 0x535E, 0xDCA6, 0x5360, 0xEFBF, 0x5366, 0xCECF, + 0x5368, 0xE0D9, 0x536F, 0xD9D6, 0x5370, 0xECD4, 0x5371, 0xEACB, 0x5374, 0xCABF, 0x5375, 0xD5B0, 0x5377, 0xCFE9, 0x537D, 0xF1ED, + 0x537F, 0xCCCF, 0x5384, 0xE4F8, 0x5393, 0xE4ED, 0x5398, 0xD7D8, 0x539A, 0xFDA7, 0x539F, 0xEAAB, 0x53A0, 0xF6B2, 0x53A5, 0xCFF0, + 0x53A6, 0xF9BD, 0x53AD, 0xE6F4, 0x53BB, 0xCBDB, 0x53C3, 0xF3D1, 0x53C8, 0xE9D1, 0x53C9, 0xF3A9, 0x53CA, 0xD0E0, 0x53CB, 0xE9D2, + 0x53CD, 0xDAE3, 0x53D4, 0xE2D2, 0x53D6, 0xF6A2, 0x53D7, 0xE1F4, 0x53DB, 0xDAE4, 0x53E1, 0xE7D5, 0x53E2, 0xF5BF, 0x53E3, 0xCFA2, + 0x53E4, 0xCDAF, 0x53E5, 0xCFA3, 0x53E9, 0xCDB0, 0x53EA, 0xF1FE, 0x53EB, 0xD0A3, 0x53EC, 0xE1AF, 0x53ED, 0xF8A3, 0x53EF, 0xCAA6, + 0x53F0, 0xF7BB, 0x53F1, 0xF2EA, 0x53F2, 0xDEC8, 0x53F3, 0xE9D3, 0x53F8, 0xDEC9, 0x5403, 0xFDDE, 0x5404, 0xCAC0, 0x5408, 0xF9EA, + 0x5409, 0xD1CE, 0x540A, 0xEED4, 0x540C, 0xD4D2, 0x540D, 0xD9A3, 0x540E, 0xFDA8, 0x540F, 0xD7D9, 0x5410, 0xF7CE, 0x5411, 0xFABE, + 0x541B, 0xCFD6, 0x541D, 0xD7F0, 0x541F, 0xEBE1, 0x5420, 0xF8C5, 0x5426, 0xDCFA, 0x5429, 0xDDC3, 0x542B, 0xF9DF, 0x5433, 0xE7EF, + 0x5438, 0xFDE5, 0x5439, 0xF6A3, 0x543B, 0xD9FC, 0x543C, 0xFDA9, 0x543E, 0xE7EE, 0x5442, 0xD5E5, 0x5448, 0xEFD0, 0x544A, 0xCDB1, + 0x5451, 0xF7A2, 0x5468, 0xF1B2, 0x546A, 0xF1B1, 0x5471, 0xCDB2, 0x5473, 0xDAAB, 0x5475, 0xCAA7, 0x547B, 0xE3E2, 0x547C, 0xFBBC, + 0x547D, 0xD9A4, 0x5480, 0xEEBA, 0x5486, 0xF8D3, 0x548C, 0xFBFA, 0x548E, 0xCFA4, 0x5490, 0xDCFB, 0x54A4, 0xF6E3, 0x54A8, 0xEDAA, + 0x54AB, 0xF2A1, 0x54AC, 0xCEE1, 0x54B3, 0xFAA6, 0x54B8, 0xF9E0, 0x54BD, 0xECD6, 0x54C0, 0xE4EE, 0x54C1, 0xF9A1, 0x54C4, 0xFBEF, + 0x54C8, 0xF9EB, 0x54C9, 0xEEA3, 0x54E1, 0xEAAC, 0x54E5, 0xCAA8, 0x54E8, 0xF4FA, 0x54ED, 0xCDD6, 0x54EE, 0xFCF6, 0x54F2, 0xF4C9, + 0x54FA, 0xF8D4, 0x5504, 0xF8A6, 0x5506, 0xDECA, 0x5507, 0xF2C6, 0x550E, 0xD7DA, 0x5510, 0xD3D0, 0x551C, 0xD8C5, 0x552F, 0xEAE6, + 0x5531, 0xF3DD, 0x5535, 0xE4DA, 0x553E, 0xF6E4, 0x5544, 0xF6F2, 0x5546, 0xDFC2, 0x554F, 0xD9FD, 0x5553, 0xCCF6, 0x5556, 0xD3BA, + 0x555E, 0xE4AF, 0x5563, 0xF9E1, 0x557C, 0xF0A6, 0x5580, 0xCBD3, 0x5584, 0xE0BC, 0x5586, 0xF4CA, 0x5587, 0xD4FA, 0x5589, 0xFDAA, + 0x558A, 0xF9E2, 0x5598, 0xF4B7, 0x5599, 0xFDC2, 0x559A, 0xFCB0, 0x559C, 0xFDEC, 0x559D, 0xCAE2, 0x55A7, 0xFDBD, 0x55A9, 0xEAE7, + 0x55AA, 0xDFC3, 0x55AB, 0xD1D2, 0x55AC, 0xCEE2, 0x55AE, 0xD3A4, 0x55C5, 0xFDAB, 0x55C7, 0xDFE0, 0x55D4, 0xF2C7, 0x55DA, 0xE7F0, + 0x55DC, 0xD0EE, 0x55DF, 0xF3AA, 0x55E3, 0xDECB, 0x55E4, 0xF6B8, 0x55FD, 0xE1F5, 0x55FE, 0xF1B3, 0x5606, 0xF7A3, 0x5609, 0xCAA9, + 0x5614, 0xCFA5, 0x5617, 0xDFC4, 0x562F, 0xE1B0, 0x5632, 0xF0BF, 0x5634, 0xF6A4, 0x5636, 0xE3B6, 0x5653, 0xFAC6, 0x5668, 0xD0EF, + 0x566B, 0xFDED, 0x5674, 0xDDC4, 0x5686, 0xFCF7, 0x56A5, 0xE6BF, 0x56AC, 0xDEAD, 0x56AE, 0xFABF, 0x56B4, 0xE5F1, 0x56BC, 0xEDC4, + 0x56CA, 0xD2A5, 0x56CD, 0xFDEE, 0x56D1, 0xF5B6, 0x56DA, 0xE1F6, 0x56DB, 0xDECC, 0x56DE, 0xFCDE, 0x56E0, 0xECD7, 0x56F0, 0xCDDD, + 0x56F9, 0xD6B7, 0x56FA, 0xCDB3, 0x5703, 0xF8D5, 0x5704, 0xE5D8, 0x5708, 0xCFEA, 0x570B, 0xCFD0, 0x570D, 0xEACC, 0x5712, 0xEAAE, + 0x5713, 0xEAAD, 0x5716, 0xD3F1, 0x5718, 0xD3A5, 0x571F, 0xF7CF, 0x5728, 0xEEA4, 0x572D, 0xD0A4, 0x5730, 0xF2A2, 0x573B, 0xD0F0, + 0x5740, 0xF2A3, 0x5742, 0xF7F8, 0x5747, 0xD0B3, 0x574A, 0xDBA9, 0x574D, 0xD3BB, 0x574E, 0xCAEC, 0x5750, 0xF1A6, 0x5751, 0xCBD5, + 0x5761, 0xF7E7, 0x5764, 0xCDDE, 0x5766, 0xF7A4, 0x576A, 0xF8C0, 0x576E, 0xD3DD, 0x5770, 0xCCD0, 0x5775, 0xCFA6, 0x577C, 0xF6F3, + 0x5782, 0xE1F7, 0x5788, 0xD3DC, 0x578B, 0xFAFE, 0x5793, 0xFAA7, 0x57A0, 0xEBD9, 0x57A2, 0xCFA7, 0x57A3, 0xEAAF, 0x57C3, 0xE4EF, + 0x57C7, 0xE9B9, 0x57C8, 0xF1D8, 0x57CB, 0xD8D8, 0x57CE, 0xE0F2, 0x57DF, 0xE6B4, 0x57E0, 0xDCFC, 0x57F0, 0xF3F1, 0x57F4, 0xE3D0, + 0x57F7, 0xF2FB, 0x57F9, 0xDBC6, 0x57FA, 0xD0F1, 0x57FC, 0xD0F2, 0x5800, 0xCFDC, 0x5802, 0xD3D1, 0x5805, 0xCCB1, 0x5806, 0xF7D8, + 0x5808, 0xCBA8, 0x5809, 0xEBBC, 0x580A, 0xE4BE, 0x581E, 0xF4DC, 0x5821, 0xDCC2, 0x5824, 0xF0A7, 0x5827, 0xE6C0, 0x582A, 0xCAED, + 0x582F, 0xE8EB, 0x5830, 0xE5E8, 0x5831, 0xDCC3, 0x5834, 0xEDDE, 0x5835, 0xD3F2, 0x583A, 0xCCF7, 0x584A, 0xCED4, 0x584B, 0xE7AB, + 0x584F, 0xCBC3, 0x5851, 0xE1B1, 0x5854, 0xF7B2, 0x5857, 0xD3F3, 0x5858, 0xD3D2, 0x585A, 0xF5C0, 0x585E, 0xDFDD, 0x5861, 0xEEF3, + 0x5862, 0xE7F1, 0x5864, 0xFDB4, 0x5875, 0xF2C8, 0x5879, 0xF3D2, 0x587C, 0xEEF4, 0x587E, 0xE2D3, 0x5883, 0xCCD1, 0x5885, 0xDFEA, + 0x5889, 0xE9BA, 0x5893, 0xD9D7, 0x589C, 0xF5CD, 0x589E, 0xF1F2, 0x589F, 0xFAC7, 0x58A8, 0xD9F8, 0x58A9, 0xD4C2, 0x58AE, 0xF6E5, + 0x58B3, 0xDDC5, 0x58BA, 0xE7F2, 0x58BB, 0xEDDF, 0x58BE, 0xCACB, 0x58C1, 0xDBFA, 0x58C5, 0xE8B5, 0x58C7, 0xD3A6, 0x58CE, 0xFDB5, + 0x58D1, 0xF9C9, 0x58D3, 0xE4E2, 0x58D5, 0xFBBD, 0x58D8, 0xD7A4, 0x58D9, 0xCEC5, 0x58DE, 0xCED5, 0x58DF, 0xD6E6, 0x58E4, 0xE5BD, + 0x58EB, 0xDECD, 0x58EC, 0xECF3, 0x58EF, 0xEDE0, 0x58F9, 0xECEC, 0x58FA, 0xFBBE, 0x58FB, 0xDFEB, 0x58FD, 0xE1F8, 0x590F, 0xF9BE, + 0x5914, 0xD0F3, 0x5915, 0xE0AA, 0x5916, 0xE8E2, 0x5919, 0xE2D4, 0x591A, 0xD2FD, 0x591C, 0xE5A8, 0x5922, 0xD9D3, 0x5927, 0xD3DE, + 0x5929, 0xF4B8, 0x592A, 0xF7BC, 0x592B, 0xDCFD, 0x592D, 0xE8EC, 0x592E, 0xE4E7, 0x5931, 0xE3F7, 0x5937, 0xECA8, 0x593E, 0xFAF1, + 0x5944, 0xE5F2, 0x5947, 0xD0F4, 0x5948, 0xD2AF, 0x5949, 0xDCE5, 0x594E, 0xD0A5, 0x594F, 0xF1B4, 0x5950, 0xFCB1, 0x5951, 0xCCF8, + 0x5954, 0xDDC6, 0x5955, 0xFAD1, 0x5957, 0xF7DF, 0x595A, 0xFAA8, 0x5960, 0xEEF5, 0x5962, 0xDECE, 0x5967, 0xE7F3, 0x596A, 0xF7AC, + 0x596B, 0xEBC4, 0x596C, 0xEDE1, 0x596D, 0xE0AB, 0x596E, 0xDDC7, 0x5973, 0xD2B3, 0x5974, 0xD2BF, 0x5978, 0xCACC, 0x597D, 0xFBBF, + 0x5982, 0xE5FD, 0x5983, 0xDDE5, 0x5984, 0xD8CD, 0x598A, 0xECF4, 0x5993, 0xD0F5, 0x5996, 0xE8ED, 0x5997, 0xD0D2, 0x5999, 0xD9D8, + 0x59A5, 0xF6E6, 0x59A8, 0xDBAA, 0x59AC, 0xF7E0, 0x59B9, 0xD8D9, 0x59BB, 0xF4A3, 0x59BE, 0xF4DD, 0x59C3, 0xEFD1, 0x59C6, 0xD9B5, + 0x59C9, 0xEDAB, 0x59CB, 0xE3B7, 0x59D0, 0xEEBB, 0x59D1, 0xCDB4, 0x59D3, 0xE0F3, 0x59D4, 0xEACD, 0x59D9, 0xECF5, 0x59DA, 0xE8EE, + 0x59DC, 0xCBA9, 0x59DD, 0xF1AF, 0x59E6, 0xCACD, 0x59E8, 0xECA9, 0x59EA, 0xF2EB, 0x59EC, 0xFDEF, 0x59EE, 0xF9F3, 0x59F8, 0xE6C1, + 0x59FB, 0xECD8, 0x59FF, 0xEDAC, 0x5A01, 0xEACE, 0x5A03, 0xE8DF, 0x5A11, 0xDECF, 0x5A18, 0xD2A6, 0x5A1B, 0xE7F4, 0x5A1C, 0xD1D6, + 0x5A1F, 0xE6C2, 0x5A20, 0xE3E3, 0x5A25, 0xE4B0, 0x5A29, 0xD8B4, 0x5A36, 0xF6A5, 0x5A3C, 0xF3DE, 0x5A41, 0xD7A5, 0x5A46, 0xF7E8, + 0x5A49, 0xE8C6, 0x5A5A, 0xFBE6, 0x5A62, 0xDDE6, 0x5A66, 0xDCFE, 0x5A92, 0xD8DA, 0x5A9A, 0xDAAC, 0x5A9B, 0xEAB0, 0x5AA4, 0xE3B8, + 0x5AC1, 0xCAAA, 0x5AC2, 0xE1F9, 0x5AC4, 0xEAB1, 0x5AC9, 0xF2EC, 0x5ACC, 0xFAEE, 0x5AE1, 0xEED5, 0x5AE6, 0xF9F4, 0x5AE9, 0xD2EC, + 0x5B05, 0xFBFB, 0x5B09, 0xFDF0, 0x5B0B, 0xE0BD, 0x5B0C, 0xCEE3, 0x5B16, 0xF8C6, 0x5B2A, 0xDEAE, 0x5B40, 0xDFC5, 0x5B43, 0xE5BE, + 0x5B50, 0xEDAD, 0x5B51, 0xFAEA, 0x5B54, 0xCDEE, 0x5B55, 0xEDA6, 0x5B57, 0xEDAE, 0x5B58, 0xF0ED, 0x5B5A, 0xDDA1, 0x5B5C, 0xEDAF, + 0x5B5D, 0xFCF8, 0x5B5F, 0xD8EB, 0x5B63, 0xCCF9, 0x5B64, 0xCDB5, 0x5B69, 0xFAA9, 0x5B6B, 0xE1DD, 0x5B70, 0xE2D5, 0x5B71, 0xEDCF, + 0x5B75, 0xDDA2, 0x5B78, 0xF9CA, 0x5B7A, 0xEAE8, 0x5B7C, 0xE5ED, 0x5B85, 0xD3EB, 0x5B87, 0xE9D4, 0x5B88, 0xE1FA, 0x5B89, 0xE4CC, + 0x5B8B, 0xE1E4, 0x5B8C, 0xE8C7, 0x5B8F, 0xCEDB, 0x5B93, 0xDCD5, 0x5B95, 0xF7B5, 0x5B96, 0xFCF3, 0x5B97, 0xF0F3, 0x5B98, 0xCEAF, + 0x5B99, 0xF1B5, 0x5B9A, 0xEFD2, 0x5B9B, 0xE8C8, 0x5B9C, 0xEBF1, 0x5BA2, 0xCBD4, 0x5BA3, 0xE0BE, 0x5BA4, 0xE3F8, 0x5BA5, 0xEAE9, + 0x5BA6, 0xFCB2, 0x5BAC, 0xE0F4, 0x5BAE, 0xCFE0, 0x5BB0, 0xEEA5, 0x5BB3, 0xFAAA, 0x5BB4, 0xE6C3, 0x5BB5, 0xE1B2, 0x5BB6, 0xCAAB, + 0x5BB8, 0xE3E4, 0x5BB9, 0xE9BB, 0x5BBF, 0xE2D6, 0x5BC0, 0xF3F2, 0x5BC2, 0xEED6, 0x5BC3, 0xEAB2, 0x5BC4, 0xD0F6, 0x5BC5, 0xECD9, + 0x5BC6, 0xDACB, 0x5BC7, 0xCFA8, 0x5BCC, 0xDDA3, 0x5BD0, 0xD8DB, 0x5BD2, 0xF9CE, 0x5BD3, 0xE9D5, 0x5BD4, 0xE3D1, 0x5BD7, 0xD2BC, + 0x5BDE, 0xD8AC, 0x5BDF, 0xF3CC, 0x5BE1, 0xCDFB, 0x5BE2, 0xF6D6, 0x5BE4, 0xE7F5, 0x5BE5, 0xE8EF, 0x5BE6, 0xE3F9, 0x5BE7, 0xD2BB, + 0x5BE8, 0xF3F3, 0x5BE9, 0xE3FB, 0x5BEB, 0xDED0, 0x5BEC, 0xCEB0, 0x5BEE, 0xD6F7, 0x5BEF, 0xF1D9, 0x5BF5, 0xF5C1, 0x5BF6, 0xDCC4, + 0x5BF8, 0xF5BB, 0x5BFA, 0xDED1, 0x5C01, 0xDCE6, 0x5C04, 0xDED2, 0x5C07, 0xEDE2, 0x5C08, 0xEEF6, 0x5C09, 0xEACF, 0x5C0A, 0xF0EE, + 0x5C0B, 0xE3FC, 0x5C0D, 0xD3DF, 0x5C0E, 0xD3F4, 0x5C0F, 0xE1B3, 0x5C11, 0xE1B4, 0x5C16, 0xF4D3, 0x5C19, 0xDFC6, 0x5C24, 0xE9D6, + 0x5C28, 0xDBAB, 0x5C31, 0xF6A6, 0x5C38, 0xE3B9, 0x5C39, 0xEBC5, 0x5C3A, 0xF4A9, 0x5C3B, 0xCDB6, 0x5C3C, 0xD2F9, 0x5C3E, 0xDAAD, + 0x5C3F, 0xD2E3, 0x5C40, 0xCFD1, 0x5C45, 0xCBDC, 0x5C46, 0xCCFA, 0x5C48, 0xCFDD, 0x5C4B, 0xE8A9, 0x5C4D, 0xE3BB, 0x5C4E, 0xE3BA, + 0x5C51, 0xE0DA, 0x5C55, 0xEEF7, 0x5C5B, 0xDCB3, 0x5C60, 0xD3F5, 0x5C62, 0xD7A6, 0x5C64, 0xF6B5, 0x5C65, 0xD7DB, 0x5C6C, 0xE1D5, + 0x5C6F, 0xD4EA, 0x5C71, 0xDFA3, 0x5C79, 0xFDDF, 0x5C90, 0xD0F7, 0x5C91, 0xEDD4, 0x5CA1, 0xCBAA, 0x5CA9, 0xE4DB, 0x5CAB, 0xE1FB, + 0x5CAC, 0xCBA2, 0x5CB1, 0xD3E0, 0x5CB3, 0xE4BF, 0x5CB5, 0xFBC0, 0x5CB7, 0xDABE, 0x5CB8, 0xE4CD, 0x5CBA, 0xD6B9, 0x5CBE, 0xEFC0, + 0x5CC0, 0xE1FC, 0x5CD9, 0xF6B9, 0x5CE0, 0xDFC7, 0x5CE8, 0xE4B1, 0x5CEF, 0xDCE7, 0x5CF0, 0xDCE8, 0x5CF4, 0xFAD6, 0x5CF6, 0xD3F6, + 0x5CFB, 0xF1DA, 0x5CFD, 0xFAF2, 0x5D07, 0xE2FD, 0x5D0D, 0xD5CF, 0x5D0E, 0xD0F8, 0x5D11, 0xCDDF, 0x5D14, 0xF5CB, 0x5D16, 0xE4F0, + 0x5D17, 0xCBAB, 0x5D19, 0xD7C4, 0x5D27, 0xE2FE, 0x5D29, 0xDDDA, 0x5D4B, 0xDAAE, 0x5D4C, 0xCAEE, 0x5D50, 0xD5B9, 0x5D69, 0xE3A1, + 0x5D6C, 0xE8E3, 0x5D6F, 0xF3AB, 0x5D87, 0xCFA9, 0x5D8B, 0xD3F7, 0x5D9D, 0xD4F1, 0x5DA0, 0xCEE4, 0x5DA2, 0xE8F2, 0x5DAA, 0xE5F5, + 0x5DB8, 0xE7AE, 0x5DBA, 0xD6BA, 0x5DBC, 0xDFEC, 0x5DBD, 0xE4C0, 0x5DCD, 0xE8E4, 0x5DD2, 0xD8B5, 0x5DD6, 0xE4DC, 0x5DDD, 0xF4B9, + 0x5DDE, 0xF1B6, 0x5DE1, 0xE2DE, 0x5DE2, 0xE1B5, 0x5DE5, 0xCDEF, 0x5DE6, 0xF1A7, 0x5DE7, 0xCEE5, 0x5DE8, 0xCBDD, 0x5DEB, 0xD9E3, + 0x5DEE, 0xF3AC, 0x5DF1, 0xD0F9, 0x5DF2, 0xECAB, 0x5DF3, 0xDED3, 0x5DF4, 0xF7E9, 0x5DF7, 0xF9F5, 0x5DFD, 0xE1DE, 0x5DFE, 0xCBEE, + 0x5E02, 0xE3BC, 0x5E03, 0xF8D6, 0x5E06, 0xDBEE, 0x5E0C, 0xFDF1, 0x5E11, 0xF7B6, 0x5E16, 0xF4DE, 0x5E19, 0xF2ED, 0x5E1B, 0xDBD9, + 0x5E1D, 0xF0A8, 0x5E25, 0xE1FD, 0x5E2B, 0xDED4, 0x5E2D, 0xE0AC, 0x5E33, 0xEDE3, 0x5E36, 0xD3E1, 0x5E38, 0xDFC8, 0x5E3D, 0xD9B6, + 0x5E3F, 0xFDAC, 0x5E40, 0xEFD3, 0x5E44, 0xE4C1, 0x5E45, 0xF8EB, 0x5E47, 0xDBAC, 0x5E4C, 0xFCC6, 0x5E55, 0xD8AD, 0x5E5F, 0xF6BA, + 0x5E61, 0xDBDF, 0x5E62, 0xD3D3, 0x5E63, 0xF8C7, 0x5E72, 0xCACE, 0x5E73, 0xF8C1, 0x5E74, 0xD2B4, 0x5E77, 0xDCB4, 0x5E78, 0xFAB9, + 0x5E79, 0xCACF, 0x5E7B, 0xFCB3, 0x5E7C, 0xEAEA, 0x5E7D, 0xEAEB, 0x5E7E, 0xD0FA, 0x5E84, 0xEDE4, 0x5E87, 0xDDE7, 0x5E8A, 0xDFC9, + 0x5E8F, 0xDFED, 0x5E95, 0xEEBC, 0x5E97, 0xEFC1, 0x5E9A, 0xCCD2, 0x5E9C, 0xDDA4, 0x5EA0, 0xDFCA, 0x5EA6, 0xD3F8, 0x5EA7, 0xF1A8, + 0x5EAB, 0xCDB7, 0x5EAD, 0xEFD4, 0x5EB5, 0xE4DD, 0x5EB6, 0xDFEE, 0x5EB7, 0xCBAC, 0x5EB8, 0xE9BC, 0x5EBE, 0xEAEC, 0x5EC2, 0xDFCB, + 0x5EC8, 0xF9BF, 0x5EC9, 0xD6AF, 0x5ECA, 0xD5C6, 0x5ED0, 0xCFAA, 0x5ED3, 0xCEA9, 0x5ED6, 0xD6F8, 0x5EDA, 0xF1B7, 0x5EDB, 0xEEF8, + 0x5EDF, 0xD9D9, 0x5EE0, 0xF3DF, 0x5EE2, 0xF8C8, 0x5EE3, 0xCEC6, 0x5EEC, 0xD5E6, 0x5EF3, 0xF4E6, 0x5EF6, 0xE6C5, 0x5EF7, 0xEFD5, + 0x5EFA, 0xCBEF, 0x5EFB, 0xFCDF, 0x5F01, 0xDCA7, 0x5F04, 0xD6E7, 0x5F0A, 0xF8C9, 0x5F0F, 0xE3D2, 0x5F11, 0xE3BD, 0x5F13, 0xCFE1, + 0x5F14, 0xF0C0, 0x5F15, 0xECDA, 0x5F17, 0xDDD7, 0x5F18, 0xFBF0, 0x5F1B, 0xECAC, 0x5F1F, 0xF0A9, 0x5F26, 0xFAD7, 0x5F27, 0xFBC1, + 0x5F29, 0xD2C0, 0x5F31, 0xE5B0, 0x5F35, 0xEDE5, 0x5F3A, 0xCBAD, 0x5F3C, 0xF9B0, 0x5F48, 0xF7A5, 0x5F4A, 0xCBAE, 0x5F4C, 0xDAAF, + 0x5F4E, 0xD8B6, 0x5F56, 0xD3A7, 0x5F57, 0xFBB2, 0x5F59, 0xFDC4, 0x5F5B, 0xECAD, 0x5F62, 0xFBA1, 0x5F66, 0xE5E9, 0x5F67, 0xE9EE, + 0x5F69, 0xF3F4, 0x5F6A, 0xF8F3, 0x5F6B, 0xF0C1, 0x5F6C, 0xDEAF, 0x5F6D, 0xF8B0, 0x5F70, 0xF3E0, 0x5F71, 0xE7AF, 0x5F77, 0xDBAD, + 0x5F79, 0xE6B5, 0x5F7C, 0xF9A8, 0x5F7F, 0xDDD8, 0x5F80, 0xE8D9, 0x5F81, 0xEFD6, 0x5F85, 0xD3E2, 0x5F87, 0xE2DF, 0x5F8A, 0xFCE0, + 0x5F8B, 0xD7C8, 0x5F8C, 0xFDAD, 0x5F90, 0xDFEF, 0x5F91, 0xCCD3, 0x5F92, 0xD3F9, 0x5F97, 0xD4F0, 0x5F98, 0xDBC7, 0x5F99, 0xDED5, + 0x5F9E, 0xF0F4, 0x5FA0, 0xD5D0, 0x5FA1, 0xE5D9, 0x5FA8, 0xFCC7, 0x5FA9, 0xDCD6, 0x5FAA, 0xE2E0, 0x5FAE, 0xDAB0, 0x5FB5, 0xF3A3, + 0x5FB7, 0xD3EC, 0x5FB9, 0xF4CB, 0x5FBD, 0xFDC5, 0x5FC3, 0xE3FD, 0x5FC5, 0xF9B1, 0x5FCC, 0xD0FB, 0x5FCD, 0xECDB, 0x5FD6, 0xF5BC, + 0x5FD7, 0xF2A4, 0x5FD8, 0xD8CE, 0x5FD9, 0xD8CF, 0x5FE0, 0xF5F7, 0x5FEB, 0xF6E1, 0x5FF5, 0xD2B7, 0x5FFD, 0xFBEC, 0x5FFF, 0xDDC8, + 0x600F, 0xE4E8, 0x6012, 0xD2C1, 0x6016, 0xF8D7, 0x601C, 0xD6BB, 0x601D, 0xDED6, 0x6020, 0xF7BD, 0x6021, 0xECAE, 0x6025, 0xD0E1, + 0x6027, 0xE0F5, 0x6028, 0xEAB3, 0x602A, 0xCED6, 0x602F, 0xCCA5, 0x6041, 0xECF6, 0x6042, 0xE2E1, 0x6043, 0xE3BE, 0x604D, 0xFCC8, + 0x6050, 0xCDF0, 0x6052, 0xF9F6, 0x6055, 0xDFF0, 0x6059, 0xE5BF, 0x605D, 0xCEBF, 0x6062, 0xFCE1, 0x6063, 0xEDB0, 0x6064, 0xFDD1, + 0x6065, 0xF6BB, 0x6068, 0xF9CF, 0x6069, 0xEBDA, 0x606A, 0xCAC1, 0x606C, 0xD2B8, 0x606D, 0xCDF1, 0x606F, 0xE3D3, 0x6070, 0xFDE6, + 0x6085, 0xE6ED, 0x6089, 0xE3FA, 0x608C, 0xF0AA, 0x608D, 0xF9D0, 0x6094, 0xFCE2, 0x6096, 0xF8A7, 0x609A, 0xE1E5, 0x609B, 0xEEF9, + 0x609F, 0xE7F6, 0x60A0, 0xEAED, 0x60A3, 0xFCB4, 0x60A4, 0xF5C2, 0x60A7, 0xD7DC, 0x60B0, 0xF0F5, 0x60B2, 0xDDE8, 0x60B3, 0xD3ED, + 0x60B4, 0xF5FC, 0x60B6, 0xDABF, 0x60B8, 0xCCFB, 0x60BC, 0xD3FA, 0x60BD, 0xF4A4, 0x60C5, 0xEFD7, 0x60C7, 0xD4C3, 0x60D1, 0xFBE3, + 0x60DA, 0xFBED, 0x60DC, 0xE0AD, 0x60DF, 0xEAEE, 0x60E0, 0xFBB3, 0x60E1, 0xE4C2, 0x60F0, 0xF6E7, 0x60F1, 0xD2DD, 0x60F3, 0xDFCC, + 0x60F6, 0xFCC9, 0x60F9, 0xE5A9, 0x60FA, 0xE0F6, 0x60FB, 0xF6B3, 0x6101, 0xE1FE, 0x6106, 0xCBF0, 0x6108, 0xEAEF, 0x6109, 0xEAF0, + 0x610D, 0xDAC0, 0x610E, 0xF8B4, 0x610F, 0xEBF2, 0x6115, 0xE4C3, 0x611A, 0xE9D7, 0x611B, 0xE4F1, 0x611F, 0xCAEF, 0x6127, 0xCED7, + 0x6130, 0xFCCA, 0x6134, 0xF3E1, 0x6137, 0xCBC4, 0x613C, 0xE3E5, 0x613E, 0xCBC5, 0x613F, 0xEAB4, 0x6142, 0xE9BD, 0x6144, 0xD7C9, + 0x6147, 0xEBDB, 0x6148, 0xEDB1, 0x614A, 0xCCC3, 0x614B, 0xF7BE, 0x614C, 0xFCCB, 0x6153, 0xF8F4, 0x6155, 0xD9B7, 0x6158, 0xF3D3, + 0x6159, 0xF3D4, 0x615D, 0xF7E4, 0x615F, 0xF7D1, 0x6162, 0xD8B7, 0x6163, 0xCEB1, 0x6164, 0xCAC2, 0x6167, 0xFBB4, 0x6168, 0xCBC6, + 0x616B, 0xF0F6, 0x616E, 0xD5E7, 0x6170, 0xEAD0, 0x6176, 0xCCD4, 0x6177, 0xCBAF, 0x617D, 0xF4AA, 0x617E, 0xE9AF, 0x6181, 0xF5C3, + 0x6182, 0xE9D8, 0x618A, 0xDDE9, 0x618E, 0xF1F3, 0x6190, 0xD5FB, 0x6191, 0xDEBB, 0x6194, 0xF4FB, 0x6198, 0xFDF3, 0x6199, 0xFDF2, + 0x619A, 0xF7A6, 0x61A4, 0xDDC9, 0x61A7, 0xD4D3, 0x61A9, 0xCCA8, 0x61AB, 0xDAC1, 0x61AC, 0xCCD5, 0x61AE, 0xD9E4, 0x61B2, 0xFACA, + 0x61B6, 0xE5E3, 0x61BA, 0xD3BC, 0x61BE, 0xCAF0, 0x61C3, 0xD0C4, 0x61C7, 0xCAD0, 0x61C8, 0xFAAB, 0x61C9, 0xEBEB, 0x61CA, 0xE7F8, + 0x61CB, 0xD9E5, 0x61E6, 0xD1D7, 0x61F2, 0xF3A4, 0x61F6, 0xD4FB, 0x61F7, 0xFCE3, 0x61F8, 0xFAD8, 0x61FA, 0xF3D5, 0x61FC, 0xCFAB, + 0x61FF, 0xEBF3, 0x6200, 0xD5FC, 0x6207, 0xD3D4, 0x6208, 0xCDFC, 0x620A, 0xD9E6, 0x620C, 0xE2F9, 0x620D, 0xE2A1, 0x620E, 0xEBD4, + 0x6210, 0xE0F7, 0x6211, 0xE4B2, 0x6212, 0xCCFC, 0x6216, 0xFBE4, 0x621A, 0xF4AB, 0x621F, 0xD0BD, 0x6221, 0xCAF1, 0x622A, 0xEFB8, + 0x622E, 0xD7C0, 0x6230, 0xEEFA, 0x6231, 0xFDF4, 0x6234, 0xD3E3, 0x6236, 0xFBC2, 0x623E, 0xD5E8, 0x623F, 0xDBAE, 0x6240, 0xE1B6, + 0x6241, 0xF8B7, 0x6247, 0xE0BF, 0x6248, 0xFBC3, 0x6249, 0xDDEA, 0x624B, 0xE2A2, 0x624D, 0xEEA6, 0x6253, 0xF6E8, 0x6258, 0xF6F5, + 0x626E, 0xDDCA, 0x6271, 0xD0E2, 0x6276, 0xDDA6, 0x6279, 0xDDEB, 0x627C, 0xE4F9, 0x627F, 0xE3AF, 0x6280, 0xD0FC, 0x6284, 0xF4FC, + 0x6289, 0xCCBC, 0x628A, 0xF7EA, 0x6291, 0xE5E4, 0x6292, 0xDFF1, 0x6295, 0xF7E1, 0x6297, 0xF9F7, 0x6298, 0xEFB9, 0x629B, 0xF8D8, + 0x62AB, 0xF9A9, 0x62B1, 0xF8D9, 0x62B5, 0xEEBD, 0x62B9, 0xD8C6, 0x62BC, 0xE4E3, 0x62BD, 0xF5CE, 0x62C2, 0xDDD9, 0x62C7, 0xD9E7, + 0x62C8, 0xD2B9, 0x62C9, 0xD5C3, 0x62CC, 0xDAE5, 0x62CD, 0xDAD0, 0x62CF, 0xD1D9, 0x62D0, 0xCED8, 0x62D2, 0xCBDE, 0x62D3, 0xF4AC, + 0x62D4, 0xDAFB, 0x62D6, 0xF6E9, 0x62D7, 0xE8F3, 0x62D8, 0xCFAC, 0x62D9, 0xF0F0, 0x62DB, 0xF4FD, 0x62DC, 0xDBC8, 0x62EC, 0xCEC0, + 0x62ED, 0xE3D4, 0x62EE, 0xD1CF, 0x62EF, 0xF1F5, 0x62F1, 0xCDF2, 0x62F3, 0xCFEB, 0x62F7, 0xCDB8, 0x62FE, 0xE3A6, 0x62FF, 0xD1DA, + 0x6301, 0xF2A5, 0x6307, 0xF2A6, 0x6309, 0xE4CE, 0x6311, 0xD3FB, 0x632B, 0xF1A9, 0x632F, 0xF2C9, 0x633A, 0xEFD8, 0x633B, 0xE6C9, + 0x633D, 0xD8B8, 0x633E, 0xFAF3, 0x6349, 0xF3B5, 0x634C, 0xF8A4, 0x634F, 0xD1F3, 0x6350, 0xE6C8, 0x6355, 0xF8DA, 0x6367, 0xDCE9, + 0x6368, 0xDED7, 0x636E, 0xCBDF, 0x6372, 0xCFEC, 0x6377, 0xF4DF, 0x637A, 0xD1F4, 0x637B, 0xD2BA, 0x637F, 0xDFF2, 0x6383, 0xE1B7, + 0x6388, 0xE2A3, 0x6389, 0xD3FC, 0x638C, 0xEDE6, 0x6392, 0xDBC9, 0x6396, 0xE4FA, 0x6398, 0xCFDE, 0x639B, 0xCED0, 0x63A0, 0xD5D3, + 0x63A1, 0xF3F5, 0x63A2, 0xF7AE, 0x63A5, 0xEFC8, 0x63A7, 0xCDF3, 0x63A8, 0xF5CF, 0x63A9, 0xE5F3, 0x63AA, 0xF0C2, 0x63C0, 0xCAD1, + 0x63C4, 0xEAF1, 0x63C6, 0xD0A6, 0x63CF, 0xD9DA, 0x63D0, 0xF0AB, 0x63D6, 0xEBE7, 0x63DA, 0xE5C0, 0x63DB, 0xFCB5, 0x63E1, 0xE4C4, + 0x63ED, 0xCCA9, 0x63EE, 0xFDC6, 0x63F4, 0xEAB5, 0x63F6, 0xE5AA, 0x63F7, 0xDFBA, 0x640D, 0xE1DF, 0x640F, 0xDAD1, 0x6414, 0xE1B8, + 0x6416, 0xE8F4, 0x6417, 0xD3FD, 0x641C, 0xE2A4, 0x6422, 0xF2CA, 0x642C, 0xDAE6, 0x642D, 0xF7B3, 0x643A, 0xFDCD, 0x643E, 0xF3B6, + 0x6458, 0xEED7, 0x6460, 0xF5C4, 0x6469, 0xD8A4, 0x646F, 0xF2A7, 0x6478, 0xD9B8, 0x6479, 0xD9B9, 0x647A, 0xEFC9, 0x6488, 0xD6CE, + 0x6491, 0xF7CB, 0x6492, 0xDFAE, 0x6493, 0xE8F5, 0x649A, 0xD2B5, 0x649E, 0xD3D5, 0x64A4, 0xF4CC, 0x64A5, 0xDAFC, 0x64AB, 0xD9E8, + 0x64AD, 0xF7EB, 0x64AE, 0xF5C9, 0x64B0, 0xF3BC, 0x64B2, 0xDAD2, 0x64BB, 0xD3B5, 0x64C1, 0xE8B6, 0x64C4, 0xD6CF, 0x64C5, 0xF4BA, + 0x64C7, 0xF7C9, 0x64CA, 0xCCAA, 0x64CD, 0xF0C3, 0x64CE, 0xCCD6, 0x64D2, 0xD0D3, 0x64D4, 0xD3BD, 0x64D8, 0xDBFB, 0x64DA, 0xCBE0, + 0x64E1, 0xD3E4, 0x64E2, 0xF6F7, 0x64E5, 0xD5BA, 0x64E6, 0xF3CD, 0x64E7, 0xCBE1, 0x64EC, 0xEBF4, 0x64F2, 0xF4AD, 0x64F4, 0xFCAA, + 0x64FA, 0xF7EC, 0x64FE, 0xE8F6, 0x6500, 0xDAE7, 0x6504, 0xF7CC, 0x6518, 0xE5C1, 0x651D, 0xE0EE, 0x6523, 0xD5FD, 0x652A, 0xCEE6, + 0x652B, 0xFCAB, 0x652C, 0xD5BB, 0x652F, 0xF2A8, 0x6536, 0xE2A5, 0x6537, 0xCDB9, 0x6538, 0xEAF2, 0x6539, 0xCBC7, 0x653B, 0xCDF4, + 0x653E, 0xDBAF, 0x653F, 0xEFD9, 0x6545, 0xCDBA, 0x6548, 0xFCF9, 0x654D, 0xDFF3, 0x654E, 0xCEE7, 0x654F, 0xDAC2, 0x6551, 0xCFAD, + 0x6556, 0xE7F9, 0x6557, 0xF8A8, 0x655E, 0xF3E2, 0x6562, 0xCAF2, 0x6563, 0xDFA4, 0x6566, 0xD4C4, 0x656C, 0xCCD7, 0x656D, 0xE5C2, + 0x6572, 0xCDBB, 0x6574, 0xEFDA, 0x6575, 0xEED8, 0x6577, 0xDDA7, 0x6578, 0xE2A6, 0x657E, 0xE0C0, 0x6582, 0xD6B0, 0x6583, 0xF8CA, + 0x6585, 0xFCFA, 0x6587, 0xD9FE, 0x658C, 0xDEB0, 0x6590, 0xDDEC, 0x6591, 0xDAE8, 0x6597, 0xD4E0, 0x6599, 0xD6F9, 0x659B, 0xCDD7, + 0x659C, 0xDED8, 0x659F, 0xF2F8, 0x65A1, 0xE4D6, 0x65A4, 0xD0C5, 0x65A5, 0xF4AE, 0x65A7, 0xDDA8, 0x65AB, 0xEDC5, 0x65AC, 0xF3D6, + 0x65AF, 0xDED9, 0x65B0, 0xE3E6, 0x65B7, 0xD3A8, 0x65B9, 0xDBB0, 0x65BC, 0xE5DA, 0x65BD, 0xE3BF, 0x65C1, 0xDBB1, 0x65C5, 0xD5E9, + 0x65CB, 0xE0C1, 0x65CC, 0xEFDB, 0x65CF, 0xF0E9, 0x65D2, 0xD7B2, 0x65D7, 0xD0FD, 0x65E0, 0xD9E9, 0x65E3, 0xD0FE, 0x65E5, 0xECED, + 0x65E6, 0xD3A9, 0x65E8, 0xF2A9, 0x65E9, 0xF0C4, 0x65EC, 0xE2E2, 0x65ED, 0xE9EF, 0x65F1, 0xF9D1, 0x65F4, 0xE9D9, 0x65FA, 0xE8DA, + 0x65FB, 0xDAC3, 0x65FC, 0xDAC4, 0x65FD, 0xD4C5, 0x65FF, 0xE7FA, 0x6606, 0xCDE0, 0x6607, 0xE3B0, 0x6609, 0xDBB2, 0x660A, 0xFBC4, + 0x660C, 0xF3E3, 0x660E, 0xD9A5, 0x660F, 0xFBE7, 0x6610, 0xDDCB, 0x6611, 0xD0D4, 0x6613, 0xE6B6, 0x6614, 0xE0AE, 0x6615, 0xFDDA, + 0x661E, 0xDCB5, 0x661F, 0xE0F8, 0x6620, 0xE7B1, 0x6625, 0xF5F0, 0x6627, 0xD8DC, 0x6628, 0xEDC6, 0x662D, 0xE1B9, 0x662F, 0xE3C0, + 0x6630, 0xF9C0, 0x6631, 0xE9F0, 0x6634, 0xD9DB, 0x6636, 0xF3E4, 0x663A, 0xDCB6, 0x663B, 0xE4E9, 0x6641, 0xF0C5, 0x6642, 0xE3C1, + 0x6643, 0xFCCC, 0x6644, 0xFCCD, 0x6649, 0xF2CB, 0x664B, 0xF2CC, 0x664F, 0xE4CF, 0x6659, 0xF1DB, 0x665B, 0xFAD9, 0x665D, 0xF1B8, + 0x665E, 0xFDF5, 0x665F, 0xE0F9, 0x6664, 0xE7FB, 0x6665, 0xFCB7, 0x6666, 0xFCE4, 0x6667, 0xFBC5, 0x6668, 0xE3E7, 0x6669, 0xD8B9, + 0x666B, 0xF6F8, 0x666E, 0xDCC5, 0x666F, 0xCCD8, 0x6673, 0xE0AF, 0x6674, 0xF4E7, 0x6676, 0xEFDC, 0x6677, 0xCFFC, 0x6678, 0xEFDD, + 0x667A, 0xF2AA, 0x6684, 0xFDBE, 0x6687, 0xCAAC, 0x6688, 0xFDBB, 0x6689, 0xFDC7, 0x668E, 0xE7B2, 0x6690, 0xEAD1, 0x6691, 0xDFF4, + 0x6696, 0xD1EC, 0x6697, 0xE4DE, 0x6698, 0xE5C3, 0x669D, 0xD9A6, 0x66A0, 0xCDBC, 0x66A2, 0xF3E5, 0x66AB, 0xEDD5, 0x66AE, 0xD9BA, + 0x66B2, 0xEDE7, 0x66B3, 0xFBB5, 0x66B4, 0xF8EC, 0x66B9, 0xE0E7, 0x66BB, 0xCCD9, 0x66BE, 0xD4C6, 0x66C4, 0xE7A5, 0x66C6, 0xD5F5, + 0x66C7, 0xD3BE, 0x66C9, 0xFCFB, 0x66D6, 0xE4F2, 0x66D9, 0xDFF5, 0x66DC, 0xE8F8, 0x66DD, 0xF8ED, 0x66E0, 0xCEC7, 0x66E6, 0xFDF6, + 0x66F0, 0xE8D8, 0x66F2, 0xCDD8, 0x66F3, 0xE7D6, 0x66F4, 0xCCDA, 0x66F7, 0xCAE3, 0x66F8, 0xDFF6, 0x66F9, 0xF0C7, 0x66FA, 0xF0C6, + 0x66FC, 0xD8BA, 0x66FE, 0xF1F4, 0x66FF, 0xF4F0, 0x6700, 0xF5CC, 0x6703, 0xFCE5, 0x6708, 0xEAC5, 0x6709, 0xEAF3, 0x670B, 0xDDDB, + 0x670D, 0xDCD7, 0x6714, 0xDEFD, 0x6715, 0xF2F9, 0x6717, 0xD5C7, 0x671B, 0xD8D0, 0x671D, 0xF0C8, 0x671E, 0xD1A1, 0x671F, 0xD1A2, + 0x6726, 0xD9D4, 0x6727, 0xD6E8, 0x6728, 0xD9CA, 0x672A, 0xDAB1, 0x672B, 0xD8C7, 0x672C, 0xDCE2, 0x672D, 0xF3CE, 0x672E, 0xF5F4, + 0x6731, 0xF1B9, 0x6734, 0xDAD3, 0x6736, 0xF6EA, 0x673A, 0xCFF5, 0x673D, 0xFDAE, 0x6746, 0xCAD2, 0x6749, 0xDFB4, 0x674E, 0xD7DD, + 0x674F, 0xFABA, 0x6750, 0xEEA7, 0x6751, 0xF5BD, 0x6753, 0xF8F5, 0x6756, 0xEDE8, 0x675C, 0xD4E1, 0x675E, 0xD1A3, 0x675F, 0xE1D6, + 0x676D, 0xF9F8, 0x676F, 0xDBCA, 0x6770, 0xCBF9, 0x6771, 0xD4D4, 0x6773, 0xD9DC, 0x6775, 0xEEBE, 0x6777, 0xF7ED, 0x677B, 0xD2EE, + 0x677E, 0xE1E6, 0x677F, 0xF7F9, 0x6787, 0xDDED, 0x6789, 0xE8DB, 0x678B, 0xDBB3, 0x678F, 0xD1F7, 0x6790, 0xE0B0, 0x6793, 0xD4E2, + 0x6795, 0xF6D7, 0x6797, 0xD7F9, 0x679A, 0xD8DD, 0x679C, 0xCDFD, 0x679D, 0xF2AB, 0x67AF, 0xCDBD, 0x67B0, 0xF8C2, 0x67B3, 0xF2AC, + 0x67B6, 0xCAAD, 0x67B7, 0xCAAE, 0x67B8, 0xCFAE, 0x67BE, 0xE3C2, 0x67C4, 0xDCB7, 0x67CF, 0xDBDA, 0x67D0, 0xD9BB, 0x67D1, 0xCAF3, + 0x67D2, 0xF6D3, 0x67D3, 0xE6F8, 0x67D4, 0xEAF5, 0x67DA, 0xEAF6, 0x67DD, 0xF6F9, 0x67E9, 0xCFAF, 0x67EC, 0xCAD3, 0x67EF, 0xCAAF, + 0x67F0, 0xD2B0, 0x67F1, 0xF1BA, 0x67F3, 0xD7B3, 0x67F4, 0xE3C3, 0x67F5, 0xF3FD, 0x67F6, 0xDEDA, 0x67FB, 0xDEDB, 0x67FE, 0xEFDE, + 0x6812, 0xE2E3, 0x6813, 0xEEFB, 0x6816, 0xDFF7, 0x6817, 0xD7CA, 0x6821, 0xCEE8, 0x6822, 0xDBDB, 0x682A, 0xF1BB, 0x682F, 0xE9F1, + 0x6838, 0xFAB7, 0x6839, 0xD0C6, 0x683C, 0xCCAB, 0x683D, 0xEEA8, 0x6840, 0xCBFA, 0x6841, 0xF9F9, 0x6842, 0xCCFD, 0x6843, 0xD3FE, + 0x6848, 0xE4D0, 0x684E, 0xF2EE, 0x6850, 0xD4D5, 0x6851, 0xDFCD, 0x6853, 0xFCB8, 0x6854, 0xD1D0, 0x686D, 0xF2CD, 0x6876, 0xF7D2, + 0x687F, 0xCAD4, 0x6881, 0xD5D9, 0x6885, 0xD8DE, 0x688F, 0xCDD9, 0x6893, 0xEEA9, 0x6894, 0xF6BC, 0x6897, 0xCCDB, 0x689D, 0xF0C9, + 0x689F, 0xFCFC, 0x68A1, 0xE8C9, 0x68A2, 0xF4FE, 0x68A7, 0xE7FC, 0x68A8, 0xD7DE, 0x68AD, 0xDEDC, 0x68AF, 0xF0AC, 0x68B0, 0xCCFE, + 0x68B1, 0xCDE1, 0x68B3, 0xE1BA, 0x68B5, 0xDBEF, 0x68B6, 0xDAB2, 0x68C4, 0xD1A5, 0x68C5, 0xDCB8, 0x68C9, 0xD8F6, 0x68CB, 0xD1A4, + 0x68CD, 0xCDE2, 0x68D2, 0xDCEA, 0x68D5, 0xF0F7, 0x68D7, 0xF0CA, 0x68D8, 0xD0BE, 0x68DA, 0xDDDC, 0x68DF, 0xD4D6, 0x68E0, 0xD3D6, + 0x68E7, 0xEDD0, 0x68E8, 0xCDA1, 0x68EE, 0xDFB5, 0x68F2, 0xDFF8, 0x68F9, 0xD4A1, 0x68FA, 0xCEB2, 0x6900, 0xE8CA, 0x6905, 0xEBF5, + 0x690D, 0xE3D5, 0x690E, 0xF5D0, 0x6912, 0xF5A1, 0x6927, 0xD9A7, 0x6930, 0xE5AB, 0x693D, 0xE6CB, 0x693F, 0xF5F1, 0x694A, 0xE5C5, + 0x6953, 0xF9A3, 0x6954, 0xE0DB, 0x6955, 0xF6EB, 0x6957, 0xCBF1, 0x6959, 0xD9EA, 0x695A, 0xF5A2, 0x695E, 0xD7D1, 0x6960, 0xD1F8, + 0x6961, 0xEAF8, 0x6962, 0xEAF9, 0x6963, 0xDAB3, 0x6968, 0xEFDF, 0x696B, 0xF1EF, 0x696D, 0xE5F6, 0x696E, 0xEEBF, 0x696F, 0xE2E4, + 0x6975, 0xD0BF, 0x6977, 0xFAAC, 0x6978, 0xF5D1, 0x6979, 0xE7B3, 0x6995, 0xE9BE, 0x699B, 0xF2CE, 0x699C, 0xDBB4, 0x69A5, 0xFCCE, + 0x69A7, 0xDDEE, 0x69AE, 0xE7B4, 0x69B4, 0xD7B4, 0x69BB, 0xF7B4, 0x69C1, 0xCDBE, 0x69C3, 0xDAE9, 0x69CB, 0xCFB0, 0x69CC, 0xF7D9, + 0x69CD, 0xF3E6, 0x69D0, 0xCED9, 0x69E8, 0xCEAA, 0x69EA, 0xCBC8, 0x69FB, 0xD0A7, 0x69FD, 0xF0CB, 0x69FF, 0xD0C7, 0x6A02, 0xE4C5, + 0x6A0A, 0xDBE0, 0x6A11, 0xD5DA, 0x6A13, 0xD7A7, 0x6A17, 0xEEC0, 0x6A19, 0xF8F6, 0x6A1E, 0xF5D2, 0x6A1F, 0xEDE9, 0x6A21, 0xD9BC, + 0x6A23, 0xE5C6, 0x6A35, 0xF5A3, 0x6A38, 0xDAD4, 0x6A39, 0xE2A7, 0x6A3A, 0xFBFC, 0x6A3D, 0xF1DC, 0x6A44, 0xCAF4, 0x6A48, 0xE8FA, + 0x6A4B, 0xCEE9, 0x6A52, 0xE9F8, 0x6A53, 0xE2E5, 0x6A58, 0xD0B9, 0x6A59, 0xD4F2, 0x6A5F, 0xD1A6, 0x6A61, 0xDFCE, 0x6A6B, 0xFCF4, + 0x6A80, 0xD3AA, 0x6A84, 0xCCAC, 0x6A89, 0xEFE0, 0x6A8D, 0xE5E5, 0x6A8E, 0xD0D5, 0x6A97, 0xDBFC, 0x6A9C, 0xFCE6, 0x6AA2, 0xCBFE, + 0x6AA3, 0xEDEA, 0x6AB3, 0xDEB1, 0x6ABB, 0xF9E3, 0x6AC2, 0xD4A2, 0x6AC3, 0xCFF6, 0x6AD3, 0xD6D0, 0x6ADA, 0xD5EA, 0x6ADB, 0xF1EE, + 0x6AF6, 0xFACB, 0x6AFB, 0xE5A1, 0x6B04, 0xD5B1, 0x6B0A, 0xCFED, 0x6B0C, 0xEDEB, 0x6B12, 0xD5B2, 0x6B16, 0xD5BC, 0x6B20, 0xFDE2, + 0x6B21, 0xF3AD, 0x6B23, 0xFDDB, 0x6B32, 0xE9B0, 0x6B3A, 0xD1A7, 0x6B3D, 0xFDE3, 0x6B3E, 0xCEB3, 0x6B46, 0xFDE4, 0x6B47, 0xFACE, + 0x6B4C, 0xCAB0, 0x6B4E, 0xF7A7, 0x6B50, 0xCFB1, 0x6B5F, 0xE6A2, 0x6B61, 0xFCB6, 0x6B62, 0xF2AD, 0x6B63, 0xEFE1, 0x6B64, 0xF3AE, + 0x6B65, 0xDCC6, 0x6B66, 0xD9EB, 0x6B6A, 0xE8E0, 0x6B72, 0xE1A8, 0x6B77, 0xD5F6, 0x6B78, 0xCFFD, 0x6B7B, 0xDEDD, 0x6B7F, 0xD9D1, + 0x6B83, 0xE4EA, 0x6B84, 0xF2CF, 0x6B86, 0xF7BF, 0x6B89, 0xE2E6, 0x6B8A, 0xE2A8, 0x6B96, 0xE3D6, 0x6B98, 0xEDD1, 0x6B9E, 0xE9F9, + 0x6BAE, 0xD6B1, 0x6BAF, 0xDEB2, 0x6BB2, 0xE0E8, 0x6BB5, 0xD3AB, 0x6BB7, 0xEBDC, 0x6BBA, 0xDFAF, 0x6BBC, 0xCAC3, 0x6BBF, 0xEEFC, + 0x6BC1, 0xFDC3, 0x6BC5, 0xEBF6, 0x6BC6, 0xCFB2, 0x6BCB, 0xD9EC, 0x6BCD, 0xD9BD, 0x6BCF, 0xD8DF, 0x6BD2, 0xD4B8, 0x6BD3, 0xEBBE, + 0x6BD4, 0xDDEF, 0x6BD6, 0xDDF0, 0x6BD7, 0xDDF1, 0x6BD8, 0xDDF2, 0x6BDB, 0xD9BE, 0x6BEB, 0xFBC6, 0x6BEC, 0xCFB3, 0x6C08, 0xEEFD, + 0x6C0F, 0xE4AB, 0x6C11, 0xDAC5, 0x6C13, 0xD8EC, 0x6C23, 0xD1A8, 0x6C34, 0xE2A9, 0x6C37, 0xDEBC, 0x6C38, 0xE7B5, 0x6C3E, 0xDBF0, + 0x6C40, 0xEFE2, 0x6C41, 0xF1F0, 0x6C42, 0xCFB4, 0x6C4E, 0xDBF1, 0x6C50, 0xE0B1, 0x6C55, 0xDFA5, 0x6C57, 0xF9D2, 0x6C5A, 0xE7FD, + 0x6C5D, 0xE6A3, 0x6C5E, 0xFBF1, 0x6C5F, 0xCBB0, 0x6C60, 0xF2AE, 0x6C68, 0xCDE7, 0x6C6A, 0xE8DC, 0x6C6D, 0xE7D7, 0x6C70, 0xF7C0, + 0x6C72, 0xD0E3, 0x6C76, 0xDAA1, 0x6C7A, 0xCCBD, 0x6C7D, 0xD1A9, 0x6C7E, 0xDDCC, 0x6C81, 0xE3FE, 0x6C82, 0xD1AA, 0x6C83, 0xE8AA, + 0x6C85, 0xEAB6, 0x6C86, 0xF9FA, 0x6C87, 0xE6CC, 0x6C88, 0xF6D8, 0x6C8C, 0xD4C7, 0x6C90, 0xD9CB, 0x6C92, 0xD9D2, 0x6C93, 0xD3CB, + 0x6C94, 0xD8F7, 0x6C95, 0xDAA9, 0x6C96, 0xF5F8, 0x6C99, 0xDEDE, 0x6C9A, 0xF2AF, 0x6C9B, 0xF8A9, 0x6CAB, 0xD8C8, 0x6CAE, 0xEEC1, + 0x6CB3, 0xF9C1, 0x6CB8, 0xDDF3, 0x6CB9, 0xEAFA, 0x6CBB, 0xF6BD, 0x6CBC, 0xE1BB, 0x6CBD, 0xCDBF, 0x6CBE, 0xF4D4, 0x6CBF, 0xE6CD, + 0x6CC1, 0xFCCF, 0x6CC2, 0xFBA2, 0x6CC4, 0xE0DC, 0x6CC9, 0xF4BB, 0x6CCA, 0xDAD5, 0x6CCC, 0xF9B2, 0x6CD3, 0xFBF2, 0x6CD5, 0xDBF6, + 0x6CD7, 0xDEDF, 0x6CDB, 0xDBF2, 0x6CE1, 0xF8DC, 0x6CE2, 0xF7EE, 0x6CE3, 0xEBE8, 0x6CE5, 0xD2FA, 0x6CE8, 0xF1BC, 0x6CEB, 0xFADA, + 0x6CEE, 0xDAEA, 0x6CEF, 0xDAC6, 0x6CF0, 0xF7C1, 0x6CF3, 0xE7B6, 0x6D0B, 0xE5C7, 0x6D0C, 0xD6AC, 0x6D11, 0xDCC7, 0x6D17, 0xE1A9, + 0x6D19, 0xE2AA, 0x6D1B, 0xD5A6, 0x6D1E, 0xD4D7, 0x6D25, 0xF2D0, 0x6D27, 0xEAFB, 0x6D29, 0xE0DD, 0x6D2A, 0xFBF3, 0x6D32, 0xF1BD, + 0x6D35, 0xE2E7, 0x6D36, 0xFDD7, 0x6D38, 0xCEC8, 0x6D39, 0xEAB7, 0x6D3B, 0xFCC0, 0x6D3D, 0xFDE7, 0x6D3E, 0xF7EF, 0x6D41, 0xD7B5, + 0x6D59, 0xEFBA, 0x6D5A, 0xF1DD, 0x6D5C, 0xDEB3, 0x6D63, 0xE8CB, 0x6D66, 0xF8DD, 0x6D69, 0xFBC7, 0x6D6A, 0xD5C8, 0x6D6C, 0xD7DF, + 0x6D6E, 0xDDA9, 0x6D74, 0xE9B1, 0x6D77, 0xFAAD, 0x6D78, 0xF6D9, 0x6D79, 0xFAF4, 0x6D7F, 0xF8AA, 0x6D85, 0xE6EE, 0x6D87, 0xCCDC, + 0x6D88, 0xE1BC, 0x6D89, 0xE0EF, 0x6D8C, 0xE9BF, 0x6D8D, 0xFCFD, 0x6D8E, 0xE6CE, 0x6D91, 0xE1D7, 0x6D93, 0xE6CF, 0x6D95, 0xF4F1, + 0x6DAF, 0xE4F3, 0x6DB2, 0xE4FB, 0x6DB5, 0xF9E4, 0x6DC0, 0xEFE3, 0x6DC3, 0xCFEE, 0x6DC4, 0xF6BE, 0x6DC5, 0xE0B2, 0x6DC6, 0xFCFE, + 0x6DC7, 0xD1AB, 0x6DCB, 0xD7FA, 0x6DCF, 0xFBC8, 0x6DD1, 0xE2D7, 0x6DD8, 0xD4A3, 0x6DD9, 0xF0F8, 0x6DDA, 0xD7A8, 0x6DDE, 0xE1E7, + 0x6DE1, 0xD3BF, 0x6DE8, 0xEFE4, 0x6DEA, 0xD7C5, 0x6DEB, 0xEBE2, 0x6DEE, 0xFCE7, 0x6DF1, 0xE4A2, 0x6DF3, 0xE2E8, 0x6DF5, 0xE6D0, + 0x6DF7, 0xFBE8, 0x6DF8, 0xF4E8, 0x6DF9, 0xE5F4, 0x6DFA, 0xF4BC, 0x6DFB, 0xF4D5, 0x6E17, 0xDFB6, 0x6E19, 0xFCB9, 0x6E1A, 0xEEC2, + 0x6E1B, 0xCAF5, 0x6E1F, 0xEFE5, 0x6E20, 0xCBE2, 0x6E21, 0xD4A4, 0x6E23, 0xDEE0, 0x6E24, 0xDAFD, 0x6E25, 0xE4C6, 0x6E26, 0xE8BE, + 0x6E2B, 0xE0DE, 0x6E2C, 0xF6B4, 0x6E2D, 0xEAD2, 0x6E2F, 0xF9FB, 0x6E32, 0xE0C2, 0x6E34, 0xCAE4, 0x6E36, 0xE7B7, 0x6E38, 0xEAFD, + 0x6E3A, 0xD9DD, 0x6E3C, 0xDAB4, 0x6E3D, 0xEEAA, 0x6E3E, 0xFBE9, 0x6E43, 0xDBCB, 0x6E44, 0xDAB5, 0x6E4A, 0xF1BE, 0x6E4D, 0xD3AC, + 0x6E56, 0xFBC9, 0x6E58, 0xDFCF, 0x6E5B, 0xD3C0, 0x6E5C, 0xE3D7, 0x6E5E, 0xEFE6, 0x6E5F, 0xFCD0, 0x6E67, 0xE9C0, 0x6E6B, 0xF5D3, + 0x6E6E, 0xECDC, 0x6E6F, 0xF7B7, 0x6E72, 0xEAB8, 0x6E73, 0xD1F9, 0x6E7A, 0xDCC8, 0x6E90, 0xEAB9, 0x6E96, 0xF1DE, 0x6E9C, 0xD7B6, + 0x6E9D, 0xCFB5, 0x6E9F, 0xD9A8, 0x6EA2, 0xECEE, 0x6EA5, 0xDDAA, 0x6EAA, 0xCDA2, 0x6EAB, 0xE8AE, 0x6EAF, 0xE1BD, 0x6EB1, 0xF2D1, + 0x6EB6, 0xE9C1, 0x6EBA, 0xD2FC, 0x6EC2, 0xDBB5, 0x6EC4, 0xF3E7, 0x6EC5, 0xD8FE, 0x6EC9, 0xFCD1, 0x6ECB, 0xEDB2, 0x6ECC, 0xF4AF, + 0x6ECE, 0xFBA3, 0x6ED1, 0xFCC1, 0x6ED3, 0xEEAB, 0x6ED4, 0xD4A5, 0x6EEF, 0xF4F2, 0x6EF4, 0xEED9, 0x6EF8, 0xFBCA, 0x6EFE, 0xCDE3, + 0x6EFF, 0xD8BB, 0x6F01, 0xE5DB, 0x6F02, 0xF8F7, 0x6F06, 0xF6D4, 0x6F0F, 0xD7A9, 0x6F11, 0xCBC9, 0x6F14, 0xE6D1, 0x6F15, 0xF0CC, + 0x6F20, 0xD8AE, 0x6F22, 0xF9D3, 0x6F23, 0xD5FE, 0x6F2B, 0xD8BC, 0x6F2C, 0xF2B0, 0x6F31, 0xE2AB, 0x6F32, 0xF3E8, 0x6F38, 0xEFC2, + 0x6F3F, 0xEDEC, 0x6F41, 0xE7B8, 0x6F51, 0xDAFE, 0x6F54, 0xCCBE, 0x6F57, 0xF2FC, 0x6F58, 0xDAEB, 0x6F5A, 0xE2D8, 0x6F5B, 0xEDD6, + 0x6F5E, 0xD6D1, 0x6F5F, 0xE0B3, 0x6F62, 0xFCD2, 0x6F64, 0xEBC8, 0x6F6D, 0xD3C1, 0x6F6E, 0xF0CD, 0x6F70, 0xCFF7, 0x6F7A, 0xEDD2, + 0x6F7C, 0xD4D8, 0x6F7D, 0xDCC9, 0x6F7E, 0xD7F1, 0x6F81, 0xDFBB, 0x6F84, 0xF3A5, 0x6F88, 0xF4CD, 0x6F8D, 0xF1BF, 0x6F8E, 0xF8B1, + 0x6F90, 0xE9FA, 0x6F94, 0xFBCB, 0x6F97, 0xCAD5, 0x6FA3, 0xF9D4, 0x6FA4, 0xF7CA, 0x6FA7, 0xD6C8, 0x6FAE, 0xFCE8, 0x6FAF, 0xF3BD, + 0x6FB1, 0xEEFE, 0x6FB3, 0xE7FE, 0x6FB9, 0xD3C2, 0x6FBE, 0xD3B6, 0x6FC0, 0xCCAD, 0x6FC1, 0xF6FA, 0x6FC2, 0xD6B2, 0x6FC3, 0xD2D8, + 0x6FCA, 0xE7D8, 0x6FD5, 0xE3A5, 0x6FDA, 0xE7B9, 0x6FDF, 0xF0AD, 0x6FE0, 0xFBCC, 0x6FE1, 0xEBA1, 0x6FE4, 0xD4A6, 0x6FE9, 0xFBCD, + 0x6FEB, 0xD5BD, 0x6FEC, 0xF1DF, 0x6FEF, 0xF6FB, 0x6FF1, 0xDEB4, 0x6FFE, 0xD5EB, 0x7001, 0xE5C8, 0x7005, 0xFBA4, 0x7006, 0xD4B9, + 0x7009, 0xDEE1, 0x700B, 0xE4A3, 0x700F, 0xD7B7, 0x7011, 0xF8EE, 0x7015, 0xDEB5, 0x7018, 0xD6D2, 0x701A, 0xF9D5, 0x701B, 0xE7BA, + 0x701C, 0xEBD5, 0x701D, 0xD5F7, 0x701E, 0xEFE7, 0x701F, 0xE1BE, 0x7023, 0xFAAE, 0x7027, 0xD6E9, 0x7028, 0xD6EE, 0x702F, 0xE7BB, + 0x7037, 0xECCB, 0x703E, 0xD5B3, 0x704C, 0xCEB4, 0x7050, 0xFBA5, 0x7051, 0xE1EE, 0x7058, 0xF7A8, 0x705D, 0xFBCE, 0x7063, 0xD8BD, + 0x706B, 0xFBFD, 0x7070, 0xFCE9, 0x7078, 0xCFB6, 0x707C, 0xEDC7, 0x707D, 0xEEAC, 0x7085, 0xCCDD, 0x708A, 0xF6A7, 0x708E, 0xE6FA, + 0x7092, 0xF5A4, 0x7098, 0xFDDC, 0x7099, 0xEDB3, 0x709A, 0xCEC9, 0x70A1, 0xEFE8, 0x70A4, 0xE1BF, 0x70AB, 0xFADB, 0x70AC, 0xCBE3, + 0x70AD, 0xF7A9, 0x70AF, 0xFBA6, 0x70B3, 0xDCB9, 0x70B7, 0xF1C0, 0x70B8, 0xEDC8, 0x70B9, 0xEFC3, 0x70C8, 0xD6AD, 0x70CB, 0xFDCE, + 0x70CF, 0xE8A1, 0x70D8, 0xFBF4, 0x70D9, 0xD5A7, 0x70DD, 0xF1F6, 0x70DF, 0xE6D3, 0x70F1, 0xCCDE, 0x70F9, 0xF8B2, 0x70FD, 0xDCEB, + 0x7104, 0xFDB6, 0x7109, 0xE5EA, 0x710C, 0xF1E0, 0x7119, 0xDBCC, 0x711A, 0xDDCD, 0x711E, 0xD4C8, 0x7121, 0xD9ED, 0x7126, 0xF5A5, + 0x7130, 0xE6FB, 0x7136, 0xE6D4, 0x7147, 0xFDC8, 0x7149, 0xD6A1, 0x714A, 0xFDBF, 0x714C, 0xFCD3, 0x714E, 0xEFA1, 0x7150, 0xE7BC, + 0x7156, 0xD1EE, 0x7159, 0xE6D5, 0x715C, 0xE9F2, 0x715E, 0xDFB0, 0x7164, 0xD8E0, 0x7165, 0xFCBA, 0x7166, 0xFDAF, 0x7167, 0xF0CE, + 0x7169, 0xDBE1, 0x716C, 0xE5C9, 0x716E, 0xEDB4, 0x717D, 0xE0C3, 0x7184, 0xE3D8, 0x7189, 0xE9FB, 0x718A, 0xEAA8, 0x718F, 0xFDB7, + 0x7192, 0xFBA7, 0x7194, 0xE9C2, 0x7199, 0xFDF7, 0x719F, 0xE2D9, 0x71A2, 0xDCEC, 0x71AC, 0xE8A2, 0x71B1, 0xE6F0, 0x71B9, 0xFDF8, + 0x71BA, 0xFDF9, 0x71BE, 0xF6BF, 0x71C1, 0xE7A7, 0x71C3, 0xE6D7, 0x71C8, 0xD4F3, 0x71C9, 0xD4C9, 0x71CE, 0xD6FA, 0x71D0, 0xD7F2, + 0x71D2, 0xE1C0, 0x71D4, 0xDBE2, 0x71D5, 0xE6D8, 0x71DF, 0xE7BD, 0x71E5, 0xF0CF, 0x71E6, 0xF3BE, 0x71E7, 0xE2AC, 0x71ED, 0xF5B7, + 0x71EE, 0xE0F0, 0x71FB, 0xFDB8, 0x71FC, 0xE3E8, 0x71FE, 0xD4A7, 0x71FF, 0xE8FC, 0x7200, 0xFAD2, 0x7206, 0xF8EF, 0x7210, 0xD6D3, + 0x721B, 0xD5B4, 0x722A, 0xF0D0, 0x722C, 0xF7F0, 0x722D, 0xEEB3, 0x7230, 0xEABA, 0x7232, 0xEAD3, 0x7235, 0xEDC9, 0x7236, 0xDDAB, + 0x723A, 0xE5AC, 0x723B, 0xFDA1, 0x723D, 0xDFD0, 0x723E, 0xECB3, 0x7240, 0xDFD1, 0x7246, 0xEDED, 0x7247, 0xF8B8, 0x7248, 0xF7FA, + 0x724C, 0xF8AB, 0x7252, 0xF4E0, 0x7258, 0xD4BA, 0x7259, 0xE4B3, 0x725B, 0xE9DA, 0x725D, 0xDEB6, 0x725F, 0xD9BF, 0x7261, 0xD9C0, + 0x7262, 0xD6EF, 0x7267, 0xD9CC, 0x7269, 0xDAAA, 0x7272, 0xDFE5, 0x7279, 0xF7E5, 0x727D, 0xCCB2, 0x7280, 0xDFF9, 0x7281, 0xD7E0, + 0x72A2, 0xD4BB, 0x72A7, 0xFDFA, 0x72AC, 0xCCB3, 0x72AF, 0xDBF3, 0x72C0, 0xDFD2, 0x72C2, 0xCECA, 0x72C4, 0xEEDA, 0x72CE, 0xE4E4, + 0x72D0, 0xFBCF, 0x72D7, 0xCFB7, 0x72D9, 0xEEC3, 0x72E1, 0xCEEA, 0x72E9, 0xE2AD, 0x72F8, 0xD7E1, 0x72F9, 0xFAF5, 0x72FC, 0xD5C9, + 0x72FD, 0xF8AC, 0x730A, 0xE7D9, 0x7316, 0xF3E9, 0x731B, 0xD8ED, 0x731C, 0xE3C4, 0x731D, 0xF0F1, 0x7325, 0xE8E5, 0x7329, 0xE0FA, + 0x732A, 0xEEC4, 0x732B, 0xD9DE, 0x7336, 0xEBA2, 0x7337, 0xEBA3, 0x733E, 0xFCC2, 0x733F, 0xEABB, 0x7344, 0xE8AB, 0x7345, 0xDEE2, + 0x7350, 0xEDEF, 0x7352, 0xE8A3, 0x7357, 0xCFF1, 0x7368, 0xD4BC, 0x736A, 0xFCEA, 0x7370, 0xE7BE, 0x7372, 0xFCF2, 0x7375, 0xD6B4, + 0x7378, 0xE2AE, 0x737A, 0xD3B7, 0x737B, 0xFACC, 0x7384, 0xFADC, 0x7386, 0xEDB5, 0x7387, 0xE1E3, 0x7389, 0xE8AC, 0x738B, 0xE8DD, + 0x738E, 0xEFE9, 0x7394, 0xF4BD, 0x7396, 0xCFB8, 0x7397, 0xE9DB, 0x7398, 0xD1AC, 0x739F, 0xDAC7, 0x73A7, 0xEBC9, 0x73A9, 0xE8CC, + 0x73AD, 0xDEB7, 0x73B2, 0xD6BC, 0x73B3, 0xD3E5, 0x73B9, 0xFADD, 0x73C0, 0xDAD6, 0x73C2, 0xCAB1, 0x73C9, 0xDAC8, 0x73CA, 0xDFA6, + 0x73CC, 0xF9B3, 0x73CD, 0xF2D2, 0x73CF, 0xCAC4, 0x73D6, 0xCECB, 0x73D9, 0xCDF5, 0x73DD, 0xFDB0, 0x73DE, 0xD5A8, 0x73E0, 0xF1C1, + 0x73E3, 0xE2E9, 0x73E4, 0xDCCA, 0x73E5, 0xECB4, 0x73E6, 0xFAC0, 0x73E9, 0xFBA8, 0x73EA, 0xD0A8, 0x73ED, 0xDAEC, 0x73F7, 0xD9EE, + 0x73F9, 0xE0FB, 0x73FD, 0xEFEA, 0x73FE, 0xFADE, 0x7401, 0xE0C4, 0x7403, 0xCFB9, 0x7405, 0xD5CA, 0x7406, 0xD7E2, 0x7407, 0xE2AF, + 0x7409, 0xD7B8, 0x7413, 0xE8CD, 0x741B, 0xF6DA, 0x7420, 0xEFA2, 0x7421, 0xE2DA, 0x7422, 0xF6FC, 0x7425, 0xFBD0, 0x7426, 0xD1AD, + 0x7428, 0xCDE4, 0x742A, 0xD1AE, 0x742B, 0xDCED, 0x742C, 0xE8CE, 0x742E, 0xF0F9, 0x742F, 0xCEB5, 0x7430, 0xE6FC, 0x7433, 0xD7FB, + 0x7434, 0xD0D6, 0x7435, 0xDDF5, 0x7436, 0xF7F1, 0x7438, 0xF6FD, 0x743A, 0xDBF7, 0x743F, 0xFBEA, 0x7440, 0xE9DC, 0x7441, 0xD9C1, + 0x7443, 0xF5F2, 0x7444, 0xE0C5, 0x744B, 0xEAD4, 0x7455, 0xF9C2, 0x7457, 0xEABC, 0x7459, 0xD2C5, 0x745A, 0xFBD1, 0x745B, 0xE7C0, + 0x745C, 0xEBA5, 0x745E, 0xDFFA, 0x745F, 0xE3A2, 0x7460, 0xD7B9, 0x7462, 0xE9C3, 0x7464, 0xE8FD, 0x7465, 0xE8AF, 0x7468, 0xF2D3, + 0x7469, 0xFBA9, 0x746A, 0xD8A5, 0x746F, 0xD5CB, 0x747E, 0xD0C8, 0x7482, 0xD1AF, 0x7483, 0xD7E3, 0x7487, 0xE0C6, 0x7489, 0xD6A2, + 0x748B, 0xEDF0, 0x7498, 0xD7F3, 0x749C, 0xFCD4, 0x749E, 0xDAD7, 0x749F, 0xCCDF, 0x74A1, 0xF2D4, 0x74A3, 0xD1B0, 0x74A5, 0xCCE0, + 0x74A7, 0xDBFD, 0x74A8, 0xF3BF, 0x74AA, 0xF0D1, 0x74B0, 0xFCBB, 0x74B2, 0xE2B0, 0x74B5, 0xE6A5, 0x74B9, 0xE2DB, 0x74BD, 0xDFDE, + 0x74BF, 0xE0C7, 0x74C6, 0xF2EF, 0x74CA, 0xCCE1, 0x74CF, 0xD6EA, 0x74D4, 0xE7C2, 0x74D8, 0xCEB6, 0x74DA, 0xF3C0, 0x74DC, 0xCDFE, + 0x74E0, 0xFBD2, 0x74E2, 0xF8F8, 0x74E3, 0xF7FB, 0x74E6, 0xE8BF, 0x74EE, 0xE8B7, 0x74F7, 0xEDB6, 0x7501, 0xDCBA, 0x7504, 0xCCB4, + 0x7511, 0xF1F7, 0x7515, 0xE8B8, 0x7518, 0xCAF6, 0x751A, 0xE4A4, 0x751B, 0xF4D6, 0x751F, 0xDFE6, 0x7523, 0xDFA7, 0x7525, 0xDFE7, + 0x7526, 0xE1C1, 0x7528, 0xE9C4, 0x752B, 0xDCCB, 0x752C, 0xE9C5, 0x7530, 0xEFA3, 0x7531, 0xEBA6, 0x7532, 0xCBA3, 0x7533, 0xE3E9, + 0x7537, 0xD1FB, 0x7538, 0xEFA4, 0x753A, 0xEFEB, 0x7547, 0xD0B4, 0x754C, 0xCDA3, 0x754F, 0xE8E6, 0x7551, 0xEFA5, 0x7553, 0xD3CC, + 0x7554, 0xDAED, 0x7559, 0xD7BA, 0x755B, 0xF2D5, 0x755C, 0xF5E5, 0x755D, 0xD9EF, 0x7562, 0xF9B4, 0x7565, 0xD5D4, 0x7566, 0xFDCF, + 0x756A, 0xDBE3, 0x756F, 0xF1E1, 0x7570, 0xECB6, 0x7575, 0xFBFE, 0x7576, 0xD3D7, 0x7578, 0xD1B1, 0x757A, 0xCBB1, 0x757F, 0xD1B2, + 0x7586, 0xCBB2, 0x7587, 0xF1C2, 0x758A, 0xF4E1, 0x758B, 0xF9B5, 0x758E, 0xE1C3, 0x758F, 0xE1C2, 0x7591, 0xEBF7, 0x759D, 0xDFA8, + 0x75A5, 0xCBCA, 0x75AB, 0xE6B9, 0x75B1, 0xF8DE, 0x75B2, 0xF9AA, 0x75B3, 0xCAF7, 0x75B5, 0xEDB7, 0x75B8, 0xD3B8, 0x75B9, 0xF2D6, + 0x75BC, 0xD4D9, 0x75BD, 0xEEC5, 0x75BE, 0xF2F0, 0x75C2, 0xCAB2, 0x75C5, 0xDCBB, 0x75C7, 0xF1F8, 0x75CD, 0xECB7, 0x75D2, 0xE5CA, + 0x75D4, 0xF6C0, 0x75D5, 0xFDDD, 0x75D8, 0xD4E3, 0x75D9, 0xCCE2, 0x75DB, 0xF7D4, 0x75E2, 0xD7E5, 0x75F0, 0xD3C3, 0x75F2, 0xD8A6, + 0x75F4, 0xF6C1, 0x75FA, 0xDDF6, 0x75FC, 0xCDC0, 0x7600, 0xE5DC, 0x760D, 0xE5CB, 0x7619, 0xE1C4, 0x761F, 0xE8B0, 0x7620, 0xF4B0, + 0x7621, 0xF3EA, 0x7622, 0xDAEE, 0x7624, 0xD7BB, 0x7626, 0xE2B1, 0x763B, 0xD7AA, 0x7642, 0xD6FB, 0x764C, 0xE4DF, 0x764E, 0xCAD6, + 0x7652, 0xEBA8, 0x7656, 0xDBFE, 0x7661, 0xF6C2, 0x7664, 0xEFBB, 0x7669, 0xD4FD, 0x766C, 0xE0C8, 0x7670, 0xE8B9, 0x7672, 0xEFA6, + 0x7678, 0xCDA4, 0x767B, 0xD4F4, 0x767C, 0xDBA1, 0x767D, 0xDBDC, 0x767E, 0xDBDD, 0x7684, 0xEEDC, 0x7686, 0xCBCB, 0x7687, 0xFCD5, + 0x768E, 0xCEEB, 0x7690, 0xCDC1, 0x7693, 0xFBD3, 0x76AE, 0xF9AB, 0x76BA, 0xF5D4, 0x76BF, 0xD9A9, 0x76C2, 0xE9DD, 0x76C3, 0xDBCD, + 0x76C6, 0xDDCE, 0x76C8, 0xE7C3, 0x76CA, 0xECCC, 0x76D2, 0xF9EC, 0x76D6, 0xCBCC, 0x76DB, 0xE0FC, 0x76DC, 0xD4A8, 0x76DE, 0xEDD3, + 0x76DF, 0xD8EF, 0x76E1, 0xF2D7, 0x76E3, 0xCAF8, 0x76E4, 0xDAEF, 0x76E7, 0xD6D4, 0x76EE, 0xD9CD, 0x76F2, 0xD8EE, 0x76F4, 0xF2C1, + 0x76F8, 0xDFD3, 0x76FC, 0xDAF0, 0x76FE, 0xE2EA, 0x7701, 0xE0FD, 0x7704, 0xD8F8, 0x7708, 0xF7AF, 0x7709, 0xDAB6, 0x770B, 0xCAD7, + 0x771E, 0xF2D8, 0x7720, 0xD8F9, 0x7729, 0xFADF, 0x7737, 0xCFEF, 0x7738, 0xD9C2, 0x773A, 0xF0D2, 0x773C, 0xE4D1, 0x7740, 0xF3B7, + 0x774D, 0xFAE0, 0x775B, 0xEFEC, 0x7761, 0xE2B2, 0x7763, 0xD4BD, 0x7766, 0xD9CE, 0x776B, 0xF4E2, 0x7779, 0xD4A9, 0x777E, 0xCDC2, + 0x777F, 0xE7DA, 0x778B, 0xF2D9, 0x7791, 0xD9AA, 0x779E, 0xD8BE, 0x77A5, 0xDCAD, 0x77AC, 0xE2EB, 0x77AD, 0xD6FC, 0x77B0, 0xCAF9, + 0x77B3, 0xD4DA, 0x77BB, 0xF4D7, 0x77BC, 0xCCA1, 0x77BF, 0xCFBA, 0x77D7, 0xF5B8, 0x77DB, 0xD9C3, 0x77DC, 0xD0E8, 0x77E2, 0xE3C5, + 0x77E3, 0xEBF8, 0x77E5, 0xF2B1, 0x77E9, 0xCFBB, 0x77ED, 0xD3AD, 0x77EE, 0xE8E1, 0x77EF, 0xCEEC, 0x77F3, 0xE0B4, 0x7802, 0xDEE3, + 0x7812, 0xDDF7, 0x7825, 0xF2B2, 0x7826, 0xF3F6, 0x7827, 0xF6DB, 0x782C, 0xD7FE, 0x7832, 0xF8DF, 0x7834, 0xF7F2, 0x7845, 0xD0A9, + 0x784F, 0xE6DA, 0x785D, 0xF5A6, 0x786B, 0xD7BC, 0x786C, 0xCCE3, 0x786F, 0xE6DB, 0x787C, 0xDDDD, 0x7881, 0xD1B3, 0x7887, 0xEFED, + 0x788C, 0xD6DE, 0x788D, 0xE4F4, 0x788E, 0xE1EF, 0x7891, 0xDDF8, 0x7897, 0xE8CF, 0x78A3, 0xCAE5, 0x78A7, 0xDCA1, 0x78A9, 0xE0B5, + 0x78BA, 0xFCAC, 0x78BB, 0xFCAD, 0x78BC, 0xD8A7, 0x78C1, 0xEDB8, 0x78C5, 0xDBB6, 0x78CA, 0xD6F0, 0x78CB, 0xF3AF, 0x78CE, 0xCDA5, + 0x78D0, 0xDAF1, 0x78E8, 0xD8A8, 0x78EC, 0xCCE4, 0x78EF, 0xD1B4, 0x78F5, 0xCAD8, 0x78FB, 0xDAF2, 0x7901, 0xF5A7, 0x790E, 0xF5A8, + 0x7916, 0xE6A6, 0x792A, 0xD5EC, 0x792B, 0xD5F8, 0x792C, 0xDAF3, 0x793A, 0xE3C6, 0x793E, 0xDEE4, 0x7940, 0xDEE5, 0x7941, 0xD1B5, + 0x7947, 0xD1B6, 0x7948, 0xD1B7, 0x7949, 0xF2B3, 0x7950, 0xE9DE, 0x7956, 0xF0D3, 0x7957, 0xF2B4, 0x795A, 0xF0D4, 0x795B, 0xCBE4, + 0x795C, 0xFBD4, 0x795D, 0xF5E6, 0x795E, 0xE3EA, 0x7960, 0xDEE6, 0x7965, 0xDFD4, 0x7968, 0xF8F9, 0x796D, 0xF0AE, 0x797A, 0xD1B8, + 0x797F, 0xD6DF, 0x7981, 0xD0D7, 0x798D, 0xFCA1, 0x798E, 0xEFEE, 0x798F, 0xDCD8, 0x7991, 0xE9DF, 0x79A6, 0xE5DD, 0x79A7, 0xFDFB, + 0x79AA, 0xE0C9, 0x79AE, 0xD6C9, 0x79B1, 0xD4AA, 0x79B3, 0xE5CC, 0x79B9, 0xE9E0, 0x79BD, 0xD0D8, 0x79BE, 0xFCA2, 0x79BF, 0xD4BE, + 0x79C0, 0xE2B3, 0x79C1, 0xDEE7, 0x79C9, 0xDCBC, 0x79CA, 0xD2B6, 0x79CB, 0xF5D5, 0x79D1, 0xCEA1, 0x79D2, 0xF5A9, 0x79D5, 0xDDF9, + 0x79D8, 0xDDFA, 0x79DF, 0xF0D5, 0x79E4, 0xF6DF, 0x79E6, 0xF2DA, 0x79E7, 0xE4EB, 0x79E9, 0xF2F1, 0x79FB, 0xECB9, 0x7A00, 0xFDFC, + 0x7A05, 0xE1AA, 0x7A08, 0xCAD9, 0x7A0B, 0xEFEF, 0x7A0D, 0xF5AA, 0x7A14, 0xECF9, 0x7A17, 0xF8AD, 0x7A19, 0xF2C2, 0x7A1A, 0xF6C3, + 0x7A1C, 0xD7D2, 0x7A1F, 0xF9A2, 0x7A20, 0xF0D6, 0x7A2E, 0xF0FA, 0x7A31, 0xF6E0, 0x7A36, 0xE9F3, 0x7A37, 0xF2C3, 0x7A3B, 0xD4AB, + 0x7A3C, 0xCAB3, 0x7A3D, 0xCDA6, 0x7A3F, 0xCDC3, 0x7A40, 0xCDDA, 0x7A46, 0xD9CF, 0x7A49, 0xF6C4, 0x7A4D, 0xEEDD, 0x7A4E, 0xE7C4, + 0x7A57, 0xE2B4, 0x7A61, 0xDFE2, 0x7A62, 0xE7DB, 0x7A69, 0xE8B1, 0x7A6B, 0xFCAE, 0x7A70, 0xE5CD, 0x7A74, 0xFAEB, 0x7A76, 0xCFBC, + 0x7A79, 0xCFE2, 0x7A7A, 0xCDF6, 0x7A7D, 0xEFF0, 0x7A7F, 0xF4BE, 0x7A81, 0xD4CD, 0x7A84, 0xF3B8, 0x7A88, 0xE9A1, 0x7A92, 0xF2F2, + 0x7A93, 0xF3EB, 0x7A95, 0xF0D7, 0x7A98, 0xCFD7, 0x7A9F, 0xCFDF, 0x7AA9, 0xE8C0, 0x7AAA, 0xE8C1, 0x7AAE, 0xCFE3, 0x7AAF, 0xE9A2, + 0x7ABA, 0xD0AA, 0x7AC4, 0xF3C1, 0x7AC5, 0xD0AB, 0x7AC7, 0xD4E4, 0x7ACA, 0xEFBC, 0x7ACB, 0xD8A1, 0x7AD7, 0xD9DF, 0x7AD9, 0xF3D7, + 0x7ADD, 0xDCBD, 0x7ADF, 0xCCE5, 0x7AE0, 0xEDF1, 0x7AE3, 0xF1E2, 0x7AE5, 0xD4DB, 0x7AEA, 0xE2B5, 0x7AED, 0xCAE6, 0x7AEF, 0xD3AE, + 0x7AF6, 0xCCE6, 0x7AF9, 0xF1D3, 0x7AFA, 0xF5E7, 0x7AFF, 0xCADA, 0x7B0F, 0xFBEE, 0x7B11, 0xE1C5, 0x7B19, 0xDFE9, 0x7B1B, 0xEEDE, + 0x7B1E, 0xF7C2, 0x7B20, 0xD8A2, 0x7B26, 0xDDAC, 0x7B2C, 0xF0AF, 0x7B2D, 0xD6BD, 0x7B39, 0xE1AB, 0x7B46, 0xF9B6, 0x7B49, 0xD4F5, + 0x7B4B, 0xD0C9, 0x7B4C, 0xEFA7, 0x7B4D, 0xE2EC, 0x7B4F, 0xDBEA, 0x7B50, 0xCECC, 0x7B51, 0xF5E8, 0x7B52, 0xF7D5, 0x7B54, 0xD3CD, + 0x7B56, 0xF3FE, 0x7B60, 0xD0B5, 0x7B6C, 0xE0FE, 0x7B6E, 0xDFFB, 0x7B75, 0xE6DD, 0x7B7D, 0xE8A4, 0x7B87, 0xCBCD, 0x7B8B, 0xEFA8, + 0x7B8F, 0xEEB4, 0x7B94, 0xDAD8, 0x7B95, 0xD1B9, 0x7B97, 0xDFA9, 0x7B9A, 0xF3B0, 0x7B9D, 0xCCC4, 0x7BA1, 0xCEB7, 0x7BAD, 0xEFA9, + 0x7BB1, 0xDFD5, 0x7BB4, 0xEDD7, 0x7BB8, 0xEEC6, 0x7BC0, 0xEFBD, 0x7BC1, 0xFCD6, 0x7BC4, 0xDBF4, 0x7BC6, 0xEFAA, 0x7BC7, 0xF8B9, + 0x7BC9, 0xF5E9, 0x7BD2, 0xE3D9, 0x7BE0, 0xE1C6, 0x7BE4, 0xD4BF, 0x7BE9, 0xDEE8, 0x7C07, 0xF0EA, 0x7C12, 0xF3C2, 0x7C1E, 0xD3AF, + 0x7C21, 0xCADB, 0x7C27, 0xFCD7, 0x7C2A, 0xEDD8, 0x7C2B, 0xE1C7, 0x7C3D, 0xF4D8, 0x7C3E, 0xD6B3, 0x7C3F, 0xDDAD, 0x7C43, 0xD5BE, + 0x7C4C, 0xF1C3, 0x7C4D, 0xEEDF, 0x7C60, 0xD6EB, 0x7C64, 0xF4D9, 0x7C6C, 0xD7E6, 0x7C73, 0xDAB7, 0x7C83, 0xDDFB, 0x7C89, 0xDDCF, + 0x7C92, 0xD8A3, 0x7C95, 0xDAD9, 0x7C97, 0xF0D8, 0x7C98, 0xEFC4, 0x7C9F, 0xE1D8, 0x7CA5, 0xF1D4, 0x7CA7, 0xEDF2, 0x7CAE, 0xD5DB, + 0x7CB1, 0xD5DC, 0x7CB2, 0xF3C4, 0x7CB3, 0xCBD7, 0x7CB9, 0xE2B6, 0x7CBE, 0xEFF1, 0x7CCA, 0xFBD5, 0x7CD6, 0xD3D8, 0x7CDE, 0xDDD0, + 0x7CDF, 0xF0D9, 0x7CE0, 0xCBB3, 0x7CE7, 0xD5DD, 0x7CFB, 0xCDA7, 0x7CFE, 0xD0AC, 0x7D00, 0xD1BA, 0x7D02, 0xF1C4, 0x7D04, 0xE5B3, + 0x7D05, 0xFBF5, 0x7D06, 0xE9E1, 0x7D07, 0xFDE0, 0x7D08, 0xFCBC, 0x7D0A, 0xDAA2, 0x7D0B, 0xDAA3, 0x7D0D, 0xD2A1, 0x7D10, 0xD2EF, + 0x7D14, 0xE2ED, 0x7D17, 0xDEE9, 0x7D18, 0xCEDC, 0x7D19, 0xF2B5, 0x7D1A, 0xD0E4, 0x7D1B, 0xDDD1, 0x7D20, 0xE1C8, 0x7D21, 0xDBB7, + 0x7D22, 0xDFE3, 0x7D2B, 0xEDB9, 0x7D2C, 0xF1C5, 0x7D2E, 0xF3CF, 0x7D2F, 0xD7AB, 0x7D30, 0xE1AC, 0x7D33, 0xE3EB, 0x7D35, 0xEEC7, + 0x7D39, 0xE1C9, 0x7D3A, 0xCAFA, 0x7D42, 0xF0FB, 0x7D43, 0xFAE1, 0x7D44, 0xF0DA, 0x7D45, 0xCCE7, 0x7D46, 0xDAF4, 0x7D50, 0xCCBF, + 0x7D5E, 0xCEED, 0x7D61, 0xD5A9, 0x7D62, 0xFAE2, 0x7D66, 0xD0E5, 0x7D68, 0xEBD6, 0x7D6A, 0xECDF, 0x7D6E, 0xDFFC, 0x7D71, 0xF7D6, + 0x7D72, 0xDEEA, 0x7D73, 0xCBB4, 0x7D76, 0xEFBE, 0x7D79, 0xCCB5, 0x7D7F, 0xCFBD, 0x7D8E, 0xEFF2, 0x7D8F, 0xE2B7, 0x7D93, 0xCCE8, + 0x7D9C, 0xF0FC, 0x7DA0, 0xD6E0, 0x7DA2, 0xF1C6, 0x7DAC, 0xE2B8, 0x7DAD, 0xEBAB, 0x7DB1, 0xCBB5, 0x7DB2, 0xD8D1, 0x7DB4, 0xF4CE, + 0x7DB5, 0xF3F7, 0x7DB8, 0xD7C6, 0x7DBA, 0xD1BB, 0x7DBB, 0xF7AA, 0x7DBD, 0xEDCA, 0x7DBE, 0xD7D3, 0x7DBF, 0xD8FA, 0x7DC7, 0xF6C5, + 0x7DCA, 0xD1CC, 0x7DCB, 0xDDFC, 0x7DD6, 0xDFFD, 0x7DD8, 0xF9E5, 0x7DDA, 0xE0CA, 0x7DDD, 0xF2FD, 0x7DDE, 0xD3B0, 0x7DE0, 0xF4F3, + 0x7DE1, 0xDAC9, 0x7DE3, 0xE6DE, 0x7DE8, 0xF8BA, 0x7DE9, 0xE8D0, 0x7DEC, 0xD8FB, 0x7DEF, 0xEAD5, 0x7DF4, 0xD6A3, 0x7DFB, 0xF6C6, + 0x7E09, 0xF2DB, 0x7E0A, 0xE4FC, 0x7E15, 0xE8B2, 0x7E1B, 0xDADA, 0x7E1D, 0xF2DC, 0x7E1E, 0xFBD6, 0x7E1F, 0xE9B2, 0x7E21, 0xEEAD, + 0x7E23, 0xFAE3, 0x7E2B, 0xDCEE, 0x7E2E, 0xF5EA, 0x7E2F, 0xE6E0, 0x7E31, 0xF0FD, 0x7E37, 0xD7AC, 0x7E3D, 0xF5C5, 0x7E3E, 0xEEE0, + 0x7E41, 0xDBE5, 0x7E43, 0xDDDE, 0x7E46, 0xD9F0, 0x7E47, 0xE9A3, 0x7E52, 0xF1F9, 0x7E54, 0xF2C4, 0x7E55, 0xE0CB, 0x7E5E, 0xE9A4, + 0x7E61, 0xE2B9, 0x7E69, 0xE3B1, 0x7E6A, 0xFCEB, 0x7E6B, 0xCDA8, 0x7E6D, 0xCCB6, 0x7E70, 0xF0DB, 0x7E79, 0xE6BA, 0x7E7C, 0xCDA9, + 0x7E82, 0xF3C3, 0x7E8C, 0xE1D9, 0x7E8F, 0xEFAB, 0x7E93, 0xE7C5, 0x7E96, 0xE0E9, 0x7E98, 0xF3C5, 0x7E9B, 0xD4C0, 0x7E9C, 0xD5BF, + 0x7F36, 0xDDAE, 0x7F38, 0xF9FC, 0x7F3A, 0xCCC0, 0x7F4C, 0xE5A2, 0x7F50, 0xCEB8, 0x7F54, 0xD8D2, 0x7F55, 0xF9D6, 0x7F6A, 0xF1AA, + 0x7F6B, 0xCED1, 0x7F6E, 0xF6C7, 0x7F70, 0xDBEB, 0x7F72, 0xDFFE, 0x7F75, 0xD8E1, 0x7F77, 0xF7F3, 0x7F79, 0xD7E7, 0x7F85, 0xD4FE, + 0x7F88, 0xD1BC, 0x7F8A, 0xE5CF, 0x7F8C, 0xCBB6, 0x7F8E, 0xDAB8, 0x7F94, 0xCDC4, 0x7F9A, 0xD6BE, 0x7F9E, 0xE2BA, 0x7FA4, 0xCFD8, + 0x7FA8, 0xE0CC, 0x7FA9, 0xEBF9, 0x7FB2, 0xFDFD, 0x7FB8, 0xD7E8, 0x7FB9, 0xCBD8, 0x7FBD, 0xE9E2, 0x7FC1, 0xE8BA, 0x7FC5, 0xE3C7, + 0x7FCA, 0xECCD, 0x7FCC, 0xECCE, 0x7FCE, 0xD6BF, 0x7FD2, 0xE3A7, 0x7FD4, 0xDFD6, 0x7FD5, 0xFDE8, 0x7FDF, 0xEEE1, 0x7FE0, 0xF6A8, + 0x7FE1, 0xDDFD, 0x7FE9, 0xF8BB, 0x7FEB, 0xE8D1, 0x7FF0, 0xF9D7, 0x7FF9, 0xCEEE, 0x7FFC, 0xECCF, 0x8000, 0xE9A5, 0x8001, 0xD6D5, + 0x8003, 0xCDC5, 0x8005, 0xEDBA, 0x8006, 0xD1BD, 0x8009, 0xCFBE, 0x800C, 0xECBB, 0x8010, 0xD2B1, 0x8015, 0xCCE9, 0x8017, 0xD9C4, + 0x8018, 0xE9FC, 0x802D, 0xD1BE, 0x8033, 0xECBC, 0x8036, 0xE5AD, 0x803D, 0xF7B0, 0x803F, 0xCCEA, 0x8043, 0xD3C4, 0x8046, 0xD6C0, + 0x804A, 0xD6FD, 0x8056, 0xE1A1, 0x8058, 0xDEBD, 0x805A, 0xF6A9, 0x805E, 0xDAA4, 0x806F, 0xD6A4, 0x8070, 0xF5C6, 0x8072, 0xE1A2, + 0x8073, 0xE9C6, 0x8077, 0xF2C5, 0x807D, 0xF4E9, 0x807E, 0xD6EC, 0x807F, 0xEBD3, 0x8084, 0xECBD, 0x8085, 0xE2DC, 0x8086, 0xDEEB, + 0x8087, 0xF0DC, 0x8089, 0xEBBF, 0x808B, 0xD7CE, 0x808C, 0xD1BF, 0x8096, 0xF5AB, 0x809B, 0xF9FD, 0x809D, 0xCADC, 0x80A1, 0xCDC6, + 0x80A2, 0xF2B6, 0x80A5, 0xDDFE, 0x80A9, 0xCCB7, 0x80AA, 0xDBB8, 0x80AF, 0xD0E9, 0x80B1, 0xCEDD, 0x80B2, 0xEBC0, 0x80B4, 0xFDA2, + 0x80BA, 0xF8CB, 0x80C3, 0xEAD6, 0x80C4, 0xF1B0, 0x80CC, 0xDBCE, 0x80CE, 0xF7C3, 0x80DA, 0xDBCF, 0x80DB, 0xCBA4, 0x80DE, 0xF8E0, + 0x80E1, 0xFBD7, 0x80E4, 0xEBCA, 0x80E5, 0xE0A1, 0x80F1, 0xCECD, 0x80F4, 0xD4DC, 0x80F8, 0xFDD8, 0x80FD, 0xD2F6, 0x8102, 0xF2B7, + 0x8105, 0xFAF6, 0x8106, 0xF6AA, 0x8107, 0xFAF7, 0x8108, 0xD8E6, 0x810A, 0xF4B1, 0x8118, 0xE8D2, 0x811A, 0xCAC5, 0x811B, 0xCCEB, + 0x8123, 0xE2EE, 0x8129, 0xE2BB, 0x812B, 0xF7AD, 0x812F, 0xF8E1, 0x8139, 0xF3EC, 0x813E, 0xDEA1, 0x814B, 0xE4FD, 0x814E, 0xE3EC, + 0x8150, 0xDDAF, 0x8151, 0xDDB0, 0x8154, 0xCBB7, 0x8155, 0xE8D3, 0x8165, 0xE1A3, 0x8166, 0xD2E0, 0x816B, 0xF0FE, 0x8170, 0xE9A6, + 0x8171, 0xCBF2, 0x8178, 0xEDF3, 0x8179, 0xDCD9, 0x817A, 0xE0CD, 0x817F, 0xF7DA, 0x8180, 0xDBB9, 0x8188, 0xCCAE, 0x818A, 0xDADB, + 0x818F, 0xCDC7, 0x819A, 0xDDB1, 0x819C, 0xD8AF, 0x819D, 0xE3A3, 0x81A0, 0xCEEF, 0x81A3, 0xF2F3, 0x81A8, 0xF8B3, 0x81B3, 0xE0CE, + 0x81B5, 0xF5FD, 0x81BA, 0xEBEC, 0x81BD, 0xD3C5, 0x81BE, 0xFCEC, 0x81BF, 0xD2DB, 0x81C0, 0xD4EB, 0x81C2, 0xDEA2, 0x81C6, 0xE5E6, + 0x81CD, 0xF0B0, 0x81D8, 0xD5C4, 0x81DF, 0xEDF4, 0x81E3, 0xE3ED, 0x81E5, 0xE8C2, 0x81E7, 0xEDF5, 0x81E8, 0xD7FC, 0x81EA, 0xEDBB, + 0x81ED, 0xF6AB, 0x81F3, 0xF2B8, 0x81F4, 0xF6C8, 0x81FA, 0xD3E6, 0x81FB, 0xF2DD, 0x81FC, 0xCFBF, 0x81FE, 0xEBAC, 0x8205, 0xCFC0, + 0x8207, 0xE6A8, 0x8208, 0xFDE9, 0x820A, 0xCFC1, 0x820C, 0xE0DF, 0x820D, 0xDEEC, 0x8212, 0xE0A2, 0x821B, 0xF4BF, 0x821C, 0xE2EF, + 0x821E, 0xD9F1, 0x821F, 0xF1C7, 0x8221, 0xCBB8, 0x822A, 0xF9FE, 0x822B, 0xDBBA, 0x822C, 0xDAF5, 0x8235, 0xF6EC, 0x8236, 0xDADC, + 0x8237, 0xFAE4, 0x8239, 0xE0CF, 0x8240, 0xDDB2, 0x8245, 0xE6A9, 0x8247, 0xEFF3, 0x8259, 0xF3ED, 0x8264, 0xEBFA, 0x8266, 0xF9E6, + 0x826E, 0xCADD, 0x826F, 0xD5DE, 0x8271, 0xCADE, 0x8272, 0xDFE4, 0x8276, 0xE6FD, 0x8278, 0xF5AC, 0x827E, 0xE4F5, 0x828B, 0xE9E3, + 0x828D, 0xEDCB, 0x828E, 0xCFE4, 0x8292, 0xD8D3, 0x8299, 0xDDB3, 0x829A, 0xD4EC, 0x829D, 0xF2B9, 0x829F, 0xDFB7, 0x82A5, 0xCBCE, + 0x82A6, 0xFBD8, 0x82A9, 0xD0D9, 0x82AC, 0xDDD2, 0x82AD, 0xF7F4, 0x82AE, 0xE7DC, 0x82AF, 0xE4A5, 0x82B1, 0xFCA3, 0x82B3, 0xDBBB, + 0x82B7, 0xF2BA, 0x82B8, 0xE9FD, 0x82B9, 0xD0CA, 0x82BB, 0xF5D6, 0x82BC, 0xD9C5, 0x82BD, 0xE4B4, 0x82BF, 0xEDA7, 0x82D1, 0xEABD, + 0x82D2, 0xE6FE, 0x82D4, 0xF7C4, 0x82D5, 0xF5AD, 0x82D7, 0xD9E0, 0x82DB, 0xCAB4, 0x82DE, 0xF8E2, 0x82DF, 0xCFC2, 0x82E1, 0xECBE, + 0x82E5, 0xE5B4, 0x82E6, 0xCDC8, 0x82E7, 0xEEC8, 0x82F1, 0xE7C8, 0x82FD, 0xCDC9, 0x82FE, 0xF9B7, 0x8301, 0xF1E8, 0x8302, 0xD9F2, + 0x8303, 0xDBF5, 0x8304, 0xCAB5, 0x8305, 0xD9C6, 0x8309, 0xD8C9, 0x8317, 0xD9AB, 0x8328, 0xEDBC, 0x832B, 0xD8D4, 0x832F, 0xDCDA, + 0x8331, 0xE2BC, 0x8334, 0xFCED, 0x8335, 0xECE0, 0x8336, 0xD2FE, 0x8338, 0xE9C7, 0x8339, 0xE6AA, 0x8340, 0xE2F0, 0x8347, 0xFABB, + 0x8349, 0xF5AE, 0x834A, 0xFBAA, 0x834F, 0xECFB, 0x8351, 0xECBF, 0x8352, 0xFCD8, 0x8373, 0xD4E5, 0x8377, 0xF9C3, 0x837B, 0xEEE2, + 0x8389, 0xD7E9, 0x838A, 0xEDF6, 0x838E, 0xDEED, 0x8396, 0xCCEC, 0x8398, 0xE3EE, 0x839E, 0xE8D4, 0x83A2, 0xFAF8, 0x83A9, 0xDDB4, + 0x83AA, 0xE4B5, 0x83AB, 0xD8B0, 0x83BD, 0xD8D5, 0x83C1, 0xF4EA, 0x83C5, 0xCEB9, 0x83C9, 0xD6E1, 0x83CA, 0xCFD2, 0x83CC, 0xD0B6, + 0x83D3, 0xCEA2, 0x83D6, 0xF3EE, 0x83DC, 0xF3F8, 0x83E9, 0xDCCC, 0x83EB, 0xD0CB, 0x83EF, 0xFCA4, 0x83F0, 0xCDCA, 0x83F1, 0xD7D4, + 0x83F2, 0xDEA3, 0x83F4, 0xE4E0, 0x83F9, 0xEEC9, 0x83FD, 0xE2DD, 0x8403, 0xF5FE, 0x8404, 0xD4AC, 0x840A, 0xD5D1, 0x840C, 0xD8F0, + 0x840D, 0xF8C3, 0x840E, 0xEAD7, 0x8429, 0xF5D7, 0x842C, 0xD8BF, 0x8431, 0xFDC0, 0x8438, 0xEBAD, 0x843D, 0xD5AA, 0x8449, 0xE7A8, + 0x8457, 0xEECA, 0x845B, 0xCAE7, 0x8461, 0xF8E3, 0x8463, 0xD4DD, 0x8466, 0xEAD8, 0x846B, 0xFBD9, 0x846C, 0xEDF7, 0x846F, 0xE5B5, + 0x8475, 0xD0AD, 0x847A, 0xF1F1, 0x8490, 0xE2BD, 0x8494, 0xE3C8, 0x8499, 0xD9D5, 0x849C, 0xDFAA, 0x84A1, 0xDBBC, 0x84B2, 0xF8E4, + 0x84B8, 0xF1FA, 0x84BB, 0xE5B6, 0x84BC, 0xF3EF, 0x84BF, 0xFBDA, 0x84C0, 0xE1E0, 0x84C2, 0xD9AC, 0x84C4, 0xF5EB, 0x84C6, 0xE0B6, + 0x84C9, 0xE9C8, 0x84CB, 0xCBCF, 0x84CD, 0xE3C9, 0x84D1, 0xDEEE, 0x84DA, 0xE2BE, 0x84EC, 0xDCEF, 0x84EE, 0xD6A5, 0x84F4, 0xE2F1, + 0x84FC, 0xD6FE, 0x8511, 0xD9A1, 0x8513, 0xD8C0, 0x8514, 0xDCDB, 0x8517, 0xEDBD, 0x8518, 0xDFB8, 0x851A, 0xEAA5, 0x851E, 0xD7AD, + 0x8521, 0xF3F9, 0x8523, 0xEDF8, 0x8525, 0xF5C7, 0x852C, 0xE1CA, 0x852D, 0xEBE3, 0x852F, 0xF2DE, 0x853D, 0xF8CC, 0x853F, 0xEAD9, + 0x8541, 0xD3C6, 0x8543, 0xDBE6, 0x8549, 0xF5AF, 0x854E, 0xCEF0, 0x8553, 0xE9FE, 0x8559, 0xFBB6, 0x8563, 0xE2F2, 0x8568, 0xCFF2, + 0x8569, 0xF7B9, 0x856A, 0xD9F3, 0x856D, 0xE1CB, 0x8584, 0xDADD, 0x8587, 0xDAB9, 0x858F, 0xEBFB, 0x8591, 0xCBB9, 0x8594, 0xEDF9, + 0x859B, 0xE0E0, 0x85A6, 0xF4C0, 0x85A8, 0xFDBC, 0x85A9, 0xDFB1, 0x85AA, 0xE3EF, 0x85AF, 0xE0A3, 0x85B0, 0xFDB9, 0x85BA, 0xF0B1, + 0x85C1, 0xCDCB, 0x85C9, 0xEDBE, 0x85CD, 0xD5C0, 0x85CE, 0xE3F0, 0x85CF, 0xEDFA, 0x85D5, 0xE9E4, 0x85DC, 0xD5ED, 0x85DD, 0xE7DD, + 0x85E4, 0xD4F6, 0x85E5, 0xE5B7, 0x85E9, 0xDBE7, 0x85EA, 0xE2BF, 0x85F7, 0xEECB, 0x85FA, 0xD7F4, 0x85FB, 0xF0DD, 0x85FF, 0xCEAB, + 0x8602, 0xE7DE, 0x8606, 0xD6D6, 0x8607, 0xE1CC, 0x860A, 0xE8B3, 0x8616, 0xE5EE, 0x8617, 0xDCA2, 0x861A, 0xE0D0, 0x862D, 0xD5B5, + 0x863F, 0xD5A1, 0x864E, 0xFBDB, 0x8650, 0xF9CB, 0x8654, 0xCBF3, 0x8655, 0xF4A5, 0x865B, 0xFAC8, 0x865C, 0xD6D7, 0x865E, 0xE9E5, + 0x865F, 0xFBDC, 0x8667, 0xFDD0, 0x8679, 0xFBF6, 0x868A, 0xDAA5, 0x868C, 0xDBBD, 0x8693, 0xECE2, 0x86A3, 0xCDF7, 0x86A4, 0xF0DE, + 0x86A9, 0xF6C9, 0x86C7, 0xDEEF, 0x86CB, 0xD3B1, 0x86D4, 0xFCEE, 0x86D9, 0xE8C3, 0x86DB, 0xF1C8, 0x86DF, 0xCEF1, 0x86E4, 0xF9ED, + 0x86ED, 0xF2F4, 0x86FE, 0xE4B6, 0x8700, 0xF5B9, 0x8702, 0xDCF0, 0x8703, 0xE3F1, 0x8708, 0xE8A5, 0x8718, 0xF2BB, 0x871A, 0xDEA4, + 0x871C, 0xDACC, 0x874E, 0xCAE9, 0x8755, 0xE3DA, 0x8757, 0xFCD9, 0x875F, 0xEADA, 0x8766, 0xF9C4, 0x8768, 0xE3A4, 0x8774, 0xFBDD, + 0x8776, 0xEFCA, 0x8778, 0xE8C4, 0x8782, 0xD5CC, 0x878D, 0xEBD7, 0x879F, 0xD9AD, 0x87A2, 0xFBAB, 0x87B3, 0xD3D9, 0x87BA, 0xD5A2, + 0x87C4, 0xF6DE, 0x87E0, 0xDAF6, 0x87EC, 0xE0D1, 0x87EF, 0xE9A8, 0x87F2, 0xF5F9, 0x87F9, 0xFAAF, 0x87FB, 0xEBFC, 0x87FE, 0xE0EA, + 0x8805, 0xE3B2, 0x881F, 0xD5C5, 0x8822, 0xF1E3, 0x8823, 0xD5EE, 0x8831, 0xCDCC, 0x8836, 0xEDD9, 0x883B, 0xD8C1, 0x8840, 0xFAEC, + 0x8846, 0xF1EB, 0x884C, 0xFABC, 0x884D, 0xE6E2, 0x8852, 0xFAE5, 0x8853, 0xE2FA, 0x8857, 0xCAB6, 0x8859, 0xE4B7, 0x885B, 0xEADB, + 0x885D, 0xF5FA, 0x8861, 0xFBAC, 0x8862, 0xCFC3, 0x8863, 0xEBFD, 0x8868, 0xF8FA, 0x886B, 0xDFB9, 0x8870, 0xE1F1, 0x8872, 0xD2A4, + 0x8877, 0xF5FB, 0x887E, 0xD0DA, 0x887F, 0xD0DB, 0x8881, 0xEABE, 0x8882, 0xD9B1, 0x8888, 0xCAB7, 0x888B, 0xD3E7, 0x888D, 0xF8E5, + 0x8892, 0xD3B2, 0x8896, 0xE2C0, 0x8897, 0xF2DF, 0x889E, 0xCDE5, 0x88AB, 0xF9AC, 0x88B4, 0xCDCD, 0x88C1, 0xEEAE, 0x88C2, 0xD6AE, + 0x88CF, 0xD7EA, 0x88D4, 0xE7E0, 0x88D5, 0xEBAE, 0x88D9, 0xCFD9, 0x88DC, 0xDCCD, 0x88DD, 0xEDFB, 0x88DF, 0xDEF0, 0x88E1, 0xD7EB, + 0x88E8, 0xDEA5, 0x88F3, 0xDFD7, 0x88F4, 0xDBD0, 0x88F5, 0xDBD1, 0x88F8, 0xD5A3, 0x88FD, 0xF0B2, 0x8907, 0xDCDC, 0x8910, 0xCAE8, + 0x8912, 0xF8E6, 0x8913, 0xDCCE, 0x8918, 0xEADC, 0x8919, 0xDBD2, 0x8925, 0xE9B3, 0x892A, 0xF7DB, 0x8936, 0xE3A8, 0x8938, 0xD7AE, + 0x893B, 0xE0E1, 0x8941, 0xCBBA, 0x8944, 0xE5D1, 0x895F, 0xD0DC, 0x8964, 0xD5C1, 0x896A, 0xD8CA, 0x8972, 0xE3A9, 0x897F, 0xE0A4, + 0x8981, 0xE9A9, 0x8983, 0xD3C7, 0x8986, 0xDCDD, 0x8987, 0xF8AE, 0x898B, 0xCCB8, 0x898F, 0xD0AE, 0x8993, 0xD8F2, 0x8996, 0xE3CA, + 0x89A1, 0xCCAF, 0x89A9, 0xD4AD, 0x89AA, 0xF6D1, 0x89B2, 0xD0CC, 0x89BA, 0xCAC6, 0x89BD, 0xD5C2, 0x89C0, 0xCEBA, 0x89D2, 0xCAC7, + 0x89E3, 0xFAB0, 0x89F4, 0xDFD8, 0x89F8, 0xF5BA, 0x8A00, 0xE5EB, 0x8A02, 0xEFF4, 0x8A03, 0xDDB5, 0x8A08, 0xCDAA, 0x8A0A, 0xE3F2, + 0x8A0C, 0xFBF7, 0x8A0E, 0xF7D0, 0x8A13, 0xFDBA, 0x8A16, 0xFDE1, 0x8A17, 0xF6FE, 0x8A18, 0xD1C0, 0x8A1B, 0xE8C5, 0x8A1D, 0xE4B8, + 0x8A1F, 0xE1E8, 0x8A23, 0xCCC1, 0x8A25, 0xD2ED, 0x8A2A, 0xDBBE, 0x8A2D, 0xE0E2, 0x8A31, 0xFAC9, 0x8A34, 0xE1CD, 0x8A36, 0xCAB8, + 0x8A3A, 0xF2E0, 0x8A3B, 0xF1C9, 0x8A50, 0xDEF1, 0x8A54, 0xF0DF, 0x8A55, 0xF8C4, 0x8A5B, 0xEECC, 0x8A5E, 0xDEF2, 0x8A60, 0xE7C9, + 0x8A62, 0xE2F3, 0x8A63, 0xE7E1, 0x8A66, 0xE3CB, 0x8A69, 0xE3CC, 0x8A6D, 0xCFF8, 0x8A6E, 0xEFAC, 0x8A70, 0xFDFE, 0x8A71, 0xFCA5, + 0x8A72, 0xFAB1, 0x8A73, 0xDFD9, 0x8A75, 0xE0D2, 0x8A79, 0xF4DA, 0x8A85, 0xF1CA, 0x8A87, 0xCEA3, 0x8A8C, 0xF2BC, 0x8A8D, 0xECE3, + 0x8A93, 0xE0A5, 0x8A95, 0xF7AB, 0x8A98, 0xEBAF, 0x8A9E, 0xE5DE, 0x8AA0, 0xE1A4, 0x8AA1, 0xCDAB, 0x8AA3, 0xD9F4, 0x8AA4, 0xE8A6, + 0x8AA5, 0xCDCE, 0x8AA6, 0xE1E9, 0x8AA8, 0xFCEF, 0x8AAA, 0xE0E3, 0x8AB0, 0xE2C1, 0x8AB2, 0xCEA4, 0x8AB9, 0xDEA6, 0x8ABC, 0xEBFE, + 0x8ABE, 0xEBDD, 0x8ABF, 0xF0E0, 0x8AC2, 0xF4DB, 0x8AC4, 0xE2F4, 0x8AC7, 0xD3C8, 0x8ACB, 0xF4EB, 0x8ACD, 0xEEB5, 0x8ACF, 0xF5D8, + 0x8AD2, 0xD5DF, 0x8AD6, 0xD6E5, 0x8ADB, 0xEBB0, 0x8ADC, 0xF4E3, 0x8AE1, 0xE3CD, 0x8AE6, 0xF4F4, 0x8AE7, 0xFAB2, 0x8AEA, 0xEFF5, + 0x8AEB, 0xCADF, 0x8AED, 0xEBB1, 0x8AEE, 0xEDBF, 0x8AF1, 0xFDC9, 0x8AF6, 0xE4A6, 0x8AF7, 0xF9A4, 0x8AF8, 0xF0B3, 0x8AFA, 0xE5EC, + 0x8AFE, 0xD1E7, 0x8B00, 0xD9C7, 0x8B01, 0xE4D7, 0x8B02, 0xEADD, 0x8B04, 0xD4F7, 0x8B0E, 0xDABA, 0x8B10, 0xDACD, 0x8B14, 0xF9CC, + 0x8B16, 0xE1DA, 0x8B17, 0xDBBF, 0x8B19, 0xCCC5, 0x8B1A, 0xECD0, 0x8B1B, 0xCBBB, 0x8B1D, 0xDEF3, 0x8B20, 0xE9AA, 0x8B28, 0xD9C8, + 0x8B2B, 0xEEE3, 0x8B2C, 0xD7BD, 0x8B33, 0xCFC4, 0x8B39, 0xD0CD, 0x8B41, 0xFCA6, 0x8B49, 0xF1FB, 0x8B4E, 0xFDD2, 0x8B4F, 0xD1C1, + 0x8B58, 0xE3DB, 0x8B5A, 0xD3C9, 0x8B5C, 0xDCCF, 0x8B66, 0xCCED, 0x8B6C, 0xDEA7, 0x8B6F, 0xE6BB, 0x8B70, 0xECA1, 0x8B74, 0xCCB9, + 0x8B77, 0xFBDE, 0x8B7D, 0xE7E2, 0x8B80, 0xD4C1, 0x8B8A, 0xDCA8, 0x8B90, 0xE2C2, 0x8B92, 0xF3D8, 0x8B93, 0xE5D3, 0x8B96, 0xF3D9, + 0x8B9A, 0xF3C6, 0x8C37, 0xCDDB, 0x8C3F, 0xCDAC, 0x8C41, 0xFCC3, 0x8C46, 0xD4E7, 0x8C48, 0xD1C2, 0x8C4A, 0xF9A5, 0x8C4C, 0xE8D5, + 0x8C55, 0xE3CE, 0x8C5A, 0xD4CA, 0x8C61, 0xDFDA, 0x8C6A, 0xFBDF, 0x8C6B, 0xE7E3, 0x8C79, 0xF8FB, 0x8C7A, 0xE3CF, 0x8C82, 0xF5B0, + 0x8C8A, 0xD8E7, 0x8C8C, 0xD9C9, 0x8C9D, 0xF8AF, 0x8C9E, 0xEFF6, 0x8CA0, 0xDDB6, 0x8CA1, 0xEEAF, 0x8CA2, 0xCDF8, 0x8CA7, 0xDEB8, + 0x8CA8, 0xFCA7, 0x8CA9, 0xF7FC, 0x8CAA, 0xF7B1, 0x8CAB, 0xCEBB, 0x8CAC, 0xF4A1, 0x8CAF, 0xEECD, 0x8CB0, 0xE1AE, 0x8CB3, 0xECC3, + 0x8CB4, 0xCFFE, 0x8CB6, 0xF8BF, 0x8CB7, 0xD8E2, 0x8CB8, 0xD3E8, 0x8CBB, 0xDEA8, 0x8CBC, 0xF4E4, 0x8CBD, 0xECC2, 0x8CBF, 0xD9F5, + 0x8CC0, 0xF9C5, 0x8CC1, 0xDDD3, 0x8CC2, 0xD6F1, 0x8CC3, 0xECFC, 0x8CC4, 0xFCF0, 0x8CC7, 0xEDC0, 0x8CC8, 0xCAB9, 0x8CCA, 0xEEE4, + 0x8CD1, 0xF2E1, 0x8CD3, 0xDEB9, 0x8CDA, 0xD6F2, 0x8CDC, 0xDEF4, 0x8CDE, 0xDFDB, 0x8CE0, 0xDBD3, 0x8CE2, 0xFAE7, 0x8CE3, 0xD8E3, + 0x8CE4, 0xF4C1, 0x8CE6, 0xDDB7, 0x8CEA, 0xF2F5, 0x8CED, 0xD4AE, 0x8CF4, 0xD6F3, 0x8CFB, 0xDDB8, 0x8CFC, 0xCFC5, 0x8CFD, 0xDFDF, + 0x8D04, 0xF2BE, 0x8D05, 0xF6A1, 0x8D07, 0xEBCB, 0x8D08, 0xF1FC, 0x8D0A, 0xF3C7, 0x8D0D, 0xE0EB, 0x8D13, 0xEDFC, 0x8D16, 0xE1DB, + 0x8D64, 0xEEE5, 0x8D66, 0xDEF5, 0x8D6B, 0xFAD3, 0x8D70, 0xF1CB, 0x8D73, 0xD0AF, 0x8D74, 0xDDB9, 0x8D77, 0xD1C3, 0x8D85, 0xF5B1, + 0x8D8A, 0xEAC6, 0x8D99, 0xF0E1, 0x8DA3, 0xF6AC, 0x8DA8, 0xF5D9, 0x8DB3, 0xF0EB, 0x8DBA, 0xDDBA, 0x8DBE, 0xF2BF, 0x8DC6, 0xF7C5, + 0x8DCB, 0xDBA2, 0x8DCC, 0xF2F6, 0x8DCF, 0xCABA, 0x8DDB, 0xF7F5, 0x8DDD, 0xCBE5, 0x8DE1, 0xEEE6, 0x8DE3, 0xE0D3, 0x8DE8, 0xCEA5, + 0x8DEF, 0xD6D8, 0x8DF3, 0xD4AF, 0x8E0A, 0xE9C9, 0x8E0F, 0xD3CE, 0x8E10, 0xF4C2, 0x8E1E, 0xCBE6, 0x8E2A, 0xF1A1, 0x8E30, 0xEBB2, + 0x8E35, 0xF1A2, 0x8E42, 0xEBB3, 0x8E44, 0xF0B4, 0x8E47, 0xCBF4, 0x8E48, 0xD4B0, 0x8E49, 0xF3B2, 0x8E4A, 0xFBB7, 0x8E59, 0xF5EC, + 0x8E5F, 0xEEE7, 0x8E60, 0xF4B2, 0x8E74, 0xF5ED, 0x8E76, 0xCFF3, 0x8E81, 0xF0E2, 0x8E87, 0xEECE, 0x8E8A, 0xF1CC, 0x8E8D, 0xE5B8, + 0x8EAA, 0xD7F5, 0x8EAB, 0xE3F3, 0x8EAC, 0xCFE5, 0x8EC0, 0xCFC6, 0x8ECA, 0xF3B3, 0x8ECB, 0xE4D8, 0x8ECC, 0xCFF9, 0x8ECD, 0xCFDA, + 0x8ED2, 0xFACD, 0x8EDF, 0xE6E3, 0x8EEB, 0xF2E2, 0x8EF8, 0xF5EE, 0x8EFB, 0xCABB, 0x8EFE, 0xE3DC, 0x8F03, 0xCEF2, 0x8F05, 0xD6D9, + 0x8F09, 0xEEB0, 0x8F12, 0xF4E5, 0x8F13, 0xD8C2, 0x8F14, 0xDCD0, 0x8F15, 0xCCEE, 0x8F1B, 0xD5E0, 0x8F1C, 0xF6CA, 0x8F1D, 0xFDCA, + 0x8F1E, 0xD8D6, 0x8F1F, 0xF4CF, 0x8F26, 0xD6A6, 0x8F27, 0xDCBE, 0x8F29, 0xDBD4, 0x8F2A, 0xD7C7, 0x8F2F, 0xF2FE, 0x8F33, 0xF1CD, + 0x8F38, 0xE2C3, 0x8F39, 0xDCDE, 0x8F3B, 0xDCDF, 0x8F3E, 0xEFAD, 0x8F3F, 0xE6AB, 0x8F44, 0xF9DD, 0x8F45, 0xEABF, 0x8F49, 0xEFAE, + 0x8F4D, 0xF4D0, 0x8F4E, 0xCEF3, 0x8F5D, 0xE6AC, 0x8F5F, 0xCEDE, 0x8F62, 0xD5F9, 0x8F9B, 0xE3F4, 0x8F9C, 0xCDD0, 0x8FA3, 0xD5B8, + 0x8FA6, 0xF7FD, 0x8FA8, 0xDCA9, 0x8FAD, 0xDEF6, 0x8FAF, 0xDCAA, 0x8FB0, 0xF2E3, 0x8FB1, 0xE9B4, 0x8FB2, 0xD2DC, 0x8FC2, 0xE9E6, + 0x8FC5, 0xE3F6, 0x8FCE, 0xE7CA, 0x8FD1, 0xD0CE, 0x8FD4, 0xDAF7, 0x8FE6, 0xCABC, 0x8FEA, 0xEEE8, 0x8FEB, 0xDADE, 0x8FED, 0xF2F7, + 0x8FF0, 0xE2FB, 0x8FF2, 0xCCA6, 0x8FF7, 0xDABB, 0x8FF9, 0xEEE9, 0x8FFD, 0xF5DA, 0x9000, 0xF7DC, 0x9001, 0xE1EA, 0x9002, 0xCEC1, + 0x9003, 0xD4B1, 0x9005, 0xFDB1, 0x9006, 0xE6BD, 0x9008, 0xFBAD, 0x900B, 0xF8E7, 0x900D, 0xE1CE, 0x900F, 0xF7E2, 0x9010, 0xF5EF, + 0x9011, 0xCFC7, 0x9014, 0xD4B2, 0x9015, 0xCCEF, 0x9017, 0xD4E8, 0x9019, 0xEECF, 0x901A, 0xF7D7, 0x901D, 0xE0A6, 0x901E, 0xD6C1, + 0x901F, 0xE1DC, 0x9020, 0xF0E3, 0x9021, 0xF1E4, 0x9022, 0xDCF1, 0x9023, 0xD6A7, 0x902E, 0xF4F5, 0x9031, 0xF1CE, 0x9032, 0xF2E4, + 0x9035, 0xD0B0, 0x9038, 0xECEF, 0x903C, 0xF9BA, 0x903E, 0xEBB5, 0x9041, 0xD4ED, 0x9042, 0xE2C4, 0x9047, 0xE9E7, 0x904A, 0xEBB4, + 0x904B, 0xEAA1, 0x904D, 0xF8BC, 0x904E, 0xCEA6, 0x9050, 0xF9C6, 0x9051, 0xFCDA, 0x9053, 0xD4B3, 0x9054, 0xD3B9, 0x9055, 0xEADE, + 0x9059, 0xE9AB, 0x905C, 0xE1E1, 0x905D, 0xD3CF, 0x905E, 0xF4F6, 0x9060, 0xEAC0, 0x9061, 0xE1CF, 0x9063, 0xCCBA, 0x9069, 0xEEEA, + 0x906D, 0xF0E4, 0x906E, 0xF3B4, 0x906F, 0xD4EE, 0x9072, 0xF2C0, 0x9075, 0xF1E5, 0x9077, 0xF4C3, 0x9078, 0xE0D4, 0x907A, 0xEBB6, + 0x907C, 0xD7A1, 0x907D, 0xCBE8, 0x907F, 0xF9AD, 0x9080, 0xE9AD, 0x9081, 0xD8E4, 0x9082, 0xFAB3, 0x9083, 0xE2C5, 0x9084, 0xFCBD, + 0x9087, 0xECC4, 0x9088, 0xD8B1, 0x908A, 0xDCAB, 0x908F, 0xD5A4, 0x9091, 0xEBE9, 0x9095, 0xE8BB, 0x9099, 0xD8D7, 0x90A2, 0xFBAE, + 0x90A3, 0xD1E1, 0x90A6, 0xDBC0, 0x90A8, 0xF5BE, 0x90AA, 0xDEF7, 0x90AF, 0xCAFB, 0x90B0, 0xF7C6, 0x90B1, 0xCFC8, 0x90B5, 0xE1D0, + 0x90B8, 0xEED0, 0x90C1, 0xE9F4, 0x90CA, 0xCEF4, 0x90DE, 0xD5CD, 0x90E1, 0xCFDB, 0x90E8, 0xDDBB, 0x90ED, 0xCEAC, 0x90F5, 0xE9E8, + 0x90FD, 0xD4B4, 0x9102, 0xE4C7, 0x9112, 0xF5DB, 0x9115, 0xFAC1, 0x9119, 0xDEA9, 0x9127, 0xD4F8, 0x912D, 0xEFF7, 0x9132, 0xD3B3, + 0x9149, 0xEBB7, 0x914A, 0xEFF8, 0x914B, 0xF5DC, 0x914C, 0xEDCC, 0x914D, 0xDBD5, 0x914E, 0xF1CF, 0x9152, 0xF1D0, 0x9162, 0xF5B2, + 0x9169, 0xD9AE, 0x916A, 0xD5AC, 0x916C, 0xE2C6, 0x9175, 0xFDA3, 0x9177, 0xFBE5, 0x9178, 0xDFAB, 0x9187, 0xE2F5, 0x9189, 0xF6AD, + 0x918B, 0xF5B3, 0x918D, 0xF0B5, 0x9192, 0xE1A5, 0x919C, 0xF5DD, 0x91AB, 0xECA2, 0x91AC, 0xEDFD, 0x91AE, 0xF5B4, 0x91AF, 0xFBB8, + 0x91B1, 0xDBA3, 0x91B4, 0xD6CA, 0x91B5, 0xCBD9, 0x91C0, 0xE5D4, 0x91C7, 0xF3FA, 0x91C9, 0xEBB8, 0x91CB, 0xE0B7, 0x91CC, 0xD7EC, + 0x91CD, 0xF1EC, 0x91CE, 0xE5AF, 0x91CF, 0xD5E1, 0x91D0, 0xD7ED, 0x91D1, 0xD1D1, 0x91D7, 0xE1F2, 0x91D8, 0xEFF9, 0x91DC, 0xDDBC, + 0x91DD, 0xF6DC, 0x91E3, 0xF0E5, 0x91E7, 0xF4C4, 0x91EA, 0xE9E9, 0x91F5, 0xF3FB, 0x920D, 0xD4EF, 0x9210, 0xCCA2, 0x9211, 0xF7FE, + 0x9212, 0xDFBC, 0x9217, 0xEBCD, 0x921E, 0xD0B7, 0x9234, 0xD6C2, 0x923A, 0xE8AD, 0x923F, 0xEFAF, 0x9240, 0xCBA5, 0x9245, 0xCBE9, + 0x9249, 0xFAE8, 0x9257, 0xCCC6, 0x925B, 0xE6E7, 0x925E, 0xEAC7, 0x9262, 0xDBA4, 0x9264, 0xCFC9, 0x9265, 0xE2FC, 0x9266, 0xEFFA, + 0x9280, 0xEBDE, 0x9283, 0xF5C8, 0x9285, 0xD4DE, 0x9291, 0xE0D5, 0x9293, 0xEFB0, 0x9296, 0xE2C7, 0x9298, 0xD9AF, 0x929C, 0xF9E7, + 0x92B3, 0xE7E5, 0x92B6, 0xCFCA, 0x92B7, 0xE1D1, 0x92B9, 0xE2C8, 0x92CC, 0xEFFB, 0x92CF, 0xFAF9, 0x92D2, 0xDCF2, 0x92E4, 0xE0A7, + 0x92EA, 0xF8E8, 0x92F8, 0xCBEA, 0x92FC, 0xCBBC, 0x9304, 0xD6E2, 0x9310, 0xF5DE, 0x9318, 0xF5DF, 0x931A, 0xEEB6, 0x931E, 0xE2F6, + 0x931F, 0xD3CA, 0x9320, 0xEFFC, 0x9321, 0xD1C4, 0x9322, 0xEFB1, 0x9324, 0xD1C5, 0x9326, 0xD0DE, 0x9328, 0xD9E1, 0x932B, 0xE0B8, + 0x932E, 0xCDD1, 0x932F, 0xF3B9, 0x9348, 0xE7CC, 0x934A, 0xD6A8, 0x934B, 0xCEA7, 0x934D, 0xD4B5, 0x9354, 0xE4C8, 0x935B, 0xD3B4, + 0x936E, 0xEBB9, 0x9375, 0xCBF5, 0x937C, 0xF6DD, 0x937E, 0xF1A3, 0x938C, 0xCCC7, 0x9394, 0xE9CA, 0x9396, 0xE1F0, 0x939A, 0xF5E0, + 0x93A3, 0xFBAF, 0x93A7, 0xCBD1, 0x93AC, 0xFBE0, 0x93AD, 0xF2E5, 0x93B0, 0xECF0, 0x93C3, 0xF0EC, 0x93D1, 0xEEEB, 0x93DE, 0xE9CB, + 0x93E1, 0xCCF0, 0x93E4, 0xD7AF, 0x93F6, 0xF3A1, 0x9404, 0xFCF5, 0x9418, 0xF1A4, 0x9425, 0xE0D6, 0x942B, 0xEFB2, 0x9435, 0xF4D1, + 0x9438, 0xF7A1, 0x9444, 0xF1D1, 0x9451, 0xCAFC, 0x9452, 0xCAFD, 0x945B, 0xCECE, 0x947D, 0xF3C8, 0x947F, 0xF3BA, 0x9577, 0xEDFE, + 0x9580, 0xDAA6, 0x9583, 0xE0EC, 0x9589, 0xF8CD, 0x958B, 0xCBD2, 0x958F, 0xEBCE, 0x9591, 0xF9D8, 0x9592, 0xF9D9, 0x9593, 0xCAE0, + 0x9594, 0xDACA, 0x9598, 0xCBA6, 0x95A3, 0xCAC8, 0x95A4, 0xF9EE, 0x95A5, 0xDBEC, 0x95A8, 0xD0B1, 0x95AD, 0xD5EF, 0x95B1, 0xE6F3, + 0x95BB, 0xE7A2, 0x95BC, 0xE4D9, 0x95C7, 0xE4E1, 0x95CA, 0xFCC4, 0x95D4, 0xF9EF, 0x95D5, 0xCFF4, 0x95D6, 0xF7E6, 0x95DC, 0xCEBC, + 0x95E1, 0xF4C5, 0x95E2, 0xDCA3, 0x961C, 0xDDBD, 0x9621, 0xF4C6, 0x962A, 0xF8A1, 0x962E, 0xE8D6, 0x9632, 0xDBC1, 0x963B, 0xF0E6, + 0x963F, 0xE4B9, 0x9640, 0xF6ED, 0x9642, 0xF9AE, 0x9644, 0xDDBE, 0x964B, 0xD7B0, 0x964C, 0xD8E8, 0x964D, 0xCBBD, 0x9650, 0xF9DA, + 0x965B, 0xF8CE, 0x965C, 0xF9F0, 0x965D, 0xE0ED, 0x965E, 0xE3B3, 0x965F, 0xF4B3, 0x9662, 0xEAC2, 0x9663, 0xF2E6, 0x9664, 0xF0B6, + 0x966A, 0xDBD6, 0x9670, 0xEBE4, 0x9673, 0xF2E7, 0x9675, 0xD7D5, 0x9676, 0xD4B6, 0x9677, 0xF9E8, 0x9678, 0xD7C1, 0x967D, 0xE5D5, + 0x9685, 0xE9EA, 0x9686, 0xD7CC, 0x968A, 0xD3E9, 0x968B, 0xE2C9, 0x968D, 0xFCDB, 0x968E, 0xCDAD, 0x9694, 0xCCB0, 0x9695, 0xEAA2, + 0x9698, 0xE4F6, 0x9699, 0xD0C0, 0x969B, 0xF0B7, 0x969C, 0xEEA1, 0x96A3, 0xD7F6, 0x96A7, 0xE2CA, 0x96A8, 0xE2CB, 0x96AA, 0xFACF, + 0x96B1, 0xEBDF, 0x96B7, 0xD6CB, 0x96BB, 0xF4B4, 0x96C0, 0xEDCD, 0x96C1, 0xE4D2, 0x96C4, 0xEAA9, 0x96C5, 0xE4BA, 0x96C6, 0xF3A2, + 0x96C7, 0xCDD2, 0x96C9, 0xF6CB, 0x96CB, 0xF1E6, 0x96CC, 0xEDC1, 0x96CD, 0xE8BC, 0x96CE, 0xEED1, 0x96D5, 0xF0E7, 0x96D6, 0xE2CC, + 0x96D9, 0xE4AA, 0x96DB, 0xF5E1, 0x96DC, 0xEDDA, 0x96E2, 0xD7EE, 0x96E3, 0xD1F1, 0x96E8, 0xE9EB, 0x96E9, 0xE9EC, 0x96EA, 0xE0E4, + 0x96EF, 0xDAA7, 0x96F0, 0xDDD4, 0x96F2, 0xEAA3, 0x96F6, 0xD6C3, 0x96F7, 0xD6F4, 0x96F9, 0xDADF, 0x96FB, 0xEFB3, 0x9700, 0xE2CD, + 0x9706, 0xEFFD, 0x9707, 0xF2E8, 0x9711, 0xEFC5, 0x9713, 0xE7E7, 0x9716, 0xD7FD, 0x9719, 0xE7CE, 0x971C, 0xDFDC, 0x971E, 0xF9C7, + 0x9727, 0xD9F6, 0x9730, 0xDFAC, 0x9732, 0xD6DA, 0x9739, 0xDCA4, 0x973D, 0xF0B8, 0x9742, 0xD5FA, 0x9744, 0xE4F7, 0x9748, 0xD6C4, + 0x9751, 0xF4EC, 0x9756, 0xEFFE, 0x975C, 0xF0A1, 0x975E, 0xDEAA, 0x9761, 0xDABC, 0x9762, 0xD8FC, 0x9769, 0xFAD4, 0x976D, 0xECE5, + 0x9774, 0xFCA8, 0x9777, 0xECE6, 0x977A, 0xD8CB, 0x978B, 0xFBB9, 0x978D, 0xE4D3, 0x978F, 0xCDF9, 0x97A0, 0xCFD3, 0x97A8, 0xCAEA, + 0x97AB, 0xCFD4, 0x97AD, 0xF8BD, 0x97C6, 0xF4C7, 0x97CB, 0xEADF, 0x97D3, 0xF9DB, 0x97DC, 0xD4B7, 0x97F3, 0xEBE5, 0x97F6, 0xE1D2, + 0x97FB, 0xEAA4, 0x97FF, 0xFAC2, 0x9800, 0xFBE1, 0x9801, 0xFAED, 0x9802, 0xF0A2, 0x9803, 0xCCF1, 0x9805, 0xFAA3, 0x9806, 0xE2F7, + 0x9808, 0xE2CE, 0x980A, 0xE9F5, 0x980C, 0xE1EB, 0x9810, 0xE7E8, 0x9811, 0xE8D7, 0x9812, 0xDAF8, 0x9813, 0xD4CB, 0x9817, 0xF7F6, + 0x9818, 0xD6C5, 0x982D, 0xD4E9, 0x9830, 0xFAFA, 0x9838, 0xCCF2, 0x9839, 0xF7DD, 0x983B, 0xDEBA, 0x9846, 0xCEA8, 0x984C, 0xF0B9, + 0x984D, 0xE4FE, 0x984E, 0xE4C9, 0x9854, 0xE4D4, 0x9858, 0xEAC3, 0x985A, 0xEFB4, 0x985E, 0xD7BE, 0x9865, 0xFBE2, 0x9867, 0xCDD3, + 0x986B, 0xEFB5, 0x986F, 0xFAE9, 0x98A8, 0xF9A6, 0x98AF, 0xDFBD, 0x98B1, 0xF7C7, 0x98C4, 0xF8FD, 0x98C7, 0xF8FC, 0x98DB, 0xDEAB, + 0x98DC, 0xDBE8, 0x98DF, 0xE3DD, 0x98E1, 0xE1E2, 0x98E2, 0xD1C6, 0x98ED, 0xF6D0, 0x98EE, 0xEBE6, 0x98EF, 0xDAF9, 0x98F4, 0xECC7, + 0x98FC, 0xDEF8, 0x98FD, 0xF8E9, 0x98FE, 0xE3DE, 0x9903, 0xCEF5, 0x9909, 0xFAC3, 0x990A, 0xE5D7, 0x990C, 0xECC8, 0x9910, 0xF3C9, + 0x9913, 0xE4BB, 0x9918, 0xE6AE, 0x991E, 0xEFB6, 0x9920, 0xDCBF, 0x9928, 0xCEBD, 0x9945, 0xD8C3, 0x9949, 0xD0CF, 0x994B, 0xCFFA, + 0x994C, 0xF3CA, 0x994D, 0xE0D7, 0x9951, 0xD1C7, 0x9952, 0xE9AE, 0x9954, 0xE8BD, 0x9957, 0xFAC4, 0x9996, 0xE2CF, 0x9999, 0xFAC5, + 0x999D, 0xF9B8, 0x99A5, 0xDCE0, 0x99A8, 0xFBB0, 0x99AC, 0xD8A9, 0x99AD, 0xE5DF, 0x99AE, 0xF9A7, 0x99B1, 0xF6EE, 0x99B3, 0xF6CC, + 0x99B4, 0xE2F8, 0x99B9, 0xECF1, 0x99C1, 0xDAE0, 0x99D0, 0xF1D2, 0x99D1, 0xD2CC, 0x99D2, 0xCFCB, 0x99D5, 0xCABD, 0x99D9, 0xDDBF, + 0x99DD, 0xF6EF, 0x99DF, 0xDEF9, 0x99ED, 0xFAB4, 0x99F1, 0xD5AD, 0x99FF, 0xF1E7, 0x9A01, 0xDEBE, 0x9A08, 0xDCC0, 0x9A0E, 0xD1C8, + 0x9A0F, 0xD1C9, 0x9A19, 0xF8BE, 0x9A2B, 0xCBF6, 0x9A30, 0xD4F9, 0x9A36, 0xF5E2, 0x9A37, 0xE1D3, 0x9A40, 0xD8E9, 0x9A43, 0xF8FE, + 0x9A45, 0xCFCC, 0x9A4D, 0xFDA4, 0x9A55, 0xCEF6, 0x9A57, 0xFAD0, 0x9A5A, 0xCCF3, 0x9A5B, 0xE6BE, 0x9A5F, 0xF6AE, 0x9A62, 0xD5F0, + 0x9A65, 0xD1CA, 0x9A69, 0xFCBE, 0x9A6A, 0xD5F1, 0x9AA8, 0xCDE9, 0x9AB8, 0xFAB5, 0x9AD3, 0xE2D0, 0x9AD4, 0xF4F7, 0x9AD8, 0xCDD4, + 0x9AE5, 0xE7A3, 0x9AEE, 0xDBA5, 0x9B1A, 0xE2D1, 0x9B27, 0xD7A2, 0x9B2A, 0xF7E3, 0x9B31, 0xEAA6, 0x9B3C, 0xD0A1, 0x9B41, 0xCEDA, + 0x9B42, 0xFBEB, 0x9B43, 0xDBA6, 0x9B44, 0xDBDE, 0x9B45, 0xD8E5, 0x9B4F, 0xEAE0, 0x9B54, 0xD8AA, 0x9B5A, 0xE5E0, 0x9B6F, 0xD6DB, + 0x9B8E, 0xEFC6, 0x9B91, 0xF8EA, 0x9B9F, 0xE4D5, 0x9BAB, 0xCEF7, 0x9BAE, 0xE0D8, 0x9BC9, 0xD7EF, 0x9BD6, 0xF4ED, 0x9BE4, 0xCDE6, + 0x9BE8, 0xCCF4, 0x9C0D, 0xF5E3, 0x9C10, 0xE4CA, 0x9C12, 0xDCE1, 0x9C15, 0xF9C8, 0x9C25, 0xFCBF, 0x9C32, 0xE8A7, 0x9C3B, 0xD8C4, + 0x9C47, 0xCBBE, 0x9C49, 0xDCAE, 0x9C57, 0xD7F7, 0x9CE5, 0xF0E8, 0x9CE7, 0xDDC0, 0x9CE9, 0xCFCD, 0x9CF3, 0xDCF3, 0x9CF4, 0xD9B0, + 0x9CF6, 0xE6E9, 0x9D09, 0xE4BC, 0x9D1B, 0xEAC4, 0x9D26, 0xE4EC, 0x9D28, 0xE4E5, 0x9D3B, 0xFBF8, 0x9D51, 0xCCBB, 0x9D5D, 0xE4BD, + 0x9D60, 0xCDDC, 0x9D61, 0xD9F7, 0x9D6C, 0xDDDF, 0x9D72, 0xEDCE, 0x9DA9, 0xD9D0, 0x9DAF, 0xE5A3, 0x9DB4, 0xF9CD, 0x9DC4, 0xCDAE, + 0x9DD7, 0xCFCE, 0x9DF2, 0xF6AF, 0x9DF8, 0xFDD3, 0x9DF9, 0xEBED, 0x9DFA, 0xD6DC, 0x9E1A, 0xE5A4, 0x9E1E, 0xD5B6, 0x9E75, 0xD6DD, + 0x9E79, 0xF9E9, 0x9E7D, 0xE7A4, 0x9E7F, 0xD6E3, 0x9E92, 0xD1CB, 0x9E93, 0xD6E4, 0x9E97, 0xD5F2, 0x9E9D, 0xDEFA, 0x9E9F, 0xD7F8, + 0x9EA5, 0xD8EA, 0x9EB4, 0xCFD5, 0x9EB5, 0xD8FD, 0x9EBB, 0xD8AB, 0x9EBE, 0xFDCB, 0x9EC3, 0xFCDC, 0x9ECD, 0xE0A8, 0x9ECE, 0xD5F3, + 0x9ED1, 0xFDD9, 0x9ED4, 0xCCA3, 0x9ED8, 0xD9F9, 0x9EDB, 0xD3EA, 0x9EDC, 0xF5F5, 0x9EDE, 0xEFC7, 0x9EE8, 0xD3DA, 0x9EF4, 0xDABD, + 0x9F07, 0xE8A8, 0x9F08, 0xDCAF, 0x9F0E, 0xF0A3, 0x9F13, 0xCDD5, 0x9F20, 0xE0A9, 0x9F3B, 0xDEAC, 0x9F4A, 0xF0BA, 0x9F4B, 0xEEB1, + 0x9F4E, 0xEEB2, 0x9F52, 0xF6CD, 0x9F5F, 0xEED2, 0x9F61, 0xD6C6, 0x9F67, 0xE0E5, 0x9F6A, 0xF3BB, 0x9F6C, 0xE5E1, 0x9F77, 0xE4CB, + 0x9F8D, 0xD7A3, 0x9F90, 0xDBC2, 0x9F95, 0xCAFE, 0x9F9C, 0xCFCF, 0xAC00, 0xB0A1, 0xAC01, 0xB0A2, 0xAC02, 0x8141, 0xAC03, 0x8142, + 0xAC04, 0xB0A3, 0xAC05, 0x8143, 0xAC06, 0x8144, 0xAC07, 0xB0A4, 0xAC08, 0xB0A5, 0xAC09, 0xB0A6, 0xAC0A, 0xB0A7, 0xAC0B, 0x8145, + 0xAC0C, 0x8146, 0xAC0D, 0x8147, 0xAC0E, 0x8148, 0xAC0F, 0x8149, 0xAC10, 0xB0A8, 0xAC11, 0xB0A9, 0xAC12, 0xB0AA, 0xAC13, 0xB0AB, + 0xAC14, 0xB0AC, 0xAC15, 0xB0AD, 0xAC16, 0xB0AE, 0xAC17, 0xB0AF, 0xAC18, 0x814A, 0xAC19, 0xB0B0, 0xAC1A, 0xB0B1, 0xAC1B, 0xB0B2, + 0xAC1C, 0xB0B3, 0xAC1D, 0xB0B4, 0xAC1E, 0x814B, 0xAC1F, 0x814C, 0xAC20, 0xB0B5, 0xAC21, 0x814D, 0xAC22, 0x814E, 0xAC23, 0x814F, + 0xAC24, 0xB0B6, 0xAC25, 0x8150, 0xAC26, 0x8151, 0xAC27, 0x8152, 0xAC28, 0x8153, 0xAC29, 0x8154, 0xAC2A, 0x8155, 0xAC2B, 0x8156, + 0xAC2C, 0xB0B7, 0xAC2D, 0xB0B8, 0xAC2E, 0x8157, 0xAC2F, 0xB0B9, 0xAC30, 0xB0BA, 0xAC31, 0xB0BB, 0xAC32, 0x8158, 0xAC33, 0x8159, + 0xAC34, 0x815A, 0xAC35, 0x8161, 0xAC36, 0x8162, 0xAC37, 0x8163, 0xAC38, 0xB0BC, 0xAC39, 0xB0BD, 0xAC3A, 0x8164, 0xAC3B, 0x8165, + 0xAC3C, 0xB0BE, 0xAC3D, 0x8166, 0xAC3E, 0x8167, 0xAC3F, 0x8168, 0xAC40, 0xB0BF, 0xAC41, 0x8169, 0xAC42, 0x816A, 0xAC43, 0x816B, + 0xAC44, 0x816C, 0xAC45, 0x816D, 0xAC46, 0x816E, 0xAC47, 0x816F, 0xAC48, 0x8170, 0xAC49, 0x8171, 0xAC4A, 0x8172, 0xAC4B, 0xB0C0, + 0xAC4C, 0x8173, 0xAC4D, 0xB0C1, 0xAC4E, 0x8174, 0xAC4F, 0x8175, 0xAC50, 0x8176, 0xAC51, 0x8177, 0xAC52, 0x8178, 0xAC53, 0x8179, + 0xAC54, 0xB0C2, 0xAC55, 0x817A, 0xAC56, 0x8181, 0xAC57, 0x8182, 0xAC58, 0xB0C3, 0xAC59, 0x8183, 0xAC5A, 0x8184, 0xAC5B, 0x8185, + 0xAC5C, 0xB0C4, 0xAC5D, 0x8186, 0xAC5E, 0x8187, 0xAC5F, 0x8188, 0xAC60, 0x8189, 0xAC61, 0x818A, 0xAC62, 0x818B, 0xAC63, 0x818C, + 0xAC64, 0x818D, 0xAC65, 0x818E, 0xAC66, 0x818F, 0xAC67, 0x8190, 0xAC68, 0x8191, 0xAC69, 0x8192, 0xAC6A, 0x8193, 0xAC6B, 0x8194, + 0xAC6C, 0x8195, 0xAC6D, 0x8196, 0xAC6E, 0x8197, 0xAC6F, 0x8198, 0xAC70, 0xB0C5, 0xAC71, 0xB0C6, 0xAC72, 0x8199, 0xAC73, 0x819A, + 0xAC74, 0xB0C7, 0xAC75, 0x819B, 0xAC76, 0x819C, 0xAC77, 0xB0C8, 0xAC78, 0xB0C9, 0xAC79, 0x819D, 0xAC7A, 0xB0CA, 0xAC7B, 0x819E, + 0xAC7C, 0x819F, 0xAC7D, 0x81A0, 0xAC7E, 0x81A1, 0xAC7F, 0x81A2, 0xAC80, 0xB0CB, 0xAC81, 0xB0CC, 0xAC82, 0x81A3, 0xAC83, 0xB0CD, + 0xAC84, 0xB0CE, 0xAC85, 0xB0CF, 0xAC86, 0xB0D0, 0xAC87, 0x81A4, 0xAC88, 0x81A5, 0xAC89, 0xB0D1, 0xAC8A, 0xB0D2, 0xAC8B, 0xB0D3, + 0xAC8C, 0xB0D4, 0xAC8D, 0x81A6, 0xAC8E, 0x81A7, 0xAC8F, 0x81A8, 0xAC90, 0xB0D5, 0xAC91, 0x81A9, 0xAC92, 0x81AA, 0xAC93, 0x81AB, + 0xAC94, 0xB0D6, 0xAC95, 0x81AC, 0xAC96, 0x81AD, 0xAC97, 0x81AE, 0xAC98, 0x81AF, 0xAC99, 0x81B0, 0xAC9A, 0x81B1, 0xAC9B, 0x81B2, + 0xAC9C, 0xB0D7, 0xAC9D, 0xB0D8, 0xAC9E, 0x81B3, 0xAC9F, 0xB0D9, 0xACA0, 0xB0DA, 0xACA1, 0xB0DB, 0xACA2, 0x81B4, 0xACA3, 0x81B5, + 0xACA4, 0x81B6, 0xACA5, 0x81B7, 0xACA6, 0x81B8, 0xACA7, 0x81B9, 0xACA8, 0xB0DC, 0xACA9, 0xB0DD, 0xACAA, 0xB0DE, 0xACAB, 0x81BA, + 0xACAC, 0xB0DF, 0xACAD, 0x81BB, 0xACAE, 0x81BC, 0xACAF, 0xB0E0, 0xACB0, 0xB0E1, 0xACB1, 0x81BD, 0xACB2, 0x81BE, 0xACB3, 0x81BF, + 0xACB4, 0x81C0, 0xACB5, 0x81C1, 0xACB6, 0x81C2, 0xACB7, 0x81C3, 0xACB8, 0xB0E2, 0xACB9, 0xB0E3, 0xACBA, 0x81C4, 0xACBB, 0xB0E4, + 0xACBC, 0xB0E5, 0xACBD, 0xB0E6, 0xACBE, 0x81C5, 0xACBF, 0x81C6, 0xACC0, 0x81C7, 0xACC1, 0xB0E7, 0xACC2, 0x81C8, 0xACC3, 0x81C9, + 0xACC4, 0xB0E8, 0xACC5, 0x81CA, 0xACC6, 0x81CB, 0xACC7, 0x81CC, 0xACC8, 0xB0E9, 0xACC9, 0x81CD, 0xACCA, 0x81CE, 0xACCB, 0x81CF, + 0xACCC, 0xB0EA, 0xACCD, 0x81D0, 0xACCE, 0x81D1, 0xACCF, 0x81D2, 0xACD0, 0x81D3, 0xACD1, 0x81D4, 0xACD2, 0x81D5, 0xACD3, 0x81D6, + 0xACD4, 0x81D7, 0xACD5, 0xB0EB, 0xACD6, 0x81D8, 0xACD7, 0xB0EC, 0xACD8, 0x81D9, 0xACD9, 0x81DA, 0xACDA, 0x81DB, 0xACDB, 0x81DC, + 0xACDC, 0x81DD, 0xACDD, 0x81DE, 0xACDE, 0x81DF, 0xACDF, 0x81E0, 0xACE0, 0xB0ED, 0xACE1, 0xB0EE, 0xACE2, 0x81E1, 0xACE3, 0x81E2, + 0xACE4, 0xB0EF, 0xACE5, 0x81E3, 0xACE6, 0x81E4, 0xACE7, 0xB0F0, 0xACE8, 0xB0F1, 0xACE9, 0x81E5, 0xACEA, 0xB0F2, 0xACEB, 0x81E6, + 0xACEC, 0xB0F3, 0xACED, 0x81E7, 0xACEE, 0x81E8, 0xACEF, 0xB0F4, 0xACF0, 0xB0F5, 0xACF1, 0xB0F6, 0xACF2, 0x81E9, 0xACF3, 0xB0F7, + 0xACF4, 0x81EA, 0xACF5, 0xB0F8, 0xACF6, 0xB0F9, 0xACF7, 0x81EB, 0xACF8, 0x81EC, 0xACF9, 0x81ED, 0xACFA, 0x81EE, 0xACFB, 0x81EF, + 0xACFC, 0xB0FA, 0xACFD, 0xB0FB, 0xACFE, 0x81F0, 0xACFF, 0x81F1, 0xAD00, 0xB0FC, 0xAD01, 0x81F2, 0xAD02, 0x81F3, 0xAD03, 0x81F4, + 0xAD04, 0xB0FD, 0xAD05, 0x81F5, 0xAD06, 0xB0FE, 0xAD07, 0x81F6, 0xAD08, 0x81F7, 0xAD09, 0x81F8, 0xAD0A, 0x81F9, 0xAD0B, 0x81FA, + 0xAD0C, 0xB1A1, 0xAD0D, 0xB1A2, 0xAD0E, 0x81FB, 0xAD0F, 0xB1A3, 0xAD10, 0x81FC, 0xAD11, 0xB1A4, 0xAD12, 0x81FD, 0xAD13, 0x81FE, + 0xAD14, 0x8241, 0xAD15, 0x8242, 0xAD16, 0x8243, 0xAD17, 0x8244, 0xAD18, 0xB1A5, 0xAD19, 0x8245, 0xAD1A, 0x8246, 0xAD1B, 0x8247, + 0xAD1C, 0xB1A6, 0xAD1D, 0x8248, 0xAD1E, 0x8249, 0xAD1F, 0x824A, 0xAD20, 0xB1A7, 0xAD21, 0x824B, 0xAD22, 0x824C, 0xAD23, 0x824D, + 0xAD24, 0x824E, 0xAD25, 0x824F, 0xAD26, 0x8250, 0xAD27, 0x8251, 0xAD28, 0x8252, 0xAD29, 0xB1A8, 0xAD2A, 0x8253, 0xAD2B, 0x8254, + 0xAD2C, 0xB1A9, 0xAD2D, 0xB1AA, 0xAD2E, 0x8255, 0xAD2F, 0x8256, 0xAD30, 0x8257, 0xAD31, 0x8258, 0xAD32, 0x8259, 0xAD33, 0x825A, + 0xAD34, 0xB1AB, 0xAD35, 0xB1AC, 0xAD36, 0x8261, 0xAD37, 0x8262, 0xAD38, 0xB1AD, 0xAD39, 0x8263, 0xAD3A, 0x8264, 0xAD3B, 0x8265, + 0xAD3C, 0xB1AE, 0xAD3D, 0x8266, 0xAD3E, 0x8267, 0xAD3F, 0x8268, 0xAD40, 0x8269, 0xAD41, 0x826A, 0xAD42, 0x826B, 0xAD43, 0x826C, + 0xAD44, 0xB1AF, 0xAD45, 0xB1B0, 0xAD46, 0x826D, 0xAD47, 0xB1B1, 0xAD48, 0x826E, 0xAD49, 0xB1B2, 0xAD4A, 0x826F, 0xAD4B, 0x8270, + 0xAD4C, 0x8271, 0xAD4D, 0x8272, 0xAD4E, 0x8273, 0xAD4F, 0x8274, 0xAD50, 0xB1B3, 0xAD51, 0x8275, 0xAD52, 0x8276, 0xAD53, 0x8277, + 0xAD54, 0xB1B4, 0xAD55, 0x8278, 0xAD56, 0x8279, 0xAD57, 0x827A, 0xAD58, 0xB1B5, 0xAD59, 0x8281, 0xAD5A, 0x8282, 0xAD5B, 0x8283, + 0xAD5C, 0x8284, 0xAD5D, 0x8285, 0xAD5E, 0x8286, 0xAD5F, 0x8287, 0xAD60, 0x8288, 0xAD61, 0xB1B6, 0xAD62, 0x8289, 0xAD63, 0xB1B7, + 0xAD64, 0x828A, 0xAD65, 0x828B, 0xAD66, 0x828C, 0xAD67, 0x828D, 0xAD68, 0x828E, 0xAD69, 0x828F, 0xAD6A, 0x8290, 0xAD6B, 0x8291, + 0xAD6C, 0xB1B8, 0xAD6D, 0xB1B9, 0xAD6E, 0x8292, 0xAD6F, 0x8293, 0xAD70, 0xB1BA, 0xAD71, 0x8294, 0xAD72, 0x8295, 0xAD73, 0xB1BB, + 0xAD74, 0xB1BC, 0xAD75, 0xB1BD, 0xAD76, 0xB1BE, 0xAD77, 0x8296, 0xAD78, 0x8297, 0xAD79, 0x8298, 0xAD7A, 0x8299, 0xAD7B, 0xB1BF, + 0xAD7C, 0xB1C0, 0xAD7D, 0xB1C1, 0xAD7E, 0x829A, 0xAD7F, 0xB1C2, 0xAD80, 0x829B, 0xAD81, 0xB1C3, 0xAD82, 0xB1C4, 0xAD83, 0x829C, + 0xAD84, 0x829D, 0xAD85, 0x829E, 0xAD86, 0x829F, 0xAD87, 0x82A0, 0xAD88, 0xB1C5, 0xAD89, 0xB1C6, 0xAD8A, 0x82A1, 0xAD8B, 0x82A2, + 0xAD8C, 0xB1C7, 0xAD8D, 0x82A3, 0xAD8E, 0x82A4, 0xAD8F, 0x82A5, 0xAD90, 0xB1C8, 0xAD91, 0x82A6, 0xAD92, 0x82A7, 0xAD93, 0x82A8, + 0xAD94, 0x82A9, 0xAD95, 0x82AA, 0xAD96, 0x82AB, 0xAD97, 0x82AC, 0xAD98, 0x82AD, 0xAD99, 0x82AE, 0xAD9A, 0x82AF, 0xAD9B, 0x82B0, + 0xAD9C, 0xB1C9, 0xAD9D, 0xB1CA, 0xAD9E, 0x82B1, 0xAD9F, 0x82B2, 0xADA0, 0x82B3, 0xADA1, 0x82B4, 0xADA2, 0x82B5, 0xADA3, 0x82B6, + 0xADA4, 0xB1CB, 0xADA5, 0x82B7, 0xADA6, 0x82B8, 0xADA7, 0x82B9, 0xADA8, 0x82BA, 0xADA9, 0x82BB, 0xADAA, 0x82BC, 0xADAB, 0x82BD, + 0xADAC, 0x82BE, 0xADAD, 0x82BF, 0xADAE, 0x82C0, 0xADAF, 0x82C1, 0xADB0, 0x82C2, 0xADB1, 0x82C3, 0xADB2, 0x82C4, 0xADB3, 0x82C5, + 0xADB4, 0x82C6, 0xADB5, 0x82C7, 0xADB6, 0x82C8, 0xADB7, 0xB1CC, 0xADB8, 0x82C9, 0xADB9, 0x82CA, 0xADBA, 0x82CB, 0xADBB, 0x82CC, + 0xADBC, 0x82CD, 0xADBD, 0x82CE, 0xADBE, 0x82CF, 0xADBF, 0x82D0, 0xADC0, 0xB1CD, 0xADC1, 0xB1CE, 0xADC2, 0x82D1, 0xADC3, 0x82D2, + 0xADC4, 0xB1CF, 0xADC5, 0x82D3, 0xADC6, 0x82D4, 0xADC7, 0x82D5, 0xADC8, 0xB1D0, 0xADC9, 0x82D6, 0xADCA, 0x82D7, 0xADCB, 0x82D8, + 0xADCC, 0x82D9, 0xADCD, 0x82DA, 0xADCE, 0x82DB, 0xADCF, 0x82DC, 0xADD0, 0xB1D1, 0xADD1, 0xB1D2, 0xADD2, 0x82DD, 0xADD3, 0xB1D3, + 0xADD4, 0x82DE, 0xADD5, 0x82DF, 0xADD6, 0x82E0, 0xADD7, 0x82E1, 0xADD8, 0x82E2, 0xADD9, 0x82E3, 0xADDA, 0x82E4, 0xADDB, 0x82E5, + 0xADDC, 0xB1D4, 0xADDD, 0x82E6, 0xADDE, 0x82E7, 0xADDF, 0x82E8, 0xADE0, 0xB1D5, 0xADE1, 0x82E9, 0xADE2, 0x82EA, 0xADE3, 0x82EB, + 0xADE4, 0xB1D6, 0xADE5, 0x82EC, 0xADE6, 0x82ED, 0xADE7, 0x82EE, 0xADE8, 0x82EF, 0xADE9, 0x82F0, 0xADEA, 0x82F1, 0xADEB, 0x82F2, + 0xADEC, 0x82F3, 0xADED, 0x82F4, 0xADEE, 0x82F5, 0xADEF, 0x82F6, 0xADF0, 0x82F7, 0xADF1, 0x82F8, 0xADF2, 0x82F9, 0xADF3, 0x82FA, + 0xADF4, 0x82FB, 0xADF5, 0x82FC, 0xADF6, 0x82FD, 0xADF7, 0x82FE, 0xADF8, 0xB1D7, 0xADF9, 0xB1D8, 0xADFA, 0x8341, 0xADFB, 0x8342, + 0xADFC, 0xB1D9, 0xADFD, 0x8343, 0xADFE, 0x8344, 0xADFF, 0xB1DA, 0xAE00, 0xB1DB, 0xAE01, 0xB1DC, 0xAE02, 0x8345, 0xAE03, 0x8346, + 0xAE04, 0x8347, 0xAE05, 0x8348, 0xAE06, 0x8349, 0xAE07, 0x834A, 0xAE08, 0xB1DD, 0xAE09, 0xB1DE, 0xAE0A, 0x834B, 0xAE0B, 0xB1DF, + 0xAE0C, 0x834C, 0xAE0D, 0xB1E0, 0xAE0E, 0x834D, 0xAE0F, 0x834E, 0xAE10, 0x834F, 0xAE11, 0x8350, 0xAE12, 0x8351, 0xAE13, 0x8352, + 0xAE14, 0xB1E1, 0xAE15, 0x8353, 0xAE16, 0x8354, 0xAE17, 0x8355, 0xAE18, 0x8356, 0xAE19, 0x8357, 0xAE1A, 0x8358, 0xAE1B, 0x8359, + 0xAE1C, 0x835A, 0xAE1D, 0x8361, 0xAE1E, 0x8362, 0xAE1F, 0x8363, 0xAE20, 0x8364, 0xAE21, 0x8365, 0xAE22, 0x8366, 0xAE23, 0x8367, + 0xAE24, 0x8368, 0xAE25, 0x8369, 0xAE26, 0x836A, 0xAE27, 0x836B, 0xAE28, 0x836C, 0xAE29, 0x836D, 0xAE2A, 0x836E, 0xAE2B, 0x836F, + 0xAE2C, 0x8370, 0xAE2D, 0x8371, 0xAE2E, 0x8372, 0xAE2F, 0x8373, 0xAE30, 0xB1E2, 0xAE31, 0xB1E3, 0xAE32, 0x8374, 0xAE33, 0x8375, + 0xAE34, 0xB1E4, 0xAE35, 0x8376, 0xAE36, 0x8377, 0xAE37, 0xB1E5, 0xAE38, 0xB1E6, 0xAE39, 0x8378, 0xAE3A, 0xB1E7, 0xAE3B, 0x8379, + 0xAE3C, 0x837A, 0xAE3D, 0x8381, 0xAE3E, 0x8382, 0xAE3F, 0x8383, 0xAE40, 0xB1E8, 0xAE41, 0xB1E9, 0xAE42, 0x8384, 0xAE43, 0xB1EA, + 0xAE44, 0x8385, 0xAE45, 0xB1EB, 0xAE46, 0xB1EC, 0xAE47, 0x8386, 0xAE48, 0x8387, 0xAE49, 0x8388, 0xAE4A, 0xB1ED, 0xAE4B, 0x8389, + 0xAE4C, 0xB1EE, 0xAE4D, 0xB1EF, 0xAE4E, 0xB1F0, 0xAE4F, 0x838A, 0xAE50, 0xB1F1, 0xAE51, 0x838B, 0xAE52, 0x838C, 0xAE53, 0x838D, + 0xAE54, 0xB1F2, 0xAE55, 0x838E, 0xAE56, 0xB1F3, 0xAE57, 0x838F, 0xAE58, 0x8390, 0xAE59, 0x8391, 0xAE5A, 0x8392, 0xAE5B, 0x8393, + 0xAE5C, 0xB1F4, 0xAE5D, 0xB1F5, 0xAE5E, 0x8394, 0xAE5F, 0xB1F6, 0xAE60, 0xB1F7, 0xAE61, 0xB1F8, 0xAE62, 0x8395, 0xAE63, 0x8396, + 0xAE64, 0x8397, 0xAE65, 0xB1F9, 0xAE66, 0x8398, 0xAE67, 0x8399, 0xAE68, 0xB1FA, 0xAE69, 0xB1FB, 0xAE6A, 0x839A, 0xAE6B, 0x839B, + 0xAE6C, 0xB1FC, 0xAE6D, 0x839C, 0xAE6E, 0x839D, 0xAE6F, 0x839E, 0xAE70, 0xB1FD, 0xAE71, 0x839F, 0xAE72, 0x83A0, 0xAE73, 0x83A1, + 0xAE74, 0x83A2, 0xAE75, 0x83A3, 0xAE76, 0x83A4, 0xAE77, 0x83A5, 0xAE78, 0xB1FE, 0xAE79, 0xB2A1, 0xAE7A, 0x83A6, 0xAE7B, 0xB2A2, + 0xAE7C, 0xB2A3, 0xAE7D, 0xB2A4, 0xAE7E, 0x83A7, 0xAE7F, 0x83A8, 0xAE80, 0x83A9, 0xAE81, 0x83AA, 0xAE82, 0x83AB, 0xAE83, 0x83AC, + 0xAE84, 0xB2A5, 0xAE85, 0xB2A6, 0xAE86, 0x83AD, 0xAE87, 0x83AE, 0xAE88, 0x83AF, 0xAE89, 0x83B0, 0xAE8A, 0x83B1, 0xAE8B, 0x83B2, + 0xAE8C, 0xB2A7, 0xAE8D, 0x83B3, 0xAE8E, 0x83B4, 0xAE8F, 0x83B5, 0xAE90, 0x83B6, 0xAE91, 0x83B7, 0xAE92, 0x83B8, 0xAE93, 0x83B9, + 0xAE94, 0x83BA, 0xAE95, 0x83BB, 0xAE96, 0x83BC, 0xAE97, 0x83BD, 0xAE98, 0x83BE, 0xAE99, 0x83BF, 0xAE9A, 0x83C0, 0xAE9B, 0x83C1, + 0xAE9C, 0x83C2, 0xAE9D, 0x83C3, 0xAE9E, 0x83C4, 0xAE9F, 0x83C5, 0xAEA0, 0x83C6, 0xAEA1, 0x83C7, 0xAEA2, 0x83C8, 0xAEA3, 0x83C9, + 0xAEA4, 0x83CA, 0xAEA5, 0x83CB, 0xAEA6, 0x83CC, 0xAEA7, 0x83CD, 0xAEA8, 0x83CE, 0xAEA9, 0x83CF, 0xAEAA, 0x83D0, 0xAEAB, 0x83D1, + 0xAEAC, 0x83D2, 0xAEAD, 0x83D3, 0xAEAE, 0x83D4, 0xAEAF, 0x83D5, 0xAEB0, 0x83D6, 0xAEB1, 0x83D7, 0xAEB2, 0x83D8, 0xAEB3, 0x83D9, + 0xAEB4, 0x83DA, 0xAEB5, 0x83DB, 0xAEB6, 0x83DC, 0xAEB7, 0x83DD, 0xAEB8, 0x83DE, 0xAEB9, 0x83DF, 0xAEBA, 0x83E0, 0xAEBB, 0x83E1, + 0xAEBC, 0xB2A8, 0xAEBD, 0xB2A9, 0xAEBE, 0xB2AA, 0xAEBF, 0x83E2, 0xAEC0, 0xB2AB, 0xAEC1, 0x83E3, 0xAEC2, 0x83E4, 0xAEC3, 0x83E5, + 0xAEC4, 0xB2AC, 0xAEC5, 0x83E6, 0xAEC6, 0x83E7, 0xAEC7, 0x83E8, 0xAEC8, 0x83E9, 0xAEC9, 0x83EA, 0xAECA, 0x83EB, 0xAECB, 0x83EC, + 0xAECC, 0xB2AD, 0xAECD, 0xB2AE, 0xAECE, 0x83ED, 0xAECF, 0xB2AF, 0xAED0, 0xB2B0, 0xAED1, 0xB2B1, 0xAED2, 0x83EE, 0xAED3, 0x83EF, + 0xAED4, 0x83F0, 0xAED5, 0x83F1, 0xAED6, 0x83F2, 0xAED7, 0x83F3, 0xAED8, 0xB2B2, 0xAED9, 0xB2B3, 0xAEDA, 0x83F4, 0xAEDB, 0x83F5, + 0xAEDC, 0xB2B4, 0xAEDD, 0x83F6, 0xAEDE, 0x83F7, 0xAEDF, 0x83F8, 0xAEE0, 0x83F9, 0xAEE1, 0x83FA, 0xAEE2, 0x83FB, 0xAEE3, 0x83FC, + 0xAEE4, 0x83FD, 0xAEE5, 0x83FE, 0xAEE6, 0x8441, 0xAEE7, 0x8442, 0xAEE8, 0xB2B5, 0xAEE9, 0x8443, 0xAEEA, 0x8444, 0xAEEB, 0xB2B6, + 0xAEEC, 0x8445, 0xAEED, 0xB2B7, 0xAEEE, 0x8446, 0xAEEF, 0x8447, 0xAEF0, 0x8448, 0xAEF1, 0x8449, 0xAEF2, 0x844A, 0xAEF3, 0x844B, + 0xAEF4, 0xB2B8, 0xAEF5, 0x844C, 0xAEF6, 0x844D, 0xAEF7, 0x844E, 0xAEF8, 0xB2B9, 0xAEF9, 0x844F, 0xAEFA, 0x8450, 0xAEFB, 0x8451, + 0xAEFC, 0xB2BA, 0xAEFD, 0x8452, 0xAEFE, 0x8453, 0xAEFF, 0x8454, 0xAF00, 0x8455, 0xAF01, 0x8456, 0xAF02, 0x8457, 0xAF03, 0x8458, + 0xAF04, 0x8459, 0xAF05, 0x845A, 0xAF06, 0x8461, 0xAF07, 0xB2BB, 0xAF08, 0xB2BC, 0xAF09, 0x8462, 0xAF0A, 0x8463, 0xAF0B, 0x8464, + 0xAF0C, 0x8465, 0xAF0D, 0xB2BD, 0xAF0E, 0x8466, 0xAF0F, 0x8467, 0xAF10, 0xB2BE, 0xAF11, 0x8468, 0xAF12, 0x8469, 0xAF13, 0x846A, + 0xAF14, 0x846B, 0xAF15, 0x846C, 0xAF16, 0x846D, 0xAF17, 0x846E, 0xAF18, 0x846F, 0xAF19, 0x8470, 0xAF1A, 0x8471, 0xAF1B, 0x8472, + 0xAF1C, 0x8473, 0xAF1D, 0x8474, 0xAF1E, 0x8475, 0xAF1F, 0x8476, 0xAF20, 0x8477, 0xAF21, 0x8478, 0xAF22, 0x8479, 0xAF23, 0x847A, + 0xAF24, 0x8481, 0xAF25, 0x8482, 0xAF26, 0x8483, 0xAF27, 0x8484, 0xAF28, 0x8485, 0xAF29, 0x8486, 0xAF2A, 0x8487, 0xAF2B, 0x8488, + 0xAF2C, 0xB2BF, 0xAF2D, 0xB2C0, 0xAF2E, 0x8489, 0xAF2F, 0x848A, 0xAF30, 0xB2C1, 0xAF31, 0x848B, 0xAF32, 0xB2C2, 0xAF33, 0x848C, + 0xAF34, 0xB2C3, 0xAF35, 0x848D, 0xAF36, 0x848E, 0xAF37, 0x848F, 0xAF38, 0x8490, 0xAF39, 0x8491, 0xAF3A, 0x8492, 0xAF3B, 0x8493, + 0xAF3C, 0xB2C4, 0xAF3D, 0xB2C5, 0xAF3E, 0x8494, 0xAF3F, 0xB2C6, 0xAF40, 0x8495, 0xAF41, 0xB2C7, 0xAF42, 0xB2C8, 0xAF43, 0xB2C9, + 0xAF44, 0x8496, 0xAF45, 0x8497, 0xAF46, 0x8498, 0xAF47, 0x8499, 0xAF48, 0xB2CA, 0xAF49, 0xB2CB, 0xAF4A, 0x849A, 0xAF4B, 0x849B, + 0xAF4C, 0x849C, 0xAF4D, 0x849D, 0xAF4E, 0x849E, 0xAF4F, 0x849F, 0xAF50, 0xB2CC, 0xAF51, 0x84A0, 0xAF52, 0x84A1, 0xAF53, 0x84A2, + 0xAF54, 0x84A3, 0xAF55, 0x84A4, 0xAF56, 0x84A5, 0xAF57, 0x84A6, 0xAF58, 0x84A7, 0xAF59, 0x84A8, 0xAF5A, 0x84A9, 0xAF5B, 0x84AA, + 0xAF5C, 0xB2CD, 0xAF5D, 0xB2CE, 0xAF5E, 0x84AB, 0xAF5F, 0x84AC, 0xAF60, 0x84AD, 0xAF61, 0x84AE, 0xAF62, 0x84AF, 0xAF63, 0x84B0, + 0xAF64, 0xB2CF, 0xAF65, 0xB2D0, 0xAF66, 0x84B1, 0xAF67, 0x84B2, 0xAF68, 0x84B3, 0xAF69, 0x84B4, 0xAF6A, 0x84B5, 0xAF6B, 0x84B6, + 0xAF6C, 0x84B7, 0xAF6D, 0x84B8, 0xAF6E, 0x84B9, 0xAF6F, 0x84BA, 0xAF70, 0x84BB, 0xAF71, 0x84BC, 0xAF72, 0x84BD, 0xAF73, 0x84BE, + 0xAF74, 0x84BF, 0xAF75, 0x84C0, 0xAF76, 0x84C1, 0xAF77, 0x84C2, 0xAF78, 0x84C3, 0xAF79, 0xB2D1, 0xAF7A, 0x84C4, 0xAF7B, 0x84C5, + 0xAF7C, 0x84C6, 0xAF7D, 0x84C7, 0xAF7E, 0x84C8, 0xAF7F, 0x84C9, 0xAF80, 0xB2D2, 0xAF81, 0x84CA, 0xAF82, 0x84CB, 0xAF83, 0x84CC, + 0xAF84, 0xB2D3, 0xAF85, 0x84CD, 0xAF86, 0x84CE, 0xAF87, 0x84CF, 0xAF88, 0xB2D4, 0xAF89, 0x84D0, 0xAF8A, 0x84D1, 0xAF8B, 0x84D2, + 0xAF8C, 0x84D3, 0xAF8D, 0x84D4, 0xAF8E, 0x84D5, 0xAF8F, 0x84D6, 0xAF90, 0xB2D5, 0xAF91, 0xB2D6, 0xAF92, 0x84D7, 0xAF93, 0x84D8, + 0xAF94, 0x84D9, 0xAF95, 0xB2D7, 0xAF96, 0x84DA, 0xAF97, 0x84DB, 0xAF98, 0x84DC, 0xAF99, 0x84DD, 0xAF9A, 0x84DE, 0xAF9B, 0x84DF, + 0xAF9C, 0xB2D8, 0xAF9D, 0x84E0, 0xAF9E, 0x84E1, 0xAF9F, 0x84E2, 0xAFA0, 0x84E3, 0xAFA1, 0x84E4, 0xAFA2, 0x84E5, 0xAFA3, 0x84E6, + 0xAFA4, 0x84E7, 0xAFA5, 0x84E8, 0xAFA6, 0x84E9, 0xAFA7, 0x84EA, 0xAFA8, 0x84EB, 0xAFA9, 0x84EC, 0xAFAA, 0x84ED, 0xAFAB, 0x84EE, + 0xAFAC, 0x84EF, 0xAFAD, 0x84F0, 0xAFAE, 0x84F1, 0xAFAF, 0x84F2, 0xAFB0, 0x84F3, 0xAFB1, 0x84F4, 0xAFB2, 0x84F5, 0xAFB3, 0x84F6, + 0xAFB4, 0x84F7, 0xAFB5, 0x84F8, 0xAFB6, 0x84F9, 0xAFB7, 0x84FA, 0xAFB8, 0xB2D9, 0xAFB9, 0xB2DA, 0xAFBA, 0x84FB, 0xAFBB, 0x84FC, + 0xAFBC, 0xB2DB, 0xAFBD, 0x84FD, 0xAFBE, 0x84FE, 0xAFBF, 0x8541, 0xAFC0, 0xB2DC, 0xAFC1, 0x8542, 0xAFC2, 0x8543, 0xAFC3, 0x8544, + 0xAFC4, 0x8545, 0xAFC5, 0x8546, 0xAFC6, 0x8547, 0xAFC7, 0xB2DD, 0xAFC8, 0xB2DE, 0xAFC9, 0xB2DF, 0xAFCA, 0x8548, 0xAFCB, 0xB2E0, + 0xAFCC, 0x8549, 0xAFCD, 0xB2E1, 0xAFCE, 0xB2E2, 0xAFCF, 0x854A, 0xAFD0, 0x854B, 0xAFD1, 0x854C, 0xAFD2, 0x854D, 0xAFD3, 0x854E, + 0xAFD4, 0xB2E3, 0xAFD5, 0x854F, 0xAFD6, 0x8550, 0xAFD7, 0x8551, 0xAFD8, 0x8552, 0xAFD9, 0x8553, 0xAFDA, 0x8554, 0xAFDB, 0x8555, + 0xAFDC, 0xB2E4, 0xAFDD, 0x8556, 0xAFDE, 0x8557, 0xAFDF, 0x8558, 0xAFE0, 0x8559, 0xAFE1, 0x855A, 0xAFE2, 0x8561, 0xAFE3, 0x8562, + 0xAFE4, 0x8563, 0xAFE5, 0x8564, 0xAFE6, 0x8565, 0xAFE7, 0x8566, 0xAFE8, 0xB2E5, 0xAFE9, 0xB2E6, 0xAFEA, 0x8567, 0xAFEB, 0x8568, + 0xAFEC, 0x8569, 0xAFED, 0x856A, 0xAFEE, 0x856B, 0xAFEF, 0x856C, 0xAFF0, 0xB2E7, 0xAFF1, 0xB2E8, 0xAFF2, 0x856D, 0xAFF3, 0x856E, + 0xAFF4, 0xB2E9, 0xAFF5, 0x856F, 0xAFF6, 0x8570, 0xAFF7, 0x8571, 0xAFF8, 0xB2EA, 0xAFF9, 0x8572, 0xAFFA, 0x8573, 0xAFFB, 0x8574, + 0xAFFC, 0x8575, 0xAFFD, 0x8576, 0xAFFE, 0x8577, 0xAFFF, 0x8578, 0xB000, 0xB2EB, 0xB001, 0xB2EC, 0xB002, 0x8579, 0xB003, 0x857A, + 0xB004, 0xB2ED, 0xB005, 0x8581, 0xB006, 0x8582, 0xB007, 0x8583, 0xB008, 0x8584, 0xB009, 0x8585, 0xB00A, 0x8586, 0xB00B, 0x8587, + 0xB00C, 0xB2EE, 0xB00D, 0x8588, 0xB00E, 0x8589, 0xB00F, 0x858A, 0xB010, 0xB2EF, 0xB011, 0x858B, 0xB012, 0x858C, 0xB013, 0x858D, + 0xB014, 0xB2F0, 0xB015, 0x858E, 0xB016, 0x858F, 0xB017, 0x8590, 0xB018, 0x8591, 0xB019, 0x8592, 0xB01A, 0x8593, 0xB01B, 0x8594, + 0xB01C, 0xB2F1, 0xB01D, 0xB2F2, 0xB01E, 0x8595, 0xB01F, 0x8596, 0xB020, 0x8597, 0xB021, 0x8598, 0xB022, 0x8599, 0xB023, 0x859A, + 0xB024, 0x859B, 0xB025, 0x859C, 0xB026, 0x859D, 0xB027, 0x859E, 0xB028, 0xB2F3, 0xB029, 0x859F, 0xB02A, 0x85A0, 0xB02B, 0x85A1, + 0xB02C, 0x85A2, 0xB02D, 0x85A3, 0xB02E, 0x85A4, 0xB02F, 0x85A5, 0xB030, 0x85A6, 0xB031, 0x85A7, 0xB032, 0x85A8, 0xB033, 0x85A9, + 0xB034, 0x85AA, 0xB035, 0x85AB, 0xB036, 0x85AC, 0xB037, 0x85AD, 0xB038, 0x85AE, 0xB039, 0x85AF, 0xB03A, 0x85B0, 0xB03B, 0x85B1, + 0xB03C, 0x85B2, 0xB03D, 0x85B3, 0xB03E, 0x85B4, 0xB03F, 0x85B5, 0xB040, 0x85B6, 0xB041, 0x85B7, 0xB042, 0x85B8, 0xB043, 0x85B9, + 0xB044, 0xB2F4, 0xB045, 0xB2F5, 0xB046, 0x85BA, 0xB047, 0x85BB, 0xB048, 0xB2F6, 0xB049, 0x85BC, 0xB04A, 0xB2F7, 0xB04B, 0x85BD, + 0xB04C, 0xB2F8, 0xB04D, 0x85BE, 0xB04E, 0xB2F9, 0xB04F, 0x85BF, 0xB050, 0x85C0, 0xB051, 0x85C1, 0xB052, 0x85C2, 0xB053, 0xB2FA, + 0xB054, 0xB2FB, 0xB055, 0xB2FC, 0xB056, 0x85C3, 0xB057, 0xB2FD, 0xB058, 0x85C4, 0xB059, 0xB2FE, 0xB05A, 0x85C5, 0xB05B, 0x85C6, + 0xB05C, 0x85C7, 0xB05D, 0xB3A1, 0xB05E, 0x85C8, 0xB05F, 0x85C9, 0xB060, 0x85CA, 0xB061, 0x85CB, 0xB062, 0x85CC, 0xB063, 0x85CD, + 0xB064, 0x85CE, 0xB065, 0x85CF, 0xB066, 0x85D0, 0xB067, 0x85D1, 0xB068, 0x85D2, 0xB069, 0x85D3, 0xB06A, 0x85D4, 0xB06B, 0x85D5, + 0xB06C, 0x85D6, 0xB06D, 0x85D7, 0xB06E, 0x85D8, 0xB06F, 0x85D9, 0xB070, 0x85DA, 0xB071, 0x85DB, 0xB072, 0x85DC, 0xB073, 0x85DD, + 0xB074, 0x85DE, 0xB075, 0x85DF, 0xB076, 0x85E0, 0xB077, 0x85E1, 0xB078, 0x85E2, 0xB079, 0x85E3, 0xB07A, 0x85E4, 0xB07B, 0x85E5, + 0xB07C, 0xB3A2, 0xB07D, 0xB3A3, 0xB07E, 0x85E6, 0xB07F, 0x85E7, 0xB080, 0xB3A4, 0xB081, 0x85E8, 0xB082, 0x85E9, 0xB083, 0x85EA, + 0xB084, 0xB3A5, 0xB085, 0x85EB, 0xB086, 0x85EC, 0xB087, 0x85ED, 0xB088, 0x85EE, 0xB089, 0x85EF, 0xB08A, 0x85F0, 0xB08B, 0x85F1, + 0xB08C, 0xB3A6, 0xB08D, 0xB3A7, 0xB08E, 0x85F2, 0xB08F, 0xB3A8, 0xB090, 0x85F3, 0xB091, 0xB3A9, 0xB092, 0x85F4, 0xB093, 0x85F5, + 0xB094, 0x85F6, 0xB095, 0x85F7, 0xB096, 0x85F8, 0xB097, 0x85F9, 0xB098, 0xB3AA, 0xB099, 0xB3AB, 0xB09A, 0xB3AC, 0xB09B, 0x85FA, + 0xB09C, 0xB3AD, 0xB09D, 0x85FB, 0xB09E, 0x85FC, 0xB09F, 0xB3AE, 0xB0A0, 0xB3AF, 0xB0A1, 0xB3B0, 0xB0A2, 0xB3B1, 0xB0A3, 0x85FD, + 0xB0A4, 0x85FE, 0xB0A5, 0x8641, 0xB0A6, 0x8642, 0xB0A7, 0x8643, 0xB0A8, 0xB3B2, 0xB0A9, 0xB3B3, 0xB0AA, 0x8644, 0xB0AB, 0xB3B4, + 0xB0AC, 0xB3B5, 0xB0AD, 0xB3B6, 0xB0AE, 0xB3B7, 0xB0AF, 0xB3B8, 0xB0B0, 0x8645, 0xB0B1, 0xB3B9, 0xB0B2, 0x8646, 0xB0B3, 0xB3BA, + 0xB0B4, 0xB3BB, 0xB0B5, 0xB3BC, 0xB0B6, 0x8647, 0xB0B7, 0x8648, 0xB0B8, 0xB3BD, 0xB0B9, 0x8649, 0xB0BA, 0x864A, 0xB0BB, 0x864B, + 0xB0BC, 0xB3BE, 0xB0BD, 0x864C, 0xB0BE, 0x864D, 0xB0BF, 0x864E, 0xB0C0, 0x864F, 0xB0C1, 0x8650, 0xB0C2, 0x8651, 0xB0C3, 0x8652, + 0xB0C4, 0xB3BF, 0xB0C5, 0xB3C0, 0xB0C6, 0x8653, 0xB0C7, 0xB3C1, 0xB0C8, 0xB3C2, 0xB0C9, 0xB3C3, 0xB0CA, 0x8654, 0xB0CB, 0x8655, + 0xB0CC, 0x8656, 0xB0CD, 0x8657, 0xB0CE, 0x8658, 0xB0CF, 0x8659, 0xB0D0, 0xB3C4, 0xB0D1, 0xB3C5, 0xB0D2, 0x865A, 0xB0D3, 0x8661, + 0xB0D4, 0xB3C6, 0xB0D5, 0x8662, 0xB0D6, 0x8663, 0xB0D7, 0x8664, 0xB0D8, 0xB3C7, 0xB0D9, 0x8665, 0xB0DA, 0x8666, 0xB0DB, 0x8667, + 0xB0DC, 0x8668, 0xB0DD, 0x8669, 0xB0DE, 0x866A, 0xB0DF, 0x866B, 0xB0E0, 0xB3C8, 0xB0E1, 0x866C, 0xB0E2, 0x866D, 0xB0E3, 0x866E, + 0xB0E4, 0x866F, 0xB0E5, 0xB3C9, 0xB0E6, 0x8670, 0xB0E7, 0x8671, 0xB0E8, 0x8672, 0xB0E9, 0x8673, 0xB0EA, 0x8674, 0xB0EB, 0x8675, + 0xB0EC, 0x8676, 0xB0ED, 0x8677, 0xB0EE, 0x8678, 0xB0EF, 0x8679, 0xB0F0, 0x867A, 0xB0F1, 0x8681, 0xB0F2, 0x8682, 0xB0F3, 0x8683, + 0xB0F4, 0x8684, 0xB0F5, 0x8685, 0xB0F6, 0x8686, 0xB0F7, 0x8687, 0xB0F8, 0x8688, 0xB0F9, 0x8689, 0xB0FA, 0x868A, 0xB0FB, 0x868B, + 0xB0FC, 0x868C, 0xB0FD, 0x868D, 0xB0FE, 0x868E, 0xB0FF, 0x868F, 0xB100, 0x8690, 0xB101, 0x8691, 0xB102, 0x8692, 0xB103, 0x8693, + 0xB104, 0x8694, 0xB105, 0x8695, 0xB106, 0x8696, 0xB107, 0x8697, 0xB108, 0xB3CA, 0xB109, 0xB3CB, 0xB10A, 0x8698, 0xB10B, 0xB3CC, + 0xB10C, 0xB3CD, 0xB10D, 0x8699, 0xB10E, 0x869A, 0xB10F, 0x869B, 0xB110, 0xB3CE, 0xB111, 0x869C, 0xB112, 0xB3CF, 0xB113, 0xB3D0, + 0xB114, 0x869D, 0xB115, 0x869E, 0xB116, 0x869F, 0xB117, 0x86A0, 0xB118, 0xB3D1, 0xB119, 0xB3D2, 0xB11A, 0x86A1, 0xB11B, 0xB3D3, + 0xB11C, 0xB3D4, 0xB11D, 0xB3D5, 0xB11E, 0x86A2, 0xB11F, 0x86A3, 0xB120, 0x86A4, 0xB121, 0x86A5, 0xB122, 0x86A6, 0xB123, 0xB3D6, + 0xB124, 0xB3D7, 0xB125, 0xB3D8, 0xB126, 0x86A7, 0xB127, 0x86A8, 0xB128, 0xB3D9, 0xB129, 0x86A9, 0xB12A, 0x86AA, 0xB12B, 0x86AB, + 0xB12C, 0xB3DA, 0xB12D, 0x86AC, 0xB12E, 0x86AD, 0xB12F, 0x86AE, 0xB130, 0x86AF, 0xB131, 0x86B0, 0xB132, 0x86B1, 0xB133, 0x86B2, + 0xB134, 0xB3DB, 0xB135, 0xB3DC, 0xB136, 0x86B3, 0xB137, 0xB3DD, 0xB138, 0xB3DE, 0xB139, 0xB3DF, 0xB13A, 0x86B4, 0xB13B, 0x86B5, + 0xB13C, 0x86B6, 0xB13D, 0x86B7, 0xB13E, 0x86B8, 0xB13F, 0x86B9, 0xB140, 0xB3E0, 0xB141, 0xB3E1, 0xB142, 0x86BA, 0xB143, 0x86BB, + 0xB144, 0xB3E2, 0xB145, 0x86BC, 0xB146, 0x86BD, 0xB147, 0x86BE, 0xB148, 0xB3E3, 0xB149, 0x86BF, 0xB14A, 0x86C0, 0xB14B, 0x86C1, + 0xB14C, 0x86C2, 0xB14D, 0x86C3, 0xB14E, 0x86C4, 0xB14F, 0x86C5, 0xB150, 0xB3E4, 0xB151, 0xB3E5, 0xB152, 0x86C6, 0xB153, 0x86C7, + 0xB154, 0xB3E6, 0xB155, 0xB3E7, 0xB156, 0x86C8, 0xB157, 0x86C9, 0xB158, 0xB3E8, 0xB159, 0x86CA, 0xB15A, 0x86CB, 0xB15B, 0x86CC, + 0xB15C, 0xB3E9, 0xB15D, 0x86CD, 0xB15E, 0x86CE, 0xB15F, 0x86CF, 0xB160, 0xB3EA, 0xB161, 0x86D0, 0xB162, 0x86D1, 0xB163, 0x86D2, + 0xB164, 0x86D3, 0xB165, 0x86D4, 0xB166, 0x86D5, 0xB167, 0x86D6, 0xB168, 0x86D7, 0xB169, 0x86D8, 0xB16A, 0x86D9, 0xB16B, 0x86DA, + 0xB16C, 0x86DB, 0xB16D, 0x86DC, 0xB16E, 0x86DD, 0xB16F, 0x86DE, 0xB170, 0x86DF, 0xB171, 0x86E0, 0xB172, 0x86E1, 0xB173, 0x86E2, + 0xB174, 0x86E3, 0xB175, 0x86E4, 0xB176, 0x86E5, 0xB177, 0x86E6, 0xB178, 0xB3EB, 0xB179, 0xB3EC, 0xB17A, 0x86E7, 0xB17B, 0x86E8, + 0xB17C, 0xB3ED, 0xB17D, 0x86E9, 0xB17E, 0x86EA, 0xB17F, 0x86EB, 0xB180, 0xB3EE, 0xB181, 0x86EC, 0xB182, 0xB3EF, 0xB183, 0x86ED, + 0xB184, 0x86EE, 0xB185, 0x86EF, 0xB186, 0x86F0, 0xB187, 0x86F1, 0xB188, 0xB3F0, 0xB189, 0xB3F1, 0xB18A, 0x86F2, 0xB18B, 0xB3F2, + 0xB18C, 0x86F3, 0xB18D, 0xB3F3, 0xB18E, 0x86F4, 0xB18F, 0x86F5, 0xB190, 0x86F6, 0xB191, 0x86F7, 0xB192, 0xB3F4, 0xB193, 0xB3F5, + 0xB194, 0xB3F6, 0xB195, 0x86F8, 0xB196, 0x86F9, 0xB197, 0x86FA, 0xB198, 0xB3F7, 0xB199, 0x86FB, 0xB19A, 0x86FC, 0xB19B, 0x86FD, + 0xB19C, 0xB3F8, 0xB19D, 0x86FE, 0xB19E, 0x8741, 0xB19F, 0x8742, 0xB1A0, 0x8743, 0xB1A1, 0x8744, 0xB1A2, 0x8745, 0xB1A3, 0x8746, + 0xB1A4, 0x8747, 0xB1A5, 0x8748, 0xB1A6, 0x8749, 0xB1A7, 0x874A, 0xB1A8, 0xB3F9, 0xB1A9, 0x874B, 0xB1AA, 0x874C, 0xB1AB, 0x874D, + 0xB1AC, 0x874E, 0xB1AD, 0x874F, 0xB1AE, 0x8750, 0xB1AF, 0x8751, 0xB1B0, 0x8752, 0xB1B1, 0x8753, 0xB1B2, 0x8754, 0xB1B3, 0x8755, + 0xB1B4, 0x8756, 0xB1B5, 0x8757, 0xB1B6, 0x8758, 0xB1B7, 0x8759, 0xB1B8, 0x875A, 0xB1B9, 0x8761, 0xB1BA, 0x8762, 0xB1BB, 0x8763, + 0xB1BC, 0x8764, 0xB1BD, 0x8765, 0xB1BE, 0x8766, 0xB1BF, 0x8767, 0xB1C0, 0x8768, 0xB1C1, 0x8769, 0xB1C2, 0x876A, 0xB1C3, 0x876B, + 0xB1C4, 0x876C, 0xB1C5, 0x876D, 0xB1C6, 0x876E, 0xB1C7, 0x876F, 0xB1C8, 0x8770, 0xB1C9, 0x8771, 0xB1CA, 0x8772, 0xB1CB, 0x8773, + 0xB1CC, 0xB3FA, 0xB1CD, 0x8774, 0xB1CE, 0x8775, 0xB1CF, 0x8776, 0xB1D0, 0xB3FB, 0xB1D1, 0x8777, 0xB1D2, 0x8778, 0xB1D3, 0x8779, + 0xB1D4, 0xB3FC, 0xB1D5, 0x877A, 0xB1D6, 0x8781, 0xB1D7, 0x8782, 0xB1D8, 0x8783, 0xB1D9, 0x8784, 0xB1DA, 0x8785, 0xB1DB, 0x8786, + 0xB1DC, 0xB3FD, 0xB1DD, 0xB3FE, 0xB1DE, 0x8787, 0xB1DF, 0xB4A1, 0xB1E0, 0x8788, 0xB1E1, 0x8789, 0xB1E2, 0x878A, 0xB1E3, 0x878B, + 0xB1E4, 0x878C, 0xB1E5, 0x878D, 0xB1E6, 0x878E, 0xB1E7, 0x878F, 0xB1E8, 0xB4A2, 0xB1E9, 0xB4A3, 0xB1EA, 0x8790, 0xB1EB, 0x8791, + 0xB1EC, 0xB4A4, 0xB1ED, 0x8792, 0xB1EE, 0x8793, 0xB1EF, 0x8794, 0xB1F0, 0xB4A5, 0xB1F1, 0x8795, 0xB1F2, 0x8796, 0xB1F3, 0x8797, + 0xB1F4, 0x8798, 0xB1F5, 0x8799, 0xB1F6, 0x879A, 0xB1F7, 0x879B, 0xB1F8, 0x879C, 0xB1F9, 0xB4A6, 0xB1FA, 0x879D, 0xB1FB, 0xB4A7, + 0xB1FC, 0x879E, 0xB1FD, 0xB4A8, 0xB1FE, 0x879F, 0xB1FF, 0x87A0, 0xB200, 0x87A1, 0xB201, 0x87A2, 0xB202, 0x87A3, 0xB203, 0x87A4, + 0xB204, 0xB4A9, 0xB205, 0xB4AA, 0xB206, 0x87A5, 0xB207, 0x87A6, 0xB208, 0xB4AB, 0xB209, 0x87A7, 0xB20A, 0x87A8, 0xB20B, 0xB4AC, + 0xB20C, 0xB4AD, 0xB20D, 0x87A9, 0xB20E, 0x87AA, 0xB20F, 0x87AB, 0xB210, 0x87AC, 0xB211, 0x87AD, 0xB212, 0x87AE, 0xB213, 0x87AF, + 0xB214, 0xB4AE, 0xB215, 0xB4AF, 0xB216, 0x87B0, 0xB217, 0xB4B0, 0xB218, 0x87B1, 0xB219, 0xB4B1, 0xB21A, 0x87B2, 0xB21B, 0x87B3, + 0xB21C, 0x87B4, 0xB21D, 0x87B5, 0xB21E, 0x87B6, 0xB21F, 0x87B7, 0xB220, 0xB4B2, 0xB221, 0x87B8, 0xB222, 0x87B9, 0xB223, 0x87BA, + 0xB224, 0x87BB, 0xB225, 0x87BC, 0xB226, 0x87BD, 0xB227, 0x87BE, 0xB228, 0x87BF, 0xB229, 0x87C0, 0xB22A, 0x87C1, 0xB22B, 0x87C2, + 0xB22C, 0x87C3, 0xB22D, 0x87C4, 0xB22E, 0x87C5, 0xB22F, 0x87C6, 0xB230, 0x87C7, 0xB231, 0x87C8, 0xB232, 0x87C9, 0xB233, 0x87CA, + 0xB234, 0xB4B3, 0xB235, 0x87CB, 0xB236, 0x87CC, 0xB237, 0x87CD, 0xB238, 0x87CE, 0xB239, 0x87CF, 0xB23A, 0x87D0, 0xB23B, 0x87D1, + 0xB23C, 0xB4B4, 0xB23D, 0x87D2, 0xB23E, 0x87D3, 0xB23F, 0x87D4, 0xB240, 0x87D5, 0xB241, 0x87D6, 0xB242, 0x87D7, 0xB243, 0x87D8, + 0xB244, 0x87D9, 0xB245, 0x87DA, 0xB246, 0x87DB, 0xB247, 0x87DC, 0xB248, 0x87DD, 0xB249, 0x87DE, 0xB24A, 0x87DF, 0xB24B, 0x87E0, + 0xB24C, 0x87E1, 0xB24D, 0x87E2, 0xB24E, 0x87E3, 0xB24F, 0x87E4, 0xB250, 0x87E5, 0xB251, 0x87E6, 0xB252, 0x87E7, 0xB253, 0x87E8, + 0xB254, 0x87E9, 0xB255, 0x87EA, 0xB256, 0x87EB, 0xB257, 0x87EC, 0xB258, 0xB4B5, 0xB259, 0x87ED, 0xB25A, 0x87EE, 0xB25B, 0x87EF, + 0xB25C, 0xB4B6, 0xB25D, 0x87F0, 0xB25E, 0x87F1, 0xB25F, 0x87F2, 0xB260, 0xB4B7, 0xB261, 0x87F3, 0xB262, 0x87F4, 0xB263, 0x87F5, + 0xB264, 0x87F6, 0xB265, 0x87F7, 0xB266, 0x87F8, 0xB267, 0x87F9, 0xB268, 0xB4B8, 0xB269, 0xB4B9, 0xB26A, 0x87FA, 0xB26B, 0x87FB, + 0xB26C, 0x87FC, 0xB26D, 0x87FD, 0xB26E, 0x87FE, 0xB26F, 0x8841, 0xB270, 0x8842, 0xB271, 0x8843, 0xB272, 0x8844, 0xB273, 0x8845, + 0xB274, 0xB4BA, 0xB275, 0xB4BB, 0xB276, 0x8846, 0xB277, 0x8847, 0xB278, 0x8848, 0xB279, 0x8849, 0xB27A, 0x884A, 0xB27B, 0x884B, + 0xB27C, 0xB4BC, 0xB27D, 0x884C, 0xB27E, 0x884D, 0xB27F, 0x884E, 0xB280, 0x884F, 0xB281, 0x8850, 0xB282, 0x8851, 0xB283, 0x8852, + 0xB284, 0xB4BD, 0xB285, 0xB4BE, 0xB286, 0x8853, 0xB287, 0x8854, 0xB288, 0x8855, 0xB289, 0xB4BF, 0xB28A, 0x8856, 0xB28B, 0x8857, + 0xB28C, 0x8858, 0xB28D, 0x8859, 0xB28E, 0x885A, 0xB28F, 0x8861, 0xB290, 0xB4C0, 0xB291, 0xB4C1, 0xB292, 0x8862, 0xB293, 0x8863, + 0xB294, 0xB4C2, 0xB295, 0x8864, 0xB296, 0x8865, 0xB297, 0x8866, 0xB298, 0xB4C3, 0xB299, 0xB4C4, 0xB29A, 0xB4C5, 0xB29B, 0x8867, + 0xB29C, 0x8868, 0xB29D, 0x8869, 0xB29E, 0x886A, 0xB29F, 0x886B, 0xB2A0, 0xB4C6, 0xB2A1, 0xB4C7, 0xB2A2, 0x886C, 0xB2A3, 0xB4C8, + 0xB2A4, 0x886D, 0xB2A5, 0xB4C9, 0xB2A6, 0xB4CA, 0xB2A7, 0x886E, 0xB2A8, 0x886F, 0xB2A9, 0x8870, 0xB2AA, 0xB4CB, 0xB2AB, 0x8871, + 0xB2AC, 0xB4CC, 0xB2AD, 0x8872, 0xB2AE, 0x8873, 0xB2AF, 0x8874, 0xB2B0, 0xB4CD, 0xB2B1, 0x8875, 0xB2B2, 0x8876, 0xB2B3, 0x8877, + 0xB2B4, 0xB4CE, 0xB2B5, 0x8878, 0xB2B6, 0x8879, 0xB2B7, 0x887A, 0xB2B8, 0x8881, 0xB2B9, 0x8882, 0xB2BA, 0x8883, 0xB2BB, 0x8884, + 0xB2BC, 0x8885, 0xB2BD, 0x8886, 0xB2BE, 0x8887, 0xB2BF, 0x8888, 0xB2C0, 0x8889, 0xB2C1, 0x888A, 0xB2C2, 0x888B, 0xB2C3, 0x888C, + 0xB2C4, 0x888D, 0xB2C5, 0x888E, 0xB2C6, 0x888F, 0xB2C7, 0x8890, 0xB2C8, 0xB4CF, 0xB2C9, 0xB4D0, 0xB2CA, 0x8891, 0xB2CB, 0x8892, + 0xB2CC, 0xB4D1, 0xB2CD, 0x8893, 0xB2CE, 0x8894, 0xB2CF, 0x8895, 0xB2D0, 0xB4D2, 0xB2D1, 0x8896, 0xB2D2, 0xB4D3, 0xB2D3, 0x8897, + 0xB2D4, 0x8898, 0xB2D5, 0x8899, 0xB2D6, 0x889A, 0xB2D7, 0x889B, 0xB2D8, 0xB4D4, 0xB2D9, 0xB4D5, 0xB2DA, 0x889C, 0xB2DB, 0xB4D6, + 0xB2DC, 0x889D, 0xB2DD, 0xB4D7, 0xB2DE, 0x889E, 0xB2DF, 0x889F, 0xB2E0, 0x88A0, 0xB2E1, 0x88A1, 0xB2E2, 0xB4D8, 0xB2E3, 0x88A2, + 0xB2E4, 0xB4D9, 0xB2E5, 0xB4DA, 0xB2E6, 0xB4DB, 0xB2E7, 0x88A3, 0xB2E8, 0xB4DC, 0xB2E9, 0x88A4, 0xB2EA, 0x88A5, 0xB2EB, 0xB4DD, + 0xB2EC, 0xB4DE, 0xB2ED, 0xB4DF, 0xB2EE, 0xB4E0, 0xB2EF, 0xB4E1, 0xB2F0, 0x88A6, 0xB2F1, 0x88A7, 0xB2F2, 0x88A8, 0xB2F3, 0xB4E2, + 0xB2F4, 0xB4E3, 0xB2F5, 0xB4E4, 0xB2F6, 0x88A9, 0xB2F7, 0xB4E5, 0xB2F8, 0xB4E6, 0xB2F9, 0xB4E7, 0xB2FA, 0xB4E8, 0xB2FB, 0xB4E9, + 0xB2FC, 0x88AA, 0xB2FD, 0x88AB, 0xB2FE, 0x88AC, 0xB2FF, 0xB4EA, 0xB300, 0xB4EB, 0xB301, 0xB4EC, 0xB302, 0x88AD, 0xB303, 0x88AE, + 0xB304, 0xB4ED, 0xB305, 0x88AF, 0xB306, 0x88B0, 0xB307, 0x88B1, 0xB308, 0xB4EE, 0xB309, 0x88B2, 0xB30A, 0x88B3, 0xB30B, 0x88B4, + 0xB30C, 0x88B5, 0xB30D, 0x88B6, 0xB30E, 0x88B7, 0xB30F, 0x88B8, 0xB310, 0xB4EF, 0xB311, 0xB4F0, 0xB312, 0x88B9, 0xB313, 0xB4F1, + 0xB314, 0xB4F2, 0xB315, 0xB4F3, 0xB316, 0x88BA, 0xB317, 0x88BB, 0xB318, 0x88BC, 0xB319, 0x88BD, 0xB31A, 0x88BE, 0xB31B, 0x88BF, + 0xB31C, 0xB4F4, 0xB31D, 0x88C0, 0xB31E, 0x88C1, 0xB31F, 0x88C2, 0xB320, 0x88C3, 0xB321, 0x88C4, 0xB322, 0x88C5, 0xB323, 0x88C6, + 0xB324, 0x88C7, 0xB325, 0x88C8, 0xB326, 0x88C9, 0xB327, 0x88CA, 0xB328, 0x88CB, 0xB329, 0x88CC, 0xB32A, 0x88CD, 0xB32B, 0x88CE, + 0xB32C, 0x88CF, 0xB32D, 0x88D0, 0xB32E, 0x88D1, 0xB32F, 0x88D2, 0xB330, 0x88D3, 0xB331, 0x88D4, 0xB332, 0x88D5, 0xB333, 0x88D6, + 0xB334, 0x88D7, 0xB335, 0x88D8, 0xB336, 0x88D9, 0xB337, 0x88DA, 0xB338, 0x88DB, 0xB339, 0x88DC, 0xB33A, 0x88DD, 0xB33B, 0x88DE, + 0xB33C, 0x88DF, 0xB33D, 0x88E0, 0xB33E, 0x88E1, 0xB33F, 0x88E2, 0xB340, 0x88E3, 0xB341, 0x88E4, 0xB342, 0x88E5, 0xB343, 0x88E6, + 0xB344, 0x88E7, 0xB345, 0x88E8, 0xB346, 0x88E9, 0xB347, 0x88EA, 0xB348, 0x88EB, 0xB349, 0x88EC, 0xB34A, 0x88ED, 0xB34B, 0x88EE, + 0xB34C, 0x88EF, 0xB34D, 0x88F0, 0xB34E, 0x88F1, 0xB34F, 0x88F2, 0xB350, 0x88F3, 0xB351, 0x88F4, 0xB352, 0x88F5, 0xB353, 0x88F6, + 0xB354, 0xB4F5, 0xB355, 0xB4F6, 0xB356, 0xB4F7, 0xB357, 0x88F7, 0xB358, 0xB4F8, 0xB359, 0x88F8, 0xB35A, 0x88F9, 0xB35B, 0xB4F9, + 0xB35C, 0xB4FA, 0xB35D, 0x88FA, 0xB35E, 0xB4FB, 0xB35F, 0xB4FC, 0xB360, 0x88FB, 0xB361, 0x88FC, 0xB362, 0x88FD, 0xB363, 0x88FE, + 0xB364, 0xB4FD, 0xB365, 0xB4FE, 0xB366, 0x8941, 0xB367, 0xB5A1, 0xB368, 0x8942, 0xB369, 0xB5A2, 0xB36A, 0x8943, 0xB36B, 0xB5A3, + 0xB36C, 0x8944, 0xB36D, 0x8945, 0xB36E, 0xB5A4, 0xB36F, 0x8946, 0xB370, 0xB5A5, 0xB371, 0xB5A6, 0xB372, 0x8947, 0xB373, 0x8948, + 0xB374, 0xB5A7, 0xB375, 0x8949, 0xB376, 0x894A, 0xB377, 0x894B, 0xB378, 0xB5A8, 0xB379, 0x894C, 0xB37A, 0x894D, 0xB37B, 0x894E, + 0xB37C, 0x894F, 0xB37D, 0x8950, 0xB37E, 0x8951, 0xB37F, 0x8952, 0xB380, 0xB5A9, 0xB381, 0xB5AA, 0xB382, 0x8953, 0xB383, 0xB5AB, + 0xB384, 0xB5AC, 0xB385, 0xB5AD, 0xB386, 0x8954, 0xB387, 0x8955, 0xB388, 0x8956, 0xB389, 0x8957, 0xB38A, 0x8958, 0xB38B, 0x8959, + 0xB38C, 0xB5AE, 0xB38D, 0x895A, 0xB38E, 0x8961, 0xB38F, 0x8962, 0xB390, 0xB5AF, 0xB391, 0x8963, 0xB392, 0x8964, 0xB393, 0x8965, + 0xB394, 0xB5B0, 0xB395, 0x8966, 0xB396, 0x8967, 0xB397, 0x8968, 0xB398, 0x8969, 0xB399, 0x896A, 0xB39A, 0x896B, 0xB39B, 0x896C, + 0xB39C, 0x896D, 0xB39D, 0x896E, 0xB39E, 0x896F, 0xB39F, 0x8970, 0xB3A0, 0xB5B1, 0xB3A1, 0xB5B2, 0xB3A2, 0x8971, 0xB3A3, 0x8972, + 0xB3A4, 0x8973, 0xB3A5, 0x8974, 0xB3A6, 0x8975, 0xB3A7, 0x8976, 0xB3A8, 0xB5B3, 0xB3A9, 0x8977, 0xB3AA, 0x8978, 0xB3AB, 0x8979, + 0xB3AC, 0xB5B4, 0xB3AD, 0x897A, 0xB3AE, 0x8981, 0xB3AF, 0x8982, 0xB3B0, 0x8983, 0xB3B1, 0x8984, 0xB3B2, 0x8985, 0xB3B3, 0x8986, + 0xB3B4, 0x8987, 0xB3B5, 0x8988, 0xB3B6, 0x8989, 0xB3B7, 0x898A, 0xB3B8, 0x898B, 0xB3B9, 0x898C, 0xB3BA, 0x898D, 0xB3BB, 0x898E, + 0xB3BC, 0x898F, 0xB3BD, 0x8990, 0xB3BE, 0x8991, 0xB3BF, 0x8992, 0xB3C0, 0x8993, 0xB3C1, 0x8994, 0xB3C2, 0x8995, 0xB3C3, 0x8996, + 0xB3C4, 0xB5B5, 0xB3C5, 0xB5B6, 0xB3C6, 0x8997, 0xB3C7, 0x8998, 0xB3C8, 0xB5B7, 0xB3C9, 0x8999, 0xB3CA, 0x899A, 0xB3CB, 0xB5B8, + 0xB3CC, 0xB5B9, 0xB3CD, 0x899B, 0xB3CE, 0xB5BA, 0xB3CF, 0x899C, 0xB3D0, 0xB5BB, 0xB3D1, 0x899D, 0xB3D2, 0x899E, 0xB3D3, 0x899F, + 0xB3D4, 0xB5BC, 0xB3D5, 0xB5BD, 0xB3D6, 0x89A0, 0xB3D7, 0xB5BE, 0xB3D8, 0x89A1, 0xB3D9, 0xB5BF, 0xB3DA, 0x89A2, 0xB3DB, 0xB5C0, + 0xB3DC, 0x89A3, 0xB3DD, 0xB5C1, 0xB3DE, 0x89A4, 0xB3DF, 0x89A5, 0xB3E0, 0xB5C2, 0xB3E1, 0x89A6, 0xB3E2, 0x89A7, 0xB3E3, 0x89A8, + 0xB3E4, 0xB5C3, 0xB3E5, 0x89A9, 0xB3E6, 0x89AA, 0xB3E7, 0x89AB, 0xB3E8, 0xB5C4, 0xB3E9, 0x89AC, 0xB3EA, 0x89AD, 0xB3EB, 0x89AE, + 0xB3EC, 0x89AF, 0xB3ED, 0x89B0, 0xB3EE, 0x89B1, 0xB3EF, 0x89B2, 0xB3F0, 0x89B3, 0xB3F1, 0x89B4, 0xB3F2, 0x89B5, 0xB3F3, 0x89B6, + 0xB3F4, 0x89B7, 0xB3F5, 0x89B8, 0xB3F6, 0x89B9, 0xB3F7, 0x89BA, 0xB3F8, 0x89BB, 0xB3F9, 0x89BC, 0xB3FA, 0x89BD, 0xB3FB, 0x89BE, + 0xB3FC, 0xB5C5, 0xB3FD, 0x89BF, 0xB3FE, 0x89C0, 0xB3FF, 0x89C1, 0xB400, 0x89C2, 0xB401, 0x89C3, 0xB402, 0x89C4, 0xB403, 0x89C5, + 0xB404, 0x89C6, 0xB405, 0x89C7, 0xB406, 0x89C8, 0xB407, 0x89C9, 0xB408, 0x89CA, 0xB409, 0x89CB, 0xB40A, 0x89CC, 0xB40B, 0x89CD, + 0xB40C, 0x89CE, 0xB40D, 0x89CF, 0xB40E, 0x89D0, 0xB40F, 0x89D1, 0xB410, 0xB5C6, 0xB411, 0x89D2, 0xB412, 0x89D3, 0xB413, 0x89D4, + 0xB414, 0x89D5, 0xB415, 0x89D6, 0xB416, 0x89D7, 0xB417, 0x89D8, 0xB418, 0xB5C7, 0xB419, 0x89D9, 0xB41A, 0x89DA, 0xB41B, 0x89DB, + 0xB41C, 0xB5C8, 0xB41D, 0x89DC, 0xB41E, 0x89DD, 0xB41F, 0x89DE, 0xB420, 0xB5C9, 0xB421, 0x89DF, 0xB422, 0x89E0, 0xB423, 0x89E1, + 0xB424, 0x89E2, 0xB425, 0x89E3, 0xB426, 0x89E4, 0xB427, 0x89E5, 0xB428, 0xB5CA, 0xB429, 0xB5CB, 0xB42A, 0x89E6, 0xB42B, 0xB5CC, + 0xB42C, 0x89E7, 0xB42D, 0x89E8, 0xB42E, 0x89E9, 0xB42F, 0x89EA, 0xB430, 0x89EB, 0xB431, 0x89EC, 0xB432, 0x89ED, 0xB433, 0x89EE, + 0xB434, 0xB5CD, 0xB435, 0x89EF, 0xB436, 0x89F0, 0xB437, 0x89F1, 0xB438, 0x89F2, 0xB439, 0x89F3, 0xB43A, 0x89F4, 0xB43B, 0x89F5, + 0xB43C, 0x89F6, 0xB43D, 0x89F7, 0xB43E, 0x89F8, 0xB43F, 0x89F9, 0xB440, 0x89FA, 0xB441, 0x89FB, 0xB442, 0x89FC, 0xB443, 0x89FD, + 0xB444, 0x89FE, 0xB445, 0x8A41, 0xB446, 0x8A42, 0xB447, 0x8A43, 0xB448, 0x8A44, 0xB449, 0x8A45, 0xB44A, 0x8A46, 0xB44B, 0x8A47, + 0xB44C, 0x8A48, 0xB44D, 0x8A49, 0xB44E, 0x8A4A, 0xB44F, 0x8A4B, 0xB450, 0xB5CE, 0xB451, 0xB5CF, 0xB452, 0x8A4C, 0xB453, 0x8A4D, + 0xB454, 0xB5D0, 0xB455, 0x8A4E, 0xB456, 0x8A4F, 0xB457, 0x8A50, 0xB458, 0xB5D1, 0xB459, 0x8A51, 0xB45A, 0x8A52, 0xB45B, 0x8A53, + 0xB45C, 0x8A54, 0xB45D, 0x8A55, 0xB45E, 0x8A56, 0xB45F, 0x8A57, 0xB460, 0xB5D2, 0xB461, 0xB5D3, 0xB462, 0x8A58, 0xB463, 0xB5D4, + 0xB464, 0x8A59, 0xB465, 0xB5D5, 0xB466, 0x8A5A, 0xB467, 0x8A61, 0xB468, 0x8A62, 0xB469, 0x8A63, 0xB46A, 0x8A64, 0xB46B, 0x8A65, + 0xB46C, 0xB5D6, 0xB46D, 0x8A66, 0xB46E, 0x8A67, 0xB46F, 0x8A68, 0xB470, 0x8A69, 0xB471, 0x8A6A, 0xB472, 0x8A6B, 0xB473, 0x8A6C, + 0xB474, 0x8A6D, 0xB475, 0x8A6E, 0xB476, 0x8A6F, 0xB477, 0x8A70, 0xB478, 0x8A71, 0xB479, 0x8A72, 0xB47A, 0x8A73, 0xB47B, 0x8A74, + 0xB47C, 0x8A75, 0xB47D, 0x8A76, 0xB47E, 0x8A77, 0xB47F, 0x8A78, 0xB480, 0xB5D7, 0xB481, 0x8A79, 0xB482, 0x8A7A, 0xB483, 0x8A81, + 0xB484, 0x8A82, 0xB485, 0x8A83, 0xB486, 0x8A84, 0xB487, 0x8A85, 0xB488, 0xB5D8, 0xB489, 0x8A86, 0xB48A, 0x8A87, 0xB48B, 0x8A88, + 0xB48C, 0x8A89, 0xB48D, 0x8A8A, 0xB48E, 0x8A8B, 0xB48F, 0x8A8C, 0xB490, 0x8A8D, 0xB491, 0x8A8E, 0xB492, 0x8A8F, 0xB493, 0x8A90, + 0xB494, 0x8A91, 0xB495, 0x8A92, 0xB496, 0x8A93, 0xB497, 0x8A94, 0xB498, 0x8A95, 0xB499, 0x8A96, 0xB49A, 0x8A97, 0xB49B, 0x8A98, + 0xB49C, 0x8A99, 0xB49D, 0xB5D9, 0xB49E, 0x8A9A, 0xB49F, 0x8A9B, 0xB4A0, 0x8A9C, 0xB4A1, 0x8A9D, 0xB4A2, 0x8A9E, 0xB4A3, 0x8A9F, + 0xB4A4, 0xB5DA, 0xB4A5, 0x8AA0, 0xB4A6, 0x8AA1, 0xB4A7, 0x8AA2, 0xB4A8, 0xB5DB, 0xB4A9, 0x8AA3, 0xB4AA, 0x8AA4, 0xB4AB, 0x8AA5, + 0xB4AC, 0xB5DC, 0xB4AD, 0x8AA6, 0xB4AE, 0x8AA7, 0xB4AF, 0x8AA8, 0xB4B0, 0x8AA9, 0xB4B1, 0x8AAA, 0xB4B2, 0x8AAB, 0xB4B3, 0x8AAC, + 0xB4B4, 0x8AAD, 0xB4B5, 0xB5DD, 0xB4B6, 0x8AAE, 0xB4B7, 0xB5DE, 0xB4B8, 0x8AAF, 0xB4B9, 0xB5DF, 0xB4BA, 0x8AB0, 0xB4BB, 0x8AB1, + 0xB4BC, 0x8AB2, 0xB4BD, 0x8AB3, 0xB4BE, 0x8AB4, 0xB4BF, 0x8AB5, 0xB4C0, 0xB5E0, 0xB4C1, 0x8AB6, 0xB4C2, 0x8AB7, 0xB4C3, 0x8AB8, + 0xB4C4, 0xB5E1, 0xB4C5, 0x8AB9, 0xB4C6, 0x8ABA, 0xB4C7, 0x8ABB, 0xB4C8, 0xB5E2, 0xB4C9, 0x8ABC, 0xB4CA, 0x8ABD, 0xB4CB, 0x8ABE, + 0xB4CC, 0x8ABF, 0xB4CD, 0x8AC0, 0xB4CE, 0x8AC1, 0xB4CF, 0x8AC2, 0xB4D0, 0xB5E3, 0xB4D1, 0x8AC3, 0xB4D2, 0x8AC4, 0xB4D3, 0x8AC5, + 0xB4D4, 0x8AC6, 0xB4D5, 0xB5E4, 0xB4D6, 0x8AC7, 0xB4D7, 0x8AC8, 0xB4D8, 0x8AC9, 0xB4D9, 0x8ACA, 0xB4DA, 0x8ACB, 0xB4DB, 0x8ACC, + 0xB4DC, 0xB5E5, 0xB4DD, 0xB5E6, 0xB4DE, 0x8ACD, 0xB4DF, 0x8ACE, 0xB4E0, 0xB5E7, 0xB4E1, 0x8ACF, 0xB4E2, 0x8AD0, 0xB4E3, 0xB5E8, + 0xB4E4, 0xB5E9, 0xB4E5, 0x8AD1, 0xB4E6, 0xB5EA, 0xB4E7, 0x8AD2, 0xB4E8, 0x8AD3, 0xB4E9, 0x8AD4, 0xB4EA, 0x8AD5, 0xB4EB, 0x8AD6, + 0xB4EC, 0xB5EB, 0xB4ED, 0xB5EC, 0xB4EE, 0x8AD7, 0xB4EF, 0xB5ED, 0xB4F0, 0x8AD8, 0xB4F1, 0xB5EE, 0xB4F2, 0x8AD9, 0xB4F3, 0x8ADA, + 0xB4F4, 0x8ADB, 0xB4F5, 0x8ADC, 0xB4F6, 0x8ADD, 0xB4F7, 0x8ADE, 0xB4F8, 0xB5EF, 0xB4F9, 0x8ADF, 0xB4FA, 0x8AE0, 0xB4FB, 0x8AE1, + 0xB4FC, 0x8AE2, 0xB4FD, 0x8AE3, 0xB4FE, 0x8AE4, 0xB4FF, 0x8AE5, 0xB500, 0x8AE6, 0xB501, 0x8AE7, 0xB502, 0x8AE8, 0xB503, 0x8AE9, + 0xB504, 0x8AEA, 0xB505, 0x8AEB, 0xB506, 0x8AEC, 0xB507, 0x8AED, 0xB508, 0x8AEE, 0xB509, 0x8AEF, 0xB50A, 0x8AF0, 0xB50B, 0x8AF1, + 0xB50C, 0x8AF2, 0xB50D, 0x8AF3, 0xB50E, 0x8AF4, 0xB50F, 0x8AF5, 0xB510, 0x8AF6, 0xB511, 0x8AF7, 0xB512, 0x8AF8, 0xB513, 0x8AF9, + 0xB514, 0xB5F0, 0xB515, 0xB5F1, 0xB516, 0x8AFA, 0xB517, 0x8AFB, 0xB518, 0xB5F2, 0xB519, 0x8AFC, 0xB51A, 0x8AFD, 0xB51B, 0xB5F3, + 0xB51C, 0xB5F4, 0xB51D, 0x8AFE, 0xB51E, 0x8B41, 0xB51F, 0x8B42, 0xB520, 0x8B43, 0xB521, 0x8B44, 0xB522, 0x8B45, 0xB523, 0x8B46, + 0xB524, 0xB5F5, 0xB525, 0xB5F6, 0xB526, 0x8B47, 0xB527, 0xB5F7, 0xB528, 0xB5F8, 0xB529, 0xB5F9, 0xB52A, 0xB5FA, 0xB52B, 0x8B48, + 0xB52C, 0x8B49, 0xB52D, 0x8B4A, 0xB52E, 0x8B4B, 0xB52F, 0x8B4C, 0xB530, 0xB5FB, 0xB531, 0xB5FC, 0xB532, 0x8B4D, 0xB533, 0x8B4E, + 0xB534, 0xB5FD, 0xB535, 0x8B4F, 0xB536, 0x8B50, 0xB537, 0x8B51, 0xB538, 0xB5FE, 0xB539, 0x8B52, 0xB53A, 0x8B53, 0xB53B, 0x8B54, + 0xB53C, 0x8B55, 0xB53D, 0x8B56, 0xB53E, 0x8B57, 0xB53F, 0x8B58, 0xB540, 0xB6A1, 0xB541, 0xB6A2, 0xB542, 0x8B59, 0xB543, 0xB6A3, + 0xB544, 0xB6A4, 0xB545, 0xB6A5, 0xB546, 0x8B5A, 0xB547, 0x8B61, 0xB548, 0x8B62, 0xB549, 0x8B63, 0xB54A, 0x8B64, 0xB54B, 0xB6A6, + 0xB54C, 0xB6A7, 0xB54D, 0xB6A8, 0xB54E, 0x8B65, 0xB54F, 0x8B66, 0xB550, 0xB6A9, 0xB551, 0x8B67, 0xB552, 0x8B68, 0xB553, 0x8B69, + 0xB554, 0xB6AA, 0xB555, 0x8B6A, 0xB556, 0x8B6B, 0xB557, 0x8B6C, 0xB558, 0x8B6D, 0xB559, 0x8B6E, 0xB55A, 0x8B6F, 0xB55B, 0x8B70, + 0xB55C, 0xB6AB, 0xB55D, 0xB6AC, 0xB55E, 0x8B71, 0xB55F, 0xB6AD, 0xB560, 0xB6AE, 0xB561, 0xB6AF, 0xB562, 0x8B72, 0xB563, 0x8B73, + 0xB564, 0x8B74, 0xB565, 0x8B75, 0xB566, 0x8B76, 0xB567, 0x8B77, 0xB568, 0x8B78, 0xB569, 0x8B79, 0xB56A, 0x8B7A, 0xB56B, 0x8B81, + 0xB56C, 0x8B82, 0xB56D, 0x8B83, 0xB56E, 0x8B84, 0xB56F, 0x8B85, 0xB570, 0x8B86, 0xB571, 0x8B87, 0xB572, 0x8B88, 0xB573, 0x8B89, + 0xB574, 0x8B8A, 0xB575, 0x8B8B, 0xB576, 0x8B8C, 0xB577, 0x8B8D, 0xB578, 0x8B8E, 0xB579, 0x8B8F, 0xB57A, 0x8B90, 0xB57B, 0x8B91, + 0xB57C, 0x8B92, 0xB57D, 0x8B93, 0xB57E, 0x8B94, 0xB57F, 0x8B95, 0xB580, 0x8B96, 0xB581, 0x8B97, 0xB582, 0x8B98, 0xB583, 0x8B99, + 0xB584, 0x8B9A, 0xB585, 0x8B9B, 0xB586, 0x8B9C, 0xB587, 0x8B9D, 0xB588, 0x8B9E, 0xB589, 0x8B9F, 0xB58A, 0x8BA0, 0xB58B, 0x8BA1, + 0xB58C, 0x8BA2, 0xB58D, 0x8BA3, 0xB58E, 0x8BA4, 0xB58F, 0x8BA5, 0xB590, 0x8BA6, 0xB591, 0x8BA7, 0xB592, 0x8BA8, 0xB593, 0x8BA9, + 0xB594, 0x8BAA, 0xB595, 0x8BAB, 0xB596, 0x8BAC, 0xB597, 0x8BAD, 0xB598, 0x8BAE, 0xB599, 0x8BAF, 0xB59A, 0x8BB0, 0xB59B, 0x8BB1, + 0xB59C, 0x8BB2, 0xB59D, 0x8BB3, 0xB59E, 0x8BB4, 0xB59F, 0x8BB5, 0xB5A0, 0xB6B0, 0xB5A1, 0xB6B1, 0xB5A2, 0x8BB6, 0xB5A3, 0x8BB7, + 0xB5A4, 0xB6B2, 0xB5A5, 0x8BB8, 0xB5A6, 0x8BB9, 0xB5A7, 0x8BBA, 0xB5A8, 0xB6B3, 0xB5A9, 0x8BBB, 0xB5AA, 0xB6B4, 0xB5AB, 0xB6B5, + 0xB5AC, 0x8BBC, 0xB5AD, 0x8BBD, 0xB5AE, 0x8BBE, 0xB5AF, 0x8BBF, 0xB5B0, 0xB6B6, 0xB5B1, 0xB6B7, 0xB5B2, 0x8BC0, 0xB5B3, 0xB6B8, + 0xB5B4, 0xB6B9, 0xB5B5, 0xB6BA, 0xB5B6, 0x8BC1, 0xB5B7, 0x8BC2, 0xB5B8, 0x8BC3, 0xB5B9, 0x8BC4, 0xB5BA, 0x8BC5, 0xB5BB, 0xB6BB, + 0xB5BC, 0xB6BC, 0xB5BD, 0xB6BD, 0xB5BE, 0x8BC6, 0xB5BF, 0x8BC7, 0xB5C0, 0xB6BE, 0xB5C1, 0x8BC8, 0xB5C2, 0x8BC9, 0xB5C3, 0x8BCA, + 0xB5C4, 0xB6BF, 0xB5C5, 0x8BCB, 0xB5C6, 0x8BCC, 0xB5C7, 0x8BCD, 0xB5C8, 0x8BCE, 0xB5C9, 0x8BCF, 0xB5CA, 0x8BD0, 0xB5CB, 0x8BD1, + 0xB5CC, 0xB6C0, 0xB5CD, 0xB6C1, 0xB5CE, 0x8BD2, 0xB5CF, 0xB6C2, 0xB5D0, 0xB6C3, 0xB5D1, 0xB6C4, 0xB5D2, 0x8BD3, 0xB5D3, 0x8BD4, + 0xB5D4, 0x8BD5, 0xB5D5, 0x8BD6, 0xB5D6, 0x8BD7, 0xB5D7, 0x8BD8, 0xB5D8, 0xB6C5, 0xB5D9, 0x8BD9, 0xB5DA, 0x8BDA, 0xB5DB, 0x8BDB, + 0xB5DC, 0x8BDC, 0xB5DD, 0x8BDD, 0xB5DE, 0x8BDE, 0xB5DF, 0x8BDF, 0xB5E0, 0x8BE0, 0xB5E1, 0x8BE1, 0xB5E2, 0x8BE2, 0xB5E3, 0x8BE3, + 0xB5E4, 0x8BE4, 0xB5E5, 0x8BE5, 0xB5E6, 0x8BE6, 0xB5E7, 0x8BE7, 0xB5E8, 0x8BE8, 0xB5E9, 0x8BE9, 0xB5EA, 0x8BEA, 0xB5EB, 0x8BEB, + 0xB5EC, 0xB6C6, 0xB5ED, 0x8BEC, 0xB5EE, 0x8BED, 0xB5EF, 0x8BEE, 0xB5F0, 0x8BEF, 0xB5F1, 0x8BF0, 0xB5F2, 0x8BF1, 0xB5F3, 0x8BF2, + 0xB5F4, 0x8BF3, 0xB5F5, 0x8BF4, 0xB5F6, 0x8BF5, 0xB5F7, 0x8BF6, 0xB5F8, 0x8BF7, 0xB5F9, 0x8BF8, 0xB5FA, 0x8BF9, 0xB5FB, 0x8BFA, + 0xB5FC, 0x8BFB, 0xB5FD, 0x8BFC, 0xB5FE, 0x8BFD, 0xB5FF, 0x8BFE, 0xB600, 0x8C41, 0xB601, 0x8C42, 0xB602, 0x8C43, 0xB603, 0x8C44, + 0xB604, 0x8C45, 0xB605, 0x8C46, 0xB606, 0x8C47, 0xB607, 0x8C48, 0xB608, 0x8C49, 0xB609, 0x8C4A, 0xB60A, 0x8C4B, 0xB60B, 0x8C4C, + 0xB60C, 0x8C4D, 0xB60D, 0x8C4E, 0xB60E, 0x8C4F, 0xB60F, 0x8C50, 0xB610, 0xB6C7, 0xB611, 0xB6C8, 0xB612, 0x8C51, 0xB613, 0x8C52, + 0xB614, 0xB6C9, 0xB615, 0x8C53, 0xB616, 0x8C54, 0xB617, 0x8C55, 0xB618, 0xB6CA, 0xB619, 0x8C56, 0xB61A, 0x8C57, 0xB61B, 0x8C58, + 0xB61C, 0x8C59, 0xB61D, 0x8C5A, 0xB61E, 0x8C61, 0xB61F, 0x8C62, 0xB620, 0x8C63, 0xB621, 0x8C64, 0xB622, 0x8C65, 0xB623, 0x8C66, + 0xB624, 0x8C67, 0xB625, 0xB6CB, 0xB626, 0x8C68, 0xB627, 0x8C69, 0xB628, 0x8C6A, 0xB629, 0x8C6B, 0xB62A, 0x8C6C, 0xB62B, 0x8C6D, + 0xB62C, 0xB6CC, 0xB62D, 0x8C6E, 0xB62E, 0x8C6F, 0xB62F, 0x8C70, 0xB630, 0x8C71, 0xB631, 0x8C72, 0xB632, 0x8C73, 0xB633, 0x8C74, + 0xB634, 0xB6CD, 0xB635, 0x8C75, 0xB636, 0x8C76, 0xB637, 0x8C77, 0xB638, 0x8C78, 0xB639, 0x8C79, 0xB63A, 0x8C7A, 0xB63B, 0x8C81, + 0xB63C, 0x8C82, 0xB63D, 0x8C83, 0xB63E, 0x8C84, 0xB63F, 0x8C85, 0xB640, 0x8C86, 0xB641, 0x8C87, 0xB642, 0x8C88, 0xB643, 0x8C89, + 0xB644, 0x8C8A, 0xB645, 0x8C8B, 0xB646, 0x8C8C, 0xB647, 0x8C8D, 0xB648, 0xB6CE, 0xB649, 0x8C8E, 0xB64A, 0x8C8F, 0xB64B, 0x8C90, + 0xB64C, 0x8C91, 0xB64D, 0x8C92, 0xB64E, 0x8C93, 0xB64F, 0x8C94, 0xB650, 0x8C95, 0xB651, 0x8C96, 0xB652, 0x8C97, 0xB653, 0x8C98, + 0xB654, 0x8C99, 0xB655, 0x8C9A, 0xB656, 0x8C9B, 0xB657, 0x8C9C, 0xB658, 0x8C9D, 0xB659, 0x8C9E, 0xB65A, 0x8C9F, 0xB65B, 0x8CA0, + 0xB65C, 0x8CA1, 0xB65D, 0x8CA2, 0xB65E, 0x8CA3, 0xB65F, 0x8CA4, 0xB660, 0x8CA5, 0xB661, 0x8CA6, 0xB662, 0x8CA7, 0xB663, 0x8CA8, + 0xB664, 0xB6CF, 0xB665, 0x8CA9, 0xB666, 0x8CAA, 0xB667, 0x8CAB, 0xB668, 0xB6D0, 0xB669, 0x8CAC, 0xB66A, 0x8CAD, 0xB66B, 0x8CAE, + 0xB66C, 0x8CAF, 0xB66D, 0x8CB0, 0xB66E, 0x8CB1, 0xB66F, 0x8CB2, 0xB670, 0x8CB3, 0xB671, 0x8CB4, 0xB672, 0x8CB5, 0xB673, 0x8CB6, + 0xB674, 0x8CB7, 0xB675, 0x8CB8, 0xB676, 0x8CB9, 0xB677, 0x8CBA, 0xB678, 0x8CBB, 0xB679, 0x8CBC, 0xB67A, 0x8CBD, 0xB67B, 0x8CBE, + 0xB67C, 0x8CBF, 0xB67D, 0x8CC0, 0xB67E, 0x8CC1, 0xB67F, 0x8CC2, 0xB680, 0x8CC3, 0xB681, 0x8CC4, 0xB682, 0x8CC5, 0xB683, 0x8CC6, + 0xB684, 0x8CC7, 0xB685, 0x8CC8, 0xB686, 0x8CC9, 0xB687, 0x8CCA, 0xB688, 0x8CCB, 0xB689, 0x8CCC, 0xB68A, 0x8CCD, 0xB68B, 0x8CCE, + 0xB68C, 0x8CCF, 0xB68D, 0x8CD0, 0xB68E, 0x8CD1, 0xB68F, 0x8CD2, 0xB690, 0x8CD3, 0xB691, 0x8CD4, 0xB692, 0x8CD5, 0xB693, 0x8CD6, + 0xB694, 0x8CD7, 0xB695, 0x8CD8, 0xB696, 0x8CD9, 0xB697, 0x8CDA, 0xB698, 0x8CDB, 0xB699, 0x8CDC, 0xB69A, 0x8CDD, 0xB69B, 0x8CDE, + 0xB69C, 0xB6D1, 0xB69D, 0xB6D2, 0xB69E, 0x8CDF, 0xB69F, 0x8CE0, 0xB6A0, 0xB6D3, 0xB6A1, 0x8CE1, 0xB6A2, 0x8CE2, 0xB6A3, 0x8CE3, + 0xB6A4, 0xB6D4, 0xB6A5, 0x8CE4, 0xB6A6, 0x8CE5, 0xB6A7, 0x8CE6, 0xB6A8, 0x8CE7, 0xB6A9, 0x8CE8, 0xB6AA, 0x8CE9, 0xB6AB, 0xB6D5, + 0xB6AC, 0xB6D6, 0xB6AD, 0x8CEA, 0xB6AE, 0x8CEB, 0xB6AF, 0x8CEC, 0xB6B0, 0x8CED, 0xB6B1, 0xB6D7, 0xB6B2, 0x8CEE, 0xB6B3, 0x8CEF, + 0xB6B4, 0x8CF0, 0xB6B5, 0x8CF1, 0xB6B6, 0x8CF2, 0xB6B7, 0x8CF3, 0xB6B8, 0x8CF4, 0xB6B9, 0x8CF5, 0xB6BA, 0x8CF6, 0xB6BB, 0x8CF7, + 0xB6BC, 0x8CF8, 0xB6BD, 0x8CF9, 0xB6BE, 0x8CFA, 0xB6BF, 0x8CFB, 0xB6C0, 0x8CFC, 0xB6C1, 0x8CFD, 0xB6C2, 0x8CFE, 0xB6C3, 0x8D41, + 0xB6C4, 0x8D42, 0xB6C5, 0x8D43, 0xB6C6, 0x8D44, 0xB6C7, 0x8D45, 0xB6C8, 0x8D46, 0xB6C9, 0x8D47, 0xB6CA, 0x8D48, 0xB6CB, 0x8D49, + 0xB6CC, 0x8D4A, 0xB6CD, 0x8D4B, 0xB6CE, 0x8D4C, 0xB6CF, 0x8D4D, 0xB6D0, 0x8D4E, 0xB6D1, 0x8D4F, 0xB6D2, 0x8D50, 0xB6D3, 0x8D51, + 0xB6D4, 0xB6D8, 0xB6D5, 0x8D52, 0xB6D6, 0x8D53, 0xB6D7, 0x8D54, 0xB6D8, 0x8D55, 0xB6D9, 0x8D56, 0xB6DA, 0x8D57, 0xB6DB, 0x8D58, + 0xB6DC, 0x8D59, 0xB6DD, 0x8D5A, 0xB6DE, 0x8D61, 0xB6DF, 0x8D62, 0xB6E0, 0x8D63, 0xB6E1, 0x8D64, 0xB6E2, 0x8D65, 0xB6E3, 0x8D66, + 0xB6E4, 0x8D67, 0xB6E5, 0x8D68, 0xB6E6, 0x8D69, 0xB6E7, 0x8D6A, 0xB6E8, 0x8D6B, 0xB6E9, 0x8D6C, 0xB6EA, 0x8D6D, 0xB6EB, 0x8D6E, + 0xB6EC, 0x8D6F, 0xB6ED, 0x8D70, 0xB6EE, 0x8D71, 0xB6EF, 0x8D72, 0xB6F0, 0xB6D9, 0xB6F1, 0x8D73, 0xB6F2, 0x8D74, 0xB6F3, 0x8D75, + 0xB6F4, 0xB6DA, 0xB6F5, 0x8D76, 0xB6F6, 0x8D77, 0xB6F7, 0x8D78, 0xB6F8, 0xB6DB, 0xB6F9, 0x8D79, 0xB6FA, 0x8D7A, 0xB6FB, 0x8D81, + 0xB6FC, 0x8D82, 0xB6FD, 0x8D83, 0xB6FE, 0x8D84, 0xB6FF, 0x8D85, 0xB700, 0xB6DC, 0xB701, 0xB6DD, 0xB702, 0x8D86, 0xB703, 0x8D87, + 0xB704, 0x8D88, 0xB705, 0xB6DE, 0xB706, 0x8D89, 0xB707, 0x8D8A, 0xB708, 0x8D8B, 0xB709, 0x8D8C, 0xB70A, 0x8D8D, 0xB70B, 0x8D8E, + 0xB70C, 0x8D8F, 0xB70D, 0x8D90, 0xB70E, 0x8D91, 0xB70F, 0x8D92, 0xB710, 0x8D93, 0xB711, 0x8D94, 0xB712, 0x8D95, 0xB713, 0x8D96, + 0xB714, 0x8D97, 0xB715, 0x8D98, 0xB716, 0x8D99, 0xB717, 0x8D9A, 0xB718, 0x8D9B, 0xB719, 0x8D9C, 0xB71A, 0x8D9D, 0xB71B, 0x8D9E, + 0xB71C, 0x8D9F, 0xB71D, 0x8DA0, 0xB71E, 0x8DA1, 0xB71F, 0x8DA2, 0xB720, 0x8DA3, 0xB721, 0x8DA4, 0xB722, 0x8DA5, 0xB723, 0x8DA6, + 0xB724, 0x8DA7, 0xB725, 0x8DA8, 0xB726, 0x8DA9, 0xB727, 0x8DAA, 0xB728, 0xB6DF, 0xB729, 0xB6E0, 0xB72A, 0x8DAB, 0xB72B, 0x8DAC, + 0xB72C, 0xB6E1, 0xB72D, 0x8DAD, 0xB72E, 0x8DAE, 0xB72F, 0xB6E2, 0xB730, 0xB6E3, 0xB731, 0x8DAF, 0xB732, 0x8DB0, 0xB733, 0x8DB1, + 0xB734, 0x8DB2, 0xB735, 0x8DB3, 0xB736, 0x8DB4, 0xB737, 0x8DB5, 0xB738, 0xB6E4, 0xB739, 0xB6E5, 0xB73A, 0x8DB6, 0xB73B, 0xB6E6, + 0xB73C, 0x8DB7, 0xB73D, 0x8DB8, 0xB73E, 0x8DB9, 0xB73F, 0x8DBA, 0xB740, 0x8DBB, 0xB741, 0x8DBC, 0xB742, 0x8DBD, 0xB743, 0x8DBE, + 0xB744, 0xB6E7, 0xB745, 0x8DBF, 0xB746, 0x8DC0, 0xB747, 0x8DC1, 0xB748, 0xB6E8, 0xB749, 0x8DC2, 0xB74A, 0x8DC3, 0xB74B, 0x8DC4, + 0xB74C, 0xB6E9, 0xB74D, 0x8DC5, 0xB74E, 0x8DC6, 0xB74F, 0x8DC7, 0xB750, 0x8DC8, 0xB751, 0x8DC9, 0xB752, 0x8DCA, 0xB753, 0x8DCB, + 0xB754, 0xB6EA, 0xB755, 0xB6EB, 0xB756, 0x8DCC, 0xB757, 0x8DCD, 0xB758, 0x8DCE, 0xB759, 0x8DCF, 0xB75A, 0x8DD0, 0xB75B, 0x8DD1, + 0xB75C, 0x8DD2, 0xB75D, 0x8DD3, 0xB75E, 0x8DD4, 0xB75F, 0x8DD5, 0xB760, 0xB6EC, 0xB761, 0x8DD6, 0xB762, 0x8DD7, 0xB763, 0x8DD8, + 0xB764, 0xB6ED, 0xB765, 0x8DD9, 0xB766, 0x8DDA, 0xB767, 0x8DDB, 0xB768, 0xB6EE, 0xB769, 0x8DDC, 0xB76A, 0x8DDD, 0xB76B, 0x8DDE, + 0xB76C, 0x8DDF, 0xB76D, 0x8DE0, 0xB76E, 0x8DE1, 0xB76F, 0x8DE2, 0xB770, 0xB6EF, 0xB771, 0xB6F0, 0xB772, 0x8DE3, 0xB773, 0xB6F1, + 0xB774, 0x8DE4, 0xB775, 0xB6F2, 0xB776, 0x8DE5, 0xB777, 0x8DE6, 0xB778, 0x8DE7, 0xB779, 0x8DE8, 0xB77A, 0x8DE9, 0xB77B, 0x8DEA, + 0xB77C, 0xB6F3, 0xB77D, 0xB6F4, 0xB77E, 0x8DEB, 0xB77F, 0x8DEC, 0xB780, 0xB6F5, 0xB781, 0x8DED, 0xB782, 0x8DEE, 0xB783, 0x8DEF, + 0xB784, 0xB6F6, 0xB785, 0x8DF0, 0xB786, 0x8DF1, 0xB787, 0x8DF2, 0xB788, 0x8DF3, 0xB789, 0x8DF4, 0xB78A, 0x8DF5, 0xB78B, 0x8DF6, + 0xB78C, 0xB6F7, 0xB78D, 0xB6F8, 0xB78E, 0x8DF7, 0xB78F, 0xB6F9, 0xB790, 0xB6FA, 0xB791, 0xB6FB, 0xB792, 0xB6FC, 0xB793, 0x8DF8, + 0xB794, 0x8DF9, 0xB795, 0x8DFA, 0xB796, 0xB6FD, 0xB797, 0xB6FE, 0xB798, 0xB7A1, 0xB799, 0xB7A2, 0xB79A, 0x8DFB, 0xB79B, 0x8DFC, + 0xB79C, 0xB7A3, 0xB79D, 0x8DFD, 0xB79E, 0x8DFE, 0xB79F, 0x8E41, 0xB7A0, 0xB7A4, 0xB7A1, 0x8E42, 0xB7A2, 0x8E43, 0xB7A3, 0x8E44, + 0xB7A4, 0x8E45, 0xB7A5, 0x8E46, 0xB7A6, 0x8E47, 0xB7A7, 0x8E48, 0xB7A8, 0xB7A5, 0xB7A9, 0xB7A6, 0xB7AA, 0x8E49, 0xB7AB, 0xB7A7, + 0xB7AC, 0xB7A8, 0xB7AD, 0xB7A9, 0xB7AE, 0x8E4A, 0xB7AF, 0x8E4B, 0xB7B0, 0x8E4C, 0xB7B1, 0x8E4D, 0xB7B2, 0x8E4E, 0xB7B3, 0x8E4F, + 0xB7B4, 0xB7AA, 0xB7B5, 0xB7AB, 0xB7B6, 0x8E50, 0xB7B7, 0x8E51, 0xB7B8, 0xB7AC, 0xB7B9, 0x8E52, 0xB7BA, 0x8E53, 0xB7BB, 0x8E54, + 0xB7BC, 0x8E55, 0xB7BD, 0x8E56, 0xB7BE, 0x8E57, 0xB7BF, 0x8E58, 0xB7C0, 0x8E59, 0xB7C1, 0x8E5A, 0xB7C2, 0x8E61, 0xB7C3, 0x8E62, + 0xB7C4, 0x8E63, 0xB7C5, 0x8E64, 0xB7C6, 0x8E65, 0xB7C7, 0xB7AD, 0xB7C8, 0x8E66, 0xB7C9, 0xB7AE, 0xB7CA, 0x8E67, 0xB7CB, 0x8E68, + 0xB7CC, 0x8E69, 0xB7CD, 0x8E6A, 0xB7CE, 0x8E6B, 0xB7CF, 0x8E6C, 0xB7D0, 0x8E6D, 0xB7D1, 0x8E6E, 0xB7D2, 0x8E6F, 0xB7D3, 0x8E70, + 0xB7D4, 0x8E71, 0xB7D5, 0x8E72, 0xB7D6, 0x8E73, 0xB7D7, 0x8E74, 0xB7D8, 0x8E75, 0xB7D9, 0x8E76, 0xB7DA, 0x8E77, 0xB7DB, 0x8E78, + 0xB7DC, 0x8E79, 0xB7DD, 0x8E7A, 0xB7DE, 0x8E81, 0xB7DF, 0x8E82, 0xB7E0, 0x8E83, 0xB7E1, 0x8E84, 0xB7E2, 0x8E85, 0xB7E3, 0x8E86, + 0xB7E4, 0x8E87, 0xB7E5, 0x8E88, 0xB7E6, 0x8E89, 0xB7E7, 0x8E8A, 0xB7E8, 0x8E8B, 0xB7E9, 0x8E8C, 0xB7EA, 0x8E8D, 0xB7EB, 0x8E8E, + 0xB7EC, 0xB7AF, 0xB7ED, 0xB7B0, 0xB7EE, 0x8E8F, 0xB7EF, 0x8E90, 0xB7F0, 0xB7B1, 0xB7F1, 0x8E91, 0xB7F2, 0x8E92, 0xB7F3, 0x8E93, + 0xB7F4, 0xB7B2, 0xB7F5, 0x8E94, 0xB7F6, 0x8E95, 0xB7F7, 0x8E96, 0xB7F8, 0x8E97, 0xB7F9, 0x8E98, 0xB7FA, 0x8E99, 0xB7FB, 0x8E9A, + 0xB7FC, 0xB7B3, 0xB7FD, 0xB7B4, 0xB7FE, 0x8E9B, 0xB7FF, 0xB7B5, 0xB800, 0xB7B6, 0xB801, 0xB7B7, 0xB802, 0x8E9C, 0xB803, 0x8E9D, + 0xB804, 0x8E9E, 0xB805, 0x8E9F, 0xB806, 0x8EA0, 0xB807, 0xB7B8, 0xB808, 0xB7B9, 0xB809, 0xB7BA, 0xB80A, 0x8EA1, 0xB80B, 0x8EA2, + 0xB80C, 0xB7BB, 0xB80D, 0x8EA3, 0xB80E, 0x8EA4, 0xB80F, 0x8EA5, 0xB810, 0xB7BC, 0xB811, 0x8EA6, 0xB812, 0x8EA7, 0xB813, 0x8EA8, + 0xB814, 0x8EA9, 0xB815, 0x8EAA, 0xB816, 0x8EAB, 0xB817, 0x8EAC, 0xB818, 0xB7BD, 0xB819, 0xB7BE, 0xB81A, 0x8EAD, 0xB81B, 0xB7BF, + 0xB81C, 0x8EAE, 0xB81D, 0xB7C0, 0xB81E, 0x8EAF, 0xB81F, 0x8EB0, 0xB820, 0x8EB1, 0xB821, 0x8EB2, 0xB822, 0x8EB3, 0xB823, 0x8EB4, + 0xB824, 0xB7C1, 0xB825, 0xB7C2, 0xB826, 0x8EB5, 0xB827, 0x8EB6, 0xB828, 0xB7C3, 0xB829, 0x8EB7, 0xB82A, 0x8EB8, 0xB82B, 0x8EB9, + 0xB82C, 0xB7C4, 0xB82D, 0x8EBA, 0xB82E, 0x8EBB, 0xB82F, 0x8EBC, 0xB830, 0x8EBD, 0xB831, 0x8EBE, 0xB832, 0x8EBF, 0xB833, 0x8EC0, + 0xB834, 0xB7C5, 0xB835, 0xB7C6, 0xB836, 0x8EC1, 0xB837, 0xB7C7, 0xB838, 0xB7C8, 0xB839, 0xB7C9, 0xB83A, 0x8EC2, 0xB83B, 0x8EC3, + 0xB83C, 0x8EC4, 0xB83D, 0x8EC5, 0xB83E, 0x8EC6, 0xB83F, 0x8EC7, 0xB840, 0xB7CA, 0xB841, 0x8EC8, 0xB842, 0x8EC9, 0xB843, 0x8ECA, + 0xB844, 0xB7CB, 0xB845, 0x8ECB, 0xB846, 0x8ECC, 0xB847, 0x8ECD, 0xB848, 0x8ECE, 0xB849, 0x8ECF, 0xB84A, 0x8ED0, 0xB84B, 0x8ED1, + 0xB84C, 0x8ED2, 0xB84D, 0x8ED3, 0xB84E, 0x8ED4, 0xB84F, 0x8ED5, 0xB850, 0x8ED6, 0xB851, 0xB7CC, 0xB852, 0x8ED7, 0xB853, 0xB7CD, + 0xB854, 0x8ED8, 0xB855, 0x8ED9, 0xB856, 0x8EDA, 0xB857, 0x8EDB, 0xB858, 0x8EDC, 0xB859, 0x8EDD, 0xB85A, 0x8EDE, 0xB85B, 0x8EDF, + 0xB85C, 0xB7CE, 0xB85D, 0xB7CF, 0xB85E, 0x8EE0, 0xB85F, 0x8EE1, 0xB860, 0xB7D0, 0xB861, 0x8EE2, 0xB862, 0x8EE3, 0xB863, 0x8EE4, + 0xB864, 0xB7D1, 0xB865, 0x8EE5, 0xB866, 0x8EE6, 0xB867, 0x8EE7, 0xB868, 0x8EE8, 0xB869, 0x8EE9, 0xB86A, 0x8EEA, 0xB86B, 0x8EEB, + 0xB86C, 0xB7D2, 0xB86D, 0xB7D3, 0xB86E, 0x8EEC, 0xB86F, 0xB7D4, 0xB870, 0x8EED, 0xB871, 0xB7D5, 0xB872, 0x8EEE, 0xB873, 0x8EEF, + 0xB874, 0x8EF0, 0xB875, 0x8EF1, 0xB876, 0x8EF2, 0xB877, 0x8EF3, 0xB878, 0xB7D6, 0xB879, 0x8EF4, 0xB87A, 0x8EF5, 0xB87B, 0x8EF6, + 0xB87C, 0xB7D7, 0xB87D, 0x8EF7, 0xB87E, 0x8EF8, 0xB87F, 0x8EF9, 0xB880, 0x8EFA, 0xB881, 0x8EFB, 0xB882, 0x8EFC, 0xB883, 0x8EFD, + 0xB884, 0x8EFE, 0xB885, 0x8F41, 0xB886, 0x8F42, 0xB887, 0x8F43, 0xB888, 0x8F44, 0xB889, 0x8F45, 0xB88A, 0x8F46, 0xB88B, 0x8F47, + 0xB88C, 0x8F48, 0xB88D, 0xB7D8, 0xB88E, 0x8F49, 0xB88F, 0x8F4A, 0xB890, 0x8F4B, 0xB891, 0x8F4C, 0xB892, 0x8F4D, 0xB893, 0x8F4E, + 0xB894, 0x8F4F, 0xB895, 0x8F50, 0xB896, 0x8F51, 0xB897, 0x8F52, 0xB898, 0x8F53, 0xB899, 0x8F54, 0xB89A, 0x8F55, 0xB89B, 0x8F56, + 0xB89C, 0x8F57, 0xB89D, 0x8F58, 0xB89E, 0x8F59, 0xB89F, 0x8F5A, 0xB8A0, 0x8F61, 0xB8A1, 0x8F62, 0xB8A2, 0x8F63, 0xB8A3, 0x8F64, + 0xB8A4, 0x8F65, 0xB8A5, 0x8F66, 0xB8A6, 0x8F67, 0xB8A7, 0x8F68, 0xB8A8, 0xB7D9, 0xB8A9, 0x8F69, 0xB8AA, 0x8F6A, 0xB8AB, 0x8F6B, + 0xB8AC, 0x8F6C, 0xB8AD, 0x8F6D, 0xB8AE, 0x8F6E, 0xB8AF, 0x8F6F, 0xB8B0, 0xB7DA, 0xB8B1, 0x8F70, 0xB8B2, 0x8F71, 0xB8B3, 0x8F72, + 0xB8B4, 0xB7DB, 0xB8B5, 0x8F73, 0xB8B6, 0x8F74, 0xB8B7, 0x8F75, 0xB8B8, 0xB7DC, 0xB8B9, 0x8F76, 0xB8BA, 0x8F77, 0xB8BB, 0x8F78, + 0xB8BC, 0x8F79, 0xB8BD, 0x8F7A, 0xB8BE, 0x8F81, 0xB8BF, 0x8F82, 0xB8C0, 0xB7DD, 0xB8C1, 0xB7DE, 0xB8C2, 0x8F83, 0xB8C3, 0xB7DF, + 0xB8C4, 0x8F84, 0xB8C5, 0xB7E0, 0xB8C6, 0x8F85, 0xB8C7, 0x8F86, 0xB8C8, 0x8F87, 0xB8C9, 0x8F88, 0xB8CA, 0x8F89, 0xB8CB, 0x8F8A, + 0xB8CC, 0xB7E1, 0xB8CD, 0x8F8B, 0xB8CE, 0x8F8C, 0xB8CF, 0x8F8D, 0xB8D0, 0xB7E2, 0xB8D1, 0x8F8E, 0xB8D2, 0x8F8F, 0xB8D3, 0x8F90, + 0xB8D4, 0xB7E3, 0xB8D5, 0x8F91, 0xB8D6, 0x8F92, 0xB8D7, 0x8F93, 0xB8D8, 0x8F94, 0xB8D9, 0x8F95, 0xB8DA, 0x8F96, 0xB8DB, 0x8F97, + 0xB8DC, 0x8F98, 0xB8DD, 0xB7E4, 0xB8DE, 0x8F99, 0xB8DF, 0xB7E5, 0xB8E0, 0x8F9A, 0xB8E1, 0xB7E6, 0xB8E2, 0x8F9B, 0xB8E3, 0x8F9C, + 0xB8E4, 0x8F9D, 0xB8E5, 0x8F9E, 0xB8E6, 0x8F9F, 0xB8E7, 0x8FA0, 0xB8E8, 0xB7E7, 0xB8E9, 0xB7E8, 0xB8EA, 0x8FA1, 0xB8EB, 0x8FA2, + 0xB8EC, 0xB7E9, 0xB8ED, 0x8FA3, 0xB8EE, 0x8FA4, 0xB8EF, 0x8FA5, 0xB8F0, 0xB7EA, 0xB8F1, 0x8FA6, 0xB8F2, 0x8FA7, 0xB8F3, 0x8FA8, + 0xB8F4, 0x8FA9, 0xB8F5, 0x8FAA, 0xB8F6, 0x8FAB, 0xB8F7, 0x8FAC, 0xB8F8, 0xB7EB, 0xB8F9, 0xB7EC, 0xB8FA, 0x8FAD, 0xB8FB, 0xB7ED, + 0xB8FC, 0x8FAE, 0xB8FD, 0xB7EE, 0xB8FE, 0x8FAF, 0xB8FF, 0x8FB0, 0xB900, 0x8FB1, 0xB901, 0x8FB2, 0xB902, 0x8FB3, 0xB903, 0x8FB4, + 0xB904, 0xB7EF, 0xB905, 0x8FB5, 0xB906, 0x8FB6, 0xB907, 0x8FB7, 0xB908, 0x8FB8, 0xB909, 0x8FB9, 0xB90A, 0x8FBA, 0xB90B, 0x8FBB, + 0xB90C, 0x8FBC, 0xB90D, 0x8FBD, 0xB90E, 0x8FBE, 0xB90F, 0x8FBF, 0xB910, 0x8FC0, 0xB911, 0x8FC1, 0xB912, 0x8FC2, 0xB913, 0x8FC3, + 0xB914, 0x8FC4, 0xB915, 0x8FC5, 0xB916, 0x8FC6, 0xB917, 0x8FC7, 0xB918, 0xB7F0, 0xB919, 0x8FC8, 0xB91A, 0x8FC9, 0xB91B, 0x8FCA, + 0xB91C, 0x8FCB, 0xB91D, 0x8FCC, 0xB91E, 0x8FCD, 0xB91F, 0x8FCE, 0xB920, 0xB7F1, 0xB921, 0x8FCF, 0xB922, 0x8FD0, 0xB923, 0x8FD1, + 0xB924, 0x8FD2, 0xB925, 0x8FD3, 0xB926, 0x8FD4, 0xB927, 0x8FD5, 0xB928, 0x8FD6, 0xB929, 0x8FD7, 0xB92A, 0x8FD8, 0xB92B, 0x8FD9, + 0xB92C, 0x8FDA, 0xB92D, 0x8FDB, 0xB92E, 0x8FDC, 0xB92F, 0x8FDD, 0xB930, 0x8FDE, 0xB931, 0x8FDF, 0xB932, 0x8FE0, 0xB933, 0x8FE1, + 0xB934, 0x8FE2, 0xB935, 0x8FE3, 0xB936, 0x8FE4, 0xB937, 0x8FE5, 0xB938, 0x8FE6, 0xB939, 0x8FE7, 0xB93A, 0x8FE8, 0xB93B, 0x8FE9, + 0xB93C, 0xB7F2, 0xB93D, 0xB7F3, 0xB93E, 0x8FEA, 0xB93F, 0x8FEB, 0xB940, 0xB7F4, 0xB941, 0x8FEC, 0xB942, 0x8FED, 0xB943, 0x8FEE, + 0xB944, 0xB7F5, 0xB945, 0x8FEF, 0xB946, 0x8FF0, 0xB947, 0x8FF1, 0xB948, 0x8FF2, 0xB949, 0x8FF3, 0xB94A, 0x8FF4, 0xB94B, 0x8FF5, + 0xB94C, 0xB7F6, 0xB94D, 0x8FF6, 0xB94E, 0x8FF7, 0xB94F, 0xB7F7, 0xB950, 0x8FF8, 0xB951, 0xB7F8, 0xB952, 0x8FF9, 0xB953, 0x8FFA, + 0xB954, 0x8FFB, 0xB955, 0x8FFC, 0xB956, 0x8FFD, 0xB957, 0x8FFE, 0xB958, 0xB7F9, 0xB959, 0xB7FA, 0xB95A, 0x9041, 0xB95B, 0x9042, + 0xB95C, 0xB7FB, 0xB95D, 0x9043, 0xB95E, 0x9044, 0xB95F, 0x9045, 0xB960, 0xB7FC, 0xB961, 0x9046, 0xB962, 0x9047, 0xB963, 0x9048, + 0xB964, 0x9049, 0xB965, 0x904A, 0xB966, 0x904B, 0xB967, 0x904C, 0xB968, 0xB7FD, 0xB969, 0xB7FE, 0xB96A, 0x904D, 0xB96B, 0xB8A1, + 0xB96C, 0x904E, 0xB96D, 0xB8A2, 0xB96E, 0x904F, 0xB96F, 0x9050, 0xB970, 0x9051, 0xB971, 0x9052, 0xB972, 0x9053, 0xB973, 0x9054, + 0xB974, 0xB8A3, 0xB975, 0xB8A4, 0xB976, 0x9055, 0xB977, 0x9056, 0xB978, 0xB8A5, 0xB979, 0x9057, 0xB97A, 0x9058, 0xB97B, 0x9059, + 0xB97C, 0xB8A6, 0xB97D, 0x905A, 0xB97E, 0x9061, 0xB97F, 0x9062, 0xB980, 0x9063, 0xB981, 0x9064, 0xB982, 0x9065, 0xB983, 0x9066, + 0xB984, 0xB8A7, 0xB985, 0xB8A8, 0xB986, 0x9067, 0xB987, 0xB8A9, 0xB988, 0x9068, 0xB989, 0xB8AA, 0xB98A, 0xB8AB, 0xB98B, 0x9069, + 0xB98C, 0x906A, 0xB98D, 0xB8AC, 0xB98E, 0xB8AD, 0xB98F, 0x906B, 0xB990, 0x906C, 0xB991, 0x906D, 0xB992, 0x906E, 0xB993, 0x906F, + 0xB994, 0x9070, 0xB995, 0x9071, 0xB996, 0x9072, 0xB997, 0x9073, 0xB998, 0x9074, 0xB999, 0x9075, 0xB99A, 0x9076, 0xB99B, 0x9077, + 0xB99C, 0x9078, 0xB99D, 0x9079, 0xB99E, 0x907A, 0xB99F, 0x9081, 0xB9A0, 0x9082, 0xB9A1, 0x9083, 0xB9A2, 0x9084, 0xB9A3, 0x9085, + 0xB9A4, 0x9086, 0xB9A5, 0x9087, 0xB9A6, 0x9088, 0xB9A7, 0x9089, 0xB9A8, 0x908A, 0xB9A9, 0x908B, 0xB9AA, 0x908C, 0xB9AB, 0x908D, + 0xB9AC, 0xB8AE, 0xB9AD, 0xB8AF, 0xB9AE, 0x908E, 0xB9AF, 0x908F, 0xB9B0, 0xB8B0, 0xB9B1, 0x9090, 0xB9B2, 0x9091, 0xB9B3, 0x9092, + 0xB9B4, 0xB8B1, 0xB9B5, 0x9093, 0xB9B6, 0x9094, 0xB9B7, 0x9095, 0xB9B8, 0x9096, 0xB9B9, 0x9097, 0xB9BA, 0x9098, 0xB9BB, 0x9099, + 0xB9BC, 0xB8B2, 0xB9BD, 0xB8B3, 0xB9BE, 0x909A, 0xB9BF, 0xB8B4, 0xB9C0, 0x909B, 0xB9C1, 0xB8B5, 0xB9C2, 0x909C, 0xB9C3, 0x909D, + 0xB9C4, 0x909E, 0xB9C5, 0x909F, 0xB9C6, 0x90A0, 0xB9C7, 0x90A1, 0xB9C8, 0xB8B6, 0xB9C9, 0xB8B7, 0xB9CA, 0x90A2, 0xB9CB, 0x90A3, + 0xB9CC, 0xB8B8, 0xB9CD, 0x90A4, 0xB9CE, 0xB8B9, 0xB9CF, 0xB8BA, 0xB9D0, 0xB8BB, 0xB9D1, 0xB8BC, 0xB9D2, 0xB8BD, 0xB9D3, 0x90A5, + 0xB9D4, 0x90A6, 0xB9D5, 0x90A7, 0xB9D6, 0x90A8, 0xB9D7, 0x90A9, 0xB9D8, 0xB8BE, 0xB9D9, 0xB8BF, 0xB9DA, 0x90AA, 0xB9DB, 0xB8C0, + 0xB9DC, 0x90AB, 0xB9DD, 0xB8C1, 0xB9DE, 0xB8C2, 0xB9DF, 0x90AC, 0xB9E0, 0x90AD, 0xB9E1, 0xB8C3, 0xB9E2, 0x90AE, 0xB9E3, 0xB8C4, + 0xB9E4, 0xB8C5, 0xB9E5, 0xB8C6, 0xB9E6, 0x90AF, 0xB9E7, 0x90B0, 0xB9E8, 0xB8C7, 0xB9E9, 0x90B1, 0xB9EA, 0x90B2, 0xB9EB, 0x90B3, + 0xB9EC, 0xB8C8, 0xB9ED, 0x90B4, 0xB9EE, 0x90B5, 0xB9EF, 0x90B6, 0xB9F0, 0x90B7, 0xB9F1, 0x90B8, 0xB9F2, 0x90B9, 0xB9F3, 0x90BA, + 0xB9F4, 0xB8C9, 0xB9F5, 0xB8CA, 0xB9F6, 0x90BB, 0xB9F7, 0xB8CB, 0xB9F8, 0xB8CC, 0xB9F9, 0xB8CD, 0xB9FA, 0xB8CE, 0xB9FB, 0x90BC, + 0xB9FC, 0x90BD, 0xB9FD, 0x90BE, 0xB9FE, 0x90BF, 0xB9FF, 0x90C0, 0xBA00, 0xB8CF, 0xBA01, 0xB8D0, 0xBA02, 0x90C1, 0xBA03, 0x90C2, + 0xBA04, 0x90C3, 0xBA05, 0x90C4, 0xBA06, 0x90C5, 0xBA07, 0x90C6, 0xBA08, 0xB8D1, 0xBA09, 0x90C7, 0xBA0A, 0x90C8, 0xBA0B, 0x90C9, + 0xBA0C, 0x90CA, 0xBA0D, 0x90CB, 0xBA0E, 0x90CC, 0xBA0F, 0x90CD, 0xBA10, 0x90CE, 0xBA11, 0x90CF, 0xBA12, 0x90D0, 0xBA13, 0x90D1, + 0xBA14, 0x90D2, 0xBA15, 0xB8D2, 0xBA16, 0x90D3, 0xBA17, 0x90D4, 0xBA18, 0x90D5, 0xBA19, 0x90D6, 0xBA1A, 0x90D7, 0xBA1B, 0x90D8, + 0xBA1C, 0x90D9, 0xBA1D, 0x90DA, 0xBA1E, 0x90DB, 0xBA1F, 0x90DC, 0xBA20, 0x90DD, 0xBA21, 0x90DE, 0xBA22, 0x90DF, 0xBA23, 0x90E0, + 0xBA24, 0x90E1, 0xBA25, 0x90E2, 0xBA26, 0x90E3, 0xBA27, 0x90E4, 0xBA28, 0x90E5, 0xBA29, 0x90E6, 0xBA2A, 0x90E7, 0xBA2B, 0x90E8, + 0xBA2C, 0x90E9, 0xBA2D, 0x90EA, 0xBA2E, 0x90EB, 0xBA2F, 0x90EC, 0xBA30, 0x90ED, 0xBA31, 0x90EE, 0xBA32, 0x90EF, 0xBA33, 0x90F0, + 0xBA34, 0x90F1, 0xBA35, 0x90F2, 0xBA36, 0x90F3, 0xBA37, 0x90F4, 0xBA38, 0xB8D3, 0xBA39, 0xB8D4, 0xBA3A, 0x90F5, 0xBA3B, 0x90F6, + 0xBA3C, 0xB8D5, 0xBA3D, 0x90F7, 0xBA3E, 0x90F8, 0xBA3F, 0x90F9, 0xBA40, 0xB8D6, 0xBA41, 0x90FA, 0xBA42, 0xB8D7, 0xBA43, 0x90FB, + 0xBA44, 0x90FC, 0xBA45, 0x90FD, 0xBA46, 0x90FE, 0xBA47, 0x9141, 0xBA48, 0xB8D8, 0xBA49, 0xB8D9, 0xBA4A, 0x9142, 0xBA4B, 0xB8DA, + 0xBA4C, 0x9143, 0xBA4D, 0xB8DB, 0xBA4E, 0xB8DC, 0xBA4F, 0x9144, 0xBA50, 0x9145, 0xBA51, 0x9146, 0xBA52, 0x9147, 0xBA53, 0xB8DD, + 0xBA54, 0xB8DE, 0xBA55, 0xB8DF, 0xBA56, 0x9148, 0xBA57, 0x9149, 0xBA58, 0xB8E0, 0xBA59, 0x914A, 0xBA5A, 0x914B, 0xBA5B, 0x914C, + 0xBA5C, 0xB8E1, 0xBA5D, 0x914D, 0xBA5E, 0x914E, 0xBA5F, 0x914F, 0xBA60, 0x9150, 0xBA61, 0x9151, 0xBA62, 0x9152, 0xBA63, 0x9153, + 0xBA64, 0xB8E2, 0xBA65, 0xB8E3, 0xBA66, 0x9154, 0xBA67, 0xB8E4, 0xBA68, 0xB8E5, 0xBA69, 0xB8E6, 0xBA6A, 0x9155, 0xBA6B, 0x9156, + 0xBA6C, 0x9157, 0xBA6D, 0x9158, 0xBA6E, 0x9159, 0xBA6F, 0x915A, 0xBA70, 0xB8E7, 0xBA71, 0xB8E8, 0xBA72, 0x9161, 0xBA73, 0x9162, + 0xBA74, 0xB8E9, 0xBA75, 0x9163, 0xBA76, 0x9164, 0xBA77, 0x9165, 0xBA78, 0xB8EA, 0xBA79, 0x9166, 0xBA7A, 0x9167, 0xBA7B, 0x9168, + 0xBA7C, 0x9169, 0xBA7D, 0x916A, 0xBA7E, 0x916B, 0xBA7F, 0x916C, 0xBA80, 0x916D, 0xBA81, 0x916E, 0xBA82, 0x916F, 0xBA83, 0xB8EB, + 0xBA84, 0xB8EC, 0xBA85, 0xB8ED, 0xBA86, 0x9170, 0xBA87, 0xB8EE, 0xBA88, 0x9171, 0xBA89, 0x9172, 0xBA8A, 0x9173, 0xBA8B, 0x9174, + 0xBA8C, 0xB8EF, 0xBA8D, 0x9175, 0xBA8E, 0x9176, 0xBA8F, 0x9177, 0xBA90, 0x9178, 0xBA91, 0x9179, 0xBA92, 0x917A, 0xBA93, 0x9181, + 0xBA94, 0x9182, 0xBA95, 0x9183, 0xBA96, 0x9184, 0xBA97, 0x9185, 0xBA98, 0x9186, 0xBA99, 0x9187, 0xBA9A, 0x9188, 0xBA9B, 0x9189, + 0xBA9C, 0x918A, 0xBA9D, 0x918B, 0xBA9E, 0x918C, 0xBA9F, 0x918D, 0xBAA0, 0x918E, 0xBAA1, 0x918F, 0xBAA2, 0x9190, 0xBAA3, 0x9191, + 0xBAA4, 0x9192, 0xBAA5, 0x9193, 0xBAA6, 0x9194, 0xBAA7, 0x9195, 0xBAA8, 0xB8F0, 0xBAA9, 0xB8F1, 0xBAAA, 0x9196, 0xBAAB, 0xB8F2, + 0xBAAC, 0xB8F3, 0xBAAD, 0x9197, 0xBAAE, 0x9198, 0xBAAF, 0x9199, 0xBAB0, 0xB8F4, 0xBAB1, 0x919A, 0xBAB2, 0xB8F5, 0xBAB3, 0x919B, + 0xBAB4, 0x919C, 0xBAB5, 0x919D, 0xBAB6, 0x919E, 0xBAB7, 0x919F, 0xBAB8, 0xB8F6, 0xBAB9, 0xB8F7, 0xBABA, 0x91A0, 0xBABB, 0xB8F8, + 0xBABC, 0x91A1, 0xBABD, 0xB8F9, 0xBABE, 0x91A2, 0xBABF, 0x91A3, 0xBAC0, 0x91A4, 0xBAC1, 0x91A5, 0xBAC2, 0x91A6, 0xBAC3, 0x91A7, + 0xBAC4, 0xB8FA, 0xBAC5, 0x91A8, 0xBAC6, 0x91A9, 0xBAC7, 0x91AA, 0xBAC8, 0xB8FB, 0xBAC9, 0x91AB, 0xBACA, 0x91AC, 0xBACB, 0x91AD, + 0xBACC, 0x91AE, 0xBACD, 0x91AF, 0xBACE, 0x91B0, 0xBACF, 0x91B1, 0xBAD0, 0x91B2, 0xBAD1, 0x91B3, 0xBAD2, 0x91B4, 0xBAD3, 0x91B5, + 0xBAD4, 0x91B6, 0xBAD5, 0x91B7, 0xBAD6, 0x91B8, 0xBAD7, 0x91B9, 0xBAD8, 0xB8FC, 0xBAD9, 0xB8FD, 0xBADA, 0x91BA, 0xBADB, 0x91BB, + 0xBADC, 0x91BC, 0xBADD, 0x91BD, 0xBADE, 0x91BE, 0xBADF, 0x91BF, 0xBAE0, 0x91C0, 0xBAE1, 0x91C1, 0xBAE2, 0x91C2, 0xBAE3, 0x91C3, + 0xBAE4, 0x91C4, 0xBAE5, 0x91C5, 0xBAE6, 0x91C6, 0xBAE7, 0x91C7, 0xBAE8, 0x91C8, 0xBAE9, 0x91C9, 0xBAEA, 0x91CA, 0xBAEB, 0x91CB, + 0xBAEC, 0x91CC, 0xBAED, 0x91CD, 0xBAEE, 0x91CE, 0xBAEF, 0x91CF, 0xBAF0, 0x91D0, 0xBAF1, 0x91D1, 0xBAF2, 0x91D2, 0xBAF3, 0x91D3, + 0xBAF4, 0x91D4, 0xBAF5, 0x91D5, 0xBAF6, 0x91D6, 0xBAF7, 0x91D7, 0xBAF8, 0x91D8, 0xBAF9, 0x91D9, 0xBAFA, 0x91DA, 0xBAFB, 0x91DB, + 0xBAFC, 0xB8FE, 0xBAFD, 0x91DC, 0xBAFE, 0x91DD, 0xBAFF, 0x91DE, 0xBB00, 0xB9A1, 0xBB01, 0x91DF, 0xBB02, 0x91E0, 0xBB03, 0x91E1, + 0xBB04, 0xB9A2, 0xBB05, 0x91E2, 0xBB06, 0x91E3, 0xBB07, 0x91E4, 0xBB08, 0x91E5, 0xBB09, 0x91E6, 0xBB0A, 0x91E7, 0xBB0B, 0x91E8, + 0xBB0C, 0x91E9, 0xBB0D, 0xB9A3, 0xBB0E, 0x91EA, 0xBB0F, 0xB9A4, 0xBB10, 0x91EB, 0xBB11, 0xB9A5, 0xBB12, 0x91EC, 0xBB13, 0x91ED, + 0xBB14, 0x91EE, 0xBB15, 0x91EF, 0xBB16, 0x91F0, 0xBB17, 0x91F1, 0xBB18, 0xB9A6, 0xBB19, 0x91F2, 0xBB1A, 0x91F3, 0xBB1B, 0x91F4, + 0xBB1C, 0xB9A7, 0xBB1D, 0x91F5, 0xBB1E, 0x91F6, 0xBB1F, 0x91F7, 0xBB20, 0xB9A8, 0xBB21, 0x91F8, 0xBB22, 0x91F9, 0xBB23, 0x91FA, + 0xBB24, 0x91FB, 0xBB25, 0x91FC, 0xBB26, 0x91FD, 0xBB27, 0x91FE, 0xBB28, 0x9241, 0xBB29, 0xB9A9, 0xBB2A, 0x9242, 0xBB2B, 0xB9AA, + 0xBB2C, 0x9243, 0xBB2D, 0x9244, 0xBB2E, 0x9245, 0xBB2F, 0x9246, 0xBB30, 0x9247, 0xBB31, 0x9248, 0xBB32, 0x9249, 0xBB33, 0x924A, + 0xBB34, 0xB9AB, 0xBB35, 0xB9AC, 0xBB36, 0xB9AD, 0xBB37, 0x924B, 0xBB38, 0xB9AE, 0xBB39, 0x924C, 0xBB3A, 0x924D, 0xBB3B, 0xB9AF, + 0xBB3C, 0xB9B0, 0xBB3D, 0xB9B1, 0xBB3E, 0xB9B2, 0xBB3F, 0x924E, 0xBB40, 0x924F, 0xBB41, 0x9250, 0xBB42, 0x9251, 0xBB43, 0x9252, + 0xBB44, 0xB9B3, 0xBB45, 0xB9B4, 0xBB46, 0x9253, 0xBB47, 0xB9B5, 0xBB48, 0x9254, 0xBB49, 0xB9B6, 0xBB4A, 0x9255, 0xBB4B, 0x9256, + 0xBB4C, 0x9257, 0xBB4D, 0xB9B7, 0xBB4E, 0x9258, 0xBB4F, 0xB9B8, 0xBB50, 0xB9B9, 0xBB51, 0x9259, 0xBB52, 0x925A, 0xBB53, 0x9261, + 0xBB54, 0xB9BA, 0xBB55, 0x9262, 0xBB56, 0x9263, 0xBB57, 0x9264, 0xBB58, 0xB9BB, 0xBB59, 0x9265, 0xBB5A, 0x9266, 0xBB5B, 0x9267, + 0xBB5C, 0x9268, 0xBB5D, 0x9269, 0xBB5E, 0x926A, 0xBB5F, 0x926B, 0xBB60, 0x926C, 0xBB61, 0xB9BC, 0xBB62, 0x926D, 0xBB63, 0xB9BD, + 0xBB64, 0x926E, 0xBB65, 0x926F, 0xBB66, 0x9270, 0xBB67, 0x9271, 0xBB68, 0x9272, 0xBB69, 0x9273, 0xBB6A, 0x9274, 0xBB6B, 0x9275, + 0xBB6C, 0xB9BE, 0xBB6D, 0x9276, 0xBB6E, 0x9277, 0xBB6F, 0x9278, 0xBB70, 0x9279, 0xBB71, 0x927A, 0xBB72, 0x9281, 0xBB73, 0x9282, + 0xBB74, 0x9283, 0xBB75, 0x9284, 0xBB76, 0x9285, 0xBB77, 0x9286, 0xBB78, 0x9287, 0xBB79, 0x9288, 0xBB7A, 0x9289, 0xBB7B, 0x928A, + 0xBB7C, 0x928B, 0xBB7D, 0x928C, 0xBB7E, 0x928D, 0xBB7F, 0x928E, 0xBB80, 0x928F, 0xBB81, 0x9290, 0xBB82, 0x9291, 0xBB83, 0x9292, + 0xBB84, 0x9293, 0xBB85, 0x9294, 0xBB86, 0x9295, 0xBB87, 0x9296, 0xBB88, 0xB9BF, 0xBB89, 0x9297, 0xBB8A, 0x9298, 0xBB8B, 0x9299, + 0xBB8C, 0xB9C0, 0xBB8D, 0x929A, 0xBB8E, 0x929B, 0xBB8F, 0x929C, 0xBB90, 0xB9C1, 0xBB91, 0x929D, 0xBB92, 0x929E, 0xBB93, 0x929F, + 0xBB94, 0x92A0, 0xBB95, 0x92A1, 0xBB96, 0x92A2, 0xBB97, 0x92A3, 0xBB98, 0x92A4, 0xBB99, 0x92A5, 0xBB9A, 0x92A6, 0xBB9B, 0x92A7, + 0xBB9C, 0x92A8, 0xBB9D, 0x92A9, 0xBB9E, 0x92AA, 0xBB9F, 0x92AB, 0xBBA0, 0x92AC, 0xBBA1, 0x92AD, 0xBBA2, 0x92AE, 0xBBA3, 0x92AF, + 0xBBA4, 0xB9C2, 0xBBA5, 0x92B0, 0xBBA6, 0x92B1, 0xBBA7, 0x92B2, 0xBBA8, 0xB9C3, 0xBBA9, 0x92B3, 0xBBAA, 0x92B4, 0xBBAB, 0x92B5, + 0xBBAC, 0xB9C4, 0xBBAD, 0x92B6, 0xBBAE, 0x92B7, 0xBBAF, 0x92B8, 0xBBB0, 0x92B9, 0xBBB1, 0x92BA, 0xBBB2, 0x92BB, 0xBBB3, 0x92BC, + 0xBBB4, 0xB9C5, 0xBBB5, 0x92BD, 0xBBB6, 0x92BE, 0xBBB7, 0xB9C6, 0xBBB8, 0x92BF, 0xBBB9, 0x92C0, 0xBBBA, 0x92C1, 0xBBBB, 0x92C2, + 0xBBBC, 0x92C3, 0xBBBD, 0x92C4, 0xBBBE, 0x92C5, 0xBBBF, 0x92C6, 0xBBC0, 0xB9C7, 0xBBC1, 0x92C7, 0xBBC2, 0x92C8, 0xBBC3, 0x92C9, + 0xBBC4, 0xB9C8, 0xBBC5, 0x92CA, 0xBBC6, 0x92CB, 0xBBC7, 0x92CC, 0xBBC8, 0xB9C9, 0xBBC9, 0x92CD, 0xBBCA, 0x92CE, 0xBBCB, 0x92CF, + 0xBBCC, 0x92D0, 0xBBCD, 0x92D1, 0xBBCE, 0x92D2, 0xBBCF, 0x92D3, 0xBBD0, 0xB9CA, 0xBBD1, 0x92D4, 0xBBD2, 0x92D5, 0xBBD3, 0xB9CB, + 0xBBD4, 0x92D6, 0xBBD5, 0x92D7, 0xBBD6, 0x92D8, 0xBBD7, 0x92D9, 0xBBD8, 0x92DA, 0xBBD9, 0x92DB, 0xBBDA, 0x92DC, 0xBBDB, 0x92DD, + 0xBBDC, 0x92DE, 0xBBDD, 0x92DF, 0xBBDE, 0x92E0, 0xBBDF, 0x92E1, 0xBBE0, 0x92E2, 0xBBE1, 0x92E3, 0xBBE2, 0x92E4, 0xBBE3, 0x92E5, + 0xBBE4, 0x92E6, 0xBBE5, 0x92E7, 0xBBE6, 0x92E8, 0xBBE7, 0x92E9, 0xBBE8, 0x92EA, 0xBBE9, 0x92EB, 0xBBEA, 0x92EC, 0xBBEB, 0x92ED, + 0xBBEC, 0x92EE, 0xBBED, 0x92EF, 0xBBEE, 0x92F0, 0xBBEF, 0x92F1, 0xBBF0, 0x92F2, 0xBBF1, 0x92F3, 0xBBF2, 0x92F4, 0xBBF3, 0x92F5, + 0xBBF4, 0x92F6, 0xBBF5, 0x92F7, 0xBBF6, 0x92F8, 0xBBF7, 0x92F9, 0xBBF8, 0xB9CC, 0xBBF9, 0xB9CD, 0xBBFA, 0x92FA, 0xBBFB, 0x92FB, + 0xBBFC, 0xB9CE, 0xBBFD, 0x92FC, 0xBBFE, 0x92FD, 0xBBFF, 0xB9CF, 0xBC00, 0xB9D0, 0xBC01, 0x92FE, 0xBC02, 0xB9D1, 0xBC03, 0x9341, + 0xBC04, 0x9342, 0xBC05, 0x9343, 0xBC06, 0x9344, 0xBC07, 0x9345, 0xBC08, 0xB9D2, 0xBC09, 0xB9D3, 0xBC0A, 0x9346, 0xBC0B, 0xB9D4, + 0xBC0C, 0xB9D5, 0xBC0D, 0xB9D6, 0xBC0E, 0x9347, 0xBC0F, 0xB9D7, 0xBC10, 0x9348, 0xBC11, 0xB9D8, 0xBC12, 0x9349, 0xBC13, 0x934A, + 0xBC14, 0xB9D9, 0xBC15, 0xB9DA, 0xBC16, 0xB9DB, 0xBC17, 0xB9DC, 0xBC18, 0xB9DD, 0xBC19, 0x934B, 0xBC1A, 0x934C, 0xBC1B, 0xB9DE, + 0xBC1C, 0xB9DF, 0xBC1D, 0xB9E0, 0xBC1E, 0xB9E1, 0xBC1F, 0xB9E2, 0xBC20, 0x934D, 0xBC21, 0x934E, 0xBC22, 0x934F, 0xBC23, 0x9350, + 0xBC24, 0xB9E3, 0xBC25, 0xB9E4, 0xBC26, 0x9351, 0xBC27, 0xB9E5, 0xBC28, 0x9352, 0xBC29, 0xB9E6, 0xBC2A, 0x9353, 0xBC2B, 0x9354, + 0xBC2C, 0x9355, 0xBC2D, 0xB9E7, 0xBC2E, 0x9356, 0xBC2F, 0x9357, 0xBC30, 0xB9E8, 0xBC31, 0xB9E9, 0xBC32, 0x9358, 0xBC33, 0x9359, + 0xBC34, 0xB9EA, 0xBC35, 0x935A, 0xBC36, 0x9361, 0xBC37, 0x9362, 0xBC38, 0xB9EB, 0xBC39, 0x9363, 0xBC3A, 0x9364, 0xBC3B, 0x9365, + 0xBC3C, 0x9366, 0xBC3D, 0x9367, 0xBC3E, 0x9368, 0xBC3F, 0x9369, 0xBC40, 0xB9EC, 0xBC41, 0xB9ED, 0xBC42, 0x936A, 0xBC43, 0xB9EE, + 0xBC44, 0xB9EF, 0xBC45, 0xB9F0, 0xBC46, 0x936B, 0xBC47, 0x936C, 0xBC48, 0x936D, 0xBC49, 0xB9F1, 0xBC4A, 0x936E, 0xBC4B, 0x936F, + 0xBC4C, 0xB9F2, 0xBC4D, 0xB9F3, 0xBC4E, 0x9370, 0xBC4F, 0x9371, 0xBC50, 0xB9F4, 0xBC51, 0x9372, 0xBC52, 0x9373, 0xBC53, 0x9374, + 0xBC54, 0x9375, 0xBC55, 0x9376, 0xBC56, 0x9377, 0xBC57, 0x9378, 0xBC58, 0x9379, 0xBC59, 0x937A, 0xBC5A, 0x9381, 0xBC5B, 0x9382, + 0xBC5C, 0x9383, 0xBC5D, 0xB9F5, 0xBC5E, 0x9384, 0xBC5F, 0x9385, 0xBC60, 0x9386, 0xBC61, 0x9387, 0xBC62, 0x9388, 0xBC63, 0x9389, + 0xBC64, 0x938A, 0xBC65, 0x938B, 0xBC66, 0x938C, 0xBC67, 0x938D, 0xBC68, 0x938E, 0xBC69, 0x938F, 0xBC6A, 0x9390, 0xBC6B, 0x9391, + 0xBC6C, 0x9392, 0xBC6D, 0x9393, 0xBC6E, 0x9394, 0xBC6F, 0x9395, 0xBC70, 0x9396, 0xBC71, 0x9397, 0xBC72, 0x9398, 0xBC73, 0x9399, + 0xBC74, 0x939A, 0xBC75, 0x939B, 0xBC76, 0x939C, 0xBC77, 0x939D, 0xBC78, 0x939E, 0xBC79, 0x939F, 0xBC7A, 0x93A0, 0xBC7B, 0x93A1, + 0xBC7C, 0x93A2, 0xBC7D, 0x93A3, 0xBC7E, 0x93A4, 0xBC7F, 0x93A5, 0xBC80, 0x93A6, 0xBC81, 0x93A7, 0xBC82, 0x93A8, 0xBC83, 0x93A9, + 0xBC84, 0xB9F6, 0xBC85, 0xB9F7, 0xBC86, 0x93AA, 0xBC87, 0x93AB, 0xBC88, 0xB9F8, 0xBC89, 0x93AC, 0xBC8A, 0x93AD, 0xBC8B, 0xB9F9, + 0xBC8C, 0xB9FA, 0xBC8D, 0x93AE, 0xBC8E, 0xB9FB, 0xBC8F, 0x93AF, 0xBC90, 0x93B0, 0xBC91, 0x93B1, 0xBC92, 0x93B2, 0xBC93, 0x93B3, + 0xBC94, 0xB9FC, 0xBC95, 0xB9FD, 0xBC96, 0x93B4, 0xBC97, 0xB9FE, 0xBC98, 0x93B5, 0xBC99, 0xBAA1, 0xBC9A, 0xBAA2, 0xBC9B, 0x93B6, + 0xBC9C, 0x93B7, 0xBC9D, 0x93B8, 0xBC9E, 0x93B9, 0xBC9F, 0x93BA, 0xBCA0, 0xBAA3, 0xBCA1, 0xBAA4, 0xBCA2, 0x93BB, 0xBCA3, 0x93BC, + 0xBCA4, 0xBAA5, 0xBCA5, 0x93BD, 0xBCA6, 0x93BE, 0xBCA7, 0xBAA6, 0xBCA8, 0xBAA7, 0xBCA9, 0x93BF, 0xBCAA, 0x93C0, 0xBCAB, 0x93C1, + 0xBCAC, 0x93C2, 0xBCAD, 0x93C3, 0xBCAE, 0x93C4, 0xBCAF, 0x93C5, 0xBCB0, 0xBAA8, 0xBCB1, 0xBAA9, 0xBCB2, 0x93C6, 0xBCB3, 0xBAAA, + 0xBCB4, 0xBAAB, 0xBCB5, 0xBAAC, 0xBCB6, 0x93C7, 0xBCB7, 0x93C8, 0xBCB8, 0x93C9, 0xBCB9, 0x93CA, 0xBCBA, 0x93CB, 0xBCBB, 0x93CC, + 0xBCBC, 0xBAAD, 0xBCBD, 0xBAAE, 0xBCBE, 0x93CD, 0xBCBF, 0x93CE, 0xBCC0, 0xBAAF, 0xBCC1, 0x93CF, 0xBCC2, 0x93D0, 0xBCC3, 0x93D1, + 0xBCC4, 0xBAB0, 0xBCC5, 0x93D2, 0xBCC6, 0x93D3, 0xBCC7, 0x93D4, 0xBCC8, 0x93D5, 0xBCC9, 0x93D6, 0xBCCA, 0x93D7, 0xBCCB, 0x93D8, + 0xBCCC, 0x93D9, 0xBCCD, 0xBAB1, 0xBCCE, 0x93DA, 0xBCCF, 0xBAB2, 0xBCD0, 0xBAB3, 0xBCD1, 0xBAB4, 0xBCD2, 0x93DB, 0xBCD3, 0x93DC, + 0xBCD4, 0x93DD, 0xBCD5, 0xBAB5, 0xBCD6, 0x93DE, 0xBCD7, 0x93DF, 0xBCD8, 0xBAB6, 0xBCD9, 0x93E0, 0xBCDA, 0x93E1, 0xBCDB, 0x93E2, + 0xBCDC, 0xBAB7, 0xBCDD, 0x93E3, 0xBCDE, 0x93E4, 0xBCDF, 0x93E5, 0xBCE0, 0x93E6, 0xBCE1, 0x93E7, 0xBCE2, 0x93E8, 0xBCE3, 0x93E9, + 0xBCE4, 0x93EA, 0xBCE5, 0x93EB, 0xBCE6, 0x93EC, 0xBCE7, 0x93ED, 0xBCE8, 0x93EE, 0xBCE9, 0x93EF, 0xBCEA, 0x93F0, 0xBCEB, 0x93F1, + 0xBCEC, 0x93F2, 0xBCED, 0x93F3, 0xBCEE, 0x93F4, 0xBCEF, 0x93F5, 0xBCF0, 0x93F6, 0xBCF1, 0x93F7, 0xBCF2, 0x93F8, 0xBCF3, 0x93F9, + 0xBCF4, 0xBAB8, 0xBCF5, 0xBAB9, 0xBCF6, 0xBABA, 0xBCF7, 0x93FA, 0xBCF8, 0xBABB, 0xBCF9, 0x93FB, 0xBCFA, 0x93FC, 0xBCFB, 0x93FD, + 0xBCFC, 0xBABC, 0xBCFD, 0x93FE, 0xBCFE, 0x9441, 0xBCFF, 0x9442, 0xBD00, 0x9443, 0xBD01, 0x9444, 0xBD02, 0x9445, 0xBD03, 0x9446, + 0xBD04, 0xBABD, 0xBD05, 0xBABE, 0xBD06, 0x9447, 0xBD07, 0xBABF, 0xBD08, 0x9448, 0xBD09, 0xBAC0, 0xBD0A, 0x9449, 0xBD0B, 0x944A, + 0xBD0C, 0x944B, 0xBD0D, 0x944C, 0xBD0E, 0x944D, 0xBD0F, 0x944E, 0xBD10, 0xBAC1, 0xBD11, 0x944F, 0xBD12, 0x9450, 0xBD13, 0x9451, + 0xBD14, 0xBAC2, 0xBD15, 0x9452, 0xBD16, 0x9453, 0xBD17, 0x9454, 0xBD18, 0x9455, 0xBD19, 0x9456, 0xBD1A, 0x9457, 0xBD1B, 0x9458, + 0xBD1C, 0x9459, 0xBD1D, 0x945A, 0xBD1E, 0x9461, 0xBD1F, 0x9462, 0xBD20, 0x9463, 0xBD21, 0x9464, 0xBD22, 0x9465, 0xBD23, 0x9466, + 0xBD24, 0xBAC3, 0xBD25, 0x9467, 0xBD26, 0x9468, 0xBD27, 0x9469, 0xBD28, 0x946A, 0xBD29, 0x946B, 0xBD2A, 0x946C, 0xBD2B, 0x946D, + 0xBD2C, 0xBAC4, 0xBD2D, 0x946E, 0xBD2E, 0x946F, 0xBD2F, 0x9470, 0xBD30, 0x9471, 0xBD31, 0x9472, 0xBD32, 0x9473, 0xBD33, 0x9474, + 0xBD34, 0x9475, 0xBD35, 0x9476, 0xBD36, 0x9477, 0xBD37, 0x9478, 0xBD38, 0x9479, 0xBD39, 0x947A, 0xBD3A, 0x9481, 0xBD3B, 0x9482, + 0xBD3C, 0x9483, 0xBD3D, 0x9484, 0xBD3E, 0x9485, 0xBD3F, 0x9486, 0xBD40, 0xBAC5, 0xBD41, 0x9487, 0xBD42, 0x9488, 0xBD43, 0x9489, + 0xBD44, 0x948A, 0xBD45, 0x948B, 0xBD46, 0x948C, 0xBD47, 0x948D, 0xBD48, 0xBAC6, 0xBD49, 0xBAC7, 0xBD4A, 0x948E, 0xBD4B, 0x948F, + 0xBD4C, 0xBAC8, 0xBD4D, 0x9490, 0xBD4E, 0x9491, 0xBD4F, 0x9492, 0xBD50, 0xBAC9, 0xBD51, 0x9493, 0xBD52, 0x9494, 0xBD53, 0x9495, + 0xBD54, 0x9496, 0xBD55, 0x9497, 0xBD56, 0x9498, 0xBD57, 0x9499, 0xBD58, 0xBACA, 0xBD59, 0xBACB, 0xBD5A, 0x949A, 0xBD5B, 0x949B, + 0xBD5C, 0x949C, 0xBD5D, 0x949D, 0xBD5E, 0x949E, 0xBD5F, 0x949F, 0xBD60, 0x94A0, 0xBD61, 0x94A1, 0xBD62, 0x94A2, 0xBD63, 0x94A3, + 0xBD64, 0xBACC, 0xBD65, 0x94A4, 0xBD66, 0x94A5, 0xBD67, 0x94A6, 0xBD68, 0xBACD, 0xBD69, 0x94A7, 0xBD6A, 0x94A8, 0xBD6B, 0x94A9, + 0xBD6C, 0x94AA, 0xBD6D, 0x94AB, 0xBD6E, 0x94AC, 0xBD6F, 0x94AD, 0xBD70, 0x94AE, 0xBD71, 0x94AF, 0xBD72, 0x94B0, 0xBD73, 0x94B1, + 0xBD74, 0x94B2, 0xBD75, 0x94B3, 0xBD76, 0x94B4, 0xBD77, 0x94B5, 0xBD78, 0x94B6, 0xBD79, 0x94B7, 0xBD7A, 0x94B8, 0xBD7B, 0x94B9, + 0xBD7C, 0x94BA, 0xBD7D, 0x94BB, 0xBD7E, 0x94BC, 0xBD7F, 0x94BD, 0xBD80, 0xBACE, 0xBD81, 0xBACF, 0xBD82, 0x94BE, 0xBD83, 0x94BF, + 0xBD84, 0xBAD0, 0xBD85, 0x94C0, 0xBD86, 0x94C1, 0xBD87, 0xBAD1, 0xBD88, 0xBAD2, 0xBD89, 0xBAD3, 0xBD8A, 0xBAD4, 0xBD8B, 0x94C2, + 0xBD8C, 0x94C3, 0xBD8D, 0x94C4, 0xBD8E, 0x94C5, 0xBD8F, 0x94C6, 0xBD90, 0xBAD5, 0xBD91, 0xBAD6, 0xBD92, 0x94C7, 0xBD93, 0xBAD7, + 0xBD94, 0x94C8, 0xBD95, 0xBAD8, 0xBD96, 0x94C9, 0xBD97, 0x94CA, 0xBD98, 0x94CB, 0xBD99, 0xBAD9, 0xBD9A, 0xBADA, 0xBD9B, 0x94CC, + 0xBD9C, 0xBADB, 0xBD9D, 0x94CD, 0xBD9E, 0x94CE, 0xBD9F, 0x94CF, 0xBDA0, 0x94D0, 0xBDA1, 0x94D1, 0xBDA2, 0x94D2, 0xBDA3, 0x94D3, + 0xBDA4, 0xBADC, 0xBDA5, 0x94D4, 0xBDA6, 0x94D5, 0xBDA7, 0x94D6, 0xBDA8, 0x94D7, 0xBDA9, 0x94D8, 0xBDAA, 0x94D9, 0xBDAB, 0x94DA, + 0xBDAC, 0x94DB, 0xBDAD, 0x94DC, 0xBDAE, 0x94DD, 0xBDAF, 0x94DE, 0xBDB0, 0xBADD, 0xBDB1, 0x94DF, 0xBDB2, 0x94E0, 0xBDB3, 0x94E1, + 0xBDB4, 0x94E2, 0xBDB5, 0x94E3, 0xBDB6, 0x94E4, 0xBDB7, 0x94E5, 0xBDB8, 0xBADE, 0xBDB9, 0x94E6, 0xBDBA, 0x94E7, 0xBDBB, 0x94E8, + 0xBDBC, 0x94E9, 0xBDBD, 0x94EA, 0xBDBE, 0x94EB, 0xBDBF, 0x94EC, 0xBDC0, 0x94ED, 0xBDC1, 0x94EE, 0xBDC2, 0x94EF, 0xBDC3, 0x94F0, + 0xBDC4, 0x94F1, 0xBDC5, 0x94F2, 0xBDC6, 0x94F3, 0xBDC7, 0x94F4, 0xBDC8, 0x94F5, 0xBDC9, 0x94F6, 0xBDCA, 0x94F7, 0xBDCB, 0x94F8, + 0xBDCC, 0x94F9, 0xBDCD, 0x94FA, 0xBDCE, 0x94FB, 0xBDCF, 0x94FC, 0xBDD0, 0x94FD, 0xBDD1, 0x94FE, 0xBDD2, 0x9541, 0xBDD3, 0x9542, + 0xBDD4, 0xBADF, 0xBDD5, 0xBAE0, 0xBDD6, 0x9543, 0xBDD7, 0x9544, 0xBDD8, 0xBAE1, 0xBDD9, 0x9545, 0xBDDA, 0x9546, 0xBDDB, 0x9547, + 0xBDDC, 0xBAE2, 0xBDDD, 0x9548, 0xBDDE, 0x9549, 0xBDDF, 0x954A, 0xBDE0, 0x954B, 0xBDE1, 0x954C, 0xBDE2, 0x954D, 0xBDE3, 0x954E, + 0xBDE4, 0x954F, 0xBDE5, 0x9550, 0xBDE6, 0x9551, 0xBDE7, 0x9552, 0xBDE8, 0x9553, 0xBDE9, 0xBAE3, 0xBDEA, 0x9554, 0xBDEB, 0x9555, + 0xBDEC, 0x9556, 0xBDED, 0x9557, 0xBDEE, 0x9558, 0xBDEF, 0x9559, 0xBDF0, 0xBAE4, 0xBDF1, 0x955A, 0xBDF2, 0x9561, 0xBDF3, 0x9562, + 0xBDF4, 0xBAE5, 0xBDF5, 0x9563, 0xBDF6, 0x9564, 0xBDF7, 0x9565, 0xBDF8, 0xBAE6, 0xBDF9, 0x9566, 0xBDFA, 0x9567, 0xBDFB, 0x9568, + 0xBDFC, 0x9569, 0xBDFD, 0x956A, 0xBDFE, 0x956B, 0xBDFF, 0x956C, 0xBE00, 0xBAE7, 0xBE01, 0x956D, 0xBE02, 0x956E, 0xBE03, 0xBAE8, + 0xBE04, 0x956F, 0xBE05, 0xBAE9, 0xBE06, 0x9570, 0xBE07, 0x9571, 0xBE08, 0x9572, 0xBE09, 0x9573, 0xBE0A, 0x9574, 0xBE0B, 0x9575, + 0xBE0C, 0xBAEA, 0xBE0D, 0xBAEB, 0xBE0E, 0x9576, 0xBE0F, 0x9577, 0xBE10, 0xBAEC, 0xBE11, 0x9578, 0xBE12, 0x9579, 0xBE13, 0x957A, + 0xBE14, 0xBAED, 0xBE15, 0x9581, 0xBE16, 0x9582, 0xBE17, 0x9583, 0xBE18, 0x9584, 0xBE19, 0x9585, 0xBE1A, 0x9586, 0xBE1B, 0x9587, + 0xBE1C, 0xBAEE, 0xBE1D, 0xBAEF, 0xBE1E, 0x9588, 0xBE1F, 0xBAF0, 0xBE20, 0x9589, 0xBE21, 0x958A, 0xBE22, 0x958B, 0xBE23, 0x958C, + 0xBE24, 0x958D, 0xBE25, 0x958E, 0xBE26, 0x958F, 0xBE27, 0x9590, 0xBE28, 0x9591, 0xBE29, 0x9592, 0xBE2A, 0x9593, 0xBE2B, 0x9594, + 0xBE2C, 0x9595, 0xBE2D, 0x9596, 0xBE2E, 0x9597, 0xBE2F, 0x9598, 0xBE30, 0x9599, 0xBE31, 0x959A, 0xBE32, 0x959B, 0xBE33, 0x959C, + 0xBE34, 0x959D, 0xBE35, 0x959E, 0xBE36, 0x959F, 0xBE37, 0x95A0, 0xBE38, 0x95A1, 0xBE39, 0x95A2, 0xBE3A, 0x95A3, 0xBE3B, 0x95A4, + 0xBE3C, 0x95A5, 0xBE3D, 0x95A6, 0xBE3E, 0x95A7, 0xBE3F, 0x95A8, 0xBE40, 0x95A9, 0xBE41, 0x95AA, 0xBE42, 0x95AB, 0xBE43, 0x95AC, + 0xBE44, 0xBAF1, 0xBE45, 0xBAF2, 0xBE46, 0x95AD, 0xBE47, 0x95AE, 0xBE48, 0xBAF3, 0xBE49, 0x95AF, 0xBE4A, 0x95B0, 0xBE4B, 0x95B1, + 0xBE4C, 0xBAF4, 0xBE4D, 0x95B2, 0xBE4E, 0xBAF5, 0xBE4F, 0x95B3, 0xBE50, 0x95B4, 0xBE51, 0x95B5, 0xBE52, 0x95B6, 0xBE53, 0x95B7, + 0xBE54, 0xBAF6, 0xBE55, 0xBAF7, 0xBE56, 0x95B8, 0xBE57, 0xBAF8, 0xBE58, 0x95B9, 0xBE59, 0xBAF9, 0xBE5A, 0xBAFA, 0xBE5B, 0xBAFB, + 0xBE5C, 0x95BA, 0xBE5D, 0x95BB, 0xBE5E, 0x95BC, 0xBE5F, 0x95BD, 0xBE60, 0xBAFC, 0xBE61, 0xBAFD, 0xBE62, 0x95BE, 0xBE63, 0x95BF, + 0xBE64, 0xBAFE, 0xBE65, 0x95C0, 0xBE66, 0x95C1, 0xBE67, 0x95C2, 0xBE68, 0xBBA1, 0xBE69, 0x95C3, 0xBE6A, 0xBBA2, 0xBE6B, 0x95C4, + 0xBE6C, 0x95C5, 0xBE6D, 0x95C6, 0xBE6E, 0x95C7, 0xBE6F, 0x95C8, 0xBE70, 0xBBA3, 0xBE71, 0xBBA4, 0xBE72, 0x95C9, 0xBE73, 0xBBA5, + 0xBE74, 0xBBA6, 0xBE75, 0xBBA7, 0xBE76, 0x95CA, 0xBE77, 0x95CB, 0xBE78, 0x95CC, 0xBE79, 0x95CD, 0xBE7A, 0x95CE, 0xBE7B, 0xBBA8, + 0xBE7C, 0xBBA9, 0xBE7D, 0xBBAA, 0xBE7E, 0x95CF, 0xBE7F, 0x95D0, 0xBE80, 0xBBAB, 0xBE81, 0x95D1, 0xBE82, 0x95D2, 0xBE83, 0x95D3, + 0xBE84, 0xBBAC, 0xBE85, 0x95D4, 0xBE86, 0x95D5, 0xBE87, 0x95D6, 0xBE88, 0x95D7, 0xBE89, 0x95D8, 0xBE8A, 0x95D9, 0xBE8B, 0x95DA, + 0xBE8C, 0xBBAD, 0xBE8D, 0xBBAE, 0xBE8E, 0x95DB, 0xBE8F, 0xBBAF, 0xBE90, 0xBBB0, 0xBE91, 0xBBB1, 0xBE92, 0x95DC, 0xBE93, 0x95DD, + 0xBE94, 0x95DE, 0xBE95, 0x95DF, 0xBE96, 0x95E0, 0xBE97, 0x95E1, 0xBE98, 0xBBB2, 0xBE99, 0xBBB3, 0xBE9A, 0x95E2, 0xBE9B, 0x95E3, + 0xBE9C, 0x95E4, 0xBE9D, 0x95E5, 0xBE9E, 0x95E6, 0xBE9F, 0x95E7, 0xBEA0, 0x95E8, 0xBEA1, 0x95E9, 0xBEA2, 0x95EA, 0xBEA3, 0x95EB, + 0xBEA4, 0x95EC, 0xBEA5, 0x95ED, 0xBEA6, 0x95EE, 0xBEA7, 0x95EF, 0xBEA8, 0xBBB4, 0xBEA9, 0x95F0, 0xBEAA, 0x95F1, 0xBEAB, 0x95F2, + 0xBEAC, 0x95F3, 0xBEAD, 0x95F4, 0xBEAE, 0x95F5, 0xBEAF, 0x95F6, 0xBEB0, 0x95F7, 0xBEB1, 0x95F8, 0xBEB2, 0x95F9, 0xBEB3, 0x95FA, + 0xBEB4, 0x95FB, 0xBEB5, 0x95FC, 0xBEB6, 0x95FD, 0xBEB7, 0x95FE, 0xBEB8, 0x9641, 0xBEB9, 0x9642, 0xBEBA, 0x9643, 0xBEBB, 0x9644, + 0xBEBC, 0x9645, 0xBEBD, 0x9646, 0xBEBE, 0x9647, 0xBEBF, 0x9648, 0xBEC0, 0x9649, 0xBEC1, 0x964A, 0xBEC2, 0x964B, 0xBEC3, 0x964C, + 0xBEC4, 0x964D, 0xBEC5, 0x964E, 0xBEC6, 0x964F, 0xBEC7, 0x9650, 0xBEC8, 0x9651, 0xBEC9, 0x9652, 0xBECA, 0x9653, 0xBECB, 0x9654, + 0xBECC, 0x9655, 0xBECD, 0x9656, 0xBECE, 0x9657, 0xBECF, 0x9658, 0xBED0, 0xBBB5, 0xBED1, 0xBBB6, 0xBED2, 0x9659, 0xBED3, 0x965A, + 0xBED4, 0xBBB7, 0xBED5, 0x9661, 0xBED6, 0x9662, 0xBED7, 0xBBB8, 0xBED8, 0xBBB9, 0xBED9, 0x9663, 0xBEDA, 0x9664, 0xBEDB, 0x9665, + 0xBEDC, 0x9666, 0xBEDD, 0x9667, 0xBEDE, 0x9668, 0xBEDF, 0x9669, 0xBEE0, 0xBBBA, 0xBEE1, 0x966A, 0xBEE2, 0x966B, 0xBEE3, 0xBBBB, + 0xBEE4, 0xBBBC, 0xBEE5, 0xBBBD, 0xBEE6, 0x966C, 0xBEE7, 0x966D, 0xBEE8, 0x966E, 0xBEE9, 0x966F, 0xBEEA, 0x9670, 0xBEEB, 0x9671, + 0xBEEC, 0xBBBE, 0xBEED, 0x9672, 0xBEEE, 0x9673, 0xBEEF, 0x9674, 0xBEF0, 0x9675, 0xBEF1, 0x9676, 0xBEF2, 0x9677, 0xBEF3, 0x9678, + 0xBEF4, 0x9679, 0xBEF5, 0x967A, 0xBEF6, 0x9681, 0xBEF7, 0x9682, 0xBEF8, 0x9683, 0xBEF9, 0x9684, 0xBEFA, 0x9685, 0xBEFB, 0x9686, + 0xBEFC, 0x9687, 0xBEFD, 0x9688, 0xBEFE, 0x9689, 0xBEFF, 0x968A, 0xBF00, 0x968B, 0xBF01, 0xBBBF, 0xBF02, 0x968C, 0xBF03, 0x968D, + 0xBF04, 0x968E, 0xBF05, 0x968F, 0xBF06, 0x9690, 0xBF07, 0x9691, 0xBF08, 0xBBC0, 0xBF09, 0xBBC1, 0xBF0A, 0x9692, 0xBF0B, 0x9693, + 0xBF0C, 0x9694, 0xBF0D, 0x9695, 0xBF0E, 0x9696, 0xBF0F, 0x9697, 0xBF10, 0x9698, 0xBF11, 0x9699, 0xBF12, 0x969A, 0xBF13, 0x969B, + 0xBF14, 0x969C, 0xBF15, 0x969D, 0xBF16, 0x969E, 0xBF17, 0x969F, 0xBF18, 0xBBC2, 0xBF19, 0xBBC3, 0xBF1A, 0x96A0, 0xBF1B, 0xBBC4, + 0xBF1C, 0xBBC5, 0xBF1D, 0xBBC6, 0xBF1E, 0x96A1, 0xBF1F, 0x96A2, 0xBF20, 0x96A3, 0xBF21, 0x96A4, 0xBF22, 0x96A5, 0xBF23, 0x96A6, + 0xBF24, 0x96A7, 0xBF25, 0x96A8, 0xBF26, 0x96A9, 0xBF27, 0x96AA, 0xBF28, 0x96AB, 0xBF29, 0x96AC, 0xBF2A, 0x96AD, 0xBF2B, 0x96AE, + 0xBF2C, 0x96AF, 0xBF2D, 0x96B0, 0xBF2E, 0x96B1, 0xBF2F, 0x96B2, 0xBF30, 0x96B3, 0xBF31, 0x96B4, 0xBF32, 0x96B5, 0xBF33, 0x96B6, + 0xBF34, 0x96B7, 0xBF35, 0x96B8, 0xBF36, 0x96B9, 0xBF37, 0x96BA, 0xBF38, 0x96BB, 0xBF39, 0x96BC, 0xBF3A, 0x96BD, 0xBF3B, 0x96BE, + 0xBF3C, 0x96BF, 0xBF3D, 0x96C0, 0xBF3E, 0x96C1, 0xBF3F, 0x96C2, 0xBF40, 0xBBC7, 0xBF41, 0xBBC8, 0xBF42, 0x96C3, 0xBF43, 0x96C4, + 0xBF44, 0xBBC9, 0xBF45, 0x96C5, 0xBF46, 0x96C6, 0xBF47, 0x96C7, 0xBF48, 0xBBCA, 0xBF49, 0x96C8, 0xBF4A, 0x96C9, 0xBF4B, 0x96CA, + 0xBF4C, 0x96CB, 0xBF4D, 0x96CC, 0xBF4E, 0x96CD, 0xBF4F, 0x96CE, 0xBF50, 0xBBCB, 0xBF51, 0xBBCC, 0xBF52, 0x96CF, 0xBF53, 0x96D0, + 0xBF54, 0x96D1, 0xBF55, 0xBBCD, 0xBF56, 0x96D2, 0xBF57, 0x96D3, 0xBF58, 0x96D4, 0xBF59, 0x96D5, 0xBF5A, 0x96D6, 0xBF5B, 0x96D7, + 0xBF5C, 0x96D8, 0xBF5D, 0x96D9, 0xBF5E, 0x96DA, 0xBF5F, 0x96DB, 0xBF60, 0x96DC, 0xBF61, 0x96DD, 0xBF62, 0x96DE, 0xBF63, 0x96DF, + 0xBF64, 0x96E0, 0xBF65, 0x96E1, 0xBF66, 0x96E2, 0xBF67, 0x96E3, 0xBF68, 0x96E4, 0xBF69, 0x96E5, 0xBF6A, 0x96E6, 0xBF6B, 0x96E7, + 0xBF6C, 0x96E8, 0xBF6D, 0x96E9, 0xBF6E, 0x96EA, 0xBF6F, 0x96EB, 0xBF70, 0x96EC, 0xBF71, 0x96ED, 0xBF72, 0x96EE, 0xBF73, 0x96EF, + 0xBF74, 0x96F0, 0xBF75, 0x96F1, 0xBF76, 0x96F2, 0xBF77, 0x96F3, 0xBF78, 0x96F4, 0xBF79, 0x96F5, 0xBF7A, 0x96F6, 0xBF7B, 0x96F7, + 0xBF7C, 0x96F8, 0xBF7D, 0x96F9, 0xBF7E, 0x96FA, 0xBF7F, 0x96FB, 0xBF80, 0x96FC, 0xBF81, 0x96FD, 0xBF82, 0x96FE, 0xBF83, 0x9741, + 0xBF84, 0x9742, 0xBF85, 0x9743, 0xBF86, 0x9744, 0xBF87, 0x9745, 0xBF88, 0x9746, 0xBF89, 0x9747, 0xBF8A, 0x9748, 0xBF8B, 0x9749, + 0xBF8C, 0x974A, 0xBF8D, 0x974B, 0xBF8E, 0x974C, 0xBF8F, 0x974D, 0xBF90, 0x974E, 0xBF91, 0x974F, 0xBF92, 0x9750, 0xBF93, 0x9751, + 0xBF94, 0xBBCE, 0xBF95, 0x9752, 0xBF96, 0x9753, 0xBF97, 0x9754, 0xBF98, 0x9755, 0xBF99, 0x9756, 0xBF9A, 0x9757, 0xBF9B, 0x9758, + 0xBF9C, 0x9759, 0xBF9D, 0x975A, 0xBF9E, 0x9761, 0xBF9F, 0x9762, 0xBFA0, 0x9763, 0xBFA1, 0x9764, 0xBFA2, 0x9765, 0xBFA3, 0x9766, + 0xBFA4, 0x9767, 0xBFA5, 0x9768, 0xBFA6, 0x9769, 0xBFA7, 0x976A, 0xBFA8, 0x976B, 0xBFA9, 0x976C, 0xBFAA, 0x976D, 0xBFAB, 0x976E, + 0xBFAC, 0x976F, 0xBFAD, 0x9770, 0xBFAE, 0x9771, 0xBFAF, 0x9772, 0xBFB0, 0xBBCF, 0xBFB1, 0x9773, 0xBFB2, 0x9774, 0xBFB3, 0x9775, + 0xBFB4, 0x9776, 0xBFB5, 0x9777, 0xBFB6, 0x9778, 0xBFB7, 0x9779, 0xBFB8, 0x977A, 0xBFB9, 0x9781, 0xBFBA, 0x9782, 0xBFBB, 0x9783, + 0xBFBC, 0x9784, 0xBFBD, 0x9785, 0xBFBE, 0x9786, 0xBFBF, 0x9787, 0xBFC0, 0x9788, 0xBFC1, 0x9789, 0xBFC2, 0x978A, 0xBFC3, 0x978B, + 0xBFC4, 0x978C, 0xBFC5, 0xBBD0, 0xBFC6, 0x978D, 0xBFC7, 0x978E, 0xBFC8, 0x978F, 0xBFC9, 0x9790, 0xBFCA, 0x9791, 0xBFCB, 0x9792, + 0xBFCC, 0xBBD1, 0xBFCD, 0xBBD2, 0xBFCE, 0x9793, 0xBFCF, 0x9794, 0xBFD0, 0xBBD3, 0xBFD1, 0x9795, 0xBFD2, 0x9796, 0xBFD3, 0x9797, + 0xBFD4, 0xBBD4, 0xBFD5, 0x9798, 0xBFD6, 0x9799, 0xBFD7, 0x979A, 0xBFD8, 0x979B, 0xBFD9, 0x979C, 0xBFDA, 0x979D, 0xBFDB, 0x979E, + 0xBFDC, 0xBBD5, 0xBFDD, 0x979F, 0xBFDE, 0x97A0, 0xBFDF, 0xBBD6, 0xBFE0, 0x97A1, 0xBFE1, 0xBBD7, 0xBFE2, 0x97A2, 0xBFE3, 0x97A3, + 0xBFE4, 0x97A4, 0xBFE5, 0x97A5, 0xBFE6, 0x97A6, 0xBFE7, 0x97A7, 0xBFE8, 0x97A8, 0xBFE9, 0x97A9, 0xBFEA, 0x97AA, 0xBFEB, 0x97AB, + 0xBFEC, 0x97AC, 0xBFED, 0x97AD, 0xBFEE, 0x97AE, 0xBFEF, 0x97AF, 0xBFF0, 0x97B0, 0xBFF1, 0x97B1, 0xBFF2, 0x97B2, 0xBFF3, 0x97B3, + 0xBFF4, 0x97B4, 0xBFF5, 0x97B5, 0xBFF6, 0x97B6, 0xBFF7, 0x97B7, 0xBFF8, 0x97B8, 0xBFF9, 0x97B9, 0xBFFA, 0x97BA, 0xBFFB, 0x97BB, + 0xBFFC, 0x97BC, 0xBFFD, 0x97BD, 0xBFFE, 0x97BE, 0xBFFF, 0x97BF, 0xC000, 0x97C0, 0xC001, 0x97C1, 0xC002, 0x97C2, 0xC003, 0x97C3, + 0xC004, 0x97C4, 0xC005, 0x97C5, 0xC006, 0x97C6, 0xC007, 0x97C7, 0xC008, 0x97C8, 0xC009, 0x97C9, 0xC00A, 0x97CA, 0xC00B, 0x97CB, + 0xC00C, 0x97CC, 0xC00D, 0x97CD, 0xC00E, 0x97CE, 0xC00F, 0x97CF, 0xC010, 0x97D0, 0xC011, 0x97D1, 0xC012, 0x97D2, 0xC013, 0x97D3, + 0xC014, 0x97D4, 0xC015, 0x97D5, 0xC016, 0x97D6, 0xC017, 0x97D7, 0xC018, 0x97D8, 0xC019, 0x97D9, 0xC01A, 0x97DA, 0xC01B, 0x97DB, + 0xC01C, 0x97DC, 0xC01D, 0x97DD, 0xC01E, 0x97DE, 0xC01F, 0x97DF, 0xC020, 0x97E0, 0xC021, 0x97E1, 0xC022, 0x97E2, 0xC023, 0x97E3, + 0xC024, 0x97E4, 0xC025, 0x97E5, 0xC026, 0x97E6, 0xC027, 0x97E7, 0xC028, 0x97E8, 0xC029, 0x97E9, 0xC02A, 0x97EA, 0xC02B, 0x97EB, + 0xC02C, 0x97EC, 0xC02D, 0x97ED, 0xC02E, 0x97EE, 0xC02F, 0x97EF, 0xC030, 0x97F0, 0xC031, 0x97F1, 0xC032, 0x97F2, 0xC033, 0x97F3, + 0xC034, 0x97F4, 0xC035, 0x97F5, 0xC036, 0x97F6, 0xC037, 0x97F7, 0xC038, 0x97F8, 0xC039, 0x97F9, 0xC03A, 0x97FA, 0xC03B, 0x97FB, + 0xC03C, 0xBBD8, 0xC03D, 0x97FC, 0xC03E, 0x97FD, 0xC03F, 0x97FE, 0xC040, 0x9841, 0xC041, 0x9842, 0xC042, 0x9843, 0xC043, 0x9844, + 0xC044, 0x9845, 0xC045, 0x9846, 0xC046, 0x9847, 0xC047, 0x9848, 0xC048, 0x9849, 0xC049, 0x984A, 0xC04A, 0x984B, 0xC04B, 0x984C, + 0xC04C, 0x984D, 0xC04D, 0x984E, 0xC04E, 0x984F, 0xC04F, 0x9850, 0xC050, 0x9851, 0xC051, 0xBBD9, 0xC052, 0x9852, 0xC053, 0x9853, + 0xC054, 0x9854, 0xC055, 0x9855, 0xC056, 0x9856, 0xC057, 0x9857, 0xC058, 0xBBDA, 0xC059, 0x9858, 0xC05A, 0x9859, 0xC05B, 0x985A, + 0xC05C, 0xBBDB, 0xC05D, 0x9861, 0xC05E, 0x9862, 0xC05F, 0x9863, 0xC060, 0xBBDC, 0xC061, 0x9864, 0xC062, 0x9865, 0xC063, 0x9866, + 0xC064, 0x9867, 0xC065, 0x9868, 0xC066, 0x9869, 0xC067, 0x986A, 0xC068, 0xBBDD, 0xC069, 0xBBDE, 0xC06A, 0x986B, 0xC06B, 0x986C, + 0xC06C, 0x986D, 0xC06D, 0x986E, 0xC06E, 0x986F, 0xC06F, 0x9870, 0xC070, 0x9871, 0xC071, 0x9872, 0xC072, 0x9873, 0xC073, 0x9874, + 0xC074, 0x9875, 0xC075, 0x9876, 0xC076, 0x9877, 0xC077, 0x9878, 0xC078, 0x9879, 0xC079, 0x987A, 0xC07A, 0x9881, 0xC07B, 0x9882, + 0xC07C, 0x9883, 0xC07D, 0x9884, 0xC07E, 0x9885, 0xC07F, 0x9886, 0xC080, 0x9887, 0xC081, 0x9888, 0xC082, 0x9889, 0xC083, 0x988A, + 0xC084, 0x988B, 0xC085, 0x988C, 0xC086, 0x988D, 0xC087, 0x988E, 0xC088, 0x988F, 0xC089, 0x9890, 0xC08A, 0x9891, 0xC08B, 0x9892, + 0xC08C, 0x9893, 0xC08D, 0x9894, 0xC08E, 0x9895, 0xC08F, 0x9896, 0xC090, 0xBBDF, 0xC091, 0xBBE0, 0xC092, 0x9897, 0xC093, 0x9898, + 0xC094, 0xBBE1, 0xC095, 0x9899, 0xC096, 0x989A, 0xC097, 0x989B, 0xC098, 0xBBE2, 0xC099, 0x989C, 0xC09A, 0x989D, 0xC09B, 0x989E, + 0xC09C, 0x989F, 0xC09D, 0x98A0, 0xC09E, 0x98A1, 0xC09F, 0x98A2, 0xC0A0, 0xBBE3, 0xC0A1, 0xBBE4, 0xC0A2, 0x98A3, 0xC0A3, 0xBBE5, + 0xC0A4, 0x98A4, 0xC0A5, 0xBBE6, 0xC0A6, 0x98A5, 0xC0A7, 0x98A6, 0xC0A8, 0x98A7, 0xC0A9, 0x98A8, 0xC0AA, 0x98A9, 0xC0AB, 0x98AA, + 0xC0AC, 0xBBE7, 0xC0AD, 0xBBE8, 0xC0AE, 0x98AB, 0xC0AF, 0xBBE9, 0xC0B0, 0xBBEA, 0xC0B1, 0x98AC, 0xC0B2, 0x98AD, 0xC0B3, 0xBBEB, + 0xC0B4, 0xBBEC, 0xC0B5, 0xBBED, 0xC0B6, 0xBBEE, 0xC0B7, 0x98AE, 0xC0B8, 0x98AF, 0xC0B9, 0x98B0, 0xC0BA, 0x98B1, 0xC0BB, 0x98B2, + 0xC0BC, 0xBBEF, 0xC0BD, 0xBBF0, 0xC0BE, 0x98B3, 0xC0BF, 0xBBF1, 0xC0C0, 0xBBF2, 0xC0C1, 0xBBF3, 0xC0C2, 0x98B4, 0xC0C3, 0x98B5, + 0xC0C4, 0x98B6, 0xC0C5, 0xBBF4, 0xC0C6, 0x98B7, 0xC0C7, 0x98B8, 0xC0C8, 0xBBF5, 0xC0C9, 0xBBF6, 0xC0CA, 0x98B9, 0xC0CB, 0x98BA, + 0xC0CC, 0xBBF7, 0xC0CD, 0x98BB, 0xC0CE, 0x98BC, 0xC0CF, 0x98BD, 0xC0D0, 0xBBF8, 0xC0D1, 0x98BE, 0xC0D2, 0x98BF, 0xC0D3, 0x98C0, + 0xC0D4, 0x98C1, 0xC0D5, 0x98C2, 0xC0D6, 0x98C3, 0xC0D7, 0x98C4, 0xC0D8, 0xBBF9, 0xC0D9, 0xBBFA, 0xC0DA, 0x98C5, 0xC0DB, 0xBBFB, + 0xC0DC, 0xBBFC, 0xC0DD, 0xBBFD, 0xC0DE, 0x98C6, 0xC0DF, 0x98C7, 0xC0E0, 0x98C8, 0xC0E1, 0x98C9, 0xC0E2, 0x98CA, 0xC0E3, 0x98CB, + 0xC0E4, 0xBBFE, 0xC0E5, 0xBCA1, 0xC0E6, 0x98CC, 0xC0E7, 0x98CD, 0xC0E8, 0xBCA2, 0xC0E9, 0x98CE, 0xC0EA, 0x98CF, 0xC0EB, 0x98D0, + 0xC0EC, 0xBCA3, 0xC0ED, 0x98D1, 0xC0EE, 0x98D2, 0xC0EF, 0x98D3, 0xC0F0, 0x98D4, 0xC0F1, 0x98D5, 0xC0F2, 0x98D6, 0xC0F3, 0x98D7, + 0xC0F4, 0xBCA4, 0xC0F5, 0xBCA5, 0xC0F6, 0x98D8, 0xC0F7, 0xBCA6, 0xC0F8, 0x98D9, 0xC0F9, 0xBCA7, 0xC0FA, 0x98DA, 0xC0FB, 0x98DB, + 0xC0FC, 0x98DC, 0xC0FD, 0x98DD, 0xC0FE, 0x98DE, 0xC0FF, 0x98DF, 0xC100, 0xBCA8, 0xC101, 0x98E0, 0xC102, 0x98E1, 0xC103, 0x98E2, + 0xC104, 0xBCA9, 0xC105, 0x98E3, 0xC106, 0x98E4, 0xC107, 0x98E5, 0xC108, 0xBCAA, 0xC109, 0x98E6, 0xC10A, 0x98E7, 0xC10B, 0x98E8, + 0xC10C, 0x98E9, 0xC10D, 0x98EA, 0xC10E, 0x98EB, 0xC10F, 0x98EC, 0xC110, 0xBCAB, 0xC111, 0x98ED, 0xC112, 0x98EE, 0xC113, 0x98EF, + 0xC114, 0x98F0, 0xC115, 0xBCAC, 0xC116, 0x98F1, 0xC117, 0x98F2, 0xC118, 0x98F3, 0xC119, 0x98F4, 0xC11A, 0x98F5, 0xC11B, 0x98F6, + 0xC11C, 0xBCAD, 0xC11D, 0xBCAE, 0xC11E, 0xBCAF, 0xC11F, 0xBCB0, 0xC120, 0xBCB1, 0xC121, 0x98F7, 0xC122, 0x98F8, 0xC123, 0xBCB2, + 0xC124, 0xBCB3, 0xC125, 0x98F9, 0xC126, 0xBCB4, 0xC127, 0xBCB5, 0xC128, 0x98FA, 0xC129, 0x98FB, 0xC12A, 0x98FC, 0xC12B, 0x98FD, + 0xC12C, 0xBCB6, 0xC12D, 0xBCB7, 0xC12E, 0x98FE, 0xC12F, 0xBCB8, 0xC130, 0xBCB9, 0xC131, 0xBCBA, 0xC132, 0x9941, 0xC133, 0x9942, + 0xC134, 0x9943, 0xC135, 0x9944, 0xC136, 0xBCBB, 0xC137, 0x9945, 0xC138, 0xBCBC, 0xC139, 0xBCBD, 0xC13A, 0x9946, 0xC13B, 0x9947, + 0xC13C, 0xBCBE, 0xC13D, 0x9948, 0xC13E, 0x9949, 0xC13F, 0x994A, 0xC140, 0xBCBF, 0xC141, 0x994B, 0xC142, 0x994C, 0xC143, 0x994D, + 0xC144, 0x994E, 0xC145, 0x994F, 0xC146, 0x9950, 0xC147, 0x9951, 0xC148, 0xBCC0, 0xC149, 0xBCC1, 0xC14A, 0x9952, 0xC14B, 0xBCC2, + 0xC14C, 0xBCC3, 0xC14D, 0xBCC4, 0xC14E, 0x9953, 0xC14F, 0x9954, 0xC150, 0x9955, 0xC151, 0x9956, 0xC152, 0x9957, 0xC153, 0x9958, + 0xC154, 0xBCC5, 0xC155, 0xBCC6, 0xC156, 0x9959, 0xC157, 0x995A, 0xC158, 0xBCC7, 0xC159, 0x9961, 0xC15A, 0x9962, 0xC15B, 0x9963, + 0xC15C, 0xBCC8, 0xC15D, 0x9964, 0xC15E, 0x9965, 0xC15F, 0x9966, 0xC160, 0x9967, 0xC161, 0x9968, 0xC162, 0x9969, 0xC163, 0x996A, + 0xC164, 0xBCC9, 0xC165, 0xBCCA, 0xC166, 0x996B, 0xC167, 0xBCCB, 0xC168, 0xBCCC, 0xC169, 0xBCCD, 0xC16A, 0x996C, 0xC16B, 0x996D, + 0xC16C, 0x996E, 0xC16D, 0x996F, 0xC16E, 0x9970, 0xC16F, 0x9971, 0xC170, 0xBCCE, 0xC171, 0x9972, 0xC172, 0x9973, 0xC173, 0x9974, + 0xC174, 0xBCCF, 0xC175, 0x9975, 0xC176, 0x9976, 0xC177, 0x9977, 0xC178, 0xBCD0, 0xC179, 0x9978, 0xC17A, 0x9979, 0xC17B, 0x997A, + 0xC17C, 0x9981, 0xC17D, 0x9982, 0xC17E, 0x9983, 0xC17F, 0x9984, 0xC180, 0x9985, 0xC181, 0x9986, 0xC182, 0x9987, 0xC183, 0x9988, + 0xC184, 0x9989, 0xC185, 0xBCD1, 0xC186, 0x998A, 0xC187, 0x998B, 0xC188, 0x998C, 0xC189, 0x998D, 0xC18A, 0x998E, 0xC18B, 0x998F, + 0xC18C, 0xBCD2, 0xC18D, 0xBCD3, 0xC18E, 0xBCD4, 0xC18F, 0x9990, 0xC190, 0xBCD5, 0xC191, 0x9991, 0xC192, 0x9992, 0xC193, 0x9993, + 0xC194, 0xBCD6, 0xC195, 0x9994, 0xC196, 0xBCD7, 0xC197, 0x9995, 0xC198, 0x9996, 0xC199, 0x9997, 0xC19A, 0x9998, 0xC19B, 0x9999, + 0xC19C, 0xBCD8, 0xC19D, 0xBCD9, 0xC19E, 0x999A, 0xC19F, 0xBCDA, 0xC1A0, 0x999B, 0xC1A1, 0xBCDB, 0xC1A2, 0x999C, 0xC1A3, 0x999D, + 0xC1A4, 0x999E, 0xC1A5, 0xBCDC, 0xC1A6, 0x999F, 0xC1A7, 0x99A0, 0xC1A8, 0xBCDD, 0xC1A9, 0xBCDE, 0xC1AA, 0x99A1, 0xC1AB, 0x99A2, + 0xC1AC, 0xBCDF, 0xC1AD, 0x99A3, 0xC1AE, 0x99A4, 0xC1AF, 0x99A5, 0xC1B0, 0xBCE0, 0xC1B1, 0x99A6, 0xC1B2, 0x99A7, 0xC1B3, 0x99A8, + 0xC1B4, 0x99A9, 0xC1B5, 0x99AA, 0xC1B6, 0x99AB, 0xC1B7, 0x99AC, 0xC1B8, 0x99AD, 0xC1B9, 0x99AE, 0xC1BA, 0x99AF, 0xC1BB, 0x99B0, + 0xC1BC, 0x99B1, 0xC1BD, 0xBCE1, 0xC1BE, 0x99B2, 0xC1BF, 0x99B3, 0xC1C0, 0x99B4, 0xC1C1, 0x99B5, 0xC1C2, 0x99B6, 0xC1C3, 0x99B7, + 0xC1C4, 0xBCE2, 0xC1C5, 0x99B8, 0xC1C6, 0x99B9, 0xC1C7, 0x99BA, 0xC1C8, 0xBCE3, 0xC1C9, 0x99BB, 0xC1CA, 0x99BC, 0xC1CB, 0x99BD, + 0xC1CC, 0xBCE4, 0xC1CD, 0x99BE, 0xC1CE, 0x99BF, 0xC1CF, 0x99C0, 0xC1D0, 0x99C1, 0xC1D1, 0x99C2, 0xC1D2, 0x99C3, 0xC1D3, 0x99C4, + 0xC1D4, 0xBCE5, 0xC1D5, 0x99C5, 0xC1D6, 0x99C6, 0xC1D7, 0xBCE6, 0xC1D8, 0xBCE7, 0xC1D9, 0x99C7, 0xC1DA, 0x99C8, 0xC1DB, 0x99C9, + 0xC1DC, 0x99CA, 0xC1DD, 0x99CB, 0xC1DE, 0x99CC, 0xC1DF, 0x99CD, 0xC1E0, 0xBCE8, 0xC1E1, 0x99CE, 0xC1E2, 0x99CF, 0xC1E3, 0x99D0, + 0xC1E4, 0xBCE9, 0xC1E5, 0x99D1, 0xC1E6, 0x99D2, 0xC1E7, 0x99D3, 0xC1E8, 0xBCEA, 0xC1E9, 0x99D4, 0xC1EA, 0x99D5, 0xC1EB, 0x99D6, + 0xC1EC, 0x99D7, 0xC1ED, 0x99D8, 0xC1EE, 0x99D9, 0xC1EF, 0x99DA, 0xC1F0, 0xBCEB, 0xC1F1, 0xBCEC, 0xC1F2, 0x99DB, 0xC1F3, 0xBCED, + 0xC1F4, 0x99DC, 0xC1F5, 0x99DD, 0xC1F6, 0x99DE, 0xC1F7, 0x99DF, 0xC1F8, 0x99E0, 0xC1F9, 0x99E1, 0xC1FA, 0x99E2, 0xC1FB, 0x99E3, + 0xC1FC, 0xBCEE, 0xC1FD, 0xBCEF, 0xC1FE, 0x99E4, 0xC1FF, 0x99E5, 0xC200, 0xBCF0, 0xC201, 0x99E6, 0xC202, 0x99E7, 0xC203, 0x99E8, + 0xC204, 0xBCF1, 0xC205, 0x99E9, 0xC206, 0x99EA, 0xC207, 0x99EB, 0xC208, 0x99EC, 0xC209, 0x99ED, 0xC20A, 0x99EE, 0xC20B, 0x99EF, + 0xC20C, 0xBCF2, 0xC20D, 0xBCF3, 0xC20E, 0x99F0, 0xC20F, 0xBCF4, 0xC210, 0x99F1, 0xC211, 0xBCF5, 0xC212, 0x99F2, 0xC213, 0x99F3, + 0xC214, 0x99F4, 0xC215, 0x99F5, 0xC216, 0x99F6, 0xC217, 0x99F7, 0xC218, 0xBCF6, 0xC219, 0xBCF7, 0xC21A, 0x99F8, 0xC21B, 0x99F9, + 0xC21C, 0xBCF8, 0xC21D, 0x99FA, 0xC21E, 0x99FB, 0xC21F, 0xBCF9, 0xC220, 0xBCFA, 0xC221, 0x99FC, 0xC222, 0x99FD, 0xC223, 0x99FE, + 0xC224, 0x9A41, 0xC225, 0x9A42, 0xC226, 0x9A43, 0xC227, 0x9A44, 0xC228, 0xBCFB, 0xC229, 0xBCFC, 0xC22A, 0x9A45, 0xC22B, 0xBCFD, + 0xC22C, 0x9A46, 0xC22D, 0xBCFE, 0xC22E, 0x9A47, 0xC22F, 0xBDA1, 0xC230, 0x9A48, 0xC231, 0xBDA2, 0xC232, 0xBDA3, 0xC233, 0x9A49, + 0xC234, 0xBDA4, 0xC235, 0x9A4A, 0xC236, 0x9A4B, 0xC237, 0x9A4C, 0xC238, 0x9A4D, 0xC239, 0x9A4E, 0xC23A, 0x9A4F, 0xC23B, 0x9A50, + 0xC23C, 0x9A51, 0xC23D, 0x9A52, 0xC23E, 0x9A53, 0xC23F, 0x9A54, 0xC240, 0x9A55, 0xC241, 0x9A56, 0xC242, 0x9A57, 0xC243, 0x9A58, + 0xC244, 0x9A59, 0xC245, 0x9A5A, 0xC246, 0x9A61, 0xC247, 0x9A62, 0xC248, 0xBDA5, 0xC249, 0x9A63, 0xC24A, 0x9A64, 0xC24B, 0x9A65, + 0xC24C, 0x9A66, 0xC24D, 0x9A67, 0xC24E, 0x9A68, 0xC24F, 0x9A69, 0xC250, 0xBDA6, 0xC251, 0xBDA7, 0xC252, 0x9A6A, 0xC253, 0x9A6B, + 0xC254, 0xBDA8, 0xC255, 0x9A6C, 0xC256, 0x9A6D, 0xC257, 0x9A6E, 0xC258, 0xBDA9, 0xC259, 0x9A6F, 0xC25A, 0x9A70, 0xC25B, 0x9A71, + 0xC25C, 0x9A72, 0xC25D, 0x9A73, 0xC25E, 0x9A74, 0xC25F, 0x9A75, 0xC260, 0xBDAA, 0xC261, 0x9A76, 0xC262, 0x9A77, 0xC263, 0x9A78, + 0xC264, 0x9A79, 0xC265, 0xBDAB, 0xC266, 0x9A7A, 0xC267, 0x9A81, 0xC268, 0x9A82, 0xC269, 0x9A83, 0xC26A, 0x9A84, 0xC26B, 0x9A85, + 0xC26C, 0xBDAC, 0xC26D, 0xBDAD, 0xC26E, 0x9A86, 0xC26F, 0x9A87, 0xC270, 0xBDAE, 0xC271, 0x9A88, 0xC272, 0x9A89, 0xC273, 0x9A8A, + 0xC274, 0xBDAF, 0xC275, 0x9A8B, 0xC276, 0x9A8C, 0xC277, 0x9A8D, 0xC278, 0x9A8E, 0xC279, 0x9A8F, 0xC27A, 0x9A90, 0xC27B, 0x9A91, + 0xC27C, 0xBDB0, 0xC27D, 0xBDB1, 0xC27E, 0x9A92, 0xC27F, 0xBDB2, 0xC280, 0x9A93, 0xC281, 0xBDB3, 0xC282, 0x9A94, 0xC283, 0x9A95, + 0xC284, 0x9A96, 0xC285, 0x9A97, 0xC286, 0x9A98, 0xC287, 0x9A99, 0xC288, 0xBDB4, 0xC289, 0xBDB5, 0xC28A, 0x9A9A, 0xC28B, 0x9A9B, + 0xC28C, 0x9A9C, 0xC28D, 0x9A9D, 0xC28E, 0x9A9E, 0xC28F, 0x9A9F, 0xC290, 0xBDB6, 0xC291, 0x9AA0, 0xC292, 0x9AA1, 0xC293, 0x9AA2, + 0xC294, 0x9AA3, 0xC295, 0x9AA4, 0xC296, 0x9AA5, 0xC297, 0x9AA6, 0xC298, 0xBDB7, 0xC299, 0x9AA7, 0xC29A, 0x9AA8, 0xC29B, 0xBDB8, + 0xC29C, 0x9AA9, 0xC29D, 0xBDB9, 0xC29E, 0x9AAA, 0xC29F, 0x9AAB, 0xC2A0, 0x9AAC, 0xC2A1, 0x9AAD, 0xC2A2, 0x9AAE, 0xC2A3, 0x9AAF, + 0xC2A4, 0xBDBA, 0xC2A5, 0xBDBB, 0xC2A6, 0x9AB0, 0xC2A7, 0x9AB1, 0xC2A8, 0xBDBC, 0xC2A9, 0x9AB2, 0xC2AA, 0x9AB3, 0xC2AB, 0x9AB4, + 0xC2AC, 0xBDBD, 0xC2AD, 0xBDBE, 0xC2AE, 0x9AB5, 0xC2AF, 0x9AB6, 0xC2B0, 0x9AB7, 0xC2B1, 0x9AB8, 0xC2B2, 0x9AB9, 0xC2B3, 0x9ABA, + 0xC2B4, 0xBDBF, 0xC2B5, 0xBDC0, 0xC2B6, 0x9ABB, 0xC2B7, 0xBDC1, 0xC2B8, 0x9ABC, 0xC2B9, 0xBDC2, 0xC2BA, 0x9ABD, 0xC2BB, 0x9ABE, + 0xC2BC, 0x9ABF, 0xC2BD, 0x9AC0, 0xC2BE, 0x9AC1, 0xC2BF, 0x9AC2, 0xC2C0, 0x9AC3, 0xC2C1, 0x9AC4, 0xC2C2, 0x9AC5, 0xC2C3, 0x9AC6, + 0xC2C4, 0x9AC7, 0xC2C5, 0x9AC8, 0xC2C6, 0x9AC9, 0xC2C7, 0x9ACA, 0xC2C8, 0x9ACB, 0xC2C9, 0x9ACC, 0xC2CA, 0x9ACD, 0xC2CB, 0x9ACE, + 0xC2CC, 0x9ACF, 0xC2CD, 0x9AD0, 0xC2CE, 0x9AD1, 0xC2CF, 0x9AD2, 0xC2D0, 0x9AD3, 0xC2D1, 0x9AD4, 0xC2D2, 0x9AD5, 0xC2D3, 0x9AD6, + 0xC2D4, 0x9AD7, 0xC2D5, 0x9AD8, 0xC2D6, 0x9AD9, 0xC2D7, 0x9ADA, 0xC2D8, 0x9ADB, 0xC2D9, 0x9ADC, 0xC2DA, 0x9ADD, 0xC2DB, 0x9ADE, + 0xC2DC, 0xBDC3, 0xC2DD, 0xBDC4, 0xC2DE, 0x9ADF, 0xC2DF, 0x9AE0, 0xC2E0, 0xBDC5, 0xC2E1, 0x9AE1, 0xC2E2, 0x9AE2, 0xC2E3, 0xBDC6, + 0xC2E4, 0xBDC7, 0xC2E5, 0x9AE3, 0xC2E6, 0x9AE4, 0xC2E7, 0x9AE5, 0xC2E8, 0x9AE6, 0xC2E9, 0x9AE7, 0xC2EA, 0x9AE8, 0xC2EB, 0xBDC8, + 0xC2EC, 0xBDC9, 0xC2ED, 0xBDCA, 0xC2EE, 0x9AE9, 0xC2EF, 0xBDCB, 0xC2F0, 0x9AEA, 0xC2F1, 0xBDCC, 0xC2F2, 0x9AEB, 0xC2F3, 0x9AEC, + 0xC2F4, 0x9AED, 0xC2F5, 0x9AEE, 0xC2F6, 0xBDCD, 0xC2F7, 0x9AEF, 0xC2F8, 0xBDCE, 0xC2F9, 0xBDCF, 0xC2FA, 0x9AF0, 0xC2FB, 0xBDD0, + 0xC2FC, 0xBDD1, 0xC2FD, 0x9AF1, 0xC2FE, 0x9AF2, 0xC2FF, 0x9AF3, 0xC300, 0xBDD2, 0xC301, 0x9AF4, 0xC302, 0x9AF5, 0xC303, 0x9AF6, + 0xC304, 0x9AF7, 0xC305, 0x9AF8, 0xC306, 0x9AF9, 0xC307, 0x9AFA, 0xC308, 0xBDD3, 0xC309, 0xBDD4, 0xC30A, 0x9AFB, 0xC30B, 0x9AFC, + 0xC30C, 0xBDD5, 0xC30D, 0xBDD6, 0xC30E, 0x9AFD, 0xC30F, 0x9AFE, 0xC310, 0x9B41, 0xC311, 0x9B42, 0xC312, 0x9B43, 0xC313, 0xBDD7, + 0xC314, 0xBDD8, 0xC315, 0xBDD9, 0xC316, 0x9B44, 0xC317, 0x9B45, 0xC318, 0xBDDA, 0xC319, 0x9B46, 0xC31A, 0x9B47, 0xC31B, 0x9B48, + 0xC31C, 0xBDDB, 0xC31D, 0x9B49, 0xC31E, 0x9B4A, 0xC31F, 0x9B4B, 0xC320, 0x9B4C, 0xC321, 0x9B4D, 0xC322, 0x9B4E, 0xC323, 0x9B4F, + 0xC324, 0xBDDC, 0xC325, 0xBDDD, 0xC326, 0x9B50, 0xC327, 0x9B51, 0xC328, 0xBDDE, 0xC329, 0xBDDF, 0xC32A, 0x9B52, 0xC32B, 0x9B53, + 0xC32C, 0x9B54, 0xC32D, 0x9B55, 0xC32E, 0x9B56, 0xC32F, 0x9B57, 0xC330, 0x9B58, 0xC331, 0x9B59, 0xC332, 0x9B5A, 0xC333, 0x9B61, + 0xC334, 0x9B62, 0xC335, 0x9B63, 0xC336, 0x9B64, 0xC337, 0x9B65, 0xC338, 0x9B66, 0xC339, 0x9B67, 0xC33A, 0x9B68, 0xC33B, 0x9B69, + 0xC33C, 0x9B6A, 0xC33D, 0x9B6B, 0xC33E, 0x9B6C, 0xC33F, 0x9B6D, 0xC340, 0x9B6E, 0xC341, 0x9B6F, 0xC342, 0x9B70, 0xC343, 0x9B71, + 0xC344, 0x9B72, 0xC345, 0xBDE0, 0xC346, 0x9B73, 0xC347, 0x9B74, 0xC348, 0x9B75, 0xC349, 0x9B76, 0xC34A, 0x9B77, 0xC34B, 0x9B78, + 0xC34C, 0x9B79, 0xC34D, 0x9B7A, 0xC34E, 0x9B81, 0xC34F, 0x9B82, 0xC350, 0x9B83, 0xC351, 0x9B84, 0xC352, 0x9B85, 0xC353, 0x9B86, + 0xC354, 0x9B87, 0xC355, 0x9B88, 0xC356, 0x9B89, 0xC357, 0x9B8A, 0xC358, 0x9B8B, 0xC359, 0x9B8C, 0xC35A, 0x9B8D, 0xC35B, 0x9B8E, + 0xC35C, 0x9B8F, 0xC35D, 0x9B90, 0xC35E, 0x9B91, 0xC35F, 0x9B92, 0xC360, 0x9B93, 0xC361, 0x9B94, 0xC362, 0x9B95, 0xC363, 0x9B96, + 0xC364, 0x9B97, 0xC365, 0x9B98, 0xC366, 0x9B99, 0xC367, 0x9B9A, 0xC368, 0xBDE1, 0xC369, 0xBDE2, 0xC36A, 0x9B9B, 0xC36B, 0x9B9C, + 0xC36C, 0xBDE3, 0xC36D, 0x9B9D, 0xC36E, 0x9B9E, 0xC36F, 0x9B9F, 0xC370, 0xBDE4, 0xC371, 0x9BA0, 0xC372, 0xBDE5, 0xC373, 0x9BA1, + 0xC374, 0x9BA2, 0xC375, 0x9BA3, 0xC376, 0x9BA4, 0xC377, 0x9BA5, 0xC378, 0xBDE6, 0xC379, 0xBDE7, 0xC37A, 0x9BA6, 0xC37B, 0x9BA7, + 0xC37C, 0xBDE8, 0xC37D, 0xBDE9, 0xC37E, 0x9BA8, 0xC37F, 0x9BA9, 0xC380, 0x9BAA, 0xC381, 0x9BAB, 0xC382, 0x9BAC, 0xC383, 0x9BAD, + 0xC384, 0xBDEA, 0xC385, 0x9BAE, 0xC386, 0x9BAF, 0xC387, 0x9BB0, 0xC388, 0xBDEB, 0xC389, 0x9BB1, 0xC38A, 0x9BB2, 0xC38B, 0x9BB3, + 0xC38C, 0xBDEC, 0xC38D, 0x9BB4, 0xC38E, 0x9BB5, 0xC38F, 0x9BB6, 0xC390, 0x9BB7, 0xC391, 0x9BB8, 0xC392, 0x9BB9, 0xC393, 0x9BBA, + 0xC394, 0x9BBB, 0xC395, 0x9BBC, 0xC396, 0x9BBD, 0xC397, 0x9BBE, 0xC398, 0x9BBF, 0xC399, 0x9BC0, 0xC39A, 0x9BC1, 0xC39B, 0x9BC2, + 0xC39C, 0x9BC3, 0xC39D, 0x9BC4, 0xC39E, 0x9BC5, 0xC39F, 0x9BC6, 0xC3A0, 0x9BC7, 0xC3A1, 0x9BC8, 0xC3A2, 0x9BC9, 0xC3A3, 0x9BCA, + 0xC3A4, 0x9BCB, 0xC3A5, 0x9BCC, 0xC3A6, 0x9BCD, 0xC3A7, 0x9BCE, 0xC3A8, 0x9BCF, 0xC3A9, 0x9BD0, 0xC3AA, 0x9BD1, 0xC3AB, 0x9BD2, + 0xC3AC, 0x9BD3, 0xC3AD, 0x9BD4, 0xC3AE, 0x9BD5, 0xC3AF, 0x9BD6, 0xC3B0, 0x9BD7, 0xC3B1, 0x9BD8, 0xC3B2, 0x9BD9, 0xC3B3, 0x9BDA, + 0xC3B4, 0x9BDB, 0xC3B5, 0x9BDC, 0xC3B6, 0x9BDD, 0xC3B7, 0x9BDE, 0xC3B8, 0x9BDF, 0xC3B9, 0x9BE0, 0xC3BA, 0x9BE1, 0xC3BB, 0x9BE2, + 0xC3BC, 0x9BE3, 0xC3BD, 0x9BE4, 0xC3BE, 0x9BE5, 0xC3BF, 0x9BE6, 0xC3C0, 0xBDED, 0xC3C1, 0x9BE7, 0xC3C2, 0x9BE8, 0xC3C3, 0x9BE9, + 0xC3C4, 0x9BEA, 0xC3C5, 0x9BEB, 0xC3C6, 0x9BEC, 0xC3C7, 0x9BED, 0xC3C8, 0x9BEE, 0xC3C9, 0x9BEF, 0xC3CA, 0x9BF0, 0xC3CB, 0x9BF1, + 0xC3CC, 0x9BF2, 0xC3CD, 0x9BF3, 0xC3CE, 0x9BF4, 0xC3CF, 0x9BF5, 0xC3D0, 0x9BF6, 0xC3D1, 0x9BF7, 0xC3D2, 0x9BF8, 0xC3D3, 0x9BF9, + 0xC3D4, 0x9BFA, 0xC3D5, 0x9BFB, 0xC3D6, 0x9BFC, 0xC3D7, 0x9BFD, 0xC3D8, 0xBDEE, 0xC3D9, 0xBDEF, 0xC3DA, 0x9BFE, 0xC3DB, 0x9C41, + 0xC3DC, 0xBDF0, 0xC3DD, 0x9C42, 0xC3DE, 0x9C43, 0xC3DF, 0xBDF1, 0xC3E0, 0xBDF2, 0xC3E1, 0x9C44, 0xC3E2, 0xBDF3, 0xC3E3, 0x9C45, + 0xC3E4, 0x9C46, 0xC3E5, 0x9C47, 0xC3E6, 0x9C48, 0xC3E7, 0x9C49, 0xC3E8, 0xBDF4, 0xC3E9, 0xBDF5, 0xC3EA, 0x9C4A, 0xC3EB, 0x9C4B, + 0xC3EC, 0x9C4C, 0xC3ED, 0xBDF6, 0xC3EE, 0x9C4D, 0xC3EF, 0x9C4E, 0xC3F0, 0x9C4F, 0xC3F1, 0x9C50, 0xC3F2, 0x9C51, 0xC3F3, 0x9C52, + 0xC3F4, 0xBDF7, 0xC3F5, 0xBDF8, 0xC3F6, 0x9C53, 0xC3F7, 0x9C54, 0xC3F8, 0xBDF9, 0xC3F9, 0x9C55, 0xC3FA, 0x9C56, 0xC3FB, 0x9C57, + 0xC3FC, 0x9C58, 0xC3FD, 0x9C59, 0xC3FE, 0x9C5A, 0xC3FF, 0x9C61, 0xC400, 0x9C62, 0xC401, 0x9C63, 0xC402, 0x9C64, 0xC403, 0x9C65, + 0xC404, 0x9C66, 0xC405, 0x9C67, 0xC406, 0x9C68, 0xC407, 0x9C69, 0xC408, 0xBDFA, 0xC409, 0x9C6A, 0xC40A, 0x9C6B, 0xC40B, 0x9C6C, + 0xC40C, 0x9C6D, 0xC40D, 0x9C6E, 0xC40E, 0x9C6F, 0xC40F, 0x9C70, 0xC410, 0xBDFB, 0xC411, 0x9C71, 0xC412, 0x9C72, 0xC413, 0x9C73, + 0xC414, 0x9C74, 0xC415, 0x9C75, 0xC416, 0x9C76, 0xC417, 0x9C77, 0xC418, 0x9C78, 0xC419, 0x9C79, 0xC41A, 0x9C7A, 0xC41B, 0x9C81, + 0xC41C, 0x9C82, 0xC41D, 0x9C83, 0xC41E, 0x9C84, 0xC41F, 0x9C85, 0xC420, 0x9C86, 0xC421, 0x9C87, 0xC422, 0x9C88, 0xC423, 0x9C89, + 0xC424, 0xBDFC, 0xC425, 0x9C8A, 0xC426, 0x9C8B, 0xC427, 0x9C8C, 0xC428, 0x9C8D, 0xC429, 0x9C8E, 0xC42A, 0x9C8F, 0xC42B, 0x9C90, + 0xC42C, 0xBDFD, 0xC42D, 0x9C91, 0xC42E, 0x9C92, 0xC42F, 0x9C93, 0xC430, 0xBDFE, 0xC431, 0x9C94, 0xC432, 0x9C95, 0xC433, 0x9C96, + 0xC434, 0xBEA1, 0xC435, 0x9C97, 0xC436, 0x9C98, 0xC437, 0x9C99, 0xC438, 0x9C9A, 0xC439, 0x9C9B, 0xC43A, 0x9C9C, 0xC43B, 0x9C9D, + 0xC43C, 0xBEA2, 0xC43D, 0xBEA3, 0xC43E, 0x9C9E, 0xC43F, 0x9C9F, 0xC440, 0x9CA0, 0xC441, 0x9CA1, 0xC442, 0x9CA2, 0xC443, 0x9CA3, + 0xC444, 0x9CA4, 0xC445, 0x9CA5, 0xC446, 0x9CA6, 0xC447, 0x9CA7, 0xC448, 0xBEA4, 0xC449, 0x9CA8, 0xC44A, 0x9CA9, 0xC44B, 0x9CAA, + 0xC44C, 0x9CAB, 0xC44D, 0x9CAC, 0xC44E, 0x9CAD, 0xC44F, 0x9CAE, 0xC450, 0x9CAF, 0xC451, 0x9CB0, 0xC452, 0x9CB1, 0xC453, 0x9CB2, + 0xC454, 0x9CB3, 0xC455, 0x9CB4, 0xC456, 0x9CB5, 0xC457, 0x9CB6, 0xC458, 0x9CB7, 0xC459, 0x9CB8, 0xC45A, 0x9CB9, 0xC45B, 0x9CBA, + 0xC45C, 0x9CBB, 0xC45D, 0x9CBC, 0xC45E, 0x9CBD, 0xC45F, 0x9CBE, 0xC460, 0x9CBF, 0xC461, 0x9CC0, 0xC462, 0x9CC1, 0xC463, 0x9CC2, + 0xC464, 0xBEA5, 0xC465, 0xBEA6, 0xC466, 0x9CC3, 0xC467, 0x9CC4, 0xC468, 0xBEA7, 0xC469, 0x9CC5, 0xC46A, 0x9CC6, 0xC46B, 0x9CC7, + 0xC46C, 0xBEA8, 0xC46D, 0x9CC8, 0xC46E, 0x9CC9, 0xC46F, 0x9CCA, 0xC470, 0x9CCB, 0xC471, 0x9CCC, 0xC472, 0x9CCD, 0xC473, 0x9CCE, + 0xC474, 0xBEA9, 0xC475, 0xBEAA, 0xC476, 0x9CCF, 0xC477, 0x9CD0, 0xC478, 0x9CD1, 0xC479, 0xBEAB, 0xC47A, 0x9CD2, 0xC47B, 0x9CD3, + 0xC47C, 0x9CD4, 0xC47D, 0x9CD5, 0xC47E, 0x9CD6, 0xC47F, 0x9CD7, 0xC480, 0xBEAC, 0xC481, 0x9CD8, 0xC482, 0x9CD9, 0xC483, 0x9CDA, + 0xC484, 0x9CDB, 0xC485, 0x9CDC, 0xC486, 0x9CDD, 0xC487, 0x9CDE, 0xC488, 0x9CDF, 0xC489, 0x9CE0, 0xC48A, 0x9CE1, 0xC48B, 0x9CE2, + 0xC48C, 0x9CE3, 0xC48D, 0x9CE4, 0xC48E, 0x9CE5, 0xC48F, 0x9CE6, 0xC490, 0x9CE7, 0xC491, 0x9CE8, 0xC492, 0x9CE9, 0xC493, 0x9CEA, + 0xC494, 0xBEAD, 0xC495, 0x9CEB, 0xC496, 0x9CEC, 0xC497, 0x9CED, 0xC498, 0x9CEE, 0xC499, 0x9CEF, 0xC49A, 0x9CF0, 0xC49B, 0x9CF1, + 0xC49C, 0xBEAE, 0xC49D, 0x9CF2, 0xC49E, 0x9CF3, 0xC49F, 0x9CF4, 0xC4A0, 0x9CF5, 0xC4A1, 0x9CF6, 0xC4A2, 0x9CF7, 0xC4A3, 0x9CF8, + 0xC4A4, 0x9CF9, 0xC4A5, 0x9CFA, 0xC4A6, 0x9CFB, 0xC4A7, 0x9CFC, 0xC4A8, 0x9CFD, 0xC4A9, 0x9CFE, 0xC4AA, 0x9D41, 0xC4AB, 0x9D42, + 0xC4AC, 0x9D43, 0xC4AD, 0x9D44, 0xC4AE, 0x9D45, 0xC4AF, 0x9D46, 0xC4B0, 0x9D47, 0xC4B1, 0x9D48, 0xC4B2, 0x9D49, 0xC4B3, 0x9D4A, + 0xC4B4, 0x9D4B, 0xC4B5, 0x9D4C, 0xC4B6, 0x9D4D, 0xC4B7, 0x9D4E, 0xC4B8, 0xBEAF, 0xC4B9, 0x9D4F, 0xC4BA, 0x9D50, 0xC4BB, 0x9D51, + 0xC4BC, 0xBEB0, 0xC4BD, 0x9D52, 0xC4BE, 0x9D53, 0xC4BF, 0x9D54, 0xC4C0, 0x9D55, 0xC4C1, 0x9D56, 0xC4C2, 0x9D57, 0xC4C3, 0x9D58, + 0xC4C4, 0x9D59, 0xC4C5, 0x9D5A, 0xC4C6, 0x9D61, 0xC4C7, 0x9D62, 0xC4C8, 0x9D63, 0xC4C9, 0x9D64, 0xC4CA, 0x9D65, 0xC4CB, 0x9D66, + 0xC4CC, 0x9D67, 0xC4CD, 0x9D68, 0xC4CE, 0x9D69, 0xC4CF, 0x9D6A, 0xC4D0, 0x9D6B, 0xC4D1, 0x9D6C, 0xC4D2, 0x9D6D, 0xC4D3, 0x9D6E, + 0xC4D4, 0x9D6F, 0xC4D5, 0x9D70, 0xC4D6, 0x9D71, 0xC4D7, 0x9D72, 0xC4D8, 0x9D73, 0xC4D9, 0x9D74, 0xC4DA, 0x9D75, 0xC4DB, 0x9D76, + 0xC4DC, 0x9D77, 0xC4DD, 0x9D78, 0xC4DE, 0x9D79, 0xC4DF, 0x9D7A, 0xC4E0, 0x9D81, 0xC4E1, 0x9D82, 0xC4E2, 0x9D83, 0xC4E3, 0x9D84, + 0xC4E4, 0x9D85, 0xC4E5, 0x9D86, 0xC4E6, 0x9D87, 0xC4E7, 0x9D88, 0xC4E8, 0x9D89, 0xC4E9, 0xBEB1, 0xC4EA, 0x9D8A, 0xC4EB, 0x9D8B, + 0xC4EC, 0x9D8C, 0xC4ED, 0x9D8D, 0xC4EE, 0x9D8E, 0xC4EF, 0x9D8F, 0xC4F0, 0xBEB2, 0xC4F1, 0xBEB3, 0xC4F2, 0x9D90, 0xC4F3, 0x9D91, + 0xC4F4, 0xBEB4, 0xC4F5, 0x9D92, 0xC4F6, 0x9D93, 0xC4F7, 0x9D94, 0xC4F8, 0xBEB5, 0xC4F9, 0x9D95, 0xC4FA, 0xBEB6, 0xC4FB, 0x9D96, + 0xC4FC, 0x9D97, 0xC4FD, 0x9D98, 0xC4FE, 0x9D99, 0xC4FF, 0xBEB7, 0xC500, 0xBEB8, 0xC501, 0xBEB9, 0xC502, 0x9D9A, 0xC503, 0x9D9B, + 0xC504, 0x9D9C, 0xC505, 0x9D9D, 0xC506, 0x9D9E, 0xC507, 0x9D9F, 0xC508, 0x9DA0, 0xC509, 0x9DA1, 0xC50A, 0x9DA2, 0xC50B, 0x9DA3, + 0xC50C, 0xBEBA, 0xC50D, 0x9DA4, 0xC50E, 0x9DA5, 0xC50F, 0x9DA6, 0xC510, 0xBEBB, 0xC511, 0x9DA7, 0xC512, 0x9DA8, 0xC513, 0x9DA9, + 0xC514, 0xBEBC, 0xC515, 0x9DAA, 0xC516, 0x9DAB, 0xC517, 0x9DAC, 0xC518, 0x9DAD, 0xC519, 0x9DAE, 0xC51A, 0x9DAF, 0xC51B, 0x9DB0, + 0xC51C, 0xBEBD, 0xC51D, 0x9DB1, 0xC51E, 0x9DB2, 0xC51F, 0x9DB3, 0xC520, 0x9DB4, 0xC521, 0x9DB5, 0xC522, 0x9DB6, 0xC523, 0x9DB7, + 0xC524, 0x9DB8, 0xC525, 0x9DB9, 0xC526, 0x9DBA, 0xC527, 0x9DBB, 0xC528, 0xBEBE, 0xC529, 0xBEBF, 0xC52A, 0x9DBC, 0xC52B, 0x9DBD, + 0xC52C, 0xBEC0, 0xC52D, 0x9DBE, 0xC52E, 0x9DBF, 0xC52F, 0x9DC0, 0xC530, 0xBEC1, 0xC531, 0x9DC1, 0xC532, 0x9DC2, 0xC533, 0x9DC3, + 0xC534, 0x9DC4, 0xC535, 0x9DC5, 0xC536, 0x9DC6, 0xC537, 0x9DC7, 0xC538, 0xBEC2, 0xC539, 0xBEC3, 0xC53A, 0x9DC8, 0xC53B, 0xBEC4, + 0xC53C, 0x9DC9, 0xC53D, 0xBEC5, 0xC53E, 0x9DCA, 0xC53F, 0x9DCB, 0xC540, 0x9DCC, 0xC541, 0x9DCD, 0xC542, 0x9DCE, 0xC543, 0x9DCF, + 0xC544, 0xBEC6, 0xC545, 0xBEC7, 0xC546, 0x9DD0, 0xC547, 0x9DD1, 0xC548, 0xBEC8, 0xC549, 0xBEC9, 0xC54A, 0xBECA, 0xC54B, 0x9DD2, + 0xC54C, 0xBECB, 0xC54D, 0xBECC, 0xC54E, 0xBECD, 0xC54F, 0x9DD3, 0xC550, 0x9DD4, 0xC551, 0x9DD5, 0xC552, 0x9DD6, 0xC553, 0xBECE, + 0xC554, 0xBECF, 0xC555, 0xBED0, 0xC556, 0x9DD7, 0xC557, 0xBED1, 0xC558, 0xBED2, 0xC559, 0xBED3, 0xC55A, 0x9DD8, 0xC55B, 0x9DD9, + 0xC55C, 0x9DDA, 0xC55D, 0xBED4, 0xC55E, 0xBED5, 0xC55F, 0x9DDB, 0xC560, 0xBED6, 0xC561, 0xBED7, 0xC562, 0x9DDC, 0xC563, 0x9DDD, + 0xC564, 0xBED8, 0xC565, 0x9DDE, 0xC566, 0x9DDF, 0xC567, 0x9DE0, 0xC568, 0xBED9, 0xC569, 0x9DE1, 0xC56A, 0x9DE2, 0xC56B, 0x9DE3, + 0xC56C, 0x9DE4, 0xC56D, 0x9DE5, 0xC56E, 0x9DE6, 0xC56F, 0x9DE7, 0xC570, 0xBEDA, 0xC571, 0xBEDB, 0xC572, 0x9DE8, 0xC573, 0xBEDC, + 0xC574, 0xBEDD, 0xC575, 0xBEDE, 0xC576, 0x9DE9, 0xC577, 0x9DEA, 0xC578, 0x9DEB, 0xC579, 0x9DEC, 0xC57A, 0x9DED, 0xC57B, 0x9DEE, + 0xC57C, 0xBEDF, 0xC57D, 0xBEE0, 0xC57E, 0x9DEF, 0xC57F, 0x9DF0, 0xC580, 0xBEE1, 0xC581, 0x9DF1, 0xC582, 0x9DF2, 0xC583, 0x9DF3, + 0xC584, 0xBEE2, 0xC585, 0x9DF4, 0xC586, 0x9DF5, 0xC587, 0xBEE3, 0xC588, 0x9DF6, 0xC589, 0x9DF7, 0xC58A, 0x9DF8, 0xC58B, 0x9DF9, + 0xC58C, 0xBEE4, 0xC58D, 0xBEE5, 0xC58E, 0x9DFA, 0xC58F, 0xBEE6, 0xC590, 0x9DFB, 0xC591, 0xBEE7, 0xC592, 0x9DFC, 0xC593, 0x9DFD, + 0xC594, 0x9DFE, 0xC595, 0xBEE8, 0xC596, 0x9E41, 0xC597, 0xBEE9, 0xC598, 0xBEEA, 0xC599, 0x9E42, 0xC59A, 0x9E43, 0xC59B, 0x9E44, + 0xC59C, 0xBEEB, 0xC59D, 0x9E45, 0xC59E, 0x9E46, 0xC59F, 0x9E47, 0xC5A0, 0xBEEC, 0xC5A1, 0x9E48, 0xC5A2, 0x9E49, 0xC5A3, 0x9E4A, + 0xC5A4, 0x9E4B, 0xC5A5, 0x9E4C, 0xC5A6, 0x9E4D, 0xC5A7, 0x9E4E, 0xC5A8, 0x9E4F, 0xC5A9, 0xBEED, 0xC5AA, 0x9E50, 0xC5AB, 0x9E51, + 0xC5AC, 0x9E52, 0xC5AD, 0x9E53, 0xC5AE, 0x9E54, 0xC5AF, 0x9E55, 0xC5B0, 0x9E56, 0xC5B1, 0x9E57, 0xC5B2, 0x9E58, 0xC5B3, 0x9E59, + 0xC5B4, 0xBEEE, 0xC5B5, 0xBEEF, 0xC5B6, 0x9E5A, 0xC5B7, 0x9E61, 0xC5B8, 0xBEF0, 0xC5B9, 0xBEF1, 0xC5BA, 0x9E62, 0xC5BB, 0xBEF2, + 0xC5BC, 0xBEF3, 0xC5BD, 0xBEF4, 0xC5BE, 0xBEF5, 0xC5BF, 0x9E63, 0xC5C0, 0x9E64, 0xC5C1, 0x9E65, 0xC5C2, 0x9E66, 0xC5C3, 0x9E67, + 0xC5C4, 0xBEF6, 0xC5C5, 0xBEF7, 0xC5C6, 0xBEF8, 0xC5C7, 0xBEF9, 0xC5C8, 0xBEFA, 0xC5C9, 0xBEFB, 0xC5CA, 0xBEFC, 0xC5CB, 0x9E68, + 0xC5CC, 0xBEFD, 0xC5CD, 0x9E69, 0xC5CE, 0xBEFE, 0xC5CF, 0x9E6A, 0xC5D0, 0xBFA1, 0xC5D1, 0xBFA2, 0xC5D2, 0x9E6B, 0xC5D3, 0x9E6C, + 0xC5D4, 0xBFA3, 0xC5D5, 0x9E6D, 0xC5D6, 0x9E6E, 0xC5D7, 0x9E6F, 0xC5D8, 0xBFA4, 0xC5D9, 0x9E70, 0xC5DA, 0x9E71, 0xC5DB, 0x9E72, + 0xC5DC, 0x9E73, 0xC5DD, 0x9E74, 0xC5DE, 0x9E75, 0xC5DF, 0x9E76, 0xC5E0, 0xBFA5, 0xC5E1, 0xBFA6, 0xC5E2, 0x9E77, 0xC5E3, 0xBFA7, + 0xC5E4, 0x9E78, 0xC5E5, 0xBFA8, 0xC5E6, 0x9E79, 0xC5E7, 0x9E7A, 0xC5E8, 0x9E81, 0xC5E9, 0x9E82, 0xC5EA, 0x9E83, 0xC5EB, 0x9E84, + 0xC5EC, 0xBFA9, 0xC5ED, 0xBFAA, 0xC5EE, 0xBFAB, 0xC5EF, 0x9E85, 0xC5F0, 0xBFAC, 0xC5F1, 0x9E86, 0xC5F2, 0x9E87, 0xC5F3, 0x9E88, + 0xC5F4, 0xBFAD, 0xC5F5, 0x9E89, 0xC5F6, 0xBFAE, 0xC5F7, 0xBFAF, 0xC5F8, 0x9E8A, 0xC5F9, 0x9E8B, 0xC5FA, 0x9E8C, 0xC5FB, 0x9E8D, + 0xC5FC, 0xBFB0, 0xC5FD, 0xBFB1, 0xC5FE, 0xBFB2, 0xC5FF, 0xBFB3, 0xC600, 0xBFB4, 0xC601, 0xBFB5, 0xC602, 0x9E8E, 0xC603, 0x9E8F, + 0xC604, 0x9E90, 0xC605, 0xBFB6, 0xC606, 0xBFB7, 0xC607, 0xBFB8, 0xC608, 0xBFB9, 0xC609, 0x9E91, 0xC60A, 0x9E92, 0xC60B, 0x9E93, + 0xC60C, 0xBFBA, 0xC60D, 0x9E94, 0xC60E, 0x9E95, 0xC60F, 0x9E96, 0xC610, 0xBFBB, 0xC611, 0x9E97, 0xC612, 0x9E98, 0xC613, 0x9E99, + 0xC614, 0x9E9A, 0xC615, 0x9E9B, 0xC616, 0x9E9C, 0xC617, 0x9E9D, 0xC618, 0xBFBC, 0xC619, 0xBFBD, 0xC61A, 0x9E9E, 0xC61B, 0xBFBE, + 0xC61C, 0xBFBF, 0xC61D, 0x9E9F, 0xC61E, 0x9EA0, 0xC61F, 0x9EA1, 0xC620, 0x9EA2, 0xC621, 0x9EA3, 0xC622, 0x9EA4, 0xC623, 0x9EA5, + 0xC624, 0xBFC0, 0xC625, 0xBFC1, 0xC626, 0x9EA6, 0xC627, 0x9EA7, 0xC628, 0xBFC2, 0xC629, 0x9EA8, 0xC62A, 0x9EA9, 0xC62B, 0x9EAA, + 0xC62C, 0xBFC3, 0xC62D, 0xBFC4, 0xC62E, 0xBFC5, 0xC62F, 0x9EAB, 0xC630, 0xBFC6, 0xC631, 0x9EAC, 0xC632, 0x9EAD, 0xC633, 0xBFC7, + 0xC634, 0xBFC8, 0xC635, 0xBFC9, 0xC636, 0x9EAE, 0xC637, 0xBFCA, 0xC638, 0x9EAF, 0xC639, 0xBFCB, 0xC63A, 0x9EB0, 0xC63B, 0xBFCC, + 0xC63C, 0x9EB1, 0xC63D, 0x9EB2, 0xC63E, 0x9EB3, 0xC63F, 0x9EB4, 0xC640, 0xBFCD, 0xC641, 0xBFCE, 0xC642, 0x9EB5, 0xC643, 0x9EB6, + 0xC644, 0xBFCF, 0xC645, 0x9EB7, 0xC646, 0x9EB8, 0xC647, 0x9EB9, 0xC648, 0xBFD0, 0xC649, 0x9EBA, 0xC64A, 0x9EBB, 0xC64B, 0x9EBC, + 0xC64C, 0x9EBD, 0xC64D, 0x9EBE, 0xC64E, 0x9EBF, 0xC64F, 0x9EC0, 0xC650, 0xBFD1, 0xC651, 0xBFD2, 0xC652, 0x9EC1, 0xC653, 0xBFD3, + 0xC654, 0xBFD4, 0xC655, 0xBFD5, 0xC656, 0x9EC2, 0xC657, 0x9EC3, 0xC658, 0x9EC4, 0xC659, 0x9EC5, 0xC65A, 0x9EC6, 0xC65B, 0x9EC7, + 0xC65C, 0xBFD6, 0xC65D, 0xBFD7, 0xC65E, 0x9EC8, 0xC65F, 0x9EC9, 0xC660, 0xBFD8, 0xC661, 0x9ECA, 0xC662, 0x9ECB, 0xC663, 0x9ECC, + 0xC664, 0x9ECD, 0xC665, 0x9ECE, 0xC666, 0x9ECF, 0xC667, 0x9ED0, 0xC668, 0x9ED1, 0xC669, 0x9ED2, 0xC66A, 0x9ED3, 0xC66B, 0x9ED4, + 0xC66C, 0xBFD9, 0xC66D, 0x9ED5, 0xC66E, 0x9ED6, 0xC66F, 0xBFDA, 0xC670, 0x9ED7, 0xC671, 0xBFDB, 0xC672, 0x9ED8, 0xC673, 0x9ED9, + 0xC674, 0x9EDA, 0xC675, 0x9EDB, 0xC676, 0x9EDC, 0xC677, 0x9EDD, 0xC678, 0xBFDC, 0xC679, 0xBFDD, 0xC67A, 0x9EDE, 0xC67B, 0x9EDF, + 0xC67C, 0xBFDE, 0xC67D, 0x9EE0, 0xC67E, 0x9EE1, 0xC67F, 0x9EE2, 0xC680, 0xBFDF, 0xC681, 0x9EE3, 0xC682, 0x9EE4, 0xC683, 0x9EE5, + 0xC684, 0x9EE6, 0xC685, 0x9EE7, 0xC686, 0x9EE8, 0xC687, 0x9EE9, 0xC688, 0xBFE0, 0xC689, 0xBFE1, 0xC68A, 0x9EEA, 0xC68B, 0xBFE2, + 0xC68C, 0x9EEB, 0xC68D, 0xBFE3, 0xC68E, 0x9EEC, 0xC68F, 0x9EED, 0xC690, 0x9EEE, 0xC691, 0x9EEF, 0xC692, 0x9EF0, 0xC693, 0x9EF1, + 0xC694, 0xBFE4, 0xC695, 0xBFE5, 0xC696, 0x9EF2, 0xC697, 0x9EF3, 0xC698, 0xBFE6, 0xC699, 0x9EF4, 0xC69A, 0x9EF5, 0xC69B, 0x9EF6, + 0xC69C, 0xBFE7, 0xC69D, 0x9EF7, 0xC69E, 0x9EF8, 0xC69F, 0x9EF9, 0xC6A0, 0x9EFA, 0xC6A1, 0x9EFB, 0xC6A2, 0x9EFC, 0xC6A3, 0x9EFD, + 0xC6A4, 0xBFE8, 0xC6A5, 0xBFE9, 0xC6A6, 0x9EFE, 0xC6A7, 0xBFEA, 0xC6A8, 0x9F41, 0xC6A9, 0xBFEB, 0xC6AA, 0x9F42, 0xC6AB, 0x9F43, + 0xC6AC, 0x9F44, 0xC6AD, 0x9F45, 0xC6AE, 0x9F46, 0xC6AF, 0x9F47, 0xC6B0, 0xBFEC, 0xC6B1, 0xBFED, 0xC6B2, 0x9F48, 0xC6B3, 0x9F49, + 0xC6B4, 0xBFEE, 0xC6B5, 0x9F4A, 0xC6B6, 0x9F4B, 0xC6B7, 0x9F4C, 0xC6B8, 0xBFEF, 0xC6B9, 0xBFF0, 0xC6BA, 0xBFF1, 0xC6BB, 0x9F4D, + 0xC6BC, 0x9F4E, 0xC6BD, 0x9F4F, 0xC6BE, 0x9F50, 0xC6BF, 0x9F51, 0xC6C0, 0xBFF2, 0xC6C1, 0xBFF3, 0xC6C2, 0x9F52, 0xC6C3, 0xBFF4, + 0xC6C4, 0x9F53, 0xC6C5, 0xBFF5, 0xC6C6, 0x9F54, 0xC6C7, 0x9F55, 0xC6C8, 0x9F56, 0xC6C9, 0x9F57, 0xC6CA, 0x9F58, 0xC6CB, 0x9F59, + 0xC6CC, 0xBFF6, 0xC6CD, 0xBFF7, 0xC6CE, 0x9F5A, 0xC6CF, 0x9F61, 0xC6D0, 0xBFF8, 0xC6D1, 0x9F62, 0xC6D2, 0x9F63, 0xC6D3, 0x9F64, + 0xC6D4, 0xBFF9, 0xC6D5, 0x9F65, 0xC6D6, 0x9F66, 0xC6D7, 0x9F67, 0xC6D8, 0x9F68, 0xC6D9, 0x9F69, 0xC6DA, 0x9F6A, 0xC6DB, 0x9F6B, + 0xC6DC, 0xBFFA, 0xC6DD, 0xBFFB, 0xC6DE, 0x9F6C, 0xC6DF, 0x9F6D, 0xC6E0, 0xBFFC, 0xC6E1, 0xBFFD, 0xC6E2, 0x9F6E, 0xC6E3, 0x9F6F, + 0xC6E4, 0x9F70, 0xC6E5, 0x9F71, 0xC6E6, 0x9F72, 0xC6E7, 0x9F73, 0xC6E8, 0xBFFE, 0xC6E9, 0xC0A1, 0xC6EA, 0x9F74, 0xC6EB, 0x9F75, + 0xC6EC, 0xC0A2, 0xC6ED, 0x9F76, 0xC6EE, 0x9F77, 0xC6EF, 0x9F78, 0xC6F0, 0xC0A3, 0xC6F1, 0x9F79, 0xC6F2, 0x9F7A, 0xC6F3, 0x9F81, + 0xC6F4, 0x9F82, 0xC6F5, 0x9F83, 0xC6F6, 0x9F84, 0xC6F7, 0x9F85, 0xC6F8, 0xC0A4, 0xC6F9, 0xC0A5, 0xC6FA, 0x9F86, 0xC6FB, 0x9F87, + 0xC6FC, 0x9F88, 0xC6FD, 0xC0A6, 0xC6FE, 0x9F89, 0xC6FF, 0x9F8A, 0xC700, 0x9F8B, 0xC701, 0x9F8C, 0xC702, 0x9F8D, 0xC703, 0x9F8E, + 0xC704, 0xC0A7, 0xC705, 0xC0A8, 0xC706, 0x9F8F, 0xC707, 0x9F90, 0xC708, 0xC0A9, 0xC709, 0x9F91, 0xC70A, 0x9F92, 0xC70B, 0x9F93, + 0xC70C, 0xC0AA, 0xC70D, 0x9F94, 0xC70E, 0x9F95, 0xC70F, 0x9F96, 0xC710, 0x9F97, 0xC711, 0x9F98, 0xC712, 0x9F99, 0xC713, 0x9F9A, + 0xC714, 0xC0AB, 0xC715, 0xC0AC, 0xC716, 0x9F9B, 0xC717, 0xC0AD, 0xC718, 0x9F9C, 0xC719, 0xC0AE, 0xC71A, 0x9F9D, 0xC71B, 0x9F9E, + 0xC71C, 0x9F9F, 0xC71D, 0x9FA0, 0xC71E, 0x9FA1, 0xC71F, 0x9FA2, 0xC720, 0xC0AF, 0xC721, 0xC0B0, 0xC722, 0x9FA3, 0xC723, 0x9FA4, + 0xC724, 0xC0B1, 0xC725, 0x9FA5, 0xC726, 0x9FA6, 0xC727, 0x9FA7, 0xC728, 0xC0B2, 0xC729, 0x9FA8, 0xC72A, 0x9FA9, 0xC72B, 0x9FAA, + 0xC72C, 0x9FAB, 0xC72D, 0x9FAC, 0xC72E, 0x9FAD, 0xC72F, 0x9FAE, 0xC730, 0xC0B3, 0xC731, 0xC0B4, 0xC732, 0x9FAF, 0xC733, 0xC0B5, + 0xC734, 0x9FB0, 0xC735, 0xC0B6, 0xC736, 0x9FB1, 0xC737, 0xC0B7, 0xC738, 0x9FB2, 0xC739, 0x9FB3, 0xC73A, 0x9FB4, 0xC73B, 0x9FB5, + 0xC73C, 0xC0B8, 0xC73D, 0xC0B9, 0xC73E, 0x9FB6, 0xC73F, 0x9FB7, 0xC740, 0xC0BA, 0xC741, 0x9FB8, 0xC742, 0x9FB9, 0xC743, 0x9FBA, + 0xC744, 0xC0BB, 0xC745, 0x9FBB, 0xC746, 0x9FBC, 0xC747, 0x9FBD, 0xC748, 0x9FBE, 0xC749, 0x9FBF, 0xC74A, 0xC0BC, 0xC74B, 0x9FC0, + 0xC74C, 0xC0BD, 0xC74D, 0xC0BE, 0xC74E, 0x9FC1, 0xC74F, 0xC0BF, 0xC750, 0x9FC2, 0xC751, 0xC0C0, 0xC752, 0xC0C1, 0xC753, 0xC0C2, + 0xC754, 0xC0C3, 0xC755, 0xC0C4, 0xC756, 0xC0C5, 0xC757, 0xC0C6, 0xC758, 0xC0C7, 0xC759, 0x9FC3, 0xC75A, 0x9FC4, 0xC75B, 0x9FC5, + 0xC75C, 0xC0C8, 0xC75D, 0x9FC6, 0xC75E, 0x9FC7, 0xC75F, 0x9FC8, 0xC760, 0xC0C9, 0xC761, 0x9FC9, 0xC762, 0x9FCA, 0xC763, 0x9FCB, + 0xC764, 0x9FCC, 0xC765, 0x9FCD, 0xC766, 0x9FCE, 0xC767, 0x9FCF, 0xC768, 0xC0CA, 0xC769, 0x9FD0, 0xC76A, 0x9FD1, 0xC76B, 0xC0CB, + 0xC76C, 0x9FD2, 0xC76D, 0x9FD3, 0xC76E, 0x9FD4, 0xC76F, 0x9FD5, 0xC770, 0x9FD6, 0xC771, 0x9FD7, 0xC772, 0x9FD8, 0xC773, 0x9FD9, + 0xC774, 0xC0CC, 0xC775, 0xC0CD, 0xC776, 0x9FDA, 0xC777, 0x9FDB, 0xC778, 0xC0CE, 0xC779, 0x9FDC, 0xC77A, 0x9FDD, 0xC77B, 0x9FDE, + 0xC77C, 0xC0CF, 0xC77D, 0xC0D0, 0xC77E, 0xC0D1, 0xC77F, 0x9FDF, 0xC780, 0x9FE0, 0xC781, 0x9FE1, 0xC782, 0x9FE2, 0xC783, 0xC0D2, + 0xC784, 0xC0D3, 0xC785, 0xC0D4, 0xC786, 0x9FE3, 0xC787, 0xC0D5, 0xC788, 0xC0D6, 0xC789, 0xC0D7, 0xC78A, 0xC0D8, 0xC78B, 0x9FE4, + 0xC78C, 0x9FE5, 0xC78D, 0x9FE6, 0xC78E, 0xC0D9, 0xC78F, 0x9FE7, 0xC790, 0xC0DA, 0xC791, 0xC0DB, 0xC792, 0x9FE8, 0xC793, 0x9FE9, + 0xC794, 0xC0DC, 0xC795, 0x9FEA, 0xC796, 0xC0DD, 0xC797, 0xC0DE, 0xC798, 0xC0DF, 0xC799, 0x9FEB, 0xC79A, 0xC0E0, 0xC79B, 0x9FEC, + 0xC79C, 0x9FED, 0xC79D, 0x9FEE, 0xC79E, 0x9FEF, 0xC79F, 0x9FF0, 0xC7A0, 0xC0E1, 0xC7A1, 0xC0E2, 0xC7A2, 0x9FF1, 0xC7A3, 0xC0E3, + 0xC7A4, 0xC0E4, 0xC7A5, 0xC0E5, 0xC7A6, 0xC0E6, 0xC7A7, 0x9FF2, 0xC7A8, 0x9FF3, 0xC7A9, 0x9FF4, 0xC7AA, 0x9FF5, 0xC7AB, 0x9FF6, + 0xC7AC, 0xC0E7, 0xC7AD, 0xC0E8, 0xC7AE, 0x9FF7, 0xC7AF, 0x9FF8, 0xC7B0, 0xC0E9, 0xC7B1, 0x9FF9, 0xC7B2, 0x9FFA, 0xC7B3, 0x9FFB, + 0xC7B4, 0xC0EA, 0xC7B5, 0x9FFC, 0xC7B6, 0x9FFD, 0xC7B7, 0x9FFE, 0xC7B8, 0xA041, 0xC7B9, 0xA042, 0xC7BA, 0xA043, 0xC7BB, 0xA044, + 0xC7BC, 0xC0EB, 0xC7BD, 0xC0EC, 0xC7BE, 0xA045, 0xC7BF, 0xC0ED, 0xC7C0, 0xC0EE, 0xC7C1, 0xC0EF, 0xC7C2, 0xA046, 0xC7C3, 0xA047, + 0xC7C4, 0xA048, 0xC7C5, 0xA049, 0xC7C6, 0xA04A, 0xC7C7, 0xA04B, 0xC7C8, 0xC0F0, 0xC7C9, 0xC0F1, 0xC7CA, 0xA04C, 0xC7CB, 0xA04D, + 0xC7CC, 0xC0F2, 0xC7CD, 0xA04E, 0xC7CE, 0xC0F3, 0xC7CF, 0xA04F, 0xC7D0, 0xC0F4, 0xC7D1, 0xA050, 0xC7D2, 0xA051, 0xC7D3, 0xA052, + 0xC7D4, 0xA053, 0xC7D5, 0xA054, 0xC7D6, 0xA055, 0xC7D7, 0xA056, 0xC7D8, 0xC0F5, 0xC7D9, 0xA057, 0xC7DA, 0xA058, 0xC7DB, 0xA059, + 0xC7DC, 0xA05A, 0xC7DD, 0xC0F6, 0xC7DE, 0xA061, 0xC7DF, 0xA062, 0xC7E0, 0xA063, 0xC7E1, 0xA064, 0xC7E2, 0xA065, 0xC7E3, 0xA066, + 0xC7E4, 0xC0F7, 0xC7E5, 0xA067, 0xC7E6, 0xA068, 0xC7E7, 0xA069, 0xC7E8, 0xC0F8, 0xC7E9, 0xA06A, 0xC7EA, 0xA06B, 0xC7EB, 0xA06C, + 0xC7EC, 0xC0F9, 0xC7ED, 0xA06D, 0xC7EE, 0xA06E, 0xC7EF, 0xA06F, 0xC7F0, 0xA070, 0xC7F1, 0xA071, 0xC7F2, 0xA072, 0xC7F3, 0xA073, + 0xC7F4, 0xA074, 0xC7F5, 0xA075, 0xC7F6, 0xA076, 0xC7F7, 0xA077, 0xC7F8, 0xA078, 0xC7F9, 0xA079, 0xC7FA, 0xA07A, 0xC7FB, 0xA081, + 0xC7FC, 0xA082, 0xC7FD, 0xA083, 0xC7FE, 0xA084, 0xC7FF, 0xA085, 0xC800, 0xC0FA, 0xC801, 0xC0FB, 0xC802, 0xA086, 0xC803, 0xA087, + 0xC804, 0xC0FC, 0xC805, 0xA088, 0xC806, 0xA089, 0xC807, 0xA08A, 0xC808, 0xC0FD, 0xC809, 0xA08B, 0xC80A, 0xC0FE, 0xC80B, 0xA08C, + 0xC80C, 0xA08D, 0xC80D, 0xA08E, 0xC80E, 0xA08F, 0xC80F, 0xA090, 0xC810, 0xC1A1, 0xC811, 0xC1A2, 0xC812, 0xA091, 0xC813, 0xC1A3, + 0xC814, 0xA092, 0xC815, 0xC1A4, 0xC816, 0xC1A5, 0xC817, 0xA093, 0xC818, 0xA094, 0xC819, 0xA095, 0xC81A, 0xA096, 0xC81B, 0xA097, + 0xC81C, 0xC1A6, 0xC81D, 0xC1A7, 0xC81E, 0xA098, 0xC81F, 0xA099, 0xC820, 0xC1A8, 0xC821, 0xA09A, 0xC822, 0xA09B, 0xC823, 0xA09C, + 0xC824, 0xC1A9, 0xC825, 0xA09D, 0xC826, 0xA09E, 0xC827, 0xA09F, 0xC828, 0xA0A0, 0xC829, 0xA0A1, 0xC82A, 0xA0A2, 0xC82B, 0xA0A3, + 0xC82C, 0xC1AA, 0xC82D, 0xC1AB, 0xC82E, 0xA0A4, 0xC82F, 0xC1AC, 0xC830, 0xA0A5, 0xC831, 0xC1AD, 0xC832, 0xA0A6, 0xC833, 0xA0A7, + 0xC834, 0xA0A8, 0xC835, 0xA0A9, 0xC836, 0xA0AA, 0xC837, 0xA0AB, 0xC838, 0xC1AE, 0xC839, 0xA0AC, 0xC83A, 0xA0AD, 0xC83B, 0xA0AE, + 0xC83C, 0xC1AF, 0xC83D, 0xA0AF, 0xC83E, 0xA0B0, 0xC83F, 0xA0B1, 0xC840, 0xC1B0, 0xC841, 0xA0B2, 0xC842, 0xA0B3, 0xC843, 0xA0B4, + 0xC844, 0xA0B5, 0xC845, 0xA0B6, 0xC846, 0xA0B7, 0xC847, 0xA0B8, 0xC848, 0xC1B1, 0xC849, 0xC1B2, 0xC84A, 0xA0B9, 0xC84B, 0xA0BA, + 0xC84C, 0xC1B3, 0xC84D, 0xC1B4, 0xC84E, 0xA0BB, 0xC84F, 0xA0BC, 0xC850, 0xA0BD, 0xC851, 0xA0BE, 0xC852, 0xA0BF, 0xC853, 0xA0C0, + 0xC854, 0xC1B5, 0xC855, 0xA0C1, 0xC856, 0xA0C2, 0xC857, 0xA0C3, 0xC858, 0xA0C4, 0xC859, 0xA0C5, 0xC85A, 0xA0C6, 0xC85B, 0xA0C7, + 0xC85C, 0xA0C8, 0xC85D, 0xA0C9, 0xC85E, 0xA0CA, 0xC85F, 0xA0CB, 0xC860, 0xA0CC, 0xC861, 0xA0CD, 0xC862, 0xA0CE, 0xC863, 0xA0CF, + 0xC864, 0xA0D0, 0xC865, 0xA0D1, 0xC866, 0xA0D2, 0xC867, 0xA0D3, 0xC868, 0xA0D4, 0xC869, 0xA0D5, 0xC86A, 0xA0D6, 0xC86B, 0xA0D7, + 0xC86C, 0xA0D8, 0xC86D, 0xA0D9, 0xC86E, 0xA0DA, 0xC86F, 0xA0DB, 0xC870, 0xC1B6, 0xC871, 0xC1B7, 0xC872, 0xA0DC, 0xC873, 0xA0DD, + 0xC874, 0xC1B8, 0xC875, 0xA0DE, 0xC876, 0xA0DF, 0xC877, 0xA0E0, 0xC878, 0xC1B9, 0xC879, 0xA0E1, 0xC87A, 0xC1BA, 0xC87B, 0xA0E2, + 0xC87C, 0xA0E3, 0xC87D, 0xA0E4, 0xC87E, 0xA0E5, 0xC87F, 0xA0E6, 0xC880, 0xC1BB, 0xC881, 0xC1BC, 0xC882, 0xA0E7, 0xC883, 0xC1BD, + 0xC884, 0xA0E8, 0xC885, 0xC1BE, 0xC886, 0xC1BF, 0xC887, 0xC1C0, 0xC888, 0xA0E9, 0xC889, 0xA0EA, 0xC88A, 0xA0EB, 0xC88B, 0xC1C1, + 0xC88C, 0xC1C2, 0xC88D, 0xC1C3, 0xC88E, 0xA0EC, 0xC88F, 0xA0ED, 0xC890, 0xA0EE, 0xC891, 0xA0EF, 0xC892, 0xA0F0, 0xC893, 0xA0F1, + 0xC894, 0xC1C4, 0xC895, 0xA0F2, 0xC896, 0xA0F3, 0xC897, 0xA0F4, 0xC898, 0xA0F5, 0xC899, 0xA0F6, 0xC89A, 0xA0F7, 0xC89B, 0xA0F8, + 0xC89C, 0xA0F9, 0xC89D, 0xC1C5, 0xC89E, 0xA0FA, 0xC89F, 0xC1C6, 0xC8A0, 0xA0FB, 0xC8A1, 0xC1C7, 0xC8A2, 0xA0FC, 0xC8A3, 0xA0FD, + 0xC8A4, 0xA0FE, 0xC8A5, 0xA141, 0xC8A6, 0xA142, 0xC8A7, 0xA143, 0xC8A8, 0xC1C8, 0xC8A9, 0xA144, 0xC8AA, 0xA145, 0xC8AB, 0xA146, + 0xC8AC, 0xA147, 0xC8AD, 0xA148, 0xC8AE, 0xA149, 0xC8AF, 0xA14A, 0xC8B0, 0xA14B, 0xC8B1, 0xA14C, 0xC8B2, 0xA14D, 0xC8B3, 0xA14E, + 0xC8B4, 0xA14F, 0xC8B5, 0xA150, 0xC8B6, 0xA151, 0xC8B7, 0xA152, 0xC8B8, 0xA153, 0xC8B9, 0xA154, 0xC8BA, 0xA155, 0xC8BB, 0xA156, + 0xC8BC, 0xC1C9, 0xC8BD, 0xC1CA, 0xC8BE, 0xA157, 0xC8BF, 0xA158, 0xC8C0, 0xA159, 0xC8C1, 0xA15A, 0xC8C2, 0xA161, 0xC8C3, 0xA162, + 0xC8C4, 0xC1CB, 0xC8C5, 0xA163, 0xC8C6, 0xA164, 0xC8C7, 0xA165, 0xC8C8, 0xC1CC, 0xC8C9, 0xA166, 0xC8CA, 0xA167, 0xC8CB, 0xA168, + 0xC8CC, 0xC1CD, 0xC8CD, 0xA169, 0xC8CE, 0xA16A, 0xC8CF, 0xA16B, 0xC8D0, 0xA16C, 0xC8D1, 0xA16D, 0xC8D2, 0xA16E, 0xC8D3, 0xA16F, + 0xC8D4, 0xC1CE, 0xC8D5, 0xC1CF, 0xC8D6, 0xA170, 0xC8D7, 0xC1D0, 0xC8D8, 0xA171, 0xC8D9, 0xC1D1, 0xC8DA, 0xA172, 0xC8DB, 0xA173, + 0xC8DC, 0xA174, 0xC8DD, 0xA175, 0xC8DE, 0xA176, 0xC8DF, 0xA177, 0xC8E0, 0xC1D2, 0xC8E1, 0xC1D3, 0xC8E2, 0xA178, 0xC8E3, 0xA179, + 0xC8E4, 0xC1D4, 0xC8E5, 0xA17A, 0xC8E6, 0xA181, 0xC8E7, 0xA182, 0xC8E8, 0xA183, 0xC8E9, 0xA184, 0xC8EA, 0xA185, 0xC8EB, 0xA186, + 0xC8EC, 0xA187, 0xC8ED, 0xA188, 0xC8EE, 0xA189, 0xC8EF, 0xA18A, 0xC8F0, 0xA18B, 0xC8F1, 0xA18C, 0xC8F2, 0xA18D, 0xC8F3, 0xA18E, + 0xC8F4, 0xA18F, 0xC8F5, 0xC1D5, 0xC8F6, 0xA190, 0xC8F7, 0xA191, 0xC8F8, 0xA192, 0xC8F9, 0xA193, 0xC8FA, 0xA194, 0xC8FB, 0xA195, + 0xC8FC, 0xC1D6, 0xC8FD, 0xC1D7, 0xC8FE, 0xA196, 0xC8FF, 0xA197, 0xC900, 0xC1D8, 0xC901, 0xA198, 0xC902, 0xA199, 0xC903, 0xA19A, + 0xC904, 0xC1D9, 0xC905, 0xC1DA, 0xC906, 0xC1DB, 0xC907, 0xA19B, 0xC908, 0xA19C, 0xC909, 0xA19D, 0xC90A, 0xA19E, 0xC90B, 0xA19F, + 0xC90C, 0xC1DC, 0xC90D, 0xC1DD, 0xC90E, 0xA1A0, 0xC90F, 0xC1DE, 0xC910, 0xA241, 0xC911, 0xC1DF, 0xC912, 0xA242, 0xC913, 0xA243, + 0xC914, 0xA244, 0xC915, 0xA245, 0xC916, 0xA246, 0xC917, 0xA247, 0xC918, 0xC1E0, 0xC919, 0xA248, 0xC91A, 0xA249, 0xC91B, 0xA24A, + 0xC91C, 0xA24B, 0xC91D, 0xA24C, 0xC91E, 0xA24D, 0xC91F, 0xA24E, 0xC920, 0xA24F, 0xC921, 0xA250, 0xC922, 0xA251, 0xC923, 0xA252, + 0xC924, 0xA253, 0xC925, 0xA254, 0xC926, 0xA255, 0xC927, 0xA256, 0xC928, 0xA257, 0xC929, 0xA258, 0xC92A, 0xA259, 0xC92B, 0xA25A, + 0xC92C, 0xC1E1, 0xC92D, 0xA261, 0xC92E, 0xA262, 0xC92F, 0xA263, 0xC930, 0xA264, 0xC931, 0xA265, 0xC932, 0xA266, 0xC933, 0xA267, + 0xC934, 0xC1E2, 0xC935, 0xA268, 0xC936, 0xA269, 0xC937, 0xA26A, 0xC938, 0xA26B, 0xC939, 0xA26C, 0xC93A, 0xA26D, 0xC93B, 0xA26E, + 0xC93C, 0xA26F, 0xC93D, 0xA270, 0xC93E, 0xA271, 0xC93F, 0xA272, 0xC940, 0xA273, 0xC941, 0xA274, 0xC942, 0xA275, 0xC943, 0xA276, + 0xC944, 0xA277, 0xC945, 0xA278, 0xC946, 0xA279, 0xC947, 0xA27A, 0xC948, 0xA281, 0xC949, 0xA282, 0xC94A, 0xA283, 0xC94B, 0xA284, + 0xC94C, 0xA285, 0xC94D, 0xA286, 0xC94E, 0xA287, 0xC94F, 0xA288, 0xC950, 0xC1E3, 0xC951, 0xC1E4, 0xC952, 0xA289, 0xC953, 0xA28A, + 0xC954, 0xC1E5, 0xC955, 0xA28B, 0xC956, 0xA28C, 0xC957, 0xA28D, 0xC958, 0xC1E6, 0xC959, 0xA28E, 0xC95A, 0xA28F, 0xC95B, 0xA290, + 0xC95C, 0xA291, 0xC95D, 0xA292, 0xC95E, 0xA293, 0xC95F, 0xA294, 0xC960, 0xC1E7, 0xC961, 0xC1E8, 0xC962, 0xA295, 0xC963, 0xC1E9, + 0xC964, 0xA296, 0xC965, 0xA297, 0xC966, 0xA298, 0xC967, 0xA299, 0xC968, 0xA29A, 0xC969, 0xA29B, 0xC96A, 0xA29C, 0xC96B, 0xA29D, + 0xC96C, 0xC1EA, 0xC96D, 0xA29E, 0xC96E, 0xA29F, 0xC96F, 0xA2A0, 0xC970, 0xC1EB, 0xC971, 0xA341, 0xC972, 0xA342, 0xC973, 0xA343, + 0xC974, 0xC1EC, 0xC975, 0xA344, 0xC976, 0xA345, 0xC977, 0xA346, 0xC978, 0xA347, 0xC979, 0xA348, 0xC97A, 0xA349, 0xC97B, 0xA34A, + 0xC97C, 0xC1ED, 0xC97D, 0xA34B, 0xC97E, 0xA34C, 0xC97F, 0xA34D, 0xC980, 0xA34E, 0xC981, 0xA34F, 0xC982, 0xA350, 0xC983, 0xA351, + 0xC984, 0xA352, 0xC985, 0xA353, 0xC986, 0xA354, 0xC987, 0xA355, 0xC988, 0xC1EE, 0xC989, 0xC1EF, 0xC98A, 0xA356, 0xC98B, 0xA357, + 0xC98C, 0xC1F0, 0xC98D, 0xA358, 0xC98E, 0xA359, 0xC98F, 0xA35A, 0xC990, 0xC1F1, 0xC991, 0xA361, 0xC992, 0xA362, 0xC993, 0xA363, + 0xC994, 0xA364, 0xC995, 0xA365, 0xC996, 0xA366, 0xC997, 0xA367, 0xC998, 0xC1F2, 0xC999, 0xC1F3, 0xC99A, 0xA368, 0xC99B, 0xC1F4, + 0xC99C, 0xA369, 0xC99D, 0xC1F5, 0xC99E, 0xA36A, 0xC99F, 0xA36B, 0xC9A0, 0xA36C, 0xC9A1, 0xA36D, 0xC9A2, 0xA36E, 0xC9A3, 0xA36F, + 0xC9A4, 0xA370, 0xC9A5, 0xA371, 0xC9A6, 0xA372, 0xC9A7, 0xA373, 0xC9A8, 0xA374, 0xC9A9, 0xA375, 0xC9AA, 0xA376, 0xC9AB, 0xA377, + 0xC9AC, 0xA378, 0xC9AD, 0xA379, 0xC9AE, 0xA37A, 0xC9AF, 0xA381, 0xC9B0, 0xA382, 0xC9B1, 0xA383, 0xC9B2, 0xA384, 0xC9B3, 0xA385, + 0xC9B4, 0xA386, 0xC9B5, 0xA387, 0xC9B6, 0xA388, 0xC9B7, 0xA389, 0xC9B8, 0xA38A, 0xC9B9, 0xA38B, 0xC9BA, 0xA38C, 0xC9BB, 0xA38D, + 0xC9BC, 0xA38E, 0xC9BD, 0xA38F, 0xC9BE, 0xA390, 0xC9BF, 0xA391, 0xC9C0, 0xC1F6, 0xC9C1, 0xC1F7, 0xC9C2, 0xA392, 0xC9C3, 0xA393, + 0xC9C4, 0xC1F8, 0xC9C5, 0xA394, 0xC9C6, 0xA395, 0xC9C7, 0xC1F9, 0xC9C8, 0xC1FA, 0xC9C9, 0xA396, 0xC9CA, 0xC1FB, 0xC9CB, 0xA397, + 0xC9CC, 0xA398, 0xC9CD, 0xA399, 0xC9CE, 0xA39A, 0xC9CF, 0xA39B, 0xC9D0, 0xC1FC, 0xC9D1, 0xC1FD, 0xC9D2, 0xA39C, 0xC9D3, 0xC1FE, + 0xC9D4, 0xA39D, 0xC9D5, 0xC2A1, 0xC9D6, 0xC2A2, 0xC9D7, 0xA39E, 0xC9D8, 0xA39F, 0xC9D9, 0xC2A3, 0xC9DA, 0xC2A4, 0xC9DB, 0xA3A0, + 0xC9DC, 0xC2A5, 0xC9DD, 0xC2A6, 0xC9DE, 0xA441, 0xC9DF, 0xA442, 0xC9E0, 0xC2A7, 0xC9E1, 0xA443, 0xC9E2, 0xC2A8, 0xC9E3, 0xA444, + 0xC9E4, 0xC2A9, 0xC9E5, 0xA445, 0xC9E6, 0xA446, 0xC9E7, 0xC2AA, 0xC9E8, 0xA447, 0xC9E9, 0xA448, 0xC9EA, 0xA449, 0xC9EB, 0xA44A, + 0xC9EC, 0xC2AB, 0xC9ED, 0xC2AC, 0xC9EE, 0xA44B, 0xC9EF, 0xC2AD, 0xC9F0, 0xC2AE, 0xC9F1, 0xC2AF, 0xC9F2, 0xA44C, 0xC9F3, 0xA44D, + 0xC9F4, 0xA44E, 0xC9F5, 0xA44F, 0xC9F6, 0xA450, 0xC9F7, 0xA451, 0xC9F8, 0xC2B0, 0xC9F9, 0xC2B1, 0xC9FA, 0xA452, 0xC9FB, 0xA453, + 0xC9FC, 0xC2B2, 0xC9FD, 0xA454, 0xC9FE, 0xA455, 0xC9FF, 0xA456, 0xCA00, 0xC2B3, 0xCA01, 0xA457, 0xCA02, 0xA458, 0xCA03, 0xA459, + 0xCA04, 0xA45A, 0xCA05, 0xA461, 0xCA06, 0xA462, 0xCA07, 0xA463, 0xCA08, 0xC2B4, 0xCA09, 0xC2B5, 0xCA0A, 0xA464, 0xCA0B, 0xC2B6, + 0xCA0C, 0xC2B7, 0xCA0D, 0xC2B8, 0xCA0E, 0xA465, 0xCA0F, 0xA466, 0xCA10, 0xA467, 0xCA11, 0xA468, 0xCA12, 0xA469, 0xCA13, 0xA46A, + 0xCA14, 0xC2B9, 0xCA15, 0xA46B, 0xCA16, 0xA46C, 0xCA17, 0xA46D, 0xCA18, 0xC2BA, 0xCA19, 0xA46E, 0xCA1A, 0xA46F, 0xCA1B, 0xA470, + 0xCA1C, 0xA471, 0xCA1D, 0xA472, 0xCA1E, 0xA473, 0xCA1F, 0xA474, 0xCA20, 0xA475, 0xCA21, 0xA476, 0xCA22, 0xA477, 0xCA23, 0xA478, + 0xCA24, 0xA479, 0xCA25, 0xA47A, 0xCA26, 0xA481, 0xCA27, 0xA482, 0xCA28, 0xA483, 0xCA29, 0xC2BB, 0xCA2A, 0xA484, 0xCA2B, 0xA485, + 0xCA2C, 0xA486, 0xCA2D, 0xA487, 0xCA2E, 0xA488, 0xCA2F, 0xA489, 0xCA30, 0xA48A, 0xCA31, 0xA48B, 0xCA32, 0xA48C, 0xCA33, 0xA48D, + 0xCA34, 0xA48E, 0xCA35, 0xA48F, 0xCA36, 0xA490, 0xCA37, 0xA491, 0xCA38, 0xA492, 0xCA39, 0xA493, 0xCA3A, 0xA494, 0xCA3B, 0xA495, + 0xCA3C, 0xA496, 0xCA3D, 0xA497, 0xCA3E, 0xA498, 0xCA3F, 0xA499, 0xCA40, 0xA49A, 0xCA41, 0xA49B, 0xCA42, 0xA49C, 0xCA43, 0xA49D, + 0xCA44, 0xA49E, 0xCA45, 0xA49F, 0xCA46, 0xA4A0, 0xCA47, 0xA541, 0xCA48, 0xA542, 0xCA49, 0xA543, 0xCA4A, 0xA544, 0xCA4B, 0xA545, + 0xCA4C, 0xC2BC, 0xCA4D, 0xC2BD, 0xCA4E, 0xA546, 0xCA4F, 0xA547, 0xCA50, 0xC2BE, 0xCA51, 0xA548, 0xCA52, 0xA549, 0xCA53, 0xA54A, + 0xCA54, 0xC2BF, 0xCA55, 0xA54B, 0xCA56, 0xA54C, 0xCA57, 0xA54D, 0xCA58, 0xA54E, 0xCA59, 0xA54F, 0xCA5A, 0xA550, 0xCA5B, 0xA551, + 0xCA5C, 0xC2C0, 0xCA5D, 0xC2C1, 0xCA5E, 0xA552, 0xCA5F, 0xC2C2, 0xCA60, 0xC2C3, 0xCA61, 0xC2C4, 0xCA62, 0xA553, 0xCA63, 0xA554, + 0xCA64, 0xA555, 0xCA65, 0xA556, 0xCA66, 0xA557, 0xCA67, 0xA558, 0xCA68, 0xC2C5, 0xCA69, 0xA559, 0xCA6A, 0xA55A, 0xCA6B, 0xA561, + 0xCA6C, 0xA562, 0xCA6D, 0xA563, 0xCA6E, 0xA564, 0xCA6F, 0xA565, 0xCA70, 0xA566, 0xCA71, 0xA567, 0xCA72, 0xA568, 0xCA73, 0xA569, + 0xCA74, 0xA56A, 0xCA75, 0xA56B, 0xCA76, 0xA56C, 0xCA77, 0xA56D, 0xCA78, 0xA56E, 0xCA79, 0xA56F, 0xCA7A, 0xA570, 0xCA7B, 0xA571, + 0xCA7C, 0xA572, 0xCA7D, 0xC2C6, 0xCA7E, 0xA573, 0xCA7F, 0xA574, 0xCA80, 0xA575, 0xCA81, 0xA576, 0xCA82, 0xA577, 0xCA83, 0xA578, + 0xCA84, 0xC2C7, 0xCA85, 0xA579, 0xCA86, 0xA57A, 0xCA87, 0xA581, 0xCA88, 0xA582, 0xCA89, 0xA583, 0xCA8A, 0xA584, 0xCA8B, 0xA585, + 0xCA8C, 0xA586, 0xCA8D, 0xA587, 0xCA8E, 0xA588, 0xCA8F, 0xA589, 0xCA90, 0xA58A, 0xCA91, 0xA58B, 0xCA92, 0xA58C, 0xCA93, 0xA58D, + 0xCA94, 0xA58E, 0xCA95, 0xA58F, 0xCA96, 0xA590, 0xCA97, 0xA591, 0xCA98, 0xC2C8, 0xCA99, 0xA592, 0xCA9A, 0xA593, 0xCA9B, 0xA594, + 0xCA9C, 0xA595, 0xCA9D, 0xA596, 0xCA9E, 0xA597, 0xCA9F, 0xA598, 0xCAA0, 0xA599, 0xCAA1, 0xA59A, 0xCAA2, 0xA59B, 0xCAA3, 0xA59C, + 0xCAA4, 0xA59D, 0xCAA5, 0xA59E, 0xCAA6, 0xA59F, 0xCAA7, 0xA5A0, 0xCAA8, 0xA641, 0xCAA9, 0xA642, 0xCAAA, 0xA643, 0xCAAB, 0xA644, + 0xCAAC, 0xA645, 0xCAAD, 0xA646, 0xCAAE, 0xA647, 0xCAAF, 0xA648, 0xCAB0, 0xA649, 0xCAB1, 0xA64A, 0xCAB2, 0xA64B, 0xCAB3, 0xA64C, + 0xCAB4, 0xA64D, 0xCAB5, 0xA64E, 0xCAB6, 0xA64F, 0xCAB7, 0xA650, 0xCAB8, 0xA651, 0xCAB9, 0xA652, 0xCABA, 0xA653, 0xCABB, 0xA654, + 0xCABC, 0xC2C9, 0xCABD, 0xC2CA, 0xCABE, 0xA655, 0xCABF, 0xA656, 0xCAC0, 0xC2CB, 0xCAC1, 0xA657, 0xCAC2, 0xA658, 0xCAC3, 0xA659, + 0xCAC4, 0xC2CC, 0xCAC5, 0xA65A, 0xCAC6, 0xA661, 0xCAC7, 0xA662, 0xCAC8, 0xA663, 0xCAC9, 0xA664, 0xCACA, 0xA665, 0xCACB, 0xA666, + 0xCACC, 0xC2CD, 0xCACD, 0xC2CE, 0xCACE, 0xA667, 0xCACF, 0xC2CF, 0xCAD0, 0xA668, 0xCAD1, 0xC2D0, 0xCAD2, 0xA669, 0xCAD3, 0xC2D1, + 0xCAD4, 0xA66A, 0xCAD5, 0xA66B, 0xCAD6, 0xA66C, 0xCAD7, 0xA66D, 0xCAD8, 0xC2D2, 0xCAD9, 0xC2D3, 0xCADA, 0xA66E, 0xCADB, 0xA66F, + 0xCADC, 0xA670, 0xCADD, 0xA671, 0xCADE, 0xA672, 0xCADF, 0xA673, 0xCAE0, 0xC2D4, 0xCAE1, 0xA674, 0xCAE2, 0xA675, 0xCAE3, 0xA676, + 0xCAE4, 0xA677, 0xCAE5, 0xA678, 0xCAE6, 0xA679, 0xCAE7, 0xA67A, 0xCAE8, 0xA681, 0xCAE9, 0xA682, 0xCAEA, 0xA683, 0xCAEB, 0xA684, + 0xCAEC, 0xC2D5, 0xCAED, 0xA685, 0xCAEE, 0xA686, 0xCAEF, 0xA687, 0xCAF0, 0xA688, 0xCAF1, 0xA689, 0xCAF2, 0xA68A, 0xCAF3, 0xA68B, + 0xCAF4, 0xC2D6, 0xCAF5, 0xA68C, 0xCAF6, 0xA68D, 0xCAF7, 0xA68E, 0xCAF8, 0xA68F, 0xCAF9, 0xA690, 0xCAFA, 0xA691, 0xCAFB, 0xA692, + 0xCAFC, 0xA693, 0xCAFD, 0xA694, 0xCAFE, 0xA695, 0xCAFF, 0xA696, 0xCB00, 0xA697, 0xCB01, 0xA698, 0xCB02, 0xA699, 0xCB03, 0xA69A, + 0xCB04, 0xA69B, 0xCB05, 0xA69C, 0xCB06, 0xA69D, 0xCB07, 0xA69E, 0xCB08, 0xC2D7, 0xCB09, 0xA69F, 0xCB0A, 0xA6A0, 0xCB0B, 0xA741, + 0xCB0C, 0xA742, 0xCB0D, 0xA743, 0xCB0E, 0xA744, 0xCB0F, 0xA745, 0xCB10, 0xC2D8, 0xCB11, 0xA746, 0xCB12, 0xA747, 0xCB13, 0xA748, + 0xCB14, 0xC2D9, 0xCB15, 0xA749, 0xCB16, 0xA74A, 0xCB17, 0xA74B, 0xCB18, 0xC2DA, 0xCB19, 0xA74C, 0xCB1A, 0xA74D, 0xCB1B, 0xA74E, + 0xCB1C, 0xA74F, 0xCB1D, 0xA750, 0xCB1E, 0xA751, 0xCB1F, 0xA752, 0xCB20, 0xC2DB, 0xCB21, 0xC2DC, 0xCB22, 0xA753, 0xCB23, 0xA754, + 0xCB24, 0xA755, 0xCB25, 0xA756, 0xCB26, 0xA757, 0xCB27, 0xA758, 0xCB28, 0xA759, 0xCB29, 0xA75A, 0xCB2A, 0xA761, 0xCB2B, 0xA762, + 0xCB2C, 0xA763, 0xCB2D, 0xA764, 0xCB2E, 0xA765, 0xCB2F, 0xA766, 0xCB30, 0xA767, 0xCB31, 0xA768, 0xCB32, 0xA769, 0xCB33, 0xA76A, + 0xCB34, 0xA76B, 0xCB35, 0xA76C, 0xCB36, 0xA76D, 0xCB37, 0xA76E, 0xCB38, 0xA76F, 0xCB39, 0xA770, 0xCB3A, 0xA771, 0xCB3B, 0xA772, + 0xCB3C, 0xA773, 0xCB3D, 0xA774, 0xCB3E, 0xA775, 0xCB3F, 0xA776, 0xCB40, 0xA777, 0xCB41, 0xC2DD, 0xCB42, 0xA778, 0xCB43, 0xA779, + 0xCB44, 0xA77A, 0xCB45, 0xA781, 0xCB46, 0xA782, 0xCB47, 0xA783, 0xCB48, 0xC2DE, 0xCB49, 0xC2DF, 0xCB4A, 0xA784, 0xCB4B, 0xA785, + 0xCB4C, 0xC2E0, 0xCB4D, 0xA786, 0xCB4E, 0xA787, 0xCB4F, 0xA788, 0xCB50, 0xC2E1, 0xCB51, 0xA789, 0xCB52, 0xA78A, 0xCB53, 0xA78B, + 0xCB54, 0xA78C, 0xCB55, 0xA78D, 0xCB56, 0xA78E, 0xCB57, 0xA78F, 0xCB58, 0xC2E2, 0xCB59, 0xC2E3, 0xCB5A, 0xA790, 0xCB5B, 0xA791, + 0xCB5C, 0xA792, 0xCB5D, 0xC2E4, 0xCB5E, 0xA793, 0xCB5F, 0xA794, 0xCB60, 0xA795, 0xCB61, 0xA796, 0xCB62, 0xA797, 0xCB63, 0xA798, + 0xCB64, 0xC2E5, 0xCB65, 0xA799, 0xCB66, 0xA79A, 0xCB67, 0xA79B, 0xCB68, 0xA79C, 0xCB69, 0xA79D, 0xCB6A, 0xA79E, 0xCB6B, 0xA79F, + 0xCB6C, 0xA7A0, 0xCB6D, 0xA841, 0xCB6E, 0xA842, 0xCB6F, 0xA843, 0xCB70, 0xA844, 0xCB71, 0xA845, 0xCB72, 0xA846, 0xCB73, 0xA847, + 0xCB74, 0xA848, 0xCB75, 0xA849, 0xCB76, 0xA84A, 0xCB77, 0xA84B, 0xCB78, 0xC2E6, 0xCB79, 0xC2E7, 0xCB7A, 0xA84C, 0xCB7B, 0xA84D, + 0xCB7C, 0xA84E, 0xCB7D, 0xA84F, 0xCB7E, 0xA850, 0xCB7F, 0xA851, 0xCB80, 0xA852, 0xCB81, 0xA853, 0xCB82, 0xA854, 0xCB83, 0xA855, + 0xCB84, 0xA856, 0xCB85, 0xA857, 0xCB86, 0xA858, 0xCB87, 0xA859, 0xCB88, 0xA85A, 0xCB89, 0xA861, 0xCB8A, 0xA862, 0xCB8B, 0xA863, + 0xCB8C, 0xA864, 0xCB8D, 0xA865, 0xCB8E, 0xA866, 0xCB8F, 0xA867, 0xCB90, 0xA868, 0xCB91, 0xA869, 0xCB92, 0xA86A, 0xCB93, 0xA86B, + 0xCB94, 0xA86C, 0xCB95, 0xA86D, 0xCB96, 0xA86E, 0xCB97, 0xA86F, 0xCB98, 0xA870, 0xCB99, 0xA871, 0xCB9A, 0xA872, 0xCB9B, 0xA873, + 0xCB9C, 0xC2E8, 0xCB9D, 0xA874, 0xCB9E, 0xA875, 0xCB9F, 0xA876, 0xCBA0, 0xA877, 0xCBA1, 0xA878, 0xCBA2, 0xA879, 0xCBA3, 0xA87A, + 0xCBA4, 0xA881, 0xCBA5, 0xA882, 0xCBA6, 0xA883, 0xCBA7, 0xA884, 0xCBA8, 0xA885, 0xCBA9, 0xA886, 0xCBAA, 0xA887, 0xCBAB, 0xA888, + 0xCBAC, 0xA889, 0xCBAD, 0xA88A, 0xCBAE, 0xA88B, 0xCBAF, 0xA88C, 0xCBB0, 0xA88D, 0xCBB1, 0xA88E, 0xCBB2, 0xA88F, 0xCBB3, 0xA890, + 0xCBB4, 0xA891, 0xCBB5, 0xA892, 0xCBB6, 0xA893, 0xCBB7, 0xA894, 0xCBB8, 0xC2E9, 0xCBB9, 0xA895, 0xCBBA, 0xA896, 0xCBBB, 0xA897, + 0xCBBC, 0xA898, 0xCBBD, 0xA899, 0xCBBE, 0xA89A, 0xCBBF, 0xA89B, 0xCBC0, 0xA89C, 0xCBC1, 0xA89D, 0xCBC2, 0xA89E, 0xCBC3, 0xA89F, + 0xCBC4, 0xA8A0, 0xCBC5, 0xA941, 0xCBC6, 0xA942, 0xCBC7, 0xA943, 0xCBC8, 0xA944, 0xCBC9, 0xA945, 0xCBCA, 0xA946, 0xCBCB, 0xA947, + 0xCBCC, 0xA948, 0xCBCD, 0xA949, 0xCBCE, 0xA94A, 0xCBCF, 0xA94B, 0xCBD0, 0xA94C, 0xCBD1, 0xA94D, 0xCBD2, 0xA94E, 0xCBD3, 0xA94F, + 0xCBD4, 0xC2EA, 0xCBD5, 0xA950, 0xCBD6, 0xA951, 0xCBD7, 0xA952, 0xCBD8, 0xA953, 0xCBD9, 0xA954, 0xCBDA, 0xA955, 0xCBDB, 0xA956, + 0xCBDC, 0xA957, 0xCBDD, 0xA958, 0xCBDE, 0xA959, 0xCBDF, 0xA95A, 0xCBE0, 0xA961, 0xCBE1, 0xA962, 0xCBE2, 0xA963, 0xCBE3, 0xA964, + 0xCBE4, 0xC2EB, 0xCBE5, 0xA965, 0xCBE6, 0xA966, 0xCBE7, 0xC2EC, 0xCBE8, 0xA967, 0xCBE9, 0xC2ED, 0xCBEA, 0xA968, 0xCBEB, 0xA969, + 0xCBEC, 0xA96A, 0xCBED, 0xA96B, 0xCBEE, 0xA96C, 0xCBEF, 0xA96D, 0xCBF0, 0xA96E, 0xCBF1, 0xA96F, 0xCBF2, 0xA970, 0xCBF3, 0xA971, + 0xCBF4, 0xA972, 0xCBF5, 0xA973, 0xCBF6, 0xA974, 0xCBF7, 0xA975, 0xCBF8, 0xA976, 0xCBF9, 0xA977, 0xCBFA, 0xA978, 0xCBFB, 0xA979, + 0xCBFC, 0xA97A, 0xCBFD, 0xA981, 0xCBFE, 0xA982, 0xCBFF, 0xA983, 0xCC00, 0xA984, 0xCC01, 0xA985, 0xCC02, 0xA986, 0xCC03, 0xA987, + 0xCC04, 0xA988, 0xCC05, 0xA989, 0xCC06, 0xA98A, 0xCC07, 0xA98B, 0xCC08, 0xA98C, 0xCC09, 0xA98D, 0xCC0A, 0xA98E, 0xCC0B, 0xA98F, + 0xCC0C, 0xC2EE, 0xCC0D, 0xC2EF, 0xCC0E, 0xA990, 0xCC0F, 0xA991, 0xCC10, 0xC2F0, 0xCC11, 0xA992, 0xCC12, 0xA993, 0xCC13, 0xA994, + 0xCC14, 0xC2F1, 0xCC15, 0xA995, 0xCC16, 0xA996, 0xCC17, 0xA997, 0xCC18, 0xA998, 0xCC19, 0xA999, 0xCC1A, 0xA99A, 0xCC1B, 0xA99B, + 0xCC1C, 0xC2F2, 0xCC1D, 0xC2F3, 0xCC1E, 0xA99C, 0xCC1F, 0xA99D, 0xCC20, 0xA99E, 0xCC21, 0xC2F4, 0xCC22, 0xC2F5, 0xCC23, 0xA99F, + 0xCC24, 0xA9A0, 0xCC25, 0xAA41, 0xCC26, 0xAA42, 0xCC27, 0xC2F6, 0xCC28, 0xC2F7, 0xCC29, 0xC2F8, 0xCC2A, 0xAA43, 0xCC2B, 0xAA44, + 0xCC2C, 0xC2F9, 0xCC2D, 0xAA45, 0xCC2E, 0xC2FA, 0xCC2F, 0xAA46, 0xCC30, 0xC2FB, 0xCC31, 0xAA47, 0xCC32, 0xAA48, 0xCC33, 0xAA49, + 0xCC34, 0xAA4A, 0xCC35, 0xAA4B, 0xCC36, 0xAA4C, 0xCC37, 0xAA4D, 0xCC38, 0xC2FC, 0xCC39, 0xC2FD, 0xCC3A, 0xAA4E, 0xCC3B, 0xC2FE, + 0xCC3C, 0xC3A1, 0xCC3D, 0xC3A2, 0xCC3E, 0xC3A3, 0xCC3F, 0xAA4F, 0xCC40, 0xAA50, 0xCC41, 0xAA51, 0xCC42, 0xAA52, 0xCC43, 0xAA53, + 0xCC44, 0xC3A4, 0xCC45, 0xC3A5, 0xCC46, 0xAA54, 0xCC47, 0xAA55, 0xCC48, 0xC3A6, 0xCC49, 0xAA56, 0xCC4A, 0xAA57, 0xCC4B, 0xAA58, + 0xCC4C, 0xC3A7, 0xCC4D, 0xAA59, 0xCC4E, 0xAA5A, 0xCC4F, 0xAA61, 0xCC50, 0xAA62, 0xCC51, 0xAA63, 0xCC52, 0xAA64, 0xCC53, 0xAA65, + 0xCC54, 0xC3A8, 0xCC55, 0xC3A9, 0xCC56, 0xAA66, 0xCC57, 0xC3AA, 0xCC58, 0xC3AB, 0xCC59, 0xC3AC, 0xCC5A, 0xAA67, 0xCC5B, 0xAA68, + 0xCC5C, 0xAA69, 0xCC5D, 0xAA6A, 0xCC5E, 0xAA6B, 0xCC5F, 0xAA6C, 0xCC60, 0xC3AD, 0xCC61, 0xAA6D, 0xCC62, 0xAA6E, 0xCC63, 0xAA6F, + 0xCC64, 0xC3AE, 0xCC65, 0xAA70, 0xCC66, 0xC3AF, 0xCC67, 0xAA71, 0xCC68, 0xC3B0, 0xCC69, 0xAA72, 0xCC6A, 0xAA73, 0xCC6B, 0xAA74, + 0xCC6C, 0xAA75, 0xCC6D, 0xAA76, 0xCC6E, 0xAA77, 0xCC6F, 0xAA78, 0xCC70, 0xC3B1, 0xCC71, 0xAA79, 0xCC72, 0xAA7A, 0xCC73, 0xAA81, + 0xCC74, 0xAA82, 0xCC75, 0xC3B2, 0xCC76, 0xAA83, 0xCC77, 0xAA84, 0xCC78, 0xAA85, 0xCC79, 0xAA86, 0xCC7A, 0xAA87, 0xCC7B, 0xAA88, + 0xCC7C, 0xAA89, 0xCC7D, 0xAA8A, 0xCC7E, 0xAA8B, 0xCC7F, 0xAA8C, 0xCC80, 0xAA8D, 0xCC81, 0xAA8E, 0xCC82, 0xAA8F, 0xCC83, 0xAA90, + 0xCC84, 0xAA91, 0xCC85, 0xAA92, 0xCC86, 0xAA93, 0xCC87, 0xAA94, 0xCC88, 0xAA95, 0xCC89, 0xAA96, 0xCC8A, 0xAA97, 0xCC8B, 0xAA98, + 0xCC8C, 0xAA99, 0xCC8D, 0xAA9A, 0xCC8E, 0xAA9B, 0xCC8F, 0xAA9C, 0xCC90, 0xAA9D, 0xCC91, 0xAA9E, 0xCC92, 0xAA9F, 0xCC93, 0xAAA0, + 0xCC94, 0xAB41, 0xCC95, 0xAB42, 0xCC96, 0xAB43, 0xCC97, 0xAB44, 0xCC98, 0xC3B3, 0xCC99, 0xC3B4, 0xCC9A, 0xAB45, 0xCC9B, 0xAB46, + 0xCC9C, 0xC3B5, 0xCC9D, 0xAB47, 0xCC9E, 0xAB48, 0xCC9F, 0xAB49, 0xCCA0, 0xC3B6, 0xCCA1, 0xAB4A, 0xCCA2, 0xAB4B, 0xCCA3, 0xAB4C, + 0xCCA4, 0xAB4D, 0xCCA5, 0xAB4E, 0xCCA6, 0xAB4F, 0xCCA7, 0xAB50, 0xCCA8, 0xC3B7, 0xCCA9, 0xC3B8, 0xCCAA, 0xAB51, 0xCCAB, 0xC3B9, + 0xCCAC, 0xC3BA, 0xCCAD, 0xC3BB, 0xCCAE, 0xAB52, 0xCCAF, 0xAB53, 0xCCB0, 0xAB54, 0xCCB1, 0xAB55, 0xCCB2, 0xAB56, 0xCCB3, 0xAB57, + 0xCCB4, 0xC3BC, 0xCCB5, 0xC3BD, 0xCCB6, 0xAB58, 0xCCB7, 0xAB59, 0xCCB8, 0xC3BE, 0xCCB9, 0xAB5A, 0xCCBA, 0xAB61, 0xCCBB, 0xAB62, + 0xCCBC, 0xC3BF, 0xCCBD, 0xAB63, 0xCCBE, 0xAB64, 0xCCBF, 0xAB65, 0xCCC0, 0xAB66, 0xCCC1, 0xAB67, 0xCCC2, 0xAB68, 0xCCC3, 0xAB69, + 0xCCC4, 0xC3C0, 0xCCC5, 0xC3C1, 0xCCC6, 0xAB6A, 0xCCC7, 0xC3C2, 0xCCC8, 0xAB6B, 0xCCC9, 0xC3C3, 0xCCCA, 0xAB6C, 0xCCCB, 0xAB6D, + 0xCCCC, 0xAB6E, 0xCCCD, 0xAB6F, 0xCCCE, 0xAB70, 0xCCCF, 0xAB71, 0xCCD0, 0xC3C4, 0xCCD1, 0xAB72, 0xCCD2, 0xAB73, 0xCCD3, 0xAB74, + 0xCCD4, 0xC3C5, 0xCCD5, 0xAB75, 0xCCD6, 0xAB76, 0xCCD7, 0xAB77, 0xCCD8, 0xAB78, 0xCCD9, 0xAB79, 0xCCDA, 0xAB7A, 0xCCDB, 0xAB81, + 0xCCDC, 0xAB82, 0xCCDD, 0xAB83, 0xCCDE, 0xAB84, 0xCCDF, 0xAB85, 0xCCE0, 0xAB86, 0xCCE1, 0xAB87, 0xCCE2, 0xAB88, 0xCCE3, 0xAB89, + 0xCCE4, 0xC3C6, 0xCCE5, 0xAB8A, 0xCCE6, 0xAB8B, 0xCCE7, 0xAB8C, 0xCCE8, 0xAB8D, 0xCCE9, 0xAB8E, 0xCCEA, 0xAB8F, 0xCCEB, 0xAB90, + 0xCCEC, 0xC3C7, 0xCCED, 0xAB91, 0xCCEE, 0xAB92, 0xCCEF, 0xAB93, 0xCCF0, 0xC3C8, 0xCCF1, 0xAB94, 0xCCF2, 0xAB95, 0xCCF3, 0xAB96, + 0xCCF4, 0xAB97, 0xCCF5, 0xAB98, 0xCCF6, 0xAB99, 0xCCF7, 0xAB9A, 0xCCF8, 0xAB9B, 0xCCF9, 0xAB9C, 0xCCFA, 0xAB9D, 0xCCFB, 0xAB9E, + 0xCCFC, 0xAB9F, 0xCCFD, 0xABA0, 0xCCFE, 0xAC41, 0xCCFF, 0xAC42, 0xCD00, 0xAC43, 0xCD01, 0xC3C9, 0xCD02, 0xAC44, 0xCD03, 0xAC45, + 0xCD04, 0xAC46, 0xCD05, 0xAC47, 0xCD06, 0xAC48, 0xCD07, 0xAC49, 0xCD08, 0xC3CA, 0xCD09, 0xC3CB, 0xCD0A, 0xAC4A, 0xCD0B, 0xAC4B, + 0xCD0C, 0xC3CC, 0xCD0D, 0xAC4C, 0xCD0E, 0xAC4D, 0xCD0F, 0xAC4E, 0xCD10, 0xC3CD, 0xCD11, 0xAC4F, 0xCD12, 0xAC50, 0xCD13, 0xAC51, + 0xCD14, 0xAC52, 0xCD15, 0xAC53, 0xCD16, 0xAC54, 0xCD17, 0xAC55, 0xCD18, 0xC3CE, 0xCD19, 0xC3CF, 0xCD1A, 0xAC56, 0xCD1B, 0xC3D0, + 0xCD1C, 0xAC57, 0xCD1D, 0xC3D1, 0xCD1E, 0xAC58, 0xCD1F, 0xAC59, 0xCD20, 0xAC5A, 0xCD21, 0xAC61, 0xCD22, 0xAC62, 0xCD23, 0xAC63, + 0xCD24, 0xC3D2, 0xCD25, 0xAC64, 0xCD26, 0xAC65, 0xCD27, 0xAC66, 0xCD28, 0xC3D3, 0xCD29, 0xAC67, 0xCD2A, 0xAC68, 0xCD2B, 0xAC69, + 0xCD2C, 0xC3D4, 0xCD2D, 0xAC6A, 0xCD2E, 0xAC6B, 0xCD2F, 0xAC6C, 0xCD30, 0xAC6D, 0xCD31, 0xAC6E, 0xCD32, 0xAC6F, 0xCD33, 0xAC70, + 0xCD34, 0xAC71, 0xCD35, 0xAC72, 0xCD36, 0xAC73, 0xCD37, 0xAC74, 0xCD38, 0xAC75, 0xCD39, 0xC3D5, 0xCD3A, 0xAC76, 0xCD3B, 0xAC77, + 0xCD3C, 0xAC78, 0xCD3D, 0xAC79, 0xCD3E, 0xAC7A, 0xCD3F, 0xAC81, 0xCD40, 0xAC82, 0xCD41, 0xAC83, 0xCD42, 0xAC84, 0xCD43, 0xAC85, + 0xCD44, 0xAC86, 0xCD45, 0xAC87, 0xCD46, 0xAC88, 0xCD47, 0xAC89, 0xCD48, 0xAC8A, 0xCD49, 0xAC8B, 0xCD4A, 0xAC8C, 0xCD4B, 0xAC8D, + 0xCD4C, 0xAC8E, 0xCD4D, 0xAC8F, 0xCD4E, 0xAC90, 0xCD4F, 0xAC91, 0xCD50, 0xAC92, 0xCD51, 0xAC93, 0xCD52, 0xAC94, 0xCD53, 0xAC95, + 0xCD54, 0xAC96, 0xCD55, 0xAC97, 0xCD56, 0xAC98, 0xCD57, 0xAC99, 0xCD58, 0xAC9A, 0xCD59, 0xAC9B, 0xCD5A, 0xAC9C, 0xCD5B, 0xAC9D, + 0xCD5C, 0xC3D6, 0xCD5D, 0xAC9E, 0xCD5E, 0xAC9F, 0xCD5F, 0xACA0, 0xCD60, 0xC3D7, 0xCD61, 0xAD41, 0xCD62, 0xAD42, 0xCD63, 0xAD43, + 0xCD64, 0xC3D8, 0xCD65, 0xAD44, 0xCD66, 0xAD45, 0xCD67, 0xAD46, 0xCD68, 0xAD47, 0xCD69, 0xAD48, 0xCD6A, 0xAD49, 0xCD6B, 0xAD4A, + 0xCD6C, 0xC3D9, 0xCD6D, 0xC3DA, 0xCD6E, 0xAD4B, 0xCD6F, 0xC3DB, 0xCD70, 0xAD4C, 0xCD71, 0xC3DC, 0xCD72, 0xAD4D, 0xCD73, 0xAD4E, + 0xCD74, 0xAD4F, 0xCD75, 0xAD50, 0xCD76, 0xAD51, 0xCD77, 0xAD52, 0xCD78, 0xC3DD, 0xCD79, 0xAD53, 0xCD7A, 0xAD54, 0xCD7B, 0xAD55, + 0xCD7C, 0xAD56, 0xCD7D, 0xAD57, 0xCD7E, 0xAD58, 0xCD7F, 0xAD59, 0xCD80, 0xAD5A, 0xCD81, 0xAD61, 0xCD82, 0xAD62, 0xCD83, 0xAD63, + 0xCD84, 0xAD64, 0xCD85, 0xAD65, 0xCD86, 0xAD66, 0xCD87, 0xAD67, 0xCD88, 0xC3DE, 0xCD89, 0xAD68, 0xCD8A, 0xAD69, 0xCD8B, 0xAD6A, + 0xCD8C, 0xAD6B, 0xCD8D, 0xAD6C, 0xCD8E, 0xAD6D, 0xCD8F, 0xAD6E, 0xCD90, 0xAD6F, 0xCD91, 0xAD70, 0xCD92, 0xAD71, 0xCD93, 0xAD72, + 0xCD94, 0xC3DF, 0xCD95, 0xC3E0, 0xCD96, 0xAD73, 0xCD97, 0xAD74, 0xCD98, 0xC3E1, 0xCD99, 0xAD75, 0xCD9A, 0xAD76, 0xCD9B, 0xAD77, + 0xCD9C, 0xC3E2, 0xCD9D, 0xAD78, 0xCD9E, 0xAD79, 0xCD9F, 0xAD7A, 0xCDA0, 0xAD81, 0xCDA1, 0xAD82, 0xCDA2, 0xAD83, 0xCDA3, 0xAD84, + 0xCDA4, 0xC3E3, 0xCDA5, 0xC3E4, 0xCDA6, 0xAD85, 0xCDA7, 0xC3E5, 0xCDA8, 0xAD86, 0xCDA9, 0xC3E6, 0xCDAA, 0xAD87, 0xCDAB, 0xAD88, + 0xCDAC, 0xAD89, 0xCDAD, 0xAD8A, 0xCDAE, 0xAD8B, 0xCDAF, 0xAD8C, 0xCDB0, 0xC3E7, 0xCDB1, 0xAD8D, 0xCDB2, 0xAD8E, 0xCDB3, 0xAD8F, + 0xCDB4, 0xAD90, 0xCDB5, 0xAD91, 0xCDB6, 0xAD92, 0xCDB7, 0xAD93, 0xCDB8, 0xAD94, 0xCDB9, 0xAD95, 0xCDBA, 0xAD96, 0xCDBB, 0xAD97, + 0xCDBC, 0xAD98, 0xCDBD, 0xAD99, 0xCDBE, 0xAD9A, 0xCDBF, 0xAD9B, 0xCDC0, 0xAD9C, 0xCDC1, 0xAD9D, 0xCDC2, 0xAD9E, 0xCDC3, 0xAD9F, + 0xCDC4, 0xC3E8, 0xCDC5, 0xADA0, 0xCDC6, 0xAE41, 0xCDC7, 0xAE42, 0xCDC8, 0xAE43, 0xCDC9, 0xAE44, 0xCDCA, 0xAE45, 0xCDCB, 0xAE46, + 0xCDCC, 0xC3E9, 0xCDCD, 0xAE47, 0xCDCE, 0xAE48, 0xCDCF, 0xAE49, 0xCDD0, 0xC3EA, 0xCDD1, 0xAE4A, 0xCDD2, 0xAE4B, 0xCDD3, 0xAE4C, + 0xCDD4, 0xAE4D, 0xCDD5, 0xAE4E, 0xCDD6, 0xAE4F, 0xCDD7, 0xAE50, 0xCDD8, 0xAE51, 0xCDD9, 0xAE52, 0xCDDA, 0xAE53, 0xCDDB, 0xAE54, + 0xCDDC, 0xAE55, 0xCDDD, 0xAE56, 0xCDDE, 0xAE57, 0xCDDF, 0xAE58, 0xCDE0, 0xAE59, 0xCDE1, 0xAE5A, 0xCDE2, 0xAE61, 0xCDE3, 0xAE62, + 0xCDE4, 0xAE63, 0xCDE5, 0xAE64, 0xCDE6, 0xAE65, 0xCDE7, 0xAE66, 0xCDE8, 0xC3EB, 0xCDE9, 0xAE67, 0xCDEA, 0xAE68, 0xCDEB, 0xAE69, + 0xCDEC, 0xC3EC, 0xCDED, 0xAE6A, 0xCDEE, 0xAE6B, 0xCDEF, 0xAE6C, 0xCDF0, 0xC3ED, 0xCDF1, 0xAE6D, 0xCDF2, 0xAE6E, 0xCDF3, 0xAE6F, + 0xCDF4, 0xAE70, 0xCDF5, 0xAE71, 0xCDF6, 0xAE72, 0xCDF7, 0xAE73, 0xCDF8, 0xC3EE, 0xCDF9, 0xC3EF, 0xCDFA, 0xAE74, 0xCDFB, 0xC3F0, + 0xCDFC, 0xAE75, 0xCDFD, 0xC3F1, 0xCDFE, 0xAE76, 0xCDFF, 0xAE77, 0xCE00, 0xAE78, 0xCE01, 0xAE79, 0xCE02, 0xAE7A, 0xCE03, 0xAE81, + 0xCE04, 0xC3F2, 0xCE05, 0xAE82, 0xCE06, 0xAE83, 0xCE07, 0xAE84, 0xCE08, 0xC3F3, 0xCE09, 0xAE85, 0xCE0A, 0xAE86, 0xCE0B, 0xAE87, + 0xCE0C, 0xC3F4, 0xCE0D, 0xAE88, 0xCE0E, 0xAE89, 0xCE0F, 0xAE8A, 0xCE10, 0xAE8B, 0xCE11, 0xAE8C, 0xCE12, 0xAE8D, 0xCE13, 0xAE8E, + 0xCE14, 0xC3F5, 0xCE15, 0xAE8F, 0xCE16, 0xAE90, 0xCE17, 0xAE91, 0xCE18, 0xAE92, 0xCE19, 0xC3F6, 0xCE1A, 0xAE93, 0xCE1B, 0xAE94, + 0xCE1C, 0xAE95, 0xCE1D, 0xAE96, 0xCE1E, 0xAE97, 0xCE1F, 0xAE98, 0xCE20, 0xC3F7, 0xCE21, 0xC3F8, 0xCE22, 0xAE99, 0xCE23, 0xAE9A, + 0xCE24, 0xC3F9, 0xCE25, 0xAE9B, 0xCE26, 0xAE9C, 0xCE27, 0xAE9D, 0xCE28, 0xC3FA, 0xCE29, 0xAE9E, 0xCE2A, 0xAE9F, 0xCE2B, 0xAEA0, + 0xCE2C, 0xAF41, 0xCE2D, 0xAF42, 0xCE2E, 0xAF43, 0xCE2F, 0xAF44, 0xCE30, 0xC3FB, 0xCE31, 0xC3FC, 0xCE32, 0xAF45, 0xCE33, 0xC3FD, + 0xCE34, 0xAF46, 0xCE35, 0xC3FE, 0xCE36, 0xAF47, 0xCE37, 0xAF48, 0xCE38, 0xAF49, 0xCE39, 0xAF4A, 0xCE3A, 0xAF4B, 0xCE3B, 0xAF4C, + 0xCE3C, 0xAF4D, 0xCE3D, 0xAF4E, 0xCE3E, 0xAF4F, 0xCE3F, 0xAF50, 0xCE40, 0xAF51, 0xCE41, 0xAF52, 0xCE42, 0xAF53, 0xCE43, 0xAF54, + 0xCE44, 0xAF55, 0xCE45, 0xAF56, 0xCE46, 0xAF57, 0xCE47, 0xAF58, 0xCE48, 0xAF59, 0xCE49, 0xAF5A, 0xCE4A, 0xAF61, 0xCE4B, 0xAF62, + 0xCE4C, 0xAF63, 0xCE4D, 0xAF64, 0xCE4E, 0xAF65, 0xCE4F, 0xAF66, 0xCE50, 0xAF67, 0xCE51, 0xAF68, 0xCE52, 0xAF69, 0xCE53, 0xAF6A, + 0xCE54, 0xAF6B, 0xCE55, 0xAF6C, 0xCE56, 0xAF6D, 0xCE57, 0xAF6E, 0xCE58, 0xC4A1, 0xCE59, 0xC4A2, 0xCE5A, 0xAF6F, 0xCE5B, 0xAF70, + 0xCE5C, 0xC4A3, 0xCE5D, 0xAF71, 0xCE5E, 0xAF72, 0xCE5F, 0xC4A4, 0xCE60, 0xC4A5, 0xCE61, 0xC4A6, 0xCE62, 0xAF73, 0xCE63, 0xAF74, + 0xCE64, 0xAF75, 0xCE65, 0xAF76, 0xCE66, 0xAF77, 0xCE67, 0xAF78, 0xCE68, 0xC4A7, 0xCE69, 0xC4A8, 0xCE6A, 0xAF79, 0xCE6B, 0xC4A9, + 0xCE6C, 0xAF7A, 0xCE6D, 0xC4AA, 0xCE6E, 0xAF81, 0xCE6F, 0xAF82, 0xCE70, 0xAF83, 0xCE71, 0xAF84, 0xCE72, 0xAF85, 0xCE73, 0xAF86, + 0xCE74, 0xC4AB, 0xCE75, 0xC4AC, 0xCE76, 0xAF87, 0xCE77, 0xAF88, 0xCE78, 0xC4AD, 0xCE79, 0xAF89, 0xCE7A, 0xAF8A, 0xCE7B, 0xAF8B, + 0xCE7C, 0xC4AE, 0xCE7D, 0xAF8C, 0xCE7E, 0xAF8D, 0xCE7F, 0xAF8E, 0xCE80, 0xAF8F, 0xCE81, 0xAF90, 0xCE82, 0xAF91, 0xCE83, 0xAF92, + 0xCE84, 0xC4AF, 0xCE85, 0xC4B0, 0xCE86, 0xAF93, 0xCE87, 0xC4B1, 0xCE88, 0xAF94, 0xCE89, 0xC4B2, 0xCE8A, 0xAF95, 0xCE8B, 0xAF96, + 0xCE8C, 0xAF97, 0xCE8D, 0xAF98, 0xCE8E, 0xAF99, 0xCE8F, 0xAF9A, 0xCE90, 0xC4B3, 0xCE91, 0xC4B4, 0xCE92, 0xAF9B, 0xCE93, 0xAF9C, + 0xCE94, 0xC4B5, 0xCE95, 0xAF9D, 0xCE96, 0xAF9E, 0xCE97, 0xAF9F, 0xCE98, 0xC4B6, 0xCE99, 0xAFA0, 0xCE9A, 0xB041, 0xCE9B, 0xB042, + 0xCE9C, 0xB043, 0xCE9D, 0xB044, 0xCE9E, 0xB045, 0xCE9F, 0xB046, 0xCEA0, 0xC4B7, 0xCEA1, 0xC4B8, 0xCEA2, 0xB047, 0xCEA3, 0xC4B9, + 0xCEA4, 0xC4BA, 0xCEA5, 0xC4BB, 0xCEA6, 0xB048, 0xCEA7, 0xB049, 0xCEA8, 0xB04A, 0xCEA9, 0xB04B, 0xCEAA, 0xB04C, 0xCEAB, 0xB04D, + 0xCEAC, 0xC4BC, 0xCEAD, 0xC4BD, 0xCEAE, 0xB04E, 0xCEAF, 0xB04F, 0xCEB0, 0xB050, 0xCEB1, 0xB051, 0xCEB2, 0xB052, 0xCEB3, 0xB053, + 0xCEB4, 0xB054, 0xCEB5, 0xB055, 0xCEB6, 0xB056, 0xCEB7, 0xB057, 0xCEB8, 0xB058, 0xCEB9, 0xB059, 0xCEBA, 0xB05A, 0xCEBB, 0xB061, + 0xCEBC, 0xB062, 0xCEBD, 0xB063, 0xCEBE, 0xB064, 0xCEBF, 0xB065, 0xCEC0, 0xB066, 0xCEC1, 0xC4BE, 0xCEC2, 0xB067, 0xCEC3, 0xB068, + 0xCEC4, 0xB069, 0xCEC5, 0xB06A, 0xCEC6, 0xB06B, 0xCEC7, 0xB06C, 0xCEC8, 0xB06D, 0xCEC9, 0xB06E, 0xCECA, 0xB06F, 0xCECB, 0xB070, + 0xCECC, 0xB071, 0xCECD, 0xB072, 0xCECE, 0xB073, 0xCECF, 0xB074, 0xCED0, 0xB075, 0xCED1, 0xB076, 0xCED2, 0xB077, 0xCED3, 0xB078, + 0xCED4, 0xB079, 0xCED5, 0xB07A, 0xCED6, 0xB081, 0xCED7, 0xB082, 0xCED8, 0xB083, 0xCED9, 0xB084, 0xCEDA, 0xB085, 0xCEDB, 0xB086, + 0xCEDC, 0xB087, 0xCEDD, 0xB088, 0xCEDE, 0xB089, 0xCEDF, 0xB08A, 0xCEE0, 0xB08B, 0xCEE1, 0xB08C, 0xCEE2, 0xB08D, 0xCEE3, 0xB08E, + 0xCEE4, 0xC4BF, 0xCEE5, 0xC4C0, 0xCEE6, 0xB08F, 0xCEE7, 0xB090, 0xCEE8, 0xC4C1, 0xCEE9, 0xB091, 0xCEEA, 0xB092, 0xCEEB, 0xC4C2, + 0xCEEC, 0xC4C3, 0xCEED, 0xB093, 0xCEEE, 0xB094, 0xCEEF, 0xB095, 0xCEF0, 0xB096, 0xCEF1, 0xB097, 0xCEF2, 0xB098, 0xCEF3, 0xB099, + 0xCEF4, 0xC4C4, 0xCEF5, 0xC4C5, 0xCEF6, 0xB09A, 0xCEF7, 0xC4C6, 0xCEF8, 0xC4C7, 0xCEF9, 0xC4C8, 0xCEFA, 0xB09B, 0xCEFB, 0xB09C, + 0xCEFC, 0xB09D, 0xCEFD, 0xB09E, 0xCEFE, 0xB09F, 0xCEFF, 0xB0A0, 0xCF00, 0xC4C9, 0xCF01, 0xC4CA, 0xCF02, 0xB141, 0xCF03, 0xB142, + 0xCF04, 0xC4CB, 0xCF05, 0xB143, 0xCF06, 0xB144, 0xCF07, 0xB145, 0xCF08, 0xC4CC, 0xCF09, 0xB146, 0xCF0A, 0xB147, 0xCF0B, 0xB148, + 0xCF0C, 0xB149, 0xCF0D, 0xB14A, 0xCF0E, 0xB14B, 0xCF0F, 0xB14C, 0xCF10, 0xC4CD, 0xCF11, 0xC4CE, 0xCF12, 0xB14D, 0xCF13, 0xC4CF, + 0xCF14, 0xB14E, 0xCF15, 0xC4D0, 0xCF16, 0xB14F, 0xCF17, 0xB150, 0xCF18, 0xB151, 0xCF19, 0xB152, 0xCF1A, 0xB153, 0xCF1B, 0xB154, + 0xCF1C, 0xC4D1, 0xCF1D, 0xB155, 0xCF1E, 0xB156, 0xCF1F, 0xB157, 0xCF20, 0xC4D2, 0xCF21, 0xB158, 0xCF22, 0xB159, 0xCF23, 0xB15A, + 0xCF24, 0xC4D3, 0xCF25, 0xB161, 0xCF26, 0xB162, 0xCF27, 0xB163, 0xCF28, 0xB164, 0xCF29, 0xB165, 0xCF2A, 0xB166, 0xCF2B, 0xB167, + 0xCF2C, 0xC4D4, 0xCF2D, 0xC4D5, 0xCF2E, 0xB168, 0xCF2F, 0xC4D6, 0xCF30, 0xC4D7, 0xCF31, 0xC4D8, 0xCF32, 0xB169, 0xCF33, 0xB16A, + 0xCF34, 0xB16B, 0xCF35, 0xB16C, 0xCF36, 0xB16D, 0xCF37, 0xB16E, 0xCF38, 0xC4D9, 0xCF39, 0xB16F, 0xCF3A, 0xB170, 0xCF3B, 0xB171, + 0xCF3C, 0xB172, 0xCF3D, 0xB173, 0xCF3E, 0xB174, 0xCF3F, 0xB175, 0xCF40, 0xB176, 0xCF41, 0xB177, 0xCF42, 0xB178, 0xCF43, 0xB179, + 0xCF44, 0xB17A, 0xCF45, 0xB181, 0xCF46, 0xB182, 0xCF47, 0xB183, 0xCF48, 0xB184, 0xCF49, 0xB185, 0xCF4A, 0xB186, 0xCF4B, 0xB187, + 0xCF4C, 0xB188, 0xCF4D, 0xB189, 0xCF4E, 0xB18A, 0xCF4F, 0xB18B, 0xCF50, 0xB18C, 0xCF51, 0xB18D, 0xCF52, 0xB18E, 0xCF53, 0xB18F, + 0xCF54, 0xC4DA, 0xCF55, 0xC4DB, 0xCF56, 0xB190, 0xCF57, 0xB191, 0xCF58, 0xC4DC, 0xCF59, 0xB192, 0xCF5A, 0xB193, 0xCF5B, 0xB194, + 0xCF5C, 0xC4DD, 0xCF5D, 0xB195, 0xCF5E, 0xB196, 0xCF5F, 0xB197, 0xCF60, 0xB198, 0xCF61, 0xB199, 0xCF62, 0xB19A, 0xCF63, 0xB19B, + 0xCF64, 0xC4DE, 0xCF65, 0xC4DF, 0xCF66, 0xB19C, 0xCF67, 0xC4E0, 0xCF68, 0xB19D, 0xCF69, 0xC4E1, 0xCF6A, 0xB19E, 0xCF6B, 0xB19F, + 0xCF6C, 0xB1A0, 0xCF6D, 0xB241, 0xCF6E, 0xB242, 0xCF6F, 0xB243, 0xCF70, 0xC4E2, 0xCF71, 0xC4E3, 0xCF72, 0xB244, 0xCF73, 0xB245, + 0xCF74, 0xC4E4, 0xCF75, 0xB246, 0xCF76, 0xB247, 0xCF77, 0xB248, 0xCF78, 0xC4E5, 0xCF79, 0xB249, 0xCF7A, 0xB24A, 0xCF7B, 0xB24B, + 0xCF7C, 0xB24C, 0xCF7D, 0xB24D, 0xCF7E, 0xB24E, 0xCF7F, 0xB24F, 0xCF80, 0xC4E6, 0xCF81, 0xB250, 0xCF82, 0xB251, 0xCF83, 0xB252, + 0xCF84, 0xB253, 0xCF85, 0xC4E7, 0xCF86, 0xB254, 0xCF87, 0xB255, 0xCF88, 0xB256, 0xCF89, 0xB257, 0xCF8A, 0xB258, 0xCF8B, 0xB259, + 0xCF8C, 0xC4E8, 0xCF8D, 0xB25A, 0xCF8E, 0xB261, 0xCF8F, 0xB262, 0xCF90, 0xB263, 0xCF91, 0xB264, 0xCF92, 0xB265, 0xCF93, 0xB266, + 0xCF94, 0xB267, 0xCF95, 0xB268, 0xCF96, 0xB269, 0xCF97, 0xB26A, 0xCF98, 0xB26B, 0xCF99, 0xB26C, 0xCF9A, 0xB26D, 0xCF9B, 0xB26E, + 0xCF9C, 0xB26F, 0xCF9D, 0xB270, 0xCF9E, 0xB271, 0xCF9F, 0xB272, 0xCFA0, 0xB273, 0xCFA1, 0xC4E9, 0xCFA2, 0xB274, 0xCFA3, 0xB275, + 0xCFA4, 0xB276, 0xCFA5, 0xB277, 0xCFA6, 0xB278, 0xCFA7, 0xB279, 0xCFA8, 0xC4EA, 0xCFA9, 0xB27A, 0xCFAA, 0xB281, 0xCFAB, 0xB282, + 0xCFAC, 0xB283, 0xCFAD, 0xB284, 0xCFAE, 0xB285, 0xCFAF, 0xB286, 0xCFB0, 0xC4EB, 0xCFB1, 0xB287, 0xCFB2, 0xB288, 0xCFB3, 0xB289, + 0xCFB4, 0xB28A, 0xCFB5, 0xB28B, 0xCFB6, 0xB28C, 0xCFB7, 0xB28D, 0xCFB8, 0xB28E, 0xCFB9, 0xB28F, 0xCFBA, 0xB290, 0xCFBB, 0xB291, + 0xCFBC, 0xB292, 0xCFBD, 0xB293, 0xCFBE, 0xB294, 0xCFBF, 0xB295, 0xCFC0, 0xB296, 0xCFC1, 0xB297, 0xCFC2, 0xB298, 0xCFC3, 0xB299, + 0xCFC4, 0xC4EC, 0xCFC5, 0xB29A, 0xCFC6, 0xB29B, 0xCFC7, 0xB29C, 0xCFC8, 0xB29D, 0xCFC9, 0xB29E, 0xCFCA, 0xB29F, 0xCFCB, 0xB2A0, + 0xCFCC, 0xB341, 0xCFCD, 0xB342, 0xCFCE, 0xB343, 0xCFCF, 0xB344, 0xCFD0, 0xB345, 0xCFD1, 0xB346, 0xCFD2, 0xB347, 0xCFD3, 0xB348, + 0xCFD4, 0xB349, 0xCFD5, 0xB34A, 0xCFD6, 0xB34B, 0xCFD7, 0xB34C, 0xCFD8, 0xB34D, 0xCFD9, 0xB34E, 0xCFDA, 0xB34F, 0xCFDB, 0xB350, + 0xCFDC, 0xB351, 0xCFDD, 0xB352, 0xCFDE, 0xB353, 0xCFDF, 0xB354, 0xCFE0, 0xC4ED, 0xCFE1, 0xC4EE, 0xCFE2, 0xB355, 0xCFE3, 0xB356, + 0xCFE4, 0xC4EF, 0xCFE5, 0xB357, 0xCFE6, 0xB358, 0xCFE7, 0xB359, 0xCFE8, 0xC4F0, 0xCFE9, 0xB35A, 0xCFEA, 0xB361, 0xCFEB, 0xB362, + 0xCFEC, 0xB363, 0xCFED, 0xB364, 0xCFEE, 0xB365, 0xCFEF, 0xB366, 0xCFF0, 0xC4F1, 0xCFF1, 0xC4F2, 0xCFF2, 0xB367, 0xCFF3, 0xC4F3, + 0xCFF4, 0xB368, 0xCFF5, 0xC4F4, 0xCFF6, 0xB369, 0xCFF7, 0xB36A, 0xCFF8, 0xB36B, 0xCFF9, 0xB36C, 0xCFFA, 0xB36D, 0xCFFB, 0xB36E, + 0xCFFC, 0xC4F5, 0xCFFD, 0xB36F, 0xCFFE, 0xB370, 0xCFFF, 0xB371, 0xD000, 0xC4F6, 0xD001, 0xB372, 0xD002, 0xB373, 0xD003, 0xB374, + 0xD004, 0xC4F7, 0xD005, 0xB375, 0xD006, 0xB376, 0xD007, 0xB377, 0xD008, 0xB378, 0xD009, 0xB379, 0xD00A, 0xB37A, 0xD00B, 0xB381, + 0xD00C, 0xB382, 0xD00D, 0xB383, 0xD00E, 0xB384, 0xD00F, 0xB385, 0xD010, 0xB386, 0xD011, 0xC4F8, 0xD012, 0xB387, 0xD013, 0xB388, + 0xD014, 0xB389, 0xD015, 0xB38A, 0xD016, 0xB38B, 0xD017, 0xB38C, 0xD018, 0xC4F9, 0xD019, 0xB38D, 0xD01A, 0xB38E, 0xD01B, 0xB38F, + 0xD01C, 0xB390, 0xD01D, 0xB391, 0xD01E, 0xB392, 0xD01F, 0xB393, 0xD020, 0xB394, 0xD021, 0xB395, 0xD022, 0xB396, 0xD023, 0xB397, + 0xD024, 0xB398, 0xD025, 0xB399, 0xD026, 0xB39A, 0xD027, 0xB39B, 0xD028, 0xB39C, 0xD029, 0xB39D, 0xD02A, 0xB39E, 0xD02B, 0xB39F, + 0xD02C, 0xB3A0, 0xD02D, 0xC4FA, 0xD02E, 0xB441, 0xD02F, 0xB442, 0xD030, 0xB443, 0xD031, 0xB444, 0xD032, 0xB445, 0xD033, 0xB446, + 0xD034, 0xC4FB, 0xD035, 0xC4FC, 0xD036, 0xB447, 0xD037, 0xB448, 0xD038, 0xC4FD, 0xD039, 0xB449, 0xD03A, 0xB44A, 0xD03B, 0xB44B, + 0xD03C, 0xC4FE, 0xD03D, 0xB44C, 0xD03E, 0xB44D, 0xD03F, 0xB44E, 0xD040, 0xB44F, 0xD041, 0xB450, 0xD042, 0xB451, 0xD043, 0xB452, + 0xD044, 0xC5A1, 0xD045, 0xC5A2, 0xD046, 0xB453, 0xD047, 0xC5A3, 0xD048, 0xB454, 0xD049, 0xC5A4, 0xD04A, 0xB455, 0xD04B, 0xB456, + 0xD04C, 0xB457, 0xD04D, 0xB458, 0xD04E, 0xB459, 0xD04F, 0xB45A, 0xD050, 0xC5A5, 0xD051, 0xB461, 0xD052, 0xB462, 0xD053, 0xB463, + 0xD054, 0xC5A6, 0xD055, 0xB464, 0xD056, 0xB465, 0xD057, 0xB466, 0xD058, 0xC5A7, 0xD059, 0xB467, 0xD05A, 0xB468, 0xD05B, 0xB469, + 0xD05C, 0xB46A, 0xD05D, 0xB46B, 0xD05E, 0xB46C, 0xD05F, 0xB46D, 0xD060, 0xC5A8, 0xD061, 0xB46E, 0xD062, 0xB46F, 0xD063, 0xB470, + 0xD064, 0xB471, 0xD065, 0xB472, 0xD066, 0xB473, 0xD067, 0xB474, 0xD068, 0xB475, 0xD069, 0xB476, 0xD06A, 0xB477, 0xD06B, 0xB478, + 0xD06C, 0xC5A9, 0xD06D, 0xC5AA, 0xD06E, 0xB479, 0xD06F, 0xB47A, 0xD070, 0xC5AB, 0xD071, 0xB481, 0xD072, 0xB482, 0xD073, 0xB483, + 0xD074, 0xC5AC, 0xD075, 0xB484, 0xD076, 0xB485, 0xD077, 0xB486, 0xD078, 0xB487, 0xD079, 0xB488, 0xD07A, 0xB489, 0xD07B, 0xB48A, + 0xD07C, 0xC5AD, 0xD07D, 0xC5AE, 0xD07E, 0xB48B, 0xD07F, 0xB48C, 0xD080, 0xB48D, 0xD081, 0xC5AF, 0xD082, 0xB48E, 0xD083, 0xB48F, + 0xD084, 0xB490, 0xD085, 0xB491, 0xD086, 0xB492, 0xD087, 0xB493, 0xD088, 0xB494, 0xD089, 0xB495, 0xD08A, 0xB496, 0xD08B, 0xB497, + 0xD08C, 0xB498, 0xD08D, 0xB499, 0xD08E, 0xB49A, 0xD08F, 0xB49B, 0xD090, 0xB49C, 0xD091, 0xB49D, 0xD092, 0xB49E, 0xD093, 0xB49F, + 0xD094, 0xB4A0, 0xD095, 0xB541, 0xD096, 0xB542, 0xD097, 0xB543, 0xD098, 0xB544, 0xD099, 0xB545, 0xD09A, 0xB546, 0xD09B, 0xB547, + 0xD09C, 0xB548, 0xD09D, 0xB549, 0xD09E, 0xB54A, 0xD09F, 0xB54B, 0xD0A0, 0xB54C, 0xD0A1, 0xB54D, 0xD0A2, 0xB54E, 0xD0A3, 0xB54F, + 0xD0A4, 0xC5B0, 0xD0A5, 0xC5B1, 0xD0A6, 0xB550, 0xD0A7, 0xB551, 0xD0A8, 0xC5B2, 0xD0A9, 0xB552, 0xD0AA, 0xB553, 0xD0AB, 0xB554, + 0xD0AC, 0xC5B3, 0xD0AD, 0xB555, 0xD0AE, 0xB556, 0xD0AF, 0xB557, 0xD0B0, 0xB558, 0xD0B1, 0xB559, 0xD0B2, 0xB55A, 0xD0B3, 0xB561, + 0xD0B4, 0xC5B4, 0xD0B5, 0xC5B5, 0xD0B6, 0xB562, 0xD0B7, 0xC5B6, 0xD0B8, 0xB563, 0xD0B9, 0xC5B7, 0xD0BA, 0xB564, 0xD0BB, 0xB565, + 0xD0BC, 0xB566, 0xD0BD, 0xB567, 0xD0BE, 0xB568, 0xD0BF, 0xB569, 0xD0C0, 0xC5B8, 0xD0C1, 0xC5B9, 0xD0C2, 0xB56A, 0xD0C3, 0xB56B, + 0xD0C4, 0xC5BA, 0xD0C5, 0xB56C, 0xD0C6, 0xB56D, 0xD0C7, 0xB56E, 0xD0C8, 0xC5BB, 0xD0C9, 0xC5BC, 0xD0CA, 0xB56F, 0xD0CB, 0xB570, + 0xD0CC, 0xB571, 0xD0CD, 0xB572, 0xD0CE, 0xB573, 0xD0CF, 0xB574, 0xD0D0, 0xC5BD, 0xD0D1, 0xC5BE, 0xD0D2, 0xB575, 0xD0D3, 0xC5BF, + 0xD0D4, 0xC5C0, 0xD0D5, 0xC5C1, 0xD0D6, 0xB576, 0xD0D7, 0xB577, 0xD0D8, 0xB578, 0xD0D9, 0xB579, 0xD0DA, 0xB57A, 0xD0DB, 0xB581, + 0xD0DC, 0xC5C2, 0xD0DD, 0xC5C3, 0xD0DE, 0xB582, 0xD0DF, 0xB583, 0xD0E0, 0xC5C4, 0xD0E1, 0xB584, 0xD0E2, 0xB585, 0xD0E3, 0xB586, + 0xD0E4, 0xC5C5, 0xD0E5, 0xB587, 0xD0E6, 0xB588, 0xD0E7, 0xB589, 0xD0E8, 0xB58A, 0xD0E9, 0xB58B, 0xD0EA, 0xB58C, 0xD0EB, 0xB58D, + 0xD0EC, 0xC5C6, 0xD0ED, 0xC5C7, 0xD0EE, 0xB58E, 0xD0EF, 0xC5C8, 0xD0F0, 0xC5C9, 0xD0F1, 0xC5CA, 0xD0F2, 0xB58F, 0xD0F3, 0xB590, + 0xD0F4, 0xB591, 0xD0F5, 0xB592, 0xD0F6, 0xB593, 0xD0F7, 0xB594, 0xD0F8, 0xC5CB, 0xD0F9, 0xB595, 0xD0FA, 0xB596, 0xD0FB, 0xB597, + 0xD0FC, 0xB598, 0xD0FD, 0xB599, 0xD0FE, 0xB59A, 0xD0FF, 0xB59B, 0xD100, 0xB59C, 0xD101, 0xB59D, 0xD102, 0xB59E, 0xD103, 0xB59F, + 0xD104, 0xB5A0, 0xD105, 0xB641, 0xD106, 0xB642, 0xD107, 0xB643, 0xD108, 0xB644, 0xD109, 0xB645, 0xD10A, 0xB646, 0xD10B, 0xB647, + 0xD10C, 0xB648, 0xD10D, 0xC5CC, 0xD10E, 0xB649, 0xD10F, 0xB64A, 0xD110, 0xB64B, 0xD111, 0xB64C, 0xD112, 0xB64D, 0xD113, 0xB64E, + 0xD114, 0xB64F, 0xD115, 0xB650, 0xD116, 0xB651, 0xD117, 0xB652, 0xD118, 0xB653, 0xD119, 0xB654, 0xD11A, 0xB655, 0xD11B, 0xB656, + 0xD11C, 0xB657, 0xD11D, 0xB658, 0xD11E, 0xB659, 0xD11F, 0xB65A, 0xD120, 0xB661, 0xD121, 0xB662, 0xD122, 0xB663, 0xD123, 0xB664, + 0xD124, 0xB665, 0xD125, 0xB666, 0xD126, 0xB667, 0xD127, 0xB668, 0xD128, 0xB669, 0xD129, 0xB66A, 0xD12A, 0xB66B, 0xD12B, 0xB66C, + 0xD12C, 0xB66D, 0xD12D, 0xB66E, 0xD12E, 0xB66F, 0xD12F, 0xB670, 0xD130, 0xC5CD, 0xD131, 0xC5CE, 0xD132, 0xB671, 0xD133, 0xB672, + 0xD134, 0xC5CF, 0xD135, 0xB673, 0xD136, 0xB674, 0xD137, 0xB675, 0xD138, 0xC5D0, 0xD139, 0xB676, 0xD13A, 0xC5D1, 0xD13B, 0xB677, + 0xD13C, 0xB678, 0xD13D, 0xB679, 0xD13E, 0xB67A, 0xD13F, 0xB681, 0xD140, 0xC5D2, 0xD141, 0xC5D3, 0xD142, 0xB682, 0xD143, 0xC5D4, + 0xD144, 0xC5D5, 0xD145, 0xC5D6, 0xD146, 0xB683, 0xD147, 0xB684, 0xD148, 0xB685, 0xD149, 0xB686, 0xD14A, 0xB687, 0xD14B, 0xB688, + 0xD14C, 0xC5D7, 0xD14D, 0xC5D8, 0xD14E, 0xB689, 0xD14F, 0xB68A, 0xD150, 0xC5D9, 0xD151, 0xB68B, 0xD152, 0xB68C, 0xD153, 0xB68D, + 0xD154, 0xC5DA, 0xD155, 0xB68E, 0xD156, 0xB68F, 0xD157, 0xB690, 0xD158, 0xB691, 0xD159, 0xB692, 0xD15A, 0xB693, 0xD15B, 0xB694, + 0xD15C, 0xC5DB, 0xD15D, 0xC5DC, 0xD15E, 0xB695, 0xD15F, 0xC5DD, 0xD160, 0xB696, 0xD161, 0xC5DE, 0xD162, 0xB697, 0xD163, 0xB698, + 0xD164, 0xB699, 0xD165, 0xB69A, 0xD166, 0xB69B, 0xD167, 0xB69C, 0xD168, 0xC5DF, 0xD169, 0xB69D, 0xD16A, 0xB69E, 0xD16B, 0xB69F, + 0xD16C, 0xC5E0, 0xD16D, 0xB6A0, 0xD16E, 0xB741, 0xD16F, 0xB742, 0xD170, 0xB743, 0xD171, 0xB744, 0xD172, 0xB745, 0xD173, 0xB746, + 0xD174, 0xB747, 0xD175, 0xB748, 0xD176, 0xB749, 0xD177, 0xB74A, 0xD178, 0xB74B, 0xD179, 0xB74C, 0xD17A, 0xB74D, 0xD17B, 0xB74E, + 0xD17C, 0xC5E1, 0xD17D, 0xB74F, 0xD17E, 0xB750, 0xD17F, 0xB751, 0xD180, 0xB752, 0xD181, 0xB753, 0xD182, 0xB754, 0xD183, 0xB755, + 0xD184, 0xC5E2, 0xD185, 0xB756, 0xD186, 0xB757, 0xD187, 0xB758, 0xD188, 0xC5E3, 0xD189, 0xB759, 0xD18A, 0xB75A, 0xD18B, 0xB761, + 0xD18C, 0xB762, 0xD18D, 0xB763, 0xD18E, 0xB764, 0xD18F, 0xB765, 0xD190, 0xB766, 0xD191, 0xB767, 0xD192, 0xB768, 0xD193, 0xB769, + 0xD194, 0xB76A, 0xD195, 0xB76B, 0xD196, 0xB76C, 0xD197, 0xB76D, 0xD198, 0xB76E, 0xD199, 0xB76F, 0xD19A, 0xB770, 0xD19B, 0xB771, + 0xD19C, 0xB772, 0xD19D, 0xB773, 0xD19E, 0xB774, 0xD19F, 0xB775, 0xD1A0, 0xC5E4, 0xD1A1, 0xC5E5, 0xD1A2, 0xB776, 0xD1A3, 0xB777, + 0xD1A4, 0xC5E6, 0xD1A5, 0xB778, 0xD1A6, 0xB779, 0xD1A7, 0xB77A, 0xD1A8, 0xC5E7, 0xD1A9, 0xB781, 0xD1AA, 0xB782, 0xD1AB, 0xB783, + 0xD1AC, 0xB784, 0xD1AD, 0xB785, 0xD1AE, 0xB786, 0xD1AF, 0xB787, 0xD1B0, 0xC5E8, 0xD1B1, 0xC5E9, 0xD1B2, 0xB788, 0xD1B3, 0xC5EA, + 0xD1B4, 0xB789, 0xD1B5, 0xC5EB, 0xD1B6, 0xB78A, 0xD1B7, 0xB78B, 0xD1B8, 0xB78C, 0xD1B9, 0xB78D, 0xD1BA, 0xC5EC, 0xD1BB, 0xB78E, + 0xD1BC, 0xC5ED, 0xD1BD, 0xB78F, 0xD1BE, 0xB790, 0xD1BF, 0xB791, 0xD1C0, 0xC5EE, 0xD1C1, 0xB792, 0xD1C2, 0xB793, 0xD1C3, 0xB794, + 0xD1C4, 0xB795, 0xD1C5, 0xB796, 0xD1C6, 0xB797, 0xD1C7, 0xB798, 0xD1C8, 0xB799, 0xD1C9, 0xB79A, 0xD1CA, 0xB79B, 0xD1CB, 0xB79C, + 0xD1CC, 0xB79D, 0xD1CD, 0xB79E, 0xD1CE, 0xB79F, 0xD1CF, 0xB7A0, 0xD1D0, 0xB841, 0xD1D1, 0xB842, 0xD1D2, 0xB843, 0xD1D3, 0xB844, + 0xD1D4, 0xB845, 0xD1D5, 0xB846, 0xD1D6, 0xB847, 0xD1D7, 0xB848, 0xD1D8, 0xC5EF, 0xD1D9, 0xB849, 0xD1DA, 0xB84A, 0xD1DB, 0xB84B, + 0xD1DC, 0xB84C, 0xD1DD, 0xB84D, 0xD1DE, 0xB84E, 0xD1DF, 0xB84F, 0xD1E0, 0xB850, 0xD1E1, 0xB851, 0xD1E2, 0xB852, 0xD1E3, 0xB853, + 0xD1E4, 0xB854, 0xD1E5, 0xB855, 0xD1E6, 0xB856, 0xD1E7, 0xB857, 0xD1E8, 0xB858, 0xD1E9, 0xB859, 0xD1EA, 0xB85A, 0xD1EB, 0xB861, + 0xD1EC, 0xB862, 0xD1ED, 0xB863, 0xD1EE, 0xB864, 0xD1EF, 0xB865, 0xD1F0, 0xB866, 0xD1F1, 0xB867, 0xD1F2, 0xB868, 0xD1F3, 0xB869, + 0xD1F4, 0xC5F0, 0xD1F5, 0xB86A, 0xD1F6, 0xB86B, 0xD1F7, 0xB86C, 0xD1F8, 0xC5F1, 0xD1F9, 0xB86D, 0xD1FA, 0xB86E, 0xD1FB, 0xB86F, + 0xD1FC, 0xB870, 0xD1FD, 0xB871, 0xD1FE, 0xB872, 0xD1FF, 0xB873, 0xD200, 0xB874, 0xD201, 0xB875, 0xD202, 0xB876, 0xD203, 0xB877, + 0xD204, 0xB878, 0xD205, 0xB879, 0xD206, 0xB87A, 0xD207, 0xC5F2, 0xD208, 0xB881, 0xD209, 0xC5F3, 0xD20A, 0xB882, 0xD20B, 0xB883, + 0xD20C, 0xB884, 0xD20D, 0xB885, 0xD20E, 0xB886, 0xD20F, 0xB887, 0xD210, 0xC5F4, 0xD211, 0xB888, 0xD212, 0xB889, 0xD213, 0xB88A, + 0xD214, 0xB88B, 0xD215, 0xB88C, 0xD216, 0xB88D, 0xD217, 0xB88E, 0xD218, 0xB88F, 0xD219, 0xB890, 0xD21A, 0xB891, 0xD21B, 0xB892, + 0xD21C, 0xB893, 0xD21D, 0xB894, 0xD21E, 0xB895, 0xD21F, 0xB896, 0xD220, 0xB897, 0xD221, 0xB898, 0xD222, 0xB899, 0xD223, 0xB89A, + 0xD224, 0xB89B, 0xD225, 0xB89C, 0xD226, 0xB89D, 0xD227, 0xB89E, 0xD228, 0xB89F, 0xD229, 0xB8A0, 0xD22A, 0xB941, 0xD22B, 0xB942, + 0xD22C, 0xC5F5, 0xD22D, 0xC5F6, 0xD22E, 0xB943, 0xD22F, 0xB944, 0xD230, 0xC5F7, 0xD231, 0xB945, 0xD232, 0xB946, 0xD233, 0xB947, + 0xD234, 0xC5F8, 0xD235, 0xB948, 0xD236, 0xB949, 0xD237, 0xB94A, 0xD238, 0xB94B, 0xD239, 0xB94C, 0xD23A, 0xB94D, 0xD23B, 0xB94E, + 0xD23C, 0xC5F9, 0xD23D, 0xC5FA, 0xD23E, 0xB94F, 0xD23F, 0xC5FB, 0xD240, 0xB950, 0xD241, 0xC5FC, 0xD242, 0xB951, 0xD243, 0xB952, + 0xD244, 0xB953, 0xD245, 0xB954, 0xD246, 0xB955, 0xD247, 0xB956, 0xD248, 0xC5FD, 0xD249, 0xB957, 0xD24A, 0xB958, 0xD24B, 0xB959, + 0xD24C, 0xB95A, 0xD24D, 0xB961, 0xD24E, 0xB962, 0xD24F, 0xB963, 0xD250, 0xB964, 0xD251, 0xB965, 0xD252, 0xB966, 0xD253, 0xB967, + 0xD254, 0xB968, 0xD255, 0xB969, 0xD256, 0xB96A, 0xD257, 0xB96B, 0xD258, 0xB96C, 0xD259, 0xB96D, 0xD25A, 0xB96E, 0xD25B, 0xB96F, + 0xD25C, 0xC5FE, 0xD25D, 0xB970, 0xD25E, 0xB971, 0xD25F, 0xB972, 0xD260, 0xB973, 0xD261, 0xB974, 0xD262, 0xB975, 0xD263, 0xB976, + 0xD264, 0xC6A1, 0xD265, 0xB977, 0xD266, 0xB978, 0xD267, 0xB979, 0xD268, 0xB97A, 0xD269, 0xB981, 0xD26A, 0xB982, 0xD26B, 0xB983, + 0xD26C, 0xB984, 0xD26D, 0xB985, 0xD26E, 0xB986, 0xD26F, 0xB987, 0xD270, 0xB988, 0xD271, 0xB989, 0xD272, 0xB98A, 0xD273, 0xB98B, + 0xD274, 0xB98C, 0xD275, 0xB98D, 0xD276, 0xB98E, 0xD277, 0xB98F, 0xD278, 0xB990, 0xD279, 0xB991, 0xD27A, 0xB992, 0xD27B, 0xB993, + 0xD27C, 0xB994, 0xD27D, 0xB995, 0xD27E, 0xB996, 0xD27F, 0xB997, 0xD280, 0xC6A2, 0xD281, 0xC6A3, 0xD282, 0xB998, 0xD283, 0xB999, + 0xD284, 0xC6A4, 0xD285, 0xB99A, 0xD286, 0xB99B, 0xD287, 0xB99C, 0xD288, 0xC6A5, 0xD289, 0xB99D, 0xD28A, 0xB99E, 0xD28B, 0xB99F, + 0xD28C, 0xB9A0, 0xD28D, 0xBA41, 0xD28E, 0xBA42, 0xD28F, 0xBA43, 0xD290, 0xC6A6, 0xD291, 0xC6A7, 0xD292, 0xBA44, 0xD293, 0xBA45, + 0xD294, 0xBA46, 0xD295, 0xC6A8, 0xD296, 0xBA47, 0xD297, 0xBA48, 0xD298, 0xBA49, 0xD299, 0xBA4A, 0xD29A, 0xBA4B, 0xD29B, 0xBA4C, + 0xD29C, 0xC6A9, 0xD29D, 0xBA4D, 0xD29E, 0xBA4E, 0xD29F, 0xBA4F, 0xD2A0, 0xC6AA, 0xD2A1, 0xBA50, 0xD2A2, 0xBA51, 0xD2A3, 0xBA52, + 0xD2A4, 0xC6AB, 0xD2A5, 0xBA53, 0xD2A6, 0xBA54, 0xD2A7, 0xBA55, 0xD2A8, 0xBA56, 0xD2A9, 0xBA57, 0xD2AA, 0xBA58, 0xD2AB, 0xBA59, + 0xD2AC, 0xC6AC, 0xD2AD, 0xBA5A, 0xD2AE, 0xBA61, 0xD2AF, 0xBA62, 0xD2B0, 0xBA63, 0xD2B1, 0xC6AD, 0xD2B2, 0xBA64, 0xD2B3, 0xBA65, + 0xD2B4, 0xBA66, 0xD2B5, 0xBA67, 0xD2B6, 0xBA68, 0xD2B7, 0xBA69, 0xD2B8, 0xC6AE, 0xD2B9, 0xC6AF, 0xD2BA, 0xBA6A, 0xD2BB, 0xBA6B, + 0xD2BC, 0xC6B0, 0xD2BD, 0xBA6C, 0xD2BE, 0xBA6D, 0xD2BF, 0xC6B1, 0xD2C0, 0xC6B2, 0xD2C1, 0xBA6E, 0xD2C2, 0xC6B3, 0xD2C3, 0xBA6F, + 0xD2C4, 0xBA70, 0xD2C5, 0xBA71, 0xD2C6, 0xBA72, 0xD2C7, 0xBA73, 0xD2C8, 0xC6B4, 0xD2C9, 0xC6B5, 0xD2CA, 0xBA74, 0xD2CB, 0xC6B6, + 0xD2CC, 0xBA75, 0xD2CD, 0xBA76, 0xD2CE, 0xBA77, 0xD2CF, 0xBA78, 0xD2D0, 0xBA79, 0xD2D1, 0xBA7A, 0xD2D2, 0xBA81, 0xD2D3, 0xBA82, + 0xD2D4, 0xC6B7, 0xD2D5, 0xBA83, 0xD2D6, 0xBA84, 0xD2D7, 0xBA85, 0xD2D8, 0xC6B8, 0xD2D9, 0xBA86, 0xD2DA, 0xBA87, 0xD2DB, 0xBA88, + 0xD2DC, 0xC6B9, 0xD2DD, 0xBA89, 0xD2DE, 0xBA8A, 0xD2DF, 0xBA8B, 0xD2E0, 0xBA8C, 0xD2E1, 0xBA8D, 0xD2E2, 0xBA8E, 0xD2E3, 0xBA8F, + 0xD2E4, 0xC6BA, 0xD2E5, 0xC6BB, 0xD2E6, 0xBA90, 0xD2E7, 0xBA91, 0xD2E8, 0xBA92, 0xD2E9, 0xBA93, 0xD2EA, 0xBA94, 0xD2EB, 0xBA95, + 0xD2EC, 0xBA96, 0xD2ED, 0xBA97, 0xD2EE, 0xBA98, 0xD2EF, 0xBA99, 0xD2F0, 0xC6BC, 0xD2F1, 0xC6BD, 0xD2F2, 0xBA9A, 0xD2F3, 0xBA9B, + 0xD2F4, 0xC6BE, 0xD2F5, 0xBA9C, 0xD2F6, 0xBA9D, 0xD2F7, 0xBA9E, 0xD2F8, 0xC6BF, 0xD2F9, 0xBA9F, 0xD2FA, 0xBAA0, 0xD2FB, 0xBB41, + 0xD2FC, 0xBB42, 0xD2FD, 0xBB43, 0xD2FE, 0xBB44, 0xD2FF, 0xBB45, 0xD300, 0xC6C0, 0xD301, 0xC6C1, 0xD302, 0xBB46, 0xD303, 0xC6C2, + 0xD304, 0xBB47, 0xD305, 0xC6C3, 0xD306, 0xBB48, 0xD307, 0xBB49, 0xD308, 0xBB4A, 0xD309, 0xBB4B, 0xD30A, 0xBB4C, 0xD30B, 0xBB4D, + 0xD30C, 0xC6C4, 0xD30D, 0xC6C5, 0xD30E, 0xC6C6, 0xD30F, 0xBB4E, 0xD310, 0xC6C7, 0xD311, 0xBB4F, 0xD312, 0xBB50, 0xD313, 0xBB51, + 0xD314, 0xC6C8, 0xD315, 0xBB52, 0xD316, 0xC6C9, 0xD317, 0xBB53, 0xD318, 0xBB54, 0xD319, 0xBB55, 0xD31A, 0xBB56, 0xD31B, 0xBB57, + 0xD31C, 0xC6CA, 0xD31D, 0xC6CB, 0xD31E, 0xBB58, 0xD31F, 0xC6CC, 0xD320, 0xC6CD, 0xD321, 0xC6CE, 0xD322, 0xBB59, 0xD323, 0xBB5A, + 0xD324, 0xBB61, 0xD325, 0xC6CF, 0xD326, 0xBB62, 0xD327, 0xBB63, 0xD328, 0xC6D0, 0xD329, 0xC6D1, 0xD32A, 0xBB64, 0xD32B, 0xBB65, + 0xD32C, 0xC6D2, 0xD32D, 0xBB66, 0xD32E, 0xBB67, 0xD32F, 0xBB68, 0xD330, 0xC6D3, 0xD331, 0xBB69, 0xD332, 0xBB6A, 0xD333, 0xBB6B, + 0xD334, 0xBB6C, 0xD335, 0xBB6D, 0xD336, 0xBB6E, 0xD337, 0xBB6F, 0xD338, 0xC6D4, 0xD339, 0xC6D5, 0xD33A, 0xBB70, 0xD33B, 0xC6D6, + 0xD33C, 0xC6D7, 0xD33D, 0xC6D8, 0xD33E, 0xBB71, 0xD33F, 0xBB72, 0xD340, 0xBB73, 0xD341, 0xBB74, 0xD342, 0xBB75, 0xD343, 0xBB76, + 0xD344, 0xC6D9, 0xD345, 0xC6DA, 0xD346, 0xBB77, 0xD347, 0xBB78, 0xD348, 0xBB79, 0xD349, 0xBB7A, 0xD34A, 0xBB81, 0xD34B, 0xBB82, + 0xD34C, 0xBB83, 0xD34D, 0xBB84, 0xD34E, 0xBB85, 0xD34F, 0xBB86, 0xD350, 0xBB87, 0xD351, 0xBB88, 0xD352, 0xBB89, 0xD353, 0xBB8A, + 0xD354, 0xBB8B, 0xD355, 0xBB8C, 0xD356, 0xBB8D, 0xD357, 0xBB8E, 0xD358, 0xBB8F, 0xD359, 0xBB90, 0xD35A, 0xBB91, 0xD35B, 0xBB92, + 0xD35C, 0xBB93, 0xD35D, 0xBB94, 0xD35E, 0xBB95, 0xD35F, 0xBB96, 0xD360, 0xBB97, 0xD361, 0xBB98, 0xD362, 0xBB99, 0xD363, 0xBB9A, + 0xD364, 0xBB9B, 0xD365, 0xBB9C, 0xD366, 0xBB9D, 0xD367, 0xBB9E, 0xD368, 0xBB9F, 0xD369, 0xBBA0, 0xD36A, 0xBC41, 0xD36B, 0xBC42, + 0xD36C, 0xBC43, 0xD36D, 0xBC44, 0xD36E, 0xBC45, 0xD36F, 0xBC46, 0xD370, 0xBC47, 0xD371, 0xBC48, 0xD372, 0xBC49, 0xD373, 0xBC4A, + 0xD374, 0xBC4B, 0xD375, 0xBC4C, 0xD376, 0xBC4D, 0xD377, 0xBC4E, 0xD378, 0xBC4F, 0xD379, 0xBC50, 0xD37A, 0xBC51, 0xD37B, 0xBC52, + 0xD37C, 0xC6DB, 0xD37D, 0xC6DC, 0xD37E, 0xBC53, 0xD37F, 0xBC54, 0xD380, 0xC6DD, 0xD381, 0xBC55, 0xD382, 0xBC56, 0xD383, 0xBC57, + 0xD384, 0xC6DE, 0xD385, 0xBC58, 0xD386, 0xBC59, 0xD387, 0xBC5A, 0xD388, 0xBC61, 0xD389, 0xBC62, 0xD38A, 0xBC63, 0xD38B, 0xBC64, + 0xD38C, 0xC6DF, 0xD38D, 0xC6E0, 0xD38E, 0xBC65, 0xD38F, 0xC6E1, 0xD390, 0xC6E2, 0xD391, 0xC6E3, 0xD392, 0xBC66, 0xD393, 0xBC67, + 0xD394, 0xBC68, 0xD395, 0xBC69, 0xD396, 0xBC6A, 0xD397, 0xBC6B, 0xD398, 0xC6E4, 0xD399, 0xC6E5, 0xD39A, 0xBC6C, 0xD39B, 0xBC6D, + 0xD39C, 0xC6E6, 0xD39D, 0xBC6E, 0xD39E, 0xBC6F, 0xD39F, 0xBC70, 0xD3A0, 0xC6E7, 0xD3A1, 0xBC71, 0xD3A2, 0xBC72, 0xD3A3, 0xBC73, + 0xD3A4, 0xBC74, 0xD3A5, 0xBC75, 0xD3A6, 0xBC76, 0xD3A7, 0xBC77, 0xD3A8, 0xC6E8, 0xD3A9, 0xC6E9, 0xD3AA, 0xBC78, 0xD3AB, 0xC6EA, + 0xD3AC, 0xBC79, 0xD3AD, 0xC6EB, 0xD3AE, 0xBC7A, 0xD3AF, 0xBC81, 0xD3B0, 0xBC82, 0xD3B1, 0xBC83, 0xD3B2, 0xBC84, 0xD3B3, 0xBC85, + 0xD3B4, 0xC6EC, 0xD3B5, 0xBC86, 0xD3B6, 0xBC87, 0xD3B7, 0xBC88, 0xD3B8, 0xC6ED, 0xD3B9, 0xBC89, 0xD3BA, 0xBC8A, 0xD3BB, 0xBC8B, + 0xD3BC, 0xC6EE, 0xD3BD, 0xBC8C, 0xD3BE, 0xBC8D, 0xD3BF, 0xBC8E, 0xD3C0, 0xBC8F, 0xD3C1, 0xBC90, 0xD3C2, 0xBC91, 0xD3C3, 0xBC92, + 0xD3C4, 0xC6EF, 0xD3C5, 0xC6F0, 0xD3C6, 0xBC93, 0xD3C7, 0xBC94, 0xD3C8, 0xC6F1, 0xD3C9, 0xC6F2, 0xD3CA, 0xBC95, 0xD3CB, 0xBC96, + 0xD3CC, 0xBC97, 0xD3CD, 0xBC98, 0xD3CE, 0xBC99, 0xD3CF, 0xBC9A, 0xD3D0, 0xC6F3, 0xD3D1, 0xBC9B, 0xD3D2, 0xBC9C, 0xD3D3, 0xBC9D, + 0xD3D4, 0xBC9E, 0xD3D5, 0xBC9F, 0xD3D6, 0xBCA0, 0xD3D7, 0xBD41, 0xD3D8, 0xC6F4, 0xD3D9, 0xBD42, 0xD3DA, 0xBD43, 0xD3DB, 0xBD44, + 0xD3DC, 0xBD45, 0xD3DD, 0xBD46, 0xD3DE, 0xBD47, 0xD3DF, 0xBD48, 0xD3E0, 0xBD49, 0xD3E1, 0xC6F5, 0xD3E2, 0xBD4A, 0xD3E3, 0xC6F6, + 0xD3E4, 0xBD4B, 0xD3E5, 0xBD4C, 0xD3E6, 0xBD4D, 0xD3E7, 0xBD4E, 0xD3E8, 0xBD4F, 0xD3E9, 0xBD50, 0xD3EA, 0xBD51, 0xD3EB, 0xBD52, + 0xD3EC, 0xC6F7, 0xD3ED, 0xC6F8, 0xD3EE, 0xBD53, 0xD3EF, 0xBD54, 0xD3F0, 0xC6F9, 0xD3F1, 0xBD55, 0xD3F2, 0xBD56, 0xD3F3, 0xBD57, + 0xD3F4, 0xC6FA, 0xD3F5, 0xBD58, 0xD3F6, 0xBD59, 0xD3F7, 0xBD5A, 0xD3F8, 0xBD61, 0xD3F9, 0xBD62, 0xD3FA, 0xBD63, 0xD3FB, 0xBD64, + 0xD3FC, 0xC6FB, 0xD3FD, 0xC6FC, 0xD3FE, 0xBD65, 0xD3FF, 0xC6FD, 0xD400, 0xBD66, 0xD401, 0xC6FE, 0xD402, 0xBD67, 0xD403, 0xBD68, + 0xD404, 0xBD69, 0xD405, 0xBD6A, 0xD406, 0xBD6B, 0xD407, 0xBD6C, 0xD408, 0xC7A1, 0xD409, 0xBD6D, 0xD40A, 0xBD6E, 0xD40B, 0xBD6F, + 0xD40C, 0xBD70, 0xD40D, 0xBD71, 0xD40E, 0xBD72, 0xD40F, 0xBD73, 0xD410, 0xBD74, 0xD411, 0xBD75, 0xD412, 0xBD76, 0xD413, 0xBD77, + 0xD414, 0xBD78, 0xD415, 0xBD79, 0xD416, 0xBD7A, 0xD417, 0xBD81, 0xD418, 0xBD82, 0xD419, 0xBD83, 0xD41A, 0xBD84, 0xD41B, 0xBD85, + 0xD41C, 0xBD86, 0xD41D, 0xC7A2, 0xD41E, 0xBD87, 0xD41F, 0xBD88, 0xD420, 0xBD89, 0xD421, 0xBD8A, 0xD422, 0xBD8B, 0xD423, 0xBD8C, + 0xD424, 0xBD8D, 0xD425, 0xBD8E, 0xD426, 0xBD8F, 0xD427, 0xBD90, 0xD428, 0xBD91, 0xD429, 0xBD92, 0xD42A, 0xBD93, 0xD42B, 0xBD94, + 0xD42C, 0xBD95, 0xD42D, 0xBD96, 0xD42E, 0xBD97, 0xD42F, 0xBD98, 0xD430, 0xBD99, 0xD431, 0xBD9A, 0xD432, 0xBD9B, 0xD433, 0xBD9C, + 0xD434, 0xBD9D, 0xD435, 0xBD9E, 0xD436, 0xBD9F, 0xD437, 0xBDA0, 0xD438, 0xBE41, 0xD439, 0xBE42, 0xD43A, 0xBE43, 0xD43B, 0xBE44, + 0xD43C, 0xBE45, 0xD43D, 0xBE46, 0xD43E, 0xBE47, 0xD43F, 0xBE48, 0xD440, 0xC7A3, 0xD441, 0xBE49, 0xD442, 0xBE4A, 0xD443, 0xBE4B, + 0xD444, 0xC7A4, 0xD445, 0xBE4C, 0xD446, 0xBE4D, 0xD447, 0xBE4E, 0xD448, 0xBE4F, 0xD449, 0xBE50, 0xD44A, 0xBE51, 0xD44B, 0xBE52, + 0xD44C, 0xBE53, 0xD44D, 0xBE54, 0xD44E, 0xBE55, 0xD44F, 0xBE56, 0xD450, 0xBE57, 0xD451, 0xBE58, 0xD452, 0xBE59, 0xD453, 0xBE5A, + 0xD454, 0xBE61, 0xD455, 0xBE62, 0xD456, 0xBE63, 0xD457, 0xBE64, 0xD458, 0xBE65, 0xD459, 0xBE66, 0xD45A, 0xBE67, 0xD45B, 0xBE68, + 0xD45C, 0xC7A5, 0xD45D, 0xBE69, 0xD45E, 0xBE6A, 0xD45F, 0xBE6B, 0xD460, 0xC7A6, 0xD461, 0xBE6C, 0xD462, 0xBE6D, 0xD463, 0xBE6E, + 0xD464, 0xC7A7, 0xD465, 0xBE6F, 0xD466, 0xBE70, 0xD467, 0xBE71, 0xD468, 0xBE72, 0xD469, 0xBE73, 0xD46A, 0xBE74, 0xD46B, 0xBE75, + 0xD46C, 0xBE76, 0xD46D, 0xC7A8, 0xD46E, 0xBE77, 0xD46F, 0xC7A9, 0xD470, 0xBE78, 0xD471, 0xBE79, 0xD472, 0xBE7A, 0xD473, 0xBE81, + 0xD474, 0xBE82, 0xD475, 0xBE83, 0xD476, 0xBE84, 0xD477, 0xBE85, 0xD478, 0xC7AA, 0xD479, 0xC7AB, 0xD47A, 0xBE86, 0xD47B, 0xBE87, + 0xD47C, 0xC7AC, 0xD47D, 0xBE88, 0xD47E, 0xBE89, 0xD47F, 0xC7AD, 0xD480, 0xC7AE, 0xD481, 0xBE8A, 0xD482, 0xC7AF, 0xD483, 0xBE8B, + 0xD484, 0xBE8C, 0xD485, 0xBE8D, 0xD486, 0xBE8E, 0xD487, 0xBE8F, 0xD488, 0xC7B0, 0xD489, 0xC7B1, 0xD48A, 0xBE90, 0xD48B, 0xC7B2, + 0xD48C, 0xBE91, 0xD48D, 0xC7B3, 0xD48E, 0xBE92, 0xD48F, 0xBE93, 0xD490, 0xBE94, 0xD491, 0xBE95, 0xD492, 0xBE96, 0xD493, 0xBE97, + 0xD494, 0xC7B4, 0xD495, 0xBE98, 0xD496, 0xBE99, 0xD497, 0xBE9A, 0xD498, 0xBE9B, 0xD499, 0xBE9C, 0xD49A, 0xBE9D, 0xD49B, 0xBE9E, + 0xD49C, 0xBE9F, 0xD49D, 0xBEA0, 0xD49E, 0xBF41, 0xD49F, 0xBF42, 0xD4A0, 0xBF43, 0xD4A1, 0xBF44, 0xD4A2, 0xBF45, 0xD4A3, 0xBF46, + 0xD4A4, 0xBF47, 0xD4A5, 0xBF48, 0xD4A6, 0xBF49, 0xD4A7, 0xBF4A, 0xD4A8, 0xBF4B, 0xD4A9, 0xC7B5, 0xD4AA, 0xBF4C, 0xD4AB, 0xBF4D, + 0xD4AC, 0xBF4E, 0xD4AD, 0xBF4F, 0xD4AE, 0xBF50, 0xD4AF, 0xBF51, 0xD4B0, 0xBF52, 0xD4B1, 0xBF53, 0xD4B2, 0xBF54, 0xD4B3, 0xBF55, + 0xD4B4, 0xBF56, 0xD4B5, 0xBF57, 0xD4B6, 0xBF58, 0xD4B7, 0xBF59, 0xD4B8, 0xBF5A, 0xD4B9, 0xBF61, 0xD4BA, 0xBF62, 0xD4BB, 0xBF63, + 0xD4BC, 0xBF64, 0xD4BD, 0xBF65, 0xD4BE, 0xBF66, 0xD4BF, 0xBF67, 0xD4C0, 0xBF68, 0xD4C1, 0xBF69, 0xD4C2, 0xBF6A, 0xD4C3, 0xBF6B, + 0xD4C4, 0xBF6C, 0xD4C5, 0xBF6D, 0xD4C6, 0xBF6E, 0xD4C7, 0xBF6F, 0xD4C8, 0xBF70, 0xD4C9, 0xBF71, 0xD4CA, 0xBF72, 0xD4CB, 0xBF73, + 0xD4CC, 0xC7B6, 0xD4CD, 0xBF74, 0xD4CE, 0xBF75, 0xD4CF, 0xBF76, 0xD4D0, 0xC7B7, 0xD4D1, 0xBF77, 0xD4D2, 0xBF78, 0xD4D3, 0xBF79, + 0xD4D4, 0xC7B8, 0xD4D5, 0xBF7A, 0xD4D6, 0xBF81, 0xD4D7, 0xBF82, 0xD4D8, 0xBF83, 0xD4D9, 0xBF84, 0xD4DA, 0xBF85, 0xD4DB, 0xBF86, + 0xD4DC, 0xC7B9, 0xD4DD, 0xBF87, 0xD4DE, 0xBF88, 0xD4DF, 0xC7BA, 0xD4E0, 0xBF89, 0xD4E1, 0xBF8A, 0xD4E2, 0xBF8B, 0xD4E3, 0xBF8C, + 0xD4E4, 0xBF8D, 0xD4E5, 0xBF8E, 0xD4E6, 0xBF8F, 0xD4E7, 0xBF90, 0xD4E8, 0xC7BB, 0xD4E9, 0xBF91, 0xD4EA, 0xBF92, 0xD4EB, 0xBF93, + 0xD4EC, 0xC7BC, 0xD4ED, 0xBF94, 0xD4EE, 0xBF95, 0xD4EF, 0xBF96, 0xD4F0, 0xC7BD, 0xD4F1, 0xBF97, 0xD4F2, 0xBF98, 0xD4F3, 0xBF99, + 0xD4F4, 0xBF9A, 0xD4F5, 0xBF9B, 0xD4F6, 0xBF9C, 0xD4F7, 0xBF9D, 0xD4F8, 0xC7BE, 0xD4F9, 0xBF9E, 0xD4FA, 0xBF9F, 0xD4FB, 0xC7BF, + 0xD4FC, 0xBFA0, 0xD4FD, 0xC7C0, 0xD4FE, 0xC041, 0xD4FF, 0xC042, 0xD500, 0xC043, 0xD501, 0xC044, 0xD502, 0xC045, 0xD503, 0xC046, + 0xD504, 0xC7C1, 0xD505, 0xC047, 0xD506, 0xC048, 0xD507, 0xC049, 0xD508, 0xC7C2, 0xD509, 0xC04A, 0xD50A, 0xC04B, 0xD50B, 0xC04C, + 0xD50C, 0xC7C3, 0xD50D, 0xC04D, 0xD50E, 0xC04E, 0xD50F, 0xC04F, 0xD510, 0xC050, 0xD511, 0xC051, 0xD512, 0xC052, 0xD513, 0xC053, + 0xD514, 0xC7C4, 0xD515, 0xC7C5, 0xD516, 0xC054, 0xD517, 0xC7C6, 0xD518, 0xC055, 0xD519, 0xC056, 0xD51A, 0xC057, 0xD51B, 0xC058, + 0xD51C, 0xC059, 0xD51D, 0xC05A, 0xD51E, 0xC061, 0xD51F, 0xC062, 0xD520, 0xC063, 0xD521, 0xC064, 0xD522, 0xC065, 0xD523, 0xC066, + 0xD524, 0xC067, 0xD525, 0xC068, 0xD526, 0xC069, 0xD527, 0xC06A, 0xD528, 0xC06B, 0xD529, 0xC06C, 0xD52A, 0xC06D, 0xD52B, 0xC06E, + 0xD52C, 0xC06F, 0xD52D, 0xC070, 0xD52E, 0xC071, 0xD52F, 0xC072, 0xD530, 0xC073, 0xD531, 0xC074, 0xD532, 0xC075, 0xD533, 0xC076, + 0xD534, 0xC077, 0xD535, 0xC078, 0xD536, 0xC079, 0xD537, 0xC07A, 0xD538, 0xC081, 0xD539, 0xC082, 0xD53A, 0xC083, 0xD53B, 0xC084, + 0xD53C, 0xC7C7, 0xD53D, 0xC7C8, 0xD53E, 0xC085, 0xD53F, 0xC086, 0xD540, 0xC7C9, 0xD541, 0xC087, 0xD542, 0xC088, 0xD543, 0xC089, + 0xD544, 0xC7CA, 0xD545, 0xC08A, 0xD546, 0xC08B, 0xD547, 0xC08C, 0xD548, 0xC08D, 0xD549, 0xC08E, 0xD54A, 0xC08F, 0xD54B, 0xC090, + 0xD54C, 0xC7CB, 0xD54D, 0xC7CC, 0xD54E, 0xC091, 0xD54F, 0xC7CD, 0xD550, 0xC092, 0xD551, 0xC7CE, 0xD552, 0xC093, 0xD553, 0xC094, + 0xD554, 0xC095, 0xD555, 0xC096, 0xD556, 0xC097, 0xD557, 0xC098, 0xD558, 0xC7CF, 0xD559, 0xC7D0, 0xD55A, 0xC099, 0xD55B, 0xC09A, + 0xD55C, 0xC7D1, 0xD55D, 0xC09B, 0xD55E, 0xC09C, 0xD55F, 0xC09D, 0xD560, 0xC7D2, 0xD561, 0xC09E, 0xD562, 0xC09F, 0xD563, 0xC0A0, + 0xD564, 0xC141, 0xD565, 0xC7D3, 0xD566, 0xC142, 0xD567, 0xC143, 0xD568, 0xC7D4, 0xD569, 0xC7D5, 0xD56A, 0xC144, 0xD56B, 0xC7D6, + 0xD56C, 0xC145, 0xD56D, 0xC7D7, 0xD56E, 0xC146, 0xD56F, 0xC147, 0xD570, 0xC148, 0xD571, 0xC149, 0xD572, 0xC14A, 0xD573, 0xC14B, + 0xD574, 0xC7D8, 0xD575, 0xC7D9, 0xD576, 0xC14C, 0xD577, 0xC14D, 0xD578, 0xC7DA, 0xD579, 0xC14E, 0xD57A, 0xC14F, 0xD57B, 0xC150, + 0xD57C, 0xC7DB, 0xD57D, 0xC151, 0xD57E, 0xC152, 0xD57F, 0xC153, 0xD580, 0xC154, 0xD581, 0xC155, 0xD582, 0xC156, 0xD583, 0xC157, + 0xD584, 0xC7DC, 0xD585, 0xC7DD, 0xD586, 0xC158, 0xD587, 0xC7DE, 0xD588, 0xC7DF, 0xD589, 0xC7E0, 0xD58A, 0xC159, 0xD58B, 0xC15A, + 0xD58C, 0xC161, 0xD58D, 0xC162, 0xD58E, 0xC163, 0xD58F, 0xC164, 0xD590, 0xC7E1, 0xD591, 0xC165, 0xD592, 0xC166, 0xD593, 0xC167, + 0xD594, 0xC168, 0xD595, 0xC169, 0xD596, 0xC16A, 0xD597, 0xC16B, 0xD598, 0xC16C, 0xD599, 0xC16D, 0xD59A, 0xC16E, 0xD59B, 0xC16F, + 0xD59C, 0xC170, 0xD59D, 0xC171, 0xD59E, 0xC172, 0xD59F, 0xC173, 0xD5A0, 0xC174, 0xD5A1, 0xC175, 0xD5A2, 0xC176, 0xD5A3, 0xC177, + 0xD5A4, 0xC178, 0xD5A5, 0xC7E2, 0xD5A6, 0xC179, 0xD5A7, 0xC17A, 0xD5A8, 0xC181, 0xD5A9, 0xC182, 0xD5AA, 0xC183, 0xD5AB, 0xC184, + 0xD5AC, 0xC185, 0xD5AD, 0xC186, 0xD5AE, 0xC187, 0xD5AF, 0xC188, 0xD5B0, 0xC189, 0xD5B1, 0xC18A, 0xD5B2, 0xC18B, 0xD5B3, 0xC18C, + 0xD5B4, 0xC18D, 0xD5B5, 0xC18E, 0xD5B6, 0xC18F, 0xD5B7, 0xC190, 0xD5B8, 0xC191, 0xD5B9, 0xC192, 0xD5BA, 0xC193, 0xD5BB, 0xC194, + 0xD5BC, 0xC195, 0xD5BD, 0xC196, 0xD5BE, 0xC197, 0xD5BF, 0xC198, 0xD5C0, 0xC199, 0xD5C1, 0xC19A, 0xD5C2, 0xC19B, 0xD5C3, 0xC19C, + 0xD5C4, 0xC19D, 0xD5C5, 0xC19E, 0xD5C6, 0xC19F, 0xD5C7, 0xC1A0, 0xD5C8, 0xC7E3, 0xD5C9, 0xC7E4, 0xD5CA, 0xC241, 0xD5CB, 0xC242, + 0xD5CC, 0xC7E5, 0xD5CD, 0xC243, 0xD5CE, 0xC244, 0xD5CF, 0xC245, 0xD5D0, 0xC7E6, 0xD5D1, 0xC246, 0xD5D2, 0xC7E7, 0xD5D3, 0xC247, + 0xD5D4, 0xC248, 0xD5D5, 0xC249, 0xD5D6, 0xC24A, 0xD5D7, 0xC24B, 0xD5D8, 0xC7E8, 0xD5D9, 0xC7E9, 0xD5DA, 0xC24C, 0xD5DB, 0xC7EA, + 0xD5DC, 0xC24D, 0xD5DD, 0xC7EB, 0xD5DE, 0xC24E, 0xD5DF, 0xC24F, 0xD5E0, 0xC250, 0xD5E1, 0xC251, 0xD5E2, 0xC252, 0xD5E3, 0xC253, + 0xD5E4, 0xC7EC, 0xD5E5, 0xC7ED, 0xD5E6, 0xC254, 0xD5E7, 0xC255, 0xD5E8, 0xC7EE, 0xD5E9, 0xC256, 0xD5EA, 0xC257, 0xD5EB, 0xC258, + 0xD5EC, 0xC7EF, 0xD5ED, 0xC259, 0xD5EE, 0xC25A, 0xD5EF, 0xC261, 0xD5F0, 0xC262, 0xD5F1, 0xC263, 0xD5F2, 0xC264, 0xD5F3, 0xC265, + 0xD5F4, 0xC7F0, 0xD5F5, 0xC7F1, 0xD5F6, 0xC266, 0xD5F7, 0xC7F2, 0xD5F8, 0xC267, 0xD5F9, 0xC7F3, 0xD5FA, 0xC268, 0xD5FB, 0xC269, + 0xD5FC, 0xC26A, 0xD5FD, 0xC26B, 0xD5FE, 0xC26C, 0xD5FF, 0xC26D, 0xD600, 0xC7F4, 0xD601, 0xC7F5, 0xD602, 0xC26E, 0xD603, 0xC26F, + 0xD604, 0xC7F6, 0xD605, 0xC270, 0xD606, 0xC271, 0xD607, 0xC272, 0xD608, 0xC7F7, 0xD609, 0xC273, 0xD60A, 0xC274, 0xD60B, 0xC275, + 0xD60C, 0xC276, 0xD60D, 0xC277, 0xD60E, 0xC278, 0xD60F, 0xC279, 0xD610, 0xC7F8, 0xD611, 0xC7F9, 0xD612, 0xC27A, 0xD613, 0xC7FA, + 0xD614, 0xC7FB, 0xD615, 0xC7FC, 0xD616, 0xC281, 0xD617, 0xC282, 0xD618, 0xC283, 0xD619, 0xC284, 0xD61A, 0xC285, 0xD61B, 0xC286, + 0xD61C, 0xC7FD, 0xD61D, 0xC287, 0xD61E, 0xC288, 0xD61F, 0xC289, 0xD620, 0xC7FE, 0xD621, 0xC28A, 0xD622, 0xC28B, 0xD623, 0xC28C, + 0xD624, 0xC8A1, 0xD625, 0xC28D, 0xD626, 0xC28E, 0xD627, 0xC28F, 0xD628, 0xC290, 0xD629, 0xC291, 0xD62A, 0xC292, 0xD62B, 0xC293, + 0xD62C, 0xC294, 0xD62D, 0xC8A2, 0xD62E, 0xC295, 0xD62F, 0xC296, 0xD630, 0xC297, 0xD631, 0xC298, 0xD632, 0xC299, 0xD633, 0xC29A, + 0xD634, 0xC29B, 0xD635, 0xC29C, 0xD636, 0xC29D, 0xD637, 0xC29E, 0xD638, 0xC8A3, 0xD639, 0xC8A4, 0xD63A, 0xC29F, 0xD63B, 0xC2A0, + 0xD63C, 0xC8A5, 0xD63D, 0xC341, 0xD63E, 0xC342, 0xD63F, 0xC343, 0xD640, 0xC8A6, 0xD641, 0xC344, 0xD642, 0xC345, 0xD643, 0xC346, + 0xD644, 0xC347, 0xD645, 0xC8A7, 0xD646, 0xC348, 0xD647, 0xC349, 0xD648, 0xC8A8, 0xD649, 0xC8A9, 0xD64A, 0xC34A, 0xD64B, 0xC8AA, + 0xD64C, 0xC34B, 0xD64D, 0xC8AB, 0xD64E, 0xC34C, 0xD64F, 0xC34D, 0xD650, 0xC34E, 0xD651, 0xC8AC, 0xD652, 0xC34F, 0xD653, 0xC350, + 0xD654, 0xC8AD, 0xD655, 0xC8AE, 0xD656, 0xC351, 0xD657, 0xC352, 0xD658, 0xC8AF, 0xD659, 0xC353, 0xD65A, 0xC354, 0xD65B, 0xC355, + 0xD65C, 0xC8B0, 0xD65D, 0xC356, 0xD65E, 0xC357, 0xD65F, 0xC358, 0xD660, 0xC359, 0xD661, 0xC35A, 0xD662, 0xC361, 0xD663, 0xC362, + 0xD664, 0xC363, 0xD665, 0xC364, 0xD666, 0xC365, 0xD667, 0xC8B1, 0xD668, 0xC366, 0xD669, 0xC8B2, 0xD66A, 0xC367, 0xD66B, 0xC368, + 0xD66C, 0xC369, 0xD66D, 0xC36A, 0xD66E, 0xC36B, 0xD66F, 0xC36C, 0xD670, 0xC8B3, 0xD671, 0xC8B4, 0xD672, 0xC36D, 0xD673, 0xC36E, + 0xD674, 0xC8B5, 0xD675, 0xC36F, 0xD676, 0xC370, 0xD677, 0xC371, 0xD678, 0xC372, 0xD679, 0xC373, 0xD67A, 0xC374, 0xD67B, 0xC375, + 0xD67C, 0xC376, 0xD67D, 0xC377, 0xD67E, 0xC378, 0xD67F, 0xC379, 0xD680, 0xC37A, 0xD681, 0xC381, 0xD682, 0xC382, 0xD683, 0xC8B6, + 0xD684, 0xC383, 0xD685, 0xC8B7, 0xD686, 0xC384, 0xD687, 0xC385, 0xD688, 0xC386, 0xD689, 0xC387, 0xD68A, 0xC388, 0xD68B, 0xC389, + 0xD68C, 0xC8B8, 0xD68D, 0xC8B9, 0xD68E, 0xC38A, 0xD68F, 0xC38B, 0xD690, 0xC8BA, 0xD691, 0xC38C, 0xD692, 0xC38D, 0xD693, 0xC38E, + 0xD694, 0xC8BB, 0xD695, 0xC38F, 0xD696, 0xC390, 0xD697, 0xC391, 0xD698, 0xC392, 0xD699, 0xC393, 0xD69A, 0xC394, 0xD69B, 0xC395, + 0xD69C, 0xC396, 0xD69D, 0xC8BC, 0xD69E, 0xC397, 0xD69F, 0xC8BD, 0xD6A0, 0xC398, 0xD6A1, 0xC8BE, 0xD6A2, 0xC399, 0xD6A3, 0xC39A, + 0xD6A4, 0xC39B, 0xD6A5, 0xC39C, 0xD6A6, 0xC39D, 0xD6A7, 0xC39E, 0xD6A8, 0xC8BF, 0xD6A9, 0xC39F, 0xD6AA, 0xC3A0, 0xD6AB, 0xC441, + 0xD6AC, 0xC8C0, 0xD6AD, 0xC442, 0xD6AE, 0xC443, 0xD6AF, 0xC444, 0xD6B0, 0xC8C1, 0xD6B1, 0xC445, 0xD6B2, 0xC446, 0xD6B3, 0xC447, + 0xD6B4, 0xC448, 0xD6B5, 0xC449, 0xD6B6, 0xC44A, 0xD6B7, 0xC44B, 0xD6B8, 0xC44C, 0xD6B9, 0xC8C2, 0xD6BA, 0xC44D, 0xD6BB, 0xC8C3, + 0xD6BC, 0xC44E, 0xD6BD, 0xC44F, 0xD6BE, 0xC450, 0xD6BF, 0xC451, 0xD6C0, 0xC452, 0xD6C1, 0xC453, 0xD6C2, 0xC454, 0xD6C3, 0xC455, + 0xD6C4, 0xC8C4, 0xD6C5, 0xC8C5, 0xD6C6, 0xC456, 0xD6C7, 0xC457, 0xD6C8, 0xC8C6, 0xD6C9, 0xC458, 0xD6CA, 0xC459, 0xD6CB, 0xC45A, + 0xD6CC, 0xC8C7, 0xD6CD, 0xC461, 0xD6CE, 0xC462, 0xD6CF, 0xC463, 0xD6D0, 0xC464, 0xD6D1, 0xC8C8, 0xD6D2, 0xC465, 0xD6D3, 0xC466, + 0xD6D4, 0xC8C9, 0xD6D5, 0xC467, 0xD6D6, 0xC468, 0xD6D7, 0xC8CA, 0xD6D8, 0xC469, 0xD6D9, 0xC8CB, 0xD6DA, 0xC46A, 0xD6DB, 0xC46B, + 0xD6DC, 0xC46C, 0xD6DD, 0xC46D, 0xD6DE, 0xC46E, 0xD6DF, 0xC46F, 0xD6E0, 0xC8CC, 0xD6E1, 0xC470, 0xD6E2, 0xC471, 0xD6E3, 0xC472, + 0xD6E4, 0xC8CD, 0xD6E5, 0xC473, 0xD6E6, 0xC474, 0xD6E7, 0xC475, 0xD6E8, 0xC8CE, 0xD6E9, 0xC476, 0xD6EA, 0xC477, 0xD6EB, 0xC478, + 0xD6EC, 0xC479, 0xD6ED, 0xC47A, 0xD6EE, 0xC481, 0xD6EF, 0xC482, 0xD6F0, 0xC8CF, 0xD6F1, 0xC483, 0xD6F2, 0xC484, 0xD6F3, 0xC485, + 0xD6F4, 0xC486, 0xD6F5, 0xC8D0, 0xD6F6, 0xC487, 0xD6F7, 0xC488, 0xD6F8, 0xC489, 0xD6F9, 0xC48A, 0xD6FA, 0xC48B, 0xD6FB, 0xC48C, + 0xD6FC, 0xC8D1, 0xD6FD, 0xC8D2, 0xD6FE, 0xC48D, 0xD6FF, 0xC48E, 0xD700, 0xC8D3, 0xD701, 0xC48F, 0xD702, 0xC490, 0xD703, 0xC491, + 0xD704, 0xC8D4, 0xD705, 0xC492, 0xD706, 0xC493, 0xD707, 0xC494, 0xD708, 0xC495, 0xD709, 0xC496, 0xD70A, 0xC497, 0xD70B, 0xC498, + 0xD70C, 0xC499, 0xD70D, 0xC49A, 0xD70E, 0xC49B, 0xD70F, 0xC49C, 0xD710, 0xC49D, 0xD711, 0xC8D5, 0xD712, 0xC49E, 0xD713, 0xC49F, + 0xD714, 0xC4A0, 0xD715, 0xC541, 0xD716, 0xC542, 0xD717, 0xC543, 0xD718, 0xC8D6, 0xD719, 0xC8D7, 0xD71A, 0xC544, 0xD71B, 0xC545, + 0xD71C, 0xC8D8, 0xD71D, 0xC546, 0xD71E, 0xC547, 0xD71F, 0xC548, 0xD720, 0xC8D9, 0xD721, 0xC549, 0xD722, 0xC54A, 0xD723, 0xC54B, + 0xD724, 0xC54C, 0xD725, 0xC54D, 0xD726, 0xC54E, 0xD727, 0xC54F, 0xD728, 0xC8DA, 0xD729, 0xC8DB, 0xD72A, 0xC550, 0xD72B, 0xC8DC, + 0xD72C, 0xC551, 0xD72D, 0xC8DD, 0xD72E, 0xC552, 0xD72F, 0xC553, 0xD730, 0xC554, 0xD731, 0xC555, 0xD732, 0xC556, 0xD733, 0xC557, + 0xD734, 0xC8DE, 0xD735, 0xC8DF, 0xD736, 0xC558, 0xD737, 0xC559, 0xD738, 0xC8E0, 0xD739, 0xC55A, 0xD73A, 0xC561, 0xD73B, 0xC562, + 0xD73C, 0xC8E1, 0xD73D, 0xC563, 0xD73E, 0xC564, 0xD73F, 0xC565, 0xD740, 0xC566, 0xD741, 0xC567, 0xD742, 0xC568, 0xD743, 0xC569, + 0xD744, 0xC8E2, 0xD745, 0xC56A, 0xD746, 0xC56B, 0xD747, 0xC8E3, 0xD748, 0xC56C, 0xD749, 0xC8E4, 0xD74A, 0xC56D, 0xD74B, 0xC56E, + 0xD74C, 0xC56F, 0xD74D, 0xC570, 0xD74E, 0xC571, 0xD74F, 0xC572, 0xD750, 0xC8E5, 0xD751, 0xC8E6, 0xD752, 0xC573, 0xD753, 0xC574, + 0xD754, 0xC8E7, 0xD755, 0xC575, 0xD756, 0xC8E8, 0xD757, 0xC8E9, 0xD758, 0xC8EA, 0xD759, 0xC8EB, 0xD75A, 0xC576, 0xD75B, 0xC577, + 0xD75C, 0xC578, 0xD75D, 0xC579, 0xD75E, 0xC57A, 0xD75F, 0xC581, 0xD760, 0xC8EC, 0xD761, 0xC8ED, 0xD762, 0xC582, 0xD763, 0xC8EE, + 0xD764, 0xC583, 0xD765, 0xC8EF, 0xD766, 0xC584, 0xD767, 0xC585, 0xD768, 0xC586, 0xD769, 0xC8F0, 0xD76A, 0xC587, 0xD76B, 0xC588, + 0xD76C, 0xC8F1, 0xD76D, 0xC589, 0xD76E, 0xC58A, 0xD76F, 0xC58B, 0xD770, 0xC8F2, 0xD771, 0xC58C, 0xD772, 0xC58D, 0xD773, 0xC58E, + 0xD774, 0xC8F3, 0xD775, 0xC58F, 0xD776, 0xC590, 0xD777, 0xC591, 0xD778, 0xC592, 0xD779, 0xC593, 0xD77A, 0xC594, 0xD77B, 0xC595, + 0xD77C, 0xC8F4, 0xD77D, 0xC8F5, 0xD77E, 0xC596, 0xD77F, 0xC597, 0xD780, 0xC598, 0xD781, 0xC8F6, 0xD782, 0xC599, 0xD783, 0xC59A, + 0xD784, 0xC59B, 0xD785, 0xC59C, 0xD786, 0xC59D, 0xD787, 0xC59E, 0xD788, 0xC8F7, 0xD789, 0xC8F8, 0xD78A, 0xC59F, 0xD78B, 0xC5A0, + 0xD78C, 0xC8F9, 0xD78D, 0xC641, 0xD78E, 0xC642, 0xD78F, 0xC643, 0xD790, 0xC8FA, 0xD791, 0xC644, 0xD792, 0xC645, 0xD793, 0xC646, + 0xD794, 0xC647, 0xD795, 0xC648, 0xD796, 0xC649, 0xD797, 0xC64A, 0xD798, 0xC8FB, 0xD799, 0xC8FC, 0xD79A, 0xC64B, 0xD79B, 0xC8FD, + 0xD79C, 0xC64C, 0xD79D, 0xC8FE, 0xD79E, 0xC64D, 0xD79F, 0xC64E, 0xD7A0, 0xC64F, 0xD7A1, 0xC650, 0xD7A2, 0xC651, 0xD7A3, 0xC652, + 0xF900, 0xCBD0, 0xF901, 0xCBD6, 0xF902, 0xCBE7, 0xF903, 0xCDCF, 0xF904, 0xCDE8, 0xF905, 0xCEAD, 0xF906, 0xCFFB, 0xF907, 0xD0A2, + 0xF908, 0xD0B8, 0xF909, 0xD0D0, 0xF90A, 0xD0DD, 0xF90B, 0xD1D4, 0xF90C, 0xD1D5, 0xF90D, 0xD1D8, 0xF90E, 0xD1DB, 0xF90F, 0xD1DC, + 0xF910, 0xD1DD, 0xF911, 0xD1DE, 0xF912, 0xD1DF, 0xF913, 0xD1E0, 0xF914, 0xD1E2, 0xF915, 0xD1E3, 0xF916, 0xD1E4, 0xF917, 0xD1E5, + 0xF918, 0xD1E6, 0xF919, 0xD1E8, 0xF91A, 0xD1E9, 0xF91B, 0xD1EA, 0xF91C, 0xD1EB, 0xF91D, 0xD1ED, 0xF91E, 0xD1EF, 0xF91F, 0xD1F0, + 0xF920, 0xD1F2, 0xF921, 0xD1F6, 0xF922, 0xD1FA, 0xF923, 0xD1FC, 0xF924, 0xD1FD, 0xF925, 0xD1FE, 0xF926, 0xD2A2, 0xF927, 0xD2A3, + 0xF928, 0xD2A7, 0xF929, 0xD2A8, 0xF92A, 0xD2A9, 0xF92B, 0xD2AA, 0xF92C, 0xD2AB, 0xF92D, 0xD2AD, 0xF92E, 0xD2B2, 0xF92F, 0xD2BE, + 0xF930, 0xD2C2, 0xF931, 0xD2C3, 0xF932, 0xD2C4, 0xF933, 0xD2C6, 0xF934, 0xD2C7, 0xF935, 0xD2C8, 0xF936, 0xD2C9, 0xF937, 0xD2CA, + 0xF938, 0xD2CB, 0xF939, 0xD2CD, 0xF93A, 0xD2CE, 0xF93B, 0xD2CF, 0xF93C, 0xD2D0, 0xF93D, 0xD2D1, 0xF93E, 0xD2D2, 0xF93F, 0xD2D3, + 0xF940, 0xD2D4, 0xF941, 0xD2D5, 0xF942, 0xD2D6, 0xF943, 0xD2D7, 0xF944, 0xD2D9, 0xF945, 0xD2DA, 0xF946, 0xD2DE, 0xF947, 0xD2DF, + 0xF948, 0xD2E1, 0xF949, 0xD2E2, 0xF94A, 0xD2E4, 0xF94B, 0xD2E5, 0xF94C, 0xD2E6, 0xF94D, 0xD2E7, 0xF94E, 0xD2E8, 0xF94F, 0xD2E9, + 0xF950, 0xD2EA, 0xF951, 0xD2EB, 0xF952, 0xD2F0, 0xF953, 0xD2F1, 0xF954, 0xD2F2, 0xF955, 0xD2F3, 0xF956, 0xD2F4, 0xF957, 0xD2F5, + 0xF958, 0xD2F7, 0xF959, 0xD2F8, 0xF95A, 0xD4E6, 0xF95B, 0xD4FC, 0xF95C, 0xD5A5, 0xF95D, 0xD5AB, 0xF95E, 0xD5AE, 0xF95F, 0xD6B8, + 0xF960, 0xD6CD, 0xF961, 0xD7CB, 0xF962, 0xD7E4, 0xF963, 0xDBC5, 0xF964, 0xDBE4, 0xF965, 0xDCA5, 0xF966, 0xDDA5, 0xF967, 0xDDD5, + 0xF968, 0xDDF4, 0xF969, 0xDEFC, 0xF96A, 0xDEFE, 0xF96B, 0xDFB3, 0xF96C, 0xDFE1, 0xF96D, 0xDFE8, 0xF96E, 0xE0F1, 0xF96F, 0xE1AD, + 0xF970, 0xE1ED, 0xF971, 0xE3F5, 0xF972, 0xE4A1, 0xF973, 0xE4A9, 0xF974, 0xE5AE, 0xF975, 0xE5B1, 0xF976, 0xE5B2, 0xF977, 0xE5B9, + 0xF978, 0xE5BB, 0xF979, 0xE5BC, 0xF97A, 0xE5C4, 0xF97B, 0xE5CE, 0xF97C, 0xE5D0, 0xF97D, 0xE5D2, 0xF97E, 0xE5D6, 0xF97F, 0xE5FA, + 0xF980, 0xE5FB, 0xF981, 0xE5FC, 0xF982, 0xE5FE, 0xF983, 0xE6A1, 0xF984, 0xE6A4, 0xF985, 0xE6A7, 0xF986, 0xE6AD, 0xF987, 0xE6AF, + 0xF988, 0xE6B0, 0xF989, 0xE6B1, 0xF98A, 0xE6B3, 0xF98B, 0xE6B7, 0xF98C, 0xE6B8, 0xF98D, 0xE6BC, 0xF98E, 0xE6C4, 0xF98F, 0xE6C6, + 0xF990, 0xE6C7, 0xF991, 0xE6CA, 0xF992, 0xE6D2, 0xF993, 0xE6D6, 0xF994, 0xE6D9, 0xF995, 0xE6DC, 0xF996, 0xE6DF, 0xF997, 0xE6E1, + 0xF998, 0xE6E4, 0xF999, 0xE6E5, 0xF99A, 0xE6E6, 0xF99B, 0xE6E8, 0xF99C, 0xE6EA, 0xF99D, 0xE6EB, 0xF99E, 0xE6EC, 0xF99F, 0xE6EF, + 0xF9A0, 0xE6F1, 0xF9A1, 0xE6F2, 0xF9A2, 0xE6F5, 0xF9A3, 0xE6F6, 0xF9A4, 0xE6F7, 0xF9A5, 0xE6F9, 0xF9A6, 0xE7A1, 0xF9A7, 0xE7A6, + 0xF9A8, 0xE7A9, 0xF9A9, 0xE7AA, 0xF9AA, 0xE7AC, 0xF9AB, 0xE7AD, 0xF9AC, 0xE7B0, 0xF9AD, 0xE7BF, 0xF9AE, 0xE7C1, 0xF9AF, 0xE7C6, + 0xF9B0, 0xE7C7, 0xF9B1, 0xE7CB, 0xF9B2, 0xE7CD, 0xF9B3, 0xE7CF, 0xF9B4, 0xE7D0, 0xF9B5, 0xE7D3, 0xF9B6, 0xE7DF, 0xF9B7, 0xE7E4, + 0xF9B8, 0xE7E6, 0xF9B9, 0xE7F7, 0xF9BA, 0xE8E7, 0xF9BB, 0xE8E8, 0xF9BC, 0xE8F0, 0xF9BD, 0xE8F1, 0xF9BE, 0xE8F7, 0xF9BF, 0xE8F9, + 0xF9C0, 0xE8FB, 0xF9C1, 0xE8FE, 0xF9C2, 0xE9A7, 0xF9C3, 0xE9AC, 0xF9C4, 0xE9CC, 0xF9C5, 0xE9F7, 0xF9C6, 0xEAC1, 0xF9C7, 0xEAE5, + 0xF9C8, 0xEAF4, 0xF9C9, 0xEAF7, 0xF9CA, 0xEAFC, 0xF9CB, 0xEAFE, 0xF9CC, 0xEBA4, 0xF9CD, 0xEBA7, 0xF9CE, 0xEBA9, 0xF9CF, 0xEBAA, + 0xF9D0, 0xEBBA, 0xF9D1, 0xEBBB, 0xF9D2, 0xEBBD, 0xF9D3, 0xEBC1, 0xF9D4, 0xEBC2, 0xF9D5, 0xEBC6, 0xF9D6, 0xEBC7, 0xF9D7, 0xEBCC, + 0xF9D8, 0xEBCF, 0xF9D9, 0xEBD0, 0xF9DA, 0xEBD1, 0xF9DB, 0xEBD2, 0xF9DC, 0xEBD8, 0xF9DD, 0xECA6, 0xF9DE, 0xECA7, 0xF9DF, 0xECAA, + 0xF9E0, 0xECAF, 0xF9E1, 0xECB0, 0xF9E2, 0xECB1, 0xF9E3, 0xECB2, 0xF9E4, 0xECB5, 0xF9E5, 0xECB8, 0xF9E6, 0xECBA, 0xF9E7, 0xECC0, + 0xF9E8, 0xECC1, 0xF9E9, 0xECC5, 0xF9EA, 0xECC6, 0xF9EB, 0xECC9, 0xF9EC, 0xECCA, 0xF9ED, 0xECD5, 0xF9EE, 0xECDD, 0xF9EF, 0xECDE, + 0xF9F0, 0xECE1, 0xF9F1, 0xECE4, 0xF9F2, 0xECE7, 0xF9F3, 0xECE8, 0xF9F4, 0xECF7, 0xF9F5, 0xECF8, 0xF9F6, 0xECFA, 0xF9F7, 0xEDA1, + 0xF9F8, 0xEDA2, 0xF9F9, 0xEDA3, 0xF9FA, 0xEDEE, 0xF9FB, 0xEEDB, 0xF9FC, 0xF2BD, 0xF9FD, 0xF2FA, 0xF9FE, 0xF3B1, 0xF9FF, 0xF4A7, + 0xFA00, 0xF4EE, 0xFA01, 0xF6F4, 0xFA02, 0xF6F6, 0xFA03, 0xF7B8, 0xFA04, 0xF7C8, 0xFA05, 0xF7D3, 0xFA06, 0xF8DB, 0xFA07, 0xF8F0, + 0xFA08, 0xFAA1, 0xFA09, 0xFAA2, 0xFA0A, 0xFAE6, 0xFA0B, 0xFCA9, 0xFF01, 0xA3A1, 0xFF02, 0xA3A2, 0xFF03, 0xA3A3, 0xFF04, 0xA3A4, + 0xFF05, 0xA3A5, 0xFF06, 0xA3A6, 0xFF07, 0xA3A7, 0xFF08, 0xA3A8, 0xFF09, 0xA3A9, 0xFF0A, 0xA3AA, 0xFF0B, 0xA3AB, 0xFF0C, 0xA3AC, + 0xFF0D, 0xA3AD, 0xFF0E, 0xA3AE, 0xFF0F, 0xA3AF, 0xFF10, 0xA3B0, 0xFF11, 0xA3B1, 0xFF12, 0xA3B2, 0xFF13, 0xA3B3, 0xFF14, 0xA3B4, + 0xFF15, 0xA3B5, 0xFF16, 0xA3B6, 0xFF17, 0xA3B7, 0xFF18, 0xA3B8, 0xFF19, 0xA3B9, 0xFF1A, 0xA3BA, 0xFF1B, 0xA3BB, 0xFF1C, 0xA3BC, + 0xFF1D, 0xA3BD, 0xFF1E, 0xA3BE, 0xFF1F, 0xA3BF, 0xFF20, 0xA3C0, 0xFF21, 0xA3C1, 0xFF22, 0xA3C2, 0xFF23, 0xA3C3, 0xFF24, 0xA3C4, + 0xFF25, 0xA3C5, 0xFF26, 0xA3C6, 0xFF27, 0xA3C7, 0xFF28, 0xA3C8, 0xFF29, 0xA3C9, 0xFF2A, 0xA3CA, 0xFF2B, 0xA3CB, 0xFF2C, 0xA3CC, + 0xFF2D, 0xA3CD, 0xFF2E, 0xA3CE, 0xFF2F, 0xA3CF, 0xFF30, 0xA3D0, 0xFF31, 0xA3D1, 0xFF32, 0xA3D2, 0xFF33, 0xA3D3, 0xFF34, 0xA3D4, + 0xFF35, 0xA3D5, 0xFF36, 0xA3D6, 0xFF37, 0xA3D7, 0xFF38, 0xA3D8, 0xFF39, 0xA3D9, 0xFF3A, 0xA3DA, 0xFF3B, 0xA3DB, 0xFF3C, 0xA1AC, + 0xFF3D, 0xA3DD, 0xFF3E, 0xA3DE, 0xFF3F, 0xA3DF, 0xFF40, 0xA3E0, 0xFF41, 0xA3E1, 0xFF42, 0xA3E2, 0xFF43, 0xA3E3, 0xFF44, 0xA3E4, + 0xFF45, 0xA3E5, 0xFF46, 0xA3E6, 0xFF47, 0xA3E7, 0xFF48, 0xA3E8, 0xFF49, 0xA3E9, 0xFF4A, 0xA3EA, 0xFF4B, 0xA3EB, 0xFF4C, 0xA3EC, + 0xFF4D, 0xA3ED, 0xFF4E, 0xA3EE, 0xFF4F, 0xA3EF, 0xFF50, 0xA3F0, 0xFF51, 0xA3F1, 0xFF52, 0xA3F2, 0xFF53, 0xA3F3, 0xFF54, 0xA3F4, + 0xFF55, 0xA3F5, 0xFF56, 0xA3F6, 0xFF57, 0xA3F7, 0xFF58, 0xA3F8, 0xFF59, 0xA3F9, 0xFF5A, 0xA3FA, 0xFF5B, 0xA3FB, 0xFF5C, 0xA3FC, + 0xFF5D, 0xA3FD, 0xFF5E, 0xA2A6, 0xFFE0, 0xA1CB, 0xFFE1, 0xA1CC, 0xFFE2, 0xA1FE, 0xFFE3, 0xA3FE, 0xFFE5, 0xA1CD, 0xFFE6, 0xA3DC, + 0, 0 +}; + +static const WCHAR oem2uni949[] = { /* Korean --> Unicode pairs */ + 0x8141, 0xAC02, 0x8142, 0xAC03, 0x8143, 0xAC05, 0x8144, 0xAC06, 0x8145, 0xAC0B, 0x8146, 0xAC0C, 0x8147, 0xAC0D, 0x8148, 0xAC0E, + 0x8149, 0xAC0F, 0x814A, 0xAC18, 0x814B, 0xAC1E, 0x814C, 0xAC1F, 0x814D, 0xAC21, 0x814E, 0xAC22, 0x814F, 0xAC23, 0x8150, 0xAC25, + 0x8151, 0xAC26, 0x8152, 0xAC27, 0x8153, 0xAC28, 0x8154, 0xAC29, 0x8155, 0xAC2A, 0x8156, 0xAC2B, 0x8157, 0xAC2E, 0x8158, 0xAC32, + 0x8159, 0xAC33, 0x815A, 0xAC34, 0x8161, 0xAC35, 0x8162, 0xAC36, 0x8163, 0xAC37, 0x8164, 0xAC3A, 0x8165, 0xAC3B, 0x8166, 0xAC3D, + 0x8167, 0xAC3E, 0x8168, 0xAC3F, 0x8169, 0xAC41, 0x816A, 0xAC42, 0x816B, 0xAC43, 0x816C, 0xAC44, 0x816D, 0xAC45, 0x816E, 0xAC46, + 0x816F, 0xAC47, 0x8170, 0xAC48, 0x8171, 0xAC49, 0x8172, 0xAC4A, 0x8173, 0xAC4C, 0x8174, 0xAC4E, 0x8175, 0xAC4F, 0x8176, 0xAC50, + 0x8177, 0xAC51, 0x8178, 0xAC52, 0x8179, 0xAC53, 0x817A, 0xAC55, 0x8181, 0xAC56, 0x8182, 0xAC57, 0x8183, 0xAC59, 0x8184, 0xAC5A, + 0x8185, 0xAC5B, 0x8186, 0xAC5D, 0x8187, 0xAC5E, 0x8188, 0xAC5F, 0x8189, 0xAC60, 0x818A, 0xAC61, 0x818B, 0xAC62, 0x818C, 0xAC63, + 0x818D, 0xAC64, 0x818E, 0xAC65, 0x818F, 0xAC66, 0x8190, 0xAC67, 0x8191, 0xAC68, 0x8192, 0xAC69, 0x8193, 0xAC6A, 0x8194, 0xAC6B, + 0x8195, 0xAC6C, 0x8196, 0xAC6D, 0x8197, 0xAC6E, 0x8198, 0xAC6F, 0x8199, 0xAC72, 0x819A, 0xAC73, 0x819B, 0xAC75, 0x819C, 0xAC76, + 0x819D, 0xAC79, 0x819E, 0xAC7B, 0x819F, 0xAC7C, 0x81A0, 0xAC7D, 0x81A1, 0xAC7E, 0x81A2, 0xAC7F, 0x81A3, 0xAC82, 0x81A4, 0xAC87, + 0x81A5, 0xAC88, 0x81A6, 0xAC8D, 0x81A7, 0xAC8E, 0x81A8, 0xAC8F, 0x81A9, 0xAC91, 0x81AA, 0xAC92, 0x81AB, 0xAC93, 0x81AC, 0xAC95, + 0x81AD, 0xAC96, 0x81AE, 0xAC97, 0x81AF, 0xAC98, 0x81B0, 0xAC99, 0x81B1, 0xAC9A, 0x81B2, 0xAC9B, 0x81B3, 0xAC9E, 0x81B4, 0xACA2, + 0x81B5, 0xACA3, 0x81B6, 0xACA4, 0x81B7, 0xACA5, 0x81B8, 0xACA6, 0x81B9, 0xACA7, 0x81BA, 0xACAB, 0x81BB, 0xACAD, 0x81BC, 0xACAE, + 0x81BD, 0xACB1, 0x81BE, 0xACB2, 0x81BF, 0xACB3, 0x81C0, 0xACB4, 0x81C1, 0xACB5, 0x81C2, 0xACB6, 0x81C3, 0xACB7, 0x81C4, 0xACBA, + 0x81C5, 0xACBE, 0x81C6, 0xACBF, 0x81C7, 0xACC0, 0x81C8, 0xACC2, 0x81C9, 0xACC3, 0x81CA, 0xACC5, 0x81CB, 0xACC6, 0x81CC, 0xACC7, + 0x81CD, 0xACC9, 0x81CE, 0xACCA, 0x81CF, 0xACCB, 0x81D0, 0xACCD, 0x81D1, 0xACCE, 0x81D2, 0xACCF, 0x81D3, 0xACD0, 0x81D4, 0xACD1, + 0x81D5, 0xACD2, 0x81D6, 0xACD3, 0x81D7, 0xACD4, 0x81D8, 0xACD6, 0x81D9, 0xACD8, 0x81DA, 0xACD9, 0x81DB, 0xACDA, 0x81DC, 0xACDB, + 0x81DD, 0xACDC, 0x81DE, 0xACDD, 0x81DF, 0xACDE, 0x81E0, 0xACDF, 0x81E1, 0xACE2, 0x81E2, 0xACE3, 0x81E3, 0xACE5, 0x81E4, 0xACE6, + 0x81E5, 0xACE9, 0x81E6, 0xACEB, 0x81E7, 0xACED, 0x81E8, 0xACEE, 0x81E9, 0xACF2, 0x81EA, 0xACF4, 0x81EB, 0xACF7, 0x81EC, 0xACF8, + 0x81ED, 0xACF9, 0x81EE, 0xACFA, 0x81EF, 0xACFB, 0x81F0, 0xACFE, 0x81F1, 0xACFF, 0x81F2, 0xAD01, 0x81F3, 0xAD02, 0x81F4, 0xAD03, + 0x81F5, 0xAD05, 0x81F6, 0xAD07, 0x81F7, 0xAD08, 0x81F8, 0xAD09, 0x81F9, 0xAD0A, 0x81FA, 0xAD0B, 0x81FB, 0xAD0E, 0x81FC, 0xAD10, + 0x81FD, 0xAD12, 0x81FE, 0xAD13, 0x8241, 0xAD14, 0x8242, 0xAD15, 0x8243, 0xAD16, 0x8244, 0xAD17, 0x8245, 0xAD19, 0x8246, 0xAD1A, + 0x8247, 0xAD1B, 0x8248, 0xAD1D, 0x8249, 0xAD1E, 0x824A, 0xAD1F, 0x824B, 0xAD21, 0x824C, 0xAD22, 0x824D, 0xAD23, 0x824E, 0xAD24, + 0x824F, 0xAD25, 0x8250, 0xAD26, 0x8251, 0xAD27, 0x8252, 0xAD28, 0x8253, 0xAD2A, 0x8254, 0xAD2B, 0x8255, 0xAD2E, 0x8256, 0xAD2F, + 0x8257, 0xAD30, 0x8258, 0xAD31, 0x8259, 0xAD32, 0x825A, 0xAD33, 0x8261, 0xAD36, 0x8262, 0xAD37, 0x8263, 0xAD39, 0x8264, 0xAD3A, + 0x8265, 0xAD3B, 0x8266, 0xAD3D, 0x8267, 0xAD3E, 0x8268, 0xAD3F, 0x8269, 0xAD40, 0x826A, 0xAD41, 0x826B, 0xAD42, 0x826C, 0xAD43, + 0x826D, 0xAD46, 0x826E, 0xAD48, 0x826F, 0xAD4A, 0x8270, 0xAD4B, 0x8271, 0xAD4C, 0x8272, 0xAD4D, 0x8273, 0xAD4E, 0x8274, 0xAD4F, + 0x8275, 0xAD51, 0x8276, 0xAD52, 0x8277, 0xAD53, 0x8278, 0xAD55, 0x8279, 0xAD56, 0x827A, 0xAD57, 0x8281, 0xAD59, 0x8282, 0xAD5A, + 0x8283, 0xAD5B, 0x8284, 0xAD5C, 0x8285, 0xAD5D, 0x8286, 0xAD5E, 0x8287, 0xAD5F, 0x8288, 0xAD60, 0x8289, 0xAD62, 0x828A, 0xAD64, + 0x828B, 0xAD65, 0x828C, 0xAD66, 0x828D, 0xAD67, 0x828E, 0xAD68, 0x828F, 0xAD69, 0x8290, 0xAD6A, 0x8291, 0xAD6B, 0x8292, 0xAD6E, + 0x8293, 0xAD6F, 0x8294, 0xAD71, 0x8295, 0xAD72, 0x8296, 0xAD77, 0x8297, 0xAD78, 0x8298, 0xAD79, 0x8299, 0xAD7A, 0x829A, 0xAD7E, + 0x829B, 0xAD80, 0x829C, 0xAD83, 0x829D, 0xAD84, 0x829E, 0xAD85, 0x829F, 0xAD86, 0x82A0, 0xAD87, 0x82A1, 0xAD8A, 0x82A2, 0xAD8B, + 0x82A3, 0xAD8D, 0x82A4, 0xAD8E, 0x82A5, 0xAD8F, 0x82A6, 0xAD91, 0x82A7, 0xAD92, 0x82A8, 0xAD93, 0x82A9, 0xAD94, 0x82AA, 0xAD95, + 0x82AB, 0xAD96, 0x82AC, 0xAD97, 0x82AD, 0xAD98, 0x82AE, 0xAD99, 0x82AF, 0xAD9A, 0x82B0, 0xAD9B, 0x82B1, 0xAD9E, 0x82B2, 0xAD9F, + 0x82B3, 0xADA0, 0x82B4, 0xADA1, 0x82B5, 0xADA2, 0x82B6, 0xADA3, 0x82B7, 0xADA5, 0x82B8, 0xADA6, 0x82B9, 0xADA7, 0x82BA, 0xADA8, + 0x82BB, 0xADA9, 0x82BC, 0xADAA, 0x82BD, 0xADAB, 0x82BE, 0xADAC, 0x82BF, 0xADAD, 0x82C0, 0xADAE, 0x82C1, 0xADAF, 0x82C2, 0xADB0, + 0x82C3, 0xADB1, 0x82C4, 0xADB2, 0x82C5, 0xADB3, 0x82C6, 0xADB4, 0x82C7, 0xADB5, 0x82C8, 0xADB6, 0x82C9, 0xADB8, 0x82CA, 0xADB9, + 0x82CB, 0xADBA, 0x82CC, 0xADBB, 0x82CD, 0xADBC, 0x82CE, 0xADBD, 0x82CF, 0xADBE, 0x82D0, 0xADBF, 0x82D1, 0xADC2, 0x82D2, 0xADC3, + 0x82D3, 0xADC5, 0x82D4, 0xADC6, 0x82D5, 0xADC7, 0x82D6, 0xADC9, 0x82D7, 0xADCA, 0x82D8, 0xADCB, 0x82D9, 0xADCC, 0x82DA, 0xADCD, + 0x82DB, 0xADCE, 0x82DC, 0xADCF, 0x82DD, 0xADD2, 0x82DE, 0xADD4, 0x82DF, 0xADD5, 0x82E0, 0xADD6, 0x82E1, 0xADD7, 0x82E2, 0xADD8, + 0x82E3, 0xADD9, 0x82E4, 0xADDA, 0x82E5, 0xADDB, 0x82E6, 0xADDD, 0x82E7, 0xADDE, 0x82E8, 0xADDF, 0x82E9, 0xADE1, 0x82EA, 0xADE2, + 0x82EB, 0xADE3, 0x82EC, 0xADE5, 0x82ED, 0xADE6, 0x82EE, 0xADE7, 0x82EF, 0xADE8, 0x82F0, 0xADE9, 0x82F1, 0xADEA, 0x82F2, 0xADEB, + 0x82F3, 0xADEC, 0x82F4, 0xADED, 0x82F5, 0xADEE, 0x82F6, 0xADEF, 0x82F7, 0xADF0, 0x82F8, 0xADF1, 0x82F9, 0xADF2, 0x82FA, 0xADF3, + 0x82FB, 0xADF4, 0x82FC, 0xADF5, 0x82FD, 0xADF6, 0x82FE, 0xADF7, 0x8341, 0xADFA, 0x8342, 0xADFB, 0x8343, 0xADFD, 0x8344, 0xADFE, + 0x8345, 0xAE02, 0x8346, 0xAE03, 0x8347, 0xAE04, 0x8348, 0xAE05, 0x8349, 0xAE06, 0x834A, 0xAE07, 0x834B, 0xAE0A, 0x834C, 0xAE0C, + 0x834D, 0xAE0E, 0x834E, 0xAE0F, 0x834F, 0xAE10, 0x8350, 0xAE11, 0x8351, 0xAE12, 0x8352, 0xAE13, 0x8353, 0xAE15, 0x8354, 0xAE16, + 0x8355, 0xAE17, 0x8356, 0xAE18, 0x8357, 0xAE19, 0x8358, 0xAE1A, 0x8359, 0xAE1B, 0x835A, 0xAE1C, 0x8361, 0xAE1D, 0x8362, 0xAE1E, + 0x8363, 0xAE1F, 0x8364, 0xAE20, 0x8365, 0xAE21, 0x8366, 0xAE22, 0x8367, 0xAE23, 0x8368, 0xAE24, 0x8369, 0xAE25, 0x836A, 0xAE26, + 0x836B, 0xAE27, 0x836C, 0xAE28, 0x836D, 0xAE29, 0x836E, 0xAE2A, 0x836F, 0xAE2B, 0x8370, 0xAE2C, 0x8371, 0xAE2D, 0x8372, 0xAE2E, + 0x8373, 0xAE2F, 0x8374, 0xAE32, 0x8375, 0xAE33, 0x8376, 0xAE35, 0x8377, 0xAE36, 0x8378, 0xAE39, 0x8379, 0xAE3B, 0x837A, 0xAE3C, + 0x8381, 0xAE3D, 0x8382, 0xAE3E, 0x8383, 0xAE3F, 0x8384, 0xAE42, 0x8385, 0xAE44, 0x8386, 0xAE47, 0x8387, 0xAE48, 0x8388, 0xAE49, + 0x8389, 0xAE4B, 0x838A, 0xAE4F, 0x838B, 0xAE51, 0x838C, 0xAE52, 0x838D, 0xAE53, 0x838E, 0xAE55, 0x838F, 0xAE57, 0x8390, 0xAE58, + 0x8391, 0xAE59, 0x8392, 0xAE5A, 0x8393, 0xAE5B, 0x8394, 0xAE5E, 0x8395, 0xAE62, 0x8396, 0xAE63, 0x8397, 0xAE64, 0x8398, 0xAE66, + 0x8399, 0xAE67, 0x839A, 0xAE6A, 0x839B, 0xAE6B, 0x839C, 0xAE6D, 0x839D, 0xAE6E, 0x839E, 0xAE6F, 0x839F, 0xAE71, 0x83A0, 0xAE72, + 0x83A1, 0xAE73, 0x83A2, 0xAE74, 0x83A3, 0xAE75, 0x83A4, 0xAE76, 0x83A5, 0xAE77, 0x83A6, 0xAE7A, 0x83A7, 0xAE7E, 0x83A8, 0xAE7F, + 0x83A9, 0xAE80, 0x83AA, 0xAE81, 0x83AB, 0xAE82, 0x83AC, 0xAE83, 0x83AD, 0xAE86, 0x83AE, 0xAE87, 0x83AF, 0xAE88, 0x83B0, 0xAE89, + 0x83B1, 0xAE8A, 0x83B2, 0xAE8B, 0x83B3, 0xAE8D, 0x83B4, 0xAE8E, 0x83B5, 0xAE8F, 0x83B6, 0xAE90, 0x83B7, 0xAE91, 0x83B8, 0xAE92, + 0x83B9, 0xAE93, 0x83BA, 0xAE94, 0x83BB, 0xAE95, 0x83BC, 0xAE96, 0x83BD, 0xAE97, 0x83BE, 0xAE98, 0x83BF, 0xAE99, 0x83C0, 0xAE9A, + 0x83C1, 0xAE9B, 0x83C2, 0xAE9C, 0x83C3, 0xAE9D, 0x83C4, 0xAE9E, 0x83C5, 0xAE9F, 0x83C6, 0xAEA0, 0x83C7, 0xAEA1, 0x83C8, 0xAEA2, + 0x83C9, 0xAEA3, 0x83CA, 0xAEA4, 0x83CB, 0xAEA5, 0x83CC, 0xAEA6, 0x83CD, 0xAEA7, 0x83CE, 0xAEA8, 0x83CF, 0xAEA9, 0x83D0, 0xAEAA, + 0x83D1, 0xAEAB, 0x83D2, 0xAEAC, 0x83D3, 0xAEAD, 0x83D4, 0xAEAE, 0x83D5, 0xAEAF, 0x83D6, 0xAEB0, 0x83D7, 0xAEB1, 0x83D8, 0xAEB2, + 0x83D9, 0xAEB3, 0x83DA, 0xAEB4, 0x83DB, 0xAEB5, 0x83DC, 0xAEB6, 0x83DD, 0xAEB7, 0x83DE, 0xAEB8, 0x83DF, 0xAEB9, 0x83E0, 0xAEBA, + 0x83E1, 0xAEBB, 0x83E2, 0xAEBF, 0x83E3, 0xAEC1, 0x83E4, 0xAEC2, 0x83E5, 0xAEC3, 0x83E6, 0xAEC5, 0x83E7, 0xAEC6, 0x83E8, 0xAEC7, + 0x83E9, 0xAEC8, 0x83EA, 0xAEC9, 0x83EB, 0xAECA, 0x83EC, 0xAECB, 0x83ED, 0xAECE, 0x83EE, 0xAED2, 0x83EF, 0xAED3, 0x83F0, 0xAED4, + 0x83F1, 0xAED5, 0x83F2, 0xAED6, 0x83F3, 0xAED7, 0x83F4, 0xAEDA, 0x83F5, 0xAEDB, 0x83F6, 0xAEDD, 0x83F7, 0xAEDE, 0x83F8, 0xAEDF, + 0x83F9, 0xAEE0, 0x83FA, 0xAEE1, 0x83FB, 0xAEE2, 0x83FC, 0xAEE3, 0x83FD, 0xAEE4, 0x83FE, 0xAEE5, 0x8441, 0xAEE6, 0x8442, 0xAEE7, + 0x8443, 0xAEE9, 0x8444, 0xAEEA, 0x8445, 0xAEEC, 0x8446, 0xAEEE, 0x8447, 0xAEEF, 0x8448, 0xAEF0, 0x8449, 0xAEF1, 0x844A, 0xAEF2, + 0x844B, 0xAEF3, 0x844C, 0xAEF5, 0x844D, 0xAEF6, 0x844E, 0xAEF7, 0x844F, 0xAEF9, 0x8450, 0xAEFA, 0x8451, 0xAEFB, 0x8452, 0xAEFD, + 0x8453, 0xAEFE, 0x8454, 0xAEFF, 0x8455, 0xAF00, 0x8456, 0xAF01, 0x8457, 0xAF02, 0x8458, 0xAF03, 0x8459, 0xAF04, 0x845A, 0xAF05, + 0x8461, 0xAF06, 0x8462, 0xAF09, 0x8463, 0xAF0A, 0x8464, 0xAF0B, 0x8465, 0xAF0C, 0x8466, 0xAF0E, 0x8467, 0xAF0F, 0x8468, 0xAF11, + 0x8469, 0xAF12, 0x846A, 0xAF13, 0x846B, 0xAF14, 0x846C, 0xAF15, 0x846D, 0xAF16, 0x846E, 0xAF17, 0x846F, 0xAF18, 0x8470, 0xAF19, + 0x8471, 0xAF1A, 0x8472, 0xAF1B, 0x8473, 0xAF1C, 0x8474, 0xAF1D, 0x8475, 0xAF1E, 0x8476, 0xAF1F, 0x8477, 0xAF20, 0x8478, 0xAF21, + 0x8479, 0xAF22, 0x847A, 0xAF23, 0x8481, 0xAF24, 0x8482, 0xAF25, 0x8483, 0xAF26, 0x8484, 0xAF27, 0x8485, 0xAF28, 0x8486, 0xAF29, + 0x8487, 0xAF2A, 0x8488, 0xAF2B, 0x8489, 0xAF2E, 0x848A, 0xAF2F, 0x848B, 0xAF31, 0x848C, 0xAF33, 0x848D, 0xAF35, 0x848E, 0xAF36, + 0x848F, 0xAF37, 0x8490, 0xAF38, 0x8491, 0xAF39, 0x8492, 0xAF3A, 0x8493, 0xAF3B, 0x8494, 0xAF3E, 0x8495, 0xAF40, 0x8496, 0xAF44, + 0x8497, 0xAF45, 0x8498, 0xAF46, 0x8499, 0xAF47, 0x849A, 0xAF4A, 0x849B, 0xAF4B, 0x849C, 0xAF4C, 0x849D, 0xAF4D, 0x849E, 0xAF4E, + 0x849F, 0xAF4F, 0x84A0, 0xAF51, 0x84A1, 0xAF52, 0x84A2, 0xAF53, 0x84A3, 0xAF54, 0x84A4, 0xAF55, 0x84A5, 0xAF56, 0x84A6, 0xAF57, + 0x84A7, 0xAF58, 0x84A8, 0xAF59, 0x84A9, 0xAF5A, 0x84AA, 0xAF5B, 0x84AB, 0xAF5E, 0x84AC, 0xAF5F, 0x84AD, 0xAF60, 0x84AE, 0xAF61, + 0x84AF, 0xAF62, 0x84B0, 0xAF63, 0x84B1, 0xAF66, 0x84B2, 0xAF67, 0x84B3, 0xAF68, 0x84B4, 0xAF69, 0x84B5, 0xAF6A, 0x84B6, 0xAF6B, + 0x84B7, 0xAF6C, 0x84B8, 0xAF6D, 0x84B9, 0xAF6E, 0x84BA, 0xAF6F, 0x84BB, 0xAF70, 0x84BC, 0xAF71, 0x84BD, 0xAF72, 0x84BE, 0xAF73, + 0x84BF, 0xAF74, 0x84C0, 0xAF75, 0x84C1, 0xAF76, 0x84C2, 0xAF77, 0x84C3, 0xAF78, 0x84C4, 0xAF7A, 0x84C5, 0xAF7B, 0x84C6, 0xAF7C, + 0x84C7, 0xAF7D, 0x84C8, 0xAF7E, 0x84C9, 0xAF7F, 0x84CA, 0xAF81, 0x84CB, 0xAF82, 0x84CC, 0xAF83, 0x84CD, 0xAF85, 0x84CE, 0xAF86, + 0x84CF, 0xAF87, 0x84D0, 0xAF89, 0x84D1, 0xAF8A, 0x84D2, 0xAF8B, 0x84D3, 0xAF8C, 0x84D4, 0xAF8D, 0x84D5, 0xAF8E, 0x84D6, 0xAF8F, + 0x84D7, 0xAF92, 0x84D8, 0xAF93, 0x84D9, 0xAF94, 0x84DA, 0xAF96, 0x84DB, 0xAF97, 0x84DC, 0xAF98, 0x84DD, 0xAF99, 0x84DE, 0xAF9A, + 0x84DF, 0xAF9B, 0x84E0, 0xAF9D, 0x84E1, 0xAF9E, 0x84E2, 0xAF9F, 0x84E3, 0xAFA0, 0x84E4, 0xAFA1, 0x84E5, 0xAFA2, 0x84E6, 0xAFA3, + 0x84E7, 0xAFA4, 0x84E8, 0xAFA5, 0x84E9, 0xAFA6, 0x84EA, 0xAFA7, 0x84EB, 0xAFA8, 0x84EC, 0xAFA9, 0x84ED, 0xAFAA, 0x84EE, 0xAFAB, + 0x84EF, 0xAFAC, 0x84F0, 0xAFAD, 0x84F1, 0xAFAE, 0x84F2, 0xAFAF, 0x84F3, 0xAFB0, 0x84F4, 0xAFB1, 0x84F5, 0xAFB2, 0x84F6, 0xAFB3, + 0x84F7, 0xAFB4, 0x84F8, 0xAFB5, 0x84F9, 0xAFB6, 0x84FA, 0xAFB7, 0x84FB, 0xAFBA, 0x84FC, 0xAFBB, 0x84FD, 0xAFBD, 0x84FE, 0xAFBE, + 0x8541, 0xAFBF, 0x8542, 0xAFC1, 0x8543, 0xAFC2, 0x8544, 0xAFC3, 0x8545, 0xAFC4, 0x8546, 0xAFC5, 0x8547, 0xAFC6, 0x8548, 0xAFCA, + 0x8549, 0xAFCC, 0x854A, 0xAFCF, 0x854B, 0xAFD0, 0x854C, 0xAFD1, 0x854D, 0xAFD2, 0x854E, 0xAFD3, 0x854F, 0xAFD5, 0x8550, 0xAFD6, + 0x8551, 0xAFD7, 0x8552, 0xAFD8, 0x8553, 0xAFD9, 0x8554, 0xAFDA, 0x8555, 0xAFDB, 0x8556, 0xAFDD, 0x8557, 0xAFDE, 0x8558, 0xAFDF, + 0x8559, 0xAFE0, 0x855A, 0xAFE1, 0x8561, 0xAFE2, 0x8562, 0xAFE3, 0x8563, 0xAFE4, 0x8564, 0xAFE5, 0x8565, 0xAFE6, 0x8566, 0xAFE7, + 0x8567, 0xAFEA, 0x8568, 0xAFEB, 0x8569, 0xAFEC, 0x856A, 0xAFED, 0x856B, 0xAFEE, 0x856C, 0xAFEF, 0x856D, 0xAFF2, 0x856E, 0xAFF3, + 0x856F, 0xAFF5, 0x8570, 0xAFF6, 0x8571, 0xAFF7, 0x8572, 0xAFF9, 0x8573, 0xAFFA, 0x8574, 0xAFFB, 0x8575, 0xAFFC, 0x8576, 0xAFFD, + 0x8577, 0xAFFE, 0x8578, 0xAFFF, 0x8579, 0xB002, 0x857A, 0xB003, 0x8581, 0xB005, 0x8582, 0xB006, 0x8583, 0xB007, 0x8584, 0xB008, + 0x8585, 0xB009, 0x8586, 0xB00A, 0x8587, 0xB00B, 0x8588, 0xB00D, 0x8589, 0xB00E, 0x858A, 0xB00F, 0x858B, 0xB011, 0x858C, 0xB012, + 0x858D, 0xB013, 0x858E, 0xB015, 0x858F, 0xB016, 0x8590, 0xB017, 0x8591, 0xB018, 0x8592, 0xB019, 0x8593, 0xB01A, 0x8594, 0xB01B, + 0x8595, 0xB01E, 0x8596, 0xB01F, 0x8597, 0xB020, 0x8598, 0xB021, 0x8599, 0xB022, 0x859A, 0xB023, 0x859B, 0xB024, 0x859C, 0xB025, + 0x859D, 0xB026, 0x859E, 0xB027, 0x859F, 0xB029, 0x85A0, 0xB02A, 0x85A1, 0xB02B, 0x85A2, 0xB02C, 0x85A3, 0xB02D, 0x85A4, 0xB02E, + 0x85A5, 0xB02F, 0x85A6, 0xB030, 0x85A7, 0xB031, 0x85A8, 0xB032, 0x85A9, 0xB033, 0x85AA, 0xB034, 0x85AB, 0xB035, 0x85AC, 0xB036, + 0x85AD, 0xB037, 0x85AE, 0xB038, 0x85AF, 0xB039, 0x85B0, 0xB03A, 0x85B1, 0xB03B, 0x85B2, 0xB03C, 0x85B3, 0xB03D, 0x85B4, 0xB03E, + 0x85B5, 0xB03F, 0x85B6, 0xB040, 0x85B7, 0xB041, 0x85B8, 0xB042, 0x85B9, 0xB043, 0x85BA, 0xB046, 0x85BB, 0xB047, 0x85BC, 0xB049, + 0x85BD, 0xB04B, 0x85BE, 0xB04D, 0x85BF, 0xB04F, 0x85C0, 0xB050, 0x85C1, 0xB051, 0x85C2, 0xB052, 0x85C3, 0xB056, 0x85C4, 0xB058, + 0x85C5, 0xB05A, 0x85C6, 0xB05B, 0x85C7, 0xB05C, 0x85C8, 0xB05E, 0x85C9, 0xB05F, 0x85CA, 0xB060, 0x85CB, 0xB061, 0x85CC, 0xB062, + 0x85CD, 0xB063, 0x85CE, 0xB064, 0x85CF, 0xB065, 0x85D0, 0xB066, 0x85D1, 0xB067, 0x85D2, 0xB068, 0x85D3, 0xB069, 0x85D4, 0xB06A, + 0x85D5, 0xB06B, 0x85D6, 0xB06C, 0x85D7, 0xB06D, 0x85D8, 0xB06E, 0x85D9, 0xB06F, 0x85DA, 0xB070, 0x85DB, 0xB071, 0x85DC, 0xB072, + 0x85DD, 0xB073, 0x85DE, 0xB074, 0x85DF, 0xB075, 0x85E0, 0xB076, 0x85E1, 0xB077, 0x85E2, 0xB078, 0x85E3, 0xB079, 0x85E4, 0xB07A, + 0x85E5, 0xB07B, 0x85E6, 0xB07E, 0x85E7, 0xB07F, 0x85E8, 0xB081, 0x85E9, 0xB082, 0x85EA, 0xB083, 0x85EB, 0xB085, 0x85EC, 0xB086, + 0x85ED, 0xB087, 0x85EE, 0xB088, 0x85EF, 0xB089, 0x85F0, 0xB08A, 0x85F1, 0xB08B, 0x85F2, 0xB08E, 0x85F3, 0xB090, 0x85F4, 0xB092, + 0x85F5, 0xB093, 0x85F6, 0xB094, 0x85F7, 0xB095, 0x85F8, 0xB096, 0x85F9, 0xB097, 0x85FA, 0xB09B, 0x85FB, 0xB09D, 0x85FC, 0xB09E, + 0x85FD, 0xB0A3, 0x85FE, 0xB0A4, 0x8641, 0xB0A5, 0x8642, 0xB0A6, 0x8643, 0xB0A7, 0x8644, 0xB0AA, 0x8645, 0xB0B0, 0x8646, 0xB0B2, + 0x8647, 0xB0B6, 0x8648, 0xB0B7, 0x8649, 0xB0B9, 0x864A, 0xB0BA, 0x864B, 0xB0BB, 0x864C, 0xB0BD, 0x864D, 0xB0BE, 0x864E, 0xB0BF, + 0x864F, 0xB0C0, 0x8650, 0xB0C1, 0x8651, 0xB0C2, 0x8652, 0xB0C3, 0x8653, 0xB0C6, 0x8654, 0xB0CA, 0x8655, 0xB0CB, 0x8656, 0xB0CC, + 0x8657, 0xB0CD, 0x8658, 0xB0CE, 0x8659, 0xB0CF, 0x865A, 0xB0D2, 0x8661, 0xB0D3, 0x8662, 0xB0D5, 0x8663, 0xB0D6, 0x8664, 0xB0D7, + 0x8665, 0xB0D9, 0x8666, 0xB0DA, 0x8667, 0xB0DB, 0x8668, 0xB0DC, 0x8669, 0xB0DD, 0x866A, 0xB0DE, 0x866B, 0xB0DF, 0x866C, 0xB0E1, + 0x866D, 0xB0E2, 0x866E, 0xB0E3, 0x866F, 0xB0E4, 0x8670, 0xB0E6, 0x8671, 0xB0E7, 0x8672, 0xB0E8, 0x8673, 0xB0E9, 0x8674, 0xB0EA, + 0x8675, 0xB0EB, 0x8676, 0xB0EC, 0x8677, 0xB0ED, 0x8678, 0xB0EE, 0x8679, 0xB0EF, 0x867A, 0xB0F0, 0x8681, 0xB0F1, 0x8682, 0xB0F2, + 0x8683, 0xB0F3, 0x8684, 0xB0F4, 0x8685, 0xB0F5, 0x8686, 0xB0F6, 0x8687, 0xB0F7, 0x8688, 0xB0F8, 0x8689, 0xB0F9, 0x868A, 0xB0FA, + 0x868B, 0xB0FB, 0x868C, 0xB0FC, 0x868D, 0xB0FD, 0x868E, 0xB0FE, 0x868F, 0xB0FF, 0x8690, 0xB100, 0x8691, 0xB101, 0x8692, 0xB102, + 0x8693, 0xB103, 0x8694, 0xB104, 0x8695, 0xB105, 0x8696, 0xB106, 0x8697, 0xB107, 0x8698, 0xB10A, 0x8699, 0xB10D, 0x869A, 0xB10E, + 0x869B, 0xB10F, 0x869C, 0xB111, 0x869D, 0xB114, 0x869E, 0xB115, 0x869F, 0xB116, 0x86A0, 0xB117, 0x86A1, 0xB11A, 0x86A2, 0xB11E, + 0x86A3, 0xB11F, 0x86A4, 0xB120, 0x86A5, 0xB121, 0x86A6, 0xB122, 0x86A7, 0xB126, 0x86A8, 0xB127, 0x86A9, 0xB129, 0x86AA, 0xB12A, + 0x86AB, 0xB12B, 0x86AC, 0xB12D, 0x86AD, 0xB12E, 0x86AE, 0xB12F, 0x86AF, 0xB130, 0x86B0, 0xB131, 0x86B1, 0xB132, 0x86B2, 0xB133, + 0x86B3, 0xB136, 0x86B4, 0xB13A, 0x86B5, 0xB13B, 0x86B6, 0xB13C, 0x86B7, 0xB13D, 0x86B8, 0xB13E, 0x86B9, 0xB13F, 0x86BA, 0xB142, + 0x86BB, 0xB143, 0x86BC, 0xB145, 0x86BD, 0xB146, 0x86BE, 0xB147, 0x86BF, 0xB149, 0x86C0, 0xB14A, 0x86C1, 0xB14B, 0x86C2, 0xB14C, + 0x86C3, 0xB14D, 0x86C4, 0xB14E, 0x86C5, 0xB14F, 0x86C6, 0xB152, 0x86C7, 0xB153, 0x86C8, 0xB156, 0x86C9, 0xB157, 0x86CA, 0xB159, + 0x86CB, 0xB15A, 0x86CC, 0xB15B, 0x86CD, 0xB15D, 0x86CE, 0xB15E, 0x86CF, 0xB15F, 0x86D0, 0xB161, 0x86D1, 0xB162, 0x86D2, 0xB163, + 0x86D3, 0xB164, 0x86D4, 0xB165, 0x86D5, 0xB166, 0x86D6, 0xB167, 0x86D7, 0xB168, 0x86D8, 0xB169, 0x86D9, 0xB16A, 0x86DA, 0xB16B, + 0x86DB, 0xB16C, 0x86DC, 0xB16D, 0x86DD, 0xB16E, 0x86DE, 0xB16F, 0x86DF, 0xB170, 0x86E0, 0xB171, 0x86E1, 0xB172, 0x86E2, 0xB173, + 0x86E3, 0xB174, 0x86E4, 0xB175, 0x86E5, 0xB176, 0x86E6, 0xB177, 0x86E7, 0xB17A, 0x86E8, 0xB17B, 0x86E9, 0xB17D, 0x86EA, 0xB17E, + 0x86EB, 0xB17F, 0x86EC, 0xB181, 0x86ED, 0xB183, 0x86EE, 0xB184, 0x86EF, 0xB185, 0x86F0, 0xB186, 0x86F1, 0xB187, 0x86F2, 0xB18A, + 0x86F3, 0xB18C, 0x86F4, 0xB18E, 0x86F5, 0xB18F, 0x86F6, 0xB190, 0x86F7, 0xB191, 0x86F8, 0xB195, 0x86F9, 0xB196, 0x86FA, 0xB197, + 0x86FB, 0xB199, 0x86FC, 0xB19A, 0x86FD, 0xB19B, 0x86FE, 0xB19D, 0x8741, 0xB19E, 0x8742, 0xB19F, 0x8743, 0xB1A0, 0x8744, 0xB1A1, + 0x8745, 0xB1A2, 0x8746, 0xB1A3, 0x8747, 0xB1A4, 0x8748, 0xB1A5, 0x8749, 0xB1A6, 0x874A, 0xB1A7, 0x874B, 0xB1A9, 0x874C, 0xB1AA, + 0x874D, 0xB1AB, 0x874E, 0xB1AC, 0x874F, 0xB1AD, 0x8750, 0xB1AE, 0x8751, 0xB1AF, 0x8752, 0xB1B0, 0x8753, 0xB1B1, 0x8754, 0xB1B2, + 0x8755, 0xB1B3, 0x8756, 0xB1B4, 0x8757, 0xB1B5, 0x8758, 0xB1B6, 0x8759, 0xB1B7, 0x875A, 0xB1B8, 0x8761, 0xB1B9, 0x8762, 0xB1BA, + 0x8763, 0xB1BB, 0x8764, 0xB1BC, 0x8765, 0xB1BD, 0x8766, 0xB1BE, 0x8767, 0xB1BF, 0x8768, 0xB1C0, 0x8769, 0xB1C1, 0x876A, 0xB1C2, + 0x876B, 0xB1C3, 0x876C, 0xB1C4, 0x876D, 0xB1C5, 0x876E, 0xB1C6, 0x876F, 0xB1C7, 0x8770, 0xB1C8, 0x8771, 0xB1C9, 0x8772, 0xB1CA, + 0x8773, 0xB1CB, 0x8774, 0xB1CD, 0x8775, 0xB1CE, 0x8776, 0xB1CF, 0x8777, 0xB1D1, 0x8778, 0xB1D2, 0x8779, 0xB1D3, 0x877A, 0xB1D5, + 0x8781, 0xB1D6, 0x8782, 0xB1D7, 0x8783, 0xB1D8, 0x8784, 0xB1D9, 0x8785, 0xB1DA, 0x8786, 0xB1DB, 0x8787, 0xB1DE, 0x8788, 0xB1E0, + 0x8789, 0xB1E1, 0x878A, 0xB1E2, 0x878B, 0xB1E3, 0x878C, 0xB1E4, 0x878D, 0xB1E5, 0x878E, 0xB1E6, 0x878F, 0xB1E7, 0x8790, 0xB1EA, + 0x8791, 0xB1EB, 0x8792, 0xB1ED, 0x8793, 0xB1EE, 0x8794, 0xB1EF, 0x8795, 0xB1F1, 0x8796, 0xB1F2, 0x8797, 0xB1F3, 0x8798, 0xB1F4, + 0x8799, 0xB1F5, 0x879A, 0xB1F6, 0x879B, 0xB1F7, 0x879C, 0xB1F8, 0x879D, 0xB1FA, 0x879E, 0xB1FC, 0x879F, 0xB1FE, 0x87A0, 0xB1FF, + 0x87A1, 0xB200, 0x87A2, 0xB201, 0x87A3, 0xB202, 0x87A4, 0xB203, 0x87A5, 0xB206, 0x87A6, 0xB207, 0x87A7, 0xB209, 0x87A8, 0xB20A, + 0x87A9, 0xB20D, 0x87AA, 0xB20E, 0x87AB, 0xB20F, 0x87AC, 0xB210, 0x87AD, 0xB211, 0x87AE, 0xB212, 0x87AF, 0xB213, 0x87B0, 0xB216, + 0x87B1, 0xB218, 0x87B2, 0xB21A, 0x87B3, 0xB21B, 0x87B4, 0xB21C, 0x87B5, 0xB21D, 0x87B6, 0xB21E, 0x87B7, 0xB21F, 0x87B8, 0xB221, + 0x87B9, 0xB222, 0x87BA, 0xB223, 0x87BB, 0xB224, 0x87BC, 0xB225, 0x87BD, 0xB226, 0x87BE, 0xB227, 0x87BF, 0xB228, 0x87C0, 0xB229, + 0x87C1, 0xB22A, 0x87C2, 0xB22B, 0x87C3, 0xB22C, 0x87C4, 0xB22D, 0x87C5, 0xB22E, 0x87C6, 0xB22F, 0x87C7, 0xB230, 0x87C8, 0xB231, + 0x87C9, 0xB232, 0x87CA, 0xB233, 0x87CB, 0xB235, 0x87CC, 0xB236, 0x87CD, 0xB237, 0x87CE, 0xB238, 0x87CF, 0xB239, 0x87D0, 0xB23A, + 0x87D1, 0xB23B, 0x87D2, 0xB23D, 0x87D3, 0xB23E, 0x87D4, 0xB23F, 0x87D5, 0xB240, 0x87D6, 0xB241, 0x87D7, 0xB242, 0x87D8, 0xB243, + 0x87D9, 0xB244, 0x87DA, 0xB245, 0x87DB, 0xB246, 0x87DC, 0xB247, 0x87DD, 0xB248, 0x87DE, 0xB249, 0x87DF, 0xB24A, 0x87E0, 0xB24B, + 0x87E1, 0xB24C, 0x87E2, 0xB24D, 0x87E3, 0xB24E, 0x87E4, 0xB24F, 0x87E5, 0xB250, 0x87E6, 0xB251, 0x87E7, 0xB252, 0x87E8, 0xB253, + 0x87E9, 0xB254, 0x87EA, 0xB255, 0x87EB, 0xB256, 0x87EC, 0xB257, 0x87ED, 0xB259, 0x87EE, 0xB25A, 0x87EF, 0xB25B, 0x87F0, 0xB25D, + 0x87F1, 0xB25E, 0x87F2, 0xB25F, 0x87F3, 0xB261, 0x87F4, 0xB262, 0x87F5, 0xB263, 0x87F6, 0xB264, 0x87F7, 0xB265, 0x87F8, 0xB266, + 0x87F9, 0xB267, 0x87FA, 0xB26A, 0x87FB, 0xB26B, 0x87FC, 0xB26C, 0x87FD, 0xB26D, 0x87FE, 0xB26E, 0x8841, 0xB26F, 0x8842, 0xB270, + 0x8843, 0xB271, 0x8844, 0xB272, 0x8845, 0xB273, 0x8846, 0xB276, 0x8847, 0xB277, 0x8848, 0xB278, 0x8849, 0xB279, 0x884A, 0xB27A, + 0x884B, 0xB27B, 0x884C, 0xB27D, 0x884D, 0xB27E, 0x884E, 0xB27F, 0x884F, 0xB280, 0x8850, 0xB281, 0x8851, 0xB282, 0x8852, 0xB283, + 0x8853, 0xB286, 0x8854, 0xB287, 0x8855, 0xB288, 0x8856, 0xB28A, 0x8857, 0xB28B, 0x8858, 0xB28C, 0x8859, 0xB28D, 0x885A, 0xB28E, + 0x8861, 0xB28F, 0x8862, 0xB292, 0x8863, 0xB293, 0x8864, 0xB295, 0x8865, 0xB296, 0x8866, 0xB297, 0x8867, 0xB29B, 0x8868, 0xB29C, + 0x8869, 0xB29D, 0x886A, 0xB29E, 0x886B, 0xB29F, 0x886C, 0xB2A2, 0x886D, 0xB2A4, 0x886E, 0xB2A7, 0x886F, 0xB2A8, 0x8870, 0xB2A9, + 0x8871, 0xB2AB, 0x8872, 0xB2AD, 0x8873, 0xB2AE, 0x8874, 0xB2AF, 0x8875, 0xB2B1, 0x8876, 0xB2B2, 0x8877, 0xB2B3, 0x8878, 0xB2B5, + 0x8879, 0xB2B6, 0x887A, 0xB2B7, 0x8881, 0xB2B8, 0x8882, 0xB2B9, 0x8883, 0xB2BA, 0x8884, 0xB2BB, 0x8885, 0xB2BC, 0x8886, 0xB2BD, + 0x8887, 0xB2BE, 0x8888, 0xB2BF, 0x8889, 0xB2C0, 0x888A, 0xB2C1, 0x888B, 0xB2C2, 0x888C, 0xB2C3, 0x888D, 0xB2C4, 0x888E, 0xB2C5, + 0x888F, 0xB2C6, 0x8890, 0xB2C7, 0x8891, 0xB2CA, 0x8892, 0xB2CB, 0x8893, 0xB2CD, 0x8894, 0xB2CE, 0x8895, 0xB2CF, 0x8896, 0xB2D1, + 0x8897, 0xB2D3, 0x8898, 0xB2D4, 0x8899, 0xB2D5, 0x889A, 0xB2D6, 0x889B, 0xB2D7, 0x889C, 0xB2DA, 0x889D, 0xB2DC, 0x889E, 0xB2DE, + 0x889F, 0xB2DF, 0x88A0, 0xB2E0, 0x88A1, 0xB2E1, 0x88A2, 0xB2E3, 0x88A3, 0xB2E7, 0x88A4, 0xB2E9, 0x88A5, 0xB2EA, 0x88A6, 0xB2F0, + 0x88A7, 0xB2F1, 0x88A8, 0xB2F2, 0x88A9, 0xB2F6, 0x88AA, 0xB2FC, 0x88AB, 0xB2FD, 0x88AC, 0xB2FE, 0x88AD, 0xB302, 0x88AE, 0xB303, + 0x88AF, 0xB305, 0x88B0, 0xB306, 0x88B1, 0xB307, 0x88B2, 0xB309, 0x88B3, 0xB30A, 0x88B4, 0xB30B, 0x88B5, 0xB30C, 0x88B6, 0xB30D, + 0x88B7, 0xB30E, 0x88B8, 0xB30F, 0x88B9, 0xB312, 0x88BA, 0xB316, 0x88BB, 0xB317, 0x88BC, 0xB318, 0x88BD, 0xB319, 0x88BE, 0xB31A, + 0x88BF, 0xB31B, 0x88C0, 0xB31D, 0x88C1, 0xB31E, 0x88C2, 0xB31F, 0x88C3, 0xB320, 0x88C4, 0xB321, 0x88C5, 0xB322, 0x88C6, 0xB323, + 0x88C7, 0xB324, 0x88C8, 0xB325, 0x88C9, 0xB326, 0x88CA, 0xB327, 0x88CB, 0xB328, 0x88CC, 0xB329, 0x88CD, 0xB32A, 0x88CE, 0xB32B, + 0x88CF, 0xB32C, 0x88D0, 0xB32D, 0x88D1, 0xB32E, 0x88D2, 0xB32F, 0x88D3, 0xB330, 0x88D4, 0xB331, 0x88D5, 0xB332, 0x88D6, 0xB333, + 0x88D7, 0xB334, 0x88D8, 0xB335, 0x88D9, 0xB336, 0x88DA, 0xB337, 0x88DB, 0xB338, 0x88DC, 0xB339, 0x88DD, 0xB33A, 0x88DE, 0xB33B, + 0x88DF, 0xB33C, 0x88E0, 0xB33D, 0x88E1, 0xB33E, 0x88E2, 0xB33F, 0x88E3, 0xB340, 0x88E4, 0xB341, 0x88E5, 0xB342, 0x88E6, 0xB343, + 0x88E7, 0xB344, 0x88E8, 0xB345, 0x88E9, 0xB346, 0x88EA, 0xB347, 0x88EB, 0xB348, 0x88EC, 0xB349, 0x88ED, 0xB34A, 0x88EE, 0xB34B, + 0x88EF, 0xB34C, 0x88F0, 0xB34D, 0x88F1, 0xB34E, 0x88F2, 0xB34F, 0x88F3, 0xB350, 0x88F4, 0xB351, 0x88F5, 0xB352, 0x88F6, 0xB353, + 0x88F7, 0xB357, 0x88F8, 0xB359, 0x88F9, 0xB35A, 0x88FA, 0xB35D, 0x88FB, 0xB360, 0x88FC, 0xB361, 0x88FD, 0xB362, 0x88FE, 0xB363, + 0x8941, 0xB366, 0x8942, 0xB368, 0x8943, 0xB36A, 0x8944, 0xB36C, 0x8945, 0xB36D, 0x8946, 0xB36F, 0x8947, 0xB372, 0x8948, 0xB373, + 0x8949, 0xB375, 0x894A, 0xB376, 0x894B, 0xB377, 0x894C, 0xB379, 0x894D, 0xB37A, 0x894E, 0xB37B, 0x894F, 0xB37C, 0x8950, 0xB37D, + 0x8951, 0xB37E, 0x8952, 0xB37F, 0x8953, 0xB382, 0x8954, 0xB386, 0x8955, 0xB387, 0x8956, 0xB388, 0x8957, 0xB389, 0x8958, 0xB38A, + 0x8959, 0xB38B, 0x895A, 0xB38D, 0x8961, 0xB38E, 0x8962, 0xB38F, 0x8963, 0xB391, 0x8964, 0xB392, 0x8965, 0xB393, 0x8966, 0xB395, + 0x8967, 0xB396, 0x8968, 0xB397, 0x8969, 0xB398, 0x896A, 0xB399, 0x896B, 0xB39A, 0x896C, 0xB39B, 0x896D, 0xB39C, 0x896E, 0xB39D, + 0x896F, 0xB39E, 0x8970, 0xB39F, 0x8971, 0xB3A2, 0x8972, 0xB3A3, 0x8973, 0xB3A4, 0x8974, 0xB3A5, 0x8975, 0xB3A6, 0x8976, 0xB3A7, + 0x8977, 0xB3A9, 0x8978, 0xB3AA, 0x8979, 0xB3AB, 0x897A, 0xB3AD, 0x8981, 0xB3AE, 0x8982, 0xB3AF, 0x8983, 0xB3B0, 0x8984, 0xB3B1, + 0x8985, 0xB3B2, 0x8986, 0xB3B3, 0x8987, 0xB3B4, 0x8988, 0xB3B5, 0x8989, 0xB3B6, 0x898A, 0xB3B7, 0x898B, 0xB3B8, 0x898C, 0xB3B9, + 0x898D, 0xB3BA, 0x898E, 0xB3BB, 0x898F, 0xB3BC, 0x8990, 0xB3BD, 0x8991, 0xB3BE, 0x8992, 0xB3BF, 0x8993, 0xB3C0, 0x8994, 0xB3C1, + 0x8995, 0xB3C2, 0x8996, 0xB3C3, 0x8997, 0xB3C6, 0x8998, 0xB3C7, 0x8999, 0xB3C9, 0x899A, 0xB3CA, 0x899B, 0xB3CD, 0x899C, 0xB3CF, + 0x899D, 0xB3D1, 0x899E, 0xB3D2, 0x899F, 0xB3D3, 0x89A0, 0xB3D6, 0x89A1, 0xB3D8, 0x89A2, 0xB3DA, 0x89A3, 0xB3DC, 0x89A4, 0xB3DE, + 0x89A5, 0xB3DF, 0x89A6, 0xB3E1, 0x89A7, 0xB3E2, 0x89A8, 0xB3E3, 0x89A9, 0xB3E5, 0x89AA, 0xB3E6, 0x89AB, 0xB3E7, 0x89AC, 0xB3E9, + 0x89AD, 0xB3EA, 0x89AE, 0xB3EB, 0x89AF, 0xB3EC, 0x89B0, 0xB3ED, 0x89B1, 0xB3EE, 0x89B2, 0xB3EF, 0x89B3, 0xB3F0, 0x89B4, 0xB3F1, + 0x89B5, 0xB3F2, 0x89B6, 0xB3F3, 0x89B7, 0xB3F4, 0x89B8, 0xB3F5, 0x89B9, 0xB3F6, 0x89BA, 0xB3F7, 0x89BB, 0xB3F8, 0x89BC, 0xB3F9, + 0x89BD, 0xB3FA, 0x89BE, 0xB3FB, 0x89BF, 0xB3FD, 0x89C0, 0xB3FE, 0x89C1, 0xB3FF, 0x89C2, 0xB400, 0x89C3, 0xB401, 0x89C4, 0xB402, + 0x89C5, 0xB403, 0x89C6, 0xB404, 0x89C7, 0xB405, 0x89C8, 0xB406, 0x89C9, 0xB407, 0x89CA, 0xB408, 0x89CB, 0xB409, 0x89CC, 0xB40A, + 0x89CD, 0xB40B, 0x89CE, 0xB40C, 0x89CF, 0xB40D, 0x89D0, 0xB40E, 0x89D1, 0xB40F, 0x89D2, 0xB411, 0x89D3, 0xB412, 0x89D4, 0xB413, + 0x89D5, 0xB414, 0x89D6, 0xB415, 0x89D7, 0xB416, 0x89D8, 0xB417, 0x89D9, 0xB419, 0x89DA, 0xB41A, 0x89DB, 0xB41B, 0x89DC, 0xB41D, + 0x89DD, 0xB41E, 0x89DE, 0xB41F, 0x89DF, 0xB421, 0x89E0, 0xB422, 0x89E1, 0xB423, 0x89E2, 0xB424, 0x89E3, 0xB425, 0x89E4, 0xB426, + 0x89E5, 0xB427, 0x89E6, 0xB42A, 0x89E7, 0xB42C, 0x89E8, 0xB42D, 0x89E9, 0xB42E, 0x89EA, 0xB42F, 0x89EB, 0xB430, 0x89EC, 0xB431, + 0x89ED, 0xB432, 0x89EE, 0xB433, 0x89EF, 0xB435, 0x89F0, 0xB436, 0x89F1, 0xB437, 0x89F2, 0xB438, 0x89F3, 0xB439, 0x89F4, 0xB43A, + 0x89F5, 0xB43B, 0x89F6, 0xB43C, 0x89F7, 0xB43D, 0x89F8, 0xB43E, 0x89F9, 0xB43F, 0x89FA, 0xB440, 0x89FB, 0xB441, 0x89FC, 0xB442, + 0x89FD, 0xB443, 0x89FE, 0xB444, 0x8A41, 0xB445, 0x8A42, 0xB446, 0x8A43, 0xB447, 0x8A44, 0xB448, 0x8A45, 0xB449, 0x8A46, 0xB44A, + 0x8A47, 0xB44B, 0x8A48, 0xB44C, 0x8A49, 0xB44D, 0x8A4A, 0xB44E, 0x8A4B, 0xB44F, 0x8A4C, 0xB452, 0x8A4D, 0xB453, 0x8A4E, 0xB455, + 0x8A4F, 0xB456, 0x8A50, 0xB457, 0x8A51, 0xB459, 0x8A52, 0xB45A, 0x8A53, 0xB45B, 0x8A54, 0xB45C, 0x8A55, 0xB45D, 0x8A56, 0xB45E, + 0x8A57, 0xB45F, 0x8A58, 0xB462, 0x8A59, 0xB464, 0x8A5A, 0xB466, 0x8A61, 0xB467, 0x8A62, 0xB468, 0x8A63, 0xB469, 0x8A64, 0xB46A, + 0x8A65, 0xB46B, 0x8A66, 0xB46D, 0x8A67, 0xB46E, 0x8A68, 0xB46F, 0x8A69, 0xB470, 0x8A6A, 0xB471, 0x8A6B, 0xB472, 0x8A6C, 0xB473, + 0x8A6D, 0xB474, 0x8A6E, 0xB475, 0x8A6F, 0xB476, 0x8A70, 0xB477, 0x8A71, 0xB478, 0x8A72, 0xB479, 0x8A73, 0xB47A, 0x8A74, 0xB47B, + 0x8A75, 0xB47C, 0x8A76, 0xB47D, 0x8A77, 0xB47E, 0x8A78, 0xB47F, 0x8A79, 0xB481, 0x8A7A, 0xB482, 0x8A81, 0xB483, 0x8A82, 0xB484, + 0x8A83, 0xB485, 0x8A84, 0xB486, 0x8A85, 0xB487, 0x8A86, 0xB489, 0x8A87, 0xB48A, 0x8A88, 0xB48B, 0x8A89, 0xB48C, 0x8A8A, 0xB48D, + 0x8A8B, 0xB48E, 0x8A8C, 0xB48F, 0x8A8D, 0xB490, 0x8A8E, 0xB491, 0x8A8F, 0xB492, 0x8A90, 0xB493, 0x8A91, 0xB494, 0x8A92, 0xB495, + 0x8A93, 0xB496, 0x8A94, 0xB497, 0x8A95, 0xB498, 0x8A96, 0xB499, 0x8A97, 0xB49A, 0x8A98, 0xB49B, 0x8A99, 0xB49C, 0x8A9A, 0xB49E, + 0x8A9B, 0xB49F, 0x8A9C, 0xB4A0, 0x8A9D, 0xB4A1, 0x8A9E, 0xB4A2, 0x8A9F, 0xB4A3, 0x8AA0, 0xB4A5, 0x8AA1, 0xB4A6, 0x8AA2, 0xB4A7, + 0x8AA3, 0xB4A9, 0x8AA4, 0xB4AA, 0x8AA5, 0xB4AB, 0x8AA6, 0xB4AD, 0x8AA7, 0xB4AE, 0x8AA8, 0xB4AF, 0x8AA9, 0xB4B0, 0x8AAA, 0xB4B1, + 0x8AAB, 0xB4B2, 0x8AAC, 0xB4B3, 0x8AAD, 0xB4B4, 0x8AAE, 0xB4B6, 0x8AAF, 0xB4B8, 0x8AB0, 0xB4BA, 0x8AB1, 0xB4BB, 0x8AB2, 0xB4BC, + 0x8AB3, 0xB4BD, 0x8AB4, 0xB4BE, 0x8AB5, 0xB4BF, 0x8AB6, 0xB4C1, 0x8AB7, 0xB4C2, 0x8AB8, 0xB4C3, 0x8AB9, 0xB4C5, 0x8ABA, 0xB4C6, + 0x8ABB, 0xB4C7, 0x8ABC, 0xB4C9, 0x8ABD, 0xB4CA, 0x8ABE, 0xB4CB, 0x8ABF, 0xB4CC, 0x8AC0, 0xB4CD, 0x8AC1, 0xB4CE, 0x8AC2, 0xB4CF, + 0x8AC3, 0xB4D1, 0x8AC4, 0xB4D2, 0x8AC5, 0xB4D3, 0x8AC6, 0xB4D4, 0x8AC7, 0xB4D6, 0x8AC8, 0xB4D7, 0x8AC9, 0xB4D8, 0x8ACA, 0xB4D9, + 0x8ACB, 0xB4DA, 0x8ACC, 0xB4DB, 0x8ACD, 0xB4DE, 0x8ACE, 0xB4DF, 0x8ACF, 0xB4E1, 0x8AD0, 0xB4E2, 0x8AD1, 0xB4E5, 0x8AD2, 0xB4E7, + 0x8AD3, 0xB4E8, 0x8AD4, 0xB4E9, 0x8AD5, 0xB4EA, 0x8AD6, 0xB4EB, 0x8AD7, 0xB4EE, 0x8AD8, 0xB4F0, 0x8AD9, 0xB4F2, 0x8ADA, 0xB4F3, + 0x8ADB, 0xB4F4, 0x8ADC, 0xB4F5, 0x8ADD, 0xB4F6, 0x8ADE, 0xB4F7, 0x8ADF, 0xB4F9, 0x8AE0, 0xB4FA, 0x8AE1, 0xB4FB, 0x8AE2, 0xB4FC, + 0x8AE3, 0xB4FD, 0x8AE4, 0xB4FE, 0x8AE5, 0xB4FF, 0x8AE6, 0xB500, 0x8AE7, 0xB501, 0x8AE8, 0xB502, 0x8AE9, 0xB503, 0x8AEA, 0xB504, + 0x8AEB, 0xB505, 0x8AEC, 0xB506, 0x8AED, 0xB507, 0x8AEE, 0xB508, 0x8AEF, 0xB509, 0x8AF0, 0xB50A, 0x8AF1, 0xB50B, 0x8AF2, 0xB50C, + 0x8AF3, 0xB50D, 0x8AF4, 0xB50E, 0x8AF5, 0xB50F, 0x8AF6, 0xB510, 0x8AF7, 0xB511, 0x8AF8, 0xB512, 0x8AF9, 0xB513, 0x8AFA, 0xB516, + 0x8AFB, 0xB517, 0x8AFC, 0xB519, 0x8AFD, 0xB51A, 0x8AFE, 0xB51D, 0x8B41, 0xB51E, 0x8B42, 0xB51F, 0x8B43, 0xB520, 0x8B44, 0xB521, + 0x8B45, 0xB522, 0x8B46, 0xB523, 0x8B47, 0xB526, 0x8B48, 0xB52B, 0x8B49, 0xB52C, 0x8B4A, 0xB52D, 0x8B4B, 0xB52E, 0x8B4C, 0xB52F, + 0x8B4D, 0xB532, 0x8B4E, 0xB533, 0x8B4F, 0xB535, 0x8B50, 0xB536, 0x8B51, 0xB537, 0x8B52, 0xB539, 0x8B53, 0xB53A, 0x8B54, 0xB53B, + 0x8B55, 0xB53C, 0x8B56, 0xB53D, 0x8B57, 0xB53E, 0x8B58, 0xB53F, 0x8B59, 0xB542, 0x8B5A, 0xB546, 0x8B61, 0xB547, 0x8B62, 0xB548, + 0x8B63, 0xB549, 0x8B64, 0xB54A, 0x8B65, 0xB54E, 0x8B66, 0xB54F, 0x8B67, 0xB551, 0x8B68, 0xB552, 0x8B69, 0xB553, 0x8B6A, 0xB555, + 0x8B6B, 0xB556, 0x8B6C, 0xB557, 0x8B6D, 0xB558, 0x8B6E, 0xB559, 0x8B6F, 0xB55A, 0x8B70, 0xB55B, 0x8B71, 0xB55E, 0x8B72, 0xB562, + 0x8B73, 0xB563, 0x8B74, 0xB564, 0x8B75, 0xB565, 0x8B76, 0xB566, 0x8B77, 0xB567, 0x8B78, 0xB568, 0x8B79, 0xB569, 0x8B7A, 0xB56A, + 0x8B81, 0xB56B, 0x8B82, 0xB56C, 0x8B83, 0xB56D, 0x8B84, 0xB56E, 0x8B85, 0xB56F, 0x8B86, 0xB570, 0x8B87, 0xB571, 0x8B88, 0xB572, + 0x8B89, 0xB573, 0x8B8A, 0xB574, 0x8B8B, 0xB575, 0x8B8C, 0xB576, 0x8B8D, 0xB577, 0x8B8E, 0xB578, 0x8B8F, 0xB579, 0x8B90, 0xB57A, + 0x8B91, 0xB57B, 0x8B92, 0xB57C, 0x8B93, 0xB57D, 0x8B94, 0xB57E, 0x8B95, 0xB57F, 0x8B96, 0xB580, 0x8B97, 0xB581, 0x8B98, 0xB582, + 0x8B99, 0xB583, 0x8B9A, 0xB584, 0x8B9B, 0xB585, 0x8B9C, 0xB586, 0x8B9D, 0xB587, 0x8B9E, 0xB588, 0x8B9F, 0xB589, 0x8BA0, 0xB58A, + 0x8BA1, 0xB58B, 0x8BA2, 0xB58C, 0x8BA3, 0xB58D, 0x8BA4, 0xB58E, 0x8BA5, 0xB58F, 0x8BA6, 0xB590, 0x8BA7, 0xB591, 0x8BA8, 0xB592, + 0x8BA9, 0xB593, 0x8BAA, 0xB594, 0x8BAB, 0xB595, 0x8BAC, 0xB596, 0x8BAD, 0xB597, 0x8BAE, 0xB598, 0x8BAF, 0xB599, 0x8BB0, 0xB59A, + 0x8BB1, 0xB59B, 0x8BB2, 0xB59C, 0x8BB3, 0xB59D, 0x8BB4, 0xB59E, 0x8BB5, 0xB59F, 0x8BB6, 0xB5A2, 0x8BB7, 0xB5A3, 0x8BB8, 0xB5A5, + 0x8BB9, 0xB5A6, 0x8BBA, 0xB5A7, 0x8BBB, 0xB5A9, 0x8BBC, 0xB5AC, 0x8BBD, 0xB5AD, 0x8BBE, 0xB5AE, 0x8BBF, 0xB5AF, 0x8BC0, 0xB5B2, + 0x8BC1, 0xB5B6, 0x8BC2, 0xB5B7, 0x8BC3, 0xB5B8, 0x8BC4, 0xB5B9, 0x8BC5, 0xB5BA, 0x8BC6, 0xB5BE, 0x8BC7, 0xB5BF, 0x8BC8, 0xB5C1, + 0x8BC9, 0xB5C2, 0x8BCA, 0xB5C3, 0x8BCB, 0xB5C5, 0x8BCC, 0xB5C6, 0x8BCD, 0xB5C7, 0x8BCE, 0xB5C8, 0x8BCF, 0xB5C9, 0x8BD0, 0xB5CA, + 0x8BD1, 0xB5CB, 0x8BD2, 0xB5CE, 0x8BD3, 0xB5D2, 0x8BD4, 0xB5D3, 0x8BD5, 0xB5D4, 0x8BD6, 0xB5D5, 0x8BD7, 0xB5D6, 0x8BD8, 0xB5D7, + 0x8BD9, 0xB5D9, 0x8BDA, 0xB5DA, 0x8BDB, 0xB5DB, 0x8BDC, 0xB5DC, 0x8BDD, 0xB5DD, 0x8BDE, 0xB5DE, 0x8BDF, 0xB5DF, 0x8BE0, 0xB5E0, + 0x8BE1, 0xB5E1, 0x8BE2, 0xB5E2, 0x8BE3, 0xB5E3, 0x8BE4, 0xB5E4, 0x8BE5, 0xB5E5, 0x8BE6, 0xB5E6, 0x8BE7, 0xB5E7, 0x8BE8, 0xB5E8, + 0x8BE9, 0xB5E9, 0x8BEA, 0xB5EA, 0x8BEB, 0xB5EB, 0x8BEC, 0xB5ED, 0x8BED, 0xB5EE, 0x8BEE, 0xB5EF, 0x8BEF, 0xB5F0, 0x8BF0, 0xB5F1, + 0x8BF1, 0xB5F2, 0x8BF2, 0xB5F3, 0x8BF3, 0xB5F4, 0x8BF4, 0xB5F5, 0x8BF5, 0xB5F6, 0x8BF6, 0xB5F7, 0x8BF7, 0xB5F8, 0x8BF8, 0xB5F9, + 0x8BF9, 0xB5FA, 0x8BFA, 0xB5FB, 0x8BFB, 0xB5FC, 0x8BFC, 0xB5FD, 0x8BFD, 0xB5FE, 0x8BFE, 0xB5FF, 0x8C41, 0xB600, 0x8C42, 0xB601, + 0x8C43, 0xB602, 0x8C44, 0xB603, 0x8C45, 0xB604, 0x8C46, 0xB605, 0x8C47, 0xB606, 0x8C48, 0xB607, 0x8C49, 0xB608, 0x8C4A, 0xB609, + 0x8C4B, 0xB60A, 0x8C4C, 0xB60B, 0x8C4D, 0xB60C, 0x8C4E, 0xB60D, 0x8C4F, 0xB60E, 0x8C50, 0xB60F, 0x8C51, 0xB612, 0x8C52, 0xB613, + 0x8C53, 0xB615, 0x8C54, 0xB616, 0x8C55, 0xB617, 0x8C56, 0xB619, 0x8C57, 0xB61A, 0x8C58, 0xB61B, 0x8C59, 0xB61C, 0x8C5A, 0xB61D, + 0x8C61, 0xB61E, 0x8C62, 0xB61F, 0x8C63, 0xB620, 0x8C64, 0xB621, 0x8C65, 0xB622, 0x8C66, 0xB623, 0x8C67, 0xB624, 0x8C68, 0xB626, + 0x8C69, 0xB627, 0x8C6A, 0xB628, 0x8C6B, 0xB629, 0x8C6C, 0xB62A, 0x8C6D, 0xB62B, 0x8C6E, 0xB62D, 0x8C6F, 0xB62E, 0x8C70, 0xB62F, + 0x8C71, 0xB630, 0x8C72, 0xB631, 0x8C73, 0xB632, 0x8C74, 0xB633, 0x8C75, 0xB635, 0x8C76, 0xB636, 0x8C77, 0xB637, 0x8C78, 0xB638, + 0x8C79, 0xB639, 0x8C7A, 0xB63A, 0x8C81, 0xB63B, 0x8C82, 0xB63C, 0x8C83, 0xB63D, 0x8C84, 0xB63E, 0x8C85, 0xB63F, 0x8C86, 0xB640, + 0x8C87, 0xB641, 0x8C88, 0xB642, 0x8C89, 0xB643, 0x8C8A, 0xB644, 0x8C8B, 0xB645, 0x8C8C, 0xB646, 0x8C8D, 0xB647, 0x8C8E, 0xB649, + 0x8C8F, 0xB64A, 0x8C90, 0xB64B, 0x8C91, 0xB64C, 0x8C92, 0xB64D, 0x8C93, 0xB64E, 0x8C94, 0xB64F, 0x8C95, 0xB650, 0x8C96, 0xB651, + 0x8C97, 0xB652, 0x8C98, 0xB653, 0x8C99, 0xB654, 0x8C9A, 0xB655, 0x8C9B, 0xB656, 0x8C9C, 0xB657, 0x8C9D, 0xB658, 0x8C9E, 0xB659, + 0x8C9F, 0xB65A, 0x8CA0, 0xB65B, 0x8CA1, 0xB65C, 0x8CA2, 0xB65D, 0x8CA3, 0xB65E, 0x8CA4, 0xB65F, 0x8CA5, 0xB660, 0x8CA6, 0xB661, + 0x8CA7, 0xB662, 0x8CA8, 0xB663, 0x8CA9, 0xB665, 0x8CAA, 0xB666, 0x8CAB, 0xB667, 0x8CAC, 0xB669, 0x8CAD, 0xB66A, 0x8CAE, 0xB66B, + 0x8CAF, 0xB66C, 0x8CB0, 0xB66D, 0x8CB1, 0xB66E, 0x8CB2, 0xB66F, 0x8CB3, 0xB670, 0x8CB4, 0xB671, 0x8CB5, 0xB672, 0x8CB6, 0xB673, + 0x8CB7, 0xB674, 0x8CB8, 0xB675, 0x8CB9, 0xB676, 0x8CBA, 0xB677, 0x8CBB, 0xB678, 0x8CBC, 0xB679, 0x8CBD, 0xB67A, 0x8CBE, 0xB67B, + 0x8CBF, 0xB67C, 0x8CC0, 0xB67D, 0x8CC1, 0xB67E, 0x8CC2, 0xB67F, 0x8CC3, 0xB680, 0x8CC4, 0xB681, 0x8CC5, 0xB682, 0x8CC6, 0xB683, + 0x8CC7, 0xB684, 0x8CC8, 0xB685, 0x8CC9, 0xB686, 0x8CCA, 0xB687, 0x8CCB, 0xB688, 0x8CCC, 0xB689, 0x8CCD, 0xB68A, 0x8CCE, 0xB68B, + 0x8CCF, 0xB68C, 0x8CD0, 0xB68D, 0x8CD1, 0xB68E, 0x8CD2, 0xB68F, 0x8CD3, 0xB690, 0x8CD4, 0xB691, 0x8CD5, 0xB692, 0x8CD6, 0xB693, + 0x8CD7, 0xB694, 0x8CD8, 0xB695, 0x8CD9, 0xB696, 0x8CDA, 0xB697, 0x8CDB, 0xB698, 0x8CDC, 0xB699, 0x8CDD, 0xB69A, 0x8CDE, 0xB69B, + 0x8CDF, 0xB69E, 0x8CE0, 0xB69F, 0x8CE1, 0xB6A1, 0x8CE2, 0xB6A2, 0x8CE3, 0xB6A3, 0x8CE4, 0xB6A5, 0x8CE5, 0xB6A6, 0x8CE6, 0xB6A7, + 0x8CE7, 0xB6A8, 0x8CE8, 0xB6A9, 0x8CE9, 0xB6AA, 0x8CEA, 0xB6AD, 0x8CEB, 0xB6AE, 0x8CEC, 0xB6AF, 0x8CED, 0xB6B0, 0x8CEE, 0xB6B2, + 0x8CEF, 0xB6B3, 0x8CF0, 0xB6B4, 0x8CF1, 0xB6B5, 0x8CF2, 0xB6B6, 0x8CF3, 0xB6B7, 0x8CF4, 0xB6B8, 0x8CF5, 0xB6B9, 0x8CF6, 0xB6BA, + 0x8CF7, 0xB6BB, 0x8CF8, 0xB6BC, 0x8CF9, 0xB6BD, 0x8CFA, 0xB6BE, 0x8CFB, 0xB6BF, 0x8CFC, 0xB6C0, 0x8CFD, 0xB6C1, 0x8CFE, 0xB6C2, + 0x8D41, 0xB6C3, 0x8D42, 0xB6C4, 0x8D43, 0xB6C5, 0x8D44, 0xB6C6, 0x8D45, 0xB6C7, 0x8D46, 0xB6C8, 0x8D47, 0xB6C9, 0x8D48, 0xB6CA, + 0x8D49, 0xB6CB, 0x8D4A, 0xB6CC, 0x8D4B, 0xB6CD, 0x8D4C, 0xB6CE, 0x8D4D, 0xB6CF, 0x8D4E, 0xB6D0, 0x8D4F, 0xB6D1, 0x8D50, 0xB6D2, + 0x8D51, 0xB6D3, 0x8D52, 0xB6D5, 0x8D53, 0xB6D6, 0x8D54, 0xB6D7, 0x8D55, 0xB6D8, 0x8D56, 0xB6D9, 0x8D57, 0xB6DA, 0x8D58, 0xB6DB, + 0x8D59, 0xB6DC, 0x8D5A, 0xB6DD, 0x8D61, 0xB6DE, 0x8D62, 0xB6DF, 0x8D63, 0xB6E0, 0x8D64, 0xB6E1, 0x8D65, 0xB6E2, 0x8D66, 0xB6E3, + 0x8D67, 0xB6E4, 0x8D68, 0xB6E5, 0x8D69, 0xB6E6, 0x8D6A, 0xB6E7, 0x8D6B, 0xB6E8, 0x8D6C, 0xB6E9, 0x8D6D, 0xB6EA, 0x8D6E, 0xB6EB, + 0x8D6F, 0xB6EC, 0x8D70, 0xB6ED, 0x8D71, 0xB6EE, 0x8D72, 0xB6EF, 0x8D73, 0xB6F1, 0x8D74, 0xB6F2, 0x8D75, 0xB6F3, 0x8D76, 0xB6F5, + 0x8D77, 0xB6F6, 0x8D78, 0xB6F7, 0x8D79, 0xB6F9, 0x8D7A, 0xB6FA, 0x8D81, 0xB6FB, 0x8D82, 0xB6FC, 0x8D83, 0xB6FD, 0x8D84, 0xB6FE, + 0x8D85, 0xB6FF, 0x8D86, 0xB702, 0x8D87, 0xB703, 0x8D88, 0xB704, 0x8D89, 0xB706, 0x8D8A, 0xB707, 0x8D8B, 0xB708, 0x8D8C, 0xB709, + 0x8D8D, 0xB70A, 0x8D8E, 0xB70B, 0x8D8F, 0xB70C, 0x8D90, 0xB70D, 0x8D91, 0xB70E, 0x8D92, 0xB70F, 0x8D93, 0xB710, 0x8D94, 0xB711, + 0x8D95, 0xB712, 0x8D96, 0xB713, 0x8D97, 0xB714, 0x8D98, 0xB715, 0x8D99, 0xB716, 0x8D9A, 0xB717, 0x8D9B, 0xB718, 0x8D9C, 0xB719, + 0x8D9D, 0xB71A, 0x8D9E, 0xB71B, 0x8D9F, 0xB71C, 0x8DA0, 0xB71D, 0x8DA1, 0xB71E, 0x8DA2, 0xB71F, 0x8DA3, 0xB720, 0x8DA4, 0xB721, + 0x8DA5, 0xB722, 0x8DA6, 0xB723, 0x8DA7, 0xB724, 0x8DA8, 0xB725, 0x8DA9, 0xB726, 0x8DAA, 0xB727, 0x8DAB, 0xB72A, 0x8DAC, 0xB72B, + 0x8DAD, 0xB72D, 0x8DAE, 0xB72E, 0x8DAF, 0xB731, 0x8DB0, 0xB732, 0x8DB1, 0xB733, 0x8DB2, 0xB734, 0x8DB3, 0xB735, 0x8DB4, 0xB736, + 0x8DB5, 0xB737, 0x8DB6, 0xB73A, 0x8DB7, 0xB73C, 0x8DB8, 0xB73D, 0x8DB9, 0xB73E, 0x8DBA, 0xB73F, 0x8DBB, 0xB740, 0x8DBC, 0xB741, + 0x8DBD, 0xB742, 0x8DBE, 0xB743, 0x8DBF, 0xB745, 0x8DC0, 0xB746, 0x8DC1, 0xB747, 0x8DC2, 0xB749, 0x8DC3, 0xB74A, 0x8DC4, 0xB74B, + 0x8DC5, 0xB74D, 0x8DC6, 0xB74E, 0x8DC7, 0xB74F, 0x8DC8, 0xB750, 0x8DC9, 0xB751, 0x8DCA, 0xB752, 0x8DCB, 0xB753, 0x8DCC, 0xB756, + 0x8DCD, 0xB757, 0x8DCE, 0xB758, 0x8DCF, 0xB759, 0x8DD0, 0xB75A, 0x8DD1, 0xB75B, 0x8DD2, 0xB75C, 0x8DD3, 0xB75D, 0x8DD4, 0xB75E, + 0x8DD5, 0xB75F, 0x8DD6, 0xB761, 0x8DD7, 0xB762, 0x8DD8, 0xB763, 0x8DD9, 0xB765, 0x8DDA, 0xB766, 0x8DDB, 0xB767, 0x8DDC, 0xB769, + 0x8DDD, 0xB76A, 0x8DDE, 0xB76B, 0x8DDF, 0xB76C, 0x8DE0, 0xB76D, 0x8DE1, 0xB76E, 0x8DE2, 0xB76F, 0x8DE3, 0xB772, 0x8DE4, 0xB774, + 0x8DE5, 0xB776, 0x8DE6, 0xB777, 0x8DE7, 0xB778, 0x8DE8, 0xB779, 0x8DE9, 0xB77A, 0x8DEA, 0xB77B, 0x8DEB, 0xB77E, 0x8DEC, 0xB77F, + 0x8DED, 0xB781, 0x8DEE, 0xB782, 0x8DEF, 0xB783, 0x8DF0, 0xB785, 0x8DF1, 0xB786, 0x8DF2, 0xB787, 0x8DF3, 0xB788, 0x8DF4, 0xB789, + 0x8DF5, 0xB78A, 0x8DF6, 0xB78B, 0x8DF7, 0xB78E, 0x8DF8, 0xB793, 0x8DF9, 0xB794, 0x8DFA, 0xB795, 0x8DFB, 0xB79A, 0x8DFC, 0xB79B, + 0x8DFD, 0xB79D, 0x8DFE, 0xB79E, 0x8E41, 0xB79F, 0x8E42, 0xB7A1, 0x8E43, 0xB7A2, 0x8E44, 0xB7A3, 0x8E45, 0xB7A4, 0x8E46, 0xB7A5, + 0x8E47, 0xB7A6, 0x8E48, 0xB7A7, 0x8E49, 0xB7AA, 0x8E4A, 0xB7AE, 0x8E4B, 0xB7AF, 0x8E4C, 0xB7B0, 0x8E4D, 0xB7B1, 0x8E4E, 0xB7B2, + 0x8E4F, 0xB7B3, 0x8E50, 0xB7B6, 0x8E51, 0xB7B7, 0x8E52, 0xB7B9, 0x8E53, 0xB7BA, 0x8E54, 0xB7BB, 0x8E55, 0xB7BC, 0x8E56, 0xB7BD, + 0x8E57, 0xB7BE, 0x8E58, 0xB7BF, 0x8E59, 0xB7C0, 0x8E5A, 0xB7C1, 0x8E61, 0xB7C2, 0x8E62, 0xB7C3, 0x8E63, 0xB7C4, 0x8E64, 0xB7C5, + 0x8E65, 0xB7C6, 0x8E66, 0xB7C8, 0x8E67, 0xB7CA, 0x8E68, 0xB7CB, 0x8E69, 0xB7CC, 0x8E6A, 0xB7CD, 0x8E6B, 0xB7CE, 0x8E6C, 0xB7CF, + 0x8E6D, 0xB7D0, 0x8E6E, 0xB7D1, 0x8E6F, 0xB7D2, 0x8E70, 0xB7D3, 0x8E71, 0xB7D4, 0x8E72, 0xB7D5, 0x8E73, 0xB7D6, 0x8E74, 0xB7D7, + 0x8E75, 0xB7D8, 0x8E76, 0xB7D9, 0x8E77, 0xB7DA, 0x8E78, 0xB7DB, 0x8E79, 0xB7DC, 0x8E7A, 0xB7DD, 0x8E81, 0xB7DE, 0x8E82, 0xB7DF, + 0x8E83, 0xB7E0, 0x8E84, 0xB7E1, 0x8E85, 0xB7E2, 0x8E86, 0xB7E3, 0x8E87, 0xB7E4, 0x8E88, 0xB7E5, 0x8E89, 0xB7E6, 0x8E8A, 0xB7E7, + 0x8E8B, 0xB7E8, 0x8E8C, 0xB7E9, 0x8E8D, 0xB7EA, 0x8E8E, 0xB7EB, 0x8E8F, 0xB7EE, 0x8E90, 0xB7EF, 0x8E91, 0xB7F1, 0x8E92, 0xB7F2, + 0x8E93, 0xB7F3, 0x8E94, 0xB7F5, 0x8E95, 0xB7F6, 0x8E96, 0xB7F7, 0x8E97, 0xB7F8, 0x8E98, 0xB7F9, 0x8E99, 0xB7FA, 0x8E9A, 0xB7FB, + 0x8E9B, 0xB7FE, 0x8E9C, 0xB802, 0x8E9D, 0xB803, 0x8E9E, 0xB804, 0x8E9F, 0xB805, 0x8EA0, 0xB806, 0x8EA1, 0xB80A, 0x8EA2, 0xB80B, + 0x8EA3, 0xB80D, 0x8EA4, 0xB80E, 0x8EA5, 0xB80F, 0x8EA6, 0xB811, 0x8EA7, 0xB812, 0x8EA8, 0xB813, 0x8EA9, 0xB814, 0x8EAA, 0xB815, + 0x8EAB, 0xB816, 0x8EAC, 0xB817, 0x8EAD, 0xB81A, 0x8EAE, 0xB81C, 0x8EAF, 0xB81E, 0x8EB0, 0xB81F, 0x8EB1, 0xB820, 0x8EB2, 0xB821, + 0x8EB3, 0xB822, 0x8EB4, 0xB823, 0x8EB5, 0xB826, 0x8EB6, 0xB827, 0x8EB7, 0xB829, 0x8EB8, 0xB82A, 0x8EB9, 0xB82B, 0x8EBA, 0xB82D, + 0x8EBB, 0xB82E, 0x8EBC, 0xB82F, 0x8EBD, 0xB830, 0x8EBE, 0xB831, 0x8EBF, 0xB832, 0x8EC0, 0xB833, 0x8EC1, 0xB836, 0x8EC2, 0xB83A, + 0x8EC3, 0xB83B, 0x8EC4, 0xB83C, 0x8EC5, 0xB83D, 0x8EC6, 0xB83E, 0x8EC7, 0xB83F, 0x8EC8, 0xB841, 0x8EC9, 0xB842, 0x8ECA, 0xB843, + 0x8ECB, 0xB845, 0x8ECC, 0xB846, 0x8ECD, 0xB847, 0x8ECE, 0xB848, 0x8ECF, 0xB849, 0x8ED0, 0xB84A, 0x8ED1, 0xB84B, 0x8ED2, 0xB84C, + 0x8ED3, 0xB84D, 0x8ED4, 0xB84E, 0x8ED5, 0xB84F, 0x8ED6, 0xB850, 0x8ED7, 0xB852, 0x8ED8, 0xB854, 0x8ED9, 0xB855, 0x8EDA, 0xB856, + 0x8EDB, 0xB857, 0x8EDC, 0xB858, 0x8EDD, 0xB859, 0x8EDE, 0xB85A, 0x8EDF, 0xB85B, 0x8EE0, 0xB85E, 0x8EE1, 0xB85F, 0x8EE2, 0xB861, + 0x8EE3, 0xB862, 0x8EE4, 0xB863, 0x8EE5, 0xB865, 0x8EE6, 0xB866, 0x8EE7, 0xB867, 0x8EE8, 0xB868, 0x8EE9, 0xB869, 0x8EEA, 0xB86A, + 0x8EEB, 0xB86B, 0x8EEC, 0xB86E, 0x8EED, 0xB870, 0x8EEE, 0xB872, 0x8EEF, 0xB873, 0x8EF0, 0xB874, 0x8EF1, 0xB875, 0x8EF2, 0xB876, + 0x8EF3, 0xB877, 0x8EF4, 0xB879, 0x8EF5, 0xB87A, 0x8EF6, 0xB87B, 0x8EF7, 0xB87D, 0x8EF8, 0xB87E, 0x8EF9, 0xB87F, 0x8EFA, 0xB880, + 0x8EFB, 0xB881, 0x8EFC, 0xB882, 0x8EFD, 0xB883, 0x8EFE, 0xB884, 0x8F41, 0xB885, 0x8F42, 0xB886, 0x8F43, 0xB887, 0x8F44, 0xB888, + 0x8F45, 0xB889, 0x8F46, 0xB88A, 0x8F47, 0xB88B, 0x8F48, 0xB88C, 0x8F49, 0xB88E, 0x8F4A, 0xB88F, 0x8F4B, 0xB890, 0x8F4C, 0xB891, + 0x8F4D, 0xB892, 0x8F4E, 0xB893, 0x8F4F, 0xB894, 0x8F50, 0xB895, 0x8F51, 0xB896, 0x8F52, 0xB897, 0x8F53, 0xB898, 0x8F54, 0xB899, + 0x8F55, 0xB89A, 0x8F56, 0xB89B, 0x8F57, 0xB89C, 0x8F58, 0xB89D, 0x8F59, 0xB89E, 0x8F5A, 0xB89F, 0x8F61, 0xB8A0, 0x8F62, 0xB8A1, + 0x8F63, 0xB8A2, 0x8F64, 0xB8A3, 0x8F65, 0xB8A4, 0x8F66, 0xB8A5, 0x8F67, 0xB8A6, 0x8F68, 0xB8A7, 0x8F69, 0xB8A9, 0x8F6A, 0xB8AA, + 0x8F6B, 0xB8AB, 0x8F6C, 0xB8AC, 0x8F6D, 0xB8AD, 0x8F6E, 0xB8AE, 0x8F6F, 0xB8AF, 0x8F70, 0xB8B1, 0x8F71, 0xB8B2, 0x8F72, 0xB8B3, + 0x8F73, 0xB8B5, 0x8F74, 0xB8B6, 0x8F75, 0xB8B7, 0x8F76, 0xB8B9, 0x8F77, 0xB8BA, 0x8F78, 0xB8BB, 0x8F79, 0xB8BC, 0x8F7A, 0xB8BD, + 0x8F81, 0xB8BE, 0x8F82, 0xB8BF, 0x8F83, 0xB8C2, 0x8F84, 0xB8C4, 0x8F85, 0xB8C6, 0x8F86, 0xB8C7, 0x8F87, 0xB8C8, 0x8F88, 0xB8C9, + 0x8F89, 0xB8CA, 0x8F8A, 0xB8CB, 0x8F8B, 0xB8CD, 0x8F8C, 0xB8CE, 0x8F8D, 0xB8CF, 0x8F8E, 0xB8D1, 0x8F8F, 0xB8D2, 0x8F90, 0xB8D3, + 0x8F91, 0xB8D5, 0x8F92, 0xB8D6, 0x8F93, 0xB8D7, 0x8F94, 0xB8D8, 0x8F95, 0xB8D9, 0x8F96, 0xB8DA, 0x8F97, 0xB8DB, 0x8F98, 0xB8DC, + 0x8F99, 0xB8DE, 0x8F9A, 0xB8E0, 0x8F9B, 0xB8E2, 0x8F9C, 0xB8E3, 0x8F9D, 0xB8E4, 0x8F9E, 0xB8E5, 0x8F9F, 0xB8E6, 0x8FA0, 0xB8E7, + 0x8FA1, 0xB8EA, 0x8FA2, 0xB8EB, 0x8FA3, 0xB8ED, 0x8FA4, 0xB8EE, 0x8FA5, 0xB8EF, 0x8FA6, 0xB8F1, 0x8FA7, 0xB8F2, 0x8FA8, 0xB8F3, + 0x8FA9, 0xB8F4, 0x8FAA, 0xB8F5, 0x8FAB, 0xB8F6, 0x8FAC, 0xB8F7, 0x8FAD, 0xB8FA, 0x8FAE, 0xB8FC, 0x8FAF, 0xB8FE, 0x8FB0, 0xB8FF, + 0x8FB1, 0xB900, 0x8FB2, 0xB901, 0x8FB3, 0xB902, 0x8FB4, 0xB903, 0x8FB5, 0xB905, 0x8FB6, 0xB906, 0x8FB7, 0xB907, 0x8FB8, 0xB908, + 0x8FB9, 0xB909, 0x8FBA, 0xB90A, 0x8FBB, 0xB90B, 0x8FBC, 0xB90C, 0x8FBD, 0xB90D, 0x8FBE, 0xB90E, 0x8FBF, 0xB90F, 0x8FC0, 0xB910, + 0x8FC1, 0xB911, 0x8FC2, 0xB912, 0x8FC3, 0xB913, 0x8FC4, 0xB914, 0x8FC5, 0xB915, 0x8FC6, 0xB916, 0x8FC7, 0xB917, 0x8FC8, 0xB919, + 0x8FC9, 0xB91A, 0x8FCA, 0xB91B, 0x8FCB, 0xB91C, 0x8FCC, 0xB91D, 0x8FCD, 0xB91E, 0x8FCE, 0xB91F, 0x8FCF, 0xB921, 0x8FD0, 0xB922, + 0x8FD1, 0xB923, 0x8FD2, 0xB924, 0x8FD3, 0xB925, 0x8FD4, 0xB926, 0x8FD5, 0xB927, 0x8FD6, 0xB928, 0x8FD7, 0xB929, 0x8FD8, 0xB92A, + 0x8FD9, 0xB92B, 0x8FDA, 0xB92C, 0x8FDB, 0xB92D, 0x8FDC, 0xB92E, 0x8FDD, 0xB92F, 0x8FDE, 0xB930, 0x8FDF, 0xB931, 0x8FE0, 0xB932, + 0x8FE1, 0xB933, 0x8FE2, 0xB934, 0x8FE3, 0xB935, 0x8FE4, 0xB936, 0x8FE5, 0xB937, 0x8FE6, 0xB938, 0x8FE7, 0xB939, 0x8FE8, 0xB93A, + 0x8FE9, 0xB93B, 0x8FEA, 0xB93E, 0x8FEB, 0xB93F, 0x8FEC, 0xB941, 0x8FED, 0xB942, 0x8FEE, 0xB943, 0x8FEF, 0xB945, 0x8FF0, 0xB946, + 0x8FF1, 0xB947, 0x8FF2, 0xB948, 0x8FF3, 0xB949, 0x8FF4, 0xB94A, 0x8FF5, 0xB94B, 0x8FF6, 0xB94D, 0x8FF7, 0xB94E, 0x8FF8, 0xB950, + 0x8FF9, 0xB952, 0x8FFA, 0xB953, 0x8FFB, 0xB954, 0x8FFC, 0xB955, 0x8FFD, 0xB956, 0x8FFE, 0xB957, 0x9041, 0xB95A, 0x9042, 0xB95B, + 0x9043, 0xB95D, 0x9044, 0xB95E, 0x9045, 0xB95F, 0x9046, 0xB961, 0x9047, 0xB962, 0x9048, 0xB963, 0x9049, 0xB964, 0x904A, 0xB965, + 0x904B, 0xB966, 0x904C, 0xB967, 0x904D, 0xB96A, 0x904E, 0xB96C, 0x904F, 0xB96E, 0x9050, 0xB96F, 0x9051, 0xB970, 0x9052, 0xB971, + 0x9053, 0xB972, 0x9054, 0xB973, 0x9055, 0xB976, 0x9056, 0xB977, 0x9057, 0xB979, 0x9058, 0xB97A, 0x9059, 0xB97B, 0x905A, 0xB97D, + 0x9061, 0xB97E, 0x9062, 0xB97F, 0x9063, 0xB980, 0x9064, 0xB981, 0x9065, 0xB982, 0x9066, 0xB983, 0x9067, 0xB986, 0x9068, 0xB988, + 0x9069, 0xB98B, 0x906A, 0xB98C, 0x906B, 0xB98F, 0x906C, 0xB990, 0x906D, 0xB991, 0x906E, 0xB992, 0x906F, 0xB993, 0x9070, 0xB994, + 0x9071, 0xB995, 0x9072, 0xB996, 0x9073, 0xB997, 0x9074, 0xB998, 0x9075, 0xB999, 0x9076, 0xB99A, 0x9077, 0xB99B, 0x9078, 0xB99C, + 0x9079, 0xB99D, 0x907A, 0xB99E, 0x9081, 0xB99F, 0x9082, 0xB9A0, 0x9083, 0xB9A1, 0x9084, 0xB9A2, 0x9085, 0xB9A3, 0x9086, 0xB9A4, + 0x9087, 0xB9A5, 0x9088, 0xB9A6, 0x9089, 0xB9A7, 0x908A, 0xB9A8, 0x908B, 0xB9A9, 0x908C, 0xB9AA, 0x908D, 0xB9AB, 0x908E, 0xB9AE, + 0x908F, 0xB9AF, 0x9090, 0xB9B1, 0x9091, 0xB9B2, 0x9092, 0xB9B3, 0x9093, 0xB9B5, 0x9094, 0xB9B6, 0x9095, 0xB9B7, 0x9096, 0xB9B8, + 0x9097, 0xB9B9, 0x9098, 0xB9BA, 0x9099, 0xB9BB, 0x909A, 0xB9BE, 0x909B, 0xB9C0, 0x909C, 0xB9C2, 0x909D, 0xB9C3, 0x909E, 0xB9C4, + 0x909F, 0xB9C5, 0x90A0, 0xB9C6, 0x90A1, 0xB9C7, 0x90A2, 0xB9CA, 0x90A3, 0xB9CB, 0x90A4, 0xB9CD, 0x90A5, 0xB9D3, 0x90A6, 0xB9D4, + 0x90A7, 0xB9D5, 0x90A8, 0xB9D6, 0x90A9, 0xB9D7, 0x90AA, 0xB9DA, 0x90AB, 0xB9DC, 0x90AC, 0xB9DF, 0x90AD, 0xB9E0, 0x90AE, 0xB9E2, + 0x90AF, 0xB9E6, 0x90B0, 0xB9E7, 0x90B1, 0xB9E9, 0x90B2, 0xB9EA, 0x90B3, 0xB9EB, 0x90B4, 0xB9ED, 0x90B5, 0xB9EE, 0x90B6, 0xB9EF, + 0x90B7, 0xB9F0, 0x90B8, 0xB9F1, 0x90B9, 0xB9F2, 0x90BA, 0xB9F3, 0x90BB, 0xB9F6, 0x90BC, 0xB9FB, 0x90BD, 0xB9FC, 0x90BE, 0xB9FD, + 0x90BF, 0xB9FE, 0x90C0, 0xB9FF, 0x90C1, 0xBA02, 0x90C2, 0xBA03, 0x90C3, 0xBA04, 0x90C4, 0xBA05, 0x90C5, 0xBA06, 0x90C6, 0xBA07, + 0x90C7, 0xBA09, 0x90C8, 0xBA0A, 0x90C9, 0xBA0B, 0x90CA, 0xBA0C, 0x90CB, 0xBA0D, 0x90CC, 0xBA0E, 0x90CD, 0xBA0F, 0x90CE, 0xBA10, + 0x90CF, 0xBA11, 0x90D0, 0xBA12, 0x90D1, 0xBA13, 0x90D2, 0xBA14, 0x90D3, 0xBA16, 0x90D4, 0xBA17, 0x90D5, 0xBA18, 0x90D6, 0xBA19, + 0x90D7, 0xBA1A, 0x90D8, 0xBA1B, 0x90D9, 0xBA1C, 0x90DA, 0xBA1D, 0x90DB, 0xBA1E, 0x90DC, 0xBA1F, 0x90DD, 0xBA20, 0x90DE, 0xBA21, + 0x90DF, 0xBA22, 0x90E0, 0xBA23, 0x90E1, 0xBA24, 0x90E2, 0xBA25, 0x90E3, 0xBA26, 0x90E4, 0xBA27, 0x90E5, 0xBA28, 0x90E6, 0xBA29, + 0x90E7, 0xBA2A, 0x90E8, 0xBA2B, 0x90E9, 0xBA2C, 0x90EA, 0xBA2D, 0x90EB, 0xBA2E, 0x90EC, 0xBA2F, 0x90ED, 0xBA30, 0x90EE, 0xBA31, + 0x90EF, 0xBA32, 0x90F0, 0xBA33, 0x90F1, 0xBA34, 0x90F2, 0xBA35, 0x90F3, 0xBA36, 0x90F4, 0xBA37, 0x90F5, 0xBA3A, 0x90F6, 0xBA3B, + 0x90F7, 0xBA3D, 0x90F8, 0xBA3E, 0x90F9, 0xBA3F, 0x90FA, 0xBA41, 0x90FB, 0xBA43, 0x90FC, 0xBA44, 0x90FD, 0xBA45, 0x90FE, 0xBA46, + 0x9141, 0xBA47, 0x9142, 0xBA4A, 0x9143, 0xBA4C, 0x9144, 0xBA4F, 0x9145, 0xBA50, 0x9146, 0xBA51, 0x9147, 0xBA52, 0x9148, 0xBA56, + 0x9149, 0xBA57, 0x914A, 0xBA59, 0x914B, 0xBA5A, 0x914C, 0xBA5B, 0x914D, 0xBA5D, 0x914E, 0xBA5E, 0x914F, 0xBA5F, 0x9150, 0xBA60, + 0x9151, 0xBA61, 0x9152, 0xBA62, 0x9153, 0xBA63, 0x9154, 0xBA66, 0x9155, 0xBA6A, 0x9156, 0xBA6B, 0x9157, 0xBA6C, 0x9158, 0xBA6D, + 0x9159, 0xBA6E, 0x915A, 0xBA6F, 0x9161, 0xBA72, 0x9162, 0xBA73, 0x9163, 0xBA75, 0x9164, 0xBA76, 0x9165, 0xBA77, 0x9166, 0xBA79, + 0x9167, 0xBA7A, 0x9168, 0xBA7B, 0x9169, 0xBA7C, 0x916A, 0xBA7D, 0x916B, 0xBA7E, 0x916C, 0xBA7F, 0x916D, 0xBA80, 0x916E, 0xBA81, + 0x916F, 0xBA82, 0x9170, 0xBA86, 0x9171, 0xBA88, 0x9172, 0xBA89, 0x9173, 0xBA8A, 0x9174, 0xBA8B, 0x9175, 0xBA8D, 0x9176, 0xBA8E, + 0x9177, 0xBA8F, 0x9178, 0xBA90, 0x9179, 0xBA91, 0x917A, 0xBA92, 0x9181, 0xBA93, 0x9182, 0xBA94, 0x9183, 0xBA95, 0x9184, 0xBA96, + 0x9185, 0xBA97, 0x9186, 0xBA98, 0x9187, 0xBA99, 0x9188, 0xBA9A, 0x9189, 0xBA9B, 0x918A, 0xBA9C, 0x918B, 0xBA9D, 0x918C, 0xBA9E, + 0x918D, 0xBA9F, 0x918E, 0xBAA0, 0x918F, 0xBAA1, 0x9190, 0xBAA2, 0x9191, 0xBAA3, 0x9192, 0xBAA4, 0x9193, 0xBAA5, 0x9194, 0xBAA6, + 0x9195, 0xBAA7, 0x9196, 0xBAAA, 0x9197, 0xBAAD, 0x9198, 0xBAAE, 0x9199, 0xBAAF, 0x919A, 0xBAB1, 0x919B, 0xBAB3, 0x919C, 0xBAB4, + 0x919D, 0xBAB5, 0x919E, 0xBAB6, 0x919F, 0xBAB7, 0x91A0, 0xBABA, 0x91A1, 0xBABC, 0x91A2, 0xBABE, 0x91A3, 0xBABF, 0x91A4, 0xBAC0, + 0x91A5, 0xBAC1, 0x91A6, 0xBAC2, 0x91A7, 0xBAC3, 0x91A8, 0xBAC5, 0x91A9, 0xBAC6, 0x91AA, 0xBAC7, 0x91AB, 0xBAC9, 0x91AC, 0xBACA, + 0x91AD, 0xBACB, 0x91AE, 0xBACC, 0x91AF, 0xBACD, 0x91B0, 0xBACE, 0x91B1, 0xBACF, 0x91B2, 0xBAD0, 0x91B3, 0xBAD1, 0x91B4, 0xBAD2, + 0x91B5, 0xBAD3, 0x91B6, 0xBAD4, 0x91B7, 0xBAD5, 0x91B8, 0xBAD6, 0x91B9, 0xBAD7, 0x91BA, 0xBADA, 0x91BB, 0xBADB, 0x91BC, 0xBADC, + 0x91BD, 0xBADD, 0x91BE, 0xBADE, 0x91BF, 0xBADF, 0x91C0, 0xBAE0, 0x91C1, 0xBAE1, 0x91C2, 0xBAE2, 0x91C3, 0xBAE3, 0x91C4, 0xBAE4, + 0x91C5, 0xBAE5, 0x91C6, 0xBAE6, 0x91C7, 0xBAE7, 0x91C8, 0xBAE8, 0x91C9, 0xBAE9, 0x91CA, 0xBAEA, 0x91CB, 0xBAEB, 0x91CC, 0xBAEC, + 0x91CD, 0xBAED, 0x91CE, 0xBAEE, 0x91CF, 0xBAEF, 0x91D0, 0xBAF0, 0x91D1, 0xBAF1, 0x91D2, 0xBAF2, 0x91D3, 0xBAF3, 0x91D4, 0xBAF4, + 0x91D5, 0xBAF5, 0x91D6, 0xBAF6, 0x91D7, 0xBAF7, 0x91D8, 0xBAF8, 0x91D9, 0xBAF9, 0x91DA, 0xBAFA, 0x91DB, 0xBAFB, 0x91DC, 0xBAFD, + 0x91DD, 0xBAFE, 0x91DE, 0xBAFF, 0x91DF, 0xBB01, 0x91E0, 0xBB02, 0x91E1, 0xBB03, 0x91E2, 0xBB05, 0x91E3, 0xBB06, 0x91E4, 0xBB07, + 0x91E5, 0xBB08, 0x91E6, 0xBB09, 0x91E7, 0xBB0A, 0x91E8, 0xBB0B, 0x91E9, 0xBB0C, 0x91EA, 0xBB0E, 0x91EB, 0xBB10, 0x91EC, 0xBB12, + 0x91ED, 0xBB13, 0x91EE, 0xBB14, 0x91EF, 0xBB15, 0x91F0, 0xBB16, 0x91F1, 0xBB17, 0x91F2, 0xBB19, 0x91F3, 0xBB1A, 0x91F4, 0xBB1B, + 0x91F5, 0xBB1D, 0x91F6, 0xBB1E, 0x91F7, 0xBB1F, 0x91F8, 0xBB21, 0x91F9, 0xBB22, 0x91FA, 0xBB23, 0x91FB, 0xBB24, 0x91FC, 0xBB25, + 0x91FD, 0xBB26, 0x91FE, 0xBB27, 0x9241, 0xBB28, 0x9242, 0xBB2A, 0x9243, 0xBB2C, 0x9244, 0xBB2D, 0x9245, 0xBB2E, 0x9246, 0xBB2F, + 0x9247, 0xBB30, 0x9248, 0xBB31, 0x9249, 0xBB32, 0x924A, 0xBB33, 0x924B, 0xBB37, 0x924C, 0xBB39, 0x924D, 0xBB3A, 0x924E, 0xBB3F, + 0x924F, 0xBB40, 0x9250, 0xBB41, 0x9251, 0xBB42, 0x9252, 0xBB43, 0x9253, 0xBB46, 0x9254, 0xBB48, 0x9255, 0xBB4A, 0x9256, 0xBB4B, + 0x9257, 0xBB4C, 0x9258, 0xBB4E, 0x9259, 0xBB51, 0x925A, 0xBB52, 0x9261, 0xBB53, 0x9262, 0xBB55, 0x9263, 0xBB56, 0x9264, 0xBB57, + 0x9265, 0xBB59, 0x9266, 0xBB5A, 0x9267, 0xBB5B, 0x9268, 0xBB5C, 0x9269, 0xBB5D, 0x926A, 0xBB5E, 0x926B, 0xBB5F, 0x926C, 0xBB60, + 0x926D, 0xBB62, 0x926E, 0xBB64, 0x926F, 0xBB65, 0x9270, 0xBB66, 0x9271, 0xBB67, 0x9272, 0xBB68, 0x9273, 0xBB69, 0x9274, 0xBB6A, + 0x9275, 0xBB6B, 0x9276, 0xBB6D, 0x9277, 0xBB6E, 0x9278, 0xBB6F, 0x9279, 0xBB70, 0x927A, 0xBB71, 0x9281, 0xBB72, 0x9282, 0xBB73, + 0x9283, 0xBB74, 0x9284, 0xBB75, 0x9285, 0xBB76, 0x9286, 0xBB77, 0x9287, 0xBB78, 0x9288, 0xBB79, 0x9289, 0xBB7A, 0x928A, 0xBB7B, + 0x928B, 0xBB7C, 0x928C, 0xBB7D, 0x928D, 0xBB7E, 0x928E, 0xBB7F, 0x928F, 0xBB80, 0x9290, 0xBB81, 0x9291, 0xBB82, 0x9292, 0xBB83, + 0x9293, 0xBB84, 0x9294, 0xBB85, 0x9295, 0xBB86, 0x9296, 0xBB87, 0x9297, 0xBB89, 0x9298, 0xBB8A, 0x9299, 0xBB8B, 0x929A, 0xBB8D, + 0x929B, 0xBB8E, 0x929C, 0xBB8F, 0x929D, 0xBB91, 0x929E, 0xBB92, 0x929F, 0xBB93, 0x92A0, 0xBB94, 0x92A1, 0xBB95, 0x92A2, 0xBB96, + 0x92A3, 0xBB97, 0x92A4, 0xBB98, 0x92A5, 0xBB99, 0x92A6, 0xBB9A, 0x92A7, 0xBB9B, 0x92A8, 0xBB9C, 0x92A9, 0xBB9D, 0x92AA, 0xBB9E, + 0x92AB, 0xBB9F, 0x92AC, 0xBBA0, 0x92AD, 0xBBA1, 0x92AE, 0xBBA2, 0x92AF, 0xBBA3, 0x92B0, 0xBBA5, 0x92B1, 0xBBA6, 0x92B2, 0xBBA7, + 0x92B3, 0xBBA9, 0x92B4, 0xBBAA, 0x92B5, 0xBBAB, 0x92B6, 0xBBAD, 0x92B7, 0xBBAE, 0x92B8, 0xBBAF, 0x92B9, 0xBBB0, 0x92BA, 0xBBB1, + 0x92BB, 0xBBB2, 0x92BC, 0xBBB3, 0x92BD, 0xBBB5, 0x92BE, 0xBBB6, 0x92BF, 0xBBB8, 0x92C0, 0xBBB9, 0x92C1, 0xBBBA, 0x92C2, 0xBBBB, + 0x92C3, 0xBBBC, 0x92C4, 0xBBBD, 0x92C5, 0xBBBE, 0x92C6, 0xBBBF, 0x92C7, 0xBBC1, 0x92C8, 0xBBC2, 0x92C9, 0xBBC3, 0x92CA, 0xBBC5, + 0x92CB, 0xBBC6, 0x92CC, 0xBBC7, 0x92CD, 0xBBC9, 0x92CE, 0xBBCA, 0x92CF, 0xBBCB, 0x92D0, 0xBBCC, 0x92D1, 0xBBCD, 0x92D2, 0xBBCE, + 0x92D3, 0xBBCF, 0x92D4, 0xBBD1, 0x92D5, 0xBBD2, 0x92D6, 0xBBD4, 0x92D7, 0xBBD5, 0x92D8, 0xBBD6, 0x92D9, 0xBBD7, 0x92DA, 0xBBD8, + 0x92DB, 0xBBD9, 0x92DC, 0xBBDA, 0x92DD, 0xBBDB, 0x92DE, 0xBBDC, 0x92DF, 0xBBDD, 0x92E0, 0xBBDE, 0x92E1, 0xBBDF, 0x92E2, 0xBBE0, + 0x92E3, 0xBBE1, 0x92E4, 0xBBE2, 0x92E5, 0xBBE3, 0x92E6, 0xBBE4, 0x92E7, 0xBBE5, 0x92E8, 0xBBE6, 0x92E9, 0xBBE7, 0x92EA, 0xBBE8, + 0x92EB, 0xBBE9, 0x92EC, 0xBBEA, 0x92ED, 0xBBEB, 0x92EE, 0xBBEC, 0x92EF, 0xBBED, 0x92F0, 0xBBEE, 0x92F1, 0xBBEF, 0x92F2, 0xBBF0, + 0x92F3, 0xBBF1, 0x92F4, 0xBBF2, 0x92F5, 0xBBF3, 0x92F6, 0xBBF4, 0x92F7, 0xBBF5, 0x92F8, 0xBBF6, 0x92F9, 0xBBF7, 0x92FA, 0xBBFA, + 0x92FB, 0xBBFB, 0x92FC, 0xBBFD, 0x92FD, 0xBBFE, 0x92FE, 0xBC01, 0x9341, 0xBC03, 0x9342, 0xBC04, 0x9343, 0xBC05, 0x9344, 0xBC06, + 0x9345, 0xBC07, 0x9346, 0xBC0A, 0x9347, 0xBC0E, 0x9348, 0xBC10, 0x9349, 0xBC12, 0x934A, 0xBC13, 0x934B, 0xBC19, 0x934C, 0xBC1A, + 0x934D, 0xBC20, 0x934E, 0xBC21, 0x934F, 0xBC22, 0x9350, 0xBC23, 0x9351, 0xBC26, 0x9352, 0xBC28, 0x9353, 0xBC2A, 0x9354, 0xBC2B, + 0x9355, 0xBC2C, 0x9356, 0xBC2E, 0x9357, 0xBC2F, 0x9358, 0xBC32, 0x9359, 0xBC33, 0x935A, 0xBC35, 0x9361, 0xBC36, 0x9362, 0xBC37, + 0x9363, 0xBC39, 0x9364, 0xBC3A, 0x9365, 0xBC3B, 0x9366, 0xBC3C, 0x9367, 0xBC3D, 0x9368, 0xBC3E, 0x9369, 0xBC3F, 0x936A, 0xBC42, + 0x936B, 0xBC46, 0x936C, 0xBC47, 0x936D, 0xBC48, 0x936E, 0xBC4A, 0x936F, 0xBC4B, 0x9370, 0xBC4E, 0x9371, 0xBC4F, 0x9372, 0xBC51, + 0x9373, 0xBC52, 0x9374, 0xBC53, 0x9375, 0xBC54, 0x9376, 0xBC55, 0x9377, 0xBC56, 0x9378, 0xBC57, 0x9379, 0xBC58, 0x937A, 0xBC59, + 0x9381, 0xBC5A, 0x9382, 0xBC5B, 0x9383, 0xBC5C, 0x9384, 0xBC5E, 0x9385, 0xBC5F, 0x9386, 0xBC60, 0x9387, 0xBC61, 0x9388, 0xBC62, + 0x9389, 0xBC63, 0x938A, 0xBC64, 0x938B, 0xBC65, 0x938C, 0xBC66, 0x938D, 0xBC67, 0x938E, 0xBC68, 0x938F, 0xBC69, 0x9390, 0xBC6A, + 0x9391, 0xBC6B, 0x9392, 0xBC6C, 0x9393, 0xBC6D, 0x9394, 0xBC6E, 0x9395, 0xBC6F, 0x9396, 0xBC70, 0x9397, 0xBC71, 0x9398, 0xBC72, + 0x9399, 0xBC73, 0x939A, 0xBC74, 0x939B, 0xBC75, 0x939C, 0xBC76, 0x939D, 0xBC77, 0x939E, 0xBC78, 0x939F, 0xBC79, 0x93A0, 0xBC7A, + 0x93A1, 0xBC7B, 0x93A2, 0xBC7C, 0x93A3, 0xBC7D, 0x93A4, 0xBC7E, 0x93A5, 0xBC7F, 0x93A6, 0xBC80, 0x93A7, 0xBC81, 0x93A8, 0xBC82, + 0x93A9, 0xBC83, 0x93AA, 0xBC86, 0x93AB, 0xBC87, 0x93AC, 0xBC89, 0x93AD, 0xBC8A, 0x93AE, 0xBC8D, 0x93AF, 0xBC8F, 0x93B0, 0xBC90, + 0x93B1, 0xBC91, 0x93B2, 0xBC92, 0x93B3, 0xBC93, 0x93B4, 0xBC96, 0x93B5, 0xBC98, 0x93B6, 0xBC9B, 0x93B7, 0xBC9C, 0x93B8, 0xBC9D, + 0x93B9, 0xBC9E, 0x93BA, 0xBC9F, 0x93BB, 0xBCA2, 0x93BC, 0xBCA3, 0x93BD, 0xBCA5, 0x93BE, 0xBCA6, 0x93BF, 0xBCA9, 0x93C0, 0xBCAA, + 0x93C1, 0xBCAB, 0x93C2, 0xBCAC, 0x93C3, 0xBCAD, 0x93C4, 0xBCAE, 0x93C5, 0xBCAF, 0x93C6, 0xBCB2, 0x93C7, 0xBCB6, 0x93C8, 0xBCB7, + 0x93C9, 0xBCB8, 0x93CA, 0xBCB9, 0x93CB, 0xBCBA, 0x93CC, 0xBCBB, 0x93CD, 0xBCBE, 0x93CE, 0xBCBF, 0x93CF, 0xBCC1, 0x93D0, 0xBCC2, + 0x93D1, 0xBCC3, 0x93D2, 0xBCC5, 0x93D3, 0xBCC6, 0x93D4, 0xBCC7, 0x93D5, 0xBCC8, 0x93D6, 0xBCC9, 0x93D7, 0xBCCA, 0x93D8, 0xBCCB, + 0x93D9, 0xBCCC, 0x93DA, 0xBCCE, 0x93DB, 0xBCD2, 0x93DC, 0xBCD3, 0x93DD, 0xBCD4, 0x93DE, 0xBCD6, 0x93DF, 0xBCD7, 0x93E0, 0xBCD9, + 0x93E1, 0xBCDA, 0x93E2, 0xBCDB, 0x93E3, 0xBCDD, 0x93E4, 0xBCDE, 0x93E5, 0xBCDF, 0x93E6, 0xBCE0, 0x93E7, 0xBCE1, 0x93E8, 0xBCE2, + 0x93E9, 0xBCE3, 0x93EA, 0xBCE4, 0x93EB, 0xBCE5, 0x93EC, 0xBCE6, 0x93ED, 0xBCE7, 0x93EE, 0xBCE8, 0x93EF, 0xBCE9, 0x93F0, 0xBCEA, + 0x93F1, 0xBCEB, 0x93F2, 0xBCEC, 0x93F3, 0xBCED, 0x93F4, 0xBCEE, 0x93F5, 0xBCEF, 0x93F6, 0xBCF0, 0x93F7, 0xBCF1, 0x93F8, 0xBCF2, + 0x93F9, 0xBCF3, 0x93FA, 0xBCF7, 0x93FB, 0xBCF9, 0x93FC, 0xBCFA, 0x93FD, 0xBCFB, 0x93FE, 0xBCFD, 0x9441, 0xBCFE, 0x9442, 0xBCFF, + 0x9443, 0xBD00, 0x9444, 0xBD01, 0x9445, 0xBD02, 0x9446, 0xBD03, 0x9447, 0xBD06, 0x9448, 0xBD08, 0x9449, 0xBD0A, 0x944A, 0xBD0B, + 0x944B, 0xBD0C, 0x944C, 0xBD0D, 0x944D, 0xBD0E, 0x944E, 0xBD0F, 0x944F, 0xBD11, 0x9450, 0xBD12, 0x9451, 0xBD13, 0x9452, 0xBD15, + 0x9453, 0xBD16, 0x9454, 0xBD17, 0x9455, 0xBD18, 0x9456, 0xBD19, 0x9457, 0xBD1A, 0x9458, 0xBD1B, 0x9459, 0xBD1C, 0x945A, 0xBD1D, + 0x9461, 0xBD1E, 0x9462, 0xBD1F, 0x9463, 0xBD20, 0x9464, 0xBD21, 0x9465, 0xBD22, 0x9466, 0xBD23, 0x9467, 0xBD25, 0x9468, 0xBD26, + 0x9469, 0xBD27, 0x946A, 0xBD28, 0x946B, 0xBD29, 0x946C, 0xBD2A, 0x946D, 0xBD2B, 0x946E, 0xBD2D, 0x946F, 0xBD2E, 0x9470, 0xBD2F, + 0x9471, 0xBD30, 0x9472, 0xBD31, 0x9473, 0xBD32, 0x9474, 0xBD33, 0x9475, 0xBD34, 0x9476, 0xBD35, 0x9477, 0xBD36, 0x9478, 0xBD37, + 0x9479, 0xBD38, 0x947A, 0xBD39, 0x9481, 0xBD3A, 0x9482, 0xBD3B, 0x9483, 0xBD3C, 0x9484, 0xBD3D, 0x9485, 0xBD3E, 0x9486, 0xBD3F, + 0x9487, 0xBD41, 0x9488, 0xBD42, 0x9489, 0xBD43, 0x948A, 0xBD44, 0x948B, 0xBD45, 0x948C, 0xBD46, 0x948D, 0xBD47, 0x948E, 0xBD4A, + 0x948F, 0xBD4B, 0x9490, 0xBD4D, 0x9491, 0xBD4E, 0x9492, 0xBD4F, 0x9493, 0xBD51, 0x9494, 0xBD52, 0x9495, 0xBD53, 0x9496, 0xBD54, + 0x9497, 0xBD55, 0x9498, 0xBD56, 0x9499, 0xBD57, 0x949A, 0xBD5A, 0x949B, 0xBD5B, 0x949C, 0xBD5C, 0x949D, 0xBD5D, 0x949E, 0xBD5E, + 0x949F, 0xBD5F, 0x94A0, 0xBD60, 0x94A1, 0xBD61, 0x94A2, 0xBD62, 0x94A3, 0xBD63, 0x94A4, 0xBD65, 0x94A5, 0xBD66, 0x94A6, 0xBD67, + 0x94A7, 0xBD69, 0x94A8, 0xBD6A, 0x94A9, 0xBD6B, 0x94AA, 0xBD6C, 0x94AB, 0xBD6D, 0x94AC, 0xBD6E, 0x94AD, 0xBD6F, 0x94AE, 0xBD70, + 0x94AF, 0xBD71, 0x94B0, 0xBD72, 0x94B1, 0xBD73, 0x94B2, 0xBD74, 0x94B3, 0xBD75, 0x94B4, 0xBD76, 0x94B5, 0xBD77, 0x94B6, 0xBD78, + 0x94B7, 0xBD79, 0x94B8, 0xBD7A, 0x94B9, 0xBD7B, 0x94BA, 0xBD7C, 0x94BB, 0xBD7D, 0x94BC, 0xBD7E, 0x94BD, 0xBD7F, 0x94BE, 0xBD82, + 0x94BF, 0xBD83, 0x94C0, 0xBD85, 0x94C1, 0xBD86, 0x94C2, 0xBD8B, 0x94C3, 0xBD8C, 0x94C4, 0xBD8D, 0x94C5, 0xBD8E, 0x94C6, 0xBD8F, + 0x94C7, 0xBD92, 0x94C8, 0xBD94, 0x94C9, 0xBD96, 0x94CA, 0xBD97, 0x94CB, 0xBD98, 0x94CC, 0xBD9B, 0x94CD, 0xBD9D, 0x94CE, 0xBD9E, + 0x94CF, 0xBD9F, 0x94D0, 0xBDA0, 0x94D1, 0xBDA1, 0x94D2, 0xBDA2, 0x94D3, 0xBDA3, 0x94D4, 0xBDA5, 0x94D5, 0xBDA6, 0x94D6, 0xBDA7, + 0x94D7, 0xBDA8, 0x94D8, 0xBDA9, 0x94D9, 0xBDAA, 0x94DA, 0xBDAB, 0x94DB, 0xBDAC, 0x94DC, 0xBDAD, 0x94DD, 0xBDAE, 0x94DE, 0xBDAF, + 0x94DF, 0xBDB1, 0x94E0, 0xBDB2, 0x94E1, 0xBDB3, 0x94E2, 0xBDB4, 0x94E3, 0xBDB5, 0x94E4, 0xBDB6, 0x94E5, 0xBDB7, 0x94E6, 0xBDB9, + 0x94E7, 0xBDBA, 0x94E8, 0xBDBB, 0x94E9, 0xBDBC, 0x94EA, 0xBDBD, 0x94EB, 0xBDBE, 0x94EC, 0xBDBF, 0x94ED, 0xBDC0, 0x94EE, 0xBDC1, + 0x94EF, 0xBDC2, 0x94F0, 0xBDC3, 0x94F1, 0xBDC4, 0x94F2, 0xBDC5, 0x94F3, 0xBDC6, 0x94F4, 0xBDC7, 0x94F5, 0xBDC8, 0x94F6, 0xBDC9, + 0x94F7, 0xBDCA, 0x94F8, 0xBDCB, 0x94F9, 0xBDCC, 0x94FA, 0xBDCD, 0x94FB, 0xBDCE, 0x94FC, 0xBDCF, 0x94FD, 0xBDD0, 0x94FE, 0xBDD1, + 0x9541, 0xBDD2, 0x9542, 0xBDD3, 0x9543, 0xBDD6, 0x9544, 0xBDD7, 0x9545, 0xBDD9, 0x9546, 0xBDDA, 0x9547, 0xBDDB, 0x9548, 0xBDDD, + 0x9549, 0xBDDE, 0x954A, 0xBDDF, 0x954B, 0xBDE0, 0x954C, 0xBDE1, 0x954D, 0xBDE2, 0x954E, 0xBDE3, 0x954F, 0xBDE4, 0x9550, 0xBDE5, + 0x9551, 0xBDE6, 0x9552, 0xBDE7, 0x9553, 0xBDE8, 0x9554, 0xBDEA, 0x9555, 0xBDEB, 0x9556, 0xBDEC, 0x9557, 0xBDED, 0x9558, 0xBDEE, + 0x9559, 0xBDEF, 0x955A, 0xBDF1, 0x9561, 0xBDF2, 0x9562, 0xBDF3, 0x9563, 0xBDF5, 0x9564, 0xBDF6, 0x9565, 0xBDF7, 0x9566, 0xBDF9, + 0x9567, 0xBDFA, 0x9568, 0xBDFB, 0x9569, 0xBDFC, 0x956A, 0xBDFD, 0x956B, 0xBDFE, 0x956C, 0xBDFF, 0x956D, 0xBE01, 0x956E, 0xBE02, + 0x956F, 0xBE04, 0x9570, 0xBE06, 0x9571, 0xBE07, 0x9572, 0xBE08, 0x9573, 0xBE09, 0x9574, 0xBE0A, 0x9575, 0xBE0B, 0x9576, 0xBE0E, + 0x9577, 0xBE0F, 0x9578, 0xBE11, 0x9579, 0xBE12, 0x957A, 0xBE13, 0x9581, 0xBE15, 0x9582, 0xBE16, 0x9583, 0xBE17, 0x9584, 0xBE18, + 0x9585, 0xBE19, 0x9586, 0xBE1A, 0x9587, 0xBE1B, 0x9588, 0xBE1E, 0x9589, 0xBE20, 0x958A, 0xBE21, 0x958B, 0xBE22, 0x958C, 0xBE23, + 0x958D, 0xBE24, 0x958E, 0xBE25, 0x958F, 0xBE26, 0x9590, 0xBE27, 0x9591, 0xBE28, 0x9592, 0xBE29, 0x9593, 0xBE2A, 0x9594, 0xBE2B, + 0x9595, 0xBE2C, 0x9596, 0xBE2D, 0x9597, 0xBE2E, 0x9598, 0xBE2F, 0x9599, 0xBE30, 0x959A, 0xBE31, 0x959B, 0xBE32, 0x959C, 0xBE33, + 0x959D, 0xBE34, 0x959E, 0xBE35, 0x959F, 0xBE36, 0x95A0, 0xBE37, 0x95A1, 0xBE38, 0x95A2, 0xBE39, 0x95A3, 0xBE3A, 0x95A4, 0xBE3B, + 0x95A5, 0xBE3C, 0x95A6, 0xBE3D, 0x95A7, 0xBE3E, 0x95A8, 0xBE3F, 0x95A9, 0xBE40, 0x95AA, 0xBE41, 0x95AB, 0xBE42, 0x95AC, 0xBE43, + 0x95AD, 0xBE46, 0x95AE, 0xBE47, 0x95AF, 0xBE49, 0x95B0, 0xBE4A, 0x95B1, 0xBE4B, 0x95B2, 0xBE4D, 0x95B3, 0xBE4F, 0x95B4, 0xBE50, + 0x95B5, 0xBE51, 0x95B6, 0xBE52, 0x95B7, 0xBE53, 0x95B8, 0xBE56, 0x95B9, 0xBE58, 0x95BA, 0xBE5C, 0x95BB, 0xBE5D, 0x95BC, 0xBE5E, + 0x95BD, 0xBE5F, 0x95BE, 0xBE62, 0x95BF, 0xBE63, 0x95C0, 0xBE65, 0x95C1, 0xBE66, 0x95C2, 0xBE67, 0x95C3, 0xBE69, 0x95C4, 0xBE6B, + 0x95C5, 0xBE6C, 0x95C6, 0xBE6D, 0x95C7, 0xBE6E, 0x95C8, 0xBE6F, 0x95C9, 0xBE72, 0x95CA, 0xBE76, 0x95CB, 0xBE77, 0x95CC, 0xBE78, + 0x95CD, 0xBE79, 0x95CE, 0xBE7A, 0x95CF, 0xBE7E, 0x95D0, 0xBE7F, 0x95D1, 0xBE81, 0x95D2, 0xBE82, 0x95D3, 0xBE83, 0x95D4, 0xBE85, + 0x95D5, 0xBE86, 0x95D6, 0xBE87, 0x95D7, 0xBE88, 0x95D8, 0xBE89, 0x95D9, 0xBE8A, 0x95DA, 0xBE8B, 0x95DB, 0xBE8E, 0x95DC, 0xBE92, + 0x95DD, 0xBE93, 0x95DE, 0xBE94, 0x95DF, 0xBE95, 0x95E0, 0xBE96, 0x95E1, 0xBE97, 0x95E2, 0xBE9A, 0x95E3, 0xBE9B, 0x95E4, 0xBE9C, + 0x95E5, 0xBE9D, 0x95E6, 0xBE9E, 0x95E7, 0xBE9F, 0x95E8, 0xBEA0, 0x95E9, 0xBEA1, 0x95EA, 0xBEA2, 0x95EB, 0xBEA3, 0x95EC, 0xBEA4, + 0x95ED, 0xBEA5, 0x95EE, 0xBEA6, 0x95EF, 0xBEA7, 0x95F0, 0xBEA9, 0x95F1, 0xBEAA, 0x95F2, 0xBEAB, 0x95F3, 0xBEAC, 0x95F4, 0xBEAD, + 0x95F5, 0xBEAE, 0x95F6, 0xBEAF, 0x95F7, 0xBEB0, 0x95F8, 0xBEB1, 0x95F9, 0xBEB2, 0x95FA, 0xBEB3, 0x95FB, 0xBEB4, 0x95FC, 0xBEB5, + 0x95FD, 0xBEB6, 0x95FE, 0xBEB7, 0x9641, 0xBEB8, 0x9642, 0xBEB9, 0x9643, 0xBEBA, 0x9644, 0xBEBB, 0x9645, 0xBEBC, 0x9646, 0xBEBD, + 0x9647, 0xBEBE, 0x9648, 0xBEBF, 0x9649, 0xBEC0, 0x964A, 0xBEC1, 0x964B, 0xBEC2, 0x964C, 0xBEC3, 0x964D, 0xBEC4, 0x964E, 0xBEC5, + 0x964F, 0xBEC6, 0x9650, 0xBEC7, 0x9651, 0xBEC8, 0x9652, 0xBEC9, 0x9653, 0xBECA, 0x9654, 0xBECB, 0x9655, 0xBECC, 0x9656, 0xBECD, + 0x9657, 0xBECE, 0x9658, 0xBECF, 0x9659, 0xBED2, 0x965A, 0xBED3, 0x9661, 0xBED5, 0x9662, 0xBED6, 0x9663, 0xBED9, 0x9664, 0xBEDA, + 0x9665, 0xBEDB, 0x9666, 0xBEDC, 0x9667, 0xBEDD, 0x9668, 0xBEDE, 0x9669, 0xBEDF, 0x966A, 0xBEE1, 0x966B, 0xBEE2, 0x966C, 0xBEE6, + 0x966D, 0xBEE7, 0x966E, 0xBEE8, 0x966F, 0xBEE9, 0x9670, 0xBEEA, 0x9671, 0xBEEB, 0x9672, 0xBEED, 0x9673, 0xBEEE, 0x9674, 0xBEEF, + 0x9675, 0xBEF0, 0x9676, 0xBEF1, 0x9677, 0xBEF2, 0x9678, 0xBEF3, 0x9679, 0xBEF4, 0x967A, 0xBEF5, 0x9681, 0xBEF6, 0x9682, 0xBEF7, + 0x9683, 0xBEF8, 0x9684, 0xBEF9, 0x9685, 0xBEFA, 0x9686, 0xBEFB, 0x9687, 0xBEFC, 0x9688, 0xBEFD, 0x9689, 0xBEFE, 0x968A, 0xBEFF, + 0x968B, 0xBF00, 0x968C, 0xBF02, 0x968D, 0xBF03, 0x968E, 0xBF04, 0x968F, 0xBF05, 0x9690, 0xBF06, 0x9691, 0xBF07, 0x9692, 0xBF0A, + 0x9693, 0xBF0B, 0x9694, 0xBF0C, 0x9695, 0xBF0D, 0x9696, 0xBF0E, 0x9697, 0xBF0F, 0x9698, 0xBF10, 0x9699, 0xBF11, 0x969A, 0xBF12, + 0x969B, 0xBF13, 0x969C, 0xBF14, 0x969D, 0xBF15, 0x969E, 0xBF16, 0x969F, 0xBF17, 0x96A0, 0xBF1A, 0x96A1, 0xBF1E, 0x96A2, 0xBF1F, + 0x96A3, 0xBF20, 0x96A4, 0xBF21, 0x96A5, 0xBF22, 0x96A6, 0xBF23, 0x96A7, 0xBF24, 0x96A8, 0xBF25, 0x96A9, 0xBF26, 0x96AA, 0xBF27, + 0x96AB, 0xBF28, 0x96AC, 0xBF29, 0x96AD, 0xBF2A, 0x96AE, 0xBF2B, 0x96AF, 0xBF2C, 0x96B0, 0xBF2D, 0x96B1, 0xBF2E, 0x96B2, 0xBF2F, + 0x96B3, 0xBF30, 0x96B4, 0xBF31, 0x96B5, 0xBF32, 0x96B6, 0xBF33, 0x96B7, 0xBF34, 0x96B8, 0xBF35, 0x96B9, 0xBF36, 0x96BA, 0xBF37, + 0x96BB, 0xBF38, 0x96BC, 0xBF39, 0x96BD, 0xBF3A, 0x96BE, 0xBF3B, 0x96BF, 0xBF3C, 0x96C0, 0xBF3D, 0x96C1, 0xBF3E, 0x96C2, 0xBF3F, + 0x96C3, 0xBF42, 0x96C4, 0xBF43, 0x96C5, 0xBF45, 0x96C6, 0xBF46, 0x96C7, 0xBF47, 0x96C8, 0xBF49, 0x96C9, 0xBF4A, 0x96CA, 0xBF4B, + 0x96CB, 0xBF4C, 0x96CC, 0xBF4D, 0x96CD, 0xBF4E, 0x96CE, 0xBF4F, 0x96CF, 0xBF52, 0x96D0, 0xBF53, 0x96D1, 0xBF54, 0x96D2, 0xBF56, + 0x96D3, 0xBF57, 0x96D4, 0xBF58, 0x96D5, 0xBF59, 0x96D6, 0xBF5A, 0x96D7, 0xBF5B, 0x96D8, 0xBF5C, 0x96D9, 0xBF5D, 0x96DA, 0xBF5E, + 0x96DB, 0xBF5F, 0x96DC, 0xBF60, 0x96DD, 0xBF61, 0x96DE, 0xBF62, 0x96DF, 0xBF63, 0x96E0, 0xBF64, 0x96E1, 0xBF65, 0x96E2, 0xBF66, + 0x96E3, 0xBF67, 0x96E4, 0xBF68, 0x96E5, 0xBF69, 0x96E6, 0xBF6A, 0x96E7, 0xBF6B, 0x96E8, 0xBF6C, 0x96E9, 0xBF6D, 0x96EA, 0xBF6E, + 0x96EB, 0xBF6F, 0x96EC, 0xBF70, 0x96ED, 0xBF71, 0x96EE, 0xBF72, 0x96EF, 0xBF73, 0x96F0, 0xBF74, 0x96F1, 0xBF75, 0x96F2, 0xBF76, + 0x96F3, 0xBF77, 0x96F4, 0xBF78, 0x96F5, 0xBF79, 0x96F6, 0xBF7A, 0x96F7, 0xBF7B, 0x96F8, 0xBF7C, 0x96F9, 0xBF7D, 0x96FA, 0xBF7E, + 0x96FB, 0xBF7F, 0x96FC, 0xBF80, 0x96FD, 0xBF81, 0x96FE, 0xBF82, 0x9741, 0xBF83, 0x9742, 0xBF84, 0x9743, 0xBF85, 0x9744, 0xBF86, + 0x9745, 0xBF87, 0x9746, 0xBF88, 0x9747, 0xBF89, 0x9748, 0xBF8A, 0x9749, 0xBF8B, 0x974A, 0xBF8C, 0x974B, 0xBF8D, 0x974C, 0xBF8E, + 0x974D, 0xBF8F, 0x974E, 0xBF90, 0x974F, 0xBF91, 0x9750, 0xBF92, 0x9751, 0xBF93, 0x9752, 0xBF95, 0x9753, 0xBF96, 0x9754, 0xBF97, + 0x9755, 0xBF98, 0x9756, 0xBF99, 0x9757, 0xBF9A, 0x9758, 0xBF9B, 0x9759, 0xBF9C, 0x975A, 0xBF9D, 0x9761, 0xBF9E, 0x9762, 0xBF9F, + 0x9763, 0xBFA0, 0x9764, 0xBFA1, 0x9765, 0xBFA2, 0x9766, 0xBFA3, 0x9767, 0xBFA4, 0x9768, 0xBFA5, 0x9769, 0xBFA6, 0x976A, 0xBFA7, + 0x976B, 0xBFA8, 0x976C, 0xBFA9, 0x976D, 0xBFAA, 0x976E, 0xBFAB, 0x976F, 0xBFAC, 0x9770, 0xBFAD, 0x9771, 0xBFAE, 0x9772, 0xBFAF, + 0x9773, 0xBFB1, 0x9774, 0xBFB2, 0x9775, 0xBFB3, 0x9776, 0xBFB4, 0x9777, 0xBFB5, 0x9778, 0xBFB6, 0x9779, 0xBFB7, 0x977A, 0xBFB8, + 0x9781, 0xBFB9, 0x9782, 0xBFBA, 0x9783, 0xBFBB, 0x9784, 0xBFBC, 0x9785, 0xBFBD, 0x9786, 0xBFBE, 0x9787, 0xBFBF, 0x9788, 0xBFC0, + 0x9789, 0xBFC1, 0x978A, 0xBFC2, 0x978B, 0xBFC3, 0x978C, 0xBFC4, 0x978D, 0xBFC6, 0x978E, 0xBFC7, 0x978F, 0xBFC8, 0x9790, 0xBFC9, + 0x9791, 0xBFCA, 0x9792, 0xBFCB, 0x9793, 0xBFCE, 0x9794, 0xBFCF, 0x9795, 0xBFD1, 0x9796, 0xBFD2, 0x9797, 0xBFD3, 0x9798, 0xBFD5, + 0x9799, 0xBFD6, 0x979A, 0xBFD7, 0x979B, 0xBFD8, 0x979C, 0xBFD9, 0x979D, 0xBFDA, 0x979E, 0xBFDB, 0x979F, 0xBFDD, 0x97A0, 0xBFDE, + 0x97A1, 0xBFE0, 0x97A2, 0xBFE2, 0x97A3, 0xBFE3, 0x97A4, 0xBFE4, 0x97A5, 0xBFE5, 0x97A6, 0xBFE6, 0x97A7, 0xBFE7, 0x97A8, 0xBFE8, + 0x97A9, 0xBFE9, 0x97AA, 0xBFEA, 0x97AB, 0xBFEB, 0x97AC, 0xBFEC, 0x97AD, 0xBFED, 0x97AE, 0xBFEE, 0x97AF, 0xBFEF, 0x97B0, 0xBFF0, + 0x97B1, 0xBFF1, 0x97B2, 0xBFF2, 0x97B3, 0xBFF3, 0x97B4, 0xBFF4, 0x97B5, 0xBFF5, 0x97B6, 0xBFF6, 0x97B7, 0xBFF7, 0x97B8, 0xBFF8, + 0x97B9, 0xBFF9, 0x97BA, 0xBFFA, 0x97BB, 0xBFFB, 0x97BC, 0xBFFC, 0x97BD, 0xBFFD, 0x97BE, 0xBFFE, 0x97BF, 0xBFFF, 0x97C0, 0xC000, + 0x97C1, 0xC001, 0x97C2, 0xC002, 0x97C3, 0xC003, 0x97C4, 0xC004, 0x97C5, 0xC005, 0x97C6, 0xC006, 0x97C7, 0xC007, 0x97C8, 0xC008, + 0x97C9, 0xC009, 0x97CA, 0xC00A, 0x97CB, 0xC00B, 0x97CC, 0xC00C, 0x97CD, 0xC00D, 0x97CE, 0xC00E, 0x97CF, 0xC00F, 0x97D0, 0xC010, + 0x97D1, 0xC011, 0x97D2, 0xC012, 0x97D3, 0xC013, 0x97D4, 0xC014, 0x97D5, 0xC015, 0x97D6, 0xC016, 0x97D7, 0xC017, 0x97D8, 0xC018, + 0x97D9, 0xC019, 0x97DA, 0xC01A, 0x97DB, 0xC01B, 0x97DC, 0xC01C, 0x97DD, 0xC01D, 0x97DE, 0xC01E, 0x97DF, 0xC01F, 0x97E0, 0xC020, + 0x97E1, 0xC021, 0x97E2, 0xC022, 0x97E3, 0xC023, 0x97E4, 0xC024, 0x97E5, 0xC025, 0x97E6, 0xC026, 0x97E7, 0xC027, 0x97E8, 0xC028, + 0x97E9, 0xC029, 0x97EA, 0xC02A, 0x97EB, 0xC02B, 0x97EC, 0xC02C, 0x97ED, 0xC02D, 0x97EE, 0xC02E, 0x97EF, 0xC02F, 0x97F0, 0xC030, + 0x97F1, 0xC031, 0x97F2, 0xC032, 0x97F3, 0xC033, 0x97F4, 0xC034, 0x97F5, 0xC035, 0x97F6, 0xC036, 0x97F7, 0xC037, 0x97F8, 0xC038, + 0x97F9, 0xC039, 0x97FA, 0xC03A, 0x97FB, 0xC03B, 0x97FC, 0xC03D, 0x97FD, 0xC03E, 0x97FE, 0xC03F, 0x9841, 0xC040, 0x9842, 0xC041, + 0x9843, 0xC042, 0x9844, 0xC043, 0x9845, 0xC044, 0x9846, 0xC045, 0x9847, 0xC046, 0x9848, 0xC047, 0x9849, 0xC048, 0x984A, 0xC049, + 0x984B, 0xC04A, 0x984C, 0xC04B, 0x984D, 0xC04C, 0x984E, 0xC04D, 0x984F, 0xC04E, 0x9850, 0xC04F, 0x9851, 0xC050, 0x9852, 0xC052, + 0x9853, 0xC053, 0x9854, 0xC054, 0x9855, 0xC055, 0x9856, 0xC056, 0x9857, 0xC057, 0x9858, 0xC059, 0x9859, 0xC05A, 0x985A, 0xC05B, + 0x9861, 0xC05D, 0x9862, 0xC05E, 0x9863, 0xC05F, 0x9864, 0xC061, 0x9865, 0xC062, 0x9866, 0xC063, 0x9867, 0xC064, 0x9868, 0xC065, + 0x9869, 0xC066, 0x986A, 0xC067, 0x986B, 0xC06A, 0x986C, 0xC06B, 0x986D, 0xC06C, 0x986E, 0xC06D, 0x986F, 0xC06E, 0x9870, 0xC06F, + 0x9871, 0xC070, 0x9872, 0xC071, 0x9873, 0xC072, 0x9874, 0xC073, 0x9875, 0xC074, 0x9876, 0xC075, 0x9877, 0xC076, 0x9878, 0xC077, + 0x9879, 0xC078, 0x987A, 0xC079, 0x9881, 0xC07A, 0x9882, 0xC07B, 0x9883, 0xC07C, 0x9884, 0xC07D, 0x9885, 0xC07E, 0x9886, 0xC07F, + 0x9887, 0xC080, 0x9888, 0xC081, 0x9889, 0xC082, 0x988A, 0xC083, 0x988B, 0xC084, 0x988C, 0xC085, 0x988D, 0xC086, 0x988E, 0xC087, + 0x988F, 0xC088, 0x9890, 0xC089, 0x9891, 0xC08A, 0x9892, 0xC08B, 0x9893, 0xC08C, 0x9894, 0xC08D, 0x9895, 0xC08E, 0x9896, 0xC08F, + 0x9897, 0xC092, 0x9898, 0xC093, 0x9899, 0xC095, 0x989A, 0xC096, 0x989B, 0xC097, 0x989C, 0xC099, 0x989D, 0xC09A, 0x989E, 0xC09B, + 0x989F, 0xC09C, 0x98A0, 0xC09D, 0x98A1, 0xC09E, 0x98A2, 0xC09F, 0x98A3, 0xC0A2, 0x98A4, 0xC0A4, 0x98A5, 0xC0A6, 0x98A6, 0xC0A7, + 0x98A7, 0xC0A8, 0x98A8, 0xC0A9, 0x98A9, 0xC0AA, 0x98AA, 0xC0AB, 0x98AB, 0xC0AE, 0x98AC, 0xC0B1, 0x98AD, 0xC0B2, 0x98AE, 0xC0B7, + 0x98AF, 0xC0B8, 0x98B0, 0xC0B9, 0x98B1, 0xC0BA, 0x98B2, 0xC0BB, 0x98B3, 0xC0BE, 0x98B4, 0xC0C2, 0x98B5, 0xC0C3, 0x98B6, 0xC0C4, + 0x98B7, 0xC0C6, 0x98B8, 0xC0C7, 0x98B9, 0xC0CA, 0x98BA, 0xC0CB, 0x98BB, 0xC0CD, 0x98BC, 0xC0CE, 0x98BD, 0xC0CF, 0x98BE, 0xC0D1, + 0x98BF, 0xC0D2, 0x98C0, 0xC0D3, 0x98C1, 0xC0D4, 0x98C2, 0xC0D5, 0x98C3, 0xC0D6, 0x98C4, 0xC0D7, 0x98C5, 0xC0DA, 0x98C6, 0xC0DE, + 0x98C7, 0xC0DF, 0x98C8, 0xC0E0, 0x98C9, 0xC0E1, 0x98CA, 0xC0E2, 0x98CB, 0xC0E3, 0x98CC, 0xC0E6, 0x98CD, 0xC0E7, 0x98CE, 0xC0E9, + 0x98CF, 0xC0EA, 0x98D0, 0xC0EB, 0x98D1, 0xC0ED, 0x98D2, 0xC0EE, 0x98D3, 0xC0EF, 0x98D4, 0xC0F0, 0x98D5, 0xC0F1, 0x98D6, 0xC0F2, + 0x98D7, 0xC0F3, 0x98D8, 0xC0F6, 0x98D9, 0xC0F8, 0x98DA, 0xC0FA, 0x98DB, 0xC0FB, 0x98DC, 0xC0FC, 0x98DD, 0xC0FD, 0x98DE, 0xC0FE, + 0x98DF, 0xC0FF, 0x98E0, 0xC101, 0x98E1, 0xC102, 0x98E2, 0xC103, 0x98E3, 0xC105, 0x98E4, 0xC106, 0x98E5, 0xC107, 0x98E6, 0xC109, + 0x98E7, 0xC10A, 0x98E8, 0xC10B, 0x98E9, 0xC10C, 0x98EA, 0xC10D, 0x98EB, 0xC10E, 0x98EC, 0xC10F, 0x98ED, 0xC111, 0x98EE, 0xC112, + 0x98EF, 0xC113, 0x98F0, 0xC114, 0x98F1, 0xC116, 0x98F2, 0xC117, 0x98F3, 0xC118, 0x98F4, 0xC119, 0x98F5, 0xC11A, 0x98F6, 0xC11B, + 0x98F7, 0xC121, 0x98F8, 0xC122, 0x98F9, 0xC125, 0x98FA, 0xC128, 0x98FB, 0xC129, 0x98FC, 0xC12A, 0x98FD, 0xC12B, 0x98FE, 0xC12E, + 0x9941, 0xC132, 0x9942, 0xC133, 0x9943, 0xC134, 0x9944, 0xC135, 0x9945, 0xC137, 0x9946, 0xC13A, 0x9947, 0xC13B, 0x9948, 0xC13D, + 0x9949, 0xC13E, 0x994A, 0xC13F, 0x994B, 0xC141, 0x994C, 0xC142, 0x994D, 0xC143, 0x994E, 0xC144, 0x994F, 0xC145, 0x9950, 0xC146, + 0x9951, 0xC147, 0x9952, 0xC14A, 0x9953, 0xC14E, 0x9954, 0xC14F, 0x9955, 0xC150, 0x9956, 0xC151, 0x9957, 0xC152, 0x9958, 0xC153, + 0x9959, 0xC156, 0x995A, 0xC157, 0x9961, 0xC159, 0x9962, 0xC15A, 0x9963, 0xC15B, 0x9964, 0xC15D, 0x9965, 0xC15E, 0x9966, 0xC15F, + 0x9967, 0xC160, 0x9968, 0xC161, 0x9969, 0xC162, 0x996A, 0xC163, 0x996B, 0xC166, 0x996C, 0xC16A, 0x996D, 0xC16B, 0x996E, 0xC16C, + 0x996F, 0xC16D, 0x9970, 0xC16E, 0x9971, 0xC16F, 0x9972, 0xC171, 0x9973, 0xC172, 0x9974, 0xC173, 0x9975, 0xC175, 0x9976, 0xC176, + 0x9977, 0xC177, 0x9978, 0xC179, 0x9979, 0xC17A, 0x997A, 0xC17B, 0x9981, 0xC17C, 0x9982, 0xC17D, 0x9983, 0xC17E, 0x9984, 0xC17F, + 0x9985, 0xC180, 0x9986, 0xC181, 0x9987, 0xC182, 0x9988, 0xC183, 0x9989, 0xC184, 0x998A, 0xC186, 0x998B, 0xC187, 0x998C, 0xC188, + 0x998D, 0xC189, 0x998E, 0xC18A, 0x998F, 0xC18B, 0x9990, 0xC18F, 0x9991, 0xC191, 0x9992, 0xC192, 0x9993, 0xC193, 0x9994, 0xC195, + 0x9995, 0xC197, 0x9996, 0xC198, 0x9997, 0xC199, 0x9998, 0xC19A, 0x9999, 0xC19B, 0x999A, 0xC19E, 0x999B, 0xC1A0, 0x999C, 0xC1A2, + 0x999D, 0xC1A3, 0x999E, 0xC1A4, 0x999F, 0xC1A6, 0x99A0, 0xC1A7, 0x99A1, 0xC1AA, 0x99A2, 0xC1AB, 0x99A3, 0xC1AD, 0x99A4, 0xC1AE, + 0x99A5, 0xC1AF, 0x99A6, 0xC1B1, 0x99A7, 0xC1B2, 0x99A8, 0xC1B3, 0x99A9, 0xC1B4, 0x99AA, 0xC1B5, 0x99AB, 0xC1B6, 0x99AC, 0xC1B7, + 0x99AD, 0xC1B8, 0x99AE, 0xC1B9, 0x99AF, 0xC1BA, 0x99B0, 0xC1BB, 0x99B1, 0xC1BC, 0x99B2, 0xC1BE, 0x99B3, 0xC1BF, 0x99B4, 0xC1C0, + 0x99B5, 0xC1C1, 0x99B6, 0xC1C2, 0x99B7, 0xC1C3, 0x99B8, 0xC1C5, 0x99B9, 0xC1C6, 0x99BA, 0xC1C7, 0x99BB, 0xC1C9, 0x99BC, 0xC1CA, + 0x99BD, 0xC1CB, 0x99BE, 0xC1CD, 0x99BF, 0xC1CE, 0x99C0, 0xC1CF, 0x99C1, 0xC1D0, 0x99C2, 0xC1D1, 0x99C3, 0xC1D2, 0x99C4, 0xC1D3, + 0x99C5, 0xC1D5, 0x99C6, 0xC1D6, 0x99C7, 0xC1D9, 0x99C8, 0xC1DA, 0x99C9, 0xC1DB, 0x99CA, 0xC1DC, 0x99CB, 0xC1DD, 0x99CC, 0xC1DE, + 0x99CD, 0xC1DF, 0x99CE, 0xC1E1, 0x99CF, 0xC1E2, 0x99D0, 0xC1E3, 0x99D1, 0xC1E5, 0x99D2, 0xC1E6, 0x99D3, 0xC1E7, 0x99D4, 0xC1E9, + 0x99D5, 0xC1EA, 0x99D6, 0xC1EB, 0x99D7, 0xC1EC, 0x99D8, 0xC1ED, 0x99D9, 0xC1EE, 0x99DA, 0xC1EF, 0x99DB, 0xC1F2, 0x99DC, 0xC1F4, + 0x99DD, 0xC1F5, 0x99DE, 0xC1F6, 0x99DF, 0xC1F7, 0x99E0, 0xC1F8, 0x99E1, 0xC1F9, 0x99E2, 0xC1FA, 0x99E3, 0xC1FB, 0x99E4, 0xC1FE, + 0x99E5, 0xC1FF, 0x99E6, 0xC201, 0x99E7, 0xC202, 0x99E8, 0xC203, 0x99E9, 0xC205, 0x99EA, 0xC206, 0x99EB, 0xC207, 0x99EC, 0xC208, + 0x99ED, 0xC209, 0x99EE, 0xC20A, 0x99EF, 0xC20B, 0x99F0, 0xC20E, 0x99F1, 0xC210, 0x99F2, 0xC212, 0x99F3, 0xC213, 0x99F4, 0xC214, + 0x99F5, 0xC215, 0x99F6, 0xC216, 0x99F7, 0xC217, 0x99F8, 0xC21A, 0x99F9, 0xC21B, 0x99FA, 0xC21D, 0x99FB, 0xC21E, 0x99FC, 0xC221, + 0x99FD, 0xC222, 0x99FE, 0xC223, 0x9A41, 0xC224, 0x9A42, 0xC225, 0x9A43, 0xC226, 0x9A44, 0xC227, 0x9A45, 0xC22A, 0x9A46, 0xC22C, + 0x9A47, 0xC22E, 0x9A48, 0xC230, 0x9A49, 0xC233, 0x9A4A, 0xC235, 0x9A4B, 0xC236, 0x9A4C, 0xC237, 0x9A4D, 0xC238, 0x9A4E, 0xC239, + 0x9A4F, 0xC23A, 0x9A50, 0xC23B, 0x9A51, 0xC23C, 0x9A52, 0xC23D, 0x9A53, 0xC23E, 0x9A54, 0xC23F, 0x9A55, 0xC240, 0x9A56, 0xC241, + 0x9A57, 0xC242, 0x9A58, 0xC243, 0x9A59, 0xC244, 0x9A5A, 0xC245, 0x9A61, 0xC246, 0x9A62, 0xC247, 0x9A63, 0xC249, 0x9A64, 0xC24A, + 0x9A65, 0xC24B, 0x9A66, 0xC24C, 0x9A67, 0xC24D, 0x9A68, 0xC24E, 0x9A69, 0xC24F, 0x9A6A, 0xC252, 0x9A6B, 0xC253, 0x9A6C, 0xC255, + 0x9A6D, 0xC256, 0x9A6E, 0xC257, 0x9A6F, 0xC259, 0x9A70, 0xC25A, 0x9A71, 0xC25B, 0x9A72, 0xC25C, 0x9A73, 0xC25D, 0x9A74, 0xC25E, + 0x9A75, 0xC25F, 0x9A76, 0xC261, 0x9A77, 0xC262, 0x9A78, 0xC263, 0x9A79, 0xC264, 0x9A7A, 0xC266, 0x9A81, 0xC267, 0x9A82, 0xC268, + 0x9A83, 0xC269, 0x9A84, 0xC26A, 0x9A85, 0xC26B, 0x9A86, 0xC26E, 0x9A87, 0xC26F, 0x9A88, 0xC271, 0x9A89, 0xC272, 0x9A8A, 0xC273, + 0x9A8B, 0xC275, 0x9A8C, 0xC276, 0x9A8D, 0xC277, 0x9A8E, 0xC278, 0x9A8F, 0xC279, 0x9A90, 0xC27A, 0x9A91, 0xC27B, 0x9A92, 0xC27E, + 0x9A93, 0xC280, 0x9A94, 0xC282, 0x9A95, 0xC283, 0x9A96, 0xC284, 0x9A97, 0xC285, 0x9A98, 0xC286, 0x9A99, 0xC287, 0x9A9A, 0xC28A, + 0x9A9B, 0xC28B, 0x9A9C, 0xC28C, 0x9A9D, 0xC28D, 0x9A9E, 0xC28E, 0x9A9F, 0xC28F, 0x9AA0, 0xC291, 0x9AA1, 0xC292, 0x9AA2, 0xC293, + 0x9AA3, 0xC294, 0x9AA4, 0xC295, 0x9AA5, 0xC296, 0x9AA6, 0xC297, 0x9AA7, 0xC299, 0x9AA8, 0xC29A, 0x9AA9, 0xC29C, 0x9AAA, 0xC29E, + 0x9AAB, 0xC29F, 0x9AAC, 0xC2A0, 0x9AAD, 0xC2A1, 0x9AAE, 0xC2A2, 0x9AAF, 0xC2A3, 0x9AB0, 0xC2A6, 0x9AB1, 0xC2A7, 0x9AB2, 0xC2A9, + 0x9AB3, 0xC2AA, 0x9AB4, 0xC2AB, 0x9AB5, 0xC2AE, 0x9AB6, 0xC2AF, 0x9AB7, 0xC2B0, 0x9AB8, 0xC2B1, 0x9AB9, 0xC2B2, 0x9ABA, 0xC2B3, + 0x9ABB, 0xC2B6, 0x9ABC, 0xC2B8, 0x9ABD, 0xC2BA, 0x9ABE, 0xC2BB, 0x9ABF, 0xC2BC, 0x9AC0, 0xC2BD, 0x9AC1, 0xC2BE, 0x9AC2, 0xC2BF, + 0x9AC3, 0xC2C0, 0x9AC4, 0xC2C1, 0x9AC5, 0xC2C2, 0x9AC6, 0xC2C3, 0x9AC7, 0xC2C4, 0x9AC8, 0xC2C5, 0x9AC9, 0xC2C6, 0x9ACA, 0xC2C7, + 0x9ACB, 0xC2C8, 0x9ACC, 0xC2C9, 0x9ACD, 0xC2CA, 0x9ACE, 0xC2CB, 0x9ACF, 0xC2CC, 0x9AD0, 0xC2CD, 0x9AD1, 0xC2CE, 0x9AD2, 0xC2CF, + 0x9AD3, 0xC2D0, 0x9AD4, 0xC2D1, 0x9AD5, 0xC2D2, 0x9AD6, 0xC2D3, 0x9AD7, 0xC2D4, 0x9AD8, 0xC2D5, 0x9AD9, 0xC2D6, 0x9ADA, 0xC2D7, + 0x9ADB, 0xC2D8, 0x9ADC, 0xC2D9, 0x9ADD, 0xC2DA, 0x9ADE, 0xC2DB, 0x9ADF, 0xC2DE, 0x9AE0, 0xC2DF, 0x9AE1, 0xC2E1, 0x9AE2, 0xC2E2, + 0x9AE3, 0xC2E5, 0x9AE4, 0xC2E6, 0x9AE5, 0xC2E7, 0x9AE6, 0xC2E8, 0x9AE7, 0xC2E9, 0x9AE8, 0xC2EA, 0x9AE9, 0xC2EE, 0x9AEA, 0xC2F0, + 0x9AEB, 0xC2F2, 0x9AEC, 0xC2F3, 0x9AED, 0xC2F4, 0x9AEE, 0xC2F5, 0x9AEF, 0xC2F7, 0x9AF0, 0xC2FA, 0x9AF1, 0xC2FD, 0x9AF2, 0xC2FE, + 0x9AF3, 0xC2FF, 0x9AF4, 0xC301, 0x9AF5, 0xC302, 0x9AF6, 0xC303, 0x9AF7, 0xC304, 0x9AF8, 0xC305, 0x9AF9, 0xC306, 0x9AFA, 0xC307, + 0x9AFB, 0xC30A, 0x9AFC, 0xC30B, 0x9AFD, 0xC30E, 0x9AFE, 0xC30F, 0x9B41, 0xC310, 0x9B42, 0xC311, 0x9B43, 0xC312, 0x9B44, 0xC316, + 0x9B45, 0xC317, 0x9B46, 0xC319, 0x9B47, 0xC31A, 0x9B48, 0xC31B, 0x9B49, 0xC31D, 0x9B4A, 0xC31E, 0x9B4B, 0xC31F, 0x9B4C, 0xC320, + 0x9B4D, 0xC321, 0x9B4E, 0xC322, 0x9B4F, 0xC323, 0x9B50, 0xC326, 0x9B51, 0xC327, 0x9B52, 0xC32A, 0x9B53, 0xC32B, 0x9B54, 0xC32C, + 0x9B55, 0xC32D, 0x9B56, 0xC32E, 0x9B57, 0xC32F, 0x9B58, 0xC330, 0x9B59, 0xC331, 0x9B5A, 0xC332, 0x9B61, 0xC333, 0x9B62, 0xC334, + 0x9B63, 0xC335, 0x9B64, 0xC336, 0x9B65, 0xC337, 0x9B66, 0xC338, 0x9B67, 0xC339, 0x9B68, 0xC33A, 0x9B69, 0xC33B, 0x9B6A, 0xC33C, + 0x9B6B, 0xC33D, 0x9B6C, 0xC33E, 0x9B6D, 0xC33F, 0x9B6E, 0xC340, 0x9B6F, 0xC341, 0x9B70, 0xC342, 0x9B71, 0xC343, 0x9B72, 0xC344, + 0x9B73, 0xC346, 0x9B74, 0xC347, 0x9B75, 0xC348, 0x9B76, 0xC349, 0x9B77, 0xC34A, 0x9B78, 0xC34B, 0x9B79, 0xC34C, 0x9B7A, 0xC34D, + 0x9B81, 0xC34E, 0x9B82, 0xC34F, 0x9B83, 0xC350, 0x9B84, 0xC351, 0x9B85, 0xC352, 0x9B86, 0xC353, 0x9B87, 0xC354, 0x9B88, 0xC355, + 0x9B89, 0xC356, 0x9B8A, 0xC357, 0x9B8B, 0xC358, 0x9B8C, 0xC359, 0x9B8D, 0xC35A, 0x9B8E, 0xC35B, 0x9B8F, 0xC35C, 0x9B90, 0xC35D, + 0x9B91, 0xC35E, 0x9B92, 0xC35F, 0x9B93, 0xC360, 0x9B94, 0xC361, 0x9B95, 0xC362, 0x9B96, 0xC363, 0x9B97, 0xC364, 0x9B98, 0xC365, + 0x9B99, 0xC366, 0x9B9A, 0xC367, 0x9B9B, 0xC36A, 0x9B9C, 0xC36B, 0x9B9D, 0xC36D, 0x9B9E, 0xC36E, 0x9B9F, 0xC36F, 0x9BA0, 0xC371, + 0x9BA1, 0xC373, 0x9BA2, 0xC374, 0x9BA3, 0xC375, 0x9BA4, 0xC376, 0x9BA5, 0xC377, 0x9BA6, 0xC37A, 0x9BA7, 0xC37B, 0x9BA8, 0xC37E, + 0x9BA9, 0xC37F, 0x9BAA, 0xC380, 0x9BAB, 0xC381, 0x9BAC, 0xC382, 0x9BAD, 0xC383, 0x9BAE, 0xC385, 0x9BAF, 0xC386, 0x9BB0, 0xC387, + 0x9BB1, 0xC389, 0x9BB2, 0xC38A, 0x9BB3, 0xC38B, 0x9BB4, 0xC38D, 0x9BB5, 0xC38E, 0x9BB6, 0xC38F, 0x9BB7, 0xC390, 0x9BB8, 0xC391, + 0x9BB9, 0xC392, 0x9BBA, 0xC393, 0x9BBB, 0xC394, 0x9BBC, 0xC395, 0x9BBD, 0xC396, 0x9BBE, 0xC397, 0x9BBF, 0xC398, 0x9BC0, 0xC399, + 0x9BC1, 0xC39A, 0x9BC2, 0xC39B, 0x9BC3, 0xC39C, 0x9BC4, 0xC39D, 0x9BC5, 0xC39E, 0x9BC6, 0xC39F, 0x9BC7, 0xC3A0, 0x9BC8, 0xC3A1, + 0x9BC9, 0xC3A2, 0x9BCA, 0xC3A3, 0x9BCB, 0xC3A4, 0x9BCC, 0xC3A5, 0x9BCD, 0xC3A6, 0x9BCE, 0xC3A7, 0x9BCF, 0xC3A8, 0x9BD0, 0xC3A9, + 0x9BD1, 0xC3AA, 0x9BD2, 0xC3AB, 0x9BD3, 0xC3AC, 0x9BD4, 0xC3AD, 0x9BD5, 0xC3AE, 0x9BD6, 0xC3AF, 0x9BD7, 0xC3B0, 0x9BD8, 0xC3B1, + 0x9BD9, 0xC3B2, 0x9BDA, 0xC3B3, 0x9BDB, 0xC3B4, 0x9BDC, 0xC3B5, 0x9BDD, 0xC3B6, 0x9BDE, 0xC3B7, 0x9BDF, 0xC3B8, 0x9BE0, 0xC3B9, + 0x9BE1, 0xC3BA, 0x9BE2, 0xC3BB, 0x9BE3, 0xC3BC, 0x9BE4, 0xC3BD, 0x9BE5, 0xC3BE, 0x9BE6, 0xC3BF, 0x9BE7, 0xC3C1, 0x9BE8, 0xC3C2, + 0x9BE9, 0xC3C3, 0x9BEA, 0xC3C4, 0x9BEB, 0xC3C5, 0x9BEC, 0xC3C6, 0x9BED, 0xC3C7, 0x9BEE, 0xC3C8, 0x9BEF, 0xC3C9, 0x9BF0, 0xC3CA, + 0x9BF1, 0xC3CB, 0x9BF2, 0xC3CC, 0x9BF3, 0xC3CD, 0x9BF4, 0xC3CE, 0x9BF5, 0xC3CF, 0x9BF6, 0xC3D0, 0x9BF7, 0xC3D1, 0x9BF8, 0xC3D2, + 0x9BF9, 0xC3D3, 0x9BFA, 0xC3D4, 0x9BFB, 0xC3D5, 0x9BFC, 0xC3D6, 0x9BFD, 0xC3D7, 0x9BFE, 0xC3DA, 0x9C41, 0xC3DB, 0x9C42, 0xC3DD, + 0x9C43, 0xC3DE, 0x9C44, 0xC3E1, 0x9C45, 0xC3E3, 0x9C46, 0xC3E4, 0x9C47, 0xC3E5, 0x9C48, 0xC3E6, 0x9C49, 0xC3E7, 0x9C4A, 0xC3EA, + 0x9C4B, 0xC3EB, 0x9C4C, 0xC3EC, 0x9C4D, 0xC3EE, 0x9C4E, 0xC3EF, 0x9C4F, 0xC3F0, 0x9C50, 0xC3F1, 0x9C51, 0xC3F2, 0x9C52, 0xC3F3, + 0x9C53, 0xC3F6, 0x9C54, 0xC3F7, 0x9C55, 0xC3F9, 0x9C56, 0xC3FA, 0x9C57, 0xC3FB, 0x9C58, 0xC3FC, 0x9C59, 0xC3FD, 0x9C5A, 0xC3FE, + 0x9C61, 0xC3FF, 0x9C62, 0xC400, 0x9C63, 0xC401, 0x9C64, 0xC402, 0x9C65, 0xC403, 0x9C66, 0xC404, 0x9C67, 0xC405, 0x9C68, 0xC406, + 0x9C69, 0xC407, 0x9C6A, 0xC409, 0x9C6B, 0xC40A, 0x9C6C, 0xC40B, 0x9C6D, 0xC40C, 0x9C6E, 0xC40D, 0x9C6F, 0xC40E, 0x9C70, 0xC40F, + 0x9C71, 0xC411, 0x9C72, 0xC412, 0x9C73, 0xC413, 0x9C74, 0xC414, 0x9C75, 0xC415, 0x9C76, 0xC416, 0x9C77, 0xC417, 0x9C78, 0xC418, + 0x9C79, 0xC419, 0x9C7A, 0xC41A, 0x9C81, 0xC41B, 0x9C82, 0xC41C, 0x9C83, 0xC41D, 0x9C84, 0xC41E, 0x9C85, 0xC41F, 0x9C86, 0xC420, + 0x9C87, 0xC421, 0x9C88, 0xC422, 0x9C89, 0xC423, 0x9C8A, 0xC425, 0x9C8B, 0xC426, 0x9C8C, 0xC427, 0x9C8D, 0xC428, 0x9C8E, 0xC429, + 0x9C8F, 0xC42A, 0x9C90, 0xC42B, 0x9C91, 0xC42D, 0x9C92, 0xC42E, 0x9C93, 0xC42F, 0x9C94, 0xC431, 0x9C95, 0xC432, 0x9C96, 0xC433, + 0x9C97, 0xC435, 0x9C98, 0xC436, 0x9C99, 0xC437, 0x9C9A, 0xC438, 0x9C9B, 0xC439, 0x9C9C, 0xC43A, 0x9C9D, 0xC43B, 0x9C9E, 0xC43E, + 0x9C9F, 0xC43F, 0x9CA0, 0xC440, 0x9CA1, 0xC441, 0x9CA2, 0xC442, 0x9CA3, 0xC443, 0x9CA4, 0xC444, 0x9CA5, 0xC445, 0x9CA6, 0xC446, + 0x9CA7, 0xC447, 0x9CA8, 0xC449, 0x9CA9, 0xC44A, 0x9CAA, 0xC44B, 0x9CAB, 0xC44C, 0x9CAC, 0xC44D, 0x9CAD, 0xC44E, 0x9CAE, 0xC44F, + 0x9CAF, 0xC450, 0x9CB0, 0xC451, 0x9CB1, 0xC452, 0x9CB2, 0xC453, 0x9CB3, 0xC454, 0x9CB4, 0xC455, 0x9CB5, 0xC456, 0x9CB6, 0xC457, + 0x9CB7, 0xC458, 0x9CB8, 0xC459, 0x9CB9, 0xC45A, 0x9CBA, 0xC45B, 0x9CBB, 0xC45C, 0x9CBC, 0xC45D, 0x9CBD, 0xC45E, 0x9CBE, 0xC45F, + 0x9CBF, 0xC460, 0x9CC0, 0xC461, 0x9CC1, 0xC462, 0x9CC2, 0xC463, 0x9CC3, 0xC466, 0x9CC4, 0xC467, 0x9CC5, 0xC469, 0x9CC6, 0xC46A, + 0x9CC7, 0xC46B, 0x9CC8, 0xC46D, 0x9CC9, 0xC46E, 0x9CCA, 0xC46F, 0x9CCB, 0xC470, 0x9CCC, 0xC471, 0x9CCD, 0xC472, 0x9CCE, 0xC473, + 0x9CCF, 0xC476, 0x9CD0, 0xC477, 0x9CD1, 0xC478, 0x9CD2, 0xC47A, 0x9CD3, 0xC47B, 0x9CD4, 0xC47C, 0x9CD5, 0xC47D, 0x9CD6, 0xC47E, + 0x9CD7, 0xC47F, 0x9CD8, 0xC481, 0x9CD9, 0xC482, 0x9CDA, 0xC483, 0x9CDB, 0xC484, 0x9CDC, 0xC485, 0x9CDD, 0xC486, 0x9CDE, 0xC487, + 0x9CDF, 0xC488, 0x9CE0, 0xC489, 0x9CE1, 0xC48A, 0x9CE2, 0xC48B, 0x9CE3, 0xC48C, 0x9CE4, 0xC48D, 0x9CE5, 0xC48E, 0x9CE6, 0xC48F, + 0x9CE7, 0xC490, 0x9CE8, 0xC491, 0x9CE9, 0xC492, 0x9CEA, 0xC493, 0x9CEB, 0xC495, 0x9CEC, 0xC496, 0x9CED, 0xC497, 0x9CEE, 0xC498, + 0x9CEF, 0xC499, 0x9CF0, 0xC49A, 0x9CF1, 0xC49B, 0x9CF2, 0xC49D, 0x9CF3, 0xC49E, 0x9CF4, 0xC49F, 0x9CF5, 0xC4A0, 0x9CF6, 0xC4A1, + 0x9CF7, 0xC4A2, 0x9CF8, 0xC4A3, 0x9CF9, 0xC4A4, 0x9CFA, 0xC4A5, 0x9CFB, 0xC4A6, 0x9CFC, 0xC4A7, 0x9CFD, 0xC4A8, 0x9CFE, 0xC4A9, + 0x9D41, 0xC4AA, 0x9D42, 0xC4AB, 0x9D43, 0xC4AC, 0x9D44, 0xC4AD, 0x9D45, 0xC4AE, 0x9D46, 0xC4AF, 0x9D47, 0xC4B0, 0x9D48, 0xC4B1, + 0x9D49, 0xC4B2, 0x9D4A, 0xC4B3, 0x9D4B, 0xC4B4, 0x9D4C, 0xC4B5, 0x9D4D, 0xC4B6, 0x9D4E, 0xC4B7, 0x9D4F, 0xC4B9, 0x9D50, 0xC4BA, + 0x9D51, 0xC4BB, 0x9D52, 0xC4BD, 0x9D53, 0xC4BE, 0x9D54, 0xC4BF, 0x9D55, 0xC4C0, 0x9D56, 0xC4C1, 0x9D57, 0xC4C2, 0x9D58, 0xC4C3, + 0x9D59, 0xC4C4, 0x9D5A, 0xC4C5, 0x9D61, 0xC4C6, 0x9D62, 0xC4C7, 0x9D63, 0xC4C8, 0x9D64, 0xC4C9, 0x9D65, 0xC4CA, 0x9D66, 0xC4CB, + 0x9D67, 0xC4CC, 0x9D68, 0xC4CD, 0x9D69, 0xC4CE, 0x9D6A, 0xC4CF, 0x9D6B, 0xC4D0, 0x9D6C, 0xC4D1, 0x9D6D, 0xC4D2, 0x9D6E, 0xC4D3, + 0x9D6F, 0xC4D4, 0x9D70, 0xC4D5, 0x9D71, 0xC4D6, 0x9D72, 0xC4D7, 0x9D73, 0xC4D8, 0x9D74, 0xC4D9, 0x9D75, 0xC4DA, 0x9D76, 0xC4DB, + 0x9D77, 0xC4DC, 0x9D78, 0xC4DD, 0x9D79, 0xC4DE, 0x9D7A, 0xC4DF, 0x9D81, 0xC4E0, 0x9D82, 0xC4E1, 0x9D83, 0xC4E2, 0x9D84, 0xC4E3, + 0x9D85, 0xC4E4, 0x9D86, 0xC4E5, 0x9D87, 0xC4E6, 0x9D88, 0xC4E7, 0x9D89, 0xC4E8, 0x9D8A, 0xC4EA, 0x9D8B, 0xC4EB, 0x9D8C, 0xC4EC, + 0x9D8D, 0xC4ED, 0x9D8E, 0xC4EE, 0x9D8F, 0xC4EF, 0x9D90, 0xC4F2, 0x9D91, 0xC4F3, 0x9D92, 0xC4F5, 0x9D93, 0xC4F6, 0x9D94, 0xC4F7, + 0x9D95, 0xC4F9, 0x9D96, 0xC4FB, 0x9D97, 0xC4FC, 0x9D98, 0xC4FD, 0x9D99, 0xC4FE, 0x9D9A, 0xC502, 0x9D9B, 0xC503, 0x9D9C, 0xC504, + 0x9D9D, 0xC505, 0x9D9E, 0xC506, 0x9D9F, 0xC507, 0x9DA0, 0xC508, 0x9DA1, 0xC509, 0x9DA2, 0xC50A, 0x9DA3, 0xC50B, 0x9DA4, 0xC50D, + 0x9DA5, 0xC50E, 0x9DA6, 0xC50F, 0x9DA7, 0xC511, 0x9DA8, 0xC512, 0x9DA9, 0xC513, 0x9DAA, 0xC515, 0x9DAB, 0xC516, 0x9DAC, 0xC517, + 0x9DAD, 0xC518, 0x9DAE, 0xC519, 0x9DAF, 0xC51A, 0x9DB0, 0xC51B, 0x9DB1, 0xC51D, 0x9DB2, 0xC51E, 0x9DB3, 0xC51F, 0x9DB4, 0xC520, + 0x9DB5, 0xC521, 0x9DB6, 0xC522, 0x9DB7, 0xC523, 0x9DB8, 0xC524, 0x9DB9, 0xC525, 0x9DBA, 0xC526, 0x9DBB, 0xC527, 0x9DBC, 0xC52A, + 0x9DBD, 0xC52B, 0x9DBE, 0xC52D, 0x9DBF, 0xC52E, 0x9DC0, 0xC52F, 0x9DC1, 0xC531, 0x9DC2, 0xC532, 0x9DC3, 0xC533, 0x9DC4, 0xC534, + 0x9DC5, 0xC535, 0x9DC6, 0xC536, 0x9DC7, 0xC537, 0x9DC8, 0xC53A, 0x9DC9, 0xC53C, 0x9DCA, 0xC53E, 0x9DCB, 0xC53F, 0x9DCC, 0xC540, + 0x9DCD, 0xC541, 0x9DCE, 0xC542, 0x9DCF, 0xC543, 0x9DD0, 0xC546, 0x9DD1, 0xC547, 0x9DD2, 0xC54B, 0x9DD3, 0xC54F, 0x9DD4, 0xC550, + 0x9DD5, 0xC551, 0x9DD6, 0xC552, 0x9DD7, 0xC556, 0x9DD8, 0xC55A, 0x9DD9, 0xC55B, 0x9DDA, 0xC55C, 0x9DDB, 0xC55F, 0x9DDC, 0xC562, + 0x9DDD, 0xC563, 0x9DDE, 0xC565, 0x9DDF, 0xC566, 0x9DE0, 0xC567, 0x9DE1, 0xC569, 0x9DE2, 0xC56A, 0x9DE3, 0xC56B, 0x9DE4, 0xC56C, + 0x9DE5, 0xC56D, 0x9DE6, 0xC56E, 0x9DE7, 0xC56F, 0x9DE8, 0xC572, 0x9DE9, 0xC576, 0x9DEA, 0xC577, 0x9DEB, 0xC578, 0x9DEC, 0xC579, + 0x9DED, 0xC57A, 0x9DEE, 0xC57B, 0x9DEF, 0xC57E, 0x9DF0, 0xC57F, 0x9DF1, 0xC581, 0x9DF2, 0xC582, 0x9DF3, 0xC583, 0x9DF4, 0xC585, + 0x9DF5, 0xC586, 0x9DF6, 0xC588, 0x9DF7, 0xC589, 0x9DF8, 0xC58A, 0x9DF9, 0xC58B, 0x9DFA, 0xC58E, 0x9DFB, 0xC590, 0x9DFC, 0xC592, + 0x9DFD, 0xC593, 0x9DFE, 0xC594, 0x9E41, 0xC596, 0x9E42, 0xC599, 0x9E43, 0xC59A, 0x9E44, 0xC59B, 0x9E45, 0xC59D, 0x9E46, 0xC59E, + 0x9E47, 0xC59F, 0x9E48, 0xC5A1, 0x9E49, 0xC5A2, 0x9E4A, 0xC5A3, 0x9E4B, 0xC5A4, 0x9E4C, 0xC5A5, 0x9E4D, 0xC5A6, 0x9E4E, 0xC5A7, + 0x9E4F, 0xC5A8, 0x9E50, 0xC5AA, 0x9E51, 0xC5AB, 0x9E52, 0xC5AC, 0x9E53, 0xC5AD, 0x9E54, 0xC5AE, 0x9E55, 0xC5AF, 0x9E56, 0xC5B0, + 0x9E57, 0xC5B1, 0x9E58, 0xC5B2, 0x9E59, 0xC5B3, 0x9E5A, 0xC5B6, 0x9E61, 0xC5B7, 0x9E62, 0xC5BA, 0x9E63, 0xC5BF, 0x9E64, 0xC5C0, + 0x9E65, 0xC5C1, 0x9E66, 0xC5C2, 0x9E67, 0xC5C3, 0x9E68, 0xC5CB, 0x9E69, 0xC5CD, 0x9E6A, 0xC5CF, 0x9E6B, 0xC5D2, 0x9E6C, 0xC5D3, + 0x9E6D, 0xC5D5, 0x9E6E, 0xC5D6, 0x9E6F, 0xC5D7, 0x9E70, 0xC5D9, 0x9E71, 0xC5DA, 0x9E72, 0xC5DB, 0x9E73, 0xC5DC, 0x9E74, 0xC5DD, + 0x9E75, 0xC5DE, 0x9E76, 0xC5DF, 0x9E77, 0xC5E2, 0x9E78, 0xC5E4, 0x9E79, 0xC5E6, 0x9E7A, 0xC5E7, 0x9E81, 0xC5E8, 0x9E82, 0xC5E9, + 0x9E83, 0xC5EA, 0x9E84, 0xC5EB, 0x9E85, 0xC5EF, 0x9E86, 0xC5F1, 0x9E87, 0xC5F2, 0x9E88, 0xC5F3, 0x9E89, 0xC5F5, 0x9E8A, 0xC5F8, + 0x9E8B, 0xC5F9, 0x9E8C, 0xC5FA, 0x9E8D, 0xC5FB, 0x9E8E, 0xC602, 0x9E8F, 0xC603, 0x9E90, 0xC604, 0x9E91, 0xC609, 0x9E92, 0xC60A, + 0x9E93, 0xC60B, 0x9E94, 0xC60D, 0x9E95, 0xC60E, 0x9E96, 0xC60F, 0x9E97, 0xC611, 0x9E98, 0xC612, 0x9E99, 0xC613, 0x9E9A, 0xC614, + 0x9E9B, 0xC615, 0x9E9C, 0xC616, 0x9E9D, 0xC617, 0x9E9E, 0xC61A, 0x9E9F, 0xC61D, 0x9EA0, 0xC61E, 0x9EA1, 0xC61F, 0x9EA2, 0xC620, + 0x9EA3, 0xC621, 0x9EA4, 0xC622, 0x9EA5, 0xC623, 0x9EA6, 0xC626, 0x9EA7, 0xC627, 0x9EA8, 0xC629, 0x9EA9, 0xC62A, 0x9EAA, 0xC62B, + 0x9EAB, 0xC62F, 0x9EAC, 0xC631, 0x9EAD, 0xC632, 0x9EAE, 0xC636, 0x9EAF, 0xC638, 0x9EB0, 0xC63A, 0x9EB1, 0xC63C, 0x9EB2, 0xC63D, + 0x9EB3, 0xC63E, 0x9EB4, 0xC63F, 0x9EB5, 0xC642, 0x9EB6, 0xC643, 0x9EB7, 0xC645, 0x9EB8, 0xC646, 0x9EB9, 0xC647, 0x9EBA, 0xC649, + 0x9EBB, 0xC64A, 0x9EBC, 0xC64B, 0x9EBD, 0xC64C, 0x9EBE, 0xC64D, 0x9EBF, 0xC64E, 0x9EC0, 0xC64F, 0x9EC1, 0xC652, 0x9EC2, 0xC656, + 0x9EC3, 0xC657, 0x9EC4, 0xC658, 0x9EC5, 0xC659, 0x9EC6, 0xC65A, 0x9EC7, 0xC65B, 0x9EC8, 0xC65E, 0x9EC9, 0xC65F, 0x9ECA, 0xC661, + 0x9ECB, 0xC662, 0x9ECC, 0xC663, 0x9ECD, 0xC664, 0x9ECE, 0xC665, 0x9ECF, 0xC666, 0x9ED0, 0xC667, 0x9ED1, 0xC668, 0x9ED2, 0xC669, + 0x9ED3, 0xC66A, 0x9ED4, 0xC66B, 0x9ED5, 0xC66D, 0x9ED6, 0xC66E, 0x9ED7, 0xC670, 0x9ED8, 0xC672, 0x9ED9, 0xC673, 0x9EDA, 0xC674, + 0x9EDB, 0xC675, 0x9EDC, 0xC676, 0x9EDD, 0xC677, 0x9EDE, 0xC67A, 0x9EDF, 0xC67B, 0x9EE0, 0xC67D, 0x9EE1, 0xC67E, 0x9EE2, 0xC67F, + 0x9EE3, 0xC681, 0x9EE4, 0xC682, 0x9EE5, 0xC683, 0x9EE6, 0xC684, 0x9EE7, 0xC685, 0x9EE8, 0xC686, 0x9EE9, 0xC687, 0x9EEA, 0xC68A, + 0x9EEB, 0xC68C, 0x9EEC, 0xC68E, 0x9EED, 0xC68F, 0x9EEE, 0xC690, 0x9EEF, 0xC691, 0x9EF0, 0xC692, 0x9EF1, 0xC693, 0x9EF2, 0xC696, + 0x9EF3, 0xC697, 0x9EF4, 0xC699, 0x9EF5, 0xC69A, 0x9EF6, 0xC69B, 0x9EF7, 0xC69D, 0x9EF8, 0xC69E, 0x9EF9, 0xC69F, 0x9EFA, 0xC6A0, + 0x9EFB, 0xC6A1, 0x9EFC, 0xC6A2, 0x9EFD, 0xC6A3, 0x9EFE, 0xC6A6, 0x9F41, 0xC6A8, 0x9F42, 0xC6AA, 0x9F43, 0xC6AB, 0x9F44, 0xC6AC, + 0x9F45, 0xC6AD, 0x9F46, 0xC6AE, 0x9F47, 0xC6AF, 0x9F48, 0xC6B2, 0x9F49, 0xC6B3, 0x9F4A, 0xC6B5, 0x9F4B, 0xC6B6, 0x9F4C, 0xC6B7, + 0x9F4D, 0xC6BB, 0x9F4E, 0xC6BC, 0x9F4F, 0xC6BD, 0x9F50, 0xC6BE, 0x9F51, 0xC6BF, 0x9F52, 0xC6C2, 0x9F53, 0xC6C4, 0x9F54, 0xC6C6, + 0x9F55, 0xC6C7, 0x9F56, 0xC6C8, 0x9F57, 0xC6C9, 0x9F58, 0xC6CA, 0x9F59, 0xC6CB, 0x9F5A, 0xC6CE, 0x9F61, 0xC6CF, 0x9F62, 0xC6D1, + 0x9F63, 0xC6D2, 0x9F64, 0xC6D3, 0x9F65, 0xC6D5, 0x9F66, 0xC6D6, 0x9F67, 0xC6D7, 0x9F68, 0xC6D8, 0x9F69, 0xC6D9, 0x9F6A, 0xC6DA, + 0x9F6B, 0xC6DB, 0x9F6C, 0xC6DE, 0x9F6D, 0xC6DF, 0x9F6E, 0xC6E2, 0x9F6F, 0xC6E3, 0x9F70, 0xC6E4, 0x9F71, 0xC6E5, 0x9F72, 0xC6E6, + 0x9F73, 0xC6E7, 0x9F74, 0xC6EA, 0x9F75, 0xC6EB, 0x9F76, 0xC6ED, 0x9F77, 0xC6EE, 0x9F78, 0xC6EF, 0x9F79, 0xC6F1, 0x9F7A, 0xC6F2, + 0x9F81, 0xC6F3, 0x9F82, 0xC6F4, 0x9F83, 0xC6F5, 0x9F84, 0xC6F6, 0x9F85, 0xC6F7, 0x9F86, 0xC6FA, 0x9F87, 0xC6FB, 0x9F88, 0xC6FC, + 0x9F89, 0xC6FE, 0x9F8A, 0xC6FF, 0x9F8B, 0xC700, 0x9F8C, 0xC701, 0x9F8D, 0xC702, 0x9F8E, 0xC703, 0x9F8F, 0xC706, 0x9F90, 0xC707, + 0x9F91, 0xC709, 0x9F92, 0xC70A, 0x9F93, 0xC70B, 0x9F94, 0xC70D, 0x9F95, 0xC70E, 0x9F96, 0xC70F, 0x9F97, 0xC710, 0x9F98, 0xC711, + 0x9F99, 0xC712, 0x9F9A, 0xC713, 0x9F9B, 0xC716, 0x9F9C, 0xC718, 0x9F9D, 0xC71A, 0x9F9E, 0xC71B, 0x9F9F, 0xC71C, 0x9FA0, 0xC71D, + 0x9FA1, 0xC71E, 0x9FA2, 0xC71F, 0x9FA3, 0xC722, 0x9FA4, 0xC723, 0x9FA5, 0xC725, 0x9FA6, 0xC726, 0x9FA7, 0xC727, 0x9FA8, 0xC729, + 0x9FA9, 0xC72A, 0x9FAA, 0xC72B, 0x9FAB, 0xC72C, 0x9FAC, 0xC72D, 0x9FAD, 0xC72E, 0x9FAE, 0xC72F, 0x9FAF, 0xC732, 0x9FB0, 0xC734, + 0x9FB1, 0xC736, 0x9FB2, 0xC738, 0x9FB3, 0xC739, 0x9FB4, 0xC73A, 0x9FB5, 0xC73B, 0x9FB6, 0xC73E, 0x9FB7, 0xC73F, 0x9FB8, 0xC741, + 0x9FB9, 0xC742, 0x9FBA, 0xC743, 0x9FBB, 0xC745, 0x9FBC, 0xC746, 0x9FBD, 0xC747, 0x9FBE, 0xC748, 0x9FBF, 0xC749, 0x9FC0, 0xC74B, + 0x9FC1, 0xC74E, 0x9FC2, 0xC750, 0x9FC3, 0xC759, 0x9FC4, 0xC75A, 0x9FC5, 0xC75B, 0x9FC6, 0xC75D, 0x9FC7, 0xC75E, 0x9FC8, 0xC75F, + 0x9FC9, 0xC761, 0x9FCA, 0xC762, 0x9FCB, 0xC763, 0x9FCC, 0xC764, 0x9FCD, 0xC765, 0x9FCE, 0xC766, 0x9FCF, 0xC767, 0x9FD0, 0xC769, + 0x9FD1, 0xC76A, 0x9FD2, 0xC76C, 0x9FD3, 0xC76D, 0x9FD4, 0xC76E, 0x9FD5, 0xC76F, 0x9FD6, 0xC770, 0x9FD7, 0xC771, 0x9FD8, 0xC772, + 0x9FD9, 0xC773, 0x9FDA, 0xC776, 0x9FDB, 0xC777, 0x9FDC, 0xC779, 0x9FDD, 0xC77A, 0x9FDE, 0xC77B, 0x9FDF, 0xC77F, 0x9FE0, 0xC780, + 0x9FE1, 0xC781, 0x9FE2, 0xC782, 0x9FE3, 0xC786, 0x9FE4, 0xC78B, 0x9FE5, 0xC78C, 0x9FE6, 0xC78D, 0x9FE7, 0xC78F, 0x9FE8, 0xC792, + 0x9FE9, 0xC793, 0x9FEA, 0xC795, 0x9FEB, 0xC799, 0x9FEC, 0xC79B, 0x9FED, 0xC79C, 0x9FEE, 0xC79D, 0x9FEF, 0xC79E, 0x9FF0, 0xC79F, + 0x9FF1, 0xC7A2, 0x9FF2, 0xC7A7, 0x9FF3, 0xC7A8, 0x9FF4, 0xC7A9, 0x9FF5, 0xC7AA, 0x9FF6, 0xC7AB, 0x9FF7, 0xC7AE, 0x9FF8, 0xC7AF, + 0x9FF9, 0xC7B1, 0x9FFA, 0xC7B2, 0x9FFB, 0xC7B3, 0x9FFC, 0xC7B5, 0x9FFD, 0xC7B6, 0x9FFE, 0xC7B7, 0xA041, 0xC7B8, 0xA042, 0xC7B9, + 0xA043, 0xC7BA, 0xA044, 0xC7BB, 0xA045, 0xC7BE, 0xA046, 0xC7C2, 0xA047, 0xC7C3, 0xA048, 0xC7C4, 0xA049, 0xC7C5, 0xA04A, 0xC7C6, + 0xA04B, 0xC7C7, 0xA04C, 0xC7CA, 0xA04D, 0xC7CB, 0xA04E, 0xC7CD, 0xA04F, 0xC7CF, 0xA050, 0xC7D1, 0xA051, 0xC7D2, 0xA052, 0xC7D3, + 0xA053, 0xC7D4, 0xA054, 0xC7D5, 0xA055, 0xC7D6, 0xA056, 0xC7D7, 0xA057, 0xC7D9, 0xA058, 0xC7DA, 0xA059, 0xC7DB, 0xA05A, 0xC7DC, + 0xA061, 0xC7DE, 0xA062, 0xC7DF, 0xA063, 0xC7E0, 0xA064, 0xC7E1, 0xA065, 0xC7E2, 0xA066, 0xC7E3, 0xA067, 0xC7E5, 0xA068, 0xC7E6, + 0xA069, 0xC7E7, 0xA06A, 0xC7E9, 0xA06B, 0xC7EA, 0xA06C, 0xC7EB, 0xA06D, 0xC7ED, 0xA06E, 0xC7EE, 0xA06F, 0xC7EF, 0xA070, 0xC7F0, + 0xA071, 0xC7F1, 0xA072, 0xC7F2, 0xA073, 0xC7F3, 0xA074, 0xC7F4, 0xA075, 0xC7F5, 0xA076, 0xC7F6, 0xA077, 0xC7F7, 0xA078, 0xC7F8, + 0xA079, 0xC7F9, 0xA07A, 0xC7FA, 0xA081, 0xC7FB, 0xA082, 0xC7FC, 0xA083, 0xC7FD, 0xA084, 0xC7FE, 0xA085, 0xC7FF, 0xA086, 0xC802, + 0xA087, 0xC803, 0xA088, 0xC805, 0xA089, 0xC806, 0xA08A, 0xC807, 0xA08B, 0xC809, 0xA08C, 0xC80B, 0xA08D, 0xC80C, 0xA08E, 0xC80D, + 0xA08F, 0xC80E, 0xA090, 0xC80F, 0xA091, 0xC812, 0xA092, 0xC814, 0xA093, 0xC817, 0xA094, 0xC818, 0xA095, 0xC819, 0xA096, 0xC81A, + 0xA097, 0xC81B, 0xA098, 0xC81E, 0xA099, 0xC81F, 0xA09A, 0xC821, 0xA09B, 0xC822, 0xA09C, 0xC823, 0xA09D, 0xC825, 0xA09E, 0xC826, + 0xA09F, 0xC827, 0xA0A0, 0xC828, 0xA0A1, 0xC829, 0xA0A2, 0xC82A, 0xA0A3, 0xC82B, 0xA0A4, 0xC82E, 0xA0A5, 0xC830, 0xA0A6, 0xC832, + 0xA0A7, 0xC833, 0xA0A8, 0xC834, 0xA0A9, 0xC835, 0xA0AA, 0xC836, 0xA0AB, 0xC837, 0xA0AC, 0xC839, 0xA0AD, 0xC83A, 0xA0AE, 0xC83B, + 0xA0AF, 0xC83D, 0xA0B0, 0xC83E, 0xA0B1, 0xC83F, 0xA0B2, 0xC841, 0xA0B3, 0xC842, 0xA0B4, 0xC843, 0xA0B5, 0xC844, 0xA0B6, 0xC845, + 0xA0B7, 0xC846, 0xA0B8, 0xC847, 0xA0B9, 0xC84A, 0xA0BA, 0xC84B, 0xA0BB, 0xC84E, 0xA0BC, 0xC84F, 0xA0BD, 0xC850, 0xA0BE, 0xC851, + 0xA0BF, 0xC852, 0xA0C0, 0xC853, 0xA0C1, 0xC855, 0xA0C2, 0xC856, 0xA0C3, 0xC857, 0xA0C4, 0xC858, 0xA0C5, 0xC859, 0xA0C6, 0xC85A, + 0xA0C7, 0xC85B, 0xA0C8, 0xC85C, 0xA0C9, 0xC85D, 0xA0CA, 0xC85E, 0xA0CB, 0xC85F, 0xA0CC, 0xC860, 0xA0CD, 0xC861, 0xA0CE, 0xC862, + 0xA0CF, 0xC863, 0xA0D0, 0xC864, 0xA0D1, 0xC865, 0xA0D2, 0xC866, 0xA0D3, 0xC867, 0xA0D4, 0xC868, 0xA0D5, 0xC869, 0xA0D6, 0xC86A, + 0xA0D7, 0xC86B, 0xA0D8, 0xC86C, 0xA0D9, 0xC86D, 0xA0DA, 0xC86E, 0xA0DB, 0xC86F, 0xA0DC, 0xC872, 0xA0DD, 0xC873, 0xA0DE, 0xC875, + 0xA0DF, 0xC876, 0xA0E0, 0xC877, 0xA0E1, 0xC879, 0xA0E2, 0xC87B, 0xA0E3, 0xC87C, 0xA0E4, 0xC87D, 0xA0E5, 0xC87E, 0xA0E6, 0xC87F, + 0xA0E7, 0xC882, 0xA0E8, 0xC884, 0xA0E9, 0xC888, 0xA0EA, 0xC889, 0xA0EB, 0xC88A, 0xA0EC, 0xC88E, 0xA0ED, 0xC88F, 0xA0EE, 0xC890, + 0xA0EF, 0xC891, 0xA0F0, 0xC892, 0xA0F1, 0xC893, 0xA0F2, 0xC895, 0xA0F3, 0xC896, 0xA0F4, 0xC897, 0xA0F5, 0xC898, 0xA0F6, 0xC899, + 0xA0F7, 0xC89A, 0xA0F8, 0xC89B, 0xA0F9, 0xC89C, 0xA0FA, 0xC89E, 0xA0FB, 0xC8A0, 0xA0FC, 0xC8A2, 0xA0FD, 0xC8A3, 0xA0FE, 0xC8A4, + 0xA141, 0xC8A5, 0xA142, 0xC8A6, 0xA143, 0xC8A7, 0xA144, 0xC8A9, 0xA145, 0xC8AA, 0xA146, 0xC8AB, 0xA147, 0xC8AC, 0xA148, 0xC8AD, + 0xA149, 0xC8AE, 0xA14A, 0xC8AF, 0xA14B, 0xC8B0, 0xA14C, 0xC8B1, 0xA14D, 0xC8B2, 0xA14E, 0xC8B3, 0xA14F, 0xC8B4, 0xA150, 0xC8B5, + 0xA151, 0xC8B6, 0xA152, 0xC8B7, 0xA153, 0xC8B8, 0xA154, 0xC8B9, 0xA155, 0xC8BA, 0xA156, 0xC8BB, 0xA157, 0xC8BE, 0xA158, 0xC8BF, + 0xA159, 0xC8C0, 0xA15A, 0xC8C1, 0xA161, 0xC8C2, 0xA162, 0xC8C3, 0xA163, 0xC8C5, 0xA164, 0xC8C6, 0xA165, 0xC8C7, 0xA166, 0xC8C9, + 0xA167, 0xC8CA, 0xA168, 0xC8CB, 0xA169, 0xC8CD, 0xA16A, 0xC8CE, 0xA16B, 0xC8CF, 0xA16C, 0xC8D0, 0xA16D, 0xC8D1, 0xA16E, 0xC8D2, + 0xA16F, 0xC8D3, 0xA170, 0xC8D6, 0xA171, 0xC8D8, 0xA172, 0xC8DA, 0xA173, 0xC8DB, 0xA174, 0xC8DC, 0xA175, 0xC8DD, 0xA176, 0xC8DE, + 0xA177, 0xC8DF, 0xA178, 0xC8E2, 0xA179, 0xC8E3, 0xA17A, 0xC8E5, 0xA181, 0xC8E6, 0xA182, 0xC8E7, 0xA183, 0xC8E8, 0xA184, 0xC8E9, + 0xA185, 0xC8EA, 0xA186, 0xC8EB, 0xA187, 0xC8EC, 0xA188, 0xC8ED, 0xA189, 0xC8EE, 0xA18A, 0xC8EF, 0xA18B, 0xC8F0, 0xA18C, 0xC8F1, + 0xA18D, 0xC8F2, 0xA18E, 0xC8F3, 0xA18F, 0xC8F4, 0xA190, 0xC8F6, 0xA191, 0xC8F7, 0xA192, 0xC8F8, 0xA193, 0xC8F9, 0xA194, 0xC8FA, + 0xA195, 0xC8FB, 0xA196, 0xC8FE, 0xA197, 0xC8FF, 0xA198, 0xC901, 0xA199, 0xC902, 0xA19A, 0xC903, 0xA19B, 0xC907, 0xA19C, 0xC908, + 0xA19D, 0xC909, 0xA19E, 0xC90A, 0xA19F, 0xC90B, 0xA1A0, 0xC90E, 0xA1A1, 0x3000, 0xA1A2, 0x3001, 0xA1A3, 0x3002, 0xA1A4, 0x00B7, + 0xA1A5, 0x2025, 0xA1A6, 0x2026, 0xA1A7, 0x00A8, 0xA1A8, 0x3003, 0xA1A9, 0x00AD, 0xA1AA, 0x2015, 0xA1AB, 0x2225, 0xA1AC, 0xFF3C, + 0xA1AD, 0x223C, 0xA1AE, 0x2018, 0xA1AF, 0x2019, 0xA1B0, 0x201C, 0xA1B1, 0x201D, 0xA1B2, 0x3014, 0xA1B3, 0x3015, 0xA1B4, 0x3008, + 0xA1B5, 0x3009, 0xA1B6, 0x300A, 0xA1B7, 0x300B, 0xA1B8, 0x300C, 0xA1B9, 0x300D, 0xA1BA, 0x300E, 0xA1BB, 0x300F, 0xA1BC, 0x3010, + 0xA1BD, 0x3011, 0xA1BE, 0x00B1, 0xA1BF, 0x00D7, 0xA1C0, 0x00F7, 0xA1C1, 0x2260, 0xA1C2, 0x2264, 0xA1C3, 0x2265, 0xA1C4, 0x221E, + 0xA1C5, 0x2234, 0xA1C6, 0x00B0, 0xA1C7, 0x2032, 0xA1C8, 0x2033, 0xA1C9, 0x2103, 0xA1CA, 0x212B, 0xA1CB, 0xFFE0, 0xA1CC, 0xFFE1, + 0xA1CD, 0xFFE5, 0xA1CE, 0x2642, 0xA1CF, 0x2640, 0xA1D0, 0x2220, 0xA1D1, 0x22A5, 0xA1D2, 0x2312, 0xA1D3, 0x2202, 0xA1D4, 0x2207, + 0xA1D5, 0x2261, 0xA1D6, 0x2252, 0xA1D7, 0x00A7, 0xA1D8, 0x203B, 0xA1D9, 0x2606, 0xA1DA, 0x2605, 0xA1DB, 0x25CB, 0xA1DC, 0x25CF, + 0xA1DD, 0x25CE, 0xA1DE, 0x25C7, 0xA1DF, 0x25C6, 0xA1E0, 0x25A1, 0xA1E1, 0x25A0, 0xA1E2, 0x25B3, 0xA1E3, 0x25B2, 0xA1E4, 0x25BD, + 0xA1E5, 0x25BC, 0xA1E6, 0x2192, 0xA1E7, 0x2190, 0xA1E8, 0x2191, 0xA1E9, 0x2193, 0xA1EA, 0x2194, 0xA1EB, 0x3013, 0xA1EC, 0x226A, + 0xA1ED, 0x226B, 0xA1EE, 0x221A, 0xA1EF, 0x223D, 0xA1F0, 0x221D, 0xA1F1, 0x2235, 0xA1F2, 0x222B, 0xA1F3, 0x222C, 0xA1F4, 0x2208, + 0xA1F5, 0x220B, 0xA1F6, 0x2286, 0xA1F7, 0x2287, 0xA1F8, 0x2282, 0xA1F9, 0x2283, 0xA1FA, 0x222A, 0xA1FB, 0x2229, 0xA1FC, 0x2227, + 0xA1FD, 0x2228, 0xA1FE, 0xFFE2, 0xA241, 0xC910, 0xA242, 0xC912, 0xA243, 0xC913, 0xA244, 0xC914, 0xA245, 0xC915, 0xA246, 0xC916, + 0xA247, 0xC917, 0xA248, 0xC919, 0xA249, 0xC91A, 0xA24A, 0xC91B, 0xA24B, 0xC91C, 0xA24C, 0xC91D, 0xA24D, 0xC91E, 0xA24E, 0xC91F, + 0xA24F, 0xC920, 0xA250, 0xC921, 0xA251, 0xC922, 0xA252, 0xC923, 0xA253, 0xC924, 0xA254, 0xC925, 0xA255, 0xC926, 0xA256, 0xC927, + 0xA257, 0xC928, 0xA258, 0xC929, 0xA259, 0xC92A, 0xA25A, 0xC92B, 0xA261, 0xC92D, 0xA262, 0xC92E, 0xA263, 0xC92F, 0xA264, 0xC930, + 0xA265, 0xC931, 0xA266, 0xC932, 0xA267, 0xC933, 0xA268, 0xC935, 0xA269, 0xC936, 0xA26A, 0xC937, 0xA26B, 0xC938, 0xA26C, 0xC939, + 0xA26D, 0xC93A, 0xA26E, 0xC93B, 0xA26F, 0xC93C, 0xA270, 0xC93D, 0xA271, 0xC93E, 0xA272, 0xC93F, 0xA273, 0xC940, 0xA274, 0xC941, + 0xA275, 0xC942, 0xA276, 0xC943, 0xA277, 0xC944, 0xA278, 0xC945, 0xA279, 0xC946, 0xA27A, 0xC947, 0xA281, 0xC948, 0xA282, 0xC949, + 0xA283, 0xC94A, 0xA284, 0xC94B, 0xA285, 0xC94C, 0xA286, 0xC94D, 0xA287, 0xC94E, 0xA288, 0xC94F, 0xA289, 0xC952, 0xA28A, 0xC953, + 0xA28B, 0xC955, 0xA28C, 0xC956, 0xA28D, 0xC957, 0xA28E, 0xC959, 0xA28F, 0xC95A, 0xA290, 0xC95B, 0xA291, 0xC95C, 0xA292, 0xC95D, + 0xA293, 0xC95E, 0xA294, 0xC95F, 0xA295, 0xC962, 0xA296, 0xC964, 0xA297, 0xC965, 0xA298, 0xC966, 0xA299, 0xC967, 0xA29A, 0xC968, + 0xA29B, 0xC969, 0xA29C, 0xC96A, 0xA29D, 0xC96B, 0xA29E, 0xC96D, 0xA29F, 0xC96E, 0xA2A0, 0xC96F, 0xA2A1, 0x21D2, 0xA2A2, 0x21D4, + 0xA2A3, 0x2200, 0xA2A4, 0x2203, 0xA2A5, 0x00B4, 0xA2A6, 0xFF5E, 0xA2A7, 0x02C7, 0xA2A8, 0x02D8, 0xA2A9, 0x02DD, 0xA2AA, 0x02DA, + 0xA2AB, 0x02D9, 0xA2AC, 0x00B8, 0xA2AD, 0x02DB, 0xA2AE, 0x00A1, 0xA2AF, 0x00BF, 0xA2B0, 0x02D0, 0xA2B1, 0x222E, 0xA2B2, 0x2211, + 0xA2B3, 0x220F, 0xA2B4, 0x00A4, 0xA2B5, 0x2109, 0xA2B6, 0x2030, 0xA2B7, 0x25C1, 0xA2B8, 0x25C0, 0xA2B9, 0x25B7, 0xA2BA, 0x25B6, + 0xA2BB, 0x2664, 0xA2BC, 0x2660, 0xA2BD, 0x2661, 0xA2BE, 0x2665, 0xA2BF, 0x2667, 0xA2C0, 0x2663, 0xA2C1, 0x2299, 0xA2C2, 0x25C8, + 0xA2C3, 0x25A3, 0xA2C4, 0x25D0, 0xA2C5, 0x25D1, 0xA2C6, 0x2592, 0xA2C7, 0x25A4, 0xA2C8, 0x25A5, 0xA2C9, 0x25A8, 0xA2CA, 0x25A7, + 0xA2CB, 0x25A6, 0xA2CC, 0x25A9, 0xA2CD, 0x2668, 0xA2CE, 0x260F, 0xA2CF, 0x260E, 0xA2D0, 0x261C, 0xA2D1, 0x261E, 0xA2D2, 0x00B6, + 0xA2D3, 0x2020, 0xA2D4, 0x2021, 0xA2D5, 0x2195, 0xA2D6, 0x2197, 0xA2D7, 0x2199, 0xA2D8, 0x2196, 0xA2D9, 0x2198, 0xA2DA, 0x266D, + 0xA2DB, 0x2669, 0xA2DC, 0x266A, 0xA2DD, 0x266C, 0xA2DE, 0x327F, 0xA2DF, 0x321C, 0xA2E0, 0x2116, 0xA2E1, 0x33C7, 0xA2E2, 0x2122, + 0xA2E3, 0x33C2, 0xA2E4, 0x33D8, 0xA2E5, 0x2121, 0xA2E6, 0x20AC, 0xA2E7, 0x00AE, 0xA341, 0xC971, 0xA342, 0xC972, 0xA343, 0xC973, + 0xA344, 0xC975, 0xA345, 0xC976, 0xA346, 0xC977, 0xA347, 0xC978, 0xA348, 0xC979, 0xA349, 0xC97A, 0xA34A, 0xC97B, 0xA34B, 0xC97D, + 0xA34C, 0xC97E, 0xA34D, 0xC97F, 0xA34E, 0xC980, 0xA34F, 0xC981, 0xA350, 0xC982, 0xA351, 0xC983, 0xA352, 0xC984, 0xA353, 0xC985, + 0xA354, 0xC986, 0xA355, 0xC987, 0xA356, 0xC98A, 0xA357, 0xC98B, 0xA358, 0xC98D, 0xA359, 0xC98E, 0xA35A, 0xC98F, 0xA361, 0xC991, + 0xA362, 0xC992, 0xA363, 0xC993, 0xA364, 0xC994, 0xA365, 0xC995, 0xA366, 0xC996, 0xA367, 0xC997, 0xA368, 0xC99A, 0xA369, 0xC99C, + 0xA36A, 0xC99E, 0xA36B, 0xC99F, 0xA36C, 0xC9A0, 0xA36D, 0xC9A1, 0xA36E, 0xC9A2, 0xA36F, 0xC9A3, 0xA370, 0xC9A4, 0xA371, 0xC9A5, + 0xA372, 0xC9A6, 0xA373, 0xC9A7, 0xA374, 0xC9A8, 0xA375, 0xC9A9, 0xA376, 0xC9AA, 0xA377, 0xC9AB, 0xA378, 0xC9AC, 0xA379, 0xC9AD, + 0xA37A, 0xC9AE, 0xA381, 0xC9AF, 0xA382, 0xC9B0, 0xA383, 0xC9B1, 0xA384, 0xC9B2, 0xA385, 0xC9B3, 0xA386, 0xC9B4, 0xA387, 0xC9B5, + 0xA388, 0xC9B6, 0xA389, 0xC9B7, 0xA38A, 0xC9B8, 0xA38B, 0xC9B9, 0xA38C, 0xC9BA, 0xA38D, 0xC9BB, 0xA38E, 0xC9BC, 0xA38F, 0xC9BD, + 0xA390, 0xC9BE, 0xA391, 0xC9BF, 0xA392, 0xC9C2, 0xA393, 0xC9C3, 0xA394, 0xC9C5, 0xA395, 0xC9C6, 0xA396, 0xC9C9, 0xA397, 0xC9CB, + 0xA398, 0xC9CC, 0xA399, 0xC9CD, 0xA39A, 0xC9CE, 0xA39B, 0xC9CF, 0xA39C, 0xC9D2, 0xA39D, 0xC9D4, 0xA39E, 0xC9D7, 0xA39F, 0xC9D8, + 0xA3A0, 0xC9DB, 0xA3A1, 0xFF01, 0xA3A2, 0xFF02, 0xA3A3, 0xFF03, 0xA3A4, 0xFF04, 0xA3A5, 0xFF05, 0xA3A6, 0xFF06, 0xA3A7, 0xFF07, + 0xA3A8, 0xFF08, 0xA3A9, 0xFF09, 0xA3AA, 0xFF0A, 0xA3AB, 0xFF0B, 0xA3AC, 0xFF0C, 0xA3AD, 0xFF0D, 0xA3AE, 0xFF0E, 0xA3AF, 0xFF0F, + 0xA3B0, 0xFF10, 0xA3B1, 0xFF11, 0xA3B2, 0xFF12, 0xA3B3, 0xFF13, 0xA3B4, 0xFF14, 0xA3B5, 0xFF15, 0xA3B6, 0xFF16, 0xA3B7, 0xFF17, + 0xA3B8, 0xFF18, 0xA3B9, 0xFF19, 0xA3BA, 0xFF1A, 0xA3BB, 0xFF1B, 0xA3BC, 0xFF1C, 0xA3BD, 0xFF1D, 0xA3BE, 0xFF1E, 0xA3BF, 0xFF1F, + 0xA3C0, 0xFF20, 0xA3C1, 0xFF21, 0xA3C2, 0xFF22, 0xA3C3, 0xFF23, 0xA3C4, 0xFF24, 0xA3C5, 0xFF25, 0xA3C6, 0xFF26, 0xA3C7, 0xFF27, + 0xA3C8, 0xFF28, 0xA3C9, 0xFF29, 0xA3CA, 0xFF2A, 0xA3CB, 0xFF2B, 0xA3CC, 0xFF2C, 0xA3CD, 0xFF2D, 0xA3CE, 0xFF2E, 0xA3CF, 0xFF2F, + 0xA3D0, 0xFF30, 0xA3D1, 0xFF31, 0xA3D2, 0xFF32, 0xA3D3, 0xFF33, 0xA3D4, 0xFF34, 0xA3D5, 0xFF35, 0xA3D6, 0xFF36, 0xA3D7, 0xFF37, + 0xA3D8, 0xFF38, 0xA3D9, 0xFF39, 0xA3DA, 0xFF3A, 0xA3DB, 0xFF3B, 0xA3DC, 0xFFE6, 0xA3DD, 0xFF3D, 0xA3DE, 0xFF3E, 0xA3DF, 0xFF3F, + 0xA3E0, 0xFF40, 0xA3E1, 0xFF41, 0xA3E2, 0xFF42, 0xA3E3, 0xFF43, 0xA3E4, 0xFF44, 0xA3E5, 0xFF45, 0xA3E6, 0xFF46, 0xA3E7, 0xFF47, + 0xA3E8, 0xFF48, 0xA3E9, 0xFF49, 0xA3EA, 0xFF4A, 0xA3EB, 0xFF4B, 0xA3EC, 0xFF4C, 0xA3ED, 0xFF4D, 0xA3EE, 0xFF4E, 0xA3EF, 0xFF4F, + 0xA3F0, 0xFF50, 0xA3F1, 0xFF51, 0xA3F2, 0xFF52, 0xA3F3, 0xFF53, 0xA3F4, 0xFF54, 0xA3F5, 0xFF55, 0xA3F6, 0xFF56, 0xA3F7, 0xFF57, + 0xA3F8, 0xFF58, 0xA3F9, 0xFF59, 0xA3FA, 0xFF5A, 0xA3FB, 0xFF5B, 0xA3FC, 0xFF5C, 0xA3FD, 0xFF5D, 0xA3FE, 0xFFE3, 0xA441, 0xC9DE, + 0xA442, 0xC9DF, 0xA443, 0xC9E1, 0xA444, 0xC9E3, 0xA445, 0xC9E5, 0xA446, 0xC9E6, 0xA447, 0xC9E8, 0xA448, 0xC9E9, 0xA449, 0xC9EA, + 0xA44A, 0xC9EB, 0xA44B, 0xC9EE, 0xA44C, 0xC9F2, 0xA44D, 0xC9F3, 0xA44E, 0xC9F4, 0xA44F, 0xC9F5, 0xA450, 0xC9F6, 0xA451, 0xC9F7, + 0xA452, 0xC9FA, 0xA453, 0xC9FB, 0xA454, 0xC9FD, 0xA455, 0xC9FE, 0xA456, 0xC9FF, 0xA457, 0xCA01, 0xA458, 0xCA02, 0xA459, 0xCA03, + 0xA45A, 0xCA04, 0xA461, 0xCA05, 0xA462, 0xCA06, 0xA463, 0xCA07, 0xA464, 0xCA0A, 0xA465, 0xCA0E, 0xA466, 0xCA0F, 0xA467, 0xCA10, + 0xA468, 0xCA11, 0xA469, 0xCA12, 0xA46A, 0xCA13, 0xA46B, 0xCA15, 0xA46C, 0xCA16, 0xA46D, 0xCA17, 0xA46E, 0xCA19, 0xA46F, 0xCA1A, + 0xA470, 0xCA1B, 0xA471, 0xCA1C, 0xA472, 0xCA1D, 0xA473, 0xCA1E, 0xA474, 0xCA1F, 0xA475, 0xCA20, 0xA476, 0xCA21, 0xA477, 0xCA22, + 0xA478, 0xCA23, 0xA479, 0xCA24, 0xA47A, 0xCA25, 0xA481, 0xCA26, 0xA482, 0xCA27, 0xA483, 0xCA28, 0xA484, 0xCA2A, 0xA485, 0xCA2B, + 0xA486, 0xCA2C, 0xA487, 0xCA2D, 0xA488, 0xCA2E, 0xA489, 0xCA2F, 0xA48A, 0xCA30, 0xA48B, 0xCA31, 0xA48C, 0xCA32, 0xA48D, 0xCA33, + 0xA48E, 0xCA34, 0xA48F, 0xCA35, 0xA490, 0xCA36, 0xA491, 0xCA37, 0xA492, 0xCA38, 0xA493, 0xCA39, 0xA494, 0xCA3A, 0xA495, 0xCA3B, + 0xA496, 0xCA3C, 0xA497, 0xCA3D, 0xA498, 0xCA3E, 0xA499, 0xCA3F, 0xA49A, 0xCA40, 0xA49B, 0xCA41, 0xA49C, 0xCA42, 0xA49D, 0xCA43, + 0xA49E, 0xCA44, 0xA49F, 0xCA45, 0xA4A0, 0xCA46, 0xA4A1, 0x3131, 0xA4A2, 0x3132, 0xA4A3, 0x3133, 0xA4A4, 0x3134, 0xA4A5, 0x3135, + 0xA4A6, 0x3136, 0xA4A7, 0x3137, 0xA4A8, 0x3138, 0xA4A9, 0x3139, 0xA4AA, 0x313A, 0xA4AB, 0x313B, 0xA4AC, 0x313C, 0xA4AD, 0x313D, + 0xA4AE, 0x313E, 0xA4AF, 0x313F, 0xA4B0, 0x3140, 0xA4B1, 0x3141, 0xA4B2, 0x3142, 0xA4B3, 0x3143, 0xA4B4, 0x3144, 0xA4B5, 0x3145, + 0xA4B6, 0x3146, 0xA4B7, 0x3147, 0xA4B8, 0x3148, 0xA4B9, 0x3149, 0xA4BA, 0x314A, 0xA4BB, 0x314B, 0xA4BC, 0x314C, 0xA4BD, 0x314D, + 0xA4BE, 0x314E, 0xA4BF, 0x314F, 0xA4C0, 0x3150, 0xA4C1, 0x3151, 0xA4C2, 0x3152, 0xA4C3, 0x3153, 0xA4C4, 0x3154, 0xA4C5, 0x3155, + 0xA4C6, 0x3156, 0xA4C7, 0x3157, 0xA4C8, 0x3158, 0xA4C9, 0x3159, 0xA4CA, 0x315A, 0xA4CB, 0x315B, 0xA4CC, 0x315C, 0xA4CD, 0x315D, + 0xA4CE, 0x315E, 0xA4CF, 0x315F, 0xA4D0, 0x3160, 0xA4D1, 0x3161, 0xA4D2, 0x3162, 0xA4D3, 0x3163, 0xA4D4, 0x3164, 0xA4D5, 0x3165, + 0xA4D6, 0x3166, 0xA4D7, 0x3167, 0xA4D8, 0x3168, 0xA4D9, 0x3169, 0xA4DA, 0x316A, 0xA4DB, 0x316B, 0xA4DC, 0x316C, 0xA4DD, 0x316D, + 0xA4DE, 0x316E, 0xA4DF, 0x316F, 0xA4E0, 0x3170, 0xA4E1, 0x3171, 0xA4E2, 0x3172, 0xA4E3, 0x3173, 0xA4E4, 0x3174, 0xA4E5, 0x3175, + 0xA4E6, 0x3176, 0xA4E7, 0x3177, 0xA4E8, 0x3178, 0xA4E9, 0x3179, 0xA4EA, 0x317A, 0xA4EB, 0x317B, 0xA4EC, 0x317C, 0xA4ED, 0x317D, + 0xA4EE, 0x317E, 0xA4EF, 0x317F, 0xA4F0, 0x3180, 0xA4F1, 0x3181, 0xA4F2, 0x3182, 0xA4F3, 0x3183, 0xA4F4, 0x3184, 0xA4F5, 0x3185, + 0xA4F6, 0x3186, 0xA4F7, 0x3187, 0xA4F8, 0x3188, 0xA4F9, 0x3189, 0xA4FA, 0x318A, 0xA4FB, 0x318B, 0xA4FC, 0x318C, 0xA4FD, 0x318D, + 0xA4FE, 0x318E, 0xA541, 0xCA47, 0xA542, 0xCA48, 0xA543, 0xCA49, 0xA544, 0xCA4A, 0xA545, 0xCA4B, 0xA546, 0xCA4E, 0xA547, 0xCA4F, + 0xA548, 0xCA51, 0xA549, 0xCA52, 0xA54A, 0xCA53, 0xA54B, 0xCA55, 0xA54C, 0xCA56, 0xA54D, 0xCA57, 0xA54E, 0xCA58, 0xA54F, 0xCA59, + 0xA550, 0xCA5A, 0xA551, 0xCA5B, 0xA552, 0xCA5E, 0xA553, 0xCA62, 0xA554, 0xCA63, 0xA555, 0xCA64, 0xA556, 0xCA65, 0xA557, 0xCA66, + 0xA558, 0xCA67, 0xA559, 0xCA69, 0xA55A, 0xCA6A, 0xA561, 0xCA6B, 0xA562, 0xCA6C, 0xA563, 0xCA6D, 0xA564, 0xCA6E, 0xA565, 0xCA6F, + 0xA566, 0xCA70, 0xA567, 0xCA71, 0xA568, 0xCA72, 0xA569, 0xCA73, 0xA56A, 0xCA74, 0xA56B, 0xCA75, 0xA56C, 0xCA76, 0xA56D, 0xCA77, + 0xA56E, 0xCA78, 0xA56F, 0xCA79, 0xA570, 0xCA7A, 0xA571, 0xCA7B, 0xA572, 0xCA7C, 0xA573, 0xCA7E, 0xA574, 0xCA7F, 0xA575, 0xCA80, + 0xA576, 0xCA81, 0xA577, 0xCA82, 0xA578, 0xCA83, 0xA579, 0xCA85, 0xA57A, 0xCA86, 0xA581, 0xCA87, 0xA582, 0xCA88, 0xA583, 0xCA89, + 0xA584, 0xCA8A, 0xA585, 0xCA8B, 0xA586, 0xCA8C, 0xA587, 0xCA8D, 0xA588, 0xCA8E, 0xA589, 0xCA8F, 0xA58A, 0xCA90, 0xA58B, 0xCA91, + 0xA58C, 0xCA92, 0xA58D, 0xCA93, 0xA58E, 0xCA94, 0xA58F, 0xCA95, 0xA590, 0xCA96, 0xA591, 0xCA97, 0xA592, 0xCA99, 0xA593, 0xCA9A, + 0xA594, 0xCA9B, 0xA595, 0xCA9C, 0xA596, 0xCA9D, 0xA597, 0xCA9E, 0xA598, 0xCA9F, 0xA599, 0xCAA0, 0xA59A, 0xCAA1, 0xA59B, 0xCAA2, + 0xA59C, 0xCAA3, 0xA59D, 0xCAA4, 0xA59E, 0xCAA5, 0xA59F, 0xCAA6, 0xA5A0, 0xCAA7, 0xA5A1, 0x2170, 0xA5A2, 0x2171, 0xA5A3, 0x2172, + 0xA5A4, 0x2173, 0xA5A5, 0x2174, 0xA5A6, 0x2175, 0xA5A7, 0x2176, 0xA5A8, 0x2177, 0xA5A9, 0x2178, 0xA5AA, 0x2179, 0xA5B0, 0x2160, + 0xA5B1, 0x2161, 0xA5B2, 0x2162, 0xA5B3, 0x2163, 0xA5B4, 0x2164, 0xA5B5, 0x2165, 0xA5B6, 0x2166, 0xA5B7, 0x2167, 0xA5B8, 0x2168, + 0xA5B9, 0x2169, 0xA5C1, 0x0391, 0xA5C2, 0x0392, 0xA5C3, 0x0393, 0xA5C4, 0x0394, 0xA5C5, 0x0395, 0xA5C6, 0x0396, 0xA5C7, 0x0397, + 0xA5C8, 0x0398, 0xA5C9, 0x0399, 0xA5CA, 0x039A, 0xA5CB, 0x039B, 0xA5CC, 0x039C, 0xA5CD, 0x039D, 0xA5CE, 0x039E, 0xA5CF, 0x039F, + 0xA5D0, 0x03A0, 0xA5D1, 0x03A1, 0xA5D2, 0x03A3, 0xA5D3, 0x03A4, 0xA5D4, 0x03A5, 0xA5D5, 0x03A6, 0xA5D6, 0x03A7, 0xA5D7, 0x03A8, + 0xA5D8, 0x03A9, 0xA5E1, 0x03B1, 0xA5E2, 0x03B2, 0xA5E3, 0x03B3, 0xA5E4, 0x03B4, 0xA5E5, 0x03B5, 0xA5E6, 0x03B6, 0xA5E7, 0x03B7, + 0xA5E8, 0x03B8, 0xA5E9, 0x03B9, 0xA5EA, 0x03BA, 0xA5EB, 0x03BB, 0xA5EC, 0x03BC, 0xA5ED, 0x03BD, 0xA5EE, 0x03BE, 0xA5EF, 0x03BF, + 0xA5F0, 0x03C0, 0xA5F1, 0x03C1, 0xA5F2, 0x03C3, 0xA5F3, 0x03C4, 0xA5F4, 0x03C5, 0xA5F5, 0x03C6, 0xA5F6, 0x03C7, 0xA5F7, 0x03C8, + 0xA5F8, 0x03C9, 0xA641, 0xCAA8, 0xA642, 0xCAA9, 0xA643, 0xCAAA, 0xA644, 0xCAAB, 0xA645, 0xCAAC, 0xA646, 0xCAAD, 0xA647, 0xCAAE, + 0xA648, 0xCAAF, 0xA649, 0xCAB0, 0xA64A, 0xCAB1, 0xA64B, 0xCAB2, 0xA64C, 0xCAB3, 0xA64D, 0xCAB4, 0xA64E, 0xCAB5, 0xA64F, 0xCAB6, + 0xA650, 0xCAB7, 0xA651, 0xCAB8, 0xA652, 0xCAB9, 0xA653, 0xCABA, 0xA654, 0xCABB, 0xA655, 0xCABE, 0xA656, 0xCABF, 0xA657, 0xCAC1, + 0xA658, 0xCAC2, 0xA659, 0xCAC3, 0xA65A, 0xCAC5, 0xA661, 0xCAC6, 0xA662, 0xCAC7, 0xA663, 0xCAC8, 0xA664, 0xCAC9, 0xA665, 0xCACA, + 0xA666, 0xCACB, 0xA667, 0xCACE, 0xA668, 0xCAD0, 0xA669, 0xCAD2, 0xA66A, 0xCAD4, 0xA66B, 0xCAD5, 0xA66C, 0xCAD6, 0xA66D, 0xCAD7, + 0xA66E, 0xCADA, 0xA66F, 0xCADB, 0xA670, 0xCADC, 0xA671, 0xCADD, 0xA672, 0xCADE, 0xA673, 0xCADF, 0xA674, 0xCAE1, 0xA675, 0xCAE2, + 0xA676, 0xCAE3, 0xA677, 0xCAE4, 0xA678, 0xCAE5, 0xA679, 0xCAE6, 0xA67A, 0xCAE7, 0xA681, 0xCAE8, 0xA682, 0xCAE9, 0xA683, 0xCAEA, + 0xA684, 0xCAEB, 0xA685, 0xCAED, 0xA686, 0xCAEE, 0xA687, 0xCAEF, 0xA688, 0xCAF0, 0xA689, 0xCAF1, 0xA68A, 0xCAF2, 0xA68B, 0xCAF3, + 0xA68C, 0xCAF5, 0xA68D, 0xCAF6, 0xA68E, 0xCAF7, 0xA68F, 0xCAF8, 0xA690, 0xCAF9, 0xA691, 0xCAFA, 0xA692, 0xCAFB, 0xA693, 0xCAFC, + 0xA694, 0xCAFD, 0xA695, 0xCAFE, 0xA696, 0xCAFF, 0xA697, 0xCB00, 0xA698, 0xCB01, 0xA699, 0xCB02, 0xA69A, 0xCB03, 0xA69B, 0xCB04, + 0xA69C, 0xCB05, 0xA69D, 0xCB06, 0xA69E, 0xCB07, 0xA69F, 0xCB09, 0xA6A0, 0xCB0A, 0xA6A1, 0x2500, 0xA6A2, 0x2502, 0xA6A3, 0x250C, + 0xA6A4, 0x2510, 0xA6A5, 0x2518, 0xA6A6, 0x2514, 0xA6A7, 0x251C, 0xA6A8, 0x252C, 0xA6A9, 0x2524, 0xA6AA, 0x2534, 0xA6AB, 0x253C, + 0xA6AC, 0x2501, 0xA6AD, 0x2503, 0xA6AE, 0x250F, 0xA6AF, 0x2513, 0xA6B0, 0x251B, 0xA6B1, 0x2517, 0xA6B2, 0x2523, 0xA6B3, 0x2533, + 0xA6B4, 0x252B, 0xA6B5, 0x253B, 0xA6B6, 0x254B, 0xA6B7, 0x2520, 0xA6B8, 0x252F, 0xA6B9, 0x2528, 0xA6BA, 0x2537, 0xA6BB, 0x253F, + 0xA6BC, 0x251D, 0xA6BD, 0x2530, 0xA6BE, 0x2525, 0xA6BF, 0x2538, 0xA6C0, 0x2542, 0xA6C1, 0x2512, 0xA6C2, 0x2511, 0xA6C3, 0x251A, + 0xA6C4, 0x2519, 0xA6C5, 0x2516, 0xA6C6, 0x2515, 0xA6C7, 0x250E, 0xA6C8, 0x250D, 0xA6C9, 0x251E, 0xA6CA, 0x251F, 0xA6CB, 0x2521, + 0xA6CC, 0x2522, 0xA6CD, 0x2526, 0xA6CE, 0x2527, 0xA6CF, 0x2529, 0xA6D0, 0x252A, 0xA6D1, 0x252D, 0xA6D2, 0x252E, 0xA6D3, 0x2531, + 0xA6D4, 0x2532, 0xA6D5, 0x2535, 0xA6D6, 0x2536, 0xA6D7, 0x2539, 0xA6D8, 0x253A, 0xA6D9, 0x253D, 0xA6DA, 0x253E, 0xA6DB, 0x2540, + 0xA6DC, 0x2541, 0xA6DD, 0x2543, 0xA6DE, 0x2544, 0xA6DF, 0x2545, 0xA6E0, 0x2546, 0xA6E1, 0x2547, 0xA6E2, 0x2548, 0xA6E3, 0x2549, + 0xA6E4, 0x254A, 0xA741, 0xCB0B, 0xA742, 0xCB0C, 0xA743, 0xCB0D, 0xA744, 0xCB0E, 0xA745, 0xCB0F, 0xA746, 0xCB11, 0xA747, 0xCB12, + 0xA748, 0xCB13, 0xA749, 0xCB15, 0xA74A, 0xCB16, 0xA74B, 0xCB17, 0xA74C, 0xCB19, 0xA74D, 0xCB1A, 0xA74E, 0xCB1B, 0xA74F, 0xCB1C, + 0xA750, 0xCB1D, 0xA751, 0xCB1E, 0xA752, 0xCB1F, 0xA753, 0xCB22, 0xA754, 0xCB23, 0xA755, 0xCB24, 0xA756, 0xCB25, 0xA757, 0xCB26, + 0xA758, 0xCB27, 0xA759, 0xCB28, 0xA75A, 0xCB29, 0xA761, 0xCB2A, 0xA762, 0xCB2B, 0xA763, 0xCB2C, 0xA764, 0xCB2D, 0xA765, 0xCB2E, + 0xA766, 0xCB2F, 0xA767, 0xCB30, 0xA768, 0xCB31, 0xA769, 0xCB32, 0xA76A, 0xCB33, 0xA76B, 0xCB34, 0xA76C, 0xCB35, 0xA76D, 0xCB36, + 0xA76E, 0xCB37, 0xA76F, 0xCB38, 0xA770, 0xCB39, 0xA771, 0xCB3A, 0xA772, 0xCB3B, 0xA773, 0xCB3C, 0xA774, 0xCB3D, 0xA775, 0xCB3E, + 0xA776, 0xCB3F, 0xA777, 0xCB40, 0xA778, 0xCB42, 0xA779, 0xCB43, 0xA77A, 0xCB44, 0xA781, 0xCB45, 0xA782, 0xCB46, 0xA783, 0xCB47, + 0xA784, 0xCB4A, 0xA785, 0xCB4B, 0xA786, 0xCB4D, 0xA787, 0xCB4E, 0xA788, 0xCB4F, 0xA789, 0xCB51, 0xA78A, 0xCB52, 0xA78B, 0xCB53, + 0xA78C, 0xCB54, 0xA78D, 0xCB55, 0xA78E, 0xCB56, 0xA78F, 0xCB57, 0xA790, 0xCB5A, 0xA791, 0xCB5B, 0xA792, 0xCB5C, 0xA793, 0xCB5E, + 0xA794, 0xCB5F, 0xA795, 0xCB60, 0xA796, 0xCB61, 0xA797, 0xCB62, 0xA798, 0xCB63, 0xA799, 0xCB65, 0xA79A, 0xCB66, 0xA79B, 0xCB67, + 0xA79C, 0xCB68, 0xA79D, 0xCB69, 0xA79E, 0xCB6A, 0xA79F, 0xCB6B, 0xA7A0, 0xCB6C, 0xA7A1, 0x3395, 0xA7A2, 0x3396, 0xA7A3, 0x3397, + 0xA7A4, 0x2113, 0xA7A5, 0x3398, 0xA7A6, 0x33C4, 0xA7A7, 0x33A3, 0xA7A8, 0x33A4, 0xA7A9, 0x33A5, 0xA7AA, 0x33A6, 0xA7AB, 0x3399, + 0xA7AC, 0x339A, 0xA7AD, 0x339B, 0xA7AE, 0x339C, 0xA7AF, 0x339D, 0xA7B0, 0x339E, 0xA7B1, 0x339F, 0xA7B2, 0x33A0, 0xA7B3, 0x33A1, + 0xA7B4, 0x33A2, 0xA7B5, 0x33CA, 0xA7B6, 0x338D, 0xA7B7, 0x338E, 0xA7B8, 0x338F, 0xA7B9, 0x33CF, 0xA7BA, 0x3388, 0xA7BB, 0x3389, + 0xA7BC, 0x33C8, 0xA7BD, 0x33A7, 0xA7BE, 0x33A8, 0xA7BF, 0x33B0, 0xA7C0, 0x33B1, 0xA7C1, 0x33B2, 0xA7C2, 0x33B3, 0xA7C3, 0x33B4, + 0xA7C4, 0x33B5, 0xA7C5, 0x33B6, 0xA7C6, 0x33B7, 0xA7C7, 0x33B8, 0xA7C8, 0x33B9, 0xA7C9, 0x3380, 0xA7CA, 0x3381, 0xA7CB, 0x3382, + 0xA7CC, 0x3383, 0xA7CD, 0x3384, 0xA7CE, 0x33BA, 0xA7CF, 0x33BB, 0xA7D0, 0x33BC, 0xA7D1, 0x33BD, 0xA7D2, 0x33BE, 0xA7D3, 0x33BF, + 0xA7D4, 0x3390, 0xA7D5, 0x3391, 0xA7D6, 0x3392, 0xA7D7, 0x3393, 0xA7D8, 0x3394, 0xA7D9, 0x2126, 0xA7DA, 0x33C0, 0xA7DB, 0x33C1, + 0xA7DC, 0x338A, 0xA7DD, 0x338B, 0xA7DE, 0x338C, 0xA7DF, 0x33D6, 0xA7E0, 0x33C5, 0xA7E1, 0x33AD, 0xA7E2, 0x33AE, 0xA7E3, 0x33AF, + 0xA7E4, 0x33DB, 0xA7E5, 0x33A9, 0xA7E6, 0x33AA, 0xA7E7, 0x33AB, 0xA7E8, 0x33AC, 0xA7E9, 0x33DD, 0xA7EA, 0x33D0, 0xA7EB, 0x33D3, + 0xA7EC, 0x33C3, 0xA7ED, 0x33C9, 0xA7EE, 0x33DC, 0xA7EF, 0x33C6, 0xA841, 0xCB6D, 0xA842, 0xCB6E, 0xA843, 0xCB6F, 0xA844, 0xCB70, + 0xA845, 0xCB71, 0xA846, 0xCB72, 0xA847, 0xCB73, 0xA848, 0xCB74, 0xA849, 0xCB75, 0xA84A, 0xCB76, 0xA84B, 0xCB77, 0xA84C, 0xCB7A, + 0xA84D, 0xCB7B, 0xA84E, 0xCB7C, 0xA84F, 0xCB7D, 0xA850, 0xCB7E, 0xA851, 0xCB7F, 0xA852, 0xCB80, 0xA853, 0xCB81, 0xA854, 0xCB82, + 0xA855, 0xCB83, 0xA856, 0xCB84, 0xA857, 0xCB85, 0xA858, 0xCB86, 0xA859, 0xCB87, 0xA85A, 0xCB88, 0xA861, 0xCB89, 0xA862, 0xCB8A, + 0xA863, 0xCB8B, 0xA864, 0xCB8C, 0xA865, 0xCB8D, 0xA866, 0xCB8E, 0xA867, 0xCB8F, 0xA868, 0xCB90, 0xA869, 0xCB91, 0xA86A, 0xCB92, + 0xA86B, 0xCB93, 0xA86C, 0xCB94, 0xA86D, 0xCB95, 0xA86E, 0xCB96, 0xA86F, 0xCB97, 0xA870, 0xCB98, 0xA871, 0xCB99, 0xA872, 0xCB9A, + 0xA873, 0xCB9B, 0xA874, 0xCB9D, 0xA875, 0xCB9E, 0xA876, 0xCB9F, 0xA877, 0xCBA0, 0xA878, 0xCBA1, 0xA879, 0xCBA2, 0xA87A, 0xCBA3, + 0xA881, 0xCBA4, 0xA882, 0xCBA5, 0xA883, 0xCBA6, 0xA884, 0xCBA7, 0xA885, 0xCBA8, 0xA886, 0xCBA9, 0xA887, 0xCBAA, 0xA888, 0xCBAB, + 0xA889, 0xCBAC, 0xA88A, 0xCBAD, 0xA88B, 0xCBAE, 0xA88C, 0xCBAF, 0xA88D, 0xCBB0, 0xA88E, 0xCBB1, 0xA88F, 0xCBB2, 0xA890, 0xCBB3, + 0xA891, 0xCBB4, 0xA892, 0xCBB5, 0xA893, 0xCBB6, 0xA894, 0xCBB7, 0xA895, 0xCBB9, 0xA896, 0xCBBA, 0xA897, 0xCBBB, 0xA898, 0xCBBC, + 0xA899, 0xCBBD, 0xA89A, 0xCBBE, 0xA89B, 0xCBBF, 0xA89C, 0xCBC0, 0xA89D, 0xCBC1, 0xA89E, 0xCBC2, 0xA89F, 0xCBC3, 0xA8A0, 0xCBC4, + 0xA8A1, 0x00C6, 0xA8A2, 0x00D0, 0xA8A3, 0x00AA, 0xA8A4, 0x0126, 0xA8A6, 0x0132, 0xA8A8, 0x013F, 0xA8A9, 0x0141, 0xA8AA, 0x00D8, + 0xA8AB, 0x0152, 0xA8AC, 0x00BA, 0xA8AD, 0x00DE, 0xA8AE, 0x0166, 0xA8AF, 0x014A, 0xA8B1, 0x3260, 0xA8B2, 0x3261, 0xA8B3, 0x3262, + 0xA8B4, 0x3263, 0xA8B5, 0x3264, 0xA8B6, 0x3265, 0xA8B7, 0x3266, 0xA8B8, 0x3267, 0xA8B9, 0x3268, 0xA8BA, 0x3269, 0xA8BB, 0x326A, + 0xA8BC, 0x326B, 0xA8BD, 0x326C, 0xA8BE, 0x326D, 0xA8BF, 0x326E, 0xA8C0, 0x326F, 0xA8C1, 0x3270, 0xA8C2, 0x3271, 0xA8C3, 0x3272, + 0xA8C4, 0x3273, 0xA8C5, 0x3274, 0xA8C6, 0x3275, 0xA8C7, 0x3276, 0xA8C8, 0x3277, 0xA8C9, 0x3278, 0xA8CA, 0x3279, 0xA8CB, 0x327A, + 0xA8CC, 0x327B, 0xA8CD, 0x24D0, 0xA8CE, 0x24D1, 0xA8CF, 0x24D2, 0xA8D0, 0x24D3, 0xA8D1, 0x24D4, 0xA8D2, 0x24D5, 0xA8D3, 0x24D6, + 0xA8D4, 0x24D7, 0xA8D5, 0x24D8, 0xA8D6, 0x24D9, 0xA8D7, 0x24DA, 0xA8D8, 0x24DB, 0xA8D9, 0x24DC, 0xA8DA, 0x24DD, 0xA8DB, 0x24DE, + 0xA8DC, 0x24DF, 0xA8DD, 0x24E0, 0xA8DE, 0x24E1, 0xA8DF, 0x24E2, 0xA8E0, 0x24E3, 0xA8E1, 0x24E4, 0xA8E2, 0x24E5, 0xA8E3, 0x24E6, + 0xA8E4, 0x24E7, 0xA8E5, 0x24E8, 0xA8E6, 0x24E9, 0xA8E7, 0x2460, 0xA8E8, 0x2461, 0xA8E9, 0x2462, 0xA8EA, 0x2463, 0xA8EB, 0x2464, + 0xA8EC, 0x2465, 0xA8ED, 0x2466, 0xA8EE, 0x2467, 0xA8EF, 0x2468, 0xA8F0, 0x2469, 0xA8F1, 0x246A, 0xA8F2, 0x246B, 0xA8F3, 0x246C, + 0xA8F4, 0x246D, 0xA8F5, 0x246E, 0xA8F6, 0x00BD, 0xA8F7, 0x2153, 0xA8F8, 0x2154, 0xA8F9, 0x00BC, 0xA8FA, 0x00BE, 0xA8FB, 0x215B, + 0xA8FC, 0x215C, 0xA8FD, 0x215D, 0xA8FE, 0x215E, 0xA941, 0xCBC5, 0xA942, 0xCBC6, 0xA943, 0xCBC7, 0xA944, 0xCBC8, 0xA945, 0xCBC9, + 0xA946, 0xCBCA, 0xA947, 0xCBCB, 0xA948, 0xCBCC, 0xA949, 0xCBCD, 0xA94A, 0xCBCE, 0xA94B, 0xCBCF, 0xA94C, 0xCBD0, 0xA94D, 0xCBD1, + 0xA94E, 0xCBD2, 0xA94F, 0xCBD3, 0xA950, 0xCBD5, 0xA951, 0xCBD6, 0xA952, 0xCBD7, 0xA953, 0xCBD8, 0xA954, 0xCBD9, 0xA955, 0xCBDA, + 0xA956, 0xCBDB, 0xA957, 0xCBDC, 0xA958, 0xCBDD, 0xA959, 0xCBDE, 0xA95A, 0xCBDF, 0xA961, 0xCBE0, 0xA962, 0xCBE1, 0xA963, 0xCBE2, + 0xA964, 0xCBE3, 0xA965, 0xCBE5, 0xA966, 0xCBE6, 0xA967, 0xCBE8, 0xA968, 0xCBEA, 0xA969, 0xCBEB, 0xA96A, 0xCBEC, 0xA96B, 0xCBED, + 0xA96C, 0xCBEE, 0xA96D, 0xCBEF, 0xA96E, 0xCBF0, 0xA96F, 0xCBF1, 0xA970, 0xCBF2, 0xA971, 0xCBF3, 0xA972, 0xCBF4, 0xA973, 0xCBF5, + 0xA974, 0xCBF6, 0xA975, 0xCBF7, 0xA976, 0xCBF8, 0xA977, 0xCBF9, 0xA978, 0xCBFA, 0xA979, 0xCBFB, 0xA97A, 0xCBFC, 0xA981, 0xCBFD, + 0xA982, 0xCBFE, 0xA983, 0xCBFF, 0xA984, 0xCC00, 0xA985, 0xCC01, 0xA986, 0xCC02, 0xA987, 0xCC03, 0xA988, 0xCC04, 0xA989, 0xCC05, + 0xA98A, 0xCC06, 0xA98B, 0xCC07, 0xA98C, 0xCC08, 0xA98D, 0xCC09, 0xA98E, 0xCC0A, 0xA98F, 0xCC0B, 0xA990, 0xCC0E, 0xA991, 0xCC0F, + 0xA992, 0xCC11, 0xA993, 0xCC12, 0xA994, 0xCC13, 0xA995, 0xCC15, 0xA996, 0xCC16, 0xA997, 0xCC17, 0xA998, 0xCC18, 0xA999, 0xCC19, + 0xA99A, 0xCC1A, 0xA99B, 0xCC1B, 0xA99C, 0xCC1E, 0xA99D, 0xCC1F, 0xA99E, 0xCC20, 0xA99F, 0xCC23, 0xA9A0, 0xCC24, 0xA9A1, 0x00E6, + 0xA9A2, 0x0111, 0xA9A3, 0x00F0, 0xA9A4, 0x0127, 0xA9A5, 0x0131, 0xA9A6, 0x0133, 0xA9A7, 0x0138, 0xA9A8, 0x0140, 0xA9A9, 0x0142, + 0xA9AA, 0x00F8, 0xA9AB, 0x0153, 0xA9AC, 0x00DF, 0xA9AD, 0x00FE, 0xA9AE, 0x0167, 0xA9AF, 0x014B, 0xA9B0, 0x0149, 0xA9B1, 0x3200, + 0xA9B2, 0x3201, 0xA9B3, 0x3202, 0xA9B4, 0x3203, 0xA9B5, 0x3204, 0xA9B6, 0x3205, 0xA9B7, 0x3206, 0xA9B8, 0x3207, 0xA9B9, 0x3208, + 0xA9BA, 0x3209, 0xA9BB, 0x320A, 0xA9BC, 0x320B, 0xA9BD, 0x320C, 0xA9BE, 0x320D, 0xA9BF, 0x320E, 0xA9C0, 0x320F, 0xA9C1, 0x3210, + 0xA9C2, 0x3211, 0xA9C3, 0x3212, 0xA9C4, 0x3213, 0xA9C5, 0x3214, 0xA9C6, 0x3215, 0xA9C7, 0x3216, 0xA9C8, 0x3217, 0xA9C9, 0x3218, + 0xA9CA, 0x3219, 0xA9CB, 0x321A, 0xA9CC, 0x321B, 0xA9CD, 0x249C, 0xA9CE, 0x249D, 0xA9CF, 0x249E, 0xA9D0, 0x249F, 0xA9D1, 0x24A0, + 0xA9D2, 0x24A1, 0xA9D3, 0x24A2, 0xA9D4, 0x24A3, 0xA9D5, 0x24A4, 0xA9D6, 0x24A5, 0xA9D7, 0x24A6, 0xA9D8, 0x24A7, 0xA9D9, 0x24A8, + 0xA9DA, 0x24A9, 0xA9DB, 0x24AA, 0xA9DC, 0x24AB, 0xA9DD, 0x24AC, 0xA9DE, 0x24AD, 0xA9DF, 0x24AE, 0xA9E0, 0x24AF, 0xA9E1, 0x24B0, + 0xA9E2, 0x24B1, 0xA9E3, 0x24B2, 0xA9E4, 0x24B3, 0xA9E5, 0x24B4, 0xA9E6, 0x24B5, 0xA9E7, 0x2474, 0xA9E8, 0x2475, 0xA9E9, 0x2476, + 0xA9EA, 0x2477, 0xA9EB, 0x2478, 0xA9EC, 0x2479, 0xA9ED, 0x247A, 0xA9EE, 0x247B, 0xA9EF, 0x247C, 0xA9F0, 0x247D, 0xA9F1, 0x247E, + 0xA9F2, 0x247F, 0xA9F3, 0x2480, 0xA9F4, 0x2481, 0xA9F5, 0x2482, 0xA9F6, 0x00B9, 0xA9F7, 0x00B2, 0xA9F8, 0x00B3, 0xA9F9, 0x2074, + 0xA9FA, 0x207F, 0xA9FB, 0x2081, 0xA9FC, 0x2082, 0xA9FD, 0x2083, 0xA9FE, 0x2084, 0xAA41, 0xCC25, 0xAA42, 0xCC26, 0xAA43, 0xCC2A, + 0xAA44, 0xCC2B, 0xAA45, 0xCC2D, 0xAA46, 0xCC2F, 0xAA47, 0xCC31, 0xAA48, 0xCC32, 0xAA49, 0xCC33, 0xAA4A, 0xCC34, 0xAA4B, 0xCC35, + 0xAA4C, 0xCC36, 0xAA4D, 0xCC37, 0xAA4E, 0xCC3A, 0xAA4F, 0xCC3F, 0xAA50, 0xCC40, 0xAA51, 0xCC41, 0xAA52, 0xCC42, 0xAA53, 0xCC43, + 0xAA54, 0xCC46, 0xAA55, 0xCC47, 0xAA56, 0xCC49, 0xAA57, 0xCC4A, 0xAA58, 0xCC4B, 0xAA59, 0xCC4D, 0xAA5A, 0xCC4E, 0xAA61, 0xCC4F, + 0xAA62, 0xCC50, 0xAA63, 0xCC51, 0xAA64, 0xCC52, 0xAA65, 0xCC53, 0xAA66, 0xCC56, 0xAA67, 0xCC5A, 0xAA68, 0xCC5B, 0xAA69, 0xCC5C, + 0xAA6A, 0xCC5D, 0xAA6B, 0xCC5E, 0xAA6C, 0xCC5F, 0xAA6D, 0xCC61, 0xAA6E, 0xCC62, 0xAA6F, 0xCC63, 0xAA70, 0xCC65, 0xAA71, 0xCC67, + 0xAA72, 0xCC69, 0xAA73, 0xCC6A, 0xAA74, 0xCC6B, 0xAA75, 0xCC6C, 0xAA76, 0xCC6D, 0xAA77, 0xCC6E, 0xAA78, 0xCC6F, 0xAA79, 0xCC71, + 0xAA7A, 0xCC72, 0xAA81, 0xCC73, 0xAA82, 0xCC74, 0xAA83, 0xCC76, 0xAA84, 0xCC77, 0xAA85, 0xCC78, 0xAA86, 0xCC79, 0xAA87, 0xCC7A, + 0xAA88, 0xCC7B, 0xAA89, 0xCC7C, 0xAA8A, 0xCC7D, 0xAA8B, 0xCC7E, 0xAA8C, 0xCC7F, 0xAA8D, 0xCC80, 0xAA8E, 0xCC81, 0xAA8F, 0xCC82, + 0xAA90, 0xCC83, 0xAA91, 0xCC84, 0xAA92, 0xCC85, 0xAA93, 0xCC86, 0xAA94, 0xCC87, 0xAA95, 0xCC88, 0xAA96, 0xCC89, 0xAA97, 0xCC8A, + 0xAA98, 0xCC8B, 0xAA99, 0xCC8C, 0xAA9A, 0xCC8D, 0xAA9B, 0xCC8E, 0xAA9C, 0xCC8F, 0xAA9D, 0xCC90, 0xAA9E, 0xCC91, 0xAA9F, 0xCC92, + 0xAAA0, 0xCC93, 0xAAA1, 0x3041, 0xAAA2, 0x3042, 0xAAA3, 0x3043, 0xAAA4, 0x3044, 0xAAA5, 0x3045, 0xAAA6, 0x3046, 0xAAA7, 0x3047, + 0xAAA8, 0x3048, 0xAAA9, 0x3049, 0xAAAA, 0x304A, 0xAAAB, 0x304B, 0xAAAC, 0x304C, 0xAAAD, 0x304D, 0xAAAE, 0x304E, 0xAAAF, 0x304F, + 0xAAB0, 0x3050, 0xAAB1, 0x3051, 0xAAB2, 0x3052, 0xAAB3, 0x3053, 0xAAB4, 0x3054, 0xAAB5, 0x3055, 0xAAB6, 0x3056, 0xAAB7, 0x3057, + 0xAAB8, 0x3058, 0xAAB9, 0x3059, 0xAABA, 0x305A, 0xAABB, 0x305B, 0xAABC, 0x305C, 0xAABD, 0x305D, 0xAABE, 0x305E, 0xAABF, 0x305F, + 0xAAC0, 0x3060, 0xAAC1, 0x3061, 0xAAC2, 0x3062, 0xAAC3, 0x3063, 0xAAC4, 0x3064, 0xAAC5, 0x3065, 0xAAC6, 0x3066, 0xAAC7, 0x3067, + 0xAAC8, 0x3068, 0xAAC9, 0x3069, 0xAACA, 0x306A, 0xAACB, 0x306B, 0xAACC, 0x306C, 0xAACD, 0x306D, 0xAACE, 0x306E, 0xAACF, 0x306F, + 0xAAD0, 0x3070, 0xAAD1, 0x3071, 0xAAD2, 0x3072, 0xAAD3, 0x3073, 0xAAD4, 0x3074, 0xAAD5, 0x3075, 0xAAD6, 0x3076, 0xAAD7, 0x3077, + 0xAAD8, 0x3078, 0xAAD9, 0x3079, 0xAADA, 0x307A, 0xAADB, 0x307B, 0xAADC, 0x307C, 0xAADD, 0x307D, 0xAADE, 0x307E, 0xAADF, 0x307F, + 0xAAE0, 0x3080, 0xAAE1, 0x3081, 0xAAE2, 0x3082, 0xAAE3, 0x3083, 0xAAE4, 0x3084, 0xAAE5, 0x3085, 0xAAE6, 0x3086, 0xAAE7, 0x3087, + 0xAAE8, 0x3088, 0xAAE9, 0x3089, 0xAAEA, 0x308A, 0xAAEB, 0x308B, 0xAAEC, 0x308C, 0xAAED, 0x308D, 0xAAEE, 0x308E, 0xAAEF, 0x308F, + 0xAAF0, 0x3090, 0xAAF1, 0x3091, 0xAAF2, 0x3092, 0xAAF3, 0x3093, 0xAB41, 0xCC94, 0xAB42, 0xCC95, 0xAB43, 0xCC96, 0xAB44, 0xCC97, + 0xAB45, 0xCC9A, 0xAB46, 0xCC9B, 0xAB47, 0xCC9D, 0xAB48, 0xCC9E, 0xAB49, 0xCC9F, 0xAB4A, 0xCCA1, 0xAB4B, 0xCCA2, 0xAB4C, 0xCCA3, + 0xAB4D, 0xCCA4, 0xAB4E, 0xCCA5, 0xAB4F, 0xCCA6, 0xAB50, 0xCCA7, 0xAB51, 0xCCAA, 0xAB52, 0xCCAE, 0xAB53, 0xCCAF, 0xAB54, 0xCCB0, + 0xAB55, 0xCCB1, 0xAB56, 0xCCB2, 0xAB57, 0xCCB3, 0xAB58, 0xCCB6, 0xAB59, 0xCCB7, 0xAB5A, 0xCCB9, 0xAB61, 0xCCBA, 0xAB62, 0xCCBB, + 0xAB63, 0xCCBD, 0xAB64, 0xCCBE, 0xAB65, 0xCCBF, 0xAB66, 0xCCC0, 0xAB67, 0xCCC1, 0xAB68, 0xCCC2, 0xAB69, 0xCCC3, 0xAB6A, 0xCCC6, + 0xAB6B, 0xCCC8, 0xAB6C, 0xCCCA, 0xAB6D, 0xCCCB, 0xAB6E, 0xCCCC, 0xAB6F, 0xCCCD, 0xAB70, 0xCCCE, 0xAB71, 0xCCCF, 0xAB72, 0xCCD1, + 0xAB73, 0xCCD2, 0xAB74, 0xCCD3, 0xAB75, 0xCCD5, 0xAB76, 0xCCD6, 0xAB77, 0xCCD7, 0xAB78, 0xCCD8, 0xAB79, 0xCCD9, 0xAB7A, 0xCCDA, + 0xAB81, 0xCCDB, 0xAB82, 0xCCDC, 0xAB83, 0xCCDD, 0xAB84, 0xCCDE, 0xAB85, 0xCCDF, 0xAB86, 0xCCE0, 0xAB87, 0xCCE1, 0xAB88, 0xCCE2, + 0xAB89, 0xCCE3, 0xAB8A, 0xCCE5, 0xAB8B, 0xCCE6, 0xAB8C, 0xCCE7, 0xAB8D, 0xCCE8, 0xAB8E, 0xCCE9, 0xAB8F, 0xCCEA, 0xAB90, 0xCCEB, + 0xAB91, 0xCCED, 0xAB92, 0xCCEE, 0xAB93, 0xCCEF, 0xAB94, 0xCCF1, 0xAB95, 0xCCF2, 0xAB96, 0xCCF3, 0xAB97, 0xCCF4, 0xAB98, 0xCCF5, + 0xAB99, 0xCCF6, 0xAB9A, 0xCCF7, 0xAB9B, 0xCCF8, 0xAB9C, 0xCCF9, 0xAB9D, 0xCCFA, 0xAB9E, 0xCCFB, 0xAB9F, 0xCCFC, 0xABA0, 0xCCFD, + 0xABA1, 0x30A1, 0xABA2, 0x30A2, 0xABA3, 0x30A3, 0xABA4, 0x30A4, 0xABA5, 0x30A5, 0xABA6, 0x30A6, 0xABA7, 0x30A7, 0xABA8, 0x30A8, + 0xABA9, 0x30A9, 0xABAA, 0x30AA, 0xABAB, 0x30AB, 0xABAC, 0x30AC, 0xABAD, 0x30AD, 0xABAE, 0x30AE, 0xABAF, 0x30AF, 0xABB0, 0x30B0, + 0xABB1, 0x30B1, 0xABB2, 0x30B2, 0xABB3, 0x30B3, 0xABB4, 0x30B4, 0xABB5, 0x30B5, 0xABB6, 0x30B6, 0xABB7, 0x30B7, 0xABB8, 0x30B8, + 0xABB9, 0x30B9, 0xABBA, 0x30BA, 0xABBB, 0x30BB, 0xABBC, 0x30BC, 0xABBD, 0x30BD, 0xABBE, 0x30BE, 0xABBF, 0x30BF, 0xABC0, 0x30C0, + 0xABC1, 0x30C1, 0xABC2, 0x30C2, 0xABC3, 0x30C3, 0xABC4, 0x30C4, 0xABC5, 0x30C5, 0xABC6, 0x30C6, 0xABC7, 0x30C7, 0xABC8, 0x30C8, + 0xABC9, 0x30C9, 0xABCA, 0x30CA, 0xABCB, 0x30CB, 0xABCC, 0x30CC, 0xABCD, 0x30CD, 0xABCE, 0x30CE, 0xABCF, 0x30CF, 0xABD0, 0x30D0, + 0xABD1, 0x30D1, 0xABD2, 0x30D2, 0xABD3, 0x30D3, 0xABD4, 0x30D4, 0xABD5, 0x30D5, 0xABD6, 0x30D6, 0xABD7, 0x30D7, 0xABD8, 0x30D8, + 0xABD9, 0x30D9, 0xABDA, 0x30DA, 0xABDB, 0x30DB, 0xABDC, 0x30DC, 0xABDD, 0x30DD, 0xABDE, 0x30DE, 0xABDF, 0x30DF, 0xABE0, 0x30E0, + 0xABE1, 0x30E1, 0xABE2, 0x30E2, 0xABE3, 0x30E3, 0xABE4, 0x30E4, 0xABE5, 0x30E5, 0xABE6, 0x30E6, 0xABE7, 0x30E7, 0xABE8, 0x30E8, + 0xABE9, 0x30E9, 0xABEA, 0x30EA, 0xABEB, 0x30EB, 0xABEC, 0x30EC, 0xABED, 0x30ED, 0xABEE, 0x30EE, 0xABEF, 0x30EF, 0xABF0, 0x30F0, + 0xABF1, 0x30F1, 0xABF2, 0x30F2, 0xABF3, 0x30F3, 0xABF4, 0x30F4, 0xABF5, 0x30F5, 0xABF6, 0x30F6, 0xAC41, 0xCCFE, 0xAC42, 0xCCFF, + 0xAC43, 0xCD00, 0xAC44, 0xCD02, 0xAC45, 0xCD03, 0xAC46, 0xCD04, 0xAC47, 0xCD05, 0xAC48, 0xCD06, 0xAC49, 0xCD07, 0xAC4A, 0xCD0A, + 0xAC4B, 0xCD0B, 0xAC4C, 0xCD0D, 0xAC4D, 0xCD0E, 0xAC4E, 0xCD0F, 0xAC4F, 0xCD11, 0xAC50, 0xCD12, 0xAC51, 0xCD13, 0xAC52, 0xCD14, + 0xAC53, 0xCD15, 0xAC54, 0xCD16, 0xAC55, 0xCD17, 0xAC56, 0xCD1A, 0xAC57, 0xCD1C, 0xAC58, 0xCD1E, 0xAC59, 0xCD1F, 0xAC5A, 0xCD20, + 0xAC61, 0xCD21, 0xAC62, 0xCD22, 0xAC63, 0xCD23, 0xAC64, 0xCD25, 0xAC65, 0xCD26, 0xAC66, 0xCD27, 0xAC67, 0xCD29, 0xAC68, 0xCD2A, + 0xAC69, 0xCD2B, 0xAC6A, 0xCD2D, 0xAC6B, 0xCD2E, 0xAC6C, 0xCD2F, 0xAC6D, 0xCD30, 0xAC6E, 0xCD31, 0xAC6F, 0xCD32, 0xAC70, 0xCD33, + 0xAC71, 0xCD34, 0xAC72, 0xCD35, 0xAC73, 0xCD36, 0xAC74, 0xCD37, 0xAC75, 0xCD38, 0xAC76, 0xCD3A, 0xAC77, 0xCD3B, 0xAC78, 0xCD3C, + 0xAC79, 0xCD3D, 0xAC7A, 0xCD3E, 0xAC81, 0xCD3F, 0xAC82, 0xCD40, 0xAC83, 0xCD41, 0xAC84, 0xCD42, 0xAC85, 0xCD43, 0xAC86, 0xCD44, + 0xAC87, 0xCD45, 0xAC88, 0xCD46, 0xAC89, 0xCD47, 0xAC8A, 0xCD48, 0xAC8B, 0xCD49, 0xAC8C, 0xCD4A, 0xAC8D, 0xCD4B, 0xAC8E, 0xCD4C, + 0xAC8F, 0xCD4D, 0xAC90, 0xCD4E, 0xAC91, 0xCD4F, 0xAC92, 0xCD50, 0xAC93, 0xCD51, 0xAC94, 0xCD52, 0xAC95, 0xCD53, 0xAC96, 0xCD54, + 0xAC97, 0xCD55, 0xAC98, 0xCD56, 0xAC99, 0xCD57, 0xAC9A, 0xCD58, 0xAC9B, 0xCD59, 0xAC9C, 0xCD5A, 0xAC9D, 0xCD5B, 0xAC9E, 0xCD5D, + 0xAC9F, 0xCD5E, 0xACA0, 0xCD5F, 0xACA1, 0x0410, 0xACA2, 0x0411, 0xACA3, 0x0412, 0xACA4, 0x0413, 0xACA5, 0x0414, 0xACA6, 0x0415, + 0xACA7, 0x0401, 0xACA8, 0x0416, 0xACA9, 0x0417, 0xACAA, 0x0418, 0xACAB, 0x0419, 0xACAC, 0x041A, 0xACAD, 0x041B, 0xACAE, 0x041C, + 0xACAF, 0x041D, 0xACB0, 0x041E, 0xACB1, 0x041F, 0xACB2, 0x0420, 0xACB3, 0x0421, 0xACB4, 0x0422, 0xACB5, 0x0423, 0xACB6, 0x0424, + 0xACB7, 0x0425, 0xACB8, 0x0426, 0xACB9, 0x0427, 0xACBA, 0x0428, 0xACBB, 0x0429, 0xACBC, 0x042A, 0xACBD, 0x042B, 0xACBE, 0x042C, + 0xACBF, 0x042D, 0xACC0, 0x042E, 0xACC1, 0x042F, 0xACD1, 0x0430, 0xACD2, 0x0431, 0xACD3, 0x0432, 0xACD4, 0x0433, 0xACD5, 0x0434, + 0xACD6, 0x0435, 0xACD7, 0x0451, 0xACD8, 0x0436, 0xACD9, 0x0437, 0xACDA, 0x0438, 0xACDB, 0x0439, 0xACDC, 0x043A, 0xACDD, 0x043B, + 0xACDE, 0x043C, 0xACDF, 0x043D, 0xACE0, 0x043E, 0xACE1, 0x043F, 0xACE2, 0x0440, 0xACE3, 0x0441, 0xACE4, 0x0442, 0xACE5, 0x0443, + 0xACE6, 0x0444, 0xACE7, 0x0445, 0xACE8, 0x0446, 0xACE9, 0x0447, 0xACEA, 0x0448, 0xACEB, 0x0449, 0xACEC, 0x044A, 0xACED, 0x044B, + 0xACEE, 0x044C, 0xACEF, 0x044D, 0xACF0, 0x044E, 0xACF1, 0x044F, 0xAD41, 0xCD61, 0xAD42, 0xCD62, 0xAD43, 0xCD63, 0xAD44, 0xCD65, + 0xAD45, 0xCD66, 0xAD46, 0xCD67, 0xAD47, 0xCD68, 0xAD48, 0xCD69, 0xAD49, 0xCD6A, 0xAD4A, 0xCD6B, 0xAD4B, 0xCD6E, 0xAD4C, 0xCD70, + 0xAD4D, 0xCD72, 0xAD4E, 0xCD73, 0xAD4F, 0xCD74, 0xAD50, 0xCD75, 0xAD51, 0xCD76, 0xAD52, 0xCD77, 0xAD53, 0xCD79, 0xAD54, 0xCD7A, + 0xAD55, 0xCD7B, 0xAD56, 0xCD7C, 0xAD57, 0xCD7D, 0xAD58, 0xCD7E, 0xAD59, 0xCD7F, 0xAD5A, 0xCD80, 0xAD61, 0xCD81, 0xAD62, 0xCD82, + 0xAD63, 0xCD83, 0xAD64, 0xCD84, 0xAD65, 0xCD85, 0xAD66, 0xCD86, 0xAD67, 0xCD87, 0xAD68, 0xCD89, 0xAD69, 0xCD8A, 0xAD6A, 0xCD8B, + 0xAD6B, 0xCD8C, 0xAD6C, 0xCD8D, 0xAD6D, 0xCD8E, 0xAD6E, 0xCD8F, 0xAD6F, 0xCD90, 0xAD70, 0xCD91, 0xAD71, 0xCD92, 0xAD72, 0xCD93, + 0xAD73, 0xCD96, 0xAD74, 0xCD97, 0xAD75, 0xCD99, 0xAD76, 0xCD9A, 0xAD77, 0xCD9B, 0xAD78, 0xCD9D, 0xAD79, 0xCD9E, 0xAD7A, 0xCD9F, + 0xAD81, 0xCDA0, 0xAD82, 0xCDA1, 0xAD83, 0xCDA2, 0xAD84, 0xCDA3, 0xAD85, 0xCDA6, 0xAD86, 0xCDA8, 0xAD87, 0xCDAA, 0xAD88, 0xCDAB, + 0xAD89, 0xCDAC, 0xAD8A, 0xCDAD, 0xAD8B, 0xCDAE, 0xAD8C, 0xCDAF, 0xAD8D, 0xCDB1, 0xAD8E, 0xCDB2, 0xAD8F, 0xCDB3, 0xAD90, 0xCDB4, + 0xAD91, 0xCDB5, 0xAD92, 0xCDB6, 0xAD93, 0xCDB7, 0xAD94, 0xCDB8, 0xAD95, 0xCDB9, 0xAD96, 0xCDBA, 0xAD97, 0xCDBB, 0xAD98, 0xCDBC, + 0xAD99, 0xCDBD, 0xAD9A, 0xCDBE, 0xAD9B, 0xCDBF, 0xAD9C, 0xCDC0, 0xAD9D, 0xCDC1, 0xAD9E, 0xCDC2, 0xAD9F, 0xCDC3, 0xADA0, 0xCDC5, + 0xAE41, 0xCDC6, 0xAE42, 0xCDC7, 0xAE43, 0xCDC8, 0xAE44, 0xCDC9, 0xAE45, 0xCDCA, 0xAE46, 0xCDCB, 0xAE47, 0xCDCD, 0xAE48, 0xCDCE, + 0xAE49, 0xCDCF, 0xAE4A, 0xCDD1, 0xAE4B, 0xCDD2, 0xAE4C, 0xCDD3, 0xAE4D, 0xCDD4, 0xAE4E, 0xCDD5, 0xAE4F, 0xCDD6, 0xAE50, 0xCDD7, + 0xAE51, 0xCDD8, 0xAE52, 0xCDD9, 0xAE53, 0xCDDA, 0xAE54, 0xCDDB, 0xAE55, 0xCDDC, 0xAE56, 0xCDDD, 0xAE57, 0xCDDE, 0xAE58, 0xCDDF, + 0xAE59, 0xCDE0, 0xAE5A, 0xCDE1, 0xAE61, 0xCDE2, 0xAE62, 0xCDE3, 0xAE63, 0xCDE4, 0xAE64, 0xCDE5, 0xAE65, 0xCDE6, 0xAE66, 0xCDE7, + 0xAE67, 0xCDE9, 0xAE68, 0xCDEA, 0xAE69, 0xCDEB, 0xAE6A, 0xCDED, 0xAE6B, 0xCDEE, 0xAE6C, 0xCDEF, 0xAE6D, 0xCDF1, 0xAE6E, 0xCDF2, + 0xAE6F, 0xCDF3, 0xAE70, 0xCDF4, 0xAE71, 0xCDF5, 0xAE72, 0xCDF6, 0xAE73, 0xCDF7, 0xAE74, 0xCDFA, 0xAE75, 0xCDFC, 0xAE76, 0xCDFE, + 0xAE77, 0xCDFF, 0xAE78, 0xCE00, 0xAE79, 0xCE01, 0xAE7A, 0xCE02, 0xAE81, 0xCE03, 0xAE82, 0xCE05, 0xAE83, 0xCE06, 0xAE84, 0xCE07, + 0xAE85, 0xCE09, 0xAE86, 0xCE0A, 0xAE87, 0xCE0B, 0xAE88, 0xCE0D, 0xAE89, 0xCE0E, 0xAE8A, 0xCE0F, 0xAE8B, 0xCE10, 0xAE8C, 0xCE11, + 0xAE8D, 0xCE12, 0xAE8E, 0xCE13, 0xAE8F, 0xCE15, 0xAE90, 0xCE16, 0xAE91, 0xCE17, 0xAE92, 0xCE18, 0xAE93, 0xCE1A, 0xAE94, 0xCE1B, + 0xAE95, 0xCE1C, 0xAE96, 0xCE1D, 0xAE97, 0xCE1E, 0xAE98, 0xCE1F, 0xAE99, 0xCE22, 0xAE9A, 0xCE23, 0xAE9B, 0xCE25, 0xAE9C, 0xCE26, + 0xAE9D, 0xCE27, 0xAE9E, 0xCE29, 0xAE9F, 0xCE2A, 0xAEA0, 0xCE2B, 0xAF41, 0xCE2C, 0xAF42, 0xCE2D, 0xAF43, 0xCE2E, 0xAF44, 0xCE2F, + 0xAF45, 0xCE32, 0xAF46, 0xCE34, 0xAF47, 0xCE36, 0xAF48, 0xCE37, 0xAF49, 0xCE38, 0xAF4A, 0xCE39, 0xAF4B, 0xCE3A, 0xAF4C, 0xCE3B, + 0xAF4D, 0xCE3C, 0xAF4E, 0xCE3D, 0xAF4F, 0xCE3E, 0xAF50, 0xCE3F, 0xAF51, 0xCE40, 0xAF52, 0xCE41, 0xAF53, 0xCE42, 0xAF54, 0xCE43, + 0xAF55, 0xCE44, 0xAF56, 0xCE45, 0xAF57, 0xCE46, 0xAF58, 0xCE47, 0xAF59, 0xCE48, 0xAF5A, 0xCE49, 0xAF61, 0xCE4A, 0xAF62, 0xCE4B, + 0xAF63, 0xCE4C, 0xAF64, 0xCE4D, 0xAF65, 0xCE4E, 0xAF66, 0xCE4F, 0xAF67, 0xCE50, 0xAF68, 0xCE51, 0xAF69, 0xCE52, 0xAF6A, 0xCE53, + 0xAF6B, 0xCE54, 0xAF6C, 0xCE55, 0xAF6D, 0xCE56, 0xAF6E, 0xCE57, 0xAF6F, 0xCE5A, 0xAF70, 0xCE5B, 0xAF71, 0xCE5D, 0xAF72, 0xCE5E, + 0xAF73, 0xCE62, 0xAF74, 0xCE63, 0xAF75, 0xCE64, 0xAF76, 0xCE65, 0xAF77, 0xCE66, 0xAF78, 0xCE67, 0xAF79, 0xCE6A, 0xAF7A, 0xCE6C, + 0xAF81, 0xCE6E, 0xAF82, 0xCE6F, 0xAF83, 0xCE70, 0xAF84, 0xCE71, 0xAF85, 0xCE72, 0xAF86, 0xCE73, 0xAF87, 0xCE76, 0xAF88, 0xCE77, + 0xAF89, 0xCE79, 0xAF8A, 0xCE7A, 0xAF8B, 0xCE7B, 0xAF8C, 0xCE7D, 0xAF8D, 0xCE7E, 0xAF8E, 0xCE7F, 0xAF8F, 0xCE80, 0xAF90, 0xCE81, + 0xAF91, 0xCE82, 0xAF92, 0xCE83, 0xAF93, 0xCE86, 0xAF94, 0xCE88, 0xAF95, 0xCE8A, 0xAF96, 0xCE8B, 0xAF97, 0xCE8C, 0xAF98, 0xCE8D, + 0xAF99, 0xCE8E, 0xAF9A, 0xCE8F, 0xAF9B, 0xCE92, 0xAF9C, 0xCE93, 0xAF9D, 0xCE95, 0xAF9E, 0xCE96, 0xAF9F, 0xCE97, 0xAFA0, 0xCE99, + 0xB041, 0xCE9A, 0xB042, 0xCE9B, 0xB043, 0xCE9C, 0xB044, 0xCE9D, 0xB045, 0xCE9E, 0xB046, 0xCE9F, 0xB047, 0xCEA2, 0xB048, 0xCEA6, + 0xB049, 0xCEA7, 0xB04A, 0xCEA8, 0xB04B, 0xCEA9, 0xB04C, 0xCEAA, 0xB04D, 0xCEAB, 0xB04E, 0xCEAE, 0xB04F, 0xCEAF, 0xB050, 0xCEB0, + 0xB051, 0xCEB1, 0xB052, 0xCEB2, 0xB053, 0xCEB3, 0xB054, 0xCEB4, 0xB055, 0xCEB5, 0xB056, 0xCEB6, 0xB057, 0xCEB7, 0xB058, 0xCEB8, + 0xB059, 0xCEB9, 0xB05A, 0xCEBA, 0xB061, 0xCEBB, 0xB062, 0xCEBC, 0xB063, 0xCEBD, 0xB064, 0xCEBE, 0xB065, 0xCEBF, 0xB066, 0xCEC0, + 0xB067, 0xCEC2, 0xB068, 0xCEC3, 0xB069, 0xCEC4, 0xB06A, 0xCEC5, 0xB06B, 0xCEC6, 0xB06C, 0xCEC7, 0xB06D, 0xCEC8, 0xB06E, 0xCEC9, + 0xB06F, 0xCECA, 0xB070, 0xCECB, 0xB071, 0xCECC, 0xB072, 0xCECD, 0xB073, 0xCECE, 0xB074, 0xCECF, 0xB075, 0xCED0, 0xB076, 0xCED1, + 0xB077, 0xCED2, 0xB078, 0xCED3, 0xB079, 0xCED4, 0xB07A, 0xCED5, 0xB081, 0xCED6, 0xB082, 0xCED7, 0xB083, 0xCED8, 0xB084, 0xCED9, + 0xB085, 0xCEDA, 0xB086, 0xCEDB, 0xB087, 0xCEDC, 0xB088, 0xCEDD, 0xB089, 0xCEDE, 0xB08A, 0xCEDF, 0xB08B, 0xCEE0, 0xB08C, 0xCEE1, + 0xB08D, 0xCEE2, 0xB08E, 0xCEE3, 0xB08F, 0xCEE6, 0xB090, 0xCEE7, 0xB091, 0xCEE9, 0xB092, 0xCEEA, 0xB093, 0xCEED, 0xB094, 0xCEEE, + 0xB095, 0xCEEF, 0xB096, 0xCEF0, 0xB097, 0xCEF1, 0xB098, 0xCEF2, 0xB099, 0xCEF3, 0xB09A, 0xCEF6, 0xB09B, 0xCEFA, 0xB09C, 0xCEFB, + 0xB09D, 0xCEFC, 0xB09E, 0xCEFD, 0xB09F, 0xCEFE, 0xB0A0, 0xCEFF, 0xB0A1, 0xAC00, 0xB0A2, 0xAC01, 0xB0A3, 0xAC04, 0xB0A4, 0xAC07, + 0xB0A5, 0xAC08, 0xB0A6, 0xAC09, 0xB0A7, 0xAC0A, 0xB0A8, 0xAC10, 0xB0A9, 0xAC11, 0xB0AA, 0xAC12, 0xB0AB, 0xAC13, 0xB0AC, 0xAC14, + 0xB0AD, 0xAC15, 0xB0AE, 0xAC16, 0xB0AF, 0xAC17, 0xB0B0, 0xAC19, 0xB0B1, 0xAC1A, 0xB0B2, 0xAC1B, 0xB0B3, 0xAC1C, 0xB0B4, 0xAC1D, + 0xB0B5, 0xAC20, 0xB0B6, 0xAC24, 0xB0B7, 0xAC2C, 0xB0B8, 0xAC2D, 0xB0B9, 0xAC2F, 0xB0BA, 0xAC30, 0xB0BB, 0xAC31, 0xB0BC, 0xAC38, + 0xB0BD, 0xAC39, 0xB0BE, 0xAC3C, 0xB0BF, 0xAC40, 0xB0C0, 0xAC4B, 0xB0C1, 0xAC4D, 0xB0C2, 0xAC54, 0xB0C3, 0xAC58, 0xB0C4, 0xAC5C, + 0xB0C5, 0xAC70, 0xB0C6, 0xAC71, 0xB0C7, 0xAC74, 0xB0C8, 0xAC77, 0xB0C9, 0xAC78, 0xB0CA, 0xAC7A, 0xB0CB, 0xAC80, 0xB0CC, 0xAC81, + 0xB0CD, 0xAC83, 0xB0CE, 0xAC84, 0xB0CF, 0xAC85, 0xB0D0, 0xAC86, 0xB0D1, 0xAC89, 0xB0D2, 0xAC8A, 0xB0D3, 0xAC8B, 0xB0D4, 0xAC8C, + 0xB0D5, 0xAC90, 0xB0D6, 0xAC94, 0xB0D7, 0xAC9C, 0xB0D8, 0xAC9D, 0xB0D9, 0xAC9F, 0xB0DA, 0xACA0, 0xB0DB, 0xACA1, 0xB0DC, 0xACA8, + 0xB0DD, 0xACA9, 0xB0DE, 0xACAA, 0xB0DF, 0xACAC, 0xB0E0, 0xACAF, 0xB0E1, 0xACB0, 0xB0E2, 0xACB8, 0xB0E3, 0xACB9, 0xB0E4, 0xACBB, + 0xB0E5, 0xACBC, 0xB0E6, 0xACBD, 0xB0E7, 0xACC1, 0xB0E8, 0xACC4, 0xB0E9, 0xACC8, 0xB0EA, 0xACCC, 0xB0EB, 0xACD5, 0xB0EC, 0xACD7, + 0xB0ED, 0xACE0, 0xB0EE, 0xACE1, 0xB0EF, 0xACE4, 0xB0F0, 0xACE7, 0xB0F1, 0xACE8, 0xB0F2, 0xACEA, 0xB0F3, 0xACEC, 0xB0F4, 0xACEF, + 0xB0F5, 0xACF0, 0xB0F6, 0xACF1, 0xB0F7, 0xACF3, 0xB0F8, 0xACF5, 0xB0F9, 0xACF6, 0xB0FA, 0xACFC, 0xB0FB, 0xACFD, 0xB0FC, 0xAD00, + 0xB0FD, 0xAD04, 0xB0FE, 0xAD06, 0xB141, 0xCF02, 0xB142, 0xCF03, 0xB143, 0xCF05, 0xB144, 0xCF06, 0xB145, 0xCF07, 0xB146, 0xCF09, + 0xB147, 0xCF0A, 0xB148, 0xCF0B, 0xB149, 0xCF0C, 0xB14A, 0xCF0D, 0xB14B, 0xCF0E, 0xB14C, 0xCF0F, 0xB14D, 0xCF12, 0xB14E, 0xCF14, + 0xB14F, 0xCF16, 0xB150, 0xCF17, 0xB151, 0xCF18, 0xB152, 0xCF19, 0xB153, 0xCF1A, 0xB154, 0xCF1B, 0xB155, 0xCF1D, 0xB156, 0xCF1E, + 0xB157, 0xCF1F, 0xB158, 0xCF21, 0xB159, 0xCF22, 0xB15A, 0xCF23, 0xB161, 0xCF25, 0xB162, 0xCF26, 0xB163, 0xCF27, 0xB164, 0xCF28, + 0xB165, 0xCF29, 0xB166, 0xCF2A, 0xB167, 0xCF2B, 0xB168, 0xCF2E, 0xB169, 0xCF32, 0xB16A, 0xCF33, 0xB16B, 0xCF34, 0xB16C, 0xCF35, + 0xB16D, 0xCF36, 0xB16E, 0xCF37, 0xB16F, 0xCF39, 0xB170, 0xCF3A, 0xB171, 0xCF3B, 0xB172, 0xCF3C, 0xB173, 0xCF3D, 0xB174, 0xCF3E, + 0xB175, 0xCF3F, 0xB176, 0xCF40, 0xB177, 0xCF41, 0xB178, 0xCF42, 0xB179, 0xCF43, 0xB17A, 0xCF44, 0xB181, 0xCF45, 0xB182, 0xCF46, + 0xB183, 0xCF47, 0xB184, 0xCF48, 0xB185, 0xCF49, 0xB186, 0xCF4A, 0xB187, 0xCF4B, 0xB188, 0xCF4C, 0xB189, 0xCF4D, 0xB18A, 0xCF4E, + 0xB18B, 0xCF4F, 0xB18C, 0xCF50, 0xB18D, 0xCF51, 0xB18E, 0xCF52, 0xB18F, 0xCF53, 0xB190, 0xCF56, 0xB191, 0xCF57, 0xB192, 0xCF59, + 0xB193, 0xCF5A, 0xB194, 0xCF5B, 0xB195, 0xCF5D, 0xB196, 0xCF5E, 0xB197, 0xCF5F, 0xB198, 0xCF60, 0xB199, 0xCF61, 0xB19A, 0xCF62, + 0xB19B, 0xCF63, 0xB19C, 0xCF66, 0xB19D, 0xCF68, 0xB19E, 0xCF6A, 0xB19F, 0xCF6B, 0xB1A0, 0xCF6C, 0xB1A1, 0xAD0C, 0xB1A2, 0xAD0D, + 0xB1A3, 0xAD0F, 0xB1A4, 0xAD11, 0xB1A5, 0xAD18, 0xB1A6, 0xAD1C, 0xB1A7, 0xAD20, 0xB1A8, 0xAD29, 0xB1A9, 0xAD2C, 0xB1AA, 0xAD2D, + 0xB1AB, 0xAD34, 0xB1AC, 0xAD35, 0xB1AD, 0xAD38, 0xB1AE, 0xAD3C, 0xB1AF, 0xAD44, 0xB1B0, 0xAD45, 0xB1B1, 0xAD47, 0xB1B2, 0xAD49, + 0xB1B3, 0xAD50, 0xB1B4, 0xAD54, 0xB1B5, 0xAD58, 0xB1B6, 0xAD61, 0xB1B7, 0xAD63, 0xB1B8, 0xAD6C, 0xB1B9, 0xAD6D, 0xB1BA, 0xAD70, + 0xB1BB, 0xAD73, 0xB1BC, 0xAD74, 0xB1BD, 0xAD75, 0xB1BE, 0xAD76, 0xB1BF, 0xAD7B, 0xB1C0, 0xAD7C, 0xB1C1, 0xAD7D, 0xB1C2, 0xAD7F, + 0xB1C3, 0xAD81, 0xB1C4, 0xAD82, 0xB1C5, 0xAD88, 0xB1C6, 0xAD89, 0xB1C7, 0xAD8C, 0xB1C8, 0xAD90, 0xB1C9, 0xAD9C, 0xB1CA, 0xAD9D, + 0xB1CB, 0xADA4, 0xB1CC, 0xADB7, 0xB1CD, 0xADC0, 0xB1CE, 0xADC1, 0xB1CF, 0xADC4, 0xB1D0, 0xADC8, 0xB1D1, 0xADD0, 0xB1D2, 0xADD1, + 0xB1D3, 0xADD3, 0xB1D4, 0xADDC, 0xB1D5, 0xADE0, 0xB1D6, 0xADE4, 0xB1D7, 0xADF8, 0xB1D8, 0xADF9, 0xB1D9, 0xADFC, 0xB1DA, 0xADFF, + 0xB1DB, 0xAE00, 0xB1DC, 0xAE01, 0xB1DD, 0xAE08, 0xB1DE, 0xAE09, 0xB1DF, 0xAE0B, 0xB1E0, 0xAE0D, 0xB1E1, 0xAE14, 0xB1E2, 0xAE30, + 0xB1E3, 0xAE31, 0xB1E4, 0xAE34, 0xB1E5, 0xAE37, 0xB1E6, 0xAE38, 0xB1E7, 0xAE3A, 0xB1E8, 0xAE40, 0xB1E9, 0xAE41, 0xB1EA, 0xAE43, + 0xB1EB, 0xAE45, 0xB1EC, 0xAE46, 0xB1ED, 0xAE4A, 0xB1EE, 0xAE4C, 0xB1EF, 0xAE4D, 0xB1F0, 0xAE4E, 0xB1F1, 0xAE50, 0xB1F2, 0xAE54, + 0xB1F3, 0xAE56, 0xB1F4, 0xAE5C, 0xB1F5, 0xAE5D, 0xB1F6, 0xAE5F, 0xB1F7, 0xAE60, 0xB1F8, 0xAE61, 0xB1F9, 0xAE65, 0xB1FA, 0xAE68, + 0xB1FB, 0xAE69, 0xB1FC, 0xAE6C, 0xB1FD, 0xAE70, 0xB1FE, 0xAE78, 0xB241, 0xCF6D, 0xB242, 0xCF6E, 0xB243, 0xCF6F, 0xB244, 0xCF72, + 0xB245, 0xCF73, 0xB246, 0xCF75, 0xB247, 0xCF76, 0xB248, 0xCF77, 0xB249, 0xCF79, 0xB24A, 0xCF7A, 0xB24B, 0xCF7B, 0xB24C, 0xCF7C, + 0xB24D, 0xCF7D, 0xB24E, 0xCF7E, 0xB24F, 0xCF7F, 0xB250, 0xCF81, 0xB251, 0xCF82, 0xB252, 0xCF83, 0xB253, 0xCF84, 0xB254, 0xCF86, + 0xB255, 0xCF87, 0xB256, 0xCF88, 0xB257, 0xCF89, 0xB258, 0xCF8A, 0xB259, 0xCF8B, 0xB25A, 0xCF8D, 0xB261, 0xCF8E, 0xB262, 0xCF8F, + 0xB263, 0xCF90, 0xB264, 0xCF91, 0xB265, 0xCF92, 0xB266, 0xCF93, 0xB267, 0xCF94, 0xB268, 0xCF95, 0xB269, 0xCF96, 0xB26A, 0xCF97, + 0xB26B, 0xCF98, 0xB26C, 0xCF99, 0xB26D, 0xCF9A, 0xB26E, 0xCF9B, 0xB26F, 0xCF9C, 0xB270, 0xCF9D, 0xB271, 0xCF9E, 0xB272, 0xCF9F, + 0xB273, 0xCFA0, 0xB274, 0xCFA2, 0xB275, 0xCFA3, 0xB276, 0xCFA4, 0xB277, 0xCFA5, 0xB278, 0xCFA6, 0xB279, 0xCFA7, 0xB27A, 0xCFA9, + 0xB281, 0xCFAA, 0xB282, 0xCFAB, 0xB283, 0xCFAC, 0xB284, 0xCFAD, 0xB285, 0xCFAE, 0xB286, 0xCFAF, 0xB287, 0xCFB1, 0xB288, 0xCFB2, + 0xB289, 0xCFB3, 0xB28A, 0xCFB4, 0xB28B, 0xCFB5, 0xB28C, 0xCFB6, 0xB28D, 0xCFB7, 0xB28E, 0xCFB8, 0xB28F, 0xCFB9, 0xB290, 0xCFBA, + 0xB291, 0xCFBB, 0xB292, 0xCFBC, 0xB293, 0xCFBD, 0xB294, 0xCFBE, 0xB295, 0xCFBF, 0xB296, 0xCFC0, 0xB297, 0xCFC1, 0xB298, 0xCFC2, + 0xB299, 0xCFC3, 0xB29A, 0xCFC5, 0xB29B, 0xCFC6, 0xB29C, 0xCFC7, 0xB29D, 0xCFC8, 0xB29E, 0xCFC9, 0xB29F, 0xCFCA, 0xB2A0, 0xCFCB, + 0xB2A1, 0xAE79, 0xB2A2, 0xAE7B, 0xB2A3, 0xAE7C, 0xB2A4, 0xAE7D, 0xB2A5, 0xAE84, 0xB2A6, 0xAE85, 0xB2A7, 0xAE8C, 0xB2A8, 0xAEBC, + 0xB2A9, 0xAEBD, 0xB2AA, 0xAEBE, 0xB2AB, 0xAEC0, 0xB2AC, 0xAEC4, 0xB2AD, 0xAECC, 0xB2AE, 0xAECD, 0xB2AF, 0xAECF, 0xB2B0, 0xAED0, + 0xB2B1, 0xAED1, 0xB2B2, 0xAED8, 0xB2B3, 0xAED9, 0xB2B4, 0xAEDC, 0xB2B5, 0xAEE8, 0xB2B6, 0xAEEB, 0xB2B7, 0xAEED, 0xB2B8, 0xAEF4, + 0xB2B9, 0xAEF8, 0xB2BA, 0xAEFC, 0xB2BB, 0xAF07, 0xB2BC, 0xAF08, 0xB2BD, 0xAF0D, 0xB2BE, 0xAF10, 0xB2BF, 0xAF2C, 0xB2C0, 0xAF2D, + 0xB2C1, 0xAF30, 0xB2C2, 0xAF32, 0xB2C3, 0xAF34, 0xB2C4, 0xAF3C, 0xB2C5, 0xAF3D, 0xB2C6, 0xAF3F, 0xB2C7, 0xAF41, 0xB2C8, 0xAF42, + 0xB2C9, 0xAF43, 0xB2CA, 0xAF48, 0xB2CB, 0xAF49, 0xB2CC, 0xAF50, 0xB2CD, 0xAF5C, 0xB2CE, 0xAF5D, 0xB2CF, 0xAF64, 0xB2D0, 0xAF65, + 0xB2D1, 0xAF79, 0xB2D2, 0xAF80, 0xB2D3, 0xAF84, 0xB2D4, 0xAF88, 0xB2D5, 0xAF90, 0xB2D6, 0xAF91, 0xB2D7, 0xAF95, 0xB2D8, 0xAF9C, + 0xB2D9, 0xAFB8, 0xB2DA, 0xAFB9, 0xB2DB, 0xAFBC, 0xB2DC, 0xAFC0, 0xB2DD, 0xAFC7, 0xB2DE, 0xAFC8, 0xB2DF, 0xAFC9, 0xB2E0, 0xAFCB, + 0xB2E1, 0xAFCD, 0xB2E2, 0xAFCE, 0xB2E3, 0xAFD4, 0xB2E4, 0xAFDC, 0xB2E5, 0xAFE8, 0xB2E6, 0xAFE9, 0xB2E7, 0xAFF0, 0xB2E8, 0xAFF1, + 0xB2E9, 0xAFF4, 0xB2EA, 0xAFF8, 0xB2EB, 0xB000, 0xB2EC, 0xB001, 0xB2ED, 0xB004, 0xB2EE, 0xB00C, 0xB2EF, 0xB010, 0xB2F0, 0xB014, + 0xB2F1, 0xB01C, 0xB2F2, 0xB01D, 0xB2F3, 0xB028, 0xB2F4, 0xB044, 0xB2F5, 0xB045, 0xB2F6, 0xB048, 0xB2F7, 0xB04A, 0xB2F8, 0xB04C, + 0xB2F9, 0xB04E, 0xB2FA, 0xB053, 0xB2FB, 0xB054, 0xB2FC, 0xB055, 0xB2FD, 0xB057, 0xB2FE, 0xB059, 0xB341, 0xCFCC, 0xB342, 0xCFCD, + 0xB343, 0xCFCE, 0xB344, 0xCFCF, 0xB345, 0xCFD0, 0xB346, 0xCFD1, 0xB347, 0xCFD2, 0xB348, 0xCFD3, 0xB349, 0xCFD4, 0xB34A, 0xCFD5, + 0xB34B, 0xCFD6, 0xB34C, 0xCFD7, 0xB34D, 0xCFD8, 0xB34E, 0xCFD9, 0xB34F, 0xCFDA, 0xB350, 0xCFDB, 0xB351, 0xCFDC, 0xB352, 0xCFDD, + 0xB353, 0xCFDE, 0xB354, 0xCFDF, 0xB355, 0xCFE2, 0xB356, 0xCFE3, 0xB357, 0xCFE5, 0xB358, 0xCFE6, 0xB359, 0xCFE7, 0xB35A, 0xCFE9, + 0xB361, 0xCFEA, 0xB362, 0xCFEB, 0xB363, 0xCFEC, 0xB364, 0xCFED, 0xB365, 0xCFEE, 0xB366, 0xCFEF, 0xB367, 0xCFF2, 0xB368, 0xCFF4, + 0xB369, 0xCFF6, 0xB36A, 0xCFF7, 0xB36B, 0xCFF8, 0xB36C, 0xCFF9, 0xB36D, 0xCFFA, 0xB36E, 0xCFFB, 0xB36F, 0xCFFD, 0xB370, 0xCFFE, + 0xB371, 0xCFFF, 0xB372, 0xD001, 0xB373, 0xD002, 0xB374, 0xD003, 0xB375, 0xD005, 0xB376, 0xD006, 0xB377, 0xD007, 0xB378, 0xD008, + 0xB379, 0xD009, 0xB37A, 0xD00A, 0xB381, 0xD00B, 0xB382, 0xD00C, 0xB383, 0xD00D, 0xB384, 0xD00E, 0xB385, 0xD00F, 0xB386, 0xD010, + 0xB387, 0xD012, 0xB388, 0xD013, 0xB389, 0xD014, 0xB38A, 0xD015, 0xB38B, 0xD016, 0xB38C, 0xD017, 0xB38D, 0xD019, 0xB38E, 0xD01A, + 0xB38F, 0xD01B, 0xB390, 0xD01C, 0xB391, 0xD01D, 0xB392, 0xD01E, 0xB393, 0xD01F, 0xB394, 0xD020, 0xB395, 0xD021, 0xB396, 0xD022, + 0xB397, 0xD023, 0xB398, 0xD024, 0xB399, 0xD025, 0xB39A, 0xD026, 0xB39B, 0xD027, 0xB39C, 0xD028, 0xB39D, 0xD029, 0xB39E, 0xD02A, + 0xB39F, 0xD02B, 0xB3A0, 0xD02C, 0xB3A1, 0xB05D, 0xB3A2, 0xB07C, 0xB3A3, 0xB07D, 0xB3A4, 0xB080, 0xB3A5, 0xB084, 0xB3A6, 0xB08C, + 0xB3A7, 0xB08D, 0xB3A8, 0xB08F, 0xB3A9, 0xB091, 0xB3AA, 0xB098, 0xB3AB, 0xB099, 0xB3AC, 0xB09A, 0xB3AD, 0xB09C, 0xB3AE, 0xB09F, + 0xB3AF, 0xB0A0, 0xB3B0, 0xB0A1, 0xB3B1, 0xB0A2, 0xB3B2, 0xB0A8, 0xB3B3, 0xB0A9, 0xB3B4, 0xB0AB, 0xB3B5, 0xB0AC, 0xB3B6, 0xB0AD, + 0xB3B7, 0xB0AE, 0xB3B8, 0xB0AF, 0xB3B9, 0xB0B1, 0xB3BA, 0xB0B3, 0xB3BB, 0xB0B4, 0xB3BC, 0xB0B5, 0xB3BD, 0xB0B8, 0xB3BE, 0xB0BC, + 0xB3BF, 0xB0C4, 0xB3C0, 0xB0C5, 0xB3C1, 0xB0C7, 0xB3C2, 0xB0C8, 0xB3C3, 0xB0C9, 0xB3C4, 0xB0D0, 0xB3C5, 0xB0D1, 0xB3C6, 0xB0D4, + 0xB3C7, 0xB0D8, 0xB3C8, 0xB0E0, 0xB3C9, 0xB0E5, 0xB3CA, 0xB108, 0xB3CB, 0xB109, 0xB3CC, 0xB10B, 0xB3CD, 0xB10C, 0xB3CE, 0xB110, + 0xB3CF, 0xB112, 0xB3D0, 0xB113, 0xB3D1, 0xB118, 0xB3D2, 0xB119, 0xB3D3, 0xB11B, 0xB3D4, 0xB11C, 0xB3D5, 0xB11D, 0xB3D6, 0xB123, + 0xB3D7, 0xB124, 0xB3D8, 0xB125, 0xB3D9, 0xB128, 0xB3DA, 0xB12C, 0xB3DB, 0xB134, 0xB3DC, 0xB135, 0xB3DD, 0xB137, 0xB3DE, 0xB138, + 0xB3DF, 0xB139, 0xB3E0, 0xB140, 0xB3E1, 0xB141, 0xB3E2, 0xB144, 0xB3E3, 0xB148, 0xB3E4, 0xB150, 0xB3E5, 0xB151, 0xB3E6, 0xB154, + 0xB3E7, 0xB155, 0xB3E8, 0xB158, 0xB3E9, 0xB15C, 0xB3EA, 0xB160, 0xB3EB, 0xB178, 0xB3EC, 0xB179, 0xB3ED, 0xB17C, 0xB3EE, 0xB180, + 0xB3EF, 0xB182, 0xB3F0, 0xB188, 0xB3F1, 0xB189, 0xB3F2, 0xB18B, 0xB3F3, 0xB18D, 0xB3F4, 0xB192, 0xB3F5, 0xB193, 0xB3F6, 0xB194, + 0xB3F7, 0xB198, 0xB3F8, 0xB19C, 0xB3F9, 0xB1A8, 0xB3FA, 0xB1CC, 0xB3FB, 0xB1D0, 0xB3FC, 0xB1D4, 0xB3FD, 0xB1DC, 0xB3FE, 0xB1DD, + 0xB441, 0xD02E, 0xB442, 0xD02F, 0xB443, 0xD030, 0xB444, 0xD031, 0xB445, 0xD032, 0xB446, 0xD033, 0xB447, 0xD036, 0xB448, 0xD037, + 0xB449, 0xD039, 0xB44A, 0xD03A, 0xB44B, 0xD03B, 0xB44C, 0xD03D, 0xB44D, 0xD03E, 0xB44E, 0xD03F, 0xB44F, 0xD040, 0xB450, 0xD041, + 0xB451, 0xD042, 0xB452, 0xD043, 0xB453, 0xD046, 0xB454, 0xD048, 0xB455, 0xD04A, 0xB456, 0xD04B, 0xB457, 0xD04C, 0xB458, 0xD04D, + 0xB459, 0xD04E, 0xB45A, 0xD04F, 0xB461, 0xD051, 0xB462, 0xD052, 0xB463, 0xD053, 0xB464, 0xD055, 0xB465, 0xD056, 0xB466, 0xD057, + 0xB467, 0xD059, 0xB468, 0xD05A, 0xB469, 0xD05B, 0xB46A, 0xD05C, 0xB46B, 0xD05D, 0xB46C, 0xD05E, 0xB46D, 0xD05F, 0xB46E, 0xD061, + 0xB46F, 0xD062, 0xB470, 0xD063, 0xB471, 0xD064, 0xB472, 0xD065, 0xB473, 0xD066, 0xB474, 0xD067, 0xB475, 0xD068, 0xB476, 0xD069, + 0xB477, 0xD06A, 0xB478, 0xD06B, 0xB479, 0xD06E, 0xB47A, 0xD06F, 0xB481, 0xD071, 0xB482, 0xD072, 0xB483, 0xD073, 0xB484, 0xD075, + 0xB485, 0xD076, 0xB486, 0xD077, 0xB487, 0xD078, 0xB488, 0xD079, 0xB489, 0xD07A, 0xB48A, 0xD07B, 0xB48B, 0xD07E, 0xB48C, 0xD07F, + 0xB48D, 0xD080, 0xB48E, 0xD082, 0xB48F, 0xD083, 0xB490, 0xD084, 0xB491, 0xD085, 0xB492, 0xD086, 0xB493, 0xD087, 0xB494, 0xD088, + 0xB495, 0xD089, 0xB496, 0xD08A, 0xB497, 0xD08B, 0xB498, 0xD08C, 0xB499, 0xD08D, 0xB49A, 0xD08E, 0xB49B, 0xD08F, 0xB49C, 0xD090, + 0xB49D, 0xD091, 0xB49E, 0xD092, 0xB49F, 0xD093, 0xB4A0, 0xD094, 0xB4A1, 0xB1DF, 0xB4A2, 0xB1E8, 0xB4A3, 0xB1E9, 0xB4A4, 0xB1EC, + 0xB4A5, 0xB1F0, 0xB4A6, 0xB1F9, 0xB4A7, 0xB1FB, 0xB4A8, 0xB1FD, 0xB4A9, 0xB204, 0xB4AA, 0xB205, 0xB4AB, 0xB208, 0xB4AC, 0xB20B, + 0xB4AD, 0xB20C, 0xB4AE, 0xB214, 0xB4AF, 0xB215, 0xB4B0, 0xB217, 0xB4B1, 0xB219, 0xB4B2, 0xB220, 0xB4B3, 0xB234, 0xB4B4, 0xB23C, + 0xB4B5, 0xB258, 0xB4B6, 0xB25C, 0xB4B7, 0xB260, 0xB4B8, 0xB268, 0xB4B9, 0xB269, 0xB4BA, 0xB274, 0xB4BB, 0xB275, 0xB4BC, 0xB27C, + 0xB4BD, 0xB284, 0xB4BE, 0xB285, 0xB4BF, 0xB289, 0xB4C0, 0xB290, 0xB4C1, 0xB291, 0xB4C2, 0xB294, 0xB4C3, 0xB298, 0xB4C4, 0xB299, + 0xB4C5, 0xB29A, 0xB4C6, 0xB2A0, 0xB4C7, 0xB2A1, 0xB4C8, 0xB2A3, 0xB4C9, 0xB2A5, 0xB4CA, 0xB2A6, 0xB4CB, 0xB2AA, 0xB4CC, 0xB2AC, + 0xB4CD, 0xB2B0, 0xB4CE, 0xB2B4, 0xB4CF, 0xB2C8, 0xB4D0, 0xB2C9, 0xB4D1, 0xB2CC, 0xB4D2, 0xB2D0, 0xB4D3, 0xB2D2, 0xB4D4, 0xB2D8, + 0xB4D5, 0xB2D9, 0xB4D6, 0xB2DB, 0xB4D7, 0xB2DD, 0xB4D8, 0xB2E2, 0xB4D9, 0xB2E4, 0xB4DA, 0xB2E5, 0xB4DB, 0xB2E6, 0xB4DC, 0xB2E8, + 0xB4DD, 0xB2EB, 0xB4DE, 0xB2EC, 0xB4DF, 0xB2ED, 0xB4E0, 0xB2EE, 0xB4E1, 0xB2EF, 0xB4E2, 0xB2F3, 0xB4E3, 0xB2F4, 0xB4E4, 0xB2F5, + 0xB4E5, 0xB2F7, 0xB4E6, 0xB2F8, 0xB4E7, 0xB2F9, 0xB4E8, 0xB2FA, 0xB4E9, 0xB2FB, 0xB4EA, 0xB2FF, 0xB4EB, 0xB300, 0xB4EC, 0xB301, + 0xB4ED, 0xB304, 0xB4EE, 0xB308, 0xB4EF, 0xB310, 0xB4F0, 0xB311, 0xB4F1, 0xB313, 0xB4F2, 0xB314, 0xB4F3, 0xB315, 0xB4F4, 0xB31C, + 0xB4F5, 0xB354, 0xB4F6, 0xB355, 0xB4F7, 0xB356, 0xB4F8, 0xB358, 0xB4F9, 0xB35B, 0xB4FA, 0xB35C, 0xB4FB, 0xB35E, 0xB4FC, 0xB35F, + 0xB4FD, 0xB364, 0xB4FE, 0xB365, 0xB541, 0xD095, 0xB542, 0xD096, 0xB543, 0xD097, 0xB544, 0xD098, 0xB545, 0xD099, 0xB546, 0xD09A, + 0xB547, 0xD09B, 0xB548, 0xD09C, 0xB549, 0xD09D, 0xB54A, 0xD09E, 0xB54B, 0xD09F, 0xB54C, 0xD0A0, 0xB54D, 0xD0A1, 0xB54E, 0xD0A2, + 0xB54F, 0xD0A3, 0xB550, 0xD0A6, 0xB551, 0xD0A7, 0xB552, 0xD0A9, 0xB553, 0xD0AA, 0xB554, 0xD0AB, 0xB555, 0xD0AD, 0xB556, 0xD0AE, + 0xB557, 0xD0AF, 0xB558, 0xD0B0, 0xB559, 0xD0B1, 0xB55A, 0xD0B2, 0xB561, 0xD0B3, 0xB562, 0xD0B6, 0xB563, 0xD0B8, 0xB564, 0xD0BA, + 0xB565, 0xD0BB, 0xB566, 0xD0BC, 0xB567, 0xD0BD, 0xB568, 0xD0BE, 0xB569, 0xD0BF, 0xB56A, 0xD0C2, 0xB56B, 0xD0C3, 0xB56C, 0xD0C5, + 0xB56D, 0xD0C6, 0xB56E, 0xD0C7, 0xB56F, 0xD0CA, 0xB570, 0xD0CB, 0xB571, 0xD0CC, 0xB572, 0xD0CD, 0xB573, 0xD0CE, 0xB574, 0xD0CF, + 0xB575, 0xD0D2, 0xB576, 0xD0D6, 0xB577, 0xD0D7, 0xB578, 0xD0D8, 0xB579, 0xD0D9, 0xB57A, 0xD0DA, 0xB581, 0xD0DB, 0xB582, 0xD0DE, + 0xB583, 0xD0DF, 0xB584, 0xD0E1, 0xB585, 0xD0E2, 0xB586, 0xD0E3, 0xB587, 0xD0E5, 0xB588, 0xD0E6, 0xB589, 0xD0E7, 0xB58A, 0xD0E8, + 0xB58B, 0xD0E9, 0xB58C, 0xD0EA, 0xB58D, 0xD0EB, 0xB58E, 0xD0EE, 0xB58F, 0xD0F2, 0xB590, 0xD0F3, 0xB591, 0xD0F4, 0xB592, 0xD0F5, + 0xB593, 0xD0F6, 0xB594, 0xD0F7, 0xB595, 0xD0F9, 0xB596, 0xD0FA, 0xB597, 0xD0FB, 0xB598, 0xD0FC, 0xB599, 0xD0FD, 0xB59A, 0xD0FE, + 0xB59B, 0xD0FF, 0xB59C, 0xD100, 0xB59D, 0xD101, 0xB59E, 0xD102, 0xB59F, 0xD103, 0xB5A0, 0xD104, 0xB5A1, 0xB367, 0xB5A2, 0xB369, + 0xB5A3, 0xB36B, 0xB5A4, 0xB36E, 0xB5A5, 0xB370, 0xB5A6, 0xB371, 0xB5A7, 0xB374, 0xB5A8, 0xB378, 0xB5A9, 0xB380, 0xB5AA, 0xB381, + 0xB5AB, 0xB383, 0xB5AC, 0xB384, 0xB5AD, 0xB385, 0xB5AE, 0xB38C, 0xB5AF, 0xB390, 0xB5B0, 0xB394, 0xB5B1, 0xB3A0, 0xB5B2, 0xB3A1, + 0xB5B3, 0xB3A8, 0xB5B4, 0xB3AC, 0xB5B5, 0xB3C4, 0xB5B6, 0xB3C5, 0xB5B7, 0xB3C8, 0xB5B8, 0xB3CB, 0xB5B9, 0xB3CC, 0xB5BA, 0xB3CE, + 0xB5BB, 0xB3D0, 0xB5BC, 0xB3D4, 0xB5BD, 0xB3D5, 0xB5BE, 0xB3D7, 0xB5BF, 0xB3D9, 0xB5C0, 0xB3DB, 0xB5C1, 0xB3DD, 0xB5C2, 0xB3E0, + 0xB5C3, 0xB3E4, 0xB5C4, 0xB3E8, 0xB5C5, 0xB3FC, 0xB5C6, 0xB410, 0xB5C7, 0xB418, 0xB5C8, 0xB41C, 0xB5C9, 0xB420, 0xB5CA, 0xB428, + 0xB5CB, 0xB429, 0xB5CC, 0xB42B, 0xB5CD, 0xB434, 0xB5CE, 0xB450, 0xB5CF, 0xB451, 0xB5D0, 0xB454, 0xB5D1, 0xB458, 0xB5D2, 0xB460, + 0xB5D3, 0xB461, 0xB5D4, 0xB463, 0xB5D5, 0xB465, 0xB5D6, 0xB46C, 0xB5D7, 0xB480, 0xB5D8, 0xB488, 0xB5D9, 0xB49D, 0xB5DA, 0xB4A4, + 0xB5DB, 0xB4A8, 0xB5DC, 0xB4AC, 0xB5DD, 0xB4B5, 0xB5DE, 0xB4B7, 0xB5DF, 0xB4B9, 0xB5E0, 0xB4C0, 0xB5E1, 0xB4C4, 0xB5E2, 0xB4C8, + 0xB5E3, 0xB4D0, 0xB5E4, 0xB4D5, 0xB5E5, 0xB4DC, 0xB5E6, 0xB4DD, 0xB5E7, 0xB4E0, 0xB5E8, 0xB4E3, 0xB5E9, 0xB4E4, 0xB5EA, 0xB4E6, + 0xB5EB, 0xB4EC, 0xB5EC, 0xB4ED, 0xB5ED, 0xB4EF, 0xB5EE, 0xB4F1, 0xB5EF, 0xB4F8, 0xB5F0, 0xB514, 0xB5F1, 0xB515, 0xB5F2, 0xB518, + 0xB5F3, 0xB51B, 0xB5F4, 0xB51C, 0xB5F5, 0xB524, 0xB5F6, 0xB525, 0xB5F7, 0xB527, 0xB5F8, 0xB528, 0xB5F9, 0xB529, 0xB5FA, 0xB52A, + 0xB5FB, 0xB530, 0xB5FC, 0xB531, 0xB5FD, 0xB534, 0xB5FE, 0xB538, 0xB641, 0xD105, 0xB642, 0xD106, 0xB643, 0xD107, 0xB644, 0xD108, + 0xB645, 0xD109, 0xB646, 0xD10A, 0xB647, 0xD10B, 0xB648, 0xD10C, 0xB649, 0xD10E, 0xB64A, 0xD10F, 0xB64B, 0xD110, 0xB64C, 0xD111, + 0xB64D, 0xD112, 0xB64E, 0xD113, 0xB64F, 0xD114, 0xB650, 0xD115, 0xB651, 0xD116, 0xB652, 0xD117, 0xB653, 0xD118, 0xB654, 0xD119, + 0xB655, 0xD11A, 0xB656, 0xD11B, 0xB657, 0xD11C, 0xB658, 0xD11D, 0xB659, 0xD11E, 0xB65A, 0xD11F, 0xB661, 0xD120, 0xB662, 0xD121, + 0xB663, 0xD122, 0xB664, 0xD123, 0xB665, 0xD124, 0xB666, 0xD125, 0xB667, 0xD126, 0xB668, 0xD127, 0xB669, 0xD128, 0xB66A, 0xD129, + 0xB66B, 0xD12A, 0xB66C, 0xD12B, 0xB66D, 0xD12C, 0xB66E, 0xD12D, 0xB66F, 0xD12E, 0xB670, 0xD12F, 0xB671, 0xD132, 0xB672, 0xD133, + 0xB673, 0xD135, 0xB674, 0xD136, 0xB675, 0xD137, 0xB676, 0xD139, 0xB677, 0xD13B, 0xB678, 0xD13C, 0xB679, 0xD13D, 0xB67A, 0xD13E, + 0xB681, 0xD13F, 0xB682, 0xD142, 0xB683, 0xD146, 0xB684, 0xD147, 0xB685, 0xD148, 0xB686, 0xD149, 0xB687, 0xD14A, 0xB688, 0xD14B, + 0xB689, 0xD14E, 0xB68A, 0xD14F, 0xB68B, 0xD151, 0xB68C, 0xD152, 0xB68D, 0xD153, 0xB68E, 0xD155, 0xB68F, 0xD156, 0xB690, 0xD157, + 0xB691, 0xD158, 0xB692, 0xD159, 0xB693, 0xD15A, 0xB694, 0xD15B, 0xB695, 0xD15E, 0xB696, 0xD160, 0xB697, 0xD162, 0xB698, 0xD163, + 0xB699, 0xD164, 0xB69A, 0xD165, 0xB69B, 0xD166, 0xB69C, 0xD167, 0xB69D, 0xD169, 0xB69E, 0xD16A, 0xB69F, 0xD16B, 0xB6A0, 0xD16D, + 0xB6A1, 0xB540, 0xB6A2, 0xB541, 0xB6A3, 0xB543, 0xB6A4, 0xB544, 0xB6A5, 0xB545, 0xB6A6, 0xB54B, 0xB6A7, 0xB54C, 0xB6A8, 0xB54D, + 0xB6A9, 0xB550, 0xB6AA, 0xB554, 0xB6AB, 0xB55C, 0xB6AC, 0xB55D, 0xB6AD, 0xB55F, 0xB6AE, 0xB560, 0xB6AF, 0xB561, 0xB6B0, 0xB5A0, + 0xB6B1, 0xB5A1, 0xB6B2, 0xB5A4, 0xB6B3, 0xB5A8, 0xB6B4, 0xB5AA, 0xB6B5, 0xB5AB, 0xB6B6, 0xB5B0, 0xB6B7, 0xB5B1, 0xB6B8, 0xB5B3, + 0xB6B9, 0xB5B4, 0xB6BA, 0xB5B5, 0xB6BB, 0xB5BB, 0xB6BC, 0xB5BC, 0xB6BD, 0xB5BD, 0xB6BE, 0xB5C0, 0xB6BF, 0xB5C4, 0xB6C0, 0xB5CC, + 0xB6C1, 0xB5CD, 0xB6C2, 0xB5CF, 0xB6C3, 0xB5D0, 0xB6C4, 0xB5D1, 0xB6C5, 0xB5D8, 0xB6C6, 0xB5EC, 0xB6C7, 0xB610, 0xB6C8, 0xB611, + 0xB6C9, 0xB614, 0xB6CA, 0xB618, 0xB6CB, 0xB625, 0xB6CC, 0xB62C, 0xB6CD, 0xB634, 0xB6CE, 0xB648, 0xB6CF, 0xB664, 0xB6D0, 0xB668, + 0xB6D1, 0xB69C, 0xB6D2, 0xB69D, 0xB6D3, 0xB6A0, 0xB6D4, 0xB6A4, 0xB6D5, 0xB6AB, 0xB6D6, 0xB6AC, 0xB6D7, 0xB6B1, 0xB6D8, 0xB6D4, + 0xB6D9, 0xB6F0, 0xB6DA, 0xB6F4, 0xB6DB, 0xB6F8, 0xB6DC, 0xB700, 0xB6DD, 0xB701, 0xB6DE, 0xB705, 0xB6DF, 0xB728, 0xB6E0, 0xB729, + 0xB6E1, 0xB72C, 0xB6E2, 0xB72F, 0xB6E3, 0xB730, 0xB6E4, 0xB738, 0xB6E5, 0xB739, 0xB6E6, 0xB73B, 0xB6E7, 0xB744, 0xB6E8, 0xB748, + 0xB6E9, 0xB74C, 0xB6EA, 0xB754, 0xB6EB, 0xB755, 0xB6EC, 0xB760, 0xB6ED, 0xB764, 0xB6EE, 0xB768, 0xB6EF, 0xB770, 0xB6F0, 0xB771, + 0xB6F1, 0xB773, 0xB6F2, 0xB775, 0xB6F3, 0xB77C, 0xB6F4, 0xB77D, 0xB6F5, 0xB780, 0xB6F6, 0xB784, 0xB6F7, 0xB78C, 0xB6F8, 0xB78D, + 0xB6F9, 0xB78F, 0xB6FA, 0xB790, 0xB6FB, 0xB791, 0xB6FC, 0xB792, 0xB6FD, 0xB796, 0xB6FE, 0xB797, 0xB741, 0xD16E, 0xB742, 0xD16F, + 0xB743, 0xD170, 0xB744, 0xD171, 0xB745, 0xD172, 0xB746, 0xD173, 0xB747, 0xD174, 0xB748, 0xD175, 0xB749, 0xD176, 0xB74A, 0xD177, + 0xB74B, 0xD178, 0xB74C, 0xD179, 0xB74D, 0xD17A, 0xB74E, 0xD17B, 0xB74F, 0xD17D, 0xB750, 0xD17E, 0xB751, 0xD17F, 0xB752, 0xD180, + 0xB753, 0xD181, 0xB754, 0xD182, 0xB755, 0xD183, 0xB756, 0xD185, 0xB757, 0xD186, 0xB758, 0xD187, 0xB759, 0xD189, 0xB75A, 0xD18A, + 0xB761, 0xD18B, 0xB762, 0xD18C, 0xB763, 0xD18D, 0xB764, 0xD18E, 0xB765, 0xD18F, 0xB766, 0xD190, 0xB767, 0xD191, 0xB768, 0xD192, + 0xB769, 0xD193, 0xB76A, 0xD194, 0xB76B, 0xD195, 0xB76C, 0xD196, 0xB76D, 0xD197, 0xB76E, 0xD198, 0xB76F, 0xD199, 0xB770, 0xD19A, + 0xB771, 0xD19B, 0xB772, 0xD19C, 0xB773, 0xD19D, 0xB774, 0xD19E, 0xB775, 0xD19F, 0xB776, 0xD1A2, 0xB777, 0xD1A3, 0xB778, 0xD1A5, + 0xB779, 0xD1A6, 0xB77A, 0xD1A7, 0xB781, 0xD1A9, 0xB782, 0xD1AA, 0xB783, 0xD1AB, 0xB784, 0xD1AC, 0xB785, 0xD1AD, 0xB786, 0xD1AE, + 0xB787, 0xD1AF, 0xB788, 0xD1B2, 0xB789, 0xD1B4, 0xB78A, 0xD1B6, 0xB78B, 0xD1B7, 0xB78C, 0xD1B8, 0xB78D, 0xD1B9, 0xB78E, 0xD1BB, + 0xB78F, 0xD1BD, 0xB790, 0xD1BE, 0xB791, 0xD1BF, 0xB792, 0xD1C1, 0xB793, 0xD1C2, 0xB794, 0xD1C3, 0xB795, 0xD1C4, 0xB796, 0xD1C5, + 0xB797, 0xD1C6, 0xB798, 0xD1C7, 0xB799, 0xD1C8, 0xB79A, 0xD1C9, 0xB79B, 0xD1CA, 0xB79C, 0xD1CB, 0xB79D, 0xD1CC, 0xB79E, 0xD1CD, + 0xB79F, 0xD1CE, 0xB7A0, 0xD1CF, 0xB7A1, 0xB798, 0xB7A2, 0xB799, 0xB7A3, 0xB79C, 0xB7A4, 0xB7A0, 0xB7A5, 0xB7A8, 0xB7A6, 0xB7A9, + 0xB7A7, 0xB7AB, 0xB7A8, 0xB7AC, 0xB7A9, 0xB7AD, 0xB7AA, 0xB7B4, 0xB7AB, 0xB7B5, 0xB7AC, 0xB7B8, 0xB7AD, 0xB7C7, 0xB7AE, 0xB7C9, + 0xB7AF, 0xB7EC, 0xB7B0, 0xB7ED, 0xB7B1, 0xB7F0, 0xB7B2, 0xB7F4, 0xB7B3, 0xB7FC, 0xB7B4, 0xB7FD, 0xB7B5, 0xB7FF, 0xB7B6, 0xB800, + 0xB7B7, 0xB801, 0xB7B8, 0xB807, 0xB7B9, 0xB808, 0xB7BA, 0xB809, 0xB7BB, 0xB80C, 0xB7BC, 0xB810, 0xB7BD, 0xB818, 0xB7BE, 0xB819, + 0xB7BF, 0xB81B, 0xB7C0, 0xB81D, 0xB7C1, 0xB824, 0xB7C2, 0xB825, 0xB7C3, 0xB828, 0xB7C4, 0xB82C, 0xB7C5, 0xB834, 0xB7C6, 0xB835, + 0xB7C7, 0xB837, 0xB7C8, 0xB838, 0xB7C9, 0xB839, 0xB7CA, 0xB840, 0xB7CB, 0xB844, 0xB7CC, 0xB851, 0xB7CD, 0xB853, 0xB7CE, 0xB85C, + 0xB7CF, 0xB85D, 0xB7D0, 0xB860, 0xB7D1, 0xB864, 0xB7D2, 0xB86C, 0xB7D3, 0xB86D, 0xB7D4, 0xB86F, 0xB7D5, 0xB871, 0xB7D6, 0xB878, + 0xB7D7, 0xB87C, 0xB7D8, 0xB88D, 0xB7D9, 0xB8A8, 0xB7DA, 0xB8B0, 0xB7DB, 0xB8B4, 0xB7DC, 0xB8B8, 0xB7DD, 0xB8C0, 0xB7DE, 0xB8C1, + 0xB7DF, 0xB8C3, 0xB7E0, 0xB8C5, 0xB7E1, 0xB8CC, 0xB7E2, 0xB8D0, 0xB7E3, 0xB8D4, 0xB7E4, 0xB8DD, 0xB7E5, 0xB8DF, 0xB7E6, 0xB8E1, + 0xB7E7, 0xB8E8, 0xB7E8, 0xB8E9, 0xB7E9, 0xB8EC, 0xB7EA, 0xB8F0, 0xB7EB, 0xB8F8, 0xB7EC, 0xB8F9, 0xB7ED, 0xB8FB, 0xB7EE, 0xB8FD, + 0xB7EF, 0xB904, 0xB7F0, 0xB918, 0xB7F1, 0xB920, 0xB7F2, 0xB93C, 0xB7F3, 0xB93D, 0xB7F4, 0xB940, 0xB7F5, 0xB944, 0xB7F6, 0xB94C, + 0xB7F7, 0xB94F, 0xB7F8, 0xB951, 0xB7F9, 0xB958, 0xB7FA, 0xB959, 0xB7FB, 0xB95C, 0xB7FC, 0xB960, 0xB7FD, 0xB968, 0xB7FE, 0xB969, + 0xB841, 0xD1D0, 0xB842, 0xD1D1, 0xB843, 0xD1D2, 0xB844, 0xD1D3, 0xB845, 0xD1D4, 0xB846, 0xD1D5, 0xB847, 0xD1D6, 0xB848, 0xD1D7, + 0xB849, 0xD1D9, 0xB84A, 0xD1DA, 0xB84B, 0xD1DB, 0xB84C, 0xD1DC, 0xB84D, 0xD1DD, 0xB84E, 0xD1DE, 0xB84F, 0xD1DF, 0xB850, 0xD1E0, + 0xB851, 0xD1E1, 0xB852, 0xD1E2, 0xB853, 0xD1E3, 0xB854, 0xD1E4, 0xB855, 0xD1E5, 0xB856, 0xD1E6, 0xB857, 0xD1E7, 0xB858, 0xD1E8, + 0xB859, 0xD1E9, 0xB85A, 0xD1EA, 0xB861, 0xD1EB, 0xB862, 0xD1EC, 0xB863, 0xD1ED, 0xB864, 0xD1EE, 0xB865, 0xD1EF, 0xB866, 0xD1F0, + 0xB867, 0xD1F1, 0xB868, 0xD1F2, 0xB869, 0xD1F3, 0xB86A, 0xD1F5, 0xB86B, 0xD1F6, 0xB86C, 0xD1F7, 0xB86D, 0xD1F9, 0xB86E, 0xD1FA, + 0xB86F, 0xD1FB, 0xB870, 0xD1FC, 0xB871, 0xD1FD, 0xB872, 0xD1FE, 0xB873, 0xD1FF, 0xB874, 0xD200, 0xB875, 0xD201, 0xB876, 0xD202, + 0xB877, 0xD203, 0xB878, 0xD204, 0xB879, 0xD205, 0xB87A, 0xD206, 0xB881, 0xD208, 0xB882, 0xD20A, 0xB883, 0xD20B, 0xB884, 0xD20C, + 0xB885, 0xD20D, 0xB886, 0xD20E, 0xB887, 0xD20F, 0xB888, 0xD211, 0xB889, 0xD212, 0xB88A, 0xD213, 0xB88B, 0xD214, 0xB88C, 0xD215, + 0xB88D, 0xD216, 0xB88E, 0xD217, 0xB88F, 0xD218, 0xB890, 0xD219, 0xB891, 0xD21A, 0xB892, 0xD21B, 0xB893, 0xD21C, 0xB894, 0xD21D, + 0xB895, 0xD21E, 0xB896, 0xD21F, 0xB897, 0xD220, 0xB898, 0xD221, 0xB899, 0xD222, 0xB89A, 0xD223, 0xB89B, 0xD224, 0xB89C, 0xD225, + 0xB89D, 0xD226, 0xB89E, 0xD227, 0xB89F, 0xD228, 0xB8A0, 0xD229, 0xB8A1, 0xB96B, 0xB8A2, 0xB96D, 0xB8A3, 0xB974, 0xB8A4, 0xB975, + 0xB8A5, 0xB978, 0xB8A6, 0xB97C, 0xB8A7, 0xB984, 0xB8A8, 0xB985, 0xB8A9, 0xB987, 0xB8AA, 0xB989, 0xB8AB, 0xB98A, 0xB8AC, 0xB98D, + 0xB8AD, 0xB98E, 0xB8AE, 0xB9AC, 0xB8AF, 0xB9AD, 0xB8B0, 0xB9B0, 0xB8B1, 0xB9B4, 0xB8B2, 0xB9BC, 0xB8B3, 0xB9BD, 0xB8B4, 0xB9BF, + 0xB8B5, 0xB9C1, 0xB8B6, 0xB9C8, 0xB8B7, 0xB9C9, 0xB8B8, 0xB9CC, 0xB8B9, 0xB9CE, 0xB8BA, 0xB9CF, 0xB8BB, 0xB9D0, 0xB8BC, 0xB9D1, + 0xB8BD, 0xB9D2, 0xB8BE, 0xB9D8, 0xB8BF, 0xB9D9, 0xB8C0, 0xB9DB, 0xB8C1, 0xB9DD, 0xB8C2, 0xB9DE, 0xB8C3, 0xB9E1, 0xB8C4, 0xB9E3, + 0xB8C5, 0xB9E4, 0xB8C6, 0xB9E5, 0xB8C7, 0xB9E8, 0xB8C8, 0xB9EC, 0xB8C9, 0xB9F4, 0xB8CA, 0xB9F5, 0xB8CB, 0xB9F7, 0xB8CC, 0xB9F8, + 0xB8CD, 0xB9F9, 0xB8CE, 0xB9FA, 0xB8CF, 0xBA00, 0xB8D0, 0xBA01, 0xB8D1, 0xBA08, 0xB8D2, 0xBA15, 0xB8D3, 0xBA38, 0xB8D4, 0xBA39, + 0xB8D5, 0xBA3C, 0xB8D6, 0xBA40, 0xB8D7, 0xBA42, 0xB8D8, 0xBA48, 0xB8D9, 0xBA49, 0xB8DA, 0xBA4B, 0xB8DB, 0xBA4D, 0xB8DC, 0xBA4E, + 0xB8DD, 0xBA53, 0xB8DE, 0xBA54, 0xB8DF, 0xBA55, 0xB8E0, 0xBA58, 0xB8E1, 0xBA5C, 0xB8E2, 0xBA64, 0xB8E3, 0xBA65, 0xB8E4, 0xBA67, + 0xB8E5, 0xBA68, 0xB8E6, 0xBA69, 0xB8E7, 0xBA70, 0xB8E8, 0xBA71, 0xB8E9, 0xBA74, 0xB8EA, 0xBA78, 0xB8EB, 0xBA83, 0xB8EC, 0xBA84, + 0xB8ED, 0xBA85, 0xB8EE, 0xBA87, 0xB8EF, 0xBA8C, 0xB8F0, 0xBAA8, 0xB8F1, 0xBAA9, 0xB8F2, 0xBAAB, 0xB8F3, 0xBAAC, 0xB8F4, 0xBAB0, + 0xB8F5, 0xBAB2, 0xB8F6, 0xBAB8, 0xB8F7, 0xBAB9, 0xB8F8, 0xBABB, 0xB8F9, 0xBABD, 0xB8FA, 0xBAC4, 0xB8FB, 0xBAC8, 0xB8FC, 0xBAD8, + 0xB8FD, 0xBAD9, 0xB8FE, 0xBAFC, 0xB941, 0xD22A, 0xB942, 0xD22B, 0xB943, 0xD22E, 0xB944, 0xD22F, 0xB945, 0xD231, 0xB946, 0xD232, + 0xB947, 0xD233, 0xB948, 0xD235, 0xB949, 0xD236, 0xB94A, 0xD237, 0xB94B, 0xD238, 0xB94C, 0xD239, 0xB94D, 0xD23A, 0xB94E, 0xD23B, + 0xB94F, 0xD23E, 0xB950, 0xD240, 0xB951, 0xD242, 0xB952, 0xD243, 0xB953, 0xD244, 0xB954, 0xD245, 0xB955, 0xD246, 0xB956, 0xD247, + 0xB957, 0xD249, 0xB958, 0xD24A, 0xB959, 0xD24B, 0xB95A, 0xD24C, 0xB961, 0xD24D, 0xB962, 0xD24E, 0xB963, 0xD24F, 0xB964, 0xD250, + 0xB965, 0xD251, 0xB966, 0xD252, 0xB967, 0xD253, 0xB968, 0xD254, 0xB969, 0xD255, 0xB96A, 0xD256, 0xB96B, 0xD257, 0xB96C, 0xD258, + 0xB96D, 0xD259, 0xB96E, 0xD25A, 0xB96F, 0xD25B, 0xB970, 0xD25D, 0xB971, 0xD25E, 0xB972, 0xD25F, 0xB973, 0xD260, 0xB974, 0xD261, + 0xB975, 0xD262, 0xB976, 0xD263, 0xB977, 0xD265, 0xB978, 0xD266, 0xB979, 0xD267, 0xB97A, 0xD268, 0xB981, 0xD269, 0xB982, 0xD26A, + 0xB983, 0xD26B, 0xB984, 0xD26C, 0xB985, 0xD26D, 0xB986, 0xD26E, 0xB987, 0xD26F, 0xB988, 0xD270, 0xB989, 0xD271, 0xB98A, 0xD272, + 0xB98B, 0xD273, 0xB98C, 0xD274, 0xB98D, 0xD275, 0xB98E, 0xD276, 0xB98F, 0xD277, 0xB990, 0xD278, 0xB991, 0xD279, 0xB992, 0xD27A, + 0xB993, 0xD27B, 0xB994, 0xD27C, 0xB995, 0xD27D, 0xB996, 0xD27E, 0xB997, 0xD27F, 0xB998, 0xD282, 0xB999, 0xD283, 0xB99A, 0xD285, + 0xB99B, 0xD286, 0xB99C, 0xD287, 0xB99D, 0xD289, 0xB99E, 0xD28A, 0xB99F, 0xD28B, 0xB9A0, 0xD28C, 0xB9A1, 0xBB00, 0xB9A2, 0xBB04, + 0xB9A3, 0xBB0D, 0xB9A4, 0xBB0F, 0xB9A5, 0xBB11, 0xB9A6, 0xBB18, 0xB9A7, 0xBB1C, 0xB9A8, 0xBB20, 0xB9A9, 0xBB29, 0xB9AA, 0xBB2B, + 0xB9AB, 0xBB34, 0xB9AC, 0xBB35, 0xB9AD, 0xBB36, 0xB9AE, 0xBB38, 0xB9AF, 0xBB3B, 0xB9B0, 0xBB3C, 0xB9B1, 0xBB3D, 0xB9B2, 0xBB3E, + 0xB9B3, 0xBB44, 0xB9B4, 0xBB45, 0xB9B5, 0xBB47, 0xB9B6, 0xBB49, 0xB9B7, 0xBB4D, 0xB9B8, 0xBB4F, 0xB9B9, 0xBB50, 0xB9BA, 0xBB54, + 0xB9BB, 0xBB58, 0xB9BC, 0xBB61, 0xB9BD, 0xBB63, 0xB9BE, 0xBB6C, 0xB9BF, 0xBB88, 0xB9C0, 0xBB8C, 0xB9C1, 0xBB90, 0xB9C2, 0xBBA4, + 0xB9C3, 0xBBA8, 0xB9C4, 0xBBAC, 0xB9C5, 0xBBB4, 0xB9C6, 0xBBB7, 0xB9C7, 0xBBC0, 0xB9C8, 0xBBC4, 0xB9C9, 0xBBC8, 0xB9CA, 0xBBD0, + 0xB9CB, 0xBBD3, 0xB9CC, 0xBBF8, 0xB9CD, 0xBBF9, 0xB9CE, 0xBBFC, 0xB9CF, 0xBBFF, 0xB9D0, 0xBC00, 0xB9D1, 0xBC02, 0xB9D2, 0xBC08, + 0xB9D3, 0xBC09, 0xB9D4, 0xBC0B, 0xB9D5, 0xBC0C, 0xB9D6, 0xBC0D, 0xB9D7, 0xBC0F, 0xB9D8, 0xBC11, 0xB9D9, 0xBC14, 0xB9DA, 0xBC15, + 0xB9DB, 0xBC16, 0xB9DC, 0xBC17, 0xB9DD, 0xBC18, 0xB9DE, 0xBC1B, 0xB9DF, 0xBC1C, 0xB9E0, 0xBC1D, 0xB9E1, 0xBC1E, 0xB9E2, 0xBC1F, + 0xB9E3, 0xBC24, 0xB9E4, 0xBC25, 0xB9E5, 0xBC27, 0xB9E6, 0xBC29, 0xB9E7, 0xBC2D, 0xB9E8, 0xBC30, 0xB9E9, 0xBC31, 0xB9EA, 0xBC34, + 0xB9EB, 0xBC38, 0xB9EC, 0xBC40, 0xB9ED, 0xBC41, 0xB9EE, 0xBC43, 0xB9EF, 0xBC44, 0xB9F0, 0xBC45, 0xB9F1, 0xBC49, 0xB9F2, 0xBC4C, + 0xB9F3, 0xBC4D, 0xB9F4, 0xBC50, 0xB9F5, 0xBC5D, 0xB9F6, 0xBC84, 0xB9F7, 0xBC85, 0xB9F8, 0xBC88, 0xB9F9, 0xBC8B, 0xB9FA, 0xBC8C, + 0xB9FB, 0xBC8E, 0xB9FC, 0xBC94, 0xB9FD, 0xBC95, 0xB9FE, 0xBC97, 0xBA41, 0xD28D, 0xBA42, 0xD28E, 0xBA43, 0xD28F, 0xBA44, 0xD292, + 0xBA45, 0xD293, 0xBA46, 0xD294, 0xBA47, 0xD296, 0xBA48, 0xD297, 0xBA49, 0xD298, 0xBA4A, 0xD299, 0xBA4B, 0xD29A, 0xBA4C, 0xD29B, + 0xBA4D, 0xD29D, 0xBA4E, 0xD29E, 0xBA4F, 0xD29F, 0xBA50, 0xD2A1, 0xBA51, 0xD2A2, 0xBA52, 0xD2A3, 0xBA53, 0xD2A5, 0xBA54, 0xD2A6, + 0xBA55, 0xD2A7, 0xBA56, 0xD2A8, 0xBA57, 0xD2A9, 0xBA58, 0xD2AA, 0xBA59, 0xD2AB, 0xBA5A, 0xD2AD, 0xBA61, 0xD2AE, 0xBA62, 0xD2AF, + 0xBA63, 0xD2B0, 0xBA64, 0xD2B2, 0xBA65, 0xD2B3, 0xBA66, 0xD2B4, 0xBA67, 0xD2B5, 0xBA68, 0xD2B6, 0xBA69, 0xD2B7, 0xBA6A, 0xD2BA, + 0xBA6B, 0xD2BB, 0xBA6C, 0xD2BD, 0xBA6D, 0xD2BE, 0xBA6E, 0xD2C1, 0xBA6F, 0xD2C3, 0xBA70, 0xD2C4, 0xBA71, 0xD2C5, 0xBA72, 0xD2C6, + 0xBA73, 0xD2C7, 0xBA74, 0xD2CA, 0xBA75, 0xD2CC, 0xBA76, 0xD2CD, 0xBA77, 0xD2CE, 0xBA78, 0xD2CF, 0xBA79, 0xD2D0, 0xBA7A, 0xD2D1, + 0xBA81, 0xD2D2, 0xBA82, 0xD2D3, 0xBA83, 0xD2D5, 0xBA84, 0xD2D6, 0xBA85, 0xD2D7, 0xBA86, 0xD2D9, 0xBA87, 0xD2DA, 0xBA88, 0xD2DB, + 0xBA89, 0xD2DD, 0xBA8A, 0xD2DE, 0xBA8B, 0xD2DF, 0xBA8C, 0xD2E0, 0xBA8D, 0xD2E1, 0xBA8E, 0xD2E2, 0xBA8F, 0xD2E3, 0xBA90, 0xD2E6, + 0xBA91, 0xD2E7, 0xBA92, 0xD2E8, 0xBA93, 0xD2E9, 0xBA94, 0xD2EA, 0xBA95, 0xD2EB, 0xBA96, 0xD2EC, 0xBA97, 0xD2ED, 0xBA98, 0xD2EE, + 0xBA99, 0xD2EF, 0xBA9A, 0xD2F2, 0xBA9B, 0xD2F3, 0xBA9C, 0xD2F5, 0xBA9D, 0xD2F6, 0xBA9E, 0xD2F7, 0xBA9F, 0xD2F9, 0xBAA0, 0xD2FA, + 0xBAA1, 0xBC99, 0xBAA2, 0xBC9A, 0xBAA3, 0xBCA0, 0xBAA4, 0xBCA1, 0xBAA5, 0xBCA4, 0xBAA6, 0xBCA7, 0xBAA7, 0xBCA8, 0xBAA8, 0xBCB0, + 0xBAA9, 0xBCB1, 0xBAAA, 0xBCB3, 0xBAAB, 0xBCB4, 0xBAAC, 0xBCB5, 0xBAAD, 0xBCBC, 0xBAAE, 0xBCBD, 0xBAAF, 0xBCC0, 0xBAB0, 0xBCC4, + 0xBAB1, 0xBCCD, 0xBAB2, 0xBCCF, 0xBAB3, 0xBCD0, 0xBAB4, 0xBCD1, 0xBAB5, 0xBCD5, 0xBAB6, 0xBCD8, 0xBAB7, 0xBCDC, 0xBAB8, 0xBCF4, + 0xBAB9, 0xBCF5, 0xBABA, 0xBCF6, 0xBABB, 0xBCF8, 0xBABC, 0xBCFC, 0xBABD, 0xBD04, 0xBABE, 0xBD05, 0xBABF, 0xBD07, 0xBAC0, 0xBD09, + 0xBAC1, 0xBD10, 0xBAC2, 0xBD14, 0xBAC3, 0xBD24, 0xBAC4, 0xBD2C, 0xBAC5, 0xBD40, 0xBAC6, 0xBD48, 0xBAC7, 0xBD49, 0xBAC8, 0xBD4C, + 0xBAC9, 0xBD50, 0xBACA, 0xBD58, 0xBACB, 0xBD59, 0xBACC, 0xBD64, 0xBACD, 0xBD68, 0xBACE, 0xBD80, 0xBACF, 0xBD81, 0xBAD0, 0xBD84, + 0xBAD1, 0xBD87, 0xBAD2, 0xBD88, 0xBAD3, 0xBD89, 0xBAD4, 0xBD8A, 0xBAD5, 0xBD90, 0xBAD6, 0xBD91, 0xBAD7, 0xBD93, 0xBAD8, 0xBD95, + 0xBAD9, 0xBD99, 0xBADA, 0xBD9A, 0xBADB, 0xBD9C, 0xBADC, 0xBDA4, 0xBADD, 0xBDB0, 0xBADE, 0xBDB8, 0xBADF, 0xBDD4, 0xBAE0, 0xBDD5, + 0xBAE1, 0xBDD8, 0xBAE2, 0xBDDC, 0xBAE3, 0xBDE9, 0xBAE4, 0xBDF0, 0xBAE5, 0xBDF4, 0xBAE6, 0xBDF8, 0xBAE7, 0xBE00, 0xBAE8, 0xBE03, + 0xBAE9, 0xBE05, 0xBAEA, 0xBE0C, 0xBAEB, 0xBE0D, 0xBAEC, 0xBE10, 0xBAED, 0xBE14, 0xBAEE, 0xBE1C, 0xBAEF, 0xBE1D, 0xBAF0, 0xBE1F, + 0xBAF1, 0xBE44, 0xBAF2, 0xBE45, 0xBAF3, 0xBE48, 0xBAF4, 0xBE4C, 0xBAF5, 0xBE4E, 0xBAF6, 0xBE54, 0xBAF7, 0xBE55, 0xBAF8, 0xBE57, + 0xBAF9, 0xBE59, 0xBAFA, 0xBE5A, 0xBAFB, 0xBE5B, 0xBAFC, 0xBE60, 0xBAFD, 0xBE61, 0xBAFE, 0xBE64, 0xBB41, 0xD2FB, 0xBB42, 0xD2FC, + 0xBB43, 0xD2FD, 0xBB44, 0xD2FE, 0xBB45, 0xD2FF, 0xBB46, 0xD302, 0xBB47, 0xD304, 0xBB48, 0xD306, 0xBB49, 0xD307, 0xBB4A, 0xD308, + 0xBB4B, 0xD309, 0xBB4C, 0xD30A, 0xBB4D, 0xD30B, 0xBB4E, 0xD30F, 0xBB4F, 0xD311, 0xBB50, 0xD312, 0xBB51, 0xD313, 0xBB52, 0xD315, + 0xBB53, 0xD317, 0xBB54, 0xD318, 0xBB55, 0xD319, 0xBB56, 0xD31A, 0xBB57, 0xD31B, 0xBB58, 0xD31E, 0xBB59, 0xD322, 0xBB5A, 0xD323, + 0xBB61, 0xD324, 0xBB62, 0xD326, 0xBB63, 0xD327, 0xBB64, 0xD32A, 0xBB65, 0xD32B, 0xBB66, 0xD32D, 0xBB67, 0xD32E, 0xBB68, 0xD32F, + 0xBB69, 0xD331, 0xBB6A, 0xD332, 0xBB6B, 0xD333, 0xBB6C, 0xD334, 0xBB6D, 0xD335, 0xBB6E, 0xD336, 0xBB6F, 0xD337, 0xBB70, 0xD33A, + 0xBB71, 0xD33E, 0xBB72, 0xD33F, 0xBB73, 0xD340, 0xBB74, 0xD341, 0xBB75, 0xD342, 0xBB76, 0xD343, 0xBB77, 0xD346, 0xBB78, 0xD347, + 0xBB79, 0xD348, 0xBB7A, 0xD349, 0xBB81, 0xD34A, 0xBB82, 0xD34B, 0xBB83, 0xD34C, 0xBB84, 0xD34D, 0xBB85, 0xD34E, 0xBB86, 0xD34F, + 0xBB87, 0xD350, 0xBB88, 0xD351, 0xBB89, 0xD352, 0xBB8A, 0xD353, 0xBB8B, 0xD354, 0xBB8C, 0xD355, 0xBB8D, 0xD356, 0xBB8E, 0xD357, + 0xBB8F, 0xD358, 0xBB90, 0xD359, 0xBB91, 0xD35A, 0xBB92, 0xD35B, 0xBB93, 0xD35C, 0xBB94, 0xD35D, 0xBB95, 0xD35E, 0xBB96, 0xD35F, + 0xBB97, 0xD360, 0xBB98, 0xD361, 0xBB99, 0xD362, 0xBB9A, 0xD363, 0xBB9B, 0xD364, 0xBB9C, 0xD365, 0xBB9D, 0xD366, 0xBB9E, 0xD367, + 0xBB9F, 0xD368, 0xBBA0, 0xD369, 0xBBA1, 0xBE68, 0xBBA2, 0xBE6A, 0xBBA3, 0xBE70, 0xBBA4, 0xBE71, 0xBBA5, 0xBE73, 0xBBA6, 0xBE74, + 0xBBA7, 0xBE75, 0xBBA8, 0xBE7B, 0xBBA9, 0xBE7C, 0xBBAA, 0xBE7D, 0xBBAB, 0xBE80, 0xBBAC, 0xBE84, 0xBBAD, 0xBE8C, 0xBBAE, 0xBE8D, + 0xBBAF, 0xBE8F, 0xBBB0, 0xBE90, 0xBBB1, 0xBE91, 0xBBB2, 0xBE98, 0xBBB3, 0xBE99, 0xBBB4, 0xBEA8, 0xBBB5, 0xBED0, 0xBBB6, 0xBED1, + 0xBBB7, 0xBED4, 0xBBB8, 0xBED7, 0xBBB9, 0xBED8, 0xBBBA, 0xBEE0, 0xBBBB, 0xBEE3, 0xBBBC, 0xBEE4, 0xBBBD, 0xBEE5, 0xBBBE, 0xBEEC, + 0xBBBF, 0xBF01, 0xBBC0, 0xBF08, 0xBBC1, 0xBF09, 0xBBC2, 0xBF18, 0xBBC3, 0xBF19, 0xBBC4, 0xBF1B, 0xBBC5, 0xBF1C, 0xBBC6, 0xBF1D, + 0xBBC7, 0xBF40, 0xBBC8, 0xBF41, 0xBBC9, 0xBF44, 0xBBCA, 0xBF48, 0xBBCB, 0xBF50, 0xBBCC, 0xBF51, 0xBBCD, 0xBF55, 0xBBCE, 0xBF94, + 0xBBCF, 0xBFB0, 0xBBD0, 0xBFC5, 0xBBD1, 0xBFCC, 0xBBD2, 0xBFCD, 0xBBD3, 0xBFD0, 0xBBD4, 0xBFD4, 0xBBD5, 0xBFDC, 0xBBD6, 0xBFDF, + 0xBBD7, 0xBFE1, 0xBBD8, 0xC03C, 0xBBD9, 0xC051, 0xBBDA, 0xC058, 0xBBDB, 0xC05C, 0xBBDC, 0xC060, 0xBBDD, 0xC068, 0xBBDE, 0xC069, + 0xBBDF, 0xC090, 0xBBE0, 0xC091, 0xBBE1, 0xC094, 0xBBE2, 0xC098, 0xBBE3, 0xC0A0, 0xBBE4, 0xC0A1, 0xBBE5, 0xC0A3, 0xBBE6, 0xC0A5, + 0xBBE7, 0xC0AC, 0xBBE8, 0xC0AD, 0xBBE9, 0xC0AF, 0xBBEA, 0xC0B0, 0xBBEB, 0xC0B3, 0xBBEC, 0xC0B4, 0xBBED, 0xC0B5, 0xBBEE, 0xC0B6, + 0xBBEF, 0xC0BC, 0xBBF0, 0xC0BD, 0xBBF1, 0xC0BF, 0xBBF2, 0xC0C0, 0xBBF3, 0xC0C1, 0xBBF4, 0xC0C5, 0xBBF5, 0xC0C8, 0xBBF6, 0xC0C9, + 0xBBF7, 0xC0CC, 0xBBF8, 0xC0D0, 0xBBF9, 0xC0D8, 0xBBFA, 0xC0D9, 0xBBFB, 0xC0DB, 0xBBFC, 0xC0DC, 0xBBFD, 0xC0DD, 0xBBFE, 0xC0E4, + 0xBC41, 0xD36A, 0xBC42, 0xD36B, 0xBC43, 0xD36C, 0xBC44, 0xD36D, 0xBC45, 0xD36E, 0xBC46, 0xD36F, 0xBC47, 0xD370, 0xBC48, 0xD371, + 0xBC49, 0xD372, 0xBC4A, 0xD373, 0xBC4B, 0xD374, 0xBC4C, 0xD375, 0xBC4D, 0xD376, 0xBC4E, 0xD377, 0xBC4F, 0xD378, 0xBC50, 0xD379, + 0xBC51, 0xD37A, 0xBC52, 0xD37B, 0xBC53, 0xD37E, 0xBC54, 0xD37F, 0xBC55, 0xD381, 0xBC56, 0xD382, 0xBC57, 0xD383, 0xBC58, 0xD385, + 0xBC59, 0xD386, 0xBC5A, 0xD387, 0xBC61, 0xD388, 0xBC62, 0xD389, 0xBC63, 0xD38A, 0xBC64, 0xD38B, 0xBC65, 0xD38E, 0xBC66, 0xD392, + 0xBC67, 0xD393, 0xBC68, 0xD394, 0xBC69, 0xD395, 0xBC6A, 0xD396, 0xBC6B, 0xD397, 0xBC6C, 0xD39A, 0xBC6D, 0xD39B, 0xBC6E, 0xD39D, + 0xBC6F, 0xD39E, 0xBC70, 0xD39F, 0xBC71, 0xD3A1, 0xBC72, 0xD3A2, 0xBC73, 0xD3A3, 0xBC74, 0xD3A4, 0xBC75, 0xD3A5, 0xBC76, 0xD3A6, + 0xBC77, 0xD3A7, 0xBC78, 0xD3AA, 0xBC79, 0xD3AC, 0xBC7A, 0xD3AE, 0xBC81, 0xD3AF, 0xBC82, 0xD3B0, 0xBC83, 0xD3B1, 0xBC84, 0xD3B2, + 0xBC85, 0xD3B3, 0xBC86, 0xD3B5, 0xBC87, 0xD3B6, 0xBC88, 0xD3B7, 0xBC89, 0xD3B9, 0xBC8A, 0xD3BA, 0xBC8B, 0xD3BB, 0xBC8C, 0xD3BD, + 0xBC8D, 0xD3BE, 0xBC8E, 0xD3BF, 0xBC8F, 0xD3C0, 0xBC90, 0xD3C1, 0xBC91, 0xD3C2, 0xBC92, 0xD3C3, 0xBC93, 0xD3C6, 0xBC94, 0xD3C7, + 0xBC95, 0xD3CA, 0xBC96, 0xD3CB, 0xBC97, 0xD3CC, 0xBC98, 0xD3CD, 0xBC99, 0xD3CE, 0xBC9A, 0xD3CF, 0xBC9B, 0xD3D1, 0xBC9C, 0xD3D2, + 0xBC9D, 0xD3D3, 0xBC9E, 0xD3D4, 0xBC9F, 0xD3D5, 0xBCA0, 0xD3D6, 0xBCA1, 0xC0E5, 0xBCA2, 0xC0E8, 0xBCA3, 0xC0EC, 0xBCA4, 0xC0F4, + 0xBCA5, 0xC0F5, 0xBCA6, 0xC0F7, 0xBCA7, 0xC0F9, 0xBCA8, 0xC100, 0xBCA9, 0xC104, 0xBCAA, 0xC108, 0xBCAB, 0xC110, 0xBCAC, 0xC115, + 0xBCAD, 0xC11C, 0xBCAE, 0xC11D, 0xBCAF, 0xC11E, 0xBCB0, 0xC11F, 0xBCB1, 0xC120, 0xBCB2, 0xC123, 0xBCB3, 0xC124, 0xBCB4, 0xC126, + 0xBCB5, 0xC127, 0xBCB6, 0xC12C, 0xBCB7, 0xC12D, 0xBCB8, 0xC12F, 0xBCB9, 0xC130, 0xBCBA, 0xC131, 0xBCBB, 0xC136, 0xBCBC, 0xC138, + 0xBCBD, 0xC139, 0xBCBE, 0xC13C, 0xBCBF, 0xC140, 0xBCC0, 0xC148, 0xBCC1, 0xC149, 0xBCC2, 0xC14B, 0xBCC3, 0xC14C, 0xBCC4, 0xC14D, + 0xBCC5, 0xC154, 0xBCC6, 0xC155, 0xBCC7, 0xC158, 0xBCC8, 0xC15C, 0xBCC9, 0xC164, 0xBCCA, 0xC165, 0xBCCB, 0xC167, 0xBCCC, 0xC168, + 0xBCCD, 0xC169, 0xBCCE, 0xC170, 0xBCCF, 0xC174, 0xBCD0, 0xC178, 0xBCD1, 0xC185, 0xBCD2, 0xC18C, 0xBCD3, 0xC18D, 0xBCD4, 0xC18E, + 0xBCD5, 0xC190, 0xBCD6, 0xC194, 0xBCD7, 0xC196, 0xBCD8, 0xC19C, 0xBCD9, 0xC19D, 0xBCDA, 0xC19F, 0xBCDB, 0xC1A1, 0xBCDC, 0xC1A5, + 0xBCDD, 0xC1A8, 0xBCDE, 0xC1A9, 0xBCDF, 0xC1AC, 0xBCE0, 0xC1B0, 0xBCE1, 0xC1BD, 0xBCE2, 0xC1C4, 0xBCE3, 0xC1C8, 0xBCE4, 0xC1CC, + 0xBCE5, 0xC1D4, 0xBCE6, 0xC1D7, 0xBCE7, 0xC1D8, 0xBCE8, 0xC1E0, 0xBCE9, 0xC1E4, 0xBCEA, 0xC1E8, 0xBCEB, 0xC1F0, 0xBCEC, 0xC1F1, + 0xBCED, 0xC1F3, 0xBCEE, 0xC1FC, 0xBCEF, 0xC1FD, 0xBCF0, 0xC200, 0xBCF1, 0xC204, 0xBCF2, 0xC20C, 0xBCF3, 0xC20D, 0xBCF4, 0xC20F, + 0xBCF5, 0xC211, 0xBCF6, 0xC218, 0xBCF7, 0xC219, 0xBCF8, 0xC21C, 0xBCF9, 0xC21F, 0xBCFA, 0xC220, 0xBCFB, 0xC228, 0xBCFC, 0xC229, + 0xBCFD, 0xC22B, 0xBCFE, 0xC22D, 0xBD41, 0xD3D7, 0xBD42, 0xD3D9, 0xBD43, 0xD3DA, 0xBD44, 0xD3DB, 0xBD45, 0xD3DC, 0xBD46, 0xD3DD, + 0xBD47, 0xD3DE, 0xBD48, 0xD3DF, 0xBD49, 0xD3E0, 0xBD4A, 0xD3E2, 0xBD4B, 0xD3E4, 0xBD4C, 0xD3E5, 0xBD4D, 0xD3E6, 0xBD4E, 0xD3E7, + 0xBD4F, 0xD3E8, 0xBD50, 0xD3E9, 0xBD51, 0xD3EA, 0xBD52, 0xD3EB, 0xBD53, 0xD3EE, 0xBD54, 0xD3EF, 0xBD55, 0xD3F1, 0xBD56, 0xD3F2, + 0xBD57, 0xD3F3, 0xBD58, 0xD3F5, 0xBD59, 0xD3F6, 0xBD5A, 0xD3F7, 0xBD61, 0xD3F8, 0xBD62, 0xD3F9, 0xBD63, 0xD3FA, 0xBD64, 0xD3FB, + 0xBD65, 0xD3FE, 0xBD66, 0xD400, 0xBD67, 0xD402, 0xBD68, 0xD403, 0xBD69, 0xD404, 0xBD6A, 0xD405, 0xBD6B, 0xD406, 0xBD6C, 0xD407, + 0xBD6D, 0xD409, 0xBD6E, 0xD40A, 0xBD6F, 0xD40B, 0xBD70, 0xD40C, 0xBD71, 0xD40D, 0xBD72, 0xD40E, 0xBD73, 0xD40F, 0xBD74, 0xD410, + 0xBD75, 0xD411, 0xBD76, 0xD412, 0xBD77, 0xD413, 0xBD78, 0xD414, 0xBD79, 0xD415, 0xBD7A, 0xD416, 0xBD81, 0xD417, 0xBD82, 0xD418, + 0xBD83, 0xD419, 0xBD84, 0xD41A, 0xBD85, 0xD41B, 0xBD86, 0xD41C, 0xBD87, 0xD41E, 0xBD88, 0xD41F, 0xBD89, 0xD420, 0xBD8A, 0xD421, + 0xBD8B, 0xD422, 0xBD8C, 0xD423, 0xBD8D, 0xD424, 0xBD8E, 0xD425, 0xBD8F, 0xD426, 0xBD90, 0xD427, 0xBD91, 0xD428, 0xBD92, 0xD429, + 0xBD93, 0xD42A, 0xBD94, 0xD42B, 0xBD95, 0xD42C, 0xBD96, 0xD42D, 0xBD97, 0xD42E, 0xBD98, 0xD42F, 0xBD99, 0xD430, 0xBD9A, 0xD431, + 0xBD9B, 0xD432, 0xBD9C, 0xD433, 0xBD9D, 0xD434, 0xBD9E, 0xD435, 0xBD9F, 0xD436, 0xBDA0, 0xD437, 0xBDA1, 0xC22F, 0xBDA2, 0xC231, + 0xBDA3, 0xC232, 0xBDA4, 0xC234, 0xBDA5, 0xC248, 0xBDA6, 0xC250, 0xBDA7, 0xC251, 0xBDA8, 0xC254, 0xBDA9, 0xC258, 0xBDAA, 0xC260, + 0xBDAB, 0xC265, 0xBDAC, 0xC26C, 0xBDAD, 0xC26D, 0xBDAE, 0xC270, 0xBDAF, 0xC274, 0xBDB0, 0xC27C, 0xBDB1, 0xC27D, 0xBDB2, 0xC27F, + 0xBDB3, 0xC281, 0xBDB4, 0xC288, 0xBDB5, 0xC289, 0xBDB6, 0xC290, 0xBDB7, 0xC298, 0xBDB8, 0xC29B, 0xBDB9, 0xC29D, 0xBDBA, 0xC2A4, + 0xBDBB, 0xC2A5, 0xBDBC, 0xC2A8, 0xBDBD, 0xC2AC, 0xBDBE, 0xC2AD, 0xBDBF, 0xC2B4, 0xBDC0, 0xC2B5, 0xBDC1, 0xC2B7, 0xBDC2, 0xC2B9, + 0xBDC3, 0xC2DC, 0xBDC4, 0xC2DD, 0xBDC5, 0xC2E0, 0xBDC6, 0xC2E3, 0xBDC7, 0xC2E4, 0xBDC8, 0xC2EB, 0xBDC9, 0xC2EC, 0xBDCA, 0xC2ED, + 0xBDCB, 0xC2EF, 0xBDCC, 0xC2F1, 0xBDCD, 0xC2F6, 0xBDCE, 0xC2F8, 0xBDCF, 0xC2F9, 0xBDD0, 0xC2FB, 0xBDD1, 0xC2FC, 0xBDD2, 0xC300, + 0xBDD3, 0xC308, 0xBDD4, 0xC309, 0xBDD5, 0xC30C, 0xBDD6, 0xC30D, 0xBDD7, 0xC313, 0xBDD8, 0xC314, 0xBDD9, 0xC315, 0xBDDA, 0xC318, + 0xBDDB, 0xC31C, 0xBDDC, 0xC324, 0xBDDD, 0xC325, 0xBDDE, 0xC328, 0xBDDF, 0xC329, 0xBDE0, 0xC345, 0xBDE1, 0xC368, 0xBDE2, 0xC369, + 0xBDE3, 0xC36C, 0xBDE4, 0xC370, 0xBDE5, 0xC372, 0xBDE6, 0xC378, 0xBDE7, 0xC379, 0xBDE8, 0xC37C, 0xBDE9, 0xC37D, 0xBDEA, 0xC384, + 0xBDEB, 0xC388, 0xBDEC, 0xC38C, 0xBDED, 0xC3C0, 0xBDEE, 0xC3D8, 0xBDEF, 0xC3D9, 0xBDF0, 0xC3DC, 0xBDF1, 0xC3DF, 0xBDF2, 0xC3E0, + 0xBDF3, 0xC3E2, 0xBDF4, 0xC3E8, 0xBDF5, 0xC3E9, 0xBDF6, 0xC3ED, 0xBDF7, 0xC3F4, 0xBDF8, 0xC3F5, 0xBDF9, 0xC3F8, 0xBDFA, 0xC408, + 0xBDFB, 0xC410, 0xBDFC, 0xC424, 0xBDFD, 0xC42C, 0xBDFE, 0xC430, 0xBE41, 0xD438, 0xBE42, 0xD439, 0xBE43, 0xD43A, 0xBE44, 0xD43B, + 0xBE45, 0xD43C, 0xBE46, 0xD43D, 0xBE47, 0xD43E, 0xBE48, 0xD43F, 0xBE49, 0xD441, 0xBE4A, 0xD442, 0xBE4B, 0xD443, 0xBE4C, 0xD445, + 0xBE4D, 0xD446, 0xBE4E, 0xD447, 0xBE4F, 0xD448, 0xBE50, 0xD449, 0xBE51, 0xD44A, 0xBE52, 0xD44B, 0xBE53, 0xD44C, 0xBE54, 0xD44D, + 0xBE55, 0xD44E, 0xBE56, 0xD44F, 0xBE57, 0xD450, 0xBE58, 0xD451, 0xBE59, 0xD452, 0xBE5A, 0xD453, 0xBE61, 0xD454, 0xBE62, 0xD455, + 0xBE63, 0xD456, 0xBE64, 0xD457, 0xBE65, 0xD458, 0xBE66, 0xD459, 0xBE67, 0xD45A, 0xBE68, 0xD45B, 0xBE69, 0xD45D, 0xBE6A, 0xD45E, + 0xBE6B, 0xD45F, 0xBE6C, 0xD461, 0xBE6D, 0xD462, 0xBE6E, 0xD463, 0xBE6F, 0xD465, 0xBE70, 0xD466, 0xBE71, 0xD467, 0xBE72, 0xD468, + 0xBE73, 0xD469, 0xBE74, 0xD46A, 0xBE75, 0xD46B, 0xBE76, 0xD46C, 0xBE77, 0xD46E, 0xBE78, 0xD470, 0xBE79, 0xD471, 0xBE7A, 0xD472, + 0xBE81, 0xD473, 0xBE82, 0xD474, 0xBE83, 0xD475, 0xBE84, 0xD476, 0xBE85, 0xD477, 0xBE86, 0xD47A, 0xBE87, 0xD47B, 0xBE88, 0xD47D, + 0xBE89, 0xD47E, 0xBE8A, 0xD481, 0xBE8B, 0xD483, 0xBE8C, 0xD484, 0xBE8D, 0xD485, 0xBE8E, 0xD486, 0xBE8F, 0xD487, 0xBE90, 0xD48A, + 0xBE91, 0xD48C, 0xBE92, 0xD48E, 0xBE93, 0xD48F, 0xBE94, 0xD490, 0xBE95, 0xD491, 0xBE96, 0xD492, 0xBE97, 0xD493, 0xBE98, 0xD495, + 0xBE99, 0xD496, 0xBE9A, 0xD497, 0xBE9B, 0xD498, 0xBE9C, 0xD499, 0xBE9D, 0xD49A, 0xBE9E, 0xD49B, 0xBE9F, 0xD49C, 0xBEA0, 0xD49D, + 0xBEA1, 0xC434, 0xBEA2, 0xC43C, 0xBEA3, 0xC43D, 0xBEA4, 0xC448, 0xBEA5, 0xC464, 0xBEA6, 0xC465, 0xBEA7, 0xC468, 0xBEA8, 0xC46C, + 0xBEA9, 0xC474, 0xBEAA, 0xC475, 0xBEAB, 0xC479, 0xBEAC, 0xC480, 0xBEAD, 0xC494, 0xBEAE, 0xC49C, 0xBEAF, 0xC4B8, 0xBEB0, 0xC4BC, + 0xBEB1, 0xC4E9, 0xBEB2, 0xC4F0, 0xBEB3, 0xC4F1, 0xBEB4, 0xC4F4, 0xBEB5, 0xC4F8, 0xBEB6, 0xC4FA, 0xBEB7, 0xC4FF, 0xBEB8, 0xC500, + 0xBEB9, 0xC501, 0xBEBA, 0xC50C, 0xBEBB, 0xC510, 0xBEBC, 0xC514, 0xBEBD, 0xC51C, 0xBEBE, 0xC528, 0xBEBF, 0xC529, 0xBEC0, 0xC52C, + 0xBEC1, 0xC530, 0xBEC2, 0xC538, 0xBEC3, 0xC539, 0xBEC4, 0xC53B, 0xBEC5, 0xC53D, 0xBEC6, 0xC544, 0xBEC7, 0xC545, 0xBEC8, 0xC548, + 0xBEC9, 0xC549, 0xBECA, 0xC54A, 0xBECB, 0xC54C, 0xBECC, 0xC54D, 0xBECD, 0xC54E, 0xBECE, 0xC553, 0xBECF, 0xC554, 0xBED0, 0xC555, + 0xBED1, 0xC557, 0xBED2, 0xC558, 0xBED3, 0xC559, 0xBED4, 0xC55D, 0xBED5, 0xC55E, 0xBED6, 0xC560, 0xBED7, 0xC561, 0xBED8, 0xC564, + 0xBED9, 0xC568, 0xBEDA, 0xC570, 0xBEDB, 0xC571, 0xBEDC, 0xC573, 0xBEDD, 0xC574, 0xBEDE, 0xC575, 0xBEDF, 0xC57C, 0xBEE0, 0xC57D, + 0xBEE1, 0xC580, 0xBEE2, 0xC584, 0xBEE3, 0xC587, 0xBEE4, 0xC58C, 0xBEE5, 0xC58D, 0xBEE6, 0xC58F, 0xBEE7, 0xC591, 0xBEE8, 0xC595, + 0xBEE9, 0xC597, 0xBEEA, 0xC598, 0xBEEB, 0xC59C, 0xBEEC, 0xC5A0, 0xBEED, 0xC5A9, 0xBEEE, 0xC5B4, 0xBEEF, 0xC5B5, 0xBEF0, 0xC5B8, + 0xBEF1, 0xC5B9, 0xBEF2, 0xC5BB, 0xBEF3, 0xC5BC, 0xBEF4, 0xC5BD, 0xBEF5, 0xC5BE, 0xBEF6, 0xC5C4, 0xBEF7, 0xC5C5, 0xBEF8, 0xC5C6, + 0xBEF9, 0xC5C7, 0xBEFA, 0xC5C8, 0xBEFB, 0xC5C9, 0xBEFC, 0xC5CA, 0xBEFD, 0xC5CC, 0xBEFE, 0xC5CE, 0xBF41, 0xD49E, 0xBF42, 0xD49F, + 0xBF43, 0xD4A0, 0xBF44, 0xD4A1, 0xBF45, 0xD4A2, 0xBF46, 0xD4A3, 0xBF47, 0xD4A4, 0xBF48, 0xD4A5, 0xBF49, 0xD4A6, 0xBF4A, 0xD4A7, + 0xBF4B, 0xD4A8, 0xBF4C, 0xD4AA, 0xBF4D, 0xD4AB, 0xBF4E, 0xD4AC, 0xBF4F, 0xD4AD, 0xBF50, 0xD4AE, 0xBF51, 0xD4AF, 0xBF52, 0xD4B0, + 0xBF53, 0xD4B1, 0xBF54, 0xD4B2, 0xBF55, 0xD4B3, 0xBF56, 0xD4B4, 0xBF57, 0xD4B5, 0xBF58, 0xD4B6, 0xBF59, 0xD4B7, 0xBF5A, 0xD4B8, + 0xBF61, 0xD4B9, 0xBF62, 0xD4BA, 0xBF63, 0xD4BB, 0xBF64, 0xD4BC, 0xBF65, 0xD4BD, 0xBF66, 0xD4BE, 0xBF67, 0xD4BF, 0xBF68, 0xD4C0, + 0xBF69, 0xD4C1, 0xBF6A, 0xD4C2, 0xBF6B, 0xD4C3, 0xBF6C, 0xD4C4, 0xBF6D, 0xD4C5, 0xBF6E, 0xD4C6, 0xBF6F, 0xD4C7, 0xBF70, 0xD4C8, + 0xBF71, 0xD4C9, 0xBF72, 0xD4CA, 0xBF73, 0xD4CB, 0xBF74, 0xD4CD, 0xBF75, 0xD4CE, 0xBF76, 0xD4CF, 0xBF77, 0xD4D1, 0xBF78, 0xD4D2, + 0xBF79, 0xD4D3, 0xBF7A, 0xD4D5, 0xBF81, 0xD4D6, 0xBF82, 0xD4D7, 0xBF83, 0xD4D8, 0xBF84, 0xD4D9, 0xBF85, 0xD4DA, 0xBF86, 0xD4DB, + 0xBF87, 0xD4DD, 0xBF88, 0xD4DE, 0xBF89, 0xD4E0, 0xBF8A, 0xD4E1, 0xBF8B, 0xD4E2, 0xBF8C, 0xD4E3, 0xBF8D, 0xD4E4, 0xBF8E, 0xD4E5, + 0xBF8F, 0xD4E6, 0xBF90, 0xD4E7, 0xBF91, 0xD4E9, 0xBF92, 0xD4EA, 0xBF93, 0xD4EB, 0xBF94, 0xD4ED, 0xBF95, 0xD4EE, 0xBF96, 0xD4EF, + 0xBF97, 0xD4F1, 0xBF98, 0xD4F2, 0xBF99, 0xD4F3, 0xBF9A, 0xD4F4, 0xBF9B, 0xD4F5, 0xBF9C, 0xD4F6, 0xBF9D, 0xD4F7, 0xBF9E, 0xD4F9, + 0xBF9F, 0xD4FA, 0xBFA0, 0xD4FC, 0xBFA1, 0xC5D0, 0xBFA2, 0xC5D1, 0xBFA3, 0xC5D4, 0xBFA4, 0xC5D8, 0xBFA5, 0xC5E0, 0xBFA6, 0xC5E1, + 0xBFA7, 0xC5E3, 0xBFA8, 0xC5E5, 0xBFA9, 0xC5EC, 0xBFAA, 0xC5ED, 0xBFAB, 0xC5EE, 0xBFAC, 0xC5F0, 0xBFAD, 0xC5F4, 0xBFAE, 0xC5F6, + 0xBFAF, 0xC5F7, 0xBFB0, 0xC5FC, 0xBFB1, 0xC5FD, 0xBFB2, 0xC5FE, 0xBFB3, 0xC5FF, 0xBFB4, 0xC600, 0xBFB5, 0xC601, 0xBFB6, 0xC605, + 0xBFB7, 0xC606, 0xBFB8, 0xC607, 0xBFB9, 0xC608, 0xBFBA, 0xC60C, 0xBFBB, 0xC610, 0xBFBC, 0xC618, 0xBFBD, 0xC619, 0xBFBE, 0xC61B, + 0xBFBF, 0xC61C, 0xBFC0, 0xC624, 0xBFC1, 0xC625, 0xBFC2, 0xC628, 0xBFC3, 0xC62C, 0xBFC4, 0xC62D, 0xBFC5, 0xC62E, 0xBFC6, 0xC630, + 0xBFC7, 0xC633, 0xBFC8, 0xC634, 0xBFC9, 0xC635, 0xBFCA, 0xC637, 0xBFCB, 0xC639, 0xBFCC, 0xC63B, 0xBFCD, 0xC640, 0xBFCE, 0xC641, + 0xBFCF, 0xC644, 0xBFD0, 0xC648, 0xBFD1, 0xC650, 0xBFD2, 0xC651, 0xBFD3, 0xC653, 0xBFD4, 0xC654, 0xBFD5, 0xC655, 0xBFD6, 0xC65C, + 0xBFD7, 0xC65D, 0xBFD8, 0xC660, 0xBFD9, 0xC66C, 0xBFDA, 0xC66F, 0xBFDB, 0xC671, 0xBFDC, 0xC678, 0xBFDD, 0xC679, 0xBFDE, 0xC67C, + 0xBFDF, 0xC680, 0xBFE0, 0xC688, 0xBFE1, 0xC689, 0xBFE2, 0xC68B, 0xBFE3, 0xC68D, 0xBFE4, 0xC694, 0xBFE5, 0xC695, 0xBFE6, 0xC698, + 0xBFE7, 0xC69C, 0xBFE8, 0xC6A4, 0xBFE9, 0xC6A5, 0xBFEA, 0xC6A7, 0xBFEB, 0xC6A9, 0xBFEC, 0xC6B0, 0xBFED, 0xC6B1, 0xBFEE, 0xC6B4, + 0xBFEF, 0xC6B8, 0xBFF0, 0xC6B9, 0xBFF1, 0xC6BA, 0xBFF2, 0xC6C0, 0xBFF3, 0xC6C1, 0xBFF4, 0xC6C3, 0xBFF5, 0xC6C5, 0xBFF6, 0xC6CC, + 0xBFF7, 0xC6CD, 0xBFF8, 0xC6D0, 0xBFF9, 0xC6D4, 0xBFFA, 0xC6DC, 0xBFFB, 0xC6DD, 0xBFFC, 0xC6E0, 0xBFFD, 0xC6E1, 0xBFFE, 0xC6E8, + 0xC041, 0xD4FE, 0xC042, 0xD4FF, 0xC043, 0xD500, 0xC044, 0xD501, 0xC045, 0xD502, 0xC046, 0xD503, 0xC047, 0xD505, 0xC048, 0xD506, + 0xC049, 0xD507, 0xC04A, 0xD509, 0xC04B, 0xD50A, 0xC04C, 0xD50B, 0xC04D, 0xD50D, 0xC04E, 0xD50E, 0xC04F, 0xD50F, 0xC050, 0xD510, + 0xC051, 0xD511, 0xC052, 0xD512, 0xC053, 0xD513, 0xC054, 0xD516, 0xC055, 0xD518, 0xC056, 0xD519, 0xC057, 0xD51A, 0xC058, 0xD51B, + 0xC059, 0xD51C, 0xC05A, 0xD51D, 0xC061, 0xD51E, 0xC062, 0xD51F, 0xC063, 0xD520, 0xC064, 0xD521, 0xC065, 0xD522, 0xC066, 0xD523, + 0xC067, 0xD524, 0xC068, 0xD525, 0xC069, 0xD526, 0xC06A, 0xD527, 0xC06B, 0xD528, 0xC06C, 0xD529, 0xC06D, 0xD52A, 0xC06E, 0xD52B, + 0xC06F, 0xD52C, 0xC070, 0xD52D, 0xC071, 0xD52E, 0xC072, 0xD52F, 0xC073, 0xD530, 0xC074, 0xD531, 0xC075, 0xD532, 0xC076, 0xD533, + 0xC077, 0xD534, 0xC078, 0xD535, 0xC079, 0xD536, 0xC07A, 0xD537, 0xC081, 0xD538, 0xC082, 0xD539, 0xC083, 0xD53A, 0xC084, 0xD53B, + 0xC085, 0xD53E, 0xC086, 0xD53F, 0xC087, 0xD541, 0xC088, 0xD542, 0xC089, 0xD543, 0xC08A, 0xD545, 0xC08B, 0xD546, 0xC08C, 0xD547, + 0xC08D, 0xD548, 0xC08E, 0xD549, 0xC08F, 0xD54A, 0xC090, 0xD54B, 0xC091, 0xD54E, 0xC092, 0xD550, 0xC093, 0xD552, 0xC094, 0xD553, + 0xC095, 0xD554, 0xC096, 0xD555, 0xC097, 0xD556, 0xC098, 0xD557, 0xC099, 0xD55A, 0xC09A, 0xD55B, 0xC09B, 0xD55D, 0xC09C, 0xD55E, + 0xC09D, 0xD55F, 0xC09E, 0xD561, 0xC09F, 0xD562, 0xC0A0, 0xD563, 0xC0A1, 0xC6E9, 0xC0A2, 0xC6EC, 0xC0A3, 0xC6F0, 0xC0A4, 0xC6F8, + 0xC0A5, 0xC6F9, 0xC0A6, 0xC6FD, 0xC0A7, 0xC704, 0xC0A8, 0xC705, 0xC0A9, 0xC708, 0xC0AA, 0xC70C, 0xC0AB, 0xC714, 0xC0AC, 0xC715, + 0xC0AD, 0xC717, 0xC0AE, 0xC719, 0xC0AF, 0xC720, 0xC0B0, 0xC721, 0xC0B1, 0xC724, 0xC0B2, 0xC728, 0xC0B3, 0xC730, 0xC0B4, 0xC731, + 0xC0B5, 0xC733, 0xC0B6, 0xC735, 0xC0B7, 0xC737, 0xC0B8, 0xC73C, 0xC0B9, 0xC73D, 0xC0BA, 0xC740, 0xC0BB, 0xC744, 0xC0BC, 0xC74A, + 0xC0BD, 0xC74C, 0xC0BE, 0xC74D, 0xC0BF, 0xC74F, 0xC0C0, 0xC751, 0xC0C1, 0xC752, 0xC0C2, 0xC753, 0xC0C3, 0xC754, 0xC0C4, 0xC755, + 0xC0C5, 0xC756, 0xC0C6, 0xC757, 0xC0C7, 0xC758, 0xC0C8, 0xC75C, 0xC0C9, 0xC760, 0xC0CA, 0xC768, 0xC0CB, 0xC76B, 0xC0CC, 0xC774, + 0xC0CD, 0xC775, 0xC0CE, 0xC778, 0xC0CF, 0xC77C, 0xC0D0, 0xC77D, 0xC0D1, 0xC77E, 0xC0D2, 0xC783, 0xC0D3, 0xC784, 0xC0D4, 0xC785, + 0xC0D5, 0xC787, 0xC0D6, 0xC788, 0xC0D7, 0xC789, 0xC0D8, 0xC78A, 0xC0D9, 0xC78E, 0xC0DA, 0xC790, 0xC0DB, 0xC791, 0xC0DC, 0xC794, + 0xC0DD, 0xC796, 0xC0DE, 0xC797, 0xC0DF, 0xC798, 0xC0E0, 0xC79A, 0xC0E1, 0xC7A0, 0xC0E2, 0xC7A1, 0xC0E3, 0xC7A3, 0xC0E4, 0xC7A4, + 0xC0E5, 0xC7A5, 0xC0E6, 0xC7A6, 0xC0E7, 0xC7AC, 0xC0E8, 0xC7AD, 0xC0E9, 0xC7B0, 0xC0EA, 0xC7B4, 0xC0EB, 0xC7BC, 0xC0EC, 0xC7BD, + 0xC0ED, 0xC7BF, 0xC0EE, 0xC7C0, 0xC0EF, 0xC7C1, 0xC0F0, 0xC7C8, 0xC0F1, 0xC7C9, 0xC0F2, 0xC7CC, 0xC0F3, 0xC7CE, 0xC0F4, 0xC7D0, + 0xC0F5, 0xC7D8, 0xC0F6, 0xC7DD, 0xC0F7, 0xC7E4, 0xC0F8, 0xC7E8, 0xC0F9, 0xC7EC, 0xC0FA, 0xC800, 0xC0FB, 0xC801, 0xC0FC, 0xC804, + 0xC0FD, 0xC808, 0xC0FE, 0xC80A, 0xC141, 0xD564, 0xC142, 0xD566, 0xC143, 0xD567, 0xC144, 0xD56A, 0xC145, 0xD56C, 0xC146, 0xD56E, + 0xC147, 0xD56F, 0xC148, 0xD570, 0xC149, 0xD571, 0xC14A, 0xD572, 0xC14B, 0xD573, 0xC14C, 0xD576, 0xC14D, 0xD577, 0xC14E, 0xD579, + 0xC14F, 0xD57A, 0xC150, 0xD57B, 0xC151, 0xD57D, 0xC152, 0xD57E, 0xC153, 0xD57F, 0xC154, 0xD580, 0xC155, 0xD581, 0xC156, 0xD582, + 0xC157, 0xD583, 0xC158, 0xD586, 0xC159, 0xD58A, 0xC15A, 0xD58B, 0xC161, 0xD58C, 0xC162, 0xD58D, 0xC163, 0xD58E, 0xC164, 0xD58F, + 0xC165, 0xD591, 0xC166, 0xD592, 0xC167, 0xD593, 0xC168, 0xD594, 0xC169, 0xD595, 0xC16A, 0xD596, 0xC16B, 0xD597, 0xC16C, 0xD598, + 0xC16D, 0xD599, 0xC16E, 0xD59A, 0xC16F, 0xD59B, 0xC170, 0xD59C, 0xC171, 0xD59D, 0xC172, 0xD59E, 0xC173, 0xD59F, 0xC174, 0xD5A0, + 0xC175, 0xD5A1, 0xC176, 0xD5A2, 0xC177, 0xD5A3, 0xC178, 0xD5A4, 0xC179, 0xD5A6, 0xC17A, 0xD5A7, 0xC181, 0xD5A8, 0xC182, 0xD5A9, + 0xC183, 0xD5AA, 0xC184, 0xD5AB, 0xC185, 0xD5AC, 0xC186, 0xD5AD, 0xC187, 0xD5AE, 0xC188, 0xD5AF, 0xC189, 0xD5B0, 0xC18A, 0xD5B1, + 0xC18B, 0xD5B2, 0xC18C, 0xD5B3, 0xC18D, 0xD5B4, 0xC18E, 0xD5B5, 0xC18F, 0xD5B6, 0xC190, 0xD5B7, 0xC191, 0xD5B8, 0xC192, 0xD5B9, + 0xC193, 0xD5BA, 0xC194, 0xD5BB, 0xC195, 0xD5BC, 0xC196, 0xD5BD, 0xC197, 0xD5BE, 0xC198, 0xD5BF, 0xC199, 0xD5C0, 0xC19A, 0xD5C1, + 0xC19B, 0xD5C2, 0xC19C, 0xD5C3, 0xC19D, 0xD5C4, 0xC19E, 0xD5C5, 0xC19F, 0xD5C6, 0xC1A0, 0xD5C7, 0xC1A1, 0xC810, 0xC1A2, 0xC811, + 0xC1A3, 0xC813, 0xC1A4, 0xC815, 0xC1A5, 0xC816, 0xC1A6, 0xC81C, 0xC1A7, 0xC81D, 0xC1A8, 0xC820, 0xC1A9, 0xC824, 0xC1AA, 0xC82C, + 0xC1AB, 0xC82D, 0xC1AC, 0xC82F, 0xC1AD, 0xC831, 0xC1AE, 0xC838, 0xC1AF, 0xC83C, 0xC1B0, 0xC840, 0xC1B1, 0xC848, 0xC1B2, 0xC849, + 0xC1B3, 0xC84C, 0xC1B4, 0xC84D, 0xC1B5, 0xC854, 0xC1B6, 0xC870, 0xC1B7, 0xC871, 0xC1B8, 0xC874, 0xC1B9, 0xC878, 0xC1BA, 0xC87A, + 0xC1BB, 0xC880, 0xC1BC, 0xC881, 0xC1BD, 0xC883, 0xC1BE, 0xC885, 0xC1BF, 0xC886, 0xC1C0, 0xC887, 0xC1C1, 0xC88B, 0xC1C2, 0xC88C, + 0xC1C3, 0xC88D, 0xC1C4, 0xC894, 0xC1C5, 0xC89D, 0xC1C6, 0xC89F, 0xC1C7, 0xC8A1, 0xC1C8, 0xC8A8, 0xC1C9, 0xC8BC, 0xC1CA, 0xC8BD, + 0xC1CB, 0xC8C4, 0xC1CC, 0xC8C8, 0xC1CD, 0xC8CC, 0xC1CE, 0xC8D4, 0xC1CF, 0xC8D5, 0xC1D0, 0xC8D7, 0xC1D1, 0xC8D9, 0xC1D2, 0xC8E0, + 0xC1D3, 0xC8E1, 0xC1D4, 0xC8E4, 0xC1D5, 0xC8F5, 0xC1D6, 0xC8FC, 0xC1D7, 0xC8FD, 0xC1D8, 0xC900, 0xC1D9, 0xC904, 0xC1DA, 0xC905, + 0xC1DB, 0xC906, 0xC1DC, 0xC90C, 0xC1DD, 0xC90D, 0xC1DE, 0xC90F, 0xC1DF, 0xC911, 0xC1E0, 0xC918, 0xC1E1, 0xC92C, 0xC1E2, 0xC934, + 0xC1E3, 0xC950, 0xC1E4, 0xC951, 0xC1E5, 0xC954, 0xC1E6, 0xC958, 0xC1E7, 0xC960, 0xC1E8, 0xC961, 0xC1E9, 0xC963, 0xC1EA, 0xC96C, + 0xC1EB, 0xC970, 0xC1EC, 0xC974, 0xC1ED, 0xC97C, 0xC1EE, 0xC988, 0xC1EF, 0xC989, 0xC1F0, 0xC98C, 0xC1F1, 0xC990, 0xC1F2, 0xC998, + 0xC1F3, 0xC999, 0xC1F4, 0xC99B, 0xC1F5, 0xC99D, 0xC1F6, 0xC9C0, 0xC1F7, 0xC9C1, 0xC1F8, 0xC9C4, 0xC1F9, 0xC9C7, 0xC1FA, 0xC9C8, + 0xC1FB, 0xC9CA, 0xC1FC, 0xC9D0, 0xC1FD, 0xC9D1, 0xC1FE, 0xC9D3, 0xC241, 0xD5CA, 0xC242, 0xD5CB, 0xC243, 0xD5CD, 0xC244, 0xD5CE, + 0xC245, 0xD5CF, 0xC246, 0xD5D1, 0xC247, 0xD5D3, 0xC248, 0xD5D4, 0xC249, 0xD5D5, 0xC24A, 0xD5D6, 0xC24B, 0xD5D7, 0xC24C, 0xD5DA, + 0xC24D, 0xD5DC, 0xC24E, 0xD5DE, 0xC24F, 0xD5DF, 0xC250, 0xD5E0, 0xC251, 0xD5E1, 0xC252, 0xD5E2, 0xC253, 0xD5E3, 0xC254, 0xD5E6, + 0xC255, 0xD5E7, 0xC256, 0xD5E9, 0xC257, 0xD5EA, 0xC258, 0xD5EB, 0xC259, 0xD5ED, 0xC25A, 0xD5EE, 0xC261, 0xD5EF, 0xC262, 0xD5F0, + 0xC263, 0xD5F1, 0xC264, 0xD5F2, 0xC265, 0xD5F3, 0xC266, 0xD5F6, 0xC267, 0xD5F8, 0xC268, 0xD5FA, 0xC269, 0xD5FB, 0xC26A, 0xD5FC, + 0xC26B, 0xD5FD, 0xC26C, 0xD5FE, 0xC26D, 0xD5FF, 0xC26E, 0xD602, 0xC26F, 0xD603, 0xC270, 0xD605, 0xC271, 0xD606, 0xC272, 0xD607, + 0xC273, 0xD609, 0xC274, 0xD60A, 0xC275, 0xD60B, 0xC276, 0xD60C, 0xC277, 0xD60D, 0xC278, 0xD60E, 0xC279, 0xD60F, 0xC27A, 0xD612, + 0xC281, 0xD616, 0xC282, 0xD617, 0xC283, 0xD618, 0xC284, 0xD619, 0xC285, 0xD61A, 0xC286, 0xD61B, 0xC287, 0xD61D, 0xC288, 0xD61E, + 0xC289, 0xD61F, 0xC28A, 0xD621, 0xC28B, 0xD622, 0xC28C, 0xD623, 0xC28D, 0xD625, 0xC28E, 0xD626, 0xC28F, 0xD627, 0xC290, 0xD628, + 0xC291, 0xD629, 0xC292, 0xD62A, 0xC293, 0xD62B, 0xC294, 0xD62C, 0xC295, 0xD62E, 0xC296, 0xD62F, 0xC297, 0xD630, 0xC298, 0xD631, + 0xC299, 0xD632, 0xC29A, 0xD633, 0xC29B, 0xD634, 0xC29C, 0xD635, 0xC29D, 0xD636, 0xC29E, 0xD637, 0xC29F, 0xD63A, 0xC2A0, 0xD63B, + 0xC2A1, 0xC9D5, 0xC2A2, 0xC9D6, 0xC2A3, 0xC9D9, 0xC2A4, 0xC9DA, 0xC2A5, 0xC9DC, 0xC2A6, 0xC9DD, 0xC2A7, 0xC9E0, 0xC2A8, 0xC9E2, + 0xC2A9, 0xC9E4, 0xC2AA, 0xC9E7, 0xC2AB, 0xC9EC, 0xC2AC, 0xC9ED, 0xC2AD, 0xC9EF, 0xC2AE, 0xC9F0, 0xC2AF, 0xC9F1, 0xC2B0, 0xC9F8, + 0xC2B1, 0xC9F9, 0xC2B2, 0xC9FC, 0xC2B3, 0xCA00, 0xC2B4, 0xCA08, 0xC2B5, 0xCA09, 0xC2B6, 0xCA0B, 0xC2B7, 0xCA0C, 0xC2B8, 0xCA0D, + 0xC2B9, 0xCA14, 0xC2BA, 0xCA18, 0xC2BB, 0xCA29, 0xC2BC, 0xCA4C, 0xC2BD, 0xCA4D, 0xC2BE, 0xCA50, 0xC2BF, 0xCA54, 0xC2C0, 0xCA5C, + 0xC2C1, 0xCA5D, 0xC2C2, 0xCA5F, 0xC2C3, 0xCA60, 0xC2C4, 0xCA61, 0xC2C5, 0xCA68, 0xC2C6, 0xCA7D, 0xC2C7, 0xCA84, 0xC2C8, 0xCA98, + 0xC2C9, 0xCABC, 0xC2CA, 0xCABD, 0xC2CB, 0xCAC0, 0xC2CC, 0xCAC4, 0xC2CD, 0xCACC, 0xC2CE, 0xCACD, 0xC2CF, 0xCACF, 0xC2D0, 0xCAD1, + 0xC2D1, 0xCAD3, 0xC2D2, 0xCAD8, 0xC2D3, 0xCAD9, 0xC2D4, 0xCAE0, 0xC2D5, 0xCAEC, 0xC2D6, 0xCAF4, 0xC2D7, 0xCB08, 0xC2D8, 0xCB10, + 0xC2D9, 0xCB14, 0xC2DA, 0xCB18, 0xC2DB, 0xCB20, 0xC2DC, 0xCB21, 0xC2DD, 0xCB41, 0xC2DE, 0xCB48, 0xC2DF, 0xCB49, 0xC2E0, 0xCB4C, + 0xC2E1, 0xCB50, 0xC2E2, 0xCB58, 0xC2E3, 0xCB59, 0xC2E4, 0xCB5D, 0xC2E5, 0xCB64, 0xC2E6, 0xCB78, 0xC2E7, 0xCB79, 0xC2E8, 0xCB9C, + 0xC2E9, 0xCBB8, 0xC2EA, 0xCBD4, 0xC2EB, 0xCBE4, 0xC2EC, 0xCBE7, 0xC2ED, 0xCBE9, 0xC2EE, 0xCC0C, 0xC2EF, 0xCC0D, 0xC2F0, 0xCC10, + 0xC2F1, 0xCC14, 0xC2F2, 0xCC1C, 0xC2F3, 0xCC1D, 0xC2F4, 0xCC21, 0xC2F5, 0xCC22, 0xC2F6, 0xCC27, 0xC2F7, 0xCC28, 0xC2F8, 0xCC29, + 0xC2F9, 0xCC2C, 0xC2FA, 0xCC2E, 0xC2FB, 0xCC30, 0xC2FC, 0xCC38, 0xC2FD, 0xCC39, 0xC2FE, 0xCC3B, 0xC341, 0xD63D, 0xC342, 0xD63E, + 0xC343, 0xD63F, 0xC344, 0xD641, 0xC345, 0xD642, 0xC346, 0xD643, 0xC347, 0xD644, 0xC348, 0xD646, 0xC349, 0xD647, 0xC34A, 0xD64A, + 0xC34B, 0xD64C, 0xC34C, 0xD64E, 0xC34D, 0xD64F, 0xC34E, 0xD650, 0xC34F, 0xD652, 0xC350, 0xD653, 0xC351, 0xD656, 0xC352, 0xD657, + 0xC353, 0xD659, 0xC354, 0xD65A, 0xC355, 0xD65B, 0xC356, 0xD65D, 0xC357, 0xD65E, 0xC358, 0xD65F, 0xC359, 0xD660, 0xC35A, 0xD661, + 0xC361, 0xD662, 0xC362, 0xD663, 0xC363, 0xD664, 0xC364, 0xD665, 0xC365, 0xD666, 0xC366, 0xD668, 0xC367, 0xD66A, 0xC368, 0xD66B, + 0xC369, 0xD66C, 0xC36A, 0xD66D, 0xC36B, 0xD66E, 0xC36C, 0xD66F, 0xC36D, 0xD672, 0xC36E, 0xD673, 0xC36F, 0xD675, 0xC370, 0xD676, + 0xC371, 0xD677, 0xC372, 0xD678, 0xC373, 0xD679, 0xC374, 0xD67A, 0xC375, 0xD67B, 0xC376, 0xD67C, 0xC377, 0xD67D, 0xC378, 0xD67E, + 0xC379, 0xD67F, 0xC37A, 0xD680, 0xC381, 0xD681, 0xC382, 0xD682, 0xC383, 0xD684, 0xC384, 0xD686, 0xC385, 0xD687, 0xC386, 0xD688, + 0xC387, 0xD689, 0xC388, 0xD68A, 0xC389, 0xD68B, 0xC38A, 0xD68E, 0xC38B, 0xD68F, 0xC38C, 0xD691, 0xC38D, 0xD692, 0xC38E, 0xD693, + 0xC38F, 0xD695, 0xC390, 0xD696, 0xC391, 0xD697, 0xC392, 0xD698, 0xC393, 0xD699, 0xC394, 0xD69A, 0xC395, 0xD69B, 0xC396, 0xD69C, + 0xC397, 0xD69E, 0xC398, 0xD6A0, 0xC399, 0xD6A2, 0xC39A, 0xD6A3, 0xC39B, 0xD6A4, 0xC39C, 0xD6A5, 0xC39D, 0xD6A6, 0xC39E, 0xD6A7, + 0xC39F, 0xD6A9, 0xC3A0, 0xD6AA, 0xC3A1, 0xCC3C, 0xC3A2, 0xCC3D, 0xC3A3, 0xCC3E, 0xC3A4, 0xCC44, 0xC3A5, 0xCC45, 0xC3A6, 0xCC48, + 0xC3A7, 0xCC4C, 0xC3A8, 0xCC54, 0xC3A9, 0xCC55, 0xC3AA, 0xCC57, 0xC3AB, 0xCC58, 0xC3AC, 0xCC59, 0xC3AD, 0xCC60, 0xC3AE, 0xCC64, + 0xC3AF, 0xCC66, 0xC3B0, 0xCC68, 0xC3B1, 0xCC70, 0xC3B2, 0xCC75, 0xC3B3, 0xCC98, 0xC3B4, 0xCC99, 0xC3B5, 0xCC9C, 0xC3B6, 0xCCA0, + 0xC3B7, 0xCCA8, 0xC3B8, 0xCCA9, 0xC3B9, 0xCCAB, 0xC3BA, 0xCCAC, 0xC3BB, 0xCCAD, 0xC3BC, 0xCCB4, 0xC3BD, 0xCCB5, 0xC3BE, 0xCCB8, + 0xC3BF, 0xCCBC, 0xC3C0, 0xCCC4, 0xC3C1, 0xCCC5, 0xC3C2, 0xCCC7, 0xC3C3, 0xCCC9, 0xC3C4, 0xCCD0, 0xC3C5, 0xCCD4, 0xC3C6, 0xCCE4, + 0xC3C7, 0xCCEC, 0xC3C8, 0xCCF0, 0xC3C9, 0xCD01, 0xC3CA, 0xCD08, 0xC3CB, 0xCD09, 0xC3CC, 0xCD0C, 0xC3CD, 0xCD10, 0xC3CE, 0xCD18, + 0xC3CF, 0xCD19, 0xC3D0, 0xCD1B, 0xC3D1, 0xCD1D, 0xC3D2, 0xCD24, 0xC3D3, 0xCD28, 0xC3D4, 0xCD2C, 0xC3D5, 0xCD39, 0xC3D6, 0xCD5C, + 0xC3D7, 0xCD60, 0xC3D8, 0xCD64, 0xC3D9, 0xCD6C, 0xC3DA, 0xCD6D, 0xC3DB, 0xCD6F, 0xC3DC, 0xCD71, 0xC3DD, 0xCD78, 0xC3DE, 0xCD88, + 0xC3DF, 0xCD94, 0xC3E0, 0xCD95, 0xC3E1, 0xCD98, 0xC3E2, 0xCD9C, 0xC3E3, 0xCDA4, 0xC3E4, 0xCDA5, 0xC3E5, 0xCDA7, 0xC3E6, 0xCDA9, + 0xC3E7, 0xCDB0, 0xC3E8, 0xCDC4, 0xC3E9, 0xCDCC, 0xC3EA, 0xCDD0, 0xC3EB, 0xCDE8, 0xC3EC, 0xCDEC, 0xC3ED, 0xCDF0, 0xC3EE, 0xCDF8, + 0xC3EF, 0xCDF9, 0xC3F0, 0xCDFB, 0xC3F1, 0xCDFD, 0xC3F2, 0xCE04, 0xC3F3, 0xCE08, 0xC3F4, 0xCE0C, 0xC3F5, 0xCE14, 0xC3F6, 0xCE19, + 0xC3F7, 0xCE20, 0xC3F8, 0xCE21, 0xC3F9, 0xCE24, 0xC3FA, 0xCE28, 0xC3FB, 0xCE30, 0xC3FC, 0xCE31, 0xC3FD, 0xCE33, 0xC3FE, 0xCE35, + 0xC441, 0xD6AB, 0xC442, 0xD6AD, 0xC443, 0xD6AE, 0xC444, 0xD6AF, 0xC445, 0xD6B1, 0xC446, 0xD6B2, 0xC447, 0xD6B3, 0xC448, 0xD6B4, + 0xC449, 0xD6B5, 0xC44A, 0xD6B6, 0xC44B, 0xD6B7, 0xC44C, 0xD6B8, 0xC44D, 0xD6BA, 0xC44E, 0xD6BC, 0xC44F, 0xD6BD, 0xC450, 0xD6BE, + 0xC451, 0xD6BF, 0xC452, 0xD6C0, 0xC453, 0xD6C1, 0xC454, 0xD6C2, 0xC455, 0xD6C3, 0xC456, 0xD6C6, 0xC457, 0xD6C7, 0xC458, 0xD6C9, + 0xC459, 0xD6CA, 0xC45A, 0xD6CB, 0xC461, 0xD6CD, 0xC462, 0xD6CE, 0xC463, 0xD6CF, 0xC464, 0xD6D0, 0xC465, 0xD6D2, 0xC466, 0xD6D3, + 0xC467, 0xD6D5, 0xC468, 0xD6D6, 0xC469, 0xD6D8, 0xC46A, 0xD6DA, 0xC46B, 0xD6DB, 0xC46C, 0xD6DC, 0xC46D, 0xD6DD, 0xC46E, 0xD6DE, + 0xC46F, 0xD6DF, 0xC470, 0xD6E1, 0xC471, 0xD6E2, 0xC472, 0xD6E3, 0xC473, 0xD6E5, 0xC474, 0xD6E6, 0xC475, 0xD6E7, 0xC476, 0xD6E9, + 0xC477, 0xD6EA, 0xC478, 0xD6EB, 0xC479, 0xD6EC, 0xC47A, 0xD6ED, 0xC481, 0xD6EE, 0xC482, 0xD6EF, 0xC483, 0xD6F1, 0xC484, 0xD6F2, + 0xC485, 0xD6F3, 0xC486, 0xD6F4, 0xC487, 0xD6F6, 0xC488, 0xD6F7, 0xC489, 0xD6F8, 0xC48A, 0xD6F9, 0xC48B, 0xD6FA, 0xC48C, 0xD6FB, + 0xC48D, 0xD6FE, 0xC48E, 0xD6FF, 0xC48F, 0xD701, 0xC490, 0xD702, 0xC491, 0xD703, 0xC492, 0xD705, 0xC493, 0xD706, 0xC494, 0xD707, + 0xC495, 0xD708, 0xC496, 0xD709, 0xC497, 0xD70A, 0xC498, 0xD70B, 0xC499, 0xD70C, 0xC49A, 0xD70D, 0xC49B, 0xD70E, 0xC49C, 0xD70F, + 0xC49D, 0xD710, 0xC49E, 0xD712, 0xC49F, 0xD713, 0xC4A0, 0xD714, 0xC4A1, 0xCE58, 0xC4A2, 0xCE59, 0xC4A3, 0xCE5C, 0xC4A4, 0xCE5F, + 0xC4A5, 0xCE60, 0xC4A6, 0xCE61, 0xC4A7, 0xCE68, 0xC4A8, 0xCE69, 0xC4A9, 0xCE6B, 0xC4AA, 0xCE6D, 0xC4AB, 0xCE74, 0xC4AC, 0xCE75, + 0xC4AD, 0xCE78, 0xC4AE, 0xCE7C, 0xC4AF, 0xCE84, 0xC4B0, 0xCE85, 0xC4B1, 0xCE87, 0xC4B2, 0xCE89, 0xC4B3, 0xCE90, 0xC4B4, 0xCE91, + 0xC4B5, 0xCE94, 0xC4B6, 0xCE98, 0xC4B7, 0xCEA0, 0xC4B8, 0xCEA1, 0xC4B9, 0xCEA3, 0xC4BA, 0xCEA4, 0xC4BB, 0xCEA5, 0xC4BC, 0xCEAC, + 0xC4BD, 0xCEAD, 0xC4BE, 0xCEC1, 0xC4BF, 0xCEE4, 0xC4C0, 0xCEE5, 0xC4C1, 0xCEE8, 0xC4C2, 0xCEEB, 0xC4C3, 0xCEEC, 0xC4C4, 0xCEF4, + 0xC4C5, 0xCEF5, 0xC4C6, 0xCEF7, 0xC4C7, 0xCEF8, 0xC4C8, 0xCEF9, 0xC4C9, 0xCF00, 0xC4CA, 0xCF01, 0xC4CB, 0xCF04, 0xC4CC, 0xCF08, + 0xC4CD, 0xCF10, 0xC4CE, 0xCF11, 0xC4CF, 0xCF13, 0xC4D0, 0xCF15, 0xC4D1, 0xCF1C, 0xC4D2, 0xCF20, 0xC4D3, 0xCF24, 0xC4D4, 0xCF2C, + 0xC4D5, 0xCF2D, 0xC4D6, 0xCF2F, 0xC4D7, 0xCF30, 0xC4D8, 0xCF31, 0xC4D9, 0xCF38, 0xC4DA, 0xCF54, 0xC4DB, 0xCF55, 0xC4DC, 0xCF58, + 0xC4DD, 0xCF5C, 0xC4DE, 0xCF64, 0xC4DF, 0xCF65, 0xC4E0, 0xCF67, 0xC4E1, 0xCF69, 0xC4E2, 0xCF70, 0xC4E3, 0xCF71, 0xC4E4, 0xCF74, + 0xC4E5, 0xCF78, 0xC4E6, 0xCF80, 0xC4E7, 0xCF85, 0xC4E8, 0xCF8C, 0xC4E9, 0xCFA1, 0xC4EA, 0xCFA8, 0xC4EB, 0xCFB0, 0xC4EC, 0xCFC4, + 0xC4ED, 0xCFE0, 0xC4EE, 0xCFE1, 0xC4EF, 0xCFE4, 0xC4F0, 0xCFE8, 0xC4F1, 0xCFF0, 0xC4F2, 0xCFF1, 0xC4F3, 0xCFF3, 0xC4F4, 0xCFF5, + 0xC4F5, 0xCFFC, 0xC4F6, 0xD000, 0xC4F7, 0xD004, 0xC4F8, 0xD011, 0xC4F9, 0xD018, 0xC4FA, 0xD02D, 0xC4FB, 0xD034, 0xC4FC, 0xD035, + 0xC4FD, 0xD038, 0xC4FE, 0xD03C, 0xC541, 0xD715, 0xC542, 0xD716, 0xC543, 0xD717, 0xC544, 0xD71A, 0xC545, 0xD71B, 0xC546, 0xD71D, + 0xC547, 0xD71E, 0xC548, 0xD71F, 0xC549, 0xD721, 0xC54A, 0xD722, 0xC54B, 0xD723, 0xC54C, 0xD724, 0xC54D, 0xD725, 0xC54E, 0xD726, + 0xC54F, 0xD727, 0xC550, 0xD72A, 0xC551, 0xD72C, 0xC552, 0xD72E, 0xC553, 0xD72F, 0xC554, 0xD730, 0xC555, 0xD731, 0xC556, 0xD732, + 0xC557, 0xD733, 0xC558, 0xD736, 0xC559, 0xD737, 0xC55A, 0xD739, 0xC561, 0xD73A, 0xC562, 0xD73B, 0xC563, 0xD73D, 0xC564, 0xD73E, + 0xC565, 0xD73F, 0xC566, 0xD740, 0xC567, 0xD741, 0xC568, 0xD742, 0xC569, 0xD743, 0xC56A, 0xD745, 0xC56B, 0xD746, 0xC56C, 0xD748, + 0xC56D, 0xD74A, 0xC56E, 0xD74B, 0xC56F, 0xD74C, 0xC570, 0xD74D, 0xC571, 0xD74E, 0xC572, 0xD74F, 0xC573, 0xD752, 0xC574, 0xD753, + 0xC575, 0xD755, 0xC576, 0xD75A, 0xC577, 0xD75B, 0xC578, 0xD75C, 0xC579, 0xD75D, 0xC57A, 0xD75E, 0xC581, 0xD75F, 0xC582, 0xD762, + 0xC583, 0xD764, 0xC584, 0xD766, 0xC585, 0xD767, 0xC586, 0xD768, 0xC587, 0xD76A, 0xC588, 0xD76B, 0xC589, 0xD76D, 0xC58A, 0xD76E, + 0xC58B, 0xD76F, 0xC58C, 0xD771, 0xC58D, 0xD772, 0xC58E, 0xD773, 0xC58F, 0xD775, 0xC590, 0xD776, 0xC591, 0xD777, 0xC592, 0xD778, + 0xC593, 0xD779, 0xC594, 0xD77A, 0xC595, 0xD77B, 0xC596, 0xD77E, 0xC597, 0xD77F, 0xC598, 0xD780, 0xC599, 0xD782, 0xC59A, 0xD783, + 0xC59B, 0xD784, 0xC59C, 0xD785, 0xC59D, 0xD786, 0xC59E, 0xD787, 0xC59F, 0xD78A, 0xC5A0, 0xD78B, 0xC5A1, 0xD044, 0xC5A2, 0xD045, + 0xC5A3, 0xD047, 0xC5A4, 0xD049, 0xC5A5, 0xD050, 0xC5A6, 0xD054, 0xC5A7, 0xD058, 0xC5A8, 0xD060, 0xC5A9, 0xD06C, 0xC5AA, 0xD06D, + 0xC5AB, 0xD070, 0xC5AC, 0xD074, 0xC5AD, 0xD07C, 0xC5AE, 0xD07D, 0xC5AF, 0xD081, 0xC5B0, 0xD0A4, 0xC5B1, 0xD0A5, 0xC5B2, 0xD0A8, + 0xC5B3, 0xD0AC, 0xC5B4, 0xD0B4, 0xC5B5, 0xD0B5, 0xC5B6, 0xD0B7, 0xC5B7, 0xD0B9, 0xC5B8, 0xD0C0, 0xC5B9, 0xD0C1, 0xC5BA, 0xD0C4, + 0xC5BB, 0xD0C8, 0xC5BC, 0xD0C9, 0xC5BD, 0xD0D0, 0xC5BE, 0xD0D1, 0xC5BF, 0xD0D3, 0xC5C0, 0xD0D4, 0xC5C1, 0xD0D5, 0xC5C2, 0xD0DC, + 0xC5C3, 0xD0DD, 0xC5C4, 0xD0E0, 0xC5C5, 0xD0E4, 0xC5C6, 0xD0EC, 0xC5C7, 0xD0ED, 0xC5C8, 0xD0EF, 0xC5C9, 0xD0F0, 0xC5CA, 0xD0F1, + 0xC5CB, 0xD0F8, 0xC5CC, 0xD10D, 0xC5CD, 0xD130, 0xC5CE, 0xD131, 0xC5CF, 0xD134, 0xC5D0, 0xD138, 0xC5D1, 0xD13A, 0xC5D2, 0xD140, + 0xC5D3, 0xD141, 0xC5D4, 0xD143, 0xC5D5, 0xD144, 0xC5D6, 0xD145, 0xC5D7, 0xD14C, 0xC5D8, 0xD14D, 0xC5D9, 0xD150, 0xC5DA, 0xD154, + 0xC5DB, 0xD15C, 0xC5DC, 0xD15D, 0xC5DD, 0xD15F, 0xC5DE, 0xD161, 0xC5DF, 0xD168, 0xC5E0, 0xD16C, 0xC5E1, 0xD17C, 0xC5E2, 0xD184, + 0xC5E3, 0xD188, 0xC5E4, 0xD1A0, 0xC5E5, 0xD1A1, 0xC5E6, 0xD1A4, 0xC5E7, 0xD1A8, 0xC5E8, 0xD1B0, 0xC5E9, 0xD1B1, 0xC5EA, 0xD1B3, + 0xC5EB, 0xD1B5, 0xC5EC, 0xD1BA, 0xC5ED, 0xD1BC, 0xC5EE, 0xD1C0, 0xC5EF, 0xD1D8, 0xC5F0, 0xD1F4, 0xC5F1, 0xD1F8, 0xC5F2, 0xD207, + 0xC5F3, 0xD209, 0xC5F4, 0xD210, 0xC5F5, 0xD22C, 0xC5F6, 0xD22D, 0xC5F7, 0xD230, 0xC5F8, 0xD234, 0xC5F9, 0xD23C, 0xC5FA, 0xD23D, + 0xC5FB, 0xD23F, 0xC5FC, 0xD241, 0xC5FD, 0xD248, 0xC5FE, 0xD25C, 0xC641, 0xD78D, 0xC642, 0xD78E, 0xC643, 0xD78F, 0xC644, 0xD791, + 0xC645, 0xD792, 0xC646, 0xD793, 0xC647, 0xD794, 0xC648, 0xD795, 0xC649, 0xD796, 0xC64A, 0xD797, 0xC64B, 0xD79A, 0xC64C, 0xD79C, + 0xC64D, 0xD79E, 0xC64E, 0xD79F, 0xC64F, 0xD7A0, 0xC650, 0xD7A1, 0xC651, 0xD7A2, 0xC652, 0xD7A3, 0xC6A1, 0xD264, 0xC6A2, 0xD280, + 0xC6A3, 0xD281, 0xC6A4, 0xD284, 0xC6A5, 0xD288, 0xC6A6, 0xD290, 0xC6A7, 0xD291, 0xC6A8, 0xD295, 0xC6A9, 0xD29C, 0xC6AA, 0xD2A0, + 0xC6AB, 0xD2A4, 0xC6AC, 0xD2AC, 0xC6AD, 0xD2B1, 0xC6AE, 0xD2B8, 0xC6AF, 0xD2B9, 0xC6B0, 0xD2BC, 0xC6B1, 0xD2BF, 0xC6B2, 0xD2C0, + 0xC6B3, 0xD2C2, 0xC6B4, 0xD2C8, 0xC6B5, 0xD2C9, 0xC6B6, 0xD2CB, 0xC6B7, 0xD2D4, 0xC6B8, 0xD2D8, 0xC6B9, 0xD2DC, 0xC6BA, 0xD2E4, + 0xC6BB, 0xD2E5, 0xC6BC, 0xD2F0, 0xC6BD, 0xD2F1, 0xC6BE, 0xD2F4, 0xC6BF, 0xD2F8, 0xC6C0, 0xD300, 0xC6C1, 0xD301, 0xC6C2, 0xD303, + 0xC6C3, 0xD305, 0xC6C4, 0xD30C, 0xC6C5, 0xD30D, 0xC6C6, 0xD30E, 0xC6C7, 0xD310, 0xC6C8, 0xD314, 0xC6C9, 0xD316, 0xC6CA, 0xD31C, + 0xC6CB, 0xD31D, 0xC6CC, 0xD31F, 0xC6CD, 0xD320, 0xC6CE, 0xD321, 0xC6CF, 0xD325, 0xC6D0, 0xD328, 0xC6D1, 0xD329, 0xC6D2, 0xD32C, + 0xC6D3, 0xD330, 0xC6D4, 0xD338, 0xC6D5, 0xD339, 0xC6D6, 0xD33B, 0xC6D7, 0xD33C, 0xC6D8, 0xD33D, 0xC6D9, 0xD344, 0xC6DA, 0xD345, + 0xC6DB, 0xD37C, 0xC6DC, 0xD37D, 0xC6DD, 0xD380, 0xC6DE, 0xD384, 0xC6DF, 0xD38C, 0xC6E0, 0xD38D, 0xC6E1, 0xD38F, 0xC6E2, 0xD390, + 0xC6E3, 0xD391, 0xC6E4, 0xD398, 0xC6E5, 0xD399, 0xC6E6, 0xD39C, 0xC6E7, 0xD3A0, 0xC6E8, 0xD3A8, 0xC6E9, 0xD3A9, 0xC6EA, 0xD3AB, + 0xC6EB, 0xD3AD, 0xC6EC, 0xD3B4, 0xC6ED, 0xD3B8, 0xC6EE, 0xD3BC, 0xC6EF, 0xD3C4, 0xC6F0, 0xD3C5, 0xC6F1, 0xD3C8, 0xC6F2, 0xD3C9, + 0xC6F3, 0xD3D0, 0xC6F4, 0xD3D8, 0xC6F5, 0xD3E1, 0xC6F6, 0xD3E3, 0xC6F7, 0xD3EC, 0xC6F8, 0xD3ED, 0xC6F9, 0xD3F0, 0xC6FA, 0xD3F4, + 0xC6FB, 0xD3FC, 0xC6FC, 0xD3FD, 0xC6FD, 0xD3FF, 0xC6FE, 0xD401, 0xC7A1, 0xD408, 0xC7A2, 0xD41D, 0xC7A3, 0xD440, 0xC7A4, 0xD444, + 0xC7A5, 0xD45C, 0xC7A6, 0xD460, 0xC7A7, 0xD464, 0xC7A8, 0xD46D, 0xC7A9, 0xD46F, 0xC7AA, 0xD478, 0xC7AB, 0xD479, 0xC7AC, 0xD47C, + 0xC7AD, 0xD47F, 0xC7AE, 0xD480, 0xC7AF, 0xD482, 0xC7B0, 0xD488, 0xC7B1, 0xD489, 0xC7B2, 0xD48B, 0xC7B3, 0xD48D, 0xC7B4, 0xD494, + 0xC7B5, 0xD4A9, 0xC7B6, 0xD4CC, 0xC7B7, 0xD4D0, 0xC7B8, 0xD4D4, 0xC7B9, 0xD4DC, 0xC7BA, 0xD4DF, 0xC7BB, 0xD4E8, 0xC7BC, 0xD4EC, + 0xC7BD, 0xD4F0, 0xC7BE, 0xD4F8, 0xC7BF, 0xD4FB, 0xC7C0, 0xD4FD, 0xC7C1, 0xD504, 0xC7C2, 0xD508, 0xC7C3, 0xD50C, 0xC7C4, 0xD514, + 0xC7C5, 0xD515, 0xC7C6, 0xD517, 0xC7C7, 0xD53C, 0xC7C8, 0xD53D, 0xC7C9, 0xD540, 0xC7CA, 0xD544, 0xC7CB, 0xD54C, 0xC7CC, 0xD54D, + 0xC7CD, 0xD54F, 0xC7CE, 0xD551, 0xC7CF, 0xD558, 0xC7D0, 0xD559, 0xC7D1, 0xD55C, 0xC7D2, 0xD560, 0xC7D3, 0xD565, 0xC7D4, 0xD568, + 0xC7D5, 0xD569, 0xC7D6, 0xD56B, 0xC7D7, 0xD56D, 0xC7D8, 0xD574, 0xC7D9, 0xD575, 0xC7DA, 0xD578, 0xC7DB, 0xD57C, 0xC7DC, 0xD584, + 0xC7DD, 0xD585, 0xC7DE, 0xD587, 0xC7DF, 0xD588, 0xC7E0, 0xD589, 0xC7E1, 0xD590, 0xC7E2, 0xD5A5, 0xC7E3, 0xD5C8, 0xC7E4, 0xD5C9, + 0xC7E5, 0xD5CC, 0xC7E6, 0xD5D0, 0xC7E7, 0xD5D2, 0xC7E8, 0xD5D8, 0xC7E9, 0xD5D9, 0xC7EA, 0xD5DB, 0xC7EB, 0xD5DD, 0xC7EC, 0xD5E4, + 0xC7ED, 0xD5E5, 0xC7EE, 0xD5E8, 0xC7EF, 0xD5EC, 0xC7F0, 0xD5F4, 0xC7F1, 0xD5F5, 0xC7F2, 0xD5F7, 0xC7F3, 0xD5F9, 0xC7F4, 0xD600, + 0xC7F5, 0xD601, 0xC7F6, 0xD604, 0xC7F7, 0xD608, 0xC7F8, 0xD610, 0xC7F9, 0xD611, 0xC7FA, 0xD613, 0xC7FB, 0xD614, 0xC7FC, 0xD615, + 0xC7FD, 0xD61C, 0xC7FE, 0xD620, 0xC8A1, 0xD624, 0xC8A2, 0xD62D, 0xC8A3, 0xD638, 0xC8A4, 0xD639, 0xC8A5, 0xD63C, 0xC8A6, 0xD640, + 0xC8A7, 0xD645, 0xC8A8, 0xD648, 0xC8A9, 0xD649, 0xC8AA, 0xD64B, 0xC8AB, 0xD64D, 0xC8AC, 0xD651, 0xC8AD, 0xD654, 0xC8AE, 0xD655, + 0xC8AF, 0xD658, 0xC8B0, 0xD65C, 0xC8B1, 0xD667, 0xC8B2, 0xD669, 0xC8B3, 0xD670, 0xC8B4, 0xD671, 0xC8B5, 0xD674, 0xC8B6, 0xD683, + 0xC8B7, 0xD685, 0xC8B8, 0xD68C, 0xC8B9, 0xD68D, 0xC8BA, 0xD690, 0xC8BB, 0xD694, 0xC8BC, 0xD69D, 0xC8BD, 0xD69F, 0xC8BE, 0xD6A1, + 0xC8BF, 0xD6A8, 0xC8C0, 0xD6AC, 0xC8C1, 0xD6B0, 0xC8C2, 0xD6B9, 0xC8C3, 0xD6BB, 0xC8C4, 0xD6C4, 0xC8C5, 0xD6C5, 0xC8C6, 0xD6C8, + 0xC8C7, 0xD6CC, 0xC8C8, 0xD6D1, 0xC8C9, 0xD6D4, 0xC8CA, 0xD6D7, 0xC8CB, 0xD6D9, 0xC8CC, 0xD6E0, 0xC8CD, 0xD6E4, 0xC8CE, 0xD6E8, + 0xC8CF, 0xD6F0, 0xC8D0, 0xD6F5, 0xC8D1, 0xD6FC, 0xC8D2, 0xD6FD, 0xC8D3, 0xD700, 0xC8D4, 0xD704, 0xC8D5, 0xD711, 0xC8D6, 0xD718, + 0xC8D7, 0xD719, 0xC8D8, 0xD71C, 0xC8D9, 0xD720, 0xC8DA, 0xD728, 0xC8DB, 0xD729, 0xC8DC, 0xD72B, 0xC8DD, 0xD72D, 0xC8DE, 0xD734, + 0xC8DF, 0xD735, 0xC8E0, 0xD738, 0xC8E1, 0xD73C, 0xC8E2, 0xD744, 0xC8E3, 0xD747, 0xC8E4, 0xD749, 0xC8E5, 0xD750, 0xC8E6, 0xD751, + 0xC8E7, 0xD754, 0xC8E8, 0xD756, 0xC8E9, 0xD757, 0xC8EA, 0xD758, 0xC8EB, 0xD759, 0xC8EC, 0xD760, 0xC8ED, 0xD761, 0xC8EE, 0xD763, + 0xC8EF, 0xD765, 0xC8F0, 0xD769, 0xC8F1, 0xD76C, 0xC8F2, 0xD770, 0xC8F3, 0xD774, 0xC8F4, 0xD77C, 0xC8F5, 0xD77D, 0xC8F6, 0xD781, + 0xC8F7, 0xD788, 0xC8F8, 0xD789, 0xC8F9, 0xD78C, 0xC8FA, 0xD790, 0xC8FB, 0xD798, 0xC8FC, 0xD799, 0xC8FD, 0xD79B, 0xC8FE, 0xD79D, + 0xCAA1, 0x4F3D, 0xCAA2, 0x4F73, 0xCAA3, 0x5047, 0xCAA4, 0x50F9, 0xCAA5, 0x52A0, 0xCAA6, 0x53EF, 0xCAA7, 0x5475, 0xCAA8, 0x54E5, + 0xCAA9, 0x5609, 0xCAAA, 0x5AC1, 0xCAAB, 0x5BB6, 0xCAAC, 0x6687, 0xCAAD, 0x67B6, 0xCAAE, 0x67B7, 0xCAAF, 0x67EF, 0xCAB0, 0x6B4C, + 0xCAB1, 0x73C2, 0xCAB2, 0x75C2, 0xCAB3, 0x7A3C, 0xCAB4, 0x82DB, 0xCAB5, 0x8304, 0xCAB6, 0x8857, 0xCAB7, 0x8888, 0xCAB8, 0x8A36, + 0xCAB9, 0x8CC8, 0xCABA, 0x8DCF, 0xCABB, 0x8EFB, 0xCABC, 0x8FE6, 0xCABD, 0x99D5, 0xCABE, 0x523B, 0xCABF, 0x5374, 0xCAC0, 0x5404, + 0xCAC1, 0x606A, 0xCAC2, 0x6164, 0xCAC3, 0x6BBC, 0xCAC4, 0x73CF, 0xCAC5, 0x811A, 0xCAC6, 0x89BA, 0xCAC7, 0x89D2, 0xCAC8, 0x95A3, + 0xCAC9, 0x4F83, 0xCACA, 0x520A, 0xCACB, 0x58BE, 0xCACC, 0x5978, 0xCACD, 0x59E6, 0xCACE, 0x5E72, 0xCACF, 0x5E79, 0xCAD0, 0x61C7, + 0xCAD1, 0x63C0, 0xCAD2, 0x6746, 0xCAD3, 0x67EC, 0xCAD4, 0x687F, 0xCAD5, 0x6F97, 0xCAD6, 0x764E, 0xCAD7, 0x770B, 0xCAD8, 0x78F5, + 0xCAD9, 0x7A08, 0xCADA, 0x7AFF, 0xCADB, 0x7C21, 0xCADC, 0x809D, 0xCADD, 0x826E, 0xCADE, 0x8271, 0xCADF, 0x8AEB, 0xCAE0, 0x9593, + 0xCAE1, 0x4E6B, 0xCAE2, 0x559D, 0xCAE3, 0x66F7, 0xCAE4, 0x6E34, 0xCAE5, 0x78A3, 0xCAE6, 0x7AED, 0xCAE7, 0x845B, 0xCAE8, 0x8910, + 0xCAE9, 0x874E, 0xCAEA, 0x97A8, 0xCAEB, 0x52D8, 0xCAEC, 0x574E, 0xCAED, 0x582A, 0xCAEE, 0x5D4C, 0xCAEF, 0x611F, 0xCAF0, 0x61BE, + 0xCAF1, 0x6221, 0xCAF2, 0x6562, 0xCAF3, 0x67D1, 0xCAF4, 0x6A44, 0xCAF5, 0x6E1B, 0xCAF6, 0x7518, 0xCAF7, 0x75B3, 0xCAF8, 0x76E3, + 0xCAF9, 0x77B0, 0xCAFA, 0x7D3A, 0xCAFB, 0x90AF, 0xCAFC, 0x9451, 0xCAFD, 0x9452, 0xCAFE, 0x9F95, 0xCBA1, 0x5323, 0xCBA2, 0x5CAC, + 0xCBA3, 0x7532, 0xCBA4, 0x80DB, 0xCBA5, 0x9240, 0xCBA6, 0x9598, 0xCBA7, 0x525B, 0xCBA8, 0x5808, 0xCBA9, 0x59DC, 0xCBAA, 0x5CA1, + 0xCBAB, 0x5D17, 0xCBAC, 0x5EB7, 0xCBAD, 0x5F3A, 0xCBAE, 0x5F4A, 0xCBAF, 0x6177, 0xCBB0, 0x6C5F, 0xCBB1, 0x757A, 0xCBB2, 0x7586, + 0xCBB3, 0x7CE0, 0xCBB4, 0x7D73, 0xCBB5, 0x7DB1, 0xCBB6, 0x7F8C, 0xCBB7, 0x8154, 0xCBB8, 0x8221, 0xCBB9, 0x8591, 0xCBBA, 0x8941, + 0xCBBB, 0x8B1B, 0xCBBC, 0x92FC, 0xCBBD, 0x964D, 0xCBBE, 0x9C47, 0xCBBF, 0x4ECB, 0xCBC0, 0x4EF7, 0xCBC1, 0x500B, 0xCBC2, 0x51F1, + 0xCBC3, 0x584F, 0xCBC4, 0x6137, 0xCBC5, 0x613E, 0xCBC6, 0x6168, 0xCBC7, 0x6539, 0xCBC8, 0x69EA, 0xCBC9, 0x6F11, 0xCBCA, 0x75A5, + 0xCBCB, 0x7686, 0xCBCC, 0x76D6, 0xCBCD, 0x7B87, 0xCBCE, 0x82A5, 0xCBCF, 0x84CB, 0xCBD0, 0xF900, 0xCBD1, 0x93A7, 0xCBD2, 0x958B, + 0xCBD3, 0x5580, 0xCBD4, 0x5BA2, 0xCBD5, 0x5751, 0xCBD6, 0xF901, 0xCBD7, 0x7CB3, 0xCBD8, 0x7FB9, 0xCBD9, 0x91B5, 0xCBDA, 0x5028, + 0xCBDB, 0x53BB, 0xCBDC, 0x5C45, 0xCBDD, 0x5DE8, 0xCBDE, 0x62D2, 0xCBDF, 0x636E, 0xCBE0, 0x64DA, 0xCBE1, 0x64E7, 0xCBE2, 0x6E20, + 0xCBE3, 0x70AC, 0xCBE4, 0x795B, 0xCBE5, 0x8DDD, 0xCBE6, 0x8E1E, 0xCBE7, 0xF902, 0xCBE8, 0x907D, 0xCBE9, 0x9245, 0xCBEA, 0x92F8, + 0xCBEB, 0x4E7E, 0xCBEC, 0x4EF6, 0xCBED, 0x5065, 0xCBEE, 0x5DFE, 0xCBEF, 0x5EFA, 0xCBF0, 0x6106, 0xCBF1, 0x6957, 0xCBF2, 0x8171, + 0xCBF3, 0x8654, 0xCBF4, 0x8E47, 0xCBF5, 0x9375, 0xCBF6, 0x9A2B, 0xCBF7, 0x4E5E, 0xCBF8, 0x5091, 0xCBF9, 0x6770, 0xCBFA, 0x6840, + 0xCBFB, 0x5109, 0xCBFC, 0x528D, 0xCBFD, 0x5292, 0xCBFE, 0x6AA2, 0xCCA1, 0x77BC, 0xCCA2, 0x9210, 0xCCA3, 0x9ED4, 0xCCA4, 0x52AB, + 0xCCA5, 0x602F, 0xCCA6, 0x8FF2, 0xCCA7, 0x5048, 0xCCA8, 0x61A9, 0xCCA9, 0x63ED, 0xCCAA, 0x64CA, 0xCCAB, 0x683C, 0xCCAC, 0x6A84, + 0xCCAD, 0x6FC0, 0xCCAE, 0x8188, 0xCCAF, 0x89A1, 0xCCB0, 0x9694, 0xCCB1, 0x5805, 0xCCB2, 0x727D, 0xCCB3, 0x72AC, 0xCCB4, 0x7504, + 0xCCB5, 0x7D79, 0xCCB6, 0x7E6D, 0xCCB7, 0x80A9, 0xCCB8, 0x898B, 0xCCB9, 0x8B74, 0xCCBA, 0x9063, 0xCCBB, 0x9D51, 0xCCBC, 0x6289, + 0xCCBD, 0x6C7A, 0xCCBE, 0x6F54, 0xCCBF, 0x7D50, 0xCCC0, 0x7F3A, 0xCCC1, 0x8A23, 0xCCC2, 0x517C, 0xCCC3, 0x614A, 0xCCC4, 0x7B9D, + 0xCCC5, 0x8B19, 0xCCC6, 0x9257, 0xCCC7, 0x938C, 0xCCC8, 0x4EAC, 0xCCC9, 0x4FD3, 0xCCCA, 0x501E, 0xCCCB, 0x50BE, 0xCCCC, 0x5106, + 0xCCCD, 0x52C1, 0xCCCE, 0x52CD, 0xCCCF, 0x537F, 0xCCD0, 0x5770, 0xCCD1, 0x5883, 0xCCD2, 0x5E9A, 0xCCD3, 0x5F91, 0xCCD4, 0x6176, + 0xCCD5, 0x61AC, 0xCCD6, 0x64CE, 0xCCD7, 0x656C, 0xCCD8, 0x666F, 0xCCD9, 0x66BB, 0xCCDA, 0x66F4, 0xCCDB, 0x6897, 0xCCDC, 0x6D87, + 0xCCDD, 0x7085, 0xCCDE, 0x70F1, 0xCCDF, 0x749F, 0xCCE0, 0x74A5, 0xCCE1, 0x74CA, 0xCCE2, 0x75D9, 0xCCE3, 0x786C, 0xCCE4, 0x78EC, + 0xCCE5, 0x7ADF, 0xCCE6, 0x7AF6, 0xCCE7, 0x7D45, 0xCCE8, 0x7D93, 0xCCE9, 0x8015, 0xCCEA, 0x803F, 0xCCEB, 0x811B, 0xCCEC, 0x8396, + 0xCCED, 0x8B66, 0xCCEE, 0x8F15, 0xCCEF, 0x9015, 0xCCF0, 0x93E1, 0xCCF1, 0x9803, 0xCCF2, 0x9838, 0xCCF3, 0x9A5A, 0xCCF4, 0x9BE8, + 0xCCF5, 0x4FC2, 0xCCF6, 0x5553, 0xCCF7, 0x583A, 0xCCF8, 0x5951, 0xCCF9, 0x5B63, 0xCCFA, 0x5C46, 0xCCFB, 0x60B8, 0xCCFC, 0x6212, + 0xCCFD, 0x6842, 0xCCFE, 0x68B0, 0xCDA1, 0x68E8, 0xCDA2, 0x6EAA, 0xCDA3, 0x754C, 0xCDA4, 0x7678, 0xCDA5, 0x78CE, 0xCDA6, 0x7A3D, + 0xCDA7, 0x7CFB, 0xCDA8, 0x7E6B, 0xCDA9, 0x7E7C, 0xCDAA, 0x8A08, 0xCDAB, 0x8AA1, 0xCDAC, 0x8C3F, 0xCDAD, 0x968E, 0xCDAE, 0x9DC4, + 0xCDAF, 0x53E4, 0xCDB0, 0x53E9, 0xCDB1, 0x544A, 0xCDB2, 0x5471, 0xCDB3, 0x56FA, 0xCDB4, 0x59D1, 0xCDB5, 0x5B64, 0xCDB6, 0x5C3B, + 0xCDB7, 0x5EAB, 0xCDB8, 0x62F7, 0xCDB9, 0x6537, 0xCDBA, 0x6545, 0xCDBB, 0x6572, 0xCDBC, 0x66A0, 0xCDBD, 0x67AF, 0xCDBE, 0x69C1, + 0xCDBF, 0x6CBD, 0xCDC0, 0x75FC, 0xCDC1, 0x7690, 0xCDC2, 0x777E, 0xCDC3, 0x7A3F, 0xCDC4, 0x7F94, 0xCDC5, 0x8003, 0xCDC6, 0x80A1, + 0xCDC7, 0x818F, 0xCDC8, 0x82E6, 0xCDC9, 0x82FD, 0xCDCA, 0x83F0, 0xCDCB, 0x85C1, 0xCDCC, 0x8831, 0xCDCD, 0x88B4, 0xCDCE, 0x8AA5, + 0xCDCF, 0xF903, 0xCDD0, 0x8F9C, 0xCDD1, 0x932E, 0xCDD2, 0x96C7, 0xCDD3, 0x9867, 0xCDD4, 0x9AD8, 0xCDD5, 0x9F13, 0xCDD6, 0x54ED, + 0xCDD7, 0x659B, 0xCDD8, 0x66F2, 0xCDD9, 0x688F, 0xCDDA, 0x7A40, 0xCDDB, 0x8C37, 0xCDDC, 0x9D60, 0xCDDD, 0x56F0, 0xCDDE, 0x5764, + 0xCDDF, 0x5D11, 0xCDE0, 0x6606, 0xCDE1, 0x68B1, 0xCDE2, 0x68CD, 0xCDE3, 0x6EFE, 0xCDE4, 0x7428, 0xCDE5, 0x889E, 0xCDE6, 0x9BE4, + 0xCDE7, 0x6C68, 0xCDE8, 0xF904, 0xCDE9, 0x9AA8, 0xCDEA, 0x4F9B, 0xCDEB, 0x516C, 0xCDEC, 0x5171, 0xCDED, 0x529F, 0xCDEE, 0x5B54, + 0xCDEF, 0x5DE5, 0xCDF0, 0x6050, 0xCDF1, 0x606D, 0xCDF2, 0x62F1, 0xCDF3, 0x63A7, 0xCDF4, 0x653B, 0xCDF5, 0x73D9, 0xCDF6, 0x7A7A, + 0xCDF7, 0x86A3, 0xCDF8, 0x8CA2, 0xCDF9, 0x978F, 0xCDFA, 0x4E32, 0xCDFB, 0x5BE1, 0xCDFC, 0x6208, 0xCDFD, 0x679C, 0xCDFE, 0x74DC, + 0xCEA1, 0x79D1, 0xCEA2, 0x83D3, 0xCEA3, 0x8A87, 0xCEA4, 0x8AB2, 0xCEA5, 0x8DE8, 0xCEA6, 0x904E, 0xCEA7, 0x934B, 0xCEA8, 0x9846, + 0xCEA9, 0x5ED3, 0xCEAA, 0x69E8, 0xCEAB, 0x85FF, 0xCEAC, 0x90ED, 0xCEAD, 0xF905, 0xCEAE, 0x51A0, 0xCEAF, 0x5B98, 0xCEB0, 0x5BEC, + 0xCEB1, 0x6163, 0xCEB2, 0x68FA, 0xCEB3, 0x6B3E, 0xCEB4, 0x704C, 0xCEB5, 0x742F, 0xCEB6, 0x74D8, 0xCEB7, 0x7BA1, 0xCEB8, 0x7F50, + 0xCEB9, 0x83C5, 0xCEBA, 0x89C0, 0xCEBB, 0x8CAB, 0xCEBC, 0x95DC, 0xCEBD, 0x9928, 0xCEBE, 0x522E, 0xCEBF, 0x605D, 0xCEC0, 0x62EC, + 0xCEC1, 0x9002, 0xCEC2, 0x4F8A, 0xCEC3, 0x5149, 0xCEC4, 0x5321, 0xCEC5, 0x58D9, 0xCEC6, 0x5EE3, 0xCEC7, 0x66E0, 0xCEC8, 0x6D38, + 0xCEC9, 0x709A, 0xCECA, 0x72C2, 0xCECB, 0x73D6, 0xCECC, 0x7B50, 0xCECD, 0x80F1, 0xCECE, 0x945B, 0xCECF, 0x5366, 0xCED0, 0x639B, + 0xCED1, 0x7F6B, 0xCED2, 0x4E56, 0xCED3, 0x5080, 0xCED4, 0x584A, 0xCED5, 0x58DE, 0xCED6, 0x602A, 0xCED7, 0x6127, 0xCED8, 0x62D0, + 0xCED9, 0x69D0, 0xCEDA, 0x9B41, 0xCEDB, 0x5B8F, 0xCEDC, 0x7D18, 0xCEDD, 0x80B1, 0xCEDE, 0x8F5F, 0xCEDF, 0x4EA4, 0xCEE0, 0x50D1, + 0xCEE1, 0x54AC, 0xCEE2, 0x55AC, 0xCEE3, 0x5B0C, 0xCEE4, 0x5DA0, 0xCEE5, 0x5DE7, 0xCEE6, 0x652A, 0xCEE7, 0x654E, 0xCEE8, 0x6821, + 0xCEE9, 0x6A4B, 0xCEEA, 0x72E1, 0xCEEB, 0x768E, 0xCEEC, 0x77EF, 0xCEED, 0x7D5E, 0xCEEE, 0x7FF9, 0xCEEF, 0x81A0, 0xCEF0, 0x854E, + 0xCEF1, 0x86DF, 0xCEF2, 0x8F03, 0xCEF3, 0x8F4E, 0xCEF4, 0x90CA, 0xCEF5, 0x9903, 0xCEF6, 0x9A55, 0xCEF7, 0x9BAB, 0xCEF8, 0x4E18, + 0xCEF9, 0x4E45, 0xCEFA, 0x4E5D, 0xCEFB, 0x4EC7, 0xCEFC, 0x4FF1, 0xCEFD, 0x5177, 0xCEFE, 0x52FE, 0xCFA1, 0x5340, 0xCFA2, 0x53E3, + 0xCFA3, 0x53E5, 0xCFA4, 0x548E, 0xCFA5, 0x5614, 0xCFA6, 0x5775, 0xCFA7, 0x57A2, 0xCFA8, 0x5BC7, 0xCFA9, 0x5D87, 0xCFAA, 0x5ED0, + 0xCFAB, 0x61FC, 0xCFAC, 0x62D8, 0xCFAD, 0x6551, 0xCFAE, 0x67B8, 0xCFAF, 0x67E9, 0xCFB0, 0x69CB, 0xCFB1, 0x6B50, 0xCFB2, 0x6BC6, + 0xCFB3, 0x6BEC, 0xCFB4, 0x6C42, 0xCFB5, 0x6E9D, 0xCFB6, 0x7078, 0xCFB7, 0x72D7, 0xCFB8, 0x7396, 0xCFB9, 0x7403, 0xCFBA, 0x77BF, + 0xCFBB, 0x77E9, 0xCFBC, 0x7A76, 0xCFBD, 0x7D7F, 0xCFBE, 0x8009, 0xCFBF, 0x81FC, 0xCFC0, 0x8205, 0xCFC1, 0x820A, 0xCFC2, 0x82DF, + 0xCFC3, 0x8862, 0xCFC4, 0x8B33, 0xCFC5, 0x8CFC, 0xCFC6, 0x8EC0, 0xCFC7, 0x9011, 0xCFC8, 0x90B1, 0xCFC9, 0x9264, 0xCFCA, 0x92B6, + 0xCFCB, 0x99D2, 0xCFCC, 0x9A45, 0xCFCD, 0x9CE9, 0xCFCE, 0x9DD7, 0xCFCF, 0x9F9C, 0xCFD0, 0x570B, 0xCFD1, 0x5C40, 0xCFD2, 0x83CA, + 0xCFD3, 0x97A0, 0xCFD4, 0x97AB, 0xCFD5, 0x9EB4, 0xCFD6, 0x541B, 0xCFD7, 0x7A98, 0xCFD8, 0x7FA4, 0xCFD9, 0x88D9, 0xCFDA, 0x8ECD, + 0xCFDB, 0x90E1, 0xCFDC, 0x5800, 0xCFDD, 0x5C48, 0xCFDE, 0x6398, 0xCFDF, 0x7A9F, 0xCFE0, 0x5BAE, 0xCFE1, 0x5F13, 0xCFE2, 0x7A79, + 0xCFE3, 0x7AAE, 0xCFE4, 0x828E, 0xCFE5, 0x8EAC, 0xCFE6, 0x5026, 0xCFE7, 0x5238, 0xCFE8, 0x52F8, 0xCFE9, 0x5377, 0xCFEA, 0x5708, + 0xCFEB, 0x62F3, 0xCFEC, 0x6372, 0xCFED, 0x6B0A, 0xCFEE, 0x6DC3, 0xCFEF, 0x7737, 0xCFF0, 0x53A5, 0xCFF1, 0x7357, 0xCFF2, 0x8568, + 0xCFF3, 0x8E76, 0xCFF4, 0x95D5, 0xCFF5, 0x673A, 0xCFF6, 0x6AC3, 0xCFF7, 0x6F70, 0xCFF8, 0x8A6D, 0xCFF9, 0x8ECC, 0xCFFA, 0x994B, + 0xCFFB, 0xF906, 0xCFFC, 0x6677, 0xCFFD, 0x6B78, 0xCFFE, 0x8CB4, 0xD0A1, 0x9B3C, 0xD0A2, 0xF907, 0xD0A3, 0x53EB, 0xD0A4, 0x572D, + 0xD0A5, 0x594E, 0xD0A6, 0x63C6, 0xD0A7, 0x69FB, 0xD0A8, 0x73EA, 0xD0A9, 0x7845, 0xD0AA, 0x7ABA, 0xD0AB, 0x7AC5, 0xD0AC, 0x7CFE, + 0xD0AD, 0x8475, 0xD0AE, 0x898F, 0xD0AF, 0x8D73, 0xD0B0, 0x9035, 0xD0B1, 0x95A8, 0xD0B2, 0x52FB, 0xD0B3, 0x5747, 0xD0B4, 0x7547, + 0xD0B5, 0x7B60, 0xD0B6, 0x83CC, 0xD0B7, 0x921E, 0xD0B8, 0xF908, 0xD0B9, 0x6A58, 0xD0BA, 0x514B, 0xD0BB, 0x524B, 0xD0BC, 0x5287, + 0xD0BD, 0x621F, 0xD0BE, 0x68D8, 0xD0BF, 0x6975, 0xD0C0, 0x9699, 0xD0C1, 0x50C5, 0xD0C2, 0x52A4, 0xD0C3, 0x52E4, 0xD0C4, 0x61C3, + 0xD0C5, 0x65A4, 0xD0C6, 0x6839, 0xD0C7, 0x69FF, 0xD0C8, 0x747E, 0xD0C9, 0x7B4B, 0xD0CA, 0x82B9, 0xD0CB, 0x83EB, 0xD0CC, 0x89B2, + 0xD0CD, 0x8B39, 0xD0CE, 0x8FD1, 0xD0CF, 0x9949, 0xD0D0, 0xF909, 0xD0D1, 0x4ECA, 0xD0D2, 0x5997, 0xD0D3, 0x64D2, 0xD0D4, 0x6611, + 0xD0D5, 0x6A8E, 0xD0D6, 0x7434, 0xD0D7, 0x7981, 0xD0D8, 0x79BD, 0xD0D9, 0x82A9, 0xD0DA, 0x887E, 0xD0DB, 0x887F, 0xD0DC, 0x895F, + 0xD0DD, 0xF90A, 0xD0DE, 0x9326, 0xD0DF, 0x4F0B, 0xD0E0, 0x53CA, 0xD0E1, 0x6025, 0xD0E2, 0x6271, 0xD0E3, 0x6C72, 0xD0E4, 0x7D1A, + 0xD0E5, 0x7D66, 0xD0E6, 0x4E98, 0xD0E7, 0x5162, 0xD0E8, 0x77DC, 0xD0E9, 0x80AF, 0xD0EA, 0x4F01, 0xD0EB, 0x4F0E, 0xD0EC, 0x5176, + 0xD0ED, 0x5180, 0xD0EE, 0x55DC, 0xD0EF, 0x5668, 0xD0F0, 0x573B, 0xD0F1, 0x57FA, 0xD0F2, 0x57FC, 0xD0F3, 0x5914, 0xD0F4, 0x5947, + 0xD0F5, 0x5993, 0xD0F6, 0x5BC4, 0xD0F7, 0x5C90, 0xD0F8, 0x5D0E, 0xD0F9, 0x5DF1, 0xD0FA, 0x5E7E, 0xD0FB, 0x5FCC, 0xD0FC, 0x6280, + 0xD0FD, 0x65D7, 0xD0FE, 0x65E3, 0xD1A1, 0x671E, 0xD1A2, 0x671F, 0xD1A3, 0x675E, 0xD1A4, 0x68CB, 0xD1A5, 0x68C4, 0xD1A6, 0x6A5F, + 0xD1A7, 0x6B3A, 0xD1A8, 0x6C23, 0xD1A9, 0x6C7D, 0xD1AA, 0x6C82, 0xD1AB, 0x6DC7, 0xD1AC, 0x7398, 0xD1AD, 0x7426, 0xD1AE, 0x742A, + 0xD1AF, 0x7482, 0xD1B0, 0x74A3, 0xD1B1, 0x7578, 0xD1B2, 0x757F, 0xD1B3, 0x7881, 0xD1B4, 0x78EF, 0xD1B5, 0x7941, 0xD1B6, 0x7947, + 0xD1B7, 0x7948, 0xD1B8, 0x797A, 0xD1B9, 0x7B95, 0xD1BA, 0x7D00, 0xD1BB, 0x7DBA, 0xD1BC, 0x7F88, 0xD1BD, 0x8006, 0xD1BE, 0x802D, + 0xD1BF, 0x808C, 0xD1C0, 0x8A18, 0xD1C1, 0x8B4F, 0xD1C2, 0x8C48, 0xD1C3, 0x8D77, 0xD1C4, 0x9321, 0xD1C5, 0x9324, 0xD1C6, 0x98E2, + 0xD1C7, 0x9951, 0xD1C8, 0x9A0E, 0xD1C9, 0x9A0F, 0xD1CA, 0x9A65, 0xD1CB, 0x9E92, 0xD1CC, 0x7DCA, 0xD1CD, 0x4F76, 0xD1CE, 0x5409, + 0xD1CF, 0x62EE, 0xD1D0, 0x6854, 0xD1D1, 0x91D1, 0xD1D2, 0x55AB, 0xD1D3, 0x513A, 0xD1D4, 0xF90B, 0xD1D5, 0xF90C, 0xD1D6, 0x5A1C, + 0xD1D7, 0x61E6, 0xD1D8, 0xF90D, 0xD1D9, 0x62CF, 0xD1DA, 0x62FF, 0xD1DB, 0xF90E, 0xD1DC, 0xF90F, 0xD1DD, 0xF910, 0xD1DE, 0xF911, + 0xD1DF, 0xF912, 0xD1E0, 0xF913, 0xD1E1, 0x90A3, 0xD1E2, 0xF914, 0xD1E3, 0xF915, 0xD1E4, 0xF916, 0xD1E5, 0xF917, 0xD1E6, 0xF918, + 0xD1E7, 0x8AFE, 0xD1E8, 0xF919, 0xD1E9, 0xF91A, 0xD1EA, 0xF91B, 0xD1EB, 0xF91C, 0xD1EC, 0x6696, 0xD1ED, 0xF91D, 0xD1EE, 0x7156, + 0xD1EF, 0xF91E, 0xD1F0, 0xF91F, 0xD1F1, 0x96E3, 0xD1F2, 0xF920, 0xD1F3, 0x634F, 0xD1F4, 0x637A, 0xD1F5, 0x5357, 0xD1F6, 0xF921, + 0xD1F7, 0x678F, 0xD1F8, 0x6960, 0xD1F9, 0x6E73, 0xD1FA, 0xF922, 0xD1FB, 0x7537, 0xD1FC, 0xF923, 0xD1FD, 0xF924, 0xD1FE, 0xF925, + 0xD2A1, 0x7D0D, 0xD2A2, 0xF926, 0xD2A3, 0xF927, 0xD2A4, 0x8872, 0xD2A5, 0x56CA, 0xD2A6, 0x5A18, 0xD2A7, 0xF928, 0xD2A8, 0xF929, + 0xD2A9, 0xF92A, 0xD2AA, 0xF92B, 0xD2AB, 0xF92C, 0xD2AC, 0x4E43, 0xD2AD, 0xF92D, 0xD2AE, 0x5167, 0xD2AF, 0x5948, 0xD2B0, 0x67F0, + 0xD2B1, 0x8010, 0xD2B2, 0xF92E, 0xD2B3, 0x5973, 0xD2B4, 0x5E74, 0xD2B5, 0x649A, 0xD2B6, 0x79CA, 0xD2B7, 0x5FF5, 0xD2B8, 0x606C, + 0xD2B9, 0x62C8, 0xD2BA, 0x637B, 0xD2BB, 0x5BE7, 0xD2BC, 0x5BD7, 0xD2BD, 0x52AA, 0xD2BE, 0xF92F, 0xD2BF, 0x5974, 0xD2C0, 0x5F29, + 0xD2C1, 0x6012, 0xD2C2, 0xF930, 0xD2C3, 0xF931, 0xD2C4, 0xF932, 0xD2C5, 0x7459, 0xD2C6, 0xF933, 0xD2C7, 0xF934, 0xD2C8, 0xF935, + 0xD2C9, 0xF936, 0xD2CA, 0xF937, 0xD2CB, 0xF938, 0xD2CC, 0x99D1, 0xD2CD, 0xF939, 0xD2CE, 0xF93A, 0xD2CF, 0xF93B, 0xD2D0, 0xF93C, + 0xD2D1, 0xF93D, 0xD2D2, 0xF93E, 0xD2D3, 0xF93F, 0xD2D4, 0xF940, 0xD2D5, 0xF941, 0xD2D6, 0xF942, 0xD2D7, 0xF943, 0xD2D8, 0x6FC3, + 0xD2D9, 0xF944, 0xD2DA, 0xF945, 0xD2DB, 0x81BF, 0xD2DC, 0x8FB2, 0xD2DD, 0x60F1, 0xD2DE, 0xF946, 0xD2DF, 0xF947, 0xD2E0, 0x8166, + 0xD2E1, 0xF948, 0xD2E2, 0xF949, 0xD2E3, 0x5C3F, 0xD2E4, 0xF94A, 0xD2E5, 0xF94B, 0xD2E6, 0xF94C, 0xD2E7, 0xF94D, 0xD2E8, 0xF94E, + 0xD2E9, 0xF94F, 0xD2EA, 0xF950, 0xD2EB, 0xF951, 0xD2EC, 0x5AE9, 0xD2ED, 0x8A25, 0xD2EE, 0x677B, 0xD2EF, 0x7D10, 0xD2F0, 0xF952, + 0xD2F1, 0xF953, 0xD2F2, 0xF954, 0xD2F3, 0xF955, 0xD2F4, 0xF956, 0xD2F5, 0xF957, 0xD2F6, 0x80FD, 0xD2F7, 0xF958, 0xD2F8, 0xF959, + 0xD2F9, 0x5C3C, 0xD2FA, 0x6CE5, 0xD2FB, 0x533F, 0xD2FC, 0x6EBA, 0xD2FD, 0x591A, 0xD2FE, 0x8336, 0xD3A1, 0x4E39, 0xD3A2, 0x4EB6, + 0xD3A3, 0x4F46, 0xD3A4, 0x55AE, 0xD3A5, 0x5718, 0xD3A6, 0x58C7, 0xD3A7, 0x5F56, 0xD3A8, 0x65B7, 0xD3A9, 0x65E6, 0xD3AA, 0x6A80, + 0xD3AB, 0x6BB5, 0xD3AC, 0x6E4D, 0xD3AD, 0x77ED, 0xD3AE, 0x7AEF, 0xD3AF, 0x7C1E, 0xD3B0, 0x7DDE, 0xD3B1, 0x86CB, 0xD3B2, 0x8892, + 0xD3B3, 0x9132, 0xD3B4, 0x935B, 0xD3B5, 0x64BB, 0xD3B6, 0x6FBE, 0xD3B7, 0x737A, 0xD3B8, 0x75B8, 0xD3B9, 0x9054, 0xD3BA, 0x5556, + 0xD3BB, 0x574D, 0xD3BC, 0x61BA, 0xD3BD, 0x64D4, 0xD3BE, 0x66C7, 0xD3BF, 0x6DE1, 0xD3C0, 0x6E5B, 0xD3C1, 0x6F6D, 0xD3C2, 0x6FB9, + 0xD3C3, 0x75F0, 0xD3C4, 0x8043, 0xD3C5, 0x81BD, 0xD3C6, 0x8541, 0xD3C7, 0x8983, 0xD3C8, 0x8AC7, 0xD3C9, 0x8B5A, 0xD3CA, 0x931F, + 0xD3CB, 0x6C93, 0xD3CC, 0x7553, 0xD3CD, 0x7B54, 0xD3CE, 0x8E0F, 0xD3CF, 0x905D, 0xD3D0, 0x5510, 0xD3D1, 0x5802, 0xD3D2, 0x5858, + 0xD3D3, 0x5E62, 0xD3D4, 0x6207, 0xD3D5, 0x649E, 0xD3D6, 0x68E0, 0xD3D7, 0x7576, 0xD3D8, 0x7CD6, 0xD3D9, 0x87B3, 0xD3DA, 0x9EE8, + 0xD3DB, 0x4EE3, 0xD3DC, 0x5788, 0xD3DD, 0x576E, 0xD3DE, 0x5927, 0xD3DF, 0x5C0D, 0xD3E0, 0x5CB1, 0xD3E1, 0x5E36, 0xD3E2, 0x5F85, + 0xD3E3, 0x6234, 0xD3E4, 0x64E1, 0xD3E5, 0x73B3, 0xD3E6, 0x81FA, 0xD3E7, 0x888B, 0xD3E8, 0x8CB8, 0xD3E9, 0x968A, 0xD3EA, 0x9EDB, + 0xD3EB, 0x5B85, 0xD3EC, 0x5FB7, 0xD3ED, 0x60B3, 0xD3EE, 0x5012, 0xD3EF, 0x5200, 0xD3F0, 0x5230, 0xD3F1, 0x5716, 0xD3F2, 0x5835, + 0xD3F3, 0x5857, 0xD3F4, 0x5C0E, 0xD3F5, 0x5C60, 0xD3F6, 0x5CF6, 0xD3F7, 0x5D8B, 0xD3F8, 0x5EA6, 0xD3F9, 0x5F92, 0xD3FA, 0x60BC, + 0xD3FB, 0x6311, 0xD3FC, 0x6389, 0xD3FD, 0x6417, 0xD3FE, 0x6843, 0xD4A1, 0x68F9, 0xD4A2, 0x6AC2, 0xD4A3, 0x6DD8, 0xD4A4, 0x6E21, + 0xD4A5, 0x6ED4, 0xD4A6, 0x6FE4, 0xD4A7, 0x71FE, 0xD4A8, 0x76DC, 0xD4A9, 0x7779, 0xD4AA, 0x79B1, 0xD4AB, 0x7A3B, 0xD4AC, 0x8404, + 0xD4AD, 0x89A9, 0xD4AE, 0x8CED, 0xD4AF, 0x8DF3, 0xD4B0, 0x8E48, 0xD4B1, 0x9003, 0xD4B2, 0x9014, 0xD4B3, 0x9053, 0xD4B4, 0x90FD, + 0xD4B5, 0x934D, 0xD4B6, 0x9676, 0xD4B7, 0x97DC, 0xD4B8, 0x6BD2, 0xD4B9, 0x7006, 0xD4BA, 0x7258, 0xD4BB, 0x72A2, 0xD4BC, 0x7368, + 0xD4BD, 0x7763, 0xD4BE, 0x79BF, 0xD4BF, 0x7BE4, 0xD4C0, 0x7E9B, 0xD4C1, 0x8B80, 0xD4C2, 0x58A9, 0xD4C3, 0x60C7, 0xD4C4, 0x6566, + 0xD4C5, 0x65FD, 0xD4C6, 0x66BE, 0xD4C7, 0x6C8C, 0xD4C8, 0x711E, 0xD4C9, 0x71C9, 0xD4CA, 0x8C5A, 0xD4CB, 0x9813, 0xD4CC, 0x4E6D, + 0xD4CD, 0x7A81, 0xD4CE, 0x4EDD, 0xD4CF, 0x51AC, 0xD4D0, 0x51CD, 0xD4D1, 0x52D5, 0xD4D2, 0x540C, 0xD4D3, 0x61A7, 0xD4D4, 0x6771, + 0xD4D5, 0x6850, 0xD4D6, 0x68DF, 0xD4D7, 0x6D1E, 0xD4D8, 0x6F7C, 0xD4D9, 0x75BC, 0xD4DA, 0x77B3, 0xD4DB, 0x7AE5, 0xD4DC, 0x80F4, + 0xD4DD, 0x8463, 0xD4DE, 0x9285, 0xD4DF, 0x515C, 0xD4E0, 0x6597, 0xD4E1, 0x675C, 0xD4E2, 0x6793, 0xD4E3, 0x75D8, 0xD4E4, 0x7AC7, + 0xD4E5, 0x8373, 0xD4E6, 0xF95A, 0xD4E7, 0x8C46, 0xD4E8, 0x9017, 0xD4E9, 0x982D, 0xD4EA, 0x5C6F, 0xD4EB, 0x81C0, 0xD4EC, 0x829A, + 0xD4ED, 0x9041, 0xD4EE, 0x906F, 0xD4EF, 0x920D, 0xD4F0, 0x5F97, 0xD4F1, 0x5D9D, 0xD4F2, 0x6A59, 0xD4F3, 0x71C8, 0xD4F4, 0x767B, + 0xD4F5, 0x7B49, 0xD4F6, 0x85E4, 0xD4F7, 0x8B04, 0xD4F8, 0x9127, 0xD4F9, 0x9A30, 0xD4FA, 0x5587, 0xD4FB, 0x61F6, 0xD4FC, 0xF95B, + 0xD4FD, 0x7669, 0xD4FE, 0x7F85, 0xD5A1, 0x863F, 0xD5A2, 0x87BA, 0xD5A3, 0x88F8, 0xD5A4, 0x908F, 0xD5A5, 0xF95C, 0xD5A6, 0x6D1B, + 0xD5A7, 0x70D9, 0xD5A8, 0x73DE, 0xD5A9, 0x7D61, 0xD5AA, 0x843D, 0xD5AB, 0xF95D, 0xD5AC, 0x916A, 0xD5AD, 0x99F1, 0xD5AE, 0xF95E, + 0xD5AF, 0x4E82, 0xD5B0, 0x5375, 0xD5B1, 0x6B04, 0xD5B2, 0x6B12, 0xD5B3, 0x703E, 0xD5B4, 0x721B, 0xD5B5, 0x862D, 0xD5B6, 0x9E1E, + 0xD5B7, 0x524C, 0xD5B8, 0x8FA3, 0xD5B9, 0x5D50, 0xD5BA, 0x64E5, 0xD5BB, 0x652C, 0xD5BC, 0x6B16, 0xD5BD, 0x6FEB, 0xD5BE, 0x7C43, + 0xD5BF, 0x7E9C, 0xD5C0, 0x85CD, 0xD5C1, 0x8964, 0xD5C2, 0x89BD, 0xD5C3, 0x62C9, 0xD5C4, 0x81D8, 0xD5C5, 0x881F, 0xD5C6, 0x5ECA, + 0xD5C7, 0x6717, 0xD5C8, 0x6D6A, 0xD5C9, 0x72FC, 0xD5CA, 0x7405, 0xD5CB, 0x746F, 0xD5CC, 0x8782, 0xD5CD, 0x90DE, 0xD5CE, 0x4F86, + 0xD5CF, 0x5D0D, 0xD5D0, 0x5FA0, 0xD5D1, 0x840A, 0xD5D2, 0x51B7, 0xD5D3, 0x63A0, 0xD5D4, 0x7565, 0xD5D5, 0x4EAE, 0xD5D6, 0x5006, + 0xD5D7, 0x5169, 0xD5D8, 0x51C9, 0xD5D9, 0x6881, 0xD5DA, 0x6A11, 0xD5DB, 0x7CAE, 0xD5DC, 0x7CB1, 0xD5DD, 0x7CE7, 0xD5DE, 0x826F, + 0xD5DF, 0x8AD2, 0xD5E0, 0x8F1B, 0xD5E1, 0x91CF, 0xD5E2, 0x4FB6, 0xD5E3, 0x5137, 0xD5E4, 0x52F5, 0xD5E5, 0x5442, 0xD5E6, 0x5EEC, + 0xD5E7, 0x616E, 0xD5E8, 0x623E, 0xD5E9, 0x65C5, 0xD5EA, 0x6ADA, 0xD5EB, 0x6FFE, 0xD5EC, 0x792A, 0xD5ED, 0x85DC, 0xD5EE, 0x8823, + 0xD5EF, 0x95AD, 0xD5F0, 0x9A62, 0xD5F1, 0x9A6A, 0xD5F2, 0x9E97, 0xD5F3, 0x9ECE, 0xD5F4, 0x529B, 0xD5F5, 0x66C6, 0xD5F6, 0x6B77, + 0xD5F7, 0x701D, 0xD5F8, 0x792B, 0xD5F9, 0x8F62, 0xD5FA, 0x9742, 0xD5FB, 0x6190, 0xD5FC, 0x6200, 0xD5FD, 0x6523, 0xD5FE, 0x6F23, + 0xD6A1, 0x7149, 0xD6A2, 0x7489, 0xD6A3, 0x7DF4, 0xD6A4, 0x806F, 0xD6A5, 0x84EE, 0xD6A6, 0x8F26, 0xD6A7, 0x9023, 0xD6A8, 0x934A, + 0xD6A9, 0x51BD, 0xD6AA, 0x5217, 0xD6AB, 0x52A3, 0xD6AC, 0x6D0C, 0xD6AD, 0x70C8, 0xD6AE, 0x88C2, 0xD6AF, 0x5EC9, 0xD6B0, 0x6582, + 0xD6B1, 0x6BAE, 0xD6B2, 0x6FC2, 0xD6B3, 0x7C3E, 0xD6B4, 0x7375, 0xD6B5, 0x4EE4, 0xD6B6, 0x4F36, 0xD6B7, 0x56F9, 0xD6B8, 0xF95F, + 0xD6B9, 0x5CBA, 0xD6BA, 0x5DBA, 0xD6BB, 0x601C, 0xD6BC, 0x73B2, 0xD6BD, 0x7B2D, 0xD6BE, 0x7F9A, 0xD6BF, 0x7FCE, 0xD6C0, 0x8046, + 0xD6C1, 0x901E, 0xD6C2, 0x9234, 0xD6C3, 0x96F6, 0xD6C4, 0x9748, 0xD6C5, 0x9818, 0xD6C6, 0x9F61, 0xD6C7, 0x4F8B, 0xD6C8, 0x6FA7, + 0xD6C9, 0x79AE, 0xD6CA, 0x91B4, 0xD6CB, 0x96B7, 0xD6CC, 0x52DE, 0xD6CD, 0xF960, 0xD6CE, 0x6488, 0xD6CF, 0x64C4, 0xD6D0, 0x6AD3, + 0xD6D1, 0x6F5E, 0xD6D2, 0x7018, 0xD6D3, 0x7210, 0xD6D4, 0x76E7, 0xD6D5, 0x8001, 0xD6D6, 0x8606, 0xD6D7, 0x865C, 0xD6D8, 0x8DEF, + 0xD6D9, 0x8F05, 0xD6DA, 0x9732, 0xD6DB, 0x9B6F, 0xD6DC, 0x9DFA, 0xD6DD, 0x9E75, 0xD6DE, 0x788C, 0xD6DF, 0x797F, 0xD6E0, 0x7DA0, + 0xD6E1, 0x83C9, 0xD6E2, 0x9304, 0xD6E3, 0x9E7F, 0xD6E4, 0x9E93, 0xD6E5, 0x8AD6, 0xD6E6, 0x58DF, 0xD6E7, 0x5F04, 0xD6E8, 0x6727, + 0xD6E9, 0x7027, 0xD6EA, 0x74CF, 0xD6EB, 0x7C60, 0xD6EC, 0x807E, 0xD6ED, 0x5121, 0xD6EE, 0x7028, 0xD6EF, 0x7262, 0xD6F0, 0x78CA, + 0xD6F1, 0x8CC2, 0xD6F2, 0x8CDA, 0xD6F3, 0x8CF4, 0xD6F4, 0x96F7, 0xD6F5, 0x4E86, 0xD6F6, 0x50DA, 0xD6F7, 0x5BEE, 0xD6F8, 0x5ED6, + 0xD6F9, 0x6599, 0xD6FA, 0x71CE, 0xD6FB, 0x7642, 0xD6FC, 0x77AD, 0xD6FD, 0x804A, 0xD6FE, 0x84FC, 0xD7A1, 0x907C, 0xD7A2, 0x9B27, + 0xD7A3, 0x9F8D, 0xD7A4, 0x58D8, 0xD7A5, 0x5A41, 0xD7A6, 0x5C62, 0xD7A7, 0x6A13, 0xD7A8, 0x6DDA, 0xD7A9, 0x6F0F, 0xD7AA, 0x763B, + 0xD7AB, 0x7D2F, 0xD7AC, 0x7E37, 0xD7AD, 0x851E, 0xD7AE, 0x8938, 0xD7AF, 0x93E4, 0xD7B0, 0x964B, 0xD7B1, 0x5289, 0xD7B2, 0x65D2, + 0xD7B3, 0x67F3, 0xD7B4, 0x69B4, 0xD7B5, 0x6D41, 0xD7B6, 0x6E9C, 0xD7B7, 0x700F, 0xD7B8, 0x7409, 0xD7B9, 0x7460, 0xD7BA, 0x7559, + 0xD7BB, 0x7624, 0xD7BC, 0x786B, 0xD7BD, 0x8B2C, 0xD7BE, 0x985E, 0xD7BF, 0x516D, 0xD7C0, 0x622E, 0xD7C1, 0x9678, 0xD7C2, 0x4F96, + 0xD7C3, 0x502B, 0xD7C4, 0x5D19, 0xD7C5, 0x6DEA, 0xD7C6, 0x7DB8, 0xD7C7, 0x8F2A, 0xD7C8, 0x5F8B, 0xD7C9, 0x6144, 0xD7CA, 0x6817, + 0xD7CB, 0xF961, 0xD7CC, 0x9686, 0xD7CD, 0x52D2, 0xD7CE, 0x808B, 0xD7CF, 0x51DC, 0xD7D0, 0x51CC, 0xD7D1, 0x695E, 0xD7D2, 0x7A1C, + 0xD7D3, 0x7DBE, 0xD7D4, 0x83F1, 0xD7D5, 0x9675, 0xD7D6, 0x4FDA, 0xD7D7, 0x5229, 0xD7D8, 0x5398, 0xD7D9, 0x540F, 0xD7DA, 0x550E, + 0xD7DB, 0x5C65, 0xD7DC, 0x60A7, 0xD7DD, 0x674E, 0xD7DE, 0x68A8, 0xD7DF, 0x6D6C, 0xD7E0, 0x7281, 0xD7E1, 0x72F8, 0xD7E2, 0x7406, + 0xD7E3, 0x7483, 0xD7E4, 0xF962, 0xD7E5, 0x75E2, 0xD7E6, 0x7C6C, 0xD7E7, 0x7F79, 0xD7E8, 0x7FB8, 0xD7E9, 0x8389, 0xD7EA, 0x88CF, + 0xD7EB, 0x88E1, 0xD7EC, 0x91CC, 0xD7ED, 0x91D0, 0xD7EE, 0x96E2, 0xD7EF, 0x9BC9, 0xD7F0, 0x541D, 0xD7F1, 0x6F7E, 0xD7F2, 0x71D0, + 0xD7F3, 0x7498, 0xD7F4, 0x85FA, 0xD7F5, 0x8EAA, 0xD7F6, 0x96A3, 0xD7F7, 0x9C57, 0xD7F8, 0x9E9F, 0xD7F9, 0x6797, 0xD7FA, 0x6DCB, + 0xD7FB, 0x7433, 0xD7FC, 0x81E8, 0xD7FD, 0x9716, 0xD7FE, 0x782C, 0xD8A1, 0x7ACB, 0xD8A2, 0x7B20, 0xD8A3, 0x7C92, 0xD8A4, 0x6469, + 0xD8A5, 0x746A, 0xD8A6, 0x75F2, 0xD8A7, 0x78BC, 0xD8A8, 0x78E8, 0xD8A9, 0x99AC, 0xD8AA, 0x9B54, 0xD8AB, 0x9EBB, 0xD8AC, 0x5BDE, + 0xD8AD, 0x5E55, 0xD8AE, 0x6F20, 0xD8AF, 0x819C, 0xD8B0, 0x83AB, 0xD8B1, 0x9088, 0xD8B2, 0x4E07, 0xD8B3, 0x534D, 0xD8B4, 0x5A29, + 0xD8B5, 0x5DD2, 0xD8B6, 0x5F4E, 0xD8B7, 0x6162, 0xD8B8, 0x633D, 0xD8B9, 0x6669, 0xD8BA, 0x66FC, 0xD8BB, 0x6EFF, 0xD8BC, 0x6F2B, + 0xD8BD, 0x7063, 0xD8BE, 0x779E, 0xD8BF, 0x842C, 0xD8C0, 0x8513, 0xD8C1, 0x883B, 0xD8C2, 0x8F13, 0xD8C3, 0x9945, 0xD8C4, 0x9C3B, + 0xD8C5, 0x551C, 0xD8C6, 0x62B9, 0xD8C7, 0x672B, 0xD8C8, 0x6CAB, 0xD8C9, 0x8309, 0xD8CA, 0x896A, 0xD8CB, 0x977A, 0xD8CC, 0x4EA1, + 0xD8CD, 0x5984, 0xD8CE, 0x5FD8, 0xD8CF, 0x5FD9, 0xD8D0, 0x671B, 0xD8D1, 0x7DB2, 0xD8D2, 0x7F54, 0xD8D3, 0x8292, 0xD8D4, 0x832B, + 0xD8D5, 0x83BD, 0xD8D6, 0x8F1E, 0xD8D7, 0x9099, 0xD8D8, 0x57CB, 0xD8D9, 0x59B9, 0xD8DA, 0x5A92, 0xD8DB, 0x5BD0, 0xD8DC, 0x6627, + 0xD8DD, 0x679A, 0xD8DE, 0x6885, 0xD8DF, 0x6BCF, 0xD8E0, 0x7164, 0xD8E1, 0x7F75, 0xD8E2, 0x8CB7, 0xD8E3, 0x8CE3, 0xD8E4, 0x9081, + 0xD8E5, 0x9B45, 0xD8E6, 0x8108, 0xD8E7, 0x8C8A, 0xD8E8, 0x964C, 0xD8E9, 0x9A40, 0xD8EA, 0x9EA5, 0xD8EB, 0x5B5F, 0xD8EC, 0x6C13, + 0xD8ED, 0x731B, 0xD8EE, 0x76F2, 0xD8EF, 0x76DF, 0xD8F0, 0x840C, 0xD8F1, 0x51AA, 0xD8F2, 0x8993, 0xD8F3, 0x514D, 0xD8F4, 0x5195, + 0xD8F5, 0x52C9, 0xD8F6, 0x68C9, 0xD8F7, 0x6C94, 0xD8F8, 0x7704, 0xD8F9, 0x7720, 0xD8FA, 0x7DBF, 0xD8FB, 0x7DEC, 0xD8FC, 0x9762, + 0xD8FD, 0x9EB5, 0xD8FE, 0x6EC5, 0xD9A1, 0x8511, 0xD9A2, 0x51A5, 0xD9A3, 0x540D, 0xD9A4, 0x547D, 0xD9A5, 0x660E, 0xD9A6, 0x669D, + 0xD9A7, 0x6927, 0xD9A8, 0x6E9F, 0xD9A9, 0x76BF, 0xD9AA, 0x7791, 0xD9AB, 0x8317, 0xD9AC, 0x84C2, 0xD9AD, 0x879F, 0xD9AE, 0x9169, + 0xD9AF, 0x9298, 0xD9B0, 0x9CF4, 0xD9B1, 0x8882, 0xD9B2, 0x4FAE, 0xD9B3, 0x5192, 0xD9B4, 0x52DF, 0xD9B5, 0x59C6, 0xD9B6, 0x5E3D, + 0xD9B7, 0x6155, 0xD9B8, 0x6478, 0xD9B9, 0x6479, 0xD9BA, 0x66AE, 0xD9BB, 0x67D0, 0xD9BC, 0x6A21, 0xD9BD, 0x6BCD, 0xD9BE, 0x6BDB, + 0xD9BF, 0x725F, 0xD9C0, 0x7261, 0xD9C1, 0x7441, 0xD9C2, 0x7738, 0xD9C3, 0x77DB, 0xD9C4, 0x8017, 0xD9C5, 0x82BC, 0xD9C6, 0x8305, + 0xD9C7, 0x8B00, 0xD9C8, 0x8B28, 0xD9C9, 0x8C8C, 0xD9CA, 0x6728, 0xD9CB, 0x6C90, 0xD9CC, 0x7267, 0xD9CD, 0x76EE, 0xD9CE, 0x7766, + 0xD9CF, 0x7A46, 0xD9D0, 0x9DA9, 0xD9D1, 0x6B7F, 0xD9D2, 0x6C92, 0xD9D3, 0x5922, 0xD9D4, 0x6726, 0xD9D5, 0x8499, 0xD9D6, 0x536F, + 0xD9D7, 0x5893, 0xD9D8, 0x5999, 0xD9D9, 0x5EDF, 0xD9DA, 0x63CF, 0xD9DB, 0x6634, 0xD9DC, 0x6773, 0xD9DD, 0x6E3A, 0xD9DE, 0x732B, + 0xD9DF, 0x7AD7, 0xD9E0, 0x82D7, 0xD9E1, 0x9328, 0xD9E2, 0x52D9, 0xD9E3, 0x5DEB, 0xD9E4, 0x61AE, 0xD9E5, 0x61CB, 0xD9E6, 0x620A, + 0xD9E7, 0x62C7, 0xD9E8, 0x64AB, 0xD9E9, 0x65E0, 0xD9EA, 0x6959, 0xD9EB, 0x6B66, 0xD9EC, 0x6BCB, 0xD9ED, 0x7121, 0xD9EE, 0x73F7, + 0xD9EF, 0x755D, 0xD9F0, 0x7E46, 0xD9F1, 0x821E, 0xD9F2, 0x8302, 0xD9F3, 0x856A, 0xD9F4, 0x8AA3, 0xD9F5, 0x8CBF, 0xD9F6, 0x9727, + 0xD9F7, 0x9D61, 0xD9F8, 0x58A8, 0xD9F9, 0x9ED8, 0xD9FA, 0x5011, 0xD9FB, 0x520E, 0xD9FC, 0x543B, 0xD9FD, 0x554F, 0xD9FE, 0x6587, + 0xDAA1, 0x6C76, 0xDAA2, 0x7D0A, 0xDAA3, 0x7D0B, 0xDAA4, 0x805E, 0xDAA5, 0x868A, 0xDAA6, 0x9580, 0xDAA7, 0x96EF, 0xDAA8, 0x52FF, + 0xDAA9, 0x6C95, 0xDAAA, 0x7269, 0xDAAB, 0x5473, 0xDAAC, 0x5A9A, 0xDAAD, 0x5C3E, 0xDAAE, 0x5D4B, 0xDAAF, 0x5F4C, 0xDAB0, 0x5FAE, + 0xDAB1, 0x672A, 0xDAB2, 0x68B6, 0xDAB3, 0x6963, 0xDAB4, 0x6E3C, 0xDAB5, 0x6E44, 0xDAB6, 0x7709, 0xDAB7, 0x7C73, 0xDAB8, 0x7F8E, + 0xDAB9, 0x8587, 0xDABA, 0x8B0E, 0xDABB, 0x8FF7, 0xDABC, 0x9761, 0xDABD, 0x9EF4, 0xDABE, 0x5CB7, 0xDABF, 0x60B6, 0xDAC0, 0x610D, + 0xDAC1, 0x61AB, 0xDAC2, 0x654F, 0xDAC3, 0x65FB, 0xDAC4, 0x65FC, 0xDAC5, 0x6C11, 0xDAC6, 0x6CEF, 0xDAC7, 0x739F, 0xDAC8, 0x73C9, + 0xDAC9, 0x7DE1, 0xDACA, 0x9594, 0xDACB, 0x5BC6, 0xDACC, 0x871C, 0xDACD, 0x8B10, 0xDACE, 0x525D, 0xDACF, 0x535A, 0xDAD0, 0x62CD, + 0xDAD1, 0x640F, 0xDAD2, 0x64B2, 0xDAD3, 0x6734, 0xDAD4, 0x6A38, 0xDAD5, 0x6CCA, 0xDAD6, 0x73C0, 0xDAD7, 0x749E, 0xDAD8, 0x7B94, + 0xDAD9, 0x7C95, 0xDADA, 0x7E1B, 0xDADB, 0x818A, 0xDADC, 0x8236, 0xDADD, 0x8584, 0xDADE, 0x8FEB, 0xDADF, 0x96F9, 0xDAE0, 0x99C1, + 0xDAE1, 0x4F34, 0xDAE2, 0x534A, 0xDAE3, 0x53CD, 0xDAE4, 0x53DB, 0xDAE5, 0x62CC, 0xDAE6, 0x642C, 0xDAE7, 0x6500, 0xDAE8, 0x6591, + 0xDAE9, 0x69C3, 0xDAEA, 0x6CEE, 0xDAEB, 0x6F58, 0xDAEC, 0x73ED, 0xDAED, 0x7554, 0xDAEE, 0x7622, 0xDAEF, 0x76E4, 0xDAF0, 0x76FC, + 0xDAF1, 0x78D0, 0xDAF2, 0x78FB, 0xDAF3, 0x792C, 0xDAF4, 0x7D46, 0xDAF5, 0x822C, 0xDAF6, 0x87E0, 0xDAF7, 0x8FD4, 0xDAF8, 0x9812, + 0xDAF9, 0x98EF, 0xDAFA, 0x52C3, 0xDAFB, 0x62D4, 0xDAFC, 0x64A5, 0xDAFD, 0x6E24, 0xDAFE, 0x6F51, 0xDBA1, 0x767C, 0xDBA2, 0x8DCB, + 0xDBA3, 0x91B1, 0xDBA4, 0x9262, 0xDBA5, 0x9AEE, 0xDBA6, 0x9B43, 0xDBA7, 0x5023, 0xDBA8, 0x508D, 0xDBA9, 0x574A, 0xDBAA, 0x59A8, + 0xDBAB, 0x5C28, 0xDBAC, 0x5E47, 0xDBAD, 0x5F77, 0xDBAE, 0x623F, 0xDBAF, 0x653E, 0xDBB0, 0x65B9, 0xDBB1, 0x65C1, 0xDBB2, 0x6609, + 0xDBB3, 0x678B, 0xDBB4, 0x699C, 0xDBB5, 0x6EC2, 0xDBB6, 0x78C5, 0xDBB7, 0x7D21, 0xDBB8, 0x80AA, 0xDBB9, 0x8180, 0xDBBA, 0x822B, + 0xDBBB, 0x82B3, 0xDBBC, 0x84A1, 0xDBBD, 0x868C, 0xDBBE, 0x8A2A, 0xDBBF, 0x8B17, 0xDBC0, 0x90A6, 0xDBC1, 0x9632, 0xDBC2, 0x9F90, + 0xDBC3, 0x500D, 0xDBC4, 0x4FF3, 0xDBC5, 0xF963, 0xDBC6, 0x57F9, 0xDBC7, 0x5F98, 0xDBC8, 0x62DC, 0xDBC9, 0x6392, 0xDBCA, 0x676F, + 0xDBCB, 0x6E43, 0xDBCC, 0x7119, 0xDBCD, 0x76C3, 0xDBCE, 0x80CC, 0xDBCF, 0x80DA, 0xDBD0, 0x88F4, 0xDBD1, 0x88F5, 0xDBD2, 0x8919, + 0xDBD3, 0x8CE0, 0xDBD4, 0x8F29, 0xDBD5, 0x914D, 0xDBD6, 0x966A, 0xDBD7, 0x4F2F, 0xDBD8, 0x4F70, 0xDBD9, 0x5E1B, 0xDBDA, 0x67CF, + 0xDBDB, 0x6822, 0xDBDC, 0x767D, 0xDBDD, 0x767E, 0xDBDE, 0x9B44, 0xDBDF, 0x5E61, 0xDBE0, 0x6A0A, 0xDBE1, 0x7169, 0xDBE2, 0x71D4, + 0xDBE3, 0x756A, 0xDBE4, 0xF964, 0xDBE5, 0x7E41, 0xDBE6, 0x8543, 0xDBE7, 0x85E9, 0xDBE8, 0x98DC, 0xDBE9, 0x4F10, 0xDBEA, 0x7B4F, + 0xDBEB, 0x7F70, 0xDBEC, 0x95A5, 0xDBED, 0x51E1, 0xDBEE, 0x5E06, 0xDBEF, 0x68B5, 0xDBF0, 0x6C3E, 0xDBF1, 0x6C4E, 0xDBF2, 0x6CDB, + 0xDBF3, 0x72AF, 0xDBF4, 0x7BC4, 0xDBF5, 0x8303, 0xDBF6, 0x6CD5, 0xDBF7, 0x743A, 0xDBF8, 0x50FB, 0xDBF9, 0x5288, 0xDBFA, 0x58C1, + 0xDBFB, 0x64D8, 0xDBFC, 0x6A97, 0xDBFD, 0x74A7, 0xDBFE, 0x7656, 0xDCA1, 0x78A7, 0xDCA2, 0x8617, 0xDCA3, 0x95E2, 0xDCA4, 0x9739, + 0xDCA5, 0xF965, 0xDCA6, 0x535E, 0xDCA7, 0x5F01, 0xDCA8, 0x8B8A, 0xDCA9, 0x8FA8, 0xDCAA, 0x8FAF, 0xDCAB, 0x908A, 0xDCAC, 0x5225, + 0xDCAD, 0x77A5, 0xDCAE, 0x9C49, 0xDCAF, 0x9F08, 0xDCB0, 0x4E19, 0xDCB1, 0x5002, 0xDCB2, 0x5175, 0xDCB3, 0x5C5B, 0xDCB4, 0x5E77, + 0xDCB5, 0x661E, 0xDCB6, 0x663A, 0xDCB7, 0x67C4, 0xDCB8, 0x68C5, 0xDCB9, 0x70B3, 0xDCBA, 0x7501, 0xDCBB, 0x75C5, 0xDCBC, 0x79C9, + 0xDCBD, 0x7ADD, 0xDCBE, 0x8F27, 0xDCBF, 0x9920, 0xDCC0, 0x9A08, 0xDCC1, 0x4FDD, 0xDCC2, 0x5821, 0xDCC3, 0x5831, 0xDCC4, 0x5BF6, + 0xDCC5, 0x666E, 0xDCC6, 0x6B65, 0xDCC7, 0x6D11, 0xDCC8, 0x6E7A, 0xDCC9, 0x6F7D, 0xDCCA, 0x73E4, 0xDCCB, 0x752B, 0xDCCC, 0x83E9, + 0xDCCD, 0x88DC, 0xDCCE, 0x8913, 0xDCCF, 0x8B5C, 0xDCD0, 0x8F14, 0xDCD1, 0x4F0F, 0xDCD2, 0x50D5, 0xDCD3, 0x5310, 0xDCD4, 0x535C, + 0xDCD5, 0x5B93, 0xDCD6, 0x5FA9, 0xDCD7, 0x670D, 0xDCD8, 0x798F, 0xDCD9, 0x8179, 0xDCDA, 0x832F, 0xDCDB, 0x8514, 0xDCDC, 0x8907, + 0xDCDD, 0x8986, 0xDCDE, 0x8F39, 0xDCDF, 0x8F3B, 0xDCE0, 0x99A5, 0xDCE1, 0x9C12, 0xDCE2, 0x672C, 0xDCE3, 0x4E76, 0xDCE4, 0x4FF8, + 0xDCE5, 0x5949, 0xDCE6, 0x5C01, 0xDCE7, 0x5CEF, 0xDCE8, 0x5CF0, 0xDCE9, 0x6367, 0xDCEA, 0x68D2, 0xDCEB, 0x70FD, 0xDCEC, 0x71A2, + 0xDCED, 0x742B, 0xDCEE, 0x7E2B, 0xDCEF, 0x84EC, 0xDCF0, 0x8702, 0xDCF1, 0x9022, 0xDCF2, 0x92D2, 0xDCF3, 0x9CF3, 0xDCF4, 0x4E0D, + 0xDCF5, 0x4ED8, 0xDCF6, 0x4FEF, 0xDCF7, 0x5085, 0xDCF8, 0x5256, 0xDCF9, 0x526F, 0xDCFA, 0x5426, 0xDCFB, 0x5490, 0xDCFC, 0x57E0, + 0xDCFD, 0x592B, 0xDCFE, 0x5A66, 0xDDA1, 0x5B5A, 0xDDA2, 0x5B75, 0xDDA3, 0x5BCC, 0xDDA4, 0x5E9C, 0xDDA5, 0xF966, 0xDDA6, 0x6276, + 0xDDA7, 0x6577, 0xDDA8, 0x65A7, 0xDDA9, 0x6D6E, 0xDDAA, 0x6EA5, 0xDDAB, 0x7236, 0xDDAC, 0x7B26, 0xDDAD, 0x7C3F, 0xDDAE, 0x7F36, + 0xDDAF, 0x8150, 0xDDB0, 0x8151, 0xDDB1, 0x819A, 0xDDB2, 0x8240, 0xDDB3, 0x8299, 0xDDB4, 0x83A9, 0xDDB5, 0x8A03, 0xDDB6, 0x8CA0, + 0xDDB7, 0x8CE6, 0xDDB8, 0x8CFB, 0xDDB9, 0x8D74, 0xDDBA, 0x8DBA, 0xDDBB, 0x90E8, 0xDDBC, 0x91DC, 0xDDBD, 0x961C, 0xDDBE, 0x9644, + 0xDDBF, 0x99D9, 0xDDC0, 0x9CE7, 0xDDC1, 0x5317, 0xDDC2, 0x5206, 0xDDC3, 0x5429, 0xDDC4, 0x5674, 0xDDC5, 0x58B3, 0xDDC6, 0x5954, + 0xDDC7, 0x596E, 0xDDC8, 0x5FFF, 0xDDC9, 0x61A4, 0xDDCA, 0x626E, 0xDDCB, 0x6610, 0xDDCC, 0x6C7E, 0xDDCD, 0x711A, 0xDDCE, 0x76C6, + 0xDDCF, 0x7C89, 0xDDD0, 0x7CDE, 0xDDD1, 0x7D1B, 0xDDD2, 0x82AC, 0xDDD3, 0x8CC1, 0xDDD4, 0x96F0, 0xDDD5, 0xF967, 0xDDD6, 0x4F5B, + 0xDDD7, 0x5F17, 0xDDD8, 0x5F7F, 0xDDD9, 0x62C2, 0xDDDA, 0x5D29, 0xDDDB, 0x670B, 0xDDDC, 0x68DA, 0xDDDD, 0x787C, 0xDDDE, 0x7E43, + 0xDDDF, 0x9D6C, 0xDDE0, 0x4E15, 0xDDE1, 0x5099, 0xDDE2, 0x5315, 0xDDE3, 0x532A, 0xDDE4, 0x5351, 0xDDE5, 0x5983, 0xDDE6, 0x5A62, + 0xDDE7, 0x5E87, 0xDDE8, 0x60B2, 0xDDE9, 0x618A, 0xDDEA, 0x6249, 0xDDEB, 0x6279, 0xDDEC, 0x6590, 0xDDED, 0x6787, 0xDDEE, 0x69A7, + 0xDDEF, 0x6BD4, 0xDDF0, 0x6BD6, 0xDDF1, 0x6BD7, 0xDDF2, 0x6BD8, 0xDDF3, 0x6CB8, 0xDDF4, 0xF968, 0xDDF5, 0x7435, 0xDDF6, 0x75FA, + 0xDDF7, 0x7812, 0xDDF8, 0x7891, 0xDDF9, 0x79D5, 0xDDFA, 0x79D8, 0xDDFB, 0x7C83, 0xDDFC, 0x7DCB, 0xDDFD, 0x7FE1, 0xDDFE, 0x80A5, + 0xDEA1, 0x813E, 0xDEA2, 0x81C2, 0xDEA3, 0x83F2, 0xDEA4, 0x871A, 0xDEA5, 0x88E8, 0xDEA6, 0x8AB9, 0xDEA7, 0x8B6C, 0xDEA8, 0x8CBB, + 0xDEA9, 0x9119, 0xDEAA, 0x975E, 0xDEAB, 0x98DB, 0xDEAC, 0x9F3B, 0xDEAD, 0x56AC, 0xDEAE, 0x5B2A, 0xDEAF, 0x5F6C, 0xDEB0, 0x658C, + 0xDEB1, 0x6AB3, 0xDEB2, 0x6BAF, 0xDEB3, 0x6D5C, 0xDEB4, 0x6FF1, 0xDEB5, 0x7015, 0xDEB6, 0x725D, 0xDEB7, 0x73AD, 0xDEB8, 0x8CA7, + 0xDEB9, 0x8CD3, 0xDEBA, 0x983B, 0xDEBB, 0x6191, 0xDEBC, 0x6C37, 0xDEBD, 0x8058, 0xDEBE, 0x9A01, 0xDEBF, 0x4E4D, 0xDEC0, 0x4E8B, + 0xDEC1, 0x4E9B, 0xDEC2, 0x4ED5, 0xDEC3, 0x4F3A, 0xDEC4, 0x4F3C, 0xDEC5, 0x4F7F, 0xDEC6, 0x4FDF, 0xDEC7, 0x50FF, 0xDEC8, 0x53F2, + 0xDEC9, 0x53F8, 0xDECA, 0x5506, 0xDECB, 0x55E3, 0xDECC, 0x56DB, 0xDECD, 0x58EB, 0xDECE, 0x5962, 0xDECF, 0x5A11, 0xDED0, 0x5BEB, + 0xDED1, 0x5BFA, 0xDED2, 0x5C04, 0xDED3, 0x5DF3, 0xDED4, 0x5E2B, 0xDED5, 0x5F99, 0xDED6, 0x601D, 0xDED7, 0x6368, 0xDED8, 0x659C, + 0xDED9, 0x65AF, 0xDEDA, 0x67F6, 0xDEDB, 0x67FB, 0xDEDC, 0x68AD, 0xDEDD, 0x6B7B, 0xDEDE, 0x6C99, 0xDEDF, 0x6CD7, 0xDEE0, 0x6E23, + 0xDEE1, 0x7009, 0xDEE2, 0x7345, 0xDEE3, 0x7802, 0xDEE4, 0x793E, 0xDEE5, 0x7940, 0xDEE6, 0x7960, 0xDEE7, 0x79C1, 0xDEE8, 0x7BE9, + 0xDEE9, 0x7D17, 0xDEEA, 0x7D72, 0xDEEB, 0x8086, 0xDEEC, 0x820D, 0xDEED, 0x838E, 0xDEEE, 0x84D1, 0xDEEF, 0x86C7, 0xDEF0, 0x88DF, + 0xDEF1, 0x8A50, 0xDEF2, 0x8A5E, 0xDEF3, 0x8B1D, 0xDEF4, 0x8CDC, 0xDEF5, 0x8D66, 0xDEF6, 0x8FAD, 0xDEF7, 0x90AA, 0xDEF8, 0x98FC, + 0xDEF9, 0x99DF, 0xDEFA, 0x9E9D, 0xDEFB, 0x524A, 0xDEFC, 0xF969, 0xDEFD, 0x6714, 0xDEFE, 0xF96A, 0xDFA1, 0x5098, 0xDFA2, 0x522A, + 0xDFA3, 0x5C71, 0xDFA4, 0x6563, 0xDFA5, 0x6C55, 0xDFA6, 0x73CA, 0xDFA7, 0x7523, 0xDFA8, 0x759D, 0xDFA9, 0x7B97, 0xDFAA, 0x849C, + 0xDFAB, 0x9178, 0xDFAC, 0x9730, 0xDFAD, 0x4E77, 0xDFAE, 0x6492, 0xDFAF, 0x6BBA, 0xDFB0, 0x715E, 0xDFB1, 0x85A9, 0xDFB2, 0x4E09, + 0xDFB3, 0xF96B, 0xDFB4, 0x6749, 0xDFB5, 0x68EE, 0xDFB6, 0x6E17, 0xDFB7, 0x829F, 0xDFB8, 0x8518, 0xDFB9, 0x886B, 0xDFBA, 0x63F7, + 0xDFBB, 0x6F81, 0xDFBC, 0x9212, 0xDFBD, 0x98AF, 0xDFBE, 0x4E0A, 0xDFBF, 0x50B7, 0xDFC0, 0x50CF, 0xDFC1, 0x511F, 0xDFC2, 0x5546, + 0xDFC3, 0x55AA, 0xDFC4, 0x5617, 0xDFC5, 0x5B40, 0xDFC6, 0x5C19, 0xDFC7, 0x5CE0, 0xDFC8, 0x5E38, 0xDFC9, 0x5E8A, 0xDFCA, 0x5EA0, + 0xDFCB, 0x5EC2, 0xDFCC, 0x60F3, 0xDFCD, 0x6851, 0xDFCE, 0x6A61, 0xDFCF, 0x6E58, 0xDFD0, 0x723D, 0xDFD1, 0x7240, 0xDFD2, 0x72C0, + 0xDFD3, 0x76F8, 0xDFD4, 0x7965, 0xDFD5, 0x7BB1, 0xDFD6, 0x7FD4, 0xDFD7, 0x88F3, 0xDFD8, 0x89F4, 0xDFD9, 0x8A73, 0xDFDA, 0x8C61, + 0xDFDB, 0x8CDE, 0xDFDC, 0x971C, 0xDFDD, 0x585E, 0xDFDE, 0x74BD, 0xDFDF, 0x8CFD, 0xDFE0, 0x55C7, 0xDFE1, 0xF96C, 0xDFE2, 0x7A61, + 0xDFE3, 0x7D22, 0xDFE4, 0x8272, 0xDFE5, 0x7272, 0xDFE6, 0x751F, 0xDFE7, 0x7525, 0xDFE8, 0xF96D, 0xDFE9, 0x7B19, 0xDFEA, 0x5885, + 0xDFEB, 0x58FB, 0xDFEC, 0x5DBC, 0xDFED, 0x5E8F, 0xDFEE, 0x5EB6, 0xDFEF, 0x5F90, 0xDFF0, 0x6055, 0xDFF1, 0x6292, 0xDFF2, 0x637F, + 0xDFF3, 0x654D, 0xDFF4, 0x6691, 0xDFF5, 0x66D9, 0xDFF6, 0x66F8, 0xDFF7, 0x6816, 0xDFF8, 0x68F2, 0xDFF9, 0x7280, 0xDFFA, 0x745E, + 0xDFFB, 0x7B6E, 0xDFFC, 0x7D6E, 0xDFFD, 0x7DD6, 0xDFFE, 0x7F72, 0xE0A1, 0x80E5, 0xE0A2, 0x8212, 0xE0A3, 0x85AF, 0xE0A4, 0x897F, + 0xE0A5, 0x8A93, 0xE0A6, 0x901D, 0xE0A7, 0x92E4, 0xE0A8, 0x9ECD, 0xE0A9, 0x9F20, 0xE0AA, 0x5915, 0xE0AB, 0x596D, 0xE0AC, 0x5E2D, + 0xE0AD, 0x60DC, 0xE0AE, 0x6614, 0xE0AF, 0x6673, 0xE0B0, 0x6790, 0xE0B1, 0x6C50, 0xE0B2, 0x6DC5, 0xE0B3, 0x6F5F, 0xE0B4, 0x77F3, + 0xE0B5, 0x78A9, 0xE0B6, 0x84C6, 0xE0B7, 0x91CB, 0xE0B8, 0x932B, 0xE0B9, 0x4ED9, 0xE0BA, 0x50CA, 0xE0BB, 0x5148, 0xE0BC, 0x5584, + 0xE0BD, 0x5B0B, 0xE0BE, 0x5BA3, 0xE0BF, 0x6247, 0xE0C0, 0x657E, 0xE0C1, 0x65CB, 0xE0C2, 0x6E32, 0xE0C3, 0x717D, 0xE0C4, 0x7401, + 0xE0C5, 0x7444, 0xE0C6, 0x7487, 0xE0C7, 0x74BF, 0xE0C8, 0x766C, 0xE0C9, 0x79AA, 0xE0CA, 0x7DDA, 0xE0CB, 0x7E55, 0xE0CC, 0x7FA8, + 0xE0CD, 0x817A, 0xE0CE, 0x81B3, 0xE0CF, 0x8239, 0xE0D0, 0x861A, 0xE0D1, 0x87EC, 0xE0D2, 0x8A75, 0xE0D3, 0x8DE3, 0xE0D4, 0x9078, + 0xE0D5, 0x9291, 0xE0D6, 0x9425, 0xE0D7, 0x994D, 0xE0D8, 0x9BAE, 0xE0D9, 0x5368, 0xE0DA, 0x5C51, 0xE0DB, 0x6954, 0xE0DC, 0x6CC4, + 0xE0DD, 0x6D29, 0xE0DE, 0x6E2B, 0xE0DF, 0x820C, 0xE0E0, 0x859B, 0xE0E1, 0x893B, 0xE0E2, 0x8A2D, 0xE0E3, 0x8AAA, 0xE0E4, 0x96EA, + 0xE0E5, 0x9F67, 0xE0E6, 0x5261, 0xE0E7, 0x66B9, 0xE0E8, 0x6BB2, 0xE0E9, 0x7E96, 0xE0EA, 0x87FE, 0xE0EB, 0x8D0D, 0xE0EC, 0x9583, + 0xE0ED, 0x965D, 0xE0EE, 0x651D, 0xE0EF, 0x6D89, 0xE0F0, 0x71EE, 0xE0F1, 0xF96E, 0xE0F2, 0x57CE, 0xE0F3, 0x59D3, 0xE0F4, 0x5BAC, + 0xE0F5, 0x6027, 0xE0F6, 0x60FA, 0xE0F7, 0x6210, 0xE0F8, 0x661F, 0xE0F9, 0x665F, 0xE0FA, 0x7329, 0xE0FB, 0x73F9, 0xE0FC, 0x76DB, + 0xE0FD, 0x7701, 0xE0FE, 0x7B6C, 0xE1A1, 0x8056, 0xE1A2, 0x8072, 0xE1A3, 0x8165, 0xE1A4, 0x8AA0, 0xE1A5, 0x9192, 0xE1A6, 0x4E16, + 0xE1A7, 0x52E2, 0xE1A8, 0x6B72, 0xE1A9, 0x6D17, 0xE1AA, 0x7A05, 0xE1AB, 0x7B39, 0xE1AC, 0x7D30, 0xE1AD, 0xF96F, 0xE1AE, 0x8CB0, + 0xE1AF, 0x53EC, 0xE1B0, 0x562F, 0xE1B1, 0x5851, 0xE1B2, 0x5BB5, 0xE1B3, 0x5C0F, 0xE1B4, 0x5C11, 0xE1B5, 0x5DE2, 0xE1B6, 0x6240, + 0xE1B7, 0x6383, 0xE1B8, 0x6414, 0xE1B9, 0x662D, 0xE1BA, 0x68B3, 0xE1BB, 0x6CBC, 0xE1BC, 0x6D88, 0xE1BD, 0x6EAF, 0xE1BE, 0x701F, + 0xE1BF, 0x70A4, 0xE1C0, 0x71D2, 0xE1C1, 0x7526, 0xE1C2, 0x758F, 0xE1C3, 0x758E, 0xE1C4, 0x7619, 0xE1C5, 0x7B11, 0xE1C6, 0x7BE0, + 0xE1C7, 0x7C2B, 0xE1C8, 0x7D20, 0xE1C9, 0x7D39, 0xE1CA, 0x852C, 0xE1CB, 0x856D, 0xE1CC, 0x8607, 0xE1CD, 0x8A34, 0xE1CE, 0x900D, + 0xE1CF, 0x9061, 0xE1D0, 0x90B5, 0xE1D1, 0x92B7, 0xE1D2, 0x97F6, 0xE1D3, 0x9A37, 0xE1D4, 0x4FD7, 0xE1D5, 0x5C6C, 0xE1D6, 0x675F, + 0xE1D7, 0x6D91, 0xE1D8, 0x7C9F, 0xE1D9, 0x7E8C, 0xE1DA, 0x8B16, 0xE1DB, 0x8D16, 0xE1DC, 0x901F, 0xE1DD, 0x5B6B, 0xE1DE, 0x5DFD, + 0xE1DF, 0x640D, 0xE1E0, 0x84C0, 0xE1E1, 0x905C, 0xE1E2, 0x98E1, 0xE1E3, 0x7387, 0xE1E4, 0x5B8B, 0xE1E5, 0x609A, 0xE1E6, 0x677E, + 0xE1E7, 0x6DDE, 0xE1E8, 0x8A1F, 0xE1E9, 0x8AA6, 0xE1EA, 0x9001, 0xE1EB, 0x980C, 0xE1EC, 0x5237, 0xE1ED, 0xF970, 0xE1EE, 0x7051, + 0xE1EF, 0x788E, 0xE1F0, 0x9396, 0xE1F1, 0x8870, 0xE1F2, 0x91D7, 0xE1F3, 0x4FEE, 0xE1F4, 0x53D7, 0xE1F5, 0x55FD, 0xE1F6, 0x56DA, + 0xE1F7, 0x5782, 0xE1F8, 0x58FD, 0xE1F9, 0x5AC2, 0xE1FA, 0x5B88, 0xE1FB, 0x5CAB, 0xE1FC, 0x5CC0, 0xE1FD, 0x5E25, 0xE1FE, 0x6101, + 0xE2A1, 0x620D, 0xE2A2, 0x624B, 0xE2A3, 0x6388, 0xE2A4, 0x641C, 0xE2A5, 0x6536, 0xE2A6, 0x6578, 0xE2A7, 0x6A39, 0xE2A8, 0x6B8A, + 0xE2A9, 0x6C34, 0xE2AA, 0x6D19, 0xE2AB, 0x6F31, 0xE2AC, 0x71E7, 0xE2AD, 0x72E9, 0xE2AE, 0x7378, 0xE2AF, 0x7407, 0xE2B0, 0x74B2, + 0xE2B1, 0x7626, 0xE2B2, 0x7761, 0xE2B3, 0x79C0, 0xE2B4, 0x7A57, 0xE2B5, 0x7AEA, 0xE2B6, 0x7CB9, 0xE2B7, 0x7D8F, 0xE2B8, 0x7DAC, + 0xE2B9, 0x7E61, 0xE2BA, 0x7F9E, 0xE2BB, 0x8129, 0xE2BC, 0x8331, 0xE2BD, 0x8490, 0xE2BE, 0x84DA, 0xE2BF, 0x85EA, 0xE2C0, 0x8896, + 0xE2C1, 0x8AB0, 0xE2C2, 0x8B90, 0xE2C3, 0x8F38, 0xE2C4, 0x9042, 0xE2C5, 0x9083, 0xE2C6, 0x916C, 0xE2C7, 0x9296, 0xE2C8, 0x92B9, + 0xE2C9, 0x968B, 0xE2CA, 0x96A7, 0xE2CB, 0x96A8, 0xE2CC, 0x96D6, 0xE2CD, 0x9700, 0xE2CE, 0x9808, 0xE2CF, 0x9996, 0xE2D0, 0x9AD3, + 0xE2D1, 0x9B1A, 0xE2D2, 0x53D4, 0xE2D3, 0x587E, 0xE2D4, 0x5919, 0xE2D5, 0x5B70, 0xE2D6, 0x5BBF, 0xE2D7, 0x6DD1, 0xE2D8, 0x6F5A, + 0xE2D9, 0x719F, 0xE2DA, 0x7421, 0xE2DB, 0x74B9, 0xE2DC, 0x8085, 0xE2DD, 0x83FD, 0xE2DE, 0x5DE1, 0xE2DF, 0x5F87, 0xE2E0, 0x5FAA, + 0xE2E1, 0x6042, 0xE2E2, 0x65EC, 0xE2E3, 0x6812, 0xE2E4, 0x696F, 0xE2E5, 0x6A53, 0xE2E6, 0x6B89, 0xE2E7, 0x6D35, 0xE2E8, 0x6DF3, + 0xE2E9, 0x73E3, 0xE2EA, 0x76FE, 0xE2EB, 0x77AC, 0xE2EC, 0x7B4D, 0xE2ED, 0x7D14, 0xE2EE, 0x8123, 0xE2EF, 0x821C, 0xE2F0, 0x8340, + 0xE2F1, 0x84F4, 0xE2F2, 0x8563, 0xE2F3, 0x8A62, 0xE2F4, 0x8AC4, 0xE2F5, 0x9187, 0xE2F6, 0x931E, 0xE2F7, 0x9806, 0xE2F8, 0x99B4, + 0xE2F9, 0x620C, 0xE2FA, 0x8853, 0xE2FB, 0x8FF0, 0xE2FC, 0x9265, 0xE2FD, 0x5D07, 0xE2FE, 0x5D27, 0xE3A1, 0x5D69, 0xE3A2, 0x745F, + 0xE3A3, 0x819D, 0xE3A4, 0x8768, 0xE3A5, 0x6FD5, 0xE3A6, 0x62FE, 0xE3A7, 0x7FD2, 0xE3A8, 0x8936, 0xE3A9, 0x8972, 0xE3AA, 0x4E1E, + 0xE3AB, 0x4E58, 0xE3AC, 0x50E7, 0xE3AD, 0x52DD, 0xE3AE, 0x5347, 0xE3AF, 0x627F, 0xE3B0, 0x6607, 0xE3B1, 0x7E69, 0xE3B2, 0x8805, + 0xE3B3, 0x965E, 0xE3B4, 0x4F8D, 0xE3B5, 0x5319, 0xE3B6, 0x5636, 0xE3B7, 0x59CB, 0xE3B8, 0x5AA4, 0xE3B9, 0x5C38, 0xE3BA, 0x5C4E, + 0xE3BB, 0x5C4D, 0xE3BC, 0x5E02, 0xE3BD, 0x5F11, 0xE3BE, 0x6043, 0xE3BF, 0x65BD, 0xE3C0, 0x662F, 0xE3C1, 0x6642, 0xE3C2, 0x67BE, + 0xE3C3, 0x67F4, 0xE3C4, 0x731C, 0xE3C5, 0x77E2, 0xE3C6, 0x793A, 0xE3C7, 0x7FC5, 0xE3C8, 0x8494, 0xE3C9, 0x84CD, 0xE3CA, 0x8996, + 0xE3CB, 0x8A66, 0xE3CC, 0x8A69, 0xE3CD, 0x8AE1, 0xE3CE, 0x8C55, 0xE3CF, 0x8C7A, 0xE3D0, 0x57F4, 0xE3D1, 0x5BD4, 0xE3D2, 0x5F0F, + 0xE3D3, 0x606F, 0xE3D4, 0x62ED, 0xE3D5, 0x690D, 0xE3D6, 0x6B96, 0xE3D7, 0x6E5C, 0xE3D8, 0x7184, 0xE3D9, 0x7BD2, 0xE3DA, 0x8755, + 0xE3DB, 0x8B58, 0xE3DC, 0x8EFE, 0xE3DD, 0x98DF, 0xE3DE, 0x98FE, 0xE3DF, 0x4F38, 0xE3E0, 0x4F81, 0xE3E1, 0x4FE1, 0xE3E2, 0x547B, + 0xE3E3, 0x5A20, 0xE3E4, 0x5BB8, 0xE3E5, 0x613C, 0xE3E6, 0x65B0, 0xE3E7, 0x6668, 0xE3E8, 0x71FC, 0xE3E9, 0x7533, 0xE3EA, 0x795E, + 0xE3EB, 0x7D33, 0xE3EC, 0x814E, 0xE3ED, 0x81E3, 0xE3EE, 0x8398, 0xE3EF, 0x85AA, 0xE3F0, 0x85CE, 0xE3F1, 0x8703, 0xE3F2, 0x8A0A, + 0xE3F3, 0x8EAB, 0xE3F4, 0x8F9B, 0xE3F5, 0xF971, 0xE3F6, 0x8FC5, 0xE3F7, 0x5931, 0xE3F8, 0x5BA4, 0xE3F9, 0x5BE6, 0xE3FA, 0x6089, + 0xE3FB, 0x5BE9, 0xE3FC, 0x5C0B, 0xE3FD, 0x5FC3, 0xE3FE, 0x6C81, 0xE4A1, 0xF972, 0xE4A2, 0x6DF1, 0xE4A3, 0x700B, 0xE4A4, 0x751A, + 0xE4A5, 0x82AF, 0xE4A6, 0x8AF6, 0xE4A7, 0x4EC0, 0xE4A8, 0x5341, 0xE4A9, 0xF973, 0xE4AA, 0x96D9, 0xE4AB, 0x6C0F, 0xE4AC, 0x4E9E, + 0xE4AD, 0x4FC4, 0xE4AE, 0x5152, 0xE4AF, 0x555E, 0xE4B0, 0x5A25, 0xE4B1, 0x5CE8, 0xE4B2, 0x6211, 0xE4B3, 0x7259, 0xE4B4, 0x82BD, + 0xE4B5, 0x83AA, 0xE4B6, 0x86FE, 0xE4B7, 0x8859, 0xE4B8, 0x8A1D, 0xE4B9, 0x963F, 0xE4BA, 0x96C5, 0xE4BB, 0x9913, 0xE4BC, 0x9D09, + 0xE4BD, 0x9D5D, 0xE4BE, 0x580A, 0xE4BF, 0x5CB3, 0xE4C0, 0x5DBD, 0xE4C1, 0x5E44, 0xE4C2, 0x60E1, 0xE4C3, 0x6115, 0xE4C4, 0x63E1, + 0xE4C5, 0x6A02, 0xE4C6, 0x6E25, 0xE4C7, 0x9102, 0xE4C8, 0x9354, 0xE4C9, 0x984E, 0xE4CA, 0x9C10, 0xE4CB, 0x9F77, 0xE4CC, 0x5B89, + 0xE4CD, 0x5CB8, 0xE4CE, 0x6309, 0xE4CF, 0x664F, 0xE4D0, 0x6848, 0xE4D1, 0x773C, 0xE4D2, 0x96C1, 0xE4D3, 0x978D, 0xE4D4, 0x9854, + 0xE4D5, 0x9B9F, 0xE4D6, 0x65A1, 0xE4D7, 0x8B01, 0xE4D8, 0x8ECB, 0xE4D9, 0x95BC, 0xE4DA, 0x5535, 0xE4DB, 0x5CA9, 0xE4DC, 0x5DD6, + 0xE4DD, 0x5EB5, 0xE4DE, 0x6697, 0xE4DF, 0x764C, 0xE4E0, 0x83F4, 0xE4E1, 0x95C7, 0xE4E2, 0x58D3, 0xE4E3, 0x62BC, 0xE4E4, 0x72CE, + 0xE4E5, 0x9D28, 0xE4E6, 0x4EF0, 0xE4E7, 0x592E, 0xE4E8, 0x600F, 0xE4E9, 0x663B, 0xE4EA, 0x6B83, 0xE4EB, 0x79E7, 0xE4EC, 0x9D26, + 0xE4ED, 0x5393, 0xE4EE, 0x54C0, 0xE4EF, 0x57C3, 0xE4F0, 0x5D16, 0xE4F1, 0x611B, 0xE4F2, 0x66D6, 0xE4F3, 0x6DAF, 0xE4F4, 0x788D, + 0xE4F5, 0x827E, 0xE4F6, 0x9698, 0xE4F7, 0x9744, 0xE4F8, 0x5384, 0xE4F9, 0x627C, 0xE4FA, 0x6396, 0xE4FB, 0x6DB2, 0xE4FC, 0x7E0A, + 0xE4FD, 0x814B, 0xE4FE, 0x984D, 0xE5A1, 0x6AFB, 0xE5A2, 0x7F4C, 0xE5A3, 0x9DAF, 0xE5A4, 0x9E1A, 0xE5A5, 0x4E5F, 0xE5A6, 0x503B, + 0xE5A7, 0x51B6, 0xE5A8, 0x591C, 0xE5A9, 0x60F9, 0xE5AA, 0x63F6, 0xE5AB, 0x6930, 0xE5AC, 0x723A, 0xE5AD, 0x8036, 0xE5AE, 0xF974, + 0xE5AF, 0x91CE, 0xE5B0, 0x5F31, 0xE5B1, 0xF975, 0xE5B2, 0xF976, 0xE5B3, 0x7D04, 0xE5B4, 0x82E5, 0xE5B5, 0x846F, 0xE5B6, 0x84BB, + 0xE5B7, 0x85E5, 0xE5B8, 0x8E8D, 0xE5B9, 0xF977, 0xE5BA, 0x4F6F, 0xE5BB, 0xF978, 0xE5BC, 0xF979, 0xE5BD, 0x58E4, 0xE5BE, 0x5B43, + 0xE5BF, 0x6059, 0xE5C0, 0x63DA, 0xE5C1, 0x6518, 0xE5C2, 0x656D, 0xE5C3, 0x6698, 0xE5C4, 0xF97A, 0xE5C5, 0x694A, 0xE5C6, 0x6A23, + 0xE5C7, 0x6D0B, 0xE5C8, 0x7001, 0xE5C9, 0x716C, 0xE5CA, 0x75D2, 0xE5CB, 0x760D, 0xE5CC, 0x79B3, 0xE5CD, 0x7A70, 0xE5CE, 0xF97B, + 0xE5CF, 0x7F8A, 0xE5D0, 0xF97C, 0xE5D1, 0x8944, 0xE5D2, 0xF97D, 0xE5D3, 0x8B93, 0xE5D4, 0x91C0, 0xE5D5, 0x967D, 0xE5D6, 0xF97E, + 0xE5D7, 0x990A, 0xE5D8, 0x5704, 0xE5D9, 0x5FA1, 0xE5DA, 0x65BC, 0xE5DB, 0x6F01, 0xE5DC, 0x7600, 0xE5DD, 0x79A6, 0xE5DE, 0x8A9E, + 0xE5DF, 0x99AD, 0xE5E0, 0x9B5A, 0xE5E1, 0x9F6C, 0xE5E2, 0x5104, 0xE5E3, 0x61B6, 0xE5E4, 0x6291, 0xE5E5, 0x6A8D, 0xE5E6, 0x81C6, + 0xE5E7, 0x5043, 0xE5E8, 0x5830, 0xE5E9, 0x5F66, 0xE5EA, 0x7109, 0xE5EB, 0x8A00, 0xE5EC, 0x8AFA, 0xE5ED, 0x5B7C, 0xE5EE, 0x8616, + 0xE5EF, 0x4FFA, 0xE5F0, 0x513C, 0xE5F1, 0x56B4, 0xE5F2, 0x5944, 0xE5F3, 0x63A9, 0xE5F4, 0x6DF9, 0xE5F5, 0x5DAA, 0xE5F6, 0x696D, + 0xE5F7, 0x5186, 0xE5F8, 0x4E88, 0xE5F9, 0x4F59, 0xE5FA, 0xF97F, 0xE5FB, 0xF980, 0xE5FC, 0xF981, 0xE5FD, 0x5982, 0xE5FE, 0xF982, + 0xE6A1, 0xF983, 0xE6A2, 0x6B5F, 0xE6A3, 0x6C5D, 0xE6A4, 0xF984, 0xE6A5, 0x74B5, 0xE6A6, 0x7916, 0xE6A7, 0xF985, 0xE6A8, 0x8207, + 0xE6A9, 0x8245, 0xE6AA, 0x8339, 0xE6AB, 0x8F3F, 0xE6AC, 0x8F5D, 0xE6AD, 0xF986, 0xE6AE, 0x9918, 0xE6AF, 0xF987, 0xE6B0, 0xF988, + 0xE6B1, 0xF989, 0xE6B2, 0x4EA6, 0xE6B3, 0xF98A, 0xE6B4, 0x57DF, 0xE6B5, 0x5F79, 0xE6B6, 0x6613, 0xE6B7, 0xF98B, 0xE6B8, 0xF98C, + 0xE6B9, 0x75AB, 0xE6BA, 0x7E79, 0xE6BB, 0x8B6F, 0xE6BC, 0xF98D, 0xE6BD, 0x9006, 0xE6BE, 0x9A5B, 0xE6BF, 0x56A5, 0xE6C0, 0x5827, + 0xE6C1, 0x59F8, 0xE6C2, 0x5A1F, 0xE6C3, 0x5BB4, 0xE6C4, 0xF98E, 0xE6C5, 0x5EF6, 0xE6C6, 0xF98F, 0xE6C7, 0xF990, 0xE6C8, 0x6350, + 0xE6C9, 0x633B, 0xE6CA, 0xF991, 0xE6CB, 0x693D, 0xE6CC, 0x6C87, 0xE6CD, 0x6CBF, 0xE6CE, 0x6D8E, 0xE6CF, 0x6D93, 0xE6D0, 0x6DF5, + 0xE6D1, 0x6F14, 0xE6D2, 0xF992, 0xE6D3, 0x70DF, 0xE6D4, 0x7136, 0xE6D5, 0x7159, 0xE6D6, 0xF993, 0xE6D7, 0x71C3, 0xE6D8, 0x71D5, + 0xE6D9, 0xF994, 0xE6DA, 0x784F, 0xE6DB, 0x786F, 0xE6DC, 0xF995, 0xE6DD, 0x7B75, 0xE6DE, 0x7DE3, 0xE6DF, 0xF996, 0xE6E0, 0x7E2F, + 0xE6E1, 0xF997, 0xE6E2, 0x884D, 0xE6E3, 0x8EDF, 0xE6E4, 0xF998, 0xE6E5, 0xF999, 0xE6E6, 0xF99A, 0xE6E7, 0x925B, 0xE6E8, 0xF99B, + 0xE6E9, 0x9CF6, 0xE6EA, 0xF99C, 0xE6EB, 0xF99D, 0xE6EC, 0xF99E, 0xE6ED, 0x6085, 0xE6EE, 0x6D85, 0xE6EF, 0xF99F, 0xE6F0, 0x71B1, + 0xE6F1, 0xF9A0, 0xE6F2, 0xF9A1, 0xE6F3, 0x95B1, 0xE6F4, 0x53AD, 0xE6F5, 0xF9A2, 0xE6F6, 0xF9A3, 0xE6F7, 0xF9A4, 0xE6F8, 0x67D3, + 0xE6F9, 0xF9A5, 0xE6FA, 0x708E, 0xE6FB, 0x7130, 0xE6FC, 0x7430, 0xE6FD, 0x8276, 0xE6FE, 0x82D2, 0xE7A1, 0xF9A6, 0xE7A2, 0x95BB, + 0xE7A3, 0x9AE5, 0xE7A4, 0x9E7D, 0xE7A5, 0x66C4, 0xE7A6, 0xF9A7, 0xE7A7, 0x71C1, 0xE7A8, 0x8449, 0xE7A9, 0xF9A8, 0xE7AA, 0xF9A9, + 0xE7AB, 0x584B, 0xE7AC, 0xF9AA, 0xE7AD, 0xF9AB, 0xE7AE, 0x5DB8, 0xE7AF, 0x5F71, 0xE7B0, 0xF9AC, 0xE7B1, 0x6620, 0xE7B2, 0x668E, + 0xE7B3, 0x6979, 0xE7B4, 0x69AE, 0xE7B5, 0x6C38, 0xE7B6, 0x6CF3, 0xE7B7, 0x6E36, 0xE7B8, 0x6F41, 0xE7B9, 0x6FDA, 0xE7BA, 0x701B, + 0xE7BB, 0x702F, 0xE7BC, 0x7150, 0xE7BD, 0x71DF, 0xE7BE, 0x7370, 0xE7BF, 0xF9AD, 0xE7C0, 0x745B, 0xE7C1, 0xF9AE, 0xE7C2, 0x74D4, + 0xE7C3, 0x76C8, 0xE7C4, 0x7A4E, 0xE7C5, 0x7E93, 0xE7C6, 0xF9AF, 0xE7C7, 0xF9B0, 0xE7C8, 0x82F1, 0xE7C9, 0x8A60, 0xE7CA, 0x8FCE, + 0xE7CB, 0xF9B1, 0xE7CC, 0x9348, 0xE7CD, 0xF9B2, 0xE7CE, 0x9719, 0xE7CF, 0xF9B3, 0xE7D0, 0xF9B4, 0xE7D1, 0x4E42, 0xE7D2, 0x502A, + 0xE7D3, 0xF9B5, 0xE7D4, 0x5208, 0xE7D5, 0x53E1, 0xE7D6, 0x66F3, 0xE7D7, 0x6C6D, 0xE7D8, 0x6FCA, 0xE7D9, 0x730A, 0xE7DA, 0x777F, + 0xE7DB, 0x7A62, 0xE7DC, 0x82AE, 0xE7DD, 0x85DD, 0xE7DE, 0x8602, 0xE7DF, 0xF9B6, 0xE7E0, 0x88D4, 0xE7E1, 0x8A63, 0xE7E2, 0x8B7D, + 0xE7E3, 0x8C6B, 0xE7E4, 0xF9B7, 0xE7E5, 0x92B3, 0xE7E6, 0xF9B8, 0xE7E7, 0x9713, 0xE7E8, 0x9810, 0xE7E9, 0x4E94, 0xE7EA, 0x4F0D, + 0xE7EB, 0x4FC9, 0xE7EC, 0x50B2, 0xE7ED, 0x5348, 0xE7EE, 0x543E, 0xE7EF, 0x5433, 0xE7F0, 0x55DA, 0xE7F1, 0x5862, 0xE7F2, 0x58BA, + 0xE7F3, 0x5967, 0xE7F4, 0x5A1B, 0xE7F5, 0x5BE4, 0xE7F6, 0x609F, 0xE7F7, 0xF9B9, 0xE7F8, 0x61CA, 0xE7F9, 0x6556, 0xE7FA, 0x65FF, + 0xE7FB, 0x6664, 0xE7FC, 0x68A7, 0xE7FD, 0x6C5A, 0xE7FE, 0x6FB3, 0xE8A1, 0x70CF, 0xE8A2, 0x71AC, 0xE8A3, 0x7352, 0xE8A4, 0x7B7D, + 0xE8A5, 0x8708, 0xE8A6, 0x8AA4, 0xE8A7, 0x9C32, 0xE8A8, 0x9F07, 0xE8A9, 0x5C4B, 0xE8AA, 0x6C83, 0xE8AB, 0x7344, 0xE8AC, 0x7389, + 0xE8AD, 0x923A, 0xE8AE, 0x6EAB, 0xE8AF, 0x7465, 0xE8B0, 0x761F, 0xE8B1, 0x7A69, 0xE8B2, 0x7E15, 0xE8B3, 0x860A, 0xE8B4, 0x5140, + 0xE8B5, 0x58C5, 0xE8B6, 0x64C1, 0xE8B7, 0x74EE, 0xE8B8, 0x7515, 0xE8B9, 0x7670, 0xE8BA, 0x7FC1, 0xE8BB, 0x9095, 0xE8BC, 0x96CD, + 0xE8BD, 0x9954, 0xE8BE, 0x6E26, 0xE8BF, 0x74E6, 0xE8C0, 0x7AA9, 0xE8C1, 0x7AAA, 0xE8C2, 0x81E5, 0xE8C3, 0x86D9, 0xE8C4, 0x8778, + 0xE8C5, 0x8A1B, 0xE8C6, 0x5A49, 0xE8C7, 0x5B8C, 0xE8C8, 0x5B9B, 0xE8C9, 0x68A1, 0xE8CA, 0x6900, 0xE8CB, 0x6D63, 0xE8CC, 0x73A9, + 0xE8CD, 0x7413, 0xE8CE, 0x742C, 0xE8CF, 0x7897, 0xE8D0, 0x7DE9, 0xE8D1, 0x7FEB, 0xE8D2, 0x8118, 0xE8D3, 0x8155, 0xE8D4, 0x839E, + 0xE8D5, 0x8C4C, 0xE8D6, 0x962E, 0xE8D7, 0x9811, 0xE8D8, 0x66F0, 0xE8D9, 0x5F80, 0xE8DA, 0x65FA, 0xE8DB, 0x6789, 0xE8DC, 0x6C6A, + 0xE8DD, 0x738B, 0xE8DE, 0x502D, 0xE8DF, 0x5A03, 0xE8E0, 0x6B6A, 0xE8E1, 0x77EE, 0xE8E2, 0x5916, 0xE8E3, 0x5D6C, 0xE8E4, 0x5DCD, + 0xE8E5, 0x7325, 0xE8E6, 0x754F, 0xE8E7, 0xF9BA, 0xE8E8, 0xF9BB, 0xE8E9, 0x50E5, 0xE8EA, 0x51F9, 0xE8EB, 0x582F, 0xE8EC, 0x592D, + 0xE8ED, 0x5996, 0xE8EE, 0x59DA, 0xE8EF, 0x5BE5, 0xE8F0, 0xF9BC, 0xE8F1, 0xF9BD, 0xE8F2, 0x5DA2, 0xE8F3, 0x62D7, 0xE8F4, 0x6416, + 0xE8F5, 0x6493, 0xE8F6, 0x64FE, 0xE8F7, 0xF9BE, 0xE8F8, 0x66DC, 0xE8F9, 0xF9BF, 0xE8FA, 0x6A48, 0xE8FB, 0xF9C0, 0xE8FC, 0x71FF, + 0xE8FD, 0x7464, 0xE8FE, 0xF9C1, 0xE9A1, 0x7A88, 0xE9A2, 0x7AAF, 0xE9A3, 0x7E47, 0xE9A4, 0x7E5E, 0xE9A5, 0x8000, 0xE9A6, 0x8170, + 0xE9A7, 0xF9C2, 0xE9A8, 0x87EF, 0xE9A9, 0x8981, 0xE9AA, 0x8B20, 0xE9AB, 0x9059, 0xE9AC, 0xF9C3, 0xE9AD, 0x9080, 0xE9AE, 0x9952, + 0xE9AF, 0x617E, 0xE9B0, 0x6B32, 0xE9B1, 0x6D74, 0xE9B2, 0x7E1F, 0xE9B3, 0x8925, 0xE9B4, 0x8FB1, 0xE9B5, 0x4FD1, 0xE9B6, 0x50AD, + 0xE9B7, 0x5197, 0xE9B8, 0x52C7, 0xE9B9, 0x57C7, 0xE9BA, 0x5889, 0xE9BB, 0x5BB9, 0xE9BC, 0x5EB8, 0xE9BD, 0x6142, 0xE9BE, 0x6995, + 0xE9BF, 0x6D8C, 0xE9C0, 0x6E67, 0xE9C1, 0x6EB6, 0xE9C2, 0x7194, 0xE9C3, 0x7462, 0xE9C4, 0x7528, 0xE9C5, 0x752C, 0xE9C6, 0x8073, + 0xE9C7, 0x8338, 0xE9C8, 0x84C9, 0xE9C9, 0x8E0A, 0xE9CA, 0x9394, 0xE9CB, 0x93DE, 0xE9CC, 0xF9C4, 0xE9CD, 0x4E8E, 0xE9CE, 0x4F51, + 0xE9CF, 0x5076, 0xE9D0, 0x512A, 0xE9D1, 0x53C8, 0xE9D2, 0x53CB, 0xE9D3, 0x53F3, 0xE9D4, 0x5B87, 0xE9D5, 0x5BD3, 0xE9D6, 0x5C24, + 0xE9D7, 0x611A, 0xE9D8, 0x6182, 0xE9D9, 0x65F4, 0xE9DA, 0x725B, 0xE9DB, 0x7397, 0xE9DC, 0x7440, 0xE9DD, 0x76C2, 0xE9DE, 0x7950, + 0xE9DF, 0x7991, 0xE9E0, 0x79B9, 0xE9E1, 0x7D06, 0xE9E2, 0x7FBD, 0xE9E3, 0x828B, 0xE9E4, 0x85D5, 0xE9E5, 0x865E, 0xE9E6, 0x8FC2, + 0xE9E7, 0x9047, 0xE9E8, 0x90F5, 0xE9E9, 0x91EA, 0xE9EA, 0x9685, 0xE9EB, 0x96E8, 0xE9EC, 0x96E9, 0xE9ED, 0x52D6, 0xE9EE, 0x5F67, + 0xE9EF, 0x65ED, 0xE9F0, 0x6631, 0xE9F1, 0x682F, 0xE9F2, 0x715C, 0xE9F3, 0x7A36, 0xE9F4, 0x90C1, 0xE9F5, 0x980A, 0xE9F6, 0x4E91, + 0xE9F7, 0xF9C5, 0xE9F8, 0x6A52, 0xE9F9, 0x6B9E, 0xE9FA, 0x6F90, 0xE9FB, 0x7189, 0xE9FC, 0x8018, 0xE9FD, 0x82B8, 0xE9FE, 0x8553, + 0xEAA1, 0x904B, 0xEAA2, 0x9695, 0xEAA3, 0x96F2, 0xEAA4, 0x97FB, 0xEAA5, 0x851A, 0xEAA6, 0x9B31, 0xEAA7, 0x4E90, 0xEAA8, 0x718A, + 0xEAA9, 0x96C4, 0xEAAA, 0x5143, 0xEAAB, 0x539F, 0xEAAC, 0x54E1, 0xEAAD, 0x5713, 0xEAAE, 0x5712, 0xEAAF, 0x57A3, 0xEAB0, 0x5A9B, + 0xEAB1, 0x5AC4, 0xEAB2, 0x5BC3, 0xEAB3, 0x6028, 0xEAB4, 0x613F, 0xEAB5, 0x63F4, 0xEAB6, 0x6C85, 0xEAB7, 0x6D39, 0xEAB8, 0x6E72, + 0xEAB9, 0x6E90, 0xEABA, 0x7230, 0xEABB, 0x733F, 0xEABC, 0x7457, 0xEABD, 0x82D1, 0xEABE, 0x8881, 0xEABF, 0x8F45, 0xEAC0, 0x9060, + 0xEAC1, 0xF9C6, 0xEAC2, 0x9662, 0xEAC3, 0x9858, 0xEAC4, 0x9D1B, 0xEAC5, 0x6708, 0xEAC6, 0x8D8A, 0xEAC7, 0x925E, 0xEAC8, 0x4F4D, + 0xEAC9, 0x5049, 0xEACA, 0x50DE, 0xEACB, 0x5371, 0xEACC, 0x570D, 0xEACD, 0x59D4, 0xEACE, 0x5A01, 0xEACF, 0x5C09, 0xEAD0, 0x6170, + 0xEAD1, 0x6690, 0xEAD2, 0x6E2D, 0xEAD3, 0x7232, 0xEAD4, 0x744B, 0xEAD5, 0x7DEF, 0xEAD6, 0x80C3, 0xEAD7, 0x840E, 0xEAD8, 0x8466, + 0xEAD9, 0x853F, 0xEADA, 0x875F, 0xEADB, 0x885B, 0xEADC, 0x8918, 0xEADD, 0x8B02, 0xEADE, 0x9055, 0xEADF, 0x97CB, 0xEAE0, 0x9B4F, + 0xEAE1, 0x4E73, 0xEAE2, 0x4F91, 0xEAE3, 0x5112, 0xEAE4, 0x516A, 0xEAE5, 0xF9C7, 0xEAE6, 0x552F, 0xEAE7, 0x55A9, 0xEAE8, 0x5B7A, + 0xEAE9, 0x5BA5, 0xEAEA, 0x5E7C, 0xEAEB, 0x5E7D, 0xEAEC, 0x5EBE, 0xEAED, 0x60A0, 0xEAEE, 0x60DF, 0xEAEF, 0x6108, 0xEAF0, 0x6109, + 0xEAF1, 0x63C4, 0xEAF2, 0x6538, 0xEAF3, 0x6709, 0xEAF4, 0xF9C8, 0xEAF5, 0x67D4, 0xEAF6, 0x67DA, 0xEAF7, 0xF9C9, 0xEAF8, 0x6961, + 0xEAF9, 0x6962, 0xEAFA, 0x6CB9, 0xEAFB, 0x6D27, 0xEAFC, 0xF9CA, 0xEAFD, 0x6E38, 0xEAFE, 0xF9CB, 0xEBA1, 0x6FE1, 0xEBA2, 0x7336, + 0xEBA3, 0x7337, 0xEBA4, 0xF9CC, 0xEBA5, 0x745C, 0xEBA6, 0x7531, 0xEBA7, 0xF9CD, 0xEBA8, 0x7652, 0xEBA9, 0xF9CE, 0xEBAA, 0xF9CF, + 0xEBAB, 0x7DAD, 0xEBAC, 0x81FE, 0xEBAD, 0x8438, 0xEBAE, 0x88D5, 0xEBAF, 0x8A98, 0xEBB0, 0x8ADB, 0xEBB1, 0x8AED, 0xEBB2, 0x8E30, + 0xEBB3, 0x8E42, 0xEBB4, 0x904A, 0xEBB5, 0x903E, 0xEBB6, 0x907A, 0xEBB7, 0x9149, 0xEBB8, 0x91C9, 0xEBB9, 0x936E, 0xEBBA, 0xF9D0, + 0xEBBB, 0xF9D1, 0xEBBC, 0x5809, 0xEBBD, 0xF9D2, 0xEBBE, 0x6BD3, 0xEBBF, 0x8089, 0xEBC0, 0x80B2, 0xEBC1, 0xF9D3, 0xEBC2, 0xF9D4, + 0xEBC3, 0x5141, 0xEBC4, 0x596B, 0xEBC5, 0x5C39, 0xEBC6, 0xF9D5, 0xEBC7, 0xF9D6, 0xEBC8, 0x6F64, 0xEBC9, 0x73A7, 0xEBCA, 0x80E4, + 0xEBCB, 0x8D07, 0xEBCC, 0xF9D7, 0xEBCD, 0x9217, 0xEBCE, 0x958F, 0xEBCF, 0xF9D8, 0xEBD0, 0xF9D9, 0xEBD1, 0xF9DA, 0xEBD2, 0xF9DB, + 0xEBD3, 0x807F, 0xEBD4, 0x620E, 0xEBD5, 0x701C, 0xEBD6, 0x7D68, 0xEBD7, 0x878D, 0xEBD8, 0xF9DC, 0xEBD9, 0x57A0, 0xEBDA, 0x6069, + 0xEBDB, 0x6147, 0xEBDC, 0x6BB7, 0xEBDD, 0x8ABE, 0xEBDE, 0x9280, 0xEBDF, 0x96B1, 0xEBE0, 0x4E59, 0xEBE1, 0x541F, 0xEBE2, 0x6DEB, + 0xEBE3, 0x852D, 0xEBE4, 0x9670, 0xEBE5, 0x97F3, 0xEBE6, 0x98EE, 0xEBE7, 0x63D6, 0xEBE8, 0x6CE3, 0xEBE9, 0x9091, 0xEBEA, 0x51DD, + 0xEBEB, 0x61C9, 0xEBEC, 0x81BA, 0xEBED, 0x9DF9, 0xEBEE, 0x4F9D, 0xEBEF, 0x501A, 0xEBF0, 0x5100, 0xEBF1, 0x5B9C, 0xEBF2, 0x610F, + 0xEBF3, 0x61FF, 0xEBF4, 0x64EC, 0xEBF5, 0x6905, 0xEBF6, 0x6BC5, 0xEBF7, 0x7591, 0xEBF8, 0x77E3, 0xEBF9, 0x7FA9, 0xEBFA, 0x8264, + 0xEBFB, 0x858F, 0xEBFC, 0x87FB, 0xEBFD, 0x8863, 0xEBFE, 0x8ABC, 0xECA1, 0x8B70, 0xECA2, 0x91AB, 0xECA3, 0x4E8C, 0xECA4, 0x4EE5, + 0xECA5, 0x4F0A, 0xECA6, 0xF9DD, 0xECA7, 0xF9DE, 0xECA8, 0x5937, 0xECA9, 0x59E8, 0xECAA, 0xF9DF, 0xECAB, 0x5DF2, 0xECAC, 0x5F1B, + 0xECAD, 0x5F5B, 0xECAE, 0x6021, 0xECAF, 0xF9E0, 0xECB0, 0xF9E1, 0xECB1, 0xF9E2, 0xECB2, 0xF9E3, 0xECB3, 0x723E, 0xECB4, 0x73E5, + 0xECB5, 0xF9E4, 0xECB6, 0x7570, 0xECB7, 0x75CD, 0xECB8, 0xF9E5, 0xECB9, 0x79FB, 0xECBA, 0xF9E6, 0xECBB, 0x800C, 0xECBC, 0x8033, + 0xECBD, 0x8084, 0xECBE, 0x82E1, 0xECBF, 0x8351, 0xECC0, 0xF9E7, 0xECC1, 0xF9E8, 0xECC2, 0x8CBD, 0xECC3, 0x8CB3, 0xECC4, 0x9087, + 0xECC5, 0xF9E9, 0xECC6, 0xF9EA, 0xECC7, 0x98F4, 0xECC8, 0x990C, 0xECC9, 0xF9EB, 0xECCA, 0xF9EC, 0xECCB, 0x7037, 0xECCC, 0x76CA, + 0xECCD, 0x7FCA, 0xECCE, 0x7FCC, 0xECCF, 0x7FFC, 0xECD0, 0x8B1A, 0xECD1, 0x4EBA, 0xECD2, 0x4EC1, 0xECD3, 0x5203, 0xECD4, 0x5370, + 0xECD5, 0xF9ED, 0xECD6, 0x54BD, 0xECD7, 0x56E0, 0xECD8, 0x59FB, 0xECD9, 0x5BC5, 0xECDA, 0x5F15, 0xECDB, 0x5FCD, 0xECDC, 0x6E6E, + 0xECDD, 0xF9EE, 0xECDE, 0xF9EF, 0xECDF, 0x7D6A, 0xECE0, 0x8335, 0xECE1, 0xF9F0, 0xECE2, 0x8693, 0xECE3, 0x8A8D, 0xECE4, 0xF9F1, + 0xECE5, 0x976D, 0xECE6, 0x9777, 0xECE7, 0xF9F2, 0xECE8, 0xF9F3, 0xECE9, 0x4E00, 0xECEA, 0x4F5A, 0xECEB, 0x4F7E, 0xECEC, 0x58F9, + 0xECED, 0x65E5, 0xECEE, 0x6EA2, 0xECEF, 0x9038, 0xECF0, 0x93B0, 0xECF1, 0x99B9, 0xECF2, 0x4EFB, 0xECF3, 0x58EC, 0xECF4, 0x598A, + 0xECF5, 0x59D9, 0xECF6, 0x6041, 0xECF7, 0xF9F4, 0xECF8, 0xF9F5, 0xECF9, 0x7A14, 0xECFA, 0xF9F6, 0xECFB, 0x834F, 0xECFC, 0x8CC3, + 0xECFD, 0x5165, 0xECFE, 0x5344, 0xEDA1, 0xF9F7, 0xEDA2, 0xF9F8, 0xEDA3, 0xF9F9, 0xEDA4, 0x4ECD, 0xEDA5, 0x5269, 0xEDA6, 0x5B55, + 0xEDA7, 0x82BF, 0xEDA8, 0x4ED4, 0xEDA9, 0x523A, 0xEDAA, 0x54A8, 0xEDAB, 0x59C9, 0xEDAC, 0x59FF, 0xEDAD, 0x5B50, 0xEDAE, 0x5B57, + 0xEDAF, 0x5B5C, 0xEDB0, 0x6063, 0xEDB1, 0x6148, 0xEDB2, 0x6ECB, 0xEDB3, 0x7099, 0xEDB4, 0x716E, 0xEDB5, 0x7386, 0xEDB6, 0x74F7, + 0xEDB7, 0x75B5, 0xEDB8, 0x78C1, 0xEDB9, 0x7D2B, 0xEDBA, 0x8005, 0xEDBB, 0x81EA, 0xEDBC, 0x8328, 0xEDBD, 0x8517, 0xEDBE, 0x85C9, + 0xEDBF, 0x8AEE, 0xEDC0, 0x8CC7, 0xEDC1, 0x96CC, 0xEDC2, 0x4F5C, 0xEDC3, 0x52FA, 0xEDC4, 0x56BC, 0xEDC5, 0x65AB, 0xEDC6, 0x6628, + 0xEDC7, 0x707C, 0xEDC8, 0x70B8, 0xEDC9, 0x7235, 0xEDCA, 0x7DBD, 0xEDCB, 0x828D, 0xEDCC, 0x914C, 0xEDCD, 0x96C0, 0xEDCE, 0x9D72, + 0xEDCF, 0x5B71, 0xEDD0, 0x68E7, 0xEDD1, 0x6B98, 0xEDD2, 0x6F7A, 0xEDD3, 0x76DE, 0xEDD4, 0x5C91, 0xEDD5, 0x66AB, 0xEDD6, 0x6F5B, + 0xEDD7, 0x7BB4, 0xEDD8, 0x7C2A, 0xEDD9, 0x8836, 0xEDDA, 0x96DC, 0xEDDB, 0x4E08, 0xEDDC, 0x4ED7, 0xEDDD, 0x5320, 0xEDDE, 0x5834, + 0xEDDF, 0x58BB, 0xEDE0, 0x58EF, 0xEDE1, 0x596C, 0xEDE2, 0x5C07, 0xEDE3, 0x5E33, 0xEDE4, 0x5E84, 0xEDE5, 0x5F35, 0xEDE6, 0x638C, + 0xEDE7, 0x66B2, 0xEDE8, 0x6756, 0xEDE9, 0x6A1F, 0xEDEA, 0x6AA3, 0xEDEB, 0x6B0C, 0xEDEC, 0x6F3F, 0xEDED, 0x7246, 0xEDEE, 0xF9FA, + 0xEDEF, 0x7350, 0xEDF0, 0x748B, 0xEDF1, 0x7AE0, 0xEDF2, 0x7CA7, 0xEDF3, 0x8178, 0xEDF4, 0x81DF, 0xEDF5, 0x81E7, 0xEDF6, 0x838A, + 0xEDF7, 0x846C, 0xEDF8, 0x8523, 0xEDF9, 0x8594, 0xEDFA, 0x85CF, 0xEDFB, 0x88DD, 0xEDFC, 0x8D13, 0xEDFD, 0x91AC, 0xEDFE, 0x9577, + 0xEEA1, 0x969C, 0xEEA2, 0x518D, 0xEEA3, 0x54C9, 0xEEA4, 0x5728, 0xEEA5, 0x5BB0, 0xEEA6, 0x624D, 0xEEA7, 0x6750, 0xEEA8, 0x683D, + 0xEEA9, 0x6893, 0xEEAA, 0x6E3D, 0xEEAB, 0x6ED3, 0xEEAC, 0x707D, 0xEEAD, 0x7E21, 0xEEAE, 0x88C1, 0xEEAF, 0x8CA1, 0xEEB0, 0x8F09, + 0xEEB1, 0x9F4B, 0xEEB2, 0x9F4E, 0xEEB3, 0x722D, 0xEEB4, 0x7B8F, 0xEEB5, 0x8ACD, 0xEEB6, 0x931A, 0xEEB7, 0x4F47, 0xEEB8, 0x4F4E, + 0xEEB9, 0x5132, 0xEEBA, 0x5480, 0xEEBB, 0x59D0, 0xEEBC, 0x5E95, 0xEEBD, 0x62B5, 0xEEBE, 0x6775, 0xEEBF, 0x696E, 0xEEC0, 0x6A17, + 0xEEC1, 0x6CAE, 0xEEC2, 0x6E1A, 0xEEC3, 0x72D9, 0xEEC4, 0x732A, 0xEEC5, 0x75BD, 0xEEC6, 0x7BB8, 0xEEC7, 0x7D35, 0xEEC8, 0x82E7, + 0xEEC9, 0x83F9, 0xEECA, 0x8457, 0xEECB, 0x85F7, 0xEECC, 0x8A5B, 0xEECD, 0x8CAF, 0xEECE, 0x8E87, 0xEECF, 0x9019, 0xEED0, 0x90B8, + 0xEED1, 0x96CE, 0xEED2, 0x9F5F, 0xEED3, 0x52E3, 0xEED4, 0x540A, 0xEED5, 0x5AE1, 0xEED6, 0x5BC2, 0xEED7, 0x6458, 0xEED8, 0x6575, + 0xEED9, 0x6EF4, 0xEEDA, 0x72C4, 0xEEDB, 0xF9FB, 0xEEDC, 0x7684, 0xEEDD, 0x7A4D, 0xEEDE, 0x7B1B, 0xEEDF, 0x7C4D, 0xEEE0, 0x7E3E, + 0xEEE1, 0x7FDF, 0xEEE2, 0x837B, 0xEEE3, 0x8B2B, 0xEEE4, 0x8CCA, 0xEEE5, 0x8D64, 0xEEE6, 0x8DE1, 0xEEE7, 0x8E5F, 0xEEE8, 0x8FEA, + 0xEEE9, 0x8FF9, 0xEEEA, 0x9069, 0xEEEB, 0x93D1, 0xEEEC, 0x4F43, 0xEEED, 0x4F7A, 0xEEEE, 0x50B3, 0xEEEF, 0x5168, 0xEEF0, 0x5178, + 0xEEF1, 0x524D, 0xEEF2, 0x526A, 0xEEF3, 0x5861, 0xEEF4, 0x587C, 0xEEF5, 0x5960, 0xEEF6, 0x5C08, 0xEEF7, 0x5C55, 0xEEF8, 0x5EDB, + 0xEEF9, 0x609B, 0xEEFA, 0x6230, 0xEEFB, 0x6813, 0xEEFC, 0x6BBF, 0xEEFD, 0x6C08, 0xEEFE, 0x6FB1, 0xEFA1, 0x714E, 0xEFA2, 0x7420, + 0xEFA3, 0x7530, 0xEFA4, 0x7538, 0xEFA5, 0x7551, 0xEFA6, 0x7672, 0xEFA7, 0x7B4C, 0xEFA8, 0x7B8B, 0xEFA9, 0x7BAD, 0xEFAA, 0x7BC6, + 0xEFAB, 0x7E8F, 0xEFAC, 0x8A6E, 0xEFAD, 0x8F3E, 0xEFAE, 0x8F49, 0xEFAF, 0x923F, 0xEFB0, 0x9293, 0xEFB1, 0x9322, 0xEFB2, 0x942B, + 0xEFB3, 0x96FB, 0xEFB4, 0x985A, 0xEFB5, 0x986B, 0xEFB6, 0x991E, 0xEFB7, 0x5207, 0xEFB8, 0x622A, 0xEFB9, 0x6298, 0xEFBA, 0x6D59, + 0xEFBB, 0x7664, 0xEFBC, 0x7ACA, 0xEFBD, 0x7BC0, 0xEFBE, 0x7D76, 0xEFBF, 0x5360, 0xEFC0, 0x5CBE, 0xEFC1, 0x5E97, 0xEFC2, 0x6F38, + 0xEFC3, 0x70B9, 0xEFC4, 0x7C98, 0xEFC5, 0x9711, 0xEFC6, 0x9B8E, 0xEFC7, 0x9EDE, 0xEFC8, 0x63A5, 0xEFC9, 0x647A, 0xEFCA, 0x8776, + 0xEFCB, 0x4E01, 0xEFCC, 0x4E95, 0xEFCD, 0x4EAD, 0xEFCE, 0x505C, 0xEFCF, 0x5075, 0xEFD0, 0x5448, 0xEFD1, 0x59C3, 0xEFD2, 0x5B9A, + 0xEFD3, 0x5E40, 0xEFD4, 0x5EAD, 0xEFD5, 0x5EF7, 0xEFD6, 0x5F81, 0xEFD7, 0x60C5, 0xEFD8, 0x633A, 0xEFD9, 0x653F, 0xEFDA, 0x6574, + 0xEFDB, 0x65CC, 0xEFDC, 0x6676, 0xEFDD, 0x6678, 0xEFDE, 0x67FE, 0xEFDF, 0x6968, 0xEFE0, 0x6A89, 0xEFE1, 0x6B63, 0xEFE2, 0x6C40, + 0xEFE3, 0x6DC0, 0xEFE4, 0x6DE8, 0xEFE5, 0x6E1F, 0xEFE6, 0x6E5E, 0xEFE7, 0x701E, 0xEFE8, 0x70A1, 0xEFE9, 0x738E, 0xEFEA, 0x73FD, + 0xEFEB, 0x753A, 0xEFEC, 0x775B, 0xEFED, 0x7887, 0xEFEE, 0x798E, 0xEFEF, 0x7A0B, 0xEFF0, 0x7A7D, 0xEFF1, 0x7CBE, 0xEFF2, 0x7D8E, + 0xEFF3, 0x8247, 0xEFF4, 0x8A02, 0xEFF5, 0x8AEA, 0xEFF6, 0x8C9E, 0xEFF7, 0x912D, 0xEFF8, 0x914A, 0xEFF9, 0x91D8, 0xEFFA, 0x9266, + 0xEFFB, 0x92CC, 0xEFFC, 0x9320, 0xEFFD, 0x9706, 0xEFFE, 0x9756, 0xF0A1, 0x975C, 0xF0A2, 0x9802, 0xF0A3, 0x9F0E, 0xF0A4, 0x5236, + 0xF0A5, 0x5291, 0xF0A6, 0x557C, 0xF0A7, 0x5824, 0xF0A8, 0x5E1D, 0xF0A9, 0x5F1F, 0xF0AA, 0x608C, 0xF0AB, 0x63D0, 0xF0AC, 0x68AF, + 0xF0AD, 0x6FDF, 0xF0AE, 0x796D, 0xF0AF, 0x7B2C, 0xF0B0, 0x81CD, 0xF0B1, 0x85BA, 0xF0B2, 0x88FD, 0xF0B3, 0x8AF8, 0xF0B4, 0x8E44, + 0xF0B5, 0x918D, 0xF0B6, 0x9664, 0xF0B7, 0x969B, 0xF0B8, 0x973D, 0xF0B9, 0x984C, 0xF0BA, 0x9F4A, 0xF0BB, 0x4FCE, 0xF0BC, 0x5146, + 0xF0BD, 0x51CB, 0xF0BE, 0x52A9, 0xF0BF, 0x5632, 0xF0C0, 0x5F14, 0xF0C1, 0x5F6B, 0xF0C2, 0x63AA, 0xF0C3, 0x64CD, 0xF0C4, 0x65E9, + 0xF0C5, 0x6641, 0xF0C6, 0x66FA, 0xF0C7, 0x66F9, 0xF0C8, 0x671D, 0xF0C9, 0x689D, 0xF0CA, 0x68D7, 0xF0CB, 0x69FD, 0xF0CC, 0x6F15, + 0xF0CD, 0x6F6E, 0xF0CE, 0x7167, 0xF0CF, 0x71E5, 0xF0D0, 0x722A, 0xF0D1, 0x74AA, 0xF0D2, 0x773A, 0xF0D3, 0x7956, 0xF0D4, 0x795A, + 0xF0D5, 0x79DF, 0xF0D6, 0x7A20, 0xF0D7, 0x7A95, 0xF0D8, 0x7C97, 0xF0D9, 0x7CDF, 0xF0DA, 0x7D44, 0xF0DB, 0x7E70, 0xF0DC, 0x8087, + 0xF0DD, 0x85FB, 0xF0DE, 0x86A4, 0xF0DF, 0x8A54, 0xF0E0, 0x8ABF, 0xF0E1, 0x8D99, 0xF0E2, 0x8E81, 0xF0E3, 0x9020, 0xF0E4, 0x906D, + 0xF0E5, 0x91E3, 0xF0E6, 0x963B, 0xF0E7, 0x96D5, 0xF0E8, 0x9CE5, 0xF0E9, 0x65CF, 0xF0EA, 0x7C07, 0xF0EB, 0x8DB3, 0xF0EC, 0x93C3, + 0xF0ED, 0x5B58, 0xF0EE, 0x5C0A, 0xF0EF, 0x5352, 0xF0F0, 0x62D9, 0xF0F1, 0x731D, 0xF0F2, 0x5027, 0xF0F3, 0x5B97, 0xF0F4, 0x5F9E, + 0xF0F5, 0x60B0, 0xF0F6, 0x616B, 0xF0F7, 0x68D5, 0xF0F8, 0x6DD9, 0xF0F9, 0x742E, 0xF0FA, 0x7A2E, 0xF0FB, 0x7D42, 0xF0FC, 0x7D9C, + 0xF0FD, 0x7E31, 0xF0FE, 0x816B, 0xF1A1, 0x8E2A, 0xF1A2, 0x8E35, 0xF1A3, 0x937E, 0xF1A4, 0x9418, 0xF1A5, 0x4F50, 0xF1A6, 0x5750, + 0xF1A7, 0x5DE6, 0xF1A8, 0x5EA7, 0xF1A9, 0x632B, 0xF1AA, 0x7F6A, 0xF1AB, 0x4E3B, 0xF1AC, 0x4F4F, 0xF1AD, 0x4F8F, 0xF1AE, 0x505A, + 0xF1AF, 0x59DD, 0xF1B0, 0x80C4, 0xF1B1, 0x546A, 0xF1B2, 0x5468, 0xF1B3, 0x55FE, 0xF1B4, 0x594F, 0xF1B5, 0x5B99, 0xF1B6, 0x5DDE, + 0xF1B7, 0x5EDA, 0xF1B8, 0x665D, 0xF1B9, 0x6731, 0xF1BA, 0x67F1, 0xF1BB, 0x682A, 0xF1BC, 0x6CE8, 0xF1BD, 0x6D32, 0xF1BE, 0x6E4A, + 0xF1BF, 0x6F8D, 0xF1C0, 0x70B7, 0xF1C1, 0x73E0, 0xF1C2, 0x7587, 0xF1C3, 0x7C4C, 0xF1C4, 0x7D02, 0xF1C5, 0x7D2C, 0xF1C6, 0x7DA2, + 0xF1C7, 0x821F, 0xF1C8, 0x86DB, 0xF1C9, 0x8A3B, 0xF1CA, 0x8A85, 0xF1CB, 0x8D70, 0xF1CC, 0x8E8A, 0xF1CD, 0x8F33, 0xF1CE, 0x9031, + 0xF1CF, 0x914E, 0xF1D0, 0x9152, 0xF1D1, 0x9444, 0xF1D2, 0x99D0, 0xF1D3, 0x7AF9, 0xF1D4, 0x7CA5, 0xF1D5, 0x4FCA, 0xF1D6, 0x5101, + 0xF1D7, 0x51C6, 0xF1D8, 0x57C8, 0xF1D9, 0x5BEF, 0xF1DA, 0x5CFB, 0xF1DB, 0x6659, 0xF1DC, 0x6A3D, 0xF1DD, 0x6D5A, 0xF1DE, 0x6E96, + 0xF1DF, 0x6FEC, 0xF1E0, 0x710C, 0xF1E1, 0x756F, 0xF1E2, 0x7AE3, 0xF1E3, 0x8822, 0xF1E4, 0x9021, 0xF1E5, 0x9075, 0xF1E6, 0x96CB, + 0xF1E7, 0x99FF, 0xF1E8, 0x8301, 0xF1E9, 0x4E2D, 0xF1EA, 0x4EF2, 0xF1EB, 0x8846, 0xF1EC, 0x91CD, 0xF1ED, 0x537D, 0xF1EE, 0x6ADB, + 0xF1EF, 0x696B, 0xF1F0, 0x6C41, 0xF1F1, 0x847A, 0xF1F2, 0x589E, 0xF1F3, 0x618E, 0xF1F4, 0x66FE, 0xF1F5, 0x62EF, 0xF1F6, 0x70DD, + 0xF1F7, 0x7511, 0xF1F8, 0x75C7, 0xF1F9, 0x7E52, 0xF1FA, 0x84B8, 0xF1FB, 0x8B49, 0xF1FC, 0x8D08, 0xF1FD, 0x4E4B, 0xF1FE, 0x53EA, + 0xF2A1, 0x54AB, 0xF2A2, 0x5730, 0xF2A3, 0x5740, 0xF2A4, 0x5FD7, 0xF2A5, 0x6301, 0xF2A6, 0x6307, 0xF2A7, 0x646F, 0xF2A8, 0x652F, + 0xF2A9, 0x65E8, 0xF2AA, 0x667A, 0xF2AB, 0x679D, 0xF2AC, 0x67B3, 0xF2AD, 0x6B62, 0xF2AE, 0x6C60, 0xF2AF, 0x6C9A, 0xF2B0, 0x6F2C, + 0xF2B1, 0x77E5, 0xF2B2, 0x7825, 0xF2B3, 0x7949, 0xF2B4, 0x7957, 0xF2B5, 0x7D19, 0xF2B6, 0x80A2, 0xF2B7, 0x8102, 0xF2B8, 0x81F3, + 0xF2B9, 0x829D, 0xF2BA, 0x82B7, 0xF2BB, 0x8718, 0xF2BC, 0x8A8C, 0xF2BD, 0xF9FC, 0xF2BE, 0x8D04, 0xF2BF, 0x8DBE, 0xF2C0, 0x9072, + 0xF2C1, 0x76F4, 0xF2C2, 0x7A19, 0xF2C3, 0x7A37, 0xF2C4, 0x7E54, 0xF2C5, 0x8077, 0xF2C6, 0x5507, 0xF2C7, 0x55D4, 0xF2C8, 0x5875, + 0xF2C9, 0x632F, 0xF2CA, 0x6422, 0xF2CB, 0x6649, 0xF2CC, 0x664B, 0xF2CD, 0x686D, 0xF2CE, 0x699B, 0xF2CF, 0x6B84, 0xF2D0, 0x6D25, + 0xF2D1, 0x6EB1, 0xF2D2, 0x73CD, 0xF2D3, 0x7468, 0xF2D4, 0x74A1, 0xF2D5, 0x755B, 0xF2D6, 0x75B9, 0xF2D7, 0x76E1, 0xF2D8, 0x771E, + 0xF2D9, 0x778B, 0xF2DA, 0x79E6, 0xF2DB, 0x7E09, 0xF2DC, 0x7E1D, 0xF2DD, 0x81FB, 0xF2DE, 0x852F, 0xF2DF, 0x8897, 0xF2E0, 0x8A3A, + 0xF2E1, 0x8CD1, 0xF2E2, 0x8EEB, 0xF2E3, 0x8FB0, 0xF2E4, 0x9032, 0xF2E5, 0x93AD, 0xF2E6, 0x9663, 0xF2E7, 0x9673, 0xF2E8, 0x9707, + 0xF2E9, 0x4F84, 0xF2EA, 0x53F1, 0xF2EB, 0x59EA, 0xF2EC, 0x5AC9, 0xF2ED, 0x5E19, 0xF2EE, 0x684E, 0xF2EF, 0x74C6, 0xF2F0, 0x75BE, + 0xF2F1, 0x79E9, 0xF2F2, 0x7A92, 0xF2F3, 0x81A3, 0xF2F4, 0x86ED, 0xF2F5, 0x8CEA, 0xF2F6, 0x8DCC, 0xF2F7, 0x8FED, 0xF2F8, 0x659F, + 0xF2F9, 0x6715, 0xF2FA, 0xF9FD, 0xF2FB, 0x57F7, 0xF2FC, 0x6F57, 0xF2FD, 0x7DDD, 0xF2FE, 0x8F2F, 0xF3A1, 0x93F6, 0xF3A2, 0x96C6, + 0xF3A3, 0x5FB5, 0xF3A4, 0x61F2, 0xF3A5, 0x6F84, 0xF3A6, 0x4E14, 0xF3A7, 0x4F98, 0xF3A8, 0x501F, 0xF3A9, 0x53C9, 0xF3AA, 0x55DF, + 0xF3AB, 0x5D6F, 0xF3AC, 0x5DEE, 0xF3AD, 0x6B21, 0xF3AE, 0x6B64, 0xF3AF, 0x78CB, 0xF3B0, 0x7B9A, 0xF3B1, 0xF9FE, 0xF3B2, 0x8E49, + 0xF3B3, 0x8ECA, 0xF3B4, 0x906E, 0xF3B5, 0x6349, 0xF3B6, 0x643E, 0xF3B7, 0x7740, 0xF3B8, 0x7A84, 0xF3B9, 0x932F, 0xF3BA, 0x947F, + 0xF3BB, 0x9F6A, 0xF3BC, 0x64B0, 0xF3BD, 0x6FAF, 0xF3BE, 0x71E6, 0xF3BF, 0x74A8, 0xF3C0, 0x74DA, 0xF3C1, 0x7AC4, 0xF3C2, 0x7C12, + 0xF3C3, 0x7E82, 0xF3C4, 0x7CB2, 0xF3C5, 0x7E98, 0xF3C6, 0x8B9A, 0xF3C7, 0x8D0A, 0xF3C8, 0x947D, 0xF3C9, 0x9910, 0xF3CA, 0x994C, + 0xF3CB, 0x5239, 0xF3CC, 0x5BDF, 0xF3CD, 0x64E6, 0xF3CE, 0x672D, 0xF3CF, 0x7D2E, 0xF3D0, 0x50ED, 0xF3D1, 0x53C3, 0xF3D2, 0x5879, + 0xF3D3, 0x6158, 0xF3D4, 0x6159, 0xF3D5, 0x61FA, 0xF3D6, 0x65AC, 0xF3D7, 0x7AD9, 0xF3D8, 0x8B92, 0xF3D9, 0x8B96, 0xF3DA, 0x5009, + 0xF3DB, 0x5021, 0xF3DC, 0x5275, 0xF3DD, 0x5531, 0xF3DE, 0x5A3C, 0xF3DF, 0x5EE0, 0xF3E0, 0x5F70, 0xF3E1, 0x6134, 0xF3E2, 0x655E, + 0xF3E3, 0x660C, 0xF3E4, 0x6636, 0xF3E5, 0x66A2, 0xF3E6, 0x69CD, 0xF3E7, 0x6EC4, 0xF3E8, 0x6F32, 0xF3E9, 0x7316, 0xF3EA, 0x7621, + 0xF3EB, 0x7A93, 0xF3EC, 0x8139, 0xF3ED, 0x8259, 0xF3EE, 0x83D6, 0xF3EF, 0x84BC, 0xF3F0, 0x50B5, 0xF3F1, 0x57F0, 0xF3F2, 0x5BC0, + 0xF3F3, 0x5BE8, 0xF3F4, 0x5F69, 0xF3F5, 0x63A1, 0xF3F6, 0x7826, 0xF3F7, 0x7DB5, 0xF3F8, 0x83DC, 0xF3F9, 0x8521, 0xF3FA, 0x91C7, + 0xF3FB, 0x91F5, 0xF3FC, 0x518A, 0xF3FD, 0x67F5, 0xF3FE, 0x7B56, 0xF4A1, 0x8CAC, 0xF4A2, 0x51C4, 0xF4A3, 0x59BB, 0xF4A4, 0x60BD, + 0xF4A5, 0x8655, 0xF4A6, 0x501C, 0xF4A7, 0xF9FF, 0xF4A8, 0x5254, 0xF4A9, 0x5C3A, 0xF4AA, 0x617D, 0xF4AB, 0x621A, 0xF4AC, 0x62D3, + 0xF4AD, 0x64F2, 0xF4AE, 0x65A5, 0xF4AF, 0x6ECC, 0xF4B0, 0x7620, 0xF4B1, 0x810A, 0xF4B2, 0x8E60, 0xF4B3, 0x965F, 0xF4B4, 0x96BB, + 0xF4B5, 0x4EDF, 0xF4B6, 0x5343, 0xF4B7, 0x5598, 0xF4B8, 0x5929, 0xF4B9, 0x5DDD, 0xF4BA, 0x64C5, 0xF4BB, 0x6CC9, 0xF4BC, 0x6DFA, + 0xF4BD, 0x7394, 0xF4BE, 0x7A7F, 0xF4BF, 0x821B, 0xF4C0, 0x85A6, 0xF4C1, 0x8CE4, 0xF4C2, 0x8E10, 0xF4C3, 0x9077, 0xF4C4, 0x91E7, + 0xF4C5, 0x95E1, 0xF4C6, 0x9621, 0xF4C7, 0x97C6, 0xF4C8, 0x51F8, 0xF4C9, 0x54F2, 0xF4CA, 0x5586, 0xF4CB, 0x5FB9, 0xF4CC, 0x64A4, + 0xF4CD, 0x6F88, 0xF4CE, 0x7DB4, 0xF4CF, 0x8F1F, 0xF4D0, 0x8F4D, 0xF4D1, 0x9435, 0xF4D2, 0x50C9, 0xF4D3, 0x5C16, 0xF4D4, 0x6CBE, + 0xF4D5, 0x6DFB, 0xF4D6, 0x751B, 0xF4D7, 0x77BB, 0xF4D8, 0x7C3D, 0xF4D9, 0x7C64, 0xF4DA, 0x8A79, 0xF4DB, 0x8AC2, 0xF4DC, 0x581E, + 0xF4DD, 0x59BE, 0xF4DE, 0x5E16, 0xF4DF, 0x6377, 0xF4E0, 0x7252, 0xF4E1, 0x758A, 0xF4E2, 0x776B, 0xF4E3, 0x8ADC, 0xF4E4, 0x8CBC, + 0xF4E5, 0x8F12, 0xF4E6, 0x5EF3, 0xF4E7, 0x6674, 0xF4E8, 0x6DF8, 0xF4E9, 0x807D, 0xF4EA, 0x83C1, 0xF4EB, 0x8ACB, 0xF4EC, 0x9751, + 0xF4ED, 0x9BD6, 0xF4EE, 0xFA00, 0xF4EF, 0x5243, 0xF4F0, 0x66FF, 0xF4F1, 0x6D95, 0xF4F2, 0x6EEF, 0xF4F3, 0x7DE0, 0xF4F4, 0x8AE6, + 0xF4F5, 0x902E, 0xF4F6, 0x905E, 0xF4F7, 0x9AD4, 0xF4F8, 0x521D, 0xF4F9, 0x527F, 0xF4FA, 0x54E8, 0xF4FB, 0x6194, 0xF4FC, 0x6284, + 0xF4FD, 0x62DB, 0xF4FE, 0x68A2, 0xF5A1, 0x6912, 0xF5A2, 0x695A, 0xF5A3, 0x6A35, 0xF5A4, 0x7092, 0xF5A5, 0x7126, 0xF5A6, 0x785D, + 0xF5A7, 0x7901, 0xF5A8, 0x790E, 0xF5A9, 0x79D2, 0xF5AA, 0x7A0D, 0xF5AB, 0x8096, 0xF5AC, 0x8278, 0xF5AD, 0x82D5, 0xF5AE, 0x8349, + 0xF5AF, 0x8549, 0xF5B0, 0x8C82, 0xF5B1, 0x8D85, 0xF5B2, 0x9162, 0xF5B3, 0x918B, 0xF5B4, 0x91AE, 0xF5B5, 0x4FC3, 0xF5B6, 0x56D1, + 0xF5B7, 0x71ED, 0xF5B8, 0x77D7, 0xF5B9, 0x8700, 0xF5BA, 0x89F8, 0xF5BB, 0x5BF8, 0xF5BC, 0x5FD6, 0xF5BD, 0x6751, 0xF5BE, 0x90A8, + 0xF5BF, 0x53E2, 0xF5C0, 0x585A, 0xF5C1, 0x5BF5, 0xF5C2, 0x60A4, 0xF5C3, 0x6181, 0xF5C4, 0x6460, 0xF5C5, 0x7E3D, 0xF5C6, 0x8070, + 0xF5C7, 0x8525, 0xF5C8, 0x9283, 0xF5C9, 0x64AE, 0xF5CA, 0x50AC, 0xF5CB, 0x5D14, 0xF5CC, 0x6700, 0xF5CD, 0x589C, 0xF5CE, 0x62BD, + 0xF5CF, 0x63A8, 0xF5D0, 0x690E, 0xF5D1, 0x6978, 0xF5D2, 0x6A1E, 0xF5D3, 0x6E6B, 0xF5D4, 0x76BA, 0xF5D5, 0x79CB, 0xF5D6, 0x82BB, + 0xF5D7, 0x8429, 0xF5D8, 0x8ACF, 0xF5D9, 0x8DA8, 0xF5DA, 0x8FFD, 0xF5DB, 0x9112, 0xF5DC, 0x914B, 0xF5DD, 0x919C, 0xF5DE, 0x9310, + 0xF5DF, 0x9318, 0xF5E0, 0x939A, 0xF5E1, 0x96DB, 0xF5E2, 0x9A36, 0xF5E3, 0x9C0D, 0xF5E4, 0x4E11, 0xF5E5, 0x755C, 0xF5E6, 0x795D, + 0xF5E7, 0x7AFA, 0xF5E8, 0x7B51, 0xF5E9, 0x7BC9, 0xF5EA, 0x7E2E, 0xF5EB, 0x84C4, 0xF5EC, 0x8E59, 0xF5ED, 0x8E74, 0xF5EE, 0x8EF8, + 0xF5EF, 0x9010, 0xF5F0, 0x6625, 0xF5F1, 0x693F, 0xF5F2, 0x7443, 0xF5F3, 0x51FA, 0xF5F4, 0x672E, 0xF5F5, 0x9EDC, 0xF5F6, 0x5145, + 0xF5F7, 0x5FE0, 0xF5F8, 0x6C96, 0xF5F9, 0x87F2, 0xF5FA, 0x885D, 0xF5FB, 0x8877, 0xF5FC, 0x60B4, 0xF5FD, 0x81B5, 0xF5FE, 0x8403, + 0xF6A1, 0x8D05, 0xF6A2, 0x53D6, 0xF6A3, 0x5439, 0xF6A4, 0x5634, 0xF6A5, 0x5A36, 0xF6A6, 0x5C31, 0xF6A7, 0x708A, 0xF6A8, 0x7FE0, + 0xF6A9, 0x805A, 0xF6AA, 0x8106, 0xF6AB, 0x81ED, 0xF6AC, 0x8DA3, 0xF6AD, 0x9189, 0xF6AE, 0x9A5F, 0xF6AF, 0x9DF2, 0xF6B0, 0x5074, + 0xF6B1, 0x4EC4, 0xF6B2, 0x53A0, 0xF6B3, 0x60FB, 0xF6B4, 0x6E2C, 0xF6B5, 0x5C64, 0xF6B6, 0x4F88, 0xF6B7, 0x5024, 0xF6B8, 0x55E4, + 0xF6B9, 0x5CD9, 0xF6BA, 0x5E5F, 0xF6BB, 0x6065, 0xF6BC, 0x6894, 0xF6BD, 0x6CBB, 0xF6BE, 0x6DC4, 0xF6BF, 0x71BE, 0xF6C0, 0x75D4, + 0xF6C1, 0x75F4, 0xF6C2, 0x7661, 0xF6C3, 0x7A1A, 0xF6C4, 0x7A49, 0xF6C5, 0x7DC7, 0xF6C6, 0x7DFB, 0xF6C7, 0x7F6E, 0xF6C8, 0x81F4, + 0xF6C9, 0x86A9, 0xF6CA, 0x8F1C, 0xF6CB, 0x96C9, 0xF6CC, 0x99B3, 0xF6CD, 0x9F52, 0xF6CE, 0x5247, 0xF6CF, 0x52C5, 0xF6D0, 0x98ED, + 0xF6D1, 0x89AA, 0xF6D2, 0x4E03, 0xF6D3, 0x67D2, 0xF6D4, 0x6F06, 0xF6D5, 0x4FB5, 0xF6D6, 0x5BE2, 0xF6D7, 0x6795, 0xF6D8, 0x6C88, + 0xF6D9, 0x6D78, 0xF6DA, 0x741B, 0xF6DB, 0x7827, 0xF6DC, 0x91DD, 0xF6DD, 0x937C, 0xF6DE, 0x87C4, 0xF6DF, 0x79E4, 0xF6E0, 0x7A31, + 0xF6E1, 0x5FEB, 0xF6E2, 0x4ED6, 0xF6E3, 0x54A4, 0xF6E4, 0x553E, 0xF6E5, 0x58AE, 0xF6E6, 0x59A5, 0xF6E7, 0x60F0, 0xF6E8, 0x6253, + 0xF6E9, 0x62D6, 0xF6EA, 0x6736, 0xF6EB, 0x6955, 0xF6EC, 0x8235, 0xF6ED, 0x9640, 0xF6EE, 0x99B1, 0xF6EF, 0x99DD, 0xF6F0, 0x502C, + 0xF6F1, 0x5353, 0xF6F2, 0x5544, 0xF6F3, 0x577C, 0xF6F4, 0xFA01, 0xF6F5, 0x6258, 0xF6F6, 0xFA02, 0xF6F7, 0x64E2, 0xF6F8, 0x666B, + 0xF6F9, 0x67DD, 0xF6FA, 0x6FC1, 0xF6FB, 0x6FEF, 0xF6FC, 0x7422, 0xF6FD, 0x7438, 0xF6FE, 0x8A17, 0xF7A1, 0x9438, 0xF7A2, 0x5451, + 0xF7A3, 0x5606, 0xF7A4, 0x5766, 0xF7A5, 0x5F48, 0xF7A6, 0x619A, 0xF7A7, 0x6B4E, 0xF7A8, 0x7058, 0xF7A9, 0x70AD, 0xF7AA, 0x7DBB, + 0xF7AB, 0x8A95, 0xF7AC, 0x596A, 0xF7AD, 0x812B, 0xF7AE, 0x63A2, 0xF7AF, 0x7708, 0xF7B0, 0x803D, 0xF7B1, 0x8CAA, 0xF7B2, 0x5854, + 0xF7B3, 0x642D, 0xF7B4, 0x69BB, 0xF7B5, 0x5B95, 0xF7B6, 0x5E11, 0xF7B7, 0x6E6F, 0xF7B8, 0xFA03, 0xF7B9, 0x8569, 0xF7BA, 0x514C, + 0xF7BB, 0x53F0, 0xF7BC, 0x592A, 0xF7BD, 0x6020, 0xF7BE, 0x614B, 0xF7BF, 0x6B86, 0xF7C0, 0x6C70, 0xF7C1, 0x6CF0, 0xF7C2, 0x7B1E, + 0xF7C3, 0x80CE, 0xF7C4, 0x82D4, 0xF7C5, 0x8DC6, 0xF7C6, 0x90B0, 0xF7C7, 0x98B1, 0xF7C8, 0xFA04, 0xF7C9, 0x64C7, 0xF7CA, 0x6FA4, + 0xF7CB, 0x6491, 0xF7CC, 0x6504, 0xF7CD, 0x514E, 0xF7CE, 0x5410, 0xF7CF, 0x571F, 0xF7D0, 0x8A0E, 0xF7D1, 0x615F, 0xF7D2, 0x6876, + 0xF7D3, 0xFA05, 0xF7D4, 0x75DB, 0xF7D5, 0x7B52, 0xF7D6, 0x7D71, 0xF7D7, 0x901A, 0xF7D8, 0x5806, 0xF7D9, 0x69CC, 0xF7DA, 0x817F, + 0xF7DB, 0x892A, 0xF7DC, 0x9000, 0xF7DD, 0x9839, 0xF7DE, 0x5078, 0xF7DF, 0x5957, 0xF7E0, 0x59AC, 0xF7E1, 0x6295, 0xF7E2, 0x900F, + 0xF7E3, 0x9B2A, 0xF7E4, 0x615D, 0xF7E5, 0x7279, 0xF7E6, 0x95D6, 0xF7E7, 0x5761, 0xF7E8, 0x5A46, 0xF7E9, 0x5DF4, 0xF7EA, 0x628A, + 0xF7EB, 0x64AD, 0xF7EC, 0x64FA, 0xF7ED, 0x6777, 0xF7EE, 0x6CE2, 0xF7EF, 0x6D3E, 0xF7F0, 0x722C, 0xF7F1, 0x7436, 0xF7F2, 0x7834, + 0xF7F3, 0x7F77, 0xF7F4, 0x82AD, 0xF7F5, 0x8DDB, 0xF7F6, 0x9817, 0xF7F7, 0x5224, 0xF7F8, 0x5742, 0xF7F9, 0x677F, 0xF7FA, 0x7248, + 0xF7FB, 0x74E3, 0xF7FC, 0x8CA9, 0xF7FD, 0x8FA6, 0xF7FE, 0x9211, 0xF8A1, 0x962A, 0xF8A2, 0x516B, 0xF8A3, 0x53ED, 0xF8A4, 0x634C, + 0xF8A5, 0x4F69, 0xF8A6, 0x5504, 0xF8A7, 0x6096, 0xF8A8, 0x6557, 0xF8A9, 0x6C9B, 0xF8AA, 0x6D7F, 0xF8AB, 0x724C, 0xF8AC, 0x72FD, + 0xF8AD, 0x7A17, 0xF8AE, 0x8987, 0xF8AF, 0x8C9D, 0xF8B0, 0x5F6D, 0xF8B1, 0x6F8E, 0xF8B2, 0x70F9, 0xF8B3, 0x81A8, 0xF8B4, 0x610E, + 0xF8B5, 0x4FBF, 0xF8B6, 0x504F, 0xF8B7, 0x6241, 0xF8B8, 0x7247, 0xF8B9, 0x7BC7, 0xF8BA, 0x7DE8, 0xF8BB, 0x7FE9, 0xF8BC, 0x904D, + 0xF8BD, 0x97AD, 0xF8BE, 0x9A19, 0xF8BF, 0x8CB6, 0xF8C0, 0x576A, 0xF8C1, 0x5E73, 0xF8C2, 0x67B0, 0xF8C3, 0x840D, 0xF8C4, 0x8A55, + 0xF8C5, 0x5420, 0xF8C6, 0x5B16, 0xF8C7, 0x5E63, 0xF8C8, 0x5EE2, 0xF8C9, 0x5F0A, 0xF8CA, 0x6583, 0xF8CB, 0x80BA, 0xF8CC, 0x853D, + 0xF8CD, 0x9589, 0xF8CE, 0x965B, 0xF8CF, 0x4F48, 0xF8D0, 0x5305, 0xF8D1, 0x530D, 0xF8D2, 0x530F, 0xF8D3, 0x5486, 0xF8D4, 0x54FA, + 0xF8D5, 0x5703, 0xF8D6, 0x5E03, 0xF8D7, 0x6016, 0xF8D8, 0x629B, 0xF8D9, 0x62B1, 0xF8DA, 0x6355, 0xF8DB, 0xFA06, 0xF8DC, 0x6CE1, + 0xF8DD, 0x6D66, 0xF8DE, 0x75B1, 0xF8DF, 0x7832, 0xF8E0, 0x80DE, 0xF8E1, 0x812F, 0xF8E2, 0x82DE, 0xF8E3, 0x8461, 0xF8E4, 0x84B2, + 0xF8E5, 0x888D, 0xF8E6, 0x8912, 0xF8E7, 0x900B, 0xF8E8, 0x92EA, 0xF8E9, 0x98FD, 0xF8EA, 0x9B91, 0xF8EB, 0x5E45, 0xF8EC, 0x66B4, + 0xF8ED, 0x66DD, 0xF8EE, 0x7011, 0xF8EF, 0x7206, 0xF8F0, 0xFA07, 0xF8F1, 0x4FF5, 0xF8F2, 0x527D, 0xF8F3, 0x5F6A, 0xF8F4, 0x6153, + 0xF8F5, 0x6753, 0xF8F6, 0x6A19, 0xF8F7, 0x6F02, 0xF8F8, 0x74E2, 0xF8F9, 0x7968, 0xF8FA, 0x8868, 0xF8FB, 0x8C79, 0xF8FC, 0x98C7, + 0xF8FD, 0x98C4, 0xF8FE, 0x9A43, 0xF9A1, 0x54C1, 0xF9A2, 0x7A1F, 0xF9A3, 0x6953, 0xF9A4, 0x8AF7, 0xF9A5, 0x8C4A, 0xF9A6, 0x98A8, + 0xF9A7, 0x99AE, 0xF9A8, 0x5F7C, 0xF9A9, 0x62AB, 0xF9AA, 0x75B2, 0xF9AB, 0x76AE, 0xF9AC, 0x88AB, 0xF9AD, 0x907F, 0xF9AE, 0x9642, + 0xF9AF, 0x5339, 0xF9B0, 0x5F3C, 0xF9B1, 0x5FC5, 0xF9B2, 0x6CCC, 0xF9B3, 0x73CC, 0xF9B4, 0x7562, 0xF9B5, 0x758B, 0xF9B6, 0x7B46, + 0xF9B7, 0x82FE, 0xF9B8, 0x999D, 0xF9B9, 0x4E4F, 0xF9BA, 0x903C, 0xF9BB, 0x4E0B, 0xF9BC, 0x4F55, 0xF9BD, 0x53A6, 0xF9BE, 0x590F, + 0xF9BF, 0x5EC8, 0xF9C0, 0x6630, 0xF9C1, 0x6CB3, 0xF9C2, 0x7455, 0xF9C3, 0x8377, 0xF9C4, 0x8766, 0xF9C5, 0x8CC0, 0xF9C6, 0x9050, + 0xF9C7, 0x971E, 0xF9C8, 0x9C15, 0xF9C9, 0x58D1, 0xF9CA, 0x5B78, 0xF9CB, 0x8650, 0xF9CC, 0x8B14, 0xF9CD, 0x9DB4, 0xF9CE, 0x5BD2, + 0xF9CF, 0x6068, 0xF9D0, 0x608D, 0xF9D1, 0x65F1, 0xF9D2, 0x6C57, 0xF9D3, 0x6F22, 0xF9D4, 0x6FA3, 0xF9D5, 0x701A, 0xF9D6, 0x7F55, + 0xF9D7, 0x7FF0, 0xF9D8, 0x9591, 0xF9D9, 0x9592, 0xF9DA, 0x9650, 0xF9DB, 0x97D3, 0xF9DC, 0x5272, 0xF9DD, 0x8F44, 0xF9DE, 0x51FD, + 0xF9DF, 0x542B, 0xF9E0, 0x54B8, 0xF9E1, 0x5563, 0xF9E2, 0x558A, 0xF9E3, 0x6ABB, 0xF9E4, 0x6DB5, 0xF9E5, 0x7DD8, 0xF9E6, 0x8266, + 0xF9E7, 0x929C, 0xF9E8, 0x9677, 0xF9E9, 0x9E79, 0xF9EA, 0x5408, 0xF9EB, 0x54C8, 0xF9EC, 0x76D2, 0xF9ED, 0x86E4, 0xF9EE, 0x95A4, + 0xF9EF, 0x95D4, 0xF9F0, 0x965C, 0xF9F1, 0x4EA2, 0xF9F2, 0x4F09, 0xF9F3, 0x59EE, 0xF9F4, 0x5AE6, 0xF9F5, 0x5DF7, 0xF9F6, 0x6052, + 0xF9F7, 0x6297, 0xF9F8, 0x676D, 0xF9F9, 0x6841, 0xF9FA, 0x6C86, 0xF9FB, 0x6E2F, 0xF9FC, 0x7F38, 0xF9FD, 0x809B, 0xF9FE, 0x822A, + 0xFAA1, 0xFA08, 0xFAA2, 0xFA09, 0xFAA3, 0x9805, 0xFAA4, 0x4EA5, 0xFAA5, 0x5055, 0xFAA6, 0x54B3, 0xFAA7, 0x5793, 0xFAA8, 0x595A, + 0xFAA9, 0x5B69, 0xFAAA, 0x5BB3, 0xFAAB, 0x61C8, 0xFAAC, 0x6977, 0xFAAD, 0x6D77, 0xFAAE, 0x7023, 0xFAAF, 0x87F9, 0xFAB0, 0x89E3, + 0xFAB1, 0x8A72, 0xFAB2, 0x8AE7, 0xFAB3, 0x9082, 0xFAB4, 0x99ED, 0xFAB5, 0x9AB8, 0xFAB6, 0x52BE, 0xFAB7, 0x6838, 0xFAB8, 0x5016, + 0xFAB9, 0x5E78, 0xFABA, 0x674F, 0xFABB, 0x8347, 0xFABC, 0x884C, 0xFABD, 0x4EAB, 0xFABE, 0x5411, 0xFABF, 0x56AE, 0xFAC0, 0x73E6, + 0xFAC1, 0x9115, 0xFAC2, 0x97FF, 0xFAC3, 0x9909, 0xFAC4, 0x9957, 0xFAC5, 0x9999, 0xFAC6, 0x5653, 0xFAC7, 0x589F, 0xFAC8, 0x865B, + 0xFAC9, 0x8A31, 0xFACA, 0x61B2, 0xFACB, 0x6AF6, 0xFACC, 0x737B, 0xFACD, 0x8ED2, 0xFACE, 0x6B47, 0xFACF, 0x96AA, 0xFAD0, 0x9A57, + 0xFAD1, 0x5955, 0xFAD2, 0x7200, 0xFAD3, 0x8D6B, 0xFAD4, 0x9769, 0xFAD5, 0x4FD4, 0xFAD6, 0x5CF4, 0xFAD7, 0x5F26, 0xFAD8, 0x61F8, + 0xFAD9, 0x665B, 0xFADA, 0x6CEB, 0xFADB, 0x70AB, 0xFADC, 0x7384, 0xFADD, 0x73B9, 0xFADE, 0x73FE, 0xFADF, 0x7729, 0xFAE0, 0x774D, + 0xFAE1, 0x7D43, 0xFAE2, 0x7D62, 0xFAE3, 0x7E23, 0xFAE4, 0x8237, 0xFAE5, 0x8852, 0xFAE6, 0xFA0A, 0xFAE7, 0x8CE2, 0xFAE8, 0x9249, + 0xFAE9, 0x986F, 0xFAEA, 0x5B51, 0xFAEB, 0x7A74, 0xFAEC, 0x8840, 0xFAED, 0x9801, 0xFAEE, 0x5ACC, 0xFAEF, 0x4FE0, 0xFAF0, 0x5354, + 0xFAF1, 0x593E, 0xFAF2, 0x5CFD, 0xFAF3, 0x633E, 0xFAF4, 0x6D79, 0xFAF5, 0x72F9, 0xFAF6, 0x8105, 0xFAF7, 0x8107, 0xFAF8, 0x83A2, + 0xFAF9, 0x92CF, 0xFAFA, 0x9830, 0xFAFB, 0x4EA8, 0xFAFC, 0x5144, 0xFAFD, 0x5211, 0xFAFE, 0x578B, 0xFBA1, 0x5F62, 0xFBA2, 0x6CC2, + 0xFBA3, 0x6ECE, 0xFBA4, 0x7005, 0xFBA5, 0x7050, 0xFBA6, 0x70AF, 0xFBA7, 0x7192, 0xFBA8, 0x73E9, 0xFBA9, 0x7469, 0xFBAA, 0x834A, + 0xFBAB, 0x87A2, 0xFBAC, 0x8861, 0xFBAD, 0x9008, 0xFBAE, 0x90A2, 0xFBAF, 0x93A3, 0xFBB0, 0x99A8, 0xFBB1, 0x516E, 0xFBB2, 0x5F57, + 0xFBB3, 0x60E0, 0xFBB4, 0x6167, 0xFBB5, 0x66B3, 0xFBB6, 0x8559, 0xFBB7, 0x8E4A, 0xFBB8, 0x91AF, 0xFBB9, 0x978B, 0xFBBA, 0x4E4E, + 0xFBBB, 0x4E92, 0xFBBC, 0x547C, 0xFBBD, 0x58D5, 0xFBBE, 0x58FA, 0xFBBF, 0x597D, 0xFBC0, 0x5CB5, 0xFBC1, 0x5F27, 0xFBC2, 0x6236, + 0xFBC3, 0x6248, 0xFBC4, 0x660A, 0xFBC5, 0x6667, 0xFBC6, 0x6BEB, 0xFBC7, 0x6D69, 0xFBC8, 0x6DCF, 0xFBC9, 0x6E56, 0xFBCA, 0x6EF8, + 0xFBCB, 0x6F94, 0xFBCC, 0x6FE0, 0xFBCD, 0x6FE9, 0xFBCE, 0x705D, 0xFBCF, 0x72D0, 0xFBD0, 0x7425, 0xFBD1, 0x745A, 0xFBD2, 0x74E0, + 0xFBD3, 0x7693, 0xFBD4, 0x795C, 0xFBD5, 0x7CCA, 0xFBD6, 0x7E1E, 0xFBD7, 0x80E1, 0xFBD8, 0x82A6, 0xFBD9, 0x846B, 0xFBDA, 0x84BF, + 0xFBDB, 0x864E, 0xFBDC, 0x865F, 0xFBDD, 0x8774, 0xFBDE, 0x8B77, 0xFBDF, 0x8C6A, 0xFBE0, 0x93AC, 0xFBE1, 0x9800, 0xFBE2, 0x9865, + 0xFBE3, 0x60D1, 0xFBE4, 0x6216, 0xFBE5, 0x9177, 0xFBE6, 0x5A5A, 0xFBE7, 0x660F, 0xFBE8, 0x6DF7, 0xFBE9, 0x6E3E, 0xFBEA, 0x743F, + 0xFBEB, 0x9B42, 0xFBEC, 0x5FFD, 0xFBED, 0x60DA, 0xFBEE, 0x7B0F, 0xFBEF, 0x54C4, 0xFBF0, 0x5F18, 0xFBF1, 0x6C5E, 0xFBF2, 0x6CD3, + 0xFBF3, 0x6D2A, 0xFBF4, 0x70D8, 0xFBF5, 0x7D05, 0xFBF6, 0x8679, 0xFBF7, 0x8A0C, 0xFBF8, 0x9D3B, 0xFBF9, 0x5316, 0xFBFA, 0x548C, + 0xFBFB, 0x5B05, 0xFBFC, 0x6A3A, 0xFBFD, 0x706B, 0xFBFE, 0x7575, 0xFCA1, 0x798D, 0xFCA2, 0x79BE, 0xFCA3, 0x82B1, 0xFCA4, 0x83EF, + 0xFCA5, 0x8A71, 0xFCA6, 0x8B41, 0xFCA7, 0x8CA8, 0xFCA8, 0x9774, 0xFCA9, 0xFA0B, 0xFCAA, 0x64F4, 0xFCAB, 0x652B, 0xFCAC, 0x78BA, + 0xFCAD, 0x78BB, 0xFCAE, 0x7A6B, 0xFCAF, 0x4E38, 0xFCB0, 0x559A, 0xFCB1, 0x5950, 0xFCB2, 0x5BA6, 0xFCB3, 0x5E7B, 0xFCB4, 0x60A3, + 0xFCB5, 0x63DB, 0xFCB6, 0x6B61, 0xFCB7, 0x6665, 0xFCB8, 0x6853, 0xFCB9, 0x6E19, 0xFCBA, 0x7165, 0xFCBB, 0x74B0, 0xFCBC, 0x7D08, + 0xFCBD, 0x9084, 0xFCBE, 0x9A69, 0xFCBF, 0x9C25, 0xFCC0, 0x6D3B, 0xFCC1, 0x6ED1, 0xFCC2, 0x733E, 0xFCC3, 0x8C41, 0xFCC4, 0x95CA, + 0xFCC5, 0x51F0, 0xFCC6, 0x5E4C, 0xFCC7, 0x5FA8, 0xFCC8, 0x604D, 0xFCC9, 0x60F6, 0xFCCA, 0x6130, 0xFCCB, 0x614C, 0xFCCC, 0x6643, + 0xFCCD, 0x6644, 0xFCCE, 0x69A5, 0xFCCF, 0x6CC1, 0xFCD0, 0x6E5F, 0xFCD1, 0x6EC9, 0xFCD2, 0x6F62, 0xFCD3, 0x714C, 0xFCD4, 0x749C, + 0xFCD5, 0x7687, 0xFCD6, 0x7BC1, 0xFCD7, 0x7C27, 0xFCD8, 0x8352, 0xFCD9, 0x8757, 0xFCDA, 0x9051, 0xFCDB, 0x968D, 0xFCDC, 0x9EC3, + 0xFCDD, 0x532F, 0xFCDE, 0x56DE, 0xFCDF, 0x5EFB, 0xFCE0, 0x5F8A, 0xFCE1, 0x6062, 0xFCE2, 0x6094, 0xFCE3, 0x61F7, 0xFCE4, 0x6666, + 0xFCE5, 0x6703, 0xFCE6, 0x6A9C, 0xFCE7, 0x6DEE, 0xFCE8, 0x6FAE, 0xFCE9, 0x7070, 0xFCEA, 0x736A, 0xFCEB, 0x7E6A, 0xFCEC, 0x81BE, + 0xFCED, 0x8334, 0xFCEE, 0x86D4, 0xFCEF, 0x8AA8, 0xFCF0, 0x8CC4, 0xFCF1, 0x5283, 0xFCF2, 0x7372, 0xFCF3, 0x5B96, 0xFCF4, 0x6A6B, + 0xFCF5, 0x9404, 0xFCF6, 0x54EE, 0xFCF7, 0x5686, 0xFCF8, 0x5B5D, 0xFCF9, 0x6548, 0xFCFA, 0x6585, 0xFCFB, 0x66C9, 0xFCFC, 0x689F, + 0xFCFD, 0x6D8D, 0xFCFE, 0x6DC6, 0xFDA1, 0x723B, 0xFDA2, 0x80B4, 0xFDA3, 0x9175, 0xFDA4, 0x9A4D, 0xFDA5, 0x4FAF, 0xFDA6, 0x5019, + 0xFDA7, 0x539A, 0xFDA8, 0x540E, 0xFDA9, 0x543C, 0xFDAA, 0x5589, 0xFDAB, 0x55C5, 0xFDAC, 0x5E3F, 0xFDAD, 0x5F8C, 0xFDAE, 0x673D, + 0xFDAF, 0x7166, 0xFDB0, 0x73DD, 0xFDB1, 0x9005, 0xFDB2, 0x52DB, 0xFDB3, 0x52F3, 0xFDB4, 0x5864, 0xFDB5, 0x58CE, 0xFDB6, 0x7104, + 0xFDB7, 0x718F, 0xFDB8, 0x71FB, 0xFDB9, 0x85B0, 0xFDBA, 0x8A13, 0xFDBB, 0x6688, 0xFDBC, 0x85A8, 0xFDBD, 0x55A7, 0xFDBE, 0x6684, + 0xFDBF, 0x714A, 0xFDC0, 0x8431, 0xFDC1, 0x5349, 0xFDC2, 0x5599, 0xFDC3, 0x6BC1, 0xFDC4, 0x5F59, 0xFDC5, 0x5FBD, 0xFDC6, 0x63EE, + 0xFDC7, 0x6689, 0xFDC8, 0x7147, 0xFDC9, 0x8AF1, 0xFDCA, 0x8F1D, 0xFDCB, 0x9EBE, 0xFDCC, 0x4F11, 0xFDCD, 0x643A, 0xFDCE, 0x70CB, + 0xFDCF, 0x7566, 0xFDD0, 0x8667, 0xFDD1, 0x6064, 0xFDD2, 0x8B4E, 0xFDD3, 0x9DF8, 0xFDD4, 0x5147, 0xFDD5, 0x51F6, 0xFDD6, 0x5308, + 0xFDD7, 0x6D36, 0xFDD8, 0x80F8, 0xFDD9, 0x9ED1, 0xFDDA, 0x6615, 0xFDDB, 0x6B23, 0xFDDC, 0x7098, 0xFDDD, 0x75D5, 0xFDDE, 0x5403, + 0xFDDF, 0x5C79, 0xFDE0, 0x7D07, 0xFDE1, 0x8A16, 0xFDE2, 0x6B20, 0xFDE3, 0x6B3D, 0xFDE4, 0x6B46, 0xFDE5, 0x5438, 0xFDE6, 0x6070, + 0xFDE7, 0x6D3D, 0xFDE8, 0x7FD5, 0xFDE9, 0x8208, 0xFDEA, 0x50D6, 0xFDEB, 0x51DE, 0xFDEC, 0x559C, 0xFDED, 0x566B, 0xFDEE, 0x56CD, + 0xFDEF, 0x59EC, 0xFDF0, 0x5B09, 0xFDF1, 0x5E0C, 0xFDF2, 0x6199, 0xFDF3, 0x6198, 0xFDF4, 0x6231, 0xFDF5, 0x665E, 0xFDF6, 0x66E6, + 0xFDF7, 0x7199, 0xFDF8, 0x71B9, 0xFDF9, 0x71BA, 0xFDFA, 0x72A7, 0xFDFB, 0x79A7, 0xFDFC, 0x7A00, 0xFDFD, 0x7FB2, 0xFDFE, 0x8A70, + 0, 0 +}; +#endif + +#if FF_CODE_PAGE == 950 || FF_CODE_PAGE == 0 /* Traditional Chinese */ +static const WCHAR uni2oem950[] = { /* Unicode --> Big5 pairs */ + 0x00A7, 0xA1B1, 0x00AF, 0xA1C2, 0x00B0, 0xA258, 0x00B1, 0xA1D3, 0x00B7, 0xA150, 0x00D7, 0xA1D1, 0x00F7, 0xA1D2, 0x02C7, 0xA3BE, + 0x02C9, 0xA3BC, 0x02CA, 0xA3BD, 0x02CB, 0xA3BF, 0x02CD, 0xA1C5, 0x02D9, 0xA3BB, 0x0391, 0xA344, 0x0392, 0xA345, 0x0393, 0xA346, + 0x0394, 0xA347, 0x0395, 0xA348, 0x0396, 0xA349, 0x0397, 0xA34A, 0x0398, 0xA34B, 0x0399, 0xA34C, 0x039A, 0xA34D, 0x039B, 0xA34E, + 0x039C, 0xA34F, 0x039D, 0xA350, 0x039E, 0xA351, 0x039F, 0xA352, 0x03A0, 0xA353, 0x03A1, 0xA354, 0x03A3, 0xA355, 0x03A4, 0xA356, + 0x03A5, 0xA357, 0x03A6, 0xA358, 0x03A7, 0xA359, 0x03A8, 0xA35A, 0x03A9, 0xA35B, 0x03B1, 0xA35C, 0x03B2, 0xA35D, 0x03B3, 0xA35E, + 0x03B4, 0xA35F, 0x03B5, 0xA360, 0x03B6, 0xA361, 0x03B7, 0xA362, 0x03B8, 0xA363, 0x03B9, 0xA364, 0x03BA, 0xA365, 0x03BB, 0xA366, + 0x03BC, 0xA367, 0x03BD, 0xA368, 0x03BE, 0xA369, 0x03BF, 0xA36A, 0x03C0, 0xA36B, 0x03C1, 0xA36C, 0x03C3, 0xA36D, 0x03C4, 0xA36E, + 0x03C5, 0xA36F, 0x03C6, 0xA370, 0x03C7, 0xA371, 0x03C8, 0xA372, 0x03C9, 0xA373, 0x2013, 0xA156, 0x2014, 0xA158, 0x2018, 0xA1A5, + 0x2019, 0xA1A6, 0x201C, 0xA1A7, 0x201D, 0xA1A8, 0x2025, 0xA14C, 0x2026, 0xA14B, 0x2027, 0xA145, 0x2032, 0xA1AC, 0x2035, 0xA1AB, + 0x203B, 0xA1B0, 0x20AC, 0xA3E1, 0x2103, 0xA24A, 0x2105, 0xA1C1, 0x2109, 0xA24B, 0x2160, 0xA2B9, 0x2161, 0xA2BA, 0x2162, 0xA2BB, + 0x2163, 0xA2BC, 0x2164, 0xA2BD, 0x2165, 0xA2BE, 0x2166, 0xA2BF, 0x2167, 0xA2C0, 0x2168, 0xA2C1, 0x2169, 0xA2C2, 0x2190, 0xA1F6, + 0x2191, 0xA1F4, 0x2192, 0xA1F7, 0x2193, 0xA1F5, 0x2196, 0xA1F8, 0x2197, 0xA1F9, 0x2198, 0xA1FB, 0x2199, 0xA1FA, 0x2215, 0xA241, + 0x221A, 0xA1D4, 0x221E, 0xA1DB, 0x221F, 0xA1E8, 0x2220, 0xA1E7, 0x2223, 0xA1FD, 0x2225, 0xA1FC, 0x2229, 0xA1E4, 0x222A, 0xA1E5, + 0x222B, 0xA1EC, 0x222E, 0xA1ED, 0x2234, 0xA1EF, 0x2235, 0xA1EE, 0x2252, 0xA1DC, 0x2260, 0xA1DA, 0x2261, 0xA1DD, 0x2266, 0xA1D8, + 0x2267, 0xA1D9, 0x2295, 0xA1F2, 0x2299, 0xA1F3, 0x22A5, 0xA1E6, 0x22BF, 0xA1E9, 0x2500, 0xA277, 0x2502, 0xA278, 0x250C, 0xA27A, + 0x2510, 0xA27B, 0x2514, 0xA27C, 0x2518, 0xA27D, 0x251C, 0xA275, 0x2524, 0xA274, 0x252C, 0xA273, 0x2534, 0xA272, 0x253C, 0xA271, + 0x2550, 0xA2A4, 0x2550, 0xF9F9, 0x2551, 0xF9F8, 0x2552, 0xF9E6, 0x2553, 0xF9EF, 0x2554, 0xF9DD, 0x2555, 0xF9E8, 0x2556, 0xF9F1, + 0x2557, 0xF9DF, 0x2558, 0xF9EC, 0x2559, 0xF9F5, 0x255A, 0xF9E3, 0x255B, 0xF9EE, 0x255C, 0xF9F7, 0x255D, 0xF9E5, 0x255E, 0xA2A5, + 0x255E, 0xF9E9, 0x255F, 0xF9F2, 0x2560, 0xF9E0, 0x2561, 0xA2A7, 0x2561, 0xF9EB, 0x2562, 0xF9F4, 0x2563, 0xF9E2, 0x2564, 0xF9E7, + 0x2565, 0xF9F0, 0x2566, 0xF9DE, 0x2567, 0xF9ED, 0x2568, 0xF9F6, 0x2569, 0xF9E4, 0x256A, 0xA2A6, 0x256A, 0xF9EA, 0x256B, 0xF9F3, + 0x256C, 0xF9E1, 0x256D, 0xA27E, 0x256D, 0xF9FA, 0x256E, 0xA2A1, 0x256E, 0xF9FB, 0x256F, 0xA2A3, 0x256F, 0xF9FD, 0x2570, 0xA2A2, + 0x2570, 0xF9FC, 0x2571, 0xA2AC, 0x2572, 0xA2AD, 0x2573, 0xA2AE, 0x2574, 0xA15A, 0x2581, 0xA262, 0x2582, 0xA263, 0x2583, 0xA264, + 0x2584, 0xA265, 0x2585, 0xA266, 0x2586, 0xA267, 0x2587, 0xA268, 0x2588, 0xA269, 0x2589, 0xA270, 0x258A, 0xA26F, 0x258B, 0xA26E, + 0x258C, 0xA26D, 0x258D, 0xA26C, 0x258E, 0xA26B, 0x258F, 0xA26A, 0x2593, 0xF9FE, 0x2594, 0xA276, 0x2595, 0xA279, 0x25A0, 0xA1BD, + 0x25A1, 0xA1BC, 0x25B2, 0xA1B6, 0x25B3, 0xA1B5, 0x25BC, 0xA1BF, 0x25BD, 0xA1BE, 0x25C6, 0xA1BB, 0x25C7, 0xA1BA, 0x25CB, 0xA1B3, + 0x25CE, 0xA1B7, 0x25CF, 0xA1B4, 0x25E2, 0xA2A8, 0x25E3, 0xA2A9, 0x25E4, 0xA2AB, 0x25E5, 0xA2AA, 0x2605, 0xA1B9, 0x2606, 0xA1B8, + 0x2640, 0xA1F0, 0x2642, 0xA1F1, 0x3000, 0xA140, 0x3001, 0xA142, 0x3002, 0xA143, 0x3003, 0xA1B2, 0x3008, 0xA171, 0x3009, 0xA172, + 0x300A, 0xA16D, 0x300B, 0xA16E, 0x300C, 0xA175, 0x300D, 0xA176, 0x300E, 0xA179, 0x300F, 0xA17A, 0x3010, 0xA169, 0x3011, 0xA16A, + 0x3012, 0xA245, 0x3014, 0xA165, 0x3015, 0xA166, 0x301D, 0xA1A9, 0x301E, 0xA1AA, 0x3021, 0xA2C3, 0x3022, 0xA2C4, 0x3023, 0xA2C5, + 0x3024, 0xA2C6, 0x3025, 0xA2C7, 0x3026, 0xA2C8, 0x3027, 0xA2C9, 0x3028, 0xA2CA, 0x3029, 0xA2CB, 0x3105, 0xA374, 0x3106, 0xA375, + 0x3107, 0xA376, 0x3108, 0xA377, 0x3109, 0xA378, 0x310A, 0xA379, 0x310B, 0xA37A, 0x310C, 0xA37B, 0x310D, 0xA37C, 0x310E, 0xA37D, + 0x310F, 0xA37E, 0x3110, 0xA3A1, 0x3111, 0xA3A2, 0x3112, 0xA3A3, 0x3113, 0xA3A4, 0x3114, 0xA3A5, 0x3115, 0xA3A6, 0x3116, 0xA3A7, + 0x3117, 0xA3A8, 0x3118, 0xA3A9, 0x3119, 0xA3AA, 0x311A, 0xA3AB, 0x311B, 0xA3AC, 0x311C, 0xA3AD, 0x311D, 0xA3AE, 0x311E, 0xA3AF, + 0x311F, 0xA3B0, 0x3120, 0xA3B1, 0x3121, 0xA3B2, 0x3122, 0xA3B3, 0x3123, 0xA3B4, 0x3124, 0xA3B5, 0x3125, 0xA3B6, 0x3126, 0xA3B7, + 0x3127, 0xA3B8, 0x3128, 0xA3B9, 0x3129, 0xA3BA, 0x32A3, 0xA1C0, 0x338E, 0xA255, 0x338F, 0xA256, 0x339C, 0xA250, 0x339D, 0xA251, + 0x339E, 0xA252, 0x33A1, 0xA254, 0x33C4, 0xA257, 0x33CE, 0xA253, 0x33D1, 0xA1EB, 0x33D2, 0xA1EA, 0x33D5, 0xA24F, 0x4E00, 0xA440, + 0x4E01, 0xA442, 0x4E03, 0xA443, 0x4E07, 0xC945, 0x4E08, 0xA456, 0x4E09, 0xA454, 0x4E0A, 0xA457, 0x4E0B, 0xA455, 0x4E0C, 0xC946, + 0x4E0D, 0xA4A3, 0x4E0E, 0xC94F, 0x4E0F, 0xC94D, 0x4E10, 0xA4A2, 0x4E11, 0xA4A1, 0x4E14, 0xA542, 0x4E15, 0xA541, 0x4E16, 0xA540, + 0x4E18, 0xA543, 0x4E19, 0xA4FE, 0x4E1E, 0xA5E0, 0x4E1F, 0xA5E1, 0x4E26, 0xA8C3, 0x4E2B, 0xA458, 0x4E2D, 0xA4A4, 0x4E2E, 0xC950, + 0x4E30, 0xA4A5, 0x4E31, 0xC963, 0x4E32, 0xA6EA, 0x4E33, 0xCBB1, 0x4E38, 0xA459, 0x4E39, 0xA4A6, 0x4E3B, 0xA544, 0x4E3C, 0xC964, + 0x4E42, 0xC940, 0x4E43, 0xA444, 0x4E45, 0xA45B, 0x4E47, 0xC947, 0x4E48, 0xA45C, 0x4E4B, 0xA4A7, 0x4E4D, 0xA545, 0x4E4E, 0xA547, + 0x4E4F, 0xA546, 0x4E52, 0xA5E2, 0x4E53, 0xA5E3, 0x4E56, 0xA8C4, 0x4E58, 0xADBC, 0x4E59, 0xA441, 0x4E5C, 0xC941, 0x4E5D, 0xA445, + 0x4E5E, 0xA45E, 0x4E5F, 0xA45D, 0x4E69, 0xA5E4, 0x4E73, 0xA8C5, 0x4E7E, 0xB0AE, 0x4E7F, 0xD44B, 0x4E82, 0xB6C3, 0x4E83, 0xDCB1, + 0x4E84, 0xDCB2, 0x4E86, 0xA446, 0x4E88, 0xA4A9, 0x4E8B, 0xA8C6, 0x4E8C, 0xA447, 0x4E8D, 0xC948, 0x4E8E, 0xA45F, 0x4E91, 0xA4AA, + 0x4E92, 0xA4AC, 0x4E93, 0xC951, 0x4E94, 0xA4AD, 0x4E95, 0xA4AB, 0x4E99, 0xA5E5, 0x4E9B, 0xA8C7, 0x4E9E, 0xA8C8, 0x4E9F, 0xAB45, + 0x4EA1, 0xA460, 0x4EA2, 0xA4AE, 0x4EA4, 0xA5E6, 0x4EA5, 0xA5E8, 0x4EA6, 0xA5E7, 0x4EA8, 0xA6EB, 0x4EAB, 0xA8C9, 0x4EAC, 0xA8CA, + 0x4EAD, 0xAB46, 0x4EAE, 0xAB47, 0x4EB3, 0xADBD, 0x4EB6, 0xDCB3, 0x4EB9, 0xF6D6, 0x4EBA, 0xA448, 0x4EC0, 0xA4B0, 0x4EC1, 0xA4AF, + 0x4EC2, 0xC952, 0x4EC3, 0xA4B1, 0x4EC4, 0xA4B7, 0x4EC6, 0xA4B2, 0x4EC7, 0xA4B3, 0x4EC8, 0xC954, 0x4EC9, 0xC953, 0x4ECA, 0xA4B5, + 0x4ECB, 0xA4B6, 0x4ECD, 0xA4B4, 0x4ED4, 0xA54A, 0x4ED5, 0xA54B, 0x4ED6, 0xA54C, 0x4ED7, 0xA54D, 0x4ED8, 0xA549, 0x4ED9, 0xA550, + 0x4EDA, 0xC96A, 0x4EDC, 0xC966, 0x4EDD, 0xC969, 0x4EDE, 0xA551, 0x4EDF, 0xA561, 0x4EE1, 0xC968, 0x4EE3, 0xA54E, 0x4EE4, 0xA54F, + 0x4EE5, 0xA548, 0x4EE8, 0xC965, 0x4EE9, 0xC967, 0x4EF0, 0xA5F5, 0x4EF1, 0xC9B0, 0x4EF2, 0xA5F2, 0x4EF3, 0xA5F6, 0x4EF4, 0xC9BA, + 0x4EF5, 0xC9AE, 0x4EF6, 0xA5F3, 0x4EF7, 0xC9B2, 0x4EFB, 0xA5F4, 0x4EFD, 0xA5F7, 0x4EFF, 0xA5E9, 0x4F00, 0xC9B1, 0x4F01, 0xA5F8, + 0x4F02, 0xC9B5, 0x4F04, 0xC9B9, 0x4F05, 0xC9B6, 0x4F08, 0xC9B3, 0x4F09, 0xA5EA, 0x4F0A, 0xA5EC, 0x4F0B, 0xA5F9, 0x4F0D, 0xA5EE, + 0x4F0E, 0xC9AB, 0x4F0F, 0xA5F1, 0x4F10, 0xA5EF, 0x4F11, 0xA5F0, 0x4F12, 0xC9BB, 0x4F13, 0xC9B8, 0x4F14, 0xC9AF, 0x4F15, 0xA5ED, + 0x4F18, 0xC9AC, 0x4F19, 0xA5EB, 0x4F1D, 0xC9B4, 0x4F22, 0xC9B7, 0x4F2C, 0xC9AD, 0x4F2D, 0xCA66, 0x4F2F, 0xA742, 0x4F30, 0xA6F4, + 0x4F33, 0xCA67, 0x4F34, 0xA6F1, 0x4F36, 0xA744, 0x4F38, 0xA6F9, 0x4F3A, 0xA6F8, 0x4F3B, 0xCA5B, 0x4F3C, 0xA6FC, 0x4F3D, 0xA6F7, + 0x4F3E, 0xCA60, 0x4F3F, 0xCA68, 0x4F41, 0xCA64, 0x4F43, 0xA6FA, 0x4F46, 0xA6FD, 0x4F47, 0xA6EE, 0x4F48, 0xA747, 0x4F49, 0xCA5D, + 0x4F4C, 0xCBBD, 0x4F4D, 0xA6EC, 0x4F4E, 0xA743, 0x4F4F, 0xA6ED, 0x4F50, 0xA6F5, 0x4F51, 0xA6F6, 0x4F52, 0xCA62, 0x4F53, 0xCA5E, + 0x4F54, 0xA6FB, 0x4F55, 0xA6F3, 0x4F56, 0xCA5A, 0x4F57, 0xA6EF, 0x4F58, 0xCA65, 0x4F59, 0xA745, 0x4F5A, 0xA748, 0x4F5B, 0xA6F2, + 0x4F5C, 0xA740, 0x4F5D, 0xA746, 0x4F5E, 0xA6F0, 0x4F5F, 0xCA63, 0x4F60, 0xA741, 0x4F61, 0xCA69, 0x4F62, 0xCA5C, 0x4F63, 0xA6FE, + 0x4F64, 0xCA5F, 0x4F67, 0xCA61, 0x4F69, 0xA8D8, 0x4F6A, 0xCBBF, 0x4F6B, 0xCBCB, 0x4F6C, 0xA8D0, 0x4F6E, 0xCBCC, 0x4F6F, 0xA8CB, + 0x4F70, 0xA8D5, 0x4F73, 0xA8CE, 0x4F74, 0xCBB9, 0x4F75, 0xA8D6, 0x4F76, 0xCBB8, 0x4F77, 0xCBBC, 0x4F78, 0xCBC3, 0x4F79, 0xCBC1, + 0x4F7A, 0xA8DE, 0x4F7B, 0xA8D9, 0x4F7C, 0xCBB3, 0x4F7D, 0xCBB5, 0x4F7E, 0xA8DB, 0x4F7F, 0xA8CF, 0x4F80, 0xCBB6, 0x4F81, 0xCBC2, + 0x4F82, 0xCBC9, 0x4F83, 0xA8D4, 0x4F84, 0xCBBB, 0x4F85, 0xCBB4, 0x4F86, 0xA8D3, 0x4F87, 0xCBB7, 0x4F88, 0xA8D7, 0x4F89, 0xCBBA, + 0x4F8B, 0xA8D2, 0x4F8D, 0xA8CD, 0x4F8F, 0xA8DC, 0x4F90, 0xCBC4, 0x4F91, 0xA8DD, 0x4F92, 0xCBC8, 0x4F94, 0xCBC6, 0x4F95, 0xCBCA, + 0x4F96, 0xA8DA, 0x4F97, 0xCBBE, 0x4F98, 0xCBB2, 0x4F9A, 0xCBC0, 0x4F9B, 0xA8D1, 0x4F9C, 0xCBC5, 0x4F9D, 0xA8CC, 0x4F9E, 0xCBC7, + 0x4FAE, 0xAB56, 0x4FAF, 0xAB4A, 0x4FB2, 0xCDE0, 0x4FB3, 0xCDE8, 0x4FB5, 0xAB49, 0x4FB6, 0xAB51, 0x4FB7, 0xAB5D, 0x4FB9, 0xCDEE, + 0x4FBA, 0xCDEC, 0x4FBB, 0xCDE7, 0x4FBF, 0xAB4B, 0x4FC0, 0xCDED, 0x4FC1, 0xCDE3, 0x4FC2, 0xAB59, 0x4FC3, 0xAB50, 0x4FC4, 0xAB58, + 0x4FC5, 0xCDDE, 0x4FC7, 0xCDEA, 0x4FC9, 0xCDE1, 0x4FCA, 0xAB54, 0x4FCB, 0xCDE2, 0x4FCD, 0xCDDD, 0x4FCE, 0xAB5B, 0x4FCF, 0xAB4E, + 0x4FD0, 0xAB57, 0x4FD1, 0xAB4D, 0x4FD3, 0xCDDF, 0x4FD4, 0xCDE4, 0x4FD6, 0xCDEB, 0x4FD7, 0xAB55, 0x4FD8, 0xAB52, 0x4FD9, 0xCDE6, + 0x4FDA, 0xAB5A, 0x4FDB, 0xCDE9, 0x4FDC, 0xCDE5, 0x4FDD, 0xAB4F, 0x4FDE, 0xAB5C, 0x4FDF, 0xAB53, 0x4FE0, 0xAB4C, 0x4FE1, 0xAB48, + 0x4FEC, 0xCDEF, 0x4FEE, 0xADD7, 0x4FEF, 0xADC1, 0x4FF1, 0xADD1, 0x4FF3, 0xADD6, 0x4FF4, 0xD0D0, 0x4FF5, 0xD0CF, 0x4FF6, 0xD0D4, + 0x4FF7, 0xD0D5, 0x4FF8, 0xADC4, 0x4FFA, 0xADCD, 0x4FFE, 0xADDA, 0x5000, 0xADCE, 0x5005, 0xD0C9, 0x5006, 0xADC7, 0x5007, 0xD0CA, + 0x5009, 0xADDC, 0x500B, 0xADD3, 0x500C, 0xADBE, 0x500D, 0xADBF, 0x500E, 0xD0DD, 0x500F, 0xB0BF, 0x5011, 0xADCC, 0x5012, 0xADCB, + 0x5013, 0xD0CB, 0x5014, 0xADCF, 0x5015, 0xD45B, 0x5016, 0xADC6, 0x5017, 0xD0D6, 0x5018, 0xADD5, 0x5019, 0xADD4, 0x501A, 0xADCA, + 0x501B, 0xD0CE, 0x501C, 0xD0D7, 0x501E, 0xD0C8, 0x501F, 0xADC9, 0x5020, 0xD0D8, 0x5021, 0xADD2, 0x5022, 0xD0CC, 0x5023, 0xADC0, + 0x5025, 0xADC3, 0x5026, 0xADC2, 0x5027, 0xD0D9, 0x5028, 0xADD0, 0x5029, 0xADC5, 0x502A, 0xADD9, 0x502B, 0xADDB, 0x502C, 0xD0D3, + 0x502D, 0xADD8, 0x502F, 0xD0DB, 0x5030, 0xD0CD, 0x5031, 0xD0DC, 0x5033, 0xD0D1, 0x5035, 0xD0DA, 0x5037, 0xD0D2, 0x503C, 0xADC8, + 0x5040, 0xD463, 0x5041, 0xD457, 0x5043, 0xB0B3, 0x5045, 0xD45C, 0x5046, 0xD462, 0x5047, 0xB0B2, 0x5048, 0xD455, 0x5049, 0xB0B6, + 0x504A, 0xD459, 0x504B, 0xD452, 0x504C, 0xB0B4, 0x504D, 0xD456, 0x504E, 0xB0B9, 0x504F, 0xB0BE, 0x5051, 0xD467, 0x5053, 0xD451, + 0x5055, 0xB0BA, 0x5057, 0xD466, 0x505A, 0xB0B5, 0x505B, 0xD458, 0x505C, 0xB0B1, 0x505D, 0xD453, 0x505E, 0xD44F, 0x505F, 0xD45D, + 0x5060, 0xD450, 0x5061, 0xD44E, 0x5062, 0xD45A, 0x5063, 0xD460, 0x5064, 0xD461, 0x5065, 0xB0B7, 0x5068, 0xD85B, 0x5069, 0xD45E, + 0x506A, 0xD44D, 0x506B, 0xD45F, 0x506D, 0xB0C1, 0x506E, 0xD464, 0x506F, 0xB0C0, 0x5070, 0xD44C, 0x5072, 0xD454, 0x5073, 0xD465, + 0x5074, 0xB0BC, 0x5075, 0xB0BB, 0x5076, 0xB0B8, 0x5077, 0xB0BD, 0x507A, 0xB0AF, 0x507D, 0xB0B0, 0x5080, 0xB3C8, 0x5082, 0xD85E, + 0x5083, 0xD857, 0x5085, 0xB3C5, 0x5087, 0xD85F, 0x508B, 0xD855, 0x508C, 0xD858, 0x508D, 0xB3C4, 0x508E, 0xD859, 0x5091, 0xB3C7, + 0x5092, 0xD85D, 0x5094, 0xD853, 0x5095, 0xD852, 0x5096, 0xB3C9, 0x5098, 0xB3CA, 0x5099, 0xB3C6, 0x509A, 0xB3CB, 0x509B, 0xD851, + 0x509C, 0xD85C, 0x509D, 0xD85A, 0x509E, 0xD854, 0x50A2, 0xB3C3, 0x50A3, 0xD856, 0x50AC, 0xB6CA, 0x50AD, 0xB6C4, 0x50AE, 0xDCB7, + 0x50AF, 0xB6CD, 0x50B0, 0xDCBD, 0x50B1, 0xDCC0, 0x50B2, 0xB6C6, 0x50B3, 0xB6C7, 0x50B4, 0xDCBA, 0x50B5, 0xB6C5, 0x50B6, 0xDCC3, + 0x50B7, 0xB6CB, 0x50B8, 0xDCC4, 0x50BA, 0xDCBF, 0x50BB, 0xB6CC, 0x50BD, 0xDCB4, 0x50BE, 0xB6C9, 0x50BF, 0xDCB5, 0x50C1, 0xDCBE, + 0x50C2, 0xDCBC, 0x50C4, 0xDCB8, 0x50C5, 0xB6C8, 0x50C6, 0xDCB6, 0x50C7, 0xB6CE, 0x50C8, 0xDCBB, 0x50C9, 0xDCC2, 0x50CA, 0xDCB9, + 0x50CB, 0xDCC1, 0x50CE, 0xB9B6, 0x50CF, 0xB9B3, 0x50D1, 0xB9B4, 0x50D3, 0xE0F9, 0x50D4, 0xE0F1, 0x50D5, 0xB9B2, 0x50D6, 0xB9AF, + 0x50D7, 0xE0F2, 0x50DA, 0xB9B1, 0x50DB, 0xE0F5, 0x50DD, 0xE0F7, 0x50E0, 0xE0FE, 0x50E3, 0xE0FD, 0x50E4, 0xE0F8, 0x50E5, 0xB9AE, + 0x50E6, 0xE0F0, 0x50E7, 0xB9AC, 0x50E8, 0xE0F3, 0x50E9, 0xB9B7, 0x50EA, 0xE0F6, 0x50EC, 0xE0FA, 0x50ED, 0xB9B0, 0x50EE, 0xB9AD, + 0x50EF, 0xE0FC, 0x50F0, 0xE0FB, 0x50F1, 0xB9B5, 0x50F3, 0xE0F4, 0x50F5, 0xBBF8, 0x50F6, 0xE4EC, 0x50F8, 0xE4E9, 0x50F9, 0xBBF9, + 0x50FB, 0xBBF7, 0x50FD, 0xE4F0, 0x50FE, 0xE4ED, 0x50FF, 0xE4E6, 0x5100, 0xBBF6, 0x5102, 0xBBFA, 0x5103, 0xE4E7, 0x5104, 0xBBF5, + 0x5105, 0xBBFD, 0x5106, 0xE4EA, 0x5107, 0xE4EB, 0x5108, 0xBBFB, 0x5109, 0xBBFC, 0x510A, 0xE4F1, 0x510B, 0xE4EE, 0x510C, 0xE4EF, + 0x5110, 0xBEAA, 0x5111, 0xE8F8, 0x5112, 0xBEA7, 0x5113, 0xE8F5, 0x5114, 0xBEA9, 0x5115, 0xBEAB, 0x5117, 0xE8F6, 0x5118, 0xBEA8, + 0x511A, 0xE8F7, 0x511C, 0xE8F4, 0x511F, 0xC076, 0x5120, 0xECBD, 0x5121, 0xC077, 0x5122, 0xECBB, 0x5124, 0xECBC, 0x5125, 0xECBA, + 0x5126, 0xECB9, 0x5129, 0xECBE, 0x512A, 0xC075, 0x512D, 0xEFB8, 0x512E, 0xEFB9, 0x5130, 0xE4E8, 0x5131, 0xEFB7, 0x5132, 0xC078, + 0x5133, 0xC35F, 0x5134, 0xF1EB, 0x5135, 0xF1EC, 0x5137, 0xC4D7, 0x5138, 0xC4D8, 0x5139, 0xF5C1, 0x513A, 0xF5C0, 0x513B, 0xC56C, + 0x513C, 0xC56B, 0x513D, 0xF7D0, 0x513F, 0xA449, 0x5140, 0xA461, 0x5141, 0xA4B9, 0x5143, 0xA4B8, 0x5144, 0xA553, 0x5145, 0xA552, + 0x5146, 0xA5FC, 0x5147, 0xA5FB, 0x5148, 0xA5FD, 0x5149, 0xA5FA, 0x514B, 0xA74A, 0x514C, 0xA749, 0x514D, 0xA74B, 0x5152, 0xA8E0, + 0x5154, 0xA8DF, 0x5155, 0xA8E1, 0x5157, 0xAB5E, 0x5159, 0xA259, 0x515A, 0xD0DE, 0x515B, 0xA25A, 0x515C, 0xB0C2, 0x515D, 0xA25C, + 0x515E, 0xA25B, 0x515F, 0xD860, 0x5161, 0xA25D, 0x5162, 0xB9B8, 0x5163, 0xA25E, 0x5165, 0xA44A, 0x5167, 0xA4BA, 0x5168, 0xA5FE, + 0x5169, 0xA8E2, 0x516B, 0xA44B, 0x516C, 0xA4BD, 0x516D, 0xA4BB, 0x516E, 0xA4BC, 0x5171, 0xA640, 0x5175, 0xA74C, 0x5176, 0xA8E4, + 0x5177, 0xA8E3, 0x5178, 0xA8E5, 0x517C, 0xADDD, 0x5180, 0xBEAC, 0x5187, 0xC94E, 0x5189, 0xA554, 0x518A, 0xA555, 0x518D, 0xA641, + 0x518F, 0xCA6A, 0x5191, 0xAB60, 0x5192, 0xAB5F, 0x5193, 0xD0E0, 0x5194, 0xD0DF, 0x5195, 0xB0C3, 0x5197, 0xA4BE, 0x5198, 0xC955, + 0x519E, 0xCBCD, 0x51A0, 0xAB61, 0x51A2, 0xADE0, 0x51A4, 0xADDE, 0x51A5, 0xADDF, 0x51AA, 0xBEAD, 0x51AC, 0xA556, 0x51B0, 0xA642, + 0x51B1, 0xC9BC, 0x51B6, 0xA74D, 0x51B7, 0xA74E, 0x51B9, 0xCA6B, 0x51BC, 0xCBCE, 0x51BD, 0xA8E6, 0x51BE, 0xCBCF, 0x51C4, 0xD0E2, + 0x51C5, 0xD0E3, 0x51C6, 0xADE3, 0x51C8, 0xD0E4, 0x51CA, 0xD0E1, 0x51CB, 0xADE4, 0x51CC, 0xADE2, 0x51CD, 0xADE1, 0x51CE, 0xD0E5, + 0x51D0, 0xD468, 0x51D4, 0xD861, 0x51D7, 0xDCC5, 0x51D8, 0xE140, 0x51DC, 0xBBFE, 0x51DD, 0xBEAE, 0x51DE, 0xE8F9, 0x51E0, 0xA44C, + 0x51E1, 0xA45A, 0x51F0, 0xB0C4, 0x51F1, 0xB3CD, 0x51F3, 0xB9B9, 0x51F5, 0xC942, 0x51F6, 0xA4BF, 0x51F8, 0xA559, 0x51F9, 0xA557, + 0x51FA, 0xA558, 0x51FD, 0xA8E7, 0x5200, 0xA44D, 0x5201, 0xA44E, 0x5203, 0xA462, 0x5206, 0xA4C0, 0x5207, 0xA4C1, 0x5208, 0xA4C2, + 0x5209, 0xC9BE, 0x520A, 0xA55A, 0x520C, 0xC96B, 0x520E, 0xA646, 0x5210, 0xC9BF, 0x5211, 0xA644, 0x5212, 0xA645, 0x5213, 0xC9BD, + 0x5216, 0xA647, 0x5217, 0xA643, 0x521C, 0xCA6C, 0x521D, 0xAAEC, 0x521E, 0xCA6D, 0x5221, 0xCA6E, 0x5224, 0xA750, 0x5225, 0xA74F, + 0x5228, 0xA753, 0x5229, 0xA751, 0x522A, 0xA752, 0x522E, 0xA8ED, 0x5230, 0xA8EC, 0x5231, 0xCBD4, 0x5232, 0xCBD1, 0x5233, 0xCBD2, + 0x5235, 0xCBD0, 0x5236, 0xA8EE, 0x5237, 0xA8EA, 0x5238, 0xA8E9, 0x523A, 0xA8EB, 0x523B, 0xA8E8, 0x5241, 0xA8EF, 0x5243, 0xAB63, + 0x5244, 0xCDF0, 0x5246, 0xCBD3, 0x5247, 0xAB68, 0x5249, 0xCDF1, 0x524A, 0xAB64, 0x524B, 0xAB67, 0x524C, 0xAB66, 0x524D, 0xAB65, + 0x524E, 0xAB62, 0x5252, 0xD0E8, 0x5254, 0xADE7, 0x5255, 0xD0EB, 0x5256, 0xADE5, 0x525A, 0xD0E7, 0x525B, 0xADE8, 0x525C, 0xADE6, + 0x525D, 0xADE9, 0x525E, 0xD0E9, 0x525F, 0xD0EA, 0x5261, 0xD0E6, 0x5262, 0xD0EC, 0x5269, 0xB3D1, 0x526A, 0xB0C5, 0x526B, 0xD469, + 0x526C, 0xD46B, 0x526D, 0xD46A, 0x526E, 0xD46C, 0x526F, 0xB0C6, 0x5272, 0xB3CE, 0x5274, 0xB3CF, 0x5275, 0xB3D0, 0x5277, 0xB6D0, + 0x5278, 0xDCC7, 0x527A, 0xDCC6, 0x527B, 0xDCC8, 0x527C, 0xDCC9, 0x527D, 0xB6D1, 0x527F, 0xB6CF, 0x5280, 0xE141, 0x5281, 0xE142, + 0x5282, 0xB9BB, 0x5283, 0xB9BA, 0x5284, 0xE35A, 0x5287, 0xBC40, 0x5288, 0xBC41, 0x5289, 0xBC42, 0x528A, 0xBC44, 0x528B, 0xE4F2, + 0x528C, 0xE4F3, 0x528D, 0xBC43, 0x5291, 0xBEAF, 0x5293, 0xBEB0, 0x5296, 0xF1ED, 0x5297, 0xF5C3, 0x5298, 0xF5C2, 0x5299, 0xF7D1, + 0x529B, 0xA44F, 0x529F, 0xA55C, 0x52A0, 0xA55B, 0x52A3, 0xA648, 0x52A6, 0xC9C0, 0x52A9, 0xA755, 0x52AA, 0xA756, 0x52AB, 0xA754, + 0x52AC, 0xA757, 0x52AD, 0xCA6F, 0x52AE, 0xCA70, 0x52BB, 0xA8F1, 0x52BC, 0xCBD5, 0x52BE, 0xA8F0, 0x52C0, 0xCDF2, 0x52C1, 0xAB6C, + 0x52C2, 0xCDF3, 0x52C3, 0xAB6B, 0x52C7, 0xAB69, 0x52C9, 0xAB6A, 0x52CD, 0xD0ED, 0x52D2, 0xB0C7, 0x52D3, 0xD46E, 0x52D5, 0xB0CA, + 0x52D6, 0xD46D, 0x52D7, 0xB1E5, 0x52D8, 0xB0C9, 0x52D9, 0xB0C8, 0x52DB, 0xB3D4, 0x52DD, 0xB3D3, 0x52DE, 0xB3D2, 0x52DF, 0xB6D2, + 0x52E2, 0xB6D5, 0x52E3, 0xB6D6, 0x52E4, 0xB6D4, 0x52E6, 0xB6D3, 0x52E9, 0xE143, 0x52EB, 0xE144, 0x52EF, 0xE4F5, 0x52F0, 0xBC45, + 0x52F1, 0xE4F4, 0x52F3, 0xBEB1, 0x52F4, 0xECBF, 0x52F5, 0xC079, 0x52F7, 0xF1EE, 0x52F8, 0xC455, 0x52FA, 0xA463, 0x52FB, 0xA4C3, + 0x52FC, 0xC956, 0x52FE, 0xA4C4, 0x52FF, 0xA4C5, 0x5305, 0xA55D, 0x5306, 0xA55E, 0x5308, 0xA649, 0x5309, 0xCA71, 0x530A, 0xCBD6, + 0x530B, 0xCBD7, 0x530D, 0xAB6D, 0x530E, 0xD0EE, 0x530F, 0xB0CC, 0x5310, 0xB0CB, 0x5311, 0xD863, 0x5312, 0xD862, 0x5315, 0xA450, + 0x5316, 0xA4C6, 0x5317, 0xA55F, 0x5319, 0xB0CD, 0x531A, 0xC943, 0x531C, 0xC96C, 0x531D, 0xA560, 0x531F, 0xC9C2, 0x5320, 0xA64B, + 0x5321, 0xA64A, 0x5322, 0xC9C1, 0x5323, 0xA758, 0x532A, 0xADEA, 0x532D, 0xD46F, 0x532F, 0xB6D7, 0x5330, 0xE145, 0x5331, 0xB9BC, + 0x5334, 0xE8FA, 0x5337, 0xF3FD, 0x5339, 0xA4C7, 0x533C, 0xCBD8, 0x533D, 0xCDF4, 0x533E, 0xB0D0, 0x533F, 0xB0CE, 0x5340, 0xB0CF, + 0x5341, 0xA2CC, 0x5341, 0xA451, 0x5343, 0xA464, 0x5344, 0xA2CD, 0x5345, 0xA2CE, 0x5345, 0xA4CA, 0x5347, 0xA4C9, 0x5348, 0xA4C8, + 0x5349, 0xA563, 0x534A, 0xA562, 0x534C, 0xC96D, 0x534D, 0xC9C3, 0x5351, 0xA8F5, 0x5352, 0xA8F2, 0x5353, 0xA8F4, 0x5354, 0xA8F3, + 0x5357, 0xAB6E, 0x535A, 0xB3D5, 0x535C, 0xA452, 0x535E, 0xA4CB, 0x5360, 0xA565, 0x5361, 0xA564, 0x5363, 0xCA72, 0x5366, 0xA8F6, + 0x536C, 0xC957, 0x536E, 0xA567, 0x536F, 0xA566, 0x5370, 0xA64C, 0x5371, 0xA64D, 0x5372, 0xCA73, 0x5373, 0xA759, 0x5375, 0xA75A, + 0x5377, 0xA8F7, 0x5378, 0xA8F8, 0x5379, 0xA8F9, 0x537B, 0xAB6F, 0x537C, 0xCDF5, 0x537F, 0xADEB, 0x5382, 0xC944, 0x5384, 0xA4CC, + 0x538A, 0xC9C4, 0x538E, 0xCA74, 0x538F, 0xCA75, 0x5392, 0xCBD9, 0x5394, 0xCBDA, 0x5396, 0xCDF7, 0x5397, 0xCDF6, 0x5398, 0xCDF9, + 0x5399, 0xCDF8, 0x539A, 0xAB70, 0x539C, 0xD470, 0x539D, 0xADED, 0x539E, 0xD0EF, 0x539F, 0xADEC, 0x53A4, 0xD864, 0x53A5, 0xB3D6, + 0x53A7, 0xD865, 0x53AC, 0xE146, 0x53AD, 0xB9BD, 0x53B2, 0xBC46, 0x53B4, 0xF1EF, 0x53B9, 0xC958, 0x53BB, 0xA568, 0x53C3, 0xB0D1, + 0x53C8, 0xA453, 0x53C9, 0xA465, 0x53CA, 0xA4CE, 0x53CB, 0xA4CD, 0x53CD, 0xA4CF, 0x53D4, 0xA8FB, 0x53D6, 0xA8FA, 0x53D7, 0xA8FC, + 0x53DB, 0xAB71, 0x53DF, 0xADEE, 0x53E1, 0xE8FB, 0x53E2, 0xC24F, 0x53E3, 0xA466, 0x53E4, 0xA56A, 0x53E5, 0xA579, 0x53E6, 0xA574, + 0x53E8, 0xA56F, 0x53E9, 0xA56E, 0x53EA, 0xA575, 0x53EB, 0xA573, 0x53EC, 0xA56C, 0x53ED, 0xA57A, 0x53EE, 0xA56D, 0x53EF, 0xA569, + 0x53F0, 0xA578, 0x53F1, 0xA577, 0x53F2, 0xA576, 0x53F3, 0xA56B, 0x53F5, 0xA572, 0x53F8, 0xA571, 0x53FB, 0xA57B, 0x53FC, 0xA570, + 0x5401, 0xA653, 0x5403, 0xA659, 0x5404, 0xA655, 0x5406, 0xA65B, 0x5407, 0xC9C5, 0x5408, 0xA658, 0x5409, 0xA64E, 0x540A, 0xA651, + 0x540B, 0xA654, 0x540C, 0xA650, 0x540D, 0xA657, 0x540E, 0xA65A, 0x540F, 0xA64F, 0x5410, 0xA652, 0x5411, 0xA656, 0x5412, 0xA65C, + 0x5418, 0xCA7E, 0x5419, 0xCA7B, 0x541B, 0xA767, 0x541C, 0xCA7C, 0x541D, 0xA75B, 0x541E, 0xA75D, 0x541F, 0xA775, 0x5420, 0xA770, + 0x5424, 0xCAA5, 0x5425, 0xCA7D, 0x5426, 0xA75F, 0x5427, 0xA761, 0x5428, 0xCAA4, 0x5429, 0xA768, 0x542A, 0xCA78, 0x542B, 0xA774, + 0x542C, 0xA776, 0x542D, 0xA75C, 0x542E, 0xA76D, 0x5430, 0xCA76, 0x5431, 0xA773, 0x5433, 0xA764, 0x5435, 0xA76E, 0x5436, 0xA76F, + 0x5437, 0xCA77, 0x5438, 0xA76C, 0x5439, 0xA76A, 0x543B, 0xA76B, 0x543C, 0xA771, 0x543D, 0xCAA1, 0x543E, 0xA75E, 0x5440, 0xA772, + 0x5441, 0xCAA3, 0x5442, 0xA766, 0x5443, 0xA763, 0x5445, 0xCA7A, 0x5446, 0xA762, 0x5447, 0xCAA6, 0x5448, 0xA765, 0x544A, 0xA769, + 0x544E, 0xA760, 0x544F, 0xCAA2, 0x5454, 0xCA79, 0x5460, 0xCBEB, 0x5461, 0xCBEA, 0x5462, 0xA94F, 0x5463, 0xCBED, 0x5464, 0xCBEF, + 0x5465, 0xCBE4, 0x5466, 0xCBE7, 0x5467, 0xCBEE, 0x5468, 0xA950, 0x546B, 0xCBE1, 0x546C, 0xCBE5, 0x546F, 0xCBE9, 0x5470, 0xCE49, + 0x5471, 0xA94B, 0x5472, 0xCE4D, 0x5473, 0xA8FD, 0x5474, 0xCBE6, 0x5475, 0xA8FE, 0x5476, 0xA94C, 0x5477, 0xA945, 0x5478, 0xA941, + 0x547A, 0xCBE2, 0x547B, 0xA944, 0x547C, 0xA949, 0x547D, 0xA952, 0x547E, 0xCBE3, 0x547F, 0xCBDC, 0x5480, 0xA943, 0x5481, 0xCBDD, + 0x5482, 0xCBDF, 0x5484, 0xA946, 0x5486, 0xA948, 0x5487, 0xCBDB, 0x5488, 0xCBE0, 0x548B, 0xA951, 0x548C, 0xA94D, 0x548D, 0xCBE8, + 0x548E, 0xA953, 0x5490, 0xA94A, 0x5491, 0xCBDE, 0x5492, 0xA947, 0x5495, 0xA942, 0x5496, 0xA940, 0x5498, 0xCBEC, 0x549A, 0xA94E, + 0x54A0, 0xCE48, 0x54A1, 0xCDFB, 0x54A2, 0xCE4B, 0x54A5, 0xCDFD, 0x54A6, 0xAB78, 0x54A7, 0xABA8, 0x54A8, 0xAB74, 0x54A9, 0xABA7, + 0x54AA, 0xAB7D, 0x54AB, 0xABA4, 0x54AC, 0xAB72, 0x54AD, 0xCDFC, 0x54AE, 0xCE43, 0x54AF, 0xABA3, 0x54B0, 0xCE4F, 0x54B1, 0xABA5, + 0x54B3, 0xAB79, 0x54B6, 0xCE45, 0x54B7, 0xCE42, 0x54B8, 0xAB77, 0x54BA, 0xCDFA, 0x54BB, 0xABA6, 0x54BC, 0xCE4A, 0x54BD, 0xAB7C, + 0x54BE, 0xCE4C, 0x54BF, 0xABA9, 0x54C0, 0xAB73, 0x54C1, 0xAB7E, 0x54C2, 0xAB7B, 0x54C3, 0xCE40, 0x54C4, 0xABA1, 0x54C5, 0xCE46, + 0x54C6, 0xCE47, 0x54C7, 0xAB7A, 0x54C8, 0xABA2, 0x54C9, 0xAB76, 0x54CE, 0xAB75, 0x54CF, 0xCDFE, 0x54D6, 0xCE44, 0x54DE, 0xCE4E, + 0x54E0, 0xD144, 0x54E1, 0xADFB, 0x54E2, 0xD0F1, 0x54E4, 0xD0F6, 0x54E5, 0xADF4, 0x54E6, 0xAE40, 0x54E7, 0xD0F4, 0x54E8, 0xADEF, + 0x54E9, 0xADF9, 0x54EA, 0xADFE, 0x54EB, 0xD0FB, 0x54ED, 0xADFA, 0x54EE, 0xADFD, 0x54F1, 0xD0FE, 0x54F2, 0xADF5, 0x54F3, 0xD0F5, + 0x54F7, 0xD142, 0x54F8, 0xD143, 0x54FA, 0xADF7, 0x54FB, 0xD141, 0x54FC, 0xADF3, 0x54FD, 0xAE43, 0x54FF, 0xD0F8, 0x5501, 0xADF1, + 0x5503, 0xD146, 0x5504, 0xD0F9, 0x5505, 0xD0FD, 0x5506, 0xADF6, 0x5507, 0xAE42, 0x5508, 0xD0FA, 0x5509, 0xADFC, 0x550A, 0xD140, + 0x550B, 0xD147, 0x550C, 0xD4A1, 0x550E, 0xD145, 0x550F, 0xAE44, 0x5510, 0xADF0, 0x5511, 0xD0FC, 0x5512, 0xD0F3, 0x5514, 0xADF8, + 0x5517, 0xD0F2, 0x551A, 0xD0F7, 0x5526, 0xD0F0, 0x5527, 0xAE41, 0x552A, 0xD477, 0x552C, 0xB0E4, 0x552D, 0xD4A7, 0x552E, 0xB0E2, + 0x552F, 0xB0DF, 0x5530, 0xD47C, 0x5531, 0xB0DB, 0x5532, 0xD4A2, 0x5533, 0xB0E6, 0x5534, 0xD476, 0x5535, 0xD47B, 0x5536, 0xD47A, + 0x5537, 0xADF2, 0x5538, 0xB0E1, 0x5539, 0xD4A5, 0x553B, 0xD4A8, 0x553C, 0xD473, 0x553E, 0xB3E8, 0x5540, 0xD4A9, 0x5541, 0xB0E7, + 0x5543, 0xB0D9, 0x5544, 0xB0D6, 0x5545, 0xD47E, 0x5546, 0xB0D3, 0x5548, 0xD4A6, 0x554A, 0xB0DA, 0x554B, 0xD4AA, 0x554D, 0xD474, + 0x554E, 0xD4A4, 0x554F, 0xB0DD, 0x5550, 0xD475, 0x5551, 0xD478, 0x5552, 0xD47D, 0x5555, 0xB0DE, 0x5556, 0xB0DC, 0x5557, 0xB0E8, + 0x555C, 0xB0E3, 0x555E, 0xB0D7, 0x555F, 0xB1D2, 0x5561, 0xB0D8, 0x5562, 0xD479, 0x5563, 0xB0E5, 0x5564, 0xB0E0, 0x5565, 0xD4A3, + 0x5566, 0xB0D5, 0x556A, 0xB0D4, 0x5575, 0xD471, 0x5576, 0xD472, 0x5577, 0xD86A, 0x557B, 0xB3D7, 0x557C, 0xB3DA, 0x557D, 0xD875, + 0x557E, 0xB3EE, 0x557F, 0xD878, 0x5580, 0xB3D8, 0x5581, 0xD871, 0x5582, 0xB3DE, 0x5583, 0xB3E4, 0x5584, 0xB5BD, 0x5587, 0xB3E2, + 0x5588, 0xD86E, 0x5589, 0xB3EF, 0x558A, 0xB3DB, 0x558B, 0xB3E3, 0x558C, 0xD876, 0x558D, 0xDCD7, 0x558E, 0xD87B, 0x558F, 0xD86F, + 0x5591, 0xD866, 0x5592, 0xD873, 0x5593, 0xD86D, 0x5594, 0xB3E1, 0x5595, 0xD879, 0x5598, 0xB3DD, 0x5599, 0xB3F1, 0x559A, 0xB3EA, + 0x559C, 0xB3DF, 0x559D, 0xB3DC, 0x559F, 0xB3E7, 0x55A1, 0xD87A, 0x55A2, 0xD86C, 0x55A3, 0xD872, 0x55A4, 0xD874, 0x55A5, 0xD868, + 0x55A6, 0xD877, 0x55A7, 0xB3D9, 0x55A8, 0xD867, 0x55AA, 0xB3E0, 0x55AB, 0xB3F0, 0x55AC, 0xB3EC, 0x55AD, 0xD869, 0x55AE, 0xB3E6, + 0x55B1, 0xB3ED, 0x55B2, 0xB3E9, 0x55B3, 0xB3E5, 0x55B5, 0xD870, 0x55BB, 0xB3EB, 0x55BF, 0xDCD5, 0x55C0, 0xDCD1, 0x55C2, 0xDCE0, + 0x55C3, 0xDCCA, 0x55C4, 0xDCD3, 0x55C5, 0xB6E5, 0x55C6, 0xB6E6, 0x55C7, 0xB6DE, 0x55C8, 0xDCDC, 0x55C9, 0xB6E8, 0x55CA, 0xDCCF, + 0x55CB, 0xDCCE, 0x55CC, 0xDCCC, 0x55CD, 0xDCDE, 0x55CE, 0xB6DC, 0x55CF, 0xDCD8, 0x55D0, 0xDCCD, 0x55D1, 0xB6DF, 0x55D2, 0xDCD6, + 0x55D3, 0xB6DA, 0x55D4, 0xDCD2, 0x55D5, 0xDCD9, 0x55D6, 0xDCDB, 0x55D9, 0xDCDF, 0x55DA, 0xB6E3, 0x55DB, 0xDCCB, 0x55DC, 0xB6DD, + 0x55DD, 0xDCD0, 0x55DF, 0xB6D8, 0x55E1, 0xB6E4, 0x55E2, 0xDCDA, 0x55E3, 0xB6E0, 0x55E4, 0xB6E1, 0x55E5, 0xB6E7, 0x55E6, 0xB6DB, + 0x55E7, 0xA25F, 0x55E8, 0xB6D9, 0x55E9, 0xDCD4, 0x55EF, 0xB6E2, 0x55F2, 0xDCDD, 0x55F6, 0xB9CD, 0x55F7, 0xB9C8, 0x55F9, 0xE155, + 0x55FA, 0xE151, 0x55FC, 0xE14B, 0x55FD, 0xB9C2, 0x55FE, 0xB9BE, 0x55FF, 0xE154, 0x5600, 0xB9BF, 0x5601, 0xE14E, 0x5602, 0xE150, + 0x5604, 0xE153, 0x5606, 0xB9C4, 0x5608, 0xB9CB, 0x5609, 0xB9C5, 0x560C, 0xE149, 0x560D, 0xB9C6, 0x560E, 0xB9C7, 0x560F, 0xE14C, + 0x5610, 0xB9CC, 0x5612, 0xE14A, 0x5613, 0xE14F, 0x5614, 0xB9C3, 0x5615, 0xE148, 0x5616, 0xB9C9, 0x5617, 0xB9C1, 0x561B, 0xB9C0, + 0x561C, 0xE14D, 0x561D, 0xE152, 0x561F, 0xB9CA, 0x5627, 0xE147, 0x5629, 0xBC4D, 0x562A, 0xE547, 0x562C, 0xE544, 0x562E, 0xBC47, + 0x562F, 0xBC53, 0x5630, 0xBC54, 0x5632, 0xBC4A, 0x5633, 0xE542, 0x5634, 0xBC4C, 0x5635, 0xE4F9, 0x5636, 0xBC52, 0x5638, 0xE546, + 0x5639, 0xBC49, 0x563A, 0xE548, 0x563B, 0xBC48, 0x563D, 0xE543, 0x563E, 0xE545, 0x563F, 0xBC4B, 0x5640, 0xE541, 0x5641, 0xE4FA, + 0x5642, 0xE4F7, 0x5645, 0xD86B, 0x5646, 0xE4FD, 0x5648, 0xE4F6, 0x5649, 0xE4FC, 0x564A, 0xE4FB, 0x564C, 0xE4F8, 0x564E, 0xBC4F, + 0x5653, 0xBC4E, 0x5657, 0xBC50, 0x5658, 0xE4FE, 0x5659, 0xBEB2, 0x565A, 0xE540, 0x565E, 0xE945, 0x5660, 0xE8FD, 0x5662, 0xBEBE, + 0x5663, 0xE942, 0x5664, 0xBEB6, 0x5665, 0xBEBA, 0x5666, 0xE941, 0x5668, 0xBEB9, 0x5669, 0xBEB5, 0x566A, 0xBEB8, 0x566B, 0xBEB3, + 0x566C, 0xBEBD, 0x566D, 0xE943, 0x566E, 0xE8FE, 0x566F, 0xBEBC, 0x5670, 0xE8FC, 0x5671, 0xBEBB, 0x5672, 0xE944, 0x5673, 0xE940, + 0x5674, 0xBC51, 0x5676, 0xBEBF, 0x5677, 0xE946, 0x5678, 0xBEB7, 0x5679, 0xBEB4, 0x567E, 0xECC6, 0x567F, 0xECC8, 0x5680, 0xC07B, + 0x5681, 0xECC9, 0x5682, 0xECC7, 0x5683, 0xECC5, 0x5684, 0xECC4, 0x5685, 0xC07D, 0x5686, 0xECC3, 0x5687, 0xC07E, 0x568C, 0xECC1, + 0x568D, 0xECC2, 0x568E, 0xC07A, 0x568F, 0xC0A1, 0x5690, 0xC07C, 0x5693, 0xECC0, 0x5695, 0xC250, 0x5697, 0xEFBC, 0x5698, 0xEFBA, + 0x5699, 0xEFBF, 0x569A, 0xEFBD, 0x569C, 0xEFBB, 0x569D, 0xEFBE, 0x56A5, 0xC360, 0x56A6, 0xF1F2, 0x56A7, 0xF1F3, 0x56A8, 0xC456, + 0x56AA, 0xF1F4, 0x56AB, 0xF1F0, 0x56AC, 0xF1F5, 0x56AD, 0xF1F1, 0x56AE, 0xC251, 0x56B2, 0xF3FE, 0x56B3, 0xF441, 0x56B4, 0xC459, + 0x56B5, 0xF440, 0x56B6, 0xC458, 0x56B7, 0xC457, 0x56BC, 0xC45A, 0x56BD, 0xF5C5, 0x56BE, 0xF5C6, 0x56C0, 0xC4DA, 0x56C1, 0xC4D9, + 0x56C2, 0xC4DB, 0x56C3, 0xF5C4, 0x56C5, 0xF6D8, 0x56C6, 0xF6D7, 0x56C8, 0xC56D, 0x56C9, 0xC56F, 0x56CA, 0xC56E, 0x56CB, 0xF6D9, + 0x56CC, 0xC5C8, 0x56CD, 0xF8A6, 0x56D1, 0xC5F1, 0x56D3, 0xF8A5, 0x56D4, 0xF8EE, 0x56D7, 0xC949, 0x56DA, 0xA57D, 0x56DB, 0xA57C, + 0x56DD, 0xA65F, 0x56DE, 0xA65E, 0x56DF, 0xC9C7, 0x56E0, 0xA65D, 0x56E1, 0xC9C6, 0x56E4, 0xA779, 0x56E5, 0xCAA9, 0x56E7, 0xCAA8, + 0x56EA, 0xA777, 0x56EB, 0xA77A, 0x56EE, 0xCAA7, 0x56F0, 0xA778, 0x56F7, 0xCBF0, 0x56F9, 0xCBF1, 0x56FA, 0xA954, 0x56FF, 0xABAA, + 0x5701, 0xD148, 0x5702, 0xD149, 0x5703, 0xAE45, 0x5704, 0xAE46, 0x5707, 0xD4AC, 0x5708, 0xB0E9, 0x5709, 0xB0EB, 0x570A, 0xD4AB, + 0x570B, 0xB0EA, 0x570C, 0xD87C, 0x570D, 0xB3F2, 0x5712, 0xB6E9, 0x5713, 0xB6EA, 0x5714, 0xDCE1, 0x5716, 0xB9CF, 0x5718, 0xB9CE, + 0x571A, 0xE549, 0x571B, 0xE948, 0x571C, 0xE947, 0x571E, 0xF96B, 0x571F, 0xA467, 0x5720, 0xC959, 0x5722, 0xC96E, 0x5723, 0xC96F, + 0x5728, 0xA662, 0x5729, 0xA666, 0x572A, 0xC9C9, 0x572C, 0xA664, 0x572D, 0xA663, 0x572E, 0xC9C8, 0x572F, 0xA665, 0x5730, 0xA661, + 0x5733, 0xA660, 0x5734, 0xC9CA, 0x573B, 0xA7A6, 0x573E, 0xA7A3, 0x5740, 0xA77D, 0x5741, 0xCAAA, 0x5745, 0xCAAB, 0x5747, 0xA7A1, + 0x5749, 0xCAAD, 0x574A, 0xA77B, 0x574B, 0xCAAE, 0x574C, 0xCAAC, 0x574D, 0xA77E, 0x574E, 0xA7A2, 0x574F, 0xA7A5, 0x5750, 0xA7A4, + 0x5751, 0xA77C, 0x5752, 0xCAAF, 0x5761, 0xA959, 0x5762, 0xCBFE, 0x5764, 0xA95B, 0x5766, 0xA95A, 0x5768, 0xCC40, 0x5769, 0xA958, + 0x576A, 0xA957, 0x576B, 0xCBF5, 0x576D, 0xCBF4, 0x576F, 0xCBF2, 0x5770, 0xCBF7, 0x5771, 0xCBF6, 0x5772, 0xCBF3, 0x5773, 0xCBFC, + 0x5774, 0xCBFD, 0x5775, 0xCBFA, 0x5776, 0xCBF8, 0x5777, 0xA956, 0x577B, 0xCBFB, 0x577C, 0xA95C, 0x577D, 0xCC41, 0x5780, 0xCBF9, + 0x5782, 0xABAB, 0x5783, 0xA955, 0x578B, 0xABAC, 0x578C, 0xCE54, 0x578F, 0xCE5A, 0x5793, 0xABB2, 0x5794, 0xCE58, 0x5795, 0xCE5E, + 0x5797, 0xCE55, 0x5798, 0xCE59, 0x5799, 0xCE5B, 0x579A, 0xCE5D, 0x579B, 0xCE57, 0x579D, 0xCE56, 0x579E, 0xCE51, 0x579F, 0xCE52, + 0x57A0, 0xABAD, 0x57A2, 0xABAF, 0x57A3, 0xABAE, 0x57A4, 0xCE53, 0x57A5, 0xCE5C, 0x57AE, 0xABB1, 0x57B5, 0xCE50, 0x57B6, 0xD153, + 0x57B8, 0xD152, 0x57B9, 0xD157, 0x57BA, 0xD14E, 0x57BC, 0xD151, 0x57BD, 0xD150, 0x57BF, 0xD154, 0x57C1, 0xD158, 0x57C2, 0xAE47, + 0x57C3, 0xAE4A, 0x57C6, 0xD14F, 0x57C7, 0xD155, 0x57CB, 0xAE49, 0x57CC, 0xD14A, 0x57CE, 0xABB0, 0x57CF, 0xD4BA, 0x57D0, 0xD156, + 0x57D2, 0xD14D, 0x57D4, 0xAE48, 0x57D5, 0xD14C, 0x57DC, 0xD4B1, 0x57DF, 0xB0EC, 0x57E0, 0xB0F0, 0x57E1, 0xD4C1, 0x57E2, 0xD4AF, + 0x57E3, 0xD4BD, 0x57E4, 0xB0F1, 0x57E5, 0xD4BF, 0x57E7, 0xD4C5, 0x57E9, 0xD4C9, 0x57EC, 0xD4C0, 0x57ED, 0xD4B4, 0x57EE, 0xD4BC, + 0x57F0, 0xD4CA, 0x57F1, 0xD4C8, 0x57F2, 0xD4BE, 0x57F3, 0xD4B9, 0x57F4, 0xD4B2, 0x57F5, 0xD8A6, 0x57F6, 0xD4B0, 0x57F7, 0xB0F5, + 0x57F8, 0xD4B7, 0x57F9, 0xB0F6, 0x57FA, 0xB0F2, 0x57FB, 0xD4AD, 0x57FC, 0xD4C3, 0x57FD, 0xD4B5, 0x5800, 0xD4B3, 0x5801, 0xD4C6, + 0x5802, 0xB0F3, 0x5804, 0xD4CC, 0x5805, 0xB0ED, 0x5806, 0xB0EF, 0x5807, 0xD4BB, 0x5808, 0xD4B6, 0x5809, 0xAE4B, 0x580A, 0xB0EE, + 0x580B, 0xD4B8, 0x580C, 0xD4C7, 0x580D, 0xD4CB, 0x580E, 0xD4C2, 0x5810, 0xD4C4, 0x5814, 0xD4AE, 0x5819, 0xD8A1, 0x581B, 0xD8AA, + 0x581C, 0xD8A9, 0x581D, 0xB3FA, 0x581E, 0xD8A2, 0x5820, 0xB3FB, 0x5821, 0xB3F9, 0x5823, 0xD8A4, 0x5824, 0xB3F6, 0x5825, 0xD8A8, + 0x5827, 0xD8A3, 0x5828, 0xD8A5, 0x5829, 0xD87D, 0x582A, 0xB3F4, 0x582C, 0xD8B2, 0x582D, 0xD8B1, 0x582E, 0xD8AE, 0x582F, 0xB3F3, + 0x5830, 0xB3F7, 0x5831, 0xB3F8, 0x5832, 0xD14B, 0x5833, 0xD8AB, 0x5834, 0xB3F5, 0x5835, 0xB0F4, 0x5836, 0xD8AD, 0x5837, 0xD87E, + 0x5838, 0xD8B0, 0x5839, 0xD8AF, 0x583B, 0xD8B3, 0x583D, 0xDCEF, 0x583F, 0xD8AC, 0x5848, 0xD8A7, 0x5849, 0xDCE7, 0x584A, 0xB6F4, + 0x584B, 0xB6F7, 0x584C, 0xB6F2, 0x584D, 0xDCE6, 0x584E, 0xDCEA, 0x584F, 0xDCE5, 0x5851, 0xB6EC, 0x5852, 0xB6F6, 0x5853, 0xDCE2, + 0x5854, 0xB6F0, 0x5855, 0xDCE9, 0x5857, 0xB6EE, 0x5858, 0xB6ED, 0x5859, 0xDCEC, 0x585A, 0xB6EF, 0x585B, 0xDCEE, 0x585D, 0xDCEB, + 0x585E, 0xB6EB, 0x5862, 0xB6F5, 0x5863, 0xDCF0, 0x5864, 0xDCE4, 0x5865, 0xDCED, 0x5868, 0xDCE3, 0x586B, 0xB6F1, 0x586D, 0xB6F3, + 0x586F, 0xDCE8, 0x5871, 0xDCF1, 0x5874, 0xE15D, 0x5875, 0xB9D0, 0x5876, 0xE163, 0x5879, 0xB9D5, 0x587A, 0xE15F, 0x587B, 0xE166, + 0x587C, 0xE157, 0x587D, 0xB9D7, 0x587E, 0xB9D1, 0x587F, 0xE15C, 0x5880, 0xBC55, 0x5881, 0xE15B, 0x5882, 0xE164, 0x5883, 0xB9D2, + 0x5885, 0xB9D6, 0x5886, 0xE15A, 0x5887, 0xE160, 0x5888, 0xE165, 0x5889, 0xE156, 0x588A, 0xB9D4, 0x588B, 0xE15E, 0x588E, 0xE162, + 0x588F, 0xE168, 0x5890, 0xE158, 0x5891, 0xE161, 0x5893, 0xB9D3, 0x5894, 0xE167, 0x5898, 0xE159, 0x589C, 0xBC59, 0x589D, 0xE54B, + 0x589E, 0xBC57, 0x589F, 0xBC56, 0x58A0, 0xE54D, 0x58A1, 0xE552, 0x58A3, 0xE54E, 0x58A5, 0xE551, 0x58A6, 0xBC5C, 0x58A8, 0xBEA5, + 0x58A9, 0xBC5B, 0x58AB, 0xE54A, 0x58AC, 0xE550, 0x58AE, 0xBC5A, 0x58AF, 0xE54F, 0x58B1, 0xE54C, 0x58B3, 0xBC58, 0x58BA, 0xE94D, + 0x58BB, 0xF9D9, 0x58BC, 0xE94F, 0x58BD, 0xE94A, 0x58BE, 0xBEC1, 0x58BF, 0xE94C, 0x58C1, 0xBEC0, 0x58C2, 0xE94E, 0x58C5, 0xBEC3, + 0x58C6, 0xE950, 0x58C7, 0xBEC2, 0x58C8, 0xE949, 0x58C9, 0xE94B, 0x58CE, 0xC0A5, 0x58CF, 0xECCC, 0x58D1, 0xC0A4, 0x58D2, 0xECCD, + 0x58D3, 0xC0A3, 0x58D4, 0xECCB, 0x58D5, 0xC0A2, 0x58D6, 0xECCA, 0x58D8, 0xC253, 0x58D9, 0xC252, 0x58DA, 0xF1F6, 0x58DB, 0xF1F8, + 0x58DD, 0xF1F7, 0x58DE, 0xC361, 0x58DF, 0xC362, 0x58E2, 0xC363, 0x58E3, 0xF442, 0x58E4, 0xC45B, 0x58E7, 0xF7D3, 0x58E8, 0xF7D2, + 0x58E9, 0xC5F2, 0x58EB, 0xA468, 0x58EC, 0xA4D0, 0x58EF, 0xA7A7, 0x58F4, 0xCE5F, 0x58F9, 0xB3FC, 0x58FA, 0xB3FD, 0x58FC, 0xDCF2, + 0x58FD, 0xB9D8, 0x58FE, 0xE169, 0x58FF, 0xE553, 0x5903, 0xC95A, 0x5906, 0xCAB0, 0x590C, 0xCC42, 0x590D, 0xCE60, 0x590E, 0xD159, + 0x590F, 0xAE4C, 0x5912, 0xF1F9, 0x5914, 0xC4DC, 0x5915, 0xA469, 0x5916, 0xA57E, 0x5917, 0xC970, 0x5919, 0xA667, 0x591A, 0xA668, + 0x591C, 0xA95D, 0x5920, 0xB0F7, 0x5922, 0xB9DA, 0x5924, 0xB9DB, 0x5925, 0xB9D9, 0x5927, 0xA46A, 0x5929, 0xA4D1, 0x592A, 0xA4D3, + 0x592B, 0xA4D2, 0x592C, 0xC95B, 0x592D, 0xA4D4, 0x592E, 0xA5A1, 0x592F, 0xC971, 0x5931, 0xA5A2, 0x5937, 0xA669, 0x5938, 0xA66A, + 0x593C, 0xC9CB, 0x593E, 0xA7A8, 0x5940, 0xCAB1, 0x5944, 0xA961, 0x5945, 0xCC43, 0x5947, 0xA95F, 0x5948, 0xA960, 0x5949, 0xA95E, + 0x594A, 0xD15A, 0x594E, 0xABB6, 0x594F, 0xABB5, 0x5950, 0xABB7, 0x5951, 0xABB4, 0x5953, 0xCE61, 0x5954, 0xA962, 0x5955, 0xABB3, + 0x5957, 0xAE4D, 0x5958, 0xAE4E, 0x595A, 0xAE4F, 0x595C, 0xD4CD, 0x5960, 0xB3FE, 0x5961, 0xD8B4, 0x5962, 0xB0F8, 0x5967, 0xB6F8, + 0x5969, 0xB9DD, 0x596A, 0xB9DC, 0x596B, 0xE16A, 0x596D, 0xBC5D, 0x596E, 0xBEC4, 0x5970, 0xEFC0, 0x5971, 0xF6DA, 0x5972, 0xF7D4, + 0x5973, 0xA46B, 0x5974, 0xA5A3, 0x5976, 0xA5A4, 0x5977, 0xC9D1, 0x5978, 0xA66C, 0x5979, 0xA66F, 0x597B, 0xC9CF, 0x597C, 0xC9CD, + 0x597D, 0xA66E, 0x597E, 0xC9D0, 0x597F, 0xC9D2, 0x5980, 0xC9CC, 0x5981, 0xA671, 0x5982, 0xA670, 0x5983, 0xA66D, 0x5984, 0xA66B, + 0x5985, 0xC9CE, 0x598A, 0xA7B3, 0x598D, 0xA7B0, 0x598E, 0xCAB6, 0x598F, 0xCAB9, 0x5990, 0xCAB8, 0x5992, 0xA7AA, 0x5993, 0xA7B2, + 0x5996, 0xA7AF, 0x5997, 0xCAB5, 0x5998, 0xCAB3, 0x5999, 0xA7AE, 0x599D, 0xA7A9, 0x599E, 0xA7AC, 0x59A0, 0xCAB4, 0x59A1, 0xCABB, + 0x59A2, 0xCAB7, 0x59A3, 0xA7AD, 0x59A4, 0xA7B1, 0x59A5, 0xA7B4, 0x59A6, 0xCAB2, 0x59A7, 0xCABA, 0x59A8, 0xA7AB, 0x59AE, 0xA967, + 0x59AF, 0xA96F, 0x59B1, 0xCC4F, 0x59B2, 0xCC48, 0x59B3, 0xA970, 0x59B4, 0xCC53, 0x59B5, 0xCC44, 0x59B6, 0xCC4B, 0x59B9, 0xA966, + 0x59BA, 0xCC45, 0x59BB, 0xA964, 0x59BC, 0xCC4C, 0x59BD, 0xCC50, 0x59BE, 0xA963, 0x59C0, 0xCC51, 0x59C1, 0xCC4A, 0x59C3, 0xCC4D, + 0x59C5, 0xA972, 0x59C6, 0xA969, 0x59C7, 0xCC54, 0x59C8, 0xCC52, 0x59CA, 0xA96E, 0x59CB, 0xA96C, 0x59CC, 0xCC49, 0x59CD, 0xA96B, + 0x59CE, 0xCC47, 0x59CF, 0xCC46, 0x59D0, 0xA96A, 0x59D1, 0xA968, 0x59D2, 0xA971, 0x59D3, 0xA96D, 0x59D4, 0xA965, 0x59D6, 0xCC4E, + 0x59D8, 0xABB9, 0x59DA, 0xABC0, 0x59DB, 0xCE6F, 0x59DC, 0xABB8, 0x59DD, 0xCE67, 0x59DE, 0xCE63, 0x59E0, 0xCE73, 0x59E1, 0xCE62, + 0x59E3, 0xABBB, 0x59E4, 0xCE6C, 0x59E5, 0xABBE, 0x59E6, 0xABC1, 0x59E8, 0xABBC, 0x59E9, 0xCE70, 0x59EA, 0xABBF, 0x59EC, 0xAE56, + 0x59ED, 0xCE76, 0x59EE, 0xCE64, 0x59F1, 0xCE66, 0x59F2, 0xCE6D, 0x59F3, 0xCE71, 0x59F4, 0xCE75, 0x59F5, 0xCE72, 0x59F6, 0xCE6B, + 0x59F7, 0xCE6E, 0x59FA, 0xCE68, 0x59FB, 0xABC3, 0x59FC, 0xCE6A, 0x59FD, 0xCE69, 0x59FE, 0xCE74, 0x59FF, 0xABBA, 0x5A00, 0xCE65, + 0x5A01, 0xABC2, 0x5A03, 0xABBD, 0x5A09, 0xAE5C, 0x5A0A, 0xD162, 0x5A0C, 0xAE5B, 0x5A0F, 0xD160, 0x5A11, 0xAE50, 0x5A13, 0xAE55, + 0x5A15, 0xD15F, 0x5A16, 0xD15C, 0x5A17, 0xD161, 0x5A18, 0xAE51, 0x5A19, 0xD15B, 0x5A1B, 0xAE54, 0x5A1C, 0xAE52, 0x5A1E, 0xD163, + 0x5A1F, 0xAE53, 0x5A20, 0xAE57, 0x5A23, 0xAE58, 0x5A25, 0xAE5A, 0x5A29, 0xAE59, 0x5A2D, 0xD15D, 0x5A2E, 0xD15E, 0x5A33, 0xD164, + 0x5A35, 0xD4D4, 0x5A36, 0xB0F9, 0x5A37, 0xD8C2, 0x5A38, 0xD4D3, 0x5A39, 0xD4E6, 0x5A3C, 0xB140, 0x5A3E, 0xD4E4, 0x5A40, 0xB0FE, + 0x5A41, 0xB0FA, 0x5A42, 0xD4ED, 0x5A43, 0xD4DD, 0x5A44, 0xD4E0, 0x5A46, 0xB143, 0x5A47, 0xD4EA, 0x5A48, 0xD4E2, 0x5A49, 0xB0FB, + 0x5A4A, 0xB144, 0x5A4C, 0xD4E7, 0x5A4D, 0xD4E5, 0x5A50, 0xD4D6, 0x5A51, 0xD4EB, 0x5A52, 0xD4DF, 0x5A53, 0xD4DA, 0x5A55, 0xD4D0, + 0x5A56, 0xD4EC, 0x5A57, 0xD4DC, 0x5A58, 0xD4CF, 0x5A5A, 0xB142, 0x5A5B, 0xD4E1, 0x5A5C, 0xD4EE, 0x5A5D, 0xD4DE, 0x5A5E, 0xD4D2, + 0x5A5F, 0xD4D7, 0x5A60, 0xD4CE, 0x5A62, 0xB141, 0x5A64, 0xD4DB, 0x5A65, 0xD4D8, 0x5A66, 0xB0FC, 0x5A67, 0xD4D1, 0x5A69, 0xD4E9, + 0x5A6A, 0xB0FD, 0x5A6C, 0xD4D9, 0x5A6D, 0xD4D5, 0x5A70, 0xD4E8, 0x5A77, 0xB440, 0x5A78, 0xD8BB, 0x5A7A, 0xD8B8, 0x5A7B, 0xD8C9, + 0x5A7C, 0xD8BD, 0x5A7D, 0xD8CA, 0x5A7F, 0xB442, 0x5A83, 0xD8C6, 0x5A84, 0xD8C3, 0x5A8A, 0xD8C4, 0x5A8B, 0xD8C7, 0x5A8C, 0xD8CB, + 0x5A8E, 0xD4E3, 0x5A8F, 0xD8CD, 0x5A90, 0xDD47, 0x5A92, 0xB443, 0x5A93, 0xD8CE, 0x5A94, 0xD8B6, 0x5A95, 0xD8C0, 0x5A97, 0xD8C5, + 0x5A9A, 0xB441, 0x5A9B, 0xB444, 0x5A9C, 0xD8CC, 0x5A9D, 0xD8CF, 0x5A9E, 0xD8BA, 0x5A9F, 0xD8B7, 0x5AA2, 0xD8B9, 0x5AA5, 0xD8BE, + 0x5AA6, 0xD8BC, 0x5AA7, 0xB445, 0x5AA9, 0xD8C8, 0x5AAC, 0xD8BF, 0x5AAE, 0xD8C1, 0x5AAF, 0xD8B5, 0x5AB0, 0xDCFA, 0x5AB1, 0xDCF8, + 0x5AB2, 0xB742, 0x5AB3, 0xB740, 0x5AB4, 0xDD43, 0x5AB5, 0xDCF9, 0x5AB6, 0xDD44, 0x5AB7, 0xDD40, 0x5AB8, 0xDCF7, 0x5AB9, 0xDD46, + 0x5ABA, 0xDCF6, 0x5ABB, 0xDCFD, 0x5ABC, 0xB6FE, 0x5ABD, 0xB6FD, 0x5ABE, 0xB6FC, 0x5ABF, 0xDCFB, 0x5AC0, 0xDD41, 0x5AC1, 0xB6F9, + 0x5AC2, 0xB741, 0x5AC4, 0xDCF4, 0x5AC6, 0xDCFE, 0x5AC7, 0xDCF3, 0x5AC8, 0xDCFC, 0x5AC9, 0xB6FA, 0x5ACA, 0xDD42, 0x5ACB, 0xDCF5, + 0x5ACC, 0xB6FB, 0x5ACD, 0xDD45, 0x5AD5, 0xE16E, 0x5AD6, 0xB9E2, 0x5AD7, 0xB9E1, 0x5AD8, 0xB9E3, 0x5AD9, 0xE17A, 0x5ADA, 0xE170, + 0x5ADB, 0xE176, 0x5ADC, 0xE16B, 0x5ADD, 0xE179, 0x5ADE, 0xE178, 0x5ADF, 0xE17C, 0x5AE0, 0xE175, 0x5AE1, 0xB9DE, 0x5AE2, 0xE174, + 0x5AE3, 0xB9E4, 0x5AE5, 0xE16D, 0x5AE6, 0xB9DF, 0x5AE8, 0xE17B, 0x5AE9, 0xB9E0, 0x5AEA, 0xE16F, 0x5AEB, 0xE172, 0x5AEC, 0xE177, + 0x5AED, 0xE171, 0x5AEE, 0xE16C, 0x5AF3, 0xE173, 0x5AF4, 0xE555, 0x5AF5, 0xBC61, 0x5AF6, 0xE558, 0x5AF7, 0xE557, 0x5AF8, 0xE55A, + 0x5AF9, 0xE55C, 0x5AFA, 0xF9DC, 0x5AFB, 0xBC5F, 0x5AFD, 0xE556, 0x5AFF, 0xE554, 0x5B01, 0xE55D, 0x5B02, 0xE55B, 0x5B03, 0xE559, + 0x5B05, 0xE55F, 0x5B07, 0xE55E, 0x5B08, 0xBC63, 0x5B09, 0xBC5E, 0x5B0B, 0xBC60, 0x5B0C, 0xBC62, 0x5B0F, 0xE560, 0x5B10, 0xE957, + 0x5B13, 0xE956, 0x5B14, 0xE955, 0x5B16, 0xE958, 0x5B17, 0xE951, 0x5B19, 0xE952, 0x5B1A, 0xE95A, 0x5B1B, 0xE953, 0x5B1D, 0xBEC5, + 0x5B1E, 0xE95C, 0x5B20, 0xE95B, 0x5B21, 0xE954, 0x5B23, 0xECD1, 0x5B24, 0xC0A8, 0x5B25, 0xECCF, 0x5B26, 0xECD4, 0x5B27, 0xECD3, + 0x5B28, 0xE959, 0x5B2A, 0xC0A7, 0x5B2C, 0xECD2, 0x5B2D, 0xECCE, 0x5B2E, 0xECD6, 0x5B2F, 0xECD5, 0x5B30, 0xC0A6, 0x5B32, 0xECD0, + 0x5B34, 0xBEC6, 0x5B38, 0xC254, 0x5B3C, 0xEFC1, 0x5B3D, 0xF1FA, 0x5B3E, 0xF1FB, 0x5B3F, 0xF1FC, 0x5B40, 0xC45C, 0x5B43, 0xC45D, + 0x5B45, 0xF443, 0x5B47, 0xF5C8, 0x5B48, 0xF5C7, 0x5B4B, 0xF6DB, 0x5B4C, 0xF6DC, 0x5B4D, 0xF7D5, 0x5B4E, 0xF8A7, 0x5B50, 0xA46C, + 0x5B51, 0xA46D, 0x5B53, 0xA46E, 0x5B54, 0xA4D5, 0x5B55, 0xA5A5, 0x5B56, 0xC9D3, 0x5B57, 0xA672, 0x5B58, 0xA673, 0x5B5A, 0xA7B7, + 0x5B5B, 0xA7B8, 0x5B5C, 0xA7B6, 0x5B5D, 0xA7B5, 0x5B5F, 0xA973, 0x5B62, 0xCC55, 0x5B63, 0xA975, 0x5B64, 0xA974, 0x5B65, 0xCC56, + 0x5B69, 0xABC4, 0x5B6B, 0xAE5D, 0x5B6C, 0xD165, 0x5B6E, 0xD4F0, 0x5B70, 0xB145, 0x5B71, 0xB447, 0x5B72, 0xD4EF, 0x5B73, 0xB446, + 0x5B75, 0xB9E5, 0x5B77, 0xE17D, 0x5B78, 0xBEC7, 0x5B7A, 0xC0A9, 0x5B7B, 0xECD7, 0x5B7D, 0xC45E, 0x5B7F, 0xC570, 0x5B81, 0xC972, + 0x5B83, 0xA5A6, 0x5B84, 0xC973, 0x5B85, 0xA676, 0x5B87, 0xA674, 0x5B88, 0xA675, 0x5B89, 0xA677, 0x5B8B, 0xA7BA, 0x5B8C, 0xA7B9, + 0x5B8E, 0xCABC, 0x5B8F, 0xA7BB, 0x5B92, 0xCABD, 0x5B93, 0xCC57, 0x5B95, 0xCC58, 0x5B97, 0xA976, 0x5B98, 0xA978, 0x5B99, 0xA97A, + 0x5B9A, 0xA977, 0x5B9B, 0xA97B, 0x5B9C, 0xA979, 0x5BA2, 0xABC8, 0x5BA3, 0xABC5, 0x5BA4, 0xABC7, 0x5BA5, 0xABC9, 0x5BA6, 0xABC6, + 0x5BA7, 0xD166, 0x5BA8, 0xCE77, 0x5BAC, 0xD168, 0x5BAD, 0xD167, 0x5BAE, 0xAE63, 0x5BB0, 0xAE5F, 0x5BB3, 0xAE60, 0x5BB4, 0xAE62, + 0x5BB5, 0xAE64, 0x5BB6, 0xAE61, 0x5BB8, 0xAE66, 0x5BB9, 0xAE65, 0x5BBF, 0xB14A, 0x5BC0, 0xD4F2, 0x5BC1, 0xD4F1, 0x5BC2, 0xB149, + 0x5BC4, 0xB148, 0x5BC5, 0xB147, 0x5BC6, 0xB14B, 0x5BC7, 0xB146, 0x5BCA, 0xD8D5, 0x5BCB, 0xD8D2, 0x5BCC, 0xB449, 0x5BCD, 0xD8D1, + 0x5BCE, 0xD8D6, 0x5BD0, 0xB44B, 0x5BD1, 0xD8D4, 0x5BD2, 0xB448, 0x5BD3, 0xB44A, 0x5BD4, 0xD8D3, 0x5BD6, 0xDD48, 0x5BD8, 0xDD49, + 0x5BD9, 0xDD4A, 0x5BDE, 0xB9E6, 0x5BDF, 0xB9EE, 0x5BE0, 0xE17E, 0x5BE1, 0xB9E8, 0x5BE2, 0xB9EC, 0x5BE3, 0xE1A1, 0x5BE4, 0xB9ED, + 0x5BE5, 0xB9E9, 0x5BE6, 0xB9EA, 0x5BE7, 0xB9E7, 0x5BE8, 0xB9EB, 0x5BE9, 0xBC66, 0x5BEA, 0xD8D0, 0x5BEB, 0xBC67, 0x5BEC, 0xBC65, + 0x5BEE, 0xBC64, 0x5BEF, 0xE95D, 0x5BF0, 0xBEC8, 0x5BF1, 0xECD8, 0x5BF2, 0xECD9, 0x5BF5, 0xC364, 0x5BF6, 0xC45F, 0x5BF8, 0xA46F, + 0x5BFA, 0xA678, 0x5C01, 0xABCA, 0x5C03, 0xD169, 0x5C04, 0xAE67, 0x5C07, 0xB14E, 0x5C08, 0xB14D, 0x5C09, 0xB14C, 0x5C0A, 0xB44C, + 0x5C0B, 0xB44D, 0x5C0C, 0xD8D7, 0x5C0D, 0xB9EF, 0x5C0E, 0xBEC9, 0x5C0F, 0xA470, 0x5C10, 0xC95C, 0x5C11, 0xA4D6, 0x5C12, 0xC974, + 0x5C15, 0xC9D4, 0x5C16, 0xA679, 0x5C1A, 0xA97C, 0x5C1F, 0xDD4B, 0x5C22, 0xA471, 0x5C24, 0xA4D7, 0x5C25, 0xC9D5, 0x5C28, 0xCABE, + 0x5C2A, 0xCABF, 0x5C2C, 0xA7BC, 0x5C30, 0xD8D8, 0x5C31, 0xB44E, 0x5C33, 0xDD4C, 0x5C37, 0xC0AA, 0x5C38, 0xA472, 0x5C39, 0xA4A8, + 0x5C3A, 0xA4D8, 0x5C3B, 0xC975, 0x5C3C, 0xA5A7, 0x5C3E, 0xA7C0, 0x5C3F, 0xA7BF, 0x5C40, 0xA7BD, 0x5C41, 0xA7BE, 0x5C44, 0xCC59, + 0x5C45, 0xA97E, 0x5C46, 0xA9A1, 0x5C47, 0xCC5A, 0x5C48, 0xA97D, 0x5C4B, 0xABCE, 0x5C4C, 0xCE78, 0x5C4D, 0xABCD, 0x5C4E, 0xABCB, + 0x5C4F, 0xABCC, 0x5C50, 0xAE6A, 0x5C51, 0xAE68, 0x5C54, 0xD16B, 0x5C55, 0xAE69, 0x5C56, 0xD16A, 0x5C58, 0xAE5E, 0x5C59, 0xD4F3, + 0x5C5C, 0xB150, 0x5C5D, 0xB151, 0x5C60, 0xB14F, 0x5C62, 0xB9F0, 0x5C63, 0xE1A2, 0x5C64, 0xBC68, 0x5C65, 0xBC69, 0x5C67, 0xE561, + 0x5C68, 0xC0AB, 0x5C69, 0xEFC2, 0x5C6A, 0xEFC3, 0x5C6C, 0xC4DD, 0x5C6D, 0xF8A8, 0x5C6E, 0xC94B, 0x5C6F, 0xA4D9, 0x5C71, 0xA473, + 0x5C73, 0xC977, 0x5C74, 0xC976, 0x5C79, 0xA67A, 0x5C7A, 0xC9D7, 0x5C7B, 0xC9D8, 0x5C7C, 0xC9D6, 0x5C7E, 0xC9D9, 0x5C86, 0xCAC7, + 0x5C88, 0xCAC2, 0x5C89, 0xCAC4, 0x5C8A, 0xCAC6, 0x5C8B, 0xCAC3, 0x5C8C, 0xA7C4, 0x5C8D, 0xCAC0, 0x5C8F, 0xCAC1, 0x5C90, 0xA7C1, + 0x5C91, 0xA7C2, 0x5C92, 0xCAC5, 0x5C93, 0xCAC8, 0x5C94, 0xA7C3, 0x5C95, 0xCAC9, 0x5C9D, 0xCC68, 0x5C9F, 0xCC62, 0x5CA0, 0xCC5D, + 0x5CA1, 0xA9A3, 0x5CA2, 0xCC65, 0x5CA3, 0xCC63, 0x5CA4, 0xCC5C, 0x5CA5, 0xCC69, 0x5CA6, 0xCC6C, 0x5CA7, 0xCC67, 0x5CA8, 0xCC60, + 0x5CA9, 0xA9A5, 0x5CAA, 0xCC66, 0x5CAB, 0xA9A6, 0x5CAC, 0xCC61, 0x5CAD, 0xCC64, 0x5CAE, 0xCC5B, 0x5CAF, 0xCC5F, 0x5CB0, 0xCC6B, + 0x5CB1, 0xA9A7, 0x5CB3, 0xA9A8, 0x5CB5, 0xCC5E, 0x5CB6, 0xCC6A, 0x5CB7, 0xA9A2, 0x5CB8, 0xA9A4, 0x5CC6, 0xCEAB, 0x5CC7, 0xCEA4, + 0x5CC8, 0xCEAA, 0x5CC9, 0xCEA3, 0x5CCA, 0xCEA5, 0x5CCB, 0xCE7D, 0x5CCC, 0xCE7B, 0x5CCE, 0xCEAC, 0x5CCF, 0xCEA9, 0x5CD0, 0xCE79, + 0x5CD2, 0xABD0, 0x5CD3, 0xCEA7, 0x5CD4, 0xCEA8, 0x5CD6, 0xCEA6, 0x5CD7, 0xCE7C, 0x5CD8, 0xCE7A, 0x5CD9, 0xABCF, 0x5CDA, 0xCEA2, + 0x5CDB, 0xCE7E, 0x5CDE, 0xCEA1, 0x5CDF, 0xCEAD, 0x5CE8, 0xAE6F, 0x5CEA, 0xAE6E, 0x5CEC, 0xD16C, 0x5CED, 0xAE6B, 0x5CEE, 0xD16E, + 0x5CF0, 0xAE70, 0x5CF1, 0xD16F, 0x5CF4, 0xAE73, 0x5CF6, 0xAE71, 0x5CF7, 0xD170, 0x5CF8, 0xCEAE, 0x5CF9, 0xD172, 0x5CFB, 0xAE6D, + 0x5CFD, 0xAE6C, 0x5CFF, 0xD16D, 0x5D00, 0xD171, 0x5D01, 0xAE72, 0x5D06, 0xB153, 0x5D07, 0xB152, 0x5D0B, 0xD4F5, 0x5D0C, 0xD4F9, + 0x5D0D, 0xD4FB, 0x5D0E, 0xB154, 0x5D0F, 0xD4FE, 0x5D11, 0xB158, 0x5D12, 0xD541, 0x5D14, 0xB15A, 0x5D16, 0xB156, 0x5D17, 0xB15E, + 0x5D19, 0xB15B, 0x5D1A, 0xD4F7, 0x5D1B, 0xB155, 0x5D1D, 0xD4F6, 0x5D1E, 0xD4F4, 0x5D1F, 0xD543, 0x5D20, 0xD4F8, 0x5D22, 0xB157, + 0x5D23, 0xD542, 0x5D24, 0xB15C, 0x5D25, 0xD4FD, 0x5D26, 0xD4FC, 0x5D27, 0xB15D, 0x5D28, 0xD4FA, 0x5D29, 0xB159, 0x5D2E, 0xD544, + 0x5D30, 0xD540, 0x5D31, 0xD8E7, 0x5D32, 0xD8EE, 0x5D33, 0xD8E3, 0x5D34, 0xB451, 0x5D35, 0xD8DF, 0x5D36, 0xD8EF, 0x5D37, 0xD8D9, + 0x5D38, 0xD8EC, 0x5D39, 0xD8EA, 0x5D3A, 0xD8E4, 0x5D3C, 0xD8ED, 0x5D3D, 0xD8E6, 0x5D3F, 0xD8DE, 0x5D40, 0xD8F0, 0x5D41, 0xD8DC, + 0x5D42, 0xD8E9, 0x5D43, 0xD8DA, 0x5D45, 0xD8F1, 0x5D47, 0xB452, 0x5D49, 0xD8EB, 0x5D4A, 0xDD4F, 0x5D4B, 0xD8DD, 0x5D4C, 0xB44F, + 0x5D4E, 0xD8E1, 0x5D50, 0xB450, 0x5D51, 0xD8E0, 0x5D52, 0xD8E5, 0x5D55, 0xD8E2, 0x5D59, 0xD8E8, 0x5D5E, 0xDD53, 0x5D62, 0xDD56, + 0x5D63, 0xDD4E, 0x5D65, 0xDD50, 0x5D67, 0xDD55, 0x5D68, 0xDD54, 0x5D69, 0xB743, 0x5D6B, 0xD8DB, 0x5D6C, 0xDD52, 0x5D6F, 0xB744, + 0x5D71, 0xDD4D, 0x5D72, 0xDD51, 0x5D77, 0xE1A9, 0x5D79, 0xE1B0, 0x5D7A, 0xE1A7, 0x5D7C, 0xE1AE, 0x5D7D, 0xE1A5, 0x5D7E, 0xE1AD, + 0x5D7F, 0xE1B1, 0x5D80, 0xE1A4, 0x5D81, 0xE1A8, 0x5D82, 0xE1A3, 0x5D84, 0xB9F1, 0x5D86, 0xE1A6, 0x5D87, 0xB9F2, 0x5D88, 0xE1AC, + 0x5D89, 0xE1AB, 0x5D8A, 0xE1AA, 0x5D8D, 0xE1AF, 0x5D92, 0xE565, 0x5D93, 0xE567, 0x5D94, 0xBC6B, 0x5D95, 0xE568, 0x5D97, 0xE563, + 0x5D99, 0xE562, 0x5D9A, 0xE56C, 0x5D9C, 0xE56A, 0x5D9D, 0xBC6A, 0x5D9E, 0xE56D, 0x5D9F, 0xE564, 0x5DA0, 0xE569, 0x5DA1, 0xE56B, + 0x5DA2, 0xE566, 0x5DA7, 0xE961, 0x5DA8, 0xE966, 0x5DA9, 0xE960, 0x5DAA, 0xE965, 0x5DAC, 0xE95E, 0x5DAD, 0xE968, 0x5DAE, 0xE964, + 0x5DAF, 0xE969, 0x5DB0, 0xE963, 0x5DB1, 0xE95F, 0x5DB2, 0xE967, 0x5DB4, 0xE96A, 0x5DB5, 0xE962, 0x5DB7, 0xECDA, 0x5DB8, 0xC0AF, + 0x5DBA, 0xC0AD, 0x5DBC, 0xC0AC, 0x5DBD, 0xC0AE, 0x5DC0, 0xEFC4, 0x5DC2, 0xF172, 0x5DC3, 0xF1FD, 0x5DC6, 0xF444, 0x5DC7, 0xF445, + 0x5DC9, 0xC460, 0x5DCB, 0xF5C9, 0x5DCD, 0xC4DE, 0x5DCF, 0xF5CA, 0x5DD1, 0xF6DE, 0x5DD2, 0xC572, 0x5DD4, 0xC571, 0x5DD5, 0xF6DD, + 0x5DD6, 0xC5C9, 0x5DD8, 0xF7D6, 0x5DDD, 0xA474, 0x5DDE, 0xA67B, 0x5DDF, 0xC9DA, 0x5DE0, 0xCACA, 0x5DE1, 0xA8B5, 0x5DE2, 0xB15F, + 0x5DE5, 0xA475, 0x5DE6, 0xA5AA, 0x5DE7, 0xA5A9, 0x5DE8, 0xA5A8, 0x5DEB, 0xA7C5, 0x5DEE, 0xAE74, 0x5DF0, 0xDD57, 0x5DF1, 0xA476, + 0x5DF2, 0xA477, 0x5DF3, 0xA478, 0x5DF4, 0xA4DA, 0x5DF7, 0xABD1, 0x5DF9, 0xCEAF, 0x5DFD, 0xB453, 0x5DFE, 0xA479, 0x5DFF, 0xC95D, + 0x5E02, 0xA5AB, 0x5E03, 0xA5AC, 0x5E04, 0xC978, 0x5E06, 0xA67C, 0x5E0A, 0xCACB, 0x5E0C, 0xA7C6, 0x5E0E, 0xCACC, 0x5E11, 0xA9AE, + 0x5E14, 0xCC6E, 0x5E15, 0xA9AC, 0x5E16, 0xA9AB, 0x5E17, 0xCC6D, 0x5E18, 0xA9A9, 0x5E19, 0xCC6F, 0x5E1A, 0xA9AA, 0x5E1B, 0xA9AD, + 0x5E1D, 0xABD2, 0x5E1F, 0xABD4, 0x5E20, 0xCEB3, 0x5E21, 0xCEB0, 0x5E22, 0xCEB1, 0x5E23, 0xCEB2, 0x5E24, 0xCEB4, 0x5E25, 0xABD3, + 0x5E28, 0xD174, 0x5E29, 0xD173, 0x5E2B, 0xAE76, 0x5E2D, 0xAE75, 0x5E33, 0xB162, 0x5E34, 0xD546, 0x5E36, 0xB161, 0x5E37, 0xB163, + 0x5E38, 0xB160, 0x5E3D, 0xB455, 0x5E3E, 0xD545, 0x5E40, 0xB456, 0x5E41, 0xD8F3, 0x5E43, 0xB457, 0x5E44, 0xD8F2, 0x5E45, 0xB454, + 0x5E4A, 0xDD5A, 0x5E4B, 0xDD5C, 0x5E4C, 0xB745, 0x5E4D, 0xDD5B, 0x5E4E, 0xDD59, 0x5E4F, 0xDD58, 0x5E53, 0xE1B4, 0x5E54, 0xB9F7, + 0x5E55, 0xB9F5, 0x5E57, 0xB9F6, 0x5E58, 0xE1B2, 0x5E59, 0xE1B3, 0x5E5B, 0xB9F3, 0x5E5C, 0xE571, 0x5E5D, 0xE56F, 0x5E5F, 0xBC6D, + 0x5E60, 0xE570, 0x5E61, 0xBC6E, 0x5E62, 0xBC6C, 0x5E63, 0xB9F4, 0x5E66, 0xE96D, 0x5E67, 0xE96B, 0x5E68, 0xE96C, 0x5E69, 0xE56E, + 0x5E6A, 0xECDC, 0x5E6B, 0xC0B0, 0x5E6C, 0xECDB, 0x5E6D, 0xEFC5, 0x5E6E, 0xEFC6, 0x5E6F, 0xE96E, 0x5E70, 0xF1FE, 0x5E72, 0xA47A, + 0x5E73, 0xA5AD, 0x5E74, 0xA67E, 0x5E75, 0xC9DB, 0x5E76, 0xA67D, 0x5E78, 0xA9AF, 0x5E79, 0xB746, 0x5E7B, 0xA4DB, 0x5E7C, 0xA5AE, + 0x5E7D, 0xABD5, 0x5E7E, 0xB458, 0x5E80, 0xC979, 0x5E82, 0xC97A, 0x5E84, 0xC9DC, 0x5E87, 0xA7C8, 0x5E88, 0xCAD0, 0x5E89, 0xCACE, + 0x5E8A, 0xA7C9, 0x5E8B, 0xCACD, 0x5E8C, 0xCACF, 0x5E8D, 0xCAD1, 0x5E8F, 0xA7C7, 0x5E95, 0xA9B3, 0x5E96, 0xA9B4, 0x5E97, 0xA9B1, + 0x5E9A, 0xA9B0, 0x5E9B, 0xCEB8, 0x5E9C, 0xA9B2, 0x5EA0, 0xABD6, 0x5EA2, 0xCEB7, 0x5EA3, 0xCEB9, 0x5EA4, 0xCEB6, 0x5EA5, 0xCEBA, + 0x5EA6, 0xABD7, 0x5EA7, 0xAE79, 0x5EA8, 0xD175, 0x5EAA, 0xD177, 0x5EAB, 0xAE77, 0x5EAC, 0xD178, 0x5EAD, 0xAE78, 0x5EAE, 0xD176, + 0x5EB0, 0xCEB5, 0x5EB1, 0xD547, 0x5EB2, 0xD54A, 0x5EB3, 0xD54B, 0x5EB4, 0xD548, 0x5EB5, 0xB167, 0x5EB6, 0xB166, 0x5EB7, 0xB164, + 0x5EB8, 0xB165, 0x5EB9, 0xD549, 0x5EBE, 0xB168, 0x5EC1, 0xB45A, 0x5EC2, 0xB45B, 0x5EC4, 0xB45C, 0x5EC5, 0xDD5D, 0x5EC6, 0xDD5F, + 0x5EC7, 0xDD61, 0x5EC8, 0xB748, 0x5EC9, 0xB747, 0x5ECA, 0xB459, 0x5ECB, 0xDD60, 0x5ECC, 0xDD5E, 0x5ECE, 0xE1B8, 0x5ED1, 0xE1B6, + 0x5ED2, 0xE1BC, 0x5ED3, 0xB9F8, 0x5ED4, 0xE1BD, 0x5ED5, 0xE1BA, 0x5ED6, 0xB9F9, 0x5ED7, 0xE1B7, 0x5ED8, 0xE1B5, 0x5ED9, 0xE1BB, + 0x5EDA, 0xBC70, 0x5EDB, 0xE573, 0x5EDC, 0xE1B9, 0x5EDD, 0xBC72, 0x5EDE, 0xE574, 0x5EDF, 0xBC71, 0x5EE0, 0xBC74, 0x5EE1, 0xE575, + 0x5EE2, 0xBC6F, 0x5EE3, 0xBC73, 0x5EE5, 0xE973, 0x5EE6, 0xE971, 0x5EE7, 0xE970, 0x5EE8, 0xE972, 0x5EE9, 0xE96F, 0x5EEC, 0xC366, + 0x5EEE, 0xF446, 0x5EEF, 0xF447, 0x5EF1, 0xF5CB, 0x5EF2, 0xF6DF, 0x5EF3, 0xC655, 0x5EF6, 0xA9B5, 0x5EF7, 0xA7CA, 0x5EFA, 0xABD8, + 0x5EFE, 0xA47B, 0x5EFF, 0xA4DC, 0x5F01, 0xA5AF, 0x5F02, 0xC9DD, 0x5F04, 0xA7CB, 0x5F05, 0xCAD2, 0x5F07, 0xCEBB, 0x5F08, 0xABD9, + 0x5F0A, 0xB9FA, 0x5F0B, 0xA47C, 0x5F0F, 0xA6A1, 0x5F12, 0xB749, 0x5F13, 0xA47D, 0x5F14, 0xA4DD, 0x5F15, 0xA4DE, 0x5F17, 0xA5B1, + 0x5F18, 0xA5B0, 0x5F1A, 0xC9DE, 0x5F1B, 0xA6A2, 0x5F1D, 0xCAD3, 0x5F1F, 0xA7CC, 0x5F22, 0xCC71, 0x5F23, 0xCC72, 0x5F24, 0xCC73, + 0x5F26, 0xA9B6, 0x5F27, 0xA9B7, 0x5F28, 0xCC70, 0x5F29, 0xA9B8, 0x5F2D, 0xABDA, 0x5F2E, 0xCEBC, 0x5F30, 0xD17A, 0x5F31, 0xAE7A, + 0x5F33, 0xD179, 0x5F35, 0xB169, 0x5F36, 0xD54C, 0x5F37, 0xB16A, 0x5F38, 0xD54D, 0x5F3C, 0xB45D, 0x5F40, 0xDD62, 0x5F43, 0xE1BF, + 0x5F44, 0xE1BE, 0x5F46, 0xB9FB, 0x5F48, 0xBC75, 0x5F49, 0xE576, 0x5F4A, 0xBECA, 0x5F4B, 0xE974, 0x5F4C, 0xC0B1, 0x5F4E, 0xC573, + 0x5F4F, 0xF7D8, 0x5F54, 0xCC74, 0x5F56, 0xCEBD, 0x5F57, 0xB16B, 0x5F58, 0xD8F4, 0x5F59, 0xB74A, 0x5F5D, 0xC255, 0x5F62, 0xA7CE, + 0x5F64, 0xA7CD, 0x5F65, 0xABDB, 0x5F67, 0xD17B, 0x5F69, 0xB16D, 0x5F6A, 0xB343, 0x5F6B, 0xB16E, 0x5F6C, 0xB16C, 0x5F6D, 0xB45E, + 0x5F6F, 0xE1C0, 0x5F70, 0xB9FC, 0x5F71, 0xBC76, 0x5F73, 0xC94C, 0x5F74, 0xC9DF, 0x5F76, 0xCAD5, 0x5F77, 0xA7CF, 0x5F78, 0xCAD4, + 0x5F79, 0xA7D0, 0x5F7C, 0xA9BC, 0x5F7D, 0xCC77, 0x5F7E, 0xCC76, 0x5F7F, 0xA9BB, 0x5F80, 0xA9B9, 0x5F81, 0xA9BA, 0x5F82, 0xCC75, + 0x5F85, 0xABDD, 0x5F86, 0xCEBE, 0x5F87, 0xABE0, 0x5F88, 0xABDC, 0x5F89, 0xABE2, 0x5F8A, 0xABDE, 0x5F8B, 0xABDF, 0x5F8C, 0xABE1, + 0x5F90, 0xAE7D, 0x5F91, 0xAE7C, 0x5F92, 0xAE7B, 0x5F96, 0xD54F, 0x5F97, 0xB16F, 0x5F98, 0xB172, 0x5F99, 0xB170, 0x5F9B, 0xD54E, + 0x5F9C, 0xB175, 0x5F9E, 0xB171, 0x5F9F, 0xD550, 0x5FA0, 0xB174, 0x5FA1, 0xB173, 0x5FA5, 0xD8F6, 0x5FA6, 0xD8F5, 0x5FA8, 0xB461, + 0x5FA9, 0xB45F, 0x5FAA, 0xB460, 0x5FAB, 0xD8F7, 0x5FAC, 0xB74B, 0x5FAD, 0xDD64, 0x5FAE, 0xB74C, 0x5FAF, 0xDD63, 0x5FB2, 0xE577, + 0x5FB5, 0xBC78, 0x5FB6, 0xE1C1, 0x5FB7, 0xBC77, 0x5FB9, 0xB9FD, 0x5FBB, 0xECDE, 0x5FBC, 0xE975, 0x5FBD, 0xC0B2, 0x5FBE, 0xECDD, + 0x5FBF, 0xF240, 0x5FC0, 0xF448, 0x5FC1, 0xF449, 0x5FC3, 0xA4DF, 0x5FC5, 0xA5B2, 0x5FC9, 0xC97B, 0x5FCC, 0xA7D2, 0x5FCD, 0xA7D4, + 0x5FCF, 0xC9E2, 0x5FD0, 0xCAD8, 0x5FD1, 0xCAD7, 0x5FD2, 0xCAD6, 0x5FD4, 0xC9E1, 0x5FD5, 0xC9E0, 0x5FD6, 0xA6A4, 0x5FD7, 0xA7D3, + 0x5FD8, 0xA7D1, 0x5FD9, 0xA6A3, 0x5FDD, 0xA9BD, 0x5FDE, 0xCC78, 0x5FE0, 0xA9BE, 0x5FE1, 0xCADD, 0x5FE3, 0xCADF, 0x5FE4, 0xCADE, + 0x5FE5, 0xCC79, 0x5FE8, 0xCADA, 0x5FEA, 0xA7D8, 0x5FEB, 0xA7D6, 0x5FED, 0xCAD9, 0x5FEE, 0xCADB, 0x5FEF, 0xCAE1, 0x5FF1, 0xA7D5, + 0x5FF3, 0xCADC, 0x5FF4, 0xCAE5, 0x5FF5, 0xA9C0, 0x5FF7, 0xCAE2, 0x5FF8, 0xA7D7, 0x5FFA, 0xCAE0, 0x5FFB, 0xCAE3, 0x5FFD, 0xA9BF, + 0x5FFF, 0xA9C1, 0x6000, 0xCAE4, 0x6009, 0xCCAF, 0x600A, 0xCCA2, 0x600B, 0xCC7E, 0x600C, 0xCCAE, 0x600D, 0xCCA9, 0x600E, 0xABE7, + 0x600F, 0xA9C2, 0x6010, 0xCCAA, 0x6011, 0xCCAD, 0x6012, 0xABE3, 0x6013, 0xCCAC, 0x6014, 0xA9C3, 0x6015, 0xA9C8, 0x6016, 0xA9C6, + 0x6017, 0xCCA3, 0x6019, 0xCC7C, 0x601A, 0xCCA5, 0x601B, 0xA9CD, 0x601C, 0xCCB0, 0x601D, 0xABE4, 0x601E, 0xCCA6, 0x6020, 0xABE5, + 0x6021, 0xA9C9, 0x6022, 0xCCA8, 0x6024, 0xCECD, 0x6025, 0xABE6, 0x6026, 0xCC7B, 0x6027, 0xA9CA, 0x6028, 0xABE8, 0x6029, 0xA9CB, + 0x602A, 0xA9C7, 0x602B, 0xA9CC, 0x602C, 0xCCA7, 0x602D, 0xCC7A, 0x602E, 0xCCAB, 0x602F, 0xA9C4, 0x6032, 0xCC7D, 0x6033, 0xCCA4, + 0x6034, 0xCCA1, 0x6035, 0xA9C5, 0x6037, 0xCEBF, 0x6039, 0xCEC0, 0x6040, 0xCECA, 0x6041, 0xD1A1, 0x6042, 0xCECB, 0x6043, 0xABEE, + 0x6044, 0xCECE, 0x6045, 0xCEC4, 0x6046, 0xABED, 0x6047, 0xCEC6, 0x6049, 0xCEC7, 0x604C, 0xCEC9, 0x604D, 0xABE9, 0x6050, 0xAEA3, + 0x6052, 0xF9DA, 0x6053, 0xCEC5, 0x6054, 0xCEC1, 0x6055, 0xAEA4, 0x6058, 0xCECF, 0x6059, 0xAE7E, 0x605A, 0xD17D, 0x605B, 0xCEC8, + 0x605D, 0xD17C, 0x605E, 0xCEC3, 0x605F, 0xCECC, 0x6062, 0xABEC, 0x6063, 0xAEA1, 0x6064, 0xABF2, 0x6065, 0xAEA2, 0x6066, 0xCED0, + 0x6067, 0xD17E, 0x6068, 0xABEB, 0x6069, 0xAEA6, 0x606A, 0xABF1, 0x606B, 0xABF0, 0x606C, 0xABEF, 0x606D, 0xAEA5, 0x606E, 0xCED1, + 0x606F, 0xAEA7, 0x6070, 0xABEA, 0x6072, 0xCEC2, 0x607F, 0xB176, 0x6080, 0xD1A4, 0x6081, 0xD1A6, 0x6083, 0xD1A8, 0x6084, 0xAEA8, + 0x6085, 0xAEAE, 0x6086, 0xD553, 0x6087, 0xD1AC, 0x6088, 0xD1A3, 0x6089, 0xB178, 0x608A, 0xD551, 0x608C, 0xAEAD, 0x608D, 0xAEAB, + 0x608E, 0xD1AE, 0x6090, 0xD552, 0x6092, 0xD1A5, 0x6094, 0xAEAC, 0x6095, 0xD1A9, 0x6096, 0xAEAF, 0x6097, 0xD1AB, 0x609A, 0xAEAA, + 0x609B, 0xD1AA, 0x609C, 0xD1AD, 0x609D, 0xD1A7, 0x609F, 0xAEA9, 0x60A0, 0xB179, 0x60A2, 0xD1A2, 0x60A3, 0xB177, 0x60A8, 0xB17A, + 0x60B0, 0xD555, 0x60B1, 0xD55E, 0x60B2, 0xB464, 0x60B4, 0xB17C, 0x60B5, 0xB1A3, 0x60B6, 0xB465, 0x60B7, 0xD560, 0x60B8, 0xB1AA, + 0x60B9, 0xD8F9, 0x60BA, 0xD556, 0x60BB, 0xB1A2, 0x60BC, 0xB1A5, 0x60BD, 0xB17E, 0x60BE, 0xD554, 0x60BF, 0xD562, 0x60C0, 0xD565, + 0x60C1, 0xD949, 0x60C3, 0xD563, 0x60C4, 0xD8FD, 0x60C5, 0xB1A1, 0x60C6, 0xB1A8, 0x60C7, 0xB1AC, 0x60C8, 0xD55D, 0x60C9, 0xD8F8, + 0x60CA, 0xD561, 0x60CB, 0xB17B, 0x60CC, 0xD8FA, 0x60CD, 0xD564, 0x60CE, 0xD8FC, 0x60CF, 0xD559, 0x60D1, 0xB462, 0x60D3, 0xD557, + 0x60D4, 0xD558, 0x60D5, 0xB1A7, 0x60D8, 0xB1A6, 0x60D9, 0xD55B, 0x60DA, 0xB1AB, 0x60DB, 0xD55F, 0x60DC, 0xB1A4, 0x60DD, 0xD55C, + 0x60DF, 0xB1A9, 0x60E0, 0xB466, 0x60E1, 0xB463, 0x60E2, 0xD8FB, 0x60E4, 0xD55A, 0x60E6, 0xB17D, 0x60F0, 0xB46B, 0x60F1, 0xB46F, + 0x60F2, 0xD940, 0x60F3, 0xB751, 0x60F4, 0xB46D, 0x60F5, 0xD944, 0x60F6, 0xB471, 0x60F7, 0xDD65, 0x60F8, 0xD946, 0x60F9, 0xB753, + 0x60FA, 0xB469, 0x60FB, 0xB46C, 0x60FC, 0xD947, 0x60FE, 0xD948, 0x60FF, 0xD94E, 0x6100, 0xB473, 0x6101, 0xB754, 0x6103, 0xD94A, + 0x6104, 0xD94F, 0x6105, 0xD943, 0x6106, 0xB75E, 0x6108, 0xB755, 0x6109, 0xB472, 0x610A, 0xD941, 0x610B, 0xD950, 0x610D, 0xB75D, + 0x610E, 0xB470, 0x610F, 0xB74E, 0x6110, 0xD94D, 0x6112, 0xB474, 0x6113, 0xD945, 0x6114, 0xD8FE, 0x6115, 0xB46A, 0x6116, 0xD942, + 0x6118, 0xD94B, 0x611A, 0xB74D, 0x611B, 0xB752, 0x611C, 0xB467, 0x611D, 0xD94C, 0x611F, 0xB750, 0x6123, 0xB468, 0x6127, 0xB75C, + 0x6128, 0xE1C3, 0x6129, 0xDD70, 0x612B, 0xDD68, 0x612C, 0xE1C2, 0x612E, 0xDD6C, 0x612F, 0xDD6E, 0x6132, 0xDD6B, 0x6134, 0xB75B, + 0x6136, 0xDD6A, 0x6137, 0xB75F, 0x613B, 0xE1D2, 0x613E, 0xB75A, 0x613F, 0xBA40, 0x6140, 0xDD71, 0x6141, 0xE1C4, 0x6144, 0xB758, + 0x6145, 0xDD69, 0x6146, 0xDD6D, 0x6147, 0xB9FE, 0x6148, 0xB74F, 0x6149, 0xDD66, 0x614A, 0xDD67, 0x614B, 0xBA41, 0x614C, 0xB757, + 0x614D, 0xB759, 0x614E, 0xB756, 0x614F, 0xDD6F, 0x6152, 0xE1C8, 0x6153, 0xE1C9, 0x6154, 0xE1CE, 0x6155, 0xBC7D, 0x6156, 0xE1D5, + 0x6158, 0xBA47, 0x615A, 0xBA46, 0x615B, 0xE1D0, 0x615D, 0xBC7C, 0x615E, 0xE1C5, 0x615F, 0xBA45, 0x6161, 0xE1D4, 0x6162, 0xBA43, + 0x6163, 0xBA44, 0x6165, 0xE1D1, 0x6166, 0xE5AA, 0x6167, 0xBC7A, 0x6168, 0xB46E, 0x616A, 0xE1D3, 0x616B, 0xBCA3, 0x616C, 0xE1CB, + 0x616E, 0xBC7B, 0x6170, 0xBCA2, 0x6171, 0xE1C6, 0x6172, 0xE1CA, 0x6173, 0xE1C7, 0x6174, 0xE1CD, 0x6175, 0xBA48, 0x6176, 0xBC79, + 0x6177, 0xBA42, 0x6179, 0xE57A, 0x617A, 0xE1CF, 0x617C, 0xBCA1, 0x617E, 0xBCA4, 0x6180, 0xE1CC, 0x6182, 0xBC7E, 0x6183, 0xE579, + 0x6189, 0xE57E, 0x618A, 0xBECE, 0x618B, 0xE578, 0x618C, 0xE9A3, 0x618D, 0xE5A9, 0x618E, 0xBCA8, 0x6190, 0xBCA6, 0x6191, 0xBECC, + 0x6192, 0xE5A6, 0x6193, 0xE5A2, 0x6194, 0xBCAC, 0x6196, 0xE978, 0x619A, 0xBCAA, 0x619B, 0xE5A1, 0x619D, 0xE976, 0x619F, 0xE5A5, + 0x61A1, 0xE5A8, 0x61A2, 0xE57D, 0x61A4, 0xBCAB, 0x61A7, 0xBCA5, 0x61A8, 0xE977, 0x61A9, 0xBECD, 0x61AA, 0xE5A7, 0x61AB, 0xBCA7, + 0x61AC, 0xBCA9, 0x61AD, 0xE5A4, 0x61AE, 0xBCAD, 0x61AF, 0xE5A3, 0x61B0, 0xE57C, 0x61B1, 0xE57B, 0x61B2, 0xBECB, 0x61B3, 0xE5AB, + 0x61B4, 0xE97A, 0x61B5, 0xECE0, 0x61B6, 0xBED0, 0x61B8, 0xE9A2, 0x61BA, 0xE97E, 0x61BC, 0xECE1, 0x61BE, 0xBED1, 0x61BF, 0xE9A1, + 0x61C1, 0xE97C, 0x61C2, 0xC0B4, 0x61C3, 0xECDF, 0x61C5, 0xE979, 0x61C6, 0xE97B, 0x61C7, 0xC0B5, 0x61C8, 0xBED3, 0x61C9, 0xC0B3, + 0x61CA, 0xBED2, 0x61CB, 0xC0B7, 0x61CC, 0xE97D, 0x61CD, 0xBECF, 0x61D6, 0xEFCF, 0x61D8, 0xEFC7, 0x61DE, 0xECE7, 0x61DF, 0xEFC8, + 0x61E0, 0xECE3, 0x61E3, 0xC256, 0x61E4, 0xECE5, 0x61E5, 0xECE4, 0x61E6, 0xC0B6, 0x61E7, 0xECE2, 0x61E8, 0xECE6, 0x61E9, 0xEFD0, + 0x61EA, 0xEFCC, 0x61EB, 0xEFCE, 0x61ED, 0xEFC9, 0x61EE, 0xEFCA, 0x61F0, 0xEFCD, 0x61F1, 0xEFCB, 0x61F2, 0xC367, 0x61F5, 0xC36A, + 0x61F6, 0xC369, 0x61F7, 0xC368, 0x61F8, 0xC461, 0x61F9, 0xF44A, 0x61FA, 0xC462, 0x61FB, 0xF241, 0x61FC, 0xC4DF, 0x61FD, 0xF5CC, + 0x61FE, 0xC4E0, 0x61FF, 0xC574, 0x6200, 0xC5CA, 0x6201, 0xF7D9, 0x6203, 0xF7DA, 0x6204, 0xF7DB, 0x6207, 0xF9BA, 0x6208, 0xA4E0, + 0x6209, 0xC97C, 0x620A, 0xA5B3, 0x620C, 0xA6A6, 0x620D, 0xA6A7, 0x620E, 0xA6A5, 0x6210, 0xA6A8, 0x6211, 0xA7DA, 0x6212, 0xA7D9, + 0x6214, 0xCCB1, 0x6215, 0xA9CF, 0x6216, 0xA9CE, 0x6219, 0xD1AF, 0x621A, 0xB1AD, 0x621B, 0xB1AE, 0x621F, 0xB475, 0x6220, 0xDD72, + 0x6221, 0xB760, 0x6222, 0xB761, 0x6223, 0xDD74, 0x6224, 0xDD76, 0x6225, 0xDD75, 0x6227, 0xE1D7, 0x6229, 0xE1D6, 0x622A, 0xBA49, + 0x622B, 0xE1D8, 0x622D, 0xE5AC, 0x622E, 0xBCAE, 0x6230, 0xBED4, 0x6232, 0xC0B8, 0x6233, 0xC257, 0x6234, 0xC0B9, 0x6236, 0xA4E1, + 0x623A, 0xCAE6, 0x623D, 0xCCB2, 0x623E, 0xA9D1, 0x623F, 0xA9D0, 0x6240, 0xA9D2, 0x6241, 0xABF3, 0x6242, 0xCED2, 0x6243, 0xCED3, + 0x6246, 0xD1B0, 0x6247, 0xAEB0, 0x6248, 0xB1AF, 0x6249, 0xB476, 0x624A, 0xD951, 0x624B, 0xA4E2, 0x624D, 0xA47E, 0x624E, 0xA4E3, + 0x6250, 0xC97D, 0x6251, 0xA5B7, 0x6252, 0xA5B6, 0x6253, 0xA5B4, 0x6254, 0xA5B5, 0x6258, 0xA6AB, 0x6259, 0xC9E9, 0x625A, 0xC9EB, + 0x625B, 0xA6AA, 0x625C, 0xC9E3, 0x625E, 0xC9E4, 0x6260, 0xC9EA, 0x6261, 0xC9E6, 0x6262, 0xC9E8, 0x6263, 0xA6A9, 0x6264, 0xC9E5, + 0x6265, 0xC9EC, 0x6266, 0xC9E7, 0x626D, 0xA7E1, 0x626E, 0xA7EA, 0x626F, 0xA7E8, 0x6270, 0xCAF0, 0x6271, 0xCAED, 0x6272, 0xCAF5, + 0x6273, 0xA7E6, 0x6274, 0xCAF6, 0x6276, 0xA7DF, 0x6277, 0xCAF3, 0x6279, 0xA7E5, 0x627A, 0xCAEF, 0x627B, 0xCAEE, 0x627C, 0xA7E3, + 0x627D, 0xCAF4, 0x627E, 0xA7E4, 0x627F, 0xA9D3, 0x6280, 0xA7DE, 0x6281, 0xCAF1, 0x6283, 0xCAE7, 0x6284, 0xA7DB, 0x6286, 0xA7EE, + 0x6287, 0xCAEC, 0x6288, 0xCAF2, 0x6289, 0xA7E0, 0x628A, 0xA7E2, 0x628C, 0xCAE8, 0x628E, 0xCAE9, 0x628F, 0xCAEA, 0x6291, 0xA7ED, + 0x6292, 0xA7E7, 0x6293, 0xA7EC, 0x6294, 0xCAEB, 0x6295, 0xA7EB, 0x6296, 0xA7DD, 0x6297, 0xA7DC, 0x6298, 0xA7E9, 0x62A8, 0xA9E1, + 0x62A9, 0xCCBE, 0x62AA, 0xCCB7, 0x62AB, 0xA9DC, 0x62AC, 0xA9EF, 0x62AD, 0xCCB3, 0x62AE, 0xCCBA, 0x62AF, 0xCCBC, 0x62B0, 0xCCBF, + 0x62B1, 0xA9EA, 0x62B3, 0xCCBB, 0x62B4, 0xCCB4, 0x62B5, 0xA9E8, 0x62B6, 0xCCB8, 0x62B8, 0xCCC0, 0x62B9, 0xA9D9, 0x62BB, 0xCCBD, + 0x62BC, 0xA9E3, 0x62BD, 0xA9E2, 0x62BE, 0xCCB6, 0x62BF, 0xA9D7, 0x62C2, 0xA9D8, 0x62C4, 0xA9D6, 0x62C6, 0xA9EE, 0x62C7, 0xA9E6, + 0x62C8, 0xA9E0, 0x62C9, 0xA9D4, 0x62CA, 0xCCB9, 0x62CB, 0xA9DF, 0x62CC, 0xA9D5, 0x62CD, 0xA9E7, 0x62CE, 0xA9F0, 0x62CF, 0xCED4, + 0x62D0, 0xA9E4, 0x62D1, 0xCCB5, 0x62D2, 0xA9DA, 0x62D3, 0xA9DD, 0x62D4, 0xA9DE, 0x62D6, 0xA9EC, 0x62D7, 0xA9ED, 0x62D8, 0xA9EB, + 0x62D9, 0xA9E5, 0x62DA, 0xA9E9, 0x62DB, 0xA9DB, 0x62DC, 0xABF4, 0x62EB, 0xCEDA, 0x62EC, 0xAC41, 0x62ED, 0xABF8, 0x62EE, 0xABFA, + 0x62EF, 0xAC40, 0x62F0, 0xCEE6, 0x62F1, 0xABFD, 0x62F2, 0xD1B1, 0x62F3, 0xAEB1, 0x62F4, 0xAC43, 0x62F5, 0xCED7, 0x62F6, 0xCEDF, + 0x62F7, 0xABFE, 0x62F8, 0xCEDE, 0x62F9, 0xCEDB, 0x62FA, 0xCEE3, 0x62FB, 0xCEE5, 0x62FC, 0xABF7, 0x62FD, 0xABFB, 0x62FE, 0xAC42, + 0x62FF, 0xAEB3, 0x6300, 0xCEE0, 0x6301, 0xABF9, 0x6302, 0xAC45, 0x6303, 0xCED9, 0x6307, 0xABFC, 0x6308, 0xAEB2, 0x6309, 0xABF6, + 0x630B, 0xCED6, 0x630C, 0xCEDD, 0x630D, 0xCED5, 0x630E, 0xCED8, 0x630F, 0xCEDC, 0x6310, 0xD1B2, 0x6311, 0xAC44, 0x6313, 0xCEE1, + 0x6314, 0xCEE2, 0x6315, 0xCEE4, 0x6316, 0xABF5, 0x6328, 0xAEC1, 0x6329, 0xD1BE, 0x632A, 0xAEBF, 0x632B, 0xAEC0, 0x632C, 0xD1B4, + 0x632D, 0xD1C4, 0x632F, 0xAEB6, 0x6332, 0xD566, 0x6333, 0xD1C6, 0x6334, 0xD1C0, 0x6336, 0xD1B7, 0x6338, 0xD1C9, 0x6339, 0xD1BA, + 0x633A, 0xAEBC, 0x633B, 0xD57D, 0x633C, 0xD1BD, 0x633D, 0xAEBE, 0x633E, 0xAEB5, 0x6340, 0xD1CB, 0x6341, 0xD1BF, 0x6342, 0xAEB8, + 0x6343, 0xD1B8, 0x6344, 0xD1B5, 0x6345, 0xD1B6, 0x6346, 0xAEB9, 0x6347, 0xD1C5, 0x6348, 0xD1CC, 0x6349, 0xAEBB, 0x634A, 0xD1BC, + 0x634B, 0xD1BB, 0x634C, 0xAEC3, 0x634D, 0xAEC2, 0x634E, 0xAEB4, 0x634F, 0xAEBA, 0x6350, 0xAEBD, 0x6351, 0xD1C8, 0x6354, 0xD1C2, + 0x6355, 0xAEB7, 0x6356, 0xD1B3, 0x6357, 0xD1CA, 0x6358, 0xD1C1, 0x6359, 0xD1C3, 0x635A, 0xD1C7, 0x6365, 0xD567, 0x6367, 0xB1B7, + 0x6368, 0xB1CB, 0x6369, 0xB1CA, 0x636B, 0xB1BF, 0x636D, 0xD579, 0x636E, 0xD575, 0x636F, 0xD572, 0x6370, 0xD5A6, 0x6371, 0xB1BA, + 0x6372, 0xB1B2, 0x6375, 0xD577, 0x6376, 0xB4A8, 0x6377, 0xB1B6, 0x6378, 0xD5A1, 0x637A, 0xB1CC, 0x637B, 0xB1C9, 0x637C, 0xD57B, + 0x637D, 0xD56A, 0x6380, 0xB1C8, 0x6381, 0xD5A3, 0x6382, 0xD569, 0x6383, 0xB1BD, 0x6384, 0xB1C1, 0x6385, 0xD5A2, 0x6387, 0xD573, + 0x6388, 0xB1C2, 0x6389, 0xB1BC, 0x638A, 0xD568, 0x638C, 0xB478, 0x638D, 0xD5A5, 0x638E, 0xD571, 0x638F, 0xB1C7, 0x6390, 0xD574, + 0x6391, 0xD5A4, 0x6392, 0xB1C6, 0x6394, 0xD952, 0x6396, 0xB1B3, 0x6397, 0xD56F, 0x6398, 0xB1B8, 0x6399, 0xB1C3, 0x639B, 0xB1BE, + 0x639C, 0xD578, 0x639D, 0xD56E, 0x639E, 0xD56C, 0x639F, 0xD57E, 0x63A0, 0xB1B0, 0x63A1, 0xB1C4, 0x63A2, 0xB1B4, 0x63A3, 0xB477, + 0x63A4, 0xD57C, 0x63A5, 0xB1B5, 0x63A7, 0xB1B1, 0x63A8, 0xB1C0, 0x63A9, 0xB1BB, 0x63AA, 0xB1B9, 0x63AB, 0xD570, 0x63AC, 0xB1C5, + 0x63AD, 0xD56D, 0x63AE, 0xD57A, 0x63AF, 0xD576, 0x63B0, 0xD954, 0x63B1, 0xD953, 0x63BD, 0xD56B, 0x63BE, 0xD964, 0x63C0, 0xB47A, + 0x63C2, 0xD96A, 0x63C3, 0xD959, 0x63C4, 0xD967, 0x63C5, 0xDD77, 0x63C6, 0xB47D, 0x63C7, 0xD96B, 0x63C8, 0xD96E, 0x63C9, 0xB47C, + 0x63CA, 0xD95C, 0x63CB, 0xD96D, 0x63CC, 0xD96C, 0x63CD, 0xB47E, 0x63CE, 0xD955, 0x63CF, 0xB479, 0x63D0, 0xB4A3, 0x63D2, 0xB4A1, + 0x63D3, 0xD969, 0x63D5, 0xD95F, 0x63D6, 0xB4A5, 0x63D7, 0xD970, 0x63D8, 0xD968, 0x63D9, 0xD971, 0x63DA, 0xB4AD, 0x63DB, 0xB4AB, + 0x63DC, 0xD966, 0x63DD, 0xD965, 0x63DF, 0xD963, 0x63E0, 0xD95D, 0x63E1, 0xB4A4, 0x63E3, 0xB4A2, 0x63E4, 0xD1B9, 0x63E5, 0xD956, + 0x63E7, 0xDDB7, 0x63E8, 0xD957, 0x63E9, 0xB47B, 0x63EA, 0xB4AA, 0x63EB, 0xDD79, 0x63ED, 0xB4A6, 0x63EE, 0xB4A7, 0x63EF, 0xD958, + 0x63F0, 0xD96F, 0x63F1, 0xDD78, 0x63F2, 0xD960, 0x63F3, 0xD95B, 0x63F4, 0xB4A9, 0x63F5, 0xD961, 0x63F6, 0xD95E, 0x63F9, 0xB4AE, + 0x6406, 0xB770, 0x6409, 0xDD7C, 0x640A, 0xDDB1, 0x640B, 0xDDB6, 0x640C, 0xDDAA, 0x640D, 0xB76C, 0x640E, 0xDDBB, 0x640F, 0xB769, + 0x6410, 0xDD7A, 0x6412, 0xDD7B, 0x6413, 0xB762, 0x6414, 0xB76B, 0x6415, 0xDDA4, 0x6416, 0xB76E, 0x6417, 0xB76F, 0x6418, 0xDDA5, + 0x641A, 0xDDB2, 0x641B, 0xDDB8, 0x641C, 0xB76A, 0x641E, 0xB764, 0x641F, 0xDDA3, 0x6420, 0xDD7D, 0x6421, 0xDDBA, 0x6422, 0xDDA8, + 0x6423, 0xDDA9, 0x6424, 0xDD7E, 0x6425, 0xDDB4, 0x6426, 0xDDAB, 0x6427, 0xDDB5, 0x6428, 0xDDAD, 0x642A, 0xB765, 0x642B, 0xE1D9, + 0x642C, 0xB768, 0x642D, 0xB766, 0x642E, 0xDDB9, 0x642F, 0xDDB0, 0x6430, 0xDDAC, 0x6433, 0xDDA1, 0x6434, 0xBA53, 0x6435, 0xDDAF, + 0x6436, 0xB76D, 0x6437, 0xDDA7, 0x6439, 0xDDA6, 0x643D, 0xB767, 0x643E, 0xB763, 0x643F, 0xE1EE, 0x6440, 0xDDB3, 0x6441, 0xDDAE, + 0x6443, 0xDDA2, 0x644B, 0xE1E9, 0x644D, 0xE1DA, 0x644E, 0xE1E5, 0x6450, 0xE1EC, 0x6451, 0xBA51, 0x6452, 0xB4AC, 0x6453, 0xE1EA, + 0x6454, 0xBA4C, 0x6458, 0xBA4B, 0x6459, 0xE1F1, 0x645B, 0xE1DB, 0x645C, 0xE1E8, 0x645D, 0xE1DC, 0x645E, 0xE1E7, 0x645F, 0xBA4F, + 0x6460, 0xE1EB, 0x6461, 0xD962, 0x6465, 0xE1F2, 0x6466, 0xE1E3, 0x6467, 0xBA52, 0x6468, 0xE5BA, 0x6469, 0xBCAF, 0x646B, 0xE1F0, + 0x646C, 0xE1EF, 0x646D, 0xBA54, 0x646E, 0xE5AD, 0x646F, 0xBCB0, 0x6470, 0xE5AE, 0x6472, 0xE1DF, 0x6473, 0xE1E0, 0x6474, 0xE1DD, + 0x6475, 0xE1E2, 0x6476, 0xE1DE, 0x6477, 0xE1F3, 0x6478, 0xBA4E, 0x6479, 0xBCB1, 0x647A, 0xBA50, 0x647B, 0xBA55, 0x647D, 0xE1E1, + 0x647F, 0xE1ED, 0x6482, 0xE1E6, 0x6485, 0xE5B1, 0x6487, 0xBA4A, 0x6488, 0xBCB4, 0x6489, 0xE9AA, 0x648A, 0xE5B6, 0x648B, 0xE5B5, + 0x648C, 0xE5B7, 0x648F, 0xE5B4, 0x6490, 0xBCB5, 0x6492, 0xBCBB, 0x6493, 0xBCB8, 0x6495, 0xBCB9, 0x6496, 0xE5AF, 0x6497, 0xE5B2, + 0x6498, 0xE5BC, 0x6499, 0xBCC1, 0x649A, 0xBCBF, 0x649C, 0xE5B3, 0x649D, 0xD95A, 0x649E, 0xBCB2, 0x649F, 0xE5B9, 0x64A0, 0xE5B0, + 0x64A2, 0xBCC2, 0x64A3, 0xE5B8, 0x64A4, 0xBA4D, 0x64A5, 0xBCB7, 0x64A6, 0xE1E4, 0x64A9, 0xBCBA, 0x64AB, 0xBCBE, 0x64AC, 0xBCC0, + 0x64AD, 0xBCBD, 0x64AE, 0xBCBC, 0x64B0, 0xBCB6, 0x64B1, 0xE5BB, 0x64B2, 0xBCB3, 0x64B3, 0xBCC3, 0x64BB, 0xBED8, 0x64BC, 0xBED9, + 0x64BD, 0xE9A9, 0x64BE, 0xBEE2, 0x64BF, 0xBEDF, 0x64C1, 0xBED6, 0x64C2, 0xBEDD, 0x64C3, 0xE9AB, 0x64C4, 0xBEDB, 0x64C5, 0xBED5, + 0x64C7, 0xBEDC, 0x64C9, 0xE9A8, 0x64CA, 0xC0BB, 0x64CB, 0xBED7, 0x64CD, 0xBEDE, 0x64CE, 0xC0BA, 0x64CF, 0xE9A7, 0x64D0, 0xE9A6, + 0x64D2, 0xBEE0, 0x64D4, 0xBEE1, 0x64D6, 0xE9A5, 0x64D7, 0xE9A4, 0x64D8, 0xC0BC, 0x64D9, 0xE9AE, 0x64DA, 0xBEDA, 0x64DB, 0xE9AC, + 0x64E0, 0xC0BD, 0x64E2, 0xC0C2, 0x64E3, 0xECEA, 0x64E4, 0xECEC, 0x64E6, 0xC0BF, 0x64E8, 0xECED, 0x64E9, 0xECE9, 0x64EB, 0xECEB, + 0x64EC, 0xC0C0, 0x64ED, 0xC0C3, 0x64EF, 0xECE8, 0x64F0, 0xC0BE, 0x64F1, 0xC0C1, 0x64F2, 0xC259, 0x64F3, 0xE9AD, 0x64F4, 0xC258, + 0x64F7, 0xC25E, 0x64F8, 0xEFD4, 0x64FA, 0xC25C, 0x64FB, 0xC25D, 0x64FC, 0xEFD7, 0x64FD, 0xEFD3, 0x64FE, 0xC25A, 0x64FF, 0xEFD1, + 0x6500, 0xC36B, 0x6501, 0xEFD5, 0x6503, 0xEFD6, 0x6504, 0xEFD2, 0x6506, 0xC25B, 0x6507, 0xF242, 0x6509, 0xF245, 0x650C, 0xF246, + 0x650D, 0xF244, 0x650E, 0xF247, 0x650F, 0xC36C, 0x6510, 0xF243, 0x6513, 0xF44E, 0x6514, 0xC464, 0x6515, 0xF44D, 0x6516, 0xF44C, + 0x6517, 0xF44B, 0x6518, 0xC463, 0x6519, 0xC465, 0x651B, 0xF5CD, 0x651C, 0xC4E2, 0x651D, 0xC4E1, 0x6520, 0xF6E1, 0x6521, 0xF6E0, + 0x6522, 0xF6E3, 0x6523, 0xC5CB, 0x6524, 0xC575, 0x6525, 0xF7DD, 0x6526, 0xF6E2, 0x6529, 0xF7DC, 0x652A, 0xC5CD, 0x652B, 0xC5CC, + 0x652C, 0xC5F3, 0x652D, 0xF8A9, 0x652E, 0xF8EF, 0x652F, 0xA4E4, 0x6532, 0xD972, 0x6533, 0xE9AF, 0x6536, 0xA6AC, 0x6537, 0xCAF7, + 0x6538, 0xA7F1, 0x6539, 0xA7EF, 0x653B, 0xA7F0, 0x653D, 0xCCC1, 0x653E, 0xA9F1, 0x653F, 0xAC46, 0x6541, 0xCEE7, 0x6543, 0xCEE8, + 0x6545, 0xAC47, 0x6546, 0xD1CE, 0x6548, 0xAEC4, 0x6549, 0xAEC5, 0x654A, 0xD1CD, 0x654F, 0xB1D3, 0x6551, 0xB1CF, 0x6553, 0xD5A7, + 0x6554, 0xB1D6, 0x6555, 0xB1D5, 0x6556, 0xB1CE, 0x6557, 0xB1D1, 0x6558, 0xB1D4, 0x6559, 0xB1D0, 0x655C, 0xD976, 0x655D, 0xB1CD, + 0x655E, 0xB4AF, 0x6562, 0xB4B1, 0x6563, 0xB4B2, 0x6564, 0xD975, 0x6565, 0xD978, 0x6566, 0xB4B0, 0x6567, 0xD973, 0x6568, 0xD977, + 0x656A, 0xD974, 0x656C, 0xB771, 0x656F, 0xDDBC, 0x6572, 0xBA56, 0x6573, 0xE1F4, 0x6574, 0xBEE3, 0x6575, 0xBCC4, 0x6576, 0xE5BD, + 0x6577, 0xBCC5, 0x6578, 0xBCC6, 0x6579, 0xE5BF, 0x657A, 0xE5BE, 0x657B, 0xE5C0, 0x657C, 0xE9B1, 0x657F, 0xE9B0, 0x6580, 0xECEF, + 0x6581, 0xECEE, 0x6582, 0xC0C4, 0x6583, 0xC0C5, 0x6584, 0xF248, 0x6587, 0xA4E5, 0x658C, 0xD979, 0x6590, 0xB4B4, 0x6591, 0xB4B3, + 0x6592, 0xDDBD, 0x6594, 0xEFD8, 0x6595, 0xC4E3, 0x6596, 0xF7DE, 0x6597, 0xA4E6, 0x6599, 0xAEC6, 0x659B, 0xB1D8, 0x659C, 0xB1D7, + 0x659D, 0xD97A, 0x659E, 0xD97B, 0x659F, 0xB772, 0x65A0, 0xE1F5, 0x65A1, 0xBA57, 0x65A2, 0xE9B2, 0x65A4, 0xA4E7, 0x65A5, 0xA5B8, + 0x65A7, 0xA9F2, 0x65A8, 0xCCC2, 0x65AA, 0xCEE9, 0x65AB, 0xAC48, 0x65AC, 0xB1D9, 0x65AE, 0xD97C, 0x65AF, 0xB4B5, 0x65B0, 0xB773, + 0x65B2, 0xE5C1, 0x65B3, 0xE5C2, 0x65B6, 0xECF0, 0x65B7, 0xC25F, 0x65B8, 0xF8F0, 0x65B9, 0xA4E8, 0x65BB, 0xCCC3, 0x65BC, 0xA9F3, + 0x65BD, 0xAC49, 0x65BF, 0xCEEA, 0x65C1, 0xAEC7, 0x65C2, 0xD1D2, 0x65C3, 0xD1D0, 0x65C4, 0xD1D1, 0x65C5, 0xAEC8, 0x65C6, 0xD1CF, + 0x65CB, 0xB1DB, 0x65CC, 0xB1DC, 0x65CD, 0xD5A8, 0x65CE, 0xB1DD, 0x65CF, 0xB1DA, 0x65D0, 0xD97D, 0x65D2, 0xD97E, 0x65D3, 0xDDBE, + 0x65D6, 0xBA59, 0x65D7, 0xBA58, 0x65DA, 0xECF1, 0x65DB, 0xEFD9, 0x65DD, 0xF24A, 0x65DE, 0xF249, 0x65DF, 0xF44F, 0x65E1, 0xC95E, + 0x65E2, 0xAC4A, 0x65E5, 0xA4E9, 0x65E6, 0xA5B9, 0x65E8, 0xA6AE, 0x65E9, 0xA6AD, 0x65EC, 0xA6AF, 0x65ED, 0xA6B0, 0x65EE, 0xC9EE, + 0x65EF, 0xC9ED, 0x65F0, 0xCAF8, 0x65F1, 0xA7F2, 0x65F2, 0xCAFB, 0x65F3, 0xCAFA, 0x65F4, 0xCAF9, 0x65F5, 0xCAFC, 0x65FA, 0xA9F4, + 0x65FB, 0xCCC9, 0x65FC, 0xCCC5, 0x65FD, 0xCCCE, 0x6600, 0xA9FB, 0x6602, 0xA9F9, 0x6603, 0xCCCA, 0x6604, 0xCCC6, 0x6605, 0xCCCD, + 0x6606, 0xA9F8, 0x6607, 0xAA40, 0x6608, 0xCCC8, 0x6609, 0xCCC4, 0x660A, 0xA9FE, 0x660B, 0xCCCB, 0x660C, 0xA9F7, 0x660D, 0xCCCC, + 0x660E, 0xA9FA, 0x660F, 0xA9FC, 0x6610, 0xCCD0, 0x6611, 0xCCCF, 0x6612, 0xCCC7, 0x6613, 0xA9F6, 0x6614, 0xA9F5, 0x6615, 0xA9FD, + 0x661C, 0xCEEF, 0x661D, 0xCEF5, 0x661F, 0xAC50, 0x6620, 0xAC4D, 0x6621, 0xCEEC, 0x6622, 0xCEF1, 0x6624, 0xAC53, 0x6625, 0xAC4B, + 0x6626, 0xCEF0, 0x6627, 0xAC4E, 0x6628, 0xAC51, 0x662B, 0xCEF3, 0x662D, 0xAC4C, 0x662E, 0xCEF8, 0x662F, 0xAC4F, 0x6631, 0xAC52, + 0x6632, 0xCEED, 0x6633, 0xCEF2, 0x6634, 0xCEF6, 0x6635, 0xCEEE, 0x6636, 0xCEEB, 0x6639, 0xCEF7, 0x663A, 0xCEF4, 0x6641, 0xAED0, + 0x6642, 0xAEC9, 0x6643, 0xAECC, 0x6645, 0xAECF, 0x6647, 0xD1D5, 0x6649, 0xAECA, 0x664A, 0xD1D3, 0x664C, 0xAECE, 0x664F, 0xAECB, + 0x6651, 0xD1D6, 0x6652, 0xAECD, 0x6659, 0xD5AC, 0x665A, 0xB1DF, 0x665B, 0xD5AB, 0x665C, 0xD5AD, 0x665D, 0xB1DE, 0x665E, 0xB1E3, + 0x665F, 0xD1D4, 0x6661, 0xD5AA, 0x6662, 0xD5AE, 0x6664, 0xB1E0, 0x6665, 0xD5A9, 0x6666, 0xB1E2, 0x6668, 0xB1E1, 0x666A, 0xD9A7, + 0x666C, 0xD9A2, 0x666E, 0xB4B6, 0x666F, 0xB4BA, 0x6670, 0xB4B7, 0x6671, 0xD9A5, 0x6672, 0xD9A8, 0x6674, 0xB4B8, 0x6676, 0xB4B9, + 0x6677, 0xB4BE, 0x6678, 0xDDC7, 0x6679, 0xD9A6, 0x667A, 0xB4BC, 0x667B, 0xD9A3, 0x667C, 0xD9A1, 0x667E, 0xB4BD, 0x6680, 0xD9A4, + 0x6684, 0xB779, 0x6686, 0xDDBF, 0x6687, 0xB776, 0x6688, 0xB777, 0x6689, 0xB775, 0x668A, 0xDDC4, 0x668B, 0xDDC3, 0x668C, 0xDDC0, + 0x668D, 0xB77B, 0x6690, 0xDDC2, 0x6691, 0xB4BB, 0x6694, 0xDDC6, 0x6695, 0xDDC1, 0x6696, 0xB778, 0x6697, 0xB774, 0x6698, 0xB77A, + 0x6699, 0xDDC5, 0x669D, 0xBA5C, 0x669F, 0xE1F8, 0x66A0, 0xE1F7, 0x66A1, 0xE1F6, 0x66A2, 0xBA5A, 0x66A8, 0xBA5B, 0x66A9, 0xE5C5, + 0x66AA, 0xE5C8, 0x66AB, 0xBCC8, 0x66AE, 0xBCC7, 0x66AF, 0xE5C9, 0x66B0, 0xE5C4, 0x66B1, 0xBCCA, 0x66B2, 0xE5C6, 0x66B4, 0xBCC9, + 0x66B5, 0xE5C3, 0x66B7, 0xE5C7, 0x66B8, 0xBEE9, 0x66B9, 0xBEE6, 0x66BA, 0xE9BB, 0x66BB, 0xE9BA, 0x66BD, 0xE9B9, 0x66BE, 0xE9B4, + 0x66C0, 0xE9B5, 0x66C4, 0xBEE7, 0x66C6, 0xBEE4, 0x66C7, 0xBEE8, 0x66C8, 0xE9B3, 0x66C9, 0xBEE5, 0x66CA, 0xE9B6, 0x66CB, 0xE9B7, + 0x66CC, 0xE9BC, 0x66CF, 0xE9B8, 0x66D2, 0xECF2, 0x66D6, 0xC0C7, 0x66D8, 0xEFDC, 0x66D9, 0xC0C6, 0x66DA, 0xEFDA, 0x66DB, 0xEFDB, + 0x66DC, 0xC260, 0x66DD, 0xC36E, 0x66DE, 0xF24B, 0x66E0, 0xC36D, 0x66E3, 0xF451, 0x66E4, 0xF452, 0x66E6, 0xC466, 0x66E8, 0xF450, + 0x66E9, 0xC4E4, 0x66EB, 0xF7DF, 0x66EC, 0xC5CE, 0x66ED, 0xF8AA, 0x66EE, 0xF8AB, 0x66F0, 0xA4EA, 0x66F2, 0xA6B1, 0x66F3, 0xA6B2, + 0x66F4, 0xA7F3, 0x66F6, 0xCCD1, 0x66F7, 0xAC54, 0x66F8, 0xAED1, 0x66F9, 0xB1E4, 0x66FC, 0xB0D2, 0x66FE, 0xB4BF, 0x66FF, 0xB4C0, + 0x6700, 0xB3CC, 0x6701, 0xD9A9, 0x6703, 0xB77C, 0x6704, 0xE1FA, 0x6705, 0xE1F9, 0x6708, 0xA4EB, 0x6709, 0xA6B3, 0x670A, 0xCCD2, + 0x670B, 0xAA42, 0x670D, 0xAA41, 0x670F, 0xCEF9, 0x6710, 0xCEFA, 0x6712, 0xD1D7, 0x6713, 0xD1D8, 0x6714, 0xAED2, 0x6715, 0xAED3, + 0x6717, 0xAED4, 0x6718, 0xD5AF, 0x671B, 0xB1E6, 0x671D, 0xB4C2, 0x671F, 0xB4C1, 0x6720, 0xDDC8, 0x6721, 0xDF7A, 0x6722, 0xE1FB, + 0x6723, 0xE9BD, 0x6726, 0xC261, 0x6727, 0xC467, 0x6728, 0xA4EC, 0x672A, 0xA5BC, 0x672B, 0xA5BD, 0x672C, 0xA5BB, 0x672D, 0xA5BE, + 0x672E, 0xA5BA, 0x6731, 0xA6B6, 0x6733, 0xC9F6, 0x6734, 0xA6B5, 0x6735, 0xA6B7, 0x6738, 0xC9F1, 0x6739, 0xC9F0, 0x673A, 0xC9F3, + 0x673B, 0xC9F2, 0x673C, 0xC9F5, 0x673D, 0xA6B4, 0x673E, 0xC9EF, 0x673F, 0xC9F4, 0x6745, 0xCAFD, 0x6746, 0xA7FD, 0x6747, 0xCAFE, + 0x6748, 0xCB43, 0x6749, 0xA7FC, 0x674B, 0xCB47, 0x674C, 0xCB42, 0x674D, 0xCB45, 0x674E, 0xA7F5, 0x674F, 0xA7F6, 0x6750, 0xA7F7, + 0x6751, 0xA7F8, 0x6753, 0xA840, 0x6755, 0xCB41, 0x6756, 0xA7FA, 0x6757, 0xA841, 0x6759, 0xCB40, 0x675A, 0xCB46, 0x675C, 0xA7F9, + 0x675D, 0xCB44, 0x675E, 0xA7FB, 0x675F, 0xA7F4, 0x6760, 0xA7FE, 0x676A, 0xAA57, 0x676C, 0xCCD4, 0x676D, 0xAA43, 0x676F, 0xAA4D, + 0x6770, 0xAA4E, 0x6771, 0xAA46, 0x6772, 0xAA58, 0x6773, 0xAA48, 0x6774, 0xCCDC, 0x6775, 0xAA53, 0x6776, 0xCCD7, 0x6777, 0xAA49, + 0x6778, 0xCCE6, 0x6779, 0xCCE7, 0x677A, 0xCCDF, 0x677B, 0xCCD8, 0x677C, 0xAA56, 0x677D, 0xCCE4, 0x677E, 0xAA51, 0x677F, 0xAA4F, + 0x6781, 0xCCE5, 0x6783, 0xCCE3, 0x6784, 0xCCDB, 0x6785, 0xCCD3, 0x6786, 0xCCDA, 0x6787, 0xAA4A, 0x6789, 0xAA50, 0x678B, 0xAA44, + 0x678C, 0xCCDE, 0x678D, 0xCCDD, 0x678E, 0xCCD5, 0x6790, 0xAA52, 0x6791, 0xCCE1, 0x6792, 0xCCD6, 0x6793, 0xAA55, 0x6794, 0xCCE8, + 0x6795, 0xAA45, 0x6797, 0xAA4C, 0x6798, 0xCCD9, 0x6799, 0xCCE2, 0x679A, 0xAA54, 0x679C, 0xAA47, 0x679D, 0xAA4B, 0x679F, 0xCCE0, + 0x67AE, 0xCF5B, 0x67AF, 0xAC5C, 0x67B0, 0xAC69, 0x67B2, 0xCF56, 0x67B3, 0xCF4C, 0x67B4, 0xAC62, 0x67B5, 0xCF4A, 0x67B6, 0xAC5B, + 0x67B7, 0xCF45, 0x67B8, 0xAC65, 0x67B9, 0xCF52, 0x67BA, 0xCEFE, 0x67BB, 0xCF41, 0x67C0, 0xCF44, 0x67C1, 0xCEFB, 0x67C2, 0xCF51, + 0x67C3, 0xCF61, 0x67C4, 0xAC60, 0x67C5, 0xCF46, 0x67C6, 0xCF58, 0x67C8, 0xCEFD, 0x67C9, 0xCF5F, 0x67CA, 0xCF60, 0x67CB, 0xCF63, + 0x67CC, 0xCF5A, 0x67CD, 0xCF4B, 0x67CE, 0xCF53, 0x67CF, 0xAC66, 0x67D0, 0xAC59, 0x67D1, 0xAC61, 0x67D2, 0xAC6D, 0x67D3, 0xAC56, + 0x67D4, 0xAC58, 0x67D8, 0xCF43, 0x67D9, 0xAC6A, 0x67DA, 0xAC63, 0x67DB, 0xCF5D, 0x67DC, 0xCF40, 0x67DD, 0xAC6C, 0x67DE, 0xAC67, + 0x67DF, 0xCF49, 0x67E2, 0xAC6B, 0x67E3, 0xCF50, 0x67E4, 0xCF48, 0x67E5, 0xAC64, 0x67E6, 0xCF5C, 0x67E7, 0xCF54, 0x67E9, 0xAC5E, + 0x67EA, 0xCF62, 0x67EB, 0xCF47, 0x67EC, 0xAC5A, 0x67ED, 0xCF59, 0x67EE, 0xCF4F, 0x67EF, 0xAC5F, 0x67F0, 0xCF55, 0x67F1, 0xAC57, + 0x67F2, 0xCEFC, 0x67F3, 0xAC68, 0x67F4, 0xAEE3, 0x67F5, 0xAC5D, 0x67F6, 0xCF4E, 0x67F7, 0xCF4D, 0x67F8, 0xCF42, 0x67FA, 0xCF5E, + 0x67FC, 0xCF57, 0x67FF, 0xAC55, 0x6812, 0xD1EC, 0x6813, 0xAEEA, 0x6814, 0xD1ED, 0x6816, 0xD1E1, 0x6817, 0xAEDF, 0x6818, 0xAEEB, + 0x681A, 0xD1DA, 0x681C, 0xD1E3, 0x681D, 0xD1EB, 0x681F, 0xD1D9, 0x6820, 0xD1F4, 0x6821, 0xAED5, 0x6825, 0xD1F3, 0x6826, 0xD1EE, + 0x6828, 0xD1EF, 0x6829, 0xAEDD, 0x682A, 0xAEE8, 0x682B, 0xD1E5, 0x682D, 0xD1E6, 0x682E, 0xD1F0, 0x682F, 0xD1E7, 0x6831, 0xD1E2, + 0x6832, 0xD1DC, 0x6833, 0xD1DD, 0x6834, 0xD1EA, 0x6835, 0xD1E4, 0x6838, 0xAED6, 0x6839, 0xAEDA, 0x683A, 0xD1F2, 0x683B, 0xD1DE, + 0x683C, 0xAEE6, 0x683D, 0xAEE2, 0x6840, 0xAEE5, 0x6841, 0xAEEC, 0x6842, 0xAEDB, 0x6843, 0xAEE7, 0x6844, 0xD1E9, 0x6845, 0xAEE9, + 0x6846, 0xAED8, 0x6848, 0xAED7, 0x6849, 0xD1DB, 0x684B, 0xD1DF, 0x684C, 0xAEE0, 0x684D, 0xD1F1, 0x684E, 0xD1E8, 0x684F, 0xD1E0, + 0x6850, 0xAEE4, 0x6851, 0xAEE1, 0x6853, 0xAED9, 0x6854, 0xAEDC, 0x686B, 0xD5C4, 0x686D, 0xD5B4, 0x686E, 0xD5B5, 0x686F, 0xD5B9, + 0x6871, 0xD5C8, 0x6872, 0xD5C5, 0x6874, 0xD5BE, 0x6875, 0xD5BD, 0x6876, 0xB1ED, 0x6877, 0xD5C1, 0x6878, 0xD5D0, 0x6879, 0xD5B0, + 0x687B, 0xD5D1, 0x687C, 0xD5C3, 0x687D, 0xD5D5, 0x687E, 0xD5C9, 0x687F, 0xB1EC, 0x6880, 0xD5C7, 0x6881, 0xB1E7, 0x6882, 0xB1FC, + 0x6883, 0xB1F2, 0x6885, 0xB1F6, 0x6886, 0xB1F5, 0x6887, 0xD5B1, 0x6889, 0xD5CE, 0x688A, 0xD5D4, 0x688B, 0xD5CC, 0x688C, 0xD5D3, + 0x688F, 0xD5C0, 0x6890, 0xD5B2, 0x6891, 0xD5D2, 0x6892, 0xD5C2, 0x6893, 0xB1EA, 0x6894, 0xB1F7, 0x6896, 0xD5CB, 0x6897, 0xB1F0, + 0x689B, 0xD5CA, 0x689C, 0xD5B3, 0x689D, 0xB1F8, 0x689F, 0xB1FA, 0x68A0, 0xD5CD, 0x68A1, 0xB1FB, 0x68A2, 0xB1E9, 0x68A3, 0xD5BA, + 0x68A4, 0xD5CF, 0x68A7, 0xB1EF, 0x68A8, 0xB1F9, 0x68A9, 0xD5BC, 0x68AA, 0xD5C6, 0x68AB, 0xD5B7, 0x68AC, 0xD5BB, 0x68AD, 0xB1F4, + 0x68AE, 0xD5B6, 0x68AF, 0xB1E8, 0x68B0, 0xB1F1, 0x68B1, 0xB1EE, 0x68B2, 0xD5BF, 0x68B3, 0xAEDE, 0x68B4, 0xD9C0, 0x68B5, 0xB1EB, + 0x68C4, 0xB1F3, 0x68C6, 0xD9C3, 0x68C7, 0xD9D9, 0x68C8, 0xD9CE, 0x68C9, 0xB4D6, 0x68CB, 0xB4D1, 0x68CC, 0xD9BD, 0x68CD, 0xB4D2, + 0x68CE, 0xD9CD, 0x68D0, 0xD9C6, 0x68D1, 0xD9D3, 0x68D2, 0xB4CE, 0x68D3, 0xD9AB, 0x68D4, 0xD9D5, 0x68D5, 0xB4C4, 0x68D6, 0xD9B3, + 0x68D7, 0xB4C7, 0x68D8, 0xB4C6, 0x68DA, 0xB4D7, 0x68DC, 0xD9AD, 0x68DD, 0xD9CF, 0x68DE, 0xD9D0, 0x68DF, 0xB4C9, 0x68E0, 0xB4C5, + 0x68E1, 0xD9BB, 0x68E3, 0xB4D0, 0x68E4, 0xD9B6, 0x68E6, 0xD9D1, 0x68E7, 0xB4CC, 0x68E8, 0xD9C9, 0x68E9, 0xD9D6, 0x68EA, 0xD9B0, + 0x68EB, 0xD9B5, 0x68EC, 0xD9AF, 0x68EE, 0xB4CB, 0x68EF, 0xD9C2, 0x68F0, 0xDDDE, 0x68F1, 0xD9B1, 0x68F2, 0xB4CF, 0x68F3, 0xD9BA, + 0x68F4, 0xD9D2, 0x68F5, 0xB4CA, 0x68F6, 0xD9B7, 0x68F7, 0xD9B4, 0x68F8, 0xD9C5, 0x68F9, 0xB4CD, 0x68FA, 0xB4C3, 0x68FB, 0xB4D9, + 0x68FC, 0xD9C8, 0x68FD, 0xD9C7, 0x6904, 0xD9AC, 0x6905, 0xB4C8, 0x6906, 0xD9D4, 0x6907, 0xD9BC, 0x6908, 0xD9BE, 0x690A, 0xD9CB, + 0x690B, 0xD9CA, 0x690C, 0xD9AA, 0x690D, 0xB4D3, 0x690E, 0xB4D5, 0x690F, 0xD9B2, 0x6910, 0xD9B9, 0x6911, 0xD9C1, 0x6912, 0xB4D4, + 0x6913, 0xD9B8, 0x6914, 0xD9C4, 0x6915, 0xD9D7, 0x6917, 0xD9CC, 0x6925, 0xD9D8, 0x692A, 0xD9AE, 0x692F, 0xDDF2, 0x6930, 0xB7A6, + 0x6932, 0xDDF0, 0x6933, 0xDDDB, 0x6934, 0xDDE0, 0x6935, 0xDDD9, 0x6937, 0xDDEC, 0x6938, 0xDDCB, 0x6939, 0xDDD2, 0x693B, 0xDDEA, + 0x693C, 0xDDF4, 0x693D, 0xDDDC, 0x693F, 0xDDCF, 0x6940, 0xDDE2, 0x6941, 0xDDE7, 0x6942, 0xDDD3, 0x6944, 0xDDE4, 0x6945, 0xDDD0, + 0x6948, 0xDDD7, 0x6949, 0xDDD8, 0x694A, 0xB7A8, 0x694B, 0xDDEB, 0x694C, 0xDDE9, 0x694E, 0xDDCC, 0x694F, 0xDDEE, 0x6951, 0xDDEF, + 0x6952, 0xDDF1, 0x6953, 0xB7AC, 0x6954, 0xB7A4, 0x6956, 0xD5B8, 0x6957, 0xDDD4, 0x6958, 0xDDE6, 0x6959, 0xDDD5, 0x695A, 0xB7A1, + 0x695B, 0xB7B1, 0x695C, 0xDDED, 0x695D, 0xB7AF, 0x695E, 0xB7AB, 0x695F, 0xDDCA, 0x6960, 0xB7A3, 0x6962, 0xDDCD, 0x6963, 0xB7B0, + 0x6965, 0xDDDD, 0x6966, 0xDDC9, 0x6968, 0xB7A9, 0x6969, 0xDDE1, 0x696A, 0xDDD1, 0x696B, 0xB7AA, 0x696C, 0xDDDA, 0x696D, 0xB77E, + 0x696E, 0xB4D8, 0x696F, 0xDDE3, 0x6970, 0xD9BF, 0x6971, 0xDDCE, 0x6974, 0xDDE8, 0x6975, 0xB7A5, 0x6976, 0xDDE5, 0x6977, 0xB7A2, + 0x6978, 0xDDDF, 0x6979, 0xB7AD, 0x697A, 0xDDD6, 0x697B, 0xDDF3, 0x6982, 0xB7A7, 0x6983, 0xDEC6, 0x6986, 0xB7AE, 0x698D, 0xE24A, + 0x698E, 0xE248, 0x6990, 0xE25E, 0x6991, 0xE246, 0x6993, 0xE258, 0x6994, 0xB77D, 0x6995, 0xBA5F, 0x6996, 0xE242, 0x6997, 0xE25D, + 0x6999, 0xE247, 0x699A, 0xE255, 0x699B, 0xBA64, 0x699C, 0xBA5D, 0x699E, 0xE25B, 0x69A0, 0xE240, 0x69A1, 0xE25A, 0x69A3, 0xBA6F, + 0x69A4, 0xE251, 0x69A5, 0xE261, 0x69A6, 0xBA6D, 0x69A7, 0xE249, 0x69A8, 0xBA5E, 0x69A9, 0xE24B, 0x69AA, 0xE259, 0x69AB, 0xBA67, + 0x69AC, 0xE244, 0x69AD, 0xBA6B, 0x69AE, 0xBA61, 0x69AF, 0xE24D, 0x69B0, 0xE243, 0x69B1, 0xE1FC, 0x69B3, 0xE257, 0x69B4, 0xBA68, + 0x69B5, 0xE260, 0x69B6, 0xE1FD, 0x69B7, 0xBA65, 0x69B9, 0xE253, 0x69BB, 0xBA66, 0x69BC, 0xE245, 0x69BD, 0xE250, 0x69BE, 0xE24C, + 0x69BF, 0xE24E, 0x69C1, 0xBA60, 0x69C2, 0xE25F, 0x69C3, 0xBA6E, 0x69C4, 0xE24F, 0x69C6, 0xE262, 0x69C9, 0xE1FE, 0x69CA, 0xE254, + 0x69CB, 0xBA63, 0x69CC, 0xBA6C, 0x69CD, 0xBA6A, 0x69CE, 0xE241, 0x69CF, 0xE256, 0x69D0, 0xBA69, 0x69D3, 0xBA62, 0x69D4, 0xE252, + 0x69D9, 0xE25C, 0x69E2, 0xE5D5, 0x69E4, 0xE5D1, 0x69E5, 0xE5CD, 0x69E6, 0xE5E1, 0x69E7, 0xE5DE, 0x69E8, 0xBCCD, 0x69EB, 0xE5E5, + 0x69EC, 0xE5D4, 0x69ED, 0xBCD8, 0x69EE, 0xE5DB, 0x69F1, 0xE5D0, 0x69F2, 0xE5DA, 0x69F3, 0xBCD5, 0x69F4, 0xE5EE, 0x69F6, 0xE5EB, + 0x69F7, 0xE5DD, 0x69F8, 0xE5CE, 0x69FB, 0xE5E2, 0x69FC, 0xE5E4, 0x69FD, 0xBCD1, 0x69FE, 0xE5D8, 0x69FF, 0xE5D3, 0x6A00, 0xE5CA, + 0x6A01, 0xBCCE, 0x6A02, 0xBCD6, 0x6A04, 0xE5E7, 0x6A05, 0xBCD7, 0x6A06, 0xE5CB, 0x6A07, 0xE5ED, 0x6A08, 0xE5E0, 0x6A09, 0xE5E6, + 0x6A0A, 0xBCD4, 0x6A0D, 0xE5E3, 0x6A0F, 0xE5EA, 0x6A11, 0xBCD9, 0x6A13, 0xBCD3, 0x6A14, 0xE5DC, 0x6A15, 0xE5CF, 0x6A16, 0xE5EF, + 0x6A17, 0xE5CC, 0x6A18, 0xE5E8, 0x6A19, 0xBCD0, 0x6A1B, 0xE5D6, 0x6A1D, 0xE5D7, 0x6A1E, 0xBCCF, 0x6A1F, 0xBCCC, 0x6A20, 0xE5D2, + 0x6A21, 0xBCD2, 0x6A23, 0xBCCB, 0x6A25, 0xE5E9, 0x6A26, 0xE5EC, 0x6A27, 0xE5D9, 0x6A28, 0xE9CA, 0x6A32, 0xE9C2, 0x6A34, 0xE9BE, + 0x6A35, 0xBEF6, 0x6A38, 0xBEEB, 0x6A39, 0xBEF0, 0x6A3A, 0xBEEC, 0x6A3B, 0xE9CC, 0x6A3C, 0xE9D7, 0x6A3D, 0xBEEA, 0x6A3E, 0xE9C4, + 0x6A3F, 0xE9CD, 0x6A40, 0xE5DF, 0x6A41, 0xE9CE, 0x6A44, 0xBEF1, 0x6A46, 0xE9DD, 0x6A47, 0xBEF5, 0x6A48, 0xBEF8, 0x6A49, 0xE9C0, + 0x6A4B, 0xBEF4, 0x6A4D, 0xE9DB, 0x6A4E, 0xE9DC, 0x6A4F, 0xE9D2, 0x6A50, 0xE9D1, 0x6A51, 0xE9C9, 0x6A54, 0xE9D3, 0x6A55, 0xE9DA, + 0x6A56, 0xE9D9, 0x6A58, 0xBEEF, 0x6A59, 0xBEED, 0x6A5A, 0xE9CB, 0x6A5B, 0xE9C8, 0x6A5D, 0xE9C5, 0x6A5E, 0xE9D8, 0x6A5F, 0xBEF7, + 0x6A60, 0xE9D6, 0x6A61, 0xBEF3, 0x6A62, 0xBEF2, 0x6A64, 0xE9D0, 0x6A66, 0xE9BF, 0x6A67, 0xE9C1, 0x6A68, 0xE9C3, 0x6A69, 0xE9D5, + 0x6A6A, 0xE9CF, 0x6A6B, 0xBEEE, 0x6A6D, 0xE9C6, 0x6A6F, 0xE9D4, 0x6A76, 0xE9C7, 0x6A7E, 0xC0CF, 0x6A7F, 0xED45, 0x6A80, 0xC0C8, + 0x6A81, 0xECF5, 0x6A83, 0xED41, 0x6A84, 0xC0CA, 0x6A85, 0xED48, 0x6A87, 0xECFC, 0x6A89, 0xECF7, 0x6A8C, 0xED49, 0x6A8D, 0xECF3, + 0x6A8E, 0xECFE, 0x6A90, 0xC0D1, 0x6A91, 0xED44, 0x6A92, 0xED4A, 0x6A93, 0xECFD, 0x6A94, 0xC0C9, 0x6A95, 0xED40, 0x6A96, 0xECF4, + 0x6A97, 0xC0D0, 0x6A9A, 0xED47, 0x6A9B, 0xECF9, 0x6A9C, 0xC0CC, 0x6A9E, 0xECFB, 0x6A9F, 0xECF8, 0x6AA0, 0xC0D2, 0x6AA1, 0xECFA, + 0x6AA2, 0xC0CB, 0x6AA3, 0xC0CE, 0x6AA4, 0xED43, 0x6AA5, 0xECF6, 0x6AA6, 0xED46, 0x6AA8, 0xED42, 0x6AAC, 0xC263, 0x6AAD, 0xEFE7, + 0x6AAE, 0xC268, 0x6AAF, 0xC269, 0x6AB3, 0xC262, 0x6AB4, 0xEFE6, 0x6AB6, 0xEFE3, 0x6AB7, 0xEFE4, 0x6AB8, 0xC266, 0x6AB9, 0xEFDE, + 0x6ABA, 0xEFE2, 0x6ABB, 0xC265, 0x6ABD, 0xEFDF, 0x6AC2, 0xC267, 0x6AC3, 0xC264, 0x6AC5, 0xEFDD, 0x6AC6, 0xEFE1, 0x6AC7, 0xEFE5, + 0x6ACB, 0xF251, 0x6ACC, 0xF24E, 0x6ACD, 0xF257, 0x6ACF, 0xF256, 0x6AD0, 0xF254, 0x6AD1, 0xF24F, 0x6AD3, 0xC372, 0x6AD9, 0xF250, + 0x6ADA, 0xC371, 0x6ADB, 0xC0CD, 0x6ADC, 0xF253, 0x6ADD, 0xC370, 0x6ADE, 0xF258, 0x6ADF, 0xF252, 0x6AE0, 0xF24D, 0x6AE1, 0xEFE0, + 0x6AE5, 0xC36F, 0x6AE7, 0xF24C, 0x6AE8, 0xF456, 0x6AEA, 0xF455, 0x6AEB, 0xF255, 0x6AEC, 0xC468, 0x6AEE, 0xF459, 0x6AEF, 0xF45A, + 0x6AF0, 0xF454, 0x6AF1, 0xF458, 0x6AF3, 0xF453, 0x6AF8, 0xF5D1, 0x6AF9, 0xF457, 0x6AFA, 0xC4E7, 0x6AFB, 0xC4E5, 0x6AFC, 0xF5CF, + 0x6B00, 0xF5D2, 0x6B02, 0xF5CE, 0x6B03, 0xF5D0, 0x6B04, 0xC4E6, 0x6B08, 0xF6E5, 0x6B09, 0xF6E6, 0x6B0A, 0xC576, 0x6B0B, 0xF6E4, + 0x6B0F, 0xF7E2, 0x6B10, 0xC5CF, 0x6B11, 0xF7E0, 0x6B12, 0xF7E1, 0x6B13, 0xF8AC, 0x6B16, 0xC656, 0x6B17, 0xF8F3, 0x6B18, 0xF8F1, + 0x6B19, 0xF8F2, 0x6B1A, 0xF8F4, 0x6B1E, 0xF9BB, 0x6B20, 0xA4ED, 0x6B21, 0xA6B8, 0x6B23, 0xAA59, 0x6B25, 0xCCE9, 0x6B28, 0xCF64, + 0x6B2C, 0xD1F5, 0x6B2D, 0xD1F7, 0x6B2F, 0xD1F6, 0x6B31, 0xD1F8, 0x6B32, 0xB1FD, 0x6B33, 0xD5D7, 0x6B34, 0xD1F9, 0x6B36, 0xD5D6, + 0x6B37, 0xD5D8, 0x6B38, 0xD5D9, 0x6B39, 0xD9DA, 0x6B3A, 0xB4DB, 0x6B3B, 0xD9DB, 0x6B3C, 0xD9DD, 0x6B3D, 0xB4DC, 0x6B3E, 0xB4DA, + 0x6B3F, 0xD9DC, 0x6B41, 0xDDFA, 0x6B42, 0xDDF8, 0x6B43, 0xDDF7, 0x6B45, 0xDDF6, 0x6B46, 0xDDF5, 0x6B47, 0xB7B2, 0x6B48, 0xDDF9, + 0x6B49, 0xBA70, 0x6B4A, 0xE263, 0x6B4B, 0xE265, 0x6B4C, 0xBA71, 0x6B4D, 0xE264, 0x6B4E, 0xBCDB, 0x6B50, 0xBCDA, 0x6B51, 0xE5F0, + 0x6B54, 0xE9DF, 0x6B55, 0xE9DE, 0x6B56, 0xE9E0, 0x6B59, 0xBEF9, 0x6B5B, 0xED4B, 0x6B5C, 0xC0D3, 0x6B5E, 0xEFE8, 0x6B5F, 0xC26A, + 0x6B60, 0xF259, 0x6B61, 0xC577, 0x6B62, 0xA4EE, 0x6B63, 0xA5BF, 0x6B64, 0xA6B9, 0x6B65, 0xA842, 0x6B66, 0xAA5A, 0x6B67, 0xAA5B, + 0x6B6A, 0xAC6E, 0x6B6D, 0xD1FA, 0x6B72, 0xB7B3, 0x6B76, 0xE6D1, 0x6B77, 0xBEFA, 0x6B78, 0xC26B, 0x6B79, 0xA4EF, 0x6B7B, 0xA6BA, + 0x6B7E, 0xCCEB, 0x6B7F, 0xAA5C, 0x6B80, 0xCCEA, 0x6B82, 0xCF65, 0x6B83, 0xAC6F, 0x6B84, 0xCF66, 0x6B86, 0xAC70, 0x6B88, 0xD1FC, + 0x6B89, 0xAEEE, 0x6B8A, 0xAEED, 0x6B8C, 0xD5DE, 0x6B8D, 0xD5DC, 0x6B8E, 0xD5DD, 0x6B8F, 0xD5DB, 0x6B91, 0xD5DA, 0x6B94, 0xD9DE, + 0x6B95, 0xD9E1, 0x6B96, 0xB4DE, 0x6B97, 0xD9DF, 0x6B98, 0xB4DD, 0x6B99, 0xD9E0, 0x6B9B, 0xDDFB, 0x6B9E, 0xE266, 0x6B9F, 0xE267, + 0x6BA0, 0xE268, 0x6BA2, 0xE5F3, 0x6BA3, 0xE5F2, 0x6BA4, 0xBCDC, 0x6BA5, 0xE5F1, 0x6BA6, 0xE5F4, 0x6BA7, 0xE9E1, 0x6BAA, 0xE9E2, + 0x6BAB, 0xE9E3, 0x6BAD, 0xED4C, 0x6BAE, 0xC0D4, 0x6BAF, 0xC26C, 0x6BB0, 0xF25A, 0x6BB2, 0xC4E8, 0x6BB3, 0xC95F, 0x6BB5, 0xAC71, + 0x6BB6, 0xCF67, 0x6BB7, 0xAEEF, 0x6BBA, 0xB1FE, 0x6BBC, 0xB4DF, 0x6BBD, 0xD9E2, 0x6BBF, 0xB7B5, 0x6BC0, 0xB7B4, 0x6BC3, 0xE269, + 0x6BC4, 0xE26A, 0x6BC5, 0xBCDD, 0x6BC6, 0xBCDE, 0x6BC7, 0xE9E5, 0x6BC8, 0xE9E4, 0x6BC9, 0xEFE9, 0x6BCA, 0xF7E3, 0x6BCB, 0xA4F0, + 0x6BCC, 0xC960, 0x6BCD, 0xA5C0, 0x6BCF, 0xA843, 0x6BD0, 0xCB48, 0x6BD2, 0xAC72, 0x6BD3, 0xB7B6, 0x6BD4, 0xA4F1, 0x6BD6, 0xCF68, + 0x6BD7, 0xAC73, 0x6BD8, 0xCF69, 0x6BDA, 0xC0D5, 0x6BDB, 0xA4F2, 0x6BDE, 0xCCEC, 0x6BE0, 0xCF6A, 0x6BE2, 0xD242, 0x6BE3, 0xD241, + 0x6BE4, 0xD1FE, 0x6BE6, 0xD1FD, 0x6BE7, 0xD243, 0x6BE8, 0xD240, 0x6BEB, 0xB240, 0x6BEC, 0xB241, 0x6BEF, 0xB4E0, 0x6BF0, 0xD9E3, + 0x6BF2, 0xD9E4, 0x6BF3, 0xD9E5, 0x6BF7, 0xDE41, 0x6BF8, 0xDE42, 0x6BF9, 0xDE40, 0x6BFB, 0xDDFD, 0x6BFC, 0xDDFE, 0x6BFD, 0xB7B7, + 0x6BFE, 0xE26B, 0x6BFF, 0xE5F7, 0x6C00, 0xE5F6, 0x6C01, 0xE5F5, 0x6C02, 0xE5F8, 0x6C03, 0xE9E7, 0x6C04, 0xE9E6, 0x6C05, 0xBEFB, + 0x6C06, 0xE9E8, 0x6C08, 0xC0D6, 0x6C09, 0xED4D, 0x6C0B, 0xEFEA, 0x6C0C, 0xF25B, 0x6C0D, 0xF6E7, 0x6C0F, 0xA4F3, 0x6C10, 0xA5C2, + 0x6C11, 0xA5C1, 0x6C13, 0xAA5D, 0x6C14, 0xC961, 0x6C15, 0xC97E, 0x6C16, 0xA6BB, 0x6C18, 0xC9F7, 0x6C19, 0xCB49, 0x6C1A, 0xCB4A, + 0x6C1B, 0xAA5E, 0x6C1D, 0xCCED, 0x6C1F, 0xAC74, 0x6C20, 0xCF6B, 0x6C21, 0xCF6C, 0x6C23, 0xAEF0, 0x6C24, 0xAEF4, 0x6C25, 0xD244, + 0x6C26, 0xAEF3, 0x6C27, 0xAEF1, 0x6C28, 0xAEF2, 0x6C2A, 0xD5DF, 0x6C2B, 0xB242, 0x6C2C, 0xB4E3, 0x6C2E, 0xB4E1, 0x6C2F, 0xB4E2, + 0x6C30, 0xD9E6, 0x6C33, 0xBA72, 0x6C34, 0xA4F4, 0x6C36, 0xC9A1, 0x6C38, 0xA5C3, 0x6C3B, 0xC9A4, 0x6C3E, 0xA5C6, 0x6C3F, 0xC9A3, + 0x6C40, 0xA5C5, 0x6C41, 0xA5C4, 0x6C42, 0xA844, 0x6C43, 0xC9A2, 0x6C46, 0xC9F8, 0x6C4A, 0xC9FC, 0x6C4B, 0xC9FE, 0x6C4C, 0xCA40, + 0x6C4D, 0xA6C5, 0x6C4E, 0xA6C6, 0x6C4F, 0xC9FB, 0x6C50, 0xA6C1, 0x6C52, 0xC9F9, 0x6C54, 0xC9FD, 0x6C55, 0xA6C2, 0x6C57, 0xA6BD, + 0x6C59, 0xA6BE, 0x6C5B, 0xA6C4, 0x6C5C, 0xC9FA, 0x6C5D, 0xA6BC, 0x6C5E, 0xA845, 0x6C5F, 0xA6BF, 0x6C60, 0xA6C0, 0x6C61, 0xA6C3, + 0x6C65, 0xCB5B, 0x6C66, 0xCB59, 0x6C67, 0xCB4C, 0x6C68, 0xA851, 0x6C69, 0xCB53, 0x6C6A, 0xA84C, 0x6C6B, 0xCB4D, 0x6C6D, 0xCB55, + 0x6C6F, 0xCB52, 0x6C70, 0xA84F, 0x6C71, 0xCB51, 0x6C72, 0xA856, 0x6C73, 0xCB5A, 0x6C74, 0xA858, 0x6C76, 0xA85A, 0x6C78, 0xCB4B, + 0x6C7A, 0xA84D, 0x6C7B, 0xCB5C, 0x6C7D, 0xA854, 0x6C7E, 0xA857, 0x6C80, 0xCD45, 0x6C81, 0xA847, 0x6C82, 0xA85E, 0x6C83, 0xA855, + 0x6C84, 0xCB4E, 0x6C85, 0xA84A, 0x6C86, 0xA859, 0x6C87, 0xCB56, 0x6C88, 0xA848, 0x6C89, 0xA849, 0x6C8A, 0xCD43, 0x6C8B, 0xCB4F, + 0x6C8C, 0xA850, 0x6C8D, 0xA85B, 0x6C8E, 0xCB5D, 0x6C8F, 0xCB50, 0x6C90, 0xA84E, 0x6C92, 0xA853, 0x6C93, 0xCCEE, 0x6C94, 0xA85C, + 0x6C95, 0xCB57, 0x6C96, 0xA852, 0x6C98, 0xA85D, 0x6C99, 0xA846, 0x6C9A, 0xCB54, 0x6C9B, 0xA84B, 0x6C9C, 0xCB58, 0x6C9D, 0xCD44, + 0x6CAB, 0xAA6A, 0x6CAC, 0xAA7A, 0x6CAD, 0xCCF5, 0x6CAE, 0xAA71, 0x6CB0, 0xCD4B, 0x6CB1, 0xAA62, 0x6CB3, 0xAA65, 0x6CB4, 0xCD42, + 0x6CB6, 0xCCF3, 0x6CB7, 0xCCF7, 0x6CB8, 0xAA6D, 0x6CB9, 0xAA6F, 0x6CBA, 0xCCFA, 0x6CBB, 0xAA76, 0x6CBC, 0xAA68, 0x6CBD, 0xAA66, + 0x6CBE, 0xAA67, 0x6CBF, 0xAA75, 0x6CC0, 0xCD47, 0x6CC1, 0xAA70, 0x6CC2, 0xCCF9, 0x6CC3, 0xCCFB, 0x6CC4, 0xAA6E, 0x6CC5, 0xAA73, + 0x6CC6, 0xCCFC, 0x6CC7, 0xCD4A, 0x6CC9, 0xAC75, 0x6CCA, 0xAA79, 0x6CCC, 0xAA63, 0x6CCD, 0xCD49, 0x6CCF, 0xCD4D, 0x6CD0, 0xCCF8, + 0x6CD1, 0xCD4F, 0x6CD2, 0xCD40, 0x6CD3, 0xAA6C, 0x6CD4, 0xCCF4, 0x6CD5, 0xAA6B, 0x6CD6, 0xAA7D, 0x6CD7, 0xAA72, 0x6CD9, 0xCCF2, + 0x6CDA, 0xCF75, 0x6CDB, 0xAA78, 0x6CDC, 0xAA7C, 0x6CDD, 0xCD41, 0x6CDE, 0xCD46, 0x6CE0, 0xAA7E, 0x6CE1, 0xAA77, 0x6CE2, 0xAA69, + 0x6CE3, 0xAA5F, 0x6CE5, 0xAA64, 0x6CE7, 0xCCF6, 0x6CE8, 0xAA60, 0x6CE9, 0xCD4E, 0x6CEB, 0xCCF0, 0x6CEC, 0xCCEF, 0x6CED, 0xCCFD, + 0x6CEE, 0xCCF1, 0x6CEF, 0xAA7B, 0x6CF0, 0xAEF5, 0x6CF1, 0xAA74, 0x6CF2, 0xCCFE, 0x6CF3, 0xAA61, 0x6CF5, 0xACA6, 0x6CF9, 0xCD4C, + 0x6D00, 0xCF7C, 0x6D01, 0xCFA1, 0x6D03, 0xCFA4, 0x6D04, 0xCF77, 0x6D07, 0xCFA7, 0x6D08, 0xCFAA, 0x6D09, 0xCFAC, 0x6D0A, 0xCF74, + 0x6D0B, 0xAC76, 0x6D0C, 0xAC7B, 0x6D0D, 0xD249, 0x6D0E, 0xACAD, 0x6D0F, 0xCFA5, 0x6D10, 0xCFAD, 0x6D11, 0xCF7B, 0x6D12, 0xCF73, + 0x6D16, 0xD264, 0x6D17, 0xAC7E, 0x6D18, 0xCFA2, 0x6D19, 0xCF78, 0x6D1A, 0xCF7A, 0x6D1B, 0xACA5, 0x6D1D, 0xCF7D, 0x6D1E, 0xAC7D, + 0x6D1F, 0xCF70, 0x6D20, 0xCFA8, 0x6D22, 0xCFAB, 0x6D25, 0xAC7A, 0x6D27, 0xACA8, 0x6D28, 0xCF6D, 0x6D29, 0xACAA, 0x6D2A, 0xAC78, + 0x6D2B, 0xACAE, 0x6D2C, 0xCFA9, 0x6D2D, 0xCF6F, 0x6D2E, 0xACAB, 0x6D2F, 0xD25E, 0x6D30, 0xCD48, 0x6D31, 0xAC7C, 0x6D32, 0xAC77, + 0x6D33, 0xCF76, 0x6D34, 0xCF6E, 0x6D35, 0xACAC, 0x6D36, 0xACA4, 0x6D37, 0xCFA3, 0x6D38, 0xACA9, 0x6D39, 0xACA7, 0x6D3A, 0xCF79, + 0x6D3B, 0xACA1, 0x6D3C, 0xCF71, 0x6D3D, 0xACA2, 0x6D3E, 0xACA3, 0x6D3F, 0xCF72, 0x6D40, 0xCFA6, 0x6D41, 0xAC79, 0x6D42, 0xCF7E, + 0x6D58, 0xD24C, 0x6D59, 0xAEFD, 0x6D5A, 0xAF43, 0x6D5E, 0xD255, 0x6D5F, 0xD25B, 0x6D60, 0xD257, 0x6D61, 0xD24A, 0x6D62, 0xD24D, + 0x6D63, 0xD246, 0x6D64, 0xD247, 0x6D65, 0xAF4A, 0x6D66, 0xAEFA, 0x6D67, 0xD256, 0x6D68, 0xD25F, 0x6D69, 0xAF45, 0x6D6A, 0xAEF6, + 0x6D6C, 0xAF40, 0x6D6D, 0xD24E, 0x6D6E, 0xAF42, 0x6D6F, 0xD24F, 0x6D70, 0xD259, 0x6D74, 0xAF44, 0x6D75, 0xD268, 0x6D76, 0xD248, + 0x6D77, 0xAEFC, 0x6D78, 0xAEFB, 0x6D79, 0xAF48, 0x6D7A, 0xD245, 0x6D7B, 0xD266, 0x6D7C, 0xD25A, 0x6D7D, 0xD267, 0x6D7E, 0xD261, + 0x6D7F, 0xD253, 0x6D80, 0xD262, 0x6D82, 0xD25C, 0x6D83, 0xD265, 0x6D84, 0xD263, 0x6D85, 0xAF49, 0x6D86, 0xD254, 0x6D87, 0xAEF9, + 0x6D88, 0xAEF8, 0x6D89, 0xAF41, 0x6D8A, 0xAF47, 0x6D8B, 0xD260, 0x6D8C, 0xAF46, 0x6D8D, 0xD251, 0x6D8E, 0xB243, 0x6D90, 0xD269, + 0x6D91, 0xD250, 0x6D92, 0xD24B, 0x6D93, 0xAEFE, 0x6D94, 0xAF4B, 0x6D95, 0xAEF7, 0x6D97, 0xD258, 0x6D98, 0xD25D, 0x6DAA, 0xB265, + 0x6DAB, 0xD5E1, 0x6DAC, 0xD5E5, 0x6DAE, 0xB252, 0x6DAF, 0xB250, 0x6DB2, 0xB247, 0x6DB3, 0xD5E3, 0x6DB4, 0xD5E2, 0x6DB5, 0xB25B, + 0x6DB7, 0xD5E8, 0x6DB8, 0xB255, 0x6DBA, 0xD5FA, 0x6DBB, 0xD647, 0x6DBC, 0xB244, 0x6DBD, 0xD5F7, 0x6DBE, 0xD5F0, 0x6DBF, 0xB267, + 0x6DC0, 0xD5E0, 0x6DC2, 0xD5FC, 0x6DC4, 0xB264, 0x6DC5, 0xB258, 0x6DC6, 0xB263, 0x6DC7, 0xB24E, 0x6DC8, 0xD5EC, 0x6DC9, 0xD5FE, + 0x6DCA, 0xD5F6, 0x6DCB, 0xB24F, 0x6DCC, 0xB249, 0x6DCD, 0xD645, 0x6DCF, 0xD5FD, 0x6DD0, 0xD640, 0x6DD1, 0xB251, 0x6DD2, 0xB259, + 0x6DD3, 0xD642, 0x6DD4, 0xD5EA, 0x6DD5, 0xD5FB, 0x6DD6, 0xD5EF, 0x6DD7, 0xD644, 0x6DD8, 0xB25E, 0x6DD9, 0xB246, 0x6DDA, 0xB25C, + 0x6DDB, 0xD5F4, 0x6DDC, 0xD5F2, 0x6DDD, 0xD5F3, 0x6DDE, 0xB253, 0x6DDF, 0xD5EE, 0x6DE0, 0xD5ED, 0x6DE1, 0xB248, 0x6DE2, 0xD5E7, + 0x6DE3, 0xD646, 0x6DE4, 0xB24A, 0x6DE5, 0xD5F1, 0x6DE6, 0xB268, 0x6DE8, 0xB262, 0x6DE9, 0xD5E6, 0x6DEA, 0xB25F, 0x6DEB, 0xB25D, + 0x6DEC, 0xB266, 0x6DED, 0xD5F8, 0x6DEE, 0xB261, 0x6DEF, 0xD252, 0x6DF0, 0xD5F9, 0x6DF1, 0xB260, 0x6DF2, 0xD641, 0x6DF3, 0xB245, + 0x6DF4, 0xD5F5, 0x6DF5, 0xB257, 0x6DF6, 0xD5E9, 0x6DF7, 0xB256, 0x6DF9, 0xB254, 0x6DFA, 0xB24C, 0x6DFB, 0xB24B, 0x6DFC, 0xD9E7, + 0x6DFD, 0xD643, 0x6E00, 0xD5EB, 0x6E03, 0xD9FC, 0x6E05, 0xB24D, 0x6E19, 0xB541, 0x6E1A, 0xB25A, 0x6E1B, 0xB4EE, 0x6E1C, 0xD9F6, + 0x6E1D, 0xB4FC, 0x6E1F, 0xD9EA, 0x6E20, 0xB4EB, 0x6E21, 0xB4E7, 0x6E22, 0xDA49, 0x6E23, 0xB4ED, 0x6E24, 0xB4F1, 0x6E25, 0xB4EC, + 0x6E26, 0xB4F5, 0x6E27, 0xDA4D, 0x6E28, 0xDA44, 0x6E2B, 0xD9F1, 0x6E2C, 0xB4FA, 0x6E2D, 0xB4F4, 0x6E2E, 0xD9FD, 0x6E2F, 0xB4E4, + 0x6E30, 0xDA4A, 0x6E31, 0xDA43, 0x6E32, 0xB4E8, 0x6E33, 0xD9F7, 0x6E34, 0xB4F7, 0x6E35, 0xDA55, 0x6E36, 0xDA56, 0x6E38, 0xB4E5, + 0x6E39, 0xDA48, 0x6E3A, 0xB4F9, 0x6E3B, 0xD9FB, 0x6E3C, 0xD9ED, 0x6E3D, 0xD9EE, 0x6E3E, 0xB4FD, 0x6E3F, 0xD9F2, 0x6E40, 0xD9F9, + 0x6E41, 0xD9F3, 0x6E43, 0xB4FB, 0x6E44, 0xB544, 0x6E45, 0xD9EF, 0x6E46, 0xD9E8, 0x6E47, 0xD9E9, 0x6E49, 0xD9EB, 0x6E4A, 0xB4EA, + 0x6E4B, 0xD9F8, 0x6E4D, 0xB4F8, 0x6E4E, 0xB542, 0x6E51, 0xD9FA, 0x6E52, 0xDA53, 0x6E53, 0xDA4B, 0x6E54, 0xB4E6, 0x6E55, 0xDA51, + 0x6E56, 0xB4F2, 0x6E58, 0xB4F0, 0x6E5A, 0xDA57, 0x6E5B, 0xB4EF, 0x6E5C, 0xDA41, 0x6E5D, 0xD9F4, 0x6E5E, 0xD9FE, 0x6E5F, 0xB547, + 0x6E60, 0xDA45, 0x6E61, 0xDA42, 0x6E62, 0xD9F0, 0x6E63, 0xB543, 0x6E64, 0xDA4F, 0x6E65, 0xDA4C, 0x6E66, 0xDA54, 0x6E67, 0xB4E9, + 0x6E68, 0xDA40, 0x6E69, 0xB546, 0x6E6B, 0xDA47, 0x6E6E, 0xB4F3, 0x6E6F, 0xB4F6, 0x6E71, 0xDA46, 0x6E72, 0xB545, 0x6E73, 0xD9F5, + 0x6E74, 0xD5E4, 0x6E77, 0xDA50, 0x6E78, 0xDA4E, 0x6E79, 0xDA52, 0x6E88, 0xD9EC, 0x6E89, 0xB540, 0x6E8D, 0xDE61, 0x6E8E, 0xDE60, + 0x6E8F, 0xDE46, 0x6E90, 0xB7BD, 0x6E92, 0xDE5F, 0x6E93, 0xDE49, 0x6E94, 0xDE4A, 0x6E96, 0xB7C7, 0x6E97, 0xDE68, 0x6E98, 0xB7C2, + 0x6E99, 0xDE5E, 0x6E9B, 0xDE43, 0x6E9C, 0xB7C8, 0x6E9D, 0xB7BE, 0x6E9E, 0xDE52, 0x6E9F, 0xDE48, 0x6EA0, 0xDE4B, 0x6EA1, 0xDE63, + 0x6EA2, 0xB7B8, 0x6EA3, 0xDE6A, 0x6EA4, 0xDE62, 0x6EA5, 0xB7C1, 0x6EA6, 0xDE57, 0x6EA7, 0xB7CC, 0x6EAA, 0xB7CB, 0x6EAB, 0xB7C5, + 0x6EAE, 0xDE69, 0x6EAF, 0xB7B9, 0x6EB0, 0xDE55, 0x6EB1, 0xDE4C, 0x6EB2, 0xDE59, 0x6EB3, 0xDE65, 0x6EB4, 0xB7CD, 0x6EB6, 0xB7BB, + 0x6EB7, 0xDE54, 0x6EB9, 0xDE4D, 0x6EBA, 0xB7C4, 0x6EBC, 0xB7C3, 0x6EBD, 0xDE50, 0x6EBE, 0xDE5A, 0x6EBF, 0xDE64, 0x6EC0, 0xDE47, + 0x6EC1, 0xDE51, 0x6EC2, 0xB7BC, 0x6EC3, 0xDE5B, 0x6EC4, 0xB7C9, 0x6EC5, 0xB7C0, 0x6EC6, 0xDE4E, 0x6EC7, 0xB7BF, 0x6EC8, 0xDE45, + 0x6EC9, 0xDE53, 0x6ECA, 0xDE67, 0x6ECB, 0xB4FE, 0x6ECC, 0xBAB0, 0x6ECD, 0xDE56, 0x6ECE, 0xE26C, 0x6ECF, 0xDE58, 0x6ED0, 0xDE66, + 0x6ED1, 0xB7C6, 0x6ED2, 0xDE4F, 0x6ED3, 0xB7BA, 0x6ED4, 0xB7CA, 0x6ED5, 0xBCF0, 0x6ED6, 0xDE44, 0x6ED8, 0xDE5D, 0x6EDC, 0xDE5C, + 0x6EEB, 0xE2AA, 0x6EEC, 0xBAAD, 0x6EED, 0xE27D, 0x6EEE, 0xE2A4, 0x6EEF, 0xBAA2, 0x6EF1, 0xE26E, 0x6EF2, 0xBAAF, 0x6EF4, 0xBA77, + 0x6EF5, 0xE26D, 0x6EF6, 0xE2B0, 0x6EF7, 0xBAB1, 0x6EF8, 0xE271, 0x6EF9, 0xE2A3, 0x6EFB, 0xE273, 0x6EFC, 0xE2B3, 0x6EFD, 0xE2AF, + 0x6EFE, 0xBA75, 0x6EFF, 0xBAA1, 0x6F00, 0xE653, 0x6F01, 0xBAAE, 0x6F02, 0xBA7D, 0x6F03, 0xE26F, 0x6F05, 0xE2AE, 0x6F06, 0xBAA3, + 0x6F07, 0xE2AB, 0x6F08, 0xE2B8, 0x6F09, 0xE275, 0x6F0A, 0xE27E, 0x6F0D, 0xE2B6, 0x6F0E, 0xE2AC, 0x6F0F, 0xBA7C, 0x6F12, 0xE27C, + 0x6F13, 0xBA76, 0x6F14, 0xBA74, 0x6F15, 0xBAA8, 0x6F18, 0xE27A, 0x6F19, 0xE277, 0x6F1A, 0xE278, 0x6F1C, 0xE2B2, 0x6F1E, 0xE2B7, + 0x6F1F, 0xE2B5, 0x6F20, 0xBA7A, 0x6F21, 0xE2B9, 0x6F22, 0xBA7E, 0x6F23, 0xBAA7, 0x6F25, 0xE270, 0x6F26, 0xE5FA, 0x6F27, 0xE279, + 0x6F29, 0xBA78, 0x6F2A, 0xBAAC, 0x6F2B, 0xBAA9, 0x6F2C, 0xBA7B, 0x6F2D, 0xE2A5, 0x6F2E, 0xE274, 0x6F2F, 0xBAAA, 0x6F30, 0xE2A7, + 0x6F31, 0xBAA4, 0x6F32, 0xBAA6, 0x6F33, 0xBA73, 0x6F35, 0xE2A9, 0x6F36, 0xE2A1, 0x6F37, 0xE272, 0x6F38, 0xBAA5, 0x6F39, 0xE2B1, + 0x6F3A, 0xE2B4, 0x6F3B, 0xE27B, 0x6F3C, 0xE2A8, 0x6F3E, 0xBA79, 0x6F3F, 0xBCDF, 0x6F40, 0xE2A6, 0x6F41, 0xE5F9, 0x6F43, 0xE2AD, + 0x6F4E, 0xE276, 0x6F4F, 0xE644, 0x6F50, 0xE64E, 0x6F51, 0xBCE2, 0x6F52, 0xE64D, 0x6F53, 0xE659, 0x6F54, 0xBCE4, 0x6F55, 0xE64B, + 0x6F57, 0xE64F, 0x6F58, 0xBCEF, 0x6F5A, 0xE646, 0x6F5B, 0xBCE7, 0x6F5D, 0xE652, 0x6F5E, 0xE9F0, 0x6F5F, 0xBCF3, 0x6F60, 0xBCF2, + 0x6F61, 0xE654, 0x6F62, 0xE643, 0x6F63, 0xE65E, 0x6F64, 0xBCED, 0x6F66, 0xBCE3, 0x6F67, 0xE657, 0x6F69, 0xE65B, 0x6F6A, 0xE660, + 0x6F6B, 0xE655, 0x6F6C, 0xE649, 0x6F6D, 0xBCE6, 0x6F6E, 0xBCE9, 0x6F6F, 0xBCF1, 0x6F70, 0xBCEC, 0x6F72, 0xE64C, 0x6F73, 0xE2A2, + 0x6F76, 0xE648, 0x6F77, 0xE65F, 0x6F78, 0xBCE8, 0x6F7A, 0xBCEB, 0x6F7B, 0xE661, 0x6F7C, 0xBCE0, 0x6F7D, 0xE656, 0x6F7E, 0xE5FB, + 0x6F7F, 0xE65C, 0x6F80, 0xC0DF, 0x6F82, 0xE64A, 0x6F84, 0xBCE1, 0x6F85, 0xE645, 0x6F86, 0xBCE5, 0x6F87, 0xE5FC, 0x6F88, 0xBAAB, + 0x6F89, 0xE641, 0x6F8B, 0xE65A, 0x6F8C, 0xE642, 0x6F8D, 0xE640, 0x6F8E, 0xBCEA, 0x6F90, 0xE658, 0x6F92, 0xE5FE, 0x6F93, 0xE651, + 0x6F94, 0xE650, 0x6F95, 0xE65D, 0x6F96, 0xE647, 0x6F97, 0xBCEE, 0x6F9E, 0xE9F3, 0x6FA0, 0xBF49, 0x6FA1, 0xBEFE, 0x6FA2, 0xEA40, + 0x6FA3, 0xE9EB, 0x6FA4, 0xBF41, 0x6FA5, 0xE9F7, 0x6FA6, 0xBF48, 0x6FA7, 0xBF43, 0x6FA8, 0xE9F5, 0x6FA9, 0xED4F, 0x6FAA, 0xE9FB, + 0x6FAB, 0xEA42, 0x6FAC, 0xE9FA, 0x6FAD, 0xE9E9, 0x6FAE, 0xE9F8, 0x6FAF, 0xEA44, 0x6FB0, 0xEA46, 0x6FB1, 0xBEFD, 0x6FB2, 0xEA45, + 0x6FB3, 0xBF44, 0x6FB4, 0xBF4A, 0x6FB6, 0xBF47, 0x6FB8, 0xE9FE, 0x6FB9, 0xBF46, 0x6FBA, 0xE9F9, 0x6FBC, 0xE9ED, 0x6FBD, 0xE9F2, + 0x6FBF, 0xE9FD, 0x6FC0, 0xBF45, 0x6FC1, 0xBF42, 0x6FC2, 0xBEFC, 0x6FC3, 0xBF40, 0x6FC4, 0xE9F1, 0x6FC6, 0xE5FD, 0x6FC7, 0xE9EC, + 0x6FC8, 0xE9EF, 0x6FC9, 0xEA41, 0x6FCA, 0xE9F4, 0x6FCB, 0xE9EA, 0x6FCC, 0xED4E, 0x6FCD, 0xEA43, 0x6FCE, 0xE9EE, 0x6FCF, 0xE9FC, + 0x6FD4, 0xED51, 0x6FD5, 0xC0E3, 0x6FD8, 0xC0D7, 0x6FDB, 0xC0DB, 0x6FDC, 0xED53, 0x6FDD, 0xED59, 0x6FDE, 0xED57, 0x6FDF, 0xC0D9, + 0x6FE0, 0xC0DA, 0x6FE1, 0xC0E1, 0x6FE2, 0xED5A, 0x6FE3, 0xED52, 0x6FE4, 0xC0DC, 0x6FE6, 0xED56, 0x6FE7, 0xED55, 0x6FE8, 0xED5B, + 0x6FE9, 0xC0E2, 0x6FEB, 0xC0DD, 0x6FEC, 0xC0E0, 0x6FED, 0xED54, 0x6FEE, 0xC0E4, 0x6FEF, 0xC0DE, 0x6FF0, 0xC0E5, 0x6FF1, 0xC0D8, + 0x6FF2, 0xED58, 0x6FF4, 0xED50, 0x6FF7, 0xEFF7, 0x6FFA, 0xC271, 0x6FFB, 0xEFF4, 0x6FFC, 0xEFF6, 0x6FFE, 0xC26F, 0x6FFF, 0xEFF2, + 0x7000, 0xEFF3, 0x7001, 0xEFEE, 0x7004, 0xE9F6, 0x7005, 0xEFEF, 0x7006, 0xC270, 0x7007, 0xEFEB, 0x7009, 0xC26D, 0x700A, 0xEFF8, + 0x700B, 0xC26E, 0x700C, 0xEFEC, 0x700D, 0xEFED, 0x700E, 0xEFF1, 0x700F, 0xC273, 0x7011, 0xC272, 0x7014, 0xEFF0, 0x7015, 0xC378, + 0x7016, 0xF25F, 0x7017, 0xF265, 0x7018, 0xC379, 0x7019, 0xF25C, 0x701A, 0xC376, 0x701B, 0xC373, 0x701C, 0xF267, 0x701D, 0xC377, + 0x701F, 0xC374, 0x7020, 0xF25E, 0x7021, 0xF261, 0x7022, 0xF262, 0x7023, 0xF263, 0x7024, 0xF266, 0x7026, 0xEFF5, 0x7027, 0xF25D, + 0x7028, 0xC375, 0x7029, 0xF264, 0x702A, 0xF268, 0x702B, 0xF260, 0x702F, 0xF45D, 0x7030, 0xC46A, 0x7031, 0xF460, 0x7032, 0xC46B, + 0x7033, 0xF468, 0x7034, 0xF45F, 0x7035, 0xF45C, 0x7037, 0xF45E, 0x7038, 0xF462, 0x7039, 0xF465, 0x703A, 0xF464, 0x703B, 0xF467, + 0x703C, 0xF45B, 0x703E, 0xC469, 0x703F, 0xF463, 0x7040, 0xF466, 0x7041, 0xF469, 0x7042, 0xF461, 0x7043, 0xF5D3, 0x7044, 0xF5D4, + 0x7045, 0xF5D8, 0x7046, 0xF5D9, 0x7048, 0xF5D6, 0x7049, 0xF5D7, 0x704A, 0xF5D5, 0x704C, 0xC4E9, 0x7051, 0xC578, 0x7052, 0xF6EB, + 0x7055, 0xF6E8, 0x7056, 0xF6E9, 0x7057, 0xF6EA, 0x7058, 0xC579, 0x705A, 0xF7E5, 0x705B, 0xF7E4, 0x705D, 0xF8AF, 0x705E, 0xC5F4, + 0x705F, 0xF8AD, 0x7060, 0xF8B0, 0x7061, 0xF8AE, 0x7062, 0xF8F5, 0x7063, 0xC657, 0x7064, 0xC665, 0x7065, 0xF9A3, 0x7066, 0xF96C, + 0x7068, 0xF9A2, 0x7069, 0xF9D0, 0x706A, 0xF9D1, 0x706B, 0xA4F5, 0x7070, 0xA6C7, 0x7071, 0xCA41, 0x7074, 0xCB5E, 0x7076, 0xA85F, + 0x7078, 0xA862, 0x707A, 0xCB5F, 0x707C, 0xA860, 0x707D, 0xA861, 0x7082, 0xCD58, 0x7083, 0xCD5A, 0x7084, 0xCD55, 0x7085, 0xCD52, + 0x7086, 0xCD54, 0x708A, 0xAAA4, 0x708E, 0xAAA2, 0x7091, 0xCD56, 0x7092, 0xAAA3, 0x7093, 0xCD53, 0x7094, 0xCD50, 0x7095, 0xAAA1, + 0x7096, 0xCD57, 0x7098, 0xCD51, 0x7099, 0xAAA5, 0x709A, 0xCD59, 0x709F, 0xCFAF, 0x70A1, 0xCFB3, 0x70A4, 0xACB7, 0x70A9, 0xCFB6, + 0x70AB, 0xACAF, 0x70AC, 0xACB2, 0x70AD, 0xACB4, 0x70AE, 0xACB6, 0x70AF, 0xACB3, 0x70B0, 0xCFB2, 0x70B1, 0xCFB1, 0x70B3, 0xACB1, + 0x70B4, 0xCFB4, 0x70B5, 0xCFB5, 0x70B7, 0xCFAE, 0x70B8, 0xACB5, 0x70BA, 0xACB0, 0x70BE, 0xCFB0, 0x70C5, 0xD277, 0x70C6, 0xD278, + 0x70C7, 0xD279, 0x70C8, 0xAF50, 0x70CA, 0xAF4C, 0x70CB, 0xD26E, 0x70CD, 0xD276, 0x70CE, 0xD27B, 0x70CF, 0xAF51, 0x70D1, 0xD26C, + 0x70D2, 0xD272, 0x70D3, 0xD26B, 0x70D4, 0xD275, 0x70D7, 0xD271, 0x70D8, 0xAF4D, 0x70D9, 0xAF4F, 0x70DA, 0xD27A, 0x70DC, 0xD26A, + 0x70DD, 0xD26D, 0x70DE, 0xD273, 0x70E0, 0xD274, 0x70E1, 0xD27C, 0x70E2, 0xD270, 0x70E4, 0xAF4E, 0x70EF, 0xB26D, 0x70F0, 0xD64E, + 0x70F3, 0xD650, 0x70F4, 0xD64C, 0x70F6, 0xD658, 0x70F7, 0xD64A, 0x70F8, 0xD657, 0x70F9, 0xB269, 0x70FA, 0xD648, 0x70FB, 0xDA5B, + 0x70FC, 0xD652, 0x70FD, 0xB26C, 0x70FF, 0xD653, 0x7100, 0xD656, 0x7102, 0xD65A, 0x7104, 0xD64F, 0x7106, 0xD654, 0x7109, 0xB26A, + 0x710A, 0xB26B, 0x710B, 0xD659, 0x710C, 0xD64D, 0x710D, 0xD649, 0x710E, 0xD65B, 0x7110, 0xD651, 0x7113, 0xD655, 0x7117, 0xD64B, + 0x7119, 0xB548, 0x711A, 0xB549, 0x711B, 0xDA65, 0x711C, 0xB54F, 0x711E, 0xDA59, 0x711F, 0xDA62, 0x7120, 0xDA58, 0x7121, 0xB54C, + 0x7122, 0xDA60, 0x7123, 0xDA5E, 0x7125, 0xDA5F, 0x7126, 0xB54A, 0x7128, 0xDA63, 0x712E, 0xDA5C, 0x712F, 0xDA5A, 0x7130, 0xB54B, + 0x7131, 0xDA5D, 0x7132, 0xDA61, 0x7136, 0xB54D, 0x713A, 0xDA64, 0x7141, 0xDE70, 0x7142, 0xDE77, 0x7143, 0xDE79, 0x7144, 0xDEA1, + 0x7146, 0xB7DA, 0x7147, 0xDE6B, 0x7149, 0xB7D2, 0x714B, 0xDE7A, 0x714C, 0xB7D7, 0x714D, 0xDEA2, 0x714E, 0xB7CE, 0x7150, 0xDE7D, + 0x7152, 0xDE6D, 0x7153, 0xDE7E, 0x7154, 0xDE6C, 0x7156, 0xB7DC, 0x7158, 0xDE78, 0x7159, 0xB7CF, 0x715A, 0xDEA3, 0x715C, 0xB7D4, + 0x715D, 0xDE71, 0x715E, 0xB7D9, 0x715F, 0xDE7C, 0x7160, 0xDE6F, 0x7161, 0xDE76, 0x7162, 0xDE72, 0x7163, 0xDE6E, 0x7164, 0xB7D1, + 0x7165, 0xB7D8, 0x7166, 0xB7D6, 0x7167, 0xB7D3, 0x7168, 0xB7DB, 0x7169, 0xB7D0, 0x716A, 0xDE75, 0x716C, 0xB7D5, 0x716E, 0xB54E, + 0x7170, 0xDE7B, 0x7172, 0xDE73, 0x7178, 0xDE74, 0x717B, 0xE2C1, 0x717D, 0xBAB4, 0x7180, 0xE2BD, 0x7181, 0xE2C3, 0x7182, 0xE2BF, + 0x7184, 0xBAB6, 0x7185, 0xE2BE, 0x7186, 0xE2C2, 0x7187, 0xE2BA, 0x7189, 0xE2BC, 0x718A, 0xBAB5, 0x718F, 0xE2C0, 0x7190, 0xE2BB, + 0x7192, 0xBAB7, 0x7194, 0xBAB2, 0x7197, 0xE2C4, 0x7199, 0xBAB3, 0x719A, 0xE667, 0x719B, 0xE664, 0x719C, 0xE670, 0x719D, 0xE66A, + 0x719E, 0xE66C, 0x719F, 0xBCF4, 0x71A0, 0xE666, 0x71A1, 0xE66E, 0x71A4, 0xE66D, 0x71A5, 0xE66B, 0x71A7, 0xE671, 0x71A8, 0xBCF7, + 0x71A9, 0xE668, 0x71AA, 0xE66F, 0x71AC, 0xBCF5, 0x71AF, 0xE663, 0x71B0, 0xE665, 0x71B1, 0xBCF6, 0x71B2, 0xE662, 0x71B3, 0xE672, + 0x71B5, 0xE669, 0x71B8, 0xEA4A, 0x71B9, 0xBF51, 0x71BC, 0xEA55, 0x71BD, 0xEA53, 0x71BE, 0xBF4B, 0x71BF, 0xEA49, 0x71C0, 0xEA4C, + 0x71C1, 0xEA4D, 0x71C2, 0xEA48, 0x71C3, 0xBF55, 0x71C4, 0xBF56, 0x71C5, 0xEA47, 0x71C6, 0xEA56, 0x71C7, 0xEA51, 0x71C8, 0xBF4F, + 0x71C9, 0xBF4C, 0x71CA, 0xEA50, 0x71CB, 0xEA4E, 0x71CE, 0xBF52, 0x71CF, 0xEA52, 0x71D0, 0xBF4D, 0x71D2, 0xBF4E, 0x71D4, 0xEA4F, + 0x71D5, 0xBF50, 0x71D6, 0xEA4B, 0x71D8, 0xEA54, 0x71D9, 0xBF53, 0x71DA, 0xEA57, 0x71DB, 0xEA58, 0x71DC, 0xBF54, 0x71DF, 0xC0E7, + 0x71E0, 0xC0EE, 0x71E1, 0xED5C, 0x71E2, 0xED62, 0x71E4, 0xED60, 0x71E5, 0xC0EA, 0x71E6, 0xC0E9, 0x71E7, 0xC0E6, 0x71E8, 0xED5E, + 0x71EC, 0xC0EC, 0x71ED, 0xC0EB, 0x71EE, 0xC0E8, 0x71F0, 0xED61, 0x71F1, 0xED5D, 0x71F2, 0xED5F, 0x71F4, 0xC0ED, 0x71F8, 0xC277, + 0x71F9, 0xEFFB, 0x71FB, 0xC274, 0x71FC, 0xC275, 0x71FD, 0xEFFD, 0x71FE, 0xC276, 0x71FF, 0xEFFA, 0x7201, 0xEFF9, 0x7202, 0xF26C, + 0x7203, 0xEFFC, 0x7205, 0xF26D, 0x7206, 0xC37A, 0x7207, 0xF26B, 0x720A, 0xF26A, 0x720C, 0xF269, 0x720D, 0xC37B, 0x7210, 0xC46C, + 0x7213, 0xF46A, 0x7214, 0xF46B, 0x7219, 0xF5DC, 0x721A, 0xF5DB, 0x721B, 0xC4EA, 0x721D, 0xF5DA, 0x721E, 0xF6EC, 0x721F, 0xF6ED, + 0x7222, 0xF7E6, 0x7223, 0xF8B1, 0x7226, 0xF8F6, 0x7227, 0xF9BC, 0x7228, 0xC679, 0x7229, 0xF9C6, 0x722A, 0xA4F6, 0x722C, 0xAAA6, + 0x722D, 0xAAA7, 0x7230, 0xACB8, 0x7235, 0xC0EF, 0x7236, 0xA4F7, 0x7238, 0xAAA8, 0x7239, 0xAF52, 0x723A, 0xB7DD, 0x723B, 0xA4F8, + 0x723D, 0xB26E, 0x723E, 0xBAB8, 0x723F, 0xC962, 0x7241, 0xCFB7, 0x7242, 0xD27D, 0x7244, 0xE2C5, 0x7246, 0xC0F0, 0x7247, 0xA4F9, + 0x7248, 0xAAA9, 0x7249, 0xCFB8, 0x724A, 0xCFB9, 0x724B, 0xDA66, 0x724C, 0xB550, 0x724F, 0xDEA4, 0x7252, 0xB7DE, 0x7253, 0xE2C6, + 0x7256, 0xBCF8, 0x7258, 0xC37C, 0x7259, 0xA4FA, 0x725A, 0xDA67, 0x725B, 0xA4FB, 0x725D, 0xA6C9, 0x725E, 0xCA42, 0x725F, 0xA6C8, + 0x7260, 0xA865, 0x7261, 0xA864, 0x7262, 0xA863, 0x7263, 0xCB60, 0x7267, 0xAAAA, 0x7269, 0xAAAB, 0x726A, 0xCD5B, 0x726C, 0xCFBA, + 0x726E, 0xCFBD, 0x726F, 0xACBA, 0x7270, 0xCFBB, 0x7272, 0xACB9, 0x7273, 0xCFBC, 0x7274, 0xACBB, 0x7276, 0xD2A2, 0x7277, 0xD2A1, + 0x7278, 0xD27E, 0x7279, 0xAF53, 0x727B, 0xD65D, 0x727C, 0xD65E, 0x727D, 0xB26F, 0x727E, 0xD65C, 0x727F, 0xD65F, 0x7280, 0xB552, + 0x7281, 0xB270, 0x7284, 0xB551, 0x7285, 0xDA6B, 0x7286, 0xDA6A, 0x7288, 0xDA68, 0x7289, 0xDA69, 0x728B, 0xDA6C, 0x728C, 0xDEA6, + 0x728D, 0xDEA5, 0x728E, 0xDEA9, 0x7290, 0xDEA8, 0x7291, 0xDEA7, 0x7292, 0xBAB9, 0x7293, 0xE2C9, 0x7295, 0xE2C8, 0x7296, 0xBABA, + 0x7297, 0xE2C7, 0x7298, 0xE673, 0x729A, 0xE674, 0x729B, 0xBCF9, 0x729D, 0xEA59, 0x729E, 0xEA5A, 0x72A1, 0xF272, 0x72A2, 0xC37D, + 0x72A3, 0xF271, 0x72A4, 0xF270, 0x72A5, 0xF26E, 0x72A6, 0xF26F, 0x72A7, 0xC4EB, 0x72A8, 0xF46C, 0x72A9, 0xF6EE, 0x72AA, 0xF8F7, + 0x72AC, 0xA4FC, 0x72AE, 0xC9A5, 0x72AF, 0xA5C7, 0x72B0, 0xC9A6, 0x72B4, 0xCA43, 0x72B5, 0xCA44, 0x72BA, 0xCB66, 0x72BD, 0xCB62, + 0x72BF, 0xCB61, 0x72C0, 0xAAAC, 0x72C1, 0xCB65, 0x72C2, 0xA867, 0x72C3, 0xCB63, 0x72C4, 0xA866, 0x72C5, 0xCB67, 0x72C6, 0xCB64, + 0x72C9, 0xCD5F, 0x72CA, 0xCFBE, 0x72CB, 0xCD5D, 0x72CC, 0xCD64, 0x72CE, 0xAAAD, 0x72D0, 0xAAB0, 0x72D1, 0xCD65, 0x72D2, 0xCD61, + 0x72D4, 0xCD62, 0x72D6, 0xCD5C, 0x72D7, 0xAAAF, 0x72D8, 0xCD5E, 0x72D9, 0xAAAE, 0x72DA, 0xCD63, 0x72DC, 0xCD60, 0x72DF, 0xCFC2, + 0x72E0, 0xACBD, 0x72E1, 0xACBE, 0x72E3, 0xCFC5, 0x72E4, 0xCFBF, 0x72E6, 0xCFC4, 0x72E8, 0xCFC0, 0x72E9, 0xACBC, 0x72EA, 0xCFC3, + 0x72EB, 0xCFC1, 0x72F3, 0xD2A8, 0x72F4, 0xD2A5, 0x72F6, 0xD2A7, 0x72F7, 0xAF58, 0x72F8, 0xAF57, 0x72F9, 0xAF55, 0x72FA, 0xD2A4, + 0x72FB, 0xD2A9, 0x72FC, 0xAF54, 0x72FD, 0xAF56, 0x72FE, 0xD2A6, 0x72FF, 0xD667, 0x7300, 0xD2A3, 0x7301, 0xD2AA, 0x7307, 0xD662, + 0x7308, 0xD666, 0x730A, 0xD665, 0x730B, 0xDA6E, 0x730C, 0xDA79, 0x730F, 0xD668, 0x7311, 0xD663, 0x7312, 0xDA6D, 0x7313, 0xB274, + 0x7316, 0xB273, 0x7317, 0xD661, 0x7318, 0xD664, 0x7319, 0xB275, 0x731B, 0xB272, 0x731C, 0xB271, 0x731D, 0xD660, 0x731E, 0xD669, + 0x7322, 0xDA70, 0x7323, 0xDA77, 0x7325, 0xB554, 0x7326, 0xDA76, 0x7327, 0xDA73, 0x7329, 0xB556, 0x732D, 0xDA75, 0x7330, 0xDA6F, + 0x7331, 0xDA71, 0x7332, 0xDA74, 0x7333, 0xDA72, 0x7334, 0xB555, 0x7335, 0xDA78, 0x7336, 0xB553, 0x7337, 0xB7DF, 0x733A, 0xDEAD, + 0x733B, 0xDEAC, 0x733C, 0xDEAA, 0x733E, 0xB7E2, 0x733F, 0xB7E1, 0x7340, 0xDEAE, 0x7342, 0xDEAB, 0x7343, 0xE2CA, 0x7344, 0xBABB, + 0x7345, 0xB7E0, 0x7349, 0xDEB0, 0x734A, 0xDEAF, 0x734C, 0xE2CD, 0x734D, 0xE2CB, 0x734E, 0xBCFA, 0x7350, 0xBABC, 0x7351, 0xE2CC, + 0x7352, 0xE676, 0x7357, 0xBCFB, 0x7358, 0xE675, 0x7359, 0xE67E, 0x735A, 0xE67D, 0x735B, 0xE67B, 0x735D, 0xE67A, 0x735E, 0xE677, + 0x735F, 0xE678, 0x7360, 0xE679, 0x7361, 0xE67C, 0x7362, 0xE6A1, 0x7365, 0xEA5F, 0x7366, 0xEA5C, 0x7367, 0xEA5D, 0x7368, 0xBF57, + 0x7369, 0xEA5B, 0x736A, 0xEA61, 0x736B, 0xEA60, 0x736C, 0xEA5E, 0x736E, 0xED64, 0x736F, 0xED65, 0x7370, 0xC0F1, 0x7372, 0xC0F2, + 0x7373, 0xED63, 0x7375, 0xC279, 0x7376, 0xEFFE, 0x7377, 0xC278, 0x7378, 0xC37E, 0x737A, 0xC3A1, 0x737B, 0xC46D, 0x737C, 0xF46E, + 0x737D, 0xF46D, 0x737E, 0xF5DD, 0x737F, 0xF6EF, 0x7380, 0xC57A, 0x7381, 0xF7E8, 0x7382, 0xF7E7, 0x7383, 0xF7E9, 0x7384, 0xA5C8, + 0x7385, 0xCFC6, 0x7386, 0xAF59, 0x7387, 0xB276, 0x7388, 0xD66A, 0x7389, 0xA5C9, 0x738A, 0xC9A7, 0x738B, 0xA4FD, 0x738E, 0xCA45, + 0x7392, 0xCB6C, 0x7393, 0xCB6A, 0x7394, 0xCB6B, 0x7395, 0xCB68, 0x7396, 0xA868, 0x7397, 0xCB69, 0x739D, 0xCD6D, 0x739F, 0xAAB3, + 0x73A0, 0xCD6B, 0x73A1, 0xCD67, 0x73A2, 0xCD6A, 0x73A4, 0xCD66, 0x73A5, 0xAAB5, 0x73A6, 0xCD69, 0x73A8, 0xAAB2, 0x73A9, 0xAAB1, + 0x73AB, 0xAAB4, 0x73AC, 0xCD6C, 0x73AD, 0xCD68, 0x73B2, 0xACC2, 0x73B3, 0xACC5, 0x73B4, 0xCFCE, 0x73B5, 0xCFCD, 0x73B6, 0xCFCC, + 0x73B7, 0xACBF, 0x73B8, 0xCFD5, 0x73B9, 0xCFCB, 0x73BB, 0xACC1, 0x73BC, 0xD2AF, 0x73BE, 0xCFD2, 0x73BF, 0xCFD0, 0x73C0, 0xACC4, + 0x73C2, 0xCFC8, 0x73C3, 0xCFD3, 0x73C5, 0xCFCA, 0x73C6, 0xCFD4, 0x73C7, 0xCFD1, 0x73C8, 0xCFC9, 0x73CA, 0xACC0, 0x73CB, 0xCFD6, + 0x73CC, 0xCFC7, 0x73CD, 0xACC3, 0x73D2, 0xD2B4, 0x73D3, 0xD2AB, 0x73D4, 0xD2B6, 0x73D6, 0xD2AE, 0x73D7, 0xD2B9, 0x73D8, 0xD2BA, + 0x73D9, 0xD2AC, 0x73DA, 0xD2B8, 0x73DB, 0xD2B5, 0x73DC, 0xD2B3, 0x73DD, 0xD2B7, 0x73DE, 0xAF5F, 0x73E0, 0xAF5D, 0x73E3, 0xD2B1, + 0x73E5, 0xD2AD, 0x73E7, 0xD2B0, 0x73E8, 0xD2BB, 0x73E9, 0xD2B2, 0x73EA, 0xAF5E, 0x73EB, 0xCFCF, 0x73ED, 0xAF5A, 0x73EE, 0xAF5C, + 0x73F4, 0xD678, 0x73F5, 0xD66D, 0x73F6, 0xD66B, 0x73F8, 0xD66C, 0x73FA, 0xD673, 0x73FC, 0xD674, 0x73FD, 0xD670, 0x73FE, 0xB27B, + 0x73FF, 0xD675, 0x7400, 0xD672, 0x7401, 0xD66F, 0x7403, 0xB279, 0x7404, 0xD66E, 0x7405, 0xB277, 0x7406, 0xB27A, 0x7407, 0xD671, + 0x7408, 0xD679, 0x7409, 0xAF5B, 0x740A, 0xB278, 0x740B, 0xD677, 0x740C, 0xD676, 0x740D, 0xB27C, 0x7416, 0xDA7E, 0x741A, 0xDAA1, + 0x741B, 0xB560, 0x741D, 0xDAA7, 0x7420, 0xDAA9, 0x7421, 0xDAA2, 0x7422, 0xB55A, 0x7423, 0xDAA6, 0x7424, 0xDAA5, 0x7425, 0xB55B, + 0x7426, 0xB561, 0x7428, 0xB562, 0x7429, 0xDAA8, 0x742A, 0xB558, 0x742B, 0xDA7D, 0x742C, 0xDA7B, 0x742D, 0xDAA3, 0x742E, 0xDA7A, + 0x742F, 0xB55F, 0x7430, 0xDA7C, 0x7431, 0xDAA4, 0x7432, 0xDAAA, 0x7433, 0xB559, 0x7434, 0xB55E, 0x7435, 0xB55C, 0x7436, 0xB55D, + 0x743A, 0xB557, 0x743F, 0xB7E9, 0x7440, 0xDEB7, 0x7441, 0xB7E8, 0x7442, 0xDEBB, 0x7444, 0xDEB1, 0x7446, 0xDEBC, 0x744A, 0xDEB2, + 0x744B, 0xDEB3, 0x744D, 0xDEBD, 0x744E, 0xDEBA, 0x744F, 0xDEB8, 0x7450, 0xDEB9, 0x7451, 0xDEB5, 0x7452, 0xDEB4, 0x7454, 0xDEBE, + 0x7455, 0xB7E5, 0x7457, 0xDEB6, 0x7459, 0xB7EA, 0x745A, 0xB7E4, 0x745B, 0xB7EB, 0x745C, 0xB7EC, 0x745E, 0xB7E7, 0x745F, 0xB7E6, + 0x7462, 0xE2CE, 0x7463, 0xBABE, 0x7464, 0xBABD, 0x7467, 0xE2D3, 0x7469, 0xBCFC, 0x746A, 0xBABF, 0x746D, 0xBAC1, 0x746E, 0xE2D4, + 0x746F, 0xB7E3, 0x7470, 0xBAC0, 0x7471, 0xE2D0, 0x7472, 0xE2D2, 0x7473, 0xE2CF, 0x7475, 0xE2D1, 0x7479, 0xE6AB, 0x747C, 0xE6AA, + 0x747D, 0xE6A7, 0x747E, 0xBD40, 0x747F, 0xEA62, 0x7480, 0xBD41, 0x7481, 0xE6A6, 0x7483, 0xBCFE, 0x7485, 0xE6A8, 0x7486, 0xE6A5, + 0x7487, 0xE6A2, 0x7488, 0xE6A9, 0x7489, 0xE6A3, 0x748A, 0xE6A4, 0x748B, 0xBCFD, 0x7490, 0xED69, 0x7492, 0xEA66, 0x7494, 0xEA65, + 0x7495, 0xEA67, 0x7497, 0xED66, 0x7498, 0xBF5A, 0x749A, 0xEA63, 0x749C, 0xBF58, 0x749E, 0xBF5C, 0x749F, 0xBF5B, 0x74A0, 0xEA64, + 0x74A1, 0xEA68, 0x74A3, 0xBF59, 0x74A5, 0xED6D, 0x74A6, 0xC0F5, 0x74A7, 0xC27A, 0x74A8, 0xC0F6, 0x74A9, 0xC0F3, 0x74AA, 0xED6A, + 0x74AB, 0xED68, 0x74AD, 0xED6B, 0x74AF, 0xED6E, 0x74B0, 0xC0F4, 0x74B1, 0xED6C, 0x74B2, 0xED67, 0x74B5, 0xF042, 0x74B6, 0xF045, + 0x74B7, 0xF275, 0x74B8, 0xF040, 0x74BA, 0xF46F, 0x74BB, 0xF046, 0x74BD, 0xC3A2, 0x74BE, 0xF044, 0x74BF, 0xC27B, 0x74C0, 0xF041, + 0x74C1, 0xF043, 0x74C2, 0xF047, 0x74C3, 0xF276, 0x74C5, 0xF274, 0x74CA, 0xC3A3, 0x74CB, 0xF273, 0x74CF, 0xC46E, 0x74D4, 0xC4ED, + 0x74D5, 0xF6F1, 0x74D6, 0xC4EC, 0x74D7, 0xF6F3, 0x74D8, 0xF6F0, 0x74D9, 0xF6F2, 0x74DA, 0xC5D0, 0x74DB, 0xF8B2, 0x74DC, 0xA5CA, + 0x74DD, 0xCD6E, 0x74DE, 0xD2BC, 0x74DF, 0xD2BD, 0x74E0, 0xB27D, 0x74E1, 0xDEBF, 0x74E2, 0xBF5D, 0x74E3, 0xC3A4, 0x74E4, 0xC57B, + 0x74E5, 0xF8B3, 0x74E6, 0xA5CB, 0x74E8, 0xCD6F, 0x74E9, 0xA260, 0x74EC, 0xCFD7, 0x74EE, 0xCFD8, 0x74F4, 0xD2BE, 0x74F5, 0xD2BF, + 0x74F6, 0xB27E, 0x74F7, 0xB2A1, 0x74FB, 0xDAAB, 0x74FD, 0xDEC2, 0x74FE, 0xDEC1, 0x74FF, 0xDEC0, 0x7500, 0xE2D5, 0x7502, 0xE2D6, + 0x7503, 0xE2D7, 0x7504, 0xBAC2, 0x7507, 0xE6AD, 0x7508, 0xE6AC, 0x750B, 0xEA69, 0x750C, 0xBF5E, 0x750D, 0xBF5F, 0x750F, 0xED72, + 0x7510, 0xED6F, 0x7511, 0xED70, 0x7512, 0xED71, 0x7513, 0xF049, 0x7514, 0xF048, 0x7515, 0xC27C, 0x7516, 0xF277, 0x7517, 0xF5DE, + 0x7518, 0xA5CC, 0x751A, 0xACC6, 0x751C, 0xB2A2, 0x751D, 0xDEC3, 0x751F, 0xA5CD, 0x7521, 0xD2C0, 0x7522, 0xB2A3, 0x7525, 0xB563, + 0x7526, 0xB564, 0x7528, 0xA5CE, 0x7529, 0xA5CF, 0x752A, 0xCA46, 0x752B, 0xA86A, 0x752C, 0xA869, 0x752D, 0xACC7, 0x752E, 0xCFD9, + 0x752F, 0xDAAC, 0x7530, 0xA5D0, 0x7531, 0xA5D1, 0x7532, 0xA5D2, 0x7533, 0xA5D3, 0x7537, 0xA86B, 0x7538, 0xA86C, 0x7539, 0xCB6E, + 0x753A, 0xCB6D, 0x753D, 0xAAB6, 0x753E, 0xCD72, 0x753F, 0xCD70, 0x7540, 0xCD71, 0x7547, 0xCFDA, 0x7548, 0xCFDB, 0x754B, 0xACCB, + 0x754C, 0xACC9, 0x754E, 0xACCA, 0x754F, 0xACC8, 0x7554, 0xAF60, 0x7559, 0xAF64, 0x755A, 0xAF63, 0x755B, 0xD2C1, 0x755C, 0xAF62, + 0x755D, 0xAF61, 0x755F, 0xD2C2, 0x7562, 0xB2A6, 0x7563, 0xD67B, 0x7564, 0xD67A, 0x7565, 0xB2A4, 0x7566, 0xB2A5, 0x756A, 0xB566, + 0x756B, 0xB565, 0x756C, 0xDAAE, 0x756F, 0xDAAD, 0x7570, 0xB2A7, 0x7576, 0xB7ED, 0x7577, 0xDEC5, 0x7578, 0xB7EE, 0x7579, 0xDEC4, + 0x757D, 0xE2D8, 0x757E, 0xE6AE, 0x757F, 0xBD42, 0x7580, 0xEA6A, 0x7584, 0xED73, 0x7586, 0xC3A6, 0x7587, 0xC3A5, 0x758A, 0xC57C, + 0x758B, 0xA5D4, 0x758C, 0xCD73, 0x758F, 0xB2A8, 0x7590, 0xE2D9, 0x7591, 0xBAC3, 0x7594, 0xCB6F, 0x7595, 0xCB70, 0x7598, 0xCD74, + 0x7599, 0xAAB8, 0x759A, 0xAAB9, 0x759D, 0xAAB7, 0x75A2, 0xACCF, 0x75A3, 0xACD0, 0x75A4, 0xACCD, 0x75A5, 0xACCE, 0x75A7, 0xCFDC, + 0x75AA, 0xCFDD, 0x75AB, 0xACCC, 0x75B0, 0xD2C3, 0x75B2, 0xAF68, 0x75B3, 0xAF69, 0x75B5, 0xB2AB, 0x75B6, 0xD2C9, 0x75B8, 0xAF6E, + 0x75B9, 0xAF6C, 0x75BA, 0xD2CA, 0x75BB, 0xD2C5, 0x75BC, 0xAF6B, 0x75BD, 0xAF6A, 0x75BE, 0xAF65, 0x75BF, 0xD2C8, 0x75C0, 0xD2C7, + 0x75C1, 0xD2C4, 0x75C2, 0xAF6D, 0x75C4, 0xD2C6, 0x75C5, 0xAF66, 0x75C7, 0xAF67, 0x75CA, 0xB2AC, 0x75CB, 0xD6A1, 0x75CC, 0xD6A2, + 0x75CD, 0xB2AD, 0x75CE, 0xD67C, 0x75CF, 0xD67E, 0x75D0, 0xD6A4, 0x75D1, 0xD6A3, 0x75D2, 0xD67D, 0x75D4, 0xB2A9, 0x75D5, 0xB2AA, + 0x75D7, 0xDAB6, 0x75D8, 0xB56B, 0x75D9, 0xB56A, 0x75DA, 0xDAB0, 0x75DB, 0xB568, 0x75DD, 0xDAB3, 0x75DE, 0xB56C, 0x75DF, 0xDAB4, + 0x75E0, 0xB56D, 0x75E1, 0xDAB1, 0x75E2, 0xB567, 0x75E3, 0xB569, 0x75E4, 0xDAB5, 0x75E6, 0xDAB2, 0x75E7, 0xDAAF, 0x75ED, 0xDED2, + 0x75EF, 0xDEC7, 0x75F0, 0xB7F0, 0x75F1, 0xB7F3, 0x75F2, 0xB7F2, 0x75F3, 0xB7F7, 0x75F4, 0xB7F6, 0x75F5, 0xDED3, 0x75F6, 0xDED1, + 0x75F7, 0xDECA, 0x75F8, 0xDECE, 0x75F9, 0xDECD, 0x75FA, 0xB7F4, 0x75FB, 0xDED0, 0x75FC, 0xDECC, 0x75FD, 0xDED4, 0x75FE, 0xDECB, + 0x75FF, 0xB7F5, 0x7600, 0xB7EF, 0x7601, 0xB7F1, 0x7603, 0xDEC9, 0x7608, 0xE2DB, 0x7609, 0xBAC7, 0x760A, 0xE2DF, 0x760B, 0xBAC6, + 0x760C, 0xE2DC, 0x760D, 0xBAC5, 0x760F, 0xDEC8, 0x7610, 0xDECF, 0x7611, 0xE2DE, 0x7613, 0xBAC8, 0x7614, 0xE2E0, 0x7615, 0xE2DD, + 0x7616, 0xE2DA, 0x7619, 0xE6B1, 0x761A, 0xE6B5, 0x761B, 0xE6B7, 0x761C, 0xE6B3, 0x761D, 0xE6B2, 0x761E, 0xE6B0, 0x761F, 0xBD45, + 0x7620, 0xBD43, 0x7621, 0xBD48, 0x7622, 0xBD49, 0x7623, 0xE6B4, 0x7624, 0xBD46, 0x7625, 0xE6AF, 0x7626, 0xBD47, 0x7627, 0xBAC4, + 0x7628, 0xE6B6, 0x7629, 0xBD44, 0x762D, 0xEA6C, 0x762F, 0xEA6B, 0x7630, 0xEA73, 0x7631, 0xEA6D, 0x7632, 0xEA72, 0x7633, 0xEA6F, + 0x7634, 0xBF60, 0x7635, 0xEA71, 0x7638, 0xBF61, 0x763A, 0xBF62, 0x763C, 0xEA70, 0x763D, 0xEA6E, 0x7642, 0xC0F8, 0x7643, 0xED74, + 0x7646, 0xC0F7, 0x7647, 0xED77, 0x7648, 0xED75, 0x7649, 0xED76, 0x764C, 0xC0F9, 0x7650, 0xF04D, 0x7652, 0xC2A1, 0x7653, 0xF04E, + 0x7656, 0xC27D, 0x7657, 0xF04F, 0x7658, 0xC27E, 0x7659, 0xF04C, 0x765A, 0xF050, 0x765C, 0xF04A, 0x765F, 0xC3A7, 0x7660, 0xF278, + 0x7661, 0xC3A8, 0x7662, 0xC46F, 0x7664, 0xF04B, 0x7665, 0xC470, 0x7669, 0xC4EE, 0x766A, 0xF5DF, 0x766C, 0xC57E, 0x766D, 0xF6F4, + 0x766E, 0xC57D, 0x7670, 0xF7EA, 0x7671, 0xC5F5, 0x7672, 0xC5F6, 0x7675, 0xF9CC, 0x7678, 0xACD1, 0x7679, 0xCFDE, 0x767B, 0xB56E, + 0x767C, 0xB56F, 0x767D, 0xA5D5, 0x767E, 0xA6CA, 0x767F, 0xCA47, 0x7681, 0xCB71, 0x7682, 0xA86D, 0x7684, 0xAABA, 0x7686, 0xACD2, + 0x7687, 0xACD3, 0x7688, 0xACD4, 0x7689, 0xD6A6, 0x768A, 0xD2CB, 0x768B, 0xAF6F, 0x768E, 0xB2AE, 0x768F, 0xD6A5, 0x7692, 0xDAB8, + 0x7693, 0xB571, 0x7695, 0xDAB7, 0x7696, 0xB570, 0x7699, 0xDED5, 0x769A, 0xBD4A, 0x769B, 0xE6BB, 0x769C, 0xE6B8, 0x769D, 0xE6B9, + 0x769E, 0xE6BA, 0x76A4, 0xED78, 0x76A6, 0xF051, 0x76AA, 0xF471, 0x76AB, 0xF470, 0x76AD, 0xF6F5, 0x76AE, 0xA5D6, 0x76AF, 0xCD75, + 0x76B0, 0xAF70, 0x76B4, 0xB572, 0x76B5, 0xDED6, 0x76B8, 0xE2E1, 0x76BA, 0xBD4B, 0x76BB, 0xEA74, 0x76BD, 0xF052, 0x76BE, 0xF472, + 0x76BF, 0xA5D7, 0x76C2, 0xAABB, 0x76C3, 0xACD7, 0x76C4, 0xCFDF, 0x76C5, 0xACD8, 0x76C6, 0xACD6, 0x76C8, 0xACD5, 0x76C9, 0xD2CC, + 0x76CA, 0xAF71, 0x76CD, 0xAF72, 0x76CE, 0xAF73, 0x76D2, 0xB2B0, 0x76D3, 0xD6A7, 0x76D4, 0xB2AF, 0x76DA, 0xDAB9, 0x76DB, 0xB2B1, + 0x76DC, 0xB573, 0x76DD, 0xDED7, 0x76DE, 0xB7F8, 0x76DF, 0xB7F9, 0x76E1, 0xBAC9, 0x76E3, 0xBACA, 0x76E4, 0xBD4C, 0x76E5, 0xBF64, + 0x76E6, 0xEA75, 0x76E7, 0xBF63, 0x76E9, 0xED79, 0x76EA, 0xC0FA, 0x76EC, 0xF053, 0x76ED, 0xF473, 0x76EE, 0xA5D8, 0x76EF, 0xA86E, + 0x76F0, 0xCD78, 0x76F1, 0xCD77, 0x76F2, 0xAABC, 0x76F3, 0xCD76, 0x76F4, 0xAABD, 0x76F5, 0xCD79, 0x76F7, 0xCFE5, 0x76F8, 0xACDB, + 0x76F9, 0xACDA, 0x76FA, 0xCFE7, 0x76FB, 0xCFE6, 0x76FC, 0xACDF, 0x76FE, 0xACDE, 0x7701, 0xACD9, 0x7703, 0xCFE1, 0x7704, 0xCFE2, + 0x7705, 0xCFE3, 0x7707, 0xACE0, 0x7708, 0xCFE0, 0x7709, 0xACDC, 0x770A, 0xCFE4, 0x770B, 0xACDD, 0x7710, 0xD2CF, 0x7711, 0xD2D3, + 0x7712, 0xD2D1, 0x7713, 0xD2D0, 0x7715, 0xD2D4, 0x7719, 0xD2D5, 0x771A, 0xD2D6, 0x771B, 0xD2CE, 0x771D, 0xD2CD, 0x771F, 0xAF75, + 0x7720, 0xAF76, 0x7722, 0xD2D7, 0x7723, 0xD2D2, 0x7725, 0xD6B0, 0x7727, 0xD2D8, 0x7728, 0xAF77, 0x7729, 0xAF74, 0x772D, 0xD6AA, + 0x772F, 0xD6A9, 0x7731, 0xD6AB, 0x7732, 0xD6AC, 0x7733, 0xD6AE, 0x7734, 0xD6AD, 0x7735, 0xD6B2, 0x7736, 0xB2B5, 0x7737, 0xB2B2, + 0x7738, 0xB2B6, 0x7739, 0xD6A8, 0x773A, 0xB2B7, 0x773B, 0xD6B1, 0x773C, 0xB2B4, 0x773D, 0xD6AF, 0x773E, 0xB2B3, 0x7744, 0xDABC, + 0x7745, 0xDABE, 0x7746, 0xDABA, 0x7747, 0xDABB, 0x774A, 0xDABF, 0x774B, 0xDAC1, 0x774C, 0xDAC2, 0x774D, 0xDABD, 0x774E, 0xDAC0, + 0x774F, 0xB574, 0x7752, 0xDEDB, 0x7754, 0xDEE0, 0x7755, 0xDED8, 0x7756, 0xDEDC, 0x7759, 0xDEE1, 0x775A, 0xDEDD, 0x775B, 0xB7FA, + 0x775C, 0xB843, 0x775E, 0xB7FD, 0x775F, 0xDED9, 0x7760, 0xDEDA, 0x7761, 0xBACE, 0x7762, 0xB846, 0x7763, 0xB7FE, 0x7765, 0xB844, + 0x7766, 0xB7FC, 0x7767, 0xDEDF, 0x7768, 0xB845, 0x7769, 0xDEDE, 0x776A, 0xB841, 0x776B, 0xB7FB, 0x776C, 0xB842, 0x776D, 0xDEE2, + 0x776E, 0xE2E6, 0x776F, 0xE2E8, 0x7779, 0xB840, 0x777C, 0xE2E3, 0x777D, 0xBACC, 0x777E, 0xE2E9, 0x777F, 0xBACD, 0x7780, 0xE2E7, + 0x7781, 0xE2E2, 0x7782, 0xE2E5, 0x7783, 0xE2EA, 0x7784, 0xBACB, 0x7785, 0xE2E4, 0x7787, 0xBD4E, 0x7788, 0xE6BF, 0x7789, 0xE6BE, + 0x778B, 0xBD51, 0x778C, 0xBD4F, 0x778D, 0xE6BC, 0x778E, 0xBD4D, 0x778F, 0xE6BD, 0x7791, 0xBD50, 0x7795, 0xEA7D, 0x7797, 0xEAA1, + 0x7799, 0xEA7E, 0x779A, 0xEA76, 0x779B, 0xEA7A, 0x779C, 0xEA79, 0x779D, 0xEA77, 0x779E, 0xBF66, 0x779F, 0xBF67, 0x77A0, 0xBF65, + 0x77A1, 0xEA78, 0x77A2, 0xEA7B, 0x77A3, 0xEA7C, 0x77A5, 0xBF68, 0x77A7, 0xC140, 0x77A8, 0xEDA3, 0x77AA, 0xC0FC, 0x77AB, 0xED7B, + 0x77AC, 0xC0FE, 0x77AD, 0xC141, 0x77B0, 0xC0FD, 0x77B1, 0xEDA2, 0x77B2, 0xED7C, 0x77B3, 0xC0FB, 0x77B4, 0xEDA1, 0x77B5, 0xED7A, + 0x77B6, 0xED7E, 0x77B7, 0xED7D, 0x77BA, 0xF055, 0x77BB, 0xC2A4, 0x77BC, 0xC2A5, 0x77BD, 0xC2A2, 0x77BF, 0xC2A3, 0x77C2, 0xF054, + 0x77C4, 0xF27B, 0x77C7, 0xC3A9, 0x77C9, 0xF279, 0x77CA, 0xF27A, 0x77CC, 0xF474, 0x77CD, 0xF477, 0x77CE, 0xF475, 0x77CF, 0xF476, + 0x77D0, 0xF5E0, 0x77D3, 0xC4EF, 0x77D4, 0xF7EB, 0x77D5, 0xF8B4, 0x77D7, 0xC5F7, 0x77D8, 0xF8F8, 0x77D9, 0xF8F9, 0x77DA, 0xC666, + 0x77DB, 0xA5D9, 0x77DC, 0xACE1, 0x77DE, 0xDAC3, 0x77E0, 0xDEE3, 0x77E2, 0xA5DA, 0x77E3, 0xA86F, 0x77E5, 0xAABE, 0x77E7, 0xCFE8, + 0x77E8, 0xCFE9, 0x77E9, 0xAF78, 0x77EC, 0xDAC4, 0x77ED, 0xB575, 0x77EE, 0xB847, 0x77EF, 0xC142, 0x77F0, 0xEDA4, 0x77F1, 0xF27C, + 0x77F2, 0xF478, 0x77F3, 0xA5DB, 0x77F7, 0xCDA1, 0x77F8, 0xCD7A, 0x77F9, 0xCD7C, 0x77FA, 0xCD7E, 0x77FB, 0xCD7D, 0x77FC, 0xCD7B, + 0x77FD, 0xAABF, 0x7802, 0xACE2, 0x7803, 0xCFF2, 0x7805, 0xCFED, 0x7806, 0xCFEA, 0x7809, 0xCFF1, 0x780C, 0xACE4, 0x780D, 0xACE5, + 0x780E, 0xCFF0, 0x780F, 0xCFEF, 0x7810, 0xCFEE, 0x7811, 0xCFEB, 0x7812, 0xCFEC, 0x7813, 0xCFF3, 0x7814, 0xACE3, 0x781D, 0xAF7C, + 0x781F, 0xAFA4, 0x7820, 0xAFA3, 0x7821, 0xD2E1, 0x7822, 0xD2DB, 0x7823, 0xD2D9, 0x7825, 0xAFA1, 0x7826, 0xD6B9, 0x7827, 0xAF7A, + 0x7828, 0xD2DE, 0x7829, 0xD2E2, 0x782A, 0xD2E4, 0x782B, 0xD2E0, 0x782C, 0xD2DA, 0x782D, 0xAFA2, 0x782E, 0xD2DF, 0x782F, 0xD2DD, + 0x7830, 0xAF79, 0x7831, 0xD2E5, 0x7832, 0xAFA5, 0x7833, 0xD2E3, 0x7834, 0xAF7D, 0x7835, 0xD2DC, 0x7837, 0xAF7E, 0x7838, 0xAF7B, + 0x7843, 0xB2B9, 0x7845, 0xD6BA, 0x7848, 0xD6B3, 0x7849, 0xD6B5, 0x784A, 0xD6B7, 0x784C, 0xD6B8, 0x784D, 0xD6B6, 0x784E, 0xB2BA, + 0x7850, 0xD6BB, 0x7852, 0xD6B4, 0x785C, 0xDAC8, 0x785D, 0xB576, 0x785E, 0xDAD0, 0x7860, 0xDAC5, 0x7862, 0xDAD1, 0x7864, 0xDAC6, + 0x7865, 0xDAC7, 0x7868, 0xDACF, 0x7869, 0xDACE, 0x786A, 0xDACB, 0x786B, 0xB2B8, 0x786C, 0xB577, 0x786D, 0xDAC9, 0x786E, 0xDACC, + 0x786F, 0xB578, 0x7870, 0xDACD, 0x7871, 0xDACA, 0x7879, 0xDEEE, 0x787B, 0xDEF2, 0x787C, 0xB84E, 0x787E, 0xE2F0, 0x787F, 0xB851, + 0x7880, 0xDEF0, 0x7881, 0xF9D6, 0x7883, 0xDEED, 0x7884, 0xDEE8, 0x7885, 0xDEEA, 0x7886, 0xDEEB, 0x7887, 0xDEE4, 0x7889, 0xB84D, + 0x788C, 0xB84C, 0x788E, 0xB848, 0x788F, 0xDEE7, 0x7891, 0xB84F, 0x7893, 0xB850, 0x7894, 0xDEE6, 0x7895, 0xDEE9, 0x7896, 0xDEF1, + 0x7897, 0xB84A, 0x7898, 0xB84B, 0x7899, 0xDEEF, 0x789A, 0xDEE5, 0x789E, 0xE2F2, 0x789F, 0xBAD0, 0x78A0, 0xE2F4, 0x78A1, 0xDEEC, + 0x78A2, 0xE2F6, 0x78A3, 0xBAD4, 0x78A4, 0xE2F7, 0x78A5, 0xE2F3, 0x78A7, 0xBAD1, 0x78A8, 0xE2EF, 0x78A9, 0xBAD3, 0x78AA, 0xE2EC, + 0x78AB, 0xE2F1, 0x78AC, 0xE2F5, 0x78AD, 0xE2EE, 0x78B0, 0xB849, 0x78B2, 0xE2EB, 0x78B3, 0xBAD2, 0x78B4, 0xE2ED, 0x78BA, 0xBD54, + 0x78BB, 0xE6C1, 0x78BC, 0xBD58, 0x78BE, 0xBD56, 0x78C1, 0xBACF, 0x78C3, 0xE6C8, 0x78C4, 0xE6C9, 0x78C5, 0xBD53, 0x78C8, 0xE6C7, + 0x78C9, 0xE6CA, 0x78CA, 0xBD55, 0x78CB, 0xBD52, 0x78CC, 0xE6C3, 0x78CD, 0xE6C0, 0x78CE, 0xE6C5, 0x78CF, 0xE6C2, 0x78D0, 0xBD59, + 0x78D1, 0xE6C4, 0x78D4, 0xE6C6, 0x78D5, 0xBD57, 0x78DA, 0xBF6A, 0x78DB, 0xEAA8, 0x78DD, 0xEAA2, 0x78DE, 0xEAA6, 0x78DF, 0xEAAC, + 0x78E0, 0xEAAD, 0x78E1, 0xEAA9, 0x78E2, 0xEAAA, 0x78E3, 0xEAA7, 0x78E5, 0xEAA4, 0x78E7, 0xBF6C, 0x78E8, 0xBF69, 0x78E9, 0xEAA3, + 0x78EA, 0xEAA5, 0x78EC, 0xBF6B, 0x78ED, 0xEAAB, 0x78EF, 0xC146, 0x78F2, 0xEDAA, 0x78F3, 0xEDA5, 0x78F4, 0xC145, 0x78F7, 0xC143, + 0x78F9, 0xEDAC, 0x78FA, 0xC144, 0x78FB, 0xEDA8, 0x78FC, 0xEDA9, 0x78FD, 0xEDA6, 0x78FE, 0xEDAD, 0x78FF, 0xF056, 0x7901, 0xC147, + 0x7902, 0xEDA7, 0x7904, 0xEDAE, 0x7905, 0xEDAB, 0x7909, 0xF05A, 0x790C, 0xF057, 0x790E, 0xC2A6, 0x7910, 0xF05B, 0x7911, 0xF05D, + 0x7912, 0xF05C, 0x7913, 0xF058, 0x7914, 0xF059, 0x7917, 0xF2A3, 0x7919, 0xC3AA, 0x791B, 0xF27E, 0x791C, 0xF2A2, 0x791D, 0xF27D, + 0x791E, 0xF2A4, 0x7921, 0xF2A1, 0x7923, 0xF47A, 0x7924, 0xF47D, 0x7925, 0xF479, 0x7926, 0xC471, 0x7927, 0xF47B, 0x7928, 0xF47C, + 0x7929, 0xF47E, 0x792A, 0xC472, 0x792B, 0xC474, 0x792C, 0xC473, 0x792D, 0xF5E1, 0x792F, 0xF5E3, 0x7931, 0xF5E2, 0x7935, 0xF6F6, + 0x7938, 0xF8B5, 0x7939, 0xF8FA, 0x793A, 0xA5DC, 0x793D, 0xCB72, 0x793E, 0xAAC0, 0x793F, 0xCDA3, 0x7940, 0xAAC1, 0x7941, 0xAAC2, + 0x7942, 0xCDA2, 0x7944, 0xCFF8, 0x7945, 0xCFF7, 0x7946, 0xACE6, 0x7947, 0xACE9, 0x7948, 0xACE8, 0x7949, 0xACE7, 0x794A, 0xCFF4, + 0x794B, 0xCFF6, 0x794C, 0xCFF5, 0x794F, 0xD2E8, 0x7950, 0xAFA7, 0x7951, 0xD2EC, 0x7952, 0xD2EB, 0x7953, 0xD2EA, 0x7954, 0xD2E6, + 0x7955, 0xAFA6, 0x7956, 0xAFAA, 0x7957, 0xAFAD, 0x795A, 0xAFAE, 0x795B, 0xD2E7, 0x795C, 0xD2E9, 0x795D, 0xAFAC, 0x795E, 0xAFAB, + 0x795F, 0xAFA9, 0x7960, 0xAFA8, 0x7961, 0xD6C2, 0x7963, 0xD6C0, 0x7964, 0xD6BC, 0x7965, 0xB2BB, 0x7967, 0xD6BD, 0x7968, 0xB2BC, + 0x7969, 0xD6BE, 0x796A, 0xD6BF, 0x796B, 0xD6C1, 0x796D, 0xB2BD, 0x7970, 0xDAD5, 0x7972, 0xDAD4, 0x7973, 0xDAD3, 0x7974, 0xDAD2, + 0x7979, 0xDEF6, 0x797A, 0xB852, 0x797C, 0xDEF3, 0x797D, 0xDEF5, 0x797F, 0xB853, 0x7981, 0xB854, 0x7982, 0xDEF4, 0x7988, 0xE341, + 0x798A, 0xE2F9, 0x798B, 0xE2FA, 0x798D, 0xBAD7, 0x798E, 0xBAD5, 0x798F, 0xBAD6, 0x7990, 0xE343, 0x7992, 0xE342, 0x7993, 0xE2FE, + 0x7994, 0xE2FD, 0x7995, 0xE2FC, 0x7996, 0xE2FB, 0x7997, 0xE340, 0x7998, 0xE2F8, 0x799A, 0xE6CB, 0x799B, 0xE6D0, 0x799C, 0xE6CE, + 0x79A0, 0xE6CD, 0x79A1, 0xE6CC, 0x79A2, 0xE6CF, 0x79A4, 0xEAAE, 0x79A6, 0xBF6D, 0x79A7, 0xC148, 0x79A8, 0xEDB0, 0x79AA, 0xC149, + 0x79AB, 0xEDAF, 0x79AC, 0xF05F, 0x79AD, 0xF05E, 0x79AE, 0xC2A7, 0x79B0, 0xF2A5, 0x79B1, 0xC3AB, 0x79B2, 0xF4A1, 0x79B3, 0xC5A1, + 0x79B4, 0xF6F7, 0x79B6, 0xF8B7, 0x79B7, 0xF8B6, 0x79B8, 0xC9A8, 0x79B9, 0xACEA, 0x79BA, 0xACEB, 0x79BB, 0xD6C3, 0x79BD, 0xB856, + 0x79BE, 0xA5DD, 0x79BF, 0xA872, 0x79C0, 0xA871, 0x79C1, 0xA870, 0x79C5, 0xCDA4, 0x79C8, 0xAAC4, 0x79C9, 0xAAC3, 0x79CB, 0xACEE, + 0x79CD, 0xCFFA, 0x79CE, 0xCFFD, 0x79CF, 0xCFFB, 0x79D1, 0xACEC, 0x79D2, 0xACED, 0x79D5, 0xCFF9, 0x79D6, 0xCFFC, 0x79D8, 0xAFB5, + 0x79DC, 0xD2F3, 0x79DD, 0xD2F5, 0x79DE, 0xD2F4, 0x79DF, 0xAFB2, 0x79E0, 0xD2EF, 0x79E3, 0xAFB0, 0x79E4, 0xAFAF, 0x79E6, 0xAFB3, + 0x79E7, 0xAFB1, 0x79E9, 0xAFB4, 0x79EA, 0xD2F2, 0x79EB, 0xD2ED, 0x79EC, 0xD2EE, 0x79ED, 0xD2F1, 0x79EE, 0xD2F0, 0x79F6, 0xD6C6, + 0x79F7, 0xD6C7, 0x79F8, 0xD6C5, 0x79FA, 0xD6C4, 0x79FB, 0xB2BE, 0x7A00, 0xB57D, 0x7A02, 0xDAD6, 0x7A03, 0xDAD8, 0x7A04, 0xDADA, + 0x7A05, 0xB57C, 0x7A08, 0xB57A, 0x7A0A, 0xDAD7, 0x7A0B, 0xB57B, 0x7A0C, 0xDAD9, 0x7A0D, 0xB579, 0x7A10, 0xDF41, 0x7A11, 0xDEF7, + 0x7A12, 0xDEFA, 0x7A13, 0xDEFE, 0x7A14, 0xB85A, 0x7A15, 0xDEFC, 0x7A17, 0xDEFB, 0x7A18, 0xDEF8, 0x7A19, 0xDEF9, 0x7A1A, 0xB858, + 0x7A1B, 0xDF40, 0x7A1C, 0xB857, 0x7A1E, 0xB85C, 0x7A1F, 0xB85B, 0x7A20, 0xB859, 0x7A22, 0xDEFD, 0x7A26, 0xE349, 0x7A28, 0xE348, + 0x7A2B, 0xE344, 0x7A2E, 0xBAD8, 0x7A2F, 0xE347, 0x7A30, 0xE346, 0x7A31, 0xBAD9, 0x7A37, 0xBD5E, 0x7A39, 0xE6D2, 0x7A3B, 0xBD5F, + 0x7A3C, 0xBD5B, 0x7A3D, 0xBD5D, 0x7A3F, 0xBD5A, 0x7A40, 0xBD5C, 0x7A44, 0xEAAF, 0x7A46, 0xBF70, 0x7A47, 0xEAB1, 0x7A48, 0xEAB0, + 0x7A4A, 0xE345, 0x7A4B, 0xBF72, 0x7A4C, 0xBF71, 0x7A4D, 0xBF6E, 0x7A4E, 0xBF6F, 0x7A54, 0xEDB5, 0x7A56, 0xEDB3, 0x7A57, 0xC14A, + 0x7A58, 0xEDB4, 0x7A5A, 0xEDB6, 0x7A5B, 0xEDB2, 0x7A5C, 0xEDB1, 0x7A5F, 0xF060, 0x7A60, 0xC2AA, 0x7A61, 0xC2A8, 0x7A62, 0xC2A9, + 0x7A67, 0xF2A6, 0x7A68, 0xF2A7, 0x7A69, 0xC3AD, 0x7A6B, 0xC3AC, 0x7A6C, 0xF4A3, 0x7A6D, 0xF4A4, 0x7A6E, 0xF4A2, 0x7A70, 0xF6F8, + 0x7A71, 0xF6F9, 0x7A74, 0xA5DE, 0x7A75, 0xCA48, 0x7A76, 0xA873, 0x7A78, 0xCDA5, 0x7A79, 0xAAC6, 0x7A7A, 0xAAC5, 0x7A7B, 0xCDA6, + 0x7A7E, 0xD040, 0x7A7F, 0xACEF, 0x7A80, 0xCFFE, 0x7A81, 0xACF0, 0x7A84, 0xAFB6, 0x7A85, 0xD2F8, 0x7A86, 0xD2F6, 0x7A87, 0xD2FC, + 0x7A88, 0xAFB7, 0x7A89, 0xD2F7, 0x7A8A, 0xD2FB, 0x7A8B, 0xD2F9, 0x7A8C, 0xD2FA, 0x7A8F, 0xD6C8, 0x7A90, 0xD6CA, 0x7A92, 0xB2BF, + 0x7A94, 0xD6C9, 0x7A95, 0xB2C0, 0x7A96, 0xB5A2, 0x7A97, 0xB5A1, 0x7A98, 0xB57E, 0x7A99, 0xDADB, 0x7A9E, 0xDF44, 0x7A9F, 0xB85D, + 0x7AA0, 0xB85E, 0x7AA2, 0xDF43, 0x7AA3, 0xDF42, 0x7AA8, 0xE34A, 0x7AA9, 0xBADB, 0x7AAA, 0xBADA, 0x7AAB, 0xE34B, 0x7AAC, 0xE34C, + 0x7AAE, 0xBD61, 0x7AAF, 0xBD60, 0x7AB1, 0xEAB5, 0x7AB2, 0xE6D3, 0x7AB3, 0xE6D5, 0x7AB4, 0xE6D4, 0x7AB5, 0xEAB4, 0x7AB6, 0xEAB2, + 0x7AB7, 0xEAB6, 0x7AB8, 0xEAB3, 0x7ABA, 0xBF73, 0x7ABE, 0xEDB7, 0x7ABF, 0xC14B, 0x7AC0, 0xEDB8, 0x7AC1, 0xEDB9, 0x7AC4, 0xC2AB, + 0x7AC5, 0xC2AC, 0x7AC7, 0xC475, 0x7ACA, 0xC5D1, 0x7ACB, 0xA5DF, 0x7AD1, 0xD041, 0x7AD8, 0xD2FD, 0x7AD9, 0xAFB8, 0x7ADF, 0xB3BA, + 0x7AE0, 0xB3B9, 0x7AE3, 0xB5A4, 0x7AE4, 0xDADD, 0x7AE5, 0xB5A3, 0x7AE6, 0xDADC, 0x7AEB, 0xDF45, 0x7AED, 0xBADC, 0x7AEE, 0xE34D, + 0x7AEF, 0xBADD, 0x7AF6, 0xC476, 0x7AF7, 0xF4A5, 0x7AF9, 0xA6CB, 0x7AFA, 0xAAC7, 0x7AFB, 0xCDA7, 0x7AFD, 0xACF2, 0x7AFF, 0xACF1, + 0x7B00, 0xD042, 0x7B01, 0xD043, 0x7B04, 0xD340, 0x7B05, 0xD342, 0x7B06, 0xAFB9, 0x7B08, 0xD344, 0x7B09, 0xD347, 0x7B0A, 0xD345, + 0x7B0E, 0xD346, 0x7B0F, 0xD343, 0x7B10, 0xD2FE, 0x7B11, 0xAFBA, 0x7B12, 0xD348, 0x7B13, 0xD341, 0x7B18, 0xD6D3, 0x7B19, 0xB2C6, + 0x7B1A, 0xD6DC, 0x7B1B, 0xB2C3, 0x7B1D, 0xD6D5, 0x7B1E, 0xB2C7, 0x7B20, 0xB2C1, 0x7B22, 0xD6D0, 0x7B23, 0xD6DD, 0x7B24, 0xD6D1, + 0x7B25, 0xD6CE, 0x7B26, 0xB2C5, 0x7B28, 0xB2C2, 0x7B2A, 0xD6D4, 0x7B2B, 0xD6D7, 0x7B2C, 0xB2C4, 0x7B2D, 0xD6D8, 0x7B2E, 0xB2C8, + 0x7B2F, 0xD6D9, 0x7B30, 0xD6CF, 0x7B31, 0xD6D6, 0x7B32, 0xD6DA, 0x7B33, 0xD6D2, 0x7B34, 0xD6CD, 0x7B35, 0xD6CB, 0x7B38, 0xD6DB, + 0x7B3B, 0xDADF, 0x7B40, 0xDAE4, 0x7B44, 0xDAE0, 0x7B45, 0xDAE6, 0x7B46, 0xB5A7, 0x7B47, 0xD6CC, 0x7B48, 0xDAE1, 0x7B49, 0xB5A5, + 0x7B4A, 0xDADE, 0x7B4B, 0xB5AC, 0x7B4C, 0xDAE2, 0x7B4D, 0xB5AB, 0x7B4E, 0xDAE3, 0x7B4F, 0xB5AD, 0x7B50, 0xB5A8, 0x7B51, 0xB5AE, + 0x7B52, 0xB5A9, 0x7B54, 0xB5AA, 0x7B56, 0xB5A6, 0x7B58, 0xDAE5, 0x7B60, 0xB861, 0x7B61, 0xDF50, 0x7B63, 0xDF53, 0x7B64, 0xDF47, + 0x7B65, 0xDF4C, 0x7B66, 0xDF46, 0x7B67, 0xB863, 0x7B69, 0xDF4A, 0x7B6D, 0xDF48, 0x7B6E, 0xB862, 0x7B70, 0xDF4F, 0x7B71, 0xDF4E, + 0x7B72, 0xDF4B, 0x7B73, 0xDF4D, 0x7B74, 0xDF49, 0x7B75, 0xBAE1, 0x7B76, 0xDF52, 0x7B77, 0xB85F, 0x7B78, 0xDF51, 0x7B82, 0xE35D, + 0x7B84, 0xBAE8, 0x7B85, 0xE358, 0x7B87, 0xBAE7, 0x7B88, 0xE34E, 0x7B8A, 0xE350, 0x7B8B, 0xBAE0, 0x7B8C, 0xE355, 0x7B8D, 0xE354, + 0x7B8E, 0xE357, 0x7B8F, 0xBAE5, 0x7B90, 0xE352, 0x7B91, 0xE351, 0x7B94, 0xBAE4, 0x7B95, 0xBADF, 0x7B96, 0xE353, 0x7B97, 0xBAE2, + 0x7B98, 0xE359, 0x7B99, 0xE35B, 0x7B9B, 0xE356, 0x7B9C, 0xE34F, 0x7B9D, 0xBAE3, 0x7BA0, 0xBD69, 0x7BA1, 0xBADE, 0x7BA4, 0xE35C, + 0x7BAC, 0xE6D9, 0x7BAD, 0xBD62, 0x7BAF, 0xE6DB, 0x7BB1, 0xBD63, 0x7BB4, 0xBD65, 0x7BB5, 0xE6DE, 0x7BB7, 0xE6D6, 0x7BB8, 0xBAE6, + 0x7BB9, 0xE6DC, 0x7BBE, 0xE6D8, 0x7BC0, 0xB860, 0x7BC1, 0xBD68, 0x7BC4, 0xBD64, 0x7BC6, 0xBD66, 0x7BC7, 0xBD67, 0x7BC9, 0xBF76, + 0x7BCA, 0xE6DD, 0x7BCB, 0xE6D7, 0x7BCC, 0xBD6A, 0x7BCE, 0xE6DA, 0x7BD4, 0xEAC0, 0x7BD5, 0xEABB, 0x7BD8, 0xEAC5, 0x7BD9, 0xBF74, + 0x7BDA, 0xEABD, 0x7BDB, 0xBF78, 0x7BDC, 0xEAC3, 0x7BDD, 0xEABA, 0x7BDE, 0xEAB7, 0x7BDF, 0xEAC6, 0x7BE0, 0xC151, 0x7BE1, 0xBF79, + 0x7BE2, 0xEAC2, 0x7BE3, 0xEAB8, 0x7BE4, 0xBF77, 0x7BE5, 0xEABC, 0x7BE6, 0xBF7B, 0x7BE7, 0xEAB9, 0x7BE8, 0xEABE, 0x7BE9, 0xBF7A, + 0x7BEA, 0xEAC1, 0x7BEB, 0xEAC4, 0x7BF0, 0xEDCB, 0x7BF1, 0xEDCC, 0x7BF2, 0xEDBC, 0x7BF3, 0xEDC3, 0x7BF4, 0xEDC1, 0x7BF7, 0xC14F, + 0x7BF8, 0xEDC8, 0x7BF9, 0xEABF, 0x7BFB, 0xEDBF, 0x7BFD, 0xEDC9, 0x7BFE, 0xC14E, 0x7BFF, 0xEDBE, 0x7C00, 0xEDBD, 0x7C01, 0xEDC7, + 0x7C02, 0xEDC4, 0x7C03, 0xEDC6, 0x7C05, 0xEDBA, 0x7C06, 0xEDCA, 0x7C07, 0xC14C, 0x7C09, 0xEDC5, 0x7C0A, 0xEDCE, 0x7C0B, 0xEDC2, + 0x7C0C, 0xC150, 0x7C0D, 0xC14D, 0x7C0E, 0xEDC0, 0x7C0F, 0xEDBB, 0x7C10, 0xEDCD, 0x7C11, 0xBF75, 0x7C19, 0xF063, 0x7C1C, 0xF061, + 0x7C1D, 0xF067, 0x7C1E, 0xC2B0, 0x7C1F, 0xF065, 0x7C20, 0xF064, 0x7C21, 0xC2B2, 0x7C22, 0xF06A, 0x7C23, 0xC2B1, 0x7C25, 0xF06B, + 0x7C26, 0xF068, 0x7C27, 0xC2AE, 0x7C28, 0xF069, 0x7C29, 0xF062, 0x7C2A, 0xC2AF, 0x7C2B, 0xC2AD, 0x7C2C, 0xF2AB, 0x7C2D, 0xF066, + 0x7C30, 0xF06C, 0x7C33, 0xF2A8, 0x7C37, 0xC3B2, 0x7C38, 0xC3B0, 0x7C39, 0xF2AA, 0x7C3B, 0xF2AC, 0x7C3C, 0xF2A9, 0x7C3D, 0xC3B1, + 0x7C3E, 0xC3AE, 0x7C3F, 0xC3AF, 0x7C40, 0xC3B3, 0x7C43, 0xC478, 0x7C45, 0xF4AA, 0x7C47, 0xF4A9, 0x7C48, 0xF4A7, 0x7C49, 0xF4A6, + 0x7C4A, 0xF4A8, 0x7C4C, 0xC477, 0x7C4D, 0xC479, 0x7C50, 0xC4F0, 0x7C53, 0xF5E5, 0x7C54, 0xF5E4, 0x7C57, 0xF6FA, 0x7C59, 0xF6FC, + 0x7C5A, 0xF6FE, 0x7C5B, 0xF6FD, 0x7C5C, 0xF6FB, 0x7C5F, 0xC5A3, 0x7C60, 0xC5A2, 0x7C63, 0xC5D3, 0x7C64, 0xC5D2, 0x7C65, 0xC5D4, + 0x7C66, 0xF7ED, 0x7C67, 0xF7EC, 0x7C69, 0xF8FB, 0x7C6A, 0xF8B8, 0x7C6B, 0xF8FC, 0x7C6C, 0xC658, 0x7C6E, 0xC659, 0x7C6F, 0xF96D, + 0x7C72, 0xC67E, 0x7C73, 0xA6CC, 0x7C75, 0xCDA8, 0x7C78, 0xD045, 0x7C79, 0xD046, 0x7C7A, 0xD044, 0x7C7D, 0xACF3, 0x7C7F, 0xD047, + 0x7C80, 0xD048, 0x7C81, 0xD049, 0x7C84, 0xD349, 0x7C85, 0xD34F, 0x7C88, 0xD34D, 0x7C89, 0xAFBB, 0x7C8A, 0xD34B, 0x7C8C, 0xD34C, + 0x7C8D, 0xD34E, 0x7C91, 0xD34A, 0x7C92, 0xB2C9, 0x7C94, 0xD6DE, 0x7C95, 0xB2CB, 0x7C96, 0xD6E0, 0x7C97, 0xB2CA, 0x7C98, 0xD6DF, + 0x7C9E, 0xDAE8, 0x7C9F, 0xB5AF, 0x7CA1, 0xDAEA, 0x7CA2, 0xDAE7, 0x7CA3, 0xD6E1, 0x7CA5, 0xB5B0, 0x7CA7, 0xF9DB, 0x7CA8, 0xDAE9, + 0x7CAF, 0xDF56, 0x7CB1, 0xB864, 0x7CB2, 0xDF54, 0x7CB3, 0xB865, 0x7CB4, 0xDF55, 0x7CB5, 0xB866, 0x7CB9, 0xBAE9, 0x7CBA, 0xE361, + 0x7CBB, 0xE35E, 0x7CBC, 0xE360, 0x7CBD, 0xBAEA, 0x7CBE, 0xBAEB, 0x7CBF, 0xE35F, 0x7CC5, 0xE6DF, 0x7CC8, 0xE6E0, 0x7CCA, 0xBD6B, + 0x7CCB, 0xE6E2, 0x7CCC, 0xE6E1, 0x7CCE, 0xA261, 0x7CD0, 0xEACA, 0x7CD1, 0xEACB, 0x7CD2, 0xEAC7, 0x7CD4, 0xEAC8, 0x7CD5, 0xBF7C, + 0x7CD6, 0xBF7D, 0x7CD7, 0xEAC9, 0x7CD9, 0xC157, 0x7CDC, 0xC153, 0x7CDD, 0xC158, 0x7CDE, 0xC154, 0x7CDF, 0xC156, 0x7CE0, 0xC152, + 0x7CE2, 0xC155, 0x7CE7, 0xC2B3, 0x7CE8, 0xEDCF, 0x7CEA, 0xF2AE, 0x7CEC, 0xF2AD, 0x7CEE, 0xF4AB, 0x7CEF, 0xC47A, 0x7CF0, 0xC47B, + 0x7CF1, 0xF741, 0x7CF2, 0xF5E6, 0x7CF4, 0xF740, 0x7CF6, 0xF8FD, 0x7CF7, 0xF9A4, 0x7CF8, 0xA6CD, 0x7CFB, 0xA874, 0x7CFD, 0xCDA9, + 0x7CFE, 0xAAC8, 0x7D00, 0xACF6, 0x7D01, 0xD04C, 0x7D02, 0xACF4, 0x7D03, 0xD04A, 0x7D04, 0xACF9, 0x7D05, 0xACF5, 0x7D06, 0xACFA, + 0x7D07, 0xACF8, 0x7D08, 0xD04B, 0x7D09, 0xACF7, 0x7D0A, 0xAFBF, 0x7D0B, 0xAFBE, 0x7D0C, 0xD35A, 0x7D0D, 0xAFC7, 0x7D0E, 0xD353, + 0x7D0F, 0xD359, 0x7D10, 0xAFC3, 0x7D11, 0xD352, 0x7D12, 0xD358, 0x7D13, 0xD356, 0x7D14, 0xAFC2, 0x7D15, 0xAFC4, 0x7D16, 0xD355, + 0x7D17, 0xAFBD, 0x7D18, 0xD354, 0x7D19, 0xAFC8, 0x7D1A, 0xAFC5, 0x7D1B, 0xAFC9, 0x7D1C, 0xAFC6, 0x7D1D, 0xD351, 0x7D1E, 0xD350, + 0x7D1F, 0xD357, 0x7D20, 0xAFC0, 0x7D21, 0xAFBC, 0x7D22, 0xAFC1, 0x7D28, 0xD6F0, 0x7D29, 0xD6E9, 0x7D2B, 0xB5B5, 0x7D2C, 0xD6E8, + 0x7D2E, 0xB2CF, 0x7D2F, 0xB2D6, 0x7D30, 0xB2D3, 0x7D31, 0xB2D9, 0x7D32, 0xB2D8, 0x7D33, 0xB2D4, 0x7D35, 0xD6E2, 0x7D36, 0xD6E5, + 0x7D38, 0xD6E4, 0x7D39, 0xB2D0, 0x7D3A, 0xD6E6, 0x7D3B, 0xD6EF, 0x7D3C, 0xB2D1, 0x7D3D, 0xD6E3, 0x7D3E, 0xD6EC, 0x7D3F, 0xD6ED, + 0x7D40, 0xB2D2, 0x7D41, 0xD6EA, 0x7D42, 0xB2D7, 0x7D43, 0xB2CD, 0x7D44, 0xB2D5, 0x7D45, 0xD6E7, 0x7D46, 0xB2CC, 0x7D47, 0xD6EB, + 0x7D4A, 0xD6EE, 0x7D4E, 0xDAFB, 0x7D4F, 0xDAF2, 0x7D50, 0xB5B2, 0x7D51, 0xDAF9, 0x7D52, 0xDAF6, 0x7D53, 0xDAEE, 0x7D54, 0xDAF7, + 0x7D55, 0xB5B4, 0x7D56, 0xDAEF, 0x7D58, 0xDAEB, 0x7D5B, 0xB86C, 0x7D5C, 0xDAF4, 0x7D5E, 0xB5B1, 0x7D5F, 0xDAFA, 0x7D61, 0xB5B8, + 0x7D62, 0xB5BA, 0x7D63, 0xDAED, 0x7D66, 0xB5B9, 0x7D67, 0xDAF0, 0x7D68, 0xB5B3, 0x7D69, 0xDAF8, 0x7D6A, 0xDAF1, 0x7D6B, 0xDAF5, + 0x7D6D, 0xDAF3, 0x7D6E, 0xB5B6, 0x7D6F, 0xDAEC, 0x7D70, 0xB5BB, 0x7D71, 0xB2CE, 0x7D72, 0xB5B7, 0x7D73, 0xB5BC, 0x7D79, 0xB868, + 0x7D7A, 0xDF5D, 0x7D7B, 0xDF5F, 0x7D7C, 0xDF61, 0x7D7D, 0xDF65, 0x7D7F, 0xDF5B, 0x7D80, 0xDF59, 0x7D81, 0xB86A, 0x7D83, 0xDF60, + 0x7D84, 0xDF64, 0x7D85, 0xDF5C, 0x7D86, 0xDF58, 0x7D88, 0xDF57, 0x7D8C, 0xDF62, 0x7D8D, 0xDF5A, 0x7D8E, 0xDF5E, 0x7D8F, 0xB86B, + 0x7D91, 0xB869, 0x7D92, 0xDF66, 0x7D93, 0xB867, 0x7D94, 0xDF63, 0x7D96, 0xE372, 0x7D9C, 0xBAEE, 0x7D9D, 0xE36A, 0x7D9E, 0xBD78, + 0x7D9F, 0xE374, 0x7DA0, 0xBAF1, 0x7DA1, 0xE378, 0x7DA2, 0xBAF7, 0x7DA3, 0xE365, 0x7DA6, 0xE375, 0x7DA7, 0xE362, 0x7DA9, 0xE377, + 0x7DAA, 0xE366, 0x7DAC, 0xBAFE, 0x7DAD, 0xBAFB, 0x7DAE, 0xE376, 0x7DAF, 0xE370, 0x7DB0, 0xBAED, 0x7DB1, 0xBAF5, 0x7DB2, 0xBAF4, + 0x7DB4, 0xBAF3, 0x7DB5, 0xBAF9, 0x7DB7, 0xE363, 0x7DB8, 0xBAFA, 0x7DB9, 0xE371, 0x7DBA, 0xBAF6, 0x7DBB, 0xBAEC, 0x7DBC, 0xE373, + 0x7DBD, 0xBAEF, 0x7DBE, 0xBAF0, 0x7DBF, 0xBAF8, 0x7DC0, 0xE368, 0x7DC1, 0xE367, 0x7DC2, 0xE364, 0x7DC4, 0xE36C, 0x7DC5, 0xE369, + 0x7DC6, 0xE36D, 0x7DC7, 0xBAFD, 0x7DC9, 0xE379, 0x7DCA, 0xBAF2, 0x7DCB, 0xE36E, 0x7DCC, 0xE36F, 0x7DCE, 0xE36B, 0x7DD2, 0xBAFC, + 0x7DD7, 0xE6E7, 0x7DD8, 0xBD70, 0x7DD9, 0xBD79, 0x7DDA, 0xBD75, 0x7DDB, 0xE6E4, 0x7DDD, 0xBD72, 0x7DDE, 0xBD76, 0x7DDF, 0xE6F0, + 0x7DE0, 0xBD6C, 0x7DE1, 0xE6E8, 0x7DE3, 0xBD74, 0x7DE6, 0xE6EB, 0x7DE7, 0xE6E6, 0x7DE8, 0xBD73, 0x7DE9, 0xBD77, 0x7DEA, 0xE6E5, + 0x7DEC, 0xBD71, 0x7DEE, 0xE6EF, 0x7DEF, 0xBD6E, 0x7DF0, 0xE6EE, 0x7DF1, 0xE6ED, 0x7DF2, 0xBD7A, 0x7DF3, 0xE572, 0x7DF4, 0xBD6D, + 0x7DF6, 0xE6EC, 0x7DF7, 0xE6E3, 0x7DF9, 0xBD7B, 0x7DFA, 0xE6EA, 0x7DFB, 0xBD6F, 0x7E03, 0xE6E9, 0x7E08, 0xBFA2, 0x7E09, 0xBFA7, + 0x7E0A, 0xBF7E, 0x7E0B, 0xEAD8, 0x7E0C, 0xEACF, 0x7E0D, 0xEADB, 0x7E0E, 0xEAD3, 0x7E0F, 0xEAD9, 0x7E10, 0xBFA8, 0x7E11, 0xBFA1, + 0x7E12, 0xEACC, 0x7E13, 0xEAD2, 0x7E14, 0xEADC, 0x7E15, 0xEAD5, 0x7E16, 0xEADA, 0x7E17, 0xEACE, 0x7E1A, 0xEAD6, 0x7E1B, 0xBFA3, + 0x7E1C, 0xEAD4, 0x7E1D, 0xBFA6, 0x7E1E, 0xBFA5, 0x7E1F, 0xEAD0, 0x7E20, 0xEAD1, 0x7E21, 0xEACD, 0x7E22, 0xEAD7, 0x7E23, 0xBFA4, + 0x7E24, 0xEADE, 0x7E25, 0xEADD, 0x7E29, 0xEDDA, 0x7E2A, 0xEDD6, 0x7E2B, 0xC15F, 0x7E2D, 0xEDD0, 0x7E2E, 0xC159, 0x7E2F, 0xC169, + 0x7E30, 0xEDDC, 0x7E31, 0xC161, 0x7E32, 0xC15D, 0x7E33, 0xEDD3, 0x7E34, 0xC164, 0x7E35, 0xC167, 0x7E36, 0xEDDE, 0x7E37, 0xC15C, + 0x7E38, 0xEDD5, 0x7E39, 0xC165, 0x7E3A, 0xEDE0, 0x7E3B, 0xEDDD, 0x7E3C, 0xEDD1, 0x7E3D, 0xC160, 0x7E3E, 0xC15A, 0x7E3F, 0xC168, + 0x7E40, 0xEDD8, 0x7E41, 0xC163, 0x7E42, 0xEDD2, 0x7E43, 0xC15E, 0x7E44, 0xEDDF, 0x7E45, 0xC162, 0x7E46, 0xC15B, 0x7E47, 0xEDD9, + 0x7E48, 0xC166, 0x7E49, 0xEDD7, 0x7E4C, 0xEDDB, 0x7E50, 0xF06E, 0x7E51, 0xF074, 0x7E52, 0xC2B9, 0x7E53, 0xF077, 0x7E54, 0xC2B4, + 0x7E55, 0xC2B5, 0x7E56, 0xF06F, 0x7E57, 0xF076, 0x7E58, 0xF071, 0x7E59, 0xC2BA, 0x7E5A, 0xC2B7, 0x7E5C, 0xF06D, 0x7E5E, 0xC2B6, + 0x7E5F, 0xF073, 0x7E60, 0xF075, 0x7E61, 0xC2B8, 0x7E62, 0xF072, 0x7E63, 0xF070, 0x7E68, 0xF2B8, 0x7E69, 0xC3B7, 0x7E6A, 0xC3B8, + 0x7E6B, 0xC3B4, 0x7E6D, 0xC3B5, 0x7E6F, 0xF2B4, 0x7E70, 0xF2B2, 0x7E72, 0xF2B6, 0x7E73, 0xC3BA, 0x7E74, 0xF2B7, 0x7E75, 0xF2B0, + 0x7E76, 0xF2AF, 0x7E77, 0xF2B3, 0x7E78, 0xF2B1, 0x7E79, 0xC3B6, 0x7E7A, 0xF2B5, 0x7E7B, 0xF4AC, 0x7E7C, 0xC47E, 0x7E7D, 0xC47D, + 0x7E7E, 0xF4AD, 0x7E80, 0xF4AF, 0x7E81, 0xF4AE, 0x7E82, 0xC4A1, 0x7E86, 0xF5EB, 0x7E87, 0xF5E8, 0x7E88, 0xF5E9, 0x7E8A, 0xF5E7, + 0x7E8B, 0xF5EA, 0x7E8C, 0xC4F2, 0x7E8D, 0xF5EC, 0x7E8F, 0xC4F1, 0x7E91, 0xF742, 0x7E93, 0xC5D5, 0x7E94, 0xC5D7, 0x7E95, 0xF7EE, + 0x7E96, 0xC5D6, 0x7E97, 0xF8B9, 0x7E98, 0xF940, 0x7E99, 0xF942, 0x7E9A, 0xF8FE, 0x7E9B, 0xF941, 0x7E9C, 0xC66C, 0x7F36, 0xA6CE, + 0x7F38, 0xACFB, 0x7F39, 0xD26F, 0x7F3A, 0xAFCA, 0x7F3D, 0xB2DA, 0x7F3E, 0xDAFC, 0x7F3F, 0xDAFD, 0x7F43, 0xEADF, 0x7F44, 0xC16A, + 0x7F45, 0xEDE1, 0x7F48, 0xC2BB, 0x7F4A, 0xF2BA, 0x7F4B, 0xF2B9, 0x7F4C, 0xC4A2, 0x7F4D, 0xF5ED, 0x7F4F, 0xF743, 0x7F50, 0xC5F8, + 0x7F51, 0xCA49, 0x7F54, 0xAAC9, 0x7F55, 0xA875, 0x7F58, 0xD04D, 0x7F5B, 0xD360, 0x7F5C, 0xD35B, 0x7F5D, 0xD35F, 0x7F5E, 0xD35D, + 0x7F5F, 0xAFCB, 0x7F60, 0xD35E, 0x7F61, 0xD35C, 0x7F63, 0xD6F1, 0x7F65, 0xDAFE, 0x7F66, 0xDB40, 0x7F67, 0xDF69, 0x7F68, 0xDF6A, + 0x7F69, 0xB86E, 0x7F6A, 0xB86F, 0x7F6B, 0xDF68, 0x7F6C, 0xDF6B, 0x7F6D, 0xDF67, 0x7F6E, 0xB86D, 0x7F70, 0xBB40, 0x7F72, 0xB870, + 0x7F73, 0xE37A, 0x7F75, 0xBD7C, 0x7F76, 0xE6F1, 0x7F77, 0xBD7D, 0x7F79, 0xBFA9, 0x7F7A, 0xEAE2, 0x7F7B, 0xEAE0, 0x7F7C, 0xEAE1, + 0x7F7D, 0xEDE4, 0x7F7E, 0xEDE3, 0x7F7F, 0xEDE2, 0x7F83, 0xF2BB, 0x7F85, 0xC3B9, 0x7F86, 0xF2BC, 0x7F87, 0xF744, 0x7F88, 0xC5F9, + 0x7F89, 0xF8BA, 0x7F8A, 0xA6CF, 0x7F8B, 0xAACB, 0x7F8C, 0xAACA, 0x7F8D, 0xD04F, 0x7F8E, 0xACFC, 0x7F91, 0xD04E, 0x7F92, 0xD362, + 0x7F94, 0xAFCC, 0x7F95, 0xD6F2, 0x7F96, 0xD361, 0x7F9A, 0xB2DC, 0x7F9B, 0xD6F5, 0x7F9C, 0xD6F3, 0x7F9D, 0xD6F4, 0x7F9E, 0xB2DB, + 0x7FA0, 0xDB42, 0x7FA1, 0xDB43, 0x7FA2, 0xDB41, 0x7FA4, 0xB873, 0x7FA5, 0xDF6D, 0x7FA6, 0xDF6C, 0x7FA7, 0xDF6E, 0x7FA8, 0xB872, + 0x7FA9, 0xB871, 0x7FAC, 0xE6F2, 0x7FAD, 0xE6F4, 0x7FAF, 0xBD7E, 0x7FB0, 0xE6F3, 0x7FB1, 0xEAE3, 0x7FB2, 0xBFAA, 0x7FB3, 0xF079, + 0x7FB5, 0xF078, 0x7FB6, 0xC3BB, 0x7FB7, 0xF2BD, 0x7FB8, 0xC3BD, 0x7FB9, 0xC3BC, 0x7FBA, 0xF4B0, 0x7FBB, 0xF5EE, 0x7FBC, 0xC4F3, + 0x7FBD, 0xA6D0, 0x7FBE, 0xD050, 0x7FBF, 0xACFD, 0x7FC0, 0xD365, 0x7FC1, 0xAFCE, 0x7FC2, 0xD364, 0x7FC3, 0xD363, 0x7FC5, 0xAFCD, + 0x7FC7, 0xD6FB, 0x7FC9, 0xD6FD, 0x7FCA, 0xD6F6, 0x7FCB, 0xD6F7, 0x7FCC, 0xB2DD, 0x7FCD, 0xD6F8, 0x7FCE, 0xB2DE, 0x7FCF, 0xD6FC, + 0x7FD0, 0xD6F9, 0x7FD1, 0xD6FA, 0x7FD2, 0xB2DF, 0x7FD4, 0xB5BE, 0x7FD5, 0xB5BF, 0x7FD7, 0xDB44, 0x7FDB, 0xDF6F, 0x7FDC, 0xDF70, + 0x7FDE, 0xE37E, 0x7FDF, 0xBB43, 0x7FE0, 0xBB41, 0x7FE1, 0xBB42, 0x7FE2, 0xE37B, 0x7FE3, 0xE37C, 0x7FE5, 0xE37D, 0x7FE6, 0xE6F9, + 0x7FE8, 0xE6FA, 0x7FE9, 0xBDA1, 0x7FEA, 0xE6F7, 0x7FEB, 0xE6F6, 0x7FEC, 0xE6F8, 0x7FED, 0xE6F5, 0x7FEE, 0xBFAD, 0x7FEF, 0xEAE4, + 0x7FF0, 0xBFAB, 0x7FF1, 0xBFAC, 0x7FF2, 0xEDE6, 0x7FF3, 0xC16B, 0x7FF4, 0xEDE5, 0x7FF5, 0xEFA8, 0x7FF7, 0xF07A, 0x7FF8, 0xF07B, + 0x7FF9, 0xC2BC, 0x7FFB, 0xC2BD, 0x7FFC, 0xC16C, 0x7FFD, 0xF2BE, 0x7FFE, 0xF2BF, 0x7FFF, 0xF4B1, 0x8000, 0xC4A3, 0x8001, 0xA6D1, + 0x8003, 0xA6D2, 0x8004, 0xACFE, 0x8005, 0xAACC, 0x8006, 0xAFCF, 0x8007, 0xD051, 0x800B, 0xB5C0, 0x800C, 0xA6D3, 0x800D, 0xAD41, + 0x800E, 0xD052, 0x800F, 0xD053, 0x8010, 0xAD40, 0x8011, 0xAD42, 0x8012, 0xA6D4, 0x8014, 0xD054, 0x8015, 0xAFD1, 0x8016, 0xD366, + 0x8017, 0xAFD3, 0x8018, 0xAFD0, 0x8019, 0xAFD2, 0x801B, 0xD741, 0x801C, 0xB2E0, 0x801E, 0xD740, 0x801F, 0xD6FE, 0x8021, 0xDF71, + 0x8024, 0xE3A1, 0x8026, 0xBDA2, 0x8028, 0xBFAE, 0x8029, 0xEAE6, 0x802A, 0xEAE5, 0x802C, 0xEDE7, 0x8030, 0xF5EF, 0x8033, 0xA6D5, + 0x8034, 0xCB73, 0x8035, 0xCDAA, 0x8036, 0xAD43, 0x8037, 0xD055, 0x8039, 0xD368, 0x803D, 0xAFD4, 0x803E, 0xD367, 0x803F, 0xAFD5, + 0x8043, 0xD743, 0x8046, 0xB2E2, 0x8047, 0xD742, 0x8048, 0xD744, 0x804A, 0xB2E1, 0x804F, 0xDB46, 0x8050, 0xDB47, 0x8051, 0xDB45, + 0x8052, 0xB5C1, 0x8056, 0xB874, 0x8058, 0xB875, 0x805A, 0xBB45, 0x805C, 0xE3A3, 0x805D, 0xE3A2, 0x805E, 0xBB44, 0x8064, 0xE6FB, + 0x8067, 0xE6FC, 0x806C, 0xEAE7, 0x806F, 0xC170, 0x8070, 0xC16F, 0x8071, 0xC16D, 0x8072, 0xC16E, 0x8073, 0xC171, 0x8075, 0xF07C, + 0x8076, 0xC2BF, 0x8077, 0xC2BE, 0x8078, 0xF2C0, 0x8079, 0xF4B2, 0x807D, 0xC5A5, 0x807E, 0xC5A4, 0x807F, 0xA6D6, 0x8082, 0xD1FB, + 0x8084, 0xB877, 0x8085, 0xB5C2, 0x8086, 0xB876, 0x8087, 0xBB46, 0x8089, 0xA6D7, 0x808A, 0xC9A9, 0x808B, 0xA6D8, 0x808C, 0xA6D9, + 0x808F, 0xCDAB, 0x8090, 0xCB76, 0x8092, 0xCB77, 0x8093, 0xA877, 0x8095, 0xCB74, 0x8096, 0xA876, 0x8098, 0xA879, 0x8099, 0xCB75, + 0x809A, 0xA87B, 0x809B, 0xA87A, 0x809C, 0xCB78, 0x809D, 0xA878, 0x80A1, 0xAAD1, 0x80A2, 0xAACF, 0x80A3, 0xCDAD, 0x80A5, 0xAACE, + 0x80A9, 0xAAD3, 0x80AA, 0xAAD5, 0x80AB, 0xAAD2, 0x80AD, 0xCDB0, 0x80AE, 0xCDAC, 0x80AF, 0xAAD6, 0x80B1, 0xAAD0, 0x80B2, 0xA87C, + 0x80B4, 0xAAD4, 0x80B5, 0xCDAF, 0x80B8, 0xCDAE, 0x80BA, 0xAACD, 0x80C2, 0xD05B, 0x80C3, 0xAD47, 0x80C4, 0xAD48, 0x80C5, 0xD05D, + 0x80C7, 0xD057, 0x80C8, 0xD05A, 0x80C9, 0xD063, 0x80CA, 0xD061, 0x80CC, 0xAD49, 0x80CD, 0xD067, 0x80CE, 0xAD4C, 0x80CF, 0xD064, + 0x80D0, 0xD05C, 0x80D1, 0xD059, 0x80D4, 0xDB49, 0x80D5, 0xD062, 0x80D6, 0xAD44, 0x80D7, 0xD065, 0x80D8, 0xD056, 0x80D9, 0xD05F, + 0x80DA, 0xAD46, 0x80DB, 0xAD4B, 0x80DC, 0xD060, 0x80DD, 0xAD4F, 0x80DE, 0xAD4D, 0x80E0, 0xD058, 0x80E1, 0xAD4A, 0x80E3, 0xD05E, + 0x80E4, 0xAD4E, 0x80E5, 0xAD45, 0x80E6, 0xD066, 0x80ED, 0xAFDA, 0x80EF, 0xAFE3, 0x80F0, 0xAFD8, 0x80F1, 0xAFD6, 0x80F2, 0xD36A, + 0x80F3, 0xAFDE, 0x80F4, 0xAFDB, 0x80F5, 0xD36C, 0x80F8, 0xAFDD, 0x80F9, 0xD36B, 0x80FA, 0xD369, 0x80FB, 0xD36E, 0x80FC, 0xAFE2, + 0x80FD, 0xAFE0, 0x80FE, 0xDB48, 0x8100, 0xD36F, 0x8101, 0xD36D, 0x8102, 0xAFD7, 0x8105, 0xAFD9, 0x8106, 0xAFDC, 0x8108, 0xAFDF, + 0x810A, 0xAFE1, 0x8115, 0xD74E, 0x8116, 0xB2E4, 0x8118, 0xD745, 0x8119, 0xD747, 0x811B, 0xD748, 0x811D, 0xD750, 0x811E, 0xD74C, + 0x811F, 0xD74A, 0x8121, 0xD74D, 0x8122, 0xD751, 0x8123, 0xB2E5, 0x8124, 0xB2E9, 0x8125, 0xD746, 0x8127, 0xD74F, 0x8129, 0xB2E7, + 0x812B, 0xB2E6, 0x812C, 0xD74B, 0x812D, 0xD749, 0x812F, 0xB2E3, 0x8130, 0xB2E8, 0x8139, 0xB5C8, 0x813A, 0xDB51, 0x813D, 0xDB4F, + 0x813E, 0xB5CA, 0x8143, 0xDB4A, 0x8144, 0xDFA1, 0x8146, 0xB5C9, 0x8147, 0xDB4E, 0x814A, 0xDB4B, 0x814B, 0xB5C5, 0x814C, 0xB5CB, + 0x814D, 0xDB50, 0x814E, 0xB5C7, 0x814F, 0xDB4D, 0x8150, 0xBB47, 0x8151, 0xB5C6, 0x8152, 0xDB4C, 0x8153, 0xB5CC, 0x8154, 0xB5C4, + 0x8155, 0xB5C3, 0x815B, 0xDF77, 0x815C, 0xDF75, 0x815E, 0xDF7B, 0x8160, 0xDF73, 0x8161, 0xDFA2, 0x8162, 0xDF78, 0x8164, 0xDF72, + 0x8165, 0xB87B, 0x8166, 0xB8A3, 0x8167, 0xDF7D, 0x8169, 0xDF76, 0x816B, 0xB87E, 0x816E, 0xB87C, 0x816F, 0xDF7E, 0x8170, 0xB879, + 0x8171, 0xB878, 0x8172, 0xDF79, 0x8173, 0xB87D, 0x8174, 0xB5CD, 0x8176, 0xDF7C, 0x8177, 0xDF74, 0x8178, 0xB87A, 0x8179, 0xB8A1, + 0x817A, 0xB8A2, 0x817F, 0xBB4C, 0x8180, 0xBB48, 0x8182, 0xBB4D, 0x8183, 0xE3A6, 0x8186, 0xE3A5, 0x8187, 0xE3A7, 0x8188, 0xBB4A, + 0x8189, 0xE3A4, 0x818A, 0xBB4B, 0x818B, 0xE3AA, 0x818C, 0xE3A9, 0x818D, 0xE3A8, 0x818F, 0xBB49, 0x8195, 0xE741, 0x8197, 0xE744, + 0x8198, 0xBDA8, 0x8199, 0xE743, 0x819A, 0xBDA7, 0x819B, 0xBDA3, 0x819C, 0xBDA4, 0x819D, 0xBDA5, 0x819E, 0xE740, 0x819F, 0xE6FE, + 0x81A0, 0xBDA6, 0x81A2, 0xE742, 0x81A3, 0xE6FD, 0x81A6, 0xEAE9, 0x81A7, 0xEAF3, 0x81A8, 0xBFB1, 0x81A9, 0xBFB0, 0x81AB, 0xEAED, + 0x81AC, 0xEAEF, 0x81AE, 0xEAEA, 0x81B0, 0xEAEE, 0x81B1, 0xEAE8, 0x81B2, 0xEAF1, 0x81B3, 0xBFAF, 0x81B4, 0xEAF0, 0x81B5, 0xEAEC, + 0x81B7, 0xEAF2, 0x81B9, 0xEAEB, 0x81BA, 0xC174, 0x81BB, 0xEDE8, 0x81BC, 0xEDEE, 0x81BD, 0xC178, 0x81BE, 0xC17A, 0x81BF, 0xC177, + 0x81C0, 0xC176, 0x81C2, 0xC175, 0x81C3, 0xC173, 0x81C4, 0xEDE9, 0x81C5, 0xEDEC, 0x81C6, 0xC172, 0x81C7, 0xEDED, 0x81C9, 0xC179, + 0x81CA, 0xEDEB, 0x81CC, 0xEDEA, 0x81CD, 0xC2C0, 0x81CF, 0xC2C1, 0x81D0, 0xF0A1, 0x81D1, 0xF07D, 0x81D2, 0xF07E, 0x81D5, 0xF2C2, + 0x81D7, 0xF2C1, 0x81D8, 0xC3BE, 0x81D9, 0xF4B4, 0x81DA, 0xC4A4, 0x81DB, 0xF4B3, 0x81DD, 0xF5F0, 0x81DE, 0xF745, 0x81DF, 0xC5A6, + 0x81E0, 0xF943, 0x81E1, 0xF944, 0x81E2, 0xC5D8, 0x81E3, 0xA6DA, 0x81E5, 0xAAD7, 0x81E6, 0xDB52, 0x81E7, 0xBB4E, 0x81E8, 0xC17B, + 0x81E9, 0xEDEF, 0x81EA, 0xA6DB, 0x81EC, 0xAFE5, 0x81ED, 0xAFE4, 0x81EE, 0xDB53, 0x81F2, 0xEAF4, 0x81F3, 0xA6DC, 0x81F4, 0xAD50, + 0x81F7, 0xDB54, 0x81F8, 0xDB55, 0x81F9, 0xDB56, 0x81FA, 0xBB4F, 0x81FB, 0xBFB2, 0x81FC, 0xA6DD, 0x81FE, 0xAAD8, 0x81FF, 0xD068, + 0x8200, 0xAFE6, 0x8201, 0xD370, 0x8202, 0xB2EA, 0x8204, 0xDB57, 0x8205, 0xB8A4, 0x8207, 0xBB50, 0x8208, 0xBFB3, 0x8209, 0xC17C, + 0x820A, 0xC2C2, 0x820B, 0xF4B5, 0x820C, 0xA6DE, 0x820D, 0xAAD9, 0x8210, 0xAFE7, 0x8211, 0xD752, 0x8212, 0xB5CE, 0x8214, 0xBB51, + 0x8215, 0xE3AB, 0x8216, 0xE745, 0x821B, 0xA6DF, 0x821C, 0xB5CF, 0x821D, 0xDFA3, 0x821E, 0xBB52, 0x821F, 0xA6E0, 0x8220, 0xCDB1, + 0x8221, 0xD069, 0x8222, 0xAD51, 0x8225, 0xD372, 0x8228, 0xAFEA, 0x822A, 0xAFE8, 0x822B, 0xAFE9, 0x822C, 0xAFEB, 0x822F, 0xD371, + 0x8232, 0xD757, 0x8233, 0xD754, 0x8234, 0xD756, 0x8235, 0xB2EB, 0x8236, 0xB2ED, 0x8237, 0xB2EC, 0x8238, 0xD753, 0x8239, 0xB2EE, + 0x823A, 0xD755, 0x823C, 0xDB58, 0x823D, 0xDB59, 0x823F, 0xDB5A, 0x8240, 0xDFA6, 0x8242, 0xDFA7, 0x8244, 0xDFA5, 0x8245, 0xDFA8, + 0x8247, 0xB8A5, 0x8249, 0xDFA4, 0x824B, 0xBB53, 0x824E, 0xE74A, 0x824F, 0xE746, 0x8250, 0xE749, 0x8251, 0xE74B, 0x8252, 0xE748, + 0x8253, 0xE747, 0x8255, 0xEAF5, 0x8256, 0xEAF6, 0x8257, 0xEAF7, 0x8258, 0xBFB4, 0x8259, 0xBFB5, 0x825A, 0xEDF1, 0x825B, 0xEDF0, + 0x825C, 0xEDF2, 0x825E, 0xF0A3, 0x825F, 0xF0A2, 0x8261, 0xF2C4, 0x8263, 0xF2C5, 0x8264, 0xF2C3, 0x8266, 0xC4A5, 0x8268, 0xF4B6, + 0x8269, 0xF4B7, 0x826B, 0xF746, 0x826C, 0xF7EF, 0x826D, 0xF8BB, 0x826E, 0xA6E1, 0x826F, 0xA87D, 0x8271, 0xC17D, 0x8272, 0xA6E2, + 0x8274, 0xD758, 0x8275, 0xDB5B, 0x8277, 0xC641, 0x8278, 0xCA4A, 0x827C, 0xCA4B, 0x827D, 0xCA4D, 0x827E, 0xA6E3, 0x827F, 0xCA4E, + 0x8280, 0xCA4C, 0x8283, 0xCBA2, 0x8284, 0xCBA3, 0x8285, 0xCB7B, 0x828A, 0xCBA1, 0x828B, 0xA8A1, 0x828D, 0xA8A2, 0x828E, 0xCB7C, + 0x828F, 0xCB7A, 0x8290, 0xCB79, 0x8291, 0xCB7D, 0x8292, 0xA87E, 0x8293, 0xCB7E, 0x8294, 0xD06A, 0x8298, 0xCDB6, 0x8299, 0xAADC, + 0x829A, 0xCDB5, 0x829B, 0xCDB7, 0x829D, 0xAADB, 0x829E, 0xCDBC, 0x829F, 0xAADF, 0x82A0, 0xCDB2, 0x82A1, 0xCDC0, 0x82A2, 0xCDC6, + 0x82A3, 0xAAE6, 0x82A4, 0xCDC3, 0x82A5, 0xAAE3, 0x82A7, 0xCDB9, 0x82A8, 0xCDBF, 0x82A9, 0xCDC1, 0x82AB, 0xCDB4, 0x82AC, 0xAAE2, + 0x82AD, 0xAADD, 0x82AE, 0xCDBA, 0x82AF, 0xAAE4, 0x82B0, 0xAAE7, 0x82B1, 0xAAE1, 0x82B3, 0xAADA, 0x82B4, 0xCDBE, 0x82B5, 0xCDB8, + 0x82B6, 0xCDC5, 0x82B7, 0xAAE9, 0x82B8, 0xAAE5, 0x82B9, 0xAAE0, 0x82BA, 0xCDBD, 0x82BB, 0xAFEC, 0x82BC, 0xCDBB, 0x82BD, 0xAADE, + 0x82BE, 0xAAE8, 0x82C0, 0xCDB3, 0x82C2, 0xCDC2, 0x82C3, 0xCDC4, 0x82D1, 0xAD62, 0x82D2, 0xAD5C, 0x82D3, 0xAD64, 0x82D4, 0xAD61, + 0x82D5, 0xD071, 0x82D6, 0xD074, 0x82D7, 0xAD5D, 0x82D9, 0xD06B, 0x82DB, 0xAD56, 0x82DC, 0xAD60, 0x82DE, 0xAD63, 0x82DF, 0xAD65, + 0x82E0, 0xD0A2, 0x82E1, 0xD077, 0x82E3, 0xAD55, 0x82E4, 0xD0A1, 0x82E5, 0xAD59, 0x82E6, 0xAD57, 0x82E7, 0xAD52, 0x82E8, 0xD06F, + 0x82EA, 0xD07E, 0x82EB, 0xD073, 0x82EC, 0xD076, 0x82ED, 0xD0A5, 0x82EF, 0xAD66, 0x82F0, 0xD07D, 0x82F1, 0xAD5E, 0x82F2, 0xD078, + 0x82F3, 0xD0A4, 0x82F4, 0xD075, 0x82F5, 0xD079, 0x82F6, 0xD07C, 0x82F9, 0xD06D, 0x82FA, 0xD0A3, 0x82FB, 0xD07B, 0x82FE, 0xD06C, + 0x8300, 0xD070, 0x8301, 0xAD5F, 0x8302, 0xAD5A, 0x8303, 0xAD53, 0x8304, 0xAD58, 0x8305, 0xAD54, 0x8306, 0xAD67, 0x8307, 0xD06E, + 0x8308, 0xD3A5, 0x8309, 0xAD5B, 0x830C, 0xD07A, 0x830D, 0xCE41, 0x8316, 0xD3A8, 0x8317, 0xAFFA, 0x8319, 0xD376, 0x831B, 0xD3A3, + 0x831C, 0xD37D, 0x831E, 0xD3B2, 0x8320, 0xD3AA, 0x8322, 0xD37E, 0x8324, 0xD3A9, 0x8325, 0xD378, 0x8326, 0xD37C, 0x8327, 0xD3B5, + 0x8328, 0xAFFD, 0x8329, 0xD3AD, 0x832A, 0xD3A4, 0x832B, 0xAFED, 0x832C, 0xD3B3, 0x832D, 0xD374, 0x832F, 0xD3AC, 0x8331, 0xAFFC, + 0x8332, 0xAFF7, 0x8333, 0xD373, 0x8334, 0xAFF5, 0x8335, 0xAFF4, 0x8336, 0xAFF9, 0x8337, 0xD3AB, 0x8338, 0xAFF1, 0x8339, 0xAFF8, + 0x833A, 0xD072, 0x833B, 0xDB5C, 0x833C, 0xD3A6, 0x833F, 0xD37A, 0x8340, 0xAFFB, 0x8341, 0xD37B, 0x8342, 0xD3A1, 0x8343, 0xAFFE, + 0x8344, 0xD375, 0x8345, 0xD3AF, 0x8347, 0xD3AE, 0x8348, 0xD3B6, 0x8349, 0xAFF3, 0x834A, 0xAFF0, 0x834B, 0xD3B4, 0x834C, 0xD3B0, + 0x834D, 0xD3A7, 0x834E, 0xD3A2, 0x834F, 0xAFF6, 0x8350, 0xAFF2, 0x8351, 0xD377, 0x8352, 0xAFEE, 0x8353, 0xD3B1, 0x8354, 0xAFEF, + 0x8356, 0xD379, 0x8373, 0xD75E, 0x8374, 0xD760, 0x8375, 0xD765, 0x8376, 0xD779, 0x8377, 0xB2FC, 0x8378, 0xB2F2, 0x837A, 0xD75D, + 0x837B, 0xB2FD, 0x837C, 0xB2FE, 0x837D, 0xD768, 0x837E, 0xD76F, 0x837F, 0xD775, 0x8381, 0xD762, 0x8383, 0xD769, 0x8386, 0xB340, + 0x8387, 0xD777, 0x8388, 0xD772, 0x8389, 0xB2FA, 0x838A, 0xB2F8, 0x838B, 0xD76E, 0x838C, 0xD76A, 0x838D, 0xD75C, 0x838E, 0xB2EF, + 0x838F, 0xD761, 0x8390, 0xD759, 0x8392, 0xB2F7, 0x8393, 0xB2F9, 0x8394, 0xD766, 0x8395, 0xD763, 0x8396, 0xB2F4, 0x8397, 0xD773, + 0x8398, 0xB2F1, 0x8399, 0xD764, 0x839A, 0xD77A, 0x839B, 0xD76C, 0x839D, 0xD76B, 0x839E, 0xB2F0, 0x83A0, 0xB2FB, 0x83A2, 0xB2F3, + 0x83A3, 0xD75A, 0x83A4, 0xD75F, 0x83A5, 0xD770, 0x83A6, 0xD776, 0x83A7, 0xB341, 0x83A8, 0xD75B, 0x83A9, 0xD767, 0x83AA, 0xD76D, + 0x83AB, 0xB2F6, 0x83AE, 0xD778, 0x83AF, 0xD771, 0x83B0, 0xD774, 0x83BD, 0xB2F5, 0x83BF, 0xDB6C, 0x83C0, 0xDB60, 0x83C1, 0xB5D7, + 0x83C2, 0xDB7D, 0x83C3, 0xDBA7, 0x83C4, 0xDBAA, 0x83C5, 0xB5D5, 0x83C6, 0xDB68, 0x83C7, 0xDBA3, 0x83C8, 0xDB69, 0x83C9, 0xDB77, + 0x83CA, 0xB5E2, 0x83CB, 0xDB73, 0x83CC, 0xB5DF, 0x83CE, 0xDB74, 0x83CF, 0xDB5D, 0x83D1, 0xDBA4, 0x83D4, 0xB5E8, 0x83D5, 0xDBA1, + 0x83D6, 0xDB75, 0x83D7, 0xDBAC, 0x83D8, 0xDB70, 0x83D9, 0xDFC8, 0x83DB, 0xDBAF, 0x83DC, 0xB5E6, 0x83DD, 0xDB6E, 0x83DE, 0xDB7A, + 0x83DF, 0xB5E9, 0x83E0, 0xB5D4, 0x83E1, 0xDB72, 0x83E2, 0xDBAD, 0x83E3, 0xDB6B, 0x83E4, 0xDB64, 0x83E5, 0xDB6F, 0x83E7, 0xDB63, + 0x83E8, 0xDB61, 0x83E9, 0xB5D0, 0x83EA, 0xDBA5, 0x83EB, 0xDB6A, 0x83EC, 0xDBA8, 0x83EE, 0xDBA9, 0x83EF, 0xB5D8, 0x83F0, 0xB5DD, + 0x83F1, 0xB5D9, 0x83F2, 0xB5E1, 0x83F3, 0xDB7E, 0x83F4, 0xB5DA, 0x83F5, 0xDB76, 0x83F6, 0xDB66, 0x83F8, 0xB5D2, 0x83F9, 0xDB5E, + 0x83FA, 0xDBA2, 0x83FB, 0xDBAB, 0x83FC, 0xDB65, 0x83FD, 0xB5E0, 0x83FE, 0xDBB0, 0x83FF, 0xDB71, 0x8401, 0xDB6D, 0x8403, 0xB5D1, + 0x8404, 0xB5E5, 0x8406, 0xDB7C, 0x8407, 0xB5E7, 0x8409, 0xDB78, 0x840A, 0xB5DC, 0x840B, 0xB5D6, 0x840C, 0xB5DE, 0x840D, 0xB5D3, + 0x840E, 0xB5E4, 0x840F, 0xDB79, 0x8410, 0xDB67, 0x8411, 0xDB7B, 0x8412, 0xDB62, 0x8413, 0xDBA6, 0x841B, 0xDBAE, 0x8423, 0xDB5F, + 0x8429, 0xDFC7, 0x842B, 0xDFDD, 0x842C, 0xB855, 0x842D, 0xDFCC, 0x842F, 0xDFCA, 0x8430, 0xDFB5, 0x8431, 0xB8A9, 0x8432, 0xDFC5, + 0x8433, 0xDFD9, 0x8434, 0xDFC1, 0x8435, 0xB8B1, 0x8436, 0xDFD8, 0x8437, 0xDFBF, 0x8438, 0xB5E3, 0x8439, 0xDFCF, 0x843A, 0xDFC0, + 0x843B, 0xDFD6, 0x843C, 0xB8B0, 0x843D, 0xB8A8, 0x843F, 0xDFAA, 0x8440, 0xDFB2, 0x8442, 0xDFCB, 0x8443, 0xDFC3, 0x8444, 0xDFDC, + 0x8445, 0xDFC6, 0x8446, 0xB8B6, 0x8447, 0xDFD7, 0x8449, 0xB8AD, 0x844B, 0xDFC9, 0x844C, 0xDFD1, 0x844D, 0xDFB6, 0x844E, 0xDFD0, + 0x8450, 0xDFE1, 0x8451, 0xDFB1, 0x8452, 0xDFD2, 0x8454, 0xDFDF, 0x8456, 0xDFAB, 0x8457, 0xB5DB, 0x8459, 0xDFB9, 0x845A, 0xDFB8, + 0x845B, 0xB8AF, 0x845D, 0xDFBC, 0x845E, 0xDFBE, 0x845F, 0xDFCD, 0x8460, 0xDFDE, 0x8461, 0xB8B2, 0x8463, 0xB8B3, 0x8465, 0xDFB0, + 0x8466, 0xB8AB, 0x8467, 0xDFB4, 0x8468, 0xDFDA, 0x8469, 0xB8B4, 0x846B, 0xB8AC, 0x846C, 0xB8AE, 0x846D, 0xB8B5, 0x846E, 0xDFE0, + 0x846F, 0xDFD3, 0x8470, 0xDFCE, 0x8473, 0xDFBB, 0x8474, 0xDFBA, 0x8475, 0xB8AA, 0x8476, 0xDFAC, 0x8477, 0xB8A7, 0x8478, 0xDFC4, + 0x8479, 0xDFAD, 0x847A, 0xDFC2, 0x847D, 0xDFB7, 0x847E, 0xDFDB, 0x8482, 0xB8A6, 0x8486, 0xDFB3, 0x848D, 0xDFAF, 0x848E, 0xDFD5, + 0x848F, 0xDFAE, 0x8490, 0xBB60, 0x8491, 0xE3D3, 0x8494, 0xE3C2, 0x8497, 0xE3AC, 0x8498, 0xE3CA, 0x8499, 0xBB58, 0x849A, 0xE3BB, + 0x849B, 0xE3C5, 0x849C, 0xBB5B, 0x849D, 0xE3BE, 0x849E, 0xBB59, 0x849F, 0xE3AF, 0x84A0, 0xE3CD, 0x84A1, 0xE3AE, 0x84A2, 0xE3C1, + 0x84A4, 0xE3AD, 0x84A7, 0xE3BF, 0x84A8, 0xE3C8, 0x84A9, 0xE3C6, 0x84AA, 0xE3BA, 0x84AB, 0xE3B5, 0x84AC, 0xE3B3, 0x84AE, 0xE3B4, + 0x84AF, 0xE3C7, 0x84B0, 0xE3D2, 0x84B1, 0xE3BC, 0x84B2, 0xBB5A, 0x84B4, 0xE3B7, 0x84B6, 0xE3CB, 0x84B8, 0xBB5D, 0x84B9, 0xE3B6, + 0x84BA, 0xE3B0, 0x84BB, 0xE3C0, 0x84BC, 0xBB61, 0x84BF, 0xBB55, 0x84C0, 0xBB5E, 0x84C1, 0xE3B8, 0x84C2, 0xE3B2, 0x84C4, 0xBB57, + 0x84C5, 0xDFD4, 0x84C6, 0xBB56, 0x84C7, 0xE3C3, 0x84C9, 0xBB54, 0x84CA, 0xBB63, 0x84CB, 0xBB5C, 0x84CC, 0xE3C4, 0x84CD, 0xE3B9, + 0x84CE, 0xE3B1, 0x84CF, 0xE3CC, 0x84D0, 0xE3BD, 0x84D1, 0xBB62, 0x84D2, 0xE3D0, 0x84D3, 0xBB5F, 0x84D4, 0xE3CF, 0x84D6, 0xE3C9, + 0x84D7, 0xE3CE, 0x84DB, 0xE3D1, 0x84E7, 0xE773, 0x84E8, 0xE774, 0x84E9, 0xE767, 0x84EA, 0xE766, 0x84EB, 0xE762, 0x84EC, 0xBDB4, + 0x84EE, 0xBDAC, 0x84EF, 0xE776, 0x84F0, 0xE775, 0x84F1, 0xDFA9, 0x84F2, 0xE75F, 0x84F3, 0xE763, 0x84F4, 0xE75D, 0x84F6, 0xE770, + 0x84F7, 0xE761, 0x84F9, 0xE777, 0x84FA, 0xE75A, 0x84FB, 0xE758, 0x84FC, 0xE764, 0x84FD, 0xE76E, 0x84FE, 0xE769, 0x84FF, 0xBDB6, + 0x8500, 0xE74F, 0x8502, 0xE76D, 0x8506, 0xBDB7, 0x8507, 0xDFBD, 0x8508, 0xE75B, 0x8509, 0xE752, 0x850A, 0xE755, 0x850B, 0xE77B, + 0x850C, 0xE75C, 0x850D, 0xE753, 0x850E, 0xE751, 0x850F, 0xE74E, 0x8511, 0xBDB0, 0x8512, 0xE765, 0x8513, 0xBDAF, 0x8514, 0xBDB3, + 0x8515, 0xE760, 0x8516, 0xE768, 0x8517, 0xBDA9, 0x8518, 0xE778, 0x8519, 0xE77C, 0x851A, 0xBDAB, 0x851C, 0xE757, 0x851D, 0xE76B, + 0x851E, 0xE76F, 0x851F, 0xE754, 0x8520, 0xE779, 0x8521, 0xBDB2, 0x8523, 0xBDB1, 0x8524, 0xE74C, 0x8525, 0xBDB5, 0x8526, 0xE772, + 0x8527, 0xE756, 0x8528, 0xE76A, 0x8529, 0xE750, 0x852A, 0xE75E, 0x852B, 0xE759, 0x852C, 0xBDAD, 0x852D, 0xBDAE, 0x852E, 0xE76C, + 0x852F, 0xE77D, 0x8530, 0xE77A, 0x8531, 0xE771, 0x853B, 0xE74D, 0x853D, 0xBDAA, 0x853E, 0xEB49, 0x8540, 0xEB40, 0x8541, 0xEB43, + 0x8543, 0xBFBB, 0x8544, 0xEB45, 0x8545, 0xEAF9, 0x8546, 0xEB41, 0x8547, 0xEB47, 0x8548, 0xBFB8, 0x8549, 0xBFBC, 0x854A, 0xBFB6, + 0x854D, 0xEAFB, 0x854E, 0xEB4C, 0x8551, 0xEB46, 0x8553, 0xEAFC, 0x8554, 0xEB55, 0x8555, 0xEB4F, 0x8556, 0xEAF8, 0x8557, 0xEE46, + 0x8558, 0xEAFE, 0x8559, 0xBFB7, 0x855B, 0xEB4A, 0x855D, 0xEB54, 0x855E, 0xBFBF, 0x8560, 0xEB51, 0x8561, 0xEAFD, 0x8562, 0xEB44, + 0x8563, 0xEB48, 0x8564, 0xEB42, 0x8565, 0xEB56, 0x8566, 0xEB53, 0x8567, 0xEB50, 0x8568, 0xBFB9, 0x8569, 0xBFBA, 0x856A, 0xBFBE, + 0x856B, 0xEAFA, 0x856C, 0xEB57, 0x856D, 0xBFBD, 0x856E, 0xEB4D, 0x8571, 0xEB4B, 0x8575, 0xEB4E, 0x8576, 0xEE53, 0x8577, 0xEE40, + 0x8578, 0xEE45, 0x8579, 0xEE52, 0x857A, 0xEE44, 0x857B, 0xEDFB, 0x857C, 0xEE41, 0x857E, 0xC1A2, 0x8580, 0xEDF4, 0x8581, 0xEE4D, + 0x8582, 0xEE4F, 0x8583, 0xEDF3, 0x8584, 0xC1A1, 0x8585, 0xEE51, 0x8586, 0xEE49, 0x8587, 0xC1A8, 0x8588, 0xEE50, 0x8589, 0xEE42, + 0x858A, 0xC1AA, 0x858B, 0xEDF9, 0x858C, 0xEB52, 0x858D, 0xEE4A, 0x858E, 0xEE47, 0x858F, 0xEDF5, 0x8590, 0xEE55, 0x8591, 0xC1A4, + 0x8594, 0xC1A5, 0x8595, 0xEDF7, 0x8596, 0xEE48, 0x8598, 0xEE54, 0x8599, 0xEE4B, 0x859A, 0xEDFD, 0x859B, 0xC1A7, 0x859C, 0xC1A3, + 0x859D, 0xEE4C, 0x859E, 0xEDFE, 0x859F, 0xEE56, 0x85A0, 0xEDF8, 0x85A1, 0xEE43, 0x85A2, 0xEE4E, 0x85A3, 0xEDFA, 0x85A4, 0xEDFC, + 0x85A6, 0xC2CB, 0x85A7, 0xEDF6, 0x85A8, 0xC1A9, 0x85A9, 0xC2C4, 0x85AA, 0xC17E, 0x85AF, 0xC1A6, 0x85B0, 0xC2C8, 0x85B1, 0xF0B3, + 0x85B3, 0xF0A9, 0x85B4, 0xF0A4, 0x85B5, 0xF0AA, 0x85B6, 0xF0B4, 0x85B7, 0xF0B8, 0x85B8, 0xF0B7, 0x85B9, 0xC2CA, 0x85BA, 0xC2C9, + 0x85BD, 0xF0AB, 0x85BE, 0xF0B9, 0x85BF, 0xF0AE, 0x85C0, 0xF0A6, 0x85C2, 0xF0A8, 0x85C3, 0xF0A7, 0x85C4, 0xF0AD, 0x85C5, 0xF0B2, + 0x85C6, 0xF0A5, 0x85C7, 0xF0AC, 0x85C8, 0xF0B1, 0x85C9, 0xC2C7, 0x85CB, 0xF0AF, 0x85CD, 0xC2C5, 0x85CE, 0xF0B0, 0x85CF, 0xC2C3, + 0x85D0, 0xC2C6, 0x85D1, 0xF2D5, 0x85D2, 0xF0B5, 0x85D5, 0xC3C2, 0x85D7, 0xF2CD, 0x85D8, 0xF2D1, 0x85D9, 0xF2C9, 0x85DA, 0xF2CC, + 0x85DC, 0xF2D4, 0x85DD, 0xC3C0, 0x85DE, 0xF2D9, 0x85DF, 0xF2D2, 0x85E1, 0xF2CA, 0x85E2, 0xF2DA, 0x85E3, 0xF2D3, 0x85E4, 0xC3C3, + 0x85E5, 0xC3C4, 0x85E6, 0xF2D7, 0x85E8, 0xF2CB, 0x85E9, 0xC3BF, 0x85EA, 0xC3C1, 0x85EB, 0xF2C6, 0x85EC, 0xF2CE, 0x85ED, 0xF2C8, + 0x85EF, 0xF2D8, 0x85F0, 0xF2D6, 0x85F1, 0xF2C7, 0x85F2, 0xF2CF, 0x85F6, 0xF4BE, 0x85F7, 0xC3C5, 0x85F8, 0xF2D0, 0x85F9, 0xC4A7, + 0x85FA, 0xC4A9, 0x85FB, 0xC4A6, 0x85FD, 0xF4C3, 0x85FE, 0xF4BB, 0x85FF, 0xF4B9, 0x8600, 0xF4BD, 0x8601, 0xF4BA, 0x8604, 0xF4BF, + 0x8605, 0xF4C1, 0x8606, 0xC4AA, 0x8607, 0xC4AC, 0x8609, 0xF4C0, 0x860A, 0xC4AD, 0x860B, 0xC4AB, 0x860C, 0xF4C2, 0x8611, 0xC4A8, + 0x8617, 0xC4F4, 0x8618, 0xF5F1, 0x8619, 0xF5F7, 0x861A, 0xC4F6, 0x861B, 0xF4BC, 0x861C, 0xF5F6, 0x861E, 0xF5FD, 0x861F, 0xF5F4, + 0x8620, 0xF5FB, 0x8621, 0xF5FA, 0x8622, 0xF4B8, 0x8623, 0xF5F5, 0x8624, 0xF0B6, 0x8625, 0xF5FE, 0x8626, 0xF5F3, 0x8627, 0xF5F8, + 0x8629, 0xF5FC, 0x862A, 0xF5F2, 0x862C, 0xF74A, 0x862D, 0xC4F5, 0x862E, 0xF5F9, 0x8631, 0xF7F4, 0x8632, 0xF74B, 0x8633, 0xF749, + 0x8634, 0xF747, 0x8635, 0xF748, 0x8636, 0xF74C, 0x8638, 0xC5D9, 0x8639, 0xF7F2, 0x863A, 0xF7F0, 0x863B, 0xF7F5, 0x863C, 0xF7F3, + 0x863E, 0xF7F6, 0x863F, 0xC5DA, 0x8640, 0xF7F1, 0x8643, 0xF8BC, 0x8646, 0xF945, 0x8647, 0xF946, 0x8648, 0xF947, 0x864B, 0xF9C7, + 0x864C, 0xF9BD, 0x864D, 0xCA4F, 0x864E, 0xAAEA, 0x8650, 0xAD68, 0x8652, 0xD3B8, 0x8653, 0xD3B7, 0x8654, 0xB040, 0x8655, 0xB342, + 0x8656, 0xD77C, 0x8659, 0xD77B, 0x865B, 0xB5EA, 0x865C, 0xB8B8, 0x865E, 0xB8B7, 0x865F, 0xB8B9, 0x8661, 0xE3D4, 0x8662, 0xE77E, + 0x8663, 0xEB58, 0x8664, 0xEB5A, 0x8665, 0xEB59, 0x8667, 0xC1AB, 0x8668, 0xEE57, 0x8669, 0xF0BA, 0x866A, 0xF9A5, 0x866B, 0xA6E4, + 0x866D, 0xCDC9, 0x866E, 0xCDCA, 0x866F, 0xCDC8, 0x8670, 0xCDC7, 0x8671, 0xAAEB, 0x8673, 0xD0A9, 0x8674, 0xD0A7, 0x8677, 0xD0A6, + 0x8679, 0xAD69, 0x867A, 0xAD6B, 0x867B, 0xAD6A, 0x867C, 0xD0A8, 0x8685, 0xD3C4, 0x8686, 0xD3C1, 0x8687, 0xD3BF, 0x868A, 0xB041, + 0x868B, 0xD3C2, 0x868C, 0xB046, 0x868D, 0xD3BC, 0x868E, 0xD3CB, 0x8690, 0xD3CD, 0x8691, 0xD3BD, 0x8693, 0xB043, 0x8694, 0xD3CE, + 0x8695, 0xD3C9, 0x8696, 0xD3BB, 0x8697, 0xD3C0, 0x8698, 0xD3CA, 0x8699, 0xD3C6, 0x869A, 0xD3C3, 0x869C, 0xB048, 0x869D, 0xD3CC, + 0x869E, 0xD3BE, 0x86A1, 0xD3C7, 0x86A2, 0xD3B9, 0x86A3, 0xB047, 0x86A4, 0xB044, 0x86A5, 0xD3C5, 0x86A7, 0xD3C8, 0x86A8, 0xD3BA, + 0x86A9, 0xB045, 0x86AA, 0xB042, 0x86AF, 0xB34C, 0x86B0, 0xD7A5, 0x86B1, 0xB34B, 0x86B3, 0xD7A8, 0x86B4, 0xD7AB, 0x86B5, 0xB348, + 0x86B6, 0xB346, 0x86B7, 0xD77E, 0x86B8, 0xD7A9, 0x86B9, 0xD7A7, 0x86BA, 0xD7A4, 0x86BB, 0xD7AC, 0x86BC, 0xD7AD, 0x86BD, 0xD7AF, + 0x86BE, 0xD7B0, 0x86BF, 0xD77D, 0x86C0, 0xB345, 0x86C1, 0xD7A2, 0x86C2, 0xD7A1, 0x86C3, 0xD7AE, 0x86C4, 0xB347, 0x86C5, 0xD7A3, + 0x86C6, 0xB349, 0x86C7, 0xB344, 0x86C8, 0xD7A6, 0x86C9, 0xB34D, 0x86CB, 0xB34A, 0x86CC, 0xD7AA, 0x86D0, 0xB5F1, 0x86D1, 0xDBBF, + 0x86D3, 0xDBB4, 0x86D4, 0xB5EE, 0x86D6, 0xDFE7, 0x86D7, 0xDBBD, 0x86D8, 0xDBB1, 0x86D9, 0xB5EC, 0x86DA, 0xDBB6, 0x86DB, 0xB5EF, + 0x86DC, 0xDBBA, 0x86DD, 0xDBB8, 0x86DE, 0xB5F2, 0x86DF, 0xB5EB, 0x86E2, 0xDBB2, 0x86E3, 0xDBB5, 0x86E4, 0xB5F0, 0x86E6, 0xDBB3, + 0x86E8, 0xDBBE, 0x86E9, 0xDBBC, 0x86EA, 0xDBB7, 0x86EB, 0xDBB9, 0x86EC, 0xDBBB, 0x86ED, 0xB5ED, 0x86F5, 0xDFE8, 0x86F6, 0xDFEE, + 0x86F7, 0xDFE4, 0x86F8, 0xDFEA, 0x86F9, 0xB8BA, 0x86FA, 0xDFE6, 0x86FB, 0xB8C0, 0x86FE, 0xB8BF, 0x8700, 0xB8BE, 0x8701, 0xDFED, + 0x8702, 0xB8C1, 0x8703, 0xB8C2, 0x8704, 0xDFE3, 0x8705, 0xDFF0, 0x8706, 0xB8C3, 0x8707, 0xB8BD, 0x8708, 0xB8BC, 0x8709, 0xDFEC, + 0x870A, 0xB8C4, 0x870B, 0xDFE2, 0x870C, 0xDFE5, 0x870D, 0xDFEF, 0x870E, 0xDFEB, 0x8711, 0xE3F4, 0x8712, 0xE3E9, 0x8713, 0xB8BB, + 0x8718, 0xBB6A, 0x8719, 0xE3DD, 0x871A, 0xE3F2, 0x871B, 0xE3DE, 0x871C, 0xBB65, 0x871E, 0xE3DB, 0x8720, 0xE3E4, 0x8721, 0xE3DC, + 0x8722, 0xBB67, 0x8723, 0xE3D6, 0x8724, 0xE3F1, 0x8725, 0xBB68, 0x8726, 0xE3EE, 0x8727, 0xE3EF, 0x8728, 0xE3D7, 0x8729, 0xBB6D, + 0x872A, 0xE3E6, 0x872C, 0xE3E0, 0x872D, 0xE3E7, 0x872E, 0xE3DA, 0x8730, 0xE3F3, 0x8731, 0xE3EB, 0x8732, 0xE3E5, 0x8733, 0xE3D5, + 0x8734, 0xBB69, 0x8735, 0xE3EC, 0x8737, 0xBB6C, 0x8738, 0xE3F0, 0x873A, 0xE3EA, 0x873B, 0xBB66, 0x873C, 0xE3E8, 0x873E, 0xE3E2, + 0x873F, 0xBB64, 0x8740, 0xE3D9, 0x8741, 0xE3E1, 0x8742, 0xE3ED, 0x8743, 0xE3DF, 0x8746, 0xE3E3, 0x874C, 0xBDC1, 0x874D, 0xDFE9, + 0x874E, 0xE7B2, 0x874F, 0xE7BB, 0x8750, 0xE7B1, 0x8751, 0xE7AD, 0x8752, 0xE7AA, 0x8753, 0xBDC2, 0x8754, 0xE7A8, 0x8755, 0xBB6B, + 0x8756, 0xE7A1, 0x8757, 0xBDC0, 0x8758, 0xE7A7, 0x8759, 0xBDBF, 0x875A, 0xE7AC, 0x875B, 0xE7A9, 0x875C, 0xE7B9, 0x875D, 0xE7B4, + 0x875E, 0xE7AE, 0x875F, 0xE7B3, 0x8760, 0xBDBB, 0x8761, 0xE7AB, 0x8762, 0xE7BE, 0x8763, 0xE7A2, 0x8764, 0xE7A3, 0x8765, 0xE7BA, + 0x8766, 0xBDBC, 0x8767, 0xE7BF, 0x8768, 0xBDBE, 0x8769, 0xE7C0, 0x876A, 0xE7B0, 0x876B, 0xE3D8, 0x876C, 0xE7B6, 0x876D, 0xE7AF, + 0x876E, 0xE7B8, 0x876F, 0xE7B5, 0x8773, 0xE7A6, 0x8774, 0xBDB9, 0x8775, 0xE7BD, 0x8776, 0xBDBA, 0x8777, 0xE7A4, 0x8778, 0xBDBD, + 0x8779, 0xEB64, 0x877A, 0xE7B7, 0x877B, 0xE7BC, 0x8781, 0xEB61, 0x8782, 0xBDB8, 0x8783, 0xBFC0, 0x8784, 0xEB6B, 0x8785, 0xEB67, + 0x8787, 0xEB65, 0x8788, 0xEB60, 0x8789, 0xEB6F, 0x878D, 0xBFC4, 0x878F, 0xEB5C, 0x8790, 0xEB68, 0x8791, 0xEB69, 0x8792, 0xEB5F, + 0x8793, 0xEB5E, 0x8794, 0xEB6C, 0x8796, 0xEB62, 0x8797, 0xEB5D, 0x8798, 0xEB63, 0x879A, 0xEB6E, 0x879B, 0xEB5B, 0x879C, 0xEB6D, + 0x879D, 0xEB6A, 0x879E, 0xBFC2, 0x879F, 0xBFC1, 0x87A2, 0xBFC3, 0x87A3, 0xEB66, 0x87A4, 0xF0CB, 0x87AA, 0xEE59, 0x87AB, 0xC1B1, + 0x87AC, 0xEE5D, 0x87AD, 0xEE5A, 0x87AE, 0xEE61, 0x87AF, 0xEE67, 0x87B0, 0xEE5C, 0x87B2, 0xEE70, 0x87B3, 0xC1AE, 0x87B4, 0xEE6A, + 0x87B5, 0xEE5F, 0x87B6, 0xEE6B, 0x87B7, 0xEE66, 0x87B8, 0xEE6D, 0x87B9, 0xEE5E, 0x87BA, 0xC1B3, 0x87BB, 0xC1B2, 0x87BC, 0xEE60, + 0x87BD, 0xEE6E, 0x87BE, 0xEE58, 0x87BF, 0xEE6C, 0x87C0, 0xC1AC, 0x87C2, 0xEE64, 0x87C3, 0xEE63, 0x87C4, 0xEE68, 0x87C5, 0xEE5B, + 0x87C6, 0xC1B0, 0x87C8, 0xC1B4, 0x87C9, 0xEE62, 0x87CA, 0xEE69, 0x87CB, 0xC1B5, 0x87CC, 0xEE65, 0x87D1, 0xC1AD, 0x87D2, 0xC1AF, + 0x87D3, 0xF0C7, 0x87D4, 0xF0C5, 0x87D7, 0xF0CC, 0x87D8, 0xF0C9, 0x87D9, 0xF0CD, 0x87DB, 0xF0BE, 0x87DC, 0xF0C6, 0x87DD, 0xF0D1, + 0x87DE, 0xEE6F, 0x87DF, 0xF0C2, 0x87E0, 0xC2CF, 0x87E1, 0xE7A5, 0x87E2, 0xF0BD, 0x87E3, 0xF0CA, 0x87E4, 0xF0C4, 0x87E5, 0xF0C1, + 0x87E6, 0xF0BC, 0x87E7, 0xF0BB, 0x87E8, 0xF0D0, 0x87EA, 0xF0C0, 0x87EB, 0xF0BF, 0x87EC, 0xC2CD, 0x87ED, 0xF0C8, 0x87EF, 0xC2CC, + 0x87F2, 0xC2CE, 0x87F3, 0xF0C3, 0x87F4, 0xF0CF, 0x87F6, 0xF2DE, 0x87F7, 0xF2DF, 0x87F9, 0xC3C9, 0x87FA, 0xF2DC, 0x87FB, 0xC3C6, + 0x87FC, 0xF2E4, 0x87FE, 0xC3CA, 0x87FF, 0xF2E6, 0x8800, 0xF2DB, 0x8801, 0xF0CE, 0x8802, 0xF2E8, 0x8803, 0xF2DD, 0x8805, 0xC3C7, + 0x8806, 0xF2E3, 0x8808, 0xF2E5, 0x8809, 0xF2E0, 0x880A, 0xF2E7, 0x880B, 0xF2E2, 0x880C, 0xF2E1, 0x880D, 0xC3C8, 0x8810, 0xF4C5, + 0x8811, 0xF4C6, 0x8813, 0xF4C8, 0x8814, 0xC4AE, 0x8815, 0xC4AF, 0x8816, 0xF4C9, 0x8817, 0xF4C7, 0x8819, 0xF4C4, 0x881B, 0xF642, + 0x881C, 0xF645, 0x881D, 0xF641, 0x881F, 0xC4FA, 0x8820, 0xF643, 0x8821, 0xC4F9, 0x8822, 0xC4F8, 0x8823, 0xC4F7, 0x8824, 0xF644, + 0x8825, 0xF751, 0x8826, 0xF74F, 0x8828, 0xF74E, 0x8829, 0xF640, 0x882A, 0xF750, 0x882B, 0xF646, 0x882C, 0xF74D, 0x882E, 0xF7F9, + 0x882F, 0xF7D7, 0x8830, 0xF7F7, 0x8831, 0xC5DB, 0x8832, 0xF7F8, 0x8833, 0xF7FA, 0x8835, 0xF8BF, 0x8836, 0xC5FA, 0x8837, 0xF8BE, + 0x8838, 0xF8BD, 0x8839, 0xC5FB, 0x883B, 0xC65A, 0x883C, 0xF96E, 0x883D, 0xF9A7, 0x883E, 0xF9A6, 0x883F, 0xF9A8, 0x8840, 0xA6E5, + 0x8841, 0xD0AA, 0x8843, 0xD3CF, 0x8844, 0xD3D0, 0x8848, 0xDBC0, 0x884A, 0xF647, 0x884B, 0xF8C0, 0x884C, 0xA6E6, 0x884D, 0xAD6C, + 0x884E, 0xD0AB, 0x8852, 0xD7B1, 0x8853, 0xB34E, 0x8855, 0xDBC2, 0x8856, 0xDBC1, 0x8857, 0xB5F3, 0x8859, 0xB8C5, 0x885A, 0xE7C1, + 0x885B, 0xBDC3, 0x885D, 0xBDC4, 0x8861, 0xBFC5, 0x8862, 0xC5FC, 0x8863, 0xA6E7, 0x8867, 0xD0AC, 0x8868, 0xAAED, 0x8869, 0xD0AE, + 0x886A, 0xD0AD, 0x886B, 0xAD6D, 0x886D, 0xD3D1, 0x886F, 0xD3D8, 0x8870, 0xB049, 0x8871, 0xD3D6, 0x8872, 0xD3D4, 0x8874, 0xD3DB, + 0x8875, 0xD3D2, 0x8876, 0xD3D3, 0x8877, 0xB04A, 0x8879, 0xB04E, 0x887C, 0xD3DC, 0x887D, 0xB04D, 0x887E, 0xD3DA, 0x887F, 0xD3D7, + 0x8880, 0xD3D5, 0x8881, 0xB04B, 0x8882, 0xB04C, 0x8883, 0xD3D9, 0x8888, 0xB350, 0x8889, 0xD7B2, 0x888B, 0xB355, 0x888C, 0xD7C2, + 0x888D, 0xB354, 0x888E, 0xD7C4, 0x8891, 0xD7B8, 0x8892, 0xB352, 0x8893, 0xD7C3, 0x8895, 0xD7B3, 0x8896, 0xB353, 0x8897, 0xD7BF, + 0x8898, 0xD7BB, 0x8899, 0xD7BD, 0x889A, 0xD7B7, 0x889B, 0xD7BE, 0x889E, 0xB34F, 0x889F, 0xD7BA, 0x88A1, 0xD7B9, 0x88A2, 0xD7B5, + 0x88A4, 0xD7C0, 0x88A7, 0xD7BC, 0x88A8, 0xD7B4, 0x88AA, 0xD7B6, 0x88AB, 0xB351, 0x88AC, 0xD7C1, 0x88B1, 0xB5F6, 0x88B2, 0xDBCD, + 0x88B6, 0xDBC9, 0x88B7, 0xDBCB, 0x88B8, 0xDBC6, 0x88B9, 0xDBC5, 0x88BA, 0xDBC3, 0x88BC, 0xDBCA, 0x88BD, 0xDBCC, 0x88BE, 0xDBC8, + 0x88C0, 0xDBC7, 0x88C1, 0xB5F4, 0x88C2, 0xB5F5, 0x88C9, 0xDBCF, 0x88CA, 0xB8CD, 0x88CB, 0xDFF2, 0x88CC, 0xDFF8, 0x88CD, 0xDFF3, + 0x88CE, 0xDFF4, 0x88CF, 0xF9D8, 0x88D0, 0xDFF9, 0x88D2, 0xB8CF, 0x88D4, 0xB8C7, 0x88D5, 0xB8CE, 0x88D6, 0xDFF1, 0x88D7, 0xDBC4, + 0x88D8, 0xB8CA, 0x88D9, 0xB8C8, 0x88DA, 0xDFF7, 0x88DB, 0xDFF6, 0x88DC, 0xB8C9, 0x88DD, 0xB8CB, 0x88DE, 0xDFF5, 0x88DF, 0xB8C6, + 0x88E1, 0xB8CC, 0x88E7, 0xE3F6, 0x88E8, 0xBB74, 0x88EB, 0xE442, 0x88EC, 0xE441, 0x88EE, 0xE3FB, 0x88EF, 0xBB76, 0x88F0, 0xE440, + 0x88F1, 0xE3F7, 0x88F2, 0xE3F8, 0x88F3, 0xBB6E, 0x88F4, 0xBB70, 0x88F6, 0xE3FD, 0x88F7, 0xE3F5, 0x88F8, 0xBB72, 0x88F9, 0xBB71, + 0x88FA, 0xE3F9, 0x88FB, 0xE3FE, 0x88FC, 0xE3FC, 0x88FD, 0xBB73, 0x88FE, 0xE3FA, 0x8901, 0xDBCE, 0x8902, 0xBB6F, 0x8905, 0xE7C2, + 0x8906, 0xE7C9, 0x8907, 0xBDC6, 0x8909, 0xE7CD, 0x890A, 0xBDCA, 0x890B, 0xE7C5, 0x890C, 0xE7C3, 0x890E, 0xE7CC, 0x8910, 0xBDC5, + 0x8911, 0xE7CB, 0x8912, 0xBDC7, 0x8913, 0xBDC8, 0x8914, 0xE7C4, 0x8915, 0xBDC9, 0x8916, 0xE7CA, 0x8917, 0xE7C6, 0x8918, 0xE7C7, + 0x8919, 0xE7C8, 0x891A, 0xBB75, 0x891E, 0xEB70, 0x891F, 0xEB7C, 0x8921, 0xBFCA, 0x8922, 0xEB77, 0x8923, 0xEB79, 0x8925, 0xBFC8, + 0x8926, 0xEB71, 0x8927, 0xEB75, 0x8929, 0xEB78, 0x892A, 0xBFC6, 0x892B, 0xBFC9, 0x892C, 0xEB7B, 0x892D, 0xEB73, 0x892E, 0xEB74, + 0x892F, 0xEB7A, 0x8930, 0xEB72, 0x8931, 0xEB76, 0x8932, 0xBFC7, 0x8933, 0xEE72, 0x8935, 0xEE71, 0x8936, 0xC1B7, 0x8937, 0xEE77, + 0x8938, 0xC1B9, 0x893B, 0xC1B6, 0x893C, 0xEE73, 0x893D, 0xC1BA, 0x893E, 0xEE74, 0x8941, 0xEE75, 0x8942, 0xEE78, 0x8944, 0xC1B8, + 0x8946, 0xF0D6, 0x8949, 0xF0D9, 0x894B, 0xF0D3, 0x894C, 0xF0D5, 0x894F, 0xF0D4, 0x8950, 0xF0D7, 0x8951, 0xF0D8, 0x8952, 0xEE76, + 0x8953, 0xF0D2, 0x8956, 0xC3CD, 0x8957, 0xF2EC, 0x8958, 0xF2EF, 0x8959, 0xF2F1, 0x895A, 0xF2EA, 0x895B, 0xF2EB, 0x895C, 0xF2EE, + 0x895D, 0xF2F0, 0x895E, 0xC3CE, 0x895F, 0xC3CC, 0x8960, 0xC3CB, 0x8961, 0xF2ED, 0x8962, 0xF2E9, 0x8963, 0xF4CA, 0x8964, 0xC4B0, + 0x8966, 0xF4CB, 0x8969, 0xF649, 0x896A, 0xC4FB, 0x896B, 0xF64B, 0x896C, 0xC4FC, 0x896D, 0xF648, 0x896E, 0xF64A, 0x896F, 0xC5A8, + 0x8971, 0xF752, 0x8972, 0xC5A7, 0x8973, 0xF7FD, 0x8974, 0xF7FC, 0x8976, 0xF7FB, 0x8979, 0xF948, 0x897A, 0xF949, 0x897B, 0xF94B, + 0x897C, 0xF94A, 0x897E, 0xCA50, 0x897F, 0xA6E8, 0x8981, 0xAD6E, 0x8982, 0xD7C5, 0x8983, 0xB5F7, 0x8985, 0xDFFA, 0x8986, 0xC2D0, + 0x8988, 0xF2F2, 0x898B, 0xA8A3, 0x898F, 0xB357, 0x8993, 0xB356, 0x8995, 0xDBD0, 0x8996, 0xB5F8, 0x8997, 0xDBD2, 0x8998, 0xDBD1, + 0x899B, 0xDFFB, 0x899C, 0xB8D0, 0x899D, 0xE443, 0x899E, 0xE446, 0x899F, 0xE445, 0x89A1, 0xE444, 0x89A2, 0xE7CE, 0x89A3, 0xE7D0, + 0x89A4, 0xE7CF, 0x89A6, 0xBFCC, 0x89AA, 0xBFCB, 0x89AC, 0xC1BB, 0x89AD, 0xEE79, 0x89AE, 0xEE7B, 0x89AF, 0xEE7A, 0x89B2, 0xC2D1, + 0x89B6, 0xF2F4, 0x89B7, 0xF2F3, 0x89B9, 0xF4CC, 0x89BA, 0xC4B1, 0x89BD, 0xC4FD, 0x89BE, 0xF754, 0x89BF, 0xF753, 0x89C0, 0xC65B, + 0x89D2, 0xA8A4, 0x89D3, 0xD0AF, 0x89D4, 0xAD6F, 0x89D5, 0xD7C8, 0x89D6, 0xD7C6, 0x89D9, 0xD7C7, 0x89DA, 0xDBD4, 0x89DB, 0xDBD5, + 0x89DC, 0xE043, 0x89DD, 0xDBD3, 0x89DF, 0xDFFC, 0x89E0, 0xE041, 0x89E1, 0xE040, 0x89E2, 0xE042, 0x89E3, 0xB8D1, 0x89E4, 0xDFFE, + 0x89E5, 0xDFFD, 0x89E6, 0xE044, 0x89E8, 0xE449, 0x89E9, 0xE447, 0x89EB, 0xE448, 0x89EC, 0xE7D3, 0x89ED, 0xE7D1, 0x89F0, 0xE7D2, + 0x89F1, 0xEB7D, 0x89F2, 0xEE7C, 0x89F3, 0xEE7D, 0x89F4, 0xC2D2, 0x89F6, 0xF2F5, 0x89F7, 0xF4CD, 0x89F8, 0xC4B2, 0x89FA, 0xF64C, + 0x89FB, 0xF755, 0x89FC, 0xC5A9, 0x89FE, 0xF7FE, 0x89FF, 0xF94C, 0x8A00, 0xA8A5, 0x8A02, 0xAD71, 0x8A03, 0xAD72, 0x8A04, 0xD0B0, + 0x8A07, 0xD0B1, 0x8A08, 0xAD70, 0x8A0A, 0xB054, 0x8A0C, 0xB052, 0x8A0E, 0xB051, 0x8A0F, 0xB058, 0x8A10, 0xB050, 0x8A11, 0xB059, + 0x8A12, 0xD3DD, 0x8A13, 0xB056, 0x8A15, 0xB053, 0x8A16, 0xB057, 0x8A17, 0xB055, 0x8A18, 0xB04F, 0x8A1B, 0xB35F, 0x8A1D, 0xB359, + 0x8A1E, 0xD7CC, 0x8A1F, 0xB35E, 0x8A22, 0xB360, 0x8A23, 0xB35A, 0x8A25, 0xB35B, 0x8A27, 0xD7CA, 0x8A2A, 0xB358, 0x8A2C, 0xD7CB, + 0x8A2D, 0xB35D, 0x8A30, 0xD7C9, 0x8A31, 0xB35C, 0x8A34, 0xB644, 0x8A36, 0xB646, 0x8A39, 0xDBD8, 0x8A3A, 0xB645, 0x8A3B, 0xB5F9, + 0x8A3C, 0xB5FD, 0x8A3E, 0xB8E4, 0x8A3F, 0xE049, 0x8A40, 0xDBDA, 0x8A41, 0xB5FE, 0x8A44, 0xDBDD, 0x8A45, 0xDBDE, 0x8A46, 0xB643, + 0x8A48, 0xDBE0, 0x8A4A, 0xDBE2, 0x8A4C, 0xDBE3, 0x8A4D, 0xDBD7, 0x8A4E, 0xDBD6, 0x8A4F, 0xDBE4, 0x8A50, 0xB642, 0x8A51, 0xDBE1, + 0x8A52, 0xDBDF, 0x8A54, 0xB640, 0x8A55, 0xB5FB, 0x8A56, 0xB647, 0x8A57, 0xDBDB, 0x8A58, 0xDBDC, 0x8A59, 0xDBD9, 0x8A5B, 0xB641, + 0x8A5E, 0xB5FC, 0x8A60, 0xB5FA, 0x8A61, 0xE048, 0x8A62, 0xB8DF, 0x8A63, 0xB8DA, 0x8A66, 0xB8D5, 0x8A68, 0xB8E5, 0x8A69, 0xB8D6, + 0x8A6B, 0xB8D2, 0x8A6C, 0xB8E1, 0x8A6D, 0xB8DE, 0x8A6E, 0xB8E0, 0x8A70, 0xB8D7, 0x8A71, 0xB8DC, 0x8A72, 0xB8D3, 0x8A73, 0xB8D4, + 0x8A74, 0xE050, 0x8A75, 0xE04D, 0x8A76, 0xE045, 0x8A77, 0xE04A, 0x8A79, 0xB8E2, 0x8A7A, 0xE051, 0x8A7B, 0xB8E3, 0x8A7C, 0xB8D9, + 0x8A7F, 0xE047, 0x8A81, 0xE04F, 0x8A82, 0xE04B, 0x8A83, 0xE04E, 0x8A84, 0xE04C, 0x8A85, 0xB8DD, 0x8A86, 0xE046, 0x8A87, 0xB8D8, + 0x8A8B, 0xE44C, 0x8A8C, 0xBB78, 0x8A8D, 0xBB7B, 0x8A8F, 0xE44E, 0x8A91, 0xBBA5, 0x8A92, 0xE44D, 0x8A93, 0xBB7D, 0x8A95, 0xBDCF, + 0x8A96, 0xE44F, 0x8A98, 0xBBA4, 0x8A99, 0xE44B, 0x8A9A, 0xBBA6, 0x8A9E, 0xBB79, 0x8AA0, 0xB8DB, 0x8AA1, 0xBB7C, 0x8AA3, 0xBB7A, + 0x8AA4, 0xBB7E, 0x8AA5, 0xBBA2, 0x8AA6, 0xBB77, 0x8AA7, 0xBBA7, 0x8AA8, 0xBBA3, 0x8AAA, 0xBBA1, 0x8AAB, 0xE44A, 0x8AB0, 0xBDD6, + 0x8AB2, 0xBDD2, 0x8AB6, 0xBDD9, 0x8AB8, 0xE7D6, 0x8AB9, 0xBDDA, 0x8ABA, 0xE7E2, 0x8ABB, 0xE7DB, 0x8ABC, 0xBDCB, 0x8ABD, 0xE7E3, + 0x8ABE, 0xE7DD, 0x8ABF, 0xBDD5, 0x8AC0, 0xE7DE, 0x8AC2, 0xBDD4, 0x8AC3, 0xE7E1, 0x8AC4, 0xBDCE, 0x8AC5, 0xE7DF, 0x8AC6, 0xE7D5, + 0x8AC7, 0xBDCD, 0x8AC8, 0xEBAA, 0x8AC9, 0xBDD3, 0x8ACB, 0xBDD0, 0x8ACD, 0xBDD8, 0x8ACF, 0xE7D4, 0x8AD1, 0xE7D8, 0x8AD2, 0xBDCC, + 0x8AD3, 0xE7D7, 0x8AD4, 0xE7D9, 0x8AD5, 0xE7DA, 0x8AD6, 0xBDD7, 0x8AD7, 0xE7DC, 0x8AD8, 0xE7E0, 0x8AD9, 0xE7E4, 0x8ADB, 0xBDDB, + 0x8ADC, 0xBFD2, 0x8ADD, 0xEBA5, 0x8ADE, 0xEBAB, 0x8ADF, 0xEBA8, 0x8AE0, 0xEB7E, 0x8AE1, 0xEBAC, 0x8AE2, 0xEBA1, 0x8AE4, 0xEBA7, + 0x8AE6, 0xBFCD, 0x8AE7, 0xBFD3, 0x8AE8, 0xEBAD, 0x8AEB, 0xBFCF, 0x8AED, 0xBFD9, 0x8AEE, 0xBFD4, 0x8AEF, 0xEBAF, 0x8AF0, 0xEBA9, + 0x8AF1, 0xBFD0, 0x8AF2, 0xEBA2, 0x8AF3, 0xBFDA, 0x8AF4, 0xEBA3, 0x8AF5, 0xEBA4, 0x8AF6, 0xBFDB, 0x8AF7, 0xBFD8, 0x8AF8, 0xBDD1, + 0x8AFA, 0xBFCE, 0x8AFB, 0xEBB0, 0x8AFC, 0xBFDC, 0x8AFE, 0xBFD5, 0x8AFF, 0xEBAE, 0x8B00, 0xBFD1, 0x8B01, 0xBFD6, 0x8B02, 0xBFD7, + 0x8B04, 0xC1C3, 0x8B05, 0xEEA4, 0x8B06, 0xEEAD, 0x8B07, 0xEEAA, 0x8B08, 0xEEAC, 0x8B0A, 0xC1C0, 0x8B0B, 0xEEA5, 0x8B0D, 0xEEAB, + 0x8B0E, 0xC1BC, 0x8B0F, 0xEEA7, 0x8B10, 0xC1C4, 0x8B11, 0xEEA3, 0x8B12, 0xEEA8, 0x8B13, 0xEEAF, 0x8B14, 0xEBA6, 0x8B15, 0xEEA9, + 0x8B16, 0xEEA2, 0x8B17, 0xC1BD, 0x8B18, 0xEEA1, 0x8B19, 0xC1BE, 0x8B1A, 0xEEB0, 0x8B1B, 0xC1BF, 0x8B1C, 0xEEAE, 0x8B1D, 0xC1C2, + 0x8B1E, 0xEE7E, 0x8B20, 0xC1C1, 0x8B22, 0xEEA6, 0x8B23, 0xF0DC, 0x8B24, 0xF0EA, 0x8B25, 0xF0E5, 0x8B26, 0xF0E7, 0x8B27, 0xF0DB, + 0x8B28, 0xC2D3, 0x8B2A, 0xF0DA, 0x8B2B, 0xC2D6, 0x8B2C, 0xC2D5, 0x8B2E, 0xF0E9, 0x8B2F, 0xF0E1, 0x8B30, 0xF0DE, 0x8B31, 0xF0E4, + 0x8B33, 0xF0DD, 0x8B35, 0xF0DF, 0x8B36, 0xF0E8, 0x8B37, 0xF0E6, 0x8B39, 0xC2D4, 0x8B3A, 0xF0ED, 0x8B3B, 0xF0EB, 0x8B3C, 0xF0E2, + 0x8B3D, 0xF0EC, 0x8B3E, 0xF0E3, 0x8B40, 0xF2F9, 0x8B41, 0xC3CF, 0x8B42, 0xF341, 0x8B45, 0xF64F, 0x8B46, 0xC3D6, 0x8B47, 0xF0E0, + 0x8B48, 0xF2F7, 0x8B49, 0xC3D2, 0x8B4A, 0xF2F8, 0x8B4B, 0xF2FD, 0x8B4E, 0xC3D4, 0x8B4F, 0xC3D5, 0x8B50, 0xF2F6, 0x8B51, 0xF340, + 0x8B52, 0xF342, 0x8B53, 0xF2FA, 0x8B54, 0xF2FC, 0x8B55, 0xF2FE, 0x8B56, 0xF2FB, 0x8B57, 0xF343, 0x8B58, 0xC3D1, 0x8B59, 0xC3D7, + 0x8B5A, 0xC3D3, 0x8B5C, 0xC3D0, 0x8B5D, 0xF4D0, 0x8B5F, 0xC4B7, 0x8B60, 0xF4CE, 0x8B63, 0xF4D2, 0x8B65, 0xF4D3, 0x8B66, 0xC4B5, + 0x8B67, 0xF4D4, 0x8B68, 0xF4D1, 0x8B6A, 0xF4CF, 0x8B6B, 0xC4B8, 0x8B6C, 0xC4B4, 0x8B6D, 0xF4D5, 0x8B6F, 0xC4B6, 0x8B70, 0xC4B3, + 0x8B74, 0xC4FE, 0x8B77, 0xC540, 0x8B78, 0xF64E, 0x8B79, 0xF64D, 0x8B7A, 0xF650, 0x8B7B, 0xF651, 0x8B7D, 0xC541, 0x8B7E, 0xF756, + 0x8B7F, 0xF75B, 0x8B80, 0xC5AA, 0x8B82, 0xF758, 0x8B84, 0xF757, 0x8B85, 0xF75A, 0x8B86, 0xF759, 0x8B88, 0xF843, 0x8B8A, 0xC5DC, + 0x8B8B, 0xF842, 0x8B8C, 0xF840, 0x8B8E, 0xF841, 0x8B92, 0xC5FE, 0x8B93, 0xC5FD, 0x8B94, 0xF8C1, 0x8B95, 0xF8C2, 0x8B96, 0xC640, + 0x8B98, 0xF94D, 0x8B99, 0xF94E, 0x8B9A, 0xC667, 0x8B9C, 0xC66D, 0x8B9E, 0xF9A9, 0x8B9F, 0xF9C8, 0x8C37, 0xA8A6, 0x8C39, 0xD7CD, + 0x8C3B, 0xD7CE, 0x8C3C, 0xE052, 0x8C3D, 0xE450, 0x8C3E, 0xE7E5, 0x8C3F, 0xC1C6, 0x8C41, 0xC1C5, 0x8C42, 0xF0EE, 0x8C43, 0xF344, + 0x8C45, 0xF844, 0x8C46, 0xA8A7, 0x8C47, 0xD3DE, 0x8C48, 0xB05A, 0x8C49, 0xB361, 0x8C4A, 0xE054, 0x8C4B, 0xE053, 0x8C4C, 0xBDDC, + 0x8C4D, 0xE7E6, 0x8C4E, 0xBDDD, 0x8C4F, 0xEEB1, 0x8C50, 0xC2D7, 0x8C54, 0xC676, 0x8C55, 0xA8A8, 0x8C56, 0xCDCB, 0x8C57, 0xD3DF, + 0x8C5A, 0xB362, 0x8C5C, 0xD7CF, 0x8C5D, 0xD7D0, 0x8C5F, 0xDBE5, 0x8C61, 0xB648, 0x8C62, 0xB8E6, 0x8C64, 0xE056, 0x8C65, 0xE055, + 0x8C66, 0xE057, 0x8C68, 0xE451, 0x8C69, 0xE452, 0x8C6A, 0xBBA8, 0x8C6B, 0xBFDD, 0x8C6C, 0xBDDE, 0x8C6D, 0xBFDE, 0x8C6F, 0xEEB5, + 0x8C70, 0xEEB2, 0x8C71, 0xEEB4, 0x8C72, 0xEEB3, 0x8C73, 0xC1C7, 0x8C75, 0xF0EF, 0x8C76, 0xF346, 0x8C77, 0xF345, 0x8C78, 0xCBA4, + 0x8C79, 0xB05C, 0x8C7A, 0xB05B, 0x8C7B, 0xD3E0, 0x8C7D, 0xD7D1, 0x8C80, 0xDBE7, 0x8C81, 0xDBE6, 0x8C82, 0xB649, 0x8C84, 0xE059, + 0x8C85, 0xE05A, 0x8C86, 0xE058, 0x8C89, 0xB8E8, 0x8C8A, 0xB8E7, 0x8C8C, 0xBBAA, 0x8C8D, 0xBBA9, 0x8C8F, 0xE7E7, 0x8C90, 0xEBB3, + 0x8C91, 0xEBB1, 0x8C92, 0xEBB2, 0x8C93, 0xBFDF, 0x8C94, 0xEEB7, 0x8C95, 0xEEB6, 0x8C97, 0xF0F2, 0x8C98, 0xF0F1, 0x8C99, 0xF0F0, + 0x8C9A, 0xF347, 0x8C9C, 0xF9AA, 0x8C9D, 0xA8A9, 0x8C9E, 0xAD73, 0x8CA0, 0xAD74, 0x8CA1, 0xB05D, 0x8CA2, 0xB05E, 0x8CA3, 0xD3E2, + 0x8CA4, 0xD3E1, 0x8CA5, 0xD7D2, 0x8CA7, 0xB368, 0x8CA8, 0xB366, 0x8CA9, 0xB363, 0x8CAA, 0xB367, 0x8CAB, 0xB365, 0x8CAC, 0xB364, + 0x8CAF, 0xB64A, 0x8CB0, 0xDBEA, 0x8CB2, 0xB8ED, 0x8CB3, 0xB64C, 0x8CB4, 0xB651, 0x8CB5, 0xDBEC, 0x8CB6, 0xB653, 0x8CB7, 0xB652, + 0x8CB8, 0xB655, 0x8CB9, 0xDBEB, 0x8CBA, 0xDBE8, 0x8CBB, 0xB64F, 0x8CBC, 0xB64B, 0x8CBD, 0xB64D, 0x8CBE, 0xDBE9, 0x8CBF, 0xB654, + 0x8CC0, 0xB650, 0x8CC1, 0xB64E, 0x8CC2, 0xB8EF, 0x8CC3, 0xB8EE, 0x8CC4, 0xB8EC, 0x8CC5, 0xB8F0, 0x8CC7, 0xB8EA, 0x8CC8, 0xB8EB, + 0x8CCA, 0xB8E9, 0x8CCC, 0xE05B, 0x8CCF, 0xE454, 0x8CD1, 0xBBAC, 0x8CD2, 0xBBAD, 0x8CD3, 0xBBAB, 0x8CD5, 0xE453, 0x8CD7, 0xE455, + 0x8CD9, 0xE7EA, 0x8CDA, 0xE7EC, 0x8CDC, 0xBDE7, 0x8CDD, 0xE7ED, 0x8CDE, 0xBDE0, 0x8CDF, 0xE7E9, 0x8CE0, 0xBDDF, 0x8CE1, 0xBDE9, + 0x8CE2, 0xBDE5, 0x8CE3, 0xBDE6, 0x8CE4, 0xBDE2, 0x8CE5, 0xE7E8, 0x8CE6, 0xBDE1, 0x8CE7, 0xE7EE, 0x8CE8, 0xE7EB, 0x8CEA, 0xBDE8, + 0x8CEC, 0xBDE3, 0x8CED, 0xBDE4, 0x8CEE, 0xEBB5, 0x8CF0, 0xEBB7, 0x8CF1, 0xEBB6, 0x8CF3, 0xEBB8, 0x8CF4, 0xBFE0, 0x8CF5, 0xEBB4, + 0x8CF8, 0xC1CB, 0x8CF9, 0xEEB8, 0x8CFA, 0xC1C8, 0x8CFB, 0xC1CC, 0x8CFC, 0xC1CA, 0x8CFD, 0xC1C9, 0x8CFE, 0xF0F3, 0x8D00, 0xF0F6, + 0x8D02, 0xF0F5, 0x8D04, 0xF0F4, 0x8D05, 0xC2D8, 0x8D06, 0xF348, 0x8D07, 0xF349, 0x8D08, 0xC3D8, 0x8D09, 0xF34A, 0x8D0A, 0xC3D9, + 0x8D0D, 0xC4BA, 0x8D0F, 0xC4B9, 0x8D10, 0xF652, 0x8D13, 0xC542, 0x8D14, 0xF653, 0x8D15, 0xF75C, 0x8D16, 0xC5AB, 0x8D17, 0xC5AC, + 0x8D19, 0xF845, 0x8D1B, 0xC642, 0x8D64, 0xA8AA, 0x8D66, 0xB36A, 0x8D67, 0xB369, 0x8D68, 0xE05C, 0x8D69, 0xE05D, 0x8D6B, 0xBBAE, + 0x8D6C, 0xEBB9, 0x8D6D, 0xBDEA, 0x8D6E, 0xEBBA, 0x8D6F, 0xEEB9, 0x8D70, 0xA8AB, 0x8D72, 0xD0B2, 0x8D73, 0xAD76, 0x8D74, 0xAD75, + 0x8D76, 0xD3E3, 0x8D77, 0xB05F, 0x8D78, 0xD3E4, 0x8D79, 0xD7D5, 0x8D7B, 0xD7D4, 0x8D7D, 0xD7D3, 0x8D80, 0xDBEE, 0x8D81, 0xB658, + 0x8D84, 0xDBED, 0x8D85, 0xB657, 0x8D89, 0xDBEF, 0x8D8A, 0xB656, 0x8D8C, 0xE05F, 0x8D8D, 0xE062, 0x8D8E, 0xE060, 0x8D8F, 0xE061, + 0x8D90, 0xE065, 0x8D91, 0xE05E, 0x8D92, 0xE066, 0x8D93, 0xE063, 0x8D94, 0xE064, 0x8D95, 0xBBB0, 0x8D96, 0xE456, 0x8D99, 0xBBAF, + 0x8D9B, 0xE7F2, 0x8D9C, 0xE7F0, 0x8D9F, 0xBDEB, 0x8DA0, 0xE7EF, 0x8DA1, 0xE7F1, 0x8DA3, 0xBDEC, 0x8DA5, 0xEBBB, 0x8DA7, 0xEBBC, + 0x8DA8, 0xC1CD, 0x8DAA, 0xF34C, 0x8DAB, 0xF34E, 0x8DAC, 0xF34B, 0x8DAD, 0xF34D, 0x8DAE, 0xF4D6, 0x8DAF, 0xF654, 0x8DB2, 0xF96F, + 0x8DB3, 0xA8AC, 0x8DB4, 0xAD77, 0x8DB5, 0xD3E5, 0x8DB6, 0xD3E7, 0x8DB7, 0xD3E6, 0x8DB9, 0xD7D8, 0x8DBA, 0xB36C, 0x8DBC, 0xD7D6, + 0x8DBE, 0xB36B, 0x8DBF, 0xD7D9, 0x8DC1, 0xD7DA, 0x8DC2, 0xD7D7, 0x8DC5, 0xDBFB, 0x8DC6, 0xB660, 0x8DC7, 0xDBF3, 0x8DC8, 0xDBF9, + 0x8DCB, 0xB65B, 0x8DCC, 0xB65E, 0x8DCD, 0xDBF2, 0x8DCE, 0xB659, 0x8DCF, 0xDBF6, 0x8DD0, 0xE06C, 0x8DD1, 0xB65D, 0x8DD3, 0xDBF1, + 0x8DD5, 0xDBF7, 0x8DD6, 0xDBF4, 0x8DD7, 0xDBFA, 0x8DD8, 0xDBF0, 0x8DD9, 0xDBF8, 0x8DDA, 0xB65C, 0x8DDB, 0xB65F, 0x8DDC, 0xDBF5, + 0x8DDD, 0xB65A, 0x8DDF, 0xB8F2, 0x8DE0, 0xE068, 0x8DE1, 0xB8F1, 0x8DE2, 0xE06F, 0x8DE3, 0xE06E, 0x8DE4, 0xB8F8, 0x8DE6, 0xB8F9, + 0x8DE7, 0xE070, 0x8DE8, 0xB8F3, 0x8DE9, 0xE06D, 0x8DEA, 0xB8F7, 0x8DEB, 0xE072, 0x8DEC, 0xE069, 0x8DEE, 0xE06B, 0x8DEF, 0xB8F4, + 0x8DF0, 0xE067, 0x8DF1, 0xE06A, 0x8DF2, 0xE071, 0x8DF3, 0xB8F5, 0x8DF4, 0xE073, 0x8DFA, 0xB8F6, 0x8DFC, 0xBBB1, 0x8DFD, 0xE45B, + 0x8DFE, 0xE461, 0x8DFF, 0xE459, 0x8E00, 0xE462, 0x8E02, 0xE458, 0x8E03, 0xE45D, 0x8E04, 0xE463, 0x8E05, 0xE460, 0x8E06, 0xE45F, + 0x8E07, 0xE45E, 0x8E09, 0xE457, 0x8E0A, 0xE45C, 0x8E0D, 0xE45A, 0x8E0F, 0xBDF1, 0x8E10, 0xBDEE, 0x8E11, 0xE7FB, 0x8E12, 0xE841, + 0x8E13, 0xE843, 0x8E14, 0xE840, 0x8E15, 0xE7F8, 0x8E16, 0xE7FA, 0x8E17, 0xE845, 0x8E18, 0xE842, 0x8E19, 0xE7FC, 0x8E1A, 0xE846, + 0x8E1B, 0xE7F9, 0x8E1C, 0xE844, 0x8E1D, 0xBDEF, 0x8E1E, 0xBDF5, 0x8E1F, 0xBDF3, 0x8E20, 0xE7F3, 0x8E21, 0xBDF4, 0x8E22, 0xBDF0, + 0x8E23, 0xE7F4, 0x8E24, 0xE7F6, 0x8E25, 0xE7F5, 0x8E26, 0xE7FD, 0x8E27, 0xE7FE, 0x8E29, 0xBDF2, 0x8E2B, 0xBDED, 0x8E2E, 0xE7F7, + 0x8E30, 0xEBC6, 0x8E31, 0xBFE2, 0x8E33, 0xEBBD, 0x8E34, 0xBFE3, 0x8E35, 0xBFE6, 0x8E36, 0xEBC2, 0x8E38, 0xEBBF, 0x8E39, 0xBFE5, + 0x8E3C, 0xEBC3, 0x8E3D, 0xEBC4, 0x8E3E, 0xEBBE, 0x8E3F, 0xEBC7, 0x8E40, 0xEBC0, 0x8E41, 0xEBC5, 0x8E42, 0xBFE4, 0x8E44, 0xBFE1, + 0x8E45, 0xEBC1, 0x8E47, 0xEEBF, 0x8E48, 0xC1D0, 0x8E49, 0xC1CE, 0x8E4A, 0xC1D1, 0x8E4B, 0xC1CF, 0x8E4C, 0xEEBE, 0x8E4D, 0xEEBB, + 0x8E4E, 0xEEBA, 0x8E50, 0xEEBD, 0x8E53, 0xEEBC, 0x8E54, 0xF145, 0x8E55, 0xC2DE, 0x8E56, 0xF0FB, 0x8E57, 0xF0FA, 0x8E59, 0xC2D9, + 0x8E5A, 0xF141, 0x8E5B, 0xF140, 0x8E5C, 0xF0F7, 0x8E5D, 0xF143, 0x8E5E, 0xF0FC, 0x8E5F, 0xC2DD, 0x8E60, 0xF0F9, 0x8E61, 0xF142, + 0x8E62, 0xF0F8, 0x8E63, 0xC2DA, 0x8E64, 0xC2DC, 0x8E65, 0xF0FD, 0x8E66, 0xC2DB, 0x8E67, 0xF0FE, 0x8E69, 0xF144, 0x8E6A, 0xF352, + 0x8E6C, 0xC3DE, 0x8E6D, 0xF34F, 0x8E6F, 0xF353, 0x8E72, 0xC3DB, 0x8E73, 0xF351, 0x8E74, 0xC3E0, 0x8E76, 0xC3DD, 0x8E78, 0xF350, + 0x8E7A, 0xC3DF, 0x8E7B, 0xF354, 0x8E7C, 0xC3DA, 0x8E81, 0xC4BC, 0x8E82, 0xC4BE, 0x8E84, 0xF4D9, 0x8E85, 0xC4BD, 0x8E86, 0xF4D7, + 0x8E87, 0xC3DC, 0x8E88, 0xF4D8, 0x8E89, 0xC4BB, 0x8E8A, 0xC543, 0x8E8B, 0xC545, 0x8E8C, 0xF656, 0x8E8D, 0xC544, 0x8E8E, 0xF655, + 0x8E90, 0xF761, 0x8E91, 0xC5AD, 0x8E92, 0xF760, 0x8E93, 0xC5AE, 0x8E94, 0xF75E, 0x8E95, 0xF75D, 0x8E96, 0xF762, 0x8E97, 0xF763, + 0x8E98, 0xF846, 0x8E9A, 0xF75F, 0x8E9D, 0xF8C6, 0x8E9E, 0xF8C3, 0x8E9F, 0xF8C4, 0x8EA0, 0xF8C5, 0x8EA1, 0xC65C, 0x8EA3, 0xF951, + 0x8EA4, 0xF950, 0x8EA5, 0xF94F, 0x8EA6, 0xF970, 0x8EA8, 0xF9BE, 0x8EA9, 0xF9AB, 0x8EAA, 0xC66E, 0x8EAB, 0xA8AD, 0x8EAC, 0xB060, + 0x8EB2, 0xB8FA, 0x8EBA, 0xBDF6, 0x8EBD, 0xEBC8, 0x8EC0, 0xC2DF, 0x8EC2, 0xF355, 0x8EC9, 0xF9AC, 0x8ECA, 0xA8AE, 0x8ECB, 0xAAEE, + 0x8ECC, 0xAD79, 0x8ECD, 0xAD78, 0x8ECF, 0xB063, 0x8ED1, 0xD3E8, 0x8ED2, 0xB061, 0x8ED3, 0xD3E9, 0x8ED4, 0xB062, 0x8ED7, 0xD7DF, + 0x8ED8, 0xD7DB, 0x8EDB, 0xB36D, 0x8EDC, 0xD7DE, 0x8EDD, 0xD7DD, 0x8EDE, 0xD7DC, 0x8EDF, 0xB36E, 0x8EE0, 0xD7E0, 0x8EE1, 0xD7E1, + 0x8EE5, 0xDC43, 0x8EE6, 0xDC41, 0x8EE7, 0xDC45, 0x8EE8, 0xDC46, 0x8EE9, 0xDC4C, 0x8EEB, 0xDC48, 0x8EEC, 0xDC4A, 0x8EEE, 0xDC42, + 0x8EEF, 0xDBFC, 0x8EF1, 0xDC49, 0x8EF4, 0xDC4B, 0x8EF5, 0xDC44, 0x8EF6, 0xDC47, 0x8EF7, 0xDBFD, 0x8EF8, 0xB662, 0x8EF9, 0xDC40, + 0x8EFA, 0xDBFE, 0x8EFB, 0xB661, 0x8EFC, 0xB663, 0x8EFE, 0xB8FD, 0x8EFF, 0xE075, 0x8F00, 0xE077, 0x8F01, 0xE076, 0x8F02, 0xE07B, + 0x8F03, 0xB8FB, 0x8F05, 0xE078, 0x8F06, 0xE074, 0x8F07, 0xE079, 0x8F08, 0xE07A, 0x8F09, 0xB8FC, 0x8F0A, 0xB8FE, 0x8F0B, 0xE07C, + 0x8F0D, 0xE467, 0x8F0E, 0xE466, 0x8F10, 0xE464, 0x8F11, 0xE465, 0x8F12, 0xBBB3, 0x8F13, 0xBBB5, 0x8F14, 0xBBB2, 0x8F15, 0xBBB4, + 0x8F16, 0xE84D, 0x8F17, 0xE84E, 0x8F18, 0xE849, 0x8F1A, 0xE84A, 0x8F1B, 0xBDF8, 0x8F1C, 0xBDFD, 0x8F1D, 0xBDF7, 0x8F1E, 0xBDFE, + 0x8F1F, 0xBDF9, 0x8F20, 0xE84B, 0x8F23, 0xE84C, 0x8F24, 0xE848, 0x8F25, 0xBE40, 0x8F26, 0xBDFB, 0x8F29, 0xBDFA, 0x8F2A, 0xBDFC, + 0x8F2C, 0xE847, 0x8F2E, 0xEBCA, 0x8F2F, 0xBFE8, 0x8F32, 0xEBCC, 0x8F33, 0xBFEA, 0x8F34, 0xEBCF, 0x8F35, 0xEBCB, 0x8F36, 0xEBC9, + 0x8F37, 0xEBCE, 0x8F38, 0xBFE9, 0x8F39, 0xEBCD, 0x8F3B, 0xBFE7, 0x8F3E, 0xC1D3, 0x8F3F, 0xC1D6, 0x8F40, 0xEEC1, 0x8F42, 0xC1D4, + 0x8F43, 0xEEC0, 0x8F44, 0xC1D2, 0x8F45, 0xC1D5, 0x8F46, 0xF146, 0x8F47, 0xF147, 0x8F48, 0xF148, 0x8F49, 0xC2E0, 0x8F4B, 0xF149, + 0x8F4D, 0xC2E1, 0x8F4E, 0xC3E2, 0x8F4F, 0xF358, 0x8F50, 0xF359, 0x8F51, 0xF357, 0x8F52, 0xF356, 0x8F53, 0xF35A, 0x8F54, 0xC3E1, + 0x8F55, 0xF4DD, 0x8F56, 0xF4DB, 0x8F57, 0xF4DC, 0x8F58, 0xF4DE, 0x8F59, 0xF4DA, 0x8F5A, 0xF4DF, 0x8F5B, 0xF658, 0x8F5D, 0xF659, + 0x8F5E, 0xF657, 0x8F5F, 0xC546, 0x8F60, 0xF764, 0x8F61, 0xC5AF, 0x8F62, 0xF765, 0x8F63, 0xF848, 0x8F64, 0xF847, 0x8F9B, 0xA8AF, + 0x8F9C, 0xB664, 0x8F9F, 0xB940, 0x8FA3, 0xBBB6, 0x8FA6, 0xBFEC, 0x8FA8, 0xBFEB, 0x8FAD, 0xC3E3, 0x8FAE, 0xC47C, 0x8FAF, 0xC547, + 0x8FB0, 0xA8B0, 0x8FB1, 0xB064, 0x8FB2, 0xB941, 0x8FB4, 0xF35B, 0x8FBF, 0xCBA6, 0x8FC2, 0xA8B1, 0x8FC4, 0xA8B4, 0x8FC5, 0xA8B3, + 0x8FC6, 0xA8B2, 0x8FC9, 0xCBA5, 0x8FCB, 0xCDCD, 0x8FCD, 0xCDCF, 0x8FCE, 0xAAEF, 0x8FD1, 0xAAF1, 0x8FD2, 0xCDCC, 0x8FD3, 0xCDCE, + 0x8FD4, 0xAAF0, 0x8FD5, 0xCDD1, 0x8FD6, 0xCDD0, 0x8FD7, 0xCDD2, 0x8FE0, 0xD0B6, 0x8FE1, 0xD0B4, 0x8FE2, 0xAD7C, 0x8FE3, 0xD0B3, + 0x8FE4, 0xADA3, 0x8FE5, 0xAD7E, 0x8FE6, 0xAD7B, 0x8FE8, 0xADA4, 0x8FEA, 0xAD7D, 0x8FEB, 0xADA2, 0x8FED, 0xADA1, 0x8FEE, 0xD0B5, + 0x8FF0, 0xAD7A, 0x8FF4, 0xB06A, 0x8FF5, 0xD3EB, 0x8FF6, 0xD3F1, 0x8FF7, 0xB067, 0x8FF8, 0xB06E, 0x8FFA, 0xB069, 0x8FFB, 0xD3EE, + 0x8FFC, 0xD3F0, 0x8FFD, 0xB06C, 0x8FFE, 0xD3EA, 0x8FFF, 0xD3ED, 0x9000, 0xB068, 0x9001, 0xB065, 0x9002, 0xD3EC, 0x9003, 0xB06B, + 0x9004, 0xD3EF, 0x9005, 0xB06D, 0x9006, 0xB066, 0x900B, 0xD7E3, 0x900C, 0xD7E6, 0x900D, 0xB370, 0x900F, 0xB37A, 0x9010, 0xB376, + 0x9011, 0xD7E4, 0x9014, 0xB37E, 0x9015, 0xB377, 0x9016, 0xB37C, 0x9017, 0xB372, 0x9019, 0xB36F, 0x901A, 0xB371, 0x901B, 0xB37D, + 0x901C, 0xD7E5, 0x901D, 0xB375, 0x901E, 0xB378, 0x901F, 0xB374, 0x9020, 0xB379, 0x9021, 0xD7E7, 0x9022, 0xB37B, 0x9023, 0xB373, + 0x9024, 0xD7E2, 0x902D, 0xDC4D, 0x902E, 0xB665, 0x902F, 0xDC4F, 0x9031, 0xB667, 0x9032, 0xB669, 0x9034, 0xDC4E, 0x9035, 0xB666, + 0x9036, 0xB66A, 0x9038, 0xB668, 0x903C, 0xB947, 0x903D, 0xE0A3, 0x903E, 0xB94F, 0x903F, 0xE07E, 0x9041, 0xB950, 0x9042, 0xB945, + 0x9044, 0xE0A1, 0x9047, 0xB94A, 0x9049, 0xE0A2, 0x904A, 0xB943, 0x904B, 0xB942, 0x904D, 0xB94D, 0x904E, 0xB94C, 0x904F, 0xB94B, + 0x9050, 0xB949, 0x9051, 0xB94E, 0x9052, 0xE07D, 0x9053, 0xB944, 0x9054, 0xB946, 0x9055, 0xB948, 0x9058, 0xBBB8, 0x9059, 0xBBBB, + 0x905B, 0xBBBF, 0x905C, 0xBBB9, 0x905D, 0xBBBE, 0x905E, 0xBBBC, 0x9060, 0xBBB7, 0x9062, 0xBBBD, 0x9063, 0xBBBA, 0x9067, 0xE852, + 0x9068, 0xBE43, 0x9069, 0xBE41, 0x906B, 0xE853, 0x906D, 0xBE44, 0x906E, 0xBE42, 0x906F, 0xE851, 0x9070, 0xE850, 0x9072, 0xBFF0, + 0x9073, 0xE84F, 0x9074, 0xBFEE, 0x9075, 0xBFED, 0x9076, 0xEBD0, 0x9077, 0xBE45, 0x9078, 0xBFEF, 0x9079, 0xEBD1, 0x907A, 0xBFF2, + 0x907B, 0xEBD2, 0x907C, 0xBFF1, 0x907D, 0xC1D8, 0x907E, 0xEEC3, 0x907F, 0xC1D7, 0x9080, 0xC1DC, 0x9081, 0xC1DA, 0x9082, 0xC1DB, + 0x9083, 0xC2E3, 0x9084, 0xC1D9, 0x9085, 0xEEC2, 0x9086, 0xEBD3, 0x9087, 0xC2E2, 0x9088, 0xC2E4, 0x908A, 0xC3E4, 0x908B, 0xC3E5, + 0x908D, 0xF4E0, 0x908F, 0xC5DE, 0x9090, 0xC5DD, 0x9091, 0xA8B6, 0x9094, 0xCA55, 0x9095, 0xB06F, 0x9097, 0xCA52, 0x9098, 0xCA53, + 0x9099, 0xCA51, 0x909B, 0xCA54, 0x909E, 0xCBAA, 0x909F, 0xCBA7, 0x90A0, 0xCBAC, 0x90A1, 0xCBA8, 0x90A2, 0xA8B7, 0x90A3, 0xA8BA, + 0x90A5, 0xCBA9, 0x90A6, 0xA8B9, 0x90A7, 0xCBAB, 0x90AA, 0xA8B8, 0x90AF, 0xCDD5, 0x90B0, 0xCDD7, 0x90B1, 0xAAF4, 0x90B2, 0xCDD3, + 0x90B3, 0xCDD6, 0x90B4, 0xCDD4, 0x90B5, 0xAAF2, 0x90B6, 0xAAF5, 0x90B8, 0xAAF3, 0x90BD, 0xD0B8, 0x90BE, 0xD0BC, 0x90BF, 0xD0B9, + 0x90C1, 0xADA7, 0x90C3, 0xADA8, 0x90C5, 0xD0BB, 0x90C7, 0xD0BD, 0x90C8, 0xD0BF, 0x90CA, 0xADA5, 0x90CB, 0xD0BE, 0x90CE, 0xADA6, + 0x90D4, 0xD7EE, 0x90D5, 0xD0BA, 0x90D6, 0xD3F2, 0x90D7, 0xD3FB, 0x90D8, 0xD3F9, 0x90D9, 0xD3F4, 0x90DA, 0xD3F5, 0x90DB, 0xD3FA, + 0x90DC, 0xD3FC, 0x90DD, 0xB071, 0x90DF, 0xD3F7, 0x90E0, 0xD3F3, 0x90E1, 0xB070, 0x90E2, 0xB072, 0x90E3, 0xD3F6, 0x90E4, 0xD3FD, + 0x90E5, 0xD3F8, 0x90E8, 0xB3A1, 0x90E9, 0xD7F1, 0x90EA, 0xD7E9, 0x90EB, 0xD7EF, 0x90EC, 0xD7F0, 0x90ED, 0xB3A2, 0x90EF, 0xD7E8, + 0x90F0, 0xD7EA, 0x90F1, 0xD0B7, 0x90F2, 0xD7EC, 0x90F3, 0xD7ED, 0x90F4, 0xD7EB, 0x90F5, 0xB66C, 0x90F9, 0xDC56, 0x90FA, 0xEBD4, + 0x90FB, 0xDC57, 0x90FC, 0xDC54, 0x90FD, 0xB3A3, 0x90FE, 0xB66E, 0x90FF, 0xDC53, 0x9100, 0xDC59, 0x9101, 0xDC58, 0x9102, 0xB66B, + 0x9103, 0xDC5C, 0x9104, 0xDC52, 0x9105, 0xDC5B, 0x9106, 0xDC50, 0x9107, 0xDC5A, 0x9108, 0xDC55, 0x9109, 0xB66D, 0x910B, 0xE0AA, + 0x910D, 0xE0A5, 0x910E, 0xE0AB, 0x910F, 0xE0A6, 0x9110, 0xE0A4, 0x9111, 0xE0A7, 0x9112, 0xB951, 0x9114, 0xE0A9, 0x9116, 0xE0A8, + 0x9117, 0xB952, 0x9118, 0xBBC1, 0x9119, 0xBBC0, 0x911A, 0xE46E, 0x911B, 0xE471, 0x911C, 0xE469, 0x911D, 0xE46D, 0x911E, 0xBBC2, + 0x911F, 0xE46C, 0x9120, 0xE46A, 0x9121, 0xE470, 0x9122, 0xE46B, 0x9123, 0xE468, 0x9124, 0xE46F, 0x9126, 0xE859, 0x9127, 0xBE48, + 0x9128, 0xF14A, 0x9129, 0xE856, 0x912A, 0xE857, 0x912B, 0xE855, 0x912C, 0xDC51, 0x912D, 0xBE47, 0x912E, 0xE85A, 0x912F, 0xE854, + 0x9130, 0xBE46, 0x9131, 0xBE49, 0x9132, 0xE858, 0x9133, 0xEBD5, 0x9134, 0xBFF3, 0x9135, 0xEBD6, 0x9136, 0xEBD7, 0x9138, 0xEEC4, + 0x9139, 0xC1DD, 0x913A, 0xF14B, 0x913B, 0xF14C, 0x913E, 0xF14D, 0x913F, 0xF35D, 0x9140, 0xF35C, 0x9141, 0xF4E2, 0x9143, 0xF4E1, + 0x9144, 0xF65B, 0x9145, 0xF65C, 0x9146, 0xF65A, 0x9147, 0xF766, 0x9148, 0xC5B0, 0x9149, 0xA8BB, 0x914A, 0xADAA, 0x914B, 0xADA9, + 0x914C, 0xB075, 0x914D, 0xB074, 0x914E, 0xD440, 0x914F, 0xD441, 0x9150, 0xD3FE, 0x9152, 0xB073, 0x9153, 0xD7F5, 0x9155, 0xD7F6, + 0x9156, 0xD7F2, 0x9157, 0xB3A4, 0x9158, 0xD7F3, 0x915A, 0xD7F4, 0x915F, 0xDC5F, 0x9160, 0xDC61, 0x9161, 0xDC5D, 0x9162, 0xDC60, + 0x9163, 0xB66F, 0x9164, 0xDC5E, 0x9165, 0xB670, 0x9168, 0xDD73, 0x9169, 0xB955, 0x916A, 0xB954, 0x916C, 0xB953, 0x916E, 0xE0AC, + 0x916F, 0xE0AD, 0x9172, 0xE473, 0x9173, 0xE475, 0x9174, 0xBBC6, 0x9175, 0xBBC3, 0x9177, 0xBBC5, 0x9178, 0xBBC4, 0x9179, 0xE474, + 0x917A, 0xE472, 0x9180, 0xE861, 0x9181, 0xE85E, 0x9182, 0xE85F, 0x9183, 0xBE4D, 0x9184, 0xE860, 0x9185, 0xE85B, 0x9186, 0xE85C, + 0x9187, 0xBE4A, 0x9189, 0xBE4B, 0x918A, 0xE85D, 0x918B, 0xBE4C, 0x918D, 0xEBDB, 0x918F, 0xEBDC, 0x9190, 0xEBD9, 0x9191, 0xEBDA, + 0x9192, 0xBFF4, 0x9193, 0xEBD8, 0x9199, 0xEEC8, 0x919A, 0xEEC5, 0x919B, 0xEEC7, 0x919C, 0xC1E0, 0x919D, 0xEECB, 0x919E, 0xC1DF, + 0x919F, 0xEEC9, 0x91A0, 0xEECC, 0x91A1, 0xEECA, 0x91A2, 0xEEC6, 0x91A3, 0xC1DE, 0x91A5, 0xF14F, 0x91A7, 0xF150, 0x91A8, 0xF14E, + 0x91AA, 0xF152, 0x91AB, 0xC2E5, 0x91AC, 0xC2E6, 0x91AD, 0xF35F, 0x91AE, 0xC3E7, 0x91AF, 0xF151, 0x91B0, 0xF35E, 0x91B1, 0xC3E6, + 0x91B2, 0xF4E5, 0x91B3, 0xF4E6, 0x91B4, 0xC4BF, 0x91B5, 0xF4E4, 0x91B7, 0xF4E3, 0x91B9, 0xF65D, 0x91BA, 0xC548, 0x91BC, 0xF849, + 0x91BD, 0xF8C8, 0x91BE, 0xF8C7, 0x91C0, 0xC643, 0x91C1, 0xC65D, 0x91C2, 0xF8C9, 0x91C3, 0xF971, 0x91C5, 0xC66F, 0x91C6, 0xA8BC, + 0x91C7, 0xAAF6, 0x91C9, 0xB956, 0x91CB, 0xC4C0, 0x91CC, 0xA8BD, 0x91CD, 0xADAB, 0x91CE, 0xB3A5, 0x91CF, 0xB671, 0x91D0, 0xC2E7, + 0x91D1, 0xAAF7, 0x91D3, 0xD0C1, 0x91D4, 0xD0C0, 0x91D5, 0xD442, 0x91D7, 0xB078, 0x91D8, 0xB076, 0x91D9, 0xB07A, 0x91DA, 0xD444, + 0x91DC, 0xB079, 0x91DD, 0xB077, 0x91E2, 0xD443, 0x91E3, 0xB3A8, 0x91E4, 0xD7FC, 0x91E6, 0xB3A7, 0x91E7, 0xB3A9, 0x91E8, 0xD842, + 0x91E9, 0xB3AB, 0x91EA, 0xD7FE, 0x91EB, 0xD840, 0x91EC, 0xD7F7, 0x91ED, 0xB3AA, 0x91EE, 0xD843, 0x91F1, 0xD7F9, 0x91F3, 0xD7FA, + 0x91F4, 0xD7F8, 0x91F5, 0xB3A6, 0x91F7, 0xD841, 0x91F8, 0xD7FB, 0x91F9, 0xD7FD, 0x91FD, 0xDC6D, 0x91FF, 0xDC6C, 0x9200, 0xDC6A, + 0x9201, 0xDC62, 0x9202, 0xDC71, 0x9203, 0xDC65, 0x9204, 0xDC6F, 0x9205, 0xDC76, 0x9206, 0xDC6E, 0x9207, 0xB679, 0x9209, 0xB675, + 0x920A, 0xDC63, 0x920C, 0xDC69, 0x920D, 0xB677, 0x920F, 0xDC68, 0x9210, 0xB678, 0x9211, 0xB67A, 0x9212, 0xDC6B, 0x9214, 0xB672, + 0x9215, 0xB673, 0x9216, 0xDC77, 0x9217, 0xDC75, 0x9219, 0xDC74, 0x921A, 0xDC66, 0x921C, 0xDC72, 0x921E, 0xB676, 0x9223, 0xB674, + 0x9224, 0xDC73, 0x9225, 0xDC64, 0x9226, 0xDC67, 0x9227, 0xDC70, 0x922D, 0xE4BA, 0x922E, 0xE0B7, 0x9230, 0xE0B0, 0x9231, 0xE0C3, + 0x9232, 0xE0CC, 0x9233, 0xE0B3, 0x9234, 0xB961, 0x9236, 0xE0C0, 0x9237, 0xB957, 0x9238, 0xB959, 0x9239, 0xB965, 0x923A, 0xE0B1, + 0x923D, 0xB95A, 0x923E, 0xB95C, 0x923F, 0xB966, 0x9240, 0xB95B, 0x9245, 0xB964, 0x9246, 0xE0B9, 0x9248, 0xE0AE, 0x9249, 0xB962, + 0x924A, 0xE0B8, 0x924B, 0xB95E, 0x924C, 0xE0CA, 0x924D, 0xB963, 0x924E, 0xE0C8, 0x924F, 0xE0BC, 0x9250, 0xE0C6, 0x9251, 0xB960, + 0x9252, 0xE0AF, 0x9253, 0xE0C9, 0x9254, 0xE0C4, 0x9256, 0xE0CB, 0x9257, 0xB958, 0x925A, 0xB967, 0x925B, 0xB95D, 0x925E, 0xE0B5, + 0x9260, 0xE0BD, 0x9261, 0xE0C1, 0x9263, 0xE0C5, 0x9264, 0xB95F, 0x9265, 0xE0B4, 0x9266, 0xE0B2, 0x9267, 0xE0BE, 0x926C, 0xE0BB, + 0x926D, 0xE0BA, 0x926F, 0xE0BF, 0x9270, 0xE0C2, 0x9272, 0xE0C7, 0x9276, 0xE478, 0x9278, 0xBBC7, 0x9279, 0xE4A4, 0x927A, 0xE47A, + 0x927B, 0xBBCC, 0x927C, 0xBBD0, 0x927D, 0xE4AD, 0x927E, 0xE4B5, 0x927F, 0xE4A6, 0x9280, 0xBBC8, 0x9282, 0xE4AA, 0x9283, 0xE0B6, + 0x9285, 0xBBC9, 0x9286, 0xE4B1, 0x9287, 0xE4B6, 0x9288, 0xE4AE, 0x928A, 0xE4B0, 0x928B, 0xE4B9, 0x928C, 0xE4B2, 0x928D, 0xE47E, + 0x928E, 0xE4A9, 0x9291, 0xBBD1, 0x9293, 0xBBCD, 0x9294, 0xE47C, 0x9295, 0xE4AB, 0x9296, 0xBBCB, 0x9297, 0xE4A5, 0x9298, 0xBBCA, + 0x9299, 0xE4B3, 0x929A, 0xE4A2, 0x929B, 0xE479, 0x929C, 0xBBCE, 0x929D, 0xE4B8, 0x92A0, 0xE47B, 0x92A1, 0xE4AF, 0x92A2, 0xE4AC, + 0x92A3, 0xE4A7, 0x92A4, 0xE477, 0x92A5, 0xE476, 0x92A6, 0xE4A1, 0x92A7, 0xE4B4, 0x92A8, 0xBBCF, 0x92A9, 0xE4B7, 0x92AA, 0xE47D, + 0x92AB, 0xE4A3, 0x92AC, 0xBE52, 0x92B2, 0xBE5A, 0x92B3, 0xBE55, 0x92B4, 0xE8A4, 0x92B5, 0xE8A1, 0x92B6, 0xE867, 0x92B7, 0xBE50, + 0x92B9, 0xF9D7, 0x92BB, 0xBE4F, 0x92BC, 0xBE56, 0x92C0, 0xE865, 0x92C1, 0xBE54, 0x92C2, 0xE871, 0x92C3, 0xE863, 0x92C4, 0xE864, + 0x92C5, 0xBE4E, 0x92C6, 0xE8A3, 0x92C7, 0xBE58, 0x92C8, 0xE874, 0x92C9, 0xE879, 0x92CA, 0xE873, 0x92CB, 0xEBEE, 0x92CC, 0xE86F, + 0x92CD, 0xE877, 0x92CE, 0xE875, 0x92CF, 0xE868, 0x92D0, 0xE862, 0x92D1, 0xE87D, 0x92D2, 0xBE57, 0x92D3, 0xE87E, 0x92D5, 0xE878, + 0x92D7, 0xE86D, 0x92D8, 0xE86B, 0x92D9, 0xE866, 0x92DD, 0xE86E, 0x92DE, 0xE87B, 0x92DF, 0xE86A, 0x92E0, 0xE87A, 0x92E1, 0xE8A2, + 0x92E4, 0xBE53, 0x92E6, 0xE876, 0x92E7, 0xE87C, 0x92E8, 0xE872, 0x92E9, 0xE86C, 0x92EA, 0xBE51, 0x92EE, 0xE4A8, 0x92EF, 0xE870, + 0x92F0, 0xBE59, 0x92F1, 0xE869, 0x92F7, 0xEBF4, 0x92F8, 0xBFF7, 0x92F9, 0xEBF3, 0x92FA, 0xEBF0, 0x92FB, 0xEC44, 0x92FC, 0xBFFB, + 0x92FE, 0xEC41, 0x92FF, 0xEBF8, 0x9300, 0xEC43, 0x9301, 0xEBE9, 0x9302, 0xEBF6, 0x9304, 0xBFFD, 0x9306, 0xEBE1, 0x9308, 0xEBDF, + 0x9309, 0xEC42, 0x930B, 0xEC40, 0x930C, 0xEBFE, 0x930D, 0xEBED, 0x930E, 0xEBEC, 0x930F, 0xEBE2, 0x9310, 0xC040, 0x9312, 0xEBE8, + 0x9313, 0xEBF2, 0x9314, 0xEBFD, 0x9315, 0xC043, 0x9316, 0xEC45, 0x9318, 0xC1E8, 0x9319, 0xC045, 0x931A, 0xBFFE, 0x931B, 0xEBE6, + 0x931D, 0xEBEF, 0x931E, 0xEBDE, 0x931F, 0xEBE0, 0x9320, 0xBFF5, 0x9321, 0xC042, 0x9322, 0xBFFA, 0x9323, 0xEBE7, 0x9324, 0xEBF7, + 0x9325, 0xEBF1, 0x9326, 0xC041, 0x9327, 0xEBDD, 0x9328, 0xC1E3, 0x9329, 0xEBF9, 0x932A, 0xEBFC, 0x932B, 0xBFFC, 0x932D, 0xEBEB, + 0x932E, 0xC044, 0x932F, 0xBFF9, 0x9333, 0xBFF8, 0x9334, 0xEBF5, 0x9335, 0xEBFB, 0x9336, 0xBFF6, 0x9338, 0xEBE4, 0x9339, 0xEBFA, + 0x933C, 0xEBE5, 0x9346, 0xEBEA, 0x9347, 0xEED2, 0x9349, 0xEED7, 0x934A, 0xC1E5, 0x934B, 0xC1E7, 0x934C, 0xEEDD, 0x934D, 0xC1E1, + 0x934E, 0xEEEC, 0x934F, 0xEEE3, 0x9350, 0xEED8, 0x9351, 0xEED9, 0x9352, 0xEEE2, 0x9354, 0xC1EE, 0x9355, 0xEEE1, 0x9356, 0xEED1, + 0x9357, 0xEEE0, 0x9358, 0xEED4, 0x9359, 0xEEED, 0x935A, 0xC1ED, 0x935B, 0xC1EB, 0x935C, 0xEED5, 0x935E, 0xEEE8, 0x9360, 0xEEDA, + 0x9361, 0xEEE7, 0x9363, 0xEEE9, 0x9364, 0xEED0, 0x9365, 0xC1E6, 0x9367, 0xEEEA, 0x936A, 0xEEDE, 0x936C, 0xC1EA, 0x936D, 0xEEDB, + 0x9370, 0xC1EC, 0x9371, 0xEEE4, 0x9375, 0xC1E4, 0x9376, 0xEED6, 0x9377, 0xEEE5, 0x9379, 0xEEDF, 0x937A, 0xEBE3, 0x937B, 0xEEE6, + 0x937C, 0xEED3, 0x937E, 0xC1E9, 0x9380, 0xEEEB, 0x9382, 0xC1E2, 0x9383, 0xEECE, 0x9388, 0xF160, 0x9389, 0xF159, 0x938A, 0xC2E9, + 0x938C, 0xF154, 0x938D, 0xF163, 0x938E, 0xF15B, 0x938F, 0xEEDC, 0x9391, 0xF165, 0x9392, 0xF155, 0x9394, 0xC2E8, 0x9395, 0xF15F, + 0x9396, 0xC2EA, 0x9397, 0xC2F2, 0x9398, 0xC2F0, 0x9399, 0xF161, 0x939A, 0xC2F1, 0x939B, 0xF157, 0x939D, 0xF158, 0x939E, 0xF15D, + 0x939F, 0xF162, 0x93A1, 0xEECD, 0x93A2, 0xC2EB, 0x93A3, 0xF16A, 0x93A4, 0xF167, 0x93A5, 0xF16B, 0x93A6, 0xF15E, 0x93A7, 0xF15A, + 0x93A8, 0xF168, 0x93A9, 0xF36A, 0x93AA, 0xF15C, 0x93AC, 0xC2EE, 0x93AE, 0xC2ED, 0x93AF, 0xEECF, 0x93B0, 0xC2EF, 0x93B1, 0xF164, + 0x93B2, 0xF166, 0x93B3, 0xC2EC, 0x93B4, 0xF169, 0x93B5, 0xF153, 0x93B7, 0xF156, 0x93C0, 0xF373, 0x93C2, 0xF363, 0x93C3, 0xC3EB, + 0x93C4, 0xF371, 0x93C7, 0xF361, 0x93C8, 0xC3EC, 0x93CA, 0xF36C, 0x93CC, 0xF368, 0x93CD, 0xC3F1, 0x93CE, 0xF372, 0x93CF, 0xF362, + 0x93D0, 0xF365, 0x93D1, 0xC3E9, 0x93D2, 0xF374, 0x93D4, 0xF36D, 0x93D5, 0xF370, 0x93D6, 0xC3EF, 0x93D7, 0xC3F4, 0x93D8, 0xC3F2, + 0x93D9, 0xF369, 0x93DA, 0xF364, 0x93DC, 0xC3ED, 0x93DD, 0xC3EE, 0x93DE, 0xF360, 0x93DF, 0xC3EA, 0x93E1, 0xC3E8, 0x93E2, 0xC3F0, + 0x93E3, 0xF36F, 0x93E4, 0xC3F3, 0x93E6, 0xF36B, 0x93E7, 0xF375, 0x93E8, 0xC3F5, 0x93EC, 0xF367, 0x93EE, 0xF36E, 0x93F5, 0xF4F3, + 0x93F6, 0xF542, 0x93F7, 0xF4F5, 0x93F8, 0xF4FC, 0x93F9, 0xF366, 0x93FA, 0xF4FA, 0x93FB, 0xF4E9, 0x93FC, 0xF540, 0x93FD, 0xC4C3, + 0x93FE, 0xF4ED, 0x93FF, 0xF4FE, 0x9400, 0xF4F4, 0x9403, 0xC4C2, 0x9406, 0xF544, 0x9407, 0xF4F6, 0x9409, 0xF4FB, 0x940A, 0xF4FD, + 0x940B, 0xF4E7, 0x940C, 0xF541, 0x940D, 0xF4F2, 0x940E, 0xF4F7, 0x940F, 0xF4EB, 0x9410, 0xF4EF, 0x9411, 0xF543, 0x9412, 0xF4F9, + 0x9413, 0xF4E8, 0x9414, 0xF4EC, 0x9415, 0xF4EE, 0x9416, 0xF4F8, 0x9418, 0xC4C1, 0x9419, 0xF4F1, 0x9420, 0xF4EA, 0x9428, 0xF4F0, + 0x9429, 0xF661, 0x942A, 0xF666, 0x942B, 0xC54F, 0x942C, 0xF668, 0x942E, 0xC549, 0x9430, 0xF664, 0x9431, 0xF66A, 0x9432, 0xC54E, + 0x9433, 0xC54A, 0x9435, 0xC54B, 0x9436, 0xF660, 0x9437, 0xF667, 0x9438, 0xC54D, 0x9439, 0xF665, 0x943A, 0xC54C, 0x943B, 0xF65F, + 0x943C, 0xF663, 0x943D, 0xF662, 0x943F, 0xF65E, 0x9440, 0xF669, 0x9444, 0xC5B1, 0x9445, 0xF76D, 0x9446, 0xF770, 0x9447, 0xF76C, + 0x9448, 0xF76E, 0x9449, 0xF76F, 0x944A, 0xF769, 0x944B, 0xF76A, 0x944C, 0xF767, 0x944F, 0xF76B, 0x9450, 0xF768, 0x9451, 0xC5B2, + 0x9452, 0xC5B3, 0x9455, 0xF84B, 0x9457, 0xF84D, 0x945D, 0xF84C, 0x945E, 0xF84E, 0x9460, 0xC5E0, 0x9462, 0xF84A, 0x9463, 0xC5DF, + 0x9464, 0xC5E1, 0x9468, 0xF8CB, 0x9469, 0xF8CC, 0x946A, 0xC644, 0x946B, 0xF8CA, 0x946D, 0xF953, 0x946E, 0xF952, 0x946F, 0xF954, + 0x9470, 0xC65F, 0x9471, 0xF955, 0x9472, 0xC65E, 0x9473, 0xF956, 0x9474, 0xF972, 0x9475, 0xF975, 0x9476, 0xF974, 0x9477, 0xC668, + 0x9478, 0xF973, 0x947C, 0xC672, 0x947D, 0xC670, 0x947E, 0xC671, 0x947F, 0xC677, 0x9480, 0xF9C0, 0x9481, 0xF9C1, 0x9482, 0xF9BF, + 0x9483, 0xF9C9, 0x9577, 0xAAF8, 0x957A, 0xD844, 0x957B, 0xDC78, 0x957C, 0xE8A5, 0x957D, 0xF376, 0x9580, 0xAAF9, 0x9582, 0xADAC, + 0x9583, 0xB07B, 0x9586, 0xD845, 0x9588, 0xD846, 0x9589, 0xB3AC, 0x958B, 0xB67D, 0x958C, 0xDC7A, 0x958D, 0xDC79, 0x958E, 0xB6A3, + 0x958F, 0xB67C, 0x9590, 0xDC7B, 0x9591, 0xB67E, 0x9592, 0xB6A2, 0x9593, 0xB6A1, 0x9594, 0xB67B, 0x9598, 0xB968, 0x959B, 0xE0D0, + 0x959C, 0xE0CE, 0x959E, 0xE0CF, 0x959F, 0xE0CD, 0x95A1, 0xBBD2, 0x95A3, 0xBBD5, 0x95A4, 0xBBD7, 0x95A5, 0xBBD6, 0x95A8, 0xBBD3, + 0x95A9, 0xBBD4, 0x95AB, 0xE8A7, 0x95AC, 0xE8A6, 0x95AD, 0xBE5B, 0x95AE, 0xE8A8, 0x95B0, 0xE8A9, 0x95B1, 0xBE5C, 0x95B5, 0xEC4D, + 0x95B6, 0xEC4B, 0x95B7, 0xEEF3, 0x95B9, 0xEC49, 0x95BA, 0xEC4A, 0x95BB, 0xC046, 0x95BC, 0xEC46, 0x95BD, 0xEC4E, 0x95BE, 0xEC48, + 0x95BF, 0xEC4C, 0x95C0, 0xEEEF, 0x95C3, 0xEEF1, 0x95C5, 0xEEF2, 0x95C6, 0xC1F3, 0x95C7, 0xEEEE, 0x95C8, 0xC1F2, 0x95C9, 0xEEF0, + 0x95CA, 0xC1EF, 0x95CB, 0xC1F0, 0x95CC, 0xC1F1, 0x95CD, 0xEC47, 0x95D0, 0xC2F5, 0x95D1, 0xF16E, 0x95D2, 0xF16C, 0x95D3, 0xF16D, + 0x95D4, 0xC2F3, 0x95D5, 0xC2F6, 0x95D6, 0xC2F4, 0x95DA, 0xF377, 0x95DB, 0xF378, 0x95DC, 0xC3F6, 0x95DE, 0xF545, 0x95DF, 0xF547, + 0x95E0, 0xF546, 0x95E1, 0xC4C4, 0x95E2, 0xC550, 0x95E3, 0xF66D, 0x95E4, 0xF66C, 0x95E5, 0xF66B, 0x961C, 0xAAFA, 0x961E, 0xC9AA, + 0x9620, 0xCA58, 0x9621, 0xA6E9, 0x9622, 0xCA56, 0x9623, 0xCA59, 0x9624, 0xCA57, 0x9628, 0xCBAE, 0x962A, 0xA8C1, 0x962C, 0xA8C2, + 0x962D, 0xCBB0, 0x962E, 0xA8BF, 0x962F, 0xCBAF, 0x9630, 0xCBAD, 0x9631, 0xA8C0, 0x9632, 0xA8BE, 0x9639, 0xCDD8, 0x963A, 0xCDDB, + 0x963B, 0xAAFD, 0x963C, 0xCDDA, 0x963D, 0xCDD9, 0x963F, 0xAAFC, 0x9640, 0xAAFB, 0x9642, 0xAB40, 0x9643, 0xCDDC, 0x9644, 0xAAFE, + 0x964A, 0xD0C6, 0x964B, 0xADAE, 0x964C, 0xADAF, 0x964D, 0xADB0, 0x964E, 0xD0C7, 0x964F, 0xD0C3, 0x9650, 0xADAD, 0x9651, 0xD0C4, + 0x9653, 0xD0C5, 0x9654, 0xD0C2, 0x9658, 0xB0A4, 0x965B, 0xB0A1, 0x965C, 0xD445, 0x965D, 0xB0A2, 0x965E, 0xB0A5, 0x965F, 0xD446, + 0x9661, 0xB07E, 0x9662, 0xB07C, 0x9663, 0xB07D, 0x9664, 0xB0A3, 0x966A, 0xB3AD, 0x966B, 0xD849, 0x966C, 0xB3B5, 0x966D, 0xD848, + 0x966F, 0xD84B, 0x9670, 0xB3B1, 0x9671, 0xD84A, 0x9672, 0xB6AB, 0x9673, 0xB3AF, 0x9674, 0xB3B2, 0x9675, 0xB3AE, 0x9676, 0xB3B3, + 0x9677, 0xB3B4, 0x9678, 0xB3B0, 0x967C, 0xD847, 0x967D, 0xB6A7, 0x967E, 0xDC7D, 0x9680, 0xDCA3, 0x9683, 0xDCA2, 0x9684, 0xB6AC, + 0x9685, 0xB6A8, 0x9686, 0xB6A9, 0x9687, 0xDC7C, 0x9688, 0xDC7E, 0x9689, 0xDCA1, 0x968A, 0xB6A4, 0x968B, 0xB6A6, 0x968D, 0xB6AA, + 0x968E, 0xB6A5, 0x9691, 0xE0D3, 0x9692, 0xE0D1, 0x9693, 0xE0D2, 0x9694, 0xB96A, 0x9695, 0xB96B, 0x9697, 0xE0D4, 0x9698, 0xB969, + 0x9699, 0xBBD8, 0x969B, 0xBBDA, 0x969C, 0xBBD9, 0x969E, 0xE4BB, 0x96A1, 0xE4BC, 0x96A2, 0xE8AB, 0x96A4, 0xE8AA, 0x96A7, 0xC047, + 0x96A8, 0xC048, 0x96A9, 0xEC4F, 0x96AA, 0xC049, 0x96AC, 0xEEF6, 0x96AE, 0xEEF4, 0x96B0, 0xEEF5, 0x96B1, 0xC1F4, 0x96B3, 0xF16F, + 0x96B4, 0xC3F7, 0x96B8, 0xC1F5, 0x96B9, 0xAB41, 0x96BB, 0xB0A6, 0x96BC, 0xD447, 0x96BF, 0xD84C, 0x96C0, 0xB3B6, 0x96C1, 0xB6AD, + 0x96C2, 0xDCA4, 0x96C3, 0xDCA6, 0x96C4, 0xB6AF, 0x96C5, 0xB6AE, 0x96C6, 0xB6B0, 0x96C7, 0xB6B1, 0x96C8, 0xDCA5, 0x96C9, 0xB96E, + 0x96CA, 0xB96F, 0x96CB, 0xB96D, 0x96CC, 0xBBDB, 0x96CD, 0xB96C, 0x96CE, 0xE0D5, 0x96D2, 0xBBDC, 0x96D3, 0xE8AC, 0x96D4, 0xEC50, + 0x96D5, 0xC04A, 0x96D6, 0xC1F6, 0x96D7, 0xF170, 0x96D8, 0xF174, 0x96D9, 0xC2F9, 0x96DA, 0xF171, 0x96DB, 0xC2FA, 0x96DC, 0xC2F8, + 0x96DD, 0xF175, 0x96DE, 0xC2FB, 0x96DF, 0xF173, 0x96E1, 0xF379, 0x96E2, 0xC2F7, 0x96E3, 0xC3F8, 0x96E5, 0xF8CD, 0x96E8, 0xAB42, + 0x96E9, 0xB3B8, 0x96EA, 0xB3B7, 0x96EF, 0xB6B2, 0x96F0, 0xDCA8, 0x96F1, 0xDCA7, 0x96F2, 0xB6B3, 0x96F5, 0xE0D9, 0x96F6, 0xB973, + 0x96F7, 0xB970, 0x96F8, 0xE0D8, 0x96F9, 0xB972, 0x96FA, 0xE0D6, 0x96FB, 0xB971, 0x96FD, 0xE0D7, 0x96FF, 0xE4BD, 0x9700, 0xBBDD, + 0x9702, 0xE8AF, 0x9704, 0xBE5D, 0x9705, 0xE8AD, 0x9706, 0xBE5E, 0x9707, 0xBE5F, 0x9708, 0xE8AE, 0x9709, 0xBE60, 0x970B, 0xEC51, + 0x970D, 0xC04E, 0x970E, 0xC04B, 0x970F, 0xC050, 0x9710, 0xEC53, 0x9711, 0xC04C, 0x9712, 0xEC52, 0x9713, 0xC04F, 0x9716, 0xC04D, + 0x9718, 0xEEF9, 0x9719, 0xEEFB, 0x971C, 0xC1F7, 0x971D, 0xEEFA, 0x971E, 0xC1F8, 0x971F, 0xEEF8, 0x9720, 0xEEF7, 0x9722, 0xF177, + 0x9723, 0xF176, 0x9724, 0xC2FC, 0x9725, 0xF178, 0x9726, 0xF37E, 0x9727, 0xC3FA, 0x9728, 0xF37D, 0x9729, 0xF37A, 0x972A, 0xC3F9, + 0x972B, 0xF37B, 0x972C, 0xF37C, 0x972E, 0xF548, 0x972F, 0xF549, 0x9730, 0xC4C5, 0x9732, 0xC553, 0x9735, 0xF66E, 0x9738, 0xC551, + 0x9739, 0xC552, 0x973A, 0xF66F, 0x973D, 0xC5B4, 0x973E, 0xC5B5, 0x973F, 0xF771, 0x9742, 0xC645, 0x9743, 0xF8CF, 0x9744, 0xC647, + 0x9746, 0xF8CE, 0x9747, 0xF8D0, 0x9748, 0xC646, 0x9749, 0xF957, 0x974B, 0xF9AD, 0x9752, 0xAB43, 0x9756, 0xB974, 0x9758, 0xE4BE, + 0x975A, 0xE8B0, 0x975B, 0xC051, 0x975C, 0xC052, 0x975E, 0xAB44, 0x9760, 0xBE61, 0x9761, 0xC3FB, 0x9762, 0xADB1, 0x9766, 0xC053, + 0x9768, 0xC5E2, 0x9769, 0xADB2, 0x976A, 0xD84D, 0x976C, 0xDCA9, 0x976E, 0xDCAB, 0x9770, 0xDCAA, 0x9772, 0xE0DD, 0x9773, 0xE0DA, + 0x9774, 0xB975, 0x9776, 0xB976, 0x9777, 0xE0DB, 0x9778, 0xE0DC, 0x977A, 0xE4C0, 0x977B, 0xE4C5, 0x977C, 0xBBDE, 0x977D, 0xE4BF, + 0x977E, 0xE4C1, 0x977F, 0xE4C8, 0x9780, 0xE4C3, 0x9781, 0xE4C7, 0x9782, 0xE4C4, 0x9783, 0xE4C2, 0x9784, 0xE4C6, 0x9785, 0xBBDF, + 0x9788, 0xE8B3, 0x978A, 0xE8B1, 0x978B, 0xBE63, 0x978D, 0xBE62, 0x978E, 0xE8B2, 0x978F, 0xBE64, 0x9794, 0xEC56, 0x9797, 0xEC55, + 0x9798, 0xC054, 0x9799, 0xEC54, 0x979A, 0xEEFC, 0x979C, 0xEEFE, 0x979D, 0xEF41, 0x979E, 0xEF40, 0x97A0, 0xC1F9, 0x97A1, 0xEEFD, + 0x97A2, 0xF1A1, 0x97A3, 0xC2FD, 0x97A4, 0xF17D, 0x97A5, 0xF1A2, 0x97A6, 0xC2FE, 0x97A8, 0xF17B, 0x97AA, 0xF17E, 0x97AB, 0xF17C, + 0x97AC, 0xF179, 0x97AD, 0xC340, 0x97AE, 0xF17A, 0x97B3, 0xF3A1, 0x97B6, 0xF3A3, 0x97B7, 0xF3A2, 0x97B9, 0xF54A, 0x97BB, 0xF54B, + 0x97BF, 0xF670, 0x97C1, 0xC5B7, 0x97C3, 0xC5B6, 0x97C4, 0xF84F, 0x97C5, 0xF850, 0x97C6, 0xC648, 0x97C7, 0xF8D1, 0x97C9, 0xC669, + 0x97CB, 0xADB3, 0x97CC, 0xB6B4, 0x97CD, 0xE4CA, 0x97CE, 0xE4C9, 0x97CF, 0xE8B5, 0x97D0, 0xE8B4, 0x97D3, 0xC1FA, 0x97D4, 0xEF43, + 0x97D5, 0xEF42, 0x97D6, 0xF1A5, 0x97D7, 0xF1A3, 0x97D8, 0xF1A6, 0x97D9, 0xF1A4, 0x97DC, 0xC3FC, 0x97DD, 0xF3A4, 0x97DE, 0xF3A5, + 0x97DF, 0xF3A6, 0x97E1, 0xF671, 0x97E3, 0xF772, 0x97E5, 0xF8D2, 0x97ED, 0xADB4, 0x97F0, 0xEC57, 0x97F1, 0xEF44, 0x97F3, 0xADB5, + 0x97F6, 0xBBE0, 0x97F8, 0xEC58, 0x97F9, 0xC341, 0x97FA, 0xF1A7, 0x97FB, 0xC3FD, 0x97FD, 0xF54C, 0x97FE, 0xF54D, 0x97FF, 0xC554, + 0x9800, 0xF851, 0x9801, 0xADB6, 0x9802, 0xB3BB, 0x9803, 0xB3BC, 0x9804, 0xD84E, 0x9805, 0xB6B5, 0x9806, 0xB6B6, 0x9807, 0xDCAC, + 0x9808, 0xB6B7, 0x980A, 0xB97A, 0x980C, 0xB97C, 0x980D, 0xE0DF, 0x980E, 0xE0E0, 0x980F, 0xE0DE, 0x9810, 0xB977, 0x9811, 0xB978, + 0x9812, 0xB97B, 0x9813, 0xB979, 0x9816, 0xE4CB, 0x9817, 0xBBE1, 0x9818, 0xBBE2, 0x981B, 0xE8BC, 0x981C, 0xBE67, 0x981D, 0xE8B7, + 0x981E, 0xE8B6, 0x9820, 0xE8BB, 0x9821, 0xBE65, 0x9824, 0xC05B, 0x9826, 0xE8B8, 0x9827, 0xE8BD, 0x9828, 0xE8BA, 0x9829, 0xE8B9, + 0x982B, 0xBE66, 0x982D, 0xC059, 0x982F, 0xEC5A, 0x9830, 0xC055, 0x9832, 0xEC5B, 0x9835, 0xEC59, 0x9837, 0xC058, 0x9838, 0xC056, + 0x9839, 0xC05A, 0x983B, 0xC057, 0x9841, 0xEF45, 0x9843, 0xEF4A, 0x9844, 0xEF46, 0x9845, 0xEF49, 0x9846, 0xC1FB, 0x9848, 0xEDD4, + 0x9849, 0xEF48, 0x984A, 0xEF47, 0x984C, 0xC344, 0x984D, 0xC342, 0x984E, 0xC345, 0x984F, 0xC343, 0x9850, 0xF1A8, 0x9851, 0xF1A9, + 0x9852, 0xF1AA, 0x9853, 0xC346, 0x9857, 0xF3AA, 0x9858, 0xC440, 0x9859, 0xF3A8, 0x985B, 0xC441, 0x985C, 0xF3A7, 0x985D, 0xF3A9, + 0x985E, 0xC3FE, 0x985F, 0xF551, 0x9860, 0xF54E, 0x9862, 0xF54F, 0x9863, 0xF550, 0x9864, 0xF672, 0x9865, 0xC556, 0x9867, 0xC555, + 0x9869, 0xF774, 0x986A, 0xF773, 0x986B, 0xC5B8, 0x986F, 0xC5E3, 0x9870, 0xC649, 0x9871, 0xC660, 0x9872, 0xF958, 0x9873, 0xF9AE, + 0x9874, 0xF9AF, 0x98A8, 0xADB7, 0x98A9, 0xDCAD, 0x98AC, 0xE0E1, 0x98AD, 0xE4CC, 0x98AE, 0xE4CD, 0x98AF, 0xBBE3, 0x98B1, 0xBBE4, + 0x98B2, 0xE8BE, 0x98B3, 0xBE68, 0x98B6, 0xC1FC, 0x98B8, 0xF1AB, 0x98BA, 0xC347, 0x98BB, 0xF3AD, 0x98BC, 0xC442, 0x98BD, 0xF3AC, + 0x98BE, 0xF3AE, 0x98BF, 0xF3AB, 0x98C0, 0xF675, 0x98C1, 0xF552, 0x98C2, 0xF553, 0x98C4, 0xC4C6, 0x98C6, 0xF674, 0x98C9, 0xF673, + 0x98CB, 0xF775, 0x98CC, 0xF9B0, 0x98DB, 0xADB8, 0x98DF, 0xADB9, 0x98E2, 0xB0A7, 0x98E3, 0xD448, 0x98E5, 0xD84F, 0x98E7, 0xB6B8, + 0x98E9, 0xB6BB, 0x98EA, 0xB6B9, 0x98EB, 0xDCAE, 0x98ED, 0xB6BD, 0x98EF, 0xB6BA, 0x98F2, 0xB6BC, 0x98F4, 0xB97E, 0x98F6, 0xE0E2, + 0x98F9, 0xE0E3, 0x98FA, 0xE8C0, 0x98FC, 0xB97D, 0x98FD, 0xB9A1, 0x98FE, 0xB9A2, 0x9900, 0xE4CF, 0x9902, 0xE4CE, 0x9903, 0xBBE5, + 0x9905, 0xBBE6, 0x9907, 0xE4D0, 0x9908, 0xE8BF, 0x9909, 0xBBE8, 0x990A, 0xBE69, 0x990C, 0xBBE7, 0x9910, 0xC05C, 0x9911, 0xE8C1, + 0x9912, 0xBE6B, 0x9913, 0xBE6A, 0x9914, 0xE8C2, 0x9915, 0xE8C5, 0x9916, 0xE8C3, 0x9917, 0xE8C4, 0x9918, 0xBE6C, 0x991A, 0xC061, + 0x991B, 0xC05F, 0x991E, 0xC05E, 0x991F, 0xEC5D, 0x9921, 0xC060, 0x9924, 0xEC5C, 0x9925, 0xEF4B, 0x9927, 0xEC5E, 0x9928, 0xC05D, + 0x9929, 0xEC5F, 0x992A, 0xEF4E, 0x992B, 0xEF4C, 0x992C, 0xEF4D, 0x992D, 0xEF52, 0x992E, 0xC34B, 0x992F, 0xEF51, 0x9930, 0xEF54, + 0x9931, 0xEF53, 0x9932, 0xEF50, 0x9933, 0xEF4F, 0x9935, 0xC1FD, 0x993A, 0xF1AE, 0x993C, 0xF1AD, 0x993D, 0xC34A, 0x993E, 0xC348, + 0x993F, 0xC349, 0x9941, 0xF1AC, 0x9943, 0xF3B1, 0x9945, 0xC443, 0x9947, 0xF3B0, 0x9948, 0xF3AF, 0x9949, 0xC444, 0x994B, 0xF558, + 0x994C, 0xF557, 0x994E, 0xF555, 0x9950, 0xF554, 0x9951, 0xC4C8, 0x9952, 0xC4C7, 0x9953, 0xF559, 0x9954, 0xF776, 0x9955, 0xC5B9, + 0x9956, 0xF677, 0x9957, 0xC557, 0x9958, 0xF676, 0x9959, 0xF556, 0x995B, 0xF777, 0x995C, 0xC5E4, 0x995E, 0xC661, 0x995F, 0xF959, + 0x9961, 0xF9B1, 0x9996, 0xADBA, 0x9997, 0xD850, 0x9998, 0xEF55, 0x9999, 0xADBB, 0x999C, 0xE4D2, 0x999D, 0xE4D1, 0x999E, 0xEC60, + 0x99A1, 0xEF57, 0x99A3, 0xEF56, 0x99A5, 0xC34C, 0x99A6, 0xF3B2, 0x99A7, 0xF3B3, 0x99A8, 0xC4C9, 0x99AB, 0xF9B2, 0x99AC, 0xB0A8, + 0x99AD, 0xB6BF, 0x99AE, 0xB6BE, 0x99AF, 0xE0E4, 0x99B0, 0xE0E6, 0x99B1, 0xB9A4, 0x99B2, 0xE0E5, 0x99B3, 0xB9A3, 0x99B4, 0xB9A5, + 0x99B5, 0xE0E7, 0x99B9, 0xE4D4, 0x99BA, 0xE4D6, 0x99BB, 0xE4D5, 0x99BD, 0xE4D8, 0x99C1, 0xBBE9, 0x99C2, 0xE4D7, 0x99C3, 0xE4D3, + 0x99C7, 0xE4D9, 0x99C9, 0xE8CC, 0x99CB, 0xE8CF, 0x99CC, 0xE8D1, 0x99CD, 0xE8C7, 0x99CE, 0xE8CB, 0x99CF, 0xE8C8, 0x99D0, 0xBE6E, + 0x99D1, 0xBE71, 0x99D2, 0xBE73, 0x99D3, 0xE8C9, 0x99D4, 0xE8CA, 0x99D5, 0xBE72, 0x99D6, 0xE8CD, 0x99D7, 0xE8D0, 0x99D8, 0xE8CE, + 0x99D9, 0xBE74, 0x99DB, 0xBE70, 0x99DC, 0xE8C6, 0x99DD, 0xBE6D, 0x99DF, 0xBE6F, 0x99E2, 0xC063, 0x99E3, 0xEC66, 0x99E4, 0xEC64, + 0x99E5, 0xEC63, 0x99E7, 0xEC69, 0x99E9, 0xEC68, 0x99EA, 0xEC67, 0x99EC, 0xEC62, 0x99ED, 0xC062, 0x99EE, 0xEC61, 0x99F0, 0xEC65, + 0x99F1, 0xC064, 0x99F4, 0xEF5A, 0x99F6, 0xEF5E, 0x99F7, 0xEF5B, 0x99F8, 0xEF5D, 0x99F9, 0xEF5C, 0x99FA, 0xEF59, 0x99FB, 0xEF5F, + 0x99FC, 0xEF62, 0x99FD, 0xEF60, 0x99FE, 0xEF61, 0x99FF, 0xC240, 0x9A01, 0xC1FE, 0x9A02, 0xEF58, 0x9A03, 0xEF63, 0x9A04, 0xF1B3, + 0x9A05, 0xF1B6, 0x9A06, 0xF1B8, 0x9A07, 0xF1B7, 0x9A09, 0xF1B1, 0x9A0A, 0xF1B5, 0x9A0B, 0xF1B0, 0x9A0D, 0xF1B2, 0x9A0E, 0xC34D, + 0x9A0F, 0xF1AF, 0x9A11, 0xF1B4, 0x9A14, 0xF3C0, 0x9A15, 0xF3B5, 0x9A16, 0xC445, 0x9A19, 0xC446, 0x9A1A, 0xF3B4, 0x9A1B, 0xF3B9, + 0x9A1C, 0xF3BF, 0x9A1D, 0xF3B7, 0x9A1E, 0xF3BE, 0x9A20, 0xF3BB, 0x9A22, 0xF3BA, 0x9A23, 0xF3BD, 0x9A24, 0xF3B8, 0x9A25, 0xF3B6, + 0x9A27, 0xF3BC, 0x9A29, 0xF560, 0x9A2A, 0xF55E, 0x9A2B, 0xC4CA, 0x9A2C, 0xF55D, 0x9A2D, 0xF563, 0x9A2E, 0xF561, 0x9A30, 0xC4CB, + 0x9A31, 0xF55C, 0x9A32, 0xF55A, 0x9A34, 0xF55B, 0x9A35, 0xC4CD, 0x9A36, 0xF55F, 0x9A37, 0xC4CC, 0x9A38, 0xF562, 0x9A39, 0xF678, + 0x9A3A, 0xF67E, 0x9A3D, 0xF679, 0x9A3E, 0xC55B, 0x9A3F, 0xF6A1, 0x9A40, 0xC55A, 0x9A41, 0xF67D, 0x9A42, 0xF67C, 0x9A43, 0xC559, + 0x9A44, 0xF67B, 0x9A45, 0xC558, 0x9A46, 0xF67A, 0x9A48, 0xF77D, 0x9A49, 0xF7A1, 0x9A4A, 0xF77E, 0x9A4C, 0xF77B, 0x9A4D, 0xC5BB, + 0x9A4E, 0xF778, 0x9A4F, 0xF77C, 0x9A50, 0xF7A3, 0x9A52, 0xF7A2, 0x9A53, 0xF779, 0x9A54, 0xF77A, 0x9A55, 0xC5BA, 0x9A56, 0xF852, + 0x9A57, 0xC5E7, 0x9A59, 0xF853, 0x9A5A, 0xC5E5, 0x9A5B, 0xC5E6, 0x9A5E, 0xF8D3, 0x9A5F, 0xC64A, 0x9A60, 0xF976, 0x9A62, 0xC66A, + 0x9A64, 0xF9B3, 0x9A65, 0xC66B, 0x9A66, 0xF9B4, 0x9A67, 0xF9B5, 0x9A68, 0xF9C3, 0x9A69, 0xF9C2, 0x9A6A, 0xC67A, 0x9A6B, 0xF9CD, + 0x9AA8, 0xB0A9, 0x9AAB, 0xE0E9, 0x9AAD, 0xE0E8, 0x9AAF, 0xBBEA, 0x9AB0, 0xBBEB, 0x9AB1, 0xE4DA, 0x9AB3, 0xE8D2, 0x9AB4, 0xEC6C, + 0x9AB7, 0xBE75, 0x9AB8, 0xC065, 0x9AB9, 0xEC6A, 0x9ABB, 0xEC6D, 0x9ABC, 0xC066, 0x9ABE, 0xEF64, 0x9ABF, 0xEC6B, 0x9AC0, 0xF1B9, + 0x9AC1, 0xC34E, 0x9AC2, 0xF3C1, 0x9AC6, 0xF566, 0x9AC7, 0xF564, 0x9ACA, 0xF565, 0x9ACD, 0xF6A2, 0x9ACF, 0xC55C, 0x9AD0, 0xF7A4, + 0x9AD1, 0xC5EA, 0x9AD2, 0xC5BC, 0x9AD3, 0xC5E8, 0x9AD4, 0xC5E9, 0x9AD5, 0xF8D4, 0x9AD6, 0xC662, 0x9AD8, 0xB0AA, 0x9ADC, 0xF1BA, + 0x9ADF, 0xD449, 0x9AE1, 0xB9A6, 0x9AE3, 0xE4DB, 0x9AE6, 0xBBEC, 0x9AE7, 0xE4DC, 0x9AEB, 0xE8D4, 0x9AEC, 0xE8D3, 0x9AED, 0xC068, + 0x9AEE, 0xBE76, 0x9AEF, 0xBE77, 0x9AF1, 0xE8D7, 0x9AF2, 0xE8D6, 0x9AF3, 0xE8D5, 0x9AF6, 0xEC6E, 0x9AF7, 0xEC71, 0x9AF9, 0xEC70, + 0x9AFA, 0xEC6F, 0x9AFB, 0xC067, 0x9AFC, 0xEF68, 0x9AFD, 0xEF66, 0x9AFE, 0xEF65, 0x9B01, 0xEF67, 0x9B03, 0xC34F, 0x9B04, 0xF1BC, + 0x9B05, 0xF1BD, 0x9B06, 0xC350, 0x9B08, 0xF1BB, 0x9B0A, 0xF3C3, 0x9B0B, 0xF3C2, 0x9B0C, 0xF3C5, 0x9B0D, 0xC447, 0x9B0E, 0xF3C4, + 0x9B10, 0xF567, 0x9B11, 0xF569, 0x9B12, 0xF568, 0x9B15, 0xF6A3, 0x9B16, 0xF6A6, 0x9B17, 0xF6A4, 0x9B18, 0xF6A5, 0x9B19, 0xF7A5, + 0x9B1A, 0xC5BD, 0x9B1E, 0xF854, 0x9B1F, 0xF855, 0x9B20, 0xF856, 0x9B22, 0xC64B, 0x9B23, 0xC663, 0x9B24, 0xF9B6, 0x9B25, 0xB0AB, + 0x9B27, 0xBE78, 0x9B28, 0xC069, 0x9B29, 0xF1BE, 0x9B2B, 0xF7A6, 0x9B2E, 0xF9C4, 0x9B2F, 0xD44A, 0x9B31, 0xC67B, 0x9B32, 0xB0AC, + 0x9B33, 0xEC72, 0x9B35, 0xF1BF, 0x9B37, 0xF3C6, 0x9B3A, 0xF6A7, 0x9B3B, 0xF7A7, 0x9B3C, 0xB0AD, 0x9B3E, 0xE4DD, 0x9B3F, 0xE4DE, + 0x9B41, 0xBBED, 0x9B42, 0xBBEE, 0x9B43, 0xE8D9, 0x9B44, 0xBE7A, 0x9B45, 0xBE79, 0x9B46, 0xE8D8, 0x9B48, 0xEF69, 0x9B4A, 0xF1C0, + 0x9B4B, 0xF1C2, 0x9B4C, 0xF1C1, 0x9B4D, 0xC353, 0x9B4E, 0xC352, 0x9B4F, 0xC351, 0x9B51, 0xC55E, 0x9B52, 0xF6A8, 0x9B54, 0xC55D, + 0x9B55, 0xF7A9, 0x9B56, 0xF7A8, 0x9B58, 0xC64C, 0x9B59, 0xF8D5, 0x9B5A, 0xB3BD, 0x9B5B, 0xE0EA, 0x9B5F, 0xE4E1, 0x9B60, 0xE4DF, + 0x9B61, 0xE4E0, 0x9B64, 0xE8E2, 0x9B66, 0xE8DD, 0x9B67, 0xE8DA, 0x9B68, 0xE8E1, 0x9B6C, 0xE8E3, 0x9B6F, 0xBE7C, 0x9B70, 0xE8E0, + 0x9B71, 0xE8DC, 0x9B74, 0xE8DB, 0x9B75, 0xE8DF, 0x9B76, 0xE8DE, 0x9B77, 0xBE7B, 0x9B7A, 0xEC7D, 0x9B7B, 0xEC78, 0x9B7C, 0xEC76, + 0x9B7D, 0xECA1, 0x9B7E, 0xEC77, 0x9B80, 0xEC73, 0x9B82, 0xEC79, 0x9B85, 0xEC74, 0x9B86, 0xEF72, 0x9B87, 0xEC75, 0x9B88, 0xECA2, + 0x9B90, 0xEC7C, 0x9B91, 0xC06A, 0x9B92, 0xEC7B, 0x9B93, 0xEC7A, 0x9B95, 0xEC7E, 0x9B9A, 0xEF6A, 0x9B9B, 0xEF6D, 0x9B9E, 0xEF6C, + 0x9BA0, 0xEF74, 0x9BA1, 0xEF6F, 0x9BA2, 0xEF73, 0x9BA4, 0xEF71, 0x9BA5, 0xEF70, 0x9BA6, 0xEF6E, 0x9BA8, 0xEF6B, 0x9BAA, 0xC243, + 0x9BAB, 0xC242, 0x9BAD, 0xC244, 0x9BAE, 0xC241, 0x9BAF, 0xEF75, 0x9BB5, 0xF1C8, 0x9BB6, 0xF1CB, 0x9BB8, 0xF1C9, 0x9BB9, 0xF1CD, + 0x9BBD, 0xF1CE, 0x9BBF, 0xF1C6, 0x9BC0, 0xC358, 0x9BC1, 0xF1C7, 0x9BC3, 0xF1C5, 0x9BC4, 0xF1CC, 0x9BC6, 0xF1C4, 0x9BC7, 0xF1C3, + 0x9BC8, 0xC357, 0x9BC9, 0xC355, 0x9BCA, 0xC354, 0x9BD3, 0xF1CA, 0x9BD4, 0xF3CF, 0x9BD5, 0xF3D5, 0x9BD6, 0xC44A, 0x9BD7, 0xF3D0, + 0x9BD9, 0xF3D3, 0x9BDA, 0xF3D7, 0x9BDB, 0xC44B, 0x9BDC, 0xF3D2, 0x9BDE, 0xF3CA, 0x9BE0, 0xF3C9, 0x9BE1, 0xF3D6, 0x9BE2, 0xF3CD, + 0x9BE4, 0xF3CB, 0x9BE5, 0xF3D4, 0x9BE6, 0xF3CC, 0x9BE7, 0xC449, 0x9BE8, 0xC448, 0x9BEA, 0xF3C7, 0x9BEB, 0xF3C8, 0x9BEC, 0xF3D1, + 0x9BF0, 0xF3CE, 0x9BF7, 0xF56C, 0x9BF8, 0xF56F, 0x9BFD, 0xC356, 0x9C05, 0xF56D, 0x9C06, 0xF573, 0x9C07, 0xF571, 0x9C08, 0xF56B, + 0x9C09, 0xF576, 0x9C0B, 0xF56A, 0x9C0D, 0xC4CF, 0x9C0E, 0xF572, 0x9C12, 0xF56E, 0x9C13, 0xC4CE, 0x9C14, 0xF575, 0x9C17, 0xF574, + 0x9C1C, 0xF6AB, 0x9C1D, 0xF6AA, 0x9C21, 0xF6B1, 0x9C23, 0xF6AD, 0x9C24, 0xF6B0, 0x9C25, 0xC560, 0x9C28, 0xF6AE, 0x9C29, 0xF6AF, + 0x9C2B, 0xF6A9, 0x9C2C, 0xF6AC, 0x9C2D, 0xC55F, 0x9C31, 0xC5BF, 0x9C32, 0xF7B4, 0x9C33, 0xF7AF, 0x9C34, 0xF7B3, 0x9C36, 0xF7B6, + 0x9C37, 0xF7B2, 0x9C39, 0xF7AE, 0x9C3B, 0xC5C1, 0x9C3C, 0xF7B1, 0x9C3D, 0xF7B5, 0x9C3E, 0xC5C0, 0x9C3F, 0xF7AC, 0x9C40, 0xF570, + 0x9C41, 0xF7B0, 0x9C44, 0xF7AD, 0x9C46, 0xF7AA, 0x9C48, 0xF7AB, 0x9C49, 0xC5BE, 0x9C4A, 0xF85A, 0x9C4B, 0xF85C, 0x9C4C, 0xF85F, + 0x9C4D, 0xF85B, 0x9C4E, 0xF860, 0x9C50, 0xF859, 0x9C52, 0xF857, 0x9C54, 0xC5EB, 0x9C55, 0xF85D, 0x9C56, 0xC5ED, 0x9C57, 0xC5EC, + 0x9C58, 0xF858, 0x9C59, 0xF85E, 0x9C5E, 0xF8DA, 0x9C5F, 0xC64D, 0x9C60, 0xF8DB, 0x9C62, 0xF8D9, 0x9C63, 0xF8D6, 0x9C66, 0xF8D8, + 0x9C67, 0xF8D7, 0x9C68, 0xF95A, 0x9C6D, 0xF95C, 0x9C6E, 0xF95B, 0x9C71, 0xF979, 0x9C73, 0xF978, 0x9C74, 0xF977, 0x9C75, 0xF97A, + 0x9C77, 0xC673, 0x9C78, 0xC674, 0x9C79, 0xF9CA, 0x9C7A, 0xF9CE, 0x9CE5, 0xB3BE, 0x9CE6, 0xDCAF, 0x9CE7, 0xE0ED, 0x9CE9, 0xB9A7, + 0x9CEA, 0xE0EB, 0x9CED, 0xE0EC, 0x9CF1, 0xE4E2, 0x9CF2, 0xE4E3, 0x9CF3, 0xBBF1, 0x9CF4, 0xBBEF, 0x9CF5, 0xE4E4, 0x9CF6, 0xBBF0, + 0x9CF7, 0xE8E8, 0x9CF9, 0xE8EB, 0x9CFA, 0xE8E5, 0x9CFB, 0xE8EC, 0x9CFC, 0xE8E4, 0x9CFD, 0xE8E6, 0x9CFF, 0xE8E7, 0x9D00, 0xE8EA, + 0x9D03, 0xBEA1, 0x9D04, 0xE8EF, 0x9D05, 0xE8EE, 0x9D06, 0xBE7D, 0x9D07, 0xE8E9, 0x9D08, 0xE8ED, 0x9D09, 0xBE7E, 0x9D10, 0xECAC, + 0x9D12, 0xC06F, 0x9D14, 0xECA7, 0x9D15, 0xC06B, 0x9D17, 0xECA4, 0x9D18, 0xECAA, 0x9D19, 0xECAD, 0x9D1B, 0xC070, 0x9D1D, 0xECA9, + 0x9D1E, 0xECA6, 0x9D1F, 0xECAE, 0x9D20, 0xECA5, 0x9D22, 0xECAB, 0x9D23, 0xC06C, 0x9D25, 0xECA3, 0x9D26, 0xC06D, 0x9D28, 0xC06E, + 0x9D29, 0xECA8, 0x9D2D, 0xEFA9, 0x9D2E, 0xEF7A, 0x9D2F, 0xEF7B, 0x9D30, 0xEF7E, 0x9D31, 0xEF7C, 0x9D33, 0xEF76, 0x9D36, 0xEF79, + 0x9D37, 0xEFA5, 0x9D38, 0xEF7D, 0x9D3B, 0xC245, 0x9D3D, 0xEFA7, 0x9D3E, 0xEFA4, 0x9D3F, 0xC246, 0x9D40, 0xEFA6, 0x9D41, 0xEF77, + 0x9D42, 0xEFA2, 0x9D43, 0xEFA3, 0x9D45, 0xEFA1, 0x9D4A, 0xF1D2, 0x9D4B, 0xF1D4, 0x9D4C, 0xF1D7, 0x9D4F, 0xF1D1, 0x9D51, 0xC359, + 0x9D52, 0xF1D9, 0x9D53, 0xF1D0, 0x9D54, 0xF1DA, 0x9D56, 0xF1D6, 0x9D57, 0xF1D8, 0x9D58, 0xF1DC, 0x9D59, 0xF1D5, 0x9D5A, 0xF1DD, + 0x9D5B, 0xF1D3, 0x9D5C, 0xF1CF, 0x9D5D, 0xC35A, 0x9D5F, 0xF1DB, 0x9D60, 0xC35B, 0x9D61, 0xC44D, 0x9D67, 0xEF78, 0x9D68, 0xF3F1, + 0x9D69, 0xF3E8, 0x9D6A, 0xC44F, 0x9D6B, 0xF3E4, 0x9D6C, 0xC450, 0x9D6F, 0xF3ED, 0x9D70, 0xF3E7, 0x9D71, 0xF3DD, 0x9D72, 0xC44E, + 0x9D73, 0xF3EA, 0x9D74, 0xF3E5, 0x9D75, 0xF3E6, 0x9D77, 0xF3D8, 0x9D78, 0xF3DF, 0x9D79, 0xF3EE, 0x9D7B, 0xF3EB, 0x9D7D, 0xF3E3, + 0x9D7F, 0xF3EF, 0x9D80, 0xF3DE, 0x9D81, 0xF3D9, 0x9D82, 0xF3EC, 0x9D84, 0xF3DB, 0x9D85, 0xF3E9, 0x9D86, 0xF3E0, 0x9D87, 0xF3F0, + 0x9D88, 0xF3DC, 0x9D89, 0xC44C, 0x9D8A, 0xF3DA, 0x9D8B, 0xF3E1, 0x9D8C, 0xF3E2, 0x9D90, 0xF57D, 0x9D92, 0xF57B, 0x9D94, 0xF5A2, + 0x9D96, 0xF5AE, 0x9D97, 0xF5A5, 0x9D98, 0xF57C, 0x9D99, 0xF578, 0x9D9A, 0xF5A7, 0x9D9B, 0xF57E, 0x9D9C, 0xF5A3, 0x9D9D, 0xF57A, + 0x9D9E, 0xF5AA, 0x9D9F, 0xF577, 0x9DA0, 0xF5A1, 0x9DA1, 0xF5A6, 0x9DA2, 0xF5A8, 0x9DA3, 0xF5AB, 0x9DA4, 0xF579, 0x9DA6, 0xF5AF, + 0x9DA7, 0xF5B0, 0x9DA8, 0xF5A9, 0x9DA9, 0xF5AD, 0x9DAA, 0xF5A4, 0x9DAC, 0xF6C1, 0x9DAD, 0xF6C4, 0x9DAF, 0xC561, 0x9DB1, 0xF6C3, + 0x9DB2, 0xF6C8, 0x9DB3, 0xF6C6, 0x9DB4, 0xC562, 0x9DB5, 0xF6BD, 0x9DB6, 0xF6B3, 0x9DB7, 0xF6B2, 0x9DB8, 0xC564, 0x9DB9, 0xF6BF, + 0x9DBA, 0xF6C0, 0x9DBB, 0xF6BC, 0x9DBC, 0xF6B4, 0x9DBE, 0xF6B9, 0x9DBF, 0xF5AC, 0x9DC1, 0xF6B5, 0x9DC2, 0xC563, 0x9DC3, 0xF6BB, + 0x9DC5, 0xF6BA, 0x9DC7, 0xF6B6, 0x9DC8, 0xF6C2, 0x9DCA, 0xF6B7, 0x9DCB, 0xF7BB, 0x9DCC, 0xF6C5, 0x9DCD, 0xF6C7, 0x9DCE, 0xF6BE, + 0x9DCF, 0xF6B8, 0x9DD0, 0xF7BC, 0x9DD1, 0xF7BE, 0x9DD2, 0xF7B8, 0x9DD3, 0xC5C2, 0x9DD5, 0xF7C5, 0x9DD6, 0xF7C3, 0x9DD7, 0xC5C3, + 0x9DD8, 0xF7C2, 0x9DD9, 0xF7C1, 0x9DDA, 0xF7BA, 0x9DDB, 0xF7B7, 0x9DDC, 0xF7BD, 0x9DDD, 0xF7C6, 0x9DDE, 0xF7B9, 0x9DDF, 0xF7BF, + 0x9DE1, 0xF869, 0x9DE2, 0xF86E, 0x9DE3, 0xF864, 0x9DE4, 0xF867, 0x9DE5, 0xC5EE, 0x9DE6, 0xF86B, 0x9DE8, 0xF872, 0x9DE9, 0xF7C0, + 0x9DEB, 0xF865, 0x9DEC, 0xF86F, 0x9DED, 0xF873, 0x9DEE, 0xF86A, 0x9DEF, 0xF863, 0x9DF0, 0xF86D, 0x9DF2, 0xF86C, 0x9DF3, 0xF871, + 0x9DF4, 0xF870, 0x9DF5, 0xF7C4, 0x9DF6, 0xF868, 0x9DF7, 0xF862, 0x9DF8, 0xF866, 0x9DF9, 0xC64E, 0x9DFA, 0xC64F, 0x9DFB, 0xF861, + 0x9DFD, 0xF8E6, 0x9DFE, 0xF8DD, 0x9DFF, 0xF8E5, 0x9E00, 0xF8E2, 0x9E01, 0xF8E3, 0x9E02, 0xF8DC, 0x9E03, 0xF8DF, 0x9E04, 0xF8E7, + 0x9E05, 0xF8E1, 0x9E06, 0xF8E0, 0x9E07, 0xF8DE, 0x9E09, 0xF8E4, 0x9E0B, 0xF95D, 0x9E0D, 0xF95E, 0x9E0F, 0xF960, 0x9E10, 0xF95F, + 0x9E11, 0xF962, 0x9E12, 0xF961, 0x9E13, 0xF97C, 0x9E14, 0xF97B, 0x9E15, 0xF9B7, 0x9E17, 0xF9B8, 0x9E19, 0xF9C5, 0x9E1A, 0xC678, + 0x9E1B, 0xC67C, 0x9E1D, 0xF9CF, 0x9E1E, 0xC67D, 0x9E75, 0xB3BF, 0x9E79, 0xC4D0, 0x9E7A, 0xF6C9, 0x9E7C, 0xC650, 0x9E7D, 0xC651, + 0x9E7F, 0xB3C0, 0x9E80, 0xE0EE, 0x9E82, 0xB9A8, 0x9E83, 0xE8F0, 0x9E86, 0xECB0, 0x9E87, 0xECB1, 0x9E88, 0xECAF, 0x9E89, 0xEFAB, + 0x9E8A, 0xEFAA, 0x9E8B, 0xC247, 0x9E8C, 0xF1DF, 0x9E8D, 0xEFAC, 0x9E8E, 0xF1DE, 0x9E91, 0xF3F3, 0x9E92, 0xC451, 0x9E93, 0xC453, + 0x9E94, 0xF3F2, 0x9E97, 0xC452, 0x9E99, 0xF5B1, 0x9E9A, 0xF5B3, 0x9E9B, 0xF5B2, 0x9E9C, 0xF6CA, 0x9E9D, 0xC565, 0x9E9F, 0xC5EF, + 0x9EA0, 0xF8E8, 0x9EA1, 0xF963, 0x9EA4, 0xF9D2, 0x9EA5, 0xB3C1, 0x9EA7, 0xE4E5, 0x9EA9, 0xBEA2, 0x9EAD, 0xECB3, 0x9EAE, 0xECB2, + 0x9EB0, 0xEFAD, 0x9EB4, 0xC454, 0x9EB5, 0xC4D1, 0x9EB6, 0xF7C7, 0x9EB7, 0xF9CB, 0x9EBB, 0xB3C2, 0x9EBC, 0xBBF2, 0x9EBE, 0xBEA3, + 0x9EC0, 0xF3F4, 0x9EC2, 0xF874, 0x9EC3, 0xB6C0, 0x9EC8, 0xEFAE, 0x9ECC, 0xC664, 0x9ECD, 0xB6C1, 0x9ECE, 0xBEA4, 0x9ECF, 0xC248, + 0x9ED0, 0xF875, 0x9ED1, 0xB6C2, 0x9ED3, 0xE8F1, 0x9ED4, 0xC072, 0x9ED5, 0xECB4, 0x9ED6, 0xECB5, 0x9ED8, 0xC071, 0x9EDA, 0xEFAF, + 0x9EDB, 0xC24C, 0x9EDC, 0xC24A, 0x9EDD, 0xC24B, 0x9EDE, 0xC249, 0x9EDF, 0xF1E0, 0x9EE0, 0xC35C, 0x9EE4, 0xF5B5, 0x9EE5, 0xF5B4, + 0x9EE6, 0xF5B7, 0x9EE7, 0xF5B6, 0x9EE8, 0xC4D2, 0x9EEB, 0xF6CB, 0x9EED, 0xF6CD, 0x9EEE, 0xF6CC, 0x9EEF, 0xC566, 0x9EF0, 0xF7C8, + 0x9EF2, 0xF876, 0x9EF3, 0xF877, 0x9EF4, 0xC5F0, 0x9EF5, 0xF964, 0x9EF6, 0xF97D, 0x9EF7, 0xC675, 0x9EF9, 0xDCB0, 0x9EFA, 0xECB6, + 0x9EFB, 0xEFB0, 0x9EFC, 0xF3F5, 0x9EFD, 0xE0EF, 0x9EFF, 0xEFB1, 0x9F00, 0xF1E2, 0x9F01, 0xF1E1, 0x9F06, 0xF878, 0x9F07, 0xC652, + 0x9F09, 0xF965, 0x9F0A, 0xF97E, 0x9F0E, 0xB9A9, 0x9F0F, 0xE8F2, 0x9F10, 0xE8F3, 0x9F12, 0xECB7, 0x9F13, 0xB9AA, 0x9F15, 0xC35D, + 0x9F16, 0xF1E3, 0x9F18, 0xF6CF, 0x9F19, 0xC567, 0x9F1A, 0xF6D0, 0x9F1B, 0xF6CE, 0x9F1C, 0xF879, 0x9F1E, 0xF8E9, 0x9F20, 0xB9AB, + 0x9F22, 0xEFB4, 0x9F23, 0xEFB3, 0x9F24, 0xEFB2, 0x9F25, 0xF1E4, 0x9F28, 0xF1E8, 0x9F29, 0xF1E7, 0x9F2A, 0xF1E6, 0x9F2B, 0xF1E5, + 0x9F2C, 0xC35E, 0x9F2D, 0xF3F6, 0x9F2E, 0xF5B9, 0x9F2F, 0xC4D3, 0x9F30, 0xF5B8, 0x9F31, 0xF6D1, 0x9F32, 0xF7CB, 0x9F33, 0xF7CA, + 0x9F34, 0xC5C4, 0x9F35, 0xF7C9, 0x9F36, 0xF87C, 0x9F37, 0xF87B, 0x9F38, 0xF87A, 0x9F3B, 0xBBF3, 0x9F3D, 0xECB8, 0x9F3E, 0xC24D, + 0x9F40, 0xF3F7, 0x9F41, 0xF3F8, 0x9F42, 0xF7CC, 0x9F43, 0xF87D, 0x9F46, 0xF8EA, 0x9F47, 0xF966, 0x9F48, 0xF9B9, 0x9F49, 0xF9D4, + 0x9F4A, 0xBBF4, 0x9F4B, 0xC24E, 0x9F4C, 0xF1E9, 0x9F4D, 0xF3F9, 0x9F4E, 0xF6D2, 0x9F4F, 0xF87E, 0x9F52, 0xBEA6, 0x9F54, 0xEFB5, + 0x9F55, 0xF1EA, 0x9F56, 0xF3FA, 0x9F57, 0xF3FB, 0x9F58, 0xF3FC, 0x9F59, 0xF5BE, 0x9F5B, 0xF5BA, 0x9F5C, 0xC568, 0x9F5D, 0xF5BD, + 0x9F5E, 0xF5BC, 0x9F5F, 0xC4D4, 0x9F60, 0xF5BB, 0x9F61, 0xC4D6, 0x9F63, 0xC4D5, 0x9F64, 0xF6D4, 0x9F65, 0xF6D3, 0x9F66, 0xC569, + 0x9F67, 0xC56A, 0x9F6A, 0xC5C6, 0x9F6B, 0xF7CD, 0x9F6C, 0xC5C5, 0x9F6E, 0xF8A3, 0x9F6F, 0xF8A4, 0x9F70, 0xF8A2, 0x9F71, 0xF8A1, + 0x9F72, 0xC654, 0x9F74, 0xF8EB, 0x9F75, 0xF8EC, 0x9F76, 0xF8ED, 0x9F77, 0xC653, 0x9F78, 0xF967, 0x9F79, 0xF96A, 0x9F7A, 0xF969, + 0x9F7B, 0xF968, 0x9F7E, 0xF9D3, 0x9F8D, 0xC073, 0x9F90, 0xC365, 0x9F91, 0xF5BF, 0x9F92, 0xF6D5, 0x9F94, 0xC5C7, 0x9F95, 0xF7CE, + 0x9F98, 0xF9D5, 0x9F9C, 0xC074, 0x9FA0, 0xEFB6, 0x9FA2, 0xF7CF, 0x9FA4, 0xF9A1, 0xFA0C, 0xC94A, 0xFA0D, 0xDDFC, 0xFE30, 0xA14A, + 0xFE31, 0xA157, 0xFE33, 0xA159, 0xFE34, 0xA15B, 0xFE35, 0xA15F, 0xFE36, 0xA160, 0xFE37, 0xA163, 0xFE38, 0xA164, 0xFE39, 0xA167, + 0xFE3A, 0xA168, 0xFE3B, 0xA16B, 0xFE3C, 0xA16C, 0xFE3D, 0xA16F, 0xFE3E, 0xA170, 0xFE3F, 0xA173, 0xFE40, 0xA174, 0xFE41, 0xA177, + 0xFE42, 0xA178, 0xFE43, 0xA17B, 0xFE44, 0xA17C, 0xFE49, 0xA1C6, 0xFE4A, 0xA1C7, 0xFE4B, 0xA1CA, 0xFE4C, 0xA1CB, 0xFE4D, 0xA1C8, + 0xFE4E, 0xA1C9, 0xFE4F, 0xA15C, 0xFE50, 0xA14D, 0xFE51, 0xA14E, 0xFE52, 0xA14F, 0xFE54, 0xA151, 0xFE55, 0xA152, 0xFE56, 0xA153, + 0xFE57, 0xA154, 0xFE59, 0xA17D, 0xFE5A, 0xA17E, 0xFE5B, 0xA1A1, 0xFE5C, 0xA1A2, 0xFE5D, 0xA1A3, 0xFE5E, 0xA1A4, 0xFE5F, 0xA1CC, + 0xFE60, 0xA1CD, 0xFE61, 0xA1CE, 0xFE62, 0xA1DE, 0xFE63, 0xA1DF, 0xFE64, 0xA1E0, 0xFE65, 0xA1E1, 0xFE66, 0xA1E2, 0xFE68, 0xA242, + 0xFE69, 0xA24C, 0xFE6A, 0xA24D, 0xFE6B, 0xA24E, 0xFF01, 0xA149, 0xFF03, 0xA1AD, 0xFF04, 0xA243, 0xFF05, 0xA248, 0xFF06, 0xA1AE, + 0xFF08, 0xA15D, 0xFF09, 0xA15E, 0xFF0A, 0xA1AF, 0xFF0B, 0xA1CF, 0xFF0C, 0xA141, 0xFF0D, 0xA1D0, 0xFF0E, 0xA144, 0xFF0F, 0xA1FE, + 0xFF10, 0xA2AF, 0xFF11, 0xA2B0, 0xFF12, 0xA2B1, 0xFF13, 0xA2B2, 0xFF14, 0xA2B3, 0xFF15, 0xA2B4, 0xFF16, 0xA2B5, 0xFF17, 0xA2B6, + 0xFF18, 0xA2B7, 0xFF19, 0xA2B8, 0xFF1A, 0xA147, 0xFF1B, 0xA146, 0xFF1C, 0xA1D5, 0xFF1D, 0xA1D7, 0xFF1E, 0xA1D6, 0xFF1F, 0xA148, + 0xFF20, 0xA249, 0xFF21, 0xA2CF, 0xFF22, 0xA2D0, 0xFF23, 0xA2D1, 0xFF24, 0xA2D2, 0xFF25, 0xA2D3, 0xFF26, 0xA2D4, 0xFF27, 0xA2D5, + 0xFF28, 0xA2D6, 0xFF29, 0xA2D7, 0xFF2A, 0xA2D8, 0xFF2B, 0xA2D9, 0xFF2C, 0xA2DA, 0xFF2D, 0xA2DB, 0xFF2E, 0xA2DC, 0xFF2F, 0xA2DD, + 0xFF30, 0xA2DE, 0xFF31, 0xA2DF, 0xFF32, 0xA2E0, 0xFF33, 0xA2E1, 0xFF34, 0xA2E2, 0xFF35, 0xA2E3, 0xFF36, 0xA2E4, 0xFF37, 0xA2E5, + 0xFF38, 0xA2E6, 0xFF39, 0xA2E7, 0xFF3A, 0xA2E8, 0xFF3C, 0xA240, 0xFF3F, 0xA1C4, 0xFF41, 0xA2E9, 0xFF42, 0xA2EA, 0xFF43, 0xA2EB, + 0xFF44, 0xA2EC, 0xFF45, 0xA2ED, 0xFF46, 0xA2EE, 0xFF47, 0xA2EF, 0xFF48, 0xA2F0, 0xFF49, 0xA2F1, 0xFF4A, 0xA2F2, 0xFF4B, 0xA2F3, + 0xFF4C, 0xA2F4, 0xFF4D, 0xA2F5, 0xFF4E, 0xA2F6, 0xFF4F, 0xA2F7, 0xFF50, 0xA2F8, 0xFF51, 0xA2F9, 0xFF52, 0xA2FA, 0xFF53, 0xA2FB, + 0xFF54, 0xA2FC, 0xFF55, 0xA2FD, 0xFF56, 0xA2FE, 0xFF57, 0xA340, 0xFF58, 0xA341, 0xFF59, 0xA342, 0xFF5A, 0xA343, 0xFF5B, 0xA161, + 0xFF5C, 0xA155, 0xFF5D, 0xA162, 0xFF5E, 0xA1E3, 0xFFE0, 0xA246, 0xFFE1, 0xA247, 0xFFE3, 0xA1C3, 0xFFE5, 0xA244, 0, 0 +}; + +static const WCHAR oem2uni950[] = { /* Big5 --> Unicode pairs */ + 0xA140, 0x3000, 0xA141, 0xFF0C, 0xA142, 0x3001, 0xA143, 0x3002, 0xA144, 0xFF0E, 0xA145, 0x2027, 0xA146, 0xFF1B, 0xA147, 0xFF1A, + 0xA148, 0xFF1F, 0xA149, 0xFF01, 0xA14A, 0xFE30, 0xA14B, 0x2026, 0xA14C, 0x2025, 0xA14D, 0xFE50, 0xA14E, 0xFE51, 0xA14F, 0xFE52, + 0xA150, 0x00B7, 0xA151, 0xFE54, 0xA152, 0xFE55, 0xA153, 0xFE56, 0xA154, 0xFE57, 0xA155, 0xFF5C, 0xA156, 0x2013, 0xA157, 0xFE31, + 0xA158, 0x2014, 0xA159, 0xFE33, 0xA15A, 0x2574, 0xA15B, 0xFE34, 0xA15C, 0xFE4F, 0xA15D, 0xFF08, 0xA15E, 0xFF09, 0xA15F, 0xFE35, + 0xA160, 0xFE36, 0xA161, 0xFF5B, 0xA162, 0xFF5D, 0xA163, 0xFE37, 0xA164, 0xFE38, 0xA165, 0x3014, 0xA166, 0x3015, 0xA167, 0xFE39, + 0xA168, 0xFE3A, 0xA169, 0x3010, 0xA16A, 0x3011, 0xA16B, 0xFE3B, 0xA16C, 0xFE3C, 0xA16D, 0x300A, 0xA16E, 0x300B, 0xA16F, 0xFE3D, + 0xA170, 0xFE3E, 0xA171, 0x3008, 0xA172, 0x3009, 0xA173, 0xFE3F, 0xA174, 0xFE40, 0xA175, 0x300C, 0xA176, 0x300D, 0xA177, 0xFE41, + 0xA178, 0xFE42, 0xA179, 0x300E, 0xA17A, 0x300F, 0xA17B, 0xFE43, 0xA17C, 0xFE44, 0xA17D, 0xFE59, 0xA17E, 0xFE5A, 0xA1A1, 0xFE5B, + 0xA1A2, 0xFE5C, 0xA1A3, 0xFE5D, 0xA1A4, 0xFE5E, 0xA1A5, 0x2018, 0xA1A6, 0x2019, 0xA1A7, 0x201C, 0xA1A8, 0x201D, 0xA1A9, 0x301D, + 0xA1AA, 0x301E, 0xA1AB, 0x2035, 0xA1AC, 0x2032, 0xA1AD, 0xFF03, 0xA1AE, 0xFF06, 0xA1AF, 0xFF0A, 0xA1B0, 0x203B, 0xA1B1, 0x00A7, + 0xA1B2, 0x3003, 0xA1B3, 0x25CB, 0xA1B4, 0x25CF, 0xA1B5, 0x25B3, 0xA1B6, 0x25B2, 0xA1B7, 0x25CE, 0xA1B8, 0x2606, 0xA1B9, 0x2605, + 0xA1BA, 0x25C7, 0xA1BB, 0x25C6, 0xA1BC, 0x25A1, 0xA1BD, 0x25A0, 0xA1BE, 0x25BD, 0xA1BF, 0x25BC, 0xA1C0, 0x32A3, 0xA1C1, 0x2105, + 0xA1C2, 0x00AF, 0xA1C3, 0xFFE3, 0xA1C4, 0xFF3F, 0xA1C5, 0x02CD, 0xA1C6, 0xFE49, 0xA1C7, 0xFE4A, 0xA1C8, 0xFE4D, 0xA1C9, 0xFE4E, + 0xA1CA, 0xFE4B, 0xA1CB, 0xFE4C, 0xA1CC, 0xFE5F, 0xA1CD, 0xFE60, 0xA1CE, 0xFE61, 0xA1CF, 0xFF0B, 0xA1D0, 0xFF0D, 0xA1D1, 0x00D7, + 0xA1D2, 0x00F7, 0xA1D3, 0x00B1, 0xA1D4, 0x221A, 0xA1D5, 0xFF1C, 0xA1D6, 0xFF1E, 0xA1D7, 0xFF1D, 0xA1D8, 0x2266, 0xA1D9, 0x2267, + 0xA1DA, 0x2260, 0xA1DB, 0x221E, 0xA1DC, 0x2252, 0xA1DD, 0x2261, 0xA1DE, 0xFE62, 0xA1DF, 0xFE63, 0xA1E0, 0xFE64, 0xA1E1, 0xFE65, + 0xA1E2, 0xFE66, 0xA1E3, 0xFF5E, 0xA1E4, 0x2229, 0xA1E5, 0x222A, 0xA1E6, 0x22A5, 0xA1E7, 0x2220, 0xA1E8, 0x221F, 0xA1E9, 0x22BF, + 0xA1EA, 0x33D2, 0xA1EB, 0x33D1, 0xA1EC, 0x222B, 0xA1ED, 0x222E, 0xA1EE, 0x2235, 0xA1EF, 0x2234, 0xA1F0, 0x2640, 0xA1F1, 0x2642, + 0xA1F2, 0x2295, 0xA1F3, 0x2299, 0xA1F4, 0x2191, 0xA1F5, 0x2193, 0xA1F6, 0x2190, 0xA1F7, 0x2192, 0xA1F8, 0x2196, 0xA1F9, 0x2197, + 0xA1FA, 0x2199, 0xA1FB, 0x2198, 0xA1FC, 0x2225, 0xA1FD, 0x2223, 0xA1FE, 0xFF0F, 0xA240, 0xFF3C, 0xA241, 0x2215, 0xA242, 0xFE68, + 0xA243, 0xFF04, 0xA244, 0xFFE5, 0xA245, 0x3012, 0xA246, 0xFFE0, 0xA247, 0xFFE1, 0xA248, 0xFF05, 0xA249, 0xFF20, 0xA24A, 0x2103, + 0xA24B, 0x2109, 0xA24C, 0xFE69, 0xA24D, 0xFE6A, 0xA24E, 0xFE6B, 0xA24F, 0x33D5, 0xA250, 0x339C, 0xA251, 0x339D, 0xA252, 0x339E, + 0xA253, 0x33CE, 0xA254, 0x33A1, 0xA255, 0x338E, 0xA256, 0x338F, 0xA257, 0x33C4, 0xA258, 0x00B0, 0xA259, 0x5159, 0xA25A, 0x515B, + 0xA25B, 0x515E, 0xA25C, 0x515D, 0xA25D, 0x5161, 0xA25E, 0x5163, 0xA25F, 0x55E7, 0xA260, 0x74E9, 0xA261, 0x7CCE, 0xA262, 0x2581, + 0xA263, 0x2582, 0xA264, 0x2583, 0xA265, 0x2584, 0xA266, 0x2585, 0xA267, 0x2586, 0xA268, 0x2587, 0xA269, 0x2588, 0xA26A, 0x258F, + 0xA26B, 0x258E, 0xA26C, 0x258D, 0xA26D, 0x258C, 0xA26E, 0x258B, 0xA26F, 0x258A, 0xA270, 0x2589, 0xA271, 0x253C, 0xA272, 0x2534, + 0xA273, 0x252C, 0xA274, 0x2524, 0xA275, 0x251C, 0xA276, 0x2594, 0xA277, 0x2500, 0xA278, 0x2502, 0xA279, 0x2595, 0xA27A, 0x250C, + 0xA27B, 0x2510, 0xA27C, 0x2514, 0xA27D, 0x2518, 0xA27E, 0x256D, 0xA2A1, 0x256E, 0xA2A2, 0x2570, 0xA2A3, 0x256F, 0xA2A4, 0x2550, + 0xA2A5, 0x255E, 0xA2A6, 0x256A, 0xA2A7, 0x2561, 0xA2A8, 0x25E2, 0xA2A9, 0x25E3, 0xA2AA, 0x25E5, 0xA2AB, 0x25E4, 0xA2AC, 0x2571, + 0xA2AD, 0x2572, 0xA2AE, 0x2573, 0xA2AF, 0xFF10, 0xA2B0, 0xFF11, 0xA2B1, 0xFF12, 0xA2B2, 0xFF13, 0xA2B3, 0xFF14, 0xA2B4, 0xFF15, + 0xA2B5, 0xFF16, 0xA2B6, 0xFF17, 0xA2B7, 0xFF18, 0xA2B8, 0xFF19, 0xA2B9, 0x2160, 0xA2BA, 0x2161, 0xA2BB, 0x2162, 0xA2BC, 0x2163, + 0xA2BD, 0x2164, 0xA2BE, 0x2165, 0xA2BF, 0x2166, 0xA2C0, 0x2167, 0xA2C1, 0x2168, 0xA2C2, 0x2169, 0xA2C3, 0x3021, 0xA2C4, 0x3022, + 0xA2C5, 0x3023, 0xA2C6, 0x3024, 0xA2C7, 0x3025, 0xA2C8, 0x3026, 0xA2C9, 0x3027, 0xA2CA, 0x3028, 0xA2CB, 0x3029, 0xA2CC, 0x5341, + 0xA2CD, 0x5344, 0xA2CE, 0x5345, 0xA2CF, 0xFF21, 0xA2D0, 0xFF22, 0xA2D1, 0xFF23, 0xA2D2, 0xFF24, 0xA2D3, 0xFF25, 0xA2D4, 0xFF26, + 0xA2D5, 0xFF27, 0xA2D6, 0xFF28, 0xA2D7, 0xFF29, 0xA2D8, 0xFF2A, 0xA2D9, 0xFF2B, 0xA2DA, 0xFF2C, 0xA2DB, 0xFF2D, 0xA2DC, 0xFF2E, + 0xA2DD, 0xFF2F, 0xA2DE, 0xFF30, 0xA2DF, 0xFF31, 0xA2E0, 0xFF32, 0xA2E1, 0xFF33, 0xA2E2, 0xFF34, 0xA2E3, 0xFF35, 0xA2E4, 0xFF36, + 0xA2E5, 0xFF37, 0xA2E6, 0xFF38, 0xA2E7, 0xFF39, 0xA2E8, 0xFF3A, 0xA2E9, 0xFF41, 0xA2EA, 0xFF42, 0xA2EB, 0xFF43, 0xA2EC, 0xFF44, + 0xA2ED, 0xFF45, 0xA2EE, 0xFF46, 0xA2EF, 0xFF47, 0xA2F0, 0xFF48, 0xA2F1, 0xFF49, 0xA2F2, 0xFF4A, 0xA2F3, 0xFF4B, 0xA2F4, 0xFF4C, + 0xA2F5, 0xFF4D, 0xA2F6, 0xFF4E, 0xA2F7, 0xFF4F, 0xA2F8, 0xFF50, 0xA2F9, 0xFF51, 0xA2FA, 0xFF52, 0xA2FB, 0xFF53, 0xA2FC, 0xFF54, + 0xA2FD, 0xFF55, 0xA2FE, 0xFF56, 0xA340, 0xFF57, 0xA341, 0xFF58, 0xA342, 0xFF59, 0xA343, 0xFF5A, 0xA344, 0x0391, 0xA345, 0x0392, + 0xA346, 0x0393, 0xA347, 0x0394, 0xA348, 0x0395, 0xA349, 0x0396, 0xA34A, 0x0397, 0xA34B, 0x0398, 0xA34C, 0x0399, 0xA34D, 0x039A, + 0xA34E, 0x039B, 0xA34F, 0x039C, 0xA350, 0x039D, 0xA351, 0x039E, 0xA352, 0x039F, 0xA353, 0x03A0, 0xA354, 0x03A1, 0xA355, 0x03A3, + 0xA356, 0x03A4, 0xA357, 0x03A5, 0xA358, 0x03A6, 0xA359, 0x03A7, 0xA35A, 0x03A8, 0xA35B, 0x03A9, 0xA35C, 0x03B1, 0xA35D, 0x03B2, + 0xA35E, 0x03B3, 0xA35F, 0x03B4, 0xA360, 0x03B5, 0xA361, 0x03B6, 0xA362, 0x03B7, 0xA363, 0x03B8, 0xA364, 0x03B9, 0xA365, 0x03BA, + 0xA366, 0x03BB, 0xA367, 0x03BC, 0xA368, 0x03BD, 0xA369, 0x03BE, 0xA36A, 0x03BF, 0xA36B, 0x03C0, 0xA36C, 0x03C1, 0xA36D, 0x03C3, + 0xA36E, 0x03C4, 0xA36F, 0x03C5, 0xA370, 0x03C6, 0xA371, 0x03C7, 0xA372, 0x03C8, 0xA373, 0x03C9, 0xA374, 0x3105, 0xA375, 0x3106, + 0xA376, 0x3107, 0xA377, 0x3108, 0xA378, 0x3109, 0xA379, 0x310A, 0xA37A, 0x310B, 0xA37B, 0x310C, 0xA37C, 0x310D, 0xA37D, 0x310E, + 0xA37E, 0x310F, 0xA3A1, 0x3110, 0xA3A2, 0x3111, 0xA3A3, 0x3112, 0xA3A4, 0x3113, 0xA3A5, 0x3114, 0xA3A6, 0x3115, 0xA3A7, 0x3116, + 0xA3A8, 0x3117, 0xA3A9, 0x3118, 0xA3AA, 0x3119, 0xA3AB, 0x311A, 0xA3AC, 0x311B, 0xA3AD, 0x311C, 0xA3AE, 0x311D, 0xA3AF, 0x311E, + 0xA3B0, 0x311F, 0xA3B1, 0x3120, 0xA3B2, 0x3121, 0xA3B3, 0x3122, 0xA3B4, 0x3123, 0xA3B5, 0x3124, 0xA3B6, 0x3125, 0xA3B7, 0x3126, + 0xA3B8, 0x3127, 0xA3B9, 0x3128, 0xA3BA, 0x3129, 0xA3BB, 0x02D9, 0xA3BC, 0x02C9, 0xA3BD, 0x02CA, 0xA3BE, 0x02C7, 0xA3BF, 0x02CB, + 0xA3E1, 0x20AC, 0xA440, 0x4E00, 0xA441, 0x4E59, 0xA442, 0x4E01, 0xA443, 0x4E03, 0xA444, 0x4E43, 0xA445, 0x4E5D, 0xA446, 0x4E86, + 0xA447, 0x4E8C, 0xA448, 0x4EBA, 0xA449, 0x513F, 0xA44A, 0x5165, 0xA44B, 0x516B, 0xA44C, 0x51E0, 0xA44D, 0x5200, 0xA44E, 0x5201, + 0xA44F, 0x529B, 0xA450, 0x5315, 0xA451, 0x5341, 0xA452, 0x535C, 0xA453, 0x53C8, 0xA454, 0x4E09, 0xA455, 0x4E0B, 0xA456, 0x4E08, + 0xA457, 0x4E0A, 0xA458, 0x4E2B, 0xA459, 0x4E38, 0xA45A, 0x51E1, 0xA45B, 0x4E45, 0xA45C, 0x4E48, 0xA45D, 0x4E5F, 0xA45E, 0x4E5E, + 0xA45F, 0x4E8E, 0xA460, 0x4EA1, 0xA461, 0x5140, 0xA462, 0x5203, 0xA463, 0x52FA, 0xA464, 0x5343, 0xA465, 0x53C9, 0xA466, 0x53E3, + 0xA467, 0x571F, 0xA468, 0x58EB, 0xA469, 0x5915, 0xA46A, 0x5927, 0xA46B, 0x5973, 0xA46C, 0x5B50, 0xA46D, 0x5B51, 0xA46E, 0x5B53, + 0xA46F, 0x5BF8, 0xA470, 0x5C0F, 0xA471, 0x5C22, 0xA472, 0x5C38, 0xA473, 0x5C71, 0xA474, 0x5DDD, 0xA475, 0x5DE5, 0xA476, 0x5DF1, + 0xA477, 0x5DF2, 0xA478, 0x5DF3, 0xA479, 0x5DFE, 0xA47A, 0x5E72, 0xA47B, 0x5EFE, 0xA47C, 0x5F0B, 0xA47D, 0x5F13, 0xA47E, 0x624D, + 0xA4A1, 0x4E11, 0xA4A2, 0x4E10, 0xA4A3, 0x4E0D, 0xA4A4, 0x4E2D, 0xA4A5, 0x4E30, 0xA4A6, 0x4E39, 0xA4A7, 0x4E4B, 0xA4A8, 0x5C39, + 0xA4A9, 0x4E88, 0xA4AA, 0x4E91, 0xA4AB, 0x4E95, 0xA4AC, 0x4E92, 0xA4AD, 0x4E94, 0xA4AE, 0x4EA2, 0xA4AF, 0x4EC1, 0xA4B0, 0x4EC0, + 0xA4B1, 0x4EC3, 0xA4B2, 0x4EC6, 0xA4B3, 0x4EC7, 0xA4B4, 0x4ECD, 0xA4B5, 0x4ECA, 0xA4B6, 0x4ECB, 0xA4B7, 0x4EC4, 0xA4B8, 0x5143, + 0xA4B9, 0x5141, 0xA4BA, 0x5167, 0xA4BB, 0x516D, 0xA4BC, 0x516E, 0xA4BD, 0x516C, 0xA4BE, 0x5197, 0xA4BF, 0x51F6, 0xA4C0, 0x5206, + 0xA4C1, 0x5207, 0xA4C2, 0x5208, 0xA4C3, 0x52FB, 0xA4C4, 0x52FE, 0xA4C5, 0x52FF, 0xA4C6, 0x5316, 0xA4C7, 0x5339, 0xA4C8, 0x5348, + 0xA4C9, 0x5347, 0xA4CA, 0x5345, 0xA4CB, 0x535E, 0xA4CC, 0x5384, 0xA4CD, 0x53CB, 0xA4CE, 0x53CA, 0xA4CF, 0x53CD, 0xA4D0, 0x58EC, + 0xA4D1, 0x5929, 0xA4D2, 0x592B, 0xA4D3, 0x592A, 0xA4D4, 0x592D, 0xA4D5, 0x5B54, 0xA4D6, 0x5C11, 0xA4D7, 0x5C24, 0xA4D8, 0x5C3A, + 0xA4D9, 0x5C6F, 0xA4DA, 0x5DF4, 0xA4DB, 0x5E7B, 0xA4DC, 0x5EFF, 0xA4DD, 0x5F14, 0xA4DE, 0x5F15, 0xA4DF, 0x5FC3, 0xA4E0, 0x6208, + 0xA4E1, 0x6236, 0xA4E2, 0x624B, 0xA4E3, 0x624E, 0xA4E4, 0x652F, 0xA4E5, 0x6587, 0xA4E6, 0x6597, 0xA4E7, 0x65A4, 0xA4E8, 0x65B9, + 0xA4E9, 0x65E5, 0xA4EA, 0x66F0, 0xA4EB, 0x6708, 0xA4EC, 0x6728, 0xA4ED, 0x6B20, 0xA4EE, 0x6B62, 0xA4EF, 0x6B79, 0xA4F0, 0x6BCB, + 0xA4F1, 0x6BD4, 0xA4F2, 0x6BDB, 0xA4F3, 0x6C0F, 0xA4F4, 0x6C34, 0xA4F5, 0x706B, 0xA4F6, 0x722A, 0xA4F7, 0x7236, 0xA4F8, 0x723B, + 0xA4F9, 0x7247, 0xA4FA, 0x7259, 0xA4FB, 0x725B, 0xA4FC, 0x72AC, 0xA4FD, 0x738B, 0xA4FE, 0x4E19, 0xA540, 0x4E16, 0xA541, 0x4E15, + 0xA542, 0x4E14, 0xA543, 0x4E18, 0xA544, 0x4E3B, 0xA545, 0x4E4D, 0xA546, 0x4E4F, 0xA547, 0x4E4E, 0xA548, 0x4EE5, 0xA549, 0x4ED8, + 0xA54A, 0x4ED4, 0xA54B, 0x4ED5, 0xA54C, 0x4ED6, 0xA54D, 0x4ED7, 0xA54E, 0x4EE3, 0xA54F, 0x4EE4, 0xA550, 0x4ED9, 0xA551, 0x4EDE, + 0xA552, 0x5145, 0xA553, 0x5144, 0xA554, 0x5189, 0xA555, 0x518A, 0xA556, 0x51AC, 0xA557, 0x51F9, 0xA558, 0x51FA, 0xA559, 0x51F8, + 0xA55A, 0x520A, 0xA55B, 0x52A0, 0xA55C, 0x529F, 0xA55D, 0x5305, 0xA55E, 0x5306, 0xA55F, 0x5317, 0xA560, 0x531D, 0xA561, 0x4EDF, + 0xA562, 0x534A, 0xA563, 0x5349, 0xA564, 0x5361, 0xA565, 0x5360, 0xA566, 0x536F, 0xA567, 0x536E, 0xA568, 0x53BB, 0xA569, 0x53EF, + 0xA56A, 0x53E4, 0xA56B, 0x53F3, 0xA56C, 0x53EC, 0xA56D, 0x53EE, 0xA56E, 0x53E9, 0xA56F, 0x53E8, 0xA570, 0x53FC, 0xA571, 0x53F8, + 0xA572, 0x53F5, 0xA573, 0x53EB, 0xA574, 0x53E6, 0xA575, 0x53EA, 0xA576, 0x53F2, 0xA577, 0x53F1, 0xA578, 0x53F0, 0xA579, 0x53E5, + 0xA57A, 0x53ED, 0xA57B, 0x53FB, 0xA57C, 0x56DB, 0xA57D, 0x56DA, 0xA57E, 0x5916, 0xA5A1, 0x592E, 0xA5A2, 0x5931, 0xA5A3, 0x5974, + 0xA5A4, 0x5976, 0xA5A5, 0x5B55, 0xA5A6, 0x5B83, 0xA5A7, 0x5C3C, 0xA5A8, 0x5DE8, 0xA5A9, 0x5DE7, 0xA5AA, 0x5DE6, 0xA5AB, 0x5E02, + 0xA5AC, 0x5E03, 0xA5AD, 0x5E73, 0xA5AE, 0x5E7C, 0xA5AF, 0x5F01, 0xA5B0, 0x5F18, 0xA5B1, 0x5F17, 0xA5B2, 0x5FC5, 0xA5B3, 0x620A, + 0xA5B4, 0x6253, 0xA5B5, 0x6254, 0xA5B6, 0x6252, 0xA5B7, 0x6251, 0xA5B8, 0x65A5, 0xA5B9, 0x65E6, 0xA5BA, 0x672E, 0xA5BB, 0x672C, + 0xA5BC, 0x672A, 0xA5BD, 0x672B, 0xA5BE, 0x672D, 0xA5BF, 0x6B63, 0xA5C0, 0x6BCD, 0xA5C1, 0x6C11, 0xA5C2, 0x6C10, 0xA5C3, 0x6C38, + 0xA5C4, 0x6C41, 0xA5C5, 0x6C40, 0xA5C6, 0x6C3E, 0xA5C7, 0x72AF, 0xA5C8, 0x7384, 0xA5C9, 0x7389, 0xA5CA, 0x74DC, 0xA5CB, 0x74E6, + 0xA5CC, 0x7518, 0xA5CD, 0x751F, 0xA5CE, 0x7528, 0xA5CF, 0x7529, 0xA5D0, 0x7530, 0xA5D1, 0x7531, 0xA5D2, 0x7532, 0xA5D3, 0x7533, + 0xA5D4, 0x758B, 0xA5D5, 0x767D, 0xA5D6, 0x76AE, 0xA5D7, 0x76BF, 0xA5D8, 0x76EE, 0xA5D9, 0x77DB, 0xA5DA, 0x77E2, 0xA5DB, 0x77F3, + 0xA5DC, 0x793A, 0xA5DD, 0x79BE, 0xA5DE, 0x7A74, 0xA5DF, 0x7ACB, 0xA5E0, 0x4E1E, 0xA5E1, 0x4E1F, 0xA5E2, 0x4E52, 0xA5E3, 0x4E53, + 0xA5E4, 0x4E69, 0xA5E5, 0x4E99, 0xA5E6, 0x4EA4, 0xA5E7, 0x4EA6, 0xA5E8, 0x4EA5, 0xA5E9, 0x4EFF, 0xA5EA, 0x4F09, 0xA5EB, 0x4F19, + 0xA5EC, 0x4F0A, 0xA5ED, 0x4F15, 0xA5EE, 0x4F0D, 0xA5EF, 0x4F10, 0xA5F0, 0x4F11, 0xA5F1, 0x4F0F, 0xA5F2, 0x4EF2, 0xA5F3, 0x4EF6, + 0xA5F4, 0x4EFB, 0xA5F5, 0x4EF0, 0xA5F6, 0x4EF3, 0xA5F7, 0x4EFD, 0xA5F8, 0x4F01, 0xA5F9, 0x4F0B, 0xA5FA, 0x5149, 0xA5FB, 0x5147, + 0xA5FC, 0x5146, 0xA5FD, 0x5148, 0xA5FE, 0x5168, 0xA640, 0x5171, 0xA641, 0x518D, 0xA642, 0x51B0, 0xA643, 0x5217, 0xA644, 0x5211, + 0xA645, 0x5212, 0xA646, 0x520E, 0xA647, 0x5216, 0xA648, 0x52A3, 0xA649, 0x5308, 0xA64A, 0x5321, 0xA64B, 0x5320, 0xA64C, 0x5370, + 0xA64D, 0x5371, 0xA64E, 0x5409, 0xA64F, 0x540F, 0xA650, 0x540C, 0xA651, 0x540A, 0xA652, 0x5410, 0xA653, 0x5401, 0xA654, 0x540B, + 0xA655, 0x5404, 0xA656, 0x5411, 0xA657, 0x540D, 0xA658, 0x5408, 0xA659, 0x5403, 0xA65A, 0x540E, 0xA65B, 0x5406, 0xA65C, 0x5412, + 0xA65D, 0x56E0, 0xA65E, 0x56DE, 0xA65F, 0x56DD, 0xA660, 0x5733, 0xA661, 0x5730, 0xA662, 0x5728, 0xA663, 0x572D, 0xA664, 0x572C, + 0xA665, 0x572F, 0xA666, 0x5729, 0xA667, 0x5919, 0xA668, 0x591A, 0xA669, 0x5937, 0xA66A, 0x5938, 0xA66B, 0x5984, 0xA66C, 0x5978, + 0xA66D, 0x5983, 0xA66E, 0x597D, 0xA66F, 0x5979, 0xA670, 0x5982, 0xA671, 0x5981, 0xA672, 0x5B57, 0xA673, 0x5B58, 0xA674, 0x5B87, + 0xA675, 0x5B88, 0xA676, 0x5B85, 0xA677, 0x5B89, 0xA678, 0x5BFA, 0xA679, 0x5C16, 0xA67A, 0x5C79, 0xA67B, 0x5DDE, 0xA67C, 0x5E06, + 0xA67D, 0x5E76, 0xA67E, 0x5E74, 0xA6A1, 0x5F0F, 0xA6A2, 0x5F1B, 0xA6A3, 0x5FD9, 0xA6A4, 0x5FD6, 0xA6A5, 0x620E, 0xA6A6, 0x620C, + 0xA6A7, 0x620D, 0xA6A8, 0x6210, 0xA6A9, 0x6263, 0xA6AA, 0x625B, 0xA6AB, 0x6258, 0xA6AC, 0x6536, 0xA6AD, 0x65E9, 0xA6AE, 0x65E8, + 0xA6AF, 0x65EC, 0xA6B0, 0x65ED, 0xA6B1, 0x66F2, 0xA6B2, 0x66F3, 0xA6B3, 0x6709, 0xA6B4, 0x673D, 0xA6B5, 0x6734, 0xA6B6, 0x6731, + 0xA6B7, 0x6735, 0xA6B8, 0x6B21, 0xA6B9, 0x6B64, 0xA6BA, 0x6B7B, 0xA6BB, 0x6C16, 0xA6BC, 0x6C5D, 0xA6BD, 0x6C57, 0xA6BE, 0x6C59, + 0xA6BF, 0x6C5F, 0xA6C0, 0x6C60, 0xA6C1, 0x6C50, 0xA6C2, 0x6C55, 0xA6C3, 0x6C61, 0xA6C4, 0x6C5B, 0xA6C5, 0x6C4D, 0xA6C6, 0x6C4E, + 0xA6C7, 0x7070, 0xA6C8, 0x725F, 0xA6C9, 0x725D, 0xA6CA, 0x767E, 0xA6CB, 0x7AF9, 0xA6CC, 0x7C73, 0xA6CD, 0x7CF8, 0xA6CE, 0x7F36, + 0xA6CF, 0x7F8A, 0xA6D0, 0x7FBD, 0xA6D1, 0x8001, 0xA6D2, 0x8003, 0xA6D3, 0x800C, 0xA6D4, 0x8012, 0xA6D5, 0x8033, 0xA6D6, 0x807F, + 0xA6D7, 0x8089, 0xA6D8, 0x808B, 0xA6D9, 0x808C, 0xA6DA, 0x81E3, 0xA6DB, 0x81EA, 0xA6DC, 0x81F3, 0xA6DD, 0x81FC, 0xA6DE, 0x820C, + 0xA6DF, 0x821B, 0xA6E0, 0x821F, 0xA6E1, 0x826E, 0xA6E2, 0x8272, 0xA6E3, 0x827E, 0xA6E4, 0x866B, 0xA6E5, 0x8840, 0xA6E6, 0x884C, + 0xA6E7, 0x8863, 0xA6E8, 0x897F, 0xA6E9, 0x9621, 0xA6EA, 0x4E32, 0xA6EB, 0x4EA8, 0xA6EC, 0x4F4D, 0xA6ED, 0x4F4F, 0xA6EE, 0x4F47, + 0xA6EF, 0x4F57, 0xA6F0, 0x4F5E, 0xA6F1, 0x4F34, 0xA6F2, 0x4F5B, 0xA6F3, 0x4F55, 0xA6F4, 0x4F30, 0xA6F5, 0x4F50, 0xA6F6, 0x4F51, + 0xA6F7, 0x4F3D, 0xA6F8, 0x4F3A, 0xA6F9, 0x4F38, 0xA6FA, 0x4F43, 0xA6FB, 0x4F54, 0xA6FC, 0x4F3C, 0xA6FD, 0x4F46, 0xA6FE, 0x4F63, + 0xA740, 0x4F5C, 0xA741, 0x4F60, 0xA742, 0x4F2F, 0xA743, 0x4F4E, 0xA744, 0x4F36, 0xA745, 0x4F59, 0xA746, 0x4F5D, 0xA747, 0x4F48, + 0xA748, 0x4F5A, 0xA749, 0x514C, 0xA74A, 0x514B, 0xA74B, 0x514D, 0xA74C, 0x5175, 0xA74D, 0x51B6, 0xA74E, 0x51B7, 0xA74F, 0x5225, + 0xA750, 0x5224, 0xA751, 0x5229, 0xA752, 0x522A, 0xA753, 0x5228, 0xA754, 0x52AB, 0xA755, 0x52A9, 0xA756, 0x52AA, 0xA757, 0x52AC, + 0xA758, 0x5323, 0xA759, 0x5373, 0xA75A, 0x5375, 0xA75B, 0x541D, 0xA75C, 0x542D, 0xA75D, 0x541E, 0xA75E, 0x543E, 0xA75F, 0x5426, + 0xA760, 0x544E, 0xA761, 0x5427, 0xA762, 0x5446, 0xA763, 0x5443, 0xA764, 0x5433, 0xA765, 0x5448, 0xA766, 0x5442, 0xA767, 0x541B, + 0xA768, 0x5429, 0xA769, 0x544A, 0xA76A, 0x5439, 0xA76B, 0x543B, 0xA76C, 0x5438, 0xA76D, 0x542E, 0xA76E, 0x5435, 0xA76F, 0x5436, + 0xA770, 0x5420, 0xA771, 0x543C, 0xA772, 0x5440, 0xA773, 0x5431, 0xA774, 0x542B, 0xA775, 0x541F, 0xA776, 0x542C, 0xA777, 0x56EA, + 0xA778, 0x56F0, 0xA779, 0x56E4, 0xA77A, 0x56EB, 0xA77B, 0x574A, 0xA77C, 0x5751, 0xA77D, 0x5740, 0xA77E, 0x574D, 0xA7A1, 0x5747, + 0xA7A2, 0x574E, 0xA7A3, 0x573E, 0xA7A4, 0x5750, 0xA7A5, 0x574F, 0xA7A6, 0x573B, 0xA7A7, 0x58EF, 0xA7A8, 0x593E, 0xA7A9, 0x599D, + 0xA7AA, 0x5992, 0xA7AB, 0x59A8, 0xA7AC, 0x599E, 0xA7AD, 0x59A3, 0xA7AE, 0x5999, 0xA7AF, 0x5996, 0xA7B0, 0x598D, 0xA7B1, 0x59A4, + 0xA7B2, 0x5993, 0xA7B3, 0x598A, 0xA7B4, 0x59A5, 0xA7B5, 0x5B5D, 0xA7B6, 0x5B5C, 0xA7B7, 0x5B5A, 0xA7B8, 0x5B5B, 0xA7B9, 0x5B8C, + 0xA7BA, 0x5B8B, 0xA7BB, 0x5B8F, 0xA7BC, 0x5C2C, 0xA7BD, 0x5C40, 0xA7BE, 0x5C41, 0xA7BF, 0x5C3F, 0xA7C0, 0x5C3E, 0xA7C1, 0x5C90, + 0xA7C2, 0x5C91, 0xA7C3, 0x5C94, 0xA7C4, 0x5C8C, 0xA7C5, 0x5DEB, 0xA7C6, 0x5E0C, 0xA7C7, 0x5E8F, 0xA7C8, 0x5E87, 0xA7C9, 0x5E8A, + 0xA7CA, 0x5EF7, 0xA7CB, 0x5F04, 0xA7CC, 0x5F1F, 0xA7CD, 0x5F64, 0xA7CE, 0x5F62, 0xA7CF, 0x5F77, 0xA7D0, 0x5F79, 0xA7D1, 0x5FD8, + 0xA7D2, 0x5FCC, 0xA7D3, 0x5FD7, 0xA7D4, 0x5FCD, 0xA7D5, 0x5FF1, 0xA7D6, 0x5FEB, 0xA7D7, 0x5FF8, 0xA7D8, 0x5FEA, 0xA7D9, 0x6212, + 0xA7DA, 0x6211, 0xA7DB, 0x6284, 0xA7DC, 0x6297, 0xA7DD, 0x6296, 0xA7DE, 0x6280, 0xA7DF, 0x6276, 0xA7E0, 0x6289, 0xA7E1, 0x626D, + 0xA7E2, 0x628A, 0xA7E3, 0x627C, 0xA7E4, 0x627E, 0xA7E5, 0x6279, 0xA7E6, 0x6273, 0xA7E7, 0x6292, 0xA7E8, 0x626F, 0xA7E9, 0x6298, + 0xA7EA, 0x626E, 0xA7EB, 0x6295, 0xA7EC, 0x6293, 0xA7ED, 0x6291, 0xA7EE, 0x6286, 0xA7EF, 0x6539, 0xA7F0, 0x653B, 0xA7F1, 0x6538, + 0xA7F2, 0x65F1, 0xA7F3, 0x66F4, 0xA7F4, 0x675F, 0xA7F5, 0x674E, 0xA7F6, 0x674F, 0xA7F7, 0x6750, 0xA7F8, 0x6751, 0xA7F9, 0x675C, + 0xA7FA, 0x6756, 0xA7FB, 0x675E, 0xA7FC, 0x6749, 0xA7FD, 0x6746, 0xA7FE, 0x6760, 0xA840, 0x6753, 0xA841, 0x6757, 0xA842, 0x6B65, + 0xA843, 0x6BCF, 0xA844, 0x6C42, 0xA845, 0x6C5E, 0xA846, 0x6C99, 0xA847, 0x6C81, 0xA848, 0x6C88, 0xA849, 0x6C89, 0xA84A, 0x6C85, + 0xA84B, 0x6C9B, 0xA84C, 0x6C6A, 0xA84D, 0x6C7A, 0xA84E, 0x6C90, 0xA84F, 0x6C70, 0xA850, 0x6C8C, 0xA851, 0x6C68, 0xA852, 0x6C96, + 0xA853, 0x6C92, 0xA854, 0x6C7D, 0xA855, 0x6C83, 0xA856, 0x6C72, 0xA857, 0x6C7E, 0xA858, 0x6C74, 0xA859, 0x6C86, 0xA85A, 0x6C76, + 0xA85B, 0x6C8D, 0xA85C, 0x6C94, 0xA85D, 0x6C98, 0xA85E, 0x6C82, 0xA85F, 0x7076, 0xA860, 0x707C, 0xA861, 0x707D, 0xA862, 0x7078, + 0xA863, 0x7262, 0xA864, 0x7261, 0xA865, 0x7260, 0xA866, 0x72C4, 0xA867, 0x72C2, 0xA868, 0x7396, 0xA869, 0x752C, 0xA86A, 0x752B, + 0xA86B, 0x7537, 0xA86C, 0x7538, 0xA86D, 0x7682, 0xA86E, 0x76EF, 0xA86F, 0x77E3, 0xA870, 0x79C1, 0xA871, 0x79C0, 0xA872, 0x79BF, + 0xA873, 0x7A76, 0xA874, 0x7CFB, 0xA875, 0x7F55, 0xA876, 0x8096, 0xA877, 0x8093, 0xA878, 0x809D, 0xA879, 0x8098, 0xA87A, 0x809B, + 0xA87B, 0x809A, 0xA87C, 0x80B2, 0xA87D, 0x826F, 0xA87E, 0x8292, 0xA8A1, 0x828B, 0xA8A2, 0x828D, 0xA8A3, 0x898B, 0xA8A4, 0x89D2, + 0xA8A5, 0x8A00, 0xA8A6, 0x8C37, 0xA8A7, 0x8C46, 0xA8A8, 0x8C55, 0xA8A9, 0x8C9D, 0xA8AA, 0x8D64, 0xA8AB, 0x8D70, 0xA8AC, 0x8DB3, + 0xA8AD, 0x8EAB, 0xA8AE, 0x8ECA, 0xA8AF, 0x8F9B, 0xA8B0, 0x8FB0, 0xA8B1, 0x8FC2, 0xA8B2, 0x8FC6, 0xA8B3, 0x8FC5, 0xA8B4, 0x8FC4, + 0xA8B5, 0x5DE1, 0xA8B6, 0x9091, 0xA8B7, 0x90A2, 0xA8B8, 0x90AA, 0xA8B9, 0x90A6, 0xA8BA, 0x90A3, 0xA8BB, 0x9149, 0xA8BC, 0x91C6, + 0xA8BD, 0x91CC, 0xA8BE, 0x9632, 0xA8BF, 0x962E, 0xA8C0, 0x9631, 0xA8C1, 0x962A, 0xA8C2, 0x962C, 0xA8C3, 0x4E26, 0xA8C4, 0x4E56, + 0xA8C5, 0x4E73, 0xA8C6, 0x4E8B, 0xA8C7, 0x4E9B, 0xA8C8, 0x4E9E, 0xA8C9, 0x4EAB, 0xA8CA, 0x4EAC, 0xA8CB, 0x4F6F, 0xA8CC, 0x4F9D, + 0xA8CD, 0x4F8D, 0xA8CE, 0x4F73, 0xA8CF, 0x4F7F, 0xA8D0, 0x4F6C, 0xA8D1, 0x4F9B, 0xA8D2, 0x4F8B, 0xA8D3, 0x4F86, 0xA8D4, 0x4F83, + 0xA8D5, 0x4F70, 0xA8D6, 0x4F75, 0xA8D7, 0x4F88, 0xA8D8, 0x4F69, 0xA8D9, 0x4F7B, 0xA8DA, 0x4F96, 0xA8DB, 0x4F7E, 0xA8DC, 0x4F8F, + 0xA8DD, 0x4F91, 0xA8DE, 0x4F7A, 0xA8DF, 0x5154, 0xA8E0, 0x5152, 0xA8E1, 0x5155, 0xA8E2, 0x5169, 0xA8E3, 0x5177, 0xA8E4, 0x5176, + 0xA8E5, 0x5178, 0xA8E6, 0x51BD, 0xA8E7, 0x51FD, 0xA8E8, 0x523B, 0xA8E9, 0x5238, 0xA8EA, 0x5237, 0xA8EB, 0x523A, 0xA8EC, 0x5230, + 0xA8ED, 0x522E, 0xA8EE, 0x5236, 0xA8EF, 0x5241, 0xA8F0, 0x52BE, 0xA8F1, 0x52BB, 0xA8F2, 0x5352, 0xA8F3, 0x5354, 0xA8F4, 0x5353, + 0xA8F5, 0x5351, 0xA8F6, 0x5366, 0xA8F7, 0x5377, 0xA8F8, 0x5378, 0xA8F9, 0x5379, 0xA8FA, 0x53D6, 0xA8FB, 0x53D4, 0xA8FC, 0x53D7, + 0xA8FD, 0x5473, 0xA8FE, 0x5475, 0xA940, 0x5496, 0xA941, 0x5478, 0xA942, 0x5495, 0xA943, 0x5480, 0xA944, 0x547B, 0xA945, 0x5477, + 0xA946, 0x5484, 0xA947, 0x5492, 0xA948, 0x5486, 0xA949, 0x547C, 0xA94A, 0x5490, 0xA94B, 0x5471, 0xA94C, 0x5476, 0xA94D, 0x548C, + 0xA94E, 0x549A, 0xA94F, 0x5462, 0xA950, 0x5468, 0xA951, 0x548B, 0xA952, 0x547D, 0xA953, 0x548E, 0xA954, 0x56FA, 0xA955, 0x5783, + 0xA956, 0x5777, 0xA957, 0x576A, 0xA958, 0x5769, 0xA959, 0x5761, 0xA95A, 0x5766, 0xA95B, 0x5764, 0xA95C, 0x577C, 0xA95D, 0x591C, + 0xA95E, 0x5949, 0xA95F, 0x5947, 0xA960, 0x5948, 0xA961, 0x5944, 0xA962, 0x5954, 0xA963, 0x59BE, 0xA964, 0x59BB, 0xA965, 0x59D4, + 0xA966, 0x59B9, 0xA967, 0x59AE, 0xA968, 0x59D1, 0xA969, 0x59C6, 0xA96A, 0x59D0, 0xA96B, 0x59CD, 0xA96C, 0x59CB, 0xA96D, 0x59D3, + 0xA96E, 0x59CA, 0xA96F, 0x59AF, 0xA970, 0x59B3, 0xA971, 0x59D2, 0xA972, 0x59C5, 0xA973, 0x5B5F, 0xA974, 0x5B64, 0xA975, 0x5B63, + 0xA976, 0x5B97, 0xA977, 0x5B9A, 0xA978, 0x5B98, 0xA979, 0x5B9C, 0xA97A, 0x5B99, 0xA97B, 0x5B9B, 0xA97C, 0x5C1A, 0xA97D, 0x5C48, + 0xA97E, 0x5C45, 0xA9A1, 0x5C46, 0xA9A2, 0x5CB7, 0xA9A3, 0x5CA1, 0xA9A4, 0x5CB8, 0xA9A5, 0x5CA9, 0xA9A6, 0x5CAB, 0xA9A7, 0x5CB1, + 0xA9A8, 0x5CB3, 0xA9A9, 0x5E18, 0xA9AA, 0x5E1A, 0xA9AB, 0x5E16, 0xA9AC, 0x5E15, 0xA9AD, 0x5E1B, 0xA9AE, 0x5E11, 0xA9AF, 0x5E78, + 0xA9B0, 0x5E9A, 0xA9B1, 0x5E97, 0xA9B2, 0x5E9C, 0xA9B3, 0x5E95, 0xA9B4, 0x5E96, 0xA9B5, 0x5EF6, 0xA9B6, 0x5F26, 0xA9B7, 0x5F27, + 0xA9B8, 0x5F29, 0xA9B9, 0x5F80, 0xA9BA, 0x5F81, 0xA9BB, 0x5F7F, 0xA9BC, 0x5F7C, 0xA9BD, 0x5FDD, 0xA9BE, 0x5FE0, 0xA9BF, 0x5FFD, + 0xA9C0, 0x5FF5, 0xA9C1, 0x5FFF, 0xA9C2, 0x600F, 0xA9C3, 0x6014, 0xA9C4, 0x602F, 0xA9C5, 0x6035, 0xA9C6, 0x6016, 0xA9C7, 0x602A, + 0xA9C8, 0x6015, 0xA9C9, 0x6021, 0xA9CA, 0x6027, 0xA9CB, 0x6029, 0xA9CC, 0x602B, 0xA9CD, 0x601B, 0xA9CE, 0x6216, 0xA9CF, 0x6215, + 0xA9D0, 0x623F, 0xA9D1, 0x623E, 0xA9D2, 0x6240, 0xA9D3, 0x627F, 0xA9D4, 0x62C9, 0xA9D5, 0x62CC, 0xA9D6, 0x62C4, 0xA9D7, 0x62BF, + 0xA9D8, 0x62C2, 0xA9D9, 0x62B9, 0xA9DA, 0x62D2, 0xA9DB, 0x62DB, 0xA9DC, 0x62AB, 0xA9DD, 0x62D3, 0xA9DE, 0x62D4, 0xA9DF, 0x62CB, + 0xA9E0, 0x62C8, 0xA9E1, 0x62A8, 0xA9E2, 0x62BD, 0xA9E3, 0x62BC, 0xA9E4, 0x62D0, 0xA9E5, 0x62D9, 0xA9E6, 0x62C7, 0xA9E7, 0x62CD, + 0xA9E8, 0x62B5, 0xA9E9, 0x62DA, 0xA9EA, 0x62B1, 0xA9EB, 0x62D8, 0xA9EC, 0x62D6, 0xA9ED, 0x62D7, 0xA9EE, 0x62C6, 0xA9EF, 0x62AC, + 0xA9F0, 0x62CE, 0xA9F1, 0x653E, 0xA9F2, 0x65A7, 0xA9F3, 0x65BC, 0xA9F4, 0x65FA, 0xA9F5, 0x6614, 0xA9F6, 0x6613, 0xA9F7, 0x660C, + 0xA9F8, 0x6606, 0xA9F9, 0x6602, 0xA9FA, 0x660E, 0xA9FB, 0x6600, 0xA9FC, 0x660F, 0xA9FD, 0x6615, 0xA9FE, 0x660A, 0xAA40, 0x6607, + 0xAA41, 0x670D, 0xAA42, 0x670B, 0xAA43, 0x676D, 0xAA44, 0x678B, 0xAA45, 0x6795, 0xAA46, 0x6771, 0xAA47, 0x679C, 0xAA48, 0x6773, + 0xAA49, 0x6777, 0xAA4A, 0x6787, 0xAA4B, 0x679D, 0xAA4C, 0x6797, 0xAA4D, 0x676F, 0xAA4E, 0x6770, 0xAA4F, 0x677F, 0xAA50, 0x6789, + 0xAA51, 0x677E, 0xAA52, 0x6790, 0xAA53, 0x6775, 0xAA54, 0x679A, 0xAA55, 0x6793, 0xAA56, 0x677C, 0xAA57, 0x676A, 0xAA58, 0x6772, + 0xAA59, 0x6B23, 0xAA5A, 0x6B66, 0xAA5B, 0x6B67, 0xAA5C, 0x6B7F, 0xAA5D, 0x6C13, 0xAA5E, 0x6C1B, 0xAA5F, 0x6CE3, 0xAA60, 0x6CE8, + 0xAA61, 0x6CF3, 0xAA62, 0x6CB1, 0xAA63, 0x6CCC, 0xAA64, 0x6CE5, 0xAA65, 0x6CB3, 0xAA66, 0x6CBD, 0xAA67, 0x6CBE, 0xAA68, 0x6CBC, + 0xAA69, 0x6CE2, 0xAA6A, 0x6CAB, 0xAA6B, 0x6CD5, 0xAA6C, 0x6CD3, 0xAA6D, 0x6CB8, 0xAA6E, 0x6CC4, 0xAA6F, 0x6CB9, 0xAA70, 0x6CC1, + 0xAA71, 0x6CAE, 0xAA72, 0x6CD7, 0xAA73, 0x6CC5, 0xAA74, 0x6CF1, 0xAA75, 0x6CBF, 0xAA76, 0x6CBB, 0xAA77, 0x6CE1, 0xAA78, 0x6CDB, + 0xAA79, 0x6CCA, 0xAA7A, 0x6CAC, 0xAA7B, 0x6CEF, 0xAA7C, 0x6CDC, 0xAA7D, 0x6CD6, 0xAA7E, 0x6CE0, 0xAAA1, 0x7095, 0xAAA2, 0x708E, + 0xAAA3, 0x7092, 0xAAA4, 0x708A, 0xAAA5, 0x7099, 0xAAA6, 0x722C, 0xAAA7, 0x722D, 0xAAA8, 0x7238, 0xAAA9, 0x7248, 0xAAAA, 0x7267, + 0xAAAB, 0x7269, 0xAAAC, 0x72C0, 0xAAAD, 0x72CE, 0xAAAE, 0x72D9, 0xAAAF, 0x72D7, 0xAAB0, 0x72D0, 0xAAB1, 0x73A9, 0xAAB2, 0x73A8, + 0xAAB3, 0x739F, 0xAAB4, 0x73AB, 0xAAB5, 0x73A5, 0xAAB6, 0x753D, 0xAAB7, 0x759D, 0xAAB8, 0x7599, 0xAAB9, 0x759A, 0xAABA, 0x7684, + 0xAABB, 0x76C2, 0xAABC, 0x76F2, 0xAABD, 0x76F4, 0xAABE, 0x77E5, 0xAABF, 0x77FD, 0xAAC0, 0x793E, 0xAAC1, 0x7940, 0xAAC2, 0x7941, + 0xAAC3, 0x79C9, 0xAAC4, 0x79C8, 0xAAC5, 0x7A7A, 0xAAC6, 0x7A79, 0xAAC7, 0x7AFA, 0xAAC8, 0x7CFE, 0xAAC9, 0x7F54, 0xAACA, 0x7F8C, + 0xAACB, 0x7F8B, 0xAACC, 0x8005, 0xAACD, 0x80BA, 0xAACE, 0x80A5, 0xAACF, 0x80A2, 0xAAD0, 0x80B1, 0xAAD1, 0x80A1, 0xAAD2, 0x80AB, + 0xAAD3, 0x80A9, 0xAAD4, 0x80B4, 0xAAD5, 0x80AA, 0xAAD6, 0x80AF, 0xAAD7, 0x81E5, 0xAAD8, 0x81FE, 0xAAD9, 0x820D, 0xAADA, 0x82B3, + 0xAADB, 0x829D, 0xAADC, 0x8299, 0xAADD, 0x82AD, 0xAADE, 0x82BD, 0xAADF, 0x829F, 0xAAE0, 0x82B9, 0xAAE1, 0x82B1, 0xAAE2, 0x82AC, + 0xAAE3, 0x82A5, 0xAAE4, 0x82AF, 0xAAE5, 0x82B8, 0xAAE6, 0x82A3, 0xAAE7, 0x82B0, 0xAAE8, 0x82BE, 0xAAE9, 0x82B7, 0xAAEA, 0x864E, + 0xAAEB, 0x8671, 0xAAEC, 0x521D, 0xAAED, 0x8868, 0xAAEE, 0x8ECB, 0xAAEF, 0x8FCE, 0xAAF0, 0x8FD4, 0xAAF1, 0x8FD1, 0xAAF2, 0x90B5, + 0xAAF3, 0x90B8, 0xAAF4, 0x90B1, 0xAAF5, 0x90B6, 0xAAF6, 0x91C7, 0xAAF7, 0x91D1, 0xAAF8, 0x9577, 0xAAF9, 0x9580, 0xAAFA, 0x961C, + 0xAAFB, 0x9640, 0xAAFC, 0x963F, 0xAAFD, 0x963B, 0xAAFE, 0x9644, 0xAB40, 0x9642, 0xAB41, 0x96B9, 0xAB42, 0x96E8, 0xAB43, 0x9752, + 0xAB44, 0x975E, 0xAB45, 0x4E9F, 0xAB46, 0x4EAD, 0xAB47, 0x4EAE, 0xAB48, 0x4FE1, 0xAB49, 0x4FB5, 0xAB4A, 0x4FAF, 0xAB4B, 0x4FBF, + 0xAB4C, 0x4FE0, 0xAB4D, 0x4FD1, 0xAB4E, 0x4FCF, 0xAB4F, 0x4FDD, 0xAB50, 0x4FC3, 0xAB51, 0x4FB6, 0xAB52, 0x4FD8, 0xAB53, 0x4FDF, + 0xAB54, 0x4FCA, 0xAB55, 0x4FD7, 0xAB56, 0x4FAE, 0xAB57, 0x4FD0, 0xAB58, 0x4FC4, 0xAB59, 0x4FC2, 0xAB5A, 0x4FDA, 0xAB5B, 0x4FCE, + 0xAB5C, 0x4FDE, 0xAB5D, 0x4FB7, 0xAB5E, 0x5157, 0xAB5F, 0x5192, 0xAB60, 0x5191, 0xAB61, 0x51A0, 0xAB62, 0x524E, 0xAB63, 0x5243, + 0xAB64, 0x524A, 0xAB65, 0x524D, 0xAB66, 0x524C, 0xAB67, 0x524B, 0xAB68, 0x5247, 0xAB69, 0x52C7, 0xAB6A, 0x52C9, 0xAB6B, 0x52C3, + 0xAB6C, 0x52C1, 0xAB6D, 0x530D, 0xAB6E, 0x5357, 0xAB6F, 0x537B, 0xAB70, 0x539A, 0xAB71, 0x53DB, 0xAB72, 0x54AC, 0xAB73, 0x54C0, + 0xAB74, 0x54A8, 0xAB75, 0x54CE, 0xAB76, 0x54C9, 0xAB77, 0x54B8, 0xAB78, 0x54A6, 0xAB79, 0x54B3, 0xAB7A, 0x54C7, 0xAB7B, 0x54C2, + 0xAB7C, 0x54BD, 0xAB7D, 0x54AA, 0xAB7E, 0x54C1, 0xABA1, 0x54C4, 0xABA2, 0x54C8, 0xABA3, 0x54AF, 0xABA4, 0x54AB, 0xABA5, 0x54B1, + 0xABA6, 0x54BB, 0xABA7, 0x54A9, 0xABA8, 0x54A7, 0xABA9, 0x54BF, 0xABAA, 0x56FF, 0xABAB, 0x5782, 0xABAC, 0x578B, 0xABAD, 0x57A0, + 0xABAE, 0x57A3, 0xABAF, 0x57A2, 0xABB0, 0x57CE, 0xABB1, 0x57AE, 0xABB2, 0x5793, 0xABB3, 0x5955, 0xABB4, 0x5951, 0xABB5, 0x594F, + 0xABB6, 0x594E, 0xABB7, 0x5950, 0xABB8, 0x59DC, 0xABB9, 0x59D8, 0xABBA, 0x59FF, 0xABBB, 0x59E3, 0xABBC, 0x59E8, 0xABBD, 0x5A03, + 0xABBE, 0x59E5, 0xABBF, 0x59EA, 0xABC0, 0x59DA, 0xABC1, 0x59E6, 0xABC2, 0x5A01, 0xABC3, 0x59FB, 0xABC4, 0x5B69, 0xABC5, 0x5BA3, + 0xABC6, 0x5BA6, 0xABC7, 0x5BA4, 0xABC8, 0x5BA2, 0xABC9, 0x5BA5, 0xABCA, 0x5C01, 0xABCB, 0x5C4E, 0xABCC, 0x5C4F, 0xABCD, 0x5C4D, + 0xABCE, 0x5C4B, 0xABCF, 0x5CD9, 0xABD0, 0x5CD2, 0xABD1, 0x5DF7, 0xABD2, 0x5E1D, 0xABD3, 0x5E25, 0xABD4, 0x5E1F, 0xABD5, 0x5E7D, + 0xABD6, 0x5EA0, 0xABD7, 0x5EA6, 0xABD8, 0x5EFA, 0xABD9, 0x5F08, 0xABDA, 0x5F2D, 0xABDB, 0x5F65, 0xABDC, 0x5F88, 0xABDD, 0x5F85, + 0xABDE, 0x5F8A, 0xABDF, 0x5F8B, 0xABE0, 0x5F87, 0xABE1, 0x5F8C, 0xABE2, 0x5F89, 0xABE3, 0x6012, 0xABE4, 0x601D, 0xABE5, 0x6020, + 0xABE6, 0x6025, 0xABE7, 0x600E, 0xABE8, 0x6028, 0xABE9, 0x604D, 0xABEA, 0x6070, 0xABEB, 0x6068, 0xABEC, 0x6062, 0xABED, 0x6046, + 0xABEE, 0x6043, 0xABEF, 0x606C, 0xABF0, 0x606B, 0xABF1, 0x606A, 0xABF2, 0x6064, 0xABF3, 0x6241, 0xABF4, 0x62DC, 0xABF5, 0x6316, + 0xABF6, 0x6309, 0xABF7, 0x62FC, 0xABF8, 0x62ED, 0xABF9, 0x6301, 0xABFA, 0x62EE, 0xABFB, 0x62FD, 0xABFC, 0x6307, 0xABFD, 0x62F1, + 0xABFE, 0x62F7, 0xAC40, 0x62EF, 0xAC41, 0x62EC, 0xAC42, 0x62FE, 0xAC43, 0x62F4, 0xAC44, 0x6311, 0xAC45, 0x6302, 0xAC46, 0x653F, + 0xAC47, 0x6545, 0xAC48, 0x65AB, 0xAC49, 0x65BD, 0xAC4A, 0x65E2, 0xAC4B, 0x6625, 0xAC4C, 0x662D, 0xAC4D, 0x6620, 0xAC4E, 0x6627, + 0xAC4F, 0x662F, 0xAC50, 0x661F, 0xAC51, 0x6628, 0xAC52, 0x6631, 0xAC53, 0x6624, 0xAC54, 0x66F7, 0xAC55, 0x67FF, 0xAC56, 0x67D3, + 0xAC57, 0x67F1, 0xAC58, 0x67D4, 0xAC59, 0x67D0, 0xAC5A, 0x67EC, 0xAC5B, 0x67B6, 0xAC5C, 0x67AF, 0xAC5D, 0x67F5, 0xAC5E, 0x67E9, + 0xAC5F, 0x67EF, 0xAC60, 0x67C4, 0xAC61, 0x67D1, 0xAC62, 0x67B4, 0xAC63, 0x67DA, 0xAC64, 0x67E5, 0xAC65, 0x67B8, 0xAC66, 0x67CF, + 0xAC67, 0x67DE, 0xAC68, 0x67F3, 0xAC69, 0x67B0, 0xAC6A, 0x67D9, 0xAC6B, 0x67E2, 0xAC6C, 0x67DD, 0xAC6D, 0x67D2, 0xAC6E, 0x6B6A, + 0xAC6F, 0x6B83, 0xAC70, 0x6B86, 0xAC71, 0x6BB5, 0xAC72, 0x6BD2, 0xAC73, 0x6BD7, 0xAC74, 0x6C1F, 0xAC75, 0x6CC9, 0xAC76, 0x6D0B, + 0xAC77, 0x6D32, 0xAC78, 0x6D2A, 0xAC79, 0x6D41, 0xAC7A, 0x6D25, 0xAC7B, 0x6D0C, 0xAC7C, 0x6D31, 0xAC7D, 0x6D1E, 0xAC7E, 0x6D17, + 0xACA1, 0x6D3B, 0xACA2, 0x6D3D, 0xACA3, 0x6D3E, 0xACA4, 0x6D36, 0xACA5, 0x6D1B, 0xACA6, 0x6CF5, 0xACA7, 0x6D39, 0xACA8, 0x6D27, + 0xACA9, 0x6D38, 0xACAA, 0x6D29, 0xACAB, 0x6D2E, 0xACAC, 0x6D35, 0xACAD, 0x6D0E, 0xACAE, 0x6D2B, 0xACAF, 0x70AB, 0xACB0, 0x70BA, + 0xACB1, 0x70B3, 0xACB2, 0x70AC, 0xACB3, 0x70AF, 0xACB4, 0x70AD, 0xACB5, 0x70B8, 0xACB6, 0x70AE, 0xACB7, 0x70A4, 0xACB8, 0x7230, + 0xACB9, 0x7272, 0xACBA, 0x726F, 0xACBB, 0x7274, 0xACBC, 0x72E9, 0xACBD, 0x72E0, 0xACBE, 0x72E1, 0xACBF, 0x73B7, 0xACC0, 0x73CA, + 0xACC1, 0x73BB, 0xACC2, 0x73B2, 0xACC3, 0x73CD, 0xACC4, 0x73C0, 0xACC5, 0x73B3, 0xACC6, 0x751A, 0xACC7, 0x752D, 0xACC8, 0x754F, + 0xACC9, 0x754C, 0xACCA, 0x754E, 0xACCB, 0x754B, 0xACCC, 0x75AB, 0xACCD, 0x75A4, 0xACCE, 0x75A5, 0xACCF, 0x75A2, 0xACD0, 0x75A3, + 0xACD1, 0x7678, 0xACD2, 0x7686, 0xACD3, 0x7687, 0xACD4, 0x7688, 0xACD5, 0x76C8, 0xACD6, 0x76C6, 0xACD7, 0x76C3, 0xACD8, 0x76C5, + 0xACD9, 0x7701, 0xACDA, 0x76F9, 0xACDB, 0x76F8, 0xACDC, 0x7709, 0xACDD, 0x770B, 0xACDE, 0x76FE, 0xACDF, 0x76FC, 0xACE0, 0x7707, + 0xACE1, 0x77DC, 0xACE2, 0x7802, 0xACE3, 0x7814, 0xACE4, 0x780C, 0xACE5, 0x780D, 0xACE6, 0x7946, 0xACE7, 0x7949, 0xACE8, 0x7948, + 0xACE9, 0x7947, 0xACEA, 0x79B9, 0xACEB, 0x79BA, 0xACEC, 0x79D1, 0xACED, 0x79D2, 0xACEE, 0x79CB, 0xACEF, 0x7A7F, 0xACF0, 0x7A81, + 0xACF1, 0x7AFF, 0xACF2, 0x7AFD, 0xACF3, 0x7C7D, 0xACF4, 0x7D02, 0xACF5, 0x7D05, 0xACF6, 0x7D00, 0xACF7, 0x7D09, 0xACF8, 0x7D07, + 0xACF9, 0x7D04, 0xACFA, 0x7D06, 0xACFB, 0x7F38, 0xACFC, 0x7F8E, 0xACFD, 0x7FBF, 0xACFE, 0x8004, 0xAD40, 0x8010, 0xAD41, 0x800D, + 0xAD42, 0x8011, 0xAD43, 0x8036, 0xAD44, 0x80D6, 0xAD45, 0x80E5, 0xAD46, 0x80DA, 0xAD47, 0x80C3, 0xAD48, 0x80C4, 0xAD49, 0x80CC, + 0xAD4A, 0x80E1, 0xAD4B, 0x80DB, 0xAD4C, 0x80CE, 0xAD4D, 0x80DE, 0xAD4E, 0x80E4, 0xAD4F, 0x80DD, 0xAD50, 0x81F4, 0xAD51, 0x8222, + 0xAD52, 0x82E7, 0xAD53, 0x8303, 0xAD54, 0x8305, 0xAD55, 0x82E3, 0xAD56, 0x82DB, 0xAD57, 0x82E6, 0xAD58, 0x8304, 0xAD59, 0x82E5, + 0xAD5A, 0x8302, 0xAD5B, 0x8309, 0xAD5C, 0x82D2, 0xAD5D, 0x82D7, 0xAD5E, 0x82F1, 0xAD5F, 0x8301, 0xAD60, 0x82DC, 0xAD61, 0x82D4, + 0xAD62, 0x82D1, 0xAD63, 0x82DE, 0xAD64, 0x82D3, 0xAD65, 0x82DF, 0xAD66, 0x82EF, 0xAD67, 0x8306, 0xAD68, 0x8650, 0xAD69, 0x8679, + 0xAD6A, 0x867B, 0xAD6B, 0x867A, 0xAD6C, 0x884D, 0xAD6D, 0x886B, 0xAD6E, 0x8981, 0xAD6F, 0x89D4, 0xAD70, 0x8A08, 0xAD71, 0x8A02, + 0xAD72, 0x8A03, 0xAD73, 0x8C9E, 0xAD74, 0x8CA0, 0xAD75, 0x8D74, 0xAD76, 0x8D73, 0xAD77, 0x8DB4, 0xAD78, 0x8ECD, 0xAD79, 0x8ECC, + 0xAD7A, 0x8FF0, 0xAD7B, 0x8FE6, 0xAD7C, 0x8FE2, 0xAD7D, 0x8FEA, 0xAD7E, 0x8FE5, 0xADA1, 0x8FED, 0xADA2, 0x8FEB, 0xADA3, 0x8FE4, + 0xADA4, 0x8FE8, 0xADA5, 0x90CA, 0xADA6, 0x90CE, 0xADA7, 0x90C1, 0xADA8, 0x90C3, 0xADA9, 0x914B, 0xADAA, 0x914A, 0xADAB, 0x91CD, + 0xADAC, 0x9582, 0xADAD, 0x9650, 0xADAE, 0x964B, 0xADAF, 0x964C, 0xADB0, 0x964D, 0xADB1, 0x9762, 0xADB2, 0x9769, 0xADB3, 0x97CB, + 0xADB4, 0x97ED, 0xADB5, 0x97F3, 0xADB6, 0x9801, 0xADB7, 0x98A8, 0xADB8, 0x98DB, 0xADB9, 0x98DF, 0xADBA, 0x9996, 0xADBB, 0x9999, + 0xADBC, 0x4E58, 0xADBD, 0x4EB3, 0xADBE, 0x500C, 0xADBF, 0x500D, 0xADC0, 0x5023, 0xADC1, 0x4FEF, 0xADC2, 0x5026, 0xADC3, 0x5025, + 0xADC4, 0x4FF8, 0xADC5, 0x5029, 0xADC6, 0x5016, 0xADC7, 0x5006, 0xADC8, 0x503C, 0xADC9, 0x501F, 0xADCA, 0x501A, 0xADCB, 0x5012, + 0xADCC, 0x5011, 0xADCD, 0x4FFA, 0xADCE, 0x5000, 0xADCF, 0x5014, 0xADD0, 0x5028, 0xADD1, 0x4FF1, 0xADD2, 0x5021, 0xADD3, 0x500B, + 0xADD4, 0x5019, 0xADD5, 0x5018, 0xADD6, 0x4FF3, 0xADD7, 0x4FEE, 0xADD8, 0x502D, 0xADD9, 0x502A, 0xADDA, 0x4FFE, 0xADDB, 0x502B, + 0xADDC, 0x5009, 0xADDD, 0x517C, 0xADDE, 0x51A4, 0xADDF, 0x51A5, 0xADE0, 0x51A2, 0xADE1, 0x51CD, 0xADE2, 0x51CC, 0xADE3, 0x51C6, + 0xADE4, 0x51CB, 0xADE5, 0x5256, 0xADE6, 0x525C, 0xADE7, 0x5254, 0xADE8, 0x525B, 0xADE9, 0x525D, 0xADEA, 0x532A, 0xADEB, 0x537F, + 0xADEC, 0x539F, 0xADED, 0x539D, 0xADEE, 0x53DF, 0xADEF, 0x54E8, 0xADF0, 0x5510, 0xADF1, 0x5501, 0xADF2, 0x5537, 0xADF3, 0x54FC, + 0xADF4, 0x54E5, 0xADF5, 0x54F2, 0xADF6, 0x5506, 0xADF7, 0x54FA, 0xADF8, 0x5514, 0xADF9, 0x54E9, 0xADFA, 0x54ED, 0xADFB, 0x54E1, + 0xADFC, 0x5509, 0xADFD, 0x54EE, 0xADFE, 0x54EA, 0xAE40, 0x54E6, 0xAE41, 0x5527, 0xAE42, 0x5507, 0xAE43, 0x54FD, 0xAE44, 0x550F, + 0xAE45, 0x5703, 0xAE46, 0x5704, 0xAE47, 0x57C2, 0xAE48, 0x57D4, 0xAE49, 0x57CB, 0xAE4A, 0x57C3, 0xAE4B, 0x5809, 0xAE4C, 0x590F, + 0xAE4D, 0x5957, 0xAE4E, 0x5958, 0xAE4F, 0x595A, 0xAE50, 0x5A11, 0xAE51, 0x5A18, 0xAE52, 0x5A1C, 0xAE53, 0x5A1F, 0xAE54, 0x5A1B, + 0xAE55, 0x5A13, 0xAE56, 0x59EC, 0xAE57, 0x5A20, 0xAE58, 0x5A23, 0xAE59, 0x5A29, 0xAE5A, 0x5A25, 0xAE5B, 0x5A0C, 0xAE5C, 0x5A09, + 0xAE5D, 0x5B6B, 0xAE5E, 0x5C58, 0xAE5F, 0x5BB0, 0xAE60, 0x5BB3, 0xAE61, 0x5BB6, 0xAE62, 0x5BB4, 0xAE63, 0x5BAE, 0xAE64, 0x5BB5, + 0xAE65, 0x5BB9, 0xAE66, 0x5BB8, 0xAE67, 0x5C04, 0xAE68, 0x5C51, 0xAE69, 0x5C55, 0xAE6A, 0x5C50, 0xAE6B, 0x5CED, 0xAE6C, 0x5CFD, + 0xAE6D, 0x5CFB, 0xAE6E, 0x5CEA, 0xAE6F, 0x5CE8, 0xAE70, 0x5CF0, 0xAE71, 0x5CF6, 0xAE72, 0x5D01, 0xAE73, 0x5CF4, 0xAE74, 0x5DEE, + 0xAE75, 0x5E2D, 0xAE76, 0x5E2B, 0xAE77, 0x5EAB, 0xAE78, 0x5EAD, 0xAE79, 0x5EA7, 0xAE7A, 0x5F31, 0xAE7B, 0x5F92, 0xAE7C, 0x5F91, + 0xAE7D, 0x5F90, 0xAE7E, 0x6059, 0xAEA1, 0x6063, 0xAEA2, 0x6065, 0xAEA3, 0x6050, 0xAEA4, 0x6055, 0xAEA5, 0x606D, 0xAEA6, 0x6069, + 0xAEA7, 0x606F, 0xAEA8, 0x6084, 0xAEA9, 0x609F, 0xAEAA, 0x609A, 0xAEAB, 0x608D, 0xAEAC, 0x6094, 0xAEAD, 0x608C, 0xAEAE, 0x6085, + 0xAEAF, 0x6096, 0xAEB0, 0x6247, 0xAEB1, 0x62F3, 0xAEB2, 0x6308, 0xAEB3, 0x62FF, 0xAEB4, 0x634E, 0xAEB5, 0x633E, 0xAEB6, 0x632F, + 0xAEB7, 0x6355, 0xAEB8, 0x6342, 0xAEB9, 0x6346, 0xAEBA, 0x634F, 0xAEBB, 0x6349, 0xAEBC, 0x633A, 0xAEBD, 0x6350, 0xAEBE, 0x633D, + 0xAEBF, 0x632A, 0xAEC0, 0x632B, 0xAEC1, 0x6328, 0xAEC2, 0x634D, 0xAEC3, 0x634C, 0xAEC4, 0x6548, 0xAEC5, 0x6549, 0xAEC6, 0x6599, + 0xAEC7, 0x65C1, 0xAEC8, 0x65C5, 0xAEC9, 0x6642, 0xAECA, 0x6649, 0xAECB, 0x664F, 0xAECC, 0x6643, 0xAECD, 0x6652, 0xAECE, 0x664C, + 0xAECF, 0x6645, 0xAED0, 0x6641, 0xAED1, 0x66F8, 0xAED2, 0x6714, 0xAED3, 0x6715, 0xAED4, 0x6717, 0xAED5, 0x6821, 0xAED6, 0x6838, + 0xAED7, 0x6848, 0xAED8, 0x6846, 0xAED9, 0x6853, 0xAEDA, 0x6839, 0xAEDB, 0x6842, 0xAEDC, 0x6854, 0xAEDD, 0x6829, 0xAEDE, 0x68B3, + 0xAEDF, 0x6817, 0xAEE0, 0x684C, 0xAEE1, 0x6851, 0xAEE2, 0x683D, 0xAEE3, 0x67F4, 0xAEE4, 0x6850, 0xAEE5, 0x6840, 0xAEE6, 0x683C, + 0xAEE7, 0x6843, 0xAEE8, 0x682A, 0xAEE9, 0x6845, 0xAEEA, 0x6813, 0xAEEB, 0x6818, 0xAEEC, 0x6841, 0xAEED, 0x6B8A, 0xAEEE, 0x6B89, + 0xAEEF, 0x6BB7, 0xAEF0, 0x6C23, 0xAEF1, 0x6C27, 0xAEF2, 0x6C28, 0xAEF3, 0x6C26, 0xAEF4, 0x6C24, 0xAEF5, 0x6CF0, 0xAEF6, 0x6D6A, + 0xAEF7, 0x6D95, 0xAEF8, 0x6D88, 0xAEF9, 0x6D87, 0xAEFA, 0x6D66, 0xAEFB, 0x6D78, 0xAEFC, 0x6D77, 0xAEFD, 0x6D59, 0xAEFE, 0x6D93, + 0xAF40, 0x6D6C, 0xAF41, 0x6D89, 0xAF42, 0x6D6E, 0xAF43, 0x6D5A, 0xAF44, 0x6D74, 0xAF45, 0x6D69, 0xAF46, 0x6D8C, 0xAF47, 0x6D8A, + 0xAF48, 0x6D79, 0xAF49, 0x6D85, 0xAF4A, 0x6D65, 0xAF4B, 0x6D94, 0xAF4C, 0x70CA, 0xAF4D, 0x70D8, 0xAF4E, 0x70E4, 0xAF4F, 0x70D9, + 0xAF50, 0x70C8, 0xAF51, 0x70CF, 0xAF52, 0x7239, 0xAF53, 0x7279, 0xAF54, 0x72FC, 0xAF55, 0x72F9, 0xAF56, 0x72FD, 0xAF57, 0x72F8, + 0xAF58, 0x72F7, 0xAF59, 0x7386, 0xAF5A, 0x73ED, 0xAF5B, 0x7409, 0xAF5C, 0x73EE, 0xAF5D, 0x73E0, 0xAF5E, 0x73EA, 0xAF5F, 0x73DE, + 0xAF60, 0x7554, 0xAF61, 0x755D, 0xAF62, 0x755C, 0xAF63, 0x755A, 0xAF64, 0x7559, 0xAF65, 0x75BE, 0xAF66, 0x75C5, 0xAF67, 0x75C7, + 0xAF68, 0x75B2, 0xAF69, 0x75B3, 0xAF6A, 0x75BD, 0xAF6B, 0x75BC, 0xAF6C, 0x75B9, 0xAF6D, 0x75C2, 0xAF6E, 0x75B8, 0xAF6F, 0x768B, + 0xAF70, 0x76B0, 0xAF71, 0x76CA, 0xAF72, 0x76CD, 0xAF73, 0x76CE, 0xAF74, 0x7729, 0xAF75, 0x771F, 0xAF76, 0x7720, 0xAF77, 0x7728, + 0xAF78, 0x77E9, 0xAF79, 0x7830, 0xAF7A, 0x7827, 0xAF7B, 0x7838, 0xAF7C, 0x781D, 0xAF7D, 0x7834, 0xAF7E, 0x7837, 0xAFA1, 0x7825, + 0xAFA2, 0x782D, 0xAFA3, 0x7820, 0xAFA4, 0x781F, 0xAFA5, 0x7832, 0xAFA6, 0x7955, 0xAFA7, 0x7950, 0xAFA8, 0x7960, 0xAFA9, 0x795F, + 0xAFAA, 0x7956, 0xAFAB, 0x795E, 0xAFAC, 0x795D, 0xAFAD, 0x7957, 0xAFAE, 0x795A, 0xAFAF, 0x79E4, 0xAFB0, 0x79E3, 0xAFB1, 0x79E7, + 0xAFB2, 0x79DF, 0xAFB3, 0x79E6, 0xAFB4, 0x79E9, 0xAFB5, 0x79D8, 0xAFB6, 0x7A84, 0xAFB7, 0x7A88, 0xAFB8, 0x7AD9, 0xAFB9, 0x7B06, + 0xAFBA, 0x7B11, 0xAFBB, 0x7C89, 0xAFBC, 0x7D21, 0xAFBD, 0x7D17, 0xAFBE, 0x7D0B, 0xAFBF, 0x7D0A, 0xAFC0, 0x7D20, 0xAFC1, 0x7D22, + 0xAFC2, 0x7D14, 0xAFC3, 0x7D10, 0xAFC4, 0x7D15, 0xAFC5, 0x7D1A, 0xAFC6, 0x7D1C, 0xAFC7, 0x7D0D, 0xAFC8, 0x7D19, 0xAFC9, 0x7D1B, + 0xAFCA, 0x7F3A, 0xAFCB, 0x7F5F, 0xAFCC, 0x7F94, 0xAFCD, 0x7FC5, 0xAFCE, 0x7FC1, 0xAFCF, 0x8006, 0xAFD0, 0x8018, 0xAFD1, 0x8015, + 0xAFD2, 0x8019, 0xAFD3, 0x8017, 0xAFD4, 0x803D, 0xAFD5, 0x803F, 0xAFD6, 0x80F1, 0xAFD7, 0x8102, 0xAFD8, 0x80F0, 0xAFD9, 0x8105, + 0xAFDA, 0x80ED, 0xAFDB, 0x80F4, 0xAFDC, 0x8106, 0xAFDD, 0x80F8, 0xAFDE, 0x80F3, 0xAFDF, 0x8108, 0xAFE0, 0x80FD, 0xAFE1, 0x810A, + 0xAFE2, 0x80FC, 0xAFE3, 0x80EF, 0xAFE4, 0x81ED, 0xAFE5, 0x81EC, 0xAFE6, 0x8200, 0xAFE7, 0x8210, 0xAFE8, 0x822A, 0xAFE9, 0x822B, + 0xAFEA, 0x8228, 0xAFEB, 0x822C, 0xAFEC, 0x82BB, 0xAFED, 0x832B, 0xAFEE, 0x8352, 0xAFEF, 0x8354, 0xAFF0, 0x834A, 0xAFF1, 0x8338, + 0xAFF2, 0x8350, 0xAFF3, 0x8349, 0xAFF4, 0x8335, 0xAFF5, 0x8334, 0xAFF6, 0x834F, 0xAFF7, 0x8332, 0xAFF8, 0x8339, 0xAFF9, 0x8336, + 0xAFFA, 0x8317, 0xAFFB, 0x8340, 0xAFFC, 0x8331, 0xAFFD, 0x8328, 0xAFFE, 0x8343, 0xB040, 0x8654, 0xB041, 0x868A, 0xB042, 0x86AA, + 0xB043, 0x8693, 0xB044, 0x86A4, 0xB045, 0x86A9, 0xB046, 0x868C, 0xB047, 0x86A3, 0xB048, 0x869C, 0xB049, 0x8870, 0xB04A, 0x8877, + 0xB04B, 0x8881, 0xB04C, 0x8882, 0xB04D, 0x887D, 0xB04E, 0x8879, 0xB04F, 0x8A18, 0xB050, 0x8A10, 0xB051, 0x8A0E, 0xB052, 0x8A0C, + 0xB053, 0x8A15, 0xB054, 0x8A0A, 0xB055, 0x8A17, 0xB056, 0x8A13, 0xB057, 0x8A16, 0xB058, 0x8A0F, 0xB059, 0x8A11, 0xB05A, 0x8C48, + 0xB05B, 0x8C7A, 0xB05C, 0x8C79, 0xB05D, 0x8CA1, 0xB05E, 0x8CA2, 0xB05F, 0x8D77, 0xB060, 0x8EAC, 0xB061, 0x8ED2, 0xB062, 0x8ED4, + 0xB063, 0x8ECF, 0xB064, 0x8FB1, 0xB065, 0x9001, 0xB066, 0x9006, 0xB067, 0x8FF7, 0xB068, 0x9000, 0xB069, 0x8FFA, 0xB06A, 0x8FF4, + 0xB06B, 0x9003, 0xB06C, 0x8FFD, 0xB06D, 0x9005, 0xB06E, 0x8FF8, 0xB06F, 0x9095, 0xB070, 0x90E1, 0xB071, 0x90DD, 0xB072, 0x90E2, + 0xB073, 0x9152, 0xB074, 0x914D, 0xB075, 0x914C, 0xB076, 0x91D8, 0xB077, 0x91DD, 0xB078, 0x91D7, 0xB079, 0x91DC, 0xB07A, 0x91D9, + 0xB07B, 0x9583, 0xB07C, 0x9662, 0xB07D, 0x9663, 0xB07E, 0x9661, 0xB0A1, 0x965B, 0xB0A2, 0x965D, 0xB0A3, 0x9664, 0xB0A4, 0x9658, + 0xB0A5, 0x965E, 0xB0A6, 0x96BB, 0xB0A7, 0x98E2, 0xB0A8, 0x99AC, 0xB0A9, 0x9AA8, 0xB0AA, 0x9AD8, 0xB0AB, 0x9B25, 0xB0AC, 0x9B32, + 0xB0AD, 0x9B3C, 0xB0AE, 0x4E7E, 0xB0AF, 0x507A, 0xB0B0, 0x507D, 0xB0B1, 0x505C, 0xB0B2, 0x5047, 0xB0B3, 0x5043, 0xB0B4, 0x504C, + 0xB0B5, 0x505A, 0xB0B6, 0x5049, 0xB0B7, 0x5065, 0xB0B8, 0x5076, 0xB0B9, 0x504E, 0xB0BA, 0x5055, 0xB0BB, 0x5075, 0xB0BC, 0x5074, + 0xB0BD, 0x5077, 0xB0BE, 0x504F, 0xB0BF, 0x500F, 0xB0C0, 0x506F, 0xB0C1, 0x506D, 0xB0C2, 0x515C, 0xB0C3, 0x5195, 0xB0C4, 0x51F0, + 0xB0C5, 0x526A, 0xB0C6, 0x526F, 0xB0C7, 0x52D2, 0xB0C8, 0x52D9, 0xB0C9, 0x52D8, 0xB0CA, 0x52D5, 0xB0CB, 0x5310, 0xB0CC, 0x530F, + 0xB0CD, 0x5319, 0xB0CE, 0x533F, 0xB0CF, 0x5340, 0xB0D0, 0x533E, 0xB0D1, 0x53C3, 0xB0D2, 0x66FC, 0xB0D3, 0x5546, 0xB0D4, 0x556A, + 0xB0D5, 0x5566, 0xB0D6, 0x5544, 0xB0D7, 0x555E, 0xB0D8, 0x5561, 0xB0D9, 0x5543, 0xB0DA, 0x554A, 0xB0DB, 0x5531, 0xB0DC, 0x5556, + 0xB0DD, 0x554F, 0xB0DE, 0x5555, 0xB0DF, 0x552F, 0xB0E0, 0x5564, 0xB0E1, 0x5538, 0xB0E2, 0x552E, 0xB0E3, 0x555C, 0xB0E4, 0x552C, + 0xB0E5, 0x5563, 0xB0E6, 0x5533, 0xB0E7, 0x5541, 0xB0E8, 0x5557, 0xB0E9, 0x5708, 0xB0EA, 0x570B, 0xB0EB, 0x5709, 0xB0EC, 0x57DF, + 0xB0ED, 0x5805, 0xB0EE, 0x580A, 0xB0EF, 0x5806, 0xB0F0, 0x57E0, 0xB0F1, 0x57E4, 0xB0F2, 0x57FA, 0xB0F3, 0x5802, 0xB0F4, 0x5835, + 0xB0F5, 0x57F7, 0xB0F6, 0x57F9, 0xB0F7, 0x5920, 0xB0F8, 0x5962, 0xB0F9, 0x5A36, 0xB0FA, 0x5A41, 0xB0FB, 0x5A49, 0xB0FC, 0x5A66, + 0xB0FD, 0x5A6A, 0xB0FE, 0x5A40, 0xB140, 0x5A3C, 0xB141, 0x5A62, 0xB142, 0x5A5A, 0xB143, 0x5A46, 0xB144, 0x5A4A, 0xB145, 0x5B70, + 0xB146, 0x5BC7, 0xB147, 0x5BC5, 0xB148, 0x5BC4, 0xB149, 0x5BC2, 0xB14A, 0x5BBF, 0xB14B, 0x5BC6, 0xB14C, 0x5C09, 0xB14D, 0x5C08, + 0xB14E, 0x5C07, 0xB14F, 0x5C60, 0xB150, 0x5C5C, 0xB151, 0x5C5D, 0xB152, 0x5D07, 0xB153, 0x5D06, 0xB154, 0x5D0E, 0xB155, 0x5D1B, + 0xB156, 0x5D16, 0xB157, 0x5D22, 0xB158, 0x5D11, 0xB159, 0x5D29, 0xB15A, 0x5D14, 0xB15B, 0x5D19, 0xB15C, 0x5D24, 0xB15D, 0x5D27, + 0xB15E, 0x5D17, 0xB15F, 0x5DE2, 0xB160, 0x5E38, 0xB161, 0x5E36, 0xB162, 0x5E33, 0xB163, 0x5E37, 0xB164, 0x5EB7, 0xB165, 0x5EB8, + 0xB166, 0x5EB6, 0xB167, 0x5EB5, 0xB168, 0x5EBE, 0xB169, 0x5F35, 0xB16A, 0x5F37, 0xB16B, 0x5F57, 0xB16C, 0x5F6C, 0xB16D, 0x5F69, + 0xB16E, 0x5F6B, 0xB16F, 0x5F97, 0xB170, 0x5F99, 0xB171, 0x5F9E, 0xB172, 0x5F98, 0xB173, 0x5FA1, 0xB174, 0x5FA0, 0xB175, 0x5F9C, + 0xB176, 0x607F, 0xB177, 0x60A3, 0xB178, 0x6089, 0xB179, 0x60A0, 0xB17A, 0x60A8, 0xB17B, 0x60CB, 0xB17C, 0x60B4, 0xB17D, 0x60E6, + 0xB17E, 0x60BD, 0xB1A1, 0x60C5, 0xB1A2, 0x60BB, 0xB1A3, 0x60B5, 0xB1A4, 0x60DC, 0xB1A5, 0x60BC, 0xB1A6, 0x60D8, 0xB1A7, 0x60D5, + 0xB1A8, 0x60C6, 0xB1A9, 0x60DF, 0xB1AA, 0x60B8, 0xB1AB, 0x60DA, 0xB1AC, 0x60C7, 0xB1AD, 0x621A, 0xB1AE, 0x621B, 0xB1AF, 0x6248, + 0xB1B0, 0x63A0, 0xB1B1, 0x63A7, 0xB1B2, 0x6372, 0xB1B3, 0x6396, 0xB1B4, 0x63A2, 0xB1B5, 0x63A5, 0xB1B6, 0x6377, 0xB1B7, 0x6367, + 0xB1B8, 0x6398, 0xB1B9, 0x63AA, 0xB1BA, 0x6371, 0xB1BB, 0x63A9, 0xB1BC, 0x6389, 0xB1BD, 0x6383, 0xB1BE, 0x639B, 0xB1BF, 0x636B, + 0xB1C0, 0x63A8, 0xB1C1, 0x6384, 0xB1C2, 0x6388, 0xB1C3, 0x6399, 0xB1C4, 0x63A1, 0xB1C5, 0x63AC, 0xB1C6, 0x6392, 0xB1C7, 0x638F, + 0xB1C8, 0x6380, 0xB1C9, 0x637B, 0xB1CA, 0x6369, 0xB1CB, 0x6368, 0xB1CC, 0x637A, 0xB1CD, 0x655D, 0xB1CE, 0x6556, 0xB1CF, 0x6551, + 0xB1D0, 0x6559, 0xB1D1, 0x6557, 0xB1D2, 0x555F, 0xB1D3, 0x654F, 0xB1D4, 0x6558, 0xB1D5, 0x6555, 0xB1D6, 0x6554, 0xB1D7, 0x659C, + 0xB1D8, 0x659B, 0xB1D9, 0x65AC, 0xB1DA, 0x65CF, 0xB1DB, 0x65CB, 0xB1DC, 0x65CC, 0xB1DD, 0x65CE, 0xB1DE, 0x665D, 0xB1DF, 0x665A, + 0xB1E0, 0x6664, 0xB1E1, 0x6668, 0xB1E2, 0x6666, 0xB1E3, 0x665E, 0xB1E4, 0x66F9, 0xB1E5, 0x52D7, 0xB1E6, 0x671B, 0xB1E7, 0x6881, + 0xB1E8, 0x68AF, 0xB1E9, 0x68A2, 0xB1EA, 0x6893, 0xB1EB, 0x68B5, 0xB1EC, 0x687F, 0xB1ED, 0x6876, 0xB1EE, 0x68B1, 0xB1EF, 0x68A7, + 0xB1F0, 0x6897, 0xB1F1, 0x68B0, 0xB1F2, 0x6883, 0xB1F3, 0x68C4, 0xB1F4, 0x68AD, 0xB1F5, 0x6886, 0xB1F6, 0x6885, 0xB1F7, 0x6894, + 0xB1F8, 0x689D, 0xB1F9, 0x68A8, 0xB1FA, 0x689F, 0xB1FB, 0x68A1, 0xB1FC, 0x6882, 0xB1FD, 0x6B32, 0xB1FE, 0x6BBA, 0xB240, 0x6BEB, + 0xB241, 0x6BEC, 0xB242, 0x6C2B, 0xB243, 0x6D8E, 0xB244, 0x6DBC, 0xB245, 0x6DF3, 0xB246, 0x6DD9, 0xB247, 0x6DB2, 0xB248, 0x6DE1, + 0xB249, 0x6DCC, 0xB24A, 0x6DE4, 0xB24B, 0x6DFB, 0xB24C, 0x6DFA, 0xB24D, 0x6E05, 0xB24E, 0x6DC7, 0xB24F, 0x6DCB, 0xB250, 0x6DAF, + 0xB251, 0x6DD1, 0xB252, 0x6DAE, 0xB253, 0x6DDE, 0xB254, 0x6DF9, 0xB255, 0x6DB8, 0xB256, 0x6DF7, 0xB257, 0x6DF5, 0xB258, 0x6DC5, + 0xB259, 0x6DD2, 0xB25A, 0x6E1A, 0xB25B, 0x6DB5, 0xB25C, 0x6DDA, 0xB25D, 0x6DEB, 0xB25E, 0x6DD8, 0xB25F, 0x6DEA, 0xB260, 0x6DF1, + 0xB261, 0x6DEE, 0xB262, 0x6DE8, 0xB263, 0x6DC6, 0xB264, 0x6DC4, 0xB265, 0x6DAA, 0xB266, 0x6DEC, 0xB267, 0x6DBF, 0xB268, 0x6DE6, + 0xB269, 0x70F9, 0xB26A, 0x7109, 0xB26B, 0x710A, 0xB26C, 0x70FD, 0xB26D, 0x70EF, 0xB26E, 0x723D, 0xB26F, 0x727D, 0xB270, 0x7281, + 0xB271, 0x731C, 0xB272, 0x731B, 0xB273, 0x7316, 0xB274, 0x7313, 0xB275, 0x7319, 0xB276, 0x7387, 0xB277, 0x7405, 0xB278, 0x740A, + 0xB279, 0x7403, 0xB27A, 0x7406, 0xB27B, 0x73FE, 0xB27C, 0x740D, 0xB27D, 0x74E0, 0xB27E, 0x74F6, 0xB2A1, 0x74F7, 0xB2A2, 0x751C, + 0xB2A3, 0x7522, 0xB2A4, 0x7565, 0xB2A5, 0x7566, 0xB2A6, 0x7562, 0xB2A7, 0x7570, 0xB2A8, 0x758F, 0xB2A9, 0x75D4, 0xB2AA, 0x75D5, + 0xB2AB, 0x75B5, 0xB2AC, 0x75CA, 0xB2AD, 0x75CD, 0xB2AE, 0x768E, 0xB2AF, 0x76D4, 0xB2B0, 0x76D2, 0xB2B1, 0x76DB, 0xB2B2, 0x7737, + 0xB2B3, 0x773E, 0xB2B4, 0x773C, 0xB2B5, 0x7736, 0xB2B6, 0x7738, 0xB2B7, 0x773A, 0xB2B8, 0x786B, 0xB2B9, 0x7843, 0xB2BA, 0x784E, + 0xB2BB, 0x7965, 0xB2BC, 0x7968, 0xB2BD, 0x796D, 0xB2BE, 0x79FB, 0xB2BF, 0x7A92, 0xB2C0, 0x7A95, 0xB2C1, 0x7B20, 0xB2C2, 0x7B28, + 0xB2C3, 0x7B1B, 0xB2C4, 0x7B2C, 0xB2C5, 0x7B26, 0xB2C6, 0x7B19, 0xB2C7, 0x7B1E, 0xB2C8, 0x7B2E, 0xB2C9, 0x7C92, 0xB2CA, 0x7C97, + 0xB2CB, 0x7C95, 0xB2CC, 0x7D46, 0xB2CD, 0x7D43, 0xB2CE, 0x7D71, 0xB2CF, 0x7D2E, 0xB2D0, 0x7D39, 0xB2D1, 0x7D3C, 0xB2D2, 0x7D40, + 0xB2D3, 0x7D30, 0xB2D4, 0x7D33, 0xB2D5, 0x7D44, 0xB2D6, 0x7D2F, 0xB2D7, 0x7D42, 0xB2D8, 0x7D32, 0xB2D9, 0x7D31, 0xB2DA, 0x7F3D, + 0xB2DB, 0x7F9E, 0xB2DC, 0x7F9A, 0xB2DD, 0x7FCC, 0xB2DE, 0x7FCE, 0xB2DF, 0x7FD2, 0xB2E0, 0x801C, 0xB2E1, 0x804A, 0xB2E2, 0x8046, + 0xB2E3, 0x812F, 0xB2E4, 0x8116, 0xB2E5, 0x8123, 0xB2E6, 0x812B, 0xB2E7, 0x8129, 0xB2E8, 0x8130, 0xB2E9, 0x8124, 0xB2EA, 0x8202, + 0xB2EB, 0x8235, 0xB2EC, 0x8237, 0xB2ED, 0x8236, 0xB2EE, 0x8239, 0xB2EF, 0x838E, 0xB2F0, 0x839E, 0xB2F1, 0x8398, 0xB2F2, 0x8378, + 0xB2F3, 0x83A2, 0xB2F4, 0x8396, 0xB2F5, 0x83BD, 0xB2F6, 0x83AB, 0xB2F7, 0x8392, 0xB2F8, 0x838A, 0xB2F9, 0x8393, 0xB2FA, 0x8389, + 0xB2FB, 0x83A0, 0xB2FC, 0x8377, 0xB2FD, 0x837B, 0xB2FE, 0x837C, 0xB340, 0x8386, 0xB341, 0x83A7, 0xB342, 0x8655, 0xB343, 0x5F6A, + 0xB344, 0x86C7, 0xB345, 0x86C0, 0xB346, 0x86B6, 0xB347, 0x86C4, 0xB348, 0x86B5, 0xB349, 0x86C6, 0xB34A, 0x86CB, 0xB34B, 0x86B1, + 0xB34C, 0x86AF, 0xB34D, 0x86C9, 0xB34E, 0x8853, 0xB34F, 0x889E, 0xB350, 0x8888, 0xB351, 0x88AB, 0xB352, 0x8892, 0xB353, 0x8896, + 0xB354, 0x888D, 0xB355, 0x888B, 0xB356, 0x8993, 0xB357, 0x898F, 0xB358, 0x8A2A, 0xB359, 0x8A1D, 0xB35A, 0x8A23, 0xB35B, 0x8A25, + 0xB35C, 0x8A31, 0xB35D, 0x8A2D, 0xB35E, 0x8A1F, 0xB35F, 0x8A1B, 0xB360, 0x8A22, 0xB361, 0x8C49, 0xB362, 0x8C5A, 0xB363, 0x8CA9, + 0xB364, 0x8CAC, 0xB365, 0x8CAB, 0xB366, 0x8CA8, 0xB367, 0x8CAA, 0xB368, 0x8CA7, 0xB369, 0x8D67, 0xB36A, 0x8D66, 0xB36B, 0x8DBE, + 0xB36C, 0x8DBA, 0xB36D, 0x8EDB, 0xB36E, 0x8EDF, 0xB36F, 0x9019, 0xB370, 0x900D, 0xB371, 0x901A, 0xB372, 0x9017, 0xB373, 0x9023, + 0xB374, 0x901F, 0xB375, 0x901D, 0xB376, 0x9010, 0xB377, 0x9015, 0xB378, 0x901E, 0xB379, 0x9020, 0xB37A, 0x900F, 0xB37B, 0x9022, + 0xB37C, 0x9016, 0xB37D, 0x901B, 0xB37E, 0x9014, 0xB3A1, 0x90E8, 0xB3A2, 0x90ED, 0xB3A3, 0x90FD, 0xB3A4, 0x9157, 0xB3A5, 0x91CE, + 0xB3A6, 0x91F5, 0xB3A7, 0x91E6, 0xB3A8, 0x91E3, 0xB3A9, 0x91E7, 0xB3AA, 0x91ED, 0xB3AB, 0x91E9, 0xB3AC, 0x9589, 0xB3AD, 0x966A, + 0xB3AE, 0x9675, 0xB3AF, 0x9673, 0xB3B0, 0x9678, 0xB3B1, 0x9670, 0xB3B2, 0x9674, 0xB3B3, 0x9676, 0xB3B4, 0x9677, 0xB3B5, 0x966C, + 0xB3B6, 0x96C0, 0xB3B7, 0x96EA, 0xB3B8, 0x96E9, 0xB3B9, 0x7AE0, 0xB3BA, 0x7ADF, 0xB3BB, 0x9802, 0xB3BC, 0x9803, 0xB3BD, 0x9B5A, + 0xB3BE, 0x9CE5, 0xB3BF, 0x9E75, 0xB3C0, 0x9E7F, 0xB3C1, 0x9EA5, 0xB3C2, 0x9EBB, 0xB3C3, 0x50A2, 0xB3C4, 0x508D, 0xB3C5, 0x5085, + 0xB3C6, 0x5099, 0xB3C7, 0x5091, 0xB3C8, 0x5080, 0xB3C9, 0x5096, 0xB3CA, 0x5098, 0xB3CB, 0x509A, 0xB3CC, 0x6700, 0xB3CD, 0x51F1, + 0xB3CE, 0x5272, 0xB3CF, 0x5274, 0xB3D0, 0x5275, 0xB3D1, 0x5269, 0xB3D2, 0x52DE, 0xB3D3, 0x52DD, 0xB3D4, 0x52DB, 0xB3D5, 0x535A, + 0xB3D6, 0x53A5, 0xB3D7, 0x557B, 0xB3D8, 0x5580, 0xB3D9, 0x55A7, 0xB3DA, 0x557C, 0xB3DB, 0x558A, 0xB3DC, 0x559D, 0xB3DD, 0x5598, + 0xB3DE, 0x5582, 0xB3DF, 0x559C, 0xB3E0, 0x55AA, 0xB3E1, 0x5594, 0xB3E2, 0x5587, 0xB3E3, 0x558B, 0xB3E4, 0x5583, 0xB3E5, 0x55B3, + 0xB3E6, 0x55AE, 0xB3E7, 0x559F, 0xB3E8, 0x553E, 0xB3E9, 0x55B2, 0xB3EA, 0x559A, 0xB3EB, 0x55BB, 0xB3EC, 0x55AC, 0xB3ED, 0x55B1, + 0xB3EE, 0x557E, 0xB3EF, 0x5589, 0xB3F0, 0x55AB, 0xB3F1, 0x5599, 0xB3F2, 0x570D, 0xB3F3, 0x582F, 0xB3F4, 0x582A, 0xB3F5, 0x5834, + 0xB3F6, 0x5824, 0xB3F7, 0x5830, 0xB3F8, 0x5831, 0xB3F9, 0x5821, 0xB3FA, 0x581D, 0xB3FB, 0x5820, 0xB3FC, 0x58F9, 0xB3FD, 0x58FA, + 0xB3FE, 0x5960, 0xB440, 0x5A77, 0xB441, 0x5A9A, 0xB442, 0x5A7F, 0xB443, 0x5A92, 0xB444, 0x5A9B, 0xB445, 0x5AA7, 0xB446, 0x5B73, + 0xB447, 0x5B71, 0xB448, 0x5BD2, 0xB449, 0x5BCC, 0xB44A, 0x5BD3, 0xB44B, 0x5BD0, 0xB44C, 0x5C0A, 0xB44D, 0x5C0B, 0xB44E, 0x5C31, + 0xB44F, 0x5D4C, 0xB450, 0x5D50, 0xB451, 0x5D34, 0xB452, 0x5D47, 0xB453, 0x5DFD, 0xB454, 0x5E45, 0xB455, 0x5E3D, 0xB456, 0x5E40, + 0xB457, 0x5E43, 0xB458, 0x5E7E, 0xB459, 0x5ECA, 0xB45A, 0x5EC1, 0xB45B, 0x5EC2, 0xB45C, 0x5EC4, 0xB45D, 0x5F3C, 0xB45E, 0x5F6D, + 0xB45F, 0x5FA9, 0xB460, 0x5FAA, 0xB461, 0x5FA8, 0xB462, 0x60D1, 0xB463, 0x60E1, 0xB464, 0x60B2, 0xB465, 0x60B6, 0xB466, 0x60E0, + 0xB467, 0x611C, 0xB468, 0x6123, 0xB469, 0x60FA, 0xB46A, 0x6115, 0xB46B, 0x60F0, 0xB46C, 0x60FB, 0xB46D, 0x60F4, 0xB46E, 0x6168, + 0xB46F, 0x60F1, 0xB470, 0x610E, 0xB471, 0x60F6, 0xB472, 0x6109, 0xB473, 0x6100, 0xB474, 0x6112, 0xB475, 0x621F, 0xB476, 0x6249, + 0xB477, 0x63A3, 0xB478, 0x638C, 0xB479, 0x63CF, 0xB47A, 0x63C0, 0xB47B, 0x63E9, 0xB47C, 0x63C9, 0xB47D, 0x63C6, 0xB47E, 0x63CD, + 0xB4A1, 0x63D2, 0xB4A2, 0x63E3, 0xB4A3, 0x63D0, 0xB4A4, 0x63E1, 0xB4A5, 0x63D6, 0xB4A6, 0x63ED, 0xB4A7, 0x63EE, 0xB4A8, 0x6376, + 0xB4A9, 0x63F4, 0xB4AA, 0x63EA, 0xB4AB, 0x63DB, 0xB4AC, 0x6452, 0xB4AD, 0x63DA, 0xB4AE, 0x63F9, 0xB4AF, 0x655E, 0xB4B0, 0x6566, + 0xB4B1, 0x6562, 0xB4B2, 0x6563, 0xB4B3, 0x6591, 0xB4B4, 0x6590, 0xB4B5, 0x65AF, 0xB4B6, 0x666E, 0xB4B7, 0x6670, 0xB4B8, 0x6674, + 0xB4B9, 0x6676, 0xB4BA, 0x666F, 0xB4BB, 0x6691, 0xB4BC, 0x667A, 0xB4BD, 0x667E, 0xB4BE, 0x6677, 0xB4BF, 0x66FE, 0xB4C0, 0x66FF, + 0xB4C1, 0x671F, 0xB4C2, 0x671D, 0xB4C3, 0x68FA, 0xB4C4, 0x68D5, 0xB4C5, 0x68E0, 0xB4C6, 0x68D8, 0xB4C7, 0x68D7, 0xB4C8, 0x6905, + 0xB4C9, 0x68DF, 0xB4CA, 0x68F5, 0xB4CB, 0x68EE, 0xB4CC, 0x68E7, 0xB4CD, 0x68F9, 0xB4CE, 0x68D2, 0xB4CF, 0x68F2, 0xB4D0, 0x68E3, + 0xB4D1, 0x68CB, 0xB4D2, 0x68CD, 0xB4D3, 0x690D, 0xB4D4, 0x6912, 0xB4D5, 0x690E, 0xB4D6, 0x68C9, 0xB4D7, 0x68DA, 0xB4D8, 0x696E, + 0xB4D9, 0x68FB, 0xB4DA, 0x6B3E, 0xB4DB, 0x6B3A, 0xB4DC, 0x6B3D, 0xB4DD, 0x6B98, 0xB4DE, 0x6B96, 0xB4DF, 0x6BBC, 0xB4E0, 0x6BEF, + 0xB4E1, 0x6C2E, 0xB4E2, 0x6C2F, 0xB4E3, 0x6C2C, 0xB4E4, 0x6E2F, 0xB4E5, 0x6E38, 0xB4E6, 0x6E54, 0xB4E7, 0x6E21, 0xB4E8, 0x6E32, + 0xB4E9, 0x6E67, 0xB4EA, 0x6E4A, 0xB4EB, 0x6E20, 0xB4EC, 0x6E25, 0xB4ED, 0x6E23, 0xB4EE, 0x6E1B, 0xB4EF, 0x6E5B, 0xB4F0, 0x6E58, + 0xB4F1, 0x6E24, 0xB4F2, 0x6E56, 0xB4F3, 0x6E6E, 0xB4F4, 0x6E2D, 0xB4F5, 0x6E26, 0xB4F6, 0x6E6F, 0xB4F7, 0x6E34, 0xB4F8, 0x6E4D, + 0xB4F9, 0x6E3A, 0xB4FA, 0x6E2C, 0xB4FB, 0x6E43, 0xB4FC, 0x6E1D, 0xB4FD, 0x6E3E, 0xB4FE, 0x6ECB, 0xB540, 0x6E89, 0xB541, 0x6E19, + 0xB542, 0x6E4E, 0xB543, 0x6E63, 0xB544, 0x6E44, 0xB545, 0x6E72, 0xB546, 0x6E69, 0xB547, 0x6E5F, 0xB548, 0x7119, 0xB549, 0x711A, + 0xB54A, 0x7126, 0xB54B, 0x7130, 0xB54C, 0x7121, 0xB54D, 0x7136, 0xB54E, 0x716E, 0xB54F, 0x711C, 0xB550, 0x724C, 0xB551, 0x7284, + 0xB552, 0x7280, 0xB553, 0x7336, 0xB554, 0x7325, 0xB555, 0x7334, 0xB556, 0x7329, 0xB557, 0x743A, 0xB558, 0x742A, 0xB559, 0x7433, + 0xB55A, 0x7422, 0xB55B, 0x7425, 0xB55C, 0x7435, 0xB55D, 0x7436, 0xB55E, 0x7434, 0xB55F, 0x742F, 0xB560, 0x741B, 0xB561, 0x7426, + 0xB562, 0x7428, 0xB563, 0x7525, 0xB564, 0x7526, 0xB565, 0x756B, 0xB566, 0x756A, 0xB567, 0x75E2, 0xB568, 0x75DB, 0xB569, 0x75E3, + 0xB56A, 0x75D9, 0xB56B, 0x75D8, 0xB56C, 0x75DE, 0xB56D, 0x75E0, 0xB56E, 0x767B, 0xB56F, 0x767C, 0xB570, 0x7696, 0xB571, 0x7693, + 0xB572, 0x76B4, 0xB573, 0x76DC, 0xB574, 0x774F, 0xB575, 0x77ED, 0xB576, 0x785D, 0xB577, 0x786C, 0xB578, 0x786F, 0xB579, 0x7A0D, + 0xB57A, 0x7A08, 0xB57B, 0x7A0B, 0xB57C, 0x7A05, 0xB57D, 0x7A00, 0xB57E, 0x7A98, 0xB5A1, 0x7A97, 0xB5A2, 0x7A96, 0xB5A3, 0x7AE5, + 0xB5A4, 0x7AE3, 0xB5A5, 0x7B49, 0xB5A6, 0x7B56, 0xB5A7, 0x7B46, 0xB5A8, 0x7B50, 0xB5A9, 0x7B52, 0xB5AA, 0x7B54, 0xB5AB, 0x7B4D, + 0xB5AC, 0x7B4B, 0xB5AD, 0x7B4F, 0xB5AE, 0x7B51, 0xB5AF, 0x7C9F, 0xB5B0, 0x7CA5, 0xB5B1, 0x7D5E, 0xB5B2, 0x7D50, 0xB5B3, 0x7D68, + 0xB5B4, 0x7D55, 0xB5B5, 0x7D2B, 0xB5B6, 0x7D6E, 0xB5B7, 0x7D72, 0xB5B8, 0x7D61, 0xB5B9, 0x7D66, 0xB5BA, 0x7D62, 0xB5BB, 0x7D70, + 0xB5BC, 0x7D73, 0xB5BD, 0x5584, 0xB5BE, 0x7FD4, 0xB5BF, 0x7FD5, 0xB5C0, 0x800B, 0xB5C1, 0x8052, 0xB5C2, 0x8085, 0xB5C3, 0x8155, + 0xB5C4, 0x8154, 0xB5C5, 0x814B, 0xB5C6, 0x8151, 0xB5C7, 0x814E, 0xB5C8, 0x8139, 0xB5C9, 0x8146, 0xB5CA, 0x813E, 0xB5CB, 0x814C, + 0xB5CC, 0x8153, 0xB5CD, 0x8174, 0xB5CE, 0x8212, 0xB5CF, 0x821C, 0xB5D0, 0x83E9, 0xB5D1, 0x8403, 0xB5D2, 0x83F8, 0xB5D3, 0x840D, + 0xB5D4, 0x83E0, 0xB5D5, 0x83C5, 0xB5D6, 0x840B, 0xB5D7, 0x83C1, 0xB5D8, 0x83EF, 0xB5D9, 0x83F1, 0xB5DA, 0x83F4, 0xB5DB, 0x8457, + 0xB5DC, 0x840A, 0xB5DD, 0x83F0, 0xB5DE, 0x840C, 0xB5DF, 0x83CC, 0xB5E0, 0x83FD, 0xB5E1, 0x83F2, 0xB5E2, 0x83CA, 0xB5E3, 0x8438, + 0xB5E4, 0x840E, 0xB5E5, 0x8404, 0xB5E6, 0x83DC, 0xB5E7, 0x8407, 0xB5E8, 0x83D4, 0xB5E9, 0x83DF, 0xB5EA, 0x865B, 0xB5EB, 0x86DF, + 0xB5EC, 0x86D9, 0xB5ED, 0x86ED, 0xB5EE, 0x86D4, 0xB5EF, 0x86DB, 0xB5F0, 0x86E4, 0xB5F1, 0x86D0, 0xB5F2, 0x86DE, 0xB5F3, 0x8857, + 0xB5F4, 0x88C1, 0xB5F5, 0x88C2, 0xB5F6, 0x88B1, 0xB5F7, 0x8983, 0xB5F8, 0x8996, 0xB5F9, 0x8A3B, 0xB5FA, 0x8A60, 0xB5FB, 0x8A55, + 0xB5FC, 0x8A5E, 0xB5FD, 0x8A3C, 0xB5FE, 0x8A41, 0xB640, 0x8A54, 0xB641, 0x8A5B, 0xB642, 0x8A50, 0xB643, 0x8A46, 0xB644, 0x8A34, + 0xB645, 0x8A3A, 0xB646, 0x8A36, 0xB647, 0x8A56, 0xB648, 0x8C61, 0xB649, 0x8C82, 0xB64A, 0x8CAF, 0xB64B, 0x8CBC, 0xB64C, 0x8CB3, + 0xB64D, 0x8CBD, 0xB64E, 0x8CC1, 0xB64F, 0x8CBB, 0xB650, 0x8CC0, 0xB651, 0x8CB4, 0xB652, 0x8CB7, 0xB653, 0x8CB6, 0xB654, 0x8CBF, + 0xB655, 0x8CB8, 0xB656, 0x8D8A, 0xB657, 0x8D85, 0xB658, 0x8D81, 0xB659, 0x8DCE, 0xB65A, 0x8DDD, 0xB65B, 0x8DCB, 0xB65C, 0x8DDA, + 0xB65D, 0x8DD1, 0xB65E, 0x8DCC, 0xB65F, 0x8DDB, 0xB660, 0x8DC6, 0xB661, 0x8EFB, 0xB662, 0x8EF8, 0xB663, 0x8EFC, 0xB664, 0x8F9C, + 0xB665, 0x902E, 0xB666, 0x9035, 0xB667, 0x9031, 0xB668, 0x9038, 0xB669, 0x9032, 0xB66A, 0x9036, 0xB66B, 0x9102, 0xB66C, 0x90F5, + 0xB66D, 0x9109, 0xB66E, 0x90FE, 0xB66F, 0x9163, 0xB670, 0x9165, 0xB671, 0x91CF, 0xB672, 0x9214, 0xB673, 0x9215, 0xB674, 0x9223, + 0xB675, 0x9209, 0xB676, 0x921E, 0xB677, 0x920D, 0xB678, 0x9210, 0xB679, 0x9207, 0xB67A, 0x9211, 0xB67B, 0x9594, 0xB67C, 0x958F, + 0xB67D, 0x958B, 0xB67E, 0x9591, 0xB6A1, 0x9593, 0xB6A2, 0x9592, 0xB6A3, 0x958E, 0xB6A4, 0x968A, 0xB6A5, 0x968E, 0xB6A6, 0x968B, + 0xB6A7, 0x967D, 0xB6A8, 0x9685, 0xB6A9, 0x9686, 0xB6AA, 0x968D, 0xB6AB, 0x9672, 0xB6AC, 0x9684, 0xB6AD, 0x96C1, 0xB6AE, 0x96C5, + 0xB6AF, 0x96C4, 0xB6B0, 0x96C6, 0xB6B1, 0x96C7, 0xB6B2, 0x96EF, 0xB6B3, 0x96F2, 0xB6B4, 0x97CC, 0xB6B5, 0x9805, 0xB6B6, 0x9806, + 0xB6B7, 0x9808, 0xB6B8, 0x98E7, 0xB6B9, 0x98EA, 0xB6BA, 0x98EF, 0xB6BB, 0x98E9, 0xB6BC, 0x98F2, 0xB6BD, 0x98ED, 0xB6BE, 0x99AE, + 0xB6BF, 0x99AD, 0xB6C0, 0x9EC3, 0xB6C1, 0x9ECD, 0xB6C2, 0x9ED1, 0xB6C3, 0x4E82, 0xB6C4, 0x50AD, 0xB6C5, 0x50B5, 0xB6C6, 0x50B2, + 0xB6C7, 0x50B3, 0xB6C8, 0x50C5, 0xB6C9, 0x50BE, 0xB6CA, 0x50AC, 0xB6CB, 0x50B7, 0xB6CC, 0x50BB, 0xB6CD, 0x50AF, 0xB6CE, 0x50C7, + 0xB6CF, 0x527F, 0xB6D0, 0x5277, 0xB6D1, 0x527D, 0xB6D2, 0x52DF, 0xB6D3, 0x52E6, 0xB6D4, 0x52E4, 0xB6D5, 0x52E2, 0xB6D6, 0x52E3, + 0xB6D7, 0x532F, 0xB6D8, 0x55DF, 0xB6D9, 0x55E8, 0xB6DA, 0x55D3, 0xB6DB, 0x55E6, 0xB6DC, 0x55CE, 0xB6DD, 0x55DC, 0xB6DE, 0x55C7, + 0xB6DF, 0x55D1, 0xB6E0, 0x55E3, 0xB6E1, 0x55E4, 0xB6E2, 0x55EF, 0xB6E3, 0x55DA, 0xB6E4, 0x55E1, 0xB6E5, 0x55C5, 0xB6E6, 0x55C6, + 0xB6E7, 0x55E5, 0xB6E8, 0x55C9, 0xB6E9, 0x5712, 0xB6EA, 0x5713, 0xB6EB, 0x585E, 0xB6EC, 0x5851, 0xB6ED, 0x5858, 0xB6EE, 0x5857, + 0xB6EF, 0x585A, 0xB6F0, 0x5854, 0xB6F1, 0x586B, 0xB6F2, 0x584C, 0xB6F3, 0x586D, 0xB6F4, 0x584A, 0xB6F5, 0x5862, 0xB6F6, 0x5852, + 0xB6F7, 0x584B, 0xB6F8, 0x5967, 0xB6F9, 0x5AC1, 0xB6FA, 0x5AC9, 0xB6FB, 0x5ACC, 0xB6FC, 0x5ABE, 0xB6FD, 0x5ABD, 0xB6FE, 0x5ABC, + 0xB740, 0x5AB3, 0xB741, 0x5AC2, 0xB742, 0x5AB2, 0xB743, 0x5D69, 0xB744, 0x5D6F, 0xB745, 0x5E4C, 0xB746, 0x5E79, 0xB747, 0x5EC9, + 0xB748, 0x5EC8, 0xB749, 0x5F12, 0xB74A, 0x5F59, 0xB74B, 0x5FAC, 0xB74C, 0x5FAE, 0xB74D, 0x611A, 0xB74E, 0x610F, 0xB74F, 0x6148, + 0xB750, 0x611F, 0xB751, 0x60F3, 0xB752, 0x611B, 0xB753, 0x60F9, 0xB754, 0x6101, 0xB755, 0x6108, 0xB756, 0x614E, 0xB757, 0x614C, + 0xB758, 0x6144, 0xB759, 0x614D, 0xB75A, 0x613E, 0xB75B, 0x6134, 0xB75C, 0x6127, 0xB75D, 0x610D, 0xB75E, 0x6106, 0xB75F, 0x6137, + 0xB760, 0x6221, 0xB761, 0x6222, 0xB762, 0x6413, 0xB763, 0x643E, 0xB764, 0x641E, 0xB765, 0x642A, 0xB766, 0x642D, 0xB767, 0x643D, + 0xB768, 0x642C, 0xB769, 0x640F, 0xB76A, 0x641C, 0xB76B, 0x6414, 0xB76C, 0x640D, 0xB76D, 0x6436, 0xB76E, 0x6416, 0xB76F, 0x6417, + 0xB770, 0x6406, 0xB771, 0x656C, 0xB772, 0x659F, 0xB773, 0x65B0, 0xB774, 0x6697, 0xB775, 0x6689, 0xB776, 0x6687, 0xB777, 0x6688, + 0xB778, 0x6696, 0xB779, 0x6684, 0xB77A, 0x6698, 0xB77B, 0x668D, 0xB77C, 0x6703, 0xB77D, 0x6994, 0xB77E, 0x696D, 0xB7A1, 0x695A, + 0xB7A2, 0x6977, 0xB7A3, 0x6960, 0xB7A4, 0x6954, 0xB7A5, 0x6975, 0xB7A6, 0x6930, 0xB7A7, 0x6982, 0xB7A8, 0x694A, 0xB7A9, 0x6968, + 0xB7AA, 0x696B, 0xB7AB, 0x695E, 0xB7AC, 0x6953, 0xB7AD, 0x6979, 0xB7AE, 0x6986, 0xB7AF, 0x695D, 0xB7B0, 0x6963, 0xB7B1, 0x695B, + 0xB7B2, 0x6B47, 0xB7B3, 0x6B72, 0xB7B4, 0x6BC0, 0xB7B5, 0x6BBF, 0xB7B6, 0x6BD3, 0xB7B7, 0x6BFD, 0xB7B8, 0x6EA2, 0xB7B9, 0x6EAF, + 0xB7BA, 0x6ED3, 0xB7BB, 0x6EB6, 0xB7BC, 0x6EC2, 0xB7BD, 0x6E90, 0xB7BE, 0x6E9D, 0xB7BF, 0x6EC7, 0xB7C0, 0x6EC5, 0xB7C1, 0x6EA5, + 0xB7C2, 0x6E98, 0xB7C3, 0x6EBC, 0xB7C4, 0x6EBA, 0xB7C5, 0x6EAB, 0xB7C6, 0x6ED1, 0xB7C7, 0x6E96, 0xB7C8, 0x6E9C, 0xB7C9, 0x6EC4, + 0xB7CA, 0x6ED4, 0xB7CB, 0x6EAA, 0xB7CC, 0x6EA7, 0xB7CD, 0x6EB4, 0xB7CE, 0x714E, 0xB7CF, 0x7159, 0xB7D0, 0x7169, 0xB7D1, 0x7164, + 0xB7D2, 0x7149, 0xB7D3, 0x7167, 0xB7D4, 0x715C, 0xB7D5, 0x716C, 0xB7D6, 0x7166, 0xB7D7, 0x714C, 0xB7D8, 0x7165, 0xB7D9, 0x715E, + 0xB7DA, 0x7146, 0xB7DB, 0x7168, 0xB7DC, 0x7156, 0xB7DD, 0x723A, 0xB7DE, 0x7252, 0xB7DF, 0x7337, 0xB7E0, 0x7345, 0xB7E1, 0x733F, + 0xB7E2, 0x733E, 0xB7E3, 0x746F, 0xB7E4, 0x745A, 0xB7E5, 0x7455, 0xB7E6, 0x745F, 0xB7E7, 0x745E, 0xB7E8, 0x7441, 0xB7E9, 0x743F, + 0xB7EA, 0x7459, 0xB7EB, 0x745B, 0xB7EC, 0x745C, 0xB7ED, 0x7576, 0xB7EE, 0x7578, 0xB7EF, 0x7600, 0xB7F0, 0x75F0, 0xB7F1, 0x7601, + 0xB7F2, 0x75F2, 0xB7F3, 0x75F1, 0xB7F4, 0x75FA, 0xB7F5, 0x75FF, 0xB7F6, 0x75F4, 0xB7F7, 0x75F3, 0xB7F8, 0x76DE, 0xB7F9, 0x76DF, + 0xB7FA, 0x775B, 0xB7FB, 0x776B, 0xB7FC, 0x7766, 0xB7FD, 0x775E, 0xB7FE, 0x7763, 0xB840, 0x7779, 0xB841, 0x776A, 0xB842, 0x776C, + 0xB843, 0x775C, 0xB844, 0x7765, 0xB845, 0x7768, 0xB846, 0x7762, 0xB847, 0x77EE, 0xB848, 0x788E, 0xB849, 0x78B0, 0xB84A, 0x7897, + 0xB84B, 0x7898, 0xB84C, 0x788C, 0xB84D, 0x7889, 0xB84E, 0x787C, 0xB84F, 0x7891, 0xB850, 0x7893, 0xB851, 0x787F, 0xB852, 0x797A, + 0xB853, 0x797F, 0xB854, 0x7981, 0xB855, 0x842C, 0xB856, 0x79BD, 0xB857, 0x7A1C, 0xB858, 0x7A1A, 0xB859, 0x7A20, 0xB85A, 0x7A14, + 0xB85B, 0x7A1F, 0xB85C, 0x7A1E, 0xB85D, 0x7A9F, 0xB85E, 0x7AA0, 0xB85F, 0x7B77, 0xB860, 0x7BC0, 0xB861, 0x7B60, 0xB862, 0x7B6E, + 0xB863, 0x7B67, 0xB864, 0x7CB1, 0xB865, 0x7CB3, 0xB866, 0x7CB5, 0xB867, 0x7D93, 0xB868, 0x7D79, 0xB869, 0x7D91, 0xB86A, 0x7D81, + 0xB86B, 0x7D8F, 0xB86C, 0x7D5B, 0xB86D, 0x7F6E, 0xB86E, 0x7F69, 0xB86F, 0x7F6A, 0xB870, 0x7F72, 0xB871, 0x7FA9, 0xB872, 0x7FA8, + 0xB873, 0x7FA4, 0xB874, 0x8056, 0xB875, 0x8058, 0xB876, 0x8086, 0xB877, 0x8084, 0xB878, 0x8171, 0xB879, 0x8170, 0xB87A, 0x8178, + 0xB87B, 0x8165, 0xB87C, 0x816E, 0xB87D, 0x8173, 0xB87E, 0x816B, 0xB8A1, 0x8179, 0xB8A2, 0x817A, 0xB8A3, 0x8166, 0xB8A4, 0x8205, + 0xB8A5, 0x8247, 0xB8A6, 0x8482, 0xB8A7, 0x8477, 0xB8A8, 0x843D, 0xB8A9, 0x8431, 0xB8AA, 0x8475, 0xB8AB, 0x8466, 0xB8AC, 0x846B, + 0xB8AD, 0x8449, 0xB8AE, 0x846C, 0xB8AF, 0x845B, 0xB8B0, 0x843C, 0xB8B1, 0x8435, 0xB8B2, 0x8461, 0xB8B3, 0x8463, 0xB8B4, 0x8469, + 0xB8B5, 0x846D, 0xB8B6, 0x8446, 0xB8B7, 0x865E, 0xB8B8, 0x865C, 0xB8B9, 0x865F, 0xB8BA, 0x86F9, 0xB8BB, 0x8713, 0xB8BC, 0x8708, + 0xB8BD, 0x8707, 0xB8BE, 0x8700, 0xB8BF, 0x86FE, 0xB8C0, 0x86FB, 0xB8C1, 0x8702, 0xB8C2, 0x8703, 0xB8C3, 0x8706, 0xB8C4, 0x870A, + 0xB8C5, 0x8859, 0xB8C6, 0x88DF, 0xB8C7, 0x88D4, 0xB8C8, 0x88D9, 0xB8C9, 0x88DC, 0xB8CA, 0x88D8, 0xB8CB, 0x88DD, 0xB8CC, 0x88E1, + 0xB8CD, 0x88CA, 0xB8CE, 0x88D5, 0xB8CF, 0x88D2, 0xB8D0, 0x899C, 0xB8D1, 0x89E3, 0xB8D2, 0x8A6B, 0xB8D3, 0x8A72, 0xB8D4, 0x8A73, + 0xB8D5, 0x8A66, 0xB8D6, 0x8A69, 0xB8D7, 0x8A70, 0xB8D8, 0x8A87, 0xB8D9, 0x8A7C, 0xB8DA, 0x8A63, 0xB8DB, 0x8AA0, 0xB8DC, 0x8A71, + 0xB8DD, 0x8A85, 0xB8DE, 0x8A6D, 0xB8DF, 0x8A62, 0xB8E0, 0x8A6E, 0xB8E1, 0x8A6C, 0xB8E2, 0x8A79, 0xB8E3, 0x8A7B, 0xB8E4, 0x8A3E, + 0xB8E5, 0x8A68, 0xB8E6, 0x8C62, 0xB8E7, 0x8C8A, 0xB8E8, 0x8C89, 0xB8E9, 0x8CCA, 0xB8EA, 0x8CC7, 0xB8EB, 0x8CC8, 0xB8EC, 0x8CC4, + 0xB8ED, 0x8CB2, 0xB8EE, 0x8CC3, 0xB8EF, 0x8CC2, 0xB8F0, 0x8CC5, 0xB8F1, 0x8DE1, 0xB8F2, 0x8DDF, 0xB8F3, 0x8DE8, 0xB8F4, 0x8DEF, + 0xB8F5, 0x8DF3, 0xB8F6, 0x8DFA, 0xB8F7, 0x8DEA, 0xB8F8, 0x8DE4, 0xB8F9, 0x8DE6, 0xB8FA, 0x8EB2, 0xB8FB, 0x8F03, 0xB8FC, 0x8F09, + 0xB8FD, 0x8EFE, 0xB8FE, 0x8F0A, 0xB940, 0x8F9F, 0xB941, 0x8FB2, 0xB942, 0x904B, 0xB943, 0x904A, 0xB944, 0x9053, 0xB945, 0x9042, + 0xB946, 0x9054, 0xB947, 0x903C, 0xB948, 0x9055, 0xB949, 0x9050, 0xB94A, 0x9047, 0xB94B, 0x904F, 0xB94C, 0x904E, 0xB94D, 0x904D, + 0xB94E, 0x9051, 0xB94F, 0x903E, 0xB950, 0x9041, 0xB951, 0x9112, 0xB952, 0x9117, 0xB953, 0x916C, 0xB954, 0x916A, 0xB955, 0x9169, + 0xB956, 0x91C9, 0xB957, 0x9237, 0xB958, 0x9257, 0xB959, 0x9238, 0xB95A, 0x923D, 0xB95B, 0x9240, 0xB95C, 0x923E, 0xB95D, 0x925B, + 0xB95E, 0x924B, 0xB95F, 0x9264, 0xB960, 0x9251, 0xB961, 0x9234, 0xB962, 0x9249, 0xB963, 0x924D, 0xB964, 0x9245, 0xB965, 0x9239, + 0xB966, 0x923F, 0xB967, 0x925A, 0xB968, 0x9598, 0xB969, 0x9698, 0xB96A, 0x9694, 0xB96B, 0x9695, 0xB96C, 0x96CD, 0xB96D, 0x96CB, + 0xB96E, 0x96C9, 0xB96F, 0x96CA, 0xB970, 0x96F7, 0xB971, 0x96FB, 0xB972, 0x96F9, 0xB973, 0x96F6, 0xB974, 0x9756, 0xB975, 0x9774, + 0xB976, 0x9776, 0xB977, 0x9810, 0xB978, 0x9811, 0xB979, 0x9813, 0xB97A, 0x980A, 0xB97B, 0x9812, 0xB97C, 0x980C, 0xB97D, 0x98FC, + 0xB97E, 0x98F4, 0xB9A1, 0x98FD, 0xB9A2, 0x98FE, 0xB9A3, 0x99B3, 0xB9A4, 0x99B1, 0xB9A5, 0x99B4, 0xB9A6, 0x9AE1, 0xB9A7, 0x9CE9, + 0xB9A8, 0x9E82, 0xB9A9, 0x9F0E, 0xB9AA, 0x9F13, 0xB9AB, 0x9F20, 0xB9AC, 0x50E7, 0xB9AD, 0x50EE, 0xB9AE, 0x50E5, 0xB9AF, 0x50D6, + 0xB9B0, 0x50ED, 0xB9B1, 0x50DA, 0xB9B2, 0x50D5, 0xB9B3, 0x50CF, 0xB9B4, 0x50D1, 0xB9B5, 0x50F1, 0xB9B6, 0x50CE, 0xB9B7, 0x50E9, + 0xB9B8, 0x5162, 0xB9B9, 0x51F3, 0xB9BA, 0x5283, 0xB9BB, 0x5282, 0xB9BC, 0x5331, 0xB9BD, 0x53AD, 0xB9BE, 0x55FE, 0xB9BF, 0x5600, + 0xB9C0, 0x561B, 0xB9C1, 0x5617, 0xB9C2, 0x55FD, 0xB9C3, 0x5614, 0xB9C4, 0x5606, 0xB9C5, 0x5609, 0xB9C6, 0x560D, 0xB9C7, 0x560E, + 0xB9C8, 0x55F7, 0xB9C9, 0x5616, 0xB9CA, 0x561F, 0xB9CB, 0x5608, 0xB9CC, 0x5610, 0xB9CD, 0x55F6, 0xB9CE, 0x5718, 0xB9CF, 0x5716, + 0xB9D0, 0x5875, 0xB9D1, 0x587E, 0xB9D2, 0x5883, 0xB9D3, 0x5893, 0xB9D4, 0x588A, 0xB9D5, 0x5879, 0xB9D6, 0x5885, 0xB9D7, 0x587D, + 0xB9D8, 0x58FD, 0xB9D9, 0x5925, 0xB9DA, 0x5922, 0xB9DB, 0x5924, 0xB9DC, 0x596A, 0xB9DD, 0x5969, 0xB9DE, 0x5AE1, 0xB9DF, 0x5AE6, + 0xB9E0, 0x5AE9, 0xB9E1, 0x5AD7, 0xB9E2, 0x5AD6, 0xB9E3, 0x5AD8, 0xB9E4, 0x5AE3, 0xB9E5, 0x5B75, 0xB9E6, 0x5BDE, 0xB9E7, 0x5BE7, + 0xB9E8, 0x5BE1, 0xB9E9, 0x5BE5, 0xB9EA, 0x5BE6, 0xB9EB, 0x5BE8, 0xB9EC, 0x5BE2, 0xB9ED, 0x5BE4, 0xB9EE, 0x5BDF, 0xB9EF, 0x5C0D, + 0xB9F0, 0x5C62, 0xB9F1, 0x5D84, 0xB9F2, 0x5D87, 0xB9F3, 0x5E5B, 0xB9F4, 0x5E63, 0xB9F5, 0x5E55, 0xB9F6, 0x5E57, 0xB9F7, 0x5E54, + 0xB9F8, 0x5ED3, 0xB9F9, 0x5ED6, 0xB9FA, 0x5F0A, 0xB9FB, 0x5F46, 0xB9FC, 0x5F70, 0xB9FD, 0x5FB9, 0xB9FE, 0x6147, 0xBA40, 0x613F, + 0xBA41, 0x614B, 0xBA42, 0x6177, 0xBA43, 0x6162, 0xBA44, 0x6163, 0xBA45, 0x615F, 0xBA46, 0x615A, 0xBA47, 0x6158, 0xBA48, 0x6175, + 0xBA49, 0x622A, 0xBA4A, 0x6487, 0xBA4B, 0x6458, 0xBA4C, 0x6454, 0xBA4D, 0x64A4, 0xBA4E, 0x6478, 0xBA4F, 0x645F, 0xBA50, 0x647A, + 0xBA51, 0x6451, 0xBA52, 0x6467, 0xBA53, 0x6434, 0xBA54, 0x646D, 0xBA55, 0x647B, 0xBA56, 0x6572, 0xBA57, 0x65A1, 0xBA58, 0x65D7, + 0xBA59, 0x65D6, 0xBA5A, 0x66A2, 0xBA5B, 0x66A8, 0xBA5C, 0x669D, 0xBA5D, 0x699C, 0xBA5E, 0x69A8, 0xBA5F, 0x6995, 0xBA60, 0x69C1, + 0xBA61, 0x69AE, 0xBA62, 0x69D3, 0xBA63, 0x69CB, 0xBA64, 0x699B, 0xBA65, 0x69B7, 0xBA66, 0x69BB, 0xBA67, 0x69AB, 0xBA68, 0x69B4, + 0xBA69, 0x69D0, 0xBA6A, 0x69CD, 0xBA6B, 0x69AD, 0xBA6C, 0x69CC, 0xBA6D, 0x69A6, 0xBA6E, 0x69C3, 0xBA6F, 0x69A3, 0xBA70, 0x6B49, + 0xBA71, 0x6B4C, 0xBA72, 0x6C33, 0xBA73, 0x6F33, 0xBA74, 0x6F14, 0xBA75, 0x6EFE, 0xBA76, 0x6F13, 0xBA77, 0x6EF4, 0xBA78, 0x6F29, + 0xBA79, 0x6F3E, 0xBA7A, 0x6F20, 0xBA7B, 0x6F2C, 0xBA7C, 0x6F0F, 0xBA7D, 0x6F02, 0xBA7E, 0x6F22, 0xBAA1, 0x6EFF, 0xBAA2, 0x6EEF, + 0xBAA3, 0x6F06, 0xBAA4, 0x6F31, 0xBAA5, 0x6F38, 0xBAA6, 0x6F32, 0xBAA7, 0x6F23, 0xBAA8, 0x6F15, 0xBAA9, 0x6F2B, 0xBAAA, 0x6F2F, + 0xBAAB, 0x6F88, 0xBAAC, 0x6F2A, 0xBAAD, 0x6EEC, 0xBAAE, 0x6F01, 0xBAAF, 0x6EF2, 0xBAB0, 0x6ECC, 0xBAB1, 0x6EF7, 0xBAB2, 0x7194, + 0xBAB3, 0x7199, 0xBAB4, 0x717D, 0xBAB5, 0x718A, 0xBAB6, 0x7184, 0xBAB7, 0x7192, 0xBAB8, 0x723E, 0xBAB9, 0x7292, 0xBABA, 0x7296, + 0xBABB, 0x7344, 0xBABC, 0x7350, 0xBABD, 0x7464, 0xBABE, 0x7463, 0xBABF, 0x746A, 0xBAC0, 0x7470, 0xBAC1, 0x746D, 0xBAC2, 0x7504, + 0xBAC3, 0x7591, 0xBAC4, 0x7627, 0xBAC5, 0x760D, 0xBAC6, 0x760B, 0xBAC7, 0x7609, 0xBAC8, 0x7613, 0xBAC9, 0x76E1, 0xBACA, 0x76E3, + 0xBACB, 0x7784, 0xBACC, 0x777D, 0xBACD, 0x777F, 0xBACE, 0x7761, 0xBACF, 0x78C1, 0xBAD0, 0x789F, 0xBAD1, 0x78A7, 0xBAD2, 0x78B3, + 0xBAD3, 0x78A9, 0xBAD4, 0x78A3, 0xBAD5, 0x798E, 0xBAD6, 0x798F, 0xBAD7, 0x798D, 0xBAD8, 0x7A2E, 0xBAD9, 0x7A31, 0xBADA, 0x7AAA, + 0xBADB, 0x7AA9, 0xBADC, 0x7AED, 0xBADD, 0x7AEF, 0xBADE, 0x7BA1, 0xBADF, 0x7B95, 0xBAE0, 0x7B8B, 0xBAE1, 0x7B75, 0xBAE2, 0x7B97, + 0xBAE3, 0x7B9D, 0xBAE4, 0x7B94, 0xBAE5, 0x7B8F, 0xBAE6, 0x7BB8, 0xBAE7, 0x7B87, 0xBAE8, 0x7B84, 0xBAE9, 0x7CB9, 0xBAEA, 0x7CBD, + 0xBAEB, 0x7CBE, 0xBAEC, 0x7DBB, 0xBAED, 0x7DB0, 0xBAEE, 0x7D9C, 0xBAEF, 0x7DBD, 0xBAF0, 0x7DBE, 0xBAF1, 0x7DA0, 0xBAF2, 0x7DCA, + 0xBAF3, 0x7DB4, 0xBAF4, 0x7DB2, 0xBAF5, 0x7DB1, 0xBAF6, 0x7DBA, 0xBAF7, 0x7DA2, 0xBAF8, 0x7DBF, 0xBAF9, 0x7DB5, 0xBAFA, 0x7DB8, + 0xBAFB, 0x7DAD, 0xBAFC, 0x7DD2, 0xBAFD, 0x7DC7, 0xBAFE, 0x7DAC, 0xBB40, 0x7F70, 0xBB41, 0x7FE0, 0xBB42, 0x7FE1, 0xBB43, 0x7FDF, + 0xBB44, 0x805E, 0xBB45, 0x805A, 0xBB46, 0x8087, 0xBB47, 0x8150, 0xBB48, 0x8180, 0xBB49, 0x818F, 0xBB4A, 0x8188, 0xBB4B, 0x818A, + 0xBB4C, 0x817F, 0xBB4D, 0x8182, 0xBB4E, 0x81E7, 0xBB4F, 0x81FA, 0xBB50, 0x8207, 0xBB51, 0x8214, 0xBB52, 0x821E, 0xBB53, 0x824B, + 0xBB54, 0x84C9, 0xBB55, 0x84BF, 0xBB56, 0x84C6, 0xBB57, 0x84C4, 0xBB58, 0x8499, 0xBB59, 0x849E, 0xBB5A, 0x84B2, 0xBB5B, 0x849C, + 0xBB5C, 0x84CB, 0xBB5D, 0x84B8, 0xBB5E, 0x84C0, 0xBB5F, 0x84D3, 0xBB60, 0x8490, 0xBB61, 0x84BC, 0xBB62, 0x84D1, 0xBB63, 0x84CA, + 0xBB64, 0x873F, 0xBB65, 0x871C, 0xBB66, 0x873B, 0xBB67, 0x8722, 0xBB68, 0x8725, 0xBB69, 0x8734, 0xBB6A, 0x8718, 0xBB6B, 0x8755, + 0xBB6C, 0x8737, 0xBB6D, 0x8729, 0xBB6E, 0x88F3, 0xBB6F, 0x8902, 0xBB70, 0x88F4, 0xBB71, 0x88F9, 0xBB72, 0x88F8, 0xBB73, 0x88FD, + 0xBB74, 0x88E8, 0xBB75, 0x891A, 0xBB76, 0x88EF, 0xBB77, 0x8AA6, 0xBB78, 0x8A8C, 0xBB79, 0x8A9E, 0xBB7A, 0x8AA3, 0xBB7B, 0x8A8D, + 0xBB7C, 0x8AA1, 0xBB7D, 0x8A93, 0xBB7E, 0x8AA4, 0xBBA1, 0x8AAA, 0xBBA2, 0x8AA5, 0xBBA3, 0x8AA8, 0xBBA4, 0x8A98, 0xBBA5, 0x8A91, + 0xBBA6, 0x8A9A, 0xBBA7, 0x8AA7, 0xBBA8, 0x8C6A, 0xBBA9, 0x8C8D, 0xBBAA, 0x8C8C, 0xBBAB, 0x8CD3, 0xBBAC, 0x8CD1, 0xBBAD, 0x8CD2, + 0xBBAE, 0x8D6B, 0xBBAF, 0x8D99, 0xBBB0, 0x8D95, 0xBBB1, 0x8DFC, 0xBBB2, 0x8F14, 0xBBB3, 0x8F12, 0xBBB4, 0x8F15, 0xBBB5, 0x8F13, + 0xBBB6, 0x8FA3, 0xBBB7, 0x9060, 0xBBB8, 0x9058, 0xBBB9, 0x905C, 0xBBBA, 0x9063, 0xBBBB, 0x9059, 0xBBBC, 0x905E, 0xBBBD, 0x9062, + 0xBBBE, 0x905D, 0xBBBF, 0x905B, 0xBBC0, 0x9119, 0xBBC1, 0x9118, 0xBBC2, 0x911E, 0xBBC3, 0x9175, 0xBBC4, 0x9178, 0xBBC5, 0x9177, + 0xBBC6, 0x9174, 0xBBC7, 0x9278, 0xBBC8, 0x9280, 0xBBC9, 0x9285, 0xBBCA, 0x9298, 0xBBCB, 0x9296, 0xBBCC, 0x927B, 0xBBCD, 0x9293, + 0xBBCE, 0x929C, 0xBBCF, 0x92A8, 0xBBD0, 0x927C, 0xBBD1, 0x9291, 0xBBD2, 0x95A1, 0xBBD3, 0x95A8, 0xBBD4, 0x95A9, 0xBBD5, 0x95A3, + 0xBBD6, 0x95A5, 0xBBD7, 0x95A4, 0xBBD8, 0x9699, 0xBBD9, 0x969C, 0xBBDA, 0x969B, 0xBBDB, 0x96CC, 0xBBDC, 0x96D2, 0xBBDD, 0x9700, + 0xBBDE, 0x977C, 0xBBDF, 0x9785, 0xBBE0, 0x97F6, 0xBBE1, 0x9817, 0xBBE2, 0x9818, 0xBBE3, 0x98AF, 0xBBE4, 0x98B1, 0xBBE5, 0x9903, + 0xBBE6, 0x9905, 0xBBE7, 0x990C, 0xBBE8, 0x9909, 0xBBE9, 0x99C1, 0xBBEA, 0x9AAF, 0xBBEB, 0x9AB0, 0xBBEC, 0x9AE6, 0xBBED, 0x9B41, + 0xBBEE, 0x9B42, 0xBBEF, 0x9CF4, 0xBBF0, 0x9CF6, 0xBBF1, 0x9CF3, 0xBBF2, 0x9EBC, 0xBBF3, 0x9F3B, 0xBBF4, 0x9F4A, 0xBBF5, 0x5104, + 0xBBF6, 0x5100, 0xBBF7, 0x50FB, 0xBBF8, 0x50F5, 0xBBF9, 0x50F9, 0xBBFA, 0x5102, 0xBBFB, 0x5108, 0xBBFC, 0x5109, 0xBBFD, 0x5105, + 0xBBFE, 0x51DC, 0xBC40, 0x5287, 0xBC41, 0x5288, 0xBC42, 0x5289, 0xBC43, 0x528D, 0xBC44, 0x528A, 0xBC45, 0x52F0, 0xBC46, 0x53B2, + 0xBC47, 0x562E, 0xBC48, 0x563B, 0xBC49, 0x5639, 0xBC4A, 0x5632, 0xBC4B, 0x563F, 0xBC4C, 0x5634, 0xBC4D, 0x5629, 0xBC4E, 0x5653, + 0xBC4F, 0x564E, 0xBC50, 0x5657, 0xBC51, 0x5674, 0xBC52, 0x5636, 0xBC53, 0x562F, 0xBC54, 0x5630, 0xBC55, 0x5880, 0xBC56, 0x589F, + 0xBC57, 0x589E, 0xBC58, 0x58B3, 0xBC59, 0x589C, 0xBC5A, 0x58AE, 0xBC5B, 0x58A9, 0xBC5C, 0x58A6, 0xBC5D, 0x596D, 0xBC5E, 0x5B09, + 0xBC5F, 0x5AFB, 0xBC60, 0x5B0B, 0xBC61, 0x5AF5, 0xBC62, 0x5B0C, 0xBC63, 0x5B08, 0xBC64, 0x5BEE, 0xBC65, 0x5BEC, 0xBC66, 0x5BE9, + 0xBC67, 0x5BEB, 0xBC68, 0x5C64, 0xBC69, 0x5C65, 0xBC6A, 0x5D9D, 0xBC6B, 0x5D94, 0xBC6C, 0x5E62, 0xBC6D, 0x5E5F, 0xBC6E, 0x5E61, + 0xBC6F, 0x5EE2, 0xBC70, 0x5EDA, 0xBC71, 0x5EDF, 0xBC72, 0x5EDD, 0xBC73, 0x5EE3, 0xBC74, 0x5EE0, 0xBC75, 0x5F48, 0xBC76, 0x5F71, + 0xBC77, 0x5FB7, 0xBC78, 0x5FB5, 0xBC79, 0x6176, 0xBC7A, 0x6167, 0xBC7B, 0x616E, 0xBC7C, 0x615D, 0xBC7D, 0x6155, 0xBC7E, 0x6182, + 0xBCA1, 0x617C, 0xBCA2, 0x6170, 0xBCA3, 0x616B, 0xBCA4, 0x617E, 0xBCA5, 0x61A7, 0xBCA6, 0x6190, 0xBCA7, 0x61AB, 0xBCA8, 0x618E, + 0xBCA9, 0x61AC, 0xBCAA, 0x619A, 0xBCAB, 0x61A4, 0xBCAC, 0x6194, 0xBCAD, 0x61AE, 0xBCAE, 0x622E, 0xBCAF, 0x6469, 0xBCB0, 0x646F, + 0xBCB1, 0x6479, 0xBCB2, 0x649E, 0xBCB3, 0x64B2, 0xBCB4, 0x6488, 0xBCB5, 0x6490, 0xBCB6, 0x64B0, 0xBCB7, 0x64A5, 0xBCB8, 0x6493, + 0xBCB9, 0x6495, 0xBCBA, 0x64A9, 0xBCBB, 0x6492, 0xBCBC, 0x64AE, 0xBCBD, 0x64AD, 0xBCBE, 0x64AB, 0xBCBF, 0x649A, 0xBCC0, 0x64AC, + 0xBCC1, 0x6499, 0xBCC2, 0x64A2, 0xBCC3, 0x64B3, 0xBCC4, 0x6575, 0xBCC5, 0x6577, 0xBCC6, 0x6578, 0xBCC7, 0x66AE, 0xBCC8, 0x66AB, + 0xBCC9, 0x66B4, 0xBCCA, 0x66B1, 0xBCCB, 0x6A23, 0xBCCC, 0x6A1F, 0xBCCD, 0x69E8, 0xBCCE, 0x6A01, 0xBCCF, 0x6A1E, 0xBCD0, 0x6A19, + 0xBCD1, 0x69FD, 0xBCD2, 0x6A21, 0xBCD3, 0x6A13, 0xBCD4, 0x6A0A, 0xBCD5, 0x69F3, 0xBCD6, 0x6A02, 0xBCD7, 0x6A05, 0xBCD8, 0x69ED, + 0xBCD9, 0x6A11, 0xBCDA, 0x6B50, 0xBCDB, 0x6B4E, 0xBCDC, 0x6BA4, 0xBCDD, 0x6BC5, 0xBCDE, 0x6BC6, 0xBCDF, 0x6F3F, 0xBCE0, 0x6F7C, + 0xBCE1, 0x6F84, 0xBCE2, 0x6F51, 0xBCE3, 0x6F66, 0xBCE4, 0x6F54, 0xBCE5, 0x6F86, 0xBCE6, 0x6F6D, 0xBCE7, 0x6F5B, 0xBCE8, 0x6F78, + 0xBCE9, 0x6F6E, 0xBCEA, 0x6F8E, 0xBCEB, 0x6F7A, 0xBCEC, 0x6F70, 0xBCED, 0x6F64, 0xBCEE, 0x6F97, 0xBCEF, 0x6F58, 0xBCF0, 0x6ED5, + 0xBCF1, 0x6F6F, 0xBCF2, 0x6F60, 0xBCF3, 0x6F5F, 0xBCF4, 0x719F, 0xBCF5, 0x71AC, 0xBCF6, 0x71B1, 0xBCF7, 0x71A8, 0xBCF8, 0x7256, + 0xBCF9, 0x729B, 0xBCFA, 0x734E, 0xBCFB, 0x7357, 0xBCFC, 0x7469, 0xBCFD, 0x748B, 0xBCFE, 0x7483, 0xBD40, 0x747E, 0xBD41, 0x7480, + 0xBD42, 0x757F, 0xBD43, 0x7620, 0xBD44, 0x7629, 0xBD45, 0x761F, 0xBD46, 0x7624, 0xBD47, 0x7626, 0xBD48, 0x7621, 0xBD49, 0x7622, + 0xBD4A, 0x769A, 0xBD4B, 0x76BA, 0xBD4C, 0x76E4, 0xBD4D, 0x778E, 0xBD4E, 0x7787, 0xBD4F, 0x778C, 0xBD50, 0x7791, 0xBD51, 0x778B, + 0xBD52, 0x78CB, 0xBD53, 0x78C5, 0xBD54, 0x78BA, 0xBD55, 0x78CA, 0xBD56, 0x78BE, 0xBD57, 0x78D5, 0xBD58, 0x78BC, 0xBD59, 0x78D0, + 0xBD5A, 0x7A3F, 0xBD5B, 0x7A3C, 0xBD5C, 0x7A40, 0xBD5D, 0x7A3D, 0xBD5E, 0x7A37, 0xBD5F, 0x7A3B, 0xBD60, 0x7AAF, 0xBD61, 0x7AAE, + 0xBD62, 0x7BAD, 0xBD63, 0x7BB1, 0xBD64, 0x7BC4, 0xBD65, 0x7BB4, 0xBD66, 0x7BC6, 0xBD67, 0x7BC7, 0xBD68, 0x7BC1, 0xBD69, 0x7BA0, + 0xBD6A, 0x7BCC, 0xBD6B, 0x7CCA, 0xBD6C, 0x7DE0, 0xBD6D, 0x7DF4, 0xBD6E, 0x7DEF, 0xBD6F, 0x7DFB, 0xBD70, 0x7DD8, 0xBD71, 0x7DEC, + 0xBD72, 0x7DDD, 0xBD73, 0x7DE8, 0xBD74, 0x7DE3, 0xBD75, 0x7DDA, 0xBD76, 0x7DDE, 0xBD77, 0x7DE9, 0xBD78, 0x7D9E, 0xBD79, 0x7DD9, + 0xBD7A, 0x7DF2, 0xBD7B, 0x7DF9, 0xBD7C, 0x7F75, 0xBD7D, 0x7F77, 0xBD7E, 0x7FAF, 0xBDA1, 0x7FE9, 0xBDA2, 0x8026, 0xBDA3, 0x819B, + 0xBDA4, 0x819C, 0xBDA5, 0x819D, 0xBDA6, 0x81A0, 0xBDA7, 0x819A, 0xBDA8, 0x8198, 0xBDA9, 0x8517, 0xBDAA, 0x853D, 0xBDAB, 0x851A, + 0xBDAC, 0x84EE, 0xBDAD, 0x852C, 0xBDAE, 0x852D, 0xBDAF, 0x8513, 0xBDB0, 0x8511, 0xBDB1, 0x8523, 0xBDB2, 0x8521, 0xBDB3, 0x8514, + 0xBDB4, 0x84EC, 0xBDB5, 0x8525, 0xBDB6, 0x84FF, 0xBDB7, 0x8506, 0xBDB8, 0x8782, 0xBDB9, 0x8774, 0xBDBA, 0x8776, 0xBDBB, 0x8760, + 0xBDBC, 0x8766, 0xBDBD, 0x8778, 0xBDBE, 0x8768, 0xBDBF, 0x8759, 0xBDC0, 0x8757, 0xBDC1, 0x874C, 0xBDC2, 0x8753, 0xBDC3, 0x885B, + 0xBDC4, 0x885D, 0xBDC5, 0x8910, 0xBDC6, 0x8907, 0xBDC7, 0x8912, 0xBDC8, 0x8913, 0xBDC9, 0x8915, 0xBDCA, 0x890A, 0xBDCB, 0x8ABC, + 0xBDCC, 0x8AD2, 0xBDCD, 0x8AC7, 0xBDCE, 0x8AC4, 0xBDCF, 0x8A95, 0xBDD0, 0x8ACB, 0xBDD1, 0x8AF8, 0xBDD2, 0x8AB2, 0xBDD3, 0x8AC9, + 0xBDD4, 0x8AC2, 0xBDD5, 0x8ABF, 0xBDD6, 0x8AB0, 0xBDD7, 0x8AD6, 0xBDD8, 0x8ACD, 0xBDD9, 0x8AB6, 0xBDDA, 0x8AB9, 0xBDDB, 0x8ADB, + 0xBDDC, 0x8C4C, 0xBDDD, 0x8C4E, 0xBDDE, 0x8C6C, 0xBDDF, 0x8CE0, 0xBDE0, 0x8CDE, 0xBDE1, 0x8CE6, 0xBDE2, 0x8CE4, 0xBDE3, 0x8CEC, + 0xBDE4, 0x8CED, 0xBDE5, 0x8CE2, 0xBDE6, 0x8CE3, 0xBDE7, 0x8CDC, 0xBDE8, 0x8CEA, 0xBDE9, 0x8CE1, 0xBDEA, 0x8D6D, 0xBDEB, 0x8D9F, + 0xBDEC, 0x8DA3, 0xBDED, 0x8E2B, 0xBDEE, 0x8E10, 0xBDEF, 0x8E1D, 0xBDF0, 0x8E22, 0xBDF1, 0x8E0F, 0xBDF2, 0x8E29, 0xBDF3, 0x8E1F, + 0xBDF4, 0x8E21, 0xBDF5, 0x8E1E, 0xBDF6, 0x8EBA, 0xBDF7, 0x8F1D, 0xBDF8, 0x8F1B, 0xBDF9, 0x8F1F, 0xBDFA, 0x8F29, 0xBDFB, 0x8F26, + 0xBDFC, 0x8F2A, 0xBDFD, 0x8F1C, 0xBDFE, 0x8F1E, 0xBE40, 0x8F25, 0xBE41, 0x9069, 0xBE42, 0x906E, 0xBE43, 0x9068, 0xBE44, 0x906D, + 0xBE45, 0x9077, 0xBE46, 0x9130, 0xBE47, 0x912D, 0xBE48, 0x9127, 0xBE49, 0x9131, 0xBE4A, 0x9187, 0xBE4B, 0x9189, 0xBE4C, 0x918B, + 0xBE4D, 0x9183, 0xBE4E, 0x92C5, 0xBE4F, 0x92BB, 0xBE50, 0x92B7, 0xBE51, 0x92EA, 0xBE52, 0x92AC, 0xBE53, 0x92E4, 0xBE54, 0x92C1, + 0xBE55, 0x92B3, 0xBE56, 0x92BC, 0xBE57, 0x92D2, 0xBE58, 0x92C7, 0xBE59, 0x92F0, 0xBE5A, 0x92B2, 0xBE5B, 0x95AD, 0xBE5C, 0x95B1, + 0xBE5D, 0x9704, 0xBE5E, 0x9706, 0xBE5F, 0x9707, 0xBE60, 0x9709, 0xBE61, 0x9760, 0xBE62, 0x978D, 0xBE63, 0x978B, 0xBE64, 0x978F, + 0xBE65, 0x9821, 0xBE66, 0x982B, 0xBE67, 0x981C, 0xBE68, 0x98B3, 0xBE69, 0x990A, 0xBE6A, 0x9913, 0xBE6B, 0x9912, 0xBE6C, 0x9918, + 0xBE6D, 0x99DD, 0xBE6E, 0x99D0, 0xBE6F, 0x99DF, 0xBE70, 0x99DB, 0xBE71, 0x99D1, 0xBE72, 0x99D5, 0xBE73, 0x99D2, 0xBE74, 0x99D9, + 0xBE75, 0x9AB7, 0xBE76, 0x9AEE, 0xBE77, 0x9AEF, 0xBE78, 0x9B27, 0xBE79, 0x9B45, 0xBE7A, 0x9B44, 0xBE7B, 0x9B77, 0xBE7C, 0x9B6F, + 0xBE7D, 0x9D06, 0xBE7E, 0x9D09, 0xBEA1, 0x9D03, 0xBEA2, 0x9EA9, 0xBEA3, 0x9EBE, 0xBEA4, 0x9ECE, 0xBEA5, 0x58A8, 0xBEA6, 0x9F52, + 0xBEA7, 0x5112, 0xBEA8, 0x5118, 0xBEA9, 0x5114, 0xBEAA, 0x5110, 0xBEAB, 0x5115, 0xBEAC, 0x5180, 0xBEAD, 0x51AA, 0xBEAE, 0x51DD, + 0xBEAF, 0x5291, 0xBEB0, 0x5293, 0xBEB1, 0x52F3, 0xBEB2, 0x5659, 0xBEB3, 0x566B, 0xBEB4, 0x5679, 0xBEB5, 0x5669, 0xBEB6, 0x5664, + 0xBEB7, 0x5678, 0xBEB8, 0x566A, 0xBEB9, 0x5668, 0xBEBA, 0x5665, 0xBEBB, 0x5671, 0xBEBC, 0x566F, 0xBEBD, 0x566C, 0xBEBE, 0x5662, + 0xBEBF, 0x5676, 0xBEC0, 0x58C1, 0xBEC1, 0x58BE, 0xBEC2, 0x58C7, 0xBEC3, 0x58C5, 0xBEC4, 0x596E, 0xBEC5, 0x5B1D, 0xBEC6, 0x5B34, + 0xBEC7, 0x5B78, 0xBEC8, 0x5BF0, 0xBEC9, 0x5C0E, 0xBECA, 0x5F4A, 0xBECB, 0x61B2, 0xBECC, 0x6191, 0xBECD, 0x61A9, 0xBECE, 0x618A, + 0xBECF, 0x61CD, 0xBED0, 0x61B6, 0xBED1, 0x61BE, 0xBED2, 0x61CA, 0xBED3, 0x61C8, 0xBED4, 0x6230, 0xBED5, 0x64C5, 0xBED6, 0x64C1, + 0xBED7, 0x64CB, 0xBED8, 0x64BB, 0xBED9, 0x64BC, 0xBEDA, 0x64DA, 0xBEDB, 0x64C4, 0xBEDC, 0x64C7, 0xBEDD, 0x64C2, 0xBEDE, 0x64CD, + 0xBEDF, 0x64BF, 0xBEE0, 0x64D2, 0xBEE1, 0x64D4, 0xBEE2, 0x64BE, 0xBEE3, 0x6574, 0xBEE4, 0x66C6, 0xBEE5, 0x66C9, 0xBEE6, 0x66B9, + 0xBEE7, 0x66C4, 0xBEE8, 0x66C7, 0xBEE9, 0x66B8, 0xBEEA, 0x6A3D, 0xBEEB, 0x6A38, 0xBEEC, 0x6A3A, 0xBEED, 0x6A59, 0xBEEE, 0x6A6B, + 0xBEEF, 0x6A58, 0xBEF0, 0x6A39, 0xBEF1, 0x6A44, 0xBEF2, 0x6A62, 0xBEF3, 0x6A61, 0xBEF4, 0x6A4B, 0xBEF5, 0x6A47, 0xBEF6, 0x6A35, + 0xBEF7, 0x6A5F, 0xBEF8, 0x6A48, 0xBEF9, 0x6B59, 0xBEFA, 0x6B77, 0xBEFB, 0x6C05, 0xBEFC, 0x6FC2, 0xBEFD, 0x6FB1, 0xBEFE, 0x6FA1, + 0xBF40, 0x6FC3, 0xBF41, 0x6FA4, 0xBF42, 0x6FC1, 0xBF43, 0x6FA7, 0xBF44, 0x6FB3, 0xBF45, 0x6FC0, 0xBF46, 0x6FB9, 0xBF47, 0x6FB6, + 0xBF48, 0x6FA6, 0xBF49, 0x6FA0, 0xBF4A, 0x6FB4, 0xBF4B, 0x71BE, 0xBF4C, 0x71C9, 0xBF4D, 0x71D0, 0xBF4E, 0x71D2, 0xBF4F, 0x71C8, + 0xBF50, 0x71D5, 0xBF51, 0x71B9, 0xBF52, 0x71CE, 0xBF53, 0x71D9, 0xBF54, 0x71DC, 0xBF55, 0x71C3, 0xBF56, 0x71C4, 0xBF57, 0x7368, + 0xBF58, 0x749C, 0xBF59, 0x74A3, 0xBF5A, 0x7498, 0xBF5B, 0x749F, 0xBF5C, 0x749E, 0xBF5D, 0x74E2, 0xBF5E, 0x750C, 0xBF5F, 0x750D, + 0xBF60, 0x7634, 0xBF61, 0x7638, 0xBF62, 0x763A, 0xBF63, 0x76E7, 0xBF64, 0x76E5, 0xBF65, 0x77A0, 0xBF66, 0x779E, 0xBF67, 0x779F, + 0xBF68, 0x77A5, 0xBF69, 0x78E8, 0xBF6A, 0x78DA, 0xBF6B, 0x78EC, 0xBF6C, 0x78E7, 0xBF6D, 0x79A6, 0xBF6E, 0x7A4D, 0xBF6F, 0x7A4E, + 0xBF70, 0x7A46, 0xBF71, 0x7A4C, 0xBF72, 0x7A4B, 0xBF73, 0x7ABA, 0xBF74, 0x7BD9, 0xBF75, 0x7C11, 0xBF76, 0x7BC9, 0xBF77, 0x7BE4, + 0xBF78, 0x7BDB, 0xBF79, 0x7BE1, 0xBF7A, 0x7BE9, 0xBF7B, 0x7BE6, 0xBF7C, 0x7CD5, 0xBF7D, 0x7CD6, 0xBF7E, 0x7E0A, 0xBFA1, 0x7E11, + 0xBFA2, 0x7E08, 0xBFA3, 0x7E1B, 0xBFA4, 0x7E23, 0xBFA5, 0x7E1E, 0xBFA6, 0x7E1D, 0xBFA7, 0x7E09, 0xBFA8, 0x7E10, 0xBFA9, 0x7F79, + 0xBFAA, 0x7FB2, 0xBFAB, 0x7FF0, 0xBFAC, 0x7FF1, 0xBFAD, 0x7FEE, 0xBFAE, 0x8028, 0xBFAF, 0x81B3, 0xBFB0, 0x81A9, 0xBFB1, 0x81A8, + 0xBFB2, 0x81FB, 0xBFB3, 0x8208, 0xBFB4, 0x8258, 0xBFB5, 0x8259, 0xBFB6, 0x854A, 0xBFB7, 0x8559, 0xBFB8, 0x8548, 0xBFB9, 0x8568, + 0xBFBA, 0x8569, 0xBFBB, 0x8543, 0xBFBC, 0x8549, 0xBFBD, 0x856D, 0xBFBE, 0x856A, 0xBFBF, 0x855E, 0xBFC0, 0x8783, 0xBFC1, 0x879F, + 0xBFC2, 0x879E, 0xBFC3, 0x87A2, 0xBFC4, 0x878D, 0xBFC5, 0x8861, 0xBFC6, 0x892A, 0xBFC7, 0x8932, 0xBFC8, 0x8925, 0xBFC9, 0x892B, + 0xBFCA, 0x8921, 0xBFCB, 0x89AA, 0xBFCC, 0x89A6, 0xBFCD, 0x8AE6, 0xBFCE, 0x8AFA, 0xBFCF, 0x8AEB, 0xBFD0, 0x8AF1, 0xBFD1, 0x8B00, + 0xBFD2, 0x8ADC, 0xBFD3, 0x8AE7, 0xBFD4, 0x8AEE, 0xBFD5, 0x8AFE, 0xBFD6, 0x8B01, 0xBFD7, 0x8B02, 0xBFD8, 0x8AF7, 0xBFD9, 0x8AED, + 0xBFDA, 0x8AF3, 0xBFDB, 0x8AF6, 0xBFDC, 0x8AFC, 0xBFDD, 0x8C6B, 0xBFDE, 0x8C6D, 0xBFDF, 0x8C93, 0xBFE0, 0x8CF4, 0xBFE1, 0x8E44, + 0xBFE2, 0x8E31, 0xBFE3, 0x8E34, 0xBFE4, 0x8E42, 0xBFE5, 0x8E39, 0xBFE6, 0x8E35, 0xBFE7, 0x8F3B, 0xBFE8, 0x8F2F, 0xBFE9, 0x8F38, + 0xBFEA, 0x8F33, 0xBFEB, 0x8FA8, 0xBFEC, 0x8FA6, 0xBFED, 0x9075, 0xBFEE, 0x9074, 0xBFEF, 0x9078, 0xBFF0, 0x9072, 0xBFF1, 0x907C, + 0xBFF2, 0x907A, 0xBFF3, 0x9134, 0xBFF4, 0x9192, 0xBFF5, 0x9320, 0xBFF6, 0x9336, 0xBFF7, 0x92F8, 0xBFF8, 0x9333, 0xBFF9, 0x932F, + 0xBFFA, 0x9322, 0xBFFB, 0x92FC, 0xBFFC, 0x932B, 0xBFFD, 0x9304, 0xBFFE, 0x931A, 0xC040, 0x9310, 0xC041, 0x9326, 0xC042, 0x9321, + 0xC043, 0x9315, 0xC044, 0x932E, 0xC045, 0x9319, 0xC046, 0x95BB, 0xC047, 0x96A7, 0xC048, 0x96A8, 0xC049, 0x96AA, 0xC04A, 0x96D5, + 0xC04B, 0x970E, 0xC04C, 0x9711, 0xC04D, 0x9716, 0xC04E, 0x970D, 0xC04F, 0x9713, 0xC050, 0x970F, 0xC051, 0x975B, 0xC052, 0x975C, + 0xC053, 0x9766, 0xC054, 0x9798, 0xC055, 0x9830, 0xC056, 0x9838, 0xC057, 0x983B, 0xC058, 0x9837, 0xC059, 0x982D, 0xC05A, 0x9839, + 0xC05B, 0x9824, 0xC05C, 0x9910, 0xC05D, 0x9928, 0xC05E, 0x991E, 0xC05F, 0x991B, 0xC060, 0x9921, 0xC061, 0x991A, 0xC062, 0x99ED, + 0xC063, 0x99E2, 0xC064, 0x99F1, 0xC065, 0x9AB8, 0xC066, 0x9ABC, 0xC067, 0x9AFB, 0xC068, 0x9AED, 0xC069, 0x9B28, 0xC06A, 0x9B91, + 0xC06B, 0x9D15, 0xC06C, 0x9D23, 0xC06D, 0x9D26, 0xC06E, 0x9D28, 0xC06F, 0x9D12, 0xC070, 0x9D1B, 0xC071, 0x9ED8, 0xC072, 0x9ED4, + 0xC073, 0x9F8D, 0xC074, 0x9F9C, 0xC075, 0x512A, 0xC076, 0x511F, 0xC077, 0x5121, 0xC078, 0x5132, 0xC079, 0x52F5, 0xC07A, 0x568E, + 0xC07B, 0x5680, 0xC07C, 0x5690, 0xC07D, 0x5685, 0xC07E, 0x5687, 0xC0A1, 0x568F, 0xC0A2, 0x58D5, 0xC0A3, 0x58D3, 0xC0A4, 0x58D1, + 0xC0A5, 0x58CE, 0xC0A6, 0x5B30, 0xC0A7, 0x5B2A, 0xC0A8, 0x5B24, 0xC0A9, 0x5B7A, 0xC0AA, 0x5C37, 0xC0AB, 0x5C68, 0xC0AC, 0x5DBC, + 0xC0AD, 0x5DBA, 0xC0AE, 0x5DBD, 0xC0AF, 0x5DB8, 0xC0B0, 0x5E6B, 0xC0B1, 0x5F4C, 0xC0B2, 0x5FBD, 0xC0B3, 0x61C9, 0xC0B4, 0x61C2, + 0xC0B5, 0x61C7, 0xC0B6, 0x61E6, 0xC0B7, 0x61CB, 0xC0B8, 0x6232, 0xC0B9, 0x6234, 0xC0BA, 0x64CE, 0xC0BB, 0x64CA, 0xC0BC, 0x64D8, + 0xC0BD, 0x64E0, 0xC0BE, 0x64F0, 0xC0BF, 0x64E6, 0xC0C0, 0x64EC, 0xC0C1, 0x64F1, 0xC0C2, 0x64E2, 0xC0C3, 0x64ED, 0xC0C4, 0x6582, + 0xC0C5, 0x6583, 0xC0C6, 0x66D9, 0xC0C7, 0x66D6, 0xC0C8, 0x6A80, 0xC0C9, 0x6A94, 0xC0CA, 0x6A84, 0xC0CB, 0x6AA2, 0xC0CC, 0x6A9C, + 0xC0CD, 0x6ADB, 0xC0CE, 0x6AA3, 0xC0CF, 0x6A7E, 0xC0D0, 0x6A97, 0xC0D1, 0x6A90, 0xC0D2, 0x6AA0, 0xC0D3, 0x6B5C, 0xC0D4, 0x6BAE, + 0xC0D5, 0x6BDA, 0xC0D6, 0x6C08, 0xC0D7, 0x6FD8, 0xC0D8, 0x6FF1, 0xC0D9, 0x6FDF, 0xC0DA, 0x6FE0, 0xC0DB, 0x6FDB, 0xC0DC, 0x6FE4, + 0xC0DD, 0x6FEB, 0xC0DE, 0x6FEF, 0xC0DF, 0x6F80, 0xC0E0, 0x6FEC, 0xC0E1, 0x6FE1, 0xC0E2, 0x6FE9, 0xC0E3, 0x6FD5, 0xC0E4, 0x6FEE, + 0xC0E5, 0x6FF0, 0xC0E6, 0x71E7, 0xC0E7, 0x71DF, 0xC0E8, 0x71EE, 0xC0E9, 0x71E6, 0xC0EA, 0x71E5, 0xC0EB, 0x71ED, 0xC0EC, 0x71EC, + 0xC0ED, 0x71F4, 0xC0EE, 0x71E0, 0xC0EF, 0x7235, 0xC0F0, 0x7246, 0xC0F1, 0x7370, 0xC0F2, 0x7372, 0xC0F3, 0x74A9, 0xC0F4, 0x74B0, + 0xC0F5, 0x74A6, 0xC0F6, 0x74A8, 0xC0F7, 0x7646, 0xC0F8, 0x7642, 0xC0F9, 0x764C, 0xC0FA, 0x76EA, 0xC0FB, 0x77B3, 0xC0FC, 0x77AA, + 0xC0FD, 0x77B0, 0xC0FE, 0x77AC, 0xC140, 0x77A7, 0xC141, 0x77AD, 0xC142, 0x77EF, 0xC143, 0x78F7, 0xC144, 0x78FA, 0xC145, 0x78F4, + 0xC146, 0x78EF, 0xC147, 0x7901, 0xC148, 0x79A7, 0xC149, 0x79AA, 0xC14A, 0x7A57, 0xC14B, 0x7ABF, 0xC14C, 0x7C07, 0xC14D, 0x7C0D, + 0xC14E, 0x7BFE, 0xC14F, 0x7BF7, 0xC150, 0x7C0C, 0xC151, 0x7BE0, 0xC152, 0x7CE0, 0xC153, 0x7CDC, 0xC154, 0x7CDE, 0xC155, 0x7CE2, + 0xC156, 0x7CDF, 0xC157, 0x7CD9, 0xC158, 0x7CDD, 0xC159, 0x7E2E, 0xC15A, 0x7E3E, 0xC15B, 0x7E46, 0xC15C, 0x7E37, 0xC15D, 0x7E32, + 0xC15E, 0x7E43, 0xC15F, 0x7E2B, 0xC160, 0x7E3D, 0xC161, 0x7E31, 0xC162, 0x7E45, 0xC163, 0x7E41, 0xC164, 0x7E34, 0xC165, 0x7E39, + 0xC166, 0x7E48, 0xC167, 0x7E35, 0xC168, 0x7E3F, 0xC169, 0x7E2F, 0xC16A, 0x7F44, 0xC16B, 0x7FF3, 0xC16C, 0x7FFC, 0xC16D, 0x8071, + 0xC16E, 0x8072, 0xC16F, 0x8070, 0xC170, 0x806F, 0xC171, 0x8073, 0xC172, 0x81C6, 0xC173, 0x81C3, 0xC174, 0x81BA, 0xC175, 0x81C2, + 0xC176, 0x81C0, 0xC177, 0x81BF, 0xC178, 0x81BD, 0xC179, 0x81C9, 0xC17A, 0x81BE, 0xC17B, 0x81E8, 0xC17C, 0x8209, 0xC17D, 0x8271, + 0xC17E, 0x85AA, 0xC1A1, 0x8584, 0xC1A2, 0x857E, 0xC1A3, 0x859C, 0xC1A4, 0x8591, 0xC1A5, 0x8594, 0xC1A6, 0x85AF, 0xC1A7, 0x859B, + 0xC1A8, 0x8587, 0xC1A9, 0x85A8, 0xC1AA, 0x858A, 0xC1AB, 0x8667, 0xC1AC, 0x87C0, 0xC1AD, 0x87D1, 0xC1AE, 0x87B3, 0xC1AF, 0x87D2, + 0xC1B0, 0x87C6, 0xC1B1, 0x87AB, 0xC1B2, 0x87BB, 0xC1B3, 0x87BA, 0xC1B4, 0x87C8, 0xC1B5, 0x87CB, 0xC1B6, 0x893B, 0xC1B7, 0x8936, + 0xC1B8, 0x8944, 0xC1B9, 0x8938, 0xC1BA, 0x893D, 0xC1BB, 0x89AC, 0xC1BC, 0x8B0E, 0xC1BD, 0x8B17, 0xC1BE, 0x8B19, 0xC1BF, 0x8B1B, + 0xC1C0, 0x8B0A, 0xC1C1, 0x8B20, 0xC1C2, 0x8B1D, 0xC1C3, 0x8B04, 0xC1C4, 0x8B10, 0xC1C5, 0x8C41, 0xC1C6, 0x8C3F, 0xC1C7, 0x8C73, + 0xC1C8, 0x8CFA, 0xC1C9, 0x8CFD, 0xC1CA, 0x8CFC, 0xC1CB, 0x8CF8, 0xC1CC, 0x8CFB, 0xC1CD, 0x8DA8, 0xC1CE, 0x8E49, 0xC1CF, 0x8E4B, + 0xC1D0, 0x8E48, 0xC1D1, 0x8E4A, 0xC1D2, 0x8F44, 0xC1D3, 0x8F3E, 0xC1D4, 0x8F42, 0xC1D5, 0x8F45, 0xC1D6, 0x8F3F, 0xC1D7, 0x907F, + 0xC1D8, 0x907D, 0xC1D9, 0x9084, 0xC1DA, 0x9081, 0xC1DB, 0x9082, 0xC1DC, 0x9080, 0xC1DD, 0x9139, 0xC1DE, 0x91A3, 0xC1DF, 0x919E, + 0xC1E0, 0x919C, 0xC1E1, 0x934D, 0xC1E2, 0x9382, 0xC1E3, 0x9328, 0xC1E4, 0x9375, 0xC1E5, 0x934A, 0xC1E6, 0x9365, 0xC1E7, 0x934B, + 0xC1E8, 0x9318, 0xC1E9, 0x937E, 0xC1EA, 0x936C, 0xC1EB, 0x935B, 0xC1EC, 0x9370, 0xC1ED, 0x935A, 0xC1EE, 0x9354, 0xC1EF, 0x95CA, + 0xC1F0, 0x95CB, 0xC1F1, 0x95CC, 0xC1F2, 0x95C8, 0xC1F3, 0x95C6, 0xC1F4, 0x96B1, 0xC1F5, 0x96B8, 0xC1F6, 0x96D6, 0xC1F7, 0x971C, + 0xC1F8, 0x971E, 0xC1F9, 0x97A0, 0xC1FA, 0x97D3, 0xC1FB, 0x9846, 0xC1FC, 0x98B6, 0xC1FD, 0x9935, 0xC1FE, 0x9A01, 0xC240, 0x99FF, + 0xC241, 0x9BAE, 0xC242, 0x9BAB, 0xC243, 0x9BAA, 0xC244, 0x9BAD, 0xC245, 0x9D3B, 0xC246, 0x9D3F, 0xC247, 0x9E8B, 0xC248, 0x9ECF, + 0xC249, 0x9EDE, 0xC24A, 0x9EDC, 0xC24B, 0x9EDD, 0xC24C, 0x9EDB, 0xC24D, 0x9F3E, 0xC24E, 0x9F4B, 0xC24F, 0x53E2, 0xC250, 0x5695, + 0xC251, 0x56AE, 0xC252, 0x58D9, 0xC253, 0x58D8, 0xC254, 0x5B38, 0xC255, 0x5F5D, 0xC256, 0x61E3, 0xC257, 0x6233, 0xC258, 0x64F4, + 0xC259, 0x64F2, 0xC25A, 0x64FE, 0xC25B, 0x6506, 0xC25C, 0x64FA, 0xC25D, 0x64FB, 0xC25E, 0x64F7, 0xC25F, 0x65B7, 0xC260, 0x66DC, + 0xC261, 0x6726, 0xC262, 0x6AB3, 0xC263, 0x6AAC, 0xC264, 0x6AC3, 0xC265, 0x6ABB, 0xC266, 0x6AB8, 0xC267, 0x6AC2, 0xC268, 0x6AAE, + 0xC269, 0x6AAF, 0xC26A, 0x6B5F, 0xC26B, 0x6B78, 0xC26C, 0x6BAF, 0xC26D, 0x7009, 0xC26E, 0x700B, 0xC26F, 0x6FFE, 0xC270, 0x7006, + 0xC271, 0x6FFA, 0xC272, 0x7011, 0xC273, 0x700F, 0xC274, 0x71FB, 0xC275, 0x71FC, 0xC276, 0x71FE, 0xC277, 0x71F8, 0xC278, 0x7377, + 0xC279, 0x7375, 0xC27A, 0x74A7, 0xC27B, 0x74BF, 0xC27C, 0x7515, 0xC27D, 0x7656, 0xC27E, 0x7658, 0xC2A1, 0x7652, 0xC2A2, 0x77BD, + 0xC2A3, 0x77BF, 0xC2A4, 0x77BB, 0xC2A5, 0x77BC, 0xC2A6, 0x790E, 0xC2A7, 0x79AE, 0xC2A8, 0x7A61, 0xC2A9, 0x7A62, 0xC2AA, 0x7A60, + 0xC2AB, 0x7AC4, 0xC2AC, 0x7AC5, 0xC2AD, 0x7C2B, 0xC2AE, 0x7C27, 0xC2AF, 0x7C2A, 0xC2B0, 0x7C1E, 0xC2B1, 0x7C23, 0xC2B2, 0x7C21, + 0xC2B3, 0x7CE7, 0xC2B4, 0x7E54, 0xC2B5, 0x7E55, 0xC2B6, 0x7E5E, 0xC2B7, 0x7E5A, 0xC2B8, 0x7E61, 0xC2B9, 0x7E52, 0xC2BA, 0x7E59, + 0xC2BB, 0x7F48, 0xC2BC, 0x7FF9, 0xC2BD, 0x7FFB, 0xC2BE, 0x8077, 0xC2BF, 0x8076, 0xC2C0, 0x81CD, 0xC2C1, 0x81CF, 0xC2C2, 0x820A, + 0xC2C3, 0x85CF, 0xC2C4, 0x85A9, 0xC2C5, 0x85CD, 0xC2C6, 0x85D0, 0xC2C7, 0x85C9, 0xC2C8, 0x85B0, 0xC2C9, 0x85BA, 0xC2CA, 0x85B9, + 0xC2CB, 0x85A6, 0xC2CC, 0x87EF, 0xC2CD, 0x87EC, 0xC2CE, 0x87F2, 0xC2CF, 0x87E0, 0xC2D0, 0x8986, 0xC2D1, 0x89B2, 0xC2D2, 0x89F4, + 0xC2D3, 0x8B28, 0xC2D4, 0x8B39, 0xC2D5, 0x8B2C, 0xC2D6, 0x8B2B, 0xC2D7, 0x8C50, 0xC2D8, 0x8D05, 0xC2D9, 0x8E59, 0xC2DA, 0x8E63, + 0xC2DB, 0x8E66, 0xC2DC, 0x8E64, 0xC2DD, 0x8E5F, 0xC2DE, 0x8E55, 0xC2DF, 0x8EC0, 0xC2E0, 0x8F49, 0xC2E1, 0x8F4D, 0xC2E2, 0x9087, + 0xC2E3, 0x9083, 0xC2E4, 0x9088, 0xC2E5, 0x91AB, 0xC2E6, 0x91AC, 0xC2E7, 0x91D0, 0xC2E8, 0x9394, 0xC2E9, 0x938A, 0xC2EA, 0x9396, + 0xC2EB, 0x93A2, 0xC2EC, 0x93B3, 0xC2ED, 0x93AE, 0xC2EE, 0x93AC, 0xC2EF, 0x93B0, 0xC2F0, 0x9398, 0xC2F1, 0x939A, 0xC2F2, 0x9397, + 0xC2F3, 0x95D4, 0xC2F4, 0x95D6, 0xC2F5, 0x95D0, 0xC2F6, 0x95D5, 0xC2F7, 0x96E2, 0xC2F8, 0x96DC, 0xC2F9, 0x96D9, 0xC2FA, 0x96DB, + 0xC2FB, 0x96DE, 0xC2FC, 0x9724, 0xC2FD, 0x97A3, 0xC2FE, 0x97A6, 0xC340, 0x97AD, 0xC341, 0x97F9, 0xC342, 0x984D, 0xC343, 0x984F, + 0xC344, 0x984C, 0xC345, 0x984E, 0xC346, 0x9853, 0xC347, 0x98BA, 0xC348, 0x993E, 0xC349, 0x993F, 0xC34A, 0x993D, 0xC34B, 0x992E, + 0xC34C, 0x99A5, 0xC34D, 0x9A0E, 0xC34E, 0x9AC1, 0xC34F, 0x9B03, 0xC350, 0x9B06, 0xC351, 0x9B4F, 0xC352, 0x9B4E, 0xC353, 0x9B4D, + 0xC354, 0x9BCA, 0xC355, 0x9BC9, 0xC356, 0x9BFD, 0xC357, 0x9BC8, 0xC358, 0x9BC0, 0xC359, 0x9D51, 0xC35A, 0x9D5D, 0xC35B, 0x9D60, + 0xC35C, 0x9EE0, 0xC35D, 0x9F15, 0xC35E, 0x9F2C, 0xC35F, 0x5133, 0xC360, 0x56A5, 0xC361, 0x58DE, 0xC362, 0x58DF, 0xC363, 0x58E2, + 0xC364, 0x5BF5, 0xC365, 0x9F90, 0xC366, 0x5EEC, 0xC367, 0x61F2, 0xC368, 0x61F7, 0xC369, 0x61F6, 0xC36A, 0x61F5, 0xC36B, 0x6500, + 0xC36C, 0x650F, 0xC36D, 0x66E0, 0xC36E, 0x66DD, 0xC36F, 0x6AE5, 0xC370, 0x6ADD, 0xC371, 0x6ADA, 0xC372, 0x6AD3, 0xC373, 0x701B, + 0xC374, 0x701F, 0xC375, 0x7028, 0xC376, 0x701A, 0xC377, 0x701D, 0xC378, 0x7015, 0xC379, 0x7018, 0xC37A, 0x7206, 0xC37B, 0x720D, + 0xC37C, 0x7258, 0xC37D, 0x72A2, 0xC37E, 0x7378, 0xC3A1, 0x737A, 0xC3A2, 0x74BD, 0xC3A3, 0x74CA, 0xC3A4, 0x74E3, 0xC3A5, 0x7587, + 0xC3A6, 0x7586, 0xC3A7, 0x765F, 0xC3A8, 0x7661, 0xC3A9, 0x77C7, 0xC3AA, 0x7919, 0xC3AB, 0x79B1, 0xC3AC, 0x7A6B, 0xC3AD, 0x7A69, + 0xC3AE, 0x7C3E, 0xC3AF, 0x7C3F, 0xC3B0, 0x7C38, 0xC3B1, 0x7C3D, 0xC3B2, 0x7C37, 0xC3B3, 0x7C40, 0xC3B4, 0x7E6B, 0xC3B5, 0x7E6D, + 0xC3B6, 0x7E79, 0xC3B7, 0x7E69, 0xC3B8, 0x7E6A, 0xC3B9, 0x7F85, 0xC3BA, 0x7E73, 0xC3BB, 0x7FB6, 0xC3BC, 0x7FB9, 0xC3BD, 0x7FB8, + 0xC3BE, 0x81D8, 0xC3BF, 0x85E9, 0xC3C0, 0x85DD, 0xC3C1, 0x85EA, 0xC3C2, 0x85D5, 0xC3C3, 0x85E4, 0xC3C4, 0x85E5, 0xC3C5, 0x85F7, + 0xC3C6, 0x87FB, 0xC3C7, 0x8805, 0xC3C8, 0x880D, 0xC3C9, 0x87F9, 0xC3CA, 0x87FE, 0xC3CB, 0x8960, 0xC3CC, 0x895F, 0xC3CD, 0x8956, + 0xC3CE, 0x895E, 0xC3CF, 0x8B41, 0xC3D0, 0x8B5C, 0xC3D1, 0x8B58, 0xC3D2, 0x8B49, 0xC3D3, 0x8B5A, 0xC3D4, 0x8B4E, 0xC3D5, 0x8B4F, + 0xC3D6, 0x8B46, 0xC3D7, 0x8B59, 0xC3D8, 0x8D08, 0xC3D9, 0x8D0A, 0xC3DA, 0x8E7C, 0xC3DB, 0x8E72, 0xC3DC, 0x8E87, 0xC3DD, 0x8E76, + 0xC3DE, 0x8E6C, 0xC3DF, 0x8E7A, 0xC3E0, 0x8E74, 0xC3E1, 0x8F54, 0xC3E2, 0x8F4E, 0xC3E3, 0x8FAD, 0xC3E4, 0x908A, 0xC3E5, 0x908B, + 0xC3E6, 0x91B1, 0xC3E7, 0x91AE, 0xC3E8, 0x93E1, 0xC3E9, 0x93D1, 0xC3EA, 0x93DF, 0xC3EB, 0x93C3, 0xC3EC, 0x93C8, 0xC3ED, 0x93DC, + 0xC3EE, 0x93DD, 0xC3EF, 0x93D6, 0xC3F0, 0x93E2, 0xC3F1, 0x93CD, 0xC3F2, 0x93D8, 0xC3F3, 0x93E4, 0xC3F4, 0x93D7, 0xC3F5, 0x93E8, + 0xC3F6, 0x95DC, 0xC3F7, 0x96B4, 0xC3F8, 0x96E3, 0xC3F9, 0x972A, 0xC3FA, 0x9727, 0xC3FB, 0x9761, 0xC3FC, 0x97DC, 0xC3FD, 0x97FB, + 0xC3FE, 0x985E, 0xC440, 0x9858, 0xC441, 0x985B, 0xC442, 0x98BC, 0xC443, 0x9945, 0xC444, 0x9949, 0xC445, 0x9A16, 0xC446, 0x9A19, + 0xC447, 0x9B0D, 0xC448, 0x9BE8, 0xC449, 0x9BE7, 0xC44A, 0x9BD6, 0xC44B, 0x9BDB, 0xC44C, 0x9D89, 0xC44D, 0x9D61, 0xC44E, 0x9D72, + 0xC44F, 0x9D6A, 0xC450, 0x9D6C, 0xC451, 0x9E92, 0xC452, 0x9E97, 0xC453, 0x9E93, 0xC454, 0x9EB4, 0xC455, 0x52F8, 0xC456, 0x56A8, + 0xC457, 0x56B7, 0xC458, 0x56B6, 0xC459, 0x56B4, 0xC45A, 0x56BC, 0xC45B, 0x58E4, 0xC45C, 0x5B40, 0xC45D, 0x5B43, 0xC45E, 0x5B7D, + 0xC45F, 0x5BF6, 0xC460, 0x5DC9, 0xC461, 0x61F8, 0xC462, 0x61FA, 0xC463, 0x6518, 0xC464, 0x6514, 0xC465, 0x6519, 0xC466, 0x66E6, + 0xC467, 0x6727, 0xC468, 0x6AEC, 0xC469, 0x703E, 0xC46A, 0x7030, 0xC46B, 0x7032, 0xC46C, 0x7210, 0xC46D, 0x737B, 0xC46E, 0x74CF, + 0xC46F, 0x7662, 0xC470, 0x7665, 0xC471, 0x7926, 0xC472, 0x792A, 0xC473, 0x792C, 0xC474, 0x792B, 0xC475, 0x7AC7, 0xC476, 0x7AF6, + 0xC477, 0x7C4C, 0xC478, 0x7C43, 0xC479, 0x7C4D, 0xC47A, 0x7CEF, 0xC47B, 0x7CF0, 0xC47C, 0x8FAE, 0xC47D, 0x7E7D, 0xC47E, 0x7E7C, + 0xC4A1, 0x7E82, 0xC4A2, 0x7F4C, 0xC4A3, 0x8000, 0xC4A4, 0x81DA, 0xC4A5, 0x8266, 0xC4A6, 0x85FB, 0xC4A7, 0x85F9, 0xC4A8, 0x8611, + 0xC4A9, 0x85FA, 0xC4AA, 0x8606, 0xC4AB, 0x860B, 0xC4AC, 0x8607, 0xC4AD, 0x860A, 0xC4AE, 0x8814, 0xC4AF, 0x8815, 0xC4B0, 0x8964, + 0xC4B1, 0x89BA, 0xC4B2, 0x89F8, 0xC4B3, 0x8B70, 0xC4B4, 0x8B6C, 0xC4B5, 0x8B66, 0xC4B6, 0x8B6F, 0xC4B7, 0x8B5F, 0xC4B8, 0x8B6B, + 0xC4B9, 0x8D0F, 0xC4BA, 0x8D0D, 0xC4BB, 0x8E89, 0xC4BC, 0x8E81, 0xC4BD, 0x8E85, 0xC4BE, 0x8E82, 0xC4BF, 0x91B4, 0xC4C0, 0x91CB, + 0xC4C1, 0x9418, 0xC4C2, 0x9403, 0xC4C3, 0x93FD, 0xC4C4, 0x95E1, 0xC4C5, 0x9730, 0xC4C6, 0x98C4, 0xC4C7, 0x9952, 0xC4C8, 0x9951, + 0xC4C9, 0x99A8, 0xC4CA, 0x9A2B, 0xC4CB, 0x9A30, 0xC4CC, 0x9A37, 0xC4CD, 0x9A35, 0xC4CE, 0x9C13, 0xC4CF, 0x9C0D, 0xC4D0, 0x9E79, + 0xC4D1, 0x9EB5, 0xC4D2, 0x9EE8, 0xC4D3, 0x9F2F, 0xC4D4, 0x9F5F, 0xC4D5, 0x9F63, 0xC4D6, 0x9F61, 0xC4D7, 0x5137, 0xC4D8, 0x5138, + 0xC4D9, 0x56C1, 0xC4DA, 0x56C0, 0xC4DB, 0x56C2, 0xC4DC, 0x5914, 0xC4DD, 0x5C6C, 0xC4DE, 0x5DCD, 0xC4DF, 0x61FC, 0xC4E0, 0x61FE, + 0xC4E1, 0x651D, 0xC4E2, 0x651C, 0xC4E3, 0x6595, 0xC4E4, 0x66E9, 0xC4E5, 0x6AFB, 0xC4E6, 0x6B04, 0xC4E7, 0x6AFA, 0xC4E8, 0x6BB2, + 0xC4E9, 0x704C, 0xC4EA, 0x721B, 0xC4EB, 0x72A7, 0xC4EC, 0x74D6, 0xC4ED, 0x74D4, 0xC4EE, 0x7669, 0xC4EF, 0x77D3, 0xC4F0, 0x7C50, + 0xC4F1, 0x7E8F, 0xC4F2, 0x7E8C, 0xC4F3, 0x7FBC, 0xC4F4, 0x8617, 0xC4F5, 0x862D, 0xC4F6, 0x861A, 0xC4F7, 0x8823, 0xC4F8, 0x8822, + 0xC4F9, 0x8821, 0xC4FA, 0x881F, 0xC4FB, 0x896A, 0xC4FC, 0x896C, 0xC4FD, 0x89BD, 0xC4FE, 0x8B74, 0xC540, 0x8B77, 0xC541, 0x8B7D, + 0xC542, 0x8D13, 0xC543, 0x8E8A, 0xC544, 0x8E8D, 0xC545, 0x8E8B, 0xC546, 0x8F5F, 0xC547, 0x8FAF, 0xC548, 0x91BA, 0xC549, 0x942E, + 0xC54A, 0x9433, 0xC54B, 0x9435, 0xC54C, 0x943A, 0xC54D, 0x9438, 0xC54E, 0x9432, 0xC54F, 0x942B, 0xC550, 0x95E2, 0xC551, 0x9738, + 0xC552, 0x9739, 0xC553, 0x9732, 0xC554, 0x97FF, 0xC555, 0x9867, 0xC556, 0x9865, 0xC557, 0x9957, 0xC558, 0x9A45, 0xC559, 0x9A43, + 0xC55A, 0x9A40, 0xC55B, 0x9A3E, 0xC55C, 0x9ACF, 0xC55D, 0x9B54, 0xC55E, 0x9B51, 0xC55F, 0x9C2D, 0xC560, 0x9C25, 0xC561, 0x9DAF, + 0xC562, 0x9DB4, 0xC563, 0x9DC2, 0xC564, 0x9DB8, 0xC565, 0x9E9D, 0xC566, 0x9EEF, 0xC567, 0x9F19, 0xC568, 0x9F5C, 0xC569, 0x9F66, + 0xC56A, 0x9F67, 0xC56B, 0x513C, 0xC56C, 0x513B, 0xC56D, 0x56C8, 0xC56E, 0x56CA, 0xC56F, 0x56C9, 0xC570, 0x5B7F, 0xC571, 0x5DD4, + 0xC572, 0x5DD2, 0xC573, 0x5F4E, 0xC574, 0x61FF, 0xC575, 0x6524, 0xC576, 0x6B0A, 0xC577, 0x6B61, 0xC578, 0x7051, 0xC579, 0x7058, + 0xC57A, 0x7380, 0xC57B, 0x74E4, 0xC57C, 0x758A, 0xC57D, 0x766E, 0xC57E, 0x766C, 0xC5A1, 0x79B3, 0xC5A2, 0x7C60, 0xC5A3, 0x7C5F, + 0xC5A4, 0x807E, 0xC5A5, 0x807D, 0xC5A6, 0x81DF, 0xC5A7, 0x8972, 0xC5A8, 0x896F, 0xC5A9, 0x89FC, 0xC5AA, 0x8B80, 0xC5AB, 0x8D16, + 0xC5AC, 0x8D17, 0xC5AD, 0x8E91, 0xC5AE, 0x8E93, 0xC5AF, 0x8F61, 0xC5B0, 0x9148, 0xC5B1, 0x9444, 0xC5B2, 0x9451, 0xC5B3, 0x9452, + 0xC5B4, 0x973D, 0xC5B5, 0x973E, 0xC5B6, 0x97C3, 0xC5B7, 0x97C1, 0xC5B8, 0x986B, 0xC5B9, 0x9955, 0xC5BA, 0x9A55, 0xC5BB, 0x9A4D, + 0xC5BC, 0x9AD2, 0xC5BD, 0x9B1A, 0xC5BE, 0x9C49, 0xC5BF, 0x9C31, 0xC5C0, 0x9C3E, 0xC5C1, 0x9C3B, 0xC5C2, 0x9DD3, 0xC5C3, 0x9DD7, + 0xC5C4, 0x9F34, 0xC5C5, 0x9F6C, 0xC5C6, 0x9F6A, 0xC5C7, 0x9F94, 0xC5C8, 0x56CC, 0xC5C9, 0x5DD6, 0xC5CA, 0x6200, 0xC5CB, 0x6523, + 0xC5CC, 0x652B, 0xC5CD, 0x652A, 0xC5CE, 0x66EC, 0xC5CF, 0x6B10, 0xC5D0, 0x74DA, 0xC5D1, 0x7ACA, 0xC5D2, 0x7C64, 0xC5D3, 0x7C63, + 0xC5D4, 0x7C65, 0xC5D5, 0x7E93, 0xC5D6, 0x7E96, 0xC5D7, 0x7E94, 0xC5D8, 0x81E2, 0xC5D9, 0x8638, 0xC5DA, 0x863F, 0xC5DB, 0x8831, + 0xC5DC, 0x8B8A, 0xC5DD, 0x9090, 0xC5DE, 0x908F, 0xC5DF, 0x9463, 0xC5E0, 0x9460, 0xC5E1, 0x9464, 0xC5E2, 0x9768, 0xC5E3, 0x986F, + 0xC5E4, 0x995C, 0xC5E5, 0x9A5A, 0xC5E6, 0x9A5B, 0xC5E7, 0x9A57, 0xC5E8, 0x9AD3, 0xC5E9, 0x9AD4, 0xC5EA, 0x9AD1, 0xC5EB, 0x9C54, + 0xC5EC, 0x9C57, 0xC5ED, 0x9C56, 0xC5EE, 0x9DE5, 0xC5EF, 0x9E9F, 0xC5F0, 0x9EF4, 0xC5F1, 0x56D1, 0xC5F2, 0x58E9, 0xC5F3, 0x652C, + 0xC5F4, 0x705E, 0xC5F5, 0x7671, 0xC5F6, 0x7672, 0xC5F7, 0x77D7, 0xC5F8, 0x7F50, 0xC5F9, 0x7F88, 0xC5FA, 0x8836, 0xC5FB, 0x8839, + 0xC5FC, 0x8862, 0xC5FD, 0x8B93, 0xC5FE, 0x8B92, 0xC640, 0x8B96, 0xC641, 0x8277, 0xC642, 0x8D1B, 0xC643, 0x91C0, 0xC644, 0x946A, + 0xC645, 0x9742, 0xC646, 0x9748, 0xC647, 0x9744, 0xC648, 0x97C6, 0xC649, 0x9870, 0xC64A, 0x9A5F, 0xC64B, 0x9B22, 0xC64C, 0x9B58, + 0xC64D, 0x9C5F, 0xC64E, 0x9DF9, 0xC64F, 0x9DFA, 0xC650, 0x9E7C, 0xC651, 0x9E7D, 0xC652, 0x9F07, 0xC653, 0x9F77, 0xC654, 0x9F72, + 0xC655, 0x5EF3, 0xC656, 0x6B16, 0xC657, 0x7063, 0xC658, 0x7C6C, 0xC659, 0x7C6E, 0xC65A, 0x883B, 0xC65B, 0x89C0, 0xC65C, 0x8EA1, + 0xC65D, 0x91C1, 0xC65E, 0x9472, 0xC65F, 0x9470, 0xC660, 0x9871, 0xC661, 0x995E, 0xC662, 0x9AD6, 0xC663, 0x9B23, 0xC664, 0x9ECC, + 0xC665, 0x7064, 0xC666, 0x77DA, 0xC667, 0x8B9A, 0xC668, 0x9477, 0xC669, 0x97C9, 0xC66A, 0x9A62, 0xC66B, 0x9A65, 0xC66C, 0x7E9C, + 0xC66D, 0x8B9C, 0xC66E, 0x8EAA, 0xC66F, 0x91C5, 0xC670, 0x947D, 0xC671, 0x947E, 0xC672, 0x947C, 0xC673, 0x9C77, 0xC674, 0x9C78, + 0xC675, 0x9EF7, 0xC676, 0x8C54, 0xC677, 0x947F, 0xC678, 0x9E1A, 0xC679, 0x7228, 0xC67A, 0x9A6A, 0xC67B, 0x9B31, 0xC67C, 0x9E1B, + 0xC67D, 0x9E1E, 0xC67E, 0x7C72, 0xC940, 0x4E42, 0xC941, 0x4E5C, 0xC942, 0x51F5, 0xC943, 0x531A, 0xC944, 0x5382, 0xC945, 0x4E07, + 0xC946, 0x4E0C, 0xC947, 0x4E47, 0xC948, 0x4E8D, 0xC949, 0x56D7, 0xC94A, 0xFA0C, 0xC94B, 0x5C6E, 0xC94C, 0x5F73, 0xC94D, 0x4E0F, + 0xC94E, 0x5187, 0xC94F, 0x4E0E, 0xC950, 0x4E2E, 0xC951, 0x4E93, 0xC952, 0x4EC2, 0xC953, 0x4EC9, 0xC954, 0x4EC8, 0xC955, 0x5198, + 0xC956, 0x52FC, 0xC957, 0x536C, 0xC958, 0x53B9, 0xC959, 0x5720, 0xC95A, 0x5903, 0xC95B, 0x592C, 0xC95C, 0x5C10, 0xC95D, 0x5DFF, + 0xC95E, 0x65E1, 0xC95F, 0x6BB3, 0xC960, 0x6BCC, 0xC961, 0x6C14, 0xC962, 0x723F, 0xC963, 0x4E31, 0xC964, 0x4E3C, 0xC965, 0x4EE8, + 0xC966, 0x4EDC, 0xC967, 0x4EE9, 0xC968, 0x4EE1, 0xC969, 0x4EDD, 0xC96A, 0x4EDA, 0xC96B, 0x520C, 0xC96C, 0x531C, 0xC96D, 0x534C, + 0xC96E, 0x5722, 0xC96F, 0x5723, 0xC970, 0x5917, 0xC971, 0x592F, 0xC972, 0x5B81, 0xC973, 0x5B84, 0xC974, 0x5C12, 0xC975, 0x5C3B, + 0xC976, 0x5C74, 0xC977, 0x5C73, 0xC978, 0x5E04, 0xC979, 0x5E80, 0xC97A, 0x5E82, 0xC97B, 0x5FC9, 0xC97C, 0x6209, 0xC97D, 0x6250, + 0xC97E, 0x6C15, 0xC9A1, 0x6C36, 0xC9A2, 0x6C43, 0xC9A3, 0x6C3F, 0xC9A4, 0x6C3B, 0xC9A5, 0x72AE, 0xC9A6, 0x72B0, 0xC9A7, 0x738A, + 0xC9A8, 0x79B8, 0xC9A9, 0x808A, 0xC9AA, 0x961E, 0xC9AB, 0x4F0E, 0xC9AC, 0x4F18, 0xC9AD, 0x4F2C, 0xC9AE, 0x4EF5, 0xC9AF, 0x4F14, + 0xC9B0, 0x4EF1, 0xC9B1, 0x4F00, 0xC9B2, 0x4EF7, 0xC9B3, 0x4F08, 0xC9B4, 0x4F1D, 0xC9B5, 0x4F02, 0xC9B6, 0x4F05, 0xC9B7, 0x4F22, + 0xC9B8, 0x4F13, 0xC9B9, 0x4F04, 0xC9BA, 0x4EF4, 0xC9BB, 0x4F12, 0xC9BC, 0x51B1, 0xC9BD, 0x5213, 0xC9BE, 0x5209, 0xC9BF, 0x5210, + 0xC9C0, 0x52A6, 0xC9C1, 0x5322, 0xC9C2, 0x531F, 0xC9C3, 0x534D, 0xC9C4, 0x538A, 0xC9C5, 0x5407, 0xC9C6, 0x56E1, 0xC9C7, 0x56DF, + 0xC9C8, 0x572E, 0xC9C9, 0x572A, 0xC9CA, 0x5734, 0xC9CB, 0x593C, 0xC9CC, 0x5980, 0xC9CD, 0x597C, 0xC9CE, 0x5985, 0xC9CF, 0x597B, + 0xC9D0, 0x597E, 0xC9D1, 0x5977, 0xC9D2, 0x597F, 0xC9D3, 0x5B56, 0xC9D4, 0x5C15, 0xC9D5, 0x5C25, 0xC9D6, 0x5C7C, 0xC9D7, 0x5C7A, + 0xC9D8, 0x5C7B, 0xC9D9, 0x5C7E, 0xC9DA, 0x5DDF, 0xC9DB, 0x5E75, 0xC9DC, 0x5E84, 0xC9DD, 0x5F02, 0xC9DE, 0x5F1A, 0xC9DF, 0x5F74, + 0xC9E0, 0x5FD5, 0xC9E1, 0x5FD4, 0xC9E2, 0x5FCF, 0xC9E3, 0x625C, 0xC9E4, 0x625E, 0xC9E5, 0x6264, 0xC9E6, 0x6261, 0xC9E7, 0x6266, + 0xC9E8, 0x6262, 0xC9E9, 0x6259, 0xC9EA, 0x6260, 0xC9EB, 0x625A, 0xC9EC, 0x6265, 0xC9ED, 0x65EF, 0xC9EE, 0x65EE, 0xC9EF, 0x673E, + 0xC9F0, 0x6739, 0xC9F1, 0x6738, 0xC9F2, 0x673B, 0xC9F3, 0x673A, 0xC9F4, 0x673F, 0xC9F5, 0x673C, 0xC9F6, 0x6733, 0xC9F7, 0x6C18, + 0xC9F8, 0x6C46, 0xC9F9, 0x6C52, 0xC9FA, 0x6C5C, 0xC9FB, 0x6C4F, 0xC9FC, 0x6C4A, 0xC9FD, 0x6C54, 0xC9FE, 0x6C4B, 0xCA40, 0x6C4C, + 0xCA41, 0x7071, 0xCA42, 0x725E, 0xCA43, 0x72B4, 0xCA44, 0x72B5, 0xCA45, 0x738E, 0xCA46, 0x752A, 0xCA47, 0x767F, 0xCA48, 0x7A75, + 0xCA49, 0x7F51, 0xCA4A, 0x8278, 0xCA4B, 0x827C, 0xCA4C, 0x8280, 0xCA4D, 0x827D, 0xCA4E, 0x827F, 0xCA4F, 0x864D, 0xCA50, 0x897E, + 0xCA51, 0x9099, 0xCA52, 0x9097, 0xCA53, 0x9098, 0xCA54, 0x909B, 0xCA55, 0x9094, 0xCA56, 0x9622, 0xCA57, 0x9624, 0xCA58, 0x9620, + 0xCA59, 0x9623, 0xCA5A, 0x4F56, 0xCA5B, 0x4F3B, 0xCA5C, 0x4F62, 0xCA5D, 0x4F49, 0xCA5E, 0x4F53, 0xCA5F, 0x4F64, 0xCA60, 0x4F3E, + 0xCA61, 0x4F67, 0xCA62, 0x4F52, 0xCA63, 0x4F5F, 0xCA64, 0x4F41, 0xCA65, 0x4F58, 0xCA66, 0x4F2D, 0xCA67, 0x4F33, 0xCA68, 0x4F3F, + 0xCA69, 0x4F61, 0xCA6A, 0x518F, 0xCA6B, 0x51B9, 0xCA6C, 0x521C, 0xCA6D, 0x521E, 0xCA6E, 0x5221, 0xCA6F, 0x52AD, 0xCA70, 0x52AE, + 0xCA71, 0x5309, 0xCA72, 0x5363, 0xCA73, 0x5372, 0xCA74, 0x538E, 0xCA75, 0x538F, 0xCA76, 0x5430, 0xCA77, 0x5437, 0xCA78, 0x542A, + 0xCA79, 0x5454, 0xCA7A, 0x5445, 0xCA7B, 0x5419, 0xCA7C, 0x541C, 0xCA7D, 0x5425, 0xCA7E, 0x5418, 0xCAA1, 0x543D, 0xCAA2, 0x544F, + 0xCAA3, 0x5441, 0xCAA4, 0x5428, 0xCAA5, 0x5424, 0xCAA6, 0x5447, 0xCAA7, 0x56EE, 0xCAA8, 0x56E7, 0xCAA9, 0x56E5, 0xCAAA, 0x5741, + 0xCAAB, 0x5745, 0xCAAC, 0x574C, 0xCAAD, 0x5749, 0xCAAE, 0x574B, 0xCAAF, 0x5752, 0xCAB0, 0x5906, 0xCAB1, 0x5940, 0xCAB2, 0x59A6, + 0xCAB3, 0x5998, 0xCAB4, 0x59A0, 0xCAB5, 0x5997, 0xCAB6, 0x598E, 0xCAB7, 0x59A2, 0xCAB8, 0x5990, 0xCAB9, 0x598F, 0xCABA, 0x59A7, + 0xCABB, 0x59A1, 0xCABC, 0x5B8E, 0xCABD, 0x5B92, 0xCABE, 0x5C28, 0xCABF, 0x5C2A, 0xCAC0, 0x5C8D, 0xCAC1, 0x5C8F, 0xCAC2, 0x5C88, + 0xCAC3, 0x5C8B, 0xCAC4, 0x5C89, 0xCAC5, 0x5C92, 0xCAC6, 0x5C8A, 0xCAC7, 0x5C86, 0xCAC8, 0x5C93, 0xCAC9, 0x5C95, 0xCACA, 0x5DE0, + 0xCACB, 0x5E0A, 0xCACC, 0x5E0E, 0xCACD, 0x5E8B, 0xCACE, 0x5E89, 0xCACF, 0x5E8C, 0xCAD0, 0x5E88, 0xCAD1, 0x5E8D, 0xCAD2, 0x5F05, + 0xCAD3, 0x5F1D, 0xCAD4, 0x5F78, 0xCAD5, 0x5F76, 0xCAD6, 0x5FD2, 0xCAD7, 0x5FD1, 0xCAD8, 0x5FD0, 0xCAD9, 0x5FED, 0xCADA, 0x5FE8, + 0xCADB, 0x5FEE, 0xCADC, 0x5FF3, 0xCADD, 0x5FE1, 0xCADE, 0x5FE4, 0xCADF, 0x5FE3, 0xCAE0, 0x5FFA, 0xCAE1, 0x5FEF, 0xCAE2, 0x5FF7, + 0xCAE3, 0x5FFB, 0xCAE4, 0x6000, 0xCAE5, 0x5FF4, 0xCAE6, 0x623A, 0xCAE7, 0x6283, 0xCAE8, 0x628C, 0xCAE9, 0x628E, 0xCAEA, 0x628F, + 0xCAEB, 0x6294, 0xCAEC, 0x6287, 0xCAED, 0x6271, 0xCAEE, 0x627B, 0xCAEF, 0x627A, 0xCAF0, 0x6270, 0xCAF1, 0x6281, 0xCAF2, 0x6288, + 0xCAF3, 0x6277, 0xCAF4, 0x627D, 0xCAF5, 0x6272, 0xCAF6, 0x6274, 0xCAF7, 0x6537, 0xCAF8, 0x65F0, 0xCAF9, 0x65F4, 0xCAFA, 0x65F3, + 0xCAFB, 0x65F2, 0xCAFC, 0x65F5, 0xCAFD, 0x6745, 0xCAFE, 0x6747, 0xCB40, 0x6759, 0xCB41, 0x6755, 0xCB42, 0x674C, 0xCB43, 0x6748, + 0xCB44, 0x675D, 0xCB45, 0x674D, 0xCB46, 0x675A, 0xCB47, 0x674B, 0xCB48, 0x6BD0, 0xCB49, 0x6C19, 0xCB4A, 0x6C1A, 0xCB4B, 0x6C78, + 0xCB4C, 0x6C67, 0xCB4D, 0x6C6B, 0xCB4E, 0x6C84, 0xCB4F, 0x6C8B, 0xCB50, 0x6C8F, 0xCB51, 0x6C71, 0xCB52, 0x6C6F, 0xCB53, 0x6C69, + 0xCB54, 0x6C9A, 0xCB55, 0x6C6D, 0xCB56, 0x6C87, 0xCB57, 0x6C95, 0xCB58, 0x6C9C, 0xCB59, 0x6C66, 0xCB5A, 0x6C73, 0xCB5B, 0x6C65, + 0xCB5C, 0x6C7B, 0xCB5D, 0x6C8E, 0xCB5E, 0x7074, 0xCB5F, 0x707A, 0xCB60, 0x7263, 0xCB61, 0x72BF, 0xCB62, 0x72BD, 0xCB63, 0x72C3, + 0xCB64, 0x72C6, 0xCB65, 0x72C1, 0xCB66, 0x72BA, 0xCB67, 0x72C5, 0xCB68, 0x7395, 0xCB69, 0x7397, 0xCB6A, 0x7393, 0xCB6B, 0x7394, + 0xCB6C, 0x7392, 0xCB6D, 0x753A, 0xCB6E, 0x7539, 0xCB6F, 0x7594, 0xCB70, 0x7595, 0xCB71, 0x7681, 0xCB72, 0x793D, 0xCB73, 0x8034, + 0xCB74, 0x8095, 0xCB75, 0x8099, 0xCB76, 0x8090, 0xCB77, 0x8092, 0xCB78, 0x809C, 0xCB79, 0x8290, 0xCB7A, 0x828F, 0xCB7B, 0x8285, + 0xCB7C, 0x828E, 0xCB7D, 0x8291, 0xCB7E, 0x8293, 0xCBA1, 0x828A, 0xCBA2, 0x8283, 0xCBA3, 0x8284, 0xCBA4, 0x8C78, 0xCBA5, 0x8FC9, + 0xCBA6, 0x8FBF, 0xCBA7, 0x909F, 0xCBA8, 0x90A1, 0xCBA9, 0x90A5, 0xCBAA, 0x909E, 0xCBAB, 0x90A7, 0xCBAC, 0x90A0, 0xCBAD, 0x9630, + 0xCBAE, 0x9628, 0xCBAF, 0x962F, 0xCBB0, 0x962D, 0xCBB1, 0x4E33, 0xCBB2, 0x4F98, 0xCBB3, 0x4F7C, 0xCBB4, 0x4F85, 0xCBB5, 0x4F7D, + 0xCBB6, 0x4F80, 0xCBB7, 0x4F87, 0xCBB8, 0x4F76, 0xCBB9, 0x4F74, 0xCBBA, 0x4F89, 0xCBBB, 0x4F84, 0xCBBC, 0x4F77, 0xCBBD, 0x4F4C, + 0xCBBE, 0x4F97, 0xCBBF, 0x4F6A, 0xCBC0, 0x4F9A, 0xCBC1, 0x4F79, 0xCBC2, 0x4F81, 0xCBC3, 0x4F78, 0xCBC4, 0x4F90, 0xCBC5, 0x4F9C, + 0xCBC6, 0x4F94, 0xCBC7, 0x4F9E, 0xCBC8, 0x4F92, 0xCBC9, 0x4F82, 0xCBCA, 0x4F95, 0xCBCB, 0x4F6B, 0xCBCC, 0x4F6E, 0xCBCD, 0x519E, + 0xCBCE, 0x51BC, 0xCBCF, 0x51BE, 0xCBD0, 0x5235, 0xCBD1, 0x5232, 0xCBD2, 0x5233, 0xCBD3, 0x5246, 0xCBD4, 0x5231, 0xCBD5, 0x52BC, + 0xCBD6, 0x530A, 0xCBD7, 0x530B, 0xCBD8, 0x533C, 0xCBD9, 0x5392, 0xCBDA, 0x5394, 0xCBDB, 0x5487, 0xCBDC, 0x547F, 0xCBDD, 0x5481, + 0xCBDE, 0x5491, 0xCBDF, 0x5482, 0xCBE0, 0x5488, 0xCBE1, 0x546B, 0xCBE2, 0x547A, 0xCBE3, 0x547E, 0xCBE4, 0x5465, 0xCBE5, 0x546C, + 0xCBE6, 0x5474, 0xCBE7, 0x5466, 0xCBE8, 0x548D, 0xCBE9, 0x546F, 0xCBEA, 0x5461, 0xCBEB, 0x5460, 0xCBEC, 0x5498, 0xCBED, 0x5463, + 0xCBEE, 0x5467, 0xCBEF, 0x5464, 0xCBF0, 0x56F7, 0xCBF1, 0x56F9, 0xCBF2, 0x576F, 0xCBF3, 0x5772, 0xCBF4, 0x576D, 0xCBF5, 0x576B, + 0xCBF6, 0x5771, 0xCBF7, 0x5770, 0xCBF8, 0x5776, 0xCBF9, 0x5780, 0xCBFA, 0x5775, 0xCBFB, 0x577B, 0xCBFC, 0x5773, 0xCBFD, 0x5774, + 0xCBFE, 0x5762, 0xCC40, 0x5768, 0xCC41, 0x577D, 0xCC42, 0x590C, 0xCC43, 0x5945, 0xCC44, 0x59B5, 0xCC45, 0x59BA, 0xCC46, 0x59CF, + 0xCC47, 0x59CE, 0xCC48, 0x59B2, 0xCC49, 0x59CC, 0xCC4A, 0x59C1, 0xCC4B, 0x59B6, 0xCC4C, 0x59BC, 0xCC4D, 0x59C3, 0xCC4E, 0x59D6, + 0xCC4F, 0x59B1, 0xCC50, 0x59BD, 0xCC51, 0x59C0, 0xCC52, 0x59C8, 0xCC53, 0x59B4, 0xCC54, 0x59C7, 0xCC55, 0x5B62, 0xCC56, 0x5B65, + 0xCC57, 0x5B93, 0xCC58, 0x5B95, 0xCC59, 0x5C44, 0xCC5A, 0x5C47, 0xCC5B, 0x5CAE, 0xCC5C, 0x5CA4, 0xCC5D, 0x5CA0, 0xCC5E, 0x5CB5, + 0xCC5F, 0x5CAF, 0xCC60, 0x5CA8, 0xCC61, 0x5CAC, 0xCC62, 0x5C9F, 0xCC63, 0x5CA3, 0xCC64, 0x5CAD, 0xCC65, 0x5CA2, 0xCC66, 0x5CAA, + 0xCC67, 0x5CA7, 0xCC68, 0x5C9D, 0xCC69, 0x5CA5, 0xCC6A, 0x5CB6, 0xCC6B, 0x5CB0, 0xCC6C, 0x5CA6, 0xCC6D, 0x5E17, 0xCC6E, 0x5E14, + 0xCC6F, 0x5E19, 0xCC70, 0x5F28, 0xCC71, 0x5F22, 0xCC72, 0x5F23, 0xCC73, 0x5F24, 0xCC74, 0x5F54, 0xCC75, 0x5F82, 0xCC76, 0x5F7E, + 0xCC77, 0x5F7D, 0xCC78, 0x5FDE, 0xCC79, 0x5FE5, 0xCC7A, 0x602D, 0xCC7B, 0x6026, 0xCC7C, 0x6019, 0xCC7D, 0x6032, 0xCC7E, 0x600B, + 0xCCA1, 0x6034, 0xCCA2, 0x600A, 0xCCA3, 0x6017, 0xCCA4, 0x6033, 0xCCA5, 0x601A, 0xCCA6, 0x601E, 0xCCA7, 0x602C, 0xCCA8, 0x6022, + 0xCCA9, 0x600D, 0xCCAA, 0x6010, 0xCCAB, 0x602E, 0xCCAC, 0x6013, 0xCCAD, 0x6011, 0xCCAE, 0x600C, 0xCCAF, 0x6009, 0xCCB0, 0x601C, + 0xCCB1, 0x6214, 0xCCB2, 0x623D, 0xCCB3, 0x62AD, 0xCCB4, 0x62B4, 0xCCB5, 0x62D1, 0xCCB6, 0x62BE, 0xCCB7, 0x62AA, 0xCCB8, 0x62B6, + 0xCCB9, 0x62CA, 0xCCBA, 0x62AE, 0xCCBB, 0x62B3, 0xCCBC, 0x62AF, 0xCCBD, 0x62BB, 0xCCBE, 0x62A9, 0xCCBF, 0x62B0, 0xCCC0, 0x62B8, + 0xCCC1, 0x653D, 0xCCC2, 0x65A8, 0xCCC3, 0x65BB, 0xCCC4, 0x6609, 0xCCC5, 0x65FC, 0xCCC6, 0x6604, 0xCCC7, 0x6612, 0xCCC8, 0x6608, + 0xCCC9, 0x65FB, 0xCCCA, 0x6603, 0xCCCB, 0x660B, 0xCCCC, 0x660D, 0xCCCD, 0x6605, 0xCCCE, 0x65FD, 0xCCCF, 0x6611, 0xCCD0, 0x6610, + 0xCCD1, 0x66F6, 0xCCD2, 0x670A, 0xCCD3, 0x6785, 0xCCD4, 0x676C, 0xCCD5, 0x678E, 0xCCD6, 0x6792, 0xCCD7, 0x6776, 0xCCD8, 0x677B, + 0xCCD9, 0x6798, 0xCCDA, 0x6786, 0xCCDB, 0x6784, 0xCCDC, 0x6774, 0xCCDD, 0x678D, 0xCCDE, 0x678C, 0xCCDF, 0x677A, 0xCCE0, 0x679F, + 0xCCE1, 0x6791, 0xCCE2, 0x6799, 0xCCE3, 0x6783, 0xCCE4, 0x677D, 0xCCE5, 0x6781, 0xCCE6, 0x6778, 0xCCE7, 0x6779, 0xCCE8, 0x6794, + 0xCCE9, 0x6B25, 0xCCEA, 0x6B80, 0xCCEB, 0x6B7E, 0xCCEC, 0x6BDE, 0xCCED, 0x6C1D, 0xCCEE, 0x6C93, 0xCCEF, 0x6CEC, 0xCCF0, 0x6CEB, + 0xCCF1, 0x6CEE, 0xCCF2, 0x6CD9, 0xCCF3, 0x6CB6, 0xCCF4, 0x6CD4, 0xCCF5, 0x6CAD, 0xCCF6, 0x6CE7, 0xCCF7, 0x6CB7, 0xCCF8, 0x6CD0, + 0xCCF9, 0x6CC2, 0xCCFA, 0x6CBA, 0xCCFB, 0x6CC3, 0xCCFC, 0x6CC6, 0xCCFD, 0x6CED, 0xCCFE, 0x6CF2, 0xCD40, 0x6CD2, 0xCD41, 0x6CDD, + 0xCD42, 0x6CB4, 0xCD43, 0x6C8A, 0xCD44, 0x6C9D, 0xCD45, 0x6C80, 0xCD46, 0x6CDE, 0xCD47, 0x6CC0, 0xCD48, 0x6D30, 0xCD49, 0x6CCD, + 0xCD4A, 0x6CC7, 0xCD4B, 0x6CB0, 0xCD4C, 0x6CF9, 0xCD4D, 0x6CCF, 0xCD4E, 0x6CE9, 0xCD4F, 0x6CD1, 0xCD50, 0x7094, 0xCD51, 0x7098, + 0xCD52, 0x7085, 0xCD53, 0x7093, 0xCD54, 0x7086, 0xCD55, 0x7084, 0xCD56, 0x7091, 0xCD57, 0x7096, 0xCD58, 0x7082, 0xCD59, 0x709A, + 0xCD5A, 0x7083, 0xCD5B, 0x726A, 0xCD5C, 0x72D6, 0xCD5D, 0x72CB, 0xCD5E, 0x72D8, 0xCD5F, 0x72C9, 0xCD60, 0x72DC, 0xCD61, 0x72D2, + 0xCD62, 0x72D4, 0xCD63, 0x72DA, 0xCD64, 0x72CC, 0xCD65, 0x72D1, 0xCD66, 0x73A4, 0xCD67, 0x73A1, 0xCD68, 0x73AD, 0xCD69, 0x73A6, + 0xCD6A, 0x73A2, 0xCD6B, 0x73A0, 0xCD6C, 0x73AC, 0xCD6D, 0x739D, 0xCD6E, 0x74DD, 0xCD6F, 0x74E8, 0xCD70, 0x753F, 0xCD71, 0x7540, + 0xCD72, 0x753E, 0xCD73, 0x758C, 0xCD74, 0x7598, 0xCD75, 0x76AF, 0xCD76, 0x76F3, 0xCD77, 0x76F1, 0xCD78, 0x76F0, 0xCD79, 0x76F5, + 0xCD7A, 0x77F8, 0xCD7B, 0x77FC, 0xCD7C, 0x77F9, 0xCD7D, 0x77FB, 0xCD7E, 0x77FA, 0xCDA1, 0x77F7, 0xCDA2, 0x7942, 0xCDA3, 0x793F, + 0xCDA4, 0x79C5, 0xCDA5, 0x7A78, 0xCDA6, 0x7A7B, 0xCDA7, 0x7AFB, 0xCDA8, 0x7C75, 0xCDA9, 0x7CFD, 0xCDAA, 0x8035, 0xCDAB, 0x808F, + 0xCDAC, 0x80AE, 0xCDAD, 0x80A3, 0xCDAE, 0x80B8, 0xCDAF, 0x80B5, 0xCDB0, 0x80AD, 0xCDB1, 0x8220, 0xCDB2, 0x82A0, 0xCDB3, 0x82C0, + 0xCDB4, 0x82AB, 0xCDB5, 0x829A, 0xCDB6, 0x8298, 0xCDB7, 0x829B, 0xCDB8, 0x82B5, 0xCDB9, 0x82A7, 0xCDBA, 0x82AE, 0xCDBB, 0x82BC, + 0xCDBC, 0x829E, 0xCDBD, 0x82BA, 0xCDBE, 0x82B4, 0xCDBF, 0x82A8, 0xCDC0, 0x82A1, 0xCDC1, 0x82A9, 0xCDC2, 0x82C2, 0xCDC3, 0x82A4, + 0xCDC4, 0x82C3, 0xCDC5, 0x82B6, 0xCDC6, 0x82A2, 0xCDC7, 0x8670, 0xCDC8, 0x866F, 0xCDC9, 0x866D, 0xCDCA, 0x866E, 0xCDCB, 0x8C56, + 0xCDCC, 0x8FD2, 0xCDCD, 0x8FCB, 0xCDCE, 0x8FD3, 0xCDCF, 0x8FCD, 0xCDD0, 0x8FD6, 0xCDD1, 0x8FD5, 0xCDD2, 0x8FD7, 0xCDD3, 0x90B2, + 0xCDD4, 0x90B4, 0xCDD5, 0x90AF, 0xCDD6, 0x90B3, 0xCDD7, 0x90B0, 0xCDD8, 0x9639, 0xCDD9, 0x963D, 0xCDDA, 0x963C, 0xCDDB, 0x963A, + 0xCDDC, 0x9643, 0xCDDD, 0x4FCD, 0xCDDE, 0x4FC5, 0xCDDF, 0x4FD3, 0xCDE0, 0x4FB2, 0xCDE1, 0x4FC9, 0xCDE2, 0x4FCB, 0xCDE3, 0x4FC1, + 0xCDE4, 0x4FD4, 0xCDE5, 0x4FDC, 0xCDE6, 0x4FD9, 0xCDE7, 0x4FBB, 0xCDE8, 0x4FB3, 0xCDE9, 0x4FDB, 0xCDEA, 0x4FC7, 0xCDEB, 0x4FD6, + 0xCDEC, 0x4FBA, 0xCDED, 0x4FC0, 0xCDEE, 0x4FB9, 0xCDEF, 0x4FEC, 0xCDF0, 0x5244, 0xCDF1, 0x5249, 0xCDF2, 0x52C0, 0xCDF3, 0x52C2, + 0xCDF4, 0x533D, 0xCDF5, 0x537C, 0xCDF6, 0x5397, 0xCDF7, 0x5396, 0xCDF8, 0x5399, 0xCDF9, 0x5398, 0xCDFA, 0x54BA, 0xCDFB, 0x54A1, + 0xCDFC, 0x54AD, 0xCDFD, 0x54A5, 0xCDFE, 0x54CF, 0xCE40, 0x54C3, 0xCE41, 0x830D, 0xCE42, 0x54B7, 0xCE43, 0x54AE, 0xCE44, 0x54D6, + 0xCE45, 0x54B6, 0xCE46, 0x54C5, 0xCE47, 0x54C6, 0xCE48, 0x54A0, 0xCE49, 0x5470, 0xCE4A, 0x54BC, 0xCE4B, 0x54A2, 0xCE4C, 0x54BE, + 0xCE4D, 0x5472, 0xCE4E, 0x54DE, 0xCE4F, 0x54B0, 0xCE50, 0x57B5, 0xCE51, 0x579E, 0xCE52, 0x579F, 0xCE53, 0x57A4, 0xCE54, 0x578C, + 0xCE55, 0x5797, 0xCE56, 0x579D, 0xCE57, 0x579B, 0xCE58, 0x5794, 0xCE59, 0x5798, 0xCE5A, 0x578F, 0xCE5B, 0x5799, 0xCE5C, 0x57A5, + 0xCE5D, 0x579A, 0xCE5E, 0x5795, 0xCE5F, 0x58F4, 0xCE60, 0x590D, 0xCE61, 0x5953, 0xCE62, 0x59E1, 0xCE63, 0x59DE, 0xCE64, 0x59EE, + 0xCE65, 0x5A00, 0xCE66, 0x59F1, 0xCE67, 0x59DD, 0xCE68, 0x59FA, 0xCE69, 0x59FD, 0xCE6A, 0x59FC, 0xCE6B, 0x59F6, 0xCE6C, 0x59E4, + 0xCE6D, 0x59F2, 0xCE6E, 0x59F7, 0xCE6F, 0x59DB, 0xCE70, 0x59E9, 0xCE71, 0x59F3, 0xCE72, 0x59F5, 0xCE73, 0x59E0, 0xCE74, 0x59FE, + 0xCE75, 0x59F4, 0xCE76, 0x59ED, 0xCE77, 0x5BA8, 0xCE78, 0x5C4C, 0xCE79, 0x5CD0, 0xCE7A, 0x5CD8, 0xCE7B, 0x5CCC, 0xCE7C, 0x5CD7, + 0xCE7D, 0x5CCB, 0xCE7E, 0x5CDB, 0xCEA1, 0x5CDE, 0xCEA2, 0x5CDA, 0xCEA3, 0x5CC9, 0xCEA4, 0x5CC7, 0xCEA5, 0x5CCA, 0xCEA6, 0x5CD6, + 0xCEA7, 0x5CD3, 0xCEA8, 0x5CD4, 0xCEA9, 0x5CCF, 0xCEAA, 0x5CC8, 0xCEAB, 0x5CC6, 0xCEAC, 0x5CCE, 0xCEAD, 0x5CDF, 0xCEAE, 0x5CF8, + 0xCEAF, 0x5DF9, 0xCEB0, 0x5E21, 0xCEB1, 0x5E22, 0xCEB2, 0x5E23, 0xCEB3, 0x5E20, 0xCEB4, 0x5E24, 0xCEB5, 0x5EB0, 0xCEB6, 0x5EA4, + 0xCEB7, 0x5EA2, 0xCEB8, 0x5E9B, 0xCEB9, 0x5EA3, 0xCEBA, 0x5EA5, 0xCEBB, 0x5F07, 0xCEBC, 0x5F2E, 0xCEBD, 0x5F56, 0xCEBE, 0x5F86, + 0xCEBF, 0x6037, 0xCEC0, 0x6039, 0xCEC1, 0x6054, 0xCEC2, 0x6072, 0xCEC3, 0x605E, 0xCEC4, 0x6045, 0xCEC5, 0x6053, 0xCEC6, 0x6047, + 0xCEC7, 0x6049, 0xCEC8, 0x605B, 0xCEC9, 0x604C, 0xCECA, 0x6040, 0xCECB, 0x6042, 0xCECC, 0x605F, 0xCECD, 0x6024, 0xCECE, 0x6044, + 0xCECF, 0x6058, 0xCED0, 0x6066, 0xCED1, 0x606E, 0xCED2, 0x6242, 0xCED3, 0x6243, 0xCED4, 0x62CF, 0xCED5, 0x630D, 0xCED6, 0x630B, + 0xCED7, 0x62F5, 0xCED8, 0x630E, 0xCED9, 0x6303, 0xCEDA, 0x62EB, 0xCEDB, 0x62F9, 0xCEDC, 0x630F, 0xCEDD, 0x630C, 0xCEDE, 0x62F8, + 0xCEDF, 0x62F6, 0xCEE0, 0x6300, 0xCEE1, 0x6313, 0xCEE2, 0x6314, 0xCEE3, 0x62FA, 0xCEE4, 0x6315, 0xCEE5, 0x62FB, 0xCEE6, 0x62F0, + 0xCEE7, 0x6541, 0xCEE8, 0x6543, 0xCEE9, 0x65AA, 0xCEEA, 0x65BF, 0xCEEB, 0x6636, 0xCEEC, 0x6621, 0xCEED, 0x6632, 0xCEEE, 0x6635, + 0xCEEF, 0x661C, 0xCEF0, 0x6626, 0xCEF1, 0x6622, 0xCEF2, 0x6633, 0xCEF3, 0x662B, 0xCEF4, 0x663A, 0xCEF5, 0x661D, 0xCEF6, 0x6634, + 0xCEF7, 0x6639, 0xCEF8, 0x662E, 0xCEF9, 0x670F, 0xCEFA, 0x6710, 0xCEFB, 0x67C1, 0xCEFC, 0x67F2, 0xCEFD, 0x67C8, 0xCEFE, 0x67BA, + 0xCF40, 0x67DC, 0xCF41, 0x67BB, 0xCF42, 0x67F8, 0xCF43, 0x67D8, 0xCF44, 0x67C0, 0xCF45, 0x67B7, 0xCF46, 0x67C5, 0xCF47, 0x67EB, + 0xCF48, 0x67E4, 0xCF49, 0x67DF, 0xCF4A, 0x67B5, 0xCF4B, 0x67CD, 0xCF4C, 0x67B3, 0xCF4D, 0x67F7, 0xCF4E, 0x67F6, 0xCF4F, 0x67EE, + 0xCF50, 0x67E3, 0xCF51, 0x67C2, 0xCF52, 0x67B9, 0xCF53, 0x67CE, 0xCF54, 0x67E7, 0xCF55, 0x67F0, 0xCF56, 0x67B2, 0xCF57, 0x67FC, + 0xCF58, 0x67C6, 0xCF59, 0x67ED, 0xCF5A, 0x67CC, 0xCF5B, 0x67AE, 0xCF5C, 0x67E6, 0xCF5D, 0x67DB, 0xCF5E, 0x67FA, 0xCF5F, 0x67C9, + 0xCF60, 0x67CA, 0xCF61, 0x67C3, 0xCF62, 0x67EA, 0xCF63, 0x67CB, 0xCF64, 0x6B28, 0xCF65, 0x6B82, 0xCF66, 0x6B84, 0xCF67, 0x6BB6, + 0xCF68, 0x6BD6, 0xCF69, 0x6BD8, 0xCF6A, 0x6BE0, 0xCF6B, 0x6C20, 0xCF6C, 0x6C21, 0xCF6D, 0x6D28, 0xCF6E, 0x6D34, 0xCF6F, 0x6D2D, + 0xCF70, 0x6D1F, 0xCF71, 0x6D3C, 0xCF72, 0x6D3F, 0xCF73, 0x6D12, 0xCF74, 0x6D0A, 0xCF75, 0x6CDA, 0xCF76, 0x6D33, 0xCF77, 0x6D04, + 0xCF78, 0x6D19, 0xCF79, 0x6D3A, 0xCF7A, 0x6D1A, 0xCF7B, 0x6D11, 0xCF7C, 0x6D00, 0xCF7D, 0x6D1D, 0xCF7E, 0x6D42, 0xCFA1, 0x6D01, + 0xCFA2, 0x6D18, 0xCFA3, 0x6D37, 0xCFA4, 0x6D03, 0xCFA5, 0x6D0F, 0xCFA6, 0x6D40, 0xCFA7, 0x6D07, 0xCFA8, 0x6D20, 0xCFA9, 0x6D2C, + 0xCFAA, 0x6D08, 0xCFAB, 0x6D22, 0xCFAC, 0x6D09, 0xCFAD, 0x6D10, 0xCFAE, 0x70B7, 0xCFAF, 0x709F, 0xCFB0, 0x70BE, 0xCFB1, 0x70B1, + 0xCFB2, 0x70B0, 0xCFB3, 0x70A1, 0xCFB4, 0x70B4, 0xCFB5, 0x70B5, 0xCFB6, 0x70A9, 0xCFB7, 0x7241, 0xCFB8, 0x7249, 0xCFB9, 0x724A, + 0xCFBA, 0x726C, 0xCFBB, 0x7270, 0xCFBC, 0x7273, 0xCFBD, 0x726E, 0xCFBE, 0x72CA, 0xCFBF, 0x72E4, 0xCFC0, 0x72E8, 0xCFC1, 0x72EB, + 0xCFC2, 0x72DF, 0xCFC3, 0x72EA, 0xCFC4, 0x72E6, 0xCFC5, 0x72E3, 0xCFC6, 0x7385, 0xCFC7, 0x73CC, 0xCFC8, 0x73C2, 0xCFC9, 0x73C8, + 0xCFCA, 0x73C5, 0xCFCB, 0x73B9, 0xCFCC, 0x73B6, 0xCFCD, 0x73B5, 0xCFCE, 0x73B4, 0xCFCF, 0x73EB, 0xCFD0, 0x73BF, 0xCFD1, 0x73C7, + 0xCFD2, 0x73BE, 0xCFD3, 0x73C3, 0xCFD4, 0x73C6, 0xCFD5, 0x73B8, 0xCFD6, 0x73CB, 0xCFD7, 0x74EC, 0xCFD8, 0x74EE, 0xCFD9, 0x752E, + 0xCFDA, 0x7547, 0xCFDB, 0x7548, 0xCFDC, 0x75A7, 0xCFDD, 0x75AA, 0xCFDE, 0x7679, 0xCFDF, 0x76C4, 0xCFE0, 0x7708, 0xCFE1, 0x7703, + 0xCFE2, 0x7704, 0xCFE3, 0x7705, 0xCFE4, 0x770A, 0xCFE5, 0x76F7, 0xCFE6, 0x76FB, 0xCFE7, 0x76FA, 0xCFE8, 0x77E7, 0xCFE9, 0x77E8, + 0xCFEA, 0x7806, 0xCFEB, 0x7811, 0xCFEC, 0x7812, 0xCFED, 0x7805, 0xCFEE, 0x7810, 0xCFEF, 0x780F, 0xCFF0, 0x780E, 0xCFF1, 0x7809, + 0xCFF2, 0x7803, 0xCFF3, 0x7813, 0xCFF4, 0x794A, 0xCFF5, 0x794C, 0xCFF6, 0x794B, 0xCFF7, 0x7945, 0xCFF8, 0x7944, 0xCFF9, 0x79D5, + 0xCFFA, 0x79CD, 0xCFFB, 0x79CF, 0xCFFC, 0x79D6, 0xCFFD, 0x79CE, 0xCFFE, 0x7A80, 0xD040, 0x7A7E, 0xD041, 0x7AD1, 0xD042, 0x7B00, + 0xD043, 0x7B01, 0xD044, 0x7C7A, 0xD045, 0x7C78, 0xD046, 0x7C79, 0xD047, 0x7C7F, 0xD048, 0x7C80, 0xD049, 0x7C81, 0xD04A, 0x7D03, + 0xD04B, 0x7D08, 0xD04C, 0x7D01, 0xD04D, 0x7F58, 0xD04E, 0x7F91, 0xD04F, 0x7F8D, 0xD050, 0x7FBE, 0xD051, 0x8007, 0xD052, 0x800E, + 0xD053, 0x800F, 0xD054, 0x8014, 0xD055, 0x8037, 0xD056, 0x80D8, 0xD057, 0x80C7, 0xD058, 0x80E0, 0xD059, 0x80D1, 0xD05A, 0x80C8, + 0xD05B, 0x80C2, 0xD05C, 0x80D0, 0xD05D, 0x80C5, 0xD05E, 0x80E3, 0xD05F, 0x80D9, 0xD060, 0x80DC, 0xD061, 0x80CA, 0xD062, 0x80D5, + 0xD063, 0x80C9, 0xD064, 0x80CF, 0xD065, 0x80D7, 0xD066, 0x80E6, 0xD067, 0x80CD, 0xD068, 0x81FF, 0xD069, 0x8221, 0xD06A, 0x8294, + 0xD06B, 0x82D9, 0xD06C, 0x82FE, 0xD06D, 0x82F9, 0xD06E, 0x8307, 0xD06F, 0x82E8, 0xD070, 0x8300, 0xD071, 0x82D5, 0xD072, 0x833A, + 0xD073, 0x82EB, 0xD074, 0x82D6, 0xD075, 0x82F4, 0xD076, 0x82EC, 0xD077, 0x82E1, 0xD078, 0x82F2, 0xD079, 0x82F5, 0xD07A, 0x830C, + 0xD07B, 0x82FB, 0xD07C, 0x82F6, 0xD07D, 0x82F0, 0xD07E, 0x82EA, 0xD0A1, 0x82E4, 0xD0A2, 0x82E0, 0xD0A3, 0x82FA, 0xD0A4, 0x82F3, + 0xD0A5, 0x82ED, 0xD0A6, 0x8677, 0xD0A7, 0x8674, 0xD0A8, 0x867C, 0xD0A9, 0x8673, 0xD0AA, 0x8841, 0xD0AB, 0x884E, 0xD0AC, 0x8867, + 0xD0AD, 0x886A, 0xD0AE, 0x8869, 0xD0AF, 0x89D3, 0xD0B0, 0x8A04, 0xD0B1, 0x8A07, 0xD0B2, 0x8D72, 0xD0B3, 0x8FE3, 0xD0B4, 0x8FE1, + 0xD0B5, 0x8FEE, 0xD0B6, 0x8FE0, 0xD0B7, 0x90F1, 0xD0B8, 0x90BD, 0xD0B9, 0x90BF, 0xD0BA, 0x90D5, 0xD0BB, 0x90C5, 0xD0BC, 0x90BE, + 0xD0BD, 0x90C7, 0xD0BE, 0x90CB, 0xD0BF, 0x90C8, 0xD0C0, 0x91D4, 0xD0C1, 0x91D3, 0xD0C2, 0x9654, 0xD0C3, 0x964F, 0xD0C4, 0x9651, + 0xD0C5, 0x9653, 0xD0C6, 0x964A, 0xD0C7, 0x964E, 0xD0C8, 0x501E, 0xD0C9, 0x5005, 0xD0CA, 0x5007, 0xD0CB, 0x5013, 0xD0CC, 0x5022, + 0xD0CD, 0x5030, 0xD0CE, 0x501B, 0xD0CF, 0x4FF5, 0xD0D0, 0x4FF4, 0xD0D1, 0x5033, 0xD0D2, 0x5037, 0xD0D3, 0x502C, 0xD0D4, 0x4FF6, + 0xD0D5, 0x4FF7, 0xD0D6, 0x5017, 0xD0D7, 0x501C, 0xD0D8, 0x5020, 0xD0D9, 0x5027, 0xD0DA, 0x5035, 0xD0DB, 0x502F, 0xD0DC, 0x5031, + 0xD0DD, 0x500E, 0xD0DE, 0x515A, 0xD0DF, 0x5194, 0xD0E0, 0x5193, 0xD0E1, 0x51CA, 0xD0E2, 0x51C4, 0xD0E3, 0x51C5, 0xD0E4, 0x51C8, + 0xD0E5, 0x51CE, 0xD0E6, 0x5261, 0xD0E7, 0x525A, 0xD0E8, 0x5252, 0xD0E9, 0x525E, 0xD0EA, 0x525F, 0xD0EB, 0x5255, 0xD0EC, 0x5262, + 0xD0ED, 0x52CD, 0xD0EE, 0x530E, 0xD0EF, 0x539E, 0xD0F0, 0x5526, 0xD0F1, 0x54E2, 0xD0F2, 0x5517, 0xD0F3, 0x5512, 0xD0F4, 0x54E7, + 0xD0F5, 0x54F3, 0xD0F6, 0x54E4, 0xD0F7, 0x551A, 0xD0F8, 0x54FF, 0xD0F9, 0x5504, 0xD0FA, 0x5508, 0xD0FB, 0x54EB, 0xD0FC, 0x5511, + 0xD0FD, 0x5505, 0xD0FE, 0x54F1, 0xD140, 0x550A, 0xD141, 0x54FB, 0xD142, 0x54F7, 0xD143, 0x54F8, 0xD144, 0x54E0, 0xD145, 0x550E, + 0xD146, 0x5503, 0xD147, 0x550B, 0xD148, 0x5701, 0xD149, 0x5702, 0xD14A, 0x57CC, 0xD14B, 0x5832, 0xD14C, 0x57D5, 0xD14D, 0x57D2, + 0xD14E, 0x57BA, 0xD14F, 0x57C6, 0xD150, 0x57BD, 0xD151, 0x57BC, 0xD152, 0x57B8, 0xD153, 0x57B6, 0xD154, 0x57BF, 0xD155, 0x57C7, + 0xD156, 0x57D0, 0xD157, 0x57B9, 0xD158, 0x57C1, 0xD159, 0x590E, 0xD15A, 0x594A, 0xD15B, 0x5A19, 0xD15C, 0x5A16, 0xD15D, 0x5A2D, + 0xD15E, 0x5A2E, 0xD15F, 0x5A15, 0xD160, 0x5A0F, 0xD161, 0x5A17, 0xD162, 0x5A0A, 0xD163, 0x5A1E, 0xD164, 0x5A33, 0xD165, 0x5B6C, + 0xD166, 0x5BA7, 0xD167, 0x5BAD, 0xD168, 0x5BAC, 0xD169, 0x5C03, 0xD16A, 0x5C56, 0xD16B, 0x5C54, 0xD16C, 0x5CEC, 0xD16D, 0x5CFF, + 0xD16E, 0x5CEE, 0xD16F, 0x5CF1, 0xD170, 0x5CF7, 0xD171, 0x5D00, 0xD172, 0x5CF9, 0xD173, 0x5E29, 0xD174, 0x5E28, 0xD175, 0x5EA8, + 0xD176, 0x5EAE, 0xD177, 0x5EAA, 0xD178, 0x5EAC, 0xD179, 0x5F33, 0xD17A, 0x5F30, 0xD17B, 0x5F67, 0xD17C, 0x605D, 0xD17D, 0x605A, + 0xD17E, 0x6067, 0xD1A1, 0x6041, 0xD1A2, 0x60A2, 0xD1A3, 0x6088, 0xD1A4, 0x6080, 0xD1A5, 0x6092, 0xD1A6, 0x6081, 0xD1A7, 0x609D, + 0xD1A8, 0x6083, 0xD1A9, 0x6095, 0xD1AA, 0x609B, 0xD1AB, 0x6097, 0xD1AC, 0x6087, 0xD1AD, 0x609C, 0xD1AE, 0x608E, 0xD1AF, 0x6219, + 0xD1B0, 0x6246, 0xD1B1, 0x62F2, 0xD1B2, 0x6310, 0xD1B3, 0x6356, 0xD1B4, 0x632C, 0xD1B5, 0x6344, 0xD1B6, 0x6345, 0xD1B7, 0x6336, + 0xD1B8, 0x6343, 0xD1B9, 0x63E4, 0xD1BA, 0x6339, 0xD1BB, 0x634B, 0xD1BC, 0x634A, 0xD1BD, 0x633C, 0xD1BE, 0x6329, 0xD1BF, 0x6341, + 0xD1C0, 0x6334, 0xD1C1, 0x6358, 0xD1C2, 0x6354, 0xD1C3, 0x6359, 0xD1C4, 0x632D, 0xD1C5, 0x6347, 0xD1C6, 0x6333, 0xD1C7, 0x635A, + 0xD1C8, 0x6351, 0xD1C9, 0x6338, 0xD1CA, 0x6357, 0xD1CB, 0x6340, 0xD1CC, 0x6348, 0xD1CD, 0x654A, 0xD1CE, 0x6546, 0xD1CF, 0x65C6, + 0xD1D0, 0x65C3, 0xD1D1, 0x65C4, 0xD1D2, 0x65C2, 0xD1D3, 0x664A, 0xD1D4, 0x665F, 0xD1D5, 0x6647, 0xD1D6, 0x6651, 0xD1D7, 0x6712, + 0xD1D8, 0x6713, 0xD1D9, 0x681F, 0xD1DA, 0x681A, 0xD1DB, 0x6849, 0xD1DC, 0x6832, 0xD1DD, 0x6833, 0xD1DE, 0x683B, 0xD1DF, 0x684B, + 0xD1E0, 0x684F, 0xD1E1, 0x6816, 0xD1E2, 0x6831, 0xD1E3, 0x681C, 0xD1E4, 0x6835, 0xD1E5, 0x682B, 0xD1E6, 0x682D, 0xD1E7, 0x682F, + 0xD1E8, 0x684E, 0xD1E9, 0x6844, 0xD1EA, 0x6834, 0xD1EB, 0x681D, 0xD1EC, 0x6812, 0xD1ED, 0x6814, 0xD1EE, 0x6826, 0xD1EF, 0x6828, + 0xD1F0, 0x682E, 0xD1F1, 0x684D, 0xD1F2, 0x683A, 0xD1F3, 0x6825, 0xD1F4, 0x6820, 0xD1F5, 0x6B2C, 0xD1F6, 0x6B2F, 0xD1F7, 0x6B2D, + 0xD1F8, 0x6B31, 0xD1F9, 0x6B34, 0xD1FA, 0x6B6D, 0xD1FB, 0x8082, 0xD1FC, 0x6B88, 0xD1FD, 0x6BE6, 0xD1FE, 0x6BE4, 0xD240, 0x6BE8, + 0xD241, 0x6BE3, 0xD242, 0x6BE2, 0xD243, 0x6BE7, 0xD244, 0x6C25, 0xD245, 0x6D7A, 0xD246, 0x6D63, 0xD247, 0x6D64, 0xD248, 0x6D76, + 0xD249, 0x6D0D, 0xD24A, 0x6D61, 0xD24B, 0x6D92, 0xD24C, 0x6D58, 0xD24D, 0x6D62, 0xD24E, 0x6D6D, 0xD24F, 0x6D6F, 0xD250, 0x6D91, + 0xD251, 0x6D8D, 0xD252, 0x6DEF, 0xD253, 0x6D7F, 0xD254, 0x6D86, 0xD255, 0x6D5E, 0xD256, 0x6D67, 0xD257, 0x6D60, 0xD258, 0x6D97, + 0xD259, 0x6D70, 0xD25A, 0x6D7C, 0xD25B, 0x6D5F, 0xD25C, 0x6D82, 0xD25D, 0x6D98, 0xD25E, 0x6D2F, 0xD25F, 0x6D68, 0xD260, 0x6D8B, + 0xD261, 0x6D7E, 0xD262, 0x6D80, 0xD263, 0x6D84, 0xD264, 0x6D16, 0xD265, 0x6D83, 0xD266, 0x6D7B, 0xD267, 0x6D7D, 0xD268, 0x6D75, + 0xD269, 0x6D90, 0xD26A, 0x70DC, 0xD26B, 0x70D3, 0xD26C, 0x70D1, 0xD26D, 0x70DD, 0xD26E, 0x70CB, 0xD26F, 0x7F39, 0xD270, 0x70E2, + 0xD271, 0x70D7, 0xD272, 0x70D2, 0xD273, 0x70DE, 0xD274, 0x70E0, 0xD275, 0x70D4, 0xD276, 0x70CD, 0xD277, 0x70C5, 0xD278, 0x70C6, + 0xD279, 0x70C7, 0xD27A, 0x70DA, 0xD27B, 0x70CE, 0xD27C, 0x70E1, 0xD27D, 0x7242, 0xD27E, 0x7278, 0xD2A1, 0x7277, 0xD2A2, 0x7276, + 0xD2A3, 0x7300, 0xD2A4, 0x72FA, 0xD2A5, 0x72F4, 0xD2A6, 0x72FE, 0xD2A7, 0x72F6, 0xD2A8, 0x72F3, 0xD2A9, 0x72FB, 0xD2AA, 0x7301, + 0xD2AB, 0x73D3, 0xD2AC, 0x73D9, 0xD2AD, 0x73E5, 0xD2AE, 0x73D6, 0xD2AF, 0x73BC, 0xD2B0, 0x73E7, 0xD2B1, 0x73E3, 0xD2B2, 0x73E9, + 0xD2B3, 0x73DC, 0xD2B4, 0x73D2, 0xD2B5, 0x73DB, 0xD2B6, 0x73D4, 0xD2B7, 0x73DD, 0xD2B8, 0x73DA, 0xD2B9, 0x73D7, 0xD2BA, 0x73D8, + 0xD2BB, 0x73E8, 0xD2BC, 0x74DE, 0xD2BD, 0x74DF, 0xD2BE, 0x74F4, 0xD2BF, 0x74F5, 0xD2C0, 0x7521, 0xD2C1, 0x755B, 0xD2C2, 0x755F, + 0xD2C3, 0x75B0, 0xD2C4, 0x75C1, 0xD2C5, 0x75BB, 0xD2C6, 0x75C4, 0xD2C7, 0x75C0, 0xD2C8, 0x75BF, 0xD2C9, 0x75B6, 0xD2CA, 0x75BA, + 0xD2CB, 0x768A, 0xD2CC, 0x76C9, 0xD2CD, 0x771D, 0xD2CE, 0x771B, 0xD2CF, 0x7710, 0xD2D0, 0x7713, 0xD2D1, 0x7712, 0xD2D2, 0x7723, + 0xD2D3, 0x7711, 0xD2D4, 0x7715, 0xD2D5, 0x7719, 0xD2D6, 0x771A, 0xD2D7, 0x7722, 0xD2D8, 0x7727, 0xD2D9, 0x7823, 0xD2DA, 0x782C, + 0xD2DB, 0x7822, 0xD2DC, 0x7835, 0xD2DD, 0x782F, 0xD2DE, 0x7828, 0xD2DF, 0x782E, 0xD2E0, 0x782B, 0xD2E1, 0x7821, 0xD2E2, 0x7829, + 0xD2E3, 0x7833, 0xD2E4, 0x782A, 0xD2E5, 0x7831, 0xD2E6, 0x7954, 0xD2E7, 0x795B, 0xD2E8, 0x794F, 0xD2E9, 0x795C, 0xD2EA, 0x7953, + 0xD2EB, 0x7952, 0xD2EC, 0x7951, 0xD2ED, 0x79EB, 0xD2EE, 0x79EC, 0xD2EF, 0x79E0, 0xD2F0, 0x79EE, 0xD2F1, 0x79ED, 0xD2F2, 0x79EA, + 0xD2F3, 0x79DC, 0xD2F4, 0x79DE, 0xD2F5, 0x79DD, 0xD2F6, 0x7A86, 0xD2F7, 0x7A89, 0xD2F8, 0x7A85, 0xD2F9, 0x7A8B, 0xD2FA, 0x7A8C, + 0xD2FB, 0x7A8A, 0xD2FC, 0x7A87, 0xD2FD, 0x7AD8, 0xD2FE, 0x7B10, 0xD340, 0x7B04, 0xD341, 0x7B13, 0xD342, 0x7B05, 0xD343, 0x7B0F, + 0xD344, 0x7B08, 0xD345, 0x7B0A, 0xD346, 0x7B0E, 0xD347, 0x7B09, 0xD348, 0x7B12, 0xD349, 0x7C84, 0xD34A, 0x7C91, 0xD34B, 0x7C8A, + 0xD34C, 0x7C8C, 0xD34D, 0x7C88, 0xD34E, 0x7C8D, 0xD34F, 0x7C85, 0xD350, 0x7D1E, 0xD351, 0x7D1D, 0xD352, 0x7D11, 0xD353, 0x7D0E, + 0xD354, 0x7D18, 0xD355, 0x7D16, 0xD356, 0x7D13, 0xD357, 0x7D1F, 0xD358, 0x7D12, 0xD359, 0x7D0F, 0xD35A, 0x7D0C, 0xD35B, 0x7F5C, + 0xD35C, 0x7F61, 0xD35D, 0x7F5E, 0xD35E, 0x7F60, 0xD35F, 0x7F5D, 0xD360, 0x7F5B, 0xD361, 0x7F96, 0xD362, 0x7F92, 0xD363, 0x7FC3, + 0xD364, 0x7FC2, 0xD365, 0x7FC0, 0xD366, 0x8016, 0xD367, 0x803E, 0xD368, 0x8039, 0xD369, 0x80FA, 0xD36A, 0x80F2, 0xD36B, 0x80F9, + 0xD36C, 0x80F5, 0xD36D, 0x8101, 0xD36E, 0x80FB, 0xD36F, 0x8100, 0xD370, 0x8201, 0xD371, 0x822F, 0xD372, 0x8225, 0xD373, 0x8333, + 0xD374, 0x832D, 0xD375, 0x8344, 0xD376, 0x8319, 0xD377, 0x8351, 0xD378, 0x8325, 0xD379, 0x8356, 0xD37A, 0x833F, 0xD37B, 0x8341, + 0xD37C, 0x8326, 0xD37D, 0x831C, 0xD37E, 0x8322, 0xD3A1, 0x8342, 0xD3A2, 0x834E, 0xD3A3, 0x831B, 0xD3A4, 0x832A, 0xD3A5, 0x8308, + 0xD3A6, 0x833C, 0xD3A7, 0x834D, 0xD3A8, 0x8316, 0xD3A9, 0x8324, 0xD3AA, 0x8320, 0xD3AB, 0x8337, 0xD3AC, 0x832F, 0xD3AD, 0x8329, + 0xD3AE, 0x8347, 0xD3AF, 0x8345, 0xD3B0, 0x834C, 0xD3B1, 0x8353, 0xD3B2, 0x831E, 0xD3B3, 0x832C, 0xD3B4, 0x834B, 0xD3B5, 0x8327, + 0xD3B6, 0x8348, 0xD3B7, 0x8653, 0xD3B8, 0x8652, 0xD3B9, 0x86A2, 0xD3BA, 0x86A8, 0xD3BB, 0x8696, 0xD3BC, 0x868D, 0xD3BD, 0x8691, + 0xD3BE, 0x869E, 0xD3BF, 0x8687, 0xD3C0, 0x8697, 0xD3C1, 0x8686, 0xD3C2, 0x868B, 0xD3C3, 0x869A, 0xD3C4, 0x8685, 0xD3C5, 0x86A5, + 0xD3C6, 0x8699, 0xD3C7, 0x86A1, 0xD3C8, 0x86A7, 0xD3C9, 0x8695, 0xD3CA, 0x8698, 0xD3CB, 0x868E, 0xD3CC, 0x869D, 0xD3CD, 0x8690, + 0xD3CE, 0x8694, 0xD3CF, 0x8843, 0xD3D0, 0x8844, 0xD3D1, 0x886D, 0xD3D2, 0x8875, 0xD3D3, 0x8876, 0xD3D4, 0x8872, 0xD3D5, 0x8880, + 0xD3D6, 0x8871, 0xD3D7, 0x887F, 0xD3D8, 0x886F, 0xD3D9, 0x8883, 0xD3DA, 0x887E, 0xD3DB, 0x8874, 0xD3DC, 0x887C, 0xD3DD, 0x8A12, + 0xD3DE, 0x8C47, 0xD3DF, 0x8C57, 0xD3E0, 0x8C7B, 0xD3E1, 0x8CA4, 0xD3E2, 0x8CA3, 0xD3E3, 0x8D76, 0xD3E4, 0x8D78, 0xD3E5, 0x8DB5, + 0xD3E6, 0x8DB7, 0xD3E7, 0x8DB6, 0xD3E8, 0x8ED1, 0xD3E9, 0x8ED3, 0xD3EA, 0x8FFE, 0xD3EB, 0x8FF5, 0xD3EC, 0x9002, 0xD3ED, 0x8FFF, + 0xD3EE, 0x8FFB, 0xD3EF, 0x9004, 0xD3F0, 0x8FFC, 0xD3F1, 0x8FF6, 0xD3F2, 0x90D6, 0xD3F3, 0x90E0, 0xD3F4, 0x90D9, 0xD3F5, 0x90DA, + 0xD3F6, 0x90E3, 0xD3F7, 0x90DF, 0xD3F8, 0x90E5, 0xD3F9, 0x90D8, 0xD3FA, 0x90DB, 0xD3FB, 0x90D7, 0xD3FC, 0x90DC, 0xD3FD, 0x90E4, + 0xD3FE, 0x9150, 0xD440, 0x914E, 0xD441, 0x914F, 0xD442, 0x91D5, 0xD443, 0x91E2, 0xD444, 0x91DA, 0xD445, 0x965C, 0xD446, 0x965F, + 0xD447, 0x96BC, 0xD448, 0x98E3, 0xD449, 0x9ADF, 0xD44A, 0x9B2F, 0xD44B, 0x4E7F, 0xD44C, 0x5070, 0xD44D, 0x506A, 0xD44E, 0x5061, + 0xD44F, 0x505E, 0xD450, 0x5060, 0xD451, 0x5053, 0xD452, 0x504B, 0xD453, 0x505D, 0xD454, 0x5072, 0xD455, 0x5048, 0xD456, 0x504D, + 0xD457, 0x5041, 0xD458, 0x505B, 0xD459, 0x504A, 0xD45A, 0x5062, 0xD45B, 0x5015, 0xD45C, 0x5045, 0xD45D, 0x505F, 0xD45E, 0x5069, + 0xD45F, 0x506B, 0xD460, 0x5063, 0xD461, 0x5064, 0xD462, 0x5046, 0xD463, 0x5040, 0xD464, 0x506E, 0xD465, 0x5073, 0xD466, 0x5057, + 0xD467, 0x5051, 0xD468, 0x51D0, 0xD469, 0x526B, 0xD46A, 0x526D, 0xD46B, 0x526C, 0xD46C, 0x526E, 0xD46D, 0x52D6, 0xD46E, 0x52D3, + 0xD46F, 0x532D, 0xD470, 0x539C, 0xD471, 0x5575, 0xD472, 0x5576, 0xD473, 0x553C, 0xD474, 0x554D, 0xD475, 0x5550, 0xD476, 0x5534, + 0xD477, 0x552A, 0xD478, 0x5551, 0xD479, 0x5562, 0xD47A, 0x5536, 0xD47B, 0x5535, 0xD47C, 0x5530, 0xD47D, 0x5552, 0xD47E, 0x5545, + 0xD4A1, 0x550C, 0xD4A2, 0x5532, 0xD4A3, 0x5565, 0xD4A4, 0x554E, 0xD4A5, 0x5539, 0xD4A6, 0x5548, 0xD4A7, 0x552D, 0xD4A8, 0x553B, + 0xD4A9, 0x5540, 0xD4AA, 0x554B, 0xD4AB, 0x570A, 0xD4AC, 0x5707, 0xD4AD, 0x57FB, 0xD4AE, 0x5814, 0xD4AF, 0x57E2, 0xD4B0, 0x57F6, + 0xD4B1, 0x57DC, 0xD4B2, 0x57F4, 0xD4B3, 0x5800, 0xD4B4, 0x57ED, 0xD4B5, 0x57FD, 0xD4B6, 0x5808, 0xD4B7, 0x57F8, 0xD4B8, 0x580B, + 0xD4B9, 0x57F3, 0xD4BA, 0x57CF, 0xD4BB, 0x5807, 0xD4BC, 0x57EE, 0xD4BD, 0x57E3, 0xD4BE, 0x57F2, 0xD4BF, 0x57E5, 0xD4C0, 0x57EC, + 0xD4C1, 0x57E1, 0xD4C2, 0x580E, 0xD4C3, 0x57FC, 0xD4C4, 0x5810, 0xD4C5, 0x57E7, 0xD4C6, 0x5801, 0xD4C7, 0x580C, 0xD4C8, 0x57F1, + 0xD4C9, 0x57E9, 0xD4CA, 0x57F0, 0xD4CB, 0x580D, 0xD4CC, 0x5804, 0xD4CD, 0x595C, 0xD4CE, 0x5A60, 0xD4CF, 0x5A58, 0xD4D0, 0x5A55, + 0xD4D1, 0x5A67, 0xD4D2, 0x5A5E, 0xD4D3, 0x5A38, 0xD4D4, 0x5A35, 0xD4D5, 0x5A6D, 0xD4D6, 0x5A50, 0xD4D7, 0x5A5F, 0xD4D8, 0x5A65, + 0xD4D9, 0x5A6C, 0xD4DA, 0x5A53, 0xD4DB, 0x5A64, 0xD4DC, 0x5A57, 0xD4DD, 0x5A43, 0xD4DE, 0x5A5D, 0xD4DF, 0x5A52, 0xD4E0, 0x5A44, + 0xD4E1, 0x5A5B, 0xD4E2, 0x5A48, 0xD4E3, 0x5A8E, 0xD4E4, 0x5A3E, 0xD4E5, 0x5A4D, 0xD4E6, 0x5A39, 0xD4E7, 0x5A4C, 0xD4E8, 0x5A70, + 0xD4E9, 0x5A69, 0xD4EA, 0x5A47, 0xD4EB, 0x5A51, 0xD4EC, 0x5A56, 0xD4ED, 0x5A42, 0xD4EE, 0x5A5C, 0xD4EF, 0x5B72, 0xD4F0, 0x5B6E, + 0xD4F1, 0x5BC1, 0xD4F2, 0x5BC0, 0xD4F3, 0x5C59, 0xD4F4, 0x5D1E, 0xD4F5, 0x5D0B, 0xD4F6, 0x5D1D, 0xD4F7, 0x5D1A, 0xD4F8, 0x5D20, + 0xD4F9, 0x5D0C, 0xD4FA, 0x5D28, 0xD4FB, 0x5D0D, 0xD4FC, 0x5D26, 0xD4FD, 0x5D25, 0xD4FE, 0x5D0F, 0xD540, 0x5D30, 0xD541, 0x5D12, + 0xD542, 0x5D23, 0xD543, 0x5D1F, 0xD544, 0x5D2E, 0xD545, 0x5E3E, 0xD546, 0x5E34, 0xD547, 0x5EB1, 0xD548, 0x5EB4, 0xD549, 0x5EB9, + 0xD54A, 0x5EB2, 0xD54B, 0x5EB3, 0xD54C, 0x5F36, 0xD54D, 0x5F38, 0xD54E, 0x5F9B, 0xD54F, 0x5F96, 0xD550, 0x5F9F, 0xD551, 0x608A, + 0xD552, 0x6090, 0xD553, 0x6086, 0xD554, 0x60BE, 0xD555, 0x60B0, 0xD556, 0x60BA, 0xD557, 0x60D3, 0xD558, 0x60D4, 0xD559, 0x60CF, + 0xD55A, 0x60E4, 0xD55B, 0x60D9, 0xD55C, 0x60DD, 0xD55D, 0x60C8, 0xD55E, 0x60B1, 0xD55F, 0x60DB, 0xD560, 0x60B7, 0xD561, 0x60CA, + 0xD562, 0x60BF, 0xD563, 0x60C3, 0xD564, 0x60CD, 0xD565, 0x60C0, 0xD566, 0x6332, 0xD567, 0x6365, 0xD568, 0x638A, 0xD569, 0x6382, + 0xD56A, 0x637D, 0xD56B, 0x63BD, 0xD56C, 0x639E, 0xD56D, 0x63AD, 0xD56E, 0x639D, 0xD56F, 0x6397, 0xD570, 0x63AB, 0xD571, 0x638E, + 0xD572, 0x636F, 0xD573, 0x6387, 0xD574, 0x6390, 0xD575, 0x636E, 0xD576, 0x63AF, 0xD577, 0x6375, 0xD578, 0x639C, 0xD579, 0x636D, + 0xD57A, 0x63AE, 0xD57B, 0x637C, 0xD57C, 0x63A4, 0xD57D, 0x633B, 0xD57E, 0x639F, 0xD5A1, 0x6378, 0xD5A2, 0x6385, 0xD5A3, 0x6381, + 0xD5A4, 0x6391, 0xD5A5, 0x638D, 0xD5A6, 0x6370, 0xD5A7, 0x6553, 0xD5A8, 0x65CD, 0xD5A9, 0x6665, 0xD5AA, 0x6661, 0xD5AB, 0x665B, + 0xD5AC, 0x6659, 0xD5AD, 0x665C, 0xD5AE, 0x6662, 0xD5AF, 0x6718, 0xD5B0, 0x6879, 0xD5B1, 0x6887, 0xD5B2, 0x6890, 0xD5B3, 0x689C, + 0xD5B4, 0x686D, 0xD5B5, 0x686E, 0xD5B6, 0x68AE, 0xD5B7, 0x68AB, 0xD5B8, 0x6956, 0xD5B9, 0x686F, 0xD5BA, 0x68A3, 0xD5BB, 0x68AC, + 0xD5BC, 0x68A9, 0xD5BD, 0x6875, 0xD5BE, 0x6874, 0xD5BF, 0x68B2, 0xD5C0, 0x688F, 0xD5C1, 0x6877, 0xD5C2, 0x6892, 0xD5C3, 0x687C, + 0xD5C4, 0x686B, 0xD5C5, 0x6872, 0xD5C6, 0x68AA, 0xD5C7, 0x6880, 0xD5C8, 0x6871, 0xD5C9, 0x687E, 0xD5CA, 0x689B, 0xD5CB, 0x6896, + 0xD5CC, 0x688B, 0xD5CD, 0x68A0, 0xD5CE, 0x6889, 0xD5CF, 0x68A4, 0xD5D0, 0x6878, 0xD5D1, 0x687B, 0xD5D2, 0x6891, 0xD5D3, 0x688C, + 0xD5D4, 0x688A, 0xD5D5, 0x687D, 0xD5D6, 0x6B36, 0xD5D7, 0x6B33, 0xD5D8, 0x6B37, 0xD5D9, 0x6B38, 0xD5DA, 0x6B91, 0xD5DB, 0x6B8F, + 0xD5DC, 0x6B8D, 0xD5DD, 0x6B8E, 0xD5DE, 0x6B8C, 0xD5DF, 0x6C2A, 0xD5E0, 0x6DC0, 0xD5E1, 0x6DAB, 0xD5E2, 0x6DB4, 0xD5E3, 0x6DB3, + 0xD5E4, 0x6E74, 0xD5E5, 0x6DAC, 0xD5E6, 0x6DE9, 0xD5E7, 0x6DE2, 0xD5E8, 0x6DB7, 0xD5E9, 0x6DF6, 0xD5EA, 0x6DD4, 0xD5EB, 0x6E00, + 0xD5EC, 0x6DC8, 0xD5ED, 0x6DE0, 0xD5EE, 0x6DDF, 0xD5EF, 0x6DD6, 0xD5F0, 0x6DBE, 0xD5F1, 0x6DE5, 0xD5F2, 0x6DDC, 0xD5F3, 0x6DDD, + 0xD5F4, 0x6DDB, 0xD5F5, 0x6DF4, 0xD5F6, 0x6DCA, 0xD5F7, 0x6DBD, 0xD5F8, 0x6DED, 0xD5F9, 0x6DF0, 0xD5FA, 0x6DBA, 0xD5FB, 0x6DD5, + 0xD5FC, 0x6DC2, 0xD5FD, 0x6DCF, 0xD5FE, 0x6DC9, 0xD640, 0x6DD0, 0xD641, 0x6DF2, 0xD642, 0x6DD3, 0xD643, 0x6DFD, 0xD644, 0x6DD7, + 0xD645, 0x6DCD, 0xD646, 0x6DE3, 0xD647, 0x6DBB, 0xD648, 0x70FA, 0xD649, 0x710D, 0xD64A, 0x70F7, 0xD64B, 0x7117, 0xD64C, 0x70F4, + 0xD64D, 0x710C, 0xD64E, 0x70F0, 0xD64F, 0x7104, 0xD650, 0x70F3, 0xD651, 0x7110, 0xD652, 0x70FC, 0xD653, 0x70FF, 0xD654, 0x7106, + 0xD655, 0x7113, 0xD656, 0x7100, 0xD657, 0x70F8, 0xD658, 0x70F6, 0xD659, 0x710B, 0xD65A, 0x7102, 0xD65B, 0x710E, 0xD65C, 0x727E, + 0xD65D, 0x727B, 0xD65E, 0x727C, 0xD65F, 0x727F, 0xD660, 0x731D, 0xD661, 0x7317, 0xD662, 0x7307, 0xD663, 0x7311, 0xD664, 0x7318, + 0xD665, 0x730A, 0xD666, 0x7308, 0xD667, 0x72FF, 0xD668, 0x730F, 0xD669, 0x731E, 0xD66A, 0x7388, 0xD66B, 0x73F6, 0xD66C, 0x73F8, + 0xD66D, 0x73F5, 0xD66E, 0x7404, 0xD66F, 0x7401, 0xD670, 0x73FD, 0xD671, 0x7407, 0xD672, 0x7400, 0xD673, 0x73FA, 0xD674, 0x73FC, + 0xD675, 0x73FF, 0xD676, 0x740C, 0xD677, 0x740B, 0xD678, 0x73F4, 0xD679, 0x7408, 0xD67A, 0x7564, 0xD67B, 0x7563, 0xD67C, 0x75CE, + 0xD67D, 0x75D2, 0xD67E, 0x75CF, 0xD6A1, 0x75CB, 0xD6A2, 0x75CC, 0xD6A3, 0x75D1, 0xD6A4, 0x75D0, 0xD6A5, 0x768F, 0xD6A6, 0x7689, + 0xD6A7, 0x76D3, 0xD6A8, 0x7739, 0xD6A9, 0x772F, 0xD6AA, 0x772D, 0xD6AB, 0x7731, 0xD6AC, 0x7732, 0xD6AD, 0x7734, 0xD6AE, 0x7733, + 0xD6AF, 0x773D, 0xD6B0, 0x7725, 0xD6B1, 0x773B, 0xD6B2, 0x7735, 0xD6B3, 0x7848, 0xD6B4, 0x7852, 0xD6B5, 0x7849, 0xD6B6, 0x784D, + 0xD6B7, 0x784A, 0xD6B8, 0x784C, 0xD6B9, 0x7826, 0xD6BA, 0x7845, 0xD6BB, 0x7850, 0xD6BC, 0x7964, 0xD6BD, 0x7967, 0xD6BE, 0x7969, + 0xD6BF, 0x796A, 0xD6C0, 0x7963, 0xD6C1, 0x796B, 0xD6C2, 0x7961, 0xD6C3, 0x79BB, 0xD6C4, 0x79FA, 0xD6C5, 0x79F8, 0xD6C6, 0x79F6, + 0xD6C7, 0x79F7, 0xD6C8, 0x7A8F, 0xD6C9, 0x7A94, 0xD6CA, 0x7A90, 0xD6CB, 0x7B35, 0xD6CC, 0x7B47, 0xD6CD, 0x7B34, 0xD6CE, 0x7B25, + 0xD6CF, 0x7B30, 0xD6D0, 0x7B22, 0xD6D1, 0x7B24, 0xD6D2, 0x7B33, 0xD6D3, 0x7B18, 0xD6D4, 0x7B2A, 0xD6D5, 0x7B1D, 0xD6D6, 0x7B31, + 0xD6D7, 0x7B2B, 0xD6D8, 0x7B2D, 0xD6D9, 0x7B2F, 0xD6DA, 0x7B32, 0xD6DB, 0x7B38, 0xD6DC, 0x7B1A, 0xD6DD, 0x7B23, 0xD6DE, 0x7C94, + 0xD6DF, 0x7C98, 0xD6E0, 0x7C96, 0xD6E1, 0x7CA3, 0xD6E2, 0x7D35, 0xD6E3, 0x7D3D, 0xD6E4, 0x7D38, 0xD6E5, 0x7D36, 0xD6E6, 0x7D3A, + 0xD6E7, 0x7D45, 0xD6E8, 0x7D2C, 0xD6E9, 0x7D29, 0xD6EA, 0x7D41, 0xD6EB, 0x7D47, 0xD6EC, 0x7D3E, 0xD6ED, 0x7D3F, 0xD6EE, 0x7D4A, + 0xD6EF, 0x7D3B, 0xD6F0, 0x7D28, 0xD6F1, 0x7F63, 0xD6F2, 0x7F95, 0xD6F3, 0x7F9C, 0xD6F4, 0x7F9D, 0xD6F5, 0x7F9B, 0xD6F6, 0x7FCA, + 0xD6F7, 0x7FCB, 0xD6F8, 0x7FCD, 0xD6F9, 0x7FD0, 0xD6FA, 0x7FD1, 0xD6FB, 0x7FC7, 0xD6FC, 0x7FCF, 0xD6FD, 0x7FC9, 0xD6FE, 0x801F, + 0xD740, 0x801E, 0xD741, 0x801B, 0xD742, 0x8047, 0xD743, 0x8043, 0xD744, 0x8048, 0xD745, 0x8118, 0xD746, 0x8125, 0xD747, 0x8119, + 0xD748, 0x811B, 0xD749, 0x812D, 0xD74A, 0x811F, 0xD74B, 0x812C, 0xD74C, 0x811E, 0xD74D, 0x8121, 0xD74E, 0x8115, 0xD74F, 0x8127, + 0xD750, 0x811D, 0xD751, 0x8122, 0xD752, 0x8211, 0xD753, 0x8238, 0xD754, 0x8233, 0xD755, 0x823A, 0xD756, 0x8234, 0xD757, 0x8232, + 0xD758, 0x8274, 0xD759, 0x8390, 0xD75A, 0x83A3, 0xD75B, 0x83A8, 0xD75C, 0x838D, 0xD75D, 0x837A, 0xD75E, 0x8373, 0xD75F, 0x83A4, + 0xD760, 0x8374, 0xD761, 0x838F, 0xD762, 0x8381, 0xD763, 0x8395, 0xD764, 0x8399, 0xD765, 0x8375, 0xD766, 0x8394, 0xD767, 0x83A9, + 0xD768, 0x837D, 0xD769, 0x8383, 0xD76A, 0x838C, 0xD76B, 0x839D, 0xD76C, 0x839B, 0xD76D, 0x83AA, 0xD76E, 0x838B, 0xD76F, 0x837E, + 0xD770, 0x83A5, 0xD771, 0x83AF, 0xD772, 0x8388, 0xD773, 0x8397, 0xD774, 0x83B0, 0xD775, 0x837F, 0xD776, 0x83A6, 0xD777, 0x8387, + 0xD778, 0x83AE, 0xD779, 0x8376, 0xD77A, 0x839A, 0xD77B, 0x8659, 0xD77C, 0x8656, 0xD77D, 0x86BF, 0xD77E, 0x86B7, 0xD7A1, 0x86C2, + 0xD7A2, 0x86C1, 0xD7A3, 0x86C5, 0xD7A4, 0x86BA, 0xD7A5, 0x86B0, 0xD7A6, 0x86C8, 0xD7A7, 0x86B9, 0xD7A8, 0x86B3, 0xD7A9, 0x86B8, + 0xD7AA, 0x86CC, 0xD7AB, 0x86B4, 0xD7AC, 0x86BB, 0xD7AD, 0x86BC, 0xD7AE, 0x86C3, 0xD7AF, 0x86BD, 0xD7B0, 0x86BE, 0xD7B1, 0x8852, + 0xD7B2, 0x8889, 0xD7B3, 0x8895, 0xD7B4, 0x88A8, 0xD7B5, 0x88A2, 0xD7B6, 0x88AA, 0xD7B7, 0x889A, 0xD7B8, 0x8891, 0xD7B9, 0x88A1, + 0xD7BA, 0x889F, 0xD7BB, 0x8898, 0xD7BC, 0x88A7, 0xD7BD, 0x8899, 0xD7BE, 0x889B, 0xD7BF, 0x8897, 0xD7C0, 0x88A4, 0xD7C1, 0x88AC, + 0xD7C2, 0x888C, 0xD7C3, 0x8893, 0xD7C4, 0x888E, 0xD7C5, 0x8982, 0xD7C6, 0x89D6, 0xD7C7, 0x89D9, 0xD7C8, 0x89D5, 0xD7C9, 0x8A30, + 0xD7CA, 0x8A27, 0xD7CB, 0x8A2C, 0xD7CC, 0x8A1E, 0xD7CD, 0x8C39, 0xD7CE, 0x8C3B, 0xD7CF, 0x8C5C, 0xD7D0, 0x8C5D, 0xD7D1, 0x8C7D, + 0xD7D2, 0x8CA5, 0xD7D3, 0x8D7D, 0xD7D4, 0x8D7B, 0xD7D5, 0x8D79, 0xD7D6, 0x8DBC, 0xD7D7, 0x8DC2, 0xD7D8, 0x8DB9, 0xD7D9, 0x8DBF, + 0xD7DA, 0x8DC1, 0xD7DB, 0x8ED8, 0xD7DC, 0x8EDE, 0xD7DD, 0x8EDD, 0xD7DE, 0x8EDC, 0xD7DF, 0x8ED7, 0xD7E0, 0x8EE0, 0xD7E1, 0x8EE1, + 0xD7E2, 0x9024, 0xD7E3, 0x900B, 0xD7E4, 0x9011, 0xD7E5, 0x901C, 0xD7E6, 0x900C, 0xD7E7, 0x9021, 0xD7E8, 0x90EF, 0xD7E9, 0x90EA, + 0xD7EA, 0x90F0, 0xD7EB, 0x90F4, 0xD7EC, 0x90F2, 0xD7ED, 0x90F3, 0xD7EE, 0x90D4, 0xD7EF, 0x90EB, 0xD7F0, 0x90EC, 0xD7F1, 0x90E9, + 0xD7F2, 0x9156, 0xD7F3, 0x9158, 0xD7F4, 0x915A, 0xD7F5, 0x9153, 0xD7F6, 0x9155, 0xD7F7, 0x91EC, 0xD7F8, 0x91F4, 0xD7F9, 0x91F1, + 0xD7FA, 0x91F3, 0xD7FB, 0x91F8, 0xD7FC, 0x91E4, 0xD7FD, 0x91F9, 0xD7FE, 0x91EA, 0xD840, 0x91EB, 0xD841, 0x91F7, 0xD842, 0x91E8, + 0xD843, 0x91EE, 0xD844, 0x957A, 0xD845, 0x9586, 0xD846, 0x9588, 0xD847, 0x967C, 0xD848, 0x966D, 0xD849, 0x966B, 0xD84A, 0x9671, + 0xD84B, 0x966F, 0xD84C, 0x96BF, 0xD84D, 0x976A, 0xD84E, 0x9804, 0xD84F, 0x98E5, 0xD850, 0x9997, 0xD851, 0x509B, 0xD852, 0x5095, + 0xD853, 0x5094, 0xD854, 0x509E, 0xD855, 0x508B, 0xD856, 0x50A3, 0xD857, 0x5083, 0xD858, 0x508C, 0xD859, 0x508E, 0xD85A, 0x509D, + 0xD85B, 0x5068, 0xD85C, 0x509C, 0xD85D, 0x5092, 0xD85E, 0x5082, 0xD85F, 0x5087, 0xD860, 0x515F, 0xD861, 0x51D4, 0xD862, 0x5312, + 0xD863, 0x5311, 0xD864, 0x53A4, 0xD865, 0x53A7, 0xD866, 0x5591, 0xD867, 0x55A8, 0xD868, 0x55A5, 0xD869, 0x55AD, 0xD86A, 0x5577, + 0xD86B, 0x5645, 0xD86C, 0x55A2, 0xD86D, 0x5593, 0xD86E, 0x5588, 0xD86F, 0x558F, 0xD870, 0x55B5, 0xD871, 0x5581, 0xD872, 0x55A3, + 0xD873, 0x5592, 0xD874, 0x55A4, 0xD875, 0x557D, 0xD876, 0x558C, 0xD877, 0x55A6, 0xD878, 0x557F, 0xD879, 0x5595, 0xD87A, 0x55A1, + 0xD87B, 0x558E, 0xD87C, 0x570C, 0xD87D, 0x5829, 0xD87E, 0x5837, 0xD8A1, 0x5819, 0xD8A2, 0x581E, 0xD8A3, 0x5827, 0xD8A4, 0x5823, + 0xD8A5, 0x5828, 0xD8A6, 0x57F5, 0xD8A7, 0x5848, 0xD8A8, 0x5825, 0xD8A9, 0x581C, 0xD8AA, 0x581B, 0xD8AB, 0x5833, 0xD8AC, 0x583F, + 0xD8AD, 0x5836, 0xD8AE, 0x582E, 0xD8AF, 0x5839, 0xD8B0, 0x5838, 0xD8B1, 0x582D, 0xD8B2, 0x582C, 0xD8B3, 0x583B, 0xD8B4, 0x5961, + 0xD8B5, 0x5AAF, 0xD8B6, 0x5A94, 0xD8B7, 0x5A9F, 0xD8B8, 0x5A7A, 0xD8B9, 0x5AA2, 0xD8BA, 0x5A9E, 0xD8BB, 0x5A78, 0xD8BC, 0x5AA6, + 0xD8BD, 0x5A7C, 0xD8BE, 0x5AA5, 0xD8BF, 0x5AAC, 0xD8C0, 0x5A95, 0xD8C1, 0x5AAE, 0xD8C2, 0x5A37, 0xD8C3, 0x5A84, 0xD8C4, 0x5A8A, + 0xD8C5, 0x5A97, 0xD8C6, 0x5A83, 0xD8C7, 0x5A8B, 0xD8C8, 0x5AA9, 0xD8C9, 0x5A7B, 0xD8CA, 0x5A7D, 0xD8CB, 0x5A8C, 0xD8CC, 0x5A9C, + 0xD8CD, 0x5A8F, 0xD8CE, 0x5A93, 0xD8CF, 0x5A9D, 0xD8D0, 0x5BEA, 0xD8D1, 0x5BCD, 0xD8D2, 0x5BCB, 0xD8D3, 0x5BD4, 0xD8D4, 0x5BD1, + 0xD8D5, 0x5BCA, 0xD8D6, 0x5BCE, 0xD8D7, 0x5C0C, 0xD8D8, 0x5C30, 0xD8D9, 0x5D37, 0xD8DA, 0x5D43, 0xD8DB, 0x5D6B, 0xD8DC, 0x5D41, + 0xD8DD, 0x5D4B, 0xD8DE, 0x5D3F, 0xD8DF, 0x5D35, 0xD8E0, 0x5D51, 0xD8E1, 0x5D4E, 0xD8E2, 0x5D55, 0xD8E3, 0x5D33, 0xD8E4, 0x5D3A, + 0xD8E5, 0x5D52, 0xD8E6, 0x5D3D, 0xD8E7, 0x5D31, 0xD8E8, 0x5D59, 0xD8E9, 0x5D42, 0xD8EA, 0x5D39, 0xD8EB, 0x5D49, 0xD8EC, 0x5D38, + 0xD8ED, 0x5D3C, 0xD8EE, 0x5D32, 0xD8EF, 0x5D36, 0xD8F0, 0x5D40, 0xD8F1, 0x5D45, 0xD8F2, 0x5E44, 0xD8F3, 0x5E41, 0xD8F4, 0x5F58, + 0xD8F5, 0x5FA6, 0xD8F6, 0x5FA5, 0xD8F7, 0x5FAB, 0xD8F8, 0x60C9, 0xD8F9, 0x60B9, 0xD8FA, 0x60CC, 0xD8FB, 0x60E2, 0xD8FC, 0x60CE, + 0xD8FD, 0x60C4, 0xD8FE, 0x6114, 0xD940, 0x60F2, 0xD941, 0x610A, 0xD942, 0x6116, 0xD943, 0x6105, 0xD944, 0x60F5, 0xD945, 0x6113, + 0xD946, 0x60F8, 0xD947, 0x60FC, 0xD948, 0x60FE, 0xD949, 0x60C1, 0xD94A, 0x6103, 0xD94B, 0x6118, 0xD94C, 0x611D, 0xD94D, 0x6110, + 0xD94E, 0x60FF, 0xD94F, 0x6104, 0xD950, 0x610B, 0xD951, 0x624A, 0xD952, 0x6394, 0xD953, 0x63B1, 0xD954, 0x63B0, 0xD955, 0x63CE, + 0xD956, 0x63E5, 0xD957, 0x63E8, 0xD958, 0x63EF, 0xD959, 0x63C3, 0xD95A, 0x649D, 0xD95B, 0x63F3, 0xD95C, 0x63CA, 0xD95D, 0x63E0, + 0xD95E, 0x63F6, 0xD95F, 0x63D5, 0xD960, 0x63F2, 0xD961, 0x63F5, 0xD962, 0x6461, 0xD963, 0x63DF, 0xD964, 0x63BE, 0xD965, 0x63DD, + 0xD966, 0x63DC, 0xD967, 0x63C4, 0xD968, 0x63D8, 0xD969, 0x63D3, 0xD96A, 0x63C2, 0xD96B, 0x63C7, 0xD96C, 0x63CC, 0xD96D, 0x63CB, + 0xD96E, 0x63C8, 0xD96F, 0x63F0, 0xD970, 0x63D7, 0xD971, 0x63D9, 0xD972, 0x6532, 0xD973, 0x6567, 0xD974, 0x656A, 0xD975, 0x6564, + 0xD976, 0x655C, 0xD977, 0x6568, 0xD978, 0x6565, 0xD979, 0x658C, 0xD97A, 0x659D, 0xD97B, 0x659E, 0xD97C, 0x65AE, 0xD97D, 0x65D0, + 0xD97E, 0x65D2, 0xD9A1, 0x667C, 0xD9A2, 0x666C, 0xD9A3, 0x667B, 0xD9A4, 0x6680, 0xD9A5, 0x6671, 0xD9A6, 0x6679, 0xD9A7, 0x666A, + 0xD9A8, 0x6672, 0xD9A9, 0x6701, 0xD9AA, 0x690C, 0xD9AB, 0x68D3, 0xD9AC, 0x6904, 0xD9AD, 0x68DC, 0xD9AE, 0x692A, 0xD9AF, 0x68EC, + 0xD9B0, 0x68EA, 0xD9B1, 0x68F1, 0xD9B2, 0x690F, 0xD9B3, 0x68D6, 0xD9B4, 0x68F7, 0xD9B5, 0x68EB, 0xD9B6, 0x68E4, 0xD9B7, 0x68F6, + 0xD9B8, 0x6913, 0xD9B9, 0x6910, 0xD9BA, 0x68F3, 0xD9BB, 0x68E1, 0xD9BC, 0x6907, 0xD9BD, 0x68CC, 0xD9BE, 0x6908, 0xD9BF, 0x6970, + 0xD9C0, 0x68B4, 0xD9C1, 0x6911, 0xD9C2, 0x68EF, 0xD9C3, 0x68C6, 0xD9C4, 0x6914, 0xD9C5, 0x68F8, 0xD9C6, 0x68D0, 0xD9C7, 0x68FD, + 0xD9C8, 0x68FC, 0xD9C9, 0x68E8, 0xD9CA, 0x690B, 0xD9CB, 0x690A, 0xD9CC, 0x6917, 0xD9CD, 0x68CE, 0xD9CE, 0x68C8, 0xD9CF, 0x68DD, + 0xD9D0, 0x68DE, 0xD9D1, 0x68E6, 0xD9D2, 0x68F4, 0xD9D3, 0x68D1, 0xD9D4, 0x6906, 0xD9D5, 0x68D4, 0xD9D6, 0x68E9, 0xD9D7, 0x6915, + 0xD9D8, 0x6925, 0xD9D9, 0x68C7, 0xD9DA, 0x6B39, 0xD9DB, 0x6B3B, 0xD9DC, 0x6B3F, 0xD9DD, 0x6B3C, 0xD9DE, 0x6B94, 0xD9DF, 0x6B97, + 0xD9E0, 0x6B99, 0xD9E1, 0x6B95, 0xD9E2, 0x6BBD, 0xD9E3, 0x6BF0, 0xD9E4, 0x6BF2, 0xD9E5, 0x6BF3, 0xD9E6, 0x6C30, 0xD9E7, 0x6DFC, + 0xD9E8, 0x6E46, 0xD9E9, 0x6E47, 0xD9EA, 0x6E1F, 0xD9EB, 0x6E49, 0xD9EC, 0x6E88, 0xD9ED, 0x6E3C, 0xD9EE, 0x6E3D, 0xD9EF, 0x6E45, + 0xD9F0, 0x6E62, 0xD9F1, 0x6E2B, 0xD9F2, 0x6E3F, 0xD9F3, 0x6E41, 0xD9F4, 0x6E5D, 0xD9F5, 0x6E73, 0xD9F6, 0x6E1C, 0xD9F7, 0x6E33, + 0xD9F8, 0x6E4B, 0xD9F9, 0x6E40, 0xD9FA, 0x6E51, 0xD9FB, 0x6E3B, 0xD9FC, 0x6E03, 0xD9FD, 0x6E2E, 0xD9FE, 0x6E5E, 0xDA40, 0x6E68, + 0xDA41, 0x6E5C, 0xDA42, 0x6E61, 0xDA43, 0x6E31, 0xDA44, 0x6E28, 0xDA45, 0x6E60, 0xDA46, 0x6E71, 0xDA47, 0x6E6B, 0xDA48, 0x6E39, + 0xDA49, 0x6E22, 0xDA4A, 0x6E30, 0xDA4B, 0x6E53, 0xDA4C, 0x6E65, 0xDA4D, 0x6E27, 0xDA4E, 0x6E78, 0xDA4F, 0x6E64, 0xDA50, 0x6E77, + 0xDA51, 0x6E55, 0xDA52, 0x6E79, 0xDA53, 0x6E52, 0xDA54, 0x6E66, 0xDA55, 0x6E35, 0xDA56, 0x6E36, 0xDA57, 0x6E5A, 0xDA58, 0x7120, + 0xDA59, 0x711E, 0xDA5A, 0x712F, 0xDA5B, 0x70FB, 0xDA5C, 0x712E, 0xDA5D, 0x7131, 0xDA5E, 0x7123, 0xDA5F, 0x7125, 0xDA60, 0x7122, + 0xDA61, 0x7132, 0xDA62, 0x711F, 0xDA63, 0x7128, 0xDA64, 0x713A, 0xDA65, 0x711B, 0xDA66, 0x724B, 0xDA67, 0x725A, 0xDA68, 0x7288, + 0xDA69, 0x7289, 0xDA6A, 0x7286, 0xDA6B, 0x7285, 0xDA6C, 0x728B, 0xDA6D, 0x7312, 0xDA6E, 0x730B, 0xDA6F, 0x7330, 0xDA70, 0x7322, + 0xDA71, 0x7331, 0xDA72, 0x7333, 0xDA73, 0x7327, 0xDA74, 0x7332, 0xDA75, 0x732D, 0xDA76, 0x7326, 0xDA77, 0x7323, 0xDA78, 0x7335, + 0xDA79, 0x730C, 0xDA7A, 0x742E, 0xDA7B, 0x742C, 0xDA7C, 0x7430, 0xDA7D, 0x742B, 0xDA7E, 0x7416, 0xDAA1, 0x741A, 0xDAA2, 0x7421, + 0xDAA3, 0x742D, 0xDAA4, 0x7431, 0xDAA5, 0x7424, 0xDAA6, 0x7423, 0xDAA7, 0x741D, 0xDAA8, 0x7429, 0xDAA9, 0x7420, 0xDAAA, 0x7432, + 0xDAAB, 0x74FB, 0xDAAC, 0x752F, 0xDAAD, 0x756F, 0xDAAE, 0x756C, 0xDAAF, 0x75E7, 0xDAB0, 0x75DA, 0xDAB1, 0x75E1, 0xDAB2, 0x75E6, + 0xDAB3, 0x75DD, 0xDAB4, 0x75DF, 0xDAB5, 0x75E4, 0xDAB6, 0x75D7, 0xDAB7, 0x7695, 0xDAB8, 0x7692, 0xDAB9, 0x76DA, 0xDABA, 0x7746, + 0xDABB, 0x7747, 0xDABC, 0x7744, 0xDABD, 0x774D, 0xDABE, 0x7745, 0xDABF, 0x774A, 0xDAC0, 0x774E, 0xDAC1, 0x774B, 0xDAC2, 0x774C, + 0xDAC3, 0x77DE, 0xDAC4, 0x77EC, 0xDAC5, 0x7860, 0xDAC6, 0x7864, 0xDAC7, 0x7865, 0xDAC8, 0x785C, 0xDAC9, 0x786D, 0xDACA, 0x7871, + 0xDACB, 0x786A, 0xDACC, 0x786E, 0xDACD, 0x7870, 0xDACE, 0x7869, 0xDACF, 0x7868, 0xDAD0, 0x785E, 0xDAD1, 0x7862, 0xDAD2, 0x7974, + 0xDAD3, 0x7973, 0xDAD4, 0x7972, 0xDAD5, 0x7970, 0xDAD6, 0x7A02, 0xDAD7, 0x7A0A, 0xDAD8, 0x7A03, 0xDAD9, 0x7A0C, 0xDADA, 0x7A04, + 0xDADB, 0x7A99, 0xDADC, 0x7AE6, 0xDADD, 0x7AE4, 0xDADE, 0x7B4A, 0xDADF, 0x7B3B, 0xDAE0, 0x7B44, 0xDAE1, 0x7B48, 0xDAE2, 0x7B4C, + 0xDAE3, 0x7B4E, 0xDAE4, 0x7B40, 0xDAE5, 0x7B58, 0xDAE6, 0x7B45, 0xDAE7, 0x7CA2, 0xDAE8, 0x7C9E, 0xDAE9, 0x7CA8, 0xDAEA, 0x7CA1, + 0xDAEB, 0x7D58, 0xDAEC, 0x7D6F, 0xDAED, 0x7D63, 0xDAEE, 0x7D53, 0xDAEF, 0x7D56, 0xDAF0, 0x7D67, 0xDAF1, 0x7D6A, 0xDAF2, 0x7D4F, + 0xDAF3, 0x7D6D, 0xDAF4, 0x7D5C, 0xDAF5, 0x7D6B, 0xDAF6, 0x7D52, 0xDAF7, 0x7D54, 0xDAF8, 0x7D69, 0xDAF9, 0x7D51, 0xDAFA, 0x7D5F, + 0xDAFB, 0x7D4E, 0xDAFC, 0x7F3E, 0xDAFD, 0x7F3F, 0xDAFE, 0x7F65, 0xDB40, 0x7F66, 0xDB41, 0x7FA2, 0xDB42, 0x7FA0, 0xDB43, 0x7FA1, + 0xDB44, 0x7FD7, 0xDB45, 0x8051, 0xDB46, 0x804F, 0xDB47, 0x8050, 0xDB48, 0x80FE, 0xDB49, 0x80D4, 0xDB4A, 0x8143, 0xDB4B, 0x814A, + 0xDB4C, 0x8152, 0xDB4D, 0x814F, 0xDB4E, 0x8147, 0xDB4F, 0x813D, 0xDB50, 0x814D, 0xDB51, 0x813A, 0xDB52, 0x81E6, 0xDB53, 0x81EE, + 0xDB54, 0x81F7, 0xDB55, 0x81F8, 0xDB56, 0x81F9, 0xDB57, 0x8204, 0xDB58, 0x823C, 0xDB59, 0x823D, 0xDB5A, 0x823F, 0xDB5B, 0x8275, + 0xDB5C, 0x833B, 0xDB5D, 0x83CF, 0xDB5E, 0x83F9, 0xDB5F, 0x8423, 0xDB60, 0x83C0, 0xDB61, 0x83E8, 0xDB62, 0x8412, 0xDB63, 0x83E7, + 0xDB64, 0x83E4, 0xDB65, 0x83FC, 0xDB66, 0x83F6, 0xDB67, 0x8410, 0xDB68, 0x83C6, 0xDB69, 0x83C8, 0xDB6A, 0x83EB, 0xDB6B, 0x83E3, + 0xDB6C, 0x83BF, 0xDB6D, 0x8401, 0xDB6E, 0x83DD, 0xDB6F, 0x83E5, 0xDB70, 0x83D8, 0xDB71, 0x83FF, 0xDB72, 0x83E1, 0xDB73, 0x83CB, + 0xDB74, 0x83CE, 0xDB75, 0x83D6, 0xDB76, 0x83F5, 0xDB77, 0x83C9, 0xDB78, 0x8409, 0xDB79, 0x840F, 0xDB7A, 0x83DE, 0xDB7B, 0x8411, + 0xDB7C, 0x8406, 0xDB7D, 0x83C2, 0xDB7E, 0x83F3, 0xDBA1, 0x83D5, 0xDBA2, 0x83FA, 0xDBA3, 0x83C7, 0xDBA4, 0x83D1, 0xDBA5, 0x83EA, + 0xDBA6, 0x8413, 0xDBA7, 0x83C3, 0xDBA8, 0x83EC, 0xDBA9, 0x83EE, 0xDBAA, 0x83C4, 0xDBAB, 0x83FB, 0xDBAC, 0x83D7, 0xDBAD, 0x83E2, + 0xDBAE, 0x841B, 0xDBAF, 0x83DB, 0xDBB0, 0x83FE, 0xDBB1, 0x86D8, 0xDBB2, 0x86E2, 0xDBB3, 0x86E6, 0xDBB4, 0x86D3, 0xDBB5, 0x86E3, + 0xDBB6, 0x86DA, 0xDBB7, 0x86EA, 0xDBB8, 0x86DD, 0xDBB9, 0x86EB, 0xDBBA, 0x86DC, 0xDBBB, 0x86EC, 0xDBBC, 0x86E9, 0xDBBD, 0x86D7, + 0xDBBE, 0x86E8, 0xDBBF, 0x86D1, 0xDBC0, 0x8848, 0xDBC1, 0x8856, 0xDBC2, 0x8855, 0xDBC3, 0x88BA, 0xDBC4, 0x88D7, 0xDBC5, 0x88B9, + 0xDBC6, 0x88B8, 0xDBC7, 0x88C0, 0xDBC8, 0x88BE, 0xDBC9, 0x88B6, 0xDBCA, 0x88BC, 0xDBCB, 0x88B7, 0xDBCC, 0x88BD, 0xDBCD, 0x88B2, + 0xDBCE, 0x8901, 0xDBCF, 0x88C9, 0xDBD0, 0x8995, 0xDBD1, 0x8998, 0xDBD2, 0x8997, 0xDBD3, 0x89DD, 0xDBD4, 0x89DA, 0xDBD5, 0x89DB, + 0xDBD6, 0x8A4E, 0xDBD7, 0x8A4D, 0xDBD8, 0x8A39, 0xDBD9, 0x8A59, 0xDBDA, 0x8A40, 0xDBDB, 0x8A57, 0xDBDC, 0x8A58, 0xDBDD, 0x8A44, + 0xDBDE, 0x8A45, 0xDBDF, 0x8A52, 0xDBE0, 0x8A48, 0xDBE1, 0x8A51, 0xDBE2, 0x8A4A, 0xDBE3, 0x8A4C, 0xDBE4, 0x8A4F, 0xDBE5, 0x8C5F, + 0xDBE6, 0x8C81, 0xDBE7, 0x8C80, 0xDBE8, 0x8CBA, 0xDBE9, 0x8CBE, 0xDBEA, 0x8CB0, 0xDBEB, 0x8CB9, 0xDBEC, 0x8CB5, 0xDBED, 0x8D84, + 0xDBEE, 0x8D80, 0xDBEF, 0x8D89, 0xDBF0, 0x8DD8, 0xDBF1, 0x8DD3, 0xDBF2, 0x8DCD, 0xDBF3, 0x8DC7, 0xDBF4, 0x8DD6, 0xDBF5, 0x8DDC, + 0xDBF6, 0x8DCF, 0xDBF7, 0x8DD5, 0xDBF8, 0x8DD9, 0xDBF9, 0x8DC8, 0xDBFA, 0x8DD7, 0xDBFB, 0x8DC5, 0xDBFC, 0x8EEF, 0xDBFD, 0x8EF7, + 0xDBFE, 0x8EFA, 0xDC40, 0x8EF9, 0xDC41, 0x8EE6, 0xDC42, 0x8EEE, 0xDC43, 0x8EE5, 0xDC44, 0x8EF5, 0xDC45, 0x8EE7, 0xDC46, 0x8EE8, + 0xDC47, 0x8EF6, 0xDC48, 0x8EEB, 0xDC49, 0x8EF1, 0xDC4A, 0x8EEC, 0xDC4B, 0x8EF4, 0xDC4C, 0x8EE9, 0xDC4D, 0x902D, 0xDC4E, 0x9034, + 0xDC4F, 0x902F, 0xDC50, 0x9106, 0xDC51, 0x912C, 0xDC52, 0x9104, 0xDC53, 0x90FF, 0xDC54, 0x90FC, 0xDC55, 0x9108, 0xDC56, 0x90F9, + 0xDC57, 0x90FB, 0xDC58, 0x9101, 0xDC59, 0x9100, 0xDC5A, 0x9107, 0xDC5B, 0x9105, 0xDC5C, 0x9103, 0xDC5D, 0x9161, 0xDC5E, 0x9164, + 0xDC5F, 0x915F, 0xDC60, 0x9162, 0xDC61, 0x9160, 0xDC62, 0x9201, 0xDC63, 0x920A, 0xDC64, 0x9225, 0xDC65, 0x9203, 0xDC66, 0x921A, + 0xDC67, 0x9226, 0xDC68, 0x920F, 0xDC69, 0x920C, 0xDC6A, 0x9200, 0xDC6B, 0x9212, 0xDC6C, 0x91FF, 0xDC6D, 0x91FD, 0xDC6E, 0x9206, + 0xDC6F, 0x9204, 0xDC70, 0x9227, 0xDC71, 0x9202, 0xDC72, 0x921C, 0xDC73, 0x9224, 0xDC74, 0x9219, 0xDC75, 0x9217, 0xDC76, 0x9205, + 0xDC77, 0x9216, 0xDC78, 0x957B, 0xDC79, 0x958D, 0xDC7A, 0x958C, 0xDC7B, 0x9590, 0xDC7C, 0x9687, 0xDC7D, 0x967E, 0xDC7E, 0x9688, + 0xDCA1, 0x9689, 0xDCA2, 0x9683, 0xDCA3, 0x9680, 0xDCA4, 0x96C2, 0xDCA5, 0x96C8, 0xDCA6, 0x96C3, 0xDCA7, 0x96F1, 0xDCA8, 0x96F0, + 0xDCA9, 0x976C, 0xDCAA, 0x9770, 0xDCAB, 0x976E, 0xDCAC, 0x9807, 0xDCAD, 0x98A9, 0xDCAE, 0x98EB, 0xDCAF, 0x9CE6, 0xDCB0, 0x9EF9, + 0xDCB1, 0x4E83, 0xDCB2, 0x4E84, 0xDCB3, 0x4EB6, 0xDCB4, 0x50BD, 0xDCB5, 0x50BF, 0xDCB6, 0x50C6, 0xDCB7, 0x50AE, 0xDCB8, 0x50C4, + 0xDCB9, 0x50CA, 0xDCBA, 0x50B4, 0xDCBB, 0x50C8, 0xDCBC, 0x50C2, 0xDCBD, 0x50B0, 0xDCBE, 0x50C1, 0xDCBF, 0x50BA, 0xDCC0, 0x50B1, + 0xDCC1, 0x50CB, 0xDCC2, 0x50C9, 0xDCC3, 0x50B6, 0xDCC4, 0x50B8, 0xDCC5, 0x51D7, 0xDCC6, 0x527A, 0xDCC7, 0x5278, 0xDCC8, 0x527B, + 0xDCC9, 0x527C, 0xDCCA, 0x55C3, 0xDCCB, 0x55DB, 0xDCCC, 0x55CC, 0xDCCD, 0x55D0, 0xDCCE, 0x55CB, 0xDCCF, 0x55CA, 0xDCD0, 0x55DD, + 0xDCD1, 0x55C0, 0xDCD2, 0x55D4, 0xDCD3, 0x55C4, 0xDCD4, 0x55E9, 0xDCD5, 0x55BF, 0xDCD6, 0x55D2, 0xDCD7, 0x558D, 0xDCD8, 0x55CF, + 0xDCD9, 0x55D5, 0xDCDA, 0x55E2, 0xDCDB, 0x55D6, 0xDCDC, 0x55C8, 0xDCDD, 0x55F2, 0xDCDE, 0x55CD, 0xDCDF, 0x55D9, 0xDCE0, 0x55C2, + 0xDCE1, 0x5714, 0xDCE2, 0x5853, 0xDCE3, 0x5868, 0xDCE4, 0x5864, 0xDCE5, 0x584F, 0xDCE6, 0x584D, 0xDCE7, 0x5849, 0xDCE8, 0x586F, + 0xDCE9, 0x5855, 0xDCEA, 0x584E, 0xDCEB, 0x585D, 0xDCEC, 0x5859, 0xDCED, 0x5865, 0xDCEE, 0x585B, 0xDCEF, 0x583D, 0xDCF0, 0x5863, + 0xDCF1, 0x5871, 0xDCF2, 0x58FC, 0xDCF3, 0x5AC7, 0xDCF4, 0x5AC4, 0xDCF5, 0x5ACB, 0xDCF6, 0x5ABA, 0xDCF7, 0x5AB8, 0xDCF8, 0x5AB1, + 0xDCF9, 0x5AB5, 0xDCFA, 0x5AB0, 0xDCFB, 0x5ABF, 0xDCFC, 0x5AC8, 0xDCFD, 0x5ABB, 0xDCFE, 0x5AC6, 0xDD40, 0x5AB7, 0xDD41, 0x5AC0, + 0xDD42, 0x5ACA, 0xDD43, 0x5AB4, 0xDD44, 0x5AB6, 0xDD45, 0x5ACD, 0xDD46, 0x5AB9, 0xDD47, 0x5A90, 0xDD48, 0x5BD6, 0xDD49, 0x5BD8, + 0xDD4A, 0x5BD9, 0xDD4B, 0x5C1F, 0xDD4C, 0x5C33, 0xDD4D, 0x5D71, 0xDD4E, 0x5D63, 0xDD4F, 0x5D4A, 0xDD50, 0x5D65, 0xDD51, 0x5D72, + 0xDD52, 0x5D6C, 0xDD53, 0x5D5E, 0xDD54, 0x5D68, 0xDD55, 0x5D67, 0xDD56, 0x5D62, 0xDD57, 0x5DF0, 0xDD58, 0x5E4F, 0xDD59, 0x5E4E, + 0xDD5A, 0x5E4A, 0xDD5B, 0x5E4D, 0xDD5C, 0x5E4B, 0xDD5D, 0x5EC5, 0xDD5E, 0x5ECC, 0xDD5F, 0x5EC6, 0xDD60, 0x5ECB, 0xDD61, 0x5EC7, + 0xDD62, 0x5F40, 0xDD63, 0x5FAF, 0xDD64, 0x5FAD, 0xDD65, 0x60F7, 0xDD66, 0x6149, 0xDD67, 0x614A, 0xDD68, 0x612B, 0xDD69, 0x6145, + 0xDD6A, 0x6136, 0xDD6B, 0x6132, 0xDD6C, 0x612E, 0xDD6D, 0x6146, 0xDD6E, 0x612F, 0xDD6F, 0x614F, 0xDD70, 0x6129, 0xDD71, 0x6140, + 0xDD72, 0x6220, 0xDD73, 0x9168, 0xDD74, 0x6223, 0xDD75, 0x6225, 0xDD76, 0x6224, 0xDD77, 0x63C5, 0xDD78, 0x63F1, 0xDD79, 0x63EB, + 0xDD7A, 0x6410, 0xDD7B, 0x6412, 0xDD7C, 0x6409, 0xDD7D, 0x6420, 0xDD7E, 0x6424, 0xDDA1, 0x6433, 0xDDA2, 0x6443, 0xDDA3, 0x641F, + 0xDDA4, 0x6415, 0xDDA5, 0x6418, 0xDDA6, 0x6439, 0xDDA7, 0x6437, 0xDDA8, 0x6422, 0xDDA9, 0x6423, 0xDDAA, 0x640C, 0xDDAB, 0x6426, + 0xDDAC, 0x6430, 0xDDAD, 0x6428, 0xDDAE, 0x6441, 0xDDAF, 0x6435, 0xDDB0, 0x642F, 0xDDB1, 0x640A, 0xDDB2, 0x641A, 0xDDB3, 0x6440, + 0xDDB4, 0x6425, 0xDDB5, 0x6427, 0xDDB6, 0x640B, 0xDDB7, 0x63E7, 0xDDB8, 0x641B, 0xDDB9, 0x642E, 0xDDBA, 0x6421, 0xDDBB, 0x640E, + 0xDDBC, 0x656F, 0xDDBD, 0x6592, 0xDDBE, 0x65D3, 0xDDBF, 0x6686, 0xDDC0, 0x668C, 0xDDC1, 0x6695, 0xDDC2, 0x6690, 0xDDC3, 0x668B, + 0xDDC4, 0x668A, 0xDDC5, 0x6699, 0xDDC6, 0x6694, 0xDDC7, 0x6678, 0xDDC8, 0x6720, 0xDDC9, 0x6966, 0xDDCA, 0x695F, 0xDDCB, 0x6938, + 0xDDCC, 0x694E, 0xDDCD, 0x6962, 0xDDCE, 0x6971, 0xDDCF, 0x693F, 0xDDD0, 0x6945, 0xDDD1, 0x696A, 0xDDD2, 0x6939, 0xDDD3, 0x6942, + 0xDDD4, 0x6957, 0xDDD5, 0x6959, 0xDDD6, 0x697A, 0xDDD7, 0x6948, 0xDDD8, 0x6949, 0xDDD9, 0x6935, 0xDDDA, 0x696C, 0xDDDB, 0x6933, + 0xDDDC, 0x693D, 0xDDDD, 0x6965, 0xDDDE, 0x68F0, 0xDDDF, 0x6978, 0xDDE0, 0x6934, 0xDDE1, 0x6969, 0xDDE2, 0x6940, 0xDDE3, 0x696F, + 0xDDE4, 0x6944, 0xDDE5, 0x6976, 0xDDE6, 0x6958, 0xDDE7, 0x6941, 0xDDE8, 0x6974, 0xDDE9, 0x694C, 0xDDEA, 0x693B, 0xDDEB, 0x694B, + 0xDDEC, 0x6937, 0xDDED, 0x695C, 0xDDEE, 0x694F, 0xDDEF, 0x6951, 0xDDF0, 0x6932, 0xDDF1, 0x6952, 0xDDF2, 0x692F, 0xDDF3, 0x697B, + 0xDDF4, 0x693C, 0xDDF5, 0x6B46, 0xDDF6, 0x6B45, 0xDDF7, 0x6B43, 0xDDF8, 0x6B42, 0xDDF9, 0x6B48, 0xDDFA, 0x6B41, 0xDDFB, 0x6B9B, + 0xDDFC, 0xFA0D, 0xDDFD, 0x6BFB, 0xDDFE, 0x6BFC, 0xDE40, 0x6BF9, 0xDE41, 0x6BF7, 0xDE42, 0x6BF8, 0xDE43, 0x6E9B, 0xDE44, 0x6ED6, + 0xDE45, 0x6EC8, 0xDE46, 0x6E8F, 0xDE47, 0x6EC0, 0xDE48, 0x6E9F, 0xDE49, 0x6E93, 0xDE4A, 0x6E94, 0xDE4B, 0x6EA0, 0xDE4C, 0x6EB1, + 0xDE4D, 0x6EB9, 0xDE4E, 0x6EC6, 0xDE4F, 0x6ED2, 0xDE50, 0x6EBD, 0xDE51, 0x6EC1, 0xDE52, 0x6E9E, 0xDE53, 0x6EC9, 0xDE54, 0x6EB7, + 0xDE55, 0x6EB0, 0xDE56, 0x6ECD, 0xDE57, 0x6EA6, 0xDE58, 0x6ECF, 0xDE59, 0x6EB2, 0xDE5A, 0x6EBE, 0xDE5B, 0x6EC3, 0xDE5C, 0x6EDC, + 0xDE5D, 0x6ED8, 0xDE5E, 0x6E99, 0xDE5F, 0x6E92, 0xDE60, 0x6E8E, 0xDE61, 0x6E8D, 0xDE62, 0x6EA4, 0xDE63, 0x6EA1, 0xDE64, 0x6EBF, + 0xDE65, 0x6EB3, 0xDE66, 0x6ED0, 0xDE67, 0x6ECA, 0xDE68, 0x6E97, 0xDE69, 0x6EAE, 0xDE6A, 0x6EA3, 0xDE6B, 0x7147, 0xDE6C, 0x7154, + 0xDE6D, 0x7152, 0xDE6E, 0x7163, 0xDE6F, 0x7160, 0xDE70, 0x7141, 0xDE71, 0x715D, 0xDE72, 0x7162, 0xDE73, 0x7172, 0xDE74, 0x7178, + 0xDE75, 0x716A, 0xDE76, 0x7161, 0xDE77, 0x7142, 0xDE78, 0x7158, 0xDE79, 0x7143, 0xDE7A, 0x714B, 0xDE7B, 0x7170, 0xDE7C, 0x715F, + 0xDE7D, 0x7150, 0xDE7E, 0x7153, 0xDEA1, 0x7144, 0xDEA2, 0x714D, 0xDEA3, 0x715A, 0xDEA4, 0x724F, 0xDEA5, 0x728D, 0xDEA6, 0x728C, + 0xDEA7, 0x7291, 0xDEA8, 0x7290, 0xDEA9, 0x728E, 0xDEAA, 0x733C, 0xDEAB, 0x7342, 0xDEAC, 0x733B, 0xDEAD, 0x733A, 0xDEAE, 0x7340, + 0xDEAF, 0x734A, 0xDEB0, 0x7349, 0xDEB1, 0x7444, 0xDEB2, 0x744A, 0xDEB3, 0x744B, 0xDEB4, 0x7452, 0xDEB5, 0x7451, 0xDEB6, 0x7457, + 0xDEB7, 0x7440, 0xDEB8, 0x744F, 0xDEB9, 0x7450, 0xDEBA, 0x744E, 0xDEBB, 0x7442, 0xDEBC, 0x7446, 0xDEBD, 0x744D, 0xDEBE, 0x7454, + 0xDEBF, 0x74E1, 0xDEC0, 0x74FF, 0xDEC1, 0x74FE, 0xDEC2, 0x74FD, 0xDEC3, 0x751D, 0xDEC4, 0x7579, 0xDEC5, 0x7577, 0xDEC6, 0x6983, + 0xDEC7, 0x75EF, 0xDEC8, 0x760F, 0xDEC9, 0x7603, 0xDECA, 0x75F7, 0xDECB, 0x75FE, 0xDECC, 0x75FC, 0xDECD, 0x75F9, 0xDECE, 0x75F8, + 0xDECF, 0x7610, 0xDED0, 0x75FB, 0xDED1, 0x75F6, 0xDED2, 0x75ED, 0xDED3, 0x75F5, 0xDED4, 0x75FD, 0xDED5, 0x7699, 0xDED6, 0x76B5, + 0xDED7, 0x76DD, 0xDED8, 0x7755, 0xDED9, 0x775F, 0xDEDA, 0x7760, 0xDEDB, 0x7752, 0xDEDC, 0x7756, 0xDEDD, 0x775A, 0xDEDE, 0x7769, + 0xDEDF, 0x7767, 0xDEE0, 0x7754, 0xDEE1, 0x7759, 0xDEE2, 0x776D, 0xDEE3, 0x77E0, 0xDEE4, 0x7887, 0xDEE5, 0x789A, 0xDEE6, 0x7894, + 0xDEE7, 0x788F, 0xDEE8, 0x7884, 0xDEE9, 0x7895, 0xDEEA, 0x7885, 0xDEEB, 0x7886, 0xDEEC, 0x78A1, 0xDEED, 0x7883, 0xDEEE, 0x7879, + 0xDEEF, 0x7899, 0xDEF0, 0x7880, 0xDEF1, 0x7896, 0xDEF2, 0x787B, 0xDEF3, 0x797C, 0xDEF4, 0x7982, 0xDEF5, 0x797D, 0xDEF6, 0x7979, + 0xDEF7, 0x7A11, 0xDEF8, 0x7A18, 0xDEF9, 0x7A19, 0xDEFA, 0x7A12, 0xDEFB, 0x7A17, 0xDEFC, 0x7A15, 0xDEFD, 0x7A22, 0xDEFE, 0x7A13, + 0xDF40, 0x7A1B, 0xDF41, 0x7A10, 0xDF42, 0x7AA3, 0xDF43, 0x7AA2, 0xDF44, 0x7A9E, 0xDF45, 0x7AEB, 0xDF46, 0x7B66, 0xDF47, 0x7B64, + 0xDF48, 0x7B6D, 0xDF49, 0x7B74, 0xDF4A, 0x7B69, 0xDF4B, 0x7B72, 0xDF4C, 0x7B65, 0xDF4D, 0x7B73, 0xDF4E, 0x7B71, 0xDF4F, 0x7B70, + 0xDF50, 0x7B61, 0xDF51, 0x7B78, 0xDF52, 0x7B76, 0xDF53, 0x7B63, 0xDF54, 0x7CB2, 0xDF55, 0x7CB4, 0xDF56, 0x7CAF, 0xDF57, 0x7D88, + 0xDF58, 0x7D86, 0xDF59, 0x7D80, 0xDF5A, 0x7D8D, 0xDF5B, 0x7D7F, 0xDF5C, 0x7D85, 0xDF5D, 0x7D7A, 0xDF5E, 0x7D8E, 0xDF5F, 0x7D7B, + 0xDF60, 0x7D83, 0xDF61, 0x7D7C, 0xDF62, 0x7D8C, 0xDF63, 0x7D94, 0xDF64, 0x7D84, 0xDF65, 0x7D7D, 0xDF66, 0x7D92, 0xDF67, 0x7F6D, + 0xDF68, 0x7F6B, 0xDF69, 0x7F67, 0xDF6A, 0x7F68, 0xDF6B, 0x7F6C, 0xDF6C, 0x7FA6, 0xDF6D, 0x7FA5, 0xDF6E, 0x7FA7, 0xDF6F, 0x7FDB, + 0xDF70, 0x7FDC, 0xDF71, 0x8021, 0xDF72, 0x8164, 0xDF73, 0x8160, 0xDF74, 0x8177, 0xDF75, 0x815C, 0xDF76, 0x8169, 0xDF77, 0x815B, + 0xDF78, 0x8162, 0xDF79, 0x8172, 0xDF7A, 0x6721, 0xDF7B, 0x815E, 0xDF7C, 0x8176, 0xDF7D, 0x8167, 0xDF7E, 0x816F, 0xDFA1, 0x8144, + 0xDFA2, 0x8161, 0xDFA3, 0x821D, 0xDFA4, 0x8249, 0xDFA5, 0x8244, 0xDFA6, 0x8240, 0xDFA7, 0x8242, 0xDFA8, 0x8245, 0xDFA9, 0x84F1, + 0xDFAA, 0x843F, 0xDFAB, 0x8456, 0xDFAC, 0x8476, 0xDFAD, 0x8479, 0xDFAE, 0x848F, 0xDFAF, 0x848D, 0xDFB0, 0x8465, 0xDFB1, 0x8451, + 0xDFB2, 0x8440, 0xDFB3, 0x8486, 0xDFB4, 0x8467, 0xDFB5, 0x8430, 0xDFB6, 0x844D, 0xDFB7, 0x847D, 0xDFB8, 0x845A, 0xDFB9, 0x8459, + 0xDFBA, 0x8474, 0xDFBB, 0x8473, 0xDFBC, 0x845D, 0xDFBD, 0x8507, 0xDFBE, 0x845E, 0xDFBF, 0x8437, 0xDFC0, 0x843A, 0xDFC1, 0x8434, + 0xDFC2, 0x847A, 0xDFC3, 0x8443, 0xDFC4, 0x8478, 0xDFC5, 0x8432, 0xDFC6, 0x8445, 0xDFC7, 0x8429, 0xDFC8, 0x83D9, 0xDFC9, 0x844B, + 0xDFCA, 0x842F, 0xDFCB, 0x8442, 0xDFCC, 0x842D, 0xDFCD, 0x845F, 0xDFCE, 0x8470, 0xDFCF, 0x8439, 0xDFD0, 0x844E, 0xDFD1, 0x844C, + 0xDFD2, 0x8452, 0xDFD3, 0x846F, 0xDFD4, 0x84C5, 0xDFD5, 0x848E, 0xDFD6, 0x843B, 0xDFD7, 0x8447, 0xDFD8, 0x8436, 0xDFD9, 0x8433, + 0xDFDA, 0x8468, 0xDFDB, 0x847E, 0xDFDC, 0x8444, 0xDFDD, 0x842B, 0xDFDE, 0x8460, 0xDFDF, 0x8454, 0xDFE0, 0x846E, 0xDFE1, 0x8450, + 0xDFE2, 0x870B, 0xDFE3, 0x8704, 0xDFE4, 0x86F7, 0xDFE5, 0x870C, 0xDFE6, 0x86FA, 0xDFE7, 0x86D6, 0xDFE8, 0x86F5, 0xDFE9, 0x874D, + 0xDFEA, 0x86F8, 0xDFEB, 0x870E, 0xDFEC, 0x8709, 0xDFED, 0x8701, 0xDFEE, 0x86F6, 0xDFEF, 0x870D, 0xDFF0, 0x8705, 0xDFF1, 0x88D6, + 0xDFF2, 0x88CB, 0xDFF3, 0x88CD, 0xDFF4, 0x88CE, 0xDFF5, 0x88DE, 0xDFF6, 0x88DB, 0xDFF7, 0x88DA, 0xDFF8, 0x88CC, 0xDFF9, 0x88D0, + 0xDFFA, 0x8985, 0xDFFB, 0x899B, 0xDFFC, 0x89DF, 0xDFFD, 0x89E5, 0xDFFE, 0x89E4, 0xE040, 0x89E1, 0xE041, 0x89E0, 0xE042, 0x89E2, + 0xE043, 0x89DC, 0xE044, 0x89E6, 0xE045, 0x8A76, 0xE046, 0x8A86, 0xE047, 0x8A7F, 0xE048, 0x8A61, 0xE049, 0x8A3F, 0xE04A, 0x8A77, + 0xE04B, 0x8A82, 0xE04C, 0x8A84, 0xE04D, 0x8A75, 0xE04E, 0x8A83, 0xE04F, 0x8A81, 0xE050, 0x8A74, 0xE051, 0x8A7A, 0xE052, 0x8C3C, + 0xE053, 0x8C4B, 0xE054, 0x8C4A, 0xE055, 0x8C65, 0xE056, 0x8C64, 0xE057, 0x8C66, 0xE058, 0x8C86, 0xE059, 0x8C84, 0xE05A, 0x8C85, + 0xE05B, 0x8CCC, 0xE05C, 0x8D68, 0xE05D, 0x8D69, 0xE05E, 0x8D91, 0xE05F, 0x8D8C, 0xE060, 0x8D8E, 0xE061, 0x8D8F, 0xE062, 0x8D8D, + 0xE063, 0x8D93, 0xE064, 0x8D94, 0xE065, 0x8D90, 0xE066, 0x8D92, 0xE067, 0x8DF0, 0xE068, 0x8DE0, 0xE069, 0x8DEC, 0xE06A, 0x8DF1, + 0xE06B, 0x8DEE, 0xE06C, 0x8DD0, 0xE06D, 0x8DE9, 0xE06E, 0x8DE3, 0xE06F, 0x8DE2, 0xE070, 0x8DE7, 0xE071, 0x8DF2, 0xE072, 0x8DEB, + 0xE073, 0x8DF4, 0xE074, 0x8F06, 0xE075, 0x8EFF, 0xE076, 0x8F01, 0xE077, 0x8F00, 0xE078, 0x8F05, 0xE079, 0x8F07, 0xE07A, 0x8F08, + 0xE07B, 0x8F02, 0xE07C, 0x8F0B, 0xE07D, 0x9052, 0xE07E, 0x903F, 0xE0A1, 0x9044, 0xE0A2, 0x9049, 0xE0A3, 0x903D, 0xE0A4, 0x9110, + 0xE0A5, 0x910D, 0xE0A6, 0x910F, 0xE0A7, 0x9111, 0xE0A8, 0x9116, 0xE0A9, 0x9114, 0xE0AA, 0x910B, 0xE0AB, 0x910E, 0xE0AC, 0x916E, + 0xE0AD, 0x916F, 0xE0AE, 0x9248, 0xE0AF, 0x9252, 0xE0B0, 0x9230, 0xE0B1, 0x923A, 0xE0B2, 0x9266, 0xE0B3, 0x9233, 0xE0B4, 0x9265, + 0xE0B5, 0x925E, 0xE0B6, 0x9283, 0xE0B7, 0x922E, 0xE0B8, 0x924A, 0xE0B9, 0x9246, 0xE0BA, 0x926D, 0xE0BB, 0x926C, 0xE0BC, 0x924F, + 0xE0BD, 0x9260, 0xE0BE, 0x9267, 0xE0BF, 0x926F, 0xE0C0, 0x9236, 0xE0C1, 0x9261, 0xE0C2, 0x9270, 0xE0C3, 0x9231, 0xE0C4, 0x9254, + 0xE0C5, 0x9263, 0xE0C6, 0x9250, 0xE0C7, 0x9272, 0xE0C8, 0x924E, 0xE0C9, 0x9253, 0xE0CA, 0x924C, 0xE0CB, 0x9256, 0xE0CC, 0x9232, + 0xE0CD, 0x959F, 0xE0CE, 0x959C, 0xE0CF, 0x959E, 0xE0D0, 0x959B, 0xE0D1, 0x9692, 0xE0D2, 0x9693, 0xE0D3, 0x9691, 0xE0D4, 0x9697, + 0xE0D5, 0x96CE, 0xE0D6, 0x96FA, 0xE0D7, 0x96FD, 0xE0D8, 0x96F8, 0xE0D9, 0x96F5, 0xE0DA, 0x9773, 0xE0DB, 0x9777, 0xE0DC, 0x9778, + 0xE0DD, 0x9772, 0xE0DE, 0x980F, 0xE0DF, 0x980D, 0xE0E0, 0x980E, 0xE0E1, 0x98AC, 0xE0E2, 0x98F6, 0xE0E3, 0x98F9, 0xE0E4, 0x99AF, + 0xE0E5, 0x99B2, 0xE0E6, 0x99B0, 0xE0E7, 0x99B5, 0xE0E8, 0x9AAD, 0xE0E9, 0x9AAB, 0xE0EA, 0x9B5B, 0xE0EB, 0x9CEA, 0xE0EC, 0x9CED, + 0xE0ED, 0x9CE7, 0xE0EE, 0x9E80, 0xE0EF, 0x9EFD, 0xE0F0, 0x50E6, 0xE0F1, 0x50D4, 0xE0F2, 0x50D7, 0xE0F3, 0x50E8, 0xE0F4, 0x50F3, + 0xE0F5, 0x50DB, 0xE0F6, 0x50EA, 0xE0F7, 0x50DD, 0xE0F8, 0x50E4, 0xE0F9, 0x50D3, 0xE0FA, 0x50EC, 0xE0FB, 0x50F0, 0xE0FC, 0x50EF, + 0xE0FD, 0x50E3, 0xE0FE, 0x50E0, 0xE140, 0x51D8, 0xE141, 0x5280, 0xE142, 0x5281, 0xE143, 0x52E9, 0xE144, 0x52EB, 0xE145, 0x5330, + 0xE146, 0x53AC, 0xE147, 0x5627, 0xE148, 0x5615, 0xE149, 0x560C, 0xE14A, 0x5612, 0xE14B, 0x55FC, 0xE14C, 0x560F, 0xE14D, 0x561C, + 0xE14E, 0x5601, 0xE14F, 0x5613, 0xE150, 0x5602, 0xE151, 0x55FA, 0xE152, 0x561D, 0xE153, 0x5604, 0xE154, 0x55FF, 0xE155, 0x55F9, + 0xE156, 0x5889, 0xE157, 0x587C, 0xE158, 0x5890, 0xE159, 0x5898, 0xE15A, 0x5886, 0xE15B, 0x5881, 0xE15C, 0x587F, 0xE15D, 0x5874, + 0xE15E, 0x588B, 0xE15F, 0x587A, 0xE160, 0x5887, 0xE161, 0x5891, 0xE162, 0x588E, 0xE163, 0x5876, 0xE164, 0x5882, 0xE165, 0x5888, + 0xE166, 0x587B, 0xE167, 0x5894, 0xE168, 0x588F, 0xE169, 0x58FE, 0xE16A, 0x596B, 0xE16B, 0x5ADC, 0xE16C, 0x5AEE, 0xE16D, 0x5AE5, + 0xE16E, 0x5AD5, 0xE16F, 0x5AEA, 0xE170, 0x5ADA, 0xE171, 0x5AED, 0xE172, 0x5AEB, 0xE173, 0x5AF3, 0xE174, 0x5AE2, 0xE175, 0x5AE0, + 0xE176, 0x5ADB, 0xE177, 0x5AEC, 0xE178, 0x5ADE, 0xE179, 0x5ADD, 0xE17A, 0x5AD9, 0xE17B, 0x5AE8, 0xE17C, 0x5ADF, 0xE17D, 0x5B77, + 0xE17E, 0x5BE0, 0xE1A1, 0x5BE3, 0xE1A2, 0x5C63, 0xE1A3, 0x5D82, 0xE1A4, 0x5D80, 0xE1A5, 0x5D7D, 0xE1A6, 0x5D86, 0xE1A7, 0x5D7A, + 0xE1A8, 0x5D81, 0xE1A9, 0x5D77, 0xE1AA, 0x5D8A, 0xE1AB, 0x5D89, 0xE1AC, 0x5D88, 0xE1AD, 0x5D7E, 0xE1AE, 0x5D7C, 0xE1AF, 0x5D8D, + 0xE1B0, 0x5D79, 0xE1B1, 0x5D7F, 0xE1B2, 0x5E58, 0xE1B3, 0x5E59, 0xE1B4, 0x5E53, 0xE1B5, 0x5ED8, 0xE1B6, 0x5ED1, 0xE1B7, 0x5ED7, + 0xE1B8, 0x5ECE, 0xE1B9, 0x5EDC, 0xE1BA, 0x5ED5, 0xE1BB, 0x5ED9, 0xE1BC, 0x5ED2, 0xE1BD, 0x5ED4, 0xE1BE, 0x5F44, 0xE1BF, 0x5F43, + 0xE1C0, 0x5F6F, 0xE1C1, 0x5FB6, 0xE1C2, 0x612C, 0xE1C3, 0x6128, 0xE1C4, 0x6141, 0xE1C5, 0x615E, 0xE1C6, 0x6171, 0xE1C7, 0x6173, + 0xE1C8, 0x6152, 0xE1C9, 0x6153, 0xE1CA, 0x6172, 0xE1CB, 0x616C, 0xE1CC, 0x6180, 0xE1CD, 0x6174, 0xE1CE, 0x6154, 0xE1CF, 0x617A, + 0xE1D0, 0x615B, 0xE1D1, 0x6165, 0xE1D2, 0x613B, 0xE1D3, 0x616A, 0xE1D4, 0x6161, 0xE1D5, 0x6156, 0xE1D6, 0x6229, 0xE1D7, 0x6227, + 0xE1D8, 0x622B, 0xE1D9, 0x642B, 0xE1DA, 0x644D, 0xE1DB, 0x645B, 0xE1DC, 0x645D, 0xE1DD, 0x6474, 0xE1DE, 0x6476, 0xE1DF, 0x6472, + 0xE1E0, 0x6473, 0xE1E1, 0x647D, 0xE1E2, 0x6475, 0xE1E3, 0x6466, 0xE1E4, 0x64A6, 0xE1E5, 0x644E, 0xE1E6, 0x6482, 0xE1E7, 0x645E, + 0xE1E8, 0x645C, 0xE1E9, 0x644B, 0xE1EA, 0x6453, 0xE1EB, 0x6460, 0xE1EC, 0x6450, 0xE1ED, 0x647F, 0xE1EE, 0x643F, 0xE1EF, 0x646C, + 0xE1F0, 0x646B, 0xE1F1, 0x6459, 0xE1F2, 0x6465, 0xE1F3, 0x6477, 0xE1F4, 0x6573, 0xE1F5, 0x65A0, 0xE1F6, 0x66A1, 0xE1F7, 0x66A0, + 0xE1F8, 0x669F, 0xE1F9, 0x6705, 0xE1FA, 0x6704, 0xE1FB, 0x6722, 0xE1FC, 0x69B1, 0xE1FD, 0x69B6, 0xE1FE, 0x69C9, 0xE240, 0x69A0, + 0xE241, 0x69CE, 0xE242, 0x6996, 0xE243, 0x69B0, 0xE244, 0x69AC, 0xE245, 0x69BC, 0xE246, 0x6991, 0xE247, 0x6999, 0xE248, 0x698E, + 0xE249, 0x69A7, 0xE24A, 0x698D, 0xE24B, 0x69A9, 0xE24C, 0x69BE, 0xE24D, 0x69AF, 0xE24E, 0x69BF, 0xE24F, 0x69C4, 0xE250, 0x69BD, + 0xE251, 0x69A4, 0xE252, 0x69D4, 0xE253, 0x69B9, 0xE254, 0x69CA, 0xE255, 0x699A, 0xE256, 0x69CF, 0xE257, 0x69B3, 0xE258, 0x6993, + 0xE259, 0x69AA, 0xE25A, 0x69A1, 0xE25B, 0x699E, 0xE25C, 0x69D9, 0xE25D, 0x6997, 0xE25E, 0x6990, 0xE25F, 0x69C2, 0xE260, 0x69B5, + 0xE261, 0x69A5, 0xE262, 0x69C6, 0xE263, 0x6B4A, 0xE264, 0x6B4D, 0xE265, 0x6B4B, 0xE266, 0x6B9E, 0xE267, 0x6B9F, 0xE268, 0x6BA0, + 0xE269, 0x6BC3, 0xE26A, 0x6BC4, 0xE26B, 0x6BFE, 0xE26C, 0x6ECE, 0xE26D, 0x6EF5, 0xE26E, 0x6EF1, 0xE26F, 0x6F03, 0xE270, 0x6F25, + 0xE271, 0x6EF8, 0xE272, 0x6F37, 0xE273, 0x6EFB, 0xE274, 0x6F2E, 0xE275, 0x6F09, 0xE276, 0x6F4E, 0xE277, 0x6F19, 0xE278, 0x6F1A, + 0xE279, 0x6F27, 0xE27A, 0x6F18, 0xE27B, 0x6F3B, 0xE27C, 0x6F12, 0xE27D, 0x6EED, 0xE27E, 0x6F0A, 0xE2A1, 0x6F36, 0xE2A2, 0x6F73, + 0xE2A3, 0x6EF9, 0xE2A4, 0x6EEE, 0xE2A5, 0x6F2D, 0xE2A6, 0x6F40, 0xE2A7, 0x6F30, 0xE2A8, 0x6F3C, 0xE2A9, 0x6F35, 0xE2AA, 0x6EEB, + 0xE2AB, 0x6F07, 0xE2AC, 0x6F0E, 0xE2AD, 0x6F43, 0xE2AE, 0x6F05, 0xE2AF, 0x6EFD, 0xE2B0, 0x6EF6, 0xE2B1, 0x6F39, 0xE2B2, 0x6F1C, + 0xE2B3, 0x6EFC, 0xE2B4, 0x6F3A, 0xE2B5, 0x6F1F, 0xE2B6, 0x6F0D, 0xE2B7, 0x6F1E, 0xE2B8, 0x6F08, 0xE2B9, 0x6F21, 0xE2BA, 0x7187, + 0xE2BB, 0x7190, 0xE2BC, 0x7189, 0xE2BD, 0x7180, 0xE2BE, 0x7185, 0xE2BF, 0x7182, 0xE2C0, 0x718F, 0xE2C1, 0x717B, 0xE2C2, 0x7186, + 0xE2C3, 0x7181, 0xE2C4, 0x7197, 0xE2C5, 0x7244, 0xE2C6, 0x7253, 0xE2C7, 0x7297, 0xE2C8, 0x7295, 0xE2C9, 0x7293, 0xE2CA, 0x7343, + 0xE2CB, 0x734D, 0xE2CC, 0x7351, 0xE2CD, 0x734C, 0xE2CE, 0x7462, 0xE2CF, 0x7473, 0xE2D0, 0x7471, 0xE2D1, 0x7475, 0xE2D2, 0x7472, + 0xE2D3, 0x7467, 0xE2D4, 0x746E, 0xE2D5, 0x7500, 0xE2D6, 0x7502, 0xE2D7, 0x7503, 0xE2D8, 0x757D, 0xE2D9, 0x7590, 0xE2DA, 0x7616, + 0xE2DB, 0x7608, 0xE2DC, 0x760C, 0xE2DD, 0x7615, 0xE2DE, 0x7611, 0xE2DF, 0x760A, 0xE2E0, 0x7614, 0xE2E1, 0x76B8, 0xE2E2, 0x7781, + 0xE2E3, 0x777C, 0xE2E4, 0x7785, 0xE2E5, 0x7782, 0xE2E6, 0x776E, 0xE2E7, 0x7780, 0xE2E8, 0x776F, 0xE2E9, 0x777E, 0xE2EA, 0x7783, + 0xE2EB, 0x78B2, 0xE2EC, 0x78AA, 0xE2ED, 0x78B4, 0xE2EE, 0x78AD, 0xE2EF, 0x78A8, 0xE2F0, 0x787E, 0xE2F1, 0x78AB, 0xE2F2, 0x789E, + 0xE2F3, 0x78A5, 0xE2F4, 0x78A0, 0xE2F5, 0x78AC, 0xE2F6, 0x78A2, 0xE2F7, 0x78A4, 0xE2F8, 0x7998, 0xE2F9, 0x798A, 0xE2FA, 0x798B, + 0xE2FB, 0x7996, 0xE2FC, 0x7995, 0xE2FD, 0x7994, 0xE2FE, 0x7993, 0xE340, 0x7997, 0xE341, 0x7988, 0xE342, 0x7992, 0xE343, 0x7990, + 0xE344, 0x7A2B, 0xE345, 0x7A4A, 0xE346, 0x7A30, 0xE347, 0x7A2F, 0xE348, 0x7A28, 0xE349, 0x7A26, 0xE34A, 0x7AA8, 0xE34B, 0x7AAB, + 0xE34C, 0x7AAC, 0xE34D, 0x7AEE, 0xE34E, 0x7B88, 0xE34F, 0x7B9C, 0xE350, 0x7B8A, 0xE351, 0x7B91, 0xE352, 0x7B90, 0xE353, 0x7B96, + 0xE354, 0x7B8D, 0xE355, 0x7B8C, 0xE356, 0x7B9B, 0xE357, 0x7B8E, 0xE358, 0x7B85, 0xE359, 0x7B98, 0xE35A, 0x5284, 0xE35B, 0x7B99, + 0xE35C, 0x7BA4, 0xE35D, 0x7B82, 0xE35E, 0x7CBB, 0xE35F, 0x7CBF, 0xE360, 0x7CBC, 0xE361, 0x7CBA, 0xE362, 0x7DA7, 0xE363, 0x7DB7, + 0xE364, 0x7DC2, 0xE365, 0x7DA3, 0xE366, 0x7DAA, 0xE367, 0x7DC1, 0xE368, 0x7DC0, 0xE369, 0x7DC5, 0xE36A, 0x7D9D, 0xE36B, 0x7DCE, + 0xE36C, 0x7DC4, 0xE36D, 0x7DC6, 0xE36E, 0x7DCB, 0xE36F, 0x7DCC, 0xE370, 0x7DAF, 0xE371, 0x7DB9, 0xE372, 0x7D96, 0xE373, 0x7DBC, + 0xE374, 0x7D9F, 0xE375, 0x7DA6, 0xE376, 0x7DAE, 0xE377, 0x7DA9, 0xE378, 0x7DA1, 0xE379, 0x7DC9, 0xE37A, 0x7F73, 0xE37B, 0x7FE2, + 0xE37C, 0x7FE3, 0xE37D, 0x7FE5, 0xE37E, 0x7FDE, 0xE3A1, 0x8024, 0xE3A2, 0x805D, 0xE3A3, 0x805C, 0xE3A4, 0x8189, 0xE3A5, 0x8186, + 0xE3A6, 0x8183, 0xE3A7, 0x8187, 0xE3A8, 0x818D, 0xE3A9, 0x818C, 0xE3AA, 0x818B, 0xE3AB, 0x8215, 0xE3AC, 0x8497, 0xE3AD, 0x84A4, + 0xE3AE, 0x84A1, 0xE3AF, 0x849F, 0xE3B0, 0x84BA, 0xE3B1, 0x84CE, 0xE3B2, 0x84C2, 0xE3B3, 0x84AC, 0xE3B4, 0x84AE, 0xE3B5, 0x84AB, + 0xE3B6, 0x84B9, 0xE3B7, 0x84B4, 0xE3B8, 0x84C1, 0xE3B9, 0x84CD, 0xE3BA, 0x84AA, 0xE3BB, 0x849A, 0xE3BC, 0x84B1, 0xE3BD, 0x84D0, + 0xE3BE, 0x849D, 0xE3BF, 0x84A7, 0xE3C0, 0x84BB, 0xE3C1, 0x84A2, 0xE3C2, 0x8494, 0xE3C3, 0x84C7, 0xE3C4, 0x84CC, 0xE3C5, 0x849B, + 0xE3C6, 0x84A9, 0xE3C7, 0x84AF, 0xE3C8, 0x84A8, 0xE3C9, 0x84D6, 0xE3CA, 0x8498, 0xE3CB, 0x84B6, 0xE3CC, 0x84CF, 0xE3CD, 0x84A0, + 0xE3CE, 0x84D7, 0xE3CF, 0x84D4, 0xE3D0, 0x84D2, 0xE3D1, 0x84DB, 0xE3D2, 0x84B0, 0xE3D3, 0x8491, 0xE3D4, 0x8661, 0xE3D5, 0x8733, + 0xE3D6, 0x8723, 0xE3D7, 0x8728, 0xE3D8, 0x876B, 0xE3D9, 0x8740, 0xE3DA, 0x872E, 0xE3DB, 0x871E, 0xE3DC, 0x8721, 0xE3DD, 0x8719, + 0xE3DE, 0x871B, 0xE3DF, 0x8743, 0xE3E0, 0x872C, 0xE3E1, 0x8741, 0xE3E2, 0x873E, 0xE3E3, 0x8746, 0xE3E4, 0x8720, 0xE3E5, 0x8732, + 0xE3E6, 0x872A, 0xE3E7, 0x872D, 0xE3E8, 0x873C, 0xE3E9, 0x8712, 0xE3EA, 0x873A, 0xE3EB, 0x8731, 0xE3EC, 0x8735, 0xE3ED, 0x8742, + 0xE3EE, 0x8726, 0xE3EF, 0x8727, 0xE3F0, 0x8738, 0xE3F1, 0x8724, 0xE3F2, 0x871A, 0xE3F3, 0x8730, 0xE3F4, 0x8711, 0xE3F5, 0x88F7, + 0xE3F6, 0x88E7, 0xE3F7, 0x88F1, 0xE3F8, 0x88F2, 0xE3F9, 0x88FA, 0xE3FA, 0x88FE, 0xE3FB, 0x88EE, 0xE3FC, 0x88FC, 0xE3FD, 0x88F6, + 0xE3FE, 0x88FB, 0xE440, 0x88F0, 0xE441, 0x88EC, 0xE442, 0x88EB, 0xE443, 0x899D, 0xE444, 0x89A1, 0xE445, 0x899F, 0xE446, 0x899E, + 0xE447, 0x89E9, 0xE448, 0x89EB, 0xE449, 0x89E8, 0xE44A, 0x8AAB, 0xE44B, 0x8A99, 0xE44C, 0x8A8B, 0xE44D, 0x8A92, 0xE44E, 0x8A8F, + 0xE44F, 0x8A96, 0xE450, 0x8C3D, 0xE451, 0x8C68, 0xE452, 0x8C69, 0xE453, 0x8CD5, 0xE454, 0x8CCF, 0xE455, 0x8CD7, 0xE456, 0x8D96, + 0xE457, 0x8E09, 0xE458, 0x8E02, 0xE459, 0x8DFF, 0xE45A, 0x8E0D, 0xE45B, 0x8DFD, 0xE45C, 0x8E0A, 0xE45D, 0x8E03, 0xE45E, 0x8E07, + 0xE45F, 0x8E06, 0xE460, 0x8E05, 0xE461, 0x8DFE, 0xE462, 0x8E00, 0xE463, 0x8E04, 0xE464, 0x8F10, 0xE465, 0x8F11, 0xE466, 0x8F0E, + 0xE467, 0x8F0D, 0xE468, 0x9123, 0xE469, 0x911C, 0xE46A, 0x9120, 0xE46B, 0x9122, 0xE46C, 0x911F, 0xE46D, 0x911D, 0xE46E, 0x911A, + 0xE46F, 0x9124, 0xE470, 0x9121, 0xE471, 0x911B, 0xE472, 0x917A, 0xE473, 0x9172, 0xE474, 0x9179, 0xE475, 0x9173, 0xE476, 0x92A5, + 0xE477, 0x92A4, 0xE478, 0x9276, 0xE479, 0x929B, 0xE47A, 0x927A, 0xE47B, 0x92A0, 0xE47C, 0x9294, 0xE47D, 0x92AA, 0xE47E, 0x928D, + 0xE4A1, 0x92A6, 0xE4A2, 0x929A, 0xE4A3, 0x92AB, 0xE4A4, 0x9279, 0xE4A5, 0x9297, 0xE4A6, 0x927F, 0xE4A7, 0x92A3, 0xE4A8, 0x92EE, + 0xE4A9, 0x928E, 0xE4AA, 0x9282, 0xE4AB, 0x9295, 0xE4AC, 0x92A2, 0xE4AD, 0x927D, 0xE4AE, 0x9288, 0xE4AF, 0x92A1, 0xE4B0, 0x928A, + 0xE4B1, 0x9286, 0xE4B2, 0x928C, 0xE4B3, 0x9299, 0xE4B4, 0x92A7, 0xE4B5, 0x927E, 0xE4B6, 0x9287, 0xE4B7, 0x92A9, 0xE4B8, 0x929D, + 0xE4B9, 0x928B, 0xE4BA, 0x922D, 0xE4BB, 0x969E, 0xE4BC, 0x96A1, 0xE4BD, 0x96FF, 0xE4BE, 0x9758, 0xE4BF, 0x977D, 0xE4C0, 0x977A, + 0xE4C1, 0x977E, 0xE4C2, 0x9783, 0xE4C3, 0x9780, 0xE4C4, 0x9782, 0xE4C5, 0x977B, 0xE4C6, 0x9784, 0xE4C7, 0x9781, 0xE4C8, 0x977F, + 0xE4C9, 0x97CE, 0xE4CA, 0x97CD, 0xE4CB, 0x9816, 0xE4CC, 0x98AD, 0xE4CD, 0x98AE, 0xE4CE, 0x9902, 0xE4CF, 0x9900, 0xE4D0, 0x9907, + 0xE4D1, 0x999D, 0xE4D2, 0x999C, 0xE4D3, 0x99C3, 0xE4D4, 0x99B9, 0xE4D5, 0x99BB, 0xE4D6, 0x99BA, 0xE4D7, 0x99C2, 0xE4D8, 0x99BD, + 0xE4D9, 0x99C7, 0xE4DA, 0x9AB1, 0xE4DB, 0x9AE3, 0xE4DC, 0x9AE7, 0xE4DD, 0x9B3E, 0xE4DE, 0x9B3F, 0xE4DF, 0x9B60, 0xE4E0, 0x9B61, + 0xE4E1, 0x9B5F, 0xE4E2, 0x9CF1, 0xE4E3, 0x9CF2, 0xE4E4, 0x9CF5, 0xE4E5, 0x9EA7, 0xE4E6, 0x50FF, 0xE4E7, 0x5103, 0xE4E8, 0x5130, + 0xE4E9, 0x50F8, 0xE4EA, 0x5106, 0xE4EB, 0x5107, 0xE4EC, 0x50F6, 0xE4ED, 0x50FE, 0xE4EE, 0x510B, 0xE4EF, 0x510C, 0xE4F0, 0x50FD, + 0xE4F1, 0x510A, 0xE4F2, 0x528B, 0xE4F3, 0x528C, 0xE4F4, 0x52F1, 0xE4F5, 0x52EF, 0xE4F6, 0x5648, 0xE4F7, 0x5642, 0xE4F8, 0x564C, + 0xE4F9, 0x5635, 0xE4FA, 0x5641, 0xE4FB, 0x564A, 0xE4FC, 0x5649, 0xE4FD, 0x5646, 0xE4FE, 0x5658, 0xE540, 0x565A, 0xE541, 0x5640, + 0xE542, 0x5633, 0xE543, 0x563D, 0xE544, 0x562C, 0xE545, 0x563E, 0xE546, 0x5638, 0xE547, 0x562A, 0xE548, 0x563A, 0xE549, 0x571A, + 0xE54A, 0x58AB, 0xE54B, 0x589D, 0xE54C, 0x58B1, 0xE54D, 0x58A0, 0xE54E, 0x58A3, 0xE54F, 0x58AF, 0xE550, 0x58AC, 0xE551, 0x58A5, + 0xE552, 0x58A1, 0xE553, 0x58FF, 0xE554, 0x5AFF, 0xE555, 0x5AF4, 0xE556, 0x5AFD, 0xE557, 0x5AF7, 0xE558, 0x5AF6, 0xE559, 0x5B03, + 0xE55A, 0x5AF8, 0xE55B, 0x5B02, 0xE55C, 0x5AF9, 0xE55D, 0x5B01, 0xE55E, 0x5B07, 0xE55F, 0x5B05, 0xE560, 0x5B0F, 0xE561, 0x5C67, + 0xE562, 0x5D99, 0xE563, 0x5D97, 0xE564, 0x5D9F, 0xE565, 0x5D92, 0xE566, 0x5DA2, 0xE567, 0x5D93, 0xE568, 0x5D95, 0xE569, 0x5DA0, + 0xE56A, 0x5D9C, 0xE56B, 0x5DA1, 0xE56C, 0x5D9A, 0xE56D, 0x5D9E, 0xE56E, 0x5E69, 0xE56F, 0x5E5D, 0xE570, 0x5E60, 0xE571, 0x5E5C, + 0xE572, 0x7DF3, 0xE573, 0x5EDB, 0xE574, 0x5EDE, 0xE575, 0x5EE1, 0xE576, 0x5F49, 0xE577, 0x5FB2, 0xE578, 0x618B, 0xE579, 0x6183, + 0xE57A, 0x6179, 0xE57B, 0x61B1, 0xE57C, 0x61B0, 0xE57D, 0x61A2, 0xE57E, 0x6189, 0xE5A1, 0x619B, 0xE5A2, 0x6193, 0xE5A3, 0x61AF, + 0xE5A4, 0x61AD, 0xE5A5, 0x619F, 0xE5A6, 0x6192, 0xE5A7, 0x61AA, 0xE5A8, 0x61A1, 0xE5A9, 0x618D, 0xE5AA, 0x6166, 0xE5AB, 0x61B3, + 0xE5AC, 0x622D, 0xE5AD, 0x646E, 0xE5AE, 0x6470, 0xE5AF, 0x6496, 0xE5B0, 0x64A0, 0xE5B1, 0x6485, 0xE5B2, 0x6497, 0xE5B3, 0x649C, + 0xE5B4, 0x648F, 0xE5B5, 0x648B, 0xE5B6, 0x648A, 0xE5B7, 0x648C, 0xE5B8, 0x64A3, 0xE5B9, 0x649F, 0xE5BA, 0x6468, 0xE5BB, 0x64B1, + 0xE5BC, 0x6498, 0xE5BD, 0x6576, 0xE5BE, 0x657A, 0xE5BF, 0x6579, 0xE5C0, 0x657B, 0xE5C1, 0x65B2, 0xE5C2, 0x65B3, 0xE5C3, 0x66B5, + 0xE5C4, 0x66B0, 0xE5C5, 0x66A9, 0xE5C6, 0x66B2, 0xE5C7, 0x66B7, 0xE5C8, 0x66AA, 0xE5C9, 0x66AF, 0xE5CA, 0x6A00, 0xE5CB, 0x6A06, + 0xE5CC, 0x6A17, 0xE5CD, 0x69E5, 0xE5CE, 0x69F8, 0xE5CF, 0x6A15, 0xE5D0, 0x69F1, 0xE5D1, 0x69E4, 0xE5D2, 0x6A20, 0xE5D3, 0x69FF, + 0xE5D4, 0x69EC, 0xE5D5, 0x69E2, 0xE5D6, 0x6A1B, 0xE5D7, 0x6A1D, 0xE5D8, 0x69FE, 0xE5D9, 0x6A27, 0xE5DA, 0x69F2, 0xE5DB, 0x69EE, + 0xE5DC, 0x6A14, 0xE5DD, 0x69F7, 0xE5DE, 0x69E7, 0xE5DF, 0x6A40, 0xE5E0, 0x6A08, 0xE5E1, 0x69E6, 0xE5E2, 0x69FB, 0xE5E3, 0x6A0D, + 0xE5E4, 0x69FC, 0xE5E5, 0x69EB, 0xE5E6, 0x6A09, 0xE5E7, 0x6A04, 0xE5E8, 0x6A18, 0xE5E9, 0x6A25, 0xE5EA, 0x6A0F, 0xE5EB, 0x69F6, + 0xE5EC, 0x6A26, 0xE5ED, 0x6A07, 0xE5EE, 0x69F4, 0xE5EF, 0x6A16, 0xE5F0, 0x6B51, 0xE5F1, 0x6BA5, 0xE5F2, 0x6BA3, 0xE5F3, 0x6BA2, + 0xE5F4, 0x6BA6, 0xE5F5, 0x6C01, 0xE5F6, 0x6C00, 0xE5F7, 0x6BFF, 0xE5F8, 0x6C02, 0xE5F9, 0x6F41, 0xE5FA, 0x6F26, 0xE5FB, 0x6F7E, + 0xE5FC, 0x6F87, 0xE5FD, 0x6FC6, 0xE5FE, 0x6F92, 0xE640, 0x6F8D, 0xE641, 0x6F89, 0xE642, 0x6F8C, 0xE643, 0x6F62, 0xE644, 0x6F4F, + 0xE645, 0x6F85, 0xE646, 0x6F5A, 0xE647, 0x6F96, 0xE648, 0x6F76, 0xE649, 0x6F6C, 0xE64A, 0x6F82, 0xE64B, 0x6F55, 0xE64C, 0x6F72, + 0xE64D, 0x6F52, 0xE64E, 0x6F50, 0xE64F, 0x6F57, 0xE650, 0x6F94, 0xE651, 0x6F93, 0xE652, 0x6F5D, 0xE653, 0x6F00, 0xE654, 0x6F61, + 0xE655, 0x6F6B, 0xE656, 0x6F7D, 0xE657, 0x6F67, 0xE658, 0x6F90, 0xE659, 0x6F53, 0xE65A, 0x6F8B, 0xE65B, 0x6F69, 0xE65C, 0x6F7F, + 0xE65D, 0x6F95, 0xE65E, 0x6F63, 0xE65F, 0x6F77, 0xE660, 0x6F6A, 0xE661, 0x6F7B, 0xE662, 0x71B2, 0xE663, 0x71AF, 0xE664, 0x719B, + 0xE665, 0x71B0, 0xE666, 0x71A0, 0xE667, 0x719A, 0xE668, 0x71A9, 0xE669, 0x71B5, 0xE66A, 0x719D, 0xE66B, 0x71A5, 0xE66C, 0x719E, + 0xE66D, 0x71A4, 0xE66E, 0x71A1, 0xE66F, 0x71AA, 0xE670, 0x719C, 0xE671, 0x71A7, 0xE672, 0x71B3, 0xE673, 0x7298, 0xE674, 0x729A, + 0xE675, 0x7358, 0xE676, 0x7352, 0xE677, 0x735E, 0xE678, 0x735F, 0xE679, 0x7360, 0xE67A, 0x735D, 0xE67B, 0x735B, 0xE67C, 0x7361, + 0xE67D, 0x735A, 0xE67E, 0x7359, 0xE6A1, 0x7362, 0xE6A2, 0x7487, 0xE6A3, 0x7489, 0xE6A4, 0x748A, 0xE6A5, 0x7486, 0xE6A6, 0x7481, + 0xE6A7, 0x747D, 0xE6A8, 0x7485, 0xE6A9, 0x7488, 0xE6AA, 0x747C, 0xE6AB, 0x7479, 0xE6AC, 0x7508, 0xE6AD, 0x7507, 0xE6AE, 0x757E, + 0xE6AF, 0x7625, 0xE6B0, 0x761E, 0xE6B1, 0x7619, 0xE6B2, 0x761D, 0xE6B3, 0x761C, 0xE6B4, 0x7623, 0xE6B5, 0x761A, 0xE6B6, 0x7628, + 0xE6B7, 0x761B, 0xE6B8, 0x769C, 0xE6B9, 0x769D, 0xE6BA, 0x769E, 0xE6BB, 0x769B, 0xE6BC, 0x778D, 0xE6BD, 0x778F, 0xE6BE, 0x7789, + 0xE6BF, 0x7788, 0xE6C0, 0x78CD, 0xE6C1, 0x78BB, 0xE6C2, 0x78CF, 0xE6C3, 0x78CC, 0xE6C4, 0x78D1, 0xE6C5, 0x78CE, 0xE6C6, 0x78D4, + 0xE6C7, 0x78C8, 0xE6C8, 0x78C3, 0xE6C9, 0x78C4, 0xE6CA, 0x78C9, 0xE6CB, 0x799A, 0xE6CC, 0x79A1, 0xE6CD, 0x79A0, 0xE6CE, 0x799C, + 0xE6CF, 0x79A2, 0xE6D0, 0x799B, 0xE6D1, 0x6B76, 0xE6D2, 0x7A39, 0xE6D3, 0x7AB2, 0xE6D4, 0x7AB4, 0xE6D5, 0x7AB3, 0xE6D6, 0x7BB7, + 0xE6D7, 0x7BCB, 0xE6D8, 0x7BBE, 0xE6D9, 0x7BAC, 0xE6DA, 0x7BCE, 0xE6DB, 0x7BAF, 0xE6DC, 0x7BB9, 0xE6DD, 0x7BCA, 0xE6DE, 0x7BB5, + 0xE6DF, 0x7CC5, 0xE6E0, 0x7CC8, 0xE6E1, 0x7CCC, 0xE6E2, 0x7CCB, 0xE6E3, 0x7DF7, 0xE6E4, 0x7DDB, 0xE6E5, 0x7DEA, 0xE6E6, 0x7DE7, + 0xE6E7, 0x7DD7, 0xE6E8, 0x7DE1, 0xE6E9, 0x7E03, 0xE6EA, 0x7DFA, 0xE6EB, 0x7DE6, 0xE6EC, 0x7DF6, 0xE6ED, 0x7DF1, 0xE6EE, 0x7DF0, + 0xE6EF, 0x7DEE, 0xE6F0, 0x7DDF, 0xE6F1, 0x7F76, 0xE6F2, 0x7FAC, 0xE6F3, 0x7FB0, 0xE6F4, 0x7FAD, 0xE6F5, 0x7FED, 0xE6F6, 0x7FEB, + 0xE6F7, 0x7FEA, 0xE6F8, 0x7FEC, 0xE6F9, 0x7FE6, 0xE6FA, 0x7FE8, 0xE6FB, 0x8064, 0xE6FC, 0x8067, 0xE6FD, 0x81A3, 0xE6FE, 0x819F, + 0xE740, 0x819E, 0xE741, 0x8195, 0xE742, 0x81A2, 0xE743, 0x8199, 0xE744, 0x8197, 0xE745, 0x8216, 0xE746, 0x824F, 0xE747, 0x8253, + 0xE748, 0x8252, 0xE749, 0x8250, 0xE74A, 0x824E, 0xE74B, 0x8251, 0xE74C, 0x8524, 0xE74D, 0x853B, 0xE74E, 0x850F, 0xE74F, 0x8500, + 0xE750, 0x8529, 0xE751, 0x850E, 0xE752, 0x8509, 0xE753, 0x850D, 0xE754, 0x851F, 0xE755, 0x850A, 0xE756, 0x8527, 0xE757, 0x851C, + 0xE758, 0x84FB, 0xE759, 0x852B, 0xE75A, 0x84FA, 0xE75B, 0x8508, 0xE75C, 0x850C, 0xE75D, 0x84F4, 0xE75E, 0x852A, 0xE75F, 0x84F2, + 0xE760, 0x8515, 0xE761, 0x84F7, 0xE762, 0x84EB, 0xE763, 0x84F3, 0xE764, 0x84FC, 0xE765, 0x8512, 0xE766, 0x84EA, 0xE767, 0x84E9, + 0xE768, 0x8516, 0xE769, 0x84FE, 0xE76A, 0x8528, 0xE76B, 0x851D, 0xE76C, 0x852E, 0xE76D, 0x8502, 0xE76E, 0x84FD, 0xE76F, 0x851E, + 0xE770, 0x84F6, 0xE771, 0x8531, 0xE772, 0x8526, 0xE773, 0x84E7, 0xE774, 0x84E8, 0xE775, 0x84F0, 0xE776, 0x84EF, 0xE777, 0x84F9, + 0xE778, 0x8518, 0xE779, 0x8520, 0xE77A, 0x8530, 0xE77B, 0x850B, 0xE77C, 0x8519, 0xE77D, 0x852F, 0xE77E, 0x8662, 0xE7A1, 0x8756, + 0xE7A2, 0x8763, 0xE7A3, 0x8764, 0xE7A4, 0x8777, 0xE7A5, 0x87E1, 0xE7A6, 0x8773, 0xE7A7, 0x8758, 0xE7A8, 0x8754, 0xE7A9, 0x875B, + 0xE7AA, 0x8752, 0xE7AB, 0x8761, 0xE7AC, 0x875A, 0xE7AD, 0x8751, 0xE7AE, 0x875E, 0xE7AF, 0x876D, 0xE7B0, 0x876A, 0xE7B1, 0x8750, + 0xE7B2, 0x874E, 0xE7B3, 0x875F, 0xE7B4, 0x875D, 0xE7B5, 0x876F, 0xE7B6, 0x876C, 0xE7B7, 0x877A, 0xE7B8, 0x876E, 0xE7B9, 0x875C, + 0xE7BA, 0x8765, 0xE7BB, 0x874F, 0xE7BC, 0x877B, 0xE7BD, 0x8775, 0xE7BE, 0x8762, 0xE7BF, 0x8767, 0xE7C0, 0x8769, 0xE7C1, 0x885A, + 0xE7C2, 0x8905, 0xE7C3, 0x890C, 0xE7C4, 0x8914, 0xE7C5, 0x890B, 0xE7C6, 0x8917, 0xE7C7, 0x8918, 0xE7C8, 0x8919, 0xE7C9, 0x8906, + 0xE7CA, 0x8916, 0xE7CB, 0x8911, 0xE7CC, 0x890E, 0xE7CD, 0x8909, 0xE7CE, 0x89A2, 0xE7CF, 0x89A4, 0xE7D0, 0x89A3, 0xE7D1, 0x89ED, + 0xE7D2, 0x89F0, 0xE7D3, 0x89EC, 0xE7D4, 0x8ACF, 0xE7D5, 0x8AC6, 0xE7D6, 0x8AB8, 0xE7D7, 0x8AD3, 0xE7D8, 0x8AD1, 0xE7D9, 0x8AD4, + 0xE7DA, 0x8AD5, 0xE7DB, 0x8ABB, 0xE7DC, 0x8AD7, 0xE7DD, 0x8ABE, 0xE7DE, 0x8AC0, 0xE7DF, 0x8AC5, 0xE7E0, 0x8AD8, 0xE7E1, 0x8AC3, + 0xE7E2, 0x8ABA, 0xE7E3, 0x8ABD, 0xE7E4, 0x8AD9, 0xE7E5, 0x8C3E, 0xE7E6, 0x8C4D, 0xE7E7, 0x8C8F, 0xE7E8, 0x8CE5, 0xE7E9, 0x8CDF, + 0xE7EA, 0x8CD9, 0xE7EB, 0x8CE8, 0xE7EC, 0x8CDA, 0xE7ED, 0x8CDD, 0xE7EE, 0x8CE7, 0xE7EF, 0x8DA0, 0xE7F0, 0x8D9C, 0xE7F1, 0x8DA1, + 0xE7F2, 0x8D9B, 0xE7F3, 0x8E20, 0xE7F4, 0x8E23, 0xE7F5, 0x8E25, 0xE7F6, 0x8E24, 0xE7F7, 0x8E2E, 0xE7F8, 0x8E15, 0xE7F9, 0x8E1B, + 0xE7FA, 0x8E16, 0xE7FB, 0x8E11, 0xE7FC, 0x8E19, 0xE7FD, 0x8E26, 0xE7FE, 0x8E27, 0xE840, 0x8E14, 0xE841, 0x8E12, 0xE842, 0x8E18, + 0xE843, 0x8E13, 0xE844, 0x8E1C, 0xE845, 0x8E17, 0xE846, 0x8E1A, 0xE847, 0x8F2C, 0xE848, 0x8F24, 0xE849, 0x8F18, 0xE84A, 0x8F1A, + 0xE84B, 0x8F20, 0xE84C, 0x8F23, 0xE84D, 0x8F16, 0xE84E, 0x8F17, 0xE84F, 0x9073, 0xE850, 0x9070, 0xE851, 0x906F, 0xE852, 0x9067, + 0xE853, 0x906B, 0xE854, 0x912F, 0xE855, 0x912B, 0xE856, 0x9129, 0xE857, 0x912A, 0xE858, 0x9132, 0xE859, 0x9126, 0xE85A, 0x912E, + 0xE85B, 0x9185, 0xE85C, 0x9186, 0xE85D, 0x918A, 0xE85E, 0x9181, 0xE85F, 0x9182, 0xE860, 0x9184, 0xE861, 0x9180, 0xE862, 0x92D0, + 0xE863, 0x92C3, 0xE864, 0x92C4, 0xE865, 0x92C0, 0xE866, 0x92D9, 0xE867, 0x92B6, 0xE868, 0x92CF, 0xE869, 0x92F1, 0xE86A, 0x92DF, + 0xE86B, 0x92D8, 0xE86C, 0x92E9, 0xE86D, 0x92D7, 0xE86E, 0x92DD, 0xE86F, 0x92CC, 0xE870, 0x92EF, 0xE871, 0x92C2, 0xE872, 0x92E8, + 0xE873, 0x92CA, 0xE874, 0x92C8, 0xE875, 0x92CE, 0xE876, 0x92E6, 0xE877, 0x92CD, 0xE878, 0x92D5, 0xE879, 0x92C9, 0xE87A, 0x92E0, + 0xE87B, 0x92DE, 0xE87C, 0x92E7, 0xE87D, 0x92D1, 0xE87E, 0x92D3, 0xE8A1, 0x92B5, 0xE8A2, 0x92E1, 0xE8A3, 0x92C6, 0xE8A4, 0x92B4, + 0xE8A5, 0x957C, 0xE8A6, 0x95AC, 0xE8A7, 0x95AB, 0xE8A8, 0x95AE, 0xE8A9, 0x95B0, 0xE8AA, 0x96A4, 0xE8AB, 0x96A2, 0xE8AC, 0x96D3, + 0xE8AD, 0x9705, 0xE8AE, 0x9708, 0xE8AF, 0x9702, 0xE8B0, 0x975A, 0xE8B1, 0x978A, 0xE8B2, 0x978E, 0xE8B3, 0x9788, 0xE8B4, 0x97D0, + 0xE8B5, 0x97CF, 0xE8B6, 0x981E, 0xE8B7, 0x981D, 0xE8B8, 0x9826, 0xE8B9, 0x9829, 0xE8BA, 0x9828, 0xE8BB, 0x9820, 0xE8BC, 0x981B, + 0xE8BD, 0x9827, 0xE8BE, 0x98B2, 0xE8BF, 0x9908, 0xE8C0, 0x98FA, 0xE8C1, 0x9911, 0xE8C2, 0x9914, 0xE8C3, 0x9916, 0xE8C4, 0x9917, + 0xE8C5, 0x9915, 0xE8C6, 0x99DC, 0xE8C7, 0x99CD, 0xE8C8, 0x99CF, 0xE8C9, 0x99D3, 0xE8CA, 0x99D4, 0xE8CB, 0x99CE, 0xE8CC, 0x99C9, + 0xE8CD, 0x99D6, 0xE8CE, 0x99D8, 0xE8CF, 0x99CB, 0xE8D0, 0x99D7, 0xE8D1, 0x99CC, 0xE8D2, 0x9AB3, 0xE8D3, 0x9AEC, 0xE8D4, 0x9AEB, + 0xE8D5, 0x9AF3, 0xE8D6, 0x9AF2, 0xE8D7, 0x9AF1, 0xE8D8, 0x9B46, 0xE8D9, 0x9B43, 0xE8DA, 0x9B67, 0xE8DB, 0x9B74, 0xE8DC, 0x9B71, + 0xE8DD, 0x9B66, 0xE8DE, 0x9B76, 0xE8DF, 0x9B75, 0xE8E0, 0x9B70, 0xE8E1, 0x9B68, 0xE8E2, 0x9B64, 0xE8E3, 0x9B6C, 0xE8E4, 0x9CFC, + 0xE8E5, 0x9CFA, 0xE8E6, 0x9CFD, 0xE8E7, 0x9CFF, 0xE8E8, 0x9CF7, 0xE8E9, 0x9D07, 0xE8EA, 0x9D00, 0xE8EB, 0x9CF9, 0xE8EC, 0x9CFB, + 0xE8ED, 0x9D08, 0xE8EE, 0x9D05, 0xE8EF, 0x9D04, 0xE8F0, 0x9E83, 0xE8F1, 0x9ED3, 0xE8F2, 0x9F0F, 0xE8F3, 0x9F10, 0xE8F4, 0x511C, + 0xE8F5, 0x5113, 0xE8F6, 0x5117, 0xE8F7, 0x511A, 0xE8F8, 0x5111, 0xE8F9, 0x51DE, 0xE8FA, 0x5334, 0xE8FB, 0x53E1, 0xE8FC, 0x5670, + 0xE8FD, 0x5660, 0xE8FE, 0x566E, 0xE940, 0x5673, 0xE941, 0x5666, 0xE942, 0x5663, 0xE943, 0x566D, 0xE944, 0x5672, 0xE945, 0x565E, + 0xE946, 0x5677, 0xE947, 0x571C, 0xE948, 0x571B, 0xE949, 0x58C8, 0xE94A, 0x58BD, 0xE94B, 0x58C9, 0xE94C, 0x58BF, 0xE94D, 0x58BA, + 0xE94E, 0x58C2, 0xE94F, 0x58BC, 0xE950, 0x58C6, 0xE951, 0x5B17, 0xE952, 0x5B19, 0xE953, 0x5B1B, 0xE954, 0x5B21, 0xE955, 0x5B14, + 0xE956, 0x5B13, 0xE957, 0x5B10, 0xE958, 0x5B16, 0xE959, 0x5B28, 0xE95A, 0x5B1A, 0xE95B, 0x5B20, 0xE95C, 0x5B1E, 0xE95D, 0x5BEF, + 0xE95E, 0x5DAC, 0xE95F, 0x5DB1, 0xE960, 0x5DA9, 0xE961, 0x5DA7, 0xE962, 0x5DB5, 0xE963, 0x5DB0, 0xE964, 0x5DAE, 0xE965, 0x5DAA, + 0xE966, 0x5DA8, 0xE967, 0x5DB2, 0xE968, 0x5DAD, 0xE969, 0x5DAF, 0xE96A, 0x5DB4, 0xE96B, 0x5E67, 0xE96C, 0x5E68, 0xE96D, 0x5E66, + 0xE96E, 0x5E6F, 0xE96F, 0x5EE9, 0xE970, 0x5EE7, 0xE971, 0x5EE6, 0xE972, 0x5EE8, 0xE973, 0x5EE5, 0xE974, 0x5F4B, 0xE975, 0x5FBC, + 0xE976, 0x619D, 0xE977, 0x61A8, 0xE978, 0x6196, 0xE979, 0x61C5, 0xE97A, 0x61B4, 0xE97B, 0x61C6, 0xE97C, 0x61C1, 0xE97D, 0x61CC, + 0xE97E, 0x61BA, 0xE9A1, 0x61BF, 0xE9A2, 0x61B8, 0xE9A3, 0x618C, 0xE9A4, 0x64D7, 0xE9A5, 0x64D6, 0xE9A6, 0x64D0, 0xE9A7, 0x64CF, + 0xE9A8, 0x64C9, 0xE9A9, 0x64BD, 0xE9AA, 0x6489, 0xE9AB, 0x64C3, 0xE9AC, 0x64DB, 0xE9AD, 0x64F3, 0xE9AE, 0x64D9, 0xE9AF, 0x6533, + 0xE9B0, 0x657F, 0xE9B1, 0x657C, 0xE9B2, 0x65A2, 0xE9B3, 0x66C8, 0xE9B4, 0x66BE, 0xE9B5, 0x66C0, 0xE9B6, 0x66CA, 0xE9B7, 0x66CB, + 0xE9B8, 0x66CF, 0xE9B9, 0x66BD, 0xE9BA, 0x66BB, 0xE9BB, 0x66BA, 0xE9BC, 0x66CC, 0xE9BD, 0x6723, 0xE9BE, 0x6A34, 0xE9BF, 0x6A66, + 0xE9C0, 0x6A49, 0xE9C1, 0x6A67, 0xE9C2, 0x6A32, 0xE9C3, 0x6A68, 0xE9C4, 0x6A3E, 0xE9C5, 0x6A5D, 0xE9C6, 0x6A6D, 0xE9C7, 0x6A76, + 0xE9C8, 0x6A5B, 0xE9C9, 0x6A51, 0xE9CA, 0x6A28, 0xE9CB, 0x6A5A, 0xE9CC, 0x6A3B, 0xE9CD, 0x6A3F, 0xE9CE, 0x6A41, 0xE9CF, 0x6A6A, + 0xE9D0, 0x6A64, 0xE9D1, 0x6A50, 0xE9D2, 0x6A4F, 0xE9D3, 0x6A54, 0xE9D4, 0x6A6F, 0xE9D5, 0x6A69, 0xE9D6, 0x6A60, 0xE9D7, 0x6A3C, + 0xE9D8, 0x6A5E, 0xE9D9, 0x6A56, 0xE9DA, 0x6A55, 0xE9DB, 0x6A4D, 0xE9DC, 0x6A4E, 0xE9DD, 0x6A46, 0xE9DE, 0x6B55, 0xE9DF, 0x6B54, + 0xE9E0, 0x6B56, 0xE9E1, 0x6BA7, 0xE9E2, 0x6BAA, 0xE9E3, 0x6BAB, 0xE9E4, 0x6BC8, 0xE9E5, 0x6BC7, 0xE9E6, 0x6C04, 0xE9E7, 0x6C03, + 0xE9E8, 0x6C06, 0xE9E9, 0x6FAD, 0xE9EA, 0x6FCB, 0xE9EB, 0x6FA3, 0xE9EC, 0x6FC7, 0xE9ED, 0x6FBC, 0xE9EE, 0x6FCE, 0xE9EF, 0x6FC8, + 0xE9F0, 0x6F5E, 0xE9F1, 0x6FC4, 0xE9F2, 0x6FBD, 0xE9F3, 0x6F9E, 0xE9F4, 0x6FCA, 0xE9F5, 0x6FA8, 0xE9F6, 0x7004, 0xE9F7, 0x6FA5, + 0xE9F8, 0x6FAE, 0xE9F9, 0x6FBA, 0xE9FA, 0x6FAC, 0xE9FB, 0x6FAA, 0xE9FC, 0x6FCF, 0xE9FD, 0x6FBF, 0xE9FE, 0x6FB8, 0xEA40, 0x6FA2, + 0xEA41, 0x6FC9, 0xEA42, 0x6FAB, 0xEA43, 0x6FCD, 0xEA44, 0x6FAF, 0xEA45, 0x6FB2, 0xEA46, 0x6FB0, 0xEA47, 0x71C5, 0xEA48, 0x71C2, + 0xEA49, 0x71BF, 0xEA4A, 0x71B8, 0xEA4B, 0x71D6, 0xEA4C, 0x71C0, 0xEA4D, 0x71C1, 0xEA4E, 0x71CB, 0xEA4F, 0x71D4, 0xEA50, 0x71CA, + 0xEA51, 0x71C7, 0xEA52, 0x71CF, 0xEA53, 0x71BD, 0xEA54, 0x71D8, 0xEA55, 0x71BC, 0xEA56, 0x71C6, 0xEA57, 0x71DA, 0xEA58, 0x71DB, + 0xEA59, 0x729D, 0xEA5A, 0x729E, 0xEA5B, 0x7369, 0xEA5C, 0x7366, 0xEA5D, 0x7367, 0xEA5E, 0x736C, 0xEA5F, 0x7365, 0xEA60, 0x736B, + 0xEA61, 0x736A, 0xEA62, 0x747F, 0xEA63, 0x749A, 0xEA64, 0x74A0, 0xEA65, 0x7494, 0xEA66, 0x7492, 0xEA67, 0x7495, 0xEA68, 0x74A1, + 0xEA69, 0x750B, 0xEA6A, 0x7580, 0xEA6B, 0x762F, 0xEA6C, 0x762D, 0xEA6D, 0x7631, 0xEA6E, 0x763D, 0xEA6F, 0x7633, 0xEA70, 0x763C, + 0xEA71, 0x7635, 0xEA72, 0x7632, 0xEA73, 0x7630, 0xEA74, 0x76BB, 0xEA75, 0x76E6, 0xEA76, 0x779A, 0xEA77, 0x779D, 0xEA78, 0x77A1, + 0xEA79, 0x779C, 0xEA7A, 0x779B, 0xEA7B, 0x77A2, 0xEA7C, 0x77A3, 0xEA7D, 0x7795, 0xEA7E, 0x7799, 0xEAA1, 0x7797, 0xEAA2, 0x78DD, + 0xEAA3, 0x78E9, 0xEAA4, 0x78E5, 0xEAA5, 0x78EA, 0xEAA6, 0x78DE, 0xEAA7, 0x78E3, 0xEAA8, 0x78DB, 0xEAA9, 0x78E1, 0xEAAA, 0x78E2, + 0xEAAB, 0x78ED, 0xEAAC, 0x78DF, 0xEAAD, 0x78E0, 0xEAAE, 0x79A4, 0xEAAF, 0x7A44, 0xEAB0, 0x7A48, 0xEAB1, 0x7A47, 0xEAB2, 0x7AB6, + 0xEAB3, 0x7AB8, 0xEAB4, 0x7AB5, 0xEAB5, 0x7AB1, 0xEAB6, 0x7AB7, 0xEAB7, 0x7BDE, 0xEAB8, 0x7BE3, 0xEAB9, 0x7BE7, 0xEABA, 0x7BDD, + 0xEABB, 0x7BD5, 0xEABC, 0x7BE5, 0xEABD, 0x7BDA, 0xEABE, 0x7BE8, 0xEABF, 0x7BF9, 0xEAC0, 0x7BD4, 0xEAC1, 0x7BEA, 0xEAC2, 0x7BE2, + 0xEAC3, 0x7BDC, 0xEAC4, 0x7BEB, 0xEAC5, 0x7BD8, 0xEAC6, 0x7BDF, 0xEAC7, 0x7CD2, 0xEAC8, 0x7CD4, 0xEAC9, 0x7CD7, 0xEACA, 0x7CD0, + 0xEACB, 0x7CD1, 0xEACC, 0x7E12, 0xEACD, 0x7E21, 0xEACE, 0x7E17, 0xEACF, 0x7E0C, 0xEAD0, 0x7E1F, 0xEAD1, 0x7E20, 0xEAD2, 0x7E13, + 0xEAD3, 0x7E0E, 0xEAD4, 0x7E1C, 0xEAD5, 0x7E15, 0xEAD6, 0x7E1A, 0xEAD7, 0x7E22, 0xEAD8, 0x7E0B, 0xEAD9, 0x7E0F, 0xEADA, 0x7E16, + 0xEADB, 0x7E0D, 0xEADC, 0x7E14, 0xEADD, 0x7E25, 0xEADE, 0x7E24, 0xEADF, 0x7F43, 0xEAE0, 0x7F7B, 0xEAE1, 0x7F7C, 0xEAE2, 0x7F7A, + 0xEAE3, 0x7FB1, 0xEAE4, 0x7FEF, 0xEAE5, 0x802A, 0xEAE6, 0x8029, 0xEAE7, 0x806C, 0xEAE8, 0x81B1, 0xEAE9, 0x81A6, 0xEAEA, 0x81AE, + 0xEAEB, 0x81B9, 0xEAEC, 0x81B5, 0xEAED, 0x81AB, 0xEAEE, 0x81B0, 0xEAEF, 0x81AC, 0xEAF0, 0x81B4, 0xEAF1, 0x81B2, 0xEAF2, 0x81B7, + 0xEAF3, 0x81A7, 0xEAF4, 0x81F2, 0xEAF5, 0x8255, 0xEAF6, 0x8256, 0xEAF7, 0x8257, 0xEAF8, 0x8556, 0xEAF9, 0x8545, 0xEAFA, 0x856B, + 0xEAFB, 0x854D, 0xEAFC, 0x8553, 0xEAFD, 0x8561, 0xEAFE, 0x8558, 0xEB40, 0x8540, 0xEB41, 0x8546, 0xEB42, 0x8564, 0xEB43, 0x8541, + 0xEB44, 0x8562, 0xEB45, 0x8544, 0xEB46, 0x8551, 0xEB47, 0x8547, 0xEB48, 0x8563, 0xEB49, 0x853E, 0xEB4A, 0x855B, 0xEB4B, 0x8571, + 0xEB4C, 0x854E, 0xEB4D, 0x856E, 0xEB4E, 0x8575, 0xEB4F, 0x8555, 0xEB50, 0x8567, 0xEB51, 0x8560, 0xEB52, 0x858C, 0xEB53, 0x8566, + 0xEB54, 0x855D, 0xEB55, 0x8554, 0xEB56, 0x8565, 0xEB57, 0x856C, 0xEB58, 0x8663, 0xEB59, 0x8665, 0xEB5A, 0x8664, 0xEB5B, 0x879B, + 0xEB5C, 0x878F, 0xEB5D, 0x8797, 0xEB5E, 0x8793, 0xEB5F, 0x8792, 0xEB60, 0x8788, 0xEB61, 0x8781, 0xEB62, 0x8796, 0xEB63, 0x8798, + 0xEB64, 0x8779, 0xEB65, 0x8787, 0xEB66, 0x87A3, 0xEB67, 0x8785, 0xEB68, 0x8790, 0xEB69, 0x8791, 0xEB6A, 0x879D, 0xEB6B, 0x8784, + 0xEB6C, 0x8794, 0xEB6D, 0x879C, 0xEB6E, 0x879A, 0xEB6F, 0x8789, 0xEB70, 0x891E, 0xEB71, 0x8926, 0xEB72, 0x8930, 0xEB73, 0x892D, + 0xEB74, 0x892E, 0xEB75, 0x8927, 0xEB76, 0x8931, 0xEB77, 0x8922, 0xEB78, 0x8929, 0xEB79, 0x8923, 0xEB7A, 0x892F, 0xEB7B, 0x892C, + 0xEB7C, 0x891F, 0xEB7D, 0x89F1, 0xEB7E, 0x8AE0, 0xEBA1, 0x8AE2, 0xEBA2, 0x8AF2, 0xEBA3, 0x8AF4, 0xEBA4, 0x8AF5, 0xEBA5, 0x8ADD, + 0xEBA6, 0x8B14, 0xEBA7, 0x8AE4, 0xEBA8, 0x8ADF, 0xEBA9, 0x8AF0, 0xEBAA, 0x8AC8, 0xEBAB, 0x8ADE, 0xEBAC, 0x8AE1, 0xEBAD, 0x8AE8, + 0xEBAE, 0x8AFF, 0xEBAF, 0x8AEF, 0xEBB0, 0x8AFB, 0xEBB1, 0x8C91, 0xEBB2, 0x8C92, 0xEBB3, 0x8C90, 0xEBB4, 0x8CF5, 0xEBB5, 0x8CEE, + 0xEBB6, 0x8CF1, 0xEBB7, 0x8CF0, 0xEBB8, 0x8CF3, 0xEBB9, 0x8D6C, 0xEBBA, 0x8D6E, 0xEBBB, 0x8DA5, 0xEBBC, 0x8DA7, 0xEBBD, 0x8E33, + 0xEBBE, 0x8E3E, 0xEBBF, 0x8E38, 0xEBC0, 0x8E40, 0xEBC1, 0x8E45, 0xEBC2, 0x8E36, 0xEBC3, 0x8E3C, 0xEBC4, 0x8E3D, 0xEBC5, 0x8E41, + 0xEBC6, 0x8E30, 0xEBC7, 0x8E3F, 0xEBC8, 0x8EBD, 0xEBC9, 0x8F36, 0xEBCA, 0x8F2E, 0xEBCB, 0x8F35, 0xEBCC, 0x8F32, 0xEBCD, 0x8F39, + 0xEBCE, 0x8F37, 0xEBCF, 0x8F34, 0xEBD0, 0x9076, 0xEBD1, 0x9079, 0xEBD2, 0x907B, 0xEBD3, 0x9086, 0xEBD4, 0x90FA, 0xEBD5, 0x9133, + 0xEBD6, 0x9135, 0xEBD7, 0x9136, 0xEBD8, 0x9193, 0xEBD9, 0x9190, 0xEBDA, 0x9191, 0xEBDB, 0x918D, 0xEBDC, 0x918F, 0xEBDD, 0x9327, + 0xEBDE, 0x931E, 0xEBDF, 0x9308, 0xEBE0, 0x931F, 0xEBE1, 0x9306, 0xEBE2, 0x930F, 0xEBE3, 0x937A, 0xEBE4, 0x9338, 0xEBE5, 0x933C, + 0xEBE6, 0x931B, 0xEBE7, 0x9323, 0xEBE8, 0x9312, 0xEBE9, 0x9301, 0xEBEA, 0x9346, 0xEBEB, 0x932D, 0xEBEC, 0x930E, 0xEBED, 0x930D, + 0xEBEE, 0x92CB, 0xEBEF, 0x931D, 0xEBF0, 0x92FA, 0xEBF1, 0x9325, 0xEBF2, 0x9313, 0xEBF3, 0x92F9, 0xEBF4, 0x92F7, 0xEBF5, 0x9334, + 0xEBF6, 0x9302, 0xEBF7, 0x9324, 0xEBF8, 0x92FF, 0xEBF9, 0x9329, 0xEBFA, 0x9339, 0xEBFB, 0x9335, 0xEBFC, 0x932A, 0xEBFD, 0x9314, + 0xEBFE, 0x930C, 0xEC40, 0x930B, 0xEC41, 0x92FE, 0xEC42, 0x9309, 0xEC43, 0x9300, 0xEC44, 0x92FB, 0xEC45, 0x9316, 0xEC46, 0x95BC, + 0xEC47, 0x95CD, 0xEC48, 0x95BE, 0xEC49, 0x95B9, 0xEC4A, 0x95BA, 0xEC4B, 0x95B6, 0xEC4C, 0x95BF, 0xEC4D, 0x95B5, 0xEC4E, 0x95BD, + 0xEC4F, 0x96A9, 0xEC50, 0x96D4, 0xEC51, 0x970B, 0xEC52, 0x9712, 0xEC53, 0x9710, 0xEC54, 0x9799, 0xEC55, 0x9797, 0xEC56, 0x9794, + 0xEC57, 0x97F0, 0xEC58, 0x97F8, 0xEC59, 0x9835, 0xEC5A, 0x982F, 0xEC5B, 0x9832, 0xEC5C, 0x9924, 0xEC5D, 0x991F, 0xEC5E, 0x9927, + 0xEC5F, 0x9929, 0xEC60, 0x999E, 0xEC61, 0x99EE, 0xEC62, 0x99EC, 0xEC63, 0x99E5, 0xEC64, 0x99E4, 0xEC65, 0x99F0, 0xEC66, 0x99E3, + 0xEC67, 0x99EA, 0xEC68, 0x99E9, 0xEC69, 0x99E7, 0xEC6A, 0x9AB9, 0xEC6B, 0x9ABF, 0xEC6C, 0x9AB4, 0xEC6D, 0x9ABB, 0xEC6E, 0x9AF6, + 0xEC6F, 0x9AFA, 0xEC70, 0x9AF9, 0xEC71, 0x9AF7, 0xEC72, 0x9B33, 0xEC73, 0x9B80, 0xEC74, 0x9B85, 0xEC75, 0x9B87, 0xEC76, 0x9B7C, + 0xEC77, 0x9B7E, 0xEC78, 0x9B7B, 0xEC79, 0x9B82, 0xEC7A, 0x9B93, 0xEC7B, 0x9B92, 0xEC7C, 0x9B90, 0xEC7D, 0x9B7A, 0xEC7E, 0x9B95, + 0xECA1, 0x9B7D, 0xECA2, 0x9B88, 0xECA3, 0x9D25, 0xECA4, 0x9D17, 0xECA5, 0x9D20, 0xECA6, 0x9D1E, 0xECA7, 0x9D14, 0xECA8, 0x9D29, + 0xECA9, 0x9D1D, 0xECAA, 0x9D18, 0xECAB, 0x9D22, 0xECAC, 0x9D10, 0xECAD, 0x9D19, 0xECAE, 0x9D1F, 0xECAF, 0x9E88, 0xECB0, 0x9E86, + 0xECB1, 0x9E87, 0xECB2, 0x9EAE, 0xECB3, 0x9EAD, 0xECB4, 0x9ED5, 0xECB5, 0x9ED6, 0xECB6, 0x9EFA, 0xECB7, 0x9F12, 0xECB8, 0x9F3D, + 0xECB9, 0x5126, 0xECBA, 0x5125, 0xECBB, 0x5122, 0xECBC, 0x5124, 0xECBD, 0x5120, 0xECBE, 0x5129, 0xECBF, 0x52F4, 0xECC0, 0x5693, + 0xECC1, 0x568C, 0xECC2, 0x568D, 0xECC3, 0x5686, 0xECC4, 0x5684, 0xECC5, 0x5683, 0xECC6, 0x567E, 0xECC7, 0x5682, 0xECC8, 0x567F, + 0xECC9, 0x5681, 0xECCA, 0x58D6, 0xECCB, 0x58D4, 0xECCC, 0x58CF, 0xECCD, 0x58D2, 0xECCE, 0x5B2D, 0xECCF, 0x5B25, 0xECD0, 0x5B32, + 0xECD1, 0x5B23, 0xECD2, 0x5B2C, 0xECD3, 0x5B27, 0xECD4, 0x5B26, 0xECD5, 0x5B2F, 0xECD6, 0x5B2E, 0xECD7, 0x5B7B, 0xECD8, 0x5BF1, + 0xECD9, 0x5BF2, 0xECDA, 0x5DB7, 0xECDB, 0x5E6C, 0xECDC, 0x5E6A, 0xECDD, 0x5FBE, 0xECDE, 0x5FBB, 0xECDF, 0x61C3, 0xECE0, 0x61B5, + 0xECE1, 0x61BC, 0xECE2, 0x61E7, 0xECE3, 0x61E0, 0xECE4, 0x61E5, 0xECE5, 0x61E4, 0xECE6, 0x61E8, 0xECE7, 0x61DE, 0xECE8, 0x64EF, + 0xECE9, 0x64E9, 0xECEA, 0x64E3, 0xECEB, 0x64EB, 0xECEC, 0x64E4, 0xECED, 0x64E8, 0xECEE, 0x6581, 0xECEF, 0x6580, 0xECF0, 0x65B6, + 0xECF1, 0x65DA, 0xECF2, 0x66D2, 0xECF3, 0x6A8D, 0xECF4, 0x6A96, 0xECF5, 0x6A81, 0xECF6, 0x6AA5, 0xECF7, 0x6A89, 0xECF8, 0x6A9F, + 0xECF9, 0x6A9B, 0xECFA, 0x6AA1, 0xECFB, 0x6A9E, 0xECFC, 0x6A87, 0xECFD, 0x6A93, 0xECFE, 0x6A8E, 0xED40, 0x6A95, 0xED41, 0x6A83, + 0xED42, 0x6AA8, 0xED43, 0x6AA4, 0xED44, 0x6A91, 0xED45, 0x6A7F, 0xED46, 0x6AA6, 0xED47, 0x6A9A, 0xED48, 0x6A85, 0xED49, 0x6A8C, + 0xED4A, 0x6A92, 0xED4B, 0x6B5B, 0xED4C, 0x6BAD, 0xED4D, 0x6C09, 0xED4E, 0x6FCC, 0xED4F, 0x6FA9, 0xED50, 0x6FF4, 0xED51, 0x6FD4, + 0xED52, 0x6FE3, 0xED53, 0x6FDC, 0xED54, 0x6FED, 0xED55, 0x6FE7, 0xED56, 0x6FE6, 0xED57, 0x6FDE, 0xED58, 0x6FF2, 0xED59, 0x6FDD, + 0xED5A, 0x6FE2, 0xED5B, 0x6FE8, 0xED5C, 0x71E1, 0xED5D, 0x71F1, 0xED5E, 0x71E8, 0xED5F, 0x71F2, 0xED60, 0x71E4, 0xED61, 0x71F0, + 0xED62, 0x71E2, 0xED63, 0x7373, 0xED64, 0x736E, 0xED65, 0x736F, 0xED66, 0x7497, 0xED67, 0x74B2, 0xED68, 0x74AB, 0xED69, 0x7490, + 0xED6A, 0x74AA, 0xED6B, 0x74AD, 0xED6C, 0x74B1, 0xED6D, 0x74A5, 0xED6E, 0x74AF, 0xED6F, 0x7510, 0xED70, 0x7511, 0xED71, 0x7512, + 0xED72, 0x750F, 0xED73, 0x7584, 0xED74, 0x7643, 0xED75, 0x7648, 0xED76, 0x7649, 0xED77, 0x7647, 0xED78, 0x76A4, 0xED79, 0x76E9, + 0xED7A, 0x77B5, 0xED7B, 0x77AB, 0xED7C, 0x77B2, 0xED7D, 0x77B7, 0xED7E, 0x77B6, 0xEDA1, 0x77B4, 0xEDA2, 0x77B1, 0xEDA3, 0x77A8, + 0xEDA4, 0x77F0, 0xEDA5, 0x78F3, 0xEDA6, 0x78FD, 0xEDA7, 0x7902, 0xEDA8, 0x78FB, 0xEDA9, 0x78FC, 0xEDAA, 0x78F2, 0xEDAB, 0x7905, + 0xEDAC, 0x78F9, 0xEDAD, 0x78FE, 0xEDAE, 0x7904, 0xEDAF, 0x79AB, 0xEDB0, 0x79A8, 0xEDB1, 0x7A5C, 0xEDB2, 0x7A5B, 0xEDB3, 0x7A56, + 0xEDB4, 0x7A58, 0xEDB5, 0x7A54, 0xEDB6, 0x7A5A, 0xEDB7, 0x7ABE, 0xEDB8, 0x7AC0, 0xEDB9, 0x7AC1, 0xEDBA, 0x7C05, 0xEDBB, 0x7C0F, + 0xEDBC, 0x7BF2, 0xEDBD, 0x7C00, 0xEDBE, 0x7BFF, 0xEDBF, 0x7BFB, 0xEDC0, 0x7C0E, 0xEDC1, 0x7BF4, 0xEDC2, 0x7C0B, 0xEDC3, 0x7BF3, + 0xEDC4, 0x7C02, 0xEDC5, 0x7C09, 0xEDC6, 0x7C03, 0xEDC7, 0x7C01, 0xEDC8, 0x7BF8, 0xEDC9, 0x7BFD, 0xEDCA, 0x7C06, 0xEDCB, 0x7BF0, + 0xEDCC, 0x7BF1, 0xEDCD, 0x7C10, 0xEDCE, 0x7C0A, 0xEDCF, 0x7CE8, 0xEDD0, 0x7E2D, 0xEDD1, 0x7E3C, 0xEDD2, 0x7E42, 0xEDD3, 0x7E33, + 0xEDD4, 0x9848, 0xEDD5, 0x7E38, 0xEDD6, 0x7E2A, 0xEDD7, 0x7E49, 0xEDD8, 0x7E40, 0xEDD9, 0x7E47, 0xEDDA, 0x7E29, 0xEDDB, 0x7E4C, + 0xEDDC, 0x7E30, 0xEDDD, 0x7E3B, 0xEDDE, 0x7E36, 0xEDDF, 0x7E44, 0xEDE0, 0x7E3A, 0xEDE1, 0x7F45, 0xEDE2, 0x7F7F, 0xEDE3, 0x7F7E, + 0xEDE4, 0x7F7D, 0xEDE5, 0x7FF4, 0xEDE6, 0x7FF2, 0xEDE7, 0x802C, 0xEDE8, 0x81BB, 0xEDE9, 0x81C4, 0xEDEA, 0x81CC, 0xEDEB, 0x81CA, + 0xEDEC, 0x81C5, 0xEDED, 0x81C7, 0xEDEE, 0x81BC, 0xEDEF, 0x81E9, 0xEDF0, 0x825B, 0xEDF1, 0x825A, 0xEDF2, 0x825C, 0xEDF3, 0x8583, + 0xEDF4, 0x8580, 0xEDF5, 0x858F, 0xEDF6, 0x85A7, 0xEDF7, 0x8595, 0xEDF8, 0x85A0, 0xEDF9, 0x858B, 0xEDFA, 0x85A3, 0xEDFB, 0x857B, + 0xEDFC, 0x85A4, 0xEDFD, 0x859A, 0xEDFE, 0x859E, 0xEE40, 0x8577, 0xEE41, 0x857C, 0xEE42, 0x8589, 0xEE43, 0x85A1, 0xEE44, 0x857A, + 0xEE45, 0x8578, 0xEE46, 0x8557, 0xEE47, 0x858E, 0xEE48, 0x8596, 0xEE49, 0x8586, 0xEE4A, 0x858D, 0xEE4B, 0x8599, 0xEE4C, 0x859D, + 0xEE4D, 0x8581, 0xEE4E, 0x85A2, 0xEE4F, 0x8582, 0xEE50, 0x8588, 0xEE51, 0x8585, 0xEE52, 0x8579, 0xEE53, 0x8576, 0xEE54, 0x8598, + 0xEE55, 0x8590, 0xEE56, 0x859F, 0xEE57, 0x8668, 0xEE58, 0x87BE, 0xEE59, 0x87AA, 0xEE5A, 0x87AD, 0xEE5B, 0x87C5, 0xEE5C, 0x87B0, + 0xEE5D, 0x87AC, 0xEE5E, 0x87B9, 0xEE5F, 0x87B5, 0xEE60, 0x87BC, 0xEE61, 0x87AE, 0xEE62, 0x87C9, 0xEE63, 0x87C3, 0xEE64, 0x87C2, + 0xEE65, 0x87CC, 0xEE66, 0x87B7, 0xEE67, 0x87AF, 0xEE68, 0x87C4, 0xEE69, 0x87CA, 0xEE6A, 0x87B4, 0xEE6B, 0x87B6, 0xEE6C, 0x87BF, + 0xEE6D, 0x87B8, 0xEE6E, 0x87BD, 0xEE6F, 0x87DE, 0xEE70, 0x87B2, 0xEE71, 0x8935, 0xEE72, 0x8933, 0xEE73, 0x893C, 0xEE74, 0x893E, + 0xEE75, 0x8941, 0xEE76, 0x8952, 0xEE77, 0x8937, 0xEE78, 0x8942, 0xEE79, 0x89AD, 0xEE7A, 0x89AF, 0xEE7B, 0x89AE, 0xEE7C, 0x89F2, + 0xEE7D, 0x89F3, 0xEE7E, 0x8B1E, 0xEEA1, 0x8B18, 0xEEA2, 0x8B16, 0xEEA3, 0x8B11, 0xEEA4, 0x8B05, 0xEEA5, 0x8B0B, 0xEEA6, 0x8B22, + 0xEEA7, 0x8B0F, 0xEEA8, 0x8B12, 0xEEA9, 0x8B15, 0xEEAA, 0x8B07, 0xEEAB, 0x8B0D, 0xEEAC, 0x8B08, 0xEEAD, 0x8B06, 0xEEAE, 0x8B1C, + 0xEEAF, 0x8B13, 0xEEB0, 0x8B1A, 0xEEB1, 0x8C4F, 0xEEB2, 0x8C70, 0xEEB3, 0x8C72, 0xEEB4, 0x8C71, 0xEEB5, 0x8C6F, 0xEEB6, 0x8C95, + 0xEEB7, 0x8C94, 0xEEB8, 0x8CF9, 0xEEB9, 0x8D6F, 0xEEBA, 0x8E4E, 0xEEBB, 0x8E4D, 0xEEBC, 0x8E53, 0xEEBD, 0x8E50, 0xEEBE, 0x8E4C, + 0xEEBF, 0x8E47, 0xEEC0, 0x8F43, 0xEEC1, 0x8F40, 0xEEC2, 0x9085, 0xEEC3, 0x907E, 0xEEC4, 0x9138, 0xEEC5, 0x919A, 0xEEC6, 0x91A2, + 0xEEC7, 0x919B, 0xEEC8, 0x9199, 0xEEC9, 0x919F, 0xEECA, 0x91A1, 0xEECB, 0x919D, 0xEECC, 0x91A0, 0xEECD, 0x93A1, 0xEECE, 0x9383, + 0xEECF, 0x93AF, 0xEED0, 0x9364, 0xEED1, 0x9356, 0xEED2, 0x9347, 0xEED3, 0x937C, 0xEED4, 0x9358, 0xEED5, 0x935C, 0xEED6, 0x9376, + 0xEED7, 0x9349, 0xEED8, 0x9350, 0xEED9, 0x9351, 0xEEDA, 0x9360, 0xEEDB, 0x936D, 0xEEDC, 0x938F, 0xEEDD, 0x934C, 0xEEDE, 0x936A, + 0xEEDF, 0x9379, 0xEEE0, 0x9357, 0xEEE1, 0x9355, 0xEEE2, 0x9352, 0xEEE3, 0x934F, 0xEEE4, 0x9371, 0xEEE5, 0x9377, 0xEEE6, 0x937B, + 0xEEE7, 0x9361, 0xEEE8, 0x935E, 0xEEE9, 0x9363, 0xEEEA, 0x9367, 0xEEEB, 0x9380, 0xEEEC, 0x934E, 0xEEED, 0x9359, 0xEEEE, 0x95C7, + 0xEEEF, 0x95C0, 0xEEF0, 0x95C9, 0xEEF1, 0x95C3, 0xEEF2, 0x95C5, 0xEEF3, 0x95B7, 0xEEF4, 0x96AE, 0xEEF5, 0x96B0, 0xEEF6, 0x96AC, + 0xEEF7, 0x9720, 0xEEF8, 0x971F, 0xEEF9, 0x9718, 0xEEFA, 0x971D, 0xEEFB, 0x9719, 0xEEFC, 0x979A, 0xEEFD, 0x97A1, 0xEEFE, 0x979C, + 0xEF40, 0x979E, 0xEF41, 0x979D, 0xEF42, 0x97D5, 0xEF43, 0x97D4, 0xEF44, 0x97F1, 0xEF45, 0x9841, 0xEF46, 0x9844, 0xEF47, 0x984A, + 0xEF48, 0x9849, 0xEF49, 0x9845, 0xEF4A, 0x9843, 0xEF4B, 0x9925, 0xEF4C, 0x992B, 0xEF4D, 0x992C, 0xEF4E, 0x992A, 0xEF4F, 0x9933, + 0xEF50, 0x9932, 0xEF51, 0x992F, 0xEF52, 0x992D, 0xEF53, 0x9931, 0xEF54, 0x9930, 0xEF55, 0x9998, 0xEF56, 0x99A3, 0xEF57, 0x99A1, + 0xEF58, 0x9A02, 0xEF59, 0x99FA, 0xEF5A, 0x99F4, 0xEF5B, 0x99F7, 0xEF5C, 0x99F9, 0xEF5D, 0x99F8, 0xEF5E, 0x99F6, 0xEF5F, 0x99FB, + 0xEF60, 0x99FD, 0xEF61, 0x99FE, 0xEF62, 0x99FC, 0xEF63, 0x9A03, 0xEF64, 0x9ABE, 0xEF65, 0x9AFE, 0xEF66, 0x9AFD, 0xEF67, 0x9B01, + 0xEF68, 0x9AFC, 0xEF69, 0x9B48, 0xEF6A, 0x9B9A, 0xEF6B, 0x9BA8, 0xEF6C, 0x9B9E, 0xEF6D, 0x9B9B, 0xEF6E, 0x9BA6, 0xEF6F, 0x9BA1, + 0xEF70, 0x9BA5, 0xEF71, 0x9BA4, 0xEF72, 0x9B86, 0xEF73, 0x9BA2, 0xEF74, 0x9BA0, 0xEF75, 0x9BAF, 0xEF76, 0x9D33, 0xEF77, 0x9D41, + 0xEF78, 0x9D67, 0xEF79, 0x9D36, 0xEF7A, 0x9D2E, 0xEF7B, 0x9D2F, 0xEF7C, 0x9D31, 0xEF7D, 0x9D38, 0xEF7E, 0x9D30, 0xEFA1, 0x9D45, + 0xEFA2, 0x9D42, 0xEFA3, 0x9D43, 0xEFA4, 0x9D3E, 0xEFA5, 0x9D37, 0xEFA6, 0x9D40, 0xEFA7, 0x9D3D, 0xEFA8, 0x7FF5, 0xEFA9, 0x9D2D, + 0xEFAA, 0x9E8A, 0xEFAB, 0x9E89, 0xEFAC, 0x9E8D, 0xEFAD, 0x9EB0, 0xEFAE, 0x9EC8, 0xEFAF, 0x9EDA, 0xEFB0, 0x9EFB, 0xEFB1, 0x9EFF, + 0xEFB2, 0x9F24, 0xEFB3, 0x9F23, 0xEFB4, 0x9F22, 0xEFB5, 0x9F54, 0xEFB6, 0x9FA0, 0xEFB7, 0x5131, 0xEFB8, 0x512D, 0xEFB9, 0x512E, + 0xEFBA, 0x5698, 0xEFBB, 0x569C, 0xEFBC, 0x5697, 0xEFBD, 0x569A, 0xEFBE, 0x569D, 0xEFBF, 0x5699, 0xEFC0, 0x5970, 0xEFC1, 0x5B3C, + 0xEFC2, 0x5C69, 0xEFC3, 0x5C6A, 0xEFC4, 0x5DC0, 0xEFC5, 0x5E6D, 0xEFC6, 0x5E6E, 0xEFC7, 0x61D8, 0xEFC8, 0x61DF, 0xEFC9, 0x61ED, + 0xEFCA, 0x61EE, 0xEFCB, 0x61F1, 0xEFCC, 0x61EA, 0xEFCD, 0x61F0, 0xEFCE, 0x61EB, 0xEFCF, 0x61D6, 0xEFD0, 0x61E9, 0xEFD1, 0x64FF, + 0xEFD2, 0x6504, 0xEFD3, 0x64FD, 0xEFD4, 0x64F8, 0xEFD5, 0x6501, 0xEFD6, 0x6503, 0xEFD7, 0x64FC, 0xEFD8, 0x6594, 0xEFD9, 0x65DB, + 0xEFDA, 0x66DA, 0xEFDB, 0x66DB, 0xEFDC, 0x66D8, 0xEFDD, 0x6AC5, 0xEFDE, 0x6AB9, 0xEFDF, 0x6ABD, 0xEFE0, 0x6AE1, 0xEFE1, 0x6AC6, + 0xEFE2, 0x6ABA, 0xEFE3, 0x6AB6, 0xEFE4, 0x6AB7, 0xEFE5, 0x6AC7, 0xEFE6, 0x6AB4, 0xEFE7, 0x6AAD, 0xEFE8, 0x6B5E, 0xEFE9, 0x6BC9, + 0xEFEA, 0x6C0B, 0xEFEB, 0x7007, 0xEFEC, 0x700C, 0xEFED, 0x700D, 0xEFEE, 0x7001, 0xEFEF, 0x7005, 0xEFF0, 0x7014, 0xEFF1, 0x700E, + 0xEFF2, 0x6FFF, 0xEFF3, 0x7000, 0xEFF4, 0x6FFB, 0xEFF5, 0x7026, 0xEFF6, 0x6FFC, 0xEFF7, 0x6FF7, 0xEFF8, 0x700A, 0xEFF9, 0x7201, + 0xEFFA, 0x71FF, 0xEFFB, 0x71F9, 0xEFFC, 0x7203, 0xEFFD, 0x71FD, 0xEFFE, 0x7376, 0xF040, 0x74B8, 0xF041, 0x74C0, 0xF042, 0x74B5, + 0xF043, 0x74C1, 0xF044, 0x74BE, 0xF045, 0x74B6, 0xF046, 0x74BB, 0xF047, 0x74C2, 0xF048, 0x7514, 0xF049, 0x7513, 0xF04A, 0x765C, + 0xF04B, 0x7664, 0xF04C, 0x7659, 0xF04D, 0x7650, 0xF04E, 0x7653, 0xF04F, 0x7657, 0xF050, 0x765A, 0xF051, 0x76A6, 0xF052, 0x76BD, + 0xF053, 0x76EC, 0xF054, 0x77C2, 0xF055, 0x77BA, 0xF056, 0x78FF, 0xF057, 0x790C, 0xF058, 0x7913, 0xF059, 0x7914, 0xF05A, 0x7909, + 0xF05B, 0x7910, 0xF05C, 0x7912, 0xF05D, 0x7911, 0xF05E, 0x79AD, 0xF05F, 0x79AC, 0xF060, 0x7A5F, 0xF061, 0x7C1C, 0xF062, 0x7C29, + 0xF063, 0x7C19, 0xF064, 0x7C20, 0xF065, 0x7C1F, 0xF066, 0x7C2D, 0xF067, 0x7C1D, 0xF068, 0x7C26, 0xF069, 0x7C28, 0xF06A, 0x7C22, + 0xF06B, 0x7C25, 0xF06C, 0x7C30, 0xF06D, 0x7E5C, 0xF06E, 0x7E50, 0xF06F, 0x7E56, 0xF070, 0x7E63, 0xF071, 0x7E58, 0xF072, 0x7E62, + 0xF073, 0x7E5F, 0xF074, 0x7E51, 0xF075, 0x7E60, 0xF076, 0x7E57, 0xF077, 0x7E53, 0xF078, 0x7FB5, 0xF079, 0x7FB3, 0xF07A, 0x7FF7, + 0xF07B, 0x7FF8, 0xF07C, 0x8075, 0xF07D, 0x81D1, 0xF07E, 0x81D2, 0xF0A1, 0x81D0, 0xF0A2, 0x825F, 0xF0A3, 0x825E, 0xF0A4, 0x85B4, + 0xF0A5, 0x85C6, 0xF0A6, 0x85C0, 0xF0A7, 0x85C3, 0xF0A8, 0x85C2, 0xF0A9, 0x85B3, 0xF0AA, 0x85B5, 0xF0AB, 0x85BD, 0xF0AC, 0x85C7, + 0xF0AD, 0x85C4, 0xF0AE, 0x85BF, 0xF0AF, 0x85CB, 0xF0B0, 0x85CE, 0xF0B1, 0x85C8, 0xF0B2, 0x85C5, 0xF0B3, 0x85B1, 0xF0B4, 0x85B6, + 0xF0B5, 0x85D2, 0xF0B6, 0x8624, 0xF0B7, 0x85B8, 0xF0B8, 0x85B7, 0xF0B9, 0x85BE, 0xF0BA, 0x8669, 0xF0BB, 0x87E7, 0xF0BC, 0x87E6, + 0xF0BD, 0x87E2, 0xF0BE, 0x87DB, 0xF0BF, 0x87EB, 0xF0C0, 0x87EA, 0xF0C1, 0x87E5, 0xF0C2, 0x87DF, 0xF0C3, 0x87F3, 0xF0C4, 0x87E4, + 0xF0C5, 0x87D4, 0xF0C6, 0x87DC, 0xF0C7, 0x87D3, 0xF0C8, 0x87ED, 0xF0C9, 0x87D8, 0xF0CA, 0x87E3, 0xF0CB, 0x87A4, 0xF0CC, 0x87D7, + 0xF0CD, 0x87D9, 0xF0CE, 0x8801, 0xF0CF, 0x87F4, 0xF0D0, 0x87E8, 0xF0D1, 0x87DD, 0xF0D2, 0x8953, 0xF0D3, 0x894B, 0xF0D4, 0x894F, + 0xF0D5, 0x894C, 0xF0D6, 0x8946, 0xF0D7, 0x8950, 0xF0D8, 0x8951, 0xF0D9, 0x8949, 0xF0DA, 0x8B2A, 0xF0DB, 0x8B27, 0xF0DC, 0x8B23, + 0xF0DD, 0x8B33, 0xF0DE, 0x8B30, 0xF0DF, 0x8B35, 0xF0E0, 0x8B47, 0xF0E1, 0x8B2F, 0xF0E2, 0x8B3C, 0xF0E3, 0x8B3E, 0xF0E4, 0x8B31, + 0xF0E5, 0x8B25, 0xF0E6, 0x8B37, 0xF0E7, 0x8B26, 0xF0E8, 0x8B36, 0xF0E9, 0x8B2E, 0xF0EA, 0x8B24, 0xF0EB, 0x8B3B, 0xF0EC, 0x8B3D, + 0xF0ED, 0x8B3A, 0xF0EE, 0x8C42, 0xF0EF, 0x8C75, 0xF0F0, 0x8C99, 0xF0F1, 0x8C98, 0xF0F2, 0x8C97, 0xF0F3, 0x8CFE, 0xF0F4, 0x8D04, + 0xF0F5, 0x8D02, 0xF0F6, 0x8D00, 0xF0F7, 0x8E5C, 0xF0F8, 0x8E62, 0xF0F9, 0x8E60, 0xF0FA, 0x8E57, 0xF0FB, 0x8E56, 0xF0FC, 0x8E5E, + 0xF0FD, 0x8E65, 0xF0FE, 0x8E67, 0xF140, 0x8E5B, 0xF141, 0x8E5A, 0xF142, 0x8E61, 0xF143, 0x8E5D, 0xF144, 0x8E69, 0xF145, 0x8E54, + 0xF146, 0x8F46, 0xF147, 0x8F47, 0xF148, 0x8F48, 0xF149, 0x8F4B, 0xF14A, 0x9128, 0xF14B, 0x913A, 0xF14C, 0x913B, 0xF14D, 0x913E, + 0xF14E, 0x91A8, 0xF14F, 0x91A5, 0xF150, 0x91A7, 0xF151, 0x91AF, 0xF152, 0x91AA, 0xF153, 0x93B5, 0xF154, 0x938C, 0xF155, 0x9392, + 0xF156, 0x93B7, 0xF157, 0x939B, 0xF158, 0x939D, 0xF159, 0x9389, 0xF15A, 0x93A7, 0xF15B, 0x938E, 0xF15C, 0x93AA, 0xF15D, 0x939E, + 0xF15E, 0x93A6, 0xF15F, 0x9395, 0xF160, 0x9388, 0xF161, 0x9399, 0xF162, 0x939F, 0xF163, 0x938D, 0xF164, 0x93B1, 0xF165, 0x9391, + 0xF166, 0x93B2, 0xF167, 0x93A4, 0xF168, 0x93A8, 0xF169, 0x93B4, 0xF16A, 0x93A3, 0xF16B, 0x93A5, 0xF16C, 0x95D2, 0xF16D, 0x95D3, + 0xF16E, 0x95D1, 0xF16F, 0x96B3, 0xF170, 0x96D7, 0xF171, 0x96DA, 0xF172, 0x5DC2, 0xF173, 0x96DF, 0xF174, 0x96D8, 0xF175, 0x96DD, + 0xF176, 0x9723, 0xF177, 0x9722, 0xF178, 0x9725, 0xF179, 0x97AC, 0xF17A, 0x97AE, 0xF17B, 0x97A8, 0xF17C, 0x97AB, 0xF17D, 0x97A4, + 0xF17E, 0x97AA, 0xF1A1, 0x97A2, 0xF1A2, 0x97A5, 0xF1A3, 0x97D7, 0xF1A4, 0x97D9, 0xF1A5, 0x97D6, 0xF1A6, 0x97D8, 0xF1A7, 0x97FA, + 0xF1A8, 0x9850, 0xF1A9, 0x9851, 0xF1AA, 0x9852, 0xF1AB, 0x98B8, 0xF1AC, 0x9941, 0xF1AD, 0x993C, 0xF1AE, 0x993A, 0xF1AF, 0x9A0F, + 0xF1B0, 0x9A0B, 0xF1B1, 0x9A09, 0xF1B2, 0x9A0D, 0xF1B3, 0x9A04, 0xF1B4, 0x9A11, 0xF1B5, 0x9A0A, 0xF1B6, 0x9A05, 0xF1B7, 0x9A07, + 0xF1B8, 0x9A06, 0xF1B9, 0x9AC0, 0xF1BA, 0x9ADC, 0xF1BB, 0x9B08, 0xF1BC, 0x9B04, 0xF1BD, 0x9B05, 0xF1BE, 0x9B29, 0xF1BF, 0x9B35, + 0xF1C0, 0x9B4A, 0xF1C1, 0x9B4C, 0xF1C2, 0x9B4B, 0xF1C3, 0x9BC7, 0xF1C4, 0x9BC6, 0xF1C5, 0x9BC3, 0xF1C6, 0x9BBF, 0xF1C7, 0x9BC1, + 0xF1C8, 0x9BB5, 0xF1C9, 0x9BB8, 0xF1CA, 0x9BD3, 0xF1CB, 0x9BB6, 0xF1CC, 0x9BC4, 0xF1CD, 0x9BB9, 0xF1CE, 0x9BBD, 0xF1CF, 0x9D5C, + 0xF1D0, 0x9D53, 0xF1D1, 0x9D4F, 0xF1D2, 0x9D4A, 0xF1D3, 0x9D5B, 0xF1D4, 0x9D4B, 0xF1D5, 0x9D59, 0xF1D6, 0x9D56, 0xF1D7, 0x9D4C, + 0xF1D8, 0x9D57, 0xF1D9, 0x9D52, 0xF1DA, 0x9D54, 0xF1DB, 0x9D5F, 0xF1DC, 0x9D58, 0xF1DD, 0x9D5A, 0xF1DE, 0x9E8E, 0xF1DF, 0x9E8C, + 0xF1E0, 0x9EDF, 0xF1E1, 0x9F01, 0xF1E2, 0x9F00, 0xF1E3, 0x9F16, 0xF1E4, 0x9F25, 0xF1E5, 0x9F2B, 0xF1E6, 0x9F2A, 0xF1E7, 0x9F29, + 0xF1E8, 0x9F28, 0xF1E9, 0x9F4C, 0xF1EA, 0x9F55, 0xF1EB, 0x5134, 0xF1EC, 0x5135, 0xF1ED, 0x5296, 0xF1EE, 0x52F7, 0xF1EF, 0x53B4, + 0xF1F0, 0x56AB, 0xF1F1, 0x56AD, 0xF1F2, 0x56A6, 0xF1F3, 0x56A7, 0xF1F4, 0x56AA, 0xF1F5, 0x56AC, 0xF1F6, 0x58DA, 0xF1F7, 0x58DD, + 0xF1F8, 0x58DB, 0xF1F9, 0x5912, 0xF1FA, 0x5B3D, 0xF1FB, 0x5B3E, 0xF1FC, 0x5B3F, 0xF1FD, 0x5DC3, 0xF1FE, 0x5E70, 0xF240, 0x5FBF, + 0xF241, 0x61FB, 0xF242, 0x6507, 0xF243, 0x6510, 0xF244, 0x650D, 0xF245, 0x6509, 0xF246, 0x650C, 0xF247, 0x650E, 0xF248, 0x6584, + 0xF249, 0x65DE, 0xF24A, 0x65DD, 0xF24B, 0x66DE, 0xF24C, 0x6AE7, 0xF24D, 0x6AE0, 0xF24E, 0x6ACC, 0xF24F, 0x6AD1, 0xF250, 0x6AD9, + 0xF251, 0x6ACB, 0xF252, 0x6ADF, 0xF253, 0x6ADC, 0xF254, 0x6AD0, 0xF255, 0x6AEB, 0xF256, 0x6ACF, 0xF257, 0x6ACD, 0xF258, 0x6ADE, + 0xF259, 0x6B60, 0xF25A, 0x6BB0, 0xF25B, 0x6C0C, 0xF25C, 0x7019, 0xF25D, 0x7027, 0xF25E, 0x7020, 0xF25F, 0x7016, 0xF260, 0x702B, + 0xF261, 0x7021, 0xF262, 0x7022, 0xF263, 0x7023, 0xF264, 0x7029, 0xF265, 0x7017, 0xF266, 0x7024, 0xF267, 0x701C, 0xF268, 0x702A, + 0xF269, 0x720C, 0xF26A, 0x720A, 0xF26B, 0x7207, 0xF26C, 0x7202, 0xF26D, 0x7205, 0xF26E, 0x72A5, 0xF26F, 0x72A6, 0xF270, 0x72A4, + 0xF271, 0x72A3, 0xF272, 0x72A1, 0xF273, 0x74CB, 0xF274, 0x74C5, 0xF275, 0x74B7, 0xF276, 0x74C3, 0xF277, 0x7516, 0xF278, 0x7660, + 0xF279, 0x77C9, 0xF27A, 0x77CA, 0xF27B, 0x77C4, 0xF27C, 0x77F1, 0xF27D, 0x791D, 0xF27E, 0x791B, 0xF2A1, 0x7921, 0xF2A2, 0x791C, + 0xF2A3, 0x7917, 0xF2A4, 0x791E, 0xF2A5, 0x79B0, 0xF2A6, 0x7A67, 0xF2A7, 0x7A68, 0xF2A8, 0x7C33, 0xF2A9, 0x7C3C, 0xF2AA, 0x7C39, + 0xF2AB, 0x7C2C, 0xF2AC, 0x7C3B, 0xF2AD, 0x7CEC, 0xF2AE, 0x7CEA, 0xF2AF, 0x7E76, 0xF2B0, 0x7E75, 0xF2B1, 0x7E78, 0xF2B2, 0x7E70, + 0xF2B3, 0x7E77, 0xF2B4, 0x7E6F, 0xF2B5, 0x7E7A, 0xF2B6, 0x7E72, 0xF2B7, 0x7E74, 0xF2B8, 0x7E68, 0xF2B9, 0x7F4B, 0xF2BA, 0x7F4A, + 0xF2BB, 0x7F83, 0xF2BC, 0x7F86, 0xF2BD, 0x7FB7, 0xF2BE, 0x7FFD, 0xF2BF, 0x7FFE, 0xF2C0, 0x8078, 0xF2C1, 0x81D7, 0xF2C2, 0x81D5, + 0xF2C3, 0x8264, 0xF2C4, 0x8261, 0xF2C5, 0x8263, 0xF2C6, 0x85EB, 0xF2C7, 0x85F1, 0xF2C8, 0x85ED, 0xF2C9, 0x85D9, 0xF2CA, 0x85E1, + 0xF2CB, 0x85E8, 0xF2CC, 0x85DA, 0xF2CD, 0x85D7, 0xF2CE, 0x85EC, 0xF2CF, 0x85F2, 0xF2D0, 0x85F8, 0xF2D1, 0x85D8, 0xF2D2, 0x85DF, + 0xF2D3, 0x85E3, 0xF2D4, 0x85DC, 0xF2D5, 0x85D1, 0xF2D6, 0x85F0, 0xF2D7, 0x85E6, 0xF2D8, 0x85EF, 0xF2D9, 0x85DE, 0xF2DA, 0x85E2, + 0xF2DB, 0x8800, 0xF2DC, 0x87FA, 0xF2DD, 0x8803, 0xF2DE, 0x87F6, 0xF2DF, 0x87F7, 0xF2E0, 0x8809, 0xF2E1, 0x880C, 0xF2E2, 0x880B, + 0xF2E3, 0x8806, 0xF2E4, 0x87FC, 0xF2E5, 0x8808, 0xF2E6, 0x87FF, 0xF2E7, 0x880A, 0xF2E8, 0x8802, 0xF2E9, 0x8962, 0xF2EA, 0x895A, + 0xF2EB, 0x895B, 0xF2EC, 0x8957, 0xF2ED, 0x8961, 0xF2EE, 0x895C, 0xF2EF, 0x8958, 0xF2F0, 0x895D, 0xF2F1, 0x8959, 0xF2F2, 0x8988, + 0xF2F3, 0x89B7, 0xF2F4, 0x89B6, 0xF2F5, 0x89F6, 0xF2F6, 0x8B50, 0xF2F7, 0x8B48, 0xF2F8, 0x8B4A, 0xF2F9, 0x8B40, 0xF2FA, 0x8B53, + 0xF2FB, 0x8B56, 0xF2FC, 0x8B54, 0xF2FD, 0x8B4B, 0xF2FE, 0x8B55, 0xF340, 0x8B51, 0xF341, 0x8B42, 0xF342, 0x8B52, 0xF343, 0x8B57, + 0xF344, 0x8C43, 0xF345, 0x8C77, 0xF346, 0x8C76, 0xF347, 0x8C9A, 0xF348, 0x8D06, 0xF349, 0x8D07, 0xF34A, 0x8D09, 0xF34B, 0x8DAC, + 0xF34C, 0x8DAA, 0xF34D, 0x8DAD, 0xF34E, 0x8DAB, 0xF34F, 0x8E6D, 0xF350, 0x8E78, 0xF351, 0x8E73, 0xF352, 0x8E6A, 0xF353, 0x8E6F, + 0xF354, 0x8E7B, 0xF355, 0x8EC2, 0xF356, 0x8F52, 0xF357, 0x8F51, 0xF358, 0x8F4F, 0xF359, 0x8F50, 0xF35A, 0x8F53, 0xF35B, 0x8FB4, + 0xF35C, 0x9140, 0xF35D, 0x913F, 0xF35E, 0x91B0, 0xF35F, 0x91AD, 0xF360, 0x93DE, 0xF361, 0x93C7, 0xF362, 0x93CF, 0xF363, 0x93C2, + 0xF364, 0x93DA, 0xF365, 0x93D0, 0xF366, 0x93F9, 0xF367, 0x93EC, 0xF368, 0x93CC, 0xF369, 0x93D9, 0xF36A, 0x93A9, 0xF36B, 0x93E6, + 0xF36C, 0x93CA, 0xF36D, 0x93D4, 0xF36E, 0x93EE, 0xF36F, 0x93E3, 0xF370, 0x93D5, 0xF371, 0x93C4, 0xF372, 0x93CE, 0xF373, 0x93C0, + 0xF374, 0x93D2, 0xF375, 0x93E7, 0xF376, 0x957D, 0xF377, 0x95DA, 0xF378, 0x95DB, 0xF379, 0x96E1, 0xF37A, 0x9729, 0xF37B, 0x972B, + 0xF37C, 0x972C, 0xF37D, 0x9728, 0xF37E, 0x9726, 0xF3A1, 0x97B3, 0xF3A2, 0x97B7, 0xF3A3, 0x97B6, 0xF3A4, 0x97DD, 0xF3A5, 0x97DE, + 0xF3A6, 0x97DF, 0xF3A7, 0x985C, 0xF3A8, 0x9859, 0xF3A9, 0x985D, 0xF3AA, 0x9857, 0xF3AB, 0x98BF, 0xF3AC, 0x98BD, 0xF3AD, 0x98BB, + 0xF3AE, 0x98BE, 0xF3AF, 0x9948, 0xF3B0, 0x9947, 0xF3B1, 0x9943, 0xF3B2, 0x99A6, 0xF3B3, 0x99A7, 0xF3B4, 0x9A1A, 0xF3B5, 0x9A15, + 0xF3B6, 0x9A25, 0xF3B7, 0x9A1D, 0xF3B8, 0x9A24, 0xF3B9, 0x9A1B, 0xF3BA, 0x9A22, 0xF3BB, 0x9A20, 0xF3BC, 0x9A27, 0xF3BD, 0x9A23, + 0xF3BE, 0x9A1E, 0xF3BF, 0x9A1C, 0xF3C0, 0x9A14, 0xF3C1, 0x9AC2, 0xF3C2, 0x9B0B, 0xF3C3, 0x9B0A, 0xF3C4, 0x9B0E, 0xF3C5, 0x9B0C, + 0xF3C6, 0x9B37, 0xF3C7, 0x9BEA, 0xF3C8, 0x9BEB, 0xF3C9, 0x9BE0, 0xF3CA, 0x9BDE, 0xF3CB, 0x9BE4, 0xF3CC, 0x9BE6, 0xF3CD, 0x9BE2, + 0xF3CE, 0x9BF0, 0xF3CF, 0x9BD4, 0xF3D0, 0x9BD7, 0xF3D1, 0x9BEC, 0xF3D2, 0x9BDC, 0xF3D3, 0x9BD9, 0xF3D4, 0x9BE5, 0xF3D5, 0x9BD5, + 0xF3D6, 0x9BE1, 0xF3D7, 0x9BDA, 0xF3D8, 0x9D77, 0xF3D9, 0x9D81, 0xF3DA, 0x9D8A, 0xF3DB, 0x9D84, 0xF3DC, 0x9D88, 0xF3DD, 0x9D71, + 0xF3DE, 0x9D80, 0xF3DF, 0x9D78, 0xF3E0, 0x9D86, 0xF3E1, 0x9D8B, 0xF3E2, 0x9D8C, 0xF3E3, 0x9D7D, 0xF3E4, 0x9D6B, 0xF3E5, 0x9D74, + 0xF3E6, 0x9D75, 0xF3E7, 0x9D70, 0xF3E8, 0x9D69, 0xF3E9, 0x9D85, 0xF3EA, 0x9D73, 0xF3EB, 0x9D7B, 0xF3EC, 0x9D82, 0xF3ED, 0x9D6F, + 0xF3EE, 0x9D79, 0xF3EF, 0x9D7F, 0xF3F0, 0x9D87, 0xF3F1, 0x9D68, 0xF3F2, 0x9E94, 0xF3F3, 0x9E91, 0xF3F4, 0x9EC0, 0xF3F5, 0x9EFC, + 0xF3F6, 0x9F2D, 0xF3F7, 0x9F40, 0xF3F8, 0x9F41, 0xF3F9, 0x9F4D, 0xF3FA, 0x9F56, 0xF3FB, 0x9F57, 0xF3FC, 0x9F58, 0xF3FD, 0x5337, + 0xF3FE, 0x56B2, 0xF440, 0x56B5, 0xF441, 0x56B3, 0xF442, 0x58E3, 0xF443, 0x5B45, 0xF444, 0x5DC6, 0xF445, 0x5DC7, 0xF446, 0x5EEE, + 0xF447, 0x5EEF, 0xF448, 0x5FC0, 0xF449, 0x5FC1, 0xF44A, 0x61F9, 0xF44B, 0x6517, 0xF44C, 0x6516, 0xF44D, 0x6515, 0xF44E, 0x6513, + 0xF44F, 0x65DF, 0xF450, 0x66E8, 0xF451, 0x66E3, 0xF452, 0x66E4, 0xF453, 0x6AF3, 0xF454, 0x6AF0, 0xF455, 0x6AEA, 0xF456, 0x6AE8, + 0xF457, 0x6AF9, 0xF458, 0x6AF1, 0xF459, 0x6AEE, 0xF45A, 0x6AEF, 0xF45B, 0x703C, 0xF45C, 0x7035, 0xF45D, 0x702F, 0xF45E, 0x7037, + 0xF45F, 0x7034, 0xF460, 0x7031, 0xF461, 0x7042, 0xF462, 0x7038, 0xF463, 0x703F, 0xF464, 0x703A, 0xF465, 0x7039, 0xF466, 0x7040, + 0xF467, 0x703B, 0xF468, 0x7033, 0xF469, 0x7041, 0xF46A, 0x7213, 0xF46B, 0x7214, 0xF46C, 0x72A8, 0xF46D, 0x737D, 0xF46E, 0x737C, + 0xF46F, 0x74BA, 0xF470, 0x76AB, 0xF471, 0x76AA, 0xF472, 0x76BE, 0xF473, 0x76ED, 0xF474, 0x77CC, 0xF475, 0x77CE, 0xF476, 0x77CF, + 0xF477, 0x77CD, 0xF478, 0x77F2, 0xF479, 0x7925, 0xF47A, 0x7923, 0xF47B, 0x7927, 0xF47C, 0x7928, 0xF47D, 0x7924, 0xF47E, 0x7929, + 0xF4A1, 0x79B2, 0xF4A2, 0x7A6E, 0xF4A3, 0x7A6C, 0xF4A4, 0x7A6D, 0xF4A5, 0x7AF7, 0xF4A6, 0x7C49, 0xF4A7, 0x7C48, 0xF4A8, 0x7C4A, + 0xF4A9, 0x7C47, 0xF4AA, 0x7C45, 0xF4AB, 0x7CEE, 0xF4AC, 0x7E7B, 0xF4AD, 0x7E7E, 0xF4AE, 0x7E81, 0xF4AF, 0x7E80, 0xF4B0, 0x7FBA, + 0xF4B1, 0x7FFF, 0xF4B2, 0x8079, 0xF4B3, 0x81DB, 0xF4B4, 0x81D9, 0xF4B5, 0x820B, 0xF4B6, 0x8268, 0xF4B7, 0x8269, 0xF4B8, 0x8622, + 0xF4B9, 0x85FF, 0xF4BA, 0x8601, 0xF4BB, 0x85FE, 0xF4BC, 0x861B, 0xF4BD, 0x8600, 0xF4BE, 0x85F6, 0xF4BF, 0x8604, 0xF4C0, 0x8609, + 0xF4C1, 0x8605, 0xF4C2, 0x860C, 0xF4C3, 0x85FD, 0xF4C4, 0x8819, 0xF4C5, 0x8810, 0xF4C6, 0x8811, 0xF4C7, 0x8817, 0xF4C8, 0x8813, + 0xF4C9, 0x8816, 0xF4CA, 0x8963, 0xF4CB, 0x8966, 0xF4CC, 0x89B9, 0xF4CD, 0x89F7, 0xF4CE, 0x8B60, 0xF4CF, 0x8B6A, 0xF4D0, 0x8B5D, + 0xF4D1, 0x8B68, 0xF4D2, 0x8B63, 0xF4D3, 0x8B65, 0xF4D4, 0x8B67, 0xF4D5, 0x8B6D, 0xF4D6, 0x8DAE, 0xF4D7, 0x8E86, 0xF4D8, 0x8E88, + 0xF4D9, 0x8E84, 0xF4DA, 0x8F59, 0xF4DB, 0x8F56, 0xF4DC, 0x8F57, 0xF4DD, 0x8F55, 0xF4DE, 0x8F58, 0xF4DF, 0x8F5A, 0xF4E0, 0x908D, + 0xF4E1, 0x9143, 0xF4E2, 0x9141, 0xF4E3, 0x91B7, 0xF4E4, 0x91B5, 0xF4E5, 0x91B2, 0xF4E6, 0x91B3, 0xF4E7, 0x940B, 0xF4E8, 0x9413, + 0xF4E9, 0x93FB, 0xF4EA, 0x9420, 0xF4EB, 0x940F, 0xF4EC, 0x9414, 0xF4ED, 0x93FE, 0xF4EE, 0x9415, 0xF4EF, 0x9410, 0xF4F0, 0x9428, + 0xF4F1, 0x9419, 0xF4F2, 0x940D, 0xF4F3, 0x93F5, 0xF4F4, 0x9400, 0xF4F5, 0x93F7, 0xF4F6, 0x9407, 0xF4F7, 0x940E, 0xF4F8, 0x9416, + 0xF4F9, 0x9412, 0xF4FA, 0x93FA, 0xF4FB, 0x9409, 0xF4FC, 0x93F8, 0xF4FD, 0x940A, 0xF4FE, 0x93FF, 0xF540, 0x93FC, 0xF541, 0x940C, + 0xF542, 0x93F6, 0xF543, 0x9411, 0xF544, 0x9406, 0xF545, 0x95DE, 0xF546, 0x95E0, 0xF547, 0x95DF, 0xF548, 0x972E, 0xF549, 0x972F, + 0xF54A, 0x97B9, 0xF54B, 0x97BB, 0xF54C, 0x97FD, 0xF54D, 0x97FE, 0xF54E, 0x9860, 0xF54F, 0x9862, 0xF550, 0x9863, 0xF551, 0x985F, + 0xF552, 0x98C1, 0xF553, 0x98C2, 0xF554, 0x9950, 0xF555, 0x994E, 0xF556, 0x9959, 0xF557, 0x994C, 0xF558, 0x994B, 0xF559, 0x9953, + 0xF55A, 0x9A32, 0xF55B, 0x9A34, 0xF55C, 0x9A31, 0xF55D, 0x9A2C, 0xF55E, 0x9A2A, 0xF55F, 0x9A36, 0xF560, 0x9A29, 0xF561, 0x9A2E, + 0xF562, 0x9A38, 0xF563, 0x9A2D, 0xF564, 0x9AC7, 0xF565, 0x9ACA, 0xF566, 0x9AC6, 0xF567, 0x9B10, 0xF568, 0x9B12, 0xF569, 0x9B11, + 0xF56A, 0x9C0B, 0xF56B, 0x9C08, 0xF56C, 0x9BF7, 0xF56D, 0x9C05, 0xF56E, 0x9C12, 0xF56F, 0x9BF8, 0xF570, 0x9C40, 0xF571, 0x9C07, + 0xF572, 0x9C0E, 0xF573, 0x9C06, 0xF574, 0x9C17, 0xF575, 0x9C14, 0xF576, 0x9C09, 0xF577, 0x9D9F, 0xF578, 0x9D99, 0xF579, 0x9DA4, + 0xF57A, 0x9D9D, 0xF57B, 0x9D92, 0xF57C, 0x9D98, 0xF57D, 0x9D90, 0xF57E, 0x9D9B, 0xF5A1, 0x9DA0, 0xF5A2, 0x9D94, 0xF5A3, 0x9D9C, + 0xF5A4, 0x9DAA, 0xF5A5, 0x9D97, 0xF5A6, 0x9DA1, 0xF5A7, 0x9D9A, 0xF5A8, 0x9DA2, 0xF5A9, 0x9DA8, 0xF5AA, 0x9D9E, 0xF5AB, 0x9DA3, + 0xF5AC, 0x9DBF, 0xF5AD, 0x9DA9, 0xF5AE, 0x9D96, 0xF5AF, 0x9DA6, 0xF5B0, 0x9DA7, 0xF5B1, 0x9E99, 0xF5B2, 0x9E9B, 0xF5B3, 0x9E9A, + 0xF5B4, 0x9EE5, 0xF5B5, 0x9EE4, 0xF5B6, 0x9EE7, 0xF5B7, 0x9EE6, 0xF5B8, 0x9F30, 0xF5B9, 0x9F2E, 0xF5BA, 0x9F5B, 0xF5BB, 0x9F60, + 0xF5BC, 0x9F5E, 0xF5BD, 0x9F5D, 0xF5BE, 0x9F59, 0xF5BF, 0x9F91, 0xF5C0, 0x513A, 0xF5C1, 0x5139, 0xF5C2, 0x5298, 0xF5C3, 0x5297, + 0xF5C4, 0x56C3, 0xF5C5, 0x56BD, 0xF5C6, 0x56BE, 0xF5C7, 0x5B48, 0xF5C8, 0x5B47, 0xF5C9, 0x5DCB, 0xF5CA, 0x5DCF, 0xF5CB, 0x5EF1, + 0xF5CC, 0x61FD, 0xF5CD, 0x651B, 0xF5CE, 0x6B02, 0xF5CF, 0x6AFC, 0xF5D0, 0x6B03, 0xF5D1, 0x6AF8, 0xF5D2, 0x6B00, 0xF5D3, 0x7043, + 0xF5D4, 0x7044, 0xF5D5, 0x704A, 0xF5D6, 0x7048, 0xF5D7, 0x7049, 0xF5D8, 0x7045, 0xF5D9, 0x7046, 0xF5DA, 0x721D, 0xF5DB, 0x721A, + 0xF5DC, 0x7219, 0xF5DD, 0x737E, 0xF5DE, 0x7517, 0xF5DF, 0x766A, 0xF5E0, 0x77D0, 0xF5E1, 0x792D, 0xF5E2, 0x7931, 0xF5E3, 0x792F, + 0xF5E4, 0x7C54, 0xF5E5, 0x7C53, 0xF5E6, 0x7CF2, 0xF5E7, 0x7E8A, 0xF5E8, 0x7E87, 0xF5E9, 0x7E88, 0xF5EA, 0x7E8B, 0xF5EB, 0x7E86, + 0xF5EC, 0x7E8D, 0xF5ED, 0x7F4D, 0xF5EE, 0x7FBB, 0xF5EF, 0x8030, 0xF5F0, 0x81DD, 0xF5F1, 0x8618, 0xF5F2, 0x862A, 0xF5F3, 0x8626, + 0xF5F4, 0x861F, 0xF5F5, 0x8623, 0xF5F6, 0x861C, 0xF5F7, 0x8619, 0xF5F8, 0x8627, 0xF5F9, 0x862E, 0xF5FA, 0x8621, 0xF5FB, 0x8620, + 0xF5FC, 0x8629, 0xF5FD, 0x861E, 0xF5FE, 0x8625, 0xF640, 0x8829, 0xF641, 0x881D, 0xF642, 0x881B, 0xF643, 0x8820, 0xF644, 0x8824, + 0xF645, 0x881C, 0xF646, 0x882B, 0xF647, 0x884A, 0xF648, 0x896D, 0xF649, 0x8969, 0xF64A, 0x896E, 0xF64B, 0x896B, 0xF64C, 0x89FA, + 0xF64D, 0x8B79, 0xF64E, 0x8B78, 0xF64F, 0x8B45, 0xF650, 0x8B7A, 0xF651, 0x8B7B, 0xF652, 0x8D10, 0xF653, 0x8D14, 0xF654, 0x8DAF, + 0xF655, 0x8E8E, 0xF656, 0x8E8C, 0xF657, 0x8F5E, 0xF658, 0x8F5B, 0xF659, 0x8F5D, 0xF65A, 0x9146, 0xF65B, 0x9144, 0xF65C, 0x9145, + 0xF65D, 0x91B9, 0xF65E, 0x943F, 0xF65F, 0x943B, 0xF660, 0x9436, 0xF661, 0x9429, 0xF662, 0x943D, 0xF663, 0x943C, 0xF664, 0x9430, + 0xF665, 0x9439, 0xF666, 0x942A, 0xF667, 0x9437, 0xF668, 0x942C, 0xF669, 0x9440, 0xF66A, 0x9431, 0xF66B, 0x95E5, 0xF66C, 0x95E4, + 0xF66D, 0x95E3, 0xF66E, 0x9735, 0xF66F, 0x973A, 0xF670, 0x97BF, 0xF671, 0x97E1, 0xF672, 0x9864, 0xF673, 0x98C9, 0xF674, 0x98C6, + 0xF675, 0x98C0, 0xF676, 0x9958, 0xF677, 0x9956, 0xF678, 0x9A39, 0xF679, 0x9A3D, 0xF67A, 0x9A46, 0xF67B, 0x9A44, 0xF67C, 0x9A42, + 0xF67D, 0x9A41, 0xF67E, 0x9A3A, 0xF6A1, 0x9A3F, 0xF6A2, 0x9ACD, 0xF6A3, 0x9B15, 0xF6A4, 0x9B17, 0xF6A5, 0x9B18, 0xF6A6, 0x9B16, + 0xF6A7, 0x9B3A, 0xF6A8, 0x9B52, 0xF6A9, 0x9C2B, 0xF6AA, 0x9C1D, 0xF6AB, 0x9C1C, 0xF6AC, 0x9C2C, 0xF6AD, 0x9C23, 0xF6AE, 0x9C28, + 0xF6AF, 0x9C29, 0xF6B0, 0x9C24, 0xF6B1, 0x9C21, 0xF6B2, 0x9DB7, 0xF6B3, 0x9DB6, 0xF6B4, 0x9DBC, 0xF6B5, 0x9DC1, 0xF6B6, 0x9DC7, + 0xF6B7, 0x9DCA, 0xF6B8, 0x9DCF, 0xF6B9, 0x9DBE, 0xF6BA, 0x9DC5, 0xF6BB, 0x9DC3, 0xF6BC, 0x9DBB, 0xF6BD, 0x9DB5, 0xF6BE, 0x9DCE, + 0xF6BF, 0x9DB9, 0xF6C0, 0x9DBA, 0xF6C1, 0x9DAC, 0xF6C2, 0x9DC8, 0xF6C3, 0x9DB1, 0xF6C4, 0x9DAD, 0xF6C5, 0x9DCC, 0xF6C6, 0x9DB3, + 0xF6C7, 0x9DCD, 0xF6C8, 0x9DB2, 0xF6C9, 0x9E7A, 0xF6CA, 0x9E9C, 0xF6CB, 0x9EEB, 0xF6CC, 0x9EEE, 0xF6CD, 0x9EED, 0xF6CE, 0x9F1B, + 0xF6CF, 0x9F18, 0xF6D0, 0x9F1A, 0xF6D1, 0x9F31, 0xF6D2, 0x9F4E, 0xF6D3, 0x9F65, 0xF6D4, 0x9F64, 0xF6D5, 0x9F92, 0xF6D6, 0x4EB9, + 0xF6D7, 0x56C6, 0xF6D8, 0x56C5, 0xF6D9, 0x56CB, 0xF6DA, 0x5971, 0xF6DB, 0x5B4B, 0xF6DC, 0x5B4C, 0xF6DD, 0x5DD5, 0xF6DE, 0x5DD1, + 0xF6DF, 0x5EF2, 0xF6E0, 0x6521, 0xF6E1, 0x6520, 0xF6E2, 0x6526, 0xF6E3, 0x6522, 0xF6E4, 0x6B0B, 0xF6E5, 0x6B08, 0xF6E6, 0x6B09, + 0xF6E7, 0x6C0D, 0xF6E8, 0x7055, 0xF6E9, 0x7056, 0xF6EA, 0x7057, 0xF6EB, 0x7052, 0xF6EC, 0x721E, 0xF6ED, 0x721F, 0xF6EE, 0x72A9, + 0xF6EF, 0x737F, 0xF6F0, 0x74D8, 0xF6F1, 0x74D5, 0xF6F2, 0x74D9, 0xF6F3, 0x74D7, 0xF6F4, 0x766D, 0xF6F5, 0x76AD, 0xF6F6, 0x7935, + 0xF6F7, 0x79B4, 0xF6F8, 0x7A70, 0xF6F9, 0x7A71, 0xF6FA, 0x7C57, 0xF6FB, 0x7C5C, 0xF6FC, 0x7C59, 0xF6FD, 0x7C5B, 0xF6FE, 0x7C5A, + 0xF740, 0x7CF4, 0xF741, 0x7CF1, 0xF742, 0x7E91, 0xF743, 0x7F4F, 0xF744, 0x7F87, 0xF745, 0x81DE, 0xF746, 0x826B, 0xF747, 0x8634, + 0xF748, 0x8635, 0xF749, 0x8633, 0xF74A, 0x862C, 0xF74B, 0x8632, 0xF74C, 0x8636, 0xF74D, 0x882C, 0xF74E, 0x8828, 0xF74F, 0x8826, + 0xF750, 0x882A, 0xF751, 0x8825, 0xF752, 0x8971, 0xF753, 0x89BF, 0xF754, 0x89BE, 0xF755, 0x89FB, 0xF756, 0x8B7E, 0xF757, 0x8B84, + 0xF758, 0x8B82, 0xF759, 0x8B86, 0xF75A, 0x8B85, 0xF75B, 0x8B7F, 0xF75C, 0x8D15, 0xF75D, 0x8E95, 0xF75E, 0x8E94, 0xF75F, 0x8E9A, + 0xF760, 0x8E92, 0xF761, 0x8E90, 0xF762, 0x8E96, 0xF763, 0x8E97, 0xF764, 0x8F60, 0xF765, 0x8F62, 0xF766, 0x9147, 0xF767, 0x944C, + 0xF768, 0x9450, 0xF769, 0x944A, 0xF76A, 0x944B, 0xF76B, 0x944F, 0xF76C, 0x9447, 0xF76D, 0x9445, 0xF76E, 0x9448, 0xF76F, 0x9449, + 0xF770, 0x9446, 0xF771, 0x973F, 0xF772, 0x97E3, 0xF773, 0x986A, 0xF774, 0x9869, 0xF775, 0x98CB, 0xF776, 0x9954, 0xF777, 0x995B, + 0xF778, 0x9A4E, 0xF779, 0x9A53, 0xF77A, 0x9A54, 0xF77B, 0x9A4C, 0xF77C, 0x9A4F, 0xF77D, 0x9A48, 0xF77E, 0x9A4A, 0xF7A1, 0x9A49, + 0xF7A2, 0x9A52, 0xF7A3, 0x9A50, 0xF7A4, 0x9AD0, 0xF7A5, 0x9B19, 0xF7A6, 0x9B2B, 0xF7A7, 0x9B3B, 0xF7A8, 0x9B56, 0xF7A9, 0x9B55, + 0xF7AA, 0x9C46, 0xF7AB, 0x9C48, 0xF7AC, 0x9C3F, 0xF7AD, 0x9C44, 0xF7AE, 0x9C39, 0xF7AF, 0x9C33, 0xF7B0, 0x9C41, 0xF7B1, 0x9C3C, + 0xF7B2, 0x9C37, 0xF7B3, 0x9C34, 0xF7B4, 0x9C32, 0xF7B5, 0x9C3D, 0xF7B6, 0x9C36, 0xF7B7, 0x9DDB, 0xF7B8, 0x9DD2, 0xF7B9, 0x9DDE, + 0xF7BA, 0x9DDA, 0xF7BB, 0x9DCB, 0xF7BC, 0x9DD0, 0xF7BD, 0x9DDC, 0xF7BE, 0x9DD1, 0xF7BF, 0x9DDF, 0xF7C0, 0x9DE9, 0xF7C1, 0x9DD9, + 0xF7C2, 0x9DD8, 0xF7C3, 0x9DD6, 0xF7C4, 0x9DF5, 0xF7C5, 0x9DD5, 0xF7C6, 0x9DDD, 0xF7C7, 0x9EB6, 0xF7C8, 0x9EF0, 0xF7C9, 0x9F35, + 0xF7CA, 0x9F33, 0xF7CB, 0x9F32, 0xF7CC, 0x9F42, 0xF7CD, 0x9F6B, 0xF7CE, 0x9F95, 0xF7CF, 0x9FA2, 0xF7D0, 0x513D, 0xF7D1, 0x5299, + 0xF7D2, 0x58E8, 0xF7D3, 0x58E7, 0xF7D4, 0x5972, 0xF7D5, 0x5B4D, 0xF7D6, 0x5DD8, 0xF7D7, 0x882F, 0xF7D8, 0x5F4F, 0xF7D9, 0x6201, + 0xF7DA, 0x6203, 0xF7DB, 0x6204, 0xF7DC, 0x6529, 0xF7DD, 0x6525, 0xF7DE, 0x6596, 0xF7DF, 0x66EB, 0xF7E0, 0x6B11, 0xF7E1, 0x6B12, + 0xF7E2, 0x6B0F, 0xF7E3, 0x6BCA, 0xF7E4, 0x705B, 0xF7E5, 0x705A, 0xF7E6, 0x7222, 0xF7E7, 0x7382, 0xF7E8, 0x7381, 0xF7E9, 0x7383, + 0xF7EA, 0x7670, 0xF7EB, 0x77D4, 0xF7EC, 0x7C67, 0xF7ED, 0x7C66, 0xF7EE, 0x7E95, 0xF7EF, 0x826C, 0xF7F0, 0x863A, 0xF7F1, 0x8640, + 0xF7F2, 0x8639, 0xF7F3, 0x863C, 0xF7F4, 0x8631, 0xF7F5, 0x863B, 0xF7F6, 0x863E, 0xF7F7, 0x8830, 0xF7F8, 0x8832, 0xF7F9, 0x882E, + 0xF7FA, 0x8833, 0xF7FB, 0x8976, 0xF7FC, 0x8974, 0xF7FD, 0x8973, 0xF7FE, 0x89FE, 0xF840, 0x8B8C, 0xF841, 0x8B8E, 0xF842, 0x8B8B, + 0xF843, 0x8B88, 0xF844, 0x8C45, 0xF845, 0x8D19, 0xF846, 0x8E98, 0xF847, 0x8F64, 0xF848, 0x8F63, 0xF849, 0x91BC, 0xF84A, 0x9462, + 0xF84B, 0x9455, 0xF84C, 0x945D, 0xF84D, 0x9457, 0xF84E, 0x945E, 0xF84F, 0x97C4, 0xF850, 0x97C5, 0xF851, 0x9800, 0xF852, 0x9A56, + 0xF853, 0x9A59, 0xF854, 0x9B1E, 0xF855, 0x9B1F, 0xF856, 0x9B20, 0xF857, 0x9C52, 0xF858, 0x9C58, 0xF859, 0x9C50, 0xF85A, 0x9C4A, + 0xF85B, 0x9C4D, 0xF85C, 0x9C4B, 0xF85D, 0x9C55, 0xF85E, 0x9C59, 0xF85F, 0x9C4C, 0xF860, 0x9C4E, 0xF861, 0x9DFB, 0xF862, 0x9DF7, + 0xF863, 0x9DEF, 0xF864, 0x9DE3, 0xF865, 0x9DEB, 0xF866, 0x9DF8, 0xF867, 0x9DE4, 0xF868, 0x9DF6, 0xF869, 0x9DE1, 0xF86A, 0x9DEE, + 0xF86B, 0x9DE6, 0xF86C, 0x9DF2, 0xF86D, 0x9DF0, 0xF86E, 0x9DE2, 0xF86F, 0x9DEC, 0xF870, 0x9DF4, 0xF871, 0x9DF3, 0xF872, 0x9DE8, + 0xF873, 0x9DED, 0xF874, 0x9EC2, 0xF875, 0x9ED0, 0xF876, 0x9EF2, 0xF877, 0x9EF3, 0xF878, 0x9F06, 0xF879, 0x9F1C, 0xF87A, 0x9F38, + 0xF87B, 0x9F37, 0xF87C, 0x9F36, 0xF87D, 0x9F43, 0xF87E, 0x9F4F, 0xF8A1, 0x9F71, 0xF8A2, 0x9F70, 0xF8A3, 0x9F6E, 0xF8A4, 0x9F6F, + 0xF8A5, 0x56D3, 0xF8A6, 0x56CD, 0xF8A7, 0x5B4E, 0xF8A8, 0x5C6D, 0xF8A9, 0x652D, 0xF8AA, 0x66ED, 0xF8AB, 0x66EE, 0xF8AC, 0x6B13, + 0xF8AD, 0x705F, 0xF8AE, 0x7061, 0xF8AF, 0x705D, 0xF8B0, 0x7060, 0xF8B1, 0x7223, 0xF8B2, 0x74DB, 0xF8B3, 0x74E5, 0xF8B4, 0x77D5, + 0xF8B5, 0x7938, 0xF8B6, 0x79B7, 0xF8B7, 0x79B6, 0xF8B8, 0x7C6A, 0xF8B9, 0x7E97, 0xF8BA, 0x7F89, 0xF8BB, 0x826D, 0xF8BC, 0x8643, + 0xF8BD, 0x8838, 0xF8BE, 0x8837, 0xF8BF, 0x8835, 0xF8C0, 0x884B, 0xF8C1, 0x8B94, 0xF8C2, 0x8B95, 0xF8C3, 0x8E9E, 0xF8C4, 0x8E9F, + 0xF8C5, 0x8EA0, 0xF8C6, 0x8E9D, 0xF8C7, 0x91BE, 0xF8C8, 0x91BD, 0xF8C9, 0x91C2, 0xF8CA, 0x946B, 0xF8CB, 0x9468, 0xF8CC, 0x9469, + 0xF8CD, 0x96E5, 0xF8CE, 0x9746, 0xF8CF, 0x9743, 0xF8D0, 0x9747, 0xF8D1, 0x97C7, 0xF8D2, 0x97E5, 0xF8D3, 0x9A5E, 0xF8D4, 0x9AD5, + 0xF8D5, 0x9B59, 0xF8D6, 0x9C63, 0xF8D7, 0x9C67, 0xF8D8, 0x9C66, 0xF8D9, 0x9C62, 0xF8DA, 0x9C5E, 0xF8DB, 0x9C60, 0xF8DC, 0x9E02, + 0xF8DD, 0x9DFE, 0xF8DE, 0x9E07, 0xF8DF, 0x9E03, 0xF8E0, 0x9E06, 0xF8E1, 0x9E05, 0xF8E2, 0x9E00, 0xF8E3, 0x9E01, 0xF8E4, 0x9E09, + 0xF8E5, 0x9DFF, 0xF8E6, 0x9DFD, 0xF8E7, 0x9E04, 0xF8E8, 0x9EA0, 0xF8E9, 0x9F1E, 0xF8EA, 0x9F46, 0xF8EB, 0x9F74, 0xF8EC, 0x9F75, + 0xF8ED, 0x9F76, 0xF8EE, 0x56D4, 0xF8EF, 0x652E, 0xF8F0, 0x65B8, 0xF8F1, 0x6B18, 0xF8F2, 0x6B19, 0xF8F3, 0x6B17, 0xF8F4, 0x6B1A, + 0xF8F5, 0x7062, 0xF8F6, 0x7226, 0xF8F7, 0x72AA, 0xF8F8, 0x77D8, 0xF8F9, 0x77D9, 0xF8FA, 0x7939, 0xF8FB, 0x7C69, 0xF8FC, 0x7C6B, + 0xF8FD, 0x7CF6, 0xF8FE, 0x7E9A, 0xF940, 0x7E98, 0xF941, 0x7E9B, 0xF942, 0x7E99, 0xF943, 0x81E0, 0xF944, 0x81E1, 0xF945, 0x8646, + 0xF946, 0x8647, 0xF947, 0x8648, 0xF948, 0x8979, 0xF949, 0x897A, 0xF94A, 0x897C, 0xF94B, 0x897B, 0xF94C, 0x89FF, 0xF94D, 0x8B98, + 0xF94E, 0x8B99, 0xF94F, 0x8EA5, 0xF950, 0x8EA4, 0xF951, 0x8EA3, 0xF952, 0x946E, 0xF953, 0x946D, 0xF954, 0x946F, 0xF955, 0x9471, + 0xF956, 0x9473, 0xF957, 0x9749, 0xF958, 0x9872, 0xF959, 0x995F, 0xF95A, 0x9C68, 0xF95B, 0x9C6E, 0xF95C, 0x9C6D, 0xF95D, 0x9E0B, + 0xF95E, 0x9E0D, 0xF95F, 0x9E10, 0xF960, 0x9E0F, 0xF961, 0x9E12, 0xF962, 0x9E11, 0xF963, 0x9EA1, 0xF964, 0x9EF5, 0xF965, 0x9F09, + 0xF966, 0x9F47, 0xF967, 0x9F78, 0xF968, 0x9F7B, 0xF969, 0x9F7A, 0xF96A, 0x9F79, 0xF96B, 0x571E, 0xF96C, 0x7066, 0xF96D, 0x7C6F, + 0xF96E, 0x883C, 0xF96F, 0x8DB2, 0xF970, 0x8EA6, 0xF971, 0x91C3, 0xF972, 0x9474, 0xF973, 0x9478, 0xF974, 0x9476, 0xF975, 0x9475, + 0xF976, 0x9A60, 0xF977, 0x9C74, 0xF978, 0x9C73, 0xF979, 0x9C71, 0xF97A, 0x9C75, 0xF97B, 0x9E14, 0xF97C, 0x9E13, 0xF97D, 0x9EF6, + 0xF97E, 0x9F0A, 0xF9A1, 0x9FA4, 0xF9A2, 0x7068, 0xF9A3, 0x7065, 0xF9A4, 0x7CF7, 0xF9A5, 0x866A, 0xF9A6, 0x883E, 0xF9A7, 0x883D, + 0xF9A8, 0x883F, 0xF9A9, 0x8B9E, 0xF9AA, 0x8C9C, 0xF9AB, 0x8EA9, 0xF9AC, 0x8EC9, 0xF9AD, 0x974B, 0xF9AE, 0x9873, 0xF9AF, 0x9874, + 0xF9B0, 0x98CC, 0xF9B1, 0x9961, 0xF9B2, 0x99AB, 0xF9B3, 0x9A64, 0xF9B4, 0x9A66, 0xF9B5, 0x9A67, 0xF9B6, 0x9B24, 0xF9B7, 0x9E15, + 0xF9B8, 0x9E17, 0xF9B9, 0x9F48, 0xF9BA, 0x6207, 0xF9BB, 0x6B1E, 0xF9BC, 0x7227, 0xF9BD, 0x864C, 0xF9BE, 0x8EA8, 0xF9BF, 0x9482, + 0xF9C0, 0x9480, 0xF9C1, 0x9481, 0xF9C2, 0x9A69, 0xF9C3, 0x9A68, 0xF9C4, 0x9B2E, 0xF9C5, 0x9E19, 0xF9C6, 0x7229, 0xF9C7, 0x864B, + 0xF9C8, 0x8B9F, 0xF9C9, 0x9483, 0xF9CA, 0x9C79, 0xF9CB, 0x9EB7, 0xF9CC, 0x7675, 0xF9CD, 0x9A6B, 0xF9CE, 0x9C7A, 0xF9CF, 0x9E1D, + 0xF9D0, 0x7069, 0xF9D1, 0x706A, 0xF9D2, 0x9EA4, 0xF9D3, 0x9F7E, 0xF9D4, 0x9F49, 0xF9D5, 0x9F98, 0xF9D6, 0x7881, 0xF9D7, 0x92B9, + 0xF9D8, 0x88CF, 0xF9D9, 0x58BB, 0xF9DA, 0x6052, 0xF9DB, 0x7CA7, 0xF9DC, 0x5AFA, 0xF9DD, 0x2554, 0xF9DE, 0x2566, 0xF9DF, 0x2557, + 0xF9E0, 0x2560, 0xF9E1, 0x256C, 0xF9E2, 0x2563, 0xF9E3, 0x255A, 0xF9E4, 0x2569, 0xF9E5, 0x255D, 0xF9E6, 0x2552, 0xF9E7, 0x2564, + 0xF9E8, 0x2555, 0xF9E9, 0x255E, 0xF9EA, 0x256A, 0xF9EB, 0x2561, 0xF9EC, 0x2558, 0xF9ED, 0x2567, 0xF9EE, 0x255B, 0xF9EF, 0x2553, + 0xF9F0, 0x2565, 0xF9F1, 0x2556, 0xF9F2, 0x255F, 0xF9F3, 0x256B, 0xF9F4, 0x2562, 0xF9F5, 0x2559, 0xF9F6, 0x2568, 0xF9F7, 0x255C, + 0xF9F8, 0x2551, 0xF9F9, 0x2550, 0xF9FA, 0x256D, 0xF9FB, 0x256E, 0xF9FC, 0x2570, 0xF9FD, 0x256F, 0xF9FE, 0x2593, 0, 0 +}; +#endif + +#if FF_CODE_PAGE == 437 || FF_CODE_PAGE == 0 +static const WCHAR uc437[] = { /* CP437(U.S.) to Unicode conversion table */ + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 720 || FF_CODE_PAGE == 0 +static const WCHAR uc720[] = { /* CP720(Arabic) to Unicode conversion table */ + 0x0000, 0x0000, 0x00E9, 0x00E2, 0x0000, 0x00E0, 0x0000, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0651, 0x0652, 0x00F4, 0x00A4, 0x0640, 0x00FB, 0x00F9, 0x0621, 0x0622, 0x0623, 0x0624, 0x00A3, 0x0625, 0x0626, 0x0627, + 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x0636, 0x0637, 0x0638, 0x0639, 0x063A, 0x0641, 0x00B5, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649, 0x064A, + 0x2261, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, 0x0650, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 737 || FF_CODE_PAGE == 0 +static const WCHAR uc737[] = { /* CP737(Greek) to Unicode conversion table */ + 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, + 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, + 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C2, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03C9, 0x03AC, 0x03AD, 0x03AE, 0x03CA, 0x03AF, 0x03CC, 0x03CD, 0x03CB, 0x03CE, 0x0386, 0x0388, 0x0389, 0x038A, 0x038C, 0x038E, + 0x038F, 0x00B1, 0x2265, 0x2264, 0x03AA, 0x03AB, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 771 || FF_CODE_PAGE == 0 +static const WCHAR uc771[] = { /* CP771(KBL) to Unicode conversion table */ + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x2558, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x0104, 0x0105, 0x010C, 0x010D, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, + 0x0118, 0x0119, 0x0116, 0x0117, 0x012E, 0x012F, 0x0160, 0x0161, 0x0172, 0x0173, 0x016A, 0x016B, 0x017D, 0x017E, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 775 || FF_CODE_PAGE == 0 +static const WCHAR uc775[] = { /* CP775(Baltic) to Unicode conversion table */ + 0x0106, 0x00FC, 0x00E9, 0x0101, 0x00E4, 0x0123, 0x00E5, 0x0107, 0x0142, 0x0113, 0x0156, 0x0157, 0x012B, 0x0179, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x014D, 0x00F6, 0x0122, 0x00A2, 0x015A, 0x015B, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x00A4, + 0x0100, 0x012A, 0x00F3, 0x017B, 0x017C, 0x017A, 0x201D, 0x00A6, 0x00A9, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x0141, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0104, 0x010C, 0x0118, 0x0116, 0x2563, 0x2551, 0x2557, 0x255D, 0x012E, 0x0160, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0172, 0x016A, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x017D, + 0x0105, 0x010D, 0x0119, 0x0117, 0x012F, 0x0161, 0x0173, 0x016B, 0x017E, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x00D3, 0x00DF, 0x014C, 0x0143, 0x00F5, 0x00D5, 0x00B5, 0x0144, 0x0136, 0x0137, 0x013B, 0x013C, 0x0146, 0x0112, 0x0145, 0x2019, + 0x00AD, 0x00B1, 0x201C, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x201E, 0x00B0, 0x2219, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 850 || FF_CODE_PAGE == 0 +static const WCHAR uc850[] = { /* CP850(Latin 1) to Unicode conversion table */ + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, + 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE, 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, + 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE, 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, + 0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 852 || FF_CODE_PAGE == 0 +static const WCHAR uc852[] = { /* CP852(Latin 2) to Unicode conversion table */ + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x016F, 0x0107, 0x00E7, 0x0142, 0x00EB, 0x0150, 0x0151, 0x00EE, 0x0179, 0x00C4, 0x0106, + 0x00C9, 0x0139, 0x013A, 0x00F4, 0x00F6, 0x013D, 0x013E, 0x015A, 0x015B, 0x00D6, 0x00DC, 0x0164, 0x0165, 0x0141, 0x00D7, 0x010D, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x0104, 0x0105, 0x017D, 0x017E, 0x0118, 0x0119, 0x00AC, 0x017A, 0x010C, 0x015F, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x011A, 0x015E, 0x2563, 0x2551, 0x2557, 0x255D, 0x017B, 0x017C, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0102, 0x0103, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, + 0x0111, 0x0110, 0x010E, 0x00CB, 0x010F, 0x0147, 0x00CD, 0x00CE, 0x011B, 0x2518, 0x250C, 0x2588, 0x2584, 0x0162, 0x016E, 0x2580, + 0x00D3, 0x00DF, 0x00D4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161, 0x0154, 0x00DA, 0x0155, 0x0170, 0x00FD, 0x00DD, 0x0163, 0x00B4, + 0x00AD, 0x02DD, 0x02DB, 0x02C7, 0x02D8, 0x00A7, 0x00F7, 0x00B8, 0x00B0, 0x00A8, 0x02D9, 0x0171, 0x0158, 0x0159, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 855 || FF_CODE_PAGE == 0 +static const WCHAR uc855[] = { /* CP855(Cyrillic) to Unicode conversion table */ + 0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404, 0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408, + 0x0459, 0x0409, 0x045A, 0x040A, 0x045B, 0x040B, 0x045C, 0x040C, 0x045E, 0x040E, 0x045F, 0x040F, 0x044E, 0x042E, 0x044A, 0x042A, + 0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414, 0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438, 0x0418, 0x2563, 0x2551, 0x2557, 0x255D, 0x0439, 0x0419, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x043A, 0x041A, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, + 0x043B, 0x041B, 0x043C, 0x041C, 0x043D, 0x041D, 0x043E, 0x041E, 0x043F, 0x2518, 0x250C, 0x2588, 0x2584, 0x041F, 0x044F, 0x2580, + 0x042F, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443, 0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044C, 0x042C, 0x2116, + 0x00AD, 0x044B, 0x042B, 0x0437, 0x0417, 0x0448, 0x0428, 0x044D, 0x042D, 0x0449, 0x0429, 0x0447, 0x0427, 0x00A7, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 857 || FF_CODE_PAGE == 0 +static const WCHAR uc857[] = { /* CP857(Turkish) to Unicode conversion table */ + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0131, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x0130, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x015E, 0x015F, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x011E, 0x011F, 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, + 0x00BA, 0x00AA, 0x00CA, 0x00CB, 0x00C8, 0x0000, 0x00CD, 0x00CE, 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, + 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x0000, 0x00D7, 0x00DA, 0x00DB, 0x00D9, 0x00EC, 0x00FF, 0x00AF, 0x00B4, + 0x00AD, 0x00B1, 0x0000, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 860 || FF_CODE_PAGE == 0 +static const WCHAR uc860[] = { /* CP860(Portuguese) to Unicode conversion table */ + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E3, 0x00E0, 0x00C1, 0x00E7, 0x00EA, 0x00CA, 0x00E8, 0x00CD, 0x00D4, 0x00EC, 0x00C3, 0x00C2, + 0x00C9, 0x00C0, 0x00C8, 0x00F4, 0x00F5, 0x00F2, 0x00DA, 0x00F9, 0x00CC, 0x00D5, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x20A7, 0x00D3, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x00D2, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x2558, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 861 || FF_CODE_PAGE == 0 +static const WCHAR uc861[] = { /* CP861(Icelandic) to Unicode conversion table */ + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E6, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00D0, 0x00F0, 0x00DE, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00FE, 0x00FB, 0x00DD, 0x00FD, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00C1, 0x00CD, 0x00D3, 0x00DA, 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 862 || FF_CODE_PAGE == 0 +static const WCHAR uc862[] = { /* CP862(Hebrew) to Unicode conversion table */ + 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, + 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, 0x05E8, 0x05E9, 0x05EA, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 863 || FF_CODE_PAGE == 0 +static const WCHAR uc863[] = { /* CP863(Canadian French) to Unicode conversion table */ + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00C2, 0x00E0, 0x00B6, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x2017, 0x00C0, + 0x00C9, 0x00C8, 0x00CA, 0x00F4, 0x00CB, 0x00CF, 0x00FB, 0x00F9, 0x00A4, 0x00D4, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x00DB, 0x0192, + 0x00A6, 0x00B4, 0x00F3, 0x00FA, 0x00A8, 0x00BB, 0x00B3, 0x00AF, 0x00CE, 0x3210, 0x00AC, 0x00BD, 0x00BC, 0x00BE, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2219, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 864 || FF_CODE_PAGE == 0 +static const WCHAR uc864[] = { /* CP864(Arabic) to Unicode conversion table */ + 0x00B0, 0x00B7, 0x2219, 0x221A, 0x2592, 0x2500, 0x2502, 0x253C, 0x2524, 0x252C, 0x251C, 0x2534, 0x2510, 0x250C, 0x2514, 0x2518, + 0x03B2, 0x221E, 0x03C6, 0x00B1, 0x00BD, 0x00BC, 0x2248, 0x00AB, 0x00BB, 0xFEF7, 0xFEF8, 0x0000, 0x0000, 0xFEFB, 0xFEFC, 0x0000, + 0x00A0, 0x00AD, 0xFE82, 0x00A3, 0x00A4, 0xFE84, 0x0000, 0x20AC, 0xFE8E, 0xFE8F, 0xFE95, 0xFE99, 0x060C, 0xFE9D, 0xFEA1, 0xFEA5, + 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 0x0668, 0x0669, 0xFED1, 0x061B, 0xFEB1, 0xFEB5, 0xFEB9, 0x061F, + 0x00A2, 0xFE80, 0xFE81, 0xFE83, 0xFE85, 0xFECA, 0xFE8B, 0xFE8D, 0xFE91, 0xFE93, 0xFE97, 0xFE9B, 0xFE9F, 0xFEA3, 0xFEA7, 0xFEA9, + 0xFEAB, 0xFEAD, 0xFEAF, 0xFEB3, 0xFEB7, 0xFEBB, 0xFEBF, 0xFEC1, 0xFEC5, 0xFECB, 0xFECF, 0x00A6, 0x00AC, 0x00F7, 0x00D7, 0xFEC9, + 0x0640, 0xFED3, 0xFED7, 0xFEDB, 0xFEDF, 0xFEE3, 0xFEE7, 0xFEEB, 0xFEED, 0xFEEF, 0xFEF3, 0xFEBD, 0xFECC, 0xFECE, 0xFECD, 0xFEE1, + 0xFE7D, 0x0651, 0xFEE5, 0xFEE9, 0xFEEC, 0xFEF0, 0xFEF2, 0xFED0, 0xFED5, 0xFEF5, 0xFEF6, 0xFEDD, 0xFED9, 0xFEF1, 0x25A0, 0x0000 +}; +#endif +#if FF_CODE_PAGE == 865 || FF_CODE_PAGE == 0 +static const WCHAR uc865[] = { /* CP865(Nordic) to Unicode conversion table */ + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, + 0x00C5, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00A4, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x2558, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 866 || FF_CODE_PAGE == 0 +static const WCHAR uc866[] = { /* CP866(Russian) to Unicode conversion table */ + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, + 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x2116, 0x00A4, 0x25A0, 0x00A0 +}; +#endif +#if FF_CODE_PAGE == 869 || FF_CODE_PAGE == 0 +static const WCHAR uc869[] = { /* CP869(Greek 2) to Unicode conversion table */ + 0x00B7, 0x00B7, 0x00B7, 0x00B7, 0x00B7, 0x00B7, 0x0386, 0x00B7, 0x00B7, 0x00AC, 0x00A6, 0x2018, 0x2019, 0x0388, 0x2015, 0x0389, + 0x038A, 0x03AA, 0x038C, 0x00B7, 0x00B7, 0x038E, 0x03AB, 0x00A9, 0x038F, 0x00B2, 0x00B3, 0x03AC, 0x00A3, 0x03AD, 0x03AE, 0x03AF, + 0x03CA, 0x0390, 0x03CC, 0x03CD, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x00BD, 0x0398, 0x0399, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039A, 0x039B, 0x039C, 0x039D, 0x2563, 0x2551, 0x2557, 0x255D, 0x039E, 0x039F, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0A30, 0x03A1, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x03A3, + 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2, 0x03B3, 0x2518, 0x250C, 0x2588, 0x2584, 0x03B4, 0x03B5, 0x2580, + 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C2, 0x03C4, 0x0384, + 0x00AD, 0x00B1, 0x03C5, 0x03C6, 0x03C7, 0x00A7, 0x03C8, 0x0385, 0x00B0, 0x00A8, 0x03C9, 0x03CB, 0x03B0, 0x03CE, 0x25A0, 0x00A0 +}; +#endif + + + + +/*------------------------------------------------------------------------*/ +/* OEM <==> Unicode conversions for static code page configuration */ +/* SBCS fixed code page */ +/*------------------------------------------------------------------------*/ + +#if FF_CODE_PAGE != 0 && FF_CODE_PAGE < 900 +WCHAR ff_uni2oem ( /* Returns OEM code character, zero on error */ + DWORD uni, /* UTF-16 encoded character to be converted */ + WORD cp /* Code page for the conversion */ +) +{ + WCHAR c = 0; + const WCHAR *p = CVTBL(uc, FF_CODE_PAGE); + + + if (uni < 0x80) { /* ASCII? */ + c = (WCHAR)uni; + + } else { /* Non-ASCII */ + if (uni < 0x10000 && cp == FF_CODE_PAGE) { /* Is it in BMP and valid code page? */ + for (c = 0; c < 0x80 && uni != p[c]; c++) ; + c = (c + 0x80) & 0xFF; + } + } + + return c; +} + +WCHAR ff_oem2uni ( /* Returns Unicode character in UTF-16, zero on error */ + WCHAR oem, /* OEM code to be converted */ + WORD cp /* Code page for the conversion */ +) +{ + WCHAR c = 0; + const WCHAR *p = CVTBL(uc, FF_CODE_PAGE); + + + if (oem < 0x80) { /* ASCII? */ + c = oem; + + } else { /* Extended char */ + if (cp == FF_CODE_PAGE) { /* Is it a valid code page? */ + if (oem < 0x100) c = p[oem - 0x80]; + } + } + + return c; +} + +#endif + + + +/*------------------------------------------------------------------------*/ +/* OEM <==> Unicode conversions for static code page configuration */ +/* DBCS fixed code page */ +/*------------------------------------------------------------------------*/ + +#if FF_CODE_PAGE >= 900 +WCHAR ff_uni2oem ( /* Returns OEM code character, zero on error */ + DWORD uni, /* UTF-16 encoded character to be converted */ + WORD cp /* Code page for the conversion */ +) +{ + const WCHAR *p; + WCHAR c = 0, uc; + UINT i = 0, n, li, hi; + + + if (uni < 0x80) { /* ASCII? */ + c = (WCHAR)uni; + + } else { /* Non-ASCII */ + if (uni < 0x10000 && cp == FF_CODE_PAGE) { /* Is it in BMP and valid code page? */ + uc = (WCHAR)uni; + p = CVTBL(uni2oem, FF_CODE_PAGE); + hi = sizeof CVTBL(uni2oem, FF_CODE_PAGE) / 4 - 1; + li = 0; + for (n = 16; n; n--) { + i = li + (hi - li) / 2; + if (uc == p[i * 2]) break; + if (uc > p[i * 2]) { + li = i; + } else { + hi = i; + } + } + if (n != 0) c = p[i * 2 + 1]; + } + } + + return c; +} + + +WCHAR ff_oem2uni ( /* Returns Unicode character in UTF-16, zero on error */ + WCHAR oem, /* OEM code to be converted */ + WORD cp /* Code page for the conversion */ +) +{ + const WCHAR *p; + WCHAR c = 0; + UINT i = 0, n, li, hi; + + + if (oem < 0x80) { /* ASCII? */ + c = oem; + + } else { /* Extended char */ + if (cp == FF_CODE_PAGE) { /* Is it valid code page? */ + p = CVTBL(oem2uni, FF_CODE_PAGE); + hi = sizeof CVTBL(oem2uni, FF_CODE_PAGE) / 4 - 1; + li = 0; + for (n = 16; n; n--) { + i = li + (hi - li) / 2; + if (oem == p[i * 2]) break; + if (oem > p[i * 2]) { + li = i; + } else { + hi = i; + } + } + if (n != 0) c = p[i * 2 + 1]; + } + } + + return c; +} +#endif + + + +/*------------------------------------------------------------------------*/ +/* OEM <==> Unicode conversions for dynamic code page configuration */ +/*------------------------------------------------------------------------*/ + +#if FF_CODE_PAGE == 0 + +static const WORD cp_code[] = { 437, 720, 737, 771, 775, 850, 852, 855, 857, 860, 861, 862, 863, 864, 865, 866, 869, 0}; +static const WCHAR* const cp_table[] = {uc437, uc720, uc737, uc771, uc775, uc850, uc852, uc855, uc857, uc860, uc861, uc862, uc863, uc864, uc865, uc866, uc869, 0}; + + +WCHAR ff_uni2oem ( /* Returns OEM code character, zero on error */ + DWORD uni, /* UTF-16 encoded character to be converted */ + WORD cp /* Code page for the conversion */ +) +{ + const WCHAR *p; + WCHAR c = 0, uc; + UINT i, n, li, hi; + + + if (uni < 0x80) { /* ASCII? */ + c = (WCHAR)uni; + + } else { /* Non-ASCII */ + if (uni < 0x10000) { /* Is it in BMP? */ + uc = (WCHAR)uni; + p = 0; + if (cp < 900) { /* SBCS */ + for (i = 0; cp_code[i] != 0 && cp_code[i] != cp; i++) ; /* Get conversion table */ + p = cp_table[i]; + if (p) { /* Is it valid code page ? */ + for (c = 0; c < 0x80 && uc != p[c]; c++) ; /* Find OEM code in the table */ + c = (c + 0x80) & 0xFF; + } + } else { /* DBCS */ + switch (cp) { /* Get conversion table */ + case 932 : p = uni2oem932; hi = sizeof uni2oem932 / 4 - 1; break; + case 936 : p = uni2oem936; hi = sizeof uni2oem936 / 4 - 1; break; + case 949 : p = uni2oem949; hi = sizeof uni2oem949 / 4 - 1; break; + case 950 : p = uni2oem950; hi = sizeof uni2oem950 / 4 - 1; break; + } + if (p) { /* Is it valid code page? */ + li = 0; + for (n = 16; n; n--) { /* Find OEM code */ + i = li + (hi - li) / 2; + if (uc == p[i * 2]) break; + if (uc > p[i * 2]) { + li = i; + } else { + hi = i; + } + } + if (n != 0) c = p[i * 2 + 1]; + } + } + } + } + + return c; +} + + +WCHAR ff_oem2uni ( /* Returns Unicode character in UTF-16, zero on error */ + WCHAR oem, /* OEM code to be converted (DBC if >=0x100) */ + WORD cp /* Code page for the conversion */ +) +{ + const WCHAR *p; + WCHAR c = 0; + UINT i, n, li, hi; + + + if (oem < 0x80) { /* ASCII? */ + c = oem; + + } else { /* Extended char */ + p = 0; + if (cp < 900) { /* SBCS */ + for (i = 0; cp_code[i] != 0 && cp_code[i] != cp; i++) ; /* Get table */ + p = cp_table[i]; + if (p) { /* Is it a valid CP ? */ + if (oem < 0x100) c = p[oem - 0x80]; + } + } else { /* DBCS */ + switch (cp) { + case 932 : p = oem2uni932; hi = sizeof oem2uni932 / 4 - 1; break; + case 936 : p = oem2uni936; hi = sizeof oem2uni936 / 4 - 1; break; + case 949 : p = oem2uni949; hi = sizeof oem2uni949 / 4 - 1; break; + case 950 : p = oem2uni950; hi = sizeof oem2uni950 / 4 - 1; break; + } + if (p) { + li = 0; + for (n = 16; n; n--) { + i = li + (hi - li) / 2; + if (oem == p[i * 2]) break; + if (oem > p[i * 2]) { + li = i; + } else { + hi = i; + } + } + if (n != 0) c = p[i * 2 + 1]; + } + } + } + + return c; +} +#endif + + + +/*------------------------------------------------------------------------*/ +/* Unicode up-case conversion */ +/*------------------------------------------------------------------------*/ + +DWORD ff_wtoupper ( /* Returns up-converted code point */ + DWORD uni /* Unicode code point to be up-converted */ +) +{ + const WORD *p; + WORD uc, bc, nc, cmd; + static const WORD cvt1[] = { /* Compressed up conversion table for U+0000 - U+0FFF */ + /* Basic Latin */ + 0x0061,0x031A, + /* Latin-1 Supplement */ + 0x00E0,0x0317, + 0x00F8,0x0307, + 0x00FF,0x0001,0x0178, + /* Latin Extended-A */ + 0x0100,0x0130, + 0x0132,0x0106, + 0x0139,0x0110, + 0x014A,0x012E, + 0x0179,0x0106, + /* Latin Extended-B */ + 0x0180,0x004D,0x0243,0x0181,0x0182,0x0182,0x0184,0x0184,0x0186,0x0187,0x0187,0x0189,0x018A,0x018B,0x018B,0x018D,0x018E,0x018F,0x0190,0x0191,0x0191,0x0193,0x0194,0x01F6,0x0196,0x0197,0x0198,0x0198,0x023D,0x019B,0x019C,0x019D,0x0220,0x019F,0x01A0,0x01A0,0x01A2,0x01A2,0x01A4,0x01A4,0x01A6,0x01A7,0x01A7,0x01A9,0x01AA,0x01AB,0x01AC,0x01AC,0x01AE,0x01AF,0x01AF,0x01B1,0x01B2,0x01B3,0x01B3,0x01B5,0x01B5,0x01B7,0x01B8,0x01B8,0x01BA,0x01BB,0x01BC,0x01BC,0x01BE,0x01F7,0x01C0,0x01C1,0x01C2,0x01C3,0x01C4,0x01C5,0x01C4,0x01C7,0x01C8,0x01C7,0x01CA,0x01CB,0x01CA, + 0x01CD,0x0110, + 0x01DD,0x0001,0x018E, + 0x01DE,0x0112, + 0x01F3,0x0003,0x01F1,0x01F4,0x01F4, + 0x01F8,0x0128, + 0x0222,0x0112, + 0x023A,0x0009,0x2C65,0x023B,0x023B,0x023D,0x2C66,0x023F,0x0240,0x0241,0x0241, + 0x0246,0x010A, + /* IPA Extensions */ + 0x0253,0x0040,0x0181,0x0186,0x0255,0x0189,0x018A,0x0258,0x018F,0x025A,0x0190,0x025C,0x025D,0x025E,0x025F,0x0193,0x0261,0x0262,0x0194,0x0264,0x0265,0x0266,0x0267,0x0197,0x0196,0x026A,0x2C62,0x026C,0x026D,0x026E,0x019C,0x0270,0x0271,0x019D,0x0273,0x0274,0x019F,0x0276,0x0277,0x0278,0x0279,0x027A,0x027B,0x027C,0x2C64,0x027E,0x027F,0x01A6,0x0281,0x0282,0x01A9,0x0284,0x0285,0x0286,0x0287,0x01AE,0x0244,0x01B1,0x01B2,0x0245,0x028D,0x028E,0x028F,0x0290,0x0291,0x01B7, + /* Greek, Coptic */ + 0x037B,0x0003,0x03FD,0x03FE,0x03FF, + 0x03AC,0x0004,0x0386,0x0388,0x0389,0x038A, + 0x03B1,0x0311, + 0x03C2,0x0002,0x03A3,0x03A3, + 0x03C4,0x0308, + 0x03CC,0x0003,0x038C,0x038E,0x038F, + 0x03D8,0x0118, + 0x03F2,0x000A,0x03F9,0x03F3,0x03F4,0x03F5,0x03F6,0x03F7,0x03F7,0x03F9,0x03FA,0x03FA, + /* Cyrillic */ + 0x0430,0x0320, + 0x0450,0x0710, + 0x0460,0x0122, + 0x048A,0x0136, + 0x04C1,0x010E, + 0x04CF,0x0001,0x04C0, + 0x04D0,0x0144, + /* Armenian */ + 0x0561,0x0426, + + 0x0000 /* EOT */ + }; + static const WORD cvt2[] = { /* Compressed up conversion table for U+1000 - U+FFFF */ + /* Phonetic Extensions */ + 0x1D7D,0x0001,0x2C63, + /* Latin Extended Additional */ + 0x1E00,0x0196, + 0x1EA0,0x015A, + /* Greek Extended */ + 0x1F00,0x0608, + 0x1F10,0x0606, + 0x1F20,0x0608, + 0x1F30,0x0608, + 0x1F40,0x0606, + 0x1F51,0x0007,0x1F59,0x1F52,0x1F5B,0x1F54,0x1F5D,0x1F56,0x1F5F, + 0x1F60,0x0608, + 0x1F70,0x000E,0x1FBA,0x1FBB,0x1FC8,0x1FC9,0x1FCA,0x1FCB,0x1FDA,0x1FDB,0x1FF8,0x1FF9,0x1FEA,0x1FEB,0x1FFA,0x1FFB, + 0x1F80,0x0608, + 0x1F90,0x0608, + 0x1FA0,0x0608, + 0x1FB0,0x0004,0x1FB8,0x1FB9,0x1FB2,0x1FBC, + 0x1FCC,0x0001,0x1FC3, + 0x1FD0,0x0602, + 0x1FE0,0x0602, + 0x1FE5,0x0001,0x1FEC, + 0x1FF3,0x0001,0x1FFC, + /* Letterlike Symbols */ + 0x214E,0x0001,0x2132, + /* Number forms */ + 0x2170,0x0210, + 0x2184,0x0001,0x2183, + /* Enclosed Alphanumerics */ + 0x24D0,0x051A, + 0x2C30,0x042F, + /* Latin Extended-C */ + 0x2C60,0x0102, + 0x2C67,0x0106, 0x2C75,0x0102, + /* Coptic */ + 0x2C80,0x0164, + /* Georgian Supplement */ + 0x2D00,0x0826, + /* Full-width */ + 0xFF41,0x031A, + + 0x0000 /* EOT */ + }; + + + if (uni < 0x10000) { /* Is it in BMP? */ + uc = (WORD)uni; + p = uc < 0x1000 ? cvt1 : cvt2; + for (;;) { + bc = *p++; /* Get the block base */ + if (bc == 0 || uc < bc) break; /* Not matched? */ + nc = *p++; cmd = nc >> 8; nc &= 0xFF; /* Get processing command and block size */ + if (uc < bc + nc) { /* In the block? */ + switch (cmd) { + case 0: uc = p[uc - bc]; break; /* Table conversion */ + case 1: uc -= (uc - bc) & 1; break; /* Case pairs */ + case 2: uc -= 16; break; /* Shift -16 */ + case 3: uc -= 32; break; /* Shift -32 */ + case 4: uc -= 48; break; /* Shift -48 */ + case 5: uc -= 26; break; /* Shift -26 */ + case 6: uc += 8; break; /* Shift +8 */ + case 7: uc -= 80; break; /* Shift -80 */ + case 8: uc -= 0x1C60; break; /* Shift -0x1C60 */ + + /* add this for make pass */ + default :break; + } + break; + } + if (cmd == 0) p += nc; /* Skip table if needed */ + } + uni = uc; + } + + return uni; +} + + +#endif /* #if FF_USE_LFN */ diff --git a/components/freertos/CMakeLists.txt b/components/freertos/CMakeLists.txt new file mode 100644 index 00000000..69803553 --- /dev/null +++ b/components/freertos/CMakeLists.txt @@ -0,0 +1,61 @@ +################# Add global include ################# +list(APPEND ADD_INCLUDE +"${CMAKE_CURRENT_SOURCE_DIR}" +"${CMAKE_CURRENT_SOURCE_DIR}/include" +) +####################################################### + +################# Add private include ################# +# list(APPEND ADD_PRIVATE_INCLUDE +# "${CMAKE_SOURCE_DIR}/BSP_Common/ring_buffer" +# "${CMAKE_SOURCE_DIR}/BSP_Driver/BSP_${BOARD}_Driver/StdDriver/Inc" +# "${CMAKE_SOURCE_DIR}/BSP_Driver/BSP_${BOARD}_Driver/StdDriver/Inc" +# "${CMAKE_SOURCE_DIR}/BSP_Driver/BSP_${BOARD}_Driver/Peripherals" +# "${CMAKE_SOURCE_DIR}/BSP_Driver/BSP_${BOARD}_Driver/RISCV/Device/Bouffalo/${BOARD}/Startup" +# "${CMAKE_SOURCE_DIR}/BSP_Driver/BSP_${BOARD}_Driver/RISCV/Core/Include" +# ) +####################################################### + +############## Add current dir source files ########### +file(GLOB_RECURSE sources "${CMAKE_CURRENT_SOURCE_DIR}/croutine.c" +"${CMAKE_CURRENT_SOURCE_DIR}/croutine.c" +"${CMAKE_CURRENT_SOURCE_DIR}/event_groups.c" +"${CMAKE_CURRENT_SOURCE_DIR}/list.c" +"${CMAKE_CURRENT_SOURCE_DIR}/queue.c" +"${CMAKE_CURRENT_SOURCE_DIR}/tasks.c" +"${CMAKE_CURRENT_SOURCE_DIR}/timers.c" +"${CMAKE_CURRENT_SOURCE_DIR}/portable/MemMang/heap_5.c" +) +list(APPEND ADD_SRCS ${sources}) +# aux_source_directory(src ADD_SRCS) +# list(REMOVE_ITEM ADD_SRCS "${CMAKE_CURRENT_SOURCE_DIR}") +####################################################### + +########### Add required/dependent components ######### +#list(APPEND ADD_REQUIREMENTS BSP_${BOARD}_Driver) +####################################################### + +############ Add static libs ########################## +# if(CONFIG_COMPONENT1_INCLUDE_STATIC_LIB) +# list(APPEND ADD_STATIC_LIB "lib/libtest.a") +# endif() +####################################################### + +############ Add dynamic libs ######################### +# list(APPEND ADD_DYNAMIC_LIB "lib/arch/v831/libmaix_nn.so" +# "lib/arch/v831/libmaix_cam.so" +# ) +####################################################### + +############ Add global compile option ################ +#add components denpend on this component +# list(APPEND ADD_DEFINITIONS -DAAAAA222=1 +# -DAAAAA333=1) +####################################################### + +############ Add private compile option ################ +#add compile option for this component that won't affect other modules +# list(APPEND ADD_DEFINITIONS_PRIVATE -DAAAAA=1) +####################################################### + +generate_library() diff --git a/components/freertos/croutine.c b/components/freertos/croutine.c new file mode 100644 index 00000000..56c8ac29 --- /dev/null +++ b/components/freertos/croutine.c @@ -0,0 +1,353 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#include "FreeRTOS.h" +#include "task.h" +#include "croutine.h" + +/* Remove the whole file is co-routines are not being used. */ +#if( configUSE_CO_ROUTINES != 0 ) + +/* + * Some kernel aware debuggers require data to be viewed to be global, rather + * than file scope. + */ +#ifdef portREMOVE_STATIC_QUALIFIER + #define static +#endif + + +/* Lists for ready and blocked co-routines. --------------------*/ +static List_t pxReadyCoRoutineLists[ configMAX_CO_ROUTINE_PRIORITIES ]; /*< Prioritised ready co-routines. */ +static List_t xDelayedCoRoutineList1; /*< Delayed co-routines. */ +static List_t xDelayedCoRoutineList2; /*< Delayed co-routines (two lists are used - one for delays that have overflowed the current tick count. */ +static List_t * pxDelayedCoRoutineList; /*< Points to the delayed co-routine list currently being used. */ +static List_t * pxOverflowDelayedCoRoutineList; /*< Points to the delayed co-routine list currently being used to hold co-routines that have overflowed the current tick count. */ +static List_t xPendingReadyCoRoutineList; /*< Holds co-routines that have been readied by an external event. They cannot be added directly to the ready lists as the ready lists cannot be accessed by interrupts. */ + +/* Other file private variables. --------------------------------*/ +CRCB_t * pxCurrentCoRoutine = NULL; +static UBaseType_t uxTopCoRoutineReadyPriority = 0; +static TickType_t xCoRoutineTickCount = 0, xLastTickCount = 0, xPassedTicks = 0; + +/* The initial state of the co-routine when it is created. */ +#define corINITIAL_STATE ( 0 ) + +/* + * Place the co-routine represented by pxCRCB into the appropriate ready queue + * for the priority. It is inserted at the end of the list. + * + * This macro accesses the co-routine ready lists and therefore must not be + * used from within an ISR. + */ +#define prvAddCoRoutineToReadyQueue( pxCRCB ) \ +{ \ + if( pxCRCB->uxPriority > uxTopCoRoutineReadyPriority ) \ + { \ + uxTopCoRoutineReadyPriority = pxCRCB->uxPriority; \ + } \ + vListInsertEnd( ( List_t * ) &( pxReadyCoRoutineLists[ pxCRCB->uxPriority ] ), &( pxCRCB->xGenericListItem ) ); \ +} + +/* + * Utility to ready all the lists used by the scheduler. This is called + * automatically upon the creation of the first co-routine. + */ +static void prvInitialiseCoRoutineLists( void ); + +/* + * Co-routines that are readied by an interrupt cannot be placed directly into + * the ready lists (there is no mutual exclusion). Instead they are placed in + * in the pending ready list in order that they can later be moved to the ready + * list by the co-routine scheduler. + */ +static void prvCheckPendingReadyList( void ); + +/* + * Macro that looks at the list of co-routines that are currently delayed to + * see if any require waking. + * + * Co-routines are stored in the queue in the order of their wake time - + * meaning once one co-routine has been found whose timer has not expired + * we need not look any further down the list. + */ +static void prvCheckDelayedList( void ); + +/*-----------------------------------------------------------*/ + +BaseType_t xCoRoutineCreate( crCOROUTINE_CODE pxCoRoutineCode, UBaseType_t uxPriority, UBaseType_t uxIndex ) +{ +BaseType_t xReturn; +CRCB_t *pxCoRoutine; + + /* Allocate the memory that will store the co-routine control block. */ + pxCoRoutine = ( CRCB_t * ) pvPortMalloc( sizeof( CRCB_t ) ); + if( pxCoRoutine ) + { + /* If pxCurrentCoRoutine is NULL then this is the first co-routine to + be created and the co-routine data structures need initialising. */ + if( pxCurrentCoRoutine == NULL ) + { + pxCurrentCoRoutine = pxCoRoutine; + prvInitialiseCoRoutineLists(); + } + + /* Check the priority is within limits. */ + if( uxPriority >= configMAX_CO_ROUTINE_PRIORITIES ) + { + uxPriority = configMAX_CO_ROUTINE_PRIORITIES - 1; + } + + /* Fill out the co-routine control block from the function parameters. */ + pxCoRoutine->uxState = corINITIAL_STATE; + pxCoRoutine->uxPriority = uxPriority; + pxCoRoutine->uxIndex = uxIndex; + pxCoRoutine->pxCoRoutineFunction = pxCoRoutineCode; + + /* Initialise all the other co-routine control block parameters. */ + vListInitialiseItem( &( pxCoRoutine->xGenericListItem ) ); + vListInitialiseItem( &( pxCoRoutine->xEventListItem ) ); + + /* Set the co-routine control block as a link back from the ListItem_t. + This is so we can get back to the containing CRCB from a generic item + in a list. */ + listSET_LIST_ITEM_OWNER( &( pxCoRoutine->xGenericListItem ), pxCoRoutine ); + listSET_LIST_ITEM_OWNER( &( pxCoRoutine->xEventListItem ), pxCoRoutine ); + + /* Event lists are always in priority order. */ + listSET_LIST_ITEM_VALUE( &( pxCoRoutine->xEventListItem ), ( ( TickType_t ) configMAX_CO_ROUTINE_PRIORITIES - ( TickType_t ) uxPriority ) ); + + /* Now the co-routine has been initialised it can be added to the ready + list at the correct priority. */ + prvAddCoRoutineToReadyQueue( pxCoRoutine ); + + xReturn = pdPASS; + } + else + { + xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +void vCoRoutineAddToDelayedList( TickType_t xTicksToDelay, List_t *pxEventList ) +{ +TickType_t xTimeToWake; + + /* Calculate the time to wake - this may overflow but this is + not a problem. */ + xTimeToWake = xCoRoutineTickCount + xTicksToDelay; + + /* We must remove ourselves from the ready list before adding + ourselves to the blocked list as the same list item is used for + both lists. */ + ( void ) uxListRemove( ( ListItem_t * ) &( pxCurrentCoRoutine->xGenericListItem ) ); + + /* The list item will be inserted in wake time order. */ + listSET_LIST_ITEM_VALUE( &( pxCurrentCoRoutine->xGenericListItem ), xTimeToWake ); + + if( xTimeToWake < xCoRoutineTickCount ) + { + /* Wake time has overflowed. Place this item in the + overflow list. */ + vListInsert( ( List_t * ) pxOverflowDelayedCoRoutineList, ( ListItem_t * ) &( pxCurrentCoRoutine->xGenericListItem ) ); + } + else + { + /* The wake time has not overflowed, so we can use the + current block list. */ + vListInsert( ( List_t * ) pxDelayedCoRoutineList, ( ListItem_t * ) &( pxCurrentCoRoutine->xGenericListItem ) ); + } + + if( pxEventList ) + { + /* Also add the co-routine to an event list. If this is done then the + function must be called with interrupts disabled. */ + vListInsert( pxEventList, &( pxCurrentCoRoutine->xEventListItem ) ); + } +} +/*-----------------------------------------------------------*/ + +static void prvCheckPendingReadyList( void ) +{ + /* Are there any co-routines waiting to get moved to the ready list? These + are co-routines that have been readied by an ISR. The ISR cannot access + the ready lists itself. */ + while( listLIST_IS_EMPTY( &xPendingReadyCoRoutineList ) == pdFALSE ) + { + CRCB_t *pxUnblockedCRCB; + + /* The pending ready list can be accessed by an ISR. */ + portDISABLE_INTERRUPTS(); + { + pxUnblockedCRCB = ( CRCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( (&xPendingReadyCoRoutineList) ); + ( void ) uxListRemove( &( pxUnblockedCRCB->xEventListItem ) ); + } + portENABLE_INTERRUPTS(); + + ( void ) uxListRemove( &( pxUnblockedCRCB->xGenericListItem ) ); + prvAddCoRoutineToReadyQueue( pxUnblockedCRCB ); + } +} +/*-----------------------------------------------------------*/ + +static void prvCheckDelayedList( void ) +{ +CRCB_t *pxCRCB; + + xPassedTicks = xTaskGetTickCount() - xLastTickCount; + while( xPassedTicks ) + { + xCoRoutineTickCount++; + xPassedTicks--; + + /* If the tick count has overflowed we need to swap the ready lists. */ + if( xCoRoutineTickCount == 0 ) + { + List_t * pxTemp; + + /* Tick count has overflowed so we need to swap the delay lists. If there are + any items in pxDelayedCoRoutineList here then there is an error! */ + pxTemp = pxDelayedCoRoutineList; + pxDelayedCoRoutineList = pxOverflowDelayedCoRoutineList; + pxOverflowDelayedCoRoutineList = pxTemp; + } + + /* See if this tick has made a timeout expire. */ + while( listLIST_IS_EMPTY( pxDelayedCoRoutineList ) == pdFALSE ) + { + pxCRCB = ( CRCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxDelayedCoRoutineList ); + + if( xCoRoutineTickCount < listGET_LIST_ITEM_VALUE( &( pxCRCB->xGenericListItem ) ) ) + { + /* Timeout not yet expired. */ + break; + } + + portDISABLE_INTERRUPTS(); + { + /* The event could have occurred just before this critical + section. If this is the case then the generic list item will + have been moved to the pending ready list and the following + line is still valid. Also the pvContainer parameter will have + been set to NULL so the following lines are also valid. */ + ( void ) uxListRemove( &( pxCRCB->xGenericListItem ) ); + + /* Is the co-routine waiting on an event also? */ + if( pxCRCB->xEventListItem.pxContainer ) + { + ( void ) uxListRemove( &( pxCRCB->xEventListItem ) ); + } + } + portENABLE_INTERRUPTS(); + + prvAddCoRoutineToReadyQueue( pxCRCB ); + } + } + + xLastTickCount = xCoRoutineTickCount; +} +/*-----------------------------------------------------------*/ + +void vCoRoutineSchedule( void ) +{ + /* See if any co-routines readied by events need moving to the ready lists. */ + prvCheckPendingReadyList(); + + /* See if any delayed co-routines have timed out. */ + prvCheckDelayedList(); + + /* Find the highest priority queue that contains ready co-routines. */ + while( listLIST_IS_EMPTY( &( pxReadyCoRoutineLists[ uxTopCoRoutineReadyPriority ] ) ) ) + { + if( uxTopCoRoutineReadyPriority == 0 ) + { + /* No more co-routines to check. */ + return; + } + --uxTopCoRoutineReadyPriority; + } + + /* listGET_OWNER_OF_NEXT_ENTRY walks through the list, so the co-routines + of the same priority get an equal share of the processor time. */ + listGET_OWNER_OF_NEXT_ENTRY( pxCurrentCoRoutine, &( pxReadyCoRoutineLists[ uxTopCoRoutineReadyPriority ] ) ); + + /* Call the co-routine. */ + ( pxCurrentCoRoutine->pxCoRoutineFunction )( pxCurrentCoRoutine, pxCurrentCoRoutine->uxIndex ); + + return; +} +/*-----------------------------------------------------------*/ + +static void prvInitialiseCoRoutineLists( void ) +{ +UBaseType_t uxPriority; + + for( uxPriority = 0; uxPriority < configMAX_CO_ROUTINE_PRIORITIES; uxPriority++ ) + { + vListInitialise( ( List_t * ) &( pxReadyCoRoutineLists[ uxPriority ] ) ); + } + + vListInitialise( ( List_t * ) &xDelayedCoRoutineList1 ); + vListInitialise( ( List_t * ) &xDelayedCoRoutineList2 ); + vListInitialise( ( List_t * ) &xPendingReadyCoRoutineList ); + + /* Start with pxDelayedCoRoutineList using list1 and the + pxOverflowDelayedCoRoutineList using list2. */ + pxDelayedCoRoutineList = &xDelayedCoRoutineList1; + pxOverflowDelayedCoRoutineList = &xDelayedCoRoutineList2; +} +/*-----------------------------------------------------------*/ + +BaseType_t xCoRoutineRemoveFromEventList( const List_t *pxEventList ) +{ +CRCB_t *pxUnblockedCRCB; +BaseType_t xReturn; + + /* This function is called from within an interrupt. It can only access + event lists and the pending ready list. This function assumes that a + check has already been made to ensure pxEventList is not empty. */ + pxUnblockedCRCB = ( CRCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxEventList ); + ( void ) uxListRemove( &( pxUnblockedCRCB->xEventListItem ) ); + vListInsertEnd( ( List_t * ) &( xPendingReadyCoRoutineList ), &( pxUnblockedCRCB->xEventListItem ) ); + + if( pxUnblockedCRCB->uxPriority >= pxCurrentCoRoutine->uxPriority ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} + +#endif /* configUSE_CO_ROUTINES == 0 */ + diff --git a/components/freertos/event_groups.c b/components/freertos/event_groups.c new file mode 100644 index 00000000..65a5ff25 --- /dev/null +++ b/components/freertos/event_groups.c @@ -0,0 +1,753 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* Standard includes. */ +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +/* FreeRTOS includes. */ +#include "FreeRTOS.h" +#include "task.h" +#include "timers.h" +#include "event_groups.h" + +/* Lint e961, e750 and e9021 are suppressed as a MISRA exception justified +because the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined +for the header files above, but not in this file, in order to generate the +correct privileged Vs unprivileged linkage and placement. */ +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021 See comment above. */ + +/* The following bit fields convey control information in a task's event list +item value. It is important they don't clash with the +taskEVENT_LIST_ITEM_VALUE_IN_USE definition. */ +#if configUSE_16_BIT_TICKS == 1 + #define eventCLEAR_EVENTS_ON_EXIT_BIT 0x0100U + #define eventUNBLOCKED_DUE_TO_BIT_SET 0x0200U + #define eventWAIT_FOR_ALL_BITS 0x0400U + #define eventEVENT_BITS_CONTROL_BYTES 0xff00U +#else + #define eventCLEAR_EVENTS_ON_EXIT_BIT 0x01000000UL + #define eventUNBLOCKED_DUE_TO_BIT_SET 0x02000000UL + #define eventWAIT_FOR_ALL_BITS 0x04000000UL + #define eventEVENT_BITS_CONTROL_BYTES 0xff000000UL +#endif + +typedef struct EventGroupDef_t +{ + EventBits_t uxEventBits; + List_t xTasksWaitingForBits; /*< List of tasks waiting for a bit to be set. */ + + #if( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxEventGroupNumber; + #endif + + #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + uint8_t ucStaticallyAllocated; /*< Set to pdTRUE if the event group is statically allocated to ensure no attempt is made to free the memory. */ + #endif +} EventGroup_t; + +/*-----------------------------------------------------------*/ + +/* + * Test the bits set in uxCurrentEventBits to see if the wait condition is met. + * The wait condition is defined by xWaitForAllBits. If xWaitForAllBits is + * pdTRUE then the wait condition is met if all the bits set in uxBitsToWaitFor + * are also set in uxCurrentEventBits. If xWaitForAllBits is pdFALSE then the + * wait condition is met if any of the bits set in uxBitsToWait for are also set + * in uxCurrentEventBits. + */ +static BaseType_t prvTestWaitCondition( const EventBits_t uxCurrentEventBits, const EventBits_t uxBitsToWaitFor, const BaseType_t xWaitForAllBits ) PRIVILEGED_FUNCTION; + +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + EventGroupHandle_t xEventGroupCreateStatic( StaticEventGroup_t *pxEventGroupBuffer ) + { + EventGroup_t *pxEventBits; + + /* A StaticEventGroup_t object must be provided. */ + configASSERT( pxEventGroupBuffer ); + + #if( configASSERT_DEFINED == 1 ) + { + /* Sanity check that the size of the structure used to declare a + variable of type StaticEventGroup_t equals the size of the real + event group structure. */ + volatile size_t xSize = sizeof( StaticEventGroup_t ); + configASSERT( xSize == sizeof( EventGroup_t ) ); + } /*lint !e529 xSize is referenced if configASSERT() is defined. */ + #endif /* configASSERT_DEFINED */ + + /* The user has provided a statically allocated event group - use it. */ + pxEventBits = ( EventGroup_t * ) pxEventGroupBuffer; /*lint !e740 !e9087 EventGroup_t and StaticEventGroup_t are deliberately aliased for data hiding purposes and guaranteed to have the same size and alignment requirement - checked by configASSERT(). */ + + if( pxEventBits != NULL ) + { + pxEventBits->uxEventBits = 0; + vListInitialise( &( pxEventBits->xTasksWaitingForBits ) ); + + #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + { + /* Both static and dynamic allocation can be used, so note that + this event group was created statically in case the event group + is later deleted. */ + pxEventBits->ucStaticallyAllocated = pdTRUE; + } + #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ + + traceEVENT_GROUP_CREATE( pxEventBits ); + } + else + { + /* xEventGroupCreateStatic should only ever be called with + pxEventGroupBuffer pointing to a pre-allocated (compile time + allocated) StaticEventGroup_t variable. */ + traceEVENT_GROUP_CREATE_FAILED(); + } + + return pxEventBits; + } + +#endif /* configSUPPORT_STATIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + + EventGroupHandle_t xEventGroupCreate( void ) + { + EventGroup_t *pxEventBits; + + /* Allocate the event group. Justification for MISRA deviation as + follows: pvPortMalloc() always ensures returned memory blocks are + aligned per the requirements of the MCU stack. In this case + pvPortMalloc() must return a pointer that is guaranteed to meet the + alignment requirements of the EventGroup_t structure - which (if you + follow it through) is the alignment requirements of the TickType_t type + (EventBits_t being of TickType_t itself). Therefore, whenever the + stack alignment requirements are greater than or equal to the + TickType_t alignment requirements the cast is safe. In other cases, + where the natural word size of the architecture is less than + sizeof( TickType_t ), the TickType_t variables will be accessed in two + or more reads operations, and the alignment requirements is only that + of each individual read. */ + pxEventBits = ( EventGroup_t * ) pvPortMalloc( sizeof( EventGroup_t ) ); /*lint !e9087 !e9079 see comment above. */ + + if( pxEventBits != NULL ) + { + pxEventBits->uxEventBits = 0; + vListInitialise( &( pxEventBits->xTasksWaitingForBits ) ); + + #if( configSUPPORT_STATIC_ALLOCATION == 1 ) + { + /* Both static and dynamic allocation can be used, so note this + event group was allocated statically in case the event group is + later deleted. */ + pxEventBits->ucStaticallyAllocated = pdFALSE; + } + #endif /* configSUPPORT_STATIC_ALLOCATION */ + + traceEVENT_GROUP_CREATE( pxEventBits ); + } + else + { + traceEVENT_GROUP_CREATE_FAILED(); /*lint !e9063 Else branch only exists to allow tracing and does not generate code if trace macros are not defined. */ + } + + return pxEventBits; + } + +#endif /* configSUPPORT_DYNAMIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait ) +{ +EventBits_t uxOriginalBitValue, uxReturn; +EventGroup_t *pxEventBits = xEventGroup; +BaseType_t xAlreadyYielded; +BaseType_t xTimeoutOccurred = pdFALSE; + + configASSERT( ( uxBitsToWaitFor & eventEVENT_BITS_CONTROL_BYTES ) == 0 ); + configASSERT( uxBitsToWaitFor != 0 ); + #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + { + configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); + } + #endif + + vTaskSuspendAll(); + { + uxOriginalBitValue = pxEventBits->uxEventBits; + + ( void ) xEventGroupSetBits( xEventGroup, uxBitsToSet ); + + if( ( ( uxOriginalBitValue | uxBitsToSet ) & uxBitsToWaitFor ) == uxBitsToWaitFor ) + { + /* All the rendezvous bits are now set - no need to block. */ + uxReturn = ( uxOriginalBitValue | uxBitsToSet ); + + /* Rendezvous always clear the bits. They will have been cleared + already unless this is the only task in the rendezvous. */ + pxEventBits->uxEventBits &= ~uxBitsToWaitFor; + + xTicksToWait = 0; + } + else + { + if( xTicksToWait != ( TickType_t ) 0 ) + { + traceEVENT_GROUP_SYNC_BLOCK( xEventGroup, uxBitsToSet, uxBitsToWaitFor ); + + /* Store the bits that the calling task is waiting for in the + task's event list item so the kernel knows when a match is + found. Then enter the blocked state. */ + vTaskPlaceOnUnorderedEventList( &( pxEventBits->xTasksWaitingForBits ), ( uxBitsToWaitFor | eventCLEAR_EVENTS_ON_EXIT_BIT | eventWAIT_FOR_ALL_BITS ), xTicksToWait ); + + /* This assignment is obsolete as uxReturn will get set after + the task unblocks, but some compilers mistakenly generate a + warning about uxReturn being returned without being set if the + assignment is omitted. */ + uxReturn = 0; + } + else + { + /* The rendezvous bits were not set, but no block time was + specified - just return the current event bit value. */ + uxReturn = pxEventBits->uxEventBits; + xTimeoutOccurred = pdTRUE; + } + } + } + xAlreadyYielded = xTaskResumeAll(); + + if( xTicksToWait != ( TickType_t ) 0 ) + { + if( xAlreadyYielded == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* The task blocked to wait for its required bits to be set - at this + point either the required bits were set or the block time expired. If + the required bits were set they will have been stored in the task's + event list item, and they should now be retrieved then cleared. */ + uxReturn = uxTaskResetEventItemValue(); + + if( ( uxReturn & eventUNBLOCKED_DUE_TO_BIT_SET ) == ( EventBits_t ) 0 ) + { + /* The task timed out, just return the current event bit value. */ + taskENTER_CRITICAL(); + { + uxReturn = pxEventBits->uxEventBits; + + /* Although the task got here because it timed out before the + bits it was waiting for were set, it is possible that since it + unblocked another task has set the bits. If this is the case + then it needs to clear the bits before exiting. */ + if( ( uxReturn & uxBitsToWaitFor ) == uxBitsToWaitFor ) + { + pxEventBits->uxEventBits &= ~uxBitsToWaitFor; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + xTimeoutOccurred = pdTRUE; + } + else + { + /* The task unblocked because the bits were set. */ + } + + /* Control bits might be set as the task had blocked should not be + returned. */ + uxReturn &= ~eventEVENT_BITS_CONTROL_BYTES; + } + + traceEVENT_GROUP_SYNC_END( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTimeoutOccurred ); + + /* Prevent compiler warnings when trace macros are not used. */ + ( void ) xTimeoutOccurred; + + return uxReturn; +} +/*-----------------------------------------------------------*/ + +EventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait ) +{ +EventGroup_t *pxEventBits = xEventGroup; +EventBits_t uxReturn, uxControlBits = 0; +BaseType_t xWaitConditionMet, xAlreadyYielded; +BaseType_t xTimeoutOccurred = pdFALSE; + + /* Check the user is not attempting to wait on the bits used by the kernel + itself, and that at least one bit is being requested. */ + configASSERT( xEventGroup ); + configASSERT( ( uxBitsToWaitFor & eventEVENT_BITS_CONTROL_BYTES ) == 0 ); + configASSERT( uxBitsToWaitFor != 0 ); + #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + { + configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); + } + #endif + + vTaskSuspendAll(); + { + const EventBits_t uxCurrentEventBits = pxEventBits->uxEventBits; + + /* Check to see if the wait condition is already met or not. */ + xWaitConditionMet = prvTestWaitCondition( uxCurrentEventBits, uxBitsToWaitFor, xWaitForAllBits ); + + if( xWaitConditionMet != pdFALSE ) + { + /* The wait condition has already been met so there is no need to + block. */ + uxReturn = uxCurrentEventBits; + xTicksToWait = ( TickType_t ) 0; + + /* Clear the wait bits if requested to do so. */ + if( xClearOnExit != pdFALSE ) + { + pxEventBits->uxEventBits &= ~uxBitsToWaitFor; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else if( xTicksToWait == ( TickType_t ) 0 ) + { + /* The wait condition has not been met, but no block time was + specified, so just return the current value. */ + uxReturn = uxCurrentEventBits; + xTimeoutOccurred = pdTRUE; + } + else + { + /* The task is going to block to wait for its required bits to be + set. uxControlBits are used to remember the specified behaviour of + this call to xEventGroupWaitBits() - for use when the event bits + unblock the task. */ + if( xClearOnExit != pdFALSE ) + { + uxControlBits |= eventCLEAR_EVENTS_ON_EXIT_BIT; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( xWaitForAllBits != pdFALSE ) + { + uxControlBits |= eventWAIT_FOR_ALL_BITS; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Store the bits that the calling task is waiting for in the + task's event list item so the kernel knows when a match is + found. Then enter the blocked state. */ + vTaskPlaceOnUnorderedEventList( &( pxEventBits->xTasksWaitingForBits ), ( uxBitsToWaitFor | uxControlBits ), xTicksToWait ); + + /* This is obsolete as it will get set after the task unblocks, but + some compilers mistakenly generate a warning about the variable + being returned without being set if it is not done. */ + uxReturn = 0; + + traceEVENT_GROUP_WAIT_BITS_BLOCK( xEventGroup, uxBitsToWaitFor ); + } + } + xAlreadyYielded = xTaskResumeAll(); + + if( xTicksToWait != ( TickType_t ) 0 ) + { + if( xAlreadyYielded == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* The task blocked to wait for its required bits to be set - at this + point either the required bits were set or the block time expired. If + the required bits were set they will have been stored in the task's + event list item, and they should now be retrieved then cleared. */ + uxReturn = uxTaskResetEventItemValue(); + + if( ( uxReturn & eventUNBLOCKED_DUE_TO_BIT_SET ) == ( EventBits_t ) 0 ) + { + taskENTER_CRITICAL(); + { + /* The task timed out, just return the current event bit value. */ + uxReturn = pxEventBits->uxEventBits; + + /* It is possible that the event bits were updated between this + task leaving the Blocked state and running again. */ + if( prvTestWaitCondition( uxReturn, uxBitsToWaitFor, xWaitForAllBits ) != pdFALSE ) + { + if( xClearOnExit != pdFALSE ) + { + pxEventBits->uxEventBits &= ~uxBitsToWaitFor; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + xTimeoutOccurred = pdTRUE; + } + taskEXIT_CRITICAL(); + } + else + { + /* The task unblocked because the bits were set. */ + } + + /* The task blocked so control bits may have been set. */ + uxReturn &= ~eventEVENT_BITS_CONTROL_BYTES; + } + traceEVENT_GROUP_WAIT_BITS_END( xEventGroup, uxBitsToWaitFor, xTimeoutOccurred ); + + /* Prevent compiler warnings when trace macros are not used. */ + ( void ) xTimeoutOccurred; + + return uxReturn; +} +/*-----------------------------------------------------------*/ + +EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear ) +{ +EventGroup_t *pxEventBits = xEventGroup; +EventBits_t uxReturn; + + /* Check the user is not attempting to clear the bits used by the kernel + itself. */ + configASSERT( xEventGroup ); + configASSERT( ( uxBitsToClear & eventEVENT_BITS_CONTROL_BYTES ) == 0 ); + + taskENTER_CRITICAL(); + { + traceEVENT_GROUP_CLEAR_BITS( xEventGroup, uxBitsToClear ); + + /* The value returned is the event group value prior to the bits being + cleared. */ + uxReturn = pxEventBits->uxEventBits; + + /* Clear the bits. */ + pxEventBits->uxEventBits &= ~uxBitsToClear; + } + taskEXIT_CRITICAL(); + + return uxReturn; +} +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( INCLUDE_xTimerPendFunctionCall == 1 ) && ( configUSE_TIMERS == 1 ) ) + + BaseType_t xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear ) + { + BaseType_t xReturn; + + traceEVENT_GROUP_CLEAR_BITS_FROM_ISR( xEventGroup, uxBitsToClear ); + xReturn = xTimerPendFunctionCallFromISR( vEventGroupClearBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToClear, NULL ); /*lint !e9087 Can't avoid cast to void* as a generic callback function not specific to this use case. Callback casts back to original type so safe. */ + + return xReturn; + } + +#endif +/*-----------------------------------------------------------*/ + +EventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup ) +{ +UBaseType_t uxSavedInterruptStatus; +EventGroup_t const * const pxEventBits = xEventGroup; +EventBits_t uxReturn; + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + uxReturn = pxEventBits->uxEventBits; + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return uxReturn; +} /*lint !e818 EventGroupHandle_t is a typedef used in other functions to so can't be pointer to const. */ +/*-----------------------------------------------------------*/ + +EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet ) +{ +ListItem_t *pxListItem, *pxNext; +ListItem_t const *pxListEnd; +List_t const * pxList; +EventBits_t uxBitsToClear = 0, uxBitsWaitedFor, uxControlBits; +EventGroup_t *pxEventBits = xEventGroup; +BaseType_t xMatchFound = pdFALSE; + + /* Check the user is not attempting to set the bits used by the kernel + itself. */ + configASSERT( xEventGroup ); + configASSERT( ( uxBitsToSet & eventEVENT_BITS_CONTROL_BYTES ) == 0 ); + + pxList = &( pxEventBits->xTasksWaitingForBits ); + pxListEnd = listGET_END_MARKER( pxList ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ + vTaskSuspendAll(); + { + traceEVENT_GROUP_SET_BITS( xEventGroup, uxBitsToSet ); + + pxListItem = listGET_HEAD_ENTRY( pxList ); + + /* Set the bits. */ + pxEventBits->uxEventBits |= uxBitsToSet; + + /* See if the new bit value should unblock any tasks. */ + while( pxListItem != pxListEnd ) + { + pxNext = listGET_NEXT( pxListItem ); + uxBitsWaitedFor = listGET_LIST_ITEM_VALUE( pxListItem ); + xMatchFound = pdFALSE; + + /* Split the bits waited for from the control bits. */ + uxControlBits = uxBitsWaitedFor & eventEVENT_BITS_CONTROL_BYTES; + uxBitsWaitedFor &= ~eventEVENT_BITS_CONTROL_BYTES; + + if( ( uxControlBits & eventWAIT_FOR_ALL_BITS ) == ( EventBits_t ) 0 ) + { + /* Just looking for single bit being set. */ + if( ( uxBitsWaitedFor & pxEventBits->uxEventBits ) != ( EventBits_t ) 0 ) + { + xMatchFound = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else if( ( uxBitsWaitedFor & pxEventBits->uxEventBits ) == uxBitsWaitedFor ) + { + /* All bits are set. */ + xMatchFound = pdTRUE; + } + else + { + /* Need all bits to be set, but not all the bits were set. */ + } + + if( xMatchFound != pdFALSE ) + { + /* The bits match. Should the bits be cleared on exit? */ + if( ( uxControlBits & eventCLEAR_EVENTS_ON_EXIT_BIT ) != ( EventBits_t ) 0 ) + { + uxBitsToClear |= uxBitsWaitedFor; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Store the actual event flag value in the task's event list + item before removing the task from the event list. The + eventUNBLOCKED_DUE_TO_BIT_SET bit is set so the task knows + that is was unblocked due to its required bits matching, rather + than because it timed out. */ + vTaskRemoveFromUnorderedEventList( pxListItem, pxEventBits->uxEventBits | eventUNBLOCKED_DUE_TO_BIT_SET ); + } + + /* Move onto the next list item. Note pxListItem->pxNext is not + used here as the list item may have been removed from the event list + and inserted into the ready/pending reading list. */ + pxListItem = pxNext; + } + + /* Clear any bits that matched when the eventCLEAR_EVENTS_ON_EXIT_BIT + bit was set in the control word. */ + pxEventBits->uxEventBits &= ~uxBitsToClear; + } + ( void ) xTaskResumeAll(); + + return pxEventBits->uxEventBits; +} +/*-----------------------------------------------------------*/ + +void vEventGroupDelete( EventGroupHandle_t xEventGroup ) +{ +EventGroup_t *pxEventBits = xEventGroup; +const List_t *pxTasksWaitingForBits = &( pxEventBits->xTasksWaitingForBits ); + + vTaskSuspendAll(); + { + traceEVENT_GROUP_DELETE( xEventGroup ); + + while( listCURRENT_LIST_LENGTH( pxTasksWaitingForBits ) > ( UBaseType_t ) 0 ) + { + /* Unblock the task, returning 0 as the event list is being deleted + and cannot therefore have any bits set. */ + configASSERT( pxTasksWaitingForBits->xListEnd.pxNext != ( const ListItem_t * ) &( pxTasksWaitingForBits->xListEnd ) ); + vTaskRemoveFromUnorderedEventList( pxTasksWaitingForBits->xListEnd.pxNext, eventUNBLOCKED_DUE_TO_BIT_SET ); + } + + #if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 0 ) ) + { + /* The event group can only have been allocated dynamically - free + it again. */ + vPortFree( pxEventBits ); + } + #elif( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + { + /* The event group could have been allocated statically or + dynamically, so check before attempting to free the memory. */ + if( pxEventBits->ucStaticallyAllocated == ( uint8_t ) pdFALSE ) + { + vPortFree( pxEventBits ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ + } + ( void ) xTaskResumeAll(); +} +/*-----------------------------------------------------------*/ + +/* For internal use only - execute a 'set bits' command that was pended from +an interrupt. */ +void vEventGroupSetBitsCallback( void *pvEventGroup, const uint32_t ulBitsToSet ) +{ + ( void ) xEventGroupSetBits( pvEventGroup, ( EventBits_t ) ulBitsToSet ); /*lint !e9079 Can't avoid cast to void* as a generic timer callback prototype. Callback casts back to original type so safe. */ +} +/*-----------------------------------------------------------*/ + +/* For internal use only - execute a 'clear bits' command that was pended from +an interrupt. */ +void vEventGroupClearBitsCallback( void *pvEventGroup, const uint32_t ulBitsToClear ) +{ + ( void ) xEventGroupClearBits( pvEventGroup, ( EventBits_t ) ulBitsToClear ); /*lint !e9079 Can't avoid cast to void* as a generic timer callback prototype. Callback casts back to original type so safe. */ +} +/*-----------------------------------------------------------*/ + +static BaseType_t prvTestWaitCondition( const EventBits_t uxCurrentEventBits, const EventBits_t uxBitsToWaitFor, const BaseType_t xWaitForAllBits ) +{ +BaseType_t xWaitConditionMet = pdFALSE; + + if( xWaitForAllBits == pdFALSE ) + { + /* Task only has to wait for one bit within uxBitsToWaitFor to be + set. Is one already set? */ + if( ( uxCurrentEventBits & uxBitsToWaitFor ) != ( EventBits_t ) 0 ) + { + xWaitConditionMet = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* Task has to wait for all the bits in uxBitsToWaitFor to be set. + Are they set already? */ + if( ( uxCurrentEventBits & uxBitsToWaitFor ) == uxBitsToWaitFor ) + { + xWaitConditionMet = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + return xWaitConditionMet; +} +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( INCLUDE_xTimerPendFunctionCall == 1 ) && ( configUSE_TIMERS == 1 ) ) + + BaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken ) + { + BaseType_t xReturn; + + traceEVENT_GROUP_SET_BITS_FROM_ISR( xEventGroup, uxBitsToSet ); + xReturn = xTimerPendFunctionCallFromISR( vEventGroupSetBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToSet, pxHigherPriorityTaskWoken ); /*lint !e9087 Can't avoid cast to void* as a generic callback function not specific to this use case. Callback casts back to original type so safe. */ + + return xReturn; + } + +#endif +/*-----------------------------------------------------------*/ + +#if (configUSE_TRACE_FACILITY == 1) + + UBaseType_t uxEventGroupGetNumber( void* xEventGroup ) + { + UBaseType_t xReturn; + EventGroup_t const *pxEventBits = ( EventGroup_t * ) xEventGroup; /*lint !e9087 !e9079 EventGroupHandle_t is a pointer to an EventGroup_t, but EventGroupHandle_t is kept opaque outside of this file for data hiding purposes. */ + + if( xEventGroup == NULL ) + { + xReturn = 0; + } + else + { + xReturn = pxEventBits->uxEventGroupNumber; + } + + return xReturn; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + void vEventGroupSetNumber( void * xEventGroup, UBaseType_t uxEventGroupNumber ) + { + ( ( EventGroup_t * ) xEventGroup )->uxEventGroupNumber = uxEventGroupNumber; /*lint !e9087 !e9079 EventGroupHandle_t is a pointer to an EventGroup_t, but EventGroupHandle_t is kept opaque outside of this file for data hiding purposes. */ + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + + diff --git a/components/freertos/include/FreeRTOS.h b/components/freertos/include/FreeRTOS.h new file mode 100644 index 00000000..4f533240 --- /dev/null +++ b/components/freertos/include/FreeRTOS.h @@ -0,0 +1,1290 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef INC_FREERTOS_H +#define INC_FREERTOS_H + +/* + * Include the generic headers required for the FreeRTOS port being used. + */ +#include + +/* + * If stdint.h cannot be located then: + * + If using GCC ensure the -nostdint options is *not* being used. + * + Ensure the project's include path includes the directory in which your + * compiler stores stdint.h. + * + Set any compiler options necessary for it to support C99, as technically + * stdint.h is only mandatory with C99 (FreeRTOS does not require C99 in any + * other way). + * + The FreeRTOS download includes a simple stdint.h definition that can be + * used in cases where none is provided by the compiler. The files only + * contains the typedefs required to build FreeRTOS. Read the instructions + * in FreeRTOS/source/stdint.readme for more information. + */ +#include /* READ COMMENT ABOVE. */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Application specific configuration options. */ +#include "FreeRTOSConfig.h" + +/* Basic FreeRTOS definitions. */ +#include "projdefs.h" + +/* Definitions specific to the port being used. */ +#include "portable.h" + +/* Must be defaulted before configUSE_NEWLIB_REENTRANT is used below. */ +#ifndef configUSE_NEWLIB_REENTRANT + #define configUSE_NEWLIB_REENTRANT 0 +#endif + +/* Required if struct _reent is used. */ +#if ( configUSE_NEWLIB_REENTRANT == 1 ) + #include +#endif +/* + * Check all the required application specific macros have been defined. + * These macros are application specific and (as downloaded) are defined + * within FreeRTOSConfig.h. + */ + +#ifndef configMINIMAL_STACK_SIZE + #error Missing definition: configMINIMAL_STACK_SIZE must be defined in FreeRTOSConfig.h. configMINIMAL_STACK_SIZE defines the size (in words) of the stack allocated to the idle task. Refer to the demo project provided for your port for a suitable value. +#endif + +#ifndef configMAX_PRIORITIES + #error Missing definition: configMAX_PRIORITIES must be defined in FreeRTOSConfig.h. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#if configMAX_PRIORITIES < 1 + #error configMAX_PRIORITIES must be defined to be greater than or equal to 1. +#endif + +#ifndef configUSE_PREEMPTION + #error Missing definition: configUSE_PREEMPTION must be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef configUSE_IDLE_HOOK + #error Missing definition: configUSE_IDLE_HOOK must be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef configUSE_TICK_HOOK + #error Missing definition: configUSE_TICK_HOOK must be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef configUSE_16_BIT_TICKS + #error Missing definition: configUSE_16_BIT_TICKS must be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef configUSE_CO_ROUTINES + #define configUSE_CO_ROUTINES 0 +#endif + +#ifndef INCLUDE_vTaskPrioritySet + #define INCLUDE_vTaskPrioritySet 0 +#endif + +#ifndef INCLUDE_uxTaskPriorityGet + #define INCLUDE_uxTaskPriorityGet 0 +#endif + +#ifndef INCLUDE_vTaskDelete + #define INCLUDE_vTaskDelete 0 +#endif + +#ifndef INCLUDE_vTaskSuspend + #define INCLUDE_vTaskSuspend 0 +#endif + +#ifndef INCLUDE_vTaskDelayUntil + #define INCLUDE_vTaskDelayUntil 0 +#endif + +#ifndef INCLUDE_vTaskDelay + #define INCLUDE_vTaskDelay 0 +#endif + +#ifndef INCLUDE_xTaskGetIdleTaskHandle + #define INCLUDE_xTaskGetIdleTaskHandle 0 +#endif + +#ifndef INCLUDE_xTaskAbortDelay + #define INCLUDE_xTaskAbortDelay 0 +#endif + +#ifndef INCLUDE_xQueueGetMutexHolder + #define INCLUDE_xQueueGetMutexHolder 0 +#endif + +#ifndef INCLUDE_xSemaphoreGetMutexHolder + #define INCLUDE_xSemaphoreGetMutexHolder INCLUDE_xQueueGetMutexHolder +#endif + +#ifndef INCLUDE_xTaskGetHandle + #define INCLUDE_xTaskGetHandle 0 +#endif + +#ifndef INCLUDE_uxTaskGetStackHighWaterMark + #define INCLUDE_uxTaskGetStackHighWaterMark 0 +#endif + +#ifndef INCLUDE_uxTaskGetStackHighWaterMark2 + #define INCLUDE_uxTaskGetStackHighWaterMark2 0 +#endif + +#ifndef INCLUDE_eTaskGetState + #define INCLUDE_eTaskGetState 0 +#endif + +#ifndef INCLUDE_xTaskResumeFromISR + #define INCLUDE_xTaskResumeFromISR 1 +#endif + +#ifndef INCLUDE_xTimerPendFunctionCall + #define INCLUDE_xTimerPendFunctionCall 0 +#endif + +#ifndef INCLUDE_xTaskGetSchedulerState + #define INCLUDE_xTaskGetSchedulerState 0 +#endif + +#ifndef INCLUDE_xTaskGetCurrentTaskHandle + #define INCLUDE_xTaskGetCurrentTaskHandle 0 +#endif + +#if configUSE_CO_ROUTINES != 0 + #ifndef configMAX_CO_ROUTINE_PRIORITIES + #error configMAX_CO_ROUTINE_PRIORITIES must be greater than or equal to 1. + #endif +#endif + +#ifndef configUSE_DAEMON_TASK_STARTUP_HOOK + #define configUSE_DAEMON_TASK_STARTUP_HOOK 0 +#endif + +#ifndef configUSE_APPLICATION_TASK_TAG + #define configUSE_APPLICATION_TASK_TAG 0 +#endif + +#ifndef configNUM_THREAD_LOCAL_STORAGE_POINTERS + #define configNUM_THREAD_LOCAL_STORAGE_POINTERS 0 +#endif + +#ifndef configUSE_RECURSIVE_MUTEXES + #define configUSE_RECURSIVE_MUTEXES 0 +#endif + +#ifndef configUSE_MUTEXES + #define configUSE_MUTEXES 0 +#endif + +#ifndef configUSE_TIMERS + #define configUSE_TIMERS 0 +#endif + +#ifndef configUSE_COUNTING_SEMAPHORES + #define configUSE_COUNTING_SEMAPHORES 0 +#endif + +#ifndef configUSE_ALTERNATIVE_API + #define configUSE_ALTERNATIVE_API 0 +#endif + +#ifndef portCRITICAL_NESTING_IN_TCB + #define portCRITICAL_NESTING_IN_TCB 0 +#endif + +#ifndef configMAX_TASK_NAME_LEN + #define configMAX_TASK_NAME_LEN 16 +#endif + +#ifndef configIDLE_SHOULD_YIELD + #define configIDLE_SHOULD_YIELD 1 +#endif + +#if configMAX_TASK_NAME_LEN < 1 + #error configMAX_TASK_NAME_LEN must be set to a minimum of 1 in FreeRTOSConfig.h +#endif + +#ifndef configASSERT + #define configASSERT( x ) + #define configASSERT_DEFINED 0 +#else + #define configASSERT_DEFINED 1 +#endif + +/* configPRECONDITION should be resolve to configASSERT. +The CBMC proofs need a way to track assumptions and assertions. +A configPRECONDITION statement should express an implicit invariant or +assumption made. A configASSERT statement should express an invariant that must +hold explicit before calling the code. */ +#ifndef configPRECONDITION + #define configPRECONDITION( X ) configASSERT(X) + #define configPRECONDITION_DEFINED 0 +#else + #define configPRECONDITION_DEFINED 1 +#endif + +#ifndef portMEMORY_BARRIER + #define portMEMORY_BARRIER() +#endif + +/* The timers module relies on xTaskGetSchedulerState(). */ +#if configUSE_TIMERS == 1 + + #ifndef configTIMER_TASK_PRIORITY + #error If configUSE_TIMERS is set to 1 then configTIMER_TASK_PRIORITY must also be defined. + #endif /* configTIMER_TASK_PRIORITY */ + + #ifndef configTIMER_QUEUE_LENGTH + #error If configUSE_TIMERS is set to 1 then configTIMER_QUEUE_LENGTH must also be defined. + #endif /* configTIMER_QUEUE_LENGTH */ + + #ifndef configTIMER_TASK_STACK_DEPTH + #error If configUSE_TIMERS is set to 1 then configTIMER_TASK_STACK_DEPTH must also be defined. + #endif /* configTIMER_TASK_STACK_DEPTH */ + +#endif /* configUSE_TIMERS */ + +#ifndef portSET_INTERRUPT_MASK_FROM_ISR + #define portSET_INTERRUPT_MASK_FROM_ISR() 0 +#endif + +#ifndef portCLEAR_INTERRUPT_MASK_FROM_ISR + #define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusValue ) ( void ) uxSavedStatusValue +#endif + +#ifndef portCLEAN_UP_TCB + #define portCLEAN_UP_TCB( pxTCB ) ( void ) pxTCB +#endif + +#ifndef portPRE_TASK_DELETE_HOOK + #define portPRE_TASK_DELETE_HOOK( pvTaskToDelete, pxYieldPending ) +#endif + +#ifndef portSETUP_TCB + #define portSETUP_TCB( pxTCB ) ( void ) pxTCB +#endif + +#ifndef configQUEUE_REGISTRY_SIZE + #define configQUEUE_REGISTRY_SIZE 0U +#endif + +#if ( configQUEUE_REGISTRY_SIZE < 1 ) + #define vQueueAddToRegistry( xQueue, pcName ) + #define vQueueUnregisterQueue( xQueue ) + #define pcQueueGetName( xQueue ) +#endif + +#ifndef portPOINTER_SIZE_TYPE + #define portPOINTER_SIZE_TYPE uint32_t +#endif + +/* Remove any unused trace macros. */ +#ifndef traceSTART + /* Used to perform any necessary initialisation - for example, open a file + into which trace is to be written. */ + #define traceSTART() +#endif + +#ifndef traceEND + /* Use to close a trace, for example close a file into which trace has been + written. */ + #define traceEND() +#endif + +#ifndef traceTASK_SWITCHED_IN + /* Called after a task has been selected to run. pxCurrentTCB holds a pointer + to the task control block of the selected task. */ + #define traceTASK_SWITCHED_IN() +#endif + +#ifndef traceINCREASE_TICK_COUNT + /* Called before stepping the tick count after waking from tickless idle + sleep. */ + #define traceINCREASE_TICK_COUNT( x ) +#endif + +#ifndef traceLOW_POWER_IDLE_BEGIN + /* Called immediately before entering tickless idle. */ + #define traceLOW_POWER_IDLE_BEGIN() +#endif + +#ifndef traceLOW_POWER_IDLE_END + /* Called when returning to the Idle task after a tickless idle. */ + #define traceLOW_POWER_IDLE_END() +#endif + +#ifndef traceTASK_SWITCHED_OUT + /* Called before a task has been selected to run. pxCurrentTCB holds a pointer + to the task control block of the task being switched out. */ + #define traceTASK_SWITCHED_OUT() +#endif + +#ifndef traceTASK_PRIORITY_INHERIT + /* Called when a task attempts to take a mutex that is already held by a + lower priority task. pxTCBOfMutexHolder is a pointer to the TCB of the task + that holds the mutex. uxInheritedPriority is the priority the mutex holder + will inherit (the priority of the task that is attempting to obtain the + muted. */ + #define traceTASK_PRIORITY_INHERIT( pxTCBOfMutexHolder, uxInheritedPriority ) +#endif + +#ifndef traceTASK_PRIORITY_DISINHERIT + /* Called when a task releases a mutex, the holding of which had resulted in + the task inheriting the priority of a higher priority task. + pxTCBOfMutexHolder is a pointer to the TCB of the task that is releasing the + mutex. uxOriginalPriority is the task's configured (base) priority. */ + #define traceTASK_PRIORITY_DISINHERIT( pxTCBOfMutexHolder, uxOriginalPriority ) +#endif + +#ifndef traceBLOCKING_ON_QUEUE_RECEIVE + /* Task is about to block because it cannot read from a + queue/mutex/semaphore. pxQueue is a pointer to the queue/mutex/semaphore + upon which the read was attempted. pxCurrentTCB points to the TCB of the + task that attempted the read. */ + #define traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue ) +#endif + +#ifndef traceBLOCKING_ON_QUEUE_PEEK + /* Task is about to block because it cannot read from a + queue/mutex/semaphore. pxQueue is a pointer to the queue/mutex/semaphore + upon which the read was attempted. pxCurrentTCB points to the TCB of the + task that attempted the read. */ + #define traceBLOCKING_ON_QUEUE_PEEK( pxQueue ) +#endif + +#ifndef traceBLOCKING_ON_QUEUE_SEND + /* Task is about to block because it cannot write to a + queue/mutex/semaphore. pxQueue is a pointer to the queue/mutex/semaphore + upon which the write was attempted. pxCurrentTCB points to the TCB of the + task that attempted the write. */ + #define traceBLOCKING_ON_QUEUE_SEND( pxQueue ) +#endif + +#ifndef configCHECK_FOR_STACK_OVERFLOW + #define configCHECK_FOR_STACK_OVERFLOW 0 +#endif + +#ifndef configRECORD_STACK_HIGH_ADDRESS + #define configRECORD_STACK_HIGH_ADDRESS 0 +#endif + +#ifndef configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H + #define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H 0 +#endif + +/* The following event macros are embedded in the kernel API calls. */ + +#ifndef traceMOVED_TASK_TO_READY_STATE + #define traceMOVED_TASK_TO_READY_STATE( pxTCB ) +#endif + +#ifndef tracePOST_MOVED_TASK_TO_READY_STATE + #define tracePOST_MOVED_TASK_TO_READY_STATE( pxTCB ) +#endif + +#ifndef traceQUEUE_CREATE + #define traceQUEUE_CREATE( pxNewQueue ) +#endif + +#ifndef traceQUEUE_CREATE_FAILED + #define traceQUEUE_CREATE_FAILED( ucQueueType ) +#endif + +#ifndef traceCREATE_MUTEX + #define traceCREATE_MUTEX( pxNewQueue ) +#endif + +#ifndef traceCREATE_MUTEX_FAILED + #define traceCREATE_MUTEX_FAILED() +#endif + +#ifndef traceGIVE_MUTEX_RECURSIVE + #define traceGIVE_MUTEX_RECURSIVE( pxMutex ) +#endif + +#ifndef traceGIVE_MUTEX_RECURSIVE_FAILED + #define traceGIVE_MUTEX_RECURSIVE_FAILED( pxMutex ) +#endif + +#ifndef traceTAKE_MUTEX_RECURSIVE + #define traceTAKE_MUTEX_RECURSIVE( pxMutex ) +#endif + +#ifndef traceTAKE_MUTEX_RECURSIVE_FAILED + #define traceTAKE_MUTEX_RECURSIVE_FAILED( pxMutex ) +#endif + +#ifndef traceCREATE_COUNTING_SEMAPHORE + #define traceCREATE_COUNTING_SEMAPHORE() +#endif + +#ifndef traceCREATE_COUNTING_SEMAPHORE_FAILED + #define traceCREATE_COUNTING_SEMAPHORE_FAILED() +#endif + +#ifndef traceQUEUE_SEND + #define traceQUEUE_SEND( pxQueue ) +#endif + +#ifndef traceQUEUE_SEND_FAILED + #define traceQUEUE_SEND_FAILED( pxQueue ) +#endif + +#ifndef traceQUEUE_RECEIVE + #define traceQUEUE_RECEIVE( pxQueue ) +#endif + +#ifndef traceQUEUE_PEEK + #define traceQUEUE_PEEK( pxQueue ) +#endif + +#ifndef traceQUEUE_PEEK_FAILED + #define traceQUEUE_PEEK_FAILED( pxQueue ) +#endif + +#ifndef traceQUEUE_PEEK_FROM_ISR + #define traceQUEUE_PEEK_FROM_ISR( pxQueue ) +#endif + +#ifndef traceQUEUE_RECEIVE_FAILED + #define traceQUEUE_RECEIVE_FAILED( pxQueue ) +#endif + +#ifndef traceQUEUE_SEND_FROM_ISR + #define traceQUEUE_SEND_FROM_ISR( pxQueue ) +#endif + +#ifndef traceQUEUE_SEND_FROM_ISR_FAILED + #define traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue ) +#endif + +#ifndef traceQUEUE_RECEIVE_FROM_ISR + #define traceQUEUE_RECEIVE_FROM_ISR( pxQueue ) +#endif + +#ifndef traceQUEUE_RECEIVE_FROM_ISR_FAILED + #define traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue ) +#endif + +#ifndef traceQUEUE_PEEK_FROM_ISR_FAILED + #define traceQUEUE_PEEK_FROM_ISR_FAILED( pxQueue ) +#endif + +#ifndef traceQUEUE_DELETE + #define traceQUEUE_DELETE( pxQueue ) +#endif + +#ifndef traceTASK_CREATE + #define traceTASK_CREATE( pxNewTCB ) +#endif + +#ifndef traceTASK_CREATE_FAILED + #define traceTASK_CREATE_FAILED() +#endif + +#ifndef traceTASK_DELETE + #define traceTASK_DELETE( pxTaskToDelete ) +#endif + +#ifndef traceTASK_DELAY_UNTIL + #define traceTASK_DELAY_UNTIL( x ) +#endif + +#ifndef traceTASK_DELAY + #define traceTASK_DELAY() +#endif + +#ifndef traceTASK_PRIORITY_SET + #define traceTASK_PRIORITY_SET( pxTask, uxNewPriority ) +#endif + +#ifndef traceTASK_SUSPEND + #define traceTASK_SUSPEND( pxTaskToSuspend ) +#endif + +#ifndef traceTASK_RESUME + #define traceTASK_RESUME( pxTaskToResume ) +#endif + +#ifndef traceTASK_RESUME_FROM_ISR + #define traceTASK_RESUME_FROM_ISR( pxTaskToResume ) +#endif + +#ifndef traceTASK_INCREMENT_TICK + #define traceTASK_INCREMENT_TICK( xTickCount ) +#endif + +#ifndef traceTIMER_CREATE + #define traceTIMER_CREATE( pxNewTimer ) +#endif + +#ifndef traceTIMER_CREATE_FAILED + #define traceTIMER_CREATE_FAILED() +#endif + +#ifndef traceTIMER_COMMAND_SEND + #define traceTIMER_COMMAND_SEND( xTimer, xMessageID, xMessageValueValue, xReturn ) +#endif + +#ifndef traceTIMER_EXPIRED + #define traceTIMER_EXPIRED( pxTimer ) +#endif + +#ifndef traceTIMER_COMMAND_RECEIVED + #define traceTIMER_COMMAND_RECEIVED( pxTimer, xMessageID, xMessageValue ) +#endif + +#ifndef traceMALLOC + #define traceMALLOC( pvAddress, uiSize ) +#endif + +#ifndef traceFREE + #define traceFREE( pvAddress, uiSize ) +#endif + +#ifndef traceEVENT_GROUP_CREATE + #define traceEVENT_GROUP_CREATE( xEventGroup ) +#endif + +#ifndef traceEVENT_GROUP_CREATE_FAILED + #define traceEVENT_GROUP_CREATE_FAILED() +#endif + +#ifndef traceEVENT_GROUP_SYNC_BLOCK + #define traceEVENT_GROUP_SYNC_BLOCK( xEventGroup, uxBitsToSet, uxBitsToWaitFor ) +#endif + +#ifndef traceEVENT_GROUP_SYNC_END + #define traceEVENT_GROUP_SYNC_END( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTimeoutOccurred ) ( void ) xTimeoutOccurred +#endif + +#ifndef traceEVENT_GROUP_WAIT_BITS_BLOCK + #define traceEVENT_GROUP_WAIT_BITS_BLOCK( xEventGroup, uxBitsToWaitFor ) +#endif + +#ifndef traceEVENT_GROUP_WAIT_BITS_END + #define traceEVENT_GROUP_WAIT_BITS_END( xEventGroup, uxBitsToWaitFor, xTimeoutOccurred ) ( void ) xTimeoutOccurred +#endif + +#ifndef traceEVENT_GROUP_CLEAR_BITS + #define traceEVENT_GROUP_CLEAR_BITS( xEventGroup, uxBitsToClear ) +#endif + +#ifndef traceEVENT_GROUP_CLEAR_BITS_FROM_ISR + #define traceEVENT_GROUP_CLEAR_BITS_FROM_ISR( xEventGroup, uxBitsToClear ) +#endif + +#ifndef traceEVENT_GROUP_SET_BITS + #define traceEVENT_GROUP_SET_BITS( xEventGroup, uxBitsToSet ) +#endif + +#ifndef traceEVENT_GROUP_SET_BITS_FROM_ISR + #define traceEVENT_GROUP_SET_BITS_FROM_ISR( xEventGroup, uxBitsToSet ) +#endif + +#ifndef traceEVENT_GROUP_DELETE + #define traceEVENT_GROUP_DELETE( xEventGroup ) +#endif + +#ifndef tracePEND_FUNC_CALL + #define tracePEND_FUNC_CALL(xFunctionToPend, pvParameter1, ulParameter2, ret) +#endif + +#ifndef tracePEND_FUNC_CALL_FROM_ISR + #define tracePEND_FUNC_CALL_FROM_ISR(xFunctionToPend, pvParameter1, ulParameter2, ret) +#endif + +#ifndef traceQUEUE_REGISTRY_ADD + #define traceQUEUE_REGISTRY_ADD(xQueue, pcQueueName) +#endif + +#ifndef traceTASK_NOTIFY_TAKE_BLOCK + #define traceTASK_NOTIFY_TAKE_BLOCK() +#endif + +#ifndef traceTASK_NOTIFY_TAKE + #define traceTASK_NOTIFY_TAKE() +#endif + +#ifndef traceTASK_NOTIFY_WAIT_BLOCK + #define traceTASK_NOTIFY_WAIT_BLOCK() +#endif + +#ifndef traceTASK_NOTIFY_WAIT + #define traceTASK_NOTIFY_WAIT() +#endif + +#ifndef traceTASK_NOTIFY + #define traceTASK_NOTIFY() +#endif + +#ifndef traceTASK_NOTIFY_FROM_ISR + #define traceTASK_NOTIFY_FROM_ISR() +#endif + +#ifndef traceTASK_NOTIFY_GIVE_FROM_ISR + #define traceTASK_NOTIFY_GIVE_FROM_ISR() +#endif + +#ifndef traceSTREAM_BUFFER_CREATE_FAILED + #define traceSTREAM_BUFFER_CREATE_FAILED( xIsMessageBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_CREATE_STATIC_FAILED + #define traceSTREAM_BUFFER_CREATE_STATIC_FAILED( xReturn, xIsMessageBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_CREATE + #define traceSTREAM_BUFFER_CREATE( pxStreamBuffer, xIsMessageBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_DELETE + #define traceSTREAM_BUFFER_DELETE( xStreamBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_RESET + #define traceSTREAM_BUFFER_RESET( xStreamBuffer ) +#endif + +#ifndef traceBLOCKING_ON_STREAM_BUFFER_SEND + #define traceBLOCKING_ON_STREAM_BUFFER_SEND( xStreamBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_SEND + #define traceSTREAM_BUFFER_SEND( xStreamBuffer, xBytesSent ) +#endif + +#ifndef traceSTREAM_BUFFER_SEND_FAILED + #define traceSTREAM_BUFFER_SEND_FAILED( xStreamBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_SEND_FROM_ISR + #define traceSTREAM_BUFFER_SEND_FROM_ISR( xStreamBuffer, xBytesSent ) +#endif + +#ifndef traceBLOCKING_ON_STREAM_BUFFER_RECEIVE + #define traceBLOCKING_ON_STREAM_BUFFER_RECEIVE( xStreamBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_RECEIVE + #define traceSTREAM_BUFFER_RECEIVE( xStreamBuffer, xReceivedLength ) +#endif + +#ifndef traceSTREAM_BUFFER_RECEIVE_FAILED + #define traceSTREAM_BUFFER_RECEIVE_FAILED( xStreamBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_RECEIVE_FROM_ISR + #define traceSTREAM_BUFFER_RECEIVE_FROM_ISR( xStreamBuffer, xReceivedLength ) +#endif + +#ifndef configGENERATE_RUN_TIME_STATS + #define configGENERATE_RUN_TIME_STATS 0 +#endif + +#if ( configGENERATE_RUN_TIME_STATS == 1 ) + + #ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS + #error If configGENERATE_RUN_TIME_STATS is defined then portCONFIGURE_TIMER_FOR_RUN_TIME_STATS must also be defined. portCONFIGURE_TIMER_FOR_RUN_TIME_STATS should call a port layer function to setup a peripheral timer/counter that can then be used as the run time counter time base. + #endif /* portCONFIGURE_TIMER_FOR_RUN_TIME_STATS */ + + #ifndef portGET_RUN_TIME_COUNTER_VALUE + #ifndef portALT_GET_RUN_TIME_COUNTER_VALUE + #error If configGENERATE_RUN_TIME_STATS is defined then either portGET_RUN_TIME_COUNTER_VALUE or portALT_GET_RUN_TIME_COUNTER_VALUE must also be defined. See the examples provided and the FreeRTOS web site for more information. + #endif /* portALT_GET_RUN_TIME_COUNTER_VALUE */ + #endif /* portGET_RUN_TIME_COUNTER_VALUE */ + +#endif /* configGENERATE_RUN_TIME_STATS */ + +#ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS + #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() +#endif + +#ifndef configUSE_MALLOC_FAILED_HOOK + #define configUSE_MALLOC_FAILED_HOOK 0 +#endif + +#ifndef portPRIVILEGE_BIT + #define portPRIVILEGE_BIT ( ( UBaseType_t ) 0x00 ) +#endif + +#ifndef portYIELD_WITHIN_API + #define portYIELD_WITHIN_API portYIELD +#endif + +#ifndef portSUPPRESS_TICKS_AND_SLEEP + #define portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime ) +#endif + +#ifndef configEXPECTED_IDLE_TIME_BEFORE_SLEEP + #define configEXPECTED_IDLE_TIME_BEFORE_SLEEP 2 +#endif + +#if configEXPECTED_IDLE_TIME_BEFORE_SLEEP < 2 + #error configEXPECTED_IDLE_TIME_BEFORE_SLEEP must not be less than 2 +#endif + +#ifndef configUSE_TICKLESS_IDLE + #define configUSE_TICKLESS_IDLE 0 +#endif + +#ifndef configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING + #define configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING( x ) +#endif + +#ifndef configPRE_SLEEP_PROCESSING + #define configPRE_SLEEP_PROCESSING( x ) +#endif + +#ifndef configPOST_SLEEP_PROCESSING + #define configPOST_SLEEP_PROCESSING( x ) +#endif + +#ifndef configUSE_QUEUE_SETS + #define configUSE_QUEUE_SETS 0 +#endif + +#ifndef portTASK_USES_FLOATING_POINT + #define portTASK_USES_FLOATING_POINT() +#endif + +#ifndef portALLOCATE_SECURE_CONTEXT + #define portALLOCATE_SECURE_CONTEXT( ulSecureStackSize ) +#endif + +#ifndef portDONT_DISCARD + #define portDONT_DISCARD +#endif + +#ifndef configUSE_TIME_SLICING + #define configUSE_TIME_SLICING 1 +#endif + +#ifndef configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS + #define configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS 0 +#endif + +#ifndef configUSE_STATS_FORMATTING_FUNCTIONS + #define configUSE_STATS_FORMATTING_FUNCTIONS 0 +#endif + +#ifndef portASSERT_IF_INTERRUPT_PRIORITY_INVALID + #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID() +#endif + +#ifndef configUSE_TRACE_FACILITY + #define configUSE_TRACE_FACILITY 0 +#endif + +#ifndef mtCOVERAGE_TEST_MARKER + #define mtCOVERAGE_TEST_MARKER() +#endif + +#ifndef mtCOVERAGE_TEST_DELAY + #define mtCOVERAGE_TEST_DELAY() +#endif + +#ifndef portASSERT_IF_IN_ISR + #define portASSERT_IF_IN_ISR() +#endif + +#ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION + #define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 +#endif + +#ifndef configAPPLICATION_ALLOCATED_HEAP + #define configAPPLICATION_ALLOCATED_HEAP 1 +#endif + +#ifndef configUSE_TASK_NOTIFICATIONS + #define configUSE_TASK_NOTIFICATIONS 1 +#endif + +#ifndef configUSE_POSIX_ERRNO + #define configUSE_POSIX_ERRNO 0 +#endif + +#ifndef portTICK_TYPE_IS_ATOMIC + #define portTICK_TYPE_IS_ATOMIC 0 +#endif + +#ifndef configSUPPORT_STATIC_ALLOCATION + /* Defaults to 0 for backward compatibility. */ + #define configSUPPORT_STATIC_ALLOCATION 0 +#endif + +#ifndef configSUPPORT_DYNAMIC_ALLOCATION + /* Defaults to 1 for backward compatibility. */ + #define configSUPPORT_DYNAMIC_ALLOCATION 1 +#endif + +#ifndef configSTACK_DEPTH_TYPE + /* Defaults to uint16_t for backward compatibility, but can be overridden + in FreeRTOSConfig.h if uint16_t is too restrictive. */ + #define configSTACK_DEPTH_TYPE uint16_t +#endif + +#ifndef configMESSAGE_BUFFER_LENGTH_TYPE + /* Defaults to size_t for backward compatibility, but can be overridden + in FreeRTOSConfig.h if lengths will always be less than the number of bytes + in a size_t. */ + #define configMESSAGE_BUFFER_LENGTH_TYPE size_t +#endif + +/* Sanity check the configuration. */ +#if( configUSE_TICKLESS_IDLE != 0 ) + #if( INCLUDE_vTaskSuspend != 1 ) + #error INCLUDE_vTaskSuspend must be set to 1 if configUSE_TICKLESS_IDLE is not set to 0 + #endif /* INCLUDE_vTaskSuspend */ +#endif /* configUSE_TICKLESS_IDLE */ + +#if( ( configSUPPORT_STATIC_ALLOCATION == 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) ) + #error configSUPPORT_STATIC_ALLOCATION and configSUPPORT_DYNAMIC_ALLOCATION cannot both be 0, but can both be 1. +#endif + +#if( ( configUSE_RECURSIVE_MUTEXES == 1 ) && ( configUSE_MUTEXES != 1 ) ) + #error configUSE_MUTEXES must be set to 1 to use recursive mutexes +#endif + +#ifndef configINITIAL_TICK_COUNT + #define configINITIAL_TICK_COUNT 0 +#endif + +#if( portTICK_TYPE_IS_ATOMIC == 0 ) + /* Either variables of tick type cannot be read atomically, or + portTICK_TYPE_IS_ATOMIC was not set - map the critical sections used when + the tick count is returned to the standard critical section macros. */ + #define portTICK_TYPE_ENTER_CRITICAL() portENTER_CRITICAL() + #define portTICK_TYPE_EXIT_CRITICAL() portEXIT_CRITICAL() + #define portTICK_TYPE_SET_INTERRUPT_MASK_FROM_ISR() portSET_INTERRUPT_MASK_FROM_ISR() + #define portTICK_TYPE_CLEAR_INTERRUPT_MASK_FROM_ISR( x ) portCLEAR_INTERRUPT_MASK_FROM_ISR( ( x ) ) +#else + /* The tick type can be read atomically, so critical sections used when the + tick count is returned can be defined away. */ + #define portTICK_TYPE_ENTER_CRITICAL() + #define portTICK_TYPE_EXIT_CRITICAL() + #define portTICK_TYPE_SET_INTERRUPT_MASK_FROM_ISR() 0 + #define portTICK_TYPE_CLEAR_INTERRUPT_MASK_FROM_ISR( x ) ( void ) x +#endif + +/* Definitions to allow backward compatibility with FreeRTOS versions prior to +V8 if desired. */ +#ifndef configENABLE_BACKWARD_COMPATIBILITY + #define configENABLE_BACKWARD_COMPATIBILITY 1 +#endif + +#ifndef configPRINTF + /* configPRINTF() was not defined, so define it away to nothing. To use + configPRINTF() then define it as follows (where MyPrintFunction() is + provided by the application writer): + + void MyPrintFunction(const char *pcFormat, ... ); + #define configPRINTF( X ) MyPrintFunction X + + Then call like a standard printf() function, but placing brackets around + all parameters so they are passed as a single parameter. For example: + configPRINTF( ("Value = %d", MyVariable) ); */ + #define configPRINTF( X ) +#endif + +#ifndef configMAX + /* The application writer has not provided their own MAX macro, so define + the following generic implementation. */ + #define configMAX( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) ) +#endif + +#ifndef configMIN + /* The application writer has not provided their own MAX macro, so define + the following generic implementation. */ + #define configMIN( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) ) +#endif + +#if configENABLE_BACKWARD_COMPATIBILITY == 1 + #define eTaskStateGet eTaskGetState + #define portTickType TickType_t + #define xTaskHandle TaskHandle_t + #define xQueueHandle QueueHandle_t + #define xSemaphoreHandle SemaphoreHandle_t + #define xQueueSetHandle QueueSetHandle_t + #define xQueueSetMemberHandle QueueSetMemberHandle_t + #define xTimeOutType TimeOut_t + #define xMemoryRegion MemoryRegion_t + #define xTaskParameters TaskParameters_t + #define xTaskStatusType TaskStatus_t + #define xTimerHandle TimerHandle_t + #define xCoRoutineHandle CoRoutineHandle_t + #define pdTASK_HOOK_CODE TaskHookFunction_t + #define portTICK_RATE_MS portTICK_PERIOD_MS + #define pcTaskGetTaskName pcTaskGetName + #define pcTimerGetTimerName pcTimerGetName + #define pcQueueGetQueueName pcQueueGetName + #define vTaskGetTaskInfo vTaskGetInfo + + /* Backward compatibility within the scheduler code only - these definitions + are not really required but are included for completeness. */ + #define tmrTIMER_CALLBACK TimerCallbackFunction_t + #define pdTASK_CODE TaskFunction_t + #define xListItem ListItem_t + #define xList List_t + + /* For libraries that break the list data hiding, and access list structure + members directly (which is not supposed to be done). */ + #define pxContainer pvContainer +#endif /* configENABLE_BACKWARD_COMPATIBILITY */ + +#if( configUSE_ALTERNATIVE_API != 0 ) + #error The alternative API was deprecated some time ago, and was removed in FreeRTOS V9.0 0 +#endif + +/* Set configUSE_TASK_FPU_SUPPORT to 0 to omit floating point support even +if floating point hardware is otherwise supported by the FreeRTOS port in use. +This constant is not supported by all FreeRTOS ports that include floating +point support. */ +#ifndef configUSE_TASK_FPU_SUPPORT + #define configUSE_TASK_FPU_SUPPORT 1 +#endif + +/* Set configENABLE_MPU to 1 to enable MPU support and 0 to disable it. This is +currently used in ARMv8M ports. */ +#ifndef configENABLE_MPU + #define configENABLE_MPU 0 +#endif + +/* Set configENABLE_FPU to 1 to enable FPU support and 0 to disable it. This is +currently used in ARMv8M ports. */ +#ifndef configENABLE_FPU + #define configENABLE_FPU 1 +#endif + +/* Set configENABLE_TRUSTZONE to 1 enable TrustZone support and 0 to disable it. +This is currently used in ARMv8M ports. */ +#ifndef configENABLE_TRUSTZONE + #define configENABLE_TRUSTZONE 1 +#endif + +/* Set configRUN_FREERTOS_SECURE_ONLY to 1 to run the FreeRTOS ARMv8M port on +the Secure Side only. */ +#ifndef configRUN_FREERTOS_SECURE_ONLY + #define configRUN_FREERTOS_SECURE_ONLY 0 +#endif + +/* Sometimes the FreeRTOSConfig.h settings only allow a task to be created using + * dynamically allocated RAM, in which case when any task is deleted it is known + * that both the task's stack and TCB need to be freed. Sometimes the + * FreeRTOSConfig.h settings only allow a task to be created using statically + * allocated RAM, in which case when any task is deleted it is known that neither + * the task's stack or TCB should be freed. Sometimes the FreeRTOSConfig.h + * settings allow a task to be created using either statically or dynamically + * allocated RAM, in which case a member of the TCB is used to record whether the + * stack and/or TCB were allocated statically or dynamically, so when a task is + * deleted the RAM that was allocated dynamically is freed again and no attempt is + * made to free the RAM that was allocated statically. + * tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE is only true if it is possible for a + * task to be created using either statically or dynamically allocated RAM. Note + * that if portUSING_MPU_WRAPPERS is 1 then a protected task can be created with + * a statically allocated stack and a dynamically allocated TCB. + * + * The following table lists various combinations of portUSING_MPU_WRAPPERS, + * configSUPPORT_DYNAMIC_ALLOCATION and configSUPPORT_STATIC_ALLOCATION and + * when it is possible to have both static and dynamic allocation: + * +-----+---------+--------+-----------------------------+-----------------------------------+------------------+-----------+ + * | MPU | Dynamic | Static | Available Functions | Possible Allocations | Both Dynamic and | Need Free | + * | | | | | | Static Possible | | + * +-----+---------+--------+-----------------------------+-----------------------------------+------------------+-----------+ + * | 0 | 0 | 1 | xTaskCreateStatic | TCB - Static, Stack - Static | No | No | + * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------| + * | 0 | 1 | 0 | xTaskCreate | TCB - Dynamic, Stack - Dynamic | No | Yes | + * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------| + * | 0 | 1 | 1 | xTaskCreate, | 1. TCB - Dynamic, Stack - Dynamic | Yes | Yes | + * | | | | xTaskCreateStatic | 2. TCB - Static, Stack - Static | | | + * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------| + * | 1 | 0 | 1 | xTaskCreateStatic, | TCB - Static, Stack - Static | No | No | + * | | | | xTaskCreateRestrictedStatic | | | | + * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------| + * | 1 | 1 | 0 | xTaskCreate, | 1. TCB - Dynamic, Stack - Dynamic | Yes | Yes | + * | | | | xTaskCreateRestricted | 2. TCB - Dynamic, Stack - Static | | | + * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------| + * | 1 | 1 | 1 | xTaskCreate, | 1. TCB - Dynamic, Stack - Dynamic | Yes | Yes | + * | | | | xTaskCreateStatic, | 2. TCB - Dynamic, Stack - Static | | | + * | | | | xTaskCreateRestricted, | 3. TCB - Static, Stack - Static | | | + * | | | | xTaskCreateRestrictedStatic | | | | + * +-----+---------+--------+-----------------------------+-----------------------------------+------------------+-----------+ + */ +#define tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE ( ( ( portUSING_MPU_WRAPPERS == 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) || \ + ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) ) + +/* + * In line with software engineering best practice, FreeRTOS implements a strict + * data hiding policy, so the real structures used by FreeRTOS to maintain the + * state of tasks, queues, semaphores, etc. are not accessible to the application + * code. However, if the application writer wants to statically allocate such + * an object then the size of the object needs to be know. Dummy structures + * that are guaranteed to have the same size and alignment requirements of the + * real objects are used for this purpose. The dummy list and list item + * structures below are used for inclusion in such a dummy structure. + */ +struct xSTATIC_LIST_ITEM +{ + #if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 ) + TickType_t xDummy1; + #endif + TickType_t xDummy2; + void *pvDummy3[ 4 ]; + #if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 ) + TickType_t xDummy4; + #endif +}; +typedef struct xSTATIC_LIST_ITEM StaticListItem_t; + +/* See the comments above the struct xSTATIC_LIST_ITEM definition. */ +struct xSTATIC_MINI_LIST_ITEM +{ + #if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 ) + TickType_t xDummy1; + #endif + TickType_t xDummy2; + void *pvDummy3[ 2 ]; +}; +typedef struct xSTATIC_MINI_LIST_ITEM StaticMiniListItem_t; + +/* See the comments above the struct xSTATIC_LIST_ITEM definition. */ +typedef struct xSTATIC_LIST +{ + #if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 ) + TickType_t xDummy1; + #endif + UBaseType_t uxDummy2; + void *pvDummy3; + StaticMiniListItem_t xDummy4; + #if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 ) + TickType_t xDummy5; + #endif +} StaticList_t; + +/* + * In line with software engineering best practice, especially when supplying a + * library that is likely to change in future versions, FreeRTOS implements a + * strict data hiding policy. This means the Task structure used internally by + * FreeRTOS is not accessible to application code. However, if the application + * writer wants to statically allocate the memory required to create a task then + * the size of the task object needs to be know. The StaticTask_t structure + * below is provided for this purpose. Its sizes and alignment requirements are + * guaranteed to match those of the genuine structure, no matter which + * architecture is being used, and no matter how the values in FreeRTOSConfig.h + * are set. Its contents are somewhat obfuscated in the hope users will + * recognise that it would be unwise to make direct use of the structure members. + */ +typedef struct xSTATIC_TCB +{ + void *pxDummy1; + #if ( portUSING_MPU_WRAPPERS == 1 ) + xMPU_SETTINGS xDummy2; + #endif + StaticListItem_t xDummy3[ 2 ]; + UBaseType_t uxDummy5; + void *pxDummy6; + uint8_t ucDummy7[ configMAX_TASK_NAME_LEN ]; + #if ( ( portSTACK_GROWTH > 0 ) || ( configRECORD_STACK_HIGH_ADDRESS == 1 ) ) + void *pxDummy8; + #endif + #if ( portCRITICAL_NESTING_IN_TCB == 1 ) + UBaseType_t uxDummy9; + #endif + #if ( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxDummy10[ 2 ]; + #endif + #if ( configUSE_MUTEXES == 1 ) + UBaseType_t uxDummy12[ 2 ]; + #endif + #if ( configUSE_APPLICATION_TASK_TAG == 1 ) + void *pxDummy14; + #endif + #if( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 ) + void *pvDummy15[ configNUM_THREAD_LOCAL_STORAGE_POINTERS ]; + #endif + #if ( configGENERATE_RUN_TIME_STATS == 1 ) + uint32_t ulDummy16; + #endif + #if ( configUSE_NEWLIB_REENTRANT == 1 ) + struct _reent xDummy17; + #endif + #if ( configUSE_TASK_NOTIFICATIONS == 1 ) + uint32_t ulDummy18; + uint8_t ucDummy19; + #endif + #if ( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) + uint8_t uxDummy20; + #endif + + #if( INCLUDE_xTaskAbortDelay == 1 ) + uint8_t ucDummy21; + #endif + #if ( configUSE_POSIX_ERRNO == 1 ) + int iDummy22; + #endif +} StaticTask_t; + +/* + * In line with software engineering best practice, especially when supplying a + * library that is likely to change in future versions, FreeRTOS implements a + * strict data hiding policy. This means the Queue structure used internally by + * FreeRTOS is not accessible to application code. However, if the application + * writer wants to statically allocate the memory required to create a queue + * then the size of the queue object needs to be know. The StaticQueue_t + * structure below is provided for this purpose. Its sizes and alignment + * requirements are guaranteed to match those of the genuine structure, no + * matter which architecture is being used, and no matter how the values in + * FreeRTOSConfig.h are set. Its contents are somewhat obfuscated in the hope + * users will recognise that it would be unwise to make direct use of the + * structure members. + */ +typedef struct xSTATIC_QUEUE +{ + void *pvDummy1[ 3 ]; + + union + { + void *pvDummy2; + UBaseType_t uxDummy2; + } u; + + StaticList_t xDummy3[ 2 ]; + UBaseType_t uxDummy4[ 3 ]; + uint8_t ucDummy5[ 2 ]; + + #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + uint8_t ucDummy6; + #endif + + #if ( configUSE_QUEUE_SETS == 1 ) + void *pvDummy7; + #endif + + #if ( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxDummy8; + uint8_t ucDummy9; + #endif + +} StaticQueue_t; +typedef StaticQueue_t StaticSemaphore_t; + +/* + * In line with software engineering best practice, especially when supplying a + * library that is likely to change in future versions, FreeRTOS implements a + * strict data hiding policy. This means the event group structure used + * internally by FreeRTOS is not accessible to application code. However, if + * the application writer wants to statically allocate the memory required to + * create an event group then the size of the event group object needs to be + * know. The StaticEventGroup_t structure below is provided for this purpose. + * Its sizes and alignment requirements are guaranteed to match those of the + * genuine structure, no matter which architecture is being used, and no matter + * how the values in FreeRTOSConfig.h are set. Its contents are somewhat + * obfuscated in the hope users will recognise that it would be unwise to make + * direct use of the structure members. + */ +typedef struct xSTATIC_EVENT_GROUP +{ + TickType_t xDummy1; + StaticList_t xDummy2; + + #if( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxDummy3; + #endif + + #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + uint8_t ucDummy4; + #endif + +} StaticEventGroup_t; + +/* + * In line with software engineering best practice, especially when supplying a + * library that is likely to change in future versions, FreeRTOS implements a + * strict data hiding policy. This means the software timer structure used + * internally by FreeRTOS is not accessible to application code. However, if + * the application writer wants to statically allocate the memory required to + * create a software timer then the size of the queue object needs to be know. + * The StaticTimer_t structure below is provided for this purpose. Its sizes + * and alignment requirements are guaranteed to match those of the genuine + * structure, no matter which architecture is being used, and no matter how the + * values in FreeRTOSConfig.h are set. Its contents are somewhat obfuscated in + * the hope users will recognise that it would be unwise to make direct use of + * the structure members. + */ +typedef struct xSTATIC_TIMER +{ + void *pvDummy1; + StaticListItem_t xDummy2; + TickType_t xDummy3; + void *pvDummy5; + TaskFunction_t pvDummy6; + #if( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxDummy7; + #endif + uint8_t ucDummy8; + +} StaticTimer_t; + +/* +* In line with software engineering best practice, especially when supplying a +* library that is likely to change in future versions, FreeRTOS implements a +* strict data hiding policy. This means the stream buffer structure used +* internally by FreeRTOS is not accessible to application code. However, if +* the application writer wants to statically allocate the memory required to +* create a stream buffer then the size of the stream buffer object needs to be +* know. The StaticStreamBuffer_t structure below is provided for this purpose. +* Its size and alignment requirements are guaranteed to match those of the +* genuine structure, no matter which architecture is being used, and no matter +* how the values in FreeRTOSConfig.h are set. Its contents are somewhat +* obfuscated in the hope users will recognise that it would be unwise to make +* direct use of the structure members. +*/ +typedef struct xSTATIC_STREAM_BUFFER +{ + size_t uxDummy1[ 4 ]; + void * pvDummy2[ 3 ]; + uint8_t ucDummy3; + #if ( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxDummy4; + #endif +} StaticStreamBuffer_t; + +/* Message buffers are built on stream buffers. */ +typedef StaticStreamBuffer_t StaticMessageBuffer_t; + +#ifdef __cplusplus +} +#endif + +#endif /* INC_FREERTOS_H */ + diff --git a/components/freertos/include/StackMacros.h b/components/freertos/include/StackMacros.h new file mode 100644 index 00000000..3ed8b22d --- /dev/null +++ b/components/freertos/include/StackMacros.h @@ -0,0 +1,133 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef STACK_MACROS_H +#define STACK_MACROS_H + +#ifndef _MSC_VER /* Visual Studio doesn't support #warning. */ + #warning The name of this file has changed to stack_macros.h. Please update your code accordingly. This source file (which has the original name) will be removed in future released. +#endif + +/* + * Call the stack overflow hook function if the stack of the task being swapped + * out is currently overflowed, or looks like it might have overflowed in the + * past. + * + * Setting configCHECK_FOR_STACK_OVERFLOW to 1 will cause the macro to check + * the current stack state only - comparing the current top of stack value to + * the stack limit. Setting configCHECK_FOR_STACK_OVERFLOW to greater than 1 + * will also cause the last few stack bytes to be checked to ensure the value + * to which the bytes were set when the task was created have not been + * overwritten. Note this second test does not guarantee that an overflowed + * stack will always be recognised. + */ + +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH < 0 ) ) + + /* Only the current stack state is to be checked. */ + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + /* Is the currently saved stack pointer within the stack limit? */ \ + if( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */ +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH > 0 ) ) + + /* Only the current stack state is to be checked. */ + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + \ + /* Is the currently saved stack pointer within the stack limit? */ \ + if( pxCurrentTCB->pxTopOfStack >= pxCurrentTCB->pxEndOfStack ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */ +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) ) + + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + const uint32_t * const pulStack = ( uint32_t * ) pxCurrentTCB->pxStack; \ + const uint32_t ulCheckValue = ( uint32_t ) 0xa5a5a5a5; \ + \ + if( ( pulStack[ 0 ] != ulCheckValue ) || \ + ( pulStack[ 1 ] != ulCheckValue ) || \ + ( pulStack[ 2 ] != ulCheckValue ) || \ + ( pulStack[ 3 ] != ulCheckValue ) ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */ +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) ) + + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + int8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack; \ + static const uint8_t ucExpectedStackBytes[] = { tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE }; \ + \ + \ + pcEndOfStack -= sizeof( ucExpectedStackBytes ); \ + \ + /* Has the extremity of the task stack ever been written over? */ \ + if( memcmp( ( void * ) pcEndOfStack, ( void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */ +/*-----------------------------------------------------------*/ + +/* Remove stack overflow macro if not being used. */ +#ifndef taskCHECK_FOR_STACK_OVERFLOW + #define taskCHECK_FOR_STACK_OVERFLOW() +#endif + + + +#endif /* STACK_MACROS_H */ + diff --git a/components/freertos/include/atomic.h b/components/freertos/include/atomic.h new file mode 100644 index 00000000..7b05bba2 --- /dev/null +++ b/components/freertos/include/atomic.h @@ -0,0 +1,418 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/** + * @file atomic.h + * @brief FreeRTOS atomic operation support. + * + * This file implements atomic by disabling interrupts globally. + * Implementation with architecture specific atomic instructions + * are to be provided under each compiler directory. + */ + +#ifndef ATOMIC_H +#define ATOMIC_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h must appear in source files before include atomic.h" +#endif + +/* Standard includes. */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Port specific definitions -- entering/exiting critical section. + * Refer template -- ./lib/FreeRTOS/portable/Compiler/Arch/portmacro.h + * + * Every call to ATOMIC_EXIT_CRITICAL() must be closely paired with + * ATOMIC_ENTER_CRITICAL(). + * */ +#if defined( portSET_INTERRUPT_MASK_FROM_ISR ) + + /* Nested interrupt scheme is supported in this port. */ + #define ATOMIC_ENTER_CRITICAL() \ + UBaseType_t uxCriticalSectionType = portSET_INTERRUPT_MASK_FROM_ISR() + + #define ATOMIC_EXIT_CRITICAL() \ + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxCriticalSectionType ) + +#else + + /* Nested interrupt scheme is NOT supported in this port. */ + #define ATOMIC_ENTER_CRITICAL() portENTER_CRITICAL() + #define ATOMIC_EXIT_CRITICAL() portEXIT_CRITICAL() + +#endif /* portSET_INTERRUPT_MASK_FROM_ISR() */ + +/* Port specific definition -- "always inline". + * Inline is compiler specific, and may not always get inlined depending on your optimization level. + * Also, inline is considerred as performance optimization for atomic. + * Thus, if portFORCE_INLINE is not provided by portmacro.h, instead of resulting error, + * simply define it. + */ +#ifndef portFORCE_INLINE + #define portFORCE_INLINE +#endif + +#define ATOMIC_COMPARE_AND_SWAP_SUCCESS 0x1U /**< Compare and swap succeeded, swapped. */ +#define ATOMIC_COMPARE_AND_SWAP_FAILURE 0x0U /**< Compare and swap failed, did not swap. */ + +/*----------------------------- Swap && CAS ------------------------------*/ + +/** + * Atomic compare-and-swap + * + * @brief Performs an atomic compare-and-swap operation on the specified values. + * + * @param[in, out] pDestination Pointer to memory location from where value is + * to be loaded and checked. + * @param[in] ulExchange If condition meets, write this value to memory. + * @param[in] ulComparand Swap condition. + * + * @return Unsigned integer of value 1 or 0. 1 for swapped, 0 for not swapped. + * + * @note This function only swaps *pDestination with ulExchange, if previous + * *pDestination value equals ulComparand. + */ +static portFORCE_INLINE uint32_t Atomic_CompareAndSwap_u32( + uint32_t volatile * pDestination, + uint32_t ulExchange, + uint32_t ulComparand ) +{ + + uint32_t ulReturnValue = ATOMIC_COMPARE_AND_SWAP_FAILURE; + + ATOMIC_ENTER_CRITICAL(); + + if ( *pDestination == ulComparand ) + { + *pDestination = ulExchange; + ulReturnValue = ATOMIC_COMPARE_AND_SWAP_SUCCESS; + } + + ATOMIC_EXIT_CRITICAL(); + + return ulReturnValue; + +} + +/** + * Atomic swap (pointers) + * + * @brief Atomically sets the address pointed to by *ppDestination to the value + * of *pExchange. + * + * @param[in, out] ppDestination Pointer to memory location from where a pointer + * value is to be loaded and written back to. + * @param[in] pExchange Pointer value to be written to *ppDestination. + * + * @return The initial value of *ppDestination. + */ +static portFORCE_INLINE void * Atomic_SwapPointers_p32( + void * volatile * ppDestination, + void * pExchange ) +{ + void * pReturnValue; + + ATOMIC_ENTER_CRITICAL(); + + pReturnValue = *ppDestination; + + *ppDestination = pExchange; + + ATOMIC_EXIT_CRITICAL(); + + return pReturnValue; +} + +/** + * Atomic compare-and-swap (pointers) + * + * @brief Performs an atomic compare-and-swap operation on the specified pointer + * values. + * + * @param[in, out] ppDestination Pointer to memory location from where a pointer + * value is to be loaded and checked. + * @param[in] pExchange If condition meets, write this value to memory. + * @param[in] pComparand Swap condition. + * + * @return Unsigned integer of value 1 or 0. 1 for swapped, 0 for not swapped. + * + * @note This function only swaps *ppDestination with pExchange, if previous + * *ppDestination value equals pComparand. + */ +static portFORCE_INLINE uint32_t Atomic_CompareAndSwapPointers_p32( + void * volatile * ppDestination, + void * pExchange, void * pComparand ) +{ + uint32_t ulReturnValue = ATOMIC_COMPARE_AND_SWAP_FAILURE; + + ATOMIC_ENTER_CRITICAL(); + + if ( *ppDestination == pComparand ) + { + *ppDestination = pExchange; + ulReturnValue = ATOMIC_COMPARE_AND_SWAP_SUCCESS; + } + + ATOMIC_EXIT_CRITICAL(); + + return ulReturnValue; +} + + +/*----------------------------- Arithmetic ------------------------------*/ + +/** + * Atomic add + * + * @brief Atomically adds count to the value of the specified pointer points to. + * + * @param[in,out] pAddend Pointer to memory location from where value is to be + * loaded and written back to. + * @param[in] ulCount Value to be added to *pAddend. + * + * @return previous *pAddend value. + */ +static portFORCE_INLINE uint32_t Atomic_Add_u32( + uint32_t volatile * pAddend, + uint32_t ulCount ) +{ + uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + + ulCurrent = *pAddend; + + *pAddend += ulCount; + + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} + +/** + * Atomic subtract + * + * @brief Atomically subtracts count from the value of the specified pointer + * pointers to. + * + * @param[in,out] pAddend Pointer to memory location from where value is to be + * loaded and written back to. + * @param[in] ulCount Value to be subtract from *pAddend. + * + * @return previous *pAddend value. + */ +static portFORCE_INLINE uint32_t Atomic_Subtract_u32( + uint32_t volatile * pAddend, + uint32_t ulCount ) +{ + uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + + ulCurrent = *pAddend; + + *pAddend -= ulCount; + + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} + +/** + * Atomic increment + * + * @brief Atomically increments the value of the specified pointer points to. + * + * @param[in,out] pAddend Pointer to memory location from where value is to be + * loaded and written back to. + * + * @return *pAddend value before increment. + */ +static portFORCE_INLINE uint32_t Atomic_Increment_u32( uint32_t volatile * pAddend ) +{ + uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + + ulCurrent = *pAddend; + + *pAddend += 1; + + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} + +/** + * Atomic decrement + * + * @brief Atomically decrements the value of the specified pointer points to + * + * @param[in,out] pAddend Pointer to memory location from where value is to be + * loaded and written back to. + * + * @return *pAddend value before decrement. + */ +static portFORCE_INLINE uint32_t Atomic_Decrement_u32( uint32_t volatile * pAddend ) +{ + uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + + ulCurrent = *pAddend; + + *pAddend -= 1; + + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} + +/*----------------------------- Bitwise Logical ------------------------------*/ + +/** + * Atomic OR + * + * @brief Performs an atomic OR operation on the specified values. + * + * @param [in, out] pDestination Pointer to memory location from where value is + * to be loaded and written back to. + * @param [in] ulValue Value to be ORed with *pDestination. + * + * @return The original value of *pDestination. + */ +static portFORCE_INLINE uint32_t Atomic_OR_u32( + uint32_t volatile * pDestination, + uint32_t ulValue ) +{ + uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + + ulCurrent = *pDestination; + + *pDestination |= ulValue; + + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} + +/** + * Atomic AND + * + * @brief Performs an atomic AND operation on the specified values. + * + * @param [in, out] pDestination Pointer to memory location from where value is + * to be loaded and written back to. + * @param [in] ulValue Value to be ANDed with *pDestination. + * + * @return The original value of *pDestination. + */ +static portFORCE_INLINE uint32_t Atomic_AND_u32( + uint32_t volatile * pDestination, + uint32_t ulValue ) +{ + uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + + ulCurrent = *pDestination; + + *pDestination &= ulValue; + + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} + +/** + * Atomic NAND + * + * @brief Performs an atomic NAND operation on the specified values. + * + * @param [in, out] pDestination Pointer to memory location from where value is + * to be loaded and written back to. + * @param [in] ulValue Value to be NANDed with *pDestination. + * + * @return The original value of *pDestination. + */ +static portFORCE_INLINE uint32_t Atomic_NAND_u32( + uint32_t volatile * pDestination, + uint32_t ulValue ) +{ + uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + + ulCurrent = *pDestination; + + *pDestination = ~(ulCurrent & ulValue); + + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} + +/** + * Atomic XOR + * + * @brief Performs an atomic XOR operation on the specified values. + * + * @param [in, out] pDestination Pointer to memory location from where value is + * to be loaded and written back to. + * @param [in] ulValue Value to be XORed with *pDestination. + * + * @return The original value of *pDestination. + */ +static portFORCE_INLINE uint32_t Atomic_XOR_u32( + uint32_t volatile * pDestination, + uint32_t ulValue ) +{ + uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + + ulCurrent = *pDestination; + + *pDestination ^= ulValue; + + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} + +#ifdef __cplusplus +} +#endif + +#endif /* ATOMIC_H */ diff --git a/components/freertos/include/croutine.h b/components/freertos/include/croutine.h new file mode 100644 index 00000000..8b3b41b9 --- /dev/null +++ b/components/freertos/include/croutine.h @@ -0,0 +1,720 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef CO_ROUTINE_H +#define CO_ROUTINE_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h must appear in source files before include croutine.h" +#endif + +#include "list.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Used to hide the implementation of the co-routine control block. The +control block structure however has to be included in the header due to +the macro implementation of the co-routine functionality. */ +typedef void * CoRoutineHandle_t; + +/* Defines the prototype to which co-routine functions must conform. */ +typedef void (*crCOROUTINE_CODE)( CoRoutineHandle_t, UBaseType_t ); + +typedef struct corCoRoutineControlBlock +{ + crCOROUTINE_CODE pxCoRoutineFunction; + ListItem_t xGenericListItem; /*< List item used to place the CRCB in ready and blocked queues. */ + ListItem_t xEventListItem; /*< List item used to place the CRCB in event lists. */ + UBaseType_t uxPriority; /*< The priority of the co-routine in relation to other co-routines. */ + UBaseType_t uxIndex; /*< Used to distinguish between co-routines when multiple co-routines use the same co-routine function. */ + uint16_t uxState; /*< Used internally by the co-routine implementation. */ +} CRCB_t; /* Co-routine control block. Note must be identical in size down to uxPriority with TCB_t. */ + +/** + * croutine. h + *
+ BaseType_t xCoRoutineCreate(
+                                 crCOROUTINE_CODE pxCoRoutineCode,
+                                 UBaseType_t uxPriority,
+                                 UBaseType_t uxIndex
+                               );
+ * + * Create a new co-routine and add it to the list of co-routines that are + * ready to run. + * + * @param pxCoRoutineCode Pointer to the co-routine function. Co-routine + * functions require special syntax - see the co-routine section of the WEB + * documentation for more information. + * + * @param uxPriority The priority with respect to other co-routines at which + * the co-routine will run. + * + * @param uxIndex Used to distinguish between different co-routines that + * execute the same function. See the example below and the co-routine section + * of the WEB documentation for further information. + * + * @return pdPASS if the co-routine was successfully created and added to a ready + * list, otherwise an error code defined with ProjDefs.h. + * + * Example usage: +
+ // Co-routine to be created.
+ void vFlashCoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ // This may not be necessary for const variables.
+ static const char cLedToFlash[ 2 ] = { 5, 6 };
+ static const TickType_t uxFlashRates[ 2 ] = { 200, 400 };
+
+     // Must start every co-routine with a call to crSTART();
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+         // This co-routine just delays for a fixed period, then toggles
+         // an LED.  Two co-routines are created using this function, so
+         // the uxIndex parameter is used to tell the co-routine which
+         // LED to flash and how int32_t to delay.  This assumes xQueue has
+         // already been created.
+         vParTestToggleLED( cLedToFlash[ uxIndex ] );
+         crDELAY( xHandle, uxFlashRates[ uxIndex ] );
+     }
+
+     // Must end every co-routine with a call to crEND();
+     crEND();
+ }
+
+ // Function that creates two co-routines.
+ void vOtherFunction( void )
+ {
+ uint8_t ucParameterToPass;
+ TaskHandle_t xHandle;
+
+     // Create two co-routines at priority 0.  The first is given index 0
+     // so (from the code above) toggles LED 5 every 200 ticks.  The second
+     // is given index 1 so toggles LED 6 every 400 ticks.
+     for( uxIndex = 0; uxIndex < 2; uxIndex++ )
+     {
+         xCoRoutineCreate( vFlashCoRoutine, 0, uxIndex );
+     }
+ }
+   
+ * \defgroup xCoRoutineCreate xCoRoutineCreate + * \ingroup Tasks + */ +BaseType_t xCoRoutineCreate( crCOROUTINE_CODE pxCoRoutineCode, UBaseType_t uxPriority, UBaseType_t uxIndex ); + + +/** + * croutine. h + *
+ void vCoRoutineSchedule( void );
+ * + * Run a co-routine. + * + * vCoRoutineSchedule() executes the highest priority co-routine that is able + * to run. The co-routine will execute until it either blocks, yields or is + * preempted by a task. Co-routines execute cooperatively so one + * co-routine cannot be preempted by another, but can be preempted by a task. + * + * If an application comprises of both tasks and co-routines then + * vCoRoutineSchedule should be called from the idle task (in an idle task + * hook). + * + * Example usage: +
+ // This idle task hook will schedule a co-routine each time it is called.
+ // The rest of the idle task will execute between co-routine calls.
+ void vApplicationIdleHook( void )
+ {
+	vCoRoutineSchedule();
+ }
+
+ // Alternatively, if you do not require any other part of the idle task to
+ // execute, the idle task hook can call vCoRoutineScheduler() within an
+ // infinite loop.
+ void vApplicationIdleHook( void )
+ {
+    for( ;; )
+    {
+        vCoRoutineSchedule();
+    }
+ }
+ 
+ * \defgroup vCoRoutineSchedule vCoRoutineSchedule + * \ingroup Tasks + */ +void vCoRoutineSchedule( void ); + +/** + * croutine. h + *
+ crSTART( CoRoutineHandle_t xHandle );
+ * + * This macro MUST always be called at the start of a co-routine function. + * + * Example usage: +
+ // Co-routine to be created.
+ void vACoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ static int32_t ulAVariable;
+
+     // Must start every co-routine with a call to crSTART();
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+          // Co-routine functionality goes here.
+     }
+
+     // Must end every co-routine with a call to crEND();
+     crEND();
+ }
+ * \defgroup crSTART crSTART + * \ingroup Tasks + */ +#define crSTART( pxCRCB ) switch( ( ( CRCB_t * )( pxCRCB ) )->uxState ) { case 0: + +/** + * croutine. h + *
+ crEND();
+ * + * This macro MUST always be called at the end of a co-routine function. + * + * Example usage: +
+ // Co-routine to be created.
+ void vACoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ static int32_t ulAVariable;
+
+     // Must start every co-routine with a call to crSTART();
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+          // Co-routine functionality goes here.
+     }
+
+     // Must end every co-routine with a call to crEND();
+     crEND();
+ }
+ * \defgroup crSTART crSTART + * \ingroup Tasks + */ +#define crEND() } + +/* + * These macros are intended for internal use by the co-routine implementation + * only. The macros should not be used directly by application writers. + */ +#define crSET_STATE0( xHandle ) ( ( CRCB_t * )( xHandle ) )->uxState = (__LINE__ * 2); return; case (__LINE__ * 2): +#define crSET_STATE1( xHandle ) ( ( CRCB_t * )( xHandle ) )->uxState = ((__LINE__ * 2)+1); return; case ((__LINE__ * 2)+1): + +/** + * croutine. h + *
+ crDELAY( CoRoutineHandle_t xHandle, TickType_t xTicksToDelay );
+ * + * Delay a co-routine for a fixed period of time. + * + * crDELAY can only be called from the co-routine function itself - not + * from within a function called by the co-routine function. This is because + * co-routines do not maintain their own stack. + * + * @param xHandle The handle of the co-routine to delay. This is the xHandle + * parameter of the co-routine function. + * + * @param xTickToDelay The number of ticks that the co-routine should delay + * for. The actual amount of time this equates to is defined by + * configTICK_RATE_HZ (set in FreeRTOSConfig.h). The constant portTICK_PERIOD_MS + * can be used to convert ticks to milliseconds. + * + * Example usage: +
+ // Co-routine to be created.
+ void vACoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ // This may not be necessary for const variables.
+ // We are to delay for 200ms.
+ static const xTickType xDelayTime = 200 / portTICK_PERIOD_MS;
+
+     // Must start every co-routine with a call to crSTART();
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+        // Delay for 200ms.
+        crDELAY( xHandle, xDelayTime );
+
+        // Do something here.
+     }
+
+     // Must end every co-routine with a call to crEND();
+     crEND();
+ }
+ * \defgroup crDELAY crDELAY + * \ingroup Tasks + */ +#define crDELAY( xHandle, xTicksToDelay ) \ + if( ( xTicksToDelay ) > 0 ) \ + { \ + vCoRoutineAddToDelayedList( ( xTicksToDelay ), NULL ); \ + } \ + crSET_STATE0( ( xHandle ) ); + +/** + *
+ crQUEUE_SEND(
+                  CoRoutineHandle_t xHandle,
+                  QueueHandle_t pxQueue,
+                  void *pvItemToQueue,
+                  TickType_t xTicksToWait,
+                  BaseType_t *pxResult
+             )
+ * + * The macro's crQUEUE_SEND() and crQUEUE_RECEIVE() are the co-routine + * equivalent to the xQueueSend() and xQueueReceive() functions used by tasks. + * + * crQUEUE_SEND and crQUEUE_RECEIVE can only be used from a co-routine whereas + * xQueueSend() and xQueueReceive() can only be used from tasks. + * + * crQUEUE_SEND can only be called from the co-routine function itself - not + * from within a function called by the co-routine function. This is because + * co-routines do not maintain their own stack. + * + * See the co-routine section of the WEB documentation for information on + * passing data between tasks and co-routines and between ISR's and + * co-routines. + * + * @param xHandle The handle of the calling co-routine. This is the xHandle + * parameter of the co-routine function. + * + * @param pxQueue The handle of the queue on which the data will be posted. + * The handle is obtained as the return value when the queue is created using + * the xQueueCreate() API function. + * + * @param pvItemToQueue A pointer to the data being posted onto the queue. + * The number of bytes of each queued item is specified when the queue is + * created. This number of bytes is copied from pvItemToQueue into the queue + * itself. + * + * @param xTickToDelay The number of ticks that the co-routine should block + * to wait for space to become available on the queue, should space not be + * available immediately. The actual amount of time this equates to is defined + * by configTICK_RATE_HZ (set in FreeRTOSConfig.h). The constant + * portTICK_PERIOD_MS can be used to convert ticks to milliseconds (see example + * below). + * + * @param pxResult The variable pointed to by pxResult will be set to pdPASS if + * data was successfully posted onto the queue, otherwise it will be set to an + * error defined within ProjDefs.h. + * + * Example usage: +
+ // Co-routine function that blocks for a fixed period then posts a number onto
+ // a queue.
+ static void prvCoRoutineFlashTask( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ static BaseType_t xNumberToPost = 0;
+ static BaseType_t xResult;
+
+    // Co-routines must begin with a call to crSTART().
+    crSTART( xHandle );
+
+    for( ;; )
+    {
+        // This assumes the queue has already been created.
+        crQUEUE_SEND( xHandle, xCoRoutineQueue, &xNumberToPost, NO_DELAY, &xResult );
+
+        if( xResult != pdPASS )
+        {
+            // The message was not posted!
+        }
+
+        // Increment the number to be posted onto the queue.
+        xNumberToPost++;
+
+        // Delay for 100 ticks.
+        crDELAY( xHandle, 100 );
+    }
+
+    // Co-routines must end with a call to crEND().
+    crEND();
+ }
+ * \defgroup crQUEUE_SEND crQUEUE_SEND + * \ingroup Tasks + */ +#define crQUEUE_SEND( xHandle, pxQueue, pvItemToQueue, xTicksToWait, pxResult ) \ +{ \ + *( pxResult ) = xQueueCRSend( ( pxQueue) , ( pvItemToQueue) , ( xTicksToWait ) ); \ + if( *( pxResult ) == errQUEUE_BLOCKED ) \ + { \ + crSET_STATE0( ( xHandle ) ); \ + *pxResult = xQueueCRSend( ( pxQueue ), ( pvItemToQueue ), 0 ); \ + } \ + if( *pxResult == errQUEUE_YIELD ) \ + { \ + crSET_STATE1( ( xHandle ) ); \ + *pxResult = pdPASS; \ + } \ +} + +/** + * croutine. h + *
+  crQUEUE_RECEIVE(
+                     CoRoutineHandle_t xHandle,
+                     QueueHandle_t pxQueue,
+                     void *pvBuffer,
+                     TickType_t xTicksToWait,
+                     BaseType_t *pxResult
+                 )
+ * + * The macro's crQUEUE_SEND() and crQUEUE_RECEIVE() are the co-routine + * equivalent to the xQueueSend() and xQueueReceive() functions used by tasks. + * + * crQUEUE_SEND and crQUEUE_RECEIVE can only be used from a co-routine whereas + * xQueueSend() and xQueueReceive() can only be used from tasks. + * + * crQUEUE_RECEIVE can only be called from the co-routine function itself - not + * from within a function called by the co-routine function. This is because + * co-routines do not maintain their own stack. + * + * See the co-routine section of the WEB documentation for information on + * passing data between tasks and co-routines and between ISR's and + * co-routines. + * + * @param xHandle The handle of the calling co-routine. This is the xHandle + * parameter of the co-routine function. + * + * @param pxQueue The handle of the queue from which the data will be received. + * The handle is obtained as the return value when the queue is created using + * the xQueueCreate() API function. + * + * @param pvBuffer The buffer into which the received item is to be copied. + * The number of bytes of each queued item is specified when the queue is + * created. This number of bytes is copied into pvBuffer. + * + * @param xTickToDelay The number of ticks that the co-routine should block + * to wait for data to become available from the queue, should data not be + * available immediately. The actual amount of time this equates to is defined + * by configTICK_RATE_HZ (set in FreeRTOSConfig.h). The constant + * portTICK_PERIOD_MS can be used to convert ticks to milliseconds (see the + * crQUEUE_SEND example). + * + * @param pxResult The variable pointed to by pxResult will be set to pdPASS if + * data was successfully retrieved from the queue, otherwise it will be set to + * an error code as defined within ProjDefs.h. + * + * Example usage: +
+ // A co-routine receives the number of an LED to flash from a queue.  It
+ // blocks on the queue until the number is received.
+ static void prvCoRoutineFlashWorkTask( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ static BaseType_t xResult;
+ static UBaseType_t uxLEDToFlash;
+
+    // All co-routines must start with a call to crSTART().
+    crSTART( xHandle );
+
+    for( ;; )
+    {
+        // Wait for data to become available on the queue.
+        crQUEUE_RECEIVE( xHandle, xCoRoutineQueue, &uxLEDToFlash, portMAX_DELAY, &xResult );
+
+        if( xResult == pdPASS )
+        {
+            // We received the LED to flash - flash it!
+            vParTestToggleLED( uxLEDToFlash );
+        }
+    }
+
+    crEND();
+ }
+ * \defgroup crQUEUE_RECEIVE crQUEUE_RECEIVE + * \ingroup Tasks + */ +#define crQUEUE_RECEIVE( xHandle, pxQueue, pvBuffer, xTicksToWait, pxResult ) \ +{ \ + *( pxResult ) = xQueueCRReceive( ( pxQueue) , ( pvBuffer ), ( xTicksToWait ) ); \ + if( *( pxResult ) == errQUEUE_BLOCKED ) \ + { \ + crSET_STATE0( ( xHandle ) ); \ + *( pxResult ) = xQueueCRReceive( ( pxQueue) , ( pvBuffer ), 0 ); \ + } \ + if( *( pxResult ) == errQUEUE_YIELD ) \ + { \ + crSET_STATE1( ( xHandle ) ); \ + *( pxResult ) = pdPASS; \ + } \ +} + +/** + * croutine. h + *
+  crQUEUE_SEND_FROM_ISR(
+                            QueueHandle_t pxQueue,
+                            void *pvItemToQueue,
+                            BaseType_t xCoRoutinePreviouslyWoken
+                       )
+ * + * The macro's crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() are the + * co-routine equivalent to the xQueueSendFromISR() and xQueueReceiveFromISR() + * functions used by tasks. + * + * crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() can only be used to + * pass data between a co-routine and and ISR, whereas xQueueSendFromISR() and + * xQueueReceiveFromISR() can only be used to pass data between a task and and + * ISR. + * + * crQUEUE_SEND_FROM_ISR can only be called from an ISR to send data to a queue + * that is being used from within a co-routine. + * + * See the co-routine section of the WEB documentation for information on + * passing data between tasks and co-routines and between ISR's and + * co-routines. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xCoRoutinePreviouslyWoken This is included so an ISR can post onto + * the same queue multiple times from a single interrupt. The first call + * should always pass in pdFALSE. Subsequent calls should pass in + * the value returned from the previous call. + * + * @return pdTRUE if a co-routine was woken by posting onto the queue. This is + * used by the ISR to determine if a context switch may be required following + * the ISR. + * + * Example usage: +
+ // A co-routine that blocks on a queue waiting for characters to be received.
+ static void vReceivingCoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ char cRxedChar;
+ BaseType_t xResult;
+
+     // All co-routines must start with a call to crSTART().
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+         // Wait for data to become available on the queue.  This assumes the
+         // queue xCommsRxQueue has already been created!
+         crQUEUE_RECEIVE( xHandle, xCommsRxQueue, &uxLEDToFlash, portMAX_DELAY, &xResult );
+
+         // Was a character received?
+         if( xResult == pdPASS )
+         {
+             // Process the character here.
+         }
+     }
+
+     // All co-routines must end with a call to crEND().
+     crEND();
+ }
+
+ // An ISR that uses a queue to send characters received on a serial port to
+ // a co-routine.
+ void vUART_ISR( void )
+ {
+ char cRxedChar;
+ BaseType_t xCRWokenByPost = pdFALSE;
+
+     // We loop around reading characters until there are none left in the UART.
+     while( UART_RX_REG_NOT_EMPTY() )
+     {
+         // Obtain the character from the UART.
+         cRxedChar = UART_RX_REG;
+
+         // Post the character onto a queue.  xCRWokenByPost will be pdFALSE
+         // the first time around the loop.  If the post causes a co-routine
+         // to be woken (unblocked) then xCRWokenByPost will be set to pdTRUE.
+         // In this manner we can ensure that if more than one co-routine is
+         // blocked on the queue only one is woken by this ISR no matter how
+         // many characters are posted to the queue.
+         xCRWokenByPost = crQUEUE_SEND_FROM_ISR( xCommsRxQueue, &cRxedChar, xCRWokenByPost );
+     }
+ }
+ * \defgroup crQUEUE_SEND_FROM_ISR crQUEUE_SEND_FROM_ISR + * \ingroup Tasks + */ +#define crQUEUE_SEND_FROM_ISR( pxQueue, pvItemToQueue, xCoRoutinePreviouslyWoken ) xQueueCRSendFromISR( ( pxQueue ), ( pvItemToQueue ), ( xCoRoutinePreviouslyWoken ) ) + + +/** + * croutine. h + *
+  crQUEUE_SEND_FROM_ISR(
+                            QueueHandle_t pxQueue,
+                            void *pvBuffer,
+                            BaseType_t * pxCoRoutineWoken
+                       )
+ * + * The macro's crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() are the + * co-routine equivalent to the xQueueSendFromISR() and xQueueReceiveFromISR() + * functions used by tasks. + * + * crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() can only be used to + * pass data between a co-routine and and ISR, whereas xQueueSendFromISR() and + * xQueueReceiveFromISR() can only be used to pass data between a task and and + * ISR. + * + * crQUEUE_RECEIVE_FROM_ISR can only be called from an ISR to receive data + * from a queue that is being used from within a co-routine (a co-routine + * posted to the queue). + * + * See the co-routine section of the WEB documentation for information on + * passing data between tasks and co-routines and between ISR's and + * co-routines. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvBuffer A pointer to a buffer into which the received item will be + * placed. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from the queue into + * pvBuffer. + * + * @param pxCoRoutineWoken A co-routine may be blocked waiting for space to become + * available on the queue. If crQUEUE_RECEIVE_FROM_ISR causes such a + * co-routine to unblock *pxCoRoutineWoken will get set to pdTRUE, otherwise + * *pxCoRoutineWoken will remain unchanged. + * + * @return pdTRUE an item was successfully received from the queue, otherwise + * pdFALSE. + * + * Example usage: +
+ // A co-routine that posts a character to a queue then blocks for a fixed
+ // period.  The character is incremented each time.
+ static void vSendingCoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // cChar holds its value while this co-routine is blocked and must therefore
+ // be declared static.
+ static char cCharToTx = 'a';
+ BaseType_t xResult;
+
+     // All co-routines must start with a call to crSTART().
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+         // Send the next character to the queue.
+         crQUEUE_SEND( xHandle, xCoRoutineQueue, &cCharToTx, NO_DELAY, &xResult );
+
+         if( xResult == pdPASS )
+         {
+             // The character was successfully posted to the queue.
+         }
+		 else
+		 {
+			// Could not post the character to the queue.
+		 }
+
+         // Enable the UART Tx interrupt to cause an interrupt in this
+		 // hypothetical UART.  The interrupt will obtain the character
+		 // from the queue and send it.
+		 ENABLE_RX_INTERRUPT();
+
+		 // Increment to the next character then block for a fixed period.
+		 // cCharToTx will maintain its value across the delay as it is
+		 // declared static.
+		 cCharToTx++;
+		 if( cCharToTx > 'x' )
+		 {
+			cCharToTx = 'a';
+		 }
+		 crDELAY( 100 );
+     }
+
+     // All co-routines must end with a call to crEND().
+     crEND();
+ }
+
+ // An ISR that uses a queue to receive characters to send on a UART.
+ void vUART_ISR( void )
+ {
+ char cCharToTx;
+ BaseType_t xCRWokenByPost = pdFALSE;
+
+     while( UART_TX_REG_EMPTY() )
+     {
+         // Are there any characters in the queue waiting to be sent?
+		 // xCRWokenByPost will automatically be set to pdTRUE if a co-routine
+		 // is woken by the post - ensuring that only a single co-routine is
+		 // woken no matter how many times we go around this loop.
+         if( crQUEUE_RECEIVE_FROM_ISR( pxQueue, &cCharToTx, &xCRWokenByPost ) )
+		 {
+			 SEND_CHARACTER( cCharToTx );
+		 }
+     }
+ }
+ * \defgroup crQUEUE_RECEIVE_FROM_ISR crQUEUE_RECEIVE_FROM_ISR + * \ingroup Tasks + */ +#define crQUEUE_RECEIVE_FROM_ISR( pxQueue, pvBuffer, pxCoRoutineWoken ) xQueueCRReceiveFromISR( ( pxQueue ), ( pvBuffer ), ( pxCoRoutineWoken ) ) + +/* + * This function is intended for internal use by the co-routine macros only. + * The macro nature of the co-routine implementation requires that the + * prototype appears here. The function should not be used by application + * writers. + * + * Removes the current co-routine from its ready list and places it in the + * appropriate delayed list. + */ +void vCoRoutineAddToDelayedList( TickType_t xTicksToDelay, List_t *pxEventList ); + +/* + * This function is intended for internal use by the queue implementation only. + * The function should not be used by application writers. + * + * Removes the highest priority co-routine from the event list and places it in + * the pending ready list. + */ +BaseType_t xCoRoutineRemoveFromEventList( const List_t *pxEventList ); + +#ifdef __cplusplus +} +#endif + +#endif /* CO_ROUTINE_H */ diff --git a/components/freertos/include/deprecated_definitions.h b/components/freertos/include/deprecated_definitions.h new file mode 100644 index 00000000..9cece988 --- /dev/null +++ b/components/freertos/include/deprecated_definitions.h @@ -0,0 +1,279 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef DEPRECATED_DEFINITIONS_H +#define DEPRECATED_DEFINITIONS_H + + +/* Each FreeRTOS port has a unique portmacro.h header file. Originally a +pre-processor definition was used to ensure the pre-processor found the correct +portmacro.h file for the port being used. That scheme was deprecated in favour +of setting the compiler's include path such that it found the correct +portmacro.h file - removing the need for the constant and allowing the +portmacro.h file to be located anywhere in relation to the port being used. The +definitions below remain in the code for backward compatibility only. New +projects should not use them. */ + +#ifdef OPEN_WATCOM_INDUSTRIAL_PC_PORT + #include "..\..\Source\portable\owatcom\16bitdos\pc\portmacro.h" + typedef void ( __interrupt __far *pxISR )(); +#endif + +#ifdef OPEN_WATCOM_FLASH_LITE_186_PORT + #include "..\..\Source\portable\owatcom\16bitdos\flsh186\portmacro.h" + typedef void ( __interrupt __far *pxISR )(); +#endif + +#ifdef GCC_MEGA_AVR + #include "../portable/GCC/ATMega323/portmacro.h" +#endif + +#ifdef IAR_MEGA_AVR + #include "../portable/IAR/ATMega323/portmacro.h" +#endif + +#ifdef MPLAB_PIC24_PORT + #include "../../Source/portable/MPLAB/PIC24_dsPIC/portmacro.h" +#endif + +#ifdef MPLAB_DSPIC_PORT + #include "../../Source/portable/MPLAB/PIC24_dsPIC/portmacro.h" +#endif + +#ifdef MPLAB_PIC18F_PORT + #include "../../Source/portable/MPLAB/PIC18F/portmacro.h" +#endif + +#ifdef MPLAB_PIC32MX_PORT + #include "../../Source/portable/MPLAB/PIC32MX/portmacro.h" +#endif + +#ifdef _FEDPICC + #include "libFreeRTOS/Include/portmacro.h" +#endif + +#ifdef SDCC_CYGNAL + #include "../../Source/portable/SDCC/Cygnal/portmacro.h" +#endif + +#ifdef GCC_ARM7 + #include "../../Source/portable/GCC/ARM7_LPC2000/portmacro.h" +#endif + +#ifdef GCC_ARM7_ECLIPSE + #include "portmacro.h" +#endif + +#ifdef ROWLEY_LPC23xx + #include "../../Source/portable/GCC/ARM7_LPC23xx/portmacro.h" +#endif + +#ifdef IAR_MSP430 + #include "..\..\Source\portable\IAR\MSP430\portmacro.h" +#endif + +#ifdef GCC_MSP430 + #include "../../Source/portable/GCC/MSP430F449/portmacro.h" +#endif + +#ifdef ROWLEY_MSP430 + #include "../../Source/portable/Rowley/MSP430F449/portmacro.h" +#endif + +#ifdef ARM7_LPC21xx_KEIL_RVDS + #include "..\..\Source\portable\RVDS\ARM7_LPC21xx\portmacro.h" +#endif + +#ifdef SAM7_GCC + #include "../../Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h" +#endif + +#ifdef SAM7_IAR + #include "..\..\Source\portable\IAR\AtmelSAM7S64\portmacro.h" +#endif + +#ifdef SAM9XE_IAR + #include "..\..\Source\portable\IAR\AtmelSAM9XE\portmacro.h" +#endif + +#ifdef LPC2000_IAR + #include "..\..\Source\portable\IAR\LPC2000\portmacro.h" +#endif + +#ifdef STR71X_IAR + #include "..\..\Source\portable\IAR\STR71x\portmacro.h" +#endif + +#ifdef STR75X_IAR + #include "..\..\Source\portable\IAR\STR75x\portmacro.h" +#endif + +#ifdef STR75X_GCC + #include "..\..\Source\portable\GCC\STR75x\portmacro.h" +#endif + +#ifdef STR91X_IAR + #include "..\..\Source\portable\IAR\STR91x\portmacro.h" +#endif + +#ifdef GCC_H8S + #include "../../Source/portable/GCC/H8S2329/portmacro.h" +#endif + +#ifdef GCC_AT91FR40008 + #include "../../Source/portable/GCC/ARM7_AT91FR40008/portmacro.h" +#endif + +#ifdef RVDS_ARMCM3_LM3S102 + #include "../../Source/portable/RVDS/ARM_CM3/portmacro.h" +#endif + +#ifdef GCC_ARMCM3_LM3S102 + #include "../../Source/portable/GCC/ARM_CM3/portmacro.h" +#endif + +#ifdef GCC_ARMCM3 + #include "../../Source/portable/GCC/ARM_CM3/portmacro.h" +#endif + +#ifdef IAR_ARM_CM3 + #include "../../Source/portable/IAR/ARM_CM3/portmacro.h" +#endif + +#ifdef IAR_ARMCM3_LM + #include "../../Source/portable/IAR/ARM_CM3/portmacro.h" +#endif + +#ifdef HCS12_CODE_WARRIOR + #include "../../Source/portable/CodeWarrior/HCS12/portmacro.h" +#endif + +#ifdef MICROBLAZE_GCC + #include "../../Source/portable/GCC/MicroBlaze/portmacro.h" +#endif + +#ifdef TERN_EE + #include "..\..\Source\portable\Paradigm\Tern_EE\small\portmacro.h" +#endif + +#ifdef GCC_HCS12 + #include "../../Source/portable/GCC/HCS12/portmacro.h" +#endif + +#ifdef GCC_MCF5235 + #include "../../Source/portable/GCC/MCF5235/portmacro.h" +#endif + +#ifdef COLDFIRE_V2_GCC + #include "../../../Source/portable/GCC/ColdFire_V2/portmacro.h" +#endif + +#ifdef COLDFIRE_V2_CODEWARRIOR + #include "../../Source/portable/CodeWarrior/ColdFire_V2/portmacro.h" +#endif + +#ifdef GCC_PPC405 + #include "../../Source/portable/GCC/PPC405_Xilinx/portmacro.h" +#endif + +#ifdef GCC_PPC440 + #include "../../Source/portable/GCC/PPC440_Xilinx/portmacro.h" +#endif + +#ifdef _16FX_SOFTUNE + #include "..\..\Source\portable\Softune\MB96340\portmacro.h" +#endif + +#ifdef BCC_INDUSTRIAL_PC_PORT + /* A short file name has to be used in place of the normal + FreeRTOSConfig.h when using the Borland compiler. */ + #include "frconfig.h" + #include "..\portable\BCC\16BitDOS\PC\prtmacro.h" + typedef void ( __interrupt __far *pxISR )(); +#endif + +#ifdef BCC_FLASH_LITE_186_PORT + /* A short file name has to be used in place of the normal + FreeRTOSConfig.h when using the Borland compiler. */ + #include "frconfig.h" + #include "..\portable\BCC\16BitDOS\flsh186\prtmacro.h" + typedef void ( __interrupt __far *pxISR )(); +#endif + +#ifdef __GNUC__ + #ifdef __AVR32_AVR32A__ + #include "portmacro.h" + #endif +#endif + +#ifdef __ICCAVR32__ + #ifdef __CORE__ + #if __CORE__ == __AVR32A__ + #include "portmacro.h" + #endif + #endif +#endif + +#ifdef __91467D + #include "portmacro.h" +#endif + +#ifdef __96340 + #include "portmacro.h" +#endif + + +#ifdef __IAR_V850ES_Fx3__ + #include "../../Source/portable/IAR/V850ES/portmacro.h" +#endif + +#ifdef __IAR_V850ES_Jx3__ + #include "../../Source/portable/IAR/V850ES/portmacro.h" +#endif + +#ifdef __IAR_V850ES_Jx3_L__ + #include "../../Source/portable/IAR/V850ES/portmacro.h" +#endif + +#ifdef __IAR_V850ES_Jx2__ + #include "../../Source/portable/IAR/V850ES/portmacro.h" +#endif + +#ifdef __IAR_V850ES_Hx2__ + #include "../../Source/portable/IAR/V850ES/portmacro.h" +#endif + +#ifdef __IAR_78K0R_Kx3__ + #include "../../Source/portable/IAR/78K0R/portmacro.h" +#endif + +#ifdef __IAR_78K0R_Kx3L__ + #include "../../Source/portable/IAR/78K0R/portmacro.h" +#endif + +#endif /* DEPRECATED_DEFINITIONS_H */ + diff --git a/components/freertos/include/event_groups.h b/components/freertos/include/event_groups.h new file mode 100644 index 00000000..1f38bdb7 --- /dev/null +++ b/components/freertos/include/event_groups.h @@ -0,0 +1,757 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef EVENT_GROUPS_H +#define EVENT_GROUPS_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h" must appear in source files before "include event_groups.h" +#endif + +/* FreeRTOS includes. */ +#include "timers.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * An event group is a collection of bits to which an application can assign a + * meaning. For example, an application may create an event group to convey + * the status of various CAN bus related events in which bit 0 might mean "A CAN + * message has been received and is ready for processing", bit 1 might mean "The + * application has queued a message that is ready for sending onto the CAN + * network", and bit 2 might mean "It is time to send a SYNC message onto the + * CAN network" etc. A task can then test the bit values to see which events + * are active, and optionally enter the Blocked state to wait for a specified + * bit or a group of specified bits to be active. To continue the CAN bus + * example, a CAN controlling task can enter the Blocked state (and therefore + * not consume any processing time) until either bit 0, bit 1 or bit 2 are + * active, at which time the bit that was actually active would inform the task + * which action it had to take (process a received message, send a message, or + * send a SYNC). + * + * The event groups implementation contains intelligence to avoid race + * conditions that would otherwise occur were an application to use a simple + * variable for the same purpose. This is particularly important with respect + * to when a bit within an event group is to be cleared, and when bits have to + * be set and then tested atomically - as is the case where event groups are + * used to create a synchronisation point between multiple tasks (a + * 'rendezvous'). + * + * \defgroup EventGroup + */ + + + +/** + * event_groups.h + * + * Type by which event groups are referenced. For example, a call to + * xEventGroupCreate() returns an EventGroupHandle_t variable that can then + * be used as a parameter to other event group functions. + * + * \defgroup EventGroupHandle_t EventGroupHandle_t + * \ingroup EventGroup + */ +struct EventGroupDef_t; +typedef struct EventGroupDef_t * EventGroupHandle_t; + +/* + * The type that holds event bits always matches TickType_t - therefore the + * number of bits it holds is set by configUSE_16_BIT_TICKS (16 bits if set to 1, + * 32 bits if set to 0. + * + * \defgroup EventBits_t EventBits_t + * \ingroup EventGroup + */ +typedef TickType_t EventBits_t; + +/** + * event_groups.h + *
+ EventGroupHandle_t xEventGroupCreate( void );
+ 
+ * + * Create a new event group. + * + * Internally, within the FreeRTOS implementation, event groups use a [small] + * block of memory, in which the event group's structure is stored. If an event + * groups is created using xEventGropuCreate() then the required memory is + * automatically dynamically allocated inside the xEventGroupCreate() function. + * (see http://www.freertos.org/a00111.html). If an event group is created + * using xEventGropuCreateStatic() then the application writer must instead + * provide the memory that will get used by the event group. + * xEventGroupCreateStatic() therefore allows an event group to be created + * without using any dynamic memory allocation. + * + * Although event groups are not related to ticks, for internal implementation + * reasons the number of bits available for use in an event group is dependent + * on the configUSE_16_BIT_TICKS setting in FreeRTOSConfig.h. If + * configUSE_16_BIT_TICKS is 1 then each event group contains 8 usable bits (bit + * 0 to bit 7). If configUSE_16_BIT_TICKS is set to 0 then each event group has + * 24 usable bits (bit 0 to bit 23). The EventBits_t type is used to store + * event bits within an event group. + * + * @return If the event group was created then a handle to the event group is + * returned. If there was insufficient FreeRTOS heap available to create the + * event group then NULL is returned. See http://www.freertos.org/a00111.html + * + * Example usage: +
+	// Declare a variable to hold the created event group.
+	EventGroupHandle_t xCreatedEventGroup;
+
+	// Attempt to create the event group.
+	xCreatedEventGroup = xEventGroupCreate();
+
+	// Was the event group created successfully?
+	if( xCreatedEventGroup == NULL )
+	{
+		// The event group was not created because there was insufficient
+		// FreeRTOS heap available.
+	}
+	else
+	{
+		// The event group was created.
+	}
+   
+ * \defgroup xEventGroupCreate xEventGroupCreate + * \ingroup EventGroup + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + EventGroupHandle_t xEventGroupCreate( void ) PRIVILEGED_FUNCTION; +#endif + +/** + * event_groups.h + *
+ EventGroupHandle_t xEventGroupCreateStatic( EventGroupHandle_t * pxEventGroupBuffer );
+ 
+ * + * Create a new event group. + * + * Internally, within the FreeRTOS implementation, event groups use a [small] + * block of memory, in which the event group's structure is stored. If an event + * groups is created using xEventGropuCreate() then the required memory is + * automatically dynamically allocated inside the xEventGroupCreate() function. + * (see http://www.freertos.org/a00111.html). If an event group is created + * using xEventGropuCreateStatic() then the application writer must instead + * provide the memory that will get used by the event group. + * xEventGroupCreateStatic() therefore allows an event group to be created + * without using any dynamic memory allocation. + * + * Although event groups are not related to ticks, for internal implementation + * reasons the number of bits available for use in an event group is dependent + * on the configUSE_16_BIT_TICKS setting in FreeRTOSConfig.h. If + * configUSE_16_BIT_TICKS is 1 then each event group contains 8 usable bits (bit + * 0 to bit 7). If configUSE_16_BIT_TICKS is set to 0 then each event group has + * 24 usable bits (bit 0 to bit 23). The EventBits_t type is used to store + * event bits within an event group. + * + * @param pxEventGroupBuffer pxEventGroupBuffer must point to a variable of type + * StaticEventGroup_t, which will be then be used to hold the event group's data + * structures, removing the need for the memory to be allocated dynamically. + * + * @return If the event group was created then a handle to the event group is + * returned. If pxEventGroupBuffer was NULL then NULL is returned. + * + * Example usage: +
+	// StaticEventGroup_t is a publicly accessible structure that has the same
+	// size and alignment requirements as the real event group structure.  It is
+	// provided as a mechanism for applications to know the size of the event
+	// group (which is dependent on the architecture and configuration file
+	// settings) without breaking the strict data hiding policy by exposing the
+	// real event group internals.  This StaticEventGroup_t variable is passed
+	// into the xSemaphoreCreateEventGroupStatic() function and is used to store
+	// the event group's data structures
+	StaticEventGroup_t xEventGroupBuffer;
+
+	// Create the event group without dynamically allocating any memory.
+	xEventGroup = xEventGroupCreateStatic( &xEventGroupBuffer );
+   
+ */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + EventGroupHandle_t xEventGroupCreateStatic( StaticEventGroup_t *pxEventGroupBuffer ) PRIVILEGED_FUNCTION; +#endif + +/** + * event_groups.h + *
+	EventBits_t xEventGroupWaitBits( 	EventGroupHandle_t xEventGroup,
+										const EventBits_t uxBitsToWaitFor,
+										const BaseType_t xClearOnExit,
+										const BaseType_t xWaitForAllBits,
+										const TickType_t xTicksToWait );
+ 
+ * + * [Potentially] block to wait for one or more bits to be set within a + * previously created event group. + * + * This function cannot be called from an interrupt. + * + * @param xEventGroup The event group in which the bits are being tested. The + * event group must have previously been created using a call to + * xEventGroupCreate(). + * + * @param uxBitsToWaitFor A bitwise value that indicates the bit or bits to test + * inside the event group. For example, to wait for bit 0 and/or bit 2 set + * uxBitsToWaitFor to 0x05. To wait for bits 0 and/or bit 1 and/or bit 2 set + * uxBitsToWaitFor to 0x07. Etc. + * + * @param xClearOnExit If xClearOnExit is set to pdTRUE then any bits within + * uxBitsToWaitFor that are set within the event group will be cleared before + * xEventGroupWaitBits() returns if the wait condition was met (if the function + * returns for a reason other than a timeout). If xClearOnExit is set to + * pdFALSE then the bits set in the event group are not altered when the call to + * xEventGroupWaitBits() returns. + * + * @param xWaitForAllBits If xWaitForAllBits is set to pdTRUE then + * xEventGroupWaitBits() will return when either all the bits in uxBitsToWaitFor + * are set or the specified block time expires. If xWaitForAllBits is set to + * pdFALSE then xEventGroupWaitBits() will return when any one of the bits set + * in uxBitsToWaitFor is set or the specified block time expires. The block + * time is specified by the xTicksToWait parameter. + * + * @param xTicksToWait The maximum amount of time (specified in 'ticks') to wait + * for one/all (depending on the xWaitForAllBits value) of the bits specified by + * uxBitsToWaitFor to become set. + * + * @return The value of the event group at the time either the bits being waited + * for became set, or the block time expired. Test the return value to know + * which bits were set. If xEventGroupWaitBits() returned because its timeout + * expired then not all the bits being waited for will be set. If + * xEventGroupWaitBits() returned because the bits it was waiting for were set + * then the returned value is the event group value before any bits were + * automatically cleared in the case that xClearOnExit parameter was set to + * pdTRUE. + * + * Example usage: +
+   #define BIT_0	( 1 << 0 )
+   #define BIT_4	( 1 << 4 )
+
+   void aFunction( EventGroupHandle_t xEventGroup )
+   {
+   EventBits_t uxBits;
+   const TickType_t xTicksToWait = 100 / portTICK_PERIOD_MS;
+
+		// Wait a maximum of 100ms for either bit 0 or bit 4 to be set within
+		// the event group.  Clear the bits before exiting.
+		uxBits = xEventGroupWaitBits(
+					xEventGroup,	// The event group being tested.
+					BIT_0 | BIT_4,	// The bits within the event group to wait for.
+					pdTRUE,			// BIT_0 and BIT_4 should be cleared before returning.
+					pdFALSE,		// Don't wait for both bits, either bit will do.
+					xTicksToWait );	// Wait a maximum of 100ms for either bit to be set.
+
+		if( ( uxBits & ( BIT_0 | BIT_4 ) ) == ( BIT_0 | BIT_4 ) )
+		{
+			// xEventGroupWaitBits() returned because both bits were set.
+		}
+		else if( ( uxBits & BIT_0 ) != 0 )
+		{
+			// xEventGroupWaitBits() returned because just BIT_0 was set.
+		}
+		else if( ( uxBits & BIT_4 ) != 0 )
+		{
+			// xEventGroupWaitBits() returned because just BIT_4 was set.
+		}
+		else
+		{
+			// xEventGroupWaitBits() returned because xTicksToWait ticks passed
+			// without either BIT_0 or BIT_4 becoming set.
+		}
+   }
+   
+ * \defgroup xEventGroupWaitBits xEventGroupWaitBits + * \ingroup EventGroup + */ +EventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * event_groups.h + *
+	EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear );
+ 
+ * + * Clear bits within an event group. This function cannot be called from an + * interrupt. + * + * @param xEventGroup The event group in which the bits are to be cleared. + * + * @param uxBitsToClear A bitwise value that indicates the bit or bits to clear + * in the event group. For example, to clear bit 3 only, set uxBitsToClear to + * 0x08. To clear bit 3 and bit 0 set uxBitsToClear to 0x09. + * + * @return The value of the event group before the specified bits were cleared. + * + * Example usage: +
+   #define BIT_0	( 1 << 0 )
+   #define BIT_4	( 1 << 4 )
+
+   void aFunction( EventGroupHandle_t xEventGroup )
+   {
+   EventBits_t uxBits;
+
+		// Clear bit 0 and bit 4 in xEventGroup.
+		uxBits = xEventGroupClearBits(
+								xEventGroup,	// The event group being updated.
+								BIT_0 | BIT_4 );// The bits being cleared.
+
+		if( ( uxBits & ( BIT_0 | BIT_4 ) ) == ( BIT_0 | BIT_4 ) )
+		{
+			// Both bit 0 and bit 4 were set before xEventGroupClearBits() was
+			// called.  Both will now be clear (not set).
+		}
+		else if( ( uxBits & BIT_0 ) != 0 )
+		{
+			// Bit 0 was set before xEventGroupClearBits() was called.  It will
+			// now be clear.
+		}
+		else if( ( uxBits & BIT_4 ) != 0 )
+		{
+			// Bit 4 was set before xEventGroupClearBits() was called.  It will
+			// now be clear.
+		}
+		else
+		{
+			// Neither bit 0 nor bit 4 were set in the first place.
+		}
+   }
+   
+ * \defgroup xEventGroupClearBits xEventGroupClearBits + * \ingroup EventGroup + */ +EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear ) PRIVILEGED_FUNCTION; + +/** + * event_groups.h + *
+	BaseType_t xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet );
+ 
+ * + * A version of xEventGroupClearBits() that can be called from an interrupt. + * + * Setting bits in an event group is not a deterministic operation because there + * are an unknown number of tasks that may be waiting for the bit or bits being + * set. FreeRTOS does not allow nondeterministic operations to be performed + * while interrupts are disabled, so protects event groups that are accessed + * from tasks by suspending the scheduler rather than disabling interrupts. As + * a result event groups cannot be accessed directly from an interrupt service + * routine. Therefore xEventGroupClearBitsFromISR() sends a message to the + * timer task to have the clear operation performed in the context of the timer + * task. + * + * @param xEventGroup The event group in which the bits are to be cleared. + * + * @param uxBitsToClear A bitwise value that indicates the bit or bits to clear. + * For example, to clear bit 3 only, set uxBitsToClear to 0x08. To clear bit 3 + * and bit 0 set uxBitsToClear to 0x09. + * + * @return If the request to execute the function was posted successfully then + * pdPASS is returned, otherwise pdFALSE is returned. pdFALSE will be returned + * if the timer service queue was full. + * + * Example usage: +
+   #define BIT_0	( 1 << 0 )
+   #define BIT_4	( 1 << 4 )
+
+   // An event group which it is assumed has already been created by a call to
+   // xEventGroupCreate().
+   EventGroupHandle_t xEventGroup;
+
+   void anInterruptHandler( void )
+   {
+		// Clear bit 0 and bit 4 in xEventGroup.
+		xResult = xEventGroupClearBitsFromISR(
+							xEventGroup,	 // The event group being updated.
+							BIT_0 | BIT_4 ); // The bits being set.
+
+		if( xResult == pdPASS )
+		{
+			// The message was posted successfully.
+		}
+  }
+   
+ * \defgroup xEventGroupClearBitsFromISR xEventGroupClearBitsFromISR + * \ingroup EventGroup + */ +#if( configUSE_TRACE_FACILITY == 1 ) + BaseType_t xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear ) PRIVILEGED_FUNCTION; +#else + #define xEventGroupClearBitsFromISR( xEventGroup, uxBitsToClear ) xTimerPendFunctionCallFromISR( vEventGroupClearBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToClear, NULL ) +#endif + +/** + * event_groups.h + *
+	EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet );
+ 
+ * + * Set bits within an event group. + * This function cannot be called from an interrupt. xEventGroupSetBitsFromISR() + * is a version that can be called from an interrupt. + * + * Setting bits in an event group will automatically unblock tasks that are + * blocked waiting for the bits. + * + * @param xEventGroup The event group in which the bits are to be set. + * + * @param uxBitsToSet A bitwise value that indicates the bit or bits to set. + * For example, to set bit 3 only, set uxBitsToSet to 0x08. To set bit 3 + * and bit 0 set uxBitsToSet to 0x09. + * + * @return The value of the event group at the time the call to + * xEventGroupSetBits() returns. There are two reasons why the returned value + * might have the bits specified by the uxBitsToSet parameter cleared. First, + * if setting a bit results in a task that was waiting for the bit leaving the + * blocked state then it is possible the bit will be cleared automatically + * (see the xClearBitOnExit parameter of xEventGroupWaitBits()). Second, any + * unblocked (or otherwise Ready state) task that has a priority above that of + * the task that called xEventGroupSetBits() will execute and may change the + * event group value before the call to xEventGroupSetBits() returns. + * + * Example usage: +
+   #define BIT_0	( 1 << 0 )
+   #define BIT_4	( 1 << 4 )
+
+   void aFunction( EventGroupHandle_t xEventGroup )
+   {
+   EventBits_t uxBits;
+
+		// Set bit 0 and bit 4 in xEventGroup.
+		uxBits = xEventGroupSetBits(
+							xEventGroup,	// The event group being updated.
+							BIT_0 | BIT_4 );// The bits being set.
+
+		if( ( uxBits & ( BIT_0 | BIT_4 ) ) == ( BIT_0 | BIT_4 ) )
+		{
+			// Both bit 0 and bit 4 remained set when the function returned.
+		}
+		else if( ( uxBits & BIT_0 ) != 0 )
+		{
+			// Bit 0 remained set when the function returned, but bit 4 was
+			// cleared.  It might be that bit 4 was cleared automatically as a
+			// task that was waiting for bit 4 was removed from the Blocked
+			// state.
+		}
+		else if( ( uxBits & BIT_4 ) != 0 )
+		{
+			// Bit 4 remained set when the function returned, but bit 0 was
+			// cleared.  It might be that bit 0 was cleared automatically as a
+			// task that was waiting for bit 0 was removed from the Blocked
+			// state.
+		}
+		else
+		{
+			// Neither bit 0 nor bit 4 remained set.  It might be that a task
+			// was waiting for both of the bits to be set, and the bits were
+			// cleared as the task left the Blocked state.
+		}
+   }
+   
+ * \defgroup xEventGroupSetBits xEventGroupSetBits + * \ingroup EventGroup + */ +EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet ) PRIVILEGED_FUNCTION; + +/** + * event_groups.h + *
+	BaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken );
+ 
+ * + * A version of xEventGroupSetBits() that can be called from an interrupt. + * + * Setting bits in an event group is not a deterministic operation because there + * are an unknown number of tasks that may be waiting for the bit or bits being + * set. FreeRTOS does not allow nondeterministic operations to be performed in + * interrupts or from critical sections. Therefore xEventGroupSetBitsFromISR() + * sends a message to the timer task to have the set operation performed in the + * context of the timer task - where a scheduler lock is used in place of a + * critical section. + * + * @param xEventGroup The event group in which the bits are to be set. + * + * @param uxBitsToSet A bitwise value that indicates the bit or bits to set. + * For example, to set bit 3 only, set uxBitsToSet to 0x08. To set bit 3 + * and bit 0 set uxBitsToSet to 0x09. + * + * @param pxHigherPriorityTaskWoken As mentioned above, calling this function + * will result in a message being sent to the timer daemon task. If the + * priority of the timer daemon task is higher than the priority of the + * currently running task (the task the interrupt interrupted) then + * *pxHigherPriorityTaskWoken will be set to pdTRUE by + * xEventGroupSetBitsFromISR(), indicating that a context switch should be + * requested before the interrupt exits. For that reason + * *pxHigherPriorityTaskWoken must be initialised to pdFALSE. See the + * example code below. + * + * @return If the request to execute the function was posted successfully then + * pdPASS is returned, otherwise pdFALSE is returned. pdFALSE will be returned + * if the timer service queue was full. + * + * Example usage: +
+   #define BIT_0	( 1 << 0 )
+   #define BIT_4	( 1 << 4 )
+
+   // An event group which it is assumed has already been created by a call to
+   // xEventGroupCreate().
+   EventGroupHandle_t xEventGroup;
+
+   void anInterruptHandler( void )
+   {
+   BaseType_t xHigherPriorityTaskWoken, xResult;
+
+		// xHigherPriorityTaskWoken must be initialised to pdFALSE.
+		xHigherPriorityTaskWoken = pdFALSE;
+
+		// Set bit 0 and bit 4 in xEventGroup.
+		xResult = xEventGroupSetBitsFromISR(
+							xEventGroup,	// The event group being updated.
+							BIT_0 | BIT_4   // The bits being set.
+							&xHigherPriorityTaskWoken );
+
+		// Was the message posted successfully?
+		if( xResult == pdPASS )
+		{
+			// If xHigherPriorityTaskWoken is now set to pdTRUE then a context
+			// switch should be requested.  The macro used is port specific and
+			// will be either portYIELD_FROM_ISR() or portEND_SWITCHING_ISR() -
+			// refer to the documentation page for the port being used.
+			portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
+		}
+  }
+   
+ * \defgroup xEventGroupSetBitsFromISR xEventGroupSetBitsFromISR + * \ingroup EventGroup + */ +#if( configUSE_TRACE_FACILITY == 1 ) + BaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; +#else + #define xEventGroupSetBitsFromISR( xEventGroup, uxBitsToSet, pxHigherPriorityTaskWoken ) xTimerPendFunctionCallFromISR( vEventGroupSetBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToSet, pxHigherPriorityTaskWoken ) +#endif + +/** + * event_groups.h + *
+	EventBits_t xEventGroupSync(	EventGroupHandle_t xEventGroup,
+									const EventBits_t uxBitsToSet,
+									const EventBits_t uxBitsToWaitFor,
+									TickType_t xTicksToWait );
+ 
+ * + * Atomically set bits within an event group, then wait for a combination of + * bits to be set within the same event group. This functionality is typically + * used to synchronise multiple tasks, where each task has to wait for the other + * tasks to reach a synchronisation point before proceeding. + * + * This function cannot be used from an interrupt. + * + * The function will return before its block time expires if the bits specified + * by the uxBitsToWait parameter are set, or become set within that time. In + * this case all the bits specified by uxBitsToWait will be automatically + * cleared before the function returns. + * + * @param xEventGroup The event group in which the bits are being tested. The + * event group must have previously been created using a call to + * xEventGroupCreate(). + * + * @param uxBitsToSet The bits to set in the event group before determining + * if, and possibly waiting for, all the bits specified by the uxBitsToWait + * parameter are set. + * + * @param uxBitsToWaitFor A bitwise value that indicates the bit or bits to test + * inside the event group. For example, to wait for bit 0 and bit 2 set + * uxBitsToWaitFor to 0x05. To wait for bits 0 and bit 1 and bit 2 set + * uxBitsToWaitFor to 0x07. Etc. + * + * @param xTicksToWait The maximum amount of time (specified in 'ticks') to wait + * for all of the bits specified by uxBitsToWaitFor to become set. + * + * @return The value of the event group at the time either the bits being waited + * for became set, or the block time expired. Test the return value to know + * which bits were set. If xEventGroupSync() returned because its timeout + * expired then not all the bits being waited for will be set. If + * xEventGroupSync() returned because all the bits it was waiting for were + * set then the returned value is the event group value before any bits were + * automatically cleared. + * + * Example usage: +
+ // Bits used by the three tasks.
+ #define TASK_0_BIT		( 1 << 0 )
+ #define TASK_1_BIT		( 1 << 1 )
+ #define TASK_2_BIT		( 1 << 2 )
+
+ #define ALL_SYNC_BITS ( TASK_0_BIT | TASK_1_BIT | TASK_2_BIT )
+
+ // Use an event group to synchronise three tasks.  It is assumed this event
+ // group has already been created elsewhere.
+ EventGroupHandle_t xEventBits;
+
+ void vTask0( void *pvParameters )
+ {
+ EventBits_t uxReturn;
+ TickType_t xTicksToWait = 100 / portTICK_PERIOD_MS;
+
+	 for( ;; )
+	 {
+		// Perform task functionality here.
+
+		// Set bit 0 in the event flag to note this task has reached the
+		// sync point.  The other two tasks will set the other two bits defined
+		// by ALL_SYNC_BITS.  All three tasks have reached the synchronisation
+		// point when all the ALL_SYNC_BITS are set.  Wait a maximum of 100ms
+		// for this to happen.
+		uxReturn = xEventGroupSync( xEventBits, TASK_0_BIT, ALL_SYNC_BITS, xTicksToWait );
+
+		if( ( uxReturn & ALL_SYNC_BITS ) == ALL_SYNC_BITS )
+		{
+			// All three tasks reached the synchronisation point before the call
+			// to xEventGroupSync() timed out.
+		}
+	}
+ }
+
+ void vTask1( void *pvParameters )
+ {
+	 for( ;; )
+	 {
+		// Perform task functionality here.
+
+		// Set bit 1 in the event flag to note this task has reached the
+		// synchronisation point.  The other two tasks will set the other two
+		// bits defined by ALL_SYNC_BITS.  All three tasks have reached the
+		// synchronisation point when all the ALL_SYNC_BITS are set.  Wait
+		// indefinitely for this to happen.
+		xEventGroupSync( xEventBits, TASK_1_BIT, ALL_SYNC_BITS, portMAX_DELAY );
+
+		// xEventGroupSync() was called with an indefinite block time, so
+		// this task will only reach here if the syncrhonisation was made by all
+		// three tasks, so there is no need to test the return value.
+	 }
+ }
+
+ void vTask2( void *pvParameters )
+ {
+	 for( ;; )
+	 {
+		// Perform task functionality here.
+
+		// Set bit 2 in the event flag to note this task has reached the
+		// synchronisation point.  The other two tasks will set the other two
+		// bits defined by ALL_SYNC_BITS.  All three tasks have reached the
+		// synchronisation point when all the ALL_SYNC_BITS are set.  Wait
+		// indefinitely for this to happen.
+		xEventGroupSync( xEventBits, TASK_2_BIT, ALL_SYNC_BITS, portMAX_DELAY );
+
+		// xEventGroupSync() was called with an indefinite block time, so
+		// this task will only reach here if the syncrhonisation was made by all
+		// three tasks, so there is no need to test the return value.
+	}
+ }
+
+ 
+ * \defgroup xEventGroupSync xEventGroupSync + * \ingroup EventGroup + */ +EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + + +/** + * event_groups.h + *
+	EventBits_t xEventGroupGetBits( EventGroupHandle_t xEventGroup );
+ 
+ * + * Returns the current value of the bits in an event group. This function + * cannot be used from an interrupt. + * + * @param xEventGroup The event group being queried. + * + * @return The event group bits at the time xEventGroupGetBits() was called. + * + * \defgroup xEventGroupGetBits xEventGroupGetBits + * \ingroup EventGroup + */ +#define xEventGroupGetBits( xEventGroup ) xEventGroupClearBits( xEventGroup, 0 ) + +/** + * event_groups.h + *
+	EventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup );
+ 
+ * + * A version of xEventGroupGetBits() that can be called from an ISR. + * + * @param xEventGroup The event group being queried. + * + * @return The event group bits at the time xEventGroupGetBitsFromISR() was called. + * + * \defgroup xEventGroupGetBitsFromISR xEventGroupGetBitsFromISR + * \ingroup EventGroup + */ +EventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION; + +/** + * event_groups.h + *
+	void xEventGroupDelete( EventGroupHandle_t xEventGroup );
+ 
+ * + * Delete an event group that was previously created by a call to + * xEventGroupCreate(). Tasks that are blocked on the event group will be + * unblocked and obtain 0 as the event group's value. + * + * @param xEventGroup The event group being deleted. + */ +void vEventGroupDelete( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION; + +/* For internal use only. */ +void vEventGroupSetBitsCallback( void *pvEventGroup, const uint32_t ulBitsToSet ) PRIVILEGED_FUNCTION; +void vEventGroupClearBitsCallback( void *pvEventGroup, const uint32_t ulBitsToClear ) PRIVILEGED_FUNCTION; + + +#if (configUSE_TRACE_FACILITY == 1) + UBaseType_t uxEventGroupGetNumber( void* xEventGroup ) PRIVILEGED_FUNCTION; + void vEventGroupSetNumber( void* xEventGroup, UBaseType_t uxEventGroupNumber ) PRIVILEGED_FUNCTION; +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* EVENT_GROUPS_H */ + + diff --git a/components/freertos/include/list.h b/components/freertos/include/list.h new file mode 100644 index 00000000..73b4f3aa --- /dev/null +++ b/components/freertos/include/list.h @@ -0,0 +1,412 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* + * This is the list implementation used by the scheduler. While it is tailored + * heavily for the schedulers needs, it is also available for use by + * application code. + * + * list_ts can only store pointers to list_item_ts. Each ListItem_t contains a + * numeric value (xItemValue). Most of the time the lists are sorted in + * descending item value order. + * + * Lists are created already containing one list item. The value of this + * item is the maximum possible that can be stored, it is therefore always at + * the end of the list and acts as a marker. The list member pxHead always + * points to this marker - even though it is at the tail of the list. This + * is because the tail contains a wrap back pointer to the true head of + * the list. + * + * In addition to it's value, each list item contains a pointer to the next + * item in the list (pxNext), a pointer to the list it is in (pxContainer) + * and a pointer to back to the object that contains it. These later two + * pointers are included for efficiency of list manipulation. There is + * effectively a two way link between the object containing the list item and + * the list item itself. + * + * + * \page ListIntroduction List Implementation + * \ingroup FreeRTOSIntro + */ + +#ifndef INC_FREERTOS_H + #error FreeRTOS.h must be included before list.h +#endif + +#ifndef LIST_H +#define LIST_H + +/* + * The list structure members are modified from within interrupts, and therefore + * by rights should be declared volatile. However, they are only modified in a + * functionally atomic way (within critical sections of with the scheduler + * suspended) and are either passed by reference into a function or indexed via + * a volatile variable. Therefore, in all use cases tested so far, the volatile + * qualifier can be omitted in order to provide a moderate performance + * improvement without adversely affecting functional behaviour. The assembly + * instructions generated by the IAR, ARM and GCC compilers when the respective + * compiler's options were set for maximum optimisation has been inspected and + * deemed to be as intended. That said, as compiler technology advances, and + * especially if aggressive cross module optimisation is used (a use case that + * has not been exercised to any great extend) then it is feasible that the + * volatile qualifier will be needed for correct optimisation. It is expected + * that a compiler removing essential code because, without the volatile + * qualifier on the list structure members and with aggressive cross module + * optimisation, the compiler deemed the code unnecessary will result in + * complete and obvious failure of the scheduler. If this is ever experienced + * then the volatile qualifier can be inserted in the relevant places within the + * list structures by simply defining configLIST_VOLATILE to volatile in + * FreeRTOSConfig.h (as per the example at the bottom of this comment block). + * If configLIST_VOLATILE is not defined then the preprocessor directives below + * will simply #define configLIST_VOLATILE away completely. + * + * To use volatile list structure members then add the following line to + * FreeRTOSConfig.h (without the quotes): + * "#define configLIST_VOLATILE volatile" + */ +#ifndef configLIST_VOLATILE + #define configLIST_VOLATILE +#endif /* configSUPPORT_CROSS_MODULE_OPTIMISATION */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Macros that can be used to place known values within the list structures, +then check that the known values do not get corrupted during the execution of +the application. These may catch the list data structures being overwritten in +memory. They will not catch data errors caused by incorrect configuration or +use of FreeRTOS.*/ +#if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 0 ) + /* Define the macros to do nothing. */ + #define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE + #define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE + #define listFIRST_LIST_INTEGRITY_CHECK_VALUE + #define listSECOND_LIST_INTEGRITY_CHECK_VALUE + #define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) + #define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) + #define listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList ) + #define listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList ) + #define listTEST_LIST_ITEM_INTEGRITY( pxItem ) + #define listTEST_LIST_INTEGRITY( pxList ) +#else + /* Define macros that add new members into the list structures. */ + #define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE TickType_t xListItemIntegrityValue1; + #define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE TickType_t xListItemIntegrityValue2; + #define listFIRST_LIST_INTEGRITY_CHECK_VALUE TickType_t xListIntegrityValue1; + #define listSECOND_LIST_INTEGRITY_CHECK_VALUE TickType_t xListIntegrityValue2; + + /* Define macros that set the new structure members to known values. */ + #define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) ( pxItem )->xListItemIntegrityValue1 = pdINTEGRITY_CHECK_VALUE + #define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) ( pxItem )->xListItemIntegrityValue2 = pdINTEGRITY_CHECK_VALUE + #define listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList ) ( pxList )->xListIntegrityValue1 = pdINTEGRITY_CHECK_VALUE + #define listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList ) ( pxList )->xListIntegrityValue2 = pdINTEGRITY_CHECK_VALUE + + /* Define macros that will assert if one of the structure members does not + contain its expected value. */ + #define listTEST_LIST_ITEM_INTEGRITY( pxItem ) configASSERT( ( ( pxItem )->xListItemIntegrityValue1 == pdINTEGRITY_CHECK_VALUE ) && ( ( pxItem )->xListItemIntegrityValue2 == pdINTEGRITY_CHECK_VALUE ) ) + #define listTEST_LIST_INTEGRITY( pxList ) configASSERT( ( ( pxList )->xListIntegrityValue1 == pdINTEGRITY_CHECK_VALUE ) && ( ( pxList )->xListIntegrityValue2 == pdINTEGRITY_CHECK_VALUE ) ) +#endif /* configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES */ + + +/* + * Definition of the only type of object that a list can contain. + */ +struct xLIST; +struct xLIST_ITEM +{ + listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE /*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ + configLIST_VOLATILE TickType_t xItemValue; /*< The value being listed. In most cases this is used to sort the list in descending order. */ + struct xLIST_ITEM * configLIST_VOLATILE pxNext; /*< Pointer to the next ListItem_t in the list. */ + struct xLIST_ITEM * configLIST_VOLATILE pxPrevious; /*< Pointer to the previous ListItem_t in the list. */ + void * pvOwner; /*< Pointer to the object (normally a TCB) that contains the list item. There is therefore a two way link between the object containing the list item and the list item itself. */ + struct xLIST * configLIST_VOLATILE pxContainer; /*< Pointer to the list in which this list item is placed (if any). */ + listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE /*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ +}; +typedef struct xLIST_ITEM ListItem_t; /* For some reason lint wants this as two separate definitions. */ + +struct xMINI_LIST_ITEM +{ + listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE /*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ + configLIST_VOLATILE TickType_t xItemValue; + struct xLIST_ITEM * configLIST_VOLATILE pxNext; + struct xLIST_ITEM * configLIST_VOLATILE pxPrevious; +}; +typedef struct xMINI_LIST_ITEM MiniListItem_t; + +/* + * Definition of the type of queue used by the scheduler. + */ +typedef struct xLIST +{ + listFIRST_LIST_INTEGRITY_CHECK_VALUE /*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ + volatile UBaseType_t uxNumberOfItems; + ListItem_t * configLIST_VOLATILE pxIndex; /*< Used to walk through the list. Points to the last item returned by a call to listGET_OWNER_OF_NEXT_ENTRY (). */ + MiniListItem_t xListEnd; /*< List item that contains the maximum possible item value meaning it is always at the end of the list and is therefore used as a marker. */ + listSECOND_LIST_INTEGRITY_CHECK_VALUE /*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ +} List_t; + +/* + * Access macro to set the owner of a list item. The owner of a list item + * is the object (usually a TCB) that contains the list item. + * + * \page listSET_LIST_ITEM_OWNER listSET_LIST_ITEM_OWNER + * \ingroup LinkedList + */ +#define listSET_LIST_ITEM_OWNER( pxListItem, pxOwner ) ( ( pxListItem )->pvOwner = ( void * ) ( pxOwner ) ) + +/* + * Access macro to get the owner of a list item. The owner of a list item + * is the object (usually a TCB) that contains the list item. + * + * \page listGET_LIST_ITEM_OWNER listSET_LIST_ITEM_OWNER + * \ingroup LinkedList + */ +#define listGET_LIST_ITEM_OWNER( pxListItem ) ( ( pxListItem )->pvOwner ) + +/* + * Access macro to set the value of the list item. In most cases the value is + * used to sort the list in descending order. + * + * \page listSET_LIST_ITEM_VALUE listSET_LIST_ITEM_VALUE + * \ingroup LinkedList + */ +#define listSET_LIST_ITEM_VALUE( pxListItem, xValue ) ( ( pxListItem )->xItemValue = ( xValue ) ) + +/* + * Access macro to retrieve the value of the list item. The value can + * represent anything - for example the priority of a task, or the time at + * which a task should be unblocked. + * + * \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE + * \ingroup LinkedList + */ +#define listGET_LIST_ITEM_VALUE( pxListItem ) ( ( pxListItem )->xItemValue ) + +/* + * Access macro to retrieve the value of the list item at the head of a given + * list. + * + * \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE + * \ingroup LinkedList + */ +#define listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxList ) ( ( ( pxList )->xListEnd ).pxNext->xItemValue ) + +/* + * Return the list item at the head of the list. + * + * \page listGET_HEAD_ENTRY listGET_HEAD_ENTRY + * \ingroup LinkedList + */ +#define listGET_HEAD_ENTRY( pxList ) ( ( ( pxList )->xListEnd ).pxNext ) + +/* + * Return the next list item. + * + * \page listGET_NEXT listGET_NEXT + * \ingroup LinkedList + */ +#define listGET_NEXT( pxListItem ) ( ( pxListItem )->pxNext ) + +/* + * Return the list item that marks the end of the list + * + * \page listGET_END_MARKER listGET_END_MARKER + * \ingroup LinkedList + */ +#define listGET_END_MARKER( pxList ) ( ( ListItem_t const * ) ( &( ( pxList )->xListEnd ) ) ) + +/* + * Access macro to determine if a list contains any items. The macro will + * only have the value true if the list is empty. + * + * \page listLIST_IS_EMPTY listLIST_IS_EMPTY + * \ingroup LinkedList + */ +#define listLIST_IS_EMPTY( pxList ) ( ( ( pxList )->uxNumberOfItems == ( UBaseType_t ) 0 ) ? pdTRUE : pdFALSE ) + +/* + * Access macro to return the number of items in the list. + */ +#define listCURRENT_LIST_LENGTH( pxList ) ( ( pxList )->uxNumberOfItems ) + +/* + * Access function to obtain the owner of the next entry in a list. + * + * The list member pxIndex is used to walk through a list. Calling + * listGET_OWNER_OF_NEXT_ENTRY increments pxIndex to the next item in the list + * and returns that entry's pxOwner parameter. Using multiple calls to this + * function it is therefore possible to move through every item contained in + * a list. + * + * The pxOwner parameter of a list item is a pointer to the object that owns + * the list item. In the scheduler this is normally a task control block. + * The pxOwner parameter effectively creates a two way link between the list + * item and its owner. + * + * @param pxTCB pxTCB is set to the address of the owner of the next list item. + * @param pxList The list from which the next item owner is to be returned. + * + * \page listGET_OWNER_OF_NEXT_ENTRY listGET_OWNER_OF_NEXT_ENTRY + * \ingroup LinkedList + */ +#define listGET_OWNER_OF_NEXT_ENTRY( pxTCB, pxList ) \ +{ \ +List_t * const pxConstList = ( pxList ); \ + /* Increment the index to the next item and return the item, ensuring */ \ + /* we don't return the marker used at the end of the list. */ \ + ( pxConstList )->pxIndex = ( pxConstList )->pxIndex->pxNext; \ + if( ( void * ) ( pxConstList )->pxIndex == ( void * ) &( ( pxConstList )->xListEnd ) ) \ + { \ + ( pxConstList )->pxIndex = ( pxConstList )->pxIndex->pxNext; \ + } \ + ( pxTCB ) = ( pxConstList )->pxIndex->pvOwner; \ +} + + +/* + * Access function to obtain the owner of the first entry in a list. Lists + * are normally sorted in ascending item value order. + * + * This function returns the pxOwner member of the first item in the list. + * The pxOwner parameter of a list item is a pointer to the object that owns + * the list item. In the scheduler this is normally a task control block. + * The pxOwner parameter effectively creates a two way link between the list + * item and its owner. + * + * @param pxList The list from which the owner of the head item is to be + * returned. + * + * \page listGET_OWNER_OF_HEAD_ENTRY listGET_OWNER_OF_HEAD_ENTRY + * \ingroup LinkedList + */ +#define listGET_OWNER_OF_HEAD_ENTRY( pxList ) ( (&( ( pxList )->xListEnd ))->pxNext->pvOwner ) + +/* + * Check to see if a list item is within a list. The list item maintains a + * "container" pointer that points to the list it is in. All this macro does + * is check to see if the container and the list match. + * + * @param pxList The list we want to know if the list item is within. + * @param pxListItem The list item we want to know if is in the list. + * @return pdTRUE if the list item is in the list, otherwise pdFALSE. + */ +#define listIS_CONTAINED_WITHIN( pxList, pxListItem ) ( ( ( pxListItem )->pxContainer == ( pxList ) ) ? ( pdTRUE ) : ( pdFALSE ) ) + +/* + * Return the list a list item is contained within (referenced from). + * + * @param pxListItem The list item being queried. + * @return A pointer to the List_t object that references the pxListItem + */ +#define listLIST_ITEM_CONTAINER( pxListItem ) ( ( pxListItem )->pxContainer ) + +/* + * This provides a crude means of knowing if a list has been initialised, as + * pxList->xListEnd.xItemValue is set to portMAX_DELAY by the vListInitialise() + * function. + */ +#define listLIST_IS_INITIALISED( pxList ) ( ( pxList )->xListEnd.xItemValue == portMAX_DELAY ) + +/* + * Must be called before a list is used! This initialises all the members + * of the list structure and inserts the xListEnd item into the list as a + * marker to the back of the list. + * + * @param pxList Pointer to the list being initialised. + * + * \page vListInitialise vListInitialise + * \ingroup LinkedList + */ +void vListInitialise( List_t * const pxList ) PRIVILEGED_FUNCTION; + +/* + * Must be called before a list item is used. This sets the list container to + * null so the item does not think that it is already contained in a list. + * + * @param pxItem Pointer to the list item being initialised. + * + * \page vListInitialiseItem vListInitialiseItem + * \ingroup LinkedList + */ +void vListInitialiseItem( ListItem_t * const pxItem ) PRIVILEGED_FUNCTION; + +/* + * Insert a list item into a list. The item will be inserted into the list in + * a position determined by its item value (descending item value order). + * + * @param pxList The list into which the item is to be inserted. + * + * @param pxNewListItem The item that is to be placed in the list. + * + * \page vListInsert vListInsert + * \ingroup LinkedList + */ +void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem ) PRIVILEGED_FUNCTION; + +/* + * Insert a list item into a list. The item will be inserted in a position + * such that it will be the last item within the list returned by multiple + * calls to listGET_OWNER_OF_NEXT_ENTRY. + * + * The list member pxIndex is used to walk through a list. Calling + * listGET_OWNER_OF_NEXT_ENTRY increments pxIndex to the next item in the list. + * Placing an item in a list using vListInsertEnd effectively places the item + * in the list position pointed to by pxIndex. This means that every other + * item within the list will be returned by listGET_OWNER_OF_NEXT_ENTRY before + * the pxIndex parameter again points to the item being inserted. + * + * @param pxList The list into which the item is to be inserted. + * + * @param pxNewListItem The list item to be inserted into the list. + * + * \page vListInsertEnd vListInsertEnd + * \ingroup LinkedList + */ +void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem ) PRIVILEGED_FUNCTION; + +/* + * Remove an item from a list. The list item has a pointer to the list that + * it is in, so only the list item need be passed into the function. + * + * @param uxListRemove The item to be removed. The item will remove itself from + * the list pointed to by it's pxContainer parameter. + * + * @return The number of items that remain in the list after the list item has + * been removed. + * + * \page uxListRemove uxListRemove + * \ingroup LinkedList + */ +UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ) PRIVILEGED_FUNCTION; + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/components/freertos/include/message_buffer.h b/components/freertos/include/message_buffer.h new file mode 100644 index 00000000..1e751be5 --- /dev/null +++ b/components/freertos/include/message_buffer.h @@ -0,0 +1,803 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +/* + * Message buffers build functionality on top of FreeRTOS stream buffers. + * Whereas stream buffers are used to send a continuous stream of data from one + * task or interrupt to another, message buffers are used to send variable + * length discrete messages from one task or interrupt to another. Their + * implementation is light weight, making them particularly suited for interrupt + * to task and core to core communication scenarios. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xMessageBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xMessageBufferRead()) inside a critical section and set the receive + * timeout to 0. + * + * Message buffers hold variable length messages. To enable that, when a + * message is written to the message buffer an additional sizeof( size_t ) bytes + * are also written to store the message's length (that happens internally, with + * the API function). sizeof( size_t ) is typically 4 bytes on a 32-bit + * architecture, so writing a 10 byte message to a message buffer on a 32-bit + * architecture will actually reduce the available space in the message buffer + * by 14 bytes (10 byte are used by the message, and 4 bytes to hold the length + * of the message). + */ + +#ifndef FREERTOS_MESSAGE_BUFFER_H +#define FREERTOS_MESSAGE_BUFFER_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h must appear in source files before include message_buffer.h" +#endif + +/* Message buffers are built onto of stream buffers. */ +#include "stream_buffer.h" + +#if defined( __cplusplus ) +extern "C" { +#endif + +/** + * Type by which message buffers are referenced. For example, a call to + * xMessageBufferCreate() returns an MessageBufferHandle_t variable that can + * then be used as a parameter to xMessageBufferSend(), xMessageBufferReceive(), + * etc. + */ +typedef void * MessageBufferHandle_t; + +/*-----------------------------------------------------------*/ + +/** + * message_buffer.h + * +
+MessageBufferHandle_t xMessageBufferCreate( size_t xBufferSizeBytes );
+
+ * + * Creates a new message buffer using dynamically allocated memory. See + * xMessageBufferCreateStatic() for a version that uses statically allocated + * memory (memory that is allocated at compile time). + * + * configSUPPORT_DYNAMIC_ALLOCATION must be set to 1 or left undefined in + * FreeRTOSConfig.h for xMessageBufferCreate() to be available. + * + * @param xBufferSizeBytes The total number of bytes (not messages) the message + * buffer will be able to hold at any one time. When a message is written to + * the message buffer an additional sizeof( size_t ) bytes are also written to + * store the message's length. sizeof( size_t ) is typically 4 bytes on a + * 32-bit architecture, so on most 32-bit architectures a 10 byte message will + * take up 14 bytes of message buffer space. + * + * @return If NULL is returned, then the message buffer cannot be created + * because there is insufficient heap memory available for FreeRTOS to allocate + * the message buffer data structures and storage area. A non-NULL value being + * returned indicates that the message buffer has been created successfully - + * the returned value should be stored as the handle to the created message + * buffer. + * + * Example use: +
+
+void vAFunction( void )
+{
+MessageBufferHandle_t xMessageBuffer;
+const size_t xMessageBufferSizeBytes = 100;
+
+    // Create a message buffer that can hold 100 bytes.  The memory used to hold
+    // both the message buffer structure and the messages themselves is allocated
+    // dynamically.  Each message added to the buffer consumes an additional 4
+    // bytes which are used to hold the lengh of the message.
+    xMessageBuffer = xMessageBufferCreate( xMessageBufferSizeBytes );
+
+    if( xMessageBuffer == NULL )
+    {
+        // There was not enough heap memory space available to create the
+        // message buffer.
+    }
+    else
+    {
+        // The message buffer was created successfully and can now be used.
+    }
+
+
+ * \defgroup xMessageBufferCreate xMessageBufferCreate + * \ingroup MessageBufferManagement + */ +#define xMessageBufferCreate( xBufferSizeBytes ) ( MessageBufferHandle_t ) xStreamBufferGenericCreate( xBufferSizeBytes, ( size_t ) 0, pdTRUE ) + +/** + * message_buffer.h + * +
+MessageBufferHandle_t xMessageBufferCreateStatic( size_t xBufferSizeBytes,
+                                                  uint8_t *pucMessageBufferStorageArea,
+                                                  StaticMessageBuffer_t *pxStaticMessageBuffer );
+
+ * Creates a new message buffer using statically allocated memory. See + * xMessageBufferCreate() for a version that uses dynamically allocated memory. + * + * @param xBufferSizeBytes The size, in bytes, of the buffer pointed to by the + * pucMessageBufferStorageArea parameter. When a message is written to the + * message buffer an additional sizeof( size_t ) bytes are also written to store + * the message's length. sizeof( size_t ) is typically 4 bytes on a 32-bit + * architecture, so on most 32-bit architecture a 10 byte message will take up + * 14 bytes of message buffer space. The maximum number of bytes that can be + * stored in the message buffer is actually (xBufferSizeBytes - 1). + * + * @param pucMessageBufferStorageArea Must point to a uint8_t array that is at + * least xBufferSizeBytes + 1 big. This is the array to which messages are + * copied when they are written to the message buffer. + * + * @param pxStaticMessageBuffer Must point to a variable of type + * StaticMessageBuffer_t, which will be used to hold the message buffer's data + * structure. + * + * @return If the message buffer is created successfully then a handle to the + * created message buffer is returned. If either pucMessageBufferStorageArea or + * pxStaticmessageBuffer are NULL then NULL is returned. + * + * Example use: +
+
+// Used to dimension the array used to hold the messages.  The available space
+// will actually be one less than this, so 999.
+#define STORAGE_SIZE_BYTES 1000
+
+// Defines the memory that will actually hold the messages within the message
+// buffer.
+static uint8_t ucStorageBuffer[ STORAGE_SIZE_BYTES ];
+
+// The variable used to hold the message buffer structure.
+StaticMessageBuffer_t xMessageBufferStruct;
+
+void MyFunction( void )
+{
+MessageBufferHandle_t xMessageBuffer;
+
+    xMessageBuffer = xMessageBufferCreateStatic( sizeof( ucBufferStorage ),
+                                                 ucBufferStorage,
+                                                 &xMessageBufferStruct );
+
+    // As neither the pucMessageBufferStorageArea or pxStaticMessageBuffer
+    // parameters were NULL, xMessageBuffer will not be NULL, and can be used to
+    // reference the created message buffer in other message buffer API calls.
+
+    // Other code that uses the message buffer can go here.
+}
+
+
+ * \defgroup xMessageBufferCreateStatic xMessageBufferCreateStatic + * \ingroup MessageBufferManagement + */ +#define xMessageBufferCreateStatic( xBufferSizeBytes, pucMessageBufferStorageArea, pxStaticMessageBuffer ) ( MessageBufferHandle_t ) xStreamBufferGenericCreateStatic( xBufferSizeBytes, 0, pdTRUE, pucMessageBufferStorageArea, pxStaticMessageBuffer ) + +/** + * message_buffer.h + * +
+size_t xMessageBufferSend( MessageBufferHandle_t xMessageBuffer,
+                           const void *pvTxData,
+                           size_t xDataLengthBytes,
+                           TickType_t xTicksToWait );
+
+ *
+ * Sends a discrete message to the message buffer.  The message can be any
+ * length that fits within the buffer's free space, and is copied into the
+ * buffer.
+ *
+ * ***NOTE***:  Uniquely among FreeRTOS objects, the stream buffer
+ * implementation (so also the message buffer implementation, as message buffers
+ * are built on top of stream buffers) assumes there is only one task or
+ * interrupt that will write to the buffer (the writer), and only one task or
+ * interrupt that will read from the buffer (the reader).  It is safe for the
+ * writer and reader to be different tasks or interrupts, but, unlike other
+ * FreeRTOS objects, it is not safe to have multiple different writers or
+ * multiple different readers.  If there are to be multiple different writers
+ * then the application writer must place each call to a writing API function
+ * (such as xMessageBufferSend()) inside a critical section and set the send
+ * block time to 0.  Likewise, if there are to be multiple different readers
+ * then the application writer must place each call to a reading API function
+ * (such as xMessageBufferRead()) inside a critical section and set the receive
+ * block time to 0.
+ *
+ * Use xMessageBufferSend() to write to a message buffer from a task.  Use
+ * xMessageBufferSendFromISR() to write to a message buffer from an interrupt
+ * service routine (ISR).
+ *
+ * @param xMessageBuffer The handle of the message buffer to which a message is
+ * being sent.
+ *
+ * @param pvTxData A pointer to the message that is to be copied into the
+ * message buffer.
+ *
+ * @param xDataLengthBytes The length of the message.  That is, the number of
+ * bytes to copy from pvTxData into the message buffer.  When a message is
+ * written to the message buffer an additional sizeof( size_t ) bytes are also
+ * written to store the message's length.  sizeof( size_t ) is typically 4 bytes
+ * on a 32-bit architecture, so on most 32-bit architecture setting
+ * xDataLengthBytes to 20 will reduce the free space in the message buffer by 24
+ * bytes (20 bytes of message data and 4 bytes to hold the message length).
+ *
+ * @param xTicksToWait The maximum amount of time the calling task should remain
+ * in the Blocked state to wait for enough space to become available in the
+ * message buffer, should the message buffer have insufficient space when
+ * xMessageBufferSend() is called.  The calling task will never block if
+ * xTicksToWait is zero.  The block time is specified in tick periods, so the
+ * absolute time it represents is dependent on the tick frequency.  The macro
+ * pdMS_TO_TICKS() can be used to convert a time specified in milliseconds into
+ * a time specified in ticks.  Setting xTicksToWait to portMAX_DELAY will cause
+ * the task to wait indefinitely (without timing out), provided
+ * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h.  Tasks do not use any
+ * CPU time when they are in the Blocked state.
+ *
+ * @return The number of bytes written to the message buffer.  If the call to
+ * xMessageBufferSend() times out before there was enough space to write the
+ * message into the message buffer then zero is returned.  If the call did not
+ * time out then xDataLengthBytes is returned.
+ *
+ * Example use:
+
+void vAFunction( MessageBufferHandle_t xMessageBuffer )
+{
+size_t xBytesSent;
+uint8_t ucArrayToSend[] = { 0, 1, 2, 3 };
+char *pcStringToSend = "String to send";
+const TickType_t x100ms = pdMS_TO_TICKS( 100 );
+
+    // Send an array to the message buffer, blocking for a maximum of 100ms to
+    // wait for enough space to be available in the message buffer.
+    xBytesSent = xMessageBufferSend( xMessageBuffer, ( void * ) ucArrayToSend, sizeof( ucArrayToSend ), x100ms );
+
+    if( xBytesSent != sizeof( ucArrayToSend ) )
+    {
+        // The call to xMessageBufferSend() times out before there was enough
+        // space in the buffer for the data to be written.
+    }
+
+    // Send the string to the message buffer.  Return immediately if there is
+    // not enough space in the buffer.
+    xBytesSent = xMessageBufferSend( xMessageBuffer, ( void * ) pcStringToSend, strlen( pcStringToSend ), 0 );
+
+    if( xBytesSent != strlen( pcStringToSend ) )
+    {
+        // The string could not be added to the message buffer because there was
+        // not enough free space in the buffer.
+    }
+}
+
+ * \defgroup xMessageBufferSend xMessageBufferSend + * \ingroup MessageBufferManagement + */ +#define xMessageBufferSend( xMessageBuffer, pvTxData, xDataLengthBytes, xTicksToWait ) xStreamBufferSend( ( StreamBufferHandle_t ) xMessageBuffer, pvTxData, xDataLengthBytes, xTicksToWait ) + +/** + * message_buffer.h + * +
+size_t xMessageBufferSendFromISR( MessageBufferHandle_t xMessageBuffer,
+                                  const void *pvTxData,
+                                  size_t xDataLengthBytes,
+                                  BaseType_t *pxHigherPriorityTaskWoken );
+
+ *
+ * Interrupt safe version of the API function that sends a discrete message to
+ * the message buffer.  The message can be any length that fits within the
+ * buffer's free space, and is copied into the buffer.
+ *
+ * ***NOTE***:  Uniquely among FreeRTOS objects, the stream buffer
+ * implementation (so also the message buffer implementation, as message buffers
+ * are built on top of stream buffers) assumes there is only one task or
+ * interrupt that will write to the buffer (the writer), and only one task or
+ * interrupt that will read from the buffer (the reader).  It is safe for the
+ * writer and reader to be different tasks or interrupts, but, unlike other
+ * FreeRTOS objects, it is not safe to have multiple different writers or
+ * multiple different readers.  If there are to be multiple different writers
+ * then the application writer must place each call to a writing API function
+ * (such as xMessageBufferSend()) inside a critical section and set the send
+ * block time to 0.  Likewise, if there are to be multiple different readers
+ * then the application writer must place each call to a reading API function
+ * (such as xMessageBufferRead()) inside a critical section and set the receive
+ * block time to 0.
+ *
+ * Use xMessageBufferSend() to write to a message buffer from a task.  Use
+ * xMessageBufferSendFromISR() to write to a message buffer from an interrupt
+ * service routine (ISR).
+ *
+ * @param xMessageBuffer The handle of the message buffer to which a message is
+ * being sent.
+ *
+ * @param pvTxData A pointer to the message that is to be copied into the
+ * message buffer.
+ *
+ * @param xDataLengthBytes The length of the message.  That is, the number of
+ * bytes to copy from pvTxData into the message buffer.  When a message is
+ * written to the message buffer an additional sizeof( size_t ) bytes are also
+ * written to store the message's length.  sizeof( size_t ) is typically 4 bytes
+ * on a 32-bit architecture, so on most 32-bit architecture setting
+ * xDataLengthBytes to 20 will reduce the free space in the message buffer by 24
+ * bytes (20 bytes of message data and 4 bytes to hold the message length).
+ *
+ * @param pxHigherPriorityTaskWoken  It is possible that a message buffer will
+ * have a task blocked on it waiting for data.  Calling
+ * xMessageBufferSendFromISR() can make data available, and so cause a task that
+ * was waiting for data to leave the Blocked state.  If calling
+ * xMessageBufferSendFromISR() causes a task to leave the Blocked state, and the
+ * unblocked task has a priority higher than the currently executing task (the
+ * task that was interrupted), then, internally, xMessageBufferSendFromISR()
+ * will set *pxHigherPriorityTaskWoken to pdTRUE.  If
+ * xMessageBufferSendFromISR() sets this value to pdTRUE, then normally a
+ * context switch should be performed before the interrupt is exited.  This will
+ * ensure that the interrupt returns directly to the highest priority Ready
+ * state task.  *pxHigherPriorityTaskWoken should be set to pdFALSE before it
+ * is passed into the function.  See the code example below for an example.
+ *
+ * @return The number of bytes actually written to the message buffer.  If the
+ * message buffer didn't have enough free space for the message to be stored
+ * then 0 is returned, otherwise xDataLengthBytes is returned.
+ *
+ * Example use:
+
+// A message buffer that has already been created.
+MessageBufferHandle_t xMessageBuffer;
+
+void vAnInterruptServiceRoutine( void )
+{
+size_t xBytesSent;
+char *pcStringToSend = "String to send";
+BaseType_t xHigherPriorityTaskWoken = pdFALSE; // Initialised to pdFALSE.
+
+    // Attempt to send the string to the message buffer.
+    xBytesSent = xMessageBufferSendFromISR( xMessageBuffer,
+                                            ( void * ) pcStringToSend,
+                                            strlen( pcStringToSend ),
+                                            &xHigherPriorityTaskWoken );
+
+    if( xBytesSent != strlen( pcStringToSend ) )
+    {
+        // The string could not be added to the message buffer because there was
+        // not enough free space in the buffer.
+    }
+
+    // If xHigherPriorityTaskWoken was set to pdTRUE inside
+    // xMessageBufferSendFromISR() then a task that has a priority above the
+    // priority of the currently executing task was unblocked and a context
+    // switch should be performed to ensure the ISR returns to the unblocked
+    // task.  In most FreeRTOS ports this is done by simply passing
+    // xHigherPriorityTaskWoken into portYIELD_FROM_ISR(), which will test the
+    // variables value, and perform the context switch if necessary.  Check the
+    // documentation for the port in use for port specific instructions.
+    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
+}
+
+ * \defgroup xMessageBufferSendFromISR xMessageBufferSendFromISR + * \ingroup MessageBufferManagement + */ +#define xMessageBufferSendFromISR( xMessageBuffer, pvTxData, xDataLengthBytes, pxHigherPriorityTaskWoken ) xStreamBufferSendFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pvTxData, xDataLengthBytes, pxHigherPriorityTaskWoken ) + +/** + * message_buffer.h + * +
+size_t xMessageBufferReceive( MessageBufferHandle_t xMessageBuffer,
+                              void *pvRxData,
+                              size_t xBufferLengthBytes,
+                              TickType_t xTicksToWait );
+
+ * + * Receives a discrete message from a message buffer. Messages can be of + * variable length and are copied out of the buffer. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xMessageBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xMessageBufferRead()) inside a critical section and set the receive + * block time to 0. + * + * Use xMessageBufferReceive() to read from a message buffer from a task. Use + * xMessageBufferReceiveFromISR() to read from a message buffer from an + * interrupt service routine (ISR). + * + * @param xMessageBuffer The handle of the message buffer from which a message + * is being received. + * + * @param pvRxData A pointer to the buffer into which the received message is + * to be copied. + * + * @param xBufferLengthBytes The length of the buffer pointed to by the pvRxData + * parameter. This sets the maximum length of the message that can be received. + * If xBufferLengthBytes is too small to hold the next message then the message + * will be left in the message buffer and 0 will be returned. + * + * @param xTicksToWait The maximum amount of time the task should remain in the + * Blocked state to wait for a message, should the message buffer be empty. + * xMessageBufferReceive() will return immediately if xTicksToWait is zero and + * the message buffer is empty. The block time is specified in tick periods, so + * the absolute time it represents is dependent on the tick frequency. The + * macro pdMS_TO_TICKS() can be used to convert a time specified in milliseconds + * into a time specified in ticks. Setting xTicksToWait to portMAX_DELAY will + * cause the task to wait indefinitely (without timing out), provided + * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h. Tasks do not use any + * CPU time when they are in the Blocked state. + * + * @return The length, in bytes, of the message read from the message buffer, if + * any. If xMessageBufferReceive() times out before a message became available + * then zero is returned. If the length of the message is greater than + * xBufferLengthBytes then the message will be left in the message buffer and + * zero is returned. + * + * Example use: +
+void vAFunction( MessageBuffer_t xMessageBuffer )
+{
+uint8_t ucRxData[ 20 ];
+size_t xReceivedBytes;
+const TickType_t xBlockTime = pdMS_TO_TICKS( 20 );
+
+    // Receive the next message from the message buffer.  Wait in the Blocked
+    // state (so not using any CPU processing time) for a maximum of 100ms for
+    // a message to become available.
+    xReceivedBytes = xMessageBufferReceive( xMessageBuffer,
+                                            ( void * ) ucRxData,
+                                            sizeof( ucRxData ),
+                                            xBlockTime );
+
+    if( xReceivedBytes > 0 )
+    {
+        // A ucRxData contains a message that is xReceivedBytes long.  Process
+        // the message here....
+    }
+}
+
+ * \defgroup xMessageBufferReceive xMessageBufferReceive + * \ingroup MessageBufferManagement + */ +#define xMessageBufferReceive( xMessageBuffer, pvRxData, xBufferLengthBytes, xTicksToWait ) xStreamBufferReceive( ( StreamBufferHandle_t ) xMessageBuffer, pvRxData, xBufferLengthBytes, xTicksToWait ) + + +/** + * message_buffer.h + * +
+size_t xMessageBufferReceiveFromISR( MessageBufferHandle_t xMessageBuffer,
+                                     void *pvRxData,
+                                     size_t xBufferLengthBytes,
+                                     BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * An interrupt safe version of the API function that receives a discrete + * message from a message buffer. Messages can be of variable length and are + * copied out of the buffer. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xMessageBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xMessageBufferRead()) inside a critical section and set the receive + * block time to 0. + * + * Use xMessageBufferReceive() to read from a message buffer from a task. Use + * xMessageBufferReceiveFromISR() to read from a message buffer from an + * interrupt service routine (ISR). + * + * @param xMessageBuffer The handle of the message buffer from which a message + * is being received. + * + * @param pvRxData A pointer to the buffer into which the received message is + * to be copied. + * + * @param xBufferLengthBytes The length of the buffer pointed to by the pvRxData + * parameter. This sets the maximum length of the message that can be received. + * If xBufferLengthBytes is too small to hold the next message then the message + * will be left in the message buffer and 0 will be returned. + * + * @param pxHigherPriorityTaskWoken It is possible that a message buffer will + * have a task blocked on it waiting for space to become available. Calling + * xMessageBufferReceiveFromISR() can make space available, and so cause a task + * that is waiting for space to leave the Blocked state. If calling + * xMessageBufferReceiveFromISR() causes a task to leave the Blocked state, and + * the unblocked task has a priority higher than the currently executing task + * (the task that was interrupted), then, internally, + * xMessageBufferReceiveFromISR() will set *pxHigherPriorityTaskWoken to pdTRUE. + * If xMessageBufferReceiveFromISR() sets this value to pdTRUE, then normally a + * context switch should be performed before the interrupt is exited. That will + * ensure the interrupt returns directly to the highest priority Ready state + * task. *pxHigherPriorityTaskWoken should be set to pdFALSE before it is + * passed into the function. See the code example below for an example. + * + * @return The length, in bytes, of the message read from the message buffer, if + * any. + * + * Example use: +
+// A message buffer that has already been created.
+MessageBuffer_t xMessageBuffer;
+
+void vAnInterruptServiceRoutine( void )
+{
+uint8_t ucRxData[ 20 ];
+size_t xReceivedBytes;
+BaseType_t xHigherPriorityTaskWoken = pdFALSE;  // Initialised to pdFALSE.
+
+    // Receive the next message from the message buffer.
+    xReceivedBytes = xMessageBufferReceiveFromISR( xMessageBuffer,
+                                                  ( void * ) ucRxData,
+                                                  sizeof( ucRxData ),
+                                                  &xHigherPriorityTaskWoken );
+
+    if( xReceivedBytes > 0 )
+    {
+        // A ucRxData contains a message that is xReceivedBytes long.  Process
+        // the message here....
+    }
+
+    // If xHigherPriorityTaskWoken was set to pdTRUE inside
+    // xMessageBufferReceiveFromISR() then a task that has a priority above the
+    // priority of the currently executing task was unblocked and a context
+    // switch should be performed to ensure the ISR returns to the unblocked
+    // task.  In most FreeRTOS ports this is done by simply passing
+    // xHigherPriorityTaskWoken into portYIELD_FROM_ISR(), which will test the
+    // variables value, and perform the context switch if necessary.  Check the
+    // documentation for the port in use for port specific instructions.
+    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
+}
+
+ * \defgroup xMessageBufferReceiveFromISR xMessageBufferReceiveFromISR + * \ingroup MessageBufferManagement + */ +#define xMessageBufferReceiveFromISR( xMessageBuffer, pvRxData, xBufferLengthBytes, pxHigherPriorityTaskWoken ) xStreamBufferReceiveFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pvRxData, xBufferLengthBytes, pxHigherPriorityTaskWoken ) + +/** + * message_buffer.h + * +
+void vMessageBufferDelete( MessageBufferHandle_t xMessageBuffer );
+
+ * + * Deletes a message buffer that was previously created using a call to + * xMessageBufferCreate() or xMessageBufferCreateStatic(). If the message + * buffer was created using dynamic memory (that is, by xMessageBufferCreate()), + * then the allocated memory is freed. + * + * A message buffer handle must not be used after the message buffer has been + * deleted. + * + * @param xMessageBuffer The handle of the message buffer to be deleted. + * + */ +#define vMessageBufferDelete( xMessageBuffer ) vStreamBufferDelete( ( StreamBufferHandle_t ) xMessageBuffer ) + +/** + * message_buffer.h +
+BaseType_t xMessageBufferIsFull( MessageBufferHandle_t xMessageBuffer ) );
+
+ * + * Tests to see if a message buffer is full. A message buffer is full if it + * cannot accept any more messages, of any size, until space is made available + * by a message being removed from the message buffer. + * + * @param xMessageBuffer The handle of the message buffer being queried. + * + * @return If the message buffer referenced by xMessageBuffer is full then + * pdTRUE is returned. Otherwise pdFALSE is returned. + */ +#define xMessageBufferIsFull( xMessageBuffer ) xStreamBufferIsFull( ( StreamBufferHandle_t ) xMessageBuffer ) + +/** + * message_buffer.h +
+BaseType_t xMessageBufferIsEmpty( MessageBufferHandle_t xMessageBuffer ) );
+
+ * + * Tests to see if a message buffer is empty (does not contain any messages). + * + * @param xMessageBuffer The handle of the message buffer being queried. + * + * @return If the message buffer referenced by xMessageBuffer is empty then + * pdTRUE is returned. Otherwise pdFALSE is returned. + * + */ +#define xMessageBufferIsEmpty( xMessageBuffer ) xStreamBufferIsEmpty( ( StreamBufferHandle_t ) xMessageBuffer ) + +/** + * message_buffer.h +
+BaseType_t xMessageBufferReset( MessageBufferHandle_t xMessageBuffer );
+
+ * + * Resets a message buffer to its initial empty state, discarding any message it + * contained. + * + * A message buffer can only be reset if there are no tasks blocked on it. + * + * @param xMessageBuffer The handle of the message buffer being reset. + * + * @return If the message buffer was reset then pdPASS is returned. If the + * message buffer could not be reset because either there was a task blocked on + * the message queue to wait for space to become available, or to wait for a + * a message to be available, then pdFAIL is returned. + * + * \defgroup xMessageBufferReset xMessageBufferReset + * \ingroup MessageBufferManagement + */ +#define xMessageBufferReset( xMessageBuffer ) xStreamBufferReset( ( StreamBufferHandle_t ) xMessageBuffer ) + + +/** + * message_buffer.h +
+size_t xMessageBufferSpaceAvailable( MessageBufferHandle_t xMessageBuffer ) );
+
+ * Returns the number of bytes of free space in the message buffer. + * + * @param xMessageBuffer The handle of the message buffer being queried. + * + * @return The number of bytes that can be written to the message buffer before + * the message buffer would be full. When a message is written to the message + * buffer an additional sizeof( size_t ) bytes are also written to store the + * message's length. sizeof( size_t ) is typically 4 bytes on a 32-bit + * architecture, so if xMessageBufferSpacesAvailable() returns 10, then the size + * of the largest message that can be written to the message buffer is 6 bytes. + * + * \defgroup xMessageBufferSpaceAvailable xMessageBufferSpaceAvailable + * \ingroup MessageBufferManagement + */ +#define xMessageBufferSpaceAvailable( xMessageBuffer ) xStreamBufferSpacesAvailable( ( StreamBufferHandle_t ) xMessageBuffer ) +#define xMessageBufferSpacesAvailable( xMessageBuffer ) xStreamBufferSpacesAvailable( ( StreamBufferHandle_t ) xMessageBuffer ) /* Corrects typo in original macro name. */ + +/** + * message_buffer.h +
+ size_t xMessageBufferNextLengthBytes( MessageBufferHandle_t xMessageBuffer ) );
+ 
+ * Returns the length (in bytes) of the next message in a message buffer. + * Useful if xMessageBufferReceive() returned 0 because the size of the buffer + * passed into xMessageBufferReceive() was too small to hold the next message. + * + * @param xMessageBuffer The handle of the message buffer being queried. + * + * @return The length (in bytes) of the next message in the message buffer, or 0 + * if the message buffer is empty. + * + * \defgroup xMessageBufferNextLengthBytes xMessageBufferNextLengthBytes + * \ingroup MessageBufferManagement + */ +#define xMessageBufferNextLengthBytes( xMessageBuffer ) xStreamBufferNextMessageLengthBytes( ( StreamBufferHandle_t ) xMessageBuffer ) PRIVILEGED_FUNCTION; + +/** + * message_buffer.h + * +
+BaseType_t xMessageBufferSendCompletedFromISR( MessageBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * For advanced users only. + * + * The sbSEND_COMPLETED() macro is called from within the FreeRTOS APIs when + * data is sent to a message buffer or stream buffer. If there was a task that + * was blocked on the message or stream buffer waiting for data to arrive then + * the sbSEND_COMPLETED() macro sends a notification to the task to remove it + * from the Blocked state. xMessageBufferSendCompletedFromISR() does the same + * thing. It is provided to enable application writers to implement their own + * version of sbSEND_COMPLETED(), and MUST NOT BE USED AT ANY OTHER TIME. + * + * See the example implemented in FreeRTOS/Demo/Minimal/MessageBufferAMP.c for + * additional information. + * + * @param xStreamBuffer The handle of the stream buffer to which data was + * written. + * + * @param pxHigherPriorityTaskWoken *pxHigherPriorityTaskWoken should be + * initialised to pdFALSE before it is passed into + * xMessageBufferSendCompletedFromISR(). If calling + * xMessageBufferSendCompletedFromISR() removes a task from the Blocked state, + * and the task has a priority above the priority of the currently running task, + * then *pxHigherPriorityTaskWoken will get set to pdTRUE indicating that a + * context switch should be performed before exiting the ISR. + * + * @return If a task was removed from the Blocked state then pdTRUE is returned. + * Otherwise pdFALSE is returned. + * + * \defgroup xMessageBufferSendCompletedFromISR xMessageBufferSendCompletedFromISR + * \ingroup StreamBufferManagement + */ +#define xMessageBufferSendCompletedFromISR( xMessageBuffer, pxHigherPriorityTaskWoken ) xStreamBufferSendCompletedFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pxHigherPriorityTaskWoken ) + +/** + * message_buffer.h + * +
+BaseType_t xMessageBufferReceiveCompletedFromISR( MessageBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * For advanced users only. + * + * The sbRECEIVE_COMPLETED() macro is called from within the FreeRTOS APIs when + * data is read out of a message buffer or stream buffer. If there was a task + * that was blocked on the message or stream buffer waiting for data to arrive + * then the sbRECEIVE_COMPLETED() macro sends a notification to the task to + * remove it from the Blocked state. xMessageBufferReceiveCompletedFromISR() + * does the same thing. It is provided to enable application writers to + * implement their own version of sbRECEIVE_COMPLETED(), and MUST NOT BE USED AT + * ANY OTHER TIME. + * + * See the example implemented in FreeRTOS/Demo/Minimal/MessageBufferAMP.c for + * additional information. + * + * @param xStreamBuffer The handle of the stream buffer from which data was + * read. + * + * @param pxHigherPriorityTaskWoken *pxHigherPriorityTaskWoken should be + * initialised to pdFALSE before it is passed into + * xMessageBufferReceiveCompletedFromISR(). If calling + * xMessageBufferReceiveCompletedFromISR() removes a task from the Blocked state, + * and the task has a priority above the priority of the currently running task, + * then *pxHigherPriorityTaskWoken will get set to pdTRUE indicating that a + * context switch should be performed before exiting the ISR. + * + * @return If a task was removed from the Blocked state then pdTRUE is returned. + * Otherwise pdFALSE is returned. + * + * \defgroup xMessageBufferReceiveCompletedFromISR xMessageBufferReceiveCompletedFromISR + * \ingroup StreamBufferManagement + */ +#define xMessageBufferReceiveCompletedFromISR( xMessageBuffer, pxHigherPriorityTaskWoken ) xStreamBufferReceiveCompletedFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pxHigherPriorityTaskWoken ) + +#if defined( __cplusplus ) +} /* extern "C" */ +#endif + +#endif /* !defined( FREERTOS_MESSAGE_BUFFER_H ) */ diff --git a/components/freertos/include/mpu_prototypes.h b/components/freertos/include/mpu_prototypes.h new file mode 100644 index 00000000..d5a199e6 --- /dev/null +++ b/components/freertos/include/mpu_prototypes.h @@ -0,0 +1,158 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* + * When the MPU is used the standard (non MPU) API functions are mapped to + * equivalents that start "MPU_", the prototypes for which are defined in this + * header files. This will cause the application code to call the MPU_ version + * which wraps the non-MPU version with privilege promoting then demoting code, + * so the kernel code always runs will full privileges. + */ + + +#ifndef MPU_PROTOTYPES_H +#define MPU_PROTOTYPES_H + +/* MPU versions of tasks.h API functions. */ +BaseType_t MPU_xTaskCreate( TaskFunction_t pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask ) FREERTOS_SYSTEM_CALL; +TaskHandle_t MPU_xTaskCreateStatic( TaskFunction_t pxTaskCode, const char * const pcName, const uint32_t ulStackDepth, void * const pvParameters, UBaseType_t uxPriority, StackType_t * const puxStackBuffer, StaticTask_t * const pxTaskBuffer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskCreateRestrictedStatic( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskAllocateMPURegions( TaskHandle_t xTask, const MemoryRegion_t * const pxRegions ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskDelete( TaskHandle_t xTaskToDelete ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskDelay( const TickType_t xTicksToDelay ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +eTaskState MPU_eTaskGetState( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskSuspend( TaskHandle_t xTaskToSuspend ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskResume( TaskHandle_t xTaskToResume ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskStartScheduler( void ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskSuspendAll( void ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskResumeAll( void ) FREERTOS_SYSTEM_CALL; +TickType_t MPU_xTaskGetTickCount( void ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxTaskGetNumberOfTasks( void ) FREERTOS_SYSTEM_CALL; +char * MPU_pcTaskGetName( TaskHandle_t xTaskToQuery ) FREERTOS_SYSTEM_CALL; +TaskHandle_t MPU_xTaskGetHandle( const char *pcNameToQuery ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction ) FREERTOS_SYSTEM_CALL; +TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, BaseType_t xIndex, void *pvValue ) FREERTOS_SYSTEM_CALL; +void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, BaseType_t xIndex ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter ) FREERTOS_SYSTEM_CALL; +TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime ) FREERTOS_SYSTEM_CALL; +uint32_t MPU_ulTaskGetIdleRunTimeCounter( void ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskList( char * pcWriteBuffer ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskGetRunTimeStats( char *pcWriteBuffer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +uint32_t MPU_ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskNotifyStateClear( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskIncrementTick( void ) FREERTOS_SYSTEM_CALL; +TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskMissedYield( void ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskGetSchedulerState( void ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) FREERTOS_SYSTEM_CALL; + +/* MPU versions of queue.h API functions. */ +BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; +void MPU_vQueueDelete( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; +QueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL; +QueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue ) FREERTOS_SYSTEM_CALL; +QueueHandle_t MPU_xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) FREERTOS_SYSTEM_CALL; +QueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) FREERTOS_SYSTEM_CALL; +TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) FREERTOS_SYSTEM_CALL; +void MPU_vQueueAddToRegistry( QueueHandle_t xQueue, const char *pcName ) FREERTOS_SYSTEM_CALL; +void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; +const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; +QueueHandle_t MPU_xQueueGenericCreate( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL; +QueueHandle_t MPU_xQueueGenericCreateStatic( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, StaticQueue_t *pxStaticQueue, const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL; +QueueSetHandle_t MPU_xQueueCreateSet( const UBaseType_t uxEventQueueLength ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL; +QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue ) FREERTOS_SYSTEM_CALL; +void MPU_vQueueSetQueueNumber( QueueHandle_t xQueue, UBaseType_t uxQueueNumber ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxQueueGetQueueNumber( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; +uint8_t MPU_ucQueueGetQueueType( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; + +/* MPU versions of timers.h API functions. */ +TimerHandle_t MPU_xTimerCreate( const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, TimerCallbackFunction_t pxCallbackFunction ) FREERTOS_SYSTEM_CALL; +TimerHandle_t MPU_xTimerCreateStatic( const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, TimerCallbackFunction_t pxCallbackFunction, StaticTimer_t *pxTimerBuffer ) FREERTOS_SYSTEM_CALL; +void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; +void MPU_vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; +TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTimerPendFunctionCall( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; +void MPU_vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload ) FREERTOS_SYSTEM_CALL; +TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; +TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTimerCreateTimerTask( void ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; + +/* MPU versions of event_group.h API functions. */ +EventGroupHandle_t MPU_xEventGroupCreate( void ) FREERTOS_SYSTEM_CALL; +EventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t *pxEventGroupBuffer ) FREERTOS_SYSTEM_CALL; +EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear ) FREERTOS_SYSTEM_CALL; +EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet ) FREERTOS_SYSTEM_CALL; +EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +void MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxEventGroupGetNumber( void* xEventGroup ) FREERTOS_SYSTEM_CALL; + +/* MPU versions of message/stream_buffer.h API functions. */ +size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, const void *pvTxData, size_t xDataLengthBytes, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer, void *pvRxData, size_t xBufferLengthBytes, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, size_t xTriggerLevel ) FREERTOS_SYSTEM_CALL; +StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes, size_t xTriggerLevelBytes, BaseType_t xIsMessageBuffer ) FREERTOS_SYSTEM_CALL; +StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes, size_t xTriggerLevelBytes, BaseType_t xIsMessageBuffer, uint8_t * const pucStreamBufferStorageArea, StaticStreamBuffer_t * const pxStaticStreamBuffer ) FREERTOS_SYSTEM_CALL; + + + +#endif /* MPU_PROTOTYPES_H */ + diff --git a/components/freertos/include/mpu_wrappers.h b/components/freertos/include/mpu_wrappers.h new file mode 100644 index 00000000..8a03de10 --- /dev/null +++ b/components/freertos/include/mpu_wrappers.h @@ -0,0 +1,187 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef MPU_WRAPPERS_H +#define MPU_WRAPPERS_H + +/* This file redefines API functions to be called through a wrapper macro, but +only for ports that are using the MPU. */ +#ifdef portUSING_MPU_WRAPPERS + + /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE will be defined when this file is + included from queue.c or task.c to prevent it from having an effect within + those files. */ + #ifndef MPU_WRAPPERS_INCLUDED_FROM_API_FILE + + /* + * Map standard (non MPU) API functions to equivalents that start + * "MPU_". This will cause the application code to call the MPU_ + * version, which wraps the non-MPU version with privilege promoting + * then demoting code, so the kernel code always runs will full + * privileges. + */ + + /* Map standard tasks.h API functions to the MPU equivalents. */ + #define xTaskCreate MPU_xTaskCreate + #define xTaskCreateStatic MPU_xTaskCreateStatic + #define xTaskCreateRestricted MPU_xTaskCreateRestricted + #define vTaskAllocateMPURegions MPU_vTaskAllocateMPURegions + #define vTaskDelete MPU_vTaskDelete + #define vTaskDelay MPU_vTaskDelay + #define vTaskDelayUntil MPU_vTaskDelayUntil + #define xTaskAbortDelay MPU_xTaskAbortDelay + #define uxTaskPriorityGet MPU_uxTaskPriorityGet + #define eTaskGetState MPU_eTaskGetState + #define vTaskGetInfo MPU_vTaskGetInfo + #define vTaskPrioritySet MPU_vTaskPrioritySet + #define vTaskSuspend MPU_vTaskSuspend + #define vTaskResume MPU_vTaskResume + #define vTaskSuspendAll MPU_vTaskSuspendAll + #define xTaskResumeAll MPU_xTaskResumeAll + #define xTaskGetTickCount MPU_xTaskGetTickCount + #define uxTaskGetNumberOfTasks MPU_uxTaskGetNumberOfTasks + #define pcTaskGetName MPU_pcTaskGetName + #define xTaskGetHandle MPU_xTaskGetHandle + #define uxTaskGetStackHighWaterMark MPU_uxTaskGetStackHighWaterMark + #define uxTaskGetStackHighWaterMark2 MPU_uxTaskGetStackHighWaterMark2 + #define vTaskSetApplicationTaskTag MPU_vTaskSetApplicationTaskTag + #define xTaskGetApplicationTaskTag MPU_xTaskGetApplicationTaskTag + #define vTaskSetThreadLocalStoragePointer MPU_vTaskSetThreadLocalStoragePointer + #define pvTaskGetThreadLocalStoragePointer MPU_pvTaskGetThreadLocalStoragePointer + #define xTaskCallApplicationTaskHook MPU_xTaskCallApplicationTaskHook + #define xTaskGetIdleTaskHandle MPU_xTaskGetIdleTaskHandle + #define uxTaskGetSystemState MPU_uxTaskGetSystemState + #define vTaskList MPU_vTaskList + #define vTaskGetRunTimeStats MPU_vTaskGetRunTimeStats + #define ulTaskGetIdleRunTimeCounter MPU_ulTaskGetIdleRunTimeCounter + #define xTaskGenericNotify MPU_xTaskGenericNotify + #define xTaskNotifyWait MPU_xTaskNotifyWait + #define ulTaskNotifyTake MPU_ulTaskNotifyTake + #define xTaskNotifyStateClear MPU_xTaskNotifyStateClear + #define xTaskCatchUpTicks MPU_xTaskCatchUpTicks + + #define xTaskGetCurrentTaskHandle MPU_xTaskGetCurrentTaskHandle + #define vTaskSetTimeOutState MPU_vTaskSetTimeOutState + #define xTaskCheckForTimeOut MPU_xTaskCheckForTimeOut + #define xTaskGetSchedulerState MPU_xTaskGetSchedulerState + + /* Map standard queue.h API functions to the MPU equivalents. */ + #define xQueueGenericSend MPU_xQueueGenericSend + #define xQueueReceive MPU_xQueueReceive + #define xQueuePeek MPU_xQueuePeek + #define xQueueSemaphoreTake MPU_xQueueSemaphoreTake + #define uxQueueMessagesWaiting MPU_uxQueueMessagesWaiting + #define uxQueueSpacesAvailable MPU_uxQueueSpacesAvailable + #define vQueueDelete MPU_vQueueDelete + #define xQueueCreateMutex MPU_xQueueCreateMutex + #define xQueueCreateMutexStatic MPU_xQueueCreateMutexStatic + #define xQueueCreateCountingSemaphore MPU_xQueueCreateCountingSemaphore + #define xQueueCreateCountingSemaphoreStatic MPU_xQueueCreateCountingSemaphoreStatic + #define xQueueGetMutexHolder MPU_xQueueGetMutexHolder + #define xQueueTakeMutexRecursive MPU_xQueueTakeMutexRecursive + #define xQueueGiveMutexRecursive MPU_xQueueGiveMutexRecursive + #define xQueueGenericCreate MPU_xQueueGenericCreate + #define xQueueGenericCreateStatic MPU_xQueueGenericCreateStatic + #define xQueueCreateSet MPU_xQueueCreateSet + #define xQueueAddToSet MPU_xQueueAddToSet + #define xQueueRemoveFromSet MPU_xQueueRemoveFromSet + #define xQueueSelectFromSet MPU_xQueueSelectFromSet + #define xQueueGenericReset MPU_xQueueGenericReset + + #if( configQUEUE_REGISTRY_SIZE > 0 ) + #define vQueueAddToRegistry MPU_vQueueAddToRegistry + #define vQueueUnregisterQueue MPU_vQueueUnregisterQueue + #define pcQueueGetName MPU_pcQueueGetName + #endif + + /* Map standard timer.h API functions to the MPU equivalents. */ + #define xTimerCreate MPU_xTimerCreate + #define xTimerCreateStatic MPU_xTimerCreateStatic + #define pvTimerGetTimerID MPU_pvTimerGetTimerID + #define vTimerSetTimerID MPU_vTimerSetTimerID + #define xTimerIsTimerActive MPU_xTimerIsTimerActive + #define xTimerGetTimerDaemonTaskHandle MPU_xTimerGetTimerDaemonTaskHandle + #define xTimerPendFunctionCall MPU_xTimerPendFunctionCall + #define pcTimerGetName MPU_pcTimerGetName + #define vTimerSetReloadMode MPU_vTimerSetReloadMode + #define xTimerGetPeriod MPU_xTimerGetPeriod + #define xTimerGetExpiryTime MPU_xTimerGetExpiryTime + #define xTimerGenericCommand MPU_xTimerGenericCommand + + /* Map standard event_group.h API functions to the MPU equivalents. */ + #define xEventGroupCreate MPU_xEventGroupCreate + #define xEventGroupCreateStatic MPU_xEventGroupCreateStatic + #define xEventGroupWaitBits MPU_xEventGroupWaitBits + #define xEventGroupClearBits MPU_xEventGroupClearBits + #define xEventGroupSetBits MPU_xEventGroupSetBits + #define xEventGroupSync MPU_xEventGroupSync + #define vEventGroupDelete MPU_vEventGroupDelete + + /* Map standard message/stream_buffer.h API functions to the MPU + equivalents. */ + #define xStreamBufferSend MPU_xStreamBufferSend + #define xStreamBufferReceive MPU_xStreamBufferReceive + #define xStreamBufferNextMessageLengthBytes MPU_xStreamBufferNextMessageLengthBytes + #define vStreamBufferDelete MPU_vStreamBufferDelete + #define xStreamBufferIsFull MPU_xStreamBufferIsFull + #define xStreamBufferIsEmpty MPU_xStreamBufferIsEmpty + #define xStreamBufferReset MPU_xStreamBufferReset + #define xStreamBufferSpacesAvailable MPU_xStreamBufferSpacesAvailable + #define xStreamBufferBytesAvailable MPU_xStreamBufferBytesAvailable + #define xStreamBufferSetTriggerLevel MPU_xStreamBufferSetTriggerLevel + #define xStreamBufferGenericCreate MPU_xStreamBufferGenericCreate + #define xStreamBufferGenericCreateStatic MPU_xStreamBufferGenericCreateStatic + + + /* Remove the privileged function macro, but keep the PRIVILEGED_DATA + macro so applications can place data in privileged access sections + (useful when using statically allocated objects). */ + #define PRIVILEGED_FUNCTION + #define PRIVILEGED_DATA __attribute__((section("privileged_data"))) + #define FREERTOS_SYSTEM_CALL + + #else /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */ + + /* Ensure API functions go in the privileged execution section. */ + #define PRIVILEGED_FUNCTION __attribute__((section("privileged_functions"))) + #define PRIVILEGED_DATA __attribute__((section("privileged_data"))) + #define FREERTOS_SYSTEM_CALL __attribute__((section( "freertos_system_calls"))) + + #endif /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */ + +#else /* portUSING_MPU_WRAPPERS */ + + #define PRIVILEGED_FUNCTION + #define PRIVILEGED_DATA + #define FREERTOS_SYSTEM_CALL + #define portUSING_MPU_WRAPPERS 0 + +#endif /* portUSING_MPU_WRAPPERS */ + + +#endif /* MPU_WRAPPERS_H */ + diff --git a/components/freertos/include/portable.h b/components/freertos/include/portable.h new file mode 100644 index 00000000..dea03aaa --- /dev/null +++ b/components/freertos/include/portable.h @@ -0,0 +1,199 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/*----------------------------------------------------------- + * Portable layer API. Each function must be defined for each port. + *----------------------------------------------------------*/ + +#ifndef PORTABLE_H +#define PORTABLE_H + +/* Each FreeRTOS port has a unique portmacro.h header file. Originally a +pre-processor definition was used to ensure the pre-processor found the correct +portmacro.h file for the port being used. That scheme was deprecated in favour +of setting the compiler's include path such that it found the correct +portmacro.h file - removing the need for the constant and allowing the +portmacro.h file to be located anywhere in relation to the port being used. +Purely for reasons of backward compatibility the old method is still valid, but +to make it clear that new projects should not use it, support for the port +specific constants has been moved into the deprecated_definitions.h header +file. */ +#include "deprecated_definitions.h" + +/* If portENTER_CRITICAL is not defined then including deprecated_definitions.h +did not result in a portmacro.h header file being included - and it should be +included here. In this case the path to the correct portmacro.h header file +must be set in the compiler's include path. */ +#ifndef portENTER_CRITICAL + #include "portmacro.h" +#endif + +#if portBYTE_ALIGNMENT == 32 + #define portBYTE_ALIGNMENT_MASK ( 0x001f ) +#endif + +#if portBYTE_ALIGNMENT == 16 + #define portBYTE_ALIGNMENT_MASK ( 0x000f ) +#endif + +#if portBYTE_ALIGNMENT == 8 + #define portBYTE_ALIGNMENT_MASK ( 0x0007 ) +#endif + +#if portBYTE_ALIGNMENT == 4 + #define portBYTE_ALIGNMENT_MASK ( 0x0003 ) +#endif + +#if portBYTE_ALIGNMENT == 2 + #define portBYTE_ALIGNMENT_MASK ( 0x0001 ) +#endif + +#if portBYTE_ALIGNMENT == 1 + #define portBYTE_ALIGNMENT_MASK ( 0x0000 ) +#endif + +#ifndef portBYTE_ALIGNMENT_MASK + #error "Invalid portBYTE_ALIGNMENT definition" +#endif + +#ifndef portNUM_CONFIGURABLE_REGIONS + #define portNUM_CONFIGURABLE_REGIONS 1 +#endif + +#ifndef portHAS_STACK_OVERFLOW_CHECKING + #define portHAS_STACK_OVERFLOW_CHECKING 0 +#endif + +#ifndef portARCH_NAME + #define portARCH_NAME NULL +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include "mpu_wrappers.h" + +/* + * Setup the stack of a new task so it is ready to be placed under the + * scheduler control. The registers have to be placed on the stack in + * the order that the port expects to find them. + * + */ +#if( portUSING_MPU_WRAPPERS == 1 ) + #if( portHAS_STACK_OVERFLOW_CHECKING == 1 ) + StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, StackType_t *pxEndOfStack, TaskFunction_t pxCode, void *pvParameters, BaseType_t xRunPrivileged ) PRIVILEGED_FUNCTION; + #else + StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters, BaseType_t xRunPrivileged ) PRIVILEGED_FUNCTION; + #endif +#else + #if( portHAS_STACK_OVERFLOW_CHECKING == 1 ) + StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, StackType_t *pxEndOfStack, TaskFunction_t pxCode, void *pvParameters ) PRIVILEGED_FUNCTION; + #else + StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters ) PRIVILEGED_FUNCTION; + #endif +#endif + +/* Used by heap_5.c to define the start address and size of each memory region +that together comprise the total FreeRTOS heap space. */ +typedef struct HeapRegion +{ + uint8_t *pucStartAddress; + size_t xSizeInBytes; +} HeapRegion_t; + +/* Used to pass information about the heap out of vPortGetHeapStats(). */ +typedef struct xHeapStats +{ + size_t xAvailableHeapSpaceInBytes; /* The total heap size currently available - this is the sum of all the free blocks, not the largest block that can be allocated. */ + size_t xSizeOfLargestFreeBlockInBytes; /* The maximum size, in bytes, of all the free blocks within the heap at the time vPortGetHeapStats() is called. */ + size_t xSizeOfSmallestFreeBlockInBytes; /* The minimum size, in bytes, of all the free blocks within the heap at the time vPortGetHeapStats() is called. */ + size_t xNumberOfFreeBlocks; /* The number of free memory blocks within the heap at the time vPortGetHeapStats() is called. */ + size_t xMinimumEverFreeBytesRemaining; /* The minimum amount of total free memory (sum of all free blocks) there has been in the heap since the system booted. */ + size_t xNumberOfSuccessfulAllocations; /* The number of calls to pvPortMalloc() that have returned a valid memory block. */ + size_t xNumberOfSuccessfulFrees; /* The number of calls to vPortFree() that has successfully freed a block of memory. */ +} HeapStats_t; + +/* + * Used to define multiple heap regions for use by heap_5.c. This function + * must be called before any calls to pvPortMalloc() - not creating a task, + * queue, semaphore, mutex, software timer, event group, etc. will result in + * pvPortMalloc being called. + * + * pxHeapRegions passes in an array of HeapRegion_t structures - each of which + * defines a region of memory that can be used as the heap. The array is + * terminated by a HeapRegions_t structure that has a size of 0. The region + * with the lowest start address must appear first in the array. + */ +void vPortDefineHeapRegions( const HeapRegion_t * const pxHeapRegions ) PRIVILEGED_FUNCTION; + +/* + * Returns a HeapStats_t structure filled with information about the current + * heap state. + */ +void vPortGetHeapStats( HeapStats_t *pxHeapStats ); + +/* + * Map to the memory management routines required for the port. + */ +void *pvPortMalloc( size_t xSize ) PRIVILEGED_FUNCTION; +void vPortFree( void *pv ) PRIVILEGED_FUNCTION; +void vPortInitialiseBlocks( void ) PRIVILEGED_FUNCTION; +size_t xPortGetFreeHeapSize( void ) PRIVILEGED_FUNCTION; +size_t xPortGetMinimumEverFreeHeapSize( void ) PRIVILEGED_FUNCTION; + +/* + * Setup the hardware ready for the scheduler to take control. This generally + * sets up a tick interrupt and sets timers for the correct tick frequency. + */ +BaseType_t xPortStartScheduler( void ) PRIVILEGED_FUNCTION; + +/* + * Undo any hardware/ISR setup that was performed by xPortStartScheduler() so + * the hardware is left in its original condition after the scheduler stops + * executing. + */ +void vPortEndScheduler( void ) PRIVILEGED_FUNCTION; + +/* + * The structures and methods of manipulating the MPU are contained within the + * port layer. + * + * Fills the xMPUSettings structure with the memory region information + * contained in xRegions. + */ +#if( portUSING_MPU_WRAPPERS == 1 ) + struct xMEMORY_REGION; + void vPortStoreTaskMPUSettings( xMPU_SETTINGS *xMPUSettings, const struct xMEMORY_REGION * const xRegions, StackType_t *pxBottomOfStack, uint32_t ulStackDepth ) PRIVILEGED_FUNCTION; +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* PORTABLE_H */ + diff --git a/components/freertos/include/projdefs.h b/components/freertos/include/projdefs.h new file mode 100644 index 00000000..e0458619 --- /dev/null +++ b/components/freertos/include/projdefs.h @@ -0,0 +1,124 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef PROJDEFS_H +#define PROJDEFS_H + +/* + * Defines the prototype to which task functions must conform. Defined in this + * file to ensure the type is known before portable.h is included. + */ +typedef void (*TaskFunction_t)( void * ); + +/* Converts a time in milliseconds to a time in ticks. This macro can be +overridden by a macro of the same name defined in FreeRTOSConfig.h in case the +definition here is not suitable for your application. */ +#ifndef pdMS_TO_TICKS + #define pdMS_TO_TICKS( xTimeInMs ) ( ( TickType_t ) ( ( ( TickType_t ) ( xTimeInMs ) * ( TickType_t ) configTICK_RATE_HZ ) / ( TickType_t ) 1000 ) ) +#endif + +#define pdFALSE ( ( BaseType_t ) 0 ) +#define pdTRUE ( ( BaseType_t ) 1 ) + +#define pdPASS ( pdTRUE ) +#define pdFAIL ( pdFALSE ) +#define errQUEUE_EMPTY ( ( BaseType_t ) 0 ) +#define errQUEUE_FULL ( ( BaseType_t ) 0 ) + +/* FreeRTOS error definitions. */ +#define errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY ( -1 ) +#define errQUEUE_BLOCKED ( -4 ) +#define errQUEUE_YIELD ( -5 ) + +/* Macros used for basic data corruption checks. */ +#ifndef configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES + #define configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES 0 +#endif + +#if( configUSE_16_BIT_TICKS == 1 ) + #define pdINTEGRITY_CHECK_VALUE 0x5a5a +#else + #define pdINTEGRITY_CHECK_VALUE 0x5a5a5a5aUL +#endif + +/* The following errno values are used by FreeRTOS+ components, not FreeRTOS +itself. */ +#define pdFREERTOS_ERRNO_NONE 0 /* No errors */ +#define pdFREERTOS_ERRNO_ENOENT 2 /* No such file or directory */ +#define pdFREERTOS_ERRNO_EINTR 4 /* Interrupted system call */ +#define pdFREERTOS_ERRNO_EIO 5 /* I/O error */ +#define pdFREERTOS_ERRNO_ENXIO 6 /* No such device or address */ +#define pdFREERTOS_ERRNO_EBADF 9 /* Bad file number */ +#define pdFREERTOS_ERRNO_EAGAIN 11 /* No more processes */ +#define pdFREERTOS_ERRNO_EWOULDBLOCK 11 /* Operation would block */ +#define pdFREERTOS_ERRNO_ENOMEM 12 /* Not enough memory */ +#define pdFREERTOS_ERRNO_EACCES 13 /* Permission denied */ +#define pdFREERTOS_ERRNO_EFAULT 14 /* Bad address */ +#define pdFREERTOS_ERRNO_EBUSY 16 /* Mount device busy */ +#define pdFREERTOS_ERRNO_EEXIST 17 /* File exists */ +#define pdFREERTOS_ERRNO_EXDEV 18 /* Cross-device link */ +#define pdFREERTOS_ERRNO_ENODEV 19 /* No such device */ +#define pdFREERTOS_ERRNO_ENOTDIR 20 /* Not a directory */ +#define pdFREERTOS_ERRNO_EISDIR 21 /* Is a directory */ +#define pdFREERTOS_ERRNO_EINVAL 22 /* Invalid argument */ +#define pdFREERTOS_ERRNO_ENOSPC 28 /* No space left on device */ +#define pdFREERTOS_ERRNO_ESPIPE 29 /* Illegal seek */ +#define pdFREERTOS_ERRNO_EROFS 30 /* Read only file system */ +#define pdFREERTOS_ERRNO_EUNATCH 42 /* Protocol driver not attached */ +#define pdFREERTOS_ERRNO_EBADE 50 /* Invalid exchange */ +#define pdFREERTOS_ERRNO_EFTYPE 79 /* Inappropriate file type or format */ +#define pdFREERTOS_ERRNO_ENMFILE 89 /* No more files */ +#define pdFREERTOS_ERRNO_ENOTEMPTY 90 /* Directory not empty */ +#define pdFREERTOS_ERRNO_ENAMETOOLONG 91 /* File or path name too long */ +#define pdFREERTOS_ERRNO_EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ +#define pdFREERTOS_ERRNO_ENOBUFS 105 /* No buffer space available */ +#define pdFREERTOS_ERRNO_ENOPROTOOPT 109 /* Protocol not available */ +#define pdFREERTOS_ERRNO_EADDRINUSE 112 /* Address already in use */ +#define pdFREERTOS_ERRNO_ETIMEDOUT 116 /* Connection timed out */ +#define pdFREERTOS_ERRNO_EINPROGRESS 119 /* Connection already in progress */ +#define pdFREERTOS_ERRNO_EALREADY 120 /* Socket already connected */ +#define pdFREERTOS_ERRNO_EADDRNOTAVAIL 125 /* Address not available */ +#define pdFREERTOS_ERRNO_EISCONN 127 /* Socket is already connected */ +#define pdFREERTOS_ERRNO_ENOTCONN 128 /* Socket is not connected */ +#define pdFREERTOS_ERRNO_ENOMEDIUM 135 /* No medium inserted */ +#define pdFREERTOS_ERRNO_EILSEQ 138 /* An invalid UTF-16 sequence was encountered. */ +#define pdFREERTOS_ERRNO_ECANCELED 140 /* Operation canceled. */ + +/* The following endian values are used by FreeRTOS+ components, not FreeRTOS +itself. */ +#define pdFREERTOS_LITTLE_ENDIAN 0 +#define pdFREERTOS_BIG_ENDIAN 1 + +/* Re-defining endian values for generic naming. */ +#define pdLITTLE_ENDIAN pdFREERTOS_LITTLE_ENDIAN +#define pdBIG_ENDIAN pdFREERTOS_BIG_ENDIAN + + +#endif /* PROJDEFS_H */ + + + diff --git a/components/freertos/include/queue.h b/components/freertos/include/queue.h new file mode 100644 index 00000000..dd8ebc0e --- /dev/null +++ b/components/freertos/include/queue.h @@ -0,0 +1,1655 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +#ifndef QUEUE_H +#define QUEUE_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h" must appear in source files before "include queue.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include "task.h" + +/** + * Type by which queues are referenced. For example, a call to xQueueCreate() + * returns an QueueHandle_t variable that can then be used as a parameter to + * xQueueSend(), xQueueReceive(), etc. + */ +struct QueueDefinition; /* Using old naming convention so as not to break kernel aware debuggers. */ +typedef struct QueueDefinition * QueueHandle_t; + +/** + * Type by which queue sets are referenced. For example, a call to + * xQueueCreateSet() returns an xQueueSet variable that can then be used as a + * parameter to xQueueSelectFromSet(), xQueueAddToSet(), etc. + */ +typedef struct QueueDefinition * QueueSetHandle_t; + +/** + * Queue sets can contain both queues and semaphores, so the + * QueueSetMemberHandle_t is defined as a type to be used where a parameter or + * return value can be either an QueueHandle_t or an SemaphoreHandle_t. + */ +typedef struct QueueDefinition * QueueSetMemberHandle_t; + +/* For internal use only. */ +#define queueSEND_TO_BACK ( ( BaseType_t ) 0 ) +#define queueSEND_TO_FRONT ( ( BaseType_t ) 1 ) +#define queueOVERWRITE ( ( BaseType_t ) 2 ) + +/* For internal use only. These definitions *must* match those in queue.c. */ +#define queueQUEUE_TYPE_BASE ( ( uint8_t ) 0U ) +#define queueQUEUE_TYPE_SET ( ( uint8_t ) 0U ) +#define queueQUEUE_TYPE_MUTEX ( ( uint8_t ) 1U ) +#define queueQUEUE_TYPE_COUNTING_SEMAPHORE ( ( uint8_t ) 2U ) +#define queueQUEUE_TYPE_BINARY_SEMAPHORE ( ( uint8_t ) 3U ) +#define queueQUEUE_TYPE_RECURSIVE_MUTEX ( ( uint8_t ) 4U ) + +/** + * queue. h + *
+ QueueHandle_t xQueueCreate(
+							  UBaseType_t uxQueueLength,
+							  UBaseType_t uxItemSize
+						  );
+ * 
+ * + * Creates a new queue instance, and returns a handle by which the new queue + * can be referenced. + * + * Internally, within the FreeRTOS implementation, queues use two blocks of + * memory. The first block is used to hold the queue's data structures. The + * second block is used to hold items placed into the queue. If a queue is + * created using xQueueCreate() then both blocks of memory are automatically + * dynamically allocated inside the xQueueCreate() function. (see + * http://www.freertos.org/a00111.html). If a queue is created using + * xQueueCreateStatic() then the application writer must provide the memory that + * will get used by the queue. xQueueCreateStatic() therefore allows a queue to + * be created without using any dynamic memory allocation. + * + * http://www.FreeRTOS.org/Embedded-RTOS-Queues.html + * + * @param uxQueueLength The maximum number of items that the queue can contain. + * + * @param uxItemSize The number of bytes each item in the queue will require. + * Items are queued by copy, not by reference, so this is the number of bytes + * that will be copied for each posted item. Each item on the queue must be + * the same size. + * + * @return If the queue is successfully create then a handle to the newly + * created queue is returned. If the queue cannot be created then 0 is + * returned. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ };
+
+ void vATask( void *pvParameters )
+ {
+ QueueHandle_t xQueue1, xQueue2;
+
+	// Create a queue capable of containing 10 uint32_t values.
+	xQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );
+	if( xQueue1 == 0 )
+	{
+		// Queue was not created and must not be used.
+	}
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+	if( xQueue2 == 0 )
+	{
+		// Queue was not created and must not be used.
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueCreate xQueueCreate + * \ingroup QueueManagement + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + #define xQueueCreate( uxQueueLength, uxItemSize ) xQueueGenericCreate( ( uxQueueLength ), ( uxItemSize ), ( queueQUEUE_TYPE_BASE ) ) +#endif + +/** + * queue. h + *
+ QueueHandle_t xQueueCreateStatic(
+							  UBaseType_t uxQueueLength,
+							  UBaseType_t uxItemSize,
+							  uint8_t *pucQueueStorageBuffer,
+							  StaticQueue_t *pxQueueBuffer
+						  );
+ * 
+ * + * Creates a new queue instance, and returns a handle by which the new queue + * can be referenced. + * + * Internally, within the FreeRTOS implementation, queues use two blocks of + * memory. The first block is used to hold the queue's data structures. The + * second block is used to hold items placed into the queue. If a queue is + * created using xQueueCreate() then both blocks of memory are automatically + * dynamically allocated inside the xQueueCreate() function. (see + * http://www.freertos.org/a00111.html). If a queue is created using + * xQueueCreateStatic() then the application writer must provide the memory that + * will get used by the queue. xQueueCreateStatic() therefore allows a queue to + * be created without using any dynamic memory allocation. + * + * http://www.FreeRTOS.org/Embedded-RTOS-Queues.html + * + * @param uxQueueLength The maximum number of items that the queue can contain. + * + * @param uxItemSize The number of bytes each item in the queue will require. + * Items are queued by copy, not by reference, so this is the number of bytes + * that will be copied for each posted item. Each item on the queue must be + * the same size. + * + * @param pucQueueStorageBuffer If uxItemSize is not zero then + * pucQueueStorageBuffer must point to a uint8_t array that is at least large + * enough to hold the maximum number of items that can be in the queue at any + * one time - which is ( uxQueueLength * uxItemsSize ) bytes. If uxItemSize is + * zero then pucQueueStorageBuffer can be NULL. + * + * @param pxQueueBuffer Must point to a variable of type StaticQueue_t, which + * will be used to hold the queue's data structure. + * + * @return If the queue is created then a handle to the created queue is + * returned. If pxQueueBuffer is NULL then NULL is returned. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ };
+
+ #define QUEUE_LENGTH 10
+ #define ITEM_SIZE sizeof( uint32_t )
+
+ // xQueueBuffer will hold the queue structure.
+ StaticQueue_t xQueueBuffer;
+
+ // ucQueueStorage will hold the items posted to the queue.  Must be at least
+ // [(queue length) * ( queue item size)] bytes long.
+ uint8_t ucQueueStorage[ QUEUE_LENGTH * ITEM_SIZE ];
+
+ void vATask( void *pvParameters )
+ {
+ QueueHandle_t xQueue1;
+
+	// Create a queue capable of containing 10 uint32_t values.
+	xQueue1 = xQueueCreate( QUEUE_LENGTH, // The number of items the queue can hold.
+							ITEM_SIZE	  // The size of each item in the queue
+							&( ucQueueStorage[ 0 ] ), // The buffer that will hold the items in the queue.
+							&xQueueBuffer ); // The buffer that will hold the queue structure.
+
+	// The queue is guaranteed to be created successfully as no dynamic memory
+	// allocation is used.  Therefore xQueue1 is now a handle to a valid queue.
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueCreateStatic xQueueCreateStatic + * \ingroup QueueManagement + */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + #define xQueueCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxQueueBuffer ) xQueueGenericCreateStatic( ( uxQueueLength ), ( uxItemSize ), ( pucQueueStorage ), ( pxQueueBuffer ), ( queueQUEUE_TYPE_BASE ) ) +#endif /* configSUPPORT_STATIC_ALLOCATION */ + +/** + * queue. h + *
+ BaseType_t xQueueSendToToFront(
+								   QueueHandle_t	xQueue,
+								   const void		*pvItemToQueue,
+								   TickType_t		xTicksToWait
+							   );
+ * 
+ * + * Post an item to the front of a queue. The item is queued by copy, not by + * reference. This function must not be called from an interrupt service + * routine. See xQueueSendFromISR () for an alternative which may be used + * in an ISR. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for space to become available on the queue, should it already + * be full. The call will return immediately if this is set to 0 and the + * queue is full. The time is defined in tick periods so the constant + * portTICK_PERIOD_MS should be used to convert to real time if this is required. + * + * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ } xMessage;
+
+ uint32_t ulVar = 10UL;
+
+ void vATask( void *pvParameters )
+ {
+ QueueHandle_t xQueue1, xQueue2;
+ struct AMessage *pxMessage;
+
+	// Create a queue capable of containing 10 uint32_t values.
+	xQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+
+	// ...
+
+	if( xQueue1 != 0 )
+	{
+		// Send an uint32_t.  Wait for 10 ticks for space to become
+		// available if necessary.
+		if( xQueueSendToFront( xQueue1, ( void * ) &ulVar, ( TickType_t ) 10 ) != pdPASS )
+		{
+			// Failed to post the message, even after 10 ticks.
+		}
+	}
+
+	if( xQueue2 != 0 )
+	{
+		// Send a pointer to a struct AMessage object.  Don't block if the
+		// queue is already full.
+		pxMessage = & xMessage;
+		xQueueSendToFront( xQueue2, ( void * ) &pxMessage, ( TickType_t ) 0 );
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueSend xQueueSend + * \ingroup QueueManagement + */ +#define xQueueSendToFront( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_FRONT ) + +/** + * queue. h + *
+ BaseType_t xQueueSendToBack(
+								   QueueHandle_t	xQueue,
+								   const void		*pvItemToQueue,
+								   TickType_t		xTicksToWait
+							   );
+ * 
+ * + * This is a macro that calls xQueueGenericSend(). + * + * Post an item to the back of a queue. The item is queued by copy, not by + * reference. This function must not be called from an interrupt service + * routine. See xQueueSendFromISR () for an alternative which may be used + * in an ISR. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for space to become available on the queue, should it already + * be full. The call will return immediately if this is set to 0 and the queue + * is full. The time is defined in tick periods so the constant + * portTICK_PERIOD_MS should be used to convert to real time if this is required. + * + * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ } xMessage;
+
+ uint32_t ulVar = 10UL;
+
+ void vATask( void *pvParameters )
+ {
+ QueueHandle_t xQueue1, xQueue2;
+ struct AMessage *pxMessage;
+
+	// Create a queue capable of containing 10 uint32_t values.
+	xQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+
+	// ...
+
+	if( xQueue1 != 0 )
+	{
+		// Send an uint32_t.  Wait for 10 ticks for space to become
+		// available if necessary.
+		if( xQueueSendToBack( xQueue1, ( void * ) &ulVar, ( TickType_t ) 10 ) != pdPASS )
+		{
+			// Failed to post the message, even after 10 ticks.
+		}
+	}
+
+	if( xQueue2 != 0 )
+	{
+		// Send a pointer to a struct AMessage object.  Don't block if the
+		// queue is already full.
+		pxMessage = & xMessage;
+		xQueueSendToBack( xQueue2, ( void * ) &pxMessage, ( TickType_t ) 0 );
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueSend xQueueSend + * \ingroup QueueManagement + */ +#define xQueueSendToBack( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK ) + +/** + * queue. h + *
+ BaseType_t xQueueSend(
+							  QueueHandle_t xQueue,
+							  const void * pvItemToQueue,
+							  TickType_t xTicksToWait
+						 );
+ * 
+ * + * This is a macro that calls xQueueGenericSend(). It is included for + * backward compatibility with versions of FreeRTOS.org that did not + * include the xQueueSendToFront() and xQueueSendToBack() macros. It is + * equivalent to xQueueSendToBack(). + * + * Post an item on a queue. The item is queued by copy, not by reference. + * This function must not be called from an interrupt service routine. + * See xQueueSendFromISR () for an alternative which may be used in an ISR. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for space to become available on the queue, should it already + * be full. The call will return immediately if this is set to 0 and the + * queue is full. The time is defined in tick periods so the constant + * portTICK_PERIOD_MS should be used to convert to real time if this is required. + * + * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ } xMessage;
+
+ uint32_t ulVar = 10UL;
+
+ void vATask( void *pvParameters )
+ {
+ QueueHandle_t xQueue1, xQueue2;
+ struct AMessage *pxMessage;
+
+	// Create a queue capable of containing 10 uint32_t values.
+	xQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+
+	// ...
+
+	if( xQueue1 != 0 )
+	{
+		// Send an uint32_t.  Wait for 10 ticks for space to become
+		// available if necessary.
+		if( xQueueSend( xQueue1, ( void * ) &ulVar, ( TickType_t ) 10 ) != pdPASS )
+		{
+			// Failed to post the message, even after 10 ticks.
+		}
+	}
+
+	if( xQueue2 != 0 )
+	{
+		// Send a pointer to a struct AMessage object.  Don't block if the
+		// queue is already full.
+		pxMessage = & xMessage;
+		xQueueSend( xQueue2, ( void * ) &pxMessage, ( TickType_t ) 0 );
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueSend xQueueSend + * \ingroup QueueManagement + */ +#define xQueueSend( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK ) + +/** + * queue. h + *
+ BaseType_t xQueueOverwrite(
+							  QueueHandle_t xQueue,
+							  const void * pvItemToQueue
+						 );
+ * 
+ * + * Only for use with queues that have a length of one - so the queue is either + * empty or full. + * + * Post an item on a queue. If the queue is already full then overwrite the + * value held in the queue. The item is queued by copy, not by reference. + * + * This function must not be called from an interrupt service routine. + * See xQueueOverwriteFromISR () for an alternative which may be used in an ISR. + * + * @param xQueue The handle of the queue to which the data is being sent. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @return xQueueOverwrite() is a macro that calls xQueueGenericSend(), and + * therefore has the same return values as xQueueSendToFront(). However, pdPASS + * is the only value that can be returned because xQueueOverwrite() will write + * to the queue even when the queue is already full. + * + * Example usage: +
+
+ void vFunction( void *pvParameters )
+ {
+ QueueHandle_t xQueue;
+ uint32_t ulVarToSend, ulValReceived;
+
+	// Create a queue to hold one uint32_t value.  It is strongly
+	// recommended *not* to use xQueueOverwrite() on queues that can
+	// contain more than one value, and doing so will trigger an assertion
+	// if configASSERT() is defined.
+	xQueue = xQueueCreate( 1, sizeof( uint32_t ) );
+
+	// Write the value 10 to the queue using xQueueOverwrite().
+	ulVarToSend = 10;
+	xQueueOverwrite( xQueue, &ulVarToSend );
+
+	// Peeking the queue should now return 10, but leave the value 10 in
+	// the queue.  A block time of zero is used as it is known that the
+	// queue holds a value.
+	ulValReceived = 0;
+	xQueuePeek( xQueue, &ulValReceived, 0 );
+
+	if( ulValReceived != 10 )
+	{
+		// Error unless the item was removed by a different task.
+	}
+
+	// The queue is still full.  Use xQueueOverwrite() to overwrite the
+	// value held in the queue with 100.
+	ulVarToSend = 100;
+	xQueueOverwrite( xQueue, &ulVarToSend );
+
+	// This time read from the queue, leaving the queue empty once more.
+	// A block time of 0 is used again.
+	xQueueReceive( xQueue, &ulValReceived, 0 );
+
+	// The value read should be the last value written, even though the
+	// queue was already full when the value was written.
+	if( ulValReceived != 100 )
+	{
+		// Error!
+	}
+
+	// ...
+}
+ 
+ * \defgroup xQueueOverwrite xQueueOverwrite + * \ingroup QueueManagement + */ +#define xQueueOverwrite( xQueue, pvItemToQueue ) xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), 0, queueOVERWRITE ) + + +/** + * queue. h + *
+ BaseType_t xQueueGenericSend(
+									QueueHandle_t xQueue,
+									const void * pvItemToQueue,
+									TickType_t xTicksToWait
+									BaseType_t xCopyPosition
+								);
+ * 
+ * + * It is preferred that the macros xQueueSend(), xQueueSendToFront() and + * xQueueSendToBack() are used in place of calling this function directly. + * + * Post an item on a queue. The item is queued by copy, not by reference. + * This function must not be called from an interrupt service routine. + * See xQueueSendFromISR () for an alternative which may be used in an ISR. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for space to become available on the queue, should it already + * be full. The call will return immediately if this is set to 0 and the + * queue is full. The time is defined in tick periods so the constant + * portTICK_PERIOD_MS should be used to convert to real time if this is required. + * + * @param xCopyPosition Can take the value queueSEND_TO_BACK to place the + * item at the back of the queue, or queueSEND_TO_FRONT to place the item + * at the front of the queue (for high priority messages). + * + * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ } xMessage;
+
+ uint32_t ulVar = 10UL;
+
+ void vATask( void *pvParameters )
+ {
+ QueueHandle_t xQueue1, xQueue2;
+ struct AMessage *pxMessage;
+
+	// Create a queue capable of containing 10 uint32_t values.
+	xQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+
+	// ...
+
+	if( xQueue1 != 0 )
+	{
+		// Send an uint32_t.  Wait for 10 ticks for space to become
+		// available if necessary.
+		if( xQueueGenericSend( xQueue1, ( void * ) &ulVar, ( TickType_t ) 10, queueSEND_TO_BACK ) != pdPASS )
+		{
+			// Failed to post the message, even after 10 ticks.
+		}
+	}
+
+	if( xQueue2 != 0 )
+	{
+		// Send a pointer to a struct AMessage object.  Don't block if the
+		// queue is already full.
+		pxMessage = & xMessage;
+		xQueueGenericSend( xQueue2, ( void * ) &pxMessage, ( TickType_t ) 0, queueSEND_TO_BACK );
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueSend xQueueSend + * \ingroup QueueManagement + */ +BaseType_t xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
+ BaseType_t xQueuePeek(
+							 QueueHandle_t xQueue,
+							 void * const pvBuffer,
+							 TickType_t xTicksToWait
+						 );
+ * + * Receive an item from a queue without removing the item from the queue. + * The item is received by copy so a buffer of adequate size must be + * provided. The number of bytes copied into the buffer was defined when + * the queue was created. + * + * Successfully received items remain on the queue so will be returned again + * by the next call, or a call to xQueueReceive(). + * + * This macro must not be used in an interrupt service routine. See + * xQueuePeekFromISR() for an alternative that can be called from an interrupt + * service routine. + * + * @param xQueue The handle to the queue from which the item is to be + * received. + * + * @param pvBuffer Pointer to the buffer into which the received item will + * be copied. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for an item to receive should the queue be empty at the time + * of the call. The time is defined in tick periods so the constant + * portTICK_PERIOD_MS should be used to convert to real time if this is required. + * xQueuePeek() will return immediately if xTicksToWait is 0 and the queue + * is empty. + * + * @return pdTRUE if an item was successfully received from the queue, + * otherwise pdFALSE. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ } xMessage;
+
+ QueueHandle_t xQueue;
+
+ // Task to create a queue and post a value.
+ void vATask( void *pvParameters )
+ {
+ struct AMessage *pxMessage;
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );
+	if( xQueue == 0 )
+	{
+		// Failed to create the queue.
+	}
+
+	// ...
+
+	// Send a pointer to a struct AMessage object.  Don't block if the
+	// queue is already full.
+	pxMessage = & xMessage;
+	xQueueSend( xQueue, ( void * ) &pxMessage, ( TickType_t ) 0 );
+
+	// ... Rest of task code.
+ }
+
+ // Task to peek the data from the queue.
+ void vADifferentTask( void *pvParameters )
+ {
+ struct AMessage *pxRxedMessage;
+
+	if( xQueue != 0 )
+	{
+		// Peek a message on the created queue.  Block for 10 ticks if a
+		// message is not immediately available.
+		if( xQueuePeek( xQueue, &( pxRxedMessage ), ( TickType_t ) 10 ) )
+		{
+			// pcRxedMessage now points to the struct AMessage variable posted
+			// by vATask, but the item still remains on the queue.
+		}
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueuePeek xQueuePeek + * \ingroup QueueManagement + */ +BaseType_t xQueuePeek( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
+ BaseType_t xQueuePeekFromISR(
+									QueueHandle_t xQueue,
+									void *pvBuffer,
+								);
+ * + * A version of xQueuePeek() that can be called from an interrupt service + * routine (ISR). + * + * Receive an item from a queue without removing the item from the queue. + * The item is received by copy so a buffer of adequate size must be + * provided. The number of bytes copied into the buffer was defined when + * the queue was created. + * + * Successfully received items remain on the queue so will be returned again + * by the next call, or a call to xQueueReceive(). + * + * @param xQueue The handle to the queue from which the item is to be + * received. + * + * @param pvBuffer Pointer to the buffer into which the received item will + * be copied. + * + * @return pdTRUE if an item was successfully received from the queue, + * otherwise pdFALSE. + * + * \defgroup xQueuePeekFromISR xQueuePeekFromISR + * \ingroup QueueManagement + */ +BaseType_t xQueuePeekFromISR( QueueHandle_t xQueue, void * const pvBuffer ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
+ BaseType_t xQueueReceive(
+								 QueueHandle_t xQueue,
+								 void *pvBuffer,
+								 TickType_t xTicksToWait
+							);
+ * + * Receive an item from a queue. The item is received by copy so a buffer of + * adequate size must be provided. The number of bytes copied into the buffer + * was defined when the queue was created. + * + * Successfully received items are removed from the queue. + * + * This function must not be used in an interrupt service routine. See + * xQueueReceiveFromISR for an alternative that can. + * + * @param xQueue The handle to the queue from which the item is to be + * received. + * + * @param pvBuffer Pointer to the buffer into which the received item will + * be copied. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for an item to receive should the queue be empty at the time + * of the call. xQueueReceive() will return immediately if xTicksToWait + * is zero and the queue is empty. The time is defined in tick periods so the + * constant portTICK_PERIOD_MS should be used to convert to real time if this is + * required. + * + * @return pdTRUE if an item was successfully received from the queue, + * otherwise pdFALSE. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ } xMessage;
+
+ QueueHandle_t xQueue;
+
+ // Task to create a queue and post a value.
+ void vATask( void *pvParameters )
+ {
+ struct AMessage *pxMessage;
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );
+	if( xQueue == 0 )
+	{
+		// Failed to create the queue.
+	}
+
+	// ...
+
+	// Send a pointer to a struct AMessage object.  Don't block if the
+	// queue is already full.
+	pxMessage = & xMessage;
+	xQueueSend( xQueue, ( void * ) &pxMessage, ( TickType_t ) 0 );
+
+	// ... Rest of task code.
+ }
+
+ // Task to receive from the queue.
+ void vADifferentTask( void *pvParameters )
+ {
+ struct AMessage *pxRxedMessage;
+
+	if( xQueue != 0 )
+	{
+		// Receive a message on the created queue.  Block for 10 ticks if a
+		// message is not immediately available.
+		if( xQueueReceive( xQueue, &( pxRxedMessage ), ( TickType_t ) 10 ) )
+		{
+			// pcRxedMessage now points to the struct AMessage variable posted
+			// by vATask.
+		}
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueReceive xQueueReceive + * \ingroup QueueManagement + */ +BaseType_t xQueueReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue );
+ * + * Return the number of messages stored in a queue. + * + * @param xQueue A handle to the queue being queried. + * + * @return The number of messages available in the queue. + * + * \defgroup uxQueueMessagesWaiting uxQueueMessagesWaiting + * \ingroup QueueManagement + */ +UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue );
+ * + * Return the number of free spaces available in a queue. This is equal to the + * number of items that can be sent to the queue before the queue becomes full + * if no items are removed. + * + * @param xQueue A handle to the queue being queried. + * + * @return The number of spaces available in the queue. + * + * \defgroup uxQueueMessagesWaiting uxQueueMessagesWaiting + * \ingroup QueueManagement + */ +UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
void vQueueDelete( QueueHandle_t xQueue );
+ * + * Delete a queue - freeing all the memory allocated for storing of items + * placed on the queue. + * + * @param xQueue A handle to the queue to be deleted. + * + * \defgroup vQueueDelete vQueueDelete + * \ingroup QueueManagement + */ +void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
+ BaseType_t xQueueSendToFrontFromISR(
+										 QueueHandle_t xQueue,
+										 const void *pvItemToQueue,
+										 BaseType_t *pxHigherPriorityTaskWoken
+									  );
+ 
+ * + * This is a macro that calls xQueueGenericSendFromISR(). + * + * Post an item to the front of a queue. It is safe to use this macro from + * within an interrupt service routine. + * + * Items are queued by copy not reference so it is preferable to only + * queue small items, especially when called from an ISR. In most cases + * it would be preferable to store a pointer to the item being queued. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param pxHigherPriorityTaskWoken xQueueSendToFrontFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xQueueSendToFromFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @return pdTRUE if the data was successfully sent to the queue, otherwise + * errQUEUE_FULL. + * + * Example usage for buffered IO (where the ISR can obtain more than one value + * per call): +
+ void vBufferISR( void )
+ {
+ char cIn;
+ BaseType_t xHigherPrioritTaskWoken;
+
+	// We have not woken a task at the start of the ISR.
+	xHigherPriorityTaskWoken = pdFALSE;
+
+	// Loop until the buffer is empty.
+	do
+	{
+		// Obtain a byte from the buffer.
+		cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );
+
+		// Post the byte.
+		xQueueSendToFrontFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );
+
+	} while( portINPUT_BYTE( BUFFER_COUNT ) );
+
+	// Now the buffer is empty we can switch context if necessary.
+	if( xHigherPriorityTaskWoken )
+	{
+		taskYIELD ();
+	}
+ }
+ 
+ * + * \defgroup xQueueSendFromISR xQueueSendFromISR + * \ingroup QueueManagement + */ +#define xQueueSendToFrontFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_FRONT ) + + +/** + * queue. h + *
+ BaseType_t xQueueSendToBackFromISR(
+										 QueueHandle_t xQueue,
+										 const void *pvItemToQueue,
+										 BaseType_t *pxHigherPriorityTaskWoken
+									  );
+ 
+ * + * This is a macro that calls xQueueGenericSendFromISR(). + * + * Post an item to the back of a queue. It is safe to use this macro from + * within an interrupt service routine. + * + * Items are queued by copy not reference so it is preferable to only + * queue small items, especially when called from an ISR. In most cases + * it would be preferable to store a pointer to the item being queued. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param pxHigherPriorityTaskWoken xQueueSendToBackFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xQueueSendToBackFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @return pdTRUE if the data was successfully sent to the queue, otherwise + * errQUEUE_FULL. + * + * Example usage for buffered IO (where the ISR can obtain more than one value + * per call): +
+ void vBufferISR( void )
+ {
+ char cIn;
+ BaseType_t xHigherPriorityTaskWoken;
+
+	// We have not woken a task at the start of the ISR.
+	xHigherPriorityTaskWoken = pdFALSE;
+
+	// Loop until the buffer is empty.
+	do
+	{
+		// Obtain a byte from the buffer.
+		cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );
+
+		// Post the byte.
+		xQueueSendToBackFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );
+
+	} while( portINPUT_BYTE( BUFFER_COUNT ) );
+
+	// Now the buffer is empty we can switch context if necessary.
+	if( xHigherPriorityTaskWoken )
+	{
+		taskYIELD ();
+	}
+ }
+ 
+ * + * \defgroup xQueueSendFromISR xQueueSendFromISR + * \ingroup QueueManagement + */ +#define xQueueSendToBackFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK ) + +/** + * queue. h + *
+ BaseType_t xQueueOverwriteFromISR(
+							  QueueHandle_t xQueue,
+							  const void * pvItemToQueue,
+							  BaseType_t *pxHigherPriorityTaskWoken
+						 );
+ * 
+ * + * A version of xQueueOverwrite() that can be used in an interrupt service + * routine (ISR). + * + * Only for use with queues that can hold a single item - so the queue is either + * empty or full. + * + * Post an item on a queue. If the queue is already full then overwrite the + * value held in the queue. The item is queued by copy, not by reference. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param pxHigherPriorityTaskWoken xQueueOverwriteFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xQueueOverwriteFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @return xQueueOverwriteFromISR() is a macro that calls + * xQueueGenericSendFromISR(), and therefore has the same return values as + * xQueueSendToFrontFromISR(). However, pdPASS is the only value that can be + * returned because xQueueOverwriteFromISR() will write to the queue even when + * the queue is already full. + * + * Example usage: +
+
+ QueueHandle_t xQueue;
+
+ void vFunction( void *pvParameters )
+ {
+ 	// Create a queue to hold one uint32_t value.  It is strongly
+	// recommended *not* to use xQueueOverwriteFromISR() on queues that can
+	// contain more than one value, and doing so will trigger an assertion
+	// if configASSERT() is defined.
+	xQueue = xQueueCreate( 1, sizeof( uint32_t ) );
+}
+
+void vAnInterruptHandler( void )
+{
+// xHigherPriorityTaskWoken must be set to pdFALSE before it is used.
+BaseType_t xHigherPriorityTaskWoken = pdFALSE;
+uint32_t ulVarToSend, ulValReceived;
+
+	// Write the value 10 to the queue using xQueueOverwriteFromISR().
+	ulVarToSend = 10;
+	xQueueOverwriteFromISR( xQueue, &ulVarToSend, &xHigherPriorityTaskWoken );
+
+	// The queue is full, but calling xQueueOverwriteFromISR() again will still
+	// pass because the value held in the queue will be overwritten with the
+	// new value.
+	ulVarToSend = 100;
+	xQueueOverwriteFromISR( xQueue, &ulVarToSend, &xHigherPriorityTaskWoken );
+
+	// Reading from the queue will now return 100.
+
+	// ...
+
+	if( xHigherPrioritytaskWoken == pdTRUE )
+	{
+		// Writing to the queue caused a task to unblock and the unblocked task
+		// has a priority higher than or equal to the priority of the currently
+		// executing task (the task this interrupt interrupted).  Perform a context
+		// switch so this interrupt returns directly to the unblocked task.
+		portYIELD_FROM_ISR(); // or portEND_SWITCHING_ISR() depending on the port.
+	}
+}
+ 
+ * \defgroup xQueueOverwriteFromISR xQueueOverwriteFromISR + * \ingroup QueueManagement + */ +#define xQueueOverwriteFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueOVERWRITE ) + +/** + * queue. h + *
+ BaseType_t xQueueSendFromISR(
+									 QueueHandle_t xQueue,
+									 const void *pvItemToQueue,
+									 BaseType_t *pxHigherPriorityTaskWoken
+								);
+ 
+ * + * This is a macro that calls xQueueGenericSendFromISR(). It is included + * for backward compatibility with versions of FreeRTOS.org that did not + * include the xQueueSendToBackFromISR() and xQueueSendToFrontFromISR() + * macros. + * + * Post an item to the back of a queue. It is safe to use this function from + * within an interrupt service routine. + * + * Items are queued by copy not reference so it is preferable to only + * queue small items, especially when called from an ISR. In most cases + * it would be preferable to store a pointer to the item being queued. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param pxHigherPriorityTaskWoken xQueueSendFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xQueueSendFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @return pdTRUE if the data was successfully sent to the queue, otherwise + * errQUEUE_FULL. + * + * Example usage for buffered IO (where the ISR can obtain more than one value + * per call): +
+ void vBufferISR( void )
+ {
+ char cIn;
+ BaseType_t xHigherPriorityTaskWoken;
+
+	// We have not woken a task at the start of the ISR.
+	xHigherPriorityTaskWoken = pdFALSE;
+
+	// Loop until the buffer is empty.
+	do
+	{
+		// Obtain a byte from the buffer.
+		cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );
+
+		// Post the byte.
+		xQueueSendFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );
+
+	} while( portINPUT_BYTE( BUFFER_COUNT ) );
+
+	// Now the buffer is empty we can switch context if necessary.
+	if( xHigherPriorityTaskWoken )
+	{
+		// Actual macro used here is port specific.
+		portYIELD_FROM_ISR ();
+	}
+ }
+ 
+ * + * \defgroup xQueueSendFromISR xQueueSendFromISR + * \ingroup QueueManagement + */ +#define xQueueSendFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK ) + +/** + * queue. h + *
+ BaseType_t xQueueGenericSendFromISR(
+										   QueueHandle_t		xQueue,
+										   const	void	*pvItemToQueue,
+										   BaseType_t	*pxHigherPriorityTaskWoken,
+										   BaseType_t	xCopyPosition
+									   );
+ 
+ * + * It is preferred that the macros xQueueSendFromISR(), + * xQueueSendToFrontFromISR() and xQueueSendToBackFromISR() be used in place + * of calling this function directly. xQueueGiveFromISR() is an + * equivalent for use by semaphores that don't actually copy any data. + * + * Post an item on a queue. It is safe to use this function from within an + * interrupt service routine. + * + * Items are queued by copy not reference so it is preferable to only + * queue small items, especially when called from an ISR. In most cases + * it would be preferable to store a pointer to the item being queued. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param pxHigherPriorityTaskWoken xQueueGenericSendFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xQueueGenericSendFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @param xCopyPosition Can take the value queueSEND_TO_BACK to place the + * item at the back of the queue, or queueSEND_TO_FRONT to place the item + * at the front of the queue (for high priority messages). + * + * @return pdTRUE if the data was successfully sent to the queue, otherwise + * errQUEUE_FULL. + * + * Example usage for buffered IO (where the ISR can obtain more than one value + * per call): +
+ void vBufferISR( void )
+ {
+ char cIn;
+ BaseType_t xHigherPriorityTaskWokenByPost;
+
+	// We have not woken a task at the start of the ISR.
+	xHigherPriorityTaskWokenByPost = pdFALSE;
+
+	// Loop until the buffer is empty.
+	do
+	{
+		// Obtain a byte from the buffer.
+		cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );
+
+		// Post each byte.
+		xQueueGenericSendFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWokenByPost, queueSEND_TO_BACK );
+
+	} while( portINPUT_BYTE( BUFFER_COUNT ) );
+
+	// Now the buffer is empty we can switch context if necessary.  Note that the
+	// name of the yield function required is port specific.
+	if( xHigherPriorityTaskWokenByPost )
+	{
+		portYIELD_FROM_ISR();
+	}
+ }
+ 
+ * + * \defgroup xQueueSendFromISR xQueueSendFromISR + * \ingroup QueueManagement + */ +BaseType_t xQueueGenericSendFromISR( QueueHandle_t xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION; +BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue, BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
+ BaseType_t xQueueReceiveFromISR(
+									   QueueHandle_t	xQueue,
+									   void	*pvBuffer,
+									   BaseType_t *pxTaskWoken
+								   );
+ * 
+ * + * Receive an item from a queue. It is safe to use this function from within an + * interrupt service routine. + * + * @param xQueue The handle to the queue from which the item is to be + * received. + * + * @param pvBuffer Pointer to the buffer into which the received item will + * be copied. + * + * @param pxTaskWoken A task may be blocked waiting for space to become + * available on the queue. If xQueueReceiveFromISR causes such a task to + * unblock *pxTaskWoken will get set to pdTRUE, otherwise *pxTaskWoken will + * remain unchanged. + * + * @return pdTRUE if an item was successfully received from the queue, + * otherwise pdFALSE. + * + * Example usage: +
+
+ QueueHandle_t xQueue;
+
+ // Function to create a queue and post some values.
+ void vAFunction( void *pvParameters )
+ {
+ char cValueToPost;
+ const TickType_t xTicksToWait = ( TickType_t )0xff;
+
+	// Create a queue capable of containing 10 characters.
+	xQueue = xQueueCreate( 10, sizeof( char ) );
+	if( xQueue == 0 )
+	{
+		// Failed to create the queue.
+	}
+
+	// ...
+
+	// Post some characters that will be used within an ISR.  If the queue
+	// is full then this task will block for xTicksToWait ticks.
+	cValueToPost = 'a';
+	xQueueSend( xQueue, ( void * ) &cValueToPost, xTicksToWait );
+	cValueToPost = 'b';
+	xQueueSend( xQueue, ( void * ) &cValueToPost, xTicksToWait );
+
+	// ... keep posting characters ... this task may block when the queue
+	// becomes full.
+
+	cValueToPost = 'c';
+	xQueueSend( xQueue, ( void * ) &cValueToPost, xTicksToWait );
+ }
+
+ // ISR that outputs all the characters received on the queue.
+ void vISR_Routine( void )
+ {
+ BaseType_t xTaskWokenByReceive = pdFALSE;
+ char cRxedChar;
+
+	while( xQueueReceiveFromISR( xQueue, ( void * ) &cRxedChar, &xTaskWokenByReceive) )
+	{
+		// A character was received.  Output the character now.
+		vOutputCharacter( cRxedChar );
+
+		// If removing the character from the queue woke the task that was
+		// posting onto the queue cTaskWokenByReceive will have been set to
+		// pdTRUE.  No matter how many times this loop iterates only one
+		// task will be woken.
+	}
+
+	if( cTaskWokenByPost != ( char ) pdFALSE;
+	{
+		taskYIELD ();
+	}
+ }
+ 
+ * \defgroup xQueueReceiveFromISR xQueueReceiveFromISR + * \ingroup QueueManagement + */ +BaseType_t xQueueReceiveFromISR( QueueHandle_t xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + +/* + * Utilities to query queues that are safe to use from an ISR. These utilities + * should be used only from witin an ISR, or within a critical section. + */ +BaseType_t xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; +BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; +UBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; + +/* + * The functions defined above are for passing data to and from tasks. The + * functions below are the equivalents for passing data to and from + * co-routines. + * + * These functions are called from the co-routine macro implementation and + * should not be called directly from application code. Instead use the macro + * wrappers defined within croutine.h. + */ +BaseType_t xQueueCRSendFromISR( QueueHandle_t xQueue, const void *pvItemToQueue, BaseType_t xCoRoutinePreviouslyWoken ); +BaseType_t xQueueCRReceiveFromISR( QueueHandle_t xQueue, void *pvBuffer, BaseType_t *pxTaskWoken ); +BaseType_t xQueueCRSend( QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait ); +BaseType_t xQueueCRReceive( QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait ); + +/* + * For internal use only. Use xSemaphoreCreateMutex(), + * xSemaphoreCreateCounting() or xSemaphoreGetMutexHolder() instead of calling + * these functions directly. + */ +QueueHandle_t xQueueCreateMutex( const uint8_t ucQueueType ) PRIVILEGED_FUNCTION; +QueueHandle_t xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION; +QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION; +QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION; +BaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; +TaskHandle_t xQueueGetMutexHolder( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION; +TaskHandle_t xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION; + +/* + * For internal use only. Use xSemaphoreTakeMutexRecursive() or + * xSemaphoreGiveMutexRecursive() instead of calling these functions directly. + */ +BaseType_t xQueueTakeMutexRecursive( QueueHandle_t xMutex, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; +BaseType_t xQueueGiveMutexRecursive( QueueHandle_t xMutex ) PRIVILEGED_FUNCTION; + +/* + * Reset a queue back to its original empty state. The return value is now + * obsolete and is always set to pdPASS. + */ +#define xQueueReset( xQueue ) xQueueGenericReset( xQueue, pdFALSE ) + +/* + * The registry is provided as a means for kernel aware debuggers to + * locate queues, semaphores and mutexes. Call vQueueAddToRegistry() add + * a queue, semaphore or mutex handle to the registry if you want the handle + * to be available to a kernel aware debugger. If you are not using a kernel + * aware debugger then this function can be ignored. + * + * configQUEUE_REGISTRY_SIZE defines the maximum number of handles the + * registry can hold. configQUEUE_REGISTRY_SIZE must be greater than 0 + * within FreeRTOSConfig.h for the registry to be available. Its value + * does not effect the number of queues, semaphores and mutexes that can be + * created - just the number that the registry can hold. + * + * @param xQueue The handle of the queue being added to the registry. This + * is the handle returned by a call to xQueueCreate(). Semaphore and mutex + * handles can also be passed in here. + * + * @param pcName The name to be associated with the handle. This is the + * name that the kernel aware debugger will display. The queue registry only + * stores a pointer to the string - so the string must be persistent (global or + * preferably in ROM/Flash), not on the stack. + */ +#if( configQUEUE_REGISTRY_SIZE > 0 ) + void vQueueAddToRegistry( QueueHandle_t xQueue, const char *pcQueueName ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ +#endif + +/* + * The registry is provided as a means for kernel aware debuggers to + * locate queues, semaphores and mutexes. Call vQueueAddToRegistry() add + * a queue, semaphore or mutex handle to the registry if you want the handle + * to be available to a kernel aware debugger, and vQueueUnregisterQueue() to + * remove the queue, semaphore or mutex from the register. If you are not using + * a kernel aware debugger then this function can be ignored. + * + * @param xQueue The handle of the queue being removed from the registry. + */ +#if( configQUEUE_REGISTRY_SIZE > 0 ) + void vQueueUnregisterQueue( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; +#endif + +/* + * The queue registry is provided as a means for kernel aware debuggers to + * locate queues, semaphores and mutexes. Call pcQueueGetName() to look + * up and return the name of a queue in the queue registry from the queue's + * handle. + * + * @param xQueue The handle of the queue the name of which will be returned. + * @return If the queue is in the registry then a pointer to the name of the + * queue is returned. If the queue is not in the registry then NULL is + * returned. + */ +#if( configQUEUE_REGISTRY_SIZE > 0 ) + const char *pcQueueGetName( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ +#endif + +/* + * Generic version of the function used to creaet a queue using dynamic memory + * allocation. This is called by other functions and macros that create other + * RTOS objects that use the queue structure as their base. + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + QueueHandle_t xQueueGenericCreate( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType ) PRIVILEGED_FUNCTION; +#endif + +/* + * Generic version of the function used to creaet a queue using dynamic memory + * allocation. This is called by other functions and macros that create other + * RTOS objects that use the queue structure as their base. + */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + QueueHandle_t xQueueGenericCreateStatic( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, StaticQueue_t *pxStaticQueue, const uint8_t ucQueueType ) PRIVILEGED_FUNCTION; +#endif + +/* + * Queue sets provide a mechanism to allow a task to block (pend) on a read + * operation from multiple queues or semaphores simultaneously. + * + * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this + * function. + * + * A queue set must be explicitly created using a call to xQueueCreateSet() + * before it can be used. Once created, standard FreeRTOS queues and semaphores + * can be added to the set using calls to xQueueAddToSet(). + * xQueueSelectFromSet() is then used to determine which, if any, of the queues + * or semaphores contained in the set is in a state where a queue read or + * semaphore take operation would be successful. + * + * Note 1: See the documentation on http://wwwFreeRTOS.org/RTOS-queue-sets.html + * for reasons why queue sets are very rarely needed in practice as there are + * simpler methods of blocking on multiple objects. + * + * Note 2: Blocking on a queue set that contains a mutex will not cause the + * mutex holder to inherit the priority of the blocked task. + * + * Note 3: An additional 4 bytes of RAM is required for each space in a every + * queue added to a queue set. Therefore counting semaphores that have a high + * maximum count value should not be added to a queue set. + * + * Note 4: A receive (in the case of a queue) or take (in the case of a + * semaphore) operation must not be performed on a member of a queue set unless + * a call to xQueueSelectFromSet() has first returned a handle to that set member. + * + * @param uxEventQueueLength Queue sets store events that occur on + * the queues and semaphores contained in the set. uxEventQueueLength specifies + * the maximum number of events that can be queued at once. To be absolutely + * certain that events are not lost uxEventQueueLength should be set to the + * total sum of the length of the queues added to the set, where binary + * semaphores and mutexes have a length of 1, and counting semaphores have a + * length set by their maximum count value. Examples: + * + If a queue set is to hold a queue of length 5, another queue of length 12, + * and a binary semaphore, then uxEventQueueLength should be set to + * (5 + 12 + 1), or 18. + * + If a queue set is to hold three binary semaphores then uxEventQueueLength + * should be set to (1 + 1 + 1 ), or 3. + * + If a queue set is to hold a counting semaphore that has a maximum count of + * 5, and a counting semaphore that has a maximum count of 3, then + * uxEventQueueLength should be set to (5 + 3), or 8. + * + * @return If the queue set is created successfully then a handle to the created + * queue set is returned. Otherwise NULL is returned. + */ +QueueSetHandle_t xQueueCreateSet( const UBaseType_t uxEventQueueLength ) PRIVILEGED_FUNCTION; + +/* + * Adds a queue or semaphore to a queue set that was previously created by a + * call to xQueueCreateSet(). + * + * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this + * function. + * + * Note 1: A receive (in the case of a queue) or take (in the case of a + * semaphore) operation must not be performed on a member of a queue set unless + * a call to xQueueSelectFromSet() has first returned a handle to that set member. + * + * @param xQueueOrSemaphore The handle of the queue or semaphore being added to + * the queue set (cast to an QueueSetMemberHandle_t type). + * + * @param xQueueSet The handle of the queue set to which the queue or semaphore + * is being added. + * + * @return If the queue or semaphore was successfully added to the queue set + * then pdPASS is returned. If the queue could not be successfully added to the + * queue set because it is already a member of a different queue set then pdFAIL + * is returned. + */ +BaseType_t xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION; + +/* + * Removes a queue or semaphore from a queue set. A queue or semaphore can only + * be removed from a set if the queue or semaphore is empty. + * + * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this + * function. + * + * @param xQueueOrSemaphore The handle of the queue or semaphore being removed + * from the queue set (cast to an QueueSetMemberHandle_t type). + * + * @param xQueueSet The handle of the queue set in which the queue or semaphore + * is included. + * + * @return If the queue or semaphore was successfully removed from the queue set + * then pdPASS is returned. If the queue was not in the queue set, or the + * queue (or semaphore) was not empty, then pdFAIL is returned. + */ +BaseType_t xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION; + +/* + * xQueueSelectFromSet() selects from the members of a queue set a queue or + * semaphore that either contains data (in the case of a queue) or is available + * to take (in the case of a semaphore). xQueueSelectFromSet() effectively + * allows a task to block (pend) on a read operation on all the queues and + * semaphores in a queue set simultaneously. + * + * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this + * function. + * + * Note 1: See the documentation on http://wwwFreeRTOS.org/RTOS-queue-sets.html + * for reasons why queue sets are very rarely needed in practice as there are + * simpler methods of blocking on multiple objects. + * + * Note 2: Blocking on a queue set that contains a mutex will not cause the + * mutex holder to inherit the priority of the blocked task. + * + * Note 3: A receive (in the case of a queue) or take (in the case of a + * semaphore) operation must not be performed on a member of a queue set unless + * a call to xQueueSelectFromSet() has first returned a handle to that set member. + * + * @param xQueueSet The queue set on which the task will (potentially) block. + * + * @param xTicksToWait The maximum time, in ticks, that the calling task will + * remain in the Blocked state (with other tasks executing) to wait for a member + * of the queue set to be ready for a successful queue read or semaphore take + * operation. + * + * @return xQueueSelectFromSet() will return the handle of a queue (cast to + * a QueueSetMemberHandle_t type) contained in the queue set that contains data, + * or the handle of a semaphore (cast to a QueueSetMemberHandle_t type) contained + * in the queue set that is available, or NULL if no such queue or semaphore + * exists before before the specified block time expires. + */ +QueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/* + * A version of xQueueSelectFromSet() that can be used from an ISR. + */ +QueueSetMemberHandle_t xQueueSelectFromSetFromISR( QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION; + +/* Not public API functions. */ +void vQueueWaitForMessageRestricted( QueueHandle_t xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely ) PRIVILEGED_FUNCTION; +BaseType_t xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue ) PRIVILEGED_FUNCTION; +void vQueueSetQueueNumber( QueueHandle_t xQueue, UBaseType_t uxQueueNumber ) PRIVILEGED_FUNCTION; +UBaseType_t uxQueueGetQueueNumber( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; +uint8_t ucQueueGetQueueType( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; + + +#ifdef __cplusplus +} +#endif + +#endif /* QUEUE_H */ + diff --git a/components/freertos/include/semphr.h b/components/freertos/include/semphr.h new file mode 100644 index 00000000..2c106eac --- /dev/null +++ b/components/freertos/include/semphr.h @@ -0,0 +1,1140 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef SEMAPHORE_H +#define SEMAPHORE_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h" must appear in source files before "include semphr.h" +#endif + +#include "queue.h" + +typedef QueueHandle_t SemaphoreHandle_t; + +#define semBINARY_SEMAPHORE_QUEUE_LENGTH ( ( uint8_t ) 1U ) +#define semSEMAPHORE_QUEUE_ITEM_LENGTH ( ( uint8_t ) 0U ) +#define semGIVE_BLOCK_TIME ( ( TickType_t ) 0U ) + + +/** + * semphr. h + *
vSemaphoreCreateBinary( SemaphoreHandle_t xSemaphore )
+ * + * In many usage scenarios it is faster and more memory efficient to use a + * direct to task notification in place of a binary semaphore! + * http://www.freertos.org/RTOS-task-notifications.html + * + * This old vSemaphoreCreateBinary() macro is now deprecated in favour of the + * xSemaphoreCreateBinary() function. Note that binary semaphores created using + * the vSemaphoreCreateBinary() macro are created in a state such that the + * first call to 'take' the semaphore would pass, whereas binary semaphores + * created using xSemaphoreCreateBinary() are created in a state such that the + * the semaphore must first be 'given' before it can be 'taken'. + * + * Macro that implements a semaphore by using the existing queue mechanism. + * The queue length is 1 as this is a binary semaphore. The data size is 0 + * as we don't want to actually store any data - we just want to know if the + * queue is empty or full. + * + * This type of semaphore can be used for pure synchronisation between tasks or + * between an interrupt and a task. The semaphore need not be given back once + * obtained, so one task/interrupt can continuously 'give' the semaphore while + * another continuously 'takes' the semaphore. For this reason this type of + * semaphore does not use a priority inheritance mechanism. For an alternative + * that does use priority inheritance see xSemaphoreCreateMutex(). + * + * @param xSemaphore Handle to the created semaphore. Should be of type SemaphoreHandle_t. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore = NULL;
+
+ void vATask( void * pvParameters )
+ {
+    // Semaphore cannot be used before a call to vSemaphoreCreateBinary ().
+    // This is a macro so pass the variable in directly.
+    vSemaphoreCreateBinary( xSemaphore );
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.
+    }
+ }
+ 
+ * \defgroup vSemaphoreCreateBinary vSemaphoreCreateBinary + * \ingroup Semaphores + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + #define vSemaphoreCreateBinary( xSemaphore ) \ + { \ + ( xSemaphore ) = xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE ); \ + if( ( xSemaphore ) != NULL ) \ + { \ + ( void ) xSemaphoreGive( ( xSemaphore ) ); \ + } \ + } +#endif + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateBinary( void )
+ * + * Creates a new binary semaphore instance, and returns a handle by which the + * new semaphore can be referenced. + * + * In many usage scenarios it is faster and more memory efficient to use a + * direct to task notification in place of a binary semaphore! + * http://www.freertos.org/RTOS-task-notifications.html + * + * Internally, within the FreeRTOS implementation, binary semaphores use a block + * of memory, in which the semaphore structure is stored. If a binary semaphore + * is created using xSemaphoreCreateBinary() then the required memory is + * automatically dynamically allocated inside the xSemaphoreCreateBinary() + * function. (see http://www.freertos.org/a00111.html). If a binary semaphore + * is created using xSemaphoreCreateBinaryStatic() then the application writer + * must provide the memory. xSemaphoreCreateBinaryStatic() therefore allows a + * binary semaphore to be created without using any dynamic memory allocation. + * + * The old vSemaphoreCreateBinary() macro is now deprecated in favour of this + * xSemaphoreCreateBinary() function. Note that binary semaphores created using + * the vSemaphoreCreateBinary() macro are created in a state such that the + * first call to 'take' the semaphore would pass, whereas binary semaphores + * created using xSemaphoreCreateBinary() are created in a state such that the + * the semaphore must first be 'given' before it can be 'taken'. + * + * This type of semaphore can be used for pure synchronisation between tasks or + * between an interrupt and a task. The semaphore need not be given back once + * obtained, so one task/interrupt can continuously 'give' the semaphore while + * another continuously 'takes' the semaphore. For this reason this type of + * semaphore does not use a priority inheritance mechanism. For an alternative + * that does use priority inheritance see xSemaphoreCreateMutex(). + * + * @return Handle to the created semaphore, or NULL if the memory required to + * hold the semaphore's data structures could not be allocated. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore = NULL;
+
+ void vATask( void * pvParameters )
+ {
+    // Semaphore cannot be used before a call to xSemaphoreCreateBinary().
+    // This is a macro so pass the variable in directly.
+    xSemaphore = xSemaphoreCreateBinary();
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.
+    }
+ }
+ 
+ * \defgroup xSemaphoreCreateBinary xSemaphoreCreateBinary + * \ingroup Semaphores + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + #define xSemaphoreCreateBinary() xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE ) +#endif + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateBinaryStatic( StaticSemaphore_t *pxSemaphoreBuffer )
+ * + * Creates a new binary semaphore instance, and returns a handle by which the + * new semaphore can be referenced. + * + * NOTE: In many usage scenarios it is faster and more memory efficient to use a + * direct to task notification in place of a binary semaphore! + * http://www.freertos.org/RTOS-task-notifications.html + * + * Internally, within the FreeRTOS implementation, binary semaphores use a block + * of memory, in which the semaphore structure is stored. If a binary semaphore + * is created using xSemaphoreCreateBinary() then the required memory is + * automatically dynamically allocated inside the xSemaphoreCreateBinary() + * function. (see http://www.freertos.org/a00111.html). If a binary semaphore + * is created using xSemaphoreCreateBinaryStatic() then the application writer + * must provide the memory. xSemaphoreCreateBinaryStatic() therefore allows a + * binary semaphore to be created without using any dynamic memory allocation. + * + * This type of semaphore can be used for pure synchronisation between tasks or + * between an interrupt and a task. The semaphore need not be given back once + * obtained, so one task/interrupt can continuously 'give' the semaphore while + * another continuously 'takes' the semaphore. For this reason this type of + * semaphore does not use a priority inheritance mechanism. For an alternative + * that does use priority inheritance see xSemaphoreCreateMutex(). + * + * @param pxSemaphoreBuffer Must point to a variable of type StaticSemaphore_t, + * which will then be used to hold the semaphore's data structure, removing the + * need for the memory to be allocated dynamically. + * + * @return If the semaphore is created then a handle to the created semaphore is + * returned. If pxSemaphoreBuffer is NULL then NULL is returned. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore = NULL;
+ StaticSemaphore_t xSemaphoreBuffer;
+
+ void vATask( void * pvParameters )
+ {
+    // Semaphore cannot be used before a call to xSemaphoreCreateBinary().
+    // The semaphore's data structures will be placed in the xSemaphoreBuffer
+    // variable, the address of which is passed into the function.  The
+    // function's parameter is not NULL, so the function will not attempt any
+    // dynamic memory allocation, and therefore the function will not return
+    // return NULL.
+    xSemaphore = xSemaphoreCreateBinary( &xSemaphoreBuffer );
+
+    // Rest of task code goes here.
+ }
+ 
+ * \defgroup xSemaphoreCreateBinaryStatic xSemaphoreCreateBinaryStatic + * \ingroup Semaphores + */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + #define xSemaphoreCreateBinaryStatic( pxStaticSemaphore ) xQueueGenericCreateStatic( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, NULL, pxStaticSemaphore, queueQUEUE_TYPE_BINARY_SEMAPHORE ) +#endif /* configSUPPORT_STATIC_ALLOCATION */ + +/** + * semphr. h + *
xSemaphoreTake(
+ *                   SemaphoreHandle_t xSemaphore,
+ *                   TickType_t xBlockTime
+ *               )
+ * + * Macro to obtain a semaphore. The semaphore must have previously been + * created with a call to xSemaphoreCreateBinary(), xSemaphoreCreateMutex() or + * xSemaphoreCreateCounting(). + * + * @param xSemaphore A handle to the semaphore being taken - obtained when + * the semaphore was created. + * + * @param xBlockTime The time in ticks to wait for the semaphore to become + * available. The macro portTICK_PERIOD_MS can be used to convert this to a + * real time. A block time of zero can be used to poll the semaphore. A block + * time of portMAX_DELAY can be used to block indefinitely (provided + * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h). + * + * @return pdTRUE if the semaphore was obtained. pdFALSE + * if xBlockTime expired without the semaphore becoming available. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore = NULL;
+
+ // A task that creates a semaphore.
+ void vATask( void * pvParameters )
+ {
+    // Create the semaphore to guard a shared resource.
+    xSemaphore = xSemaphoreCreateBinary();
+ }
+
+ // A task that uses the semaphore.
+ void vAnotherTask( void * pvParameters )
+ {
+    // ... Do other things.
+
+    if( xSemaphore != NULL )
+    {
+        // See if we can obtain the semaphore.  If the semaphore is not available
+        // wait 10 ticks to see if it becomes free.
+        if( xSemaphoreTake( xSemaphore, ( TickType_t ) 10 ) == pdTRUE )
+        {
+            // We were able to obtain the semaphore and can now access the
+            // shared resource.
+
+            // ...
+
+            // We have finished accessing the shared resource.  Release the
+            // semaphore.
+            xSemaphoreGive( xSemaphore );
+        }
+        else
+        {
+            // We could not obtain the semaphore and can therefore not access
+            // the shared resource safely.
+        }
+    }
+ }
+ 
+ * \defgroup xSemaphoreTake xSemaphoreTake + * \ingroup Semaphores + */ +#define xSemaphoreTake( xSemaphore, xBlockTime ) xQueueSemaphoreTake( ( xSemaphore ), ( xBlockTime ) ) + +/** + * semphr. h + * xSemaphoreTakeRecursive( + * SemaphoreHandle_t xMutex, + * TickType_t xBlockTime + * ) + * + * Macro to recursively obtain, or 'take', a mutex type semaphore. + * The mutex must have previously been created using a call to + * xSemaphoreCreateRecursiveMutex(); + * + * configUSE_RECURSIVE_MUTEXES must be set to 1 in FreeRTOSConfig.h for this + * macro to be available. + * + * This macro must not be used on mutexes created using xSemaphoreCreateMutex(). + * + * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex + * doesn't become available again until the owner has called + * xSemaphoreGiveRecursive() for each successful 'take' request. For example, + * if a task successfully 'takes' the same mutex 5 times then the mutex will + * not be available to any other task until it has also 'given' the mutex back + * exactly five times. + * + * @param xMutex A handle to the mutex being obtained. This is the + * handle returned by xSemaphoreCreateRecursiveMutex(); + * + * @param xBlockTime The time in ticks to wait for the semaphore to become + * available. The macro portTICK_PERIOD_MS can be used to convert this to a + * real time. A block time of zero can be used to poll the semaphore. If + * the task already owns the semaphore then xSemaphoreTakeRecursive() will + * return immediately no matter what the value of xBlockTime. + * + * @return pdTRUE if the semaphore was obtained. pdFALSE if xBlockTime + * expired without the semaphore becoming available. + * + * Example usage: +
+ SemaphoreHandle_t xMutex = NULL;
+
+ // A task that creates a mutex.
+ void vATask( void * pvParameters )
+ {
+    // Create the mutex to guard a shared resource.
+    xMutex = xSemaphoreCreateRecursiveMutex();
+ }
+
+ // A task that uses the mutex.
+ void vAnotherTask( void * pvParameters )
+ {
+    // ... Do other things.
+
+    if( xMutex != NULL )
+    {
+        // See if we can obtain the mutex.  If the mutex is not available
+        // wait 10 ticks to see if it becomes free.
+        if( xSemaphoreTakeRecursive( xSemaphore, ( TickType_t ) 10 ) == pdTRUE )
+        {
+            // We were able to obtain the mutex and can now access the
+            // shared resource.
+
+            // ...
+            // For some reason due to the nature of the code further calls to
+            // xSemaphoreTakeRecursive() are made on the same mutex.  In real
+            // code these would not be just sequential calls as this would make
+            // no sense.  Instead the calls are likely to be buried inside
+            // a more complex call structure.
+            xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 );
+            xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 );
+
+            // The mutex has now been 'taken' three times, so will not be
+            // available to another task until it has also been given back
+            // three times.  Again it is unlikely that real code would have
+            // these calls sequentially, but instead buried in a more complex
+            // call structure.  This is just for illustrative purposes.
+            xSemaphoreGiveRecursive( xMutex );
+            xSemaphoreGiveRecursive( xMutex );
+            xSemaphoreGiveRecursive( xMutex );
+
+            // Now the mutex can be taken by other tasks.
+        }
+        else
+        {
+            // We could not obtain the mutex and can therefore not access
+            // the shared resource safely.
+        }
+    }
+ }
+ 
+ * \defgroup xSemaphoreTakeRecursive xSemaphoreTakeRecursive + * \ingroup Semaphores + */ +#if( configUSE_RECURSIVE_MUTEXES == 1 ) + #define xSemaphoreTakeRecursive( xMutex, xBlockTime ) xQueueTakeMutexRecursive( ( xMutex ), ( xBlockTime ) ) +#endif + +/** + * semphr. h + *
xSemaphoreGive( SemaphoreHandle_t xSemaphore )
+ * + * Macro to release a semaphore. The semaphore must have previously been + * created with a call to xSemaphoreCreateBinary(), xSemaphoreCreateMutex() or + * xSemaphoreCreateCounting(). and obtained using sSemaphoreTake(). + * + * This macro must not be used from an ISR. See xSemaphoreGiveFromISR () for + * an alternative which can be used from an ISR. + * + * This macro must also not be used on semaphores created using + * xSemaphoreCreateRecursiveMutex(). + * + * @param xSemaphore A handle to the semaphore being released. This is the + * handle returned when the semaphore was created. + * + * @return pdTRUE if the semaphore was released. pdFALSE if an error occurred. + * Semaphores are implemented using queues. An error can occur if there is + * no space on the queue to post a message - indicating that the + * semaphore was not first obtained correctly. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore = NULL;
+
+ void vATask( void * pvParameters )
+ {
+    // Create the semaphore to guard a shared resource.
+    xSemaphore = vSemaphoreCreateBinary();
+
+    if( xSemaphore != NULL )
+    {
+        if( xSemaphoreGive( xSemaphore ) != pdTRUE )
+        {
+            // We would expect this call to fail because we cannot give
+            // a semaphore without first "taking" it!
+        }
+
+        // Obtain the semaphore - don't block if the semaphore is not
+        // immediately available.
+        if( xSemaphoreTake( xSemaphore, ( TickType_t ) 0 ) )
+        {
+            // We now have the semaphore and can access the shared resource.
+
+            // ...
+
+            // We have finished accessing the shared resource so can free the
+            // semaphore.
+            if( xSemaphoreGive( xSemaphore ) != pdTRUE )
+            {
+                // We would not expect this call to fail because we must have
+                // obtained the semaphore to get here.
+            }
+        }
+    }
+ }
+ 
+ * \defgroup xSemaphoreGive xSemaphoreGive + * \ingroup Semaphores + */ +#define xSemaphoreGive( xSemaphore ) xQueueGenericSend( ( QueueHandle_t ) ( xSemaphore ), NULL, semGIVE_BLOCK_TIME, queueSEND_TO_BACK ) + +/** + * semphr. h + *
xSemaphoreGiveRecursive( SemaphoreHandle_t xMutex )
+ * + * Macro to recursively release, or 'give', a mutex type semaphore. + * The mutex must have previously been created using a call to + * xSemaphoreCreateRecursiveMutex(); + * + * configUSE_RECURSIVE_MUTEXES must be set to 1 in FreeRTOSConfig.h for this + * macro to be available. + * + * This macro must not be used on mutexes created using xSemaphoreCreateMutex(). + * + * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex + * doesn't become available again until the owner has called + * xSemaphoreGiveRecursive() for each successful 'take' request. For example, + * if a task successfully 'takes' the same mutex 5 times then the mutex will + * not be available to any other task until it has also 'given' the mutex back + * exactly five times. + * + * @param xMutex A handle to the mutex being released, or 'given'. This is the + * handle returned by xSemaphoreCreateMutex(); + * + * @return pdTRUE if the semaphore was given. + * + * Example usage: +
+ SemaphoreHandle_t xMutex = NULL;
+
+ // A task that creates a mutex.
+ void vATask( void * pvParameters )
+ {
+    // Create the mutex to guard a shared resource.
+    xMutex = xSemaphoreCreateRecursiveMutex();
+ }
+
+ // A task that uses the mutex.
+ void vAnotherTask( void * pvParameters )
+ {
+    // ... Do other things.
+
+    if( xMutex != NULL )
+    {
+        // See if we can obtain the mutex.  If the mutex is not available
+        // wait 10 ticks to see if it becomes free.
+        if( xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 ) == pdTRUE )
+        {
+            // We were able to obtain the mutex and can now access the
+            // shared resource.
+
+            // ...
+            // For some reason due to the nature of the code further calls to
+			// xSemaphoreTakeRecursive() are made on the same mutex.  In real
+			// code these would not be just sequential calls as this would make
+			// no sense.  Instead the calls are likely to be buried inside
+			// a more complex call structure.
+            xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 );
+            xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 );
+
+            // The mutex has now been 'taken' three times, so will not be
+			// available to another task until it has also been given back
+			// three times.  Again it is unlikely that real code would have
+			// these calls sequentially, it would be more likely that the calls
+			// to xSemaphoreGiveRecursive() would be called as a call stack
+			// unwound.  This is just for demonstrative purposes.
+            xSemaphoreGiveRecursive( xMutex );
+			xSemaphoreGiveRecursive( xMutex );
+			xSemaphoreGiveRecursive( xMutex );
+
+			// Now the mutex can be taken by other tasks.
+        }
+        else
+        {
+            // We could not obtain the mutex and can therefore not access
+            // the shared resource safely.
+        }
+    }
+ }
+ 
+ * \defgroup xSemaphoreGiveRecursive xSemaphoreGiveRecursive + * \ingroup Semaphores + */ +#if( configUSE_RECURSIVE_MUTEXES == 1 ) + #define xSemaphoreGiveRecursive( xMutex ) xQueueGiveMutexRecursive( ( xMutex ) ) +#endif + +/** + * semphr. h + *
+ xSemaphoreGiveFromISR(
+                          SemaphoreHandle_t xSemaphore,
+                          BaseType_t *pxHigherPriorityTaskWoken
+                      )
+ * + * Macro to release a semaphore. The semaphore must have previously been + * created with a call to xSemaphoreCreateBinary() or xSemaphoreCreateCounting(). + * + * Mutex type semaphores (those created using a call to xSemaphoreCreateMutex()) + * must not be used with this macro. + * + * This macro can be used from an ISR. + * + * @param xSemaphore A handle to the semaphore being released. This is the + * handle returned when the semaphore was created. + * + * @param pxHigherPriorityTaskWoken xSemaphoreGiveFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if giving the semaphore caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xSemaphoreGiveFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @return pdTRUE if the semaphore was successfully given, otherwise errQUEUE_FULL. + * + * Example usage: +
+ \#define LONG_TIME 0xffff
+ \#define TICKS_TO_WAIT	10
+ SemaphoreHandle_t xSemaphore = NULL;
+
+ // Repetitive task.
+ void vATask( void * pvParameters )
+ {
+    for( ;; )
+    {
+        // We want this task to run every 10 ticks of a timer.  The semaphore
+        // was created before this task was started.
+
+        // Block waiting for the semaphore to become available.
+        if( xSemaphoreTake( xSemaphore, LONG_TIME ) == pdTRUE )
+        {
+            // It is time to execute.
+
+            // ...
+
+            // We have finished our task.  Return to the top of the loop where
+            // we will block on the semaphore until it is time to execute
+            // again.  Note when using the semaphore for synchronisation with an
+			// ISR in this manner there is no need to 'give' the semaphore back.
+        }
+    }
+ }
+
+ // Timer ISR
+ void vTimerISR( void * pvParameters )
+ {
+ static uint8_t ucLocalTickCount = 0;
+ static BaseType_t xHigherPriorityTaskWoken;
+
+    // A timer tick has occurred.
+
+    // ... Do other time functions.
+
+    // Is it time for vATask () to run?
+	xHigherPriorityTaskWoken = pdFALSE;
+    ucLocalTickCount++;
+    if( ucLocalTickCount >= TICKS_TO_WAIT )
+    {
+        // Unblock the task by releasing the semaphore.
+        xSemaphoreGiveFromISR( xSemaphore, &xHigherPriorityTaskWoken );
+
+        // Reset the count so we release the semaphore again in 10 ticks time.
+        ucLocalTickCount = 0;
+    }
+
+    if( xHigherPriorityTaskWoken != pdFALSE )
+    {
+        // We can force a context switch here.  Context switching from an
+        // ISR uses port specific syntax.  Check the demo task for your port
+        // to find the syntax required.
+    }
+ }
+ 
+ * \defgroup xSemaphoreGiveFromISR xSemaphoreGiveFromISR + * \ingroup Semaphores + */ +#define xSemaphoreGiveFromISR( xSemaphore, pxHigherPriorityTaskWoken ) xQueueGiveFromISR( ( QueueHandle_t ) ( xSemaphore ), ( pxHigherPriorityTaskWoken ) ) + +/** + * semphr. h + *
+ xSemaphoreTakeFromISR(
+                          SemaphoreHandle_t xSemaphore,
+                          BaseType_t *pxHigherPriorityTaskWoken
+                      )
+ * + * Macro to take a semaphore from an ISR. The semaphore must have + * previously been created with a call to xSemaphoreCreateBinary() or + * xSemaphoreCreateCounting(). + * + * Mutex type semaphores (those created using a call to xSemaphoreCreateMutex()) + * must not be used with this macro. + * + * This macro can be used from an ISR, however taking a semaphore from an ISR + * is not a common operation. It is likely to only be useful when taking a + * counting semaphore when an interrupt is obtaining an object from a resource + * pool (when the semaphore count indicates the number of resources available). + * + * @param xSemaphore A handle to the semaphore being taken. This is the + * handle returned when the semaphore was created. + * + * @param pxHigherPriorityTaskWoken xSemaphoreTakeFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if taking the semaphore caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xSemaphoreTakeFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @return pdTRUE if the semaphore was successfully taken, otherwise + * pdFALSE + */ +#define xSemaphoreTakeFromISR( xSemaphore, pxHigherPriorityTaskWoken ) xQueueReceiveFromISR( ( QueueHandle_t ) ( xSemaphore ), NULL, ( pxHigherPriorityTaskWoken ) ) + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateMutex( void )
+ * + * Creates a new mutex type semaphore instance, and returns a handle by which + * the new mutex can be referenced. + * + * Internally, within the FreeRTOS implementation, mutex semaphores use a block + * of memory, in which the mutex structure is stored. If a mutex is created + * using xSemaphoreCreateMutex() then the required memory is automatically + * dynamically allocated inside the xSemaphoreCreateMutex() function. (see + * http://www.freertos.org/a00111.html). If a mutex is created using + * xSemaphoreCreateMutexStatic() then the application writer must provided the + * memory. xSemaphoreCreateMutexStatic() therefore allows a mutex to be created + * without using any dynamic memory allocation. + * + * Mutexes created using this function can be accessed using the xSemaphoreTake() + * and xSemaphoreGive() macros. The xSemaphoreTakeRecursive() and + * xSemaphoreGiveRecursive() macros must not be used. + * + * This type of semaphore uses a priority inheritance mechanism so a task + * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the + * semaphore it is no longer required. + * + * Mutex type semaphores cannot be used from within interrupt service routines. + * + * See xSemaphoreCreateBinary() for an alternative implementation that can be + * used for pure synchronisation (where one task or interrupt always 'gives' the + * semaphore and another always 'takes' the semaphore) and from within interrupt + * service routines. + * + * @return If the mutex was successfully created then a handle to the created + * semaphore is returned. If there was not enough heap to allocate the mutex + * data structures then NULL is returned. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore;
+
+ void vATask( void * pvParameters )
+ {
+    // Semaphore cannot be used before a call to xSemaphoreCreateMutex().
+    // This is a macro so pass the variable in directly.
+    xSemaphore = xSemaphoreCreateMutex();
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.
+    }
+ }
+ 
+ * \defgroup xSemaphoreCreateMutex xSemaphoreCreateMutex + * \ingroup Semaphores + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + #define xSemaphoreCreateMutex() xQueueCreateMutex( queueQUEUE_TYPE_MUTEX ) +#endif + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateMutexStatic( StaticSemaphore_t *pxMutexBuffer )
+ * + * Creates a new mutex type semaphore instance, and returns a handle by which + * the new mutex can be referenced. + * + * Internally, within the FreeRTOS implementation, mutex semaphores use a block + * of memory, in which the mutex structure is stored. If a mutex is created + * using xSemaphoreCreateMutex() then the required memory is automatically + * dynamically allocated inside the xSemaphoreCreateMutex() function. (see + * http://www.freertos.org/a00111.html). If a mutex is created using + * xSemaphoreCreateMutexStatic() then the application writer must provided the + * memory. xSemaphoreCreateMutexStatic() therefore allows a mutex to be created + * without using any dynamic memory allocation. + * + * Mutexes created using this function can be accessed using the xSemaphoreTake() + * and xSemaphoreGive() macros. The xSemaphoreTakeRecursive() and + * xSemaphoreGiveRecursive() macros must not be used. + * + * This type of semaphore uses a priority inheritance mechanism so a task + * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the + * semaphore it is no longer required. + * + * Mutex type semaphores cannot be used from within interrupt service routines. + * + * See xSemaphoreCreateBinary() for an alternative implementation that can be + * used for pure synchronisation (where one task or interrupt always 'gives' the + * semaphore and another always 'takes' the semaphore) and from within interrupt + * service routines. + * + * @param pxMutexBuffer Must point to a variable of type StaticSemaphore_t, + * which will be used to hold the mutex's data structure, removing the need for + * the memory to be allocated dynamically. + * + * @return If the mutex was successfully created then a handle to the created + * mutex is returned. If pxMutexBuffer was NULL then NULL is returned. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore;
+ StaticSemaphore_t xMutexBuffer;
+
+ void vATask( void * pvParameters )
+ {
+    // A mutex cannot be used before it has been created.  xMutexBuffer is
+    // into xSemaphoreCreateMutexStatic() so no dynamic memory allocation is
+    // attempted.
+    xSemaphore = xSemaphoreCreateMutexStatic( &xMutexBuffer );
+
+    // As no dynamic memory allocation was performed, xSemaphore cannot be NULL,
+    // so there is no need to check it.
+ }
+ 
+ * \defgroup xSemaphoreCreateMutexStatic xSemaphoreCreateMutexStatic + * \ingroup Semaphores + */ + #if( configSUPPORT_STATIC_ALLOCATION == 1 ) + #define xSemaphoreCreateMutexStatic( pxMutexBuffer ) xQueueCreateMutexStatic( queueQUEUE_TYPE_MUTEX, ( pxMutexBuffer ) ) +#endif /* configSUPPORT_STATIC_ALLOCATION */ + + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateRecursiveMutex( void )
+ * + * Creates a new recursive mutex type semaphore instance, and returns a handle + * by which the new recursive mutex can be referenced. + * + * Internally, within the FreeRTOS implementation, recursive mutexs use a block + * of memory, in which the mutex structure is stored. If a recursive mutex is + * created using xSemaphoreCreateRecursiveMutex() then the required memory is + * automatically dynamically allocated inside the + * xSemaphoreCreateRecursiveMutex() function. (see + * http://www.freertos.org/a00111.html). If a recursive mutex is created using + * xSemaphoreCreateRecursiveMutexStatic() then the application writer must + * provide the memory that will get used by the mutex. + * xSemaphoreCreateRecursiveMutexStatic() therefore allows a recursive mutex to + * be created without using any dynamic memory allocation. + * + * Mutexes created using this macro can be accessed using the + * xSemaphoreTakeRecursive() and xSemaphoreGiveRecursive() macros. The + * xSemaphoreTake() and xSemaphoreGive() macros must not be used. + * + * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex + * doesn't become available again until the owner has called + * xSemaphoreGiveRecursive() for each successful 'take' request. For example, + * if a task successfully 'takes' the same mutex 5 times then the mutex will + * not be available to any other task until it has also 'given' the mutex back + * exactly five times. + * + * This type of semaphore uses a priority inheritance mechanism so a task + * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the + * semaphore it is no longer required. + * + * Mutex type semaphores cannot be used from within interrupt service routines. + * + * See xSemaphoreCreateBinary() for an alternative implementation that can be + * used for pure synchronisation (where one task or interrupt always 'gives' the + * semaphore and another always 'takes' the semaphore) and from within interrupt + * service routines. + * + * @return xSemaphore Handle to the created mutex semaphore. Should be of type + * SemaphoreHandle_t. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore;
+
+ void vATask( void * pvParameters )
+ {
+    // Semaphore cannot be used before a call to xSemaphoreCreateMutex().
+    // This is a macro so pass the variable in directly.
+    xSemaphore = xSemaphoreCreateRecursiveMutex();
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.
+    }
+ }
+ 
+ * \defgroup xSemaphoreCreateRecursiveMutex xSemaphoreCreateRecursiveMutex + * \ingroup Semaphores + */ +#if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configUSE_RECURSIVE_MUTEXES == 1 ) ) + #define xSemaphoreCreateRecursiveMutex() xQueueCreateMutex( queueQUEUE_TYPE_RECURSIVE_MUTEX ) +#endif + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateRecursiveMutexStatic( StaticSemaphore_t *pxMutexBuffer )
+ * + * Creates a new recursive mutex type semaphore instance, and returns a handle + * by which the new recursive mutex can be referenced. + * + * Internally, within the FreeRTOS implementation, recursive mutexs use a block + * of memory, in which the mutex structure is stored. If a recursive mutex is + * created using xSemaphoreCreateRecursiveMutex() then the required memory is + * automatically dynamically allocated inside the + * xSemaphoreCreateRecursiveMutex() function. (see + * http://www.freertos.org/a00111.html). If a recursive mutex is created using + * xSemaphoreCreateRecursiveMutexStatic() then the application writer must + * provide the memory that will get used by the mutex. + * xSemaphoreCreateRecursiveMutexStatic() therefore allows a recursive mutex to + * be created without using any dynamic memory allocation. + * + * Mutexes created using this macro can be accessed using the + * xSemaphoreTakeRecursive() and xSemaphoreGiveRecursive() macros. The + * xSemaphoreTake() and xSemaphoreGive() macros must not be used. + * + * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex + * doesn't become available again until the owner has called + * xSemaphoreGiveRecursive() for each successful 'take' request. For example, + * if a task successfully 'takes' the same mutex 5 times then the mutex will + * not be available to any other task until it has also 'given' the mutex back + * exactly five times. + * + * This type of semaphore uses a priority inheritance mechanism so a task + * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the + * semaphore it is no longer required. + * + * Mutex type semaphores cannot be used from within interrupt service routines. + * + * See xSemaphoreCreateBinary() for an alternative implementation that can be + * used for pure synchronisation (where one task or interrupt always 'gives' the + * semaphore and another always 'takes' the semaphore) and from within interrupt + * service routines. + * + * @param pxMutexBuffer Must point to a variable of type StaticSemaphore_t, + * which will then be used to hold the recursive mutex's data structure, + * removing the need for the memory to be allocated dynamically. + * + * @return If the recursive mutex was successfully created then a handle to the + * created recursive mutex is returned. If pxMutexBuffer was NULL then NULL is + * returned. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore;
+ StaticSemaphore_t xMutexBuffer;
+
+ void vATask( void * pvParameters )
+ {
+    // A recursive semaphore cannot be used before it is created.  Here a
+    // recursive mutex is created using xSemaphoreCreateRecursiveMutexStatic().
+    // The address of xMutexBuffer is passed into the function, and will hold
+    // the mutexes data structures - so no dynamic memory allocation will be
+    // attempted.
+    xSemaphore = xSemaphoreCreateRecursiveMutexStatic( &xMutexBuffer );
+
+    // As no dynamic memory allocation was performed, xSemaphore cannot be NULL,
+    // so there is no need to check it.
+ }
+ 
+ * \defgroup xSemaphoreCreateRecursiveMutexStatic xSemaphoreCreateRecursiveMutexStatic + * \ingroup Semaphores + */ +#if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_RECURSIVE_MUTEXES == 1 ) ) + #define xSemaphoreCreateRecursiveMutexStatic( pxStaticSemaphore ) xQueueCreateMutexStatic( queueQUEUE_TYPE_RECURSIVE_MUTEX, pxStaticSemaphore ) +#endif /* configSUPPORT_STATIC_ALLOCATION */ + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateCounting( UBaseType_t uxMaxCount, UBaseType_t uxInitialCount )
+ * + * Creates a new counting semaphore instance, and returns a handle by which the + * new counting semaphore can be referenced. + * + * In many usage scenarios it is faster and more memory efficient to use a + * direct to task notification in place of a counting semaphore! + * http://www.freertos.org/RTOS-task-notifications.html + * + * Internally, within the FreeRTOS implementation, counting semaphores use a + * block of memory, in which the counting semaphore structure is stored. If a + * counting semaphore is created using xSemaphoreCreateCounting() then the + * required memory is automatically dynamically allocated inside the + * xSemaphoreCreateCounting() function. (see + * http://www.freertos.org/a00111.html). If a counting semaphore is created + * using xSemaphoreCreateCountingStatic() then the application writer can + * instead optionally provide the memory that will get used by the counting + * semaphore. xSemaphoreCreateCountingStatic() therefore allows a counting + * semaphore to be created without using any dynamic memory allocation. + * + * Counting semaphores are typically used for two things: + * + * 1) Counting events. + * + * In this usage scenario an event handler will 'give' a semaphore each time + * an event occurs (incrementing the semaphore count value), and a handler + * task will 'take' a semaphore each time it processes an event + * (decrementing the semaphore count value). The count value is therefore + * the difference between the number of events that have occurred and the + * number that have been processed. In this case it is desirable for the + * initial count value to be zero. + * + * 2) Resource management. + * + * In this usage scenario the count value indicates the number of resources + * available. To obtain control of a resource a task must first obtain a + * semaphore - decrementing the semaphore count value. When the count value + * reaches zero there are no free resources. When a task finishes with the + * resource it 'gives' the semaphore back - incrementing the semaphore count + * value. In this case it is desirable for the initial count value to be + * equal to the maximum count value, indicating that all resources are free. + * + * @param uxMaxCount The maximum count value that can be reached. When the + * semaphore reaches this value it can no longer be 'given'. + * + * @param uxInitialCount The count value assigned to the semaphore when it is + * created. + * + * @return Handle to the created semaphore. Null if the semaphore could not be + * created. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore;
+
+ void vATask( void * pvParameters )
+ {
+ SemaphoreHandle_t xSemaphore = NULL;
+
+    // Semaphore cannot be used before a call to xSemaphoreCreateCounting().
+    // The max value to which the semaphore can count should be 10, and the
+    // initial value assigned to the count should be 0.
+    xSemaphore = xSemaphoreCreateCounting( 10, 0 );
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.
+    }
+ }
+ 
+ * \defgroup xSemaphoreCreateCounting xSemaphoreCreateCounting + * \ingroup Semaphores + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + #define xSemaphoreCreateCounting( uxMaxCount, uxInitialCount ) xQueueCreateCountingSemaphore( ( uxMaxCount ), ( uxInitialCount ) ) +#endif + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateCountingStatic( UBaseType_t uxMaxCount, UBaseType_t uxInitialCount, StaticSemaphore_t *pxSemaphoreBuffer )
+ * + * Creates a new counting semaphore instance, and returns a handle by which the + * new counting semaphore can be referenced. + * + * In many usage scenarios it is faster and more memory efficient to use a + * direct to task notification in place of a counting semaphore! + * http://www.freertos.org/RTOS-task-notifications.html + * + * Internally, within the FreeRTOS implementation, counting semaphores use a + * block of memory, in which the counting semaphore structure is stored. If a + * counting semaphore is created using xSemaphoreCreateCounting() then the + * required memory is automatically dynamically allocated inside the + * xSemaphoreCreateCounting() function. (see + * http://www.freertos.org/a00111.html). If a counting semaphore is created + * using xSemaphoreCreateCountingStatic() then the application writer must + * provide the memory. xSemaphoreCreateCountingStatic() therefore allows a + * counting semaphore to be created without using any dynamic memory allocation. + * + * Counting semaphores are typically used for two things: + * + * 1) Counting events. + * + * In this usage scenario an event handler will 'give' a semaphore each time + * an event occurs (incrementing the semaphore count value), and a handler + * task will 'take' a semaphore each time it processes an event + * (decrementing the semaphore count value). The count value is therefore + * the difference between the number of events that have occurred and the + * number that have been processed. In this case it is desirable for the + * initial count value to be zero. + * + * 2) Resource management. + * + * In this usage scenario the count value indicates the number of resources + * available. To obtain control of a resource a task must first obtain a + * semaphore - decrementing the semaphore count value. When the count value + * reaches zero there are no free resources. When a task finishes with the + * resource it 'gives' the semaphore back - incrementing the semaphore count + * value. In this case it is desirable for the initial count value to be + * equal to the maximum count value, indicating that all resources are free. + * + * @param uxMaxCount The maximum count value that can be reached. When the + * semaphore reaches this value it can no longer be 'given'. + * + * @param uxInitialCount The count value assigned to the semaphore when it is + * created. + * + * @param pxSemaphoreBuffer Must point to a variable of type StaticSemaphore_t, + * which will then be used to hold the semaphore's data structure, removing the + * need for the memory to be allocated dynamically. + * + * @return If the counting semaphore was successfully created then a handle to + * the created counting semaphore is returned. If pxSemaphoreBuffer was NULL + * then NULL is returned. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore;
+ StaticSemaphore_t xSemaphoreBuffer;
+
+ void vATask( void * pvParameters )
+ {
+ SemaphoreHandle_t xSemaphore = NULL;
+
+    // Counting semaphore cannot be used before they have been created.  Create
+    // a counting semaphore using xSemaphoreCreateCountingStatic().  The max
+    // value to which the semaphore can count is 10, and the initial value
+    // assigned to the count will be 0.  The address of xSemaphoreBuffer is
+    // passed in and will be used to hold the semaphore structure, so no dynamic
+    // memory allocation will be used.
+    xSemaphore = xSemaphoreCreateCounting( 10, 0, &xSemaphoreBuffer );
+
+    // No memory allocation was attempted so xSemaphore cannot be NULL, so there
+    // is no need to check its value.
+ }
+ 
+ * \defgroup xSemaphoreCreateCountingStatic xSemaphoreCreateCountingStatic + * \ingroup Semaphores + */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + #define xSemaphoreCreateCountingStatic( uxMaxCount, uxInitialCount, pxSemaphoreBuffer ) xQueueCreateCountingSemaphoreStatic( ( uxMaxCount ), ( uxInitialCount ), ( pxSemaphoreBuffer ) ) +#endif /* configSUPPORT_STATIC_ALLOCATION */ + +/** + * semphr. h + *
void vSemaphoreDelete( SemaphoreHandle_t xSemaphore );
+ * + * Delete a semaphore. This function must be used with care. For example, + * do not delete a mutex type semaphore if the mutex is held by a task. + * + * @param xSemaphore A handle to the semaphore to be deleted. + * + * \defgroup vSemaphoreDelete vSemaphoreDelete + * \ingroup Semaphores + */ +#define vSemaphoreDelete( xSemaphore ) vQueueDelete( ( QueueHandle_t ) ( xSemaphore ) ) + +/** + * semphr.h + *
TaskHandle_t xSemaphoreGetMutexHolder( SemaphoreHandle_t xMutex );
+ * + * If xMutex is indeed a mutex type semaphore, return the current mutex holder. + * If xMutex is not a mutex type semaphore, or the mutex is available (not held + * by a task), return NULL. + * + * Note: This is a good way of determining if the calling task is the mutex + * holder, but not a good way of determining the identity of the mutex holder as + * the holder may change between the function exiting and the returned value + * being tested. + */ +#define xSemaphoreGetMutexHolder( xSemaphore ) xQueueGetMutexHolder( ( xSemaphore ) ) + +/** + * semphr.h + *
TaskHandle_t xSemaphoreGetMutexHolderFromISR( SemaphoreHandle_t xMutex );
+ * + * If xMutex is indeed a mutex type semaphore, return the current mutex holder. + * If xMutex is not a mutex type semaphore, or the mutex is available (not held + * by a task), return NULL. + * + */ +#define xSemaphoreGetMutexHolderFromISR( xSemaphore ) xQueueGetMutexHolderFromISR( ( xSemaphore ) ) + +/** + * semphr.h + *
UBaseType_t uxSemaphoreGetCount( SemaphoreHandle_t xSemaphore );
+ * + * If the semaphore is a counting semaphore then uxSemaphoreGetCount() returns + * its current count value. If the semaphore is a binary semaphore then + * uxSemaphoreGetCount() returns 1 if the semaphore is available, and 0 if the + * semaphore is not available. + * + */ +#define uxSemaphoreGetCount( xSemaphore ) uxQueueMessagesWaiting( ( QueueHandle_t ) ( xSemaphore ) ) + +#endif /* SEMAPHORE_H */ + + diff --git a/components/freertos/include/stack_macros.h b/components/freertos/include/stack_macros.h new file mode 100644 index 00000000..18406bbf --- /dev/null +++ b/components/freertos/include/stack_macros.h @@ -0,0 +1,129 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef STACK_MACROS_H +#define STACK_MACROS_H + +/* + * Call the stack overflow hook function if the stack of the task being swapped + * out is currently overflowed, or looks like it might have overflowed in the + * past. + * + * Setting configCHECK_FOR_STACK_OVERFLOW to 1 will cause the macro to check + * the current stack state only - comparing the current top of stack value to + * the stack limit. Setting configCHECK_FOR_STACK_OVERFLOW to greater than 1 + * will also cause the last few stack bytes to be checked to ensure the value + * to which the bytes were set when the task was created have not been + * overwritten. Note this second test does not guarantee that an overflowed + * stack will always be recognised. + */ + +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH < 0 ) ) + + /* Only the current stack state is to be checked. */ + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + /* Is the currently saved stack pointer within the stack limit? */ \ + if( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */ +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH > 0 ) ) + + /* Only the current stack state is to be checked. */ + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + \ + /* Is the currently saved stack pointer within the stack limit? */ \ + if( pxCurrentTCB->pxTopOfStack >= pxCurrentTCB->pxEndOfStack ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */ +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) ) + + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + const uint32_t * const pulStack = ( uint32_t * ) pxCurrentTCB->pxStack; \ + const uint32_t ulCheckValue = ( uint32_t ) 0xa5a5a5a5; \ + \ + if( ( pulStack[ 0 ] != ulCheckValue ) || \ + ( pulStack[ 1 ] != ulCheckValue ) || \ + ( pulStack[ 2 ] != ulCheckValue ) || \ + ( pulStack[ 3 ] != ulCheckValue ) ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */ +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) ) + + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + int8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack; \ + static const uint8_t ucExpectedStackBytes[] = { tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE }; \ + \ + \ + pcEndOfStack -= sizeof( ucExpectedStackBytes ); \ + \ + /* Has the extremity of the task stack ever been written over? */ \ + if( memcmp( ( void * ) pcEndOfStack, ( void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */ +/*-----------------------------------------------------------*/ + +/* Remove stack overflow macro if not being used. */ +#ifndef taskCHECK_FOR_STACK_OVERFLOW + #define taskCHECK_FOR_STACK_OVERFLOW() +#endif + + + +#endif /* STACK_MACROS_H */ + diff --git a/components/freertos/include/stdint.readme b/components/freertos/include/stdint.readme new file mode 100644 index 00000000..4414c29e --- /dev/null +++ b/components/freertos/include/stdint.readme @@ -0,0 +1,27 @@ + +#ifndef FREERTOS_STDINT +#define FREERTOS_STDINT + +/******************************************************************************* + * THIS IS NOT A FULL stdint.h IMPLEMENTATION - It only contains the definitions + * necessary to build the FreeRTOS code. It is provided to allow FreeRTOS to be + * built using compilers that do not provide their own stdint.h definition. + * + * To use this file: + * + * 1) Copy this file into the directory that contains your FreeRTOSConfig.h + * header file, as that directory will already be in the compilers include + * path. + * + * 2) Rename the copied file stdint.h. + * + */ + +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; +typedef unsigned short uint16_t; +typedef long int32_t; +typedef unsigned long uint32_t; + +#endif /* FREERTOS_STDINT */ diff --git a/components/freertos/include/stream_buffer.h b/components/freertos/include/stream_buffer.h new file mode 100644 index 00000000..b6311b88 --- /dev/null +++ b/components/freertos/include/stream_buffer.h @@ -0,0 +1,859 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* + * Stream buffers are used to send a continuous stream of data from one task or + * interrupt to another. Their implementation is light weight, making them + * particularly suited for interrupt to task and core to core communication + * scenarios. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xStreamBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xStreamBufferRead()) inside a critical section section and set the + * receive block time to 0. + * + */ + +#ifndef STREAM_BUFFER_H +#define STREAM_BUFFER_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h must appear in source files before include stream_buffer.h" +#endif + +#if defined( __cplusplus ) +extern "C" { +#endif + +/** + * Type by which stream buffers are referenced. For example, a call to + * xStreamBufferCreate() returns an StreamBufferHandle_t variable that can + * then be used as a parameter to xStreamBufferSend(), xStreamBufferReceive(), + * etc. + */ +struct StreamBufferDef_t; +typedef struct StreamBufferDef_t * StreamBufferHandle_t; + + +/** + * message_buffer.h + * +
+StreamBufferHandle_t xStreamBufferCreate( size_t xBufferSizeBytes, size_t xTriggerLevelBytes );
+
+ * + * Creates a new stream buffer using dynamically allocated memory. See + * xStreamBufferCreateStatic() for a version that uses statically allocated + * memory (memory that is allocated at compile time). + * + * configSUPPORT_DYNAMIC_ALLOCATION must be set to 1 or left undefined in + * FreeRTOSConfig.h for xStreamBufferCreate() to be available. + * + * @param xBufferSizeBytes The total number of bytes the stream buffer will be + * able to hold at any one time. + * + * @param xTriggerLevelBytes The number of bytes that must be in the stream + * buffer before a task that is blocked on the stream buffer to wait for data is + * moved out of the blocked state. For example, if a task is blocked on a read + * of an empty stream buffer that has a trigger level of 1 then the task will be + * unblocked when a single byte is written to the buffer or the task's block + * time expires. As another example, if a task is blocked on a read of an empty + * stream buffer that has a trigger level of 10 then the task will not be + * unblocked until the stream buffer contains at least 10 bytes or the task's + * block time expires. If a reading task's block time expires before the + * trigger level is reached then the task will still receive however many bytes + * are actually available. Setting a trigger level of 0 will result in a + * trigger level of 1 being used. It is not valid to specify a trigger level + * that is greater than the buffer size. + * + * @return If NULL is returned, then the stream buffer cannot be created + * because there is insufficient heap memory available for FreeRTOS to allocate + * the stream buffer data structures and storage area. A non-NULL value being + * returned indicates that the stream buffer has been created successfully - + * the returned value should be stored as the handle to the created stream + * buffer. + * + * Example use: +
+
+void vAFunction( void )
+{
+StreamBufferHandle_t xStreamBuffer;
+const size_t xStreamBufferSizeBytes = 100, xTriggerLevel = 10;
+
+    // Create a stream buffer that can hold 100 bytes.  The memory used to hold
+    // both the stream buffer structure and the data in the stream buffer is
+    // allocated dynamically.
+    xStreamBuffer = xStreamBufferCreate( xStreamBufferSizeBytes, xTriggerLevel );
+
+    if( xStreamBuffer == NULL )
+    {
+        // There was not enough heap memory space available to create the
+        // stream buffer.
+    }
+    else
+    {
+        // The stream buffer was created successfully and can now be used.
+    }
+}
+
+ * \defgroup xStreamBufferCreate xStreamBufferCreate + * \ingroup StreamBufferManagement + */ +#define xStreamBufferCreate( xBufferSizeBytes, xTriggerLevelBytes ) xStreamBufferGenericCreate( xBufferSizeBytes, xTriggerLevelBytes, pdFALSE ) + +/** + * stream_buffer.h + * +
+StreamBufferHandle_t xStreamBufferCreateStatic( size_t xBufferSizeBytes,
+                                                size_t xTriggerLevelBytes,
+                                                uint8_t *pucStreamBufferStorageArea,
+                                                StaticStreamBuffer_t *pxStaticStreamBuffer );
+
+ * Creates a new stream buffer using statically allocated memory. See + * xStreamBufferCreate() for a version that uses dynamically allocated memory. + * + * configSUPPORT_STATIC_ALLOCATION must be set to 1 in FreeRTOSConfig.h for + * xStreamBufferCreateStatic() to be available. + * + * @param xBufferSizeBytes The size, in bytes, of the buffer pointed to by the + * pucStreamBufferStorageArea parameter. + * + * @param xTriggerLevelBytes The number of bytes that must be in the stream + * buffer before a task that is blocked on the stream buffer to wait for data is + * moved out of the blocked state. For example, if a task is blocked on a read + * of an empty stream buffer that has a trigger level of 1 then the task will be + * unblocked when a single byte is written to the buffer or the task's block + * time expires. As another example, if a task is blocked on a read of an empty + * stream buffer that has a trigger level of 10 then the task will not be + * unblocked until the stream buffer contains at least 10 bytes or the task's + * block time expires. If a reading task's block time expires before the + * trigger level is reached then the task will still receive however many bytes + * are actually available. Setting a trigger level of 0 will result in a + * trigger level of 1 being used. It is not valid to specify a trigger level + * that is greater than the buffer size. + * + * @param pucStreamBufferStorageArea Must point to a uint8_t array that is at + * least xBufferSizeBytes + 1 big. This is the array to which streams are + * copied when they are written to the stream buffer. + * + * @param pxStaticStreamBuffer Must point to a variable of type + * StaticStreamBuffer_t, which will be used to hold the stream buffer's data + * structure. + * + * @return If the stream buffer is created successfully then a handle to the + * created stream buffer is returned. If either pucStreamBufferStorageArea or + * pxStaticstreamBuffer are NULL then NULL is returned. + * + * Example use: +
+
+// Used to dimension the array used to hold the streams.  The available space
+// will actually be one less than this, so 999.
+#define STORAGE_SIZE_BYTES 1000
+
+// Defines the memory that will actually hold the streams within the stream
+// buffer.
+static uint8_t ucStorageBuffer[ STORAGE_SIZE_BYTES ];
+
+// The variable used to hold the stream buffer structure.
+StaticStreamBuffer_t xStreamBufferStruct;
+
+void MyFunction( void )
+{
+StreamBufferHandle_t xStreamBuffer;
+const size_t xTriggerLevel = 1;
+
+    xStreamBuffer = xStreamBufferCreateStatic( sizeof( ucBufferStorage ),
+                                               xTriggerLevel,
+                                               ucBufferStorage,
+                                               &xStreamBufferStruct );
+
+    // As neither the pucStreamBufferStorageArea or pxStaticStreamBuffer
+    // parameters were NULL, xStreamBuffer will not be NULL, and can be used to
+    // reference the created stream buffer in other stream buffer API calls.
+
+    // Other code that uses the stream buffer can go here.
+}
+
+
+ * \defgroup xStreamBufferCreateStatic xStreamBufferCreateStatic + * \ingroup StreamBufferManagement + */ +#define xStreamBufferCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pucStreamBufferStorageArea, pxStaticStreamBuffer ) xStreamBufferGenericCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pdFALSE, pucStreamBufferStorageArea, pxStaticStreamBuffer ) + +/** + * stream_buffer.h + * +
+size_t xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
+                          const void *pvTxData,
+                          size_t xDataLengthBytes,
+                          TickType_t xTicksToWait );
+
+ * + * Sends bytes to a stream buffer. The bytes are copied into the stream buffer. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xStreamBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xStreamBufferRead()) inside a critical section and set the receive + * block time to 0. + * + * Use xStreamBufferSend() to write to a stream buffer from a task. Use + * xStreamBufferSendFromISR() to write to a stream buffer from an interrupt + * service routine (ISR). + * + * @param xStreamBuffer The handle of the stream buffer to which a stream is + * being sent. + * + * @param pvTxData A pointer to the buffer that holds the bytes to be copied + * into the stream buffer. + * + * @param xDataLengthBytes The maximum number of bytes to copy from pvTxData + * into the stream buffer. + * + * @param xTicksToWait The maximum amount of time the task should remain in the + * Blocked state to wait for enough space to become available in the stream + * buffer, should the stream buffer contain too little space to hold the + * another xDataLengthBytes bytes. The block time is specified in tick periods, + * so the absolute time it represents is dependent on the tick frequency. The + * macro pdMS_TO_TICKS() can be used to convert a time specified in milliseconds + * into a time specified in ticks. Setting xTicksToWait to portMAX_DELAY will + * cause the task to wait indefinitely (without timing out), provided + * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h. If a task times out + * before it can write all xDataLengthBytes into the buffer it will still write + * as many bytes as possible. A task does not use any CPU time when it is in + * the blocked state. + * + * @return The number of bytes written to the stream buffer. If a task times + * out before it can write all xDataLengthBytes into the buffer it will still + * write as many bytes as possible. + * + * Example use: +
+void vAFunction( StreamBufferHandle_t xStreamBuffer )
+{
+size_t xBytesSent;
+uint8_t ucArrayToSend[] = { 0, 1, 2, 3 };
+char *pcStringToSend = "String to send";
+const TickType_t x100ms = pdMS_TO_TICKS( 100 );
+
+    // Send an array to the stream buffer, blocking for a maximum of 100ms to
+    // wait for enough space to be available in the stream buffer.
+    xBytesSent = xStreamBufferSend( xStreamBuffer, ( void * ) ucArrayToSend, sizeof( ucArrayToSend ), x100ms );
+
+    if( xBytesSent != sizeof( ucArrayToSend ) )
+    {
+        // The call to xStreamBufferSend() times out before there was enough
+        // space in the buffer for the data to be written, but it did
+        // successfully write xBytesSent bytes.
+    }
+
+    // Send the string to the stream buffer.  Return immediately if there is not
+    // enough space in the buffer.
+    xBytesSent = xStreamBufferSend( xStreamBuffer, ( void * ) pcStringToSend, strlen( pcStringToSend ), 0 );
+
+    if( xBytesSent != strlen( pcStringToSend ) )
+    {
+        // The entire string could not be added to the stream buffer because
+        // there was not enough free space in the buffer, but xBytesSent bytes
+        // were sent.  Could try again to send the remaining bytes.
+    }
+}
+
+ * \defgroup xStreamBufferSend xStreamBufferSend + * \ingroup StreamBufferManagement + */ +size_t xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, + const void *pvTxData, + size_t xDataLengthBytes, + TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+size_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,
+                                 const void *pvTxData,
+                                 size_t xDataLengthBytes,
+                                 BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * Interrupt safe version of the API function that sends a stream of bytes to + * the stream buffer. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xStreamBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xStreamBufferRead()) inside a critical section and set the receive + * block time to 0. + * + * Use xStreamBufferSend() to write to a stream buffer from a task. Use + * xStreamBufferSendFromISR() to write to a stream buffer from an interrupt + * service routine (ISR). + * + * @param xStreamBuffer The handle of the stream buffer to which a stream is + * being sent. + * + * @param pvTxData A pointer to the data that is to be copied into the stream + * buffer. + * + * @param xDataLengthBytes The maximum number of bytes to copy from pvTxData + * into the stream buffer. + * + * @param pxHigherPriorityTaskWoken It is possible that a stream buffer will + * have a task blocked on it waiting for data. Calling + * xStreamBufferSendFromISR() can make data available, and so cause a task that + * was waiting for data to leave the Blocked state. If calling + * xStreamBufferSendFromISR() causes a task to leave the Blocked state, and the + * unblocked task has a priority higher than the currently executing task (the + * task that was interrupted), then, internally, xStreamBufferSendFromISR() + * will set *pxHigherPriorityTaskWoken to pdTRUE. If + * xStreamBufferSendFromISR() sets this value to pdTRUE, then normally a + * context switch should be performed before the interrupt is exited. This will + * ensure that the interrupt returns directly to the highest priority Ready + * state task. *pxHigherPriorityTaskWoken should be set to pdFALSE before it + * is passed into the function. See the example code below for an example. + * + * @return The number of bytes actually written to the stream buffer, which will + * be less than xDataLengthBytes if the stream buffer didn't have enough free + * space for all the bytes to be written. + * + * Example use: +
+// A stream buffer that has already been created.
+StreamBufferHandle_t xStreamBuffer;
+
+void vAnInterruptServiceRoutine( void )
+{
+size_t xBytesSent;
+char *pcStringToSend = "String to send";
+BaseType_t xHigherPriorityTaskWoken = pdFALSE; // Initialised to pdFALSE.
+
+    // Attempt to send the string to the stream buffer.
+    xBytesSent = xStreamBufferSendFromISR( xStreamBuffer,
+                                           ( void * ) pcStringToSend,
+                                           strlen( pcStringToSend ),
+                                           &xHigherPriorityTaskWoken );
+
+    if( xBytesSent != strlen( pcStringToSend ) )
+    {
+        // There was not enough free space in the stream buffer for the entire
+        // string to be written, ut xBytesSent bytes were written.
+    }
+
+    // If xHigherPriorityTaskWoken was set to pdTRUE inside
+    // xStreamBufferSendFromISR() then a task that has a priority above the
+    // priority of the currently executing task was unblocked and a context
+    // switch should be performed to ensure the ISR returns to the unblocked
+    // task.  In most FreeRTOS ports this is done by simply passing
+    // xHigherPriorityTaskWoken into taskYIELD_FROM_ISR(), which will test the
+    // variables value, and perform the context switch if necessary.  Check the
+    // documentation for the port in use for port specific instructions.
+    taskYIELD_FROM_ISR( xHigherPriorityTaskWoken );
+}
+
+ * \defgroup xStreamBufferSendFromISR xStreamBufferSendFromISR + * \ingroup StreamBufferManagement + */ +size_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer, + const void *pvTxData, + size_t xDataLengthBytes, + BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+size_t xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
+                             void *pvRxData,
+                             size_t xBufferLengthBytes,
+                             TickType_t xTicksToWait );
+
+ * + * Receives bytes from a stream buffer. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xStreamBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xStreamBufferRead()) inside a critical section and set the receive + * block time to 0. + * + * Use xStreamBufferReceive() to read from a stream buffer from a task. Use + * xStreamBufferReceiveFromISR() to read from a stream buffer from an + * interrupt service routine (ISR). + * + * @param xStreamBuffer The handle of the stream buffer from which bytes are to + * be received. + * + * @param pvRxData A pointer to the buffer into which the received bytes will be + * copied. + * + * @param xBufferLengthBytes The length of the buffer pointed to by the + * pvRxData parameter. This sets the maximum number of bytes to receive in one + * call. xStreamBufferReceive will return as many bytes as possible up to a + * maximum set by xBufferLengthBytes. + * + * @param xTicksToWait The maximum amount of time the task should remain in the + * Blocked state to wait for data to become available if the stream buffer is + * empty. xStreamBufferReceive() will return immediately if xTicksToWait is + * zero. The block time is specified in tick periods, so the absolute time it + * represents is dependent on the tick frequency. The macro pdMS_TO_TICKS() can + * be used to convert a time specified in milliseconds into a time specified in + * ticks. Setting xTicksToWait to portMAX_DELAY will cause the task to wait + * indefinitely (without timing out), provided INCLUDE_vTaskSuspend is set to 1 + * in FreeRTOSConfig.h. A task does not use any CPU time when it is in the + * Blocked state. + * + * @return The number of bytes actually read from the stream buffer, which will + * be less than xBufferLengthBytes if the call to xStreamBufferReceive() timed + * out before xBufferLengthBytes were available. + * + * Example use: +
+void vAFunction( StreamBuffer_t xStreamBuffer )
+{
+uint8_t ucRxData[ 20 ];
+size_t xReceivedBytes;
+const TickType_t xBlockTime = pdMS_TO_TICKS( 20 );
+
+    // Receive up to another sizeof( ucRxData ) bytes from the stream buffer.
+    // Wait in the Blocked state (so not using any CPU processing time) for a
+    // maximum of 100ms for the full sizeof( ucRxData ) number of bytes to be
+    // available.
+    xReceivedBytes = xStreamBufferReceive( xStreamBuffer,
+                                           ( void * ) ucRxData,
+                                           sizeof( ucRxData ),
+                                           xBlockTime );
+
+    if( xReceivedBytes > 0 )
+    {
+        // A ucRxData contains another xRecievedBytes bytes of data, which can
+        // be processed here....
+    }
+}
+
+ * \defgroup xStreamBufferReceive xStreamBufferReceive + * \ingroup StreamBufferManagement + */ +size_t xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer, + void *pvRxData, + size_t xBufferLengthBytes, + TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+size_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,
+                                    void *pvRxData,
+                                    size_t xBufferLengthBytes,
+                                    BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * An interrupt safe version of the API function that receives bytes from a + * stream buffer. + * + * Use xStreamBufferReceive() to read bytes from a stream buffer from a task. + * Use xStreamBufferReceiveFromISR() to read bytes from a stream buffer from an + * interrupt service routine (ISR). + * + * @param xStreamBuffer The handle of the stream buffer from which a stream + * is being received. + * + * @param pvRxData A pointer to the buffer into which the received bytes are + * copied. + * + * @param xBufferLengthBytes The length of the buffer pointed to by the + * pvRxData parameter. This sets the maximum number of bytes to receive in one + * call. xStreamBufferReceive will return as many bytes as possible up to a + * maximum set by xBufferLengthBytes. + * + * @param pxHigherPriorityTaskWoken It is possible that a stream buffer will + * have a task blocked on it waiting for space to become available. Calling + * xStreamBufferReceiveFromISR() can make space available, and so cause a task + * that is waiting for space to leave the Blocked state. If calling + * xStreamBufferReceiveFromISR() causes a task to leave the Blocked state, and + * the unblocked task has a priority higher than the currently executing task + * (the task that was interrupted), then, internally, + * xStreamBufferReceiveFromISR() will set *pxHigherPriorityTaskWoken to pdTRUE. + * If xStreamBufferReceiveFromISR() sets this value to pdTRUE, then normally a + * context switch should be performed before the interrupt is exited. That will + * ensure the interrupt returns directly to the highest priority Ready state + * task. *pxHigherPriorityTaskWoken should be set to pdFALSE before it is + * passed into the function. See the code example below for an example. + * + * @return The number of bytes read from the stream buffer, if any. + * + * Example use: +
+// A stream buffer that has already been created.
+StreamBuffer_t xStreamBuffer;
+
+void vAnInterruptServiceRoutine( void )
+{
+uint8_t ucRxData[ 20 ];
+size_t xReceivedBytes;
+BaseType_t xHigherPriorityTaskWoken = pdFALSE;  // Initialised to pdFALSE.
+
+    // Receive the next stream from the stream buffer.
+    xReceivedBytes = xStreamBufferReceiveFromISR( xStreamBuffer,
+                                                  ( void * ) ucRxData,
+                                                  sizeof( ucRxData ),
+                                                  &xHigherPriorityTaskWoken );
+
+    if( xReceivedBytes > 0 )
+    {
+        // ucRxData contains xReceivedBytes read from the stream buffer.
+        // Process the stream here....
+    }
+
+    // If xHigherPriorityTaskWoken was set to pdTRUE inside
+    // xStreamBufferReceiveFromISR() then a task that has a priority above the
+    // priority of the currently executing task was unblocked and a context
+    // switch should be performed to ensure the ISR returns to the unblocked
+    // task.  In most FreeRTOS ports this is done by simply passing
+    // xHigherPriorityTaskWoken into taskYIELD_FROM_ISR(), which will test the
+    // variables value, and perform the context switch if necessary.  Check the
+    // documentation for the port in use for port specific instructions.
+    taskYIELD_FROM_ISR( xHigherPriorityTaskWoken );
+}
+
+ * \defgroup xStreamBufferReceiveFromISR xStreamBufferReceiveFromISR + * \ingroup StreamBufferManagement + */ +size_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer, + void *pvRxData, + size_t xBufferLengthBytes, + BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer );
+
+ * + * Deletes a stream buffer that was previously created using a call to + * xStreamBufferCreate() or xStreamBufferCreateStatic(). If the stream + * buffer was created using dynamic memory (that is, by xStreamBufferCreate()), + * then the allocated memory is freed. + * + * A stream buffer handle must not be used after the stream buffer has been + * deleted. + * + * @param xStreamBuffer The handle of the stream buffer to be deleted. + * + * \defgroup vStreamBufferDelete vStreamBufferDelete + * \ingroup StreamBufferManagement + */ +void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+BaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer );
+
+ * + * Queries a stream buffer to see if it is full. A stream buffer is full if it + * does not have any free space, and therefore cannot accept any more data. + * + * @param xStreamBuffer The handle of the stream buffer being queried. + * + * @return If the stream buffer is full then pdTRUE is returned. Otherwise + * pdFALSE is returned. + * + * \defgroup xStreamBufferIsFull xStreamBufferIsFull + * \ingroup StreamBufferManagement + */ +BaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+BaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer );
+
+ * + * Queries a stream buffer to see if it is empty. A stream buffer is empty if + * it does not contain any data. + * + * @param xStreamBuffer The handle of the stream buffer being queried. + * + * @return If the stream buffer is empty then pdTRUE is returned. Otherwise + * pdFALSE is returned. + * + * \defgroup xStreamBufferIsEmpty xStreamBufferIsEmpty + * \ingroup StreamBufferManagement + */ +BaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+BaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer );
+
+ * + * Resets a stream buffer to its initial, empty, state. Any data that was in + * the stream buffer is discarded. A stream buffer can only be reset if there + * are no tasks blocked waiting to either send to or receive from the stream + * buffer. + * + * @param xStreamBuffer The handle of the stream buffer being reset. + * + * @return If the stream buffer is reset then pdPASS is returned. If there was + * a task blocked waiting to send to or read from the stream buffer then the + * stream buffer is not reset and pdFAIL is returned. + * + * \defgroup xStreamBufferReset xStreamBufferReset + * \ingroup StreamBufferManagement + */ +BaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+size_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer );
+
+ * + * Queries a stream buffer to see how much free space it contains, which is + * equal to the amount of data that can be sent to the stream buffer before it + * is full. + * + * @param xStreamBuffer The handle of the stream buffer being queried. + * + * @return The number of bytes that can be written to the stream buffer before + * the stream buffer would be full. + * + * \defgroup xStreamBufferSpacesAvailable xStreamBufferSpacesAvailable + * \ingroup StreamBufferManagement + */ +size_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+size_t xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer );
+
+ * + * Queries a stream buffer to see how much data it contains, which is equal to + * the number of bytes that can be read from the stream buffer before the stream + * buffer would be empty. + * + * @param xStreamBuffer The handle of the stream buffer being queried. + * + * @return The number of bytes that can be read from the stream buffer before + * the stream buffer would be empty. + * + * \defgroup xStreamBufferBytesAvailable xStreamBufferBytesAvailable + * \ingroup StreamBufferManagement + */ +size_t xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+BaseType_t xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, size_t xTriggerLevel );
+
+ * + * A stream buffer's trigger level is the number of bytes that must be in the + * stream buffer before a task that is blocked on the stream buffer to + * wait for data is moved out of the blocked state. For example, if a task is + * blocked on a read of an empty stream buffer that has a trigger level of 1 + * then the task will be unblocked when a single byte is written to the buffer + * or the task's block time expires. As another example, if a task is blocked + * on a read of an empty stream buffer that has a trigger level of 10 then the + * task will not be unblocked until the stream buffer contains at least 10 bytes + * or the task's block time expires. If a reading task's block time expires + * before the trigger level is reached then the task will still receive however + * many bytes are actually available. Setting a trigger level of 0 will result + * in a trigger level of 1 being used. It is not valid to specify a trigger + * level that is greater than the buffer size. + * + * A trigger level is set when the stream buffer is created, and can be modified + * using xStreamBufferSetTriggerLevel(). + * + * @param xStreamBuffer The handle of the stream buffer being updated. + * + * @param xTriggerLevel The new trigger level for the stream buffer. + * + * @return If xTriggerLevel was less than or equal to the stream buffer's length + * then the trigger level will be updated and pdTRUE is returned. Otherwise + * pdFALSE is returned. + * + * \defgroup xStreamBufferSetTriggerLevel xStreamBufferSetTriggerLevel + * \ingroup StreamBufferManagement + */ +BaseType_t xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, size_t xTriggerLevel ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+BaseType_t xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * For advanced users only. + * + * The sbSEND_COMPLETED() macro is called from within the FreeRTOS APIs when + * data is sent to a message buffer or stream buffer. If there was a task that + * was blocked on the message or stream buffer waiting for data to arrive then + * the sbSEND_COMPLETED() macro sends a notification to the task to remove it + * from the Blocked state. xStreamBufferSendCompletedFromISR() does the same + * thing. It is provided to enable application writers to implement their own + * version of sbSEND_COMPLETED(), and MUST NOT BE USED AT ANY OTHER TIME. + * + * See the example implemented in FreeRTOS/Demo/Minimal/MessageBufferAMP.c for + * additional information. + * + * @param xStreamBuffer The handle of the stream buffer to which data was + * written. + * + * @param pxHigherPriorityTaskWoken *pxHigherPriorityTaskWoken should be + * initialised to pdFALSE before it is passed into + * xStreamBufferSendCompletedFromISR(). If calling + * xStreamBufferSendCompletedFromISR() removes a task from the Blocked state, + * and the task has a priority above the priority of the currently running task, + * then *pxHigherPriorityTaskWoken will get set to pdTRUE indicating that a + * context switch should be performed before exiting the ISR. + * + * @return If a task was removed from the Blocked state then pdTRUE is returned. + * Otherwise pdFALSE is returned. + * + * \defgroup xStreamBufferSendCompletedFromISR xStreamBufferSendCompletedFromISR + * \ingroup StreamBufferManagement + */ +BaseType_t xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+BaseType_t xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * For advanced users only. + * + * The sbRECEIVE_COMPLETED() macro is called from within the FreeRTOS APIs when + * data is read out of a message buffer or stream buffer. If there was a task + * that was blocked on the message or stream buffer waiting for data to arrive + * then the sbRECEIVE_COMPLETED() macro sends a notification to the task to + * remove it from the Blocked state. xStreamBufferReceiveCompletedFromISR() + * does the same thing. It is provided to enable application writers to + * implement their own version of sbRECEIVE_COMPLETED(), and MUST NOT BE USED AT + * ANY OTHER TIME. + * + * See the example implemented in FreeRTOS/Demo/Minimal/MessageBufferAMP.c for + * additional information. + * + * @param xStreamBuffer The handle of the stream buffer from which data was + * read. + * + * @param pxHigherPriorityTaskWoken *pxHigherPriorityTaskWoken should be + * initialised to pdFALSE before it is passed into + * xStreamBufferReceiveCompletedFromISR(). If calling + * xStreamBufferReceiveCompletedFromISR() removes a task from the Blocked state, + * and the task has a priority above the priority of the currently running task, + * then *pxHigherPriorityTaskWoken will get set to pdTRUE indicating that a + * context switch should be performed before exiting the ISR. + * + * @return If a task was removed from the Blocked state then pdTRUE is returned. + * Otherwise pdFALSE is returned. + * + * \defgroup xStreamBufferReceiveCompletedFromISR xStreamBufferReceiveCompletedFromISR + * \ingroup StreamBufferManagement + */ +BaseType_t xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + +/* Functions below here are not part of the public API. */ +StreamBufferHandle_t xStreamBufferGenericCreate( size_t xBufferSizeBytes, + size_t xTriggerLevelBytes, + BaseType_t xIsMessageBuffer ) PRIVILEGED_FUNCTION; + +StreamBufferHandle_t xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes, + size_t xTriggerLevelBytes, + BaseType_t xIsMessageBuffer, + uint8_t * const pucStreamBufferStorageArea, + StaticStreamBuffer_t * const pxStaticStreamBuffer ) PRIVILEGED_FUNCTION; + +size_t xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +#if( configUSE_TRACE_FACILITY == 1 ) + void vStreamBufferSetStreamBufferNumber( StreamBufferHandle_t xStreamBuffer, UBaseType_t uxStreamBufferNumber ) PRIVILEGED_FUNCTION; + UBaseType_t uxStreamBufferGetStreamBufferNumber( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + uint8_t ucStreamBufferGetStreamBufferType( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; +#endif + +#if defined( __cplusplus ) +} +#endif + +#endif /* !defined( STREAM_BUFFER_H ) */ diff --git a/components/freertos/include/task.h b/components/freertos/include/task.h new file mode 100644 index 00000000..db3c4ebe --- /dev/null +++ b/components/freertos/include/task.h @@ -0,0 +1,2434 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +#ifndef INC_TASK_H +#define INC_TASK_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h must appear in source files before include task.h" +#endif + +#include "list.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/*----------------------------------------------------------- + * MACROS AND DEFINITIONS + *----------------------------------------------------------*/ + +#define tskKERNEL_VERSION_NUMBER "V10.2.1" +#define tskKERNEL_VERSION_MAJOR 10 +#define tskKERNEL_VERSION_MINOR 2 +#define tskKERNEL_VERSION_BUILD 1 + +/* MPU region parameters passed in ulParameters + * of MemoryRegion_t struct. */ +#define tskMPU_REGION_READ_ONLY ( 1UL << 0UL ) +#define tskMPU_REGION_READ_WRITE ( 1UL << 1UL ) +#define tskMPU_REGION_EXECUTE_NEVER ( 1UL << 2UL ) +#define tskMPU_REGION_NORMAL_MEMORY ( 1UL << 3UL ) +#define tskMPU_REGION_DEVICE_MEMORY ( 1UL << 4UL ) + +/** + * task. h + * + * Type by which tasks are referenced. For example, a call to xTaskCreate + * returns (via a pointer parameter) an TaskHandle_t variable that can then + * be used as a parameter to vTaskDelete to delete the task. + * + * \defgroup TaskHandle_t TaskHandle_t + * \ingroup Tasks + */ +struct tskTaskControlBlock; /* The old naming convention is used to prevent breaking kernel aware debuggers. */ +typedef struct tskTaskControlBlock* TaskHandle_t; + +/* + * Defines the prototype to which the application task hook function must + * conform. + */ +typedef BaseType_t (*TaskHookFunction_t)( void * ); + +/* Task states returned by eTaskGetState. */ +typedef enum +{ + eRunning = 0, /* A task is querying the state of itself, so must be running. */ + eReady, /* The task being queried is in a read or pending ready list. */ + eBlocked, /* The task being queried is in the Blocked state. */ + eSuspended, /* The task being queried is in the Suspended state, or is in the Blocked state with an infinite time out. */ + eDeleted, /* The task being queried has been deleted, but its TCB has not yet been freed. */ + eInvalid /* Used as an 'invalid state' value. */ +} eTaskState; + +/* Actions that can be performed when vTaskNotify() is called. */ +typedef enum +{ + eNoAction = 0, /* Notify the task without updating its notify value. */ + eSetBits, /* Set bits in the task's notification value. */ + eIncrement, /* Increment the task's notification value. */ + eSetValueWithOverwrite, /* Set the task's notification value to a specific value even if the previous value has not yet been read by the task. */ + eSetValueWithoutOverwrite /* Set the task's notification value if the previous value has been read by the task. */ +} eNotifyAction; + +/* + * Used internally only. + */ +typedef struct xTIME_OUT +{ + BaseType_t xOverflowCount; + TickType_t xTimeOnEntering; +} TimeOut_t; + +/* + * Defines the memory ranges allocated to the task when an MPU is used. + */ +typedef struct xMEMORY_REGION +{ + void *pvBaseAddress; + uint32_t ulLengthInBytes; + uint32_t ulParameters; +} MemoryRegion_t; + +/* + * Parameters required to create an MPU protected task. + */ +typedef struct xTASK_PARAMETERS +{ + TaskFunction_t pvTaskCode; + const char * const pcName; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + configSTACK_DEPTH_TYPE usStackDepth; + void *pvParameters; + UBaseType_t uxPriority; + StackType_t *puxStackBuffer; + MemoryRegion_t xRegions[ portNUM_CONFIGURABLE_REGIONS ]; + #if ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + StaticTask_t * const pxTaskBuffer; + #endif +} TaskParameters_t; + +/* Used with the uxTaskGetSystemState() function to return the state of each task +in the system. */ +typedef struct xTASK_STATUS +{ + TaskHandle_t xHandle; /* The handle of the task to which the rest of the information in the structure relates. */ + const char *pcTaskName; /* A pointer to the task's name. This value will be invalid if the task was deleted since the structure was populated! */ /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + UBaseType_t xTaskNumber; /* A number unique to the task. */ + eTaskState eCurrentState; /* The state in which the task existed when the structure was populated. */ + UBaseType_t uxCurrentPriority; /* The priority at which the task was running (may be inherited) when the structure was populated. */ + UBaseType_t uxBasePriority; /* The priority to which the task will return if the task's current priority has been inherited to avoid unbounded priority inversion when obtaining a mutex. Only valid if configUSE_MUTEXES is defined as 1 in FreeRTOSConfig.h. */ + uint32_t ulRunTimeCounter; /* The total run time allocated to the task so far, as defined by the run time stats clock. See http://www.freertos.org/rtos-run-time-stats.html. Only valid when configGENERATE_RUN_TIME_STATS is defined as 1 in FreeRTOSConfig.h. */ + StackType_t *pxStackBase; /* Points to the lowest address of the task's stack area. */ + configSTACK_DEPTH_TYPE usStackHighWaterMark; /* The minimum amount of stack space that has remained for the task since the task was created. The closer this value is to zero the closer the task has come to overflowing its stack. */ +} TaskStatus_t; + +/* Possible return values for eTaskConfirmSleepModeStatus(). */ +typedef enum +{ + eAbortSleep = 0, /* A task has been made ready or a context switch pended since portSUPPORESS_TICKS_AND_SLEEP() was called - abort entering a sleep mode. */ + eStandardSleep, /* Enter a sleep mode that will not last any longer than the expected idle time. */ + eNoTasksWaitingTimeout /* No tasks are waiting for a timeout so it is safe to enter a sleep mode that can only be exited by an external interrupt. */ +} eSleepModeStatus; + +/** + * Defines the priority used by the idle task. This must not be modified. + * + * \ingroup TaskUtils + */ +#define tskIDLE_PRIORITY ( ( UBaseType_t ) 0U ) + +/** + * task. h + * + * Macro for forcing a context switch. + * + * \defgroup taskYIELD taskYIELD + * \ingroup SchedulerControl + */ +#define taskYIELD() portYIELD() + +/** + * task. h + * + * Macro to mark the start of a critical code region. Preemptive context + * switches cannot occur when in a critical region. + * + * NOTE: This may alter the stack (depending on the portable implementation) + * so must be used with care! + * + * \defgroup taskENTER_CRITICAL taskENTER_CRITICAL + * \ingroup SchedulerControl + */ +#define taskENTER_CRITICAL() portENTER_CRITICAL() +#define taskENTER_CRITICAL_FROM_ISR() portSET_INTERRUPT_MASK_FROM_ISR() + +/** + * task. h + * + * Macro to mark the end of a critical code region. Preemptive context + * switches cannot occur when in a critical region. + * + * NOTE: This may alter the stack (depending on the portable implementation) + * so must be used with care! + * + * \defgroup taskEXIT_CRITICAL taskEXIT_CRITICAL + * \ingroup SchedulerControl + */ +#define taskEXIT_CRITICAL() portEXIT_CRITICAL() +#define taskEXIT_CRITICAL_FROM_ISR( x ) portCLEAR_INTERRUPT_MASK_FROM_ISR( x ) +/** + * task. h + * + * Macro to disable all maskable interrupts. + * + * \defgroup taskDISABLE_INTERRUPTS taskDISABLE_INTERRUPTS + * \ingroup SchedulerControl + */ +#define taskDISABLE_INTERRUPTS() portDISABLE_INTERRUPTS() + +/** + * task. h + * + * Macro to enable microcontroller interrupts. + * + * \defgroup taskENABLE_INTERRUPTS taskENABLE_INTERRUPTS + * \ingroup SchedulerControl + */ +#define taskENABLE_INTERRUPTS() portENABLE_INTERRUPTS() + +/* Definitions returned by xTaskGetSchedulerState(). taskSCHEDULER_SUSPENDED is +0 to generate more optimal code when configASSERT() is defined as the constant +is used in assert() statements. */ +#define taskSCHEDULER_SUSPENDED ( ( BaseType_t ) 0 ) +#define taskSCHEDULER_NOT_STARTED ( ( BaseType_t ) 1 ) +#define taskSCHEDULER_RUNNING ( ( BaseType_t ) 2 ) + + +/*----------------------------------------------------------- + * TASK CREATION API + *----------------------------------------------------------*/ + +/** + * task. h + *
+ BaseType_t xTaskCreate(
+							  TaskFunction_t pvTaskCode,
+							  const char * const pcName,
+							  configSTACK_DEPTH_TYPE usStackDepth,
+							  void *pvParameters,
+							  UBaseType_t uxPriority,
+							  TaskHandle_t *pvCreatedTask
+						  );
+ * + * Create a new task and add it to the list of tasks that are ready to run. + * + * Internally, within the FreeRTOS implementation, tasks use two blocks of + * memory. The first block is used to hold the task's data structures. The + * second block is used by the task as its stack. If a task is created using + * xTaskCreate() then both blocks of memory are automatically dynamically + * allocated inside the xTaskCreate() function. (see + * http://www.freertos.org/a00111.html). If a task is created using + * xTaskCreateStatic() then the application writer must provide the required + * memory. xTaskCreateStatic() therefore allows a task to be created without + * using any dynamic memory allocation. + * + * See xTaskCreateStatic() for a version that does not use any dynamic memory + * allocation. + * + * xTaskCreate() can only be used to create a task that has unrestricted + * access to the entire microcontroller memory map. Systems that include MPU + * support can alternatively create an MPU constrained task using + * xTaskCreateRestricted(). + * + * @param pvTaskCode Pointer to the task entry function. Tasks + * must be implemented to never return (i.e. continuous loop). + * + * @param pcName A descriptive name for the task. This is mainly used to + * facilitate debugging. Max length defined by configMAX_TASK_NAME_LEN - default + * is 16. + * + * @param usStackDepth The size of the task stack specified as the number of + * variables the stack can hold - not the number of bytes. For example, if + * the stack is 16 bits wide and usStackDepth is defined as 100, 200 bytes + * will be allocated for stack storage. + * + * @param pvParameters Pointer that will be used as the parameter for the task + * being created. + * + * @param uxPriority The priority at which the task should run. Systems that + * include MPU support can optionally create tasks in a privileged (system) + * mode by setting bit portPRIVILEGE_BIT of the priority parameter. For + * example, to create a privileged task at priority 2 the uxPriority parameter + * should be set to ( 2 | portPRIVILEGE_BIT ). + * + * @param pvCreatedTask Used to pass back a handle by which the created task + * can be referenced. + * + * @return pdPASS if the task was successfully created and added to a ready + * list, otherwise an error code defined in the file projdefs.h + * + * Example usage: +
+ // Task to be created.
+ void vTaskCode( void * pvParameters )
+ {
+	 for( ;; )
+	 {
+		 // Task code goes here.
+	 }
+ }
+
+ // Function that creates a task.
+ void vOtherFunction( void )
+ {
+ static uint8_t ucParameterToPass;
+ TaskHandle_t xHandle = NULL;
+
+	 // Create the task, storing the handle.  Note that the passed parameter ucParameterToPass
+	 // must exist for the lifetime of the task, so in this case is declared static.  If it was just an
+	 // an automatic stack variable it might no longer exist, or at least have been corrupted, by the time
+	 // the new task attempts to access it.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, &ucParameterToPass, tskIDLE_PRIORITY, &xHandle );
+     configASSERT( xHandle );
+
+	 // Use the handle to delete the task.
+     if( xHandle != NULL )
+     {
+	     vTaskDelete( xHandle );
+     }
+ }
+   
+ * \defgroup xTaskCreate xTaskCreate + * \ingroup Tasks + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, + const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const configSTACK_DEPTH_TYPE usStackDepth, + void * const pvParameters, + UBaseType_t uxPriority, + TaskHandle_t * const pxCreatedTask ) PRIVILEGED_FUNCTION; +#endif + +/** + * task. h + *
+ TaskHandle_t xTaskCreateStatic( TaskFunction_t pvTaskCode,
+								 const char * const pcName,
+								 uint32_t ulStackDepth,
+								 void *pvParameters,
+								 UBaseType_t uxPriority,
+								 StackType_t *pxStackBuffer,
+								 StaticTask_t *pxTaskBuffer );
+ * + * Create a new task and add it to the list of tasks that are ready to run. + * + * Internally, within the FreeRTOS implementation, tasks use two blocks of + * memory. The first block is used to hold the task's data structures. The + * second block is used by the task as its stack. If a task is created using + * xTaskCreate() then both blocks of memory are automatically dynamically + * allocated inside the xTaskCreate() function. (see + * http://www.freertos.org/a00111.html). If a task is created using + * xTaskCreateStatic() then the application writer must provide the required + * memory. xTaskCreateStatic() therefore allows a task to be created without + * using any dynamic memory allocation. + * + * @param pvTaskCode Pointer to the task entry function. Tasks + * must be implemented to never return (i.e. continuous loop). + * + * @param pcName A descriptive name for the task. This is mainly used to + * facilitate debugging. The maximum length of the string is defined by + * configMAX_TASK_NAME_LEN in FreeRTOSConfig.h. + * + * @param ulStackDepth The size of the task stack specified as the number of + * variables the stack can hold - not the number of bytes. For example, if + * the stack is 32-bits wide and ulStackDepth is defined as 100 then 400 bytes + * will be allocated for stack storage. + * + * @param pvParameters Pointer that will be used as the parameter for the task + * being created. + * + * @param uxPriority The priority at which the task will run. + * + * @param pxStackBuffer Must point to a StackType_t array that has at least + * ulStackDepth indexes - the array will then be used as the task's stack, + * removing the need for the stack to be allocated dynamically. + * + * @param pxTaskBuffer Must point to a variable of type StaticTask_t, which will + * then be used to hold the task's data structures, removing the need for the + * memory to be allocated dynamically. + * + * @return If neither pxStackBuffer or pxTaskBuffer are NULL, then the task will + * be created and a handle to the created task is returned. If either + * pxStackBuffer or pxTaskBuffer are NULL then the task will not be created and + * NULL is returned. + * + * Example usage: +
+
+    // Dimensions the buffer that the task being created will use as its stack.
+    // NOTE:  This is the number of words the stack will hold, not the number of
+    // bytes.  For example, if each stack item is 32-bits, and this is set to 100,
+    // then 400 bytes (100 * 32-bits) will be allocated.
+    #define STACK_SIZE 200
+
+    // Structure that will hold the TCB of the task being created.
+    StaticTask_t xTaskBuffer;
+
+    // Buffer that the task being created will use as its stack.  Note this is
+    // an array of StackType_t variables.  The size of StackType_t is dependent on
+    // the RTOS port.
+    StackType_t xStack[ STACK_SIZE ];
+
+    // Function that implements the task being created.
+    void vTaskCode( void * pvParameters )
+    {
+        // The parameter value is expected to be 1 as 1 is passed in the
+        // pvParameters value in the call to xTaskCreateStatic().
+        configASSERT( ( uint32_t ) pvParameters == 1UL );
+
+        for( ;; )
+        {
+            // Task code goes here.
+        }
+    }
+
+    // Function that creates a task.
+    void vOtherFunction( void )
+    {
+        TaskHandle_t xHandle = NULL;
+
+        // Create the task without using any dynamic memory allocation.
+        xHandle = xTaskCreateStatic(
+                      vTaskCode,       // Function that implements the task.
+                      "NAME",          // Text name for the task.
+                      STACK_SIZE,      // Stack size in words, not bytes.
+                      ( void * ) 1,    // Parameter passed into the task.
+                      tskIDLE_PRIORITY,// Priority at which the task is created.
+                      xStack,          // Array to use as the task's stack.
+                      &xTaskBuffer );  // Variable to hold the task's data structure.
+
+        // puxStackBuffer and pxTaskBuffer were not NULL, so the task will have
+        // been created, and xHandle will be the task's handle.  Use the handle
+        // to suspend the task.
+        vTaskSuspend( xHandle );
+    }
+   
+ * \defgroup xTaskCreateStatic xTaskCreateStatic + * \ingroup Tasks + */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode, + const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const uint32_t ulStackDepth, + void * const pvParameters, + UBaseType_t uxPriority, + StackType_t * const puxStackBuffer, + StaticTask_t * const pxTaskBuffer ) PRIVILEGED_FUNCTION; +#endif /* configSUPPORT_STATIC_ALLOCATION */ + +/** + * task. h + *
+ BaseType_t xTaskCreateRestricted( TaskParameters_t *pxTaskDefinition, TaskHandle_t *pxCreatedTask );
+ * + * Only available when configSUPPORT_DYNAMIC_ALLOCATION is set to 1. + * + * xTaskCreateRestricted() should only be used in systems that include an MPU + * implementation. + * + * Create a new task and add it to the list of tasks that are ready to run. + * The function parameters define the memory regions and associated access + * permissions allocated to the task. + * + * See xTaskCreateRestrictedStatic() for a version that does not use any + * dynamic memory allocation. + * + * @param pxTaskDefinition Pointer to a structure that contains a member + * for each of the normal xTaskCreate() parameters (see the xTaskCreate() API + * documentation) plus an optional stack buffer and the memory region + * definitions. + * + * @param pxCreatedTask Used to pass back a handle by which the created task + * can be referenced. + * + * @return pdPASS if the task was successfully created and added to a ready + * list, otherwise an error code defined in the file projdefs.h + * + * Example usage: +
+// Create an TaskParameters_t structure that defines the task to be created.
+static const TaskParameters_t xCheckTaskParameters =
+{
+	vATask,		// pvTaskCode - the function that implements the task.
+	"ATask",	// pcName - just a text name for the task to assist debugging.
+	100,		// usStackDepth	- the stack size DEFINED IN WORDS.
+	NULL,		// pvParameters - passed into the task function as the function parameters.
+	( 1UL | portPRIVILEGE_BIT ),// uxPriority - task priority, set the portPRIVILEGE_BIT if the task should run in a privileged state.
+	cStackBuffer,// puxStackBuffer - the buffer to be used as the task stack.
+
+	// xRegions - Allocate up to three separate memory regions for access by
+	// the task, with appropriate access permissions.  Different processors have
+	// different memory alignment requirements - refer to the FreeRTOS documentation
+	// for full information.
+	{
+		// Base address					Length	Parameters
+        { cReadWriteArray,				32,		portMPU_REGION_READ_WRITE },
+        { cReadOnlyArray,				32,		portMPU_REGION_READ_ONLY },
+        { cPrivilegedOnlyAccessArray,	128,	portMPU_REGION_PRIVILEGED_READ_WRITE }
+	}
+};
+
+int main( void )
+{
+TaskHandle_t xHandle;
+
+	// Create a task from the const structure defined above.  The task handle
+	// is requested (the second parameter is not NULL) but in this case just for
+	// demonstration purposes as its not actually used.
+	xTaskCreateRestricted( &xRegTest1Parameters, &xHandle );
+
+	// Start the scheduler.
+	vTaskStartScheduler();
+
+	// Will only get here if there was insufficient memory to create the idle
+	// and/or timer task.
+	for( ;; );
+}
+   
+ * \defgroup xTaskCreateRestricted xTaskCreateRestricted + * \ingroup Tasks + */ +#if( portUSING_MPU_WRAPPERS == 1 ) + BaseType_t xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) PRIVILEGED_FUNCTION; +#endif + +/** + * task. h + *
+ BaseType_t xTaskCreateRestrictedStatic( TaskParameters_t *pxTaskDefinition, TaskHandle_t *pxCreatedTask );
+ * + * Only available when configSUPPORT_STATIC_ALLOCATION is set to 1. + * + * xTaskCreateRestrictedStatic() should only be used in systems that include an + * MPU implementation. + * + * Internally, within the FreeRTOS implementation, tasks use two blocks of + * memory. The first block is used to hold the task's data structures. The + * second block is used by the task as its stack. If a task is created using + * xTaskCreateRestricted() then the stack is provided by the application writer, + * and the memory used to hold the task's data structure is automatically + * dynamically allocated inside the xTaskCreateRestricted() function. If a task + * is created using xTaskCreateRestrictedStatic() then the application writer + * must provide the memory used to hold the task's data structures too. + * xTaskCreateRestrictedStatic() therefore allows a memory protected task to be + * created without using any dynamic memory allocation. + * + * @param pxTaskDefinition Pointer to a structure that contains a member + * for each of the normal xTaskCreate() parameters (see the xTaskCreate() API + * documentation) plus an optional stack buffer and the memory region + * definitions. If configSUPPORT_STATIC_ALLOCATION is set to 1 the structure + * contains an additional member, which is used to point to a variable of type + * StaticTask_t - which is then used to hold the task's data structure. + * + * @param pxCreatedTask Used to pass back a handle by which the created task + * can be referenced. + * + * @return pdPASS if the task was successfully created and added to a ready + * list, otherwise an error code defined in the file projdefs.h + * + * Example usage: +
+// Create an TaskParameters_t structure that defines the task to be created.
+// The StaticTask_t variable is only included in the structure when
+// configSUPPORT_STATIC_ALLOCATION is set to 1.  The PRIVILEGED_DATA macro can
+// be used to force the variable into the RTOS kernel's privileged data area.
+static PRIVILEGED_DATA StaticTask_t xTaskBuffer;
+static const TaskParameters_t xCheckTaskParameters =
+{
+	vATask,		// pvTaskCode - the function that implements the task.
+	"ATask",	// pcName - just a text name for the task to assist debugging.
+	100,		// usStackDepth	- the stack size DEFINED IN WORDS.
+	NULL,		// pvParameters - passed into the task function as the function parameters.
+	( 1UL | portPRIVILEGE_BIT ),// uxPriority - task priority, set the portPRIVILEGE_BIT if the task should run in a privileged state.
+	cStackBuffer,// puxStackBuffer - the buffer to be used as the task stack.
+
+	// xRegions - Allocate up to three separate memory regions for access by
+	// the task, with appropriate access permissions.  Different processors have
+	// different memory alignment requirements - refer to the FreeRTOS documentation
+	// for full information.
+	{
+		// Base address					Length	Parameters
+        { cReadWriteArray,				32,		portMPU_REGION_READ_WRITE },
+        { cReadOnlyArray,				32,		portMPU_REGION_READ_ONLY },
+        { cPrivilegedOnlyAccessArray,	128,	portMPU_REGION_PRIVILEGED_READ_WRITE }
+	}
+
+	&xTaskBuffer; // Holds the task's data structure.
+};
+
+int main( void )
+{
+TaskHandle_t xHandle;
+
+	// Create a task from the const structure defined above.  The task handle
+	// is requested (the second parameter is not NULL) but in this case just for
+	// demonstration purposes as its not actually used.
+	xTaskCreateRestricted( &xRegTest1Parameters, &xHandle );
+
+	// Start the scheduler.
+	vTaskStartScheduler();
+
+	// Will only get here if there was insufficient memory to create the idle
+	// and/or timer task.
+	for( ;; );
+}
+   
+ * \defgroup xTaskCreateRestrictedStatic xTaskCreateRestrictedStatic + * \ingroup Tasks + */ +#if( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + BaseType_t xTaskCreateRestrictedStatic( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) PRIVILEGED_FUNCTION; +#endif + +/** + * task. h + *
+ void vTaskAllocateMPURegions( TaskHandle_t xTask, const MemoryRegion_t * const pxRegions );
+ * + * Memory regions are assigned to a restricted task when the task is created by + * a call to xTaskCreateRestricted(). These regions can be redefined using + * vTaskAllocateMPURegions(). + * + * @param xTask The handle of the task being updated. + * + * @param xRegions A pointer to an MemoryRegion_t structure that contains the + * new memory region definitions. + * + * Example usage: +
+// Define an array of MemoryRegion_t structures that configures an MPU region
+// allowing read/write access for 1024 bytes starting at the beginning of the
+// ucOneKByte array.  The other two of the maximum 3 definable regions are
+// unused so set to zero.
+static const MemoryRegion_t xAltRegions[ portNUM_CONFIGURABLE_REGIONS ] =
+{
+	// Base address		Length		Parameters
+	{ ucOneKByte,		1024,		portMPU_REGION_READ_WRITE },
+	{ 0,				0,			0 },
+	{ 0,				0,			0 }
+};
+
+void vATask( void *pvParameters )
+{
+	// This task was created such that it has access to certain regions of
+	// memory as defined by the MPU configuration.  At some point it is
+	// desired that these MPU regions are replaced with that defined in the
+	// xAltRegions const struct above.  Use a call to vTaskAllocateMPURegions()
+	// for this purpose.  NULL is used as the task handle to indicate that this
+	// function should modify the MPU regions of the calling task.
+	vTaskAllocateMPURegions( NULL, xAltRegions );
+
+	// Now the task can continue its function, but from this point on can only
+	// access its stack and the ucOneKByte array (unless any other statically
+	// defined or shared regions have been declared elsewhere).
+}
+   
+ * \defgroup xTaskCreateRestricted xTaskCreateRestricted + * \ingroup Tasks + */ +void vTaskAllocateMPURegions( TaskHandle_t xTask, const MemoryRegion_t * const pxRegions ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskDelete( TaskHandle_t xTask );
+ * + * INCLUDE_vTaskDelete must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Remove a task from the RTOS real time kernel's management. The task being + * deleted will be removed from all ready, blocked, suspended and event lists. + * + * NOTE: The idle task is responsible for freeing the kernel allocated + * memory from tasks that have been deleted. It is therefore important that + * the idle task is not starved of microcontroller processing time if your + * application makes any calls to vTaskDelete (). Memory allocated by the + * task code is not automatically freed, and should be freed before the task + * is deleted. + * + * See the demo application file death.c for sample code that utilises + * vTaskDelete (). + * + * @param xTask The handle of the task to be deleted. Passing NULL will + * cause the calling task to be deleted. + * + * Example usage: +
+ void vOtherFunction( void )
+ {
+ TaskHandle_t xHandle;
+
+	 // Create the task, storing the handle.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+
+	 // Use the handle to delete the task.
+	 vTaskDelete( xHandle );
+ }
+   
+ * \defgroup vTaskDelete vTaskDelete + * \ingroup Tasks + */ +void vTaskDelete( TaskHandle_t xTaskToDelete ) PRIVILEGED_FUNCTION; + +/*----------------------------------------------------------- + * TASK CONTROL API + *----------------------------------------------------------*/ + +/** + * task. h + *
void vTaskDelay( const TickType_t xTicksToDelay );
+ * + * Delay a task for a given number of ticks. The actual time that the + * task remains blocked depends on the tick rate. The constant + * portTICK_PERIOD_MS can be used to calculate real time from the tick + * rate - with the resolution of one tick period. + * + * INCLUDE_vTaskDelay must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * + * vTaskDelay() specifies a time at which the task wishes to unblock relative to + * the time at which vTaskDelay() is called. For example, specifying a block + * period of 100 ticks will cause the task to unblock 100 ticks after + * vTaskDelay() is called. vTaskDelay() does not therefore provide a good method + * of controlling the frequency of a periodic task as the path taken through the + * code, as well as other task and interrupt activity, will effect the frequency + * at which vTaskDelay() gets called and therefore the time at which the task + * next executes. See vTaskDelayUntil() for an alternative API function designed + * to facilitate fixed frequency execution. It does this by specifying an + * absolute time (rather than a relative time) at which the calling task should + * unblock. + * + * @param xTicksToDelay The amount of time, in tick periods, that + * the calling task should block. + * + * Example usage: + + void vTaskFunction( void * pvParameters ) + { + // Block for 500ms. + const TickType_t xDelay = 500 / portTICK_PERIOD_MS; + + for( ;; ) + { + // Simply toggle the LED every 500ms, blocking between each toggle. + vToggleLED(); + vTaskDelay( xDelay ); + } + } + + * \defgroup vTaskDelay vTaskDelay + * \ingroup TaskCtrl + */ +void vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskDelayUntil( TickType_t *pxPreviousWakeTime, const TickType_t xTimeIncrement );
+ * + * INCLUDE_vTaskDelayUntil must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Delay a task until a specified time. This function can be used by periodic + * tasks to ensure a constant execution frequency. + * + * This function differs from vTaskDelay () in one important aspect: vTaskDelay () will + * cause a task to block for the specified number of ticks from the time vTaskDelay () is + * called. It is therefore difficult to use vTaskDelay () by itself to generate a fixed + * execution frequency as the time between a task starting to execute and that task + * calling vTaskDelay () may not be fixed [the task may take a different path though the + * code between calls, or may get interrupted or preempted a different number of times + * each time it executes]. + * + * Whereas vTaskDelay () specifies a wake time relative to the time at which the function + * is called, vTaskDelayUntil () specifies the absolute (exact) time at which it wishes to + * unblock. + * + * The constant portTICK_PERIOD_MS can be used to calculate real time from the tick + * rate - with the resolution of one tick period. + * + * @param pxPreviousWakeTime Pointer to a variable that holds the time at which the + * task was last unblocked. The variable must be initialised with the current time + * prior to its first use (see the example below). Following this the variable is + * automatically updated within vTaskDelayUntil (). + * + * @param xTimeIncrement The cycle time period. The task will be unblocked at + * time *pxPreviousWakeTime + xTimeIncrement. Calling vTaskDelayUntil with the + * same xTimeIncrement parameter value will cause the task to execute with + * a fixed interface period. + * + * Example usage: +
+ // Perform an action every 10 ticks.
+ void vTaskFunction( void * pvParameters )
+ {
+ TickType_t xLastWakeTime;
+ const TickType_t xFrequency = 10;
+
+	 // Initialise the xLastWakeTime variable with the current time.
+	 xLastWakeTime = xTaskGetTickCount ();
+	 for( ;; )
+	 {
+		 // Wait for the next cycle.
+		 vTaskDelayUntil( &xLastWakeTime, xFrequency );
+
+		 // Perform action here.
+	 }
+ }
+   
+ * \defgroup vTaskDelayUntil vTaskDelayUntil + * \ingroup TaskCtrl + */ +void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
BaseType_t xTaskAbortDelay( TaskHandle_t xTask );
+ * + * INCLUDE_xTaskAbortDelay must be defined as 1 in FreeRTOSConfig.h for this + * function to be available. + * + * A task will enter the Blocked state when it is waiting for an event. The + * event it is waiting for can be a temporal event (waiting for a time), such + * as when vTaskDelay() is called, or an event on an object, such as when + * xQueueReceive() or ulTaskNotifyTake() is called. If the handle of a task + * that is in the Blocked state is used in a call to xTaskAbortDelay() then the + * task will leave the Blocked state, and return from whichever function call + * placed the task into the Blocked state. + * + * @param xTask The handle of the task to remove from the Blocked state. + * + * @return If the task referenced by xTask was not in the Blocked state then + * pdFAIL is returned. Otherwise pdPASS is returned. + * + * \defgroup xTaskAbortDelay xTaskAbortDelay + * \ingroup TaskCtrl + */ +BaseType_t xTaskAbortDelay( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask );
+ * + * INCLUDE_uxTaskPriorityGet must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Obtain the priority of any task. + * + * @param xTask Handle of the task to be queried. Passing a NULL + * handle results in the priority of the calling task being returned. + * + * @return The priority of xTask. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ TaskHandle_t xHandle;
+
+	 // Create a task, storing the handle.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+
+	 // ...
+
+	 // Use the handle to obtain the priority of the created task.
+	 // It was created with tskIDLE_PRIORITY, but may have changed
+	 // it itself.
+	 if( uxTaskPriorityGet( xHandle ) != tskIDLE_PRIORITY )
+	 {
+		 // The task has changed it's priority.
+	 }
+
+	 // ...
+
+	 // Is our priority higher than the created task?
+	 if( uxTaskPriorityGet( xHandle ) < uxTaskPriorityGet( NULL ) )
+	 {
+		 // Our priority (obtained using NULL handle) is higher.
+	 }
+ }
+   
+ * \defgroup uxTaskPriorityGet uxTaskPriorityGet + * \ingroup TaskCtrl + */ +UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
UBaseType_t uxTaskPriorityGetFromISR( const TaskHandle_t xTask );
+ * + * A version of uxTaskPriorityGet() that can be used from an ISR. + */ +UBaseType_t uxTaskPriorityGetFromISR( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
eTaskState eTaskGetState( TaskHandle_t xTask );
+ * + * INCLUDE_eTaskGetState must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Obtain the state of any task. States are encoded by the eTaskState + * enumerated type. + * + * @param xTask Handle of the task to be queried. + * + * @return The state of xTask at the time the function was called. Note the + * state of the task might change between the function being called, and the + * functions return value being tested by the calling task. + */ +eTaskState eTaskGetState( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState );
+ * + * configUSE_TRACE_FACILITY must be defined as 1 for this function to be + * available. See the configuration section for more information. + * + * Populates a TaskStatus_t structure with information about a task. + * + * @param xTask Handle of the task being queried. If xTask is NULL then + * information will be returned about the calling task. + * + * @param pxTaskStatus A pointer to the TaskStatus_t structure that will be + * filled with information about the task referenced by the handle passed using + * the xTask parameter. + * + * @xGetFreeStackSpace The TaskStatus_t structure contains a member to report + * the stack high water mark of the task being queried. Calculating the stack + * high water mark takes a relatively long time, and can make the system + * temporarily unresponsive - so the xGetFreeStackSpace parameter is provided to + * allow the high water mark checking to be skipped. The high watermark value + * will only be written to the TaskStatus_t structure if xGetFreeStackSpace is + * not set to pdFALSE; + * + * @param eState The TaskStatus_t structure contains a member to report the + * state of the task being queried. Obtaining the task state is not as fast as + * a simple assignment - so the eState parameter is provided to allow the state + * information to be omitted from the TaskStatus_t structure. To obtain state + * information then set eState to eInvalid - otherwise the value passed in + * eState will be reported as the task state in the TaskStatus_t structure. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ TaskHandle_t xHandle;
+ TaskStatus_t xTaskDetails;
+
+    // Obtain the handle of a task from its name.
+    xHandle = xTaskGetHandle( "Task_Name" );
+
+    // Check the handle is not NULL.
+    configASSERT( xHandle );
+
+    // Use the handle to obtain further information about the task.
+    vTaskGetInfo( xHandle,
+                  &xTaskDetails,
+                  pdTRUE, // Include the high water mark in xTaskDetails.
+                  eInvalid ); // Include the task state in xTaskDetails.
+ }
+   
+ * \defgroup vTaskGetInfo vTaskGetInfo + * \ingroup TaskCtrl + */ +void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority );
+ * + * INCLUDE_vTaskPrioritySet must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Set the priority of any task. + * + * A context switch will occur before the function returns if the priority + * being set is higher than the currently executing task. + * + * @param xTask Handle to the task for which the priority is being set. + * Passing a NULL handle results in the priority of the calling task being set. + * + * @param uxNewPriority The priority to which the task will be set. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ TaskHandle_t xHandle;
+
+	 // Create a task, storing the handle.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+
+	 // ...
+
+	 // Use the handle to raise the priority of the created task.
+	 vTaskPrioritySet( xHandle, tskIDLE_PRIORITY + 1 );
+
+	 // ...
+
+	 // Use a NULL handle to raise our priority to the same value.
+	 vTaskPrioritySet( NULL, tskIDLE_PRIORITY + 1 );
+ }
+   
+ * \defgroup vTaskPrioritySet vTaskPrioritySet + * \ingroup TaskCtrl + */ +void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskSuspend( TaskHandle_t xTaskToSuspend );
+ * + * INCLUDE_vTaskSuspend must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Suspend any task. When suspended a task will never get any microcontroller + * processing time, no matter what its priority. + * + * Calls to vTaskSuspend are not accumulative - + * i.e. calling vTaskSuspend () twice on the same task still only requires one + * call to vTaskResume () to ready the suspended task. + * + * @param xTaskToSuspend Handle to the task being suspended. Passing a NULL + * handle will cause the calling task to be suspended. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ TaskHandle_t xHandle;
+
+	 // Create a task, storing the handle.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+
+	 // ...
+
+	 // Use the handle to suspend the created task.
+	 vTaskSuspend( xHandle );
+
+	 // ...
+
+	 // The created task will not run during this period, unless
+	 // another task calls vTaskResume( xHandle ).
+
+	 //...
+
+
+	 // Suspend ourselves.
+	 vTaskSuspend( NULL );
+
+	 // We cannot get here unless another task calls vTaskResume
+	 // with our handle as the parameter.
+ }
+   
+ * \defgroup vTaskSuspend vTaskSuspend + * \ingroup TaskCtrl + */ +void vTaskSuspend( TaskHandle_t xTaskToSuspend ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskResume( TaskHandle_t xTaskToResume );
+ * + * INCLUDE_vTaskSuspend must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Resumes a suspended task. + * + * A task that has been suspended by one or more calls to vTaskSuspend () + * will be made available for running again by a single call to + * vTaskResume (). + * + * @param xTaskToResume Handle to the task being readied. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ TaskHandle_t xHandle;
+
+	 // Create a task, storing the handle.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+
+	 // ...
+
+	 // Use the handle to suspend the created task.
+	 vTaskSuspend( xHandle );
+
+	 // ...
+
+	 // The created task will not run during this period, unless
+	 // another task calls vTaskResume( xHandle ).
+
+	 //...
+
+
+	 // Resume the suspended task ourselves.
+	 vTaskResume( xHandle );
+
+	 // The created task will once again get microcontroller processing
+	 // time in accordance with its priority within the system.
+ }
+   
+ * \defgroup vTaskResume vTaskResume + * \ingroup TaskCtrl + */ +void vTaskResume( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void xTaskResumeFromISR( TaskHandle_t xTaskToResume );
+ * + * INCLUDE_xTaskResumeFromISR must be defined as 1 for this function to be + * available. See the configuration section for more information. + * + * An implementation of vTaskResume() that can be called from within an ISR. + * + * A task that has been suspended by one or more calls to vTaskSuspend () + * will be made available for running again by a single call to + * xTaskResumeFromISR (). + * + * xTaskResumeFromISR() should not be used to synchronise a task with an + * interrupt if there is a chance that the interrupt could arrive prior to the + * task being suspended - as this can lead to interrupts being missed. Use of a + * semaphore as a synchronisation mechanism would avoid this eventuality. + * + * @param xTaskToResume Handle to the task being readied. + * + * @return pdTRUE if resuming the task should result in a context switch, + * otherwise pdFALSE. This is used by the ISR to determine if a context switch + * may be required following the ISR. + * + * \defgroup vTaskResumeFromISR vTaskResumeFromISR + * \ingroup TaskCtrl + */ +BaseType_t xTaskResumeFromISR( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION; + +/*----------------------------------------------------------- + * SCHEDULER CONTROL + *----------------------------------------------------------*/ + +/** + * task. h + *
void vTaskStartScheduler( void );
+ * + * Starts the real time kernel tick processing. After calling the kernel + * has control over which tasks are executed and when. + * + * See the demo application file main.c for an example of creating + * tasks and starting the kernel. + * + * Example usage: +
+ void vAFunction( void )
+ {
+	 // Create at least one task before starting the kernel.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
+
+	 // Start the real time kernel with preemption.
+	 vTaskStartScheduler ();
+
+	 // Will not get here unless a task calls vTaskEndScheduler ()
+ }
+   
+ * + * \defgroup vTaskStartScheduler vTaskStartScheduler + * \ingroup SchedulerControl + */ +void vTaskStartScheduler( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskEndScheduler( void );
+ * + * NOTE: At the time of writing only the x86 real mode port, which runs on a PC + * in place of DOS, implements this function. + * + * Stops the real time kernel tick. All created tasks will be automatically + * deleted and multitasking (either preemptive or cooperative) will + * stop. Execution then resumes from the point where vTaskStartScheduler () + * was called, as if vTaskStartScheduler () had just returned. + * + * See the demo application file main. c in the demo/PC directory for an + * example that uses vTaskEndScheduler (). + * + * vTaskEndScheduler () requires an exit function to be defined within the + * portable layer (see vPortEndScheduler () in port. c for the PC port). This + * performs hardware specific operations such as stopping the kernel tick. + * + * vTaskEndScheduler () will cause all of the resources allocated by the + * kernel to be freed - but will not free resources allocated by application + * tasks. + * + * Example usage: +
+ void vTaskCode( void * pvParameters )
+ {
+	 for( ;; )
+	 {
+		 // Task code goes here.
+
+		 // At some point we want to end the real time kernel processing
+		 // so call ...
+		 vTaskEndScheduler ();
+	 }
+ }
+
+ void vAFunction( void )
+ {
+	 // Create at least one task before starting the kernel.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
+
+	 // Start the real time kernel with preemption.
+	 vTaskStartScheduler ();
+
+	 // Will only get here when the vTaskCode () task has called
+	 // vTaskEndScheduler ().  When we get here we are back to single task
+	 // execution.
+ }
+   
+ * + * \defgroup vTaskEndScheduler vTaskEndScheduler + * \ingroup SchedulerControl + */ +void vTaskEndScheduler( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskSuspendAll( void );
+ * + * Suspends the scheduler without disabling interrupts. Context switches will + * not occur while the scheduler is suspended. + * + * After calling vTaskSuspendAll () the calling task will continue to execute + * without risk of being swapped out until a call to xTaskResumeAll () has been + * made. + * + * API functions that have the potential to cause a context switch (for example, + * vTaskDelayUntil(), xQueueSend(), etc.) must not be called while the scheduler + * is suspended. + * + * Example usage: +
+ void vTask1( void * pvParameters )
+ {
+	 for( ;; )
+	 {
+		 // Task code goes here.
+
+		 // ...
+
+		 // At some point the task wants to perform a long operation during
+		 // which it does not want to get swapped out.  It cannot use
+		 // taskENTER_CRITICAL ()/taskEXIT_CRITICAL () as the length of the
+		 // operation may cause interrupts to be missed - including the
+		 // ticks.
+
+		 // Prevent the real time kernel swapping out the task.
+		 vTaskSuspendAll ();
+
+		 // Perform the operation here.  There is no need to use critical
+		 // sections as we have all the microcontroller processing time.
+		 // During this time interrupts will still operate and the kernel
+		 // tick count will be maintained.
+
+		 // ...
+
+		 // The operation is complete.  Restart the kernel.
+		 xTaskResumeAll ();
+	 }
+ }
+   
+ * \defgroup vTaskSuspendAll vTaskSuspendAll + * \ingroup SchedulerControl + */ +void vTaskSuspendAll( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
BaseType_t xTaskResumeAll( void );
+ * + * Resumes scheduler activity after it was suspended by a call to + * vTaskSuspendAll(). + * + * xTaskResumeAll() only resumes the scheduler. It does not unsuspend tasks + * that were previously suspended by a call to vTaskSuspend(). + * + * @return If resuming the scheduler caused a context switch then pdTRUE is + * returned, otherwise pdFALSE is returned. + * + * Example usage: +
+ void vTask1( void * pvParameters )
+ {
+	 for( ;; )
+	 {
+		 // Task code goes here.
+
+		 // ...
+
+		 // At some point the task wants to perform a long operation during
+		 // which it does not want to get swapped out.  It cannot use
+		 // taskENTER_CRITICAL ()/taskEXIT_CRITICAL () as the length of the
+		 // operation may cause interrupts to be missed - including the
+		 // ticks.
+
+		 // Prevent the real time kernel swapping out the task.
+		 vTaskSuspendAll ();
+
+		 // Perform the operation here.  There is no need to use critical
+		 // sections as we have all the microcontroller processing time.
+		 // During this time interrupts will still operate and the real
+		 // time kernel tick count will be maintained.
+
+		 // ...
+
+		 // The operation is complete.  Restart the kernel.  We want to force
+		 // a context switch - but there is no point if resuming the scheduler
+		 // caused a context switch already.
+		 if( !xTaskResumeAll () )
+		 {
+			  taskYIELD ();
+		 }
+	 }
+ }
+   
+ * \defgroup xTaskResumeAll xTaskResumeAll + * \ingroup SchedulerControl + */ +BaseType_t xTaskResumeAll( void ) PRIVILEGED_FUNCTION; + +/*----------------------------------------------------------- + * TASK UTILITIES + *----------------------------------------------------------*/ + +/** + * task. h + *
TickType_t xTaskGetTickCount( void );
+ * + * @return The count of ticks since vTaskStartScheduler was called. + * + * \defgroup xTaskGetTickCount xTaskGetTickCount + * \ingroup TaskUtils + */ +TickType_t xTaskGetTickCount( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
TickType_t xTaskGetTickCountFromISR( void );
+ * + * @return The count of ticks since vTaskStartScheduler was called. + * + * This is a version of xTaskGetTickCount() that is safe to be called from an + * ISR - provided that TickType_t is the natural word size of the + * microcontroller being used or interrupt nesting is either not supported or + * not being used. + * + * \defgroup xTaskGetTickCountFromISR xTaskGetTickCountFromISR + * \ingroup TaskUtils + */ +TickType_t xTaskGetTickCountFromISR( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
uint16_t uxTaskGetNumberOfTasks( void );
+ * + * @return The number of tasks that the real time kernel is currently managing. + * This includes all ready, blocked and suspended tasks. A task that + * has been deleted but not yet freed by the idle task will also be + * included in the count. + * + * \defgroup uxTaskGetNumberOfTasks uxTaskGetNumberOfTasks + * \ingroup TaskUtils + */ +UBaseType_t uxTaskGetNumberOfTasks( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
char *pcTaskGetName( TaskHandle_t xTaskToQuery );
+ * + * @return The text (human readable) name of the task referenced by the handle + * xTaskToQuery. A task can query its own name by either passing in its own + * handle, or by setting xTaskToQuery to NULL. + * + * \defgroup pcTaskGetName pcTaskGetName + * \ingroup TaskUtils + */ +char *pcTaskGetName( TaskHandle_t xTaskToQuery ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + +/** + * task. h + *
TaskHandle_t xTaskGetHandle( const char *pcNameToQuery );
+ * + * NOTE: This function takes a relatively long time to complete and should be + * used sparingly. + * + * @return The handle of the task that has the human readable name pcNameToQuery. + * NULL is returned if no matching name is found. INCLUDE_xTaskGetHandle + * must be set to 1 in FreeRTOSConfig.h for pcTaskGetHandle() to be available. + * + * \defgroup pcTaskGetHandle pcTaskGetHandle + * \ingroup TaskUtils + */ +TaskHandle_t xTaskGetHandle( const char *pcNameToQuery ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + +/** + * task.h + *
UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask );
+ * + * INCLUDE_uxTaskGetStackHighWaterMark must be set to 1 in FreeRTOSConfig.h for + * this function to be available. + * + * Returns the high water mark of the stack associated with xTask. That is, + * the minimum free stack space there has been (in words, so on a 32 bit machine + * a value of 1 means 4 bytes) since the task started. The smaller the returned + * number the closer the task has come to overflowing its stack. + * + * uxTaskGetStackHighWaterMark() and uxTaskGetStackHighWaterMark2() are the + * same except for their return type. Using configSTACK_DEPTH_TYPE allows the + * user to determine the return type. It gets around the problem of the value + * overflowing on 8-bit types without breaking backward compatibility for + * applications that expect an 8-bit return type. + * + * @param xTask Handle of the task associated with the stack to be checked. + * Set xTask to NULL to check the stack of the calling task. + * + * @return The smallest amount of free stack space there has been (in words, so + * actual spaces on the stack rather than bytes) since the task referenced by + * xTask was created. + */ +UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/** + * task.h + *
configSTACK_DEPTH_TYPE uxTaskGetStackHighWaterMark2( TaskHandle_t xTask );
+ * + * INCLUDE_uxTaskGetStackHighWaterMark2 must be set to 1 in FreeRTOSConfig.h for + * this function to be available. + * + * Returns the high water mark of the stack associated with xTask. That is, + * the minimum free stack space there has been (in words, so on a 32 bit machine + * a value of 1 means 4 bytes) since the task started. The smaller the returned + * number the closer the task has come to overflowing its stack. + * + * uxTaskGetStackHighWaterMark() and uxTaskGetStackHighWaterMark2() are the + * same except for their return type. Using configSTACK_DEPTH_TYPE allows the + * user to determine the return type. It gets around the problem of the value + * overflowing on 8-bit types without breaking backward compatibility for + * applications that expect an 8-bit return type. + * + * @param xTask Handle of the task associated with the stack to be checked. + * Set xTask to NULL to check the stack of the calling task. + * + * @return The smallest amount of free stack space there has been (in words, so + * actual spaces on the stack rather than bytes) since the task referenced by + * xTask was created. + */ +configSTACK_DEPTH_TYPE uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/* When using trace macros it is sometimes necessary to include task.h before +FreeRTOS.h. When this is done TaskHookFunction_t will not yet have been defined, +so the following two prototypes will cause a compilation error. This can be +fixed by simply guarding against the inclusion of these two prototypes unless +they are explicitly required by the configUSE_APPLICATION_TASK_TAG configuration +constant. */ +#ifdef configUSE_APPLICATION_TASK_TAG + #if configUSE_APPLICATION_TASK_TAG == 1 + /** + * task.h + *
void vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction );
+ * + * Sets pxHookFunction to be the task hook function used by the task xTask. + * Passing xTask as NULL has the effect of setting the calling tasks hook + * function. + */ + void vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction ) PRIVILEGED_FUNCTION; + + /** + * task.h + *
void xTaskGetApplicationTaskTag( TaskHandle_t xTask );
+ * + * Returns the pxHookFunction value assigned to the task xTask. Do not + * call from an interrupt service routine - call + * xTaskGetApplicationTaskTagFromISR() instead. + */ + TaskHookFunction_t xTaskGetApplicationTaskTag( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + + /** + * task.h + *
void xTaskGetApplicationTaskTagFromISR( TaskHandle_t xTask );
+ * + * Returns the pxHookFunction value assigned to the task xTask. Can + * be called from an interrupt service routine. + */ + TaskHookFunction_t xTaskGetApplicationTaskTagFromISR( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + #endif /* configUSE_APPLICATION_TASK_TAG ==1 */ +#endif /* ifdef configUSE_APPLICATION_TASK_TAG */ + +#if( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 ) + + /* Each task contains an array of pointers that is dimensioned by the + configNUM_THREAD_LOCAL_STORAGE_POINTERS setting in FreeRTOSConfig.h. The + kernel does not use the pointers itself, so the application writer can use + the pointers for any purpose they wish. The following two functions are + used to set and query a pointer respectively. */ + void vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, BaseType_t xIndex, void *pvValue ) PRIVILEGED_FUNCTION; + void *pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, BaseType_t xIndex ) PRIVILEGED_FUNCTION; + +#endif + +/** + * task.h + *
BaseType_t xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter );
+ * + * Calls the hook function associated with xTask. Passing xTask as NULL has + * the effect of calling the Running tasks (the calling task) hook function. + * + * pvParameter is passed to the hook function for the task to interpret as it + * wants. The return value is the value returned by the task hook function + * registered by the user. + */ +BaseType_t xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter ) PRIVILEGED_FUNCTION; + +/** + * xTaskGetIdleTaskHandle() is only available if + * INCLUDE_xTaskGetIdleTaskHandle is set to 1 in FreeRTOSConfig.h. + * + * Simply returns the handle of the idle task. It is not valid to call + * xTaskGetIdleTaskHandle() before the scheduler has been started. + */ +TaskHandle_t xTaskGetIdleTaskHandle( void ) PRIVILEGED_FUNCTION; + +/** + * configUSE_TRACE_FACILITY must be defined as 1 in FreeRTOSConfig.h for + * uxTaskGetSystemState() to be available. + * + * uxTaskGetSystemState() populates an TaskStatus_t structure for each task in + * the system. TaskStatus_t structures contain, among other things, members + * for the task handle, task name, task priority, task state, and total amount + * of run time consumed by the task. See the TaskStatus_t structure + * definition in this file for the full member list. + * + * NOTE: This function is intended for debugging use only as its use results in + * the scheduler remaining suspended for an extended period. + * + * @param pxTaskStatusArray A pointer to an array of TaskStatus_t structures. + * The array must contain at least one TaskStatus_t structure for each task + * that is under the control of the RTOS. The number of tasks under the control + * of the RTOS can be determined using the uxTaskGetNumberOfTasks() API function. + * + * @param uxArraySize The size of the array pointed to by the pxTaskStatusArray + * parameter. The size is specified as the number of indexes in the array, or + * the number of TaskStatus_t structures contained in the array, not by the + * number of bytes in the array. + * + * @param pulTotalRunTime If configGENERATE_RUN_TIME_STATS is set to 1 in + * FreeRTOSConfig.h then *pulTotalRunTime is set by uxTaskGetSystemState() to the + * total run time (as defined by the run time stats clock, see + * http://www.freertos.org/rtos-run-time-stats.html) since the target booted. + * pulTotalRunTime can be set to NULL to omit the total run time information. + * + * @return The number of TaskStatus_t structures that were populated by + * uxTaskGetSystemState(). This should equal the number returned by the + * uxTaskGetNumberOfTasks() API function, but will be zero if the value passed + * in the uxArraySize parameter was too small. + * + * Example usage: +
+    // This example demonstrates how a human readable table of run time stats
+	// information is generated from raw data provided by uxTaskGetSystemState().
+	// The human readable table is written to pcWriteBuffer
+	void vTaskGetRunTimeStats( char *pcWriteBuffer )
+	{
+	TaskStatus_t *pxTaskStatusArray;
+	volatile UBaseType_t uxArraySize, x;
+	uint32_t ulTotalRunTime, ulStatsAsPercentage;
+
+		// Make sure the write buffer does not contain a string.
+		*pcWriteBuffer = 0x00;
+
+		// Take a snapshot of the number of tasks in case it changes while this
+		// function is executing.
+		uxArraySize = uxTaskGetNumberOfTasks();
+
+		// Allocate a TaskStatus_t structure for each task.  An array could be
+		// allocated statically at compile time.
+		pxTaskStatusArray = pvPortMalloc( uxArraySize * sizeof( TaskStatus_t ) );
+
+		if( pxTaskStatusArray != NULL )
+		{
+			// Generate raw status information about each task.
+			uxArraySize = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, &ulTotalRunTime );
+
+			// For percentage calculations.
+			ulTotalRunTime /= 100UL;
+
+			// Avoid divide by zero errors.
+			if( ulTotalRunTime > 0 )
+			{
+				// For each populated position in the pxTaskStatusArray array,
+				// format the raw data as human readable ASCII data
+				for( x = 0; x < uxArraySize; x++ )
+				{
+					// What percentage of the total run time has the task used?
+					// This will always be rounded down to the nearest integer.
+					// ulTotalRunTimeDiv100 has already been divided by 100.
+					ulStatsAsPercentage = pxTaskStatusArray[ x ].ulRunTimeCounter / ulTotalRunTime;
+
+					if( ulStatsAsPercentage > 0UL )
+					{
+						sprintf( pcWriteBuffer, "%s\t\t%lu\t\t%lu%%\r\n", pxTaskStatusArray[ x ].pcTaskName, pxTaskStatusArray[ x ].ulRunTimeCounter, ulStatsAsPercentage );
+					}
+					else
+					{
+						// If the percentage is zero here then the task has
+						// consumed less than 1% of the total run time.
+						sprintf( pcWriteBuffer, "%s\t\t%lu\t\t<1%%\r\n", pxTaskStatusArray[ x ].pcTaskName, pxTaskStatusArray[ x ].ulRunTimeCounter );
+					}
+
+					pcWriteBuffer += strlen( ( char * ) pcWriteBuffer );
+				}
+			}
+
+			// The array is no longer needed, free the memory it consumes.
+			vPortFree( pxTaskStatusArray );
+		}
+	}
+	
+ */ +UBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskList( char *pcWriteBuffer );
+ * + * configUSE_TRACE_FACILITY and configUSE_STATS_FORMATTING_FUNCTIONS must + * both be defined as 1 for this function to be available. See the + * configuration section of the FreeRTOS.org website for more information. + * + * NOTE 1: This function will disable interrupts for its duration. It is + * not intended for normal application runtime use but as a debug aid. + * + * Lists all the current tasks, along with their current state and stack + * usage high water mark. + * + * Tasks are reported as blocked ('B'), ready ('R'), deleted ('D') or + * suspended ('S'). + * + * PLEASE NOTE: + * + * This function is provided for convenience only, and is used by many of the + * demo applications. Do not consider it to be part of the scheduler. + * + * vTaskList() calls uxTaskGetSystemState(), then formats part of the + * uxTaskGetSystemState() output into a human readable table that displays task + * names, states and stack usage. + * + * vTaskList() has a dependency on the sprintf() C library function that might + * bloat the code size, use a lot of stack, and provide different results on + * different platforms. An alternative, tiny, third party, and limited + * functionality implementation of sprintf() is provided in many of the + * FreeRTOS/Demo sub-directories in a file called printf-stdarg.c (note + * printf-stdarg.c does not provide a full snprintf() implementation!). + * + * It is recommended that production systems call uxTaskGetSystemState() + * directly to get access to raw stats data, rather than indirectly through a + * call to vTaskList(). + * + * @param pcWriteBuffer A buffer into which the above mentioned details + * will be written, in ASCII form. This buffer is assumed to be large + * enough to contain the generated report. Approximately 40 bytes per + * task should be sufficient. + * + * \defgroup vTaskList vTaskList + * \ingroup TaskUtils + */ +void vTaskList( char * pcWriteBuffer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + +/** + * task. h + *
void vTaskGetRunTimeStats( char *pcWriteBuffer );
+ * + * configGENERATE_RUN_TIME_STATS and configUSE_STATS_FORMATTING_FUNCTIONS + * must both be defined as 1 for this function to be available. The application + * must also then provide definitions for + * portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and portGET_RUN_TIME_COUNTER_VALUE() + * to configure a peripheral timer/counter and return the timers current count + * value respectively. The counter should be at least 10 times the frequency of + * the tick count. + * + * NOTE 1: This function will disable interrupts for its duration. It is + * not intended for normal application runtime use but as a debug aid. + * + * Setting configGENERATE_RUN_TIME_STATS to 1 will result in a total + * accumulated execution time being stored for each task. The resolution + * of the accumulated time value depends on the frequency of the timer + * configured by the portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() macro. + * Calling vTaskGetRunTimeStats() writes the total execution time of each + * task into a buffer, both as an absolute count value and as a percentage + * of the total system execution time. + * + * NOTE 2: + * + * This function is provided for convenience only, and is used by many of the + * demo applications. Do not consider it to be part of the scheduler. + * + * vTaskGetRunTimeStats() calls uxTaskGetSystemState(), then formats part of the + * uxTaskGetSystemState() output into a human readable table that displays the + * amount of time each task has spent in the Running state in both absolute and + * percentage terms. + * + * vTaskGetRunTimeStats() has a dependency on the sprintf() C library function + * that might bloat the code size, use a lot of stack, and provide different + * results on different platforms. An alternative, tiny, third party, and + * limited functionality implementation of sprintf() is provided in many of the + * FreeRTOS/Demo sub-directories in a file called printf-stdarg.c (note + * printf-stdarg.c does not provide a full snprintf() implementation!). + * + * It is recommended that production systems call uxTaskGetSystemState() directly + * to get access to raw stats data, rather than indirectly through a call to + * vTaskGetRunTimeStats(). + * + * @param pcWriteBuffer A buffer into which the execution times will be + * written, in ASCII form. This buffer is assumed to be large enough to + * contain the generated report. Approximately 40 bytes per task should + * be sufficient. + * + * \defgroup vTaskGetRunTimeStats vTaskGetRunTimeStats + * \ingroup TaskUtils + */ +void vTaskGetRunTimeStats( char *pcWriteBuffer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + +/** +* task. h +*
uint32_t ulTaskGetIdleRunTimeCounter( void );
+* +* configGENERATE_RUN_TIME_STATS and configUSE_STATS_FORMATTING_FUNCTIONS +* must both be defined as 1 for this function to be available. The application +* must also then provide definitions for +* portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and portGET_RUN_TIME_COUNTER_VALUE() +* to configure a peripheral timer/counter and return the timers current count +* value respectively. The counter should be at least 10 times the frequency of +* the tick count. +* +* Setting configGENERATE_RUN_TIME_STATS to 1 will result in a total +* accumulated execution time being stored for each task. The resolution +* of the accumulated time value depends on the frequency of the timer +* configured by the portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() macro. +* While uxTaskGetSystemState() and vTaskGetRunTimeStats() writes the total +* execution time of each task into a buffer, ulTaskGetIdleRunTimeCounter() +* returns the total execution time of just the idle task. +* +* @return The total run time of the idle task. This is the amount of time the +* idle task has actually been executing. The unit of time is dependent on the +* frequency configured using the portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and +* portGET_RUN_TIME_COUNTER_VALUE() macros. +* +* \defgroup ulTaskGetIdleRunTimeCounter ulTaskGetIdleRunTimeCounter +* \ingroup TaskUtils +*/ +uint32_t ulTaskGetIdleRunTimeCounter( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
BaseType_t xTaskNotify( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction );
+ * + * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this + * function to be available. + * + * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private + * "notification value", which is a 32-bit unsigned integer (uint32_t). + * + * Events can be sent to a task using an intermediary object. Examples of such + * objects are queues, semaphores, mutexes and event groups. Task notifications + * are a method of sending an event directly to a task without the need for such + * an intermediary object. + * + * A notification sent to a task can optionally perform an action, such as + * update, overwrite or increment the task's notification value. In that way + * task notifications can be used to send data to a task, or be used as light + * weight and fast binary or counting semaphores. + * + * A notification sent to a task will remain pending until it is cleared by the + * task calling xTaskNotifyWait() or ulTaskNotifyTake(). If the task was + * already in the Blocked state to wait for a notification when the notification + * arrives then the task will automatically be removed from the Blocked state + * (unblocked) and the notification cleared. + * + * A task can use xTaskNotifyWait() to [optionally] block to wait for a + * notification to be pending, or ulTaskNotifyTake() to [optionally] block + * to wait for its notification value to have a non-zero value. The task does + * not consume any CPU time while it is in the Blocked state. + * + * See http://www.FreeRTOS.org/RTOS-task-notifications.html for details. + * + * @param xTaskToNotify The handle of the task being notified. The handle to a + * task can be returned from the xTaskCreate() API function used to create the + * task, and the handle of the currently running task can be obtained by calling + * xTaskGetCurrentTaskHandle(). + * + * @param ulValue Data that can be sent with the notification. How the data is + * used depends on the value of the eAction parameter. + * + * @param eAction Specifies how the notification updates the task's notification + * value, if at all. Valid values for eAction are as follows: + * + * eSetBits - + * The task's notification value is bitwise ORed with ulValue. xTaskNofify() + * always returns pdPASS in this case. + * + * eIncrement - + * The task's notification value is incremented. ulValue is not used and + * xTaskNotify() always returns pdPASS in this case. + * + * eSetValueWithOverwrite - + * The task's notification value is set to the value of ulValue, even if the + * task being notified had not yet processed the previous notification (the + * task already had a notification pending). xTaskNotify() always returns + * pdPASS in this case. + * + * eSetValueWithoutOverwrite - + * If the task being notified did not already have a notification pending then + * the task's notification value is set to ulValue and xTaskNotify() will + * return pdPASS. If the task being notified already had a notification + * pending then no action is performed and pdFAIL is returned. + * + * eNoAction - + * The task receives a notification without its notification value being + * updated. ulValue is not used and xTaskNotify() always returns pdPASS in + * this case. + * + * pulPreviousNotificationValue - + * Can be used to pass out the subject task's notification value before any + * bits are modified by the notify function. + * + * @return Dependent on the value of eAction. See the description of the + * eAction parameter. + * + * \defgroup xTaskNotify xTaskNotify + * \ingroup TaskNotifications + */ +BaseType_t xTaskGenericNotify( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue ) PRIVILEGED_FUNCTION; +#define xTaskNotify( xTaskToNotify, ulValue, eAction ) xTaskGenericNotify( ( xTaskToNotify ), ( ulValue ), ( eAction ), NULL ) +#define xTaskNotifyAndQuery( xTaskToNotify, ulValue, eAction, pulPreviousNotifyValue ) xTaskGenericNotify( ( xTaskToNotify ), ( ulValue ), ( eAction ), ( pulPreviousNotifyValue ) ) + +/** + * task. h + *
BaseType_t xTaskNotifyFromISR( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, BaseType_t *pxHigherPriorityTaskWoken );
+ * + * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this + * function to be available. + * + * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private + * "notification value", which is a 32-bit unsigned integer (uint32_t). + * + * A version of xTaskNotify() that can be used from an interrupt service routine + * (ISR). + * + * Events can be sent to a task using an intermediary object. Examples of such + * objects are queues, semaphores, mutexes and event groups. Task notifications + * are a method of sending an event directly to a task without the need for such + * an intermediary object. + * + * A notification sent to a task can optionally perform an action, such as + * update, overwrite or increment the task's notification value. In that way + * task notifications can be used to send data to a task, or be used as light + * weight and fast binary or counting semaphores. + * + * A notification sent to a task will remain pending until it is cleared by the + * task calling xTaskNotifyWait() or ulTaskNotifyTake(). If the task was + * already in the Blocked state to wait for a notification when the notification + * arrives then the task will automatically be removed from the Blocked state + * (unblocked) and the notification cleared. + * + * A task can use xTaskNotifyWait() to [optionally] block to wait for a + * notification to be pending, or ulTaskNotifyTake() to [optionally] block + * to wait for its notification value to have a non-zero value. The task does + * not consume any CPU time while it is in the Blocked state. + * + * See http://www.FreeRTOS.org/RTOS-task-notifications.html for details. + * + * @param xTaskToNotify The handle of the task being notified. The handle to a + * task can be returned from the xTaskCreate() API function used to create the + * task, and the handle of the currently running task can be obtained by calling + * xTaskGetCurrentTaskHandle(). + * + * @param ulValue Data that can be sent with the notification. How the data is + * used depends on the value of the eAction parameter. + * + * @param eAction Specifies how the notification updates the task's notification + * value, if at all. Valid values for eAction are as follows: + * + * eSetBits - + * The task's notification value is bitwise ORed with ulValue. xTaskNofify() + * always returns pdPASS in this case. + * + * eIncrement - + * The task's notification value is incremented. ulValue is not used and + * xTaskNotify() always returns pdPASS in this case. + * + * eSetValueWithOverwrite - + * The task's notification value is set to the value of ulValue, even if the + * task being notified had not yet processed the previous notification (the + * task already had a notification pending). xTaskNotify() always returns + * pdPASS in this case. + * + * eSetValueWithoutOverwrite - + * If the task being notified did not already have a notification pending then + * the task's notification value is set to ulValue and xTaskNotify() will + * return pdPASS. If the task being notified already had a notification + * pending then no action is performed and pdFAIL is returned. + * + * eNoAction - + * The task receives a notification without its notification value being + * updated. ulValue is not used and xTaskNotify() always returns pdPASS in + * this case. + * + * @param pxHigherPriorityTaskWoken xTaskNotifyFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if sending the notification caused the + * task to which the notification was sent to leave the Blocked state, and the + * unblocked task has a priority higher than the currently running task. If + * xTaskNotifyFromISR() sets this value to pdTRUE then a context switch should + * be requested before the interrupt is exited. How a context switch is + * requested from an ISR is dependent on the port - see the documentation page + * for the port in use. + * + * @return Dependent on the value of eAction. See the description of the + * eAction parameter. + * + * \defgroup xTaskNotify xTaskNotify + * \ingroup TaskNotifications + */ +BaseType_t xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; +#define xTaskNotifyFromISR( xTaskToNotify, ulValue, eAction, pxHigherPriorityTaskWoken ) xTaskGenericNotifyFromISR( ( xTaskToNotify ), ( ulValue ), ( eAction ), NULL, ( pxHigherPriorityTaskWoken ) ) +#define xTaskNotifyAndQueryFromISR( xTaskToNotify, ulValue, eAction, pulPreviousNotificationValue, pxHigherPriorityTaskWoken ) xTaskGenericNotifyFromISR( ( xTaskToNotify ), ( ulValue ), ( eAction ), ( pulPreviousNotificationValue ), ( pxHigherPriorityTaskWoken ) ) + +/** + * task. h + *
BaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait );
+ * + * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this + * function to be available. + * + * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private + * "notification value", which is a 32-bit unsigned integer (uint32_t). + * + * Events can be sent to a task using an intermediary object. Examples of such + * objects are queues, semaphores, mutexes and event groups. Task notifications + * are a method of sending an event directly to a task without the need for such + * an intermediary object. + * + * A notification sent to a task can optionally perform an action, such as + * update, overwrite or increment the task's notification value. In that way + * task notifications can be used to send data to a task, or be used as light + * weight and fast binary or counting semaphores. + * + * A notification sent to a task will remain pending until it is cleared by the + * task calling xTaskNotifyWait() or ulTaskNotifyTake(). If the task was + * already in the Blocked state to wait for a notification when the notification + * arrives then the task will automatically be removed from the Blocked state + * (unblocked) and the notification cleared. + * + * A task can use xTaskNotifyWait() to [optionally] block to wait for a + * notification to be pending, or ulTaskNotifyTake() to [optionally] block + * to wait for its notification value to have a non-zero value. The task does + * not consume any CPU time while it is in the Blocked state. + * + * See http://www.FreeRTOS.org/RTOS-task-notifications.html for details. + * + * @param ulBitsToClearOnEntry Bits that are set in ulBitsToClearOnEntry value + * will be cleared in the calling task's notification value before the task + * checks to see if any notifications are pending, and optionally blocks if no + * notifications are pending. Setting ulBitsToClearOnEntry to ULONG_MAX (if + * limits.h is included) or 0xffffffffUL (if limits.h is not included) will have + * the effect of resetting the task's notification value to 0. Setting + * ulBitsToClearOnEntry to 0 will leave the task's notification value unchanged. + * + * @param ulBitsToClearOnExit If a notification is pending or received before + * the calling task exits the xTaskNotifyWait() function then the task's + * notification value (see the xTaskNotify() API function) is passed out using + * the pulNotificationValue parameter. Then any bits that are set in + * ulBitsToClearOnExit will be cleared in the task's notification value (note + * *pulNotificationValue is set before any bits are cleared). Setting + * ulBitsToClearOnExit to ULONG_MAX (if limits.h is included) or 0xffffffffUL + * (if limits.h is not included) will have the effect of resetting the task's + * notification value to 0 before the function exits. Setting + * ulBitsToClearOnExit to 0 will leave the task's notification value unchanged + * when the function exits (in which case the value passed out in + * pulNotificationValue will match the task's notification value). + * + * @param pulNotificationValue Used to pass the task's notification value out + * of the function. Note the value passed out will not be effected by the + * clearing of any bits caused by ulBitsToClearOnExit being non-zero. + * + * @param xTicksToWait The maximum amount of time that the task should wait in + * the Blocked state for a notification to be received, should a notification + * not already be pending when xTaskNotifyWait() was called. The task + * will not consume any processing time while it is in the Blocked state. This + * is specified in kernel ticks, the macro pdMS_TO_TICSK( value_in_ms ) can be + * used to convert a time specified in milliseconds to a time specified in + * ticks. + * + * @return If a notification was received (including notifications that were + * already pending when xTaskNotifyWait was called) then pdPASS is + * returned. Otherwise pdFAIL is returned. + * + * \defgroup xTaskNotifyWait xTaskNotifyWait + * \ingroup TaskNotifications + */ +BaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
BaseType_t xTaskNotifyGive( TaskHandle_t xTaskToNotify );
+ * + * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this macro + * to be available. + * + * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private + * "notification value", which is a 32-bit unsigned integer (uint32_t). + * + * Events can be sent to a task using an intermediary object. Examples of such + * objects are queues, semaphores, mutexes and event groups. Task notifications + * are a method of sending an event directly to a task without the need for such + * an intermediary object. + * + * A notification sent to a task can optionally perform an action, such as + * update, overwrite or increment the task's notification value. In that way + * task notifications can be used to send data to a task, or be used as light + * weight and fast binary or counting semaphores. + * + * xTaskNotifyGive() is a helper macro intended for use when task notifications + * are used as light weight and faster binary or counting semaphore equivalents. + * Actual FreeRTOS semaphores are given using the xSemaphoreGive() API function, + * the equivalent action that instead uses a task notification is + * xTaskNotifyGive(). + * + * When task notifications are being used as a binary or counting semaphore + * equivalent then the task being notified should wait for the notification + * using the ulTaskNotificationTake() API function rather than the + * xTaskNotifyWait() API function. + * + * See http://www.FreeRTOS.org/RTOS-task-notifications.html for more details. + * + * @param xTaskToNotify The handle of the task being notified. The handle to a + * task can be returned from the xTaskCreate() API function used to create the + * task, and the handle of the currently running task can be obtained by calling + * xTaskGetCurrentTaskHandle(). + * + * @return xTaskNotifyGive() is a macro that calls xTaskNotify() with the + * eAction parameter set to eIncrement - so pdPASS is always returned. + * + * \defgroup xTaskNotifyGive xTaskNotifyGive + * \ingroup TaskNotifications + */ +#define xTaskNotifyGive( xTaskToNotify ) xTaskGenericNotify( ( xTaskToNotify ), ( 0 ), eIncrement, NULL ) + +/** + * task. h + *
void vTaskNotifyGiveFromISR( TaskHandle_t xTaskHandle, BaseType_t *pxHigherPriorityTaskWoken );
+ *
+ * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this macro
+ * to be available.
+ *
+ * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private
+ * "notification value", which is a 32-bit unsigned integer (uint32_t).
+ *
+ * A version of xTaskNotifyGive() that can be called from an interrupt service
+ * routine (ISR).
+ *
+ * Events can be sent to a task using an intermediary object.  Examples of such
+ * objects are queues, semaphores, mutexes and event groups.  Task notifications
+ * are a method of sending an event directly to a task without the need for such
+ * an intermediary object.
+ *
+ * A notification sent to a task can optionally perform an action, such as
+ * update, overwrite or increment the task's notification value.  In that way
+ * task notifications can be used to send data to a task, or be used as light
+ * weight and fast binary or counting semaphores.
+ *
+ * vTaskNotifyGiveFromISR() is intended for use when task notifications are
+ * used as light weight and faster binary or counting semaphore equivalents.
+ * Actual FreeRTOS semaphores are given from an ISR using the
+ * xSemaphoreGiveFromISR() API function, the equivalent action that instead uses
+ * a task notification is vTaskNotifyGiveFromISR().
+ *
+ * When task notifications are being used as a binary or counting semaphore
+ * equivalent then the task being notified should wait for the notification
+ * using the ulTaskNotificationTake() API function rather than the
+ * xTaskNotifyWait() API function.
+ *
+ * See http://www.FreeRTOS.org/RTOS-task-notifications.html for more details.
+ *
+ * @param xTaskToNotify The handle of the task being notified.  The handle to a
+ * task can be returned from the xTaskCreate() API function used to create the
+ * task, and the handle of the currently running task can be obtained by calling
+ * xTaskGetCurrentTaskHandle().
+ *
+ * @param pxHigherPriorityTaskWoken  vTaskNotifyGiveFromISR() will set
+ * *pxHigherPriorityTaskWoken to pdTRUE if sending the notification caused the
+ * task to which the notification was sent to leave the Blocked state, and the
+ * unblocked task has a priority higher than the currently running task.  If
+ * vTaskNotifyGiveFromISR() sets this value to pdTRUE then a context switch
+ * should be requested before the interrupt is exited.  How a context switch is
+ * requested from an ISR is dependent on the port - see the documentation page
+ * for the port in use.
+ *
+ * \defgroup xTaskNotifyWait xTaskNotifyWait
+ * \ingroup TaskNotifications
+ */
+void vTaskNotifyGiveFromISR( TaskHandle_t xTaskToNotify, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
+
+/**
+ * task. h
+ * 
uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait );
+ * + * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this + * function to be available. + * + * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private + * "notification value", which is a 32-bit unsigned integer (uint32_t). + * + * Events can be sent to a task using an intermediary object. Examples of such + * objects are queues, semaphores, mutexes and event groups. Task notifications + * are a method of sending an event directly to a task without the need for such + * an intermediary object. + * + * A notification sent to a task can optionally perform an action, such as + * update, overwrite or increment the task's notification value. In that way + * task notifications can be used to send data to a task, or be used as light + * weight and fast binary or counting semaphores. + * + * ulTaskNotifyTake() is intended for use when a task notification is used as a + * faster and lighter weight binary or counting semaphore alternative. Actual + * FreeRTOS semaphores are taken using the xSemaphoreTake() API function, the + * equivalent action that instead uses a task notification is + * ulTaskNotifyTake(). + * + * When a task is using its notification value as a binary or counting semaphore + * other tasks should send notifications to it using the xTaskNotifyGive() + * macro, or xTaskNotify() function with the eAction parameter set to + * eIncrement. + * + * ulTaskNotifyTake() can either clear the task's notification value to + * zero on exit, in which case the notification value acts like a binary + * semaphore, or decrement the task's notification value on exit, in which case + * the notification value acts like a counting semaphore. + * + * A task can use ulTaskNotifyTake() to [optionally] block to wait for a + * the task's notification value to be non-zero. The task does not consume any + * CPU time while it is in the Blocked state. + * + * Where as xTaskNotifyWait() will return when a notification is pending, + * ulTaskNotifyTake() will return when the task's notification value is + * not zero. + * + * See http://www.FreeRTOS.org/RTOS-task-notifications.html for details. + * + * @param xClearCountOnExit if xClearCountOnExit is pdFALSE then the task's + * notification value is decremented when the function exits. In this way the + * notification value acts like a counting semaphore. If xClearCountOnExit is + * not pdFALSE then the task's notification value is cleared to zero when the + * function exits. In this way the notification value acts like a binary + * semaphore. + * + * @param xTicksToWait The maximum amount of time that the task should wait in + * the Blocked state for the task's notification value to be greater than zero, + * should the count not already be greater than zero when + * ulTaskNotifyTake() was called. The task will not consume any processing + * time while it is in the Blocked state. This is specified in kernel ticks, + * the macro pdMS_TO_TICSK( value_in_ms ) can be used to convert a time + * specified in milliseconds to a time specified in ticks. + * + * @return The task's notification count before it is either cleared to zero or + * decremented (see the xClearCountOnExit parameter). + * + * \defgroup ulTaskNotifyTake ulTaskNotifyTake + * \ingroup TaskNotifications + */ +uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
BaseType_t xTaskNotifyStateClear( TaskHandle_t xTask );
+ * + * If the notification state of the task referenced by the handle xTask is + * eNotified, then set the task's notification state to eNotWaitingNotification. + * The task's notification value is not altered. Set xTask to NULL to clear the + * notification state of the calling task. + * + * @return pdTRUE if the task's notification state was set to + * eNotWaitingNotification, otherwise pdFALSE. + * \defgroup xTaskNotifyStateClear xTaskNotifyStateClear + * \ingroup TaskNotifications + */ +BaseType_t xTaskNotifyStateClear( TaskHandle_t xTask ); + +/*----------------------------------------------------------- + * SCHEDULER INTERNALS AVAILABLE FOR PORTING PURPOSES + *----------------------------------------------------------*/ + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS ONLY + * INTENDED FOR USE WHEN IMPLEMENTING A PORT OF THE SCHEDULER AND IS + * AN INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * Called from the real time kernel tick (either preemptive or cooperative), + * this increments the tick count and checks if any tasks that are blocked + * for a finite period required removing from a blocked list and placing on + * a ready list. If a non-zero value is returned then a context switch is + * required because either: + * + A task was removed from a blocked list because its timeout had expired, + * or + * + Time slicing is in use and there is a task of equal priority to the + * currently running task. + */ +BaseType_t xTaskIncrementTick( void ) PRIVILEGED_FUNCTION; + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN + * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED. + * + * Removes the calling task from the ready list and places it both + * on the list of tasks waiting for a particular event, and the + * list of delayed tasks. The task will be removed from both lists + * and replaced on the ready list should either the event occur (and + * there be no higher priority tasks waiting on the same event) or + * the delay period expires. + * + * The 'unordered' version replaces the event list item value with the + * xItemValue value, and inserts the list item at the end of the list. + * + * The 'ordered' version uses the existing event list item value (which is the + * owning tasks priority) to insert the list item into the event list is task + * priority order. + * + * @param pxEventList The list containing tasks that are blocked waiting + * for the event to occur. + * + * @param xItemValue The item value to use for the event list item when the + * event list is not ordered by task priority. + * + * @param xTicksToWait The maximum amount of time that the task should wait + * for the event to occur. This is specified in kernel ticks,the constant + * portTICK_PERIOD_MS can be used to convert kernel ticks into a real time + * period. + */ +void vTaskPlaceOnEventList( List_t * const pxEventList, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; +void vTaskPlaceOnUnorderedEventList( List_t * pxEventList, const TickType_t xItemValue, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN + * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED. + * + * This function performs nearly the same function as vTaskPlaceOnEventList(). + * The difference being that this function does not permit tasks to block + * indefinitely, whereas vTaskPlaceOnEventList() does. + * + */ +void vTaskPlaceOnEventListRestricted( List_t * const pxEventList, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely ) PRIVILEGED_FUNCTION; + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN + * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED. + * + * Removes a task from both the specified event list and the list of blocked + * tasks, and places it on a ready queue. + * + * xTaskRemoveFromEventList()/vTaskRemoveFromUnorderedEventList() will be called + * if either an event occurs to unblock a task, or the block timeout period + * expires. + * + * xTaskRemoveFromEventList() is used when the event list is in task priority + * order. It removes the list item from the head of the event list as that will + * have the highest priority owning task of all the tasks on the event list. + * vTaskRemoveFromUnorderedEventList() is used when the event list is not + * ordered and the event list items hold something other than the owning tasks + * priority. In this case the event list item value is updated to the value + * passed in the xItemValue parameter. + * + * @return pdTRUE if the task being removed has a higher priority than the task + * making the call, otherwise pdFALSE. + */ +BaseType_t xTaskRemoveFromEventList( const List_t * const pxEventList ) PRIVILEGED_FUNCTION; +void vTaskRemoveFromUnorderedEventList( ListItem_t * pxEventListItem, const TickType_t xItemValue ) PRIVILEGED_FUNCTION; + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS ONLY + * INTENDED FOR USE WHEN IMPLEMENTING A PORT OF THE SCHEDULER AND IS + * AN INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * Sets the pointer to the current TCB to the TCB of the highest priority task + * that is ready to run. + */ +portDONT_DISCARD void vTaskSwitchContext( void ) PRIVILEGED_FUNCTION; + +/* + * THESE FUNCTIONS MUST NOT BE USED FROM APPLICATION CODE. THEY ARE USED BY + * THE EVENT BITS MODULE. + */ +TickType_t uxTaskResetEventItemValue( void ) PRIVILEGED_FUNCTION; + +/* + * Return the handle of the calling task. + */ +TaskHandle_t xTaskGetCurrentTaskHandle( void ) PRIVILEGED_FUNCTION; + +/* + * Capture the current time status for future reference. + */ +void vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) PRIVILEGED_FUNCTION; + +/* + * Compare the time status now with that previously captured to see if the + * timeout has expired. + */ +BaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait ) PRIVILEGED_FUNCTION; + +/* + * Shortcut used by the queue implementation to prevent unnecessary call to + * taskYIELD(); + */ +void vTaskMissedYield( void ) PRIVILEGED_FUNCTION; + +/* + * Returns the scheduler state as taskSCHEDULER_RUNNING, + * taskSCHEDULER_NOT_STARTED or taskSCHEDULER_SUSPENDED. + */ +BaseType_t xTaskGetSchedulerState( void ) PRIVILEGED_FUNCTION; + +/* + * Raises the priority of the mutex holder to that of the calling task should + * the mutex holder have a priority less than the calling task. + */ +BaseType_t xTaskPriorityInherit( TaskHandle_t const pxMutexHolder ) PRIVILEGED_FUNCTION; + +/* + * Set the priority of a task back to its proper priority in the case that it + * inherited a higher priority while it was holding a semaphore. + */ +BaseType_t xTaskPriorityDisinherit( TaskHandle_t const pxMutexHolder ) PRIVILEGED_FUNCTION; + +/* + * If a higher priority task attempting to obtain a mutex caused a lower + * priority task to inherit the higher priority task's priority - but the higher + * priority task then timed out without obtaining the mutex, then the lower + * priority task will disinherit the priority again - but only down as far as + * the highest priority task that is still waiting for the mutex (if there were + * more than one task waiting for the mutex). + */ +void vTaskPriorityDisinheritAfterTimeout( TaskHandle_t const pxMutexHolder, UBaseType_t uxHighestPriorityWaitingTask ) PRIVILEGED_FUNCTION; + +/* + * Get the uxTCBNumber assigned to the task referenced by the xTask parameter. + */ +UBaseType_t uxTaskGetTaskNumber( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/* + * Set the uxTaskNumber of the task referenced by the xTask parameter to + * uxHandle. + */ +void vTaskSetTaskNumber( TaskHandle_t xTask, const UBaseType_t uxHandle ) PRIVILEGED_FUNCTION; + +/* + * Only available when configUSE_TICKLESS_IDLE is set to 1. + * If tickless mode is being used, or a low power mode is implemented, then + * the tick interrupt will not execute during idle periods. When this is the + * case, the tick count value maintained by the scheduler needs to be kept up + * to date with the actual execution time by being skipped forward by a time + * equal to the idle period. + */ +void vTaskStepTick( const TickType_t xTicksToJump ) PRIVILEGED_FUNCTION; + +/* Correct the tick count value after the application code has held +interrupts disabled for an extended period. xTicksToCatchUp is the number +of tick interrupts that have been missed due to interrupts being disabled. +Its value is not computed automatically, so must be computed by the +application writer. + +This function is similar to vTaskStepTick(), however, unlike +vTaskStepTick(), xTaskCatchUpTicks() may move the tick count forward past a +time at which a task should be removed from the blocked state. That means +tasks may have to be removed from the blocked state as the tick count is +moved. */ +BaseType_t xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) PRIVILEGED_FUNCTION; + +/* + * Only available when configUSE_TICKLESS_IDLE is set to 1. + * Provided for use within portSUPPRESS_TICKS_AND_SLEEP() to allow the port + * specific sleep function to determine if it is ok to proceed with the sleep, + * and if it is ok to proceed, if it is ok to sleep indefinitely. + * + * This function is necessary because portSUPPRESS_TICKS_AND_SLEEP() is only + * called with the scheduler suspended, not from within a critical section. It + * is therefore possible for an interrupt to request a context switch between + * portSUPPRESS_TICKS_AND_SLEEP() and the low power mode actually being + * entered. eTaskConfirmSleepModeStatus() should be called from a short + * critical section between the timer being stopped and the sleep mode being + * entered to ensure it is ok to proceed into the sleep mode. + */ +eSleepModeStatus eTaskConfirmSleepModeStatus( void ) PRIVILEGED_FUNCTION; + +/* + * For internal use only. Increment the mutex held count when a mutex is + * taken and return the handle of the task that has taken the mutex. + */ +TaskHandle_t pvTaskIncrementMutexHeldCount( void ) PRIVILEGED_FUNCTION; + +/* + * For internal use only. Same as vTaskSetTimeOutState(), but without a critial + * section. + */ +void vTaskInternalSetTimeOutState( TimeOut_t * const pxTimeOut ) PRIVILEGED_FUNCTION; + + +#ifdef __cplusplus +} +#endif +#endif /* INC_TASK_H */ + + + diff --git a/components/freertos/include/timers.h b/components/freertos/include/timers.h new file mode 100644 index 00000000..cb721797 --- /dev/null +++ b/components/freertos/include/timers.h @@ -0,0 +1,1295 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +#ifndef TIMERS_H +#define TIMERS_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h must appear in source files before include timers.h" +#endif + +/*lint -save -e537 This headers are only multiply included if the application code +happens to also be including task.h. */ +#include "task.h" +/*lint -restore */ + +#ifdef __cplusplus +extern "C" { +#endif + +/*----------------------------------------------------------- + * MACROS AND DEFINITIONS + *----------------------------------------------------------*/ + +/* IDs for commands that can be sent/received on the timer queue. These are to +be used solely through the macros that make up the public software timer API, +as defined below. The commands that are sent from interrupts must use the +highest numbers as tmrFIRST_FROM_ISR_COMMAND is used to determine if the task +or interrupt version of the queue send function should be used. */ +#define tmrCOMMAND_EXECUTE_CALLBACK_FROM_ISR ( ( BaseType_t ) -2 ) +#define tmrCOMMAND_EXECUTE_CALLBACK ( ( BaseType_t ) -1 ) +#define tmrCOMMAND_START_DONT_TRACE ( ( BaseType_t ) 0 ) +#define tmrCOMMAND_START ( ( BaseType_t ) 1 ) +#define tmrCOMMAND_RESET ( ( BaseType_t ) 2 ) +#define tmrCOMMAND_STOP ( ( BaseType_t ) 3 ) +#define tmrCOMMAND_CHANGE_PERIOD ( ( BaseType_t ) 4 ) +#define tmrCOMMAND_DELETE ( ( BaseType_t ) 5 ) + +#define tmrFIRST_FROM_ISR_COMMAND ( ( BaseType_t ) 6 ) +#define tmrCOMMAND_START_FROM_ISR ( ( BaseType_t ) 6 ) +#define tmrCOMMAND_RESET_FROM_ISR ( ( BaseType_t ) 7 ) +#define tmrCOMMAND_STOP_FROM_ISR ( ( BaseType_t ) 8 ) +#define tmrCOMMAND_CHANGE_PERIOD_FROM_ISR ( ( BaseType_t ) 9 ) + + +/** + * Type by which software timers are referenced. For example, a call to + * xTimerCreate() returns an TimerHandle_t variable that can then be used to + * reference the subject timer in calls to other software timer API functions + * (for example, xTimerStart(), xTimerReset(), etc.). + */ +struct tmrTimerControl; /* The old naming convention is used to prevent breaking kernel aware debuggers. */ +typedef struct tmrTimerControl * TimerHandle_t; + +/* + * Defines the prototype to which timer callback functions must conform. + */ +typedef void (*TimerCallbackFunction_t)( TimerHandle_t xTimer ); + +/* + * Defines the prototype to which functions used with the + * xTimerPendFunctionCallFromISR() function must conform. + */ +typedef void (*PendedFunction_t)( void *, uint32_t ); + +/** + * TimerHandle_t xTimerCreate( const char * const pcTimerName, + * TickType_t xTimerPeriodInTicks, + * UBaseType_t uxAutoReload, + * void * pvTimerID, + * TimerCallbackFunction_t pxCallbackFunction ); + * + * Creates a new software timer instance, and returns a handle by which the + * created software timer can be referenced. + * + * Internally, within the FreeRTOS implementation, software timers use a block + * of memory, in which the timer data structure is stored. If a software timer + * is created using xTimerCreate() then the required memory is automatically + * dynamically allocated inside the xTimerCreate() function. (see + * http://www.freertos.org/a00111.html). If a software timer is created using + * xTimerCreateStatic() then the application writer must provide the memory that + * will get used by the software timer. xTimerCreateStatic() therefore allows a + * software timer to be created without using any dynamic memory allocation. + * + * Timers are created in the dormant state. The xTimerStart(), xTimerReset(), + * xTimerStartFromISR(), xTimerResetFromISR(), xTimerChangePeriod() and + * xTimerChangePeriodFromISR() API functions can all be used to transition a + * timer into the active state. + * + * @param pcTimerName A text name that is assigned to the timer. This is done + * purely to assist debugging. The kernel itself only ever references a timer + * by its handle, and never by its name. + * + * @param xTimerPeriodInTicks The timer period. The time is defined in tick + * periods so the constant portTICK_PERIOD_MS can be used to convert a time that + * has been specified in milliseconds. For example, if the timer must expire + * after 100 ticks, then xTimerPeriodInTicks should be set to 100. + * Alternatively, if the timer must expire after 500ms, then xPeriod can be set + * to ( 500 / portTICK_PERIOD_MS ) provided configTICK_RATE_HZ is less than or + * equal to 1000. + * + * @param uxAutoReload If uxAutoReload is set to pdTRUE then the timer will + * expire repeatedly with a frequency set by the xTimerPeriodInTicks parameter. + * If uxAutoReload is set to pdFALSE then the timer will be a one-shot timer and + * enter the dormant state after it expires. + * + * @param pvTimerID An identifier that is assigned to the timer being created. + * Typically this would be used in the timer callback function to identify which + * timer expired when the same callback function is assigned to more than one + * timer. + * + * @param pxCallbackFunction The function to call when the timer expires. + * Callback functions must have the prototype defined by TimerCallbackFunction_t, + * which is "void vCallbackFunction( TimerHandle_t xTimer );". + * + * @return If the timer is successfully created then a handle to the newly + * created timer is returned. If the timer cannot be created (because either + * there is insufficient FreeRTOS heap remaining to allocate the timer + * structures, or the timer period was set to 0) then NULL is returned. + * + * Example usage: + * @verbatim + * #define NUM_TIMERS 5 + * + * // An array to hold handles to the created timers. + * TimerHandle_t xTimers[ NUM_TIMERS ]; + * + * // An array to hold a count of the number of times each timer expires. + * int32_t lExpireCounters[ NUM_TIMERS ] = { 0 }; + * + * // Define a callback function that will be used by multiple timer instances. + * // The callback function does nothing but count the number of times the + * // associated timer expires, and stop the timer once the timer has expired + * // 10 times. + * void vTimerCallback( TimerHandle_t pxTimer ) + * { + * int32_t lArrayIndex; + * const int32_t xMaxExpiryCountBeforeStopping = 10; + * + * // Optionally do something if the pxTimer parameter is NULL. + * configASSERT( pxTimer ); + * + * // Which timer expired? + * lArrayIndex = ( int32_t ) pvTimerGetTimerID( pxTimer ); + * + * // Increment the number of times that pxTimer has expired. + * lExpireCounters[ lArrayIndex ] += 1; + * + * // If the timer has expired 10 times then stop it from running. + * if( lExpireCounters[ lArrayIndex ] == xMaxExpiryCountBeforeStopping ) + * { + * // Do not use a block time if calling a timer API function from a + * // timer callback function, as doing so could cause a deadlock! + * xTimerStop( pxTimer, 0 ); + * } + * } + * + * void main( void ) + * { + * int32_t x; + * + * // Create then start some timers. Starting the timers before the scheduler + * // has been started means the timers will start running immediately that + * // the scheduler starts. + * for( x = 0; x < NUM_TIMERS; x++ ) + * { + * xTimers[ x ] = xTimerCreate( "Timer", // Just a text name, not used by the kernel. + * ( 100 * x ), // The timer period in ticks. + * pdTRUE, // The timers will auto-reload themselves when they expire. + * ( void * ) x, // Assign each timer a unique id equal to its array index. + * vTimerCallback // Each timer calls the same callback when it expires. + * ); + * + * if( xTimers[ x ] == NULL ) + * { + * // The timer was not created. + * } + * else + * { + * // Start the timer. No block time is specified, and even if one was + * // it would be ignored because the scheduler has not yet been + * // started. + * if( xTimerStart( xTimers[ x ], 0 ) != pdPASS ) + * { + * // The timer could not be set into the Active state. + * } + * } + * } + * + * // ... + * // Create tasks here. + * // ... + * + * // Starting the scheduler will start the timers running as they have already + * // been set into the active state. + * vTaskStartScheduler(); + * + * // Should not reach here. + * for( ;; ); + * } + * @endverbatim + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + TimerHandle_t xTimerCreate( const char * const pcTimerName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const TickType_t xTimerPeriodInTicks, + const UBaseType_t uxAutoReload, + void * const pvTimerID, + TimerCallbackFunction_t pxCallbackFunction ) PRIVILEGED_FUNCTION; +#endif + +/** + * TimerHandle_t xTimerCreateStatic(const char * const pcTimerName, + * TickType_t xTimerPeriodInTicks, + * UBaseType_t uxAutoReload, + * void * pvTimerID, + * TimerCallbackFunction_t pxCallbackFunction, + * StaticTimer_t *pxTimerBuffer ); + * + * Creates a new software timer instance, and returns a handle by which the + * created software timer can be referenced. + * + * Internally, within the FreeRTOS implementation, software timers use a block + * of memory, in which the timer data structure is stored. If a software timer + * is created using xTimerCreate() then the required memory is automatically + * dynamically allocated inside the xTimerCreate() function. (see + * http://www.freertos.org/a00111.html). If a software timer is created using + * xTimerCreateStatic() then the application writer must provide the memory that + * will get used by the software timer. xTimerCreateStatic() therefore allows a + * software timer to be created without using any dynamic memory allocation. + * + * Timers are created in the dormant state. The xTimerStart(), xTimerReset(), + * xTimerStartFromISR(), xTimerResetFromISR(), xTimerChangePeriod() and + * xTimerChangePeriodFromISR() API functions can all be used to transition a + * timer into the active state. + * + * @param pcTimerName A text name that is assigned to the timer. This is done + * purely to assist debugging. The kernel itself only ever references a timer + * by its handle, and never by its name. + * + * @param xTimerPeriodInTicks The timer period. The time is defined in tick + * periods so the constant portTICK_PERIOD_MS can be used to convert a time that + * has been specified in milliseconds. For example, if the timer must expire + * after 100 ticks, then xTimerPeriodInTicks should be set to 100. + * Alternatively, if the timer must expire after 500ms, then xPeriod can be set + * to ( 500 / portTICK_PERIOD_MS ) provided configTICK_RATE_HZ is less than or + * equal to 1000. + * + * @param uxAutoReload If uxAutoReload is set to pdTRUE then the timer will + * expire repeatedly with a frequency set by the xTimerPeriodInTicks parameter. + * If uxAutoReload is set to pdFALSE then the timer will be a one-shot timer and + * enter the dormant state after it expires. + * + * @param pvTimerID An identifier that is assigned to the timer being created. + * Typically this would be used in the timer callback function to identify which + * timer expired when the same callback function is assigned to more than one + * timer. + * + * @param pxCallbackFunction The function to call when the timer expires. + * Callback functions must have the prototype defined by TimerCallbackFunction_t, + * which is "void vCallbackFunction( TimerHandle_t xTimer );". + * + * @param pxTimerBuffer Must point to a variable of type StaticTimer_t, which + * will be then be used to hold the software timer's data structures, removing + * the need for the memory to be allocated dynamically. + * + * @return If the timer is created then a handle to the created timer is + * returned. If pxTimerBuffer was NULL then NULL is returned. + * + * Example usage: + * @verbatim + * + * // The buffer used to hold the software timer's data structure. + * static StaticTimer_t xTimerBuffer; + * + * // A variable that will be incremented by the software timer's callback + * // function. + * UBaseType_t uxVariableToIncrement = 0; + * + * // A software timer callback function that increments a variable passed to + * // it when the software timer was created. After the 5th increment the + * // callback function stops the software timer. + * static void prvTimerCallback( TimerHandle_t xExpiredTimer ) + * { + * UBaseType_t *puxVariableToIncrement; + * BaseType_t xReturned; + * + * // Obtain the address of the variable to increment from the timer ID. + * puxVariableToIncrement = ( UBaseType_t * ) pvTimerGetTimerID( xExpiredTimer ); + * + * // Increment the variable to show the timer callback has executed. + * ( *puxVariableToIncrement )++; + * + * // If this callback has executed the required number of times, stop the + * // timer. + * if( *puxVariableToIncrement == 5 ) + * { + * // This is called from a timer callback so must not block. + * xTimerStop( xExpiredTimer, staticDONT_BLOCK ); + * } + * } + * + * + * void main( void ) + * { + * // Create the software time. xTimerCreateStatic() has an extra parameter + * // than the normal xTimerCreate() API function. The parameter is a pointer + * // to the StaticTimer_t structure that will hold the software timer + * // structure. If the parameter is passed as NULL then the structure will be + * // allocated dynamically, just as if xTimerCreate() had been called. + * xTimer = xTimerCreateStatic( "T1", // Text name for the task. Helps debugging only. Not used by FreeRTOS. + * xTimerPeriod, // The period of the timer in ticks. + * pdTRUE, // This is an auto-reload timer. + * ( void * ) &uxVariableToIncrement, // A variable incremented by the software timer's callback function + * prvTimerCallback, // The function to execute when the timer expires. + * &xTimerBuffer ); // The buffer that will hold the software timer structure. + * + * // The scheduler has not started yet so a block time is not used. + * xReturned = xTimerStart( xTimer, 0 ); + * + * // ... + * // Create tasks here. + * // ... + * + * // Starting the scheduler will start the timers running as they have already + * // been set into the active state. + * vTaskStartScheduler(); + * + * // Should not reach here. + * for( ;; ); + * } + * @endverbatim + */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + TimerHandle_t xTimerCreateStatic( const char * const pcTimerName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const TickType_t xTimerPeriodInTicks, + const UBaseType_t uxAutoReload, + void * const pvTimerID, + TimerCallbackFunction_t pxCallbackFunction, + StaticTimer_t *pxTimerBuffer ) PRIVILEGED_FUNCTION; +#endif /* configSUPPORT_STATIC_ALLOCATION */ + +/** + * void *pvTimerGetTimerID( TimerHandle_t xTimer ); + * + * Returns the ID assigned to the timer. + * + * IDs are assigned to timers using the pvTimerID parameter of the call to + * xTimerCreated() that was used to create the timer, and by calling the + * vTimerSetTimerID() API function. + * + * If the same callback function is assigned to multiple timers then the timer + * ID can be used as time specific (timer local) storage. + * + * @param xTimer The timer being queried. + * + * @return The ID assigned to the timer being queried. + * + * Example usage: + * + * See the xTimerCreate() API function example usage scenario. + */ +void *pvTimerGetTimerID( const TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; + +/** + * void vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID ); + * + * Sets the ID assigned to the timer. + * + * IDs are assigned to timers using the pvTimerID parameter of the call to + * xTimerCreated() that was used to create the timer. + * + * If the same callback function is assigned to multiple timers then the timer + * ID can be used as time specific (timer local) storage. + * + * @param xTimer The timer being updated. + * + * @param pvNewID The ID to assign to the timer. + * + * Example usage: + * + * See the xTimerCreate() API function example usage scenario. + */ +void vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID ) PRIVILEGED_FUNCTION; + +/** + * BaseType_t xTimerIsTimerActive( TimerHandle_t xTimer ); + * + * Queries a timer to see if it is active or dormant. + * + * A timer will be dormant if: + * 1) It has been created but not started, or + * 2) It is an expired one-shot timer that has not been restarted. + * + * Timers are created in the dormant state. The xTimerStart(), xTimerReset(), + * xTimerStartFromISR(), xTimerResetFromISR(), xTimerChangePeriod() and + * xTimerChangePeriodFromISR() API functions can all be used to transition a timer into the + * active state. + * + * @param xTimer The timer being queried. + * + * @return pdFALSE will be returned if the timer is dormant. A value other than + * pdFALSE will be returned if the timer is active. + * + * Example usage: + * @verbatim + * // This function assumes xTimer has already been created. + * void vAFunction( TimerHandle_t xTimer ) + * { + * if( xTimerIsTimerActive( xTimer ) != pdFALSE ) // or more simply and equivalently "if( xTimerIsTimerActive( xTimer ) )" + * { + * // xTimer is active, do something. + * } + * else + * { + * // xTimer is not active, do something else. + * } + * } + * @endverbatim + */ +BaseType_t xTimerIsTimerActive( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; + +/** + * TaskHandle_t xTimerGetTimerDaemonTaskHandle( void ); + * + * Simply returns the handle of the timer service/daemon task. It it not valid + * to call xTimerGetTimerDaemonTaskHandle() before the scheduler has been started. + */ +TaskHandle_t xTimerGetTimerDaemonTaskHandle( void ) PRIVILEGED_FUNCTION; + +/** + * BaseType_t xTimerStart( TimerHandle_t xTimer, TickType_t xTicksToWait ); + * + * Timer functionality is provided by a timer service/daemon task. Many of the + * public FreeRTOS timer API functions send commands to the timer service task + * through a queue called the timer command queue. The timer command queue is + * private to the kernel itself and is not directly accessible to application + * code. The length of the timer command queue is set by the + * configTIMER_QUEUE_LENGTH configuration constant. + * + * xTimerStart() starts a timer that was previously created using the + * xTimerCreate() API function. If the timer had already been started and was + * already in the active state, then xTimerStart() has equivalent functionality + * to the xTimerReset() API function. + * + * Starting a timer ensures the timer is in the active state. If the timer + * is not stopped, deleted, or reset in the mean time, the callback function + * associated with the timer will get called 'n' ticks after xTimerStart() was + * called, where 'n' is the timers defined period. + * + * It is valid to call xTimerStart() before the scheduler has been started, but + * when this is done the timer will not actually start until the scheduler is + * started, and the timers expiry time will be relative to when the scheduler is + * started, not relative to when xTimerStart() was called. + * + * The configUSE_TIMERS configuration constant must be set to 1 for xTimerStart() + * to be available. + * + * @param xTimer The handle of the timer being started/restarted. + * + * @param xTicksToWait Specifies the time, in ticks, that the calling task should + * be held in the Blocked state to wait for the start command to be successfully + * sent to the timer command queue, should the queue already be full when + * xTimerStart() was called. xTicksToWait is ignored if xTimerStart() is called + * before the scheduler is started. + * + * @return pdFAIL will be returned if the start command could not be sent to + * the timer command queue even after xTicksToWait ticks had passed. pdPASS will + * be returned if the command was successfully sent to the timer command queue. + * When the command is actually processed will depend on the priority of the + * timer service/daemon task relative to other tasks in the system, although the + * timers expiry time is relative to when xTimerStart() is actually called. The + * timer service/daemon task priority is set by the configTIMER_TASK_PRIORITY + * configuration constant. + * + * Example usage: + * + * See the xTimerCreate() API function example usage scenario. + * + */ +#define xTimerStart( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_START, ( xTaskGetTickCount() ), NULL, ( xTicksToWait ) ) + +/** + * BaseType_t xTimerStop( TimerHandle_t xTimer, TickType_t xTicksToWait ); + * + * Timer functionality is provided by a timer service/daemon task. Many of the + * public FreeRTOS timer API functions send commands to the timer service task + * through a queue called the timer command queue. The timer command queue is + * private to the kernel itself and is not directly accessible to application + * code. The length of the timer command queue is set by the + * configTIMER_QUEUE_LENGTH configuration constant. + * + * xTimerStop() stops a timer that was previously started using either of the + * The xTimerStart(), xTimerReset(), xTimerStartFromISR(), xTimerResetFromISR(), + * xTimerChangePeriod() or xTimerChangePeriodFromISR() API functions. + * + * Stopping a timer ensures the timer is not in the active state. + * + * The configUSE_TIMERS configuration constant must be set to 1 for xTimerStop() + * to be available. + * + * @param xTimer The handle of the timer being stopped. + * + * @param xTicksToWait Specifies the time, in ticks, that the calling task should + * be held in the Blocked state to wait for the stop command to be successfully + * sent to the timer command queue, should the queue already be full when + * xTimerStop() was called. xTicksToWait is ignored if xTimerStop() is called + * before the scheduler is started. + * + * @return pdFAIL will be returned if the stop command could not be sent to + * the timer command queue even after xTicksToWait ticks had passed. pdPASS will + * be returned if the command was successfully sent to the timer command queue. + * When the command is actually processed will depend on the priority of the + * timer service/daemon task relative to other tasks in the system. The timer + * service/daemon task priority is set by the configTIMER_TASK_PRIORITY + * configuration constant. + * + * Example usage: + * + * See the xTimerCreate() API function example usage scenario. + * + */ +#define xTimerStop( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_STOP, 0U, NULL, ( xTicksToWait ) ) + +/** + * BaseType_t xTimerChangePeriod( TimerHandle_t xTimer, + * TickType_t xNewPeriod, + * TickType_t xTicksToWait ); + * + * Timer functionality is provided by a timer service/daemon task. Many of the + * public FreeRTOS timer API functions send commands to the timer service task + * through a queue called the timer command queue. The timer command queue is + * private to the kernel itself and is not directly accessible to application + * code. The length of the timer command queue is set by the + * configTIMER_QUEUE_LENGTH configuration constant. + * + * xTimerChangePeriod() changes the period of a timer that was previously + * created using the xTimerCreate() API function. + * + * xTimerChangePeriod() can be called to change the period of an active or + * dormant state timer. + * + * The configUSE_TIMERS configuration constant must be set to 1 for + * xTimerChangePeriod() to be available. + * + * @param xTimer The handle of the timer that is having its period changed. + * + * @param xNewPeriod The new period for xTimer. Timer periods are specified in + * tick periods, so the constant portTICK_PERIOD_MS can be used to convert a time + * that has been specified in milliseconds. For example, if the timer must + * expire after 100 ticks, then xNewPeriod should be set to 100. Alternatively, + * if the timer must expire after 500ms, then xNewPeriod can be set to + * ( 500 / portTICK_PERIOD_MS ) provided configTICK_RATE_HZ is less than + * or equal to 1000. + * + * @param xTicksToWait Specifies the time, in ticks, that the calling task should + * be held in the Blocked state to wait for the change period command to be + * successfully sent to the timer command queue, should the queue already be + * full when xTimerChangePeriod() was called. xTicksToWait is ignored if + * xTimerChangePeriod() is called before the scheduler is started. + * + * @return pdFAIL will be returned if the change period command could not be + * sent to the timer command queue even after xTicksToWait ticks had passed. + * pdPASS will be returned if the command was successfully sent to the timer + * command queue. When the command is actually processed will depend on the + * priority of the timer service/daemon task relative to other tasks in the + * system. The timer service/daemon task priority is set by the + * configTIMER_TASK_PRIORITY configuration constant. + * + * Example usage: + * @verbatim + * // This function assumes xTimer has already been created. If the timer + * // referenced by xTimer is already active when it is called, then the timer + * // is deleted. If the timer referenced by xTimer is not active when it is + * // called, then the period of the timer is set to 500ms and the timer is + * // started. + * void vAFunction( TimerHandle_t xTimer ) + * { + * if( xTimerIsTimerActive( xTimer ) != pdFALSE ) // or more simply and equivalently "if( xTimerIsTimerActive( xTimer ) )" + * { + * // xTimer is already active - delete it. + * xTimerDelete( xTimer ); + * } + * else + * { + * // xTimer is not active, change its period to 500ms. This will also + * // cause the timer to start. Block for a maximum of 100 ticks if the + * // change period command cannot immediately be sent to the timer + * // command queue. + * if( xTimerChangePeriod( xTimer, 500 / portTICK_PERIOD_MS, 100 ) == pdPASS ) + * { + * // The command was successfully sent. + * } + * else + * { + * // The command could not be sent, even after waiting for 100 ticks + * // to pass. Take appropriate action here. + * } + * } + * } + * @endverbatim + */ + #define xTimerChangePeriod( xTimer, xNewPeriod, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_CHANGE_PERIOD, ( xNewPeriod ), NULL, ( xTicksToWait ) ) + +/** + * BaseType_t xTimerDelete( TimerHandle_t xTimer, TickType_t xTicksToWait ); + * + * Timer functionality is provided by a timer service/daemon task. Many of the + * public FreeRTOS timer API functions send commands to the timer service task + * through a queue called the timer command queue. The timer command queue is + * private to the kernel itself and is not directly accessible to application + * code. The length of the timer command queue is set by the + * configTIMER_QUEUE_LENGTH configuration constant. + * + * xTimerDelete() deletes a timer that was previously created using the + * xTimerCreate() API function. + * + * The configUSE_TIMERS configuration constant must be set to 1 for + * xTimerDelete() to be available. + * + * @param xTimer The handle of the timer being deleted. + * + * @param xTicksToWait Specifies the time, in ticks, that the calling task should + * be held in the Blocked state to wait for the delete command to be + * successfully sent to the timer command queue, should the queue already be + * full when xTimerDelete() was called. xTicksToWait is ignored if xTimerDelete() + * is called before the scheduler is started. + * + * @return pdFAIL will be returned if the delete command could not be sent to + * the timer command queue even after xTicksToWait ticks had passed. pdPASS will + * be returned if the command was successfully sent to the timer command queue. + * When the command is actually processed will depend on the priority of the + * timer service/daemon task relative to other tasks in the system. The timer + * service/daemon task priority is set by the configTIMER_TASK_PRIORITY + * configuration constant. + * + * Example usage: + * + * See the xTimerChangePeriod() API function example usage scenario. + */ +#define xTimerDelete( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_DELETE, 0U, NULL, ( xTicksToWait ) ) + +/** + * BaseType_t xTimerReset( TimerHandle_t xTimer, TickType_t xTicksToWait ); + * + * Timer functionality is provided by a timer service/daemon task. Many of the + * public FreeRTOS timer API functions send commands to the timer service task + * through a queue called the timer command queue. The timer command queue is + * private to the kernel itself and is not directly accessible to application + * code. The length of the timer command queue is set by the + * configTIMER_QUEUE_LENGTH configuration constant. + * + * xTimerReset() re-starts a timer that was previously created using the + * xTimerCreate() API function. If the timer had already been started and was + * already in the active state, then xTimerReset() will cause the timer to + * re-evaluate its expiry time so that it is relative to when xTimerReset() was + * called. If the timer was in the dormant state then xTimerReset() has + * equivalent functionality to the xTimerStart() API function. + * + * Resetting a timer ensures the timer is in the active state. If the timer + * is not stopped, deleted, or reset in the mean time, the callback function + * associated with the timer will get called 'n' ticks after xTimerReset() was + * called, where 'n' is the timers defined period. + * + * It is valid to call xTimerReset() before the scheduler has been started, but + * when this is done the timer will not actually start until the scheduler is + * started, and the timers expiry time will be relative to when the scheduler is + * started, not relative to when xTimerReset() was called. + * + * The configUSE_TIMERS configuration constant must be set to 1 for xTimerReset() + * to be available. + * + * @param xTimer The handle of the timer being reset/started/restarted. + * + * @param xTicksToWait Specifies the time, in ticks, that the calling task should + * be held in the Blocked state to wait for the reset command to be successfully + * sent to the timer command queue, should the queue already be full when + * xTimerReset() was called. xTicksToWait is ignored if xTimerReset() is called + * before the scheduler is started. + * + * @return pdFAIL will be returned if the reset command could not be sent to + * the timer command queue even after xTicksToWait ticks had passed. pdPASS will + * be returned if the command was successfully sent to the timer command queue. + * When the command is actually processed will depend on the priority of the + * timer service/daemon task relative to other tasks in the system, although the + * timers expiry time is relative to when xTimerStart() is actually called. The + * timer service/daemon task priority is set by the configTIMER_TASK_PRIORITY + * configuration constant. + * + * Example usage: + * @verbatim + * // When a key is pressed, an LCD back-light is switched on. If 5 seconds pass + * // without a key being pressed, then the LCD back-light is switched off. In + * // this case, the timer is a one-shot timer. + * + * TimerHandle_t xBacklightTimer = NULL; + * + * // The callback function assigned to the one-shot timer. In this case the + * // parameter is not used. + * void vBacklightTimerCallback( TimerHandle_t pxTimer ) + * { + * // The timer expired, therefore 5 seconds must have passed since a key + * // was pressed. Switch off the LCD back-light. + * vSetBacklightState( BACKLIGHT_OFF ); + * } + * + * // The key press event handler. + * void vKeyPressEventHandler( char cKey ) + * { + * // Ensure the LCD back-light is on, then reset the timer that is + * // responsible for turning the back-light off after 5 seconds of + * // key inactivity. Wait 10 ticks for the command to be successfully sent + * // if it cannot be sent immediately. + * vSetBacklightState( BACKLIGHT_ON ); + * if( xTimerReset( xBacklightTimer, 100 ) != pdPASS ) + * { + * // The reset command was not executed successfully. Take appropriate + * // action here. + * } + * + * // Perform the rest of the key processing here. + * } + * + * void main( void ) + * { + * int32_t x; + * + * // Create then start the one-shot timer that is responsible for turning + * // the back-light off if no keys are pressed within a 5 second period. + * xBacklightTimer = xTimerCreate( "BacklightTimer", // Just a text name, not used by the kernel. + * ( 5000 / portTICK_PERIOD_MS), // The timer period in ticks. + * pdFALSE, // The timer is a one-shot timer. + * 0, // The id is not used by the callback so can take any value. + * vBacklightTimerCallback // The callback function that switches the LCD back-light off. + * ); + * + * if( xBacklightTimer == NULL ) + * { + * // The timer was not created. + * } + * else + * { + * // Start the timer. No block time is specified, and even if one was + * // it would be ignored because the scheduler has not yet been + * // started. + * if( xTimerStart( xBacklightTimer, 0 ) != pdPASS ) + * { + * // The timer could not be set into the Active state. + * } + * } + * + * // ... + * // Create tasks here. + * // ... + * + * // Starting the scheduler will start the timer running as it has already + * // been set into the active state. + * vTaskStartScheduler(); + * + * // Should not reach here. + * for( ;; ); + * } + * @endverbatim + */ +#define xTimerReset( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_RESET, ( xTaskGetTickCount() ), NULL, ( xTicksToWait ) ) + +/** + * BaseType_t xTimerStartFromISR( TimerHandle_t xTimer, + * BaseType_t *pxHigherPriorityTaskWoken ); + * + * A version of xTimerStart() that can be called from an interrupt service + * routine. + * + * @param xTimer The handle of the timer being started/restarted. + * + * @param pxHigherPriorityTaskWoken The timer service/daemon task spends most + * of its time in the Blocked state, waiting for messages to arrive on the timer + * command queue. Calling xTimerStartFromISR() writes a message to the timer + * command queue, so has the potential to transition the timer service/daemon + * task out of the Blocked state. If calling xTimerStartFromISR() causes the + * timer service/daemon task to leave the Blocked state, and the timer service/ + * daemon task has a priority equal to or greater than the currently executing + * task (the task that was interrupted), then *pxHigherPriorityTaskWoken will + * get set to pdTRUE internally within the xTimerStartFromISR() function. If + * xTimerStartFromISR() sets this value to pdTRUE then a context switch should + * be performed before the interrupt exits. + * + * @return pdFAIL will be returned if the start command could not be sent to + * the timer command queue. pdPASS will be returned if the command was + * successfully sent to the timer command queue. When the command is actually + * processed will depend on the priority of the timer service/daemon task + * relative to other tasks in the system, although the timers expiry time is + * relative to when xTimerStartFromISR() is actually called. The timer + * service/daemon task priority is set by the configTIMER_TASK_PRIORITY + * configuration constant. + * + * Example usage: + * @verbatim + * // This scenario assumes xBacklightTimer has already been created. When a + * // key is pressed, an LCD back-light is switched on. If 5 seconds pass + * // without a key being pressed, then the LCD back-light is switched off. In + * // this case, the timer is a one-shot timer, and unlike the example given for + * // the xTimerReset() function, the key press event handler is an interrupt + * // service routine. + * + * // The callback function assigned to the one-shot timer. In this case the + * // parameter is not used. + * void vBacklightTimerCallback( TimerHandle_t pxTimer ) + * { + * // The timer expired, therefore 5 seconds must have passed since a key + * // was pressed. Switch off the LCD back-light. + * vSetBacklightState( BACKLIGHT_OFF ); + * } + * + * // The key press interrupt service routine. + * void vKeyPressEventInterruptHandler( void ) + * { + * BaseType_t xHigherPriorityTaskWoken = pdFALSE; + * + * // Ensure the LCD back-light is on, then restart the timer that is + * // responsible for turning the back-light off after 5 seconds of + * // key inactivity. This is an interrupt service routine so can only + * // call FreeRTOS API functions that end in "FromISR". + * vSetBacklightState( BACKLIGHT_ON ); + * + * // xTimerStartFromISR() or xTimerResetFromISR() could be called here + * // as both cause the timer to re-calculate its expiry time. + * // xHigherPriorityTaskWoken was initialised to pdFALSE when it was + * // declared (in this function). + * if( xTimerStartFromISR( xBacklightTimer, &xHigherPriorityTaskWoken ) != pdPASS ) + * { + * // The start command was not executed successfully. Take appropriate + * // action here. + * } + * + * // Perform the rest of the key processing here. + * + * // If xHigherPriorityTaskWoken equals pdTRUE, then a context switch + * // should be performed. The syntax required to perform a context switch + * // from inside an ISR varies from port to port, and from compiler to + * // compiler. Inspect the demos for the port you are using to find the + * // actual syntax required. + * if( xHigherPriorityTaskWoken != pdFALSE ) + * { + * // Call the interrupt safe yield function here (actual function + * // depends on the FreeRTOS port being used). + * } + * } + * @endverbatim + */ +#define xTimerStartFromISR( xTimer, pxHigherPriorityTaskWoken ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_START_FROM_ISR, ( xTaskGetTickCountFromISR() ), ( pxHigherPriorityTaskWoken ), 0U ) + +/** + * BaseType_t xTimerStopFromISR( TimerHandle_t xTimer, + * BaseType_t *pxHigherPriorityTaskWoken ); + * + * A version of xTimerStop() that can be called from an interrupt service + * routine. + * + * @param xTimer The handle of the timer being stopped. + * + * @param pxHigherPriorityTaskWoken The timer service/daemon task spends most + * of its time in the Blocked state, waiting for messages to arrive on the timer + * command queue. Calling xTimerStopFromISR() writes a message to the timer + * command queue, so has the potential to transition the timer service/daemon + * task out of the Blocked state. If calling xTimerStopFromISR() causes the + * timer service/daemon task to leave the Blocked state, and the timer service/ + * daemon task has a priority equal to or greater than the currently executing + * task (the task that was interrupted), then *pxHigherPriorityTaskWoken will + * get set to pdTRUE internally within the xTimerStopFromISR() function. If + * xTimerStopFromISR() sets this value to pdTRUE then a context switch should + * be performed before the interrupt exits. + * + * @return pdFAIL will be returned if the stop command could not be sent to + * the timer command queue. pdPASS will be returned if the command was + * successfully sent to the timer command queue. When the command is actually + * processed will depend on the priority of the timer service/daemon task + * relative to other tasks in the system. The timer service/daemon task + * priority is set by the configTIMER_TASK_PRIORITY configuration constant. + * + * Example usage: + * @verbatim + * // This scenario assumes xTimer has already been created and started. When + * // an interrupt occurs, the timer should be simply stopped. + * + * // The interrupt service routine that stops the timer. + * void vAnExampleInterruptServiceRoutine( void ) + * { + * BaseType_t xHigherPriorityTaskWoken = pdFALSE; + * + * // The interrupt has occurred - simply stop the timer. + * // xHigherPriorityTaskWoken was set to pdFALSE where it was defined + * // (within this function). As this is an interrupt service routine, only + * // FreeRTOS API functions that end in "FromISR" can be used. + * if( xTimerStopFromISR( xTimer, &xHigherPriorityTaskWoken ) != pdPASS ) + * { + * // The stop command was not executed successfully. Take appropriate + * // action here. + * } + * + * // If xHigherPriorityTaskWoken equals pdTRUE, then a context switch + * // should be performed. The syntax required to perform a context switch + * // from inside an ISR varies from port to port, and from compiler to + * // compiler. Inspect the demos for the port you are using to find the + * // actual syntax required. + * if( xHigherPriorityTaskWoken != pdFALSE ) + * { + * // Call the interrupt safe yield function here (actual function + * // depends on the FreeRTOS port being used). + * } + * } + * @endverbatim + */ +#define xTimerStopFromISR( xTimer, pxHigherPriorityTaskWoken ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_STOP_FROM_ISR, 0, ( pxHigherPriorityTaskWoken ), 0U ) + +/** + * BaseType_t xTimerChangePeriodFromISR( TimerHandle_t xTimer, + * TickType_t xNewPeriod, + * BaseType_t *pxHigherPriorityTaskWoken ); + * + * A version of xTimerChangePeriod() that can be called from an interrupt + * service routine. + * + * @param xTimer The handle of the timer that is having its period changed. + * + * @param xNewPeriod The new period for xTimer. Timer periods are specified in + * tick periods, so the constant portTICK_PERIOD_MS can be used to convert a time + * that has been specified in milliseconds. For example, if the timer must + * expire after 100 ticks, then xNewPeriod should be set to 100. Alternatively, + * if the timer must expire after 500ms, then xNewPeriod can be set to + * ( 500 / portTICK_PERIOD_MS ) provided configTICK_RATE_HZ is less than + * or equal to 1000. + * + * @param pxHigherPriorityTaskWoken The timer service/daemon task spends most + * of its time in the Blocked state, waiting for messages to arrive on the timer + * command queue. Calling xTimerChangePeriodFromISR() writes a message to the + * timer command queue, so has the potential to transition the timer service/ + * daemon task out of the Blocked state. If calling xTimerChangePeriodFromISR() + * causes the timer service/daemon task to leave the Blocked state, and the + * timer service/daemon task has a priority equal to or greater than the + * currently executing task (the task that was interrupted), then + * *pxHigherPriorityTaskWoken will get set to pdTRUE internally within the + * xTimerChangePeriodFromISR() function. If xTimerChangePeriodFromISR() sets + * this value to pdTRUE then a context switch should be performed before the + * interrupt exits. + * + * @return pdFAIL will be returned if the command to change the timers period + * could not be sent to the timer command queue. pdPASS will be returned if the + * command was successfully sent to the timer command queue. When the command + * is actually processed will depend on the priority of the timer service/daemon + * task relative to other tasks in the system. The timer service/daemon task + * priority is set by the configTIMER_TASK_PRIORITY configuration constant. + * + * Example usage: + * @verbatim + * // This scenario assumes xTimer has already been created and started. When + * // an interrupt occurs, the period of xTimer should be changed to 500ms. + * + * // The interrupt service routine that changes the period of xTimer. + * void vAnExampleInterruptServiceRoutine( void ) + * { + * BaseType_t xHigherPriorityTaskWoken = pdFALSE; + * + * // The interrupt has occurred - change the period of xTimer to 500ms. + * // xHigherPriorityTaskWoken was set to pdFALSE where it was defined + * // (within this function). As this is an interrupt service routine, only + * // FreeRTOS API functions that end in "FromISR" can be used. + * if( xTimerChangePeriodFromISR( xTimer, &xHigherPriorityTaskWoken ) != pdPASS ) + * { + * // The command to change the timers period was not executed + * // successfully. Take appropriate action here. + * } + * + * // If xHigherPriorityTaskWoken equals pdTRUE, then a context switch + * // should be performed. The syntax required to perform a context switch + * // from inside an ISR varies from port to port, and from compiler to + * // compiler. Inspect the demos for the port you are using to find the + * // actual syntax required. + * if( xHigherPriorityTaskWoken != pdFALSE ) + * { + * // Call the interrupt safe yield function here (actual function + * // depends on the FreeRTOS port being used). + * } + * } + * @endverbatim + */ +#define xTimerChangePeriodFromISR( xTimer, xNewPeriod, pxHigherPriorityTaskWoken ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_CHANGE_PERIOD_FROM_ISR, ( xNewPeriod ), ( pxHigherPriorityTaskWoken ), 0U ) + +/** + * BaseType_t xTimerResetFromISR( TimerHandle_t xTimer, + * BaseType_t *pxHigherPriorityTaskWoken ); + * + * A version of xTimerReset() that can be called from an interrupt service + * routine. + * + * @param xTimer The handle of the timer that is to be started, reset, or + * restarted. + * + * @param pxHigherPriorityTaskWoken The timer service/daemon task spends most + * of its time in the Blocked state, waiting for messages to arrive on the timer + * command queue. Calling xTimerResetFromISR() writes a message to the timer + * command queue, so has the potential to transition the timer service/daemon + * task out of the Blocked state. If calling xTimerResetFromISR() causes the + * timer service/daemon task to leave the Blocked state, and the timer service/ + * daemon task has a priority equal to or greater than the currently executing + * task (the task that was interrupted), then *pxHigherPriorityTaskWoken will + * get set to pdTRUE internally within the xTimerResetFromISR() function. If + * xTimerResetFromISR() sets this value to pdTRUE then a context switch should + * be performed before the interrupt exits. + * + * @return pdFAIL will be returned if the reset command could not be sent to + * the timer command queue. pdPASS will be returned if the command was + * successfully sent to the timer command queue. When the command is actually + * processed will depend on the priority of the timer service/daemon task + * relative to other tasks in the system, although the timers expiry time is + * relative to when xTimerResetFromISR() is actually called. The timer service/daemon + * task priority is set by the configTIMER_TASK_PRIORITY configuration constant. + * + * Example usage: + * @verbatim + * // This scenario assumes xBacklightTimer has already been created. When a + * // key is pressed, an LCD back-light is switched on. If 5 seconds pass + * // without a key being pressed, then the LCD back-light is switched off. In + * // this case, the timer is a one-shot timer, and unlike the example given for + * // the xTimerReset() function, the key press event handler is an interrupt + * // service routine. + * + * // The callback function assigned to the one-shot timer. In this case the + * // parameter is not used. + * void vBacklightTimerCallback( TimerHandle_t pxTimer ) + * { + * // The timer expired, therefore 5 seconds must have passed since a key + * // was pressed. Switch off the LCD back-light. + * vSetBacklightState( BACKLIGHT_OFF ); + * } + * + * // The key press interrupt service routine. + * void vKeyPressEventInterruptHandler( void ) + * { + * BaseType_t xHigherPriorityTaskWoken = pdFALSE; + * + * // Ensure the LCD back-light is on, then reset the timer that is + * // responsible for turning the back-light off after 5 seconds of + * // key inactivity. This is an interrupt service routine so can only + * // call FreeRTOS API functions that end in "FromISR". + * vSetBacklightState( BACKLIGHT_ON ); + * + * // xTimerStartFromISR() or xTimerResetFromISR() could be called here + * // as both cause the timer to re-calculate its expiry time. + * // xHigherPriorityTaskWoken was initialised to pdFALSE when it was + * // declared (in this function). + * if( xTimerResetFromISR( xBacklightTimer, &xHigherPriorityTaskWoken ) != pdPASS ) + * { + * // The reset command was not executed successfully. Take appropriate + * // action here. + * } + * + * // Perform the rest of the key processing here. + * + * // If xHigherPriorityTaskWoken equals pdTRUE, then a context switch + * // should be performed. The syntax required to perform a context switch + * // from inside an ISR varies from port to port, and from compiler to + * // compiler. Inspect the demos for the port you are using to find the + * // actual syntax required. + * if( xHigherPriorityTaskWoken != pdFALSE ) + * { + * // Call the interrupt safe yield function here (actual function + * // depends on the FreeRTOS port being used). + * } + * } + * @endverbatim + */ +#define xTimerResetFromISR( xTimer, pxHigherPriorityTaskWoken ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_RESET_FROM_ISR, ( xTaskGetTickCountFromISR() ), ( pxHigherPriorityTaskWoken ), 0U ) + + +/** + * BaseType_t xTimerPendFunctionCallFromISR( PendedFunction_t xFunctionToPend, + * void *pvParameter1, + * uint32_t ulParameter2, + * BaseType_t *pxHigherPriorityTaskWoken ); + * + * + * Used from application interrupt service routines to defer the execution of a + * function to the RTOS daemon task (the timer service task, hence this function + * is implemented in timers.c and is prefixed with 'Timer'). + * + * Ideally an interrupt service routine (ISR) is kept as short as possible, but + * sometimes an ISR either has a lot of processing to do, or needs to perform + * processing that is not deterministic. In these cases + * xTimerPendFunctionCallFromISR() can be used to defer processing of a function + * to the RTOS daemon task. + * + * A mechanism is provided that allows the interrupt to return directly to the + * task that will subsequently execute the pended callback function. This + * allows the callback function to execute contiguously in time with the + * interrupt - just as if the callback had executed in the interrupt itself. + * + * @param xFunctionToPend The function to execute from the timer service/ + * daemon task. The function must conform to the PendedFunction_t + * prototype. + * + * @param pvParameter1 The value of the callback function's first parameter. + * The parameter has a void * type to allow it to be used to pass any type. + * For example, unsigned longs can be cast to a void *, or the void * can be + * used to point to a structure. + * + * @param ulParameter2 The value of the callback function's second parameter. + * + * @param pxHigherPriorityTaskWoken As mentioned above, calling this function + * will result in a message being sent to the timer daemon task. If the + * priority of the timer daemon task (which is set using + * configTIMER_TASK_PRIORITY in FreeRTOSConfig.h) is higher than the priority of + * the currently running task (the task the interrupt interrupted) then + * *pxHigherPriorityTaskWoken will be set to pdTRUE within + * xTimerPendFunctionCallFromISR(), indicating that a context switch should be + * requested before the interrupt exits. For that reason + * *pxHigherPriorityTaskWoken must be initialised to pdFALSE. See the + * example code below. + * + * @return pdPASS is returned if the message was successfully sent to the + * timer daemon task, otherwise pdFALSE is returned. + * + * Example usage: + * @verbatim + * + * // The callback function that will execute in the context of the daemon task. + * // Note callback functions must all use this same prototype. + * void vProcessInterface( void *pvParameter1, uint32_t ulParameter2 ) + * { + * BaseType_t xInterfaceToService; + * + * // The interface that requires servicing is passed in the second + * // parameter. The first parameter is not used in this case. + * xInterfaceToService = ( BaseType_t ) ulParameter2; + * + * // ...Perform the processing here... + * } + * + * // An ISR that receives data packets from multiple interfaces + * void vAnISR( void ) + * { + * BaseType_t xInterfaceToService, xHigherPriorityTaskWoken; + * + * // Query the hardware to determine which interface needs processing. + * xInterfaceToService = prvCheckInterfaces(); + * + * // The actual processing is to be deferred to a task. Request the + * // vProcessInterface() callback function is executed, passing in the + * // number of the interface that needs processing. The interface to + * // service is passed in the second parameter. The first parameter is + * // not used in this case. + * xHigherPriorityTaskWoken = pdFALSE; + * xTimerPendFunctionCallFromISR( vProcessInterface, NULL, ( uint32_t ) xInterfaceToService, &xHigherPriorityTaskWoken ); + * + * // If xHigherPriorityTaskWoken is now set to pdTRUE then a context + * // switch should be requested. The macro used is port specific and will + * // be either portYIELD_FROM_ISR() or portEND_SWITCHING_ISR() - refer to + * // the documentation page for the port being used. + * portYIELD_FROM_ISR( xHigherPriorityTaskWoken ); + * + * } + * @endverbatim + */ +BaseType_t xTimerPendFunctionCallFromISR( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + + /** + * BaseType_t xTimerPendFunctionCall( PendedFunction_t xFunctionToPend, + * void *pvParameter1, + * uint32_t ulParameter2, + * TickType_t xTicksToWait ); + * + * + * Used to defer the execution of a function to the RTOS daemon task (the timer + * service task, hence this function is implemented in timers.c and is prefixed + * with 'Timer'). + * + * @param xFunctionToPend The function to execute from the timer service/ + * daemon task. The function must conform to the PendedFunction_t + * prototype. + * + * @param pvParameter1 The value of the callback function's first parameter. + * The parameter has a void * type to allow it to be used to pass any type. + * For example, unsigned longs can be cast to a void *, or the void * can be + * used to point to a structure. + * + * @param ulParameter2 The value of the callback function's second parameter. + * + * @param xTicksToWait Calling this function will result in a message being + * sent to the timer daemon task on a queue. xTicksToWait is the amount of + * time the calling task should remain in the Blocked state (so not using any + * processing time) for space to become available on the timer queue if the + * queue is found to be full. + * + * @return pdPASS is returned if the message was successfully sent to the + * timer daemon task, otherwise pdFALSE is returned. + * + */ +BaseType_t xTimerPendFunctionCall( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * const char * const pcTimerGetName( TimerHandle_t xTimer ); + * + * Returns the name that was assigned to a timer when the timer was created. + * + * @param xTimer The handle of the timer being queried. + * + * @return The name assigned to the timer specified by the xTimer parameter. + */ +const char * pcTimerGetName( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + +/** + * void vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload ); + * + * Updates a timer to be either an autoreload timer, in which case the timer + * automatically resets itself each time it expires, or a one shot timer, in + * which case the timer will only expire once unless it is manually restarted. + * + * @param xTimer The handle of the timer being updated. + * + * @param uxAutoReload If uxAutoReload is set to pdTRUE then the timer will + * expire repeatedly with a frequency set by the timer's period (see the + * xTimerPeriodInTicks parameter of the xTimerCreate() API function). If + * uxAutoReload is set to pdFALSE then the timer will be a one-shot timer and + * enter the dormant state after it expires. + */ +void vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload ) PRIVILEGED_FUNCTION; + +/** + * TickType_t xTimerGetPeriod( TimerHandle_t xTimer ); + * + * Returns the period of a timer. + * + * @param xTimer The handle of the timer being queried. + * + * @return The period of the timer in ticks. + */ +TickType_t xTimerGetPeriod( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; + +/** +* TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer ); +* +* Returns the time in ticks at which the timer will expire. If this is less +* than the current tick count then the expiry time has overflowed from the +* current time. +* +* @param xTimer The handle of the timer being queried. +* +* @return If the timer is running then the time in ticks at which the timer +* will next expire is returned. If the timer is not running then the return +* value is undefined. +*/ +TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; + +/* + * Functions beyond this part are not part of the public API and are intended + * for use by the kernel only. + */ +BaseType_t xTimerCreateTimerTask( void ) PRIVILEGED_FUNCTION; +BaseType_t xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +#if( configUSE_TRACE_FACILITY == 1 ) + void vTimerSetTimerNumber( TimerHandle_t xTimer, UBaseType_t uxTimerNumber ) PRIVILEGED_FUNCTION; + UBaseType_t uxTimerGetTimerNumber( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* TIMERS_H */ + + + diff --git a/components/freertos/list.c b/components/freertos/list.c new file mode 100644 index 00000000..21dabdec --- /dev/null +++ b/components/freertos/list.c @@ -0,0 +1,198 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +#include +#include "FreeRTOS.h" +#include "list.h" + +/*----------------------------------------------------------- + * PUBLIC LIST API documented in list.h + *----------------------------------------------------------*/ + +void vListInitialise( List_t * const pxList ) +{ + /* The list structure contains a list item which is used to mark the + end of the list. To initialise the list the list end is inserted + as the only list entry. */ + pxList->pxIndex = ( ListItem_t * ) &( pxList->xListEnd ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ + + /* The list end value is the highest possible value in the list to + ensure it remains at the end of the list. */ + pxList->xListEnd.xItemValue = portMAX_DELAY; + + /* The list end next and previous pointers point to itself so we know + when the list is empty. */ + pxList->xListEnd.pxNext = ( ListItem_t * ) &( pxList->xListEnd ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ + pxList->xListEnd.pxPrevious = ( ListItem_t * ) &( pxList->xListEnd );/*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ + + pxList->uxNumberOfItems = ( UBaseType_t ) 0U; + + /* Write known values into the list if + configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ + listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList ); + listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList ); +} +/*-----------------------------------------------------------*/ + +void vListInitialiseItem( ListItem_t * const pxItem ) +{ + /* Make sure the list item is not recorded as being on a list. */ + pxItem->pxContainer = NULL; + + /* Write known values into the list item if + configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ + listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ); + listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ); +} +/*-----------------------------------------------------------*/ + +void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem ) +{ +ListItem_t * const pxIndex = pxList->pxIndex; + + /* Only effective when configASSERT() is also defined, these tests may catch + the list data structures being overwritten in memory. They will not catch + data errors caused by incorrect configuration or use of FreeRTOS. */ + listTEST_LIST_INTEGRITY( pxList ); + listTEST_LIST_ITEM_INTEGRITY( pxNewListItem ); + + /* Insert a new list item into pxList, but rather than sort the list, + makes the new list item the last item to be removed by a call to + listGET_OWNER_OF_NEXT_ENTRY(). */ + pxNewListItem->pxNext = pxIndex; + pxNewListItem->pxPrevious = pxIndex->pxPrevious; + + /* Only used during decision coverage testing. */ + mtCOVERAGE_TEST_DELAY(); + + pxIndex->pxPrevious->pxNext = pxNewListItem; + pxIndex->pxPrevious = pxNewListItem; + + /* Remember which list the item is in. */ + pxNewListItem->pxContainer = pxList; + + ( pxList->uxNumberOfItems )++; +} +/*-----------------------------------------------------------*/ + +void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem ) +{ +ListItem_t *pxIterator; +const TickType_t xValueOfInsertion = pxNewListItem->xItemValue; + + /* Only effective when configASSERT() is also defined, these tests may catch + the list data structures being overwritten in memory. They will not catch + data errors caused by incorrect configuration or use of FreeRTOS. */ + listTEST_LIST_INTEGRITY( pxList ); + listTEST_LIST_ITEM_INTEGRITY( pxNewListItem ); + + /* Insert the new list item into the list, sorted in xItemValue order. + + If the list already contains a list item with the same item value then the + new list item should be placed after it. This ensures that TCBs which are + stored in ready lists (all of which have the same xItemValue value) get a + share of the CPU. However, if the xItemValue is the same as the back marker + the iteration loop below will not end. Therefore the value is checked + first, and the algorithm slightly modified if necessary. */ + if( xValueOfInsertion == portMAX_DELAY ) + { + pxIterator = pxList->xListEnd.pxPrevious; + } + else + { + /* *** NOTE *********************************************************** + If you find your application is crashing here then likely causes are + listed below. In addition see https://www.freertos.org/FAQHelp.html for + more tips, and ensure configASSERT() is defined! + https://www.freertos.org/a00110.html#configASSERT + + 1) Stack overflow - + see https://www.freertos.org/Stacks-and-stack-overflow-checking.html + 2) Incorrect interrupt priority assignment, especially on Cortex-M + parts where numerically high priority values denote low actual + interrupt priorities, which can seem counter intuitive. See + https://www.freertos.org/RTOS-Cortex-M3-M4.html and the definition + of configMAX_SYSCALL_INTERRUPT_PRIORITY on + https://www.freertos.org/a00110.html + 3) Calling an API function from within a critical section or when + the scheduler is suspended, or calling an API function that does + not end in "FromISR" from an interrupt. + 4) Using a queue or semaphore before it has been initialised or + before the scheduler has been started (are interrupts firing + before vTaskStartScheduler() has been called?). + **********************************************************************/ + + for( pxIterator = ( ListItem_t * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext ) /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. *//*lint !e440 The iterator moves to a different value, not xValueOfInsertion. */ + { + /* There is nothing to do here, just iterating to the wanted + insertion position. */ + } + } + + pxNewListItem->pxNext = pxIterator->pxNext; + pxNewListItem->pxNext->pxPrevious = pxNewListItem; + pxNewListItem->pxPrevious = pxIterator; + pxIterator->pxNext = pxNewListItem; + + /* Remember which list the item is in. This allows fast removal of the + item later. */ + pxNewListItem->pxContainer = pxList; + + ( pxList->uxNumberOfItems )++; +} +/*-----------------------------------------------------------*/ + +UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ) +{ +/* The list item knows which list it is in. Obtain the list from the list +item. */ +List_t * const pxList = pxItemToRemove->pxContainer; + + pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious; + pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext; + + /* Only used during decision coverage testing. */ + mtCOVERAGE_TEST_DELAY(); + + /* Make sure the index is left pointing to a valid item. */ + if( pxList->pxIndex == pxItemToRemove ) + { + pxList->pxIndex = pxItemToRemove->pxPrevious; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + pxItemToRemove->pxContainer = NULL; + ( pxList->uxNumberOfItems )--; + + return pxList->uxNumberOfItems; +} +/*-----------------------------------------------------------*/ + diff --git a/components/freertos/portable/MemMang/heap_1.c b/components/freertos/portable/MemMang/heap_1.c new file mode 100644 index 00000000..542317dc --- /dev/null +++ b/components/freertos/portable/MemMang/heap_1.c @@ -0,0 +1,146 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +/* + * The simplest possible implementation of pvPortMalloc(). Note that this + * implementation does NOT allow allocated memory to be freed again. + * + * See heap_2.c, heap_3.c and heap_4.c for alternative implementations, and the + * memory management pages of http://www.FreeRTOS.org for more information. + */ +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#include "FreeRTOS.h" +#include "task.h" + +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) + #error This file must not be used if configSUPPORT_DYNAMIC_ALLOCATION is 0 +#endif + +/* A few bytes might be lost to byte aligning the heap start address. */ +#define configADJUSTED_HEAP_SIZE ( configTOTAL_HEAP_SIZE - portBYTE_ALIGNMENT ) + +/* Allocate the memory for the heap. */ +#if( configAPPLICATION_ALLOCATED_HEAP == 1 ) + /* The application writer has already defined the array used for the RTOS + heap - probably so it can be placed in a special segment or address. */ + extern uint8_t ucHeap[ configTOTAL_HEAP_SIZE ]; +#else + static uint8_t ucHeap[ configTOTAL_HEAP_SIZE ]; +#endif /* configAPPLICATION_ALLOCATED_HEAP */ + +/* Index into the ucHeap array. */ +static size_t xNextFreeByte = ( size_t ) 0; + +/*-----------------------------------------------------------*/ + +void *pvPortMalloc( size_t xWantedSize ) +{ +void *pvReturn = NULL; +static uint8_t *pucAlignedHeap = NULL; + + /* Ensure that blocks are always aligned to the required number of bytes. */ + #if( portBYTE_ALIGNMENT != 1 ) + { + if( xWantedSize & portBYTE_ALIGNMENT_MASK ) + { + /* Byte alignment required. */ + xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & portBYTE_ALIGNMENT_MASK ) ); + } + } + #endif + + vTaskSuspendAll(); + { + if( pucAlignedHeap == NULL ) + { + /* Ensure the heap starts on a correctly aligned boundary. */ + pucAlignedHeap = ( uint8_t * ) ( ( ( portPOINTER_SIZE_TYPE ) &ucHeap[ portBYTE_ALIGNMENT ] ) & ( ~( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) ) ); + } + + /* Check there is enough room left for the allocation. */ + if( ( ( xNextFreeByte + xWantedSize ) < configADJUSTED_HEAP_SIZE ) && + ( ( xNextFreeByte + xWantedSize ) > xNextFreeByte ) )/* Check for overflow. */ + { + /* Return the next free byte then increment the index past this + block. */ + pvReturn = pucAlignedHeap + xNextFreeByte; + xNextFreeByte += xWantedSize; + } + + traceMALLOC( pvReturn, xWantedSize ); + } + ( void ) xTaskResumeAll(); + + #if( configUSE_MALLOC_FAILED_HOOK == 1 ) + { + if( pvReturn == NULL ) + { + extern void vApplicationMallocFailedHook( void ); + vApplicationMallocFailedHook(); + } + } + #endif + + return pvReturn; +} +/*-----------------------------------------------------------*/ + +void vPortFree( void *pv ) +{ + /* Memory cannot be freed using this scheme. See heap_2.c, heap_3.c and + heap_4.c for alternative implementations, and the memory management pages of + http://www.FreeRTOS.org for more information. */ + ( void ) pv; + + /* Force an assert as it is invalid to call this function. */ + configASSERT( pv == NULL ); +} +/*-----------------------------------------------------------*/ + +void vPortInitialiseBlocks( void ) +{ + /* Only required when static memory is not cleared. */ + xNextFreeByte = ( size_t ) 0; +} +/*-----------------------------------------------------------*/ + +size_t xPortGetFreeHeapSize( void ) +{ + return ( configADJUSTED_HEAP_SIZE - xNextFreeByte ); +} + + + diff --git a/components/freertos/portable/MemMang/heap_2.c b/components/freertos/portable/MemMang/heap_2.c new file mode 100644 index 00000000..7d069212 --- /dev/null +++ b/components/freertos/portable/MemMang/heap_2.c @@ -0,0 +1,272 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* + * A sample implementation of pvPortMalloc() and vPortFree() that permits + * allocated blocks to be freed, but does not combine adjacent free blocks + * into a single larger block (and so will fragment memory). See heap_4.c for + * an equivalent that does combine adjacent blocks into single larger blocks. + * + * See heap_1.c, heap_3.c and heap_4.c for alternative implementations, and the + * memory management pages of http://www.FreeRTOS.org for more information. + */ +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#include "FreeRTOS.h" +#include "task.h" + +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) + #error This file must not be used if configSUPPORT_DYNAMIC_ALLOCATION is 0 +#endif + +/* A few bytes might be lost to byte aligning the heap start address. */ +#define configADJUSTED_HEAP_SIZE ( configTOTAL_HEAP_SIZE - portBYTE_ALIGNMENT ) + +/* + * Initialises the heap structures before their first use. + */ +static void prvHeapInit( void ); + +/* Allocate the memory for the heap. */ +#if( configAPPLICATION_ALLOCATED_HEAP == 1 ) + /* The application writer has already defined the array used for the RTOS + heap - probably so it can be placed in a special segment or address. */ + extern uint8_t ucHeap[ configTOTAL_HEAP_SIZE ]; +#else + static uint8_t ucHeap[ configTOTAL_HEAP_SIZE ]; +#endif /* configAPPLICATION_ALLOCATED_HEAP */ + + +/* Define the linked list structure. This is used to link free blocks in order +of their size. */ +typedef struct A_BLOCK_LINK +{ + struct A_BLOCK_LINK *pxNextFreeBlock; /*<< The next free block in the list. */ + size_t xBlockSize; /*<< The size of the free block. */ +} BlockLink_t; + + +static const uint16_t heapSTRUCT_SIZE = ( ( sizeof ( BlockLink_t ) + ( portBYTE_ALIGNMENT - 1 ) ) & ~portBYTE_ALIGNMENT_MASK ); +#define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( heapSTRUCT_SIZE * 2 ) ) + +/* Create a couple of list links to mark the start and end of the list. */ +static BlockLink_t xStart, xEnd; + +/* Keeps track of the number of free bytes remaining, but says nothing about +fragmentation. */ +static size_t xFreeBytesRemaining = configADJUSTED_HEAP_SIZE; + +/* STATIC FUNCTIONS ARE DEFINED AS MACROS TO MINIMIZE THE FUNCTION CALL DEPTH. */ + +/* + * Insert a block into the list of free blocks - which is ordered by size of + * the block. Small blocks at the start of the list and large blocks at the end + * of the list. + */ +#define prvInsertBlockIntoFreeList( pxBlockToInsert ) \ +{ \ +BlockLink_t *pxIterator; \ +size_t xBlockSize; \ + \ + xBlockSize = pxBlockToInsert->xBlockSize; \ + \ + /* Iterate through the list until a block is found that has a larger size */ \ + /* than the block we are inserting. */ \ + for( pxIterator = &xStart; pxIterator->pxNextFreeBlock->xBlockSize < xBlockSize; pxIterator = pxIterator->pxNextFreeBlock ) \ + { \ + /* There is nothing to do here - just iterate to the correct position. */ \ + } \ + \ + /* Update the list to include the block being inserted in the correct */ \ + /* position. */ \ + pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock; \ + pxIterator->pxNextFreeBlock = pxBlockToInsert; \ +} +/*-----------------------------------------------------------*/ + +void *pvPortMalloc( size_t xWantedSize ) +{ +BlockLink_t *pxBlock, *pxPreviousBlock, *pxNewBlockLink; +static BaseType_t xHeapHasBeenInitialised = pdFALSE; +void *pvReturn = NULL; + + vTaskSuspendAll(); + { + /* If this is the first call to malloc then the heap will require + initialisation to setup the list of free blocks. */ + if( xHeapHasBeenInitialised == pdFALSE ) + { + prvHeapInit(); + xHeapHasBeenInitialised = pdTRUE; + } + + /* The wanted size is increased so it can contain a BlockLink_t + structure in addition to the requested amount of bytes. */ + if( xWantedSize > 0 ) + { + xWantedSize += heapSTRUCT_SIZE; + + /* Ensure that blocks are always aligned to the required number of bytes. */ + if( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) != 0 ) + { + /* Byte alignment required. */ + xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & portBYTE_ALIGNMENT_MASK ) ); + } + } + + if( ( xWantedSize > 0 ) && ( xWantedSize < configADJUSTED_HEAP_SIZE ) ) + { + /* Blocks are stored in byte order - traverse the list from the start + (smallest) block until one of adequate size is found. */ + pxPreviousBlock = &xStart; + pxBlock = xStart.pxNextFreeBlock; + while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) ) + { + pxPreviousBlock = pxBlock; + pxBlock = pxBlock->pxNextFreeBlock; + } + + /* If we found the end marker then a block of adequate size was not found. */ + if( pxBlock != &xEnd ) + { + /* Return the memory space - jumping over the BlockLink_t structure + at its start. */ + pvReturn = ( void * ) ( ( ( uint8_t * ) pxPreviousBlock->pxNextFreeBlock ) + heapSTRUCT_SIZE ); + + /* This block is being returned for use so must be taken out of the + list of free blocks. */ + pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock; + + /* If the block is larger than required it can be split into two. */ + if( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE ) + { + /* This block is to be split into two. Create a new block + following the number of bytes requested. The void cast is + used to prevent byte alignment warnings from the compiler. */ + pxNewBlockLink = ( void * ) ( ( ( uint8_t * ) pxBlock ) + xWantedSize ); + + /* Calculate the sizes of two blocks split from the single + block. */ + pxNewBlockLink->xBlockSize = pxBlock->xBlockSize - xWantedSize; + pxBlock->xBlockSize = xWantedSize; + + /* Insert the new block into the list of free blocks. */ + prvInsertBlockIntoFreeList( ( pxNewBlockLink ) ); + } + + xFreeBytesRemaining -= pxBlock->xBlockSize; + } + } + + traceMALLOC( pvReturn, xWantedSize ); + } + ( void ) xTaskResumeAll(); + + #if( configUSE_MALLOC_FAILED_HOOK == 1 ) + { + if( pvReturn == NULL ) + { + extern void vApplicationMallocFailedHook( void ); + vApplicationMallocFailedHook(); + } + } + #endif + + return pvReturn; +} +/*-----------------------------------------------------------*/ + +void vPortFree( void *pv ) +{ +uint8_t *puc = ( uint8_t * ) pv; +BlockLink_t *pxLink; + + if( pv != NULL ) + { + /* The memory being freed will have an BlockLink_t structure immediately + before it. */ + puc -= heapSTRUCT_SIZE; + + /* This unexpected casting is to keep some compilers from issuing + byte alignment warnings. */ + pxLink = ( void * ) puc; + + vTaskSuspendAll(); + { + /* Add this block to the list of free blocks. */ + prvInsertBlockIntoFreeList( ( ( BlockLink_t * ) pxLink ) ); + xFreeBytesRemaining += pxLink->xBlockSize; + traceFREE( pv, pxLink->xBlockSize ); + } + ( void ) xTaskResumeAll(); + } +} +/*-----------------------------------------------------------*/ + +size_t xPortGetFreeHeapSize( void ) +{ + return xFreeBytesRemaining; +} +/*-----------------------------------------------------------*/ + +void vPortInitialiseBlocks( void ) +{ + /* This just exists to keep the linker quiet. */ +} +/*-----------------------------------------------------------*/ + +static void prvHeapInit( void ) +{ +BlockLink_t *pxFirstFreeBlock; +uint8_t *pucAlignedHeap; + + /* Ensure the heap starts on a correctly aligned boundary. */ + pucAlignedHeap = ( uint8_t * ) ( ( ( portPOINTER_SIZE_TYPE ) &ucHeap[ portBYTE_ALIGNMENT ] ) & ( ~( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) ) ); + + /* xStart is used to hold a pointer to the first item in the list of free + blocks. The void cast is used to prevent compiler warnings. */ + xStart.pxNextFreeBlock = ( void * ) pucAlignedHeap; + xStart.xBlockSize = ( size_t ) 0; + + /* xEnd is used to mark the end of the list of free blocks. */ + xEnd.xBlockSize = configADJUSTED_HEAP_SIZE; + xEnd.pxNextFreeBlock = NULL; + + /* To start with there is a single free block that is sized to take up the + entire heap space. */ + pxFirstFreeBlock = ( void * ) pucAlignedHeap; + pxFirstFreeBlock->xBlockSize = configADJUSTED_HEAP_SIZE; + pxFirstFreeBlock->pxNextFreeBlock = &xEnd; +} +/*-----------------------------------------------------------*/ diff --git a/components/freertos/portable/MemMang/heap_3.c b/components/freertos/portable/MemMang/heap_3.c new file mode 100644 index 00000000..e6a29908 --- /dev/null +++ b/components/freertos/portable/MemMang/heap_3.c @@ -0,0 +1,97 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +/* + * Implementation of pvPortMalloc() and vPortFree() that relies on the + * compilers own malloc() and free() implementations. + * + * This file can only be used if the linker is configured to to generate + * a heap memory area. + * + * See heap_1.c, heap_2.c and heap_4.c for alternative implementations, and the + * memory management pages of http://www.FreeRTOS.org for more information. + */ + +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#include "FreeRTOS.h" +#include "task.h" + +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) + #error This file must not be used if configSUPPORT_DYNAMIC_ALLOCATION is 0 +#endif + +/*-----------------------------------------------------------*/ + +void *pvPortMalloc( size_t xWantedSize ) +{ +void *pvReturn; + + vTaskSuspendAll(); + { + pvReturn = malloc( xWantedSize ); + traceMALLOC( pvReturn, xWantedSize ); + } + ( void ) xTaskResumeAll(); + + #if( configUSE_MALLOC_FAILED_HOOK == 1 ) + { + if( pvReturn == NULL ) + { + extern void vApplicationMallocFailedHook( void ); + vApplicationMallocFailedHook(); + } + } + #endif + + return pvReturn; +} +/*-----------------------------------------------------------*/ + +void vPortFree( void *pv ) +{ + if( pv ) + { + vTaskSuspendAll(); + { + free( pv ); + traceFREE( pv, 0 ); + } + ( void ) xTaskResumeAll(); + } +} + + + diff --git a/components/freertos/portable/MemMang/heap_4.c b/components/freertos/portable/MemMang/heap_4.c new file mode 100644 index 00000000..8ff7bc2a --- /dev/null +++ b/components/freertos/portable/MemMang/heap_4.c @@ -0,0 +1,492 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* + * A sample implementation of pvPortMalloc() and vPortFree() that combines + * (coalescences) adjacent memory blocks as they are freed, and in so doing + * limits memory fragmentation. + * + * See heap_1.c, heap_2.c and heap_3.c for alternative implementations, and the + * memory management pages of http://www.FreeRTOS.org for more information. + */ +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#include "FreeRTOS.h" +#include "task.h" + +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) + #error This file must not be used if configSUPPORT_DYNAMIC_ALLOCATION is 0 +#endif + +/* Block sizes must not get too small. */ +#define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( xHeapStructSize << 1 ) ) + +/* Assumes 8bit bytes! */ +#define heapBITS_PER_BYTE ( ( size_t ) 8 ) + +/* Allocate the memory for the heap. */ +#if( configAPPLICATION_ALLOCATED_HEAP == 1 ) + /* The application writer has already defined the array used for the RTOS + heap - probably so it can be placed in a special segment or address. */ + extern uint8_t ucHeap[ configTOTAL_HEAP_SIZE ]; +#else + static uint8_t ucHeap[ configTOTAL_HEAP_SIZE ]; +#endif /* configAPPLICATION_ALLOCATED_HEAP */ + +/* Define the linked list structure. This is used to link free blocks in order +of their memory address. */ +typedef struct A_BLOCK_LINK +{ + struct A_BLOCK_LINK *pxNextFreeBlock; /*<< The next free block in the list. */ + size_t xBlockSize; /*<< The size of the free block. */ +} BlockLink_t; + +/*-----------------------------------------------------------*/ + +/* + * Inserts a block of memory that is being freed into the correct position in + * the list of free memory blocks. The block being freed will be merged with + * the block in front it and/or the block behind it if the memory blocks are + * adjacent to each other. + */ +static void prvInsertBlockIntoFreeList( BlockLink_t *pxBlockToInsert ); + +/* + * Called automatically to setup the required heap structures the first time + * pvPortMalloc() is called. + */ +static void prvHeapInit( void ); + +/*-----------------------------------------------------------*/ + +/* The size of the structure placed at the beginning of each allocated memory +block must by correctly byte aligned. */ +static const size_t xHeapStructSize = ( sizeof( BlockLink_t ) + ( ( size_t ) ( portBYTE_ALIGNMENT - 1 ) ) ) & ~( ( size_t ) portBYTE_ALIGNMENT_MASK ); + +/* Create a couple of list links to mark the start and end of the list. */ +static BlockLink_t xStart, *pxEnd = NULL; + +/* Keeps track of the number of calls to allocate and free memory as well as the +number of free bytes remaining, but says nothing about fragmentation. */ +static size_t xFreeBytesRemaining = 0U; +static size_t xMinimumEverFreeBytesRemaining = 0U; +static size_t xNumberOfSuccessfulAllocations = 0; +static size_t xNumberOfSuccessfulFrees = 0; + +/* Gets set to the top bit of an size_t type. When this bit in the xBlockSize +member of an BlockLink_t structure is set then the block belongs to the +application. When the bit is free the block is still part of the free heap +space. */ +static size_t xBlockAllocatedBit = 0; + +/*-----------------------------------------------------------*/ + +void *pvPortMalloc( size_t xWantedSize ) +{ +BlockLink_t *pxBlock, *pxPreviousBlock, *pxNewBlockLink; +void *pvReturn = NULL; + + vTaskSuspendAll(); + { + /* If this is the first call to malloc then the heap will require + initialisation to setup the list of free blocks. */ + if( pxEnd == NULL ) + { + prvHeapInit(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Check the requested block size is not so large that the top bit is + set. The top bit of the block size member of the BlockLink_t structure + is used to determine who owns the block - the application or the + kernel, so it must be free. */ + if( ( xWantedSize & xBlockAllocatedBit ) == 0 ) + { + /* The wanted size is increased so it can contain a BlockLink_t + structure in addition to the requested amount of bytes. */ + if( xWantedSize > 0 ) + { + xWantedSize += xHeapStructSize; + + /* Ensure that blocks are always aligned to the required number + of bytes. */ + if( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) != 0x00 ) + { + /* Byte alignment required. */ + xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & portBYTE_ALIGNMENT_MASK ) ); + configASSERT( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) == 0 ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( ( xWantedSize > 0 ) && ( xWantedSize <= xFreeBytesRemaining ) ) + { + /* Traverse the list from the start (lowest address) block until + one of adequate size is found. */ + pxPreviousBlock = &xStart; + pxBlock = xStart.pxNextFreeBlock; + while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) ) + { + pxPreviousBlock = pxBlock; + pxBlock = pxBlock->pxNextFreeBlock; + } + + /* If the end marker was reached then a block of adequate size + was not found. */ + if( pxBlock != pxEnd ) + { + /* Return the memory space pointed to - jumping over the + BlockLink_t structure at its start. */ + pvReturn = ( void * ) ( ( ( uint8_t * ) pxPreviousBlock->pxNextFreeBlock ) + xHeapStructSize ); + + /* This block is being returned for use so must be taken out + of the list of free blocks. */ + pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock; + + /* If the block is larger than required it can be split into + two. */ + if( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE ) + { + /* This block is to be split into two. Create a new + block following the number of bytes requested. The void + cast is used to prevent byte alignment warnings from the + compiler. */ + pxNewBlockLink = ( void * ) ( ( ( uint8_t * ) pxBlock ) + xWantedSize ); + configASSERT( ( ( ( size_t ) pxNewBlockLink ) & portBYTE_ALIGNMENT_MASK ) == 0 ); + + /* Calculate the sizes of two blocks split from the + single block. */ + pxNewBlockLink->xBlockSize = pxBlock->xBlockSize - xWantedSize; + pxBlock->xBlockSize = xWantedSize; + + /* Insert the new block into the list of free blocks. */ + prvInsertBlockIntoFreeList( pxNewBlockLink ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + xFreeBytesRemaining -= pxBlock->xBlockSize; + + if( xFreeBytesRemaining < xMinimumEverFreeBytesRemaining ) + { + xMinimumEverFreeBytesRemaining = xFreeBytesRemaining; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* The block is being returned - it is allocated and owned + by the application and has no "next" block. */ + pxBlock->xBlockSize |= xBlockAllocatedBit; + pxBlock->pxNextFreeBlock = NULL; + xNumberOfSuccessfulAllocations++; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + traceMALLOC( pvReturn, xWantedSize ); + } + ( void ) xTaskResumeAll(); + + #if( configUSE_MALLOC_FAILED_HOOK == 1 ) + { + if( pvReturn == NULL ) + { + extern void vApplicationMallocFailedHook( void ); + vApplicationMallocFailedHook(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif + + configASSERT( ( ( ( size_t ) pvReturn ) & ( size_t ) portBYTE_ALIGNMENT_MASK ) == 0 ); + return pvReturn; +} +/*-----------------------------------------------------------*/ + +void vPortFree( void *pv ) +{ +uint8_t *puc = ( uint8_t * ) pv; +BlockLink_t *pxLink; + + if( pv != NULL ) + { + /* The memory being freed will have an BlockLink_t structure immediately + before it. */ + puc -= xHeapStructSize; + + /* This casting is to keep the compiler from issuing warnings. */ + pxLink = ( void * ) puc; + + /* Check the block is actually allocated. */ + configASSERT( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 ); + configASSERT( pxLink->pxNextFreeBlock == NULL ); + + if( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 ) + { + if( pxLink->pxNextFreeBlock == NULL ) + { + /* The block is being returned to the heap - it is no longer + allocated. */ + pxLink->xBlockSize &= ~xBlockAllocatedBit; + + vTaskSuspendAll(); + { + /* Add this block to the list of free blocks. */ + xFreeBytesRemaining += pxLink->xBlockSize; + traceFREE( pv, pxLink->xBlockSize ); + prvInsertBlockIntoFreeList( ( ( BlockLink_t * ) pxLink ) ); + xNumberOfSuccessfulFrees++; + } + ( void ) xTaskResumeAll(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } +} +/*-----------------------------------------------------------*/ + +size_t xPortGetFreeHeapSize( void ) +{ + return xFreeBytesRemaining; +} +/*-----------------------------------------------------------*/ + +size_t xPortGetMinimumEverFreeHeapSize( void ) +{ + return xMinimumEverFreeBytesRemaining; +} +/*-----------------------------------------------------------*/ + +void vPortInitialiseBlocks( void ) +{ + /* This just exists to keep the linker quiet. */ +} +/*-----------------------------------------------------------*/ + +static void prvHeapInit( void ) +{ +BlockLink_t *pxFirstFreeBlock; +uint8_t *pucAlignedHeap; +size_t uxAddress; +size_t xTotalHeapSize = configTOTAL_HEAP_SIZE; + + /* Ensure the heap starts on a correctly aligned boundary. */ + uxAddress = ( size_t ) ucHeap; + + if( ( uxAddress & portBYTE_ALIGNMENT_MASK ) != 0 ) + { + uxAddress += ( portBYTE_ALIGNMENT - 1 ); + uxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK ); + xTotalHeapSize -= uxAddress - ( size_t ) ucHeap; + } + + pucAlignedHeap = ( uint8_t * ) uxAddress; + + /* xStart is used to hold a pointer to the first item in the list of free + blocks. The void cast is used to prevent compiler warnings. */ + xStart.pxNextFreeBlock = ( void * ) pucAlignedHeap; + xStart.xBlockSize = ( size_t ) 0; + + /* pxEnd is used to mark the end of the list of free blocks and is inserted + at the end of the heap space. */ + uxAddress = ( ( size_t ) pucAlignedHeap ) + xTotalHeapSize; + uxAddress -= xHeapStructSize; + uxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK ); + pxEnd = ( void * ) uxAddress; + pxEnd->xBlockSize = 0; + pxEnd->pxNextFreeBlock = NULL; + + /* To start with there is a single free block that is sized to take up the + entire heap space, minus the space taken by pxEnd. */ + pxFirstFreeBlock = ( void * ) pucAlignedHeap; + pxFirstFreeBlock->xBlockSize = uxAddress - ( size_t ) pxFirstFreeBlock; + pxFirstFreeBlock->pxNextFreeBlock = pxEnd; + + /* Only one block exists - and it covers the entire usable heap space. */ + xMinimumEverFreeBytesRemaining = pxFirstFreeBlock->xBlockSize; + xFreeBytesRemaining = pxFirstFreeBlock->xBlockSize; + + /* Work out the position of the top bit in a size_t variable. */ + xBlockAllocatedBit = ( ( size_t ) 1 ) << ( ( sizeof( size_t ) * heapBITS_PER_BYTE ) - 1 ); +} +/*-----------------------------------------------------------*/ + +static void prvInsertBlockIntoFreeList( BlockLink_t *pxBlockToInsert ) +{ +BlockLink_t *pxIterator; +uint8_t *puc; + + /* Iterate through the list until a block is found that has a higher address + than the block being inserted. */ + for( pxIterator = &xStart; pxIterator->pxNextFreeBlock < pxBlockToInsert; pxIterator = pxIterator->pxNextFreeBlock ) + { + /* Nothing to do here, just iterate to the right position. */ + } + + /* Do the block being inserted, and the block it is being inserted after + make a contiguous block of memory? */ + puc = ( uint8_t * ) pxIterator; + if( ( puc + pxIterator->xBlockSize ) == ( uint8_t * ) pxBlockToInsert ) + { + pxIterator->xBlockSize += pxBlockToInsert->xBlockSize; + pxBlockToInsert = pxIterator; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Do the block being inserted, and the block it is being inserted before + make a contiguous block of memory? */ + puc = ( uint8_t * ) pxBlockToInsert; + if( ( puc + pxBlockToInsert->xBlockSize ) == ( uint8_t * ) pxIterator->pxNextFreeBlock ) + { + if( pxIterator->pxNextFreeBlock != pxEnd ) + { + /* Form one big block from the two blocks. */ + pxBlockToInsert->xBlockSize += pxIterator->pxNextFreeBlock->xBlockSize; + pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock->pxNextFreeBlock; + } + else + { + pxBlockToInsert->pxNextFreeBlock = pxEnd; + } + } + else + { + pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock; + } + + /* If the block being inserted plugged a gab, so was merged with the block + before and the block after, then it's pxNextFreeBlock pointer will have + already been set, and should not be set here as that would make it point + to itself. */ + if( pxIterator != pxBlockToInsert ) + { + pxIterator->pxNextFreeBlock = pxBlockToInsert; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } +} +/*-----------------------------------------------------------*/ + +void vPortGetHeapStats( HeapStats_t *pxHeapStats ) +{ +BlockLink_t *pxBlock; +size_t xBlocks = 0, xMaxSize = 0, xMinSize = portMAX_DELAY; /* portMAX_DELAY used as a portable way of getting the maximum value. */ + + vTaskSuspendAll(); + { + pxBlock = xStart.pxNextFreeBlock; + + /* pxBlock will be NULL if the heap has not been initialised. The heap + is initialised automatically when the first allocation is made. */ + if( pxBlock != NULL ) + { + do + { + /* Increment the number of blocks and record the largest block seen + so far. */ + xBlocks++; + + if( pxBlock->xBlockSize > xMaxSize ) + { + xMaxSize = pxBlock->xBlockSize; + } + + if( pxBlock->xBlockSize < xMinSize ) + { + xMinSize = pxBlock->xBlockSize; + } + + /* Move to the next block in the chain until the last block is + reached. */ + pxBlock = pxBlock->pxNextFreeBlock; + } while( pxBlock != pxEnd ); + } + } + xTaskResumeAll(); + + pxHeapStats->xSizeOfLargestFreeBlockInBytes = xMaxSize; + pxHeapStats->xSizeOfSmallestFreeBlockInBytes = xMinSize; + pxHeapStats->xNumberOfFreeBlocks = xBlocks; + + taskENTER_CRITICAL(); + { + pxHeapStats->xAvailableHeapSpaceInBytes = xFreeBytesRemaining; + pxHeapStats->xNumberOfSuccessfulAllocations = xNumberOfSuccessfulAllocations; + pxHeapStats->xNumberOfSuccessfulFrees = xNumberOfSuccessfulFrees; + pxHeapStats->xMinimumEverFreeBytesRemaining = xMinimumEverFreeBytesRemaining; + } + taskEXIT_CRITICAL(); +} + diff --git a/components/freertos/portable/MemMang/heap_5.c b/components/freertos/portable/MemMang/heap_5.c new file mode 100644 index 00000000..4ad266a6 --- /dev/null +++ b/components/freertos/portable/MemMang/heap_5.c @@ -0,0 +1,547 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* + * A sample implementation of pvPortMalloc() that allows the heap to be defined + * across multiple non-contigous blocks and combines (coalescences) adjacent + * memory blocks as they are freed. + * + * See heap_1.c, heap_2.c, heap_3.c and heap_4.c for alternative + * implementations, and the memory management pages of http://www.FreeRTOS.org + * for more information. + * + * Usage notes: + * + * vPortDefineHeapRegions() ***must*** be called before pvPortMalloc(). + * pvPortMalloc() will be called if any task objects (tasks, queues, event + * groups, etc.) are created, therefore vPortDefineHeapRegions() ***must*** be + * called before any other objects are defined. + * + * vPortDefineHeapRegions() takes a single parameter. The parameter is an array + * of HeapRegion_t structures. HeapRegion_t is defined in portable.h as + * + * typedef struct HeapRegion + * { + * uint8_t *pucStartAddress; << Start address of a block of memory that will be part of the heap. + * size_t xSizeInBytes; << Size of the block of memory. + * } HeapRegion_t; + * + * The array is terminated using a NULL zero sized region definition, and the + * memory regions defined in the array ***must*** appear in address order from + * low address to high address. So the following is a valid example of how + * to use the function. + * + * HeapRegion_t xHeapRegions[] = + * { + * { ( uint8_t * ) 0x80000000UL, 0x10000 }, << Defines a block of 0x10000 bytes starting at address 0x80000000 + * { ( uint8_t * ) 0x90000000UL, 0xa0000 }, << Defines a block of 0xa0000 bytes starting at address of 0x90000000 + * { NULL, 0 } << Terminates the array. + * }; + * + * vPortDefineHeapRegions( xHeapRegions ); << Pass the array into vPortDefineHeapRegions(). + * + * Note 0x80000000 is the lower address so appears in the array first. + * + */ +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#include "FreeRTOS.h" +#include "task.h" + +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) + #error This file must not be used if configSUPPORT_DYNAMIC_ALLOCATION is 0 +#endif + +/* Block sizes must not get too small. */ +#define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( xHeapStructSize << 1 ) ) + +/* Assumes 8bit bytes! */ +#define heapBITS_PER_BYTE ( ( size_t ) 8 ) + +/* Define the linked list structure. This is used to link free blocks in order +of their memory address. */ +typedef struct A_BLOCK_LINK +{ + struct A_BLOCK_LINK *pxNextFreeBlock; /*<< The next free block in the list. */ + size_t xBlockSize; /*<< The size of the free block. */ +} BlockLink_t; + +/*-----------------------------------------------------------*/ + +/* + * Inserts a block of memory that is being freed into the correct position in + * the list of free memory blocks. The block being freed will be merged with + * the block in front it and/or the block behind it if the memory blocks are + * adjacent to each other. + */ +static void prvInsertBlockIntoFreeList( BlockLink_t *pxBlockToInsert ); + +/*-----------------------------------------------------------*/ + +/* The size of the structure placed at the beginning of each allocated memory +block must by correctly byte aligned. */ +static const size_t xHeapStructSize = ( sizeof( BlockLink_t ) + ( ( size_t ) ( portBYTE_ALIGNMENT - 1 ) ) ) & ~( ( size_t ) portBYTE_ALIGNMENT_MASK ); + +/* Create a couple of list links to mark the start and end of the list. */ +static BlockLink_t xStart, *pxEnd = NULL; + +/* Keeps track of the number of calls to allocate and free memory as well as the +number of free bytes remaining, but says nothing about fragmentation. */ +static size_t xFreeBytesRemaining = 0U; +static size_t xMinimumEverFreeBytesRemaining = 0U; +static size_t xNumberOfSuccessfulAllocations = 0; +static size_t xNumberOfSuccessfulFrees = 0; + +/* Gets set to the top bit of an size_t type. When this bit in the xBlockSize +member of an BlockLink_t structure is set then the block belongs to the +application. When the bit is free the block is still part of the free heap +space. */ +static size_t xBlockAllocatedBit = 0; + +/*-----------------------------------------------------------*/ + +void *pvPortMalloc( size_t xWantedSize ) +{ +BlockLink_t *pxBlock, *pxPreviousBlock, *pxNewBlockLink; +void *pvReturn = NULL; + + /* The heap must be initialised before the first call to + prvPortMalloc(). */ + configASSERT( pxEnd ); + + vTaskSuspendAll(); + { + /* Check the requested block size is not so large that the top bit is + set. The top bit of the block size member of the BlockLink_t structure + is used to determine who owns the block - the application or the + kernel, so it must be free. */ + if( ( xWantedSize & xBlockAllocatedBit ) == 0 ) + { + /* The wanted size is increased so it can contain a BlockLink_t + structure in addition to the requested amount of bytes. */ + if( xWantedSize > 0 ) + { + xWantedSize += xHeapStructSize; + + /* Ensure that blocks are always aligned to the required number + of bytes. */ + if( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) != 0x00 ) + { + /* Byte alignment required. */ + xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & portBYTE_ALIGNMENT_MASK ) ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( ( xWantedSize > 0 ) && ( xWantedSize <= xFreeBytesRemaining ) ) + { + /* Traverse the list from the start (lowest address) block until + one of adequate size is found. */ + pxPreviousBlock = &xStart; + pxBlock = xStart.pxNextFreeBlock; + while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) ) + { + pxPreviousBlock = pxBlock; + pxBlock = pxBlock->pxNextFreeBlock; + } + + /* If the end marker was reached then a block of adequate size + was not found. */ + if( pxBlock != pxEnd ) + { + /* Return the memory space pointed to - jumping over the + BlockLink_t structure at its start. */ + pvReturn = ( void * ) ( ( ( uint8_t * ) pxPreviousBlock->pxNextFreeBlock ) + xHeapStructSize ); + + /* This block is being returned for use so must be taken out + of the list of free blocks. */ + pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock; + + /* If the block is larger than required it can be split into + two. */ + if( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE ) + { + /* This block is to be split into two. Create a new + block following the number of bytes requested. The void + cast is used to prevent byte alignment warnings from the + compiler. */ + pxNewBlockLink = ( void * ) ( ( ( uint8_t * ) pxBlock ) + xWantedSize ); + + /* Calculate the sizes of two blocks split from the + single block. */ + pxNewBlockLink->xBlockSize = pxBlock->xBlockSize - xWantedSize; + pxBlock->xBlockSize = xWantedSize; + + /* Insert the new block into the list of free blocks. */ + prvInsertBlockIntoFreeList( ( pxNewBlockLink ) ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + xFreeBytesRemaining -= pxBlock->xBlockSize; + + if( xFreeBytesRemaining < xMinimumEverFreeBytesRemaining ) + { + xMinimumEverFreeBytesRemaining = xFreeBytesRemaining; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* The block is being returned - it is allocated and owned + by the application and has no "next" block. */ + pxBlock->xBlockSize |= xBlockAllocatedBit; + pxBlock->pxNextFreeBlock = NULL; + xNumberOfSuccessfulAllocations++; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + traceMALLOC( pvReturn, xWantedSize ); + } + ( void ) xTaskResumeAll(); + + #if( configUSE_MALLOC_FAILED_HOOK == 1 ) + { + if( pvReturn == NULL ) + { + extern void vApplicationMallocFailedHook( void ); + vApplicationMallocFailedHook(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif + + return pvReturn; +} +/*-----------------------------------------------------------*/ + +void vPortFree( void *pv ) +{ +uint8_t *puc = ( uint8_t * ) pv; +BlockLink_t *pxLink; + + if( pv != NULL ) + { + /* The memory being freed will have an BlockLink_t structure immediately + before it. */ + puc -= xHeapStructSize; + + /* This casting is to keep the compiler from issuing warnings. */ + pxLink = ( void * ) puc; + + /* Check the block is actually allocated. */ + configASSERT( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 ); + configASSERT( pxLink->pxNextFreeBlock == NULL ); + + if( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 ) + { + if( pxLink->pxNextFreeBlock == NULL ) + { + /* The block is being returned to the heap - it is no longer + allocated. */ + pxLink->xBlockSize &= ~xBlockAllocatedBit; + + vTaskSuspendAll(); + { + /* Add this block to the list of free blocks. */ + xFreeBytesRemaining += pxLink->xBlockSize; + traceFREE( pv, pxLink->xBlockSize ); + prvInsertBlockIntoFreeList( ( ( BlockLink_t * ) pxLink ) ); + xNumberOfSuccessfulFrees++; + } + ( void ) xTaskResumeAll(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } +} +/*-----------------------------------------------------------*/ + +size_t xPortGetFreeHeapSize( void ) +{ + return xFreeBytesRemaining; +} +/*-----------------------------------------------------------*/ + +size_t xPortGetMinimumEverFreeHeapSize( void ) +{ + return xMinimumEverFreeBytesRemaining; +} +/*-----------------------------------------------------------*/ + +static void prvInsertBlockIntoFreeList( BlockLink_t *pxBlockToInsert ) +{ +BlockLink_t *pxIterator; +uint8_t *puc; + + /* Iterate through the list until a block is found that has a higher address + than the block being inserted. */ + for( pxIterator = &xStart; pxIterator->pxNextFreeBlock < pxBlockToInsert; pxIterator = pxIterator->pxNextFreeBlock ) + { + /* Nothing to do here, just iterate to the right position. */ + } + + /* Do the block being inserted, and the block it is being inserted after + make a contiguous block of memory? */ + puc = ( uint8_t * ) pxIterator; + if( ( puc + pxIterator->xBlockSize ) == ( uint8_t * ) pxBlockToInsert ) + { + pxIterator->xBlockSize += pxBlockToInsert->xBlockSize; + pxBlockToInsert = pxIterator; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Do the block being inserted, and the block it is being inserted before + make a contiguous block of memory? */ + puc = ( uint8_t * ) pxBlockToInsert; + if( ( puc + pxBlockToInsert->xBlockSize ) == ( uint8_t * ) pxIterator->pxNextFreeBlock ) + { + if( pxIterator->pxNextFreeBlock != pxEnd ) + { + /* Form one big block from the two blocks. */ + pxBlockToInsert->xBlockSize += pxIterator->pxNextFreeBlock->xBlockSize; + pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock->pxNextFreeBlock; + } + else + { + pxBlockToInsert->pxNextFreeBlock = pxEnd; + } + } + else + { + pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock; + } + + /* If the block being inserted plugged a gab, so was merged with the block + before and the block after, then it's pxNextFreeBlock pointer will have + already been set, and should not be set here as that would make it point + to itself. */ + if( pxIterator != pxBlockToInsert ) + { + pxIterator->pxNextFreeBlock = pxBlockToInsert; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } +} +/*-----------------------------------------------------------*/ + +void vPortDefineHeapRegions( const HeapRegion_t * const pxHeapRegions ) +{ +BlockLink_t *pxFirstFreeBlockInRegion = NULL, *pxPreviousFreeBlock; +size_t xAlignedHeap; +size_t xTotalRegionSize, xTotalHeapSize = 0; +BaseType_t xDefinedRegions = 0; +size_t xAddress; +const HeapRegion_t *pxHeapRegion; + + /* Can only call once! */ + configASSERT( pxEnd == NULL ); + + pxHeapRegion = &( pxHeapRegions[ xDefinedRegions ] ); + + while( pxHeapRegion->xSizeInBytes > 0 ) + { + xTotalRegionSize = pxHeapRegion->xSizeInBytes; + + /* Ensure the heap region starts on a correctly aligned boundary. */ + xAddress = ( size_t ) pxHeapRegion->pucStartAddress; + if( ( xAddress & portBYTE_ALIGNMENT_MASK ) != 0 ) + { + xAddress += ( portBYTE_ALIGNMENT - 1 ); + xAddress &= ~portBYTE_ALIGNMENT_MASK; + + /* Adjust the size for the bytes lost to alignment. */ + xTotalRegionSize -= xAddress - ( size_t ) pxHeapRegion->pucStartAddress; + } + + xAlignedHeap = xAddress; + + /* Set xStart if it has not already been set. */ + if( xDefinedRegions == 0 ) + { + /* xStart is used to hold a pointer to the first item in the list of + free blocks. The void cast is used to prevent compiler warnings. */ + xStart.pxNextFreeBlock = ( BlockLink_t * ) xAlignedHeap; + xStart.xBlockSize = ( size_t ) 0; + } + else + { + /* Should only get here if one region has already been added to the + heap. */ + configASSERT( pxEnd != NULL ); + + /* Check blocks are passed in with increasing start addresses. */ + configASSERT( xAddress > ( size_t ) pxEnd ); + } + + /* Remember the location of the end marker in the previous region, if + any. */ + pxPreviousFreeBlock = pxEnd; + + /* pxEnd is used to mark the end of the list of free blocks and is + inserted at the end of the region space. */ + xAddress = xAlignedHeap + xTotalRegionSize; + xAddress -= xHeapStructSize; + xAddress &= ~portBYTE_ALIGNMENT_MASK; + pxEnd = ( BlockLink_t * ) xAddress; + pxEnd->xBlockSize = 0; + pxEnd->pxNextFreeBlock = NULL; + + /* To start with there is a single free block in this region that is + sized to take up the entire heap region minus the space taken by the + free block structure. */ + pxFirstFreeBlockInRegion = ( BlockLink_t * ) xAlignedHeap; + pxFirstFreeBlockInRegion->xBlockSize = xAddress - ( size_t ) pxFirstFreeBlockInRegion; + pxFirstFreeBlockInRegion->pxNextFreeBlock = pxEnd; + + /* If this is not the first region that makes up the entire heap space + then link the previous region to this region. */ + if( pxPreviousFreeBlock != NULL ) + { + pxPreviousFreeBlock->pxNextFreeBlock = pxFirstFreeBlockInRegion; + } + + xTotalHeapSize += pxFirstFreeBlockInRegion->xBlockSize; + + /* Move onto the next HeapRegion_t structure. */ + xDefinedRegions++; + pxHeapRegion = &( pxHeapRegions[ xDefinedRegions ] ); + } + + xMinimumEverFreeBytesRemaining = xTotalHeapSize; + xFreeBytesRemaining = xTotalHeapSize; + + /* Check something was actually defined before it is accessed. */ + configASSERT( xTotalHeapSize ); + + /* Work out the position of the top bit in a size_t variable. */ + xBlockAllocatedBit = ( ( size_t ) 1 ) << ( ( sizeof( size_t ) * heapBITS_PER_BYTE ) - 1 ); +} +/*-----------------------------------------------------------*/ + +void vPortGetHeapStats( HeapStats_t *pxHeapStats ) +{ +BlockLink_t *pxBlock; +size_t xBlocks = 0, xMaxSize = 0, xMinSize = portMAX_DELAY; /* portMAX_DELAY used as a portable way of getting the maximum value. */ + + vTaskSuspendAll(); + { + pxBlock = xStart.pxNextFreeBlock; + + /* pxBlock will be NULL if the heap has not been initialised. The heap + is initialised automatically when the first allocation is made. */ + if( pxBlock != NULL ) + { + do + { + /* Increment the number of blocks and record the largest block seen + so far. */ + xBlocks++; + + if( pxBlock->xBlockSize > xMaxSize ) + { + xMaxSize = pxBlock->xBlockSize; + } + + /* Heap five will have a zero sized block at the end of each + each region - the block is only used to link to the next + heap region so it not a real block. */ + if( pxBlock->xBlockSize != 0 ) + { + if( pxBlock->xBlockSize < xMinSize ) + { + xMinSize = pxBlock->xBlockSize; + } + } + + /* Move to the next block in the chain until the last block is + reached. */ + pxBlock = pxBlock->pxNextFreeBlock; + } while( pxBlock != pxEnd ); + } + } + xTaskResumeAll(); + + pxHeapStats->xSizeOfLargestFreeBlockInBytes = xMaxSize; + pxHeapStats->xSizeOfSmallestFreeBlockInBytes = xMinSize; + pxHeapStats->xNumberOfFreeBlocks = xBlocks; + + taskENTER_CRITICAL(); + { + pxHeapStats->xAvailableHeapSpaceInBytes = xFreeBytesRemaining; + pxHeapStats->xNumberOfSuccessfulAllocations = xNumberOfSuccessfulAllocations; + pxHeapStats->xNumberOfSuccessfulFrees = xNumberOfSuccessfulFrees; + pxHeapStats->xMinimumEverFreeBytesRemaining = xMinimumEverFreeBytesRemaining; + } + taskEXIT_CRITICAL(); +} + diff --git a/components/freertos/portable/readme.txt b/components/freertos/portable/readme.txt new file mode 100644 index 00000000..b68d2d57 --- /dev/null +++ b/components/freertos/portable/readme.txt @@ -0,0 +1,20 @@ +Each real time kernel port consists of three files that contain the core kernel +components and are common to every port, and one or more files that are +specific to a particular microcontroller and/or compiler. + + ++ The FreeRTOS/Source/Portable/MemMang directory contains the five sample +memory allocators as described on the http://www.FreeRTOS.org WEB site. + ++ The other directories each contain files specific to a particular +microcontroller or compiler, where the directory name denotes the compiler +specific files the directory contains. + + + +For example, if you are interested in the [compiler] port for the [architecture] +microcontroller, then the port specific files are contained in +FreeRTOS/Source/Portable/[compiler]/[architecture] directory. If this is the +only port you are interested in then all the other directories can be +ignored. + diff --git a/components/freertos/queue.c b/components/freertos/queue.c new file mode 100644 index 00000000..d882bf67 --- /dev/null +++ b/components/freertos/queue.c @@ -0,0 +1,2941 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#include +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" + +#if ( configUSE_CO_ROUTINES == 1 ) + #include "croutine.h" +#endif + +/* Lint e9021, e961 and e750 are suppressed as a MISRA exception justified +because the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined +for the header files above, but not in this file, in order to generate the +correct privileged Vs unprivileged linkage and placement. */ +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021. */ + + +/* Constants used with the cRxLock and cTxLock structure members. */ +#define queueUNLOCKED ( ( int8_t ) -1 ) +#define queueLOCKED_UNMODIFIED ( ( int8_t ) 0 ) + +/* When the Queue_t structure is used to represent a base queue its pcHead and +pcTail members are used as pointers into the queue storage area. When the +Queue_t structure is used to represent a mutex pcHead and pcTail pointers are +not necessary, and the pcHead pointer is set to NULL to indicate that the +structure instead holds a pointer to the mutex holder (if any). Map alternative +names to the pcHead and structure member to ensure the readability of the code +is maintained. The QueuePointers_t and SemaphoreData_t types are used to form +a union as their usage is mutually exclusive dependent on what the queue is +being used for. */ +#define uxQueueType pcHead +#define queueQUEUE_IS_MUTEX NULL + +typedef struct QueuePointers +{ + int8_t *pcTail; /*< Points to the byte at the end of the queue storage area. Once more byte is allocated than necessary to store the queue items, this is used as a marker. */ + int8_t *pcReadFrom; /*< Points to the last place that a queued item was read from when the structure is used as a queue. */ +} QueuePointers_t; + +typedef struct SemaphoreData +{ + TaskHandle_t xMutexHolder; /*< The handle of the task that holds the mutex. */ + UBaseType_t uxRecursiveCallCount;/*< Maintains a count of the number of times a recursive mutex has been recursively 'taken' when the structure is used as a mutex. */ +} SemaphoreData_t; + +/* Semaphores do not actually store or copy data, so have an item size of +zero. */ +#define queueSEMAPHORE_QUEUE_ITEM_LENGTH ( ( UBaseType_t ) 0 ) +#define queueMUTEX_GIVE_BLOCK_TIME ( ( TickType_t ) 0U ) + +#if( configUSE_PREEMPTION == 0 ) + /* If the cooperative scheduler is being used then a yield should not be + performed just because a higher priority task has been woken. */ + #define queueYIELD_IF_USING_PREEMPTION() +#else + #define queueYIELD_IF_USING_PREEMPTION() portYIELD_WITHIN_API() +#endif + +/* + * Definition of the queue used by the scheduler. + * Items are queued by copy, not reference. See the following link for the + * rationale: https://www.freertos.org/Embedded-RTOS-Queues.html + */ +typedef struct QueueDefinition /* The old naming convention is used to prevent breaking kernel aware debuggers. */ +{ + int8_t *pcHead; /*< Points to the beginning of the queue storage area. */ + int8_t *pcWriteTo; /*< Points to the free next place in the storage area. */ + + union + { + QueuePointers_t xQueue; /*< Data required exclusively when this structure is used as a queue. */ + SemaphoreData_t xSemaphore; /*< Data required exclusively when this structure is used as a semaphore. */ + } u; + + List_t xTasksWaitingToSend; /*< List of tasks that are blocked waiting to post onto this queue. Stored in priority order. */ + List_t xTasksWaitingToReceive; /*< List of tasks that are blocked waiting to read from this queue. Stored in priority order. */ + + volatile UBaseType_t uxMessagesWaiting;/*< The number of items currently in the queue. */ + UBaseType_t uxLength; /*< The length of the queue defined as the number of items it will hold, not the number of bytes. */ + UBaseType_t uxItemSize; /*< The size of each items that the queue will hold. */ + + volatile int8_t cRxLock; /*< Stores the number of items received from the queue (removed from the queue) while the queue was locked. Set to queueUNLOCKED when the queue is not locked. */ + volatile int8_t cTxLock; /*< Stores the number of items transmitted to the queue (added to the queue) while the queue was locked. Set to queueUNLOCKED when the queue is not locked. */ + + #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + uint8_t ucStaticallyAllocated; /*< Set to pdTRUE if the memory used by the queue was statically allocated to ensure no attempt is made to free the memory. */ + #endif + + #if ( configUSE_QUEUE_SETS == 1 ) + struct QueueDefinition *pxQueueSetContainer; + #endif + + #if ( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxQueueNumber; + uint8_t ucQueueType; + #endif + +} xQUEUE; + +/* The old xQUEUE name is maintained above then typedefed to the new Queue_t +name below to enable the use of older kernel aware debuggers. */ +typedef xQUEUE Queue_t; + +/*-----------------------------------------------------------*/ + +/* + * The queue registry is just a means for kernel aware debuggers to locate + * queue structures. It has no other purpose so is an optional component. + */ +#if ( configQUEUE_REGISTRY_SIZE > 0 ) + + /* The type stored within the queue registry array. This allows a name + to be assigned to each queue making kernel aware debugging a little + more user friendly. */ + typedef struct QUEUE_REGISTRY_ITEM + { + const char *pcQueueName; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + QueueHandle_t xHandle; + } xQueueRegistryItem; + + /* The old xQueueRegistryItem name is maintained above then typedefed to the + new xQueueRegistryItem name below to enable the use of older kernel aware + debuggers. */ + typedef xQueueRegistryItem QueueRegistryItem_t; + + /* The queue registry is simply an array of QueueRegistryItem_t structures. + The pcQueueName member of a structure being NULL is indicative of the + array position being vacant. */ + PRIVILEGED_DATA QueueRegistryItem_t xQueueRegistry[ configQUEUE_REGISTRY_SIZE ]; + +#endif /* configQUEUE_REGISTRY_SIZE */ + +/* + * Unlocks a queue locked by a call to prvLockQueue. Locking a queue does not + * prevent an ISR from adding or removing items to the queue, but does prevent + * an ISR from removing tasks from the queue event lists. If an ISR finds a + * queue is locked it will instead increment the appropriate queue lock count + * to indicate that a task may require unblocking. When the queue in unlocked + * these lock counts are inspected, and the appropriate action taken. + */ +static void prvUnlockQueue( Queue_t * const pxQueue ) PRIVILEGED_FUNCTION; + +/* + * Uses a critical section to determine if there is any data in a queue. + * + * @return pdTRUE if the queue contains no items, otherwise pdFALSE. + */ +static BaseType_t prvIsQueueEmpty( const Queue_t *pxQueue ) PRIVILEGED_FUNCTION; + +/* + * Uses a critical section to determine if there is any space in a queue. + * + * @return pdTRUE if there is no space, otherwise pdFALSE; + */ +static BaseType_t prvIsQueueFull( const Queue_t *pxQueue ) PRIVILEGED_FUNCTION; + +/* + * Copies an item into the queue, either at the front of the queue or the + * back of the queue. + */ +static BaseType_t prvCopyDataToQueue( Queue_t * const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition ) PRIVILEGED_FUNCTION; + +/* + * Copies an item out of a queue. + */ +static void prvCopyDataFromQueue( Queue_t * const pxQueue, void * const pvBuffer ) PRIVILEGED_FUNCTION; + +#if ( configUSE_QUEUE_SETS == 1 ) + /* + * Checks to see if a queue is a member of a queue set, and if so, notifies + * the queue set that the queue contains data. + */ + static BaseType_t prvNotifyQueueSetContainer( const Queue_t * const pxQueue, const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION; +#endif + +/* + * Called after a Queue_t structure has been allocated either statically or + * dynamically to fill in the structure's members. + */ +static void prvInitialiseNewQueue( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, const uint8_t ucQueueType, Queue_t *pxNewQueue ) PRIVILEGED_FUNCTION; + +/* + * Mutexes are a special type of queue. When a mutex is created, first the + * queue is created, then prvInitialiseMutex() is called to configure the queue + * as a mutex. + */ +#if( configUSE_MUTEXES == 1 ) + static void prvInitialiseMutex( Queue_t *pxNewQueue ) PRIVILEGED_FUNCTION; +#endif + +#if( configUSE_MUTEXES == 1 ) + /* + * If a task waiting for a mutex causes the mutex holder to inherit a + * priority, but the waiting task times out, then the holder should + * disinherit the priority - but only down to the highest priority of any + * other tasks that are waiting for the same mutex. This function returns + * that priority. + */ + static UBaseType_t prvGetDisinheritPriorityAfterTimeout( const Queue_t * const pxQueue ) PRIVILEGED_FUNCTION; +#endif +/*-----------------------------------------------------------*/ + +/* + * Macro to mark a queue as locked. Locking a queue prevents an ISR from + * accessing the queue event lists. + */ +#define prvLockQueue( pxQueue ) \ + taskENTER_CRITICAL(); \ + { \ + if( ( pxQueue )->cRxLock == queueUNLOCKED ) \ + { \ + ( pxQueue )->cRxLock = queueLOCKED_UNMODIFIED; \ + } \ + if( ( pxQueue )->cTxLock == queueUNLOCKED ) \ + { \ + ( pxQueue )->cTxLock = queueLOCKED_UNMODIFIED; \ + } \ + } \ + taskEXIT_CRITICAL() +/*-----------------------------------------------------------*/ + +BaseType_t xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue ) +{ +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + + taskENTER_CRITICAL(); + { + pxQueue->u.xQueue.pcTail = pxQueue->pcHead + ( pxQueue->uxLength * pxQueue->uxItemSize ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */ + pxQueue->uxMessagesWaiting = ( UBaseType_t ) 0U; + pxQueue->pcWriteTo = pxQueue->pcHead; + pxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead + ( ( pxQueue->uxLength - 1U ) * pxQueue->uxItemSize ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */ + pxQueue->cRxLock = queueUNLOCKED; + pxQueue->cTxLock = queueUNLOCKED; + + if( xNewQueue == pdFALSE ) + { + /* If there are tasks blocked waiting to read from the queue, then + the tasks will remain blocked as after this function exits the queue + will still be empty. If there are tasks blocked waiting to write to + the queue, then one should be unblocked as after this function exits + it will be possible to write to it. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* Ensure the event queues start in the correct state. */ + vListInitialise( &( pxQueue->xTasksWaitingToSend ) ); + vListInitialise( &( pxQueue->xTasksWaitingToReceive ) ); + } + } + taskEXIT_CRITICAL(); + + /* A value is returned for calling semantic consistency with previous + versions. */ + return pdPASS; +} +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + QueueHandle_t xQueueGenericCreateStatic( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, StaticQueue_t *pxStaticQueue, const uint8_t ucQueueType ) + { + Queue_t *pxNewQueue; + + configASSERT( uxQueueLength > ( UBaseType_t ) 0 ); + + /* The StaticQueue_t structure and the queue storage area must be + supplied. */ + configASSERT( pxStaticQueue != NULL ); + + /* A queue storage area should be provided if the item size is not 0, and + should not be provided if the item size is 0. */ + configASSERT( !( ( pucQueueStorage != NULL ) && ( uxItemSize == 0 ) ) ); + configASSERT( !( ( pucQueueStorage == NULL ) && ( uxItemSize != 0 ) ) ); + + #if( configASSERT_DEFINED == 1 ) + { + /* Sanity check that the size of the structure used to declare a + variable of type StaticQueue_t or StaticSemaphore_t equals the size of + the real queue and semaphore structures. */ + volatile size_t xSize = sizeof( StaticQueue_t ); + configASSERT( xSize == sizeof( Queue_t ) ); + ( void ) xSize; /* Keeps lint quiet when configASSERT() is not defined. */ + } + #endif /* configASSERT_DEFINED */ + + /* The address of a statically allocated queue was passed in, use it. + The address of a statically allocated storage area was also passed in + but is already set. */ + pxNewQueue = ( Queue_t * ) pxStaticQueue; /*lint !e740 !e9087 Unusual cast is ok as the structures are designed to have the same alignment, and the size is checked by an assert. */ + + if( pxNewQueue != NULL ) + { + #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + { + /* Queues can be allocated wither statically or dynamically, so + note this queue was allocated statically in case the queue is + later deleted. */ + pxNewQueue->ucStaticallyAllocated = pdTRUE; + } + #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ + + prvInitialiseNewQueue( uxQueueLength, uxItemSize, pucQueueStorage, ucQueueType, pxNewQueue ); + } + else + { + traceQUEUE_CREATE_FAILED( ucQueueType ); + mtCOVERAGE_TEST_MARKER(); + } + + return pxNewQueue; + } + +#endif /* configSUPPORT_STATIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + + QueueHandle_t xQueueGenericCreate( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType ) + { + Queue_t *pxNewQueue; + size_t xQueueSizeInBytes; + uint8_t *pucQueueStorage; + + configASSERT( uxQueueLength > ( UBaseType_t ) 0 ); + + if( uxItemSize == ( UBaseType_t ) 0 ) + { + /* There is not going to be a queue storage area. */ + xQueueSizeInBytes = ( size_t ) 0; + } + else + { + /* Allocate enough space to hold the maximum number of items that + can be in the queue at any time. */ + xQueueSizeInBytes = ( size_t ) ( uxQueueLength * uxItemSize ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + } + + /* Allocate the queue and storage area. Justification for MISRA + deviation as follows: pvPortMalloc() always ensures returned memory + blocks are aligned per the requirements of the MCU stack. In this case + pvPortMalloc() must return a pointer that is guaranteed to meet the + alignment requirements of the Queue_t structure - which in this case + is an int8_t *. Therefore, whenever the stack alignment requirements + are greater than or equal to the pointer to char requirements the cast + is safe. In other cases alignment requirements are not strict (one or + two bytes). */ + pxNewQueue = ( Queue_t * ) pvPortMalloc( sizeof( Queue_t ) + xQueueSizeInBytes ); /*lint !e9087 !e9079 see comment above. */ + + if( pxNewQueue != NULL ) + { + /* Jump past the queue structure to find the location of the queue + storage area. */ + pucQueueStorage = ( uint8_t * ) pxNewQueue; + pucQueueStorage += sizeof( Queue_t ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */ + + #if( configSUPPORT_STATIC_ALLOCATION == 1 ) + { + /* Queues can be created either statically or dynamically, so + note this task was created dynamically in case it is later + deleted. */ + pxNewQueue->ucStaticallyAllocated = pdFALSE; + } + #endif /* configSUPPORT_STATIC_ALLOCATION */ + + prvInitialiseNewQueue( uxQueueLength, uxItemSize, pucQueueStorage, ucQueueType, pxNewQueue ); + } + else + { + traceQUEUE_CREATE_FAILED( ucQueueType ); + mtCOVERAGE_TEST_MARKER(); + } + + return pxNewQueue; + } + +#endif /* configSUPPORT_STATIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +static void prvInitialiseNewQueue( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, const uint8_t ucQueueType, Queue_t *pxNewQueue ) +{ + /* Remove compiler warnings about unused parameters should + configUSE_TRACE_FACILITY not be set to 1. */ + ( void ) ucQueueType; + + if( uxItemSize == ( UBaseType_t ) 0 ) + { + /* No RAM was allocated for the queue storage area, but PC head cannot + be set to NULL because NULL is used as a key to say the queue is used as + a mutex. Therefore just set pcHead to point to the queue as a benign + value that is known to be within the memory map. */ + pxNewQueue->pcHead = ( int8_t * ) pxNewQueue; + } + else + { + /* Set the head to the start of the queue storage area. */ + pxNewQueue->pcHead = ( int8_t * ) pucQueueStorage; + } + + /* Initialise the queue members as described where the queue type is + defined. */ + pxNewQueue->uxLength = uxQueueLength; + pxNewQueue->uxItemSize = uxItemSize; + ( void ) xQueueGenericReset( pxNewQueue, pdTRUE ); + + #if ( configUSE_TRACE_FACILITY == 1 ) + { + pxNewQueue->ucQueueType = ucQueueType; + } + #endif /* configUSE_TRACE_FACILITY */ + + #if( configUSE_QUEUE_SETS == 1 ) + { + pxNewQueue->pxQueueSetContainer = NULL; + } + #endif /* configUSE_QUEUE_SETS */ + + traceQUEUE_CREATE( pxNewQueue ); +} +/*-----------------------------------------------------------*/ + +#if( configUSE_MUTEXES == 1 ) + + static void prvInitialiseMutex( Queue_t *pxNewQueue ) + { + if( pxNewQueue != NULL ) + { + /* The queue create function will set all the queue structure members + correctly for a generic queue, but this function is creating a + mutex. Overwrite those members that need to be set differently - + in particular the information required for priority inheritance. */ + pxNewQueue->u.xSemaphore.xMutexHolder = NULL; + pxNewQueue->uxQueueType = queueQUEUE_IS_MUTEX; + + /* In case this is a recursive mutex. */ + pxNewQueue->u.xSemaphore.uxRecursiveCallCount = 0; + + traceCREATE_MUTEX( pxNewQueue ); + + /* Start with the semaphore in the expected state. */ + ( void ) xQueueGenericSend( pxNewQueue, NULL, ( TickType_t ) 0U, queueSEND_TO_BACK ); + } + else + { + traceCREATE_MUTEX_FAILED(); + } + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + + QueueHandle_t xQueueCreateMutex( const uint8_t ucQueueType ) + { + QueueHandle_t xNewQueue; + const UBaseType_t uxMutexLength = ( UBaseType_t ) 1, uxMutexSize = ( UBaseType_t ) 0; + + xNewQueue = xQueueGenericCreate( uxMutexLength, uxMutexSize, ucQueueType ); + prvInitialiseMutex( ( Queue_t * ) xNewQueue ); + + return xNewQueue; + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + + QueueHandle_t xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue ) + { + QueueHandle_t xNewQueue; + const UBaseType_t uxMutexLength = ( UBaseType_t ) 1, uxMutexSize = ( UBaseType_t ) 0; + + /* Prevent compiler warnings about unused parameters if + configUSE_TRACE_FACILITY does not equal 1. */ + ( void ) ucQueueType; + + xNewQueue = xQueueGenericCreateStatic( uxMutexLength, uxMutexSize, NULL, pxStaticQueue, ucQueueType ); + prvInitialiseMutex( ( Queue_t * ) xNewQueue ); + + return xNewQueue; + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) + + TaskHandle_t xQueueGetMutexHolder( QueueHandle_t xSemaphore ) + { + TaskHandle_t pxReturn; + Queue_t * const pxSemaphore = ( Queue_t * ) xSemaphore; + + /* This function is called by xSemaphoreGetMutexHolder(), and should not + be called directly. Note: This is a good way of determining if the + calling task is the mutex holder, but not a good way of determining the + identity of the mutex holder, as the holder may change between the + following critical section exiting and the function returning. */ + taskENTER_CRITICAL(); + { + if( pxSemaphore->uxQueueType == queueQUEUE_IS_MUTEX ) + { + pxReturn = pxSemaphore->u.xSemaphore.xMutexHolder; + } + else + { + pxReturn = NULL; + } + } + taskEXIT_CRITICAL(); + + return pxReturn; + } /*lint !e818 xSemaphore cannot be a pointer to const because it is a typedef. */ + +#endif +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) + + TaskHandle_t xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore ) + { + TaskHandle_t pxReturn; + + configASSERT( xSemaphore ); + + /* Mutexes cannot be used in interrupt service routines, so the mutex + holder should not change in an ISR, and therefore a critical section is + not required here. */ + if( ( ( Queue_t * ) xSemaphore )->uxQueueType == queueQUEUE_IS_MUTEX ) + { + pxReturn = ( ( Queue_t * ) xSemaphore )->u.xSemaphore.xMutexHolder; + } + else + { + pxReturn = NULL; + } + + return pxReturn; + } /*lint !e818 xSemaphore cannot be a pointer to const because it is a typedef. */ + +#endif +/*-----------------------------------------------------------*/ + +#if ( configUSE_RECURSIVE_MUTEXES == 1 ) + + BaseType_t xQueueGiveMutexRecursive( QueueHandle_t xMutex ) + { + BaseType_t xReturn; + Queue_t * const pxMutex = ( Queue_t * ) xMutex; + + configASSERT( pxMutex ); + + /* If this is the task that holds the mutex then xMutexHolder will not + change outside of this task. If this task does not hold the mutex then + pxMutexHolder can never coincidentally equal the tasks handle, and as + this is the only condition we are interested in it does not matter if + pxMutexHolder is accessed simultaneously by another task. Therefore no + mutual exclusion is required to test the pxMutexHolder variable. */ + if( pxMutex->u.xSemaphore.xMutexHolder == xTaskGetCurrentTaskHandle() ) + { + traceGIVE_MUTEX_RECURSIVE( pxMutex ); + + /* uxRecursiveCallCount cannot be zero if xMutexHolder is equal to + the task handle, therefore no underflow check is required. Also, + uxRecursiveCallCount is only modified by the mutex holder, and as + there can only be one, no mutual exclusion is required to modify the + uxRecursiveCallCount member. */ + ( pxMutex->u.xSemaphore.uxRecursiveCallCount )--; + + /* Has the recursive call count unwound to 0? */ + if( pxMutex->u.xSemaphore.uxRecursiveCallCount == ( UBaseType_t ) 0 ) + { + /* Return the mutex. This will automatically unblock any other + task that might be waiting to access the mutex. */ + ( void ) xQueueGenericSend( pxMutex, NULL, queueMUTEX_GIVE_BLOCK_TIME, queueSEND_TO_BACK ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + xReturn = pdPASS; + } + else + { + /* The mutex cannot be given because the calling task is not the + holder. */ + xReturn = pdFAIL; + + traceGIVE_MUTEX_RECURSIVE_FAILED( pxMutex ); + } + + return xReturn; + } + +#endif /* configUSE_RECURSIVE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_RECURSIVE_MUTEXES == 1 ) + + BaseType_t xQueueTakeMutexRecursive( QueueHandle_t xMutex, TickType_t xTicksToWait ) + { + BaseType_t xReturn; + Queue_t * const pxMutex = ( Queue_t * ) xMutex; + + configASSERT( pxMutex ); + + /* Comments regarding mutual exclusion as per those within + xQueueGiveMutexRecursive(). */ + + traceTAKE_MUTEX_RECURSIVE( pxMutex ); + + if( pxMutex->u.xSemaphore.xMutexHolder == xTaskGetCurrentTaskHandle() ) + { + ( pxMutex->u.xSemaphore.uxRecursiveCallCount )++; + xReturn = pdPASS; + } + else + { + xReturn = xQueueSemaphoreTake( pxMutex, xTicksToWait ); + + /* pdPASS will only be returned if the mutex was successfully + obtained. The calling task may have entered the Blocked state + before reaching here. */ + if( xReturn != pdFAIL ) + { + ( pxMutex->u.xSemaphore.uxRecursiveCallCount )++; + } + else + { + traceTAKE_MUTEX_RECURSIVE_FAILED( pxMutex ); + } + } + + return xReturn; + } + +#endif /* configUSE_RECURSIVE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + + QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) + { + QueueHandle_t xHandle; + + configASSERT( uxMaxCount != 0 ); + configASSERT( uxInitialCount <= uxMaxCount ); + + xHandle = xQueueGenericCreateStatic( uxMaxCount, queueSEMAPHORE_QUEUE_ITEM_LENGTH, NULL, pxStaticQueue, queueQUEUE_TYPE_COUNTING_SEMAPHORE ); + + if( xHandle != NULL ) + { + ( ( Queue_t * ) xHandle )->uxMessagesWaiting = uxInitialCount; + + traceCREATE_COUNTING_SEMAPHORE(); + } + else + { + traceCREATE_COUNTING_SEMAPHORE_FAILED(); + } + + return xHandle; + } + +#endif /* ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */ +/*-----------------------------------------------------------*/ + +#if( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + + QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) + { + QueueHandle_t xHandle; + + configASSERT( uxMaxCount != 0 ); + configASSERT( uxInitialCount <= uxMaxCount ); + + xHandle = xQueueGenericCreate( uxMaxCount, queueSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_COUNTING_SEMAPHORE ); + + if( xHandle != NULL ) + { + ( ( Queue_t * ) xHandle )->uxMessagesWaiting = uxInitialCount; + + traceCREATE_COUNTING_SEMAPHORE(); + } + else + { + traceCREATE_COUNTING_SEMAPHORE_FAILED(); + } + + return xHandle; + } + +#endif /* ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */ +/*-----------------------------------------------------------*/ + +BaseType_t xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) +{ +BaseType_t xEntryTimeSet = pdFALSE, xYieldRequired; +TimeOut_t xTimeOut; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); + configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) ); + #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + { + configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); + } + #endif + + + /*lint -save -e904 This function relaxes the coding standard somewhat to + allow return statements within the function itself. This is done in the + interest of execution time efficiency. */ + for( ;; ) + { + taskENTER_CRITICAL(); + { + /* Is there room on the queue now? The running task must be the + highest priority task wanting to access the queue. If the head item + in the queue is to be overwritten then it does not matter if the + queue is full. */ + if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) ) + { + traceQUEUE_SEND( pxQueue ); + + #if ( configUSE_QUEUE_SETS == 1 ) + { + UBaseType_t uxPreviousMessagesWaiting = pxQueue->uxMessagesWaiting; + + xYieldRequired = prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); + + if( pxQueue->pxQueueSetContainer != NULL ) + { + if( ( xCopyPosition == queueOVERWRITE ) && ( uxPreviousMessagesWaiting != ( UBaseType_t ) 0 ) ) + { + /* Do not notify the queue set as an existing item + was overwritten in the queue so the number of items + in the queue has not changed. */ + mtCOVERAGE_TEST_MARKER(); + } + else if( prvNotifyQueueSetContainer( pxQueue, xCopyPosition ) != pdFALSE ) + { + /* The queue is a member of a queue set, and posting + to the queue set caused a higher priority task to + unblock. A context switch is required. */ + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* If there was a task waiting for data to arrive on the + queue then unblock it now. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The unblocked task has a priority higher than + our own so yield immediately. Yes it is ok to + do this from within the critical section - the + kernel takes care of that. */ + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else if( xYieldRequired != pdFALSE ) + { + /* This path is a special case that will only get + executed if the task was holding multiple mutexes + and the mutexes were given back in an order that is + different to that in which they were taken. */ + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + #else /* configUSE_QUEUE_SETS */ + { + xYieldRequired = prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); + + /* If there was a task waiting for data to arrive on the + queue then unblock it now. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The unblocked task has a priority higher than + our own so yield immediately. Yes it is ok to do + this from within the critical section - the kernel + takes care of that. */ + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else if( xYieldRequired != pdFALSE ) + { + /* This path is a special case that will only get + executed if the task was holding multiple mutexes and + the mutexes were given back in an order that is + different to that in which they were taken. */ + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_QUEUE_SETS */ + + taskEXIT_CRITICAL(); + return pdPASS; + } + else + { + if( xTicksToWait == ( TickType_t ) 0 ) + { + /* The queue was full and no block time is specified (or + the block time has expired) so leave now. */ + taskEXIT_CRITICAL(); + + /* Return to the original privilege level before exiting + the function. */ + traceQUEUE_SEND_FAILED( pxQueue ); + return errQUEUE_FULL; + } + else if( xEntryTimeSet == pdFALSE ) + { + /* The queue was full and a block time was specified so + configure the timeout structure. */ + vTaskInternalSetTimeOutState( &xTimeOut ); + xEntryTimeSet = pdTRUE; + } + else + { + /* Entry time was already set. */ + mtCOVERAGE_TEST_MARKER(); + } + } + } + taskEXIT_CRITICAL(); + + /* Interrupts and other tasks can send to and receive from the queue + now the critical section has been exited. */ + + vTaskSuspendAll(); + prvLockQueue( pxQueue ); + + /* Update the timeout state to see if it has expired yet. */ + if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) + { + if( prvIsQueueFull( pxQueue ) != pdFALSE ) + { + traceBLOCKING_ON_QUEUE_SEND( pxQueue ); + vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToSend ), xTicksToWait ); + + /* Unlocking the queue means queue events can effect the + event list. It is possible that interrupts occurring now + remove this task from the event list again - but as the + scheduler is suspended the task will go onto the pending + ready last instead of the actual ready list. */ + prvUnlockQueue( pxQueue ); + + /* Resuming the scheduler will move tasks from the pending + ready list into the ready list - so it is feasible that this + task is already in a ready list before it yields - in which + case the yield will not cause a context switch unless there + is also a higher priority task in the pending ready list. */ + if( xTaskResumeAll() == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + } + else + { + /* Try again. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + } + } + else + { + /* The timeout has expired. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + + traceQUEUE_SEND_FAILED( pxQueue ); + return errQUEUE_FULL; + } + } /*lint -restore */ +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueGenericSendFromISR( QueueHandle_t xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition ) +{ +BaseType_t xReturn; +UBaseType_t uxSavedInterruptStatus; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); + configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) ); + + /* RTOS ports that support interrupt nesting have the concept of a maximum + system call (or maximum API call) interrupt priority. Interrupts that are + above the maximum system call priority are kept permanently enabled, even + when the RTOS kernel is in a critical section, but cannot make any calls to + FreeRTOS API functions. If configASSERT() is defined in FreeRTOSConfig.h + then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has been + assigned a priority above the configured maximum system call priority. + Only FreeRTOS functions that end in FromISR can be called from interrupts + that have been assigned a priority at or (logically) below the maximum + system call interrupt priority. FreeRTOS maintains a separate interrupt + safe API to ensure interrupt entry is as fast and as simple as possible. + More information (albeit Cortex-M specific) is provided on the following + link: http://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + /* Similar to xQueueGenericSend, except without blocking if there is no room + in the queue. Also don't directly wake a task that was blocked on a queue + read, instead return a flag to say whether a context switch is required or + not (i.e. has a task with a higher priority than us been woken by this + post). */ + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) ) + { + const int8_t cTxLock = pxQueue->cTxLock; + + traceQUEUE_SEND_FROM_ISR( pxQueue ); + + /* Semaphores use xQueueGiveFromISR(), so pxQueue will not be a + semaphore or mutex. That means prvCopyDataToQueue() cannot result + in a task disinheriting a priority and prvCopyDataToQueue() can be + called here even though the disinherit function does not check if + the scheduler is suspended before accessing the ready lists. */ + ( void ) prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); + + /* The event list is not altered if the queue is locked. This will + be done when the queue is unlocked later. */ + if( cTxLock == queueUNLOCKED ) + { + #if ( configUSE_QUEUE_SETS == 1 ) + { + if( pxQueue->pxQueueSetContainer != NULL ) + { + if( prvNotifyQueueSetContainer( pxQueue, xCopyPosition ) != pdFALSE ) + { + /* The queue is a member of a queue set, and posting + to the queue set caused a higher priority task to + unblock. A context switch is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so + record that a context switch is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + #else /* configUSE_QUEUE_SETS */ + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so record that a + context switch is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_QUEUE_SETS */ + } + else + { + /* Increment the lock count so the task that unlocks the queue + knows that data was posted while it was locked. */ + pxQueue->cTxLock = ( int8_t ) ( cTxLock + 1 ); + } + + xReturn = pdPASS; + } + else + { + traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue ); + xReturn = errQUEUE_FULL; + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue, BaseType_t * const pxHigherPriorityTaskWoken ) +{ +BaseType_t xReturn; +UBaseType_t uxSavedInterruptStatus; +Queue_t * const pxQueue = xQueue; + + /* Similar to xQueueGenericSendFromISR() but used with semaphores where the + item size is 0. Don't directly wake a task that was blocked on a queue + read, instead return a flag to say whether a context switch is required or + not (i.e. has a task with a higher priority than us been woken by this + post). */ + + configASSERT( pxQueue ); + + /* xQueueGenericSendFromISR() should be used instead of xQueueGiveFromISR() + if the item size is not 0. */ + configASSERT( pxQueue->uxItemSize == 0 ); + + /* Normally a mutex would not be given from an interrupt, especially if + there is a mutex holder, as priority inheritance makes no sense for an + interrupts, only tasks. */ + configASSERT( !( ( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) && ( pxQueue->u.xSemaphore.xMutexHolder != NULL ) ) ); + + /* RTOS ports that support interrupt nesting have the concept of a maximum + system call (or maximum API call) interrupt priority. Interrupts that are + above the maximum system call priority are kept permanently enabled, even + when the RTOS kernel is in a critical section, but cannot make any calls to + FreeRTOS API functions. If configASSERT() is defined in FreeRTOSConfig.h + then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has been + assigned a priority above the configured maximum system call priority. + Only FreeRTOS functions that end in FromISR can be called from interrupts + that have been assigned a priority at or (logically) below the maximum + system call interrupt priority. FreeRTOS maintains a separate interrupt + safe API to ensure interrupt entry is as fast and as simple as possible. + More information (albeit Cortex-M specific) is provided on the following + link: http://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + const UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting; + + /* When the queue is used to implement a semaphore no data is ever + moved through the queue but it is still valid to see if the queue 'has + space'. */ + if( uxMessagesWaiting < pxQueue->uxLength ) + { + const int8_t cTxLock = pxQueue->cTxLock; + + traceQUEUE_SEND_FROM_ISR( pxQueue ); + + /* A task can only have an inherited priority if it is a mutex + holder - and if there is a mutex holder then the mutex cannot be + given from an ISR. As this is the ISR version of the function it + can be assumed there is no mutex holder and no need to determine if + priority disinheritance is needed. Simply increase the count of + messages (semaphores) available. */ + pxQueue->uxMessagesWaiting = uxMessagesWaiting + ( UBaseType_t ) 1; + + /* The event list is not altered if the queue is locked. This will + be done when the queue is unlocked later. */ + if( cTxLock == queueUNLOCKED ) + { + #if ( configUSE_QUEUE_SETS == 1 ) + { + if( pxQueue->pxQueueSetContainer != NULL ) + { + if( prvNotifyQueueSetContainer( pxQueue, queueSEND_TO_BACK ) != pdFALSE ) + { + /* The semaphore is a member of a queue set, and + posting to the queue set caused a higher priority + task to unblock. A context switch is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so + record that a context switch is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + #else /* configUSE_QUEUE_SETS */ + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so record that a + context switch is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_QUEUE_SETS */ + } + else + { + /* Increment the lock count so the task that unlocks the queue + knows that data was posted while it was locked. */ + pxQueue->cTxLock = ( int8_t ) ( cTxLock + 1 ); + } + + xReturn = pdPASS; + } + else + { + traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue ); + xReturn = errQUEUE_FULL; + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) +{ +BaseType_t xEntryTimeSet = pdFALSE; +TimeOut_t xTimeOut; +Queue_t * const pxQueue = xQueue; + + /* Check the pointer is not NULL. */ + configASSERT( ( pxQueue ) ); + + /* The buffer into which data is received can only be NULL if the data size + is zero (so no data is copied into the buffer. */ + configASSERT( !( ( ( pvBuffer ) == NULL ) && ( ( pxQueue )->uxItemSize != ( UBaseType_t ) 0U ) ) ); + + /* Cannot block if the scheduler is suspended. */ + #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + { + configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); + } + #endif + + + /*lint -save -e904 This function relaxes the coding standard somewhat to + allow return statements within the function itself. This is done in the + interest of execution time efficiency. */ + for( ;; ) + { + taskENTER_CRITICAL(); + { + const UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting; + + /* Is there data in the queue now? To be running the calling task + must be the highest priority task wanting to access the queue. */ + if( uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + /* Data available, remove one item. */ + prvCopyDataFromQueue( pxQueue, pvBuffer ); + traceQUEUE_RECEIVE( pxQueue ); + pxQueue->uxMessagesWaiting = uxMessagesWaiting - ( UBaseType_t ) 1; + + /* There is now space in the queue, were any tasks waiting to + post to the queue? If so, unblock the highest priority waiting + task. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + taskEXIT_CRITICAL(); + return pdPASS; + } + else + { + if( xTicksToWait == ( TickType_t ) 0 ) + { + /* The queue was empty and no block time is specified (or + the block time has expired) so leave now. */ + taskEXIT_CRITICAL(); + traceQUEUE_RECEIVE_FAILED( pxQueue ); + return errQUEUE_EMPTY; + } + else if( xEntryTimeSet == pdFALSE ) + { + /* The queue was empty and a block time was specified so + configure the timeout structure. */ + vTaskInternalSetTimeOutState( &xTimeOut ); + xEntryTimeSet = pdTRUE; + } + else + { + /* Entry time was already set. */ + mtCOVERAGE_TEST_MARKER(); + } + } + } + taskEXIT_CRITICAL(); + + /* Interrupts and other tasks can send to and receive from the queue + now the critical section has been exited. */ + + vTaskSuspendAll(); + prvLockQueue( pxQueue ); + + /* Update the timeout state to see if it has expired yet. */ + if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) + { + /* The timeout has not expired. If the queue is still empty place + the task on the list of tasks waiting to receive from the queue. */ + if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) + { + traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue ); + vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait ); + prvUnlockQueue( pxQueue ); + if( xTaskResumeAll() == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* The queue contains data again. Loop back to try and read the + data. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + } + } + else + { + /* Timed out. If there is no data in the queue exit, otherwise loop + back and attempt to read the data. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + + if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) + { + traceQUEUE_RECEIVE_FAILED( pxQueue ); + return errQUEUE_EMPTY; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } /*lint -restore */ +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue, TickType_t xTicksToWait ) +{ +BaseType_t xEntryTimeSet = pdFALSE; +TimeOut_t xTimeOut; +Queue_t * const pxQueue = xQueue; + +#if( configUSE_MUTEXES == 1 ) + BaseType_t xInheritanceOccurred = pdFALSE; +#endif + + /* Check the queue pointer is not NULL. */ + configASSERT( ( pxQueue ) ); + + /* Check this really is a semaphore, in which case the item size will be + 0. */ + configASSERT( pxQueue->uxItemSize == 0 ); + + /* Cannot block if the scheduler is suspended. */ + #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + { + configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); + } + #endif + + + /*lint -save -e904 This function relaxes the coding standard somewhat to allow return + statements within the function itself. This is done in the interest + of execution time efficiency. */ + for( ;; ) + { + taskENTER_CRITICAL(); + { + /* Semaphores are queues with an item size of 0, and where the + number of messages in the queue is the semaphore's count value. */ + const UBaseType_t uxSemaphoreCount = pxQueue->uxMessagesWaiting; + + /* Is there data in the queue now? To be running the calling task + must be the highest priority task wanting to access the queue. */ + if( uxSemaphoreCount > ( UBaseType_t ) 0 ) + { + traceQUEUE_RECEIVE( pxQueue ); + + /* Semaphores are queues with a data size of zero and where the + messages waiting is the semaphore's count. Reduce the count. */ + pxQueue->uxMessagesWaiting = uxSemaphoreCount - ( UBaseType_t ) 1; + + #if ( configUSE_MUTEXES == 1 ) + { + if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) + { + /* Record the information required to implement + priority inheritance should it become necessary. */ + pxQueue->u.xSemaphore.xMutexHolder = pvTaskIncrementMutexHeldCount(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_MUTEXES */ + + /* Check to see if other tasks are blocked waiting to give the + semaphore, and if so, unblock the highest priority such task. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + taskEXIT_CRITICAL(); + return pdPASS; + } + else + { + if( xTicksToWait == ( TickType_t ) 0 ) + { + /* For inheritance to have occurred there must have been an + initial timeout, and an adjusted timeout cannot become 0, as + if it were 0 the function would have exited. */ + #if( configUSE_MUTEXES == 1 ) + { + configASSERT( xInheritanceOccurred == pdFALSE ); + } + #endif /* configUSE_MUTEXES */ + + /* The semaphore count was 0 and no block time is specified + (or the block time has expired) so exit now. */ + taskEXIT_CRITICAL(); + traceQUEUE_RECEIVE_FAILED( pxQueue ); + return errQUEUE_EMPTY; + } + else if( xEntryTimeSet == pdFALSE ) + { + /* The semaphore count was 0 and a block time was specified + so configure the timeout structure ready to block. */ + vTaskInternalSetTimeOutState( &xTimeOut ); + xEntryTimeSet = pdTRUE; + } + else + { + /* Entry time was already set. */ + mtCOVERAGE_TEST_MARKER(); + } + } + } + taskEXIT_CRITICAL(); + + /* Interrupts and other tasks can give to and take from the semaphore + now the critical section has been exited. */ + + vTaskSuspendAll(); + prvLockQueue( pxQueue ); + + /* Update the timeout state to see if it has expired yet. */ + if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) + { + /* A block time is specified and not expired. If the semaphore + count is 0 then enter the Blocked state to wait for a semaphore to + become available. As semaphores are implemented with queues the + queue being empty is equivalent to the semaphore count being 0. */ + if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) + { + traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue ); + + #if ( configUSE_MUTEXES == 1 ) + { + if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) + { + taskENTER_CRITICAL(); + { + xInheritanceOccurred = xTaskPriorityInherit( pxQueue->u.xSemaphore.xMutexHolder ); + } + taskEXIT_CRITICAL(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif + + vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait ); + prvUnlockQueue( pxQueue ); + if( xTaskResumeAll() == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* There was no timeout and the semaphore count was not 0, so + attempt to take the semaphore again. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + } + } + else + { + /* Timed out. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + + /* If the semaphore count is 0 exit now as the timeout has + expired. Otherwise return to attempt to take the semaphore that is + known to be available. As semaphores are implemented by queues the + queue being empty is equivalent to the semaphore count being 0. */ + if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) + { + #if ( configUSE_MUTEXES == 1 ) + { + /* xInheritanceOccurred could only have be set if + pxQueue->uxQueueType == queueQUEUE_IS_MUTEX so no need to + test the mutex type again to check it is actually a mutex. */ + if( xInheritanceOccurred != pdFALSE ) + { + taskENTER_CRITICAL(); + { + UBaseType_t uxHighestWaitingPriority; + + /* This task blocking on the mutex caused another + task to inherit this task's priority. Now this task + has timed out the priority should be disinherited + again, but only as low as the next highest priority + task that is waiting for the same mutex. */ + uxHighestWaitingPriority = prvGetDisinheritPriorityAfterTimeout( pxQueue ); + vTaskPriorityDisinheritAfterTimeout( pxQueue->u.xSemaphore.xMutexHolder, uxHighestWaitingPriority ); + } + taskEXIT_CRITICAL(); + } + } + #endif /* configUSE_MUTEXES */ + + traceQUEUE_RECEIVE_FAILED( pxQueue ); + return errQUEUE_EMPTY; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } /*lint -restore */ +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueuePeek( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) +{ +BaseType_t xEntryTimeSet = pdFALSE; +TimeOut_t xTimeOut; +int8_t *pcOriginalReadPosition; +Queue_t * const pxQueue = xQueue; + + /* Check the pointer is not NULL. */ + configASSERT( ( pxQueue ) ); + + /* The buffer into which data is received can only be NULL if the data size + is zero (so no data is copied into the buffer. */ + configASSERT( !( ( ( pvBuffer ) == NULL ) && ( ( pxQueue )->uxItemSize != ( UBaseType_t ) 0U ) ) ); + + /* Cannot block if the scheduler is suspended. */ + #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + { + configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); + } + #endif + + + /*lint -save -e904 This function relaxes the coding standard somewhat to + allow return statements within the function itself. This is done in the + interest of execution time efficiency. */ + for( ;; ) + { + taskENTER_CRITICAL(); + { + const UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting; + + /* Is there data in the queue now? To be running the calling task + must be the highest priority task wanting to access the queue. */ + if( uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + /* Remember the read position so it can be reset after the data + is read from the queue as this function is only peeking the + data, not removing it. */ + pcOriginalReadPosition = pxQueue->u.xQueue.pcReadFrom; + + prvCopyDataFromQueue( pxQueue, pvBuffer ); + traceQUEUE_PEEK( pxQueue ); + + /* The data is not being removed, so reset the read pointer. */ + pxQueue->u.xQueue.pcReadFrom = pcOriginalReadPosition; + + /* The data is being left in the queue, so see if there are + any other tasks waiting for the data. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority than this task. */ + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + taskEXIT_CRITICAL(); + return pdPASS; + } + else + { + if( xTicksToWait == ( TickType_t ) 0 ) + { + /* The queue was empty and no block time is specified (or + the block time has expired) so leave now. */ + taskEXIT_CRITICAL(); + traceQUEUE_PEEK_FAILED( pxQueue ); + return errQUEUE_EMPTY; + } + else if( xEntryTimeSet == pdFALSE ) + { + /* The queue was empty and a block time was specified so + configure the timeout structure ready to enter the blocked + state. */ + vTaskInternalSetTimeOutState( &xTimeOut ); + xEntryTimeSet = pdTRUE; + } + else + { + /* Entry time was already set. */ + mtCOVERAGE_TEST_MARKER(); + } + } + } + taskEXIT_CRITICAL(); + + /* Interrupts and other tasks can send to and receive from the queue + now the critical section has been exited. */ + + vTaskSuspendAll(); + prvLockQueue( pxQueue ); + + /* Update the timeout state to see if it has expired yet. */ + if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) + { + /* Timeout has not expired yet, check to see if there is data in the + queue now, and if not enter the Blocked state to wait for data. */ + if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) + { + traceBLOCKING_ON_QUEUE_PEEK( pxQueue ); + vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait ); + prvUnlockQueue( pxQueue ); + if( xTaskResumeAll() == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* There is data in the queue now, so don't enter the blocked + state, instead return to try and obtain the data. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + } + } + else + { + /* The timeout has expired. If there is still no data in the queue + exit, otherwise go back and try to read the data again. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + + if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) + { + traceQUEUE_PEEK_FAILED( pxQueue ); + return errQUEUE_EMPTY; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } /*lint -restore */ +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueReceiveFromISR( QueueHandle_t xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken ) +{ +BaseType_t xReturn; +UBaseType_t uxSavedInterruptStatus; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + configASSERT( !( ( pvBuffer == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); + + /* RTOS ports that support interrupt nesting have the concept of a maximum + system call (or maximum API call) interrupt priority. Interrupts that are + above the maximum system call priority are kept permanently enabled, even + when the RTOS kernel is in a critical section, but cannot make any calls to + FreeRTOS API functions. If configASSERT() is defined in FreeRTOSConfig.h + then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has been + assigned a priority above the configured maximum system call priority. + Only FreeRTOS functions that end in FromISR can be called from interrupts + that have been assigned a priority at or (logically) below the maximum + system call interrupt priority. FreeRTOS maintains a separate interrupt + safe API to ensure interrupt entry is as fast and as simple as possible. + More information (albeit Cortex-M specific) is provided on the following + link: http://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + const UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting; + + /* Cannot block in an ISR, so check there is data available. */ + if( uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + const int8_t cRxLock = pxQueue->cRxLock; + + traceQUEUE_RECEIVE_FROM_ISR( pxQueue ); + + prvCopyDataFromQueue( pxQueue, pvBuffer ); + pxQueue->uxMessagesWaiting = uxMessagesWaiting - ( UBaseType_t ) 1; + + /* If the queue is locked the event list will not be modified. + Instead update the lock count so the task that unlocks the queue + will know that an ISR has removed data while the queue was + locked. */ + if( cRxLock == queueUNLOCKED ) + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + /* The task waiting has a higher priority than us so + force a context switch. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* Increment the lock count so the task that unlocks the queue + knows that data was removed while it was locked. */ + pxQueue->cRxLock = ( int8_t ) ( cRxLock + 1 ); + } + + xReturn = pdPASS; + } + else + { + xReturn = pdFAIL; + traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue ); + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueuePeekFromISR( QueueHandle_t xQueue, void * const pvBuffer ) +{ +BaseType_t xReturn; +UBaseType_t uxSavedInterruptStatus; +int8_t *pcOriginalReadPosition; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + configASSERT( !( ( pvBuffer == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); + configASSERT( pxQueue->uxItemSize != 0 ); /* Can't peek a semaphore. */ + + /* RTOS ports that support interrupt nesting have the concept of a maximum + system call (or maximum API call) interrupt priority. Interrupts that are + above the maximum system call priority are kept permanently enabled, even + when the RTOS kernel is in a critical section, but cannot make any calls to + FreeRTOS API functions. If configASSERT() is defined in FreeRTOSConfig.h + then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has been + assigned a priority above the configured maximum system call priority. + Only FreeRTOS functions that end in FromISR can be called from interrupts + that have been assigned a priority at or (logically) below the maximum + system call interrupt priority. FreeRTOS maintains a separate interrupt + safe API to ensure interrupt entry is as fast and as simple as possible. + More information (albeit Cortex-M specific) is provided on the following + link: http://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + /* Cannot block in an ISR, so check there is data available. */ + if( pxQueue->uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + traceQUEUE_PEEK_FROM_ISR( pxQueue ); + + /* Remember the read position so it can be reset as nothing is + actually being removed from the queue. */ + pcOriginalReadPosition = pxQueue->u.xQueue.pcReadFrom; + prvCopyDataFromQueue( pxQueue, pvBuffer ); + pxQueue->u.xQueue.pcReadFrom = pcOriginalReadPosition; + + xReturn = pdPASS; + } + else + { + xReturn = pdFAIL; + traceQUEUE_PEEK_FROM_ISR_FAILED( pxQueue ); + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) +{ +UBaseType_t uxReturn; + + configASSERT( xQueue ); + + taskENTER_CRITICAL(); + { + uxReturn = ( ( Queue_t * ) xQueue )->uxMessagesWaiting; + } + taskEXIT_CRITICAL(); + + return uxReturn; +} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */ +/*-----------------------------------------------------------*/ + +UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ) +{ +UBaseType_t uxReturn; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + + taskENTER_CRITICAL(); + { + uxReturn = pxQueue->uxLength - pxQueue->uxMessagesWaiting; + } + taskEXIT_CRITICAL(); + + return uxReturn; +} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */ +/*-----------------------------------------------------------*/ + +UBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) +{ +UBaseType_t uxReturn; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + uxReturn = pxQueue->uxMessagesWaiting; + + return uxReturn; +} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */ +/*-----------------------------------------------------------*/ + +void vQueueDelete( QueueHandle_t xQueue ) +{ +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + traceQUEUE_DELETE( pxQueue ); + + #if ( configQUEUE_REGISTRY_SIZE > 0 ) + { + vQueueUnregisterQueue( pxQueue ); + } + #endif + + #if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 0 ) ) + { + /* The queue can only have been allocated dynamically - free it + again. */ + vPortFree( pxQueue ); + } + #elif( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + { + /* The queue could have been allocated statically or dynamically, so + check before attempting to free the memory. */ + if( pxQueue->ucStaticallyAllocated == ( uint8_t ) pdFALSE ) + { + vPortFree( pxQueue ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #else + { + /* The queue must have been statically allocated, so is not going to be + deleted. Avoid compiler warnings about the unused parameter. */ + ( void ) pxQueue; + } + #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ +} +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + UBaseType_t uxQueueGetQueueNumber( QueueHandle_t xQueue ) + { + return ( ( Queue_t * ) xQueue )->uxQueueNumber; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + void vQueueSetQueueNumber( QueueHandle_t xQueue, UBaseType_t uxQueueNumber ) + { + ( ( Queue_t * ) xQueue )->uxQueueNumber = uxQueueNumber; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + uint8_t ucQueueGetQueueType( QueueHandle_t xQueue ) + { + return ( ( Queue_t * ) xQueue )->ucQueueType; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if( configUSE_MUTEXES == 1 ) + + static UBaseType_t prvGetDisinheritPriorityAfterTimeout( const Queue_t * const pxQueue ) + { + UBaseType_t uxHighestPriorityOfWaitingTasks; + + /* If a task waiting for a mutex causes the mutex holder to inherit a + priority, but the waiting task times out, then the holder should + disinherit the priority - but only down to the highest priority of any + other tasks that are waiting for the same mutex. For this purpose, + return the priority of the highest priority task that is waiting for the + mutex. */ + if( listCURRENT_LIST_LENGTH( &( pxQueue->xTasksWaitingToReceive ) ) > 0U ) + { + uxHighestPriorityOfWaitingTasks = ( UBaseType_t ) configMAX_PRIORITIES - ( UBaseType_t ) listGET_ITEM_VALUE_OF_HEAD_ENTRY( &( pxQueue->xTasksWaitingToReceive ) ); + } + else + { + uxHighestPriorityOfWaitingTasks = tskIDLE_PRIORITY; + } + + return uxHighestPriorityOfWaitingTasks; + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +static BaseType_t prvCopyDataToQueue( Queue_t * const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition ) +{ +BaseType_t xReturn = pdFALSE; +UBaseType_t uxMessagesWaiting; + + /* This function is called from a critical section. */ + + uxMessagesWaiting = pxQueue->uxMessagesWaiting; + + if( pxQueue->uxItemSize == ( UBaseType_t ) 0 ) + { + #if ( configUSE_MUTEXES == 1 ) + { + if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) + { + /* The mutex is no longer being held. */ + xReturn = xTaskPriorityDisinherit( pxQueue->u.xSemaphore.xMutexHolder ); + pxQueue->u.xSemaphore.xMutexHolder = NULL; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_MUTEXES */ + } + else if( xPosition == queueSEND_TO_BACK ) + { + ( void ) memcpy( ( void * ) pxQueue->pcWriteTo, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 !e9087 MISRA exception as the casts are only redundant for some ports, plus previous logic ensures a null pointer can only be passed to memcpy() if the copy size is 0. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. */ + pxQueue->pcWriteTo += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */ + if( pxQueue->pcWriteTo >= pxQueue->u.xQueue.pcTail ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */ + { + pxQueue->pcWriteTo = pxQueue->pcHead; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + ( void ) memcpy( ( void * ) pxQueue->u.xQueue.pcReadFrom, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e9087 !e418 MISRA exception as the casts are only redundant for some ports. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. Assert checks null pointer only used when length is 0. */ + pxQueue->u.xQueue.pcReadFrom -= pxQueue->uxItemSize; + if( pxQueue->u.xQueue.pcReadFrom < pxQueue->pcHead ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */ + { + pxQueue->u.xQueue.pcReadFrom = ( pxQueue->u.xQueue.pcTail - pxQueue->uxItemSize ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( xPosition == queueOVERWRITE ) + { + if( uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + /* An item is not being added but overwritten, so subtract + one from the recorded number of items in the queue so when + one is added again below the number of recorded items remains + correct. */ + --uxMessagesWaiting; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + pxQueue->uxMessagesWaiting = uxMessagesWaiting + ( UBaseType_t ) 1; + + return xReturn; +} +/*-----------------------------------------------------------*/ + +static void prvCopyDataFromQueue( Queue_t * const pxQueue, void * const pvBuffer ) +{ + if( pxQueue->uxItemSize != ( UBaseType_t ) 0 ) + { + pxQueue->u.xQueue.pcReadFrom += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */ + if( pxQueue->u.xQueue.pcReadFrom >= pxQueue->u.xQueue.pcTail ) /*lint !e946 MISRA exception justified as use of the relational operator is the cleanest solutions. */ + { + pxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + ( void ) memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->u.xQueue.pcReadFrom, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 !e9087 MISRA exception as the casts are only redundant for some ports. Also previous logic ensures a null pointer can only be passed to memcpy() when the count is 0. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. */ + } +} +/*-----------------------------------------------------------*/ + +static void prvUnlockQueue( Queue_t * const pxQueue ) +{ + /* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED. */ + + /* The lock counts contains the number of extra data items placed or + removed from the queue while the queue was locked. When a queue is + locked items can be added or removed, but the event lists cannot be + updated. */ + taskENTER_CRITICAL(); + { + int8_t cTxLock = pxQueue->cTxLock; + + /* See if data was added to the queue while it was locked. */ + while( cTxLock > queueLOCKED_UNMODIFIED ) + { + /* Data was posted while the queue was locked. Are any tasks + blocked waiting for data to become available? */ + #if ( configUSE_QUEUE_SETS == 1 ) + { + if( pxQueue->pxQueueSetContainer != NULL ) + { + if( prvNotifyQueueSetContainer( pxQueue, queueSEND_TO_BACK ) != pdFALSE ) + { + /* The queue is a member of a queue set, and posting to + the queue set caused a higher priority task to unblock. + A context switch is required. */ + vTaskMissedYield(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* Tasks that are removed from the event list will get + added to the pending ready list as the scheduler is still + suspended. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so record that a + context switch is required. */ + vTaskMissedYield(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + break; + } + } + } + #else /* configUSE_QUEUE_SETS */ + { + /* Tasks that are removed from the event list will get added to + the pending ready list as the scheduler is still suspended. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so record that + a context switch is required. */ + vTaskMissedYield(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + break; + } + } + #endif /* configUSE_QUEUE_SETS */ + + --cTxLock; + } + + pxQueue->cTxLock = queueUNLOCKED; + } + taskEXIT_CRITICAL(); + + /* Do the same for the Rx lock. */ + taskENTER_CRITICAL(); + { + int8_t cRxLock = pxQueue->cRxLock; + + while( cRxLock > queueLOCKED_UNMODIFIED ) + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + vTaskMissedYield(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + --cRxLock; + } + else + { + break; + } + } + + pxQueue->cRxLock = queueUNLOCKED; + } + taskEXIT_CRITICAL(); +} +/*-----------------------------------------------------------*/ + +static BaseType_t prvIsQueueEmpty( const Queue_t *pxQueue ) +{ +BaseType_t xReturn; + + taskENTER_CRITICAL(); + { + if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0 ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + } + taskEXIT_CRITICAL(); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) +{ +BaseType_t xReturn; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0 ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} /*lint !e818 xQueue could not be pointer to const because it is a typedef. */ +/*-----------------------------------------------------------*/ + +static BaseType_t prvIsQueueFull( const Queue_t *pxQueue ) +{ +BaseType_t xReturn; + + taskENTER_CRITICAL(); + { + if( pxQueue->uxMessagesWaiting == pxQueue->uxLength ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + } + taskEXIT_CRITICAL(); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) +{ +BaseType_t xReturn; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + if( pxQueue->uxMessagesWaiting == pxQueue->uxLength ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} /*lint !e818 xQueue could not be pointer to const because it is a typedef. */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_CO_ROUTINES == 1 ) + + BaseType_t xQueueCRSend( QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait ) + { + BaseType_t xReturn; + Queue_t * const pxQueue = xQueue; + + /* If the queue is already full we may have to block. A critical section + is required to prevent an interrupt removing something from the queue + between the check to see if the queue is full and blocking on the queue. */ + portDISABLE_INTERRUPTS(); + { + if( prvIsQueueFull( pxQueue ) != pdFALSE ) + { + /* The queue is full - do we want to block or just leave without + posting? */ + if( xTicksToWait > ( TickType_t ) 0 ) + { + /* As this is called from a coroutine we cannot block directly, but + return indicating that we need to block. */ + vCoRoutineAddToDelayedList( xTicksToWait, &( pxQueue->xTasksWaitingToSend ) ); + portENABLE_INTERRUPTS(); + return errQUEUE_BLOCKED; + } + else + { + portENABLE_INTERRUPTS(); + return errQUEUE_FULL; + } + } + } + portENABLE_INTERRUPTS(); + + portDISABLE_INTERRUPTS(); + { + if( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) + { + /* There is room in the queue, copy the data into the queue. */ + prvCopyDataToQueue( pxQueue, pvItemToQueue, queueSEND_TO_BACK ); + xReturn = pdPASS; + + /* Were any co-routines waiting for data to become available? */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + /* In this instance the co-routine could be placed directly + into the ready list as we are within a critical section. + Instead the same pending ready list mechanism is used as if + the event were caused from within an interrupt. */ + if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The co-routine waiting has a higher priority so record + that a yield might be appropriate. */ + xReturn = errQUEUE_YIELD; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + xReturn = errQUEUE_FULL; + } + } + portENABLE_INTERRUPTS(); + + return xReturn; + } + +#endif /* configUSE_CO_ROUTINES */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_CO_ROUTINES == 1 ) + + BaseType_t xQueueCRReceive( QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait ) + { + BaseType_t xReturn; + Queue_t * const pxQueue = xQueue; + + /* If the queue is already empty we may have to block. A critical section + is required to prevent an interrupt adding something to the queue + between the check to see if the queue is empty and blocking on the queue. */ + portDISABLE_INTERRUPTS(); + { + if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0 ) + { + /* There are no messages in the queue, do we want to block or just + leave with nothing? */ + if( xTicksToWait > ( TickType_t ) 0 ) + { + /* As this is a co-routine we cannot block directly, but return + indicating that we need to block. */ + vCoRoutineAddToDelayedList( xTicksToWait, &( pxQueue->xTasksWaitingToReceive ) ); + portENABLE_INTERRUPTS(); + return errQUEUE_BLOCKED; + } + else + { + portENABLE_INTERRUPTS(); + return errQUEUE_FULL; + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + portENABLE_INTERRUPTS(); + + portDISABLE_INTERRUPTS(); + { + if( pxQueue->uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + /* Data is available from the queue. */ + pxQueue->u.xQueue.pcReadFrom += pxQueue->uxItemSize; + if( pxQueue->u.xQueue.pcReadFrom >= pxQueue->u.xQueue.pcTail ) + { + pxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + --( pxQueue->uxMessagesWaiting ); + ( void ) memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->u.xQueue.pcReadFrom, ( unsigned ) pxQueue->uxItemSize ); + + xReturn = pdPASS; + + /* Were any co-routines waiting for space to become available? */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + /* In this instance the co-routine could be placed directly + into the ready list as we are within a critical section. + Instead the same pending ready list mechanism is used as if + the event were caused from within an interrupt. */ + if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + xReturn = errQUEUE_YIELD; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + xReturn = pdFAIL; + } + } + portENABLE_INTERRUPTS(); + + return xReturn; + } + +#endif /* configUSE_CO_ROUTINES */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_CO_ROUTINES == 1 ) + + BaseType_t xQueueCRSendFromISR( QueueHandle_t xQueue, const void *pvItemToQueue, BaseType_t xCoRoutinePreviouslyWoken ) + { + Queue_t * const pxQueue = xQueue; + + /* Cannot block within an ISR so if there is no space on the queue then + exit without doing anything. */ + if( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) + { + prvCopyDataToQueue( pxQueue, pvItemToQueue, queueSEND_TO_BACK ); + + /* We only want to wake one co-routine per ISR, so check that a + co-routine has not already been woken. */ + if( xCoRoutinePreviouslyWoken == pdFALSE ) + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + return pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xCoRoutinePreviouslyWoken; + } + +#endif /* configUSE_CO_ROUTINES */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_CO_ROUTINES == 1 ) + + BaseType_t xQueueCRReceiveFromISR( QueueHandle_t xQueue, void *pvBuffer, BaseType_t *pxCoRoutineWoken ) + { + BaseType_t xReturn; + Queue_t * const pxQueue = xQueue; + + /* We cannot block from an ISR, so check there is data available. If + not then just leave without doing anything. */ + if( pxQueue->uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + /* Copy the data from the queue. */ + pxQueue->u.xQueue.pcReadFrom += pxQueue->uxItemSize; + if( pxQueue->u.xQueue.pcReadFrom >= pxQueue->u.xQueue.pcTail ) + { + pxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + --( pxQueue->uxMessagesWaiting ); + ( void ) memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->u.xQueue.pcReadFrom, ( unsigned ) pxQueue->uxItemSize ); + + if( ( *pxCoRoutineWoken ) == pdFALSE ) + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + *pxCoRoutineWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + xReturn = pdPASS; + } + else + { + xReturn = pdFAIL; + } + + return xReturn; + } + +#endif /* configUSE_CO_ROUTINES */ +/*-----------------------------------------------------------*/ + +#if ( configQUEUE_REGISTRY_SIZE > 0 ) + + void vQueueAddToRegistry( QueueHandle_t xQueue, const char *pcQueueName ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + { + UBaseType_t ux; + + /* See if there is an empty space in the registry. A NULL name denotes + a free slot. */ + for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ ) + { + if( xQueueRegistry[ ux ].pcQueueName == NULL ) + { + /* Store the information on this queue. */ + xQueueRegistry[ ux ].pcQueueName = pcQueueName; + xQueueRegistry[ ux ].xHandle = xQueue; + + traceQUEUE_REGISTRY_ADD( xQueue, pcQueueName ); + break; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + +#endif /* configQUEUE_REGISTRY_SIZE */ +/*-----------------------------------------------------------*/ + +#if ( configQUEUE_REGISTRY_SIZE > 0 ) + + const char *pcQueueGetName( QueueHandle_t xQueue ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + { + UBaseType_t ux; + const char *pcReturn = NULL; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + + /* Note there is nothing here to protect against another task adding or + removing entries from the registry while it is being searched. */ + for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ ) + { + if( xQueueRegistry[ ux ].xHandle == xQueue ) + { + pcReturn = xQueueRegistry[ ux ].pcQueueName; + break; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + return pcReturn; + } /*lint !e818 xQueue cannot be a pointer to const because it is a typedef. */ + +#endif /* configQUEUE_REGISTRY_SIZE */ +/*-----------------------------------------------------------*/ + +#if ( configQUEUE_REGISTRY_SIZE > 0 ) + + void vQueueUnregisterQueue( QueueHandle_t xQueue ) + { + UBaseType_t ux; + + /* See if the handle of the queue being unregistered in actually in the + registry. */ + for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ ) + { + if( xQueueRegistry[ ux ].xHandle == xQueue ) + { + /* Set the name to NULL to show that this slot if free again. */ + xQueueRegistry[ ux ].pcQueueName = NULL; + + /* Set the handle to NULL to ensure the same queue handle cannot + appear in the registry twice if it is added, removed, then + added again. */ + xQueueRegistry[ ux ].xHandle = ( QueueHandle_t ) 0; + break; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + } /*lint !e818 xQueue could not be pointer to const because it is a typedef. */ + +#endif /* configQUEUE_REGISTRY_SIZE */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TIMERS == 1 ) + + void vQueueWaitForMessageRestricted( QueueHandle_t xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely ) + { + Queue_t * const pxQueue = xQueue; + + /* This function should not be called by application code hence the + 'Restricted' in its name. It is not part of the public API. It is + designed for use by kernel code, and has special calling requirements. + It can result in vListInsert() being called on a list that can only + possibly ever have one item in it, so the list will be fast, but even + so it should be called with the scheduler locked and not from a critical + section. */ + + /* Only do anything if there are no messages in the queue. This function + will not actually cause the task to block, just place it on a blocked + list. It will not block until the scheduler is unlocked - at which + time a yield will be performed. If an item is added to the queue while + the queue is locked, and the calling task blocks on the queue, then the + calling task will be immediately unblocked when the queue is unlocked. */ + prvLockQueue( pxQueue ); + if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0U ) + { + /* There is nothing in the queue, block for the specified period. */ + vTaskPlaceOnEventListRestricted( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait, xWaitIndefinitely ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + prvUnlockQueue( pxQueue ); + } + +#endif /* configUSE_TIMERS */ +/*-----------------------------------------------------------*/ + +#if( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + + QueueSetHandle_t xQueueCreateSet( const UBaseType_t uxEventQueueLength ) + { + QueueSetHandle_t pxQueue; + + pxQueue = xQueueGenericCreate( uxEventQueueLength, ( UBaseType_t ) sizeof( Queue_t * ), queueQUEUE_TYPE_SET ); + + return pxQueue; + } + +#endif /* configUSE_QUEUE_SETS */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_QUEUE_SETS == 1 ) + + BaseType_t xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) + { + BaseType_t xReturn; + + taskENTER_CRITICAL(); + { + if( ( ( Queue_t * ) xQueueOrSemaphore )->pxQueueSetContainer != NULL ) + { + /* Cannot add a queue/semaphore to more than one queue set. */ + xReturn = pdFAIL; + } + else if( ( ( Queue_t * ) xQueueOrSemaphore )->uxMessagesWaiting != ( UBaseType_t ) 0 ) + { + /* Cannot add a queue/semaphore to a queue set if there are already + items in the queue/semaphore. */ + xReturn = pdFAIL; + } + else + { + ( ( Queue_t * ) xQueueOrSemaphore )->pxQueueSetContainer = xQueueSet; + xReturn = pdPASS; + } + } + taskEXIT_CRITICAL(); + + return xReturn; + } + +#endif /* configUSE_QUEUE_SETS */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_QUEUE_SETS == 1 ) + + BaseType_t xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) + { + BaseType_t xReturn; + Queue_t * const pxQueueOrSemaphore = ( Queue_t * ) xQueueOrSemaphore; + + if( pxQueueOrSemaphore->pxQueueSetContainer != xQueueSet ) + { + /* The queue was not a member of the set. */ + xReturn = pdFAIL; + } + else if( pxQueueOrSemaphore->uxMessagesWaiting != ( UBaseType_t ) 0 ) + { + /* It is dangerous to remove a queue from a set when the queue is + not empty because the queue set will still hold pending events for + the queue. */ + xReturn = pdFAIL; + } + else + { + taskENTER_CRITICAL(); + { + /* The queue is no longer contained in the set. */ + pxQueueOrSemaphore->pxQueueSetContainer = NULL; + } + taskEXIT_CRITICAL(); + xReturn = pdPASS; + } + + return xReturn; + } /*lint !e818 xQueueSet could not be declared as pointing to const as it is a typedef. */ + +#endif /* configUSE_QUEUE_SETS */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_QUEUE_SETS == 1 ) + + QueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet, TickType_t const xTicksToWait ) + { + QueueSetMemberHandle_t xReturn = NULL; + + ( void ) xQueueReceive( ( QueueHandle_t ) xQueueSet, &xReturn, xTicksToWait ); /*lint !e961 Casting from one typedef to another is not redundant. */ + return xReturn; + } + +#endif /* configUSE_QUEUE_SETS */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_QUEUE_SETS == 1 ) + + QueueSetMemberHandle_t xQueueSelectFromSetFromISR( QueueSetHandle_t xQueueSet ) + { + QueueSetMemberHandle_t xReturn = NULL; + + ( void ) xQueueReceiveFromISR( ( QueueHandle_t ) xQueueSet, &xReturn, NULL ); /*lint !e961 Casting from one typedef to another is not redundant. */ + return xReturn; + } + +#endif /* configUSE_QUEUE_SETS */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_QUEUE_SETS == 1 ) + + static BaseType_t prvNotifyQueueSetContainer( const Queue_t * const pxQueue, const BaseType_t xCopyPosition ) + { + Queue_t *pxQueueSetContainer = pxQueue->pxQueueSetContainer; + BaseType_t xReturn = pdFALSE; + + /* This function must be called form a critical section. */ + + configASSERT( pxQueueSetContainer ); + configASSERT( pxQueueSetContainer->uxMessagesWaiting < pxQueueSetContainer->uxLength ); + + if( pxQueueSetContainer->uxMessagesWaiting < pxQueueSetContainer->uxLength ) + { + const int8_t cTxLock = pxQueueSetContainer->cTxLock; + + traceQUEUE_SEND( pxQueueSetContainer ); + + /* The data copied is the handle of the queue that contains data. */ + xReturn = prvCopyDataToQueue( pxQueueSetContainer, &pxQueue, xCopyPosition ); + + if( cTxLock == queueUNLOCKED ) + { + if( listLIST_IS_EMPTY( &( pxQueueSetContainer->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueueSetContainer->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority. */ + xReturn = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + pxQueueSetContainer->cTxLock = ( int8_t ) ( cTxLock + 1 ); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xReturn; + } + +#endif /* configUSE_QUEUE_SETS */ + + + + + + + + + + + + diff --git a/components/freertos/stream_buffer.c b/components/freertos/stream_buffer.c new file mode 100644 index 00000000..85519707 --- /dev/null +++ b/components/freertos/stream_buffer.c @@ -0,0 +1,1263 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* Standard includes. */ +#include +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +/* FreeRTOS includes. */ +#include "FreeRTOS.h" +#include "task.h" +#include "stream_buffer.h" + +#if( configUSE_TASK_NOTIFICATIONS != 1 ) + #error configUSE_TASK_NOTIFICATIONS must be set to 1 to build stream_buffer.c +#endif + +/* Lint e961, e9021 and e750 are suppressed as a MISRA exception justified +because the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined +for the header files above, but not in this file, in order to generate the +correct privileged Vs unprivileged linkage and placement. */ +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021. */ + +/* If the user has not provided application specific Rx notification macros, +or #defined the notification macros away, them provide default implementations +that uses task notifications. */ +/*lint -save -e9026 Function like macros allowed and needed here so they can be overidden. */ +#ifndef sbRECEIVE_COMPLETED + #define sbRECEIVE_COMPLETED( pxStreamBuffer ) \ + vTaskSuspendAll(); \ + { \ + if( ( pxStreamBuffer )->xTaskWaitingToSend != NULL ) \ + { \ + ( void ) xTaskNotify( ( pxStreamBuffer )->xTaskWaitingToSend, \ + ( uint32_t ) 0, \ + eNoAction ); \ + ( pxStreamBuffer )->xTaskWaitingToSend = NULL; \ + } \ + } \ + ( void ) xTaskResumeAll(); +#endif /* sbRECEIVE_COMPLETED */ + +#ifndef sbRECEIVE_COMPLETED_FROM_ISR + #define sbRECEIVE_COMPLETED_FROM_ISR( pxStreamBuffer, \ + pxHigherPriorityTaskWoken ) \ + { \ + UBaseType_t uxSavedInterruptStatus; \ + \ + uxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR(); \ + { \ + if( ( pxStreamBuffer )->xTaskWaitingToSend != NULL ) \ + { \ + ( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToSend, \ + ( uint32_t ) 0, \ + eNoAction, \ + pxHigherPriorityTaskWoken ); \ + ( pxStreamBuffer )->xTaskWaitingToSend = NULL; \ + } \ + } \ + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); \ + } +#endif /* sbRECEIVE_COMPLETED_FROM_ISR */ + +/* If the user has not provided an application specific Tx notification macro, +or #defined the notification macro away, them provide a default implementation +that uses task notifications. */ +#ifndef sbSEND_COMPLETED + #define sbSEND_COMPLETED( pxStreamBuffer ) \ + vTaskSuspendAll(); \ + { \ + if( ( pxStreamBuffer )->xTaskWaitingToReceive != NULL ) \ + { \ + ( void ) xTaskNotify( ( pxStreamBuffer )->xTaskWaitingToReceive, \ + ( uint32_t ) 0, \ + eNoAction ); \ + ( pxStreamBuffer )->xTaskWaitingToReceive = NULL; \ + } \ + } \ + ( void ) xTaskResumeAll(); +#endif /* sbSEND_COMPLETED */ + +#ifndef sbSEND_COMPLETE_FROM_ISR + #define sbSEND_COMPLETE_FROM_ISR( pxStreamBuffer, pxHigherPriorityTaskWoken ) \ + { \ + UBaseType_t uxSavedInterruptStatus; \ + \ + uxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR(); \ + { \ + if( ( pxStreamBuffer )->xTaskWaitingToReceive != NULL ) \ + { \ + ( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToReceive, \ + ( uint32_t ) 0, \ + eNoAction, \ + pxHigherPriorityTaskWoken ); \ + ( pxStreamBuffer )->xTaskWaitingToReceive = NULL; \ + } \ + } \ + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); \ + } +#endif /* sbSEND_COMPLETE_FROM_ISR */ +/*lint -restore (9026) */ + +/* The number of bytes used to hold the length of a message in the buffer. */ +#define sbBYTES_TO_STORE_MESSAGE_LENGTH ( sizeof( configMESSAGE_BUFFER_LENGTH_TYPE ) ) + +/* Bits stored in the ucFlags field of the stream buffer. */ +#define sbFLAGS_IS_MESSAGE_BUFFER ( ( uint8_t ) 1 ) /* Set if the stream buffer was created as a message buffer, in which case it holds discrete messages rather than a stream. */ +#define sbFLAGS_IS_STATICALLY_ALLOCATED ( ( uint8_t ) 2 ) /* Set if the stream buffer was created using statically allocated memory. */ + +/*-----------------------------------------------------------*/ + +/* Structure that hold state information on the buffer. */ +typedef struct StreamBufferDef_t /*lint !e9058 Style convention uses tag. */ +{ + volatile size_t xTail; /* Index to the next item to read within the buffer. */ + volatile size_t xHead; /* Index to the next item to write within the buffer. */ + size_t xLength; /* The length of the buffer pointed to by pucBuffer. */ + size_t xTriggerLevelBytes; /* The number of bytes that must be in the stream buffer before a task that is waiting for data is unblocked. */ + volatile TaskHandle_t xTaskWaitingToReceive; /* Holds the handle of a task waiting for data, or NULL if no tasks are waiting. */ + volatile TaskHandle_t xTaskWaitingToSend; /* Holds the handle of a task waiting to send data to a message buffer that is full. */ + uint8_t *pucBuffer; /* Points to the buffer itself - that is - the RAM that stores the data passed through the buffer. */ + uint8_t ucFlags; + + #if ( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxStreamBufferNumber; /* Used for tracing purposes. */ + #endif +} StreamBuffer_t; + +/* + * The number of bytes available to be read from the buffer. + */ +static size_t prvBytesInBuffer( const StreamBuffer_t * const pxStreamBuffer ) PRIVILEGED_FUNCTION; + +/* + * Add xCount bytes from pucData into the pxStreamBuffer message buffer. + * Returns the number of bytes written, which will either equal xCount in the + * success case, or 0 if there was not enough space in the buffer (in which case + * no data is written into the buffer). + */ +static size_t prvWriteBytesToBuffer( StreamBuffer_t * const pxStreamBuffer, const uint8_t *pucData, size_t xCount ) PRIVILEGED_FUNCTION; + +/* + * If the stream buffer is being used as a message buffer, then reads an entire + * message out of the buffer. If the stream buffer is being used as a stream + * buffer then read as many bytes as possible from the buffer. + * prvReadBytesFromBuffer() is called to actually extract the bytes from the + * buffer's data storage area. + */ +static size_t prvReadMessageFromBuffer( StreamBuffer_t *pxStreamBuffer, + void *pvRxData, + size_t xBufferLengthBytes, + size_t xBytesAvailable, + size_t xBytesToStoreMessageLength ) PRIVILEGED_FUNCTION; + +/* + * If the stream buffer is being used as a message buffer, then writes an entire + * message to the buffer. If the stream buffer is being used as a stream + * buffer then write as many bytes as possible to the buffer. + * prvWriteBytestoBuffer() is called to actually send the bytes to the buffer's + * data storage area. + */ +static size_t prvWriteMessageToBuffer( StreamBuffer_t * const pxStreamBuffer, + const void * pvTxData, + size_t xDataLengthBytes, + size_t xSpace, + size_t xRequiredSpace ) PRIVILEGED_FUNCTION; + +/* + * Read xMaxCount bytes from the pxStreamBuffer message buffer and write them + * to pucData. + */ +static size_t prvReadBytesFromBuffer( StreamBuffer_t *pxStreamBuffer, + uint8_t *pucData, + size_t xMaxCount, + size_t xBytesAvailable ) PRIVILEGED_FUNCTION; + +/* + * Called by both pxStreamBufferCreate() and pxStreamBufferCreateStatic() to + * initialise the members of the newly created stream buffer structure. + */ +static void prvInitialiseNewStreamBuffer( StreamBuffer_t * const pxStreamBuffer, + uint8_t * const pucBuffer, + size_t xBufferSizeBytes, + size_t xTriggerLevelBytes, + uint8_t ucFlags ) PRIVILEGED_FUNCTION; + +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + + StreamBufferHandle_t xStreamBufferGenericCreate( size_t xBufferSizeBytes, size_t xTriggerLevelBytes, BaseType_t xIsMessageBuffer ) + { + uint8_t *pucAllocatedMemory; + uint8_t ucFlags; + + /* In case the stream buffer is going to be used as a message buffer + (that is, it will hold discrete messages with a little meta data that + says how big the next message is) check the buffer will be large enough + to hold at least one message. */ + if( xIsMessageBuffer == pdTRUE ) + { + /* Is a message buffer but not statically allocated. */ + ucFlags = sbFLAGS_IS_MESSAGE_BUFFER; + configASSERT( xBufferSizeBytes > sbBYTES_TO_STORE_MESSAGE_LENGTH ); + } + else + { + /* Not a message buffer and not statically allocated. */ + ucFlags = 0; + configASSERT( xBufferSizeBytes > 0 ); + } + configASSERT( xTriggerLevelBytes <= xBufferSizeBytes ); + + /* A trigger level of 0 would cause a waiting task to unblock even when + the buffer was empty. */ + if( xTriggerLevelBytes == ( size_t ) 0 ) + { + xTriggerLevelBytes = ( size_t ) 1; + } + + /* A stream buffer requires a StreamBuffer_t structure and a buffer. + Both are allocated in a single call to pvPortMalloc(). The + StreamBuffer_t structure is placed at the start of the allocated memory + and the buffer follows immediately after. The requested size is + incremented so the free space is returned as the user would expect - + this is a quirk of the implementation that means otherwise the free + space would be reported as one byte smaller than would be logically + expected. */ + xBufferSizeBytes++; + pucAllocatedMemory = ( uint8_t * ) pvPortMalloc( xBufferSizeBytes + sizeof( StreamBuffer_t ) ); /*lint !e9079 malloc() only returns void*. */ + + if( pucAllocatedMemory != NULL ) + { + prvInitialiseNewStreamBuffer( ( StreamBuffer_t * ) pucAllocatedMemory, /* Structure at the start of the allocated memory. */ /*lint !e9087 Safe cast as allocated memory is aligned. */ /*lint !e826 Area is not too small and alignment is guaranteed provided malloc() behaves as expected and returns aligned buffer. */ + pucAllocatedMemory + sizeof( StreamBuffer_t ), /* Storage area follows. */ /*lint !e9016 Indexing past structure valid for uint8_t pointer, also storage area has no alignment requirement. */ + xBufferSizeBytes, + xTriggerLevelBytes, + ucFlags ); + + traceSTREAM_BUFFER_CREATE( ( ( StreamBuffer_t * ) pucAllocatedMemory ), xIsMessageBuffer ); + } + else + { + traceSTREAM_BUFFER_CREATE_FAILED( xIsMessageBuffer ); + } + + return ( StreamBufferHandle_t ) pucAllocatedMemory; /*lint !e9087 !e826 Safe cast as allocated memory is aligned. */ + } + +#endif /* configSUPPORT_DYNAMIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + StreamBufferHandle_t xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes, + size_t xTriggerLevelBytes, + BaseType_t xIsMessageBuffer, + uint8_t * const pucStreamBufferStorageArea, + StaticStreamBuffer_t * const pxStaticStreamBuffer ) + { + StreamBuffer_t * const pxStreamBuffer = ( StreamBuffer_t * ) pxStaticStreamBuffer; /*lint !e740 !e9087 Safe cast as StaticStreamBuffer_t is opaque Streambuffer_t. */ + StreamBufferHandle_t xReturn; + uint8_t ucFlags; + + configASSERT( pucStreamBufferStorageArea ); + configASSERT( pxStaticStreamBuffer ); + configASSERT( xTriggerLevelBytes <= xBufferSizeBytes ); + + /* A trigger level of 0 would cause a waiting task to unblock even when + the buffer was empty. */ + if( xTriggerLevelBytes == ( size_t ) 0 ) + { + xTriggerLevelBytes = ( size_t ) 1; + } + + if( xIsMessageBuffer != pdFALSE ) + { + /* Statically allocated message buffer. */ + ucFlags = sbFLAGS_IS_MESSAGE_BUFFER | sbFLAGS_IS_STATICALLY_ALLOCATED; + } + else + { + /* Statically allocated stream buffer. */ + ucFlags = sbFLAGS_IS_STATICALLY_ALLOCATED; + } + + /* In case the stream buffer is going to be used as a message buffer + (that is, it will hold discrete messages with a little meta data that + says how big the next message is) check the buffer will be large enough + to hold at least one message. */ + configASSERT( xBufferSizeBytes > sbBYTES_TO_STORE_MESSAGE_LENGTH ); + + #if( configASSERT_DEFINED == 1 ) + { + /* Sanity check that the size of the structure used to declare a + variable of type StaticStreamBuffer_t equals the size of the real + message buffer structure. */ + volatile size_t xSize = sizeof( StaticStreamBuffer_t ); + configASSERT( xSize == sizeof( StreamBuffer_t ) ); + } /*lint !e529 xSize is referenced is configASSERT() is defined. */ + #endif /* configASSERT_DEFINED */ + + if( ( pucStreamBufferStorageArea != NULL ) && ( pxStaticStreamBuffer != NULL ) ) + { + prvInitialiseNewStreamBuffer( pxStreamBuffer, + pucStreamBufferStorageArea, + xBufferSizeBytes, + xTriggerLevelBytes, + ucFlags ); + + /* Remember this was statically allocated in case it is ever deleted + again. */ + pxStreamBuffer->ucFlags |= sbFLAGS_IS_STATICALLY_ALLOCATED; + + traceSTREAM_BUFFER_CREATE( pxStreamBuffer, xIsMessageBuffer ); + + xReturn = ( StreamBufferHandle_t ) pxStaticStreamBuffer; /*lint !e9087 Data hiding requires cast to opaque type. */ + } + else + { + xReturn = NULL; + traceSTREAM_BUFFER_CREATE_STATIC_FAILED( xReturn, xIsMessageBuffer ); + } + + return xReturn; + } + +#endif /* ( configSUPPORT_STATIC_ALLOCATION == 1 ) */ +/*-----------------------------------------------------------*/ + +void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) +{ +StreamBuffer_t * pxStreamBuffer = xStreamBuffer; + + configASSERT( pxStreamBuffer ); + + traceSTREAM_BUFFER_DELETE( xStreamBuffer ); + + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_STATICALLY_ALLOCATED ) == ( uint8_t ) pdFALSE ) + { + #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + { + /* Both the structure and the buffer were allocated using a single call + to pvPortMalloc(), hence only one call to vPortFree() is required. */ + vPortFree( ( void * ) pxStreamBuffer ); /*lint !e9087 Standard free() semantics require void *, plus pxStreamBuffer was allocated by pvPortMalloc(). */ + } + #else + { + /* Should not be possible to get here, ucFlags must be corrupt. + Force an assert. */ + configASSERT( xStreamBuffer == ( StreamBufferHandle_t ) ~0 ); + } + #endif + } + else + { + /* The structure and buffer were not allocated dynamically and cannot be + freed - just scrub the structure so future use will assert. */ + ( void ) memset( pxStreamBuffer, 0x00, sizeof( StreamBuffer_t ) ); + } +} +/*-----------------------------------------------------------*/ + +BaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +BaseType_t xReturn = pdFAIL; + +#if( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxStreamBufferNumber; +#endif + + configASSERT( pxStreamBuffer ); + + #if( configUSE_TRACE_FACILITY == 1 ) + { + /* Store the stream buffer number so it can be restored after the + reset. */ + uxStreamBufferNumber = pxStreamBuffer->uxStreamBufferNumber; + } + #endif + + /* Can only reset a message buffer if there are no tasks blocked on it. */ + taskENTER_CRITICAL(); + { + if( pxStreamBuffer->xTaskWaitingToReceive == NULL ) + { + if( pxStreamBuffer->xTaskWaitingToSend == NULL ) + { + prvInitialiseNewStreamBuffer( pxStreamBuffer, + pxStreamBuffer->pucBuffer, + pxStreamBuffer->xLength, + pxStreamBuffer->xTriggerLevelBytes, + pxStreamBuffer->ucFlags ); + xReturn = pdPASS; + + #if( configUSE_TRACE_FACILITY == 1 ) + { + pxStreamBuffer->uxStreamBufferNumber = uxStreamBufferNumber; + } + #endif + + traceSTREAM_BUFFER_RESET( xStreamBuffer ); + } + } + } + taskEXIT_CRITICAL(); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, size_t xTriggerLevel ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +BaseType_t xReturn; + + configASSERT( pxStreamBuffer ); + + /* It is not valid for the trigger level to be 0. */ + if( xTriggerLevel == ( size_t ) 0 ) + { + xTriggerLevel = ( size_t ) 1; + } + + /* The trigger level is the number of bytes that must be in the stream + buffer before a task that is waiting for data is unblocked. */ + if( xTriggerLevel <= pxStreamBuffer->xLength ) + { + pxStreamBuffer->xTriggerLevelBytes = xTriggerLevel; + xReturn = pdPASS; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) +{ +const StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xSpace; + + configASSERT( pxStreamBuffer ); + + xSpace = pxStreamBuffer->xLength + pxStreamBuffer->xTail; + xSpace -= pxStreamBuffer->xHead; + xSpace -= ( size_t ) 1; + + if( xSpace >= pxStreamBuffer->xLength ) + { + xSpace -= pxStreamBuffer->xLength; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xSpace; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) +{ +const StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xReturn; + + configASSERT( pxStreamBuffer ); + + xReturn = prvBytesInBuffer( pxStreamBuffer ); + return xReturn; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, + const void *pvTxData, + size_t xDataLengthBytes, + TickType_t xTicksToWait ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xReturn, xSpace = 0; +size_t xRequiredSpace = xDataLengthBytes; +TimeOut_t xTimeOut; + + configASSERT( pvTxData ); + configASSERT( pxStreamBuffer ); + + /* This send function is used to write to both message buffers and stream + buffers. If this is a message buffer then the space needed must be + increased by the amount of bytes needed to store the length of the + message. */ + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 ) + { + xRequiredSpace += sbBYTES_TO_STORE_MESSAGE_LENGTH; + + /* Overflow? */ + configASSERT( xRequiredSpace > xDataLengthBytes ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( xTicksToWait != ( TickType_t ) 0 ) + { + vTaskSetTimeOutState( &xTimeOut ); + + do + { + /* Wait until the required number of bytes are free in the message + buffer. */ + taskENTER_CRITICAL(); + { + xSpace = xStreamBufferSpacesAvailable( pxStreamBuffer ); + + if( xSpace < xRequiredSpace ) + { + /* Clear notification state as going to wait for space. */ + ( void ) xTaskNotifyStateClear( NULL ); + + /* Should only be one writer. */ + configASSERT( pxStreamBuffer->xTaskWaitingToSend == NULL ); + pxStreamBuffer->xTaskWaitingToSend = xTaskGetCurrentTaskHandle(); + } + else + { + taskEXIT_CRITICAL(); + break; + } + } + taskEXIT_CRITICAL(); + + traceBLOCKING_ON_STREAM_BUFFER_SEND( xStreamBuffer ); + ( void ) xTaskNotifyWait( ( uint32_t ) 0, ( uint32_t ) 0, NULL, xTicksToWait ); + pxStreamBuffer->xTaskWaitingToSend = NULL; + + } while( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( xSpace == ( size_t ) 0 ) + { + xSpace = xStreamBufferSpacesAvailable( pxStreamBuffer ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + xReturn = prvWriteMessageToBuffer( pxStreamBuffer, pvTxData, xDataLengthBytes, xSpace, xRequiredSpace ); + + if( xReturn > ( size_t ) 0 ) + { + traceSTREAM_BUFFER_SEND( xStreamBuffer, xReturn ); + + /* Was a task waiting for the data? */ + if( prvBytesInBuffer( pxStreamBuffer ) >= pxStreamBuffer->xTriggerLevelBytes ) + { + sbSEND_COMPLETED( pxStreamBuffer ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + traceSTREAM_BUFFER_SEND_FAILED( xStreamBuffer ); + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer, + const void *pvTxData, + size_t xDataLengthBytes, + BaseType_t * const pxHigherPriorityTaskWoken ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xReturn, xSpace; +size_t xRequiredSpace = xDataLengthBytes; + + configASSERT( pvTxData ); + configASSERT( pxStreamBuffer ); + + /* This send function is used to write to both message buffers and stream + buffers. If this is a message buffer then the space needed must be + increased by the amount of bytes needed to store the length of the + message. */ + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 ) + { + xRequiredSpace += sbBYTES_TO_STORE_MESSAGE_LENGTH; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + xSpace = xStreamBufferSpacesAvailable( pxStreamBuffer ); + xReturn = prvWriteMessageToBuffer( pxStreamBuffer, pvTxData, xDataLengthBytes, xSpace, xRequiredSpace ); + + if( xReturn > ( size_t ) 0 ) + { + /* Was a task waiting for the data? */ + if( prvBytesInBuffer( pxStreamBuffer ) >= pxStreamBuffer->xTriggerLevelBytes ) + { + sbSEND_COMPLETE_FROM_ISR( pxStreamBuffer, pxHigherPriorityTaskWoken ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + traceSTREAM_BUFFER_SEND_FROM_ISR( xStreamBuffer, xReturn ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +static size_t prvWriteMessageToBuffer( StreamBuffer_t * const pxStreamBuffer, + const void * pvTxData, + size_t xDataLengthBytes, + size_t xSpace, + size_t xRequiredSpace ) +{ + BaseType_t xShouldWrite; + size_t xReturn; + + if( xSpace == ( size_t ) 0 ) + { + /* Doesn't matter if this is a stream buffer or a message buffer, there + is no space to write. */ + xShouldWrite = pdFALSE; + } + else if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) == ( uint8_t ) 0 ) + { + /* This is a stream buffer, as opposed to a message buffer, so writing a + stream of bytes rather than discrete messages. Write as many bytes as + possible. */ + xShouldWrite = pdTRUE; + xDataLengthBytes = configMIN( xDataLengthBytes, xSpace ); + } + else if( xSpace >= xRequiredSpace ) + { + /* This is a message buffer, as opposed to a stream buffer, and there + is enough space to write both the message length and the message itself + into the buffer. Start by writing the length of the data, the data + itself will be written later in this function. */ + xShouldWrite = pdTRUE; + ( void ) prvWriteBytesToBuffer( pxStreamBuffer, ( const uint8_t * ) &( xDataLengthBytes ), sbBYTES_TO_STORE_MESSAGE_LENGTH ); + } + else + { + /* There is space available, but not enough space. */ + xShouldWrite = pdFALSE; + } + + if( xShouldWrite != pdFALSE ) + { + /* Writes the data itself. */ + xReturn = prvWriteBytesToBuffer( pxStreamBuffer, ( const uint8_t * ) pvTxData, xDataLengthBytes ); /*lint !e9079 Storage buffer is implemented as uint8_t for ease of sizing, alighment and access. */ + } + else + { + xReturn = 0; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer, + void *pvRxData, + size_t xBufferLengthBytes, + TickType_t xTicksToWait ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xReceivedLength = 0, xBytesAvailable, xBytesToStoreMessageLength; + + configASSERT( pvRxData ); + configASSERT( pxStreamBuffer ); + + /* This receive function is used by both message buffers, which store + discrete messages, and stream buffers, which store a continuous stream of + bytes. Discrete messages include an additional + sbBYTES_TO_STORE_MESSAGE_LENGTH bytes that hold the length of the + message. */ + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 ) + { + xBytesToStoreMessageLength = sbBYTES_TO_STORE_MESSAGE_LENGTH; + } + else + { + xBytesToStoreMessageLength = 0; + } + + if( xTicksToWait != ( TickType_t ) 0 ) + { + /* Checking if there is data and clearing the notification state must be + performed atomically. */ + taskENTER_CRITICAL(); + { + xBytesAvailable = prvBytesInBuffer( pxStreamBuffer ); + + /* If this function was invoked by a message buffer read then + xBytesToStoreMessageLength holds the number of bytes used to hold + the length of the next discrete message. If this function was + invoked by a stream buffer read then xBytesToStoreMessageLength will + be 0. */ + if( xBytesAvailable <= xBytesToStoreMessageLength ) + { + /* Clear notification state as going to wait for data. */ + ( void ) xTaskNotifyStateClear( NULL ); + + /* Should only be one reader. */ + configASSERT( pxStreamBuffer->xTaskWaitingToReceive == NULL ); + pxStreamBuffer->xTaskWaitingToReceive = xTaskGetCurrentTaskHandle(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + if( xBytesAvailable <= xBytesToStoreMessageLength ) + { + /* Wait for data to be available. */ + traceBLOCKING_ON_STREAM_BUFFER_RECEIVE( xStreamBuffer ); + ( void ) xTaskNotifyWait( ( uint32_t ) 0, ( uint32_t ) 0, NULL, xTicksToWait ); + pxStreamBuffer->xTaskWaitingToReceive = NULL; + + /* Recheck the data available after blocking. */ + xBytesAvailable = prvBytesInBuffer( pxStreamBuffer ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + xBytesAvailable = prvBytesInBuffer( pxStreamBuffer ); + } + + /* Whether receiving a discrete message (where xBytesToStoreMessageLength + holds the number of bytes used to store the message length) or a stream of + bytes (where xBytesToStoreMessageLength is zero), the number of bytes + available must be greater than xBytesToStoreMessageLength to be able to + read bytes from the buffer. */ + if( xBytesAvailable > xBytesToStoreMessageLength ) + { + xReceivedLength = prvReadMessageFromBuffer( pxStreamBuffer, pvRxData, xBufferLengthBytes, xBytesAvailable, xBytesToStoreMessageLength ); + + /* Was a task waiting for space in the buffer? */ + if( xReceivedLength != ( size_t ) 0 ) + { + traceSTREAM_BUFFER_RECEIVE( xStreamBuffer, xReceivedLength ); + sbRECEIVE_COMPLETED( pxStreamBuffer ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + traceSTREAM_BUFFER_RECEIVE_FAILED( xStreamBuffer ); + mtCOVERAGE_TEST_MARKER(); + } + + return xReceivedLength; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xReturn, xBytesAvailable, xOriginalTail; +configMESSAGE_BUFFER_LENGTH_TYPE xTempReturn; + + configASSERT( pxStreamBuffer ); + + /* Ensure the stream buffer is being used as a message buffer. */ + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 ) + { + xBytesAvailable = prvBytesInBuffer( pxStreamBuffer ); + if( xBytesAvailable > sbBYTES_TO_STORE_MESSAGE_LENGTH ) + { + /* The number of bytes available is greater than the number of bytes + required to hold the length of the next message, so another message + is available. Return its length without removing the length bytes + from the buffer. A copy of the tail is stored so the buffer can be + returned to its prior state as the message is not actually being + removed from the buffer. */ + xOriginalTail = pxStreamBuffer->xTail; + ( void ) prvReadBytesFromBuffer( pxStreamBuffer, ( uint8_t * ) &xTempReturn, sbBYTES_TO_STORE_MESSAGE_LENGTH, xBytesAvailable ); + xReturn = ( size_t ) xTempReturn; + pxStreamBuffer->xTail = xOriginalTail; + } + else + { + /* The minimum amount of bytes in a message buffer is + ( sbBYTES_TO_STORE_MESSAGE_LENGTH + 1 ), so if xBytesAvailable is + less than sbBYTES_TO_STORE_MESSAGE_LENGTH the only other valid + value is 0. */ + configASSERT( xBytesAvailable == 0 ); + xReturn = 0; + } + } + else + { + xReturn = 0; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer, + void *pvRxData, + size_t xBufferLengthBytes, + BaseType_t * const pxHigherPriorityTaskWoken ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xReceivedLength = 0, xBytesAvailable, xBytesToStoreMessageLength; + + configASSERT( pvRxData ); + configASSERT( pxStreamBuffer ); + + /* This receive function is used by both message buffers, which store + discrete messages, and stream buffers, which store a continuous stream of + bytes. Discrete messages include an additional + sbBYTES_TO_STORE_MESSAGE_LENGTH bytes that hold the length of the + message. */ + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 ) + { + xBytesToStoreMessageLength = sbBYTES_TO_STORE_MESSAGE_LENGTH; + } + else + { + xBytesToStoreMessageLength = 0; + } + + xBytesAvailable = prvBytesInBuffer( pxStreamBuffer ); + + /* Whether receiving a discrete message (where xBytesToStoreMessageLength + holds the number of bytes used to store the message length) or a stream of + bytes (where xBytesToStoreMessageLength is zero), the number of bytes + available must be greater than xBytesToStoreMessageLength to be able to + read bytes from the buffer. */ + if( xBytesAvailable > xBytesToStoreMessageLength ) + { + xReceivedLength = prvReadMessageFromBuffer( pxStreamBuffer, pvRxData, xBufferLengthBytes, xBytesAvailable, xBytesToStoreMessageLength ); + + /* Was a task waiting for space in the buffer? */ + if( xReceivedLength != ( size_t ) 0 ) + { + sbRECEIVE_COMPLETED_FROM_ISR( pxStreamBuffer, pxHigherPriorityTaskWoken ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + traceSTREAM_BUFFER_RECEIVE_FROM_ISR( xStreamBuffer, xReceivedLength ); + + return xReceivedLength; +} +/*-----------------------------------------------------------*/ + +static size_t prvReadMessageFromBuffer( StreamBuffer_t *pxStreamBuffer, + void *pvRxData, + size_t xBufferLengthBytes, + size_t xBytesAvailable, + size_t xBytesToStoreMessageLength ) +{ +size_t xOriginalTail, xReceivedLength, xNextMessageLength; +configMESSAGE_BUFFER_LENGTH_TYPE xTempNextMessageLength; + + if( xBytesToStoreMessageLength != ( size_t ) 0 ) + { + /* A discrete message is being received. First receive the length + of the message. A copy of the tail is stored so the buffer can be + returned to its prior state if the length of the message is too + large for the provided buffer. */ + xOriginalTail = pxStreamBuffer->xTail; + ( void ) prvReadBytesFromBuffer( pxStreamBuffer, ( uint8_t * ) &xTempNextMessageLength, xBytesToStoreMessageLength, xBytesAvailable ); + xNextMessageLength = ( size_t ) xTempNextMessageLength; + + /* Reduce the number of bytes available by the number of bytes just + read out. */ + xBytesAvailable -= xBytesToStoreMessageLength; + + /* Check there is enough space in the buffer provided by the + user. */ + if( xNextMessageLength > xBufferLengthBytes ) + { + /* The user has provided insufficient space to read the message + so return the buffer to its previous state (so the length of + the message is in the buffer again). */ + pxStreamBuffer->xTail = xOriginalTail; + xNextMessageLength = 0; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* A stream of bytes is being received (as opposed to a discrete + message), so read as many bytes as possible. */ + xNextMessageLength = xBufferLengthBytes; + } + + /* Read the actual data. */ + xReceivedLength = prvReadBytesFromBuffer( pxStreamBuffer, ( uint8_t * ) pvRxData, xNextMessageLength, xBytesAvailable ); /*lint !e9079 Data storage area is implemented as uint8_t array for ease of sizing, indexing and alignment. */ + + return xReceivedLength; +} +/*-----------------------------------------------------------*/ + +BaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) +{ +const StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +BaseType_t xReturn; +size_t xTail; + + configASSERT( pxStreamBuffer ); + + /* True if no bytes are available. */ + xTail = pxStreamBuffer->xTail; + if( pxStreamBuffer->xHead == xTail ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) +{ +BaseType_t xReturn; +size_t xBytesToStoreMessageLength; +const StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; + + configASSERT( pxStreamBuffer ); + + /* This generic version of the receive function is used by both message + buffers, which store discrete messages, and stream buffers, which store a + continuous stream of bytes. Discrete messages include an additional + sbBYTES_TO_STORE_MESSAGE_LENGTH bytes that hold the length of the message. */ + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 ) + { + xBytesToStoreMessageLength = sbBYTES_TO_STORE_MESSAGE_LENGTH; + } + else + { + xBytesToStoreMessageLength = 0; + } + + /* True if the available space equals zero. */ + if( xStreamBufferSpacesAvailable( xStreamBuffer ) <= xBytesToStoreMessageLength ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +BaseType_t xReturn; +UBaseType_t uxSavedInterruptStatus; + + configASSERT( pxStreamBuffer ); + + uxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR(); + { + if( ( pxStreamBuffer )->xTaskWaitingToReceive != NULL ) + { + ( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToReceive, + ( uint32_t ) 0, + eNoAction, + pxHigherPriorityTaskWoken ); + ( pxStreamBuffer )->xTaskWaitingToReceive = NULL; + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +BaseType_t xReturn; +UBaseType_t uxSavedInterruptStatus; + + configASSERT( pxStreamBuffer ); + + uxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR(); + { + if( ( pxStreamBuffer )->xTaskWaitingToSend != NULL ) + { + ( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToSend, + ( uint32_t ) 0, + eNoAction, + pxHigherPriorityTaskWoken ); + ( pxStreamBuffer )->xTaskWaitingToSend = NULL; + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +static size_t prvWriteBytesToBuffer( StreamBuffer_t * const pxStreamBuffer, const uint8_t *pucData, size_t xCount ) +{ +size_t xNextHead, xFirstLength; + + configASSERT( xCount > ( size_t ) 0 ); + + xNextHead = pxStreamBuffer->xHead; + + /* Calculate the number of bytes that can be added in the first write - + which may be less than the total number of bytes that need to be added if + the buffer will wrap back to the beginning. */ + xFirstLength = configMIN( pxStreamBuffer->xLength - xNextHead, xCount ); + + /* Write as many bytes as can be written in the first write. */ + configASSERT( ( xNextHead + xFirstLength ) <= pxStreamBuffer->xLength ); + ( void ) memcpy( ( void* ) ( &( pxStreamBuffer->pucBuffer[ xNextHead ] ) ), ( const void * ) pucData, xFirstLength ); /*lint !e9087 memcpy() requires void *. */ + + /* If the number of bytes written was less than the number that could be + written in the first write... */ + if( xCount > xFirstLength ) + { + /* ...then write the remaining bytes to the start of the buffer. */ + configASSERT( ( xCount - xFirstLength ) <= pxStreamBuffer->xLength ); + ( void ) memcpy( ( void * ) pxStreamBuffer->pucBuffer, ( const void * ) &( pucData[ xFirstLength ] ), xCount - xFirstLength ); /*lint !e9087 memcpy() requires void *. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + xNextHead += xCount; + if( xNextHead >= pxStreamBuffer->xLength ) + { + xNextHead -= pxStreamBuffer->xLength; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + pxStreamBuffer->xHead = xNextHead; + + return xCount; +} +/*-----------------------------------------------------------*/ + +static size_t prvReadBytesFromBuffer( StreamBuffer_t *pxStreamBuffer, uint8_t *pucData, size_t xMaxCount, size_t xBytesAvailable ) +{ +size_t xCount, xFirstLength, xNextTail; + + /* Use the minimum of the wanted bytes and the available bytes. */ + xCount = configMIN( xBytesAvailable, xMaxCount ); + + if( xCount > ( size_t ) 0 ) + { + xNextTail = pxStreamBuffer->xTail; + + /* Calculate the number of bytes that can be read - which may be + less than the number wanted if the data wraps around to the start of + the buffer. */ + xFirstLength = configMIN( pxStreamBuffer->xLength - xNextTail, xCount ); + + /* Obtain the number of bytes it is possible to obtain in the first + read. Asserts check bounds of read and write. */ + configASSERT( xFirstLength <= xMaxCount ); + configASSERT( ( xNextTail + xFirstLength ) <= pxStreamBuffer->xLength ); + ( void ) memcpy( ( void * ) pucData, ( const void * ) &( pxStreamBuffer->pucBuffer[ xNextTail ] ), xFirstLength ); /*lint !e9087 memcpy() requires void *. */ + + /* If the total number of wanted bytes is greater than the number + that could be read in the first read... */ + if( xCount > xFirstLength ) + { + /*...then read the remaining bytes from the start of the buffer. */ + configASSERT( xCount <= xMaxCount ); + ( void ) memcpy( ( void * ) &( pucData[ xFirstLength ] ), ( void * ) ( pxStreamBuffer->pucBuffer ), xCount - xFirstLength ); /*lint !e9087 memcpy() requires void *. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Move the tail pointer to effectively remove the data read from + the buffer. */ + xNextTail += xCount; + + if( xNextTail >= pxStreamBuffer->xLength ) + { + xNextTail -= pxStreamBuffer->xLength; + } + + pxStreamBuffer->xTail = xNextTail; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xCount; +} +/*-----------------------------------------------------------*/ + +static size_t prvBytesInBuffer( const StreamBuffer_t * const pxStreamBuffer ) +{ +/* Returns the distance between xTail and xHead. */ +size_t xCount; + + xCount = pxStreamBuffer->xLength + pxStreamBuffer->xHead; + xCount -= pxStreamBuffer->xTail; + if ( xCount >= pxStreamBuffer->xLength ) + { + xCount -= pxStreamBuffer->xLength; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xCount; +} +/*-----------------------------------------------------------*/ + +static void prvInitialiseNewStreamBuffer( StreamBuffer_t * const pxStreamBuffer, + uint8_t * const pucBuffer, + size_t xBufferSizeBytes, + size_t xTriggerLevelBytes, + uint8_t ucFlags ) +{ + /* Assert here is deliberately writing to the entire buffer to ensure it can + be written to without generating exceptions, and is setting the buffer to a + known value to assist in development/debugging. */ + #if( configASSERT_DEFINED == 1 ) + { + /* The value written just has to be identifiable when looking at the + memory. Don't use 0xA5 as that is the stack fill value and could + result in confusion as to what is actually being observed. */ + const BaseType_t xWriteValue = 0x55; + configASSERT( memset( pucBuffer, ( int ) xWriteValue, xBufferSizeBytes ) == pucBuffer ); + } /*lint !e529 !e438 xWriteValue is only used if configASSERT() is defined. */ + #endif + + ( void ) memset( ( void * ) pxStreamBuffer, 0x00, sizeof( StreamBuffer_t ) ); /*lint !e9087 memset() requires void *. */ + pxStreamBuffer->pucBuffer = pucBuffer; + pxStreamBuffer->xLength = xBufferSizeBytes; + pxStreamBuffer->xTriggerLevelBytes = xTriggerLevelBytes; + pxStreamBuffer->ucFlags = ucFlags; +} + +#if ( configUSE_TRACE_FACILITY == 1 ) + + UBaseType_t uxStreamBufferGetStreamBufferNumber( StreamBufferHandle_t xStreamBuffer ) + { + return xStreamBuffer->uxStreamBufferNumber; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + void vStreamBufferSetStreamBufferNumber( StreamBufferHandle_t xStreamBuffer, UBaseType_t uxStreamBufferNumber ) + { + xStreamBuffer->uxStreamBufferNumber = uxStreamBufferNumber; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + uint8_t ucStreamBufferGetStreamBufferType( StreamBufferHandle_t xStreamBuffer ) + { + return ( xStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ); + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ diff --git a/components/freertos/tasks.c b/components/freertos/tasks.c new file mode 100644 index 00000000..6b312e17 --- /dev/null +++ b/components/freertos/tasks.c @@ -0,0 +1,5266 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* Standard includes. */ +#include +#include +#include "stdio.h" + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +/* FreeRTOS includes. */ +#include "FreeRTOS.h" +#include "task.h" +#include "timers.h" +#include "stack_macros.h" + +/* Lint e9021, e961 and e750 are suppressed as a MISRA exception justified +because the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined +for the header files above, but not in this file, in order to generate the +correct privileged Vs unprivileged linkage and placement. */ +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021. */ + +/* Set configUSE_STATS_FORMATTING_FUNCTIONS to 2 to include the stats formatting +functions but without including stdio.h here. */ +#if ( configUSE_STATS_FORMATTING_FUNCTIONS == 1 ) + /* At the bottom of this file are two optional functions that can be used + to generate human readable text from the raw data generated by the + uxTaskGetSystemState() function. Note the formatting functions are provided + for convenience only, and are NOT considered part of the kernel. */ + #include +#endif /* configUSE_STATS_FORMATTING_FUNCTIONS == 1 ) */ + +#if( configUSE_PREEMPTION == 0 ) + /* If the cooperative scheduler is being used then a yield should not be + performed just because a higher priority task has been woken. */ + #define taskYIELD_IF_USING_PREEMPTION() +#else + #define taskYIELD_IF_USING_PREEMPTION() portYIELD_WITHIN_API() +#endif + +/* Values that can be assigned to the ucNotifyState member of the TCB. */ +#define taskNOT_WAITING_NOTIFICATION ( ( uint8_t ) 0 ) +#define taskWAITING_NOTIFICATION ( ( uint8_t ) 1 ) +#define taskNOTIFICATION_RECEIVED ( ( uint8_t ) 2 ) + +/* + * The value used to fill the stack of a task when the task is created. This + * is used purely for checking the high water mark for tasks. + */ +#define tskSTACK_FILL_BYTE ( 0xa5U ) + +/* Bits used to recored how a task's stack and TCB were allocated. */ +#define tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB ( ( uint8_t ) 0 ) +#define tskSTATICALLY_ALLOCATED_STACK_ONLY ( ( uint8_t ) 1 ) +#define tskSTATICALLY_ALLOCATED_STACK_AND_TCB ( ( uint8_t ) 2 ) + +/* If any of the following are set then task stacks are filled with a known +value so the high water mark can be determined. If none of the following are +set then don't fill the stack so there is no unnecessary dependency on memset. */ +#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) || ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) ) + #define tskSET_NEW_STACKS_TO_KNOWN_VALUE 1 +#else + #define tskSET_NEW_STACKS_TO_KNOWN_VALUE 0 +#endif + +/* + * Macros used by vListTask to indicate which state a task is in. + */ +#define tskRUNNING_CHAR ( 'X' ) +#define tskBLOCKED_CHAR ( 'B' ) +#define tskREADY_CHAR ( 'R' ) +#define tskDELETED_CHAR ( 'D' ) +#define tskSUSPENDED_CHAR ( 'S' ) + +/* + * Some kernel aware debuggers require the data the debugger needs access to be + * global, rather than file scope. + */ +#ifdef portREMOVE_STATIC_QUALIFIER + #define static +#endif + +/* The name allocated to the Idle task. This can be overridden by defining +configIDLE_TASK_NAME in FreeRTOSConfig.h. */ +#ifndef configIDLE_TASK_NAME + #define configIDLE_TASK_NAME "IDLE" +#endif + +#if ( configUSE_PORT_OPTIMISED_TASK_SELECTION == 0 ) + + /* If configUSE_PORT_OPTIMISED_TASK_SELECTION is 0 then task selection is + performed in a generic way that is not optimised to any particular + microcontroller architecture. */ + + /* uxTopReadyPriority holds the priority of the highest priority ready + state task. */ + #define taskRECORD_READY_PRIORITY( uxPriority ) \ + { \ + if( ( uxPriority ) > uxTopReadyPriority ) \ + { \ + uxTopReadyPriority = ( uxPriority ); \ + } \ + } /* taskRECORD_READY_PRIORITY */ + + /*-----------------------------------------------------------*/ + + #define taskSELECT_HIGHEST_PRIORITY_TASK() \ + { \ + UBaseType_t uxTopPriority = uxTopReadyPriority; \ + \ + /* Find the highest priority queue that contains ready tasks. */ \ + while( listLIST_IS_EMPTY( &( pxReadyTasksLists[ uxTopPriority ] ) ) ) \ + { \ + configASSERT( uxTopPriority ); \ + --uxTopPriority; \ + } \ + \ + /* listGET_OWNER_OF_NEXT_ENTRY indexes through the list, so the tasks of \ + the same priority get an equal share of the processor time. */ \ + listGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[ uxTopPriority ] ) ); \ + uxTopReadyPriority = uxTopPriority; \ + } /* taskSELECT_HIGHEST_PRIORITY_TASK */ + + /*-----------------------------------------------------------*/ + + /* Define away taskRESET_READY_PRIORITY() and portRESET_READY_PRIORITY() as + they are only required when a port optimised method of task selection is + being used. */ + #define taskRESET_READY_PRIORITY( uxPriority ) + #define portRESET_READY_PRIORITY( uxPriority, uxTopReadyPriority ) + +#else /* configUSE_PORT_OPTIMISED_TASK_SELECTION */ + + /* If configUSE_PORT_OPTIMISED_TASK_SELECTION is 1 then task selection is + performed in a way that is tailored to the particular microcontroller + architecture being used. */ + + /* A port optimised version is provided. Call the port defined macros. */ + #define taskRECORD_READY_PRIORITY( uxPriority ) portRECORD_READY_PRIORITY( uxPriority, uxTopReadyPriority ) + + /*-----------------------------------------------------------*/ + + #define taskSELECT_HIGHEST_PRIORITY_TASK() \ + { \ + UBaseType_t uxTopPriority; \ + \ + /* Find the highest priority list that contains ready tasks. */ \ + portGET_HIGHEST_PRIORITY( uxTopPriority, uxTopReadyPriority ); \ + configASSERT( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ uxTopPriority ] ) ) > 0 ); \ + listGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[ uxTopPriority ] ) ); \ + } /* taskSELECT_HIGHEST_PRIORITY_TASK() */ + + /*-----------------------------------------------------------*/ + + /* A port optimised version is provided, call it only if the TCB being reset + is being referenced from a ready list. If it is referenced from a delayed + or suspended list then it won't be in a ready list. */ + #define taskRESET_READY_PRIORITY( uxPriority ) \ + { \ + if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ ( uxPriority ) ] ) ) == ( UBaseType_t ) 0 ) \ + { \ + portRESET_READY_PRIORITY( ( uxPriority ), ( uxTopReadyPriority ) ); \ + } \ + } + +#endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */ + +/*-----------------------------------------------------------*/ + +/* pxDelayedTaskList and pxOverflowDelayedTaskList are switched when the tick +count overflows. */ +#define taskSWITCH_DELAYED_LISTS() \ +{ \ + List_t *pxTemp; \ + \ + /* The delayed tasks list should be empty when the lists are switched. */ \ + configASSERT( ( listLIST_IS_EMPTY( pxDelayedTaskList ) ) ); \ + \ + pxTemp = pxDelayedTaskList; \ + pxDelayedTaskList = pxOverflowDelayedTaskList; \ + pxOverflowDelayedTaskList = pxTemp; \ + xNumOfOverflows++; \ + prvResetNextTaskUnblockTime(); \ +} + +/*-----------------------------------------------------------*/ + +/* + * Place the task represented by pxTCB into the appropriate ready list for + * the task. It is inserted at the end of the list. + */ +#define prvAddTaskToReadyList( pxTCB ) \ + traceMOVED_TASK_TO_READY_STATE( pxTCB ); \ + taskRECORD_READY_PRIORITY( ( pxTCB )->uxPriority ); \ + vListInsertEnd( &( pxReadyTasksLists[ ( pxTCB )->uxPriority ] ), &( ( pxTCB )->xStateListItem ) ); \ + tracePOST_MOVED_TASK_TO_READY_STATE( pxTCB ) +/*-----------------------------------------------------------*/ + +/* + * Several functions take an TaskHandle_t parameter that can optionally be NULL, + * where NULL is used to indicate that the handle of the currently executing + * task should be used in place of the parameter. This macro simply checks to + * see if the parameter is NULL and returns a pointer to the appropriate TCB. + */ +#define prvGetTCBFromHandle( pxHandle ) ( ( ( pxHandle ) == NULL ) ? pxCurrentTCB : ( pxHandle ) ) + +/* The item value of the event list item is normally used to hold the priority +of the task to which it belongs (coded to allow it to be held in reverse +priority order). However, it is occasionally borrowed for other purposes. It +is important its value is not updated due to a task priority change while it is +being used for another purpose. The following bit definition is used to inform +the scheduler that the value should not be changed - in which case it is the +responsibility of whichever module is using the value to ensure it gets set back +to its original value when it is released. */ +#if( configUSE_16_BIT_TICKS == 1 ) + #define taskEVENT_LIST_ITEM_VALUE_IN_USE 0x8000U +#else + #define taskEVENT_LIST_ITEM_VALUE_IN_USE 0x80000000UL +#endif + +/* + * Task control block. A task control block (TCB) is allocated for each task, + * and stores task state information, including a pointer to the task's context + * (the task's run time environment, including register values) + */ +typedef struct tskTaskControlBlock /* The old naming convention is used to prevent breaking kernel aware debuggers. */ +{ + volatile StackType_t *pxTopOfStack; /*< Points to the location of the last item placed on the tasks stack. THIS MUST BE THE FIRST MEMBER OF THE TCB STRUCT. */ + + #if ( portUSING_MPU_WRAPPERS == 1 ) + xMPU_SETTINGS xMPUSettings; /*< The MPU settings are defined as part of the port layer. THIS MUST BE THE SECOND MEMBER OF THE TCB STRUCT. */ + #endif + + ListItem_t xStateListItem; /*< The list that the state list item of a task is reference from denotes the state of that task (Ready, Blocked, Suspended ). */ + ListItem_t xEventListItem; /*< Used to reference a task from an event list. */ + UBaseType_t uxPriority; /*< The priority of the task. 0 is the lowest priority. */ + StackType_t *pxStack; /*< Points to the start of the stack. */ + char pcTaskName[ configMAX_TASK_NAME_LEN ];/*< Descriptive name given to the task when created. Facilitates debugging only. */ /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + + #if ( ( portSTACK_GROWTH > 0 ) || ( configRECORD_STACK_HIGH_ADDRESS == 1 ) ) + StackType_t *pxEndOfStack; /*< Points to the highest valid address for the stack. */ + #endif + + #if ( portCRITICAL_NESTING_IN_TCB == 1 ) + UBaseType_t uxCriticalNesting; /*< Holds the critical section nesting depth for ports that do not maintain their own count in the port layer. */ + #endif + + #if ( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxTCBNumber; /*< Stores a number that increments each time a TCB is created. It allows debuggers to determine when a task has been deleted and then recreated. */ + UBaseType_t uxTaskNumber; /*< Stores a number specifically for use by third party trace code. */ + #endif + + #if ( configUSE_MUTEXES == 1 ) + UBaseType_t uxBasePriority; /*< The priority last assigned to the task - used by the priority inheritance mechanism. */ + UBaseType_t uxMutexesHeld; + #endif + + #if ( configUSE_APPLICATION_TASK_TAG == 1 ) + TaskHookFunction_t pxTaskTag; + #endif + + #if( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 ) + void *pvThreadLocalStoragePointers[ configNUM_THREAD_LOCAL_STORAGE_POINTERS ]; + #endif + + #if( configGENERATE_RUN_TIME_STATS == 1 ) + uint32_t ulRunTimeCounter; /*< Stores the amount of time the task has spent in the Running state. */ + #endif + + #if ( configUSE_NEWLIB_REENTRANT == 1 ) + /* Allocate a Newlib reent structure that is specific to this task. + Note Newlib support has been included by popular demand, but is not + used by the FreeRTOS maintainers themselves. FreeRTOS is not + responsible for resulting newlib operation. User must be familiar with + newlib and must provide system-wide implementations of the necessary + stubs. Be warned that (at the time of writing) the current newlib design + implements a system-wide malloc() that must be provided with locks. */ + struct _reent xNewLib_reent; + #endif + + #if( configUSE_TASK_NOTIFICATIONS == 1 ) + volatile uint32_t ulNotifiedValue; + volatile uint8_t ucNotifyState; + #endif + + /* See the comments in FreeRTOS.h with the definition of + tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE. */ + #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e731 !e9029 Macro has been consolidated for readability reasons. */ + uint8_t ucStaticallyAllocated; /*< Set to pdTRUE if the task is a statically allocated to ensure no attempt is made to free the memory. */ + #endif + + #if( INCLUDE_xTaskAbortDelay == 1 ) + uint8_t ucDelayAborted; + #endif + + #if( configUSE_POSIX_ERRNO == 1 ) + int iTaskErrno; + #endif + +} tskTCB; + +/* The old tskTCB name is maintained above then typedefed to the new TCB_t name +below to enable the use of older kernel aware debuggers. */ +typedef tskTCB TCB_t; + +/*lint -save -e956 A manual analysis and inspection has been used to determine +which static variables must be declared volatile. */ +PRIVILEGED_DATA TCB_t * volatile pxCurrentTCB = NULL; + +/* Lists for ready and blocked tasks. -------------------- +xDelayedTaskList1 and xDelayedTaskList2 could be move to function scople but +doing so breaks some kernel aware debuggers and debuggers that rely on removing +the static qualifier. */ +PRIVILEGED_DATA static List_t pxReadyTasksLists[ configMAX_PRIORITIES ];/*< Prioritised ready tasks. */ +PRIVILEGED_DATA static List_t xDelayedTaskList1; /*< Delayed tasks. */ +PRIVILEGED_DATA static List_t xDelayedTaskList2; /*< Delayed tasks (two lists are used - one for delays that have overflowed the current tick count. */ +PRIVILEGED_DATA static List_t * volatile pxDelayedTaskList; /*< Points to the delayed task list currently being used. */ +PRIVILEGED_DATA static List_t * volatile pxOverflowDelayedTaskList; /*< Points to the delayed task list currently being used to hold tasks that have overflowed the current tick count. */ +PRIVILEGED_DATA static List_t xPendingReadyList; /*< Tasks that have been readied while the scheduler was suspended. They will be moved to the ready list when the scheduler is resumed. */ + +#if( INCLUDE_vTaskDelete == 1 ) + + PRIVILEGED_DATA static List_t xTasksWaitingTermination; /*< Tasks that have been deleted - but their memory not yet freed. */ + PRIVILEGED_DATA static volatile UBaseType_t uxDeletedTasksWaitingCleanUp = ( UBaseType_t ) 0U; + +#endif + +#if ( INCLUDE_vTaskSuspend == 1 ) + + PRIVILEGED_DATA static List_t xSuspendedTaskList; /*< Tasks that are currently suspended. */ + +#endif + +/* Global POSIX errno. Its value is changed upon context switching to match +the errno of the currently running task. */ +#if ( configUSE_POSIX_ERRNO == 1 ) + int FreeRTOS_errno = 0; +#endif + +/* Other file private variables. --------------------------------*/ +PRIVILEGED_DATA static volatile UBaseType_t uxCurrentNumberOfTasks = ( UBaseType_t ) 0U; +PRIVILEGED_DATA static volatile TickType_t xTickCount = ( TickType_t ) configINITIAL_TICK_COUNT; +PRIVILEGED_DATA static volatile UBaseType_t uxTopReadyPriority = tskIDLE_PRIORITY; +PRIVILEGED_DATA static volatile BaseType_t xSchedulerRunning = pdFALSE; +PRIVILEGED_DATA static volatile TickType_t xPendedTicks = ( TickType_t ) 0U; +PRIVILEGED_DATA static volatile BaseType_t xYieldPending = pdFALSE; +PRIVILEGED_DATA static volatile BaseType_t xNumOfOverflows = ( BaseType_t ) 0; +PRIVILEGED_DATA static UBaseType_t uxTaskNumber = ( UBaseType_t ) 0U; +PRIVILEGED_DATA static volatile TickType_t xNextTaskUnblockTime = ( TickType_t ) 0U; /* Initialised to portMAX_DELAY before the scheduler starts. */ +PRIVILEGED_DATA static TaskHandle_t xIdleTaskHandle = NULL; /*< Holds the handle of the idle task. The idle task is created automatically when the scheduler is started. */ + +/* Context switches are held pending while the scheduler is suspended. Also, +interrupts must not manipulate the xStateListItem of a TCB, or any of the +lists the xStateListItem can be referenced from, if the scheduler is suspended. +If an interrupt needs to unblock a task while the scheduler is suspended then it +moves the task's event list item into the xPendingReadyList, ready for the +kernel to move the task from the pending ready list into the real ready list +when the scheduler is unsuspended. The pending ready list itself can only be +accessed from a critical section. */ +PRIVILEGED_DATA static volatile UBaseType_t uxSchedulerSuspended = ( UBaseType_t ) pdFALSE; + +#if ( configGENERATE_RUN_TIME_STATS == 1 ) + + /* Do not move these variables to function scope as doing so prevents the + code working with debuggers that need to remove the static qualifier. */ + PRIVILEGED_DATA static uint32_t ulTaskSwitchedInTime = 0UL; /*< Holds the value of a timer/counter the last time a task was switched in. */ + PRIVILEGED_DATA static uint32_t ulTotalRunTime = 0UL; /*< Holds the total amount of execution time as defined by the run time counter clock. */ + +#endif + +/*lint -restore */ + +/*-----------------------------------------------------------*/ + +/* Callback function prototypes. --------------------------*/ +#if( configCHECK_FOR_STACK_OVERFLOW > 0 ) + + extern void vApplicationStackOverflowHook( TaskHandle_t xTask, char *pcTaskName ); + +#endif + +#if( configUSE_TICK_HOOK > 0 ) + + extern void vApplicationTickHook( void ); /*lint !e526 Symbol not defined as it is an application callback. */ + +#endif + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + extern void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize ); /*lint !e526 Symbol not defined as it is an application callback. */ + +#endif + +/* File private functions. --------------------------------*/ + +/** + * Utility task that simply returns pdTRUE if the task referenced by xTask is + * currently in the Suspended state, or pdFALSE if the task referenced by xTask + * is in any other state. + */ +#if ( INCLUDE_vTaskSuspend == 1 ) + + static BaseType_t prvTaskIsTaskSuspended( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +#endif /* INCLUDE_vTaskSuspend */ + +/* + * Utility to ready all the lists used by the scheduler. This is called + * automatically upon the creation of the first task. + */ +static void prvInitialiseTaskLists( void ) PRIVILEGED_FUNCTION; + +/* + * The idle task, which as all tasks is implemented as a never ending loop. + * The idle task is automatically created and added to the ready lists upon + * creation of the first user task. + * + * The portTASK_FUNCTION_PROTO() macro is used to allow port/compiler specific + * language extensions. The equivalent prototype for this function is: + * + * void prvIdleTask( void *pvParameters ); + * + */ +static portTASK_FUNCTION_PROTO( prvIdleTask, pvParameters ); + +/* + * Utility to free all memory allocated by the scheduler to hold a TCB, + * including the stack pointed to by the TCB. + * + * This does not free memory allocated by the task itself (i.e. memory + * allocated by calls to pvPortMalloc from within the tasks application code). + */ +#if ( INCLUDE_vTaskDelete == 1 ) + + static void prvDeleteTCB( TCB_t *pxTCB ) PRIVILEGED_FUNCTION; + +#endif + +/* + * Used only by the idle task. This checks to see if anything has been placed + * in the list of tasks waiting to be deleted. If so the task is cleaned up + * and its TCB deleted. + */ +static void prvCheckTasksWaitingTermination( void ) PRIVILEGED_FUNCTION; + +/* + * The currently executing task is entering the Blocked state. Add the task to + * either the current or the overflow delayed task list. + */ +static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely ) PRIVILEGED_FUNCTION; + +/* + * Fills an TaskStatus_t structure with information on each task that is + * referenced from the pxList list (which may be a ready list, a delayed list, + * a suspended list, etc.). + * + * THIS FUNCTION IS INTENDED FOR DEBUGGING ONLY, AND SHOULD NOT BE CALLED FROM + * NORMAL APPLICATION CODE. + */ +#if ( configUSE_TRACE_FACILITY == 1 ) + + static UBaseType_t prvListTasksWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState ) PRIVILEGED_FUNCTION; + +#endif + +/* + * Searches pxList for a task with name pcNameToQuery - returning a handle to + * the task if it is found, or NULL if the task is not found. + */ +#if ( INCLUDE_xTaskGetHandle == 1 ) + + static TCB_t *prvSearchForNameWithinSingleList( List_t *pxList, const char pcNameToQuery[] ) PRIVILEGED_FUNCTION; + +#endif + +/* + * When a task is created, the stack of the task is filled with a known value. + * This function determines the 'high water mark' of the task stack by + * determining how much of the stack remains at the original preset value. + */ +#if ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) ) + + static configSTACK_DEPTH_TYPE prvTaskCheckFreeStackSpace( const uint8_t * pucStackByte ) PRIVILEGED_FUNCTION; + +#endif + +/* + * Return the amount of time, in ticks, that will pass before the kernel will + * next move a task from the Blocked state to the Running state. + * + * This conditional compilation should use inequality to 0, not equality to 1. + * This is to ensure portSUPPRESS_TICKS_AND_SLEEP() can be called when user + * defined low power mode implementations require configUSE_TICKLESS_IDLE to be + * set to a value other than 1. + */ +#if ( configUSE_TICKLESS_IDLE != 0 ) + + static TickType_t prvGetExpectedIdleTime( void ) PRIVILEGED_FUNCTION; + +#endif + +/* + * Set xNextTaskUnblockTime to the time at which the next Blocked state task + * will exit the Blocked state. + */ +static void prvResetNextTaskUnblockTime( void ); + +#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) ) + + /* + * Helper function used to pad task names with spaces when printing out + * human readable tables of task information. + */ + static char *prvWriteNameToBuffer( char *pcBuffer, const char *pcTaskName ) PRIVILEGED_FUNCTION; + +#endif + +/* + * Called after a Task_t structure has been allocated either statically or + * dynamically to fill in the structure's members. + */ +static void prvInitialiseNewTask( TaskFunction_t pxTaskCode, + const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const uint32_t ulStackDepth, + void * const pvParameters, + UBaseType_t uxPriority, + TaskHandle_t * const pxCreatedTask, + TCB_t *pxNewTCB, + const MemoryRegion_t * const xRegions ) PRIVILEGED_FUNCTION; + +/* + * Called after a new task has been created and initialised to place the task + * under the control of the scheduler. + */ +static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB ) PRIVILEGED_FUNCTION; + +/* + * freertos_tasks_c_additions_init() should only be called if the user definable + * macro FREERTOS_TASKS_C_ADDITIONS_INIT() is defined, as that is the only macro + * called by the function. + */ +#ifdef FREERTOS_TASKS_C_ADDITIONS_INIT + + static void freertos_tasks_c_additions_init( void ) PRIVILEGED_FUNCTION; + +#endif + +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode, + const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const uint32_t ulStackDepth, + void * const pvParameters, + UBaseType_t uxPriority, + StackType_t * const puxStackBuffer, + StaticTask_t * const pxTaskBuffer ) + { + TCB_t *pxNewTCB; + TaskHandle_t xReturn; + + configASSERT( puxStackBuffer != NULL ); + configASSERT( pxTaskBuffer != NULL ); + + #if( configASSERT_DEFINED == 1 ) + { + /* Sanity check that the size of the structure used to declare a + variable of type StaticTask_t equals the size of the real task + structure. */ + volatile size_t xSize = sizeof( StaticTask_t ); + configASSERT( xSize == sizeof( TCB_t ) ); + ( void ) xSize; /* Prevent lint warning when configASSERT() is not used. */ + } + #endif /* configASSERT_DEFINED */ + + + if( ( pxTaskBuffer != NULL ) && ( puxStackBuffer != NULL ) ) + { + /* The memory used for the task's TCB and stack are passed into this + function - use them. */ + pxNewTCB = ( TCB_t * ) pxTaskBuffer; /*lint !e740 !e9087 Unusual cast is ok as the structures are designed to have the same alignment, and the size is checked by an assert. */ + pxNewTCB->pxStack = ( StackType_t * ) puxStackBuffer; + + #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e731 !e9029 Macro has been consolidated for readability reasons. */ + { + /* Tasks can be created statically or dynamically, so note this + task was created statically in case the task is later deleted. */ + pxNewTCB->ucStaticallyAllocated = tskSTATICALLY_ALLOCATED_STACK_AND_TCB; + } + #endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */ + + prvInitialiseNewTask( pxTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, &xReturn, pxNewTCB, NULL ); + prvAddNewTaskToReadyList( pxNewTCB ); + } + else + { + xReturn = NULL; + } + + return xReturn; + } + +#endif /* SUPPORT_STATIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +#if( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + + BaseType_t xTaskCreateRestrictedStatic( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) + { + TCB_t *pxNewTCB; + BaseType_t xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY; + + configASSERT( pxTaskDefinition->puxStackBuffer != NULL ); + configASSERT( pxTaskDefinition->pxTaskBuffer != NULL ); + + if( ( pxTaskDefinition->puxStackBuffer != NULL ) && ( pxTaskDefinition->pxTaskBuffer != NULL ) ) + { + /* Allocate space for the TCB. Where the memory comes from depends + on the implementation of the port malloc function and whether or + not static allocation is being used. */ + pxNewTCB = ( TCB_t * ) pxTaskDefinition->pxTaskBuffer; + + /* Store the stack location in the TCB. */ + pxNewTCB->pxStack = pxTaskDefinition->puxStackBuffer; + + #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) + { + /* Tasks can be created statically or dynamically, so note this + task was created statically in case the task is later deleted. */ + pxNewTCB->ucStaticallyAllocated = tskSTATICALLY_ALLOCATED_STACK_AND_TCB; + } + #endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */ + + prvInitialiseNewTask( pxTaskDefinition->pvTaskCode, + pxTaskDefinition->pcName, + ( uint32_t ) pxTaskDefinition->usStackDepth, + pxTaskDefinition->pvParameters, + pxTaskDefinition->uxPriority, + pxCreatedTask, pxNewTCB, + pxTaskDefinition->xRegions ); + + prvAddNewTaskToReadyList( pxNewTCB ); + xReturn = pdPASS; + } + + return xReturn; + } + +#endif /* ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) */ +/*-----------------------------------------------------------*/ + +#if( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + + BaseType_t xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) + { + TCB_t *pxNewTCB; + BaseType_t xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY; + + configASSERT( pxTaskDefinition->puxStackBuffer ); + + if( pxTaskDefinition->puxStackBuffer != NULL ) + { + /* Allocate space for the TCB. Where the memory comes from depends + on the implementation of the port malloc function and whether or + not static allocation is being used. */ + pxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) ); + + if( pxNewTCB != NULL ) + { + /* Store the stack location in the TCB. */ + pxNewTCB->pxStack = pxTaskDefinition->puxStackBuffer; + + #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) + { + /* Tasks can be created statically or dynamically, so note + this task had a statically allocated stack in case it is + later deleted. The TCB was allocated dynamically. */ + pxNewTCB->ucStaticallyAllocated = tskSTATICALLY_ALLOCATED_STACK_ONLY; + } + #endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */ + + prvInitialiseNewTask( pxTaskDefinition->pvTaskCode, + pxTaskDefinition->pcName, + ( uint32_t ) pxTaskDefinition->usStackDepth, + pxTaskDefinition->pvParameters, + pxTaskDefinition->uxPriority, + pxCreatedTask, pxNewTCB, + pxTaskDefinition->xRegions ); + + prvAddNewTaskToReadyList( pxNewTCB ); + xReturn = pdPASS; + } + } + + return xReturn; + } + +#endif /* portUSING_MPU_WRAPPERS */ +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + + BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, + const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const configSTACK_DEPTH_TYPE usStackDepth, + void * const pvParameters, + UBaseType_t uxPriority, + TaskHandle_t * const pxCreatedTask ) + { + TCB_t *pxNewTCB; + BaseType_t xReturn; + + /* If the stack grows down then allocate the stack then the TCB so the stack + does not grow into the TCB. Likewise if the stack grows up then allocate + the TCB then the stack. */ + #if( portSTACK_GROWTH > 0 ) + { + /* Allocate space for the TCB. Where the memory comes from depends on + the implementation of the port malloc function and whether or not static + allocation is being used. */ + pxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) ); + + if( pxNewTCB != NULL ) + { + /* Allocate space for the stack used by the task being created. + The base of the stack memory stored in the TCB so the task can + be deleted later if required. */ + pxNewTCB->pxStack = ( StackType_t * ) pvPortMalloc( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ) ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + + if( pxNewTCB->pxStack == NULL ) + { + /* Could not allocate the stack. Delete the allocated TCB. */ + vPortFree( pxNewTCB ); + pxNewTCB = NULL; + } + } + } + #else /* portSTACK_GROWTH */ + { + StackType_t *pxStack; + + /* Allocate space for the stack used by the task being created. */ + pxStack = pvPortMalloc( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation is the stack. */ + + if( pxStack != NULL ) + { + /* Allocate space for the TCB. */ + pxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) ); /*lint !e9087 !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack, and the first member of TCB_t is always a pointer to the task's stack. */ + + if( pxNewTCB != NULL ) + { + /* Store the stack location in the TCB. */ + pxNewTCB->pxStack = pxStack; + } + else + { + /* The stack cannot be used as the TCB was not created. Free + it again. */ + vPortFree( pxStack ); + } + } + else + { + pxNewTCB = NULL; + } + } + #endif /* portSTACK_GROWTH */ + + if( pxNewTCB != NULL ) + { + #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e9029 !e731 Macro has been consolidated for readability reasons. */ + { + /* Tasks can be created statically or dynamically, so note this + task was created dynamically in case it is later deleted. */ + pxNewTCB->ucStaticallyAllocated = tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB; + } + #endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */ + + prvInitialiseNewTask( pxTaskCode, pcName, ( uint32_t ) usStackDepth, pvParameters, uxPriority, pxCreatedTask, pxNewTCB, NULL ); + prvAddNewTaskToReadyList( pxNewTCB ); + xReturn = pdPASS; + } + else + { + xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY; + } + + return xReturn; + } + +#endif /* configSUPPORT_DYNAMIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +static void prvInitialiseNewTask( TaskFunction_t pxTaskCode, + const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const uint32_t ulStackDepth, + void * const pvParameters, + UBaseType_t uxPriority, + TaskHandle_t * const pxCreatedTask, + TCB_t *pxNewTCB, + const MemoryRegion_t * const xRegions ) +{ +StackType_t *pxTopOfStack; +UBaseType_t x; + + #if( portUSING_MPU_WRAPPERS == 1 ) + /* Should the task be created in privileged mode? */ + BaseType_t xRunPrivileged; + if( ( uxPriority & portPRIVILEGE_BIT ) != 0U ) + { + xRunPrivileged = pdTRUE; + } + else + { + xRunPrivileged = pdFALSE; + } + uxPriority &= ~portPRIVILEGE_BIT; + #endif /* portUSING_MPU_WRAPPERS == 1 */ + + /* Avoid dependency on memset() if it is not required. */ + #if( tskSET_NEW_STACKS_TO_KNOWN_VALUE == 1 ) + { + /* Fill the stack with a known value to assist debugging. */ + ( void ) memset( pxNewTCB->pxStack, ( int ) tskSTACK_FILL_BYTE, ( size_t ) ulStackDepth * sizeof( StackType_t ) ); + } + #endif /* tskSET_NEW_STACKS_TO_KNOWN_VALUE */ + + /* Calculate the top of stack address. This depends on whether the stack + grows from high memory to low (as per the 80x86) or vice versa. + portSTACK_GROWTH is used to make the result positive or negative as required + by the port. */ + #if( portSTACK_GROWTH < 0 ) + { + pxTopOfStack = &( pxNewTCB->pxStack[ ulStackDepth - ( uint32_t ) 1 ] ); + pxTopOfStack = ( StackType_t * ) ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack ) & ( ~( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) ) ); /*lint !e923 !e9033 !e9078 MISRA exception. Avoiding casts between pointers and integers is not practical. Size differences accounted for using portPOINTER_SIZE_TYPE type. Checked by assert(). */ + + /* Check the alignment of the calculated top of stack is correct. */ + configASSERT( ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack & ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) == 0UL ) ); + + #if( configRECORD_STACK_HIGH_ADDRESS == 1 ) + { + /* Also record the stack's high address, which may assist + debugging. */ + pxNewTCB->pxEndOfStack = pxTopOfStack; + } + #endif /* configRECORD_STACK_HIGH_ADDRESS */ + } + #else /* portSTACK_GROWTH */ + { + pxTopOfStack = pxNewTCB->pxStack; + + /* Check the alignment of the stack buffer is correct. */ + configASSERT( ( ( ( portPOINTER_SIZE_TYPE ) pxNewTCB->pxStack & ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) == 0UL ) ); + + /* The other extreme of the stack space is required if stack checking is + performed. */ + pxNewTCB->pxEndOfStack = pxNewTCB->pxStack + ( ulStackDepth - ( uint32_t ) 1 ); + } + #endif /* portSTACK_GROWTH */ + + /* Store the task name in the TCB. */ + if( pcName != NULL ) + { + for( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ ) + { + pxNewTCB->pcTaskName[ x ] = pcName[ x ]; + + /* Don't copy all configMAX_TASK_NAME_LEN if the string is shorter than + configMAX_TASK_NAME_LEN characters just in case the memory after the + string is not accessible (extremely unlikely). */ + if( pcName[ x ] == ( char ) 0x00 ) + { + break; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + /* Ensure the name string is terminated in the case that the string length + was greater or equal to configMAX_TASK_NAME_LEN. */ + pxNewTCB->pcTaskName[ configMAX_TASK_NAME_LEN - 1 ] = '\0'; + } + else + { + /* The task has not been given a name, so just ensure there is a NULL + terminator when it is read out. */ + pxNewTCB->pcTaskName[ 0 ] = 0x00; + } + + /* This is used as an array index so must ensure it's not too large. First + remove the privilege bit if one is present. */ + if( uxPriority >= ( UBaseType_t ) configMAX_PRIORITIES ) + { + uxPriority = ( UBaseType_t ) configMAX_PRIORITIES - ( UBaseType_t ) 1U; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + pxNewTCB->uxPriority = uxPriority; + #if ( configUSE_MUTEXES == 1 ) + { + pxNewTCB->uxBasePriority = uxPriority; + pxNewTCB->uxMutexesHeld = 0; + } + #endif /* configUSE_MUTEXES */ + + vListInitialiseItem( &( pxNewTCB->xStateListItem ) ); + vListInitialiseItem( &( pxNewTCB->xEventListItem ) ); + + /* Set the pxNewTCB as a link back from the ListItem_t. This is so we can get + back to the containing TCB from a generic item in a list. */ + listSET_LIST_ITEM_OWNER( &( pxNewTCB->xStateListItem ), pxNewTCB ); + + /* Event lists are always in priority order. */ + listSET_LIST_ITEM_VALUE( &( pxNewTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + listSET_LIST_ITEM_OWNER( &( pxNewTCB->xEventListItem ), pxNewTCB ); + + #if ( portCRITICAL_NESTING_IN_TCB == 1 ) + { + pxNewTCB->uxCriticalNesting = ( UBaseType_t ) 0U; + } + #endif /* portCRITICAL_NESTING_IN_TCB */ + + #if ( configUSE_APPLICATION_TASK_TAG == 1 ) + { + pxNewTCB->pxTaskTag = NULL; + } + #endif /* configUSE_APPLICATION_TASK_TAG */ + + #if ( configGENERATE_RUN_TIME_STATS == 1 ) + { + pxNewTCB->ulRunTimeCounter = 0UL; + } + #endif /* configGENERATE_RUN_TIME_STATS */ + + #if ( portUSING_MPU_WRAPPERS == 1 ) + { + vPortStoreTaskMPUSettings( &( pxNewTCB->xMPUSettings ), xRegions, pxNewTCB->pxStack, ulStackDepth ); + } + #else + { + /* Avoid compiler warning about unreferenced parameter. */ + ( void ) xRegions; + } + #endif + + #if( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) + { + for( x = 0; x < ( UBaseType_t ) configNUM_THREAD_LOCAL_STORAGE_POINTERS; x++ ) + { + pxNewTCB->pvThreadLocalStoragePointers[ x ] = NULL; + } + } + #endif + + #if ( configUSE_TASK_NOTIFICATIONS == 1 ) + { + pxNewTCB->ulNotifiedValue = 0; + pxNewTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION; + } + #endif + + #if ( configUSE_NEWLIB_REENTRANT == 1 ) + { + /* Initialise this task's Newlib reent structure. */ + _REENT_INIT_PTR( ( &( pxNewTCB->xNewLib_reent ) ) ); + } + #endif + + #if( INCLUDE_xTaskAbortDelay == 1 ) + { + pxNewTCB->ucDelayAborted = pdFALSE; + } + #endif + + /* Initialize the TCB stack to look as if the task was already running, + but had been interrupted by the scheduler. The return address is set + to the start of the task function. Once the stack has been initialised + the top of stack variable is updated. */ + #if( portUSING_MPU_WRAPPERS == 1 ) + { + /* If the port has capability to detect stack overflow, + pass the stack end address to the stack initialization + function as well. */ + #if( portHAS_STACK_OVERFLOW_CHECKING == 1 ) + { + #if( portSTACK_GROWTH < 0 ) + { + pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxNewTCB->pxStack, pxTaskCode, pvParameters, xRunPrivileged ); + } + #else /* portSTACK_GROWTH */ + { + pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxNewTCB->pxEndOfStack, pxTaskCode, pvParameters, xRunPrivileged ); + } + #endif /* portSTACK_GROWTH */ + } + #else /* portHAS_STACK_OVERFLOW_CHECKING */ + { + pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters, xRunPrivileged ); + } + #endif /* portHAS_STACK_OVERFLOW_CHECKING */ + } + #else /* portUSING_MPU_WRAPPERS */ + { + /* If the port has capability to detect stack overflow, + pass the stack end address to the stack initialization + function as well. */ + #if( portHAS_STACK_OVERFLOW_CHECKING == 1 ) + { + #if( portSTACK_GROWTH < 0 ) + { + pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxNewTCB->pxStack, pxTaskCode, pvParameters ); + } + #else /* portSTACK_GROWTH */ + { + pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxNewTCB->pxEndOfStack, pxTaskCode, pvParameters ); + } + #endif /* portSTACK_GROWTH */ + } + #else /* portHAS_STACK_OVERFLOW_CHECKING */ + { + pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters ); + } + #endif /* portHAS_STACK_OVERFLOW_CHECKING */ + } + #endif /* portUSING_MPU_WRAPPERS */ + + if( pxCreatedTask != NULL ) + { + /* Pass the handle out in an anonymous way. The handle can be used to + change the created task's priority, delete the created task, etc.*/ + *pxCreatedTask = ( TaskHandle_t ) pxNewTCB; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } +} +/*-----------------------------------------------------------*/ + +static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB ) +{ + /* Ensure interrupts don't access the task lists while the lists are being + updated. */ + taskENTER_CRITICAL(); + { + uxCurrentNumberOfTasks++; + if( pxCurrentTCB == NULL ) + { + /* There are no other tasks, or all the other tasks are in + the suspended state - make this the current task. */ + pxCurrentTCB = pxNewTCB; + + if( uxCurrentNumberOfTasks == ( UBaseType_t ) 1 ) + { + /* This is the first task to be created so do the preliminary + initialisation required. We will not recover if this call + fails, but we will report the failure. */ + prvInitialiseTaskLists(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* If the scheduler is not already running, make this task the + current task if it is the highest priority task to be created + so far. */ + if( xSchedulerRunning == pdFALSE ) + { + if( pxCurrentTCB->uxPriority <= pxNewTCB->uxPriority ) + { + pxCurrentTCB = pxNewTCB; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + uxTaskNumber++; + + #if ( configUSE_TRACE_FACILITY == 1 ) + { + /* Add a counter into the TCB for tracing only. */ + pxNewTCB->uxTCBNumber = uxTaskNumber; + } + #endif /* configUSE_TRACE_FACILITY */ + traceTASK_CREATE( pxNewTCB ); + + prvAddTaskToReadyList( pxNewTCB ); + + portSETUP_TCB( pxNewTCB ); + } + taskEXIT_CRITICAL(); + + if( xSchedulerRunning != pdFALSE ) + { + /* If the created task is of a higher priority than the current task + then it should run now. */ + if( pxCurrentTCB->uxPriority < pxNewTCB->uxPriority ) + { + taskYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } +} +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskDelete == 1 ) + + void vTaskDelete( TaskHandle_t xTaskToDelete ) + { + TCB_t *pxTCB; + + taskENTER_CRITICAL(); + { + /* If null is passed in here then it is the calling task that is + being deleted. */ + pxTCB = prvGetTCBFromHandle( xTaskToDelete ); + + /* Remove task from the ready/delayed list. */ + if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + taskRESET_READY_PRIORITY( pxTCB->uxPriority ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Is the task waiting on an event also? */ + if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) + { + ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Increment the uxTaskNumber also so kernel aware debuggers can + detect that the task lists need re-generating. This is done before + portPRE_TASK_DELETE_HOOK() as in the Windows port that macro will + not return. */ + uxTaskNumber++; + + if( pxTCB == pxCurrentTCB ) + { + /* A task is deleting itself. This cannot complete within the + task itself, as a context switch to another task is required. + Place the task in the termination list. The idle task will + check the termination list and free up any memory allocated by + the scheduler for the TCB and stack of the deleted task. */ + vListInsertEnd( &xTasksWaitingTermination, &( pxTCB->xStateListItem ) ); + + /* Increment the ucTasksDeleted variable so the idle task knows + there is a task that has been deleted and that it should therefore + check the xTasksWaitingTermination list. */ + ++uxDeletedTasksWaitingCleanUp; + + /* Call the delete hook before portPRE_TASK_DELETE_HOOK() as + portPRE_TASK_DELETE_HOOK() does not return in the Win32 port. */ + traceTASK_DELETE( pxTCB ); + + /* The pre-delete hook is primarily for the Windows simulator, + in which Windows specific clean up operations are performed, + after which it is not possible to yield away from this task - + hence xYieldPending is used to latch that a context switch is + required. */ + portPRE_TASK_DELETE_HOOK( pxTCB, &xYieldPending ); + } + else + { + --uxCurrentNumberOfTasks; + prvDeleteTCB( pxTCB ); + + /* Reset the next expected unblock time in case it referred to + the task that has just been deleted. */ + prvResetNextTaskUnblockTime(); + traceTASK_DELETE( pxTCB ); + } + } + taskEXIT_CRITICAL(); + + /* Force a reschedule if it is the currently running task that has just + been deleted. */ + if( xSchedulerRunning != pdFALSE ) + { + if( pxTCB == pxCurrentTCB ) + { + configASSERT( uxSchedulerSuspended == 0 ); + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + +#endif /* INCLUDE_vTaskDelete */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskDelayUntil == 1 ) + + void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement ) + { + TickType_t xTimeToWake; + BaseType_t xAlreadyYielded, xShouldDelay = pdFALSE; + + configASSERT( pxPreviousWakeTime ); + configASSERT( ( xTimeIncrement > 0U ) ); + configASSERT( uxSchedulerSuspended == 0 ); + + vTaskSuspendAll(); + { + /* Minor optimisation. The tick count cannot change in this + block. */ + const TickType_t xConstTickCount = xTickCount; + + /* Generate the tick time at which the task wants to wake. */ + xTimeToWake = *pxPreviousWakeTime + xTimeIncrement; + + if( xConstTickCount < *pxPreviousWakeTime ) + { + /* The tick count has overflowed since this function was + lasted called. In this case the only time we should ever + actually delay is if the wake time has also overflowed, + and the wake time is greater than the tick time. When this + is the case it is as if neither time had overflowed. */ + if( ( xTimeToWake < *pxPreviousWakeTime ) && ( xTimeToWake > xConstTickCount ) ) + { + xShouldDelay = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* The tick time has not overflowed. In this case we will + delay if either the wake time has overflowed, and/or the + tick time is less than the wake time. */ + if( ( xTimeToWake < *pxPreviousWakeTime ) || ( xTimeToWake > xConstTickCount ) ) + { + xShouldDelay = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + /* Update the wake time ready for the next call. */ + *pxPreviousWakeTime = xTimeToWake; + + if( xShouldDelay != pdFALSE ) + { + traceTASK_DELAY_UNTIL( xTimeToWake ); + + /* prvAddCurrentTaskToDelayedList() needs the block time, not + the time to wake, so subtract the current tick count. */ + prvAddCurrentTaskToDelayedList( xTimeToWake - xConstTickCount, pdFALSE ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + xAlreadyYielded = xTaskResumeAll(); + + /* Force a reschedule if xTaskResumeAll has not already done so, we may + have put ourselves to sleep. */ + if( xAlreadyYielded == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* INCLUDE_vTaskDelayUntil */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskDelay == 1 ) + + void vTaskDelay( const TickType_t xTicksToDelay ) + { + BaseType_t xAlreadyYielded = pdFALSE; + + /* A delay time of zero just forces a reschedule. */ + if( xTicksToDelay > ( TickType_t ) 0U ) + { + configASSERT( uxSchedulerSuspended == 0 ); + vTaskSuspendAll(); + { + traceTASK_DELAY(); + + /* A task that is removed from the event list while the + scheduler is suspended will not get placed in the ready + list or removed from the blocked list until the scheduler + is resumed. + + This task cannot be in an event list as it is the currently + executing task. */ + prvAddCurrentTaskToDelayedList( xTicksToDelay, pdFALSE ); + } + xAlreadyYielded = xTaskResumeAll(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Force a reschedule if xTaskResumeAll has not already done so, we may + have put ourselves to sleep. */ + if( xAlreadyYielded == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* INCLUDE_vTaskDelay */ +/*-----------------------------------------------------------*/ + +#if( ( INCLUDE_eTaskGetState == 1 ) || ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_xTaskAbortDelay == 1 ) ) + + eTaskState eTaskGetState( TaskHandle_t xTask ) + { + eTaskState eReturn; + List_t const * pxStateList, *pxDelayedList, *pxOverflowedDelayedList; + const TCB_t * const pxTCB = xTask; + + configASSERT( pxTCB ); + + if( pxTCB == pxCurrentTCB ) + { + /* The task calling this function is querying its own state. */ + eReturn = eRunning; + } + else + { + taskENTER_CRITICAL(); + { + pxStateList = listLIST_ITEM_CONTAINER( &( pxTCB->xStateListItem ) ); + pxDelayedList = pxDelayedTaskList; + pxOverflowedDelayedList = pxOverflowDelayedTaskList; + } + taskEXIT_CRITICAL(); + + if( ( pxStateList == pxDelayedList ) || ( pxStateList == pxOverflowedDelayedList ) ) + { + /* The task being queried is referenced from one of the Blocked + lists. */ + eReturn = eBlocked; + } + + #if ( INCLUDE_vTaskSuspend == 1 ) + else if( pxStateList == &xSuspendedTaskList ) + { + /* The task being queried is referenced from the suspended + list. Is it genuinely suspended or is it blocked + indefinitely? */ + if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL ) + { + #if( configUSE_TASK_NOTIFICATIONS == 1 ) + { + /* The task does not appear on the event list item of + and of the RTOS objects, but could still be in the + blocked state if it is waiting on its notification + rather than waiting on an object. */ + if( pxTCB->ucNotifyState == taskWAITING_NOTIFICATION ) + { + eReturn = eBlocked; + } + else + { + eReturn = eSuspended; + } + } + #else + { + eReturn = eSuspended; + } + #endif + } + else + { + eReturn = eBlocked; + } + } + #endif + + #if ( INCLUDE_vTaskDelete == 1 ) + else if( ( pxStateList == &xTasksWaitingTermination ) || ( pxStateList == NULL ) ) + { + /* The task being queried is referenced from the deleted + tasks list, or it is not referenced from any lists at + all. */ + eReturn = eDeleted; + } + #endif + + else /*lint !e525 Negative indentation is intended to make use of pre-processor clearer. */ + { + /* If the task is not in any other state, it must be in the + Ready (including pending ready) state. */ + eReturn = eReady; + } + } + + return eReturn; + } /*lint !e818 xTask cannot be a pointer to const because it is a typedef. */ + +#endif /* INCLUDE_eTaskGetState */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_uxTaskPriorityGet == 1 ) + + UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask ) + { + TCB_t const *pxTCB; + UBaseType_t uxReturn; + + taskENTER_CRITICAL(); + { + /* If null is passed in here then it is the priority of the task + that called uxTaskPriorityGet() that is being queried. */ + pxTCB = prvGetTCBFromHandle( xTask ); + uxReturn = pxTCB->uxPriority; + } + taskEXIT_CRITICAL(); + + return uxReturn; + } + +#endif /* INCLUDE_uxTaskPriorityGet */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_uxTaskPriorityGet == 1 ) + + UBaseType_t uxTaskPriorityGetFromISR( const TaskHandle_t xTask ) + { + TCB_t const *pxTCB; + UBaseType_t uxReturn, uxSavedInterruptState; + + /* RTOS ports that support interrupt nesting have the concept of a + maximum system call (or maximum API call) interrupt priority. + Interrupts that are above the maximum system call priority are keep + permanently enabled, even when the RTOS kernel is in a critical section, + but cannot make any calls to FreeRTOS API functions. If configASSERT() + is defined in FreeRTOSConfig.h then + portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has + been assigned a priority above the configured maximum system call + priority. Only FreeRTOS functions that end in FromISR can be called + from interrupts that have been assigned a priority at or (logically) + below the maximum system call interrupt priority. FreeRTOS maintains a + separate interrupt safe API to ensure interrupt entry is as fast and as + simple as possible. More information (albeit Cortex-M specific) is + provided on the following link: + https://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + uxSavedInterruptState = portSET_INTERRUPT_MASK_FROM_ISR(); + { + /* If null is passed in here then it is the priority of the calling + task that is being queried. */ + pxTCB = prvGetTCBFromHandle( xTask ); + uxReturn = pxTCB->uxPriority; + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptState ); + + return uxReturn; + } + +#endif /* INCLUDE_uxTaskPriorityGet */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskPrioritySet == 1 ) + + void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority ) + { + TCB_t *pxTCB; + UBaseType_t uxCurrentBasePriority, uxPriorityUsedOnEntry; + BaseType_t xYieldRequired = pdFALSE; + + configASSERT( ( uxNewPriority < configMAX_PRIORITIES ) ); + + /* Ensure the new priority is valid. */ + if( uxNewPriority >= ( UBaseType_t ) configMAX_PRIORITIES ) + { + uxNewPriority = ( UBaseType_t ) configMAX_PRIORITIES - ( UBaseType_t ) 1U; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + taskENTER_CRITICAL(); + { + /* If null is passed in here then it is the priority of the calling + task that is being changed. */ + pxTCB = prvGetTCBFromHandle( xTask ); + + traceTASK_PRIORITY_SET( pxTCB, uxNewPriority ); + + #if ( configUSE_MUTEXES == 1 ) + { + uxCurrentBasePriority = pxTCB->uxBasePriority; + } + #else + { + uxCurrentBasePriority = pxTCB->uxPriority; + } + #endif + + if( uxCurrentBasePriority != uxNewPriority ) + { + /* The priority change may have readied a task of higher + priority than the calling task. */ + if( uxNewPriority > uxCurrentBasePriority ) + { + if( pxTCB != pxCurrentTCB ) + { + /* The priority of a task other than the currently + running task is being raised. Is the priority being + raised above that of the running task? */ + if( uxNewPriority >= pxCurrentTCB->uxPriority ) + { + xYieldRequired = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* The priority of the running task is being raised, + but the running task must already be the highest + priority task able to run so no yield is required. */ + } + } + else if( pxTCB == pxCurrentTCB ) + { + /* Setting the priority of the running task down means + there may now be another task of higher priority that + is ready to execute. */ + xYieldRequired = pdTRUE; + } + else + { + /* Setting the priority of any other task down does not + require a yield as the running task must be above the + new priority of the task being modified. */ + } + + /* Remember the ready list the task might be referenced from + before its uxPriority member is changed so the + taskRESET_READY_PRIORITY() macro can function correctly. */ + uxPriorityUsedOnEntry = pxTCB->uxPriority; + + #if ( configUSE_MUTEXES == 1 ) + { + /* Only change the priority being used if the task is not + currently using an inherited priority. */ + if( pxTCB->uxBasePriority == pxTCB->uxPriority ) + { + pxTCB->uxPriority = uxNewPriority; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* The base priority gets set whatever. */ + pxTCB->uxBasePriority = uxNewPriority; + } + #else + { + pxTCB->uxPriority = uxNewPriority; + } + #endif + + /* Only reset the event list item value if the value is not + being used for anything else. */ + if( ( listGET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL ) + { + listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxNewPriority ) ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* If the task is in the blocked or suspended list we need do + nothing more than change its priority variable. However, if + the task is in a ready list it needs to be removed and placed + in the list appropriate to its new priority. */ + if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ uxPriorityUsedOnEntry ] ), &( pxTCB->xStateListItem ) ) != pdFALSE ) + { + /* The task is currently in its ready list - remove before + adding it to it's new ready list. As we are in a critical + section we can do this even if the scheduler is suspended. */ + if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + /* It is known that the task is in its ready list so + there is no need to check again and the port level + reset macro can be called directly. */ + portRESET_READY_PRIORITY( uxPriorityUsedOnEntry, uxTopReadyPriority ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + prvAddTaskToReadyList( pxTCB ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( xYieldRequired != pdFALSE ) + { + taskYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Remove compiler warning about unused variables when the port + optimised task selection is not being used. */ + ( void ) uxPriorityUsedOnEntry; + } + } + taskEXIT_CRITICAL(); + } + +#endif /* INCLUDE_vTaskPrioritySet */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskSuspend == 1 ) + + void vTaskSuspend( TaskHandle_t xTaskToSuspend ) + { + TCB_t *pxTCB; + + taskENTER_CRITICAL(); + { + /* If null is passed in here then it is the running task that is + being suspended. */ + pxTCB = prvGetTCBFromHandle( xTaskToSuspend ); + + traceTASK_SUSPEND( pxTCB ); + + /* Remove task from the ready/delayed list and place in the + suspended list. */ + if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + taskRESET_READY_PRIORITY( pxTCB->uxPriority ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Is the task waiting on an event also? */ + if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) + { + ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + vListInsertEnd( &xSuspendedTaskList, &( pxTCB->xStateListItem ) ); + + #if( configUSE_TASK_NOTIFICATIONS == 1 ) + { + if( pxTCB->ucNotifyState == taskWAITING_NOTIFICATION ) + { + /* The task was blocked to wait for a notification, but is + now suspended, so no notification was received. */ + pxTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION; + } + } + #endif + } + taskEXIT_CRITICAL(); + + if( xSchedulerRunning != pdFALSE ) + { + /* Reset the next expected unblock time in case it referred to the + task that is now in the Suspended state. */ + taskENTER_CRITICAL(); + { + prvResetNextTaskUnblockTime(); + } + taskEXIT_CRITICAL(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( pxTCB == pxCurrentTCB ) + { + if( xSchedulerRunning != pdFALSE ) + { + /* The current task has just been suspended. */ + configASSERT( uxSchedulerSuspended == 0 ); + portYIELD_WITHIN_API(); + } + else + { + /* The scheduler is not running, but the task that was pointed + to by pxCurrentTCB has just been suspended and pxCurrentTCB + must be adjusted to point to a different task. */ + if( listCURRENT_LIST_LENGTH( &xSuspendedTaskList ) == uxCurrentNumberOfTasks ) /*lint !e931 Right has no side effect, just volatile. */ + { + /* No other tasks are ready, so set pxCurrentTCB back to + NULL so when the next task is created pxCurrentTCB will + be set to point to it no matter what its relative priority + is. */ + pxCurrentTCB = NULL; + } + else + { + vTaskSwitchContext(); + } + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* INCLUDE_vTaskSuspend */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskSuspend == 1 ) + + static BaseType_t prvTaskIsTaskSuspended( const TaskHandle_t xTask ) + { + BaseType_t xReturn = pdFALSE; + const TCB_t * const pxTCB = xTask; + + /* Accesses xPendingReadyList so must be called from a critical + section. */ + + /* It does not make sense to check if the calling task is suspended. */ + configASSERT( xTask ); + + /* Is the task being resumed actually in the suspended list? */ + if( listIS_CONTAINED_WITHIN( &xSuspendedTaskList, &( pxTCB->xStateListItem ) ) != pdFALSE ) + { + /* Has the task already been resumed from within an ISR? */ + if( listIS_CONTAINED_WITHIN( &xPendingReadyList, &( pxTCB->xEventListItem ) ) == pdFALSE ) + { + /* Is it in the suspended list because it is in the Suspended + state, or because is is blocked with no timeout? */ + if( listIS_CONTAINED_WITHIN( NULL, &( pxTCB->xEventListItem ) ) != pdFALSE ) /*lint !e961. The cast is only redundant when NULL is used. */ + { + xReturn = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xReturn; + } /*lint !e818 xTask cannot be a pointer to const because it is a typedef. */ + +#endif /* INCLUDE_vTaskSuspend */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskSuspend == 1 ) + + void vTaskResume( TaskHandle_t xTaskToResume ) + { + TCB_t * const pxTCB = xTaskToResume; + + /* It does not make sense to resume the calling task. */ + configASSERT( xTaskToResume ); + + /* The parameter cannot be NULL as it is impossible to resume the + currently executing task. */ + if( ( pxTCB != pxCurrentTCB ) && ( pxTCB != NULL ) ) + { + taskENTER_CRITICAL(); + { + if( prvTaskIsTaskSuspended( pxTCB ) != pdFALSE ) + { + traceTASK_RESUME( pxTCB ); + + /* The ready list can be accessed even if the scheduler is + suspended because this is inside a critical section. */ + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxTCB ); + + /* A higher priority task may have just been resumed. */ + if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) + { + /* This yield may not cause the task just resumed to run, + but will leave the lists in the correct state for the + next yield. */ + taskYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* INCLUDE_vTaskSuspend */ + +/*-----------------------------------------------------------*/ + +#if ( ( INCLUDE_xTaskResumeFromISR == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) ) + + BaseType_t xTaskResumeFromISR( TaskHandle_t xTaskToResume ) + { + BaseType_t xYieldRequired = pdFALSE; + TCB_t * const pxTCB = xTaskToResume; + UBaseType_t uxSavedInterruptStatus; + + configASSERT( xTaskToResume ); + + /* RTOS ports that support interrupt nesting have the concept of a + maximum system call (or maximum API call) interrupt priority. + Interrupts that are above the maximum system call priority are keep + permanently enabled, even when the RTOS kernel is in a critical section, + but cannot make any calls to FreeRTOS API functions. If configASSERT() + is defined in FreeRTOSConfig.h then + portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has + been assigned a priority above the configured maximum system call + priority. Only FreeRTOS functions that end in FromISR can be called + from interrupts that have been assigned a priority at or (logically) + below the maximum system call interrupt priority. FreeRTOS maintains a + separate interrupt safe API to ensure interrupt entry is as fast and as + simple as possible. More information (albeit Cortex-M specific) is + provided on the following link: + https://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + if( prvTaskIsTaskSuspended( pxTCB ) != pdFALSE ) + { + traceTASK_RESUME_FROM_ISR( pxTCB ); + + /* Check the ready lists can be accessed. */ + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + /* Ready lists can be accessed so move the task from the + suspended list to the ready list directly. */ + if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) + { + xYieldRequired = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxTCB ); + } + else + { + /* The delayed or ready lists cannot be accessed so the task + is held in the pending ready list until the scheduler is + unsuspended. */ + vListInsertEnd( &( xPendingReadyList ), &( pxTCB->xEventListItem ) ); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xYieldRequired; + } + +#endif /* ( ( INCLUDE_xTaskResumeFromISR == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) ) */ +/*-----------------------------------------------------------*/ + +void vTaskStartScheduler( void ) +{ +BaseType_t xReturn; + + /* Add the idle task at the lowest priority. */ + #if( configSUPPORT_STATIC_ALLOCATION == 1 ) + { + StaticTask_t *pxIdleTaskTCBBuffer = NULL; + StackType_t *pxIdleTaskStackBuffer = NULL; + uint32_t ulIdleTaskStackSize; + + /* The Idle task is created using user provided RAM - obtain the + address of the RAM then create the idle task. */ + vApplicationGetIdleTaskMemory( &pxIdleTaskTCBBuffer, &pxIdleTaskStackBuffer, &ulIdleTaskStackSize ); + xIdleTaskHandle = xTaskCreateStatic( prvIdleTask, + configIDLE_TASK_NAME, + ulIdleTaskStackSize, + ( void * ) NULL, /*lint !e961. The cast is not redundant for all compilers. */ + portPRIVILEGE_BIT, /* In effect ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), but tskIDLE_PRIORITY is zero. */ + pxIdleTaskStackBuffer, + pxIdleTaskTCBBuffer ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */ + + if( xIdleTaskHandle != NULL ) + { + xReturn = pdPASS; + } + else + { + xReturn = pdFAIL; + } + } + #else + { + /* The Idle task is being created using dynamically allocated RAM. */ + xReturn = xTaskCreate( prvIdleTask, + configIDLE_TASK_NAME, + configMINIMAL_STACK_SIZE, + ( void * ) NULL, + portPRIVILEGE_BIT, /* In effect ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), but tskIDLE_PRIORITY is zero. */ + &xIdleTaskHandle ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */ + } + #endif /* configSUPPORT_STATIC_ALLOCATION */ + + #if ( configUSE_TIMERS == 1 ) + { + if( xReturn == pdPASS ) + { + xReturn = xTimerCreateTimerTask(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_TIMERS */ + + if( xReturn == pdPASS ) + { + /* freertos_tasks_c_additions_init() should only be called if the user + definable macro FREERTOS_TASKS_C_ADDITIONS_INIT() is defined, as that is + the only macro called by the function. */ + #ifdef FREERTOS_TASKS_C_ADDITIONS_INIT + { + freertos_tasks_c_additions_init(); + } + #endif + + /* Interrupts are turned off here, to ensure a tick does not occur + before or during the call to xPortStartScheduler(). The stacks of + the created tasks contain a status word with interrupts switched on + so interrupts will automatically get re-enabled when the first task + starts to run. */ + portDISABLE_INTERRUPTS(); + + #if ( configUSE_NEWLIB_REENTRANT == 1 ) + { + /* Switch Newlib's _impure_ptr variable to point to the _reent + structure specific to the task that will run first. */ + _impure_ptr = &( pxCurrentTCB->xNewLib_reent ); + } + #endif /* configUSE_NEWLIB_REENTRANT */ + + xNextTaskUnblockTime = portMAX_DELAY; + xSchedulerRunning = pdTRUE; + xTickCount = ( TickType_t ) configINITIAL_TICK_COUNT; + + /* If configGENERATE_RUN_TIME_STATS is defined then the following + macro must be defined to configure the timer/counter used to generate + the run time counter time base. NOTE: If configGENERATE_RUN_TIME_STATS + is set to 0 and the following line fails to build then ensure you do not + have portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() defined in your + FreeRTOSConfig.h file. */ + portCONFIGURE_TIMER_FOR_RUN_TIME_STATS(); + + traceTASK_SWITCHED_IN(); + + /* Setting up the timer tick is hardware specific and thus in the + portable interface. */ + if( xPortStartScheduler() != pdFALSE ) + { + /* Should not reach here as if the scheduler is running the + function will not return. */ + } + else + { + /* Should only reach here if a task calls xTaskEndScheduler(). */ + } + } + else + { + /* This line will only be reached if the kernel could not be started, + because there was not enough FreeRTOS heap to create the idle task + or the timer task. */ + configASSERT( xReturn != errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY ); + } + + /* Prevent compiler warnings if INCLUDE_xTaskGetIdleTaskHandle is set to 0, + meaning xIdleTaskHandle is not used anywhere else. */ + ( void ) xIdleTaskHandle; +} +/*-----------------------------------------------------------*/ + +void vTaskEndScheduler( void ) +{ + /* Stop the scheduler interrupts and call the portable scheduler end + routine so the original ISRs can be restored if necessary. The port + layer must ensure interrupts enable bit is left in the correct state. */ + portDISABLE_INTERRUPTS(); + xSchedulerRunning = pdFALSE; + vPortEndScheduler(); +} +/*----------------------------------------------------------*/ + +void vTaskSuspendAll( void ) +{ + /* A critical section is not required as the variable is of type + BaseType_t. Please read Richard Barry's reply in the following link to a + post in the FreeRTOS support forum before reporting this as a bug! - + http://goo.gl/wu4acr */ + ++uxSchedulerSuspended; + portMEMORY_BARRIER(); +} +/*----------------------------------------------------------*/ + +#if ( configUSE_TICKLESS_IDLE != 0 ) + + static TickType_t prvGetExpectedIdleTime( void ) + { + TickType_t xReturn; + UBaseType_t uxHigherPriorityReadyTasks = pdFALSE; + + /* uxHigherPriorityReadyTasks takes care of the case where + configUSE_PREEMPTION is 0, so there may be tasks above the idle priority + task that are in the Ready state, even though the idle task is + running. */ + #if( configUSE_PORT_OPTIMISED_TASK_SELECTION == 0 ) + { + if( uxTopReadyPriority > tskIDLE_PRIORITY ) + { + uxHigherPriorityReadyTasks = pdTRUE; + } + } + #else + { + const UBaseType_t uxLeastSignificantBit = ( UBaseType_t ) 0x01; + + /* When port optimised task selection is used the uxTopReadyPriority + variable is used as a bit map. If bits other than the least + significant bit are set then there are tasks that have a priority + above the idle priority that are in the Ready state. This takes + care of the case where the co-operative scheduler is in use. */ + if( uxTopReadyPriority > uxLeastSignificantBit ) + { + uxHigherPriorityReadyTasks = pdTRUE; + } + } + #endif + + if( pxCurrentTCB->uxPriority > tskIDLE_PRIORITY ) + { + xReturn = 0; + } + else if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > 1 ) + { + /* There are other idle priority tasks in the ready state. If + time slicing is used then the very next tick interrupt must be + processed. */ + xReturn = 0; + } + else if( uxHigherPriorityReadyTasks != pdFALSE ) + { + /* There are tasks in the Ready state that have a priority above the + idle priority. This path can only be reached if + configUSE_PREEMPTION is 0. */ + xReturn = 0; + } + else + { + xReturn = xNextTaskUnblockTime - xTickCount; + } + + return xReturn; + } + +#endif /* configUSE_TICKLESS_IDLE */ +/*----------------------------------------------------------*/ + +BaseType_t xTaskResumeAll( void ) +{ +TCB_t *pxTCB = NULL; +BaseType_t xAlreadyYielded = pdFALSE; +TickType_t xTicksToNextUnblockTime; + + /* If uxSchedulerSuspended is zero then this function does not match a + previous call to vTaskSuspendAll(). */ + configASSERT( uxSchedulerSuspended ); + + /* It is possible that an ISR caused a task to be removed from an event + list while the scheduler was suspended. If this was the case then the + removed task will have been added to the xPendingReadyList. Once the + scheduler has been resumed it is safe to move all the pending ready + tasks from this list into their appropriate ready list. */ + taskENTER_CRITICAL(); + { + --uxSchedulerSuspended; + + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + if( uxCurrentNumberOfTasks > ( UBaseType_t ) 0U ) + { + /* Move any readied tasks from the pending list into the + appropriate ready list. */ + while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE ) + { + pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingReadyList ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxTCB ); + + /* If the moved task has a priority higher than the current + task then a yield must be performed. */ + if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) + { + xYieldPending = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + if( pxTCB != NULL ) + { + /* A task was unblocked while the scheduler was suspended, + which may have prevented the next unblock time from being + re-calculated, in which case re-calculate it now. Mainly + important for low power tickless implementations, where + this can prevent an unnecessary exit from low power + state. */ + prvResetNextTaskUnblockTime(); + } + + /* If any ticks occurred while the scheduler was suspended then + they should be processed now. This ensures the tick count does + not slip, and that any delayed tasks are resumed at the correct + time. */ + while( xPendedTicks > ( TickType_t ) 0 ) + { + /* Calculate how far into the future the next task will + leave the Blocked state because its timeout expired. If + there are no tasks due to leave the blocked state between + the time now and the time at which the tick count overflows + then xNextTaskUnblockTime will the tick overflow time. + This means xNextTaskUnblockTime can never be less than + xTickCount, and the following can therefore not + underflow. */ + configASSERT( xNextTaskUnblockTime >= xTickCount ); + xTicksToNextUnblockTime = xNextTaskUnblockTime - xTickCount; + + /* Don't want to move the tick count more than the number + of ticks that are pending, so cap if necessary. */ + if( xTicksToNextUnblockTime > xPendedTicks ) + { + xTicksToNextUnblockTime = xPendedTicks; + } + + if( xTicksToNextUnblockTime == 0 ) + { + /* xTicksToNextUnblockTime could be zero if the tick + count is about to overflow and xTicksToNetUnblockTime + holds the time at which the tick count will overflow + (rather than the time at which the next task will + unblock). Set to 1 otherwise xPendedTicks won't be + decremented below. */ + xTicksToNextUnblockTime = ( TickType_t ) 1; + } + else if( xTicksToNextUnblockTime > ( TickType_t ) 1 ) + { + /* Move the tick count one short of the next unblock + time, then call xTaskIncrementTick() to move the tick + count up to the next unblock time to unblock the task, + if any. This will also swap the blocked task and + overflow blocked task lists if necessary. */ + xTickCount += ( xTicksToNextUnblockTime - ( TickType_t ) 1 ); + } + xYieldPending |= xTaskIncrementTick(); + + /* Adjust for the number of ticks just added to + xTickCount and go around the loop again if + xTicksToCatchUp is still greater than 0. */ + xPendedTicks -= xTicksToNextUnblockTime; + } + + if( xYieldPending != pdFALSE ) + { + #if( configUSE_PREEMPTION != 0 ) + { + xAlreadyYielded = pdTRUE; + } + #endif + taskYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + return xAlreadyYielded; +} +/*-----------------------------------------------------------*/ + +TickType_t xTaskGetTickCount( void ) +{ +TickType_t xTicks; + + /* Critical section required if running on a 16 bit processor. */ + portTICK_TYPE_ENTER_CRITICAL(); + { + xTicks = xTickCount; + } + portTICK_TYPE_EXIT_CRITICAL(); + + return xTicks; +} +/*-----------------------------------------------------------*/ + +TickType_t xTaskGetTickCountFromISR( void ) +{ +TickType_t xReturn; +UBaseType_t uxSavedInterruptStatus; + + /* RTOS ports that support interrupt nesting have the concept of a maximum + system call (or maximum API call) interrupt priority. Interrupts that are + above the maximum system call priority are kept permanently enabled, even + when the RTOS kernel is in a critical section, but cannot make any calls to + FreeRTOS API functions. If configASSERT() is defined in FreeRTOSConfig.h + then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has been + assigned a priority above the configured maximum system call priority. + Only FreeRTOS functions that end in FromISR can be called from interrupts + that have been assigned a priority at or (logically) below the maximum + system call interrupt priority. FreeRTOS maintains a separate interrupt + safe API to ensure interrupt entry is as fast and as simple as possible. + More information (albeit Cortex-M specific) is provided on the following + link: https://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + uxSavedInterruptStatus = portTICK_TYPE_SET_INTERRUPT_MASK_FROM_ISR(); + { + xReturn = xTickCount; + } + portTICK_TYPE_CLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +UBaseType_t uxTaskGetNumberOfTasks( void ) +{ + /* A critical section is not required because the variables are of type + BaseType_t. */ + return uxCurrentNumberOfTasks; +} +/*-----------------------------------------------------------*/ + +char *pcTaskGetName( TaskHandle_t xTaskToQuery ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ +{ +TCB_t *pxTCB; + + /* If null is passed in here then the name of the calling task is being + queried. */ + pxTCB = prvGetTCBFromHandle( xTaskToQuery ); + configASSERT( pxTCB ); + return &( pxTCB->pcTaskName[ 0 ] ); +} +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_xTaskGetHandle == 1 ) + + static TCB_t *prvSearchForNameWithinSingleList( List_t *pxList, const char pcNameToQuery[] ) + { + TCB_t *pxNextTCB, *pxFirstTCB, *pxReturn = NULL; + UBaseType_t x; + char cNextChar; + BaseType_t xBreakLoop; + + /* This function is called with the scheduler suspended. */ + + if( listCURRENT_LIST_LENGTH( pxList ) > ( UBaseType_t ) 0 ) + { + listGET_OWNER_OF_NEXT_ENTRY( pxFirstTCB, pxList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + + do + { + listGET_OWNER_OF_NEXT_ENTRY( pxNextTCB, pxList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + + /* Check each character in the name looking for a match or + mismatch. */ + xBreakLoop = pdFALSE; + for( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ ) + { + cNextChar = pxNextTCB->pcTaskName[ x ]; + + if( cNextChar != pcNameToQuery[ x ] ) + { + /* Characters didn't match. */ + xBreakLoop = pdTRUE; + } + else if( cNextChar == ( char ) 0x00 ) + { + /* Both strings terminated, a match must have been + found. */ + pxReturn = pxNextTCB; + xBreakLoop = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( xBreakLoop != pdFALSE ) + { + break; + } + } + + if( pxReturn != NULL ) + { + /* The handle has been found. */ + break; + } + + } while( pxNextTCB != pxFirstTCB ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return pxReturn; + } + +#endif /* INCLUDE_xTaskGetHandle */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_xTaskGetHandle == 1 ) + + TaskHandle_t xTaskGetHandle( const char *pcNameToQuery ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + { + UBaseType_t uxQueue = configMAX_PRIORITIES; + TCB_t* pxTCB; + + /* Task names will be truncated to configMAX_TASK_NAME_LEN - 1 bytes. */ + configASSERT( strlen( pcNameToQuery ) < configMAX_TASK_NAME_LEN ); + + vTaskSuspendAll(); + { + /* Search the ready lists. */ + do + { + uxQueue--; + pxTCB = prvSearchForNameWithinSingleList( ( List_t * ) &( pxReadyTasksLists[ uxQueue ] ), pcNameToQuery ); + + if( pxTCB != NULL ) + { + /* Found the handle. */ + break; + } + + } while( uxQueue > ( UBaseType_t ) tskIDLE_PRIORITY ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + + /* Search the delayed lists. */ + if( pxTCB == NULL ) + { + pxTCB = prvSearchForNameWithinSingleList( ( List_t * ) pxDelayedTaskList, pcNameToQuery ); + } + + if( pxTCB == NULL ) + { + pxTCB = prvSearchForNameWithinSingleList( ( List_t * ) pxOverflowDelayedTaskList, pcNameToQuery ); + } + + #if ( INCLUDE_vTaskSuspend == 1 ) + { + if( pxTCB == NULL ) + { + /* Search the suspended list. */ + pxTCB = prvSearchForNameWithinSingleList( &xSuspendedTaskList, pcNameToQuery ); + } + } + #endif + + #if( INCLUDE_vTaskDelete == 1 ) + { + if( pxTCB == NULL ) + { + /* Search the deleted list. */ + pxTCB = prvSearchForNameWithinSingleList( &xTasksWaitingTermination, pcNameToQuery ); + } + } + #endif + } + ( void ) xTaskResumeAll(); + + return pxTCB; + } + +#endif /* INCLUDE_xTaskGetHandle */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + UBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime ) + { + UBaseType_t uxTask = 0, uxQueue = configMAX_PRIORITIES; + + vTaskSuspendAll(); + { + /* Is there a space in the array for each task in the system? */ + if( uxArraySize >= uxCurrentNumberOfTasks ) + { + /* Fill in an TaskStatus_t structure with information on each + task in the Ready state. */ + do + { + uxQueue--; + uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &( pxReadyTasksLists[ uxQueue ] ), eReady ); + + } while( uxQueue > ( UBaseType_t ) tskIDLE_PRIORITY ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + + /* Fill in an TaskStatus_t structure with information on each + task in the Blocked state. */ + uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), ( List_t * ) pxDelayedTaskList, eBlocked ); + uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), ( List_t * ) pxOverflowDelayedTaskList, eBlocked ); + + #if( INCLUDE_vTaskDelete == 1 ) + { + /* Fill in an TaskStatus_t structure with information on + each task that has been deleted but not yet cleaned up. */ + uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &xTasksWaitingTermination, eDeleted ); + } + #endif + + #if ( INCLUDE_vTaskSuspend == 1 ) + { + /* Fill in an TaskStatus_t structure with information on + each task in the Suspended state. */ + uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &xSuspendedTaskList, eSuspended ); + } + #endif + + #if ( configGENERATE_RUN_TIME_STATS == 1) + { + if( pulTotalRunTime != NULL ) + { + #ifdef portALT_GET_RUN_TIME_COUNTER_VALUE + portALT_GET_RUN_TIME_COUNTER_VALUE( ( *pulTotalRunTime ) ); + #else + *pulTotalRunTime = portGET_RUN_TIME_COUNTER_VALUE(); + #endif + } + } + #else + { + if( pulTotalRunTime != NULL ) + { + *pulTotalRunTime = 0; + } + } + #endif + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + ( void ) xTaskResumeAll(); + + return uxTask; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*----------------------------------------------------------*/ + +#if ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) + + TaskHandle_t xTaskGetIdleTaskHandle( void ) + { + /* If xTaskGetIdleTaskHandle() is called before the scheduler has been + started, then xIdleTaskHandle will be NULL. */ + configASSERT( ( xIdleTaskHandle != NULL ) ); + return xIdleTaskHandle; + } + +#endif /* INCLUDE_xTaskGetIdleTaskHandle */ +/*----------------------------------------------------------*/ + +/* This conditional compilation should use inequality to 0, not equality to 1. +This is to ensure vTaskStepTick() is available when user defined low power mode +implementations require configUSE_TICKLESS_IDLE to be set to a value other than +1. */ +#if ( configUSE_TICKLESS_IDLE != 0 ) + + void vTaskStepTick( const TickType_t xTicksToJump ) + { + /* Correct the tick count value after a period during which the tick + was suppressed. Note this does *not* call the tick hook function for + each stepped tick. */ + configASSERT( ( xTickCount + xTicksToJump ) <= xNextTaskUnblockTime ); + xTickCount += xTicksToJump; + traceINCREASE_TICK_COUNT( xTicksToJump ); + } + +#endif /* configUSE_TICKLESS_IDLE */ +/*----------------------------------------------------------*/ + +BaseType_t xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) +{ +BaseType_t xYieldRequired = pdFALSE; + + /* Must not be called with the scheduler suspended as the implementation + relies on xPendedTicks being wound down to 0 in xTaskResumeAll(). */ + configASSERT( uxSchedulerSuspended == 0 ); + + /* Use xPendedTicks to mimic xTicksToCatchUp number of ticks occuring when + the scheduler is suspended so the ticks are executed in xTaskResumeAll(). */ + vTaskSuspendAll(); + xPendedTicks += xTicksToCatchUp; + xYieldRequired = xTaskResumeAll(); + + return xYieldRequired; +} +/*----------------------------------------------------------*/ + +#if ( INCLUDE_xTaskAbortDelay == 1 ) + + BaseType_t xTaskAbortDelay( TaskHandle_t xTask ) + { + TCB_t *pxTCB = xTask; + BaseType_t xReturn; + + configASSERT( pxTCB ); + + vTaskSuspendAll(); + { + /* A task can only be prematurely removed from the Blocked state if + it is actually in the Blocked state. */ + if( eTaskGetState( xTask ) == eBlocked ) + { + xReturn = pdPASS; + + /* Remove the reference to the task from the blocked list. An + interrupt won't touch the xStateListItem because the + scheduler is suspended. */ + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + + /* Is the task waiting on an event also? If so remove it from + the event list too. Interrupts can touch the event list item, + even though the scheduler is suspended, so a critical section + is used. */ + taskENTER_CRITICAL(); + { + if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) + { + ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); + pxTCB->ucDelayAborted = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + /* Place the unblocked task into the appropriate ready list. */ + prvAddTaskToReadyList( pxTCB ); + + /* A task being unblocked cannot cause an immediate context + switch if preemption is turned off. */ + #if ( configUSE_PREEMPTION == 1 ) + { + /* Preemption is on, but a context switch should only be + performed if the unblocked task has a priority that is + equal to or higher than the currently executing task. */ + if( pxTCB->uxPriority > pxCurrentTCB->uxPriority ) + { + /* Pend the yield to be performed when the scheduler + is unsuspended. */ + xYieldPending = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_PREEMPTION */ + } + else + { + xReturn = pdFAIL; + } + } + ( void ) xTaskResumeAll(); + + return xReturn; + } + +#endif /* INCLUDE_xTaskAbortDelay */ +/*----------------------------------------------------------*/ + +BaseType_t xTaskIncrementTick( void ) +{ +TCB_t * pxTCB; +TickType_t xItemValue; +BaseType_t xSwitchRequired = pdFALSE; + + /* Called by the portable layer each time a tick interrupt occurs. + Increments the tick then checks to see if the new tick value will cause any + tasks to be unblocked. */ + traceTASK_INCREMENT_TICK( xTickCount ); + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + /* Minor optimisation. The tick count cannot change in this + block. */ + const TickType_t xConstTickCount = xTickCount + ( TickType_t ) 1; + + /* Increment the RTOS tick, switching the delayed and overflowed + delayed lists if it wraps to 0. */ + xTickCount = xConstTickCount; + + if( xConstTickCount == ( TickType_t ) 0U ) /*lint !e774 'if' does not always evaluate to false as it is looking for an overflow. */ + { + taskSWITCH_DELAYED_LISTS(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* See if this tick has made a timeout expire. Tasks are stored in + the queue in the order of their wake time - meaning once one task + has been found whose block time has not expired there is no need to + look any further down the list. */ + if( xConstTickCount >= xNextTaskUnblockTime ) + { + for( ;; ) + { + if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) + { + /* The delayed list is empty. Set xNextTaskUnblockTime + to the maximum possible value so it is extremely + unlikely that the + if( xTickCount >= xNextTaskUnblockTime ) test will pass + next time through. */ + xNextTaskUnblockTime = portMAX_DELAY; /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + break; + } + else + { + /* The delayed list is not empty, get the value of the + item at the head of the delayed list. This is the time + at which the task at the head of the delayed list must + be removed from the Blocked state. */ + pxTCB = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + xItemValue = listGET_LIST_ITEM_VALUE( &( pxTCB->xStateListItem ) ); + + if( xConstTickCount < xItemValue ) + { + /* It is not time to unblock this item yet, but the + item value is the time at which the task at the head + of the blocked list must be removed from the Blocked + state - so record the item value in + xNextTaskUnblockTime. */ + xNextTaskUnblockTime = xItemValue; + break; /*lint !e9011 Code structure here is deedmed easier to understand with multiple breaks. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* It is time to remove the item from the Blocked state. */ + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + + /* Is the task waiting on an event also? If so remove + it from the event list. */ + if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) + { + ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Place the unblocked task into the appropriate ready + list. */ + prvAddTaskToReadyList( pxTCB ); + + /* A task being unblocked cannot cause an immediate + context switch if preemption is turned off. */ + #if ( configUSE_PREEMPTION == 1 ) + { + /* Preemption is on, but a context switch should + only be performed if the unblocked task has a + priority that is equal to or higher than the + currently executing task. */ + if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) + { + xSwitchRequired = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_PREEMPTION */ + } + } + } + + /* Tasks of equal priority to the currently running task will share + processing time (time slice) if preemption is on, and the application + writer has not explicitly turned time slicing off. */ + #if ( ( configUSE_PREEMPTION == 1 ) && ( configUSE_TIME_SLICING == 1 ) ) + { + if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ pxCurrentTCB->uxPriority ] ) ) > ( UBaseType_t ) 1 ) + { + xSwitchRequired = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* ( ( configUSE_PREEMPTION == 1 ) && ( configUSE_TIME_SLICING == 1 ) ) */ + + #if ( configUSE_TICK_HOOK == 1 ) + { + /* Guard against the tick hook being called when the pended tick + count is being unwound (when the scheduler is being unlocked). */ + if( xPendedTicks == ( TickType_t ) 0 ) + { + vApplicationTickHook(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_TICK_HOOK */ + } + else + { + ++xPendedTicks; + + /* The tick hook gets called at regular intervals, even if the + scheduler is locked. */ + #if ( configUSE_TICK_HOOK == 1 ) + { + vApplicationTickHook(); + } + #endif + } + + #if ( configUSE_PREEMPTION == 1 ) + { + if( xYieldPending != pdFALSE ) + { + xSwitchRequired = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_PREEMPTION */ + + return xSwitchRequired; +} +/*-----------------------------------------------------------*/ + +#if ( configUSE_APPLICATION_TASK_TAG == 1 ) + + void vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction ) + { + TCB_t *xTCB; + + /* If xTask is NULL then it is the task hook of the calling task that is + getting set. */ + if( xTask == NULL ) + { + xTCB = ( TCB_t * ) pxCurrentTCB; + } + else + { + xTCB = xTask; + } + + /* Save the hook function in the TCB. A critical section is required as + the value can be accessed from an interrupt. */ + taskENTER_CRITICAL(); + { + xTCB->pxTaskTag = pxHookFunction; + } + taskEXIT_CRITICAL(); + } + +#endif /* configUSE_APPLICATION_TASK_TAG */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_APPLICATION_TASK_TAG == 1 ) + + TaskHookFunction_t xTaskGetApplicationTaskTag( TaskHandle_t xTask ) + { + TCB_t *pxTCB; + TaskHookFunction_t xReturn; + + /* If xTask is NULL then set the calling task's hook. */ + pxTCB = prvGetTCBFromHandle( xTask ); + + /* Save the hook function in the TCB. A critical section is required as + the value can be accessed from an interrupt. */ + taskENTER_CRITICAL(); + { + xReturn = pxTCB->pxTaskTag; + } + taskEXIT_CRITICAL(); + + return xReturn; + } + +#endif /* configUSE_APPLICATION_TASK_TAG */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_APPLICATION_TASK_TAG == 1 ) + + TaskHookFunction_t xTaskGetApplicationTaskTagFromISR( TaskHandle_t xTask ) + { + TCB_t *pxTCB; + TaskHookFunction_t xReturn; + UBaseType_t uxSavedInterruptStatus; + + /* If xTask is NULL then set the calling task's hook. */ + pxTCB = prvGetTCBFromHandle( xTask ); + + /* Save the hook function in the TCB. A critical section is required as + the value can be accessed from an interrupt. */ + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + xReturn = pxTCB->pxTaskTag; + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; + } + +#endif /* configUSE_APPLICATION_TASK_TAG */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_APPLICATION_TASK_TAG == 1 ) + + BaseType_t xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter ) + { + TCB_t *xTCB; + BaseType_t xReturn; + + /* If xTask is NULL then we are calling our own task hook. */ + if( xTask == NULL ) + { + xTCB = pxCurrentTCB; + } + else + { + xTCB = xTask; + } + + if( xTCB->pxTaskTag != NULL ) + { + xReturn = xTCB->pxTaskTag( pvParameter ); + } + else + { + xReturn = pdFAIL; + } + + return xReturn; + } + +#endif /* configUSE_APPLICATION_TASK_TAG */ +/*-----------------------------------------------------------*/ + +void vTaskSwitchContext( void ) +{ + if( uxSchedulerSuspended != ( UBaseType_t ) pdFALSE ) + { + /* The scheduler is currently suspended - do not allow a context + switch. */ + xYieldPending = pdTRUE; + } + else + { + xYieldPending = pdFALSE; + traceTASK_SWITCHED_OUT(); + + #if ( configGENERATE_RUN_TIME_STATS == 1 ) + { + #ifdef portALT_GET_RUN_TIME_COUNTER_VALUE + portALT_GET_RUN_TIME_COUNTER_VALUE( ulTotalRunTime ); + #else + ulTotalRunTime = portGET_RUN_TIME_COUNTER_VALUE(); + #endif + + /* Add the amount of time the task has been running to the + accumulated time so far. The time the task started running was + stored in ulTaskSwitchedInTime. Note that there is no overflow + protection here so count values are only valid until the timer + overflows. The guard against negative values is to protect + against suspect run time stat counter implementations - which + are provided by the application, not the kernel. */ + if( ulTotalRunTime > ulTaskSwitchedInTime ) + { + pxCurrentTCB->ulRunTimeCounter += ( ulTotalRunTime - ulTaskSwitchedInTime ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + ulTaskSwitchedInTime = ulTotalRunTime; + } + #endif /* configGENERATE_RUN_TIME_STATS */ + + /* Check for stack overflow, if configured. */ + taskCHECK_FOR_STACK_OVERFLOW(); + + /* Before the currently running task is switched out, save its errno. */ + #if( configUSE_POSIX_ERRNO == 1 ) + { + pxCurrentTCB->iTaskErrno = FreeRTOS_errno; + } + #endif + + /* Select a new task to run using either the generic C or port + optimised asm code. */ + taskSELECT_HIGHEST_PRIORITY_TASK(); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + traceTASK_SWITCHED_IN(); + + /* After the new task is switched in, update the global errno. */ + #if( configUSE_POSIX_ERRNO == 1 ) + { + FreeRTOS_errno = pxCurrentTCB->iTaskErrno; + } + #endif + + #if ( configUSE_NEWLIB_REENTRANT == 1 ) + { + /* Switch Newlib's _impure_ptr variable to point to the _reent + structure specific to this task. */ + _impure_ptr = &( pxCurrentTCB->xNewLib_reent ); + } + #endif /* configUSE_NEWLIB_REENTRANT */ + } +} +/*-----------------------------------------------------------*/ + +void vTaskPlaceOnEventList( List_t * const pxEventList, const TickType_t xTicksToWait ) +{ + configASSERT( pxEventList ); + + /* THIS FUNCTION MUST BE CALLED WITH EITHER INTERRUPTS DISABLED OR THE + SCHEDULER SUSPENDED AND THE QUEUE BEING ACCESSED LOCKED. */ + + /* Place the event list item of the TCB in the appropriate event list. + This is placed in the list in priority order so the highest priority task + is the first to be woken by the event. The queue that contains the event + list is locked, preventing simultaneous access from interrupts. */ + vListInsert( pxEventList, &( pxCurrentTCB->xEventListItem ) ); + + prvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE ); +} +/*-----------------------------------------------------------*/ + +void vTaskPlaceOnUnorderedEventList( List_t * pxEventList, const TickType_t xItemValue, const TickType_t xTicksToWait ) +{ + configASSERT( pxEventList ); + + /* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED. It is used by + the event groups implementation. */ + configASSERT( uxSchedulerSuspended != 0 ); + + /* Store the item value in the event list item. It is safe to access the + event list item here as interrupts won't access the event list item of a + task that is not in the Blocked state. */ + listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xEventListItem ), xItemValue | taskEVENT_LIST_ITEM_VALUE_IN_USE ); + + /* Place the event list item of the TCB at the end of the appropriate event + list. It is safe to access the event list here because it is part of an + event group implementation - and interrupts don't access event groups + directly (instead they access them indirectly by pending function calls to + the task level). */ + vListInsertEnd( pxEventList, &( pxCurrentTCB->xEventListItem ) ); + + prvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE ); +} +/*-----------------------------------------------------------*/ + +#if( configUSE_TIMERS == 1 ) + + void vTaskPlaceOnEventListRestricted( List_t * const pxEventList, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely ) + { + configASSERT( pxEventList ); + + /* This function should not be called by application code hence the + 'Restricted' in its name. It is not part of the public API. It is + designed for use by kernel code, and has special calling requirements - + it should be called with the scheduler suspended. */ + + + /* Place the event list item of the TCB in the appropriate event list. + In this case it is assume that this is the only task that is going to + be waiting on this event list, so the faster vListInsertEnd() function + can be used in place of vListInsert. */ + vListInsertEnd( pxEventList, &( pxCurrentTCB->xEventListItem ) ); + + /* If the task should block indefinitely then set the block time to a + value that will be recognised as an indefinite delay inside the + prvAddCurrentTaskToDelayedList() function. */ + if( xWaitIndefinitely != pdFALSE ) + { + xTicksToWait = portMAX_DELAY; + } + + traceTASK_DELAY_UNTIL( ( xTickCount + xTicksToWait ) ); + prvAddCurrentTaskToDelayedList( xTicksToWait, xWaitIndefinitely ); + } + +#endif /* configUSE_TIMERS */ +/*-----------------------------------------------------------*/ + +BaseType_t xTaskRemoveFromEventList( const List_t * const pxEventList ) +{ +TCB_t *pxUnblockedTCB; +BaseType_t xReturn; + + /* THIS FUNCTION MUST BE CALLED FROM A CRITICAL SECTION. It can also be + called from a critical section within an ISR. */ + + /* The event list is sorted in priority order, so the first in the list can + be removed as it is known to be the highest priority. Remove the TCB from + the delayed list, and add it to the ready list. + + If an event is for a queue that is locked then this function will never + get called - the lock count on the queue will get modified instead. This + means exclusive access to the event list is guaranteed here. + + This function assumes that a check has already been made to ensure that + pxEventList is not empty. */ + pxUnblockedTCB = listGET_OWNER_OF_HEAD_ENTRY( pxEventList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + configASSERT( pxUnblockedTCB ); + ( void ) uxListRemove( &( pxUnblockedTCB->xEventListItem ) ); + + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + ( void ) uxListRemove( &( pxUnblockedTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxUnblockedTCB ); + + #if( configUSE_TICKLESS_IDLE != 0 ) + { + /* If a task is blocked on a kernel object then xNextTaskUnblockTime + might be set to the blocked task's time out time. If the task is + unblocked for a reason other than a timeout xNextTaskUnblockTime is + normally left unchanged, because it is automatically reset to a new + value when the tick count equals xNextTaskUnblockTime. However if + tickless idling is used it might be more important to enter sleep mode + at the earliest possible time - so reset xNextTaskUnblockTime here to + ensure it is updated at the earliest possible time. */ + prvResetNextTaskUnblockTime(); + } + #endif + } + else + { + /* The delayed and ready lists cannot be accessed, so hold this task + pending until the scheduler is resumed. */ + vListInsertEnd( &( xPendingReadyList ), &( pxUnblockedTCB->xEventListItem ) ); + } + + if( pxUnblockedTCB->uxPriority > pxCurrentTCB->uxPriority ) + { + /* Return true if the task removed from the event list has a higher + priority than the calling task. This allows the calling task to know if + it should force a context switch now. */ + xReturn = pdTRUE; + + /* Mark that a yield is pending in case the user is not using the + "xHigherPriorityTaskWoken" parameter to an ISR safe FreeRTOS function. */ + xYieldPending = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +void vTaskRemoveFromUnorderedEventList( ListItem_t * pxEventListItem, const TickType_t xItemValue ) +{ +TCB_t *pxUnblockedTCB; + + /* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED. It is used by + the event flags implementation. */ + configASSERT( uxSchedulerSuspended != pdFALSE ); + + /* Store the new item value in the event list. */ + listSET_LIST_ITEM_VALUE( pxEventListItem, xItemValue | taskEVENT_LIST_ITEM_VALUE_IN_USE ); + + /* Remove the event list form the event flag. Interrupts do not access + event flags. */ + pxUnblockedTCB = listGET_LIST_ITEM_OWNER( pxEventListItem ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + configASSERT( pxUnblockedTCB ); + ( void ) uxListRemove( pxEventListItem ); + + /* Remove the task from the delayed list and add it to the ready list. The + scheduler is suspended so interrupts will not be accessing the ready + lists. */ + ( void ) uxListRemove( &( pxUnblockedTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxUnblockedTCB ); + + if( pxUnblockedTCB->uxPriority > pxCurrentTCB->uxPriority ) + { + /* The unblocked task has a priority above that of the calling task, so + a context switch is required. This function is called with the + scheduler suspended so xYieldPending is set so the context switch + occurs immediately that the scheduler is resumed (unsuspended). */ + xYieldPending = pdTRUE; + } +} +/*-----------------------------------------------------------*/ + +void vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) +{ + configASSERT( pxTimeOut ); + taskENTER_CRITICAL(); + { + pxTimeOut->xOverflowCount = xNumOfOverflows; + pxTimeOut->xTimeOnEntering = xTickCount; + } + taskEXIT_CRITICAL(); +} +/*-----------------------------------------------------------*/ + +void vTaskInternalSetTimeOutState( TimeOut_t * const pxTimeOut ) +{ + /* For internal use only as it does not use a critical section. */ + pxTimeOut->xOverflowCount = xNumOfOverflows; + pxTimeOut->xTimeOnEntering = xTickCount; +} +/*-----------------------------------------------------------*/ + +BaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait ) +{ +BaseType_t xReturn; + + configASSERT( pxTimeOut ); + configASSERT( pxTicksToWait ); + + taskENTER_CRITICAL(); + { + /* Minor optimisation. The tick count cannot change in this block. */ + const TickType_t xConstTickCount = xTickCount; + const TickType_t xElapsedTime = xConstTickCount - pxTimeOut->xTimeOnEntering; + + #if( INCLUDE_xTaskAbortDelay == 1 ) + if( pxCurrentTCB->ucDelayAborted != ( uint8_t ) pdFALSE ) + { + /* The delay was aborted, which is not the same as a time out, + but has the same result. */ + pxCurrentTCB->ucDelayAborted = pdFALSE; + xReturn = pdTRUE; + } + else + #endif + + #if ( INCLUDE_vTaskSuspend == 1 ) + if( *pxTicksToWait == portMAX_DELAY ) + { + /* If INCLUDE_vTaskSuspend is set to 1 and the block time + specified is the maximum block time then the task should block + indefinitely, and therefore never time out. */ + xReturn = pdFALSE; + } + else + #endif + + if( ( xNumOfOverflows != pxTimeOut->xOverflowCount ) && ( xConstTickCount >= pxTimeOut->xTimeOnEntering ) ) /*lint !e525 Indentation preferred as is to make code within pre-processor directives clearer. */ + { + /* The tick count is greater than the time at which + vTaskSetTimeout() was called, but has also overflowed since + vTaskSetTimeOut() was called. It must have wrapped all the way + around and gone past again. This passed since vTaskSetTimeout() + was called. */ + xReturn = pdTRUE; + } + else if( xElapsedTime < *pxTicksToWait ) /*lint !e961 Explicit casting is only redundant with some compilers, whereas others require it to prevent integer conversion errors. */ + { + /* Not a genuine timeout. Adjust parameters for time remaining. */ + *pxTicksToWait -= xElapsedTime; + vTaskInternalSetTimeOutState( pxTimeOut ); + xReturn = pdFALSE; + } + else + { + *pxTicksToWait = 0; + xReturn = pdTRUE; + } + } + taskEXIT_CRITICAL(); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +void vTaskMissedYield( void ) +{ + xYieldPending = pdTRUE; +} +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + UBaseType_t uxTaskGetTaskNumber( TaskHandle_t xTask ) + { + UBaseType_t uxReturn; + TCB_t const *pxTCB; + + if( xTask != NULL ) + { + pxTCB = xTask; + uxReturn = pxTCB->uxTaskNumber; + } + else + { + uxReturn = 0U; + } + + return uxReturn; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + void vTaskSetTaskNumber( TaskHandle_t xTask, const UBaseType_t uxHandle ) + { + TCB_t * pxTCB; + + if( xTask != NULL ) + { + pxTCB = xTask; + pxTCB->uxTaskNumber = uxHandle; + } + } + +#endif /* configUSE_TRACE_FACILITY */ + +/* + * ----------------------------------------------------------- + * The Idle task. + * ---------------------------------------------------------- + * + * The portTASK_FUNCTION() macro is used to allow port/compiler specific + * language extensions. The equivalent prototype for this function is: + * + * void prvIdleTask( void *pvParameters ); + * + */ +static portTASK_FUNCTION( prvIdleTask, pvParameters ) +{ + /* Stop warnings. */ + ( void ) pvParameters; + + /** THIS IS THE RTOS IDLE TASK - WHICH IS CREATED AUTOMATICALLY WHEN THE + SCHEDULER IS STARTED. **/ + + /* In case a task that has a secure context deletes itself, in which case + the idle task is responsible for deleting the task's secure context, if + any. */ + portALLOCATE_SECURE_CONTEXT( configMINIMAL_SECURE_STACK_SIZE ); + + for( ;; ) + { + /* See if any tasks have deleted themselves - if so then the idle task + is responsible for freeing the deleted task's TCB and stack. */ + prvCheckTasksWaitingTermination(); + + #if ( configUSE_PREEMPTION == 0 ) + { + /* If we are not using preemption we keep forcing a task switch to + see if any other task has become available. If we are using + preemption we don't need to do this as any task becoming available + will automatically get the processor anyway. */ + taskYIELD(); + } + #endif /* configUSE_PREEMPTION */ + + #if ( ( configUSE_PREEMPTION == 1 ) && ( configIDLE_SHOULD_YIELD == 1 ) ) + { + /* When using preemption tasks of equal priority will be + timesliced. If a task that is sharing the idle priority is ready + to run then the idle task should yield before the end of the + timeslice. + + A critical region is not required here as we are just reading from + the list, and an occasional incorrect value will not matter. If + the ready list at the idle priority contains more than one task + then a task other than the idle task is ready to execute. */ + if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( UBaseType_t ) 1 ) + { + taskYIELD(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* ( ( configUSE_PREEMPTION == 1 ) && ( configIDLE_SHOULD_YIELD == 1 ) ) */ + + #if ( configUSE_IDLE_HOOK == 1 ) + { + extern void vApplicationIdleHook( void ); + + /* Call the user defined function from within the idle task. This + allows the application designer to add background functionality + without the overhead of a separate task. + NOTE: vApplicationIdleHook() MUST NOT, UNDER ANY CIRCUMSTANCES, + CALL A FUNCTION THAT MIGHT BLOCK. */ + vApplicationIdleHook(); + } + #endif /* configUSE_IDLE_HOOK */ + + /* This conditional compilation should use inequality to 0, not equality + to 1. This is to ensure portSUPPRESS_TICKS_AND_SLEEP() is called when + user defined low power mode implementations require + configUSE_TICKLESS_IDLE to be set to a value other than 1. */ + #if ( configUSE_TICKLESS_IDLE != 0 ) + { + TickType_t xExpectedIdleTime; + + /* It is not desirable to suspend then resume the scheduler on + each iteration of the idle task. Therefore, a preliminary + test of the expected idle time is performed without the + scheduler suspended. The result here is not necessarily + valid. */ + xExpectedIdleTime = prvGetExpectedIdleTime(); + + if( xExpectedIdleTime >= configEXPECTED_IDLE_TIME_BEFORE_SLEEP ) + { + vTaskSuspendAll(); + { + /* Now the scheduler is suspended, the expected idle + time can be sampled again, and this time its value can + be used. */ + configASSERT( xNextTaskUnblockTime >= xTickCount ); + xExpectedIdleTime = prvGetExpectedIdleTime(); + + /* Define the following macro to set xExpectedIdleTime to 0 + if the application does not want + portSUPPRESS_TICKS_AND_SLEEP() to be called. */ + configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING( xExpectedIdleTime ); + + if( xExpectedIdleTime >= configEXPECTED_IDLE_TIME_BEFORE_SLEEP ) + { + traceLOW_POWER_IDLE_BEGIN(); + portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime ); + traceLOW_POWER_IDLE_END(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + ( void ) xTaskResumeAll(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_TICKLESS_IDLE */ + } +} +/*-----------------------------------------------------------*/ + +#if( configUSE_TICKLESS_IDLE != 0 ) + + eSleepModeStatus eTaskConfirmSleepModeStatus( void ) + { + /* The idle task exists in addition to the application tasks. */ + const UBaseType_t uxNonApplicationTasks = 1; + eSleepModeStatus eReturn = eStandardSleep; + + if( listCURRENT_LIST_LENGTH( &xPendingReadyList ) != 0 ) + { + /* A task was made ready while the scheduler was suspended. */ + eReturn = eAbortSleep; + } + else if( xYieldPending != pdFALSE ) + { + /* A yield was pended while the scheduler was suspended. */ + eReturn = eAbortSleep; + } + else + { + /* If all the tasks are in the suspended list (which might mean they + have an infinite block time rather than actually being suspended) + then it is safe to turn all clocks off and just wait for external + interrupts. */ + if( listCURRENT_LIST_LENGTH( &xSuspendedTaskList ) == ( uxCurrentNumberOfTasks - uxNonApplicationTasks ) ) + { + eReturn = eNoTasksWaitingTimeout; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + return eReturn; + } + +#endif /* configUSE_TICKLESS_IDLE */ +/*-----------------------------------------------------------*/ + +#if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) + + void vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, BaseType_t xIndex, void *pvValue ) + { + TCB_t *pxTCB; + + if( xIndex < configNUM_THREAD_LOCAL_STORAGE_POINTERS ) + { + pxTCB = prvGetTCBFromHandle( xTaskToSet ); + pxTCB->pvThreadLocalStoragePointers[ xIndex ] = pvValue; + } + } + +#endif /* configNUM_THREAD_LOCAL_STORAGE_POINTERS */ +/*-----------------------------------------------------------*/ + +#if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) + + void *pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, BaseType_t xIndex ) + { + void *pvReturn = NULL; + TCB_t *pxTCB; + + if( xIndex < configNUM_THREAD_LOCAL_STORAGE_POINTERS ) + { + pxTCB = prvGetTCBFromHandle( xTaskToQuery ); + pvReturn = pxTCB->pvThreadLocalStoragePointers[ xIndex ]; + } + else + { + pvReturn = NULL; + } + + return pvReturn; + } + +#endif /* configNUM_THREAD_LOCAL_STORAGE_POINTERS */ +/*-----------------------------------------------------------*/ + +#if ( portUSING_MPU_WRAPPERS == 1 ) + + void vTaskAllocateMPURegions( TaskHandle_t xTaskToModify, const MemoryRegion_t * const xRegions ) + { + TCB_t *pxTCB; + + /* If null is passed in here then we are modifying the MPU settings of + the calling task. */ + pxTCB = prvGetTCBFromHandle( xTaskToModify ); + + vPortStoreTaskMPUSettings( &( pxTCB->xMPUSettings ), xRegions, NULL, 0 ); + } + +#endif /* portUSING_MPU_WRAPPERS */ +/*-----------------------------------------------------------*/ + +static void prvInitialiseTaskLists( void ) +{ +UBaseType_t uxPriority; + + for( uxPriority = ( UBaseType_t ) 0U; uxPriority < ( UBaseType_t ) configMAX_PRIORITIES; uxPriority++ ) + { + vListInitialise( &( pxReadyTasksLists[ uxPriority ] ) ); + } + + vListInitialise( &xDelayedTaskList1 ); + vListInitialise( &xDelayedTaskList2 ); + vListInitialise( &xPendingReadyList ); + + #if ( INCLUDE_vTaskDelete == 1 ) + { + vListInitialise( &xTasksWaitingTermination ); + } + #endif /* INCLUDE_vTaskDelete */ + + #if ( INCLUDE_vTaskSuspend == 1 ) + { + vListInitialise( &xSuspendedTaskList ); + } + #endif /* INCLUDE_vTaskSuspend */ + + /* Start with pxDelayedTaskList using list1 and the pxOverflowDelayedTaskList + using list2. */ + pxDelayedTaskList = &xDelayedTaskList1; + pxOverflowDelayedTaskList = &xDelayedTaskList2; +} +/*-----------------------------------------------------------*/ + +static void prvCheckTasksWaitingTermination( void ) +{ + + /** THIS FUNCTION IS CALLED FROM THE RTOS IDLE TASK **/ + + #if ( INCLUDE_vTaskDelete == 1 ) + { + TCB_t *pxTCB; + + /* uxDeletedTasksWaitingCleanUp is used to prevent taskENTER_CRITICAL() + being called too often in the idle task. */ + while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U ) + { + taskENTER_CRITICAL(); + { + pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xTasksWaitingTermination ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + --uxCurrentNumberOfTasks; + --uxDeletedTasksWaitingCleanUp; + } + taskEXIT_CRITICAL(); + + prvDeleteTCB( pxTCB ); + } + } + #endif /* INCLUDE_vTaskDelete */ +} +/*-----------------------------------------------------------*/ + +#if( configUSE_TRACE_FACILITY == 1 ) + + void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState ) + { + TCB_t *pxTCB; + + /* xTask is NULL then get the state of the calling task. */ + pxTCB = prvGetTCBFromHandle( xTask ); + + pxTaskStatus->xHandle = ( TaskHandle_t ) pxTCB; + pxTaskStatus->pcTaskName = ( const char * ) &( pxTCB->pcTaskName [ 0 ] ); + pxTaskStatus->uxCurrentPriority = pxTCB->uxPriority; + pxTaskStatus->pxStackBase = pxTCB->pxStack; + pxTaskStatus->xTaskNumber = pxTCB->uxTCBNumber; + + #if ( configUSE_MUTEXES == 1 ) + { + pxTaskStatus->uxBasePriority = pxTCB->uxBasePriority; + } + #else + { + pxTaskStatus->uxBasePriority = 0; + } + #endif + + #if ( configGENERATE_RUN_TIME_STATS == 1 ) + { + pxTaskStatus->ulRunTimeCounter = pxTCB->ulRunTimeCounter; + } + #else + { + pxTaskStatus->ulRunTimeCounter = 0; + } + #endif + + /* Obtaining the task state is a little fiddly, so is only done if the + value of eState passed into this function is eInvalid - otherwise the + state is just set to whatever is passed in. */ + if( eState != eInvalid ) + { + if( pxTCB == pxCurrentTCB ) + { + pxTaskStatus->eCurrentState = eRunning; + } + else + { + pxTaskStatus->eCurrentState = eState; + + #if ( INCLUDE_vTaskSuspend == 1 ) + { + /* If the task is in the suspended list then there is a + chance it is actually just blocked indefinitely - so really + it should be reported as being in the Blocked state. */ + if( eState == eSuspended ) + { + vTaskSuspendAll(); + { + if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) + { + pxTaskStatus->eCurrentState = eBlocked; + } + } + ( void ) xTaskResumeAll(); + } + } + #endif /* INCLUDE_vTaskSuspend */ + } + } + else + { + pxTaskStatus->eCurrentState = eTaskGetState( pxTCB ); + } + + /* Obtaining the stack space takes some time, so the xGetFreeStackSpace + parameter is provided to allow it to be skipped. */ + if( xGetFreeStackSpace != pdFALSE ) + { + #if ( portSTACK_GROWTH > 0 ) + { + pxTaskStatus->usStackHighWaterMark = prvTaskCheckFreeStackSpace( ( uint8_t * ) pxTCB->pxEndOfStack ); + } + #else + { + pxTaskStatus->usStackHighWaterMark = prvTaskCheckFreeStackSpace( ( uint8_t * ) pxTCB->pxStack ); + } + #endif + } + else + { + pxTaskStatus->usStackHighWaterMark = 0; + } + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + static UBaseType_t prvListTasksWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState ) + { + configLIST_VOLATILE TCB_t *pxNextTCB, *pxFirstTCB; + UBaseType_t uxTask = 0; + + if( listCURRENT_LIST_LENGTH( pxList ) > ( UBaseType_t ) 0 ) + { + listGET_OWNER_OF_NEXT_ENTRY( pxFirstTCB, pxList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + + /* Populate an TaskStatus_t structure within the + pxTaskStatusArray array for each task that is referenced from + pxList. See the definition of TaskStatus_t in task.h for the + meaning of each TaskStatus_t structure member. */ + do + { + listGET_OWNER_OF_NEXT_ENTRY( pxNextTCB, pxList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + vTaskGetInfo( ( TaskHandle_t ) pxNextTCB, &( pxTaskStatusArray[ uxTask ] ), pdTRUE, eState ); + uxTask++; + } while( pxNextTCB != pxFirstTCB ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return uxTask; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) ) + + static configSTACK_DEPTH_TYPE prvTaskCheckFreeStackSpace( const uint8_t * pucStackByte ) + { + uint32_t ulCount = 0U; + + while( *pucStackByte == ( uint8_t ) tskSTACK_FILL_BYTE ) + { + pucStackByte -= portSTACK_GROWTH; + ulCount++; + } + + ulCount /= ( uint32_t ) sizeof( StackType_t ); /*lint !e961 Casting is not redundant on smaller architectures. */ + + return ( configSTACK_DEPTH_TYPE ) ulCount; + } + +#endif /* ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) ) */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) + + /* uxTaskGetStackHighWaterMark() and uxTaskGetStackHighWaterMark2() are the + same except for their return type. Using configSTACK_DEPTH_TYPE allows the + user to determine the return type. It gets around the problem of the value + overflowing on 8-bit types without breaking backward compatibility for + applications that expect an 8-bit return type. */ + configSTACK_DEPTH_TYPE uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) + { + TCB_t *pxTCB; + uint8_t *pucEndOfStack; + configSTACK_DEPTH_TYPE uxReturn; + + /* uxTaskGetStackHighWaterMark() and uxTaskGetStackHighWaterMark2() are + the same except for their return type. Using configSTACK_DEPTH_TYPE + allows the user to determine the return type. It gets around the + problem of the value overflowing on 8-bit types without breaking + backward compatibility for applications that expect an 8-bit return + type. */ + + pxTCB = prvGetTCBFromHandle( xTask ); + + #if portSTACK_GROWTH < 0 + { + pucEndOfStack = ( uint8_t * ) pxTCB->pxStack; + } + #else + { + pucEndOfStack = ( uint8_t * ) pxTCB->pxEndOfStack; + } + #endif + + uxReturn = prvTaskCheckFreeStackSpace( pucEndOfStack ); + + return uxReturn; + } + +#endif /* INCLUDE_uxTaskGetStackHighWaterMark2 */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) + + UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) + { + TCB_t *pxTCB; + uint8_t *pucEndOfStack; + UBaseType_t uxReturn; + + pxTCB = prvGetTCBFromHandle( xTask ); + + #if portSTACK_GROWTH < 0 + { + pucEndOfStack = ( uint8_t * ) pxTCB->pxStack; + } + #else + { + pucEndOfStack = ( uint8_t * ) pxTCB->pxEndOfStack; + } + #endif + + uxReturn = ( UBaseType_t ) prvTaskCheckFreeStackSpace( pucEndOfStack ); + + return uxReturn; + } + +#endif /* INCLUDE_uxTaskGetStackHighWaterMark */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskDelete == 1 ) + + static void prvDeleteTCB( TCB_t *pxTCB ) + { + /* This call is required specifically for the TriCore port. It must be + above the vPortFree() calls. The call is also used by ports/demos that + want to allocate and clean RAM statically. */ + portCLEAN_UP_TCB( pxTCB ); + + /* Free up the memory allocated by the scheduler for the task. It is up + to the task to free any memory allocated at the application level. */ + #if ( configUSE_NEWLIB_REENTRANT == 1 ) + { + _reclaim_reent( &( pxTCB->xNewLib_reent ) ); + } + #endif /* configUSE_NEWLIB_REENTRANT */ + + #if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 0 ) && ( portUSING_MPU_WRAPPERS == 0 ) ) + { + /* The task can only have been allocated dynamically - free both + the stack and TCB. */ + vPortFree( pxTCB->pxStack ); + vPortFree( pxTCB ); + } + #elif( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e731 !e9029 Macro has been consolidated for readability reasons. */ + { + /* The task could have been allocated statically or dynamically, so + check what was statically allocated before trying to free the + memory. */ + if( pxTCB->ucStaticallyAllocated == tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB ) + { + /* Both the stack and TCB were allocated dynamically, so both + must be freed. */ + vPortFree( pxTCB->pxStack ); + vPortFree( pxTCB ); + } + else if( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_ONLY ) + { + /* Only the stack was statically allocated, so the TCB is the + only memory that must be freed. */ + vPortFree( pxTCB ); + } + else + { + /* Neither the stack nor the TCB were allocated dynamically, so + nothing needs to be freed. */ + configASSERT( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_AND_TCB ); + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ + } + +#endif /* INCLUDE_vTaskDelete */ +/*-----------------------------------------------------------*/ + +static void prvResetNextTaskUnblockTime( void ) +{ +TCB_t *pxTCB; + + if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) + { + /* The new current delayed list is empty. Set xNextTaskUnblockTime to + the maximum possible value so it is extremely unlikely that the + if( xTickCount >= xNextTaskUnblockTime ) test will pass until + there is an item in the delayed list. */ + xNextTaskUnblockTime = portMAX_DELAY; + } + else + { + /* The new current delayed list is not empty, get the value of + the item at the head of the delayed list. This is the time at + which the task at the head of the delayed list should be removed + from the Blocked state. */ + ( pxTCB ) = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + xNextTaskUnblockTime = listGET_LIST_ITEM_VALUE( &( ( pxTCB )->xStateListItem ) ); + } +} +/*-----------------------------------------------------------*/ + +#if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) + + TaskHandle_t xTaskGetCurrentTaskHandle( void ) + { + TaskHandle_t xReturn; + + /* A critical section is not required as this is not called from + an interrupt and the current TCB will always be the same for any + individual execution thread. */ + xReturn = pxCurrentTCB; + + return xReturn; + } + +#endif /* ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) */ +/*-----------------------------------------------------------*/ + +#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + + BaseType_t xTaskGetSchedulerState( void ) + { + BaseType_t xReturn; + + if( xSchedulerRunning == pdFALSE ) + { + xReturn = taskSCHEDULER_NOT_STARTED; + } + else + { + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + xReturn = taskSCHEDULER_RUNNING; + } + else + { + xReturn = taskSCHEDULER_SUSPENDED; + } + } + + return xReturn; + } + +#endif /* ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_MUTEXES == 1 ) + + BaseType_t xTaskPriorityInherit( TaskHandle_t const pxMutexHolder ) + { + TCB_t * const pxMutexHolderTCB = pxMutexHolder; + BaseType_t xReturn = pdFALSE; + + /* If the mutex was given back by an interrupt while the queue was + locked then the mutex holder might now be NULL. _RB_ Is this still + needed as interrupts can no longer use mutexes? */ + if( pxMutexHolder != NULL ) + { + /* If the holder of the mutex has a priority below the priority of + the task attempting to obtain the mutex then it will temporarily + inherit the priority of the task attempting to obtain the mutex. */ + if( pxMutexHolderTCB->uxPriority < pxCurrentTCB->uxPriority ) + { + /* Adjust the mutex holder state to account for its new + priority. Only reset the event list item value if the value is + not being used for anything else. */ + if( ( listGET_LIST_ITEM_VALUE( &( pxMutexHolderTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL ) + { + listSET_LIST_ITEM_VALUE( &( pxMutexHolderTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxCurrentTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* If the task being modified is in the ready state it will need + to be moved into a new list. */ + if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ pxMutexHolderTCB->uxPriority ] ), &( pxMutexHolderTCB->xStateListItem ) ) != pdFALSE ) + { + if( uxListRemove( &( pxMutexHolderTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + /* It is known that the task is in its ready list so + there is no need to check again and the port level + reset macro can be called directly. */ + portRESET_READY_PRIORITY( pxMutexHolderTCB->uxPriority, uxTopReadyPriority ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Inherit the priority before being moved into the new list. */ + pxMutexHolderTCB->uxPriority = pxCurrentTCB->uxPriority; + prvAddTaskToReadyList( pxMutexHolderTCB ); + } + else + { + /* Just inherit the priority. */ + pxMutexHolderTCB->uxPriority = pxCurrentTCB->uxPriority; + } + + traceTASK_PRIORITY_INHERIT( pxMutexHolderTCB, pxCurrentTCB->uxPriority ); + + /* Inheritance occurred. */ + xReturn = pdTRUE; + } + else + { + if( pxMutexHolderTCB->uxBasePriority < pxCurrentTCB->uxPriority ) + { + /* The base priority of the mutex holder is lower than the + priority of the task attempting to take the mutex, but the + current priority of the mutex holder is not lower than the + priority of the task attempting to take the mutex. + Therefore the mutex holder must have already inherited a + priority, but inheritance would have occurred if that had + not been the case. */ + xReturn = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xReturn; + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_MUTEXES == 1 ) + + BaseType_t xTaskPriorityDisinherit( TaskHandle_t const pxMutexHolder ) + { + TCB_t * const pxTCB = pxMutexHolder; + BaseType_t xReturn = pdFALSE; + + if( pxMutexHolder != NULL ) + { + /* A task can only have an inherited priority if it holds the mutex. + If the mutex is held by a task then it cannot be given from an + interrupt, and if a mutex is given by the holding task then it must + be the running state task. */ + configASSERT( pxTCB == pxCurrentTCB ); + configASSERT( pxTCB->uxMutexesHeld ); + ( pxTCB->uxMutexesHeld )--; + + /* Has the holder of the mutex inherited the priority of another + task? */ + if( pxTCB->uxPriority != pxTCB->uxBasePriority ) + { + /* Only disinherit if no other mutexes are held. */ + if( pxTCB->uxMutexesHeld == ( UBaseType_t ) 0 ) + { + /* A task can only have an inherited priority if it holds + the mutex. If the mutex is held by a task then it cannot be + given from an interrupt, and if a mutex is given by the + holding task then it must be the running state task. Remove + the holding task from the ready/delayed list. */ + if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + taskRESET_READY_PRIORITY( pxTCB->uxPriority ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Disinherit the priority before adding the task into the + new ready list. */ + traceTASK_PRIORITY_DISINHERIT( pxTCB, pxTCB->uxBasePriority ); + pxTCB->uxPriority = pxTCB->uxBasePriority; + + /* Reset the event list item value. It cannot be in use for + any other purpose if this task is running, and it must be + running to give back the mutex. */ + listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + prvAddTaskToReadyList( pxTCB ); + + /* Return true to indicate that a context switch is required. + This is only actually required in the corner case whereby + multiple mutexes were held and the mutexes were given back + in an order different to that in which they were taken. + If a context switch did not occur when the first mutex was + returned, even if a task was waiting on it, then a context + switch should occur when the last mutex is returned whether + a task is waiting on it or not. */ + xReturn = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xReturn; + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_MUTEXES == 1 ) + + void vTaskPriorityDisinheritAfterTimeout( TaskHandle_t const pxMutexHolder, UBaseType_t uxHighestPriorityWaitingTask ) + { + TCB_t * const pxTCB = pxMutexHolder; + UBaseType_t uxPriorityUsedOnEntry, uxPriorityToUse; + const UBaseType_t uxOnlyOneMutexHeld = ( UBaseType_t ) 1; + + if( pxMutexHolder != NULL ) + { + /* If pxMutexHolder is not NULL then the holder must hold at least + one mutex. */ + configASSERT( pxTCB->uxMutexesHeld ); + + /* Determine the priority to which the priority of the task that + holds the mutex should be set. This will be the greater of the + holding task's base priority and the priority of the highest + priority task that is waiting to obtain the mutex. */ + if( pxTCB->uxBasePriority < uxHighestPriorityWaitingTask ) + { + uxPriorityToUse = uxHighestPriorityWaitingTask; + } + else + { + uxPriorityToUse = pxTCB->uxBasePriority; + } + + /* Does the priority need to change? */ + if( pxTCB->uxPriority != uxPriorityToUse ) + { + /* Only disinherit if no other mutexes are held. This is a + simplification in the priority inheritance implementation. If + the task that holds the mutex is also holding other mutexes then + the other mutexes may have caused the priority inheritance. */ + if( pxTCB->uxMutexesHeld == uxOnlyOneMutexHeld ) + { + /* If a task has timed out because it already holds the + mutex it was trying to obtain then it cannot of inherited + its own priority. */ + configASSERT( pxTCB != pxCurrentTCB ); + + /* Disinherit the priority, remembering the previous + priority to facilitate determining the subject task's + state. */ + traceTASK_PRIORITY_DISINHERIT( pxTCB, pxTCB->uxBasePriority ); + uxPriorityUsedOnEntry = pxTCB->uxPriority; + pxTCB->uxPriority = uxPriorityToUse; + + /* Only reset the event list item value if the value is not + being used for anything else. */ + if( ( listGET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL ) + { + listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriorityToUse ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* If the running task is not the task that holds the mutex + then the task that holds the mutex could be in either the + Ready, Blocked or Suspended states. Only remove the task + from its current state list if it is in the Ready state as + the task's priority is going to change and there is one + Ready list per priority. */ + if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ uxPriorityUsedOnEntry ] ), &( pxTCB->xStateListItem ) ) != pdFALSE ) + { + if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + /* It is known that the task is in its ready list so + there is no need to check again and the port level + reset macro can be called directly. */ + portRESET_READY_PRIORITY( pxTCB->uxPriority, uxTopReadyPriority ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + prvAddTaskToReadyList( pxTCB ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if ( portCRITICAL_NESTING_IN_TCB == 1 ) + + void vTaskEnterCritical( void ) + { + portDISABLE_INTERRUPTS(); + + if( xSchedulerRunning != pdFALSE ) + { + ( pxCurrentTCB->uxCriticalNesting )++; + + /* This is not the interrupt safe version of the enter critical + function so assert() if it is being called from an interrupt + context. Only API functions that end in "FromISR" can be used in an + interrupt. Only assert if the critical nesting count is 1 to + protect against recursive calls if the assert function also uses a + critical section. */ + if( pxCurrentTCB->uxCriticalNesting == 1 ) + { + portASSERT_IF_IN_ISR(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* portCRITICAL_NESTING_IN_TCB */ +/*-----------------------------------------------------------*/ + +#if ( portCRITICAL_NESTING_IN_TCB == 1 ) + + void vTaskExitCritical( void ) + { + if( xSchedulerRunning != pdFALSE ) + { + if( pxCurrentTCB->uxCriticalNesting > 0U ) + { + ( pxCurrentTCB->uxCriticalNesting )--; + + if( pxCurrentTCB->uxCriticalNesting == 0U ) + { + portENABLE_INTERRUPTS(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* portCRITICAL_NESTING_IN_TCB */ +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) ) + + static char *prvWriteNameToBuffer( char *pcBuffer, const char *pcTaskName ) + { + size_t x; + + /* Start by copying the entire string. */ + strcpy( pcBuffer, pcTaskName ); + + /* Pad the end of the string with spaces to ensure columns line up when + printed out. */ + for( x = strlen( pcBuffer ); x < ( size_t ) ( configMAX_TASK_NAME_LEN - 1 ); x++ ) + { + pcBuffer[ x ] = ' '; + } + + /* Terminate. */ + pcBuffer[ x ] = ( char ) 0x00; + + /* Return the new end of string. */ + return &( pcBuffer[ x ] ); + } + +#endif /* ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) */ +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + + void vTaskList( char * pcWriteBuffer ) + { + TaskStatus_t *pxTaskStatusArray; + UBaseType_t uxArraySize, x; + char cStatus; + + /* + * PLEASE NOTE: + * + * This function is provided for convenience only, and is used by many + * of the demo applications. Do not consider it to be part of the + * scheduler. + * + * vTaskList() calls uxTaskGetSystemState(), then formats part of the + * uxTaskGetSystemState() output into a human readable table that + * displays task names, states and stack usage. + * + * vTaskList() has a dependency on the sprintf() C library function that + * might bloat the code size, use a lot of stack, and provide different + * results on different platforms. An alternative, tiny, third party, + * and limited functionality implementation of sprintf() is provided in + * many of the FreeRTOS/Demo sub-directories in a file called + * printf-stdarg.c (note printf-stdarg.c does not provide a full + * snprintf() implementation!). + * + * It is recommended that production systems call uxTaskGetSystemState() + * directly to get access to raw stats data, rather than indirectly + * through a call to vTaskList(). + */ + + + /* Make sure the write buffer does not contain a string. */ + *pcWriteBuffer = ( char ) 0x00; + + /* Take a snapshot of the number of tasks in case it changes while this + function is executing. */ + uxArraySize = uxCurrentNumberOfTasks; + + /* Allocate an array index for each task. NOTE! if + configSUPPORT_DYNAMIC_ALLOCATION is set to 0 then pvPortMalloc() will + equate to NULL. */ + pxTaskStatusArray = pvPortMalloc( uxCurrentNumberOfTasks * sizeof( TaskStatus_t ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation allocates a struct that has the alignment requirements of a pointer. */ + + if( pxTaskStatusArray != NULL ) + { + /* Generate the (binary) data. */ + uxArraySize = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, NULL ); + + /* Create a human readable table from the binary data. */ + for( x = 0; x < uxArraySize; x++ ) + { + switch( pxTaskStatusArray[ x ].eCurrentState ) + { + case eRunning: cStatus = tskRUNNING_CHAR; + break; + + case eReady: cStatus = tskREADY_CHAR; + break; + + case eBlocked: cStatus = tskBLOCKED_CHAR; + break; + + case eSuspended: cStatus = tskSUSPENDED_CHAR; + break; + + case eDeleted: cStatus = tskDELETED_CHAR; + break; + + case eInvalid: /* Fall through. */ + default: /* Should not get here, but it is included + to prevent static checking errors. */ + cStatus = ( char ) 0x00; + break; + } + + /* Write the task name to the string, padding with spaces so it + can be printed in tabular form more easily. */ + pcWriteBuffer = prvWriteNameToBuffer( pcWriteBuffer, pxTaskStatusArray[ x ].pcTaskName ); + + /* Write the rest of the string. */ + sprintf( pcWriteBuffer, "\t%c\t%u\t%u\t%u\r\n", cStatus, ( unsigned int ) pxTaskStatusArray[ x ].uxCurrentPriority, ( unsigned int ) pxTaskStatusArray[ x ].usStackHighWaterMark, ( unsigned int ) pxTaskStatusArray[ x ].xTaskNumber ); /*lint !e586 sprintf() allowed as this is compiled with many compilers and this is a utility function only - not part of the core kernel implementation. */ + pcWriteBuffer += strlen( pcWriteBuffer ); /*lint !e9016 Pointer arithmetic ok on char pointers especially as in this case where it best denotes the intent of the code. */ + } + + /* Free the array again. NOTE! If configSUPPORT_DYNAMIC_ALLOCATION + is 0 then vPortFree() will be #defined to nothing. */ + vPortFree( pxTaskStatusArray ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */ +/*----------------------------------------------------------*/ + +#if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + + void vTaskGetRunTimeStats( char *pcWriteBuffer ) + { + TaskStatus_t *pxTaskStatusArray; + UBaseType_t uxArraySize, x; + uint32_t ulTotalTime, ulStatsAsPercentage; + + #if( configUSE_TRACE_FACILITY != 1 ) + { + #error configUSE_TRACE_FACILITY must also be set to 1 in FreeRTOSConfig.h to use vTaskGetRunTimeStats(). + } + #endif + + /* + * PLEASE NOTE: + * + * This function is provided for convenience only, and is used by many + * of the demo applications. Do not consider it to be part of the + * scheduler. + * + * vTaskGetRunTimeStats() calls uxTaskGetSystemState(), then formats part + * of the uxTaskGetSystemState() output into a human readable table that + * displays the amount of time each task has spent in the Running state + * in both absolute and percentage terms. + * + * vTaskGetRunTimeStats() has a dependency on the sprintf() C library + * function that might bloat the code size, use a lot of stack, and + * provide different results on different platforms. An alternative, + * tiny, third party, and limited functionality implementation of + * sprintf() is provided in many of the FreeRTOS/Demo sub-directories in + * a file called printf-stdarg.c (note printf-stdarg.c does not provide + * a full snprintf() implementation!). + * + * It is recommended that production systems call uxTaskGetSystemState() + * directly to get access to raw stats data, rather than indirectly + * through a call to vTaskGetRunTimeStats(). + */ + + /* Make sure the write buffer does not contain a string. */ + *pcWriteBuffer = ( char ) 0x00; + + /* Take a snapshot of the number of tasks in case it changes while this + function is executing. */ + uxArraySize = uxCurrentNumberOfTasks; + + /* Allocate an array index for each task. NOTE! If + configSUPPORT_DYNAMIC_ALLOCATION is set to 0 then pvPortMalloc() will + equate to NULL. */ + pxTaskStatusArray = pvPortMalloc( uxCurrentNumberOfTasks * sizeof( TaskStatus_t ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation allocates a struct that has the alignment requirements of a pointer. */ + + if( pxTaskStatusArray != NULL ) + { + /* Generate the (binary) data. */ + uxArraySize = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, &ulTotalTime ); + + /* For percentage calculations. */ + ulTotalTime /= 100UL; + + /* Avoid divide by zero errors. */ + if( ulTotalTime > 0UL ) + { + /* Create a human readable table from the binary data. */ + for( x = 0; x < uxArraySize; x++ ) + { + /* What percentage of the total run time has the task used? + This will always be rounded down to the nearest integer. + ulTotalRunTimeDiv100 has already been divided by 100. */ + ulStatsAsPercentage = pxTaskStatusArray[ x ].ulRunTimeCounter / ulTotalTime; + + /* Write the task name to the string, padding with + spaces so it can be printed in tabular form more + easily. */ + pcWriteBuffer = prvWriteNameToBuffer( pcWriteBuffer, pxTaskStatusArray[ x ].pcTaskName ); + + if( ulStatsAsPercentage > 0UL ) + { + #ifdef portLU_PRINTF_SPECIFIER_REQUIRED + { + sprintf( pcWriteBuffer, "\t%lu\t\t%lu%%\r\n", pxTaskStatusArray[ x ].ulRunTimeCounter, ulStatsAsPercentage ); + } + #else + { + /* sizeof( int ) == sizeof( long ) so a smaller + printf() library can be used. */ + sprintf( pcWriteBuffer, "\t%u\t\t%u%%\r\n", ( unsigned int ) pxTaskStatusArray[ x ].ulRunTimeCounter, ( unsigned int ) ulStatsAsPercentage ); /*lint !e586 sprintf() allowed as this is compiled with many compilers and this is a utility function only - not part of the core kernel implementation. */ + } + #endif + } + else + { + /* If the percentage is zero here then the task has + consumed less than 1% of the total run time. */ + #ifdef portLU_PRINTF_SPECIFIER_REQUIRED + { + sprintf( pcWriteBuffer, "\t%lu\t\t<1%%\r\n", pxTaskStatusArray[ x ].ulRunTimeCounter ); + } + #else + { + /* sizeof( int ) == sizeof( long ) so a smaller + printf() library can be used. */ + sprintf( pcWriteBuffer, "\t%u\t\t<1%%\r\n", ( unsigned int ) pxTaskStatusArray[ x ].ulRunTimeCounter ); /*lint !e586 sprintf() allowed as this is compiled with many compilers and this is a utility function only - not part of the core kernel implementation. */ + } + #endif + } + + pcWriteBuffer += strlen( pcWriteBuffer ); /*lint !e9016 Pointer arithmetic ok on char pointers especially as in this case where it best denotes the intent of the code. */ + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Free the array again. NOTE! If configSUPPORT_DYNAMIC_ALLOCATION + is 0 then vPortFree() will be #defined to nothing. */ + vPortFree( pxTaskStatusArray ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */ +/*-----------------------------------------------------------*/ + +TickType_t uxTaskResetEventItemValue( void ) +{ +TickType_t uxReturn; + + uxReturn = listGET_LIST_ITEM_VALUE( &( pxCurrentTCB->xEventListItem ) ); + + /* Reset the event list item to its normal value - so it can be used with + queues and semaphores. */ + listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xEventListItem ), ( ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxCurrentTCB->uxPriority ) ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + + return uxReturn; +} +/*-----------------------------------------------------------*/ + +#if ( configUSE_MUTEXES == 1 ) + + TaskHandle_t pvTaskIncrementMutexHeldCount( void ) + { + /* If xSemaphoreCreateMutex() is called before any tasks have been created + then pxCurrentTCB will be NULL. */ + if( pxCurrentTCB != NULL ) + { + ( pxCurrentTCB->uxMutexesHeld )++; + } + + return pxCurrentTCB; + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if( configUSE_TASK_NOTIFICATIONS == 1 ) + + uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait ) + { + uint32_t ulReturn; + + taskENTER_CRITICAL(); + { + /* Only block if the notification count is not already non-zero. */ + if( pxCurrentTCB->ulNotifiedValue == 0UL ) + { + /* Mark this task as waiting for a notification. */ + pxCurrentTCB->ucNotifyState = taskWAITING_NOTIFICATION; + + if( xTicksToWait > ( TickType_t ) 0 ) + { + prvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE ); + traceTASK_NOTIFY_TAKE_BLOCK(); + + /* All ports are written to allow a yield in a critical + section (some will yield immediately, others wait until the + critical section exits) - but it is not something that + application code should ever do. */ + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + taskENTER_CRITICAL(); + { + traceTASK_NOTIFY_TAKE(); + ulReturn = pxCurrentTCB->ulNotifiedValue; + + if( ulReturn != 0UL ) + { + if( xClearCountOnExit != pdFALSE ) + { + pxCurrentTCB->ulNotifiedValue = 0UL; + } + else + { + pxCurrentTCB->ulNotifiedValue = ulReturn - ( uint32_t ) 1; + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + pxCurrentTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION; + } + taskEXIT_CRITICAL(); + + return ulReturn; + } + +#endif /* configUSE_TASK_NOTIFICATIONS */ +/*-----------------------------------------------------------*/ + +#if( configUSE_TASK_NOTIFICATIONS == 1 ) + + BaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait ) + { + BaseType_t xReturn; + + taskENTER_CRITICAL(); + { + /* Only block if a notification is not already pending. */ + if( pxCurrentTCB->ucNotifyState != taskNOTIFICATION_RECEIVED ) + { + /* Clear bits in the task's notification value as bits may get + set by the notifying task or interrupt. This can be used to + clear the value to zero. */ + pxCurrentTCB->ulNotifiedValue &= ~ulBitsToClearOnEntry; + + /* Mark this task as waiting for a notification. */ + pxCurrentTCB->ucNotifyState = taskWAITING_NOTIFICATION; + + if( xTicksToWait > ( TickType_t ) 0 ) + { + prvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE ); + traceTASK_NOTIFY_WAIT_BLOCK(); + + /* All ports are written to allow a yield in a critical + section (some will yield immediately, others wait until the + critical section exits) - but it is not something that + application code should ever do. */ + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + taskENTER_CRITICAL(); + { + traceTASK_NOTIFY_WAIT(); + + if( pulNotificationValue != NULL ) + { + /* Output the current notification value, which may or may not + have changed. */ + *pulNotificationValue = pxCurrentTCB->ulNotifiedValue; + } + + /* If ucNotifyValue is set then either the task never entered the + blocked state (because a notification was already pending) or the + task unblocked because of a notification. Otherwise the task + unblocked because of a timeout. */ + if( pxCurrentTCB->ucNotifyState != taskNOTIFICATION_RECEIVED ) + { + /* A notification was not received. */ + xReturn = pdFALSE; + } + else + { + /* A notification was already pending or a notification was + received while the task was waiting. */ + pxCurrentTCB->ulNotifiedValue &= ~ulBitsToClearOnExit; + xReturn = pdTRUE; + } + + pxCurrentTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION; + } + taskEXIT_CRITICAL(); + + return xReturn; + } + +#endif /* configUSE_TASK_NOTIFICATIONS */ +/*-----------------------------------------------------------*/ + +#if( configUSE_TASK_NOTIFICATIONS == 1 ) + + BaseType_t xTaskGenericNotify( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue ) + { + TCB_t * pxTCB; + BaseType_t xReturn = pdPASS; + uint8_t ucOriginalNotifyState; + + configASSERT( xTaskToNotify ); + pxTCB = xTaskToNotify; + + taskENTER_CRITICAL(); + { + if( pulPreviousNotificationValue != NULL ) + { + *pulPreviousNotificationValue = pxTCB->ulNotifiedValue; + } + + ucOriginalNotifyState = pxTCB->ucNotifyState; + + pxTCB->ucNotifyState = taskNOTIFICATION_RECEIVED; + + switch( eAction ) + { + case eSetBits : + pxTCB->ulNotifiedValue |= ulValue; + break; + + case eIncrement : + ( pxTCB->ulNotifiedValue )++; + break; + + case eSetValueWithOverwrite : + pxTCB->ulNotifiedValue = ulValue; + break; + + case eSetValueWithoutOverwrite : + if( ucOriginalNotifyState != taskNOTIFICATION_RECEIVED ) + { + pxTCB->ulNotifiedValue = ulValue; + } + else + { + /* The value could not be written to the task. */ + xReturn = pdFAIL; + } + break; + + case eNoAction: + /* The task is being notified without its notify value being + updated. */ + break; + + default: + /* Should not get here if all enums are handled. + Artificially force an assert by testing a value the + compiler can't assume is const. */ + configASSERT( pxTCB->ulNotifiedValue == ~0UL ); + + break; + } + + traceTASK_NOTIFY(); + + /* If the task is in the blocked state specifically to wait for a + notification then unblock it now. */ + if( ucOriginalNotifyState == taskWAITING_NOTIFICATION ) + { + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxTCB ); + + /* The task should not have been on an event list. */ + configASSERT( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL ); + + #if( configUSE_TICKLESS_IDLE != 0 ) + { + /* If a task is blocked waiting for a notification then + xNextTaskUnblockTime might be set to the blocked task's time + out time. If the task is unblocked for a reason other than + a timeout xNextTaskUnblockTime is normally left unchanged, + because it will automatically get reset to a new value when + the tick count equals xNextTaskUnblockTime. However if + tickless idling is used it might be more important to enter + sleep mode at the earliest possible time - so reset + xNextTaskUnblockTime here to ensure it is updated at the + earliest possible time. */ + prvResetNextTaskUnblockTime(); + } + #endif + + if( pxTCB->uxPriority > pxCurrentTCB->uxPriority ) + { + /* The notified task has a priority above the currently + executing task so a yield is required. */ + taskYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + return xReturn; + } + +#endif /* configUSE_TASK_NOTIFICATIONS */ +/*-----------------------------------------------------------*/ + +#if( configUSE_TASK_NOTIFICATIONS == 1 ) + + BaseType_t xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue, BaseType_t *pxHigherPriorityTaskWoken ) + { + TCB_t * pxTCB; + uint8_t ucOriginalNotifyState; + BaseType_t xReturn = pdPASS; + UBaseType_t uxSavedInterruptStatus; + + configASSERT( xTaskToNotify ); + + /* RTOS ports that support interrupt nesting have the concept of a + maximum system call (or maximum API call) interrupt priority. + Interrupts that are above the maximum system call priority are keep + permanently enabled, even when the RTOS kernel is in a critical section, + but cannot make any calls to FreeRTOS API functions. If configASSERT() + is defined in FreeRTOSConfig.h then + portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has + been assigned a priority above the configured maximum system call + priority. Only FreeRTOS functions that end in FromISR can be called + from interrupts that have been assigned a priority at or (logically) + below the maximum system call interrupt priority. FreeRTOS maintains a + separate interrupt safe API to ensure interrupt entry is as fast and as + simple as possible. More information (albeit Cortex-M specific) is + provided on the following link: + http://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + pxTCB = xTaskToNotify; + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + if( pulPreviousNotificationValue != NULL ) + { + *pulPreviousNotificationValue = pxTCB->ulNotifiedValue; + } + + ucOriginalNotifyState = pxTCB->ucNotifyState; + pxTCB->ucNotifyState = taskNOTIFICATION_RECEIVED; + + switch( eAction ) + { + case eSetBits : + pxTCB->ulNotifiedValue |= ulValue; + break; + + case eIncrement : + ( pxTCB->ulNotifiedValue )++; + break; + + case eSetValueWithOverwrite : + pxTCB->ulNotifiedValue = ulValue; + break; + + case eSetValueWithoutOverwrite : + if( ucOriginalNotifyState != taskNOTIFICATION_RECEIVED ) + { + pxTCB->ulNotifiedValue = ulValue; + } + else + { + /* The value could not be written to the task. */ + xReturn = pdFAIL; + } + break; + + case eNoAction : + /* The task is being notified without its notify value being + updated. */ + break; + + default: + /* Should not get here if all enums are handled. + Artificially force an assert by testing a value the + compiler can't assume is const. */ + configASSERT( pxTCB->ulNotifiedValue == ~0UL ); + break; + } + + traceTASK_NOTIFY_FROM_ISR(); + + /* If the task is in the blocked state specifically to wait for a + notification then unblock it now. */ + if( ucOriginalNotifyState == taskWAITING_NOTIFICATION ) + { + /* The task should not have been on an event list. */ + configASSERT( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL ); + + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxTCB ); + } + else + { + /* The delayed and ready lists cannot be accessed, so hold + this task pending until the scheduler is resumed. */ + vListInsertEnd( &( xPendingReadyList ), &( pxTCB->xEventListItem ) ); + } + + if( pxTCB->uxPriority > pxCurrentTCB->uxPriority ) + { + /* The notified task has a priority above the currently + executing task so a yield is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + + /* Mark that a yield is pending in case the user is not + using the "xHigherPriorityTaskWoken" parameter to an ISR + safe FreeRTOS function. */ + xYieldPending = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; + } + +#endif /* configUSE_TASK_NOTIFICATIONS */ +/*-----------------------------------------------------------*/ + +#if( configUSE_TASK_NOTIFICATIONS == 1 ) + + void vTaskNotifyGiveFromISR( TaskHandle_t xTaskToNotify, BaseType_t *pxHigherPriorityTaskWoken ) + { + TCB_t * pxTCB; + uint8_t ucOriginalNotifyState; + UBaseType_t uxSavedInterruptStatus; + + configASSERT( xTaskToNotify ); + + /* RTOS ports that support interrupt nesting have the concept of a + maximum system call (or maximum API call) interrupt priority. + Interrupts that are above the maximum system call priority are keep + permanently enabled, even when the RTOS kernel is in a critical section, + but cannot make any calls to FreeRTOS API functions. If configASSERT() + is defined in FreeRTOSConfig.h then + portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has + been assigned a priority above the configured maximum system call + priority. Only FreeRTOS functions that end in FromISR can be called + from interrupts that have been assigned a priority at or (logically) + below the maximum system call interrupt priority. FreeRTOS maintains a + separate interrupt safe API to ensure interrupt entry is as fast and as + simple as possible. More information (albeit Cortex-M specific) is + provided on the following link: + http://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + pxTCB = xTaskToNotify; + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + ucOriginalNotifyState = pxTCB->ucNotifyState; + pxTCB->ucNotifyState = taskNOTIFICATION_RECEIVED; + + /* 'Giving' is equivalent to incrementing a count in a counting + semaphore. */ + ( pxTCB->ulNotifiedValue )++; + + traceTASK_NOTIFY_GIVE_FROM_ISR(); + + /* If the task is in the blocked state specifically to wait for a + notification then unblock it now. */ + if( ucOriginalNotifyState == taskWAITING_NOTIFICATION ) + { + /* The task should not have been on an event list. */ + configASSERT( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL ); + + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxTCB ); + } + else + { + /* The delayed and ready lists cannot be accessed, so hold + this task pending until the scheduler is resumed. */ + vListInsertEnd( &( xPendingReadyList ), &( pxTCB->xEventListItem ) ); + } + + if( pxTCB->uxPriority > pxCurrentTCB->uxPriority ) + { + /* The notified task has a priority above the currently + executing task so a yield is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + + /* Mark that a yield is pending in case the user is not + using the "xHigherPriorityTaskWoken" parameter in an ISR + safe FreeRTOS function. */ + xYieldPending = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + } + +#endif /* configUSE_TASK_NOTIFICATIONS */ + +/*-----------------------------------------------------------*/ + +#if( configUSE_TASK_NOTIFICATIONS == 1 ) + + BaseType_t xTaskNotifyStateClear( TaskHandle_t xTask ) + { + TCB_t *pxTCB; + BaseType_t xReturn; + + /* If null is passed in here then it is the calling task that is having + its notification state cleared. */ + pxTCB = prvGetTCBFromHandle( xTask ); + + taskENTER_CRITICAL(); + { + if( pxTCB->ucNotifyState == taskNOTIFICATION_RECEIVED ) + { + pxTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION; + xReturn = pdPASS; + } + else + { + xReturn = pdFAIL; + } + } + taskEXIT_CRITICAL(); + + return xReturn; + } + +#endif /* configUSE_TASK_NOTIFICATIONS */ +/*-----------------------------------------------------------*/ + +#if( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) + + uint32_t ulTaskGetIdleRunTimeCounter( void ) + { + return xIdleTaskHandle->ulRunTimeCounter; + } + +#endif +/*-----------------------------------------------------------*/ + +static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely ) +{ +TickType_t xTimeToWake; +const TickType_t xConstTickCount = xTickCount; + + #if( INCLUDE_xTaskAbortDelay == 1 ) + { + /* About to enter a delayed list, so ensure the ucDelayAborted flag is + reset to pdFALSE so it can be detected as having been set to pdTRUE + when the task leaves the Blocked state. */ + pxCurrentTCB->ucDelayAborted = pdFALSE; + } + #endif + + /* Remove the task from the ready list before adding it to the blocked list + as the same list item is used for both lists. */ + if( uxListRemove( &( pxCurrentTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + /* The current task must be in a ready list, so there is no need to + check, and the port reset macro can be called directly. */ + portRESET_READY_PRIORITY( pxCurrentTCB->uxPriority, uxTopReadyPriority ); /*lint !e931 pxCurrentTCB cannot change as it is the calling task. pxCurrentTCB->uxPriority and uxTopReadyPriority cannot change as called with scheduler suspended or in a critical section. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + #if ( INCLUDE_vTaskSuspend == 1 ) + { + if( ( xTicksToWait == portMAX_DELAY ) && ( xCanBlockIndefinitely != pdFALSE ) ) + { + /* Add the task to the suspended task list instead of a delayed task + list to ensure it is not woken by a timing event. It will block + indefinitely. */ + vListInsertEnd( &xSuspendedTaskList, &( pxCurrentTCB->xStateListItem ) ); + } + else + { + /* Calculate the time at which the task should be woken if the event + does not occur. This may overflow but this doesn't matter, the + kernel will manage it correctly. */ + xTimeToWake = xConstTickCount + xTicksToWait; + + /* The list item will be inserted in wake time order. */ + listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xStateListItem ), xTimeToWake ); + + if( xTimeToWake < xConstTickCount ) + { + /* Wake time has overflowed. Place this item in the overflow + list. */ + vListInsert( pxOverflowDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); + } + else + { + /* The wake time has not overflowed, so the current block list + is used. */ + vListInsert( pxDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); + + /* If the task entering the blocked state was placed at the + head of the list of blocked tasks then xNextTaskUnblockTime + needs to be updated too. */ + if( xTimeToWake < xNextTaskUnblockTime ) + { + xNextTaskUnblockTime = xTimeToWake; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + } + #else /* INCLUDE_vTaskSuspend */ + { + /* Calculate the time at which the task should be woken if the event + does not occur. This may overflow but this doesn't matter, the kernel + will manage it correctly. */ + xTimeToWake = xConstTickCount + xTicksToWait; + + /* The list item will be inserted in wake time order. */ + listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xStateListItem ), xTimeToWake ); + + if( xTimeToWake < xConstTickCount ) + { + /* Wake time has overflowed. Place this item in the overflow list. */ + vListInsert( pxOverflowDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); + } + else + { + /* The wake time has not overflowed, so the current block list is used. */ + vListInsert( pxDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); + + /* If the task entering the blocked state was placed at the head of the + list of blocked tasks then xNextTaskUnblockTime needs to be updated + too. */ + if( xTimeToWake < xNextTaskUnblockTime ) + { + xNextTaskUnblockTime = xTimeToWake; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + /* Avoid compiler warning when INCLUDE_vTaskSuspend is not 1. */ + ( void ) xCanBlockIndefinitely; + } + #endif /* INCLUDE_vTaskSuspend */ +} + +/* Code below here allows additional code to be inserted into this source file, +especially where access to file scope functions and data is needed (for example +when performing module tests). */ + +#ifdef FREERTOS_MODULE_TEST + #include "tasks_test_access_functions.h" +#endif + + +#if( configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H == 1 ) + + #include "freertos_tasks_c_additions.h" + + #ifdef FREERTOS_TASKS_C_ADDITIONS_INIT + static void freertos_tasks_c_additions_init( void ) + { + FREERTOS_TASKS_C_ADDITIONS_INIT(); + } + #endif + +#endif + + diff --git a/components/freertos/timers.c b/components/freertos/timers.c new file mode 100644 index 00000000..ad18f3e1 --- /dev/null +++ b/components/freertos/timers.c @@ -0,0 +1,1102 @@ +/* + * FreeRTOS Kernel V10.2.1 + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* Standard includes. */ +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" +#include "timers.h" + +#if ( INCLUDE_xTimerPendFunctionCall == 1 ) && ( configUSE_TIMERS == 0 ) + #error configUSE_TIMERS must be set to 1 to make the xTimerPendFunctionCall() function available. +#endif + +/* Lint e9021, e961 and e750 are suppressed as a MISRA exception justified +because the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined +for the header files above, but not in this file, in order to generate the +correct privileged Vs unprivileged linkage and placement. */ +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e9021 !e961 !e750. */ + + +/* This entire source file will be skipped if the application is not configured +to include software timer functionality. This #if is closed at the very bottom +of this file. If you want to include software timer functionality then ensure +configUSE_TIMERS is set to 1 in FreeRTOSConfig.h. */ +#if ( configUSE_TIMERS == 1 ) + +/* Misc definitions. */ +#define tmrNO_DELAY ( TickType_t ) 0U + +/* The name assigned to the timer service task. This can be overridden by +defining trmTIMER_SERVICE_TASK_NAME in FreeRTOSConfig.h. */ +#ifndef configTIMER_SERVICE_TASK_NAME + #define configTIMER_SERVICE_TASK_NAME "Tmr Svc" +#endif + +/* Bit definitions used in the ucStatus member of a timer structure. */ +#define tmrSTATUS_IS_ACTIVE ( ( uint8_t ) 0x01 ) +#define tmrSTATUS_IS_STATICALLY_ALLOCATED ( ( uint8_t ) 0x02 ) +#define tmrSTATUS_IS_AUTORELOAD ( ( uint8_t ) 0x04 ) + +/* The definition of the timers themselves. */ +typedef struct tmrTimerControl /* The old naming convention is used to prevent breaking kernel aware debuggers. */ +{ + const char *pcTimerName; /*<< Text name. This is not used by the kernel, it is included simply to make debugging easier. */ /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + ListItem_t xTimerListItem; /*<< Standard linked list item as used by all kernel features for event management. */ + TickType_t xTimerPeriodInTicks;/*<< How quickly and often the timer expires. */ + void *pvTimerID; /*<< An ID to identify the timer. This allows the timer to be identified when the same callback is used for multiple timers. */ + TimerCallbackFunction_t pxCallbackFunction; /*<< The function that will be called when the timer expires. */ + #if( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxTimerNumber; /*<< An ID assigned by trace tools such as FreeRTOS+Trace */ + #endif + uint8_t ucStatus; /*<< Holds bits to say if the timer was statically allocated or not, and if it is active or not. */ +} xTIMER; + +/* The old xTIMER name is maintained above then typedefed to the new Timer_t +name below to enable the use of older kernel aware debuggers. */ +typedef xTIMER Timer_t; + +/* The definition of messages that can be sent and received on the timer queue. +Two types of message can be queued - messages that manipulate a software timer, +and messages that request the execution of a non-timer related callback. The +two message types are defined in two separate structures, xTimerParametersType +and xCallbackParametersType respectively. */ +typedef struct tmrTimerParameters +{ + TickType_t xMessageValue; /*<< An optional value used by a subset of commands, for example, when changing the period of a timer. */ + Timer_t * pxTimer; /*<< The timer to which the command will be applied. */ +} TimerParameter_t; + + +typedef struct tmrCallbackParameters +{ + PendedFunction_t pxCallbackFunction; /* << The callback function to execute. */ + void *pvParameter1; /* << The value that will be used as the callback functions first parameter. */ + uint32_t ulParameter2; /* << The value that will be used as the callback functions second parameter. */ +} CallbackParameters_t; + +/* The structure that contains the two message types, along with an identifier +that is used to determine which message type is valid. */ +typedef struct tmrTimerQueueMessage +{ + BaseType_t xMessageID; /*<< The command being sent to the timer service task. */ + union + { + TimerParameter_t xTimerParameters; + + /* Don't include xCallbackParameters if it is not going to be used as + it makes the structure (and therefore the timer queue) larger. */ + #if ( INCLUDE_xTimerPendFunctionCall == 1 ) + CallbackParameters_t xCallbackParameters; + #endif /* INCLUDE_xTimerPendFunctionCall */ + } u; +} DaemonTaskMessage_t; + +/*lint -save -e956 A manual analysis and inspection has been used to determine +which static variables must be declared volatile. */ + +/* The list in which active timers are stored. Timers are referenced in expire +time order, with the nearest expiry time at the front of the list. Only the +timer service task is allowed to access these lists. +xActiveTimerList1 and xActiveTimerList2 could be at function scope but that +breaks some kernel aware debuggers, and debuggers that reply on removing the +static qualifier. */ +PRIVILEGED_DATA static List_t xActiveTimerList1; +PRIVILEGED_DATA static List_t xActiveTimerList2; +PRIVILEGED_DATA static List_t *pxCurrentTimerList; +PRIVILEGED_DATA static List_t *pxOverflowTimerList; + +/* A queue that is used to send commands to the timer service task. */ +PRIVILEGED_DATA static QueueHandle_t xTimerQueue = NULL; +PRIVILEGED_DATA static TaskHandle_t xTimerTaskHandle = NULL; + +/*lint -restore */ + +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + /* If static allocation is supported then the application must provide the + following callback function - which enables the application to optionally + provide the memory that will be used by the timer task as the task's stack + and TCB. */ + extern void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize ); + +#endif + +/* + * Initialise the infrastructure used by the timer service task if it has not + * been initialised already. + */ +static void prvCheckForValidListAndQueue( void ) PRIVILEGED_FUNCTION; + +/* + * The timer service task (daemon). Timer functionality is controlled by this + * task. Other tasks communicate with the timer service task using the + * xTimerQueue queue. + */ +static portTASK_FUNCTION_PROTO( prvTimerTask, pvParameters ) PRIVILEGED_FUNCTION; + +/* + * Called by the timer service task to interpret and process a command it + * received on the timer queue. + */ +static void prvProcessReceivedCommands( void ) PRIVILEGED_FUNCTION; + +/* + * Insert the timer into either xActiveTimerList1, or xActiveTimerList2, + * depending on if the expire time causes a timer counter overflow. + */ +static BaseType_t prvInsertTimerInActiveList( Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime ) PRIVILEGED_FUNCTION; + +/* + * An active timer has reached its expire time. Reload the timer if it is an + * auto reload timer, then call its callback. + */ +static void prvProcessExpiredTimer( const TickType_t xNextExpireTime, const TickType_t xTimeNow ) PRIVILEGED_FUNCTION; + +/* + * The tick count has overflowed. Switch the timer lists after ensuring the + * current timer list does not still reference some timers. + */ +static void prvSwitchTimerLists( void ) PRIVILEGED_FUNCTION; + +/* + * Obtain the current tick count, setting *pxTimerListsWereSwitched to pdTRUE + * if a tick count overflow occurred since prvSampleTimeNow() was last called. + */ +static TickType_t prvSampleTimeNow( BaseType_t * const pxTimerListsWereSwitched ) PRIVILEGED_FUNCTION; + +/* + * If the timer list contains any active timers then return the expire time of + * the timer that will expire first and set *pxListWasEmpty to false. If the + * timer list does not contain any timers then return 0 and set *pxListWasEmpty + * to pdTRUE. + */ +static TickType_t prvGetNextExpireTime( BaseType_t * const pxListWasEmpty ) PRIVILEGED_FUNCTION; + +/* + * If a timer has expired, process it. Otherwise, block the timer service task + * until either a timer does expire or a command is received. + */ +static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, BaseType_t xListWasEmpty ) PRIVILEGED_FUNCTION; + +/* + * Called after a Timer_t structure has been allocated either statically or + * dynamically to fill in the structure's members. + */ +static void prvInitialiseNewTimer( const char * const pcTimerName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const TickType_t xTimerPeriodInTicks, + const UBaseType_t uxAutoReload, + void * const pvTimerID, + TimerCallbackFunction_t pxCallbackFunction, + Timer_t *pxNewTimer ) PRIVILEGED_FUNCTION; +/*-----------------------------------------------------------*/ + +BaseType_t xTimerCreateTimerTask( void ) +{ +BaseType_t xReturn = pdFAIL; + + /* This function is called when the scheduler is started if + configUSE_TIMERS is set to 1. Check that the infrastructure used by the + timer service task has been created/initialised. If timers have already + been created then the initialisation will already have been performed. */ + prvCheckForValidListAndQueue(); + + if( xTimerQueue != NULL ) + { + #if( configSUPPORT_STATIC_ALLOCATION == 1 ) + { + StaticTask_t *pxTimerTaskTCBBuffer = NULL; + StackType_t *pxTimerTaskStackBuffer = NULL; + uint32_t ulTimerTaskStackSize; + + vApplicationGetTimerTaskMemory( &pxTimerTaskTCBBuffer, &pxTimerTaskStackBuffer, &ulTimerTaskStackSize ); + xTimerTaskHandle = xTaskCreateStatic( prvTimerTask, + configTIMER_SERVICE_TASK_NAME, + ulTimerTaskStackSize, + NULL, + ( ( UBaseType_t ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, + pxTimerTaskStackBuffer, + pxTimerTaskTCBBuffer ); + + if( xTimerTaskHandle != NULL ) + { + xReturn = pdPASS; + } + } + #else + { + xReturn = xTaskCreate( prvTimerTask, + configTIMER_SERVICE_TASK_NAME, + configTIMER_TASK_STACK_DEPTH, + NULL, + ( ( UBaseType_t ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, + &xTimerTaskHandle ); + } + #endif /* configSUPPORT_STATIC_ALLOCATION */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + configASSERT( xReturn ); + return xReturn; +} +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + + TimerHandle_t xTimerCreate( const char * const pcTimerName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const TickType_t xTimerPeriodInTicks, + const UBaseType_t uxAutoReload, + void * const pvTimerID, + TimerCallbackFunction_t pxCallbackFunction ) + { + Timer_t *pxNewTimer; + + pxNewTimer = ( Timer_t * ) pvPortMalloc( sizeof( Timer_t ) ); /*lint !e9087 !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack, and the first member of Timer_t is always a pointer to the timer's mame. */ + + if( pxNewTimer != NULL ) + { + /* Status is thus far zero as the timer is not created statically + and has not been started. The autoreload bit may get set in + prvInitialiseNewTimer. */ + pxNewTimer->ucStatus = 0x00; + prvInitialiseNewTimer( pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxNewTimer ); + } + + return pxNewTimer; + } + +#endif /* configSUPPORT_DYNAMIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + TimerHandle_t xTimerCreateStatic( const char * const pcTimerName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const TickType_t xTimerPeriodInTicks, + const UBaseType_t uxAutoReload, + void * const pvTimerID, + TimerCallbackFunction_t pxCallbackFunction, + StaticTimer_t *pxTimerBuffer ) + { + Timer_t *pxNewTimer; + + #if( configASSERT_DEFINED == 1 ) + { + /* Sanity check that the size of the structure used to declare a + variable of type StaticTimer_t equals the size of the real timer + structure. */ + volatile size_t xSize = sizeof( StaticTimer_t ); + configASSERT( xSize == sizeof( Timer_t ) ); + ( void ) xSize; /* Keeps lint quiet when configASSERT() is not defined. */ + } + #endif /* configASSERT_DEFINED */ + + /* A pointer to a StaticTimer_t structure MUST be provided, use it. */ + configASSERT( pxTimerBuffer ); + pxNewTimer = ( Timer_t * ) pxTimerBuffer; /*lint !e740 !e9087 StaticTimer_t is a pointer to a Timer_t, so guaranteed to be aligned and sized correctly (checked by an assert()), so this is safe. */ + + if( pxNewTimer != NULL ) + { + /* Timers can be created statically or dynamically so note this + timer was created statically in case it is later deleted. The + autoreload bit may get set in prvInitialiseNewTimer(). */ + pxNewTimer->ucStatus = tmrSTATUS_IS_STATICALLY_ALLOCATED; + + prvInitialiseNewTimer( pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxNewTimer ); + } + + return pxNewTimer; + } + +#endif /* configSUPPORT_STATIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +static void prvInitialiseNewTimer( const char * const pcTimerName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const TickType_t xTimerPeriodInTicks, + const UBaseType_t uxAutoReload, + void * const pvTimerID, + TimerCallbackFunction_t pxCallbackFunction, + Timer_t *pxNewTimer ) +{ + /* 0 is not a valid value for xTimerPeriodInTicks. */ + configASSERT( ( xTimerPeriodInTicks > 0 ) ); + + if( pxNewTimer != NULL ) + { + /* Ensure the infrastructure used by the timer service task has been + created/initialised. */ + prvCheckForValidListAndQueue(); + + /* Initialise the timer structure members using the function + parameters. */ + pxNewTimer->pcTimerName = pcTimerName; + pxNewTimer->xTimerPeriodInTicks = xTimerPeriodInTicks; + pxNewTimer->pvTimerID = pvTimerID; + pxNewTimer->pxCallbackFunction = pxCallbackFunction; + vListInitialiseItem( &( pxNewTimer->xTimerListItem ) ); + if( uxAutoReload != pdFALSE ) + { + pxNewTimer->ucStatus |= tmrSTATUS_IS_AUTORELOAD; + } + traceTIMER_CREATE( pxNewTimer ); + } +} +/*-----------------------------------------------------------*/ + +BaseType_t xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait ) +{ +BaseType_t xReturn = pdFAIL; +DaemonTaskMessage_t xMessage; + + configASSERT( xTimer ); + + /* Send a message to the timer service task to perform a particular action + on a particular timer definition. */ + if( xTimerQueue != NULL ) + { + /* Send a command to the timer service task to start the xTimer timer. */ + xMessage.xMessageID = xCommandID; + xMessage.u.xTimerParameters.xMessageValue = xOptionalValue; + xMessage.u.xTimerParameters.pxTimer = xTimer; + + if( xCommandID < tmrFIRST_FROM_ISR_COMMAND ) + { + if( xTaskGetSchedulerState() == taskSCHEDULER_RUNNING ) + { + xReturn = xQueueSendToBack( xTimerQueue, &xMessage, xTicksToWait ); + } + else + { + xReturn = xQueueSendToBack( xTimerQueue, &xMessage, tmrNO_DELAY ); + } + } + else + { + xReturn = xQueueSendToBackFromISR( xTimerQueue, &xMessage, pxHigherPriorityTaskWoken ); + } + + traceTIMER_COMMAND_SEND( xTimer, xCommandID, xOptionalValue, xReturn ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +TaskHandle_t xTimerGetTimerDaemonTaskHandle( void ) +{ + /* If xTimerGetTimerDaemonTaskHandle() is called before the scheduler has been + started, then xTimerTaskHandle will be NULL. */ + configASSERT( ( xTimerTaskHandle != NULL ) ); + return xTimerTaskHandle; +} +/*-----------------------------------------------------------*/ + +TickType_t xTimerGetPeriod( TimerHandle_t xTimer ) +{ +Timer_t *pxTimer = xTimer; + + configASSERT( xTimer ); + return pxTimer->xTimerPeriodInTicks; +} +/*-----------------------------------------------------------*/ + +void vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload ) +{ +Timer_t * pxTimer = xTimer; + + configASSERT( xTimer ); + taskENTER_CRITICAL(); + { + if( uxAutoReload != pdFALSE ) + { + pxTimer->ucStatus |= tmrSTATUS_IS_AUTORELOAD; + } + else + { + pxTimer->ucStatus &= ~tmrSTATUS_IS_AUTORELOAD; + } + } + taskEXIT_CRITICAL(); +} +/*-----------------------------------------------------------*/ + +TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer ) +{ +Timer_t * pxTimer = xTimer; +TickType_t xReturn; + + configASSERT( xTimer ); + xReturn = listGET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ) ); + return xReturn; +} +/*-----------------------------------------------------------*/ + +const char * pcTimerGetName( TimerHandle_t xTimer ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ +{ +Timer_t *pxTimer = xTimer; + + configASSERT( xTimer ); + return pxTimer->pcTimerName; +} +/*-----------------------------------------------------------*/ + +static void prvProcessExpiredTimer( const TickType_t xNextExpireTime, const TickType_t xTimeNow ) +{ +BaseType_t xResult; +Timer_t * const pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); /*lint !e9087 !e9079 void * is used as this macro is used with tasks and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + + /* Remove the timer from the list of active timers. A check has already + been performed to ensure the list is not empty. */ + ( void ) uxListRemove( &( pxTimer->xTimerListItem ) ); + traceTIMER_EXPIRED( pxTimer ); + + /* If the timer is an auto reload timer then calculate the next + expiry time and re-insert the timer in the list of active timers. */ + if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 ) + { + /* The timer is inserted into a list using a time relative to anything + other than the current time. It will therefore be inserted into the + correct list relative to the time this task thinks it is now. */ + if( prvInsertTimerInActiveList( pxTimer, ( xNextExpireTime + pxTimer->xTimerPeriodInTicks ), xTimeNow, xNextExpireTime ) != pdFALSE ) + { + /* The timer expired before it was added to the active timer + list. Reload it now. */ + xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xNextExpireTime, NULL, tmrNO_DELAY ); + configASSERT( xResult ); + ( void ) xResult; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + pxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE; + mtCOVERAGE_TEST_MARKER(); + } + + /* Call the timer callback. */ + pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer ); +} +/*-----------------------------------------------------------*/ + +static portTASK_FUNCTION( prvTimerTask, pvParameters ) +{ +TickType_t xNextExpireTime; +BaseType_t xListWasEmpty; + + /* Just to avoid compiler warnings. */ + ( void ) pvParameters; + + #if( configUSE_DAEMON_TASK_STARTUP_HOOK == 1 ) + { + extern void vApplicationDaemonTaskStartupHook( void ); + + /* Allow the application writer to execute some code in the context of + this task at the point the task starts executing. This is useful if the + application includes initialisation code that would benefit from + executing after the scheduler has been started. */ + vApplicationDaemonTaskStartupHook(); + } + #endif /* configUSE_DAEMON_TASK_STARTUP_HOOK */ + + for( ;; ) + { + /* Query the timers list to see if it contains any timers, and if so, + obtain the time at which the next timer will expire. */ + xNextExpireTime = prvGetNextExpireTime( &xListWasEmpty ); + + /* If a timer has expired, process it. Otherwise, block this task + until either a timer does expire, or a command is received. */ + prvProcessTimerOrBlockTask( xNextExpireTime, xListWasEmpty ); + + /* Empty the command queue. */ + prvProcessReceivedCommands(); + } +} +/*-----------------------------------------------------------*/ + +static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, BaseType_t xListWasEmpty ) +{ +TickType_t xTimeNow; +BaseType_t xTimerListsWereSwitched; + + vTaskSuspendAll(); + { + /* Obtain the time now to make an assessment as to whether the timer + has expired or not. If obtaining the time causes the lists to switch + then don't process this timer as any timers that remained in the list + when the lists were switched will have been processed within the + prvSampleTimeNow() function. */ + xTimeNow = prvSampleTimeNow( &xTimerListsWereSwitched ); + if( xTimerListsWereSwitched == pdFALSE ) + { + /* The tick count has not overflowed, has the timer expired? */ + if( ( xListWasEmpty == pdFALSE ) && ( xNextExpireTime <= xTimeNow ) ) + { + ( void ) xTaskResumeAll(); + prvProcessExpiredTimer( xNextExpireTime, xTimeNow ); + } + else + { + /* The tick count has not overflowed, and the next expire + time has not been reached yet. This task should therefore + block to wait for the next expire time or a command to be + received - whichever comes first. The following line cannot + be reached unless xNextExpireTime > xTimeNow, except in the + case when the current timer list is empty. */ + if( xListWasEmpty != pdFALSE ) + { + /* The current timer list is empty - is the overflow list + also empty? */ + xListWasEmpty = listLIST_IS_EMPTY( pxOverflowTimerList ); + } + + vQueueWaitForMessageRestricted( xTimerQueue, ( xNextExpireTime - xTimeNow ), xListWasEmpty ); + + if( xTaskResumeAll() == pdFALSE ) + { + /* Yield to wait for either a command to arrive, or the + block time to expire. If a command arrived between the + critical section being exited and this yield then the yield + will not cause the task to block. */ + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + else + { + ( void ) xTaskResumeAll(); + } + } +} +/*-----------------------------------------------------------*/ + +static TickType_t prvGetNextExpireTime( BaseType_t * const pxListWasEmpty ) +{ +TickType_t xNextExpireTime; + + /* Timers are listed in expiry time order, with the head of the list + referencing the task that will expire first. Obtain the time at which + the timer with the nearest expiry time will expire. If there are no + active timers then just set the next expire time to 0. That will cause + this task to unblock when the tick count overflows, at which point the + timer lists will be switched and the next expiry time can be + re-assessed. */ + *pxListWasEmpty = listLIST_IS_EMPTY( pxCurrentTimerList ); + if( *pxListWasEmpty == pdFALSE ) + { + xNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList ); + } + else + { + /* Ensure the task unblocks when the tick count rolls over. */ + xNextExpireTime = ( TickType_t ) 0U; + } + + return xNextExpireTime; +} +/*-----------------------------------------------------------*/ + +static TickType_t prvSampleTimeNow( BaseType_t * const pxTimerListsWereSwitched ) +{ +TickType_t xTimeNow; +PRIVILEGED_DATA static TickType_t xLastTime = ( TickType_t ) 0U; /*lint !e956 Variable is only accessible to one task. */ + + xTimeNow = xTaskGetTickCount(); + + if( xTimeNow < xLastTime ) + { + prvSwitchTimerLists(); + *pxTimerListsWereSwitched = pdTRUE; + } + else + { + *pxTimerListsWereSwitched = pdFALSE; + } + + xLastTime = xTimeNow; + + return xTimeNow; +} +/*-----------------------------------------------------------*/ + +static BaseType_t prvInsertTimerInActiveList( Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime ) +{ +BaseType_t xProcessTimerNow = pdFALSE; + + listSET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ), xNextExpiryTime ); + listSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer ); + + if( xNextExpiryTime <= xTimeNow ) + { + /* Has the expiry time elapsed between the command to start/reset a + timer was issued, and the time the command was processed? */ + if( ( ( TickType_t ) ( xTimeNow - xCommandTime ) ) >= pxTimer->xTimerPeriodInTicks ) /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + { + /* The time between a command being issued and the command being + processed actually exceeds the timers period. */ + xProcessTimerNow = pdTRUE; + } + else + { + vListInsert( pxOverflowTimerList, &( pxTimer->xTimerListItem ) ); + } + } + else + { + if( ( xTimeNow < xCommandTime ) && ( xNextExpiryTime >= xCommandTime ) ) + { + /* If, since the command was issued, the tick count has overflowed + but the expiry time has not, then the timer must have already passed + its expiry time and should be processed immediately. */ + xProcessTimerNow = pdTRUE; + } + else + { + vListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) ); + } + } + + return xProcessTimerNow; +} +/*-----------------------------------------------------------*/ + +static void prvProcessReceivedCommands( void ) +{ +DaemonTaskMessage_t xMessage; +Timer_t *pxTimer; +BaseType_t xTimerListsWereSwitched, xResult; +TickType_t xTimeNow; + + while( xQueueReceive( xTimerQueue, &xMessage, tmrNO_DELAY ) != pdFAIL ) /*lint !e603 xMessage does not have to be initialised as it is passed out, not in, and it is not used unless xQueueReceive() returns pdTRUE. */ + { + #if ( INCLUDE_xTimerPendFunctionCall == 1 ) + { + /* Negative commands are pended function calls rather than timer + commands. */ + if( xMessage.xMessageID < ( BaseType_t ) 0 ) + { + const CallbackParameters_t * const pxCallback = &( xMessage.u.xCallbackParameters ); + + /* The timer uses the xCallbackParameters member to request a + callback be executed. Check the callback is not NULL. */ + configASSERT( pxCallback ); + + /* Call the function. */ + pxCallback->pxCallbackFunction( pxCallback->pvParameter1, pxCallback->ulParameter2 ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* INCLUDE_xTimerPendFunctionCall */ + + /* Commands that are positive are timer commands rather than pended + function calls. */ + if( xMessage.xMessageID >= ( BaseType_t ) 0 ) + { + /* The messages uses the xTimerParameters member to work on a + software timer. */ + pxTimer = xMessage.u.xTimerParameters.pxTimer; + + if( listIS_CONTAINED_WITHIN( NULL, &( pxTimer->xTimerListItem ) ) == pdFALSE ) /*lint !e961. The cast is only redundant when NULL is passed into the macro. */ + { + /* The timer is in a list, remove it. */ + ( void ) uxListRemove( &( pxTimer->xTimerListItem ) ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + traceTIMER_COMMAND_RECEIVED( pxTimer, xMessage.xMessageID, xMessage.u.xTimerParameters.xMessageValue ); + + /* In this case the xTimerListsWereSwitched parameter is not used, but + it must be present in the function call. prvSampleTimeNow() must be + called after the message is received from xTimerQueue so there is no + possibility of a higher priority task adding a message to the message + queue with a time that is ahead of the timer daemon task (because it + pre-empted the timer daemon task after the xTimeNow value was set). */ + xTimeNow = prvSampleTimeNow( &xTimerListsWereSwitched ); + + switch( xMessage.xMessageID ) + { + case tmrCOMMAND_START : + case tmrCOMMAND_START_FROM_ISR : + case tmrCOMMAND_RESET : + case tmrCOMMAND_RESET_FROM_ISR : + case tmrCOMMAND_START_DONT_TRACE : + /* Start or restart a timer. */ + pxTimer->ucStatus |= tmrSTATUS_IS_ACTIVE; + if( prvInsertTimerInActiveList( pxTimer, xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, xTimeNow, xMessage.u.xTimerParameters.xMessageValue ) != pdFALSE ) + { + /* The timer expired before it was added to the active + timer list. Process it now. */ + pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer ); + traceTIMER_EXPIRED( pxTimer ); + + if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 ) + { + xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, NULL, tmrNO_DELAY ); + configASSERT( xResult ); + ( void ) xResult; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + break; + + case tmrCOMMAND_STOP : + case tmrCOMMAND_STOP_FROM_ISR : + /* The timer has already been removed from the active list. */ + pxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE; + break; + + case tmrCOMMAND_CHANGE_PERIOD : + case tmrCOMMAND_CHANGE_PERIOD_FROM_ISR : + pxTimer->ucStatus |= tmrSTATUS_IS_ACTIVE; + pxTimer->xTimerPeriodInTicks = xMessage.u.xTimerParameters.xMessageValue; + configASSERT( ( pxTimer->xTimerPeriodInTicks > 0 ) ); + + /* The new period does not really have a reference, and can + be longer or shorter than the old one. The command time is + therefore set to the current time, and as the period cannot + be zero the next expiry time can only be in the future, + meaning (unlike for the xTimerStart() case above) there is + no fail case that needs to be handled here. */ + ( void ) prvInsertTimerInActiveList( pxTimer, ( xTimeNow + pxTimer->xTimerPeriodInTicks ), xTimeNow, xTimeNow ); + break; + + case tmrCOMMAND_DELETE : + #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + { + /* The timer has already been removed from the active list, + just free up the memory if the memory was dynamically + allocated. */ + if( ( pxTimer->ucStatus & tmrSTATUS_IS_STATICALLY_ALLOCATED ) == ( uint8_t ) 0 ) + { + vPortFree( pxTimer ); + } + else + { + pxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE; + } + } + #else + { + /* If dynamic allocation is not enabled, the memory + could not have been dynamically allocated. So there is + no need to free the memory - just mark the timer as + "not active". */ + pxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE; + } + #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ + break; + + default : + /* Don't expect to get here. */ + break; + } + } + } +} +/*-----------------------------------------------------------*/ + +static void prvSwitchTimerLists( void ) +{ +TickType_t xNextExpireTime, xReloadTime; +List_t *pxTemp; +Timer_t *pxTimer; +BaseType_t xResult; + + /* The tick count has overflowed. The timer lists must be switched. + If there are any timers still referenced from the current timer list + then they must have expired and should be processed before the lists + are switched. */ + while( listLIST_IS_EMPTY( pxCurrentTimerList ) == pdFALSE ) + { + xNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList ); + + /* Remove the timer from the list. */ + pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); /*lint !e9087 !e9079 void * is used as this macro is used with tasks and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + ( void ) uxListRemove( &( pxTimer->xTimerListItem ) ); + traceTIMER_EXPIRED( pxTimer ); + + /* Execute its callback, then send a command to restart the timer if + it is an auto-reload timer. It cannot be restarted here as the lists + have not yet been switched. */ + pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer ); + + if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 ) + { + /* Calculate the reload value, and if the reload value results in + the timer going into the same timer list then it has already expired + and the timer should be re-inserted into the current list so it is + processed again within this loop. Otherwise a command should be sent + to restart the timer to ensure it is only inserted into a list after + the lists have been swapped. */ + xReloadTime = ( xNextExpireTime + pxTimer->xTimerPeriodInTicks ); + if( xReloadTime > xNextExpireTime ) + { + listSET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ), xReloadTime ); + listSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer ); + vListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) ); + } + else + { + xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xNextExpireTime, NULL, tmrNO_DELAY ); + configASSERT( xResult ); + ( void ) xResult; + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + pxTemp = pxCurrentTimerList; + pxCurrentTimerList = pxOverflowTimerList; + pxOverflowTimerList = pxTemp; +} +/*-----------------------------------------------------------*/ + +static void prvCheckForValidListAndQueue( void ) +{ + /* Check that the list from which active timers are referenced, and the + queue used to communicate with the timer service, have been + initialised. */ + taskENTER_CRITICAL(); + { + if( xTimerQueue == NULL ) + { + vListInitialise( &xActiveTimerList1 ); + vListInitialise( &xActiveTimerList2 ); + pxCurrentTimerList = &xActiveTimerList1; + pxOverflowTimerList = &xActiveTimerList2; + + #if( configSUPPORT_STATIC_ALLOCATION == 1 ) + { + /* The timer queue is allocated statically in case + configSUPPORT_DYNAMIC_ALLOCATION is 0. */ + static StaticQueue_t xStaticTimerQueue; /*lint !e956 Ok to declare in this manner to prevent additional conditional compilation guards in other locations. */ + static uint8_t ucStaticTimerQueueStorage[ ( size_t ) configTIMER_QUEUE_LENGTH * sizeof( DaemonTaskMessage_t ) ]; /*lint !e956 Ok to declare in this manner to prevent additional conditional compilation guards in other locations. */ + + xTimerQueue = xQueueCreateStatic( ( UBaseType_t ) configTIMER_QUEUE_LENGTH, ( UBaseType_t ) sizeof( DaemonTaskMessage_t ), &( ucStaticTimerQueueStorage[ 0 ] ), &xStaticTimerQueue ); + } + #else + { + xTimerQueue = xQueueCreate( ( UBaseType_t ) configTIMER_QUEUE_LENGTH, sizeof( DaemonTaskMessage_t ) ); + } + #endif + + #if ( configQUEUE_REGISTRY_SIZE > 0 ) + { + if( xTimerQueue != NULL ) + { + vQueueAddToRegistry( xTimerQueue, "TmrQ" ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configQUEUE_REGISTRY_SIZE */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); +} +/*-----------------------------------------------------------*/ + +BaseType_t xTimerIsTimerActive( TimerHandle_t xTimer ) +{ +BaseType_t xReturn; +Timer_t *pxTimer = xTimer; + + configASSERT( xTimer ); + + /* Is the timer in the list of active timers? */ + taskENTER_CRITICAL(); + { + if( ( pxTimer->ucStatus & tmrSTATUS_IS_ACTIVE ) == 0 ) + { + xReturn = pdFALSE; + } + else + { + xReturn = pdTRUE; + } + } + taskEXIT_CRITICAL(); + + return xReturn; +} /*lint !e818 Can't be pointer to const due to the typedef. */ +/*-----------------------------------------------------------*/ + +void *pvTimerGetTimerID( const TimerHandle_t xTimer ) +{ +Timer_t * const pxTimer = xTimer; +void *pvReturn; + + configASSERT( xTimer ); + + taskENTER_CRITICAL(); + { + pvReturn = pxTimer->pvTimerID; + } + taskEXIT_CRITICAL(); + + return pvReturn; +} +/*-----------------------------------------------------------*/ + +void vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID ) +{ +Timer_t * const pxTimer = xTimer; + + configASSERT( xTimer ); + + taskENTER_CRITICAL(); + { + pxTimer->pvTimerID = pvNewID; + } + taskEXIT_CRITICAL(); +} +/*-----------------------------------------------------------*/ + +#if( INCLUDE_xTimerPendFunctionCall == 1 ) + + BaseType_t xTimerPendFunctionCallFromISR( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, BaseType_t *pxHigherPriorityTaskWoken ) + { + DaemonTaskMessage_t xMessage; + BaseType_t xReturn; + + /* Complete the message with the function parameters and post it to the + daemon task. */ + xMessage.xMessageID = tmrCOMMAND_EXECUTE_CALLBACK_FROM_ISR; + xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend; + xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1; + xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2; + + xReturn = xQueueSendFromISR( xTimerQueue, &xMessage, pxHigherPriorityTaskWoken ); + + tracePEND_FUNC_CALL_FROM_ISR( xFunctionToPend, pvParameter1, ulParameter2, xReturn ); + + return xReturn; + } + +#endif /* INCLUDE_xTimerPendFunctionCall */ +/*-----------------------------------------------------------*/ + +#if( INCLUDE_xTimerPendFunctionCall == 1 ) + + BaseType_t xTimerPendFunctionCall( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait ) + { + DaemonTaskMessage_t xMessage; + BaseType_t xReturn; + + /* This function can only be called after a timer has been created or + after the scheduler has been started because, until then, the timer + queue does not exist. */ + configASSERT( xTimerQueue ); + + /* Complete the message with the function parameters and post it to the + daemon task. */ + xMessage.xMessageID = tmrCOMMAND_EXECUTE_CALLBACK; + xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend; + xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1; + xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2; + + xReturn = xQueueSendToBack( xTimerQueue, &xMessage, xTicksToWait ); + + tracePEND_FUNC_CALL( xFunctionToPend, pvParameter1, ulParameter2, xReturn ); + + return xReturn; + } + +#endif /* INCLUDE_xTimerPendFunctionCall */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + UBaseType_t uxTimerGetTimerNumber( TimerHandle_t xTimer ) + { + return ( ( Timer_t * ) xTimer )->uxTimerNumber; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + void vTimerSetTimerNumber( TimerHandle_t xTimer, UBaseType_t uxTimerNumber ) + { + ( ( Timer_t * ) xTimer )->uxTimerNumber = uxTimerNumber; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +/* This entire source file will be skipped if the application is not configured +to include software timer functionality. If you want to include software timer +functionality then ensure configUSE_TIMERS is set to 1 in FreeRTOSConfig.h. */ +#endif /* configUSE_TIMERS == 1 */ + + + diff --git a/components/shell/CMakeLists.txt b/components/shell/CMakeLists.txt new file mode 100644 index 00000000..8bd8cf94 --- /dev/null +++ b/components/shell/CMakeLists.txt @@ -0,0 +1,49 @@ +################# Add global include ################# +list(APPEND ADD_INCLUDE +"${CMAKE_CURRENT_SOURCE_DIR}" + +) +####################################################### + +################# Add private include ################# +# list(APPEND ADD_PRIVATE_INCLUDE + +# ) +####################################################### + +############## Add current dir source files ########### +file(GLOB_RECURSE sources +"${CMAKE_CURRENT_SOURCE_DIR}/*.c") +#aux_source_directory(. sources) +list(APPEND ADD_SRCS ${sources}) +#list(REMOVE_ITEM ADD_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/libc/src/strtox.c" "${CMAKE_CURRENT_SOURCE_DIR}/libc/src/atox.c") +####################################################### + +########### Add required/dependent components ######### +#list(APPEND ADD_REQUIREMENTS BSP_${BOARD}_Driver) +####################################################### + +############ Add static libs ########################## +# if(CONFIG_COMPONENT1_INCLUDE_STATIC_LIB) +# list(APPEND ADD_STATIC_LIB "lib/libtest.a") +# endif() +####################################################### + +############ Add dynamic libs ######################### +# list(APPEND ADD_DYNAMIC_LIB "lib/arch/v831/libmaix_nn.so" +# "lib/arch/v831/libmaix_cam.so" +# ) +####################################################### + +############ Add global compile option ################ +#add components denpend on this component +#list(APPEND ADD_DEFINITIONS -D${BOARD} -DARCH_RISCV) +####################################################### + +############ Add private compile option ################ +#add compile option for this component that won't affect other modules +#list(APPEND ADD_DEFINITIONS_PRIVATE -D${BOARD}_DRIVER) +####################################################### + + +generate_library() diff --git a/components/shell/drv_shell.c b/components/shell/drv_shell.c new file mode 100644 index 00000000..7df72834 --- /dev/null +++ b/components/shell/drv_shell.c @@ -0,0 +1,2085 @@ +/** + * @file drv_shell.c + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "drv_shell.h" +#include "string.h" +#include "stdio.h" +#include "stdarg.h" + + +#if SHELL_USING_CMD_EXPORT == 1 +/** + * @brief 默认用户 + */ +const char shellCmdDefaultUser[] = SHELL_DEFAULT_USER; +const char shellPasswordDefaultUser[] = SHELL_DEFAULT_USER_PASSWORD; +const char shellDesDefaultUser[] = "default user"; +const ShellCommand shellUserDefault SECTION("shellCommand") = +{ + .attr.value = SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_USER), + .data.user.name = shellCmdDefaultUser, + .data.user.password = shellPasswordDefaultUser, + .data.user.desc = shellDesDefaultUser +}; +#endif + +#if SHELL_USING_CMD_EXPORT == 1 + #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && __ARMCC_VERSION >= 6000000) + extern const unsigned int shellCommand$$Base; + extern const unsigned int shellCommand$$Limit; + #elif defined(__ICCARM__) || defined(__ICCRX__) + #pragma section="shellCommand" + #elif defined(__GNUC__) + extern const unsigned int _shell_command_start; + extern const unsigned int _shell_command_end; + #endif +#else + extern const ShellCommand shellCommandList[]; + extern const unsigned short shellCommandCount; +#endif + + +/** + * @brief shell 常量文本索引 + */ +enum +{ + SHELL_TEXT_INFO, /**< shell信息 */ + SHELL_TEXT_CMD_TOO_LONG, /**< 命令过长 */ + SHELL_TEXT_CMD_LIST, /**< 可执行命令列表标题 */ + SHELL_TEXT_VAR_LIST, /**< 变量列表标题 */ + SHELL_TEXT_USER_LIST, /**< 用户列表标题 */ + SHELL_TEXT_KEY_LIST, /**< 按键列表标题 */ + SHELL_TEXT_CMD_NOT_FOUND, /**< 命令未找到 */ + SHELL_TEXT_POINT_CANNOT_MODIFY, /**< 指针变量不允许修改 */ + SHELL_TEXT_VAL_CANNOT_MODIFY, /**< 常量不允许修改 */ + SHELL_TEXT_NOT_VAR, /**< 命令不是变量 */ + SHELL_TEXT_VAR_NOT_FOUND, /**< 变量未找到 */ + SHELL_TEXT_HELP_HEADER, /**< help头 */ + SHELL_TEXT_PASSWORD_HINT, /**< 密码输入提示 */ + SHELL_TEXT_PASSWORD_ERROR, /**< 密码错误 */ + SHELL_TEXT_CLEAR_CONSOLE, /**< 清空控制台 */ + SHELL_TEXT_TYPE_CMD, /**< 命令类型 */ + SHELL_TEXT_TYPE_VAR, /**< 变量类型 */ + SHELL_TEXT_TYPE_USER, /**< 用户类型 */ + SHELL_TEXT_TYPE_KEY, /**< 按键类型 */ + SHELL_TEXT_TYPE_NONE, /**< 非法类型 */ +}; + + +static const char *shellText[] = +{ +#if SHELL_SHOW_INFO == 1 + [SHELL_TEXT_INFO] = + "\r\n" + " ____ __ __ _ _ _ \r\n" + " | _ \\ / _|/ _| | | | | | | \r\n" + " | |_) | ___ _ _| |_| |_ __ _| | ___ | | __ _| |__ \r\n" + " | _ < / _ \\| | | | _| _/ _` | |/ _ \\| |/ _` | '_ \\ \r\n" + " | |_) | (_) | |_| | | | || (_| | | (_) | | (_| | |_) |\r\n" + " |____/ \\___/ \\__,_|_| |_| \\__,_|_|\\___/|_|\\__,_|_.__/ \r\n" + "\r\n" + "Build: "__DATE__" "__TIME__"\r\n" + "Version: "SHELL_VERSION"\r\n", +#endif + [SHELL_TEXT_CMD_TOO_LONG] = + "\r\nWarning: Command is too long\r\n", + [SHELL_TEXT_CMD_LIST] = + "\r\nCommand List:\r\n", + [SHELL_TEXT_VAR_LIST] = + "\r\nVar List:\r\n", + [SHELL_TEXT_USER_LIST] = + "\r\nUser List:\r\n", + [SHELL_TEXT_KEY_LIST] = + "\r\nKey List:\r\n", + [SHELL_TEXT_CMD_NOT_FOUND] = + "Command not Found\r\n", + [SHELL_TEXT_POINT_CANNOT_MODIFY] = + "can't set pointer\r\n", + [SHELL_TEXT_VAL_CANNOT_MODIFY] = + "can't set val\r\n", + [SHELL_TEXT_NOT_VAR] = + " is not a var\r\n", + [SHELL_TEXT_VAR_NOT_FOUND] = + "Var not Fount\r\n", + [SHELL_TEXT_HELP_HEADER] = + "command help of ", + [SHELL_TEXT_PASSWORD_HINT] = + "\r\nPlease input password:", + [SHELL_TEXT_PASSWORD_ERROR] = + "\r\npassword error\r\n", + [SHELL_TEXT_CLEAR_CONSOLE] = + "\033[2J\033[1H", + [SHELL_TEXT_TYPE_CMD] = + "CMD ", + [SHELL_TEXT_TYPE_VAR] = + "VAR ", + [SHELL_TEXT_TYPE_USER] = + "USER", + [SHELL_TEXT_TYPE_KEY] = + "KEY ", + [SHELL_TEXT_TYPE_NONE] = + "NONE", +}; + + +/** + * @brief shell对象表 + */ +static Shell *shellList[SHELL_MAX_NUMBER] = {NULL}; + + +static void shellAdd(Shell *shell); +static void shellWriteCommandLine(Shell *shell); +static void shellWriteReturnValue(Shell *shell, int value); +static void shellShowVar(Shell *shell, ShellCommand *command); +static void shellSetUser(Shell *shell, const ShellCommand *user); +ShellCommand* shellSeekCommand(Shell *shell, + const char *cmd, + ShellCommand *base, + unsigned short compareLength); + +/** + * @brief shell 初始化 + * + * @param shell shell对象 + */ +void shellInit(Shell *shell, char *buffer, unsigned short size) +{ + shell->parser.length = 0; + shell->parser.cursor = 0; + shell->history.offset = 0; + shell->history.number = 0; + shell->history.record = 0; + shell->info.user = NULL; + shell->status.isChecked = 1; + + shell->parser.buffer = buffer; + shell->parser.bufferSize = size / (SHELL_HISTORY_MAX_NUMBER + 1); + for (short i = 0; i < SHELL_HISTORY_MAX_NUMBER; i++) + { + shell->history.item[i] = buffer + shell->parser.bufferSize * (i + 1); + } + +#if SHELL_USING_CMD_EXPORT == 1 + #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && __ARMCC_VERSION >= 6000000) + shell->commandList.base = (ShellCommand *)(&shellCommand$$Base); + shell->commandList.count = ((unsigned int)(&shellCommand$$Limit) + - (unsigned int)(&shellCommand$$Base)) + / sizeof(ShellCommand); + + #elif defined(__ICCARM__) || defined(__ICCRX__) + shell->commandList.base = (ShellCommand *)(__section_begin("shellCommand")); + shell->commandList.count = ((unsigned int)(__section_end("shellCommand")) + - (unsigned int)(__section_begin("shellCommand"))) + / sizeof(ShellCommand); + #elif defined(__GNUC__) + shell->commandList.base = (ShellCommand *)(&_shell_command_start); + shell->commandList.count = ((unsigned int)(&_shell_command_end) + - (unsigned int)(&_shell_command_start)) + / sizeof(ShellCommand); + #else + #error not supported compiler, please use command table mode + #endif +#else + shell->commandList.base = (ShellCommand *)shellCommandList; + shell->commandList.count = shellCommandCount; +#endif + + shellAdd(shell); + + shellSetUser(shell, shellSeekCommand(shell, + SHELL_DEFAULT_USER, + shell->commandList.base, + 0)); + shellWriteCommandLine(shell); +} + + +/** + * @brief 添加shell + * + * @param shell shell对象 + */ +static void shellAdd(Shell *shell) +{ + for (short i = 0; i < SHELL_MAX_NUMBER; i++) + { + if (shellList[i] == NULL) + { + shellList[i] = shell; + return; + } + } +} + + +/** + * @brief 获取当前活动shell + * + * @return Shell* 当前活动shell对象 + */ +Shell* shellGetCurrent(void) +{ + for (short i = 0; i < SHELL_MAX_NUMBER; i++) + { + if (shellList[i] && shellList[i]->status.isActive) + { + return shellList[i]; + } + } + return NULL; +} + + +/** + * @brief shell写字符 + * + * @param shell shell对象 + * @param data 字符数据 + */ +static void shellWriteByte(Shell *shell, const char data) +{ + shell->write(data); +} + + +/** + * @brief shell 写字符串 + * + * @param shell shell对象 + * @param string 字符串数据 + * + * @return unsigned short 写入字符的数量 + */ +unsigned short shellWriteString(Shell *shell, const char *string) +{ + unsigned short count = 0; + SHELL_ASSERT(shell->write, return 0); + while(*string) + { + shell->write(*string ++); + count ++; + } + return count; +} + + +/** + * @brief shell 写命令描述字符串 + * + * @param shell shell对象 + * @param string 字符串数据 + * + * @return unsigned short 写入字符的数量 + */ +static unsigned short shellWriteCommandDesc(Shell *shell, const char *string) +{ + unsigned short count = 0; + SHELL_ASSERT(shell->write, return 0); + while(*string + && *string != '\r' + && *string != '\n' + && count < 36) + { + shell->write(*string ++); + count ++; + if (count >= 36 && *(string + 1)) + { + shell->write('.'); + shell->write('.'); + shell->write('.'); + } + } + return count; +} + + +/** + * @brief shell写命令提示符 + * + * @param shell shell对象 + * + */ +static void shellWriteCommandLine(Shell *shell) +{ + if (shell->status.isChecked) + { + shellWriteString(shell, "\r\n"); + shellWriteString(shell, shell->info.user->data.user.name); + shellWriteString(shell, "/> "); + } + else + { + shellWriteString(shell, shellText[SHELL_TEXT_PASSWORD_HINT]); + } +} + + +#if SHELL_PRINT_BUFFER > 0 +/** + * @brief shell格式化输出 + * + * @param shell shell对象 + * @param fmt 格式化字符串 + * @param ... 参数 + */ +void shellPrint(Shell *shell, char *fmt, ...) +{ + char buffer[SHELL_PRINT_BUFFER]; + va_list vargs; + + SHELL_ASSERT(shell, return); + + va_start(vargs, fmt); + vsnprintf(buffer, SHELL_PRINT_BUFFER - 1, fmt, vargs); + va_end(vargs); + + shellWriteString(shell, buffer); +} +#endif + + +/** + * @brief shell 检查命令权限 + * + * @param shell shell对象 + * @param command ShellCommand + * + * @return signed char 0 当前用户具有该命令权限 + * @return signec char -1 当前用户不具有该命令权限 + */ +signed char shellCheckPermission(Shell *shell, ShellCommand *command) +{ + return ((!command->attr.attrs.permission + || command->attr.attrs.type == SHELL_TYPE_USER + || (command->attr.attrs.permission + & shell->info.user->attr.attrs.permission)) + && (shell->status.isChecked + || command->attr.attrs.enableUnchecked)) + ? 0 : -1; +} + + +/** + * @brief int转16进制字符串 + * + * @param value 数值 + * @param buffer 缓冲 + * + * @return signed char 转换后有效数据长度 + */ +signed char shellToHex(unsigned int value, char *buffer) +{ + char byte; + unsigned char i = 8; + buffer[8] = 0; + while (value) + { + byte = value & 0x0000000F; + buffer[--i] = (byte > 9) ? (byte + 87) : (byte + 48); + value >>= 4; + } + return 8 - i; +} + + +/** +* @brief int转10进制字符串 + * + * @param value 数值 + * @param buffer 缓冲 + * + * @return signed char 转换后有效数据长度 + */ +signed char shellToDec(int value, char *buffer) +{ + unsigned char i = 11; + int v = value; + if (value < 0) + { + v = -value; + } + buffer[11] = 0; + while (v) + { + buffer[--i] = v % 10 + 48; + v /= 10; + } + if (value < 0) + { + buffer[--i] = '-'; + } + if (value == 0) { + buffer[--i] = '0'; + } + return 11 - i; +} + + +/** + * @brief shell字符串复制 + * + * @param dest 目标字符串 + * @param src 源字符串 + * @return unsigned short 字符串长度 + */ +static unsigned short shellStringCopy(char *dest, char* src) +{ + unsigned short count = 0; + while (*(src + count)) + { + *(dest + count) = *(src + count); + count++; + } + *(dest + count) = 0; + return count; +} + + +/** + * @brief shell字符串比较 + * + * @param dest 目标字符串 + * @param src 源字符串 + * @return unsigned short 匹配长度 + */ +static unsigned short shellStringCompare(char* dest, char *src) +{ + unsigned short match = 0; + unsigned short i = 0; + + while (*(dest +i) && *(src + i)) + { + if (*(dest + i) != *(src +i)) + { + break; + } + match ++; + i++; + } + return match; +} + + +/** + * @brief shell获取命令名 + * + * @param command 命令 + * @return const char* 命令名 + */ +static const char* shellGetCommandName(ShellCommand *command) +{ + static char buffer[9]; + for (unsigned char i = 0; i < 9; i++) + { + buffer[i] = '0'; + } + if (command->attr.attrs.type <= SHELL_TYPE_CMD_FUNC) + { + return command->data.cmd.name; + } + else if (command->attr.attrs.type <= SHELL_TYPE_VAL) + { + return command->data.var.name; + } + else if (command->attr.attrs.type <= SHELL_TYPE_USER) + { + return command->data.user.name; + } + else + { + shellToHex(command->data.key.value, buffer); + return buffer; + } +} + + +/** + * @brief shell获取命令描述 + * + * @param command 命令 + * @return const char* 命令描述 + */ +static const char* shellGetCommandDesc(ShellCommand *command) +{ + if (command->attr.attrs.type <= SHELL_TYPE_CMD_FUNC) + { + return command->data.cmd.desc; + } + else if (command->attr.attrs.type <= SHELL_TYPE_VAL) + { + return command->data.var.desc; + } + else if (command->attr.attrs.type <= SHELL_TYPE_USER) + { + return command->data.user.desc; + } + else + { + return command->data.key.desc; + } +} + +/** + * @brief shell 列出命令条目 + * + * @param shell shell对象 + * @param item 命令条目 + */ +void shellListItem(Shell *shell, ShellCommand *item) +{ + short spaceLength; + + spaceLength = 22 - shellWriteString(shell, shellGetCommandName(item)); + spaceLength = (spaceLength > 0) ? spaceLength : 4; + do { + shellWriteByte(shell, ' '); + } while (--spaceLength); + if (item->attr.attrs.type <= SHELL_TYPE_CMD_FUNC) + { + shellWriteString(shell, shellText[SHELL_TEXT_TYPE_CMD]); + } + else if (item->attr.attrs.type <= SHELL_TYPE_VAL) + { + shellWriteString(shell, shellText[SHELL_TEXT_TYPE_VAR]); + } + else if (item->attr.attrs.type <= SHELL_TYPE_USER) + { + shellWriteString(shell, shellText[SHELL_TEXT_TYPE_USER]); + } + else if (item->attr.attrs.type <= SHELL_TYPE_KEY) + { + shellWriteString(shell, shellText[SHELL_TEXT_TYPE_KEY]); + } + else + { + shellWriteString(shell, shellText[SHELL_TEXT_TYPE_NONE]); + } +#if SHELL_HELP_SHOW_PERMISSION == 1 + shellWriteString(shell, " "); + for (signed char i = 7; i >= 0; i--) + { + shellWriteByte(shell, item->attr.attrs.permission & (1 << i) ? 'x' : '-'); + } +#endif + shellWriteString(shell, " "); + shellWriteCommandDesc(shell, shellGetCommandDesc(item)); + shellWriteString(shell, "\r\n"); +} + + +/** + * @brief shell列出可执行命令 + * + * @param shell shell对象 + */ +void shellListCommand(Shell *shell) +{ + ShellCommand *base = (ShellCommand *)shell->commandList.base; + shellWriteString(shell, shellText[SHELL_TEXT_CMD_LIST]); + for (short i = 0; i < shell->commandList.count; i++) + { + if (base[i].attr.attrs.type <= SHELL_TYPE_CMD_FUNC + && shellCheckPermission(shell, &base[i]) == 0) + { + shellListItem(shell, &base[i]); + } + } +} + + +/** + * @brief shell列出变量 + * + * @param shell shell对象 + */ +void shellListVar(Shell *shell) +{ + ShellCommand *base = (ShellCommand *)shell->commandList.base; + shellWriteString(shell, shellText[SHELL_TEXT_VAR_LIST]); + for (short i = 0; i < shell->commandList.count; i++) + { + if (base[i].attr.attrs.type > SHELL_TYPE_CMD_FUNC + && base[i].attr.attrs.type <= SHELL_TYPE_VAL + && shellCheckPermission(shell, &base[i]) == 0) + { + shellListItem(shell, &base[i]); + } + } +} + + +/** + * @brief shell列出用户 + * + * @param shell shell对象 + */ +void shellListUser(Shell *shell) +{ + ShellCommand *base = (ShellCommand *)shell->commandList.base; + shellWriteString(shell, shellText[SHELL_TEXT_USER_LIST]); + for (short i = 0; i < shell->commandList.count; i++) + { + if (base[i].attr.attrs.type > SHELL_TYPE_VAL + && base[i].attr.attrs.type <= SHELL_TYPE_USER + && shellCheckPermission(shell, &base[i]) == 0) + { + shellListItem(shell, &base[i]); + } + } +} + + +/** + * @brief shell列出按键 + * + * @param shell shell对象 + */ +void shellListKey(Shell *shell) +{ + ShellCommand *base = (ShellCommand *)shell->commandList.base; + shellWriteString(shell, shellText[SHELL_TEXT_KEY_LIST]); + for (short i = 0; i < shell->commandList.count; i++) + { + if (base[i].attr.attrs.type > SHELL_TYPE_USER + && base[i].attr.attrs.type <= SHELL_TYPE_KEY + && shellCheckPermission(shell, &base[i]) == 0) + { + shellListItem(shell, &base[i]); + } + } +} + + +/** + * @brief shell列出所有命令 + * + * @param shell shell对象 + */ +void shellListAll(Shell *shell) +{ +#if SHELL_HELP_LIST_USER == 1 + shellListUser(shell); +#endif + shellListCommand(shell); +#if SHELL_HELP_LIST_VAR == 1 + shellListVar(shell); +#endif +#if SHELL_HELP_LIST_KEY == 1 + shellListKey(shell); +#endif +} + + +/** + * @brief shell删除命令行数据 + * + * @param shell shell对象 + * @param length 删除长度 + */ +void shellDeleteCommandLine(Shell *shell, unsigned char length) +{ + while (length--) + { + shellWriteString(shell, "\b \b"); + } +} + + +/** + * @brief shell 清空命令行输入 + * + * @param shell shell对象 + */ +void shellClearCommandLine(Shell *shell) +{ + for (short i = shell->parser.length - shell->parser.cursor; i > 0; i--) + { + shellWriteByte(shell, ' '); + } + shellDeleteCommandLine(shell, shell->parser.length); +} + + +/** + * @brief shell插入一个字符到光标位置 + * + * @param shell shell对象 + * @param data 字符数据 + */ +void shellInsertByte(Shell *shell, char data) +{ + /* 判断输入数据是否过长 */ + if (shell->parser.length >= shell->parser.bufferSize - 1) + { + shellWriteString(shell, shellText[SHELL_TEXT_CMD_TOO_LONG]); + shellWriteCommandLine(shell); + shellWriteString(shell, shell->parser.buffer); + return; + } + + /* 插入数据 */ + if (shell->parser.cursor == shell->parser.length) + { + shell->parser.buffer[shell->parser.length++] = data; + shell->parser.buffer[shell->parser.length] = 0; + shell->parser.cursor++; + shellWriteByte(shell, data); + } + else if (shell->parser.cursor < shell->parser.length) + { + for (short i = shell->parser.length - shell->parser.cursor; i > 0; i--) + { + shell->parser.buffer[shell->parser.cursor + i] = + shell->parser.buffer[shell->parser.cursor + i - 1]; + } + shell->parser.buffer[shell->parser.cursor++] = data; + shell->parser.buffer[++shell->parser.length] = 0; + for (short i = shell->parser.cursor - 1; i < shell->parser.length; i++) + { + shellWriteByte(shell, shell->parser.buffer[i]); + } + for (short i = shell->parser.length - shell->parser.cursor; i > 0; i--) + { + shellWriteByte(shell, '\b'); + } + } +} + + +/** + * @brief shell 删除字节 + * + * @param shell shell对象 + * @param direction 删除方向 {@code 1}删除光标前字符 {@code -1}删除光标处字符 + */ +void shellDeleteByte(Shell *shell, signed char direction) +{ + char offset = (direction == -1) ? 1 : 0; + + if ((shell->parser.cursor == 0 && direction == 1) + || (shell->parser.cursor == shell->parser.length && direction == -1)) + { + return; + } + if (shell->parser.cursor == shell->parser.length && direction == 1) + { + shell->parser.cursor--; + shell->parser.length--; + shell->parser.buffer[shell->parser.length] = 0; + shellDeleteCommandLine(shell, 1); + } + else + { + for (short i = offset; i < shell->parser.length - shell->parser.cursor; i++) + { + shell->parser.buffer[shell->parser.cursor + i - 1] = + shell->parser.buffer[shell->parser.cursor + i]; + } + shell->parser.length--; + if (!offset) + { + shell->parser.cursor--; + shellWriteByte(shell, '\b'); + } + shell->parser.buffer[shell->parser.length] = 0; + for (short i = shell->parser.cursor; i < shell->parser.length; i++) + { + shellWriteByte(shell, shell->parser.buffer[i]); + } + shellWriteByte(shell, ' '); + for (short i = shell->parser.length - shell->parser.cursor + 1; i > 0; i--) + { + shellWriteByte(shell, '\b'); + } + } +} + + +/** + * @brief shell 解析参数 + * + * @param shell shell对象 + */ +static void shellParserParam(Shell *shell) +{ + unsigned char quotes = 0; + unsigned char record = 1; + + shell->parser.paramCount = 0; + for (unsigned short i = 0; i < shell->parser.length; i++) + { + if (quotes != 0 + || (shell->parser.buffer[i] != ' ' + && shell->parser.buffer[i] != 0)) + { + if (shell->parser.buffer[i] == '\"') + { + quotes = quotes ? 0 : 1; + } + if (record == 1) + { + shell->parser.param[shell->parser.paramCount ++] = + &(shell->parser.buffer[i]); + record = 0; + } + if (shell->parser.buffer[i] == '\\' + && shell->parser.buffer[i + 1] != 0) + { + i++; + } + } + else + { + shell->parser.buffer[i] = 0; + record = 1; + } + } +} + + +/** + * @brief shell去除字符串参数头尾的双引号 + * + * @param shell shell对象 + */ +static void shellRemoveParamQuotes(Shell *shell) +{ + unsigned short paramLength; + for (unsigned short i = 0; i < shell->parser.paramCount; i++) + { + if (shell->parser.param[i][0] == '\"') + { + shell->parser.param[i][0] = 0; + shell->parser.param[i] = &shell->parser.param[i][1]; + } + paramLength = strlen(shell->parser.param[i]); + if (shell->parser.param[i][paramLength - 1] == '\"') + { + shell->parser.param[i][paramLength - 1] = 0; + } + } +} + + +/** + * @brief shell匹配命令 + * + * @param shell shell对象 + * @param cmd 命令 + * @param base 匹配命令表基址 + * @param compareLength 匹配字符串长度 + * @return ShellCommand* 匹配到的命令 + */ +ShellCommand* shellSeekCommand(Shell *shell, + const char *cmd, + ShellCommand *base, + unsigned short compareLength) +{ + const char *name; + unsigned short count = shell->commandList.count - + ((int)base - (int)shell->commandList.base) / sizeof(ShellCommand); + for (unsigned short i = 0; i < count; i++) + { + if (base[i].attr.attrs.type == SHELL_TYPE_KEY + || shellCheckPermission(shell, &base[i]) != 0) + { + continue; + } + name = shellGetCommandName(&base[i]); + if (!compareLength) + { + if (strcmp(cmd, name) == 0) + { + return &base[i]; + } + } + else + { + if (strncmp(cmd, name, compareLength) == 0) + { + return &base[i]; + } + } + } + return NULL; +} + + +/** + * @brief shell 获取变量值 + * + * @param shell shell对象 + * @param command 命令 + * @return int 变量值 + */ +int shellGetVarValue(Shell *shell, ShellCommand *command) +{ + int value = 0; + switch (command->attr.attrs.type) + { + case SHELL_TYPE_VAR_INT: + value = *((int *)(command->data.var.value)); + break; + case SHELL_TYPE_VAR_SHORT: + value = *((short *)(command->data.var.value)); + break; + case SHELL_TYPE_VAR_CHAR: + value = *((char *)(command->data.var.value)); + break; + case SHELL_TYPE_VAR_POINT: + case SHELL_TYPE_VAL: + value = (int)(command->data.var.value); + break; + default: + break; + } + return value; +} + + +/** + * @brief shell设置变量值 + * + * @param shell shell对象 + * @param command 命令 + * @param value 值 + */ +void shellSetVarValue(Shell *shell, ShellCommand *command, int value) +{ + switch (command->attr.attrs.type) + { + case SHELL_TYPE_VAR_INT: + *((int *)(command->data.var.value)) = value; + break; + case SHELL_TYPE_VAR_SHORT: + *((short *)(command->data.var.value)) = value; + break; + case SHELL_TYPE_VAR_CHAR: + *((char *)(command->data.var.value)) = value; + break; + case SHELL_TYPE_VAR_POINT: + shellWriteString(shell, shellText[SHELL_TEXT_POINT_CANNOT_MODIFY]); + break; + case SHELL_TYPE_VAL: + shellWriteString(shell, shellText[SHELL_TEXT_VAL_CANNOT_MODIFY]); + break; + default: + break; + } + shellShowVar(shell, command); +} + + +/** + * @brief shell变量输出 + * + * @param shell shell对象 + * @param command 命令 + */ +static void shellShowVar(Shell *shell, ShellCommand *command) +{ + char buffer[12] = "00000000000"; + int value = shellGetVarValue(shell, command); + shellWriteString(shell, command->data.var.name); + shellWriteString(shell, " = "); + shellWriteString(shell, &buffer[11 - shellToDec(value, buffer)]); + shellWriteString(shell, ", 0x"); + for (short i = 0; i < 11; i++) + { + buffer[i] = '0'; + } + shellToHex(value, buffer); + shellWriteString(shell, buffer); + shellWriteString(shell, "\r\n"); +} + + +/** + * @brief shell设置变量 + * + * @param name 变量名 + * @param value 变量值 + * @return int 返回变量值 + */ +int shellSetVar(char *name, int value) +{ + Shell *shell = shellGetCurrent(); + if (shell == NULL) + { + return 0; + } + ShellCommand *command = shellSeekCommand(shell, + name, + shell->commandList.base, + 0); + if (!command) + { + shellWriteString(shell, shellText[SHELL_TEXT_VAR_NOT_FOUND]); + return 0; + } + if (command->attr.attrs.type < SHELL_TYPE_VAR_INT + || command->attr.attrs.type > SHELL_TYPE_VAL) + { + shellWriteString(shell, name); + shellWriteString(shell, shellText[SHELL_TEXT_NOT_VAR]); + return 0; + } + shellSetVarValue(shell, command, value); + return shellGetVarValue(shell, command); +} +SHELL_EXPORT_CMD( +SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_DISABLE_RETURN, +setVar, shellSetVar, set var); + + +/** + * @brief shell运行命令 + * + * @param shell shell对象 + * @param command 命令 + */ +static void shellRunCommand(Shell *shell, ShellCommand *command) +{ + int returnValue; + shell->status.isActive = 1; + if (command->attr.attrs.type == SHELL_TYPE_CMD_MAIN) + { + shellRemoveParamQuotes(shell); + returnValue = command->data.cmd.function(shell->parser.paramCount, + shell->parser.param); + if (!command->attr.attrs.disableReturn) + { + shellWriteReturnValue(shell, returnValue); + } + } + else if (command->attr.attrs.type == SHELL_TYPE_CMD_FUNC) + { + returnValue = shellExtRun(shell, + command, + shell->parser.paramCount, + shell->parser.param); + if (!command->attr.attrs.disableReturn) + { + shellWriteReturnValue(shell, returnValue); + } + } + else if (command->attr.attrs.type >= SHELL_TYPE_VAR_INT + && command->attr.attrs.type <= SHELL_TYPE_VAL) + { + shellShowVar(shell, command); + } + else if (command->attr.attrs.type == SHELL_TYPE_USER) + { + shellSetUser(shell, command); + } + shell->status.isActive = 0; +} + + +/** + * @brief shell校验密码 + * + * @param shell shell对象 + */ +static void shellCheckPassword(Shell *shell) +{ + if (strcmp(shell->parser.buffer, shell->info.user->data.user.password) == 0) + { + shell->status.isChecked = 1; + #if SHELL_SHOW_INFO == 1 + shellWriteString(shell, shellText[SHELL_TEXT_INFO]); + #endif + } + else + { + shellWriteString(shell, shellText[SHELL_TEXT_PASSWORD_ERROR]); + } + shell->parser.length = 0; + shell->parser.cursor = 0; +} + + +/** + * @brief shell设置用户 + * + * @param shell shell对象 + * @param user 用户 + */ +static void shellSetUser(Shell *shell, const ShellCommand *user) +{ + shell->info.user = user; + shell->status.isChecked = + ((user->data.user.password && strlen(user->data.user.password) != 0) + && (shell->parser.paramCount == 1 + || strcmp(user->data.user.password, shell->parser.param[1]) != 0)) + ? 0 : 1; + +#if SHELL_CLS_WHEN_LOGIN == 1 + shellWriteString(shell, shellText[SHELL_TEXT_CLEAR_CONSOLE]); +#endif +#if SHELL_SHOW_INFO == 1 + if (shell->status.isChecked) + { + shellWriteString(shell, shellText[SHELL_TEXT_INFO]); + } +#endif +} + + +/** + * @brief shell写返回值 + * + * @param shell shell对象 + * @param value 返回值 + */ +static void shellWriteReturnValue(Shell *shell, int value) +{ + char buffer[12] = "00000000000"; + shellWriteString(shell, "Return: "); + shellWriteString(shell, &buffer[11 - shellToDec(value, buffer)]); + shellWriteString(shell, ", 0x"); + for (short i = 0; i < 11; i++) + { + buffer[i] = '0'; + } + shellToHex(value, buffer); + shellWriteString(shell, buffer); + shellWriteString(shell, "\r\n"); +} + + +/** + * @brief shell历史记录添加 + * + * @param shell shell对象 + */ +static void shellHistoryAdd(Shell *shell) +{ + shell->history.offset = 0; + if (shell->history.number > 0 + && strcmp(shell->history.item[(shell->history.record == 0 ? + SHELL_HISTORY_MAX_NUMBER : shell->history.record) - 1], + shell->parser.buffer) == 0) + { + return; + } + if (shellStringCopy(shell->history.item[shell->history.record], + shell->parser.buffer) != 0) + { + shell->history.record++; + } + if (++shell->history.number > SHELL_HISTORY_MAX_NUMBER) + { + shell->history.number = SHELL_HISTORY_MAX_NUMBER; + } + if (shell->history.record >= SHELL_HISTORY_MAX_NUMBER) + { + shell->history.record = 0; + } +} + + +/** + * @brief shell历史记录查找 + * + * @param shell shell对象 + * @param dir 方向 {@code <0}往上查找 {@code >0}往下查找 + */ +static void shellHistory(Shell *shell, signed char dir) +{ + if (dir > 0) + { + if (shell->history.offset-- <= + -((shell->history.number > shell->history.record) ? + shell->history.number : shell->history.record)) + { + shell->history.offset = -((shell->history.number > shell->history.record) + ? shell->history.number : shell->history.record); + } + } + else if (dir < 0) + { + if (++shell->history.offset > 0) + { + shell->history.offset = 0; + return; + } + } + else + { + return; + } + shellClearCommandLine(shell); + if (shell->history.offset == 0) + { + shell->parser.cursor = shell->parser.length = 0; + } + else + { + if ((shell->parser.length = shellStringCopy(shell->parser.buffer, + shell->history.item[(shell->history.record + SHELL_HISTORY_MAX_NUMBER + + shell->history.offset) % SHELL_HISTORY_MAX_NUMBER])) == 0) + { + return; + } + shell->parser.cursor = shell->parser.length; + shellWriteString(shell, shell->parser.buffer); + } + +} + + +/** + * @brief shell 常规输入 + * + * @param shell shell 对象 + * @param data 输入字符 + */ +void shellNormalInput(Shell *shell, char data) +{ + shell->status.tabFlag = 0; + shellInsertByte(shell, data); +} + + +/** + * @brief shell上方向键输入 + * + * @param shell shell对象 + */ +void shellUp(Shell *shell) +{ + shellHistory(shell, 1); +} +SHELL_EXPORT_KEY(SHELL_CMD_PERMISSION(0), 0x1B5B4100, shellUp, up); + + +/** + * @brief shell下方向键输入 + * + * @param shell shell对象 + */ +void shellDown(Shell *shell) +{ + shellHistory(shell, -1); +} +SHELL_EXPORT_KEY(SHELL_CMD_PERMISSION(0), 0x1B5B4200, shellDown, down); + + +/** + * @brief shell右方向键输入 + * + * @param shell shell对象 + */ +void shellRight(Shell *shell) +{ + if (shell->parser.cursor < shell->parser.length) + { + shellWriteByte(shell, shell->parser.buffer[shell->parser.cursor++]); + } +} +SHELL_EXPORT_KEY(SHELL_CMD_PERMISSION(0)|SHELL_CMD_ENABLE_UNCHECKED, +0x1B5B4300, shellRight, right); + + +/** + * @brief shell左方向键输入 + * + * @param shell shell对象 + */ +void shellLeft(Shell *shell) +{ + if (shell->parser.cursor > 0) + { + shellWriteByte(shell, '\b'); + shell->parser.cursor--; + } +} +SHELL_EXPORT_KEY(SHELL_CMD_PERMISSION(0)|SHELL_CMD_ENABLE_UNCHECKED, +0x1B5B4400, shellLeft, left); + + +/** + * @brief shell Tab按键处理 + * + * @param shell shell对象 + */ +void shellTab(Shell *shell) +{ + unsigned short maxMatch = shell->parser.bufferSize; + unsigned short lastMatchIndex = 0; + unsigned short matchNum = 0; + unsigned short length; + + if (shell->parser.length == 0) + { + shellListAll(shell); + shellWriteCommandLine(shell); + } + else if (shell->parser.length > 0) + { + shell->parser.buffer[shell->parser.length] = 0; + ShellCommand *base = (ShellCommand *)shell->commandList.base; + for (short i = 0; i < shell->commandList.count; i++) + { + if (shellCheckPermission(shell, &base[i]) == 0 + && shellStringCompare(shell->parser.buffer, + (char *)shellGetCommandName(&base[i])) + == shell->parser.length) + { + if (matchNum != 0) + { + if (matchNum == 1) + { + shellWriteString(shell, "\r\n"); + } + shellListItem(shell, &base[lastMatchIndex]); + length = + shellStringCompare((char *)shellGetCommandName(&base[lastMatchIndex]), + (char *)shellGetCommandName(&base[i])); + maxMatch = (maxMatch > length) ? length : maxMatch; + } + lastMatchIndex = i; + matchNum++; + } + } + if (matchNum == 0) + { + return; + } + if (matchNum == 1) + { + shellClearCommandLine(shell); + } + if (matchNum != 0) + { + shell->parser.length = + shellStringCopy(shell->parser.buffer, + (char *)shellGetCommandName(&base[lastMatchIndex])); + } + if (matchNum > 1) + { + shellListItem(shell, &base[lastMatchIndex]); + shellWriteCommandLine(shell); + shell->parser.length = maxMatch; + } + shell->parser.buffer[shell->parser.length] = 0; + shell->parser.cursor = shell->parser.length; + shellWriteString(shell, shell->parser.buffer); + } + + if (SHELL_GET_TICK()) + { + if (matchNum == 1 + && shell->status.tabFlag + && SHELL_GET_TICK() - shell->info.activeTime < SHELL_DOUBLE_CLICK_TIME) + { + shellClearCommandLine(shell); + for (short i = shell->parser.length; i >= 0; i--) + { + shell->parser.buffer[i + 5] = shell->parser.buffer[i]; + } + shellStringCopy(shell->parser.buffer, "help"); + shell->parser.buffer[4] = ' '; + shell->parser.length += 5; + shell->parser.cursor = shell->parser.length; + shellWriteString(shell, shell->parser.buffer); + } + else + { + shell->status.tabFlag = 1; + } + } +} +SHELL_EXPORT_KEY(SHELL_CMD_PERMISSION(0), 0x09000000, shellTab, tab); + + +/** + * @brief shell 退格 + * + * @param shell shell对象 + */ +void shellBackspace(Shell *shell) +{ + shellDeleteByte(shell, 1); +} +SHELL_EXPORT_KEY(SHELL_CMD_PERMISSION(0)|SHELL_CMD_ENABLE_UNCHECKED, +0x08000000, shellBackspace, backspace); + + +/** + * @brief shell 删除 + * + * @param shell shell对象 + */ +void shellDelete(Shell *shell) +{ + shellDeleteByte(shell, -1); +} +SHELL_EXPORT_KEY(SHELL_CMD_PERMISSION(0)|SHELL_CMD_ENABLE_UNCHECKED, +0x7F000000, shellDelete, delete); +SHELL_EXPORT_KEY(SHELL_CMD_PERMISSION(0)|SHELL_CMD_ENABLE_UNCHECKED, +0x1B5B337E, shellDelete, delete); + +/** + * @brief shell 回车处理 + * + * @param shell shell对象 + */ +void shellEnter(Shell *shell) +{ + if (shell->parser.length == 0) + { + shellWriteCommandLine(shell); + return; + } + + shell->parser.buffer[shell->parser.length] = 0; + + if (shell->status.isChecked) + { + shellHistoryAdd(shell); + shellParserParam(shell); + shell->parser.length = shell->parser.cursor = 0; + if (shell->parser.paramCount == 0) + { + shellWriteCommandLine(shell); + return; + } + shellWriteString(shell, "\r\n"); + + ShellCommand *command = shellSeekCommand(shell, + shell->parser.param[0], + shell->commandList.base, + 0); + if (command != NULL) + { + shellRunCommand(shell, command); + } + else + { + shellWriteString(shell, shellText[SHELL_TEXT_CMD_NOT_FOUND]); + } + } + else + { + shellCheckPassword(shell); + } + shellWriteCommandLine(shell); +} +#if SHELL_ENTER_LF == 1 +SHELL_EXPORT_KEY(SHELL_CMD_PERMISSION(0)|SHELL_CMD_ENABLE_UNCHECKED, +0x0A000000, shellEnter, enter); +#endif +#if SHELL_ENTER_CR == 1 +SHELL_EXPORT_KEY(SHELL_CMD_PERMISSION(0)|SHELL_CMD_ENABLE_UNCHECKED, +0x0D000000, shellEnter, enter); +#endif +#if SHELL_ENTER_CRLF == 1 +SHELL_EXPORT_KEY(SHELL_CMD_PERMISSION(0)|SHELL_CMD_ENABLE_UNCHECKED, +0x0D0A0000, shellEnter, enter); +#endif + + +/** + * @brief shell help + * + * @param argc 参数个数 + * @param argv 参数 + */ +void shellHelp(int argc, char *argv[]) +{ + Shell *shell = shellGetCurrent(); + SHELL_ASSERT(shell, return); + if (argc == 1) + { + shellListAll(shell); + } + else if (argc > 1) + { + ShellCommand *command = shellSeekCommand(shell, + argv[1], + shell->commandList.base, + 0); + shellWriteString(shell, shellText[SHELL_TEXT_HELP_HEADER]); + shellWriteString(shell, shellGetCommandName(command)); + shellWriteString(shell, "\r\n"); + shellWriteString(shell, shellGetCommandDesc(command)); + shellWriteString(shell, "\r\n"); + } +} +SHELL_EXPORT_CMD( +SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN)|SHELL_CMD_DISABLE_RETURN, +help, shellHelp, show command info\r\nhelp [cmd]); + +/** + * @brief shell 输入处理 + * + * @param shell shell对象 + * @param data 输入数据 + */ +void shellHandler(Shell *shell, char data) +{ + SHELL_ASSERT(data, return); + +#if SHELL_LOCK_TIMEOUT > 0 + if (shell->info.user->data.user.password + && strlen(shell->info.user->data.user.password) != 0 + && SHELL_GET_TICK()) + { + if (SHELL_GET_TICK() - shell->info.activeTime > SHELL_LOCK_TIMEOUT) + { + shell->status.isChecked = 0; + } + } +#endif + + /* 根据记录的按键键值计算当前字节在按键键值中的偏移 */ + char keyByteOffset = 24; + int keyFilter = 0x00000000; + if ((shell->parser.keyValue & 0x0000FF00) != 0x00000000) + { + keyByteOffset = 0; + keyFilter = 0xFFFFFF00; + } + else if ((shell->parser.keyValue & 0x00FF0000) != 0x00000000) + { + keyByteOffset = 8; + keyFilter = 0xFFFF0000; + } + else if ((shell->parser.keyValue & 0xFF000000) != 0x00000000) + { + keyByteOffset = 16; + keyFilter = 0xFF000000; + } + + /* 遍历ShellCommand列表,尝试进行按键键值匹配 */ + ShellCommand *base = (ShellCommand *)shell->commandList.base; + for (short i = 0; i < shell->commandList.count; i++) + { + /* 判断是否是按键定义并验证权限 */ + if (base[i].attr.attrs.type == SHELL_TYPE_KEY + && shellCheckPermission(shell, &(base[i])) == 0) + { + /* 对输入的字节同按键键值进行匹配 */ + if ((base[i].data.key.value & keyFilter) == shell->parser.keyValue + && (base[i].data.key.value & (0xFF << keyByteOffset)) + == (data << keyByteOffset)) + { + shell->parser.keyValue |= data << keyByteOffset; + data = 0x00; + if (keyByteOffset == 0 + || (base[i].data.key.value & (0xFF << (keyByteOffset - 8))) + == 0x00000000) + { + if (base[i].data.key.function) + { + base[i].data.key.function(shell); + } + shell->parser.keyValue = 0x00000000; + break; + } + } + } + } + + if (data != 0x00) + { + shellNormalInput(shell, data); + } + + if (SHELL_GET_TICK()) + { + shell->info.activeTime = SHELL_GET_TICK(); + } +} + + +/** + * @brief shell 任务 + * + * @param param 参数(shell对象) + * + */ +void shellTask(void *param) +{ + Shell *shell = (Shell *)param; + char data; +#if SHELL_TASK_WHILE == 1 + while(1) + { +#endif + if (shell->read && shell->read(&data) == 0) + { + shellHandler(shell, data); + } +#if SHELL_TASK_WHILE == 1 + } +#endif +} + + +/** + * @brief shell 输出用户列表(shell调用) + */ +void shellUsers(void) +{ + Shell *shell = shellGetCurrent(); + if (shell) + { + shellListUser(shell); + } +} +SHELL_EXPORT_CMD( +SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_DISABLE_RETURN, +users, shellUsers, list all user); + + +/** + * @brief shell 输出命令列表(shell调用) + */ +void shellCmds(void) +{ + Shell *shell = shellGetCurrent(); + if (shell) + { + shellListCommand(shell); + } +} +SHELL_EXPORT_CMD( +SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_DISABLE_RETURN, +cmds, shellCmds, list all cmd); + + +/** + * @brief shell 输出变量列表(shell调用) + */ +void shellVars(void) +{ + Shell *shell = shellGetCurrent(); + if (shell) + { + shellListVar(shell); + } +} +SHELL_EXPORT_CMD( +SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_DISABLE_RETURN, +vars, shellVars, list all var); + + +/** + * @brief shell 输出按键列表(shell调用) + */ +void shellKeys(void) +{ + Shell *shell = shellGetCurrent(); + if (shell) + { + shellListKey(shell); + } +} +SHELL_EXPORT_CMD( +SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_DISABLE_RETURN, +keys, shellKeys, list all key); + + +/** + * @brief shell 清空控制台(shell调用) + */ +void shellClear(void) +{ + Shell *shell = shellGetCurrent(); + if (shell) + { + shellWriteString(shell, shellText[SHELL_TEXT_CLEAR_CONSOLE]); + } +} +SHELL_EXPORT_CMD( +SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_DISABLE_RETURN, +clear, shellClear, clear console); + + +#if SHELL_EXEC_UNDEF_FUNC == 1 +/** + * @brief shell执行未定义函数 + * + * @param argc 参数个数 + * @param argv 参数 + * @return int 返回值 + */ +int shellExecute(int argc, char *argv[]) +{ + Shell *shell = shellGetCurrent(); + if (shell && argc >= 2) + { + int (*func)() = (int (*)())shellExtParsePara(shell, argv[1]); + shellPrint(shell, "%08x\r\n", func); + ShellCommand command = { + .attr.value = SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC) + |SHELL_CMD_DISABLE_RETURN, + .data.cmd.function = func, + }; + return shellExtRun(shell, &command, argc - 1, &argv[1]); + } + else + { + shellPrint(shell, "%08x\r\n", shellClear); + } + return 0; +} +SHELL_EXPORT_CMD( +SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN)|SHELL_CMD_DISABLE_RETURN, +exec, shellExecute, execute function undefined); +#endif + + +/** + * @brief 判断数字进制 + * + * @param string 参数字符串 + * @return NUM_Type 进制 + */ +static NUM_Type shellExtNumType(char *string) +{ + char *p = string; + NUM_Type type = NUM_TYPE_INT; + + if ((*p == '0') && ((*(p + 1) == 'x') || (*(p + 1) == 'X'))) + { + type = NUM_TYPE_HEX; + } + else if ((*p == '0') && ((*(p + 1) == 'b') || (*(p + 1) == 'B'))) + { + type = NUM_TYPE_BIN; + } + else if (*p == '0') + { + type = NUM_TYPE_OCT; + } + + while (*p++) + { + if (*p == '.' && *(p + 1) != 0) + { + type = NUM_TYPE_FLOAT; + break; + } + } + + return type; +} + + +/** + * @brief 字符转数字 + * + * @param code 字符 + * @return char 数字 + */ +static char shellExtToNum(char code) +{ + if ((code >= '0') && (code <= '9')) + { + return code -'0'; + } + else if ((code >= 'a') && (code <= 'f')) + { + return code - 'a' + 10; + } + else if ((code >= 'A') && (code <= 'F')) + { + return code - 'A' + 10; + } + else + { + return 0; + } +} + + +/** + * @brief 解析字符参数 + * + * @param string 字符串参数 + * @return char 解析出的字符 + */ +static char shellExtParseChar(char *string) +{ + char *p = string + 1; + char value = 0; + + if (*p == '\\') + { + switch (*(p + 1)) + { + case 'b': + value = '\b'; + break; + case 'r': + value = '\r'; + break; + case 'n': + value = '\n'; + break; + case 't': + value = '\t'; + break; + case '0': + value = 0; + break; + default: + value = *(p + 1); + break; + } + } + else + { + value = *p; + } + return value; +} + + +/** + * @brief 解析字符串参数 + * + * @param string 字符串参数 + * @return char* 解析出的字符串 + */ +static char* shellExtParseString(char *string) +{ + char *p = string; + unsigned short index = 0; + + if (*string == '\"') + { + p = ++string; + } + + while (*p) + { + if (*p == '\\') + { + *(string + index) = shellExtParseChar(p - 1); + p++; + } + else if (*p == '\"') + { + *(string + index) = 0; + } + else + { + *(string + index) = *p; + } + p++; + index ++; + } + *(string + index) = 0; + return string; +} + + +/** + * @brief 解析数字参数 + * + * @param string 字符串参数 + * @return unsigned int 解析出的数字 + */ +static unsigned int shellExtParseNumber(char *string) +{ + NUM_Type type = NUM_TYPE_INT; + char radix = 10; + char *p = string; + char offset = 0; + signed char sign = 1; + unsigned int valueInt = 0; + float valueFloat = 0.0; + unsigned int devide = 0; + + if (*string == '-') + { + sign = -1; + } + + type = shellExtNumType(string + ((sign == -1) ? 1 : 0)); + + switch ((char)type) + { + case NUM_TYPE_HEX: + radix = 16; + offset = 2; + break; + + case NUM_TYPE_OCT: + radix = 8; + offset = 1; + break; + + case NUM_TYPE_BIN: + radix = 2; + offset = 2; + break; + + default: + break; + } + + p = string + offset + ((sign == -1) ? 1 : 0); + + while (*p) + { + if (*p == '.') + { + devide = 1; + p++; + continue; + } + valueInt = valueInt * radix + shellExtToNum(*p); + devide *= 10; + p++; + } + if (type == NUM_TYPE_FLOAT && devide != 0) + { + valueFloat = (float)valueInt / devide * sign; + return (uint32_t)valueFloat; + } + else + { + return valueInt * sign; + } +} + + +/** + * @brief 解析变量参数 + * + * @param shell shell对象 + * @param var 变量 + * @return unsigned int 变量值 + */ +static unsigned int shellExtParseVar(Shell *shell, char *var) +{ + ShellCommand *command = shellSeekCommand(shell, + var + 1, + shell->commandList.base, + 0); + if (command) + { + return shellGetVarValue(shell, command); + } + else + { + return 0; + } +} + + +/** + * @brief 解析参数 + * + * @param shell shell对象 + * @param string 参数 + * @return unsigned int 解析结果 + */ +unsigned int shellExtParsePara(Shell *shell, char *string) +{ + if (*string == '\'' && *(string + 1)) + { + return (unsigned int)shellExtParseChar(string); + } + else if (*string == '-' || (*string >= '0' && *string <= '9')) + { + return (unsigned int)shellExtParseNumber(string); + } + else if (*string == '$' && *(string + 1)) + { + return shellExtParseVar(shell, string); + } + else if (*string) + { + return (unsigned int)shellExtParseString(string); + } + return 0; +} + + +/** + * @brief 执行命令 + * + * @param shell shell对象 + * @param command 命令 + * @param argc 参数个数 + * @param argv 参数 + * @return int 返回值 + */ +int shellExtRun(Shell *shell, ShellCommand *command, int argc, char *argv[]) +{ + unsigned int params[8] = {0}; + int paramNum = command->attr.attrs.paramNum > (argc - 1) ? + command->attr.attrs.paramNum : (argc - 1); + for (int i = 0; i < argc - 1; i++) + { + params[i] = shellExtParsePara(shell, argv[i + 1]); + } + switch (paramNum) + { + case 0: + return command->data.cmd.function(); + // break; + case 1: + return command->data.cmd.function(params[0]); + // break; + case 2: + return command->data.cmd.function(params[0], params[1]); + // break; + case 3: + return command->data.cmd.function(params[0], params[1], + params[2]); + // break; + case 4: + return command->data.cmd.function(params[0], params[1], + params[2], params[3]); + // break; + case 5: + return command->data.cmd.function(params[0], params[1], + params[2], params[3], + params[4]); + // break; + case 6: + return command->data.cmd.function(params[0], params[1], + params[2], params[3], + params[4], params[5]); + // break; + case 7: + return command->data.cmd.function(params[0], params[1], + params[2], params[3], + params[4], params[5], + params[6]); + // break; + default: + return -1; + // break; + } +} + diff --git a/components/shell/drv_shell.h b/components/shell/drv_shell.h new file mode 100644 index 00000000..4ed3fdfc --- /dev/null +++ b/components/shell/drv_shell.h @@ -0,0 +1,393 @@ +/** + * @file shell.h + * @author Letter (NevermindZZT@gmail.com) + * @brief letter shell + * @version 3.0.0 + * @date 2019-12-30 + * + * @Copyright (c) 2020 Letter + * + */ + +#ifndef __SHELL_H__ +#define __SHELL_H__ + +#include "shell_cfg.h" + +#define SHELL_VERSION "3.0.2" /**< 版本号 */ + + +/** + * @brief shell 断言 + * + * @param expr 表达式 + * @param action 断言失败操作 + */ +#define SHELL_ASSERT(expr, action) \ + if (!(expr)) { \ + action; \ + } + +/** + * @brief shell 命令权限 + * + * @param permission 权限级别 + */ +#define SHELL_CMD_PERMISSION(permission) \ + (permission & 0x000000FF) + +/** + * @brief shell 命令类型 + * + * @param type 类型 + */ +#define SHELL_CMD_TYPE(type) \ + ((type & 0x0000000F) << 8) + +/** + * @brief 使能命令在未校验密码的情况下使用 + */ +#define SHELL_CMD_ENABLE_UNCHECKED \ + (1 << 12) + +/** + * @brief 禁用返回值打印 + */ +#define SHELL_CMD_DISABLE_RETURN \ + (1 << 13) + +/** + * @brief 命令参数数量 + */ +#define SHELL_CMD_PARAM_NUM(num) \ + ((num & 0x0000000F)) << 16 + +#ifndef SECTION + #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && __ARMCC_VERSION >= 6000000) + #define SECTION(x) __attribute__((section(x))) + #elif defined(__ICCARM__) || defined(__ICCRX__) + #define SECTION(x) @ x + #elif defined(__GNUC__) + #define SECTION(x) __attribute__((section(x))) + #else + #define SECTION(x) + #endif +#endif + +/** + * @brief shell float型参数转换 + */ +#define SHELL_PARAM_FLOAT(x) (*(float *)(&x)) + +/** + * @brief shell 代理函数名 + */ +#define SHELL_AGENCY_FUNC_NAME(_func) agency##_func + +/** + * @brief shell代理函数定义 + * + * @param _func 被代理的函数 + * @param ... 代理参数 + */ +#define SHELL_AGENCY_FUNC(_func, ...) \ + void SHELL_AGENCY_FUNC_NAME(_func)(int p1, int p2, int p3, int p4, int p5, int p6, int p7) \ + { _func(__VA_ARGS__); } + +#if SHELL_USING_CMD_EXPORT == 1 + + /** + * @brief shell 命令定义 + * + * @param _attr 命令属性 + * @param _name 命令名 + * @param _func 命令函数 + * @param _desc 命令描述 + */ + #define SHELL_EXPORT_CMD(_attr, _name, _func, _desc) \ + const char shellCmd##_name[] = #_name; \ + const char shellDesc##_name[] = #_desc; \ + const ShellCommand \ + shellCommand##_name SECTION("shellCommand") = \ + { \ + .attr.value = _attr, \ + .data.cmd.name = shellCmd##_name, \ + .data.cmd.function = (int (*)())_func, \ + .data.cmd.desc = shellDesc##_name \ + } + + /** + * @brief shell 代理命令定义 + * + * @param _attr 命令属性 + * @param _name 命令名 + * @param _func 命令函数 + * @param _desc 命令描述 + * @param ... 代理参数 + */ + #define SHELL_EXPORT_CMD_AGENCY(_attr, _name, _func, _desc, ...) \ + SHELL_AGENCY_FUNC(_func, ##__VA_ARGS__) \ + SHELL_EXPORT_CMD(_attr, _name, SHELL_AGENCY_FUNC_NAME(_func), _desc) + + /** + * @brief shell 变量定义 + * + * @param _attr 变量属性 + * @param _name 变量名 + * @param _value 变量值 + * @param _desc 变量描述 + */ + #define SHELL_EXPORT_VAR(_attr, _name, _value, _desc) \ + const char shellCmd##_name[] = #_name; \ + const char shellDesc##_name[] = #_desc; \ + const ShellCommand \ + shellVar##_name SECTION("shellCommand") = \ + { \ + .attr.value = _attr, \ + .data.var.name = shellCmd##_name, \ + .data.var.value = (void *)_value, \ + .data.var.desc = shellDesc##_name \ + } + + /** + * @brief shell 用户定义 + * + * @param _attr 用户属性 + * @param _name 用户名 + * @param _password 用户密码 + * @param _desc 用户描述 + */ + #define SHELL_EXPORT_USER(_attr, _name, _password, _desc) \ + const char shellCmd##_name[] = #_name; \ + const char shellPassword##_name[] = #_password; \ + const char shellDesc##_name[] = #_desc; \ + const ShellCommand \ + shellUser##_name SECTION("shellCommand") = \ + { \ + .attr.value = _attr|SHELL_CMD_TYPE(SHELL_TYPE_USER), \ + .data.user.name = shellCmd##_name, \ + .data.user.password = shellPassword##_name, \ + .data.user.desc = shellDesc##_name \ + } + + /** + * @brief shell 按键定义 + * + * @param _attr 按键属性 + * @param _value 按键键值 + * @param _func 按键函数 + * @param _desc 按键描述 + */ + #define SHELL_EXPORT_KEY(_attr, _value, _func, _desc) \ + const char shellDesc##_value[] = #_desc; \ + const ShellCommand \ + shellKey##_value SECTION("shellCommand") = \ + { \ + .attr.value = _attr|SHELL_CMD_TYPE(SHELL_TYPE_KEY), \ + .data.key.value = _value, \ + .data.key.function = (void (*)(Shell *))_func, \ + .data.key.desc = shellDesc##_value \ + } +#else + /** + * @brief shell 命令item定义 + * + * @param _attr 命令属性 + * @param _name 命令名 + * @param _func 命令函数 + * @param _desc 命令描述 + */ + #define SHELL_CMD_ITEM(_attr, _name, _func, _desc) \ + { \ + .attr.value = _attr, \ + .data.cmd.name = #_name, \ + .data.cmd.function = (int (*)())_func, \ + .data.cmd.desc = #_desc \ + } + + /** + * @brief shell 变量item定义 + * + * @param _attr 变量属性 + * @param _name 变量名 + * @param _value 变量值 + * @param _desc 变量描述 + */ + #define SHELL_VAR_ITEM(_attr, _name, _value, _desc) \ + { \ + .attr.value = _attr, \ + .data.var.name = #_name, \ + .data.var.value = (void *)_value, \ + .data.var.desc = #_desc \ + } + + /** + * @brief shell 用户item定义 + * + * @param _attr 用户属性 + * @param _name 用户名 + * @param _password 用户密码 + * @param _desc 用户描述 + */ + #define SHELL_USER_ITEM(_attr, _name, _password, _desc) \ + { \ + .attr.value = _attr|SHELL_CMD_TYPE(SHELL_TYPE_USER), \ + .data.user.name = #_name, \ + .data.user.password = #_password, \ + .data.user.desc = #_desc \ + } + + /** + * @brief shell 按键item定义 + * + * @param _attr 按键属性 + * @param _value 按键键值 + * @param _func 按键函数 + * @param _desc 按键描述 + */ + #define SHELL_KEY_ITEM(_attr, _value, _func, _desc) \ + { \ + .attr.value = _attr|SHELL_CMD_TYPE(SHELL_TYPE_KEY), \ + .data.key.value = _value, \ + .data.key.function = (void (*)(Shell *))_func, \ + .data.key.desc = #_desc \ + } + + #define SHELL_EXPORT_CMD(_attr, _name, _func, _desc) + #define SHELL_EXPORT_VAR(_attr, _name, _value, _desc) + #define SHELL_EXPORT_USER(_attr, _name, _password, _desc) + #define SHELL_EXPORT_KEY(_attr, _value, _func, _desc) +#endif /** SHELL_USING_CMD_EXPORT == 1 */ + +/** + * @brief shell command类型 + */ +typedef enum +{ + SHELL_TYPE_CMD_MAIN = 0, /**< main形式命令 */ + SHELL_TYPE_CMD_FUNC, /**< C函数形式命令 */ + SHELL_TYPE_VAR_INT, /**< int型变量 */ + SHELL_TYPE_VAR_SHORT, /**< short型变量 */ + SHELL_TYPE_VAR_CHAR, /**< char型变量 */ + SHELL_TYPE_VAR_POINT, /**< 指针型变量 */ + SHELL_TYPE_VAL, /**< 常量 */ + SHELL_TYPE_USER, /**< 用户 */ + SHELL_TYPE_KEY, /**< 按键 */ +} ShellCommandType; + + +/** + * @brief Shell定义 + */ +typedef struct +{ + struct + { + const struct shell_command *user; /**< 当前用户 */ + int activeTime; /**< shell激活时间 */ + } info; + struct + { + unsigned short length; /**< 输入数据长度 */ + unsigned short cursor; /**< 当前光标位置 */ + char *buffer; /**< 输入缓冲 */ + char *param[SHELL_PARAMETER_MAX_NUMBER]; /**< 参数 */ + unsigned short bufferSize; /**< 输入缓冲大小 */ + unsigned short paramCount; /**< 参数数量 */ + int keyValue; /**< 输入按键键值 */ + } parser; + struct + { + char *item[SHELL_HISTORY_MAX_NUMBER]; /**< 历史记录 */ + unsigned short number; /**< 历史记录数 */ + unsigned short record; /**< 当前记录位置 */ + signed short offset; /**< 当前历史记录偏移 */ + } history; + struct + { + void *base; /**< 命令表基址 */ + unsigned short count; /**< 命令数量 */ + } commandList; + struct + { + unsigned char isChecked : 1; /**< 密码校验通过 */ + unsigned char isActive : 1; /**< 当前活动Shell */ + unsigned char tabFlag : 1; /**< tab标志 */ + } status; + signed char (*read)(char *); /**< shell读函数 */ + void (*write)(const char); /**< shell写函数 */ +} Shell; + + +/** + * @brief shell command定义 + */ +typedef struct shell_command +{ + union + { + struct + { + unsigned char permission : 8; /**< command权限 */ + ShellCommandType type : 4; /**< command类型 */ + unsigned char enableUnchecked : 1; /**< 在未校验密码的情况下可用 */ + unsigned char disableReturn : 1; /**< 禁用返回值输出 */ + unsigned char reserve : 2; /**< 保留 */ + unsigned char paramNum : 4; /**< 参数数量 */ + } attrs; + int value; + } attr; /**< 属性 */ + union + { + struct + { + const char *name; /**< 命令名 */ + int (*function)(); /**< 命令执行函数 */ + const char *desc; /**< 命令描述 */ + } cmd; /**< 命令定义 */ + struct + { + const char *name; /**< 变量名 */ + void *value; /**< 变量值 */ + const char *desc; /**< 变量描述 */ + } var; /**< 变量定义 */ + struct + { + const char *name; /**< 用户名 */ + const char *password; /**< 用户密码 */ + const char *desc; /**< 用户描述 */ + } user; /**< 用户定义 */ + struct + { + int value; /**< 按键键值 */ + void (*function)(Shell *); /**< 按键执行函数 */ + const char *desc; /**< 按键描述 */ + } key; /**< 按键定义 */ + } data; +} ShellCommand; + + +void shellInit(Shell *shell, char *buffer, unsigned short size); +void shellPrint(Shell *shell, char *fmt, ...); +Shell* shellGetCurrent(void); +void shellHandler(Shell *shell, char data); +void shellTask(void *param); + +/** + * @brief 数字类型 + * + */ +typedef enum +{ + NUM_TYPE_INT, /**< 十进制整型 */ + NUM_TYPE_BIN, /**< 二进制整型 */ + NUM_TYPE_OCT, /**< 八进制整型 */ + NUM_TYPE_HEX, /**< 十六进制整型 */ + NUM_TYPE_FLOAT /**< 浮点型 */ +} NUM_Type; + +unsigned int shellExtParsePara(Shell *shell, char *string); +int shellExtRun(Shell *shell, ShellCommand *command, int argc, char *argv[]); + +#endif + diff --git a/components/shell/shell_cfg.h b/components/shell/shell_cfg.h new file mode 100644 index 00000000..a411cfd5 --- /dev/null +++ b/components/shell/shell_cfg.h @@ -0,0 +1,139 @@ +/** + * @file shell_cfg.h + * @author Letter (nevermindzzt@gmail.com) + * @brief shell config + * @version 3.0.0 + * @date 2019-12-31 + * + * @copyright (c) 2019 Letter + * + */ + +#ifndef __SHELL_CFG_H__ +#define __SHELL_CFG_H__ + + +/** + * @brief 是否使用默认shell任务while循环,使能宏`SHELL_USING_TASK`后此宏有意义 + * 使能此宏,则`shellTask()`函数会一直循环读取输入,一般使用操作系统建立shell + * 任务时使能此宏,关闭此宏的情况下,一般适用于无操作系统,在主循环中调用`shellTask()` + */ +#define SHELL_TASK_WHILE 0 + +/** + * @brief 是否使用命令导出方式 + * 使能此宏后,可以使用`SHELL_EXPORT_CMD()`等导出命令 + * 定义shell命令,关闭此宏的情况下,需要使用命令表的方式 + */ +#define SHELL_USING_CMD_EXPORT 1 + +/** + * @brief 是否在输出命令列表中列出用户 + */ +#define SHELL_HELP_LIST_USER 0 + +/** + * @brief 是否在输出命令列表中列出变量 + */ +#define SHELL_HELP_LIST_VAR 0 + +/** + * @brief 是否在输出命令列表中列出按键 + */ +#define SHELL_HELP_LIST_KEY 0 + +/** + * @brief 是否在输出命令列表中展示命令权限 + */ +#define SHELL_HELP_SHOW_PERMISSION 0 + +/** + * @brief 使用LF作为命令行回车触发 + * 可以和SHELL_ENTER_CR同时开启 + */ +#define SHELL_ENTER_LF 1 + +/** + * @brief 使用CR作为命令行回车触发 + * 可以和SHELL_ENTER_LF同时开启 + */ +#define SHELL_ENTER_CR 1 + +/** + * @brief 使用CRLF作为命令行回车触发 + * 不可以和SHELL_ENTER_LF或SHELL_ENTER_CR同时开启 + */ +#define SHELL_ENTER_CRLF 0 + +/** + * @brief 使用执行未导出函数的功能 + * 启用后,可以通过`exec [addr] [args]`直接执行对应地址的函数 + * @attention 如果地址错误,可能会直接引起程序崩溃 + */ +#define SHELL_EXEC_UNDEF_FUNC 0 + +/** + * @brief shell命令参数最大数量 + * 包含命令名在内,超过8个参数并且使用了参数自动转换的情况下,需要修改源码 + */ +#define SHELL_PARAMETER_MAX_NUMBER 8 + +/** + * @brief 历史命令记录数量 + */ +#define SHELL_HISTORY_MAX_NUMBER 30 + +/** + * @brief 双击间隔(ms) + * 使能宏`SHELL_LONG_HELP`后此宏生效,定义双击tab补全help的时间间隔 + */ +#define SHELL_DOUBLE_CLICK_TIME 200 + +/** + * @brief 管理的最大shell数量 + */ +#define SHELL_MAX_NUMBER 5 + +/** + * @brief shell格式化输出的缓冲大小 + * 为0时不使用shell格式化输出 + */ +#define SHELL_PRINT_BUFFER 128 + +/** + * @brief 获取系统时间(ms) + * 定义此宏为获取系统Tick,如`HAL_GetTick()` + * @note 此宏不定义时无法使用双击tab补全命令help,无法使用shell超时锁定 + */ +#define SHELL_GET_TICK() 0 + +/** + * @brief 是否显示shell信息 + */ +#define SHELL_SHOW_INFO 0 + +/** + * @brief 是否在登录后清除命令行 + */ +#define SHELL_CLS_WHEN_LOGIN 0 + +/** + * @brief shell默认用户 + */ +#define SHELL_DEFAULT_USER "bouffalolab" + +/** + * @brief shell默认用户密码 + * 若默认用户不需要密码,设为"" + */ +#define SHELL_DEFAULT_USER_PASSWORD "" + +/** + * @brief shell自动锁定超时 + * 使能`SHELL_USING_AUTH`的情况下生效,超时后会自动重新锁定shell + * 设置为0时关闭自动锁定功能,时间单位为`SHELL_GET_TICK()`单位 + * @note 使用超时锁定必须保证`SHELL_GET_TICK()`有效 + */ +#define SHELL_LOCK_TIMEOUT 0 * 60 * 1000 + +#endif diff --git a/components/usb_stack/CMakeLists.txt b/components/usb_stack/CMakeLists.txt new file mode 100644 index 00000000..0335adb6 --- /dev/null +++ b/components/usb_stack/CMakeLists.txt @@ -0,0 +1,53 @@ +################# Add global include ################# +list(APPEND ADD_INCLUDE +"${CMAKE_CURRENT_SOURCE_DIR}/core" +"${CMAKE_CURRENT_SOURCE_DIR}/common" +"${CMAKE_CURRENT_SOURCE_DIR}/class/cdc" +"${CMAKE_CURRENT_SOURCE_DIR}/class/hid" +"${CMAKE_CURRENT_SOURCE_DIR}/class/msc" +"${CMAKE_CURRENT_SOURCE_DIR}/class/video" +"${CMAKE_CURRENT_SOURCE_DIR}/class/winusb" +) +####################################################### + +################# Add private include ################# +# list(APPEND ADD_PRIVATE_INCLUDE +# ) +####################################################### + +############## Add current dir source files ########### +file(GLOB_RECURSE sources "${CMAKE_CURRENT_SOURCE_DIR}/core/*.c" +"${CMAKE_CURRENT_SOURCE_DIR}/class/*.c" +) +list(APPEND ADD_SRCS ${sources}) +# aux_source_directory(src ADD_SRCS) +####################################################### + +########### Add required/dependent components ######### +#list(APPEND ADD_REQUIREMENTS BSP_${BOARD}_Driver) +####################################################### + +############ Add static libs ########################## +# if(CONFIG_COMPONENT1_INCLUDE_STATIC_LIB) +# list(APPEND ADD_STATIC_LIB "lib/libtest.a") +# endif() +####################################################### + +############ Add dynamic libs ######################### +# list(APPEND ADD_DYNAMIC_LIB "lib/arch/v831/libmaix_nn.so" +# "lib/arch/v831/libmaix_cam.so" +# ) +####################################################### + +############ Add global compile option ################ +#add components denpend on this component +# list(APPEND ADD_DEFINITIONS -DAAAAA222=1 +# -DAAAAA333=1) +####################################################### + +############ Add private compile option ################ +#add compile option for this component that won't affect other modules +# list(APPEND ADD_DEFINITIONS_PRIVATE -DAAAAA=1) +####################################################### + +generate_library() diff --git a/components/usb_stack/class/audio/usbd_audio.c b/components/usb_stack/class/audio/usbd_audio.c new file mode 100644 index 00000000..8e2b8acf --- /dev/null +++ b/components/usb_stack/class/audio/usbd_audio.c @@ -0,0 +1,7 @@ +#include "usbd_core.h" +#include "usbd_audio.h" + +int audio_class_request_handler(struct usb_setup_packet *setup, uint8_t **data, uint32_t *len) +{ + return 0; +} diff --git a/components/usb_stack/class/audio/usbd_audio.h b/components/usb_stack/class/audio/usbd_audio.h new file mode 100644 index 00000000..9c7ebc8f --- /dev/null +++ b/components/usb_stack/class/audio/usbd_audio.h @@ -0,0 +1,240 @@ +/** + * @file + * @brief USB Audio Device Class public header + * + * Header follows below documentation: + * - USB Device Class Definition for Audio Devices (audio10.pdf) + * + * Additional documentation considered a part of USB Audio v1.0: + * - USB Device Class Definition for Audio Data Formats (frmts10.pdf) + * - USB Device Class Definition for Terminal Types (termt10.pdf) + */ + +#ifndef _USBD_AUDIO_H_ +#define _USBD_AUDIO_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** Audio Interface Subclass Codes + * Refer to Table A-2 from audio10.pdf + */ +enum usb_audio_int_subclass_codes { + USB_AUDIO_SUBCLASS_UNDEFINED = 0x00, + USB_AUDIO_AUDIOCONTROL = 0x01, + USB_AUDIO_AUDIOSTREAMING = 0x02, + USB_AUDIO_MIDISTREAMING = 0x03 +}; + +/** Audio Class-Specific AC Interface Descriptor Subtypes + * Refer to Table A-5 from audio10.pdf + */ +enum usb_audio_cs_ac_int_desc_subtypes { + USB_AUDIO_AC_DESCRIPTOR_UNDEFINED = 0x00, + USB_AUDIO_HEADER = 0x01, + USB_AUDIO_INPUT_TERMINAL = 0x02, + USB_AUDIO_OUTPUT_TERMINAL = 0x03, + USB_AUDIO_MIXER_UNIT = 0x04, + USB_AUDIO_SELECTOR_UNIT = 0x05, + USB_AUDIO_FEATURE_UNIT = 0x06, + USB_AUDIO_PROCESSING_UNIT = 0x07, + USB_AUDIO_EXTENSION_UNIT = 0x08 +}; + +/** Audio Class-Specific AS Interface Descriptor Subtypes + * Refer to Table A-6 from audio10.pdf + */ +enum usb_audio_cs_as_int_desc_subtypes { + USB_AUDIO_AS_DESCRIPTOR_UNDEFINED = 0x00, + USB_AUDIO_AS_GENERAL = 0x01, + USB_AUDIO_FORMAT_TYPE = 0x02, + USB_AUDIO_FORMAT_SPECIFIC = 0x03 +}; + +/** Audio Class-Specific Request Codes + * Refer to Table A-9 from audio10.pdf + */ +enum usb_audio_cs_req_codes { + USB_AUDIO_REQUEST_CODE_UNDEFINED = 0x00, + USB_AUDIO_SET_CUR = 0x01, + USB_AUDIO_GET_CUR = 0x81, + USB_AUDIO_SET_MIN = 0x02, + USB_AUDIO_GET_MIN = 0x82, + USB_AUDIO_SET_MAX = 0x03, + USB_AUDIO_GET_MAX = 0x83, + USB_AUDIO_SET_RES = 0x04, + USB_AUDIO_GET_RES = 0x84, + USB_AUDIO_SET_MEM = 0x05, + USB_AUDIO_GET_MEM = 0x85, + USB_AUDIO_GET_STAT = 0xFF +}; + +/** Feature Unit Control Selectors + * Refer to Table A-11 from audio10.pdf + */ +enum usb_audio_fucs { + USB_AUDIO_FU_CONTROL_UNDEFINED = 0x00, + USB_AUDIO_FU_MUTE_CONTROL = 0x01, + USB_AUDIO_FU_VOLUME_CONTROL = 0x02, + USB_AUDIO_FU_BASS_CONTROL = 0x03, + USB_AUDIO_FU_MID_CONTROL = 0x04, + USB_AUDIO_FU_TREBLE_CONTROL = 0x05, + USB_AUDIO_FU_GRAPHIC_EQUALIZER_CONTROL = 0x06, + USB_AUDIO_FU_AUTOMATIC_GAIN_CONTROL = 0x07, + USB_AUDIO_FU_DELAY_CONTROL = 0x08, + USB_AUDIO_FU_BASS_BOOST_CONTROL = 0x09, + USB_AUDIO_FU_LOUDNESS_CONTROL = 0x0A +}; + +/** USB Terminal Types + * Refer to Table 2-1 - Table 2-4 from termt10.pdf + */ +enum usb_audio_terminal_types { + /* USB Terminal Types */ + USB_AUDIO_USB_UNDEFINED = 0x0100, + USB_AUDIO_USB_STREAMING = 0x0101, + USB_AUDIO_USB_VENDOR_SPEC = 0x01FF, + + /* Input Terminal Types */ + USB_AUDIO_IN_UNDEFINED = 0x0200, + USB_AUDIO_IN_MICROPHONE = 0x0201, + USB_AUDIO_IN_DESKTOP_MIC = 0x0202, + USB_AUDIO_IN_PERSONAL_MIC = 0x0203, + USB_AUDIO_IN_OM_DIR_MIC = 0x0204, + USB_AUDIO_IN_MIC_ARRAY = 0x0205, + USB_AUDIO_IN_PROC_MIC_ARRAY = 0x0205, + + /* Output Terminal Types */ + USB_AUDIO_OUT_UNDEFINED = 0x0300, + USB_AUDIO_OUT_SPEAKER = 0x0301, + USB_AUDIO_OUT_HEADPHONES = 0x0302, + USB_AUDIO_OUT_HEAD_AUDIO = 0x0303, + USB_AUDIO_OUT_DESKTOP_SPEAKER = 0x0304, + USB_AUDIO_OUT_ROOM_SPEAKER = 0x0305, + USB_AUDIO_OUT_COMM_SPEAKER = 0x0306, + USB_AUDIO_OUT_LOW_FREQ_SPEAKER = 0x0307, + + /* Bi-directional Terminal Types */ + USB_AUDIO_IO_UNDEFINED = 0x0400, + USB_AUDIO_IO_HANDSET = 0x0401, + USB_AUDIO_IO_HEADSET = 0x0402, + USB_AUDIO_IO_SPEAKERPHONE_ECHO_NONE = 0x0403, + USB_AUDIO_IO_SPEAKERPHONE_ECHO_SUP = 0x0404, + USB_AUDIO_IO_SPEAKERPHONE_ECHO_CAN = 0x0405, +}; + +enum usb_audio_direction { + USB_AUDIO_IN = 0x00, + USB_AUDIO_OUT = 0x01 +}; + +/** + * Addressable logical object inside an audio function. + * Entity is one of: Terminal or Unit. + * Refer to 1.4 Terms and Abbreviations from audio10.pdf + */ +struct usb_audio_entity { + enum usb_audio_cs_ac_int_desc_subtypes subtype; + uint8_t id; +}; + +/** + * @warning Size of baInterface is 2 just to make it useable + * for all kind of devices: headphones, microphone and headset. + * Actual size of the struct should be checked by reading + * .bLength. + */ +struct cs_ac_if_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint16_t bcdADC; + uint16_t wTotalLength; + uint8_t bInCollection; + uint8_t baInterfaceNr[2]; +} __packed; + +struct input_terminal_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t bTerminalID; + uint16_t wTerminalType; + uint8_t bAssocTerminal; + uint8_t bNrChannels; + uint16_t wChannelConfig; + uint8_t iChannelNames; + uint8_t iTerminal; +} __packed; + +/** + * @note Size of Feature unit descriptor is not fixed. + * This structure is just a helper not a common type. + */ +struct feature_unit_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t bUnitID; + uint8_t bSourceID; + uint8_t bControlSize; + uint16_t bmaControls[1]; +} __packed; + +struct output_terminal_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t bTerminalID; + uint16_t wTerminalType; + uint8_t bAssocTerminal; + uint8_t bSourceID; + uint8_t iTerminal; +} __packed; + +struct as_cs_interface_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t bTerminalLink; + uint8_t bDelay; + uint16_t wFormatTag; +} __packed; + +struct format_type_i_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t bFormatType; + uint8_t bNrChannels; + uint8_t bSubframeSize; + uint8_t bBitResolution; + uint8_t bSamFreqType; + uint8_t tSamFreq[3]; +} __packed; + +struct std_as_ad_endpoint_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bEndpointAddress; + uint8_t bmAttributes; + uint16_t wMaxPacketSize; + uint8_t bInterval; + uint8_t bRefresh; + uint8_t bSynchAddress; +} __packed; + +struct cs_as_ad_ep_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t bmAttributes; + uint8_t bLockDelayUnits; + uint16_t wLockDelay; +} __packed; +#ifdef __cplusplus +} +#endif + +#endif /* _USB_AUDIO_H_ */ diff --git a/components/usb_stack/class/cdc/usbd_cdc.c b/components/usb_stack/class/cdc/usbd_cdc.c new file mode 100644 index 00000000..c7cdef83 --- /dev/null +++ b/components/usb_stack/class/cdc/usbd_cdc.c @@ -0,0 +1,189 @@ +/** + * @file usbd_cdc.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "usbd_core.h" +#include "usbd_cdc.h" + +static const char *stop_name[] = {"1", "1.5", "2"}; +static const char *parity_name[] = {"N","O","E","M","S"}; + +/* Device data structure */ +struct cdc_acm_cfg_private { + // /* Interface data buffer */ + /* CDC ACM line coding properties. LE order */ + struct cdc_line_coding line_coding; + /* CDC ACM line state bitmap, DTE side */ + uint8_t line_state; + /* CDC ACM serial state bitmap, DCE side */ + uint8_t serial_state; + /* CDC ACM notification sent status */ + uint8_t notification_sent; + /* CDC ACM configured flag */ + bool configured; + /* CDC ACM suspended flag */ + bool suspended; + +} usbd_cdc_acm_cfg; + +static void usbd_cdc_acm_reset(void) +{ + usbd_cdc_acm_cfg.line_coding.dwDTERate = 2000000; + usbd_cdc_acm_cfg.line_coding.bDataBits = 8; + usbd_cdc_acm_cfg.line_coding.bParityType = 0; + usbd_cdc_acm_cfg.line_coding.bCharFormat = 0; +} + +/** + * @brief Handler called for Class requests not handled by the USB stack. + * + * @param pSetup Information about the request to execute. + * @param len Size of the buffer. + * @param data Buffer containing the request result. + * + * @return 0 on success, negative errno code on fail. + */ +int cdc_acm_class_request_handler(struct usb_setup_packet *pSetup,uint8_t **data,uint32_t *len) +{ + switch (pSetup->bRequest) + { + case CDC_REQUEST_SET_LINE_CODING: + /*******************************************************************************/ + /* Line Coding Structure */ + /*-----------------------------------------------------------------------------*/ + /* Offset | Field | Size | Value | Description */ + /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ + /* 4 | bCharFormat | 1 | Number | Stop bits */ + /* 0 - 1 Stop bit */ + /* 1 - 1.5 Stop bits */ + /* 2 - 2 Stop bits */ + /* 5 | bParityType | 1 | Number | Parity */ + /* 0 - None */ + /* 1 - Odd */ + /* 2 - Even */ + /* 3 - Mark */ + /* 4 - Space */ + /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ + /*******************************************************************************/ + memcpy(&usbd_cdc_acm_cfg.line_coding,*data, sizeof(usbd_cdc_acm_cfg.line_coding)); + USBD_LOG("CDC_SET_LINE_CODING <%d %d %s %s>\r\n", + usbd_cdc_acm_cfg.line_coding.dwDTERate, + usbd_cdc_acm_cfg.line_coding.bDataBits, + parity_name[usbd_cdc_acm_cfg.line_coding.bParityType], + stop_name[usbd_cdc_acm_cfg.line_coding.bCharFormat] + ); + usbd_cdc_acm_set_line_coding(usbd_cdc_acm_cfg.line_coding.dwDTERate,usbd_cdc_acm_cfg.line_coding.bDataBits,\ + usbd_cdc_acm_cfg.line_coding.bParityType,usbd_cdc_acm_cfg.line_coding.bCharFormat); + break; + + case CDC_REQUEST_SET_CONTROL_LINE_STATE: + usbd_cdc_acm_cfg.line_state = (uint8_t)pSetup->wValue; + bool dtr = (pSetup->wValue & 0x01); + bool rts = (pSetup->wValue & 0x02); + USBD_LOG("DTR 0x%x,RTS 0x%x\r\n", + dtr,rts); + usbd_cdc_acm_set_dtr(dtr); + usbd_cdc_acm_set_rts(rts); + break; + + case CDC_REQUEST_GET_LINE_CODING: + *data = (uint8_t *)(&usbd_cdc_acm_cfg.line_coding); + *len = sizeof(usbd_cdc_acm_cfg.line_coding); + USBD_LOG_DBG("CDC_GET_LINE_CODING %d %d %d %d\r\n", + usbd_cdc_acm_cfg.line_coding.dwDTERate, + usbd_cdc_acm_cfg.line_coding.bCharFormat, + usbd_cdc_acm_cfg.line_coding.bParityType, + usbd_cdc_acm_cfg.line_coding.bDataBits); + break; + + default: + USBD_LOG_DBG("CDC ACM request 0x%x, value 0x%x\r\n", + pSetup->bRequest, pSetup->wValue); + return -1; + } + + return 0; +} + +void cdc_notify_handler(uint8_t event, void* arg) +{ + switch (event) + { + case USB_EVENT_RESET: + usbd_cdc_acm_reset(); + break; + + default: + break; + } +} + +__weak void usbd_cdc_acm_set_line_coding(uint32_t baudrate,uint8_t databits,uint8_t parity,uint8_t stopbits) +{ + +} +__weak void usbd_cdc_acm_set_dtr(bool dtr) +{ + +} +__weak void usbd_cdc_acm_set_rts(bool rts) +{ + +} + +void usbd_cdc_add_acm_interface(usbd_class_t *class, usbd_interface_t *intf) +{ + static usbd_class_t *last_class = NULL; + + if(last_class != class) + { + last_class = class; + usbd_class_register(class); + } + + intf->class_handler = cdc_acm_class_request_handler; + intf->custom_handler = NULL; + intf->vendor_handler = NULL; + intf->notify_handler = cdc_notify_handler; + usbd_class_add_interface(class,intf); +} + +void usbd_cdc_add_custom_interface(usbd_class_t *class, usbd_interface_t *intf) +{ + static usbd_class_t *last_class = NULL; + + if(last_class != class) + { + last_class = class; + usbd_class_register(class); + } + + intf->class_handler = cdc_acm_class_request_handler; + intf->custom_handler = NULL; + intf->vendor_handler = NULL; + intf->notify_handler = cdc_notify_handler; + usbd_class_add_interface(class,intf); +} + +void usbd_cdc_add_endpoint(usbd_interface_t *intf, usbd_endpoint_t *ep) +{ + usbd_interface_add_endpoint(intf,ep); +} diff --git a/components/usb_stack/class/cdc/usbd_cdc.h b/components/usb_stack/class/cdc/usbd_cdc.h new file mode 100644 index 00000000..7df35042 --- /dev/null +++ b/components/usb_stack/class/cdc/usbd_cdc.h @@ -0,0 +1,378 @@ +/** + * @file + * @brief USB Communications Device Class (CDC) public header + * + * Header follows the Class Definitions for + * Communications Devices Specification (CDC120-20101103-track.pdf), + * PSTN Devices Specification (PSTN120.pdf) and + * Ethernet Control Model Devices Specification (ECM120.pdf). + * Header is limited to ACM and ECM Subclasses. + */ + +#ifndef _USBD_CDC_H +#define _USBD_CDC_H + +/*------------------------------------------------------------------------------ + * Definitions based on usbcdc11.pdf (www.usb.org) + *----------------------------------------------------------------------------*/ +/* Communication device class specification version 1.10 */ +#define CDC_V1_10 0x0110U +// Communication device class specification version 1.2 +#define CDC_V1_2_0 0x0120U + +/* Communication interface class code */ +/* (usbcdc11.pdf, 4.2, Table 15) */ +#define CDC_COMMUNICATION_INTERFACE_CLASS 0x02U + +/* Communication interface class subclass codes */ +/* (usbcdc11.pdf, 4.3, Table 16) */ +#define CDC_DIRECT_LINE_CONTROL_MODEL 0x01U +#define CDC_ABSTRACT_CONTROL_MODEL 0x02U +#define CDC_TELEPHONE_CONTROL_MODEL 0x03U +#define CDC_MULTI_CHANNEL_CONTROL_MODEL 0x04U +#define CDC_CAPI_CONTROL_MODEL 0x05U +#define CDC_ETHERNET_NETWORKING_CONTROL_MODEL 0x06U +#define CDC_ATM_NETWORKING_CONTROL_MODEL 0x07U +#define CDC_WIRELESS_HANDSET_CONTROL_MODEL 0x08U +#define CDC_DEVICE_MANAGEMENT 0x09U +#define CDC_MOBILE_DIRECT_LINE_MODEL 0x0AU +#define CDC_OBEX 0x0BU +#define CDC_ETHERNET_EMULATION_MODEL 0x0CU +#define CDC_NETWORK_CONTROL_MODEL 0x0DU + +/* Communication interface class control protocol codes */ +/* (usbcdc11.pdf, 4.4, Table 17) */ +#define CDC_COMMON_PROTOCOL_NONE 0x00U +#define CDC_COMMON_PROTOCOL_AT_COMMANDS 0x01U +#define CDC_COMMON_PROTOCOL_AT_COMMANDS_PCCA_101 0x02U +#define CDC_COMMON_PROTOCOL_AT_COMMANDS_PCCA_101_AND_ANNEXO 0x03U +#define CDC_COMMON_PROTOCOL_AT_COMMANDS_GSM_707 0x04U +#define CDC_COMMON_PROTOCOL_AT_COMMANDS_3GPP_27007 0x05U +#define CDC_COMMON_PROTOCOL_AT_COMMANDS_CDMA 0x06U +#define CDC_COMMON_PROTOCOL_ETHERNET_EMULATION_MODEL 0x07U +// NCM Communication Interface Protocol Codes +// (usbncm10.pdf, 4.2, Table 4-2) +#define CDC_NCM_PROTOCOL_NONE 0x00U +#define CDC_NCM_PROTOCOL_OEM 0xFEU + +/* Data interface class code */ +/* (usbcdc11.pdf, 4.5, Table 18) */ +#define CDC_DATA_INTERFACE_CLASS 0x0A + +/* Data interface class protocol codes */ +/* (usbcdc11.pdf, 4.7, Table 19) */ +#define CDC_DATA_PROTOCOL_ISDN_BRI 0x30 +#define CDC_DATA_PROTOCOL_HDLC 0x31 +#define CDC_DATA_PROTOCOL_TRANSPARENT 0x32 +#define CDC_DATA_PROTOCOL_Q921_MANAGEMENT 0x50 +#define CDC_DATA_PROTOCOL_Q921_DATA_LINK 0x51 +#define CDC_DATA_PROTOCOL_Q921_MULTIPLEXOR 0x52 +#define CDC_DATA_PROTOCOL_V42 0x90 +#define CDC_DATA_PROTOCOL_EURO_ISDN 0x91 +#define CDC_DATA_PROTOCOL_V24_RATE_ADAPTATION 0x92 +#define CDC_DATA_PROTOCOL_CAPI 0x93 +#define CDC_DATA_PROTOCOL_HOST_BASED_DRIVER 0xFD +#define CDC_DATA_PROTOCOL_DESCRIBED_IN_PUFD 0xFE + +/* Type values for bDescriptorType field of functional descriptors */ +/* (usbcdc11.pdf, 5.2.3, Table 24) */ +#define CDC_CS_INTERFACE 0x24 +#define CDC_CS_ENDPOINT 0x25 + +/* Type values for bDescriptorSubtype field of functional descriptors */ +/* (usbcdc11.pdf, 5.2.3, Table 25) */ +#define CDC_FUNC_DESC_HEADER 0x00 +#define CDC_FUNC_DESC_CALL_MANAGEMENT 0x01 +#define CDC_FUNC_DESC_ABSTRACT_CONTROL_MANAGEMENT 0x02 +#define CDC_FUNC_DESC_DIRECT_LINE_MANAGEMENT 0x03 +#define CDC_FUNC_DESC_TELEPHONE_RINGER 0x04 +#define CDC_FUNC_DESC_REPORTING_CAPABILITIES 0x05 +#define CDC_FUNC_DESC_UNION 0x06 +#define CDC_FUNC_DESC_COUNTRY_SELECTION 0x07 +#define CDC_FUNC_DESC_TELEPHONE_OPERATIONAL_MODES 0x08 +#define CDC_FUNC_DESC_USB_TERMINAL 0x09 +#define CDC_FUNC_DESC_NETWORK_CHANNEL 0x0A +#define CDC_FUNC_DESC_PROTOCOL_UNIT 0x0B +#define CDC_FUNC_DESC_EXTENSION_UNIT 0x0C +#define CDC_FUNC_DESC_MULTI_CHANNEL_MANAGEMENT 0x0D +#define CDC_FUNC_DESC_CAPI_CONTROL_MANAGEMENT 0x0E +#define CDC_FUNC_DESC_ETHERNET_NETWORKING 0x0F +#define CDC_FUNC_DESC_ATM_NETWORKING 0x10 +#define CDC_FUNC_DESC_WIRELESS_HANDSET_CONTROL_MODEL 0x11 +#define CDC_FUNC_DESC_MOBILE_DIRECT_LINE_MODEL 0x12 +#define CDC_FUNC_DESC_MOBILE_DIRECT_LINE_MODEL_DETAIL 0x13 +#define CDC_FUNC_DESC_DEVICE_MANAGEMENT_MODEL 0x14 +#define CDC_FUNC_DESC_OBEX 0x15 +#define CDC_FUNC_DESC_COMMAND_SET 0x16 +#define CDC_FUNC_DESC_COMMAND_SET_DETAIL 0x17 +#define CDC_FUNC_DESC_TELEPHONE_CONTROL_MODEL 0x18 +#define CDC_FUNC_DESC_OBEX_SERVICE_IDENTIFIER 0x19 + +/* CDC class-specific request codes */ +/* (usbcdc11.pdf, 6.2, Table 46) */ +/* see Table 45 for info about the specific requests. */ +#define CDC_REQUEST_SEND_ENCAPSULATED_COMMAND 0x00 +#define CDC_REQUEST_GET_ENCAPSULATED_RESPONSE 0x01 +#define CDC_REQUEST_SET_COMM_FEATURE 0x02 +#define CDC_REQUEST_GET_COMM_FEATURE 0x03 +#define CDC_REQUEST_CLEAR_COMM_FEATURE 0x04 +#define CDC_REQUEST_SET_AUX_LINE_STATE 0x10 +#define CDC_REQUEST_SET_HOOK_STATE 0x11 +#define CDC_REQUEST_PULSE_SETUP 0x12 +#define CDC_REQUEST_SEND_PULSE 0x13 +#define CDC_REQUEST_SET_PULSE_TIME 0x14 +#define CDC_REQUEST_RING_AUX_JACK 0x15 +#define CDC_REQUEST_SET_LINE_CODING 0x20 +#define CDC_REQUEST_GET_LINE_CODING 0x21 +#define CDC_REQUEST_SET_CONTROL_LINE_STATE 0x22 +#define CDC_REQUEST_SEND_BREAK 0x23 +#define CDC_REQUEST_SET_RINGER_PARMS 0x30 +#define CDC_REQUEST_GET_RINGER_PARMS 0x31 +#define CDC_REQUEST_SET_OPERATION_PARMS 0x32 +#define CDC_REQUEST_GET_OPERATION_PARMS 0x33 +#define CDC_REQUEST_SET_LINE_PARMS 0x34 +#define CDC_REQUEST_GET_LINE_PARMS 0x35 +#define CDC_REQUEST_DIAL_DIGITS 0x36 +#define CDC_REQUEST_SET_UNIT_PARAMETER 0x37 +#define CDC_REQUEST_GET_UNIT_PARAMETER 0x38 +#define CDC_REQUEST_CLEAR_UNIT_PARAMETER 0x39 +#define CDC_REQUEST_GET_PROFILE 0x3A +#define CDC_REQUEST_SET_ETHERNET_MULTICAST_FILTERS 0x40 +#define CDC_REQUEST_SET_ETHERNET_PMP_FILTER 0x41 +#define CDC_REQUEST_GET_ETHERNET_PMP_FILTER 0x42 +#define CDC_REQUEST_SET_ETHERNET_PACKET_FILTER 0x43 +#define CDC_REQUEST_GET_ETHERNET_STATISTIC 0x44 +#define CDC_REQUEST_SET_ATM_DATA_FORMAT 0x50 +#define CDC_REQUEST_GET_ATM_DEVICE_STATISTICS 0x51 +#define CDC_REQUEST_SET_ATM_DEFAULT_VC 0x52 +#define CDC_REQUEST_GET_ATM_VC_STATISTICS 0x53 + +/* Communication feature selector codes */ +/* (usbcdc11.pdf, 6.2.2..6.2.4, Table 47) */ +#define CDC_ABSTRACT_STATE 0x01 +#define CDC_COUNTRY_SETTING 0x02 + +/** Control Signal Bitmap Values for SetControlLineState */ +#define SET_CONTROL_LINE_STATE_RTS 0x02 +#define SET_CONTROL_LINE_STATE_DTR 0x01 + +/* Feature Status returned for ABSTRACT_STATE Selector */ +/* (usbcdc11.pdf, 6.2.3, Table 48) */ +#define CDC_IDLE_SETTING (1 << 0) +#define CDC_DATA_MULTPLEXED_STATE (1 << 1) + + +/* Control signal bitmap values for the SetControlLineState request */ +/* (usbcdc11.pdf, 6.2.14, Table 51) */ +#define CDC_DTE_PRESENT (1 << 0) +#define CDC_ACTIVATE_CARRIER (1 << 1) + +/* CDC class-specific notification codes */ +/* (usbcdc11.pdf, 6.3, Table 68) */ +/* see Table 67 for Info about class-specific notifications */ +#define CDC_NOTIFICATION_NETWORK_CONNECTION 0x00 +#define CDC_RESPONSE_AVAILABLE 0x01 +#define CDC_AUX_JACK_HOOK_STATE 0x08 +#define CDC_RING_DETECT 0x09 +#define CDC_NOTIFICATION_SERIAL_STATE 0x20 +#define CDC_CALL_STATE_CHANGE 0x28 +#define CDC_LINE_STATE_CHANGE 0x29 +#define CDC_CONNECTION_SPEED_CHANGE 0x2A + +/* UART state bitmap values (Serial state notification). */ +/* (usbcdc11.pdf, 6.3.5, Table 69) */ +#define CDC_SERIAL_STATE_OVERRUN (1 << 6) /* receive data overrun error has occurred */ +#define CDC_SERIAL_STATE_OVERRUN_Pos ( 6) +#define CDC_SERIAL_STATE_OVERRUN_Msk (1 << CDC_SERIAL_STATE_OVERRUN_Pos) +#define CDC_SERIAL_STATE_PARITY (1 << 5) /* parity error has occurred */ +#define CDC_SERIAL_STATE_PARITY_Pos ( 5) +#define CDC_SERIAL_STATE_PARITY_Msk (1 << CDC_SERIAL_STATE_PARITY_Pos) +#define CDC_SERIAL_STATE_FRAMING (1 << 4) /* framing error has occurred */ +#define CDC_SERIAL_STATE_FRAMING_Pos ( 4) +#define CDC_SERIAL_STATE_FRAMING_Msk (1 << CDC_SERIAL_STATE_FRAMING_Pos) +#define CDC_SERIAL_STATE_RING (1 << 3) /* state of ring signal detection */ +#define CDC_SERIAL_STATE_RING_Pos ( 3) +#define CDC_SERIAL_STATE_RING_Msk (1 << CDC_SERIAL_STATE_RING_Pos) +#define CDC_SERIAL_STATE_BREAK (1 << 2) /* state of break detection */ +#define CDC_SERIAL_STATE_BREAK_Pos ( 2) +#define CDC_SERIAL_STATE_BREAK_Msk (1 << CDC_SERIAL_STATE_BREAK_Pos) +#define CDC_SERIAL_STATE_TX_CARRIER (1 << 1) /* state of transmission carrier */ +#define CDC_SERIAL_STATE_TX_CARRIER_Pos ( 1) +#define CDC_SERIAL_STATE_TX_CARRIER_Msk (1 << CDC_SERIAL_STATE_TX_CARRIER_Pos) +#define CDC_SERIAL_STATE_RX_CARRIER (1 << 0) /* state of receiver carrier */ +#define CDC_SERIAL_STATE_RX_CARRIER_Pos ( 0) +#define CDC_SERIAL_STATE_RX_CARRIER_Msk (1 << CDC_SERIAL_STATE_RX_CARRIER_Pos) + + +/*------------------------------------------------------------------------------ + * Structures based on usbcdc11.pdf (www.usb.org) + *----------------------------------------------------------------------------*/ + +/* Header functional descriptor */ +/* (usbcdc11.pdf, 5.2.3.1) */ +/* This header must precede any list of class-specific descriptors. */ +struct cdc_header_descriptor { + uint8_t bFunctionLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* CS_INTERFACE descriptor type */ + uint8_t bDescriptorSubtype; /* Header functional descriptor subtype */ + uint16_t bcdCDC; /* USB CDC specification release version */ +} __packed; + +/* Call management functional descriptor */ +/* (usbcdc11.pdf, 5.2.3.2) */ +/* Describes the processing of calls for the communication class interface. */ +struct cdc_call_management_descriptor { + uint8_t bFunctionLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* CS_INTERFACE descriptor type */ + uint8_t bDescriptorSubtype; /* call management functional descriptor subtype */ + uint8_t bmCapabilities; /* capabilities that this configuration supports */ + uint8_t bDataInterface; /* interface number of the data class interface used for call management (optional) */ +} __packed; + +/* Abstract control management functional descriptor */ +/* (usbcdc11.pdf, 5.2.3.3) */ +/* Describes the command supported by the communication interface class with the Abstract Control Model subclass code. */ +struct cdc_abstract_control_management_descriptor{ + uint8_t bFunctionLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* CS_INTERFACE descriptor type */ + uint8_t bDescriptorSubtype; /* abstract control management functional descriptor subtype */ + uint8_t bmCapabilities; /* capabilities supported by this configuration */ +} __packed; + +/* Union functional descriptors */ +/* (usbcdc11.pdf, 5.2.3.8) */ +/* Describes the relationship between a group of interfaces that can be considered to form a functional unit. */ +struct cdc_union_descriptor{ + uint8_t bFunctionLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* CS_INTERFACE descriptor type */ + uint8_t bDescriptorSubtype; /* union functional descriptor subtype */ + uint8_t bMasterInterface; /* interface number designated as master */ +} __packed; + +/* Union functional descriptors with one slave interface */ +/* (usbcdc11.pdf, 5.2.3.8) */ +struct cdc_union_1slave_descriptor { + uint8_t bFunctionLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t bControlInterface; + uint8_t bSubordinateInterface0; +} __packed; + +/* Line coding structure for GET_LINE_CODING / SET_LINE_CODING class requests*/ +/* Format of the data returned when a GetLineCoding request is received */ +/* (usbcdc11.pdf, 6.2.13) */ +struct cdc_line_coding { + uint32_t dwDTERate; /* Data terminal rate in bits per second */ + uint8_t bCharFormat; /* Number of stop bits */ + uint8_t bParityType; /* Parity bit type */ + uint8_t bDataBits; /* Number of data bits */ +} __packed; + +/** Data structure for the notification about SerialState */ +struct cdc_acm_notification { + uint8_t bmRequestType; + uint8_t bNotificationType; + uint16_t wValue; + uint16_t wIndex; + uint16_t wLength; + uint16_t data; +} __packed; + +/** Ethernet Networking Functional Descriptor */ +struct cdc_ecm_descriptor { + uint8_t bFunctionLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t iMACAddress; + uint32_t bmEthernetStatistics; + uint16_t wMaxSegmentSize; + uint16_t wNumberMCFilters; + uint8_t bNumberPowerFilters; +} __packed; + +/*Length of template descriptor: 66 bytes*/ +#define CDC_ACM_DESCRIPTOR_LEN (8 + 9 + 5 + 5 + 4 + 5 + 7 + 9 + 7 + 7) + +#define CDC_ACM_DESCRIPTOR_INIT(bFirstInterface,int_ep,out_ep,in_ep,str_idx) \ + /* Interface Associate */\ + 0x08, /* bLength */\ + USB_DESCRIPTOR_TYPE_INTERFACE_ASSOCIATION, /* bDescriptorType */\ + bFirstInterface, /* bFirstInterface */\ + 0x02, /* bInterfaceCount */\ + USB_DEVICE_CLASS_CDC, /* bFunctionClass */\ + CDC_ABSTRACT_CONTROL_MODEL, /* bFunctionSubClass */\ + CDC_COMMON_PROTOCOL_AT_COMMANDS, /* bFunctionProtocol */\ + 0x00, /* iFunction */\ + /* CDC Control Interface */\ + 0x09, /* bLength */\ + USB_DESCRIPTOR_TYPE_INTERFACE, /* bDescriptorType */\ + bFirstInterface, /* bInterfaceNumber */\ + 0x00, /* bAlternateSetting */\ + 0x01, /* bNumEndpoints */\ + USB_DEVICE_CLASS_CDC, /* bInterfaceClass */\ + CDC_ABSTRACT_CONTROL_MODEL, /* bInterfaceSubClass */\ + CDC_COMMON_PROTOCOL_AT_COMMANDS, /* bInterfaceProtocol */\ + str_idx, /* iInterface */\ + /* CDC Header */\ + 0x05, /* bLength */\ + CDC_CS_INTERFACE, /* bDescriptorType */\ + CDC_FUNC_DESC_HEADER, /* bDescriptorSubtype */\ + WBVAL(CDC_V1_10), /* bcdCDC */ \ + /* CDC Call */\ + 0x05, /* bLength */\ + CDC_CS_INTERFACE, /* bDescriptorType */\ + CDC_FUNC_DESC_CALL_MANAGEMENT, /* bDescriptorSubtype */\ + bFirstInterface, /* bmCapabilities */\ + (uint8_t)(bFirstInterface+1), /* bDataInterface */\ + /* CDC ACM: support line request */\ + 0x04, /* bLength */\ + CDC_CS_INTERFACE, /* bDescriptorType */\ + CDC_FUNC_DESC_ABSTRACT_CONTROL_MANAGEMENT, /* bDescriptorSubtype */\ + 0x02, /* bmCapabilities */\ + /* CDC Union */\ + 0x05, /* bLength */\ + CDC_CS_INTERFACE, /* bDescriptorType */\ + CDC_FUNC_DESC_UNION, /* bDescriptorSubtype */\ + bFirstInterface, /* bMasterInterface */\ + (uint8_t)(bFirstInterface+1), /* bSlaveInterface0 */\ + /* Endpoint Notification */\ + 0x07, /* bLength */\ + USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */\ + int_ep, /* bEndpointAddress */\ + 0x03, /* bmAttributes */\ + 0x40, 0x00, /* wMaxPacketSize */\ + 0x01, /* bInterval */\ + /* CDC Data Interface */\ + 0x09, /* bLength */\ + USB_DESCRIPTOR_TYPE_INTERFACE, /* bDescriptorType */\ + (uint8_t)(bFirstInterface+1), /* bInterfaceNumber */\ + 0x00, /* bAlternateSetting */\ + 0x02, /* bNumEndpoints */\ + CDC_DATA_INTERFACE_CLASS, /* bInterfaceClass */\ + 0x00, /* bInterfaceSubClass */\ + 0x00, /* bInterfaceProtocol */\ + 0x00, /* iInterface */\ + /* Endpoint Out */\ + 0x07, /* bLength */\ + USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */\ + out_ep, /* bEndpointAddress */\ + 0x02, /* bmAttributes */\ + 0x40, 0x00, /* wMaxPacketSize */\ + 0x01, /* bInterval */\ + /* Endpoint In */\ + 0x07, /* bLength */\ + USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */\ + in_ep, /* bEndpointAddress */\ + 0x02, /* bmAttributes */\ + 0x40, 0x00, /* wMaxPacketSize */\ + 0x01 /* bInterval */ + +void usbd_cdc_add_acm_interface(usbd_class_t *class, usbd_interface_t *intf); +void usbd_cdc_add_custom_interface(usbd_class_t *class, usbd_interface_t *intf); +void usbd_cdc_add_endpoint(usbd_interface_t *intf, usbd_endpoint_t *ep); + +void usbd_cdc_acm_set_line_coding(uint32_t baudrate, uint8_t databits, uint8_t parity, uint8_t stopbits); +void usbd_cdc_acm_set_dtr(bool dtr); +void usbd_cdc_acm_set_rts(bool rts); +#endif /* USB_CDC_H_ */ diff --git a/components/usb_stack/class/hid/usbd_hid.c b/components/usb_stack/class/hid/usbd_hid.c new file mode 100644 index 00000000..41172876 --- /dev/null +++ b/components/usb_stack/class/hid/usbd_hid.c @@ -0,0 +1,94 @@ +/** + * @file usbd_hid.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "usbd_core.h" +#include "usbd_hid.h" + +int hid_custom_request_handler(struct usb_setup_packet *setup, uint8_t **data, uint32_t *len) +{ + USBD_LOG_DBG("Standard request:" + "bRequest 0x%02x, bmRequestType 0x%02x, len %d", + setup->bRequest, setup->bmRequestType, *len); + + if (REQTYPE_GET_DIR(setup->bmRequestType) == USB_REQUEST_DEVICE_TO_HOST && + setup->bRequest == USB_REQUEST_GET_DESCRIPTOR) + { + uint8_t value = (uint8_t)(setup->wValue >> 8); + //uint8_t iface_num = (uint8_t)setup->wIndex; + + switch (value) + { + case USB_DESCRIPTOR_TYPE_HID: + + USBD_LOG_DBG("Return HID Descriptor"); + + break; + case USB_DESCRIPTOR_TYPE_HID_REPORT: + USBD_LOG_DBG("Return Report Descriptor"); + + break; + case USB_DESCRIPTOR_TYPE_HID_PHYSICAL: + USBD_LOG_DBG("Return PHYSICAL Descriptor"); + + break; + default: + return -2; + } + + return 0; + } + + return -1; +} +int hid_class_request_handler(struct usb_setup_packet *setup, uint8_t **data, uint32_t *len) +{ + USBD_LOG_DBG("Class request:" + "bRequest 0x%02x, bmRequestType 0x%02x len %d", + setup->bRequest, setup->bmRequestType, *len); + + switch (setup->bRequest) + { + case HID_REQUEST_GET_IDLE: + + break; + case HID_REQUEST_GET_REPORT: + + break; + case HID_REQUEST_GET_PROTOCOL: + + break; + case HID_REQUEST_SET_IDLE: + + break; + case HID_REQUEST_SET_REPORT: + + break; + case HID_REQUEST_SET_PROTOCOL: + + break; + default: + USBD_LOG_ERR("Unhandled request 0x%02x", setup->bRequest); + break; + } + + return 0; +} diff --git a/components/usb_stack/class/hid/usbd_hid.h b/components/usb_stack/class/hid/usbd_hid.h new file mode 100644 index 00000000..6d5b0065 --- /dev/null +++ b/components/usb_stack/class/hid/usbd_hid.h @@ -0,0 +1,396 @@ +/** + * @file + * @brief USB Human Interface Device (HID) Class public header + * + * Header follows Device Class Definition for Human Interface Devices (HID) + * Version 1.11 document (HID1_11-1.pdf). + */ +#ifndef _USBD_HID_H_ +#define _USBD_HID_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* HID Class Descriptor Types */ +#define USB_DESCRIPTOR_TYPE_HID 0x21 +#define USB_DESCRIPTOR_TYPE_HID_REPORT 0x22 +#define USB_DESCRIPTOR_TYPE_HID_PHYSICAL 0x23 + +/* HID Class Specific Requests */ +#define HID_REQUEST_GET_REPORT 0x01 +#define HID_REQUEST_GET_IDLE 0x02 +#define HID_REQUEST_GET_PROTOCOL 0x03 +#define HID_REQUEST_SET_REPORT 0x09 +#define HID_REQUEST_SET_IDLE 0x0A +#define HID_REQUEST_SET_PROTOCOL 0x0B + +/* HID Report Definitions */ +struct usb_hid_class_subdescriptor { + uint8_t bDescriptorType; + uint16_t wDescriptorLength; +} __packed; + +struct usb_hid_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint16_t bcdHID; + uint8_t bCountryCode; + uint8_t bNumDescriptors; + + /* + * Specification says at least one Class Descriptor needs to + * be present (Report Descriptor). + */ + struct usb_hid_class_subdescriptor subdesc[1]; +} __packed; + +/* HID Items types */ +#define ITEM_MAIN 0x0 +#define ITEM_GLOBAL 0x1 +#define ITEM_LOCAL 0x2 + +/* HID Main Items tags */ +#define ITEM_TAG_INPUT 0x8 +#define ITEM_TAG_OUTPUT 0x9 +#define ITEM_TAG_COLLECTION 0xA +#define ITEM_TAG_COLLECTION_END 0xC + +/* HID Global Items tags */ +#define ITEM_TAG_USAGE_PAGE 0x0 +#define ITEM_TAG_LOGICAL_MIN 0x1 +#define ITEM_TAG_LOGICAL_MAX 0x2 +#define ITEM_TAG_REPORT_SIZE 0x7 +#define ITEM_TAG_REPORT_ID 0x8 +#define ITEM_TAG_REPORT_COUNT 0x9 + +/* HID Local Items tags */ +#define ITEM_TAG_USAGE 0x0 +#define ITEM_TAG_USAGE_MIN 0x1 +#define ITEM_TAG_USAGE_MAX 0x2 + +#define HID_ITEM(bTag, bType, bSize) (((bTag & 0xF) << 4) | \ + ((bType & 0x3) << 2) | (bSize & 0x3)) + +#define HID_MAIN_ITEM(bTag, bSize) HID_ITEM(bTag, ITEM_MAIN, bSize) +#define HID_GLOBAL_ITEM(bTag, bSize) HID_ITEM(bTag, ITEM_GLOBAL, bSize) +#define HID_LOCAL_ITEM(bTag, bSize) HID_ITEM(bTag, ITEM_LOCAL, bSize) + +#define HID_MI_COLLECTION HID_MAIN_ITEM(ITEM_TAG_COLLECTION, 1) +#define HID_MI_COLLECTION_END HID_MAIN_ITEM(ITEM_TAG_COLLECTION_END, \ + 0) +#define HID_MI_INPUT HID_MAIN_ITEM(ITEM_TAG_INPUT, 1) +#define HID_MI_OUTPUT HID_MAIN_ITEM(ITEM_TAG_OUTPUT, 1) + +#define HID_GI_USAGE_PAGE HID_GLOBAL_ITEM(ITEM_TAG_USAGE_PAGE, 1) +#define HID_GI_LOGICAL_MIN(size) HID_GLOBAL_ITEM(ITEM_TAG_LOGICAL_MIN, \ + size) +#define HID_GI_LOGICAL_MAX(size) HID_GLOBAL_ITEM(ITEM_TAG_LOGICAL_MAX, \ + size) +#define HID_GI_REPORT_SIZE HID_GLOBAL_ITEM(ITEM_TAG_REPORT_SIZE, \ + 1) +#define HID_GI_REPORT_ID HID_GLOBAL_ITEM(ITEM_TAG_REPORT_ID, \ + 1) +#define HID_GI_REPORT_COUNT HID_GLOBAL_ITEM(ITEM_TAG_REPORT_COUNT, \ + 1) + +#define HID_LI_USAGE HID_LOCAL_ITEM(ITEM_TAG_USAGE, 1) +#define HID_LI_USAGE_MIN(size) HID_LOCAL_ITEM(ITEM_TAG_USAGE_MIN, \ + size) +#define HID_LI_USAGE_MAX(size) HID_LOCAL_ITEM(ITEM_TAG_USAGE_MAX, \ + size) + +/* Defined in Universal Serial Bus HID Usage Tables version 1.11 */ +#define USAGE_GEN_DESKTOP 0x01 +#define USAGE_GEN_KEYBOARD 0x07 +#define USAGE_GEN_LEDS 0x08 +#define USAGE_GEN_BUTTON 0x09 + +/* Generic Desktop Page usages */ +#define USAGE_GEN_DESKTOP_UNDEFINED 0x00 +#define USAGE_GEN_DESKTOP_POINTER 0x01 +#define USAGE_GEN_DESKTOP_MOUSE 0x02 +#define USAGE_GEN_DESKTOP_JOYSTICK 0x04 +#define USAGE_GEN_DESKTOP_GAMEPAD 0x05 +#define USAGE_GEN_DESKTOP_KEYBOARD 0x06 +#define USAGE_GEN_DESKTOP_KEYPAD 0x07 +#define USAGE_GEN_DESKTOP_X 0x30 +#define USAGE_GEN_DESKTOP_Y 0x31 +#define USAGE_GEN_DESKTOP_WHEEL 0x38 + +/* Collection types */ +#define COLLECTION_PHYSICAL 0x00 +#define COLLECTION_APPLICATION 0x01 + +/* Protocols */ +#define HID_PROTOCOL_BOOT 0x00 +#define HID_PROTOCOL_REPORT 0x01 + +/* Example HID report descriptors */ +/** + * @brief Simple HID mouse report descriptor for n button mouse. + * + * @param bcnt Button count. Allowed values from 1 to 8. + */ +#define HID_MOUSE_REPORT_DESC(bcnt) { \ + /* USAGE_PAGE (Generic Desktop) */ \ + HID_GI_USAGE_PAGE, USAGE_GEN_DESKTOP, \ + /* USAGE (Mouse) */ \ + HID_LI_USAGE, USAGE_GEN_DESKTOP_MOUSE, \ + /* COLLECTION (Application) */ \ + HID_MI_COLLECTION, COLLECTION_APPLICATION, \ + /* USAGE (Pointer) */ \ + HID_LI_USAGE, USAGE_GEN_DESKTOP_POINTER, \ + /* COLLECTION (Physical) */ \ + HID_MI_COLLECTION, COLLECTION_PHYSICAL, \ + /* Bits used for button signalling */ \ + /* USAGE_PAGE (Button) */ \ + HID_GI_USAGE_PAGE, USAGE_GEN_BUTTON, \ + /* USAGE_MINIMUM (Button 1) */ \ + HID_LI_USAGE_MIN(1), 0x01, \ + /* USAGE_MAXIMUM (Button bcnt) */ \ + HID_LI_USAGE_MAX(1), bcnt, \ + /* LOGICAL_MINIMUM (0) */ \ + HID_GI_LOGICAL_MIN(1), 0x00, \ + /* LOGICAL_MAXIMUM (1) */ \ + HID_GI_LOGICAL_MAX(1), 0x01, \ + /* REPORT_SIZE (1) */ \ + HID_GI_REPORT_SIZE, 0x01, \ + /* REPORT_COUNT (bcnt) */ \ + HID_GI_REPORT_COUNT, bcnt, \ + /* INPUT (Data,Var,Abs) */ \ + HID_MI_INPUT, 0x02, \ + /* Unused bits */ \ + /* REPORT_SIZE (8 - bcnt) */ \ + HID_GI_REPORT_SIZE, (8 - bcnt), \ + /* REPORT_COUNT (1) */ \ + HID_GI_REPORT_COUNT, 0x01, \ + /* INPUT (Cnst,Ary,Abs) */ \ + HID_MI_INPUT, 0x01, \ + /* X and Y axis, scroll */ \ + /* USAGE_PAGE (Generic Desktop) */ \ + HID_GI_USAGE_PAGE, USAGE_GEN_DESKTOP, \ + /* USAGE (X) */ \ + HID_LI_USAGE, USAGE_GEN_DESKTOP_X, \ + /* USAGE (Y) */ \ + HID_LI_USAGE, USAGE_GEN_DESKTOP_Y, \ + /* USAGE (WHEEL) */ \ + HID_LI_USAGE, USAGE_GEN_DESKTOP_WHEEL, \ + /* LOGICAL_MINIMUM (-127) */ \ + HID_GI_LOGICAL_MIN(1), -127, \ + /* LOGICAL_MAXIMUM (127) */ \ + HID_GI_LOGICAL_MAX(1), 127, \ + /* REPORT_SIZE (8) */ \ + HID_GI_REPORT_SIZE, 0x08, \ + /* REPORT_COUNT (3) */ \ + HID_GI_REPORT_COUNT, 0x03, \ + /* INPUT (Data,Var,Rel) */ \ + HID_MI_INPUT, 0x06, \ + /* END_COLLECTION */ \ + HID_MI_COLLECTION_END, \ + /* END_COLLECTION */ \ + HID_MI_COLLECTION_END, \ +} + +/** + * @brief Simple HID keyboard report descriptor. + */ +#define HID_KEYBOARD_REPORT_DESC() { \ + /* USAGE_PAGE (Generic Desktop) */ \ + HID_GI_USAGE_PAGE, USAGE_GEN_DESKTOP, \ + /* USAGE (Keyboard) */ \ + HID_LI_USAGE, USAGE_GEN_DESKTOP_KEYBOARD, \ + /* COLLECTION (Application) */ \ + HID_MI_COLLECTION, COLLECTION_APPLICATION, \ + /* USAGE_PAGE (Keypad) */ \ + HID_GI_USAGE_PAGE, USAGE_GEN_DESKTOP_KEYPAD, \ + /* USAGE_MINIMUM (Keyboard LeftControl) */ \ + HID_LI_USAGE_MIN(1), 0xE0, \ + /* USAGE_MAXIMUM (Keyboard Right GUI) */ \ + HID_LI_USAGE_MAX(1), 0xE7, \ + /* LOGICAL_MINIMUM (0) */ \ + HID_GI_LOGICAL_MIN(1), 0x00, \ + /* LOGICAL_MAXIMUM (1) */ \ + HID_GI_LOGICAL_MAX(1), 0x01, \ + /* REPORT_SIZE (1) */ \ + HID_GI_REPORT_SIZE, 0x01, \ + /* REPORT_COUNT (8) */ \ + HID_GI_REPORT_COUNT, 0x08, \ + /* INPUT (Data,Var,Abs) */ \ + HID_MI_INPUT, 0x02, \ + /* REPORT_SIZE (8) */ \ + HID_GI_REPORT_SIZE, 0x08, \ + /* REPORT_COUNT (1) */ \ + HID_GI_REPORT_COUNT, 0x01, \ + /* INPUT (Cnst,Var,Abs) */ \ + HID_MI_INPUT, 0x03, \ + /* REPORT_SIZE (1) */ \ + HID_GI_REPORT_SIZE, 0x01, \ + /* REPORT_COUNT (5) */ \ + HID_GI_REPORT_COUNT, 0x05, \ + /* USAGE_PAGE (LEDs) */ \ + HID_GI_USAGE_PAGE, USAGE_GEN_LEDS, \ + /* USAGE_MINIMUM (Num Lock) */ \ + HID_LI_USAGE_MIN(1), 0x01, \ + /* USAGE_MAXIMUM (Kana) */ \ + HID_LI_USAGE_MAX(1), 0x05, \ + /* OUTPUT (Data,Var,Abs) */ \ + HID_MI_OUTPUT, 0x02, \ + /* REPORT_SIZE (3) */ \ + HID_GI_REPORT_SIZE, 0x03, \ + /* REPORT_COUNT (1) */ \ + HID_GI_REPORT_COUNT, 0x01, \ + /* OUTPUT (Cnst,Var,Abs) */ \ + HID_MI_OUTPUT, 0x03, \ + /* REPORT_SIZE (8) */ \ + HID_GI_REPORT_SIZE, 0x08, \ + /* REPORT_COUNT (6) */ \ + HID_GI_REPORT_COUNT, 0x06, \ + /* LOGICAL_MINIMUM (0) */ \ + HID_GI_LOGICAL_MIN(1), 0x00, \ + /* LOGICAL_MAXIMUM (101) */ \ + HID_GI_LOGICAL_MAX(1), 0x65, \ + /* USAGE_PAGE (Keypad) */ \ + HID_GI_USAGE_PAGE, USAGE_GEN_DESKTOP_KEYPAD, \ + /* USAGE_MINIMUM (Reserved) */ \ + HID_LI_USAGE_MIN(1), 0x00, \ + /* USAGE_MAXIMUM (Keyboard Application) */ \ + HID_LI_USAGE_MAX(1), 0x65, \ + /* INPUT (Data,Ary,Abs) */ \ + HID_MI_INPUT, 0x00, \ + /* END_COLLECTION */ \ + HID_MI_COLLECTION_END, \ +} + +/** + * @brief HID keyboard button codes. + */ +enum hid_kbd_code { + HID_KEY_A = 4, + HID_KEY_B = 5, + HID_KEY_C = 6, + HID_KEY_D = 7, + HID_KEY_E = 8, + HID_KEY_F = 9, + HID_KEY_G = 10, + HID_KEY_H = 11, + HID_KEY_I = 12, + HID_KEY_J = 13, + HID_KEY_K = 14, + HID_KEY_L = 15, + HID_KEY_M = 16, + HID_KEY_N = 17, + HID_KEY_O = 18, + HID_KEY_P = 19, + HID_KEY_Q = 20, + HID_KEY_R = 21, + HID_KEY_S = 22, + HID_KEY_T = 23, + HID_KEY_U = 24, + HID_KEY_V = 25, + HID_KEY_W = 26, + HID_KEY_X = 27, + HID_KEY_Y = 28, + HID_KEY_Z = 29, + HID_KEY_1 = 30, + HID_KEY_2 = 31, + HID_KEY_3 = 32, + HID_KEY_4 = 33, + HID_KEY_5 = 34, + HID_KEY_6 = 35, + HID_KEY_7 = 36, + HID_KEY_8 = 37, + HID_KEY_9 = 38, + HID_KEY_0 = 39, + HID_KEY_ENTER = 40, + HID_KEY_ESC = 41, + HID_KEY_BACKSPACE = 42, + HID_KEY_TAB = 43, + HID_KEY_SPACE = 44, + HID_KEY_MINUS = 45, + HID_KEY_EQUAL = 46, + HID_KEY_LEFTBRACE = 47, + HID_KEY_RIGHTBRACE = 48, + HID_KEY_BACKSLASH = 49, + HID_KEY_HASH = 50, /* Non-US # and ~ */ + HID_KEY_SEMICOLON = 51, + HID_KEY_APOSTROPHE = 52, + HID_KEY_GRAVE = 53, + HID_KEY_COMMA = 54, + HID_KEY_DOT = 55, + HID_KEY_SLASH = 56, + HID_KEY_CAPSLOCK = 57, + HID_KEY_F1 = 58, + HID_KEY_F2 = 59, + HID_KEY_F3 = 60, + HID_KEY_F4 = 61, + HID_KEY_F5 = 62, + HID_KEY_F6 = 63, + HID_KEY_F7 = 64, + HID_KEY_F8 = 65, + HID_KEY_F9 = 66, + HID_KEY_F10 = 67, + HID_KEY_F11 = 68, + HID_KEY_F12 = 69, + HID_KEY_SYSRQ = 70, /* PRINTSCREEN */ + HID_KEY_SCROLLLOCK = 71, + HID_KEY_PAUSE = 72, + HID_KEY_INSERT = 73, + HID_KEY_HOME = 74, + HID_KEY_PAGEUP = 75, + HID_KEY_DELETE = 76, + HID_KEY_END = 77, + HID_KEY_PAGEDOWN = 78, + HID_KEY_RIGHT = 79, + HID_KEY_LEFT = 80, + HID_KEY_DOWN = 81, + HID_KEY_UP = 82, + HID_KEY_NUMLOCK = 83, + HID_KEY_KPSLASH = 84, /* NUMPAD DIVIDE */ + HID_KEY_KPASTERISK = 85, /* NUMPAD MULTIPLY */ + HID_KEY_KPMINUS = 86, + HID_KEY_KPPLUS = 87, + HID_KEY_KPENTER = 88, + HID_KEY_KP_1 = 89, + HID_KEY_KP_2 = 90, + HID_KEY_KP_3 = 91, + HID_KEY_KP_4 = 92, + HID_KEY_KP_5 = 93, + HID_KEY_KP_6 = 94, + HID_KEY_KP_7 = 95, + HID_KEY_KP_8 = 96, + HID_KEY_KP_9 = 97, + HID_KEY_KP_0 = 98, +}; + +/** + * @brief HID keyboard modifiers. + */ +enum hid_kbd_modifier { + HID_KBD_MODIFIER_NONE = 0x00, + HID_KBD_MODIFIER_LEFT_CTRL = 0x01, + HID_KBD_MODIFIER_LEFT_SHIFT = 0x02, + HID_KBD_MODIFIER_LEFT_ALT = 0x04, + HID_KBD_MODIFIER_LEFT_UI = 0x08, + HID_KBD_MODIFIER_RIGHT_CTRL = 0x10, + HID_KBD_MODIFIER_RIGHT_SHIFT = 0x20, + HID_KBD_MODIFIER_RIGHT_ALT = 0x40, + HID_KBD_MODIFIER_RIGHT_UI = 0x80, +}; + +/** + * @brief HID keyboard LEDs. + */ +enum hid_kbd_led { + HID_KBD_LED_NUM_LOCK = 0x01, + HID_KBD_LED_CAPS_LOCK = 0x02, + HID_KBD_LED_SCROLL_LOCK = 0x04, + HID_KBD_LED_COMPOSE = 0x08, + HID_KBD_LED_KANA = 0x10, +}; + +#ifdef __cplusplus +} +#endif + +#endif /* _USB_HID_H_ */ diff --git a/components/usb_stack/class/msc/usbd_msc.c b/components/usb_stack/class/msc/usbd_msc.c new file mode 100644 index 00000000..22d65e64 --- /dev/null +++ b/components/usb_stack/class/msc/usbd_msc.c @@ -0,0 +1,874 @@ +/** + * @file usbd_msc.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "usbd_core.h" +#include "usbd_scsi.h" +#include "usbd_msc.h" + +/* max USB packet size */ +#define MASS_STORAGE_BULK_EP_MPS 64 +#define MASS_STORAGE_BLOCK_SIZE 512 + +#define MSD_OUT_EP_IDX 0 +#define MSD_IN_EP_IDX 1 + +/* Describe EndPoints configuration */ +static usbd_endpoint_t mass_ep_data[2]; + +/* MSC Bulk-only Stage */ +enum Stage +{ + /* MSC Bulk-only Stage */ + MSC_BS_CBW = 0, /* Command Block Wrapper */ + MSC_BS_DATA_OUT = 1, /* Data Out Phase */ + MSC_BS_DATA_IN = 2, /* Data In Phase */ + MSC_BS_DATA_IN_LAST = 3, /* Data In Last Phase */ + MSC_BS_DATA_IN_LAST_STALL = 4, /* Data In Last Phase with Stall */ + MSC_BS_CSW = 5, /* Command Status Wrapper */ + MSC_BS_ERROR = 6, /* Error */ + MSC_BS_RESET = 7, /* Bulk-Only Mass Storage Reset */ +}; + + +/* Device data structure */ +struct usbd_msc_cfg_private +{ + /* state of the bulk-only state machine */ + enum Stage stage; + struct CBW cbw; + struct CSW csw; + + uint8_t max_lun_count; + uint16_t scsi_blk_size; + uint32_t scsi_blk_nbr; + + uint32_t scsi_blk_addr; + uint32_t scsi_blk_len; + uint8_t block_buffer[MASS_STORAGE_BLOCK_SIZE]; + +} usbd_msc_cfg; + + +/*memory OK (after a usbd_msc_memory_verify)*/ +static bool memOK; + +static void usbd_msc_reset(void) +{ + usbd_msc_cfg.stage = MSC_BS_CBW; + (void)memset((void *)&usbd_msc_cfg.cbw, 0, sizeof(struct CBW)); + (void)memset((void *)&usbd_msc_cfg.csw, 0, sizeof(struct CSW)); + usbd_msc_cfg.scsi_blk_addr = 0U; + usbd_msc_cfg.scsi_blk_len = 0U; + usbd_msc_get_cap(0,&usbd_msc_cfg.scsi_blk_nbr,&usbd_msc_cfg.scsi_blk_size); + usbd_msc_cfg.max_lun_count = 0; +} + +/** + * @brief Handler called for Class requests not handled by the USB stack. + * + * @param pSetup Information about the request to execute. + * @param len Size of the buffer. + * @param data Buffer containing the request result. + * + * @return 0 on success, negative errno code on fail. + */ +static int msc_storage_class_request_handler(struct usb_setup_packet *pSetup, uint8_t **data, uint32_t *len) +{ + switch (pSetup->bRequest) + { + case MSC_REQUEST_RESET: + USBD_LOG_DBG("MSC_REQUEST_RESET"); + + if (pSetup->wLength) + { + USBD_LOG_WRN("Invalid length"); + return -1; + } + + usbd_msc_reset(); + break; + + case MSC_REQUEST_GET_MAX_LUN: + USBD_LOG_DBG("MSC_REQUEST_GET_MAX_LUN"); + + if (pSetup->wLength != 1) + { + USBD_LOG_WRN("Invalid length"); + return -1; + } + + *data = (uint8_t *)(&usbd_msc_cfg.max_lun_count); + *len = 1; + break; + + default: + USBD_LOG_WRN("Unknown request 0x%02x, value 0x%02x", + pSetup->bRequest, pSetup->wValue); + return -1; + } + + return 0; +} + + +static void usbd_msc_send_csw(void) +{ + usbd_msc_cfg.csw.Signature = MSC_CSW_Signature; + if (usbd_ep_write(mass_ep_data[MSD_IN_EP_IDX].ep_addr, (uint8_t *)&usbd_msc_cfg.csw, + sizeof(struct CSW), NULL) != 0) + { + USBD_LOG_ERR("usb write failure"); + } + usbd_msc_cfg.stage = MSC_BS_CSW; +} + +static bool usbd_msc_datain_check(void) +{ + if (!usbd_msc_cfg.cbw.DataLength) + { + USBD_LOG_WRN("Zero length in CBW"); + //SCSI_SenseCode(pdev, hmsc->cbw.bLUN, ILLEGAL_REQUEST, INVALID_CDB); + usbd_msc_cfg.csw.Status = CSW_STATUS_PHASE_ERROR; + usbd_msc_send_csw(); + return false; + } + if ((usbd_msc_cfg.cbw.Flags & 0x80) == 0) + { + usbd_ep_set_stall(mass_ep_data[MSD_OUT_EP_IDX].ep_addr); + usbd_msc_cfg.csw.Status = CSW_STATUS_PHASE_ERROR; + usbd_msc_send_csw(); + return false; + } + return true; +} + +static bool usbd_msc_send_to_host(uint8_t *buffer,uint16_t size) +{ + if (size >= usbd_msc_cfg.cbw.DataLength) + { + size = usbd_msc_cfg.cbw.DataLength; + usbd_msc_cfg.stage = MSC_BS_DATA_IN_LAST; + } + else + { + usbd_msc_cfg.stage = MSC_BS_DATA_IN_LAST_STALL; + } + + if (usbd_ep_write(mass_ep_data[MSD_IN_EP_IDX].ep_addr, buffer, size, NULL)) + { + USBD_LOG_ERR("USB write failed"); + return false; + } + + usbd_msc_cfg.csw.DataResidue -= size; + usbd_msc_cfg.csw.Status = CSW_STATUS_CMD_PASSED; + + return true; +} + + +static void usbd_msc_memory_verify(uint8_t *buf, uint16_t size) +{ + uint32_t n; + + if ((usbd_msc_cfg.scsi_blk_addr + size) > (usbd_msc_cfg.scsi_blk_nbr * usbd_msc_cfg.scsi_blk_size)) + { + size = usbd_msc_cfg.scsi_blk_nbr * usbd_msc_cfg.scsi_blk_size - usbd_msc_cfg.scsi_blk_addr; + usbd_msc_cfg.stage = MSC_BS_ERROR; + usbd_ep_set_stall(mass_ep_data[MSD_OUT_EP_IDX].ep_addr); + USBD_LOG_WRN("addr overflow,verify error\r\n"); + } + + /* beginning of a new block -> load a whole block in RAM */ + if (!(usbd_msc_cfg.scsi_blk_addr % usbd_msc_cfg.scsi_blk_size)) + { + USBD_LOG_DBG("Disk READ sector %d", usbd_msc_cfg.scsi_blk_addr / usbd_msc_cfg.scsi_blk_size); + // if (disk_access_read(disk_pdrv, page, addr / BLOCK_SIZE, 1)) + // { + // USBD_LOG_ERR("---- Disk Read Error %d", addr / BLOCK_SIZE); + // } + } + + /* info are in RAM -> no need to re-read memory */ + for (n = 0U; n < size; n++) + { + if (usbd_msc_cfg.block_buffer[usbd_msc_cfg.scsi_blk_addr % usbd_msc_cfg.scsi_blk_size + n] != buf[n]) + { + USBD_LOG_DBG("Mismatch sector %d offset %d", + usbd_msc_cfg.scsi_blk_addr / usbd_msc_cfg.scsi_blk_size, n); + memOK = false; + break; + } + } + + usbd_msc_cfg.scsi_blk_addr += size; + usbd_msc_cfg.scsi_blk_len -= size; + usbd_msc_cfg.csw.DataResidue -= size; + + if (!usbd_msc_cfg.scsi_blk_len || (usbd_msc_cfg.stage == MSC_BS_CSW)) + { + usbd_msc_cfg.csw.Status = (memOK) ? CSW_STATUS_CMD_PASSED : CSW_STATUS_CMD_FAILED; + usbd_msc_send_csw(); + } +} + +static void usbd_msc_memory_write(uint8_t *buf, uint16_t size) +{ + + USBD_LOG_DBG("w:%d\r\n",usbd_msc_cfg.scsi_blk_addr); + + if ((usbd_msc_cfg.scsi_blk_addr + size) > (usbd_msc_cfg.scsi_blk_nbr * usbd_msc_cfg.scsi_blk_size)) + { + size = usbd_msc_cfg.scsi_blk_nbr * usbd_msc_cfg.scsi_blk_size - usbd_msc_cfg.scsi_blk_addr; + usbd_msc_cfg.stage = MSC_BS_ERROR; + usbd_ep_set_stall(mass_ep_data[MSD_OUT_EP_IDX].ep_addr); + USBD_LOG_WRN("addr overflow,write error\r\n"); + } + /* we fill an array in RAM of 1 block before writing it in memory */ + for (int i = 0; i < size; i++) + { + usbd_msc_cfg.block_buffer[usbd_msc_cfg.scsi_blk_addr % usbd_msc_cfg.scsi_blk_size + i] = buf[i]; + } + + /* if the array is filled, write it in memory */ + if ((usbd_msc_cfg.scsi_blk_addr % usbd_msc_cfg.scsi_blk_size) + size >= usbd_msc_cfg.scsi_blk_size) + { + usbd_msc_sector_write((usbd_msc_cfg.scsi_blk_addr/usbd_msc_cfg.scsi_blk_size),usbd_msc_cfg.block_buffer,usbd_msc_cfg.scsi_blk_size); + } + + usbd_msc_cfg.scsi_blk_addr += size; + usbd_msc_cfg.scsi_blk_len -= size; + usbd_msc_cfg.csw.DataResidue -= size; + + if ((!usbd_msc_cfg.scsi_blk_len) || (usbd_msc_cfg.stage == MSC_BS_CSW)) + { + usbd_msc_cfg.csw.Status = CSW_STATUS_CMD_PASSED; + usbd_msc_send_csw(); + } +} + +static void usbd_msc_memory_read(void) +{ + uint32_t transfer_len; + + transfer_len = MIN(usbd_msc_cfg.scsi_blk_len, MASS_STORAGE_BULK_EP_MPS); + + /* we read an entire block */ + if (!(usbd_msc_cfg.scsi_blk_addr % usbd_msc_cfg.scsi_blk_size)) + { + usbd_msc_sector_read((usbd_msc_cfg.scsi_blk_addr/usbd_msc_cfg.scsi_blk_size),usbd_msc_cfg.block_buffer,usbd_msc_cfg.scsi_blk_size); + } + + USBD_LOG_DBG("addr:%d\r\n",usbd_msc_cfg.scsi_blk_addr); + + usbd_ep_write(mass_ep_data[MSD_IN_EP_IDX].ep_addr, + &usbd_msc_cfg.block_buffer[usbd_msc_cfg.scsi_blk_addr % usbd_msc_cfg.scsi_blk_size], transfer_len, NULL); + + usbd_msc_cfg.scsi_blk_addr += transfer_len; + usbd_msc_cfg.scsi_blk_len -= transfer_len; + usbd_msc_cfg.csw.DataResidue -= transfer_len; + + if (!usbd_msc_cfg.scsi_blk_len) + { + usbd_msc_cfg.stage = MSC_BS_DATA_IN_LAST; + usbd_msc_cfg.csw.Status = CSW_STATUS_CMD_PASSED; + + } +} + +/*********************************SCSI CMD*******************************************************************/ +static bool scsi_test_unit_ready(void) +{ + if (usbd_msc_cfg.cbw.DataLength != 0U) + { + if ((usbd_msc_cfg.cbw.Flags & 0x80) != 0U) + { + USBD_LOG_WRN("Stall IN endpoint\r\n"); + usbd_ep_set_stall(mass_ep_data[MSD_IN_EP_IDX].ep_addr); + } + else + { + USBD_LOG_WRN("Stall OUT endpoint\r\n"); + usbd_ep_set_stall(mass_ep_data[MSD_OUT_EP_IDX].ep_addr); + } + return false; + } + usbd_msc_cfg.csw.Status = CSW_STATUS_CMD_PASSED; + usbd_msc_send_csw(); + return true; +} + +static bool scsi_request_sense(void) +{ + + if (!usbd_msc_datain_check()) + { + return false; + } + scsi_sense_fixed_resp_t sense_rsp = + { + .response_code = 0x70, + .valid = 1 + }; + + sense_rsp.add_sense_len = sizeof(scsi_sense_fixed_resp_t) - 8; + sense_rsp.sense_key = 0x00; + sense_rsp.add_sense_code = 0x00; + sense_rsp.add_sense_qualifier = 0x00; + + /* Win host requests maximum number of bytes but as all we have is 4 bytes we have + to tell host back that it is all we have, that's why we correct residue */ + if (usbd_msc_cfg.csw.DataResidue > sizeof(sense_rsp)) + { + usbd_msc_cfg.cbw.DataLength = sizeof(sense_rsp); + usbd_msc_cfg.csw.DataResidue = sizeof(sense_rsp); + } + +#if 0 + request_sense[ 2] = 0x06; /* UNIT ATTENTION */ + request_sense[12] = 0x28; /* Additional Sense Code: Not ready to ready transition */ + request_sense[13] = 0x00; /* Additional Sense Code Qualifier */ +#endif +#if 0 + request_sense[ 2] = 0x02; /* NOT READY */ + request_sense[12] = 0x3A; /* Additional Sense Code: Medium not present */ + request_sense[13] = 0x00; /* Additional Sense Code Qualifier */ +#endif +#if 0 + request_sense[ 2] = 0x05; /* ILLEGAL REQUEST */ + request_sense[12] = 0x20; /* Additional Sense Code: Invalid command */ + request_sense[13] = 0x00; /* Additional Sense Code Qualifier */ +#endif +#if 0 + request_sense[ 2] = 0x00; /* NO SENSE */ + request_sense[12] = 0x00; /* Additional Sense Code: No additional code */ + request_sense[13] = 0x00; /* Additional Sense Code Qualifier */ +#endif + + return usbd_msc_send_to_host((uint8_t*)&sense_rsp,sizeof(sense_rsp)); +} + +static bool scsi_inquiry_request(void) +{ + if (!usbd_msc_datain_check()) + { + return false; + } + + scsi_inquiry_resp_t inquiry_rsp = + { + .is_removable = 1, /* RMB = 1: Removable Medium */ + .version = 2, + .response_data_format = 2, + .additional_length = 31 + }; + // vendor_id, product_id, product_rev is space padded string + memcpy(inquiry_rsp.vendor_id , "BL702USB", sizeof(inquiry_rsp.vendor_id)); + memcpy(inquiry_rsp.product_id , "FAT16 RAM DEMO ", sizeof(inquiry_rsp.product_id)); + memcpy(inquiry_rsp.product_rev, "1.0 ", sizeof(inquiry_rsp.product_rev)); + + /* Win host requests maximum number of bytes but as all we have is 4 bytes we have + to tell host back that it is all we have, that's why we correct residue */ + if (usbd_msc_cfg.csw.DataResidue > sizeof(inquiry_rsp)) + { + usbd_msc_cfg.cbw.DataLength = sizeof(inquiry_rsp); + usbd_msc_cfg.csw.DataResidue = sizeof(inquiry_rsp); + } + + return usbd_msc_send_to_host((uint8_t*)&inquiry_rsp,sizeof(inquiry_rsp)); +} + +static bool scsi_mode_sense_6(void) +{ + if (!usbd_msc_datain_check()) + { + return false; + } + scsi_mode_sense6_resp_t mode_resp = + { + .data_len = 3, + .medium_type = 0, + .write_protected = false, + .reserved = 0, + .block_descriptor_len = 0 // no block descriptor are included + }; + + /* Win host requests maximum number of bytes but as all we have is 4 bytes we have + to tell host back that it is all we have, that's why we correct residue */ + if (usbd_msc_cfg.csw.DataResidue > sizeof(mode_resp)) + { + usbd_msc_cfg.cbw.DataLength = sizeof(mode_resp); + usbd_msc_cfg.csw.DataResidue = sizeof(mode_resp); + } + + return usbd_msc_send_to_host((uint8_t*)&mode_resp,sizeof(mode_resp)); +} + +static bool scsi_start_stop_unit(void) +{ + // if (!cbw.CB[3]) { /* If power condition modifier is 0 */ + // USBD_MSC_MediaReady = cbw.CB[4] & 0x01; /* Media ready = START bit value */ + // usbd_msc_start_stop(USBD_MSC_MediaReady); + // cbw.bStatus = CSW_CMD_PASSED; /* Start Stop Unit -> pass */ + // USBD_MSC_SetCSW(); + // return; + // } + + // cbw.bStatus = CSW_CMD_FAILED; /* Start Stop Unit -> fail */ + // usbd_msc_send_csw(); + usbd_msc_cfg.csw.Status = CSW_STATUS_CMD_PASSED; + usbd_msc_send_csw(); + return true; +} +/* + * USB Device MSC SCSI Media Removal Callback + * Parameters: None + * Return Value: None + */ + +static bool scsi_media_removal(void) +{ + // if (USBD_MSC_CBW.CB[4] & 1) { /* If prevent */ + // USBD_MSC_CSW.bStatus = CSW_CMD_FAILED; /* Prevent media removal -> fail */ + // } else { /* If allow */ + // USBD_MSC_CSW.bStatus = CSW_CMD_PASSED; /* Allow media removal -> pass */ + // } + + // USBD_MSC_SetCSW(); + usbd_msc_cfg.csw.Status = CSW_STATUS_CMD_PASSED; + usbd_msc_send_csw(); + return true; +} + +static bool scsi_read_format_capacity(void) +{ + if (!usbd_msc_datain_check()) + { + return false; + } + scsi_read_format_capacity_resp_t read_fmt_capa = + { + .list_length = 8,/* Capacity List Length */ + .block_num = 0, + .descriptor_type = 2, /* Descriptor Code: Formatted Media */ + .block_size_u16 = 0 + }; + /* Block Count */ + read_fmt_capa.block_num = BSWAP32(usbd_msc_cfg.scsi_blk_nbr); + /* Block Length */ + read_fmt_capa.block_size_u16 = BSWAP16(usbd_msc_cfg.scsi_blk_size); + + /* Win host requests maximum number of bytes but as all we have is 4 bytes we have + to tell host back that it is all we have, that's why we correct residue */ + if (usbd_msc_cfg.csw.DataResidue > sizeof(read_fmt_capa)) + { + usbd_msc_cfg.cbw.DataLength = sizeof(read_fmt_capa); + usbd_msc_cfg.csw.DataResidue = sizeof(read_fmt_capa); + } + + return usbd_msc_send_to_host((uint8_t*)&read_fmt_capa,sizeof(read_fmt_capa)); +} + +static bool scsi_read_capacity(void) +{ + if (!usbd_msc_datain_check()) + { + return false; + } + scsi_read_capacity10_resp_t read_capa10; + /* Last Logical Block */ + read_capa10.last_lba = BSWAP32((usbd_msc_cfg.scsi_blk_nbr-1)); + /* Block Length */ + read_capa10.block_size = BSWAP32(usbd_msc_cfg.scsi_blk_size); + + /* Win host requests maximum number of bytes but as all we have is 4 bytes we have + to tell host back that it is all we have, that's why we correct residue */ + if (usbd_msc_cfg.csw.DataResidue > sizeof(read_capa10)) + { + usbd_msc_cfg.cbw.DataLength = sizeof(read_capa10); + usbd_msc_cfg.csw.DataResidue = sizeof(read_capa10); + } + + return usbd_msc_send_to_host((uint8_t*)&read_capa10,sizeof(read_capa10)); +} + +static bool usbd_msc_read_write_process(void) +{ + /* Logical Block Address of First Block */ + uint32_t lba; + uint32_t len = 0; + + if (!usbd_msc_cfg.cbw.DataLength) + { + USBD_LOG_WRN("Zero length in CBW\r\n"); + //SCSI_SenseCode(pdev, hmsc->cbw.bLUN, ILLEGAL_REQUEST, INVALID_CDB); + usbd_msc_cfg.csw.Status = CSW_STATUS_PHASE_ERROR; + usbd_msc_send_csw(); + return false; + } + + lba = GET_BE32(&usbd_msc_cfg.cbw.CB[2]); + + USBD_LOG_DBG("LBA (block) : 0x%x\r\n", lba); + usbd_msc_cfg.scsi_blk_addr = lba * usbd_msc_cfg.scsi_blk_size; + /* Number of Blocks to transfer */ + switch (usbd_msc_cfg.cbw.CB[0]) + { + case SCSI_READ10: + case SCSI_WRITE10: + case SCSI_VERIFY10: + len = GET_BE16(&usbd_msc_cfg.cbw.CB[7]); + break; + case SCSI_READ12: + case SCSI_WRITE12: + len = GET_BE32(&usbd_msc_cfg.cbw.CB[6]); + break; + default: + break; + } + USBD_LOG_DBG("len (block) : 0x%x\r\n", len); + usbd_msc_cfg.scsi_blk_len = len * usbd_msc_cfg.scsi_blk_size; + + if ((lba + len) > usbd_msc_cfg.scsi_blk_nbr) + { + USBD_LOG_ERR("LBA out of range\r\n"); + usbd_msc_cfg.csw.Status = CSW_STATUS_CMD_FAILED; + usbd_msc_send_csw(); + return false; + } + + if (usbd_msc_cfg.cbw.DataLength != usbd_msc_cfg.scsi_blk_len) + { + if ((usbd_msc_cfg.cbw.Flags & 0x80) != 0U) + { + USBD_LOG_WRN("read write process error\r\n"); + usbd_ep_set_stall(mass_ep_data[MSD_IN_EP_IDX].ep_addr); + } + else + { + USBD_LOG_WRN("read write process error\r\n"); + usbd_ep_set_stall(mass_ep_data[MSD_OUT_EP_IDX].ep_addr); + } + + usbd_msc_cfg.csw.Status = CSW_STATUS_CMD_FAILED; + usbd_msc_send_csw(); + return false; + } + return true; +} + +static bool scsi_mode_sense_10(void) +{ + if (!usbd_msc_datain_check()) + { + return false; + } + scsi_mode_10_resp_t mode10_resp = + { + .mode_data_length_low = 0x06, + .write_protect = 1, + }; + /* Win host requests maximum number of bytes but as all we have is 4 bytes we have + to tell host back that it is all we have, that's why we correct residue */ + if (usbd_msc_cfg.csw.DataResidue > sizeof(mode10_resp)) + { + usbd_msc_cfg.cbw.DataLength = sizeof(mode10_resp); + usbd_msc_cfg.csw.DataResidue = sizeof(mode10_resp); + } + return usbd_msc_send_to_host((uint8_t*)&mode10_resp,sizeof(mode10_resp)); +} + +static void usbd_msc_cbw_decode(uint8_t *buf, uint16_t size) +{ + if (size != sizeof(usbd_msc_cfg.cbw)) + { + USBD_LOG_ERR("size != sizeof(cbw)"); + return; + } + + memcpy((uint8_t *)&usbd_msc_cfg.cbw, buf, size); + if (usbd_msc_cfg.cbw.Signature != MSC_CBW_Signature) + { + USBD_LOG_ERR("CBW Signature Mismatch"); + return; + } + + usbd_msc_cfg.csw.Tag = usbd_msc_cfg.cbw.Tag; + usbd_msc_cfg.csw.DataResidue = usbd_msc_cfg.cbw.DataLength; + + if ((usbd_msc_cfg.cbw.CBLength < 1) || (usbd_msc_cfg.cbw.CBLength > 16) || (usbd_msc_cfg.cbw.LUN != 0U)) + { + USBD_LOG_WRN("cbw.CBLength %d", usbd_msc_cfg.cbw.CBLength); + /* Stall data stage */ + usbd_ep_set_stall(mass_ep_data[MSD_IN_EP_IDX].ep_addr); + usbd_msc_cfg.csw.Status = CSW_STATUS_CMD_FAILED; + usbd_msc_send_csw(); + } + else + { + switch (usbd_msc_cfg.cbw.CB[0]) + { + case SCSI_TEST_UNIT_READY: + USBD_LOG_DBG(">> TUR"); + scsi_test_unit_ready(); + break; + case SCSI_REQUEST_SENSE: + USBD_LOG_DBG(">> REQ_SENSE"); + scsi_request_sense(); + break; + case SCSI_INQUIRY: + USBD_LOG_DBG(">> INQ"); + scsi_inquiry_request(); + break; + case SCSI_START_STOP_UNIT: + scsi_start_stop_unit(); + break; + case SCSI_MEDIA_REMOVAL: + scsi_media_removal(); + break; + case SCSI_MODE_SENSE6: + USBD_LOG_DBG(">> MODE_SENSE6"); + scsi_mode_sense_6(); + break; + case SCSI_MODE_SENSE10: + USBD_LOG_DBG(">> MODE_SENSE10"); + scsi_mode_sense_10(); + break; + case SCSI_READ_FORMAT_CAPACITIES: + USBD_LOG_DBG(">> READ_FORMAT_CAPACITY"); + scsi_read_format_capacity(); + break; + case SCSI_READ_CAPACITY: + USBD_LOG_DBG(">> READ_CAPACITY"); + scsi_read_capacity(); + break; + case SCSI_READ10: + case SCSI_READ12: + USBD_LOG_DBG(">> READ"); + if (usbd_msc_read_write_process()) + { + if ((usbd_msc_cfg.cbw.Flags & 0x80)) + { + usbd_msc_cfg.stage = MSC_BS_DATA_IN; + usbd_msc_memory_read(); + } + else + { + usbd_ep_set_stall( + mass_ep_data[MSD_OUT_EP_IDX].ep_addr); + USBD_LOG_WRN("Stall OUT endpoint"); + usbd_msc_cfg.csw.Status = CSW_STATUS_PHASE_ERROR; + usbd_msc_send_csw(); + } + } + break; + case SCSI_WRITE10: + case SCSI_WRITE12: + USBD_LOG_DBG(">> WRITE"); + if (usbd_msc_read_write_process()) + { + if (!(usbd_msc_cfg.cbw.Flags & 0x80)) + { + usbd_msc_cfg.stage = MSC_BS_DATA_OUT; + } + else + { + usbd_ep_set_stall( + mass_ep_data[MSD_IN_EP_IDX].ep_addr); + USBD_LOG_WRN("Stall IN endpoint"); + usbd_msc_cfg.csw.Status = CSW_STATUS_PHASE_ERROR; + usbd_msc_send_csw(); + } + } + break; + case SCSI_VERIFY10: + USBD_LOG_DBG(">> VERIFY10"); + if (!(usbd_msc_cfg.cbw.CB[1] & 0x02)) + { + usbd_msc_cfg.csw.Status = CSW_STATUS_CMD_PASSED; + usbd_msc_send_csw(); + break; + } + if (usbd_msc_read_write_process()) + { + if (!(usbd_msc_cfg.cbw.Flags & 0x80)) + { + usbd_msc_cfg.stage = MSC_BS_DATA_OUT; + memOK = true; + } + else + { + usbd_ep_set_stall( + mass_ep_data[MSD_IN_EP_IDX].ep_addr); + USBD_LOG_WRN("Stall IN endpoint"); + usbd_msc_cfg.csw.Status = CSW_STATUS_PHASE_ERROR; + usbd_msc_send_csw(); + } + } + break; + default: + USBD_LOG_WRN(">> default CB[0] %x", usbd_msc_cfg.cbw.CB[0]); + /* Stall data stage */ + usbd_ep_set_stall(mass_ep_data[MSD_IN_EP_IDX].ep_addr); + usbd_msc_cfg.stage = MSC_BS_ERROR; + break; + } + } +} + +static void mass_storage_bulk_out(uint8_t ep) +{ + uint32_t bytes_read = 0U; + uint8_t bo_buf[MASS_STORAGE_BULK_EP_MPS]; + + usbd_ep_read(ep, bo_buf, MASS_STORAGE_BULK_EP_MPS, + &bytes_read); + + switch (usbd_msc_cfg.stage) + { + /*the device has to decode the CBW received*/ + case MSC_BS_CBW: + USBD_LOG_DBG("> BO - MSC_BS_CBW\r\n"); + usbd_msc_cbw_decode(bo_buf, bytes_read); + break; + + /*the device has to receive data from the host*/ + case MSC_BS_DATA_OUT: + switch (usbd_msc_cfg.cbw.CB[0]) + { + case SCSI_WRITE10: + case SCSI_WRITE12: + /* USBD_LOG_DBG("> BO - PROC_CBW WR");*/ + usbd_msc_memory_write(bo_buf, bytes_read); + break; + case SCSI_VERIFY10: + USBD_LOG_DBG("> BO - PROC_CBW VER\r\n"); + usbd_msc_memory_verify(bo_buf, bytes_read); + break; + default: + USBD_LOG_ERR("> BO - PROC_CBW default <>\r\n"); + break; + } + break; + case MSC_BS_CSW: + break; + /*an error has occurred: stall endpoint and send CSW*/ + default: + USBD_LOG_WRN("Stall OUT endpoint, stage: %d\r\n", usbd_msc_cfg.stage); + // usbd_ep_set_stall(ep); + // usbd_msc_cfg.csw.Status = CSW_STATUS_PHASE_ERROR; + // usbd_msc_send_csw(); + break; + } + /*set ep ack to recv next data*/ + usbd_ep_read(ep,NULL,0,NULL); +} + +/** + * @brief EP Bulk IN handler, used to send data to the Host + * + * @param ep Endpoint address. + * @param ep_status Endpoint status code. + * + * @return N/A. + */ +static void mass_storage_bulk_in(uint8_t ep) +{ + USBD_LOG_DBG("I:%d\r\n", usbd_msc_cfg.stage); + switch (usbd_msc_cfg.stage) + { + /*the device has to send data to the host*/ + case MSC_BS_DATA_IN: + switch (usbd_msc_cfg.cbw.CB[0]) + { + case SCSI_READ10: + case SCSI_READ12: + /* USBD_LOG_DBG("< BI - PROC_CBW READ"); */ + usbd_msc_memory_read(); + break; + default: + USBD_LOG_ERR("< BI-PROC_CBW default <>\r\n"); + break; + } + break; + + /*the device has to send a CSW*/ + case MSC_BS_DATA_IN_LAST: + USBD_LOG_DBG("< BI - MSC_BS_DATA_IN_LAST\r\n"); + usbd_msc_send_csw(); + break; + + case MSC_BS_DATA_IN_LAST_STALL: + USBD_LOG_WRN("Stall IN endpoint, stage: %d\r\n", usbd_msc_cfg.stage); + //usbd_ep_set_stall(mass_ep_data[MSD_IN_EP_IDX].ep_addr); + usbd_msc_send_csw(); + break; + + /*the host has received the CSW -> we wait a CBW*/ + case MSC_BS_CSW: + USBD_LOG_DBG("< BI - MSC_BS_CSW\r\n"); + usbd_msc_cfg.stage = MSC_BS_CBW; + break; + + default: + break; + } +} + +void msc_storage_notify_handler(uint8_t event, void* arg) +{ + switch (event) + { + case USB_EVENT_RESET: + usbd_msc_reset(); + break; + + default: + break; + } +} + + +static usbd_class_t msc_class; + +static usbd_interface_t msc_intf = +{ + .class_handler = msc_storage_class_request_handler, + .vendor_handler = NULL, + .notify_handler = msc_storage_notify_handler, +}; + +void usbd_msc_class_init(uint8_t out_ep, uint8_t in_ep) +{ + msc_class.name = "usbd_msc"; + + usbd_class_register(&msc_class); + usbd_class_add_interface(&msc_class,&msc_intf); + + mass_ep_data[0].ep_addr = out_ep; + mass_ep_data[0].ep_cb = mass_storage_bulk_out; + mass_ep_data[1].ep_addr = in_ep; + mass_ep_data[1].ep_cb = mass_storage_bulk_in; + + usbd_interface_add_endpoint(&msc_intf,&mass_ep_data[0]); + usbd_interface_add_endpoint(&msc_intf,&mass_ep_data[1]); +} \ No newline at end of file diff --git a/components/usb_stack/class/msc/usbd_msc.h b/components/usb_stack/class/msc/usbd_msc.h new file mode 100644 index 00000000..50b55f9c --- /dev/null +++ b/components/usb_stack/class/msc/usbd_msc.h @@ -0,0 +1,96 @@ +/** + * @file + * @brief USB Mass Storage Class public header + * + * Header follows the Mass Storage Class Specification + * (Mass_Storage_Specification_Overview_v1.4_2-19-2010.pdf) and + * Mass Storage Class Bulk-Only Transport Specification + * (usbmassbulk_10.pdf). + * Header is limited to Bulk-Only Transfer protocol. + */ + +#ifndef _USBD_MSC_H__ +#define _USBD_MSC_H__ + +/* MSC Subclass Codes */ +#define MSC_SUBCLASS_RBC 0x01 +#define MSC_SUBCLASS_SFF8020I_MMC2 0x02 +#define MSC_SUBCLASS_QIC157 0x03 +#define MSC_SUBCLASS_UFI 0x04 +#define MSC_SUBCLASS_SFF8070I 0x05 +#define MSC_SUBCLASS_SCSI 0x06 + +/* MSC Protocol Codes */ +#define MSC_PROTOCOL_CBI_INT 0x00 +#define MSC_PROTOCOL_CBI_NOINT 0x01 +#define MSC_PROTOCOL_BULK_ONLY 0x50 + + +/* MSC Request Codes */ +#define MSC_REQUEST_RESET 0xFF +#define MSC_REQUEST_GET_MAX_LUN 0xFE + +/** MSC Command Block Wrapper (CBW) Signature */ +#define MSC_CBW_Signature 0x43425355 +/** Bulk-only Command Status Wrapper (CSW) Signature */ +#define MSC_CSW_Signature 0x53425355 + +/** MSC Command Block Status Values */ +#define CSW_STATUS_CMD_PASSED 0x00 +#define CSW_STATUS_CMD_FAILED 0x01 +#define CSW_STATUS_PHASE_ERROR 0x02 + +/** MSC Bulk-Only Command Block Wrapper (CBW) */ +struct CBW { + uint32_t Signature; + uint32_t Tag; + uint32_t DataLength; + uint8_t Flags; + uint8_t LUN; + uint8_t CBLength; + uint8_t CB[16]; +} __packed; + +/** MSC Bulk-Only Command Status Wrapper (CSW) */ +struct CSW { + uint32_t Signature; + uint32_t Tag; + uint32_t DataResidue; + uint8_t Status; +} __packed; + +/*Length of template descriptor: 23 bytes*/ +#define MSC_DESCRIPTOR_LEN (9 + 7 + 7) + +#define MSC_DESCRIPTOR_INIT(bFirstInterface,out_ep,in_ep,str_idx) \ + /* Interface */\ + 0x09, /* bLength */\ + USB_DESCRIPTOR_TYPE_INTERFACE, /* bDescriptorType */\ + bFirstInterface, /* bInterfaceNumber */\ + 0x00, /* bAlternateSetting */\ + 0x02, /* bNumEndpoints */\ + USB_DEVICE_CLASS_MASS_STORAGE, /* bInterfaceClass */\ + MSC_SUBCLASS_SCSI, /* bInterfaceSubClass */\ + MSC_PROTOCOL_BULK_ONLY, /* bInterfaceProtocol */\ + str_idx, /* iInterface */\ + /* Endpoint Out */\ + 0x07, /* bLength */\ + USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */\ + out_ep, /* bEndpointAddress */\ + 0x02, /* bmAttributes */\ + 0x40, 0x00, /* wMaxPacketSize */\ + 0x01, /* bInterval */\ + /* Endpoint In */\ + 0x07, /* bLength */\ + USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */\ + in_ep, /* bEndpointAddress */\ + 0x02, /* bmAttributes */\ + 0x40, 0x00, /* wMaxPacketSize */\ + 0x01 /* bInterval */ + + +void usbd_msc_class_init(uint8_t out_ep, uint8_t in_ep); +void usbd_msc_get_cap(uint8_t lun, uint32_t *block_num, uint16_t *block_size); +int usbd_msc_sector_read(uint32_t sector,uint8_t* buffer,uint32_t length); +int usbd_msc_sector_write(uint32_t sector,uint8_t* buffer,uint32_t length); +#endif /* USB_MSC_H_ */ diff --git a/components/usb_stack/class/msc/usbd_scsi.h b/components/usb_stack/class/msc/usbd_scsi.h new file mode 100644 index 00000000..1e1c1c72 --- /dev/null +++ b/components/usb_stack/class/msc/usbd_scsi.h @@ -0,0 +1,314 @@ +/** + * @file + * @brief USB Mass Storage Class SCSI public header + * + * Header follows the Mass Storage Class Specification + * (Mass_Storage_Specification_Overview_v1.4_2-19-2010.pdf) and + * Mass Storage Class Bulk-Only Transport Specification + * (usbmassbulk_10.pdf). + * Header is limited to Bulk-Only Transfer protocol. + */ + +#ifndef _USBD_SCSI_H_ +#define _USBD_SCSI_H_ + +/* SCSI Commands */ +#define SCSI_TEST_UNIT_READY 0x00 +#define SCSI_REQUEST_SENSE 0x03 +#define SCSI_FORMAT_UNIT 0x04 +#define SCSI_INQUIRY 0x12 +#define SCSI_MODE_SELECT6 0x15 +#define SCSI_MODE_SENSE6 0x1A +#define SCSI_START_STOP_UNIT 0x1B +#define SCSI_SEND_DIAGNOSTIC 0x1D +#define SCSI_MEDIA_REMOVAL 0x1E +#define SCSI_READ_FORMAT_CAPACITIES 0x23 +#define SCSI_READ_CAPACITY 0x25 +#define SCSI_READ10 0x28 +#define SCSI_WRITE10 0x2A +#define SCSI_VERIFY10 0x2F +#define SCSI_SYNC_CACHE10 0x35 +#define SCSI_READ12 0xA8 +#define SCSI_WRITE12 0xAA +#define SCSI_MODE_SELECT10 0x55 +#define SCSI_MODE_SENSE10 0x5A +#define SCSI_ATA_COMMAND_PASS_THROUGH16 0x85 +#define SCSI_READ16 0x88 +#define SCSI_WRITE16 0x8A +#define SCSI_VERIFY16 0x8F +#define SCSI_SYNC_CACHE16 0x91 +#define SCSI_SERVICE_ACTION_IN16 0x9E +#define SCSI_READ_CAPACITY16 0x9E +#define SCSI_SERVICE_ACTION_OUT16 0x9F +#define SCSI_ATA_COMMAND_PASS_THROUGH12 0xA1 +#define SCSI_REPORT_ID_INFO 0xA3 +#define SCSI_READ12 0xA8 +#define SCSI_SERVICE_ACTION_OUT12 0xA9 +#define SCSI_SERVICE_ACTION_IN12 0xAB +#define SCSI_VERIFY12 0xAF + +/* SCSI Sense Key */ +#define SCSI_SENSE_NONE 0x00 +#define SCSI_SENSE_RECOVERED_ERROR 0x01 +#define SCSI_SENSE_NOT_READY 0x02 +#define SCSI_SENSE_MEDIUM_ERROR 0x03 +#define SCSI_SENSE_HARDWARE_ERROR 0x04 +#define SCSI_SENSE_ILLEGAL_REQUEST 0x05 +#define SCSI_SENSE_UNIT_ATTENTION 0x06 +#define SCSI_SENSE_DATA_PROTECT 0x07 +#define SCSI_SENSE_FIRMWARE_ERROR 0x08 +#define SCSI_SENSE_ABORTED_COMMAND 0x0b +#define SCSI_SENSE_EQUAL 0x0c +#define SCSI_SENSE_VOLUME_OVERFLOW 0x0d +#define SCSI_SENSE_MISCOMPARE 0x0e + + +//--------------------------------------------------------------------+ +// SCSI Primary Command (SPC-4) +//--------------------------------------------------------------------+ + +/// SCSI Test Unit Ready Command +typedef struct __packed +{ + uint8_t cmd_code ; ///< SCSI OpCode for \ref SCSI_CMD_TEST_UNIT_READY + uint8_t lun ; ///< Logical Unit + uint8_t reserved[3] ; + uint8_t control ; +} scsi_test_unit_ready_cmd_t; + +/// SCSI Inquiry Command +typedef struct __packed +{ + uint8_t cmd_code ; ///< SCSI OpCode for \ref SCSI_CMD_INQUIRY + uint8_t reserved1 ; + uint8_t page_code ; + uint8_t reserved2 ; + uint8_t alloc_length ; ///< specifies the maximum number of bytes that USB host has allocated in the Data-In Buffer. An allocation length of zero specifies that no data shall be transferred. + uint8_t control ; +} scsi_inquiry_cmd_t, scsi_request_sense_cmd_t; + +/// SCSI Inquiry Response Data +typedef struct __packed +{ + uint8_t peripheral_device_type : 5; + uint8_t peripheral_qualifier : 3; + + uint8_t : 7; + uint8_t is_removable : 1; + + uint8_t version; + + uint8_t response_data_format : 4; + uint8_t hierarchical_support : 1; + uint8_t normal_aca : 1; + uint8_t : 2; + + uint8_t additional_length; + + uint8_t protect : 1; + uint8_t : 2; + uint8_t third_party_copy : 1; + uint8_t target_port_group_support : 2; + uint8_t access_control_coordinator : 1; + uint8_t scc_support : 1; + + uint8_t addr16 : 1; + uint8_t : 3; + uint8_t multi_port : 1; + uint8_t : 1; // vendor specific + uint8_t enclosure_service : 1; + uint8_t : 1; + + uint8_t : 1; // vendor specific + uint8_t cmd_que : 1; + uint8_t : 2; + uint8_t sync : 1; + uint8_t wbus16 : 1; + uint8_t : 2; + + uint8_t vendor_id[8] ; ///< 8 bytes of ASCII data identifying the vendor of the product. + uint8_t product_id[16]; ///< 16 bytes of ASCII data defined by the vendor. + uint8_t product_rev[4]; ///< 4 bytes of ASCII data defined by the vendor. +} scsi_inquiry_resp_t; + +typedef struct __packed +{ + uint8_t response_code : 7; ///< 70h - current errors, Fixed Format 71h - deferred errors, Fixed Format + uint8_t valid : 1; + + uint8_t reserved; + + uint8_t sense_key : 4; + uint8_t : 1; + uint8_t ili : 1; ///< Incorrect length indicator + uint8_t end_of_medium : 1; + uint8_t filemark : 1; + + uint32_t information; + uint8_t add_sense_len; + uint32_t command_specific_info; + uint8_t add_sense_code; + uint8_t add_sense_qualifier; + uint8_t field_replaceable_unit_code; + + uint8_t sense_key_specific[3]; ///< sense key specific valid bit is bit 7 of key[0], aka MSB in Big Endian layout + +} scsi_sense_fixed_resp_t; + +typedef struct __packed +{ + uint8_t cmd_code ; ///< SCSI OpCode for \ref SCSI_CMD_MODE_SENSE_6 + + uint8_t : 3; + uint8_t disable_block_descriptor : 1; + uint8_t : 4; + + uint8_t page_code : 6; + uint8_t page_control : 2; + + uint8_t subpage_code; + uint8_t alloc_length; + uint8_t control; +} scsi_mode_sense6_cmd_t; + +// This is only a Mode parameter header(6). +typedef struct __packed +{ + uint8_t data_len; + uint8_t medium_type; + + uint8_t reserved : 7; + bool write_protected : 1; + + uint8_t block_descriptor_len; +} scsi_mode_sense6_resp_t; + +typedef struct +{ + uint8_t cmd_code; + + uint8_t reserved1:3; + uint8_t disable_block_descriptor: 1; + uint8_t long_LBA:1; + uint8_t reserved2:3; + + uint8_t page_code:6; + uint8_t page_control:2; + + uint8_t subpage_code; + + uint8_t reserved3; + uint8_t reserved4; + uint8_t reserved5; + + uint8_t length[2]; + + uint8_t control; +}scsi_mode_sense_10_cmd_t; + +typedef struct +{ + uint8_t mode_data_length_high; + uint8_t mode_data_length_low; + uint8_t medium_type; + + uint8_t reserved1:4; + uint8_t DPO_FUA:1; /**< [Disable Page Out] and [Force Unit Access] in the SCSI_READ10 command is valid or not */ + uint8_t reserved2:2; + uint8_t write_protect:1; + + uint8_t long_LBA:1; + uint8_t reserved3:7; + + uint8_t reserved4; + uint8_t block_desc_length[2]; +}scsi_mode_10_resp_t; + +typedef struct __packed +{ + uint8_t cmd_code; ///< SCSI OpCode for \ref SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL + uint8_t reserved[3]; + uint8_t prohibit_removal; + uint8_t control; +} scsi_prevent_allow_medium_removal_t; + +typedef struct __packed +{ + uint8_t cmd_code; + + uint8_t immded : 1; + uint8_t : 7; + + uint8_t TU_RESERVED; + + uint8_t power_condition_mod : 4; + uint8_t : 4; + + uint8_t start : 1; + uint8_t load_eject : 1; + uint8_t no_flush : 1; + uint8_t : 1; + uint8_t power_condition : 4; + + uint8_t control; +} scsi_start_stop_unit_cmd_t; + +//--------------------------------------------------------------------+ +// SCSI MMC +//--------------------------------------------------------------------+ +/// SCSI Read Format Capacity: Write Capacity +typedef struct __packed +{ + uint8_t cmd_code; + uint8_t reserved[6]; + uint16_t alloc_length; + uint8_t control; +} scsi_read_format_capacity_cmd_t; + + +typedef struct __packed{ + uint8_t reserved[3]; + uint8_t list_length; /// must be 8*n, length in bytes of formattable capacity descriptor followed it. + + uint32_t block_num; /// Number of Logical Blocks + uint8_t descriptor_type; // 00: reserved, 01 unformatted media , 10 Formatted media, 11 No media present + + uint8_t reserved2; + uint16_t block_size_u16; + +} scsi_read_format_capacity_resp_t; + +//--------------------------------------------------------------------+ +// SCSI Block Command (SBC-3) +// NOTE: All data in SCSI command are in Big Endian +//--------------------------------------------------------------------+ + +/// SCSI Read Capacity 10 Command: Read Capacity +typedef struct __packed +{ + uint8_t cmd_code ; ///< SCSI OpCode for \ref SCSI_CMD_READ_CAPACITY_10 + uint8_t reserved1 ; + uint32_t lba ; ///< The first Logical Block Address (LBA) accessed by this command + uint16_t reserved2 ; + uint8_t partial_medium_indicator ; + uint8_t control ; +} scsi_read_capacity10_cmd_t; + +/// SCSI Read Capacity 10 Response Data +typedef struct { + uint32_t last_lba ; ///< The last Logical Block Address of the device + uint32_t block_size ; ///< Block size in bytes +} scsi_read_capacity10_resp_t; + +/// SCSI Read 10 Command +typedef struct __packed +{ + uint8_t cmd_code ; ///< SCSI OpCode + uint8_t reserved ; // has LUN according to wiki + uint32_t lba ; ///< The first Logical Block Address (LBA) accessed by this command + uint8_t reserved2 ; + uint16_t block_count ; ///< Number of Blocks used by this command + uint8_t control ; +} scsi_read10_t, scsi_write10_t,scsi_read_write_10_t; + +#endif /* ZEPHYR_INCLUDE_USB_CLASS_USB_CDC_H_ */ diff --git a/components/usb_stack/class/video/usbd_video.c b/components/usb_stack/class/video/usbd_video.c new file mode 100644 index 00000000..43202f8d --- /dev/null +++ b/components/usb_stack/class/video/usbd_video.c @@ -0,0 +1,190 @@ +/** + * @file usbd_video.c + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "usbd_core.h" +#include "usbd_video.h" + +#define WIDTH (unsigned int)320 +#define HEIGHT (unsigned int)240 +#define VIDEO_PACKET_SIZE (unsigned int)(768+2) + +#define CAM_FPS 20 +#define INTERVAL (unsigned long)(10000000/CAM_FPS) +#define MIN_BIT_RATE (unsigned long)(WIDTH*HEIGHT*16*CAM_FPS)//16 bit +#define MAX_BIT_RATE (unsigned long)(WIDTH*HEIGHT*16*CAM_FPS) +#define MAX_FRAME_SIZE (unsigned long)(WIDTH * HEIGHT *2) + +struct video_probe_and_commit_controls probe = +{ + .hintUnion.bmHint = 0, + .hintUnion1.bmHint = 0, + .bFormatIndex = 1, + .bFrameIndex = 1, + .dwFrameInterval = INTERVAL, + .wKeyFrameRate = 0, + .wPFrameRate = 0, + .wCompQuality = 0, + .wCompWindowSize = 0, + .wDelay = 0, + .dwMaxVideoFrameSize = MAX_FRAME_SIZE, + .dwMaxPayloadTransferSize = 0, + .dwClockFrequency = 0, + .bmFramingInfo = 0, + .bPreferedVersion = 0, + .bMinVersion = 0, + .bMaxVersion = 0, +}; +struct video_probe_and_commit_controls commit = +{ + .hintUnion.bmHint = 0, + .hintUnion1.bmHint = 0, + .bFormatIndex = 1, + .bFrameIndex = 1, + .dwFrameInterval = INTERVAL, + .wKeyFrameRate = 0, + .wPFrameRate = 0, + .wCompQuality = 0, + .wCompWindowSize = 0, + .wDelay = 0, + .dwMaxVideoFrameSize = MAX_FRAME_SIZE, + .dwMaxPayloadTransferSize = 0, + .dwClockFrequency = 0, + .bmFramingInfo = 0, + .bPreferedVersion = 0, + .bMinVersion = 0, + .bMaxVersion = 0, +}; + +int video_class_request_handler(struct usb_setup_packet *setup, uint8_t **data, uint32_t *len) +{ + USBD_LOG_DBG("Class request:" + "bRequest 0x%02x, bmRequestType 0x%02x len %d", + setup->bRequest, setup->bmRequestType, *len); + + switch (setup->bRequest) + { + case VIDEO_REQUEST_SET_CUR: + if (setup->wValue == 256) + memcpy((uint8_t *)&probe,*data,setup->wLength); + else if (setup->wValue == 512) + memcpy((uint8_t *)&commit,*data,setup->wLength); + break; + case VIDEO_REQUEST_GET_CUR: + if (setup->wValue == 256) + *data = (uint8_t *)&probe; + else if (setup->wValue == 512) + *data = (uint8_t *)&commit; + break; + case VIDEO_REQUEST_GET_MIN: + if (setup->wValue == 256) + *data = (uint8_t *)&probe; + else if (setup->wValue == 512) + *data = (uint8_t *)&commit; + break; + case VIDEO_REQUEST_GET_MAX: + if (setup->wValue == 256) + *data = (uint8_t *)&probe; + else if (setup->wValue == 512) + *data = (uint8_t *)&commit; + break; + case VIDEO_REQUEST_GET_RES: + + break; + case VIDEO_REQUEST_GET_LEN: + + break; + case VIDEO_REQUEST_GET_INFO: + + break; + case VIDEO_REQUEST_GET_DEF: + if (setup->wLength == 256) + *data = (uint8_t *)&probe; + else if (setup->wLength == 512) + *data = (uint8_t *)&commit; + break; + default: + USBD_LOG_ERR("Unhandled request 0x%02x", setup->bRequest); + break; + } + return 0; +} +uint8_t play_status = 0; +void video_notify_handler(uint8_t event, void* arg) +{ + switch (event) + { + case USB_EVENT_RESET: + //usbd_cdc_acm_reset(); + break; + case USB_EVENT_SET_INTERFACE: + if(((uint8_t*)arg)[3]) + { + play_status =1; + MSG("Y\r\n"); + } + else + { + play_status=0; + MSG("N\r\n"); + } + break; + default: + break; + } +} + +__weak void usbd_video_isoch_out(uint8_t ep) +{ + +} +__weak void usbd_video_isoch_in(uint8_t ep) +{ + +} + + + +static usbd_class_t video_class; + +usbd_interface_t video_stream_intf = +{ + .class_handler = video_class_request_handler, + .vendor_handler = NULL, + .notify_handler = video_notify_handler, +}; + +static usbd_endpoint_t video_in_ep = +{ + .ep_cb = usbd_video_isoch_in, + .ep_addr = 0x81 +}; + +void usbd_video_class_init(const char *name,uint8_t in_ep) +{ + video_class.name = name; + + usbd_class_register(&video_class); + usbd_class_add_interface(&video_class,&video_stream_intf); + video_stream_intf.intf_num = 1; + video_in_ep.ep_addr = in_ep; + usbd_interface_add_endpoint(&video_stream_intf,&video_in_ep); + +} \ No newline at end of file diff --git a/components/usb_stack/class/video/usbd_video.h b/components/usb_stack/class/video/usbd_video.h new file mode 100644 index 00000000..da0f298d --- /dev/null +++ b/components/usb_stack/class/video/usbd_video.h @@ -0,0 +1,825 @@ +/** + * @file + * @brief USB Video Device Class public header + * + * Header follows below documentation: + * - USB Device Class Definition for Video Devices UVC 1.5 Class specification.pdf + */ + +#ifndef _USBD_VIDEO_H_ +#define _USBD_VIDEO_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#define USB_DEVICE_VIDEO_CLASS_VERSION_1_5 0 + +/*! @brief Video device subclass code */ +#define VIDEO_SC_UNDEFINED 0x00U +#define VIDEO_SC_VIDEOCONTROL 0x01U +#define VIDEO_SC_VIDEOSTREAMING 0x02U +#define VIDEO_SC_VIDEO_INTERFACE_COLLECTION 0x03U + +/*! @brief Video device protocol code */ +#define VIDEO_PC_PROTOCOL_UNDEFINED 0x00U +#define VIDEO_PC_PROTOCOL_15 0x01U + +/*! @brief Video device class-specific descriptor type */ +#define VIDEO_CS_UNDEFINED_DESCRIPTOR_TYPE 0x20U +#define VIDEO_CS_DEVICE_DESCRIPTOR_TYPE 0x21U +#define VIDEO_CS_CONFIGURATION_DESCRIPTOR_TYPE 0x22U +#define VIDEO_CS_STRING_DESCRIPTOR_TYPE 0x23U +#define VIDEO_CS_INTERFACE_DESCRIPTOR_TYPE 0x24U +#define VIDEO_CS_ENDPOINT_DESCRIPTOR_TYPE 0x25U + +/*! @brief Video device class-specific VC interface descriptor subtype */ +#define VIDEO_VC_DESCRIPTOR_UNDEFINED_DESCRIPTOR_SUBTYPE 0x00U +#define VIDEO_VC_HEADER_DESCRIPTOR_SUBTYPE 0x01U +#define VIDEO_VC_INPUT_TERMINAL_DESCRIPTOR_SUBTYPE 0x02U +#define VIDEO_VC_OUTPUT_TERMINAL_DESCRIPTOR_SUBTYPE 0x03U +#define VIDEO_VC_SELECTOR_UNIT_DESCRIPTOR_SUBTYPE 0x04U +#define VIDEO_VC_PROCESSING_UNIT_DESCRIPTOR_SUBTYPE 0x05U +#define VIDEO_VC_EXTENSION_UNIT_DESCRIPTOR_SUBTYPE 0x06U +#define VIDEO_VC_ENCODING_UNIT_DESCRIPTOR_SUBTYPE 0x07U + +/*! @brief Video device class-specific VS interface descriptor subtype */ +#define VIDEO_VS_UNDEFINED_DESCRIPTOR_SUBTYPE 0x00U +#define VIDEO_VS_INPUT_HEADER_DESCRIPTOR_SUBTYPE 0x01U +#define VIDEO_VS_OUTPUT_HEADER_DESCRIPTOR_SUBTYPE 0x02U +#define VIDEO_VS_STILL_IMAGE_FRAME_DESCRIPTOR_SUBTYPE 0x03U +#define VIDEO_VS_FORMAT_UNCOMPRESSED_DESCRIPTOR_SUBTYPE 0x04U +#define VIDEO_VS_FRAME_UNCOMPRESSED_DESCRIPTOR_SUBTYPE 0x05U +#define VIDEO_VS_FORMAT_MJPEG_DESCRIPTOR_SUBTYPE 0x06U +#define VIDEO_VS_FRAME_MJPEG_DESCRIPTOR_SUBTYPE 0x07U +#define VIDEO_VS_FORMAT_MPEG2TS_DESCRIPTOR_SUBTYPE 0x0AU +#define VIDEO_VS_FORMAT_DV_DESCRIPTOR_SUBTYPE 0x0CU +#define VIDEO_VS_COLORFORMAT_DESCRIPTOR_SUBTYPE 0x0DU +#define VIDEO_VS_FORMAT_FRAME_BASED_DESCRIPTOR_SUBTYPE 0x10U +#define VIDEO_VS_FRAME_FRAME_BASED_DESCRIPTOR_SUBTYPE 0x11U +#define VIDEO_VS_FORMAT_STREAM_BASED_DESCRIPTOR_SUBTYPE 0x12U +#define VIDEO_VS_FORMAT_H264_DESCRIPTOR_SUBTYPE 0x13U +#define VIDEO_VS_FRAME_H264_DESCRIPTOR_SUBTYPE 0x14U +#define VIDEO_VS_FORMAT_H264_SIMULCAST_DESCRIPTOR_SUBTYPE 0x15U +#define VIDEO_VS_FORMAT_VP8_DESCRIPTOR_SUBTYPE 0x16U +#define VIDEO_VS_FRAME_VP8_DESCRIPTOR_SUBTYPE 0x17U +#define VIDEO_VS_FORMAT_VP8_SIMULCAST_DESCRIPTOR_SUBTYPE 0x18U + +/*! @brief Video device class-specific VC endpoint descriptor subtype */ +#define VIDEO_EP_UNDEFINED_DESCRIPTOR_SUBTYPE 0x00U +#define VIDEO_EP_GENERAL_DESCRIPTOR_SUBTYPE 0x01U +#define VIDEO_EP_ENDPOINT_DESCRIPTOR_SUBTYPE 0x02U +#define VIDEO_EP_INTERRUPT_DESCRIPTOR_SUBTYPE 0x03U + +/*! @brief Video device class-specific request code */ +#define VIDEO_REQUEST_UNDEFINED 0x00U +#define VIDEO_REQUEST_SET_CUR 0x01U +#define VIDEO_REQUEST_SET_CUR_ALL 0x11U +#define VIDEO_REQUEST_GET_CUR 0x81U +#define VIDEO_REQUEST_GET_MIN 0x82U +#define VIDEO_REQUEST_GET_MAX 0x83U +#define VIDEO_REQUEST_GET_RES 0x84U +#define VIDEO_REQUEST_GET_LEN 0x85U +#define VIDEO_REQUEST_GET_INFO 0x86U +#define VIDEO_REQUEST_GET_DEF 0x87U +#define VIDEO_REQUEST_GET_CUR_ALL 0x91U +#define VIDEO_REQUEST_GET_MIN_ALL 0x92U +#define VIDEO_REQUEST_GET_MAX_ALL 0x93U +#define VIDEO_REQUEST_GET_RES_ALL 0x94U +#define VIDEO_REQUEST_GET_DEF_ALL 0x97U + +/*! @brief Video device class-specific VideoControl interface control selector */ +#define VIDEO_VC_CONTROL_UNDEFINED 0x00U +#define VIDEO_VC_VIDEO_POWER_MODE_CONTROL 0x01U +#define VIDEO_VC_REQUEST_ERROR_CODE_CONTROL 0x02U + +/*! @brief Video device class-specific Terminal control selector */ +#define VIDEO_TE_CONTROL_UNDEFINED 0x00U + +/*! @brief Video device class-specific Selector Unit control selector */ +#define VIDEO_SU_CONTROL_UNDEFINED 0x00U +#define VIDEO_SU_INPUT_SELECT_CONTROL 0x01U + +/*! @brief Video device class-specific Camera Terminal control selector */ +#define VIDEO_CT_CONTROL_UNDEFINED 0x00U +#define VIDEO_CT_SCANNING_MODE_CONTROL 0x01U +#define VIDEO_CT_AE_MODE_CONTROL 0x02U +#define VIDEO_CT_AE_PRIORITY_CONTROL 0x03U +#define VIDEO_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04U +#define VIDEO_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05U +#define VIDEO_CT_FOCUS_ABSOLUTE_CONTROL 0x06U +#define VIDEO_CT_FOCUS_RELATIVE_CONTROL 0x07U +#define VIDEO_CT_FOCUS_AUTO_CONTROL 0x08U +#define VIDEO_CT_IRIS_ABSOLUTE_CONTROL 0x09U +#define VIDEO_CT_IRIS_RELATIVE_CONTROL 0x0AU +#define VIDEO_CT_ZOOM_ABSOLUTE_CONTROL 0x0BU +#define VIDEO_CT_ZOOM_RELATIVE_CONTROL 0x0CU +#define VIDEO_CT_PANTILT_ABSOLUTE_CONTROL 0x0DU +#define VIDEO_CT_PANTILT_RELATIVE_CONTROL 0x0EU +#define VIDEO_CT_ROLL_ABSOLUTE_CONTROL 0x0FU +#define VIDEO_CT_ROLL_RELATIVE_CONTROL 0x10U +#define VIDEO_CT_PRIVACY_CONTROL 0x11U +#define VIDEO_CT_FOCUS_SIMPLE_CONTROL 0x12U +#define VIDEO_CT_WINDOW_CONTROL 0x13U +#define VIDEO_CT_REGION_OF_INTEREST_CONTROL 0x14U + +/*! @brief Video device class-specific Processing Unit control selector */ +#define VIDEO_PU_CONTROL_UNDEFINED 0x00U +#define VIDEO_PU_BACKLIGHT_COMPENSATION_CONTROL 0x01U +#define VIDEO_PU_BRIGHTNESS_CONTROL 0x02U +#define VIDEO_PU_CONTRAST_CONTROL 0x03U +#define VIDEO_PU_GAIN_CONTROL 0x04U +#define VIDEO_PU_POWER_LINE_FREQUENCY_CONTROL 0x05U +#define VIDEO_PU_HUE_CONTROL 0x06U +#define VIDEO_PU_SATURATION_CONTROL 0x07U +#define VIDEO_PU_SHARPNESS_CONTROL 0x08U +#define VIDEO_PU_GAMMA_CONTROL 0x09U +#define VIDEO_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0AU +#define VIDEO_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0BU +#define VIDEO_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0CU +#define VIDEO_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0DU +#define VIDEO_PU_DIGITAL_MULTIPLIER_CONTROL 0x0EU +#define VIDEO_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0FU +#define VIDEO_PU_HUE_AUTO_CONTROL 0x10U +#define VIDEO_PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11U +#define VIDEO_PU_ANALOG_LOCK_STATUS_CONTROL 0x12U +#define VIDEO_PU_CONTRAST_AUTO_CONTROL 0x13U + +/*! @brief Video device class-specific Encoding Unit control selector */ +#define VIDEO_EU_CONTROL_UNDEFINED 0x00U +#define VIDEO_EU_SELECT_LAYER_CONTROL 0x01U +#define VIDEO_EU_PROFILE_TOOLSET_CONTROL 0x02U +#define VIDEO_EU_VIDEO_RESOLUTION_CONTROL 0x03U +#define VIDEO_EU_MIN_FRAME_INTERVAL_CONTROL 0x04U +#define VIDEO_EU_SLICE_MODE_CONTROL 0x05U +#define VIDEO_EU_RATE_CONTROL_MODE_CONTROL 0x06U +#define VIDEO_EU_AVERAGE_BITRATE_CONTROL 0x07U +#define VIDEO_EU_CPB_SIZE_CONTROL 0x08U +#define VIDEO_EU_PEAK_BIT_RATE_CONTROL 0x09U +#define VIDEO_EU_QUANTIZATION_PARAMS_CONTROL 0x0AU +#define VIDEO_EU_SYNC_REF_FRAME_CONTROL 0x0BU +#define VIDEO_EU_LTR_BUFFER_ CONTROL0x0CU +#define VIDEO_EU_LTR_PICTURE_CONTROL 0x0DU +#define VIDEO_EU_LTR_VALIDATION_CONTROL 0x0EU +#define VIDEO_EU_LEVEL_IDC_LIMIT_CONTROL 0x0FU +#define VIDEO_EU_SEI_PAYLOADTYPE_CONTROL 0x10U +#define VIDEO_EU_QP_RANGE_CONTROL 0x11U +#define VIDEO_EU_PRIORITY_CONTROL 0x12U +#define VIDEO_EU_START_OR_STOP_LAYER_CONTROL 0x13U +#define VIDEO_EU_ERROR_RESILIENCY_CONTROL 0x14U + +/*! @brief Video device class-specific Extension Unit control selector */ +#define VIDEO_XU_CONTROL_UNDEFINED 0x00U + +/*! @brief Video device class-specific VideoStreaming Interface control selector */ +#define VIDEO_VS_CONTROL_UNDEFINED 0x00U +#define VIDEO_VS_PROBE_CONTROL 0x01U +#define VIDEO_VS_COMMIT_CONTROL 0x02U +#define VIDEO_VS_STILL_PROBE_CONTROL 0x03U +#define VIDEO_VS_STILL_COMMIT_CONTROL 0x04U +#define VIDEO_VS_STILL_IMAGE_TRIGGER_CONTROL 0x05U +#define VIDEO_VS_STREAM_ERROR_CODE_CONTROL 0x06U +#define VIDEO_VS_GENERATE_KEY_FRAME_CONTROL 0x07U +#define VIDEO_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08U +#define VIDEO_VS_SYNCH_DELAY_CONTROL 0x09U + +/*! @}*/ + +/*! + * @name USB Video class terminal types + * @{ + */ + +/*! @brief Video device USB terminal type */ +#define VIDEO_TT_VENDOR_SPECIFIC 0x0100U +#define VIDEO_TT_STREAMING 0x0101U + +/*! @brief Video device input terminal type */ +#define VIDEO_ITT_VENDOR_SPECIFIC 0x0200U +#define VIDEO_ITT_CAMERA 0x0201U +#define VIDEO_ITT_MEDIA_TRANSPORT_INPUT 0x0202U + +/*! @brief Video device output terminal type */ +#define VIDEO_OTT_VENDOR_SPECIFIC 0x0300U +#define VIDEO_OTT_DISPLAY 0x0301U +#define VIDEO_OTT_MEDIA_TRANSPORT_OUTPUT 0x0302U + +/*! @brief Video device external terminal type */ +#define VIDEO_ET_VENDOR_SPECIFIC 0x0400U +#define VIDEO_ET_COMPOSITE_CONNECTOR 0x0401U +#define VIDEO_ET_SVIDEO_CONNECTOR 0x0402U +#define VIDEO_ET_COMPONENT_CONNECTOR 0x0403U + +/*! @}*/ + +/*! + * @name USB Video class setup request types + * @{ + */ + +/*! @brief Video device class setup request set type */ +#define VIDEO_SET_REQUEST_INTERFACE 0x21U +#define VIDEO_SET_REQUEST_ENDPOINT 0x22U + +/*! @brief Video device class setup request get type */ +#define VIDEO_GET_REQUEST_INTERFACE 0xA1U +#define VIDEO_GET_REQUEST_ENDPOINT 0xA2U + +/*! @}*/ + +/*! @brief Video device still image trigger control */ +#define VIDEO_STILL_IMAGE_TRIGGER_NORMAL_OPERATION 0x00U +#define VIDEO_STILL_IMAGE_TRIGGER_TRANSMIT_STILL_IMAGE 0x01U +#define VIDEO_STILL_IMAGE_TRIGGER_TRANSMIT_STILL_IMAGE_VS_DEDICATED_BULK_PIPE 0x02U +#define VIDEO_STILL_IMAGE_TRIGGER_ABORT_STILL_IMAGE_TRANSMISSION 0x03U + +/*! + * @name USB Video device class-specific request commands + * @{ + */ + +/*! @brief Video device class-specific request GET CUR COMMAND */ +#define VIDEO_GET_CUR_VC_POWER_MODE_CONTROL 0x8101U +#define VIDEO_GET_CUR_VC_ERROR_CODE_CONTROL 0x8102U + +#define VIDEO_GET_CUR_PU_BACKLIGHT_COMPENSATION_CONTROL 0x8121U +#define VIDEO_GET_CUR_PU_BRIGHTNESS_CONTROL 0x8122U +#define VIDEO_GET_CUR_PU_CONTRACT_CONTROL 0x8123U +#define VIDEO_GET_CUR_PU_GAIN_CONTROL 0x8124U +#define VIDEO_GET_CUR_PU_POWER_LINE_FREQUENCY_CONTROL 0x8125U +#define VIDEO_GET_CUR_PU_HUE_CONTROL 0x8126U +#define VIDEO_GET_CUR_PU_SATURATION_CONTROL 0x8127U +#define VIDEO_GET_CUR_PU_SHARRNESS_CONTROL 0x8128U +#define VIDEO_GET_CUR_PU_GAMMA_CONTROL 0x8129U +#define VIDEO_GET_CUR_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x812AU +#define VIDEO_GET_CUR_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x812BU +#define VIDEO_GET_CUR_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x812CU +#define VIDEO_GET_CUR_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x812DU +#define VIDEO_GET_CUR_PU_DIGITAL_MULTIPLIER_CONTROL 0x812EU +#define VIDEO_GET_CUR_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x812FU +#define VIDEO_GET_CUR_PU_HUE_AUTO_CONTROL 0x8130U +#define VIDEO_GET_CUR_PU_ANALOG_VIDEO_STANDARD_CONTROL 0x8131U +#define VIDEO_GET_CUR_PU_ANALOG_LOCK_STATUS_CONTROL 0x8132U +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_CUR_PU_CONTRAST_AUTO_CONTROL 0x8133U +#endif + +#define VIDEO_GET_CUR_CT_SCANNING_MODE_CONTROL 0x8141U +#define VIDEO_GET_CUR_CT_AE_MODE_CONTROL 0x8142U +#define VIDEO_GET_CUR_CT_AE_PRIORITY_CONTROL 0x8143U +#define VIDEO_GET_CUR_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x8144U +#define VIDEO_GET_CUR_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x8145U +#define VIDEO_GET_CUR_CT_FOCUS_ABSOLUTE_CONTROL 0x8146U +#define VIDEO_GET_CUR_CT_FOCUS_RELATIVE_CONTROL 0x8147U +#define VIDEO_GET_CUR_CT_FOCUS_AUTO_CONTROL 0x8148U +#define VIDEO_GET_CUR_CT_IRIS_ABSOLUTE_CONTROL 0x8149U +#define VIDEO_GET_CUR_CT_IRIS_RELATIVE_CONTROL 0x814AU +#define VIDEO_GET_CUR_CT_ZOOM_ABSOLUTE_CONTROL 0x814BU +#define VIDEO_GET_CUR_CT_ZOOM_RELATIVE_CONTROL 0x814CU +#define VIDEO_GET_CUR_CT_PANTILT_ABSOLUTE_CONTROL 0x814DU +#define VIDEO_GET_CUR_CT_PANTILT_RELATIVE_CONTROL 0x814EU +#define VIDEO_GET_CUR_CT_ROLL_ABSOLUTE_CONTROL 0x814FU +#define VIDEO_GET_CUR_CT_ROLL_RELATIVE_CONTROL 0x8150U +#define VIDEO_GET_CUR_CT_PRIVACY_CONTROL 0x8151U +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_CUR_CT_FOCUS_SIMPLE_CONTROL 0x8152U +#define VIDEO_GET_CUR_CT_DIGITAL_WINDOW_CONTROL 0x8153U +#define VIDEO_GET_CUR_CT_REGION_OF_INTEREST_CONTROL 0x8154U +#endif + +#define VIDEO_GET_CUR_VS_PROBE_CONTROL 0x8161U +#define VIDEO_GET_CUR_VS_COMMIT_CONTROL 0x8162U +#define VIDEO_GET_CUR_VS_STILL_PROBE_CONTROL 0x8163U +#define VIDEO_GET_CUR_VS_STILL_COMMIT_CONTROL 0x8164U +#define VIDEO_GET_CUR_VS_STILL_IMAGE_TRIGGER_CONTROL 0x8165U +#define VIDEO_GET_CUR_VS_STREAM_ERROR_CODE_CONTROL 0x8166U +#define VIDEO_GET_CUR_VS_GENERATE_KEY_FRAME_CONTROL 0x8167U +#define VIDEO_GET_CUR_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x8168U +#define VIDEO_GET_CUR_VS_SYNCH_DELAY_CONTROL 0x8169U + +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_CUR_EU_SELECT_LAYER_CONTROL 0x8181U +#define VIDEO_GET_CUR_EU_PROFILE_TOOLSET_CONTROL 0x8182U +#define VIDEO_GET_CUR_EU_VIDEO_RESOLUTION_CONTROL 0x8183U +#define VIDEO_GET_CUR_EU_MIN_FRAME_INTERVAL_CONTROL 0x8184U +#define VIDEO_GET_CUR_EU_SLICE_MODE_CONTROL 0x8185U +#define VIDEO_GET_CUR_EU_RATE_CONTROL_MODE_CONTROL 0x8186U +#define VIDEO_GET_CUR_EU_AVERAGE_BITRATE_CONTROL 0x8187U +#define VIDEO_GET_CUR_EU_CPB_SIZE_CONTROL 0x8188U +#define VIDEO_GET_CUR_EU_PEAK_BIT_RATE_CONTROL 0x8189U +#define VIDEO_GET_CUR_EU_QUANTIZATION_PARAMS_CONTROL 0x818AU +#define VIDEO_GET_CUR_EU_SYNC_REF_FRAME_CONTROL 0x818BU +#define VIDEO_GET_CUR_EU_LTR_BUFFER_CONTROL 0x818CU +#define VIDEO_GET_CUR_EU_LTR_PICTURE_CONTROL 0x818DU +#define VIDEO_GET_CUR_EU_LTR_VALIDATION_CONTROL 0x818EU +#define VIDEO_GET_CUR_EU_LEVEL_IDC_LIMIT_CONTROL 0x818FU +#define VIDEO_GET_CUR_EU_SEI_PAYLOADTYPE_CONTROL 0x8190U +#define VIDEO_GET_CUR_EU_QP_RANGE_CONTROL 0x8191U +#define VIDEO_GET_CUR_EU_PRIORITY_CONTROL 0x8192U +#define VIDEO_GET_CUR_EU_START_OR_STOP_LAYER_CONTROL 0x8193U +#define VIDEO_GET_CUR_EU_ERROR_RESILIENCY_CONTROL 0x8194U +#endif + +/*! @brief Video device class-specific request GET MIN COMMAND */ +#define VIDEO_GET_MIN_PU_BACKLIGHT_COMPENSATION_CONTROL 0x8221U +#define VIDEO_GET_MIN_PU_BRIGHTNESS_CONTROL 0x8222U +#define VIDEO_GET_MIN_PU_CONTRACT_CONTROL 0x8223U +#define VIDEO_GET_MIN_PU_GAIN_CONTROL 0x8224U +#define VIDEO_GET_MIN_PU_HUE_CONTROL 0x8226U +#define VIDEO_GET_MIN_PU_SATURATION_CONTROL 0x8227U +#define VIDEO_GET_MIN_PU_SHARRNESS_CONTROL 0x8228U +#define VIDEO_GET_MIN_PU_GAMMA_CONTROL 0x8229U +#define VIDEO_GET_MIN_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x822AU +#define VIDEO_GET_MIN_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x822CU +#define VIDEO_GET_MIN_PU_DIGITAL_MULTIPLIER_CONTROL 0x822EU +#define VIDEO_GET_MIN_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x822FU + +#define VIDEO_GET_MIN_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x8244U +#define VIDEO_GET_MIN_CT_FOCUS_ABSOLUTE_CONTROL 0x8246U +#define VIDEO_GET_MIN_CT_FOCUS_RELATIVE_CONTROL 0x8247U +#define VIDEO_GET_MIN_CT_IRIS_ABSOLUTE_CONTROL 0x8249U +#define VIDEO_GET_MIN_CT_ZOOM_ABSOLUTE_CONTROL 0x824BU +#define VIDEO_GET_MIN_CT_ZOOM_RELATIVE_CONTROL 0x824CU +#define VIDEO_GET_MIN_CT_PANTILT_ABSOLUTE_CONTROL 0x824DU +#define VIDEO_GET_MIN_CT_PANTILT_RELATIVE_CONTROL 0x824EU +#define VIDEO_GET_MIN_CT_ROLL_ABSOLUTE_CONTROL 0x824FU +#define VIDEO_GET_MIN_CT_ROLL_RELATIVE_CONTROL 0x8250U +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_MIN_CT_DIGITAL_WINDOW_CONTROL 0x8251U +#define VIDEO_GET_MIN_CT_REGION_OF_INTEREST_CONTROL 0x8252U +#endif + +#define VIDEO_GET_MIN_VS_PROBE_CONTROL 0x8261U +#define VIDEO_GET_MIN_VS_STILL_PROBE_CONTROL 0x8263U +#define VIDEO_GET_MIN_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x8268U +#define VIDEO_GET_MIN_VS_SYNCH_DELAY_CONTROL 0x8269U + +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_MIN_EU_VIDEO_RESOLUTION_CONTROL 0x8283U +#define VIDEO_GET_MIN_EU_MIN_FRAME_INTERVAL_CONTROL 0x8284U +#define VIDEO_GET_MIN_EU_SLICE_MODE_CONTROL 0x8285U +#define VIDEO_GET_MIN_EU_AVERAGE_BITRATE_CONTROL 0x8287U +#define VIDEO_GET_MIN_EU_CPB_SIZE_CONTROL 0x8288U +#define VIDEO_GET_MIN_EU_PEAK_BIT_RATE_CONTROL 0x8289U +#define VIDEO_GET_MIN_EU_QUANTIZATION_PARAMS_CONTROL 0x828AU +#define VIDEO_GET_MIN_EU_SYNC_REF_FRAME_CONTROL 0x828BU +#define VIDEO_GET_MIN_EU_LEVEL_IDC_LIMIT_CONTROL 0x828FU +#define VIDEO_GET_MIN_EU_SEI_PAYLOADTYPE_CONTROL 0x8290U +#define VIDEO_GET_MIN_EU_QP_RANGE_CONTROL 0x8291U +#endif + +/*! @brief Video device class-specific request GET MAX COMMAND */ +#define VIDEO_GET_MAX_PU_BACKLIGHT_COMPENSATION_CONTROL 0x8321U +#define VIDEO_GET_MAX_PU_BRIGHTNESS_CONTROL 0x8322U +#define VIDEO_GET_MAX_PU_CONTRACT_CONTROL 0x8323U +#define VIDEO_GET_MAX_PU_GAIN_CONTROL 0x8324U +#define VIDEO_GET_MAX_PU_HUE_CONTROL 0x8326U +#define VIDEO_GET_MAX_PU_SATURATION_CONTROL 0x8327U +#define VIDEO_GET_MAX_PU_SHARRNESS_CONTROL 0x8328U +#define VIDEO_GET_MAX_PU_GAMMA_CONTROL 0x8329U +#define VIDEO_GET_MAX_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x832AU +#define VIDEO_GET_MAX_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x832CU +#define VIDEO_GET_MAX_PU_DIGITAL_MULTIPLIER_CONTROL 0x832EU +#define VIDEO_GET_MAX_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x832FU + +#define VIDEO_GET_MAX_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x8344U +#define VIDEO_GET_MAX_CT_FOCUS_ABSOLUTE_CONTROL 0x8346U +#define VIDEO_GET_MAX_CT_FOCUS_RELATIVE_CONTROL 0x8347U +#define VIDEO_GET_MAX_CT_IRIS_ABSOLUTE_CONTROL 0x8349U +#define VIDEO_GET_MAX_CT_ZOOM_ABSOLUTE_CONTROL 0x834BU +#define VIDEO_GET_MAX_CT_ZOOM_RELATIVE_CONTROL 0x834CU +#define VIDEO_GET_MAX_CT_PANTILT_ABSOLUTE_CONTROL 0x834DU +#define VIDEO_GET_MAX_CT_PANTILT_RELATIVE_CONTROL 0x834EU +#define VIDEO_GET_MAX_CT_ROLL_ABSOLUTE_CONTROL 0x834FU +#define VIDEO_GET_MAX_CT_ROLL_RELATIVE_CONTROL 0x8350U +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_MAX_CT_DIGITAL_WINDOW_CONTROL 0x8351U +#define VIDEO_GET_MAX_CT_REGION_OF_INTEREST_CONTROL 0x8352U +#endif + +#define VIDEO_GET_MAX_VS_PROBE_CONTROL 0x8361U +#define VIDEO_GET_MAX_VS_STILL_PROBE_CONTROL 0x8363U +#define VIDEO_GET_MAX_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x8368U +#define VIDEO_GET_MAX_VS_SYNCH_DELAY_CONTROL 0x8369U + +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_MAX_EU_VIDEO_RESOLUTION_CONTROL 0x8383U +#define VIDEO_GET_MAX_EU_MIN_FRAME_INTERVAL_CONTROL 0x8384U +#define VIDEO_GET_MAX_EU_SLICE_MODE_CONTROL 0x8385U +#define VIDEO_GET_MAX_EU_AVERAGE_BITRATE_CONTROL 0x8387U +#define VIDEO_GET_MAX_EU_CPB_SIZE_CONTROL 0x8388U +#define VIDEO_GET_MAX_EU_PEAK_BIT_RATE_CONTROL 0x8389U +#define VIDEO_GET_MAX_EU_QUANTIZATION_PARAMS_CONTROL 0x838AU +#define VIDEO_GET_MAX_EU_SYNC_REF_FRAME_CONTROL 0x838BU +#define VIDEO_GET_MAX_EU_LTR_BUFFER_CONTROL 0x838CU +#define VIDEO_GET_MAX_EU_LEVEL_IDC_LIMIT_CONTROL 0x838FU +#define VIDEO_GET_MAX_EU_SEI_PAYLOADTYPE_CONTROL 0x8390U +#define VIDEO_GET_MAX_EU_QP_RANGE_CONTROL 0x8391U +#endif + +/*! @brief Video device class-specific request GET RES COMMAND */ +#define VIDEO_GET_RES_PU_BACKLIGHT_COMPENSATION_CONTROL 0x8421U +#define VIDEO_GET_RES_PU_BRIGHTNESS_CONTROL 0x8422U +#define VIDEO_GET_RES_PU_CONTRACT_CONTROL 0x8423U +#define VIDEO_GET_RES_PU_GAIN_CONTROL 0x8424U +#define VIDEO_GET_RES_PU_HUE_CONTROL 0x8426U +#define VIDEO_GET_RES_PU_SATURATION_CONTROL 0x8427U +#define VIDEO_GET_RES_PU_SHARRNESS_CONTROL 0x8428U +#define VIDEO_GET_RES_PU_GAMMA_CONTROL 0x8429U +#define VIDEO_GET_RES_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x842AU +#define VIDEO_GET_RES_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x842CU +#define VIDEO_GET_RES_PU_DIGITAL_MULTIPLIER_CONTROL 0x842EU +#define VIDEO_GET_RES_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x842FU + +#define VIDEO_GET_RES_CT_AE_MODE_CONTROL 0x8442U +#define VIDEO_GET_RES_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x8444U +#define VIDEO_GET_RES_CT_FOCUS_ABSOLUTE_CONTROL 0x8446U +#define VIDEO_GET_RES_CT_FOCUS_RELATIVE_CONTROL 0x8447U +#define VIDEO_GET_RES_CT_IRIS_ABSOLUTE_CONTROL 0x8449U +#define VIDEO_GET_RES_CT_ZOOM_ABSOLUTE_CONTROL 0x844BU +#define VIDEO_GET_RES_CT_ZOOM_RELATIVE_CONTROL 0x844CU +#define VIDEO_GET_RES_CT_PANTILT_ABSOLUTE_CONTROL 0x844DU +#define VIDEO_GET_RES_CT_PANTILT_RELATIVE_CONTROL 0x844EU +#define VIDEO_GET_RES_CT_ROLL_ABSOLUTE_CONTROL 0x844FU +#define VIDEO_GET_RES_CT_ROLL_RELATIVE_CONTROL 0x8450U + +#define VIDEO_GET_RES_VS_PROBE_CONTROL 0x8461U +#define VIDEO_GET_RES_VS_STILL_PROBE_CONTROL 0x8463U +#define VIDEO_GET_RES_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x8468U +#define VIDEO_GET_RES_VS_SYNCH_DELAY_CONTROL 0x8469U + +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_RES_EU_AVERAGE_BITRATE_CONTROL 0x8487U +#define VIDEO_GET_RES_EU_CPB_SIZE_CONTROL 0x8488U +#define VIDEO_GET_RES_EU_PEAK_BIT_RATE_CONTROL 0x8489U +#define VIDEO_GET_RES_EU_QUANTIZATION_PARAMS_CONTROL 0x848AU +#define VIDEO_GET_RES_EU_ERROR_RESILIENCY_CONTROL 0x8494U +#endif + +/*! @brief Video device class-specific request GET LEN COMMAND */ + +#define VIDEO_GET_LEN_VS_PROBE_CONTROL 0x8561U +#define VIDEO_GET_LEN_VS_COMMIT_CONTROL 0x8562U +#define VIDEO_GET_LEN_VS_STILL_PROBE_CONTROL 0x8563U +#define VIDEO_GET_LEN_VS_STILL_COMMIT_CONTROL 0x8564U + +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_LEN_EU_SELECT_LAYER_CONTROL 0x8581U +#define VIDEO_GET_LEN_EU_PROFILE_TOOLSET_CONTROL 0x8582U +#define VIDEO_GET_LEN_EU_VIDEO_RESOLUTION_CONTROL 0x8583U +#define VIDEO_GET_LEN_EU_MIN_FRAME_INTERVAL_CONTROL 0x8584U +#define VIDEO_GET_LEN_EU_SLICE_MODE_CONTROL 0x8585U +#define VIDEO_GET_LEN_EU_RATE_CONTROL_MODE_CONTROL 0x8586U +#define VIDEO_GET_LEN_EU_AVERAGE_BITRATE_CONTROL 0x8587U +#define VIDEO_GET_LEN_EU_CPB_SIZE_CONTROL 0x8588U +#define VIDEO_GET_LEN_EU_PEAK_BIT_RATE_CONTROL 0x8589U +#define VIDEO_GET_LEN_EU_QUANTIZATION_PARAMS_CONTROL 0x858AU +#define VIDEO_GET_LEN_EU_SYNC_REF_FRAME_CONTROL 0x858BU +#define VIDEO_GET_LEN_EU_LTR_BUFFER_CONTROL 0x858CU +#define VIDEO_GET_LEN_EU_LTR_PICTURE_CONTROL 0x858DU +#define VIDEO_GET_LEN_EU_LTR_VALIDATION_CONTROL 0x858EU +#define VIDEO_GET_LEN_EU_QP_RANGE_CONTROL 0x8591U +#define VIDEO_GET_LEN_EU_PRIORITY_CONTROL 0x8592U +#define VIDEO_GET_LEN_EU_START_OR_STOP_LAYER_CONTROL 0x8593U +#endif + +/*! @brief Video device class-specific request GET INFO COMMAND */ +#define VIDEO_GET_INFO_VC_POWER_MODE_CONTROL 0x8601U +#define VIDEO_GET_INFO_VC_ERROR_CODE_CONTROL 0x8602U + +#define VIDEO_GET_INFO_PU_BACKLIGHT_COMPENSATION_CONTROL 0x8621U +#define VIDEO_GET_INFO_PU_BRIGHTNESS_CONTROL 0x8622U +#define VIDEO_GET_INFO_PU_CONTRACT_CONTROL 0x8623U +#define VIDEO_GET_INFO_PU_GAIN_CONTROL 0x8624U +#define VIDEO_GET_INFO_PU_POWER_LINE_FREQUENCY_CONTROL 0x8625U +#define VIDEO_GET_INFO_PU_HUE_CONTROL 0x8626U +#define VIDEO_GET_INFO_PU_SATURATION_CONTROL 0x8627U +#define VIDEO_GET_INFO_PU_SHARRNESS_CONTROL 0x8628U +#define VIDEO_GET_INFO_PU_GAMMA_CONTROL 0x8629U +#define VIDEO_GET_INFO_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x862AU +#define VIDEO_GET_INFO_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x862BU +#define VIDEO_GET_INFO_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x862CU +#define VIDEO_GET_INFO_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x862DU +#define VIDEO_GET_INFO_PU_DIGITAL_MULTIPLIER_CONTROL 0x862EU +#define VIDEO_GET_INFO_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x862FU +#define VIDEO_GET_INFO_PU_HUE_AUTO_CONTROL 0x8630U +#define VIDEO_GET_INFO_PU_ANALOG_VIDEO_STANDARD_CONTROL 0x8631U +#define VIDEO_GET_INFO_PU_ANALOG_LOCK_STATUS_CONTROL 0x8632U +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_INFO_PU_CONTRAST_AUTO_CONTROL 0x8633U +#endif + +#define VIDEO_GET_INFO_CT_SCANNING_MODE_CONTROL 0x8641U +#define VIDEO_GET_INFO_CT_AE_MODE_CONTROL 0x8642U +#define VIDEO_GET_INFO_CT_AE_PRIORITY_CONTROL 0x8643U +#define VIDEO_GET_INFO_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x8644U +#define VIDEO_GET_INFO_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x8645U +#define VIDEO_GET_INFO_CT_FOCUS_ABSOLUTE_CONTROL 0x8646U +#define VIDEO_GET_INFO_CT_FOCUS_RELATIVE_CONTROL 0x8647U +#define VIDEO_GET_INFO_CT_FOCUS_AUTO_CONTROL 0x8648U +#define VIDEO_GET_INFO_CT_IRIS_ABSOLUTE_CONTROL 0x8649U +#define VIDEO_GET_INFO_CT_IRIS_RELATIVE_CONTROL 0x864AU +#define VIDEO_GET_INFO_CT_ZOOM_ABSOLUTE_CONTROL 0x864BU +#define VIDEO_GET_INFO_CT_ZOOM_RELATIVE_CONTROL 0x864CU +#define VIDEO_GET_INFO_CT_PANTILT_ABSOLUTE_CONTROL 0x864DU +#define VIDEO_GET_INFO_CT_PANTILT_RELATIVE_CONTROL 0x864EU +#define VIDEO_GET_INFO_CT_ROLL_ABSOLUTE_CONTROL 0x864FU +#define VIDEO_GET_INFO_CT_ROLL_RELATIVE_CONTROL 0x8650U +#define VIDEO_GET_INFO_CT_PRIVACY_CONTROL 0x8651U +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_INFO_CT_FOCUS_SIMPLE_CONTROL 0x8652U +#endif + +#define VIDEO_GET_INFO_VS_PROBE_CONTROL 0x8661U +#define VIDEO_GET_INFO_VS_COMMIT_CONTROL 0x8662U +#define VIDEO_GET_INFO_VS_STILL_PROBE_CONTROL 0x8663U +#define VIDEO_GET_INFO_VS_STILL_COMMIT_CONTROL 0x8664U +#define VIDEO_GET_INFO_VS_STILL_IMAGE_TRIGGER_CONTROL 0x8665U +#define VIDEO_GET_INFO_VS_STREAM_ERROR_CODE_CONTROL 0x8666U +#define VIDEO_GET_INFO_VS_GENERATE_KEY_FRAME_CONTROL 0x8667U +#define VIDEO_GET_INFO_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x8668U +#define VIDEO_GET_INFO_VS_SYNCH_DELAY_CONTROL 0x8669U + +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_INFO_EU_SELECT_LAYER_CONTROL 0x8681U +#define VIDEO_GET_INFO_EU_PROFILE_TOOLSET_CONTROL 0x8682U +#define VIDEO_GET_INFO_EU_VIDEO_RESOLUTION_CONTROL 0x8683U +#define VIDEO_GET_INFO_EU_MIN_FRAME_INTERVAL_CONTROL 0x8684U +#define VIDEO_GET_INFO_EU_SLICE_MODE_CONTROL 0x8685U +#define VIDEO_GET_INFO_EU_RATE_CONTROL_MODE_CONTROL 0x8686U +#define VIDEO_GET_INFO_EU_AVERAGE_BITRATE_CONTROL 0x8687U +#define VIDEO_GET_INFO_EU_CPB_SIZE_CONTROL 0x8688U +#define VIDEO_GET_INFO_EU_PEAK_BIT_RATE_CONTROL 0x8689U +#define VIDEO_GET_INFO_EU_QUANTIZATION_PARAMS_CONTROL 0x868AU +#define VIDEO_GET_INFO_EU_SYNC_REF_FRAME_CONTROL 0x868BU +#define VIDEO_GET_INFO_EU_LTR_BUFFER_CONTROL 0x868CU +#define VIDEO_GET_INFO_EU_LTR_PICTURE_CONTROL 0x868DU +#define VIDEO_GET_INFO_EU_LTR_VALIDATION_CONTROL 0x868EU +#define VIDEO_GET_INFO_EU_SEI_PAYLOADTYPE_CONTROL 0x8690U +#define VIDEO_GET_INFO_EU_QP_RANGE_CONTROL 0x8691U +#define VIDEO_GET_INFO_EU_PRIORITY_CONTROL 0x8692U +#define VIDEO_GET_INFO_EU_START_OR_STOP_LAYER_CONTROL 0x8693U +#endif + +/*! @brief Video device class-specific request GET DEF COMMAND */ +#define VIDEO_GET_DEF_PU_BACKLIGHT_COMPENSATION_CONTROL 0x8721U +#define VIDEO_GET_DEF_PU_BRIGHTNESS_CONTROL 0x8722U +#define VIDEO_GET_DEF_PU_CONTRACT_CONTROL 0x8723U +#define VIDEO_GET_DEF_PU_GAIN_CONTROL 0x8724U +#define VIDEO_GET_DEF_PU_POWER_LINE_FREQUENCY_CONTROL 0x8725U +#define VIDEO_GET_DEF_PU_HUE_CONTROL 0x8726U +#define VIDEO_GET_DEF_PU_SATURATION_CONTROL 0x8727U +#define VIDEO_GET_DEF_PU_SHARRNESS_CONTROL 0x8728U +#define VIDEO_GET_DEF_PU_GAMMA_CONTROL 0x8729U +#define VIDEO_GET_DEF_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x872AU +#define VIDEO_GET_DEF_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x872BU +#define VIDEO_GET_DEF_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x872CU +#define VIDEO_GET_DEF_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x872DU +#define VIDEO_GET_DEF_PU_DIGITAL_MULTIPLIER_CONTROL 0x872EU +#define VIDEO_GET_DEF_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x872FU +#define VIDEO_GET_DEF_PU_HUE_AUTO_CONTROL 0x8730U +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_DEF_PU_CONTRAST_AUTO_CONTROL 0x8731U +#endif + +#define VIDEO_GET_DEF_CT_AE_MODE_CONTROL 0x8742U +#define VIDEO_GET_DEF_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x8744U +#define VIDEO_GET_DEF_CT_FOCUS_ABSOLUTE_CONTROL 0x8746U +#define VIDEO_GET_DEF_CT_FOCUS_RELATIVE_CONTROL 0x8747U +#define VIDEO_GET_DEF_CT_FOCUS_AUTO_CONTROL 0x8748U +#define VIDEO_GET_DEF_CT_IRIS_ABSOLUTE_CONTROL 0x8749U +#define VIDEO_GET_DEF_CT_ZOOM_ABSOLUTE_CONTROL 0x874BU +#define VIDEO_GET_DEF_CT_ZOOM_RELATIVE_CONTROL 0x874CU +#define VIDEO_GET_DEF_CT_PANTILT_ABSOLUTE_CONTROL 0x874DU +#define VIDEO_GET_DEF_CT_PANTILT_RELATIVE_CONTROL 0x874EU +#define VIDEO_GET_DEF_CT_ROLL_ABSOLUTE_CONTROL 0x874FU +#define VIDEO_GET_DEF_CT_ROLL_RELATIVE_CONTROL 0x8750U +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_DEF_CT_FOCUS_SIMPLE_CONTROL 0x8751U +#define VIDEO_GET_DEF_CT_DIGITAL_WINDOW_CONTROL 0x8752U +#define VIDEO_GET_DEF_CT_REGION_OF_INTEREST_CONTROL 0x8753U +#endif + +#define VIDEO_GET_DEF_VS_PROBE_CONTROL 0x8761U +#define VIDEO_GET_DEF_VS_STILL_PROBE_CONTROL 0x8763U +#define VIDEO_GET_DEF_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x8768U +#define VIDEO_GET_DEF_VS_SYNCH_DELAY_CONTROL 0x8769U + +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_GET_DEF_EU_PROFILE_TOOLSET_CONTROL 0x8782U +#define VIDEO_GET_DEF_EU_VIDEO_RESOLUTION_CONTROL 0x8783U +#define VIDEO_GET_DEF_EU_MIN_FRAME_INTERVAL_CONTROL 0x8784U +#define VIDEO_GET_DEF_EU_SLICE_MODE_CONTROL 0x8785U +#define VIDEO_GET_DEF_EU_RATE_CONTROL_MODE_CONTROL 0x8786U +#define VIDEO_GET_DEF_EU_AVERAGE_BITRATE_CONTROL 0x8787U +#define VIDEO_GET_DEF_EU_CPB_SIZE_CONTROL 0x8788U +#define VIDEO_GET_DEF_EU_PEAK_BIT_RATE_CONTROL 0x8789U +#define VIDEO_GET_DEF_EU_QUANTIZATION_PARAMS_CONTROL 0x878AU +#define VIDEO_GET_DEF_EU_LTR_BUFFER_CONTROL 0x878CU +#define VIDEO_GET_DEF_EU_LTR_PICTURE_CONTROL 0x878DU +#define VIDEO_GET_DEF_EU_LTR_VALIDATION_CONTROL 0x878EU +#define VIDEO_GET_DEF_EU_LEVEL_IDC_LIMIT_CONTROL 0x878FU +#define VIDEO_GET_DEF_EU_SEI_PAYLOADTYPE_CONTROL 0x8790U +#define VIDEO_GET_DEF_EU_QP_RANGE_CONTROL 0x8791U +#define VIDEO_GET_DEF_EU_ERROR_RESILIENCY_CONTROL 0x8794U +#endif + +/*! @brief Video device class-specific request SET CUR COMMAND */ +#define VIDEO_SET_CUR_VC_POWER_MODE_CONTROL 0x0101U + +#define VIDEO_SET_CUR_PU_BACKLIGHT_COMPENSATION_CONTROL 0x0121U +#define VIDEO_SET_CUR_PU_BRIGHTNESS_CONTROL 0x0122U +#define VIDEO_SET_CUR_PU_CONTRACT_CONTROL 0x0123U +#define VIDEO_SET_CUR_PU_GAIN_CONTROL 0x0124U +#define VIDEO_SET_CUR_PU_POWER_LINE_FREQUENCY_CONTROL 0x0125U +#define VIDEO_SET_CUR_PU_HUE_CONTROL 0x0126U +#define VIDEO_SET_CUR_PU_SATURATION_CONTROL 0x0127U +#define VIDEO_SET_CUR_PU_SHARRNESS_CONTROL 0x0128U +#define VIDEO_SET_CUR_PU_GAMMA_CONTROL 0x0129U +#define VIDEO_SET_CUR_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x012AU +#define VIDEO_SET_CUR_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x012BU +#define VIDEO_SET_CUR_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x012CU +#define VIDEO_SET_CUR_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x012DU +#define VIDEO_SET_CUR_PU_DIGITAL_MULTIPLIER_CONTROL 0x012EU +#define VIDEO_SET_CUR_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x012FU +#define VIDEO_SET_CUR_PU_HUE_AUTO_CONTROL 0x0130U +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_SET_CUR_PU_CONTRAST_AUTO_CONTROL 0x0131U +#endif + +#define VIDEO_SET_CUR_CT_SCANNING_MODE_CONTROL 0x0141U +#define VIDEO_SET_CUR_CT_AE_MODE_CONTROL 0x0142U +#define VIDEO_SET_CUR_CT_AE_PRIORITY_CONTROL 0x0143U +#define VIDEO_SET_CUR_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x0144U +#define VIDEO_SET_CUR_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x0145U +#define VIDEO_SET_CUR_CT_FOCUS_ABSOLUTE_CONTROL 0x0146U +#define VIDEO_SET_CUR_CT_FOCUS_RELATIVE_CONTROL 0x0147U +#define VIDEO_SET_CUR_CT_FOCUS_AUTO_CONTROL 0x0148U +#define VIDEO_SET_CUR_CT_IRIS_ABSOLUTE_CONTROL 0x0149U +#define VIDEO_SET_CUR_CT_IRIS_RELATIVE_CONTROL 0x014AU +#define VIDEO_SET_CUR_CT_ZOOM_ABSOLUTE_CONTROL 0x014BU +#define VIDEO_SET_CUR_CT_ZOOM_RELATIVE_CONTROL 0x014CU +#define VIDEO_SET_CUR_CT_PANTILT_ABSOLUTE_CONTROL 0x014DU +#define VIDEO_SET_CUR_CT_PANTILT_RELATIVE_CONTROL 0x014EU +#define VIDEO_SET_CUR_CT_ROLL_ABSOLUTE_CONTROL 0x014FU +#define VIDEO_SET_CUR_CT_ROLL_RELATIVE_CONTROL 0x0150U +#define VIDEO_SET_CUR_CT_PRIVACY_CONTROL 0x0151U +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_SET_CUR_CT_FOCUS_SIMPLE_CONTROL 0x0152U +#define VIDEO_SET_CUR_CT_DIGITAL_WINDOW_CONTROL 0x0153U +#define VIDEO_SET_CUR_CT_REGION_OF_INTEREST_CONTROL 0x0154U +#endif + +#define VIDEO_SET_CUR_VS_PROBE_CONTROL 0x0161U +#define VIDEO_SET_CUR_VS_COMMIT_CONTROL 0x0162U +#define VIDEO_SET_CUR_VS_STILL_PROBE_CONTROL 0x0163U +#define VIDEO_SET_CUR_VS_STILL_COMMIT_CONTROL 0x0164U +#define VIDEO_SET_CUR_VS_STILL_IMAGE_TRIGGER_CONTROL 0x0165U +#define VIDEO_SET_CUR_VS_STREAM_ERROR_CODE_CONTROL 0x0166U +#define VIDEO_SET_CUR_VS_GENERATE_KEY_FRAME_CONTROL 0x0167U +#define VIDEO_SET_CUR_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x0168U +#define VIDEO_SET_CUR_VS_SYNCH_DELAY_CONTROL 0x0169U + +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 +#define VIDEO_SET_CUR_EU_SELECT_LAYER_CONTROL 0x0181U +#define VIDEO_SET_CUR_EU_PROFILE_TOOLSET_CONTROL 0x0182U +#define VIDEO_SET_CUR_EU_VIDEO_RESOLUTION_CONTROL 0x0183U +#define VIDEO_SET_CUR_EU_MIN_FRAME_INTERVAL_CONTROL 0x0184U +#define VIDEO_SET_CUR_EU_SLICE_MODE_CONTROL 0x0185U +#define VIDEO_SET_CUR_EU_RATE_CONTROL_MODE_CONTROL 0x0186U +#define VIDEO_SET_CUR_EU_AVERAGE_BITRATE_CONTROL 0x0187U +#define VIDEO_SET_CUR_EU_CPB_SIZE_CONTROL 0x0188U +#define VIDEO_SET_CUR_EU_PEAK_BIT_RATE_CONTROL 0x0189U +#define VIDEO_SET_CUR_EU_QUANTIZATION_PARAMS_CONTROL 0x018AU +#define VIDEO_SET_CUR_EU_SYNC_REF_FRAME_CONTROL 0x018BU +#define VIDEO_SET_CUR_EU_LTR_BUFFER_CONTROL 0x018CU +#define VIDEO_SET_CUR_EU_LTR_PICTURE_CONTROL 0x018DU +#define VIDEO_SET_CUR_EU_LTR_VALIDATION_CONTROL 0x018EU +#define VIDEO_SET_CUR_EU_LEVEL_IDC_LIMIT_CONTROL 0x018FU +#define VIDEO_SET_CUR_EU_SEI_PAYLOADTYPE_CONTROL 0x0190U +#define VIDEO_SET_CUR_EU_QP_RANGE_CONTROL 0x0191U +#define VIDEO_SET_CUR_EU_PRIORITY_CONTROL 0x0192U +#define VIDEO_SET_CUR_EU_START_OR_STOP_LAYER_CONTROL 0x0193U +#define VIDEO_SET_CUR_EU_ERROR_RESILIENCY_CONTROL 0x0194U +#endif + +/*! @brief The payload header structure for MJPEG payload format. */ +struct video_mjpeg_payload_header +{ + uint8_t bHeaderLength; /*!< The payload header length. */ + union + { + uint8_t bmheaderInfo; /*!< The payload header bitmap field. */ + struct + { + uint8_t frameIdentifier : 1U; /*!< Frame Identifier. This bit toggles at each frame start boundary and stays + constant for the rest of the frame.*/ + uint8_t endOfFrame : 1U; /*!< End of Frame. This bit indicates the end of a video frame and is set in the + last video sample that belongs to a frame.*/ + uint8_t + presentationTimeStamp : 1U; /*!< Presentation Time Stamp. This bit, when set, indicates the presence of + a PTS field.*/ + uint8_t sourceClockReference : 1U; /*!< Source Clock Reference. This bit, when set, indicates the presence + of a SCR field.*/ + uint8_t reserved : 1U; /*!< Reserved. Set to 0. */ + uint8_t stillImage : 1U; /*!< Still Image. This bit, when set, identifies a video sample that belongs to a + still image.*/ + uint8_t errorBit : 1U; /*!< Error Bit. This bit, when set, indicates an error in the device streaming.*/ + uint8_t endOfHeader : 1U; /*!< End of Header. This bit, when set, indicates the end of the BFH fields.*/ + } headerInfoBits; + struct + { + uint8_t FID : 1U; /*!< Frame Identifier. This bit toggles at each frame start boundary and stays constant + for the rest of the frame.*/ + uint8_t EOI : 1U; /*!< End of Frame. This bit indicates the end of a video frame and is set in the last + video sample that belongs to a frame.*/ + uint8_t PTS : 1U; /*!< Presentation Time Stamp. This bit, when set, indicates the presence of a PTS field.*/ + uint8_t SCR : 1U; /*!< Source Clock Reference. This bit, when set, indicates the presence of a SCR field.*/ + uint8_t RES : 1U; /*!< Reserved. Set to 0. */ + uint8_t STI : 1U; /*!< Still Image. This bit, when set, identifies a video sample that belongs to a still + image.*/ + uint8_t ERR : 1U; /*!< Error Bit. This bit, when set, indicates an error in the device streaming.*/ + uint8_t EOH : 1U; /*!< End of Header. This bit, when set, indicates the end of the BFH fields.*/ + } headerInfoBitmap; + } headerInfoUnion; + uint32_t dwPresentationTime; /*!< Presentation time stamp (PTS) field.*/ + uint8_t bSourceClockReference[6]; /*!< Source clock reference (SCR) field.*/ +} __packed; + +/*! @brief The Video probe and commit controls structure.*/ +struct video_probe_and_commit_controls +{ + union + { + uint8_t bmHint; /*!< Bit-field control indicating to the function what fields shall be kept fixed. */ + struct + { + uint8_t dwFrameInterval : 1U; /*!< dwFrameInterval field.*/ + uint8_t wKeyFrameRate : 1U; /*!< wKeyFrameRate field.*/ + uint8_t wPFrameRate : 1U; /*!< wPFrameRate field.*/ + uint8_t wCompQuality : 1U; /*!< wCompQuality field.*/ + uint8_t wCompWindowSize : 1U; /*!< wCompWindowSize field.*/ + uint8_t reserved : 3U; /*!< Reserved field.*/ + } hintBitmap; + } hintUnion; + union + { + uint8_t bmHint; /*!< Bit-field control indicating to the function what fields shall be kept fixed. */ + struct + { + uint8_t reserved : 8U; /*!< Reserved field.*/ + } hintBitmap; + } hintUnion1; + uint8_t bFormatIndex; /*!< Video format index from a format descriptor.*/ + uint8_t bFrameIndex; /*!< Video frame index from a frame descriptor.*/ + uint32_t dwFrameInterval; /*!< Frame interval in 100ns units.*/ + uint16_t wKeyFrameRate; /*!< Key frame rate in key-frame per video-frame units.*/ + uint16_t wPFrameRate; /*!< PFrame rate in PFrame/key frame units.*/ + uint16_t wCompQuality; /*!< Compression quality control in abstract units 0U (lowest) to 10000U (highest).*/ + uint16_t wCompWindowSize; /*!< Window size for average bit rate control.*/ + uint16_t wDelay; /*!< Internal video streaming interface latency in ms from video data capture to presentation on + the USB.*/ + uint32_t dwMaxVideoFrameSize; /*!< Maximum video frame or codec-specific segment size in bytes.*/ + uint32_t dwMaxPayloadTransferSize; /*!< Specifies the maximum number of bytes that the device can transmit or + receive in a single payload transfer.*/ + uint32_t dwClockFrequency; /*!< The device clock frequency in Hz for the specified format. This specifies the + units used for the time information fields in the Video Payload Headers in the data + stream.*/ + uint8_t bmFramingInfo; /*!< Bit-field control supporting the following values: D0 Frame ID, D1 EOF.*/ + uint8_t bPreferedVersion; /*!< The preferred payload format version supported by the host or device for the + specified bFormatIndex value.*/ + uint8_t bMinVersion; /*!< The minimum payload format version supported by the device for the specified bFormatIndex + value.*/ + uint8_t bMaxVersion; /*!< The maximum payload format version supported by the device for the specified bFormatIndex + value.*/ +#if defined(USB_DEVICE_VIDEO_CLASS_VERSION_1_5) && USB_DEVICE_VIDEO_CLASS_VERSION_1_5 + uint8_t bUsage; /*!< This bitmap enables features reported by the bmUsages field of the Video Frame Descriptor.*/ + uint8_t + bBitDepthLuma; /*!< Represents bit_depth_luma_minus8 + 8U, which must be the same as bit_depth_chroma_minus8 + + 8.*/ + uint8_t bmSettings; /*!< A bitmap of flags that is used to discover and control specific features of a temporally + encoded video stream.*/ + uint8_t bMaxNumberOfRefFramesPlus1; /*!< Host indicates the maximum number of frames stored for use as references.*/ + uint16_t bmRateControlModes; /*!< This field contains 4U sub-fields, each of which is a 4U bit number.*/ + uint64_t bmLayoutPerStream; /*!< This field contains 4U sub-fields, each of which is a 2U byte number.*/ +#endif +} __packed; + +/*! @brief The Video still probe and still commit controls structure.*/ +struct video_still_probe_and_commit_controls +{ + uint8_t bFormatIndex; /*!< Video format index from a format descriptor.*/ + uint8_t bFrameIndex; /*!< Video frame index from a frame descriptor.*/ + uint8_t bCompressionIndex; /*!< Compression index from a frame descriptor.*/ + uint32_t dwMaxVideoFrameSize; /*!< Maximum still image size in bytes.*/ + uint32_t dwMaxPayloadTransferSize; /*!< Specifies the maximum number of bytes that the device can transmit or + receive in a single payload transfer.*/ +} __packed; + +void usbd_video_isoch_in(uint8_t ep); +void usbd_video_class_init(const char *name,uint8_t in_ep); +#ifdef __cplusplus +} +#endif + +#endif /* USB_VIDEO_H_ */ diff --git a/components/usb_stack/class/webusb/usbd_webusb.c b/components/usb_stack/class/webusb/usbd_webusb.c new file mode 100644 index 00000000..dfa72a4f --- /dev/null +++ b/components/usb_stack/class/webusb/usbd_webusb.c @@ -0,0 +1,2 @@ +#include "usbd_core.h" +#include "usbd_webusb.h" \ No newline at end of file diff --git a/components/usb_stack/class/webusb/usbd_webusb.h b/components/usb_stack/class/webusb/usbd_webusb.h new file mode 100644 index 00000000..763b56b4 --- /dev/null +++ b/components/usb_stack/class/webusb/usbd_webusb.h @@ -0,0 +1,37 @@ +#ifndef _USBD_WEBUSB_H +#define _USBD_WEBUSB_H + +/* WebUSB Descriptor Types */ +#define WEBUSB_DESCRIPTOR_SET_HEADER_TYPE 0x00 +#define WEBUSB_CONFIGURATION_SUBSET_HEADER_TYPE 0x01 +#define WEBUSB_FUNCTION_SUBSET_HEADER_TYPE 0x02 +#define WEBUSB_URL_TYPE 0x03 + +/* WebUSB Request Codes */ +#define WEBUSB_REQUEST_GET_URL 0x02 + +/* bScheme in URL descriptor */ +#define WEBUSB_URL_SCHEME_HTTP 0x00 +#define WEBUSB_URL_SCHEME_HTTPS 0x01 + +/* WebUSB Descriptor sizes */ +#define WEBUSB_DESCRIPTOR_SET_HEADER_SIZE 5 +#define WEBUSB_CONFIGURATION_SUBSET_HEADER_SIZE 4 +#define WEBUSB_FUNCTION_SUBSET_HEADER_SIZE 3 + +/* BOS Capability webusb */ +struct usb_bos_webusb_platform_capability_descriptor { + struct usb_bos_capability_descriptor webusb_platform; + uint16_t bcdVersion; + uint8_t bVendorCode; + uint8_t iLandingPage; +} __packed; + +struct webusb_url_descriptor{ + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bScheme; + char URL[]; +} __packed; + +#endif \ No newline at end of file diff --git a/components/usb_stack/class/winusb/usbd_winusb.c b/components/usb_stack/class/winusb/usbd_winusb.c new file mode 100644 index 00000000..adad4899 --- /dev/null +++ b/components/usb_stack/class/winusb/usbd_winusb.c @@ -0,0 +1,289 @@ +#include "usbd_core.h" + +#define WCID_VENDOR_CODE 0x17 + +__ALIGN_BEGIN const uint8_t WCID_StringDescriptor_MSOS [18] __ALIGN_END = { + /////////////////////////////////////// + /// MS OS string descriptor + /////////////////////////////////////// + 0x12, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + /* MSFT100 */ + 'M', 0x00, 'S', 0x00, 'F', 0x00, 'T', 0x00, /* wcChar_7 */ + '1', 0x00, '0', 0x00, '0', 0x00, /* wcChar_7 */ + WCID_VENDOR_CODE, /* bVendorCode */ + 0x00, /* bReserved */ +}; +__ALIGN_BEGIN const uint8_t WINUSB_WCIDDescriptor [88] __ALIGN_END = { + /////////////////////////////////////// + /// WCID descriptor + /////////////////////////////////////// + 0x58, 0x00, 0x00, 0x00, /* dwLength */ + 0x00, 0x01, /* bcdVersion */ + 0x04, 0x00, /* wIndex */ + 0x03, /* bCount */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* bReserved_7 */ + + /////////////////////////////////////// + /// WCID function descriptor + /////////////////////////////////////// + 0x00, /* bFirstInterfaceNumber */ + 0x01, /* bReserved */ + /* WINUSB */ + 'W', 'I', 'N', 'U', 'S', 'B', 0x00, 0x00, /* cCID_8 */ + /* */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* cSubCID_8 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* bReserved_6 */ + + /////////////////////////////////////// + /// WCID function descriptor + /////////////////////////////////////// + 0x01, /* bFirstInterfaceNumber */ + 0x01, /* bReserved */ + /* WINUSB */ + 'W', 'I', 'N', 'U', 'S', 'B', 0x00, 0x00, /* cCID_8 */ + /* */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* cSubCID_8 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* bReserved_6 */ + + /////////////////////////////////////// + /// WCID function descriptor + /////////////////////////////////////// + 0x02, /* bFirstInterfaceNumber */ + 0x01, /* bReserved */ + /* WINUSB */ + 'W', 'I', 'N', 'U', 'S', 'B', 0x00, 0x00, /* cCID_8 */ + /* */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* cSubCID_8 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* bReserved_6 */ +}; +__ALIGN_BEGIN const uint8_t WINUSB_IF0_WCIDProperties [142] __ALIGN_END = { + /////////////////////////////////////// + /// WCID property descriptor + /////////////////////////////////////// + 0x8e, 0x00, 0x00, 0x00, /* dwLength */ + 0x00, 0x01, /* bcdVersion */ + 0x05, 0x00, /* wIndex */ + 0x01, 0x00, /* wCount */ + + /////////////////////////////////////// + /// registry propter descriptor + /////////////////////////////////////// + 0x84, 0x00, 0x00, 0x00, /* dwSize */ + 0x01, 0x00, 0x00, 0x00, /* dwPropertyDataType */ + 0x28, 0x00, /* wPropertyNameLength */ + /* DeviceInterfaceGUID */ + 'D', 0x00, 'e', 0x00, 'v', 0x00, 'i', 0x00, /* wcName_20 */ + 'c', 0x00, 'e', 0x00, 'I', 0x00, 'n', 0x00, /* wcName_20 */ + 't', 0x00, 'e', 0x00, 'r', 0x00, 'f', 0x00, /* wcName_20 */ + 'a', 0x00, 'c', 0x00, 'e', 0x00, 'G', 0x00, /* wcName_20 */ + 'U', 0x00, 'I', 0x00, 'D', 0x00, 0x00, 0x00, /* wcName_20 */ + 0x4e, 0x00, 0x00, 0x00, /* dwPropertyDataLength */ + /* {1D4B2365-4749-48EA-B38A-7C6FDDDD7E26} */ + '{', 0x00, '1', 0x00, 'D', 0x00, '4', 0x00, /* wcData_39 */ + 'B', 0x00, '2', 0x00, '3', 0x00, '6', 0x00, /* wcData_39 */ + '5', 0x00, '-', 0x00, '4', 0x00, '7', 0x00, /* wcData_39 */ + '4', 0x00, '9', 0x00, '-', 0x00, '4', 0x00, /* wcData_39 */ + '8', 0x00, 'E', 0x00, 'A', 0x00, '-', 0x00, /* wcData_39 */ + 'B', 0x00, '3', 0x00, '8', 0x00, 'A', 0x00, /* wcData_39 */ + '-', 0x00, '7', 0x00, 'C', 0x00, '6', 0x00, /* wcData_39 */ + 'F', 0x00, 'D', 0x00, 'D', 0x00, 'D', 0x00, /* wcData_39 */ + 'D', 0x00, '7', 0x00, 'E', 0x00, '2', 0x00, /* wcData_39 */ + '6', 0x00, '}', 0x00, 0x00, 0x00, /* wcData_39 */ +}; + +struct usb_msosv1_descriptor msosv1_desc = +{ + .string = (uint8_t*)WCID_StringDescriptor_MSOS, + .string_len = 18, + .vendor_code = 0x03, + .compat_id = (uint8_t*)WINUSB_WCIDDescriptor, + .compat_id_len = sizeof(WINUSB_WCIDDescriptor) +}; + +#define WINUSB20_WCID_DESC_SET_SIZE (490) +__ALIGN_BEGIN const uint8_t WINUSB20_WCIDDescriptorSet [490] __ALIGN_END = { + /////////////////////////////////////// + /// WCID20 descriptor set descriptor + /////////////////////////////////////// + 0x0a, 0x00, /* wLength */ + 0x00, 0x00, /* wDescriptorType */ + 0x00, 0x00, 0x03, 0x06, /* dwWindowsVersion */ + 0xea, 0x01, /* wDescriptorSetTotalLength */ + + /////////////////////////////////////// + /// WCID20 function subset descriptor + /////////////////////////////////////// + 0x08, 0x00, /* wLength */ + 0x02, 0x00, /* wDescriptorType */ + 0x00, /* bFirstInterface */ + 0x00, /* bReserved */ + 0xa0, 0x00, /* wSubsetLength */ + + /////////////////////////////////////// + /// WCID20 compatible ID descriptor + /////////////////////////////////////// + 0x14, 0x00, /* wLength */ + 0x03, 0x00, /* wDescriptorType */ + /* WINUSB */ + 'W', 'I', 'N', 'U', 'S', 'B', 0x00, 0x00, /* cCID_8 */ + /* */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* cSubCID_8 */ + + /////////////////////////////////////// + /// WCID20 registry property descriptor + /////////////////////////////////////// + 0x84, 0x00, /* wLength */ + 0x04, 0x00, /* wDescriptorType */ + 0x07, 0x00, /* wPropertyDataType */ + 0x2a, 0x00, /* wPropertyNameLength */ + /* DeviceInterfaceGUIDs */ + 'D', 0x00, 'e', 0x00, 'v', 0x00, 'i', 0x00, /* wcPropertyName_21 */ + 'c', 0x00, 'e', 0x00, 'I', 0x00, 'n', 0x00, /* wcPropertyName_21 */ + 't', 0x00, 'e', 0x00, 'r', 0x00, 'f', 0x00, /* wcPropertyName_21 */ + 'a', 0x00, 'c', 0x00, 'e', 0x00, 'G', 0x00, /* wcPropertyName_21 */ + 'U', 0x00, 'I', 0x00, 'D', 0x00, 's', 0x00, /* wcPropertyName_21 */ + 0x00, 0x00, /* wcPropertyName_21 */ + 0x50, 0x00, /* wPropertyDataLength */ + /* {1D4B2365-4749-48EA-B38A-7C6FDDDD7E26} */ + '{', 0x00, '1', 0x00, 'D', 0x00, '4', 0x00, /* wcPropertyData_40 */ + 'B', 0x00, '2', 0x00, '3', 0x00, '6', 0x00, /* wcPropertyData_40 */ + '5', 0x00, '-', 0x00, '4', 0x00, '7', 0x00, /* wcPropertyData_40 */ + '4', 0x00, '9', 0x00, '-', 0x00, '4', 0x00, /* wcPropertyData_40 */ + '8', 0x00, 'E', 0x00, 'A', 0x00, '-', 0x00, /* wcPropertyData_40 */ + 'B', 0x00, '3', 0x00, '8', 0x00, 'A', 0x00, /* wcPropertyData_40 */ + '-', 0x00, '7', 0x00, 'C', 0x00, '6', 0x00, /* wcPropertyData_40 */ + 'F', 0x00, 'D', 0x00, 'D', 0x00, 'D', 0x00, /* wcPropertyData_40 */ + 'D', 0x00, '7', 0x00, 'E', 0x00, '2', 0x00, /* wcPropertyData_40 */ + '6', 0x00, '}', 0x00, 0x00, 0x00, 0x00, 0x00, /* wcPropertyData_40 */ + + /////////////////////////////////////// + /// WCID20 function subset descriptor + /////////////////////////////////////// + 0x08, 0x00, /* wLength */ + 0x02, 0x00, /* wDescriptorType */ + 0x01, /* bFirstInterface */ + 0x00, /* bReserved */ + 0xa0, 0x00, /* wSubsetLength */ + + /////////////////////////////////////// + /// WCID20 compatible ID descriptor + /////////////////////////////////////// + 0x14, 0x00, /* wLength */ + 0x03, 0x00, /* wDescriptorType */ + /* WINUSB */ + 'W', 'I', 'N', 'U', 'S', 'B', 0x00, 0x00, /* cCID_8 */ + /* */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* cSubCID_8 */ + + /////////////////////////////////////// + /// WCID20 registry property descriptor + /////////////////////////////////////// + 0x84, 0x00, /* wLength */ + 0x04, 0x00, /* wDescriptorType */ + 0x07, 0x00, /* wPropertyDataType */ + 0x2a, 0x00, /* wPropertyNameLength */ + /* DeviceInterfaceGUIDs */ + 'D', 0x00, 'e', 0x00, 'v', 0x00, 'i', 0x00, /* wcPropertyName_21 */ + 'c', 0x00, 'e', 0x00, 'I', 0x00, 'n', 0x00, /* wcPropertyName_21 */ + 't', 0x00, 'e', 0x00, 'r', 0x00, 'f', 0x00, /* wcPropertyName_21 */ + 'a', 0x00, 'c', 0x00, 'e', 0x00, 'G', 0x00, /* wcPropertyName_21 */ + 'U', 0x00, 'I', 0x00, 'D', 0x00, 's', 0x00, /* wcPropertyName_21 */ + 0x00, 0x00, /* wcPropertyName_21 */ + 0x50, 0x00, /* wPropertyDataLength */ + /* {1D4B2365-4749-48EA-B38A-7C6FDDDD7E26} */ + '{', 0x00, '1', 0x00, 'D', 0x00, '4', 0x00, /* wcPropertyData_40 */ + 'B', 0x00, '2', 0x00, '3', 0x00, '6', 0x00, /* wcPropertyData_40 */ + '5', 0x00, '-', 0x00, '4', 0x00, '7', 0x00, /* wcPropertyData_40 */ + '4', 0x00, '9', 0x00, '-', 0x00, '4', 0x00, /* wcPropertyData_40 */ + '8', 0x00, 'E', 0x00, 'A', 0x00, '-', 0x00, /* wcPropertyData_40 */ + 'B', 0x00, '3', 0x00, '8', 0x00, 'A', 0x00, /* wcPropertyData_40 */ + '-', 0x00, '7', 0x00, 'C', 0x00, '6', 0x00, /* wcPropertyData_40 */ + 'F', 0x00, 'D', 0x00, 'D', 0x00, 'D', 0x00, /* wcPropertyData_40 */ + 'D', 0x00, '7', 0x00, 'E', 0x00, '2', 0x00, /* wcPropertyData_40 */ + '6', 0x00, '}', 0x00, 0x00, 0x00, 0x00, 0x00, /* wcPropertyData_40 */ + + /////////////////////////////////////// + /// WCID20 function subset descriptor + /////////////////////////////////////// + 0x08, 0x00, /* wLength */ + 0x02, 0x00, /* wDescriptorType */ + 0x02, /* bFirstInterface */ + 0x00, /* bReserved */ + 0xa0, 0x00, /* wSubsetLength */ + + /////////////////////////////////////// + /// WCID20 compatible ID descriptor + /////////////////////////////////////// + 0x14, 0x00, /* wLength */ + 0x03, 0x00, /* wDescriptorType */ + /* WINUSB */ + 'W', 'I', 'N', 'U', 'S', 'B', 0x00, 0x00, /* cCID_8 */ + /* */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* cSubCID_8 */ + + /////////////////////////////////////// + /// WCID20 registry property descriptor + /////////////////////////////////////// + 0x84, 0x00, /* wLength */ + 0x04, 0x00, /* wDescriptorType */ + 0x07, 0x00, /* wPropertyDataType */ + 0x2a, 0x00, /* wPropertyNameLength */ + /* DeviceInterfaceGUIDs */ + 'D', 0x00, 'e', 0x00, 'v', 0x00, 'i', 0x00, /* wcPropertyName_21 */ + 'c', 0x00, 'e', 0x00, 'I', 0x00, 'n', 0x00, /* wcPropertyName_21 */ + 't', 0x00, 'e', 0x00, 'r', 0x00, 'f', 0x00, /* wcPropertyName_21 */ + 'a', 0x00, 'c', 0x00, 'e', 0x00, 'G', 0x00, /* wcPropertyName_21 */ + 'U', 0x00, 'I', 0x00, 'D', 0x00, 's', 0x00, /* wcPropertyName_21 */ + 0x00, 0x00, /* wcPropertyName_21 */ + 0x50, 0x00, /* wPropertyDataLength */ + /* {1D4B2365-4749-48EA-B38A-7C6FDDDD7E26} */ + '{', 0x00, '1', 0x00, 'D', 0x00, '4', 0x00, /* wcPropertyData_40 */ + 'B', 0x00, '2', 0x00, '3', 0x00, '6', 0x00, /* wcPropertyData_40 */ + '5', 0x00, '-', 0x00, '4', 0x00, '7', 0x00, /* wcPropertyData_40 */ + '4', 0x00, '9', 0x00, '-', 0x00, '4', 0x00, /* wcPropertyData_40 */ + '8', 0x00, 'E', 0x00, 'A', 0x00, '-', 0x00, /* wcPropertyData_40 */ + 'B', 0x00, '3', 0x00, '8', 0x00, 'A', 0x00, /* wcPropertyData_40 */ + '-', 0x00, '7', 0x00, 'C', 0x00, '6', 0x00, /* wcPropertyData_40 */ + 'F', 0x00, 'D', 0x00, 'D', 0x00, 'D', 0x00, /* wcPropertyData_40 */ + 'D', 0x00, '7', 0x00, 'E', 0x00, '2', 0x00, /* wcPropertyData_40 */ + '6', 0x00, '}', 0x00, 0x00, 0x00, 0x00, 0x00, /* wcPropertyData_40 */ +}; +struct usb_msosv2_descriptor msosv2_desc = +{ + .compat_id = (uint8_t*)WINUSB20_WCIDDescriptorSet, + .compat_id_len = 490 +}; + +__ALIGN_BEGIN const uint8_t WINUSB20_WCIDBOS [33] __ALIGN_END = { + /////////////////////////////////////// + /// WCID20 BOS descriptor + /////////////////////////////////////// + 0x05, /* bLength */ + USB_DESCRIPTOR_TYPE_BINARY_OBJECT_STORE, /* bDescriptorType */ + 0x21, 0x00, /* wTotalLength */ + 0x01, /* bNumDeviceCaps */ + + /////////////////////////////////////// + /// WCID20 device capability descriptor + /////////////////////////////////////// + 0x1c, /* bLength */ + 0x10, /* bDescriptorType */ + 0x05, /* bDevCapabilityType */ + 0x00, /* bReserved */ + 0xdf, 0x60, 0xdd, 0xd8, 0x89, 0x45, 0xc7, 0x4c, /* bPlatformCapabilityUUID_16 */ + 0x9c, 0xd2, 0x65, 0x9d, 0x9e, 0x64, 0x8a, 0x9f, /* bPlatformCapabilityUUID_16 */ + 0x00, 0x00, 0x03, 0x06, /* dwWindowsVersion */ + LO_BYTE(WINUSB20_WCID_DESC_SET_SIZE), HI_BYTE(WINUSB20_WCID_DESC_SET_SIZE),/* wDescriptorSetTotalLength */ + WCID_VENDOR_CODE, /* bVendorCode */ + 0x00, /* bAltEnumCode */ +}; + +// static struct usb_bos_descriptor wcid_bos= +// { +// .bos_id = (uint8_t*)WINUSB20_WCIDBOS, +// .bos_id_len = 33 +// }; + + + diff --git a/components/usb_stack/class/winusb/usbd_winusb.h b/components/usb_stack/class/winusb/usbd_winusb.h new file mode 100644 index 00000000..c8d8d2b1 --- /dev/null +++ b/components/usb_stack/class/winusb/usbd_winusb.h @@ -0,0 +1,57 @@ +#ifndef _USBD_WINUSB_H +#define _USBD_WINUSB_H + +/* WinUSB Microsoft OS 2.0 descriptor request codes */ +#define WINUSB_REQUEST_GET_DESCRIPTOR_SET 0x07 +#define WINUSB_REQUEST_SET_ALT_ENUM 0x08 + +/* WinUSB Microsoft OS 2.0 descriptor sizes */ +#define WINUSB_DESCRIPTOR_SET_HEADER_SIZE 10 +#define WINUSB_FUNCTION_SUBSET_HEADER_SIZE 8 +#define WINUSB_FEATURE_COMPATIBLE_ID_SIZE 20 + + +/* WinUSB Microsoft OS 2.0 Descriptor Types */ +#define WINUSB_SET_HEADER_DESCRIPTOR_TYPE 0x00 +#define WINUSB_SUBSET_HEADER_CONFIGURATION_TYPE 0x01 +#define WINUSB_SUBSET_HEADER_FUNCTION_TYPE 0x02 +#define WINUSB_FEATURE_COMPATIBLE_ID_TYPE 0x03 +#define WINUSB_FEATURE_REG_PROPERTY_TYPE 0x04 +#define WINUSB_FEATURE_MIN_RESUME_TIME_TYPE 0x05 +#define WINUSB_FEATURE_MODEL_ID_TYPE 0x06 +#define WINUSB_FEATURE_CCGP_DEVICE_TYPE 0x07 + + +#define WINUSB_PROP_DATA_TYPE_REG_SZ 0x01 +#define WINUSB_PROP_DATA_TYPE_REG_MULTI_SZ 0x07 + +/* WebUSB Descriptor Types */ +#define WEBUSB_DESCRIPTOR_SET_HEADER_TYPE 0x00 +#define WEBUSB_CONFIGURATION_SUBSET_HEADER_TYPE 0x01 +#define WEBUSB_FUNCTION_SUBSET_HEADER_TYPE 0x02 +#define WEBUSB_URL_TYPE 0x03 + +/* WebUSB Request Codes */ +#define WEBUSB_REQUEST_GET_URL 0x02 + +/* bScheme in URL descriptor */ +#define WEBUSB_URL_SCHEME_HTTP 0x00 +#define WEBUSB_URL_SCHEME_HTTPS 0x01 + +/* WebUSB Descriptor sizes */ +#define WEBUSB_DESCRIPTOR_SET_HEADER_SIZE 5 +#define WEBUSB_CONFIGURATION_SUBSET_HEADER_SIZE 4 +#define WEBUSB_FUNCTION_SUBSET_HEADER_SIZE 3 + + +/* WinUSB Microsoft OS 2.0 descriptor Platform Capability Descriptor */ +struct usb_bos_winusb_platform_capability_descriptor { + struct usb_bos_capability_descriptor winusb_platform; + uint32_t dwWindowsVersion; + uint16_t wMSOSDescriptorSetTotalLength; + uint8_t bMS_VendorCode; + uint8_t bAltEnumCode; +} __packed; + + +#endif \ No newline at end of file diff --git a/components/usb_stack/common/usb_dc.h b/components/usb_stack/common/usb_dc.h new file mode 100644 index 00000000..0f77b89f --- /dev/null +++ b/components/usb_stack/common/usb_dc.h @@ -0,0 +1,180 @@ +#ifndef _USB_DC_H +#define _USB_DC_H + +#include "stdint.h" +#include "bflb_platform.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief USB Device Controller API + * @defgroup _usb_device_controller_api USB Device Controller API + * @{ + */ +/**< maximum packet size (MPS) for EP 0 */ +#define USB_CTRL_EP_MPS 64 +/** + * USB endpoint Transfer Type mask. + */ +#define USBD_EP_TYPE_CTRL 0 +#define USBD_EP_TYPE_ISOC 1 +#define USBD_EP_TYPE_BULK 2 +#define USBD_EP_TYPE_INTR 3 +#define USBD_EP_TYPE_MASK 3 + +/* Default USB control EP, always 0 and 0x80 */ +#define USB_CONTROL_OUT_EP0 0 +#define USB_CONTROL_IN_EP0 0x80 + +/** + * @brief USB Endpoint Transfer Type + */ +enum usb_dc_ep_transfer_type { + /** Control type endpoint */ + USB_DC_EP_CONTROL = 0, + /** Isochronous type endpoint */ + USB_DC_EP_ISOCHRONOUS, + /** Bulk type endpoint */ + USB_DC_EP_BULK, + /** Interrupt type endpoint */ + USB_DC_EP_INTERRUPT +}; + +/** + * @brief USB Endpoint Configuration. + * + * Structure containing the USB endpoint configuration. + */ +struct usbd_endpoint_cfg { + /** The number associated with the EP in the device + * configuration structure + * IN EP = 0x80 | \ + * OUT EP = 0x00 | \ + */ + uint8_t ep_addr; + /** Endpoint max packet size */ + uint16_t ep_mps; + /** Endpoint Transfer Type. + * May be Bulk, Interrupt, Control or Isochronous + */ + enum usb_dc_ep_transfer_type ep_type; +}; + +/** + * @brief USB Device Core Layer API + * @defgroup _usb_device_core_api USB Device Core API + * @{ + */ + +/** + * @brief Set USB device address + * + * @param[in] addr Device address + * + * @return 0 on success, negative errno code on fail. + */ +int usbd_set_address(const uint8_t addr); + +/* + * @brief configure and enable endpoint + * + * This function sets endpoint configuration according to one specified in USB + * endpoint descriptor and then enables it for data transfers. + * + * @param [in] ep_desc Endpoint descriptor byte array + * + * @return true if successfully configured and enabled + */ +int usbd_ep_open(const struct usbd_endpoint_cfg *ep_cfg); +/** + * @brief Disable the selected endpoint + * + * Function to disable the selected endpoint. Upon success interrupts are + * disabled for the corresponding endpoint and the endpoint is no longer able + * for transmitting/receiving data. + * + * @param[in] ep Endpoint address corresponding to the one + * listed in the device configuration table + * + * @return 0 on success, negative errno code on fail. + */ +int usbd_ep_close(const uint8_t ep); +/** + * @brief Set stall condition for the selected endpoint + * + * @param[in] ep Endpoint address corresponding to the one + * listed in the device configuration table + * + * @return 0 on success, negative errno code on fail. + */ +int usbd_ep_set_stall(const uint8_t ep); +/** + * @brief Clear stall condition for the selected endpoint + * + * @param[in] ep Endpoint address corresponding to the one + * listed in the device configuration table + * + * @return 0 on success, negative errno code on fail. + */ +int usbd_ep_clear_stall(const uint8_t ep); +/** + * @brief Check if the selected endpoint is stalled + * + * @param[in] ep Endpoint address corresponding to the one + * listed in the device configuration table + * @param[out] stalled Endpoint stall status + * + * @return 0 on success, negative errno code on fail. + */ +int usbd_ep_is_stalled(const uint8_t ep, uint8_t *stalled); +/** + * @brief Write data to the specified endpoint + * + * This function is called to write data to the specified endpoint. The + * supplied usbd_endpoint_callback function will be called when data is transmitted + * out. + * + * @param[in] ep Endpoint address corresponding to the one + * listed in the device configuration table + * @param[in] data Pointer to data to write + * @param[in] data_len Length of the data requested to write. This may + * be zero for a zero length status packet. + * @param[out] ret_bytes Bytes scheduled for transmission. This value + * may be NULL if the application expects all + * bytes to be written + * + * @return 0 on success, negative errno code on fail. + */ +int usbd_ep_write(const uint8_t ep, const uint8_t *data, uint32_t data_len, uint32_t *ret_bytes); +/** + * @brief Read data from the specified endpoint + * + * This is similar to usb_dc_ep_read, the difference being that, it doesn't + * clear the endpoint NAKs so that the consumer is not bogged down by further + * upcalls till he is done with the processing of the data. The caller should + * reactivate ep by invoking usb_dc_ep_read_continue() do so. + * + * @param[in] ep Endpoint address corresponding to the one + * listed in the device configuration table + * @param[in] data Pointer to data buffer to write to + * @param[in] max_data_len Max length of data to read + * @param[out] read_bytes Number of bytes read. If data is NULL and + * max_data_len is 0 the number of bytes + * available for read should be returned. + * + * @return 0 on success, negative errno code on fail. + */ +int usbd_ep_read(const uint8_t ep, uint8_t *data, uint32_t max_data_len,uint32_t *read_bytes); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/components/usb_stack/common/usb_def.h b/components/usb_stack/common/usb_def.h new file mode 100644 index 00000000..2599049d --- /dev/null +++ b/components/usb_stack/common/usb_def.h @@ -0,0 +1,534 @@ +#ifndef USB_REQUEST_H +#define USB_REQUEST_H + +/* Useful define */ +#define USB_1_1 0x0110 +#define USB_2_0 0x0200 +/* Set USB version to 2.1 so that the host will request the BOS descriptor */ +#define USB_2_1 0x0210 + +// USB Speed +#define USB_SPEED_LOW 0U +#define USB_SPEED_FULL 1U +#define USB_SPEED_HIGH 2U + +// USB PID Types +#define USB_PID_RESERVED 0U +#define USB_PID_OUT 1U +#define USB_PID_ACK 2U +#define USB_PID_DATA0 3U +#define USB_PID_PING 4U +#define USB_PID_SOF 5U +#define USB_PID_DATA2 7U +#define USB_PID_NYET 6U +#define USB_PID_SPLIT 8U +#define USB_PID_IN 9U +#define USB_PID_NAK 10U +#define USB_PID_DATA1 11U +#define USB_PID_PRE 12U +#define USB_PID_ERR 12U +#define USB_PID_SETUP 13U +#define USB_PID_STALL 14U +#define USB_PID_MDATA 15U + +// bmRequestType.Dir +#define USB_REQUEST_HOST_TO_DEVICE 0U +#define USB_REQUEST_DEVICE_TO_HOST 1U + +// bmRequestType.Type +#define USB_REQUEST_STANDARD 0U +#define USB_REQUEST_CLASS 1U +#define USB_REQUEST_VENDOR 2U +#define USB_REQUEST_RESERVED 3U + +// bmRequestType.Recipient +#define USB_REQUEST_TO_DEVICE 0U +#define USB_REQUEST_TO_INTERFACE 1U +#define USB_REQUEST_TO_ENDPOINT 2U +#define USB_REQUEST_TO_OTHER 3U + +/* USB Standard Request Codes */ +#define USB_REQUEST_GET_STATUS 0x00 +#define USB_REQUEST_CLEAR_FEATURE 0x01 +#define USB_REQUEST_SET_FEATURE 0x03 +#define USB_REQUEST_SET_ADDRESS 0x05 +#define USB_REQUEST_GET_DESCRIPTOR 0x06 +#define USB_REQUEST_SET_DESCRIPTOR 0x07 +#define USB_REQUEST_GET_CONFIGURATION 0x08 +#define USB_REQUEST_SET_CONFIGURATION 0x09 +#define USB_REQUEST_GET_INTERFACE 0x0A +#define USB_REQUEST_SET_INTERFACE 0x0B +#define USB_REQUEST_SYNCH_FRAME 0x0C +#define USB_REQUEST_SET_ENCRYPTION 0x0D +#define USB_REQUEST_GET_ENCRYPTION 0x0E +#define USB_REQUEST_RPIPE_ABORT 0x0E +#define USB_REQUEST_SET_HANDSHAKE 0x0F +#define USB_REQUEST_RPIPE_RESET 0x0F +#define USB_REQUEST_GET_HANDSHAKE 0x10 +#define USB_REQUEST_SET_CONNECTION 0x11 +#define USB_REQUEST_SET_SECURITY_DATA 0x12 +#define USB_REQUEST_GET_SECURITY_DATA 0x13 +#define USB_REQUEST_SET_WUSB_DATA 0x14 +#define USB_REQUEST_LOOPBACK_DATA_WRITE 0x15 +#define USB_REQUEST_LOOPBACK_DATA_READ 0x16 +#define USB_REQUEST_SET_INTERFACE_DS 0x17 + +/* USB GET_STATUS Bit Values */ +#define USB_GETSTATUS_SELF_POWERED 0x01 +#define USB_GETSTATUS_REMOTE_WAKEUP 0x02 +#define USB_GETSTATUS_ENDPOINT_STALL 0x01 + +/* USB Standard Feature selectors */ +#define USB_FEATURE_ENDPOINT_STALL 0 +#define USB_FEATURE_REMOTE_WAKEUP 1 +#define USB_FEATURE_TEST_MODE 2 + +/* Descriptor size in bytes */ +#define USB_DEVICE_DESC_SIZE 0x12 +#define USB_CONFIGURATION_DESC_SIZE 0x09 +#define USB_INTERFACE_DESC_SIZE 0x09 +#define USB_ENDPOINT_DESC_SIZE 0x07 +#define USB_LANGID_STRING_DESC_SIZE 0x04 +#define USB_OTHER_SPEED_DESC_SIZE 0x09 +#define USB_DEVICE_QUAL_DESC_SIZE 0x0A +#define USB_INTERFACE_ASSOC_DESC_SIZE 0x08 +#define USB_FUNCTION_DESC_SIZE 0x03 +#define USB_OTG_DESC_SIZE 0x03 + +/* USB Descriptor Types */ +#define USB_DESCRIPTOR_TYPE_DEVICE 0x01U +#define USB_DESCRIPTOR_TYPE_CONFIGURATION 0x02U +#define USB_DESCRIPTOR_TYPE_STRING 0x03U +#define USB_DESCRIPTOR_TYPE_INTERFACE 0x04U +#define USB_DESCRIPTOR_TYPE_ENDPOINT 0x05U +#define USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER 0x06U +#define USB_DESCRIPTOR_TYPE_OTHER_SPEED 0x07U +#define USB_DESCRIPTOR_TYPE_INTERFACE_POWER 0x08U +#define USB_DESCRIPTOR_TYPE_OTG 0x09U +#define USB_DESCRIPTOR_TYPE_DEBUG 0x0AU +#define USB_DESCRIPTOR_TYPE_INTERFACE_ASSOCIATION 0x0BU +#define USB_DESCRIPTOR_TYPE_BINARY_OBJECT_STORE 0x0FU +#define USB_DESCRIPTOR_TYPE_DEVICE_CAPABILITY 0x10U + +#define USB_DESCRIPTOR_TYPE_FUNCTIONAL 0x21U + +// Class Specific Descriptor +#define USB_CS_DESCRIPTOR_TYPE_DEVICE 0x21U +#define USB_CS_DESCRIPTOR_TYPE_CONFIGURATION 0x22U +#define USB_CS_DESCRIPTOR_TYPE_STRING 0x23U +#define USB_CS_DESCRIPTOR_TYPE_INTERFACE 0x24U +#define USB_CS_DESCRIPTOR_TYPE_ENDPOINT 0x25U + +#define USB_DESCRIPTOR_TYPE_SUPERSPEED_ENDPOINT_COMPANION 0x30U +#define USB_DESCRIPTOR_TYPE_SUPERSPEED_ISO_ENDPOINT_COMPANION 0x31U + +/* USB Device Classes */ +#define USB_DEVICE_CLASS_RESERVED 0x00 +#define USB_DEVICE_CLASS_AUDIO 0x01 +#define USB_DEVICE_CLASS_CDC 0x02 +#define USB_DEVICE_CLASS_HID 0x03 +#define USB_DEVICE_CLASS_MONITOR 0x04 +#define USB_DEVICE_CLASS_PHYSICAL 0x05 +#define USB_DEVICE_CLASS_IMAGE 0x06 +#define USB_DEVICE_CLASS_PRINTER 0x07 +#define USB_DEVICE_CLASS_MASS_STORAGE 0x08 +#define USB_DEVICE_CLASS_HUB 0x09 +#define USB_DEVICE_CLASS_CDC_DATA 0x0a +#define USB_DEVICE_CLASS_SMART_CARD 0x0b +#define USB_DEVICE_CLASS_SECURITY 0x0d +#define USB_DEVICE_CLASS_VIDEO 0x0e +#define USB_DEVICE_CLASS_HEALTHCARE 0x0f +#define USB_DEVICE_CLASS_DIAG_DEVICE 0xdc +#define USB_DEVICE_CLASS_WIRELESS 0xe0 +#define USB_DEVICE_CLASS_MISC 0xef +#define USB_DEVICE_CLASS_APP_SPECIFIC 0xfe +#define USB_DEVICE_CLASS_VEND_SPECIFIC 0xff + +/* usb string index define */ +#define USB_STRING_LANGID_INDEX 0x00 +#define USB_STRING_MFC_INDEX 0x01 +#define USB_STRING_PRODUCT_INDEX 0x02 +#define USB_STRING_SERIAL_INDEX 0x03 +#define USB_STRING_CONFIG_INDEX 0x04 +#define USB_STRING_INTERFACE_INDEX 0x05 +#define USB_STRING_OS_INDEX 0x06 +#define USB_STRING_MAX USB_STRING_OS_INDEX +/* + * Devices supporting Microsoft OS Descriptors store special string + * descriptor at fixed index (0xEE). It is read when a new device is + * attached to a computer for the first time. + */ +#define USB_OSDESC_STRING_DESC_INDEX 0xEE + +/* bmAttributes in Configuration Descriptor */ +#define USB_CONFIG_POWERED_MASK 0x40 +#define USB_CONFIG_BUS_POWERED 0x80 +#define USB_CONFIG_SELF_POWERED 0xC0 +#define USB_CONFIG_REMOTE_WAKEUP 0x20 + +/* bMaxPower in Configuration Descriptor */ +#define USB_CONFIG_POWER_MA(mA) ((mA)/2) + +/* bEndpointAddress in Endpoint Descriptor */ +#define USB_ENDPOINT_DIRECTION_MASK 0x80 +#define USB_ENDPOINT_OUT(addr) ((addr) | 0x00) +#define USB_ENDPOINT_IN(addr) ((addr) | 0x80) + +/* bmAttributes in Endpoint Descriptor */ +#define USB_ENDPOINT_TYPE_MASK 0x03 +#define USB_ENDPOINT_TYPE_CONTROL 0x00 +#define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01 +#define USB_ENDPOINT_TYPE_BULK 0x02 +#define USB_ENDPOINT_TYPE_INTERRUPT 0x03 +#define USB_ENDPOINT_SYNC_MASK 0x0C +#define USB_ENDPOINT_SYNC_NO_SYNCHRONIZATION 0x00 +#define USB_ENDPOINT_SYNC_ASYNCHRONOUS 0x04 +#define USB_ENDPOINT_SYNC_ADAPTIVE 0x08 +#define USB_ENDPOINT_SYNC_SYNCHRONOUS 0x0C +#define USB_ENDPOINT_USAGE_MASK 0x30 +#define USB_ENDPOINT_USAGE_DATA 0x00 +#define USB_ENDPOINT_USAGE_FEEDBACK 0x10 +#define USB_ENDPOINT_USAGE_IMPLICIT_FEEDBACK 0x20 +#define USB_ENDPOINT_USAGE_RESERVED 0x30 + +/* bDevCapabilityType in Device Capability Descriptor */ +#define USB_DEVICE_CAPABILITY_WIRELESS_USB 1 +#define USB_DEVICE_CAPABILITY_USB_2_0_EXTENSION 2 +#define USB_DEVICE_CAPABILITY_SUPERSPEED_USB 3 +#define USB_DEVICE_CAPABILITY_CONTAINER_ID 4 +#define USB_DEVICE_CAPABILITY_PLATFORM 5 +#define USB_DEVICE_CAPABILITY_POWER_DELIVERY_CAPABILITY 6 +#define USB_DEVICE_CAPABILITY_BATTERY_INFO_CAPABILITY 7 +#define USB_DEVICE_CAPABILITY_PD_CONSUMER_PORT_CAPABILITY 8 +#define USB_DEVICE_CAPABILITY_PD_PROVIDER_PORT_CAPABILITY 9 +#define USB_DEVICE_CAPABILITY_SUPERSPEED_PLUS 10 +#define USB_DEVICE_CAPABILITY_PRECISION_TIME_MEASUREMENT 11 +#define USB_DEVICE_CAPABILITY_WIRELESS_USB_EXT 12 + +#define USB_BOS_CAPABILITY_EXTENSION 0x02 +#define USB_BOS_CAPABILITY_PLATFORM 0x05 + +/* Setup packet definition used to read raw data from USB line */ +struct usb_setup_packet +{ + __packed union + { + uint8_t bmRequestType; /* bmRequestType */ + struct + { + uint8_t Recipient : 5; /* D4..0: Recipient */ + uint8_t Type : 2; /* D6..5: Type */ + uint8_t Dir : 1; /* D7: Data Phase Txsfer Direction */ + }bmRequestType_b; + }; + uint8_t bRequest; + __packed union + { + uint16_t wValue; /* wValue */ + struct + { + uint8_t wValueL; + uint8_t wValueH; + }; + }; + __packed union + { + uint16_t wIndex; /* wIndex */ + struct + { + uint8_t wIndexL; + uint8_t wIndexH; + }; + }; + uint16_t wLength; +} __packed; + +/** Standard Device Descriptor */ +struct usb_device_descriptor { + uint8_t bLength; /* Descriptor size in bytes = 18 */ + uint8_t bDescriptorType; /* DEVICE descriptor type = 1 */ + uint16_t bcdUSB; /* USB spec in BCD, e.g. 0x0200 */ + uint8_t bDeviceClass; /* Class code, if 0 see interface */ + uint8_t bDeviceSubClass; /* Sub-Class code, 0 if class = 0 */ + uint8_t bDeviceProtocol; /* Protocol, if 0 see interface */ + uint8_t bMaxPacketSize0; /* Endpoint 0 max. size */ + uint16_t idVendor; /* Vendor ID per USB-IF */ + uint16_t idProduct; /* Product ID per manufacturer */ + uint16_t bcdDevice; /* Device release # in BCD */ + uint8_t iManufacturer; /* Index to manufacturer string */ + uint8_t iProduct; /* Index to product string */ + uint8_t iSerialNumber; /* Index to serial number string */ + uint8_t bNumConfigurations; /* Number of possible configurations */ +} __packed; + +/** USB device_qualifier descriptor */ +struct usb_device_qualifier_descriptor { + uint8_t bLength; /* Descriptor size in bytes = 10 */ + uint8_t bDescriptorType; /* DEVICE QUALIFIER type = 6 */ + uint16_t bcdUSB; /* USB spec in BCD, e.g. 0x0200 */ + uint8_t bDeviceClass; /* Class code, if 0 see interface */ + uint8_t bDeviceSubClass; /* Sub-Class code, 0 if class = 0 */ + uint8_t bDeviceProtocol; /* Protocol, if 0 see interface */ + uint8_t bMaxPacketSize; /* Endpoint 0 max. size */ + uint8_t bNumConfigurations; /* Number of possible configurations */ + uint8_t bReserved; /* Reserved = 0 */ +} __packed; + +/** Standard Configuration Descriptor */ +struct usb_configuration_descriptor { + uint8_t bLength; /* Descriptor size in bytes = 9 */ + uint8_t bDescriptorType; /* CONFIGURATION type = 2 or 7 */ + uint16_t wTotalLength; /* Length of concatenated descriptors */ + uint8_t bNumInterfaces; /* Number of interfaces, this config. */ + uint8_t bConfigurationValue; /* Value to set this config. */ + uint8_t iConfiguration; /* Index to configuration string */ + uint8_t bmAttributes; /* Config. characteristics */ + uint8_t bMaxPower; /* Max.power from bus, 2mA units */ +} __packed; + +/** Standard Interface Descriptor */ +struct usb_interface_descriptor { + uint8_t bLength; /* Descriptor size in bytes = 9 */ + uint8_t bDescriptorType; /* INTERFACE descriptor type = 4 */ + uint8_t bInterfaceNumber; /* Interface no.*/ + uint8_t bAlternateSetting; /* Value to select this IF */ + uint8_t bNumEndpoints; /* Number of endpoints excluding 0 */ + uint8_t bInterfaceClass; /* Class code, 0xFF = vendor */ + uint8_t bInterfaceSubClass; /* Sub-Class code, 0 if class = 0 */ + uint8_t bInterfaceProtocol; /* Protocol, 0xFF = vendor */ + uint8_t iInterface; /* Index to interface string */ +} __packed; + +/** Standard Endpoint Descriptor */ +struct usb_endpoint_descriptor { + uint8_t bLength; /* Descriptor size in bytes = 7 */ + uint8_t bDescriptorType; /* ENDPOINT descriptor type = 5 */ + uint8_t bEndpointAddress; /* Endpoint # 0 - 15 | IN/OUT */ + uint8_t bmAttributes; /* Transfer type */ + uint16_t wMaxPacketSize; /* Bits 10:0 = max. packet size */ + uint8_t bInterval; /* Polling interval in (micro) frames */ +} __packed; + +/** Unicode (UTF16LE) String Descriptor */ +struct usb_string_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint16_t bString; +} __packed; + +/* USB Interface Association Descriptor */ +struct usb_interface_association_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bFirstInterface; + uint8_t bInterfaceCount; + uint8_t bFunctionClass; + uint8_t bFunctionSubClass; + uint8_t bFunctionProtocol; + uint8_t iFunction; +} __packed; + +/* MS OS 1.0 string descriptor */ +struct usb_msosv1_string_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bString[14]; + uint8_t bMS_VendorCode; /* Vendor Code, used for a control request */ + uint8_t bPad; /* Padding byte for VendorCode look as UTF16 */ +} __packed; + +/* MS OS 1.0 Header descriptor */ +struct usb_msosv1_compat_id_header_descriptor +{ + uint32_t dwLength; + uint16_t bcdVersion; + uint16_t wIndex; + uint8_t bCount; + uint8_t reserved[7]; +} __packed; + +/* MS OS 1.0 Function descriptor */ +struct usb_msosv1_comp_id_function_descriptor +{ + uint8_t bFirstInterfaceNumber; + uint8_t reserved1; + uint8_t compatibleID[8]; + uint8_t subCompatibleID[8]; + uint8_t reserved2[6]; +} __packed; + +#define usb_msosv1_comp_id_property_create(x) \ +struct usb_msosv1_comp_id_property \ +{\ + struct usb_msosv1_compat_id_header_descriptor compat_id_header;\ + struct usb_msosv1_comp_id_function_descriptor compat_id_function[x];\ +}; + +struct usb_msosv1_descriptor +{ + uint8_t *string; + uint8_t string_len; + uint8_t vendor_code; + uint8_t *compat_id; + uint16_t compat_id_len; +}; + + +/* MS OS 2.0 Header descriptor */ +struct usb_msosv2_property_header_descriptor +{ + uint32_t dwLength; + uint16_t bcdVersion; + uint16_t wIndex; + uint8_t bCount; +} __packed; + +/* WinUSB Microsoft OS 2.0 descriptor set header */ +struct winusb_header_descriptor { + uint16_t wLength; + uint16_t wDescriptorType; + uint32_t dwWindowsVersion; + uint16_t wDescriptorSetTotalLength; +} __packed; + +/* WinUSB Microsoft OS 2.0 subset function descriptor */ +struct winusb_subset_function_descriptor { + uint16_t wLength; + uint16_t wDescriptorType; + uint8_t bFirstInterface; + uint8_t bReserved; + uint16_t wSubsetLength; +} __packed; + +/* MS OS 2.0 Function Section */ +struct usb_msosv2_comp_id_function_descriptor +{ + uint16_t wLength; + uint16_t wDescriptorType; + uint8_t compatibleID[8]; + uint8_t subCompatibleID[8]; +} __packed; + +/* MS OS 2.0 property descriptor */ +struct usb_msosv2_proerty_descriptor +{ + uint16_t wLength; + uint16_t wDescriptorType; + uint32_t dwPropertyDataType; + uint16_t wPropertyNameLength; + const char * bPropertyName; + uint32_t dwPropertyDataLength; + const char * bPropertyData; +}; + +struct usb_msosv2_descriptor +{ + uint8_t* compat_id; + uint16_t compat_id_len; +}; + +/* BOS Descriptor */ +struct usb_bos_header_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint16_t wTotalLength; + uint8_t bNumDeviceCaps; +} __packed; + +/* BOS Capability Descriptor */ +struct usb_bos_capability_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDevCapabilityType; + uint8_t bReserved; + uint8_t PlatformCapabilityUUID[16]; +} __packed; + +struct usb_bos_capability_lpm { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDevCapabilityType; + uint32_t bmAttributes; +} __packed; + +struct usb_bos_descriptor +{ + uint8_t* bos_id; + uint8_t bos_id_len; +}; + +/* USB Device Capability Descriptor */ +struct usb_device_capability__descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDevCapabilityType; +} __packed; + +/** USB descriptor header */ +struct usb_desc_header { + uint8_t bLength; /**< descriptor length */ + uint8_t bDescriptorType; /**< descriptor type */ +}; + +#define USB_DEVICE_DESCRIPTOR_INIT(bcdUSB,idVendor,idProduct,bcdDevice,bNumConfigurations) \ + 0x12, /* bLength */ \ + USB_DESCRIPTOR_TYPE_DEVICE, /* bDescriptorType */ \ + WBVAL(bcdUSB), /* bcdUSB */ \ + 0x00, /* bDeviceClass */ \ + 0x00, /* bDeviceSubClass */ \ + 0x00, /* bDeviceProtocol */ \ + 0x40, /* bMaxPacketSize */ \ + WBVAL(idVendor), /* idVendor */ \ + WBVAL(idProduct), /* idProduct */ \ + WBVAL(bcdDevice), /* bcdDevice */ \ + USB_STRING_MFC_INDEX, /* iManufacturer */ \ + USB_STRING_PRODUCT_INDEX, /* iProduct */ \ + USB_STRING_SERIAL_INDEX, /* iSerial */ \ + bNumConfigurations /* bNumConfigurations */ + +#define USB_CONFIG_DESCRIPTOR_INIT(wTotalLength,bNumInterfaces,bConfigurationValue,bmAttributes,bMaxPower) \ + 0x09, /* bLength */ \ + USB_DESCRIPTOR_TYPE_CONFIGURATION, /* bDescriptorType */ \ + WBVAL(wTotalLength), /* wTotalLength */ \ + bNumInterfaces, /* bNumInterfaces */ \ + bConfigurationValue, /* bConfigurationValue */ \ + 0x00, /* iConfiguration */ \ + bmAttributes, /* bmAttributes */ \ + USB_CONFIG_POWER_MA(bMaxPower) /* bMaxPower */ + +#define USB_INTERFACE_DESCRIPTOR_INIT(bInterfaceNumber,bAlternateSetting,bNumEndpoints,\ +bInterfaceClass,bInterfaceSubClass,bInterfaceProtocol,iInterface) \ + 0x09, /* bLength */ \ + USB_DESCRIPTOR_TYPE_INTERFACE, /* bDescriptorType */ \ + bInterfaceNumber, /* bInterfaceNumber */ \ + bAlternateSetting, /* bAlternateSetting */ \ + bNumEndpoints, /* bNumEndpoints */ \ + bInterfaceClass, /* bInterfaceClass */ \ + bInterfaceSubClass, /* bInterfaceSubClass */ \ + bInterfaceProtocol, /* bInterfaceProtocol */ \ + iInterface /* iInterface */ + +#define USB_ENDPOINT_DESCRIPTOR_INIT(bEndpointAddress,bmAttributes,wMaxPacketSize,bInterval) \ + 0x07, /* bLength */\ + USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */\ + bEndpointAddress, /* bEndpointAddress */\ + bmAttributes, /* bmAttributes */\ + WBVAL(wMaxPacketSize), /* wMaxPacketSize */\ + bInterval /* bInterval */ + +#define USB_IAD_INIT(bFirstInterface,bInterfaceCount,bFunctionClass,bFunctionSubClass,bFunctionProtocol) \ + 0x08, /* bLength */\ + USB_DESCRIPTOR_TYPE_INTERFACE_ASSOCIATION, /* bDescriptorType */\ + bFirstInterface, /* bFirstInterface */\ + bInterfaceCount, /* bInterfaceCount */\ + bFunctionClass, /* bFunctionClass */\ + bFunctionSubClass, /* bFunctionSubClass */\ + bFunctionProtocol, /* bFunctionProtocol */\ + 0x00 /* iFunction */ + +#define USB_LANGID_INIT(id) \ + 0x04, /* bLength */\ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */\ + WBVAL(id) /* wLangID0 */ + +#endif \ No newline at end of file diff --git a/components/usb_stack/common/usb_slist.h b/components/usb_stack/common/usb_slist.h new file mode 100644 index 00000000..0e01887f --- /dev/null +++ b/components/usb_stack/common/usb_slist.h @@ -0,0 +1,221 @@ +#ifndef __USB_SLIST_H__ +#define __USB_SLIST_H__ + +#include "string.h" +#include "stdint.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * usb_container_of - return the member address of ptr, if the type of ptr is the + * struct type. + */ +#define usb_container_of(ptr, type, member) \ + ((type *)((char *)(ptr) - (unsigned long)(&((type *)0)->member))) + + +/** + * Single List structure + */ +struct usb_slist_node +{ + struct usb_slist_node *next; /**< point to next node. */ +}; +typedef struct usb_slist_node usb_slist_t; /**< Type for single list. */ + + +/** + * @brief initialize a single list + * + * @param l the single list to be initialized + */ +static inline void usb_slist_init(usb_slist_t *l) +{ + l->next = NULL; +} + +static inline void usb_slist_add_head(usb_slist_t *l, usb_slist_t *n) +{ + n->next = l->next; + l->next = n; +} + +static inline void usb_slist_add_tail(usb_slist_t *l, usb_slist_t *n) +{ + while (l->next) l = l->next; + + /* append the node to the tail */ + l->next = n; + n->next = NULL; +} + +static inline void usb_slist_insert(usb_slist_t *l, usb_slist_t *next, usb_slist_t *n) +{ + if (!next) + { + usb_slist_add_tail(next, l); + return; + } + + while (l->next) + { + if (l->next == next) + { + l->next = n; + n->next = next; + } + + l = l->next; + } +} + +static inline usb_slist_t *usb_slist_remove(usb_slist_t *l, usb_slist_t *n) +{ + /* remove slist head */ + while (l->next && l->next != n) l = l->next; + + /* remove node */ + if (l->next != (usb_slist_t *)0) l->next = l->next->next; + + return l; +} + +static inline unsigned int usb_slist_len(const usb_slist_t *l) +{ + unsigned int len = 0; + const usb_slist_t *list = l->next; + while (list != NULL) + { + list = list->next; + len ++; + } + + return len; +} + +static inline unsigned int usb_slist_contains(usb_slist_t *l, usb_slist_t *n) +{ + while (l->next) + { + if (l->next == n) + { + return 0; + } + + l = l->next; + } + + return 1; +} + +static inline usb_slist_t *usb_slist_head(usb_slist_t *l) +{ + return l->next; +} + +static inline usb_slist_t *usb_slist_tail(usb_slist_t *l) +{ + while (l->next) l = l->next; + + return l; +} + +static inline usb_slist_t *usb_slist_next(usb_slist_t *n) +{ + return n->next; +} + +static inline int usb_slist_isempty(usb_slist_t *l) +{ + return l->next == NULL; +} + +/** + * @brief initialize a slist object + */ +#define USB_SLIST_OBJECT_INIT(object) { NULL } + +/** + * @brief initialize a slist object + */ +#define USB_SLIST_DEFINE(slist) \ + usb_slist_t slist = { NULL } + +/** + * @brief get the struct for this single list node + * @param node the entry point + * @param type the type of structure + * @param member the name of list in structure + */ +#define usb_slist_entry(node, type, member) \ + usb_container_of(node, type, member) + +/** + * usb_slist_first_entry - get the first element from a slist + * @ptr: the slist head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the slist_struct within the struct. + * + * Note, that slist is expected to be not empty. + */ +#define usb_slist_first_entry(ptr, type, member) \ + usb_slist_entry((ptr)->next, type, member) + +/** + * usb_slist_tail_entry - get the tail element from a slist + * @ptr: the slist head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the slist_struct within the struct. + * + * Note, that slist is expected to be not empty. + */ +#define usb_slist_tail_entry(ptr, type, member) \ + usb_slist_entry(usb_slist_tail(ptr), type, member) + +/** + * usb_slist_first_entry_or_null - get the first element from a slist + * @ptr: the slist head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the slist_struct within the struct. + * + * Note, that slist is expected to be not empty. + */ +#define usb_slist_first_entry_or_null(ptr, type, member) \ + (usb_slist_isempty(ptr) ? NULL : usb_slist_first_entry(ptr, type, member)) + +/** + * usb_slist_for_each - iterate over a single list + * @pos: the usb_slist_t * to use as a loop cursor. + * @head: the head for your single list. + */ +#define usb_slist_for_each(pos, head) \ + for (pos = (head)->next; pos != NULL; pos = pos->next) + +#define usb_slist_for_each_safe(pos, next, head) \ + for (pos = (head)->next, next = pos->next; pos; \ + pos = next, next = pos->next) + +/** + * usb_slist_for_each_entry - iterate over single list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your single list. + * @member: the name of the list_struct within the struct. + */ +#define usb_slist_for_each_entry(pos, head, member) \ + for (pos = usb_slist_entry((head)->next, typeof(*pos), member); \ + &pos->member != (NULL); \ + pos = usb_slist_entry(pos->member.next, typeof(*pos), member)) + +#define usb_slist_for_each_entry_safe(pos, n, head, member) \ + for (pos = usb_slist_entry((head)->next, typeof(*pos), member), \ + n = usb_slist_entry(pos->member.next, typeof(*pos), member); \ + &pos->member != (NULL); \ + pos = n, n = usb_slist_entry(pos->member.next, typeof(*pos), member)) + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/components/usb_stack/common/usb_util.h b/components/usb_stack/common/usb_util.h new file mode 100644 index 00000000..7d3d6b19 --- /dev/null +++ b/components/usb_stack/common/usb_util.h @@ -0,0 +1,134 @@ +#ifndef _USB_UTIL_H +#define _USB_UTIL_H + +#include "stdbool.h" +#include "string.h" +#include "stdint.h" +#include "stdio.h" +#include "usb_slist.h" + +#ifndef __packed +#define __packed __attribute__((__packed__)) +#endif +#ifndef __aligned +#define __aligned(x) __attribute__((__aligned__(x))) +#endif +#define __may_alias __attribute__((__may_alias__)) +#ifndef __printf_like +#define __printf_like(f, a) __attribute__((format(printf, f, a))) +#endif +#define __used __attribute__((__used__)) +#ifndef __deprecated +#define __deprecated __attribute__((deprecated)) +#endif +#define ARG_UNUSED(x) (void)(x) + +// #define likely(x) __builtin_expect((bool)!!(x), true) +// #define unlikely(x) __builtin_expect((bool)!!(x), false) + +#define popcount(x) __builtin_popcount(x) + +#ifndef __no_optimization +#define __no_optimization __attribute__((optimize("-O0"))) +#endif + +#ifndef __weak +#define __weak __attribute__((__weak__)) +#endif +#define __unused __attribute__((__unused__)) + +#define __ALIGN_END __attribute__((aligned(4))) +#define __ALIGN_BEGIN + +#ifndef LO_BYTE +#define LO_BYTE(x) ((uint8_t)(x & 0x00FF)) +#endif + +#ifndef HI_BYTE +#define HI_BYTE(x) ((uint8_t)((x & 0xFF00) >> 8)) +#endif + +/** + * @def MAX + * @brief The larger value between @p a and @p b. + * @note Arguments are evaluated twice. + */ +#ifndef MAX +/* Use Z_MAX for a GCC-only, single evaluation version */ +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif + +/** + * @def MIN + * @brief The smaller value between @p a and @p b. + * @note Arguments are evaluated twice. + */ +#ifndef MIN +/* Use Z_MIN for a GCC-only, single evaluation version */ +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif + +#define BCD(x) ((((x) / 10) << 4) | ((x) % 10)) + +#define BIT(n) (1UL << (n)) + +#define ARRAY_SIZE(array) \ + ((int)((sizeof(array) / sizeof((array)[0])))) + +#define USB_DESC_SECTION __attribute__((section("usb_desc"))) __used __aligned(1) + +#define BSWAP16(u16) (__builtin_bswap16(u16)) +#define BSWAP32(u32) (__builtin_bswap32(u32)) + +#define GET_BE16(field) \ + (((uint16_t)(field)[0] << 8) | ((uint16_t)(field)[1])) + +#define GET_BE32(field) \ + (((uint32_t)(field)[0] << 24) | ((uint32_t)(field)[1] << 16) | ((uint32_t)(field)[2] << 8) | ((uint32_t)(field)[3] << 0)) + +#define SET_BE16(field, value) \ + do \ + { \ + (field)[0] = (uint8_t)((value) >> 8); \ + (field)[1] = (uint8_t)((value) >> 0); \ + } while (0) + +#define SET_BE24(field, value) \ + do \ + { \ + (field)[0] = (uint8_t)((value) >> 16); \ + (field)[1] = (uint8_t)((value) >> 8); \ + (field)[2] = (uint8_t)((value) >> 0); \ + } while (0) + +#define SET_BE32(field, value) \ + do \ + { \ + (field)[0] = (uint8_t)((value) >> 24); \ + (field)[1] = (uint8_t)((value) >> 16); \ + (field)[2] = (uint8_t)((value) >> 8); \ + (field)[3] = (uint8_t)((value) >> 0); \ + } while (0) + +#define REQTYPE_GET_DIR(x) (((x) >> 7) & 0x01) +#define REQTYPE_GET_TYPE(x) (((x) >> 5) & 0x03U) +#define REQTYPE_GET_RECIP(x) ((x)&0x1F) + +#define GET_DESC_TYPE(x) (((x) >> 8) & 0xFFU) +#define GET_DESC_INDEX(x) ((x)&0xFFU) + +#define WBVAL(x) (x & 0xFF),((x >> 8) & 0xFF) +#define DBVAL(x) (x & 0xFF),((x >> 8) & 0xFF),((x >> 16) & 0xFF),((x >> 24) & 0xFF) + +#if 0 +#define USBD_LOG_WRN(a, ...) bflb_platform_printf(a, ##__VA_ARGS__) +#define USBD_LOG_DBG(a, ...) bflb_platform_printf(a, ##__VA_ARGS__) +#define USBD_LOG_ERR(a, ...) bflb_platform_printf(a, ##__VA_ARGS__) +#else +#define USBD_LOG_WRN(a, ...) bflb_platform_printf(a, ##__VA_ARGS__) +#define USBD_LOG_DBG(a, ...) +#define USBD_LOG_ERR(a, ...) bflb_platform_printf(a, ##__VA_ARGS__) +#define USBD_LOG(a, ...) bflb_platform_printf(a, ##__VA_ARGS__) +#endif + +#endif \ No newline at end of file diff --git a/components/usb_stack/core/usbd_core.c b/components/usb_stack/core/usbd_core.c new file mode 100644 index 00000000..0a95e867 --- /dev/null +++ b/components/usb_stack/core/usbd_core.c @@ -0,0 +1,1232 @@ +/** + * @file usbd_core.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "usbd_core.h" + +#define USBD_EP_CALLBACK_LIST_SEARCH 0 +#define USBD_EP_CALLBACK_ARR_SEARCH 1 +#define USBD_EP_CALLBACK_SEARCH_METHOD USBD_EP_CALLBACK_ARR_SEARCH + +/* general descriptor field offsets */ +#define DESC_bLength 0 /** Length offset */ +#define DESC_bDescriptorType 1 /** Descriptor type offset */ + +/* config descriptor field offsets */ +#define CONF_DESC_wTotalLength 2 /** Total length offset */ +#define CONF_DESC_bConfigurationValue 5 /** Configuration value offset */ +#define CONF_DESC_bmAttributes 7 /** configuration characteristics */ + +/* interface descriptor field offsets */ +#define INTF_DESC_bInterfaceNumber 2 /** Interface number offset */ +#define INTF_DESC_bAlternateSetting 3 /** Alternate setting offset */ + +#define USB_REQUEST_BUFFER_SIZE 256 +#define USB_EP_OUT_NUM 8 +#define USB_EP_IN_NUM 8 + +static struct usbd_core_cfg_priv +{ + /** Setup packet */ + struct usb_setup_packet setup; + /** Pointer to data buffer */ + uint8_t *ep0_data_buf; + /** Remaining bytes in buffer */ + uint32_t ep0_data_buf_residue; + /** Total length of control transfer */ + uint32_t ep0_data_buf_len; + /** Zero length packet flag of control transfer */ + bool zlp_flag; + /** Pointer to registered descriptors */ + const uint8_t *descriptors; + /* Buffer used for storing standard, class and vendor request data */ + uint8_t req_data[USB_REQUEST_BUFFER_SIZE]; + +#if USBD_EP_CALLBACK_SEARCH_METHOD == 1 + usbd_endpoint_callback in_ep_cb[USB_EP_IN_NUM]; + usbd_endpoint_callback out_ep_cb[USB_EP_OUT_NUM]; +#endif + /** Variable to check whether the usb has been enabled */ + bool enabled; + /** Variable to check whether the usb has been configured */ + bool configured; + /** Currently selected configuration */ + uint8_t configuration; + /** Remote wakeup feature status */ + uint16_t remote_wakeup; + uint8_t reserved; +} usbd_core_cfg; + +static usb_slist_t usbd_class_head= USB_SLIST_OBJECT_INIT(usbd_class_head); +static struct usb_msosv1_descriptor *msosv1_desc; +static struct usb_bos_descriptor *bos_desc; +/** + * @brief print the contents of a setup packet + * + * @param [in] setup The setup packet + * + */ +static void usbd_print_setup(struct usb_setup_packet *setup) +{ + USBD_LOG_ERR("Setup: " + "bmRequestType 0x%02x, bRequest 0x%02x, wValue 0x%04x, wIndex 0x%04x, wLength 0x%04x\r\n", + setup->bmRequestType, + setup->bRequest, + setup->wValue, + setup->wIndex, + setup->wLength); +} + +/** + * @brief Check if the device is in Configured state + * + * @return true if Configured, false otherwise. + */ +static bool is_device_configured(void) +{ + return (usbd_core_cfg.configuration != 0); +} +/** + * @brief Check if the interface of given number is valid + * + * @param [in] interface Number of the addressed interface + * + * This function searches through descriptor and checks + * is the Host has addressed valid interface. + * + * @return true if interface exists - valid + */ +static bool is_interface_valid(uint8_t interface) +{ + const uint8_t *p = (uint8_t *)usbd_core_cfg.descriptors; + const struct usb_configuration_descriptor *cfg_descr; + + /* Search through descriptor for matching interface */ + while (p[DESC_bLength] != 0U) + { + if (p[DESC_bDescriptorType] == USB_DESCRIPTOR_TYPE_CONFIGURATION) + { + cfg_descr = (const struct usb_configuration_descriptor *)p; + if (interface < cfg_descr->bNumInterfaces) + { + return true; + } + } + p += p[DESC_bLength]; + } + + return false; +} +/** + * @brief Check if the endpoint of given address is valid + * + * @param [in] ep Address of the Endpoint + * + * This function checks if the Endpoint of given address + * is valid for the configured device. Valid Endpoint is + * either Control Endpoint or one used by the device. + * + * @return true if endpoint exists - valid + */ +static bool is_ep_valid(uint8_t ep) +{ + /* Check if its Endpoint 0 */ + if ((ep & 0x7f ) == 0) + { + return true; + } + + return true; +} +#if USBD_EP_CALLBACK_SEARCH_METHOD == 1 +static void usbd_ep_callback_register(void) +{ + usb_slist_t *i, *j, *k; + usb_slist_for_each(i,&usbd_class_head) + { + usbd_class_t* class= usb_slist_entry(i,struct usbd_class,list); + + usb_slist_for_each(j,&class->intf_list) + { + usbd_interface_t* intf = usb_slist_entry(j,struct usbd_interface,list); + + usb_slist_for_each(k,&intf->ep_list) + { + usbd_endpoint_t* ept = usb_slist_entry(k,struct usbd_endpoint,list); + if(ept->ep_cb) + { + if(ept->ep_addr & 0x80) + { + usbd_core_cfg.in_ep_cb[ept->ep_addr & 0x7f] = ept->ep_cb; + } + else + { + usbd_core_cfg.out_ep_cb[ept->ep_addr & 0x7f] = ept->ep_cb; + } + } + } + } + } +} +#endif +/** + * @brief configure and enable endpoint + * + * This function sets endpoint configuration according to one specified in USB + * endpoint descriptor and then enables it for data transfers. + * + * @param [in] ep_desc Endpoint descriptor byte array + * + * @return true if successfully configured and enabled + */ +static bool usbd_set_endpoint(const struct usb_endpoint_descriptor *ep_desc) +{ + struct usbd_endpoint_cfg ep_cfg; + + ep_cfg.ep_addr = ep_desc->bEndpointAddress; + ep_cfg.ep_mps = ep_desc->wMaxPacketSize; + ep_cfg.ep_type = ep_desc->bmAttributes & USBD_EP_TYPE_MASK; + + USBD_LOG("Open endpoint:0x%x type:%u mps:%u\r\n", + ep_cfg.ep_addr, ep_cfg.ep_type, ep_cfg.ep_mps); + + usbd_ep_open(&ep_cfg); + usbd_core_cfg.configured = true; + + return true; +} +/** + * @brief Disable endpoint for transferring data + * + * This function cancels transfers that are associated with endpoint and + * disabled endpoint itself. + * + * @param [in] ep_desc Endpoint descriptor byte array + * + * @return true if successfully deconfigured and disabled + */ +static bool usbd_reset_endpoint(const struct usb_endpoint_descriptor *ep_desc) +{ + struct usbd_endpoint_cfg ep_cfg; + + ep_cfg.ep_addr = ep_desc->bEndpointAddress; + ep_cfg.ep_mps = ep_desc->wMaxPacketSize; + ep_cfg.ep_type = ep_desc->bmAttributes & USBD_EP_TYPE_MASK; + + USBD_LOG("Close endpoint:0x%x type:%u\r\n", + ep_cfg.ep_addr, ep_cfg.ep_type); + + usbd_ep_close(ep_cfg.ep_addr); + + return true; +} + +/** + * @brief get specified USB descriptor + * + * This function parses the list of installed USB descriptors and attempts + * to find the specified USB descriptor. + * + * @param [in] type_index Type and index of the descriptor + * @param [in] lang_id Language ID of the descriptor (currently unused) + * @param [out] len Descriptor length + * @param [out] data Descriptor data + * + * @return true if the descriptor was found, false otherwise + */ +static bool usbd_get_descriptor(uint16_t type_index, uint8_t **data, uint32_t *len) +{ + uint8_t type = 0U; + uint8_t index = 0U; + uint8_t *p = NULL; + uint32_t cur_index = 0U; + bool found = false; + + type = GET_DESC_TYPE(type_index); + index = GET_DESC_INDEX(type_index); + + if ((type == USB_DESCRIPTOR_TYPE_STRING) && (index == USB_OSDESC_STRING_DESC_INDEX)) + { + USBD_LOG("MS OS Descriptor string read\r\n"); + if(!msosv1_desc) + return false; + + *data = (uint8_t*)msosv1_desc->string; + *len = sizeof(struct usb_msosv1_string_descriptor); + + return true; + } + else if (type == USB_DESCRIPTOR_TYPE_BINARY_OBJECT_STORE) + { + USBD_LOG("BOS descriptor string read\r\n"); + if (!bos_desc) + { + return false; + } + + *data = bos_desc->bos_id; + *len = bos_desc->bos_id_len; + return true; + } + /* + * Invalid types of descriptors, + * see USB Spec. Revision 2.0, 9.4.3 Get Descriptor + */ + else if ((type == USB_DESCRIPTOR_TYPE_INTERFACE) || (type == USB_DESCRIPTOR_TYPE_ENDPOINT) || + (type > USB_DESCRIPTOR_TYPE_OTHER_SPEED)) + { + return false; + } + + p = (uint8_t *)usbd_core_cfg.descriptors; + + cur_index = 0U; + + while (p[DESC_bLength] != 0U) + { + if (p[DESC_bDescriptorType] == type) + { + if (cur_index == index) + { + found = true; + break; + } + cur_index++; + } + /* skip to next descriptor */ + p += p[DESC_bLength]; + } + + if (found) + { + /* set data pointer */ + *data = p; + /* get length from structure */ + if (type == USB_DESCRIPTOR_TYPE_CONFIGURATION) + { + /* configuration descriptor is an + * exception, length is at offset + * 2 and 3 + */ + *len = (p[CONF_DESC_wTotalLength]) | + (p[CONF_DESC_wTotalLength + 1] << 8); + } + else + { + /* normally length is at offset 0 */ + *len = p[DESC_bLength]; + } + } + else + { + /* nothing found */ + USBD_LOG_ERR("descriptor not found!\r\n", type,index); + } + return found; +} + +/** + * @brief set USB configuration + * + * This function configures the device according to the specified configuration + * index and alternate setting by parsing the installed USB descriptor list. + * A configuration index of 0 unconfigures the device. + * + * @param [in] config_index Configuration index + * @param [in] alt_setting Alternate setting number + * + * @return true if successfully configured false if error or unconfigured + */ +static bool usbd_set_configuration(uint8_t config_index, uint8_t alt_setting) +{ + uint8_t *p = (uint8_t *)usbd_core_cfg.descriptors; + uint8_t cur_alt_setting = 0xFF; + uint8_t cur_config = 0xFF; + bool found = false; + + if (config_index == 0U) + { + /* TODO: unconfigure device */ + USBD_LOG_ERR("Device not configured - invalid configuration\r\n"); + return true; + } + + /* configure endpoints for this configuration/altsetting */ + while (p[DESC_bLength] != 0U) + { + switch (p[DESC_bDescriptorType]) + { + case USB_DESCRIPTOR_TYPE_CONFIGURATION: + /* remember current configuration index */ + cur_config = p[CONF_DESC_bConfigurationValue]; + if (cur_config == config_index) + { + found = true; + } + + break; + + case USB_DESCRIPTOR_TYPE_INTERFACE: + /* remember current alternate setting */ + cur_alt_setting = + p[INTF_DESC_bAlternateSetting]; + break; + + case USB_DESCRIPTOR_TYPE_ENDPOINT: + if ((cur_config != config_index) || + (cur_alt_setting != alt_setting)) + { + break; + } + + found = usbd_set_endpoint((struct usb_endpoint_descriptor *)p); + break; + + default: + break; + } + + /* skip to next descriptor */ + p += p[DESC_bLength]; + } + + return found; +} + +/** + * @brief set USB interface + * + * @param [in] iface Interface index + * @param [in] alt_setting Alternate setting number + * + * @return true if successfully configured false if error or unconfigured + */ +static bool usbd_set_interface(uint8_t iface, uint8_t alt_setting) +{ + const uint8_t *p = usbd_core_cfg.descriptors; + const uint8_t *if_desc = NULL; + struct usb_endpoint_descriptor *ep_desc; + uint8_t cur_alt_setting = 0xFF; + uint8_t cur_iface = 0xFF; + bool ret = false; + + USBD_LOG_DBG("iface %u alt_setting %u\r\n", iface, alt_setting); + + while (p[DESC_bLength] != 0U) + { + switch (p[DESC_bDescriptorType]) + { + case USB_DESCRIPTOR_TYPE_INTERFACE: + /* remember current alternate setting */ + cur_alt_setting = p[INTF_DESC_bAlternateSetting]; + cur_iface = p[INTF_DESC_bInterfaceNumber]; + + if (cur_iface == iface && + cur_alt_setting == alt_setting) + { + if_desc = (void *)p; + } + + USBD_LOG_DBG("Current iface %u alt setting %u", + cur_iface, cur_alt_setting); + break; + case USB_DESCRIPTOR_TYPE_ENDPOINT: + if (cur_iface == iface) + { + ep_desc = (struct usb_endpoint_descriptor *)p; + + if (cur_alt_setting != alt_setting) + { + ret = usbd_reset_endpoint(ep_desc); + } + else + { + ret = usbd_set_endpoint(ep_desc); + } + } + break; + default: + break; + } + + /* skip to next descriptor */ + p += p[DESC_bLength]; + } + usbd_event_notify_handler(USB_EVENT_SET_INTERFACE,(void*)if_desc); + + return ret; +} + +/** + * @brief handle a standard device request + * + * @param [in] setup The setup packet + * @param [in,out] len Pointer to data length + * @param [in,out] ep0_data_buf Data buffer + * + * @return true if the request was handled successfully + */ +static bool usbd_std_device_req_handler(struct usb_setup_packet *setup, uint8_t **data, uint32_t *len) +{ + uint16_t value = setup->wValue; + // uint16_t index = setup->wIndex; + bool ret = true; + + switch (setup->bRequest) + { + case USB_REQUEST_GET_STATUS: + USBD_LOG_DBG("REQ_GET_STATUS\r\n"); + /* bit 0: self-powered */ + /* bit 1: remote wakeup */ + *data = (uint8_t *)&usbd_core_cfg.remote_wakeup; + + *len = 2; + break; + + case USB_REQUEST_CLEAR_FEATURE: + USBD_LOG_DBG("REQ_CLEAR_FEATURE\r\n"); + ret = false; + + if (value == USB_FEATURE_REMOTE_WAKEUP) + { + usbd_core_cfg.remote_wakeup = 0; + usbd_event_notify_handler(USB_EVENT_CLEAR_REMOTE_WAKEUP,NULL); + ret = true; + } + break; + + case USB_REQUEST_SET_FEATURE: + USBD_LOG_DBG("REQ_SET_FEATURE\r\n"); + ret = false; + + if (value == USB_FEATURE_REMOTE_WAKEUP) + { + usbd_core_cfg.remote_wakeup = 1; + usbd_event_notify_handler(USB_EVENT_SET_REMOTE_WAKEUP,NULL); + ret = true; + } + if (value == USB_FEATURE_TEST_MODE) + { + /* put TEST_MODE code here */ + } + break; + + case USB_REQUEST_SET_ADDRESS: + USBD_LOG_DBG("REQ_SET_ADDRESS, addr 0x%x\r\n", value); + usbd_set_address(value); + break; + + case USB_REQUEST_GET_DESCRIPTOR: + USBD_LOG_DBG("REQ_GET_DESCRIPTOR\r\n"); + ret = usbd_get_descriptor(value, data, len); + break; + + case USB_REQUEST_SET_DESCRIPTOR: + USBD_LOG_DBG("Device req 0x%02x not implemented\r\n", setup->bRequest); + ret = false; + break; + + case USB_REQUEST_GET_CONFIGURATION: + USBD_LOG_DBG("REQ_GET_CONFIGURATION\r\n"); + /* indicate if we are configured */ + *data = (uint8_t *)&usbd_core_cfg.configuration; + *len = 1; + break; + + case USB_REQUEST_SET_CONFIGURATION: + value &= 0xFF; + USBD_LOG_DBG("REQ_SET_CONFIGURATION, conf 0x%x\r\n", value); + if (!usbd_set_configuration(value, 0)) + { + USBD_LOG_DBG("USB Set Configuration failed\r\n"); + ret = false; + } + else + { + /* configuration successful, + * update current configuration + */ + usbd_core_cfg.configuration = value; + usbd_event_notify_handler(USB_EVENT_CONFIGURED,NULL); + } + break; + case USB_REQUEST_GET_INTERFACE: + break; + + case USB_REQUEST_SET_INTERFACE: + break; + + default: + USBD_LOG_ERR("Illegal device req 0x%02x\r\n", setup->bRequest); + ret = false; + break; + } + + return ret; +} + +/** + * @brief handle a standard interface request + * + * @param [in] setup The setup packet + * @param [in,out] len Pointer to data length + * @param [in] ep0_data_buf Data buffer + * + * @return true if the request was handled successfully + */ +static bool usbd_std_interface_req_handler(struct usb_setup_packet *setup, + uint8_t **data, uint32_t *len) +{ + /** The device must be configured to accept standard interface + * requests and the addressed Interface must be valid. + */ + if (!is_device_configured() || + (!is_interface_valid((uint8_t)setup->wIndex))) + { + return false; + } + + switch (setup->bRequest) + { + case USB_REQUEST_GET_STATUS: + /* no bits specified */ + *data = (uint8_t *)&usbd_core_cfg.remote_wakeup; + + *len = 2; + break; + + case USB_REQUEST_CLEAR_FEATURE: + case USB_REQUEST_SET_FEATURE: + /* not defined for interface */ + return false; + + case USB_REQUEST_GET_INTERFACE: + /** This handler is called for classes that does not support + * alternate Interfaces so always return 0. Classes that + * support alternative interfaces handles GET_INTERFACE + * in custom_handler. + */ + *data = (uint8_t *)&usbd_core_cfg.reserved; + + *len = 1; + break; + + case USB_REQUEST_SET_INTERFACE: + USBD_LOG_DBG("REQ_SET_INTERFACE\r\n"); + usbd_set_interface(setup->wIndex, setup->wValue); + break; + + default: + USBD_LOG_ERR("Illegal interface req 0x%02x\r\n", setup->bRequest); + return false; + } + + return true; +} + +/** + * @brief handle a standard endpoint request + * + * @param [in] setup The setup packet + * @param [in,out] len Pointer to data length + * @param [in] ep0_data_buf Data buffer + * + * @return true if the request was handled successfully + */ +static bool usbd_std_endpoint_req_handler(struct usb_setup_packet *setup, uint8_t **data, uint32_t *len) +{ + uint8_t ep = (uint8_t)setup->wIndex; + + /* Check if request addresses valid Endpoint */ + if (!is_ep_valid(ep)) + { + return false; + } + switch (setup->bRequest) + { + case USB_REQUEST_GET_STATUS: + /** This request is valid for Control Endpoints when + * the device is not yet configured. For other + * Endpoints the device must be configured. + * Firstly check if addressed ep is Control Endpoint. + * If no then the device must be in Configured state + * to accept the request. + */ + if (((ep & 0x7f) == 0) || is_device_configured()) + { + /* bit 0 - Endpoint halted or not */ + usbd_ep_is_stalled(ep, (uint8_t*)&usbd_core_cfg.remote_wakeup); + *data = (uint8_t *)&usbd_core_cfg.remote_wakeup; + + *len = 2; + break; + } + return false; + + case USB_REQUEST_CLEAR_FEATURE: + if (setup->wValue == USB_FEATURE_ENDPOINT_STALL) + { + /** This request is valid for Control Endpoints when + * the device is not yet configured. For other + * Endpoints the device must be configured. + * Firstly check if addressed ep is Control Endpoint. + * If no then the device must be in Configured state + * to accept the request. + */ + if (((ep & 0x7f) == 0) || is_device_configured()) + { + USBD_LOG_ERR("ep:%x clear halt\r\n", ep); + usbd_ep_clear_stall(ep); + usbd_event_notify_handler(USB_EVENT_CLEAR_HALT,NULL); + break; + } + } + /* only ENDPOINT_HALT defined for endpoints */ + return false; + + case USB_REQUEST_SET_FEATURE: + if (setup->wValue == USB_FEATURE_ENDPOINT_STALL) + { + /** This request is valid for Control Endpoints when + * the device is not yet configured. For other + * Endpoints the device must be configured. + * Firstly check if addressed ep is Control Endpoint. + * If no then the device must be in Configured state + * to accept the request. + */ + if (((ep & 0x7f) == 0) || is_device_configured()) + { + /* set HALT by stalling */ + USBD_LOG_ERR("ep:%x set halt\r\n", ep); + usbd_ep_set_stall(ep); + usbd_event_notify_handler(USB_EVENT_SET_HALT,NULL); + break; + } + } + /* only ENDPOINT_HALT defined for endpoints */ + return false; + + case USB_REQUEST_SYNCH_FRAME: + /* For Synch Frame request the device must be configured */ + if (is_device_configured()) + { + /* Not supported, return false anyway */ + USBD_LOG_DBG("ep req 0x%02x not implemented\r\n", setup->bRequest); + } + return false; + default: + USBD_LOG_ERR("Illegal ep req 0x%02x\r\n", setup->bRequest); + return false; + } + + return true; +} + +/** + * @brief default handler for standard ('chapter 9') requests + * + * If a custom request handler was installed, this handler is called first. + * + * @param [in] setup The setup packet + * @param [in] ep0_data_buf Data buffer + * @param [in,out] len Pointer to data length + * + * @return true if the request was handled successfully + */ +static int usbd_standard_request_handler(struct usb_setup_packet *setup, uint8_t **data, uint32_t *len) +{ + int rc = 0; + + switch (setup->bmRequestType_b.Recipient) + { + case USB_REQUEST_TO_DEVICE: + if (usbd_std_device_req_handler(setup, data, len) == false) + { + rc = -1; + } + break; + case USB_REQUEST_TO_INTERFACE: + if (usbd_std_interface_req_handler(setup, data, len) == false) + { + rc = -1; + } + break; + case USB_REQUEST_TO_ENDPOINT: + if (usbd_std_endpoint_req_handler(setup, data, len) == false) + { + rc = -1; + } + break; + default: + rc = -1; + } + return rc; +} + +/* + * The functions usbd_class_request_handler(), usbd_custom_request_handler() and usbd_vendor_request_handler() + * go through the interfaces one after the other and compare the + * bInterfaceNumber with the wIndex and and then call the appropriate + * callback of the USB function. + * Note, a USB function can have more than one interface and the + * request does not have to be directed to the first interface (unlikely). + * These functions can be simplified and moved to usb_handle_request() + * when legacy initialization throgh the usb_set_config() and + * usb_enable() is no longer needed. + */ +static int usbd_class_request_handler(struct usb_setup_packet *setup, uint8_t **data, uint32_t *len) +{ + USBD_LOG_DBG("bRequest 0x%02x, wIndex 0x%04x", setup->bRequest, setup->wIndex); + + if (setup->bmRequestType_b.Recipient != USB_REQUEST_TO_INTERFACE) + return -1; + + usb_slist_t *i, *j; + usb_slist_for_each(i,&usbd_class_head) + { + usbd_class_t* class= usb_slist_entry(i,struct usbd_class,list); + + usb_slist_for_each(j,&class->intf_list) + { + usbd_interface_t* intf = usb_slist_entry(j,struct usbd_interface,list); + if(intf->class_handler && (intf->intf_num == (setup->wIndex & 0xFF))) + return intf->class_handler(setup, data, len); + } + } + return -1; +} + +static int usbd_vendor_request_handler(struct usb_setup_packet *setup, uint8_t **data, uint32_t *len) +{ + USBD_LOG_DBG("bRequest 0x%02x, wValue0x%04x, wIndex 0x%04x", setup->bRequest, setup->wValue, setup->wIndex); + + if (setup->bmRequestType_b.Recipient != USB_REQUEST_TO_DEVICE) + return -1; + +#define USB_OSDESC_EXTENDED_COMPAT_ID 0x04 + if(msosv1_desc) + { + if (setup->bRequest == msosv1_desc->vendor_code) + { + switch (setup->wIndex) { + case USB_OSDESC_EXTENDED_COMPAT_ID: + USBD_LOG("Handle Compat ID\r\n"); + *data = (uint8_t*)msosv1_desc->compat_id; + *len = msosv1_desc->compat_id_len; + + return 0; + default: + break; + } + } + } + + usb_slist_t *i, *j; + usb_slist_for_each(i,&usbd_class_head) + { + usbd_class_t* class= usb_slist_entry(i,struct usbd_class,list); + + usb_slist_for_each(j,&class->intf_list) + { + usbd_interface_t* intf = usb_slist_entry(j,struct usbd_interface,list); + if(intf->vendor_handler && ((intf->intf_num == (setup->wValue & 0xFF)) || (intf->intf_num == (setup->wIndex & 0xFF)))) + return intf->vendor_handler(setup, data, len); + } + } + + return -1; +} + +static int usbd_custom_request_handler(struct usb_setup_packet *setup, uint8_t **data, uint32_t *len) +{ + USBD_LOG_DBG("bRequest 0x%02x, wIndex 0x%04x", setup->bRequest, setup->wIndex); + + if (setup->bmRequestType_b.Recipient != USB_REQUEST_TO_INTERFACE) + return -1; + + usb_slist_t *i, *j; + usb_slist_for_each(i,&usbd_class_head) + { + usbd_class_t* class= usb_slist_entry(i,struct usbd_class,list); + + usb_slist_for_each(j,&class->intf_list) + { + usbd_interface_t* intf = usb_slist_entry(j,struct usbd_interface,list); + if(intf->custom_handler && (intf->intf_num == (setup->wIndex & 0xFF))) + return intf->custom_handler(setup, data, len); + } + } + + return -1; +} + +/** + * @brief handle a request by calling one of the installed request handlers + * + * Local function to handle a request by calling one of the installed request + * handlers. In case of data going from host to device, the data is at *ppbData. + * In case of data going from device to host, the handler can either choose to + * write its data at *ppbData or update the data pointer. + * + * @param [in] setup The setup packet + * @param [in,out] data Data buffer + * @param [in,out] len Pointer to data length + * + * @return true if the request was handles successfully + */ +static bool usbd_setup_request_handler(struct usb_setup_packet *setup, uint8_t **data, uint32_t *len) +{ + uint8_t type = setup->bmRequestType_b.Type; + + if (type == USB_REQUEST_STANDARD) + { + if(!usbd_custom_request_handler(setup, data, len)) + { + return true; + } + + if (usbd_standard_request_handler(setup, data, len) < 0) + { + USBD_LOG_ERR("Handler Error %d\r\n", type); + usbd_print_setup(setup); + return false; + } + } + else if (type == USB_REQUEST_CLASS) + { + if (usbd_class_request_handler(setup, data, len) < 0) + { + USBD_LOG_ERR("Handler Error %d\r\n", type); + usbd_print_setup(setup); + return false; + } + } + else if (type == USB_REQUEST_VENDOR) + { + if (usbd_vendor_request_handler(setup, data, len) < 0) + { + USBD_LOG_ERR("Handler Error %d\r\n", type); + usbd_print_setup(setup); + return false; + } + } + else + { + return false; + } + return true; +} +/** + * @brief send data or status to host + * + * @return N/A + */ +static void usbd_send_to_host(uint16_t len) +{ + uint32_t chunk = 0U; + if (usbd_core_cfg.zlp_flag == false) + { + chunk = usbd_core_cfg.ep0_data_buf_residue; + usbd_ep_write(USB_CONTROL_IN_EP0, usbd_core_cfg.ep0_data_buf, + usbd_core_cfg.ep0_data_buf_residue, &chunk); + usbd_core_cfg.ep0_data_buf += chunk; + usbd_core_cfg.ep0_data_buf_residue -= chunk; + /* + * Set ZLP flag when host asks for a bigger length and the + * last chunk is wMaxPacketSize long, to indicate the last + * packet. + */ + /* Send less data as requested during the Setup stage */ + if ((!usbd_core_cfg.ep0_data_buf_residue) && !(usbd_core_cfg.ep0_data_buf_len % USB_CTRL_EP_MPS)) + { + /* Transfers a zero-length packet */ + // LOG_DBG("ZLP, requested %u , length %u ", + // len, usb_dev.ep0_data_buf_len); + usbd_core_cfg.zlp_flag = true; + } + } + else + { + usbd_core_cfg.zlp_flag = false; + usbd_ep_write(USB_CONTROL_IN_EP0, NULL, 0, NULL); + } +} + +static void usbd_ep0_setup_handler(void) +{ + struct usb_setup_packet *setup = &usbd_core_cfg.setup; + /* + * OUT transfer, Setup packet, + * reset request message state machine + */ + if (usbd_ep_read(USB_CONTROL_OUT_EP0, (uint8_t *)setup, + sizeof(struct usb_setup_packet), NULL) < 0) + { + USBD_LOG_ERR("Read Setup Packet failed\r\n"); + usbd_ep_set_stall(USB_CONTROL_IN_EP0); + return; + } + + //usbd_print_setup(setup); + + if (setup->wLength > USB_REQUEST_BUFFER_SIZE) + { + if (setup->bmRequestType_b.Dir != USB_REQUEST_DEVICE_TO_HOST) + { + USBD_LOG_ERR("Request buffer too small\r\n"); + usbd_ep_set_stall(USB_CONTROL_IN_EP0); + return; + } + } + + // usbd_core_cfg.ep0_data_buf = usbd_core_cfg.req_data; + usbd_core_cfg.ep0_data_buf_residue = setup->wLength; + usbd_core_cfg.ep0_data_buf_len = setup->wLength; + usbd_core_cfg.zlp_flag = false; + + /* this maybe set code in class request code */ + if (setup->wLength && + setup->bmRequestType_b.Dir == USB_REQUEST_HOST_TO_DEVICE) + { + USBD_LOG_DBG("D\r\n"); + /*set ep ack to recv next data*/ + usbd_ep_read(USB_CONTROL_OUT_EP0,NULL,0,NULL); + return; + } + + /* Ask installed handler to process request */ + if (!usbd_setup_request_handler(setup, &usbd_core_cfg.ep0_data_buf, &usbd_core_cfg.ep0_data_buf_len)) + { + USBD_LOG_ERR("usbd_setup_request_handler failed\r\n"); + usbd_ep_set_stall(USB_CONTROL_IN_EP0); + return; + } + + /* Send smallest of requested and offered length */ + usbd_core_cfg.ep0_data_buf_residue = MIN(usbd_core_cfg.ep0_data_buf_len, + setup->wLength); + /*Send data or status to host*/ + usbd_send_to_host(setup->wLength); +} + +static void usbd_ep0_out_handler(void) +{ + uint32_t chunk = 0U; + struct usb_setup_packet *setup = &usbd_core_cfg.setup; + + /* OUT transfer, data or status packets */ + if (usbd_core_cfg.ep0_data_buf_residue <= 0) + { + /* absorb zero-length status message */ + USBD_LOG_DBG("Z\r\n"); + if (usbd_ep_read(USB_CONTROL_OUT_EP0, + usbd_core_cfg.ep0_data_buf, + 0, &chunk) < 0) + { + USBD_LOG_ERR("Read DATA Packet failed\r\n"); + usbd_ep_set_stall(USB_CONTROL_IN_EP0); + return; + } + } + + usbd_core_cfg.ep0_data_buf = usbd_core_cfg.req_data; + /* OUT transfer, data or status packets */ + if (usbd_ep_read(USB_CONTROL_OUT_EP0, + usbd_core_cfg.ep0_data_buf, + usbd_core_cfg.ep0_data_buf_residue, &chunk) < 0) + { + USBD_LOG_ERR("Read DATA Packet failed\r\n"); + usbd_ep_set_stall(USB_CONTROL_IN_EP0); + return; + } + + usbd_core_cfg.ep0_data_buf += chunk; + usbd_core_cfg.ep0_data_buf_residue -= chunk; + + if (usbd_core_cfg.ep0_data_buf_residue == 0) + { + /* Received all, send data to handler */ + usbd_core_cfg.ep0_data_buf = usbd_core_cfg.req_data; + if (!usbd_setup_request_handler(setup, &usbd_core_cfg.ep0_data_buf, &usbd_core_cfg.ep0_data_buf_len)) + { + USBD_LOG_ERR("usbd_setup_request_handler1 failed\r\n"); + usbd_ep_set_stall(USB_CONTROL_IN_EP0); + return; + } + + /*Send status to host*/ + usbd_send_to_host(setup->wLength); + } + else + { + USBD_LOG_ERR("ep0_data_buf_residue is not zero\r\n"); + } +} +static void usbd_ep0_in_handler(void) +{ + struct usb_setup_packet *setup = &usbd_core_cfg.setup; + /* Send more data if available */ + if (usbd_core_cfg.ep0_data_buf_residue != 0 || usbd_core_cfg.zlp_flag == true) + { + usbd_send_to_host(setup->wLength); + } +} + +static void usbd_ep_out_handler(uint8_t ep) +{ +#if USBD_EP_CALLBACK_SEARCH_METHOD == 0 + usb_slist_t *i, *j, *k; + usb_slist_for_each(i,&usbd_class_head) + { + usbd_class_t* class= usb_slist_entry(i,struct usbd_class,list); + + usb_slist_for_each(j,&class->intf_list) + { + usbd_interface_t* intf = usb_slist_entry(j,struct usbd_interface,list); + + usb_slist_for_each(k,&intf->ep_list) + { + usbd_endpoint_t* ept = usb_slist_entry(k,struct usbd_endpoint,list); + if((ept->ep_addr == ep) && ept->ep_cb) + ept->ep_cb(ep); + } + } + } +#else + if(usbd_core_cfg.out_ep_cb[ep & 0x7f]) + usbd_core_cfg.out_ep_cb[ep & 0x7f](ep); +#endif +} + +static void usbd_ep_in_handler(uint8_t ep) +{ +#if USBD_EP_CALLBACK_SEARCH_METHOD == 0 + usb_slist_t *i, *j, *k; + usb_slist_for_each(i,&usbd_class_head) + { + usbd_class_t* class= usb_slist_entry(i,struct usbd_class,list); + + usb_slist_for_each(j,&class->intf_list) + { + usbd_interface_t* intf = usb_slist_entry(j,struct usbd_interface,list); + + usb_slist_for_each(k,&intf->ep_list) + { + usbd_endpoint_t* ept = usb_slist_entry(k,struct usbd_endpoint,list); + if((ept->ep_addr == ep) && ept->ep_cb) + ept->ep_cb(ep); + } + } + } +#else + if(usbd_core_cfg.in_ep_cb[ep & 0x7f]) + usbd_core_cfg.in_ep_cb[ep & 0x7f](ep); +#endif +} + +static void usbd_class_event_notify_handler(uint8_t event, void* arg) +{ + usb_slist_t *i, *j; + usb_slist_for_each(i,&usbd_class_head) + { + usbd_class_t* class= usb_slist_entry(i,struct usbd_class,list); + + usb_slist_for_each(j,&class->intf_list) + { + usbd_interface_t* intf = usb_slist_entry(j,struct usbd_interface,list); + if(intf->notify_handler) + intf->notify_handler(event, arg); + } + } +} + +void usbd_event_notify_handler(uint8_t event, void* arg) +{ + switch (event) + { + case USB_EVENT_RESET: +#if USBD_EP_CALLBACK_SEARCH_METHOD == 1 + usbd_ep_callback_register(); +#endif + case USB_EVENT_ERROR: + case USB_EVENT_SOF: + case USB_EVENT_CONNECTED: + case USB_EVENT_CONFIGURED: + case USB_EVENT_SUSPEND: + case USB_EVENT_DISCONNECTED: + case USB_EVENT_RESUME: + case USB_EVENT_SET_INTERFACE: + case USB_EVENT_SET_REMOTE_WAKEUP: + case USB_EVENT_CLEAR_REMOTE_WAKEUP: + case USB_EVENT_SET_HALT: + case USB_EVENT_CLEAR_HALT: + usbd_class_event_notify_handler(event, arg); + break; + case USB_EVENT_SETUP_NOTIFY: + usbd_ep0_setup_handler(); + break; + case USB_EVENT_EP0_IN_NOTIFY: + usbd_ep0_in_handler(); + break; + case USB_EVENT_EP0_OUT_NOTIFY: + usbd_ep0_out_handler(); + break; + case USB_EVENT_EP_IN_NOTIFY: + usbd_ep_in_handler((uint32_t)arg); + break; + case USB_EVENT_EP_OUT_NOTIFY: + usbd_ep_out_handler((uint32_t)arg); + break; + default: + USBD_LOG_ERR("USB unknown event: %d", event); + break; + } +} + +void usbd_desc_register(const uint8_t *desc) +{ + usbd_core_cfg.descriptors = desc; +} +/* Register MS OS Descriptors version 1 */ +void usbd_msosv1_desc_register(struct usb_msosv1_descriptor *desc) +{ + msosv1_desc = desc; +} + +void usbd_class_register(usbd_class_t *class) +{ + usb_slist_add_tail(&usbd_class_head,&class->list); + usb_slist_init(&class->intf_list); +} + +void usbd_class_add_interface(usbd_class_t *class,usbd_interface_t *intf) +{ + static uint8_t intf_offset = 0; + intf->intf_num = intf_offset; + usb_slist_add_tail(&class->intf_list,&intf->list); + usb_slist_init(&intf->ep_list); + intf_offset++; +} + +void usbd_interface_add_endpoint(usbd_interface_t *intf,usbd_endpoint_t *ep) +{ + usb_slist_add_tail(&intf->ep_list,&ep->list); +} diff --git a/components/usb_stack/core/usbd_core.h b/components/usb_stack/core/usbd_core.h new file mode 100644 index 00000000..e561d986 --- /dev/null +++ b/components/usb_stack/core/usbd_core.h @@ -0,0 +1,142 @@ +/** + * @file usbd_core.h + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef _USBD_CORE_H +#define _USBD_CORE_H + +#include "usb_util.h" +#include "usb_def.h" +#include "usb_dc.h" + +#ifdef __cplusplus +extern "C" { +#endif +enum usb_event_type +{ + /** USB error reported by the controller */ + USB_EVENT_ERROR, + /** USB reset */ + USB_EVENT_RESET, + /** Start of Frame received */ + USB_EVENT_SOF, + /** USB connection established, hardware enumeration is completed */ + USB_EVENT_CONNECTED, + /** USB configuration done */ + USB_EVENT_CONFIGURED, + /** USB connection suspended by the HOST */ + USB_EVENT_SUSPEND, + /** USB connection lost */ + USB_EVENT_DISCONNECTED, + /** USB connection resumed by the HOST */ + USB_EVENT_RESUME, + + /** USB interface selected */ + USB_EVENT_SET_INTERFACE, + /** USB interface selected */ + USB_EVENT_SET_REMOTE_WAKEUP, + /** USB interface selected */ + USB_EVENT_CLEAR_REMOTE_WAKEUP, + /** Set Feature ENDPOINT_HALT received */ + USB_EVENT_SET_HALT, + /** Clear Feature ENDPOINT_HALT received */ + USB_EVENT_CLEAR_HALT, + /** setup packet received */ + USB_EVENT_SETUP_NOTIFY, + /** ep0 in packet received */ + USB_EVENT_EP0_IN_NOTIFY, + /** ep0 out packet received */ + USB_EVENT_EP0_OUT_NOTIFY, + /** ep in packet except ep0 received */ + USB_EVENT_EP_IN_NOTIFY, + /** ep out packet except ep0 received */ + USB_EVENT_EP_OUT_NOTIFY, + /** Initial USB connection status */ + USB_EVENT_UNKNOWN +}; + +/** + * @brief Callback function signature for the USB Endpoint status + */ +typedef void (*usbd_endpoint_callback)(uint8_t ep); + +/** + * @brief Callback function signature for class specific requests + * + * Function which handles Class specific requests corresponding to an + * interface number specified in the device descriptor table. For host + * to device direction the 'len' and 'payload_data' contain the length + * of the received data and the pointer to the received data respectively. + * For device to host class requests, 'len' and 'payload_data' should be + * set by the callback function with the length and the address of the + * data to be transmitted buffer respectively. + */ +typedef int (*usbd_request_handler)(struct usb_setup_packet *setup, + uint8_t **data,uint32_t *transfer_len); + +/* callback function pointer structure for Application to handle events */ +typedef void (*usbd_notify_handler)(uint8_t event, void* arg); + +typedef struct usbd_endpoint +{ + usb_slist_t list; + uint8_t ep_addr; + usbd_endpoint_callback ep_cb; +} usbd_endpoint_t; + +typedef struct usbd_interface +{ + usb_slist_t list; + /** Handler for USB Class specific Control (EP 0) communications */ + usbd_request_handler class_handler; + /** Handler for USB Vendor specific commands */ + usbd_request_handler vendor_handler; + /** Handler for USB custom specific commands */ + usbd_request_handler custom_handler; + /** Handler for USB event notify commands */ + usbd_notify_handler notify_handler; + uint8_t intf_num; + usb_slist_t ep_list; +} usbd_interface_t; + +typedef struct usbd_class +{ + usb_slist_t list; + const char *name; + usb_slist_t intf_list; +} usbd_class_t; + +void usbd_event_notify_handler(uint8_t event, void* arg); + +void usbd_desc_register(const uint8_t *desc); +void usbd_class_register(usbd_class_t *class); +void usbd_msosv1_desc_register(struct usb_msosv1_descriptor *desc); +void usbd_class_add_interface(usbd_class_t *class,usbd_interface_t *intf); +void usbd_interface_add_endpoint(usbd_interface_t *intf,usbd_endpoint_t *ep); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/docs/chipSpecification/bl70x_docs/BL702_BL704_706_RM_EN_1.1.pdf b/docs/chipSpecification/bl70x_docs/BL702_BL704_706_RM_EN_1.1.pdf new file mode 100644 index 00000000..b9f3c43d Binary files /dev/null and b/docs/chipSpecification/bl70x_docs/BL702_BL704_706_RM_EN_1.1.pdf differ diff --git a/docs/chipSpecification/bl70x_docs/BL702_BL704_706_RM_zh_CN_1.1.pdf b/docs/chipSpecification/bl70x_docs/BL702_BL704_706_RM_zh_CN_1.1.pdf new file mode 100644 index 00000000..b936a646 Binary files /dev/null and b/docs/chipSpecification/bl70x_docs/BL702_BL704_706_RM_zh_CN_1.1.pdf differ diff --git a/docs/chipSpecification/bl70x_docs/BL702_BL704_BL706_DS_EN_Combo_1.6.pdf b/docs/chipSpecification/bl70x_docs/BL702_BL704_BL706_DS_EN_Combo_1.6.pdf new file mode 100644 index 00000000..bbedb5a8 Binary files /dev/null and b/docs/chipSpecification/bl70x_docs/BL702_BL704_BL706_DS_EN_Combo_1.6.pdf differ diff --git a/docs/chipSpecification/bl70x_docs/BL702_BL704_BL706_DS_zh_CN_Combo_1.6.pdf b/docs/chipSpecification/bl70x_docs/BL702_BL704_BL706_DS_zh_CN_Combo_1.6.pdf new file mode 100644 index 00000000..cb45f040 Binary files /dev/null and b/docs/chipSpecification/bl70x_docs/BL702_BL704_BL706_DS_zh_CN_Combo_1.6.pdf differ diff --git a/docs/development_guide/Makefile b/docs/development_guide/Makefile new file mode 100644 index 00000000..d0c3cbf1 --- /dev/null +++ b/docs/development_guide/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/development_guide/build/doctrees/Linux_quick_start_ubuntu.doctree b/docs/development_guide/build/doctrees/Linux_quick_start_ubuntu.doctree new file mode 100644 index 00000000..d86d49e1 Binary files /dev/null and b/docs/development_guide/build/doctrees/Linux_quick_start_ubuntu.doctree differ diff --git a/docs/development_guide/build/doctrees/Windows_quick_start_cdk.doctree b/docs/development_guide/build/doctrees/Windows_quick_start_cdk.doctree new file mode 100644 index 00000000..d9dfcf5e Binary files /dev/null and b/docs/development_guide/build/doctrees/Windows_quick_start_cdk.doctree differ diff --git a/docs/development_guide/build/doctrees/Windows_quick_start_eclipse.doctree b/docs/development_guide/build/doctrees/Windows_quick_start_eclipse.doctree new file mode 100644 index 00000000..e1ea90fc Binary files /dev/null and b/docs/development_guide/build/doctrees/Windows_quick_start_eclipse.doctree differ diff --git a/docs/development_guide/build/doctrees/api_guide.doctree b/docs/development_guide/build/doctrees/api_guide.doctree new file mode 100644 index 00000000..5e19e84c Binary files /dev/null and b/docs/development_guide/build/doctrees/api_guide.doctree differ diff --git a/docs/development_guide/build/doctrees/blink_demo_introduce.doctree b/docs/development_guide/build/doctrees/blink_demo_introduce.doctree new file mode 100644 index 00000000..77e84bd9 Binary files /dev/null and b/docs/development_guide/build/doctrees/blink_demo_introduce.doctree differ diff --git a/docs/development_guide/build/doctrees/breath_pwm_demo_introduce.doctree b/docs/development_guide/build/doctrees/breath_pwm_demo_introduce.doctree new file mode 100644 index 00000000..affc5288 Binary files /dev/null and b/docs/development_guide/build/doctrees/breath_pwm_demo_introduce.doctree differ diff --git a/docs/development_guide/build/doctrees/connecting_hardware.doctree b/docs/development_guide/build/doctrees/connecting_hardware.doctree new file mode 100644 index 00000000..2a759b95 Binary files /dev/null and b/docs/development_guide/build/doctrees/connecting_hardware.doctree differ diff --git a/docs/development_guide/build/doctrees/environment.pickle b/docs/development_guide/build/doctrees/environment.pickle new file mode 100644 index 00000000..e696055c Binary files /dev/null and b/docs/development_guide/build/doctrees/environment.pickle differ diff --git a/docs/development_guide/build/doctrees/get_started.doctree b/docs/development_guide/build/doctrees/get_started.doctree new file mode 100644 index 00000000..44cda4cd Binary files /dev/null and b/docs/development_guide/build/doctrees/get_started.doctree differ diff --git a/docs/development_guide/build/doctrees/index.doctree b/docs/development_guide/build/doctrees/index.doctree new file mode 100644 index 00000000..ad154ebe Binary files /dev/null and b/docs/development_guide/build/doctrees/index.doctree differ diff --git a/docs/development_guide/build/doctrees/uart_loopback_demo_introduce.doctree b/docs/development_guide/build/doctrees/uart_loopback_demo_introduce.doctree new file mode 100644 index 00000000..8080a80f Binary files /dev/null and b/docs/development_guide/build/doctrees/uart_loopback_demo_introduce.doctree differ diff --git a/docs/development_guide/build/html/.buildinfo b/docs/development_guide/build/html/.buildinfo new file mode 100644 index 00000000..b2984659 --- /dev/null +++ b/docs/development_guide/build/html/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: cc25d7d982b3f2727b74849d9127cb3d +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/development_guide/build/html/Linux_quick_start_ubuntu.html b/docs/development_guide/build/html/Linux_quick_start_ubuntu.html new file mode 100644 index 00000000..5e98c5a0 --- /dev/null +++ b/docs/development_guide/build/html/Linux_quick_start_ubuntu.html @@ -0,0 +1,392 @@ + + + + + + + + + + 4. Linux 环境开发指南 — BL_MCU_SDK 开发指南 0.1 文档 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

4. Linux 环境开发指南

+

本文档介绍了如何在 Linux 安装配置 BL702 系列 MCU 需要的软件开发工具。

+
+

4.1. 需要的软硬件环境

+
    +
  • 一根 mini USB 数据线

  • +
  • 一个 USB-TTL 串口模块

  • +
  • 杜邦线若干

  • +
+
+
+

4.2. 配置 RISC-V 工具链

+
1
+2
+3
+4
+5
+6
+7
$ cd ~
+$ wget -c https://dev.bouffalolab.com/media/upload/download/riscv64-elf-x86_64-20210120.tar.gz
+$ mkdir -p riscv64-elf-20210120
+$ tar -zxvf riscv64-elf-x86_64-20210120.tar.gz -C riscv64-elf-20210120
+$ sudo cp ~/riscv64-elf-20210120  /usr/bin
+$ echo "export PATH=\"$PATH:/usr/bin/riscv64-elf-20210120/bin\""  >> ~/.bashrc
+$ source ~/.bashrc
+
+
+
+
+

4.3. 配置 cmake & make 工具

+
1
+2
+3
+4
+5
+6
+7
+8
$ sudo apt update
+$ sudo apt install make
+$ cd ~
+$ wget -c https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz
+$ tar -zxvf cmake-3.19.3-Linux-x86_64.tar.gz
+$ sudo cp ~/cmake-3.19.3-Linux-x86_64  /usr/bin
+$ echo "export PATH=\"$PATH:/usr/bin/cmake-3.19.3-Linux-x86_64/bin\""  >> ~/.bashrc
+$ source ~/.bashrc
+
+
+
+
+

4.4. 硬件连接

+
    +
  • 具体开发板的连接, 请参考 硬件连接 部分

  • +
  • 请确保开发板正确设置后再进行下面的步骤 (建议 Linux 下采用串口连接)

  • +
+
+
+

4.5. 获取 bl_mcu_sdk

+
    +
  • 打开终端输入以下命令获取 bl_mcu_sdk

  • +
+
1
+2
 $ cd ~
+ $ git clone https://gitee.com/bouffalolab/bl_mcu_sdk.git  --recursive
+
+
+
+
+

4.6. 测试 Hello World 工程

+
+

4.6.1. 打开 Hello World

+
    +
  • 获取到 SDK 后,进入 sdk 中的 examples/hellowd/helloworld 目录下,打开 main.c,即可编辑 helloworld 的相关代码。

  • +
+
1
+2
 $ cd ~/bl_mcu_sdk/examples/hellowd/helloworld
+ $ vi main.c
+
+
+
    +
  • 若编辑完成后,保存修改并关闭文件,接下来进行编译

  • +
+
+
+

4.6.2. 编译 Hello World

+
1
+2
 $ cd ~/bl_mcu_sdk
+ $ make build BOARD=bl706_iot APP=helloworld
+
+
+
+
+

4.6.3. 烧写 Hello World

+
    +
  • 烧写前请先确认烧写方式,若采用串口烧写,请先按住板子上的 boot 键不要释放,此时在按下 rst 键,然后释放两个键,此时板子进入 boot_rom 状态。

  • +
  • 这时在终端中输入以下命令进行烧写

  • +
+
1
+2
 $ cd ~/bl_mcu_sdk
+ $ make download INTERFACE=uart
+
+
+
    +
  • 如果下载失败请检查:

    +
      +
      1. +
      2. 是否使用串口烧写,开发板是否供电,硬件连接是否正确。

      3. +
      +
    • +
      1. +
      2. 烧写命令是否在 bl_mcu_sdk 目录下执行

      3. +
      +
    • +
      1. +
      2. 是否进入 boot_rom 模式

      3. +
      +
    • +
      1. +
      2. 串口是否被占用

      3. +
      +
    • +
    +
  • +
+
+
+

4.6.4. 运行 Hello World

+
    +
  • 打开新的终端,安装、运行串口工具

  • +
+
1
+2
 $ sudo apt install picocom   # 若已经安装请忽略
+ $ picocom -b 2000000 /dev/ttyUSB0
+
+
+
    +
  • 按一下开发板上的 rst 按键,即可在串口终端中看到 hello world!

  • +
+
+ +

helloworld!

+
+
+
+

4.6.5. 调试 Hello World

+
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/development_guide/build/html/Windows_quick_start_cdk.html b/docs/development_guide/build/html/Windows_quick_start_cdk.html new file mode 100644 index 00000000..00827321 --- /dev/null +++ b/docs/development_guide/build/html/Windows_quick_start_cdk.html @@ -0,0 +1,412 @@ + + + + + + + + + + 2. Windows 下使用 CDK (类 MDK Keil)开发指南 — BL_MCU_SDK 开发指南 0.1 文档 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
    + +
  • »
  • + +
  • 2. Windows 下使用 CDK (类 MDK Keil)开发指南
  • + + +
  • + + + View page source + + +
  • + +
+ + +
+
+
+
+ +
+

2. Windows 下使用 CDK (类 MDK Keil)开发指南

+

本文档介绍了如何在 Windows 下使用 平头哥半导体 开发的 CDK 集成开发环境, +来完成博流 BL702 系列 MCU 的相关软件开发工作。

+

关于剑池 CDK ,这是一款由平头哥半导体开发打造的集成开发环境。它拥有和传统 MCU 开发环境十分近似的操作和设置,旨在不改变用户开发习惯的基础上,全面接入云端开发资源,结合图形化的 OSTracer、Profiling 等调试分析工具,加速用户产品开发。

+
+

2.1. 需要的软硬件环境

+
    +
  • 剑池 CDK 软件

  • +
  • 一根 USB Type-A 数据线

  • +
  • 一个 CK-Link 仿真器

  • +
  • 一个 USB-TTL 串口模块

  • +
  • 杜邦线若干

  • +
+
+
+

2.2. 下载剑池 CDK 软件安装包

+
    +
  • 剑池CDK 软件安装可以从平头哥半导体 OCC 官网获取到。

  • +
  • 下载完成后,解压缩,双击 setup.exe,按照其提示,完成软件安装即可。

  • +
+
+
+

2.3. 下载 bl_mcu_sdk 软件开发包

+
    +
  • 从开源社区下载 bl_mcu_sdk 软件开发包。

    +
      +
    • 可以使用 git clone 或者直接 download 的方式下 SDK

    • +
    • 使用 git clone 前请确保已正确安装 git,打开支持 git 的终端输入以下命令即可获取最新的 SDK。

    • +
    +
    1
    $ git clone https://gitee.com/bouffalolab/bl_mcu_sdk.git  --recursive
    +
    +
    +
  • +
+
+
+

2.4. 硬件连接

+
    +
  • 具体开发板的连接, 请参考 硬件连接 部分

  • +
  • 请确保开发板被正确设置后再进行下面的步骤

  • +
+
+
+

2.5. 测试 Hello World 工程

+
+

2.5.1. 打开 Hello World

+
    +
  • 获取到 SDK 后,进入 sdk 中的 examples/hellowd/helloworld/cdk 目录下,双击 helloworld.cdkproj,即可打开 Helloworld 工程。

  • +
+
+
+

2.5.2. 编译 Hello World

+
+ +

helloworld.cdkproj

+
+
    +
  • 在 CDK 工具栏中,点击编译图标即可编译工程

    +
      +
    • 点击 1 处 图标 Build Project 即可编译当前选中的工程

    • +
    • 点击 2 处 图标 Clean Project 即可清除上次编译的结果

    • +
    • 点击 3 处 图标 Flash Download 即可将编译好的代码下载到芯片中

    • +
    • 点击 4 处 图标 Start/Stop Debug 即可进行 debug 的相关操作

    • +
    • 也可以在 Project 中,右击工程名称,通过右击菜单中的选项对项目进行编译等操作

    • +
    +
  • +
+
+
+

2.5.3. 烧写 Hello World

+
    +
  • 由于目前 CDK 软件中还没有包含我们的 flash 算法,所以需要我们手动将 flash 算法放到 CDK 安装目录,具体操作如下:

    +
      +
    • 进入 SDK 目录下 tools\cdk_flashloader 目录

    • +
    • 将目录下的 bl70x_flasher.elf 文件,拷贝到 CDK 工具的 C-Sky\CDK\CSKY\Flash 目录中

    • +
    +
    + +

    CDK Flash Loader

    +
    +
  • +
+
+ +

CDK Project Setting

+
+
    +
  • 点击 Project View 中的项目设置按钮,打开 Project Setting 窗口,或者通过右击 Project 名称中右击菜单栏中打开

  • +
  • 在打开的 Project Setting 窗口中,选择 Flash 标签,配置需要的 Flash 算法

  • +
+
+ +

CDK Project Flash setting

+
+
    +
  • Flash 标签中,点击 Add 按纽,在打开的列表中选择 bl70x_flash 算法,点击 Add 添加到工程中,Flash 标签下的其他设置,如图所示:

  • +
  • 点击 OK 后,如配置正确,点击 Flash Download 即可将编译好的代码下载到芯片中

  • +
+
+ +

CDK Flashdownload Success

+
+
    +
  • 如下载失败请检查:

    +
      +
      1. +
      2. 代码是否被正确编译,并生成 .elf .bin 等文件

      3. +
      +
    • +
      1. +
      2. Flash 算法是否被正确设置

      3. +
      +
    • +
      1. +
      2. CK-Link 与开发板是否正确连接

      3. +
      +
    • +
      1. +
      2. 开发板是否正常供电,电源指示灯是否点亮

      3. +
      +
    • +
    +
  • +
+
+
+

2.5.4. 运行 Hello World

+
    +
  • 从 CDK 的菜单栏 View->Serial Pane,打开串口面板,在打开的 Serial Pane 中右击,进行串口设置,选择你对应的串口号和波特率

  • +
+
+_images/cdk4.png +
+
+ +

CDK Serial Pane setting

+
+
    +
  • 按下板子上的 RST 按键,即可在串口中看到代码的运行结果

  • +
+
+ +

HelloWorld!

+
+
+
+

2.5.5. 调试 Hello World

+
    +
  • 点击工具栏上方的 Start/Stop Debugger 按钮,进入 debug 界面,如下图所示

  • +
+
+ +

Debug HelloWorld!

+
+
    +
  • 在 debug 界面下,左侧的 Register 窗口中,可以查看 CPU 内部寄存器数据;右侧的 Peripherals 外设面板中, +可以查看相应外设寄存器数据,外设的选择可以在顶部菜单栏的 Peripherals->System Viewer 选择; +点击上方工具栏中的相关调试按钮可以进行断点设置、单步调试、指令单步和全速运行等操作。 +当然这些操作都有相应的快捷键和快捷设置方法,详情请参考 CDK Help,这里就不作过多介绍了。

  • +
  • 我们点击单步运行按钮,运行代码,即可看到指示光标移动到下一句代码,同时可以看到串口面板中显示了我们输出的 Hello World!

  • +
+
+ +

Debug HelloWorld!

+
+
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/development_guide/build/html/Windows_quick_start_eclipse.html b/docs/development_guide/build/html/Windows_quick_start_eclipse.html new file mode 100644 index 00000000..012e3d87 --- /dev/null +++ b/docs/development_guide/build/html/Windows_quick_start_eclipse.html @@ -0,0 +1,418 @@ + + + + + + + + + + 3. Windows 下使用 Eclipse 开发指南 — BL_MCU_SDK 开发指南 0.1 文档 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
    + +
  • »
  • + +
  • 3. Windows 下使用 Eclipse 开发指南
  • + + +
  • + + + View page source + + +
  • + +
+ + +
+
+
+
+ +
+

3. Windows 下使用 Eclipse 开发指南

+

本文档介绍了如何在 Windows 下使用 eclipse,构建 BL702 系列 MCU 的软件开发环境。

+
+

3.1. 需要的软硬件环境

+
    +
  • Eclipse 免安装软件包

  • +
  • 串口助手软件

  • +
  • 一根 USB Type-A 数据线

  • +
  • 一个 j-link 仿真器

  • +
  • 一个 USB-TTL 串口模块

  • +
  • 杜邦线若干

  • +
+
+
+

3.2. 下载 Eclipse 安装包

+ +
+
+

3.3. 下载 bl_mcu_sdk

+
    +
  • 从开源社区下载 bl_mcu_sdk 软件开发包。

  • +
  • 可以使用 git clone 或者直接 download 的方式下 SDK

  • +
  • 使用 git clone 前请确保已正确安装 git,打开支持 git 的终端输入以下命令即可获取最新的 SDK。

  • +
+
1
$ git clone https://gitee.com/bouffalolab/bl_mcu_sdk.git  --recursive
+
+
+
+
+

3.4. 配置 eclipse 开发环境

+
    +
  • 将获取到的 eclipse 压缩包拷贝到您的工作目录,解压 eclipse 压缩包

  • +
  • 进入 eclipse 目录,双击 eclipse.exe 启动 eclipse

  • +
  • 选择您的 Workspace 目录,点击 Launch 进入工作空间

    +
    + +
    +
  • +
  • 点击菜单栏中 Window->preferences 打开环境配置相关页面,准备导入相关的配置环境

    +
    + +
    +
  • +
  • 点击下图 1 处的图标,打开导入配置界面,按照如图所示步骤,选择 eclipse.exe 目录下的 bflb_mcu_preferences.epf 配置文件。

    +
    + +
    +
  • +
  • 选择好对应的文件后,点击 Finish,在弹出的对话框选中点击 cancel ,不用重新启动。

    +
    + +
    +
  • +
+
+
+

3.5. 导入 bl_mcu_sdk

+
    +
  • 点击 菜单栏 File->Import ,打开导入项目的配置界面

    +
    + +
    +
  • +
  • 在打开的 Import 窗口中选择 General->Existing Projects into Workspace ,然后点击 Next

    +
    + +
    +
  • +
  • 加载 bl_mcu_sdk 的工程路径后,点击 Finsh 完成导入

    +
    + +
    +
  • +
  • 导入完成后,关闭 Welcome 窗口即可看到导入的工程

    +
    + +
    +
    + +
    +
  • +
  • 展开 Build Target 目录,即可看到 bl_cleanbl_makedownload 三个功能按钮。

    +
      +
    • 双击 bl_clean 按钮,会清除 buildout 两个目录下的编译缓存

    • +
    • 双击 bl_make 按钮,会正常编译设置的 case,若没有修改默认配置则会编译 helloworld 工程

    • +
    • 双击 download 按钮,会下载代码到芯片中,若没有编译成功则会下载默认的或者上一次的 .bin 文件

    • +
    +
  • +
+
+
+

3.6. 硬件连接

+
    +
  • 具体开发板的连接, 请参考 硬件连接 部分;(eclipse 环境建议使用 j-link 烧写、调试)

  • +
  • 请确保开发板正确设置后再进行下面的步骤

  • +
+
+
+

3.7. 测试 Hello World 工程

+
+

3.7.1. 打开 Hello World

+
    +
  • 打开 examples/hellowd/helloworld/main.c 文件,即可编辑、修改 helloworld 测试 demo 的代码,若修改了,请保存后在执行编译

  • +
+
+
+

3.7.2. 编译 Hello World

+
    +
  • 双击 bl_make 即可编 helloworld 工程

  • +
  • 编译成功后 Console 窗口可以看到如下图所示的 log 信息

  • +
+
+_images/pic10.png +
+
+
+

3.7.3. 烧写 Hello World

+
    +
  • 双击 download 即可烧写 helloworld 工程 bin 文件到芯片中

  • +
  • 下载成功后 Console 窗口可以看到如下图所示的 log 信息

  • +
+
+_images/pic11.png +
+
+
+

3.7.4. 运行 Hello World

+
    +
  • 将开发板的 TXD0RXD0GND 引脚使用杜邦线连接到 USB-TTL 串口模块,将串口模块插入 PC 主机, 使用任意的串口助手软件打开串口

  • +
  • 烧写成功后,按下板子上的 rst 按键,如果下载正确,即可在串口助手软件中看到如下图所示的 log 信息。

  • +
+
+_images/eclipse_run.png +
+
+
+

3.7.5. 调试 Hello World

+
    +
  • 点击 eclipse 工具栏中的 Debug 按钮,进入 debug 配置窗口

  • +
  • 选择 GDB SEGGER J-Link Debugging->Jlink_bl_mcu_sdk Debug 配置,在 C/C++ Application: 选项中选择需要调试的 .elf 文件

  • +
  • 先点击 Apply 后,在点击 Debug 即可进行 Debug

  • +
+
+ +
+
    +
  • 进入 Debug 界面后,即可看到程序停在了 main,点击上方工具栏中的 Step Over,按钮即可对代码工程进行单步调试。

  • +
+
+ +

Eclipse Debugging

+
+
+
+
+

3.8. 编译烧写不同的目标工程

+
    +
  • 当右击 bl_make 按钮,点击 Edit 后,会弹出更换目标工程的配置界面,如下图所示

  • +
+
+ +
+
    +
  • 其中 APP=xxx 用户可以修改其内容,改为需要编译烧写的目标工程名,例如想要编译烧写 gpio/gpio_blink 工程,将其修改为 APP=gpio_blink 即可

  • +
  • Build commandmake BOARD=bl706_iot 会指定不同的 Board 类型以指定适配不同类型的开发板。

  • +
  • Board 类型决定编译时选择相应的 borad 头文件。默认选择的是 BL706 的 iot 开发板 make build BOARD=bl706_iot

  • +
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/development_guide/build/html/_images/api1.png b/docs/development_guide/build/html/_images/api1.png new file mode 100644 index 00000000..87fe195a Binary files /dev/null and b/docs/development_guide/build/html/_images/api1.png differ diff --git a/docs/development_guide/build/html/_images/bl702_iot.png b/docs/development_guide/build/html/_images/bl702_iot.png new file mode 100644 index 00000000..0b96853b Binary files /dev/null and b/docs/development_guide/build/html/_images/bl702_iot.png differ diff --git a/docs/development_guide/build/html/_images/blink_breath_sch.png b/docs/development_guide/build/html/_images/blink_breath_sch.png new file mode 100644 index 00000000..ee8fd3bc Binary files /dev/null and b/docs/development_guide/build/html/_images/blink_breath_sch.png differ diff --git a/docs/development_guide/build/html/_images/cdk1.png b/docs/development_guide/build/html/_images/cdk1.png new file mode 100644 index 00000000..ef477b17 Binary files /dev/null and b/docs/development_guide/build/html/_images/cdk1.png differ diff --git a/docs/development_guide/build/html/_images/cdk10.png b/docs/development_guide/build/html/_images/cdk10.png new file mode 100644 index 00000000..c0279b10 Binary files /dev/null and b/docs/development_guide/build/html/_images/cdk10.png differ diff --git a/docs/development_guide/build/html/_images/cdk11.png b/docs/development_guide/build/html/_images/cdk11.png new file mode 100644 index 00000000..eb1932dd Binary files /dev/null and b/docs/development_guide/build/html/_images/cdk11.png differ diff --git a/docs/development_guide/build/html/_images/cdk3.png b/docs/development_guide/build/html/_images/cdk3.png new file mode 100644 index 00000000..ad453712 Binary files /dev/null and b/docs/development_guide/build/html/_images/cdk3.png differ diff --git a/docs/development_guide/build/html/_images/cdk4.png b/docs/development_guide/build/html/_images/cdk4.png new file mode 100644 index 00000000..5c198917 Binary files /dev/null and b/docs/development_guide/build/html/_images/cdk4.png differ diff --git a/docs/development_guide/build/html/_images/cdk5.png b/docs/development_guide/build/html/_images/cdk5.png new file mode 100644 index 00000000..1c3c2513 Binary files /dev/null and b/docs/development_guide/build/html/_images/cdk5.png differ diff --git a/docs/development_guide/build/html/_images/cdk6.png b/docs/development_guide/build/html/_images/cdk6.png new file mode 100644 index 00000000..2478ba24 Binary files /dev/null and b/docs/development_guide/build/html/_images/cdk6.png differ diff --git a/docs/development_guide/build/html/_images/cdk7.png b/docs/development_guide/build/html/_images/cdk7.png new file mode 100644 index 00000000..7eb65431 Binary files /dev/null and b/docs/development_guide/build/html/_images/cdk7.png differ diff --git a/docs/development_guide/build/html/_images/cdk8.png b/docs/development_guide/build/html/_images/cdk8.png new file mode 100644 index 00000000..e208d88f Binary files /dev/null and b/docs/development_guide/build/html/_images/cdk8.png differ diff --git a/docs/development_guide/build/html/_images/cdk9.png b/docs/development_guide/build/html/_images/cdk9.png new file mode 100644 index 00000000..10ec6582 Binary files /dev/null and b/docs/development_guide/build/html/_images/cdk9.png differ diff --git a/docs/development_guide/build/html/_images/ck_link_connect_bl706_iot.png b/docs/development_guide/build/html/_images/ck_link_connect_bl706_iot.png new file mode 100644 index 00000000..34d3625b Binary files /dev/null and b/docs/development_guide/build/html/_images/ck_link_connect_bl706_iot.png differ diff --git a/docs/development_guide/build/html/_images/eclipse_run.png b/docs/development_guide/build/html/_images/eclipse_run.png new file mode 100644 index 00000000..aa6e3363 Binary files /dev/null and b/docs/development_guide/build/html/_images/eclipse_run.png differ diff --git a/docs/development_guide/build/html/_images/jlink_connect_bl706_iot.png b/docs/development_guide/build/html/_images/jlink_connect_bl706_iot.png new file mode 100644 index 00000000..58e58581 Binary files /dev/null and b/docs/development_guide/build/html/_images/jlink_connect_bl706_iot.png differ diff --git a/docs/development_guide/build/html/_images/linux1.png b/docs/development_guide/build/html/_images/linux1.png new file mode 100644 index 00000000..0f55ebdb Binary files /dev/null and b/docs/development_guide/build/html/_images/linux1.png differ diff --git a/docs/development_guide/build/html/_images/pic1.png b/docs/development_guide/build/html/_images/pic1.png new file mode 100644 index 00000000..9866e309 Binary files /dev/null and b/docs/development_guide/build/html/_images/pic1.png differ diff --git a/docs/development_guide/build/html/_images/pic10.png b/docs/development_guide/build/html/_images/pic10.png new file mode 100644 index 00000000..b61cbfa9 Binary files /dev/null and b/docs/development_guide/build/html/_images/pic10.png differ diff --git a/docs/development_guide/build/html/_images/pic11.png b/docs/development_guide/build/html/_images/pic11.png new file mode 100644 index 00000000..9fe441dd Binary files /dev/null and b/docs/development_guide/build/html/_images/pic11.png differ diff --git a/docs/development_guide/build/html/_images/pic12.png b/docs/development_guide/build/html/_images/pic12.png new file mode 100644 index 00000000..f60184f9 Binary files /dev/null and b/docs/development_guide/build/html/_images/pic12.png differ diff --git a/docs/development_guide/build/html/_images/pic14.png b/docs/development_guide/build/html/_images/pic14.png new file mode 100644 index 00000000..bf018a3a Binary files /dev/null and b/docs/development_guide/build/html/_images/pic14.png differ diff --git a/docs/development_guide/build/html/_images/pic15.png b/docs/development_guide/build/html/_images/pic15.png new file mode 100644 index 00000000..73b97316 Binary files /dev/null and b/docs/development_guide/build/html/_images/pic15.png differ diff --git a/docs/development_guide/build/html/_images/pic2.png b/docs/development_guide/build/html/_images/pic2.png new file mode 100644 index 00000000..2d5129bc Binary files /dev/null and b/docs/development_guide/build/html/_images/pic2.png differ diff --git a/docs/development_guide/build/html/_images/pic3.png b/docs/development_guide/build/html/_images/pic3.png new file mode 100644 index 00000000..0e20a992 Binary files /dev/null and b/docs/development_guide/build/html/_images/pic3.png differ diff --git a/docs/development_guide/build/html/_images/pic4.png b/docs/development_guide/build/html/_images/pic4.png new file mode 100644 index 00000000..9424826d Binary files /dev/null and b/docs/development_guide/build/html/_images/pic4.png differ diff --git a/docs/development_guide/build/html/_images/pic5.png b/docs/development_guide/build/html/_images/pic5.png new file mode 100644 index 00000000..40158e36 Binary files /dev/null and b/docs/development_guide/build/html/_images/pic5.png differ diff --git a/docs/development_guide/build/html/_images/pic6.png b/docs/development_guide/build/html/_images/pic6.png new file mode 100644 index 00000000..009a704e Binary files /dev/null and b/docs/development_guide/build/html/_images/pic6.png differ diff --git a/docs/development_guide/build/html/_images/pic7.png b/docs/development_guide/build/html/_images/pic7.png new file mode 100644 index 00000000..c88657dc Binary files /dev/null and b/docs/development_guide/build/html/_images/pic7.png differ diff --git a/docs/development_guide/build/html/_images/pic8.png b/docs/development_guide/build/html/_images/pic8.png new file mode 100644 index 00000000..445b10d1 Binary files /dev/null and b/docs/development_guide/build/html/_images/pic8.png differ diff --git a/docs/development_guide/build/html/_images/pic9.png b/docs/development_guide/build/html/_images/pic9.png new file mode 100644 index 00000000..28e7756c Binary files /dev/null and b/docs/development_guide/build/html/_images/pic9.png differ diff --git a/docs/development_guide/build/html/_images/uart_loop_sch.png b/docs/development_guide/build/html/_images/uart_loop_sch.png new file mode 100644 index 00000000..e6bb7e45 Binary files /dev/null and b/docs/development_guide/build/html/_images/uart_loop_sch.png differ diff --git a/docs/development_guide/build/html/_sources/Linux_quick_start_ubuntu.rst.txt b/docs/development_guide/build/html/_sources/Linux_quick_start_ubuntu.rst.txt new file mode 100644 index 00000000..8f7f344e --- /dev/null +++ b/docs/development_guide/build/html/_sources/Linux_quick_start_ubuntu.rst.txt @@ -0,0 +1,134 @@ +Linux 环境开发指南 +============================= + +本文档介绍了如何在 Linux 安装配置 BL702 系列 MCU 需要的软件开发工具。 + + + +需要的软硬件环境 +----------------------------- + +- 一根 mini USB 数据线 +- 一个 USB-TTL 串口模块 +- 杜邦线若干 + +配置 RISC-V 工具链 +----------------------------- + +.. code-block:: bash + :linenos: + :emphasize-lines: 4-6 + + $ cd ~ + $ wget -c https://dev.bouffalolab.com/media/upload/download/riscv64-elf-x86_64-20210120.tar.gz + $ mkdir -p riscv64-elf-20210120 + $ tar -zxvf riscv64-elf-x86_64-20210120.tar.gz -C riscv64-elf-20210120 + $ sudo cp ~/riscv64-elf-20210120 /usr/bin + $ echo "export PATH=\"$PATH:/usr/bin/riscv64-elf-20210120/bin\"" >> ~/.bashrc + $ source ~/.bashrc + +配置 cmake & make 工具 +---------------------------- + +.. code-block:: bash + :linenos: + :emphasize-lines: 5-7 + + $ sudo apt update + $ sudo apt install make + $ cd ~ + $ wget -c https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz + $ tar -zxvf cmake-3.19.3-Linux-x86_64.tar.gz + $ sudo cp ~/cmake-3.19.3-Linux-x86_64 /usr/bin + $ echo "export PATH=\"$PATH:/usr/bin/cmake-3.19.3-Linux-x86_64/bin\"" >> ~/.bashrc + $ source ~/.bashrc + + +硬件连接 +---------------------- + +- 具体开发板的连接, 请参考 :ref:`connect_hardware` 部分 +- 请确保开发板正确设置后再进行下面的步骤 (建议 Linux 下采用串口连接) + + +获取 bl_mcu_sdk +--------------------------- + +- 打开终端输入以下命令获取 bl_mcu_sdk + +.. code-block:: bash + :linenos: + + $ cd ~ + $ git clone https://gitee.com/bouffalolab/bl_mcu_sdk.git --recursive + + +测试 Hello World 工程 +------------------------------ + +打开 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 获取到 SDK 后,进入 sdk 中的 ``examples/hellowd/helloworld`` 目录下,打开 ``main.c``,即可编辑 helloworld 的相关代码。 + +.. code-block:: bash + :linenos: + + $ cd ~/bl_mcu_sdk/examples/hellowd/helloworld + $ vi main.c + +- 若编辑完成后,保存修改并关闭文件,接下来进行编译 + +编译 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: bash + :linenos: + + $ cd ~/bl_mcu_sdk + $ make build BOARD=bl706_iot APP=helloworld + + +烧写 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 烧写前请先确认烧写方式,若采用串口烧写,请先按住板子上的 ``boot`` 键不要释放,此时在按下 ``rst`` 键,然后释放两个键,此时板子进入 boot_rom 状态。 +- 这时在终端中输入以下命令进行烧写 + +.. code-block:: bash + :linenos: + + $ cd ~/bl_mcu_sdk + $ make download INTERFACE=uart + +- 如果下载失败请检查: + + - 1. 是否使用串口烧写,开发板是否供电,硬件连接是否正确。 + - 2. 烧写命令是否在 ``bl_mcu_sdk`` 目录下执行 + - 3. 是否进入 boot_rom 模式 + - 4. 串口是否被占用 + +运行 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 打开新的终端,安装、运行串口工具 + +.. code-block:: bash + :linenos: + + $ sudo apt install picocom # 若已经安装请忽略 + $ picocom -b 2000000 /dev/ttyUSB0 + +- 按一下开发板上的 ``rst`` 按键,即可在串口终端中看到 ``hello world!`` + +.. figure:: img/linux1.png + :alt: + + helloworld! + + +调试 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + + diff --git a/docs/development_guide/build/html/_sources/Windows_quick_start_cdk.rst.txt b/docs/development_guide/build/html/_sources/Windows_quick_start_cdk.rst.txt new file mode 100644 index 00000000..5260c052 --- /dev/null +++ b/docs/development_guide/build/html/_sources/Windows_quick_start_cdk.rst.txt @@ -0,0 +1,164 @@ +Windows 下使用 CDK (类 MDK Keil)开发指南 +============================= + +本文档介绍了如何在 Windows 下使用 `平头哥半导体 `_ 开发的 CDK 集成开发环境, +来完成博流 BL702 系列 MCU 的相关软件开发工作。 + +关于剑池 CDK ,这是一款由平头哥半导体开发打造的集成开发环境。它拥有和传统 MCU 开发环境十分近似的操作和设置,旨在不改变用户开发习惯的基础上,全面接入云端开发资源,结合图形化的 OSTracer、Profiling 等调试分析工具,加速用户产品开发。 + + +需要的软硬件环境 +----------------------------- + +- 剑池 CDK 软件 +- 一根 USB Type-A 数据线 +- 一个 CK-Link 仿真器 +- 一个 USB-TTL 串口模块 +- 杜邦线若干 + + +下载剑池 CDK 软件安装包 +----------------------------- + +- `剑池CDK `_ 软件安装可以从平头哥半导体 OCC 官网获取到。 + +- 下载完成后,解压缩,双击 ``setup.exe``,按照其提示,完成软件安装即可。 + + +下载 bl_mcu_sdk 软件开发包 +---------------------------- + +- 从开源社区下载 bl_mcu_sdk 软件开发包。 + + - 可以使用 ``git clone`` 或者直接 ``download`` 的方式下 SDK + - 使用 ``git clone`` 前请确保已正确安装 ``git``,打开支持 ``git`` 的终端输入以下命令即可获取最新的 SDK。 + + .. code-block:: bash + :linenos: + :emphasize-lines: 1 + + $ git clone https://gitee.com/bouffalolab/bl_mcu_sdk.git --recursive + + +硬件连接 +---------------------- + +- 具体开发板的连接, 请参考 :ref:`connect_hardware` 部分 +- 请确保开发板被正确设置后再进行下面的步骤 + + +测试 Hello World 工程 +------------------------------ + +打开 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 获取到 SDK 后,进入 sdk 中的 ``examples/hellowd/helloworld/cdk`` 目录下,双击 ``helloworld.cdkproj``,即可打开 ``Helloworld`` 工程。 + + +编译 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. figure:: img/cdk1.png + :alt: + + helloworld.cdkproj + +- 在 CDK 工具栏中,点击编译图标即可编译工程 + + - 点击 ``1`` 处 图标 ``Build Project`` 即可编译当前选中的工程 + - 点击 ``2`` 处 图标 ``Clean Project`` 即可清除上次编译的结果 + - 点击 ``3`` 处 图标 ``Flash Download`` 即可将编译好的代码下载到芯片中 + - 点击 ``4`` 处 图标 ``Start/Stop Debug`` 即可进行 debug 的相关操作 + - 也可以在 ``Project`` 中,右击工程名称,通过右击菜单中的选项对项目进行编译等操作 + + +烧写 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 由于目前 CDK 软件中还没有包含我们的 flash 算法,所以需要我们手动将 flash 算法放到 CDK 安装目录,具体操作如下: + + - 进入 SDK 目录下 ``tools\cdk_flashloader`` 目录 + - 将目录下的 ``bl70x_flasher.elf`` 文件,拷贝到 CDK 工具的 ``C-Sky\CDK\CSKY\Flash`` 目录中 + + .. figure:: img/cdk7.png + :alt: + + CDK Flash Loader + + + +.. figure:: img/cdk8.png + :alt: + + CDK Project Setting + +- 点击 ``Project View`` 中的项目设置按钮,打开 ``Project Setting`` 窗口,或者通过右击 ``Project`` 名称中右击菜单栏中打开 + +- 在打开的 ``Project Setting`` 窗口中,选择 ``Flash`` 标签,配置需要的 Flash 算法 + +.. figure:: img/cdk9.png + :alt: + + CDK Project Flash setting + +- 在 ``Flash`` 标签中,点击 ``Add`` 按纽,在打开的列表中选择 ``bl70x_flash`` 算法,点击 ``Add`` 添加到工程中,``Flash`` 标签下的其他设置,如图所示: + +- 点击 OK 后,如配置正确,点击 ``Flash Download`` 即可将编译好的代码下载到芯片中 + + +.. figure:: img/cdk5.png + :alt: + + CDK Flashdownload Success + +- 如下载失败请检查: + + - 1. 代码是否被正确编译,并生成 ``.elf`` ``.bin`` 等文件 + - 2. Flash 算法是否被正确设置 + - 3. CK-Link 与开发板是否正确连接 + - 4. 开发板是否正常供电,电源指示灯是否点亮 + +运行 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 从 CDK 的菜单栏 ``View->Serial Pane``,打开串口面板,在打开的 ``Serial Pane`` 中右击,进行串口设置,选择你对应的串口号和波特率 + +.. figure:: img/cdk4.png +.. figure:: img/cdk3.png + :alt: + + CDK Serial Pane setting + +- 按下板子上的 ``RST`` 按键,即可在串口中看到代码的运行结果 + +.. figure:: img/cdk6.png + :alt: + + HelloWorld! + + +调试 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 点击工具栏上方的 ``Start/Stop Debugger`` 按钮,进入 debug 界面,如下图所示 + +.. figure:: img/cdk10.png + :alt: + + Debug HelloWorld! + +- 在 debug 界面下,左侧的 ``Register`` 窗口中,可以查看 ``CPU`` 内部寄存器数据;右侧的 ``Peripherals`` 外设面板中, + 可以查看相应外设寄存器数据,外设的选择可以在顶部菜单栏的 ``Peripherals->System Viewer`` 选择; + 点击上方工具栏中的相关调试按钮可以进行断点设置、单步调试、指令单步和全速运行等操作。 + 当然这些操作都有相应的快捷键和快捷设置方法,详情请参考 ``CDK Help``,这里就不作过多介绍了。 + +- 我们点击单步运行按钮,运行代码,即可看到指示光标移动到下一句代码,同时可以看到串口面板中显示了我们输出的 ``Hello World!`` + +.. figure:: img/cdk11.png + :alt: + + Debug HelloWorld! + + + diff --git a/docs/development_guide/build/html/_sources/Windows_quick_start_eclipse.rst.txt b/docs/development_guide/build/html/_sources/Windows_quick_start_eclipse.rst.txt new file mode 100644 index 00000000..b33234e7 --- /dev/null +++ b/docs/development_guide/build/html/_sources/Windows_quick_start_eclipse.rst.txt @@ -0,0 +1,175 @@ +Windows 下使用 Eclipse 开发指南 +============================= + +本文档介绍了如何在 Windows 下使用 eclipse,构建 BL702 系列 MCU 的软件开发环境。 + + +需要的软硬件环境 +----------------------------- + +- Eclipse 免安装软件包 +- 串口助手软件 +- 一根 USB Type-A 数据线 +- 一个 j-link 仿真器 +- 一个 USB-TTL 串口模块 +- 杜邦线若干 + + +下载 Eclipse 安装包 +----------------------------- + +- 从 Bouffalo Lab 开发者社区下载带有 RISC-V 工具链的 `Eclipse https://dev.bouffalolab.com/download `_ 安装包。 + +下载 bl_mcu_sdk +----------------------------- + +- 从开源社区下载 `bl_mcu_sdk `_ 软件开发包。 + +- 可以使用 ``git clone`` 或者直接 ``download`` 的方式下 SDK +- 使用 ``git clone`` 前请确保已正确安装 ``git``,打开支持 ``git`` 的终端输入以下命令即可获取最新的 SDK。 + +.. code-block:: bash + :linenos: + :emphasize-lines: 1 + + $ git clone https://gitee.com/bouffalolab/bl_mcu_sdk.git --recursive + + +配置 eclipse 开发环境 +---------------------------- + +- 将获取到的 eclipse 压缩包拷贝到您的工作目录,解压 eclipse 压缩包 +- 进入 eclipse 目录,双击 ``eclipse.exe`` 启动 eclipse +- 选择您的 ``Workspace`` 目录,点击 ``Launch`` 进入工作空间 + + .. figure:: img/pic1.png + :alt: + +- 点击菜单栏中 ``Window->preferences`` 打开环境配置相关页面,准备导入相关的配置环境 + + .. figure:: img/pic2.png + :alt: + +- 点击下图 1 处的图标,打开导入配置界面,按照如图所示步骤,选择 ``eclipse.exe`` 目录下的 ``bflb_mcu_preferences.epf`` 配置文件。 + + .. figure:: img/pic3.png + :alt: + +- 选择好对应的文件后,点击 ``Finish``,在弹出的对话框选中点击 ``cancel`` ,不用重新启动。 + + .. figure:: img/pic4.png + :alt: + +导入 bl_mcu_sdk +-------------------------- + +- 点击 菜单栏 ``File->Import`` ,打开导入项目的配置界面 + + .. figure:: img/pic5.png + :alt: + +- 在打开的 ``Import`` 窗口中选择 ``General->Existing Projects into Workspace`` ,然后点击 ``Next`` + + .. figure:: img/pic6.png + :alt: + +- 加载 bl_mcu_sdk 的工程路径后,点击 ``Finsh`` 完成导入 + + .. figure:: img/pic7.png + :alt: + +- 导入完成后,关闭 ``Welcome`` 窗口即可看到导入的工程 + + .. figure:: img/pic8.png + :alt: + + .. figure:: img/pic9.png + :alt: + +- 展开 ``Build Target`` 目录,即可看到 ``bl_clean``、``bl_make``、``download`` 三个功能按钮。 + + - 双击 ``bl_clean`` 按钮,会清除 ``build`` 和 ``out`` 两个目录下的编译缓存 + - 双击 ``bl_make`` 按钮,会正常编译设置的 case,若没有修改默认配置则会编译 ``helloworld`` 工程 + - 双击 ``download`` 按钮,会下载代码到芯片中,若没有编译成功则会下载默认的或者上一次的 ``.bin`` 文件 + + +硬件连接 +---------------------- + +- 具体开发板的连接, 请参考 :ref:`connect_hardware` 部分;(eclipse 环境建议使用 ``j-link`` 烧写、调试) +- 请确保开发板正确设置后再进行下面的步骤 + + +测试 Hello World 工程 +------------------------------ + + +打开 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 打开 ``examples/hellowd/helloworld/main.c`` 文件,即可编辑、修改 ``helloworld`` 测试 demo 的代码,若修改了,请保存后在执行编译 + + +编译 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 双击 ``bl_make`` 即可编 helloworld 工程 + +- 编译成功后 ``Console`` 窗口可以看到如下图所示的 log 信息 + +.. figure:: img/pic10.png + + +烧写 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 双击 ``download`` 即可烧写 helloworld 工程 ``bin`` 文件到芯片中 + +- 下载成功后 ``Console`` 窗口可以看到如下图所示的 log 信息 + +.. figure:: img/pic11.png + + +运行 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 将开发板的 ``TXD0``、``RXD0`` 和 ``GND`` 引脚使用杜邦线连接到 USB-TTL 串口模块,将串口模块插入 PC 主机, 使用任意的串口助手软件打开串口 +- 烧写成功后,按下板子上的 ``rst`` 按键,如果下载正确,即可在串口助手软件中看到如下图所示的 log 信息。 + +.. figure:: img/eclipse_run.png + + +调试 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 点击 eclipse 工具栏中的 ``Debug`` 按钮,进入 debug 配置窗口 +- 选择 ``GDB SEGGER J-Link Debugging->Jlink_bl_mcu_sdk`` Debug 配置,在 ``C/C++ Application:`` 选项中选择需要调试的 ``.elf`` 文件 +- 先点击 ``Apply`` 后,在点击 ``Debug`` 即可进行 ``Debug`` + +.. figure:: img/pic14.png + :alt: + +- 进入 Debug 界面后,即可看到程序停在了 ``main``,点击上方工具栏中的 ``Step Over``,按钮即可对代码工程进行单步调试。 + +.. figure:: img/pic15.png + :alt: + + Eclipse Debugging + + +编译烧写不同的目标工程 +----------------------- + +- 当右击 ``bl_make`` 按钮,点击 ``Edit`` 后,会弹出更换目标工程的配置界面,如下图所示 + +.. figure:: img/pic12.png + :alt: + + +- 其中 ``APP=xxx`` 用户可以修改其内容,改为需要编译烧写的目标工程名,例如想要编译烧写 ``gpio/gpio_blink`` 工程,将其修改为 ``APP=gpio_blink`` 即可 +- ``Build command`` 中 ``make BOARD=bl706_iot`` 会指定不同的 Board 类型以指定适配不同类型的开发板。 + +- ``Board`` 类型决定编译时选择相应的 ``borad`` 头文件。默认选择的是 BL706 的 iot 开发板 ``make build BOARD=bl706_iot`` + + + diff --git a/docs/development_guide/build/html/_sources/api_guide.rst.txt b/docs/development_guide/build/html/_sources/api_guide.rst.txt new file mode 100644 index 00000000..8fbae716 --- /dev/null +++ b/docs/development_guide/build/html/_sources/api_guide.rst.txt @@ -0,0 +1,773 @@ +API 分层模型 +========================= + +简介 +---- + +为了不影响用户应用层代码因为芯片驱动的不同而频繁修改,**bl_mcu_sdk** 的外设 API 采用了 HAL 层的思想,屏蔽了底层硬件的实现。而 HAL 层又分为两大类: + +- 设备驱动管理层:提供一套标准的接口,具体实现由外设驱动适配层实现。 +- 外设驱动适配层:实现设备驱动管理层的标准接口,并且拓展自己的独特的接口。 + +整体的代码分层框架如图所示: + +.. figure:: img/api1.png + :alt: + + code structure + +- 应用层是用户自己编写的代码,接口则是调用 hal 层的接口。 +- HAL 层提供给应用层接口,底层调用 std 层,不同的芯片调用不同的 std 层。 +- STD 层则是对硬件寄存器进行简单封装,由外设驱动适配层进行调用。 + +设备驱动管理层实现 +--------------------- + +设备驱动管理层的实现采用了面向对象的思想,首先我们将外设看成是一个设备或者是文件,秉承 **一切皆文件** 的理念,而文件又都具有标准的调用接口:``open``、``close``、``ctrl``、``write``、``read``、``callback``,不同文件类别不同(比如串口设备、ADC设备、SPI设备),并且打开的方式也不同(比如轮询、中断、DMA),由此,我们可以构建出一个对象的基类(父类)。 + +**基类** + +.. code-block:: C + + struct device + { + char name[NAME_MAX]; /*name of device */ + dlist_t list; /*list node of device */ + enum device_status_type status; /*status of device */ + enum device_class_type type; /*type of device */ + uint16_t oflag; /*oflag of device */ + + int (*open)(struct device *dev, uint16_t oflag); + int (*close)(struct device *dev); + int (*control)(struct device *dev, int cmd, void *args); + int (*write)(struct device *dev, uint32_t pos, const void *buffer, uint32_t size); + int (*read)(struct device *dev, uint32_t pos, void *buffer, uint32_t size); + void (*callback)(struct device *dev, void *args, uint32_t size, uint32_t event); + void *handle; + }; + +**基类成员:name** + +给设备取名,后面会使用 ``device_find`` 找到这个设备。 + +**基类成员:type** + +``type`` 记录当前设备的类别,可以选择的 ``type`` 类型如下。 + +.. code-block:: C + + enum device_class_type + { + DEVICE_CLASS_NONE = 0, + DEVICE_CLASS_GPIO, + DEVICE_CLASS_UART, + DEVICE_CLASS_SPI, + DEVICE_CLASS_I2C, + DEVICE_CLASS_ADC, + DEVICE_CLASS_DMA, + DEVICE_CLASS_TIMER, + DEVICE_CLASS_PWM, + DEVICE_CLASS_SDIO, + DEVICE_CLASS_USB, + DEVICE_CLASS_I2S, + DEVICE_CLASS_CAMERA, + DEVICE_CLASS_SEC_HASH, + } ; + +**基类成员:status** + +``status`` 用来记录当前设备的状态,当前提供 4 种状态。 + +.. code-block:: C + + enum device_status_type + { + DEVICE_UNREGISTER = 0, + DEVICE_REGISTERED, + DEVICE_OPENED, + DEVICE_CLOSED + } ; + +**基类成员:oflag** + +``oflag`` 记录 注册时填入的 flag 信息以及使用 ``device_open`` 时填入的 ``oflag`` 信息。 + +**基类成员:list** + +设备的增加和删除使用双向链表进行存储,节省内存。 + +**基类成员:标准的函数指针** + +为不同的外设提供了标准的函数接口,当外设实现此类接口并赋值给该成员,便能达到重写的功能。 + +设备驱动管理层标准接口 +----------------------- + +**device_register** +^^^^^^^^^^^^^^^^^^^^ + +``device_register`` 用于设备的注册,将设备信息注册到链表当中。 + +.. code-block:: C + + int device_register(struct device *dev, const char *name, uint16_t flag); + +- dev 设备句柄。 +- name 设备名称。 +- flag 设备的读写属性 +- return 返回错误码,0 表示注册成功,其他表示错误。 + +``flag`` 可以写入以下参数,表示:**只读**、**只写**、**可读可写**。 + +.. code-block:: C + + #define DEVICE_OFLAG_RDONLY 0x1000 /* 以只读方式打开设备 */ + #define DEVICE_OFLAG_WRONLY 0x2000 /* 以只写方式打开设备 */ + #define DEVICE_OFLAG_RDWR 0x3000 /* 以读写方式打开设备 */ + + +**device_unregister** +^^^^^^^^^^^^^^^^^^^^^^^ + +``device_unregister`` 用于设备的删除,将设备信息从链表中删除。 + +.. code-block:: C + + int device_unregister(const char *name); + +- dev 设备句柄 +- name 要删除的设备名称 +- return 错误码,0 表示删除,其他表示错误 + +**device_find** +^^^^^^^^^^^^^^^^ + +``device_find`` 用于根据 ``name`` 从链表中寻找设备,并返回设备句柄的首地址。 + +.. code-block:: C + + struct device *device_find(const char *name); + +- dev 设备句柄 +- name 要查找的设备名称 +- return 错误码,不为 0 表示找到的设备句柄,NULL 表示未找到该设备。 + + +**device_open** +^^^^^^^^^^^^^^^^ + +``device_open`` 用于设备的打开,``oflag`` 表示以何种方式打开,目前提供 6 种打开方式。底层调用 ``dev`` 句柄中的 ``open`` 成员。 + +.. code-block:: C + + int device_open(struct device *dev, uint16_t oflag); + +- dev 设备句柄 +- oflag 设备的打开方式 +- return 错误码,0 表示打开成功,其他表示错误 + +``oflag`` 可以写入以下参数: + +.. code-block:: C + + #define DEVICE_OFLAG_STREAM_TX 0x001 /* 设备以轮训发送模式打开 */ + #define DEVICE_OFLAG_STREAM_RX 0x002 /* 设备以轮训接收模式打开 */ + #define DEVICE_OFLAG_INT_TX 0x004 /* 设备以中断发送模式打开 */ + #define DEVICE_OFLAG_INT_RX 0x008 /* 设备以中断接收模式打开 */ + #define DEVICE_OFLAG_DMA_TX 0x010 /* 设备以 DMA 发送模式打开 */ + #define DEVICE_OFLAG_DMA_RX 0x020 /* 设备以 DMA 接收模式打开 */ + +**device_close** +^^^^^^^^^^^^^^^^ + +``device_close`` 用于设备的关闭。底层调用 ``dev`` 句柄中的 ``close`` 成员。 + +.. code-block:: C + + int device_close(struct device *dev); + +- dev 设备句柄 +- return 错误码,0 表示关闭成功,其他表示错误 + +**device_control** +^^^^^^^^^^^^^^^^^^^ + +``device_control`` 用于根据命令对设备进行控制和参数的修改。底层调用 ``dev`` 句柄中的 ``control`` 成员。 + +.. code-block:: C + + int device_control(struct device *dev, int cmd, void *args); + +- dev 设备句柄 +- cmd 设备控制命令 +- args 控制参数 +- return 不同的控制命令返回的意义不同。 + +``cmd`` 提供了以下标准命令,除此之外,不同外设还具有自己的命令 + +.. code-block:: C + + #define DEVICE_CTRL_SET_INT 0x01 /* 设置中断 */ + #define DEVICE_CTRL_CLR_INT 0x02 /* 清中断 */ + #define DEVICE_CTRL_GET_INT 0x03 /* 获取中断状态 */ + #define DEVICE_CTRL_RESUME 0x04 /* 恢复设备 */ + #define DEVICE_CTRL_SUSPEND 0x05 /* 挂起设备 */ + #define DEVICE_CTRL_CONFIG 0x06 /* 配置设备 */ + #define DEVICE_CTRL_GET_CONFIG 0x07 /* 获取设备配置 */ + +**device_write** +^^^^^^^^^^^^^^^^ + +``device_write`` 用于数据的发送,发送方式根据打开方式可以是轮询、中断、dma。底层调用 ``dev`` 句柄中的 ``write`` 成员。 + +.. code-block:: C + + int device_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size); + +- dev 设备句柄 +- pos 不同的设备 pos 的意义不同 +- buffer 要写入的 buffer 缓冲区 +- size 要写入的长度 +- return 错误码,0 表示写入成功,其他表示错误 + +**device_read** +^^^^^^^^^^^^^^^^ + +``device_read`` 用于数据的接收,接收方式根据打开方式可以是轮询、中断、dma。底层调用 ``dev`` 句柄中的 ``read`` 成员。 + +.. code-block:: C + + int device_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size); + +- dev 设备句柄 +- pos 不同的设备 pos 的意义不同 +- buffer 要读入的 buffer 缓冲区 +- size 要读入的长度 +- return 错误码,0 表示读入成功,其他表示错误 + +**device_set_callback** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``device_set_callback`` 用于中断回调函数的注册。底层调用 ``dev`` 句柄中的 ``callback`` 成员。 + +.. code-block:: C + + int device_set_callback(struct device *dev, void (*callback)(struct device *dev, void *args, uint32_t size, uint32_t event)); + +- dev 设备句柄 +- callback 要注册的中断回调函数 + + + * dev 设备句柄 + * args 不同外设意义不同 + * size 传输长度 + * event 中断事件类型 + +外设驱动适配层实现 +------------------------ + +**子类继承父类** + +不同的外设首成员为 ``struct device`` ,这就相当于父类的继承,从而可以使用子类来访问父类成员,当使用子类修改父类成员时,便拥有了子类自己的功能。实现原理是不同结构体的首地址是该结构体中首个成员的地址。 + +.. code-block:: C + + typedef struct xxx_device + { + struct device parent; + + } xxx_device_t; + +**重写标准接口** + +每个外设都有一个 ``xxx_register`` 函数,用来重写标准接口。 + +.. code-block:: C + + dev->open = xxx_open; + dev->close = xxx_close; + dev->control = xxx_control; + dev->write = xxx_write; + dev->read = xxx_read; + + +时钟树 +========================= + +简介 +------------------------ + +博流系列芯片拥有丰富的时钟源选择,为方便用户配置,提供了时钟树配置表,不需要用户手动调用时钟设置接口,用户只需要关心最终的系统时钟和外设时钟频率即可。时钟配置表位于 ``bsp/board/xxx_board`` 目录下 ``xxx_clock_config.h`` 文件。 + + +时钟频率获取接口 +------------------------ + +**system_clock_get** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``system_clock_get`` 用来获取系统时钟频率。 + +.. code-block:: C + + uint32_t system_clock_get(enum system_clock_type type); + +- type 获取的系统时钟频率类型 + +``type`` 提供以下几种类型 + +.. code-block:: C + + enum system_clock_type + { + SYSTEM_CLOCK_ROOT_CLOCK = 0, + SYSTEM_CLOCK_FCLK, + SYSTEM_CLOCK_BCLK, + SYSTEM_CLOCK_XCLK, + }; + + +**peripheral_clock_get** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``peripheral_clock_get`` 用来获取外设时钟频率。 + +.. code-block:: C + + uint32_t peripheral_clock_get(enum peripheral_clock_type type); + +- type 获取的外设时钟频率类型 + +``type`` 提供以下几种类型 + +.. code-block:: C + + enum peripheral_clock_type + { + PERIPHERAL_CLOCK_UART = 0, + PERIPHERAL_CLOCK_SPI, + PERIPHERAL_CLOCK_I2C, + PERIPHERAL_CLOCK_ADC, + PERIPHERAL_CLOCK_DAC, + PERIPHERAL_CLOCK_I2S, + }; + + +GPIO 设备 +========================= + + +简介 +------------------------ + +GPIO 全称 General Purpose Input Output(通用输入 / 输出),博流系列芯片的 GPIO 外设主要有以下功能。 + +- 普通输入输出带上下拉 +- 复用功能带上下拉 +- 模拟功能 +- 外部中断(上升沿、下降沿、高电平、低电平) +- 硬件消抖 +- 驱动能力控制 + +bl mcu sdk 的引脚配置方式分为两种。 + +- GPIO 复用功能通过专门的 **pinmux table** ,用户只需要修改 table 中的相关引脚和工功能,程序会自动配置这些引脚。**pinmux table** 位于 ``bsp/board/xxx_board`` 目录下 ``pinmux_config.h`` 文件。 +- 通过标准的 GPIO 设备接口配置引脚,缺点是只能配置普通的输入输出和中断功能,复用功能建议还是使用 table 进行配置。 + +GPIO 设备接口 +------------------------ + +**gpio_set_mode** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``gpio_set_mode`` 用来配置 gpio 的模式。 + +.. code-block:: C + + void gpio_set_mode(uint32_t pin, uint32_t mode); + +- pin 要配置的引脚 +- mode 要配置的引脚功能 + +mode 提供以下几种类型 + +.. code-block:: C + + #define GPIO_OUTPUT_MODE 0 + #define GPIO_OUTPUT_PP_MODE 1 + #define GPIO_OUTPUT_PD_MODE 2 + #define GPIO_INPUT_MODE 3 + #define GPIO_INPUT_PP_MODE 4 + #define GPIO_INPUT_PD_MODE 5 + #define GPIO_ASYNC_RISING_TRIGER_INT_MODE 6 + #define GPIO_ASYNC_FALLING_TRIGER_INT_MODE 7 + #define GPIO_ASYNC_HIGH_LEVEL_INT_MODE 8 + #define GPIO_ASYNC_LOW_LEVEL_INT_MODE 9 + #define GPIO_SYNC_RISING_TRIGER_INT_MODE 10 + #define GPIO_SYNC_FALLING_TRIGER_INT_MODE 11 + #define GPIO_SYNC_HIGH_LEVEL_INT_MODE 12 + #define GPIO_SYNC_LOW_LEVEL_INT_MODE 13 + +**gpio_write** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``gpio_write`` 设置引脚电平 + +.. code-block:: C + + void gpio_write(uint32_t pin, uint32_t value); + + +- pin 要设置的引脚 +- value 要设置的电平 + + +**gpio_toggle** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``gpio_toggle`` 翻转引脚电平 + +.. code-block:: C + + void gpio_toggle(uint32_t pin); + + +- pin 要翻转的引脚 + + +**gpio_read** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``gpio_read`` 读取引脚电平 + +.. code-block:: C + + int gpio_read(uint32_t pin); + + +- pin 要读取电平的引脚 +- return 0 为低电平,1 为高电平 + +**gpio_attach_irq** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``gpio_attach_irq`` 为中断引脚附加中断回调函数 + +.. code-block:: C + + void gpio_attach_irq(uint32_t pin, void (*cbFun)(void)); + +- pin 要附加中断回调的引脚 +- cbFun 中断回调函数 + +**gpio_irq_enable** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``gpio_irq_enable`` 读取引脚电平 + +.. code-block:: C + + void gpio_irq_enable(uint32_t pin,uint8_t enabled); + +- pin 要开启或者关闭中断的引脚 +- enabled 0 为关闭中断,1 为打开中断 + + +UART 设备 +========================= + +简介 +------------------------ + +UART 全称(Universal Asynchronous Receiver/Transmitter)通用异步收发传输器,博流系列芯片的 UART 外设自带可配深度 **硬件fifo** ,并且拥有 **RTO(接收超时)中断** ,在使用中断的时候,无需频繁进入中断,fifo 和 rto 的搭配能够使得 UART 的利用性更加高效,UART 设备具有以下功能。 + +- 轮询收发模式 +- 中断收发模式 +- dma 收发模式 +- 自动波特率检测 +- 硬件 fifo +- 特有的 rto 中断 + +UART 设备结构体定义 +------------------------ + +.. code-block:: C + + typedef struct uart_device + { + struct device parent; + uint8_t id; + uint32_t baudrate; + uart_databits_t databits; + uart_stopbits_t stopbits; + uart_parity_t parity; + uint8_t fifo_threshold; + void* tx_dma; + void* rx_dma; + } uart_device_t; + +- parent 继承父类属性 +- id 串口 id,0 表示串口 0,,1 表示串口 1,以此类推 +- baudrate 波特率 +- databits 数据位 +- stopbits 停止位 +- parity 校验位 +- fifo_threshold fifo 阈值,不同 mcu 最大值不同 +- tx_dma 附加的发送 dma 句柄 +- rx_dma 附加的发送 dma 句柄 + +databits 提供以下类型 + +.. code-block:: C + + typedef enum + { + UART_DATA_LEN_5 = 0, /*!< Data length is 5 bits */ + UART_DATA_LEN_6 = 1, /*!< Data length is 6 bits */ + UART_DATA_LEN_7 = 2, /*!< Data length is 7 bits */ + UART_DATA_LEN_8 = 3 /*!< Data length is 8 bits */ + } uart_databits_t; + +stopbits 提供以下类型 + +.. code-block:: C + + typedef enum + { + UART_STOP_ONE = 0, /*!< One stop bit */ + UART_STOP_ONE_D_FIVE = 0, /*!< 1.5 stop bit */ + UART_STOP_TWO = 1 /*!< Two stop bits */ + } uart_stopbits_t; + +``parity`` 提供以下类型 + +.. code-block:: C + + typedef enum + { + UART_PAR_NONE = 0, /*!< No parity */ + UART_PAR_ODD = 1, /*!< Parity bit is odd */ + UART_PAR_EVEN = 2, /*!< Parity bit is even */ + } uart_parity_t; + +UART 设备参数配置表 +------------------------ + +每一个 UART 设备都有一个参数配置,配置文件位于 ``bsp/board/xxx_board`` 目录下 ``peripheral_config.h`` 文件。当用户打开对应设备的宏,该设备的配置才生效。例如打开宏 ``BSP_USING_UART0`` ,UART0 设备就可以进行注册和使用了。 + +.. code-block:: C + + uart_device_t uartx_device[UART_MAX_INDEX] = + { + #ifdef BSP_USING_UART0 + UART0_CONFIG, + #endif + #ifdef BSP_USING_UART1 + UART1_CONFIG, + #endif + }; + + #if defined(BSP_USING_UART0) + #ifndef UART0_CONFIG + #define UART0_CONFIG \ + { \ + .id = 0, \ + .baudrate = 2000000,\ + .databits = UART_DATA_LEN_8, \ + .stopbits = UART_STOP_ONE, \ + .parity = UART_PAR_NONE, \ + .fifo_threshold = 1, \ + } + #endif + #endif + +UART 设备接口 +------------------------ + +UART 设备接口全部遵循标准设备驱动管理层提供的接口。 + +**uart_register** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``uart_register`` 用来注册一个 UART 设备,在注册之前需要打开对应 UART 设备的宏定义,例如 ``BSP_USING_UART0`` 方可使用 UART0 设备。注册完成以后才可以使用其他接口,如果没有定义宏,则无法使用 UART 设备。 + +.. code-block:: C + + int uart_register(enum uart_index_type index, const char *name, uint16_t flag); + +- index 要注册的设备索引 +- name 为注册的设备命名 +- flag 默认可读可写属性 + +``index`` 用来选择 UART 设备配置,一个 index 对应一个 UART 设备配置,比如 ``UART0_INDEX`` 对应 UART0 配置,``index`` 有如下可选类型 + +.. code-block:: C + + enum uart_index_type + { + #ifdef BSP_USING_UART0 + UART0_INDEX, + #endif + #ifdef BSP_USING_UART1 + UART1_INDEX, + #endif + #ifdef BSP_USING_UART2 + UART2_INDEX, + #endif + #ifdef BSP_USING_UART3 + UART3_INDEX, + #endif + #ifdef BSP_USING_UART4 + UART4_INDEX, + #endif + UART_MAX_INDEX + }; + +**device_open** +^^^^^^^^^^^^^^^^ + +``device_open`` 用于设备的打开,``oflag`` 表示以何种方式打开。 + +.. code-block:: C + + int device_open(struct device *dev, uint16_t oflag); + +- dev 设备句柄 +- oflag 设备的打开方式 +- return 错误码,0 表示打开成功,其他表示错误 + +``oflag`` 可以写入以下参数: + +.. code-block:: C + + #define DEVICE_OFLAG_STREAM_TX 0x001 /* 设备以轮训发送模式打开 */ + #define DEVICE_OFLAG_STREAM_RX 0x002 /* 设备以轮训接收模式打开 */ + #define DEVICE_OFLAG_INT_TX 0x004 /* 设备以中断发送模式打开 */ + #define DEVICE_OFLAG_INT_RX 0x008 /* 设备以中断接收模式打开 */ + #define DEVICE_OFLAG_DMA_TX 0x010 /* 设备以 DMA 发送模式打开 */ + #define DEVICE_OFLAG_DMA_RX 0x020 /* 设备以 DMA 接收模式打开 */ + +**device_close** +^^^^^^^^^^^^^^^^ + +``device_close`` 用于设备的关闭。 + +.. code-block:: C + + int device_close(struct device *dev); + +- dev 设备句柄 +- return 错误码,0 表示关闭成功,其他表示错误 + +**device_control** +^^^^^^^^^^^^^^^^^^^ + +``device_control`` 用于根据命令对设备进行控制和参数的修改。 + +.. code-block:: C + + int device_control(struct device *dev, int cmd, void *args); + +- dev 设备句柄 +- cmd 设备控制命令 +- args 控制参数 +- return 不同的控制命令返回的意义不同。 + +串口设备除了标准的控制命令,还具有自己特殊的控制命令。 + +.. code-block:: C + + #define DEVICE_CTRL_UART_GET_TX_FIFO 0x10 + #define DEVICE_CTRL_UART_GET_RX_FIFO 0x11 + #define DEVICE_CTRL_UART_ATTACH_TX_DMA 0x12 + #define DEVICE_CTRL_UART_ATTACH_RX_DMA 0x13 + +``args`` 根据不同的 ``cmd`` 传入不同,具体如下: + ++---------------------------------------+--------------------------------------+ +| cmd | args | ++=======================================+======================================+ +| DEVICE_CTRL_SET_INT | uart_it_type | ++---------------------------------------+--------------------------------------+ +| DEVICE_CTRL_CLR_INT | uart_it_type | ++---------------------------------------+--------------------------------------+ +| DEVICE_CTRL_CONFIG | uart_param_cfg_t | ++---------------------------------------+--------------------------------------+ +| DEVICE_CTRL_UART_ATTACH_TX_DMA | dma句柄 | ++---------------------------------------+--------------------------------------+ +| DEVICE_CTRL_UART_ATTACH_RX_DMA | dma句柄 | ++---------------------------------------+--------------------------------------+ +| DEVICE_CTRL_UART_GET_TX_FIFO | 缓存变量 | ++---------------------------------------+--------------------------------------+ +| DEVICE_CTRL_UART_GET_RX_FIFO | 缓存变量 | ++---------------------------------------+--------------------------------------+ + +**device_write** +^^^^^^^^^^^^^^^^ + +``device_write`` 用于串口数据的发送,发送方式根据打开方式可以是轮询、中断、dma。 + +.. code-block:: C + + int device_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size); + +- dev 设备句柄 +- pos 无作用 +- buffer 要写入的 buffer 缓冲区 +- size 要写入的长度 +- return 错误码,0 表示写入成功,其他表示错误 + +**device_read** +^^^^^^^^^^^^^^^^ + +``device_read`` 用于串口数据的接收,接收方式根据打开方式可以是轮询、中断、dma。 + +.. code-block:: C + + int device_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size); + +- dev 设备句柄 +- pos 无作用 +- buffer 要读入的 buffer 缓冲区 +- size 要读入的长度 +- return 错误码,0 表示读入成功,其他表示错误 + +**device_set_callback** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``device_set_callback`` 用于注册一个串口中断回调函数。 + +.. code-block:: C + + int device_set_callback(struct device *dev, void (*callback)(struct device *dev, void *args, uint32_t size, uint32_t event)); + +- dev 设备句柄 +- callback 要注册的中断回调函数 + + - dev 设备句柄 + - args 接收发送缓冲区,数据类型为 uint8_t* + - size 传输长度 + - event 中断事件类型 + +串口设备 ``event`` 有以下类型 + +.. code-block:: C + + enum uart_event_type + { + UART_EVENT_TX_END, + UART_EVENT_TX_FIFO, + UART_EVENT_RX_END, + UART_EVENT_RX_FIFO, + UART_EVENT_RTO, + UART_EVENT_UNKNOWN + }; + +PWM设备 +========================= + +简介 +------------------------ + +PWM设备接口 +------------------------ \ No newline at end of file diff --git a/docs/development_guide/build/html/_sources/blink_demo_introduce.rst.txt b/docs/development_guide/build/html/_sources/blink_demo_introduce.rst.txt new file mode 100644 index 00000000..0d326f6c --- /dev/null +++ b/docs/development_guide/build/html/_sources/blink_demo_introduce.rst.txt @@ -0,0 +1,41 @@ +流水灯示例 +==================== + +硬件连接 +----------------------------- + +.. figure:: img/blink_breath_sch.png + :alt: + + **BL706_IOT板支持上述电路** + +- 硬件连接如上图所示 ``GPIO29`` ``GPIO30`` ``GPIO31`` ``GPIO22`` 分别控制四路 LED 灯 + + + +软件实现 +----------------------------- + +- 软件代码见 ``examples/gpio/gpio_blink`` + +.. code-block:: C + :linenos: + + gpio_set_mode(GPIO_PIN_22, GPIO_OUTPUT_PP_MODE); + gpio_set_mode(GPIO_PIN_29, GPIO_OUTPUT_PP_MODE); + gpio_set_mode(GPIO_PIN_30, GPIO_OUTPUT_PP_MODE); + gpio_set_mode(GPIO_PIN_31, GPIO_OUTPUT_PP_MODE); + +- 使用上述代码将 ``GPIO22`` ``GPIO29`` ``GPIO30`` ``GPIO31`` 配置为输出模式。 + +.. code-block:: C + :linenos: + + gpio_write(GPIO_PIN_22, 0); + +- 使用上述代码修改输出的电平值。 + + +最终效果 +----------------------------- +见视频展示 diff --git a/docs/development_guide/build/html/_sources/breath_pwm_demo_introduce.rst.txt b/docs/development_guide/build/html/_sources/breath_pwm_demo_introduce.rst.txt new file mode 100644 index 00000000..399938a9 --- /dev/null +++ b/docs/development_guide/build/html/_sources/breath_pwm_demo_introduce.rst.txt @@ -0,0 +1,64 @@ +呼吸灯示例 +==================== + +硬件连接 +----------------------------- + +.. figure:: img/blink_breath_sch.png + :alt: + + **BL706_IOT板支持上述电路** + +- 硬件连接如上图所示 ``GPIO29`` ``GPIO30`` ``GPIO31`` ``GPIO22`` 分别控制四路 LED 灯 +- 呼吸灯会单独使用 ``GPIO22`` 来演示效果 + + + +软件实现 +----------------------------- + +- 软件代码见 ``examples/pwm/pwm_breath_led`` + + +- ``PWM`` 的输出引脚由板级描述文件 ``bsp/board/bl706_iot/pinmux_config.h`` 来配置 + +.. code-block:: C + :linenos: + + #define CONFIG_GPIO22_FUNC GPIO_FUN_UNUSED + + +- 可以看到,我们将 ``GPIO22`` 的功能选择为 ``PWM`` 输出,不同的电路板会存在不同的引脚配置。 + +- 我们会使用向导来配置不同应用场景下的引脚配置,用户也可以手动修改。 + +.. code-block:: C + :linenos: + + pwm_register(PWM0_INDEX, "led_breath", DEVICE_OFLAG_RDWR); + + struct device *led_breath = device_find("led_breath"); + + if (led_breath) + { + device_open(led_breath, 0); + } + + +- 上述代码展现了 ``bl_mcu_sdk`` 框架最一般的设备初始化流程,首先调用 ``pwm_register`` 函数注册 ``pwm`` 设备 +- 然后通过 ``find`` 函数找到设备对应的句柄,保存于 ``led_breath`` 对象中 +- 使用 ``device_open`` 来打开 ``led_breath`` 设备。 + +.. code-block:: C + :linenos: + + device_control(led_breath, DEVICE_CTRL_CONFIG, &pwm_cfg); + +使用 ``device_contorl`` 函数,配合 ``DEVICE_CTRL_CONFIG`` 指令,输入需要配置的频率和占空比,即可配置 ``PWM`` 的输出波形。 + + + +最终效果 +----------------------------- +见视频展示 + diff --git a/docs/development_guide/build/html/_sources/connecting_hardware.rst.txt b/docs/development_guide/build/html/_sources/connecting_hardware.rst.txt new file mode 100644 index 00000000..be2ddc03 --- /dev/null +++ b/docs/development_guide/build/html/_sources/connecting_hardware.rst.txt @@ -0,0 +1,97 @@ +.. _connect_hardware: + +硬件连接 +================ + +本文档介绍了如何连接 BL70x 系列 MCU 的开发板 + +BL706_IOT 开发板 +------------------------- + +使用 CK-Link 烧写、调试连接方法 +^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 将 CK-Link USB 接口使用合适的 USB 数据线正确连接到 PC 主机 +- 将 Iot 开发板的 ``HD3`` 组的标准 ``JTAG`` 引脚使用杜邦线与 ``CK-Link`` 对应的 ``JTAG`` 引脚连接起来 +- 若没有使用 CK-Link 给开发板供电,需要给开发板单独供电 + +:: + + bl706-iot board CK-Link + ------------------------------- + JTAG_TDI <--> TDI + JTAG_TDO <--> TDO + JTAG_TCK <--> TCK + JTAG_TMS <--> TMS + VDD33 <--> VREF + GND <--> GND + + +.. figure:: img/ck_link_connect_bl706_iot.png + :alt: + + ck_link connect bl706-iot board + + +使用 J-Link 烧写、调试连接方法 +^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 将 j-link 的 USB 接口使用合适的 USB 数据线正确连接到 PC 主机 +- 将 Iot 开发板的 ``HD3`` 组的标准 ``JTAG`` 引脚使用杜邦线与 ``j-link`` 对应的 ``JTAG`` 引脚连接起来 +- j-link 连接的情况下需要给开发板独立供电,并且将开发板的电源接到 j-link 的 ``VTref`` 引脚 + +:: + + bl706-iot board j-link + ------------------------------- + JTAG_TDI <--> TDI + JTAG_TDO <--> TDO + JTAG_TCK <--> TCK + JTAG_TMS <--> TMS + VDD33 <--> VTref + GND <--> GND + + +.. figure:: img/jlink_connect_bl706_iot.png + :alt: + + jlink connect bl706-iot board + + +使用串口烧写程序连接方法 +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 使用串口烧写前,请确保正确安装了 ``Bouffalo Lab Dev Cube`` 或命令行烧写工具 + + - 使用 ``Type-C USB`` 数据线 or ``Mini USB`` 数据线连接到开发板上对应的 ``Type-C`` 接口 or ``Mini`` 接口上。 + - 按下开发板上的 ``Boot`` 键,不要释放 + - 按下开发板上的 ``RST`` 键,此时已经进入 ``Boot ROM``,可以释放两个按键 + - 这时就可以从 ``Bouffalo Lab Dev Cube`` 中看到相应的串口 ``COM`` 号,如没有出现,请点击 ``Refresh`` 按钮刷新一下 + + +- 如没有合适的数据线,也可以使用一些常见的 ``USB-TTL`` 模块,连接到开发板的 ``UART0`` 端口进行烧写。 ``UART0`` 在 ``HD1`` 组上,连接方法如下: + +:: + + USB-TTL BL702_IoT + ---------------------- + 3V3 <--> VDD + TXD <--> RX0 + RXD <--> TX0 + GND <--> GND + +- 烧写方法同上 + +BL702_AVB 开发板 +-------------------------- + +使用 CK-Link 烧写、调试连接方法 +^^^^^^^^^^^^^^^^^^^^^^^^^ + +- ``TO DO`` + +使用串口烧写程序连接方法 +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- ``TO DO`` + diff --git a/docs/development_guide/build/html/_sources/get_started.rst.txt b/docs/development_guide/build/html/_sources/get_started.rst.txt new file mode 100644 index 00000000..3eb29d97 --- /dev/null +++ b/docs/development_guide/build/html/_sources/get_started.rst.txt @@ -0,0 +1,37 @@ +开发前的准备 +============================= + +硬件环境准备 +----------------------------- + +- 一块 BL702 系列 MCU 的开发板: + + - BL706_IOT 开发板, or + - BL706_AVB 开发板 + +BL706_Iot 开发板如下图所示 + +.. figure:: img/bl702_iot.png + :alt: + + BL706_IoT + + +- 一个支持标准 JTAG 功能的调试器: + + - CK-Link 仿真器,or + - Jlink V11 仿真器,or + - Sipeed USB-JTAG/TTL 调试器,or + - Bouffalo Lab Debugger 调试器 + +- 一台 PC 主机(运行 Windows 或者 Linux 系统) + +软件环境准备 +-------------------------------- + +为了更好的进行 BL702 系列 MCU 的开发,建议您应当具备以下开发环境: + +- Windows 使用 `CDK `_ 环境开发 (建议 Windows 7 以上版本。) ,or +- `Windows `_ 使用 Eclipse 环境开发 (建议 Windows 7 以上版本。) ,or +- `Linux `_ (建议使用 Ubuntu 18 以上的 LTS 版本) + diff --git a/docs/development_guide/build/html/_sources/index.rst.txt b/docs/development_guide/build/html/_sources/index.rst.txt new file mode 100644 index 00000000..528c052f --- /dev/null +++ b/docs/development_guide/build/html/_sources/index.rst.txt @@ -0,0 +1,45 @@ +.. bl_mcu_sdk_development_guide documentation master file, created by + sphinx-quickstart on Fri Mar 12 16:32:56 2021. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +======================================================== +BL MCU SDK 开发指南 +======================================================== + +博流 `BL702 `_ 系列产品是基于 “SiFive E24 Core” `RISC-V `_ 处理器的通用微控制器,具有 BLE 5.0、zigbee 和以太网等网络功能,同时还具备其它丰富的外设。 +可被广泛应用于 `IoT `_ 和其他低功耗领域中。 +支持通过 `JTAG `_ 对芯片进行烧写和调试,也支持通过 `UART `_ 进行程序烧录。 + +BL MCU SDK 将为您提供博流 BL70X 系列 MCU 开发的全方位支持。 + +.. toctree:: + :maxdepth: 1 + :caption: 快速开发指南 + :numbered: + + get_started + Windows_quick_start_cdk + Windows_quick_start_eclipse + Linux_quick_start_ubuntu + connecting_hardware + + + +.. toctree:: + :maxdepth: 1 + :caption: API 手册 + :numbered: + + api_guide + + +.. toctree:: + :maxdepth: 1 + :caption: 示例代码 + :numbered: + + blink_demo_introduce + breath_pwm_demo_introduce + uart_loopback_demo_introduce + diff --git a/docs/development_guide/build/html/_sources/uart_loopback_demo_introduce.rst.txt b/docs/development_guide/build/html/_sources/uart_loopback_demo_introduce.rst.txt new file mode 100644 index 00000000..c997edb9 --- /dev/null +++ b/docs/development_guide/build/html/_sources/uart_loopback_demo_introduce.rst.txt @@ -0,0 +1,91 @@ +串口自收发示例 +==================== + +硬件连接 +----------------------------- + +.. figure:: img/uart_loop_sch.png + :alt: + + **BL706_IOT板支持上述电路** + +- 硬件连接如上图所示 板子将芯片对应的 RX 与 TX 脚引到了排针 ``HD1``。 +- 将对应的 TX 接上串口转换芯片的 RX,RX 接上串口转换芯片的 TX,将串口转换芯片连接电脑。 + + + +软件实现 +----------------------------- + +- 软件代码见 ``examples/uart/uart_echo`` + +- ``pwm`` 的输出引脚由板级描述文件 ``bsp/board/bl706_iot/pinmux_config.h`` 来配置 + +.. code-block:: C + :linenos: + + #define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX + #define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX + +- 可以看到,我们将 ``GPIO_PIN_14`` 与 ``GPIO_PIN_15`` 的功能选择了 ``UART`` 功能。 + +- 不同的电路板会存在不同的引脚配置,我们会使用向导来配置不同应用场景下的引脚配置,用户也可以手动修改。 + + +.. code-block:: C + :linenos: + + bflb_platform_init(); + +- 在 ``bflb_platform_init`` 函数中,我们已经注册并且打开了一个调试用的串口设备,给用户实现一个 ``printf`` 的基本功能用作打印输出报文。 + +.. code-block:: C + :linenos: + + struct device *uart = device_find("debug_log"); + +- 我们通过 ``find`` 函数,找到在 ``bflb_platform_init`` 函数中注册并且打开的串口设备句柄,储存于 ``uart`` 变量中。 + +.. code-block:: C + :linenos: + + if (uart) + { + device_set_callback(uart, uart_irq_callback); + device_control(uart, DEVICE_CTRL_SET_INT, (void *)(UART_RX_FIFO_IT|UART_RTO_IT)); + } + +- 通过 ``set_callback`` 函数,注册用户指定的中断服务函数。通过 ``device_control`` 函数打开中断使能开关 + +.. code-block:: C + :linenos: + + void uart_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state) + { + if (state == UART_EVENT_RX_FIFO) + { + device_write(dev,0,(uint8_t *)args,size); + } + else if (state == UART_EVENT_RTO) + { + device_write(dev,0,(uint8_t *)args,size); + } + } + + +- 此函数是示例的中断服务函数,作用是将接受到的数据原封不动的发送出去。 + + - ``state`` 会返回 ``UART`` 设备的中断类型 + - ``args`` 包含了返回数据指针 + - ``size`` 包含返回数据的长度 + - ``dev`` 为中断的 ``uart`` 设备句柄 + +- 当中断产生,将会调用 ``device_write`` 函数将接受到的数据发送回去。 + + + +最终效果 +----------------------------- +见视频讲解 + + diff --git a/docs/development_guide/build/html/_static/basic.css b/docs/development_guide/build/html/_static/basic.css new file mode 100644 index 00000000..6acc2a73 --- /dev/null +++ b/docs/development_guide/build/html/_static/basic.css @@ -0,0 +1,856 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 450px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a.brackets:before, +span.brackets > a:before{ + content: "["; +} + +a.brackets:after, +span.brackets > a:after { + content: "]"; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +dl.footnote > dt, +dl.citation > dt { + float: left; + margin-right: 0.5em; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dt:after { + content: ":"; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0.5em; + content: ":"; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/docs/development_guide/build/html/_static/css/badge_only.css b/docs/development_guide/build/html/_static/css/badge_only.css new file mode 100644 index 00000000..e380325b --- /dev/null +++ b/docs/development_guide/build/html/_static/css/badge_only.css @@ -0,0 +1 @@ +.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} \ No newline at end of file diff --git a/docs/development_guide/build/html/_static/css/fonts/Roboto-Slab-Bold.woff b/docs/development_guide/build/html/_static/css/fonts/Roboto-Slab-Bold.woff new file mode 100644 index 00000000..6cb60000 Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/Roboto-Slab-Bold.woff differ diff --git a/docs/development_guide/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 b/docs/development_guide/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 new file mode 100644 index 00000000..7059e231 Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 differ diff --git a/docs/development_guide/build/html/_static/css/fonts/Roboto-Slab-Regular.woff b/docs/development_guide/build/html/_static/css/fonts/Roboto-Slab-Regular.woff new file mode 100644 index 00000000..f815f63f Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/Roboto-Slab-Regular.woff differ diff --git a/docs/development_guide/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 b/docs/development_guide/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 new file mode 100644 index 00000000..f2c76e5b Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 differ diff --git a/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.eot b/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.eot differ diff --git a/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.svg b/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.ttf b/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.ttf differ diff --git a/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.woff b/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.woff differ diff --git a/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.woff2 b/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/fontawesome-webfont.woff2 differ diff --git a/docs/development_guide/build/html/_static/css/fonts/lato-bold-italic.woff b/docs/development_guide/build/html/_static/css/fonts/lato-bold-italic.woff new file mode 100644 index 00000000..88ad05b9 Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/lato-bold-italic.woff differ diff --git a/docs/development_guide/build/html/_static/css/fonts/lato-bold-italic.woff2 b/docs/development_guide/build/html/_static/css/fonts/lato-bold-italic.woff2 new file mode 100644 index 00000000..c4e3d804 Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/lato-bold-italic.woff2 differ diff --git a/docs/development_guide/build/html/_static/css/fonts/lato-bold.woff b/docs/development_guide/build/html/_static/css/fonts/lato-bold.woff new file mode 100644 index 00000000..c6dff51f Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/lato-bold.woff differ diff --git a/docs/development_guide/build/html/_static/css/fonts/lato-bold.woff2 b/docs/development_guide/build/html/_static/css/fonts/lato-bold.woff2 new file mode 100644 index 00000000..bb195043 Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/lato-bold.woff2 differ diff --git a/docs/development_guide/build/html/_static/css/fonts/lato-normal-italic.woff b/docs/development_guide/build/html/_static/css/fonts/lato-normal-italic.woff new file mode 100644 index 00000000..76114bc0 Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/lato-normal-italic.woff differ diff --git a/docs/development_guide/build/html/_static/css/fonts/lato-normal-italic.woff2 b/docs/development_guide/build/html/_static/css/fonts/lato-normal-italic.woff2 new file mode 100644 index 00000000..3404f37e Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/lato-normal-italic.woff2 differ diff --git a/docs/development_guide/build/html/_static/css/fonts/lato-normal.woff b/docs/development_guide/build/html/_static/css/fonts/lato-normal.woff new file mode 100644 index 00000000..ae1307ff Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/lato-normal.woff differ diff --git a/docs/development_guide/build/html/_static/css/fonts/lato-normal.woff2 b/docs/development_guide/build/html/_static/css/fonts/lato-normal.woff2 new file mode 100644 index 00000000..3bf98433 Binary files /dev/null and b/docs/development_guide/build/html/_static/css/fonts/lato-normal.woff2 differ diff --git a/docs/development_guide/build/html/_static/css/theme.css b/docs/development_guide/build/html/_static/css/theme.css new file mode 100644 index 00000000..8cd4f101 --- /dev/null +++ b/docs/development_guide/build/html/_static/css/theme.css @@ -0,0 +1,4 @@ +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a,.wy-menu-vertical li.current>a span.toctree-expand:before,.wy-menu-vertical li.on a,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li span.toctree-expand:before,.wy-nav-top a,.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li span.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p.caption .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a span.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-left.toctree-expand,.wy-menu-vertical li span.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p.caption .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a span.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-right.toctree-expand,.wy-menu-vertical li span.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li span.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li span.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li span.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li span.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li span.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p.caption .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.btn .wy-menu-vertical li span.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p.caption .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.nav .wy-menu-vertical li span.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p.caption .btn .headerlink,.rst-content p.caption .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li span.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol li,.rst-content ol.arabic li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content ol.arabic li p:last-child,.rst-content ol.arabic li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.rst-content .wy-breadcrumbs li tt,.wy-breadcrumbs li .rst-content tt,.wy-breadcrumbs li code{padding:5px;border:none;background:none}.rst-content .wy-breadcrumbs li tt.literal,.wy-breadcrumbs li .rst-content tt.literal,.wy-breadcrumbs li code.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover span.toctree-expand,.wy-menu-vertical li.on a:hover span.toctree-expand{color:grey}.wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand{display:block;font-size:.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover span.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover span.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content img{max-width:100%;height:auto}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp{user-select:none;pointer-events:none}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink{visibility:hidden;font-size:14px}.rst-content .code-block-caption .headerlink:after,.rst-content .toctree-wrapper>p.caption .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content table>caption .headerlink:after{content:"\f0c1";font-family:FontAwesome}.rst-content .code-block-caption:hover .headerlink:after,.rst-content .toctree-wrapper>p.caption:hover .headerlink:after,.rst-content dl dt:hover .headerlink:after,.rst-content h1:hover .headerlink:after,.rst-content h2:hover .headerlink:after,.rst-content h3:hover .headerlink:after,.rst-content h4:hover .headerlink:after,.rst-content h5:hover .headerlink:after,.rst-content h6:hover .headerlink:after,.rst-content p.caption:hover .headerlink:after,.rst-content table>caption:hover .headerlink:after{visibility:visible}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .hlist{width:100%}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl dt span.classifier:before{content:" : "}html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.field-list>dt:after,html.writer-html5 .rst-content dl.footnote>dt:after{content:":"}html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.footnote>dt>span.brackets{margin-right:.5rem}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{font-style:italic}html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.footnote>dd p,html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code,html.writer-html4 .rst-content dl:not(.docutils) tt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/docs/development_guide/build/html/_static/doctools.js b/docs/development_guide/build/html/_static/doctools.js new file mode 100644 index 00000000..61ac9d26 --- /dev/null +++ b/docs/development_guide/build/html/_static/doctools.js @@ -0,0 +1,321 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { + this.initOnKeyListeners(); + } + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + $(document).keydown(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box, textarea, dropdown or button + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' + && activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey + && !event.shiftKey) { + switch (event.keyCode) { + case 37: // left + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + case 39: // right + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/docs/development_guide/build/html/_static/documentation_options.js b/docs/development_guide/build/html/_static/documentation_options.js new file mode 100644 index 00000000..bf1bd56d --- /dev/null +++ b/docs/development_guide/build/html/_static/documentation_options.js @@ -0,0 +1,12 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '0.1', + LANGUAGE: 'zh_CN', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false +}; \ No newline at end of file diff --git a/docs/development_guide/build/html/_static/file.png b/docs/development_guide/build/html/_static/file.png new file mode 100644 index 00000000..a858a410 Binary files /dev/null and b/docs/development_guide/build/html/_static/file.png differ diff --git a/docs/development_guide/build/html/_static/fonts/Inconsolata-Bold.ttf b/docs/development_guide/build/html/_static/fonts/Inconsolata-Bold.ttf new file mode 100644 index 00000000..809c1f58 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Inconsolata-Bold.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/Inconsolata-Regular.ttf b/docs/development_guide/build/html/_static/fonts/Inconsolata-Regular.ttf new file mode 100644 index 00000000..fc981ce7 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Inconsolata-Regular.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/Inconsolata.ttf b/docs/development_guide/build/html/_static/fonts/Inconsolata.ttf new file mode 100644 index 00000000..4b8a36d2 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Inconsolata.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato-Bold.ttf b/docs/development_guide/build/html/_static/fonts/Lato-Bold.ttf new file mode 100644 index 00000000..1d23c706 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato-Bold.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato-Regular.ttf b/docs/development_guide/build/html/_static/fonts/Lato-Regular.ttf new file mode 100644 index 00000000..0f3d0f83 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato-Regular.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-bold.eot b/docs/development_guide/build/html/_static/fonts/Lato/lato-bold.eot new file mode 100644 index 00000000..3361183a Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-bold.eot differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-bold.ttf b/docs/development_guide/build/html/_static/fonts/Lato/lato-bold.ttf new file mode 100644 index 00000000..29f691d5 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-bold.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-bold.woff b/docs/development_guide/build/html/_static/fonts/Lato/lato-bold.woff new file mode 100644 index 00000000..c6dff51f Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-bold.woff differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-bold.woff2 b/docs/development_guide/build/html/_static/fonts/Lato/lato-bold.woff2 new file mode 100644 index 00000000..bb195043 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-bold.woff2 differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-bolditalic.eot b/docs/development_guide/build/html/_static/fonts/Lato/lato-bolditalic.eot new file mode 100644 index 00000000..3d415493 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-bolditalic.eot differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-bolditalic.ttf b/docs/development_guide/build/html/_static/fonts/Lato/lato-bolditalic.ttf new file mode 100644 index 00000000..f402040b Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-bolditalic.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-bolditalic.woff b/docs/development_guide/build/html/_static/fonts/Lato/lato-bolditalic.woff new file mode 100644 index 00000000..88ad05b9 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-bolditalic.woff differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-bolditalic.woff2 b/docs/development_guide/build/html/_static/fonts/Lato/lato-bolditalic.woff2 new file mode 100644 index 00000000..c4e3d804 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-bolditalic.woff2 differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-italic.eot b/docs/development_guide/build/html/_static/fonts/Lato/lato-italic.eot new file mode 100644 index 00000000..3f826421 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-italic.eot differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-italic.ttf b/docs/development_guide/build/html/_static/fonts/Lato/lato-italic.ttf new file mode 100644 index 00000000..b4bfc9b2 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-italic.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-italic.woff b/docs/development_guide/build/html/_static/fonts/Lato/lato-italic.woff new file mode 100644 index 00000000..76114bc0 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-italic.woff differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-italic.woff2 b/docs/development_guide/build/html/_static/fonts/Lato/lato-italic.woff2 new file mode 100644 index 00000000..3404f37e Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-italic.woff2 differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-regular.eot b/docs/development_guide/build/html/_static/fonts/Lato/lato-regular.eot new file mode 100644 index 00000000..11e3f2a5 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-regular.eot differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-regular.ttf b/docs/development_guide/build/html/_static/fonts/Lato/lato-regular.ttf new file mode 100644 index 00000000..74decd9e Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-regular.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-regular.woff b/docs/development_guide/build/html/_static/fonts/Lato/lato-regular.woff new file mode 100644 index 00000000..ae1307ff Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-regular.woff differ diff --git a/docs/development_guide/build/html/_static/fonts/Lato/lato-regular.woff2 b/docs/development_guide/build/html/_static/fonts/Lato/lato-regular.woff2 new file mode 100644 index 00000000..3bf98433 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/Lato/lato-regular.woff2 differ diff --git a/docs/development_guide/build/html/_static/fonts/RobotoSlab-Bold.ttf b/docs/development_guide/build/html/_static/fonts/RobotoSlab-Bold.ttf new file mode 100644 index 00000000..df5d1df2 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/RobotoSlab-Bold.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/RobotoSlab-Regular.ttf b/docs/development_guide/build/html/_static/fonts/RobotoSlab-Regular.ttf new file mode 100644 index 00000000..eb52a790 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/RobotoSlab-Regular.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot new file mode 100644 index 00000000..79dc8efe Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot differ diff --git a/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf new file mode 100644 index 00000000..df5d1df2 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff new file mode 100644 index 00000000..6cb60000 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff differ diff --git a/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 new file mode 100644 index 00000000..7059e231 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 differ diff --git a/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot new file mode 100644 index 00000000..2f7ca78a Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot differ diff --git a/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf new file mode 100644 index 00000000..eb52a790 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff new file mode 100644 index 00000000..f815f63f Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff differ diff --git a/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 new file mode 100644 index 00000000..f2c76e5b Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 differ diff --git a/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.eot b/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.eot differ diff --git a/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.svg b/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.ttf b/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.ttf differ diff --git a/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.woff b/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.woff differ diff --git a/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.woff2 b/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/docs/development_guide/build/html/_static/fonts/fontawesome-webfont.woff2 differ diff --git a/docs/development_guide/build/html/_static/jquery-3.4.1.js b/docs/development_guide/build/html/_static/jquery-3.4.1.js new file mode 100644 index 00000000..773ad95c --- /dev/null +++ b/docs/development_guide/build/html/_static/jquery-3.4.1.js @@ -0,0 +1,10598 @@ +/*! + * jQuery JavaScript Library v3.4.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2019-05-01T21:04Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.4.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a global context + globalEval: function( code, options ) { + DOMEval( code, { nonce: options && options.nonce } ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.4 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2019-04-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) && + + // Support: IE 8 only + // Exclude object elements + (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && rdescend.test( selector ) ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem.namespaceURI, + docElem = (elem.ownerDocument || elem).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( typeof elem.contentDocument !== "undefined" ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + return result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + } ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + // Support: IE 9-11 only + // Also use offsetWidth/offsetHeight for when box sizing is unreliable + // We use getClientRects() to check for hidden/disconnected. + // In those cases, the computed value can be trusted to be border-box + if ( ( !support.boxSizingReliable() && isBorderBox || + val === "auto" || + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = Date.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url, options ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

1. API 分层模型

+
+

1.1. 简介

+

为了不影响用户应用层代码因为芯片驱动的不同而频繁修改,bl_mcu_sdk 的外设 API 采用了 HAL 层的思想,屏蔽了底层硬件的实现。而 HAL 层又分为两大类:

+
    +
  • 设备驱动管理层:提供一套标准的接口,具体实现由外设驱动适配层实现。

  • +
  • 外设驱动适配层:实现设备驱动管理层的标准接口,并且拓展自己的独特的接口。

  • +
+

整体的代码分层框架如图所示:

+
+ +

code structure

+
+
    +
  • 应用层是用户自己编写的代码,接口则是调用 hal 层的接口。

  • +
  • HAL 层提供给应用层接口,底层调用 std 层,不同的芯片调用不同的 std 层。

  • +
  • STD 层则是对硬件寄存器进行简单封装,由外设驱动适配层进行调用。

  • +
+
+
+

1.2. 设备驱动管理层实现

+

设备驱动管理层的实现采用了面向对象的思想,首先我们将外设看成是一个设备或者是文件,秉承 一切皆文件 的理念,而文件又都具有标准的调用接口:openclosectrlwritereadcallback,不同文件类别不同(比如串口设备、ADC设备、SPI设备),并且打开的方式也不同(比如轮询、中断、DMA),由此,我们可以构建出一个对象的基类(父类)。

+

基类

+
struct device
+{
+    char name[NAME_MAX];            /*name of device */
+    dlist_t list;                   /*list node of device */
+    enum device_status_type status; /*status of device */
+    enum device_class_type type;    /*type of device */
+    uint16_t oflag;                 /*oflag of device */
+
+    int (*open)(struct device *dev, uint16_t oflag);
+    int (*close)(struct device *dev);
+    int (*control)(struct device *dev, int cmd, void *args);
+    int (*write)(struct device *dev, uint32_t pos, const void *buffer, uint32_t size);
+    int (*read)(struct device *dev, uint32_t pos, void *buffer, uint32_t size);
+    void (*callback)(struct device *dev, void *args, uint32_t size, uint32_t event);
+    void *handle;
+};
+
+
+

基类成员:name

+

给设备取名,后面会使用 device_find 找到这个设备。

+

基类成员:type

+

type 记录当前设备的类别,可以选择的 type 类型如下。

+
enum device_class_type
+{
+    DEVICE_CLASS_NONE = 0,
+    DEVICE_CLASS_GPIO,
+    DEVICE_CLASS_UART,
+    DEVICE_CLASS_SPI,
+    DEVICE_CLASS_I2C,
+    DEVICE_CLASS_ADC,
+    DEVICE_CLASS_DMA,
+    DEVICE_CLASS_TIMER,
+    DEVICE_CLASS_PWM,
+    DEVICE_CLASS_SDIO,
+    DEVICE_CLASS_USB,
+    DEVICE_CLASS_I2S,
+    DEVICE_CLASS_CAMERA,
+    DEVICE_CLASS_SEC_HASH,
+} ;
+
+
+

基类成员:status

+

status 用来记录当前设备的状态,当前提供 4 种状态。

+
enum device_status_type
+{
+    DEVICE_UNREGISTER = 0,
+    DEVICE_REGISTERED,
+    DEVICE_OPENED,
+    DEVICE_CLOSED
+} ;
+
+
+

基类成员:oflag

+

oflag 记录 注册时填入的 flag 信息以及使用 device_open 时填入的 oflag 信息。

+

基类成员:list

+

设备的增加和删除使用双向链表进行存储,节省内存。

+

基类成员:标准的函数指针

+

为不同的外设提供了标准的函数接口,当外设实现此类接口并赋值给该成员,便能达到重写的功能。

+
+
+

1.3. 设备驱动管理层标准接口

+
+

1.3.1. device_register

+

device_register 用于设备的注册,将设备信息注册到链表当中。

+
int device_register(struct device *dev, const char *name, uint16_t flag);
+
+
+
    +
  • dev 设备句柄。

  • +
  • name 设备名称。

  • +
  • flag 设备的读写属性

  • +
  • return 返回错误码,0 表示注册成功,其他表示错误。

  • +
+

flag 可以写入以下参数,表示:只读只写可读可写

+
#define DEVICE_OFLAG_RDONLY 0x1000 /* 以只读方式打开设备 */
+#define DEVICE_OFLAG_WRONLY 0x2000 /* 以只写方式打开设备 */
+#define DEVICE_OFLAG_RDWR   0x3000 /* 以读写方式打开设备 */
+
+
+
+
+

1.3.2. device_unregister

+

device_unregister 用于设备的删除,将设备信息从链表中删除。

+
int device_unregister(const char *name);
+
+
+
    +
  • dev 设备句柄

  • +
  • name 要删除的设备名称

  • +
  • return 错误码,0 表示删除,其他表示错误

  • +
+
+
+

1.3.3. device_find

+

device_find 用于根据 name 从链表中寻找设备,并返回设备句柄的首地址。

+
struct device *device_find(const char *name);
+
+
+
    +
  • dev 设备句柄

  • +
  • name 要查找的设备名称

  • +
  • return 错误码,不为 0 表示找到的设备句柄,NULL 表示未找到该设备。

  • +
+
+
+

1.3.4. device_open

+

device_open 用于设备的打开,oflag 表示以何种方式打开,目前提供 6 种打开方式。底层调用 dev 句柄中的 open 成员。

+
int device_open(struct device *dev, uint16_t oflag);
+
+
+
    +
  • dev 设备句柄

  • +
  • oflag 设备的打开方式

  • +
  • return 错误码,0 表示打开成功,其他表示错误

  • +
+

oflag 可以写入以下参数:

+
#define DEVICE_OFLAG_STREAM_TX  0x001 /* 设备以轮训发送模式打开 */
+#define DEVICE_OFLAG_STREAM_RX  0x002 /* 设备以轮训接收模式打开 */
+#define DEVICE_OFLAG_INT_TX     0x004 /* 设备以中断发送模式打开 */
+#define DEVICE_OFLAG_INT_RX     0x008 /* 设备以中断接收模式打开 */
+#define DEVICE_OFLAG_DMA_TX     0x010 /* 设备以 DMA 发送模式打开 */
+#define DEVICE_OFLAG_DMA_RX     0x020 /* 设备以 DMA 接收模式打开 */
+
+
+
+
+

1.3.5. device_close

+

device_close 用于设备的关闭。底层调用 dev 句柄中的 close 成员。

+
int device_close(struct device *dev);
+
+
+
    +
  • dev 设备句柄

  • +
  • return 错误码,0 表示关闭成功,其他表示错误

  • +
+
+
+

1.3.6. device_control

+

device_control 用于根据命令对设备进行控制和参数的修改。底层调用 dev 句柄中的 control 成员。

+
int device_control(struct device *dev, int cmd, void *args);
+
+
+
    +
  • dev 设备句柄

  • +
  • cmd 设备控制命令

  • +
  • args 控制参数

  • +
  • return 不同的控制命令返回的意义不同。

  • +
+

cmd 提供了以下标准命令,除此之外,不同外设还具有自己的命令

+
#define DEVICE_CTRL_SET_INT     0x01    /* 设置中断 */
+#define DEVICE_CTRL_CLR_INT     0x02    /* 清中断 */
+#define DEVICE_CTRL_GET_INT     0x03    /* 获取中断状态 */
+#define DEVICE_CTRL_RESUME      0x04    /* 恢复设备 */
+#define DEVICE_CTRL_SUSPEND     0x05    /* 挂起设备 */
+#define DEVICE_CTRL_CONFIG      0x06    /* 配置设备 */
+#define DEVICE_CTRL_GET_CONFIG  0x07    /* 获取设备配置 */
+
+
+
+
+

1.3.7. device_write

+

device_write 用于数据的发送,发送方式根据打开方式可以是轮询、中断、dma。底层调用 dev 句柄中的 write 成员。

+
int device_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size);
+
+
+
    +
  • dev 设备句柄

  • +
  • pos 不同的设备 pos 的意义不同

  • +
  • buffer 要写入的 buffer 缓冲区

  • +
  • size 要写入的长度

  • +
  • return 错误码,0 表示写入成功,其他表示错误

  • +
+
+
+

1.3.8. device_read

+

device_read 用于数据的接收,接收方式根据打开方式可以是轮询、中断、dma。底层调用 dev 句柄中的 read 成员。

+
int device_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size);
+
+
+
    +
  • dev 设备句柄

  • +
  • pos 不同的设备 pos 的意义不同

  • +
  • buffer 要读入的 buffer 缓冲区

  • +
  • size 要读入的长度

  • +
  • return 错误码,0 表示读入成功,其他表示错误

  • +
+
+
+

1.3.9. device_set_callback

+

device_set_callback 用于中断回调函数的注册。底层调用 dev 句柄中的 callback 成员。

+
int device_set_callback(struct device *dev, void (*callback)(struct device *dev, void *args, uint32_t size, uint32_t event));
+
+
+
    +
  • dev 设备句柄

  • +
  • callback 要注册的中断回调函数

    +
    +
      +
    • dev 设备句柄

    • +
    • args 不同外设意义不同

    • +
    • size 传输长度

    • +
    • event 中断事件类型

    • +
    +
    +
  • +
+
+
+
+

1.4. 外设驱动适配层实现

+

子类继承父类

+

不同的外设首成员为 struct device ,这就相当于父类的继承,从而可以使用子类来访问父类成员,当使用子类修改父类成员时,便拥有了子类自己的功能。实现原理是不同结构体的首地址是该结构体中首个成员的地址。

+
typedef struct xxx_device
+{
+    struct device parent;
+
+} xxx_device_t;
+
+
+

重写标准接口

+

每个外设都有一个 xxx_register 函数,用来重写标准接口。

+
dev->open = xxx_open;
+dev->close = xxx_close;
+dev->control = xxx_control;
+dev->write = xxx_write;
+dev->read = xxx_read;
+
+
+
+
+
+

2. 时钟树

+
+

2.1. 简介

+

博流系列芯片拥有丰富的时钟源选择,为方便用户配置,提供了时钟树配置表,不需要用户手动调用时钟设置接口,用户只需要关心最终的系统时钟和外设时钟频率即可。时钟配置表位于 bsp/board/xxx_board 目录下 xxx_clock_config.h 文件。

+
+
+

2.2. 时钟频率获取接口

+
+

2.2.1. system_clock_get

+

system_clock_get 用来获取系统时钟频率。

+
uint32_t system_clock_get(enum system_clock_type type);
+
+
+
    +
  • type 获取的系统时钟频率类型

  • +
+

type 提供以下几种类型

+
enum system_clock_type
+{
+    SYSTEM_CLOCK_ROOT_CLOCK = 0,
+    SYSTEM_CLOCK_FCLK,
+    SYSTEM_CLOCK_BCLK,
+    SYSTEM_CLOCK_XCLK,
+};
+
+
+
+
+

2.2.2. peripheral_clock_get

+

peripheral_clock_get 用来获取外设时钟频率。

+
uint32_t peripheral_clock_get(enum peripheral_clock_type type);
+
+
+
    +
  • type 获取的外设时钟频率类型

  • +
+

type 提供以下几种类型

+
enum peripheral_clock_type
+{
+    PERIPHERAL_CLOCK_UART = 0,
+    PERIPHERAL_CLOCK_SPI,
+    PERIPHERAL_CLOCK_I2C,
+    PERIPHERAL_CLOCK_ADC,
+    PERIPHERAL_CLOCK_DAC,
+    PERIPHERAL_CLOCK_I2S,
+};
+
+
+
+
+
+
+

3. GPIO 设备

+
+

3.1. 简介

+

GPIO 全称 General Purpose Input Output(通用输入 / 输出),博流系列芯片的 GPIO 外设主要有以下功能。

+
    +
  • 普通输入输出带上下拉

  • +
  • 复用功能带上下拉

  • +
  • 模拟功能

  • +
  • 外部中断(上升沿、下降沿、高电平、低电平)

  • +
  • 硬件消抖

  • +
  • 驱动能力控制

  • +
+

bl mcu sdk 的引脚配置方式分为两种。

+
    +
  • GPIO 复用功能通过专门的 pinmux table ,用户只需要修改 table 中的相关引脚和工功能,程序会自动配置这些引脚。pinmux table 位于 bsp/board/xxx_board 目录下 pinmux_config.h 文件。

  • +
  • 通过标准的 GPIO 设备接口配置引脚,缺点是只能配置普通的输入输出和中断功能,复用功能建议还是使用 table 进行配置。

  • +
+
+
+

3.2. GPIO 设备接口

+
+

3.2.1. gpio_set_mode

+

gpio_set_mode 用来配置 gpio 的模式。

+
void gpio_set_mode(uint32_t pin, uint32_t mode);
+
+
+
    +
  • pin 要配置的引脚

  • +
  • mode 要配置的引脚功能

  • +
+

mode 提供以下几种类型

+
#define GPIO_OUTPUT_MODE                        0
+#define GPIO_OUTPUT_PP_MODE                     1
+#define GPIO_OUTPUT_PD_MODE                     2
+#define GPIO_INPUT_MODE                         3
+#define GPIO_INPUT_PP_MODE                      4
+#define GPIO_INPUT_PD_MODE                      5
+#define GPIO_ASYNC_RISING_TRIGER_INT_MODE       6
+#define GPIO_ASYNC_FALLING_TRIGER_INT_MODE      7
+#define GPIO_ASYNC_HIGH_LEVEL_INT_MODE          8
+#define GPIO_ASYNC_LOW_LEVEL_INT_MODE           9
+#define GPIO_SYNC_RISING_TRIGER_INT_MODE        10
+#define GPIO_SYNC_FALLING_TRIGER_INT_MODE       11
+#define GPIO_SYNC_HIGH_LEVEL_INT_MODE           12
+#define GPIO_SYNC_LOW_LEVEL_INT_MODE            13
+
+
+
+
+

3.2.2. gpio_write

+

gpio_write 设置引脚电平

+
void gpio_write(uint32_t pin, uint32_t value);
+
+
+
    +
  • pin 要设置的引脚

  • +
  • value 要设置的电平

  • +
+
+
+

3.2.3. gpio_toggle

+

gpio_toggle 翻转引脚电平

+
void gpio_toggle(uint32_t pin);
+
+
+
    +
  • pin 要翻转的引脚

  • +
+
+
+

3.2.4. gpio_read

+

gpio_read 读取引脚电平

+
int  gpio_read(uint32_t pin);
+
+
+
    +
  • pin 要读取电平的引脚

  • +
  • return 0 为低电平,1 为高电平

  • +
+
+
+

3.2.5. gpio_attach_irq

+

gpio_attach_irq 为中断引脚附加中断回调函数

+
void gpio_attach_irq(uint32_t pin, void (*cbFun)(void));
+
+
+
    +
  • pin 要附加中断回调的引脚

  • +
  • cbFun 中断回调函数

  • +
+
+
+

3.2.6. gpio_irq_enable

+

gpio_irq_enable 读取引脚电平

+
void gpio_irq_enable(uint32_t pin,uint8_t enabled);
+
+
+
    +
  • pin 要开启或者关闭中断的引脚

  • +
  • enabled 0 为关闭中断,1 为打开中断

  • +
+
+
+
+
+

4. UART 设备

+
+

4.1. 简介

+

UART 全称(Universal Asynchronous Receiver/Transmitter)通用异步收发传输器,博流系列芯片的 UART 外设自带可配深度 硬件fifo ,并且拥有 RTO(接收超时)中断 ,在使用中断的时候,无需频繁进入中断,fifo 和 rto 的搭配能够使得 UART 的利用性更加高效,UART 设备具有以下功能。

+
    +
  • 轮询收发模式

  • +
  • 中断收发模式

  • +
  • dma 收发模式

  • +
  • 自动波特率检测

  • +
  • 硬件 fifo

  • +
  • 特有的 rto 中断

  • +
+
+
+

4.2. UART 设备结构体定义

+
typedef struct uart_device
+{
+    struct device parent;
+    uint8_t id;
+    uint32_t baudrate;
+    uart_databits_t databits;
+    uart_stopbits_t stopbits;
+    uart_parity_t parity;
+    uint8_t fifo_threshold;
+    void* tx_dma;
+    void* rx_dma;
+} uart_device_t;
+
+
+
    +
  • parent 继承父类属性

  • +
  • id 串口 id,0 表示串口 0,,1 表示串口 1,以此类推

  • +
  • baudrate 波特率

  • +
  • databits 数据位

  • +
  • stopbits 停止位

  • +
  • parity 校验位

  • +
  • fifo_threshold fifo 阈值,不同 mcu 最大值不同

  • +
  • tx_dma 附加的发送 dma 句柄

  • +
  • rx_dma 附加的发送 dma 句柄

  • +
+

databits 提供以下类型

+
typedef enum
+{
+    UART_DATA_LEN_5 = 0,  /*!< Data length is 5 bits */
+    UART_DATA_LEN_6 = 1,  /*!< Data length is 6 bits */
+    UART_DATA_LEN_7 = 2,  /*!< Data length is 7 bits */
+    UART_DATA_LEN_8 = 3   /*!< Data length is 8 bits */
+} uart_databits_t;
+
+
+

stopbits 提供以下类型

+
typedef enum
+{
+    UART_STOP_ONE = 0,  /*!< One stop bit */
+    UART_STOP_ONE_D_FIVE = 0,  /*!< 1.5 stop bit */
+    UART_STOP_TWO = 1   /*!< Two stop bits */
+} uart_stopbits_t;
+
+
+

parity 提供以下类型

+
typedef enum
+{
+    UART_PAR_NONE = 0,  /*!< No parity */
+    UART_PAR_ODD  = 1,  /*!< Parity bit is odd */
+    UART_PAR_EVEN = 2,  /*!< Parity bit is even */
+} uart_parity_t;
+
+
+
+
+

4.3. UART 设备参数配置表

+

每一个 UART 设备都有一个参数配置,配置文件位于 bsp/board/xxx_board 目录下 peripheral_config.h 文件。当用户打开对应设备的宏,该设备的配置才生效。例如打开宏 BSP_USING_UART0 ,UART0 设备就可以进行注册和使用了。

+
uart_device_t uartx_device[UART_MAX_INDEX] =
+{
+#ifdef BSP_USING_UART0
+        UART0_CONFIG,
+#endif
+#ifdef BSP_USING_UART1
+        UART1_CONFIG,
+#endif
+};
+
+#if defined(BSP_USING_UART0)
+#ifndef UART0_CONFIG
+#define UART0_CONFIG \
+{   \
+ .id = 0, \
+ .baudrate = 2000000,\
+ .databits = UART_DATA_LEN_8, \
+ .stopbits = UART_STOP_ONE, \
+ .parity = UART_PAR_NONE, \
+ .fifo_threshold = 1, \
+}
+#endif
+#endif
+
+
+
+
+

4.4. UART 设备接口

+

UART 设备接口全部遵循标准设备驱动管理层提供的接口。

+
+

4.4.1. uart_register

+

uart_register 用来注册一个 UART 设备,在注册之前需要打开对应 UART 设备的宏定义,例如 BSP_USING_UART0 方可使用 UART0 设备。注册完成以后才可以使用其他接口,如果没有定义宏,则无法使用 UART 设备。

+
int uart_register(enum uart_index_type index, const char *name, uint16_t flag);
+
+
+
    +
  • index 要注册的设备索引

  • +
  • name 为注册的设备命名

  • +
  • flag 默认可读可写属性

  • +
+

index 用来选择 UART 设备配置,一个 index 对应一个 UART 设备配置,比如 UART0_INDEX 对应 UART0 配置,index 有如下可选类型

+
enum uart_index_type
+{
+#ifdef BSP_USING_UART0
+    UART0_INDEX,
+#endif
+#ifdef BSP_USING_UART1
+    UART1_INDEX,
+#endif
+#ifdef BSP_USING_UART2
+    UART2_INDEX,
+#endif
+#ifdef BSP_USING_UART3
+    UART3_INDEX,
+#endif
+#ifdef BSP_USING_UART4
+    UART4_INDEX,
+#endif
+    UART_MAX_INDEX
+};
+
+
+
+
+

4.4.2. device_open

+

device_open 用于设备的打开,oflag 表示以何种方式打开。

+
int device_open(struct device *dev, uint16_t oflag);
+
+
+
    +
  • dev 设备句柄

  • +
  • oflag 设备的打开方式

  • +
  • return 错误码,0 表示打开成功,其他表示错误

  • +
+

oflag 可以写入以下参数:

+
#define DEVICE_OFLAG_STREAM_TX  0x001 /* 设备以轮训发送模式打开 */
+#define DEVICE_OFLAG_STREAM_RX  0x002 /* 设备以轮训接收模式打开 */
+#define DEVICE_OFLAG_INT_TX     0x004 /* 设备以中断发送模式打开 */
+#define DEVICE_OFLAG_INT_RX     0x008 /* 设备以中断接收模式打开 */
+#define DEVICE_OFLAG_DMA_TX     0x010 /* 设备以 DMA 发送模式打开 */
+#define DEVICE_OFLAG_DMA_RX     0x020 /* 设备以 DMA 接收模式打开 */
+
+
+
+
+

4.4.3. device_close

+

device_close 用于设备的关闭。

+
int device_close(struct device *dev);
+
+
+
    +
  • dev 设备句柄

  • +
  • return 错误码,0 表示关闭成功,其他表示错误

  • +
+
+
+

4.4.4. device_control

+

device_control 用于根据命令对设备进行控制和参数的修改。

+
int device_control(struct device *dev, int cmd, void *args);
+
+
+
    +
  • dev 设备句柄

  • +
  • cmd 设备控制命令

  • +
  • args 控制参数

  • +
  • return 不同的控制命令返回的意义不同。

  • +
+

串口设备除了标准的控制命令,还具有自己特殊的控制命令。

+
#define DEVICE_CTRL_UART_GET_TX_FIFO        0x10
+#define DEVICE_CTRL_UART_GET_RX_FIFO        0x11
+#define DEVICE_CTRL_UART_ATTACH_TX_DMA      0x12
+#define DEVICE_CTRL_UART_ATTACH_RX_DMA      0x13
+
+
+

args 根据不同的 cmd 传入不同,具体如下:

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

cmd

args

DEVICE_CTRL_SET_INT

uart_it_type

DEVICE_CTRL_CLR_INT

uart_it_type

DEVICE_CTRL_CONFIG

uart_param_cfg_t

DEVICE_CTRL_UART_ATTACH_TX_DMA

dma句柄

DEVICE_CTRL_UART_ATTACH_RX_DMA

dma句柄

DEVICE_CTRL_UART_GET_TX_FIFO

缓存变量

DEVICE_CTRL_UART_GET_RX_FIFO

缓存变量

+
+
+

4.4.5. device_write

+

device_write 用于串口数据的发送,发送方式根据打开方式可以是轮询、中断、dma。

+
int device_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size);
+
+
+
    +
  • dev 设备句柄

  • +
  • pos 无作用

  • +
  • buffer 要写入的 buffer 缓冲区

  • +
  • size 要写入的长度

  • +
  • return 错误码,0 表示写入成功,其他表示错误

  • +
+
+
+

4.4.6. device_read

+

device_read 用于串口数据的接收,接收方式根据打开方式可以是轮询、中断、dma。

+
int device_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size);
+
+
+
    +
  • dev 设备句柄

  • +
  • pos 无作用

  • +
  • buffer 要读入的 buffer 缓冲区

  • +
  • size 要读入的长度

  • +
  • return 错误码,0 表示读入成功,其他表示错误

  • +
+
+
+

4.4.7. device_set_callback

+

device_set_callback 用于注册一个串口中断回调函数。

+
int device_set_callback(struct device *dev, void (*callback)(struct device *dev, void *args, uint32_t size, uint32_t event));
+
+
+
    +
  • dev 设备句柄

  • +
  • callback 要注册的中断回调函数

    +
    +
      +
    • dev 设备句柄

    • +
    • args 接收发送缓冲区,数据类型为 uint8_t*

    • +
    • size 传输长度

    • +
    • event 中断事件类型

    • +
    +
    +
  • +
+

串口设备 event 有以下类型

+
enum uart_event_type
+{
+    UART_EVENT_TX_END,
+    UART_EVENT_TX_FIFO,
+    UART_EVENT_RX_END,
+    UART_EVENT_RX_FIFO,
+    UART_EVENT_RTO,
+    UART_EVENT_UNKNOWN
+};
+
+
+
+
+
+
+

5. PWM设备

+
+

5.1. 简介

+
+
+

5.2. PWM设备接口

+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/development_guide/build/html/blink_demo_introduce.html b/docs/development_guide/build/html/blink_demo_introduce.html new file mode 100644 index 00000000..a568bcf5 --- /dev/null +++ b/docs/development_guide/build/html/blink_demo_introduce.html @@ -0,0 +1,275 @@ + + + + + + + + + + 1. 流水灯示例 — BL_MCU_SDK 开发指南 0.1 文档 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

1. 流水灯示例

+
+

1.1. 硬件连接

+
+ +

BL706_IOT板支持上述电路

+
+
    +
  • 硬件连接如上图所示 GPIO29 GPIO30 GPIO31 GPIO22 分别控制四路 LED 灯

  • +
+
+
+

1.2. 软件实现

+
    +
  • 软件代码见 examples/gpio/gpio_blink

  • +
+
1
+2
+3
+4
gpio_set_mode(GPIO_PIN_22, GPIO_OUTPUT_PP_MODE);
+gpio_set_mode(GPIO_PIN_29, GPIO_OUTPUT_PP_MODE);
+gpio_set_mode(GPIO_PIN_30, GPIO_OUTPUT_PP_MODE);
+gpio_set_mode(GPIO_PIN_31, GPIO_OUTPUT_PP_MODE);
+
+
+
    +
  • 使用上述代码将 GPIO22 GPIO29 GPIO30 GPIO31 配置为输出模式。

  • +
+
1
gpio_write(GPIO_PIN_22, 0);
+
+
+
    +
  • 使用上述代码修改输出的电平值。

  • +
+
+
+

1.3. 最终效果

+

见视频展示

+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/development_guide/build/html/breath_pwm_demo_introduce.html b/docs/development_guide/build/html/breath_pwm_demo_introduce.html new file mode 100644 index 00000000..3725e92c --- /dev/null +++ b/docs/development_guide/build/html/breath_pwm_demo_introduce.html @@ -0,0 +1,292 @@ + + + + + + + + + + 2. 呼吸灯示例 — BL_MCU_SDK 开发指南 0.1 文档 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

2. 呼吸灯示例

+
+

2.1. 硬件连接

+
+ +

BL706_IOT板支持上述电路

+
+
    +
  • 硬件连接如上图所示 GPIO29 GPIO30 GPIO31 GPIO22 分别控制四路 LED 灯

  • +
  • 呼吸灯会单独使用 GPIO22 来演示效果

  • +
+
+
+

2.2. 软件实现

+
    +
  • 软件代码见 examples/pwm/pwm_breath_led

  • +
  • PWM 的输出引脚由板级描述文件 bsp/board/bl706_iot/pinmux_config.h 来配置

  • +
+
1
#define CONFIG_GPIO22_FUNC GPIO_FUN_UNUSED
+
+
+
    +
  • 可以看到,我们将 GPIO22 的功能选择为 PWM 输出,不同的电路板会存在不同的引脚配置。

  • +
  • 我们会使用向导来配置不同应用场景下的引脚配置,用户也可以手动修改。

  • +
+
1
+2
+3
+4
+5
+6
+7
+8
pwm_register(PWM0_INDEX, "led_breath", DEVICE_OFLAG_RDWR);
+
+struct device *led_breath = device_find("led_breath");
+
+if (led_breath)
+{
+    device_open(led_breath, 0);
+}
+
+
+
    +
  • 上述代码展现了 bl_mcu_sdk 框架最一般的设备初始化流程,首先调用 pwm_register 函数注册 pwm 设备

  • +
  • 然后通过 find 函数找到设备对应的句柄,保存于 led_breath 对象中

  • +
  • 使用 device_open 来打开 led_breath 设备。

  • +
+
1
device_control(led_breath, DEVICE_CTRL_CONFIG, &pwm_cfg);
+
+
+

使用 device_contorl 函数,配合 DEVICE_CTRL_CONFIG 指令,输入需要配置的频率和占空比,即可配置 PWM 的输出波形。

+
+
+

2.3. 最终效果

+

见视频展示

+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/development_guide/build/html/connecting_hardware.html b/docs/development_guide/build/html/connecting_hardware.html new file mode 100644 index 00000000..1b612cd4 --- /dev/null +++ b/docs/development_guide/build/html/connecting_hardware.html @@ -0,0 +1,333 @@ + + + + + + + + + + 5. 硬件连接 — BL_MCU_SDK 开发指南 0.1 文档 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

5. 硬件连接

+

本文档介绍了如何连接 BL70x 系列 MCU 的开发板

+
+

5.1. BL706_IOT 开发板

+ + +
+

5.1.3. 使用串口烧写程序连接方法

+
    +
  • 使用串口烧写前,请确保正确安装了 Bouffalo Lab Dev Cube 或命令行烧写工具

    +
      +
    • 使用 Type-C USB 数据线 or Mini USB 数据线连接到开发板上对应的 Type-C 接口 or Mini 接口上。

    • +
    • 按下开发板上的 Boot 键,不要释放

    • +
    • 按下开发板上的 RST 键,此时已经进入 Boot ROM,可以释放两个按键

    • +
    • 这时就可以从 Bouffalo Lab Dev Cube 中看到相应的串口 COM 号,如没有出现,请点击 Refresh 按钮刷新一下

    • +
    +
  • +
  • 如没有合适的数据线,也可以使用一些常见的 USB-TTL 模块,连接到开发板的 UART0 端口进行烧写。 UART0HD1 组上,连接方法如下:

  • +
+
USB-TTL      BL702_IoT
+----------------------
+  3V3   <-->   VDD
+  TXD   <-->   RX0
+  RXD   <-->   TX0
+  GND   <-->   GND
+
+
+
    +
  • 烧写方法同上

  • +
+
+
+
+

5.2. BL702_AVB 开发板

+
+

5.2.1. 使用 CK-Link 烧写、调试连接方法

+
    +
  • TO DO

  • +
+
+
+

5.2.2. 使用串口烧写程序连接方法

+
    +
  • TO DO

  • +
+
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/development_guide/build/html/genindex.html b/docs/development_guide/build/html/genindex.html new file mode 100644 index 00000000..97ed03d3 --- /dev/null +++ b/docs/development_guide/build/html/genindex.html @@ -0,0 +1,227 @@ + + + + + + + + + + 索引 — BL_MCU_SDK 开发指南 0.1 文档 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
    + +
  • »
  • + +
  • 索引
  • + + +
  • + + + +
  • + +
+ + +
+
+
+
+ + +

索引

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

+ © 版权所有 2021, BouffaloLab Co., Ltd. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/development_guide/build/html/get_started.html b/docs/development_guide/build/html/get_started.html new file mode 100644 index 00000000..2fd9d45e --- /dev/null +++ b/docs/development_guide/build/html/get_started.html @@ -0,0 +1,275 @@ + + + + + + + + + + 1. 开发前的准备 — BL_MCU_SDK 开发指南 0.1 文档 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

1. 开发前的准备

+
+

1.1. 硬件环境准备

+
    +
  • 一块 BL702 系列 MCU 的开发板:

    +
      +
    • BL706_IOT 开发板, or

    • +
    • BL706_AVB 开发板

    • +
    +
  • +
+

BL706_Iot 开发板如下图所示

+
+ +

BL706_IoT

+
+
    +
  • 一个支持标准 JTAG 功能的调试器:

  • +
+
+
    +
  • CK-Link 仿真器,or

  • +
  • Jlink V11 仿真器,or

  • +
  • Sipeed USB-JTAG/TTL 调试器,or

  • +
  • Bouffalo Lab Debugger 调试器

  • +
+
+
    +
  • 一台 PC 主机(运行 Windows 或者 Linux 系统)

  • +
+
+
+

1.2. 软件环境准备

+

为了更好的进行 BL702 系列 MCU 的开发,建议您应当具备以下开发环境:

+
    +
  • Windows 使用 CDK 环境开发 (建议 Windows 7 以上版本。) ,or

  • +
  • Windows 使用 Eclipse 环境开发 (建议 Windows 7 以上版本。) ,or

  • +
  • Linux (建议使用 Ubuntu 18 以上的 LTS 版本)

  • +
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/development_guide/build/html/index.html b/docs/development_guide/build/html/index.html new file mode 100644 index 00000000..b9d53d13 --- /dev/null +++ b/docs/development_guide/build/html/index.html @@ -0,0 +1,262 @@ + + + + + + + + + + BL MCU SDK 开发指南 — BL_MCU_SDK 开发指南 0.1 文档 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

BL MCU SDK 开发指南

+

博流 BL702 系列产品是基于 “SiFive E24 Core” RISC-V 处理器的通用微控制器,具有 BLE 5.0、zigbee 和以太网等网络功能,同时还具备其它丰富的外设。 +可被广泛应用于 IoT 和其他低功耗领域中。 +支持通过 JTAG 对芯片进行烧写和调试,也支持通过 UART 进行程序烧录。

+

BL MCU SDK 将为您提供博流 BL70X 系列 MCU 开发的全方位支持。

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

+ © 版权所有 2021, BouffaloLab Co., Ltd. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/development_guide/build/html/objects.inv b/docs/development_guide/build/html/objects.inv new file mode 100644 index 00000000..68bd010f --- /dev/null +++ b/docs/development_guide/build/html/objects.inv @@ -0,0 +1,6 @@ +# Sphinx inventory version 2 +# Project: BL_MCU_SDK 开发指南 +# Version: 0.1 +# The remainder of this file is compressed using zlib. +xڅJ@y7֝XAqҙdBu xEZD/2D5M?9yBys. ds4ۼ.wnE}E4~UG,U|Q)MΐHj}W`dt`2yL`u !*YVhqKb@o%jhj5q]٦Qp-I( +oחi){n㋗=!yVʝpY"MgBF)ܴ-U,OZl ~1=kMq\ml:i + + + + + + + 搜索 — BL_MCU_SDK 开发指南 0.1 文档 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
    + +
  • »
  • + +
  • 搜索
  • + + +
  • + +
  • + +
+ + +
+
+
+
+ + + + +
+ +
+ +
+ +
+
+ +
+ +
+

+ © 版权所有 2021, BouffaloLab Co., Ltd. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/development_guide/build/html/searchindex.js b/docs/development_guide/build/html/searchindex.js new file mode 100644 index 00000000..175ae822 --- /dev/null +++ b/docs/development_guide/build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({docnames:["Linux_quick_start_ubuntu","Windows_quick_start_cdk","Windows_quick_start_eclipse","api_guide","blink_demo_introduce","breath_pwm_demo_introduce","connecting_hardware","get_started","index","uart_loopback_demo_introduce"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["Linux_quick_start_ubuntu.rst","Windows_quick_start_cdk.rst","Windows_quick_start_eclipse.rst","api_guide.rst","blink_demo_introduce.rst","breath_pwm_demo_introduce.rst","connecting_hardware.rst","get_started.rst","index.rst","uart_loopback_demo_introduce.rst"],objects:{},objnames:{},objtypes:{},terms:{"0x001":3,"0x002":3,"0x004":3,"0x008":3,"0x01":3,"0x010":3,"0x02":3,"0x020":3,"0x03":3,"0x04":3,"0x05":3,"0x06":3,"0x07":3,"0x10":3,"0x1000":3,"0x11":3,"0x12":3,"0x13":3,"0x2000":3,"0x3000":3,"10":3,"11":3,"12":3,"13":3,"18":7,"19":0,"2000000":[0,3],"20210120":0,"3v3":6,"case":2,"char":3,"const":3,"do":6,"enum":3,"export":0,"if":[3,5,9],"import":2,"int":3,"null":3,"return":3,"void":[3,9],adc:3,add:1,api:8,app:[0,2],appli:2,applic:2,apt:0,arg:[3,9],asynchron:3,bashrc:0,baudrat:3,bflb_mcu_prefer:2,bflb_platform_init:9,bin:[0,1,2],bit:3,bl702:[0,1,2,7,8],bl702_iot:6,bl706:[2,6],bl706_avb:7,bl706_iot:[0,2,4,5,7,9],bl70x:[6,8],bl70x_flash:1,bl70x_flasher:1,bl:3,bl_clean:2,bl_make:2,bl_mcu_sdk:[3,5],ble:8,board:[0,2,3,5,6,9],boot:[0,6],boot_rom:0,borad:2,bouffalo:[2,6,7],bouffalolab:[0,1,2],bsp:[3,5,9],bsp_using_uart0:3,bsp_using_uart1:3,bsp_using_uart2:3,bsp_using_uart3:3,bsp_using_uart4:3,buffer:3,build:[0,1,2],callback:3,cancel:2,cbfun:3,cd:0,cdk:[7,8],cdk_flashload:1,cdkproj:1,ck:[1,7],ck_link:6,clean:1,clone:[0,1,2],close:3,cmd:3,code:3,com:[0,1,2,6],command:2,config_gpio14_func:9,config_gpio15_func:9,config_gpio22_func:5,connect:6,consol:2,control:3,core:8,cp:0,cpu:1,csky:1,ctrl:3,cube:6,data:3,databit:3,debug:[1,2],debug_log:9,debugg:[1,7],defin:[3,5,9],demo:2,dev:[0,2,3,6,9],devic:[3,5,9],device_class_adc:3,device_class_camera:3,device_class_dma:3,device_class_gpio:3,device_class_i2:3,device_class_i2c:3,device_class_non:3,device_class_pwm:3,device_class_sdio:3,device_class_sec_hash:3,device_class_spi:3,device_class_tim:3,device_class_typ:3,device_class_uart:3,device_class_usb:3,device_contorl:5,device_control:[5,9],device_ctrl_clr_int:3,device_ctrl_config:[3,5],device_ctrl_get_config:3,device_ctrl_get_int:3,device_ctrl_resum:3,device_ctrl_set_int:[3,9],device_ctrl_suspend:3,device_ctrl_uart_attach_rx_dma:3,device_ctrl_uart_attach_tx_dma:3,device_ctrl_uart_get_rx_fifo:3,device_ctrl_uart_get_tx_fifo:3,device_find:[5,9],device_oflag_dma_rx:3,device_oflag_dma_tx:3,device_oflag_int_rx:3,device_oflag_int_tx:3,device_oflag_rdonli:3,device_oflag_rdwr:[3,5],device_oflag_stream_rx:3,device_oflag_stream_tx:3,device_oflag_wronli:3,device_open:5,device_set_callback:9,device_status_typ:3,device_writ:9,dlist_t:3,dma:3,download:[0,1,2],e24:8,echo:0,eclips:[7,8],edit:2,elf:[0,1,2],els:9,enabl:3,endif:3,epf:2,even:3,event:3,exampl:[0,1,2,4,5,9],exe:[1,2],exist:2,fifo:3,fifo_threshold:3,file:[0,2],find:[5,9],finish:2,finsh:2,flag:3,flash:1,flashdownload:1,gdb:2,gener:[2,3],git:[0,1,2],gite:[0,1,2],gnd:[2,6],gpio22:[4,5],gpio29:[4,5],gpio30:[4,5],gpio31:[4,5],gpio:[2,4,8],gpio_async_falling_triger_int_mod:3,gpio_async_high_level_int_mod:3,gpio_async_low_level_int_mod:3,gpio_async_rising_triger_int_mod:3,gpio_blink:[2,4],gpio_fun_uart0_rx:9,gpio_fun_uart0_tx:9,gpio_fun_unus:5,gpio_input_mod:3,gpio_input_pd_mod:3,gpio_input_pp_mod:3,gpio_output_mod:3,gpio_output_pd_mod:3,gpio_output_pp_mod:[3,4],gpio_pin_14:9,gpio_pin_15:9,gpio_pin_22:4,gpio_pin_29:4,gpio_pin_30:4,gpio_pin_31:4,gpio_set_mod:4,gpio_sync_falling_triger_int_mod:3,gpio_sync_high_level_int_mod:3,gpio_sync_low_level_int_mod:3,gpio_sync_rising_triger_int_mod:3,gpio_writ:4,gz:0,hal:3,handl:3,hd1:[6,9],hd3:6,hellowd:[0,1,2],helloworld:[0,1,2],help:1,http:[0,1,2],id:3,ifdef:3,ifndef:3,index:3,input:3,instal:0,interfac:0,into:2,iot:[2,6,8],is:3,jlink:[6,7],jlink_bl_mcu_sdk:2,jtag:[6,7,8],jtag_tck:6,jtag_tdi:6,jtag_tdo:6,jtag_tm:6,keil:8,lab:[2,6,7],launch:2,led:[4,5],led_breath:5,length:3,link:[1,2,7],linux:[7,8],list:3,loader:1,log:2,lts:7,main:[0,2],make:2,mcu:[0,1,2,3,6,7],mdk:8,media:0,mini:[0,6],mkdir:0,mode:3,name:3,name_max:3,next:2,no:3,node:3,occ:1,odd:3,of:3,oflag:3,ok:1,one:3,open:3,or:[6,7],org:0,ostrac:1,out:2,output:3,over:2,pane:1,parent:3,pariti:3,path:0,pc:[2,6,7],peripher:1,peripheral_clock_adc:3,peripheral_clock_dac:3,peripheral_clock_i2:3,peripheral_clock_i2c:3,peripheral_clock_spi:3,peripheral_clock_typ:3,peripheral_clock_uart:3,peripheral_config:3,picocom:0,pin:3,pinmux:3,pinmux_config:[3,5,9],pos:3,prefer:2,printf:9,profil:1,project:[1,2],purpos:3,pwm0_index:5,pwm:[5,8,9],pwm_breath_l:5,pwm_cfg:5,pwm_regist:5,read:3,receiv:3,recurs:[0,1,2],refresh:6,regist:1,risc:[2,8],riscv64:0,rom:6,rst:[0,1,2,6],rto:3,rx0:6,rx:9,rx_dma:3,rxd0:2,rxd:6,sdk:[0,1,2,3],segger:2,serial:1,set:1,set_callback:9,setup:1,sifiv:8,sipe:7,size:[3,9],sky:1,sourc:0,spi:3,start:1,state:9,statu:3,std:3,step:2,stop:[1,3],stopbit:3,struct:[3,5,9],structur:3,success:1,sudo:0,system:1,system_clock_bclk:3,system_clock_fclk:3,system_clock_root_clock:3,system_clock_typ:3,system_clock_xclk:3,tabl:3,tar:0,target:2,tck:6,tdi:6,tdo:6,tms:6,to:6,tool:1,transmitt:3,ttl:[0,1,2,6,7],ttyusb0:0,two:3,tx0:6,tx:9,tx_dma:3,txd0:2,txd:6,type:[1,2,3,6],typedef:3,uart0:[3,6],uart0_config:3,uart0_index:3,uart1_config:3,uart1_index:3,uart2_index:3,uart3_index:3,uart4_index:3,uart:[0,8,9],uart_data_len_5:3,uart_data_len_6:3,uart_data_len_7:3,uart_data_len_8:3,uart_databits_t:3,uart_devic:3,uart_device_t:3,uart_echo:9,uart_event_rto:[3,9],uart_event_rx_end:3,uart_event_rx_fifo:[3,9],uart_event_tx_end:3,uart_event_tx_fifo:3,uart_event_typ:3,uart_event_unknown:3,uart_index_typ:3,uart_irq_callback:9,uart_it_typ:3,uart_max_index:3,uart_par_even:3,uart_par_non:3,uart_par_odd:3,uart_param_cfg_t:3,uart_parity_t:3,uart_rto_it:9,uart_rx_fifo_it:9,uart_stop_on:3,uart_stop_one_d_f:3,uart_stop_two:3,uart_stopbits_t:3,uartx_devic:3,ubuntu:7,uint16_t:3,uint32_t:[3,9],uint8_t:[3,9],univers:3,updat:0,upload:0,usb:[0,1,2,6,7],usr:0,v11:7,v3:0,valu:3,vdd33:6,vdd:6,vi:0,view:1,viewer:1,vref:6,vtref:6,welcom:2,wget:0,window:[7,8],workspac:2,write:3,x86_64:0,xxx:2,xxx_board:3,xxx_clock_config:3,xxx_close:3,xxx_control:3,xxx_devic:3,xxx_device_t:3,xxx_open:3,xxx_read:3,xxx_regist:3,xxx_write:3,zigbe:8,zxvf:0},titles:["4. Linux \u73af\u5883\u5f00\u53d1\u6307\u5357","2. Windows \u4e0b\u4f7f\u7528 CDK (\u7c7b MDK Keil)\u5f00\u53d1\u6307\u5357","3. Windows \u4e0b\u4f7f\u7528 Eclipse \u5f00\u53d1\u6307\u5357","1. API \u5206\u5c42\u6a21\u578b","1. \u6d41\u6c34\u706f\u793a\u4f8b","2. \u547c\u5438\u706f\u793a\u4f8b","5. \u786c\u4ef6\u8fde\u63a5","1. \u5f00\u53d1\u524d\u7684\u51c6\u5907","BL MCU SDK \u5f00\u53d1\u6307\u5357","3. \u4e32\u53e3\u81ea\u6536\u53d1\u793a\u4f8b"],titleterms:{api:3,bl702_avb:6,bl706_iot:6,bl:8,bl_mcu_sdk:[0,1,2],cdk:1,ck:6,cmake:0,device_clos:3,device_control:3,device_find:3,device_open:3,device_read:3,device_regist:3,device_set_callback:3,device_unregist:3,device_writ:3,eclips:2,gpio:3,gpio_attach_irq:3,gpio_irq_en:3,gpio_read:3,gpio_set_mod:3,gpio_toggl:3,gpio_writ:3,hello:[0,1,2],keil:1,link:6,linux:0,make:0,mcu:8,mdk:1,peripheral_clock_get:3,pwm:3,risc:0,sdk:8,system_clock_get:3,uart:3,uart_regist:3,window:[1,2],world:[0,1,2]}}) \ No newline at end of file diff --git a/docs/development_guide/build/html/uart_loopback_demo_introduce.html b/docs/development_guide/build/html/uart_loopback_demo_introduce.html new file mode 100644 index 00000000..a73bf853 --- /dev/null +++ b/docs/development_guide/build/html/uart_loopback_demo_introduce.html @@ -0,0 +1,328 @@ + + + + + + + + + + 3. 串口自收发示例 — BL_MCU_SDK 开发指南 0.1 文档 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

3. 串口自收发示例

+
+

3.1. 硬件连接

+
+ +

BL706_IOT板支持上述电路

+
+
    +
  • 硬件连接如上图所示 板子将芯片对应的 RX 与 TX 脚引到了排针 HD1

  • +
  • 将对应的 TX 接上串口转换芯片的 RX,RX 接上串口转换芯片的 TX,将串口转换芯片连接电脑。

  • +
+
+
+

3.2. 软件实现

+
    +
  • 软件代码见 examples/uart/uart_echo

  • +
  • pwm 的输出引脚由板级描述文件 bsp/board/bl706_iot/pinmux_config.h 来配置

  • +
+
1
+2
#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX
+#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX
+
+
+
    +
  • 可以看到,我们将 GPIO_PIN_14GPIO_PIN_15 的功能选择了 UART 功能。

  • +
  • 不同的电路板会存在不同的引脚配置,我们会使用向导来配置不同应用场景下的引脚配置,用户也可以手动修改。

  • +
+
1
bflb_platform_init();
+
+
+
    +
  • bflb_platform_init 函数中,我们已经注册并且打开了一个调试用的串口设备,给用户实现一个 printf 的基本功能用作打印输出报文。

  • +
+
1
struct device *uart = device_find("debug_log");
+
+
+
    +
  • 我们通过 find 函数,找到在 bflb_platform_init 函数中注册并且打开的串口设备句柄,储存于 uart 变量中。

  • +
+
1
+2
+3
+4
+5
if (uart)
+{
+    device_set_callback(uart, uart_irq_callback);
+    device_control(uart, DEVICE_CTRL_SET_INT, (void *)(UART_RX_FIFO_IT|UART_RTO_IT));
+}
+
+
+
    +
  • 通过 set_callback 函数,注册用户指定的中断服务函数。通过 device_control 函数打开中断使能开关

  • +
+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
void uart_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state)
+{
+    if (state == UART_EVENT_RX_FIFO)
+    {
+        device_write(dev,0,(uint8_t *)args,size);
+    }
+    else if (state == UART_EVENT_RTO)
+    {
+        device_write(dev,0,(uint8_t *)args,size);
+    }
+}
+
+
+
    +
  • 此函数是示例的中断服务函数,作用是将接受到的数据原封不动的发送出去。

    +
    +
      +
    • state 会返回 UART 设备的中断类型

    • +
    • args 包含了返回数据指针

    • +
    • size 包含返回数据的长度

    • +
    • dev 为中断的 uart 设备句柄

    • +
    +
    +
  • +
  • 当中断产生,将会调用 device_write 函数将接受到的数据发送回去。

  • +
+
+
+

3.3. 最终效果

+

见视频讲解

+
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/development_guide/make.bat b/docs/development_guide/make.bat new file mode 100644 index 00000000..6247f7e2 --- /dev/null +++ b/docs/development_guide/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/docs/development_guide/source/Linux_quick_start_ubuntu.rst b/docs/development_guide/source/Linux_quick_start_ubuntu.rst new file mode 100644 index 00000000..8f7f344e --- /dev/null +++ b/docs/development_guide/source/Linux_quick_start_ubuntu.rst @@ -0,0 +1,134 @@ +Linux 环境开发指南 +============================= + +本文档介绍了如何在 Linux 安装配置 BL702 系列 MCU 需要的软件开发工具。 + + + +需要的软硬件环境 +----------------------------- + +- 一根 mini USB 数据线 +- 一个 USB-TTL 串口模块 +- 杜邦线若干 + +配置 RISC-V 工具链 +----------------------------- + +.. code-block:: bash + :linenos: + :emphasize-lines: 4-6 + + $ cd ~ + $ wget -c https://dev.bouffalolab.com/media/upload/download/riscv64-elf-x86_64-20210120.tar.gz + $ mkdir -p riscv64-elf-20210120 + $ tar -zxvf riscv64-elf-x86_64-20210120.tar.gz -C riscv64-elf-20210120 + $ sudo cp ~/riscv64-elf-20210120 /usr/bin + $ echo "export PATH=\"$PATH:/usr/bin/riscv64-elf-20210120/bin\"" >> ~/.bashrc + $ source ~/.bashrc + +配置 cmake & make 工具 +---------------------------- + +.. code-block:: bash + :linenos: + :emphasize-lines: 5-7 + + $ sudo apt update + $ sudo apt install make + $ cd ~ + $ wget -c https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz + $ tar -zxvf cmake-3.19.3-Linux-x86_64.tar.gz + $ sudo cp ~/cmake-3.19.3-Linux-x86_64 /usr/bin + $ echo "export PATH=\"$PATH:/usr/bin/cmake-3.19.3-Linux-x86_64/bin\"" >> ~/.bashrc + $ source ~/.bashrc + + +硬件连接 +---------------------- + +- 具体开发板的连接, 请参考 :ref:`connect_hardware` 部分 +- 请确保开发板正确设置后再进行下面的步骤 (建议 Linux 下采用串口连接) + + +获取 bl_mcu_sdk +--------------------------- + +- 打开终端输入以下命令获取 bl_mcu_sdk + +.. code-block:: bash + :linenos: + + $ cd ~ + $ git clone https://gitee.com/bouffalolab/bl_mcu_sdk.git --recursive + + +测试 Hello World 工程 +------------------------------ + +打开 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 获取到 SDK 后,进入 sdk 中的 ``examples/hellowd/helloworld`` 目录下,打开 ``main.c``,即可编辑 helloworld 的相关代码。 + +.. code-block:: bash + :linenos: + + $ cd ~/bl_mcu_sdk/examples/hellowd/helloworld + $ vi main.c + +- 若编辑完成后,保存修改并关闭文件,接下来进行编译 + +编译 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: bash + :linenos: + + $ cd ~/bl_mcu_sdk + $ make build BOARD=bl706_iot APP=helloworld + + +烧写 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 烧写前请先确认烧写方式,若采用串口烧写,请先按住板子上的 ``boot`` 键不要释放,此时在按下 ``rst`` 键,然后释放两个键,此时板子进入 boot_rom 状态。 +- 这时在终端中输入以下命令进行烧写 + +.. code-block:: bash + :linenos: + + $ cd ~/bl_mcu_sdk + $ make download INTERFACE=uart + +- 如果下载失败请检查: + + - 1. 是否使用串口烧写,开发板是否供电,硬件连接是否正确。 + - 2. 烧写命令是否在 ``bl_mcu_sdk`` 目录下执行 + - 3. 是否进入 boot_rom 模式 + - 4. 串口是否被占用 + +运行 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 打开新的终端,安装、运行串口工具 + +.. code-block:: bash + :linenos: + + $ sudo apt install picocom # 若已经安装请忽略 + $ picocom -b 2000000 /dev/ttyUSB0 + +- 按一下开发板上的 ``rst`` 按键,即可在串口终端中看到 ``hello world!`` + +.. figure:: img/linux1.png + :alt: + + helloworld! + + +调试 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + + diff --git a/docs/development_guide/source/Windows_quick_start_cdk.rst b/docs/development_guide/source/Windows_quick_start_cdk.rst new file mode 100644 index 00000000..5260c052 --- /dev/null +++ b/docs/development_guide/source/Windows_quick_start_cdk.rst @@ -0,0 +1,164 @@ +Windows 下使用 CDK (类 MDK Keil)开发指南 +============================= + +本文档介绍了如何在 Windows 下使用 `平头哥半导体 `_ 开发的 CDK 集成开发环境, +来完成博流 BL702 系列 MCU 的相关软件开发工作。 + +关于剑池 CDK ,这是一款由平头哥半导体开发打造的集成开发环境。它拥有和传统 MCU 开发环境十分近似的操作和设置,旨在不改变用户开发习惯的基础上,全面接入云端开发资源,结合图形化的 OSTracer、Profiling 等调试分析工具,加速用户产品开发。 + + +需要的软硬件环境 +----------------------------- + +- 剑池 CDK 软件 +- 一根 USB Type-A 数据线 +- 一个 CK-Link 仿真器 +- 一个 USB-TTL 串口模块 +- 杜邦线若干 + + +下载剑池 CDK 软件安装包 +----------------------------- + +- `剑池CDK `_ 软件安装可以从平头哥半导体 OCC 官网获取到。 + +- 下载完成后,解压缩,双击 ``setup.exe``,按照其提示,完成软件安装即可。 + + +下载 bl_mcu_sdk 软件开发包 +---------------------------- + +- 从开源社区下载 bl_mcu_sdk 软件开发包。 + + - 可以使用 ``git clone`` 或者直接 ``download`` 的方式下 SDK + - 使用 ``git clone`` 前请确保已正确安装 ``git``,打开支持 ``git`` 的终端输入以下命令即可获取最新的 SDK。 + + .. code-block:: bash + :linenos: + :emphasize-lines: 1 + + $ git clone https://gitee.com/bouffalolab/bl_mcu_sdk.git --recursive + + +硬件连接 +---------------------- + +- 具体开发板的连接, 请参考 :ref:`connect_hardware` 部分 +- 请确保开发板被正确设置后再进行下面的步骤 + + +测试 Hello World 工程 +------------------------------ + +打开 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 获取到 SDK 后,进入 sdk 中的 ``examples/hellowd/helloworld/cdk`` 目录下,双击 ``helloworld.cdkproj``,即可打开 ``Helloworld`` 工程。 + + +编译 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. figure:: img/cdk1.png + :alt: + + helloworld.cdkproj + +- 在 CDK 工具栏中,点击编译图标即可编译工程 + + - 点击 ``1`` 处 图标 ``Build Project`` 即可编译当前选中的工程 + - 点击 ``2`` 处 图标 ``Clean Project`` 即可清除上次编译的结果 + - 点击 ``3`` 处 图标 ``Flash Download`` 即可将编译好的代码下载到芯片中 + - 点击 ``4`` 处 图标 ``Start/Stop Debug`` 即可进行 debug 的相关操作 + - 也可以在 ``Project`` 中,右击工程名称,通过右击菜单中的选项对项目进行编译等操作 + + +烧写 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 由于目前 CDK 软件中还没有包含我们的 flash 算法,所以需要我们手动将 flash 算法放到 CDK 安装目录,具体操作如下: + + - 进入 SDK 目录下 ``tools\cdk_flashloader`` 目录 + - 将目录下的 ``bl70x_flasher.elf`` 文件,拷贝到 CDK 工具的 ``C-Sky\CDK\CSKY\Flash`` 目录中 + + .. figure:: img/cdk7.png + :alt: + + CDK Flash Loader + + + +.. figure:: img/cdk8.png + :alt: + + CDK Project Setting + +- 点击 ``Project View`` 中的项目设置按钮,打开 ``Project Setting`` 窗口,或者通过右击 ``Project`` 名称中右击菜单栏中打开 + +- 在打开的 ``Project Setting`` 窗口中,选择 ``Flash`` 标签,配置需要的 Flash 算法 + +.. figure:: img/cdk9.png + :alt: + + CDK Project Flash setting + +- 在 ``Flash`` 标签中,点击 ``Add`` 按纽,在打开的列表中选择 ``bl70x_flash`` 算法,点击 ``Add`` 添加到工程中,``Flash`` 标签下的其他设置,如图所示: + +- 点击 OK 后,如配置正确,点击 ``Flash Download`` 即可将编译好的代码下载到芯片中 + + +.. figure:: img/cdk5.png + :alt: + + CDK Flashdownload Success + +- 如下载失败请检查: + + - 1. 代码是否被正确编译,并生成 ``.elf`` ``.bin`` 等文件 + - 2. Flash 算法是否被正确设置 + - 3. CK-Link 与开发板是否正确连接 + - 4. 开发板是否正常供电,电源指示灯是否点亮 + +运行 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 从 CDK 的菜单栏 ``View->Serial Pane``,打开串口面板,在打开的 ``Serial Pane`` 中右击,进行串口设置,选择你对应的串口号和波特率 + +.. figure:: img/cdk4.png +.. figure:: img/cdk3.png + :alt: + + CDK Serial Pane setting + +- 按下板子上的 ``RST`` 按键,即可在串口中看到代码的运行结果 + +.. figure:: img/cdk6.png + :alt: + + HelloWorld! + + +调试 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 点击工具栏上方的 ``Start/Stop Debugger`` 按钮,进入 debug 界面,如下图所示 + +.. figure:: img/cdk10.png + :alt: + + Debug HelloWorld! + +- 在 debug 界面下,左侧的 ``Register`` 窗口中,可以查看 ``CPU`` 内部寄存器数据;右侧的 ``Peripherals`` 外设面板中, + 可以查看相应外设寄存器数据,外设的选择可以在顶部菜单栏的 ``Peripherals->System Viewer`` 选择; + 点击上方工具栏中的相关调试按钮可以进行断点设置、单步调试、指令单步和全速运行等操作。 + 当然这些操作都有相应的快捷键和快捷设置方法,详情请参考 ``CDK Help``,这里就不作过多介绍了。 + +- 我们点击单步运行按钮,运行代码,即可看到指示光标移动到下一句代码,同时可以看到串口面板中显示了我们输出的 ``Hello World!`` + +.. figure:: img/cdk11.png + :alt: + + Debug HelloWorld! + + + diff --git a/docs/development_guide/source/Windows_quick_start_eclipse.rst b/docs/development_guide/source/Windows_quick_start_eclipse.rst new file mode 100644 index 00000000..b33234e7 --- /dev/null +++ b/docs/development_guide/source/Windows_quick_start_eclipse.rst @@ -0,0 +1,175 @@ +Windows 下使用 Eclipse 开发指南 +============================= + +本文档介绍了如何在 Windows 下使用 eclipse,构建 BL702 系列 MCU 的软件开发环境。 + + +需要的软硬件环境 +----------------------------- + +- Eclipse 免安装软件包 +- 串口助手软件 +- 一根 USB Type-A 数据线 +- 一个 j-link 仿真器 +- 一个 USB-TTL 串口模块 +- 杜邦线若干 + + +下载 Eclipse 安装包 +----------------------------- + +- 从 Bouffalo Lab 开发者社区下载带有 RISC-V 工具链的 `Eclipse https://dev.bouffalolab.com/download `_ 安装包。 + +下载 bl_mcu_sdk +----------------------------- + +- 从开源社区下载 `bl_mcu_sdk `_ 软件开发包。 + +- 可以使用 ``git clone`` 或者直接 ``download`` 的方式下 SDK +- 使用 ``git clone`` 前请确保已正确安装 ``git``,打开支持 ``git`` 的终端输入以下命令即可获取最新的 SDK。 + +.. code-block:: bash + :linenos: + :emphasize-lines: 1 + + $ git clone https://gitee.com/bouffalolab/bl_mcu_sdk.git --recursive + + +配置 eclipse 开发环境 +---------------------------- + +- 将获取到的 eclipse 压缩包拷贝到您的工作目录,解压 eclipse 压缩包 +- 进入 eclipse 目录,双击 ``eclipse.exe`` 启动 eclipse +- 选择您的 ``Workspace`` 目录,点击 ``Launch`` 进入工作空间 + + .. figure:: img/pic1.png + :alt: + +- 点击菜单栏中 ``Window->preferences`` 打开环境配置相关页面,准备导入相关的配置环境 + + .. figure:: img/pic2.png + :alt: + +- 点击下图 1 处的图标,打开导入配置界面,按照如图所示步骤,选择 ``eclipse.exe`` 目录下的 ``bflb_mcu_preferences.epf`` 配置文件。 + + .. figure:: img/pic3.png + :alt: + +- 选择好对应的文件后,点击 ``Finish``,在弹出的对话框选中点击 ``cancel`` ,不用重新启动。 + + .. figure:: img/pic4.png + :alt: + +导入 bl_mcu_sdk +-------------------------- + +- 点击 菜单栏 ``File->Import`` ,打开导入项目的配置界面 + + .. figure:: img/pic5.png + :alt: + +- 在打开的 ``Import`` 窗口中选择 ``General->Existing Projects into Workspace`` ,然后点击 ``Next`` + + .. figure:: img/pic6.png + :alt: + +- 加载 bl_mcu_sdk 的工程路径后,点击 ``Finsh`` 完成导入 + + .. figure:: img/pic7.png + :alt: + +- 导入完成后,关闭 ``Welcome`` 窗口即可看到导入的工程 + + .. figure:: img/pic8.png + :alt: + + .. figure:: img/pic9.png + :alt: + +- 展开 ``Build Target`` 目录,即可看到 ``bl_clean``、``bl_make``、``download`` 三个功能按钮。 + + - 双击 ``bl_clean`` 按钮,会清除 ``build`` 和 ``out`` 两个目录下的编译缓存 + - 双击 ``bl_make`` 按钮,会正常编译设置的 case,若没有修改默认配置则会编译 ``helloworld`` 工程 + - 双击 ``download`` 按钮,会下载代码到芯片中,若没有编译成功则会下载默认的或者上一次的 ``.bin`` 文件 + + +硬件连接 +---------------------- + +- 具体开发板的连接, 请参考 :ref:`connect_hardware` 部分;(eclipse 环境建议使用 ``j-link`` 烧写、调试) +- 请确保开发板正确设置后再进行下面的步骤 + + +测试 Hello World 工程 +------------------------------ + + +打开 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 打开 ``examples/hellowd/helloworld/main.c`` 文件,即可编辑、修改 ``helloworld`` 测试 demo 的代码,若修改了,请保存后在执行编译 + + +编译 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 双击 ``bl_make`` 即可编 helloworld 工程 + +- 编译成功后 ``Console`` 窗口可以看到如下图所示的 log 信息 + +.. figure:: img/pic10.png + + +烧写 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 双击 ``download`` 即可烧写 helloworld 工程 ``bin`` 文件到芯片中 + +- 下载成功后 ``Console`` 窗口可以看到如下图所示的 log 信息 + +.. figure:: img/pic11.png + + +运行 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 将开发板的 ``TXD0``、``RXD0`` 和 ``GND`` 引脚使用杜邦线连接到 USB-TTL 串口模块,将串口模块插入 PC 主机, 使用任意的串口助手软件打开串口 +- 烧写成功后,按下板子上的 ``rst`` 按键,如果下载正确,即可在串口助手软件中看到如下图所示的 log 信息。 + +.. figure:: img/eclipse_run.png + + +调试 Hello World +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 点击 eclipse 工具栏中的 ``Debug`` 按钮,进入 debug 配置窗口 +- 选择 ``GDB SEGGER J-Link Debugging->Jlink_bl_mcu_sdk`` Debug 配置,在 ``C/C++ Application:`` 选项中选择需要调试的 ``.elf`` 文件 +- 先点击 ``Apply`` 后,在点击 ``Debug`` 即可进行 ``Debug`` + +.. figure:: img/pic14.png + :alt: + +- 进入 Debug 界面后,即可看到程序停在了 ``main``,点击上方工具栏中的 ``Step Over``,按钮即可对代码工程进行单步调试。 + +.. figure:: img/pic15.png + :alt: + + Eclipse Debugging + + +编译烧写不同的目标工程 +----------------------- + +- 当右击 ``bl_make`` 按钮,点击 ``Edit`` 后,会弹出更换目标工程的配置界面,如下图所示 + +.. figure:: img/pic12.png + :alt: + + +- 其中 ``APP=xxx`` 用户可以修改其内容,改为需要编译烧写的目标工程名,例如想要编译烧写 ``gpio/gpio_blink`` 工程,将其修改为 ``APP=gpio_blink`` 即可 +- ``Build command`` 中 ``make BOARD=bl706_iot`` 会指定不同的 Board 类型以指定适配不同类型的开发板。 + +- ``Board`` 类型决定编译时选择相应的 ``borad`` 头文件。默认选择的是 BL706 的 iot 开发板 ``make build BOARD=bl706_iot`` + + + diff --git a/docs/development_guide/source/api_guide.rst b/docs/development_guide/source/api_guide.rst new file mode 100644 index 00000000..8fbae716 --- /dev/null +++ b/docs/development_guide/source/api_guide.rst @@ -0,0 +1,773 @@ +API 分层模型 +========================= + +简介 +---- + +为了不影响用户应用层代码因为芯片驱动的不同而频繁修改,**bl_mcu_sdk** 的外设 API 采用了 HAL 层的思想,屏蔽了底层硬件的实现。而 HAL 层又分为两大类: + +- 设备驱动管理层:提供一套标准的接口,具体实现由外设驱动适配层实现。 +- 外设驱动适配层:实现设备驱动管理层的标准接口,并且拓展自己的独特的接口。 + +整体的代码分层框架如图所示: + +.. figure:: img/api1.png + :alt: + + code structure + +- 应用层是用户自己编写的代码,接口则是调用 hal 层的接口。 +- HAL 层提供给应用层接口,底层调用 std 层,不同的芯片调用不同的 std 层。 +- STD 层则是对硬件寄存器进行简单封装,由外设驱动适配层进行调用。 + +设备驱动管理层实现 +--------------------- + +设备驱动管理层的实现采用了面向对象的思想,首先我们将外设看成是一个设备或者是文件,秉承 **一切皆文件** 的理念,而文件又都具有标准的调用接口:``open``、``close``、``ctrl``、``write``、``read``、``callback``,不同文件类别不同(比如串口设备、ADC设备、SPI设备),并且打开的方式也不同(比如轮询、中断、DMA),由此,我们可以构建出一个对象的基类(父类)。 + +**基类** + +.. code-block:: C + + struct device + { + char name[NAME_MAX]; /*name of device */ + dlist_t list; /*list node of device */ + enum device_status_type status; /*status of device */ + enum device_class_type type; /*type of device */ + uint16_t oflag; /*oflag of device */ + + int (*open)(struct device *dev, uint16_t oflag); + int (*close)(struct device *dev); + int (*control)(struct device *dev, int cmd, void *args); + int (*write)(struct device *dev, uint32_t pos, const void *buffer, uint32_t size); + int (*read)(struct device *dev, uint32_t pos, void *buffer, uint32_t size); + void (*callback)(struct device *dev, void *args, uint32_t size, uint32_t event); + void *handle; + }; + +**基类成员:name** + +给设备取名,后面会使用 ``device_find`` 找到这个设备。 + +**基类成员:type** + +``type`` 记录当前设备的类别,可以选择的 ``type`` 类型如下。 + +.. code-block:: C + + enum device_class_type + { + DEVICE_CLASS_NONE = 0, + DEVICE_CLASS_GPIO, + DEVICE_CLASS_UART, + DEVICE_CLASS_SPI, + DEVICE_CLASS_I2C, + DEVICE_CLASS_ADC, + DEVICE_CLASS_DMA, + DEVICE_CLASS_TIMER, + DEVICE_CLASS_PWM, + DEVICE_CLASS_SDIO, + DEVICE_CLASS_USB, + DEVICE_CLASS_I2S, + DEVICE_CLASS_CAMERA, + DEVICE_CLASS_SEC_HASH, + } ; + +**基类成员:status** + +``status`` 用来记录当前设备的状态,当前提供 4 种状态。 + +.. code-block:: C + + enum device_status_type + { + DEVICE_UNREGISTER = 0, + DEVICE_REGISTERED, + DEVICE_OPENED, + DEVICE_CLOSED + } ; + +**基类成员:oflag** + +``oflag`` 记录 注册时填入的 flag 信息以及使用 ``device_open`` 时填入的 ``oflag`` 信息。 + +**基类成员:list** + +设备的增加和删除使用双向链表进行存储,节省内存。 + +**基类成员:标准的函数指针** + +为不同的外设提供了标准的函数接口,当外设实现此类接口并赋值给该成员,便能达到重写的功能。 + +设备驱动管理层标准接口 +----------------------- + +**device_register** +^^^^^^^^^^^^^^^^^^^^ + +``device_register`` 用于设备的注册,将设备信息注册到链表当中。 + +.. code-block:: C + + int device_register(struct device *dev, const char *name, uint16_t flag); + +- dev 设备句柄。 +- name 设备名称。 +- flag 设备的读写属性 +- return 返回错误码,0 表示注册成功,其他表示错误。 + +``flag`` 可以写入以下参数,表示:**只读**、**只写**、**可读可写**。 + +.. code-block:: C + + #define DEVICE_OFLAG_RDONLY 0x1000 /* 以只读方式打开设备 */ + #define DEVICE_OFLAG_WRONLY 0x2000 /* 以只写方式打开设备 */ + #define DEVICE_OFLAG_RDWR 0x3000 /* 以读写方式打开设备 */ + + +**device_unregister** +^^^^^^^^^^^^^^^^^^^^^^^ + +``device_unregister`` 用于设备的删除,将设备信息从链表中删除。 + +.. code-block:: C + + int device_unregister(const char *name); + +- dev 设备句柄 +- name 要删除的设备名称 +- return 错误码,0 表示删除,其他表示错误 + +**device_find** +^^^^^^^^^^^^^^^^ + +``device_find`` 用于根据 ``name`` 从链表中寻找设备,并返回设备句柄的首地址。 + +.. code-block:: C + + struct device *device_find(const char *name); + +- dev 设备句柄 +- name 要查找的设备名称 +- return 错误码,不为 0 表示找到的设备句柄,NULL 表示未找到该设备。 + + +**device_open** +^^^^^^^^^^^^^^^^ + +``device_open`` 用于设备的打开,``oflag`` 表示以何种方式打开,目前提供 6 种打开方式。底层调用 ``dev`` 句柄中的 ``open`` 成员。 + +.. code-block:: C + + int device_open(struct device *dev, uint16_t oflag); + +- dev 设备句柄 +- oflag 设备的打开方式 +- return 错误码,0 表示打开成功,其他表示错误 + +``oflag`` 可以写入以下参数: + +.. code-block:: C + + #define DEVICE_OFLAG_STREAM_TX 0x001 /* 设备以轮训发送模式打开 */ + #define DEVICE_OFLAG_STREAM_RX 0x002 /* 设备以轮训接收模式打开 */ + #define DEVICE_OFLAG_INT_TX 0x004 /* 设备以中断发送模式打开 */ + #define DEVICE_OFLAG_INT_RX 0x008 /* 设备以中断接收模式打开 */ + #define DEVICE_OFLAG_DMA_TX 0x010 /* 设备以 DMA 发送模式打开 */ + #define DEVICE_OFLAG_DMA_RX 0x020 /* 设备以 DMA 接收模式打开 */ + +**device_close** +^^^^^^^^^^^^^^^^ + +``device_close`` 用于设备的关闭。底层调用 ``dev`` 句柄中的 ``close`` 成员。 + +.. code-block:: C + + int device_close(struct device *dev); + +- dev 设备句柄 +- return 错误码,0 表示关闭成功,其他表示错误 + +**device_control** +^^^^^^^^^^^^^^^^^^^ + +``device_control`` 用于根据命令对设备进行控制和参数的修改。底层调用 ``dev`` 句柄中的 ``control`` 成员。 + +.. code-block:: C + + int device_control(struct device *dev, int cmd, void *args); + +- dev 设备句柄 +- cmd 设备控制命令 +- args 控制参数 +- return 不同的控制命令返回的意义不同。 + +``cmd`` 提供了以下标准命令,除此之外,不同外设还具有自己的命令 + +.. code-block:: C + + #define DEVICE_CTRL_SET_INT 0x01 /* 设置中断 */ + #define DEVICE_CTRL_CLR_INT 0x02 /* 清中断 */ + #define DEVICE_CTRL_GET_INT 0x03 /* 获取中断状态 */ + #define DEVICE_CTRL_RESUME 0x04 /* 恢复设备 */ + #define DEVICE_CTRL_SUSPEND 0x05 /* 挂起设备 */ + #define DEVICE_CTRL_CONFIG 0x06 /* 配置设备 */ + #define DEVICE_CTRL_GET_CONFIG 0x07 /* 获取设备配置 */ + +**device_write** +^^^^^^^^^^^^^^^^ + +``device_write`` 用于数据的发送,发送方式根据打开方式可以是轮询、中断、dma。底层调用 ``dev`` 句柄中的 ``write`` 成员。 + +.. code-block:: C + + int device_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size); + +- dev 设备句柄 +- pos 不同的设备 pos 的意义不同 +- buffer 要写入的 buffer 缓冲区 +- size 要写入的长度 +- return 错误码,0 表示写入成功,其他表示错误 + +**device_read** +^^^^^^^^^^^^^^^^ + +``device_read`` 用于数据的接收,接收方式根据打开方式可以是轮询、中断、dma。底层调用 ``dev`` 句柄中的 ``read`` 成员。 + +.. code-block:: C + + int device_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size); + +- dev 设备句柄 +- pos 不同的设备 pos 的意义不同 +- buffer 要读入的 buffer 缓冲区 +- size 要读入的长度 +- return 错误码,0 表示读入成功,其他表示错误 + +**device_set_callback** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``device_set_callback`` 用于中断回调函数的注册。底层调用 ``dev`` 句柄中的 ``callback`` 成员。 + +.. code-block:: C + + int device_set_callback(struct device *dev, void (*callback)(struct device *dev, void *args, uint32_t size, uint32_t event)); + +- dev 设备句柄 +- callback 要注册的中断回调函数 + + + * dev 设备句柄 + * args 不同外设意义不同 + * size 传输长度 + * event 中断事件类型 + +外设驱动适配层实现 +------------------------ + +**子类继承父类** + +不同的外设首成员为 ``struct device`` ,这就相当于父类的继承,从而可以使用子类来访问父类成员,当使用子类修改父类成员时,便拥有了子类自己的功能。实现原理是不同结构体的首地址是该结构体中首个成员的地址。 + +.. code-block:: C + + typedef struct xxx_device + { + struct device parent; + + } xxx_device_t; + +**重写标准接口** + +每个外设都有一个 ``xxx_register`` 函数,用来重写标准接口。 + +.. code-block:: C + + dev->open = xxx_open; + dev->close = xxx_close; + dev->control = xxx_control; + dev->write = xxx_write; + dev->read = xxx_read; + + +时钟树 +========================= + +简介 +------------------------ + +博流系列芯片拥有丰富的时钟源选择,为方便用户配置,提供了时钟树配置表,不需要用户手动调用时钟设置接口,用户只需要关心最终的系统时钟和外设时钟频率即可。时钟配置表位于 ``bsp/board/xxx_board`` 目录下 ``xxx_clock_config.h`` 文件。 + + +时钟频率获取接口 +------------------------ + +**system_clock_get** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``system_clock_get`` 用来获取系统时钟频率。 + +.. code-block:: C + + uint32_t system_clock_get(enum system_clock_type type); + +- type 获取的系统时钟频率类型 + +``type`` 提供以下几种类型 + +.. code-block:: C + + enum system_clock_type + { + SYSTEM_CLOCK_ROOT_CLOCK = 0, + SYSTEM_CLOCK_FCLK, + SYSTEM_CLOCK_BCLK, + SYSTEM_CLOCK_XCLK, + }; + + +**peripheral_clock_get** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``peripheral_clock_get`` 用来获取外设时钟频率。 + +.. code-block:: C + + uint32_t peripheral_clock_get(enum peripheral_clock_type type); + +- type 获取的外设时钟频率类型 + +``type`` 提供以下几种类型 + +.. code-block:: C + + enum peripheral_clock_type + { + PERIPHERAL_CLOCK_UART = 0, + PERIPHERAL_CLOCK_SPI, + PERIPHERAL_CLOCK_I2C, + PERIPHERAL_CLOCK_ADC, + PERIPHERAL_CLOCK_DAC, + PERIPHERAL_CLOCK_I2S, + }; + + +GPIO 设备 +========================= + + +简介 +------------------------ + +GPIO 全称 General Purpose Input Output(通用输入 / 输出),博流系列芯片的 GPIO 外设主要有以下功能。 + +- 普通输入输出带上下拉 +- 复用功能带上下拉 +- 模拟功能 +- 外部中断(上升沿、下降沿、高电平、低电平) +- 硬件消抖 +- 驱动能力控制 + +bl mcu sdk 的引脚配置方式分为两种。 + +- GPIO 复用功能通过专门的 **pinmux table** ,用户只需要修改 table 中的相关引脚和工功能,程序会自动配置这些引脚。**pinmux table** 位于 ``bsp/board/xxx_board`` 目录下 ``pinmux_config.h`` 文件。 +- 通过标准的 GPIO 设备接口配置引脚,缺点是只能配置普通的输入输出和中断功能,复用功能建议还是使用 table 进行配置。 + +GPIO 设备接口 +------------------------ + +**gpio_set_mode** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``gpio_set_mode`` 用来配置 gpio 的模式。 + +.. code-block:: C + + void gpio_set_mode(uint32_t pin, uint32_t mode); + +- pin 要配置的引脚 +- mode 要配置的引脚功能 + +mode 提供以下几种类型 + +.. code-block:: C + + #define GPIO_OUTPUT_MODE 0 + #define GPIO_OUTPUT_PP_MODE 1 + #define GPIO_OUTPUT_PD_MODE 2 + #define GPIO_INPUT_MODE 3 + #define GPIO_INPUT_PP_MODE 4 + #define GPIO_INPUT_PD_MODE 5 + #define GPIO_ASYNC_RISING_TRIGER_INT_MODE 6 + #define GPIO_ASYNC_FALLING_TRIGER_INT_MODE 7 + #define GPIO_ASYNC_HIGH_LEVEL_INT_MODE 8 + #define GPIO_ASYNC_LOW_LEVEL_INT_MODE 9 + #define GPIO_SYNC_RISING_TRIGER_INT_MODE 10 + #define GPIO_SYNC_FALLING_TRIGER_INT_MODE 11 + #define GPIO_SYNC_HIGH_LEVEL_INT_MODE 12 + #define GPIO_SYNC_LOW_LEVEL_INT_MODE 13 + +**gpio_write** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``gpio_write`` 设置引脚电平 + +.. code-block:: C + + void gpio_write(uint32_t pin, uint32_t value); + + +- pin 要设置的引脚 +- value 要设置的电平 + + +**gpio_toggle** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``gpio_toggle`` 翻转引脚电平 + +.. code-block:: C + + void gpio_toggle(uint32_t pin); + + +- pin 要翻转的引脚 + + +**gpio_read** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``gpio_read`` 读取引脚电平 + +.. code-block:: C + + int gpio_read(uint32_t pin); + + +- pin 要读取电平的引脚 +- return 0 为低电平,1 为高电平 + +**gpio_attach_irq** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``gpio_attach_irq`` 为中断引脚附加中断回调函数 + +.. code-block:: C + + void gpio_attach_irq(uint32_t pin, void (*cbFun)(void)); + +- pin 要附加中断回调的引脚 +- cbFun 中断回调函数 + +**gpio_irq_enable** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``gpio_irq_enable`` 读取引脚电平 + +.. code-block:: C + + void gpio_irq_enable(uint32_t pin,uint8_t enabled); + +- pin 要开启或者关闭中断的引脚 +- enabled 0 为关闭中断,1 为打开中断 + + +UART 设备 +========================= + +简介 +------------------------ + +UART 全称(Universal Asynchronous Receiver/Transmitter)通用异步收发传输器,博流系列芯片的 UART 外设自带可配深度 **硬件fifo** ,并且拥有 **RTO(接收超时)中断** ,在使用中断的时候,无需频繁进入中断,fifo 和 rto 的搭配能够使得 UART 的利用性更加高效,UART 设备具有以下功能。 + +- 轮询收发模式 +- 中断收发模式 +- dma 收发模式 +- 自动波特率检测 +- 硬件 fifo +- 特有的 rto 中断 + +UART 设备结构体定义 +------------------------ + +.. code-block:: C + + typedef struct uart_device + { + struct device parent; + uint8_t id; + uint32_t baudrate; + uart_databits_t databits; + uart_stopbits_t stopbits; + uart_parity_t parity; + uint8_t fifo_threshold; + void* tx_dma; + void* rx_dma; + } uart_device_t; + +- parent 继承父类属性 +- id 串口 id,0 表示串口 0,,1 表示串口 1,以此类推 +- baudrate 波特率 +- databits 数据位 +- stopbits 停止位 +- parity 校验位 +- fifo_threshold fifo 阈值,不同 mcu 最大值不同 +- tx_dma 附加的发送 dma 句柄 +- rx_dma 附加的发送 dma 句柄 + +databits 提供以下类型 + +.. code-block:: C + + typedef enum + { + UART_DATA_LEN_5 = 0, /*!< Data length is 5 bits */ + UART_DATA_LEN_6 = 1, /*!< Data length is 6 bits */ + UART_DATA_LEN_7 = 2, /*!< Data length is 7 bits */ + UART_DATA_LEN_8 = 3 /*!< Data length is 8 bits */ + } uart_databits_t; + +stopbits 提供以下类型 + +.. code-block:: C + + typedef enum + { + UART_STOP_ONE = 0, /*!< One stop bit */ + UART_STOP_ONE_D_FIVE = 0, /*!< 1.5 stop bit */ + UART_STOP_TWO = 1 /*!< Two stop bits */ + } uart_stopbits_t; + +``parity`` 提供以下类型 + +.. code-block:: C + + typedef enum + { + UART_PAR_NONE = 0, /*!< No parity */ + UART_PAR_ODD = 1, /*!< Parity bit is odd */ + UART_PAR_EVEN = 2, /*!< Parity bit is even */ + } uart_parity_t; + +UART 设备参数配置表 +------------------------ + +每一个 UART 设备都有一个参数配置,配置文件位于 ``bsp/board/xxx_board`` 目录下 ``peripheral_config.h`` 文件。当用户打开对应设备的宏,该设备的配置才生效。例如打开宏 ``BSP_USING_UART0`` ,UART0 设备就可以进行注册和使用了。 + +.. code-block:: C + + uart_device_t uartx_device[UART_MAX_INDEX] = + { + #ifdef BSP_USING_UART0 + UART0_CONFIG, + #endif + #ifdef BSP_USING_UART1 + UART1_CONFIG, + #endif + }; + + #if defined(BSP_USING_UART0) + #ifndef UART0_CONFIG + #define UART0_CONFIG \ + { \ + .id = 0, \ + .baudrate = 2000000,\ + .databits = UART_DATA_LEN_8, \ + .stopbits = UART_STOP_ONE, \ + .parity = UART_PAR_NONE, \ + .fifo_threshold = 1, \ + } + #endif + #endif + +UART 设备接口 +------------------------ + +UART 设备接口全部遵循标准设备驱动管理层提供的接口。 + +**uart_register** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``uart_register`` 用来注册一个 UART 设备,在注册之前需要打开对应 UART 设备的宏定义,例如 ``BSP_USING_UART0`` 方可使用 UART0 设备。注册完成以后才可以使用其他接口,如果没有定义宏,则无法使用 UART 设备。 + +.. code-block:: C + + int uart_register(enum uart_index_type index, const char *name, uint16_t flag); + +- index 要注册的设备索引 +- name 为注册的设备命名 +- flag 默认可读可写属性 + +``index`` 用来选择 UART 设备配置,一个 index 对应一个 UART 设备配置,比如 ``UART0_INDEX`` 对应 UART0 配置,``index`` 有如下可选类型 + +.. code-block:: C + + enum uart_index_type + { + #ifdef BSP_USING_UART0 + UART0_INDEX, + #endif + #ifdef BSP_USING_UART1 + UART1_INDEX, + #endif + #ifdef BSP_USING_UART2 + UART2_INDEX, + #endif + #ifdef BSP_USING_UART3 + UART3_INDEX, + #endif + #ifdef BSP_USING_UART4 + UART4_INDEX, + #endif + UART_MAX_INDEX + }; + +**device_open** +^^^^^^^^^^^^^^^^ + +``device_open`` 用于设备的打开,``oflag`` 表示以何种方式打开。 + +.. code-block:: C + + int device_open(struct device *dev, uint16_t oflag); + +- dev 设备句柄 +- oflag 设备的打开方式 +- return 错误码,0 表示打开成功,其他表示错误 + +``oflag`` 可以写入以下参数: + +.. code-block:: C + + #define DEVICE_OFLAG_STREAM_TX 0x001 /* 设备以轮训发送模式打开 */ + #define DEVICE_OFLAG_STREAM_RX 0x002 /* 设备以轮训接收模式打开 */ + #define DEVICE_OFLAG_INT_TX 0x004 /* 设备以中断发送模式打开 */ + #define DEVICE_OFLAG_INT_RX 0x008 /* 设备以中断接收模式打开 */ + #define DEVICE_OFLAG_DMA_TX 0x010 /* 设备以 DMA 发送模式打开 */ + #define DEVICE_OFLAG_DMA_RX 0x020 /* 设备以 DMA 接收模式打开 */ + +**device_close** +^^^^^^^^^^^^^^^^ + +``device_close`` 用于设备的关闭。 + +.. code-block:: C + + int device_close(struct device *dev); + +- dev 设备句柄 +- return 错误码,0 表示关闭成功,其他表示错误 + +**device_control** +^^^^^^^^^^^^^^^^^^^ + +``device_control`` 用于根据命令对设备进行控制和参数的修改。 + +.. code-block:: C + + int device_control(struct device *dev, int cmd, void *args); + +- dev 设备句柄 +- cmd 设备控制命令 +- args 控制参数 +- return 不同的控制命令返回的意义不同。 + +串口设备除了标准的控制命令,还具有自己特殊的控制命令。 + +.. code-block:: C + + #define DEVICE_CTRL_UART_GET_TX_FIFO 0x10 + #define DEVICE_CTRL_UART_GET_RX_FIFO 0x11 + #define DEVICE_CTRL_UART_ATTACH_TX_DMA 0x12 + #define DEVICE_CTRL_UART_ATTACH_RX_DMA 0x13 + +``args`` 根据不同的 ``cmd`` 传入不同,具体如下: + ++---------------------------------------+--------------------------------------+ +| cmd | args | ++=======================================+======================================+ +| DEVICE_CTRL_SET_INT | uart_it_type | ++---------------------------------------+--------------------------------------+ +| DEVICE_CTRL_CLR_INT | uart_it_type | ++---------------------------------------+--------------------------------------+ +| DEVICE_CTRL_CONFIG | uart_param_cfg_t | ++---------------------------------------+--------------------------------------+ +| DEVICE_CTRL_UART_ATTACH_TX_DMA | dma句柄 | ++---------------------------------------+--------------------------------------+ +| DEVICE_CTRL_UART_ATTACH_RX_DMA | dma句柄 | ++---------------------------------------+--------------------------------------+ +| DEVICE_CTRL_UART_GET_TX_FIFO | 缓存变量 | ++---------------------------------------+--------------------------------------+ +| DEVICE_CTRL_UART_GET_RX_FIFO | 缓存变量 | ++---------------------------------------+--------------------------------------+ + +**device_write** +^^^^^^^^^^^^^^^^ + +``device_write`` 用于串口数据的发送,发送方式根据打开方式可以是轮询、中断、dma。 + +.. code-block:: C + + int device_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size); + +- dev 设备句柄 +- pos 无作用 +- buffer 要写入的 buffer 缓冲区 +- size 要写入的长度 +- return 错误码,0 表示写入成功,其他表示错误 + +**device_read** +^^^^^^^^^^^^^^^^ + +``device_read`` 用于串口数据的接收,接收方式根据打开方式可以是轮询、中断、dma。 + +.. code-block:: C + + int device_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size); + +- dev 设备句柄 +- pos 无作用 +- buffer 要读入的 buffer 缓冲区 +- size 要读入的长度 +- return 错误码,0 表示读入成功,其他表示错误 + +**device_set_callback** +^^^^^^^^^^^^^^^^^^^^^^^^ + +``device_set_callback`` 用于注册一个串口中断回调函数。 + +.. code-block:: C + + int device_set_callback(struct device *dev, void (*callback)(struct device *dev, void *args, uint32_t size, uint32_t event)); + +- dev 设备句柄 +- callback 要注册的中断回调函数 + + - dev 设备句柄 + - args 接收发送缓冲区,数据类型为 uint8_t* + - size 传输长度 + - event 中断事件类型 + +串口设备 ``event`` 有以下类型 + +.. code-block:: C + + enum uart_event_type + { + UART_EVENT_TX_END, + UART_EVENT_TX_FIFO, + UART_EVENT_RX_END, + UART_EVENT_RX_FIFO, + UART_EVENT_RTO, + UART_EVENT_UNKNOWN + }; + +PWM设备 +========================= + +简介 +------------------------ + +PWM设备接口 +------------------------ \ No newline at end of file diff --git a/docs/development_guide/source/blink_demo_introduce.rst b/docs/development_guide/source/blink_demo_introduce.rst new file mode 100644 index 00000000..0d326f6c --- /dev/null +++ b/docs/development_guide/source/blink_demo_introduce.rst @@ -0,0 +1,41 @@ +流水灯示例 +==================== + +硬件连接 +----------------------------- + +.. figure:: img/blink_breath_sch.png + :alt: + + **BL706_IOT板支持上述电路** + +- 硬件连接如上图所示 ``GPIO29`` ``GPIO30`` ``GPIO31`` ``GPIO22`` 分别控制四路 LED 灯 + + + +软件实现 +----------------------------- + +- 软件代码见 ``examples/gpio/gpio_blink`` + +.. code-block:: C + :linenos: + + gpio_set_mode(GPIO_PIN_22, GPIO_OUTPUT_PP_MODE); + gpio_set_mode(GPIO_PIN_29, GPIO_OUTPUT_PP_MODE); + gpio_set_mode(GPIO_PIN_30, GPIO_OUTPUT_PP_MODE); + gpio_set_mode(GPIO_PIN_31, GPIO_OUTPUT_PP_MODE); + +- 使用上述代码将 ``GPIO22`` ``GPIO29`` ``GPIO30`` ``GPIO31`` 配置为输出模式。 + +.. code-block:: C + :linenos: + + gpio_write(GPIO_PIN_22, 0); + +- 使用上述代码修改输出的电平值。 + + +最终效果 +----------------------------- +见视频展示 diff --git a/docs/development_guide/source/breath_pwm_demo_introduce.rst b/docs/development_guide/source/breath_pwm_demo_introduce.rst new file mode 100644 index 00000000..399938a9 --- /dev/null +++ b/docs/development_guide/source/breath_pwm_demo_introduce.rst @@ -0,0 +1,64 @@ +呼吸灯示例 +==================== + +硬件连接 +----------------------------- + +.. figure:: img/blink_breath_sch.png + :alt: + + **BL706_IOT板支持上述电路** + +- 硬件连接如上图所示 ``GPIO29`` ``GPIO30`` ``GPIO31`` ``GPIO22`` 分别控制四路 LED 灯 +- 呼吸灯会单独使用 ``GPIO22`` 来演示效果 + + + +软件实现 +----------------------------- + +- 软件代码见 ``examples/pwm/pwm_breath_led`` + + +- ``PWM`` 的输出引脚由板级描述文件 ``bsp/board/bl706_iot/pinmux_config.h`` 来配置 + +.. code-block:: C + :linenos: + + #define CONFIG_GPIO22_FUNC GPIO_FUN_UNUSED + + +- 可以看到,我们将 ``GPIO22`` 的功能选择为 ``PWM`` 输出,不同的电路板会存在不同的引脚配置。 + +- 我们会使用向导来配置不同应用场景下的引脚配置,用户也可以手动修改。 + +.. code-block:: C + :linenos: + + pwm_register(PWM0_INDEX, "led_breath", DEVICE_OFLAG_RDWR); + + struct device *led_breath = device_find("led_breath"); + + if (led_breath) + { + device_open(led_breath, 0); + } + + +- 上述代码展现了 ``bl_mcu_sdk`` 框架最一般的设备初始化流程,首先调用 ``pwm_register`` 函数注册 ``pwm`` 设备 +- 然后通过 ``find`` 函数找到设备对应的句柄,保存于 ``led_breath`` 对象中 +- 使用 ``device_open`` 来打开 ``led_breath`` 设备。 + +.. code-block:: C + :linenos: + + device_control(led_breath, DEVICE_CTRL_CONFIG, &pwm_cfg); + +使用 ``device_contorl`` 函数,配合 ``DEVICE_CTRL_CONFIG`` 指令,输入需要配置的频率和占空比,即可配置 ``PWM`` 的输出波形。 + + + +最终效果 +----------------------------- +见视频展示 + diff --git a/docs/development_guide/source/conf.py b/docs/development_guide/source/conf.py new file mode 100644 index 00000000..e248e253 --- /dev/null +++ b/docs/development_guide/source/conf.py @@ -0,0 +1,76 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- + +project = 'BL_MCU_SDK 开发指南' +copyright = '2021, BouffaloLab Co., Ltd' +author = 'BouffaloLab MCU Team' + +version = '0.1' + +# The full version, including alpha/beta/rc tags +release = '0.1' + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.imgmath', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +source_suffix = '.rst' + +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = 'zh_CN' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +man_pages = [ + (master_doc, 'bl702', 'BouffaloLab Documentation', + [author], 1) +] + diff --git a/docs/development_guide/source/connecting_hardware.rst b/docs/development_guide/source/connecting_hardware.rst new file mode 100644 index 00000000..be2ddc03 --- /dev/null +++ b/docs/development_guide/source/connecting_hardware.rst @@ -0,0 +1,97 @@ +.. _connect_hardware: + +硬件连接 +================ + +本文档介绍了如何连接 BL70x 系列 MCU 的开发板 + +BL706_IOT 开发板 +------------------------- + +使用 CK-Link 烧写、调试连接方法 +^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 将 CK-Link USB 接口使用合适的 USB 数据线正确连接到 PC 主机 +- 将 Iot 开发板的 ``HD3`` 组的标准 ``JTAG`` 引脚使用杜邦线与 ``CK-Link`` 对应的 ``JTAG`` 引脚连接起来 +- 若没有使用 CK-Link 给开发板供电,需要给开发板单独供电 + +:: + + bl706-iot board CK-Link + ------------------------------- + JTAG_TDI <--> TDI + JTAG_TDO <--> TDO + JTAG_TCK <--> TCK + JTAG_TMS <--> TMS + VDD33 <--> VREF + GND <--> GND + + +.. figure:: img/ck_link_connect_bl706_iot.png + :alt: + + ck_link connect bl706-iot board + + +使用 J-Link 烧写、调试连接方法 +^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 将 j-link 的 USB 接口使用合适的 USB 数据线正确连接到 PC 主机 +- 将 Iot 开发板的 ``HD3`` 组的标准 ``JTAG`` 引脚使用杜邦线与 ``j-link`` 对应的 ``JTAG`` 引脚连接起来 +- j-link 连接的情况下需要给开发板独立供电,并且将开发板的电源接到 j-link 的 ``VTref`` 引脚 + +:: + + bl706-iot board j-link + ------------------------------- + JTAG_TDI <--> TDI + JTAG_TDO <--> TDO + JTAG_TCK <--> TCK + JTAG_TMS <--> TMS + VDD33 <--> VTref + GND <--> GND + + +.. figure:: img/jlink_connect_bl706_iot.png + :alt: + + jlink connect bl706-iot board + + +使用串口烧写程序连接方法 +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- 使用串口烧写前,请确保正确安装了 ``Bouffalo Lab Dev Cube`` 或命令行烧写工具 + + - 使用 ``Type-C USB`` 数据线 or ``Mini USB`` 数据线连接到开发板上对应的 ``Type-C`` 接口 or ``Mini`` 接口上。 + - 按下开发板上的 ``Boot`` 键,不要释放 + - 按下开发板上的 ``RST`` 键,此时已经进入 ``Boot ROM``,可以释放两个按键 + - 这时就可以从 ``Bouffalo Lab Dev Cube`` 中看到相应的串口 ``COM`` 号,如没有出现,请点击 ``Refresh`` 按钮刷新一下 + + +- 如没有合适的数据线,也可以使用一些常见的 ``USB-TTL`` 模块,连接到开发板的 ``UART0`` 端口进行烧写。 ``UART0`` 在 ``HD1`` 组上,连接方法如下: + +:: + + USB-TTL BL702_IoT + ---------------------- + 3V3 <--> VDD + TXD <--> RX0 + RXD <--> TX0 + GND <--> GND + +- 烧写方法同上 + +BL702_AVB 开发板 +-------------------------- + +使用 CK-Link 烧写、调试连接方法 +^^^^^^^^^^^^^^^^^^^^^^^^^ + +- ``TO DO`` + +使用串口烧写程序连接方法 +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- ``TO DO`` + diff --git a/docs/development_guide/source/get_started.rst b/docs/development_guide/source/get_started.rst new file mode 100644 index 00000000..3eb29d97 --- /dev/null +++ b/docs/development_guide/source/get_started.rst @@ -0,0 +1,37 @@ +开发前的准备 +============================= + +硬件环境准备 +----------------------------- + +- 一块 BL702 系列 MCU 的开发板: + + - BL706_IOT 开发板, or + - BL706_AVB 开发板 + +BL706_Iot 开发板如下图所示 + +.. figure:: img/bl702_iot.png + :alt: + + BL706_IoT + + +- 一个支持标准 JTAG 功能的调试器: + + - CK-Link 仿真器,or + - Jlink V11 仿真器,or + - Sipeed USB-JTAG/TTL 调试器,or + - Bouffalo Lab Debugger 调试器 + +- 一台 PC 主机(运行 Windows 或者 Linux 系统) + +软件环境准备 +-------------------------------- + +为了更好的进行 BL702 系列 MCU 的开发,建议您应当具备以下开发环境: + +- Windows 使用 `CDK `_ 环境开发 (建议 Windows 7 以上版本。) ,or +- `Windows `_ 使用 Eclipse 环境开发 (建议 Windows 7 以上版本。) ,or +- `Linux `_ (建议使用 Ubuntu 18 以上的 LTS 版本) + diff --git a/docs/development_guide/source/img/api1.png b/docs/development_guide/source/img/api1.png new file mode 100644 index 00000000..87fe195a Binary files /dev/null and b/docs/development_guide/source/img/api1.png differ diff --git a/docs/development_guide/source/img/bl702_iot.png b/docs/development_guide/source/img/bl702_iot.png new file mode 100644 index 00000000..0b96853b Binary files /dev/null and b/docs/development_guide/source/img/bl702_iot.png differ diff --git a/docs/development_guide/source/img/blink_breath_sch.png b/docs/development_guide/source/img/blink_breath_sch.png new file mode 100644 index 00000000..ee8fd3bc Binary files /dev/null and b/docs/development_guide/source/img/blink_breath_sch.png differ diff --git a/docs/development_guide/source/img/cdk1.png b/docs/development_guide/source/img/cdk1.png new file mode 100644 index 00000000..ef477b17 Binary files /dev/null and b/docs/development_guide/source/img/cdk1.png differ diff --git a/docs/development_guide/source/img/cdk10.png b/docs/development_guide/source/img/cdk10.png new file mode 100644 index 00000000..c0279b10 Binary files /dev/null and b/docs/development_guide/source/img/cdk10.png differ diff --git a/docs/development_guide/source/img/cdk11.png b/docs/development_guide/source/img/cdk11.png new file mode 100644 index 00000000..eb1932dd Binary files /dev/null and b/docs/development_guide/source/img/cdk11.png differ diff --git a/docs/development_guide/source/img/cdk2.png b/docs/development_guide/source/img/cdk2.png new file mode 100644 index 00000000..80cf2231 Binary files /dev/null and b/docs/development_guide/source/img/cdk2.png differ diff --git a/docs/development_guide/source/img/cdk3.png b/docs/development_guide/source/img/cdk3.png new file mode 100644 index 00000000..ad453712 Binary files /dev/null and b/docs/development_guide/source/img/cdk3.png differ diff --git a/docs/development_guide/source/img/cdk4.png b/docs/development_guide/source/img/cdk4.png new file mode 100644 index 00000000..5c198917 Binary files /dev/null and b/docs/development_guide/source/img/cdk4.png differ diff --git a/docs/development_guide/source/img/cdk5.png b/docs/development_guide/source/img/cdk5.png new file mode 100644 index 00000000..1c3c2513 Binary files /dev/null and b/docs/development_guide/source/img/cdk5.png differ diff --git a/docs/development_guide/source/img/cdk6.png b/docs/development_guide/source/img/cdk6.png new file mode 100644 index 00000000..2478ba24 Binary files /dev/null and b/docs/development_guide/source/img/cdk6.png differ diff --git a/docs/development_guide/source/img/cdk7.png b/docs/development_guide/source/img/cdk7.png new file mode 100644 index 00000000..7eb65431 Binary files /dev/null and b/docs/development_guide/source/img/cdk7.png differ diff --git a/docs/development_guide/source/img/cdk8.png b/docs/development_guide/source/img/cdk8.png new file mode 100644 index 00000000..e208d88f Binary files /dev/null and b/docs/development_guide/source/img/cdk8.png differ diff --git a/docs/development_guide/source/img/cdk9.png b/docs/development_guide/source/img/cdk9.png new file mode 100644 index 00000000..10ec6582 Binary files /dev/null and b/docs/development_guide/source/img/cdk9.png differ diff --git a/docs/development_guide/source/img/ck_link_connect_bl706_iot.png b/docs/development_guide/source/img/ck_link_connect_bl706_iot.png new file mode 100644 index 00000000..34d3625b Binary files /dev/null and b/docs/development_guide/source/img/ck_link_connect_bl706_iot.png differ diff --git a/docs/development_guide/source/img/eclipse_run.png b/docs/development_guide/source/img/eclipse_run.png new file mode 100644 index 00000000..aa6e3363 Binary files /dev/null and b/docs/development_guide/source/img/eclipse_run.png differ diff --git a/docs/development_guide/source/img/jlink_connect_bl706_iot.png b/docs/development_guide/source/img/jlink_connect_bl706_iot.png new file mode 100644 index 00000000..58e58581 Binary files /dev/null and b/docs/development_guide/source/img/jlink_connect_bl706_iot.png differ diff --git a/docs/development_guide/source/img/linux1.png b/docs/development_guide/source/img/linux1.png new file mode 100644 index 00000000..0f55ebdb Binary files /dev/null and b/docs/development_guide/source/img/linux1.png differ diff --git a/docs/development_guide/source/img/pic1.png b/docs/development_guide/source/img/pic1.png new file mode 100644 index 00000000..9866e309 Binary files /dev/null and b/docs/development_guide/source/img/pic1.png differ diff --git a/docs/development_guide/source/img/pic10.png b/docs/development_guide/source/img/pic10.png new file mode 100644 index 00000000..b61cbfa9 Binary files /dev/null and b/docs/development_guide/source/img/pic10.png differ diff --git a/docs/development_guide/source/img/pic11.png b/docs/development_guide/source/img/pic11.png new file mode 100644 index 00000000..9fe441dd Binary files /dev/null and b/docs/development_guide/source/img/pic11.png differ diff --git a/docs/development_guide/source/img/pic12.png b/docs/development_guide/source/img/pic12.png new file mode 100644 index 00000000..f60184f9 Binary files /dev/null and b/docs/development_guide/source/img/pic12.png differ diff --git a/docs/development_guide/source/img/pic13.png b/docs/development_guide/source/img/pic13.png new file mode 100644 index 00000000..2b7ec966 Binary files /dev/null and b/docs/development_guide/source/img/pic13.png differ diff --git a/docs/development_guide/source/img/pic14.png b/docs/development_guide/source/img/pic14.png new file mode 100644 index 00000000..bf018a3a Binary files /dev/null and b/docs/development_guide/source/img/pic14.png differ diff --git a/docs/development_guide/source/img/pic15.png b/docs/development_guide/source/img/pic15.png new file mode 100644 index 00000000..73b97316 Binary files /dev/null and b/docs/development_guide/source/img/pic15.png differ diff --git a/docs/development_guide/source/img/pic2.png b/docs/development_guide/source/img/pic2.png new file mode 100644 index 00000000..2d5129bc Binary files /dev/null and b/docs/development_guide/source/img/pic2.png differ diff --git a/docs/development_guide/source/img/pic20.png b/docs/development_guide/source/img/pic20.png new file mode 100644 index 00000000..f040e625 Binary files /dev/null and b/docs/development_guide/source/img/pic20.png differ diff --git a/docs/development_guide/source/img/pic3.png b/docs/development_guide/source/img/pic3.png new file mode 100644 index 00000000..0e20a992 Binary files /dev/null and b/docs/development_guide/source/img/pic3.png differ diff --git a/docs/development_guide/source/img/pic4.png b/docs/development_guide/source/img/pic4.png new file mode 100644 index 00000000..9424826d Binary files /dev/null and b/docs/development_guide/source/img/pic4.png differ diff --git a/docs/development_guide/source/img/pic5.png b/docs/development_guide/source/img/pic5.png new file mode 100644 index 00000000..40158e36 Binary files /dev/null and b/docs/development_guide/source/img/pic5.png differ diff --git a/docs/development_guide/source/img/pic6.png b/docs/development_guide/source/img/pic6.png new file mode 100644 index 00000000..009a704e Binary files /dev/null and b/docs/development_guide/source/img/pic6.png differ diff --git a/docs/development_guide/source/img/pic7.png b/docs/development_guide/source/img/pic7.png new file mode 100644 index 00000000..c88657dc Binary files /dev/null and b/docs/development_guide/source/img/pic7.png differ diff --git a/docs/development_guide/source/img/pic8.png b/docs/development_guide/source/img/pic8.png new file mode 100644 index 00000000..445b10d1 Binary files /dev/null and b/docs/development_guide/source/img/pic8.png differ diff --git a/docs/development_guide/source/img/pic9.png b/docs/development_guide/source/img/pic9.png new file mode 100644 index 00000000..28e7756c Binary files /dev/null and b/docs/development_guide/source/img/pic9.png differ diff --git a/docs/development_guide/source/img/pic99.png b/docs/development_guide/source/img/pic99.png new file mode 100644 index 00000000..400d0e1a Binary files /dev/null and b/docs/development_guide/source/img/pic99.png differ diff --git a/docs/development_guide/source/img/uart_loop_sch.png b/docs/development_guide/source/img/uart_loop_sch.png new file mode 100644 index 00000000..e6bb7e45 Binary files /dev/null and b/docs/development_guide/source/img/uart_loop_sch.png differ diff --git a/docs/development_guide/source/index.rst b/docs/development_guide/source/index.rst new file mode 100644 index 00000000..528c052f --- /dev/null +++ b/docs/development_guide/source/index.rst @@ -0,0 +1,45 @@ +.. bl_mcu_sdk_development_guide documentation master file, created by + sphinx-quickstart on Fri Mar 12 16:32:56 2021. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +======================================================== +BL MCU SDK 开发指南 +======================================================== + +博流 `BL702 `_ 系列产品是基于 “SiFive E24 Core” `RISC-V `_ 处理器的通用微控制器,具有 BLE 5.0、zigbee 和以太网等网络功能,同时还具备其它丰富的外设。 +可被广泛应用于 `IoT `_ 和其他低功耗领域中。 +支持通过 `JTAG `_ 对芯片进行烧写和调试,也支持通过 `UART `_ 进行程序烧录。 + +BL MCU SDK 将为您提供博流 BL70X 系列 MCU 开发的全方位支持。 + +.. toctree:: + :maxdepth: 1 + :caption: 快速开发指南 + :numbered: + + get_started + Windows_quick_start_cdk + Windows_quick_start_eclipse + Linux_quick_start_ubuntu + connecting_hardware + + + +.. toctree:: + :maxdepth: 1 + :caption: API 手册 + :numbered: + + api_guide + + +.. toctree:: + :maxdepth: 1 + :caption: 示例代码 + :numbered: + + blink_demo_introduce + breath_pwm_demo_introduce + uart_loopback_demo_introduce + diff --git a/docs/development_guide/source/uart_loopback_demo_introduce.rst b/docs/development_guide/source/uart_loopback_demo_introduce.rst new file mode 100644 index 00000000..c997edb9 --- /dev/null +++ b/docs/development_guide/source/uart_loopback_demo_introduce.rst @@ -0,0 +1,91 @@ +串口自收发示例 +==================== + +硬件连接 +----------------------------- + +.. figure:: img/uart_loop_sch.png + :alt: + + **BL706_IOT板支持上述电路** + +- 硬件连接如上图所示 板子将芯片对应的 RX 与 TX 脚引到了排针 ``HD1``。 +- 将对应的 TX 接上串口转换芯片的 RX,RX 接上串口转换芯片的 TX,将串口转换芯片连接电脑。 + + + +软件实现 +----------------------------- + +- 软件代码见 ``examples/uart/uart_echo`` + +- ``pwm`` 的输出引脚由板级描述文件 ``bsp/board/bl706_iot/pinmux_config.h`` 来配置 + +.. code-block:: C + :linenos: + + #define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX + #define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX + +- 可以看到,我们将 ``GPIO_PIN_14`` 与 ``GPIO_PIN_15`` 的功能选择了 ``UART`` 功能。 + +- 不同的电路板会存在不同的引脚配置,我们会使用向导来配置不同应用场景下的引脚配置,用户也可以手动修改。 + + +.. code-block:: C + :linenos: + + bflb_platform_init(); + +- 在 ``bflb_platform_init`` 函数中,我们已经注册并且打开了一个调试用的串口设备,给用户实现一个 ``printf`` 的基本功能用作打印输出报文。 + +.. code-block:: C + :linenos: + + struct device *uart = device_find("debug_log"); + +- 我们通过 ``find`` 函数,找到在 ``bflb_platform_init`` 函数中注册并且打开的串口设备句柄,储存于 ``uart`` 变量中。 + +.. code-block:: C + :linenos: + + if (uart) + { + device_set_callback(uart, uart_irq_callback); + device_control(uart, DEVICE_CTRL_SET_INT, (void *)(UART_RX_FIFO_IT|UART_RTO_IT)); + } + +- 通过 ``set_callback`` 函数,注册用户指定的中断服务函数。通过 ``device_control`` 函数打开中断使能开关 + +.. code-block:: C + :linenos: + + void uart_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state) + { + if (state == UART_EVENT_RX_FIFO) + { + device_write(dev,0,(uint8_t *)args,size); + } + else if (state == UART_EVENT_RTO) + { + device_write(dev,0,(uint8_t *)args,size); + } + } + + +- 此函数是示例的中断服务函数,作用是将接受到的数据原封不动的发送出去。 + + - ``state`` 会返回 ``UART`` 设备的中断类型 + - ``args`` 包含了返回数据指针 + - ``size`` 包含返回数据的长度 + - ``dev`` 为中断的 ``uart`` 设备句柄 + +- 当中断产生,将会调用 ``device_write`` 函数将接受到的数据发送回去。 + + + +最终效果 +----------------------------- +见视频讲解 + + diff --git a/drivers/bl702_driver/CMakeLists.txt b/drivers/bl702_driver/CMakeLists.txt new file mode 100644 index 00000000..bf02b027 --- /dev/null +++ b/drivers/bl702_driver/CMakeLists.txt @@ -0,0 +1,58 @@ +################# Add global include ################# +list(APPEND ADD_INCLUDE +"${CMAKE_CURRENT_SOURCE_DIR}/hal_drv/inc" +"${CMAKE_CURRENT_SOURCE_DIR}/std_drv/inc" +"${CMAKE_CURRENT_SOURCE_DIR}/regs" +"${CMAKE_CURRENT_SOURCE_DIR}/startup" +"${CMAKE_CURRENT_SOURCE_DIR}/risc-v/Core/Include" +) +####################################################### + +################# Add private include ################# +list(APPEND ADD_PRIVATE_INCLUDE +"${CMAKE_CURRENT_SOURCE_DIR}/hal_drv/default_config" +) +####################################################### + +############## Add current dir source files ########### +file(GLOB_RECURSE sources +"${CMAKE_CURRENT_SOURCE_DIR}/std_drv/src/*.c" +"${CMAKE_CURRENT_SOURCE_DIR}/hal_drv/src/*.c" +"${CMAKE_CURRENT_SOURCE_DIR}/startup/interrupt.c" +"${CMAKE_CURRENT_SOURCE_DIR}/startup/system_bl702.c" +"${CMAKE_CURRENT_SOURCE_DIR}/startup/GCC/entry.S" +"${CMAKE_CURRENT_SOURCE_DIR}/startup/GCC/start_load.c" +) +list(APPEND ADD_SRCS ${sources}) +# aux_source_directory(src ADD_SRCS) +list(REMOVE_ITEM ADD_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/std_drv/src/bl702_snflash.c" +) +####################################################### + +########### Add required/dependent components ######### +list(APPEND ADD_REQUIREMENTS common) +####################################################### + +############ Add static libs ########################## +# if(CONFIG_COMPONENT1_INCLUDE_STATIC_LIB) +# list(APPEND ADD_STATIC_LIB "lib/libtest.a") +# endif() +####################################################### + +############ Add dynamic libs ######################### +# list(APPEND ADD_DYNAMIC_LIB "lib/arch/v831/libmaix_nn.so" +# "lib/arch/v831/libmaix_cam.so" +# ) +####################################################### + +############ Add global compile option ################ +#add components denpend on this component +list(APPEND ADD_DEFINITIONS -DARCH_RISCV) +####################################################### + +############ Add private compile option ################ +#add compile option for this component that won't affect other modules +# list(APPEND ADD_DEFINITIONS_PRIVATE -DAAAAA=1) +####################################################### + +generate_library() diff --git a/drivers/bl702_driver/bl702_flash.ld b/drivers/bl702_driver/bl702_flash.ld new file mode 100644 index 00000000..14ced469 --- /dev/null +++ b/drivers/bl702_driver/bl702_flash.ld @@ -0,0 +1,227 @@ +/**************************************************************************************** +* @file map.txt +* +* @brief This file is the map file (gnuarm or armgcc). +* +* Copyright (C) BouffaloLab 2018 +* +**************************************************************************************** +*/ + +/* configure the CPU type */ +OUTPUT_ARCH( "riscv" ) +/* link with the standard c library */ +INPUT(-lc) +/* link with the standard GCC library */ +INPUT(-lgcc) +/* configure the entry point */ +ENTRY(_enter) + +StackSize = 0x1000; /* 4KB */ +HeapSize = 0x1000; /* 4KB */ + +MEMORY +{ + xip_memory (rx) : ORIGIN = 0x23000000, LENGTH = 4096K + itcm_memory (rx) : ORIGIN = 0x22014000, LENGTH = 16K + dtcm_memory (rx) : ORIGIN = 0x42018000, LENGTH = 32K + ram_memory (!rx) : ORIGIN = 0x42020000, LENGTH = 48K +} + +SECTIONS +{ + PROVIDE(__metal_chicken_bit = 0); + + .text : + { + . = ALIGN(4); + __text_code_start__ = .; + + KEEP (*(.text.metal.init.enter)) + KEEP (*(SORT_NONE(.init))) + /* section information for finsh shell */ + . = ALIGN(4); + _shell_command_start = .; + KEEP(*(shellCommand)) + _shell_command_end = .; + + /* section information for usb desc */ + . = ALIGN(4); + _usb_desc_start = .; + KEEP(*(usb_desc)) + . = ALIGN(4); + _usb_desc_end = .; + + *(.text) + *(.text.*) + + /*put .rodata**/ + *(EXCLUDE_FILE( *bl602_glb.o \ + *bl602_pds.o \ + *bl602_common.o \ + *bl602_sf_cfg.o \ + *bl602_sf_ctrl.o \ + *bl602_sflash.o \ + *bl602_xip_sflash.o \ + *bl602_ef_ctrl.o) .rodata*) + *(.rodata) + *(.rodata.*) + + *(.srodata) + *(.srodata.*) + + . = ALIGN(4); + __text_code_end__ = .; + } > xip_memory + + . = ALIGN(4); + __itcm_load_addr = .; + + .itcm_region : AT (__itcm_load_addr) + { + . = ALIGN(4); + __tcm_code_start__ = .; + + *(.tcm_code) + *(.tcm_const) + *(.sclock_rlt_code) + *(.sclock_rlt_const) + + *bl602_glb.o*(.rodata*) + *bl602_pds.o*(.rodata*) + *bl602_common.o*(.rodata*) + *bl602_sf_cfg.o*(.rodata*) + *bl602_sf_ctrl.o*(.rodata*) + *bl602_sflash.o*(.rodata*) + *bl602_xip_sflash.o*(.rodata*) + *bl602_ef_ctrl.o*(.rodata*) + + . = ALIGN(4); + __tcm_code_end__ = .; + } > itcm_memory + + __dtcm_load_addr = __itcm_load_addr + SIZEOF(.itcm_region); + + .dtcm_region : AT (__dtcm_load_addr) + { + . = ALIGN(4); + __tcm_data_start__ = .; + + *(.tcm_data) + /* *finger_print.o(.data*) */ + + . = ALIGN(4); + __tcm_data_end__ = .; + } > dtcm_memory + + /* .heap_dummy section doesn't contains any symbols. It is only + * used for linker to calculate size of heap sections, and assign + * values to heap symbols later */ + .heap_dummy (NOLOAD): + { + . = ALIGN(0x4); + . = . + HeapSize; + . = ALIGN(0x4); + } > dtcm_memory + + _HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize; + _HeapSize = HeapSize; + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack") + + /*************************************************************************/ + /* .stack_dummy section doesn't contains any symbols. It is only + * used for linker to calculate size of stack sections, and assign + * values to stack symbols later */ + .stack_dummy (NOLOAD): + { + . = ALIGN(0x4); + . = . + StackSize; + . = ALIGN(0x4); + } > dtcm_memory + + /* Set stack top to end of RAM, and stack limit move down by + * size of stack_dummy section */ + __StackTop = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory); + PROVIDE( __freertos_irq_stack_top = __StackTop); + __StackLimit = __StackTop - SIZEOF(.stack_dummy); + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(__StackLimit >= __tcm_data_end__, "region RAM overflowed with stack") + /*************************************************************************/ + + __system_ram_load_addr = __dtcm_load_addr + SIZEOF(.dtcm_region); + + .system_ram_data_region : AT (__system_ram_load_addr) + { + . = ALIGN(4); + __system_ram_data_start__ = .; + + *(.system_ram) + + . = ALIGN(4); + __system_ram_data_end__ = .; + } > ram_memory + + __ram_load_addr = __system_ram_load_addr + SIZEOF(.system_ram_data_region); + + /* Data section */ + RAM_DATA : AT (__ram_load_addr) + { + . = ALIGN(4); + __ram_data_start__ = .; + + PROVIDE( __global_pointer$ = . + 0x800 ); + + *(.data) + *(.data.*) + *(.sdata) + *(.sdata.*) + *(.sdata2) + *(.sdata2.*) + + . = ALIGN(4); + __ram_data_end__ = .; + } > ram_memory + + .bss (NOLOAD) : + { + . = ALIGN(4); + __bss_start__ = .; + + *(.bss*) + *(.sbss*) + *(COMMON) + + . = ALIGN(4); + __bss_end__ = .; + } > ram_memory + + .noinit_data (NOLOAD) : + { + . = ALIGN(4); + __noinit_data_start__ = .; + + *(.noinit_data*) + + . = ALIGN(4); + __noinit_data_end__ = .; + } > ram_memory + + .heap (NOLOAD): + { + . = ALIGN(4); + __HeapBase = .; + + /*__end__ = .;*/ + /*end = __end__;*/ + KEEP(*(.heap*)) + + . = ALIGN(4); + __HeapLimit = .; + } > ram_memory + __HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory); + +} + diff --git a/drivers/bl702_driver/hal_drv/default_config/adc_config.h b/drivers/bl702_driver/hal_drv/default_config/adc_config.h new file mode 100644 index 00000000..3992c17e --- /dev/null +++ b/drivers/bl702_driver/hal_drv/default_config/adc_config.h @@ -0,0 +1,17 @@ +#ifndef _ADC_CONFIG_H +#define _ADC_CONFIG_H + +#define ADC_DATA_WIDIH_12 (0) + +#define ADC_V18_SELECT (2) /*!< ADC 1.8V select */ +#define ADC_V11_SELECT (1) /*!< ADC 1.1V select */ + +#define ADC_PGA_VCM (0) /*!< ADC VCM value */ +#define ADC_PGA_GAIN1 (0) /*!< PGA gain 1 */ +#define ADC_PGA_GAIN2 (0) /*!< PGA gain 2 */ +#define ADC_CHOP_MODE (2) /*!< ADC chop mode select */ +#define ADC_BIAS_SELECT (0) /*!< ADC current form main bandgap or aon bandgap */ +#define ADC_OFFSET_CALIB_EN (0) /*!< Offset calibration enable */ +#define ADC_OFFSER_CALIB_VAL (0) /*!< Offset calibration value */ + +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/default_config/dac_config.h b/drivers/bl702_driver/hal_drv/default_config/dac_config.h new file mode 100644 index 00000000..ec778437 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/default_config/dac_config.h @@ -0,0 +1,8 @@ +#ifndef _ADC_CONFIG_H +#define _ADC_CONFIG_H + +#define DAC_REF_SEL (0) +#define DAC_EXT_REF_GPIO (7) + + +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/default_config/i2c_config.h b/drivers/bl702_driver/hal_drv/default_config/i2c_config.h new file mode 100644 index 00000000..954a0b89 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/default_config/i2c_config.h @@ -0,0 +1,5 @@ +#ifndef _I2C_CONFIG_H +#define _I2C_CONFIG_H + + +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/default_config/i2s_config.h b/drivers/bl702_driver/hal_drv/default_config/i2s_config.h new file mode 100644 index 00000000..c41a8ae9 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/default_config/i2s_config.h @@ -0,0 +1,11 @@ +#ifndef _I2S_CONFIG_H +#define _I2S_CONFIG_H + +#define I2S_ADUIO_PLL_DEFAULT AUDIO_PLL_12288000_HZ +#define I2S_DATA_ENDIAN I2S_DATA_ENDIAN_MSB +#define I2S_MONO_CHANNEL I2S_RX_MONO_MODE_LEFT_CHANNEL +#define I2S_LR_EXCHANGE DISABLE /*The position of L/R channel data within each entry is exchanged if enabled*/ +#define I2S_FS_INVERT DISABLE +#define I2S_BCLK_INVERT DISABLE + +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/default_config/pwm_config.h b/drivers/bl702_driver/hal_drv/default_config/pwm_config.h new file mode 100644 index 00000000..0096a513 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/default_config/pwm_config.h @@ -0,0 +1,7 @@ +#ifndef _PWM_CONFIG_H +#define _PWM_CONFIG_H + +#define PWM_STOP_MODE_SEL (1) /*PWM_STOP_GRACEFUL */ +#define PWM_POL_SEL (0) /*!< PWM POL NORAML */ +#define PWM_MAX_CHANNEL (5) +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/default_config/spi_config.h b/drivers/bl702_driver/hal_drv/default_config/spi_config.h new file mode 100644 index 00000000..5a0a710c --- /dev/null +++ b/drivers/bl702_driver/hal_drv/default_config/spi_config.h @@ -0,0 +1,7 @@ +#ifndef _SPI_CONFIG_H +#define _SPI_CONFIG_H + +#define SPI_DEGLITCH_ENABLE (0) +#define SPI_CONTINUE_TRANSFER_ENABLE (1) +#define SPI_SWAP_ENABLE (1) +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/default_config/uart_config.h b/drivers/bl702_driver/hal_drv/default_config/uart_config.h new file mode 100644 index 00000000..be769fc6 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/default_config/uart_config.h @@ -0,0 +1,17 @@ +#ifndef _UART_CONFIG_H +#define _UART_CONFIG_H + +#define UART_CLOCK_SOURCE_96M_ENABLE (1) +#define UART_CTS_FLOWCONTROL_ENABLE (0) +#define UART_RTS_FLOWCONTROL_ENABLE (0) +#define UART_RX_DEGLITCH_ENABLE (0) +#define UART_MSB_FIRST_ENABLE (0) +#define UART_TX_SWCONTROL_ENABLE (0) +#define UART_TX_LINMODE_ENABLE (0) +#define UART_RX_LINMODE_ENABLE (0) +#define UART_TX_BREAKBIT_CNT (0) + +#define UART_FIFO_MAX_LEN 128 +#define UART_DEFAULT_RTO_TIMEOUT 100 + +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/default_config/usb_config.h b/drivers/bl702_driver/hal_drv/default_config/usb_config.h new file mode 100644 index 00000000..e53e12ed --- /dev/null +++ b/drivers/bl702_driver/hal_drv/default_config/usb_config.h @@ -0,0 +1,10 @@ +#ifndef _USB_CONFIG_H +#define _USB_CONFIG_H + +//#define USE_EXTERNAL_TRANSCEIVER +#define USE_INTERNAL_TRANSCEIVER +#define ENABLE_LPM_INT +//#define ENABLE_SOF3MS_INT +//#define ENABLE_ERROR_INT + +#endif diff --git a/drivers/bl702_driver/hal_drv/inc/hal_adc.h b/drivers/bl702_driver/hal_drv/inc/hal_adc.h new file mode 100644 index 00000000..c4b8242f --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_adc.h @@ -0,0 +1,128 @@ +/** + * @file hal_adc.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __HAL_ADC__H__ +#define __HAL_ADC__H__ + +#include "drv_device.h" +#include "bl702_config.h" + +enum adc_index_type +{ +#ifdef BSP_USING_ADC0 + ADC0_INDEX, +#endif + ADC_MAX_INDEX +}; + +#define ADC_CLK_MAX (2000000) + +#define LEFT_SHIFT_BIT(x) (1 << x) + +typedef enum { + ADC_CHANNEL0, /* GPIO 0, ADC channel 0 */ + ADC_CHANNEL1, /* GPIO 1, ADC channel 1 */ + ADC_CHANNEL2, /* GPIO 2, ADC channel 2 */ + ADC_CHANNEL3, /* GPIO 3, ADC channel 3 */ + ADC_CHANNEL4, /* GPIO 4, ADC channel 4 */ + ADC_CHANNEL5, /* GPIO 5, ADC channel 5 */ + ADC_CHANNEL6, /* GPIO 6, ADC channel 6 */ + ADC_CHANNEL7, /* GPIO 7, ADC channel 7 */ + ADC_CHANNEL8, /* GPIO 8, ADC channel 8 */ + ADC_CHANNEL9, /* GPIO 9, ADC channel 9 */ + ADC_CHANNEL10, /* GPIO 10, ADC channel 10 */ + ADC_CHANNEL11, /* GPIO 11, ADC channel 11 */ + ADC_CHANNEL_DAC_OUTA, /* DACA, ADC channel 12 */ + ADC_CHANNEL_DAC_OUTB, /* DACB, ADC channel 13 */ + ADC_CHANNEL_TSEN_P, /* TSenp, ADC channel 14 */ + ADC_CHANNEL_TSEN_N, /* TSenn, ADC channel 15 */ + ADC_CHANNEL_VREF, /* Vref, ADC channel 16 */ + ADC_CHANNEL_DCTEST, /* DCTest, ADC channel 17 */ + ADC_CHANNEL_VABT_HALF, /* VBAT/2, ADC channel 18 */ + ADC_CHANNEL_SENP3, /* SenVP3, ADC channel 19 */ + ADC_CHANNEL_SENP2, /* SenVP2, ADC channel 20 */ + ADC_CHANNEL_SENP1, /* SenVP1, ADC channel 21 */ + ADC_CHANNEL_SENP0, /* SenVP0, ADC channel 22 */ + ADC_CHANNEL_GND, /* GND, ADC channel 23 */ +}adc_channel_t; + +typedef enum { + ADC_CLK_2MHZ, + ADC_CLK_1P3MHZ, + ADC_CLK_1MHZ, + ADC_CLK_500KHZ, +}adc_clk_t; + +typedef enum { + ADC_VREF_3P2V = 0, /* ADC select 3.2V as reference voltage */ + ADC_VREF_2P0V = 1, /* ADC select 2V as reference voltage */ +}adc_vref_t; + +typedef enum { + ADC_ONE_CONV = 0, /* ADC One shot conversion mode */ + ADC_CON_CONV = 1, /* ADC Continuous conversion mode */ +}adc_conv_t; + +/** + * @brief ADC data width type definition + */ +typedef enum { + ADC_DATA_WD_12, /*!< ADC 12 bits */ + ADC_DATA_WD_14_WITH_16_AVERAGE, /*!< ADC 14 bits,and the value is average of 16 converts */ + ADC_DATA_WD_16_WITH_64_AVERAGE, /*!< ADC 16 bits,and the value is average of 64 converts */ + ADC_DATA_WD_16_WITH_128_AVERAGE, /*!< ADC 16 bits,and the value is average of 128 converts */ + ADC_DATA_WD_16_WITH_256_AVERAGE, /*!< ADC 16 bits,and the value is average of 256 converts */ +}adc_data_width_t; + +typedef enum { + ADC_SINGLE_ENDED_IN = 0, /* ADC signal is single-ended input */ + ADC_DIFFERENTIAL_IN = 1, /* ADC signal is differential input*/ +}adc_inputmode_t; + +typedef struct { + uint8_t *pinList; + uint8_t *posChList; + uint8_t *negChList; + uint8_t num; + uint8_t dma_en; + adc_conv_t conv_mode; + adc_inputmode_t in_mode; +} adc_user_cfg_t; + +typedef struct { + int8_t posChan; /*!< Positive channel */ + int8_t negChan; /*!< Negative channel */ + uint16_t value; /*!< ADC value */ + float volt; /*!< ADC voltage result */ +}adc_res_val_t; + +typedef struct adc_device +{ + struct device parent; + adc_clk_t clk; /* CLK is not more than 2Mhz */ + adc_vref_t vref; /* ADC voltage reference*/ + adc_data_width_t resWidth; +} adc_device_t; + +int adc_register(enum adc_index_type index, const char *name, uint16_t flag, adc_user_cfg_t *adc_user_cfg); + +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/inc/hal_camera.h b/drivers/bl702_driver/hal_drv/inc/hal_camera.h new file mode 100644 index 00000000..aa60db91 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_camera.h @@ -0,0 +1,173 @@ +/** + * @file hal_camera.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __IMAGE_SENSOR_H__ +#define __IMAGE_SENSOR_H__ + +#include "bl702_common.h" +#include "bl702_cam.h" +#include "bl702_mjpeg.h" + +#define IMAGE_SENSOR_BF2013 0 +#define IMAGE_SENSOR_GC0308 1 +#define IMAGE_SENSOR_USE IMAGE_SENSOR_GC0308 + + +#define ENDADDR (0x42030000) +#define CAMERA_RESOLUTION_X 640 +#define CAMERA_RESOLUTION_Y 480 +#define CAMERA_FRAME_SIZE (CAMERA_RESOLUTION_X * CAMERA_RESOLUTION_Y * 2) +#define MJPEG_READ_ADDR 0x42020800//0x42022000 +#define MJPEG_READ_SIZE 2 +#define YUV_USE 1 +#if(YUV_USE == 1) +#define CAMERA_BUFFER_SIZE_WHEN_MJPEG (CAMERA_RESOLUTION_X * 2 * 8 * MJPEG_READ_SIZE) +#else +#define CAMERA_BUFFER_SIZE_WHEN_MJPEG (CAMERA_RESOLUTION_X * 8 * MJPEG_READ_SIZE) +#endif +#define MJPEG_WRITE_ADDR (MJPEG_READ_ADDR+CAMERA_BUFFER_SIZE_WHEN_MJPEG) +#define MJPEG_WRITE_SIZE (ENDADDR - MJPEG_READ_ADDR -CAMERA_BUFFER_SIZE_WHEN_MJPEG) + +extern CAM_CFG_Type cameraCfg; +extern MJPEG_CFG_Type mjpegCfg; + +void Image_Sensor_PSRAM_Init(void); +BL_Err_Type Image_Sensor_Init(BL_Fun_Type mjpegEn, CAM_CFG_Type *camCfg, MJPEG_CFG_Type *mjpegCfg); +void Image_Sensor_Dump_Register(void); +BL_Err_Type Image_Sensor_CAM_Get_Interleave(uint8_t **pic, uint32_t *len); +BL_Err_Type Image_Sensor_CAM_Get_Planar(CAM_YUV_Mode_Type yuv, uint8_t **picYY, uint32_t *lenYY, + uint8_t **picUV, uint32_t *lenUV); +uint8_t Image_Sensor_CAM_Frame_Count0(void); +uint8_t Image_Sensor_CAM_Frame_Count1(void); +void Image_Sensor_CAM_Release_Interleave(void); +void Image_Sensor_CAM_Release_Planar(void); +void Image_Sensor_CAM_Open(void); +void Image_Sensor_CAM_Close(void); +void Image_Sensor_CAM_Deinit(void); +BL_Err_Type Image_Sensor_MJPEG_Get(uint8_t **pic, uint32_t *len, uint8_t *q); +uint8_t Image_Sensor_MJPEG_Frame_Count(void); +void Image_Sensor_MJPEG_Release(void); +void Image_Sensor_MJPEG_Open(void); +void Image_Sensor_MJPEG_Close(void); +void Image_Sensor_MJPEG_Deinit(void); + +void ClkOutInit(void); +BL_Err_Type Timer_Init(void); +void Test_H(void); +void Test_L(void); +void Timer_Match0_Cbf(void); + +#endif + +// #ifndef __HAL_CAM__H__ +// #define __HAL_CAM__H__ + +// #include "drv_device.h" +// #include "bl702_config.h" + +// #define DEVICE_CTRL_CONFIG_CAM_START 0x10 +// #define DEVICE_CTRL_CONFIG_CAM_STOP 0x11 + +// typedef enum +// { +// CAMERA_PLANAR_MODE, +// CAMERA_INTERLEAVE_MODE, +// } camera_frame_mode_t; + +// typedef enum +// { +// CAMERA_YUV422, +// CAMERA_YUV420_EVEN, +// CAMERA_YUV420_ODD, +// CAMERA_YUV400_EVEN, +// CAMERA_YUV400_ODD, +// } camera_yuv_mode_t; + +// typedef struct +// { +// camera_frame_mode_t frame_mode; +// camera_yuv_mode_t yuv_mode; +// BL_Fun_Type mjpeg_enable; +// uint8_t mjpegQ; +// } camera_pic_format_t; + +// typedef enum +// { +// CAMERA_LINE_ACTIVE_POLARITY_LOW, /*!< CAMERA line active polarity low */ +// CAMERA_LINE_ACTIVE_POLARITY_HIGH, /*!< CAMERA line active polarity high */ +// } camera_line_active_polarity; + +// typedef enum +// { +// CAMERA_FRAME_ACTIVE_POLARITY_LOW, /*!< CAMERA frame active polarity low */ +// CAMERA_FRAME_ACTIVE_POLARITY_HIGH, /*!< CAMERA frame active polarity high */ +// } camera_frame_active_polarity; + +// typedef struct +// { +// uint8_t mclk; +// uint8_t pclk; +// uint8_t vsync; +// uint8_t hsync; +// uint8_t data0; +// uint8_t data1; +// uint8_t data2; +// uint8_t data3; +// uint8_t data4; +// uint8_t data5; +// uint8_t data6; +// uint8_t data7; +// BL_Fun_Type mclk_enable; +// } camera_pin_t; + +// typedef struct +// { +// uint8_t *base1; +// uint8_t *addr1; +// uint32_t length1; +// uint8_t *base2; +// uint8_t *addr2; +// uint32_t length2; +// } camera_picture_t; + +// typedef struct +// { +// struct device parent; +// uint8_t id; +// camera_pin_t pin; +// uint32_t pic_reso_x; +// uint32_t pic_reso_y; +// uint8_t *buffer; +// uint32_t length; +// camera_pic_format_t pic_format; +// camera_line_active_polarity line_pol; +// camera_frame_active_polarity frame_pol; +// uint8_t mjpeg_quality; +// camera_picture_t picture; +// } camera_device_t; + +// void camera_register(camera_device_t *device, const char *name, uint16_t flag); +// int device_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size); + +// extern camera_device_t camera_device; + +// #endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/inc/hal_clock.h b/drivers/bl702_driver/hal_drv/inc/hal_clock.h new file mode 100644 index 00000000..b959eddd --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_clock.h @@ -0,0 +1,79 @@ +/** + * @file hal_clock.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __HAL_CLOCK__H__ +#define __HAL_CLOCK__H__ + +#include "drv_device.h" +#include "bl702_config.h" + +#define INTERNAL_XTAL_32M 2 +#define EXTERNAL_XTAL_32M 1 + +#define ROOT_CLOCK_SOURCE_RC_32K 0 +#define ROOT_CLOCK_SOURCE_XTAL_32K 1 +#define ROOT_CLOCK_SOURCE_RC_32M 2 + +#define ROOT_CLOCK_SOURCE_XTAL_32M 3 +#define ROOT_CLOCK_SOURCE_DLL_57P6M 4 +#define ROOT_CLOCK_SOURCE_DLL_96M 5 +#define ROOT_CLOCK_SOURCE_DLL_144M 6 + +#define ROOT_CLOCK_SOURCE_DLL_FCLK 7 +#define ROOT_CLOCK_SOURCE_DLL_HCLK 7 +#define ROOT_CLOCK_SOURCE_DLL_BCLK 8 +#define ROOT_CLOCK_SOURCE_DLL_XCLK 3 + +#define ROOT_CLOCK_SOURCE_AUPLL 9 + +#define OUTPUT_REF_CLOCK_SOURCE_NONE 0 +#define OUTPUT_REF_CLOCK_SOURCE_I2S 1 + +#define BSP_ROOT_CLOCK_SOURCE ROOT_CLOCK_SOURCE_DLL_144M +#if (BSP_ROOT_CLOCK_SOURCE > 2) && (BSP_ROOT_CLOCK_SOURCE < 7) +#define CLOCK_XTAL EXTERNAL_XTAL_32M +#else +#define CLOCK_XTAL INTERNAL_XTAL_32M +#endif + +enum system_clock_type +{ + SYSTEM_CLOCK_ROOT_CLOCK = 0, + SYSTEM_CLOCK_FCLK, + SYSTEM_CLOCK_BCLK, + SYSTEM_CLOCK_XCLK, +}; +enum peripheral_clock_type +{ + PERIPHERAL_CLOCK_UART = 0, + PERIPHERAL_CLOCK_SPI, + PERIPHERAL_CLOCK_I2C, + PERIPHERAL_CLOCK_ADC, + PERIPHERAL_CLOCK_DAC, + PERIPHERAL_CLOCK_I2S, +}; + +void system_clock_init(void); +void peripheral_clock_init(void); +uint32_t system_clock_get(enum system_clock_type type); +uint32_t peripheral_clock_get(enum peripheral_clock_type type); +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/inc/hal_dac.h b/drivers/bl702_driver/hal_drv/inc/hal_dac.h new file mode 100644 index 00000000..580b6683 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_dac.h @@ -0,0 +1,73 @@ +/** + * @file hal_dac.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __HAL_DAC__H__ +#define __HAL_DAC__H__ + +#include "drv_device.h" +#include "bl702_config.h" + +#define DEVICE_CTRL_DAC_ATTACH_TX_DMA 0x12 + +enum dac_index_type +{ +#ifdef BSP_USING_DAC0 + DAC0_INDEX, +#endif + DAC_MAX_INDEX +}; + +typedef struct +{ + uint8_t dac0; + uint8_t dac1; + uint8_t pin_num; +} dac_pin_t; + +typedef enum { + DAC_CHANNEL_0, + DAC_CHANNEL_1, + DAC_CHANNEL_ALL, +}dac_channel_t; + + +typedef enum { + DAC_CLK_500KHZ, + DAC_CLK_44P1KHZ, + DAC_CLK_16KHZ, + DAC_CLK_8KHZ, +}dac_clk_t; + + +typedef struct dac_device +{ + struct device parent; + dac_clk_t clk; + dac_pin_t pin; + + void* tx_dma; +} dac_device_t; + + +int dac_register(enum dac_index_type index, const char *name, uint16_t flag); + +#endif diff --git a/drivers/bl702_driver/hal_drv/inc/hal_dma.h b/drivers/bl702_driver/hal_drv/inc/hal_dma.h new file mode 100644 index 00000000..7ce73078 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_dma.h @@ -0,0 +1,191 @@ +/** + * @file hal_dma.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __HAL_DMA__H__ +#define __HAL_DMA__H__ + +#include "drv_device.h" +#include "bl702_config.h" + +#define DMA_CHANNEL_GET_STATUS_CMD 0x10 +#define DMA_CHANNEL_START_CMD 0x11 +#define DMA_CHANNEL_STOP_CMD 0x12 +#define DMA_CHANNEL_UPDATE_CMD 0x13 + +enum dma_index_type +{ +#ifdef BSP_USING_DMA0_CH0 + DMA0_CH0_INDEX, +#endif +#ifdef BSP_USING_DMA0_CH1 + DMA0_CH1_INDEX, +#endif +#ifdef BSP_USING_DMA0_CH2 + DMA0_CH2_INDEX, +#endif +#ifdef BSP_USING_DMA0_CH3 + DMA0_CH3_INDEX, +#endif +#ifdef BSP_USING_DMA0_CH4 + DMA0_CH4_INDEX, +#endif +#ifdef BSP_USING_DMA0_CH5 + DMA0_CH5_INDEX, +#endif +#ifdef BSP_USING_DMA0_CH6 + DMA0_CH6_INDEX, +#endif +#ifdef BSP_USING_DMA0_CH7 + DMA0_CH7_INDEX, +#endif + DMA_MAX_INDEX +}; + +#define dma_channel_start(dev) device_control(dev,DMA_CHANNEL_START_CMD,NULL) +#define dma_channel_stop(dev) device_control(dev,DMA_CHANNEL_STOP_CMD,NULL) +#define dma_channel_update(dev,list) device_control(dev,DMA_CHANNEL_UPDATE_CMD,list) +#define dma_channel_check_busy(dev) device_control(dev,DMA_CHANNEL_GET_STATUS_CMD,NULL) + +#define DMA_ADDR_UART0_TDR (0x4000A000+0x88) +#define DMA_ADDR_UART0_RDR (0x4000A000+0x8C) +#define DMA_ADDR_UART1_TDR (0x4000A100+0x88) +#define DMA_ADDR_UART1_RDR (0x4000A100+0x8C) +#define DMA_ADDR_I2C_TDR (0x4000A300+0x88) +#define DMA_ADDR_I2C_RDR (0x4000A300+0x8C) +#define DMA_ADDR_SPI_TDR (0x4000A200+0x88) +#define DMA_ADDR_SPI_RDR (0x4000A200+0x8C) +#define DMA_ADDR_I2S_TDR (0x4000AA00+0x88) +#define DMA_ADDR_I2S_RDR (0x4000AA00+0x8C) +#define DMA_ADDR_ADC0_DR (0x40002000+0x04) +#define DMA_ADDR_ADC1_DR (0x40002000+0x04) +#define DMA_ADDR_DAC_TDR (0x40002048) + +/** @defgroup DMA_Peripheral_incremented_mode DMA Peripheral incremented mode + * @brief DMA peripheral incremented mode + * @{ + */ +#define DMA_PINC_ENABLE 1 /*!< Peripheral increment mode enable */ +#define DMA_PINC_DISABLE 0 /*!< Peripheral increment mode disable */ +/** + * @} + */ + +/** @defgroup DMA_Memory_incremented_mode DMA Memory incremented mode + * @brief DMA memory incremented mode + * @{ + */ +#define DMA_MINC_ENABLE 1 /*!< Memory increment mode enable */ +#define DMA_MINC_DISABLE 0 /*!< Memory increment mode disable */ + +#define DMA_REQUEST_NONE 0x00000000 /*!< DMA request peripheral:None */ +#define DMA_REQUEST_UART0_RX 0x00000000 /*!< DMA request peripheral:UART0 RX */ +#define DMA_REQUEST_UART0_TX 0x00000001 /*!< DMA request peripheral:UART0 TX */ +#define DMA_REQUEST_UART1_RX 0x00000002 /*!< DMA request peripheral:UART1 RX */ +#define DMA_REQUEST_UART1_TX 0x00000003 /*!< DMA request peripheral:UART1 TX */ +#define DMA_REQUEST_I2C0_RX 0x00000006 /*!< DMA request peripheral:I2C RX */ +#define DMA_REQUEST_I2C0_TX 0x00000007 /*!< DMA request peripheral:I2C TX */ +#define DMA_REQUEST_SPI0_RX 0x0000000A /*!< DMA request peripheral:SPI RX */ +#define DMA_REQUEST_SPI0_TX 0x0000000B /*!< DMA request peripheral:SPI TX */ +#define DMA_REQUEST_I2S_RX 0x00000014 /*!< DMA request peripheral:I2S RX */ +#define DMA_REQUEST_I2S_TX 0x00000015 /*!< DMA request peripheral:I2S TX */ +#define DMA_REQUEST_ADC0 0x00000016 /*!< DMA request peripheral:GPADC0 */ +#define DMA_REQUEST_DAC0 0x00000017 /*!< DMA request peripheral:GPADC1 */ + +#define DMA_BURST_1BYTE 0 +#define DMA_BURST_4BYTE 1 +#define DMA_BURST_8BYTE 2 +#define DMA_BURST_16BYTE 3 + +#define DMA_TRANSFER_WIDTH_8BIT 0 +#define DMA_TRANSFER_WIDTH_16BIT 1 +#define DMA_TRANSFER_WIDTH_32BIT 2 + +#define DMA_LLI_ONCE_MODE 0 +#define DMA_LLI_CYCLE_MODE 1 + +/** + * @brief DMA transfer direction type definition + */ +typedef enum { + DMA_MEMORY_TO_MEMORY = 0, /*!< DMA transfer tyep:memory to memory */ + DMA_MEMORY_TO_PERIPH, /*!< DMA transfer tyep:memory to peripheral */ + DMA_PERIPH_TO_MEMORY, /*!< DMA transfer tyep:peripheral to memory */ + DMA_PERIPH_TO_PERIPH, /*!< DMA transfer tyep:peripheral to peripheral */ +}dma_transfer_dir_type; + +typedef union +{ + struct + { + uint32_t TransferSize : 12; /* [11: 0], r/w, 0x0 */ + uint32_t SBSize : 2; /* [13:12], r/w, 0x1 */ + uint32_t dst_min_mode : 1; /* [ 14], r/w, 0x0 */ + uint32_t DBSize : 2; /* [16:15], r/w, 0x1 */ + uint32_t dst_add_mode : 1; /* [ 17], r/w, 0x0 */ + uint32_t SWidth : 2; /* [19:18], r/w, 0x2 */ + uint32_t reserved_20 : 1; /* [ 20], rsvd, 0x0 */ + uint32_t DWidth : 2; /* [22:21], r/w, 0x2 */ + uint32_t fix_cnt : 2; /* [24:23], r/w, 0x0 */ + uint32_t SLargerD : 1; /* [ 25], r/w, 0x0 */ + uint32_t SI : 1; /* [ 26], r/w, 0x1 */ + uint32_t DI : 1; /* [ 27], r/w, 0x1 */ + uint32_t Prot : 3; /* [30:28], r/w, 0x0 */ + uint32_t I : 1; /* [ 31], r/w, 0x0 */ + } bits; + uint32_t WORD; +} dma_control_data_t; + +typedef struct +{ + uint32_t src_addr; + uint32_t dst_addr; + uint32_t nextlli; + dma_control_data_t cfg; +} dma_lli_ctrl_t; + +typedef struct +{ + uint8_t direction; + uint32_t src_req; + uint32_t dst_req; +} dma_ctrl_param_t; + +typedef struct dma_device +{ + struct device parent; + uint8_t id; + uint8_t ch; + uint8_t direction; + uint8_t transfer_mode; + uint32_t src_req; + uint32_t dst_req; + uint8_t src_burst_size; + uint8_t dst_burst_size; + uint8_t src_width; + uint8_t dst_width; + dma_lli_ctrl_t *lli_cfg; +} dma_device_t; + +int dma_register(enum dma_index_type, const char *name, uint16_t flag); +int dma_reload(struct device *dev, uint32_t src_addr, uint32_t dst_addr, uint32_t transfer_size); +int dma_allocate_register(const char *name, uint16_t flag); +#endif diff --git a/drivers/bl702_driver/hal_drv/inc/hal_gpio.h b/drivers/bl702_driver/hal_drv/inc/hal_gpio.h new file mode 100644 index 00000000..e35a2114 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_gpio.h @@ -0,0 +1,99 @@ +/** + * @file hal_gpio.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __HAL_GPIO__H__ +#define __HAL_GPIO__H__ + +#include "drv_device.h" + +enum gpio_pin_type +{ + GPIO_PIN_0 = 0, + GPIO_PIN_1, + GPIO_PIN_2, + GPIO_PIN_3, + GPIO_PIN_4, + GPIO_PIN_5, + GPIO_PIN_6, + GPIO_PIN_7, + GPIO_PIN_8, + GPIO_PIN_9, + GPIO_PIN_10, + GPIO_PIN_11, + GPIO_PIN_12, + GPIO_PIN_13, + GPIO_PIN_14, + GPIO_PIN_15, + GPIO_PIN_16, + GPIO_PIN_17, + GPIO_PIN_18, + GPIO_PIN_19, + GPIO_PIN_20, + GPIO_PIN_21, + GPIO_PIN_22, + GPIO_PIN_23, + GPIO_PIN_24, + GPIO_PIN_25, + GPIO_PIN_26, + GPIO_PIN_27, + GPIO_PIN_28, + GPIO_PIN_29, + GPIO_PIN_30, + GPIO_PIN_31, + GPIO_PIN_32, + GPIO_PIN_33, + GPIO_PIN_34, + GPIO_PIN_35, + GPIO_PIN_36, + GPIO_PIN_37, + GPIO_PIN_MAX, +}; + +#define GPIO_OUTPUT_MODE 0 +#define GPIO_OUTPUT_PP_MODE 1 +#define GPIO_OUTPUT_PD_MODE 2 +#define GPIO_INPUT_MODE 3 +#define GPIO_INPUT_PP_MODE 4 +#define GPIO_INPUT_PD_MODE 5 +#define GPIO_ASYNC_RISING_TRIGER_INT_MODE 6 +#define GPIO_ASYNC_FALLING_TRIGER_INT_MODE 7 +#define GPIO_ASYNC_HIGH_LEVEL_INT_MODE 8 +#define GPIO_ASYNC_LOW_LEVEL_INT_MODE 9 +#define GPIO_SYNC_RISING_TRIGER_INT_MODE 10 +#define GPIO_SYNC_FALLING_TRIGER_INT_MODE 11 +#define GPIO_SYNC_HIGH_LEVEL_INT_MODE 12 +#define GPIO_SYNC_LOW_LEVEL_INT_MODE 13 + +typedef struct gpio_device +{ + struct device parent; +} gpio_device_t; + +void gpio_register(const char *name, uint16_t flag); + +void gpio_set_mode(uint32_t pin, uint32_t mode); +void gpio_write(uint32_t pin, uint32_t value); +void gpio_toggle(uint32_t pin); +int gpio_read(uint32_t pin); +void gpio_attach_irq(uint32_t pin, void (*cbFun)(void)); +void gpio_irq_enable(uint32_t pin,uint8_t enabled); +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/inc/hal_i2c.h b/drivers/bl702_driver/hal_drv/inc/hal_i2c.h new file mode 100644 index 00000000..2e65346c --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_i2c.h @@ -0,0 +1,71 @@ +/** + * @file hal_i2c.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __HAL_I2C__H__ +#define __HAL_I2C__H__ + +#include "drv_device.h" +#include "bl702_config.h" + +enum i2c_index_type +{ +#ifdef BSP_USING_I2C0 + I2C0_INDEX, +#endif +#ifdef BSP_USING_I2C1 + I2C1_INDEX, +#endif + I2C_MAX_INDEX +}; + +#define I2C_WR 0x0000 +#define I2C_RD 0x0001 +#define I2C_RW_MASK 0x0001 + +#define SUB_ADDR_0BYTE 0x0010 +#define SUB_ADDR_1BYTE 0x0020 +#define SUB_ADDR_2BYTE 0x0040 + +#define I2C_HW_MODE 0 +#define I2C_SW_MODE 1 + +typedef struct i2c_msg +{ + uint8_t slaveaddr; + uint32_t subaddr; + uint16_t flags; + uint16_t len; + uint8_t *buf; +} i2c_msg_t; + +typedef struct i2c_device +{ + struct device parent; + uint8_t id; + uint8_t mode; + uint32_t phase; +} i2c_device_t; + +int i2c_register(enum i2c_index_type index, const char *name, uint16_t flag); +uint32_t i2c_transfer(struct device *dev, i2c_msg_t msgs[], uint32_t num); + +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/inc/hal_i2s.h b/drivers/bl702_driver/hal_drv/inc/hal_i2s.h new file mode 100644 index 00000000..3541315a --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_i2s.h @@ -0,0 +1,121 @@ +/** + * @file hal_i2s.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __HAL_I2S__H__ +#define __HAL_I2S__H__ + +#include "drv_device.h" +#include "bl702_config.h" + +#define I2S_GET_TX_FIFO_CMD 0x10 +#define I2S_GET_RX_FIFO_CMD 0x11 +#define DEVICE_CTRL_I2S_ATTACH_TX_DMA 0x12 +#define DEVICE_CTRL_I2S_ATTACH_RX_DMA 0x13 + +enum i2s_index_type +{ +#ifdef BSP_USING_I2S0 + I2S0_INDEX, +#endif + I2S_MAX_INDEX +}; + + +#define I2S_DEFAULT_RTO_TIMEOUT 15 + +/*! + * @brief I2S mode type settings + * + * This enumeration defines the I2S mode type + */ +typedef enum +{ + I2S_MODE_STD, /*!< I2S STD Mode */ + I2S_MODE_LEFT , /*!< Left-Justified Mode */ + I2S_MODE_RIGHT, /*!< Right-Justified Mode */ + I2S_MODE_DSP_A, /*!< DSP/PCM Mode A*/ + I2S_MODE_DSP_B, /*!< DSP/PCM Mode B*/ +} interface_mode_t; + +/*! + * @brief I2S frame size settings + * + * This enumeration defines the frame size type + */ +typedef enum { + I2S_FRAME_LEN_8 = 1, /*!< I2S frame size 8 bits */ + I2S_FRAME_LEN_16 =2, /*!< I2S frame size 16 bits */ + I2S_FRAME_LEN_24 =3, /*!< I2S frame size 24 bits */ + I2S_FRAME_LEN_32 =4, /*!< I2S frame size 32 bits */ +}i2s_frame_size_t; + +/*! + * @brief I2S data size settings + * + * This enumeration defines the data size type + */ +typedef enum { + I2S_DATA_LEN_8 = 1, /*!< I2S data size 8 bits */ + I2S_DATA_LEN_16 = 2, /*!< I2S data size 16 bits */ + I2S_DATA_LEN_24 = 3, /*!< I2S data size 24 bits */ + I2S_DATA_LEN_32 = 4, /*!< I2S data size 32 bits */ +}i2s_data_size_t; + + +/*! + * @brief I2S frame channel settings + * + * This enumeration defines the frame channel mode type + */ +typedef enum { + I2S_FS_CHANNELS_NUM_MONO=1, /*!< I2S frame is for 1 channels */ + I2S_FS_CHANNELS_NUM_2 =2, /*!< I2S frame is for 2 channels */ + I2S_FS_CHANNELS_NUM_3 =3, /*!< I2S frame is for 3 channels, DSP mode only, frame_size must equal data_size*/ + I2S_FS_CHANNELS_NUM_4 =4, /*!< I2S frame is for 4 channels, DSP mode only, frame_size must equal data_size*/ +}i2s_channel_num_t; + + +typedef enum +{ + I2S_MODE_MASTER = 0, /*!< I2S as master */ + I2S_MODE_SLAVE , /*!< I2S as slave */ +} i2s_mode_t; + +typedef struct i2s_device +{ + struct device parent; + uint8_t id; + + i2s_mode_t iis_mode; + interface_mode_t interface_mode; + uint32_t sampl_freq_hz; /*!< I2S sample data frequency in Hz */ + i2s_channel_num_t channel_num; + i2s_frame_size_t frame_size; + i2s_data_size_t data_size; + uint8_t fifo_threshold; /*!< I2S receive and transmit threshold*/ + void* tx_dma; + void* rx_dma; +} i2s_device_t; + +int i2s_register(enum i2s_index_type index,const char *name,uint16_t flag); + +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/inc/hal_mtimer.h b/drivers/bl702_driver/hal_drv/inc/hal_mtimer.h new file mode 100644 index 00000000..d2d59fd0 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_mtimer.h @@ -0,0 +1,38 @@ +/** + * @file hal_mtimer.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __HAL_MTIMER__H__ +#define __HAL_MTIMER__H__ + +#include "stdint.h" + +void mtimer_init(void); +void mtimer_deinit(void); +void mtimer_start(void); +void mtimer_stop(); +void mtimer_clear_time(void); +uint64_t mtimer_get_time_ms(); +uint64_t mtimer_get_time_us(); +void mtimer_delay_ms(uint32_t time); +void mtimer_delay_us(uint32_t time); +void mtimer_set_alarm_time(uint64_t time, void (*interruptFun)(void)); +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/inc/hal_pwm.h b/drivers/bl702_driver/hal_drv/inc/hal_pwm.h new file mode 100644 index 00000000..2def46b1 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_pwm.h @@ -0,0 +1,66 @@ +/** + * @file hal_pwm.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __HAL_PWM__H__ +#define __HAL_PWM__H__ + +#include "drv_device.h" +#include "bl702_config.h" + + +enum pwm_index_type +{ +#ifdef BSP_USING_UART0 + PWM0_INDEX, +#endif +#ifdef BSP_USING_UART1 + PWM1_INDEX, +#endif +#ifdef BSP_USING_UART2 + PWM2_INDEX, +#endif +#ifdef BSP_USING_UART3 + PWM3_INDEX, +#endif +#ifdef BSP_USING_UART4 + PWM4_INDEX, +#endif + PWM_MAX_INDEX +}; + +typedef struct +{ + uint32_t frequency; + uint8_t dutyCycle; +} pwm_config_t; +typedef struct pwm_device +{ + struct device parent; + uint8_t ch; + uint32_t frequency; + uint8_t dutyCycle; +} pwm_device_t; + + +void pwm_register(enum pwm_index_type index, const char *name, uint16_t flag); + +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/inc/hal_spi.h b/drivers/bl702_driver/hal_drv/inc/hal_spi.h new file mode 100644 index 00000000..94ae3950 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_spi.h @@ -0,0 +1,100 @@ +/** + * @file hal_spi.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __HAL_SPI__H__ +#define __HAL_SPI__H__ + +#include "drv_device.h" +#include "bl702_config.h" + +#define DEVICE_CTRL_SPI_ATTACH_TX_DMA_CMD 0x10 +#define DEVICE_CTRL_SPI_ATTACH_RX_DMA_CMD 0x11 +#define DEVICE_CTRL_SPI_CONFIG_CLOCK_CMD 0x12 + +enum spi_index_type +{ +#ifdef BSP_USING_SPI0 + SPI0_INDEX, +#endif + SPI_MAX_INDEX +}; + +/** @defgroup SPI_Direction SPI Direction Mode + * @{ + */ +#define SPI_LSB_BYTE0_DIRECTION_FIRST 0 +#define SPI_LSB_BYTE3_DIRECTION_FIRST 1 +#define SPI_MSB_BYTE0_DIRECTION_FIRST 2 +#define SPI_MSB_BYTE3_DIRECTION_FIRST 3 + +/** @defgroup SPI_Data_Size SPI Data Size + * @{ + */ +#define SPI_DATASIZE_8BIT 0 +#define SPI_DATASIZE_16BIT 1 +#define SPI_DATASIZE_24BIT 2 +#define SPI_DATASIZE_32BIT 3 + +/** @defgroup SPI_Clock_Polarity SPI Clock Polarity + * @{ + */ +#define SPI_POLARITY_LOW 0 +#define SPI_POLARITY_HIGH 1 + +/** @defgroup SPI_Clock_Phase SPI Clock Phase + * @{ + */ +#define SPI_PHASE_1EDGE 0 +#define SPI_PHASE_2EDGE 1 + +/** @defgroup + * @{ + */ +#define SPI_SLVAE_MODE 0 +#define SPI_MASTER_MODE 1 + +#define SPI_TRANSFER_TYPE_8BIT 0 +#define SPI_TRANSFER_TYPE_16BIT 1 +#define SPI_TRANSFER_TPYE_24BIT 2 +#define SPI_TRANSFER_TYPE_32BIT 3 + +typedef struct spi_device +{ + struct device parent; + uint8_t id; + uint32_t clk; + uint8_t mode; + uint8_t direction; + uint8_t clk_polaraity; + uint8_t clk_phase; + uint8_t datasize; + uint8_t fifo_threshold; + void* tx_dma; + void* rx_dma; +} spi_device_t; + +int spi_register(enum spi_index_type index, const char *name, uint16_t flag); + +int spi_transmit(struct device *dev, void *buffer, uint32_t size, uint8_t type); +int spi_receive(struct device *dev, void *buffer, uint32_t size, uint8_t type); +int spi_transmit_receive(struct device *dev, const void *send_buf, void *recv_buf, uint32_t length, uint8_t type); +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/inc/hal_timer.h b/drivers/bl702_driver/hal_drv/inc/hal_timer.h new file mode 100644 index 00000000..ea804714 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_timer.h @@ -0,0 +1,40 @@ +/** + * @file hal_timer.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __HAL_TIMER__H__ +#define __HAL_TIMER__H__ + +#include "drv_device.h" +#include "bl702_config.h" + + +typedef struct timer_device +{ + struct device parent; + // TIMER_CFG_Type *timerAttr; +} timer_device_t; + +void timer_register(timer_device_t *device, const char *name, uint16_t flag); + +extern timer_device_t timerx_device; + +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/inc/hal_uart.h b/drivers/bl702_driver/hal_drv/inc/hal_uart.h new file mode 100644 index 00000000..75a5bed0 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_uart.h @@ -0,0 +1,137 @@ +/** + * @file hal_uart.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __HAL_UART__H__ +#define __HAL_UART__H__ + +#include "drv_device.h" +#include "bl702_config.h" + +#define DEVICE_CTRL_UART_GET_TX_FIFO 0x10 +#define DEVICE_CTRL_UART_GET_RX_FIFO 0x11 +#define DEVICE_CTRL_UART_ATTACH_TX_DMA 0x12 +#define DEVICE_CTRL_UART_ATTACH_RX_DMA 0x13 + +enum uart_index_type +{ +#ifdef BSP_USING_UART0 + UART0_INDEX, +#endif +#ifdef BSP_USING_UART1 + UART1_INDEX, +#endif +#ifdef BSP_USING_UART2 + UART2_INDEX, +#endif +#ifdef BSP_USING_UART3 + UART3_INDEX, +#endif +#ifdef BSP_USING_UART4 + UART4_INDEX, +#endif + UART_MAX_INDEX +}; + +/*! + * @brief UART data length settings + * + * This enumeration defines the UART data lengths. + */ +typedef enum +{ + UART_DATA_LEN_5 = 0, /*!< Data length is 5 bits */ + UART_DATA_LEN_6 = 1, /*!< Data length is 6 bits */ + UART_DATA_LEN_7 = 2, /*!< Data length is 7 bits */ + UART_DATA_LEN_8 = 3 /*!< Data length is 8 bits */ +} uart_databits_t; + +/*! + * @brief UART stop bit settings + * + * This enumeration defines the UART stop bits. + */ +typedef enum +{ + UART_STOP_ONE = 0, /*!< One stop bit */ + UART_STOP_ONE_D_FIVE = 0, /*!< 1.5 stop bit */ + UART_STOP_TWO = 1 /*!< Two stop bits */ +} uart_stopbits_t; + +/*! + * @brief UART parity type settings + * + * This enumeration defines the UART parity types. + */ +typedef enum +{ + UART_PAR_NONE = 0, /*!< No parity */ + UART_PAR_ODD = 1, /*!< Parity bit is odd */ + UART_PAR_EVEN = 2, /*!< Parity bit is even */ +} uart_parity_t; + +enum uart_event_type +{ + UART_EVENT_TX_END, + UART_EVENT_TX_FIFO, + UART_EVENT_RX_END, + UART_EVENT_RX_FIFO, + UART_EVENT_RTO, + UART_EVENT_UNKNOWN +}; + +enum uart_it_type +{ + UART_TX_END_IT = 1 << 0, + UART_RX_END_IT = 1 << 1, + UART_TX_FIFO_IT = 1 << 2, + UART_RX_FIFO_IT = 1 << 3, + UART_RTO_IT = 1 << 4, + UART_PCE_IT = 1 << 5, + UART_TX_FER_IT = 1 << 6, + UART_RX_FER_IT = 1 << 7, + UART_ALL_IT = 1 << 8 +}; + +typedef struct +{ + uint32_t baudrate; + uart_databits_t databits; + uart_stopbits_t stopbits; + uart_parity_t parity; +}uart_param_cfg_t; + +typedef struct uart_device +{ + struct device parent; + uint8_t id; + uint32_t baudrate; + uart_databits_t databits; + uart_stopbits_t stopbits; + uart_parity_t parity; + uint8_t fifo_threshold; + void* tx_dma; + void* rx_dma; +} uart_device_t; + +int uart_register(enum uart_index_type index, const char *name, uint16_t flag); + +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/inc/hal_usb.h b/drivers/bl702_driver/hal_drv/inc/hal_usb.h new file mode 100644 index 00000000..8fa6ba0c --- /dev/null +++ b/drivers/bl702_driver/hal_drv/inc/hal_usb.h @@ -0,0 +1,220 @@ +/** + * @file hal_usb.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#ifndef __HAL_USB__H__ +#define __HAL_USB__H__ + +#include "drv_device.h" +#include "ring_buffer.h" +#include "bl702_config.h" + +#define DEVICE_CTRL_USB_DC_SET_ADDR 0X10 +#define DEVICE_CTRL_USB_DC_SET_ACK 0X11 +#define DEVICE_CTRL_USB_DC_SET_NACK 0X12 +#define DEVICE_CTRL_USB_DC_SET_STALL 0X13 +#define DEVICE_CTRL_USB_DC_CLR_STALL 0X14 +#define DEVICE_CTRL_USB_DC_GET_STALL 0X15 +#define DEVICE_CTRL_USB_DC_CLR_NACK 0X16 +#define DEVICE_CTRL_USB_DC_CHECK_EPCAP 0X17 +#define DEVICE_CTRL_USB_DC_TX_FIFO_CNT_GET 0x18 +#define DEVICE_CTRL_USB_DC_RX_FIFO_CNT_GET 0x19 + +enum usb_index_type +{ +#ifdef BSP_USING_USB + USB_INDEX, +#endif + USB_MAX_INDEX +}; + +/** + * USB endpoint Transfer Type mask. + */ +#define USBD_EP_TYPE_CTRL 0 +#define USBD_EP_TYPE_ISOC 1 +#define USBD_EP_TYPE_BULK 2 +#define USBD_EP_TYPE_INTR 3 +#define USBD_EP_TYPE_MASK 3 + +/** + * USB endpoint direction and number. + */ +#define USB_EP_DIR_MASK 0x80U +#define USB_EP_DIR_IN 0x80U +#define USB_EP_DIR_OUT 0x00U + +#define USB_EP_OUT_MSK 0x7FU +#define USB_EP_IN_MSK 0x80U + +/** Get endpoint index (number) from endpoint address */ +#define USB_EP_GET_IDX(ep) ((ep) & ~USB_EP_DIR_MASK) +/** Get direction from endpoint address */ +#define USB_EP_GET_DIR(ep) ((ep) & USB_EP_DIR_MASK) +/** Get endpoint address from endpoint index and direction */ +#define USB_EP_GET_ADDR(idx, dir) ((idx) | ((dir) & USB_EP_DIR_MASK)) +/** True if the endpoint is an IN endpoint */ +#define USB_EP_DIR_IS_IN(ep) (USB_EP_GET_DIR(ep) == USB_EP_DIR_IN) +/** True if the endpoint is an OUT endpoint */ +#define USB_EP_DIR_IS_OUT(ep) (USB_EP_GET_DIR(ep) == USB_EP_DIR_OUT) + +#define USB_SET_EP_OUT(ep) (ep & USB_EP_OUT_MSK) +#define USB_SET_EP_IN(ep) (ep | USB_EP_IN_MSK) + +#define USB_OUT_EP_NUM 8 +#define USB_IN_EP_NUM 8 + +#define USB_CTRL_EP_MPS 64 /**< maximum packet size (MPS) for EP 0 */ +#define USB_FS_MAX_PACKET_SIZE 64 /**< full speed MPS for bulk EP */ + +/* Default USB control EP, always 0 and 0x80 */ +#define USB_CONTROL_OUT_EP0 0 +#define USB_CONTROL_IN_EP0 0x80 + +#define USB_DC_EP_TYPE_CTRL 0x5 /*0*/ +#define USB_DC_EP_TYPE_ISOC 0x2 /*1*/ +#define USB_DC_EP_TYPE_BULK 0x4 /*2*/ +#define USB_DC_EP_TYPE_INTR 0x0 /*3*/ + +#define USB_DC_EP1_IN_DR (0x4000D800+0x118) +#define USB_DC_EP1_OUT_DR (0x4000D800+0x11c) +#define USB_DC_EP2_IN_DR (0x4000D800+0x128) +#define USB_DC_EP2_OUT_DR (0x4000D800+0x12c) +#define USB_DC_EP3_IN_DR (0x4000D800+0x138) +#define USB_DC_EP3_OUT_DR (0x4000D800+0x13c) +#define USB_DC_EP4_IN_DR (0x4000D800+0x148) +#define USB_DC_EP4_OUT_DR (0x4000D800+0x14c) +#define USB_DC_EP5_IN_DR (0x4000D800+0x158) +#define USB_DC_EP5_OUT_DR (0x4000D800+0x15c) +#define USB_DC_EP6_IN_DR (0x4000D800+0x168) +#define USB_DC_EP6_OUT_DR (0x4000D800+0x16c) +#define USB_DC_EP7_IN_DR (0x4000D800+0x178) +#define USB_DC_EP7_OUT_DR (0x4000D800+0x17c) + +enum usb_dc_event_type +{ + /** USB error reported by the controller */ + USB_DC_EVENT_ERROR, + /** USB reset */ + USB_DC_EVENT_RESET, + /** Start of Frame received */ + USB_DC_EVENT_SOF, + /** USB connection established, hardware enumeration is completed */ + USB_DC_EVENT_CONNECTED, + /** USB configuration done */ + USB_DC_EVENT_CONFIGURED, + /** USB connection suspended by the HOST */ + USB_DC_EVENT_SUSPEND, + /** USB connection lost */ + USB_DC_EVENT_DISCONNECTED, + /** USB connection resumed by the HOST */ + USB_DC_EVENT_RESUME, + + /** setup packet received */ + USB_DC_EVENT_SETUP_NOTIFY, + /** ep0 in packet received */ + USB_DC_EVENT_EP0_IN_NOTIFY, + /** ep0 out packet received */ + USB_DC_EVENT_EP0_OUT_NOTIFY, + /** ep in packet except ep0 received */ + USB_DC_EVENT_EP_IN_NOTIFY, + /** ep out packet except ep0 received */ + USB_DC_EVENT_EP_OUT_NOTIFY, + /** Initial USB connection status */ + USB_DC_EVENT_UNKNOWN +}; + +enum usb_dc_ep_it_type +{ + USB_SOF_IT = 1 << 0, + USB_EP1_DATA_IN_IT = 1 << 10, + USB_EP1_DATA_OUT_IT = 1 << 11, + USB_EP2_DATA_IN_IT = 1 << 12, + USB_EP2_DATA_OUT_IT = 1 << 13, + USB_EP3_DATA_IN_IT = 1 << 14, + USB_EP3_DATA_OUT_IT = 1 << 15, + USB_EP4_DATA_IN_IT = 1 << 16, + USB_EP4_DATA_OUT_IT = 1 << 17, + USB_EP5_DATA_IN_IT = 1 << 18, + USB_EP5_DATA_OUT_IT = 1 << 19, + USB_EP6_DATA_IN_IT = 1 << 20, + USB_EP6_DATA_OUT_IT = 1 << 21, + USB_EP7_DATA_IN_IT = 1 << 22, + USB_EP7_DATA_OUT_IT = 1 << 23, +}; + +enum usb_error_type +{ + USB_DC_OK = 0, + USB_DC_EP_DIR_ERR = 1, + USB_DC_EP_EN_ERR = 2, + USB_DC_EP_TIMEOUT_ERR = 3, + USB_DC_RB_SIZE_SMALL_ERR = 4, + USB_DC_ZLP_ERR = 5, +}; +/** + * @brief USB Endpoint Configuration. + * + * Structure containing the USB endpoint configuration. + */ +struct usb_dc_ep_cfg{ + /** The number associated with the EP in the device + * configuration structure + * IN EP = 0x80 | \ + * OUT EP = 0x00 | \ + */ + uint8_t ep_addr; + /** Endpoint max packet size */ + uint16_t ep_mps; + /** Endpoint Transfer Type. + * May be Bulk, Interrupt, Control or Isochronous + */ + uint8_t ep_type; +} ; + +/* + * USB endpoint structure. + */ +typedef struct +{ + uint8_t ep_ena; + uint32_t is_stalled; + struct usb_dc_ep_cfg ep_cfg; +} usb_dc_ep_state_t; + +typedef struct usb_dc_device +{ + struct device parent; + uint8_t id; + usb_dc_ep_state_t in_ep[8]; /*!< IN endpoint parameters */ + usb_dc_ep_state_t out_ep[8]; /*!< OUT endpoint parameters */ +} usb_dc_device_t; + +int usb_dc_register(enum usb_index_type index, const char *name, uint16_t flag); + +int usb_dc_ep_open(struct device *dev, const struct usb_dc_ep_cfg *ep_cfg); +int usb_dc_ep_is_stalled(struct device *dev, const uint8_t ep, uint8_t *stalled); +int usb_dc_ep_write(struct device *dev, const uint8_t ep, const uint8_t *data, uint32_t data_len, uint32_t *ret_bytes); +int usb_dc_ep_read(struct device *dev, const uint8_t ep, uint8_t *data, uint32_t data_len, uint32_t *read_bytes); +uint16_t usb_dc_receive_to_ringbuffer(struct device *dev,Ring_Buffer_Type* rb,uint8_t ep); +uint16_t usb_dc_send_from_ringbuffer(struct device *dev,Ring_Buffer_Type* rb,uint8_t ep); + +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/src/hal_adc.c b/drivers/bl702_driver/hal_drv/src/hal_adc.c new file mode 100644 index 00000000..eb131b6d --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_adc.c @@ -0,0 +1,243 @@ +/** + * @file hal_adc.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_adc.h" +#include "hal_gpio.h" +#include "bl702_glb.h" +#include "bl702_dma.h" +#include "bl702_adc.h" +#include "adc_config.h" + +adc_device_t adcx_device[ADC_MAX_INDEX] = { +#ifdef BSP_USING_ADC0 + ADC_CONFIG, +#endif +}; + +/** + * @brief + * + * @param dev + * @param oflag + * @return int + */ +int adc_open(struct device *dev, uint16_t oflag) +{ + adc_device_t *adc_device = (adc_device_t *)dev; + adc_user_cfg_t *adc_user_cfg = ((adc_user_cfg_t *)(adc_device->parent.handle)); + ADC_CFG_Type adc_cfg; + ADC_FIFO_Cfg_Type adc_fifo_cfg; + + ADC_Disable(); + ADC_Reset(); + /* + MSG("adc_user_cfg->pinList = %d \r\n",adc_user_cfg->pinList[0]); + MSG("adc_user_cfg->pinList = %d \r\n",adc_user_cfg->pinList[1]); + MSG("adc_user_cfg->posChList = %d \r\n",adc_user_cfg->posChList[0]); + MSG("adc_user_cfg->negChList = %d \r\n",adc_user_cfg->negChList[0]); + MSG("adc_user_cfg->num = %d \r\n", adc_user_cfg->num); + */ + GLB_GPIO_Func_Init(GPIO_FUN_ANALOG, (GLB_GPIO_Type *)&adc_user_cfg->pinList, adc_user_cfg->num); + + switch (adc_device->clk) + { + case ADC_CLK_500KHZ: + GLB_Set_ADC_CLK(ENABLE, GLB_ADC_CLK_XCLK, 1); + adc_cfg.clkDiv = ADC_CLK_DIV_32; + break; + case ADC_CLK_1MHZ: + GLB_Set_ADC_CLK(ENABLE, GLB_ADC_CLK_XCLK, 1); + adc_cfg.clkDiv = ADC_CLK_DIV_16; + break; + case ADC_CLK_1P3MHZ: + GLB_Set_ADC_CLK(ENABLE, GLB_ADC_CLK_XCLK, 2); + adc_cfg.clkDiv = ADC_CLK_DIV_8; + break; + case ADC_CLK_2MHZ: + GLB_Set_ADC_CLK(ENABLE, GLB_ADC_CLK_XCLK, 1); + adc_cfg.clkDiv = ADC_CLK_DIV_8; + break; + default: + break; + } + + adc_cfg.vref = adc_device->vref; + adc_cfg.resWidth = adc_device->resWidth; + adc_cfg.inputMode = adc_user_cfg->in_mode; + + adc_cfg.v18Sel = ADC_V18_SELECT; + adc_cfg.v11Sel = ADC_V11_SELECT; + adc_cfg.gain1 = ADC_PGA_GAIN1; + adc_cfg.gain2 = ADC_PGA_GAIN2; + adc_cfg.chopMode = ADC_CHOP_MODE; + adc_cfg.biasSel = ADC_BIAS_SELECT; + adc_cfg.vcm = ADC_PGA_VCM; + adc_cfg.offsetCalibEn = ADC_OFFSET_CALIB_EN; + adc_cfg.offsetCalibVal = ADC_OFFSER_CALIB_VAL; + + if(adc_user_cfg->dma_en) + { + adc_fifo_cfg.dmaEn = ENABLE; + } + else + { + adc_fifo_cfg.dmaEn = DISABLE; + } + adc_fifo_cfg.fifoThreshold = ADC_FIFO_THRESHOLD_1; + + ADC_Init(&adc_cfg); + if(adc_user_cfg->num == 1) + { + ADC_Channel_Config((ADC_Chan_Type)adc_user_cfg->posChList[0],(ADC_Chan_Type)adc_user_cfg->negChList[0], adc_user_cfg->conv_mode); + } + else if(adc_user_cfg->num > 1) + { + ADC_Scan_Channel_Config((ADC_Chan_Type*)(adc_user_cfg->posChList), (ADC_Chan_Type*)(adc_user_cfg->negChList),adc_user_cfg->num,adc_user_cfg->conv_mode); + } + + ADC_FIFO_Cfg(&adc_fifo_cfg); + + if((ADC_Chan_Type)adc_user_cfg->posChList[0] == ADC_CHAN_VABT_HALF) + { + ADC_Vbat_Enable(); + } + + ADC_Enable(); + + return 0; +} +/** + * @brief + * + * @param dev + * @return int + */ +int adc_close(struct device *dev) +{ + ADC_Disable(); + return 0; +} +/** + * @brief + * + * @param dev + * @param cmd + * @param args + * @return int + */ +int adc_control(struct device *dev, int cmd, void *args) +{ + //adc_device_t *adc_device = (adc_device_t *)dev; + + switch (cmd) + { + case DEVICE_CTRL_SET_INT /* constant-expression */: + + break; + case DEVICE_CTRL_CLR_INT /* constant-expression */: + /* code */ + /* Enable UART interrupt*/ + + break; + case DEVICE_CTRL_GET_INT /* constant-expression */: + /* code */ + break; + case DEVICE_CTRL_CONFIG /* constant-expression */: + /* code */ + break; + case DEVICE_CTRL_RESUME /* constant-expression */: + /* code */ + ADC_Start(); + break; + case DEVICE_CTRL_SUSPEND /* constant-expression */: + /* code */ + ADC_Stop(); + break; + default: + break; + } + + return 0; +} +// int adc_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size) +// { + +// return 0; +// } +/** + * @brief + * + * @param dev + * @param pos + * @param buffer + * @param size + * @return int + */ +int adc_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size) +{ + + if(dev->oflag & DEVICE_OFLAG_STREAM_RX) + { + while (ADC_Get_FIFO_Count() == 0); + do + { + uint32_t regVal = ADC_Read_FIFO(); + if (regVal) + { + ADC_Result_Type *result = (ADC_Result_Type *)buffer; + ADC_Parse_Result(®Val, size, result); + } + } while (ADC_Get_FIFO_Count() != 0); + + } + return 0; +} +/** + * @brief + * + * @param index + * @param name + * @param flag + * @param adc_user_cfg + * @return int + */ +int adc_register(enum adc_index_type index, const char *name, uint16_t flag, adc_user_cfg_t *adc_user_cfg) +{ + struct device *dev; + + if (ADC_MAX_INDEX == 0) + return -DEVICE_EINVAL; + + dev = &(adcx_device[index].parent); + + dev->open = adc_open; + dev->close = adc_close; + dev->control = adc_control; + dev->write = NULL; + dev->read = adc_read; + + dev->status = DEVICE_UNREGISTER; + dev->type = DEVICE_CLASS_ADC; + dev->handle = adc_user_cfg; + + return device_register(dev, name, flag); +} diff --git a/drivers/bl702_driver/hal_drv/src/hal_camera.c b/drivers/bl702_driver/hal_drv/src/hal_camera.c new file mode 100644 index 00000000..f3850052 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_camera.c @@ -0,0 +1,1874 @@ +/** + * @file hal_camera.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_camera.h" +#include "bl702_i2c.h" +#include "bl702_gpio.h" +#include "bl702_glb.h" +#include "bl702_psram.h" +#include "bl702_l1c.h" +#include "bl702_timer.h" + +/** @addtogroup Image_Sensor_Driver + * @{ + */ + +/** @addtogroup IMAGE_SENSOR + * @{ + */ + +/** @defgroup IMAGE_SENSOR_Private_Macros + * @{ + */ +#define BFLB_EXTPSRAM_CLK_GPIO GLB_GPIO_PIN_27 +#define BFLB_EXTPSRAM_CS_GPIO GLB_GPIO_PIN_17 +#define BFLB_EXTPSRAM_DATA0_GPIO GLB_GPIO_PIN_28 +#define BFLB_EXTPSRAM_DATA1_GPIO GLB_GPIO_PIN_24 +#define BFLB_EXTPSRAM_DATA2_GPIO GLB_GPIO_PIN_23 +#define BFLB_EXTPSRAM_DATA3_GPIO GLB_GPIO_PIN_26 +#if (IMAGE_SENSOR_USE == IMAGE_SENSOR_BF2013) +#define I2C_CAMERA_ADDR 0x6E +#define BF2013_ID_MSB 0xFC +#define BF2013_ID_LSB 0xFD +#elif (IMAGE_SENSOR_USE == IMAGE_SENSOR_GC0308) +#define I2C_CAMERA_ADDR 0x21 +#define GC0308_ID 0x00 +#endif + +void ClkOutInit(void) +{ + uint8_t CLKPins[] = {GLB_GPIO_PIN_9}; + GLB_Set_I2S_CLK(ENABLE, GLB_I2S_OUT_REF_CLK_NONE); + PDS_Set_Audio_PLL_Freq(AUDIO_PLL_24576000_HZ); + GLB_GPIO_Func_Init(0, CLKPins, sizeof(CLKPins) / sizeof(CLKPins[0])); + GLB_Set_Chip_Out_1_CLK_Sel(GLB_CHIP_CLK_OUT_I2S_REF_CLK); +} + +CAM_CFG_Type cameraCfg = + { + .swMode = CAM_SW_MODE_AUTO, + .swIntCnt = 0, + .frameMode = CAM_INTERLEAVE_MODE, +#if (YUV_USE == 1) + .yuvMode = CAM_YUV422, +#else + .yuvMode = CAM_YUV400_ODD, +#endif + .linePol = CAM_LINE_ACTIVE_POLARITY_HIGH, + .framePol = CAM_FRAME_ACTIVE_POLARITY_HIGH, + .camSensorMode = CAM_SENSOR_MODE_V_AND_H, + .burstType = CAM_BURST_TYPE_INCR16, + .waitCount = 0x40, + .memStart0 = MJPEG_READ_ADDR, + .memSize0 = CAMERA_BUFFER_SIZE_WHEN_MJPEG, + .frameSize0 = CAMERA_FRAME_SIZE, + .memStart1 = 0, + .memSize1 = 0, + .frameSize1 = 0, +}; + +MJPEG_CFG_Type mjpegCfg = + { + .burst = MJPEG_BURST_INCR16, + .quality = 10, +#if (YUV_USE == 1) + .yuv = MJPEG_YUV422_INTERLEAVE, +#else + .yuv = MJPEG_YUV400, +#endif + .waitCount = 0x400, + .bufferMjpeg = MJPEG_WRITE_ADDR, + .sizeMjpeg = MJPEG_WRITE_SIZE, + .bufferCamYY = MJPEG_READ_ADDR, + .sizeCamYY = MJPEG_READ_SIZE, + .bufferCamUV = 0, + .sizeCamUV = 0, + .resolutionX = CAMERA_RESOLUTION_X, + .resolutionY = CAMERA_RESOLUTION_Y, + .bitOrderEnable = ENABLE, + .evenOrderEnable = ENABLE, + .swapModeEnable = DISABLE, + .overStopEnable = ENABLE, + .reflectDmy = DISABLE, + .verticalDmy = DISABLE, + .horizationalDmy = DISABLE, +}; +GLB_GPIO_Cfg_Type gpio_cfg0 = { + .gpioPin = GLB_GPIO_PIN_22, + .gpioFun = 11, + .gpioMode = GPIO_MODE_OUTPUT, + .pullType = GPIO_PULL_NONE, + .drive = 0, + .smtCtrl = 1}; +TIMER_CFG_Type timerCh0Cfg = { + TIMER_CH0, /* timer channel 0 */ + TIMER_CLKSRC_FCLK, /* timer clock source:bus clock */ + TIMER_PRELOAD_TRIG_COMP2, /* reaload on comaparator 2 */ + TIMER_COUNT_PRELOAD, /* preload when match occur */ + 0, /* clock division value */ + 230000, /* match value 0 */ + 260000, /* match value 1 */ + 14400000, /* match value 2 */ + 0, /* preload value */ +}; +void Test_H(void) +{ + GLB_GPIO_Write(gpio_cfg0.gpioPin, 1); +} +void Test_L(void) +{ + GLB_GPIO_Write(gpio_cfg0.gpioPin, 0); +} +BL_Err_Type Timer_Init(void) +{ + // TIMER_IntMask(timerCh0Cfg.timerCh, TIMER_INT_ALL, MASK); + // TIMER_Disable(timerCh0Cfg.timerCh); + // TIMER_Init(&timerCh0Cfg); + // TIMER_ClearIntStatus(timerCh0Cfg.timerCh, TIMER_COMP_ID_0); + // TIMER_ClearIntStatus(timerCh0Cfg.timerCh, TIMER_COMP_ID_1); + // TIMER_ClearIntStatus(timerCh0Cfg.timerCh, TIMER_COMP_ID_2); + // TIMER_IntMask(timerCh0Cfg.timerCh, TIMER_INT_COMP_0, UNMASK); + // Timer_Int_Callback_Install(timerCh0Cfg.timerCh, TIMER_INT_COMP_0, &Timer_Match0_Cbf); + // NVIC_ClearPendingIRQ((IRQn_Type)(timerCh0Cfg.timerCh + TIMER_CH0_IRQn)); + // NVIC_EnableIRQ((IRQn_Type)(timerCh0Cfg.timerCh + TIMER_CH0_IRQn)); + // TIMER_Enable(timerCh0Cfg.timerCh); + + GLB_GPIO_Write(gpio_cfg0.gpioPin, 0); + GLB_GPIO_Init(&gpio_cfg0); + GLB_GPIO_OUTPUT_Enable(gpio_cfg0.gpioPin); + + return SUCCESS; +} + +static const uint8_t sensorRegList[][2] = + { +#if (IMAGE_SENSOR_USE == IMAGE_SENSOR_BF2013) + {0x12, 0x80}, + {0x67, 0x00}, + {0x68, 0x00}, + //{0xb9, 0x80},//use Test pattern + //{0x69,0x20}, + {0x3a, 0x02}, + {0x09, 0x01}, + {0x15, 0x02}, + {0x12, 0x00}, + {0x1e, 0x00}, + {0x13, 0x00}, + {0x01, 0x14}, + {0x02, 0x21}, + {0x8c, 0x02}, + {0x8d, 0x64}, + {0x87, 0x18}, + {0x13, 0x07}, + //{0x11,0x80},//pclk=mclk + {0x11, 0x30}, //pclk=mclk/8 + {0x2b, 0x20}, + {0x92, 0x40}, + {0x9d, 0x99}, + {0x06, 0xe0}, + {0x29, 0x54}, + {0xeb, 0x30}, + {0xbb, 0x20}, + {0xf5, 0x21}, + {0xe1, 0x3c}, + {0x16, 0x01}, + {0xe0, 0x0b}, + {0x2f, 0xf6}, + {0x33, 0x20}, + {0x34, 0x08}, + {0x35, 0x50}, + {0x65, 0x4a}, + {0x66, 0x50}, + {0x36, 0x05}, + {0x37, 0xf6}, + {0x38, 0x46}, + {0x9b, 0xf6}, + {0x9c, 0x46}, + {0xbc, 0x01}, + {0xbd, 0xf6}, + {0xbe, 0x46}, + {0x82, 0x14}, + {0x83, 0x23}, + {0x9a, 0x23}, + {0x70, 0x6f}, + {0x72, 0x3f}, + {0x73, 0x3f}, + {0x74, 0x27}, + {0x77, 0x90}, + {0x79, 0x48}, + {0x7a, 0x1e}, + {0x7b, 0x30}, + {0x84, 0x1a}, + {0x85, 0x20}, + {0x89, 0x02}, + {0x8a, 0x64}, + {0x86, 0x30}, + {0x96, 0xa6}, + {0x97, 0x0c}, + {0x98, 0x18}, + {0x80, 0x55}, + {0x24, 0x70}, + {0x25, 0x80}, + {0x94, 0x0a}, + {0x1f, 0x20}, + {0x22, 0x20}, + {0x26, 0x20}, + {0x56, 0x40}, + {0x61, 0xd3}, + {0x79, 0x48}, + {0x3b, 0x60}, + {0x3c, 0x20}, + {0x39, 0x80}, + {0x3f, 0xb0}, + {0x39, 0x80}, + {0x40, 0x58}, + {0x41, 0x54}, + {0x42, 0x4e}, + {0x43, 0x44}, + {0x44, 0x3e}, + {0x45, 0x39}, + {0x46, 0x35}, + {0x47, 0x31}, + {0x48, 0x2e}, + {0x49, 0x2b}, + {0x4b, 0x29}, + {0x4c, 0x27}, + {0x4e, 0x23}, + {0x4f, 0x20}, + {0x50, 0x1e}, + {0x51, 0x05}, + {0x52, 0x10}, + {0x53, 0x0b}, + {0x54, 0x15}, + {0x57, 0x87}, + {0x58, 0x72}, + {0x59, 0x5f}, + {0x5a, 0x7e}, + {0x5b, 0x1f}, + {0x5c, 0x0e}, + {0x5d, 0x95}, + {0x60, 0x28}, + {0xb0, 0xe0}, + {0xb1, 0xc0}, + {0xb2, 0xb0}, + {0xb3, 0x88}, + {0x6a, 0x01}, + {0x23, 0x66}, + {0xa0, 0x03}, + {0xa1, 0x31}, + {0xa2, 0x0b}, + {0xa3, 0x26}, + {0xa4, 0x05}, + {0xa5, 0x25}, + {0xa6, 0x06}, + {0xa7, 0x80}, + {0xa8, 0x80}, + {0xa9, 0x20}, + {0xaa, 0x20}, + {0xab, 0x20}, + {0xac, 0x3c}, + {0xad, 0xf0}, + {0xc8, 0x18}, + {0xc9, 0x20}, + {0xca, 0x17}, + {0xcb, 0x1f}, + {0xaf, 0x00}, + {0xc5, 0x18}, + {0xc6, 0x00}, + {0xc7, 0x20}, + {0xae, 0x80}, + {0xcc, 0x40}, + {0xcd, 0x58}, + {0xee, 0x4c}, + {0x8e, 0x07}, + {0x8f, 0x79}, + +#elif (IMAGE_SENSOR_USE == IMAGE_SENSOR_GC0308) + {0xfe, 0x80}, + {0xfe, 0x00}, //set page0 + {0xd2, 0x10}, //close AEC + {0x22, 0x55}, //close AWB + {0x5a, 0x56}, + {0x5b, 0x40}, + {0x5c, 0x4a}, + {0x22, 0x57}, //Open AWB +#if 0 + //config for 39 FPS + {0x01 , 0x6a},//HB 106 + //{0x02 , 0x70},//VB 112 + {0x02 , 0x0c},//change VB from 112 to 12 + {0x0f , 0x00}, + {0xe2 , 0x00},//anti-flicker step [11:8] + {0xe3 , 0x96},//anti-flicker step [7:0] + {0xe4 , 0x01},//exp level 1 50.00fps or 20ms + {0xe5 , 0x2c}, + {0xe6 , 0x03},//exp level 2 16.67fps + {0xe7 , 0x84}, + {0xe8 , 0x04},//exp level 3 12.5fps + {0xe9 , 0xb0}, + {0xea , 0x09},//exp level 4 6.00fps + {0xeb , 0xc4}, +#elif 0 + //config for 33.33 FPS + {0x01, 0x6a}, //HB 106 + {0x02, 0x52}, //VB 82 + {0x0f, 0x00}, + {0xe2, 0x00}, //anti-flicker step [11:8] + {0xe3, 0x96}, //anti-flicker step [7:0] + {0xe4, 0x01}, //exp level 1 33.33fps or 30ms + {0xe5, 0x2c}, + {0xe6, 0x03}, //exp level 2 16.67fps + {0xe7, 0x84}, + {0xe8, 0x04}, //exp level 3 12.5fps + {0xe9, 0xb0}, + {0xea, 0x09}, //exp level 4 6.00fps + {0xeb, 0xc4}, +#else + //config for 25 FPS + {0x01, 0x6a}, //HB 106 + //{0x02 , 0x70},//VB 112 + {0x02, 0xe8}, //change VB from 112 to 232 + {0x0f, 0x00}, + {0xe2, 0x00}, //anti-flicker step [11:8] + {0xe3, 0x96}, //anti-flicker step [7:0] + {0xe4, 0x02}, //exp level 1 25.00fps or 40ms + {0xe5, 0x58}, + {0xe6, 0x03}, //exp level 2 16.67fps + {0xe7, 0x84}, + {0xe8, 0x04}, //exp level 3 12.5fps + {0xe9, 0xb0}, + {0xea, 0x09}, //exp level 4 6.00fps + {0xeb, 0xc4}, +#endif + {0xec, 0x00}, //select max exposure level 1 - highest fps + {0x05, 0x00}, + {0x06, 0x00}, + {0x07, 0x00}, + {0x08, 0x00}, + {0x09, 0x01}, + {0x0a, 0xe8}, + //{0x0a , 0x70},//change win_height from 488 to 368 + {0x0b, 0x02}, + {0x0c, 0x88}, //win_width 648 + {0x0d, 0x02}, + {0x0e, 0x02}, + {0x10, 0x22}, + {0x11, 0xfd}, + {0x12, 0x2a}, + {0x13, 0x00}, + //{0x14 , 0x10}, + {0x14, 0x13}, //enable mirror & flip + //-------------H_V_Switch(4)---------------// + /* + 1://normal + {0x14 , 0x10}, + 2://IMAGE_H_MIRROR + {0x14 , 0x11}, + 3://IMAGE_V_MIRROR + {0x14 , 0x12}, + 4://IMAGE_HV_MIRROR + {0x14 , 0x13},*/ + {0x15, 0x0a}, + {0x16, 0x05}, + {0x17, 0x01}, + {0x18, 0x44}, + {0x19, 0x44}, + {0x1a, 0x1e}, + {0x1b, 0x00}, + {0x1c, 0xc1}, + {0x1d, 0x08}, + {0x1e, 0x60}, + {0x1f, 0x17}, + {0x20, 0xff}, + {0x21, 0xf8}, + {0x22, 0x57}, + {0x24, 0xa0}, //Cb Y Cr Y + {0x25, 0x0f}, + //output sync_mode + //{0x26 , 0x02},//0x03 20101016 zhj + {0x26, 0x03}, //sync mode, high high + {0x2f, 0x01}, + {0x30, 0xf7}, + {0x31, 0x50}, + {0x32, 0x00}, + {0x39, 0x04}, + {0x3a, 0x18}, + {0x3b, 0x20}, + {0x3c, 0x00}, + {0x3d, 0x00}, + {0x3e, 0x00}, + {0x3f, 0x00}, + {0x50, 0x10}, + {0x53, 0x82}, + {0x54, 0x80}, + {0x55, 0x80}, + {0x56, 0x82}, + {0x8b, 0x40}, + {0x8c, 0x40}, + {0x8d, 0x40}, + {0x8e, 0x2e}, + {0x8f, 0x2e}, + {0x90, 0x2e}, + {0x91, 0x3c}, + {0x92, 0x50}, + {0x5d, 0x12}, + {0x5e, 0x1a}, + {0x5f, 0x24}, + {0x60, 0x07}, + {0x61, 0x15}, + {0x62, 0x08}, + {0x64, 0x03}, + {0x66, 0xe8}, + {0x67, 0x86}, + {0x68, 0xa2}, + {0x69, 0x18}, + {0x6a, 0x0f}, + {0x6b, 0x00}, + {0x6c, 0x5f}, + {0x6d, 0x8f}, + {0x6e, 0x55}, + {0x6f, 0x38}, + {0x70, 0x15}, + {0x71, 0x33}, + {0x72, 0xdc}, + {0x73, 0x80}, + {0x74, 0x02}, + {0x75, 0x3f}, + {0x76, 0x02}, + {0x77, 0x36}, + {0x78, 0x88}, + {0x79, 0x81}, + {0x7a, 0x81}, + {0x7b, 0x22}, + {0x7c, 0xff}, + {0x93, 0x48}, + {0x94, 0x00}, + {0x95, 0x05}, + {0x96, 0xe8}, + {0x97, 0x40}, + {0x98, 0xf0}, + {0xb1, 0x38}, + {0xb2, 0x38}, + {0xbd, 0x38}, + {0xbe, 0x36}, +#if 1 + {0xd0, 0xc9}, + {0xd1, 0x10}, + {0xd3, 0x80}, + {0xd5, 0xf2}, + {0xd6, 0x16}, +#else + //default AEC setting + {0xd0, 0xca}, + {0xd1, 0xa1}, + {0xd3, 0xa0}, + {0xd5, 0xf2}, + {0xd6, 0x18}, +#endif + {0xdb, 0x92}, + {0xdc, 0xa5}, + {0xdf, 0x23}, + {0xd9, 0x00}, + {0xda, 0x00}, + {0xe0, 0x09}, + {0xed, 0x04}, +#if 0 + //default max dgain + {0xee , 0xa0}, + {0xef , 0x40}, +#else + //increased max dgain + {0xee, 0xf0}, + {0xef, 0x60}, +#endif + {0x80, 0x03}, + {0x80, 0x03}, + {0x9F, 0x10}, + {0xA0, 0x20}, + {0xA1, 0x38}, + {0xA2, 0x4E}, + {0xA3, 0x63}, + {0xA4, 0x76}, + {0xA5, 0x87}, + {0xA6, 0xA2}, + {0xA7, 0xB8}, + {0xA8, 0xCA}, + {0xA9, 0xD8}, + {0xAA, 0xE3}, + {0xAB, 0xEB}, + {0xAC, 0xF0}, + {0xAD, 0xF8}, + {0xAE, 0xFD}, + {0xAF, 0xFF}, + /* + GC0308_GAMMA_Select, + 1://smallest gamma curve + {0x9F , 0x0B}, + {0xA0 , 0x16}, + {0xA1 , 0x29}, + {0xA2 , 0x3C}, + {0xA3 , 0x4F}, + {0xA4 , 0x5F}, + {0xA5 , 0x6F}, + {0xA6 , 0x8A}, + {0xA7 , 0x9F}, + {0xA8 , 0xB4}, + {0xA9 , 0xC6}, + {0xAA , 0xD3}, + {0xAB , 0xDD}, + {0xAC , 0xE5}, + {0xAD , 0xF1}, + {0xAE , 0xFA}, + {0xAF , 0xFF}, + 2: + {0x9F , 0x0E}, + {0xA0 , 0x1C}, + {0xA1 , 0x34}, + {0xA2 , 0x48}, + {0xA3 , 0x5A}, + {0xA4 , 0x6B}, + {0xA5 , 0x7B}, + {0xA6 , 0x95}, + {0xA7 , 0xAB}, + {0xA8 , 0xBF}, + {0xA9 , 0xCE}, + {0xAA , 0xD9}, + {0xAB , 0xE4}, + {0xAC , 0xEC}, + {0xAD , 0xF7}, + {0xAE , 0xFD}, + {0xAF , 0xFF}, + 3: + {0x9F , 0x10}, + {0xA0 , 0x20}, + {0xA1 , 0x38}, + {0xA2 , 0x4E}, + {0xA3 , 0x63}, + {0xA4 , 0x76}, + {0xA5 , 0x87}, + {0xA6 , 0xA2}, + {0xA7 , 0xB8}, + {0xA8 , 0xCA}, + {0xA9 , 0xD8}, + {0xAA , 0xE3}, + {0xAB , 0xEB}, + {0xAC , 0xF0}, + {0xAD , 0xF8}, + {0xAE , 0xFD}, + {0xAF , 0xFF}, + 4: + {0x9F , 0x14}, + {0xA0 , 0x28}, + {0xA1 , 0x44}, + {0xA2 , 0x5D}, + {0xA3 , 0x72}, + {0xA4 , 0x86}, + {0xA5 , 0x95}, + {0xA6 , 0xB1}, + {0xA7 , 0xC6}, + {0xA8 , 0xD5}, + {0xA9 , 0xE1}, + {0xAA , 0xEA}, + {0xAB , 0xF1}, + {0xAC , 0xF5}, + {0xAD , 0xFB}, + {0xAE , 0xFE}, + {0xAF , 0xFF}, + 5://largest gamma curve + {0x9F , 0x15}, + {0xA0 , 0x2A}, + {0xA1 , 0x4A}, + {0xA2 , 0x67}, + {0xA3 , 0x79}, + {0xA4 , 0x8C}, + {0xA5 , 0x9A}, + {0xA6 , 0xB3}, + {0xA7 , 0xC5}, + {0xA8 , 0xD5}, + {0xA9 , 0xDF}, + {0xAA , 0xE8}, + {0xAB , 0xEE}, + {0xAC , 0xF3}, + {0xAD , 0xFA}, + {0xAE , 0xFD}, + {0xAF , 0xFF}, + */ + //-----------GAMMA Select End--------------// + {0xc0, 0x00}, + {0xc1, 0x10}, + {0xc2, 0x1C}, + {0xc3, 0x30}, + {0xc4, 0x43}, + {0xc5, 0x54}, + {0xc6, 0x65}, + {0xc7, 0x75}, + {0xc8, 0x93}, + {0xc9, 0xB0}, + {0xca, 0xCB}, + {0xcb, 0xE6}, + {0xcc, 0xFF}, + {0xf0, 0x02}, + {0xf1, 0x01}, + {0xf2, 0x01}, + {0xf3, 0x30}, + {0xf9, 0x9f}, + {0xfa, 0x78}, + //{0xfa , 0x58},//Change measure window Y1 from 480 to 352 + //------------------------------------------------- + {0xfe, 0x01}, // set page1 + {0x00, 0xf5}, + {0x02, 0x1a}, + {0x0a, 0xa0}, + {0x0b, 0x60}, + {0x0c, 0x08}, + {0x0e, 0x4c}, + {0x0f, 0x39}, + {0x11, 0x3f}, + {0x12, 0x72}, + {0x13, 0x13}, + {0x14, 0x42}, + {0x15, 0x43}, + {0x16, 0xc2}, + {0x17, 0xa8}, + {0x18, 0x18}, + {0x19, 0x40}, + {0x1a, 0xd0}, + {0x1b, 0xf5}, + {0x70, 0x40}, + {0x71, 0x58}, + {0x72, 0x30}, + {0x73, 0x48}, + {0x74, 0x20}, + {0x75, 0x60}, + {0x77, 0x20}, + {0x78, 0x32}, + {0x30, 0x03}, + {0x31, 0x40}, + {0x32, 0xe0}, + {0x33, 0xe0}, + {0x34, 0xe0}, + {0x35, 0xb0}, + {0x36, 0xc0}, + {0x37, 0xc0}, + {0x38, 0x04}, + {0x39, 0x09}, + {0x3a, 0x12}, + {0x3b, 0x1C}, + {0x3c, 0x28}, + {0x3d, 0x31}, + {0x3e, 0x44}, + {0x3f, 0x57}, + {0x40, 0x6C}, + {0x41, 0x81}, + {0x42, 0x94}, + {0x43, 0xA7}, + {0x44, 0xB8}, + {0x45, 0xD6}, + {0x46, 0xEE}, + {0x47, 0x0d}, + {0xfe, 0x00}, //set page0 + //-----------Update the registers 2010/07/06-------------// + //Registers of Page0 + {0xfe, 0x00}, //set page0 + {0x10, 0x26}, + {0x11, 0x0d}, //fd,modified by mormo 2010/07/06 + {0x1a, 0x2a}, //1e,modified by mormo 2010/07/06 + {0x1c, 0x49}, //c1,modified by mormo 2010/07/06 + {0x1d, 0x9a}, //08,modified by mormo 2010/07/06 + {0x1e, 0x61}, //60,modified by mormo 2010/07/06 + {0x3a, 0x20}, + {0x50, 0x14}, //10,modified by mormo 2010/07/06 + {0x53, 0x80}, + {0x56, 0x80}, + {0x8b, 0x20}, //LSC + {0x8c, 0x20}, + {0x8d, 0x20}, + {0x8e, 0x14}, + {0x8f, 0x10}, + {0x90, 0x14}, + {0x94, 0x02}, + {0x95, 0x07}, + {0x96, 0xe0}, + {0xb1, 0x40}, //YCPT + {0xb2, 0x40}, + {0xb3, 0x40}, + {0xb6, 0xe0}, + //{0xd0 , 0xcb},//AECT c9,modifed by mormo 2010/07/06 + //{0xd3 , 0x48},//80,modified by mormor 2010/07/06 + {0xf2, 0x02}, + //{0xf7 , 0x12}, + //{0xf8 , 0x0a}, + //Registers + {0xfe, 0x01}, // set page1 + {0x02, 0x20}, + {0x04, 0x10}, + {0x05, 0x08}, + {0x06, 0x20}, + {0x08, 0x0a}, + {0x0e, 0x44}, + {0x0f, 0x32}, + {0x10, 0x41}, + {0x11, 0x37}, + {0x12, 0x22}, + {0x13, 0x19}, + {0x14, 0x44}, + {0x15, 0x44}, + {0x19, 0x50}, + {0x1a, 0xd8}, + {0x32, 0x10}, + {0x35, 0x00}, + {0x36, 0x80}, + {0x37, 0x00}, + //-----------Update the registers end---------// + {0xfe, 0x00}, //set page0 + {0xd2, 0x90}, +#endif +}; + +SPI_Psram_Cfg_Type apMemory1604 = { + .readIdCmd = 0x9F, + .readIdDmyClk = 0, + .burstToggleCmd = 0xC0, + .resetEnableCmd = 0x66, + .resetCmd = 0x99, + .enterQuadModeCmd = 0x35, + .exitQuadModeCmd = 0xF5, + .readRegCmd = 0xB5, + .readRegDmyClk = 1, + .writeRegCmd = 0xB1, + .readCmd = 0x03, + .readDmyClk = 0, + .fReadCmd = 0x0B, + .fReadDmyClk = 1, + .fReadQuadCmd = 0xEB, + .fReadQuadDmyClk = 3, + .writeCmd = 0x02, + .quadWriteCmd = 0x38, + .pageSize = 512, + .ctrlMode = PSRAM_SPI_CTRL_MODE, + .driveStrength = PSRAM_DRIVE_STRENGTH_50_OHMS, + .burstLength = PSRAM_BURST_LENGTH_512_BYTES, +}; + +SF_Ctrl_Cmds_Cfg cmdsCfg = { + .cmdsEn = ENABLE, + .burstToggleEn = ENABLE, + .wrapModeEn = DISABLE, + .wrapLen = SF_CTRL_WRAP_LEN_512, +}; + +SF_Ctrl_Psram_Cfg sfCtrlPsramCfg = { + .owner = SF_CTRL_OWNER_SAHB, + .padSel = SF_CTRL_PAD_SEL_DUAL_CS_SF2, + .bankSel = SF_CTRL_SEL_PSRAM, + .psramRxClkInvertSrc = ENABLE, + .psramRxClkInvertSel = ENABLE, + .psramDelaySrc = ENABLE, + .psramClkDelay = 0, +}; + +/*@} end of group IMAGE_SENSOR_Private_Variables */ + +/** @defgroup IMAGE_SENSOR_Global_Variables + * @{ + */ + +/*@} end of group IMAGE_SENSOR_Global_Variables */ + +/** @defgroup IMAGE_SENSOR_Private_Fun_Declaration + * @{ + */ +static void CAM_GPIO_Init(void); +static void I2C_GPIO_Init(void); +static BL_Err_Type CAM_Write_Byte8(uint8_t data, uint8_t cmd); +static uint8_t CAM_Read_Byte8(uint8_t cmd); +static BL_Err_Type CAM_Read_ID(void); +static BL_Err_Type CAM_Reg_Config(void); + +/*@} end of group IMAGE_SENSOR_Private_Fun_Declaration */ + +/** @defgroup IMAGE_SENSOR_Private_Functions + * @{ + */ + +/****************************************************************************/ /** + * @brief CAMERA GPIO Initialization + * + * @param None + * + * @return None + * +*******************************************************************************/ +static void CAM_GPIO_Init(void) +{ + GLB_GPIO_Cfg_Type cfg; + + cfg.drive = 0; + cfg.smtCtrl = 1; + cfg.gpioPin = GLB_GPIO_PIN_0; + cfg.gpioFun = GPIO0_FUN_PIX_CLK; + cfg.gpioMode = GPIO_MODE_INPUT; + cfg.pullType = GPIO_PULL_NONE; + GLB_GPIO_Init(&cfg); + + cfg.drive = 0; + cfg.smtCtrl = 1; + cfg.gpioPin = GLB_GPIO_PIN_1; + cfg.gpioFun = GPIO1_FUN_FRAME_VLD; + cfg.gpioMode = GPIO_MODE_INPUT; + cfg.pullType = GPIO_PULL_NONE; + GLB_GPIO_Init(&cfg); + + cfg.drive = 0; + cfg.smtCtrl = 1; + cfg.gpioPin = GLB_GPIO_PIN_2; + cfg.gpioFun = GPIO2_FUN_LINE_VLD; + cfg.gpioMode = GPIO_MODE_INPUT; + cfg.pullType = GPIO_PULL_NONE; + GLB_GPIO_Init(&cfg); + + cfg.drive = 0; + cfg.smtCtrl = 1; + cfg.gpioPin = GLB_GPIO_PIN_3; + cfg.gpioFun = GPIO3_FUN_PIX_DAT0; + cfg.gpioMode = GPIO_MODE_INPUT; + cfg.pullType = GPIO_PULL_NONE; + GLB_GPIO_Init(&cfg); + + cfg.drive = 0; + cfg.smtCtrl = 1; + cfg.gpioPin = GLB_GPIO_PIN_4; + cfg.gpioFun = GPIO4_FUN_PIX_DAT1; + cfg.gpioMode = GPIO_MODE_INPUT; + cfg.pullType = GPIO_PULL_NONE; + GLB_GPIO_Init(&cfg); + + cfg.drive = 0; + cfg.smtCtrl = 1; + cfg.gpioPin = GLB_GPIO_PIN_5; + cfg.gpioFun = GPIO5_FUN_PIX_DAT2; + cfg.gpioMode = GPIO_MODE_INPUT; + cfg.pullType = GPIO_PULL_NONE; + GLB_GPIO_Init(&cfg); + + cfg.drive = 0; + cfg.smtCtrl = 1; + cfg.gpioPin = GLB_GPIO_PIN_6; + cfg.gpioFun = GPIO6_FUN_PIX_DAT3; + cfg.gpioMode = GPIO_MODE_INPUT; + cfg.pullType = GPIO_PULL_NONE; + GLB_GPIO_Init(&cfg); + + cfg.drive = 0; + cfg.smtCtrl = 1; + cfg.gpioPin = GLB_GPIO_PIN_12; + cfg.gpioFun = GPIO12_FUN_PIX_DAT4; + cfg.gpioMode = GPIO_MODE_INPUT; + cfg.pullType = GPIO_PULL_NONE; + GLB_GPIO_Init(&cfg); + + cfg.drive = 0; + cfg.smtCtrl = 1; + cfg.gpioPin = GLB_GPIO_PIN_29; + cfg.gpioFun = GPIO29_FUN_PIX_DAT5; + cfg.gpioMode = GPIO_MODE_INPUT; + cfg.pullType = GPIO_PULL_NONE; + GLB_GPIO_Init(&cfg); + + cfg.drive = 0; + cfg.smtCtrl = 1; + cfg.gpioPin = GLB_GPIO_PIN_30; + cfg.gpioFun = GPIO30_FUN_PIX_DAT6; + cfg.gpioMode = GPIO_MODE_INPUT; + cfg.pullType = GPIO_PULL_NONE; + GLB_GPIO_Init(&cfg); + + cfg.drive = 0; + cfg.smtCtrl = 1; + cfg.gpioPin = GLB_GPIO_PIN_31; + cfg.gpioFun = GPIO31_FUN_PIX_DAT7; + cfg.gpioMode = GPIO_MODE_INPUT; + cfg.pullType = GPIO_PULL_NONE; + GLB_GPIO_Init(&cfg); + + cfg.drive = 1; + cfg.smtCtrl = 1; + cfg.gpioPin = GLB_GPIO_PIN_10; + cfg.gpioFun = GPIO10_FUN_CAM_REF_CLK; + cfg.gpioMode = GPIO_MODE_OUTPUT; + cfg.pullType = GPIO_PULL_NONE; + //GLB_GPIO_Init(&cfg); +} + +/****************************************************************************/ /** + * @brief Dump image sensor register while is set + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Image_Sensor_Dump_Register(void) +{ + uint32_t i; + + for (i = 0; i < sizeof(sensorRegList) / sizeof(sensorRegList[0]); i++) + { + MSG("reg[%02x]: %02x\n", sensorRegList[i][0], CAM_Read_Byte8(sensorRegList[i][0])); + } +} + +/****************************************************************************/ /** + * @brief I2C GPIO Initialization + * + * @param None + * + * @return None + * +*******************************************************************************/ +static void I2C_GPIO_Init(void) +{ + uint8_t i; + GLB_GPIO_Cfg_Type cfg; + uint8_t gpiopins[2]; + uint8_t gpiofuns[2]; + uint8_t gpioMode[2]; + + cfg.gpioMode = GPIO_MODE_AF; + cfg.pullType = GPIO_PULL_UP; + cfg.drive = 1; + cfg.smtCtrl = 1; + cfg.gpioMode = GPIO_MODE_OUTPUT; + + gpiopins[0] = GLB_GPIO_PIN_16; + gpiopins[1] = GLB_GPIO_PIN_11; + gpiofuns[0] = GPIO16_FUN_I2C0_SCL; + gpiofuns[1] = GPIO11_FUN_I2C0_SDA; + gpioMode[0] = GPIO_MODE_AF; + gpioMode[1] = GPIO_MODE_AF; + + for (i = 0; i < sizeof(gpiopins) / sizeof(gpiopins[0]); i++) + { + cfg.gpioPin = gpiopins[i]; + cfg.gpioFun = gpiofuns[i]; + cfg.gpioMode = gpioMode[i]; + GLB_GPIO_Init(&cfg); + } +} + +/****************************************************************************/ /** + * @brief PSRAM GPIO Initialization + * + * @param None + * + * @return None + * +*******************************************************************************/ +static void ATTR_TCM_SECTION SF_Cfg_Init_Ext_Psram_Gpio(void) +{ + GLB_GPIO_Cfg_Type cfg; + uint8_t gpiopins[6]; + uint8_t i = 0; + + cfg.gpioMode = GPIO_MODE_AF; + cfg.pullType = GPIO_PULL_UP; + cfg.drive = 1; + cfg.smtCtrl = 1; + cfg.gpioFun = GPIO_FUN_FLASH_PSRAM; + + gpiopins[0] = BFLB_EXTPSRAM_CLK_GPIO; + gpiopins[1] = BFLB_EXTPSRAM_CS_GPIO; + gpiopins[2] = BFLB_EXTPSRAM_DATA0_GPIO; + gpiopins[3] = BFLB_EXTPSRAM_DATA1_GPIO; + gpiopins[4] = BFLB_EXTPSRAM_DATA2_GPIO; + gpiopins[5] = BFLB_EXTPSRAM_DATA3_GPIO; + + for (i = 0; i < sizeof(gpiopins); i++) + { + cfg.gpioPin = gpiopins[i]; + if (i == 0 || i == 1) + { + /*flash clk and cs is output*/ + cfg.gpioMode = GPIO_MODE_OUTPUT; + } + else + { + /*data are bidir*/ + cfg.gpioMode = GPIO_MODE_AF; + } + GLB_GPIO_Init(&cfg); + } +} + +/****************************************************************************/ /** + * @brief I2C CAMERA Write 8 bits + * + * @param data: Reg Value + * @param cmd: Reg Addr + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +static BL_Err_Type CAM_Write_Byte8(uint8_t data, uint8_t cmd) +{ + uint8_t temp = data; + I2C_Transfer_Cfg tranCfg; + + tranCfg.slaveAddr = I2C_CAMERA_ADDR; + tranCfg.stopEveryByte = DISABLE; + tranCfg.subAddrSize = 1; + tranCfg.subAddr = cmd; + tranCfg.dataSize = 1; + tranCfg.data = &temp; + return I2C_MasterSendBlocking(I2C0_ID, &tranCfg); +} + +/****************************************************************************/ /** + * @brief I2C CAMERA Read 8 bits + * + * @param cmd: Reg Addr + * + * @return Reg Value + * +*******************************************************************************/ +static uint8_t CAM_Read_Byte8(uint8_t cmd) +{ + uint8_t temp = 0; + I2C_Transfer_Cfg tranCfg; + + tranCfg.slaveAddr = I2C_CAMERA_ADDR; + tranCfg.stopEveryByte = DISABLE; + tranCfg.subAddrSize = 1; + tranCfg.subAddr = cmd; + tranCfg.dataSize = 1; + tranCfg.data = &temp; + I2C_MasterReceiveBlocking(I2C0_ID, &tranCfg); + + return temp; +} + +/****************************************************************************/ /** + * @brief CAMERA Read ID + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +static BL_Err_Type CAM_Read_ID(void) +{ + uint8_t buf[2] = {0}; +#if (IMAGE_SENSOR_USE == IMAGE_SENSOR_BF2013) + buf[0] = CAM_Read_Byte8(BF2013_ID_MSB); + bflb_platform_delay_ms(10); + buf[1] = CAM_Read_Byte8(BF2013_ID_LSB); + + if (buf[0] == 0x37 && buf[1] == 0x03) + { + return SUCCESS; + } + else + { + return ERROR; + } +#elif (IMAGE_SENSOR_USE == IMAGE_SENSOR_GC0308) + buf[0] = CAM_Read_Byte8(GC0308_ID); + + if (buf[0] == 0x9b) + { + return SUCCESS; + } + else + { + return ERROR; + } +#endif +} + +/****************************************************************************/ /** + * @brief CAMERA Reg Config + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +static BL_Err_Type CAM_Reg_Config(void) +{ + int i; + + for (i = 0; i < sizeof(sensorRegList) / sizeof(sensorRegList[0]); i++) + { + if (CAM_Write_Byte8(sensorRegList[i][1], sensorRegList[i][0]) != SUCCESS) + { + return ERROR; + } + //if(i == 0){ + bflb_platform_delay_ms(1); + //} + } + return SUCCESS; +} + +/*@} end of group IMAGE_SENSOR_Private_Functions */ + +/** @defgroup IMAGE_SENSOR_Public_Functions + * @{ + */ + +/****************************************************************************/ /** + * @brief PSRAM Config Initialization + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Image_Sensor_PSRAM_Init(void) +{ + uint8_t psramId[8] = {0}; + + GLB_Set_SF_CLK(1, GLB_SFLASH_CLK_72M, 1); + SF_Cfg_Init_Ext_Psram_Gpio(); + + Psram_Init(&apMemory1604, &cmdsCfg, &sfCtrlPsramCfg); + Psram_ReadId(&apMemory1604, psramId); + MSG("PSRAM ID: %02X %02X %02X %02X %02X %02X %02X %02X.\r\n", + psramId[0], psramId[1], psramId[2], psramId[3], psramId[4], psramId[5], psramId[6], psramId[7]); + + Psram_Cache_Write_Set(&apMemory1604, SF_CTRL_QIO_MODE, DISABLE, ENABLE, ENABLE); + L1C_Cache_Enable_Set(0x0f); +} + +/****************************************************************************/ /** + * @brief Image sensor initialization + * + * @param mjpegEn: Enable or disable mjpeg + * @param camCfg: CAM configuration structure pointer + * @param mjpegCfg: MJPEG configuration structure pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type Image_Sensor_Init(BL_Fun_Type mjpegEn, CAM_CFG_Type *camCfg, MJPEG_CFG_Type *mjpegCfg) +{ + /* Gpio init */ + CAM_GPIO_Init(); + I2C_GPIO_Init(); + + /* Set clock */ + GLB_AHB_Slave1_Clock_Gate(DISABLE, BL_AHB_SLAVE1_I2C); + GLB_AHB_Slave1_Clock_Gate(DISABLE, BL_AHB_SLAVE1_CAM); + GLB_AHB_Slave1_Clock_Gate(DISABLE, BL_AHB_SLAVE1_MJPEG); + GLB_Set_I2C_CLK(1, 9); + GLB_Set_CAM_CLK(ENABLE, GLB_CAM_CLK_DLL96M, 3); + GLB_SWAP_EMAC_CAM_Pin(GLB_EMAC_CAM_PIN_CAM); + + if (CAM_Read_ID() != SUCCESS) + { + return ERROR; + } + if (CAM_Reg_Config() != SUCCESS) + { + return ERROR; + } + CAM_Disable(); + MJPEG_Disable(); + + if (mjpegEn) + { + CAM_Init(camCfg); + MJPEG_Init(mjpegCfg); + MJPEG_Enable(); + } + else + { + CAM_Init(camCfg); + } + + CAM_Enable(); + + return SUCCESS; +} + +/****************************************************************************/ /** + * @brief Get one camera frame in interleave mode + * + * @param pic: Pointer of picture start address + * @param len: Length of picture + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type Image_Sensor_CAM_Get_Interleave(uint8_t **pic, uint32_t *len) +{ + CAM_Interleave_Frame_Info info; + BL702_MemSet(&info, 0, sizeof(info)); + + CAM_Interleave_Get_Frame_Info(&info); + + if (info.validFrames == 0) + { + return ERROR; + } + + *pic = (uint8_t *)(info.curFrameAddr); + *len = info.curFrameBytes; + + return SUCCESS; +} + +/****************************************************************************/ /** + * @brief Get one camera frame in planar mode + * + * @param yuv: YUV mode + * @param picYY: Pointer of picture YY data start address(YUYV) + * @param lenYY: Length of picture YY data + * @param picUV: Pointer of picture UV data start address(YUYV) + * @param lenUV: Length of picture UV data + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type Image_Sensor_CAM_Get_Planar(CAM_YUV_Mode_Type yuv, uint8_t **picYY, uint32_t *lenYY, uint8_t **picUV, uint32_t *lenUV) +{ + CAM_Planar_Frame_Info info; + BL702_MemSet(&info, 0, sizeof(info)); + + CAM_Planar_Get_Frame_Info(&info); + + if (yuv == CAM_YUV400_EVEN || yuv == CAM_YUV400_ODD) + { + if (info.validFrames0 == 0 && info.validFrames1 == 0) + { + return ERROR; + } + } + else + { + if (info.validFrames0 == 0 || info.validFrames1 == 0) + { + return ERROR; + } + } + + *picYY = (uint8_t *)(info.curFrameAddr0); + *lenYY = info.curFrameBytes0; + *picUV = (uint8_t *)(info.curFrameAddr1); + *lenUV = info.curFrameBytes1; + + return SUCCESS; +} + +/****************************************************************************/ /** + * @brief Get available count0 of camera frames + * + * @param None + * + * @return Frames count + * +*******************************************************************************/ +uint8_t Image_Sensor_CAM_Frame_Count0(void) +{ + return CAM_Get_Frame_Count_0(); +} + +/****************************************************************************/ /** + * @brief Get available count1 of camera frames + * + * @param None + * + * @return Frames count + * +*******************************************************************************/ +uint8_t Image_Sensor_CAM_Frame_Count1(void) +{ + return CAM_Get_Frame_Count_1(); +} + +/****************************************************************************/ /** + * @brief Pop one camera frame in interleave mode + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Image_Sensor_CAM_Release_Interleave(void) +{ + CAM_Interleave_Pop_Frame(); +} + +/****************************************************************************/ /** + * @brief Pop one camera frame in planar mode + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Image_Sensor_CAM_Release_Planar(void) +{ + CAM_Planar_Pop_Frame(); +} + +/****************************************************************************/ /** + * @brief Open camera function + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Image_Sensor_CAM_Open(void) +{ + CAM_Enable(); +} + +/****************************************************************************/ /** + * @brief Close camera function + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Image_Sensor_CAM_Close(void) +{ + CAM_Disable(); +} + +/****************************************************************************/ /** + * @brief Deinit camera module + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Image_Sensor_CAM_Deinit(void) +{ + CAM_Deinit(); +} + +/****************************************************************************/ /** + * @brief Get one mjpeg frame + * + * @param pic: Pointer of picture start address + * @param len: Length of picture + * @param q: Quantization + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type Image_Sensor_MJPEG_Get(uint8_t **pic, uint32_t *len, uint8_t *q) +{ + MJPEG_Frame_Info info; + BL702_MemSet(&info, 0, sizeof(info)); + + MJPEG_Get_Frame_Info(&info); + + if (info.validFrames == 0) + { + return ERROR; + } + + *pic = (uint8_t *)(info.curFrameAddr); + *len = info.curFrameBytes; + *q = info.curFrameQ; + + return SUCCESS; +} + +/****************************************************************************/ /** + * @brief Get available count of mjpeg frames + * + * @param None + * + * @return Frames count + * +*******************************************************************************/ +uint8_t Image_Sensor_MJPEG_Frame_Count(void) +{ + return MJPEG_Get_Frame_Count(); +} + +/****************************************************************************/ /** + * @brief Pop one mjpeg frame + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Image_Sensor_MJPEG_Release(void) +{ + MJPEG_Pop_Frame(); +} + +/****************************************************************************/ /** + * @brief Open mjpeg function + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Image_Sensor_MJPEG_Open(void) +{ + MJPEG_Enable(); +} + +/****************************************************************************/ /** + * @brief Close mjpeg function + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Image_Sensor_MJPEG_Close(void) +{ + MJPEG_Disable(); +} + +/****************************************************************************/ /** + * @brief Deinit mjpeg module + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Image_Sensor_MJPEG_Deinit(void) +{ + MJPEG_Deinit(); +} + + + +// #include "hal_camera.h" +// #include "bl702_cam.h" +// #include "bl702_mjpeg.h" +// #include "bl702_i2c_gpio_sim.h" +// #include "bl702_glb.h" +// #include "bl702_config.h" + +// static void camera_gpio_init(camera_device_t *dev); +// /** +// * @brief +// * +// * @param dev +// * @param oflag +// * @return int +// */ +// int camera_open(struct device *dev, uint16_t oflag) +// { +// camera_device_t *camera_device = (camera_device_t *)dev; +// CAM_CFG_Type camCfg; +// uint32_t size; + +// GLB_AHB_Slave1_Clock_Gate(DISABLE, BL_AHB_SLAVE1_CAM); +// GLB_AHB_Slave1_Clock_Gate(DISABLE, BL_AHB_SLAVE1_MJPEG); +// camera_gpio_init(camera_device); +// GLB_Set_CAM_CLK(ENABLE, GLB_CAM_CLK_DLL96M, 3); +// GLB_SWAP_EMAC_CAM_Pin(GLB_EMAC_CAM_PIN_CAM); +// CAM_Disable(); +// MJPEG_Disable(); +// camCfg.swIntCnt = 1; +// camCfg.frameMode = camera_device->pic_format.frame_mode; +// camCfg.yuvMode = camera_device->pic_format.yuv_mode; +// camCfg.linePol = camera_device->line_pol; +// camCfg.framePol = camera_device->frame_pol; +// camCfg.camSensorMode = CAM_SENSOR_MODE_V_OR_H; +// camCfg.burstType = CAM_BURST_TYPE_INCR8; +// camCfg.waitCount = 0x40; +// size = camera_device->pic_reso_x * camera_device->pic_reso_y; +// if (camera_device->pic_format.mjpeg_enable == ENABLE) +// { +// MJPEG_CFG_Type mjpegCfg; +// camCfg.swMode = CAM_SW_MODE_AUTO; +// camCfg.memStart0 = (uint32_t)camera_device->buffer; +// camCfg.memSize0 = camera_device->pic_reso_x * 2 * 8 * 3; +// camCfg.frameSize0 = size * 2; +// camCfg.memStart1 = 0; +// camCfg.memSize1 = 0; +// camCfg.frameSize1 = 0; +// mjpegCfg.burst = MJPEG_BURST_INCR16; +// mjpegCfg.quality = camera_device->pic_format.mjpegQ; +// mjpegCfg.yuv = MJPEG_YUV422_INTERLEAVE; +// mjpegCfg.waitCount = 0x400; +// mjpegCfg.bufferMjpeg = camCfg.memStart0 + camCfg.memSize0; +// mjpegCfg.sizeMjpeg = camera_device->length - camCfg.memSize0; +// mjpegCfg.bufferCamYY = (uint32_t)camera_device->buffer; +// mjpegCfg.sizeCamYY = 3; +// mjpegCfg.bufferCamUV = 0; +// mjpegCfg.sizeCamUV = 0; +// mjpegCfg.resolutionX = camera_device->pic_reso_x; +// mjpegCfg.resolutionY = camera_device->pic_reso_y; +// mjpegCfg.bitOrderEnable = ENABLE, +// mjpegCfg.evenOrderEnable = ENABLE, +// mjpegCfg.swapModeEnable = DISABLE, +// mjpegCfg.overStopEnable = ENABLE, +// mjpegCfg.reflectDmy = DISABLE, +// mjpegCfg.verticalDmy = DISABLE, +// mjpegCfg.horizationalDmy = DISABLE, +// camera_device->picture.base1 = (uint8_t*)mjpegCfg.bufferMjpeg; +// camera_device->picture.base2 = (uint8_t *)0; +// CAM_Init(&camCfg); +// MJPEG_Init(&mjpegCfg); +// MJPEG_Enable(); +// } +// else +// { +// camCfg.swMode = CAM_SW_MODE_MANUAL; +// if (camera_device->pic_format.frame_mode == CAMERA_INTERLEAVE_MODE) +// { +// camCfg.memStart0 = (uint32_t)camera_device->buffer; +// camCfg.memSize0 = camera_device->length; +// camCfg.memStart1 = 0; +// camCfg.memSize1 = 0; +// camCfg.frameSize1 = 0; +// switch (camera_device->pic_format.yuv_mode) +// { +// case CAMERA_YUV422: +// camCfg.frameSize0 = size * 2; +// break; +// case CAMERA_YUV420_EVEN: +// camCfg.frameSize0 = size * 2 * 3 / 4; +// break; +// case CAMERA_YUV420_ODD: +// camCfg.frameSize0 = size * 2 * 3 / 4; +// break; +// case CAMERA_YUV400_EVEN: +// camCfg.frameSize0 = size; +// break; +// case CAMERA_YUV400_ODD: +// camCfg.frameSize0 = size; +// break; +// default: +// break; +// } +// camera_device->picture.base1 = (uint8_t *)camCfg.memStart0; +// camera_device->picture.base2 = (uint8_t *)0; +// } +// else +// { +// camCfg.memStart0 = (uint32_t)camera_device->buffer; +// camCfg.memSize0 = camera_device->length / 2; +// camCfg.memStart1 = (uint32_t)camera_device->buffer + camera_device->length / 2; +// camCfg.memSize1 = camera_device->length / 2; +// camCfg.frameSize1 = size; +// switch (camera_device->pic_format.yuv_mode) +// { +// case CAMERA_YUV422: +// camCfg.frameSize0 = size; +// break; +// case CAMERA_YUV420_EVEN: +// camCfg.frameSize0 = size / 2; +// break; +// case CAMERA_YUV420_ODD: +// camCfg.frameSize0 = size / 2; +// break; +// case CAMERA_YUV400_EVEN: +// camCfg.frameSize0 = 0; +// break; +// case CAMERA_YUV400_ODD: +// camCfg.frameSize0 = 0; +// break; +// default: +// break; +// } +// camera_device->picture.base1 = (uint8_t *)camCfg.memStart0; +// camera_device->picture.base2 = (uint8_t *)camCfg.memStart1; +// } +// CAM_Init(&camCfg); +// } +// CAM_Enable(); + +// return 0; +// } + +// int camera_close(struct device *dev) +// { +// CAM_Disable(); + +// return 0; +// } + +// int camera_control(struct device *dev, int cmd, void *args) +// { +// //i2c_device_t *i2c_device = (i2c_device_t *)dev; + +// switch (cmd) +// { +// case DEVICE_CTRL_SET_INT /* constant-expression */: + +// break; +// case DEVICE_CTRL_CLR_INT /* constant-expression */: +// /* code */ +// /* Enable UART interrupt*/ + +// break; +// case DEVICE_CTRL_GET_INT /* constant-expression */: +// /* code */ +// break; +// case DEVICE_CTRL_CONFIG /* constant-expression */: +// if (args == (void *)DEVICE_CTRL_CONFIG_CAM_START) +// { + +// } +// else if (args == (void *)DEVICE_CTRL_CONFIG_CAM_STOP) +// { + +// } +// break; +// case 4 /* constant-expression */: +// /* code */ +// break; +// case 5 /* constant-expression */: +// /* code */ +// break; +// default: +// break; +// } + +// return 0; +// } + +// int camera_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size) +// { +// camera_device_t *camera_device = (camera_device_t *)dev; +// camera_picture_t *pic = buffer; + +// if(camera_device->pic_format.mjpeg_enable == ENABLE) +// { +// MJPEG_Frame_Info info = +// { +// .validFrames = 0, +// .curFrameAddr = 0, +// .curFrameBytes = 0, +// .curFrameQ = 0, +// .status = 0, +// }; +// MJPEG_Get_Frame_Info(&info); +// if (info.validFrames == 0) +// { +// return ERROR; +// } +// pic->addr1 = (uint8_t *)(info.curFrameAddr); +// pic->length1 = info.curFrameBytes; +// return SUCCESS; +// } +// else +// { +// if (camera_device->pic_format.frame_mode == CAMERA_INTERLEAVE_MODE) +// { +// CAM_Interleave_Frame_Info info = +// { +// .validFrames = 0, +// .curFrameAddr = 0, +// .curFrameBytes = 0, +// .status = 0, +// }; +// CAM_Interleave_Get_Frame_Info(&info); +// if (info.validFrames == 0) +// { +// return ERROR; +// } +// pic->addr1 = (uint8_t *)(info.curFrameAddr); +// pic->length1 = info.curFrameBytes; +// } +// else +// { +// CAM_Planar_Frame_Info info = +// { +// .validFrames0 = 0, +// .validFrames1 = 0, +// .curFrameAddr0 = 0, +// .curFrameAddr1 = 0, +// .curFrameBytes0 = 0, +// .curFrameBytes1 = 0, +// .status = 0, +// }; +// CAM_Planar_Get_Frame_Info(&info); +// if (camera_device->pic_format.yuv_mode == CAMERA_YUV400_EVEN || camera_device->pic_format.yuv_mode == CAMERA_YUV400_ODD) +// { +// if (info.validFrames0 == 0 && info.validFrames1 == 0) +// { +// return ERROR; +// } +// } +// else +// { +// if (info.validFrames0 == 0 || info.validFrames1 == 0) +// { +// return ERROR; +// } +// } +// pic->addr1 = (uint8_t *)(info.curFrameAddr0); +// pic->length1 = info.curFrameBytes0; +// pic->addr2 = (uint8_t *)(info.curFrameAddr1); +// pic->length2 = info.curFrameBytes1; +// return SUCCESS; +// } +// } +// return ERROR; +// } + +// #ifdef USING_DEVICE_OPS +// struct device_drv_ops cam_driver = +// { +// cam_open, +// cam_close, +// cam_control, +// cam_write, +// cam_read +// }; +// #endif + +// void camera_register(camera_device_t *device, const char *name, uint16_t flag) +// { +// struct device *dev; + +// dev = &(device->parent); +// #ifdef USING_DEVICE_OPS +// dev->api = &cam_driver; +// #else +// dev->open = camera_open; +// dev->close = camera_close; +// dev->control = camera_control; +// dev->write = NULL; +// dev->read = camera_read; +// #endif + +// dev->status = DEVICE_UNREGISTER; +// dev->type = DEVICE_CLASS_CAMERA; +// dev->handle = NULL; + +// device_register(dev, name, flag); +// } + +// static void camera_gpio_init(camera_device_t *dev) +// { +// GLB_GPIO_Cfg_Type cfg; + +// cfg.drive = 0; +// cfg.smtCtrl = 1; +// cfg.gpioPin = dev->pin.pclk; +// cfg.gpioFun = GPIO0_FUN_PIX_CLK; +// cfg.gpioMode = GPIO_MODE_INPUT; +// cfg.pullType = GPIO_PULL_NONE; +// GLB_GPIO_Init(&cfg); + +// cfg.drive = 0; +// cfg.smtCtrl = 1; +// cfg.gpioPin = dev->pin.vsync; +// cfg.gpioFun = GPIO1_FUN_FRAME_VLD; +// cfg.gpioMode = GPIO_MODE_INPUT; +// cfg.pullType = GPIO_PULL_NONE; +// GLB_GPIO_Init(&cfg); + +// cfg.drive = 0; +// cfg.smtCtrl = 1; +// cfg.gpioPin = dev->pin.hsync; +// cfg.gpioFun = GPIO2_FUN_LINE_VLD; +// cfg.gpioMode = GPIO_MODE_INPUT; +// cfg.pullType = GPIO_PULL_NONE; +// GLB_GPIO_Init(&cfg); + +// cfg.drive = 0; +// cfg.smtCtrl = 1; +// cfg.gpioPin = dev->pin.data0; +// cfg.gpioFun = GPIO3_FUN_PIX_DAT0; +// cfg.gpioMode = GPIO_MODE_INPUT; +// cfg.pullType = GPIO_PULL_NONE; +// GLB_GPIO_Init(&cfg); + +// cfg.drive = 0; +// cfg.smtCtrl = 1; +// cfg.gpioPin = dev->pin.data1; +// cfg.gpioFun = GPIO4_FUN_PIX_DAT1; +// cfg.gpioMode = GPIO_MODE_INPUT; +// cfg.pullType = GPIO_PULL_NONE; +// GLB_GPIO_Init(&cfg); + +// cfg.drive = 0; +// cfg.smtCtrl = 1; +// cfg.gpioPin = dev->pin.data2; +// cfg.gpioFun = GPIO5_FUN_PIX_DAT2; +// cfg.gpioMode = GPIO_MODE_INPUT; +// cfg.pullType = GPIO_PULL_NONE; +// GLB_GPIO_Init(&cfg); + +// cfg.drive = 0; +// cfg.smtCtrl = 1; +// cfg.gpioPin = dev->pin.data3; +// cfg.gpioFun = GPIO6_FUN_PIX_DAT3; +// cfg.gpioMode = GPIO_MODE_INPUT; +// cfg.pullType = GPIO_PULL_NONE; +// GLB_GPIO_Init(&cfg); + +// cfg.drive = 0; +// cfg.smtCtrl = 1; +// cfg.gpioPin = dev->pin.data4; +// cfg.gpioFun = GPIO12_FUN_PIX_DAT4; +// cfg.gpioMode = GPIO_MODE_INPUT; +// cfg.pullType = GPIO_PULL_NONE; +// GLB_GPIO_Init(&cfg); + +// cfg.drive = 0; +// cfg.smtCtrl = 1; +// cfg.gpioPin = dev->pin.data5; +// cfg.gpioFun = GPIO29_FUN_PIX_DAT5; +// cfg.gpioMode = GPIO_MODE_INPUT; +// cfg.pullType = GPIO_PULL_NONE; +// GLB_GPIO_Init(&cfg); + +// cfg.drive = 0; +// cfg.smtCtrl = 1; +// cfg.gpioPin = dev->pin.data6; +// cfg.gpioFun = GPIO30_FUN_PIX_DAT6; +// cfg.gpioMode = GPIO_MODE_INPUT; +// cfg.pullType = GPIO_PULL_NONE; +// GLB_GPIO_Init(&cfg); + +// cfg.drive = 0; +// cfg.smtCtrl = 1; +// cfg.gpioPin = dev->pin.data7; +// cfg.gpioFun = GPIO31_FUN_PIX_DAT7; +// cfg.gpioMode = GPIO_MODE_INPUT; +// cfg.pullType = GPIO_PULL_NONE; +// GLB_GPIO_Init(&cfg); + +// if(ENABLE == dev->pin.mclk_enable) +// { +// cfg.drive = 1; +// cfg.smtCtrl = 1; +// cfg.gpioPin = dev->pin.mclk; +// cfg.gpioFun = GPIO10_FUN_CAM_REF_CLK; +// cfg.gpioMode = GPIO_MODE_OUTPUT; +// cfg.pullType = GPIO_PULL_NONE; +// GLB_GPIO_Init(&cfg); +// } + +// } \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/src/hal_clock.c b/drivers/bl702_driver/hal_drv/src/hal_clock.c new file mode 100644 index 00000000..1bad61f7 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_clock.c @@ -0,0 +1,149 @@ +/** + * @file hal_clock.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "bl702_glb.h" +#include "hal_clock.h" + +void system_clock_init(void) +{ + /*select root clock*/ + GLB_Set_System_CLK(CLOCK_XTAL,BSP_ROOT_CLOCK_SOURCE-2); + /*set fclk/hclk and bclk clock*/ + GLB_Set_System_CLK_Div(BSP_HCLK_DIV,BSP_BCLK_DIV); + /* Set MTimer the same frequency as SystemCoreClock */ + GLB_Set_MTimer_CLK(1, GLB_MTIMER_CLK_BCLK, 7); +} +void peripheral_clock_init(void) +{ +#if defined(BSP_USING_UART0)||defined(BSP_USING_UART1) +#if BSP_UART_CLOCK_SOURCE == ROOT_CLOCK_SOURCE_DLL_96M + GLB_Set_UART_CLK(ENABLE,HBN_UART_CLK_96M,BSP_UART_CLOCK_DIV); +#elif BSP_UART_CLOCK_SOURCE == ROOT_CLOCK_SOURCE_DLL_FCLK + GLB_Set_UART_CLK(ENABLE,HBN_UART_CLK_FCLK,BSP_UART_CLOCK_DIV); +#endif +#endif + +#if defined(BSP_USING_I2C0) + GLB_Set_I2C_CLK(ENABLE,BSP_I2C_CLOCK_DIV); +#endif + +#if defined(BSP_USING_SPI0) + GLB_Set_SPI_CLK(ENABLE,BSP_SPI_CLOCK_DIV); +#endif + +#if defined(BSP_USING_PWM) +#if BSP_PWM_CLOCK_SOURCE == ROOT_CLOCK_SOURCE_RC_32K + +#elif BSP_PWM_CLOCK_SOURCE == ROOT_CLOCK_SOURCE_DLL_BCLK + +#elif BSP_PWM_CLOCK_SOURCE == ROOT_CLOCK_SOURCE_DLL_XCLK + +#endif +#endif + +#if defined(BSP_USING_IR) + GLB_Set_IR_CLK(ENABLE,0,BSP_IR_CLOCK_DIV); +#endif + +#if defined(BSP_USING_I2S0) + GLB_Set_Chip_Out_0_CLK_Sel(GLB_CHIP_CLK_OUT_I2S_REF_CLK); + GLB_Set_I2S_CLK(ENABLE,GLB_I2S_OUT_REF_CLK_SRC); +#endif +#if defined(BSP_USING_ADC0) +#if BSP_ADC_CLOCK_SOURCE == ROOT_CLOCK_SOURCE_AUPLL + GLB_Set_ADC_CLK(ENABLE,GLB_ADC_CLK_AUDIO_PLL,BSP_ADC_CLOCK_DIV); +#elif BSP_ADC_CLOCK_SOURCE == ROOT_CLOCK_SOURCE_DLL_XCLK + GLB_Set_ADC_CLK(ENABLE,GLB_ADC_CLK_XCLK,BSP_ADC_CLOCK_DIV); +#endif + +#endif + +#if defined(BSP_USING_DAC0) +#if BSP_ADC_CLOCK_SOURCE == ROOT_CLOCK_SOURCE_AUPLL + GLB_Set_DAC_CLK(ENABLE,GLB_ADC_CLK_AUDIO_PLL,BSP_DAC_CLOCK_DIV); +#elif BSP_ADC_CLOCK_SOURCE == ROOT_CLOCK_SOURCE_DLL_XCLK + GLB_Set_DAC_CLK(ENABLE,GLB_ADC_CLK_XCLK,BSP_DAC_CLOCK_DIV); +#endif +#endif + +#if defined(BSP_USING_USB) + GLB_Set_USB_CLK(1); +#endif + +} +uint32_t system_clock_get(enum system_clock_type type) +{ + switch (type) + { + case SYSTEM_CLOCK_ROOT_CLOCK: + return SystemCoreClockGet(); + case SYSTEM_CLOCK_FCLK: + return (SystemCoreClockGet()/(GLB_Get_HCLK_Div()+1)); + case SYSTEM_CLOCK_BCLK: + return (SystemCoreClockGet()/((GLB_Get_HCLK_Div()+1)*(GLB_Get_BCLK_Div()+1))); + case SYSTEM_CLOCK_XCLK: + return 32000000; + default: + break; + } + return 0; +} +uint32_t peripheral_clock_get(enum peripheral_clock_type type) +{ + uint32_t tmpVal; + uint32_t div; + switch (type) + { + case PERIPHERAL_CLOCK_UART: + #if defined(BSP_USING_UART0)||defined(BSP_USING_UART1) + #if BSP_UART_CLOCK_SOURCE == ROOT_CLOCK_SOURCE_DLL_96M + return 96000000; + #elif BSP_UART_CLOCK_SOURCE == ROOT_CLOCK_SOURCE_DLL_FCLK + return system_clock_get(SYSTEM_CLOCK_FCLK)/(GLB_Get_HCLK_Div()+1)); + #endif + #endif + case PERIPHERAL_CLOCK_SPI: +#if defined(BSP_USING_SPI0) +#if BSP_SPI_CLOCK_SOURCE == ROOT_CLOCK_SOURCE_DLL_BCLK + tmpVal=BL_RD_REG(GLB_BASE,GLB_CLK_CFG3); + div = BL_GET_REG_BITS_VAL(tmpVal,GLB_SPI_CLK_DIV); + return system_clock_get(SYSTEM_CLOCK_BCLK)/(div+1); +#endif +#endif + case PERIPHERAL_CLOCK_I2C: +#if defined(BSP_USING_I2C0) +#if BSP_I2C_CLOCK_SOURCE == ROOT_CLOCK_SOURCE_DLL_BCLK + tmpVal=BL_RD_REG(GLB_BASE,GLB_CLK_CFG3); + div = BL_GET_REG_BITS_VAL(tmpVal,GLB_I2C_CLK_DIV); + return system_clock_get(SYSTEM_CLOCK_BCLK)/(div+1); +#endif +#endif + case PERIPHERAL_CLOCK_I2S: + return 0; + case PERIPHERAL_CLOCK_ADC: + return 32000000; + default: + break; + } + return 0; +} \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/src/hal_dac.c b/drivers/bl702_driver/hal_drv/src/hal_dac.c new file mode 100644 index 00000000..7a43356f --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_dac.c @@ -0,0 +1,232 @@ +/** + * @file hal_dac.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_dac.h" +#include "hal_dma.h" +#include "bl702_gpio.h" +#include "bl702_dac.h" +#include "bl702_dma.h" +#include "bl702_config.h" +#include "bl702_glb.h" +#include "dac_config.h" + +dac_device_t dacx_device[] = { +#ifdef BSP_USING_DAC0 + DAC_CONFIG, +#endif +}; + +int dac_open(struct device *dev, uint16_t oflag) +{ + GLB_GPIP_DAC_ChanA_Cfg_Type chCfg; + GLB_GPIP_DAC_Cfg_Type dacCfg ; + dac_device_t *dac_device = (dac_device_t *)dev; + uint8_t dac_ext_ref_pin =0; + + if(dac_device->pin.pin_num == 2){ + GLB_GPIO_Func_Init(GPIO_FUN_ANALOG, (GLB_GPIO_Type *)&dac_device->pin.dac0, 2); + }else if(dac_device->pin.pin_num == 1){ + GLB_GPIO_Func_Init(GPIO_FUN_ANALOG, (GLB_GPIO_Type *)&dac_device->pin.dac0, 1); + }else{ + return ERROR; + } + + switch(dac_device->clk){ + case DAC_CLK_500KHZ: + PDS_Set_Audio_PLL_Freq(AUDIO_PLL_24000000_HZ); + /* 24.0000MHZ / 3 / 16 = 500KHZ*/ + GLB_Set_DAC_CLK(ENABLE,GLB_DAC_CLK_AUDIO_PLL,3); + dacCfg.div = DAC_CLK_DIV_16; + break; + case DAC_CLK_8KHZ: + /* set audio pll as 12.288MHZ*/ + PDS_Set_Audio_PLL_Freq(AUDIO_PLL_12288000_HZ); + /* 12.2880MHZ / 24 / 64 = 8KHZ*/ + GLB_Set_DAC_CLK(ENABLE,GLB_DAC_CLK_AUDIO_PLL,24); + dacCfg.div = DAC_CLK_DIV_64; + case DAC_CLK_16KHZ: + /* set audio pll as 12.288MHZ*/ + PDS_Set_Audio_PLL_Freq(AUDIO_PLL_12288000_HZ); + /* 12.2880MHZ / 24 / 32 = 16KHZ*/ + GLB_Set_DAC_CLK(ENABLE,GLB_DAC_CLK_AUDIO_PLL,24); + dacCfg.div = DAC_CLK_DIV_32; + case DAC_CLK_44P1KHZ: + /* set audio pll as 11.2896MHZ*/ + PDS_Set_Audio_PLL_Freq(AUDIO_PLL_11289600_HZ); + /* 11.2896MHZ / 16 / 16 = 44.1KHZ*/ + GLB_Set_DAC_CLK(ENABLE,GLB_DAC_CLK_AUDIO_PLL,16); + dacCfg.div = DAC_CLK_DIV_16; + break; + default : break; + } + + if(DAC_REF_SEL == GLB_DAC_REF_SEL_EXTERNAL){ + dac_ext_ref_pin = DAC_EXT_REF_GPIO; + dacCfg.refSel = GLB_DAC_REF_SEL_EXTERNAL; + GLB_GPIO_Func_Init(GPIO_FUN_ANALOG, (GLB_GPIO_Type *)&dac_ext_ref_pin, 1); + }else{ + dacCfg.refSel = GLB_DAC_REF_SEL_INTERNAL; + } + + if (oflag & DEVICE_OFLAG_STREAM_TX){ + dacCfg.dmaEn=DISABLE; + dacCfg.resetChanA = ENABLE; + dacCfg.resetChanB = ENABLE; + dacCfg.dmaFmt = GPIP_DAC_DMA_FORMAT_0; + + chCfg.chanCovtEn = ENABLE; + chCfg.outputEn = ENABLE; + chCfg.chanEn = ENABLE; + chCfg.src = GPIP_DAC_ChanA_SRC_REG; + + GLB_GPIP_DAC_Init(&dacCfg); + GLB_GPIP_DAC_Set_ChanA_Config(&chCfg); + GLB_GPIP_DAC_Set_ChanB_Config((GLB_GPIP_DAC_ChanB_Cfg_Type *)&chCfg); + + }else if(oflag & DEVICE_OFLAG_DMA_TX){ + dacCfg.dmaEn=ENABLE; + dacCfg.resetChanA = ENABLE; + dacCfg.resetChanB = ENABLE; + if(dac_device->pin.pin_num == 2){ + dacCfg.dmaFmt = GPIP_DAC_DMA_FORMAT_1; + }else{ + dacCfg.dmaFmt = GPIP_DAC_DMA_FORMAT_0; + } + + chCfg.chanCovtEn = ENABLE; + chCfg.outputEn = ENABLE; + chCfg.chanEn = ENABLE; + chCfg.src = GPIP_DAC_ChanA_SRC_DMA; + + GLB_GPIP_DAC_Init(&dacCfg); + GLB_GPIP_DAC_Set_ChanA_Config(&chCfg); + GLB_GPIP_DAC_Set_ChanB_Config((GLB_GPIP_DAC_ChanB_Cfg_Type *)&chCfg); + + GPIP_Set_DAC_DMA_TX_FORMAT_SEL(dacCfg.dmaFmt); + GPIP_Set_DAC_DMA_TX_Enable(); + + }else{ + + } + + return 0; +} +int dac_close(struct device *dev) +{ + return 0; +} +int dac_control(struct device *dev, int cmd, void *args) +{ + dac_device_t *dac_device = (dac_device_t *)dev; + switch (cmd) + { + case DEVICE_CTRL_SET_INT /* constant-expression */: + + break; + case DEVICE_CTRL_CLR_INT /* constant-expression */: + + break; + case DEVICE_CTRL_GET_INT /* constant-expression */: + /* code */ + break; + case DEVICE_CTRL_CONFIG /* constant-expression */: + /* code */ + break; + case DEVICE_CTRL_RESUME /* constant-expression */: + + break; + case DEVICE_CTRL_SUSPEND /* constant-expression */: + + break; + case DEVICE_CTRL_DAC_ATTACH_TX_DMA /* constant-expression */: + dac_device->tx_dma = (struct device *)args; + break; + default: + break; + } + + return 0; +} +int dac_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size) +{ + dac_channel_t channel = (dac_channel_t)pos; + dac_device_t *dac_device = (dac_device_t *)dev; + uint32_t i=0; + + if (dev->oflag & DEVICE_OFLAG_DMA_TX) + { + struct device *dma_ch = (struct device *)dac_device->tx_dma; + + if (!dma_ch) + return -1; + + dma_reload(dma_ch, (uint32_t)buffer, (uint32_t)DMA_ADDR_DAC_TDR, size); + dma_channel_start(dma_ch); + + } + if (dev->oflag & DEVICE_OFLAG_STREAM_TX){ + if(channel==DAC_CHANNEL_0){ + for(i=0;iopen = dac_open; + dev->close = dac_close; + dev->control = dac_control; + dev->write = dac_write; + dev->read = NULL; + + dev->status = DEVICE_UNREGISTER; + dev->type = DEVICE_CLASS_ADC; + dev->handle = NULL; + + device_register(dev, name, flag); + + return 0; +} diff --git a/drivers/bl702_driver/hal_drv/src/hal_dma.c b/drivers/bl702_driver/hal_drv/src/hal_dma.c new file mode 100644 index 00000000..f230df6f --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_dma.c @@ -0,0 +1,477 @@ +/** + * @file hal_dma.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_dma.h" +#include "drv_mmheap.h" +#include "bl702_dma.h" + +dma_control_data_t dma_ctrl_cfg; + +void DMA0_IRQ(void); + +dma_device_t dmax_device[DMA_MAX_INDEX] = +{ +#ifdef BSP_USING_DMA0_CH0 + DMA0_CH0_CONFIG, +#endif +#ifdef BSP_USING_DMA0_CH1 + DMA0_CH1_CONFIG, +#endif +#ifdef BSP_USING_DMA0_CH2 + DMA0_CH2_CONFIG, +#endif +#ifdef BSP_USING_DMA0_CH3 + DMA0_CH3_CONFIG, +#endif +#ifdef BSP_USING_DMA0_CH4 + DMA0_CH4_CONFIG, +#endif +#ifdef BSP_USING_DMA0_CH5 + DMA0_CH5_CONFIG, +#endif +#ifdef BSP_USING_DMA0_CH6 + DMA0_CH6_CONFIG, +#endif +#ifdef BSP_USING_DMA0_CH7 + DMA0_CH7_CONFIG, +#endif +}; +/** + * @brief + * + * @param dev + * @param oflag + * @return int + */ +int dma_open(struct device *dev, uint16_t oflag) +{ + dma_device_t *dma_device = (dma_device_t *)dev; + + DMA_LLI_Cfg_Type lliCfg; + + /* Disable all interrupt */ + DMA_IntMask(dma_device->ch, DMA_INT_ALL, MASK); + /* Enable uart interrupt*/ + NVIC_DisableIRQ(DMA_ALL_IRQn); + + DMA_Disable(); + + DMA_Channel_Disable(dma_device->ch); + + lliCfg.dir = dma_device->direction; + lliCfg.srcPeriph = dma_device->src_req; + lliCfg.dstPeriph = dma_device->dst_req; + + DMA_LLI_Init(dma_device->ch, &lliCfg); + + dma_ctrl_cfg.bits.fix_cnt = 0; + dma_ctrl_cfg.bits.dst_min_mode = 0; + dma_ctrl_cfg.bits.dst_add_mode = 0; + + DMA_Enable(); + + Interrupt_Handler_Register(DMA_ALL_IRQn, DMA0_IRQ); + + return 0; +} +/** + * @brief + * + * @param dev + * @param cmd + * @param args + * @return int + */ +int dma_control(struct device *dev, int cmd, void *args) +{ + dma_device_t *dma_device = (dma_device_t *)dev; + + switch (cmd) + { + case DEVICE_CTRL_SET_INT /* constant-expression */: + /* Dma interrupt configuration */ + DMA_IntMask(dma_device->ch, DMA_INT_TCOMPLETED, UNMASK); + DMA_IntMask(dma_device->ch, DMA_INT_ERR, UNMASK); + + /* Enable uart interrupt*/ + NVIC_EnableIRQ(DMA_ALL_IRQn); + break; + case DEVICE_CTRL_CLR_INT /* constant-expression */: + /* Dma interrupt configuration */ + DMA_IntMask(dma_device->ch, DMA_INT_TCOMPLETED, MASK); + DMA_IntMask(dma_device->ch, DMA_INT_ERR, MASK); + + /* Enable uart interrupt*/ + NVIC_DisableIRQ(DMA_ALL_IRQn); + break; + case DEVICE_CTRL_GET_INT /* constant-expression */: + /* code */ + break; + case DEVICE_CTRL_CONFIG /* constant-expression */: + { + dma_ctrl_param_t *cfg = (dma_ctrl_param_t *)args; + DMA_LLI_Cfg_Type lliCfg; + + lliCfg.dir = cfg->direction; + lliCfg.srcPeriph = cfg->src_req; + lliCfg.dstPeriph = cfg->dst_req; + + DMA_LLI_Init(dma_device->ch, &lliCfg); + + break; + } + case DMA_CHANNEL_UPDATE_CMD: + DMA_LLI_Update(dma_device->ch, (uint32_t)args); + break; + case DMA_CHANNEL_GET_STATUS_CMD /* constant-expression */: + return DMA_Channel_Is_Busy(dma_device->ch); + case DMA_CHANNEL_START_CMD /* constant-expression */: + DMA_Channel_Enable(dma_device->ch); + break; + case DMA_CHANNEL_STOP_CMD /* constant-expression */: + DMA_Channel_Disable(dma_device->ch); + break; + default: + break; + } + + return 0; +} +/** + * @brief + * + * @param dev + * @return int + */ +int dma_close(struct device *dev) +{ + DMA_Disable(); + return 0; +} + +int dma_register(enum dma_index_type index, const char *name, uint16_t flag) +{ + struct device *dev; + + if (DMA_MAX_INDEX == 0) + return -DEVICE_EINVAL; + + dev = &(dmax_device[index].parent); + + dev->open = dma_open; + dev->close = dma_close; + dev->control = dma_control; + // dev->write = dma_write; + // dev->read = dma_read; + + dev->status = DEVICE_UNREGISTER; + dev->type = DEVICE_CLASS_DMA; + dev->handle = NULL; + + return device_register(dev, name, flag); +} + +static BL_Err_Type dma_scan_unregister_device(uint8_t * allocate_index){ + struct device *dev; + dlist_t *node; + uint8_t dma_index=0; + uint32_t dma_handle[DMA_MAX_INDEX]; + + for(dma_index = 0;dma_indextype == DEVICE_CLASS_DMA){ + dma_handle[(((uint32_t)dev - (uint32_t)dmax_device) / sizeof(dma_device_t)) % DMA_MAX_INDEX] = SET; + } + } + + for(dma_index = 0;dma_indexopen = dma_open; + dev->close = dma_close; + dev->control = dma_control; + // dev->write = dma_write; + // dev->read = dma_read; + + dev->status = DEVICE_UNREGISTER; + dev->type = DEVICE_CLASS_DMA; + dev->handle = NULL; + + return device_register(dev, name, flag); +} + +/** + * @brief + * + * @param dev + * @param src_addr + * @param dst_addr + * @param transfer_size + * @return int + */ +int dma_reload(struct device *dev, uint32_t src_addr, uint32_t dst_addr, uint32_t transfer_size) +{ + uint32_t malloc_count; + uint32_t remain_len; + uint32_t actual_transfer_len = 0; + uint32_t actual_transfer_offset = 0; + + dma_device_t *dma_device = (dma_device_t *)dev; + + DMA_Channel_Disable(dma_device->ch); + + if (dma_device->direction == DMA_MEMORY_TO_MEMORY) + { + dma_ctrl_cfg.bits.SI = 1; + dma_ctrl_cfg.bits.DI = 1; + } + else if (dma_device->direction == DMA_MEMORY_TO_PERIPH) + { + dma_ctrl_cfg.bits.SI = 1; + dma_ctrl_cfg.bits.DI = 0; + } + else if (dma_device->direction == DMA_PERIPH_TO_MEMORY) + { + dma_ctrl_cfg.bits.SI = 0; + dma_ctrl_cfg.bits.DI = 1; + } + else if (dma_device->direction == DMA_PERIPH_TO_PERIPH) + { + dma_ctrl_cfg.bits.SI = 0; + dma_ctrl_cfg.bits.DI = 0; + } + + dma_ctrl_cfg.bits.SBSize = dma_device->src_burst_size; + dma_ctrl_cfg.bits.DBSize = dma_device->dst_burst_size; + dma_ctrl_cfg.bits.SWidth = dma_device->src_width; + dma_ctrl_cfg.bits.DWidth = dma_device->dst_width; + + if (dma_device->src_width == DMA_TRANSFER_WIDTH_8BIT) + { + actual_transfer_offset = 4095; + actual_transfer_len = transfer_size; + } + else if (dma_device->src_width == DMA_TRANSFER_WIDTH_16BIT) + { + if (transfer_size % 2) + return -1; + + actual_transfer_offset = (4095 * 2); + actual_transfer_len = transfer_size/2; + } + else if (dma_device->src_width == DMA_TRANSFER_WIDTH_32BIT) + { + if (transfer_size % 4) + return -1; + + actual_transfer_offset = (4095 * 4); + actual_transfer_len = transfer_size/4; + } + + malloc_count = actual_transfer_len / 4095; + remain_len = actual_transfer_len % 4095; + + if (remain_len) + { + malloc_count++; + } + + if(dma_device->lli_cfg) + { + mmheap_free(dma_device->lli_cfg); + dma_device->lli_cfg = (dma_lli_ctrl_t *)mmheap_alloc(sizeof(dma_lli_ctrl_t) * malloc_count); + } + else + { + dma_device->lli_cfg = (dma_lli_ctrl_t *)mmheap_alloc(sizeof(dma_lli_ctrl_t) * malloc_count); + } + + if (dma_device->lli_cfg) + { + /*transfer_size will be 4095 or 4095*2 or 4095*4 in different transfer width*/ + if ((!remain_len) && (malloc_count == 1)) + { + dma_device->lli_cfg[0].src_addr = src_addr; + dma_device->lli_cfg[0].dst_addr = dst_addr; + dma_device->lli_cfg[0].nextlli = 0; + dma_ctrl_cfg.bits.TransferSize = remain_len; + dma_ctrl_cfg.bits.I = 1; + memcpy(&dma_device->lli_cfg[0].cfg, &dma_ctrl_cfg, sizeof(dma_control_data_t)); + } + /*transfer_size will be 4095*n or 4095*2*n or 4095*4*n,(n>1) in different transfer width*/ + else if ((!remain_len) && (malloc_count > 1)) + { + for (uint32_t i = 0; i < malloc_count; i++) + { + dma_device->lli_cfg[i].src_addr = src_addr; + dma_device->lli_cfg[i].dst_addr = dst_addr; + dma_device->lli_cfg[i].nextlli = 0; + + dma_ctrl_cfg.bits.TransferSize = 4095; + dma_ctrl_cfg.bits.I = 0; + if (dma_ctrl_cfg.bits.SI) + src_addr += actual_transfer_offset; + if (dma_ctrl_cfg.bits.DI) + dst_addr += actual_transfer_offset; + + if (i == malloc_count - 1) + { + dma_ctrl_cfg.bits.I = 1; + + if (dma_device->transfer_mode == DMA_LLI_CYCLE_MODE) + dma_device->lli_cfg[i].nextlli = (uint32_t)&dma_device->lli_cfg[0]; + } + if (i) + { + dma_device->lli_cfg[i - 1].nextlli = (uint32_t)&dma_device->lli_cfg[i]; + } + memcpy(&dma_device->lli_cfg[i].cfg, &dma_ctrl_cfg, sizeof(dma_control_data_t)); + } + } + else + { + for (uint32_t i = 0; i < malloc_count; i++) + { + dma_device->lli_cfg[i].src_addr = src_addr; + dma_device->lli_cfg[i].dst_addr = dst_addr; + dma_device->lli_cfg[i].nextlli = 0; + + dma_ctrl_cfg.bits.TransferSize = 4095; + dma_ctrl_cfg.bits.I = 0; + if (dma_ctrl_cfg.bits.SI) + src_addr += actual_transfer_offset; + if (dma_ctrl_cfg.bits.DI) + dst_addr += actual_transfer_offset; + + if (i == malloc_count - 1) + { + dma_ctrl_cfg.bits.TransferSize = remain_len; + dma_ctrl_cfg.bits.I = 1; + + if (dma_device->transfer_mode == DMA_LLI_CYCLE_MODE) + dma_device->lli_cfg[i].nextlli = (uint32_t)&dma_device->lli_cfg[0]; + + } + if (i) + { + dma_device->lli_cfg[i - 1].nextlli = (uint32_t)&dma_device->lli_cfg[i]; + } + memcpy(&dma_device->lli_cfg[i].cfg, &dma_ctrl_cfg, sizeof(dma_control_data_t)); + } + } + DMA_LLI_Update(dma_device->ch, (uint32_t)dma_device->lli_cfg); + } + else + { + return -2; + } + + return 0; +} +/** + * @brief + * + * @param handle + */ +void dma_isr(dma_device_t *handle) +{ + uint32_t tmpVal; + uint32_t intClr; + + /* Get DMA register */ + if (handle->id == 0) + { + uint32_t DMAChs = DMA_BASE; + for (uint8_t i = 0; i < DMA_CH_MAX; i++) + { + tmpVal = BL_RD_REG(DMAChs, DMA_INTTCSTATUS); + if ((BL_GET_REG_BITS_VAL(tmpVal, DMA_INTTCSTATUS) & (1 << handle[i].ch)) != 0) + { + /* Clear interrupt */ + tmpVal = BL_RD_REG(DMAChs, DMA_INTTCCLEAR); + intClr = BL_GET_REG_BITS_VAL(tmpVal, DMA_INTTCCLEAR); + intClr |= (1 << handle[i].ch); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_INTTCCLEAR, intClr); + BL_WR_REG(DMAChs, DMA_INTTCCLEAR, tmpVal); + + if (handle[i].parent.callback) + handle[i].parent.callback(&handle[i].parent, NULL, 0, DMA_INT_TCOMPLETED); + } + } + + for (uint8_t i = 0; i < DMA_CH_MAX; i++) + { + tmpVal = BL_RD_REG(DMAChs, DMA_INTERRORSTATUS); + if ((BL_GET_REG_BITS_VAL(tmpVal, DMA_INTERRORSTATUS) & (1 << handle[i].ch)) != 0) + { + /*Clear interrupt */ + tmpVal = BL_RD_REG(DMAChs, DMA_INTERRCLR); + intClr = BL_GET_REG_BITS_VAL(tmpVal, DMA_INTERRCLR); + intClr |= (1 << handle[i].ch); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_INTERRCLR, intClr); + BL_WR_REG(DMAChs, DMA_INTERRCLR, tmpVal); + + if (handle[i].parent.callback) + handle[i].parent.callback(&handle->parent, NULL, 0, DMA_INT_ERR); + } + } + } + else + { + } +} +/** + * @brief + * + */ +void DMA0_IRQ(void) +{ + dma_isr(&dmax_device[0]); +} diff --git a/drivers/bl702_driver/hal_drv/src/hal_gpio.c b/drivers/bl702_driver/hal_drv/src/hal_gpio.c new file mode 100644 index 00000000..d6f7c52d --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_gpio.c @@ -0,0 +1,205 @@ +/** + * @file hal_gpio.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "bl702_glb.h" +#include "bl702_gpio.h" +#include "hal_gpio.h" + +gpio_device_t gpio_device; +/** + * @brief + * + * @param pin + * @param mode + */ +void gpio_set_mode(uint32_t pin, uint32_t mode) +{ + GLB_GPIO_Cfg_Type gpio_cfg; + + gpio_cfg.gpioFun = GPIO_FUN_GPIO; + gpio_cfg.gpioPin = pin; + gpio_cfg.drive = 0; + gpio_cfg.smtCtrl = 1; + switch (mode) + { + case GPIO_OUTPUT_MODE: + gpio_cfg.gpioMode = GPIO_MODE_OUTPUT; + gpio_cfg.pullType = GPIO_PULL_NONE; + break; + case GPIO_OUTPUT_PP_MODE: + gpio_cfg.gpioMode = GPIO_MODE_OUTPUT; + gpio_cfg.pullType = GPIO_PULL_UP; + break; + case GPIO_OUTPUT_PD_MODE: + gpio_cfg.gpioMode = GPIO_MODE_OUTPUT; + gpio_cfg.pullType = GPIO_PULL_DOWN; + break; + case GPIO_INPUT_MODE: + gpio_cfg.gpioMode = GPIO_MODE_INPUT; + gpio_cfg.pullType = GPIO_PULL_NONE; + break; + case GPIO_INPUT_PP_MODE: + gpio_cfg.gpioMode = GPIO_MODE_INPUT; + gpio_cfg.pullType = GPIO_PULL_UP; + break; + case GPIO_INPUT_PD_MODE: + gpio_cfg.gpioMode = GPIO_MODE_INPUT; + gpio_cfg.pullType = GPIO_PULL_DOWN; + break; + default: + NVIC_DisableIRQ(GPIO_INT0_IRQn); + GLB_GPIO_IntMask(pin, MASK); + + gpio_cfg.gpioMode = GPIO_MODE_INPUT; + + GLB_GPIO_INT0_IRQHandler_Install(); + if (mode == GPIO_ASYNC_RISING_TRIGER_INT_MODE) + { + gpio_cfg.pullType = GPIO_PULL_DOWN; + GLB_Set_GPIO_IntMod(pin, GLB_GPIO_INT_CONTROL_ASYNC, GLB_GPIO_INT_TRIG_POS_PULSE); + } + + else if (mode == GPIO_ASYNC_FALLING_TRIGER_INT_MODE) + { + gpio_cfg.pullType = GPIO_PULL_UP; + GLB_Set_GPIO_IntMod(pin, GLB_GPIO_INT_CONTROL_ASYNC, GLB_GPIO_INT_TRIG_NEG_PULSE); + } + + else if (mode == GPIO_ASYNC_HIGH_LEVEL_INT_MODE) + { + gpio_cfg.pullType = GPIO_PULL_DOWN; + GLB_Set_GPIO_IntMod(pin, GLB_GPIO_INT_CONTROL_ASYNC, GLB_GPIO_INT_TRIG_POS_LEVEL); + } + + else if (mode == GPIO_ASYNC_LOW_LEVEL_INT_MODE) + { + gpio_cfg.pullType = GPIO_PULL_UP; + GLB_Set_GPIO_IntMod(pin, GLB_GPIO_INT_CONTROL_ASYNC, GLB_GPIO_INT_TRIG_NEG_LEVEL); + } + + else if (mode == GPIO_SYNC_RISING_TRIGER_INT_MODE) + { + gpio_cfg.pullType = GPIO_PULL_DOWN; + GLB_Set_GPIO_IntMod(pin, GLB_GPIO_INT_CONTROL_SYNC, GLB_GPIO_INT_TRIG_POS_PULSE); + } + + else if (mode == GPIO_SYNC_FALLING_TRIGER_INT_MODE) + { + gpio_cfg.pullType = GPIO_PULL_UP; + GLB_Set_GPIO_IntMod(pin, GLB_GPIO_INT_CONTROL_SYNC, GLB_GPIO_INT_TRIG_NEG_PULSE); + } + + else if (mode == GPIO_SYNC_HIGH_LEVEL_INT_MODE) + { + gpio_cfg.pullType = GPIO_PULL_DOWN; + GLB_Set_GPIO_IntMod(pin, GLB_GPIO_INT_CONTROL_SYNC, GLB_GPIO_INT_TRIG_POS_LEVEL); + } + + else if (mode == GPIO_SYNC_LOW_LEVEL_INT_MODE) + { + gpio_cfg.pullType = GPIO_PULL_UP; + GLB_Set_GPIO_IntMod(pin, GLB_GPIO_INT_CONTROL_SYNC, GLB_GPIO_INT_TRIG_NEG_LEVEL); + } + + else + return; + NVIC_EnableIRQ(GPIO_INT0_IRQn); + break; + + } + GLB_GPIO_Init(&gpio_cfg); +} +/** + * @brief + * + * @param pin + * @param value + */ +void gpio_write(uint32_t pin, uint32_t value) +{ + GLB_GPIO_Write(pin, value); +} +/** + * @brief + * + * @param pin + */ +void gpio_toggle(uint32_t pin) +{ + +} +/** + * @brief + * + * @param pin + * @return int + */ +int gpio_read(uint32_t pin) +{ + return GLB_GPIO_Read(pin); +} +/** + * @brief + * + * @param pin + * @param cbFun + */ +void gpio_attach_irq(uint32_t pin, void (*cbFun)(void)) +{ + GLB_GPIO_INT0_Callback_Install(pin, cbFun); +} +/** + * @brief + * + * @param pin + * @param enabled + */ +void gpio_irq_enable(uint32_t pin, uint8_t enabled) +{ + if (enabled) + { + GLB_GPIO_IntMask(pin, UNMASK); + } + else + { + GLB_GPIO_IntMask(pin, MASK); + } + +} + +void pin_register(const char *name, uint16_t flag) +{ + struct device *dev; + dev = &(gpio_device.parent); + + dev->open = NULL; + dev->close = NULL; + dev->control = NULL; + dev->write = NULL; + dev->read = NULL; + + dev->status = DEVICE_UNREGISTER; + dev->type = DEVICE_CLASS_GPIO; + dev->handle = NULL; + + device_register(dev, name, flag); +} \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/src/hal_i2c.c b/drivers/bl702_driver/hal_drv/src/hal_i2c.c new file mode 100644 index 00000000..aaa38cbe --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_i2c.c @@ -0,0 +1,188 @@ +/** + * @file hal_i2c.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_i2c.h" +#include "hal_gpio.h" +#include "bl702_i2c.h" +#include "bl702_i2c_gpio_sim.h" +#include "bl702_glb.h" + +i2c_device_t i2cx_device[I2C_MAX_INDEX] = +{ +#ifdef BSP_USING_I2C0 + I2C0_CONFIG, +#endif +#ifdef BSP_USING_I2C1 + I2C1_CONFIG, +#endif +}; +/** + * @brief + * + * @param dev + * @param oflag + * @return int + */ +int i2c_open(struct device *dev, uint16_t oflag) +{ + i2c_device_t *i2c_device = (i2c_device_t *)dev; + + if (i2c_device->mode == I2C_HW_MODE) + { + I2C_SetPrd(i2c_device->id, i2c_device->phase); + } + return 0; +} + +// int i2c_close(struct device *dev) +// { + +// return 0; +// } + +// int i2c_control(struct device *dev, int cmd, void *args) +// { +// //i2c_device_t *i2c_device = (i2c_device_t *)dev; + +// switch (cmd) +// { +// case DEVICE_CTRL_SET_INT /* constant-expression */: + +// break; +// case DEVICE_CTRL_CLR_INT /* constant-expression */: +// /* code */ +// /* Enable UART interrupt*/ + +// break; +// case DEVICE_CTRL_GET_INT /* constant-expression */: +// /* code */ +// break; +// case DEVICE_CTRL_CONFIG /* constant-expression */: +// /* code */ +// break; +// case 4 /* constant-expression */: +// /* code */ +// break; +// case 5 /* constant-expression */: +// /* code */ +// break; +// default: +// break; +// } + +// return 0; +// } +// int i2c_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size) +// { + +// return 0; +// } +// int i2c_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size) +// { + +// return 0; +// } +/** + * @brief + * + * @param index + * @param name + * @param flag + * @return int + */ +int i2c_register(enum i2c_index_type index, const char *name, uint16_t flag) +{ + struct device *dev; + + if (I2C_MAX_INDEX == 0) + return -DEVICE_EINVAL; + + dev = &(i2cx_device[index].parent); + + dev->open = i2c_open; + dev->close = NULL; + dev->control = NULL; + dev->write = NULL; + dev->read = NULL; + + dev->status = DEVICE_UNREGISTER; + dev->type = DEVICE_CLASS_I2C; + dev->handle = NULL; + + return device_register(dev, name, flag); +} +/** + * @brief + * + * @param dev + * @param msgs + * @param num + * @return uint32_t + */ +uint32_t i2c_transfer(struct device *dev, i2c_msg_t msgs[], uint32_t num) +{ + i2c_msg_t *msg; + I2C_Transfer_Cfg i2cCfg; + + i2c_device_t *i2c_device = (i2c_device_t *)dev; + + if (i2c_device->mode == I2C_HW_MODE) + { + for (uint32_t i = 0; i < num; i++) + { + msg = &msgs[i]; + i2cCfg.slaveAddr = msg->slaveaddr; + i2cCfg.stopEveryByte = DISABLE; + i2cCfg.subAddr = msg->subaddr; + i2cCfg.dataSize = msg->len; + i2cCfg.data = msg->buf; + + if (msg->flags & SUB_ADDR_0BYTE) + { + i2cCfg.subAddrSize = 0; + } + else if (msg->flags & SUB_ADDR_1BYTE) + { + i2cCfg.subAddrSize = 1; + } + else if (msg->flags & SUB_ADDR_2BYTE) + { + i2cCfg.subAddrSize = 2; + } + + if ((msg->flags & I2C_RW_MASK) == I2C_WR) + { + return I2C_MasterSendBlocking(i2c_device->id, &i2cCfg); + } + else if ((msg->flags & I2C_RW_MASK) == I2C_RD) + { + return I2C_MasterReceiveBlocking(i2c_device->id, &i2cCfg); + } + + } + } + else + { + + } + return 0; +} \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/src/hal_i2s.c b/drivers/bl702_driver/hal_drv/src/hal_i2s.c new file mode 100644 index 00000000..aafff4c6 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_i2s.c @@ -0,0 +1,365 @@ +/** + * @file hal_i2s.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_i2s.h" +#include "hal_dma.h" +#include "bl702_i2s.h" +#include "bl702_glb.h" +#include "i2s_config.h" + +i2s_device_t i2sx_device[I2S_MAX_INDEX] = +{ +#ifdef BSP_USING_I2S0 + I2S0_CONFIG, +#endif +}; + +int i2s_open(struct device *dev, uint16_t oflag) +{ + i2s_device_t *i2s_device = (i2s_device_t *)dev; + I2S_CFG_Type i2sCfg; + I2S_FifoCfg_Type fifoCfg; + + /*Finding the right frequency*/ + if(12288000 %(i2s_device->sampl_freq_hz) == 0) + { + i2sCfg.audioFreqHz = 12288000; + PDS_Set_Audio_PLL_Freq(AUDIO_PLL_12288000_HZ); + } + else if(11289600%(i2s_device->sampl_freq_hz) == 0) + { + i2sCfg.audioFreqHz = 11289600; + PDS_Set_Audio_PLL_Freq(AUDIO_PLL_11289600_HZ); + } + else if(5644800%(i2s_device->sampl_freq_hz) == 0) + { + i2sCfg.audioFreqHz = 5644800; + PDS_Set_Audio_PLL_Freq(AUDIO_PLL_5644800_HZ); + } + else + { + switch (I2S_ADUIO_PLL_DEFAULT) + { + case AUDIO_PLL_12288000_HZ: + i2sCfg.audioFreqHz = 12288000; + break; + case AUDIO_PLL_11289600_HZ: + i2sCfg.audioFreqHz = 11289600; + break; + case AUDIO_PLL_5644800_HZ: + i2sCfg.audioFreqHz = 5644800; + break; + default: + return ERROR; + break; + } + PDS_Set_Audio_PLL_Freq(I2S_ADUIO_PLL_DEFAULT); + } + i2sCfg.sampleFreqHz = i2s_device->sampl_freq_hz; + + /*!< default I2S msb first */ + i2sCfg.endianType = I2S_DATA_ENDIAN; + + /* Config the I2S type */ + switch (i2s_device->interface_mode) + { + case I2S_MODE_STD: + i2sCfg.modeType = I2S_MODE_I2S_LEFT; + i2sCfg.fsMode = I2S_FS_MODE_EVEN; + i2sCfg.dataOffset = 1; + break; + case I2S_MODE_LEFT: + i2sCfg.modeType = I2S_MODE_I2S_LEFT; + i2sCfg.fsMode = I2S_FS_MODE_EVEN; + i2sCfg.dataOffset = 0; + break; + case I2S_MODE_RIGHT: + i2sCfg.modeType = I2S_MODE_I2S_RIGHT; + i2sCfg.fsMode = I2S_FS_MODE_EVEN; + i2sCfg.dataOffset = 0; + break; + case I2S_MODE_DSP_A: + i2sCfg.modeType = I2S_MODE_I2S_DSP; + i2sCfg.fsMode = I2S_FS_MODE_1T; + i2sCfg.dataOffset = 1; + break; + case I2S_MODE_DSP_B: + i2sCfg.modeType = I2S_MODE_I2S_DSP; + i2sCfg.fsMode = I2S_FS_MODE_1T; + i2sCfg.dataOffset = 0; + break; + default: + return ERROR; + break; + } + + /* Config the frame/data Size */ + switch (i2s_device->frame_size) + { + case I2S_FRAME_LEN_8: + i2sCfg.frameSize = I2S_SIZE_FRAME_8; + break; + case I2S_FRAME_LEN_16: + i2sCfg.frameSize = I2S_SIZE_FRAME_16; + break; + case I2S_FRAME_LEN_24: + i2sCfg.frameSize = I2S_SIZE_FRAME_24; + break; + case I2S_FRAME_LEN_32: + i2sCfg.frameSize = I2S_SIZE_FRAME_32; + break; + default: + return ERROR; + break; + } + switch (i2s_device->data_size) + { + case I2S_DATA_LEN_8: + i2sCfg.dataSize = I2S_SIZE_DATA_8; + break; + case I2S_DATA_LEN_16: + i2sCfg.dataSize = I2S_SIZE_DATA_16; + break; + case I2S_DATA_LEN_24: + i2sCfg.dataSize = I2S_SIZE_DATA_24; + break; + case I2S_DATA_LEN_32: + i2sCfg.dataSize = I2S_SIZE_DATA_32; + break; + default: + return ERROR; + break; + + } + + fifoCfg.lRMerge = DISABLE; + fifoCfg.frameDataExchange = DISABLE; + + /* Config the Channel number */ + switch (i2s_device->channel_num) + { + case I2S_FS_CHANNELS_NUM_MONO: + i2sCfg.monoMode = ENABLE; + i2sCfg.fsChannel = I2S_FS_CHANNELS_2; + i2sCfg.monoModeChannel = I2S_MONO_CHANNEL; + break; + case I2S_FS_CHANNELS_NUM_2: + i2sCfg.monoMode = DISABLE; + i2sCfg.fsChannel = I2S_FS_CHANNELS_2; + if(i2s_device->data_size==I2S_DATA_LEN_8 || i2s_device->data_size==I2S_DATA_LEN_16) + { + fifoCfg.lRMerge = ENABLE; + fifoCfg.frameDataExchange = I2S_LR_EXCHANGE; + } + break; + case I2S_FS_CHANNELS_NUM_3: + if((i2s_device->interface_mode !=I2S_MODE_DSP_A) && (i2s_device->interface_mode !=I2S_MODE_DSP_B)) + return ERROR; + i2sCfg.monoMode = DISABLE; + i2sCfg.fsChannel = I2S_FS_CHANNELS_3; + break; + case I2S_FS_CHANNELS_NUM_4: + if((i2s_device->interface_mode !=I2S_MODE_DSP_A) && (i2s_device->interface_mode !=I2S_MODE_DSP_B)) + return ERROR; + i2sCfg.monoMode = DISABLE; + i2sCfg.fsChannel = I2S_FS_CHANNELS_4; + default: + return ERROR; + break; + } + + /* Config the bclk/fs invert */ + i2sCfg.bclkInvert = I2S_BCLK_INVERT; + i2sCfg.fsInvert = I2S_FS_INVERT; + + if(oflag & DEVICE_OFLAG_INT_TX) + { + + } + if(oflag & DEVICE_OFLAG_INT_RX) + { + + } + + fifoCfg.txfifoDmaEnable = (oflag & DEVICE_OFLAG_DMA_TX)?ENABLE:DISABLE; + fifoCfg.rxfifoDmaEnable = (oflag & DEVICE_OFLAG_DMA_RX)?ENABLE:DISABLE; + fifoCfg.rxFifoLevel = i2s_device->fifo_threshold; + + /* I2S Init */ + I2S_Disable(); + I2S_Init(&i2sCfg); + I2S_FifoConfig(&fifoCfg); + I2S_Enable(I2S_ROLE_MASTER); + return SUCCESS; +} + +int i2s_close(struct device *dev) +{ + //i2s_device_t* uart_device = (i2s_device_t*)dev; + I2S_Disable(); + return SUCCESS; +} + +int i2s_control(struct device *dev, int cmd, void *args) +{ + i2s_device_t* i2s_device = (i2s_device_t*)dev; + switch (cmd) + { + case DEVICE_CTRL_SET_INT: + for(uint16_t i=0,j=1; i<8; i++,j<<=1) + { + if((uint32_t)args & j) + { + /* code */ + } + } + break; + case DEVICE_CTRL_CLR_INT: + for(uint16_t i=0,j=1; i<8; i++,j<<=1) + { + if((uint32_t)args & j) + { + /* code */ + } + } + break; + case DEVICE_CTRL_GET_INT: + /* code */ + break; + case DEVICE_CTRL_RESUME: + /* code */ + break; + case DEVICE_CTRL_SUSPEND: + /* code */ + break; + case DEVICE_CTRL_CONFIG: + /* code */ + break; + case DEVICE_CTRL_I2S_ATTACH_TX_DMA /* constant-expression */: + i2s_device->tx_dma = (struct device *)args; + break; + case DEVICE_CTRL_I2S_ATTACH_RX_DMA /* constant-expression */: + i2s_device->rx_dma = (struct device *)args; + break; + case DEVICE_CTRL_GET_CONFIG: + switch((uint32_t)args) + { + case I2S_GET_TX_FIFO_CMD: + return I2S_GetTxFIFO_AvlCnt(); + case I2S_GET_RX_FIFO_CMD: + return I2S_GetRxFIFO_AvlCnt(); + default: + break; + } + break; + default: + return ERROR; + break; + } + return SUCCESS; +} + + +int i2s_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size) +{ + i2s_device_t* i2s_device = (i2s_device_t*)dev; + if (dev->oflag & DEVICE_OFLAG_DMA_TX) + { + struct device *dma_ch = (struct device *)i2s_device->tx_dma; + if (!dma_ch) + return -1; + + if(i2s_device->id == 0) + { + dma_reload(dma_ch, (uint32_t)buffer, (uint32_t)DMA_ADDR_I2S_TDR, size); + dma_channel_start(dma_ch); + } + else if(i2s_device->id == 1) + { + dma_reload(dma_ch, (uint32_t)buffer, (uint32_t)DMA_ADDR_I2S_TDR, size); + dma_channel_start(dma_ch); + } + return 0; + } + else + return 0; +} + +int i2s_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size) +{ + i2s_device_t* i2s_device = (i2s_device_t*)dev; + if (dev->oflag & DEVICE_OFLAG_DMA_RX) + { + struct device *dma_ch = (struct device *)i2s_device->rx_dma; + if (!dma_ch) + return -1; + + if(i2s_device->id == 0) + { + dma_reload(dma_ch, (uint32_t)DMA_ADDR_I2S_RDR, (uint32_t)buffer, size); + dma_channel_start(dma_ch); + } + else if(i2s_device->id == 1) + { + dma_reload(dma_ch, (uint32_t)DMA_ADDR_I2S_RDR, (uint32_t)buffer, size); + dma_channel_start(dma_ch); + } + return 0; + } + else + return 0; +} + +int i2s_register(enum i2s_index_type index,const char *name,uint16_t flag) +{ + struct device *dev; + + if (I2S_MAX_INDEX == 0) + return -DEVICE_EINVAL; + + dev = &(i2sx_device[index].parent); + + dev->open = i2s_open; + dev->close = i2s_close; + dev->control = i2s_control; + dev->write = i2s_write; + dev->read = i2s_read; + + dev->status = DEVICE_UNREGISTER; + dev->type = DEVICE_CLASS_I2S; + dev->handle = NULL; + + return device_register(dev,name,flag); + +} + +void i2s_isr(i2s_device_t *handle) +{ + return ; +} + +void I2S_IRQ(void) +{ + i2s_isr(&i2sx_device[0]); +} + + diff --git a/drivers/bl702_driver/hal_drv/src/hal_mtimer.c b/drivers/bl702_driver/hal_drv/src/hal_mtimer.c new file mode 100644 index 00000000..9751633f --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_mtimer.c @@ -0,0 +1,176 @@ +/** + * @file hal_mtimer.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_mtimer.h" +#include "bl702_glb.h" +/** + * @brief + * + */ +void mtimer_init(void) +{ + NVIC_DisableIRQ(MTIME_IRQn); + /* Set MTimer the same frequency as SystemCoreClock */ + GLB_Set_MTimer_CLK(1, GLB_MTIMER_CLK_BCLK, 7); + *(volatile uint64_t *)(CLIC_CTRL_ADDR + CLIC_MTIME) = 0; +} +/** + * @brief + * + */ +void mtimer_deinit() +{ + NVIC_DisableIRQ(MTIME_IRQn); + mtimer_stop(); +} +/** + * @brief + * + * @param time + * @param interruptFun + */ +void mtimer_set_alarm_time(uint64_t time, void (*interruptFun)(void)) +{ + uint32_t tmp; + + tmp = (SystemCoreClockGet() / (GLB_Get_BCLK_Div() + 1)); + tmp = (tmp >> 3) / 1000; + + time = time * tmp; + + *(volatile uint64_t *)(CLIC_CTRL_ADDR + CLIC_MTIMECMP) = (*(volatile uint64_t *)(CLIC_CTRL_ADDR + CLIC_MTIME) + time); + + Interrupt_Handler_Register(MTIME_IRQn, interruptFun); + NVIC_EnableIRQ(MTIME_IRQn); +} +/** + * @brief + * + */ +void mtimer_start() +{ + *(volatile uint64_t *)(CLIC_CTRL_ADDR + CLIC_MTIME) = 0; +} +/** + * @brief + * + */ +void mtimer_stop() +{ +} +/** + * @brief + * + */ +void mtimer_clear_time() +{ + *(volatile uint64_t *)(CLIC_CTRL_ADDR + CLIC_MTIME) = 0; +} + +/** + * @brief + * + * @return uint64_t + */ +uint64_t mtimer_get_time_ms() +{ + return mtimer_get_time_us()/1000; +} +/** + * @brief + * + * @return uint64_t + */ +uint64_t mtimer_get_time_us() +{ + + uint32_t tmpValLow, tmpValHigh, tmpValLow1, tmpValHigh1; + uint32_t cnt = 0, tmp; + + do + { + tmpValLow = *(volatile uint32_t *)(CLIC_CTRL_ADDR + CLIC_MTIME); + tmpValHigh = *(volatile uint32_t *)(CLIC_CTRL_ADDR + CLIC_MTIME + 4); + tmpValLow1 = *(volatile uint32_t *)(CLIC_CTRL_ADDR + CLIC_MTIME); + tmpValHigh1 = *(volatile uint32_t *)(CLIC_CTRL_ADDR + CLIC_MTIME + 4); + cnt++; + if (cnt > 4) + { + break; + } + } while (tmpValLow > tmpValLow1 || tmpValHigh > tmpValHigh1); + + tmp = (SystemCoreClockGet() / (GLB_Get_BCLK_Div() + 1)); + tmp = (tmp >> 3) / 1000 / 1000; + + if (tmpValHigh1 == 0) + { + return (uint64_t)(tmpValLow1 / tmp); + } + else + { + return (((uint64_t)tmpValHigh1 << 32) + tmpValLow1) / tmp; + } +} +/** + * @brief + * + * @param time + */ +void mtimer_delay_ms(uint32_t time) +{ + uint64_t cnt = 0; + uint32_t clock = SystemCoreClockGet(); + uint64_t startTime = mtimer_get_time_ms(); + + while (mtimer_get_time_ms() - startTime < time) + { + cnt++; + /* assume BFLB_BSP_Get_Time_Ms take 32 cycles*/ + if (cnt > (time * (clock >> (10 + 5))) * 2) + { + break; + } + } +} +/** + * @brief + * + * @param time + */ +void mtimer_delay_us(uint32_t time) +{ + uint64_t cnt = 0; + uint32_t clock = SystemCoreClockGet(); + uint64_t startTime = mtimer_get_time_us(); + + while (mtimer_get_time_us() - startTime < time) + { + cnt++; + /* assume BFLB_BSP_Get_Time_Ms take 32 cycles*/ + if (cnt > (time * (clock >> (10 + 5))) * 2) + { + break; + } + } +} + diff --git a/drivers/bl702_driver/hal_drv/src/hal_pwm.c b/drivers/bl702_driver/hal_drv/src/hal_pwm.c new file mode 100644 index 00000000..a29796d1 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_pwm.c @@ -0,0 +1,203 @@ +/** + * @file hal_pwm.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_pwm.h" +#include "hal_gpio.h" +#include "bl702_pwm.h" +#include "bl702_gpio.h" +#include "bl702_glb.h" +#include "bl702_config.h" +#include "pwm_config.h" + +pwm_device_t pwmx_device[PWM_MAX_INDEX] = { +#ifdef BSP_USING_PWM0 + PWM_CONFIG_0, +#endif +#ifdef BSP_USING_PWM1 + PWM_CONFIG_1, +#endif +#ifdef BSP_USING_PWM2 + PWM_CONFIG_2, +#endif +#ifdef BSP_USING_PWM3 + PWM_CONFIG_3, +#endif +#ifdef BSP_USING_PWM4 + PWM_CONFIG_4, +#endif +}; + +typedef enum{ + HZ=0, + KHZ, + MHZ, +}frequency_unit_t; + +static void pwm_set(struct device *dev, PWM_CH_CFG_Type * pwmCfg ,uint32_t freq ,frequency_unit_t unit, uint8_t duty){ + + pwm_device_t *pwm_device = (pwm_device_t *)dev; + + + switch(unit) + { + case HZ: + if(freq <= 70){ + pwmCfg->clkDiv = 1200; + pwmCfg->period = 60000/freq; + pwmCfg->threshold2 = 600*duty/freq; + }else if(freq <= 140){ + pwmCfg->clkDiv = 16; + pwmCfg->period = 4500000/freq; + pwmCfg->threshold2 = 45000*duty/freq; + }else if(freq <= 275){ + pwmCfg->clkDiv = 8; + pwmCfg->period = 9000000/freq; + pwmCfg->threshold2 = 90000*duty/freq; + }else if(freq <=550){ + pwmCfg->clkDiv = 4; + pwmCfg->period = 18000000/freq; + pwmCfg->threshold2 = 180000*duty/freq; + }else if(freq <=1100){ + pwmCfg->clkDiv = 2; + pwmCfg->period = 36000000/freq; + pwmCfg->threshold2 = 360000*duty/freq; + }else{ + pwmCfg->clkDiv = 1; + pwmCfg->period = 72000000/freq; + pwmCfg->threshold2 = 720000*duty/freq; + } + break; + case KHZ: + if(freq <= 2){ + pwmCfg->clkDiv = 2; + pwmCfg->period = 36000/freq; + pwmCfg->threshold2 = 360*duty/freq; + }else{ + pwmCfg->clkDiv = 1; + pwmCfg->period = 72000/freq; + pwmCfg->threshold2 = 720*duty/freq; + } + break; + case MHZ: + pwmCfg->clkDiv = 1; + pwmCfg->period = 72/freq; + pwmCfg->threshold2 = 72*duty/freq/100; + break; + default: + break; + } + + PWM_Channel_Set_Div(pwm_device->ch ,pwmCfg->clkDiv); + PWM_Channel_Update(pwm_device->ch ,pwmCfg->period,0,pwmCfg->threshold2); + +} + +int pwm_open(struct device *dev, uint16_t oflag) +{ + PWM_CH_CFG_Type pwmCfg = { + 0, /* PWM channel */ + PWM_CLK_BCLK, /* PWM Clock */ + PWM_STOP_GRACEFUL, /* PWM Stop Mode */ + PWM_POL_NORMAL, /* PWM mode type */ + 1, /* PWM clkDiv num */ + 100, /* PWM period set */ + 0, /* PWM threshold1 num */ + 50, /* PWM threshold2 num */ + 0, /* PWM interrupt pulse count */ + }; + pwm_device_t *pwm_device = (pwm_device_t *)dev; + + pwmCfg.ch = pwm_device->ch; + /* todo clk init at clock tree now clk fix set as bclk*/ + pwmCfg.clk = PWM_CLK_BCLK; + + pwmCfg.stopMode = PWM_STOP_MODE_SEL; + pwmCfg.pol = PWM_POL_SEL; + + + if(pwm_device->frequency < 1000){ + pwm_set(dev,&pwmCfg,pwm_device->frequency,HZ,pwm_device->dutyCycle); + }else if(pwm_device->frequency < 999999){ + pwm_set(dev,&pwmCfg,pwm_device->frequency /1000,KHZ,pwm_device->dutyCycle); + }else{ + pwm_set(dev,&pwmCfg,pwm_device->frequency /1000000,MHZ,pwm_device->dutyCycle); + } + + PWM_Channel_Init(&pwmCfg); + PWM_Channel_Enable(pwm_device->ch); + return 0; +} +int pwm_close(struct device *dev) +{ + pwm_device_t *pwm_device = (pwm_device_t *)dev; + PWM_Channel_Disable(pwm_device->ch); + return 0; +} + +int pwm_control(struct device *dev, int cmd, void *args) +{ + pwm_device_t *pwm_device = (pwm_device_t *)dev; + pwm_config_t *pwm_config = (pwm_config_t *)args; + PWM_CH_CFG_Type pwmCfg; + switch (cmd) + { + case DEVICE_CTRL_CONFIG/* constant-expression */: + if(pwm_device->frequency < 1000){ + pwm_set(dev,&pwmCfg,pwm_config->frequency,HZ,pwm_config->dutyCycle); + }else if(pwm_device->frequency < 999999){ + pwm_set(dev,&pwmCfg,pwm_config->frequency /1000,KHZ,pwm_config->dutyCycle); + }else{ + pwm_set(dev,&pwmCfg,pwm_config->frequency /1000000,MHZ,pwm_config->dutyCycle); + } + break; + case DEVICE_CTRL_RESUME /* constant-expression */: + PWM_Channel_Enable(pwm_device->ch); + break; + case DEVICE_CTRL_SUSPEND /* constant-expression */: + PWM_Channel_Disable(pwm_device->ch); + break; + default: + break; + } + + return 0; +} + + +void pwm_register(enum pwm_index_type index, const char *name, uint16_t flag) +{ + struct device *dev; + + dev = &(pwmx_device[index].parent); + + dev->open = pwm_open; + dev->close = pwm_close; + dev->control = pwm_control; + dev->write = NULL; + dev->read = NULL; + + dev->status = DEVICE_UNREGISTER; + dev->type = DEVICE_CLASS_PWM; + dev->handle = NULL; + + device_register(dev, name, flag); +} diff --git a/drivers/bl702_driver/hal_drv/src/hal_spi.c b/drivers/bl702_driver/hal_drv/src/hal_spi.c new file mode 100644 index 00000000..9f494c16 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_spi.c @@ -0,0 +1,482 @@ +/** + * @file hal_spi.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_spi.h" +#include "hal_dma.h" +#include "hal_gpio.h" +#include "bl702_glb.h" +#include "bl702_spi.h" +#include "spi_config.h" + +#ifdef BSP_USING_SPI0 +void SPI0_IRQ(void); +#endif + +spi_device_t spix_device[SPI_MAX_INDEX] = +{ +#ifdef BSP_USING_SPI0 + SPI0_CONFIG, +#endif +}; +/** + * @brief + * + * @param dev + * @param oflag + * @return int + */ +int spi_open(struct device *dev, uint16_t oflag) +{ + spi_device_t *spi_device = (spi_device_t *)dev; + SPI_CFG_Type spiCfg; + SPI_FifoCfg_Type fifoCfg; +#if SPI_SWAP_ENABLE + GLB_Swap_SPI_0_MOSI_With_MISO(ENABLE); +#endif + + SPI_IntMask(spi_device->id, SPI_INT_ALL, MASK); + /* Enable uart interrupt*/ + NVIC_DisableIRQ(SPI_IRQn); + + SPI_Disable(spi_device->id, spi_device->mode); + + GLB_Set_SPI_0_ACT_MOD_Sel(spi_device->mode); + GLB_Set_SPI_CLK(ENABLE, 0); + /* Set SPI clock */ + SPI_ClockCfg_Type clockCfg = + { + 2, /* Length of start condition */ + 2, /* Length of stop condition */ + 2, /* Length of data phase 0,affecting clock */ + 2, /* Length of data phase 1,affecting clock */ + 2 /* Length of interval between frame */ + }; + + if (spi_device->clk > 72 * 1000000) + return -1; + + uint8_t length = 72 * 1000000 / spi_device->clk; + + if (!(length % 2)) + { + clockCfg.dataPhase0Len = length / 2; + clockCfg.dataPhase1Len = length / 2; + } + else + { + clockCfg.dataPhase0Len = length % 2; + clockCfg.dataPhase1Len = length / 2; + } + SPI_ClockConfig(spi_device->id, &clockCfg); + + spiCfg.deglitchEnable = SPI_DEGLITCH_ENABLE; + spiCfg.continuousEnable = SPI_CONTINUE_TRANSFER_ENABLE; + + if (spi_device->direction == SPI_LSB_BYTE0_DIRECTION_FIRST) + { + spiCfg.bitSequence = SPI_BIT_INVERSE_LSB_FIRST; + spiCfg.byteSequence = SPI_BYTE_INVERSE_BYTE0_FIRST; + } + else if (spi_device->direction == SPI_LSB_BYTE3_DIRECTION_FIRST) + { + spiCfg.bitSequence = SPI_BIT_INVERSE_LSB_FIRST; + spiCfg.byteSequence = SPI_BYTE_INVERSE_BYTE3_FIRST; + } + else if (spi_device->direction == SPI_MSB_BYTE0_DIRECTION_FIRST) + { + spiCfg.bitSequence = SPI_BIT_INVERSE_MSB_FIRST; + spiCfg.byteSequence = SPI_BYTE_INVERSE_BYTE0_FIRST; + } + else if (spi_device->direction == SPI_MSB_BYTE3_DIRECTION_FIRST) + { + spiCfg.bitSequence = SPI_BIT_INVERSE_MSB_FIRST; + spiCfg.byteSequence = SPI_BYTE_INVERSE_BYTE3_FIRST; + } + + spiCfg.clkPolarity = spi_device->clk_polaraity; + spiCfg.clkPhaseInv = spi_device->clk_phase; + spiCfg.frameSize = spi_device->datasize; + + /* SPI config */ + SPI_Init(spi_device->id, &spiCfg); + + fifoCfg.txFifoThreshold = spi_device->fifo_threshold; + fifoCfg.txFifoDmaEnable = DISABLE; + fifoCfg.rxFifoThreshold = spi_device->fifo_threshold; + fifoCfg.rxFifoDmaEnable = DISABLE; + + if (oflag & DEVICE_OFLAG_INT_TX || oflag & DEVICE_OFLAG_INT_RX) + { +#ifdef BSP_USING_SPI0 + Interrupt_Handler_Register(SPI_IRQn, SPI0_IRQ); +#endif +#ifdef BSP_USING_SPI1 + Interrupt_Handler_Register(SPI_IRQn, UART1_IRQ); +#endif + } + if (oflag & DEVICE_OFLAG_DMA_TX) + { + fifoCfg.txFifoDmaEnable = ENABLE; + } + if (oflag & DEVICE_OFLAG_DMA_RX) + { + fifoCfg.rxFifoDmaEnable = ENABLE; + } + SPI_FifoConfig(spi_device->id, &fifoCfg); + /* Enable spi master mode */ + SPI_Enable(spi_device->id, spi_device->mode); + + return 0; +} +/** + * @brief + * + * @param dev + * @return int + */ +int spi_close(struct device *dev) +{ + spi_device_t *spi_device = (spi_device_t *)dev; + + SPI_Disable(spi_device->id, spi_device->mode); + return 0; +} +/** + * @brief + * + * @param dev + * @param cmd + * @param args + * @return int + */ +int spi_control(struct device *dev, int cmd, void *args) +{ + spi_device_t *spi_device = (spi_device_t *)dev; + + switch (cmd) + { + case DEVICE_CTRL_SET_INT /* constant-expression */: + + break; + case DEVICE_CTRL_CLR_INT /* constant-expression */: + /* code */ + break; + case DEVICE_CTRL_GET_INT /* constant-expression */: + /* code */ + break; + case DEVICE_CTRL_RESUME: + /* code */ + SPI_Enable(spi_device->id, spi_device->mode); + break; + case DEVICE_CTRL_SUSPEND: + SPI_Disable(spi_device->id, spi_device->mode); + break; + case DEVICE_CTRL_CONFIG /* constant-expression */: + /* code */ + break; + case DEVICE_CTRL_SPI_ATTACH_TX_DMA_CMD /* constant-expression */: + spi_device->tx_dma = (struct device *)args; + break; + case DEVICE_CTRL_SPI_ATTACH_RX_DMA_CMD /* constant-expression */: + spi_device->rx_dma = (struct device *)args; + break; + case DEVICE_CTRL_SPI_CONFIG_CLOCK_CMD /* constant-expression */: + SPI_SetClock(spi_device->id,(uint32_t)args); + break; + default: + break; + } + + return 0; +} +/** + * @brief + * + * @param dev + * @param pos + * @param buffer + * @param size + * @return int + */ +int spi_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size) +{ + spi_device_t *spi_device = (spi_device_t *)dev; + + if (dev->oflag & DEVICE_OFLAG_DMA_TX) + { + struct device *dma_ch = (struct device *)spi_device->tx_dma; + if (!dma_ch) + return -1; + if (spi_device->id == 0) + { + dma_reload(dma_ch, (uint32_t)buffer, (uint32_t)DMA_ADDR_SPI_TDR, size); + dma_channel_start(dma_ch); + } + return 0; + } + else + { + if (spi_device->datasize == SPI_DATASIZE_32BIT) + { + SPI_Send_32bits(spi_device->id, (uint32_t *)buffer, size, SPI_TIMEOUT_DISABLE); + return 0; + } + else if (spi_device->datasize == SPI_DATASIZE_24BIT) + { + + } + else if (spi_device->datasize == SPI_DATASIZE_16BIT) + { + uint32_t residue32 = size % 2; + uint32_t trade32 = size / 2; + SPI_Send_32bits(spi_device->id, (uint32_t *)buffer, trade32, SPI_TIMEOUT_DISABLE); + buffer += sizeof(uint32_t) * trade32; + SPI_Send_16bits(spi_device->id, (uint16_t *)buffer, residue32, SPI_TIMEOUT_DISABLE); + return 0; + } + else if (spi_device->datasize == SPI_DATASIZE_8BIT) + { + uint32_t residue32 = size % 4; + uint32_t trade32 = size / 4; + SPI_Send_32bits(spi_device->id, (uint32_t *)buffer, trade32, SPI_TIMEOUT_DISABLE); + buffer += sizeof(uint32_t) * trade32; + + uint32_t residue16 = residue32 % 2; + uint32_t trade16 = residue32 / 2; + SPI_Send_16bits(spi_device->id, (uint16_t *)buffer, trade16, SPI_TIMEOUT_DISABLE); + buffer += sizeof(uint16_t) * trade16; + + SPI_Send_8bits(spi_device->id, (uint8_t *)buffer, residue16, SPI_TIMEOUT_DISABLE); + return 0; + } + } + return -2; +} +/** + * @brief + * + * @param dev + * @param pos + * @param buffer + * @param size + * @return int + */ +int spi_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size) +{ + spi_device_t *spi_device = (spi_device_t *)dev; + if (dev->oflag & DEVICE_OFLAG_DMA_RX) + { + struct device *dma_ch = (struct device *)spi_device->rx_dma; + if (!dma_ch) + return -1; + if (spi_device->id == 0) + { + dma_reload(dma_ch, (uint32_t)DMA_ADDR_SPI_RDR, (uint32_t)buffer, size); + dma_channel_start(dma_ch); + } + return 0; + } + else + { + + } + + return -2; +} +/** + * @brief + * + * @param index + * @param name + * @param flag + * @return int + */ +int spi_register(enum spi_index_type index, const char *name, uint16_t flag) +{ + struct device *dev; + + if (SPI_MAX_INDEX == 0) + return -DEVICE_EINVAL; + + dev = &(spix_device[index].parent); + + dev->open = spi_open; + dev->close = spi_close; + dev->control = spi_control; + dev->write = spi_write; + dev->read = spi_read; + + dev->status = DEVICE_UNREGISTER; + dev->type = DEVICE_CLASS_SPI; + dev->handle = NULL; + + return device_register(dev, name, flag); +} + +/** + * @brief + * + * @param dev + * @param buffer + * @param size + * @param type + * @return int + */ +int spi_transmit(struct device *dev, void *buffer, uint32_t size, uint8_t type) +{ + spi_device_t *spi_device = (spi_device_t *)dev; + if (type == 0) + { + return SPI_Send_8bits(spi_device->id, (uint8_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } + else if (type == 1) + { + return SPI_Send_16bits(spi_device->id, (uint16_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } + else if (type == 2) + { + return SPI_Send_24bits(spi_device->id, (uint32_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } + else if (type == 3) + { + return SPI_Send_32bits(spi_device->id, (uint32_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } + return -1; +} +/** + * @brief + * + * @param dev + * @param buffer + * @param size + * @param type + * @return int + */ +int spi_receive(struct device *dev, void *buffer, uint32_t size, uint8_t type) +{ + spi_device_t *spi_device = (spi_device_t *)dev; + if (type == 0) + { + return SPI_Recv_8bits(spi_device->id, (uint8_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } + else if (type == 1) + { + return SPI_Recv_16bits(spi_device->id, (uint16_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } + else if (type == 2) + { + return SPI_Recv_24bits(spi_device->id, (uint32_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } + else if (type == 3) + { + return SPI_Recv_32bits(spi_device->id, (uint32_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } + return -1; +} + +/** + * @brief + * + * @param dev + * @param send_buf + * @param recv_buf + * @param length + * @param type + * @return int + */ +int spi_transmit_receive(struct device *dev, const void *send_buf, void *recv_buf, uint32_t length, uint8_t type) +{ + spi_device_t *spi_device = (spi_device_t *)dev; + if (type == 0) + { + return SPI_SendRecv_8bits(spi_device->id, (uint8_t *)send_buf, (uint8_t *)recv_buf, length, SPI_TIMEOUT_DISABLE); + } + else if (type == 1) + { + return SPI_SendRecv_16bits(spi_device->id, (uint16_t *)send_buf, (uint16_t *)recv_buf, length, SPI_TIMEOUT_DISABLE); + } + else if (type == 2) + { + return SPI_SendRecv_24bits(spi_device->id, (uint32_t *)send_buf, (uint32_t *)recv_buf, length, SPI_TIMEOUT_DISABLE); + } + else if (type == 3) + { + return SPI_SendRecv_32bits(spi_device->id, (uint32_t *)send_buf, (uint32_t *)recv_buf, length, SPI_TIMEOUT_DISABLE); + } + return -1; +} +/** + * @brief + * + * @param handle + */ +void spi_isr(spi_device_t *handle) +{ + uint32_t tmpVal; + uint32_t SPIx = SPI_BASE + handle->id * 0x100; + + tmpVal = BL_RD_REG(SPIx, SPI_INT_STS); + + if (!handle->parent.callback) + return; + + /* Transfer end interrupt,shared by both master and slave mode */ + if (BL_IS_REG_BIT_SET(tmpVal, SPI_END_INT) && !BL_IS_REG_BIT_SET(tmpVal, SPI_CR_SPI_END_MASK)) + { + BL_WR_REG(SPIx, SPI_INT_STS, BL_SET_REG_BIT(tmpVal, SPI_CR_SPI_END_CLR)); + handle->parent.callback(&handle->parent, NULL, 0, SPI_INT_END); + } + /* TX fifo ready interrupt(fifo count > fifo threshold) */ + if (BL_IS_REG_BIT_SET(tmpVal, SPI_TXF_INT) && !BL_IS_REG_BIT_SET(tmpVal, SPI_CR_SPI_TXF_MASK)) + { + handle->parent.callback(&handle->parent, NULL, 0, SPI_INT_TX_FIFO_REQ); + } + /* RX fifo ready interrupt(fifo count > fifo threshold) */ + if (BL_IS_REG_BIT_SET(tmpVal, SPI_RXF_INT) && !BL_IS_REG_BIT_SET(tmpVal, SPI_CR_SPI_RXF_MASK)) + { + handle->parent.callback(&handle->parent, NULL, 0, SPI_INT_RX_FIFO_REQ); + } + /* Slave mode transfer time-out interrupt,triggered when bus is idle for the given value */ + if (BL_IS_REG_BIT_SET(tmpVal, SPI_STO_INT) && !BL_IS_REG_BIT_SET(tmpVal, SPI_CR_SPI_STO_MASK)) + { + BL_WR_REG(SPIx, SPI_INT_STS, BL_SET_REG_BIT(tmpVal, SPI_CR_SPI_STO_CLR)); + handle->parent.callback(&handle->parent, NULL, 0, SPI_INT_SLAVE_TIMEOUT); + } + /* Slave mode tx underrun error interrupt,trigged when tx is not ready during transfer */ + if (BL_IS_REG_BIT_SET(tmpVal, SPI_TXU_INT) && !BL_IS_REG_BIT_SET(tmpVal, SPI_CR_SPI_TXU_MASK)) + { + BL_WR_REG(SPIx, SPI_INT_STS, BL_SET_REG_BIT(tmpVal, SPI_CR_SPI_TXU_CLR)); + handle->parent.callback(&handle->parent, NULL, 0, SPI_INT_SLAVE_UNDERRUN); + } + /* TX/RX fifo overflow/underflow interrupt */ + if (BL_IS_REG_BIT_SET(tmpVal, SPI_FER_INT) && !BL_IS_REG_BIT_SET(tmpVal, SPI_CR_SPI_FER_MASK)) + { + handle->parent.callback(&handle->parent, NULL, 0, SPI_INT_FIFO_ERROR); + } +} + +#ifdef BSP_USING_SPI0 +void SPI0_IRQ() +{ + spi_isr(&spix_device[SPI0_INDEX]); +} +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/src/hal_timer.c b/drivers/bl702_driver/hal_drv/src/hal_timer.c new file mode 100644 index 00000000..8ec130fa --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_timer.c @@ -0,0 +1,140 @@ +/** + * @file hal_timer.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_timer.h" +#include "bl702_timer.h" + +// extern struct device * timer; +// /****************************************************************************/ /** +// * @brief TIMER match 0 interrupt calllbaeck funtion +// * +// * @param None +// * +// * @return None +// * +// *******************************************************************************/ +// static void Timer_Match0_Cbf(void) +// { +// MSG("Timer_Match0_Cbf\r\n"); //match0Arrived=1; +// //device_close(timer); +// } + +// /****************************************************************************/ /** +// * @brief TIMER match 1 interrupt calllbaeck funtion +// * +// * @param None +// * +// * @return None +// * +// *******************************************************************************/ +// static void Timer_Match1_Cbf(void) +// { +// MSG("Timer_Match1_Cbf\r\n"); //match1Arrived=1; +// // device_close(timer); +// } + +// /****************************************************************************/ /** +// * @brief TIMER match 2 interrupt calllbaeck funtion +// * +// * @param None +// * +// * @return None +// * +// *******************************************************************************/ +// static void Timer_Match2_Cbf(void) +// { +// MSG("Timer_Match2_Cbf\r\n"); //match2Arrived=1; +// device_close(timer); +// } + +int timer_open(struct device *dev, uint16_t oflag) +{ + + return 0; +} +int timer_close(struct device *dev) +{ + + return 0; +} +int timer_control(struct device *dev, int cmd, void *args) +{ + + switch (cmd) + { + case DEVICE_CTRL_SET_INT /* constant-expression */: + + break; + case DEVICE_CTRL_CLR_INT /* constant-expression */: + /* code */ + + break; + case DEVICE_CTRL_GET_INT /* constant-expression */: + /* code */ + break; + case DEVICE_CTRL_CONFIG /* constant-expression */: + /* code */ + break; + case DEVICE_CTRL_RESUME /* constant-expression */: + /* code */ + break; + case DEVICE_CTRL_SUSPEND /* constant-expression */: + /* code */ + break; + default: + break; + } + + return 0; + + + return 0; +} +int timer_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size) +{ + + return 0; +} +int timer_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size) +{ + + return 0; +} + +void timer_register(timer_device_t *device, const char *name, uint16_t flag) +{ + struct device *dev; + + dev = &(device->parent); + + dev->open = timer_open; + dev->close = timer_close; + dev->control = timer_control; + dev->write = NULL; + dev->read = NULL; + + dev->status = DEVICE_UNREGISTER; + dev->type = DEVICE_CLASS_TIMER; + dev->handle = NULL; + + device_register(dev, name, flag); +} diff --git a/drivers/bl702_driver/hal_drv/src/hal_uart.c b/drivers/bl702_driver/hal_drv/src/hal_uart.c new file mode 100644 index 00000000..01e95c33 --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_uart.c @@ -0,0 +1,424 @@ +/** + * @file hal_uart.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_uart.h" +#include "hal_dma.h" +#include "hal_gpio.h" +#include "hal_clock.h" +#include "bl702_uart.h" +#include "bl702_glb.h" +#include "uart_config.h" + +#ifdef BSP_USING_UART0 +void UART0_IRQ(void); +#endif +#ifdef BSP_USING_UART1 +void UART1_IRQ(void); +#endif + +uart_device_t uartx_device[UART_MAX_INDEX] = +{ +#ifdef BSP_USING_UART0 + UART0_CONFIG, +#endif +#ifdef BSP_USING_UART1 + UART1_CONFIG, +#endif +}; +/** + * @brief + * + * @param dev + * @param oflag + * @return int + */ +int uart_open(struct device *dev, uint16_t oflag) +{ + uart_device_t *uart_device = (uart_device_t *)dev; + UART_FifoCfg_Type fifoCfg; + UART_CFG_Type uart_cfg; + + /* disable all interrupt */ + UART_IntMask(uart_device->id, UART_INT_ALL, MASK); + /* disable uart before config */ + UART_Disable(uart_device->id, UART_TXRX); + + uint32_t uart_clk = peripheral_clock_get(PERIPHERAL_CLOCK_UART); + uart_cfg.baudRate = uart_device->baudrate; + uart_cfg.dataBits = uart_device->databits; + uart_cfg.stopBits = uart_device->stopbits; + uart_cfg.parity = uart_device->parity; + uart_cfg.uartClk = uart_clk; + uart_cfg.ctsFlowControl = UART_CTS_FLOWCONTROL_ENABLE; + uart_cfg.rtsSoftwareControl = UART_RTS_FLOWCONTROL_ENABLE; + uart_cfg.byteBitInverse = UART_MSB_FIRST_ENABLE; + uart_cfg.txSoftwareControl = UART_TX_SWCONTROL_ENABLE; + uart_cfg.txLinMode = UART_TX_LINMODE_ENABLE; + uart_cfg.rxLinMode = UART_RX_LINMODE_ENABLE; + uart_cfg.txBreakBitCnt = UART_TX_BREAKBIT_CNT; + + /* uart init with default configuration */ + UART_Init(uart_device->id, &uart_cfg); + + /* Enable tx free run mode */ + UART_TxFreeRun(uart_device->id, ENABLE); + + /* Set rx time-out value */ + UART_SetRxTimeoutValue(uart_device->id, UART_DEFAULT_RTO_TIMEOUT); + + fifoCfg.txFifoDmaThreshold = uart_device->fifo_threshold; + fifoCfg.txFifoDmaEnable = DISABLE; + fifoCfg.rxFifoDmaThreshold = uart_device->fifo_threshold; + fifoCfg.rxFifoDmaEnable = DISABLE; + + if (oflag & DEVICE_OFLAG_STREAM_TX) + { + } + if ((oflag & DEVICE_OFLAG_INT_TX) || (oflag & DEVICE_OFLAG_INT_RX)) + { +#ifdef BSP_USING_UART0 + if (uart_device->id == UART0_ID) + Interrupt_Handler_Register(UART0_IRQn, UART0_IRQ); +#endif +#ifdef BSP_USING_UART1 + if (uart_device->id == UART1_ID) + Interrupt_Handler_Register(UART1_IRQn, UART1_IRQ); +#endif + } + if (oflag & DEVICE_OFLAG_DMA_TX) + { + fifoCfg.txFifoDmaEnable = ENABLE; + } + if (oflag & DEVICE_OFLAG_DMA_RX) + { + fifoCfg.rxFifoDmaEnable = ENABLE; + } + + UART_FifoConfig(uart_device->id, &fifoCfg); + /* enable uart */ + UART_Enable(uart_device->id, UART_TXRX); + return 0; +} +/** + * @brief + * + * @param dev + * @return int + */ +int uart_close(struct device *dev) +{ + uart_device_t *uart_device = (uart_device_t *)dev; + + UART_Disable(uart_device->id, UART_TXRX); + return 0; +} +/** + * @brief + * + * @param dev + * @param cmd + * @param args + * @return int + */ +int uart_control(struct device *dev, int cmd, void *args) +{ + uart_device_t *uart_device = (uart_device_t *)dev; + + switch (cmd) + { + case DEVICE_CTRL_SET_INT /* constant-expression */: + { + uint32_t offset = __builtin_ctz((uint32_t)args); + while ((0 <= offset) && (offset < 9)) + { + if ((uint32_t)args & (1 << offset)) + { + UART_IntMask(uart_device->id, offset, UNMASK); + } + offset++; + } + if (uart_device->id == UART0_ID) + NVIC_EnableIRQ(UART0_IRQn); + else if (uart_device->id == UART1_ID) + NVIC_EnableIRQ(UART1_IRQn); + + break; + } + case DEVICE_CTRL_CLR_INT /* constant-expression */: + { + uint32_t offset = __builtin_ctz((uint32_t)args); + while ((0 <= offset) && (offset < 9)) + { + if ((uint32_t)args & (1 << offset)) + { + UART_IntMask(uart_device->id, offset, MASK); + } + offset++; + } + if (uart_device->id == UART0_ID) + NVIC_DisableIRQ(UART0_IRQn); + else if (uart_device->id == UART1_ID) + NVIC_DisableIRQ(UART1_IRQn); + + break; + } + case DEVICE_CTRL_GET_INT /* constant-expression */: + /* code */ + break; + case DEVICE_CTRL_CONFIG /* constant-expression */: + { + uart_param_cfg_t* cfg = (uart_param_cfg_t *)args; + UART_CFG_Type uart_cfg; + + /* Disable uart before config */ + UART_Disable(uart_device->id, UART_TXRX); + uint32_t uart_clk = peripheral_clock_get(PERIPHERAL_CLOCK_UART); + + uart_cfg.uartClk = uart_clk; + uart_cfg.baudRate = cfg->baudrate; + uart_cfg.stopBits = cfg->stopbits; + uart_cfg.parity = cfg->parity; + uart_cfg.dataBits = cfg->databits; + uart_cfg.ctsFlowControl = UART_CTS_FLOWCONTROL_ENABLE; + uart_cfg.rtsSoftwareControl = UART_RTS_FLOWCONTROL_ENABLE; + uart_cfg.byteBitInverse = UART_MSB_FIRST_ENABLE; + uart_cfg.txSoftwareControl = UART_TX_SWCONTROL_ENABLE; + uart_cfg.txLinMode = UART_TX_LINMODE_ENABLE; + uart_cfg.rxLinMode = UART_RX_LINMODE_ENABLE; + uart_cfg.txBreakBitCnt = UART_TX_BREAKBIT_CNT; + UART_Init(uart_device->id, &uart_cfg); +#ifdef BSP_USING_UART0 + if (uart_device->id == UART0_ID) + Interrupt_Handler_Register(UART0_IRQn, UART0_IRQ); +#endif +#ifdef BSP_USING_UART1 + if (uart_device->id == UART1_ID) + Interrupt_Handler_Register(UART1_IRQn, UART1_IRQ); +#endif + /* Enable uart */ + UART_Enable(uart_device->id, UART_TXRX); + break; + } + case DEVICE_CTRL_GET_CONFIG /* constant-expression */: + break; + case DEVICE_CTRL_UART_ATTACH_TX_DMA /* constant-expression */: + uart_device->tx_dma = (struct device *)args; + break; + case DEVICE_CTRL_UART_ATTACH_RX_DMA /* constant-expression */: + uart_device->rx_dma = (struct device *)args; + break; + case DEVICE_CTRL_UART_GET_TX_FIFO /* constant-expression */: + return UART_GetTxFifoCount(uart_device->id); + case DEVICE_CTRL_UART_GET_RX_FIFO /* constant-expression */: + return UART_GetRxFifoCount(uart_device->id); + default: + break; + } + + return 0; +} +/** + * @brief + * + * @param dev + * @param pos + * @param buffer + * @param size + * @return int + */ +int uart_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size) +{ + uart_device_t *uart_device = (uart_device_t *)dev; + if (dev->oflag & DEVICE_OFLAG_DMA_TX) + { + struct device *dma_ch = (struct device *)uart_device->tx_dma; + if (!dma_ch) + return -1; + + if(uart_device->id == 0) + { + dma_reload(dma_ch, (uint32_t)buffer, (uint32_t)DMA_ADDR_UART0_TDR, size); + dma_channel_start(dma_ch); + } + else if(uart_device->id == 1) + { + dma_reload(dma_ch, (uint32_t)buffer, (uint32_t)DMA_ADDR_UART1_TDR, size); + dma_channel_start(dma_ch); + } + return 0; + } + return UART_SendData(uart_device->id, (uint8_t *)buffer, size); +} +/** + * @brief + * + * @param dev + * @param pos + * @param buffer + * @param size + * @return int + */ +int uart_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size) +{ + uart_device_t *uart_device = (uart_device_t *)dev; + if (dev->oflag & DEVICE_OFLAG_DMA_RX) + { + struct device *dma_ch = (struct device *)uart_device->rx_dma; + if (!dma_ch) + return -1; + + if(uart_device->id == 0) + { + dma_reload(dma_ch, (uint32_t)DMA_ADDR_UART0_RDR, (uint32_t)buffer, size); + dma_channel_start(dma_ch); + } + else if(uart_device->id == 1) + { + dma_reload(dma_ch,(uint32_t)DMA_ADDR_UART1_RDR, (uint32_t)buffer, size); + dma_channel_start(dma_ch); + } + } + return UART_ReceiveData(uart_device->id, (uint8_t *)buffer, size); +} +/** + * @brief + * + * @param index + * @param name + * @param flag + * @return int + */ +int uart_register(enum uart_index_type index, const char *name, uint16_t flag) +{ + struct device *dev; + + if(UART_MAX_INDEX == 0) + return -DEVICE_EINVAL; + + dev = &(uartx_device[index].parent); + + dev->open = uart_open; + dev->close = uart_close; + dev->control = uart_control; + dev->write = uart_write; + dev->read = uart_read; + + dev->status = DEVICE_UNREGISTER; + dev->type = DEVICE_CLASS_UART; + dev->handle = NULL; + + return device_register(dev, name, flag); +} +/** + * @brief + * + * @param handle + */ +void uart_isr(uart_device_t *handle) +{ + uint32_t tmpVal = 0; + uint32_t maskVal = 0; + uint32_t UARTx = (UART0_BASE + handle->id * 0x100); + + tmpVal = BL_RD_REG(UARTx, UART_INT_STS); + maskVal = BL_RD_REG(UARTx, UART_INT_MASK); + + if (!handle->parent.callback) + return; + + /* Length of uart tx data transfer arrived interrupt */ + if (BL_IS_REG_BIT_SET(tmpVal, UART_UTX_END_INT) && !BL_IS_REG_BIT_SET(maskVal, UART_CR_UTX_END_MASK)) + { + BL_WR_REG(UARTx, UART_INT_CLEAR, 0x1); + handle->parent.callback(&handle->parent, NULL, 0, UART_EVENT_TX_END); + } + + /* Length of uart rx data transfer arrived interrupt */ + if (BL_IS_REG_BIT_SET(tmpVal, UART_URX_END_INT) && !BL_IS_REG_BIT_SET(maskVal, UART_CR_URX_END_MASK)) + { + BL_WR_REG(UARTx, UART_INT_CLEAR, 0x2); + handle->parent.callback(&handle->parent,NULL, 0, UART_EVENT_RX_END); + } + + /* Tx fifo ready interrupt,auto-cleared when data is pushed */ + if (BL_IS_REG_BIT_SET(tmpVal, UART_UTX_FIFO_INT) && !BL_IS_REG_BIT_SET(maskVal, UART_CR_UTX_FIFO_MASK)) + { + handle->parent.callback(&handle->parent, NULL, 0, UART_EVENT_TX_FIFO); + } + + /* Rx fifo ready interrupt,auto-cleared when data is popped */ + if (BL_IS_REG_BIT_SET(tmpVal, UART_URX_FIFO_INT) && !BL_IS_REG_BIT_SET(maskVal, UART_CR_URX_FIFO_MASK)) + { + uint8_t buffer[UART_FIFO_MAX_LEN]; + UART_ReceiveData(handle->id, buffer, handle->fifo_threshold); + handle->parent.callback(&handle->parent, &buffer[0], handle->fifo_threshold, UART_EVENT_RX_FIFO); + } + + /* Rx time-out interrupt */ + if (BL_IS_REG_BIT_SET(tmpVal, UART_URX_RTO_INT) && !BL_IS_REG_BIT_SET(maskVal, UART_CR_URX_RTO_MASK)) + { + uint8_t buffer[UART_FIFO_MAX_LEN]; + uint8_t len = UART_ReceiveData(handle->id, buffer, handle->fifo_threshold); + handle->parent.callback(&handle->parent, &buffer[0], len, UART_EVENT_RTO); + BL_WR_REG(UARTx, UART_INT_CLEAR, 0x10); + } + + /* Rx parity check error interrupt */ + if (BL_IS_REG_BIT_SET(tmpVal, UART_URX_PCE_INT) && !BL_IS_REG_BIT_SET(maskVal, UART_CR_URX_PCE_MASK)) + { + BL_WR_REG(UARTx, UART_INT_CLEAR, 0x20); + handle->parent.callback(&handle->parent, NULL, 0, UART_PCE_IT); + } + + /* Tx fifo overflow/underflow error interrupt */ + if (BL_IS_REG_BIT_SET(tmpVal, UART_UTX_FER_INT) && !BL_IS_REG_BIT_SET(maskVal, UART_CR_UTX_FER_MASK)) + { + handle->parent.callback(&handle->parent, NULL, 0, UART_TX_FER_IT); + } + + /* Rx fifo overflow/underflow error interrupt */ + if (BL_IS_REG_BIT_SET(tmpVal, UART_URX_FER_INT) && !BL_IS_REG_BIT_SET(maskVal, UART_CR_URX_FER_MASK)) + { + handle->parent.callback(&handle->parent, NULL, 0, UART_RX_FER_IT); + } +} + +#ifdef BSP_USING_UART0 +/** + * @brief + * + */ +void UART0_IRQ(void) +{ + uart_isr(&uartx_device[UART0_INDEX]); +} +#endif +#ifdef BSP_USING_UART1 +/** + * @brief + * + */ +void UART1_IRQ(void) +{ + uart_isr(&uartx_device[UART1_INDEX]); +} +#endif \ No newline at end of file diff --git a/drivers/bl702_driver/hal_drv/src/hal_usb.c b/drivers/bl702_driver/hal_drv/src/hal_usb.c new file mode 100644 index 00000000..245bf8dd --- /dev/null +++ b/drivers/bl702_driver/hal_drv/src/hal_usb.c @@ -0,0 +1,1046 @@ +/** + * @file hal_usb.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_usb.h" +#include "hal_mtimer.h" +#include "bl702_usb.h" +#include "bl702_glb.h" +#include "bl702_gpio.h" +#include "usb_config.h" + +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) + +#define USB_DC_LOG_WRN(a, ...) bflb_platform_printf(a, ##__VA_ARGS__) +#define USB_DC_LOG_DBG(a, ...) +#define USB_DC_LOG_ERR(a, ...) bflb_platform_printf(a, ##__VA_ARGS__) +#define USB_DC_LOG(a, ...) + +usb_dc_device_t usb_fs_device; + +static void usb_set_power_up(void) +{ + uint32_t tmpVal = 0; + + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR); + tmpVal = BL_SET_REG_BIT(tmpVal, GLB_PU_USB); + BL_WR_REG(GLB_BASE, GLB_USB_XCVR, tmpVal); +} + +static void usb_set_power_off(void) +{ + uint32_t tmpVal = 0; + + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR); + tmpVal = BL_CLR_REG_BIT(tmpVal, GLB_PU_USB); + BL_WR_REG(GLB_BASE, GLB_USB_XCVR, tmpVal); +} + +static uint8_t usb_ep_is_enabled(uint8_t ep) +{ + uint8_t ep_idx = USB_EP_GET_IDX(ep); + + /* Check if ep enabled */ + if ((USB_EP_DIR_IS_OUT(ep)) && + usb_fs_device.out_ep[ep_idx].ep_ena) + { + return 1; + } + else if ((USB_EP_DIR_IS_IN(ep)) && + usb_fs_device.in_ep[ep_idx].ep_ena) + { + return 1; + } + + return 0; +} + +static void usb_xcvr_config(BL_Fun_Type NewState) +{ + uint32_t tmpVal = 0; + + if (NewState != DISABLE) + { +#if defined(USE_EXTERNAL_TRANSCEIVER) + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_REG_USB_USE_XCVR, 0); //use external tranceiver + BL_WR_REG(GLB_BASE, GLB_USB_XCVR_CONFIG, tmpVal); +#elif defined(USE_INTERNAL_TRANSCEIVER) +#if 1 + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_PU_USB, 1); + BL_WR_REG(GLB_BASE, GLB_USB_XCVR, tmpVal); + + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_SUS, 0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_SPD, 1); //0 for 1.1 ls,1 for 1.1 fs + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_DATA_CONVERT, 0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_OEB_SEL, 0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_ROUT_PMOS, 3); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_ROUT_NMOS, 3); + BL_WR_REG(GLB_BASE, GLB_USB_XCVR, tmpVal); + + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_SLEWRATE_P_RISE, 2); //1 for 1.1 ls + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_SLEWRATE_P_FALL, 2); //1 for 1.1 ls + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_SLEWRATE_M_RISE, 2); //1 for 1.1 ls + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_SLEWRATE_M_FALL, 2); //1 for 1.1 ls + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_RES_PULLUP_TUNE, 5); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_REG_USB_USE_XCVR, 1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_BD_VTH, 1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_V_HYS_P, 2); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_V_HYS_M, 2); + BL_WR_REG(GLB_BASE, GLB_USB_XCVR_CONFIG, tmpVal); + + ///* force BD=1, not use */ + //tmpVal=BL_RD_REG(GLB_BASE,GLB_USB_XCVR); + //tmpVal=BL_SET_REG_BIT(tmpVal,GLB_PU_USB_LDO); + //BL_WR_REG(GLB_BASE,GLB_USB_XCVR,tmpVal); + + /* BD_voltage_thresdhold=2.8V */ + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_BD_VTH, 7); + BL_WR_REG(GLB_BASE, GLB_USB_XCVR_CONFIG, tmpVal); + +#else + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_PU_USB, 1); + BL_WR_REG(GLB_BASE, GLB_USB_XCVR, tmpVal); + + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_SUS, 0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_SPD, 0); //0 for 1.1 ls,1 for 1.1 fs + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_DATA_CONVERT, 0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_OEB_SEL, 0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_ROUT_PMOS, 3); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_ROUT_NMOS, 3); + BL_WR_REG(GLB_BASE, GLB_USB_XCVR, tmpVal); + + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_SLEWRATE_P_RISE, 1); //4 for 1.1 fs + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_SLEWRATE_P_FALL, 1); //3 for 1.1 fs + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_SLEWRATE_M_RISE, 1); //4 for 1.1 fs + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_SLEWRATE_M_FALL, 1); //3 for 1.1 fs + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_RES_PULLUP_TUNE, 5); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_REG_USB_USE_XCVR, 1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_BD_VTH, 1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_V_HYS_P, 2); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_V_HYS_M, 2); + BL_WR_REG(GLB_BASE, GLB_USB_XCVR_CONFIG, tmpVal); +#endif + + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_ENUM, 1); + BL_WR_REG(GLB_BASE, GLB_USB_XCVR, tmpVal); +#endif + } + else + { +#ifdef USE_INTERNAL_TRANSCEIVER + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_ENUM, 0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_PU_USB, 0); + BL_WR_REG(GLB_BASE, GLB_USB_XCVR, tmpVal); + + ///* force BD=1, not use */ + //tmpVal=BL_RD_REG(GLB_BASE,GLB_USB_XCVR); + //tmpVal=BL_SET_REG_BIT(tmpVal,GLB_PU_USB_LDO); + //BL_WR_REG(GLB_BASE,GLB_USB_XCVR,tmpVal); + + /* BD_voltage_thresdhold=2.8V */ + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_BD_VTH, 7); + BL_WR_REG(GLB_BASE, GLB_USB_XCVR_CONFIG, tmpVal); + +#else + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_REG_USB_USE_XCVR, 1); //use internal tranceiver + BL_WR_REG(GLB_BASE, GLB_USB_XCVR_CONFIG, tmpVal); + + tmpVal = BL_RD_REG(GLB_BASE, GLB_USB_XCVR); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_USB_ENUM, 0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, GLB_PU_USB, 1); + BL_WR_REG(GLB_BASE, GLB_USB_XCVR, tmpVal); +#endif + } +} + +/** + * @brief + * + * @param dev + * @param oflag + * @return int + */ +int usb_open(struct device *dev, uint16_t oflag) +{ + USB_Config_Type usbCfg; + + usb_set_power_off(); + mtimer_delay_ms(10); + usb_set_power_up(); + + usb_xcvr_config(DISABLE); + usb_xcvr_config(ENABLE); + + NVIC_DisableIRQ(USB_IRQn); + + usbCfg.DeviceAddress = 0; + usbCfg.EnumInEn = ENABLE; + usbCfg.EnumOutEn = ENABLE; + usbCfg.RomBaseDescriptorUsed = 0; + usbCfg.SoftwareCtrl = 1; + usbCfg.EnumMaxPacketSize = USB_CTRL_EP_MPS; + + /* Init Device */ + USB_Set_Config(DISABLE, &usbCfg); + + /* USB interrupt enable config */ + USB_IntEn(USB_INT_ALL, DISABLE); //all + USB_IntEn(USB_INT_RESET, ENABLE); //1 + USB_IntEn(USB_INT_EP0_SETUP_DONE, ENABLE); //5 + USB_IntEn(USB_INT_EP0_IN_DONE, ENABLE); //7 + USB_IntEn(USB_INT_EP0_OUT_DONE, ENABLE); //9 + USB_IntEn(USB_INT_RESET_END, ENABLE); //27 + + /* USB interrupt mask config */ + USB_IntMask(USB_INT_ALL, MASK); //all + USB_IntMask(USB_INT_RESET, UNMASK); //1 + USB_IntMask(USB_INT_EP0_SETUP_DONE, UNMASK); //5 + USB_IntMask(USB_INT_EP0_IN_DONE, UNMASK); //7 + USB_IntMask(USB_INT_EP0_OUT_DONE, UNMASK); //9 + USB_IntMask(USB_INT_RESET_END, UNMASK); //27 + +#ifdef ENABLE_LPM_INT + USB_IntEn(USB_INT_LPM_PACKET, ENABLE); + USB_IntEn(USB_INT_LPM_WAKEUP, ENABLE); + USB_IntMask(USB_INT_LPM_PACKET, UNMASK); + USB_IntMask(USB_INT_LPM_WAKEUP, UNMASK); + + USB_LPM_Enable(); + USB_Set_LPM_Default_Response(USB_LPM_DEFAULT_RESP_ACK); + +#endif + +#ifdef ENABLE_SOF3MS_INT + /* disable sof3ms until reset_end */ + USB_IntEn(USB_INT_LOST_SOF_3_TIMES, DISABLE); + USB_IntMask(USB_INT_LOST_SOF_3_TIMES, MASK); + + /* recommended enable sof3ms after reset_end */ + USB_IntEn(USB_INT_LOST_SOF_3_TIMES, ENABLE); + USB_IntMask(USB_INT_LOST_SOF_3_TIMES, UNMASK); +#endif + +#ifdef ENABLE_ERROR_INT + USB_IntEn(USB_INT_ERROR, ENABLE); + USB_IntMask(USB_INT_ERROR, UNMASK); +#endif + /*Clear pending interrupts*/ + USB_Clr_IntStatus(USB_INT_ALL); + + Interrupt_Handler_Register(USB_IRQn, USB_IRQHandler); + NVIC_EnableIRQ(USB_IRQn); + USB_Enable(); + + return 0; +} +/** + * @brief + * + * @param dev + * @return int + */ +int usb_close(struct device *dev) +{ + /* disable all interrupts and force USB reset */ + NVIC_DisableIRQ(USB_IRQn); + USB_IntMask(USB_INT_LPM_WAKEUP, MASK); + USB_IntMask(USB_INT_LPM_PACKET, MASK); + + USB_Disable(); + + /* clear interrupt status register */ + USB_Clr_IntStatus(USB_INT_ALL); + + usb_set_power_off(); + + usb_xcvr_config(DISABLE); + GLB_Set_USB_CLK(DISABLE); + + return 0; +} +/** + * @brief + * + * @param dev + * @param cmd + * @param args + * @return int + */ +int usb_control(struct device *dev, int cmd, void *args) +{ + switch (cmd) + { + case DEVICE_CTRL_SET_INT /* constant-expression */: + { + uint32_t offset = __builtin_ctz((uint32_t)args); + while (offset < 24) + { + if ((uint32_t)args & (1 << offset)) + { + USB_IntEn(offset, ENABLE); + USB_IntMask(offset, UNMASK); //11 + //USB_DC_LOG("offset:%d\r\n",offset); + } + offset++; + } + } + break; + case DEVICE_CTRL_CLR_INT /* constant-expression */: + /* code */ + + break; + case DEVICE_CTRL_GET_INT /* constant-expression */: + /* code */ + break; + case DEVICE_CTRL_CONFIG /* constant-expression */: + break; + case DEVICE_CTRL_GET_CONFIG /* constant-expression */: + break; + case DEVICE_CTRL_USB_DC_SET_ADDR /* constant-expression */: + USB_Set_Device_Addr(((uint32_t)args) & 0x7f); + return 0; + case DEVICE_CTRL_USB_DC_SET_ACK /* constant-expression */: + USB_Set_EPx_Status(USB_EP_GET_IDX(((uint32_t)args) & 0x7f), USB_EP_STATUS_ACK); + return 0; + case DEVICE_CTRL_USB_DC_SET_NACK /* constant-expression */: + USB_Set_EPx_Status(USB_EP_GET_IDX(((uint32_t)args) & 0x7f), USB_EP_STATUS_NACK); + return 0; + case DEVICE_CTRL_USB_DC_SET_STALL /* constant-expression */: + { + uint8_t ep_idx = USB_EP_GET_IDX(((uint32_t)args) & 0x7f); + + if (USB_EP_DIR_IS_OUT(((uint32_t)args) & 0x7f)) + { + USB_Set_EPx_Status(ep_idx, USB_EP_STATUS_STALL); + usb_fs_device.out_ep[ep_idx].is_stalled = 1U; + } + else + { + USB_Set_EPx_Status(ep_idx, USB_EP_STATUS_STALL); + usb_fs_device.in_ep[ep_idx].is_stalled = 1U; + } + } + return 0; + case DEVICE_CTRL_USB_DC_CLR_STALL /* constant-expression */: + { + uint8_t ep_idx = USB_EP_GET_IDX(((uint32_t)args) & 0x7f); + if (USB_EP_DIR_IS_OUT(((uint32_t)args) & 0x7f)) + { + USB_Set_EPx_Status(ep_idx, USB_EP_STATUS_NSTALL); + usb_fs_device.out_ep[ep_idx].is_stalled = 0; + } + else + { + USB_Set_EPx_Status(ep_idx, USB_EP_STATUS_NSTALL); + usb_fs_device.in_ep[ep_idx].is_stalled = 0; + } + } + return 0; + case DEVICE_CTRL_USB_DC_TX_FIFO_CNT_GET: + return USB_Get_EPx_TX_FIFO_CNT(((uint32_t)args) & 0x7f); + case DEVICE_CTRL_USB_DC_RX_FIFO_CNT_GET: + return USB_Get_EPx_RX_FIFO_CNT(((uint32_t)args) & 0x7f); + default: + break; + } + return 0; +} + +// int usb_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t size) +// { + +// } + +// int usb_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size) +// { + +// } + +/** + * @brief configure and enable endpoint + * This function sets endpoint configuration according to one specified in USB + * endpoint descriptor and then enables it for data transfers. + * + * @param dev + * @param ep_cfg ep_cfg Endpoint + * @return int + */ +int usb_dc_ep_open(struct device *dev, const struct usb_dc_ep_cfg *ep_cfg) +{ + uint8_t ep; + EP_Config_Type epCfg; + + if (!ep_cfg) + { + return -1; + } + ep = ep_cfg->ep_addr; + + uint8_t ep_idx = USB_EP_GET_IDX(ep); + + USB_DC_LOG_DBG("%s ep %x, mps %d, type %d\r\n", __func__, ep, ep_cfg->ep_mps, ep_cfg->ep_type); + + if (USB_EP_DIR_IS_OUT(ep)) + { + epCfg.dir = EP_OUT; + epCfg.EPMaxPacketSize = ep_cfg->ep_mps; + usb_fs_device.out_ep[ep_idx].ep_cfg.ep_mps = ep_cfg->ep_mps; + usb_fs_device.out_ep[ep_idx].ep_cfg.ep_type = ep_cfg->ep_type; + } + else + { + epCfg.dir = EP_IN; + epCfg.EPMaxPacketSize = ep_cfg->ep_mps; + usb_fs_device.in_ep[ep_idx].ep_cfg.ep_mps = ep_cfg->ep_mps; + usb_fs_device.in_ep[ep_idx].ep_cfg.ep_type = ep_cfg->ep_type; + } + + if (ep_idx) + { + switch (ep_cfg->ep_type) + { + case USBD_EP_TYPE_CTRL: + epCfg.type = USB_DC_EP_TYPE_CTRL; + break; + case USBD_EP_TYPE_ISOC: + epCfg.type = USB_DC_EP_TYPE_ISOC; + break; + case USBD_EP_TYPE_BULK: + epCfg.type = USB_DC_EP_TYPE_BULK; + break; + case USBD_EP_TYPE_INTR: + epCfg.type = USB_DC_EP_TYPE_INTR; + break; + default: + return -1; + } + USB_Set_EPx_Config(ep_idx, &epCfg); + if (USB_EP_DIR_IS_OUT(ep)) + { + /* Clear NAK and enable ep */ + USB_Set_EPx_Status(USB_EP_GET_IDX(ep), USB_EP_STATUS_ACK); + usb_fs_device.out_ep[ep_idx].ep_ena = 1U; + } + else + { + //USB_Set_EPx_Status(USB_EP_GET_IDX(ep), USB_EP_STATUS_ACK); + USB_Set_EPx_Status(USB_EP_GET_IDX(ep), USB_EP_STATUS_NACK); + usb_fs_device.in_ep[ep_idx].ep_ena = 1U; + } + } + else + { + if (USB_EP_DIR_IS_OUT(ep)) + { + usb_fs_device.out_ep[ep_idx].ep_ena = 1U; + } + else + { + usb_fs_device.in_ep[ep_idx].ep_ena = 1U; + } + } + + return 0; +} + +/** + * @brief Check if the selected endpoint is stalled + * + * @param[in] ep Endpoint address corresponding to the one + * listed in the device configuration table + * @param[out] stalled Endpoint stall status + * + * @return 0 on success, negative errno code on fail. + */ + +/** + * @brief + * + * @param dev + * @param ep + * @param stalled + * @return int + */ +int usb_dc_ep_is_stalled(struct device *dev, const uint8_t ep, uint8_t *stalled) +{ + uint8_t ep_idx = USB_EP_GET_IDX(ep); + + if (!stalled) + { + return -1; + } + + *stalled = 0U; + if (USB_EP_DIR_IS_OUT(ep)) + { + if (USB_Get_EPx_Status(ep_idx) & USB_EP_STATUS_STALL && usb_fs_device.out_ep[ep_idx].is_stalled) + *stalled = 1U; + } + else + { + if (USB_Get_EPx_Status(ep_idx) & USB_EP_STATUS_STALL && usb_fs_device.in_ep[ep_idx].is_stalled) + *stalled = 1U; + } + + return 0; +} +/** + * @brief Write data to the specified endpoint + * + * This function is called to write data to the specified endpoint. The + * supplied usbd_endpoint_callback function will be called when data is transmitted + * out. + * + * @param[in] ep Endpoint address corresponding to the one + * listed in the device configuration table + * @param[in] data Pointer to data to write + * @param[in] data_len Length of the data requested to write. This may + * be zero for a zero length status packet. + * @param[out] ret_bytes Bytes scheduled for transmission. This value + * may be NULL if the application expects all + * bytes to be written + * + * @return 0 on success, negative errno code on fail. + */ + +/** + * @brief + * + * @param dev + * @param ep + * @param data + * @param data_len + * @param ret_bytes + * @return int + */ +int usb_dc_ep_write(struct device *dev, const uint8_t ep, const uint8_t *data, uint32_t data_len, uint32_t *ret_bytes) +{ + uint8_t ep_idx = USB_EP_GET_IDX(ep); + uint32_t timeout = 0x00FFFFFF; + uint32_t ep_tx_fifo_addr; + + /* Check if IN ep */ + if (USB_EP_GET_DIR(ep) != USB_EP_DIR_IN) + { + return -1; + } + + /* Check if ep enabled */ + if (!usb_ep_is_enabled(ep)) + { + return -2; + } + + while (!USB_Is_EPx_RDY_Free(ep_idx)) + { + timeout--; + if (!timeout) + { + USB_DC_LOG_ERR("ep%d wait free timeout\r\n", ep); + return -3; + } + } + + // key = irq_lock(); + if (!data) + { + if (!data_len) + { + /* Zero length packet */ + /* Clear NAK and enable ep */ + USB_Set_EPx_Status(USB_EP_GET_IDX(ep), USB_EP_STATUS_ACK); + return 0; + } + else + { + USB_DC_LOG_ERR("data is null\r\n"); + return -4; + } + } + + if (data_len > usb_fs_device.in_ep[ep_idx].ep_cfg.ep_mps) + { + /* Check if transfer len is too big */ + data_len = usb_fs_device.in_ep[ep_idx].ep_cfg.ep_mps; + } + + /* Wait for FIFO space available */ + do + { + uint32_t avail_space = USB_Get_EPx_TX_FIFO_CNT(ep_idx); + if (avail_space == usb_fs_device.in_ep[ep_idx].ep_cfg.ep_mps) + { + break; + } + /* Make sure we don't hog the CPU */ + // k_yield(); + //USB_DC_LOG_ERR("EP%d have remain data\r\n", ep_idx); + } + while (1); + + /* + * Write data to FIFO, make sure that we are protected against + * other USB register accesses. According to "DesignWare Cores + * USB 1.1/2.0 Device Subsystem-AHB/VCI Databook": "During FIFO + * access, the application must not access the UDC/Subsystem + * registers or vendor registers (for ULPI mode). After starting + * to access a FIFO, the application must complete the transaction + * before accessing the register." + */ + ep_tx_fifo_addr = USB_BASE + USB_EP0_TX_FIFO_WDATA_OFFSET + ep_idx * 0x10; + memcopy_to_fifo((void *)ep_tx_fifo_addr, (uint8_t *)data, data_len); + /* Clear NAK and enable ep */ + USB_Set_EPx_Status(USB_EP_GET_IDX(ep), USB_EP_STATUS_ACK); + + // irq_unlock(key); + + USB_DC_LOG_DBG("EP%d write %u bytes\r\n", ep_idx, data_len); + + if (ret_bytes) + { + *ret_bytes = data_len; + } + + return 0; +} +/** + * @brief Read data from the specified endpoint + * + * This is similar to usb_dc_ep_read, the difference being that, it doesn't + * clear the endpoint NAKs so that the consumer is not bogged down by further + * upcalls till he is done with the processing of the data. The caller should + * reactivate ep by invoking usb_dc_ep_read_continue() do so. + * + * @param[in] ep Endpoint address corresponding to the one + * listed in the device configuration table + * @param[in] data Pointer to data buffer to write to + * @param[in] max_data_len Max length of data to read + * @param[out] read_bytes Number of bytes read. If data is NULL and + * max_data_len is 0 the number of bytes + * available for read should be returned. + * + * @return 0 on success, negative errno code on fail. + */ + +/** + * @brief + * + * @param dev + * @param ep + * @param data + * @param data_len + * @param read_bytes + * @return int + */ +int usb_dc_ep_read(struct device *dev, const uint8_t ep, uint8_t *data, uint32_t data_len, uint32_t *read_bytes) +{ + uint8_t ep_idx = USB_EP_GET_IDX(ep); + uint32_t read_count; + uint32_t ep_rx_fifo_addr; + uint32_t timeout = 0x00FFFFFF; + /* Check if OUT ep */ + if (USB_EP_GET_DIR(ep) != USB_EP_DIR_OUT) + { + USB_DC_LOG_ERR("Wrong endpoint direction\r\n"); + return -1; + } + + /* Check if ep enabled */ + if (!usb_ep_is_enabled(ep)) + { + USB_DC_LOG_ERR("Not enabled endpoint\r\n"); + return -1; + } + + if(ep_idx) + { + while (!USB_Is_EPx_RDY_Free(ep_idx)) + { + timeout--; + if (!timeout) + { + USB_DC_LOG_ERR("ep%d wait free timeout\r\n", ep); + return -USB_DC_EP_TIMEOUT_ERR; + } + } + } + + /* Allow to read 0 bytes */ + if (!data_len) + { + /* Clear NAK and enable ep */ + USB_Set_EPx_Status(USB_EP_GET_IDX(ep), USB_EP_STATUS_ACK); + return 0; + } + + read_count = USB_Get_EPx_RX_FIFO_CNT(ep_idx); + read_count = MIN(read_count, data_len); + + /* Data in the FIFOs is always stored per 8-bit word*/ + ep_rx_fifo_addr = (USB_BASE + USB_EP0_RX_FIFO_RDATA_OFFSET + ep_idx * 0x10); + fifocopy_to_mem((void *)ep_rx_fifo_addr, data, read_count); + USB_DC_LOG_DBG("Read EP%d, req %d, read %d bytes\r\n", ep, data_len, read_count); + + if (read_bytes) + { + *read_bytes = read_count; + } + + return 0; +} +/** + * @brief + * + * @param index + * @param name + * @param flag + * @return int + */ +int usb_dc_register(enum usb_index_type index, const char *name, uint16_t flag) +{ + struct device *dev; + + if (USB_MAX_INDEX == 0) + return -DEVICE_EINVAL; + + dev = &(usb_fs_device.parent); + + dev->open = usb_open; + dev->close = usb_close; + dev->control = usb_control; + // dev->write = usb_write; + // dev->read = usb_read; + + dev->status = DEVICE_UNREGISTER; + dev->type = DEVICE_CLASS_USB; + dev->handle = NULL; + + return device_register(dev, name, flag); +} + +/** + * @brief + * + * @param dev + * @param rb + * @param ep + * @return uint16_t + */ +uint16_t usb_dc_receive_to_ringbuffer(struct device *dev, Ring_Buffer_Type *rb, uint8_t ep) +{ + uint8_t ep_idx; + uint8_t recv_len; + uint32_t timeout = 0x00FFFFFF; + static bool overflow_flag = false; + + /* Check if OUT ep */ + if (USB_EP_GET_DIR(ep) != USB_EP_DIR_OUT) + { + USB_DC_LOG_ERR("Wrong endpoint direction\r\n"); + return -USB_DC_EP_DIR_ERR; + } + /* Check if ep enabled */ + if (!usb_ep_is_enabled(ep)) + { + return -USB_DC_EP_EN_ERR; + } + + ep_idx = USB_EP_GET_IDX(ep); + + while (!USB_Is_EPx_RDY_Free(ep_idx)) + { + timeout--; + if (!timeout) + { + USB_DC_LOG_ERR("ep%d wait free timeout\r\n", ep); + return -USB_DC_EP_TIMEOUT_ERR; + } + } + recv_len = USB_Get_EPx_RX_FIFO_CNT(ep_idx); + + /*if rx fifo count equal 0,it means last is send nack and ringbuffer is smaller than 64, + * so,if ringbuffer is larger than 64,set ack to recv next data. + */ + if(overflow_flag && (Ring_Buffer_Get_Empty_Length(rb)>64)) + { + overflow_flag = false; + USB_Set_EPx_Rdy(ep_idx); + return -USB_DC_RB_SIZE_SMALL_ERR; + } + + else if(recv_len) + { + uint32_t addr = USB_BASE + 0x11C + (ep_idx - 1) * 0x10; + uint32_t actual_len = Ring_Buffer_Write_Callback(rb, recv_len, fifocopy_to_mem, (void *)addr); + + if(Ring_Buffer_Get_Empty_Length(rb) < 64) + { + overflow_flag = true; + return actual_len; + } + + USB_Set_EPx_Rdy(ep_idx); + return actual_len; + } + return 0; +} +/** + * @brief + * + * @param dev + * @param rb + * @param ep + * @return uint16_t + */ +uint16_t usb_dc_send_from_ringbuffer(struct device *dev, Ring_Buffer_Type *rb, uint8_t ep) +{ + uint8_t ep_idx; + uint32_t timeout = 0x00FFFFFF; + static bool zlp_flag = false; + static uint32_t send_total_len = 0; + ep_idx = USB_EP_GET_IDX(ep); + /* Check if IN ep */ + if (USB_EP_GET_DIR(ep) != USB_EP_DIR_IN) + { + return -USB_DC_EP_DIR_ERR; + } + + /* Check if ep enabled */ + if (!usb_ep_is_enabled(ep)) + { + return -USB_DC_EP_EN_ERR; + } + + while (!USB_Is_EPx_RDY_Free(ep_idx)) + { + timeout--; + if (!timeout) + { + USB_DC_LOG_ERR("ep%d wait free timeout\r\n", ep); + return -USB_DC_EP_TIMEOUT_ERR; + } + } + + uint32_t addr = USB_BASE + 0x118 + (ep_idx - 1) * 0x10; + + if(zlp_flag == false) + { + if (USB_Get_EPx_TX_FIFO_CNT(ep_idx) == USB_FS_MAX_PACKET_SIZE && Ring_Buffer_Get_Length(rb)) + { + uint32_t actual_len = Ring_Buffer_Read_Callback(rb, USB_FS_MAX_PACKET_SIZE, memcopy_to_fifo, (void *)addr); + send_total_len += actual_len; + if(!Ring_Buffer_Get_Length(rb) && (!(send_total_len % 64))) + { + zlp_flag = true; + } + USB_Set_EPx_Rdy(ep_idx); + + return actual_len; + } + else + { + return -USB_DC_RB_SIZE_SMALL_ERR; + } + } + else + { + zlp_flag = false; + send_total_len = 0; + USB_Set_EPx_Rdy(ep_idx); + return -USB_DC_ZLP_ERR; + } + + return 0; +} + +/** + * @brief This function handles PCD interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ + +/** + * @brief + * + * @param device + */ +void usb_dc_isr(usb_dc_device_t *device) +{ + USB_EP_ID epnum = EP_ID0; + + /* EP1_DONE -> EP2_DONE -> ...... -> EP7_DONE*/ + for (USB_INT_Type epint = USB_INT_EP1_DONE; epint <= USB_INT_EP7_DONE; epint += 2) + { + if (USB_Get_IntStatus(epint)) + { + epnum = (epint - USB_INT_EP0_OUT_CMD) >> 1; + device->parent.callback(&device->parent,(void*)((uint32_t)USB_SET_EP_OUT(epnum)),0,USB_DC_EVENT_EP_OUT_NOTIFY); + USB_Clr_IntStatus(epint); + return; + } + } + + /* EP1_CMD -> EP2_CMD -> ...... -> EP7_CMD*/ + for (USB_INT_Type epint = USB_INT_EP1_CMD; epint <= USB_INT_EP7_CMD; epint += 2) + { + if (USB_Get_IntStatus(epint)) + { + epnum = (epint - USB_INT_EP0_OUT_CMD) >> 1; + device->parent.callback(&device->parent,(void*)((uint32_t)USB_SET_EP_IN(epnum)),0,USB_DC_EVENT_EP_IN_NOTIFY); + USB_Clr_IntStatus(epint); + return; + } + } + + /* reset */ + if (USB_Get_IntStatus(USB_INT_SOF)) + { + USB_DC_LOG("sof\r\n"); + device->parent.callback(&device->parent,NULL,0,USB_DC_EVENT_SOF); + USB_Clr_IntStatus(USB_INT_SOF); + return; + } + + /* reset */ + if (USB_Get_IntStatus(USB_INT_RESET)) + { + USB_DC_LOG("reset\r\n"); + device->parent.callback(&device->parent,NULL,0,USB_DC_EVENT_RESET); + USB_Clr_IntStatus(USB_INT_RESET); + return; + } + + /* vbus toggle */ + if (USB_Get_IntStatus(USB_INT_VBUS_TGL)) + { + USB_DC_LOG("vbus toggle\r\n"); + /*************************************/ + /*************************************/ + USB_Clr_IntStatus(USB_INT_VBUS_TGL); + return; + } + + /* EP0 setup done */ + if (USB_Get_IntStatus(USB_INT_EP0_SETUP_DONE)) + { + USB_DC_LOG("S\r\n"); + device->parent.callback(&device->parent,NULL,0,USB_DC_EVENT_SETUP_NOTIFY); + USB_Clr_IntStatus(USB_INT_EP0_SETUP_DONE); + return; + } + + /* EP0 in done */ + if (USB_Get_IntStatus(USB_INT_EP0_IN_DONE)) + { + USB_DC_LOG("I\r\n"); + device->parent.callback(&device->parent,(void*)0x80,0,USB_DC_EVENT_EP0_IN_NOTIFY); + USB_Clr_IntStatus(USB_INT_EP0_IN_DONE); + return; + } + + /* EP0 out done */ + if (USB_Get_IntStatus(USB_INT_EP0_OUT_DONE)) + { + USB_DC_LOG("O\r\n"); + device->parent.callback(&device->parent,(void*)0x00,0,USB_DC_EVENT_EP0_OUT_NOTIFY); + /*************************************/ + USB_Clr_IntStatus(USB_INT_EP0_OUT_DONE); + return; + } + + /* reset end */ + if (USB_Get_IntStatus(USB_INT_RESET_END)) + { + USB_DC_LOG("re\r\n"); + /*************************************/ + USB_Set_EPx_Rdy(EP_ID0); + /*************************************/ + USB_Clr_IntStatus(USB_INT_RESET_END); + return; + } + + /* LPM wakeup */ + /* usb wakeup interrupt, need update by reg_excel_files */ + if (USB_Get_IntStatus(USB_INT_LPM_WAKEUP)) + { + /*************************************/ + /*set wInterrupt_Mask global variable*/ + //HAL_PCD_ResumeCallback(hpcd); + /*************************************/ + USB_Clr_IntStatus(USB_INT_LPM_WAKEUP); + return; + } + + /* LPM packet */ + /* usb suspend interrupt, need update by reg_excel_files */ + if (USB_Get_IntStatus(USB_INT_LPM_PACKET)) + { + /*************************************/ + /* Force low-power mode in the macrocell */ + if (USB_Get_IntStatus(USB_INT_LPM_WAKEUP) == 0) + { + //HAL_PCD_SuspendCallback(hpcd); + } + /*************************************/ + USB_Clr_IntStatus(USB_INT_LPM_PACKET); + return; + } + + /* lost 3 SOF */ + if (USB_Get_IntStatus(USB_INT_LOST_SOF_3_TIMES)) + { + USB_DC_LOG_ERR("Lost 3 SOFs\r\n"); + /*************************************/ + /*************************************/ + USB_Clr_IntStatus(USB_INT_LOST_SOF_3_TIMES); + return; + } + /* error */ + if (USB_Get_IntStatus(USB_INT_ERROR)) + { + USB_DC_LOG("USB bus error 0x%08x; EP2 fifo status 0x%08x\r\n", *(volatile uint32_t *)(0x4000D81C), *(volatile uint32_t *)(0x4000D920)); + /*************************************/ + /*************************************/ + device->parent.callback(&device->parent,NULL,0,USB_DC_EVENT_ERROR); + USB_Clr_IntStatus(USB_INT_ERROR); + return; + } +} +/** + * @brief + * + */ +void USB_IRQHandler(void) +{ + usb_dc_isr(&usb_fs_device); +} \ No newline at end of file diff --git a/drivers/bl702_driver/regs/aon_reg.h b/drivers/bl702_driver/regs/aon_reg.h new file mode 100644 index 00000000..6816d00f --- /dev/null +++ b/drivers/bl702_driver/regs/aon_reg.h @@ -0,0 +1,1554 @@ +/** + ****************************************************************************** + * @file aon_reg.h + * @version V1.2 + * @date 2020-03-30 + * @brief This file is the description of.IP register + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2019 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __AON_REG_H__ +#define __AON_REG_H__ + +#include "bl702.h" + +/* 0x800 : aon */ +#define AON_OFFSET (0x800) +#define AON_RESV AON_RESV +#define AON_RESV_POS (0U) +#define AON_RESV_LEN (8U) +#define AON_RESV_MSK (((1U<>8)&0xff;p[2]=(val>>16)&0xff;p[3]=(val>>24)&0xff;} +/** + * @brief Register access macro + */ +#define BL_RD_REG16(addr,regname) BL_RD_SHORT(addr+regname##_OFFSET) +#define BL_WR_REG16(addr,regname,val) BL_WR_SHORT(addr+regname##_OFFSET,val) +#define BL_RD_REG(addr,regname) BL_RD_WORD(addr+regname##_OFFSET) +#define BL_WR_REG(addr,regname,val) BL_WR_WORD(addr+regname##_OFFSET,val) +#define BL_SET_REG_BIT(val,bitname) ( (val) |(1U<> bitname##_POS ) +#define BL_SET_REG_BITS_VAL(val,bitname,bitval) ( ((val)&bitname##_UMSK) | ((uint32_t)(bitval)< +#include +/* ARM CPU include files */ +#ifdef ARCH_ARM +#ifdef CPU_AP_CM4 + #include "core_cm4.h" /* Cortex-M4 processor and core peripherals */ +#endif +#ifdef CPU_NP_CM0 + #include "core_cm0.h" /* Cortex-M0 processor and core peripherals */ +#endif +#endif +/* RISCV CPU include files */ +#ifdef ARCH_RISCV +#ifdef __GNUC__ + #include "cmsis_compatible_gcc.h" + #include "clic.h" + #include "riscv_encoding.h" +#endif +#endif + +/** + * @} + */ + + + + + + + +#endif diff --git a/drivers/bl702_driver/regs/bl70x_reg.svc b/drivers/bl702_driver/regs/bl70x_reg.svc new file mode 100644 index 00000000..c7c3d31a --- /dev/null +++ b/drivers/bl702_driver/regs/bl70x_reg.svc @@ -0,0 +1,6063 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/drivers/bl702_driver/regs/cam_reg.h b/drivers/bl702_driver/regs/cam_reg.h new file mode 100644 index 00000000..e1b33be3 --- /dev/null +++ b/drivers/bl702_driver/regs/cam_reg.h @@ -0,0 +1,1158 @@ +/** + ****************************************************************************** + * @file cam_reg.h + * @version V1.2 + * @date 2020-03-30 + * @brief This file is the description of.IP register + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2019 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __CAM_REG_H__ +#define __CAM_REG_H__ + +#include "bl702.h" + +/* 0x0 : dvp2axi_configue */ +#define CAM_DVP2AXI_CONFIGUE_OFFSET (0x0) +#define CAM_REG_DVP_ENABLE CAM_REG_DVP_ENABLE +#define CAM_REG_DVP_ENABLE_POS (0U) +#define CAM_REG_DVP_ENABLE_LEN (1U) +#define CAM_REG_DVP_ENABLE_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __CCI_REG_H__ +#define __CCI_REG_H__ + +#include "bl702.h" + +/* 0x0 : cci_cfg */ +#define CCI_CFG_OFFSET (0x0) +#define CCI_EN CCI_EN +#define CCI_EN_POS (0U) +#define CCI_EN_LEN (1U) +#define CCI_EN_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __CKS_REG_H__ +#define __CKS_REG_H__ + +#include "bl702.h" + +/* 0x0 : cks_config */ +#define CKS_CONFIG_OFFSET (0x0) +#define CKS_CR_CKS_CLR CKS_CR_CKS_CLR +#define CKS_CR_CKS_CLR_POS (0U) +#define CKS_CR_CKS_CLR_LEN (1U) +#define CKS_CR_CKS_CLR_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __DMA_REG_H__ +#define __DMA_REG_H__ + +#include "bl702.h" + +/* 0x0 : DMA_IntStatus */ +#define DMA_INTSTATUS_OFFSET (0x0) +#define DMA_INTSTATUS DMA_INTSTATUS +#define DMA_INTSTATUS_POS (0U) +#define DMA_INTSTATUS_LEN (8U) +#define DMA_INTSTATUS_MSK (((1U<
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __EF_CTRL_REG_H__ +#define __EF_CTRL_REG_H__ + +#include "bl702.h" + +/* 0x800 : ef_if_ctrl_0 */ +#define EF_CTRL_EF_IF_CTRL_0_OFFSET (0x800) +#define EF_CTRL_EF_IF_0_AUTOLOAD_P1_DONE EF_CTRL_EF_IF_0_AUTOLOAD_P1_DONE +#define EF_CTRL_EF_IF_0_AUTOLOAD_P1_DONE_POS (0U) +#define EF_CTRL_EF_IF_0_AUTOLOAD_P1_DONE_LEN (1U) +#define EF_CTRL_EF_IF_0_AUTOLOAD_P1_DONE_MSK (((1U<
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __EF_DATA_0_REG_H__ +#define __EF_DATA_0_REG_H__ + +#include "bl702.h" + +/* 0x0 : ef_cfg_0 */ +#define EF_DATA_0_EF_CFG_0_OFFSET (0x0) +#define EF_DATA_0_EF_SF_AES_MODE EF_DATA_0_EF_SF_AES_MODE +#define EF_DATA_0_EF_SF_AES_MODE_POS (0U) +#define EF_DATA_0_EF_SF_AES_MODE_LEN (2U) +#define EF_DATA_0_EF_SF_AES_MODE_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __EF_DATA_1_REG_H__ +#define __EF_DATA_1_REG_H__ + +#include "bl702.h" + +/* 0x80 : reg_key_slot_6_w0 */ +#define EF_DATA_1_REG_KEY_SLOT_6_W0_OFFSET (0x80) +#define EF_DATA_1_REG_KEY_SLOT_6_W0 EF_DATA_1_REG_KEY_SLOT_6_W0 +#define EF_DATA_1_REG_KEY_SLOT_6_W0_POS (0U) +#define EF_DATA_1_REG_KEY_SLOT_6_W0_LEN (32U) +#define EF_DATA_1_REG_KEY_SLOT_6_W0_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __EMAC_REG_H__ +#define __EMAC_REG_H__ + +#include "bl702.h" + +/* 0x0 : MODE */ +#define EMAC_MODE_OFFSET (0x0) +#define EMAC_RXEN EMAC_RXEN +#define EMAC_RXEN_POS (0U) +#define EMAC_RXEN_LEN (1U) +#define EMAC_RXEN_MSK (((1U<
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __GLB_REG_H__ +#define __GLB_REG_H__ + +#include "bl702.h" + +/* 0x0 : clk_cfg0 */ +#define GLB_CLK_CFG0_OFFSET (0x0) +#define GLB_REG_PLL_EN GLB_REG_PLL_EN +#define GLB_REG_PLL_EN_POS (0U) +#define GLB_REG_PLL_EN_LEN (1U) +#define GLB_REG_PLL_EN_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __GPIP_REG_H__ +#define __GPIP_REG_H__ + +#include "bl702.h" + +/* 0x0 : gpadc_config */ +#define GPIP_GPADC_CONFIG_OFFSET (0x0) +#define GPIP_GPADC_DMA_EN GPIP_GPADC_DMA_EN +#define GPIP_GPADC_DMA_EN_POS (0U) +#define GPIP_GPADC_DMA_EN_LEN (1U) +#define GPIP_GPADC_DMA_EN_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __HBN_REG_H__ +#define __HBN_REG_H__ + +#include "bl702.h" + +/* 0x0 : HBN_CTL */ +#define HBN_CTL_OFFSET (0x0) +#define HBN_RTC_CTL HBN_RTC_CTL +#define HBN_RTC_CTL_POS (0U) +#define HBN_RTC_CTL_LEN (7U) +#define HBN_RTC_CTL_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __I2C_REG_H__ +#define __I2C_REG_H__ + +#include "bl702.h" + +/* 0x0 : i2c_config */ +#define I2C_CONFIG_OFFSET (0x0) +#define I2C_CR_I2C_M_EN I2C_CR_I2C_M_EN +#define I2C_CR_I2C_M_EN_POS (0U) +#define I2C_CR_I2C_M_EN_LEN (1U) +#define I2C_CR_I2C_M_EN_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __I2S_REG_H__ +#define __I2S_REG_H__ + +#include "bl702.h" + +/* 0x0 : i2s_config */ +#define I2S_CONFIG_OFFSET (0x0) +#define I2S_CR_I2S_M_EN I2S_CR_I2S_M_EN +#define I2S_CR_I2S_M_EN_POS (0U) +#define I2S_CR_I2S_M_EN_LEN (1U) +#define I2S_CR_I2S_M_EN_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __IR_REG_H__ +#define __IR_REG_H__ + +#include "bl702.h" + +/* 0x0 : irtx_config */ +#define IRTX_CONFIG_OFFSET (0x0) +#define IR_CR_IRTX_EN IR_CR_IRTX_EN +#define IR_CR_IRTX_EN_POS (0U) +#define IR_CR_IRTX_EN_LEN (1U) +#define IR_CR_IRTX_EN_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __KYS_REG_H__ +#define __KYS_REG_H__ + +#include "bl702.h" + +/* 0x0 : ks_ctrl */ +#define KYS_KS_CTRL_OFFSET (0x0) +#define KYS_KS_EN KYS_KS_EN +#define KYS_KS_EN_POS (0U) +#define KYS_KS_EN_LEN (1U) +#define KYS_KS_EN_MSK (((1U<
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __L1C_REG_H__ +#define __L1C_REG_H__ + +#include "bl702.h" + +/* 0x0 : l1c_config */ +#define L1C_CONFIG_OFFSET (0x0) +#define L1C_CACHEABLE L1C_CACHEABLE +#define L1C_CACHEABLE_POS (0U) +#define L1C_CACHEABLE_LEN (1U) +#define L1C_CACHEABLE_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __MJPEG_REG_H__ +#define __MJPEG_REG_H__ + +#include "bl702.h" + +/* 0x0 : mjpeg_control_1 */ +#define MJPEG_CONTROL_1_OFFSET (0x0) +#define MJPEG_REG_MJPEG_ENABLE MJPEG_REG_MJPEG_ENABLE +#define MJPEG_REG_MJPEG_ENABLE_POS (0U) +#define MJPEG_REG_MJPEG_ENABLE_LEN (1U) +#define MJPEG_REG_MJPEG_ENABLE_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __PDM_REG_H__ +#define __PDM_REG_H__ + +#include "bl702.h" + +/* 0x0 : pdm_datapath_config */ +#define PDM_DATAPATH_CONFIG_OFFSET (0x0) +#define PDM_EN PDM_EN +#define PDM_EN_POS (0U) +#define PDM_EN_LEN (1U) +#define PDM_EN_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __PDS_REG_H__ +#define __PDS_REG_H__ + +#include "bl702.h" + +/* 0x0 : PDS_CTL */ +#define PDS_CTL_OFFSET (0x0) +#define PDS_START_PS PDS_START_PS +#define PDS_START_PS_POS (0U) +#define PDS_START_PS_LEN (1U) +#define PDS_START_PS_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __PWM_REG_H__ +#define __PWM_REG_H__ + +#include "bl702.h" + +/* 0x0 : pwm_int_config */ +#define PWM_INT_CONFIG_OFFSET (0x0) +#define PWM_INTERRUPT_STS PWM_INTERRUPT_STS +#define PWM_INTERRUPT_STS_POS (0U) +#define PWM_INTERRUPT_STS_LEN (6U) +#define PWM_INTERRUPT_STS_MSK (((1U<
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __QDEC_REG_H__ +#define __QDEC_REG_H__ + +#include "bl702.h" + +/* 0x0 : qdec0_ctrl0 */ +#define QDEC0_CTRL0_OFFSET (0x0) +#define QDEC_EN QDEC_EN +#define QDEC_EN_POS (0U) +#define QDEC_EN_LEN (1U) +#define QDEC_EN_MSK (((1U<
© COPYRIGHT(c) 2018 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __RF_FPGA_REG_H__ +#define __RF_FPGA_REG_H__ + +#include "bl702.h" + +/* 0x600 : rf_fpga_ctrl_0 */ +#define RF_FPGA_CTRL_0_OFFSET (0x600) +#define RF_FPGA_RF_FSM_ST_CCI_4S RF_FPGA_RF_FSM_ST_CCI_4S +#define RF_FPGA_RF_FSM_ST_CCI_4S_POS (0U) +#define RF_FPGA_RF_FSM_ST_CCI_4S_LEN (5U) +#define RF_FPGA_RF_FSM_ST_CCI_4S_MSK (((1U<
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __RF_REG_H__ +#define __RF_REG_H__ + +#include "bl702.h" + +/* 0x0 : Silicon revision */ +#define RF_REV_OFFSET (0x0) +#define RF_REV RF_REV +#define RF_REV_POS (0U) +#define RF_REV_LEN (8U) +#define RF_REV_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __SEC_DBG_REG_H__ +#define __SEC_DBG_REG_H__ + +#include "bl702.h" + +/* 0x0 : sd_chip_id_low */ +#define SEC_DBG_SD_CHIP_ID_LOW_OFFSET (0x0) +#define SEC_DBG_SD_CHIP_ID_LOW SEC_DBG_SD_CHIP_ID_LOW +#define SEC_DBG_SD_CHIP_ID_LOW_POS (0U) +#define SEC_DBG_SD_CHIP_ID_LOW_LEN (32U) +#define SEC_DBG_SD_CHIP_ID_LOW_MSK (((1U<
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __SEC_ENG_REG_H__ +#define __SEC_ENG_REG_H__ + +#include "bl702.h" + +/* 0x0 : se_sha_0_ctrl */ +#define SEC_ENG_SE_SHA_0_CTRL_OFFSET (0x0) +#define SEC_ENG_SE_SHA_0_BUSY SEC_ENG_SE_SHA_0_BUSY +#define SEC_ENG_SE_SHA_0_BUSY_POS (0U) +#define SEC_ENG_SE_SHA_0_BUSY_LEN (1U) +#define SEC_ENG_SE_SHA_0_BUSY_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __SF_CTRL_REG_H__ +#define __SF_CTRL_REG_H__ + +#include "bl702.h" + +/* 0x0 : sf_ctrl_0 */ +#define SF_CTRL_0_OFFSET (0x0) +#define SF_CTRL_SF_CLK_SF_RX_INV_SEL SF_CTRL_SF_CLK_SF_RX_INV_SEL +#define SF_CTRL_SF_CLK_SF_RX_INV_SEL_POS (2U) +#define SF_CTRL_SF_CLK_SF_RX_INV_SEL_LEN (1U) +#define SF_CTRL_SF_CLK_SF_RX_INV_SEL_MSK (((1U< + + bouffalolab + bouffalolab + 702 + WiFi BT + high-performance, 32-bit RV32IMAFC core + 8 + 32 + 32 + 0x00000000 + 0xFFFFFFFF + + 702 + little + + + + glb + glb. + 0x40000000 + glb + 32 + read-write + + 0 + 0x1000 + registers + + + + clk_cfg0 + clk_cfg0. + 0x0 + + + glb_id + 28 + 31 + + + chip_rdy + 27 + 27 + + + fclk_sw_state + 24 + 26 + + + reg_bclk_div + 16 + 23 + + + reg_hclk_div + 8 + 15 + + + hbn_root_clk_sel + 6 + 7 + + + reg_pll_sel + 4 + 5 + + + reg_bclk_en + 3 + 3 + + + reg_hclk_en + 2 + 2 + + + reg_fclk_en + 1 + 1 + + + reg_pll_en + 0 + 0 + + + + + clk_cfg1 + clk_cfg1. + 0x4 + + + reg_cam_ref_clk_div + 30 + 31 + + + reg_cam_ref_clk_src_sel + 29 + 29 + + + reg_cam_ref_clk_en + 28 + 28 + + + m154_zbEn + 25 + 25 + + + ble_en + 24 + 24 + + + ble_clk_sel + 16 + 21 + + + reg_i2s_0_ref_clk_oe + 14 + 14 + + + reg_i2s0_clk_en + 13 + 13 + + + reg_i2s_clk_sel + 12 + 12 + + + dll_48m_div_en + 9 + 9 + + + usb_clk_en + 8 + 8 + + + qdec_clk_sel + 7 + 7 + + + qdec_clk_div + 0 + 4 + + + + + clk_cfg2 + clk_cfg2. + 0x8 + + + dma_clk_en + 24 + 31 + + + ir_clk_en + 23 + 23 + + + ir_clk_div + 16 + 21 + + + sf_clk_sel2 + 14 + 15 + + + sf_clk_sel + 12 + 13 + + + sf_clk_en + 11 + 11 + + + sf_clk_div + 8 + 10 + + + hbn_uart_clk_sel + 7 + 7 + + + uart_clk_en + 4 + 4 + + + uart_clk_div + 0 + 2 + + + + + clk_cfg3 + clk_cfg3. + 0xC + + + chip_clk_out_1_sel + 30 + 31 + + + chip_clk_out_0_sel + 28 + 29 + + + i2c_clk_en + 24 + 24 + + + i2c_clk_div + 16 + 23 + + + cfg_inv_eth_rx_clk + 10 + 10 + + + cfg_inv_rf_test_clk_o + 9 + 9 + + + spi_clk_en + 8 + 8 + + + cfg_inv_eth_tx_clk + 7 + 7 + + + cfg_inv_eth_ref_clk_o + 6 + 6 + + + cfg_sel_eth_ref_clk_o + 5 + 5 + + + spi_clk_div + 0 + 4 + + + + + swrst_cfg0 + swrst_cfg0. + 0x10 + + + swrst_s30 + 8 + 8 + + + swrst_s20 + 4 + 4 + + + swrst_s01 + 1 + 1 + + + swrst_s00 + 0 + 0 + + + + + swrst_cfg1 + swrst_cfg1. + 0x14 + + + swrst_s1ae + 30 + 30 + + + swrst_s1ad + 29 + 29 + + + swrst_s1ac + 28 + 28 + + + swrst_s1ab + 27 + 27 + + + swrst_s1aa + 26 + 26 + + + swrst_s1a9 + 25 + 25 + + + swrst_s1a8 + 24 + 24 + + + swrst_s1a7 + 23 + 23 + + + swrst_s1a6 + 22 + 22 + + + swrst_s1a5 + 21 + 21 + + + swrst_s1a4 + 20 + 20 + + + swrst_s1a3 + 19 + 19 + + + swrst_s1a2 + 18 + 18 + + + swrst_s1a1 + 17 + 17 + + + swrst_s1a0 + 16 + 16 + + + swrst_s1f + 15 + 15 + + + swrst_s1e + 14 + 14 + + + swrst_s1d + 13 + 13 + + + swrst_s1c + 12 + 12 + + + swrst_s1b + 11 + 11 + + + swrst_s1a + 10 + 10 + + + swrst_s19 + 9 + 9 + + + swrst_s18 + 8 + 8 + + + swrst_s17 + 7 + 7 + + + swrst_s16 + 6 + 6 + + + swrst_s15 + 5 + 5 + + + swrst_s14 + 4 + 4 + + + swrst_s13 + 3 + 3 + + + swrst_s12 + 2 + 2 + + + swrst_s11 + 1 + 1 + + + swrst_s10 + 0 + 0 + + + + + swrst_cfg2 + swrst_cfg2. + 0x18 + + + pka_clk_sel + 24 + 24 + + + reg_ctrl_reset_dummy + 4 + 7 + + + reg_ctrl_sys_reset + 2 + 2 + + + reg_ctrl_cpu_reset + 1 + 1 + + + reg_ctrl_pwron_rst + 0 + 0 + + + + + swrst_cfg3 + swrst_cfg3. + 0x1C + + + + cgen_cfg0 + cgen_cfg0. + 0x20 + + + cgen_m + 0 + 7 + + + + + cgen_cfg1 + cgen_cfg1. + 0x24 + + + cgen_s1a + 16 + 31 + + + cgen_s1 + 0 + 15 + + + + + cgen_cfg2 + cgen_cfg2. + 0x28 + + + cgen_s3 + 4 + 4 + + + cgen_s2 + 0 + 0 + + + + + cgen_cfg3 + cgen_cfg3. + 0x2C + + + + MBIST_CTL + MBIST_CTL. + 0x30 + + + reg_mbist_rst_n + 31 + 31 + + + em_ram_mbist_mode + 5 + 5 + + + ocram_mbist_mode + 4 + 4 + + + tag_mbist_mode + 3 + 3 + + + hsram_cache_mbist_mode + 2 + 2 + + + hsram_mem_mbist_mode + 1 + 1 + + + irom_mbist_mode + 0 + 0 + + + + + MBIST_STAT + MBIST_STAT. + 0x34 + + + em_ram_mbist_fail + 21 + 21 + + + ocram_mbist_fail + 20 + 20 + + + tag_mbist_fail + 19 + 19 + + + hsram_cache_mbist_fail + 18 + 18 + + + hsram_mem_mbist_fail + 17 + 17 + + + irom_mbist_fail + 16 + 16 + + + em_ram_mbist_done + 5 + 5 + + + ocram_mbist_done + 4 + 4 + + + tag_mbist_done + 3 + 3 + + + hsram_cache_mbist_done + 2 + 2 + + + hsram_mem_mbist_done + 1 + 1 + + + irom_mbist_done + 0 + 0 + + + + + bmx_cfg1 + bmx_cfg1. + 0x50 + + + hbn_apb_cfg + 24 + 31 + + + pds_apb_cfg + 16 + 23 + + + hsel_option + 12 + 15 + + + bmx_gating_dis + 10 + 10 + + + bmx_busy_option_dis + 9 + 9 + + + bmx_err_en + 8 + 8 + + + bmx_arb_mode + 4 + 5 + + + bmx_timeout_en + 0 + 3 + + + + + bmx_cfg2 + bmx_cfg2. + 0x54 + + + bmx_dbg_sel + 28 + 31 + + + reg_w_thre_l1c + 10 + 11 + + + reg_w_thre_bmx + 8 + 9 + + + bmx_err_tz + 5 + 5 + + + bmx_err_dec + 4 + 4 + + + bmx_err_addr_dis + 0 + 0 + + + + + bmx_err_addr + bmx_err_addr. + 0x58 + + + bmx_err_addr + 0 + 31 + + + + + bmx_dbg_out + bmx_dbg_out. + 0x5C + + + bmx_dbg_out + 0 + 31 + + + + + rsv0 + rsv0. + 0x60 + + + rsvd_31_0 + 0 + 31 + + + + + rsv1 + rsv1. + 0x64 + + + rsvd_31_0 + 0 + 31 + + + + + rsv2 + rsv2. + 0x68 + + + rsvd_31_0 + 0 + 31 + + + + + rsv3 + rsv3. + 0x6C + + + rsvd_31_0 + 0 + 31 + + + + + sram_ret + sram_ret. + 0x70 + + + reg_sram_ret + 0 + 31 + + + + + sram_slp + sram_slp. + 0x74 + + + reg_sram_slp + 0 + 31 + + + + + sram_parm + sram_parm. + 0x78 + + + reg_sram_parm + 0 + 31 + + + + + seam_misc + seam_misc. + 0x7C + + + em_sel + 0 + 3 + + + + + glb_parm + glb_parm. + 0x80 + + + pin_sel_emac_cam + 31 + 31 + + + reg_ext_rst_smt + 30 + 30 + + + reg_kys_drv_val + 29 + 29 + + + uart_swap_set + 24 + 27 + + + p6_jtag_use_io_0_2_7 + 23 + 23 + + + p5_dac_test_with_jtag + 21 + 21 + + + p4_adc_test_with_jtag + 20 + 20 + + + p3_cci_use_io_0_2_7 + 19 + 19 + + + p2_dac_test_with_cci + 18 + 18 + + + p1_adc_test_with_cci + 17 + 17 + + + reg_cci_use_jtag_pin + 16 + 16 + + + reg_spi_0_swap + 13 + 13 + + + reg_spi_0_master_mode + 12 + 12 + + + cfg_flash_scenario + 10 + 11 + + + cfg_sflash2_swap_cs_io2 + 9 + 9 + + + cfg_sflash2_swap_io0_io3 + 8 + 8 + + + jtag_swap_set + 0 + 7 + + + + + PDM_CLK_CTRL + PDM_CLK_CTRL. + 0x84 + + + reg_pdm0_clk_en + 7 + 7 + + + reg_pdm0_clk_div + 0 + 5 + + + + + GPIO_USE_PSRAM__IO + GPIO_USE_PSRAM__IO. + 0x88 + + + cfg_gpio_use_psram_io + 0 + 5 + + + + + CPU_CLK_CFG + CPU_CLK_CFG. + 0x90 + + + debug_ndreset_gate + 20 + 20 + + + cpu_rtc_sel + 19 + 19 + + + cpu_rtc_en + 18 + 18 + + + cpu_rtc_div + 0 + 16 + + + + + GPADC_32M_SRC_CTRL + GPADC_32M_SRC_CTRL. + 0xA4 + + + gpadc_32m_div_en + 8 + 8 + + + gpadc_32m_clk_sel + 7 + 7 + + + gpadc_32m_clk_div + 0 + 5 + + + + + DIG32K_WAKEUP_CTRL + DIG32K_WAKEUP_CTRL. + 0xA8 + + + reg_en_platform_wakeup + 31 + 31 + + + dig_clk_src_sel + 28 + 29 + + + dig_512k_comp + 25 + 25 + + + dig_512k_en + 24 + 24 + + + dig_512k_div + 16 + 22 + + + dig_32k_comp + 13 + 13 + + + dig_32k_en + 12 + 12 + + + dig_32k_div + 0 + 10 + + + + + WIFI_BT_COEX_CTRL + WIFI_BT_COEX_CTRL. + 0xAC + + + en_gpio_bt_coex + 12 + 12 + + + coex_bt_bw + 11 + 11 + + + coex_bt_pti + 7 + 10 + + + coex_bt_channel + 0 + 6 + + + + + BZ_COEX_CTRL + BZ_COEX_CTRL. + 0xB0 + + + coex_arb + 28 + 31 + + + ble_tx_abort_dis + 27 + 27 + + + ble_rx_abort_dis + 26 + 26 + + + m154_tx_abort_dis + 25 + 25 + + + m154_rx_abort_dis + 24 + 24 + + + coex_force_ch + 16 + 22 + + + coex_option + 15 + 15 + + + force_ble_win + 14 + 14 + + + force_m154_win + 13 + 13 + + + coex_pri + 12 + 12 + + + bz_abort_pol + 11 + 11 + + + bz_active_pol + 10 + 10 + + + bz_pri_pol + 9 + 9 + + + bz_pri_en + 8 + 8 + + + bz_pri_thr + 4 + 7 + + + m154_rx_ignore + 3 + 3 + + + ble_rx_ignore + 2 + 2 + + + wlan_en + 1 + 1 + + + coex_en + 0 + 0 + + + + + UART_SIG_SEL_0 + UART_SIG_SEL_0. + 0xC0 + + + uart_sig_7_sel + 28 + 31 + + + uart_sig_6_sel + 24 + 27 + + + uart_sig_5_sel + 20 + 23 + + + uart_sig_4_sel + 16 + 19 + + + uart_sig_3_sel + 12 + 15 + + + uart_sig_2_sel + 8 + 11 + + + uart_sig_1_sel + 4 + 7 + + + uart_sig_0_sel + 0 + 3 + + + + + DBG_SEL_LL + DBG_SEL_LL. + 0xD0 + + + reg_dbg_ll_ctrl + 0 + 31 + + + + + DBG_SEL_LH + DBG_SEL_LH. + 0xD4 + + + reg_dbg_lh_ctrl + 0 + 31 + + + + + DBG_SEL_HL + DBG_SEL_HL. + 0xD8 + + + reg_dbg_hl_ctrl + 0 + 31 + + + + + DBG_SEL_HH + DBG_SEL_HH. + 0xDC + + + reg_dbg_hh_ctrl + 0 + 31 + + + + + debug + debug. + 0xE0 + + + debug_i + 1 + 31 + + + debug_oe + 0 + 0 + + + + + GPIO_CFGCTL0 + GPIO_CFGCTL0. + 0x100 + + + reg_gpio_1_func_sel + 24 + 28 + + + reg_gpio_1_pd + 21 + 21 + + + reg_gpio_1_pu + 20 + 20 + + + reg_gpio_1_drv + 18 + 19 + + + reg_gpio_1_smt + 17 + 17 + + + reg_gpio_1_ie + 16 + 16 + + + reg_gpio_0_func_sel + 8 + 12 + + + reg_gpio_0_pd + 5 + 5 + + + reg_gpio_0_pu + 4 + 4 + + + reg_gpio_0_drv + 2 + 3 + + + reg_gpio_0_smt + 1 + 1 + + + reg_gpio_0_ie + 0 + 0 + + + + + GPIO_CFGCTL1 + GPIO_CFGCTL1. + 0x104 + + + reg_gpio_3_func_sel + 24 + 28 + + + reg_gpio_3_pd + 21 + 21 + + + reg_gpio_3_pu + 20 + 20 + + + reg_gpio_3_drv + 18 + 19 + + + reg_gpio_3_smt + 17 + 17 + + + reg_gpio_3_ie + 16 + 16 + + + reg_gpio_2_func_sel + 8 + 12 + + + reg_gpio_2_pd + 5 + 5 + + + reg_gpio_2_pu + 4 + 4 + + + reg_gpio_2_drv + 2 + 3 + + + reg_gpio_2_smt + 1 + 1 + + + reg_gpio_2_ie + 0 + 0 + + + + + GPIO_CFGCTL2 + GPIO_CFGCTL2. + 0x108 + + + reg_gpio_5_func_sel + 24 + 28 + + + reg_gpio_5_pd + 21 + 21 + + + reg_gpio_5_pu + 20 + 20 + + + reg_gpio_5_drv + 18 + 19 + + + reg_gpio_5_smt + 17 + 17 + + + reg_gpio_5_ie + 16 + 16 + + + reg_gpio_4_func_sel + 8 + 12 + + + reg_gpio_4_pd + 5 + 5 + + + reg_gpio_4_pu + 4 + 4 + + + reg_gpio_4_drv + 2 + 3 + + + reg_gpio_4_smt + 1 + 1 + + + reg_gpio_4_ie + 0 + 0 + + + + + GPIO_CFGCTL3 + GPIO_CFGCTL3. + 0x10C + + + reg_gpio_7_func_sel + 24 + 28 + + + reg_gpio_7_pd + 21 + 21 + + + reg_gpio_7_pu + 20 + 20 + + + reg_gpio_7_drv + 18 + 19 + + + reg_gpio_7_smt + 17 + 17 + + + reg_gpio_7_ie + 16 + 16 + + + reg_gpio_6_func_sel + 8 + 12 + + + reg_gpio_6_pd + 5 + 5 + + + reg_gpio_6_pu + 4 + 4 + + + reg_gpio_6_drv + 2 + 3 + + + reg_gpio_6_smt + 1 + 1 + + + reg_gpio_6_ie + 0 + 0 + + + + + GPIO_CFGCTL4 + GPIO_CFGCTL4. + 0x110 + + + reg_gpio_9_func_sel + 24 + 28 + + + reg_gpio_9_pd + 21 + 21 + + + reg_gpio_9_pu + 20 + 20 + + + reg_gpio_9_drv + 18 + 19 + + + reg_gpio_9_smt + 17 + 17 + + + reg_gpio_9_ie + 16 + 16 + + + reg_gpio_8_func_sel + 8 + 12 + + + reg_gpio_8_pd + 5 + 5 + + + reg_gpio_8_pu + 4 + 4 + + + reg_gpio_8_drv + 2 + 3 + + + reg_gpio_8_smt + 1 + 1 + + + reg_gpio_8_ie + 0 + 0 + + + + + GPIO_CFGCTL5 + GPIO_CFGCTL5. + 0x114 + + + reg_gpio_11_func_sel + 24 + 28 + + + reg_gpio_11_pd + 21 + 21 + + + reg_gpio_11_pu + 20 + 20 + + + reg_gpio_11_drv + 18 + 19 + + + reg_gpio_11_smt + 17 + 17 + + + reg_gpio_11_ie + 16 + 16 + + + reg_gpio_10_func_sel + 8 + 12 + + + reg_gpio_10_pd + 5 + 5 + + + reg_gpio_10_pu + 4 + 4 + + + reg_gpio_10_drv + 2 + 3 + + + reg_gpio_10_smt + 1 + 1 + + + reg_gpio_10_ie + 0 + 0 + + + + + GPIO_CFGCTL6 + GPIO_CFGCTL6. + 0x118 + + + reg_gpio_13_func_sel + 24 + 28 + + + reg_gpio_13_pd + 21 + 21 + + + reg_gpio_13_pu + 20 + 20 + + + reg_gpio_13_drv + 18 + 19 + + + reg_gpio_13_smt + 17 + 17 + + + reg_gpio_13_ie + 16 + 16 + + + reg_gpio_12_func_sel + 8 + 12 + + + reg_gpio_12_pd + 5 + 5 + + + reg_gpio_12_pu + 4 + 4 + + + reg_gpio_12_drv + 2 + 3 + + + reg_gpio_12_smt + 1 + 1 + + + reg_gpio_12_ie + 0 + 0 + + + + + GPIO_CFGCTL7 + GPIO_CFGCTL7. + 0x11C + + + reg_gpio_15_func_sel + 24 + 28 + + + reg_gpio_15_pd + 21 + 21 + + + reg_gpio_15_pu + 20 + 20 + + + reg_gpio_15_drv + 18 + 19 + + + reg_gpio_15_smt + 17 + 17 + + + reg_gpio_15_ie + 16 + 16 + + + reg_gpio_14_func_sel + 8 + 12 + + + reg_gpio_14_pd + 5 + 5 + + + reg_gpio_14_pu + 4 + 4 + + + reg_gpio_14_drv + 2 + 3 + + + reg_gpio_14_smt + 1 + 1 + + + reg_gpio_14_ie + 0 + 0 + + + + + GPIO_CFGCTL8 + GPIO_CFGCTL8. + 0x120 + + + reg_gpio_17_func_sel + 24 + 28 + + + reg_gpio_17_pd + 21 + 21 + + + reg_gpio_17_pu + 20 + 20 + + + reg_gpio_17_drv + 18 + 19 + + + reg_gpio_17_smt + 17 + 17 + + + reg_gpio_17_ie + 16 + 16 + + + reg_gpio_16_func_sel + 8 + 12 + + + reg_gpio_16_pd + 5 + 5 + + + reg_gpio_16_pu + 4 + 4 + + + reg_gpio_16_drv + 2 + 3 + + + reg_gpio_16_smt + 1 + 1 + + + reg_gpio_16_ie + 0 + 0 + + + + + GPIO_CFGCTL9 + GPIO_CFGCTL9. + 0x124 + + + reg_gpio_19_func_sel + 24 + 28 + + + reg_gpio_19_pd + 21 + 21 + + + reg_gpio_19_pu + 20 + 20 + + + reg_gpio_19_drv + 18 + 19 + + + reg_gpio_19_smt + 17 + 17 + + + reg_gpio_19_ie + 16 + 16 + + + reg_gpio_18_func_sel + 8 + 12 + + + reg_gpio_18_pd + 5 + 5 + + + reg_gpio_18_pu + 4 + 4 + + + reg_gpio_18_drv + 2 + 3 + + + reg_gpio_18_smt + 1 + 1 + + + reg_gpio_18_ie + 0 + 0 + + + + + GPIO_CFGCTL10 + GPIO_CFGCTL10. + 0x128 + + + reg_gpio_21_func_sel + 24 + 28 + + + reg_gpio_21_pd + 21 + 21 + + + reg_gpio_21_pu + 20 + 20 + + + reg_gpio_21_drv + 18 + 19 + + + reg_gpio_21_smt + 17 + 17 + + + reg_gpio_21_ie + 16 + 16 + + + reg_gpio_20_func_sel + 8 + 12 + + + reg_gpio_20_pd + 5 + 5 + + + reg_gpio_20_pu + 4 + 4 + + + reg_gpio_20_drv + 2 + 3 + + + reg_gpio_20_smt + 1 + 1 + + + reg_gpio_20_ie + 0 + 0 + + + + + GPIO_CFGCTL11 + GPIO_CFGCTL11. + 0x12C + + + reg_gpio_23_func_sel + 24 + 28 + + + reg_gpio_23_pd + 21 + 21 + + + reg_gpio_23_pu + 20 + 20 + + + reg_gpio_23_drv + 18 + 19 + + + reg_gpio_23_smt + 17 + 17 + + + reg_gpio_23_ie + 16 + 16 + + + reg_gpio_22_func_sel + 8 + 12 + + + reg_gpio_22_pd + 5 + 5 + + + reg_gpio_22_pu + 4 + 4 + + + reg_gpio_22_drv + 2 + 3 + + + reg_gpio_22_smt + 1 + 1 + + + reg_gpio_22_ie + 0 + 0 + + + + + GPIO_CFGCTL12 + GPIO_CFGCTL12. + 0x130 + + + reg_gpio_25_func_sel + 24 + 28 + + + reg_gpio_25_pd + 21 + 21 + + + reg_gpio_25_pu + 20 + 20 + + + reg_gpio_25_drv + 18 + 19 + + + reg_gpio_25_smt + 17 + 17 + + + reg_gpio_25_ie + 16 + 16 + + + reg_gpio_24_func_sel + 8 + 12 + + + reg_gpio_24_pd + 5 + 5 + + + reg_gpio_24_pu + 4 + 4 + + + reg_gpio_24_drv + 2 + 3 + + + reg_gpio_24_smt + 1 + 1 + + + reg_gpio_24_ie + 0 + 0 + + + + + GPIO_CFGCTL13 + GPIO_CFGCTL13. + 0x134 + + + reg_gpio_27_func_sel + 24 + 28 + + + reg_gpio_27_pd + 21 + 21 + + + reg_gpio_27_pu + 20 + 20 + + + reg_gpio_27_drv + 18 + 19 + + + reg_gpio_27_smt + 17 + 17 + + + reg_gpio_27_ie + 16 + 16 + + + reg_gpio_26_func_sel + 8 + 12 + + + reg_gpio_26_pd + 5 + 5 + + + reg_gpio_26_pu + 4 + 4 + + + reg_gpio_26_drv + 2 + 3 + + + reg_gpio_26_smt + 1 + 1 + + + reg_gpio_26_ie + 0 + 0 + + + + + GPIO_CFGCTL14 + GPIO_CFGCTL14. + 0x138 + + + reg_gpio_29_func_sel + 24 + 28 + + + reg_gpio_29_pd + 21 + 21 + + + reg_gpio_29_pu + 20 + 20 + + + reg_gpio_29_drv + 18 + 19 + + + reg_gpio_29_smt + 17 + 17 + + + reg_gpio_29_ie + 16 + 16 + + + reg_gpio_28_func_sel + 8 + 12 + + + reg_gpio_28_pd + 5 + 5 + + + reg_gpio_28_pu + 4 + 4 + + + reg_gpio_28_drv + 2 + 3 + + + reg_gpio_28_smt + 1 + 1 + + + reg_gpio_28_ie + 0 + 0 + + + + + GPIO_CFGCTL15 + GPIO_CFGCTL15. + 0x13C + + + reg_gpio_31_func_sel + 24 + 28 + + + reg_gpio_31_pd + 21 + 21 + + + reg_gpio_31_pu + 20 + 20 + + + reg_gpio_31_drv + 18 + 19 + + + reg_gpio_31_smt + 17 + 17 + + + reg_gpio_31_ie + 16 + 16 + + + reg_gpio_30_func_sel + 8 + 12 + + + reg_gpio_30_pd + 5 + 5 + + + reg_gpio_30_pu + 4 + 4 + + + reg_gpio_30_drv + 2 + 3 + + + reg_gpio_30_smt + 1 + 1 + + + reg_gpio_30_ie + 0 + 0 + + + + + GPIO_CFGCTL16 + GPIO_CFGCTL16. + 0x140 + + + reg_gpio_33_pd + 21 + 21 + + + reg_gpio_33_pu + 20 + 20 + + + reg_gpio_33_drv + 18 + 19 + + + reg_gpio_33_smt + 17 + 17 + + + reg_gpio_33_ie + 16 + 16 + + + reg_gpio_32_pd + 5 + 5 + + + reg_gpio_32_pu + 4 + 4 + + + reg_gpio_32_drv + 2 + 3 + + + reg_gpio_32_smt + 1 + 1 + + + reg_gpio_32_ie + 0 + 0 + + + + + GPIO_CFGCTL17 + GPIO_CFGCTL17. + 0x144 + + + reg_gpio_35_pd + 21 + 21 + + + reg_gpio_35_pu + 20 + 20 + + + reg_gpio_35_drv + 18 + 19 + + + reg_gpio_35_smt + 17 + 17 + + + reg_gpio_35_ie + 16 + 16 + + + reg_gpio_34_pd + 5 + 5 + + + reg_gpio_34_pu + 4 + 4 + + + reg_gpio_34_drv + 2 + 3 + + + reg_gpio_34_smt + 1 + 1 + + + reg_gpio_34_ie + 0 + 0 + + + + + GPIO_CFGCTL18 + GPIO_CFGCTL18. + 0x148 + + + reg_gpio_37_pd + 21 + 21 + + + reg_gpio_37_pu + 20 + 20 + + + reg_gpio_37_drv + 18 + 19 + + + reg_gpio_37_smt + 17 + 17 + + + reg_gpio_37_ie + 16 + 16 + + + reg_gpio_36_pd + 5 + 5 + + + reg_gpio_36_pu + 4 + 4 + + + reg_gpio_36_drv + 2 + 3 + + + reg_gpio_36_smt + 1 + 1 + + + reg_gpio_36_ie + 0 + 0 + + + + + GPIO_CFGCTL30 + GPIO_CFGCTL30. + 0x180 + + + reg_gpio_31_i + 31 + 31 + + + reg_gpio_30_i + 30 + 30 + + + reg_gpio_29_i + 29 + 29 + + + reg_gpio_28_i + 28 + 28 + + + reg_gpio_27_i + 27 + 27 + + + reg_gpio_26_i + 26 + 26 + + + reg_gpio_25_i + 25 + 25 + + + reg_gpio_24_i + 24 + 24 + + + reg_gpio_23_i + 23 + 23 + + + reg_gpio_22_i + 22 + 22 + + + reg_gpio_21_i + 21 + 21 + + + reg_gpio_20_i + 20 + 20 + + + reg_gpio_19_i + 19 + 19 + + + reg_gpio_18_i + 18 + 18 + + + reg_gpio_17_i + 17 + 17 + + + reg_gpio_16_i + 16 + 16 + + + reg_gpio_15_i + 15 + 15 + + + reg_gpio_14_i + 14 + 14 + + + reg_gpio_13_i + 13 + 13 + + + reg_gpio_12_i + 12 + 12 + + + reg_gpio_11_i + 11 + 11 + + + reg_gpio_10_i + 10 + 10 + + + reg_gpio_9_i + 9 + 9 + + + reg_gpio_8_i + 8 + 8 + + + reg_gpio_7_i + 7 + 7 + + + reg_gpio_6_i + 6 + 6 + + + reg_gpio_5_i + 5 + 5 + + + reg_gpio_4_i + 4 + 4 + + + reg_gpio_3_i + 3 + 3 + + + reg_gpio_2_i + 2 + 2 + + + reg_gpio_1_i + 1 + 1 + + + reg_gpio_0_i + 0 + 0 + + + + + GPIO_CFGCTL31 + GPIO_CFGCTL31. + 0x184 + + + + GPIO_CFGCTL32 + GPIO_CFGCTL32. + 0x188 + + + reg_gpio_31_o + 31 + 31 + + + reg_gpio_30_o + 30 + 30 + + + reg_gpio_29_o + 29 + 29 + + + reg_gpio_28_o + 28 + 28 + + + reg_gpio_27_o + 27 + 27 + + + reg_gpio_26_o + 26 + 26 + + + reg_gpio_25_o + 25 + 25 + + + reg_gpio_24_o + 24 + 24 + + + reg_gpio_23_o + 23 + 23 + + + reg_gpio_22_o + 22 + 22 + + + reg_gpio_21_o + 21 + 21 + + + reg_gpio_20_o + 20 + 20 + + + reg_gpio_19_o + 19 + 19 + + + reg_gpio_18_o + 18 + 18 + + + reg_gpio_17_o + 17 + 17 + + + reg_gpio_16_o + 16 + 16 + + + reg_gpio_15_o + 15 + 15 + + + reg_gpio_14_o + 14 + 14 + + + reg_gpio_13_o + 13 + 13 + + + reg_gpio_12_o + 12 + 12 + + + reg_gpio_11_o + 11 + 11 + + + reg_gpio_10_o + 10 + 10 + + + reg_gpio_9_o + 9 + 9 + + + reg_gpio_8_o + 8 + 8 + + + reg_gpio_7_o + 7 + 7 + + + reg_gpio_6_o + 6 + 6 + + + reg_gpio_5_o + 5 + 5 + + + reg_gpio_4_o + 4 + 4 + + + reg_gpio_3_o + 3 + 3 + + + reg_gpio_2_o + 2 + 2 + + + reg_gpio_1_o + 1 + 1 + + + reg_gpio_0_o + 0 + 0 + + + + + GPIO_CFGCTL33 + GPIO_CFGCTL33. + 0x18C + + + + GPIO_CFGCTL34 + GPIO_CFGCTL34. + 0x190 + + + reg_gpio_31_oe + 31 + 31 + + + reg_gpio_30_oe + 30 + 30 + + + reg_gpio_29_oe + 29 + 29 + + + reg_gpio_28_oe + 28 + 28 + + + reg_gpio_27_oe + 27 + 27 + + + reg_gpio_26_oe + 26 + 26 + + + reg_gpio_25_oe + 25 + 25 + + + reg_gpio_24_oe + 24 + 24 + + + reg_gpio_23_oe + 23 + 23 + + + reg_gpio_22_oe + 22 + 22 + + + reg_gpio_21_oe + 21 + 21 + + + reg_gpio_20_oe + 20 + 20 + + + reg_gpio_19_oe + 19 + 19 + + + reg_gpio_18_oe + 18 + 18 + + + reg_gpio_17_oe + 17 + 17 + + + reg_gpio_16_oe + 16 + 16 + + + reg_gpio_15_oe + 15 + 15 + + + reg_gpio_14_oe + 14 + 14 + + + reg_gpio_13_oe + 13 + 13 + + + reg_gpio_12_oe + 12 + 12 + + + reg_gpio_11_oe + 11 + 11 + + + reg_gpio_10_oe + 10 + 10 + + + reg_gpio_9_oe + 9 + 9 + + + reg_gpio_8_oe + 8 + 8 + + + reg_gpio_7_oe + 7 + 7 + + + reg_gpio_6_oe + 6 + 6 + + + reg_gpio_5_oe + 5 + 5 + + + reg_gpio_4_oe + 4 + 4 + + + reg_gpio_3_oe + 3 + 3 + + + reg_gpio_2_oe + 2 + 2 + + + reg_gpio_1_oe + 1 + 1 + + + reg_gpio_0_oe + 0 + 0 + + + + + GPIO_CFGCTL35 + GPIO_CFGCTL35. + 0x194 + + + + GPIO_INT_MASK1 + GPIO_INT_MASK1. + 0x1A0 + + + reg_gpio_int_mask1 + 0 + 31 + + + + + GPIO_INT_STAT1 + GPIO_INT_STAT1. + 0x1A8 + + + gpio_int_stat1 + 0 + 31 + + + + + GPIO_INT_CLR1 + GPIO_INT_CLR1. + 0x1B0 + + + reg_gpio_int_clr1 + 0 + 31 + + + + + GPIO_INT_MODE_SET1 + GPIO_INT_MODE_SET1. + 0x1C0 + + + reg_gpio_int_mode_set1 + 0 + 29 + + + + + GPIO_INT_MODE_SET2 + GPIO_INT_MODE_SET2. + 0x1C4 + + + reg_gpio_int_mode_set2 + 0 + 29 + + + + + GPIO_INT_MODE_SET3 + GPIO_INT_MODE_SET3. + 0x1C8 + + + reg_gpio_int_mode_set3 + 0 + 29 + + + + + GPIO_INT_MODE_SET4 + GPIO_INT_MODE_SET4. + 0x1CC + + + reg_gpio_int_mode_set4 + 0 + 5 + + + + + GPIO_INT2_MASK1 + GPIO_INT2_MASK1. + 0x1D0 + + + reg_gpio_int2_mask1 + 0 + 31 + + + + + GPIO_INT2_STAT1 + GPIO_INT2_STAT1. + 0x1D4 + + + gpio_int2_stat1 + 0 + 31 + + + + + GPIO_INT2_CLR1 + GPIO_INT2_CLR1. + 0x1D8 + + + reg_gpio_int2_clr1 + 0 + 31 + + + + + GPIO_INT2_MODE_SET1 + GPIO_INT2_MODE_SET1. + 0x1DC + + + reg_gpio_int2_mode_set1 + 0 + 29 + + + + + GPIO_INT2_MODE_SET2 + GPIO_INT2_MODE_SET2. + 0x1E0 + + + reg_gpio_int2_mode_set2 + 0 + 29 + + + + + GPIO_INT2_MODE_SET3 + GPIO_INT2_MODE_SET3. + 0x1E4 + + + reg_gpio_int2_mode_set3 + 0 + 29 + + + + + GPIO_INT2_MODE_SET4 + GPIO_INT2_MODE_SET4. + 0x1E8 + + + reg_gpio_int2_mode_set4 + 0 + 5 + + + + + dll + dll. + 0x200 + + + ppu_dll + 31 + 31 + + + pu_dll + 30 + 30 + + + dll_reset + 29 + 29 + + + dll_refclk_sel + 28 + 28 + + + dll_cp_hiz + 23 + 23 + + + dll_cp_op_en + 22 + 22 + + + dll_delay_sel + 20 + 21 + + + dll_post_div + 16 + 19 + + + dll_vctrl_force_en + 15 + 15 + + + dll_prechg_en + 14 + 14 + + + dll_prechg_reg + 13 + 13 + + + dll_prechg_sel + 12 + 12 + + + dll_vctrl_sel + 8 + 10 + + + dll_clk_57p6M_en + 7 + 7 + + + dll_clk_96M_en + 6 + 6 + + + dll_clk_144M_en + 5 + 5 + + + dll_clk_288M_en + 4 + 4 + + + dll_clk_mmdiv_en + 3 + 3 + + + ten_dll + 2 + 2 + + + dtest_en_dll_outclk + 1 + 1 + + + dtest_en_dll_refclk + 0 + 0 + + + + + led_driver + led_driver. + 0x224 + + + pu_leddrv + 31 + 31 + + + leddrv_out_en + 28 + 29 + + + ir_rx_gpio_sel + 8 + 11 + + + leddrv_ibias + 4 + 7 + + + led_din_polarity_sel + 2 + 2 + + + led_din_sel + 1 + 1 + + + led_din_reg + 0 + 0 + + + + + usb_xcvr + usb_xcvr. + 0x228 + + + usb_rcv + 27 + 27 + + + usb_vip + 26 + 26 + + + usb_vim + 25 + 25 + + + usb_bd + 24 + 24 + + + pu_usb + 23 + 23 + + + usb_sus + 22 + 22 + + + usb_spd + 21 + 21 + + + usb_enum + 20 + 20 + + + usb_data_convert + 16 + 16 + + + usb_oeb + 14 + 14 + + + usb_oeb_reg + 13 + 13 + + + usb_oeb_sel + 12 + 12 + + + usb_rout_pmos + 8 + 10 + + + usb_rout_nmos + 4 + 6 + + + pu_usb_ldo + 3 + 3 + + + usb_ldo_vfb + 0 + 2 + + + + + usb_xcvr_config + usb_xcvr_config. + 0x22C + + + usb_slewrate_p_rise + 28 + 30 + + + usb_slewrate_p_fall + 24 + 26 + + + usb_slewrate_m_rise + 20 + 22 + + + usb_slewrate_m_fall + 16 + 18 + + + usb_res_pullup_tune + 12 + 14 + + + reg_usb_use_ctrl + 11 + 11 + + + usb_str_drv + 8 + 10 + + + reg_usb_use_xcvr + 7 + 7 + + + usb_bd_vth + 4 + 6 + + + usb_v_hys_p + 2 + 3 + + + usb_v_hys_m + 0 + 1 + + + + + gpdac_ctrl + gpdac_ctrl. + 0x308 + + + gpdac_reserved + 24 + 31 + + + gpdac_test_sel + 9 + 11 + + + gpdac_ref_sel + 8 + 8 + + + gpdac_test_en + 7 + 7 + + + gpdacb_rstn_ana + 1 + 1 + + + gpdaca_rstn_ana + 0 + 0 + + + + + gpdac_actrl + gpdac_actrl. + 0x30C + + + gpdac_a_outmux + 20 + 22 + + + gpdac_a_rng + 18 + 19 + + + gpdac_ioa_en + 1 + 1 + + + gpdac_a_en + 0 + 0 + + + + + gpdac_bctrl + gpdac_bctrl. + 0x310 + + + gpdac_b_outmux + 20 + 22 + + + gpdac_b_rng + 18 + 19 + + + gpdac_iob_en + 1 + 1 + + + gpdac_b_en + 0 + 0 + + + + + gpdac_data + gpdac_data. + 0x314 + + + gpdac_a_data + 16 + 25 + + + gpdac_b_data + 0 + 9 + + + + + chip_revision + chip_revision. + 0xE00 + + + chip_rev + 0 + 3 + + + + + tzc_glb_ctrl_0 + tzc_glb_ctrl_0. + 0xF00 + + + tzc_glb_clk_lock + 31 + 31 + + + tzc_glb_mbist_lock + 30 + 30 + + + tzc_glb_dbg_lock + 29 + 29 + + + tzc_glb_bmx_lock + 28 + 28 + + + tzc_glb_l2c_lock + 27 + 27 + + + tzc_glb_sram_lock + 26 + 26 + + + tzc_glb_misc_lock + 25 + 25 + + + tzc_glb_ctrl_ungated_ap_lock + 15 + 15 + + + tzc_glb_ctrl_sys_reset_lock + 14 + 14 + + + tzc_glb_ctrl_cpu_reset_lock + 13 + 13 + + + tzc_glb_ctrl_pwron_rst_lock + 12 + 12 + + + tzc_glb_swrst_s30_lock + 8 + 8 + + + tzc_glb_swrst_s01_lock + 1 + 1 + + + tzc_glb_swrst_s00_lock + 0 + 0 + + + + + tzc_glb_ctrl_1 + tzc_glb_ctrl_1. + 0xF04 + + + tzc_glb_swrst_s1f_lock + 31 + 31 + + + tzc_glb_swrst_s1e_lock + 30 + 30 + + + tzc_glb_swrst_s1d_lock + 29 + 29 + + + tzc_glb_swrst_s1c_lock + 28 + 28 + + + tzc_glb_swrst_s1b_lock + 27 + 27 + + + tzc_glb_swrst_s1a_lock + 26 + 26 + + + tzc_glb_swrst_s19_lock + 25 + 25 + + + tzc_glb_swrst_s18_lock + 24 + 24 + + + tzc_glb_swrst_s17_lock + 23 + 23 + + + tzc_glb_swrst_s16_lock + 22 + 22 + + + tzc_glb_swrst_s15_lock + 21 + 21 + + + tzc_glb_swrst_s14_lock + 20 + 20 + + + tzc_glb_swrst_s13_lock + 19 + 19 + + + tzc_glb_swrst_s12_lock + 18 + 18 + + + tzc_glb_swrst_s11_lock + 17 + 17 + + + tzc_glb_swrst_s10_lock + 16 + 16 + + + tzc_glb_swrst_s2f_lock + 15 + 15 + + + tzc_glb_swrst_s2e_lock + 14 + 14 + + + tzc_glb_swrst_s2d_lock + 13 + 13 + + + tzc_glb_swrst_s2c_lock + 12 + 12 + + + tzc_glb_swrst_s2b_lock + 11 + 11 + + + tzc_glb_swrst_s2a_lock + 10 + 10 + + + tzc_glb_swrst_s29_lock + 9 + 9 + + + tzc_glb_swrst_s28_lock + 8 + 8 + + + tzc_glb_swrst_s27_lock + 7 + 7 + + + tzc_glb_swrst_s26_lock + 6 + 6 + + + tzc_glb_swrst_s25_lock + 5 + 5 + + + tzc_glb_swrst_s24_lock + 4 + 4 + + + tzc_glb_swrst_s23_lock + 3 + 3 + + + tzc_glb_swrst_s22_lock + 2 + 2 + + + tzc_glb_swrst_s21_lock + 1 + 1 + + + tzc_glb_swrst_s20_lock + 0 + 0 + + + + + tzc_glb_ctrl_2 + tzc_glb_ctrl_2. + 0xF08 + + + tzc_glb_gpio_31_lock + 31 + 31 + + + tzc_glb_gpio_30_lock + 30 + 30 + + + tzc_glb_gpio_29_lock + 29 + 29 + + + tzc_glb_gpio_28_lock + 28 + 28 + + + tzc_glb_gpio_27_lock + 27 + 27 + + + tzc_glb_gpio_26_lock + 26 + 26 + + + tzc_glb_gpio_25_lock + 25 + 25 + + + tzc_glb_gpio_24_lock + 24 + 24 + + + tzc_glb_gpio_23_lock + 23 + 23 + + + tzc_glb_gpio_22_lock + 22 + 22 + + + tzc_glb_gpio_21_lock + 21 + 21 + + + tzc_glb_gpio_20_lock + 20 + 20 + + + tzc_glb_gpio_19_lock + 19 + 19 + + + tzc_glb_gpio_18_lock + 18 + 18 + + + tzc_glb_gpio_17_lock + 17 + 17 + + + tzc_glb_gpio_16_lock + 16 + 16 + + + tzc_glb_gpio_15_lock + 15 + 15 + + + tzc_glb_gpio_14_lock + 14 + 14 + + + tzc_glb_gpio_13_lock + 13 + 13 + + + tzc_glb_gpio_12_lock + 12 + 12 + + + tzc_glb_gpio_11_lock + 11 + 11 + + + tzc_glb_gpio_10_lock + 10 + 10 + + + tzc_glb_gpio_9_lock + 9 + 9 + + + tzc_glb_gpio_8_lock + 8 + 8 + + + tzc_glb_gpio_7_lock + 7 + 7 + + + tzc_glb_gpio_6_lock + 6 + 6 + + + tzc_glb_gpio_5_lock + 5 + 5 + + + tzc_glb_gpio_4_lock + 4 + 4 + + + tzc_glb_gpio_3_lock + 3 + 3 + + + tzc_glb_gpio_2_lock + 2 + 2 + + + tzc_glb_gpio_1_lock + 1 + 1 + + + tzc_glb_gpio_0_lock + 0 + 0 + + + + + tzc_glb_ctrl_3 + tzc_glb_ctrl_3. + 0xF0C + + + tzc_glb_gpio_37_lock + 5 + 5 + + + tzc_glb_gpio_36_lock + 4 + 4 + + + tzc_glb_gpio_35_lock + 3 + 3 + + + tzc_glb_gpio_34_lock + 2 + 2 + + + tzc_glb_gpio_33_lock + 1 + 1 + + + tzc_glb_gpio_32_lock + 0 + 0 + + + + + + + rf + rf. + 0x40001000 + rf + 32 + read-write + + 0 + 0x1000 + registers + + + + rf_rev + Silicon revision + 0x0 + + + hw_rev + 16 + 23 + + + fw_rev + 8 + 15 + + + rf_rev + 0 + 7 + + + + + dsp_readback + dsp_readback. + 0x4 + + + rbb_bw_ind_ctrl_hw + 31 + 31 + + + rbb_bw_ind + 30 + 30 + + + rbb_ind_ctrl_hw + 29 + 29 + + + rbb_ind + 24 + 28 + + + ch_ind_ctrl_hw + 23 + 23 + + + ch_ind + 16 + 22 + + + rbb_bw_ind_hw + 14 + 14 + + + rbb_ind_hw + 9 + 13 + + + ch_ind_hw + 2 + 8 + + + + + rf_ctrl_source + Control logic switch + 0x8 + + + vco_idac_ctrl_hw + 28 + 28 + + + inc_fcal_en_ctrl_hw + 24 + 24 + + + lo_fcw_ctrl_hw + 20 + 20 + + + rbb_bw_ctrl_hw + 16 + 16 + + + kcal_ratio_ctrl_hw + 12 + 12 + + + rosdac_ctrl_rccal + 9 + 9 + + + rosdac_ctrl_hw + 8 + 8 + + + gain_ctrl_rx_hw + 4 + 4 + + + gain_ctrl_tx_hw + 3 + 3 + + + pu_ctrl_hw + 0 + 0 + + + + + rf_cal_state_ctrl + rf calibration state enable in full cal list + 0xC + + + inc_roscal_state_en + 7 + 7 + + + inc_acal_state_en + 6 + 6 + + + inc_fcal_state_en + 5 + 5 + + + rccal_state_en + 4 + 4 + + + roscal_state_en + 3 + 3 + + + kcal_state_en + 2 + 2 + + + acal_state_en + 1 + 1 + + + fcal_state_en + 0 + 0 + + + + + rf_cal_switch_ctrl + Calibration mode register + 0x10 + + + inc_fcal_en_hw + 17 + 17 + + + inc_fcal_en + 16 + 16 + + + inc_acal_en + 12 + 12 + + + rccal_en + 8 + 8 + + + kcal_en + 4 + 4 + + + acal_en + 0 + 0 + + + + + rf_cal_status + rf_cal_status. + 0x14 + + + dl_rfcal_table_status + 30 + 31 + + + rccal_status + 8 + 9 + + + roscal_status + 6 + 7 + + + kcal_status + 4 + 5 + + + acal_status + 2 + 3 + + + + + pu_delay_confg + pu_delay_confg. + 0x18 + + + adpll_reset_width + 20 + 21 + + + lo_reset_width + 16 + 17 + + + lo_reset_delay + 12 + 13 + + + pud_delay + 4 + 5 + + + ppu_lead + 0 + 1 + + + + + pucr_reg + Register control of power up signals + 0x100 + + + rst_fbdv + 27 + 27 + + + rst_lotpm_hfp + 26 + 26 + + + rst_adpll + 25 + 25 + + + pa_seri_cap_en + 24 + 24 + + + rx_bypass_en + 23 + 23 + + + pu_pa + 22 + 22 + + + pu_lna + 21 + 21 + + + pu_rmx + 20 + 20 + + + pu_rbb + 19 + 19 + + + pu_rbb_pkdet + 18 + 18 + + + pu_rosdac + 17 + 17 + + + pu_rxadc + 16 + 16 + + + rxadc_clk_en + 15 + 15 + + + pu_lodist_body_bias + 14 + 14 + + + pu_vco_ldo + 13 + 13 + + + pu_vco + 12 + 12 + + + pu_fbdv + 11 + 11 + + + pu_fbdv_buf + 10 + 10 + + + lotpm_hfp_clk_en + 9 + 9 + + + lotpm_lfp_bypass + 8 + 8 + + + lotpm_hfp_bypass + 7 + 7 + + + adpll_clk_en + 6 + 6 + + + pu_adpll_adc + 5 + 5 + + + pu_adpll_sfreg + 4 + 4 + + + pu_dtc + 3 + 3 + + + pu_rxbuf + 2 + 2 + + + pu_txbuf + 1 + 1 + + + lodist_tx_en + 0 + 0 + + + + + pucr_sb + Power up setting in SB state + 0x104 + + + pa_seri_cap_en_sb + 24 + 24 + + + rx_bypass_en_sb + 23 + 23 + + + pu_pa_sb + 22 + 22 + + + pu_lna_sb + 21 + 21 + + + pu_rmx_sb + 20 + 20 + + + pu_rbb_sb + 19 + 19 + + + pu_rbb_pkdet_sb + 18 + 18 + + + pu_rosdac_sb + 17 + 17 + + + pu_rxadc_sb + 16 + 16 + + + rxadc_clk_en_sb + 15 + 15 + + + pu_lodist_body_bias_sb + 14 + 14 + + + pu_vco_ldo_sb + 13 + 13 + + + pu_vco_sb + 12 + 12 + + + pu_fbdv_sb + 11 + 11 + + + pu_fbdv_buf_sb + 10 + 10 + + + lotpm_hfp_clk_en_sb + 9 + 9 + + + lotpm_lfp_bypass_sb + 8 + 8 + + + lotpm_hfp_bypass_sb + 7 + 7 + + + adpll_clk_en_sb + 6 + 6 + + + pu_adpll_adc_sb + 5 + 5 + + + pu_adpll_sfreg_sb + 4 + 4 + + + pu_dtc_sb + 3 + 3 + + + pu_rxbuf_sb + 2 + 2 + + + pu_txbuf_sb + 1 + 1 + + + lodist_tx_en_sb + 0 + 0 + + + + + pucr_lotx + Power up in LOTX state + 0x108 + + + pa_seri_cap_en_lotx + 24 + 24 + + + rx_bypass_en_lotx + 23 + 23 + + + pu_pa_lotx + 22 + 22 + + + pu_lna_lotx + 21 + 21 + + + pu_rmx_lotx + 20 + 20 + + + pu_rbb_lotx + 19 + 19 + + + pu_rbb_pkdet_lotx + 18 + 18 + + + pu_rosdac_lotx + 17 + 17 + + + pu_rxadc_lotx + 16 + 16 + + + rxadc_clk_en_lotx + 15 + 15 + + + pu_lodist_body_bias_lotx + 14 + 14 + + + pu_vco_ldo_lotx + 13 + 13 + + + pu_vco_lotx + 12 + 12 + + + pu_fbdv_lotx + 11 + 11 + + + pu_fbdv_buf_lotx + 10 + 10 + + + lotpm_hfp_clk_en_lotx + 9 + 9 + + + lotpm_lfp_bypass_lotx + 8 + 8 + + + lotpm_hfp_bypass_lotx + 7 + 7 + + + adpll_clk_en_lotx + 6 + 6 + + + pu_adpll_adc_lotx + 5 + 5 + + + pu_adpll_sfreg_lotx + 4 + 4 + + + pu_dtc_lotx + 3 + 3 + + + pu_rxbuf_lotx + 2 + 2 + + + pu_txbuf_lotx + 1 + 1 + + + lodist_tx_en_lotx + 0 + 0 + + + + + pucr_lorx + Power up in LORX state + 0x10C + + + pa_seri_cap_en_lorx + 24 + 24 + + + rx_bypass_en_lorx + 23 + 23 + + + pu_pa_lorx + 22 + 22 + + + pu_lna_lorx + 21 + 21 + + + pu_rmx_lorx + 20 + 20 + + + pu_rbb_lorx + 19 + 19 + + + pu_rbb_pkdet_lorx + 18 + 18 + + + pu_rosdac_lorx + 17 + 17 + + + pu_rxadc_lorx + 16 + 16 + + + rxadc_clk_en_lorx + 15 + 15 + + + pu_lodist_body_bias_lorx + 14 + 14 + + + pu_vco_ldo_lorx + 13 + 13 + + + pu_vco_lorx + 12 + 12 + + + pu_fbdv_lorx + 11 + 11 + + + pu_fbdv_buf_lorx + 10 + 10 + + + lotpm_hfp_clk_en_lorx + 9 + 9 + + + lotpm_lfp_bypass_lorx + 8 + 8 + + + lotpm_hfp_bypass_lorx + 7 + 7 + + + adpll_clk_en_lorx + 6 + 6 + + + pu_adpll_adc_lorx + 5 + 5 + + + pu_adpll_sfreg_lorx + 4 + 4 + + + pu_dtc_lorx + 3 + 3 + + + pu_rxbuf_lorx + 2 + 2 + + + pu_txbuf_lorx + 1 + 1 + + + lodist_tx_en_lorx + 0 + 0 + + + + + pucr_tx + Power up in TX state + 0x110 + + + pa_seri_cap_en_tx + 24 + 24 + + + rx_bypass_en_tx + 23 + 23 + + + pu_pa_tx + 22 + 22 + + + pu_lna_tx + 21 + 21 + + + pu_rmx_tx + 20 + 20 + + + pu_rbb_tx + 19 + 19 + + + pu_rbb_pkdet_tx + 18 + 18 + + + pu_rosdac_tx + 17 + 17 + + + pu_rxadc_tx + 16 + 16 + + + rxadc_clk_en_tx + 15 + 15 + + + pu_lodist_body_bias_tx + 14 + 14 + + + pu_vco_ldo_tx + 13 + 13 + + + pu_vco_tx + 12 + 12 + + + pu_fbdv_tx + 11 + 11 + + + pu_fbdv_buf_tx + 10 + 10 + + + lotpm_hfp_clk_en_tx + 9 + 9 + + + lotpm_lfp_bypass_tx + 8 + 8 + + + lotpm_hfp_bypass_tx + 7 + 7 + + + adpll_clk_en_tx + 6 + 6 + + + pu_adpll_adc_tx + 5 + 5 + + + pu_adpll_sfreg_tx + 4 + 4 + + + pu_dtc_tx + 3 + 3 + + + pu_rxbuf_tx + 2 + 2 + + + pu_txbuf_tx + 1 + 1 + + + lodist_tx_en_tx + 0 + 0 + + + + + pucr_rx + Power up in RX state + 0x114 + + + pa_seri_cap_en_rx + 24 + 24 + + + rx_bypass_en_rx + 23 + 23 + + + pu_pa_rx + 22 + 22 + + + pu_lna_rx + 21 + 21 + + + pu_rmx_rx + 20 + 20 + + + pu_rbb_rx + 19 + 19 + + + pu_rbb_pkdet_rx + 18 + 18 + + + pu_rosdac_rx + 17 + 17 + + + pu_rxadc_rx + 16 + 16 + + + rxadc_clk_en_rx + 15 + 15 + + + pu_lodist_body_bias_rx + 14 + 14 + + + pu_vco_ldo_rx + 13 + 13 + + + pu_vco_rx + 12 + 12 + + + pu_fbdv_rx + 11 + 11 + + + pu_fbdv_buf_rx + 10 + 10 + + + lotpm_hfp_clk_en_rx + 9 + 9 + + + lotpm_lfp_bypass_rx + 8 + 8 + + + lotpm_hfp_bypass_rx + 7 + 7 + + + adpll_clk_en_rx + 6 + 6 + + + pu_adpll_adc_rx + 5 + 5 + + + pu_adpll_sfreg_rx + 4 + 4 + + + pu_dtc_rx + 3 + 3 + + + pu_rxbuf_rx + 2 + 2 + + + pu_txbuf_rx + 1 + 1 + + + lodist_tx_en_rx + 0 + 0 + + + + + pucr_hw + Hardware read back of power up signals + 0x118 + + + rst_fbdv_hw + 27 + 27 + + + rst_lotpm_hfp_hw + 26 + 26 + + + rst_adpll_hw + 25 + 25 + + + pa_seri_cap_en_hw + 24 + 24 + + + rx_bypass_en_hw + 23 + 23 + + + pu_pa_hw + 22 + 22 + + + pu_lna_hw + 21 + 21 + + + pu_rmx_hw + 20 + 20 + + + pu_rbb_hw + 19 + 19 + + + pu_rbb_pkdet_hw + 18 + 18 + + + pu_rosdac_hw + 17 + 17 + + + pu_rxadc_hw + 16 + 16 + + + rxadc_clk_en_hw + 15 + 15 + + + pu_lodist_body_bias_hw + 14 + 14 + + + pu_vco_ldo_hw + 13 + 13 + + + pu_vco_hw + 12 + 12 + + + pu_fbdv_hw + 11 + 11 + + + pu_fbdv_buf_hw + 10 + 10 + + + lotpm_hfp_clk_en_hw + 9 + 9 + + + lotpm_lfp_bypass_hw + 8 + 8 + + + lotpm_hfp_bypass_hw + 7 + 7 + + + adpll_clk_en_hw + 6 + 6 + + + pu_adpll_adc_hw + 5 + 5 + + + pu_adpll_sfreg_hw + 4 + 4 + + + pu_dtc_hw + 3 + 3 + + + pu_rxbuf_hw + 2 + 2 + + + pu_txbuf_hw + 1 + 1 + + + lodist_tx_en_hw + 0 + 0 + + + + + non_reg_readback + non_reg_readback. + 0x11C + + + ppu_lna_hw + 16 + 16 + + + ppu_rbb_hw + 15 + 15 + + + ppu_lodist_body_bias_hw + 13 + 13 + + + ppu_vco_ldo_hw + 12 + 12 + + + ppu_vco_hw + 11 + 11 + + + pud_vco_hw + 10 + 10 + + + ppu_fbdv_hw + 9 + 9 + + + ppu_adpll_sfreg_hw + 8 + 8 + + + ppu_rxbuf_hw + 7 + 7 + + + ppu_txbuf_hw + 6 + 6 + + + ppu_testbuf_hw + 5 + 5 + + + + + trx_gain_bw + Register control of TX/RX gain + 0x120 + + + pa_inbuf_unit + 20 + 22 + + + pa_ref_dac + 12 + 16 + + + rbb_bw + 8 + 8 + + + gc_rbb2 + 5 + 7 + + + gc_rbb1 + 3 + 4 + + + gc_lna + 0 + 2 + + + + + trx_gain_bw_hw + Hardware read back of TX/RX gain + 0x124 + + + pa_inbuf_unit_hw + 20 + 22 + + + pa_ref_dac_hw + 12 + 16 + + + rbb_bw_hw + 8 + 8 + + + gc_rbb2_hw + 5 + 7 + + + gc_rbb1_hw + 3 + 4 + + + gc_lna_hw + 0 + 2 + + + + + dctest_actest + DC Test register 0 + 0x128 + + + ten_mbg + 31 + 31 + + + ten_dll + 28 + 28 + + + ten_lodist + 27 + 27 + + + ten_pa_0 + 26 + 26 + + + ten_pa_1 + 25 + 25 + + + ten_rrf0 + 24 + 24 + + + ten_rrf1 + 23 + 23 + + + ten_rxadc + 22 + 22 + + + ten_vco + 21 + 21 + + + ten_adpll_adc + 20 + 20 + + + ten_rbb_actest + 19 + 19 + + + ten_rbb + 18 + 18 + + + ten_dtc + 17 + 17 + + + atest_out_en + 6 + 7 + + + dc_tp_out_en + 4 + 5 + + + + + dtest + LO Bias Mode registers + 0x12C + + + dtest_en_dtc_in + 29 + 29 + + + dtest_en_dtc_out + 28 + 28 + + + dtest_en_fref + 27 + 27 + + + dtest_en_mod4 + 26 + 26 + + + dtest_en_adpll_adc + 25 + 25 + + + dtest_en_rxadc_i + 24 + 24 + + + dtest_en_rxadc_q + 23 + 23 + + + dtest_pulldown + 0 + 0 + + + + + adpll_test + adpll_test. + 0x130 + + + adpll_test_start + 25 + 25 + + + adpll_test_en + 24 + 24 + + + adpll_test_start_sel + 20 + 21 + + + adpll_test_data_sel + 16 + 18 + + + adpll_test_out + 0 + 15 + + + + + rf_ext_pa + rf_ext_pa. + 0x134 + + + rf_ext_pa_rx + 20 + 24 + + + rf_ext_pa_lorx + 15 + 19 + + + rf_ext_pa_tx + 10 + 14 + + + rf_ext_pa_lotx + 5 + 9 + + + rf_ext_pa_sb + 0 + 4 + + + + + cip_ldo15 + cip_ldo15. + 0x200 + + + vg11_sel + 0 + 1 + + + + + pa + PA register + 0x204 + + + pa_force_short_open + 30 + 30 + + + pa_hp_en + 29 + 29 + + + pa_lp_en + 28 + 28 + + + pa_ldo_bm + 24 + 26 + + + pa_vdd11_sel + 20 + 22 + + + pa_para_cs + 12 + 15 + + + pa_seri_cs_hw + 8 + 11 + + + pa_seri_cs_rx + 4 + 7 + + + pa_seri_cs_tx + 0 + 3 + + + + + lna_mx + LNA mixer register + 0x208 + + + lna_bm_hw + 28 + 31 + + + lna_bm_hg + 24 + 27 + + + lna_bm_lg + 20 + 23 + + + lna_cap_lg + 18 + 19 + + + lna_cap_match + 15 + 17 + + + lna_lg_gsel + 12 + 14 + + + lna_load_csw + 8 + 11 + + + lna_vdd13_sel + 6 + 7 + + + lna_rfb_match + 3 + 5 + + + rmx_bm + 0 + 2 + + + + + rbb_rosdac + rbb_rosdac. + 0x20C + + + rosdac_i + 24 + 29 + + + rosdac_q + 16 + 21 + + + rosdac_i_hw + 8 + 13 + + + rosdac_q_hw + 0 + 5 + + + + + rbb_cap_1 + rbb_cap_1. + 0x210 + + + rbb_cap1_fc_i + 24 + 29 + + + rbb_cap1_fc_q + 16 + 21 + + + rbb_cap2_fc_i + 8 + 13 + + + rbb_cap2_fc_q + 0 + 5 + + + + + rbb_cap_2 + rbb_cap_2. + 0x214 + + + rbb_cap1_fc_i_hw + 24 + 29 + + + rbb_cap1_fc_q_hw + 16 + 21 + + + rbb_cap2_fc_i_hw + 8 + 13 + + + rbb_cap2_fc_q_hw + 0 + 5 + + + + + rbb_cap_3 + rbb_cap_3. + 0x218 + + + rbb_cap1_fc_i_bw0 + 24 + 29 + + + rbb_cap1_fc_q_bw0 + 16 + 21 + + + rbb_cap2_fc_i_bw0 + 8 + 13 + + + rbb_cap2_fc_q_bw0 + 0 + 5 + + + + + rbb_cap4 + rbb_cap4. + 0x21C + + + rbb_cap1_fc_i_bw1 + 24 + 29 + + + rbb_cap1_fc_q_bw1 + 16 + 21 + + + rbb_cap2_fc_i_bw1 + 8 + 13 + + + rbb_cap2_fc_q_bw1 + 0 + 5 + + + + + rbb_rx + rbb_rx. + 0x220 + + + rbb_rx1 + 28 + 30 + + + rbb_rx2 + 24 + 26 + + + rbb_rx1_hw + 20 + 22 + + + rbb_rx2_hw + 16 + 18 + + + rbb_rx1_bw0 + 12 + 14 + + + rbb_rx2_bw0 + 8 + 10 + + + rbb_rx1_bw1 + 4 + 6 + + + rbb_rx2_bw1 + 0 + 2 + + + + + rbb + rbb. + 0x224 + + + rbb_bm_op + 28 + 29 + + + rbb_vcm + 24 + 25 + + + rbb_deq + 20 + 21 + + + rbb_lpf_en + 19 + 19 + + + rosdac_range + 16 + 17 + + + rbb_pkdet_vth + 12 + 15 + + + rbb_pkdet_en + 10 + 10 + + + rbb_pkdet_en_hw + 9 + 9 + + + rbb_pkdet_en_ctrl_hw + 8 + 8 + + + rbb_pkdet_out_rstn + 6 + 6 + + + rbb_pkdet_out_rstn_hw + 5 + 5 + + + rbb_pkdet_out_rstn_ctrl_hw + 4 + 4 + + + pkdet_out_raw + 1 + 1 + + + pkdet_out_latch + 0 + 0 + + + + + rxadc + rxadc. + 0x228 + + + rxadc_dly_ctrl + 24 + 25 + + + rxadc_glitch_remove + 20 + 20 + + + rxadc_clk_div_sel + 16 + 16 + + + rxadc_clk_inv + 12 + 12 + + + rxadc_clk_sync_inv + 8 + 8 + + + rxadc_vref_sel + 4 + 5 + + + rxadc_oscal_en + 0 + 0 + + + + + rxadc_readback + rxadc_readback. + 0x22C + + + rxadc_dout_i + 16 + 24 + + + rxadc_dout_q + 0 + 8 + + + + + rf_adc_osdata + rf_adc_osdata. + 0x230 + + + rxadc_os_i + 16 + 24 + + + rxadc_os_q + 0 + 8 + + + + + testbuf + testbuf. + 0x234 + + + pu_testbuf + 24 + 24 + + + testbuf_vcm + 20 + 21 + + + testbuf_bm + 16 + 18 + + + testbuf_boost + 12 + 12 + + + testbuf_op_cc + 8 + 11 + + + testbuf_rfb + 4 + 4 + + + testbuf_rin + 0 + 0 + + + + + vco + vco. + 0x238 + + + vco_acal_ud + 31 + 31 + + + vco_idac_hw + 24 + 29 + + + vco_idac + 16 + 21 + + + vco_ldo_bypass + 15 + 15 + + + vco_ldo_vsel + 13 + 14 + + + vco_idac_boost + 12 + 12 + + + vco_vbias + 8 + 9 + + + vco_acal_vref + 4 + 6 + + + vco_modcap_sel + 2 + 3 + + + vco_short_idac_filter + 1 + 1 + + + vco_short_vbias_filter + 0 + 0 + + + + + lodist + lodist. + 0x23C + + + lodist_75dc_sel + 16 + 16 + + + lodist_nwell_bias + 12 + 13 + + + lodist_rwell_bias + 8 + 9 + + + lodist_rxbuf_supply_boost + 6 + 6 + + + lodist_rxbuf_supply_mode + 4 + 5 + + + lodist_txbuf_supply_mode + 0 + 1 + + + + + fbdv + fbdv. + 0x240 + + + dco_dither_clk_polarity + 29 + 29 + + + lotpm_fmash_clk_polarity + 28 + 28 + + + rst_mmdiv + 24 + 24 + + + fbdv_stg_sel + 20 + 20 + + + fbdv_sample_clk_sel + 16 + 17 + + + fbdv_fb_clk_sel + 12 + 12 + + + fbdv_dco_dither_clk_sel + 8 + 8 + + + fbdv_adpll_clk_sel + 4 + 4 + + + fbdv_tpm_clk_sel + 0 + 2 + + + + + kcal1 + kcal1. + 0x244 + + + kcal_ratio + 20 + 29 + + + kcal_cnt_start + 16 + 16 + + + kcal_div + 0 + 15 + + + + + kcal2 + kcal2. + 0x248 + + + kcal_ratio_hw + 20 + 29 + + + kcal_cnt_rdy + 16 + 16 + + + kcal_cnt_op + 0 + 15 + + + + + adpll_slope_gen + adpll_slope_gen. + 0x24C + + + adpll_slope_gen_pulse_width_enhance + 6 + 6 + + + adpll_slope_gen_dc_corr + 4 + 5 + + + adpll_slope_gen_r_sel + 0 + 2 + + + + + adpll_adc + adpll_adc. + 0x250 + + + adpll_adc_clk_en + 29 + 29 + + + adpll_adc_clk_inv + 28 + 28 + + + adpll_adc_clk_div_sel + 24 + 24 + + + adpll_adc_clk_sync_inv + 16 + 16 + + + adpll_adc_oscal_en + 12 + 12 + + + adpll_adc_vref_coarse + 8 + 9 + + + adpll_adc_vref_fine + 4 + 5 + + + adpll_adc_data_sign_sel + 2 + 2 + + + adpll_adc_vth_en + 1 + 1 + + + adpll_adc_vth_bias_mode + 0 + 0 + + + + + adpll_dtc + adpll_dtc. + 0x254 + + + adpll_dtc_inv_vth_sel + 8 + 9 + + + adpll_dtc_r_sel + 4 + 6 + + + adpll_dtc_bypass + 0 + 0 + + + + + lo_fc_config1 + lo_fc_config1. + 0x258 + + + lo_fcw + 0 + 24 + + + + + lo_fcw_config2 + lo_fcw_config2. + 0x25C + + + lo_fcw_hw + 0 + 24 + + + + + lo_fcw3 + lo_fcw3. + 0x260 + + + tx_freq_mod_hp + 16 + 25 + + + tx_freq_mod_lp + 0 + 11 + + + + + lotpm + lotpm. + 0x264 + + + lotpm_hfp_mash1_sel + 16 + 16 + + + lotpm_hfp_polarity + 12 + 12 + + + lotpm_hfp_delay_fref + 8 + 9 + + + lotpm_hfp_delay_fmash + 4 + 7 + + + lotpm_lfp_delay_sel + 0 + 1 + + + + + adpll1 + adpll1. + 0x268 + + + adpll_force_inc_fcal_en + 26 + 26 + + + adpll_lo_unlock_intrpt_clear_sel + 25 + 25 + + + adpll_sfreg_sel + 24 + 24 + + + adpll_lo_open + 23 + 23 + + + adpll_mom_search_en_ext + 22 + 22 + + + adpll_freqerr_det_start_ext + 21 + 21 + + + adpll_mom_update_en_ext + 20 + 20 + + + adpll_vctrl_det_en_ext + 19 + 19 + + + adpll_vctrl_det_start_ext + 18 + 18 + + + adpll_abnormal_dealed + 15 + 15 + + + adpll_lock_fail_en + 14 + 14 + + + adpll_fsm_en + 12 + 12 + + + adpll_lo_fsm_ext + 11 + 11 + + + adpll_lo_lock_directly + 10 + 10 + + + adpll_fcal_start_ext + 9 + 9 + + + adpll_fcal_done_ext + 8 + 8 + + + adpll_loop_lock_ext + 7 + 7 + + + adpll_rst_spd_det_ext + 6 + 6 + + + adpll_rst_coarse_det_ext + 5 + 5 + + + adpll_momhold_lmsenb_ext + 4 + 4 + + + adpll_timeout_cnt_sel + 3 + 3 + + + adpll_timeout_cnt1_sel + 2 + 2 + + + adpll_lo_lock_sel + 1 + 1 + + + adpll_lo_unlock_intrpt_clear + 0 + 0 + + + + + adpll_lf_reg + adpll_lf_reg. + 0x26C + + + adpll_lf_ctrl_hw + 28 + 28 + + + adpll_lf_alpha_base + 27 + 27 + + + adpll_lf_alpha_exp + 24 + 26 + + + adpll_lf_alpha_fast + 20 + 21 + + + adpll_lf_beta_base + 17 + 18 + + + adpll_lf_beta_exp + 14 + 16 + + + adpll_lf_beta_fast + 13 + 13 + + + adpll_lf_f_p3 + 10 + 11 + + + adpll_lf_avg_en + 9 + 9 + + + adpll_lf_lsb_ext + 2 + 8 + + + adpll_lf_vctrl_range_ext + 0 + 1 + + + + + adpll_lf_tx + adpll_lf_tx. + 0x270 + + + adpll_lf_alpha_base_tx + 27 + 27 + + + adpll_lf_alpha_exp_tx + 24 + 26 + + + adpll_lf_alpha_fast_tx + 20 + 21 + + + adpll_lf_beta_base_tx + 17 + 18 + + + adpll_lf_beta_exp_tx + 14 + 16 + + + adpll_lf_beta_fast_tx + 13 + 13 + + + adpll_lf_f_p3_tx + 10 + 11 + + + + + adpll_lf_rx + adpll_lf_rx. + 0x274 + + + adpll_lf_alpha_base_rx + 27 + 27 + + + adpll_lf_alpha_exp_rx + 24 + 26 + + + adpll_lf_alpha_fast_rx + 20 + 21 + + + adpll_lf_beta_base_rx + 17 + 18 + + + adpll_lf_beta_exp_rx + 14 + 16 + + + adpll_lf_beta_fast_rx + 13 + 13 + + + adpll_lf_f_p3_rx + 10 + 11 + + + + + adpll_lf_hw + adpll_lf_hw. + 0x278 + + + adpll_lf_alpha_base_hw + 27 + 27 + + + adpll_lf_alpha_exp_hw + 24 + 26 + + + adpll_lf_alpha_fast_hw + 20 + 21 + + + adpll_lf_beta_base_hw + 17 + 18 + + + adpll_lf_beta_exp_hw + 14 + 16 + + + adpll_lf_beta_fast_hw + 13 + 13 + + + adpll_lf_f_p3_hw + 10 + 11 + + + + + adpll_vctrl + adpll_vctrl. + 0x27C + + + adpll_vctrl_range_sel_ext_en + 27 + 27 + + + adpll_vctrl_lock_win_sel + 26 + 26 + + + adpll_vctrl_moni_win_sel + 25 + 25 + + + adpll_vctrl_det_cons_en + 24 + 24 + + + adpll_mom_update_period + 20 + 21 + + + adpll_force_mom_hold + 16 + 16 + + + adpll_dco_mash_bypass + 15 + 15 + + + adpll_capcode_bypass + 14 + 14 + + + sdm_order + 12 + 12 + + + sdm_dither + 8 + 9 + + + sdm_bypass + 4 + 4 + + + sdmout_dly_sel + 0 + 1 + + + + + adpll_lms + adpll_lms. + 0x280 + + + adpll_fref_div2_en + 31 + 31 + + + adpll_lms_ext_value_en + 29 + 29 + + + adpll_lms_ext_value + 20 + 28 + + + adpll_sdm_dither_en + 19 + 19 + + + adpll_sdm_dither_en_ctrl_hw + 18 + 18 + + + adpll_lms_step + 16 + 17 + + + adpll_sdm_dither_prbs_en + 15 + 15 + + + adpll_pha_dem_en + 14 + 14 + + + adpll_pha_dither_en + 13 + 13 + + + adpll_lms_step_enlarge + 12 + 12 + + + adpll_pha_prbs_sel + 10 + 11 + + + adpll_lms_q_delay + 8 + 9 + + + adpll_pha_cancel_en + 4 + 4 + + + adpll_pha_cancel_delay + 0 + 1 + + + + + adpll_spd + adpll_spd. + 0x284 + + + adpll_spd_in_range_delay_1 + 30 + 31 + + + adpll_coarsepha_dly_sel + 29 + 29 + + + adpll_force_coarse_path_on + 28 + 28 + + + adpll_spd_lms_sstp_win_sel + 27 + 27 + + + adpll_spd_outrange_dly_sel_ext + 25 + 26 + + + adpll_coarse_path_offtime_sel + 24 + 24 + + + adpll_coarse_phaerr_en + 23 + 23 + + + adpll_force_lf_fast_mode_hw + 22 + 22 + + + adpll_force_lf_fast_mode + 21 + 21 + + + adpll_force_lf_fast_mode_ctrl_hw + 20 + 20 + + + adpll_coarse_gain + 18 + 19 + + + adpll_spd_gain + 16 + 17 + + + adpll_coarse_in_range_cons + 14 + 15 + + + adpll_spd_threshold + 12 + 13 + + + adpll_coarse_path_turnoff + 10 + 11 + + + adpll_spd_in_range_cons + 8 + 9 + + + adpll_spd_out_range_delay + 4 + 4 + + + adpll_spd_in_range_delay + 0 + 1 + + + + + fcal + fcal. + 0x288 + + + fcal_mom_ini_ext + 16 + 23 + + + fcal_mode + 6 + 7 + + + fcal_clk_period + 4 + 5 + + + fcal_mom_toggle_cnt + 3 + 3 + + + fcal_coarse_pha_threshold + 1 + 2 + + + fcal_div_ratio_adj_en + 0 + 0 + + + + + adpll_polarity + adpll_polarity. + 0x28C + + + adpll_lp_polarity + 20 + 20 + + + adpll_fcal_polarity + 16 + 16 + + + adpll_lms_polarity + 12 + 12 + + + adpll_lp_mom_polarity + 8 + 8 + + + + + adpll_output + adpll_output. + 0x290 + + + adpll_freqerr_det_done + 21 + 21 + + + adpll_freqerr_ou + 20 + 20 + + + adpll_freqerr_sign + 19 + 19 + + + adpll_vctrl_det_done + 18 + 18 + + + adpll_capcode_ud + 17 + 17 + + + adpll_mom_update_total_ou + 15 + 16 + + + adpll_capcode_out_range + 14 + 14 + + + adpll_fcal_done_fsm + 13 + 13 + + + adpll_spd_lock_fsm + 12 + 12 + + + adpll_spd_unlock_fsm + 11 + 11 + + + adpll_mom_update_ou_fsm + 10 + 10 + + + adpll_mom_update_fail_fsm + 9 + 9 + + + adpll_vctrl_out_range_fsm + 8 + 8 + + + adpll_spd_unlock_sign + 7 + 7 + + + adpll_fsm_state + 3 + 6 + + + adpll_lo_lock + 1 + 1 + + + adpll_unlock_intrpt + 0 + 0 + + + + + adpll_reserved + adpll_reserved. + 0x294 + + + adpll_resv0 + 16 + 31 + + + adpll_resv1 + 0 + 15 + + + + + rf_reserved + rf_reserved. + 0x298 + + + rf_resv0 + 16 + 31 + + + rf_resv1 + 0 + 15 + + + + + rf_reserved_2 + rf_reserved_2. + 0x29C + + + rf_resv + 0 + 31 + + + + + rbb_gain_ctrl0 + rbb_gain_ctrl0. + 0x300 + + + gain_ctrl0_g_rbb1 + 28 + 29 + + + gain_ctrl0_g_rbb2 + 24 + 26 + + + gain_ctrl0_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl0_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl0_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl0_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl1 + rbb_gain_ctrl1. + 0x304 + + + gain_ctrl1_g_rbb1 + 28 + 29 + + + gain_ctrl1_g_rbb2 + 24 + 26 + + + gain_ctrl1_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl1_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl1_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl1_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl2 + rbb_gain_ctrl2. + 0x308 + + + gain_ctrl2_g_rbb1 + 28 + 29 + + + gain_ctrl2_g_rbb2 + 24 + 26 + + + gain_ctrl2_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl2_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl2_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl2_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl3 + rbb_gain_ctrl3. + 0x30C + + + gain_ctrl3_g_rbb1 + 28 + 29 + + + gain_ctrl3_g_rbb2 + 24 + 26 + + + gain_ctrl3_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl3_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl3_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl3_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl4 + rbb_gain_ctrl4. + 0x310 + + + gain_ctrl4_g_rbb1 + 28 + 29 + + + gain_ctrl4_g_rbb2 + 24 + 26 + + + gain_ctrl4_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl4_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl4_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl4_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl5 + rbb_gain_ctrl5. + 0x314 + + + gain_ctrl5_g_rbb1 + 28 + 29 + + + gain_ctrl5_g_rbb2 + 24 + 26 + + + gain_ctrl5_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl5_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl5_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl5_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl6 + rbb_gain_ctrl6. + 0x318 + + + gain_ctrl6_g_rbb1 + 28 + 29 + + + gain_ctrl6_g_rbb2 + 24 + 26 + + + gain_ctrl6_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl6_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl6_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl6_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl7 + rbb_gain_ctrl7. + 0x31C + + + gain_ctrl7_g_rbb1 + 28 + 29 + + + gain_ctrl7_g_rbb2 + 24 + 26 + + + gain_ctrl7_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl7_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl7_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl7_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl8 + rbb_gain_ctrl8. + 0x320 + + + gain_ctrl8_g_rbb1 + 28 + 29 + + + gain_ctrl8_g_rbb2 + 24 + 26 + + + gain_ctrl8_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl8_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl8_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl8_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl9 + rbb_gain_ctrl9. + 0x324 + + + gain_ctrl9_g_rbb1 + 28 + 29 + + + gain_ctrl9_g_rbb2 + 24 + 26 + + + gain_ctrl9_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl9_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl9_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl9_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl10 + rbb_gain_ctrl10. + 0x328 + + + gain_ctrl10_g_rbb1 + 28 + 29 + + + gain_ctrl10_g_rbb2 + 24 + 26 + + + gain_ctrl10_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl10_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl10_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl10_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl11 + rbb_gain_ctrl11. + 0x32C + + + gain_ctrl11_g_rbb1 + 28 + 29 + + + gain_ctrl11_g_rbb2 + 24 + 26 + + + gain_ctrl11_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl11_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl11_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl11_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl12 + rbb_gain_ctrl12. + 0x330 + + + gain_ctrl12_g_rbb1 + 28 + 29 + + + gain_ctrl12_g_rbb2 + 24 + 26 + + + gain_ctrl12_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl12_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl12_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl12_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl13 + rbb_gain_ctrl13. + 0x334 + + + gain_ctrl13_g_rbb1 + 28 + 29 + + + gain_ctrl13_g_rbb2 + 24 + 26 + + + gain_ctrl13_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl13_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl13_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl13_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl14 + rbb_gain_ctrl14. + 0x338 + + + gain_ctrl14_g_rbb1 + 28 + 29 + + + gain_ctrl14_g_rbb2 + 24 + 26 + + + gain_ctrl14_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl14_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl14_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl14_rosdac_q_bw0 + 0 + 5 + + + + + rbb_gain_ctrl15 + rbb_gain_ctrl15. + 0x33C + + + gain_ctrl15_g_rbb1 + 28 + 29 + + + gain_ctrl15_g_rbb2 + 24 + 26 + + + gain_ctrl15_rosdac_i_bw1 + 18 + 23 + + + gain_ctrl15_rosdac_q_bw1 + 12 + 17 + + + gain_ctrl15_rosdac_i_bw0 + 6 + 11 + + + gain_ctrl15_rosdac_q_bw0 + 0 + 5 + + + + + acal_config + acal_config. + 0x400 + + + vco_idac_hh + 24 + 29 + + + vco_idac_hl + 16 + 21 + + + vco_idac_lh + 8 + 13 + + + vco_idac_ll + 0 + 5 + + + + + lo_config_2402 + lo_config_2402. + 0x404 + + + adpll_sdm_dither_en_2402 + 12 + 12 + + + kcal_ratio_2402 + 0 + 9 + + + + + lo_config_2404 + lo_config_2404. + 0x408 + + + adpll_sdm_dither_en_2404 + 12 + 12 + + + kcal_ratio_2404 + 0 + 9 + + + + + lo_config_2406 + lo_config_2406. + 0x40C + + + adpll_sdm_dither_en_2406 + 12 + 12 + + + kcal_ratio_2406 + 0 + 9 + + + + + lo_config_2408 + lo_config_2408. + 0x410 + + + adpll_sdm_dither_en_2408 + 12 + 12 + + + kcal_ratio_2408 + 0 + 9 + + + + + lo_config_2410 + lo_config_2410. + 0x414 + + + adpll_sdm_dither_en_2410 + 12 + 12 + + + kcal_ratio_2410 + 0 + 9 + + + + + lo_config_2412 + lo_config_2412. + 0x418 + + + adpll_sdm_dither_en_2412 + 12 + 12 + + + kcal_ratio_2412 + 0 + 9 + + + + + lo_config_2414 + lo_config_2414. + 0x41C + + + adpll_sdm_dither_en_2414 + 12 + 12 + + + kcal_ratio_2414 + 0 + 9 + + + + + lo_config_2416 + lo_config_2416. + 0x420 + + + adpll_sdm_dither_en_2416 + 12 + 12 + + + kcal_ratio_2416 + 0 + 9 + + + + + lo_config_2418 + lo_config_2418. + 0x424 + + + adpll_sdm_dither_en_2418 + 12 + 12 + + + kcal_ratio_2418 + 0 + 9 + + + + + lo_config_2420 + lo_config_2420. + 0x428 + + + adpll_sdm_dither_en_2420 + 12 + 12 + + + kcal_ratio_2420 + 0 + 9 + + + + + lo_config_2422 + lo_config_2422. + 0x42C + + + adpll_sdm_dither_en_2422 + 12 + 12 + + + kcal_ratio_2422 + 0 + 9 + + + + + lo_config_2424 + lo_config_2424. + 0x430 + + + adpll_sdm_dither_en_2424 + 12 + 12 + + + kcal_ratio_2424 + 0 + 9 + + + + + lo_config_2426 + lo_config_2426. + 0x434 + + + adpll_sdm_dither_en_2426 + 12 + 12 + + + kcal_ratio_2426 + 0 + 9 + + + + + lo_config_2428 + lo_config_2428. + 0x438 + + + adpll_sdm_dither_en_2428 + 12 + 12 + + + kcal_ratio_2428 + 0 + 9 + + + + + lo_config_2430 + lo_config_2430. + 0x43C + + + adpll_sdm_dither_en_2430 + 12 + 12 + + + kcal_ratio_2430 + 0 + 9 + + + + + lo_config_2432 + lo_config_2432. + 0x440 + + + adpll_sdm_dither_en_2432 + 12 + 12 + + + kcal_ratio_2432 + 0 + 9 + + + + + lo_config_2434 + lo_config_2434. + 0x444 + + + adpll_sdm_dither_en_2434 + 12 + 12 + + + kcal_ratio_2434 + 0 + 9 + + + + + lo_config_2436 + lo_config_2436. + 0x448 + + + adpll_sdm_dither_en_2436 + 12 + 12 + + + kcal_ratio_2436 + 0 + 9 + + + + + lo_config_2438 + lo_config_2438. + 0x44C + + + adpll_sdm_dither_en_2438 + 12 + 12 + + + kcal_ratio_2438 + 0 + 9 + + + + + lo_config_2440 + lo_config_2440. + 0x450 + + + adpll_sdm_dither_en_2440 + 12 + 12 + + + kcal_ratio_2440 + 0 + 9 + + + + + lo_config_2442 + lo_config_2442. + 0x454 + + + adpll_sdm_dither_en_2442 + 12 + 12 + + + kcal_ratio_2442 + 0 + 9 + + + + + lo_config_2444 + lo_config_2444. + 0x458 + + + adpll_sdm_dither_en_2444 + 12 + 12 + + + kcal_ratio_2444 + 0 + 9 + + + + + lo_config_2446 + lo_config_2446. + 0x45C + + + adpll_sdm_dither_en_2446 + 12 + 12 + + + kcal_ratio_2446 + 0 + 9 + + + + + lo_config_2448 + lo_config_2448. + 0x460 + + + adpll_sdm_dither_en_2448 + 12 + 12 + + + kcal_ratio_2448 + 0 + 9 + + + + + lo_config_2450 + lo_config_2450. + 0x464 + + + adpll_sdm_dither_en_2450 + 12 + 12 + + + kcal_ratio_2450 + 0 + 9 + + + + + lo_config_2452 + lo_config_2452. + 0x468 + + + adpll_sdm_dither_en_2452 + 12 + 12 + + + kcal_ratio_2452 + 0 + 9 + + + + + lo_config_2454 + lo_config_2454. + 0x46C + + + adpll_sdm_dither_en_2454 + 12 + 12 + + + kcal_ratio_2454 + 0 + 9 + + + + + lo_config_2456 + lo_config_2456. + 0x470 + + + adpll_sdm_dither_en_2456 + 12 + 12 + + + kcal_ratio_2456 + 0 + 9 + + + + + lo_config_2458 + lo_config_2458. + 0x474 + + + adpll_sdm_dither_en_2458 + 12 + 12 + + + kcal_ratio_2458 + 0 + 9 + + + + + lo_config_2460 + lo_config_2460. + 0x478 + + + adpll_sdm_dither_en_2460 + 12 + 12 + + + kcal_ratio_2460 + 0 + 9 + + + + + lo_config_2462 + lo_config_2462. + 0x47C + + + adpll_sdm_dither_en_2462 + 12 + 12 + + + kcal_ratio_2462 + 0 + 9 + + + + + lo_config_2464 + lo_config_2464. + 0x480 + + + adpll_sdm_dither_en_2464 + 12 + 12 + + + kcal_ratio_2464 + 0 + 9 + + + + + lo_config_2466 + lo_config_2466. + 0x484 + + + adpll_sdm_dither_en_2466 + 12 + 12 + + + kcal_ratio_2466 + 0 + 9 + + + + + lo_config_2468 + lo_config_2468. + 0x488 + + + adpll_sdm_dither_en_2468 + 12 + 12 + + + kcal_ratio_2468 + 0 + 9 + + + + + lo_config_2470 + lo_config_2470. + 0x48C + + + adpll_sdm_dither_en_2470 + 12 + 12 + + + kcal_ratio_2470 + 0 + 9 + + + + + lo_config_2472 + lo_config_2472. + 0x490 + + + adpll_sdm_dither_en_2472 + 12 + 12 + + + kcal_ratio_2472 + 0 + 9 + + + + + lo_config_2474 + lo_config_2474. + 0x494 + + + adpll_sdm_dither_en_2474 + 12 + 12 + + + kcal_ratio_2474 + 0 + 9 + + + + + lo_config_2476 + lo_config_2476. + 0x498 + + + adpll_sdm_dither_en_2476 + 12 + 12 + + + kcal_ratio_2476 + 0 + 9 + + + + + lo_config_2478 + lo_config_2478. + 0x49C + + + adpll_sdm_dither_en_2478 + 12 + 12 + + + kcal_ratio_2478 + 0 + 9 + + + + + lo_config_2480 + lo_config_2480. + 0x4A0 + + + adpll_sdm_dither_en_2480 + 12 + 12 + + + kcal_ratio_2480 + 0 + 9 + + + + + lo_config_2405 + lo_config_2405. + 0x4A4 + + + adpll_sdm_dither_en_2405 + 12 + 12 + + + kcal_ratio_2405 + 0 + 9 + + + + + lo_config_2415 + lo_config_2415. + 0x4A8 + + + adpll_sdm_dither_en_2415 + 12 + 12 + + + kcal_ratio_2415 + 0 + 9 + + + + + lo_config_2425 + lo_config_2425. + 0x4AC + + + adpll_sdm_dither_en_2425 + 12 + 12 + + + kcal_ratio_2425 + 0 + 9 + + + + + lo_config_2435 + lo_config_2435. + 0x4B0 + + + adpll_sdm_dither_en_2435 + 12 + 12 + + + kcal_ratio_2435 + 0 + 9 + + + + + lo_config_2445 + lo_config_2445. + 0x4B4 + + + adpll_sdm_dither_en_2445 + 12 + 12 + + + kcal_ratio_2445 + 0 + 9 + + + + + lo_config_2455 + lo_config_2455. + 0x4B8 + + + adpll_sdm_dither_en_2455 + 12 + 12 + + + kcal_ratio_2455 + 0 + 9 + + + + + lo_config_2465 + lo_config_2465. + 0x4BC + + + adpll_sdm_dither_en_2465 + 12 + 12 + + + kcal_ratio_2465 + 0 + 9 + + + + + lo_config_2475 + lo_config_2475. + 0x4C0 + + + adpll_sdm_dither_en_2475 + 12 + 12 + + + kcal_ratio_2475 + 0 + 9 + + + + + dg_testbus_0 + dg_testbus_0. + 0x500 + + + rf_testbus_read + 0 + 31 + + + + + dg_testbus_1 + dg_testbus_1. + 0x504 + + + rf_testbus_sel + 0 + 3 + + + + + dg_ppud_0 + dg_ppud_0. + 0x508 + + + ppud_manaual_en + 30 + 30 + + + ppud_cnt1 + 25 + 29 + + + ppud_cnt2 + 16 + 24 + + + + + rf_top + rf_top. + 0x50C + + + rf_tx_en_src + 31 + 31 + + + rf_tx_en_4s + 30 + 30 + + + rf_rx_en_src + 29 + 29 + + + rf_rx_en_4s + 28 + 28 + + + rf_rx_mode_4s_en + 26 + 26 + + + rf_rx_mode_4s + 24 + 25 + + + rf_rx_mode_hw + 22 + 23 + + + rf_mac_lo_time_offset + 16 + 21 + + + rfckg_afifo_tx_inv + 2 + 2 + + + rfckg_afifo_rxadc_inv + 1 + 1 + + + rfckg_afifo_adpll_inv + 0 + 0 + + + + + rf_fsm + rf_fsm. + 0x510 + + + rf_fsm_afifo_dly_time + 26 + 31 + + + rf_fsm_tx_afifo_4s_en + 25 + 25 + + + rf_fsm_tx_afifo_4s + 24 + 24 + + + rf_fsm_rx_afifo_4s_en + 23 + 23 + + + rf_fsm_rx_afifo_4s + 22 + 22 + + + rf_fsm_en + 21 + 21 + + + rf_fsm_st_4s_en + 20 + 20 + + + rf_fsm_st_4s + 16 + 18 + + + rf_fsm_state + 12 + 14 + + + rf_fsm_lo_time + 0 + 11 + + + + + rf_singen_0 + rf_singen_0. + 0x514 + + + singen_en + 31 + 31 + + + singen_clkdiv_n + 29 + 30 + + + singen_unsign_en + 28 + 28 + + + singen_inc_step0 + 16 + 25 + + + singen_inc_step1 + 0 + 9 + + + + + rf_singen_1 + rf_singen_1. + 0x518 + + + singen_mode_i + 28 + 31 + + + singen_clkdiv_i + 16 + 25 + + + singen_mode_q + 12 + 15 + + + singen_clkdiv_q + 0 + 9 + + + + + rf_singen_2 + rf_singen_2. + 0x51C + + + singen_start_addr0_i + 22 + 31 + + + singen_start_addr1_i + 12 + 21 + + + singen_gain_i + 0 + 10 + + + + + rf_singen_3 + rf_singen_3. + 0x520 + + + singen_start_addr0_q + 22 + 31 + + + singen_start_addr1_q + 12 + 21 + + + singen_gain_q + 0 + 10 + + + + + rf_singen_4 + rf_singen_4. + 0x524 + + + singen_fix_en_i + 28 + 28 + + + singen_fix_i + 16 + 27 + + + singen_fix_en_q + 12 + 12 + + + singen_fix_q + 0 + 11 + + + + + rf_sram_ctrl0 + rf_sram_ctrl0. + 0x528 + + + rf_sram_done_cnt + 16 + 31 + + + rf_sram_mode + 4 + 5 + + + rf_sram_sts_clr + 3 + 3 + + + rf_sram_loop_en + 2 + 2 + + + rf_sram_en + 1 + 1 + + + rf_sram_done + 0 + 0 + + + + + rf_sram_ctrl1 + rf_sram_ctrl1. + 0x52C + + + rf_sram_addr_start + 16 + 31 + + + rf_sram_addr_end + 0 + 15 + + + + + rf_sram_ctrl2 + rf_sram_ctrl2. + 0x530 + + + rf_sram_sts + 0 + 31 + + + + + rf_test_mode + rf_test_mode. + 0x534 + + + rf_test_mode_en + 30 + 30 + + + dacout_4s_sram_en + 29 + 29 + + + dacout_4s_en + 28 + 28 + + + dacout_4s + 16 + 27 + + + dacout_hw + 0 + 11 + + + + + rf_rx_pulse_filter + rf_rx_pulse_filter. + 0x538 + + + pf_en_i + 21 + 21 + + + pf_en_q + 20 + 20 + + + pf_th1 + 10 + 18 + + + pf_th2 + 0 + 8 + + + + + + + gpip + gpip. + 0x40002000 + gpip + 32 + read-write + + 0 + 0x1000 + registers + + + + gpadc_config + gpadc_config. + 0x0 + + + rsvd_31_24 + 24 + 31 + + + gpadc_fifo_thl + 22 + 23 + + + gpadc_fifo_data_count + 16 + 21 + + + gpadc_fifo_rdy_mask + 15 + 15 + + + gpadc_fifo_underrun_mask + 14 + 14 + + + gpadc_fifo_overrun_mask + 13 + 13 + + + gpadc_rdy_mask + 12 + 12 + + + gpadc_fifo_underrun_clr + 10 + 10 + + + gpadc_fifo_overrun_clr + 9 + 9 + + + gpadc_rdy_clr + 8 + 8 + + + gpadc_fifo_rdy + 7 + 7 + + + gpadc_fifo_underrun + 6 + 6 + + + gpadc_fifo_overrun + 5 + 5 + + + gpadc_rdy + 4 + 4 + + + gpadc_fifo_full + 3 + 3 + + + gpadc_fifo_ne + 2 + 2 + + + gpadc_fifo_clr + 1 + 1 + + + gpadc_dma_en + 0 + 0 + + + + + gpadc_dma_rdata + gpadc_dma_rdata. + 0x4 + + + rsvd_31_26 + 26 + 31 + + + gpadc_dma_rdata + 0 + 25 + + + + + gpdac_config + gpdac_config. + 0x40 + + + rsvd_31_24 + 24 + 31 + + + gpdac_ch_b_sel + 20 + 23 + + + gpdac_ch_a_sel + 16 + 19 + + + gpdac_mode + 8 + 10 + + + dsm_mode + 4 + 5 + + + gpdac_en2 + 1 + 1 + + + gpdac_en + 0 + 0 + + + + + gpdac_dma_config + gpdac_dma_config. + 0x44 + + + gpdac_dma_format + 4 + 5 + + + gpdac_dma_tx_en + 0 + 0 + + + + + gpdac_dma_wdata + gpdac_dma_wdata. + 0x48 + + + gpdac_dma_wdata + 0 + 31 + + + + + gpdac_tx_fifo_status + gpdac_tx_fifo_status. + 0x4C + + + TxFifoWrPtr + 8 + 9 + + + TxFifoRdPtr + 4 + 6 + + + tx_cs + 2 + 3 + + + tx_fifo_full + 1 + 1 + + + tx_fifo_empty + 0 + 0 + + + + + + + sec_dbg + sec_dbg. + 0x40003000 + sec_dbg + 32 + read-write + + 0 + 0x1000 + registers + + + + sd_chip_id_low + sd_chip_id_low. + 0x0 + + + sd_chip_id_low + 0 + 31 + + + + + sd_chip_id_high + sd_chip_id_high. + 0x4 + + + sd_chip_id_high + 0 + 31 + + + + + sd_wifi_mac_low + sd_wifi_mac_low. + 0x8 + + + sd_wifi_mac_low + 0 + 31 + + + + + sd_wifi_mac_high + sd_wifi_mac_high. + 0xC + + + sd_wifi_mac_high + 0 + 31 + + + + + sd_dbg_pwd_low + sd_dbg_pwd_low. + 0x10 + + + sd_dbg_pwd_low + 0 + 31 + + + + + sd_dbg_pwd_high + sd_dbg_pwd_high. + 0x14 + + + sd_dbg_pwd_high + 0 + 31 + + + + + sd_status + sd_status. + 0x18 + + + sd_dbg_ena + 28 + 31 + + + sd_dbg_mode + 24 + 27 + + + sd_dbg_pwd_cnt + 4 + 23 + + + sd_dbg_cci_clk_sel + 3 + 3 + + + sd_dbg_cci_read_en + 2 + 2 + + + sd_dbg_pwd_trig + 1 + 1 + + + sd_dbg_pwd_busy + 0 + 0 + + + + + sd_dbg_reserved + sd_dbg_reserved. + 0x1C + + + sd_dbg_reserved + 0 + 31 + + + + + + + sec_eng + sec_eng. + 0x40004000 + sec_eng + 32 + read-write + + 0 + 0x1000 + registers + + + + se_sha_0_ctrl + se_sha_0_ctrl. + 0x0 + + + se_sha_0_msg_len + 16 + 31 + + + se_sha_0_link_mode + 15 + 15 + + + se_sha_0_int_mask + 11 + 11 + + + se_sha_0_int_set_1t + 10 + 10 + + + se_sha_0_int_clr_1t + 9 + 9 + + + se_sha_0_int + 8 + 8 + + + se_sha_0_hash_sel + 6 + 6 + + + se_sha_0_en + 5 + 5 + + + se_sha_0_mode + 2 + 4 + + + se_sha_0_trig_1t + 1 + 1 + + + se_sha_0_busy + 0 + 0 + + + + + se_sha_0_msa + se_sha_0_msa. + 0x4 + + + se_sha_0_msa + 0 + 31 + + + + + se_sha_0_status + se_sha_0_status. + 0x8 + + + se_sha_0_status + 0 + 31 + + + + + se_sha_0_endian + se_sha_0_endian. + 0xC + + + se_sha_0_dout_endian + 0 + 0 + + + + + se_sha_0_hash_l_0 + se_sha_0_hash_l_0. + 0x10 + + + se_sha_0_hash_l_0 + 0 + 31 + + + + + se_sha_0_hash_l_1 + se_sha_0_hash_l_1. + 0x14 + + + se_sha_0_hash_l_1 + 0 + 31 + + + + + se_sha_0_hash_l_2 + se_sha_0_hash_l_2. + 0x18 + + + se_sha_0_hash_l_2 + 0 + 31 + + + + + se_sha_0_hash_l_3 + se_sha_0_hash_l_3. + 0x1C + + + se_sha_0_hash_l_3 + 0 + 31 + + + + + se_sha_0_hash_l_4 + se_sha_0_hash_l_4. + 0x20 + + + se_sha_0_hash_l_4 + 0 + 31 + + + + + se_sha_0_hash_l_5 + se_sha_0_hash_l_5. + 0x24 + + + se_sha_0_hash_l_5 + 0 + 31 + + + + + se_sha_0_hash_l_6 + se_sha_0_hash_l_6. + 0x28 + + + se_sha_0_hash_l_6 + 0 + 31 + + + + + se_sha_0_hash_l_7 + se_sha_0_hash_l_7. + 0x2C + + + se_sha_0_hash_l_7 + 0 + 31 + + + + + se_sha_0_hash_h_0 + se_sha_0_hash_h_0. + 0x30 + + + se_sha_0_hash_h_0 + 0 + 31 + + + + + se_sha_0_hash_h_1 + se_sha_0_hash_h_1. + 0x34 + + + se_sha_0_hash_h_1 + 0 + 31 + + + + + se_sha_0_hash_h_2 + se_sha_0_hash_h_2. + 0x38 + + + se_sha_0_hash_h_2 + 0 + 31 + + + + + se_sha_0_hash_h_3 + se_sha_0_hash_h_3. + 0x3C + + + se_sha_0_hash_h_3 + 0 + 31 + + + + + se_sha_0_hash_h_4 + se_sha_0_hash_h_4. + 0x40 + + + se_sha_0_hash_h_4 + 0 + 31 + + + + + se_sha_0_hash_h_5 + se_sha_0_hash_h_5. + 0x44 + + + se_sha_0_hash_h_5 + 0 + 31 + + + + + se_sha_0_hash_h_6 + se_sha_0_hash_h_6. + 0x48 + + + se_sha_0_hash_h_6 + 0 + 31 + + + + + se_sha_0_hash_h_7 + se_sha_0_hash_h_7. + 0x4C + + + se_sha_0_hash_h_7 + 0 + 31 + + + + + se_sha_0_link + se_sha_0_link. + 0x50 + + + se_sha_0_lca + 0 + 31 + + + + + se_sha_0_ctrl_prot + se_sha_0_ctrl_prot. + 0xFC + + + se_sha_id1_en + 2 + 2 + + + se_sha_id0_en + 1 + 1 + + + se_sha_prot_en + 0 + 0 + + + + + se_aes_0_ctrl + se_aes_0_ctrl. + 0x100 + + + se_aes_0_msg_len + 16 + 31 + + + se_aes_0_link_mode + 15 + 15 + + + se_aes_0_iv_sel + 14 + 14 + + + se_aes_0_block_mode + 12 + 13 + + + se_aes_0_int_mask + 11 + 11 + + + se_aes_0_int_set_1t + 10 + 10 + + + se_aes_0_int_clr_1t + 9 + 9 + + + se_aes_0_int + 8 + 8 + + + se_aes_0_hw_key_en + 7 + 7 + + + se_aes_0_dec_key_sel + 6 + 6 + + + se_aes_0_dec_en + 5 + 5 + + + se_aes_0_mode + 3 + 4 + + + se_aes_0_en + 2 + 2 + + + se_aes_0_trig_1t + 1 + 1 + + + se_aes_0_busy + 0 + 0 + + + + + se_aes_0_msa + se_aes_0_msa. + 0x104 + + + se_aes_0_msa + 0 + 31 + + + + + se_aes_0_mda + se_aes_0_mda. + 0x108 + + + se_aes_0_mda + 0 + 31 + + + + + se_aes_0_status + se_aes_0_status. + 0x10C + + + se_aes_0_status + 0 + 31 + + + + + se_aes_0_iv_0 + se_aes_0_iv_0. + 0x110 + + + se_aes_0_iv_0 + 0 + 31 + + + + + se_aes_0_iv_1 + se_aes_0_iv_1. + 0x114 + + + se_aes_0_iv_1 + 0 + 31 + + + + + se_aes_0_iv_2 + se_aes_0_iv_2. + 0x118 + + + se_aes_0_iv_2 + 0 + 31 + + + + + se_aes_0_iv_3 + se_aes_0_iv_3. + 0x11C + + + se_aes_0_iv_3 + 0 + 31 + + + + + se_aes_0_key_0 + se_aes_0_key_0. + 0x120 + + + se_aes_0_key_0 + 0 + 31 + + + + + se_aes_0_key_1 + se_aes_0_key_1. + 0x124 + + + se_aes_0_key_1 + 0 + 31 + + + + + se_aes_0_key_2 + se_aes_0_key_2. + 0x128 + + + se_aes_0_key_2 + 0 + 31 + + + + + se_aes_0_key_3 + se_aes_0_key_3. + 0x12C + + + se_aes_0_key_3 + 0 + 31 + + + + + se_aes_0_key_4 + se_aes_0_key_4. + 0x130 + + + se_aes_0_key_4 + 0 + 31 + + + + + se_aes_0_key_5 + se_aes_0_key_5. + 0x134 + + + se_aes_0_key_5 + 0 + 31 + + + + + se_aes_0_key_6 + se_aes_0_key_6. + 0x138 + + + se_aes_0_key_6 + 0 + 31 + + + + + se_aes_0_key_7 + se_aes_0_key_7. + 0x13C + + + se_aes_0_key_7 + 0 + 31 + + + + + se_aes_0_key_sel_0 + se_aes_0_key_sel_0. + 0x140 + + + se_aes_0_key_sel_0 + 0 + 1 + + + + + se_aes_0_key_sel_1 + se_aes_0_key_sel_1. + 0x144 + + + se_aes_0_key_sel_1 + 0 + 1 + + + + + se_aes_0_endian + se_aes_0_endian. + 0x148 + + + se_aes_0_ctr_len + 30 + 31 + + + se_aes_0_iv_endian + 3 + 3 + + + se_aes_0_key_endian + 2 + 2 + + + se_aes_0_din_endian + 1 + 1 + + + se_aes_0_dout_endian + 0 + 0 + + + + + se_aes_0_sboot + se_aes_0_sboot. + 0x14C + + + se_aes_0_sboot_key_sel + 0 + 0 + + + + + se_aes_0_link + se_aes_0_link. + 0x150 + + + se_aes_0_lca + 0 + 31 + + + + + se_aes_0_ctrl_prot + se_aes_0_ctrl_prot. + 0x1FC + + + se_aes_id1_en + 2 + 2 + + + se_aes_id0_en + 1 + 1 + + + se_aes_prot_en + 0 + 0 + + + + + se_trng_0_ctrl_0 + se_trng_0_ctrl_0. + 0x200 + + + se_trng_0_manual_en + 15 + 15 + + + se_trng_0_manual_reseed + 14 + 14 + + + se_trng_0_manual_fun_sel + 13 + 13 + + + se_trng_0_int_mask + 11 + 11 + + + se_trng_0_int_set_1t + 10 + 10 + + + se_trng_0_int_clr_1t + 9 + 9 + + + se_trng_0_int + 8 + 8 + + + se_trng_0_ht_error + 4 + 4 + + + se_trng_0_dout_clr_1t + 3 + 3 + + + se_trng_0_en + 2 + 2 + + + se_trng_0_trig_1t + 1 + 1 + + + se_trng_0_busy + 0 + 0 + + + + + se_trng_0_status + se_trng_0_status. + 0x204 + + + se_trng_0_status + 0 + 31 + + + + + se_trng_0_dout_0 + se_trng_0_dout_0. + 0x208 + + + se_trng_0_dout_0 + 0 + 31 + + + + + se_trng_0_dout_1 + se_trng_0_dout_1. + 0x20C + + + se_trng_0_dout_1 + 0 + 31 + + + + + se_trng_0_dout_2 + se_trng_0_dout_2. + 0x210 + + + se_trng_0_dout_2 + 0 + 31 + + + + + se_trng_0_dout_3 + se_trng_0_dout_3. + 0x214 + + + se_trng_0_dout_3 + 0 + 31 + + + + + se_trng_0_dout_4 + se_trng_0_dout_4. + 0x218 + + + se_trng_0_dout_4 + 0 + 31 + + + + + se_trng_0_dout_5 + se_trng_0_dout_5. + 0x21C + + + se_trng_0_dout_5 + 0 + 31 + + + + + se_trng_0_dout_6 + se_trng_0_dout_6. + 0x220 + + + se_trng_0_dout_6 + 0 + 31 + + + + + se_trng_0_dout_7 + se_trng_0_dout_7. + 0x224 + + + se_trng_0_dout_7 + 0 + 31 + + + + + se_trng_0_test + se_trng_0_test. + 0x228 + + + se_trng_0_ht_alarm_n + 4 + 11 + + + se_trng_0_ht_dis + 3 + 3 + + + se_trng_0_cp_bypass + 2 + 2 + + + se_trng_0_cp_test_en + 1 + 1 + + + se_trng_0_test_en + 0 + 0 + + + + + se_trng_0_ctrl_1 + se_trng_0_ctrl_1. + 0x22C + + + se_trng_0_reseed_n_lsb + 0 + 31 + + + + + se_trng_0_ctrl_2 + se_trng_0_ctrl_2. + 0x230 + + + se_trng_0_reseed_n_msb + 0 + 15 + + + + + se_trng_0_ctrl_3 + se_trng_0_ctrl_3. + 0x234 + + + se_trng_0_rosc_en + 31 + 31 + + + se_trng_0_ht_od_en + 26 + 26 + + + se_trng_0_ht_apt_c + 16 + 25 + + + se_trng_0_ht_rct_c + 8 + 15 + + + se_trng_0_cp_ratio + 0 + 7 + + + + + se_trng_0_test_out_0 + se_trng_0_test_out_0. + 0x240 + + + se_trng_0_test_out_0 + 0 + 31 + + + + + se_trng_0_test_out_1 + se_trng_0_test_out_1. + 0x244 + + + se_trng_0_test_out_1 + 0 + 31 + + + + + se_trng_0_test_out_2 + se_trng_0_test_out_2. + 0x248 + + + se_trng_0_test_out_2 + 0 + 31 + + + + + se_trng_0_test_out_3 + se_trng_0_test_out_3. + 0x24C + + + se_trng_0_test_out_3 + 0 + 31 + + + + + se_trng_0_ctrl_prot + se_trng_0_ctrl_prot. + 0x2FC + + + se_trng_id1_en + 2 + 2 + + + se_trng_id0_en + 1 + 1 + + + se_trng_prot_en + 0 + 0 + + + + + se_pka_0_ctrl_0 + se_pka_0_ctrl_0. + 0x300 + + + se_pka_0_status + 16 + 31 + + + se_pka_0_status_clr_1t + 15 + 15 + + + se_pka_0_ram_clr_md + 13 + 13 + + + se_pka_0_endian + 12 + 12 + + + se_pka_0_int_mask + 11 + 11 + + + se_pka_0_int_set + 10 + 10 + + + se_pka_0_int_clr_1t + 9 + 9 + + + se_pka_0_int + 8 + 8 + + + se_pka_0_prot_md + 4 + 7 + + + se_pka_0_en + 3 + 3 + + + se_pka_0_busy + 2 + 2 + + + se_pka_0_done_clr_1t + 1 + 1 + + + se_pka_0_done + 0 + 0 + + + + + se_pka_0_seed + se_pka_0_seed. + 0x30C + + + se_pka_0_seed + 0 + 31 + + + + + se_pka_0_ctrl_1 + se_pka_0_ctrl_1. + 0x310 + + + se_pka_0_hbypass + 3 + 3 + + + se_pka_0_hburst + 0 + 2 + + + + + se_pka_0_rw + se_pka_0_rw. + 0x340 + + + + se_pka_0_rw_burst + se_pka_0_rw_burst. + 0x360 + + + + se_pka_0_ctrl_prot + se_pka_0_ctrl_prot. + 0x3FC + + + se_pka_id1_en + 2 + 2 + + + se_pka_id0_en + 1 + 1 + + + se_pka_prot_en + 0 + 0 + + + + + se_cdet_0_ctrl_0 + se_cdet_0_ctrl_0. + 0x400 + + + se_cdet_0_g_loop_min + 24 + 31 + + + se_cdet_0_g_loop_max + 16 + 23 + + + se_cdet_0_status + 2 + 15 + + + se_cdet_0_error + 1 + 1 + + + se_cdet_0_en + 0 + 0 + + + + + se_cdet_0_ctrl_1 + se_cdet_0_ctrl_1. + 0x404 + + + se_cdet_0_g_slp_n + 16 + 23 + + + se_cdet_0_t_dly_n + 8 + 15 + + + se_cdet_0_t_loop_n + 0 + 7 + + + + + se_cdet_0_ctrl_prot + se_cdet_0_ctrl_prot. + 0x4FC + + + se_cdet_id1_en + 2 + 2 + + + se_cdet_id0_en + 1 + 1 + + + se_cdet_prot_en + 0 + 0 + + + + + se_gmac_0_ctrl_0 + se_gmac_0_ctrl_0. + 0x500 + + + se_gmac_0_x_endian + 14 + 14 + + + se_gmac_0_h_endian + 13 + 13 + + + se_gmac_0_t_endian + 12 + 12 + + + se_gmac_0_int_mask + 11 + 11 + + + se_gmac_0_int_set_1t + 10 + 10 + + + se_gmac_0_int_clr_1t + 9 + 9 + + + se_gmac_0_int + 8 + 8 + + + se_gmac_0_en + 2 + 2 + + + se_gmac_0_trig_1t + 1 + 1 + + + se_gmac_0_busy + 0 + 0 + + + + + se_gmac_0_lca + se_gmac_0_lca. + 0x504 + + + se_gmac_0_lca + 0 + 31 + + + + + se_gmac_0_status + se_gmac_0_status. + 0x508 + + + se_gmac_0_status + 0 + 31 + + + + + se_gmac_0_ctrl_prot + se_gmac_0_ctrl_prot. + 0x5FC + + + se_gmac_id1_en + 2 + 2 + + + se_gmac_id0_en + 1 + 1 + + + se_gmac_prot_en + 0 + 0 + + + + + se_ctrl_prot_rd + se_ctrl_prot_rd. + 0xF00 + + + se_dbg_dis + 31 + 31 + + + se_gmac_id1_en_rd + 22 + 22 + + + se_gmac_id0_en_rd + 21 + 21 + + + se_gmac_prot_en_rd + 20 + 20 + + + se_cdet_id1_en_rd + 18 + 18 + + + se_cdet_id0_en_rd + 17 + 17 + + + se_cdet_prot_en_rd + 16 + 16 + + + se_pka_id1_en_rd + 14 + 14 + + + se_pka_id0_en_rd + 13 + 13 + + + se_pka_prot_en_rd + 12 + 12 + + + se_trng_id1_en_rd + 10 + 10 + + + se_trng_id0_en_rd + 9 + 9 + + + se_trng_prot_en_rd + 8 + 8 + + + se_aes_id1_en_rd + 6 + 6 + + + se_aes_id0_en_rd + 5 + 5 + + + se_aes_prot_en_rd + 4 + 4 + + + se_sha_id1_en_rd + 2 + 2 + + + se_sha_id0_en_rd + 1 + 1 + + + se_sha_prot_en_rd + 0 + 0 + + + + + se_ctrl_reserved_0 + se_ctrl_reserved_0. + 0xF04 + + + se_ctrl_reserved_0 + 0 + 31 + + + + + se_ctrl_reserved_1 + se_ctrl_reserved_1. + 0xF08 + + + se_ctrl_reserved_1 + 0 + 31 + + + + + se_ctrl_reserved_2 + se_ctrl_reserved_2. + 0xF0C + + + se_ctrl_reserved_2 + 0 + 31 + + + + + + + tzc_sec + tzc_sec. + 0x40005000 + tzc_sec + 32 + read-write + + 0 + 0x1000 + registers + + + + tzc_rom_ctrl + tzc_rom_ctrl. + 0x40 + + + tzc_sboot_done + 28 + 31 + + + tzc_rom1_r1_lock + 27 + 27 + + + tzc_rom1_r0_lock + 26 + 26 + + + tzc_rom0_r1_lock + 25 + 25 + + + tzc_rom0_r0_lock + 24 + 24 + + + tzc_rom1_r1_en + 19 + 19 + + + tzc_rom1_r0_en + 18 + 18 + + + tzc_rom0_r1_en + 17 + 17 + + + tzc_rom0_r0_en + 16 + 16 + + + tzc_rom1_r1_id1_en + 11 + 11 + + + tzc_rom1_r0_id1_en + 10 + 10 + + + tzc_rom0_r1_id1_en + 9 + 9 + + + tzc_rom0_r0_id1_en + 8 + 8 + + + tzc_rom1_r1_id0_en + 3 + 3 + + + tzc_rom1_r0_id0_en + 2 + 2 + + + tzc_rom0_r1_id0_en + 1 + 1 + + + tzc_rom0_r0_id0_en + 0 + 0 + + + + + tzc_rom0_r0 + tzc_rom0_r0. + 0x44 + + + tzc_rom0_r0_start + 16 + 31 + + + tzc_rom0_r0_end + 0 + 15 + + + + + tzc_rom0_r1 + tzc_rom0_r1. + 0x48 + + + tzc_rom0_r1_start + 16 + 31 + + + tzc_rom0_r1_end + 0 + 15 + + + + + tzc_rom1_r0 + tzc_rom1_r0. + 0x4C + + + tzc_rom1_r0_start + 16 + 31 + + + tzc_rom1_r0_end + 0 + 15 + + + + + tzc_rom1_r1 + tzc_rom1_r1. + 0x50 + + + tzc_rom1_r1_start + 16 + 31 + + + tzc_rom1_r1_end + 0 + 15 + + + + + + + tzc_nsec + tzc_nsec. + 0x40006000 + tzc_nsec + 32 + read-write + + 0 + 0x1000 + registers + + + + tzc_rom_ctrl + tzc_rom_ctrl. + 0x40 + + + tzc_sboot_done + 28 + 31 + + + tzc_rom1_r1_lock + 27 + 27 + + + tzc_rom1_r0_lock + 26 + 26 + + + tzc_rom0_r1_lock + 25 + 25 + + + tzc_rom0_r0_lock + 24 + 24 + + + tzc_rom1_r1_en + 19 + 19 + + + tzc_rom1_r0_en + 18 + 18 + + + tzc_rom0_r1_en + 17 + 17 + + + tzc_rom0_r0_en + 16 + 16 + + + tzc_rom1_r1_id1_en + 11 + 11 + + + tzc_rom1_r0_id1_en + 10 + 10 + + + tzc_rom0_r1_id1_en + 9 + 9 + + + tzc_rom0_r0_id1_en + 8 + 8 + + + tzc_rom1_r1_id0_en + 3 + 3 + + + tzc_rom1_r0_id0_en + 2 + 2 + + + tzc_rom0_r1_id0_en + 1 + 1 + + + tzc_rom0_r0_id0_en + 0 + 0 + + + + + tzc_rom0_r0 + tzc_rom0_r0. + 0x44 + + + tzc_rom0_r0_start + 16 + 31 + + + tzc_rom0_r0_end + 0 + 15 + + + + + tzc_rom0_r1 + tzc_rom0_r1. + 0x48 + + + tzc_rom0_r1_start + 16 + 31 + + + tzc_rom0_r1_end + 0 + 15 + + + + + tzc_rom1_r0 + tzc_rom1_r0. + 0x4C + + + tzc_rom1_r0_start + 16 + 31 + + + tzc_rom1_r0_end + 0 + 15 + + + + + tzc_rom1_r1 + tzc_rom1_r1. + 0x50 + + + tzc_rom1_r1_start + 16 + 31 + + + tzc_rom1_r1_end + 0 + 15 + + + + + + + ef_data_0 + ef_data_0. + 0x40007000 + ef_data_0 + 32 + read-write + + 0 + 0x1000 + registers + + + + ef_cfg_0 + ef_cfg_0. + 0x0 + + + ef_dbg_mode + 28 + 31 + + + ef_dbg_jtag_0_dis + 26 + 27 + + + ef_dbg_jtag_1_dis + 24 + 25 + + + ef_efuse_dbg_dis + 23 + 23 + + + ef_se_dbg_dis + 22 + 22 + + + ef_cpu_rst_dbg_dis + 21 + 21 + + + ef_cpu1_dis + 20 + 20 + + + ef_sf_dis + 19 + 19 + + + ef_cam_dis + 18 + 18 + + + ef_0_key_enc_en + 17 + 17 + + + ef_wifi_dis + 16 + 16 + + + ef_ble_dis + 15 + 15 + + + ef_sdu_dis + 14 + 14 + + + ef_sf_key_0_sel + 12 + 13 + + + ef_boot_sel + 8 + 11 + + + ef_cpu0_enc_en + 7 + 7 + + + ef_cpu1_enc_en + 6 + 6 + + + ef_sboot_en + 4 + 5 + + + ef_sboot_sign_mode + 2 + 3 + + + ef_sf_aes_mode + 0 + 1 + + + + + ef_dbg_pwd_low + ef_dbg_pwd_low. + 0x4 + + + ef_dbg_pwd_low + 0 + 31 + + + + + ef_dbg_pwd_high + ef_dbg_pwd_high. + 0x8 + + + ef_dbg_pwd_high + 0 + 31 + + + + + ef_ana_trim_0 + ef_ana_trim_0. + 0xC + + + ef_ana_trim_0 + 0 + 31 + + + + + ef_sw_usage_0 + ef_sw_usage_0. + 0x10 + + + ef_sw_usage_0 + 0 + 31 + + + + + ef_wifi_mac_low + ef_wifi_mac_low. + 0x14 + + + ef_wifi_mac_low + 0 + 31 + + + + + ef_wifi_mac_high + ef_wifi_mac_high. + 0x18 + + + ef_wifi_mac_high + 0 + 31 + + + + + ef_key_slot_0_w0 + ef_key_slot_0_w0. + 0x1C + + + ef_key_slot_0_w0 + 0 + 31 + + + + + ef_key_slot_0_w1 + ef_key_slot_0_w1. + 0x20 + + + ef_key_slot_0_w1 + 0 + 31 + + + + + ef_key_slot_0_w2 + ef_key_slot_0_w2. + 0x24 + + + ef_key_slot_0_w2 + 0 + 31 + + + + + ef_key_slot_0_w3 + ef_key_slot_0_w3. + 0x28 + + + ef_key_slot_0_w3 + 0 + 31 + + + + + ef_key_slot_1_w0 + ef_key_slot_1_w0. + 0x2C + + + ef_key_slot_1_w0 + 0 + 31 + + + + + ef_key_slot_1_w1 + ef_key_slot_1_w1. + 0x30 + + + ef_key_slot_1_w1 + 0 + 31 + + + + + ef_key_slot_1_w2 + ef_key_slot_1_w2. + 0x34 + + + ef_key_slot_1_w2 + 0 + 31 + + + + + ef_key_slot_1_w3 + ef_key_slot_1_w3. + 0x38 + + + ef_key_slot_1_w3 + 0 + 31 + + + + + ef_key_slot_2_w0 + ef_key_slot_2_w0. + 0x3C + + + ef_key_slot_2_w0 + 0 + 31 + + + + + ef_key_slot_2_w1 + ef_key_slot_2_w1. + 0x40 + + + ef_key_slot_2_w1 + 0 + 31 + + + + + ef_key_slot_2_w2 + ef_key_slot_2_w2. + 0x44 + + + ef_key_slot_2_w2 + 0 + 31 + + + + + ef_key_slot_2_w3 + ef_key_slot_2_w3. + 0x48 + + + ef_key_slot_2_w3 + 0 + 31 + + + + + ef_key_slot_3_w0 + ef_key_slot_3_w0. + 0x4C + + + ef_key_slot_3_w0 + 0 + 31 + + + + + ef_key_slot_3_w1 + ef_key_slot_3_w1. + 0x50 + + + ef_key_slot_3_w1 + 0 + 31 + + + + + ef_key_slot_3_w2 + ef_key_slot_3_w2. + 0x54 + + + ef_key_slot_3_w2 + 0 + 31 + + + + + ef_key_slot_3_w3 + ef_key_slot_3_w3. + 0x58 + + + ef_key_slot_3_w3 + 0 + 31 + + + + + ef_key_slot_4_w0 + ef_key_slot_4_w0. + 0x5C + + + ef_key_slot_4_w0 + 0 + 31 + + + + + ef_key_slot_4_w1 + ef_key_slot_4_w1. + 0x60 + + + ef_key_slot_4_w1 + 0 + 31 + + + + + ef_key_slot_4_w2 + ef_key_slot_4_w2. + 0x64 + + + ef_key_slot_4_w2 + 0 + 31 + + + + + ef_key_slot_4_w3 + ef_key_slot_4_w3. + 0x68 + + + ef_key_slot_4_w3 + 0 + 31 + + + + + ef_key_slot_5_w0 + ef_key_slot_5_w0. + 0x6C + + + ef_key_slot_5_w0 + 0 + 31 + + + + + ef_key_slot_5_w1 + ef_key_slot_5_w1. + 0x70 + + + ef_key_slot_5_w1 + 0 + 31 + + + + + ef_key_slot_5_w2 + ef_key_slot_5_w2. + 0x74 + + + ef_key_slot_5_w2 + 0 + 31 + + + + + ef_key_slot_5_w3 + ef_key_slot_5_w3. + 0x78 + + + ef_key_slot_5_w3 + 0 + 31 + + + + + ef_data_0_lock + ef_data_0_lock. + 0x7C + + + rd_lock_key_slot_5 + 31 + 31 + + + rd_lock_key_slot_4 + 30 + 30 + + + rd_lock_key_slot_3 + 29 + 29 + + + rd_lock_key_slot_2 + 28 + 28 + + + rd_lock_key_slot_1 + 27 + 27 + + + rd_lock_key_slot_0 + 26 + 26 + + + rd_lock_dbg_pwd + 25 + 25 + + + wr_lock_key_slot_5_h + 24 + 24 + + + wr_lock_key_slot_4_h + 23 + 23 + + + wr_lock_key_slot_3 + 22 + 22 + + + wr_lock_key_slot_2 + 21 + 21 + + + wr_lock_key_slot_1 + 20 + 20 + + + wr_lock_key_slot_0 + 19 + 19 + + + wr_lock_wifi_mac + 18 + 18 + + + wr_lock_sw_usage_0 + 17 + 17 + + + wr_lock_dbg_pwd + 16 + 16 + + + wr_lock_boot_mode + 15 + 15 + + + wr_lock_key_slot_5_l + 14 + 14 + + + wr_lock_key_slot_4_l + 13 + 13 + + + ef_ana_trim_1 + 0 + 12 + + + + + + + ef_data_1 + ef_data_1. + 0x40007000 + ef_data_1 + 32 + read-write + + 0 + 0x1000 + registers + + + + reg_key_slot_6_w0 + reg_key_slot_6_w0. + 0x80 + + + reg_key_slot_6_w0 + 0 + 31 + + + + + reg_key_slot_6_w1 + reg_key_slot_6_w1. + 0x84 + + + reg_key_slot_6_w1 + 0 + 31 + + + + + reg_key_slot_6_w2 + reg_key_slot_6_w2. + 0x88 + + + reg_key_slot_6_w2 + 0 + 31 + + + + + reg_key_slot_6_w3 + reg_key_slot_6_w3. + 0x8C + + + reg_key_slot_6_w3 + 0 + 31 + + + + + reg_key_slot_7_w0 + reg_key_slot_7_w0. + 0x90 + + + reg_key_slot_7_w0 + 0 + 31 + + + + + reg_key_slot_7_w1 + reg_key_slot_7_w1. + 0x94 + + + reg_key_slot_7_w1 + 0 + 31 + + + + + reg_key_slot_7_w2 + reg_key_slot_7_w2. + 0x98 + + + reg_key_slot_7_w2 + 0 + 31 + + + + + reg_key_slot_7_w3 + reg_key_slot_7_w3. + 0x9C + + + reg_key_slot_7_w3 + 0 + 31 + + + + + reg_key_slot_8_w0 + reg_key_slot_8_w0. + 0xA0 + + + reg_key_slot_8_w0 + 0 + 31 + + + + + reg_key_slot_8_w1 + reg_key_slot_8_w1. + 0xA4 + + + reg_key_slot_8_w1 + 0 + 31 + + + + + reg_key_slot_8_w2 + reg_key_slot_8_w2. + 0xA8 + + + reg_key_slot_8_w2 + 0 + 31 + + + + + reg_key_slot_8_w3 + reg_key_slot_8_w3. + 0xAC + + + reg_key_slot_8_w3 + 0 + 31 + + + + + reg_key_slot_9_w0 + reg_key_slot_9_w0. + 0xB0 + + + reg_key_slot_9_w0 + 0 + 31 + + + + + reg_key_slot_9_w1 + reg_key_slot_9_w1. + 0xB4 + + + reg_key_slot_9_w1 + 0 + 31 + + + + + reg_key_slot_9_w2 + reg_key_slot_9_w2. + 0xB8 + + + reg_key_slot_9_w2 + 0 + 31 + + + + + reg_key_slot_9_w3 + reg_key_slot_9_w3. + 0xBC + + + reg_key_slot_9_w3 + 0 + 31 + + + + + reg_key_slot_10_w0 + reg_key_slot_10_w0. + 0xC0 + + + + reg_key_slot_10_w1 + reg_key_slot_10_w1. + 0xC4 + + + + reg_key_slot_10_w2 + reg_key_slot_10_w2. + 0xC8 + + + + reg_key_slot_10_w3 + reg_key_slot_10_w3. + 0xCC + + + + reg_key_slot_11_w0 + reg_key_slot_11_w0. + 0xD0 + + + + reg_key_slot_11_w1 + reg_key_slot_11_w1. + 0xD4 + + + + reg_key_slot_11_w2 + reg_key_slot_11_w2. + 0xD8 + + + + reg_key_slot_11_w3 + reg_key_slot_11_w3. + 0xDC + + + + reg_data_1_lock + reg_data_1_lock. + 0xE0 + + + rd_lock_key_slot_9 + 29 + 29 + + + rd_lock_key_slot_8 + 28 + 28 + + + rd_lock_key_slot_7 + 27 + 27 + + + rd_lock_key_slot_6 + 26 + 26 + + + RESERVED_25_16 + 16 + 25 + + + wr_lock_key_slot_9 + 13 + 13 + + + wr_lock_key_slot_8 + 12 + 12 + + + wr_lock_key_slot_7 + 11 + 11 + + + wr_lock_key_slot_6 + 10 + 10 + + + RESERVED_9_0 + 0 + 9 + + + + + + + ef_ctrl + ef_ctrl. + 0x40007000 + ef_ctrl + 32 + read-write + + 0 + 0x1000 + registers + + + + ef_if_ctrl_0 + ef_if_ctrl_0. + 0x800 + + + ef_if_prot_code_cyc + 24 + 31 + + + ef_if_0_int_set + 22 + 22 + + + ef_if_0_int_clr + 21 + 21 + + + ef_if_0_int + 20 + 20 + + + ef_if_cyc_modify_lock + 19 + 19 + + + ef_if_auto_rd_en + 18 + 18 + + + ef_clk_sahb_data_gate + 17 + 17 + + + ef_if_por_dig + 16 + 16 + + + ef_if_prot_code_ctrl + 8 + 15 + + + ef_clk_sahb_data_sel + 7 + 7 + + + ef_if_0_cyc_modify + 6 + 6 + + + ef_if_0_manual_en + 5 + 5 + + + ef_if_0_trig + 4 + 4 + + + ef_if_0_rw + 3 + 3 + + + ef_if_0_busy + 2 + 2 + + + ef_if_0_autoload_done + 1 + 1 + + + ef_if_0_autoload_p1_done + 0 + 0 + + + + + ef_if_cyc_0 + ef_if_cyc_0. + 0x804 + + + ef_if_cyc_pd_cs_s + 24 + 31 + + + ef_if_cyc_cs + 18 + 23 + + + ef_if_cyc_rd_adr + 12 + 17 + + + ef_if_cyc_rd_dat + 6 + 11 + + + ef_if_cyc_rd_dmy + 0 + 5 + + + + + ef_if_cyc_1 + ef_if_cyc_1. + 0x808 + + + ef_if_cyc_pd_cs_h + 26 + 31 + + + ef_if_cyc_ps_cs + 20 + 25 + + + ef_if_cyc_wr_adr + 14 + 19 + + + ef_if_cyc_pp + 6 + 13 + + + ef_if_cyc_pi + 0 + 5 + + + + + ef_if_0_manual + ef_if_0_manual. + 0x80C + + + ef_if_prot_code_manual + 24 + 31 + + + ef_if_0_q + 16 + 23 + + + ef_if_csb + 15 + 15 + + + ef_if_load + 14 + 14 + + + ef_if_pgenb + 13 + 13 + + + ef_if_strobe + 12 + 12 + + + ef_if_ps + 11 + 11 + + + ef_if_pd + 10 + 10 + + + ef_if_a + 0 + 9 + + + + + ef_if_0_status + ef_if_0_status. + 0x810 + + + ef_if_0_status + 0 + 31 + + + + + ef_if_cfg_0 + ef_if_cfg_0. + 0x814 + + + ef_if_dbg_mode + 28 + 31 + + + ef_if_dbg_jtag_0_dis + 26 + 27 + + + ef_if_dbg_jtag_1_dis + 24 + 25 + + + ef_if_efuse_dbg_dis + 23 + 23 + + + ef_if_se_dbg_dis + 22 + 22 + + + ef_if_cpu_rst_dbg_dis + 21 + 21 + + + ef_if_cpu1_dis + 20 + 20 + + + ef_if_sf_dis + 19 + 19 + + + ef_if_cam_dis + 18 + 18 + + + ef_if_0_key_enc_en + 17 + 17 + + + ef_if_wifi_dis + 16 + 16 + + + ef_if_ble_dis + 15 + 15 + + + ef_if_sdu_dis + 14 + 14 + + + ef_if_sf_key_0_sel + 12 + 13 + + + ef_if_boot_sel + 8 + 11 + + + ef_if_cpu0_enc_en + 7 + 7 + + + ef_if_cpu1_enc_en + 6 + 6 + + + ef_if_sboot_en + 4 + 5 + + + ef_if_sboot_sign_mode + 2 + 3 + + + ef_if_sf_aes_mode + 0 + 1 + + + + + ef_sw_cfg_0 + ef_sw_cfg_0. + 0x818 + + + ef_sw_dbg_mode + 28 + 31 + + + ef_sw_dbg_jtag_0_dis + 26 + 27 + + + ef_sw_dbg_jtag_1_dis + 24 + 25 + + + ef_sw_efuse_dbg_dis + 23 + 23 + + + ef_sw_se_dbg_dis + 22 + 22 + + + ef_sw_cpu_rst_dbg_dis + 21 + 21 + + + ef_sw_cpu1_dis + 20 + 20 + + + ef_sw_sf_dis + 19 + 19 + + + ef_sw_cam_dis + 18 + 18 + + + ef_sw_0_key_enc_en + 17 + 17 + + + ef_sw_wifi_dis + 16 + 16 + + + ef_sw_ble_dis + 15 + 15 + + + ef_sw_sdu_dis + 14 + 14 + + + ef_sw_sf_key_0_sel + 12 + 13 + + + ef_sw_cpu0_enc_en + 7 + 7 + + + ef_sw_cpu1_enc_en + 6 + 6 + + + ef_sw_sboot_en + 4 + 5 + + + ef_sw_sboot_sign_mode + 2 + 3 + + + ef_sw_sf_aes_mode + 0 + 1 + + + + + ef_reserved + ef_reserved. + 0x81C + + + ef_reserved + 0 + 31 + + + + + ef_if_ana_trim_0 + ef_if_ana_trim_0. + 0x820 + + + ef_if_ana_trim_0 + 0 + 31 + + + + + ef_if_sw_usage_0 + ef_if_sw_usage_0. + 0x824 + + + ef_if_sw_usage_0 + 0 + 31 + + + + + ef_crc_ctrl_0 + ef_crc_ctrl_0. + 0xA00 + + + ef_crc_slp_n + 16 + 31 + + + ef_crc_lock + 11 + 11 + + + ef_crc_int_set + 10 + 10 + + + ef_crc_int_clr + 9 + 9 + + + ef_crc_int + 8 + 8 + + + ef_crc_din_endian + 7 + 7 + + + ef_crc_dout_endian + 6 + 6 + + + ef_crc_dout_inv_en + 5 + 5 + + + ef_crc_error + 4 + 4 + + + ef_crc_mode + 3 + 3 + + + ef_crc_en + 2 + 2 + + + ef_crc_trig + 1 + 1 + + + ef_crc_busy + 0 + 0 + + + + + ef_crc_ctrl_1 + ef_crc_ctrl_1. + 0xA04 + + + ef_crc_data_0_en + 0 + 31 + + + + + ef_crc_ctrl_2 + ef_crc_ctrl_2. + 0xA08 + + + ef_crc_data_1_en + 0 + 31 + + + + + ef_crc_ctrl_3 + ef_crc_ctrl_3. + 0xA0C + + + ef_crc_iv + 0 + 31 + + + + + ef_crc_ctrl_4 + ef_crc_ctrl_4. + 0xA10 + + + ef_crc_golden + 0 + 31 + + + + + ef_crc_ctrl_5 + ef_crc_ctrl_5. + 0xA14 + + + ef_crc_dout + 0 + 31 + + + + + + + cci + cci. + 0x40008000 + cci + 32 + read-write + + 0 + 0x1000 + registers + + + + cci_cfg + cci_cfg. + 0x0 + + + reg_mcci_clk_inv + 9 + 9 + + + reg_scci_clk_inv + 8 + 8 + + + cfg_cci1_pre_read + 7 + 7 + + + reg_div_m_cci_sclk + 5 + 6 + + + reg_m_cci_sclk_en + 4 + 4 + + + cci_mas_hw_mode + 3 + 3 + + + cci_mas_sel_cci2 + 2 + 2 + + + cci_slv_sel_cci2 + 1 + 1 + + + cci_en + 0 + 0 + + + + + cci_addr + cci_addr. + 0x4 + + + apb_cci_addr + 0 + 31 + + + + + cci_wdata + cci_wdata. + 0x8 + + + apb_cci_wdata + 0 + 31 + + + + + cci_rdata + cci_rdata. + 0xC + + + apb_cci_rdata + 0 + 31 + + + + + cci_ctl + cci_ctl. + 0x10 + + + ahb_state + 2 + 3 + + + cci_read_flag + 1 + 1 + + + cci_write_flag + 0 + 0 + + + + + + + l1c + l1c. + 0x40009000 + l1c + 32 + read-write + + 0 + 0x1000 + registers + + + + l1c_config + l1c_config. + 0x0 + + + reserved_31_30 + 30 + 31 + + + l1c_flush_done + 29 + 29 + + + l1c_flush_en + 28 + 28 + + + wrap_dis + 26 + 26 + + + early_resp_dis + 25 + 25 + + + l1c_bmx_busy_option_dis + 24 + 24 + + + l1c_bmx_timeout_en + 20 + 23 + + + l1c_bmx_arb_mode + 16 + 17 + + + l1c_bmx_err_en + 15 + 15 + + + l1c_bypass + 14 + 14 + + + irom_2t_access + 12 + 12 + + + l1c_way_dis + 8 + 11 + + + l1c_wa_en + 6 + 6 + + + l1c_wb_en + 5 + 5 + + + l1c_wt_en + 4 + 4 + + + l1c_invalid_done + 3 + 3 + + + l1c_invalid_en + 2 + 2 + + + l1c_cnt_en + 1 + 1 + + + l1c_cacheable + 0 + 0 + + + + + hit_cnt_lsb + hit_cnt_lsb. + 0x4 + + + hit_cnt_lsb + 0 + 31 + + + + + hit_cnt_msb + hit_cnt_msb. + 0x8 + + + hit_cnt_msb + 0 + 31 + + + + + miss_cnt + miss_cnt. + 0xC + + + miss_cnt + 0 + 31 + + + + + l1c_misc + l1c_misc. + 0x10 + + + l1c_fsm + 28 + 30 + + + + + l1c_bmx_err_addr_en + l1c_bmx_err_addr_en. + 0x200 + + + l1c_hsel_option + 16 + 19 + + + l1c_bmx_err_tz + 5 + 5 + + + l1c_bmx_err_dec + 4 + 4 + + + l1c_bmx_err_addr_dis + 0 + 0 + + + + + l1c_bmx_err_addr + l1c_bmx_err_addr. + 0x204 + + + l1c_bmx_err_addr + 0 + 31 + + + + + irom1_misr_dataout_0 + irom1_misr_dataout_0. + 0x208 + + + irom1_misr_dataout_0 + 0 + 31 + + + + + irom1_misr_dataout_1 + irom1_misr_dataout_1. + 0x20C + + + irom1_misr_dataout_1 + 0 + 31 + + + + + cpu_clk_gate + cpu_clk_gate. + 0x210 + + + force_e21_clock_on_2 + 2 + 2 + + + force_e21_clock_on_1 + 1 + 1 + + + force_e21_clock_on_0 + 0 + 0 + + + + + + + uart + uart. + 0x4000A000 + uart + 32 + read-write + + 0 + 0x1000 + registers + + + + utx_config + utx_config. + 0x0 + + + cr_utx_len + 16 + 31 + + + cr_utx_bit_cnt_b + 13 + 15 + + + cr_utx_bit_cnt_p + 11 + 12 + + + cr_utx_bit_cnt_d + 8 + 10 + + + cr_utx_ir_inv + 7 + 7 + + + cr_utx_ir_en + 6 + 6 + + + cr_utx_prt_sel + 5 + 5 + + + cr_utx_prt_en + 4 + 4 + + + cr_utx_lin_en + 3 + 3 + + + cr_utx_frm_en + 2 + 2 + + + cr_utx_cts_en + 1 + 1 + + + cr_utx_en + 0 + 0 + + + + + urx_config + urx_config. + 0x4 + + + cr_urx_len + 16 + 31 + + + cr_urx_deg_cnt + 12 + 15 + + + cr_urx_deg_en + 11 + 11 + + + cr_urx_bit_cnt_d + 8 + 10 + + + cr_urx_ir_inv + 7 + 7 + + + cr_urx_ir_en + 6 + 6 + + + cr_urx_prt_sel + 5 + 5 + + + cr_urx_prt_en + 4 + 4 + + + cr_urx_lin_en + 3 + 3 + + + cr_urx_abr_en + 1 + 1 + + + cr_urx_en + 0 + 0 + + + + + uart_bit_prd + uart_bit_prd. + 0x8 + + + cr_urx_bit_prd + 16 + 31 + + + cr_utx_bit_prd + 0 + 15 + + + + + data_config + data_config. + 0xC + + + cr_uart_bit_inv + 0 + 0 + + + + + utx_ir_position + utx_ir_position. + 0x10 + + + cr_utx_ir_pos_p + 16 + 31 + + + cr_utx_ir_pos_s + 0 + 15 + + + + + urx_ir_position + urx_ir_position. + 0x14 + + + cr_urx_ir_pos_s + 0 + 15 + + + + + urx_rto_timer + urx_rto_timer. + 0x18 + + + cr_urx_rto_value + 0 + 7 + + + + + uart_sw_mode + uart_sw_mode. + 0x1C + + + cr_urx_rts_sw_val + 3 + 3 + + + cr_urx_rts_sw_mode + 2 + 2 + + + cr_utx_txd_sw_val + 1 + 1 + + + cr_utx_txd_sw_mode + 0 + 0 + + + + + uart_int_sts + UART interrupt status + 0x20 + + + urx_lse_int + 8 + 8 + + + urx_fer_int + 7 + 7 + + + utx_fer_int + 6 + 6 + + + urx_pce_int + 5 + 5 + + + urx_rto_int + 4 + 4 + + + urx_fifo_int + 3 + 3 + + + utx_fifo_int + 2 + 2 + + + urx_end_int + 1 + 1 + + + utx_end_int + 0 + 0 + + + + + uart_int_mask + UART interrupt mask + 0x24 + + + cr_urx_lse_mask + 8 + 8 + + + cr_urx_fer_mask + 7 + 7 + + + cr_utx_fer_mask + 6 + 6 + + + cr_urx_pce_mask + 5 + 5 + + + cr_urx_rto_mask + 4 + 4 + + + cr_urx_fifo_mask + 3 + 3 + + + cr_utx_fifo_mask + 2 + 2 + + + cr_urx_end_mask + 1 + 1 + + + cr_utx_end_mask + 0 + 0 + + + + + uart_int_clear + UART interrupt clear + 0x28 + + + cr_urx_lse_clr + 8 + 8 + + + rsvd_7 + 7 + 7 + + + rsvd_6 + 6 + 6 + + + cr_urx_pce_clr + 5 + 5 + + + cr_urx_rto_clr + 4 + 4 + + + rsvd_3 + 3 + 3 + + + rsvd_2 + 2 + 2 + + + cr_urx_end_clr + 1 + 1 + + + cr_utx_end_clr + 0 + 0 + + + + + uart_int_en + UART interrupt enable + 0x2C + + + cr_urx_lse_en + 8 + 8 + + + cr_urx_fer_en + 7 + 7 + + + cr_utx_fer_en + 6 + 6 + + + cr_urx_pce_en + 5 + 5 + + + cr_urx_rto_en + 4 + 4 + + + cr_urx_fifo_en + 3 + 3 + + + cr_utx_fifo_en + 2 + 2 + + + cr_urx_end_en + 1 + 1 + + + cr_utx_end_en + 0 + 0 + + + + + uart_status + uart_status. + 0x30 + + + sts_urx_bus_busy + 1 + 1 + + + sts_utx_bus_busy + 0 + 0 + + + + + sts_urx_abr_prd + sts_urx_abr_prd. + 0x34 + + + sts_urx_abr_prd_0x55 + 16 + 31 + + + sts_urx_abr_prd_start + 0 + 15 + + + + + uart_fifo_config_0 + uart_fifo_config_0. + 0x80 + + + rx_fifo_underflow + 7 + 7 + + + rx_fifo_overflow + 6 + 6 + + + tx_fifo_underflow + 5 + 5 + + + tx_fifo_overflow + 4 + 4 + + + rx_fifo_clr + 3 + 3 + + + tx_fifo_clr + 2 + 2 + + + uart_dma_rx_en + 1 + 1 + + + uart_dma_tx_en + 0 + 0 + + + + + uart_fifo_config_1 + uart_fifo_config_1. + 0x84 + + + rx_fifo_th + 24 + 30 + + + tx_fifo_th + 16 + 22 + + + rx_fifo_cnt + 8 + 15 + + + tx_fifo_cnt + 0 + 7 + + + + + uart_fifo_wdata + uart_fifo_wdata. + 0x88 + + + uart_fifo_wdata + 0 + 7 + + + + + uart_fifo_rdata + uart_fifo_rdata. + 0x8C + + + uart_fifo_rdata + 0 + 7 + + + + + + + spi + spi. + 0x4000A200 + spi + 32 + read-write + + 0 + 0x1000 + registers + + + + spi_config + spi_config. + 0x0 + + + cr_spi_deg_cnt + 12 + 15 + + + cr_spi_deg_en + 11 + 11 + + + cr_spi_m_cont_en + 9 + 9 + + + cr_spi_rxd_ignr_en + 8 + 8 + + + cr_spi_byte_inv + 7 + 7 + + + cr_spi_bit_inv + 6 + 6 + + + cr_spi_sclk_ph + 5 + 5 + + + cr_spi_sclk_pol + 4 + 4 + + + cr_spi_frame_size + 2 + 3 + + + cr_spi_s_en + 1 + 1 + + + cr_spi_m_en + 0 + 0 + + + + + spi_int_sts + spi_int_sts. + 0x4 + + + cr_spi_fer_en + 29 + 29 + + + cr_spi_txu_en + 28 + 28 + + + cr_spi_sto_en + 27 + 27 + + + cr_spi_rxf_en + 26 + 26 + + + cr_spi_txf_en + 25 + 25 + + + cr_spi_end_en + 24 + 24 + + + rsvd_21 + 21 + 21 + + + cr_spi_txu_clr + 20 + 20 + + + cr_spi_sto_clr + 19 + 19 + + + rsvd_18 + 18 + 18 + + + rsvd_17 + 17 + 17 + + + cr_spi_end_clr + 16 + 16 + + + cr_spi_fer_mask + 13 + 13 + + + cr_spi_txu_mask + 12 + 12 + + + cr_spi_sto_mask + 11 + 11 + + + cr_spi_rxf_mask + 10 + 10 + + + cr_spi_txf_mask + 9 + 9 + + + cr_spi_end_mask + 8 + 8 + + + spi_fer_int + 5 + 5 + + + spi_txu_int + 4 + 4 + + + spi_sto_int + 3 + 3 + + + spi_rxf_int + 2 + 2 + + + spi_txf_int + 1 + 1 + + + spi_end_int + 0 + 0 + + + + + spi_bus_busy + spi_bus_busy. + 0x8 + + + sts_spi_bus_busy + 0 + 0 + + + + + spi_prd_0 + spi_prd_0. + 0x10 + + + cr_spi_prd_d_ph_1 + 24 + 31 + + + cr_spi_prd_d_ph_0 + 16 + 23 + + + cr_spi_prd_p + 8 + 15 + + + cr_spi_prd_s + 0 + 7 + + + + + spi_prd_1 + spi_prd_1. + 0x14 + + + cr_spi_prd_i + 0 + 7 + + + + + spi_rxd_ignr + spi_rxd_ignr. + 0x18 + + + cr_spi_rxd_ignr_s + 16 + 20 + + + cr_spi_rxd_ignr_p + 0 + 4 + + + + + spi_sto_value + spi_sto_value. + 0x1C + + + cr_spi_sto_value + 0 + 11 + + + + + spi_fifo_config_0 + spi_fifo_config_0. + 0x80 + + + rx_fifo_underflow + 7 + 7 + + + rx_fifo_overflow + 6 + 6 + + + tx_fifo_underflow + 5 + 5 + + + tx_fifo_overflow + 4 + 4 + + + rx_fifo_clr + 3 + 3 + + + tx_fifo_clr + 2 + 2 + + + spi_dma_rx_en + 1 + 1 + + + spi_dma_tx_en + 0 + 0 + + + + + spi_fifo_config_1 + spi_fifo_config_1. + 0x84 + + + rx_fifo_th + 24 + 25 + + + tx_fifo_th + 16 + 17 + + + rx_fifo_cnt + 8 + 10 + + + tx_fifo_cnt + 0 + 2 + + + + + spi_fifo_wdata + spi_fifo_wdata. + 0x88 + + + spi_fifo_wdata + 0 + 31 + + + + + spi_fifo_rdata + spi_fifo_rdata. + 0x8C + + + spi_fifo_rdata + 0 + 31 + + + + + + + i2c + i2c. + 0x4000A300 + i2c + 32 + read-write + + 0 + 0x1000 + registers + + + + i2c_config + i2c_config. + 0x0 + + + cr_i2c_deg_cnt + 28 + 31 + + + cr_i2c_pkt_len + 16 + 23 + + + cr_i2c_slv_addr + 8 + 14 + + + cr_i2c_sub_addr_bc + 5 + 6 + + + cr_i2c_sub_addr_en + 4 + 4 + + + cr_i2c_scl_sync_en + 3 + 3 + + + cr_i2c_deg_en + 2 + 2 + + + cr_i2c_pkt_dir + 1 + 1 + + + cr_i2c_m_en + 0 + 0 + + + + + i2c_int_sts + i2c_int_sts. + 0x4 + + + cr_i2c_fer_en + 29 + 29 + + + cr_i2c_arb_en + 28 + 28 + + + cr_i2c_nak_en + 27 + 27 + + + cr_i2c_rxf_en + 26 + 26 + + + cr_i2c_txf_en + 25 + 25 + + + cr_i2c_end_en + 24 + 24 + + + rsvd_21 + 21 + 21 + + + cr_i2c_arb_clr + 20 + 20 + + + cr_i2c_nak_clr + 19 + 19 + + + rsvd_18 + 18 + 18 + + + rsvd_17 + 17 + 17 + + + cr_i2c_end_clr + 16 + 16 + + + cr_i2c_fer_mask + 13 + 13 + + + cr_i2c_arb_mask + 12 + 12 + + + cr_i2c_nak_mask + 11 + 11 + + + cr_i2c_rxf_mask + 10 + 10 + + + cr_i2c_txf_mask + 9 + 9 + + + cr_i2c_end_mask + 8 + 8 + + + i2c_fer_int + 5 + 5 + + + i2c_arb_int + 4 + 4 + + + i2c_nak_int + 3 + 3 + + + i2c_rxf_int + 2 + 2 + + + i2c_txf_int + 1 + 1 + + + i2c_end_int + 0 + 0 + + + + + i2c_sub_addr + i2c_sub_addr. + 0x8 + + + cr_i2c_sub_addr_b3 + 24 + 31 + + + cr_i2c_sub_addr_b2 + 16 + 23 + + + cr_i2c_sub_addr_b1 + 8 + 15 + + + cr_i2c_sub_addr_b0 + 0 + 7 + + + + + i2c_bus_busy + i2c_bus_busy. + 0xC + + + cr_i2c_bus_busy_clr + 1 + 1 + + + sts_i2c_bus_busy + 0 + 0 + + + + + i2c_prd_start + i2c_prd_start. + 0x10 + + + cr_i2c_prd_s_ph_3 + 24 + 31 + + + cr_i2c_prd_s_ph_2 + 16 + 23 + + + cr_i2c_prd_s_ph_1 + 8 + 15 + + + cr_i2c_prd_s_ph_0 + 0 + 7 + + + + + i2c_prd_stop + i2c_prd_stop. + 0x14 + + + cr_i2c_prd_p_ph_3 + 24 + 31 + + + cr_i2c_prd_p_ph_2 + 16 + 23 + + + cr_i2c_prd_p_ph_1 + 8 + 15 + + + cr_i2c_prd_p_ph_0 + 0 + 7 + + + + + i2c_prd_data + i2c_prd_data. + 0x18 + + + cr_i2c_prd_d_ph_3 + 24 + 31 + + + cr_i2c_prd_d_ph_2 + 16 + 23 + + + cr_i2c_prd_d_ph_1 + 8 + 15 + + + cr_i2c_prd_d_ph_0 + 0 + 7 + + + + + i2c_fifo_config_0 + i2c_fifo_config_0. + 0x80 + + + rx_fifo_underflow + 7 + 7 + + + rx_fifo_overflow + 6 + 6 + + + tx_fifo_underflow + 5 + 5 + + + tx_fifo_overflow + 4 + 4 + + + rx_fifo_clr + 3 + 3 + + + tx_fifo_clr + 2 + 2 + + + i2c_dma_rx_en + 1 + 1 + + + i2c_dma_tx_en + 0 + 0 + + + + + i2c_fifo_config_1 + i2c_fifo_config_1. + 0x84 + + + rx_fifo_th + 24 + 24 + + + tx_fifo_th + 16 + 16 + + + rx_fifo_cnt + 8 + 9 + + + tx_fifo_cnt + 0 + 1 + + + + + i2c_fifo_wdata + i2c_fifo_wdata. + 0x88 + + + i2c_fifo_wdata + 0 + 31 + + + + + i2c_fifo_rdata + i2c_fifo_rdata. + 0x8C + + + i2c_fifo_rdata + 0 + 31 + + + + + + + pwm + pwm. + 0x4000A400 + pwm + 32 + read-write + + 0 + 0x1000 + registers + + + + pwm_int_config + pwm_int_config. + 0x0 + + + pwm_int_clear + 8 + 13 + + + pwm_interrupt_sts + 0 + 5 + + + + + pwm0_clkdiv + pwm0_clkdiv. + 0x20 + + + pwm_clk_div + 0 + 15 + + + + + pwm0_thre1 + pwm0_thre1. + 0x24 + + + pwm_thre1 + 0 + 15 + + + + + pwm0_thre2 + pwm0_thre2. + 0x28 + + + pwm_thre2 + 0 + 15 + + + + + pwm0_period + pwm0_period. + 0x2C + + + pwm_period + 0 + 15 + + + + + pwm0_config + pwm0_config. + 0x30 + + + pwm_sts_top + 7 + 7 + + + pwm_stop_en + 6 + 6 + + + pwm_sw_mode + 5 + 5 + + + pwm_sw_force_val + 4 + 4 + + + pwm_stop_mode + 3 + 3 + + + pwm_out_inv + 2 + 2 + + + reg_clk_sel + 0 + 1 + + + + + pwm0_interrupt + pwm0_interrupt. + 0x34 + + + pwm_int_enable + 16 + 16 + + + pwm_int_period_cnt + 0 + 15 + + + + + pwm1_clkdiv + pwm1_clkdiv. + 0x40 + + + pwm_clk_div + 0 + 15 + + + + + pwm1_thre1 + pwm1_thre1. + 0x44 + + + pwm_thre1 + 0 + 15 + + + + + pwm1_thre2 + pwm1_thre2. + 0x48 + + + pwm_thre2 + 0 + 15 + + + + + pwm1_period + pwm1_period. + 0x4C + + + pwm_period + 0 + 15 + + + + + pwm1_config + pwm1_config. + 0x50 + + + pwm_sts_top + 7 + 7 + + + pwm_stop_en + 6 + 6 + + + pwm_sw_mode + 5 + 5 + + + pwm_sw_force_val + 4 + 4 + + + pwm_stop_mode + 3 + 3 + + + pwm_out_inv + 2 + 2 + + + reg_clk_sel + 0 + 1 + + + + + pwm1_interrupt + pwm1_interrupt. + 0x54 + + + pwm_int_enable + 16 + 16 + + + pwm_int_period_cnt + 0 + 15 + + + + + pwm2_clkdiv + pwm2_clkdiv. + 0x60 + + + pwm_clk_div + 0 + 15 + + + + + pwm2_thre1 + pwm2_thre1. + 0x64 + + + pwm_thre1 + 0 + 15 + + + + + pwm2_thre2 + pwm2_thre2. + 0x68 + + + pwm_thre2 + 0 + 15 + + + + + pwm2_period + pwm2_period. + 0x6C + + + pwm_period + 0 + 15 + + + + + pwm2_config + pwm2_config. + 0x70 + + + pwm_sts_top + 7 + 7 + + + pwm_stop_en + 6 + 6 + + + pwm_sw_mode + 5 + 5 + + + pwm_sw_force_val + 4 + 4 + + + pwm_stop_mode + 3 + 3 + + + pwm_out_inv + 2 + 2 + + + reg_clk_sel + 0 + 1 + + + + + pwm2_interrupt + pwm2_interrupt. + 0x74 + + + pwm_int_enable + 16 + 16 + + + pwm_int_period_cnt + 0 + 15 + + + + + pwm3_clkdiv + pwm3_clkdiv. + 0x80 + + + pwm_clk_div + 0 + 15 + + + + + pwm3_thre1 + pwm3_thre1. + 0x84 + + + pwm_thre1 + 0 + 15 + + + + + pwm3_thre2 + pwm3_thre2. + 0x88 + + + pwm_thre2 + 0 + 15 + + + + + pwm3_period + pwm3_period. + 0x8C + + + pwm_period + 0 + 15 + + + + + pwm3_config + pwm3_config. + 0x90 + + + pwm_sts_top + 7 + 7 + + + pwm_stop_en + 6 + 6 + + + pwm_sw_mode + 5 + 5 + + + pwm_sw_force_val + 4 + 4 + + + pwm_stop_mode + 3 + 3 + + + pwm_out_inv + 2 + 2 + + + reg_clk_sel + 0 + 1 + + + + + pwm3_interrupt + pwm3_interrupt. + 0x94 + + + pwm_int_enable + 16 + 16 + + + pwm_int_period_cnt + 0 + 15 + + + + + pwm4_clkdiv + pwm4_clkdiv. + 0xA0 + + + pwm_clk_div + 0 + 15 + + + + + pwm4_thre1 + pwm4_thre1. + 0xA4 + + + pwm_thre1 + 0 + 15 + + + + + pwm4_thre2 + pwm4_thre2. + 0xA8 + + + pwm_thre2 + 0 + 15 + + + + + pwm4_period + pwm4_period. + 0xAC + + + pwm_period + 0 + 15 + + + + + pwm4_config + pwm4_config. + 0xB0 + + + pwm_sts_top + 7 + 7 + + + pwm_stop_en + 6 + 6 + + + pwm_sw_mode + 5 + 5 + + + pwm_sw_force_val + 4 + 4 + + + pwm_stop_mode + 3 + 3 + + + pwm_out_inv + 2 + 2 + + + reg_clk_sel + 0 + 1 + + + + + pwm4_interrupt + pwm4_interrupt. + 0xB4 + + + pwm_int_enable + 16 + 16 + + + pwm_int_period_cnt + 0 + 15 + + + + + + + timer + timer. + 0x4000A500 + timer + 32 + read-write + + 0 + 0x1000 + registers + + + + TCCR + TCCR. + 0x0 + + + cs_wdt + 8 + 9 + + + RESERVED_7 + 7 + 7 + + + cs_2 + 5 + 6 + + + RESERVED_4 + 4 + 4 + + + cs_1 + 2 + 3 + + + + + TMR2_0 + TMR2_0. + 0x10 + + + tmr + 0 + 31 + + + + + TMR2_1 + TMR2_1. + 0x14 + + + tmr + 0 + 31 + + + + + TMR2_2 + TMR2_2. + 0x18 + + + tmr + 0 + 31 + + + + + TMR3_0 + TMR3_0. + 0x1C + + + tmr + 0 + 31 + + + + + TMR3_1 + TMR3_1. + 0x20 + + + tmr + 0 + 31 + + + + + TMR3_2 + TMR3_2. + 0x24 + + + tmr + 0 + 31 + + + + + TCR2 + TCR2. + 0x2C + + + tcr + 0 + 31 + + + + + TCR3 + TCR3. + 0x30 + + + tcr + 0 + 31 + + + + + TMSR2 + TMSR2. + 0x38 + + + tmsr_2 + 2 + 2 + + + tmsr_1 + 1 + 1 + + + tmsr_0 + 0 + 0 + + + + + TMSR3 + TMSR3. + 0x3C + + + tmsr_2 + 2 + 2 + + + tmsr_1 + 1 + 1 + + + tmsr_0 + 0 + 0 + + + + + TIER2 + TIER2. + 0x44 + + + tier_2 + 2 + 2 + + + tier_1 + 1 + 1 + + + tier_0 + 0 + 0 + + + + + TIER3 + TIER3. + 0x48 + + + tier_2 + 2 + 2 + + + tier_1 + 1 + 1 + + + tier_0 + 0 + 0 + + + + + TPLVR2 + TPLVR2. + 0x50 + + + tplvr + 0 + 31 + + + + + TPLVR3 + TPLVR3. + 0x54 + + + tplvr + 0 + 31 + + + + + TPLCR2 + TPLCR2. + 0x5C + + + tplcr + 0 + 1 + + + + + TPLCR3 + TPLCR3. + 0x60 + + + tplcr + 0 + 1 + + + + + WMER + WMER. + 0x64 + + + wrie + 1 + 1 + + + we + 0 + 0 + + + + + WMR + WMR. + 0x68 + + + wmr + 0 + 15 + + + + + WVR + WVR. + 0x6C + + + wvr + 0 + 15 + + + + + WSR + WSR. + 0x70 + + + wts + 0 + 0 + + + + + TICR2 + TICR2. + 0x78 + + + tclr_2 + 2 + 2 + + + tclr_1 + 1 + 1 + + + tclr_0 + 0 + 0 + + + + + TICR3 + TICR3. + 0x7C + + + tclr_2 + 2 + 2 + + + tclr_1 + 1 + 1 + + + tclr_0 + 0 + 0 + + + + + WICR + WICR. + 0x80 + + + wiclr + 0 + 0 + + + + + TCER + TCER. + 0x84 + + + timer3_en + 2 + 2 + + + timer2_en + 1 + 1 + + + + + TCMR + TCMR. + 0x88 + + + timer3_mode + 2 + 2 + + + timer2_mode + 1 + 1 + + + + + TILR2 + TILR2. + 0x90 + + + tilr_2 + 2 + 2 + + + tilr_1 + 1 + 1 + + + tilr_0 + 0 + 0 + + + + + TILR3 + TILR3. + 0x94 + + + tilr_2 + 2 + 2 + + + tilr_1 + 1 + 1 + + + tilr_0 + 0 + 0 + + + + + WCR + WCR. + 0x98 + + + wcr + 0 + 0 + + + + + WFAR + WFAR. + 0x9C + + + wfar + 0 + 15 + + + + + WSAR + WSAR. + 0xA0 + + + wsar + 0 + 15 + + + + + TCVWR2 + TCVWR2. + 0xA8 + + + tcvwr + 0 + 31 + + + + + TCVWR3 + TCVWR3. + 0xAC + + + tcvwr + 0 + 31 + + + + + TCVSYN2 + TCVSYN2. + 0xB4 + + + tcvsyn2 + 0 + 31 + + + + + TCVSYN3 + TCVSYN3. + 0xB8 + + + tcvsyn3 + 0 + 31 + + + + + TCDR + TCDR. + 0xBC + + + wcdr + 24 + 31 + + + tcdr3 + 16 + 23 + + + tcdr2 + 8 + 15 + + + + + + + ir + ir. + 0x4000A600 + ir + 32 + read-write + + 0 + 0x1000 + registers + + + + irtx_config + irtx_config. + 0x0 + + + cr_irtx_data_num + 12 + 17 + + + cr_irtx_tail_hl_inv + 11 + 11 + + + cr_irtx_tail_en + 10 + 10 + + + cr_irtx_head_hl_inv + 9 + 9 + + + cr_irtx_head_en + 8 + 8 + + + cr_irtx_logic1_hl_inv + 6 + 6 + + + cr_irtx_logic0_hl_inv + 5 + 5 + + + cr_irtx_data_en + 4 + 4 + + + cr_irtx_swm_en + 3 + 3 + + + cr_irtx_mod_en + 2 + 2 + + + cr_irtx_out_inv + 1 + 1 + + + cr_irtx_en + 0 + 0 + + + + + irtx_int_sts + irtx_int_sts. + 0x4 + + + cr_irtx_end_en + 24 + 24 + + + cr_irtx_end_clr + 16 + 16 + + + cr_irtx_end_mask + 8 + 8 + + + irtx_end_int + 0 + 0 + + + + + irtx_data_word0 + irtx_data_word0. + 0x8 + + + cr_irtx_data_word0 + 0 + 31 + + + + + irtx_data_word1 + irtx_data_word1. + 0xC + + + cr_irtx_data_word1 + 0 + 31 + + + + + irtx_pulse_width + irtx_pulse_width. + 0x10 + + + cr_irtx_mod_ph1_w + 24 + 31 + + + cr_irtx_mod_ph0_w + 16 + 23 + + + cr_irtx_pw_unit + 0 + 11 + + + + + irtx_pw + irtx_pw. + 0x14 + + + cr_irtx_tail_ph1_w + 28 + 31 + + + cr_irtx_tail_ph0_w + 24 + 27 + + + cr_irtx_head_ph1_w + 20 + 23 + + + cr_irtx_head_ph0_w + 16 + 19 + + + cr_irtx_logic1_ph1_w + 12 + 15 + + + cr_irtx_logic1_ph0_w + 8 + 11 + + + cr_irtx_logic0_ph1_w + 4 + 7 + + + cr_irtx_logic0_ph0_w + 0 + 3 + + + + + irtx_swm_pw_0 + irtx_swm_pw_0. + 0x40 + + + cr_irtx_swm_pw_0 + 0 + 31 + + + + + irtx_swm_pw_1 + irtx_swm_pw_1. + 0x44 + + + cr_irtx_swm_pw_1 + 0 + 31 + + + + + irtx_swm_pw_2 + irtx_swm_pw_2. + 0x48 + + + cr_irtx_swm_pw_2 + 0 + 31 + + + + + irtx_swm_pw_3 + irtx_swm_pw_3. + 0x4C + + + cr_irtx_swm_pw_3 + 0 + 31 + + + + + irtx_swm_pw_4 + irtx_swm_pw_4. + 0x50 + + + cr_irtx_swm_pw_4 + 0 + 31 + + + + + irtx_swm_pw_5 + irtx_swm_pw_5. + 0x54 + + + cr_irtx_swm_pw_5 + 0 + 31 + + + + + irtx_swm_pw_6 + irtx_swm_pw_6. + 0x58 + + + cr_irtx_swm_pw_6 + 0 + 31 + + + + + irtx_swm_pw_7 + irtx_swm_pw_7. + 0x5C + + + cr_irtx_swm_pw_7 + 0 + 31 + + + + + irrx_config + irrx_config. + 0x80 + + + cr_irrx_deg_cnt + 8 + 11 + + + cr_irrx_deg_en + 4 + 4 + + + cr_irrx_mode + 2 + 3 + + + cr_irrx_in_inv + 1 + 1 + + + cr_irrx_en + 0 + 0 + + + + + irrx_int_sts + irrx_int_sts. + 0x84 + + + cr_irrx_end_en + 24 + 24 + + + cr_irrx_end_clr + 16 + 16 + + + cr_irrx_end_mask + 8 + 8 + + + irrx_end_int + 0 + 0 + + + + + irrx_pw_config + irrx_pw_config. + 0x88 + + + cr_irrx_end_th + 16 + 31 + + + cr_irrx_data_th + 0 + 15 + + + + + irrx_data_count + irrx_data_count. + 0x90 + + + sts_irrx_data_cnt + 0 + 6 + + + + + irrx_data_word0 + irrx_data_word0. + 0x94 + + + sts_irrx_data_word0 + 0 + 31 + + + + + irrx_data_word1 + irrx_data_word1. + 0x98 + + + sts_irrx_data_word1 + 0 + 31 + + + + + irrx_swm_fifo_config_0 + irrx_swm_fifo_config_0. + 0xC0 + + + rx_fifo_cnt + 4 + 10 + + + rx_fifo_underflow + 3 + 3 + + + rx_fifo_overflow + 2 + 2 + + + rx_fifo_clr + 0 + 0 + + + + + irrx_swm_fifo_rdata + irrx_swm_fifo_rdata. + 0xC4 + + + rx_fifo_rdata + 0 + 15 + + + + + + + cks + cks. + 0x4000A700 + cks + 32 + read-write + + 0 + 0x1000 + registers + + + + cks_config + cks_config. + 0x0 + + + cr_cks_byte_swap + 1 + 1 + + + cr_cks_clr + 0 + 0 + + + + + data_in + data_in. + 0x4 + + + data_in + 0 + 7 + + + + + cks_out + cks_out. + 0x8 + + + cks_out + 0 + 15 + + + + + + + qdec + qdec. + 0x4000A800 + qdec + 32 + read-write + + 0 + 0x1000 + registers + + + + qdec_ctrl + qdec_ctrl. + 0x0 + + + input_swap + 31 + 31 + + + rpt_mode + 30 + 30 + + + spl_mode + 29 + 29 + + + led_period + 20 + 28 + + + rpt_period + 12 + 19 + + + spl_period + 8 + 11 + + + deg_cnt + 4 + 7 + + + deg_en + 3 + 3 + + + led_pol + 2 + 2 + + + led_en + 1 + 1 + + + qdec_en + 0 + 0 + + + + + qdec_value + qdec_value. + 0x4 + + + spl_val + 28 + 29 + + + acc2_val + 16 + 19 + + + acc1_val + 0 + 10 + + + + + qdec_int_en + qdec_int_en. + 0x10 + + + overflow_en + 3 + 3 + + + dbl_rdy_en + 2 + 2 + + + spl_rdy_en + 1 + 1 + + + rpt_rdy_en + 0 + 0 + + + + + qdec_int_sts + qdec_int_sts. + 0x14 + + + overflow_sts + 3 + 3 + + + dbl_rdy_sts + 2 + 2 + + + spl_rdy_sts + 1 + 1 + + + rpt_rdy_sts + 0 + 0 + + + + + qdec_int_clr + qdec_int_clr. + 0x18 + + + overflow_clr + 3 + 3 + + + dbl_rdy_clr + 2 + 2 + + + spl_rdy_clr + 1 + 1 + + + rpt_rdy_clr + 0 + 0 + + + + + + + kys + kys. + 0x4000AB00 + kys + 32 + read-write + + 0 + 0x1000 + registers + + + + ks_ctrl + ks_ctrl. + 0x0 + + + col_num + 20 + 24 + + + row_num + 16 + 18 + + + rc_ext + 8 + 9 + + + deg_cnt + 4 + 7 + + + deg_en + 3 + 3 + + + ghost_en + 2 + 2 + + + ks_en + 0 + 0 + + + + + ks_int_en + ks_int_en. + 0x10 + + + ks_int_en + 0 + 0 + + + + + ks_int_sts + ks_int_sts. + 0x14 + + + keycode_valid + 0 + 3 + + + + + keycode_clr + keycode_clr. + 0x18 + + + keycode_clr + 0 + 3 + + + + + keycode_value + keycode_value. + 0x1C + + + keycode3 + 24 + 31 + + + keycode2 + 16 + 23 + + + keycode1 + 8 + 15 + + + keycode0 + 0 + 7 + + + + + + + i2s + i2s. + 0x4000AA00 + i2s + 32 + read-write + + 0 + 0x1000 + registers + + + + i2s_config + i2s_config. + 0x0 + + + cr_ofs_en + 25 + 25 + + + cr_ofs_cnt + 20 + 24 + + + cr_mono_rx_ch + 19 + 19 + + + cr_endian + 18 + 18 + + + cr_i2s_mode + 16 + 17 + + + cr_data_size + 14 + 15 + + + cr_frame_size + 12 + 13 + + + cr_fs_3ch_mode + 8 + 8 + + + cr_fs_4ch_mode + 7 + 7 + + + cr_fs_1t_mode + 6 + 6 + + + cr_mute_mode + 5 + 5 + + + cr_mono_mode + 4 + 4 + + + cr_i2s_rxd_en + 3 + 3 + + + cr_i2s_txd_en + 2 + 2 + + + cr_i2s_s_en + 1 + 1 + + + cr_i2s_m_en + 0 + 0 + + + + + i2s_int_sts + i2s_int_sts. + 0x4 + + + cr_i2s_fer_en + 26 + 26 + + + cr_i2s_rxf_en + 25 + 25 + + + cr_i2s_txf_en + 24 + 24 + + + cr_i2s_fer_mask + 10 + 10 + + + cr_i2s_rxf_mask + 9 + 9 + + + cr_i2s_txf_mask + 8 + 8 + + + i2s_fer_int + 2 + 2 + + + i2s_rxf_int + 1 + 1 + + + i2s_txf_int + 0 + 0 + + + + + i2s_bclk_config + i2s_bclk_config. + 0x10 + + + cr_bclk_div_h + 16 + 27 + + + cr_bclk_div_l + 0 + 11 + + + + + i2s_fifo_config_0 + i2s_fifo_config_0. + 0x80 + + + cr_fifo_24b_lj + 10 + 10 + + + cr_fifo_lr_exchg + 9 + 9 + + + cr_fifo_lr_merge + 8 + 8 + + + rx_fifo_underflow + 7 + 7 + + + rx_fifo_overflow + 6 + 6 + + + tx_fifo_underflow + 5 + 5 + + + tx_fifo_overflow + 4 + 4 + + + rx_fifo_clr + 3 + 3 + + + tx_fifo_clr + 2 + 2 + + + i2s_dma_rx_en + 1 + 1 + + + i2s_dma_tx_en + 0 + 0 + + + + + i2s_fifo_config_1 + i2s_fifo_config_1. + 0x84 + + + rx_fifo_th + 24 + 27 + + + tx_fifo_th + 16 + 19 + + + rx_fifo_cnt + 8 + 12 + + + tx_fifo_cnt + 0 + 4 + + + + + i2s_fifo_wdata + i2s_fifo_wdata. + 0x88 + + + i2s_fifo_wdata + 0 + 31 + + + + + i2s_fifo_rdata + i2s_fifo_rdata. + 0x8C + + + i2s_fifo_rdata + 0 + 31 + + + + + i2s_io_config + i2s_io_config. + 0xFC + + + cr_deg_en + 7 + 7 + + + cr_deg_cnt + 4 + 6 + + + cr_i2s_bclk_inv + 3 + 3 + + + cr_i2s_fs_inv + 2 + 2 + + + cr_i2s_rxd_inv + 1 + 1 + + + cr_i2s_txd_inv + 0 + 0 + + + + + + + cam + cam. + 0x4000AD00 + cam + 32 + read-write + + 0 + 0x1000 + registers + + + + dvp2axi_configue + dvp2axi_configue. + 0x0 + + + reg_dvp_wait_cycle + 24 + 31 + + + reg_dvp_pix_clk_cg + 20 + 20 + + + reg_interlv_mode + 16 + 16 + + + reg_subsample_even + 15 + 15 + + + reg_subsample_en + 14 + 14 + + + reg_drop_even + 13 + 13 + + + reg_drop_en + 12 + 12 + + + reg_hw_mode_fwrap + 11 + 11 + + + reg_dvp_mode + 8 + 10 + + + reg_hburst + 4 + 5 + + + reg_line_vld_pol + 3 + 3 + + + reg_fram_vld_pol + 2 + 2 + + + reg_sw_mode + 1 + 1 + + + reg_dvp_enable + 0 + 0 + + + + + dvp2ahb_addr_start_0 + dvp2ahb_addr_start_0. + 0x4 + + + reg_addr_start_0 + 0 + 31 + + + + + dvp2ahb_mem_bcnt_0 + dvp2ahb_mem_bcnt_0. + 0x8 + + + reg_mem_burst_cnt_0 + 0 + 31 + + + + + dvp2ahb_frame_bcnt_0 + dvp2ahb_frame_bcnt_0. + 0xC + + + reg_frame_burst_cnt_0 + 0 + 31 + + + + + dvp2ahb_addr_start_1 + dvp2ahb_addr_start_1. + 0x10 + + + reg_addr_start_1 + 0 + 31 + + + + + dvp2ahb_mem_bcnt_1 + dvp2ahb_mem_bcnt_1. + 0x14 + + + reg_mem_burst_cnt_1 + 0 + 31 + + + + + dvp2ahb_frame_bcnt_1 + dvp2ahb_frame_bcnt_1. + 0x18 + + + reg_frame_burst_cnt_1 + 0 + 31 + + + + + dvp_status_and_error + dvp_status_and_error. + 0x1C + + + st_bus_flsh + 31 + 31 + + + st_bus_wait + 30 + 30 + + + st_bus_func + 29 + 29 + + + st_bus_idle + 28 + 28 + + + frame_valid_cnt_1 + 24 + 27 + + + frame_valid_cnt_0 + 20 + 23 + + + st_dvp_idle + 19 + 19 + + + ahb_idle_1 + 17 + 17 + + + ahb_idle_0 + 16 + 16 + + + sts_vcnt_int + 9 + 9 + + + sts_hcnt_int + 8 + 8 + + + sts_fifo_int_1 + 7 + 7 + + + sts_fifo_int_0 + 6 + 6 + + + sts_frame_int_1 + 5 + 5 + + + sts_frame_int_0 + 4 + 4 + + + sts_mem_int_1 + 3 + 3 + + + sts_mem_int_0 + 2 + 2 + + + sts_normal_int_1 + 1 + 1 + + + sts_normal_int_0 + 0 + 0 + + + + + dvp_frame_fifo_pop + dvp_frame_fifo_pop. + 0x20 + + + reg_int_fifo_clr_1 + 19 + 19 + + + reg_int_frame_clr_1 + 18 + 18 + + + reg_int_mem_clr_1 + 17 + 17 + + + reg_int_normal_clr_1 + 16 + 16 + + + reg_int_vcnt_clr_0 + 9 + 9 + + + reg_int_hcnt_clr_0 + 8 + 8 + + + reg_int_fifo_clr_0 + 7 + 7 + + + reg_int_frame_clr_0 + 6 + 6 + + + reg_int_mem_clr_0 + 5 + 5 + + + reg_int_normal_clr_0 + 4 + 4 + + + rfifo_pop_1 + 1 + 1 + + + rfifo_pop_0 + 0 + 0 + + + + + snsr_control + snsr_control. + 0x24 + + + reg_cam_pwdn + 1 + 1 + + + reg_cam_rst + 0 + 0 + + + + + int_control + int_control. + 0x28 + + + reg_frame_cnt_trgr_int + 28 + 31 + + + reg_int_vcnt_en + 6 + 6 + + + reg_int_hcnt_en + 5 + 5 + + + reg_int_fifo_en + 4 + 4 + + + reg_int_frame_en + 3 + 3 + + + reg_int_mem_en + 2 + 2 + + + reg_int_normal_1_en + 1 + 1 + + + reg_int_normal_0_en + 0 + 0 + + + + + hsync_control + hsync_control. + 0x30 + + + reg_hsync_act_start + 16 + 31 + + + reg_hsync_act_end + 0 + 15 + + + + + vsync_control + vsync_control. + 0x34 + + + reg_vsync_act_start + 16 + 31 + + + reg_vsync_act_end + 0 + 15 + + + + + frame_size_control + frame_size_control. + 0x38 + + + reg_total_vcnt + 16 + 31 + + + reg_total_hcnt + 0 + 15 + + + + + frame_start_addr0_0 + frame_start_addr0_0. + 0x40 + + + frame_start_addr_0_0 + 0 + 31 + + + + + frame_byte_cnt0_0 + frame_byte_cnt0_0. + 0x44 + + + frame_byte_cnt_0_0 + 0 + 31 + + + + + frame_start_addr0_1 + frame_start_addr0_1. + 0x48 + + + frame_start_addr_0_1 + 0 + 31 + + + + + frame_byte_cnt0_1 + frame_byte_cnt0_1. + 0x4C + + + frame_byte_cnt_0_1 + 0 + 31 + + + + + frame_start_addr0_2 + frame_start_addr0_2. + 0x50 + + + frame_start_addr_0_2 + 0 + 31 + + + + + frame_byte_cnt0_2 + frame_byte_cnt0_2. + 0x54 + + + frame_byte_cnt_0_2 + 0 + 31 + + + + + frame_start_addr0_3 + frame_start_addr0_3. + 0x58 + + + frame_start_addr_0_3 + 0 + 31 + + + + + frame_byte_cnt0_3 + frame_byte_cnt0_3. + 0x5C + + + frame_byte_cnt_0_3 + 0 + 31 + + + + + frame_start_addr0_4 + frame_start_addr0_4. + 0x60 + + + frame_start_addr_0_4 + 0 + 31 + + + + + frame_byte_cnt0_4 + frame_byte_cnt0_4. + 0x64 + + + frame_byte_cnt_0_4 + 0 + 31 + + + + + frame_start_addr0_5 + frame_start_addr0_5. + 0x68 + + + frame_start_addr_0_5 + 0 + 31 + + + + + frame_byte_cnt0_5 + frame_byte_cnt0_5. + 0x6C + + + frame_byte_cnt_0_5 + 0 + 31 + + + + + frame_start_addr0_6 + frame_start_addr0_6. + 0x70 + + + frame_start_addr_0_6 + 0 + 31 + + + + + frame_byte_cnt0_6 + frame_byte_cnt0_6. + 0x74 + + + frame_byte_cnt_0_6 + 0 + 31 + + + + + frame_start_addr0_7 + frame_start_addr0_7. + 0x78 + + + frame_start_addr_0_7 + 0 + 31 + + + + + frame_byte_cnt0_7 + frame_byte_cnt0_7. + 0x7C + + + frame_byte_cnt_0_7 + 0 + 31 + + + + + frame_start_addr1_0 + frame_start_addr1_0. + 0x80 + + + frame_start_addr_1_0 + 0 + 31 + + + + + frame_byte_cnt1_0 + frame_byte_cnt1_0. + 0x84 + + + frame_byte_cnt_1_0 + 0 + 31 + + + + + frame_start_addr1_1 + frame_start_addr1_1. + 0x88 + + + frame_start_addr_1_1 + 0 + 31 + + + + + frame_byte_cnt1_1 + frame_byte_cnt1_1. + 0x8C + + + frame_byte_cnt_1_1 + 0 + 31 + + + + + frame_start_addr1_2 + frame_start_addr1_2. + 0x90 + + + frame_start_addr_1_2 + 0 + 31 + + + + + frame_byte_cnt1_2 + frame_byte_cnt1_2. + 0x94 + + + frame_byte_cnt_1_2 + 0 + 31 + + + + + frame_start_addr1_3 + frame_start_addr1_3. + 0x98 + + + frame_start_addr_1_3 + 0 + 31 + + + + + frame_byte_cnt1_3 + frame_byte_cnt1_3. + 0x9C + + + frame_byte_cnt_1_3 + 0 + 31 + + + + + frame_start_addr1_4 + frame_start_addr1_4. + 0xA0 + + + frame_start_addr_1_4 + 0 + 31 + + + + + frame_byte_cnt1_4 + frame_byte_cnt1_4. + 0xA4 + + + frame_byte_cnt_1_4 + 0 + 31 + + + + + frame_start_addr1_5 + frame_start_addr1_5. + 0xA8 + + + frame_start_addr_1_5 + 0 + 31 + + + + + frame_byte_cnt1_5 + frame_byte_cnt1_5. + 0xAC + + + frame_byte_cnt_1_5 + 0 + 31 + + + + + frame_start_addr1_6 + frame_start_addr1_6. + 0xB0 + + + frame_start_addr_1_6 + 0 + 31 + + + + + frame_byte_cnt1_6 + frame_byte_cnt1_6. + 0xB4 + + + frame_byte_cnt_1_6 + 0 + 31 + + + + + frame_start_addr1_7 + frame_start_addr1_7. + 0xB8 + + + frame_start_addr_1_7 + 0 + 31 + + + + + frame_byte_cnt1_7 + frame_byte_cnt1_7. + 0xBC + + + frame_byte_cnt_1_7 + 0 + 31 + + + + + dvp_debug + dvp_debug. + 0xFF0 + + + reg_dvp_dbg_sel + 1 + 3 + + + reg_dvp_dbg_en + 0 + 0 + + + + + dvp_dummy_reg + dvp_dummy_reg. + 0xFFC + + + RESERVED_31_0 + 0 + 31 + + + + + + + mjpeg + mjpeg. + 0x4000AE00 + mjpeg + 32 + read-write + + 0 + 0x1000 + registers + + + + mjpeg_control_1 + mjpeg_control_1. + 0x0 + + + reg_v0_order + 30 + 31 + + + reg_y1_order + 28 + 29 + + + reg_u0_order + 26 + 27 + + + reg_y0_order + 24 + 25 + + + reg_q_mode + 16 + 22 + + + reg_yuv_mode + 12 + 13 + + + reg_h_bust + 8 + 9 + + + reg_reflect_dmy + 6 + 6 + + + reg_last_hf_hblk_dmy + 5 + 5 + + + reg_last_hf_wblk_dmy + 4 + 4 + + + reg_wr_over_stop + 3 + 3 + + + reg_order_u_even + 2 + 2 + + + reg_mjpeg_bit_order + 1 + 1 + + + reg_mjpeg_enable + 0 + 0 + + + + + mjpeg_control_2 + mjpeg_control_2. + 0x4 + + + reg_mjpeg_wait_cycle + 16 + 31 + + + reg_uv_dvp2ahb_fsel + 15 + 15 + + + reg_uv_dvp2ahb_lsel + 14 + 14 + + + reg_yy_dvp2ahb_fsel + 13 + 13 + + + reg_yy_dvp2ahb_lsel + 12 + 12 + + + reg_mjpeg_sw_run + 9 + 9 + + + reg_mjpeg_sw_mode + 8 + 8 + + + reg_sw_frame + 0 + 4 + + + + + mjpeg_yy_frame_addr + mjpeg_yy_frame_addr. + 0x08 + + + reg_yy_addr_start + 0 + 31 + + + + + mjpeg_uv_frame_addr + mjpeg_uv_frame_addr. + 0x0C + + + reg_uv_addr_start + 0 + 31 + + + + + mjpeg_yuv_mem + mjpeg_yuv_mem. + 0x10 + + + reg_uv_mem_hblk + 16 + 28 + + + reg_yy_mem_hblk + 0 + 12 + + + + + jpeg_frame_addr + jpeg_frame_addr. + 0x14 + + + reg_w_addr_start + 0 + 31 + + + + + jpeg_store_memory + jpeg_store_memory. + 0x18 + + + reg_w_burst_cnt + 0 + 31 + + + + + mjpeg_control_3 + mjpeg_control_3. + 0x1C + + + sts_swap_int + 30 + 30 + + + reg_int_swap_en + 29 + 29 + + + frame_valid_cnt + 24 + 28 + + + sts_idle_int + 22 + 22 + + + reg_int_idle_en + 21 + 21 + + + reg_frame_cnt_trgr_int + 16 + 20 + + + ahb_idle + 14 + 14 + + + mjpeg_manf + 13 + 13 + + + mjpeg_mans + 12 + 12 + + + mjpeg_flsh + 11 + 11 + + + mjpeg_wait + 10 + 10 + + + mjpeg_func + 9 + 9 + + + mjpeg_idle + 8 + 8 + + + sts_frame_int + 7 + 7 + + + sts_mem_int + 6 + 6 + + + sts_cam_int + 5 + 5 + + + sts_normal_int + 4 + 4 + + + reg_int_frame_en + 3 + 3 + + + reg_int_mem_en + 2 + 2 + + + reg_int_cam_en + 1 + 1 + + + reg_int_normal_en + 0 + 0 + + + + + mjpeg_frame_fifo_pop + mjpeg_frame_fifo_pop. + 0x20 + + + reg_int_swap_clr + 13 + 13 + + + reg_int_idle_clr + 12 + 12 + + + reg_int_frame_clr + 11 + 11 + + + reg_int_mem_clr + 10 + 10 + + + reg_int_cam_clr + 9 + 9 + + + reg_int_normal_clr + 8 + 8 + + + reg_w_swap_clr + 1 + 1 + + + rfifo_pop + 0 + 0 + + + + + mjpeg_frame_size + mjpeg_frame_size. + 0x24 + + + reg_frame_hblk + 16 + 27 + + + reg_frame_wblk + 0 + 11 + + + + + mjpeg_header_byte + mjpeg_header_byte. + 0x28 + + + reg_tail_exp + 16 + 16 + + + reg_head_byte + 0 + 11 + + + + + mjpeg_swap_mode + mjpeg_swap_mode. + 0x30 + + + sts_swap_fend + 12 + 12 + + + sts_swap_fstart + 11 + 11 + + + sts_read_swap_idx + 10 + 10 + + + sts_swap1_full + 9 + 9 + + + sts_swap0_full + 8 + 8 + + + reg_w_swap_mode + 0 + 0 + + + + + mjpeg_swap_bit_cnt + mjpeg_swap_bit_cnt. + 0x34 + + + frame_swap_end_bit_cnt + 0 + 31 + + + + + mjpeg_paket_ctrl + mjpeg_paket_ctrl. + 0x38 + + + reg_pket_body_byte + 16 + 31 + + + reg_jend_to_pend + 1 + 1 + + + reg_pket_en + 0 + 0 + + + + + mjpeg_paket_head_tail + mjpeg_paket_head_tail. + 0x3C + + + reg_pket_tail_byte + 16 + 27 + + + reg_pket_head_byte + 0 + 11 + + + + + mjpeg_Y_frame_read_status_1 + mjpeg_Y_frame_read_status_1. + 0x40 + + + yy_frm_hblk_r + 16 + 28 + + + yy_mem_hblk_r + 0 + 12 + + + + + mjpeg_Y_frame_read_status_2 + mjpeg_Y_frame_read_status_2. + 0x44 + + + yy_frm_cnt_r + 24 + 31 + + + yy_mem_rnd_r + 16 + 23 + + + yy_wblk_r + 0 + 12 + + + + + mjpeg_Y_frame_write_status + mjpeg_Y_frame_write_status. + 0x48 + + + yy_frm_cnt_w + 24 + 31 + + + yy_mem_rnd_w + 16 + 23 + + + yy_mem_hblk_w + 0 + 12 + + + + + mjpeg_UV_frame_read_status_1 + mjpeg_UV_frame_read_status_1. + 0x4C + + + uv_frm_hblk_r + 16 + 28 + + + uv_mem_hblk_r + 0 + 12 + + + + + mjpeg_UV_frame_read_status_2 + mjpeg_UV_frame_read_status_2. + 0x50 + + + uv_frm_cnt_r + 24 + 31 + + + uv_mem_rnd_r + 16 + 23 + + + uv_wblk_r + 0 + 12 + + + + + mjpeg_UV_frame_write_status + mjpeg_UV_frame_write_status. + 0x54 + + + uv_frm_cnt_w + 24 + 31 + + + uv_mem_rnd_w + 16 + 23 + + + uv_mem_hblk_w + 0 + 12 + + + + + mjpeg_start_addr0 + mjpeg_start_addr0. + 0x80 + + + frame_start_addr_0 + 0 + 31 + + + + + mjpeg_bit_cnt0 + mjpeg_bit_cnt0. + 0x84 + + + frame_bit_cnt_0 + 0 + 31 + + + + + mjpeg_start_addr1 + mjpeg_start_addr1. + 0x88 + + + frame_start_addr_1 + 0 + 31 + + + + + mjpeg_bit_cnt1 + mjpeg_bit_cnt1. + 0x8C + + + frame_bit_cnt_1 + 0 + 31 + + + + + mjpeg_start_addr2 + mjpeg_start_addr2. + 0x90 + + + frame_start_addr_2 + 0 + 31 + + + + + mjpeg_bit_cnt2 + mjpeg_bit_cnt2. + 0x94 + + + frame_bit_cnt_2 + 0 + 31 + + + + + mjpeg_start_addr3 + mjpeg_start_addr3. + 0x98 + + + frame_start_addr_3 + 0 + 31 + + + + + mjpeg_bit_cnt3 + mjpeg_bit_cnt3. + 0x9C + + + frame_bit_cnt_3 + 0 + 31 + + + + + mjpeg_start_addr4 + mjpeg_start_addr4. + 0xA0 + + + frame_start_addr_4 + 0 + 31 + + + + + mjpeg_bit_cnt4 + mjpeg_bit_cnt4. + 0xA4 + + + frame_bit_cnt_4 + 0 + 31 + + + + + mjpeg_start_addr5 + mjpeg_start_addr5. + 0xA8 + + + frame_start_addr_5 + 0 + 31 + + + + + mjpeg_bit_cnt5 + mjpeg_bit_cnt5. + 0xAC + + + frame_bit_cnt_5 + 0 + 31 + + + + + mjpeg_start_addr6 + mjpeg_start_addr6. + 0xB0 + + + frame_start_addr_6 + 0 + 31 + + + + + mjpeg_bit_cnt6 + mjpeg_bit_cnt6. + 0xB4 + + + frame_bit_cnt_6 + 0 + 31 + + + + + mjpeg_start_addr7 + mjpeg_start_addr7. + 0xB8 + + + frame_start_addr_7 + 0 + 31 + + + + + mjpeg_bit_cnt7 + mjpeg_bit_cnt7. + 0xBC + + + frame_bit_cnt_7 + 0 + 31 + + + + + mjpeg_start_addr_8 + mjpeg_start_addr_8. + 0xC0 + + + frame_start_addr_8 + 0 + 31 + + + + + mjpeg_bit_cnt_8 + mjpeg_bit_cnt_8. + 0xC4 + + + frame_bit_cnt_8 + 0 + 31 + + + + + mjpeg_start_addr_9 + mjpeg_start_addr_9. + 0xC8 + + + frame_start_addr_9 + 0 + 31 + + + + + mjpeg_bit_cnt_9 + mjpeg_bit_cnt_9. + 0xCC + + + frame_bit_cnt_9 + 0 + 31 + + + + + mjpeg_start_addr_a + mjpeg_start_addr_a. + 0xD0 + + + frame_start_addr_a + 0 + 31 + + + + + mjpeg_bit_cnt_a + mjpeg_bit_cnt_a. + 0xD4 + + + frame_bit_cnt_a + 0 + 31 + + + + + mjpeg_start_addr_b + mjpeg_start_addr_b. + 0xD8 + + + frame_start_addr_b + 0 + 31 + + + + + mjpeg_bit_cnt_b + mjpeg_bit_cnt_b. + 0xDC + + + frame_bit_cnt_b + 0 + 31 + + + + + mjpeg_start_addr_c + mjpeg_start_addr_c. + 0xE0 + + + frame_start_addr_c + 0 + 31 + + + + + mjpeg_bit_cnt_c + mjpeg_bit_cnt_c. + 0xE4 + + + frame_bit_cnt_c + 0 + 31 + + + + + mjpeg_start_addr_d + mjpeg_start_addr_d. + 0xE8 + + + frame_start_addr_d + 0 + 31 + + + + + mjpeg_bit_cnt_d + mjpeg_bit_cnt_d. + 0xEC + + + frame_bit_cnt_d + 0 + 31 + + + + + mjpeg_start_addr_e + mjpeg_start_addr_e. + 0xF0 + + + frame_start_addr_e + 0 + 31 + + + + + mjpeg_bit_cnt_e + mjpeg_bit_cnt_e. + 0xF4 + + + frame_bit_cnt_e + 0 + 31 + + + + + mjpeg_start_addr_f + mjpeg_start_addr_f. + 0xF8 + + + frame_start_addr_f + 0 + 31 + + + + + mjpeg_bit_cnt_f + mjpeg_bit_cnt_f. + 0xFC + + + frame_bit_cnt_f + 0 + 31 + + + + + mjpeg_q_mode0 + mjpeg_q_mode0. + 0x100 + + + frame_q_mode_0 + 0 + 6 + + + + + mjpeg_q_mode1 + mjpeg_q_mode1. + 0x104 + + + frame_q_mode_1 + 0 + 6 + + + + + mjpeg_q_mode2 + mjpeg_q_mode2. + 0x108 + + + frame_q_mode_2 + 0 + 6 + + + + + mjpeg_q_mode3 + mjpeg_q_mode3. + 0x10C + + + frame_q_mode_3 + 0 + 6 + + + + + mjpeg_q_mode4 + mjpeg_q_mode4. + 0x110 + + + frame_q_mode_4 + 0 + 6 + + + + + mjpeg_q_mode5 + mjpeg_q_mode5. + 0x114 + + + frame_q_mode_5 + 0 + 6 + + + + + mjpeg_q_mode6 + mjpeg_q_mode6. + 0x118 + + + frame_q_mode_6 + 0 + 6 + + + + + mjpeg_q_mode7 + mjpeg_q_mode7. + 0x11C + + + frame_q_mode_7 + 0 + 6 + + + + + mjpeg_q_mode_8 + mjpeg_q_mode_8. + 0x120 + + + frame_q_mode_8 + 0 + 6 + + + + + mjpeg_q_mode_9 + mjpeg_q_mode_9. + 0x124 + + + frame_q_mode_9 + 0 + 6 + + + + + mjpeg_q_mode_a + mjpeg_q_mode_a. + 0x128 + + + frame_q_mode_a + 0 + 6 + + + + + mjpeg_q_mode_b + mjpeg_q_mode_b. + 0x12C + + + frame_q_mode_b + 0 + 6 + + + + + mjpeg_q_mode_c + mjpeg_q_mode_c. + 0x130 + + + frame_q_mode_c + 0 + 6 + + + + + mjpeg_q_mode_d + mjpeg_q_mode_d. + 0x134 + + + frame_q_mode_d + 0 + 6 + + + + + mjpeg_q_mode_e + mjpeg_q_mode_e. + 0x138 + + + frame_q_mode_e + 0 + 6 + + + + + mjpeg_q_mode_f + mjpeg_q_mode_f. + 0x13C + + + frame_q_mode_f + 0 + 6 + + + + + mjpeg_debug + mjpeg_debug. + 0x1F0 + + + reg_mjpeg_dbg_sel + 4 + 7 + + + reg_mjpeg_dbg_en + 0 + 0 + + + + + mjpeg_dummy_reg + mjpeg_dummy_reg. + 0x1FC + + + mjpeg_dummy_reg + 0 + 31 + + + + + + + sf_ctrl + sf_ctrl. + 0x4000B000 + sf_ctrl + 32 + read-write + + 0 + 0x1000 + registers + + + + sf_ctrl_0 + sf_ctrl_0. + 0x0 + + + sf_id + 24 + 31 + + + sf_aes_iv_endian + 23 + 23 + + + sf_aes_key_endian + 22 + 22 + + + sf_aes_ctr_plus_en + 21 + 21 + + + sf_aes_dout_endian + 20 + 20 + + + sf_aes_dly_mode + 19 + 19 + + + sf_if_int_set + 18 + 18 + + + sf_if_int_clr + 17 + 17 + + + sf_if_int + 16 + 16 + + + sf_if_read_dly_en + 11 + 11 + + + sf_if_read_dly_n + 8 + 10 + + + sf_clk_sahb_sram_sel + 5 + 5 + + + sf_clk_out_inv_sel + 4 + 4 + + + sf_clk_out_gate_en + 3 + 3 + + + sf_clk_sf_rx_inv_sel + 2 + 2 + + + + + sf_ctrl_1 + sf_ctrl_1. + 0x4 + + + sf_ahb2sram_en + 31 + 31 + + + sf_ahb2sif_en + 30 + 30 + + + sf_if_en + 29 + 29 + + + sf_if_fn_sel + 28 + 28 + + + sf_ahb2sif_stop + 27 + 27 + + + sf_ahb2sif_stopped + 26 + 26 + + + sf_if_reg_wp + 25 + 25 + + + sf_if_reg_hold + 24 + 24 + + + sf_if_0_ack_lat + 20 + 22 + + + sf_if_sr_int_set + 18 + 18 + + + sf_if_sr_int_en + 17 + 17 + + + sf_if_sr_int + 16 + 16 + + + sf_if_sr_pat + 8 + 15 + + + sf_if_sr_pat_mask + 0 + 7 + + + + + sf_if_sahb_0 + sf_if_sahb_0. + 0x8 + + + sf_if_0_qpi_mode_en + 31 + 31 + + + sf_if_0_spi_mode + 28 + 30 + + + sf_if_0_cmd_en + 27 + 27 + + + sf_if_0_adr_en + 26 + 26 + + + sf_if_0_dmy_en + 25 + 25 + + + sf_if_0_dat_en + 24 + 24 + + + sf_if_0_dat_rw + 23 + 23 + + + sf_if_0_cmd_byte + 20 + 22 + + + sf_if_0_adr_byte + 17 + 19 + + + sf_if_0_dmy_byte + 12 + 16 + + + sf_if_0_dat_byte + 2 + 11 + + + sf_if_0_trig + 1 + 1 + + + sf_if_busy + 0 + 0 + + + + + sf_if_sahb_1 + sf_if_sahb_1. + 0xC + + + sf_if_0_cmd_buf_0 + 0 + 31 + + + + + sf_if_sahb_2 + sf_if_sahb_2. + 0x10 + + + sf_if_0_cmd_buf_1 + 0 + 31 + + + + + sf_if_iahb_0 + sf_if_iahb_0. + 0x14 + + + sf_if_1_qpi_mode_en + 31 + 31 + + + sf_if_1_spi_mode + 28 + 30 + + + sf_if_1_cmd_en + 27 + 27 + + + sf_if_1_adr_en + 26 + 26 + + + sf_if_1_dmy_en + 25 + 25 + + + sf_if_1_dat_en + 24 + 24 + + + sf_if_1_dat_rw + 23 + 23 + + + sf_if_1_cmd_byte + 20 + 22 + + + sf_if_1_adr_byte + 17 + 19 + + + sf_if_1_dmy_byte + 12 + 16 + + + + + sf_if_iahb_1 + sf_if_iahb_1. + 0x18 + + + sf_if_1_cmd_buf_0 + 0 + 31 + + + + + sf_if_iahb_2 + sf_if_iahb_2. + 0x1C + + + sf_if_1_cmd_buf_1 + 0 + 31 + + + + + sf_if_status_0 + sf_if_status_0. + 0x20 + + + sf_if_status_0 + 0 + 31 + + + + + sf_if_status_1 + sf_if_status_1. + 0x24 + + + sf_if_status_1 + 0 + 31 + + + + + sf_aes + sf_aes. + 0x28 + + + sf_aes_status + 5 + 31 + + + sf_aes_pref_busy + 4 + 4 + + + sf_aes_pref_trig + 3 + 3 + + + sf_aes_mode + 1 + 2 + + + sf_aes_en + 0 + 0 + + + + + sf_ahb2sif_status + sf_ahb2sif_status. + 0x2C + + + sf_ahb2sif_status + 0 + 31 + + + + + sf_if_io_dly_0 + sf_if_io_dly_0. + 0x30 + + + sf_dqs_do_dly_sel + 30 + 31 + + + sf_dqs_di_dly_sel + 28 + 29 + + + sf_dqs_oe_dly_sel + 26 + 27 + + + sf_clk_out_dly_sel + 8 + 9 + + + sf_cs2_dly_sel + 2 + 3 + + + sf_cs_dly_sel + 0 + 1 + + + + + sf_if_io_dly_1 + sf_if_io_dly_1. + 0x34 + + + sf_io_0_do_dly_sel + 16 + 17 + + + sf_io_0_di_dly_sel + 8 + 9 + + + sf_io_0_oe_dly_sel + 0 + 1 + + + + + sf_if_io_dly_2 + sf_if_io_dly_2. + 0x38 + + + sf_io_1_do_dly_sel + 16 + 17 + + + sf_io_1_di_dly_sel + 8 + 9 + + + sf_io_1_oe_dly_sel + 0 + 1 + + + + + sf_if_io_dly_3 + sf_if_io_dly_3. + 0x3C + + + sf_io_2_do_dly_sel + 16 + 17 + + + sf_io_2_di_dly_sel + 8 + 9 + + + sf_io_2_oe_dly_sel + 0 + 1 + + + + + sf_if_io_dly_4 + sf_if_io_dly_4. + 0x40 + + + sf_io_3_do_dly_sel + 16 + 17 + + + sf_io_3_di_dly_sel + 8 + 9 + + + sf_io_3_oe_dly_sel + 0 + 1 + + + + + sf_reserved + sf_reserved. + 0x44 + + + sf_reserved + 0 + 31 + + + + + sf2_if_io_dly_0 + sf2_if_io_dly_0. + 0x48 + + + sf2_dqs_do_dly_sel + 30 + 31 + + + sf2_dqs_di_dly_sel + 28 + 29 + + + sf2_dqs_oe_dly_sel + 26 + 27 + + + sf2_clk_out_dly_sel + 8 + 9 + + + sf2_cs2_dly_sel + 2 + 3 + + + sf2_cs_dly_sel + 0 + 1 + + + + + sf2_if_io_dly_1 + sf2_if_io_dly_1. + 0x4C + + + sf2_io_0_do_dly_sel + 16 + 17 + + + sf2_io_0_di_dly_sel + 8 + 9 + + + sf2_io_0_oe_dly_sel + 0 + 1 + + + + + sf2_if_io_dly_2 + sf2_if_io_dly_2. + 0x50 + + + sf2_io_1_do_dly_sel + 16 + 17 + + + sf2_io_1_di_dly_sel + 8 + 9 + + + sf2_io_1_oe_dly_sel + 0 + 1 + + + + + sf2_if_io_dly_3 + sf2_if_io_dly_3. + 0x54 + + + sf2_io_2_do_dly_sel + 16 + 17 + + + sf2_io_2_di_dly_sel + 8 + 9 + + + sf2_io_2_oe_dly_sel + 0 + 1 + + + + + sf2_if_io_dly_4 + sf2_if_io_dly_4. + 0x58 + + + sf2_io_3_do_dly_sel + 16 + 17 + + + sf2_io_3_di_dly_sel + 8 + 9 + + + sf2_io_3_oe_dly_sel + 0 + 1 + + + + + sf3_if_io_dly_0 + sf3_if_io_dly_0. + 0x5C + + + sf3_dqs_do_dly_sel + 30 + 31 + + + sf3_dqs_di_dly_sel + 28 + 29 + + + sf3_dqs_oe_dly_sel + 26 + 27 + + + sf3_clk_out_dly_sel + 8 + 9 + + + sf3_cs2_dly_sel + 2 + 3 + + + sf3_cs_dly_sel + 0 + 1 + + + + + sf3_if_io_dly_1 + sf3_if_io_dly_1. + 0x60 + + + sf3_io_0_do_dly_sel + 16 + 17 + + + sf3_io_0_di_dly_sel + 8 + 9 + + + sf3_io_0_oe_dly_sel + 0 + 1 + + + + + sf3_if_io_dly_2 + sf3_if_io_dly_2. + 0x64 + + + sf3_io_1_do_dly_sel + 16 + 17 + + + sf3_io_1_di_dly_sel + 8 + 9 + + + sf3_io_1_oe_dly_sel + 0 + 1 + + + + + sf3_if_io_dly_3 + sf3_if_io_dly_3. + 0x68 + + + sf3_io_2_do_dly_sel + 16 + 17 + + + sf3_io_2_di_dly_sel + 8 + 9 + + + sf3_io_2_oe_dly_sel + 0 + 1 + + + + + sf3_if_io_dly_4 + sf3_if_io_dly_4. + 0x6C + + + sf3_io_3_do_dly_sel + 16 + 17 + + + sf3_io_3_di_dly_sel + 8 + 9 + + + sf3_io_3_oe_dly_sel + 0 + 1 + + + + + sf_ctrl_2 + sf_ctrl_2. + 0x70 + + + sf_if_0_bk_sel + 31 + 31 + + + sf_if_bk2_en + 30 + 30 + + + sf_if_bk2_mode + 29 + 29 + + + sf_if_bk_swap + 28 + 28 + + + sf_if_dqs_en + 5 + 5 + + + sf_if_dtr_en + 4 + 4 + + + sf_if_pad_sel_lock + 3 + 3 + + + sf_if_pad_sel + 0 + 1 + + + + + sf_ctrl_3 + sf_ctrl_3. + 0x74 + + + sf_if_1_ack_lat + 29 + 31 + + + sf_cmds_wrap_q + 11 + 11 + + + sf_cmds_wrap_mode + 10 + 10 + + + sf_cmds_wrap_q_ini + 9 + 9 + + + sf_cmds_bt_en + 8 + 8 + + + sf_cmds_bt_dly + 5 + 7 + + + sf_cmds_en + 4 + 4 + + + sf_cmds_wrap_len + 0 + 3 + + + + + sf_if_iahb_3 + sf_if_iahb_3. + 0x78 + + + sf_if_2_qpi_mode_en + 31 + 31 + + + sf_if_2_spi_mode + 28 + 30 + + + sf_if_2_cmd_en + 27 + 27 + + + sf_if_2_adr_en + 26 + 26 + + + sf_if_2_dmy_en + 25 + 25 + + + sf_if_2_dat_en + 24 + 24 + + + sf_if_2_dat_rw + 23 + 23 + + + sf_if_2_cmd_byte + 20 + 22 + + + sf_if_2_adr_byte + 17 + 19 + + + sf_if_2_dmy_byte + 12 + 16 + + + + + sf_if_iahb_4 + sf_if_iahb_4. + 0x7C + + + sf_if_2_cmd_buf_0 + 0 + 31 + + + + + sf_if_iahb_5 + sf_if_iahb_5. + 0x80 + + + sf_if_2_cmd_buf_1 + 0 + 31 + + + + + sf_if_iahb_6 + sf_if_iahb_6. + 0x84 + + + sf_if_3_qpi_mode_en + 31 + 31 + + + sf_if_3_spi_mode + 28 + 30 + + + sf_if_3_cmd_en + 27 + 27 + + + sf_if_3_adr_en + 26 + 26 + + + sf_if_3_cmd_byte + 20 + 22 + + + sf_if_3_adr_byte + 17 + 19 + + + + + sf_if_iahb_7 + sf_if_iahb_7. + 0x88 + + + sf_if_3_cmd_buf_0 + 0 + 31 + + + + + sf_if_iahb_8 + sf_if_iahb_8. + 0x8C + + + sf_if_3_cmd_buf_1 + 0 + 31 + + + + + sf_if_iahb_9 + sf_if_iahb_9. + 0x90 + + + sf_if_4_qpi_mode_en + 31 + 31 + + + sf_if_4_spi_mode + 28 + 30 + + + sf_if_4_cmd_en + 27 + 27 + + + sf_if_4_adr_en + 26 + 26 + + + sf_if_4_dmy_en + 25 + 25 + + + sf_if_4_dat_en + 24 + 24 + + + sf_if_4_dat_rw + 23 + 23 + + + sf_if_4_cmd_byte + 20 + 22 + + + sf_if_4_adr_byte + 17 + 19 + + + sf_if_4_dmy_byte + 12 + 16 + + + + + sf_if_iahb_10 + sf_if_iahb_10. + 0x94 + + + sf_if_4_cmd_buf_0 + 0 + 31 + + + + + sf_if_iahb_11 + sf_if_iahb_11. + 0x98 + + + sf_if_4_cmd_buf_1 + 0 + 31 + + + + + sf_if_iahb_12 + sf_if_iahb_12. + 0x9C + + + sf2_if_read_dly_src + 12 + 12 + + + sf2_if_read_dly_en + 11 + 11 + + + sf2_if_read_dly_n + 8 + 10 + + + sf3_clk_out_inv_sel + 5 + 5 + + + sf2_clk_out_inv_sel + 4 + 4 + + + sf2_clk_sf_rx_inv_src + 3 + 3 + + + sf2_clk_sf_rx_inv_sel + 2 + 2 + + + + + sf_ctrl_prot_en_rd + sf_ctrl_prot_en_rd. + 0x100 + + + sf_dbg_dis + 31 + 31 + + + sf_if_0_trig_wr_lock + 30 + 30 + + + sf_ctrl_id1_en_rd + 2 + 2 + + + sf_ctrl_id0_en_rd + 1 + 1 + + + sf_ctrl_prot_en_rd + 0 + 0 + + + + + sf_ctrl_prot_en + sf_ctrl_prot_en. + 0x104 + + + sf_ctrl_id1_en + 2 + 2 + + + sf_ctrl_id0_en + 1 + 1 + + + sf_ctrl_prot_en + 0 + 0 + + + + + sf_aes_key_r0_0 + sf_aes_key_r0_0. + 0x200 + + + sf_aes_key_r0_0 + 0 + 31 + + + + + sf_aes_key_r0_1 + sf_aes_key_r0_1. + 0x204 + + + sf_aes_key_r0_1 + 0 + 31 + + + + + sf_aes_key_r0_2 + sf_aes_key_r0_2. + 0x208 + + + sf_aes_key_r0_2 + 0 + 31 + + + + + sf_aes_key_r0_3 + sf_aes_key_r0_3. + 0x20C + + + sf_aes_key_r0_3 + 0 + 31 + + + + + sf_aes_key_r0_4 + sf_aes_key_r0_4. + 0x210 + + + sf_aes_key_r0_4 + 0 + 31 + + + + + sf_aes_key_r0_5 + sf_aes_key_r0_5. + 0x214 + + + sf_aes_key_r0_5 + 0 + 31 + + + + + sf_aes_key_r0_6 + sf_aes_key_r0_6. + 0x218 + + + sf_aes_key_r0_6 + 0 + 31 + + + + + sf_aes_key_r0_7 + sf_aes_key_r0_7. + 0x21C + + + sf_aes_key_r0_7 + 0 + 31 + + + + + sf_aes_iv_r0_w0 + sf_aes_iv_r0_w0. + 0x220 + + + sf_aes_iv_r0_w0 + 0 + 31 + + + + + sf_aes_iv_r0_w1 + sf_aes_iv_r0_w1. + 0x224 + + + sf_aes_iv_r0_w1 + 0 + 31 + + + + + sf_aes_iv_r0_w2 + sf_aes_iv_r0_w2. + 0x228 + + + sf_aes_iv_r0_w2 + 0 + 31 + + + + + sf_aes_iv_r0_w3 + sf_aes_iv_r0_w3. + 0x22C + + + sf_aes_iv_r0_w3 + 0 + 31 + + + + + sf_aes_cfg_r0 + sf_aes_cfg_r0. + 0x230 + + + sf_aes_region_r0_lock + 31 + 31 + + + sf_aes_region_r0_en + 30 + 30 + + + sf_aes_region_r0_hw_key_en + 29 + 29 + + + sf_aes_region_r0_start + 14 + 27 + + + sf_aes_region_r0_end + 0 + 13 + + + + + sf_aes_key_r1_0 + sf_aes_key_r1_0. + 0x300 + + + sf_aes_key_r1_0 + 0 + 31 + + + + + sf_aes_key_r1_1 + sf_aes_key_r1_1. + 0x304 + + + sf_aes_key_r1_1 + 0 + 31 + + + + + sf_aes_key_r1_2 + sf_aes_key_r1_2. + 0x308 + + + sf_aes_key_r1_2 + 0 + 31 + + + + + sf_aes_key_r1_3 + sf_aes_key_r1_3. + 0x30C + + + sf_aes_key_r1_3 + 0 + 31 + + + + + sf_aes_key_r1_4 + sf_aes_key_r1_4. + 0x310 + + + sf_aes_key_r1_4 + 0 + 31 + + + + + sf_aes_key_r1_5 + sf_aes_key_r1_5. + 0x314 + + + sf_aes_key_r1_5 + 0 + 31 + + + + + sf_aes_key_r1_6 + sf_aes_key_r1_6. + 0x318 + + + sf_aes_key_r1_6 + 0 + 31 + + + + + sf_aes_key_r1_7 + sf_aes_key_r1_7. + 0x31C + + + sf_aes_key_r1_7 + 0 + 31 + + + + + sf_aes_iv_r1_w0 + sf_aes_iv_r1_w0. + 0x320 + + + sf_aes_iv_r1_w0 + 0 + 31 + + + + + sf_aes_iv_r1_w1 + sf_aes_iv_r1_w1. + 0x324 + + + sf_aes_iv_r1_w1 + 0 + 31 + + + + + sf_aes_iv_r1_w2 + sf_aes_iv_r1_w2. + 0x328 + + + sf_aes_iv_r1_w2 + 0 + 31 + + + + + sf_aes_iv_r1_w3 + sf_aes_iv_r1_w3. + 0x32C + + + sf_aes_iv_r1_w3 + 0 + 31 + + + + + sf_aes_r1 + sf_aes_r1. + 0x330 + + + sf_aes_r1_lock + 31 + 31 + + + sf_aes_r1_en + 30 + 30 + + + sf_aes_r1_hw_key_en + 29 + 29 + + + sf_aes_r1_start + 14 + 27 + + + sf_aes_r1_end + 0 + 13 + + + + + sf_aes_key_r2_0 + sf_aes_key_r2_0. + 0x400 + + + sf_aes_key_r2_0 + 0 + 31 + + + + + sf_aes_key_r2_1 + sf_aes_key_r2_1. + 0x404 + + + sf_aes_key_r2_1 + 0 + 31 + + + + + sf_aes_key_r2_2 + sf_aes_key_r2_2. + 0x408 + + + sf_aes_key_r2_2 + 0 + 31 + + + + + sf_aes_key_r2_3 + sf_aes_key_r2_3. + 0x40C + + + sf_aes_key_r2_3 + 0 + 31 + + + + + sf_aes_key_r2_4 + sf_aes_key_r2_4. + 0x410 + + + sf_aes_key_r2_4 + 0 + 31 + + + + + sf_aes_key_r2_5 + sf_aes_key_r2_5. + 0x414 + + + sf_aes_key_r2_5 + 0 + 31 + + + + + sf_aes_key_r2_6 + sf_aes_key_r2_6. + 0x418 + + + sf_aes_key_r2_6 + 0 + 31 + + + + + sf_aes_key_r2_7 + sf_aes_key_r2_7. + 0x41C + + + sf_aes_key_r2_7 + 0 + 31 + + + + + sf_aes_iv_r2_w0 + sf_aes_iv_r2_w0. + 0x420 + + + sf_aes_iv_r2_w0 + 0 + 31 + + + + + sf_aes_iv_r2_w1 + sf_aes_iv_r2_w1. + 0x424 + + + sf_aes_iv_r2_w1 + 0 + 31 + + + + + sf_aes_iv_r2_w2 + sf_aes_iv_r2_w2. + 0x428 + + + sf_aes_iv_r2_w2 + 0 + 31 + + + + + sf_aes_iv_r2_w3 + sf_aes_iv_r2_w3. + 0x42C + + + sf_aes_iv_r2_w3 + 0 + 31 + + + + + sf_aes_r2 + sf_aes_r2. + 0x430 + + + sf_aes_r2_lock + 31 + 31 + + + sf_aes_r2_en + 30 + 30 + + + sf_aes_r2_hw_key_en + 29 + 29 + + + sf_aes_r2_start + 14 + 27 + + + sf_aes_r2_end + 0 + 13 + + + + + sf_id0_offset + sf_id0_offset. + 0x434 + + + sf_id0_offset + 0 + 23 + + + + + sf_id1_offset + sf_id1_offset. + 0x438 + + + sf_id1_offset + 0 + 23 + + + + + sf_bk2_id0_offset + sf_bk2_id0_offset. + 0x43C + + + sf_bk2_id0_offset + 0 + 23 + + + + + sf_bk2_id1_offset + sf_bk2_id1_offset. + 0x440 + + + sf_bk2_id1_offset + 0 + 23 + + + + + + + dma + dma. + 0x40007000 + dma + 32 + read-write + + 0 + 0x1000 + registers + + + + DMA_IntStatus + DMA_IntStatus. + 0x0 + + + IntStatus + 0 + 7 + + + + + DMA_IntTCStatus + DMA_IntTCStatus. + 0x4 + + + IntTCStatus + 0 + 7 + + + + + DMA_IntTCClear + DMA_IntTCClear. + 0x8 + + + IntTCClear + 0 + 7 + + + + + DMA_IntErrorStatus + DMA_IntErrorStatus. + 0xC + + + IntErrorStatus + 0 + 7 + + + + + DMA_IntErrClr + DMA_IntErrClr. + 0x10 + + + IntErrClr + 0 + 7 + + + + + DMA_RawIntTCStatus + DMA_RawIntTCStatus. + 0x14 + + + RawIntTCStatus + 0 + 7 + + + + + DMA_RawIntErrorStatus + DMA_RawIntErrorStatus. + 0x18 + + + RawIntErrorStatus + 0 + 7 + + + + + DMA_EnbldChns + DMA_EnbldChns. + 0x1C + + + EnabledChannels + 0 + 7 + + + + + DMA_SoftBReq + DMA_SoftBReq. + 0x20 + + + SoftBReq + 0 + 31 + + + + + DMA_SoftSReq + DMA_SoftSReq. + 0x24 + + + SoftSReq + 0 + 31 + + + + + DMA_SoftLBReq + DMA_SoftLBReq. + 0x28 + + + SoftLBReq + 0 + 31 + + + + + DMA_SoftLSReq + DMA_SoftLSReq. + 0x2C + + + SoftLSReq + 0 + 31 + + + + + DMA_Top_Config + DMA_Top_Config. + 0x30 + + + M + 1 + 1 + + + E + 0 + 0 + + + + + DMA_Sync + DMA_Sync. + 0x34 + + + DMA_Sync + 0 + 31 + + + + + DMA_C0SrcAddr + DMA_C0SrcAddr. + 0x100 + + + SrcAddr + 0 + 31 + + + + + DMA_C0DstAddr + DMA_C0DstAddr. + 0x104 + + + DstAddr + 0 + 31 + + + + + DMA_C0LLI + DMA_C0LLI. + 0x108 + + + LLI + 0 + 31 + + + + + DMA_C0Control + DMA_C0Control. + 0x10C + + + I + 31 + 31 + + + Prot + 28 + 30 + + + DI + 27 + 27 + + + SI + 26 + 26 + + + SLargerD + 25 + 25 + + + fix_cnt + 23 + 24 + + + DWidth + 21 + 22 + + + SWidth + 18 + 19 + + + dst_add_mode + 17 + 17 + + + DBSize + 15 + 16 + + + dst_min_mode + 14 + 14 + + + SBSize + 12 + 13 + + + TransferSize + 0 + 11 + + + + + DMA_C0Config + DMA_C0Config. + 0x110 + + + LLICounter + 20 + 29 + + + H + 18 + 18 + + + A + 17 + 17 + + + L + 16 + 16 + + + ITC + 15 + 15 + + + IE + 14 + 14 + + + FlowCntrl + 11 + 13 + + + DstPeripheral + 6 + 10 + + + SrcPeripheral + 1 + 5 + + + E + 0 + 0 + + + + + DMA_C1SrcAddr + DMA_C1SrcAddr. + 0x200 + + + SrcAddr + 0 + 31 + + + + + DMA_C1DstAddr + DMA_C1DstAddr. + 0x204 + + + DstAddr + 0 + 31 + + + + + DMA_C1LLI + DMA_C1LLI. + 0x208 + + + LLI + 2 + 31 + + + + + DMA_C1Control + DMA_C1Control. + 0x20C + + + I + 31 + 31 + + + Prot + 28 + 30 + + + DI + 27 + 27 + + + SI + 26 + 26 + + + fix_cnt + 23 + 24 + + + DWidth + 21 + 23 + + + SWidth + 18 + 20 + + + dst_add_mode + 17 + 17 + + + DBSize + 15 + 16 + + + dst_min_mode + 14 + 14 + + + SBSize + 12 + 13 + + + TransferSize + 0 + 11 + + + + + DMA_C1Config + DMA_C1Config. + 0x210 + + + H + 18 + 18 + + + A + 17 + 17 + + + L + 16 + 16 + + + ITC + 15 + 15 + + + IE + 14 + 14 + + + FlowCntrl + 11 + 13 + + + DstPeripheral + 6 + 10 + + + SrcPeripheral + 1 + 5 + + + E + 0 + 0 + + + + + DMA_C2SrcAddr + DMA_C2SrcAddr. + 0x300 + + + SrcAddr + 0 + 31 + + + + + DMA_C2DstAddr + DMA_C2DstAddr. + 0x304 + + + DstAddr + 0 + 31 + + + + + DMA_C2LLI + DMA_C2LLI. + 0x308 + + + LLI + 2 + 31 + + + + + DMA_C2Control + DMA_C2Control. + 0x30C + + + I + 31 + 31 + + + Prot + 28 + 30 + + + DI + 27 + 27 + + + SI + 26 + 26 + + + fix_cnt + 23 + 24 + + + DWidth + 21 + 23 + + + SWidth + 18 + 20 + + + dst_add_mode + 17 + 17 + + + DBSize + 15 + 16 + + + dst_min_mode + 14 + 14 + + + SBSize + 12 + 13 + + + TransferSize + 0 + 11 + + + + + DMA_C2Config + DMA_C2Config. + 0x310 + + + H + 18 + 18 + + + A + 17 + 17 + + + L + 16 + 16 + + + ITC + 15 + 15 + + + IE + 14 + 14 + + + FlowCntrl + 11 + 13 + + + DstPeripheral + 6 + 10 + + + SrcPeripheral + 1 + 5 + + + E + 0 + 0 + + + + + DMA_C3SrcAddr + DMA_C3SrcAddr. + 0x400 + + + SrcAddr + 0 + 31 + + + + + DMA_C3DstAddr + DMA_C3DstAddr. + 0x404 + + + DstAddr + 0 + 31 + + + + + DMA_C3LLI + DMA_C3LLI. + 0x408 + + + LLI + 2 + 31 + + + + + DMA_C3Control + DMA_C3Control. + 0x40C + + + I + 31 + 31 + + + Prot + 28 + 30 + + + DI + 27 + 27 + + + SI + 26 + 26 + + + fix_cnt + 23 + 24 + + + DWidth + 21 + 23 + + + SWidth + 18 + 20 + + + dst_add_mode + 17 + 17 + + + DBSize + 15 + 16 + + + dst_min_mode + 14 + 14 + + + SBSize + 12 + 13 + + + TransferSize + 0 + 11 + + + + + DMA_C3Config + DMA_C3Config. + 0x410 + + + H + 18 + 18 + + + A + 17 + 17 + + + L + 16 + 16 + + + ITC + 15 + 15 + + + IE + 14 + 14 + + + FlowCntrl + 11 + 13 + + + DstPeripheral + 6 + 10 + + + SrcPeripheral + 1 + 5 + + + E + 0 + 0 + + + + + DMA_C4SrcAddr + DMA_C4SrcAddr. + 0x500 + + + SrcAddr + 0 + 31 + + + + + DMA_C4DstAddr + DMA_C4DstAddr. + 0x504 + + + DstAddr + 0 + 31 + + + + + DMA_C4LLI + DMA_C4LLI. + 0x508 + + + LLI + 2 + 31 + + + + + DMA_C4Control + DMA_C4Control. + 0x50C + + + I + 31 + 31 + + + Prot + 28 + 30 + + + DI + 27 + 27 + + + SI + 26 + 26 + + + fix_cnt + 23 + 24 + + + DWidth + 21 + 23 + + + SWidth + 18 + 20 + + + dst_add_mode + 17 + 17 + + + DBSize + 15 + 16 + + + dst_min_mode + 14 + 14 + + + SBSize + 12 + 13 + + + TransferSize + 0 + 11 + + + + + DMA_C4Config + DMA_C4Config. + 0x510 + + + H + 18 + 18 + + + A + 17 + 17 + + + L + 16 + 16 + + + ITC + 15 + 15 + + + IE + 14 + 14 + + + FlowCntrl + 11 + 13 + + + DstPeripheral + 6 + 10 + + + SrcPeripheral + 1 + 5 + + + E + 0 + 0 + + + + + DMA_C5SrcAddr + DMA_C5SrcAddr. + 0x600 + + + SrcAddr + 0 + 31 + + + + + DMA_C5DstAddr + DMA_C5DstAddr. + 0x604 + + + DstAddr + 0 + 31 + + + + + DMA_C5LLI + DMA_C5LLI. + 0x608 + + + LLI + 2 + 31 + + + + + DMA_C5Control + DMA_C5Control. + 0x60C + + + I + 31 + 31 + + + Prot + 28 + 30 + + + DI + 27 + 27 + + + SI + 26 + 26 + + + fix_cnt + 23 + 24 + + + DWidth + 21 + 23 + + + SWidth + 18 + 20 + + + dst_add_mode + 17 + 17 + + + DBSize + 15 + 16 + + + dst_min_mode + 14 + 14 + + + SBSize + 12 + 13 + + + TransferSize + 0 + 11 + + + + + DMA_C5Config + DMA_C5Config. + 0x610 + + + H + 18 + 18 + + + A + 17 + 17 + + + L + 16 + 16 + + + ITC + 15 + 15 + + + IE + 14 + 14 + + + FlowCntrl + 11 + 13 + + + DstPeripheral + 6 + 10 + + + SrcPeripheral + 1 + 5 + + + E + 0 + 0 + + + + + DMA_C6SrcAddr + DMA_C6SrcAddr. + 0x700 + + + SrcAddr + 0 + 31 + + + + + DMA_C6DstAddr + DMA_C6DstAddr. + 0x704 + + + DstAddr + 0 + 31 + + + + + DMA_C6LLI + DMA_C6LLI. + 0x708 + + + LLI + 2 + 31 + + + + + DMA_C6Control + DMA_C6Control. + 0x70C + + + I + 31 + 31 + + + Prot + 28 + 30 + + + DI + 27 + 27 + + + SI + 26 + 26 + + + fix_cnt + 23 + 24 + + + DWidth + 21 + 23 + + + SWidth + 18 + 20 + + + dst_add_mode + 17 + 17 + + + DBSize + 15 + 16 + + + dst_min_mode + 14 + 14 + + + SBSize + 12 + 13 + + + TransferSize + 0 + 11 + + + + + DMA_C6Config + DMA_C6Config. + 0x710 + + + H + 18 + 18 + + + A + 17 + 17 + + + L + 16 + 16 + + + ITC + 15 + 15 + + + IE + 14 + 14 + + + FlowCntrl + 11 + 13 + + + DstPeripheral + 6 + 10 + + + SrcPeripheral + 1 + 5 + + + E + 0 + 0 + + + + + DMA_C7SrcAddr + DMA_C7SrcAddr. + 0x800 + + + SrcAddr + 0 + 31 + + + + + DMA_C7DstAddr + DMA_C7DstAddr. + 0x804 + + + DstAddr + 0 + 31 + + + + + DMA_C7LLI + DMA_C7LLI. + 0x808 + + + LLI + 2 + 31 + + + + + DMA_C7Control + DMA_C7Control. + 0x80C + + + I + 31 + 31 + + + Prot + 28 + 30 + + + DI + 27 + 27 + + + SI + 26 + 26 + + + fix_cnt + 23 + 24 + + + DWidth + 21 + 23 + + + SWidth + 18 + 20 + + + dst_add_mode + 17 + 17 + + + DBSize + 15 + 16 + + + dst_min_mode + 14 + 14 + + + SBSize + 12 + 13 + + + TransferSize + 0 + 11 + + + + + DMA_C7Config + DMA_C7Config. + 0x810 + + + H + 18 + 18 + + + A + 17 + 17 + + + L + 16 + 16 + + + ITC + 15 + 15 + + + IE + 14 + 14 + + + FlowCntrl + 11 + 13 + + + DstPeripheral + 6 + 10 + + + SrcPeripheral + 1 + 5 + + + E + 0 + 0 + + + + + + + emac + emac. + 0x4000D000 + emac + 32 + read-write + + 0 + 0x1000 + registers + + + + MODE + MODE. + 0x0 + + + rsvd_23_18 + 18 + 23 + + + RMII_EN + 17 + 17 + + + RECSMALL + 16 + 16 + + + PAD + 15 + 15 + + + HUGEN + 14 + 14 + + + CRCEN + 13 + 13 + + + rsvd_12_11 + 11 + 12 + + + FULLD + 10 + 10 + + + rsvd_9_7 + 7 + 9 + + + IFG + 6 + 6 + + + PRO + 5 + 5 + + + rsvd_4 + 4 + 4 + + + BRO + 3 + 3 + + + NOPRE + 2 + 2 + + + TXEN + 1 + 1 + + + RXEN + 0 + 0 + + + + + INT_SOURCE + INT_SOURCE. + 0x4 + + + RXC + 6 + 6 + + + TXC + 5 + 5 + + + BUSY + 4 + 4 + + + RXE + 3 + 3 + + + RXB + 2 + 2 + + + TXE + 1 + 1 + + + TXB + 0 + 0 + + + + + INT_MASK + INT_MASK. + 0x8 + + + RXC_M + 6 + 6 + + + TXC_M + 5 + 5 + + + BUSY_M + 4 + 4 + + + RXE_M + 3 + 3 + + + RXB_M + 2 + 2 + + + TXE_M + 1 + 1 + + + TXB_M + 0 + 0 + + + + + IPGT + IPGT. + 0xC + + + IPGT + 0 + 6 + + + + + PACKETLEN + PACKETLEN. + 0x18 + + + MINFL + 16 + 31 + + + MAXFL + 0 + 15 + + + + + COLLCONFIG + COLLCONFIG. + 0x1C + + + MAXRET + 16 + 19 + + + COLLVALID + 0 + 5 + + + + + TX_BD_NUM + TX_BD_NUM. + 0x20 + + + RXBDPTR + 24 + 30 + + + TXBDPTR + 16 + 22 + + + TXBDNUM + 0 + 7 + + + + + MIIMODE + MIIMODE. + 0x28 + + + MIINOPRE + 8 + 8 + + + CLKDIV + 0 + 7 + + + + + MIICOMMAND + MIICOMMAND. + 0x2C + + + WCTRLDATA + 2 + 2 + + + RSTAT + 1 + 1 + + + SCANSTAT + 0 + 0 + + + + + MIIADDRESS + MIIADDRESS. + 0x30 + + + RGAD + 8 + 12 + + + FIAD + 0 + 4 + + + + + MIITX_DATA + MIITX_DATA. + 0x34 + + + CTRLDATA + 0 + 15 + + + + + MIIRX_DATA + MIIRX_DATA. + 0x38 + + + PRSD + 0 + 15 + + + + + MIISTATUS + MIISTATUS. + 0x3C + + + MIIM_BUSY + 1 + 1 + + + MIIM_LINKFAIL + 0 + 0 + + + + + MAC_ADDR0 + MAC_ADDR0. + 0x40 + + + MAC_B2 + 24 + 31 + + + MAC_B3 + 16 + 23 + + + MAC_B4 + 8 + 15 + + + MAC_B5 + 0 + 7 + + + + + MAC_ADDR1 + MAC_ADDR1. + 0x44 + + + MAC_B0 + 8 + 15 + + + MAC_B1 + 0 + 7 + + + + + HASH0_ADDR + HASH0_ADDR. + 0x48 + + + HASH0 + 0 + 31 + + + + + HASH1_ADDR + HASH1_ADDR. + 0x4C + + + HASH1 + 0 + 31 + + + + + TXCTRL + TXCTRL. + 0x50 + + + TXPAUSERQ + 16 + 16 + + + TXPAUSETV + 0 + 15 + + + + + + + usb + usb. + 0x4000D800 + usb + 32 + read-write + + 0 + 0x1000 + registers + + + + usb_config + usb_config. + 0x0 + + + sts_usb_ep0_sw_rdy + 28 + 28 + + + cr_usb_ep0_sw_rdy + 27 + 27 + + + cr_usb_ep0_sw_nack_out + 26 + 26 + + + cr_usb_ep0_sw_nack_in + 25 + 25 + + + cr_usb_ep0_sw_stall + 24 + 24 + + + cr_usb_ep0_sw_size + 16 + 23 + + + cr_usb_ep0_sw_addr + 9 + 15 + + + cr_usb_ep0_sw_ctrl + 8 + 8 + + + cr_usb_rom_dct_en + 4 + 4 + + + cr_usb_en + 0 + 0 + + + + + usb_lpm_config + usb_lpm_config. + 0x4 + + + sts_lpm + 31 + 31 + + + sts_lpm_attr + 20 + 30 + + + cr_lpm_resp + 2 + 3 + + + cr_lpm_resp_upd + 1 + 1 + + + cr_lpm_en + 0 + 0 + + + + + usb_resume_config + usb_resume_config. + 0x8 + + + cr_res_force + 31 + 31 + + + cr_res_trig + 12 + 12 + + + cr_res_width + 0 + 10 + + + + + usb_setup_data_0 + usb_setup_data_0. + 0x10 + + + sts_setup_data_b3 + 24 + 31 + + + sts_setup_data_b2 + 16 + 23 + + + sts_setup_data_b1 + 8 + 15 + + + sts_setup_data_b0 + 0 + 7 + + + + + usb_setup_data_1 + usb_setup_data_1. + 0x14 + + + sts_setup_data_b7 + 24 + 31 + + + sts_setup_data_b6 + 16 + 23 + + + sts_setup_data_b5 + 8 + 15 + + + sts_setup_data_b4 + 0 + 7 + + + + + usb_frame_no + usb_frame_no. + 0x18 + + + sts_ep_no + 16 + 19 + + + sts_pid + 12 + 15 + + + sts_frame_no + 0 + 10 + + + + + usb_error + usb_error. + 0x1C + + + crc16_err + 6 + 6 + + + crc5_err + 5 + 5 + + + pid_cks_err + 4 + 4 + + + pid_seq_err + 3 + 3 + + + ivld_ep_err + 2 + 2 + + + xfer_to_err + 1 + 1 + + + utmi_rx_err + 0 + 0 + + + + + usb_int_en + USB interrupt enable + 0x20 + + + cr_usb_err_en + 31 + 31 + + + cr_sof_3ms_en + 30 + 30 + + + cr_lpm_pkt_en + 29 + 29 + + + cr_lpm_wkup_en + 28 + 28 + + + rsvd_27_24 + 24 + 27 + + + cr_ep7_done_en + 23 + 23 + + + cr_ep7_cmd_en + 22 + 22 + + + cr_ep6_done_en + 21 + 21 + + + cr_ep6_cmd_en + 20 + 20 + + + cr_ep5_done_en + 19 + 19 + + + cr_ep5_cmd_en + 18 + 18 + + + cr_ep4_done_en + 17 + 17 + + + cr_ep4_cmd_en + 16 + 16 + + + cr_ep3_done_en + 15 + 15 + + + cr_ep3_cmd_en + 14 + 14 + + + cr_ep2_done_en + 13 + 13 + + + cr_ep2_cmd_en + 12 + 12 + + + cr_ep1_done_en + 11 + 11 + + + cr_ep1_cmd_en + 10 + 10 + + + cr_ep0_out_done_en + 9 + 9 + + + cr_ep0_out_cmd_en + 8 + 8 + + + cr_ep0_in_done_en + 7 + 7 + + + cr_ep0_in_cmd_en + 6 + 6 + + + cr_ep0_setup_done_en + 5 + 5 + + + cr_ep0_setup_cmd_en + 4 + 4 + + + cr_get_dct_cmd_en + 3 + 3 + + + cr_vbus_tgl_en + 2 + 2 + + + cr_usb_reset_en + 1 + 1 + + + cr_sof_en + 0 + 0 + + + + + usb_int_sts + USB interrupt status + 0x24 + + + usb_err_int + 31 + 31 + + + sof_3ms_int + 30 + 30 + + + lpm_pkt_int + 29 + 29 + + + lpm_wkup_int + 28 + 28 + + + rsvd_27_24 + 24 + 27 + + + ep7_done_int + 23 + 23 + + + ep7_cmd_int + 22 + 22 + + + ep6_done_int + 21 + 21 + + + ep6_cmd_int + 20 + 20 + + + ep5_done_int + 19 + 19 + + + ep5_cmd_int + 18 + 18 + + + ep4_done_int + 17 + 17 + + + ep4_cmd_int + 16 + 16 + + + ep3_done_int + 15 + 15 + + + ep3_cmd_int + 14 + 14 + + + ep2_done_int + 13 + 13 + + + ep2_cmd_int + 12 + 12 + + + ep1_done_int + 11 + 11 + + + ep1_cmd_int + 10 + 10 + + + ep0_out_done_int + 9 + 9 + + + ep0_out_cmd_int + 8 + 8 + + + ep0_in_done_int + 7 + 7 + + + ep0_in_cmd_int + 6 + 6 + + + ep0_setup_done_int + 5 + 5 + + + ep0_setup_cmd_int + 4 + 4 + + + get_dct_cmd_int + 3 + 3 + + + vbus_tgl_int + 2 + 2 + + + usb_reset_int + 1 + 1 + + + sof_int + 0 + 0 + + + + + usb_int_mask + USB interrupt mask + 0x28 + + + cr_usb_err_mask + 31 + 31 + + + cr_sof_3ms_mask + 30 + 30 + + + cr_lpm_pkt_mask + 29 + 29 + + + cr_lpm_wkup_mask + 28 + 28 + + + rsvd_27_24 + 24 + 27 + + + cr_ep7_done_mask + 23 + 23 + + + cr_ep7_cmd_mask + 22 + 22 + + + cr_ep6_done_mask + 21 + 21 + + + cr_ep6_cmd_mask + 20 + 20 + + + cr_ep5_done_mask + 19 + 19 + + + cr_ep5_cmd_mask + 18 + 18 + + + cr_ep4_done_mask + 17 + 17 + + + cr_ep4_cmd_mask + 16 + 16 + + + cr_ep3_done_mask + 15 + 15 + + + cr_ep3_cmd_mask + 14 + 14 + + + cr_ep2_done_mask + 13 + 13 + + + cr_ep2_cmd_mask + 12 + 12 + + + cr_ep1_done_mask + 11 + 11 + + + cr_ep1_cmd_mask + 10 + 10 + + + cr_ep0_out_done_mask + 9 + 9 + + + cr_ep0_out_cmd_mask + 8 + 8 + + + cr_ep0_in_done_mask + 7 + 7 + + + cr_ep0_in_cmd_mask + 6 + 6 + + + cr_ep0_setup_done_mask + 5 + 5 + + + cr_ep0_setup_cmd_mask + 4 + 4 + + + cr_get_dct_cmd_mask + 3 + 3 + + + cr_vbus_tgl_mask + 2 + 2 + + + cr_usb_reset_mask + 1 + 1 + + + cr_sof_mask + 0 + 0 + + + + + usb_int_clear + USB interrupt clear + 0x2C + + + cr_usb_err_clr + 31 + 31 + + + cr_sof_3ms_clr + 30 + 30 + + + cr_lpm_pkt_clr + 29 + 29 + + + cr_lpm_wkup_clr + 28 + 28 + + + rsvd_27_24 + 24 + 27 + + + cr_ep7_done_clr + 23 + 23 + + + cr_ep7_cmd_clr + 22 + 22 + + + cr_ep6_done_clr + 21 + 21 + + + cr_ep6_cmd_clr + 20 + 20 + + + cr_ep5_done_clr + 19 + 19 + + + cr_ep5_cmd_clr + 18 + 18 + + + cr_ep4_done_clr + 17 + 17 + + + cr_ep4_cmd_clr + 16 + 16 + + + cr_ep3_done_clr + 15 + 15 + + + cr_ep3_cmd_clr + 14 + 14 + + + cr_ep2_done_clr + 13 + 13 + + + cr_ep2_cmd_clr + 12 + 12 + + + cr_ep1_done_clr + 11 + 11 + + + cr_ep1_cmd_clr + 10 + 10 + + + cr_ep0_out_done_clr + 9 + 9 + + + cr_ep0_out_cmd_clr + 8 + 8 + + + cr_ep0_in_done_clr + 7 + 7 + + + cr_ep0_in_cmd_clr + 6 + 6 + + + cr_ep0_setup_done_clr + 5 + 5 + + + cr_ep0_setup_cmd_clr + 4 + 4 + + + cr_get_dct_cmd_clr + 3 + 3 + + + cr_vbus_tgl_clr + 2 + 2 + + + cr_usb_reset_clr + 1 + 1 + + + cr_sof_clr + 0 + 0 + + + + + ep1_config + ep1_config. + 0x40 + + + sts_ep1_rdy + 19 + 19 + + + cr_ep1_rdy + 18 + 18 + + + cr_ep1_nack + 17 + 17 + + + cr_ep1_stall + 16 + 16 + + + cr_ep1_type + 13 + 15 + + + cr_ep1_dir + 11 + 12 + + + cr_ep1_size + 0 + 10 + + + + + ep2_config + ep2_config. + 0x44 + + + sts_ep2_rdy + 19 + 19 + + + cr_ep2_rdy + 18 + 18 + + + cr_ep2_nack + 17 + 17 + + + cr_ep2_stall + 16 + 16 + + + cr_ep2_type + 13 + 15 + + + cr_ep2_dir + 11 + 12 + + + cr_ep2_size + 0 + 10 + + + + + ep3_config + ep3_config. + 0x48 + + + sts_ep3_rdy + 19 + 19 + + + cr_ep3_rdy + 18 + 18 + + + cr_ep3_nack + 17 + 17 + + + cr_ep3_stall + 16 + 16 + + + cr_ep3_type + 13 + 15 + + + cr_ep3_dir + 11 + 12 + + + cr_ep3_size + 0 + 10 + + + + + ep4_config + ep4_config. + 0x4C + + + sts_ep4_rdy + 19 + 19 + + + cr_ep4_rdy + 18 + 18 + + + cr_ep4_nack + 17 + 17 + + + cr_ep4_stall + 16 + 16 + + + cr_ep4_type + 13 + 15 + + + cr_ep4_dir + 11 + 12 + + + cr_ep4_size + 0 + 10 + + + + + ep5_config + ep5_config. + 0x50 + + + sts_ep5_rdy + 19 + 19 + + + cr_ep5_rdy + 18 + 18 + + + cr_ep5_nack + 17 + 17 + + + cr_ep5_stall + 16 + 16 + + + cr_ep5_type + 13 + 15 + + + cr_ep5_dir + 11 + 12 + + + cr_ep5_size + 0 + 10 + + + + + ep6_config + ep6_config. + 0x54 + + + sts_ep6_rdy + 19 + 19 + + + cr_ep6_rdy + 18 + 18 + + + cr_ep6_nack + 17 + 17 + + + cr_ep6_stall + 16 + 16 + + + cr_ep6_type + 13 + 15 + + + cr_ep6_dir + 11 + 12 + + + cr_ep6_size + 0 + 10 + + + + + ep7_config + ep7_config. + 0x58 + + + sts_ep7_rdy + 19 + 19 + + + cr_ep7_rdy + 18 + 18 + + + cr_ep7_nack + 17 + 17 + + + cr_ep7_stall + 16 + 16 + + + cr_ep7_type + 13 + 15 + + + cr_ep7_dir + 11 + 12 + + + cr_ep7_size + 0 + 10 + + + + + ep0_fifo_config + ep0_fifo_config. + 0x100 + + + ep0_rx_fifo_underflow + 7 + 7 + + + ep0_rx_fifo_overflow + 6 + 6 + + + ep0_tx_fifo_underflow + 5 + 5 + + + ep0_tx_fifo_overflow + 4 + 4 + + + ep0_rx_fifo_clr + 3 + 3 + + + ep0_tx_fifo_clr + 2 + 2 + + + ep0_dma_rx_en + 1 + 1 + + + ep0_dma_tx_en + 0 + 0 + + + + + ep0_fifo_status + ep0_fifo_status. + 0x104 + + + ep0_rx_fifo_full + 31 + 31 + + + ep0_rx_fifo_empty + 30 + 30 + + + ep0_rx_fifo_cnt + 16 + 22 + + + ep0_tx_fifo_full + 15 + 15 + + + ep0_tx_fifo_empty + 14 + 14 + + + ep0_tx_fifo_cnt + 0 + 6 + + + + + ep0_tx_fifo_wdata + ep0_tx_fifo_wdata. + 0x108 + + + ep0_tx_fifo_wdata + 0 + 7 + + + + + ep0_rx_fifo_rdata + ep0_rx_fifo_rdata. + 0x10C + + + ep0_rx_fifo_rdata + 0 + 7 + + + + + ep1_fifo_config + ep1_fifo_config. + 0x110 + + + ep1_rx_fifo_underflow + 7 + 7 + + + ep1_rx_fifo_overflow + 6 + 6 + + + ep1_tx_fifo_underflow + 5 + 5 + + + ep1_tx_fifo_overflow + 4 + 4 + + + ep1_rx_fifo_clr + 3 + 3 + + + ep1_tx_fifo_clr + 2 + 2 + + + ep1_dma_rx_en + 1 + 1 + + + ep1_dma_tx_en + 0 + 0 + + + + + ep1_fifo_status + ep1_fifo_status. + 0x114 + + + ep1_rx_fifo_full + 31 + 31 + + + ep1_rx_fifo_empty + 30 + 30 + + + ep1_rx_fifo_cnt + 16 + 22 + + + ep1_tx_fifo_full + 15 + 15 + + + ep1_tx_fifo_empty + 14 + 14 + + + ep1_tx_fifo_cnt + 0 + 6 + + + + + ep1_tx_fifo_wdata + ep1_tx_fifo_wdata. + 0x118 + + + ep1_tx_fifo_wdata + 0 + 7 + + + + + ep1_rx_fifo_rdata + ep1_rx_fifo_rdata. + 0x11C + + + ep1_rx_fifo_rdata + 0 + 7 + + + + + ep2_fifo_config + ep2_fifo_config. + 0x120 + + + ep2_rx_fifo_underflow + 7 + 7 + + + ep2_rx_fifo_overflow + 6 + 6 + + + ep2_tx_fifo_underflow + 5 + 5 + + + ep2_tx_fifo_overflow + 4 + 4 + + + ep2_rx_fifo_clr + 3 + 3 + + + ep2_tx_fifo_clr + 2 + 2 + + + ep2_dma_rx_en + 1 + 1 + + + ep2_dma_tx_en + 0 + 0 + + + + + ep2_fifo_status + ep2_fifo_status. + 0x124 + + + ep2_rx_fifo_full + 31 + 31 + + + ep2_rx_fifo_empty + 30 + 30 + + + ep2_rx_fifo_cnt + 16 + 22 + + + ep2_tx_fifo_full + 15 + 15 + + + ep2_tx_fifo_empty + 14 + 14 + + + ep2_tx_fifo_cnt + 0 + 6 + + + + + ep2_tx_fifo_wdata + ep2_tx_fifo_wdata. + 0x128 + + + ep2_tx_fifo_wdata + 0 + 7 + + + + + ep2_rx_fifo_rdata + ep2_rx_fifo_rdata. + 0x12C + + + ep2_rx_fifo_rdata + 0 + 7 + + + + + ep3_fifo_config + ep3_fifo_config. + 0x130 + + + ep3_rx_fifo_underflow + 7 + 7 + + + ep3_rx_fifo_overflow + 6 + 6 + + + ep3_tx_fifo_underflow + 5 + 5 + + + ep3_tx_fifo_overflow + 4 + 4 + + + ep3_rx_fifo_clr + 3 + 3 + + + ep3_tx_fifo_clr + 2 + 2 + + + ep3_dma_rx_en + 1 + 1 + + + ep3_dma_tx_en + 0 + 0 + + + + + ep3_fifo_status + ep3_fifo_status. + 0x134 + + + ep3_rx_fifo_full + 31 + 31 + + + ep3_rx_fifo_empty + 30 + 30 + + + ep3_rx_fifo_cnt + 16 + 22 + + + ep3_tx_fifo_full + 15 + 15 + + + ep3_tx_fifo_empty + 14 + 14 + + + ep3_tx_fifo_cnt + 0 + 6 + + + + + ep3_tx_fifo_wdata + ep3_tx_fifo_wdata. + 0x138 + + + ep3_tx_fifo_wdata + 0 + 7 + + + + + ep3_rx_fifo_rdata + ep3_rx_fifo_rdata. + 0x13C + + + ep3_rx_fifo_rdata + 0 + 7 + + + + + ep4_fifo_config + ep4_fifo_config. + 0x140 + + + ep4_rx_fifo_underflow + 7 + 7 + + + ep4_rx_fifo_overflow + 6 + 6 + + + ep4_tx_fifo_underflow + 5 + 5 + + + ep4_tx_fifo_overflow + 4 + 4 + + + ep4_rx_fifo_clr + 3 + 3 + + + ep4_tx_fifo_clr + 2 + 2 + + + ep4_dma_rx_en + 1 + 1 + + + ep4_dma_tx_en + 0 + 0 + + + + + ep4_fifo_status + ep4_fifo_status. + 0x144 + + + ep4_rx_fifo_full + 31 + 31 + + + ep4_rx_fifo_empty + 30 + 30 + + + ep4_rx_fifo_cnt + 16 + 22 + + + ep4_tx_fifo_full + 15 + 15 + + + ep4_tx_fifo_empty + 14 + 14 + + + ep4_tx_fifo_cnt + 0 + 6 + + + + + ep4_tx_fifo_wdata + ep4_tx_fifo_wdata. + 0x148 + + + ep4_tx_fifo_wdata + 0 + 7 + + + + + ep4_rx_fifo_rdata + ep4_rx_fifo_rdata. + 0x14C + + + ep4_rx_fifo_rdata + 0 + 7 + + + + + ep5_fifo_config + ep5_fifo_config. + 0x150 + + + ep5_rx_fifo_underflow + 7 + 7 + + + ep5_rx_fifo_overflow + 6 + 6 + + + ep5_tx_fifo_underflow + 5 + 5 + + + ep5_tx_fifo_overflow + 4 + 4 + + + ep5_rx_fifo_clr + 3 + 3 + + + ep5_tx_fifo_clr + 2 + 2 + + + ep5_dma_rx_en + 1 + 1 + + + ep5_dma_tx_en + 0 + 0 + + + + + ep5_fifo_status + ep5_fifo_status. + 0x154 + + + ep5_rx_fifo_full + 31 + 31 + + + ep5_rx_fifo_empty + 30 + 30 + + + ep5_rx_fifo_cnt + 16 + 22 + + + ep5_tx_fifo_full + 15 + 15 + + + ep5_tx_fifo_empty + 14 + 14 + + + ep5_tx_fifo_cnt + 0 + 6 + + + + + ep5_tx_fifo_wdata + ep5_tx_fifo_wdata. + 0x158 + + + ep5_tx_fifo_wdata + 0 + 7 + + + + + ep5_rx_fifo_rdata + ep5_rx_fifo_rdata. + 0x15C + + + ep5_rx_fifo_rdata + 0 + 7 + + + + + ep6_fifo_config + ep6_fifo_config. + 0x160 + + + ep6_rx_fifo_underflow + 7 + 7 + + + ep6_rx_fifo_overflow + 6 + 6 + + + ep6_tx_fifo_underflow + 5 + 5 + + + ep6_tx_fifo_overflow + 4 + 4 + + + ep6_rx_fifo_clr + 3 + 3 + + + ep6_tx_fifo_clr + 2 + 2 + + + ep6_dma_rx_en + 1 + 1 + + + ep6_dma_tx_en + 0 + 0 + + + + + ep6_fifo_status + ep6_fifo_status. + 0x164 + + + ep6_rx_fifo_full + 31 + 31 + + + ep6_rx_fifo_empty + 30 + 30 + + + ep6_rx_fifo_cnt + 16 + 22 + + + ep6_tx_fifo_full + 15 + 15 + + + ep6_tx_fifo_empty + 14 + 14 + + + ep6_tx_fifo_cnt + 0 + 6 + + + + + ep6_tx_fifo_wdata + ep6_tx_fifo_wdata. + 0x168 + + + ep6_tx_fifo_wdata + 0 + 7 + + + + + ep6_rx_fifo_rdata + ep6_rx_fifo_rdata. + 0x16C + + + ep6_rx_fifo_rdata + 0 + 7 + + + + + ep7_fifo_config + ep7_fifo_config. + 0x170 + + + ep7_rx_fifo_underflow + 7 + 7 + + + ep7_rx_fifo_overflow + 6 + 6 + + + ep7_tx_fifo_underflow + 5 + 5 + + + ep7_tx_fifo_overflow + 4 + 4 + + + ep7_rx_fifo_clr + 3 + 3 + + + ep7_tx_fifo_clr + 2 + 2 + + + ep7_dma_rx_en + 1 + 1 + + + ep7_dma_tx_en + 0 + 0 + + + + + ep7_fifo_status + ep7_fifo_status. + 0x174 + + + ep7_rx_fifo_full + 31 + 31 + + + ep7_rx_fifo_empty + 30 + 30 + + + ep7_rx_fifo_cnt + 16 + 22 + + + ep7_tx_fifo_full + 15 + 15 + + + ep7_tx_fifo_empty + 14 + 14 + + + ep7_tx_fifo_cnt + 0 + 6 + + + + + ep7_tx_fifo_wdata + ep7_tx_fifo_wdata. + 0x178 + + + ep7_tx_fifo_wdata + 0 + 7 + + + + + ep7_rx_fifo_rdata + ep7_rx_fifo_rdata. + 0x17C + + + ep7_rx_fifo_rdata + 0 + 7 + + + + + rsvd_0 + rsvd_0. + 0x1F0 + + + rsvd_0 + 0 + 31 + + + + + rsvd_1 + rsvd_1. + 0x1F4 + + + rsvd_1 + 0 + 31 + + + + + xcvr_if_config + xcvr_if_config. + 0x1FC + + + sts_vbus_det + 31 + 31 + + + cr_xcvr_om_rx_dn + 11 + 11 + + + cr_xcvr_om_rx_dp + 10 + 10 + + + cr_xcvr_om_rx_d + 9 + 9 + + + cr_xcvr_om_rx_sel + 8 + 8 + + + cr_xcvr_force_rx_dn + 7 + 7 + + + cr_xcvr_force_rx_dp + 6 + 6 + + + cr_xcvr_force_rx_d + 5 + 5 + + + cr_xcvr_force_rx_en + 4 + 4 + + + cr_xcvr_force_tx_dn + 3 + 3 + + + cr_xcvr_force_tx_dp + 2 + 2 + + + cr_xcvr_force_tx_oe + 1 + 1 + + + cr_xcvr_force_tx_en + 0 + 0 + + + + + + + pds + pds. + 0x4000E000 + pds + 32 + read-write + + 0 + 0x1000 + registers + + + + PDS_CTL + PDS_CTL. + 0x0 + + + cr_pds_ctrl_pll + 30 + 31 + + + cr_pds_ctrl_rf + 28 + 29 + + + cr_pds_ldo_vol + 24 + 27 + + + cr_pds_force_ram_clk_en + 23 + 23 + + + cr_pds_pd_ldo11 + 22 + 22 + + + cr_np_wfi_mask + 21 + 21 + + + cr_pds_ram_lp_with_clk_en + 19 + 19 + + + cr_pds_ldo_vsel_en + 18 + 18 + + + cr_pds_rc32m_off_dis + 17 + 17 + + + cr_pds_rst_soc_en + 16 + 16 + + + cr_pds_soc_enb_force_on + 15 + 15 + + + cr_pds_pd_xtal + 14 + 14 + + + cr_pds_pwr_off + 13 + 13 + + + cr_pds_wait_xtal_rdy + 12 + 12 + + + cr_pds_iso_en + 11 + 11 + + + cr_sw_pu_flash + 10 + 10 + + + cr_pds_mem_stby + 9 + 9 + + + cr_pds_gate_clk + 8 + 8 + + + cr_pds_ctrl_pu_flash + 7 + 7 + + + cr_pds_ctrl_gpio_ie_pu_pd + 6 + 6 + + + cr_pds_pd_bg_sys + 5 + 5 + + + cr_pds_pd_dcdc18 + 4 + 4 + + + cr_wifi_pds_save_state + 3 + 3 + + + cr_xtal_force_off + 2 + 2 + + + cr_sleep_forever + 1 + 1 + + + pds_start_ps + 0 + 0 + + + + + PDS_TIME1 + PDS_TIME1. + 0x4 + + + cr_sleep_duration + 0 + 31 + + + + + PDS_INT + PDS_INT. + 0xC + + + ro_pds_wakeup_event + 24 + 31 + + + cr_pds_wakeup_src_en + 16 + 23 + + + cr_pds_int_clr + 15 + 15 + + + cr_pds_pll_done_int_mask + 11 + 11 + + + cr_pds_rf_done_int_mask + 10 + 10 + + + cr_pds_wake_int_mask + 8 + 8 + + + pds_clr_reset_event + 7 + 7 + + + pds_reset_event + 4 + 6 + + + ro_pds_pll_done_int + 3 + 3 + + + ro_pds_rf_done_int + 2 + 2 + + + ro_pds_wake_int + 0 + 0 + + + + + PDS_CTL2 + PDS_CTL2. + 0x10 + + + cr_pds_force_usb_gate_clk + 19 + 19 + + + cr_pds_force_bz_gate_clk + 18 + 18 + + + cr_pds_force_np_gate_clk + 16 + 16 + + + cr_pds_force_usb_mem_stby + 15 + 15 + + + cr_pds_force_bz_mem_stby + 14 + 14 + + + cr_pds_force_np_mem_stby + 12 + 12 + + + cr_pds_force_usb_pds_rst + 11 + 11 + + + cr_pds_force_bz_pds_rst + 10 + 10 + + + cr_pds_force_np_pds_rst + 8 + 8 + + + cr_pds_force_usb_iso_en + 7 + 7 + + + cr_pds_force_bz_iso_en + 6 + 6 + + + cr_pds_force_np_iso_en + 4 + 4 + + + cr_pds_force_usb_pwr_off + 3 + 3 + + + cr_pds_force_bz_pwr_off + 2 + 2 + + + cr_pds_force_np_pwr_off + 0 + 0 + + + + + PDS_CTL3 + PDS_CTL3. + 0x14 + + + cr_pds_misc_iso_en + 30 + 30 + + + cr_pds_usb_iso_en + 29 + 29 + + + cr_pds_ble_iso_en + 28 + 28 + + + cr_pds_bz_iso_en + 27 + 27 + + + cr_pds_np_iso_en + 24 + 24 + + + cr_pds_force_ble_gate_clk + 14 + 14 + + + cr_pds_force_misc_gate_clk + 13 + 13 + + + cr_pds_force_ble_mem_stby + 11 + 11 + + + cr_pds_force_misc_mem_stby + 10 + 10 + + + cr_pds_force_ble_pds_rst + 8 + 8 + + + cr_pds_force_misc_pds_rst + 7 + 7 + + + cr_pds_force_ble_iso_en + 5 + 5 + + + cr_pds_force_ble_pwr_off + 2 + 2 + + + cr_pds_force_misc_pwr_off + 1 + 1 + + + + + PDS_CTL4 + PDS_CTL4. + 0x18 + + + cr_pds_misc_dig_pwr_off + 31 + 31 + + + cr_pds_misc_ana_pwr_off + 30 + 30 + + + cr_pds_misc_gate_clk + 27 + 27 + + + cr_pds_misc_mem_stby + 26 + 26 + + + cr_pds_misc_reset + 25 + 25 + + + cr_pds_misc_pwr_off + 24 + 24 + + + cr_pds_usb_gate_clk + 23 + 23 + + + cr_pds_usb_mem_stby + 22 + 22 + + + cr_pds_usb_reset + 21 + 21 + + + cr_pds_usb_pwr_off + 20 + 20 + + + cr_pds_ble_gate_clk + 19 + 19 + + + cr_pds_ble_mem_stby + 18 + 18 + + + cr_pds_ble_reset + 17 + 17 + + + cr_pds_ble_pwr_off + 16 + 16 + + + cr_pds_bz_gate_clk + 15 + 15 + + + cr_pds_bz_mem_stby + 14 + 14 + + + cr_pds_bz_reset + 13 + 13 + + + cr_pds_bz_pwr_off + 12 + 12 + + + cr_pds_np_gate_clk + 3 + 3 + + + cr_pds_np_mem_stby + 2 + 2 + + + cr_pds_np_reset + 1 + 1 + + + cr_pds_np_pwr_off + 0 + 0 + + + + + pds_stat + pds_stat. + 0x1C + + + ro_pds_pll_state + 16 + 17 + + + ro_pds_rf_state + 8 + 11 + + + ro_pds_state + 0 + 3 + + + + + pds_ram1 + pds_ram1. + 0x20 + + + cr_pds_ram_pgen + 8 + 11 + + + cr_pds_ram_ret2n + 4 + 7 + + + cr_pds_ram_ret1n + 0 + 3 + + + + + pds_gpio_set_pu_pd + pds_gpio_set_pu_pd. + 0x30 + + + cr_pds_gpio_28_23_pu + 24 + 29 + + + cr_pds_gpio_28_23_pd + 16 + 21 + + + cr_pds_gpio_22_17_pu + 8 + 13 + + + cr_pds_gpio_22_17_pd + 0 + 5 + + + + + pds_gpio_int + pds_gpio_int. + 0x40 + + + pds_gpio_int_select + 8 + 10 + + + pds_gpio_int_mode + 4 + 6 + + + pds_gpio_int_clr + 2 + 2 + + + pds_gpio_int_stat + 1 + 1 + + + pds_gpio_int_mask + 0 + 0 + + + + + rc32m_ctrl0 + rc32m_ctrl0. + 0x300 + + + rc32m_code_fr_ext + 22 + 29 + + + rc32m_pd + 21 + 21 + + + rc32m_cal_en + 20 + 20 + + + rc32m_ext_code_en + 19 + 19 + + + rc32m_refclk_half + 18 + 18 + + + rc32m_allow_cal + 17 + 17 + + + rc32m_dig_code_fr_cal + 6 + 13 + + + rc32m_cal_precharge + 5 + 5 + + + rc32m_cal_div + 3 + 4 + + + rc32m_cal_inprogress + 2 + 2 + + + rc32m_rdy + 1 + 1 + + + rc32m_cal_done + 0 + 0 + + + + + rc32m_ctrl1 + rc32m_ctrl1. + 0x304 + + + rc32m_reserved + 24 + 31 + + + rc32m_clk_force_on + 4 + 4 + + + rc32m_clk_inv + 3 + 3 + + + rc32m_clk_soft_rst + 2 + 2 + + + rc32m_soft_rst + 1 + 1 + + + rc32m_test_en + 0 + 0 + + + + + pu_rst_clkpll + pu_rst_clkpll. + 0x400 + + + pu_clkpll + 10 + 10 + + + pu_clkpll_sfreg + 9 + 9 + + + clkpll_pu_cp + 8 + 8 + + + clkpll_pu_pfd + 7 + 7 + + + clkpll_pu_clamp_op + 6 + 6 + + + clkpll_pu_fbdv + 5 + 5 + + + clkpll_pu_postdiv + 4 + 4 + + + clkpll_reset_refdiv + 3 + 3 + + + clkpll_reset_fbdv + 2 + 2 + + + clkpll_reset_postdiv + 1 + 1 + + + clkpll_sdm_reset + 0 + 0 + + + + + clkpll_top_ctrl + clkpll_top_ctrl. + 0x404 + + + clkpll_resv + 24 + 25 + + + clkpll_vg11_sel + 20 + 21 + + + clkpll_refclk_sel + 16 + 16 + + + clkpll_xtal_rc32m_sel + 12 + 12 + + + clkpll_refdiv_ratio + 8 + 11 + + + clkpll_postdiv + 0 + 6 + + + + + clkpll_cp + clkpll_cp. + 0x408 + + + clkpll_cp_opamp_en + 10 + 10 + + + clkpll_cp_startup_en + 9 + 9 + + + clkpll_int_frac_sw + 8 + 8 + + + clkpll_icp_1u + 6 + 7 + + + clkpll_icp_5u + 4 + 5 + + + clkpll_sel_cp_bias + 0 + 0 + + + + + clkpll_rz + clkpll_rz. + 0x40C + + + clkpll_rz + 16 + 18 + + + clkpll_cz + 14 + 15 + + + clkpll_c3 + 12 + 13 + + + clkpll_r4_short + 8 + 8 + + + clkpll_r4 + 4 + 5 + + + clkpll_c4_en + 0 + 0 + + + + + clkpll_fbdv + clkpll_fbdv. + 0x410 + + + clkpll_sel_fb_clk + 2 + 3 + + + clkpll_sel_sample_clk + 0 + 1 + + + + + clkpll_vco + clkpll_vco. + 0x414 + + + clkpll_shrtr + 3 + 3 + + + clkpll_vco_speed + 0 + 2 + + + + + clkpll_sdm + clkpll_sdm. + 0x418 + + + clkpll_sdm_bypass + 29 + 29 + + + clkpll_sdm_flag + 28 + 28 + + + clkpll_dither_sel + 24 + 25 + + + clkpll_sdmin + 0 + 23 + + + + + clkpll_output_en + clkpll_output_en. + 0x41C + + + clkpll_en_div2_480m + 9 + 9 + + + clkpll_en_32m + 8 + 8 + + + clkpll_en_48m + 7 + 7 + + + clkpll_en_80m + 6 + 6 + + + clkpll_en_96m + 5 + 5 + + + clkpll_en_120m + 4 + 4 + + + clkpll_en_160m + 3 + 3 + + + clkpll_en_192m + 2 + 2 + + + clkpll_en_240m + 1 + 1 + + + clkpll_en_480m + 0 + 0 + + + + + clkpll_test_enable + clkpll_test_enable. + 0x420 + + + clkpll_dc_tp_out_en + 8 + 8 + + + ten_clkpll + 7 + 7 + + + ten_clkpll_sfreg + 6 + 6 + + + dten_clkpll_fin + 5 + 5 + + + dten_clkpll_fref + 4 + 4 + + + dten_clkpll_fsdm + 3 + 3 + + + dten_clk32M + 2 + 2 + + + dten_clk96M + 1 + 1 + + + dten_clkpll_postdiv_clk + 0 + 0 + + + + + + + HBN + HBN. + 0x4000F000 + HBN + 32 + read-write + + 0 + 0x1000 + registers + + + + HBN_CTL + HBN_CTL. + 0x0 + + + hbn_state + 28 + 31 + + + sram_slp + 27 + 27 + + + sram_slp_option + 26 + 26 + + + pwr_on_option + 25 + 25 + + + rtc_dly_option + 24 + 24 + + + pu_dcdc18_aon + 23 + 23 + + + hbn_ldo11_aon_vout_sel + 19 + 22 + + + hbn_ldo11_rt_vout_sel + 15 + 18 + + + hbn_dis_pwr_off_ldo11_rt + 14 + 14 + + + hbn_dis_pwr_off_ldo11 + 13 + 13 + + + sw_rst + 12 + 12 + + + pwrdn_hbn_rtc + 11 + 11 + + + pwrdn_hbn_core + 9 + 9 + + + trap_mode + 8 + 8 + + + hbn_mode + 7 + 7 + + + rtc_ctl + 0 + 6 + + + + + HBN_TIME_L + HBN_TIME_L. + 0x4 + + + hbn_time_l + 0 + 31 + + + + + HBN_TIME_H + HBN_TIME_H. + 0x8 + + + hbn_time_h + 0 + 7 + + + + + RTC_TIME_L + RTC_TIME_L. + 0xC + + + rtc_time_latch_l + 0 + 31 + + + + + RTC_TIME_H + RTC_TIME_H. + 0x10 + + + rtc_time_latch + 31 + 31 + + + rtc_time_latch_h + 0 + 7 + + + + + HBN_IRQ_MODE + HBN_IRQ_MODE. + 0x14 + + + pin_wakeup_en + 27 + 27 + + + pin_wakeup_sel + 24 + 26 + + + irq_acomp1_en + 22 + 23 + + + irq_acomp0_en + 20 + 21 + + + irq_bor_en + 18 + 18 + + + reg_en_hw_pu_pd + 16 + 16 + + + reg_aon_pad_ie_smt + 8 + 12 + + + hbn_pin_wakeup_mask + 3 + 7 + + + hbn_pin_wakeup_mode + 0 + 2 + + + + + HBN_IRQ_STAT + HBN_IRQ_STAT. + 0x18 + + + irq_stat + 0 + 31 + + + + + HBN_IRQ_CLR + HBN_IRQ_CLR. + 0x1C + + + irq_clr + 0 + 31 + + + + + HBN_PIR_CFG + HBN_PIR_CFG. + 0x20 + + + gpadc_nosync + 9 + 9 + + + gpadc_cgen + 8 + 8 + + + pir_en + 7 + 7 + + + pir_dis + 4 + 5 + + + pir_lpf_sel + 2 + 2 + + + pir_hpf_sel + 0 + 1 + + + + + HBN_PIR_VTH + HBN_PIR_VTH. + 0x24 + + + pir_vth + 0 + 13 + + + + + HBN_PIR_INTERVAL + HBN_PIR_INTERVAL. + 0x28 + + + pir_interval + 0 + 11 + + + + + HBN_MISC + HBN_MISC. + 0x2C + + + hbn_flash_pulldown_aon + 24 + 29 + + + hbn_flash_pullup_aon + 16 + 21 + + + r_bor_out + 3 + 3 + + + pu_bor + 2 + 2 + + + bor_vth + 1 + 1 + + + bor_sel + 0 + 0 + + + + + HBN_GLB + HBN_GLB. + 0x30 + + + sw_ldo11_aon_vout_sel + 28 + 31 + + + sw_ldo11_rt_vout_sel + 24 + 27 + + + sw_ldo11soc_vout_sel_aon + 16 + 19 + + + hbn_clear_reset_event + 13 + 13 + + + hbn_reset_event + 8 + 12 + + + ldo11_rt_iload_sel + 6 + 7 + + + hbn_pu_rc32k + 5 + 5 + + + hbn_f32k_sel + 3 + 4 + + + hbn_uart_clk_sel + 2 + 2 + + + hbn_root_clk_sel + 0 + 1 + + + + + HBN_SRAM + HBN_SRAM. + 0x34 + + + retram_slp + 7 + 7 + + + retram_ret + 6 + 6 + + + retram_emaw + 3 + 4 + + + retram_ema + 0 + 2 + + + + + HBN_RSV0 + HBN_RSV0. + 0x100 + + + HBN_RSV0 + 0 + 31 + + + + + HBN_RSV1 + HBN_RSV1. + 0x104 + + + HBN_RSV1 + 0 + 31 + + + + + HBN_RSV2 + HBN_RSV2. + 0x108 + + + HBN_RSV2 + 0 + 31 + + + + + HBN_RSV3 + HBN_RSV3. + 0x10C + + + HBN_RSV3 + 0 + 31 + + + + + rc32k_ctrl0 + rc32k_ctrl0. + 0x200 + + + rc32k_code_fr_ext + 22 + 31 + + + rc32k_cal_en + 20 + 20 + + + rc32k_ext_code_en + 19 + 19 + + + rc32k_allow_cal + 18 + 18 + + + rc32k_vref_dly + 16 + 17 + + + rc32k_dig_code_fr_cal + 6 + 15 + + + rc32k_cal_precharge + 5 + 5 + + + rc32k_cal_div + 3 + 4 + + + rc32k_cal_inprogress + 2 + 2 + + + rc32k_rdy + 1 + 1 + + + rc32k_cal_done + 0 + 0 + + + + + xtal32k + xtal32k. + 0x204 + + + pu_xtal32k + 19 + 19 + + + pu_xtal32k_buf + 18 + 18 + + + xtal32k_ac_cap_short + 17 + 17 + + + xtal32k_capbank + 11 + 16 + + + xtal32k_inv_stre + 9 + 10 + + + xtal32k_otf_short + 8 + 8 + + + xtal32k_outbuf_stre + 7 + 7 + + + xtal32k_reg + 5 + 6 + + + xtal32k_amp_ctrl + 3 + 4 + + + xtal32k_ext_sel + 2 + 2 + + + xtal32k_lowv_en + 1 + 1 + + + xtal32k_hiz_en + 0 + 0 + + + + + + + AON + AON. + + AON + 32 + read-write + + 0 + 0x1000 + registers + + + + aon + aon. + 0x800 + + + sw_pu_ldo11_rt + 22 + 22 + + + ldo11_rt_pulldown_sel + 21 + 21 + + + ldo11_rt_pulldown + 20 + 20 + + + pu_aon_dc_tbuf + 12 + 12 + + + aon_resv + 0 + 7 + + + + + aon_common + aon_common. + 0x804 + + + ten_cip_misc_aon + 20 + 20 + + + ten_mbg_aon + 19 + 19 + + + dten_xtal_aon + 18 + 18 + + + ten_xtal_aon + 17 + 17 + + + ten_ldo15rf_aon + 16 + 16 + + + ten_bg_sys_aon + 12 + 12 + + + ten_dcdc18_1_aon + 11 + 11 + + + ten_dcdc18_0_aon + 10 + 10 + + + ten_ldo11soc_aon + 9 + 9 + + + ten_vddcore_aon + 8 + 8 + + + ten_xtal32k + 6 + 6 + + + dten_xtal32k + 5 + 5 + + + ten_aon + 4 + 4 + + + tmux_aon + 0 + 2 + + + + + aon_misc + aon_misc. + 0x808 + + + sw_bz_en_aon + 1 + 1 + + + sw_soc_en_aon + 0 + 0 + + + + + bg_sys_top + bg_sys_top. + 0x810 + + + bg_sys_start_ctrl_aon + 12 + 12 + + + pu_bg_sys_aon + 8 + 8 + + + pmip_resv + 0 + 7 + + + + + dcdc18_top_0 + dcdc18_top_0. + 0x814 + + + dcdc18_rdy_aon + 31 + 31 + + + dcdc18_sstart_time_aon + 28 + 29 + + + dcdc18_osc_inhibit_t2_aon + 27 + 27 + + + dcdc18_slow_osc_aon + 26 + 26 + + + dcdc18_stop_osc_aon + 25 + 25 + + + dcdc18_slope_curr_sel_aon + 20 + 24 + + + dcdc18_osc_freq_trim_aon + 16 + 19 + + + dcdc18_osc_2m_mode_aon + 12 + 12 + + + dcdc18_vpfm_aon + 8 + 11 + + + dcdc18_vout_sel_aon + 1 + 5 + + + + + dcdc18_top_1 + dcdc18_top_1. + 0x818 + + + dcdc18_pulldown_aon + 29 + 29 + + + dcdc18_en_antiring_aon + 28 + 28 + + + dcdc18_cfb_sel_aon + 24 + 27 + + + dcdc18_chf_sel_aon + 20 + 23 + + + dcdc18_rc_sel_aon + 16 + 19 + + + dcdc18_nonoverlap_td_aon + 8 + 12 + + + dcdc18_zvs_td_opt_aon + 4 + 6 + + + dcdc18_cs_delay_aon + 1 + 3 + + + dcdc18_force_cs_zvs_aon + 0 + 0 + + + + + ldo11soc_and_dctest + ldo11soc_and_dctest. + 0x81C + + + pmip_dc_tp_out_en_aon + 31 + 31 + + + pu_vddcore_misc_aon + 30 + 30 + + + ldo11soc_power_good_aon + 29 + 29 + + + ldo11soc_rdy_aon + 28 + 28 + + + ldo11soc_cc_aon + 24 + 25 + + + ldo11soc_vth_sel_aon + 12 + 13 + + + ldo11soc_pulldown_sel_aon + 11 + 11 + + + ldo11soc_pulldown_aon + 10 + 10 + + + ldo11soc_sstart_delay_aon + 8 + 9 + + + ldo11soc_sstart_sel_aon + 4 + 4 + + + pu_ldo11soc_aon + 0 + 0 + + + + + psw_irrcv + psw_irrcv. + 0x820 + + + pu_ir_psw_aon + 0 + 0 + + + + + rf_top_aon + rf_top_aon. + 0x880 + + + ldo15rf_bypass_aon + 28 + 28 + + + ldo15rf_cc_aon + 24 + 25 + + + ldo15rf_vout_sel_aon + 16 + 18 + + + ldo15rf_pulldown_sel_aon + 13 + 13 + + + ldo15rf_pulldown_aon + 12 + 12 + + + ldo15rf_sstart_delay_aon + 9 + 10 + + + ldo15rf_sstart_sel_aon + 8 + 8 + + + pu_xtal_aon + 5 + 5 + + + pu_xtal_buf_aon + 4 + 4 + + + pu_sfreg_aon + 2 + 2 + + + pu_ldo15rf_aon + 1 + 1 + + + pu_mbg_aon + 0 + 0 + + + + + xtal_cfg + xtal_cfg. + 0x884 + + + xtal_rdy_sel_aon + 30 + 31 + + + xtal_gm_boost_aon + 28 + 29 + + + xtal_capcode_in_aon + 22 + 27 + + + xtal_capcode_out_aon + 16 + 21 + + + xtal_amp_ctrl_aon + 14 + 15 + + + xtal_sleep_aon + 13 + 13 + + + xtal_fast_startup_aon + 12 + 12 + + + xtal_buf_hp_aon + 8 + 11 + + + xtal_buf_en_aon + 4 + 7 + + + xtal_ext_sel_aon + 3 + 3 + + + xtal_capcode_extra_aon + 2 + 2 + + + xtal_bk_aon + 0 + 1 + + + + + tsen + tsen. + 0x888 + + + xtal_rdy_int_sel_aon + 30 + 31 + + + xtal_inn_cfg_en_aon + 29 + 29 + + + xtal_rdy + 28 + 28 + + + tsen_refcode_rfcal + 16 + 27 + + + tsen_refcode_corner + 0 + 11 + + + + + acomp0_ctrl + acomp0_ctrl. + 0x900 + + + acomp0_muxen + 26 + 26 + + + acomp0_pos_sel + 22 + 25 + + + acomp0_neg_sel + 18 + 21 + + + acomp0_level_sel + 12 + 17 + + + acomp0_bias_prog + 10 + 11 + + + acomp0_hyst_selp + 7 + 9 + + + acomp0_hyst_seln + 4 + 6 + + + acomp0_en + 0 + 0 + + + + + acomp1_ctrl + acomp1_ctrl. + 0x904 + + + acomp1_muxen + 26 + 26 + + + acomp1_pos_sel + 22 + 25 + + + acomp1_neg_sel + 18 + 21 + + + acomp1_level_sel + 12 + 17 + + + acomp1_bias_prog + 10 + 11 + + + acomp1_hyst_selp + 7 + 9 + + + acomp1_hyst_seln + 4 + 6 + + + acomp1_en + 0 + 0 + + + + + acomp_ctrl + acomp_ctrl. + 0x908 + + + acomp_reserved + 24 + 31 + + + acomp0_out_raw + 19 + 19 + + + acomp1_out_raw + 17 + 17 + + + acomp0_test_sel + 12 + 13 + + + acomp1_test_sel + 10 + 11 + + + acomp0_test_en + 9 + 9 + + + acomp1_test_en + 8 + 8 + + + acomp0_rstn_ana + 1 + 1 + + + acomp1_rstn_ana + 0 + 0 + + + + + gpadc_reg_cmd + gpadc_reg_cmd. + 0x90C + + + gpadc_sen_test_en + 30 + 30 + + + gpadc_sen_sel + 28 + 29 + + + gpadc_chip_sen_pu + 27 + 27 + + + gpadc_micboost_32db_en + 23 + 23 + + + gpadc_mic_pga2_gain + 21 + 22 + + + gpadc_mic1_diff + 20 + 20 + + + gpadc_mic2_diff + 19 + 19 + + + gpadc_dwa_en + 18 + 18 + + + gpadc_byp_micboost + 16 + 16 + + + gpadc_micpga_en + 15 + 15 + + + gpadc_micbias_en + 14 + 14 + + + gpadc_neg_gnd + 13 + 13 + + + gpadc_pos_sel + 8 + 12 + + + gpadc_neg_sel + 3 + 7 + + + gpadc_soft_rst + 2 + 2 + + + gpadc_conv_start + 1 + 1 + + + gpadc_global_en + 0 + 0 + + + + + gpadc_reg_config1 + gpadc_reg_config1. + 0x910 + + + gpadc_v18_sel + 29 + 30 + + + gpadc_v11_sel + 27 + 28 + + + gpadc_dither_en + 26 + 26 + + + gpadc_scan_en + 25 + 25 + + + gpadc_scan_length + 21 + 24 + + + gpadc_clk_div_ratio + 18 + 20 + + + gpadc_clk_ana_inv + 17 + 17 + + + gpadc_lowv_det_en + 10 + 10 + + + gpadc_vcm_hyst_sel + 9 + 9 + + + gpadc_vcm_sel_en + 8 + 8 + + + gpadc_res_sel + 2 + 4 + + + gpadc_cont_conv_en + 1 + 1 + + + gpadc_cal_os_en + 0 + 0 + + + + + gpadc_reg_config2 + gpadc_reg_config2. + 0x914 + + + gpadc_tsvbe_low + 31 + 31 + + + gpadc_dly_sel + 28 + 30 + + + gpadc_pga1_gain + 25 + 27 + + + gpadc_pga2_gain + 22 + 24 + + + gpadc_test_sel + 19 + 21 + + + gpadc_test_en + 18 + 18 + + + gpadc_bias_sel + 17 + 17 + + + gpadc_chop_mode + 15 + 16 + + + gpadc_pga_vcmi_en + 14 + 14 + + + gpadc_pga_en + 13 + 13 + + + gpadc_pga_os_cal + 9 + 12 + + + gpadc_pga_vcm + 7 + 8 + + + gpadc_ts_en + 6 + 6 + + + gpadc_tsext_sel + 5 + 5 + + + gpadc_vbat_en + 4 + 4 + + + gpadc_vref_sel + 3 + 3 + + + gpadc_diff_mode + 2 + 2 + + + + + gpadc_reg_scn_pos1 + adc converation sequence 1 + 0x918 + + + gpadc_scan_pos_5 + 25 + 29 + + + gpadc_scan_pos_4 + 20 + 24 + + + gpadc_scan_pos_3 + 15 + 19 + + + gpadc_scan_pos_2 + 10 + 14 + + + gpadc_scan_pos_1 + 5 + 9 + + + gpadc_scan_pos_0 + 0 + 4 + + + + + gpadc_reg_scn_pos2 + adc converation sequence 2 + 0x91C + + + gpadc_scan_pos_11 + 25 + 29 + + + gpadc_scan_pos_10 + 20 + 24 + + + gpadc_scan_pos_9 + 15 + 19 + + + gpadc_scan_pos_8 + 10 + 14 + + + gpadc_scan_pos_7 + 5 + 9 + + + gpadc_scan_pos_6 + 0 + 4 + + + + + gpadc_reg_scn_neg1 + adc converation sequence 3 + 0x920 + + + gpadc_scan_neg_5 + 25 + 29 + + + gpadc_scan_neg_4 + 20 + 24 + + + gpadc_scan_neg_3 + 15 + 19 + + + gpadc_scan_neg_2 + 10 + 14 + + + gpadc_scan_neg_1 + 5 + 9 + + + gpadc_scan_neg_0 + 0 + 4 + + + + + gpadc_reg_scn_neg2 + adc converation sequence 4 + 0x924 + + + gpadc_scan_neg_11 + 25 + 29 + + + gpadc_scan_neg_10 + 20 + 24 + + + gpadc_scan_neg_9 + 15 + 19 + + + gpadc_scan_neg_8 + 10 + 14 + + + gpadc_scan_neg_7 + 5 + 9 + + + gpadc_scan_neg_6 + 0 + 4 + + + + + gpadc_reg_status + gpadc_reg_status. + 0x928 + + + gpadc_reserved + 16 + 31 + + + gpadc_data_rdy + 0 + 0 + + + + + gpadc_reg_isr + gpadc_reg_isr. + 0x92C + + + gpadc_pos_satur_mask + 9 + 9 + + + gpadc_neg_satur_mask + 8 + 8 + + + gpadc_pos_satur_clr + 5 + 5 + + + gpadc_neg_satur_clr + 4 + 4 + + + gpadc_pos_satur + 1 + 1 + + + gpadc_neg_satur + 0 + 0 + + + + + gpadc_reg_result + gpadc_reg_result. + 0x930 + + + gpadc_data_out + 0 + 25 + + + + + gpadc_reg_raw_result + gpadc_reg_raw_result. + 0x934 + + + gpadc_raw_data + 0 + 11 + + + + + gpadc_reg_define + gpadc_reg_define. + 0x938 + + + gpadc_os_cal_data + 0 + 15 + + + + + hbncore_resv0 + hbncore_resv0. + 0x93C + + + hbncore_resv0_data + 0 + 31 + + + + + hbncore_resv1 + hbncore_resv1. + 0x940 + + + hbncore_resv1_data + 0 + 31 + + + + + + + diff --git a/drivers/bl702_driver/regs/spi_reg.h b/drivers/bl702_driver/regs/spi_reg.h new file mode 100644 index 00000000..a0efd2b2 --- /dev/null +++ b/drivers/bl702_driver/regs/spi_reg.h @@ -0,0 +1,513 @@ +/** + ****************************************************************************** + * @file spi_reg.h + * @version V1.2 + * @date 2020-03-30 + * @brief This file is the description of.IP register + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2019 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __SPI_REG_H__ +#define __SPI_REG_H__ + +#include "bl702.h" + +/* 0x0 : spi_config */ +#define SPI_CONFIG_OFFSET (0x0) +#define SPI_CR_SPI_M_EN SPI_CR_SPI_M_EN +#define SPI_CR_SPI_M_EN_POS (0U) +#define SPI_CR_SPI_M_EN_LEN (1U) +#define SPI_CR_SPI_M_EN_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __TIMER_REG_H__ +#define __TIMER_REG_H__ + +#include "bl702.h" + +/* 0x0 : TCCR */ +#define TIMER_TCCR_OFFSET (0x0) +#define TIMER_CS_1 TIMER_CS_1 +#define TIMER_CS_1_POS (2U) +#define TIMER_CS_1_LEN (2U) +#define TIMER_CS_1_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __TZC_NSEC_REG_H__ +#define __TZC_NSEC_REG_H__ + +#include "bl702.h" + +/* 0x40 : tzc_rom_ctrl */ +#define TZC_NSEC_TZC_ROM_CTRL_OFFSET (0x40) +#define TZC_NSEC_TZC_ROM0_R0_ID0_EN TZC_NSEC_TZC_ROM0_R0_ID0_EN +#define TZC_NSEC_TZC_ROM0_R0_ID0_EN_POS (0U) +#define TZC_NSEC_TZC_ROM0_R0_ID0_EN_LEN (1U) +#define TZC_NSEC_TZC_ROM0_R0_ID0_EN_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __TZC_SEC_REG_H__ +#define __TZC_SEC_REG_H__ + +#include "bl702.h" + +/* 0x40 : tzc_rom_ctrl */ +#define TZC_SEC_TZC_ROM_CTRL_OFFSET (0x40) +#define TZC_SEC_TZC_ROM0_R0_ID0_EN TZC_SEC_TZC_ROM0_R0_ID0_EN +#define TZC_SEC_TZC_ROM0_R0_ID0_EN_POS (0U) +#define TZC_SEC_TZC_ROM0_R0_ID0_EN_LEN (1U) +#define TZC_SEC_TZC_ROM0_R0_ID0_EN_MSK (((1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __UART_REG_H__ +#define __UART_REG_H__ + +#include "bl702.h" + +/* 0x0 : utx_config */ +#define UART_UTX_CONFIG_OFFSET (0x0) +#define UART_CR_UTX_EN UART_CR_UTX_EN +#define UART_CR_UTX_EN_POS (0U) +#define UART_CR_UTX_EN_LEN (1U) +#define UART_CR_UTX_EN_MSK (((1U<
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __USB_REG_H__ +#define __USB_REG_H__ + +#include "bl702.h" + +/* 0x0 : usb_config */ +#define USB_CONFIG_OFFSET (0x0) +#define USB_CR_USB_EN USB_CR_USB_EN +#define USB_CR_USB_EN_POS (0U) +#define USB_CR_USB_EN_LEN (1U) +#define USB_CR_USB_EN_MSK (((1U<> 24); + res &= 0xFF0000FF; /* only for sure */ + res |= ((value >> 8) & 0x0000FF00) | ((value << 8) & 0x00FF0000); + + return res; +} + +__attribute__((always_inline)) __STATIC_INLINE uint32_t __REV16(uint32_t value) +{ + return __builtin_bswap16(value); +} + +extern void clic_enable_interrupt (uint32_t source); +extern void clic_disable_interrupt ( uint32_t source); +extern void clic_set_pending(uint32_t source); +extern void clic_clear_pending(uint32_t source); + +#define NVIC_EnableIRQ clic_enable_interrupt + +#define NVIC_DisableIRQ clic_disable_interrupt + +#define NVIC_ClearPendingIRQ clic_clear_pending + +//#define __set_MSP(val) __ASM volatile ("lw sp,0(%0)":: "r"(val)) +#define __set_MSP(msp) __ASM volatile ("add sp, x0, %0":: "r"(msp)) + +#endif /* __CMSIS_COMPATIBLE_GCC_H */ diff --git a/drivers/bl702_driver/risc-v/Core/Include/riscv_bits.h b/drivers/bl702_driver/risc-v/Core/Include/riscv_bits.h new file mode 100644 index 00000000..bfe656fe --- /dev/null +++ b/drivers/bl702_driver/risc-v/Core/Include/riscv_bits.h @@ -0,0 +1,36 @@ +// See LICENSE for license details. +#ifndef _RISCV_BITS_H +#define _RISCV_BITS_H + +#define likely(x) __builtin_expect((x), 1) +#define unlikely(x) __builtin_expect((x), 0) + +#define ROUNDUP(a, b) ((((a)-1)/(b)+1)*(b)) +#define ROUNDDOWN(a, b) ((a)/(b)*(b)) + +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define CLAMP(a, lo, hi) MIN(MAX(a, lo), hi) + +#define EXTRACT_FIELD(val, which) (((val) & (which)) / ((which) & ~((which)-1))) +#define INSERT_FIELD(val, which, fieldval) (((val) & ~(which)) | ((fieldval) * ((which) & ~((which)-1)))) + +#define STR(x) XSTR(x) +#define XSTR(x) #x + +#if __riscv_xlen == 64 +# define SLL32 sllw +# define STORE sd +# define LOAD ld +# define LWU lwu +# define LOG_REGBYTES 3 +#else +# define SLL32 sll +# define STORE sw +# define LOAD lw +# define LWU lw +# define LOG_REGBYTES 2 +#endif +#define REGBYTES (1 << LOG_REGBYTES) + +#endif diff --git a/drivers/bl702_driver/risc-v/Core/Include/riscv_const.h b/drivers/bl702_driver/risc-v/Core/Include/riscv_const.h new file mode 100644 index 00000000..d5dec8ac --- /dev/null +++ b/drivers/bl702_driver/risc-v/Core/Include/riscv_const.h @@ -0,0 +1,18 @@ +// See LICENSE for license details. +/* Derived from */ + +#ifndef _RISCV_CONST_H +#define _RISCV_CONST_H + +#ifdef __ASSEMBLER__ +#define _AC(X,Y) X +#define _AT(T,X) X +#else +#define _AC(X,Y) (X##Y) +#define _AT(T,X) ((T)(X)) +#endif /* !__ASSEMBLER__*/ + +#define _BITUL(x) (_AC(1,UL) << (x)) +#define _BITULL(x) (_AC(1,ULL) << (x)) + +#endif /* _NUCLEI_CONST_H */ diff --git a/drivers/bl702_driver/risc-v/Core/Include/riscv_encoding.h b/drivers/bl702_driver/risc-v/Core/Include/riscv_encoding.h new file mode 100644 index 00000000..65fdbb16 --- /dev/null +++ b/drivers/bl702_driver/risc-v/Core/Include/riscv_encoding.h @@ -0,0 +1,1370 @@ +// See LICENSE for license details. + +#ifndef RISCV_CSR_ENCODING_H +#define RISCV_CSR_ENCODING_H + +#define MSTATUS_UIE 0x00000001 +#define MSTATUS_SIE 0x00000002 +#define MSTATUS_HIE 0x00000004 +#define MSTATUS_MIE 0x00000008 +#define MSTATUS_UPIE 0x00000010 +#define MSTATUS_SPIE 0x00000020 +#define MSTATUS_HPIE 0x00000040 +#define MSTATUS_MPIE 0x00000080 +#define MSTATUS_SPP 0x00000100 +#define MSTATUS_MPP 0x00001800 +#define MSTATUS_FS 0x00006000 +#define MSTATUS_XS 0x00018000 +#define MSTATUS_MPRV 0x00020000 +#define MSTATUS_PUM 0x00040000 +#define MSTATUS_MXR 0x00080000 +#define MSTATUS_VM 0x1F000000 +#define MSTATUS32_SD 0x80000000 +#define MSTATUS64_SD 0x8000000000000000 + + +#define SSTATUS_UIE 0x00000001 +#define SSTATUS_SIE 0x00000002 +#define SSTATUS_UPIE 0x00000010 +#define SSTATUS_SPIE 0x00000020 +#define SSTATUS_SPP 0x00000100 +#define SSTATUS_FS 0x00006000 +#define SSTATUS_XS 0x00018000 +#define SSTATUS_PUM 0x00040000 +#define SSTATUS32_SD 0x80000000 +#define SSTATUS64_SD 0x8000000000000000 + +#define DCSR_XDEBUGVER (3U<<30) +#define DCSR_NDRESET (1<<29) +#define DCSR_FULLRESET (1<<28) +#define DCSR_EBREAKM (1<<15) +#define DCSR_EBREAKH (1<<14) +#define DCSR_EBREAKS (1<<13) +#define DCSR_EBREAKU (1<<12) +#define DCSR_STOPCYCLE (1<<10) +#define DCSR_STOPTIME (1<<9) +#define DCSR_CAUSE (7<<6) +#define DCSR_DEBUGINT (1<<5) +#define DCSR_HALT (1<<3) +#define DCSR_STEP (1<<2) +#define DCSR_PRV (3<<0) + +#define DCSR_CAUSE_NONE 0 +#define DCSR_CAUSE_SWBP 1 +#define DCSR_CAUSE_HWBP 2 +#define DCSR_CAUSE_DEBUGINT 3 +#define DCSR_CAUSE_STEP 4 +#define DCSR_CAUSE_HALT 5 + +#define MCONTROL_TYPE(xlen) (0xfULL<<((xlen)-4)) +#define MCONTROL_DMODE(xlen) (1ULL<<((xlen)-5)) +#define MCONTROL_MASKMAX(xlen) (0x3fULL<<((xlen)-11)) + +#define MCONTROL_SELECT (1<<19) +#define MCONTROL_TIMING (1<<18) +#define MCONTROL_ACTION (0x3f<<12) +#define MCONTROL_CHAIN (1<<11) +#define MCONTROL_MATCH (0xf<<7) +#define MCONTROL_M (1<<6) +#define MCONTROL_H (1<<5) +#define MCONTROL_S (1<<4) +#define MCONTROL_U (1<<3) +#define MCONTROL_EXECUTE (1<<2) +#define MCONTROL_STORE (1<<1) +#define MCONTROL_LOAD (1<<0) + +#define MCONTROL_TYPE_NONE 0 +#define MCONTROL_TYPE_MATCH 2 + +#define MCONTROL_ACTION_DEBUG_EXCEPTION 0 +#define MCONTROL_ACTION_DEBUG_MODE 1 +#define MCONTROL_ACTION_TRACE_START 2 +#define MCONTROL_ACTION_TRACE_STOP 3 +#define MCONTROL_ACTION_TRACE_EMIT 4 + +#define MCONTROL_MATCH_EQUAL 0 +#define MCONTROL_MATCH_NAPOT 1 +#define MCONTROL_MATCH_GE 2 +#define MCONTROL_MATCH_LT 3 +#define MCONTROL_MATCH_MASK_LOW 4 +#define MCONTROL_MATCH_MASK_HIGH 5 + +#define MIP_SSIP (1 << IRQ_S_SOFT) +#define MIP_HSIP (1 << IRQ_H_SOFT) +#define MIP_MSIP (1 << IRQ_M_SOFT) +#define MIP_STIP (1 << IRQ_S_TIMER) +#define MIP_HTIP (1 << IRQ_H_TIMER) +#define MIP_MTIP (1 << IRQ_M_TIMER) +#define MIP_SEIP (1 << IRQ_S_EXT) +#define MIP_HEIP (1 << IRQ_H_EXT) +#define MIP_MEIP (1 << IRQ_M_EXT) + +#define MIE_SSIE MIP_SSIP +#define MIE_HSIE MIP_HSIP +#define MIE_MSIE MIP_MSIP +#define MIE_STIE MIP_STIP +#define MIE_HTIE MIP_HTIP +#define MIE_MTIE MIP_MTIP +#define MIE_SEIE MIP_SEIP +#define MIE_HEIE MIP_HEIP +#define MIE_MEIE MIP_MEIP + +#define SIP_SSIP MIP_SSIP +#define SIP_STIP MIP_STIP + +#define PRV_U 0 +#define PRV_S 1 +#define PRV_H 2 +#define PRV_M 3 + +#define VM_MBARE 0 +#define VM_MBB 1 +#define VM_MBBID 2 +#define VM_SV32 8 +#define VM_SV39 9 +#define VM_SV48 10 + +#define IRQ_S_SOFT 1 +#define IRQ_H_SOFT 2 +#define IRQ_M_SOFT 3 +#define IRQ_S_TIMER 5 +#define IRQ_H_TIMER 6 +#define IRQ_M_TIMER 7 +#define IRQ_S_EXT 9 +#define IRQ_H_EXT 10 +#define IRQ_M_EXT 11 +#define IRQ_COP 12 +#define IRQ_HOST 13 + +#define DEFAULT_RSTVEC 0x00001000 +#define DEFAULT_NMIVEC 0x00001004 +#define DEFAULT_MTVEC 0x00001010 +#define CONFIG_STRING_ADDR 0x0000100C +#define EXT_IO_BASE 0x40000000 +#define DRAM_BASE 0x80000000 + +// page table entry (PTE) fields +#define PTE_V 0x001 // Valid +#define PTE_R 0x002 // Read +#define PTE_W 0x004 // Write +#define PTE_X 0x008 // Execute +#define PTE_U 0x010 // User +#define PTE_G 0x020 // Global +#define PTE_A 0x040 // Accessed +#define PTE_D 0x080 // Dirty +#define PTE_SOFT 0x300 // Reserved for Software + +#define PTE_PPN_SHIFT 10 + +#define PTE_TABLE(PTE) (((PTE) & (PTE_V | PTE_R | PTE_W | PTE_X)) == PTE_V) + +#ifdef __riscv + +#ifdef __riscv64 +# define MSTATUS_SD MSTATUS64_SD +# define SSTATUS_SD SSTATUS64_SD +# define RISCV_PGLEVEL_BITS 9 +#else +# define MSTATUS_SD MSTATUS32_SD +# define SSTATUS_SD SSTATUS32_SD +# define RISCV_PGLEVEL_BITS 10 +#endif +#define RISCV_PGSHIFT 12 +#define RISCV_PGSIZE (1 << RISCV_PGSHIFT) + +#ifndef __ASSEMBLER__ + +#ifdef __GNUC__ + +#define asm __asm + +#define read_fpu(reg) ({ unsigned long __tmp; \ + asm volatile ("fmv.x.w %0, " #reg : "=r"(__tmp)); \ + __tmp; }) + +#define write_fpu(reg, val) ({ \ + if (__builtin_constant_p(val) && (unsigned long)(val) < 32) \ + asm volatile ("fmv.w.x " #reg ", %0" :: "i"(val)); \ + else \ + asm volatile ("fmv.w.x " #reg ", %0" :: "r"(val)); }) + + +#define read_csr(reg) ({ unsigned long __tmp; \ + asm volatile ("csrr %0, " #reg : "=r"(__tmp)); \ + __tmp; }) + +#define write_csr(reg, val) ({ \ + if (__builtin_constant_p(val) && (unsigned long)(val) < 32) \ + asm volatile ("csrw " #reg ", %0" :: "i"(val)); \ + else \ + asm volatile ("csrw " #reg ", %0" :: "r"(val)); }) + +#define swap_csr(reg, val) ({ unsigned long __tmp; \ + if (__builtin_constant_p(val) && (unsigned long)(val) < 32) \ + asm volatile ("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "i"(val)); \ + else \ + asm volatile ("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "r"(val)); \ + __tmp; }) + +#define set_csr(reg, bit) ({ unsigned long __tmp; \ + if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) \ + asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "i"(bit)); \ + else \ + asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "r"(bit)); \ + __tmp; }) + +#define clear_csr(reg, bit) ({ unsigned long __tmp; \ + if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) \ + asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "i"(bit)); \ + else \ + asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "r"(bit)); \ + __tmp; }) + +#define rdtime() read_csr(time) +#define rdcycle() read_csr(cycle) +#define rdinstret() read_csr(instret) + + + + + + +#endif + +#endif + +#endif + +#endif +/* Automatically generated by parse-opcodes */ +#ifndef RISCV_ENCODING_H +#define RISCV_ENCODING_H +#define MATCH_BEQ 0x63 +#define MASK_BEQ 0x707f +#define MATCH_BNE 0x1063 +#define MASK_BNE 0x707f +#define MATCH_BLT 0x4063 +#define MASK_BLT 0x707f +#define MATCH_BGE 0x5063 +#define MASK_BGE 0x707f +#define MATCH_BLTU 0x6063 +#define MASK_BLTU 0x707f +#define MATCH_BGEU 0x7063 +#define MASK_BGEU 0x707f +#define MATCH_JALR 0x67 +#define MASK_JALR 0x707f +#define MATCH_JAL 0x6f +#define MASK_JAL 0x7f +#define MATCH_LUI 0x37 +#define MASK_LUI 0x7f +#define MATCH_AUIPC 0x17 +#define MASK_AUIPC 0x7f +#define MATCH_ADDI 0x13 +#define MASK_ADDI 0x707f +#define MATCH_SLLI 0x1013 +#define MASK_SLLI 0xfc00707f +#define MATCH_SLTI 0x2013 +#define MASK_SLTI 0x707f +#define MATCH_SLTIU 0x3013 +#define MASK_SLTIU 0x707f +#define MATCH_XORI 0x4013 +#define MASK_XORI 0x707f +#define MATCH_SRLI 0x5013 +#define MASK_SRLI 0xfc00707f +#define MATCH_SRAI 0x40005013 +#define MASK_SRAI 0xfc00707f +#define MATCH_ORI 0x6013 +#define MASK_ORI 0x707f +#define MATCH_ANDI 0x7013 +#define MASK_ANDI 0x707f +#define MATCH_ADD 0x33 +#define MASK_ADD 0xfe00707f +#define MATCH_SUB 0x40000033 +#define MASK_SUB 0xfe00707f +#define MATCH_SLL 0x1033 +#define MASK_SLL 0xfe00707f +#define MATCH_SLT 0x2033 +#define MASK_SLT 0xfe00707f +#define MATCH_SLTU 0x3033 +#define MASK_SLTU 0xfe00707f +#define MATCH_XOR 0x4033 +#define MASK_XOR 0xfe00707f +#define MATCH_SRL 0x5033 +#define MASK_SRL 0xfe00707f +#define MATCH_SRA 0x40005033 +#define MASK_SRA 0xfe00707f +#define MATCH_OR 0x6033 +#define MASK_OR 0xfe00707f +#define MATCH_AND 0x7033 +#define MASK_AND 0xfe00707f +#define MATCH_ADDIW 0x1b +#define MASK_ADDIW 0x707f +#define MATCH_SLLIW 0x101b +#define MASK_SLLIW 0xfe00707f +#define MATCH_SRLIW 0x501b +#define MASK_SRLIW 0xfe00707f +#define MATCH_SRAIW 0x4000501b +#define MASK_SRAIW 0xfe00707f +#define MATCH_ADDW 0x3b +#define MASK_ADDW 0xfe00707f +#define MATCH_SUBW 0x4000003b +#define MASK_SUBW 0xfe00707f +#define MATCH_SLLW 0x103b +#define MASK_SLLW 0xfe00707f +#define MATCH_SRLW 0x503b +#define MASK_SRLW 0xfe00707f +#define MATCH_SRAW 0x4000503b +#define MASK_SRAW 0xfe00707f +#define MATCH_LB 0x3 +#define MASK_LB 0x707f +#define MATCH_LH 0x1003 +#define MASK_LH 0x707f +#define MATCH_LW 0x2003 +#define MASK_LW 0x707f +#define MATCH_LD 0x3003 +#define MASK_LD 0x707f +#define MATCH_LBU 0x4003 +#define MASK_LBU 0x707f +#define MATCH_LHU 0x5003 +#define MASK_LHU 0x707f +#define MATCH_LWU 0x6003 +#define MASK_LWU 0x707f +#define MATCH_SB 0x23 +#define MASK_SB 0x707f +#define MATCH_SH 0x1023 +#define MASK_SH 0x707f +#define MATCH_SW 0x2023 +#define MASK_SW 0x707f +#define MATCH_SD 0x3023 +#define MASK_SD 0x707f +#define MATCH_FENCE 0xf +#define MASK_FENCE 0x707f +#define MATCH_FENCE_I 0x100f +#define MASK_FENCE_I 0x707f +#define MATCH_MUL 0x2000033 +#define MASK_MUL 0xfe00707f +#define MATCH_MULH 0x2001033 +#define MASK_MULH 0xfe00707f +#define MATCH_MULHSU 0x2002033 +#define MASK_MULHSU 0xfe00707f +#define MATCH_MULHU 0x2003033 +#define MASK_MULHU 0xfe00707f +#define MATCH_DIV 0x2004033 +#define MASK_DIV 0xfe00707f +#define MATCH_DIVU 0x2005033 +#define MASK_DIVU 0xfe00707f +#define MATCH_REM 0x2006033 +#define MASK_REM 0xfe00707f +#define MATCH_REMU 0x2007033 +#define MASK_REMU 0xfe00707f +#define MATCH_MULW 0x200003b +#define MASK_MULW 0xfe00707f +#define MATCH_DIVW 0x200403b +#define MASK_DIVW 0xfe00707f +#define MATCH_DIVUW 0x200503b +#define MASK_DIVUW 0xfe00707f +#define MATCH_REMW 0x200603b +#define MASK_REMW 0xfe00707f +#define MATCH_REMUW 0x200703b +#define MASK_REMUW 0xfe00707f +#define MATCH_AMOADD_W 0x202f +#define MASK_AMOADD_W 0xf800707f +#define MATCH_AMOXOR_W 0x2000202f +#define MASK_AMOXOR_W 0xf800707f +#define MATCH_AMOOR_W 0x4000202f +#define MASK_AMOOR_W 0xf800707f +#define MATCH_AMOAND_W 0x6000202f +#define MASK_AMOAND_W 0xf800707f +#define MATCH_AMOMIN_W 0x8000202f +#define MASK_AMOMIN_W 0xf800707f +#define MATCH_AMOMAX_W 0xa000202f +#define MASK_AMOMAX_W 0xf800707f +#define MATCH_AMOMINU_W 0xc000202f +#define MASK_AMOMINU_W 0xf800707f +#define MATCH_AMOMAXU_W 0xe000202f +#define MASK_AMOMAXU_W 0xf800707f +#define MATCH_AMOSWAP_W 0x800202f +#define MASK_AMOSWAP_W 0xf800707f +#define MATCH_LR_W 0x1000202f +#define MASK_LR_W 0xf9f0707f +#define MATCH_SC_W 0x1800202f +#define MASK_SC_W 0xf800707f +#define MATCH_AMOADD_D 0x302f +#define MASK_AMOADD_D 0xf800707f +#define MATCH_AMOXOR_D 0x2000302f +#define MASK_AMOXOR_D 0xf800707f +#define MATCH_AMOOR_D 0x4000302f +#define MASK_AMOOR_D 0xf800707f +#define MATCH_AMOAND_D 0x6000302f +#define MASK_AMOAND_D 0xf800707f +#define MATCH_AMOMIN_D 0x8000302f +#define MASK_AMOMIN_D 0xf800707f +#define MATCH_AMOMAX_D 0xa000302f +#define MASK_AMOMAX_D 0xf800707f +#define MATCH_AMOMINU_D 0xc000302f +#define MASK_AMOMINU_D 0xf800707f +#define MATCH_AMOMAXU_D 0xe000302f +#define MASK_AMOMAXU_D 0xf800707f +#define MATCH_AMOSWAP_D 0x800302f +#define MASK_AMOSWAP_D 0xf800707f +#define MATCH_LR_D 0x1000302f +#define MASK_LR_D 0xf9f0707f +#define MATCH_SC_D 0x1800302f +#define MASK_SC_D 0xf800707f +#define MATCH_ECALL 0x73 +#define MASK_ECALL 0xffffffff +#define MATCH_EBREAK 0x100073 +#define MASK_EBREAK 0xffffffff +#define MATCH_URET 0x200073 +#define MASK_URET 0xffffffff +#define MATCH_SRET 0x10200073 +#define MASK_SRET 0xffffffff +#define MATCH_HRET 0x20200073 +#define MASK_HRET 0xffffffff +#define MATCH_MRET 0x30200073 +#define MASK_MRET 0xffffffff +#define MATCH_DRET 0x7b200073 +#define MASK_DRET 0xffffffff +#define MATCH_SFENCE_VM 0x10400073 +#define MASK_SFENCE_VM 0xfff07fff +#define MATCH_WFI 0x10500073 +#define MASK_WFI 0xffffffff +#define MATCH_CSRRW 0x1073 +#define MASK_CSRRW 0x707f +#define MATCH_CSRRS 0x2073 +#define MASK_CSRRS 0x707f +#define MATCH_CSRRC 0x3073 +#define MASK_CSRRC 0x707f +#define MATCH_CSRRWI 0x5073 +#define MASK_CSRRWI 0x707f +#define MATCH_CSRRSI 0x6073 +#define MASK_CSRRSI 0x707f +#define MATCH_CSRRCI 0x7073 +#define MASK_CSRRCI 0x707f +#define MATCH_FADD_S 0x53 +#define MASK_FADD_S 0xfe00007f +#define MATCH_FSUB_S 0x8000053 +#define MASK_FSUB_S 0xfe00007f +#define MATCH_FMUL_S 0x10000053 +#define MASK_FMUL_S 0xfe00007f +#define MATCH_FDIV_S 0x18000053 +#define MASK_FDIV_S 0xfe00007f +#define MATCH_FSGNJ_S 0x20000053 +#define MASK_FSGNJ_S 0xfe00707f +#define MATCH_FSGNJN_S 0x20001053 +#define MASK_FSGNJN_S 0xfe00707f +#define MATCH_FSGNJX_S 0x20002053 +#define MASK_FSGNJX_S 0xfe00707f +#define MATCH_FMIN_S 0x28000053 +#define MASK_FMIN_S 0xfe00707f +#define MATCH_FMAX_S 0x28001053 +#define MASK_FMAX_S 0xfe00707f +#define MATCH_FSQRT_S 0x58000053 +#define MASK_FSQRT_S 0xfff0007f +#define MATCH_FADD_D 0x2000053 +#define MASK_FADD_D 0xfe00007f +#define MATCH_FSUB_D 0xa000053 +#define MASK_FSUB_D 0xfe00007f +#define MATCH_FMUL_D 0x12000053 +#define MASK_FMUL_D 0xfe00007f +#define MATCH_FDIV_D 0x1a000053 +#define MASK_FDIV_D 0xfe00007f +#define MATCH_FSGNJ_D 0x22000053 +#define MASK_FSGNJ_D 0xfe00707f +#define MATCH_FSGNJN_D 0x22001053 +#define MASK_FSGNJN_D 0xfe00707f +#define MATCH_FSGNJX_D 0x22002053 +#define MASK_FSGNJX_D 0xfe00707f +#define MATCH_FMIN_D 0x2a000053 +#define MASK_FMIN_D 0xfe00707f +#define MATCH_FMAX_D 0x2a001053 +#define MASK_FMAX_D 0xfe00707f +#define MATCH_FCVT_S_D 0x40100053 +#define MASK_FCVT_S_D 0xfff0007f +#define MATCH_FCVT_D_S 0x42000053 +#define MASK_FCVT_D_S 0xfff0007f +#define MATCH_FSQRT_D 0x5a000053 +#define MASK_FSQRT_D 0xfff0007f +#define MATCH_FLE_S 0xa0000053 +#define MASK_FLE_S 0xfe00707f +#define MATCH_FLT_S 0xa0001053 +#define MASK_FLT_S 0xfe00707f +#define MATCH_FEQ_S 0xa0002053 +#define MASK_FEQ_S 0xfe00707f +#define MATCH_FLE_D 0xa2000053 +#define MASK_FLE_D 0xfe00707f +#define MATCH_FLT_D 0xa2001053 +#define MASK_FLT_D 0xfe00707f +#define MATCH_FEQ_D 0xa2002053 +#define MASK_FEQ_D 0xfe00707f +#define MATCH_FCVT_W_S 0xc0000053 +#define MASK_FCVT_W_S 0xfff0007f +#define MATCH_FCVT_WU_S 0xc0100053 +#define MASK_FCVT_WU_S 0xfff0007f +#define MATCH_FCVT_L_S 0xc0200053 +#define MASK_FCVT_L_S 0xfff0007f +#define MATCH_FCVT_LU_S 0xc0300053 +#define MASK_FCVT_LU_S 0xfff0007f +#define MATCH_FMV_X_S 0xe0000053 +#define MASK_FMV_X_S 0xfff0707f +#define MATCH_FCLASS_S 0xe0001053 +#define MASK_FCLASS_S 0xfff0707f +#define MATCH_FCVT_W_D 0xc2000053 +#define MASK_FCVT_W_D 0xfff0007f +#define MATCH_FCVT_WU_D 0xc2100053 +#define MASK_FCVT_WU_D 0xfff0007f +#define MATCH_FCVT_L_D 0xc2200053 +#define MASK_FCVT_L_D 0xfff0007f +#define MATCH_FCVT_LU_D 0xc2300053 +#define MASK_FCVT_LU_D 0xfff0007f +#define MATCH_FMV_X_D 0xe2000053 +#define MASK_FMV_X_D 0xfff0707f +#define MATCH_FCLASS_D 0xe2001053 +#define MASK_FCLASS_D 0xfff0707f +#define MATCH_FCVT_S_W 0xd0000053 +#define MASK_FCVT_S_W 0xfff0007f +#define MATCH_FCVT_S_WU 0xd0100053 +#define MASK_FCVT_S_WU 0xfff0007f +#define MATCH_FCVT_S_L 0xd0200053 +#define MASK_FCVT_S_L 0xfff0007f +#define MATCH_FCVT_S_LU 0xd0300053 +#define MASK_FCVT_S_LU 0xfff0007f +#define MATCH_FMV_S_X 0xf0000053 +#define MASK_FMV_S_X 0xfff0707f +#define MATCH_FCVT_D_W 0xd2000053 +#define MASK_FCVT_D_W 0xfff0007f +#define MATCH_FCVT_D_WU 0xd2100053 +#define MASK_FCVT_D_WU 0xfff0007f +#define MATCH_FCVT_D_L 0xd2200053 +#define MASK_FCVT_D_L 0xfff0007f +#define MATCH_FCVT_D_LU 0xd2300053 +#define MASK_FCVT_D_LU 0xfff0007f +#define MATCH_FMV_D_X 0xf2000053 +#define MASK_FMV_D_X 0xfff0707f +#define MATCH_FLW 0x2007 +#define MASK_FLW 0x707f +#define MATCH_FLD 0x3007 +#define MASK_FLD 0x707f +#define MATCH_FSW 0x2027 +#define MASK_FSW 0x707f +#define MATCH_FSD 0x3027 +#define MASK_FSD 0x707f +#define MATCH_FMADD_S 0x43 +#define MASK_FMADD_S 0x600007f +#define MATCH_FMSUB_S 0x47 +#define MASK_FMSUB_S 0x600007f +#define MATCH_FNMSUB_S 0x4b +#define MASK_FNMSUB_S 0x600007f +#define MATCH_FNMADD_S 0x4f +#define MASK_FNMADD_S 0x600007f +#define MATCH_FMADD_D 0x2000043 +#define MASK_FMADD_D 0x600007f +#define MATCH_FMSUB_D 0x2000047 +#define MASK_FMSUB_D 0x600007f +#define MATCH_FNMSUB_D 0x200004b +#define MASK_FNMSUB_D 0x600007f +#define MATCH_FNMADD_D 0x200004f +#define MASK_FNMADD_D 0x600007f +#define MATCH_C_NOP 0x1 +#define MASK_C_NOP 0xffff +#define MATCH_C_ADDI16SP 0x6101 +#define MASK_C_ADDI16SP 0xef83 +#define MATCH_C_JR 0x8002 +#define MASK_C_JR 0xf07f +#define MATCH_C_JALR 0x9002 +#define MASK_C_JALR 0xf07f +#define MATCH_C_EBREAK 0x9002 +#define MASK_C_EBREAK 0xffff +#define MATCH_C_LD 0x6000 +#define MASK_C_LD 0xe003 +#define MATCH_C_SD 0xe000 +#define MASK_C_SD 0xe003 +#define MATCH_C_ADDIW 0x2001 +#define MASK_C_ADDIW 0xe003 +#define MATCH_C_LDSP 0x6002 +#define MASK_C_LDSP 0xe003 +#define MATCH_C_SDSP 0xe002 +#define MASK_C_SDSP 0xe003 +#define MATCH_C_ADDI4SPN 0x0 +#define MASK_C_ADDI4SPN 0xe003 +#define MATCH_C_FLD 0x2000 +#define MASK_C_FLD 0xe003 +#define MATCH_C_LW 0x4000 +#define MASK_C_LW 0xe003 +#define MATCH_C_FLW 0x6000 +#define MASK_C_FLW 0xe003 +#define MATCH_C_FSD 0xa000 +#define MASK_C_FSD 0xe003 +#define MATCH_C_SW 0xc000 +#define MASK_C_SW 0xe003 +#define MATCH_C_FSW 0xe000 +#define MASK_C_FSW 0xe003 +#define MATCH_C_ADDI 0x1 +#define MASK_C_ADDI 0xe003 +#define MATCH_C_JAL 0x2001 +#define MASK_C_JAL 0xe003 +#define MATCH_C_LI 0x4001 +#define MASK_C_LI 0xe003 +#define MATCH_C_LUI 0x6001 +#define MASK_C_LUI 0xe003 +#define MATCH_C_SRLI 0x8001 +#define MASK_C_SRLI 0xec03 +#define MATCH_C_SRAI 0x8401 +#define MASK_C_SRAI 0xec03 +#define MATCH_C_ANDI 0x8801 +#define MASK_C_ANDI 0xec03 +#define MATCH_C_SUB 0x8c01 +#define MASK_C_SUB 0xfc63 +#define MATCH_C_XOR 0x8c21 +#define MASK_C_XOR 0xfc63 +#define MATCH_C_OR 0x8c41 +#define MASK_C_OR 0xfc63 +#define MATCH_C_AND 0x8c61 +#define MASK_C_AND 0xfc63 +#define MATCH_C_SUBW 0x9c01 +#define MASK_C_SUBW 0xfc63 +#define MATCH_C_ADDW 0x9c21 +#define MASK_C_ADDW 0xfc63 +#define MATCH_C_J 0xa001 +#define MASK_C_J 0xe003 +#define MATCH_C_BEQZ 0xc001 +#define MASK_C_BEQZ 0xe003 +#define MATCH_C_BNEZ 0xe001 +#define MASK_C_BNEZ 0xe003 +#define MATCH_C_SLLI 0x2 +#define MASK_C_SLLI 0xe003 +#define MATCH_C_FLDSP 0x2002 +#define MASK_C_FLDSP 0xe003 +#define MATCH_C_LWSP 0x4002 +#define MASK_C_LWSP 0xe003 +#define MATCH_C_FLWSP 0x6002 +#define MASK_C_FLWSP 0xe003 +#define MATCH_C_MV 0x8002 +#define MASK_C_MV 0xf003 +#define MATCH_C_ADD 0x9002 +#define MASK_C_ADD 0xf003 +#define MATCH_C_FSDSP 0xa002 +#define MASK_C_FSDSP 0xe003 +#define MATCH_C_SWSP 0xc002 +#define MASK_C_SWSP 0xe003 +#define MATCH_C_FSWSP 0xe002 +#define MASK_C_FSWSP 0xe003 +#define MATCH_CUSTOM0 0xb +#define MASK_CUSTOM0 0x707f +#define MATCH_CUSTOM0_RS1 0x200b +#define MASK_CUSTOM0_RS1 0x707f +#define MATCH_CUSTOM0_RS1_RS2 0x300b +#define MASK_CUSTOM0_RS1_RS2 0x707f +#define MATCH_CUSTOM0_RD 0x400b +#define MASK_CUSTOM0_RD 0x707f +#define MATCH_CUSTOM0_RD_RS1 0x600b +#define MASK_CUSTOM0_RD_RS1 0x707f +#define MATCH_CUSTOM0_RD_RS1_RS2 0x700b +#define MASK_CUSTOM0_RD_RS1_RS2 0x707f +#define MATCH_CUSTOM1 0x2b +#define MASK_CUSTOM1 0x707f +#define MATCH_CUSTOM1_RS1 0x202b +#define MASK_CUSTOM1_RS1 0x707f +#define MATCH_CUSTOM1_RS1_RS2 0x302b +#define MASK_CUSTOM1_RS1_RS2 0x707f +#define MATCH_CUSTOM1_RD 0x402b +#define MASK_CUSTOM1_RD 0x707f +#define MATCH_CUSTOM1_RD_RS1 0x602b +#define MASK_CUSTOM1_RD_RS1 0x707f +#define MATCH_CUSTOM1_RD_RS1_RS2 0x702b +#define MASK_CUSTOM1_RD_RS1_RS2 0x707f +#define MATCH_CUSTOM2 0x5b +#define MASK_CUSTOM2 0x707f +#define MATCH_CUSTOM2_RS1 0x205b +#define MASK_CUSTOM2_RS1 0x707f +#define MATCH_CUSTOM2_RS1_RS2 0x305b +#define MASK_CUSTOM2_RS1_RS2 0x707f +#define MATCH_CUSTOM2_RD 0x405b +#define MASK_CUSTOM2_RD 0x707f +#define MATCH_CUSTOM2_RD_RS1 0x605b +#define MASK_CUSTOM2_RD_RS1 0x707f +#define MATCH_CUSTOM2_RD_RS1_RS2 0x705b +#define MASK_CUSTOM2_RD_RS1_RS2 0x707f +#define MATCH_CUSTOM3 0x7b +#define MASK_CUSTOM3 0x707f +#define MATCH_CUSTOM3_RS1 0x207b +#define MASK_CUSTOM3_RS1 0x707f +#define MATCH_CUSTOM3_RS1_RS2 0x307b +#define MASK_CUSTOM3_RS1_RS2 0x707f +#define MATCH_CUSTOM3_RD 0x407b +#define MASK_CUSTOM3_RD 0x707f +#define MATCH_CUSTOM3_RD_RS1 0x607b +#define MASK_CUSTOM3_RD_RS1 0x707f +#define MATCH_CUSTOM3_RD_RS1_RS2 0x707b +#define MASK_CUSTOM3_RD_RS1_RS2 0x707f +#define CSR_FFLAGS 0x1 +#define CSR_FRM 0x2 +#define CSR_FCSR 0x3 +#define CSR_CYCLE 0xc00 +#define CSR_TIME 0xc01 +#define CSR_INSTRET 0xc02 +#define CSR_HPMCOUNTER3 0xc03 +#define CSR_HPMCOUNTER4 0xc04 +#define CSR_HPMCOUNTER5 0xc05 +#define CSR_HPMCOUNTER6 0xc06 +#define CSR_HPMCOUNTER7 0xc07 +#define CSR_HPMCOUNTER8 0xc08 +#define CSR_HPMCOUNTER9 0xc09 +#define CSR_HPMCOUNTER10 0xc0a +#define CSR_HPMCOUNTER11 0xc0b +#define CSR_HPMCOUNTER12 0xc0c +#define CSR_HPMCOUNTER13 0xc0d +#define CSR_HPMCOUNTER14 0xc0e +#define CSR_HPMCOUNTER15 0xc0f +#define CSR_HPMCOUNTER16 0xc10 +#define CSR_HPMCOUNTER17 0xc11 +#define CSR_HPMCOUNTER18 0xc12 +#define CSR_HPMCOUNTER19 0xc13 +#define CSR_HPMCOUNTER20 0xc14 +#define CSR_HPMCOUNTER21 0xc15 +#define CSR_HPMCOUNTER22 0xc16 +#define CSR_HPMCOUNTER23 0xc17 +#define CSR_HPMCOUNTER24 0xc18 +#define CSR_HPMCOUNTER25 0xc19 +#define CSR_HPMCOUNTER26 0xc1a +#define CSR_HPMCOUNTER27 0xc1b +#define CSR_HPMCOUNTER28 0xc1c +#define CSR_HPMCOUNTER29 0xc1d +#define CSR_HPMCOUNTER30 0xc1e +#define CSR_HPMCOUNTER31 0xc1f +#define CSR_SSTATUS 0x100 +#define CSR_SIE 0x104 +#define CSR_STVEC 0x105 +#define CSR_SSCRATCH 0x140 +#define CSR_SEPC 0x141 +#define CSR_SCAUSE 0x142 +#define CSR_SBADADDR 0x143 +#define CSR_SIP 0x144 +#define CSR_SPTBR 0x180 +#define CSR_MSTATUS 0x300 +#define CSR_MISA 0x301 +#define CSR_MEDELEG 0x302 +#define CSR_MIDELEG 0x303 +#define CSR_MIE 0x304 +#define CSR_MTVEC 0x305 +#define CSR_MCOUNTEREN 0x306 +#define CSR_MSCRATCH 0x340 +#define CSR_MEPC 0x341 +#define CSR_MCAUSE 0x342 +#define CSR_MBADADDR 0x343 +#define CSR_MIP 0x344 +#define CSR_TSELECT 0x7a0 +#define CSR_TDATA1 0x7a1 +#define CSR_TDATA2 0x7a2 +#define CSR_TDATA3 0x7a3 +#define CSR_DCSR 0x7b0 +#define CSR_DPC 0x7b1 +#define CSR_DSCRATCH 0x7b2 +#define CSR_MCYCLE 0xb00 +#define CSR_MINSTRET 0xb02 +#define CSR_MHPMCOUNTER3 0xb03 +#define CSR_MHPMCOUNTER4 0xb04 +#define CSR_MHPMCOUNTER5 0xb05 +#define CSR_MHPMCOUNTER6 0xb06 +#define CSR_MHPMCOUNTER7 0xb07 +#define CSR_MHPMCOUNTER8 0xb08 +#define CSR_MHPMCOUNTER9 0xb09 +#define CSR_MHPMCOUNTER10 0xb0a +#define CSR_MHPMCOUNTER11 0xb0b +#define CSR_MHPMCOUNTER12 0xb0c +#define CSR_MHPMCOUNTER13 0xb0d +#define CSR_MHPMCOUNTER14 0xb0e +#define CSR_MHPMCOUNTER15 0xb0f +#define CSR_MHPMCOUNTER16 0xb10 +#define CSR_MHPMCOUNTER17 0xb11 +#define CSR_MHPMCOUNTER18 0xb12 +#define CSR_MHPMCOUNTER19 0xb13 +#define CSR_MHPMCOUNTER20 0xb14 +#define CSR_MHPMCOUNTER21 0xb15 +#define CSR_MHPMCOUNTER22 0xb16 +#define CSR_MHPMCOUNTER23 0xb17 +#define CSR_MHPMCOUNTER24 0xb18 +#define CSR_MHPMCOUNTER25 0xb19 +#define CSR_MHPMCOUNTER26 0xb1a +#define CSR_MHPMCOUNTER27 0xb1b +#define CSR_MHPMCOUNTER28 0xb1c +#define CSR_MHPMCOUNTER29 0xb1d +#define CSR_MHPMCOUNTER30 0xb1e +#define CSR_MHPMCOUNTER31 0xb1f +#define CSR_MUCOUNTEREN 0x320 +#define CSR_MSCOUNTEREN 0x321 +#define CSR_MHPMEVENT3 0x323 +#define CSR_MHPMEVENT4 0x324 +#define CSR_MHPMEVENT5 0x325 +#define CSR_MHPMEVENT6 0x326 +#define CSR_MHPMEVENT7 0x327 +#define CSR_MHPMEVENT8 0x328 +#define CSR_MHPMEVENT9 0x329 +#define CSR_MHPMEVENT10 0x32a +#define CSR_MHPMEVENT11 0x32b +#define CSR_MHPMEVENT12 0x32c +#define CSR_MHPMEVENT13 0x32d +#define CSR_MHPMEVENT14 0x32e +#define CSR_MHPMEVENT15 0x32f +#define CSR_MHPMEVENT16 0x330 +#define CSR_MHPMEVENT17 0x331 +#define CSR_MHPMEVENT18 0x332 +#define CSR_MHPMEVENT19 0x333 +#define CSR_MHPMEVENT20 0x334 +#define CSR_MHPMEVENT21 0x335 +#define CSR_MHPMEVENT22 0x336 +#define CSR_MHPMEVENT23 0x337 +#define CSR_MHPMEVENT24 0x338 +#define CSR_MHPMEVENT25 0x339 +#define CSR_MHPMEVENT26 0x33a +#define CSR_MHPMEVENT27 0x33b +#define CSR_MHPMEVENT28 0x33c +#define CSR_MHPMEVENT29 0x33d +#define CSR_MHPMEVENT30 0x33e +#define CSR_MHPMEVENT31 0x33f +#define CSR_MVENDORID 0xf11 +#define CSR_MARCHID 0xf12 +#define CSR_MIMPID 0xf13 +#define CSR_MHARTID 0xf14 +#define CSR_CYCLEH 0xc80 +#define CSR_TIMEH 0xc81 +#define CSR_INSTRETH 0xc82 +#define CSR_HPMCOUNTER3H 0xc83 +#define CSR_HPMCOUNTER4H 0xc84 +#define CSR_HPMCOUNTER5H 0xc85 +#define CSR_HPMCOUNTER6H 0xc86 +#define CSR_HPMCOUNTER7H 0xc87 +#define CSR_HPMCOUNTER8H 0xc88 +#define CSR_HPMCOUNTER9H 0xc89 +#define CSR_HPMCOUNTER10H 0xc8a +#define CSR_HPMCOUNTER11H 0xc8b +#define CSR_HPMCOUNTER12H 0xc8c +#define CSR_HPMCOUNTER13H 0xc8d +#define CSR_HPMCOUNTER14H 0xc8e +#define CSR_HPMCOUNTER15H 0xc8f +#define CSR_HPMCOUNTER16H 0xc90 +#define CSR_HPMCOUNTER17H 0xc91 +#define CSR_HPMCOUNTER18H 0xc92 +#define CSR_HPMCOUNTER19H 0xc93 +#define CSR_HPMCOUNTER20H 0xc94 +#define CSR_HPMCOUNTER21H 0xc95 +#define CSR_HPMCOUNTER22H 0xc96 +#define CSR_HPMCOUNTER23H 0xc97 +#define CSR_HPMCOUNTER24H 0xc98 +#define CSR_HPMCOUNTER25H 0xc99 +#define CSR_HPMCOUNTER26H 0xc9a +#define CSR_HPMCOUNTER27H 0xc9b +#define CSR_HPMCOUNTER28H 0xc9c +#define CSR_HPMCOUNTER29H 0xc9d +#define CSR_HPMCOUNTER30H 0xc9e +#define CSR_HPMCOUNTER31H 0xc9f +#define CSR_MCYCLEH 0xb80 +#define CSR_MINSTRETH 0xb82 +#define CSR_MHPMCOUNTER3H 0xb83 +#define CSR_MHPMCOUNTER4H 0xb84 +#define CSR_MHPMCOUNTER5H 0xb85 +#define CSR_MHPMCOUNTER6H 0xb86 +#define CSR_MHPMCOUNTER7H 0xb87 +#define CSR_MHPMCOUNTER8H 0xb88 +#define CSR_MHPMCOUNTER9H 0xb89 +#define CSR_MHPMCOUNTER10H 0xb8a +#define CSR_MHPMCOUNTER11H 0xb8b +#define CSR_MHPMCOUNTER12H 0xb8c +#define CSR_MHPMCOUNTER13H 0xb8d +#define CSR_MHPMCOUNTER14H 0xb8e +#define CSR_MHPMCOUNTER15H 0xb8f +#define CSR_MHPMCOUNTER16H 0xb90 +#define CSR_MHPMCOUNTER17H 0xb91 +#define CSR_MHPMCOUNTER18H 0xb92 +#define CSR_MHPMCOUNTER19H 0xb93 +#define CSR_MHPMCOUNTER20H 0xb94 +#define CSR_MHPMCOUNTER21H 0xb95 +#define CSR_MHPMCOUNTER22H 0xb96 +#define CSR_MHPMCOUNTER23H 0xb97 +#define CSR_MHPMCOUNTER24H 0xb98 +#define CSR_MHPMCOUNTER25H 0xb99 +#define CSR_MHPMCOUNTER26H 0xb9a +#define CSR_MHPMCOUNTER27H 0xb9b +#define CSR_MHPMCOUNTER28H 0xb9c +#define CSR_MHPMCOUNTER29H 0xb9d +#define CSR_MHPMCOUNTER30H 0xb9e +#define CSR_MHPMCOUNTER31H 0xb9f + + +#define CSR_MTVT 0x307 +#define CSR_MNXTI 0x345 + +#define CSR_MCOUNTINHIBIT 0x320 + +#define CSR_MNVEC 0x7C3 + +#define CSR_MTVT2 0x7EC +#define CSR_JALMNXTI 0x7ED +#define CSR_PUSHMCAUSE 0x7EE +#define CSR_PUSHMEPC 0x7EF +#define CSR_PUSHMSUBM 0x7EB + +#define CSR_WFE 0x810 +#define CSR_SLEEPVALUE 0x811 +#define CSR_TXEVT 0x812 + +#define CSR_MMISC_CTL 0x7d0 +#define CSR_MSUBM 0x7c4 + + +#define CAUSE_MISALIGNED_FETCH 0x0 +#define CAUSE_FAULT_FETCH 0x1 +#define CAUSE_ILLEGAL_INSTRUCTION 0x2 +#define CAUSE_BREAKPOINT 0x3 +#define CAUSE_MISALIGNED_LOAD 0x4 +#define CAUSE_FAULT_LOAD 0x5 +#define CAUSE_MISALIGNED_STORE 0x6 +#define CAUSE_FAULT_STORE 0x7 +#define CAUSE_USER_ECALL 0x8 +#define CAUSE_SUPERVISOR_ECALL 0x9 +#define CAUSE_HYPERVISOR_ECALL 0xa +#define CAUSE_MACHINE_ECALL 0xb +#endif +#ifdef DECLARE_INSN +DECLARE_INSN(beq, MATCH_BEQ, MASK_BEQ) +DECLARE_INSN(bne, MATCH_BNE, MASK_BNE) +DECLARE_INSN(blt, MATCH_BLT, MASK_BLT) +DECLARE_INSN(bge, MATCH_BGE, MASK_BGE) +DECLARE_INSN(bltu, MATCH_BLTU, MASK_BLTU) +DECLARE_INSN(bgeu, MATCH_BGEU, MASK_BGEU) +DECLARE_INSN(jalr, MATCH_JALR, MASK_JALR) +DECLARE_INSN(jal, MATCH_JAL, MASK_JAL) +DECLARE_INSN(lui, MATCH_LUI, MASK_LUI) +DECLARE_INSN(auipc, MATCH_AUIPC, MASK_AUIPC) +DECLARE_INSN(addi, MATCH_ADDI, MASK_ADDI) +DECLARE_INSN(slli, MATCH_SLLI, MASK_SLLI) +DECLARE_INSN(slti, MATCH_SLTI, MASK_SLTI) +DECLARE_INSN(sltiu, MATCH_SLTIU, MASK_SLTIU) +DECLARE_INSN(xori, MATCH_XORI, MASK_XORI) +DECLARE_INSN(srli, MATCH_SRLI, MASK_SRLI) +DECLARE_INSN(srai, MATCH_SRAI, MASK_SRAI) +DECLARE_INSN(ori, MATCH_ORI, MASK_ORI) +DECLARE_INSN(andi, MATCH_ANDI, MASK_ANDI) +DECLARE_INSN(add, MATCH_ADD, MASK_ADD) +DECLARE_INSN(sub, MATCH_SUB, MASK_SUB) +DECLARE_INSN(sll, MATCH_SLL, MASK_SLL) +DECLARE_INSN(slt, MATCH_SLT, MASK_SLT) +DECLARE_INSN(sltu, MATCH_SLTU, MASK_SLTU) +DECLARE_INSN(xor, MATCH_XOR, MASK_XOR) +DECLARE_INSN(srl, MATCH_SRL, MASK_SRL) +DECLARE_INSN(sra, MATCH_SRA, MASK_SRA) +DECLARE_INSN(or, MATCH_OR, MASK_OR) +DECLARE_INSN(and, MATCH_AND, MASK_AND) +DECLARE_INSN(addiw, MATCH_ADDIW, MASK_ADDIW) +DECLARE_INSN(slliw, MATCH_SLLIW, MASK_SLLIW) +DECLARE_INSN(srliw, MATCH_SRLIW, MASK_SRLIW) +DECLARE_INSN(sraiw, MATCH_SRAIW, MASK_SRAIW) +DECLARE_INSN(addw, MATCH_ADDW, MASK_ADDW) +DECLARE_INSN(subw, MATCH_SUBW, MASK_SUBW) +DECLARE_INSN(sllw, MATCH_SLLW, MASK_SLLW) +DECLARE_INSN(srlw, MATCH_SRLW, MASK_SRLW) +DECLARE_INSN(sraw, MATCH_SRAW, MASK_SRAW) +DECLARE_INSN(lb, MATCH_LB, MASK_LB) +DECLARE_INSN(lh, MATCH_LH, MASK_LH) +DECLARE_INSN(lw, MATCH_LW, MASK_LW) +DECLARE_INSN(ld, MATCH_LD, MASK_LD) +DECLARE_INSN(lbu, MATCH_LBU, MASK_LBU) +DECLARE_INSN(lhu, MATCH_LHU, MASK_LHU) +DECLARE_INSN(lwu, MATCH_LWU, MASK_LWU) +DECLARE_INSN(sb, MATCH_SB, MASK_SB) +DECLARE_INSN(sh, MATCH_SH, MASK_SH) +DECLARE_INSN(sw, MATCH_SW, MASK_SW) +DECLARE_INSN(sd, MATCH_SD, MASK_SD) +DECLARE_INSN(fence, MATCH_FENCE, MASK_FENCE) +DECLARE_INSN(fence_i, MATCH_FENCE_I, MASK_FENCE_I) +DECLARE_INSN(mul, MATCH_MUL, MASK_MUL) +DECLARE_INSN(mulh, MATCH_MULH, MASK_MULH) +DECLARE_INSN(mulhsu, MATCH_MULHSU, MASK_MULHSU) +DECLARE_INSN(mulhu, MATCH_MULHU, MASK_MULHU) +DECLARE_INSN(div, MATCH_DIV, MASK_DIV) +DECLARE_INSN(divu, MATCH_DIVU, MASK_DIVU) +DECLARE_INSN(rem, MATCH_REM, MASK_REM) +DECLARE_INSN(remu, MATCH_REMU, MASK_REMU) +DECLARE_INSN(mulw, MATCH_MULW, MASK_MULW) +DECLARE_INSN(divw, MATCH_DIVW, MASK_DIVW) +DECLARE_INSN(divuw, MATCH_DIVUW, MASK_DIVUW) +DECLARE_INSN(remw, MATCH_REMW, MASK_REMW) +DECLARE_INSN(remuw, MATCH_REMUW, MASK_REMUW) +DECLARE_INSN(amoadd_w, MATCH_AMOADD_W, MASK_AMOADD_W) +DECLARE_INSN(amoxor_w, MATCH_AMOXOR_W, MASK_AMOXOR_W) +DECLARE_INSN(amoor_w, MATCH_AMOOR_W, MASK_AMOOR_W) +DECLARE_INSN(amoand_w, MATCH_AMOAND_W, MASK_AMOAND_W) +DECLARE_INSN(amomin_w, MATCH_AMOMIN_W, MASK_AMOMIN_W) +DECLARE_INSN(amomax_w, MATCH_AMOMAX_W, MASK_AMOMAX_W) +DECLARE_INSN(amominu_w, MATCH_AMOMINU_W, MASK_AMOMINU_W) +DECLARE_INSN(amomaxu_w, MATCH_AMOMAXU_W, MASK_AMOMAXU_W) +DECLARE_INSN(amoswap_w, MATCH_AMOSWAP_W, MASK_AMOSWAP_W) +DECLARE_INSN(lr_w, MATCH_LR_W, MASK_LR_W) +DECLARE_INSN(sc_w, MATCH_SC_W, MASK_SC_W) +DECLARE_INSN(amoadd_d, MATCH_AMOADD_D, MASK_AMOADD_D) +DECLARE_INSN(amoxor_d, MATCH_AMOXOR_D, MASK_AMOXOR_D) +DECLARE_INSN(amoor_d, MATCH_AMOOR_D, MASK_AMOOR_D) +DECLARE_INSN(amoand_d, MATCH_AMOAND_D, MASK_AMOAND_D) +DECLARE_INSN(amomin_d, MATCH_AMOMIN_D, MASK_AMOMIN_D) +DECLARE_INSN(amomax_d, MATCH_AMOMAX_D, MASK_AMOMAX_D) +DECLARE_INSN(amominu_d, MATCH_AMOMINU_D, MASK_AMOMINU_D) +DECLARE_INSN(amomaxu_d, MATCH_AMOMAXU_D, MASK_AMOMAXU_D) +DECLARE_INSN(amoswap_d, MATCH_AMOSWAP_D, MASK_AMOSWAP_D) +DECLARE_INSN(lr_d, MATCH_LR_D, MASK_LR_D) +DECLARE_INSN(sc_d, MATCH_SC_D, MASK_SC_D) +DECLARE_INSN(ecall, MATCH_ECALL, MASK_ECALL) +DECLARE_INSN(ebreak, MATCH_EBREAK, MASK_EBREAK) +DECLARE_INSN(uret, MATCH_URET, MASK_URET) +DECLARE_INSN(sret, MATCH_SRET, MASK_SRET) +DECLARE_INSN(hret, MATCH_HRET, MASK_HRET) +DECLARE_INSN(mret, MATCH_MRET, MASK_MRET) +DECLARE_INSN(dret, MATCH_DRET, MASK_DRET) +DECLARE_INSN(sfence_vm, MATCH_SFENCE_VM, MASK_SFENCE_VM) +DECLARE_INSN(wfi, MATCH_WFI, MASK_WFI) +DECLARE_INSN(csrrw, MATCH_CSRRW, MASK_CSRRW) +DECLARE_INSN(csrrs, MATCH_CSRRS, MASK_CSRRS) +DECLARE_INSN(csrrc, MATCH_CSRRC, MASK_CSRRC) +DECLARE_INSN(csrrwi, MATCH_CSRRWI, MASK_CSRRWI) +DECLARE_INSN(csrrsi, MATCH_CSRRSI, MASK_CSRRSI) +DECLARE_INSN(csrrci, MATCH_CSRRCI, MASK_CSRRCI) +DECLARE_INSN(fadd_s, MATCH_FADD_S, MASK_FADD_S) +DECLARE_INSN(fsub_s, MATCH_FSUB_S, MASK_FSUB_S) +DECLARE_INSN(fmul_s, MATCH_FMUL_S, MASK_FMUL_S) +DECLARE_INSN(fdiv_s, MATCH_FDIV_S, MASK_FDIV_S) +DECLARE_INSN(fsgnj_s, MATCH_FSGNJ_S, MASK_FSGNJ_S) +DECLARE_INSN(fsgnjn_s, MATCH_FSGNJN_S, MASK_FSGNJN_S) +DECLARE_INSN(fsgnjx_s, MATCH_FSGNJX_S, MASK_FSGNJX_S) +DECLARE_INSN(fmin_s, MATCH_FMIN_S, MASK_FMIN_S) +DECLARE_INSN(fmax_s, MATCH_FMAX_S, MASK_FMAX_S) +DECLARE_INSN(fsqrt_s, MATCH_FSQRT_S, MASK_FSQRT_S) +DECLARE_INSN(fadd_d, MATCH_FADD_D, MASK_FADD_D) +DECLARE_INSN(fsub_d, MATCH_FSUB_D, MASK_FSUB_D) +DECLARE_INSN(fmul_d, MATCH_FMUL_D, MASK_FMUL_D) +DECLARE_INSN(fdiv_d, MATCH_FDIV_D, MASK_FDIV_D) +DECLARE_INSN(fsgnj_d, MATCH_FSGNJ_D, MASK_FSGNJ_D) +DECLARE_INSN(fsgnjn_d, MATCH_FSGNJN_D, MASK_FSGNJN_D) +DECLARE_INSN(fsgnjx_d, MATCH_FSGNJX_D, MASK_FSGNJX_D) +DECLARE_INSN(fmin_d, MATCH_FMIN_D, MASK_FMIN_D) +DECLARE_INSN(fmax_d, MATCH_FMAX_D, MASK_FMAX_D) +DECLARE_INSN(fcvt_s_d, MATCH_FCVT_S_D, MASK_FCVT_S_D) +DECLARE_INSN(fcvt_d_s, MATCH_FCVT_D_S, MASK_FCVT_D_S) +DECLARE_INSN(fsqrt_d, MATCH_FSQRT_D, MASK_FSQRT_D) +DECLARE_INSN(fle_s, MATCH_FLE_S, MASK_FLE_S) +DECLARE_INSN(flt_s, MATCH_FLT_S, MASK_FLT_S) +DECLARE_INSN(feq_s, MATCH_FEQ_S, MASK_FEQ_S) +DECLARE_INSN(fle_d, MATCH_FLE_D, MASK_FLE_D) +DECLARE_INSN(flt_d, MATCH_FLT_D, MASK_FLT_D) +DECLARE_INSN(feq_d, MATCH_FEQ_D, MASK_FEQ_D) +DECLARE_INSN(fcvt_w_s, MATCH_FCVT_W_S, MASK_FCVT_W_S) +DECLARE_INSN(fcvt_wu_s, MATCH_FCVT_WU_S, MASK_FCVT_WU_S) +DECLARE_INSN(fcvt_l_s, MATCH_FCVT_L_S, MASK_FCVT_L_S) +DECLARE_INSN(fcvt_lu_s, MATCH_FCVT_LU_S, MASK_FCVT_LU_S) +DECLARE_INSN(fmv_x_s, MATCH_FMV_X_S, MASK_FMV_X_S) +DECLARE_INSN(fclass_s, MATCH_FCLASS_S, MASK_FCLASS_S) +DECLARE_INSN(fcvt_w_d, MATCH_FCVT_W_D, MASK_FCVT_W_D) +DECLARE_INSN(fcvt_wu_d, MATCH_FCVT_WU_D, MASK_FCVT_WU_D) +DECLARE_INSN(fcvt_l_d, MATCH_FCVT_L_D, MASK_FCVT_L_D) +DECLARE_INSN(fcvt_lu_d, MATCH_FCVT_LU_D, MASK_FCVT_LU_D) +DECLARE_INSN(fmv_x_d, MATCH_FMV_X_D, MASK_FMV_X_D) +DECLARE_INSN(fclass_d, MATCH_FCLASS_D, MASK_FCLASS_D) +DECLARE_INSN(fcvt_s_w, MATCH_FCVT_S_W, MASK_FCVT_S_W) +DECLARE_INSN(fcvt_s_wu, MATCH_FCVT_S_WU, MASK_FCVT_S_WU) +DECLARE_INSN(fcvt_s_l, MATCH_FCVT_S_L, MASK_FCVT_S_L) +DECLARE_INSN(fcvt_s_lu, MATCH_FCVT_S_LU, MASK_FCVT_S_LU) +DECLARE_INSN(fmv_s_x, MATCH_FMV_S_X, MASK_FMV_S_X) +DECLARE_INSN(fcvt_d_w, MATCH_FCVT_D_W, MASK_FCVT_D_W) +DECLARE_INSN(fcvt_d_wu, MATCH_FCVT_D_WU, MASK_FCVT_D_WU) +DECLARE_INSN(fcvt_d_l, MATCH_FCVT_D_L, MASK_FCVT_D_L) +DECLARE_INSN(fcvt_d_lu, MATCH_FCVT_D_LU, MASK_FCVT_D_LU) +DECLARE_INSN(fmv_d_x, MATCH_FMV_D_X, MASK_FMV_D_X) +DECLARE_INSN(flw, MATCH_FLW, MASK_FLW) +DECLARE_INSN(fld, MATCH_FLD, MASK_FLD) +DECLARE_INSN(fsw, MATCH_FSW, MASK_FSW) +DECLARE_INSN(fsd, MATCH_FSD, MASK_FSD) +DECLARE_INSN(fmadd_s, MATCH_FMADD_S, MASK_FMADD_S) +DECLARE_INSN(fmsub_s, MATCH_FMSUB_S, MASK_FMSUB_S) +DECLARE_INSN(fnmsub_s, MATCH_FNMSUB_S, MASK_FNMSUB_S) +DECLARE_INSN(fnmadd_s, MATCH_FNMADD_S, MASK_FNMADD_S) +DECLARE_INSN(fmadd_d, MATCH_FMADD_D, MASK_FMADD_D) +DECLARE_INSN(fmsub_d, MATCH_FMSUB_D, MASK_FMSUB_D) +DECLARE_INSN(fnmsub_d, MATCH_FNMSUB_D, MASK_FNMSUB_D) +DECLARE_INSN(fnmadd_d, MATCH_FNMADD_D, MASK_FNMADD_D) +DECLARE_INSN(c_nop, MATCH_C_NOP, MASK_C_NOP) +DECLARE_INSN(c_addi16sp, MATCH_C_ADDI16SP, MASK_C_ADDI16SP) +DECLARE_INSN(c_jr, MATCH_C_JR, MASK_C_JR) +DECLARE_INSN(c_jalr, MATCH_C_JALR, MASK_C_JALR) +DECLARE_INSN(c_ebreak, MATCH_C_EBREAK, MASK_C_EBREAK) +DECLARE_INSN(c_ld, MATCH_C_LD, MASK_C_LD) +DECLARE_INSN(c_sd, MATCH_C_SD, MASK_C_SD) +DECLARE_INSN(c_addiw, MATCH_C_ADDIW, MASK_C_ADDIW) +DECLARE_INSN(c_ldsp, MATCH_C_LDSP, MASK_C_LDSP) +DECLARE_INSN(c_sdsp, MATCH_C_SDSP, MASK_C_SDSP) +DECLARE_INSN(c_addi4spn, MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN) +DECLARE_INSN(c_fld, MATCH_C_FLD, MASK_C_FLD) +DECLARE_INSN(c_lw, MATCH_C_LW, MASK_C_LW) +DECLARE_INSN(c_flw, MATCH_C_FLW, MASK_C_FLW) +DECLARE_INSN(c_fsd, MATCH_C_FSD, MASK_C_FSD) +DECLARE_INSN(c_sw, MATCH_C_SW, MASK_C_SW) +DECLARE_INSN(c_fsw, MATCH_C_FSW, MASK_C_FSW) +DECLARE_INSN(c_addi, MATCH_C_ADDI, MASK_C_ADDI) +DECLARE_INSN(c_jal, MATCH_C_JAL, MASK_C_JAL) +DECLARE_INSN(c_li, MATCH_C_LI, MASK_C_LI) +DECLARE_INSN(c_lui, MATCH_C_LUI, MASK_C_LUI) +DECLARE_INSN(c_srli, MATCH_C_SRLI, MASK_C_SRLI) +DECLARE_INSN(c_srai, MATCH_C_SRAI, MASK_C_SRAI) +DECLARE_INSN(c_andi, MATCH_C_ANDI, MASK_C_ANDI) +DECLARE_INSN(c_sub, MATCH_C_SUB, MASK_C_SUB) +DECLARE_INSN(c_xor, MATCH_C_XOR, MASK_C_XOR) +DECLARE_INSN(c_or, MATCH_C_OR, MASK_C_OR) +DECLARE_INSN(c_and, MATCH_C_AND, MASK_C_AND) +DECLARE_INSN(c_subw, MATCH_C_SUBW, MASK_C_SUBW) +DECLARE_INSN(c_addw, MATCH_C_ADDW, MASK_C_ADDW) +DECLARE_INSN(c_j, MATCH_C_J, MASK_C_J) +DECLARE_INSN(c_beqz, MATCH_C_BEQZ, MASK_C_BEQZ) +DECLARE_INSN(c_bnez, MATCH_C_BNEZ, MASK_C_BNEZ) +DECLARE_INSN(c_slli, MATCH_C_SLLI, MASK_C_SLLI) +DECLARE_INSN(c_fldsp, MATCH_C_FLDSP, MASK_C_FLDSP) +DECLARE_INSN(c_lwsp, MATCH_C_LWSP, MASK_C_LWSP) +DECLARE_INSN(c_flwsp, MATCH_C_FLWSP, MASK_C_FLWSP) +DECLARE_INSN(c_mv, MATCH_C_MV, MASK_C_MV) +DECLARE_INSN(c_add, MATCH_C_ADD, MASK_C_ADD) +DECLARE_INSN(c_fsdsp, MATCH_C_FSDSP, MASK_C_FSDSP) +DECLARE_INSN(c_swsp, MATCH_C_SWSP, MASK_C_SWSP) +DECLARE_INSN(c_fswsp, MATCH_C_FSWSP, MASK_C_FSWSP) +DECLARE_INSN(custom0, MATCH_CUSTOM0, MASK_CUSTOM0) +DECLARE_INSN(custom0_rs1, MATCH_CUSTOM0_RS1, MASK_CUSTOM0_RS1) +DECLARE_INSN(custom0_rs1_rs2, MATCH_CUSTOM0_RS1_RS2, MASK_CUSTOM0_RS1_RS2) +DECLARE_INSN(custom0_rd, MATCH_CUSTOM0_RD, MASK_CUSTOM0_RD) +DECLARE_INSN(custom0_rd_rs1, MATCH_CUSTOM0_RD_RS1, MASK_CUSTOM0_RD_RS1) +DECLARE_INSN(custom0_rd_rs1_rs2, MATCH_CUSTOM0_RD_RS1_RS2, +MASK_CUSTOM0_RD_RS1_RS2) +DECLARE_INSN(custom1, MATCH_CUSTOM1, MASK_CUSTOM1) +DECLARE_INSN(custom1_rs1, MATCH_CUSTOM1_RS1, MASK_CUSTOM1_RS1) +DECLARE_INSN(custom1_rs1_rs2, MATCH_CUSTOM1_RS1_RS2, MASK_CUSTOM1_RS1_RS2) +DECLARE_INSN(custom1_rd, MATCH_CUSTOM1_RD, MASK_CUSTOM1_RD) +DECLARE_INSN(custom1_rd_rs1, MATCH_CUSTOM1_RD_RS1, MASK_CUSTOM1_RD_RS1) +DECLARE_INSN(custom1_rd_rs1_rs2, MATCH_CUSTOM1_RD_RS1_RS2, +MASK_CUSTOM1_RD_RS1_RS2) +DECLARE_INSN(custom2, MATCH_CUSTOM2, MASK_CUSTOM2) +DECLARE_INSN(custom2_rs1, MATCH_CUSTOM2_RS1, MASK_CUSTOM2_RS1) +DECLARE_INSN(custom2_rs1_rs2, MATCH_CUSTOM2_RS1_RS2, MASK_CUSTOM2_RS1_RS2) +DECLARE_INSN(custom2_rd, MATCH_CUSTOM2_RD, MASK_CUSTOM2_RD) +DECLARE_INSN(custom2_rd_rs1, MATCH_CUSTOM2_RD_RS1, MASK_CUSTOM2_RD_RS1) +DECLARE_INSN(custom2_rd_rs1_rs2, MATCH_CUSTOM2_RD_RS1_RS2, +MASK_CUSTOM2_RD_RS1_RS2) +DECLARE_INSN(custom3, MATCH_CUSTOM3, MASK_CUSTOM3) +DECLARE_INSN(custom3_rs1, MATCH_CUSTOM3_RS1, MASK_CUSTOM3_RS1) +DECLARE_INSN(custom3_rs1_rs2, MATCH_CUSTOM3_RS1_RS2, MASK_CUSTOM3_RS1_RS2) +DECLARE_INSN(custom3_rd, MATCH_CUSTOM3_RD, MASK_CUSTOM3_RD) +DECLARE_INSN(custom3_rd_rs1, MATCH_CUSTOM3_RD_RS1, MASK_CUSTOM3_RD_RS1) +DECLARE_INSN(custom3_rd_rs1_rs2, MATCH_CUSTOM3_RD_RS1_RS2, +MASK_CUSTOM3_RD_RS1_RS2) +#endif +#ifdef DECLARE_CSR +DECLARE_CSR(fflags, CSR_FFLAGS) +DECLARE_CSR(frm, CSR_FRM) +DECLARE_CSR(fcsr, CSR_FCSR) +DECLARE_CSR(cycle, CSR_CYCLE) +DECLARE_CSR(time, CSR_TIME) +DECLARE_CSR(instret, CSR_INSTRET) +DECLARE_CSR(hpmcounter3, CSR_HPMCOUNTER3) +DECLARE_CSR(hpmcounter4, CSR_HPMCOUNTER4) +DECLARE_CSR(hpmcounter5, CSR_HPMCOUNTER5) +DECLARE_CSR(hpmcounter6, CSR_HPMCOUNTER6) +DECLARE_CSR(hpmcounter7, CSR_HPMCOUNTER7) +DECLARE_CSR(hpmcounter8, CSR_HPMCOUNTER8) +DECLARE_CSR(hpmcounter9, CSR_HPMCOUNTER9) +DECLARE_CSR(hpmcounter10, CSR_HPMCOUNTER10) +DECLARE_CSR(hpmcounter11, CSR_HPMCOUNTER11) +DECLARE_CSR(hpmcounter12, CSR_HPMCOUNTER12) +DECLARE_CSR(hpmcounter13, CSR_HPMCOUNTER13) +DECLARE_CSR(hpmcounter14, CSR_HPMCOUNTER14) +DECLARE_CSR(hpmcounter15, CSR_HPMCOUNTER15) +DECLARE_CSR(hpmcounter16, CSR_HPMCOUNTER16) +DECLARE_CSR(hpmcounter17, CSR_HPMCOUNTER17) +DECLARE_CSR(hpmcounter18, CSR_HPMCOUNTER18) +DECLARE_CSR(hpmcounter19, CSR_HPMCOUNTER19) +DECLARE_CSR(hpmcounter20, CSR_HPMCOUNTER20) +DECLARE_CSR(hpmcounter21, CSR_HPMCOUNTER21) +DECLARE_CSR(hpmcounter22, CSR_HPMCOUNTER22) +DECLARE_CSR(hpmcounter23, CSR_HPMCOUNTER23) +DECLARE_CSR(hpmcounter24, CSR_HPMCOUNTER24) +DECLARE_CSR(hpmcounter25, CSR_HPMCOUNTER25) +DECLARE_CSR(hpmcounter26, CSR_HPMCOUNTER26) +DECLARE_CSR(hpmcounter27, CSR_HPMCOUNTER27) +DECLARE_CSR(hpmcounter28, CSR_HPMCOUNTER28) +DECLARE_CSR(hpmcounter29, CSR_HPMCOUNTER29) +DECLARE_CSR(hpmcounter30, CSR_HPMCOUNTER30) +DECLARE_CSR(hpmcounter31, CSR_HPMCOUNTER31) +DECLARE_CSR(sstatus, CSR_SSTATUS) +DECLARE_CSR(sie, CSR_SIE) +DECLARE_CSR(stvec, CSR_STVEC) +DECLARE_CSR(sscratch, CSR_SSCRATCH) +DECLARE_CSR(sepc, CSR_SEPC) +DECLARE_CSR(scause, CSR_SCAUSE) +DECLARE_CSR(sbadaddr, CSR_SBADADDR) +DECLARE_CSR(sip, CSR_SIP) +DECLARE_CSR(sptbr, CSR_SPTBR) +DECLARE_CSR(mstatus, CSR_MSTATUS) +DECLARE_CSR(misa, CSR_MISA) +DECLARE_CSR(medeleg, CSR_MEDELEG) +DECLARE_CSR(mideleg, CSR_MIDELEG) +DECLARE_CSR(mie, CSR_MIE) +DECLARE_CSR(mtvec, CSR_MTVEC) +DECLARE_CSR(mscratch, CSR_MSCRATCH) +DECLARE_CSR(mepc, CSR_MEPC) +DECLARE_CSR(mcause, CSR_MCAUSE) +DECLARE_CSR(mbadaddr, CSR_MBADADDR) +DECLARE_CSR(mip, CSR_MIP) +DECLARE_CSR(tselect, CSR_TSELECT) +DECLARE_CSR(tdata1, CSR_TDATA1) +DECLARE_CSR(tdata2, CSR_TDATA2) +DECLARE_CSR(tdata3, CSR_TDATA3) +DECLARE_CSR(dcsr, CSR_DCSR) +DECLARE_CSR(dpc, CSR_DPC) +DECLARE_CSR(dscratch, CSR_DSCRATCH) +DECLARE_CSR(mcycle, CSR_MCYCLE) +DECLARE_CSR(minstret, CSR_MINSTRET) +DECLARE_CSR(mhpmcounter3, CSR_MHPMCOUNTER3) +DECLARE_CSR(mhpmcounter4, CSR_MHPMCOUNTER4) +DECLARE_CSR(mhpmcounter5, CSR_MHPMCOUNTER5) +DECLARE_CSR(mhpmcounter6, CSR_MHPMCOUNTER6) +DECLARE_CSR(mhpmcounter7, CSR_MHPMCOUNTER7) +DECLARE_CSR(mhpmcounter8, CSR_MHPMCOUNTER8) +DECLARE_CSR(mhpmcounter9, CSR_MHPMCOUNTER9) +DECLARE_CSR(mhpmcounter10, CSR_MHPMCOUNTER10) +DECLARE_CSR(mhpmcounter11, CSR_MHPMCOUNTER11) +DECLARE_CSR(mhpmcounter12, CSR_MHPMCOUNTER12) +DECLARE_CSR(mhpmcounter13, CSR_MHPMCOUNTER13) +DECLARE_CSR(mhpmcounter14, CSR_MHPMCOUNTER14) +DECLARE_CSR(mhpmcounter15, CSR_MHPMCOUNTER15) +DECLARE_CSR(mhpmcounter16, CSR_MHPMCOUNTER16) +DECLARE_CSR(mhpmcounter17, CSR_MHPMCOUNTER17) +DECLARE_CSR(mhpmcounter18, CSR_MHPMCOUNTER18) +DECLARE_CSR(mhpmcounter19, CSR_MHPMCOUNTER19) +DECLARE_CSR(mhpmcounter20, CSR_MHPMCOUNTER20) +DECLARE_CSR(mhpmcounter21, CSR_MHPMCOUNTER21) +DECLARE_CSR(mhpmcounter22, CSR_MHPMCOUNTER22) +DECLARE_CSR(mhpmcounter23, CSR_MHPMCOUNTER23) +DECLARE_CSR(mhpmcounter24, CSR_MHPMCOUNTER24) +DECLARE_CSR(mhpmcounter25, CSR_MHPMCOUNTER25) +DECLARE_CSR(mhpmcounter26, CSR_MHPMCOUNTER26) +DECLARE_CSR(mhpmcounter27, CSR_MHPMCOUNTER27) +DECLARE_CSR(mhpmcounter28, CSR_MHPMCOUNTER28) +DECLARE_CSR(mhpmcounter29, CSR_MHPMCOUNTER29) +DECLARE_CSR(mhpmcounter30, CSR_MHPMCOUNTER30) +DECLARE_CSR(mhpmcounter31, CSR_MHPMCOUNTER31) +DECLARE_CSR(mucounteren, CSR_MUCOUNTEREN) +DECLARE_CSR(mscounteren, CSR_MSCOUNTEREN) +DECLARE_CSR(mhpmevent3, CSR_MHPMEVENT3) +DECLARE_CSR(mhpmevent4, CSR_MHPMEVENT4) +DECLARE_CSR(mhpmevent5, CSR_MHPMEVENT5) +DECLARE_CSR(mhpmevent6, CSR_MHPMEVENT6) +DECLARE_CSR(mhpmevent7, CSR_MHPMEVENT7) +DECLARE_CSR(mhpmevent8, CSR_MHPMEVENT8) +DECLARE_CSR(mhpmevent9, CSR_MHPMEVENT9) +DECLARE_CSR(mhpmevent10, CSR_MHPMEVENT10) +DECLARE_CSR(mhpmevent11, CSR_MHPMEVENT11) +DECLARE_CSR(mhpmevent12, CSR_MHPMEVENT12) +DECLARE_CSR(mhpmevent13, CSR_MHPMEVENT13) +DECLARE_CSR(mhpmevent14, CSR_MHPMEVENT14) +DECLARE_CSR(mhpmevent15, CSR_MHPMEVENT15) +DECLARE_CSR(mhpmevent16, CSR_MHPMEVENT16) +DECLARE_CSR(mhpmevent17, CSR_MHPMEVENT17) +DECLARE_CSR(mhpmevent18, CSR_MHPMEVENT18) +DECLARE_CSR(mhpmevent19, CSR_MHPMEVENT19) +DECLARE_CSR(mhpmevent20, CSR_MHPMEVENT20) +DECLARE_CSR(mhpmevent21, CSR_MHPMEVENT21) +DECLARE_CSR(mhpmevent22, CSR_MHPMEVENT22) +DECLARE_CSR(mhpmevent23, CSR_MHPMEVENT23) +DECLARE_CSR(mhpmevent24, CSR_MHPMEVENT24) +DECLARE_CSR(mhpmevent25, CSR_MHPMEVENT25) +DECLARE_CSR(mhpmevent26, CSR_MHPMEVENT26) +DECLARE_CSR(mhpmevent27, CSR_MHPMEVENT27) +DECLARE_CSR(mhpmevent28, CSR_MHPMEVENT28) +DECLARE_CSR(mhpmevent29, CSR_MHPMEVENT29) +DECLARE_CSR(mhpmevent30, CSR_MHPMEVENT30) +DECLARE_CSR(mhpmevent31, CSR_MHPMEVENT31) +DECLARE_CSR(mvendorid, CSR_MVENDORID) +DECLARE_CSR(marchid, CSR_MARCHID) +DECLARE_CSR(mimpid, CSR_MIMPID) +DECLARE_CSR(mhartid, CSR_MHARTID) +DECLARE_CSR(cycleh, CSR_CYCLEH) +DECLARE_CSR(timeh, CSR_TIMEH) +DECLARE_CSR(instreth, CSR_INSTRETH) +DECLARE_CSR(hpmcounter3h, CSR_HPMCOUNTER3H) +DECLARE_CSR(hpmcounter4h, CSR_HPMCOUNTER4H) +DECLARE_CSR(hpmcounter5h, CSR_HPMCOUNTER5H) +DECLARE_CSR(hpmcounter6h, CSR_HPMCOUNTER6H) +DECLARE_CSR(hpmcounter7h, CSR_HPMCOUNTER7H) +DECLARE_CSR(hpmcounter8h, CSR_HPMCOUNTER8H) +DECLARE_CSR(hpmcounter9h, CSR_HPMCOUNTER9H) +DECLARE_CSR(hpmcounter10h, CSR_HPMCOUNTER10H) +DECLARE_CSR(hpmcounter11h, CSR_HPMCOUNTER11H) +DECLARE_CSR(hpmcounter12h, CSR_HPMCOUNTER12H) +DECLARE_CSR(hpmcounter13h, CSR_HPMCOUNTER13H) +DECLARE_CSR(hpmcounter14h, CSR_HPMCOUNTER14H) +DECLARE_CSR(hpmcounter15h, CSR_HPMCOUNTER15H) +DECLARE_CSR(hpmcounter16h, CSR_HPMCOUNTER16H) +DECLARE_CSR(hpmcounter17h, CSR_HPMCOUNTER17H) +DECLARE_CSR(hpmcounter18h, CSR_HPMCOUNTER18H) +DECLARE_CSR(hpmcounter19h, CSR_HPMCOUNTER19H) +DECLARE_CSR(hpmcounter20h, CSR_HPMCOUNTER20H) +DECLARE_CSR(hpmcounter21h, CSR_HPMCOUNTER21H) +DECLARE_CSR(hpmcounter22h, CSR_HPMCOUNTER22H) +DECLARE_CSR(hpmcounter23h, CSR_HPMCOUNTER23H) +DECLARE_CSR(hpmcounter24h, CSR_HPMCOUNTER24H) +DECLARE_CSR(hpmcounter25h, CSR_HPMCOUNTER25H) +DECLARE_CSR(hpmcounter26h, CSR_HPMCOUNTER26H) +DECLARE_CSR(hpmcounter27h, CSR_HPMCOUNTER27H) +DECLARE_CSR(hpmcounter28h, CSR_HPMCOUNTER28H) +DECLARE_CSR(hpmcounter29h, CSR_HPMCOUNTER29H) +DECLARE_CSR(hpmcounter30h, CSR_HPMCOUNTER30H) +DECLARE_CSR(hpmcounter31h, CSR_HPMCOUNTER31H) +DECLARE_CSR(mcycleh, CSR_MCYCLEH) +DECLARE_CSR(minstreth, CSR_MINSTRETH) +DECLARE_CSR(mhpmcounter3h, CSR_MHPMCOUNTER3H) +DECLARE_CSR(mhpmcounter4h, CSR_MHPMCOUNTER4H) +DECLARE_CSR(mhpmcounter5h, CSR_MHPMCOUNTER5H) +DECLARE_CSR(mhpmcounter6h, CSR_MHPMCOUNTER6H) +DECLARE_CSR(mhpmcounter7h, CSR_MHPMCOUNTER7H) +DECLARE_CSR(mhpmcounter8h, CSR_MHPMCOUNTER8H) +DECLARE_CSR(mhpmcounter9h, CSR_MHPMCOUNTER9H) +DECLARE_CSR(mhpmcounter10h, CSR_MHPMCOUNTER10H) +DECLARE_CSR(mhpmcounter11h, CSR_MHPMCOUNTER11H) +DECLARE_CSR(mhpmcounter12h, CSR_MHPMCOUNTER12H) +DECLARE_CSR(mhpmcounter13h, CSR_MHPMCOUNTER13H) +DECLARE_CSR(mhpmcounter14h, CSR_MHPMCOUNTER14H) +DECLARE_CSR(mhpmcounter15h, CSR_MHPMCOUNTER15H) +DECLARE_CSR(mhpmcounter16h, CSR_MHPMCOUNTER16H) +DECLARE_CSR(mhpmcounter17h, CSR_MHPMCOUNTER17H) +DECLARE_CSR(mhpmcounter18h, CSR_MHPMCOUNTER18H) +DECLARE_CSR(mhpmcounter19h, CSR_MHPMCOUNTER19H) +DECLARE_CSR(mhpmcounter20h, CSR_MHPMCOUNTER20H) +DECLARE_CSR(mhpmcounter21h, CSR_MHPMCOUNTER21H) +DECLARE_CSR(mhpmcounter22h, CSR_MHPMCOUNTER22H) +DECLARE_CSR(mhpmcounter23h, CSR_MHPMCOUNTER23H) +DECLARE_CSR(mhpmcounter24h, CSR_MHPMCOUNTER24H) +DECLARE_CSR(mhpmcounter25h, CSR_MHPMCOUNTER25H) +DECLARE_CSR(mhpmcounter26h, CSR_MHPMCOUNTER26H) +DECLARE_CSR(mhpmcounter27h, CSR_MHPMCOUNTER27H) +DECLARE_CSR(mhpmcounter28h, CSR_MHPMCOUNTER28H) +DECLARE_CSR(mhpmcounter29h, CSR_MHPMCOUNTER29H) +DECLARE_CSR(mhpmcounter30h, CSR_MHPMCOUNTER30H) +DECLARE_CSR(mhpmcounter31h, CSR_MHPMCOUNTER31H) +#endif +#ifdef DECLARE_CAUSE +DECLARE_CAUSE("misaligned fetch", CAUSE_MISALIGNED_FETCH) +DECLARE_CAUSE("fault fetch", CAUSE_FAULT_FETCH) +DECLARE_CAUSE("illegal instruction", CAUSE_ILLEGAL_INSTRUCTION) +DECLARE_CAUSE("breakpoint", CAUSE_BREAKPOINT) +DECLARE_CAUSE("misaligned load", CAUSE_MISALIGNED_LOAD) +DECLARE_CAUSE("fault load", CAUSE_FAULT_LOAD) +DECLARE_CAUSE("misaligned store", CAUSE_MISALIGNED_STORE) +DECLARE_CAUSE("fault store", CAUSE_FAULT_STORE) +DECLARE_CAUSE("user_ecall", CAUSE_USER_ECALL) +DECLARE_CAUSE("supervisor_ecall", CAUSE_SUPERVISOR_ECALL) +DECLARE_CAUSE("hypervisor_ecall", CAUSE_HYPERVISOR_ECALL) +DECLARE_CAUSE("machine_ecall", CAUSE_MACHINE_ECALL) +#endif + diff --git a/drivers/bl702_driver/startup/GCC/entry.S b/drivers/bl702_driver/startup/GCC/entry.S new file mode 100644 index 00000000..dccee584 --- /dev/null +++ b/drivers/bl702_driver/startup/GCC/entry.S @@ -0,0 +1,131 @@ +/* Copyright 2018 SiFive, Inc */ +/* SPDX-License-Identifier: Apache-2.0 */ +#include "riscv_encoding.h" + +/* This code executes before _start, which is contained inside the C library. + * In embedded systems we want to ensure that _enter, which contains the first + * code to be executed, can be loaded at a specific address. To enable this + * feature we provide the '.text.metal.init.enter' section, which is + * defined to have the first address being where execution should start. */ +.section .text.metal.init.enter +.global _enter +_enter: + .cfi_startproc + + /* Inform the debugger that there is nowhere to backtrace past _enter. */ + .cfi_undefined ra + + /* The absolute first thing that must happen is configuring the global + * pointer register, which must be done with relaxation disabled because + * it's not valid to obtain the address of any symbol without GP + * configured. The C environment might go ahead and do this again, but + * that's safe as it's a fixed register. */ +.option push +.option norelax + la gp, __global_pointer$ +.option pop + + /* Disable global interrupt */ + /*clear_csr(mstatus, MSTATUS_MIE);*/ + csrci mstatus,8 + + /* Set up a simple trap vector to catch anything that goes wrong early in + * the boot process. */ + la t0, Trap_Handler_Stub + /* enable CLIC Vectored mode */ + ori t0,t0,3 + csrw mtvec, t0 + /* enable chicken bit if core is bullet series*/ + la t0, __metal_chicken_bit + beqz t0, 1f + csrwi 0x7C1, 0 +1: + + /* There may be pre-initialization routines inside the MBI code that run in + * C, so here we set up a C environment. First we set up a stack pointer, + * which is left as a weak reference in order to allow initialization + * routines that do not need a stack to be set up to transparently be + * called. */ + .weak __StackTop + la sp, __StackTop + + /* Intial the mtvt, MUST BE 64 bytes aligned*/ + .weak __Vectors + la t0, __Vectors + csrw mtvt, t0 + +#if __riscv_float_abi_single + /* deal with FP */ + /* Is F extension present? */ + csrr t0, misa + andi t0, t0, (1 << ('F' - 'A')) + beqz t0, 1f + /* If so, enable it */ + li t0, MSTATUS_FS + csrs mstatus, t0 + fssr x0 +1: +#endif + + /* Check for an initialization routine and call it if one exists, otherwise + * just skip over the call entirely. Note that __metal_initialize isn't + * actually a full C function, as it doesn't end up with the .bss or .data + * segments having been initialized. This is done to avoid putting a + * burden on systems that can be initialized without having a C environment + * set up. */ + call SystemInit + + /* start load code to itcm like. */ + call start_load + + /* At this point we can enter the C runtime's startup file. The arguments + * to this function are designed to match those provided to the SEE, just + * so we don't have to write another ABI. */ + csrr a0, mhartid + li a1, 0 + li a2, 0 + call main + + /* If we've made it back here then there's probably something wrong. We + * allow the METAL to register a handler here. */ + .weak __metal_after_main + la ra, __metal_after_main + beqz ra, 1f + jalr ra +1: + + /* If that handler returns then there's not a whole lot we can do. Just + * try to make some noise. */ + la t0, 1f + csrw mtvec, t0 +1: + lw t1, 0(x0) + j 1b + + .cfi_endproc + +/* For sanity's sake we set up an early trap vector that just does nothing. If + * you end up here then there's a bug in the early boot code somewhere. */ +.weak Trap_Handler_Stub +.section .text.metal.init.trapvec +.align 2 +Trap_Handler_Stub: + .cfi_startproc + csrr t0, mcause + csrr t1, mepc + csrr t2, mtval + j Trap_Handler_Stub + .cfi_endproc + +/* The GCC port might not emit a __register_frame_info symbol, which eventually + * results in a weak undefined reference that eventually causes crash when it + * is dereference early in boot. We really shouldn't need to put this here, + * but to deal with what I think is probably a bug in the linker script I'm + * going to leave this in for now. At least it's fairly cheap :) */ +.weak __register_frame_info +.global __register_frame_info +.section .text.metal.init.__register_frame_info +__register_frame_info: + .cfi_startproc + ret + .cfi_endproc diff --git a/drivers/bl702_driver/startup/GCC/start_load.c b/drivers/bl702_driver/startup/GCC/start_load.c new file mode 100644 index 00000000..be5aec4a --- /dev/null +++ b/drivers/bl702_driver/startup/GCC/start_load.c @@ -0,0 +1,109 @@ +/** + * @file start_load.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include +#include "bl702.h" + +#define __STARTUP_CLEAR_BSS 1 + +/*---------------------------------------------------------------------------- + Linker generated Symbols + *----------------------------------------------------------------------------*/ +extern uint32_t __itcm_load_addr; +extern uint32_t __dtcm_load_addr; +extern uint32_t __system_ram_load_addr; +extern uint32_t __ram_load_addr; + +extern uint32_t __text_code_start__; +extern uint32_t __text_code_end__; +extern uint32_t __tcm_code_start__; +extern uint32_t __tcm_code_end__; +extern uint32_t __tcm_data_start__; +extern uint32_t __tcm_data_end__; +extern uint32_t __system_ram_data_start__; +extern uint32_t __system_ram_data_end__; +extern uint32_t __ram_data_start__; +extern uint32_t __ram_data_end__; +extern uint32_t __bss_start__; +extern uint32_t __bss_end__; +extern uint32_t __noinit_data_start__; +extern uint32_t __noinit_data_end__; + +extern uint32_t __StackTop; +extern uint32_t __StackLimit; +extern uint32_t __HeapBase; +extern uint32_t __HeapLimit; + +//extern uint32_t __copy_table_start__; +//extern uint32_t __copy_table_end__; +//extern uint32_t __zero_table_start__; +//extern uint32_t __zero_table_end__; + + +void start_load(void) { + uint32_t *pSrc, *pDest; + uint32_t *pTable __attribute__((unused)); + + /* Copy ITCM code */ + pSrc = &__itcm_load_addr; + pDest = &__tcm_code_start__; + for ( ; pDest < &__tcm_code_end__ ; ) { + *pDest++ = *pSrc++; + } + + /* Copy DTCM code */ + pSrc = &__dtcm_load_addr; + pDest = &__tcm_data_start__; + for( ; pDest < &__tcm_data_end__; ){ + *pDest++ = *pSrc++; + } + + /* BF Add system RAM data copy */ + pSrc = &__system_ram_load_addr; + pDest = &__system_ram_data_start__; + for ( ; pDest < &__system_ram_data_end__ ; ) { + *pDest++ = *pSrc++; + } + + /* BF Add OCARAM data copy */ + pSrc = &__ram_load_addr; + pDest = &__ram_data_start__; + for ( ; pDest < &__ram_data_end__ ; ) { + *pDest++ = *pSrc++; + } + +#ifdef __STARTUP_CLEAR_BSS + /* Single BSS section scheme. + * + * The BSS section is specified by following symbols + * __bss_start__: start of the BSS section. + * __bss_end__: end of the BSS section. + * + * Both addresses must be aligned to 4 bytes boundary. + */ + pDest = &__bss_start__; + for ( ; pDest < &__bss_end__ ; ) { + *pDest++ = 0ul; + } +#endif +} \ No newline at end of file diff --git a/drivers/bl702_driver/startup/interrupt.c b/drivers/bl702_driver/startup/interrupt.c new file mode 100644 index 00000000..c1d66dcc --- /dev/null +++ b/drivers/bl702_driver/startup/interrupt.c @@ -0,0 +1,216 @@ +/** + * @file interrupt.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include + +#include "../risc-v/Core/Include/clic.h" +#include "../risc-v/Core/Include/cmsis_compatible_gcc.h" + +typedef void( *pFunc )( void ); +extern void Trap_Handler(void); +extern void Interrupt_Handler(void); +void Interrupt_Handler_Stub(void); + +void clic_msip_handler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void clic_mtimer_handler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void clic_mext_handler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void clic_csoft_handler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void BMX_ERR_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void BMX_TO_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void L1C_BMX_ERR_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void L1C_BMX_TO_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void SEC_BMX_ERR_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void RF_TOP_INT0_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void RF_TOP_INT1_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void DMA_BMX_ERR_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void SEC_GMAC_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void SEC_CDET_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void SEC_PKA_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void SEC_TRNG_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void SEC_AES_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void SEC_SHA_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void DMA_ALL_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void MJPEG_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void CAM_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void I2S_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void IRTX_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void IRRX_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void USB_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void EMAC_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void SF_CTRL_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void GPADC_DMA_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void EFUSE_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void SPI_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void UART0_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void UART1_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void I2C_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void PWM_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void TIMER_CH0_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void TIMER_CH1_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void TIMER_WDT_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void KYS_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void QDEC0_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void QDEC1_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void QDEC2_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void GPIO_INT0_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void TOUCH_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void M154_REQ_ENH_ACK_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void M154_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void M154_AES_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void PDS_WAKEUP_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void HBN_OUT0_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void HBN_OUT1_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void BOR_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void WIFI_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void BZ_PHY_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void BLE_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void MAC_TXRX_TIMER_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void MAC_TXRX_MISC_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void MAC_RX_TRG_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void MAC_TX_TRG_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void MAC_GEN_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void MAC_PORT_TRG_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); +void WIFI_IPC_PUBLIC_IRQHandler_Wrapper (void) __attribute__ ((weak, alias("Interrupt_Handler_Stub"))); + +const pFunc __Vectors[] __attribute__ ((section(".init"),aligned(64))) = { + 0, /* */ + 0, /* */ + 0, /* */ + clic_msip_handler_Wrapper, /* 3 */ + 0, /* */ + 0, /* */ + 0, /* */ + clic_mtimer_handler_Wrapper, /* 7 */ + (pFunc)0x00000001, /* */ + 0, /* */ + (pFunc)0x00000000, /* */ + clic_mext_handler_Wrapper, /* 11 */ + clic_csoft_handler_Wrapper, /* 12 */ + 0, /* */ + 0, /* */ + 0, /* */ + BMX_ERR_IRQHandler_Wrapper, /* 16 + 0 */ + BMX_TO_IRQHandler_Wrapper, /* 16 + 1 */ + L1C_BMX_ERR_IRQHandler_Wrapper, /* 16 + 2 */ + L1C_BMX_TO_IRQHandler_Wrapper, /* 16 + 3 */ + SEC_BMX_ERR_IRQHandler_Wrapper, /* 16 + 4 */ + RF_TOP_INT0_IRQHandler_Wrapper, /* 16 + 5 */ + RF_TOP_INT1_IRQHandler_Wrapper, /* 16 + 6 */ + 0, /* 16 + 7 */ + DMA_BMX_ERR_IRQHandler_Wrapper, /* 16 + 8 */ + SEC_GMAC_IRQHandler_Wrapper, /* 16 + 9 */ + SEC_CDET_IRQHandler_Wrapper, /* 16 + 10 */ + SEC_PKA_IRQHandler_Wrapper, /* 16 + 11 */ + SEC_TRNG_IRQHandler_Wrapper, /* 16 + 12 */ + SEC_AES_IRQHandler_Wrapper, /* 16 + 13 */ + SEC_SHA_IRQHandler_Wrapper, /* 16 + 14 */ + DMA_ALL_IRQHandler_Wrapper, /* 16 + 15 */ + MJPEG_IRQHandler_Wrapper, /* 16 + 16 */ + CAM_IRQHandler_Wrapper, /* 16 + 17 */ + I2S_IRQHandler_Wrapper, /* 16 + 18 */ + IRTX_IRQHandler_Wrapper, /* 16 + 19 */ + IRRX_IRQHandler_Wrapper, /* 16 + 20 */ + USB_IRQHandler_Wrapper, /* 16 + 21 */ + EMAC_IRQHandler_Wrapper, /* 16 + 22 */ + SF_CTRL_IRQHandler_Wrapper, /* 16 + 23 */ + 0, /* 16 + 24 */ + GPADC_DMA_IRQHandler_Wrapper, /* 16 + 25 */ + EFUSE_IRQHandler_Wrapper, /* 16 + 26 */ + SPI_IRQHandler_Wrapper, /* 16 + 27 */ + 0, /* 16 + 28 */ + UART0_IRQHandler_Wrapper, /* 16 + 29 */ + UART1_IRQHandler_Wrapper, /* 16 + 30 */ + 0, /* 16 + 31 */ + I2C_IRQHandler_Wrapper, /* 16 + 32 */ + 0, /* 16 + 33 */ + PWM_IRQHandler_Wrapper, /* 16 + 34 */ + 0, /* 16 + 35 */ + TIMER_CH0_IRQHandler_Wrapper, /* 16 + 36 */ + TIMER_CH1_IRQHandler_Wrapper, /* 16 + 37 */ + TIMER_WDT_IRQHandler_Wrapper, /* 16 + 38 */ + KYS_IRQHandler_Wrapper, /* 16 + 39 */ + QDEC0_IRQHandler_Wrapper, /* 16 + 40 */ + QDEC1_IRQHandler_Wrapper, /* 16 + 41 */ + QDEC2_IRQHandler_Wrapper, /* 16 + 42 */ + 0, /* 16 + 43 */ + GPIO_INT0_IRQHandler_Wrapper, /* 16 + 44 */ + TOUCH_IRQHandler_Wrapper, /* 16 + 45 */ + 0, /* 16 + 46 */ + M154_REQ_ENH_ACK_IRQHandler_Wrapper, /* 16 + 47 */ + M154_IRQHandler_Wrapper, /* 16 + 48 */ + M154_AES_IRQHandler_Wrapper, /* 16 + 49 */ + PDS_WAKEUP_IRQHandler_Wrapper, /* 16 + 50 */ + HBN_OUT0_IRQHandler_Wrapper, /* 16 + 51 */ + HBN_OUT1_IRQHandler_Wrapper, /* 16 + 52 */ + BOR_IRQHandler_Wrapper, /* 16 + 53 */ + WIFI_IRQHandler_Wrapper, /* 16 + 54 */ + BZ_PHY_IRQHandler_Wrapper, /* 16 + 55 */ + BLE_IRQHandler_Wrapper, /* 16 + 56 */ + MAC_TXRX_TIMER_IRQHandler_Wrapper, /* 16 + 57 */ + MAC_TXRX_MISC_IRQHandler_Wrapper, /* 16 + 58 */ + MAC_RX_TRG_IRQHandler_Wrapper, /* 16 + 59 */ + MAC_TX_TRG_IRQHandler_Wrapper, /* 16 + 60 */ + MAC_GEN_IRQHandler_Wrapper, /* 16 + 61 */ + MAC_PORT_TRG_IRQHandler_Wrapper, /* 16 + 62 */ + WIFI_IPC_PUBLIC_IRQHandler_Wrapper, /* 16 + 63 */ +}; + +void __IRQ_ALIGN64 Trap_Handler_Stub(void){ + Trap_Handler(); +} + +void __IRQ Interrupt_Handler_Stub(void){ + Interrupt_Handler(); +} + +void clic_enable_interrupt (uint32_t source) { + *(volatile uint8_t*)(CLIC_HART0_ADDR+CLIC_INTIE+source) = 1; +} + +void clic_disable_interrupt ( uint32_t source){ + *(volatile uint8_t*)(CLIC_HART0_ADDR+CLIC_INTIE+source) = 0; +} + +void clic_set_pending(uint32_t source){ + *(volatile uint8_t*)(CLIC_HART0_ADDR+CLIC_INTIP+source) = 1; +} + +void clic_clear_pending(uint32_t source){ + *(volatile uint8_t*)(CLIC_HART0_ADDR+CLIC_INTIP+source) = 0; +} + +void clic_set_intcfg (uint32_t source, uint32_t intcfg){ + *(volatile uint8_t*)(CLIC_HART0_ADDR+CLIC_INTCFG+source) = intcfg; +} + +uint8_t clic_get_intcfg ( uint32_t source){ + return *(volatile uint8_t*)(CLIC_HART0_ADDR+CLIC_INTCFG+source); +} + +void clic_set_cliccfg ( uint32_t cfg){ + *(volatile uint8_t*)(CLIC_HART0_ADDR+CLIC_CFG) = cfg; +} + +uint8_t clic_get_cliccfg (void){ + return *(volatile uint8_t*)(CLIC_HART0_ADDR+CLIC_CFG); +} diff --git a/drivers/bl702_driver/startup/system_bl702.c b/drivers/bl702_driver/startup/system_bl702.c new file mode 100644 index 00000000..67150992 --- /dev/null +++ b/drivers/bl702_driver/startup/system_bl702.c @@ -0,0 +1,174 @@ +/** + * @file system_bl702.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "bl702.h" +#include "bl702_glb.h" +#include "bl702_hbn.h" +#include "system_bl702.h" + +#ifdef BOOTROM +#include "bflb_bootrom.h" +#endif + + +#ifdef BFLB_EFLASH_LOADER +#include "bl702_usb.h" +void USB_DoNothing_IRQHandler(void) +{ + /* clear all USB int sts */ + USB_Clr_IntStatus(32); +} +#endif + + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define SYSTEM_CLOCK ( 32000000UL ) + +/*---------------------------------------------------------------------------- + Vector Table + *----------------------------------------------------------------------------*/ +#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ + +/*---------------------------------------------------------------------------- + System initialization function + *----------------------------------------------------------------------------*/ + +void system_bor_init(void) +{ + HBN_BOR_CFG_Type borCfg = {1/* pu_bor */, 0/* irq_bor_en */, 1/* bor_vth */, 1/* bor_sel */}; + HBN_Set_BOR_Cfg(&borCfg); +} +void SystemInit (void) +{ + uint32_t *p; + uint32_t i=0; + uint32_t tmpVal=0; + +#ifdef BOOTROM + extern void GLB_Power_On_LDO18_IO(void); + extern void WDT_Disable(void); + extern void HBN_Clear_RTC_INT(void); + + BMX_Cfg_Type bmxCfg={ + .timeoutEn=0, + .errEn=DISABLE, + .arbMod=BMX_ARB_FIX + }; + L1C_BMX_Cfg_Type l1cBmxCfg={ + .timeoutEn=0, + .errEn=DISABLE, + .arbMod=L1C_BMX_ARB_FIX, + }; + + /* NP boot log Flag */ + p= (uint32_t *)(BFLB_BOOTROM_NP_BOOT_LOG_ADDR); + *p=0x5A5AA5A5; + /*diable BMX error incase Sbooten=0xf,while user send vector(core) reset and CPU read deadbeef, + if not disable this bit, CPU will also get hardfault at the same time*/ + //GLB->bmx_cfg1.BF.bmx_err_en=0; + //GLB->bmx_cfg1.BF.bmx_timeout_en=0; + //GLB->bmx_cfg2.BF.bmx_err_addr_dis=1; + GLB_BMX_Init(&bmxCfg); + GLB_BMX_Addr_Monitor_Disable(); + //L1C->l1c_config.BF.l1c_bmx_err_en=0; + //L1C->l1c_config.BF.l1c_bmx_timeout_en=0; + //L1C->l1c_bmx_err_addr_en.BF.l1c_bmx_err_addr_dis=1; + L1C_BMX_Init(&l1cBmxCfg); + L1C_BMX_Addr_Monitor_Disable(); + //L1C->l1c_config.BF.l1c_way_dis=0xf; + L1C_Set_Way_Disable(0x0f); + /* Disable Watchdog */ + WDT_Disable(); + /* Clear RTC */ + HBN_Clear_RTC_INT(); + /* Make OCRAM Idle from retention or sleep */ + GLB_Set_OCRAM_Idle(); + /* Disable embedded flash power up*/ + HBN_Set_Embedded_Flash_Pullup(DISABLE); +#endif + + /* disable hardware_pullup_pull_down (reg_en_hw_pu_pd = 0) */ + tmpVal=BL_RD_REG(HBN_BASE,HBN_IRQ_MODE); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_REG_EN_HW_PU_PD); + BL_WR_REG(HBN_BASE,HBN_IRQ_MODE,tmpVal); + + /* disable aon_pad_ie_smt (reg_aon_pad_ie_smt = 0) */ + tmpVal=BL_RD_REG(HBN_BASE,HBN_IRQ_MODE); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_REG_AON_PAD_IE_SMT); + BL_WR_REG(HBN_BASE,HBN_IRQ_MODE,tmpVal); + + /* GLB_Set_EM_Sel(GLB_EM_0KB); */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_SEAM_MISC); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_EM_SEL,GLB_EM_0KB); + BL_WR_REG(GLB_BASE,GLB_SEAM_MISC,tmpVal); + + /* Restore default setting*/ + /* GLB_UART_Sig_Swap_Set(UART_SIG_SWAP_NONE); */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_PARM); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_UART_SWAP_SET,UART_SIG_SWAP_NONE); + BL_WR_REG(GLB_BASE,GLB_PARM,tmpVal); +// GLB_JTAG_Sig_Swap_Set(JTAG_SIG_SWAP_NONE); +// /* update SystemCoreClock value */ +// SystemCoreClockSet(SYSTEM_CLOCK); + + /* fix 57.6M */ + if(SystemCoreClockGet()==57*6000*1000){ + SystemCoreClockSet(57.6*1000*1000) + } + + /* CLear all interrupt */ + p=(uint32_t *)(CLIC_HART0_ADDR+CLIC_INTIE); + for(i=0;i<(IRQn_LAST+3)/4;i++){ + p[i]=0; + } + p=(uint32_t *)(CLIC_HART0_ADDR+CLIC_INTIP); + for(i=0;i<(IRQn_LAST+3)/4;i++){ + p[i]=0; + } + +#ifdef BFLB_EFLASH_LOADER + Interrupt_Handler_Register(USB_IRQn,USB_DoNothing_IRQHandler); +#endif + + /* global IRQ enable */ + __enable_irq(); + + /* init bor for all platform */ + system_bor_init(); + +#ifdef BOOTROM + /*Power up soc 11 power domain,TODO: This should be optional */ + //AON_Power_On_SOC_11(); + /* Record LDO18 pu flag before power up. This maybe not neccessary but copy from 606*/ + //BL_WR_WORD(BFLB_BOOTROM_AP_BOOT_LOG_ADDR,GLB->ldo18io.BF.pu_ldo18io); + /* Power up flash power*/ + //GLB_Power_On_LDO18_IO(); +#endif + +} +void System_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ +} diff --git a/drivers/bl702_driver/startup/system_bl702.h b/drivers/bl702_driver/startup/system_bl702.h new file mode 100644 index 00000000..efd9a449 --- /dev/null +++ b/drivers/bl702_driver/startup/system_bl702.h @@ -0,0 +1,39 @@ +/** + * @file system_bl702.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#ifndef __SYSTEM_BL702_H__ +#define __SYSTEM_BL702_H__ + +/** + * @brief PLL Clock type definition + */ + +extern uint32_t SystemCoreClock; + +extern void SystemCoreClockUpdate (void); +extern void SystemInit (void); +extern void System_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority); +extern void Systick_Stop(void); +extern void Systick_Start(void); + +#endif diff --git a/drivers/bl702_driver/std_drv/inc/bl702_acomp.h b/drivers/bl702_driver/std_drv/inc/bl702_acomp.h new file mode 100644 index 00000000..b205dd9b --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_acomp.h @@ -0,0 +1,212 @@ +/** + ****************************************************************************** + * @file bl702_acomp.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_ACOMP_H__ +#define __BL702_ACOMP_H__ + +#include "aon_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup ACOMP + * @{ + */ + +/** @defgroup ACOMP_Public_Types + * @{ + */ + +/** + * @brief Analog compare id type definition + */ +typedef enum { + AON_ACOMP0_ID, /*!< Analog compare 0 */ + AON_ACOMP1_ID, /*!< Analog compare 1 */ +}AON_ACOMP_ID_Type; + +/** + * @brief Analog compare level type definition + */ +typedef enum { + AON_ACOMP_LEVEL_FACTOR_0P25, /*!< Analog compare level scaling factor 0.25 */ + AON_ACOMP_LEVEL_FACTOR_0P5, /*!< Analog compare level scaling factor 0.5 */ + AON_ACOMP_LEVEL_FACTOR_0P75, /*!< Analog compare level scaling factor 0.75 */ + AON_ACOMP_LEVEL_FACTOR_1, /*!< Analog compare level scaling factor 1 */ +}AON_ACOMP_Level_Factor_Type; + +/** + * @brief Analog compare channel type definition + */ +typedef enum { + AON_ACOMP_CHAN_ADC0, /*!< Analog compare channel,ADC input channel 0 */ + AON_ACOMP_CHAN_ADC1, /*!< Analog compare channel,ADC input channel 1 */ + AON_ACOMP_CHAN_ADC2, /*!< Analog compare channel,ADC input channel 2 */ + AON_ACOMP_CHAN_ADC3, /*!< Analog compare channel,ADC input channel 3 */ + AON_ACOMP_CHAN_ADC4, /*!< Analog compare channel,ADC input channel 4 */ + AON_ACOMP_CHAN_ADC5, /*!< Analog compare channel,ADC input channel 5 */ + AON_ACOMP_CHAN_ADC6, /*!< Analog compare channel,ADC input channel 6 */ + AON_ACOMP_CHAN_ADC7, /*!< Analog compare channel,ADC input channel 7 */ + AON_ACOMP_CHAN_DACA, /*!< Analog compare channel,DAC output channel A */ + AON_ACOMP_CHAN_DACB, /*!< Analog compare channel,DAC output channel B */ + AON_ACOMP_CHAN_VREF_1P2V, /*!< Analog compare channel,1.2V ref voltage */ + AON_ACOMP_CHAN_0P375VBAT_NOT_IMP, /*!< Analog compare channel,6/16Vbat */ + AON_ACOMP_CHAN_0P25VBAT, /*!< Analog compare channel,4/16Vbat */ + AON_ACOMP_CHAN_0P1875VBAT, /*!< Analog compare channel,3/16Vbat */ + AON_ACOMP_CHAN_0P3125VBAT, /*!< Analog compare channel,5/16Vbat */ + AON_ACOMP_CHAN_VSS, /*!< Analog compare channel,vss */ +}AON_ACOMP_Chan_Type; + +/** + * @brief Analog compare bias current control type definition + */ +typedef enum { + AON_ACOMP_BIAS_POWER_MODE1, /*!< Analog compare power mode 1,slow response mode */ + AON_ACOMP_BIAS_POWER_MODE2, /*!< Analog compare power mode 2,medium response mode */ + AON_ACOMP_BIAS_POWER_MODE3, /*!< Analog compare power mode 3,fast response mode */ + AON_ACOMP_BIAS_POWER_NONE, /*!< Analog compare power mode none */ +}AON_ACOMP_Bias_Prog_Type; + +/** + * @brief Analog compare hysteresis voltage type definition + */ +typedef enum { + AON_ACOMP_HYSTERESIS_VOLT_NONE, /*!< Analog compare hysteresis voltage none */ + AON_ACOMP_HYSTERESIS_VOLT_10MV, /*!< Analog compare hysteresis voltage 10mv */ + AON_ACOMP_HYSTERESIS_VOLT_20MV, /*!< Analog compare hysteresis voltage 20mv */ + AON_ACOMP_HYSTERESIS_VOLT_30MV, /*!< Analog compare hysteresis voltage 30mv */ + AON_ACOMP_HYSTERESIS_VOLT_40MV, /*!< Analog compare hysteresis voltage 40mv */ + AON_ACOMP_HYSTERESIS_VOLT_50MV, /*!< Analog compare hysteresis voltage 50mv */ + AON_ACOMP_HYSTERESIS_VOLT_60MV, /*!< Analog compare hysteresis voltage 60mv */ + AON_ACOMP_HYSTERESIS_VOLT_70MV, /*!< Analog compare hysteresis voltage 70mv */ +}AON_ACOMP_Hysteresis_Volt_Type; + +/** + * @brief AON ACOMP configuration type definition + */ +typedef struct { + BL_Fun_Type muxEn; /*!< ACOMP mux enable */ + uint8_t posChanSel; /*!< ACOMP positive channel select */ + uint8_t negChanSel; /*!< ACOMP negtive channel select */ + AON_ACOMP_Level_Factor_Type levelFactor; /*!< ACOMP level select factor */ + AON_ACOMP_Bias_Prog_Type biasProg; /*!< ACOMP bias current control */ + AON_ACOMP_Hysteresis_Volt_Type hysteresisPosVolt; /*!< ACOMP hysteresis voltage for positive */ + AON_ACOMP_Hysteresis_Volt_Type hysteresisNegVolt; /*!< ACOMP hysteresis voltage for negtive */ +}AON_ACOMP_CFG_Type; + +/*@} end of group ACOMP_Public_Types */ + +/** @defgroup ACOMP_Public_Constants + * @{ + */ + +/** @defgroup AON_ACOMP_ID_TYPE + * @{ + */ +#define IS_AON_ACOMP_ID_TYPE(type) (((type) == AON_ACOMP0_ID) || \ + ((type) == AON_ACOMP1_ID)) + +/** @defgroup AON_ACOMP_LEVEL_FACTOR_TYPE + * @{ + */ +#define IS_AON_ACOMP_LEVEL_FACTOR_TYPE(type) (((type) == AON_ACOMP_LEVEL_FACTOR_0P25) || \ + ((type) == AON_ACOMP_LEVEL_FACTOR_0P5) || \ + ((type) == AON_ACOMP_LEVEL_FACTOR_0P75) || \ + ((type) == AON_ACOMP_LEVEL_FACTOR_1)) + +/** @defgroup AON_ACOMP_CHAN_TYPE + * @{ + */ +#define IS_AON_ACOMP_CHAN_TYPE(type) (((type) == AON_ACOMP_CHAN_ADC0) || \ + ((type) == AON_ACOMP_CHAN_ADC1) || \ + ((type) == AON_ACOMP_CHAN_ADC2) || \ + ((type) == AON_ACOMP_CHAN_ADC3) || \ + ((type) == AON_ACOMP_CHAN_ADC4) || \ + ((type) == AON_ACOMP_CHAN_ADC5) || \ + ((type) == AON_ACOMP_CHAN_ADC6) || \ + ((type) == AON_ACOMP_CHAN_ADC7) || \ + ((type) == AON_ACOMP_CHAN_DACA) || \ + ((type) == AON_ACOMP_CHAN_DACB) || \ + ((type) == AON_ACOMP_CHAN_VREF_1P2V) || \ + ((type) == AON_ACOMP_CHAN_0P375VBAT_NOT_IMP) || \ + ((type) == AON_ACOMP_CHAN_0P25VBAT) || \ + ((type) == AON_ACOMP_CHAN_0P1875VBAT) || \ + ((type) == AON_ACOMP_CHAN_0P3125VBAT) || \ + ((type) == AON_ACOMP_CHAN_VSS)) + +/** @defgroup AON_ACOMP_BIAS_PROG_TYPE + * @{ + */ +#define IS_AON_ACOMP_BIAS_PROG_TYPE(type) (((type) == AON_ACOMP_BIAS_POWER_MODE1) || \ + ((type) == AON_ACOMP_BIAS_POWER_MODE2) || \ + ((type) == AON_ACOMP_BIAS_POWER_MODE3) || \ + ((type) == AON_ACOMP_BIAS_POWER_NONE)) + +/** @defgroup AON_ACOMP_HYSTERESIS_VOLT_TYPE + * @{ + */ +#define IS_AON_ACOMP_HYSTERESIS_VOLT_TYPE(type) (((type) == AON_ACOMP_HYSTERESIS_VOLT_NONE) || \ + ((type) == AON_ACOMP_HYSTERESIS_VOLT_10MV) || \ + ((type) == AON_ACOMP_HYSTERESIS_VOLT_20MV) || \ + ((type) == AON_ACOMP_HYSTERESIS_VOLT_30MV) || \ + ((type) == AON_ACOMP_HYSTERESIS_VOLT_40MV) || \ + ((type) == AON_ACOMP_HYSTERESIS_VOLT_50MV) || \ + ((type) == AON_ACOMP_HYSTERESIS_VOLT_60MV) || \ + ((type) == AON_ACOMP_HYSTERESIS_VOLT_70MV)) + +/*@} end of group ACOMP_Public_Constants */ + +/** @defgroup ACOMP_Public_Macros + * @{ + */ + +/*@} end of group ACOMP_Public_Macros */ + +/** @defgroup ACOMP_Public_Functions + * @{ + */ +void AON_ACOMP_Init(AON_ACOMP_ID_Type acompNo,AON_ACOMP_CFG_Type *cfg); +void AON_ACOMP_Enable(AON_ACOMP_ID_Type acompNo); +BL_Sts_Type AON_ACOMP_Get_Result(AON_ACOMP_ID_Type acompNo); + +/*@} end of group ACOMP_Public_Functions */ + +/*@} end of group ACOMP */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_ACOMP_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_adc.h b/drivers/bl702_driver/std_drv/inc/bl702_adc.h new file mode 100644 index 00000000..cb36e4d3 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_adc.h @@ -0,0 +1,542 @@ +/** + ****************************************************************************** + * @file bl702_adc.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_ADC_H__ +#define __BL702_ADC_H__ + +#include "aon_reg.h" +#include "gpip_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup ADC + * @{ + */ + +/** @defgroup ADC_Public_Types + * @{ + */ + +/** + * @brief ADC channel type definition + */ +typedef enum { + ADC_CHAN0, /*!< GPIO 0, ADC channel 0 */ + ADC_CHAN1, /*!< GPIO 1, ADC channel 1 */ + ADC_CHAN2, /*!< GPIO 2, ADC channel 2 */ + ADC_CHAN3, /*!< GPIO 3, ADC channel 3 */ + ADC_CHAN4, /*!< GPIO 4, ADC channel 4 */ + ADC_CHAN5, /*!< GPIO 5, ADC channel 5 */ + ADC_CHAN6, /*!< GPIO 6, ADC channel 6 */ + ADC_CHAN7, /*!< GPIO 7, ADC channel 7 */ + ADC_CHAN8, /*!< GPIO 8, ADC channel 8 */ + ADC_CHAN9, /*!< GPIO 9, ADC channel 9 */ + ADC_CHAN10, /*!< GPIO 10, ADC channel 10 */ + ADC_CHAN11, /*!< GPIO 11, ADC channel 11 */ + ADC_CHAN_DAC_OUTA, /*!< DACA, ADC channel 12 */ + ADC_CHAN_DAC_OUTB, /*!< DACB, ADC channel 13 */ + ADC_CHAN_TSEN_P, /*!< TSenp, ADC channel 14 */ + ADC_CHAN_TSEN_N, /*!< TSenn, ADC channel 15 */ + ADC_CHAN_VREF, /*!< Vref, ADC channel 16 */ + ADC_CHAN_DCTEST, /*!< DCTest, ADC channel 17 */ + ADC_CHAN_VABT_HALF, /*!< VBAT/2, ADC channel 18 */ + ADC_CHAN_SENP3, /*!< SenVP3, ADC channel 19 */ + ADC_CHAN_SENP2, /*!< SenVP2, ADC channel 20 */ + ADC_CHAN_SENP1, /*!< SenVP1, ADC channel 21 */ + ADC_CHAN_SENP0, /*!< SenVP0, ADC channel 22 */ + ADC_CHAN_GND, /*!< GND, ADC channel 23 */ +}ADC_Chan_Type; + +/** + * @brief ADC V18 selection type definition + */ +typedef enum { + ADC_V18_SEL_1P62V, /*!< V18 select 1.62V */ + ADC_V18_SEL_1P72V, /*!< V18 select 1.72V */ + ADC_V18_SEL_1P82V, /*!< V18 select 1.82V */ + ADC_V18_SEL_1P92V, /*!< V18 select 1.92V */ +}ADC_V18_SEL_Type; + +/** + * @brief ADC V11 selection type definition + */ +typedef enum { + ADC_V11_SEL_1P0V, /*!< V11 select 1.0V */ + ADC_V11_SEL_1P1V, /*!< V11 select 1.1V */ + ADC_V11_SEL_1P18V, /*!< V11 select 1.18V */ + ADC_V11_SEL_1P26V, /*!< V11 select 1.26V */ +}ADC_V11_SEL_Type; + +/** + * @brief ADC clock type definition + */ +typedef enum { + ADC_CLK_DIV_1, /*!< ADC clock:on 32M clock is 32M */ + ADC_CLK_DIV_4, /*!< ADC clock:on 32M clock is 8M */ + ADC_CLK_DIV_8, /*!< ADC clock:on 32M clock is 4M */ + ADC_CLK_DIV_12, /*!< ADC clock:on 32M clock is 2.666M */ + ADC_CLK_DIV_16, /*!< ADC clock:on 32M clock is 2M */ + ADC_CLK_DIV_20, /*!< ADC clock:on 32M clock is 1.6M */ + ADC_CLK_DIV_24, /*!< ADC clock:on 32M clock is 1.333M */ + ADC_CLK_DIV_32, /*!< ADC clock:on 32M clock is 1M */ +}ADC_CLK_Type; + +/** + * @brief ADC conversion speed type definition + */ +typedef enum { + ADC_DELAY_SEL_0, /*!< Select delay 0 */ + ADC_DELAY_SEL_1, /*!< Select delay 1 */ + ADC_DELAY_SEL_2, /*!< Select delay 2 */ + ADC_DELAY_SEL_3, /*!< Select delay 3 */ + ADC_DELAY_SEL_4, /*!< Select delay 4, not recommend */ + ADC_DELAY_SEL_5, /*!< Select delay 5, not recommend */ + ADC_DELAY_SEL_6, /*!< Select delay 6, not recommend */ + ADC_DELAY_SEL_7, /*!< Select delay 7, not recommend */ +}ADC_DELAY_SEL_Type; + +/** + * @brief ADC PGA gain type definition + */ +typedef enum { + ADC_PGA_GAIN_NONE, /*!< No PGA gain */ + ADC_PGA_GAIN_1, /*!< PGA gain 1 */ + ADC_PGA_GAIN_2, /*!< PGA gain 2 */ + ADC_PGA_GAIN_4, /*!< PGA gain 4 */ + ADC_PGA_GAIN_8, /*!< PGA gain 8 */ + ADC_PGA_GAIN_16, /*!< PGA gain 16 */ + ADC_PGA_GAIN_32, /*!< PGA gain 32 */ +}ADC_PGA_GAIN_Type; + +/** + * @brief ADC analog portion low power mode selection type definition + */ +typedef enum { + ADC_BIAS_SEL_MAIN_BANDGAP, /*!< ADC current from main bandgap */ + ADC_BIAS_SEL_AON_BANDGAP, /*!< ADC current from aon bandgap for HBN mode */ +}ADC_BIAS_SEL_Type; + +/** + * @brief ADC chop mode type definition + */ +typedef enum { + ADC_CHOP_MOD_ALL_OFF, /*!< all off */ + ADC_CHOP_MOD_AZ_ON, /*!< Vref AZ on */ + ADC_CHOP_MOD_AZ_PGA_ON, /*!< Vref AZ and PGA chop on */ + ADC_CHOP_MOD_AZ_PGA_RPC_ON, /*!< Vref AZ and PGA chop+RPC on */ +}ADC_CHOP_MOD_Type; + +/** + * @brief ADC audio PGA output common mode control type definition + */ +typedef enum { + ADC_PGA_VCM_1V, /*!< ADC VCM=1V */ + ADC_PGA_VCM_1P2V, /*!< ADC VCM=1.2V */ + ADC_PGA_VCM_1P4V, /*!< ADC VCM=1.4V */ + ADC_PGA_VCM_1P6V, /*!< ADC VCM=1.6V */ +}ADC_PGA_VCM_Type; + +/** + * @brief ADC tsen diode mode type definition + */ +typedef enum { + ADC_TSEN_MOD_INTERNAL_DIODE, /*!< Internal diode mode */ + ADC_TSEN_MOD_EXTERNAL_DIODE, /*!< External diode mode */ +}ADC_TSEN_MOD_Type; + +/** + * @brief ADC voltage reference type definition + */ +typedef enum { + ADC_VREF_3P3V, /*!< ADC select 3.3V as reference voltage */ + ADC_VREF_2V, /*!< ADC select 2V as reference voltage */ +}ADC_VREF_Type; + +/** + * @brief ADC signal input type definition + */ +typedef enum { + ADC_INPUT_SINGLE_END, /*!< ADC signal is single end */ + ADC_INPUT_DIFF, /*!< ADC signal is differential */ +}ADC_SIG_INPUT_Type; + +/** + * @brief ADC data width type definition + */ +typedef enum { + ADC_DATA_WIDTH_12, /*!< ADC 12 bits */ + ADC_DATA_WIDTH_14_WITH_16_AVERAGE, /*!< ADC 14 bits,and the value is average of 16 converts */ + ADC_DATA_WIDTH_16_WITH_64_AVERAGE, /*!< ADC 16 bits,and the value is average of 64 converts */ + ADC_DATA_WIDTH_16_WITH_128_AVERAGE, /*!< ADC 16 bits,and the value is average of 128 converts */ + ADC_DATA_WIDTH_16_WITH_256_AVERAGE, /*!< ADC 16 bits,and the value is average of 256 converts */ +}ADC_Data_Width_Type; + +/** + * @brief ADC micboost 32db type definition + */ +typedef enum { + ADC_MICBOOST_DB_16DB, /*!< MIC boost 16db */ + ADC_MICBOOST_DB_32DB, /*!< MIC boost 32db */ +}ADC_MICBOOST_DB_Type; + +/** + * @brief ADC pga2 gain type definition + */ +typedef enum { + ADC_PGA2_GAIN_0DB, /*!< MIC pga2 gain 0db */ + ADC_PGA2_GAIN_6DB, /*!< MIC pga2 gain 6db */ + ADC_PGA2_GAIN_N6DB, /*!< MIC pga2 gain -6db */ + ADC_PGA2_GAIN_12DB, /*!< MIC pga2 gain 12db */ +}ADC_PGA2_GAIN_Type; + +/** + * @brief ADC mic mode type definition + */ +typedef enum { + ADC_MIC_MODE_SINGLE, /*!< MIC single mode */ + ADC_MIC_MODE_DIFF, /*!< MIC diff mode */ +}ADC_MIC_MODE_Type; + +/** + * @brief ADC mic type definition + */ +typedef struct { + ADC_MICBOOST_DB_Type micboostDb; /*!< MIC boost db */ + ADC_PGA2_GAIN_Type micPga2Gain; /*!< MIC pga2 gain */ + ADC_MIC_MODE_Type mic1Mode; /*!< MIC1 single or diff */ + ADC_MIC_MODE_Type mic2Mode; /*!< MIC2 single or diff */ + BL_Fun_Type dwaEn; /*!< Improve dynamic performance */ + BL_Fun_Type micboostBypassEn; /*!< MIC boost amp bypass enable or disable */ + BL_Fun_Type micPgaEn; /*!< MIC pga enable or disable */ + BL_Fun_Type micBiasEn; /*!< MIC bias enable or disable */ +}ADC_MIC_Type; + +/** + * @brief ADC configuration type definition + */ +typedef struct { + ADC_V18_SEL_Type v18Sel; /*!< ADC 1.8V select */ + ADC_V11_SEL_Type v11Sel; /*!< ADC 1.1V select */ + ADC_CLK_Type clkDiv; /*!< Clock divider */ + ADC_PGA_GAIN_Type gain1; /*!< PGA gain 1 */ + ADC_PGA_GAIN_Type gain2; /*!< PGA gain 2 */ + ADC_CHOP_MOD_Type chopMode; /*!< ADC chop mode select */ + ADC_BIAS_SEL_Type biasSel; /*!< ADC current form main bandgap or aon bandgap */ + ADC_PGA_VCM_Type vcm; /*!< ADC VCM value */ + ADC_VREF_Type vref; /*!< ADC voltage reference */ + ADC_SIG_INPUT_Type inputMode; /*!< ADC input signal type */ + ADC_Data_Width_Type resWidth; /*!< ADC resolution and oversample rate */ + BL_Fun_Type offsetCalibEn; /*!< Offset calibration enable */ + int16_t offsetCalibVal; /*!< Offset calibration value */ +}ADC_CFG_Type; + +/** + * @brief ADC configuration type definition + */ +typedef struct { + int8_t posChan; /*!< Positive channel */ + int8_t negChan; /*!< Negative channel */ + uint16_t value; /*!< ADC value */ + float volt; /*!< ADC voltage result */ +}ADC_Result_Type; + +/** + * @brief ADC FIFO threshold type definition + */ +typedef enum { + ADC_FIFO_THRESHOLD_1, /*!< ADC FIFO threshold is 1 */ + ADC_FIFO_THRESHOLD_4, /*!< ADC FIFO threshold is 4 */ + ADC_FIFO_THRESHOLD_8, /*!< ADC FIFO threshold is 8 */ + ADC_FIFO_THRESHOLD_16, /*!< ADC FIFO threshold is 16 */ +}ADC_FIFO_Threshold_Type; + +/** + * @brief ADC interrupt type definition + */ +typedef enum { + ADC_INT_POS_SATURATION, /*!< ADC positive channel saturation */ + ADC_INT_NEG_SATURATION, /*!< ADC negative channel saturation */ + ADC_INT_FIFO_UNDERRUN, /*!< ADC FIFO underrun interrupt */ + ADC_INT_FIFO_OVERRUN, /*!< ADC FIFO overrun interrupt */ + ADC_INT_ADC_READY, /*!< ADC data ready interrupt */ + ADC_INT_FIFO_READY, /*!< ADC FIFO count upper to threhold interrupt */ + ADC_INT_ALL, /*!< ADC all the interrupt */ +}ADC_INT_Type; + +/** + * @brief ADC FIFO configuration structure type definition + */ +typedef struct { + ADC_FIFO_Threshold_Type fifoThreshold; /*!< ADC FIFO threshold */ + BL_Fun_Type dmaEn; /*!< ADC DMA enable */ +}ADC_FIFO_Cfg_Type; + +/** + * @brief ADC REG GAIN CAL + */ +typedef struct { + BL_Fun_Type adcGainCoeffEnable; /*!< ADC_Gain_Coeff enable */ + uint16_t adcgainCoeffVal; /*!< ADC_Gain_Coeff value */ + float coe; /*!< ADC_Gain_Coeff result */ +}ADC_Gain_Coeff_Type; + +/*@} end of group ADC_Public_Types */ + +/** @defgroup ADC_Public_Constants + * @{ + */ + +/** @defgroup ADC_CHAN_TYPE + * @{ + */ +#define IS_ADC_CHAN_TYPE(type) (((type) == ADC_CHAN0) || \ + ((type) == ADC_CHAN1) || \ + ((type) == ADC_CHAN2) || \ + ((type) == ADC_CHAN3) || \ + ((type) == ADC_CHAN4) || \ + ((type) == ADC_CHAN5) || \ + ((type) == ADC_CHAN6) || \ + ((type) == ADC_CHAN7) || \ + ((type) == ADC_CHAN8) || \ + ((type) == ADC_CHAN9) || \ + ((type) == ADC_CHAN10) || \ + ((type) == ADC_CHAN11) || \ + ((type) == ADC_CHAN_DAC_OUTA) || \ + ((type) == ADC_CHAN_DAC_OUTB) || \ + ((type) == ADC_CHAN_TSEN_P) || \ + ((type) == ADC_CHAN_TSEN_N) || \ + ((type) == ADC_CHAN_VREF) || \ + ((type) == ADC_CHAN_DCTEST) || \ + ((type) == ADC_CHAN_VABT_HALF) || \ + ((type) == ADC_CHAN_SENP3) || \ + ((type) == ADC_CHAN_SENP2) || \ + ((type) == ADC_CHAN_SENP1) || \ + ((type) == ADC_CHAN_SENP0) || \ + ((type) == ADC_CHAN_GND)) + +/** @defgroup ADC_V18_SEL_TYPE + * @{ + */ +#define IS_ADC_V18_SEL_TYPE(type) (((type) == ADC_V18_SEL_1P62V) || \ + ((type) == ADC_V18_SEL_1P72V) || \ + ((type) == ADC_V18_SEL_1P82V) || \ + ((type) == ADC_V18_SEL_1P92V)) + +/** @defgroup ADC_V11_SEL_TYPE + * @{ + */ +#define IS_ADC_V11_SEL_TYPE(type) (((type) == ADC_V11_SEL_1P0V) || \ + ((type) == ADC_V11_SEL_1P1V) || \ + ((type) == ADC_V11_SEL_1P18V) || \ + ((type) == ADC_V11_SEL_1P26V)) + +/** @defgroup ADC_CLK_TYPE + * @{ + */ +#define IS_ADC_CLK_TYPE(type) (((type) == ADC_CLK_DIV_1) || \ + ((type) == ADC_CLK_DIV_4) || \ + ((type) == ADC_CLK_DIV_8) || \ + ((type) == ADC_CLK_DIV_12) || \ + ((type) == ADC_CLK_DIV_16) || \ + ((type) == ADC_CLK_DIV_20) || \ + ((type) == ADC_CLK_DIV_24) || \ + ((type) == ADC_CLK_DIV_32)) + +/** @defgroup ADC_DELAY_SEL_TYPE + * @{ + */ +#define IS_ADC_DELAY_SEL_TYPE(type) (((type) == ADC_DELAY_SEL_0) || \ + ((type) == ADC_DELAY_SEL_1) || \ + ((type) == ADC_DELAY_SEL_2) || \ + ((type) == ADC_DELAY_SEL_3) || \ + ((type) == ADC_DELAY_SEL_4) || \ + ((type) == ADC_DELAY_SEL_5) || \ + ((type) == ADC_DELAY_SEL_6) || \ + ((type) == ADC_DELAY_SEL_7)) + +/** @defgroup ADC_PGA_GAIN_TYPE + * @{ + */ +#define IS_ADC_PGA_GAIN_TYPE(type) (((type) == ADC_PGA_GAIN_NONE) || \ + ((type) == ADC_PGA_GAIN_1) || \ + ((type) == ADC_PGA_GAIN_2) || \ + ((type) == ADC_PGA_GAIN_4) || \ + ((type) == ADC_PGA_GAIN_8) || \ + ((type) == ADC_PGA_GAIN_16) || \ + ((type) == ADC_PGA_GAIN_32)) + +/** @defgroup ADC_BIAS_SEL_TYPE + * @{ + */ +#define IS_ADC_BIAS_SEL_TYPE(type) (((type) == ADC_BIAS_SEL_MAIN_BANDGAP) || \ + ((type) == ADC_BIAS_SEL_AON_BANDGAP)) + +/** @defgroup ADC_CHOP_MOD_TYPE + * @{ + */ +#define IS_ADC_CHOP_MOD_TYPE(type) (((type) == ADC_CHOP_MOD_ALL_OFF) || \ + ((type) == ADC_CHOP_MOD_AZ_ON) || \ + ((type) == ADC_CHOP_MOD_AZ_PGA_ON) || \ + ((type) == ADC_CHOP_MOD_AZ_PGA_RPC_ON)) + +/** @defgroup ADC_PGA_VCM_TYPE + * @{ + */ +#define IS_ADC_PGA_VCM_TYPE(type) (((type) == ADC_PGA_VCM_1V) || \ + ((type) == ADC_PGA_VCM_1P2V) || \ + ((type) == ADC_PGA_VCM_1P4V) || \ + ((type) == ADC_PGA_VCM_1P6V)) + +/** @defgroup ADC_TSEN_MOD_TYPE + * @{ + */ +#define IS_ADC_TSEN_MOD_TYPE(type) (((type) == ADC_TSEN_MOD_INTERNAL_DIODE) || \ + ((type) == ADC_TSEN_MOD_EXTERNAL_DIODE)) + +/** @defgroup ADC_VREF_TYPE + * @{ + */ +#define IS_ADC_VREF_TYPE(type) (((type) == ADC_VREF_3P3V) || \ + ((type) == ADC_VREF_2V)) + +/** @defgroup ADC_SIG_INPUT_TYPE + * @{ + */ +#define IS_ADC_SIG_INPUT_TYPE(type) (((type) == ADC_INPUT_SINGLE_END) || \ + ((type) == ADC_INPUT_DIFF)) + +/** @defgroup ADC_DATA_WIDTH_TYPE + * @{ + */ +#define IS_ADC_DATA_WIDTH_TYPE(type) (((type) == ADC_DATA_WIDTH_12) || \ + ((type) == ADC_DATA_WIDTH_14_WITH_16_AVERAGE) || \ + ((type) == ADC_DATA_WIDTH_16_WITH_64_AVERAGE) || \ + ((type) == ADC_DATA_WIDTH_16_WITH_128_AVERAGE) || \ + ((type) == ADC_DATA_WIDTH_16_WITH_256_AVERAGE)) + +/** @defgroup ADC_MICBOOST_DB_TYPE + * @{ + */ +#define IS_ADC_MICBOOST_DB_TYPE(type) (((type) == ADC_MICBOOST_DB_16DB) || \ + ((type) == ADC_MICBOOST_DB_32DB)) + +/** @defgroup ADC_PGA2_GAIN_TYPE + * @{ + */ +#define IS_ADC_PGA2_GAIN_TYPE(type) (((type) == ADC_PGA2_GAIN_0DB) || \ + ((type) == ADC_PGA2_GAIN_6DB) || \ + ((type) == ADC_PGA2_GAIN_N6DB) || \ + ((type) == ADC_PGA2_GAIN_12DB)) + +/** @defgroup ADC_MIC_MODE_TYPE + * @{ + */ +#define IS_ADC_MIC_MODE_TYPE(type) (((type) == ADC_MIC_MODE_SINGLE) || \ + ((type) == ADC_MIC_MODE_DIFF)) + +/** @defgroup ADC_FIFO_THRESHOLD_TYPE + * @{ + */ +#define IS_ADC_FIFO_THRESHOLD_TYPE(type) (((type) == ADC_FIFO_THRESHOLD_1) || \ + ((type) == ADC_FIFO_THRESHOLD_4) || \ + ((type) == ADC_FIFO_THRESHOLD_8) || \ + ((type) == ADC_FIFO_THRESHOLD_16)) + +/** @defgroup ADC_INT_TYPE + * @{ + */ +#define IS_ADC_INT_TYPE(type) (((type) == ADC_INT_POS_SATURATION) || \ + ((type) == ADC_INT_NEG_SATURATION) || \ + ((type) == ADC_INT_FIFO_UNDERRUN) || \ + ((type) == ADC_INT_FIFO_OVERRUN) || \ + ((type) == ADC_INT_ADC_READY) || \ + ((type) == ADC_INT_FIFO_READY) || \ + ((type) == ADC_INT_ALL)) + +/*@} end of group ADC_Public_Constants */ + +/** @defgroup ADC_Public_Macros + * @{ + */ + +/*@} end of group ADC_Public_Macros */ + +/** @defgroup ADC_Public_Functions + * @{ + */ +#ifndef BFLB_USE_HAL_DRIVER +void GPADC_DMA_IRQHandler(void); +#endif +void ADC_Vbat_Enable(void); +void ADC_Vbat_Disable(void); +void ADC_Reset(void); +void ADC_Enable(void); +void ADC_Disable(void); +void ADC_Init(ADC_CFG_Type* cfg); +void ADC_Channel_Config(ADC_Chan_Type posCh,ADC_Chan_Type negCh,BL_Fun_Type contEn); +void ADC_Scan_Channel_Config(ADC_Chan_Type posChList[],ADC_Chan_Type negChList[],uint8_t scanLength,BL_Fun_Type contEn); +void ADC_Start(void); +void ADC_Stop(void); +void ADC_FIFO_Cfg(ADC_FIFO_Cfg_Type *fifoCfg); +uint8_t ADC_Get_FIFO_Count(void); +BL_Sts_Type ADC_FIFO_Is_Empty(void); +BL_Sts_Type ADC_FIFO_Is_Full(void); +uint32_t ADC_Read_FIFO(void); +void ADC_Parse_Result(uint32_t *orgVal,uint32_t len,ADC_Result_Type *result); +void ADC_IntClr(ADC_INT_Type intType); +BL_Sts_Type ADC_GetIntStatus(ADC_INT_Type intType); +void ADC_Int_Callback_Install(ADC_INT_Type intType,intCallback_Type* cbFun); +void ADC_IntMask(ADC_INT_Type intType, BL_Mask_Type intMask); +void ADC_SET_TSVBE_LOW(void); +void ADC_SET_TSVBE_HIGH(void); +void ADC_Tsen_Init(ADC_TSEN_MOD_Type tsenMod); +BL_Err_Type ADC_Mic_Init(ADC_MIC_Type * adc_mic_config); +void ADC_MIC_Bias_Disable(void); +void ADC_MIC_Bias_Enable(void); +BL_Err_Type ADC_Trim_TSEN(uint16_t * tsen_offset); +BL_Err_Type ADC_Gain_Trim(void); +uint32_t ADC_Cal_Reg_Coeff_Value(uint32_t raw_reg); +float TSEN_Get_Temp(uint32_t tsen_offset); + +/*@} end of group ADC_Public_Functions */ + +/*@} end of group ADC */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_ADC_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_aon.h b/drivers/bl702_driver/std_drv/inc/bl702_aon.h new file mode 100644 index 00000000..ab1a3379 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_aon.h @@ -0,0 +1,107 @@ +/** + ****************************************************************************** + * @file bl702_aon.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_AON_H__ +#define __BL702_AON_H__ + +#include "aon_reg.h" +#include "glb_reg.h" +#include "hbn_reg.h" +#include "pds_reg.h" +#include "bl702_ef_ctrl.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup AON + * @{ + */ + +/** @defgroup AON_Public_Types + * @{ + */ + +/*@} end of group AON_Public_Types */ + +/** @defgroup AON_Public_Constants + * @{ + */ + +/*@} end of group AON_Public_Constants */ + +/** @defgroup AON_Public_Macros + * @{ + */ + +/*@} end of group AON_Public_Macros */ + +/** @defgroup AON_Public_Functions + * @{ + */ +/*----------*/ +BL_Err_Type AON_Power_On_MBG(void); +BL_Err_Type AON_Power_Off_MBG(void); +/*----------*/ +BL_Err_Type AON_Power_On_XTAL(void); +BL_Err_Type AON_Set_Xtal_CapCode(uint8_t capIn,uint8_t capOut); +uint8_t AON_Get_Xtal_CapCode(void); +BL_Err_Type AON_Power_Off_XTAL(void); +/*----------*/ +BL_Err_Type AON_Power_On_BG(void); +BL_Err_Type AON_Power_Off_BG(void); +/*----------*/ +BL_Err_Type AON_Power_On_LDO11_SOC(void); +BL_Err_Type AON_Power_Off_LDO11_SOC(void); +/*----------*/ +BL_Err_Type AON_Power_On_LDO15_RF(void); +BL_Err_Type AON_Power_Off_LDO15_RF(void); +/*----------*/ +BL_Err_Type AON_Power_On_SFReg(void); +BL_Err_Type AON_Power_Off_SFReg(void); +/*----------*/ +BL_Err_Type AON_LowPower_Enter_PDS0(void); +BL_Err_Type AON_LowPower_Exit_PDS0(void); +/*----------*/ +BL_Err_Type AON_Set_LDO11_SOC_Sstart_Delay(uint8_t delay); + +/*@} end of group AON_Public_Functions */ + +/*@} end of group AON */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_AON_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_cam.h b/drivers/bl702_driver/std_drv/inc/bl702_cam.h new file mode 100644 index 00000000..2fe125b3 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_cam.h @@ -0,0 +1,289 @@ +/** + ****************************************************************************** + * @file bl702_cam.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_CAM_H__ +#define __BL702_CAM_H__ + +#include "cam_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup CAM + * @{ + */ + +/** @defgroup CAM_Public_Types + * @{ + */ + +/** + * @brief CAM AHB burst type definition + */ +typedef enum { + CAM_BURST_TYPE_SINGLE, /*!< Camera AHB burst type:single */ + CAM_BURST_TYPE_INCR4, /*!< Camera AHB burst type:incrementing 4 */ + CAM_BURST_TYPE_INCR8, /*!< Camera AHB burst type:incrementing 8 */ + CAM_BURST_TYPE_INCR16, /*!< Camera AHB burst type:incrementing 16 */ +}CAM_Burst_Type; + +/** + * @brief CAM software mode type definition + */ +typedef enum { + CAM_SW_MODE_AUTO, /*!< CAM auto mode with mjpeg */ + CAM_SW_MODE_MANUAL, /*!< CAM manual mode(software mode) */ +}CAM_SW_Mode_Type; + +/** + * @brief CAM frame mode type definition + */ +typedef enum { + CAM_PLANAR_MODE, /*!< CAM planar mode(YYYY.../UVUV...) */ + CAM_INTERLEAVE_MODE, /*!< CAM interleave mode(YUYVYUYV...) */ +}CAM_Frame_Mode_Type; + +/** + * @brief CAM YUV mode type definition + */ +typedef enum { + CAM_YUV422, /*!< CAM YUV422 mode */ + CAM_YUV420_EVEN, /*!< CAM YUV420 mode(raw data:YUYV YUYV..., processed data:YUYV YY...) which dropped odd pix data in + odd rows */ + CAM_YUV420_ODD, /*!< CAM YUV420 mode(raw data:UYVY UYVY..., processed data:UYVY YY...) which dropped even pix data + in odd rows */ + CAM_YUV400_EVEN, /*!< CAM YUV400 mode(raw data:YUYV YUYV..., processed data:YY YY...) which dropped odd pix data */ + CAM_YUV400_ODD, /*!< CAM YUV400 mode(raw data:UYVY UYVY..., processed data:YY YY...) which dropped even pix data */ +}CAM_YUV_Mode_Type; + +/** + * @brief CAM line active polarity type definition + */ +typedef enum { + CAM_LINE_ACTIVE_POLARITY_LOW, /*!< CAM line active polarity low */ + CAM_LINE_ACTIVE_POLARITY_HIGH, /*!< CAM line active polarity high */ +}CAM_Line_Active_Pol; + +/** + * @brief CAM frame active polarity type definition + */ +typedef enum { + CAM_FRAME_ACTIVE_POLARITY_LOW, /*!< CAM frame active polarity low */ + CAM_FRAME_ACTIVE_POLARITY_HIGH, /*!< CAM frame active polarity high */ +}CAM_Frame_Active_Pol; + +/** + * @brief CAM sensor mode type definition + */ +typedef enum { + CAM_SENSOR_MODE_V_AND_H, /*!< CAM sensor type v and h */ + CAM_SENSOR_MODE_V_OR_H, /*!< CAM sensor type v or h */ + CAM_SENSOR_MODE_V, /*!< CAM sensor type v */ + CAM_SENSOR_MODE_H, /*!< CAM sensor type h */ +}CAM_Sensor_Mode_Type; + +/** + * @brief CAM interrupt type definition + */ +typedef enum { + CAM_INT_NORMAL_0, /*!< Interleave mode: normal write interrupt, planar mode:even byte normal write interrupt */ + CAM_INT_NORMAL_1, /*!< Interleave mode: no use, planar mode:odd byte normal write interrupt */ + CAM_INT_MEMORY_OVERWRITE_0, /*!< Interleave mode: memory overwrite interrupt, planar mode:even byte memory overwrite interrupt */ + CAM_INT_MEMORY_OVERWRITE_1, /*!< Interleave mode: no use, planar mode:odd byte memory overwrite interrupt */ + CAM_INT_FRAME_OVERWRITE_0, /*!< Interleave mode: frame overwrite interrupt, planar mode:even byte frame overwrite interrupt */ + CAM_INT_FRAME_OVERWRITE_1, /*!< Interleave mode: no use, planar mode:odd byte frame overwrite interrupt */ + CAM_INT_FIFO_OVERWRITE_0, /*!< Interleave mode: fifo overwrite interrupt, planar mode:even byte fifo overwrite interrupt */ + CAM_INT_FIFO_OVERWRITE_1, /*!< Interleave mode: no use, planar mode:odd byte fifo overwrite interrupt */ + CAM_INT_VSYNC_CNT_ERROR, /*!< Vsync valid line count non-match interrupt */ + CAM_INT_HSYNC_CNT_ERROR, /*!< Hsync valid pixel count non-match interrupt */ + CAM_INT_ALL, /*!< All of interrupt */ +}CAM_INT_Type; + +/** + * @brief CAM configuration strcut definition + */ +typedef struct { + CAM_SW_Mode_Type swMode; /*!< Software mode */ + uint8_t swIntCnt; /*!< Set frame count to issue interrupt at software mode */ + CAM_Frame_Mode_Type frameMode; /*!< Frame mode */ + CAM_YUV_Mode_Type yuvMode; /*!< YUV mode */ + CAM_Frame_Active_Pol framePol; /*!< Frame polarity */ + CAM_Line_Active_Pol linePol; /*!< Line polarity */ + CAM_Burst_Type burstType; /*!< AHB burst type */ + CAM_Sensor_Mode_Type camSensorMode; /*!< CAM sensor mode */ + uint8_t waitCount; /*!< cycles in FSM wait mode, default value:0x40 */ + uint32_t memStart0; /*!< Interleave mode:data start address, planar mode:even byte start address */ + uint32_t memSize0; /*!< Interleave mode:memory size in burst, planar mode:even byte memory size in burst */ + uint32_t frameSize0; /*!< Interleave mode:frame size in burst, planar mode:even byte frame size in burst */ + uint32_t memStart1; /*!< Interleave mode:no use, planar mode:odd byte start address */ + uint32_t memSize1; /*!< Interleave mode:no use, planar mode:odd byte memory size in burst */ + uint32_t frameSize1; /*!< Interleave mode:no use, planar mode:odd byte frame size in burst */ +}CAM_CFG_Type; + +/** + * @brief CAM interleave mode frame information strcut definition + */ +typedef struct { + uint8_t validFrames; /*!< Valid frames */ + uint32_t curFrameAddr; /*!< Current frame address */ + uint32_t curFrameBytes; /*!< Current frame bytes */ + uint32_t status; /*!< CAM module status */ +}CAM_Interleave_Frame_Info; + +/** + * @brief CAM planar mode frame information strcut definition + */ +typedef struct { + uint8_t validFrames0; /*!< Even byte frame counts in memory */ + uint8_t validFrames1; /*!< Odd byte frame counts in memory */ + uint32_t curFrameAddr0; /*!< Current even frame address */ + uint32_t curFrameAddr1; /*!< Current odd frame address */ + uint32_t curFrameBytes0; /*!< Current even frame bytes */ + uint32_t curFrameBytes1; /*!< Current odd frame bytes */ + uint32_t status; /*!< CAM module status */ +}CAM_Planar_Frame_Info; + +/*@} end of group CAM_Public_Types */ + +/** @defgroup CAM_Public_Constants + * @{ + */ + +/** @defgroup CAM_BURST_TYPE + * @{ + */ +#define IS_CAM_BURST_TYPE(type) (((type) == CAM_BURST_TYPE_SINGLE) || \ + ((type) == CAM_BURST_TYPE_INCR4) || \ + ((type) == CAM_BURST_TYPE_INCR8) || \ + ((type) == CAM_BURST_TYPE_INCR16)) + +/** @defgroup CAM_SW_MODE_TYPE + * @{ + */ +#define IS_CAM_SW_MODE_TYPE(type) (((type) == CAM_SW_MODE_AUTO) || \ + ((type) == CAM_SW_MODE_MANUAL)) + +/** @defgroup CAM_FRAME_MODE_TYPE + * @{ + */ +#define IS_CAM_FRAME_MODE_TYPE(type) (((type) == CAM_PLANAR_MODE) || \ + ((type) == CAM_INTERLEAVE_MODE)) + +/** @defgroup CAM_YUV_MODE_TYPE + * @{ + */ +#define IS_CAM_YUV_MODE_TYPE(type) (((type) == CAM_YUV422) || \ + ((type) == CAM_YUV420_EVEN) || \ + ((type) == CAM_YUV420_ODD) || \ + ((type) == CAM_YUV400_EVEN) || \ + ((type) == CAM_YUV400_ODD)) + +/** @defgroup CAM_LINE_ACTIVE_POL + * @{ + */ +#define IS_CAM_LINE_ACTIVE_POL(type) (((type) == CAM_LINE_ACTIVE_POLARITY_LOW) || \ + ((type) == CAM_LINE_ACTIVE_POLARITY_HIGH)) + +/** @defgroup CAM_FRAME_ACTIVE_POL + * @{ + */ +#define IS_CAM_FRAME_ACTIVE_POL(type) (((type) == CAM_FRAME_ACTIVE_POLARITY_LOW) || \ + ((type) == CAM_FRAME_ACTIVE_POLARITY_HIGH)) + +/** @defgroup CAM_SENSOR_MODE_TYPE + * @{ + */ +#define IS_CAM_SENSOR_MODE_TYPE(type) (((type) == CAM_SENSOR_MODE_V_AND_H) || \ + ((type) == CAM_SENSOR_MODE_V_OR_H) || \ + ((type) == CAM_SENSOR_MODE_V) || \ + ((type) == CAM_SENSOR_MODE_H)) + +/** @defgroup CAM_INT_TYPE + * @{ + */ +#define IS_CAM_INT_TYPE(type) (((type) == CAM_INT_NORMAL_0) || \ + ((type) == CAM_INT_NORMAL_1) || \ + ((type) == CAM_INT_MEMORY_OVERWRITE_0) || \ + ((type) == CAM_INT_MEMORY_OVERWRITE_1) || \ + ((type) == CAM_INT_FRAME_OVERWRITE_0) || \ + ((type) == CAM_INT_FRAME_OVERWRITE_1) || \ + ((type) == CAM_INT_FIFO_OVERWRITE_0) || \ + ((type) == CAM_INT_FIFO_OVERWRITE_1) || \ + ((type) == CAM_INT_VSYNC_CNT_ERROR) || \ + ((type) == CAM_INT_HSYNC_CNT_ERROR) || \ + ((type) == CAM_INT_ALL)) + +/*@} end of group CAM_Public_Constants */ + +/** @defgroup CAM_Public_Macros + * @{ + */ + +/*@} end of group CAM_Public_Macros */ + +/** @defgroup CAM_Public_Functions + * @{ + */ +#ifndef BFLB_USE_HAL_DRIVER +void CAM_IRQHandler(void); +#endif +void CAM_Init(CAM_CFG_Type *cfg); +void CAM_Deinit(void); +void CAM_Enable(void); +void CAM_Disable(void); +void CAM_Clock_Gate(BL_Fun_Type enable); +void CAM_Hsync_Crop(uint16_t start,uint16_t end); +void CAM_Vsync_Crop(uint16_t start,uint16_t end); +void CAM_Set_Hsync_Total_Count(uint16_t count); +void CAM_Set_Vsync_Total_Count(uint16_t count); +void CAM_Interleave_Get_Frame_Info(CAM_Interleave_Frame_Info *info); +void CAM_Planar_Get_Frame_Info(CAM_Planar_Frame_Info *info); +uint8_t CAM_Get_Frame_Count_0(void); +uint8_t CAM_Get_Frame_Count_1(void); +void CAM_Interleave_Pop_Frame(void); +void CAM_Planar_Pop_Frame(void); +void CAM_IntMask(CAM_INT_Type intType,BL_Mask_Type intMask); +void CAM_IntClr(CAM_INT_Type intType); +void CAM_Int_Callback_Install(CAM_INT_Type intType,intCallback_Type* cbFun); + +/*@} end of group CAM_Public_Functions */ + +/*@} end of group CAM */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_CAM_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_clock.h b/drivers/bl702_driver/std_drv/inc/bl702_clock.h new file mode 100644 index 00000000..0af8d947 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_clock.h @@ -0,0 +1,114 @@ +/** + ****************************************************************************** + * @file bl702_glb.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_GLB_H__ +#define __BL702_GLB_H__ + +#include "glb_reg.h" +#include "bl702_hbn.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup GLB + * @{ + */ + +/** @defgroup GLB_Public_Types + * @{ + */ + +/** + * @brief System clock type definition + */ +typedef enum { + BL_SYSTEM_CLOCK_FCLK, /*!< Fast clock/CPU clock */ + BL_SYSTEM_CLOCK_BCLK, /*!< BUS clock */ + BL_SYSTEM_CLOCK_F32K, /*!< F32K clock */ + BL_SYSTEM_CLOCK_XCLK, /*!< XCLK:RC32M or XTAL */ + BL_SYSTEM_CLOCK_XTAL, /*!< XTAL clock */ + BL_SYSTEM_CLOCK_MAX, /*!< MAX type of system clock */ +}BL_System_Clock_Type; + +/** + * @brief SOC clock config type + */ +typedef struct { + uint16_t systemClock[BL_SYSTEM_CLOCK_MAX]; /*!< System lock value */ + uint16_t peripheralClock[BL_AHB_SLAVE1_MAX]; /*!< Pewripherals clock value */ + uint32_t i2sClock; /*!< I2S clock */ +}Clock_Cfg_Type; + +/*@} end of group GLB_Public_Types */ + +/** @defgroup GLB_Public_Constants + * @{ + */ + +/** @defgroup BL_SYSTEM_CLOCK_TYPE + * @{ + */ +#define IS_BL_SYSTEM_CLOCK_TYPE(type) (((type) == BL_SYSTEM_CLOCK_FCLK) || \ + ((type) == BL_SYSTEM_CLOCK_BCLK) || \ + ((type) == BL_SYSTEM_CLOCK_F32K) || \ + ((type) == BL_SYSTEM_CLOCK_XCLK) || \ + ((type) == BL_SYSTEM_CLOCK_XTAL) || \ + ((type) == BL_SYSTEM_CLOCK_MAX)) + +/*@} end of group GLB_Public_Constants */ + +/** @defgroup GLB_Public_Macros + * @{ + */ + +/*@} end of group GLB_Public_Macros */ + +/** @defgroup GLB_Public_Functions + * @{ + */ +void Clock_System_Clock_Set(BL_System_Clock_Type type,uint32_t clock); +void Clock_Peripheral_Clock_Set(BL_AHB_Slave1_Type type,uint32_t clock); +uint32_t Clock_System_Clock_Get(BL_System_Clock_Type type); +uint32_t Clock_Peripheral_Clock_Get(BL_AHB_Slave1_Type type); + +/*@} end of group GLB_Public_Functions */ + +/*@} end of group GLB */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_GLB_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_common.h b/drivers/bl702_driver/std_drv/inc/bl702_common.h new file mode 100644 index 00000000..1cea50c4 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_common.h @@ -0,0 +1,61 @@ +#ifndef __BL702_COMMON_H__ +#define __BL702_COMMON_H__ + +#include "bl702.h" +#include "bflb_platform.h" + +/** @addtogroup BL606_Peripheral_Driver + * @{ + */ + +/** @addtogroup COMMON + * @{ + */ + +/** @defgroup COMMON_Public_Types + * @{ + */ + +/*@} end of group COMMON_Public_Types */ + +/** @defgroup COMMON_Public_Constants + * @{ + */ + +/** @defgroup DRIVER_INT_PERIPH + * @{ + */ +#define IS_INT_PERIPH(INT_PERIPH) ((INT_PERIPH) < IRQn_LAST) + +/*@} end of group DRIVER_INT_PERIPH */ + +/** @defgroup DRIVER_INT_MASK + * @{ + */ +#define IS_BL_MASK_TYPE(type) (((type) == MASK) || ((type) == UNMASK)) + +/*@} end of group COMMON_Public_Constants */ + +/** @defgroup COMMON_Public_Macros + * @{ + */ + +/*@} end of group DRIVER_Public_Macro */ + +/** @defgroup DRIVER_Public_FunctionDeclaration + * @brief DRIVER functions declaration + * @{ + */ + +#define ARCH_Delay_US BL702_Delay_US +#define ARCH_Delay_MS BL702_Delay_MS + +void Interrupt_Handler_Register(IRQn_Type irq,pFunc interruptFun); +void ASM_Delay_Us(uint32_t core,uint32_t cnt); +void BL702_Delay_US(uint32_t cnt); +void BL702_Delay_MS(uint32_t cnt); +/*@} end of group DRIVER_COMMON */ + +#endif /* __BL702_COMMON_H__ */ + + diff --git a/drivers/bl702_driver/std_drv/inc/bl702_dac.h b/drivers/bl702_driver/std_drv/inc/bl702_dac.h new file mode 100644 index 00000000..f248c882 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_dac.h @@ -0,0 +1,285 @@ +/** + ****************************************************************************** + * @file bl702_dac.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_DAC_H__ +#define __BL702_DAC_H__ + +#include "aon_reg.h" +#include "glb_reg.h" +#include "gpip_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup DAC + * @{ + */ + +/** @defgroup DAC_Public_Types + * @{ + */ + +/** + * @brief DAC reference voltage definition + */ +typedef enum { + GLB_DAC_REF_SEL_INTERNAL, /*!< DAC reference select internal */ + GLB_DAC_REF_SEL_EXTERNAL, /*!< DAC reference select external */ +}GLB_DAC_Ref_Sel_Type; + +/** + * @brief DAC reference voltage definition + */ +typedef enum { + GLB_DAC_Output_Volt_0P2_1, /*!< DAC output voltage is 0.2-1V */ + GLB_DAC_Output_Volt_0P225_1P425, /*!< DAC output voltage is 0.225-1.425V */ + GLB_DAC_Output_Volt_RESEVED, /*!< DAC output voltage is 0.225-1.425V */ + GLB_DAC_Output_Volt_0P2_1P8, /*!< DAC output voltage is 0.2-1.8V */ +}GLB_DAC_Output_Volt_Range_Type; + +/** + * @brief DAC channel type definition + */ +typedef enum { + GLB_DAC_CHAN0, /*!< DAC channel 0 */ + GLB_DAC_CHAN1, /*!< DAC channel 1 */ + GLB_DAC_CHAN2, /*!< DAC channel 2 */ + GLB_DAC_CHAN3, /*!< DAC channel 3 */ + GLB_DAC_CHAN4, /*!< DAC channel 4 */ + GLB_DAC_CHAN5, /*!< DAC channel 5 */ + GLB_DAC_CHAN6, /*!< DAC channel 6 */ + GLB_DAC_CHAN7, /*!< DAC channel 7 */ + GLB_DAC_CHAN_ALL, /*!< DAC channel all */ +}GLB_DAC_Chan_Type; + +/** + * @brief DAC channel configuration structure type definition + */ +typedef struct { + BL_Fun_Type chanEn; /*!< Enable this channel or not */ + BL_Fun_Type outputEn; /*!< Output this channel result to PAD */ + GLB_DAC_Chan_Type outMux; /*!< DAC output mux,NOT implement yet,DAC use fixed GPIO9 and GPIO10 */ + GLB_DAC_Output_Volt_Range_Type outRange; /*!< DAC output voltage range */ +}GLB_DAC_Chan_Cfg_Type; + +/** + * @brief DAC configuration structure type definition + */ +typedef struct { + GLB_DAC_Ref_Sel_Type refSel; /*!< DAC reference voltage select */ + BL_Fun_Type resetChanA; /*!< Reset DAC channel A */ + BL_Fun_Type resetChanB; /*!< Reset DAC channel B */ +}GLB_DAC_Cfg_Type; + +/** + * @brief DAC channel B source selection type definition + */ +typedef enum { + GPIP_DAC_ChanB_SRC_REG, /*!< select Reg as source of DAC channel B */ + GPIP_DAC_ChanB_SRC_DMA, /*!< select DMA as source of DAC channel B */ + GPIP_DAC_ChanB_SRC_DMA_WITH_FILTER, /*!< select DMA with Filter as source of DAC channel B */ + GPIP_DAC_ChanB_SRC_SIN_GEN, /*!< select Sin Gen as source of DAC channel B */ + GPIP_DAC_ChanB_SRC_A, /*!< select channel A as source of DAC channel B */ + GPIP_DAC_ChanB_SRC_INVERSE_A, /*!< select inverse of channel A as source of DAC channel B */ +}GPIP_DAC_ChanB_SRC_Type; + +/** + * @brief DAC channel A source selection type definition + */ +typedef enum { + GPIP_DAC_ChanA_SRC_REG, /*!< select Reg as source of DAC channel A */ + GPIP_DAC_ChanA_SRC_DMA, /*!< select DMA as source of DAC channel A */ + GPIP_DAC_ChanA_SRC_DMA_WITH_FILTER, /*!< select DMA with Filter as source of DAC channel A */ + GPIP_DAC_ChanA_SRC_SIN_GEN, /*!< select Sin Gen as source of DAC channel A */ +}GPIP_DAC_ChanA_SRC_Type; + +/** + * @brief DAC clock divider type definition + */ +typedef enum { + DAC_CLK_DIV_16, /*!< ADC clock:on 32M clock is 2M */ + DAC_CLK_DIV_32, /*!< ADC clock:on 32M clock is 1M */ + DAC_CLK_DIV_RESERVE, /*!< reserved */ + DAC_CLK_DIV_64, /*!< ADC clock:on 32M clock is 0.5M */ + DAC_CLK_DIV_1, /*!< ADC clock:on 32M clock is 32M */ +}DAC_CLK_Type; + +/** + * @brief DAC DMA TX format selection type definition + */ +typedef enum { + GPIP_DAC_DMA_FORMAT_0, /*!< {A0},{A1},{A2},... */ + GPIP_DAC_DMA_FORMAT_1, /*!< {B0,A0},{B1,A1},{B2,A2},... */ + GPIP_DAC_DMA_FORMAT_2, /*!< {A1,A0},{A3,A2},{A5,A4},... */ +}GPIP_DAC_DMA_TX_FORMAT_Type; + +/** + * @brief AON and GPIP DAC configuration structure type definition + */ +typedef struct { + GLB_DAC_Ref_Sel_Type refSel; /*!< DAC reference voltage select */ + BL_Fun_Type resetChanA; /*!< Reset DAC channel A */ + BL_Fun_Type resetChanB; /*!< Reset DAC channel B */ + DAC_CLK_Type div; /*!< DAC clock div */ + BL_Fun_Type dmaEn; /*!< DAC DMA transfer enable */ + GPIP_DAC_DMA_TX_FORMAT_Type dmaFmt; /*!< DAC DMA TX format selection */ +}GLB_GPIP_DAC_Cfg_Type; + +/** + * @brief AON and GPIP DAC channel A configuration structure type definition + */ +typedef struct { + BL_Fun_Type chanCovtEn; /*!< Enable this channel conversion or not */ + BL_Fun_Type outputEn; /*!< Output this channel result to PAD */ + BL_Fun_Type chanEn; /*!< Enable this channel or not */ + GPIP_DAC_ChanA_SRC_Type src; /*!< DAC channel A source */ +}GLB_GPIP_DAC_ChanA_Cfg_Type; + +/** + * @brief AON and GPIP DAC channel B configuration structure type definition + */ +typedef struct { + BL_Fun_Type chanCovtEn; /*!< Enable this channel conversion or not */ + BL_Fun_Type outputEn; /*!< Output this channel result to PAD */ + BL_Fun_Type chanEn; /*!< Enable this channel or not */ + GPIP_DAC_ChanB_SRC_Type src; /*!< DAC channel B source */ +}GLB_GPIP_DAC_ChanB_Cfg_Type; + +/*@} end of group DAC_Public_Types */ + +/** @defgroup DAC_Public_Constants + * @{ + */ + +/** @defgroup GLB_DAC_REF_SEL_TYPE + * @{ + */ +#define IS_GLB_DAC_REF_SEL_TYPE(type) (((type) == GLB_DAC_REF_SEL_INTERNAL) || \ + ((type) == GLB_DAC_REF_SEL_EXTERNAL)) + +/** @defgroup GLB_DAC_OUTPUT_VOLT_RANGE_TYPE + * @{ + */ +#define IS_GLB_DAC_OUTPUT_VOLT_RANGE_TYPE(type) (((type) == GLB_DAC_Output_Volt_0P2_1) || \ + ((type) == GLB_DAC_Output_Volt_0P225_1P425) || \ + ((type) == GLB_DAC_Output_Volt_RESEVED) || \ + ((type) == GLB_DAC_Output_Volt_0P2_1P8)) + +/** @defgroup GLB_DAC_CHAN_TYPE + * @{ + */ +#define IS_GLB_DAC_CHAN_TYPE(type) (((type) == GLB_DAC_CHAN0) || \ + ((type) == GLB_DAC_CHAN1) || \ + ((type) == GLB_DAC_CHAN2) || \ + ((type) == GLB_DAC_CHAN3) || \ + ((type) == GLB_DAC_CHAN4) || \ + ((type) == GLB_DAC_CHAN5) || \ + ((type) == GLB_DAC_CHAN6) || \ + ((type) == GLB_DAC_CHAN7) || \ + ((type) == GLB_DAC_CHAN_ALL)) + +/** @defgroup GPIP_DAC_CHANB_SRC_TYPE + * @{ + */ +#define IS_GPIP_DAC_CHANB_SRC_TYPE(type) (((type) == GPIP_DAC_ChanB_SRC_REG) || \ + ((type) == GPIP_DAC_ChanB_SRC_DMA) || \ + ((type) == GPIP_DAC_ChanB_SRC_DMA_WITH_FILTER) || \ + ((type) == GPIP_DAC_ChanB_SRC_SIN_GEN) || \ + ((type) == GPIP_DAC_ChanB_SRC_A) || \ + ((type) == GPIP_DAC_ChanB_SRC_INVERSE_A)) + +/** @defgroup GPIP_DAC_CHANA_SRC_TYPE + * @{ + */ +#define IS_GPIP_DAC_CHANA_SRC_TYPE(type) (((type) == GPIP_DAC_ChanA_SRC_REG) || \ + ((type) == GPIP_DAC_ChanA_SRC_DMA) || \ + ((type) == GPIP_DAC_ChanA_SRC_DMA_WITH_FILTER) || \ + ((type) == GPIP_DAC_ChanA_SRC_SIN_GEN)) + +/** @defgroup DAC_CLK_TYPE + * @{ + */ +#define IS_DAC_CLK_TYPE(type) (((type) == DAC_CLK_DIV_16) || \ + ((type) == DAC_CLK_DIV_32) || \ + ((type) == DAC_CLK_DIV_RESERVE) || \ + ((type) == DAC_CLK_DIV_64) || \ + ((type) == DAC_CLK_DIV_1)) + +/** @defgroup GPIP_DAC_DMA_TX_FORMAT_TYPE + * @{ + */ +#define IS_GPIP_DAC_DMA_TX_FORMAT_TYPE(type) (((type) == GPIP_DAC_DMA_FORMAT_0) || \ + ((type) == GPIP_DAC_DMA_FORMAT_1) || \ + ((type) == GPIP_DAC_DMA_FORMAT_2)) + +/*@} end of group DAC_Public_Constants */ + +/** @defgroup DAC_Public_Macros + * @{ + */ + +/*@} end of group DAC_Public_Macros */ + +/** @defgroup DAC_Public_Functions + * @{ + */ +void GLB_DAC_Init(GLB_DAC_Cfg_Type *cfg); +void GLB_DAC_Set_ChanA_Config(GLB_DAC_Chan_Cfg_Type *cfg); +void GLB_DAC_Set_ChanB_Config(GLB_DAC_Chan_Cfg_Type *cfg); +void GPIP_Set_DAC_ChanB_SRC_SEL(GPIP_DAC_ChanB_SRC_Type src); +void GPIP_Set_DAC_ChanA_SRC_SEL(GPIP_DAC_ChanA_SRC_Type src); +void GPIP_DAC_ChanB_Enable(void); +void GPIP_DAC_ChanB_Disable(void); +void GPIP_DAC_ChanA_Enable(void); +void GPIP_DAC_ChanA_Disable(void); +void GPIP_Set_DAC_DMA_TX_FORMAT_SEL(GPIP_DAC_DMA_TX_FORMAT_Type fmt); +void GPIP_Set_DAC_DMA_TX_Enable(void); +void GPIP_Set_DAC_DMA_TX_Disable(void); +void GPIP_DAC_DMA_WriteData(uint32_t data); +BL_Err_Type GLB_GPIP_DAC_Init(GLB_GPIP_DAC_Cfg_Type* cfg); +void GLB_GPIP_DAC_Set_ChanA_Config(GLB_GPIP_DAC_ChanA_Cfg_Type *cfg); +void GLB_GPIP_DAC_Set_ChanB_Config(GLB_GPIP_DAC_ChanB_Cfg_Type *cfg); +void GLB_DAC_Set_ChanA_Value(uint16_t val); +void GLB_DAC_Set_ChanB_Value(uint16_t val); + +/*@} end of group DAC_Public_Functions */ + +/*@} end of group DAC */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_DAC_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_dma.h b/drivers/bl702_driver/std_drv/inc/bl702_dma.h new file mode 100644 index 00000000..10e4166c --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_dma.h @@ -0,0 +1,360 @@ +/** + ****************************************************************************** + * @file bl702_dma.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_DMA_H__ +#define __BL702_DMA_H__ + +#include "dma_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup DMA + * @{ + */ + +/** @defgroup DMA_Public_Types + * @{ + */ + +/** + * @brief DMA endian type definition + */ +typedef enum { + DMA_LITTLE_ENDIAN = 0, /*!< DMA use little endian */ + DMA_BIG_ENDIAN, /*!< DMA use big endian */ +}DMA_Endian_Type; + +/** + * @brief DMA synchronization logic type definition + */ +typedef enum { + DMA_SYNC_LOGIC_ENABLE = 0, /*!< DMA synchronization logic enable */ + DMA_SYNC_LOGIC_DISABLE, /*!< DMA synchronization logic disable */ +}DMA_Sync_Logic_Type; + +/** + * @brief DMA transfer width type definition + */ +typedef enum { + DMA_TRNS_WIDTH_8BITS = 0, /*!< DMA transfer width:8 bits */ + DMA_TRNS_WIDTH_16BITS, /*!< DMA transfer width:16 bits */ + DMA_TRNS_WIDTH_32BITS, /*!< DMA transfer width:32 bits */ +}DMA_Trans_Width_Type; + +/** + * @brief DMA transfer direction type definition + */ +typedef enum { + DMA_TRNS_M2M = 0, /*!< DMA transfer tyep:memory to memory */ + DMA_TRNS_M2P, /*!< DMA transfer tyep:memory to peripheral */ + DMA_TRNS_P2M, /*!< DMA transfer tyep:peripheral to memory */ + DMA_TRNS_P2P, /*!< DMA transfer tyep:peripheral to peripheral */ +}DMA_Trans_Dir_Type; + +/** + * @brief DMA burst size type definition + */ +typedef enum { + DMA_BURST_SIZE_1 = 0, /*!< DMA transfer width:8 bits */ + DMA_BURST_SIZE_4, /*!< DMA transfer width:16 bits */ + DMA_BURST_SIZE_8, /*!< DMA transfer width:32 bits */ + DMA_BURST_SIZE_16, /*!< DMA transfer width:64 bits */ +}DMA_Burst_Size_Type; + +/** + * @brief DMA destination peripheral type definition + */ +typedef enum { + DMA_REQ_UART0_RX = 0, /*!< DMA request peripheral:UART0 RX */ + DMA_REQ_UART0_TX, /*!< DMA request peripheral:UART0 TX */ + DMA_REQ_UART1_RX, /*!< DMA request peripheral:UART1 RX */ + DMA_REQ_UART1_TX, /*!< DMA request peripheral:UART1 TX */ + DMA_REQ_I2C_RX = 6, /*!< DMA request peripheral:I2C RX */ + DMA_REQ_I2C_TX, /*!< DMA request peripheral:I2C TX */ + DMA_REQ_SPI_RX = 10, /*!< DMA request peripheral:SPI RX */ + DMA_REQ_SPI_TX, /*!< DMA request peripheral:SPI TX */ + DMA_REQ_I2S_RX = 20, /*!< DMA request peripheral:SPI RX */ + DMA_REQ_I2S_TX, /*!< DMA request peripheral:SPI TX */ + DMA_REQ_GPADC0 = 22, /*!< DMA request peripheral:GPADC0 */ + DMA_REQ_GPADC1, /*!< DMA request peripheral:GPADC1 */ + DMA_REQ_NONE = 0, /*!< DMA request peripheral:None */ +}DMA_Periph_Req_Type; + +/** + * @brief DMA channel type definition + */ +typedef enum { + DMA_CH0 = 0, /*!< DMA channel 0 */ + DMA_CH1, /*!< DMA channel 1 */ + DMA_CH2, /*!< DMA channel 2 */ + DMA_CH3, /*!< DMA channel 3 */ + DMA_CH4, /*!< DMA channel 4 */ + DMA_CH5, /*!< DMA channel 5 */ + DMA_CH6, /*!< DMA channel 6 */ + DMA_CH7, /*!< DMA channel 7 */ + DMA_CH_MAX, /*!< */ +}DMA_Chan_Type; + +/** + * @brief DMA LLI Structure PING-PONG + */ +typedef enum { + PING_INDEX = 0, /*!< PING INDEX */ + PONG_INDEX, /*!< PONG INDEX */ +}DMA_LLI_PP_Index_Type; + +/** + * @brief DMA interrupt type definition + */ +typedef enum { + DMA_INT_TCOMPLETED = 0, /*!< DMA completed interrupt */ + DMA_INT_ERR, /*!< DMA error interrupt */ + DMA_INT_ALL, /*!< All the interrupt */ +}DMA_INT_Type; + +/** + * @brief DMA Configuration Structure type definition + */ +typedef struct { + DMA_Endian_Type endian; /*!< DMA endian type */ + DMA_Sync_Logic_Type syncLogic; /*!< DMA synchronization logic */ +}DMA_Cfg_Type; + +/** + * @brief DMA channel Configuration Structure type definition + */ +typedef struct { + uint32_t srcDmaAddr; /*!< Source address of DMA transfer */ + uint32_t destDmaAddr; /*!< Destination address of DMA transfer */ + uint32_t transfLength; /*!< Transfer length, 0~4095, this is burst count */ + DMA_Trans_Dir_Type dir; /*!< Transfer dir control. 0: Memory to Memory, 1: Memory to peripheral, 2: Peripheral to memory */ + DMA_Chan_Type ch; /*!< Channel select 0-7 */ + DMA_Trans_Width_Type srcTransfWidth; /*!< Transfer width. 0: 8 bits, 1: 16 bits, 2: 32 bits */ + DMA_Trans_Width_Type dstTransfWidth; /*!< Transfer width. 0: 8 bits, 1: 16 bits, 2: 32 bits */ + DMA_Burst_Size_Type srcBurstSzie; /*!< Number of data items for burst transaction length. Each item width is as same as tansfer width. + 0: 1 item, 1: 4 items, 2: 8 items, 3: 16 items */ + DMA_Burst_Size_Type dstBurstSzie; /*!< Number of data items for burst transaction length. Each item width is as same as tansfer width. + 0: 1 item, 1: 4 items, 2: 8 items, 3: 16 items */ + BL_Fun_Type dstAddMode; /*!< */ + BL_Fun_Type dstMinMode; /*!< */ + uint8_t fixCnt; /*!< */ + uint8_t srcAddrInc; /*!< Source address increment. 0: No change, 1: Increment */ + uint8_t destAddrInc; /*!< Destination address increment. 0: No change, 1: Increment */ + DMA_Periph_Req_Type srcPeriph; /*!< Source peripheral select */ + DMA_Periph_Req_Type dstPeriph; /*!< Destination peripheral select */ +}DMA_Channel_Cfg_Type; + +/** + * @brief DMA LLI control structure type definition + */ +typedef struct { + uint32_t srcDmaAddr; /*!< Source address of DMA transfer */ + uint32_t destDmaAddr; /*!< Destination address of DMA transfer */ + uint32_t nextLLI; /*!< Next LLI address */ + struct DMA_Control_Reg dmaCtrl; /*!< DMA transaction control */ +}DMA_LLI_Ctrl_Type; + +/** + * @brief DMA LLI configuration structure type definition + */ +typedef struct { + DMA_Trans_Dir_Type dir; /*!< Transfer dir control. 0: Memory to Memory, 1: Memory to peripheral, 2: Peripheral to memory */ + DMA_Periph_Req_Type srcPeriph; /*!< Source peripheral select */ + DMA_Periph_Req_Type dstPeriph; /*!< Destination peripheral select */ +}DMA_LLI_Cfg_Type; + +/** + * @brief DMA LLI Ping-Pong Buf definition + */ +typedef struct { + uint8_t idleIndex; /*!< Index Idle lliListHeader */ + uint8_t dmaChan; /*!< DMA LLI Channel used */ + DMA_LLI_Ctrl_Type *lliListHeader[2]; /*!< Ping-Pong BUf List Header */ + void (* onTransCompleted)(DMA_LLI_Ctrl_Type *); /*!< Completed Transmit One List Callback Function */ +}DMA_LLI_PP_Buf; + +/** + * @brief DMA LLI Ping-Pong Structure definition + */ +typedef struct { + uint8_t trans_index; /*!< Ping or Pong Trigger TC */ + uint8_t dmaChan; /*!< DMA LLI Channel used */ + struct DMA_Control_Reg dmaCtrlRegVal; /*!< DMA Basic Pararmeter */ + DMA_LLI_Cfg_Type *DMA_LLI_Cfg; /*!< LLI Config parameter */ + uint32_t operatePeriphAddr; /*!< Operate Peripheral register address */ + uint32_t chache_buf_addr[2]; /*!< Ping-Pong structure chache */ + BL_Fun_Type is_single_mode; /*!< is Ping-pong running forever or single mode ,if is single mode ping-pong will run only once + after one start */ +}DMA_LLI_PP_Struct; + +/*@} end of group DMA_Public_Types */ + +/** @defgroup DMA_Public_Constants + * @{ + */ + +/** @defgroup DMA_ENDIAN_TYPE + * @{ + */ +#define IS_DMA_ENDIAN_TYPE(type) (((type) == DMA_LITTLE_ENDIAN ) || \ + ((type) == DMA_BIG_ENDIAN)) + +/** @defgroup DMA_SYNC_LOGIC_TYPE + * @{ + */ +#define IS_DMA_SYNC_LOGIC_TYPE(type) (((type) == DMA_SYNC_LOGIC_ENABLE ) || \ + ((type) == DMA_SYNC_LOGIC_DISABLE)) + +/** @defgroup DMA_TRANS_WIDTH_TYPE + * @{ + */ +#define IS_DMA_TRANS_WIDTH_TYPE(type) (((type) == DMA_TRNS_WIDTH_8BITS ) || \ + ((type) == DMA_TRNS_WIDTH_16BITS) || \ + ((type) == DMA_TRNS_WIDTH_32BITS)) + +/** @defgroup DMA_TRANS_DIR_TYPE + * @{ + */ +#define IS_DMA_TRANS_DIR_TYPE(type) (((type) == DMA_TRNS_M2M ) || \ + ((type) == DMA_TRNS_M2P) || \ + ((type) == DMA_TRNS_P2M) || \ + ((type) == DMA_TRNS_P2P)) + +/** @defgroup DMA_BURST_SIZE_TYPE + * @{ + */ +#define IS_DMA_BURST_SIZE_TYPE(type) (((type) == DMA_BURST_SIZE_1 ) || \ + ((type) == DMA_BURST_SIZE_4) || \ + ((type) == DMA_BURST_SIZE_8) || \ + ((type) == DMA_BURST_SIZE_16)) + +/** @defgroup DMA_PERIPH_REQ_TYPE + * @{ + */ +#define IS_DMA_PERIPH_REQ_TYPE(type) (((type) == DMA_REQ_UART0_RX ) || \ + ((type) == DMA_REQ_UART0_TX) || \ + ((type) == DMA_REQ_UART1_RX) || \ + ((type) == DMA_REQ_UART1_TX) || \ + ((type) == DMA_REQ_I2C_RX ) || \ + ((type) == DMA_REQ_I2C_TX) || \ + ((type) == DMA_REQ_SPI_RX ) || \ + ((type) == DMA_REQ_SPI_TX) || \ + ((type) == DMA_REQ_I2S_RX ) || \ + ((type) == DMA_REQ_I2S_TX) || \ + ((type) == DMA_REQ_GPADC0 ) || \ + ((type) == DMA_REQ_GPADC1) || \ + ((type) == DMA_REQ_NONE )) + +/** @defgroup DMA_CHAN_TYPE + * @{ + */ +#define IS_DMA_CHAN_TYPE(type) (((type) == DMA_CH0 ) || \ + ((type) == DMA_CH1) || \ + ((type) == DMA_CH2) || \ + ((type) == DMA_CH3) || \ + ((type) == DMA_CH4) || \ + ((type) == DMA_CH5) || \ + ((type) == DMA_CH6) || \ + ((type) == DMA_CH7) || \ + ((type) == DMA_CH_MAX)) + +/** @defgroup DMA_LLI_PP_INDEX_TYPE + * @{ + */ +#define IS_DMA_LLI_PP_INDEX_TYPE(type) (((type) == PING_INDEX ) || \ + ((type) == PONG_INDEX)) + +/** @defgroup DMA_INT_TYPE + * @{ + */ +#define IS_DMA_INT_TYPE(type) (((type) == DMA_INT_TCOMPLETED ) || \ + ((type) == DMA_INT_ERR) || \ + ((type) == DMA_INT_ALL)) + +/*@} end of group DMA_Public_Constants */ + +/** @defgroup DMA_Public_Macros + * @{ + */ +#define DMA_PINC_ENABLE 1 +#define DMA_PINC_DISABLE 0 +#define DMA_MINC_ENABLE 1 +#define DMA_MINC_DISABLE 0 + +/*@} end of group DMA_Public_Macros */ + +/** @defgroup DMA_Public_Functions + * @{ + */ + +/** + * @brief DMA Functions + */ +#ifndef BFLB_USE_HAL_DRIVER +void DMA_ALL_IRQHandler(void); +#endif +void DMA_Enable(void); +void DMA_Disable(void); +void DMA_Channel_Init(DMA_Channel_Cfg_Type *chCfg); +void DMA_Channel_Update_SrcMemcfg(uint8_t ch, uint32_t memAddr, uint32_t len); +void DMA_Channel_Update_DstMemcfg(uint8_t ch, uint32_t memAddr, uint32_t len); +uint32_t DMA_Channel_TranferSize(uint8_t ch); +BL_Sts_Type DMA_Channel_Is_Busy(uint8_t ch); +void DMA_Channel_Enable(uint8_t ch); +void DMA_Channel_Disable(uint8_t ch); +void DMA_LLI_Init(uint8_t ch,DMA_LLI_Cfg_Type *lliCfg); +void DMA_LLI_Update(uint8_t ch, uint32_t LLI); +void DMA_IntMask(uint8_t ch,DMA_INT_Type intType, BL_Mask_Type intMask); +void DMA_LLI_PpBuf_Start_New_Transmit(DMA_LLI_PP_Buf *dmaPpBuf); +DMA_LLI_Ctrl_Type * DMA_LLI_PpBuf_Remove_Completed_List(DMA_LLI_PP_Buf *dmaPpBuf); +void DMA_LLI_PpBuf_Append(DMA_LLI_PP_Buf *dmaPpBuf, DMA_LLI_Ctrl_Type *dmaLliList); +void DMA_LLI_PpBuf_Destroy(DMA_LLI_PP_Buf *dmaPpBuf); +void DMA_Int_Callback_Install(DMA_Chan_Type dmaChan,DMA_INT_Type intType,intCallback_Type* cbFun); +void DMA_LLI_PpStruct_Start(DMA_LLI_PP_Struct *dmaPpStruct); +void DMA_LLI_PpStruct_Stop(DMA_LLI_PP_Struct *dmaPpStruct); +BL_Err_Type DMA_LLI_PpStruct_Init(DMA_LLI_PP_Struct *dmaPpStruct); +BL_Err_Type DMA_LLI_PpStruct_Set_Transfer_Len(DMA_LLI_PP_Struct *dmaPpStruct, + uint16_t Ping_Transfer_len,uint16_t Pong_Transfer_len); + +/*@} end of group DMA_Public_Functions */ + +/*@} end of group DMA */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_DMA_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_ef_ctrl.h b/drivers/bl702_driver/std_drv/inc/bl702_ef_ctrl.h new file mode 100644 index 00000000..ccc77497 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_ef_ctrl.h @@ -0,0 +1,322 @@ +/** + ****************************************************************************** + * @file bl702_ef_ctrl.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_EF_CTRL_H__ +#define __BL702_EF_CTRL_H__ + +#include "ef_ctrl_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup EF_CTRL + * @{ + */ + +/** @defgroup EF_CTRL_Public_Types + * @{ + */ + +/** + * @brief Efuse Ctrl key slot type definition + */ +typedef enum { + EF_CTRL_KEY_SLOT0, /*!< key slot 0 */ + EF_CTRL_KEY_SLOT1, /*!< key slot 1 */ + EF_CTRL_KEY_SLOT2, /*!< key slot 2 */ + EF_CTRL_KEY_SLOT3, /*!< key slot 3 */ + EF_CTRL_KEY_SLOT4, /*!< key slot 4 */ + EF_CTRL_KEY_SLOT5, /*!< key slot 5 */ + EF_CTRL_KEY_MAX, /*!< */ +}EF_Ctrl_Key_Type; + +/** + * @brief Efuse Ctrl sign type definition + */ +typedef enum { + EF_CTRL_SIGN_NONE, /*!< no sign */ + EF_CTRL_SIGN_RSA, /*!< use RSA to sign */ + EF_CTRL_SIGN_ECC, /*!< use ECC to sign */ +}EF_Ctrl_Sign_Type; + +/** + * @brief Efuse Ctrl flash AES type definition + */ +typedef enum { + EF_CTRL_SF_AES_NONE, /*!< No AES */ + EF_CTRL_SF_AES_128, /*!< AES 128 */ + EF_CTRL_SF_AES_192, /*!< AES 192 */ + EF_CTRL_SF_AES_256, /*!< AES 256 */ +}EF_Ctrl_SF_AES_Type; + +/** + * @brief Efuse Ctrl Dbg type definition + */ +typedef enum { + EF_CTRL_DBG_OPEN = 0, /*!< Open debug */ + EF_CTRL_DBG_PASSWORD, /*!< Open debug with password */ + EF_CTRL_DBG_CLOSE=4, /*!< Close debug */ +}EF_Ctrl_Dbg_Mode_Type; + +/** + * @brief Efuse Ctrl clock type definition + */ +typedef enum { + EF_CTRL_EF_CLK, /*!< Select efuse clock */ + EF_CTRL_SAHB_CLK, /*!< Select SAHB clock */ +}EF_Ctrl_CLK_Type; + +/** + * @brief Efuse Ctrl clock type definition + */ +typedef enum { + EF_CTRL_PARA_DFT , /*!< Select default cyc parameter */ + EF_CTRL_PARA_MANUAL, /*!< Select manual cyc parameter */ +}EF_Ctrl_CYC_PARA_Type; + +/** + * @brief Efuse Ctrl clock type definition + */ +typedef enum { + EF_CTRL_OP_MODE_AUTO , /*!< Select efuse program auto mode */ + EF_CTRL_OP_MODE_MANUAL, /*!< Select efuse program manual mode */ +}EF_Ctrl_OP_MODE_Type; + +/** + * @brief Efuse Ctrl secure configuration structure type definition + */ +typedef struct { + EF_Ctrl_Dbg_Mode_Type ef_dbg_mode; /*!< Efuse debug mode */ + uint8_t ef_dbg_jtag_0_dis; /*!< Jtag debug disable config value */ + uint8_t ef_sboot_en; /*!< Secure boot enable config value */ +}EF_Ctrl_Sec_Param_Type; + +/** + * @brief Efuse analog RC32M trim type definition + */ +typedef struct { + uint32_t trimRc32mCodeFrExt : 8; /*!< Efuse analog trim:trim_rc32m_code_fr_ext */ + uint32_t trimRc32mCodeFrExtParity : 1; /*!< Efuse analog trim:trim_rc32m_ext_code_en_parity */ + uint32_t trimRc32mExtCodeEn : 1; /*!< Efuse analog trim:trim_rc32m_ext_code_en */ + uint32_t reserved : 22; /*!< Efuse analog trim:reserved */ +}Efuse_Ana_RC32M_Trim_Type; + +/** + * @brief Efuse analog RC32K trim type definition + */ +typedef struct { + uint32_t trimRc32kCodeFrExt : 10; /*!< Efuse analog trim:trim_rc32k_code_fr_ext */ + uint32_t trimRc32kCodeFrExtParity : 1; /*!< Efuse analog trim:trim_rc32k_code_fr_ext_parity */ + uint32_t trimRc32kExtCodeEn : 1; /*!< Efuse analog trim:trim_rc32k_ext_code_en */ + uint32_t reserved : 20; /*!< Efuse analog trim:reserved */ +}Efuse_Ana_RC32K_Trim_Type; + +/** + * @brief Efuse analog TSEN trim type definition + */ +typedef struct { + uint32_t tsenRefcodeCorner : 12; /*!< TSEN refcode */ + uint32_t tsenRefcodeCornerParity : 1; /*!< TSEN refcode parity */ + uint32_t tsenRefcodeCornerEn : 1; /*!< TSEN refcode enable */ + uint32_t tsenRefcodeCornerVersion : 1; /*!< TSEN ATE Version */ + uint32_t reserved : 18; /*!< TSEN analog trim:reserved */ +}Efuse_TSEN_Refcode_Corner_Type; + +/** + * @brief Efuse analog ADC Gain trim type definition + */ +typedef struct { + uint32_t adcGainCoeff : 12; /*!< ADC gain coeff */ + uint32_t adcGainCoeffParity : 1; /*!< ADC gain coeff parity */ + uint32_t adcGainCoeffEn : 1; /*!< ADC gain coeff enable */ + uint32_t reserved : 18; /*!< ADC gain coeff:reserved */ +}Efuse_ADC_Gain_Coeff_Type; + +/** + * @brief Efuse analog device info type definition + */ +typedef struct { + uint32_t rsvd_21_0 : 22; /*!< Reserved */ + uint32_t sf_swap_cfg : 2; /*!< 0:swap none, 1:swap SF2_CS & SF2_IO2, 2:swap SF2_IO0 & SF2_IO3, 3:swap both */ + uint32_t psram_cfg : 2; /*!< 0:no psram, 1:2MB psram, 2:external psram, 3:reserved */ + uint32_t flash_cfg : 2; /*!< 0:external flash SF2, 1:0.5MB flash, 2:1MB flash, 3:external flash SF1 */ + uint32_t rsvd_29_28 : 2; /*!< Reserved */ + uint32_t pkg_info : 2; /*!< 0:QFN32, 1:QFN40, 2:QFN48, 3:reserved */ +}Efuse_Device_Info_Type; + +/** + * @brief Efuse Capcode type definition + */ +typedef struct { + uint32_t capCode : 6; /*!< Cap code value */ + uint32_t parity : 1; /*!< Parity of capcode */ + uint32_t en : 1; /*!< Enable status */ + uint32_t rsvd : 24; /*!< Reserved */ +}Efuse_Capcode_Info_Type; + +/*@} end of group EF_CTRL_Public_Types */ + +/** @defgroup EF_CTRL_Public_Constants + * @{ + */ + +/** @defgroup EF_CTRL_KEY_TYPE + * @{ + */ +#define IS_EF_CTRL_KEY_TYPE(type) (((type) == EF_CTRL_KEY_SLOT0) || \ + ((type) == EF_CTRL_KEY_SLOT1) || \ + ((type) == EF_CTRL_KEY_SLOT2) || \ + ((type) == EF_CTRL_KEY_SLOT3) || \ + ((type) == EF_CTRL_KEY_SLOT4) || \ + ((type) == EF_CTRL_KEY_SLOT5) || \ + ((type) == EF_CTRL_KEY_MAX)) + +/** @defgroup EF_CTRL_SIGN_TYPE + * @{ + */ +#define IS_EF_CTRL_SIGN_TYPE(type) (((type) == EF_CTRL_SIGN_NONE) || \ + ((type) == EF_CTRL_SIGN_RSA) || \ + ((type) == EF_CTRL_SIGN_ECC)) + +/** @defgroup EF_CTRL_SF_AES_TYPE + * @{ + */ +#define IS_EF_CTRL_SF_AES_TYPE(type) (((type) == EF_CTRL_SF_AES_NONE) || \ + ((type) == EF_CTRL_SF_AES_128) || \ + ((type) == EF_CTRL_SF_AES_192) || \ + ((type) == EF_CTRL_SF_AES_256)) + +/** @defgroup EF_CTRL_DBG_MODE_TYPE + * @{ + */ +#define IS_EF_CTRL_DBG_MODE_TYPE(type) (((type) == EF_CTRL_DBG_OPEN ) || \ + ((type) == EF_CTRL_DBG_PASSWORD) || \ + ((type) == EF_CTRL_DBG_CLOSE)) + +/** @defgroup EF_CTRL_CLK_TYPE + * @{ + */ +#define IS_EF_CTRL_CLK_TYPE(type) (((type) == EF_CTRL_EF_CLK) || \ + ((type) == EF_CTRL_SAHB_CLK)) + +/** @defgroup EF_CTRL_CYC_PARA_TYPE + * @{ + */ +#define IS_EF_CTRL_CYC_PARA_TYPE(type) (((type) == EF_CTRL_PARA_DFT ) || \ + ((type) == EF_CTRL_PARA_MANUAL)) + +/** @defgroup EF_CTRL_OP_MODE_TYPE + * @{ + */ +#define IS_EF_CTRL_OP_MODE_TYPE(type) (((type) == EF_CTRL_OP_MODE_AUTO ) || \ + ((type) == EF_CTRL_OP_MODE_MANUAL)) + +/*@} end of group EF_CTRL_Public_Constants */ + +/** @defgroup EF_CTRL_Public_Macros + * @{ + */ +#define EF_CTRL_EFUSE_R0_SIZE 128 + +/*@} end of group EF_CTRL_Public_Macros */ + +/** @defgroup EF_CTRL_Public_Functions + * @{ + */ +void EF_Ctrl_Load_Efuse_R0(void); +BL_Sts_Type EF_Ctrl_Busy(void); +BL_Sts_Type EF_Ctrl_AutoLoad_Done(void); +void EF_Ctrl_Write_Dbg_Pwd(uint32_t passWdLow, uint32_t passWdHigh,uint8_t program); +void EF_Ctrl_Read_Dbg_Pwd(uint32_t *passWdLow, uint32_t *passWdHigh); +void EF_Ctrl_Readlock_Dbg_Pwd(uint8_t program); +void EF_Ctrl_Writelock_Dbg_Pwd(uint8_t program); +void EF_Ctrl_Write_Secure_Cfg(EF_Ctrl_Sec_Param_Type *cfg,uint8_t program); +void EF_Ctrl_Read_Secure_Cfg(EF_Ctrl_Sec_Param_Type *cfg); +void EF_Ctrl_Write_Secure_Boot(EF_Ctrl_Sign_Type sign[1], EF_Ctrl_SF_AES_Type aes[1],uint8_t program); +void EF_Ctrl_Read_Secure_Boot(EF_Ctrl_Sign_Type sign[1], EF_Ctrl_SF_AES_Type aes[1]); +void EF_Ctrl_Read_CPU_Cfg(uint8_t *apDisabled,uint8_t *npDisabled,uint8_t *npCpuType); +uint8_t EF_Ctrl_Get_Trim_Parity(uint32_t val,uint8_t len); +void EF_Ctrl_Write_Ana_Trim(uint32_t index, uint32_t trim,uint8_t program); +void EF_Ctrl_Read_Ana_Trim( uint32_t index, uint32_t *trim); +void EF_Ctrl_Read_RC32M_Trim( Efuse_Ana_RC32M_Trim_Type *trim); +void EF_Ctrl_Read_RC32K_Trim( Efuse_Ana_RC32K_Trim_Type *trim); +void EF_Ctrl_Read_TSEN_Trim( Efuse_TSEN_Refcode_Corner_Type *trim); +void EF_Ctrl_Read_ADC_Gain_Trim( Efuse_ADC_Gain_Coeff_Type *trim); +void EF_Ctrl_Write_Sw_Usage(uint32_t index, uint32_t usage,uint8_t program); +void EF_Ctrl_Read_Sw_Usage( uint32_t index, uint32_t *usage); +void EF_Ctrl_Writelock_Sw_Usage(uint32_t index, uint8_t program); +void EF_Ctrl_Write_MAC_Address(uint8_t mac[6],uint8_t program); +BL_Err_Type EF_Ctrl_Read_MAC_Address(uint8_t mac[8]); +BL_Err_Type EF_Ctrl_Read_MAC_Address_Raw(uint8_t mac[7]); +void EF_Ctrl_Writelock_MAC_Address(uint8_t program); +uint8_t EF_Ctrl_Is_MAC_Address_Slot_Empty(uint8_t slot,uint8_t reload); +BL_Err_Type EF_Ctrl_Write_MAC_Address_Opt(uint8_t slot,uint8_t mac[6],uint8_t program); +BL_Err_Type EF_Ctrl_Read_MAC_Address_Opt(uint8_t slot,uint8_t mac[6],uint8_t reload); +BL_Err_Type EF_Ctrl_Read_Chip_ID(uint8_t id[8]); +/*----------*/ +BL_Err_Type EF_Ctrl_Get_Chip_PIDVID(uint16_t pid[1],uint16_t vid[1]); +BL_Err_Type EF_Ctrl_Get_Customer_PIDVID(uint16_t pid[1],uint16_t vid[1]); +/*----------*/ +void EF_Ctrl_Read_Device_Info(Efuse_Device_Info_Type *deviceInfo); +uint8_t EF_Ctrl_Is_CapCode_Empty(uint8_t reload); +BL_Err_Type EF_Ctrl_Write_CapCode_Opt(uint8_t code,uint8_t program); +BL_Err_Type EF_Ctrl_Read_CapCode_Opt(uint8_t *code,uint8_t reload); +uint8_t EF_Ctrl_Is_PowerOffset_Slot_Empty(uint8_t slot,uint8_t reload); +BL_Err_Type EF_Ctrl_Write_PowerOffset_Opt(uint8_t slot,int8_t pwrOffset[3],uint8_t program); +BL_Err_Type EF_Ctrl_Read_PowerOffset_Opt(uint8_t slot,int8_t pwrOffset[3],uint8_t reload); +void EF_Ctrl_Write_AES_Key(uint8_t index,uint32_t *keyData,uint32_t len,uint8_t program); +void EF_Ctrl_Read_AES_Key(uint8_t index,uint32_t *keyData,uint32_t len); +void EF_Ctrl_Writelock_AES_Key(uint8_t index,uint8_t program); +void EF_Ctrl_Readlock_AES_Key(uint8_t index,uint8_t program); +void EF_Ctrl_Program_Direct_R0(uint32_t index, uint32_t *data, uint32_t len); +void EF_Ctrl_Read_Direct_R0(uint32_t index, uint32_t *data, uint32_t len); +void EF_Ctrl_Program_Direct(uint32_t index, uint32_t *data, uint32_t len); +void EF_Ctrl_Read_Direct(uint32_t index, uint32_t *data, uint32_t len); +void EF_Ctrl_Clear(uint32_t index, uint32_t len); +void EF_Ctrl_Crc_Enable(void); +BL_Sts_Type EF_Ctrl_Crc_Is_Busy(void); +void EF_Ctrl_Crc_Set_Golden(uint32_t goldenValue); +BL_Err_Type EF_Ctrl_Crc_Result(void); +void EF_Ctrl_Sw_AHB_Clk_0(void); + +/*@} end of group EF_CTRL_Public_Functions */ + +/*@} end of group EF_CTRL */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_EF_CTRL_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_emac.h b/drivers/bl702_driver/std_drv/inc/bl702_emac.h new file mode 100644 index 00000000..b24ca3e1 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_emac.h @@ -0,0 +1,340 @@ +/** + ****************************************************************************** + * @file bl702_emac.h + * @version V1.2 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2018 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_EMAC_H__ +#define __BL702_EMAC_H__ + +#include "emac_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup EMAC + * @{ + */ + +/** @defgroup EMAC_Public_Types + * @{ + */ + +/** + * @brief EMAC half/full-duplex type definition + */ +typedef enum { + EMAC_MODE_HALFDUPLEX, /*!< ETH half-duplex */ + EMAC_MODE_FULLDUPLEX, /*!< ETH full-duplex */ +}EMAC_Duplex_Type; + +/** + * @brief EMAC speed type definition + */ +typedef enum { + EMAC_SPEED_10M, /*!< ETH speed 10M */ + EMAC_SPEED_100M, /*!< ETH speed 100M */ +}EMAC_Speed_Type; + +/** + * @brief EMAC interrupt type definition + */ +typedef enum { + EMAC_INT_TX_DONE=0x01, /*!< Transmit one frame done */ + EMAC_INT_TX_ERROR=0x02, /*!< Transmit error occur */ + EMAC_INT_RX_DONE=0x04, /*!< Receive one frame done */ + EMAC_INT_RX_ERROR=0x08, /*!< Receive error occur */ + EMAC_INT_RX_BUSY=0x10, /*!< Receive busy due to no free RX buffer Descripter */ + EMAC_INT_TX_CTRL=0x20, /*!< Transmit control frame */ + EMAC_INT_RX_CTRL=0x40, /*!< Receive control frame */ + EMAC_INT_ALL = 0x7F, /*!< */ +}EMAC_INT_Type; + +typedef enum { + EMAC_INT_TX_DONE_IDX=0x0, /*!< Transmit one frame done */ + EMAC_INT_TX_ERROR_IDX=0x1, /*!< Transmit error occur */ + EMAC_INT_RX_DONE_IDX=0x2, /*!< Receive one frame done */ + EMAC_INT_RX_ERROR_IDX=0x3, /*!< Receive error occur */ + EMAC_INT_RX_BUSY_IDX=0x4, /*!< Receive busy due to no free RX buffer Descripter */ + EMAC_INT_TX_CTRL_IDX=0x5, /*!< Transmit control frame */ + EMAC_INT_RX_CTRL_IDX=0x6, /*!< Receive control frame */ + + EMAC_INT_CNT /* EMAC INT source count */ +}EMAC_INT_Index; + +/** + * @brief EMAC configuration type definition + */ +typedef struct { + BL_Fun_Type recvSmallFrame; /*!< Receive small frmae or not */ + BL_Fun_Type recvHugeFrame; /*!< Receive huge frmae(>64K bytes) or not */ + BL_Fun_Type padEnable; /*!< Enable padding for frame which is less than MINFL or not */ + BL_Fun_Type crcEnable; /*!< Enable hardware CRC or not */ + BL_Fun_Type noPreamble; /*!< Enable preamble or not */ + BL_Fun_Type recvBroadCast; /*!< Receive broadcast frame or not */ + BL_Fun_Type interFrameGapCheck; /*!< Check inter frame gap or not */ + BL_Fun_Type miiNoPreamble; /*!< Enable MII interface preamble or not */ + uint8_t miiClkDiv; /*!< MII interface clock divider from bus clock */ + uint8_t maxTxRetry; /*!< Maximum tx retry count */ + uint16_t interFrameGapValue; /*!< Inter frame gap vaule in clock cycles(default 24),which equals 9.6 us for 10 Mbps and 0.96 us + for 100 Mbps mode */ + uint16_t minFrameLen; /*!< Minimum frame length */ + uint16_t maxFrameLen; /*!< Maximum frame length */ + uint16_t collisionValid; /*!< Collision valid value */ + uint8_t macAddr[6]; /*!< MAC Address */ +}EMAC_CFG_Type; + +/** + * @brief EMAC PHY configuration type definition + */ +typedef struct { + BL_Fun_Type autoNegotiation; /*!< Speed and mode auto negotiation */ + EMAC_Duplex_Type duplex; /*!< Duplex mode */ + EMAC_Speed_Type speed; /*!< Speed mode */ + uint8_t rsvd; /*!< Reserved */ + uint16_t phyAddress; /*!< PHY address */ +}ETHPHY_CFG_Type; + +#define BD_TX_CS_POS (0) /*!< Carrier Sense Lost */ +# define BD_TX_CS_LEN (1) +#define BD_TX_DF_POS (1) /*!< Defer Indication */ +# define BD_TX_DF_LEN (1) +#define BD_TX_LC_POS (2) /*!< Late Collision */ +# define BD_TX_LC_LEN (1) +#define BD_TX_RL_POS (3) /*!< Retransmission Limit */ +# define BD_TX_RL_LEN (1) +#define BD_TX_RTRY_POS (4) /*!< Retry Count */ +# define BD_TX_RTRY_LEN (4) +#define BD_TX_UR_POS (8) /*!< Underrun */ +# define BD_TX_UR_LEN (1) +#define BD_TX_CRC_POS (11) /*!< CRC Enable */ +# define BD_TX_CRC_LEN (1) +#define BD_TX_PAD_POS (12) /*!< PAD enable */ +# define BD_TX_PAD_LEN (1) +#define BD_TX_WR_POS (13) /*!< Wrap */ +# define BD_TX_WR_LEN (1) +#define BD_TX_IRQ_POS (14) /*!< Interrupt Request Enable */ +# define BD_TX_IRQ_LEN (1) +#define BD_TX_RD_POS (15) /*!< The data buffer is ready for transmission or is currently being transmitted. You are not allowed to change it */ +# define BD_TX_RD_LEN (1) +#define BD_TX_LEN_POS (16) /*!< TX Data buffer length */ +# define BD_TX_LEN_LEN (16) + +#define BD_RX_LC_POS (0) /*!< Late Collision */ +# define BD_RX_LC_LEN (1) +#define BD_RX_CRC_POS (1) /*!< RX CRC Error */ +# define BD_RX_CRC_LEN (1) +#define BD_RX_SF_POS (2) /*!< Short Frame */ +# define BD_RX_SF_LEN (1) +#define BD_RX_TL_POS (3) /*!< Too Long */ +# define BD_RX_TL_LEN (1) +#define BD_RX_DN_POS (4) /*!< Dribble Nibble */ +# define BD_RX_DN_LEN (1) +#define BD_RX_RE_POS (5) /*!< Receive Error */ +# define BD_RX_RE_LEN (1) +#define BD_RX_OR_POS (6) /*!< Overrun */ +# define BD_RX_OR_LEN (1) +#define BD_RX_M_POS (7) /*!< Miss */ +# define BD_RX_M_LEN (1) +#define BD_RX_CF_POS (8) /*!< Control Frame Received */ +# define BD_RX_CF_LEN (1) +#define BD_RX_WR_POS (13) /*!< Wrap */ +# define BD_RX_WR_LEN (1) +#define BD_RX_IRQ_POS (14) /*!< Interrupt Request Enable */ +# define BD_RX_IRQ_LEN (1) +#define BD_RX_E_POS (15) /*!< The data buffer is empty (and ready for receiving data) or currently receiving data */ +# define BD_RX_E_LEN (1) +#define BD_RX_LEN_POS (16) /*!< RX Data buffer length */ +# define BD_RX_LEN_LEN (16) + +#define EMAC_BD_FIELD_MSK(field) (((1U << BD_##field##_LEN) - 1) << BD_##field##_POS) +#define EMAC_BD_FIELD_UMSK(field) (~(((1U << BD_##field##_LEN) - 1) << BD_##field##_POS)) + +/** + * @brief EMAC TX DMA description type definition + */ +/** + * Note: Always write DWORD1 (buffer addr) first then DWORD0 for racing concern. + */ +typedef struct { + uint32_t C_S_L; /*!< Buffer Descriptors(BD) control,status,length */ + uint32_t Buffer; /*!< BD buffer address */ +}EMAC_BD_Desc_Type; + +/** + * @brief EMAC Handle type definition + */ +typedef struct { + EMAC_BD_Desc_Type *bd; /*!< Tx descriptor header pointer */ + uint8_t txIndexEMAC; /*!< TX index: EMAC */ + uint8_t txIndexCPU; /*!< TX index: CPU/SW */ + uint8_t txBuffLimit; /*!< TX index max */ + uint8_t rsv0; + uint8_t rxIndexEMAC; /*!< RX index: EMAC */ + uint8_t rxIndexCPU; /*!< RX index: CPU/SW */ + uint8_t rxBuffLimit; /*!< RX index max */ + uint8_t rsv1; +}EMAC_Handle_Type; + +/*@} end of group EMAC_Public_Types */ + +/** @defgroup EMAC_Public_Constants + * @{ + */ + +/** @defgroup EMAC_DUPLEX_TYPE + * @{ + */ +#define IS_EMAC_DUPLEX_TYPE(type) (((type) == EMAC_MODE_HALFDUPLEX) || \ + ((type) == EMAC_MODE_FULLDUPLEX)) + +/** @defgroup EMAC_SPEED_TYPE + * @{ + */ +#define IS_EMAC_SPEED_TYPE(type) (((type) == EMAC_SPEED_10M) || \ + ((type) == EMAC_SPEED_100M)) + +/** @defgroup EMAC_INT_TYPE + * @{ + */ +#define IS_EMAC_INT_TYPE(type) (((type) == EMAC_INT_TX_DONE) || \ + ((type) == EMAC_INT_TX_ERROR) || \ + ((type) == EMAC_INT_RX_DONE) || \ + ((type) == EMAC_INT_RX_ERROR) || \ + ((type) == EMAC_INT_RX_BUSY) || \ + ((type) == EMAC_INT_TX_CTRL) || \ + ((type) == EMAC_INT_RX_CTRL) || \ + ((type) == EMAC_INT_ALL)) + +/*@} end of group EMAC_Public_Constants */ + +/** @defgroup EMAC_Public_Macros + * @{ + */ +/* DMA Descriptor offset */ +#define EMAC_DMA_DESC_OFFSET 0x400 +/* ETH packet size */ +#define ETH_MAX_PACKET_SIZE ((uint32_t)1524U) /*!< ETH_HEADER + ETH_EXTRA + ETH_VLAN_TAG + ETH_MAX_ETH_PAYLOAD + ETH_CRC */ +#define ETH_HEADER_SZIE ((uint32_t)14U) /*!< 6 byte Dest addr, 6 byte Src addr, 2 byte length/type */ +#define ETH_CRC_SIZE ((uint32_t)4U) /*!< Ethernet CRC */ +#define ETH_EXTRA_SIZE ((uint32_t)2U) /*!< Extra bytes in some cases */ +#define ETH_VLAN_TAG_SIZE ((uint32_t)4U) /*!< optional 802.1q VLAN Tag */ +#define ETH_MIN_ETH_PAYLOAD_SIZE ((uint32_t)46U) /*!< Minimum Ethernet payload size */ +#define ETH_MAX_ETH_PAYLOAD_SIZE ((uint32_t)1500U) /*!< Maximum Ethernet payload size */ +#define ETH_JUMBO_FRAME_PAYLOAD_SIZE ((uint32_t)9000U) /*!< Jumbo frame payload size */ +/* DP83848 PHY Address*/ +#define EMAC_PHY_ADDRESS 0x00U +#define PHY_LINK_TO ((uint32_t)0x00000FFFU) +#define PHY_AUTONEGO_COMPLETED_TO ((uint32_t)0x00000FFFU) +/* Section 3: Common PHY Registers */ +#define PHY_BCR ((uint16_t)0x00U) /*!< Transceiver Basic Control Register */ +#define PHY_BSR ((uint16_t)0x01U) /*!< Transceiver Basic Status Register */ +# define PHY_BSR_100BASETXFULL (1 << 14) +# define PHY_BSR_100BASETXHALF (1 << 13) +# define PHY_BSR_10BASETXFULL (1 << 12) +# define PHY_BSR_10BASETXHALF (1 << 11) +#define PHY_RESET ((uint16_t)0x8000U) /*!< PHY Reset */ +#define PHY_LOOPBACK ((uint16_t)0x4000U) /*!< Select loop-back mode */ +#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100U) /*!< Set the full-duplex mode at 100 Mb/s */ +#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000U) /*!< Set the half-duplex mode at 100 Mb/s */ +#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100U) /*!< Set the full-duplex mode at 10 Mb/s */ +#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000U) /*!< Set the half-duplex mode at 10 Mb/s */ +#define PHY_AUTONEGOTIATION ((uint16_t)0x1000U) /*!< Enable auto-negotiation function */ +#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200U) /*!< Restart auto-negotiation function */ +#define PHY_POWERDOWN ((uint16_t)0x0800U) /*!< Select the power down mode */ +#define PHY_ISOLATE ((uint16_t)0x0400U) /*!< Isolate PHY from MII */ +#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020U) /*!< Auto-Negotiation process completed */ +#define PHY_LINKED_STATUS ((uint16_t)0x0004U) /*!< Valid link established */ +#define PHY_JABBER_DETECTION ((uint16_t)0x0002U) /*!< Jabber condition detected */ + +#define PHY_PHYID1 ((uint16_t)0x02U) /*!< PHY ID 1 */ +#define PHY_PHYID2 ((uint16_t)0x03U) /*!< PHY ID 2 */ +#define PHY_ADVERTISE ((uint16_t)0x04U) /*!< Auto-negotiation advertisement */ +# define PHY_ADVERTISE_100BASETXFULL (1 << 8) +# define PHY_ADVERTISE_100BASETXHALF (1 << 7) +# define PHY_ADVERTISE_10BASETXFULL (1 << 6) +# define PHY_ADVERTISE_10BASETXHALF (1 << 5) +# define PHY_ADVERTISE_8023 (1 << 0) +#define PHY_LPA ((uint16_t)0x05U) /*!< Auto-negotiation link partner base page ability */ +#define PHY_EXPANSION ((uint16_t)0x06U) /*!< Auto-negotiation expansion */ +/* Section 4: Extended PHY Registers */ +#define PHY_SR ((uint16_t)0x1FU) /*!< PHY special control/ status register Offset */ +# define PHY_SR_SPEED_OFFSET (2) +# define PHY_SR_SPEED_MASK (0x7 << PHY_SR_SPEED_OFFSET) +# define PHY_SR_SPEED_10BASETXHALF (0x1 << PHY_SR_SPEED_OFFSET) +# define PHY_SR_SPEED_10BASETXFULL (0x5 << PHY_SR_SPEED_OFFSET) +# define PHY_SR_SPEED_100BASETXHALF (0x2 << PHY_SR_SPEED_OFFSET) +# define PHY_SR_SPEED_100BASETXFULL (0x6 << PHY_SR_SPEED_OFFSET) +# define PHY_SR_SPEED_MODE_COMPARE(status, mode) (!!(mode == (status & PHY_SR_SPEED_MASK))) +#define PHY_SPEED_STATUS ((uint16_t)0x0004U) /*!< PHY Speed mask */ +#define PHY_DUPLEX_STATUS ((uint16_t)0x0010U) /*!< PHY Duplex mask */ +#define PHY_ISFR ((uint16_t)0x1DU) /*!< PHY Interrupt Source Flag register Offset */ +#define PHY_ISFR_INT4 ((uint16_t)0x0010U) /*!< PHY Link down inturrupt */ + +/*@} end of group EMAC_Public_Macros */ + +/** @defgroup EMAC_Public_Functions + * @{ + */ +#ifndef BFLB_USE_HAL_DRIVER +void EMAC_IRQHandler(void); +#endif +BL_Err_Type EMAC_Init(EMAC_CFG_Type *cfg); +BL_Err_Type EMAC_PhyInit(ETHPHY_CFG_Type *cfg); +BL_Err_Type EMAC_DeInit(void); +BL_Err_Type EMAC_DMADescListInit(EMAC_Handle_Type *handle,uint8_t *txBuff, uint32_t txBuffCount, + uint8_t *rxBuff, uint32_t rxBuffCount); +BL_Err_Type EMAC_DMATxDescGet(EMAC_Handle_Type *handle,EMAC_BD_Desc_Type **txDMADesc); +BL_Err_Type EMAC_StartTx(EMAC_Handle_Type *handle,EMAC_BD_Desc_Type *txDMADesc, uint32_t len); +BL_Err_Type EMAC_Enable(void); +BL_Err_Type EMAC_Disable(void); +BL_Err_Type EMAC_IntMask(EMAC_INT_Type intType,BL_Mask_Type intMask); +BL_Sts_Type EMAC_GetIntStatus(EMAC_INT_Type intType); +BL_Err_Type EMAC_ClrIntStatus(EMAC_INT_Type intType); +BL_Err_Type EMAC_Int_Callback_Install(EMAC_INT_Index intIdx, intCallback_Type* cbFun); +BL_Err_Type EMAC_TxPauseReq(uint16_t timeCount); +BL_Err_Type EMAC_SetHash(uint32_t hash0,uint32_t hash1); +BL_Err_Type EMAC_Phy_Read(uint16_t phyReg, uint16_t *regValue); +BL_Err_Type EMAC_Phy_Write(uint16_t phyReg, uint16_t regValue); + +BL_Err_Type EMAC_Enable_TX(void); +BL_Err_Type EMAC_Disable_TX(void); + +/*@} end of group EMAC_Public_Functions */ + +/*@} end of group EMAC */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_EMAC_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_glb.h b/drivers/bl702_driver/std_drv/inc/bl702_glb.h new file mode 100644 index 00000000..e2a629d9 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_glb.h @@ -0,0 +1,723 @@ +/** + ****************************************************************************** + * @file bl702_glb.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_GLB_H__ +#define __BL702_GLB_H__ + +#include "glb_reg.h" +#include "pds_reg.h" +#include "bl702_gpio.h" +#include "bl702_l1c.h" +#include "bl702_hbn.h" +#include "bl702_sf_ctrl.h" +#include "bl702_sf_cfg.h" +#include "bl702_aon.h" +#include "bl702_ef_ctrl.h" +#include "bl702_pds.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup GLB + * @{ + */ + +/** @defgroup GLB_Public_Types + * @{ + */ + +/** + * @brief GLB root clock type definition + */ +typedef enum { + GLB_ROOT_CLK_RC32M, /*!< root clock select RC32M */ + GLB_ROOT_CLK_XTAL, /*!< root clock select XTAL */ + GLB_ROOT_CLK_DLL, /*!< root clock select DLL others, PLL120M not recommend */ +}GLB_ROOT_CLK_Type; + +/** + * @brief GLB system clock type definition + */ +typedef enum { + GLB_SYS_CLK_RC32M, /*!< use RC32M as system clock frequency */ + GLB_SYS_CLK_XTAL, /*!< use XTAL as system clock */ + GLB_SYS_CLK_DLL57P6M, /*!< use DLL output 57.6M as system clock */ + GLB_SYS_CLK_DLL96M, /*!< use DLL output 96M as system clock */ + GLB_SYS_CLK_DLL144M, /*!< use DLL output 144M as system clock, PLL120M not recommend */ +}GLB_SYS_CLK_Type; + +/** + * @brief GLB CAM clock type definition + */ +typedef enum { + GLB_CAM_CLK_XCLK, /*!< Select XCLK as CAM clock */ + GLB_CAM_CLK_DLL96M, /*!< Select DLL96M as CAM clock */ +}GLB_CAM_CLK_Type; + +/** + * @brief GLB I2S output ref clock type definition + */ +typedef enum { + GLB_I2S_OUT_REF_CLK_NONE, /*!< no output reference clock on I2S_0 ref_clock port */ + GLB_I2S_OUT_REF_CLK_SRC, /*!< output reference clock on I2S_0 ref_clock port */ +}GLB_I2S_OUT_REF_CLK_Type; + +/** + * @brief GLB qdec clock type definition + */ +typedef enum { + GLB_QDEC_CLK_XCLK, /*!< Select XCLK as QDEC clock */ + GLB_QDEC_CLK_F32K, /*!< Select f32k as QDEC clock (PDS mode) */ +}GLB_QDEC_CLK_Type; + +/** + * @brief GLB DMA clock ID type definition + */ +typedef enum { + GLB_DMA_CLK_DMA0_CH0, /*!< DMA clock ID:channel 0 */ + GLB_DMA_CLK_DMA0_CH1, /*!< DMA clock ID:channel 1 */ + GLB_DMA_CLK_DMA0_CH2, /*!< DMA clock ID:channel 2 */ + GLB_DMA_CLK_DMA0_CH3, /*!< DMA clock ID:channel 3 */ + GLB_DMA_CLK_DMA0_CH4, /*!< DMA clock ID:channel 4 */ + GLB_DMA_CLK_DMA0_CH5, /*!< DMA clock ID:channel 5 */ + GLB_DMA_CLK_DMA0_CH6, /*!< DMA clock ID:channel 6 */ + GLB_DMA_CLK_DMA0_CH7, /*!< DMA clock ID:channel 7 */ +}GLB_DMA_CLK_ID_Type; + +/** + * @brief GLB clock source type definition + */ +typedef enum { + GLB_IR_CLK_SRC_XCLK, /*!< IR clock source select XCLK */ +}GLB_IR_CLK_SRC_Type; + +/** + * @brief GLB flash clock type definition + */ +typedef enum { + GLB_SFLASH_CLK_144M, /*!< Select 144M as flash clock */ + GLB_SFLASH_CLK_XCLK, /*!< Select XCLK as flash clock */ + GLB_SFLASH_CLK_57P6M, /*!< Select 57.6M as flash clock */ + GLB_SFLASH_CLK_72M, /*!< Select 72M as flash clock */ + GLB_SFLASH_CLK_BCLK, /*!< Select BCLK as flash clock */ + GLB_SFLASH_CLK_96M, /*!< Select 96M as flash clock */ +}GLB_SFLASH_CLK_Type; + +/** + * @brief GLB chip clock out type definition + */ +typedef enum { + GLB_CHIP_CLK_OUT_NONE, /*!< no chip clock out */ + GLB_CHIP_CLK_OUT_I2S_REF_CLK, /*!< i2s_ref_clk out */ + GLB_CHIP_CLK_OUT_AUDIO_PLL_CLK, /*!< audio_pll_clk out */ + GLB_CHIP_CLK_OUT_XTAL_SOC_32M, /*!< clk_xtal_soc_32M */ +}GLB_CHIP_CLK_OUT_Type; + +/** + * @brief GLB eth ref clock out type definition + */ +typedef enum { + GLB_ETH_REF_CLK_OUT_OUTSIDE_50M, /*!< select outside 50MHz RMII ref clock */ + GLB_ETH_REF_CLK_OUT_INSIDE_50M, /*!< select inside 50MHz RMII ref clock */ +}GLB_ETH_REF_CLK_OUT_Type; + +/** + * @brief GLB SPI pad action type definition + */ +typedef enum { + GLB_SPI_PAD_ACT_AS_SLAVE, /*!< SPI pad act as slave */ + GLB_SPI_PAD_ACT_AS_MASTER, /*!< SPI pad act as master */ +}GLB_SPI_PAD_ACT_AS_Type; + +/** + * @brief GLB PKA clock type definition + */ +typedef enum { + GLB_PKA_CLK_HCLK, /*!< Select HCLK as PKA clock */ + GLB_PKA_CLK_DLL96M, /*!< Select DLL 96M as PKA clock */ +}GLB_PKA_CLK_Type; + +/** + * @brief BMX arb mode type definition + */ +typedef enum { + BMX_ARB_FIX, /*!< 0->fix */ + BMX_ARB_ROUND_ROBIN, /*!< 2->round-robin */ + BMX_ARB_RANDOM, /*!< 3->random */ +}BMX_ARB_Type; + +/** + * @brief BMX configuration structure type definition + */ +typedef struct { + uint8_t timeoutEn; /*!< Bus timeout enable: detect slave no reaponse in 1024 cycles */ + BL_Fun_Type errEn; /*!< Bus error response enable */ + BMX_ARB_Type arbMod; /*!< 0->fix, 2->round-robin, 3->random */ +}BMX_Cfg_Type; + +/** + * @brief BMX bus err type definition + */ +typedef enum { + BMX_BUS_ERR_TRUSTZONE_DECODE, /*!< Bus trustzone decode error */ + BMX_BUS_ERR_ADDR_DECODE, /*!< Bus addr decode error */ +}BMX_BUS_ERR_Type; + +/** + * @brief BMX bus err interrupt type definition + */ +typedef enum { + BMX_ERR_INT_ERR, /*!< BMX bus err interrupt */ + BMX_ERR_INT_ALL, /*!< BMX bus err interrupt max num */ +}BMX_ERR_INT_Type; + +/** + * @brief BMX time out interrupt type definition + */ +typedef enum { + BMX_TO_INT_TIMEOUT, /*!< BMX timeout interrupt */ + BMX_TO_INT_ALL, /*!< BMX timeout interrupt max num */ +}BMX_TO_INT_Type; + +/** + * @brief GLB EM type definition + */ +typedef enum { + GLB_EM_0KB=0x0, /*!< 0x0 --> 0KB */ + GLB_EM_8KB=0x3, /*!< 0x3 --> 8KB */ + GLB_EM_16KB=0xF, /*!< 0xF --> 16KB */ +}GLB_EM_Type; + +/** + * @brief GLB EMAC and CAM pin type definition + */ +typedef enum { + GLB_EMAC_CAM_PIN_EMAC, /*!< select pin as emac */ + GLB_EMAC_CAM_PIN_CAM, /*!< select pin as cam */ +}GLB_EMAC_CAM_PIN_Type; + +/** + * @brief GLB RTC clock type definition + */ +typedef enum { + GLB_MTIMER_CLK_BCLK, /*!< BUS clock */ + GLB_MTIMER_CLK_32K, /*!< 32KHz */ +}GLB_MTIMER_CLK_Type; + +/** + * @brief GLB ADC clock type definition + */ +typedef enum { + GLB_ADC_CLK_AUDIO_PLL, /*!< use Audio PLL as ADC clock */ + GLB_ADC_CLK_XCLK, /*!< use XCLK as ADC clock */ +}GLB_ADC_CLK_Type; + +/** + * @brief GLB DAC clock type definition + */ +typedef enum { + GLB_DAC_CLK_PLL_32M, /*!< select PLL 32M as DAC clock source */ + GLB_DAC_CLK_XCLK, /*!< select XCLK as DAC clock source */ + GLB_DAC_CLK_AUDIO_PLL, /*!< select Audio PLL as DAC clock source */ +}GLB_DAC_CLK_Type; + +/** + * @brief GLB DIG clock source select type definition + */ +typedef enum { + GLB_DIG_CLK_PLL_32M, /*!< select PLL 32M as DIG clock source */ + GLB_DIG_CLK_XCLK, /*!< select XCLK as DIG clock source */ + GLB_DIG_CLK_AUDIO_PLL, /*!< select Audio PLL as DIG clock source */ +}GLB_DIG_CLK_Type; + +/** + * @brief GLB BT bandwidth type definition + */ +typedef enum { + GLB_BT_BANDWIDTH_1M, /*!< BT bandwidth 1MHz */ + GLB_BT_BANDWIDTH_2M, /*!< BT bandwidth 2MHz */ +}GLB_BT_BANDWIDTH_Type; + +/** + * @brief GLB UART signal type definition + */ +typedef enum { + GLB_UART_SIG_0, /*!< UART signal 0 */ + GLB_UART_SIG_1, /*!< UART signal 1 */ + GLB_UART_SIG_2, /*!< UART signal 2 */ + GLB_UART_SIG_3, /*!< UART signal 3 */ + GLB_UART_SIG_4, /*!< UART signal 4 */ + GLB_UART_SIG_5, /*!< UART signal 5 */ + GLB_UART_SIG_6, /*!< UART signal 6 */ + GLB_UART_SIG_7, /*!< UART signal 7 */ +}GLB_UART_SIG_Type; + +/** + * @brief GLB UART signal function type definition + */ +typedef enum { + GLB_UART_SIG_FUN_UART0_RTS, /*!< UART funtion: UART 0 RTS */ + GLB_UART_SIG_FUN_UART0_CTS, /*!< UART funtion: UART 0 CTS */ + GLB_UART_SIG_FUN_UART0_TXD, /*!< UART funtion: UART 0 TXD */ + GLB_UART_SIG_FUN_UART0_RXD, /*!< UART funtion: UART 0 RXD */ + GLB_UART_SIG_FUN_UART1_RTS, /*!< UART funtion: UART 1 RTS */ + GLB_UART_SIG_FUN_UART1_CTS, /*!< UART funtion: UART 1 CTS */ + GLB_UART_SIG_FUN_UART1_TXD, /*!< UART funtion: UART 1 TXD */ + GLB_UART_SIG_FUN_UART1_RXD, /*!< UART funtion: UART 1 RXD */ +}GLB_UART_SIG_FUN_Type; + +/** + * @brief GLB DLL output clock type definition + */ +typedef enum { + GLB_DLL_CLK_57P6M, /*!< DLL output 57P6M clock */ + GLB_DLL_CLK_96M, /*!< DLL output 96M clock */ + GLB_DLL_CLK_144M, /*!< DLL output 144M clock */ + GLB_DLL_CLK_288M, /*!< DLL output 288M clock */ + GLB_DLL_CLK_MMDIV, /*!< DLL output mmdiv clock */ +}GLB_DLL_CLK_Type; + +/** + * @brief GLB GPIO interrupt trigger mode type definition + */ +typedef enum { + GLB_GPIO_INT_TRIG_NEG_PULSE, /*!< GPIO negedge pulse trigger interrupt */ + GLB_GPIO_INT_TRIG_POS_PULSE, /*!< GPIO posedge pulse trigger interrupt */ + GLB_GPIO_INT_TRIG_NEG_LEVEL, /*!< GPIO negedge level trigger interrupt (32k 3T) */ + GLB_GPIO_INT_TRIG_POS_LEVEL, /*!< GPIO posedge level trigger interrupt (32k 3T) */ +}GLB_GPIO_INT_TRIG_Type; + +/** + * @brief GLB GPIO interrupt control mode type definition + */ +typedef enum { + GLB_GPIO_INT_CONTROL_SYNC, /*!< GPIO interrupt sync mode */ + GLB_GPIO_INT_CONTROL_ASYNC, /*!< GPIO interrupt async mode */ +}GLB_GPIO_INT_CONTROL_Type; + +/** + * @brief PLL XTAL type definition + */ +typedef enum { + GLB_DLL_XTAL_NONE, /*!< XTAL is none */ + GLB_DLL_XTAL_32M, /*!< XTAL is 32M */ + GLB_DLL_XTAL_RC32M, /*!< XTAL is RC32M */ +}GLB_DLL_XTAL_Type; + +/*@} end of group GLB_Public_Types */ + +/** @defgroup GLB_Public_Constants + * @{ + */ + +/** @defgroup GLB_ROOT_CLK_TYPE + * @{ + */ +#define IS_GLB_ROOT_CLK_TYPE(type) (((type) == GLB_ROOT_CLK_RC32M) || \ + ((type) == GLB_ROOT_CLK_XTAL) || \ + ((type) == GLB_ROOT_CLK_DLL)) + +/** @defgroup GLB_SYS_CLK_TYPE + * @{ + */ +#define IS_GLB_SYS_CLK_TYPE(type) (((type) == GLB_SYS_CLK_RC32M) || \ + ((type) == GLB_SYS_CLK_XTAL) || \ + ((type) == GLB_SYS_CLK_DLL57P6M) || \ + ((type) == GLB_SYS_CLK_DLL96M) || \ + ((type) == GLB_SYS_CLK_DLL144M)) + +/** @defgroup GLB_CAM_CLK_TYPE + * @{ + */ +#define IS_GLB_CAM_CLK_TYPE(type) (((type) == GLB_CAM_CLK_XCLK) || \ + ((type) == GLB_CAM_CLK_DLL96M)) + +/** @defgroup GLB_I2S_OUT_REF_CLK_TYPE + * @{ + */ +#define IS_GLB_I2S_OUT_REF_CLK_TYPE(type) (((type) == GLB_I2S_OUT_REF_CLK_NONE) || \ + ((type) == GLB_I2S_OUT_REF_CLK_SRC)) + +/** @defgroup GLB_QDEC_CLK_TYPE + * @{ + */ +#define IS_GLB_QDEC_CLK_TYPE(type) (((type) == GLB_QDEC_CLK_XCLK) || \ + ((type) == GLB_QDEC_CLK_F32K)) + +/** @defgroup GLB_DMA_CLK_ID_TYPE + * @{ + */ +#define IS_GLB_DMA_CLK_ID_TYPE(type) (((type) == GLB_DMA_CLK_DMA0_CH0) || \ + ((type) == GLB_DMA_CLK_DMA0_CH1) || \ + ((type) == GLB_DMA_CLK_DMA0_CH2) || \ + ((type) == GLB_DMA_CLK_DMA0_CH3) || \ + ((type) == GLB_DMA_CLK_DMA0_CH4) || \ + ((type) == GLB_DMA_CLK_DMA0_CH5) || \ + ((type) == GLB_DMA_CLK_DMA0_CH6) || \ + ((type) == GLB_DMA_CLK_DMA0_CH7)) + +/** @defgroup GLB_IR_CLK_SRC_TYPE + * @{ + */ +#define IS_GLB_IR_CLK_SRC_TYPE(type) (((type) == GLB_IR_CLK_SRC_XCLK)) + +/** @defgroup GLB_SFLASH_CLK_TYPE + * @{ + */ +#define IS_GLB_SFLASH_CLK_TYPE(type) (((type) == GLB_SFLASH_CLK_144M) || \ + ((type) == GLB_SFLASH_CLK_XCLK) || \ + ((type) == GLB_SFLASH_CLK_57P6M) || \ + ((type) == GLB_SFLASH_CLK_72M) || \ + ((type) == GLB_SFLASH_CLK_BCLK) || \ + ((type) == GLB_SFLASH_CLK_96M)) + +/** @defgroup GLB_CHIP_CLK_OUT_TYPE + * @{ + */ +#define IS_GLB_CHIP_CLK_OUT_TYPE(type) (((type) == GLB_CHIP_CLK_OUT_NONE) || \ + ((type) == GLB_CHIP_CLK_OUT_I2S_REF_CLK) || \ + ((type) == GLB_CHIP_CLK_OUT_AUDIO_PLL_CLK) || \ + ((type) == GLB_CHIP_CLK_OUT_XTAL_SOC_32M)) + +/** @defgroup GLB_ETH_REF_CLK_OUT_TYPE + * @{ + */ +#define IS_GLB_ETH_REF_CLK_OUT_TYPE(type) (((type) == GLB_ETH_REF_CLK_OUT_OUTSIDE_50M) || \ + ((type) == GLB_ETH_REF_CLK_OUT_INSIDE_50M)) + +/** @defgroup GLB_SPI_PAD_ACT_AS_TYPE + * @{ + */ +#define IS_GLB_SPI_PAD_ACT_AS_TYPE(type) (((type) == GLB_SPI_PAD_ACT_AS_SLAVE) || \ + ((type) == GLB_SPI_PAD_ACT_AS_MASTER)) + +/** @defgroup GLB_PKA_CLK_TYPE + * @{ + */ +#define IS_GLB_PKA_CLK_TYPE(type) (((type) == GLB_PKA_CLK_HCLK) || \ + ((type) == GLB_PKA_CLK_DLL96M)) + +/** @defgroup BMX_ARB_TYPE + * @{ + */ +#define IS_BMX_ARB_TYPE(type) (((type) == BMX_ARB_FIX) || \ + ((type) == BMX_ARB_ROUND_ROBIN) || \ + ((type) == BMX_ARB_RANDOM)) + +/** @defgroup BMX_BUS_ERR_TYPE + * @{ + */ +#define IS_BMX_BUS_ERR_TYPE(type) (((type) == BMX_BUS_ERR_TRUSTZONE_DECODE) || \ + ((type) == BMX_BUS_ERR_ADDR_DECODE)) + +/** @defgroup BMX_ERR_INT_TYPE + * @{ + */ +#define IS_BMX_ERR_INT_TYPE(type) (((type) == BMX_ERR_INT_ERR) || \ + ((type) == BMX_ERR_INT_ALL)) + +/** @defgroup BMX_TO_INT_TYPE + * @{ + */ +#define IS_BMX_TO_INT_TYPE(type) (((type) == BMX_TO_INT_TIMEOUT) || \ + ((type) == BMX_TO_INT_ALL)) + +/** @defgroup GLB_EM_TYPE + * @{ + */ +#define IS_GLB_EM_TYPE(type) (((type) == GLB_EM_0KB) || \ + ((type) == GLB_EM_8KB) || \ + ((type) == GLB_EM_16KB)) + +/** @defgroup GLB_EMAC_CAM_PIN_TYPE + * @{ + */ +#define IS_GLB_EMAC_CAM_PIN_TYPE(type) (((type) == GLB_EMAC_CAM_PIN_EMAC) || \ + ((type) == GLB_EMAC_CAM_PIN_CAM)) + +/** @defgroup GLB_MTIMER_CLK_TYPE + * @{ + */ +#define IS_GLB_MTIMER_CLK_TYPE(type) (((type) == GLB_MTIMER_CLK_BCLK) || \ + ((type) == GLB_MTIMER_CLK_32K)) + +/** @defgroup GLB_ADC_CLK_TYPE + * @{ + */ +#define IS_GLB_ADC_CLK_TYPE(type) (((type) == GLB_ADC_CLK_AUDIO_PLL) || \ + ((type) == GLB_ADC_CLK_XCLK)) + +/** @defgroup GLB_DAC_CLK_TYPE + * @{ + */ +#define IS_GLB_DAC_CLK_TYPE(type) (((type) == GLB_DAC_CLK_PLL_32M) || \ + ((type) == GLB_DAC_CLK_XCLK) || \ + ((type) == GLB_DAC_CLK_AUDIO_PLL)) + +/** @defgroup GLB_DIG_CLK_TYPE + * @{ + */ +#define IS_GLB_DIG_CLK_TYPE(type) (((type) == GLB_DIG_CLK_PLL_32M) || \ + ((type) == GLB_DIG_CLK_XCLK) || \ + ((type) == GLB_DIG_CLK_AUDIO_PLL)) + +/** @defgroup GLB_BT_BANDWIDTH_TYPE + * @{ + */ +#define IS_GLB_BT_BANDWIDTH_TYPE(type) (((type) == GLB_BT_BANDWIDTH_1M) || \ + ((type) == GLB_BT_BANDWIDTH_2M)) + +/** @defgroup GLB_UART_SIG_TYPE + * @{ + */ +#define IS_GLB_UART_SIG_TYPE(type) (((type) == GLB_UART_SIG_0) || \ + ((type) == GLB_UART_SIG_1) || \ + ((type) == GLB_UART_SIG_2) || \ + ((type) == GLB_UART_SIG_3) || \ + ((type) == GLB_UART_SIG_4) || \ + ((type) == GLB_UART_SIG_5) || \ + ((type) == GLB_UART_SIG_6) || \ + ((type) == GLB_UART_SIG_7)) + +/** @defgroup GLB_UART_SIG_FUN_TYPE + * @{ + */ +#define IS_GLB_UART_SIG_FUN_TYPE(type) (((type) == GLB_UART_SIG_FUN_UART0_RTS) || \ + ((type) == GLB_UART_SIG_FUN_UART0_CTS) || \ + ((type) == GLB_UART_SIG_FUN_UART0_TXD) || \ + ((type) == GLB_UART_SIG_FUN_UART0_RXD) || \ + ((type) == GLB_UART_SIG_FUN_UART1_RTS) || \ + ((type) == GLB_UART_SIG_FUN_UART1_CTS) || \ + ((type) == GLB_UART_SIG_FUN_UART1_TXD) || \ + ((type) == GLB_UART_SIG_FUN_UART1_RXD)) + +/** @defgroup GLB_DLL_CLK_TYPE + * @{ + */ +#define IS_GLB_DLL_CLK_TYPE(type) (((type) == GLB_DLL_CLK_57P6M) || \ + ((type) == GLB_DLL_CLK_96M) || \ + ((type) == GLB_DLL_CLK_144M) || \ + ((type) == GLB_DLL_CLK_288M) || \ + ((type) == GLB_DLL_CLK_MMDIV)) + +/** @defgroup GLB_GPIO_INT_TRIG_TYPE + * @{ + */ +#define IS_GLB_GPIO_INT_TRIG_TYPE(type) (((type) == GLB_GPIO_INT_TRIG_NEG_PULSE) || \ + ((type) == GLB_GPIO_INT_TRIG_POS_PULSE) || \ + ((type) == GLB_GPIO_INT_TRIG_NEG_LEVEL) || \ + ((type) == GLB_GPIO_INT_TRIG_POS_LEVEL)) + +/** @defgroup GLB_GPIO_INT_CONTROL_TYPE + * @{ + */ +#define IS_GLB_GPIO_INT_CONTROL_TYPE(type) (((type) == GLB_GPIO_INT_CONTROL_SYNC) || \ + ((type) == GLB_GPIO_INT_CONTROL_ASYNC)) + +/** @defgroup GLB_DLL_XTAL_TYPE + * @{ + */ +#define IS_GLB_DLL_XTAL_TYPE(type) (((type) == GLB_DLL_XTAL_NONE) || \ + ((type) == GLB_DLL_XTAL_32M) || \ + ((type) == GLB_DLL_XTAL_RC32M)) + +/*@} end of group GLB_Public_Constants */ + +/** @defgroup GLB_Public_Macros + * @{ + */ +#define UART_SIG_SWAP_GPIO0_GPIO7 0x01 /* GPIO0-7 uart_sig[0:7] -> uart_sig[4:7], uart_sig[0:3] */ +#define UART_SIG_SWAP_GPIO8_GPIO15 0x02 /* GPIO8-15 uart_sig[0:7] -> uart_sig[4:7], uart_sig[0:3] */ +#define UART_SIG_SWAP_GPIO16_GPIO22 0x04 /* GPIO16-22 uart_sig[0:7] -> uart_sig[4:7], uart_sig[0:3] */ +#define UART_SIG_SWAP_NONE 0x00 /* GPIO0-22 uart_sig[0:7] <- uart_sig[4:7], uart_sig[0:3] */ +#define JTAG_SIG_SWAP_GPIO0_GPIO3 0x01 /* GPIO0-3 E21_TMS/E21_TDI/E21_TCK/E21_TDO -> E21_TCK/E21_TDO/E21_TMS/E21_TDI */ +#define JTAG_SIG_SWAP_GPIO4_GPIO7 0x02 /* GPIO4-7 E21_TMS/E21_TDI/E21_TCK/E21_TDO -> E21_TCK/E21_TDO/E21_TMS/E21_TDI */ +#define JTAG_SIG_SWAP_GPIO8_GPIO11 0x04 /* GPIO8-11 E21_TMS/E21_TDI/E21_TCK/E21_TDO -> E21_TCK/E21_TDO/E21_TMS/E21_TDI */ +#define JTAG_SIG_SWAP_GPIO12_GPIO15 0x08 /* GPIO12-15 E21_TMS/E21_TDI/E21_TCK/E21_TDO -> E21_TCK/E21_TDO/E21_TMS/E21_TDI */ +#define JTAG_SIG_SWAP_GPIO16_GPIO19 0x10 /* GPIO16-19 E21_TMS/E21_TDI/E21_TCK/E21_TDO -> E21_TCK/E21_TDO/E21_TMS/E21_TDI */ +#define JTAG_SIG_SWAP_GPIO20_GPIO22 0x20 /* GPIO20-22 E21_TMS/E21_TDI/E21_TCK/E21_TDO -> E21_TCK/E21_TDO/E21_TMS/E21_TDI */ +#define JTAG_SIG_SWAP_NONE 0x00 /* GPIO0-22 E21_TMS/E21_TDI/E21_TCK/E21_TDO <- E21_TCK/E21_TDO/E21_TMS/E21_TDI */ + +/*@} end of group GLB_Public_Macros */ + +/** @defgroup GLB_Public_Functions + * @{ + */ +/*----------*/ +#ifndef BFLB_USE_HAL_DRIVER +void BMX_ERR_IRQHandler(void); +void BMX_TO_IRQHandler(void); +void GPIO_INT0_IRQHandler(void); +#endif +/*----------*/ +GLB_ROOT_CLK_Type GLB_Get_Root_CLK_Sel(void); +BL_Err_Type GLB_Set_System_CLK_Div(uint8_t hclkDiv,uint8_t bclkDiv); +uint8_t GLB_Get_BCLK_Div(void); +uint8_t GLB_Get_HCLK_Div(void); +BL_Err_Type Update_SystemCoreClockWith_XTAL(GLB_DLL_XTAL_Type xtalType); +BL_Err_Type GLB_Set_System_CLK(GLB_DLL_XTAL_Type xtalType,GLB_SYS_CLK_Type clkFreq); +BL_Err_Type System_Core_Clock_Update_From_RC32M(void); +/*----------*/ +BL_Err_Type GLB_Set_CAM_CLK(uint8_t enable,GLB_CAM_CLK_Type clkSel,uint8_t div); +BL_Err_Type GLB_Set_MAC154_ZIGBEE_CLK(uint8_t enable); +BL_Err_Type GLB_Set_BLE_CLK(uint8_t enable); +BL_Err_Type GLB_Set_I2S_CLK(uint8_t enable,GLB_I2S_OUT_REF_CLK_Type outRef); +BL_Err_Type GLB_Set_USB_CLK(uint8_t enable); +BL_Err_Type GLB_Set_QDEC_CLK(GLB_QDEC_CLK_Type clkSel,uint8_t div); +/*----------*/ +BL_Err_Type GLB_Set_DMA_CLK(uint8_t enable,GLB_DMA_CLK_ID_Type clk); +BL_Err_Type GLB_Set_IR_CLK(uint8_t enable,GLB_IR_CLK_SRC_Type clkSel,uint8_t div); +BL_Err_Type GLB_Set_SF_CLK(uint8_t enable,GLB_SFLASH_CLK_Type clkSel,uint8_t div); +BL_Err_Type GLB_Set_UART_CLK(uint8_t enable,HBN_UART_CLK_Type clkSel,uint8_t div); +/*----------*/ +BL_Err_Type GLB_Set_Chip_Out_0_CLK_Sel(GLB_CHIP_CLK_OUT_Type clkSel); +BL_Err_Type GLB_Set_Chip_Out_1_CLK_Sel(GLB_CHIP_CLK_OUT_Type clkSel); +BL_Err_Type GLB_Set_I2C_CLK(uint8_t enable,uint8_t div); +BL_Err_Type GLB_Invert_ETH_RX_CLK(uint8_t enable); +BL_Err_Type GLB_Invert_RF_TEST_O_CLK(uint8_t enable); +BL_Err_Type GLB_Set_SPI_CLK(uint8_t enable,uint8_t div); +BL_Err_Type GLB_Invert_ETH_TX_CLK(uint8_t enable); +BL_Err_Type GLB_Invert_ETH_REF_O_CLK(uint8_t enable); +BL_Err_Type GLB_Set_ETH_REF_O_CLK_Sel(GLB_ETH_REF_CLK_OUT_Type clkSel); +/*----------*/ +BL_Err_Type GLB_Set_PKA_CLK_Sel(GLB_PKA_CLK_Type clkSel); +BL_Err_Type GLB_SW_System_Reset(void); +BL_Err_Type GLB_SW_CPU_Reset(void); +BL_Err_Type GLB_SW_POR_Reset(void); +BL_Err_Type GLB_AHB_Slave1_Reset(BL_AHB_Slave1_Type slave1); +BL_Err_Type GLB_AHB_Slave1_Clock_Gate(uint8_t enable,BL_AHB_Slave1_Type slave1); +/*----------*/ +BL_Err_Type GLB_BMX_Init(BMX_Cfg_Type *BmxCfg); +BL_Err_Type GLB_BMX_Addr_Monitor_Enable(void); +BL_Err_Type GLB_BMX_Addr_Monitor_Disable(void); +BL_Err_Type GLB_BMX_BusErrResponse_Enable(void); +BL_Err_Type GLB_BMX_BusErrResponse_Disable(void); +BL_Sts_Type GLB_BMX_Get_Status(BMX_BUS_ERR_Type errType); +uint32_t GLB_BMX_Get_Err_Addr(void); +BL_Err_Type BMX_ERR_INT_Callback_Install(BMX_ERR_INT_Type intType,intCallback_Type* cbFun); +BL_Err_Type BMX_TIMEOUT_INT_Callback_Install(BMX_TO_INT_Type intType,intCallback_Type* cbFun); +/*----------*/ +BL_Err_Type GLB_Set_SRAM_RET(uint32_t value); +uint32_t GLB_Get_SRAM_RET(void); +BL_Err_Type GLB_Set_SRAM_SLP(uint32_t value); +uint32_t GLB_Get_SRAM_SLP(void); +BL_Err_Type GLB_Set_SRAM_PARM(uint32_t value); +uint32_t GLB_Get_SRAM_PARM(void); +/*----------*/ +BL_Err_Type GLB_Set_EM_Sel(GLB_EM_Type emType); +/*----------*/ +BL_Err_Type GLB_SWAP_EMAC_CAM_Pin(GLB_EMAC_CAM_PIN_Type pinType); +BL_Err_Type GLB_Set_Ext_Rst_Smt(uint8_t enable); +BL_Err_Type GLB_Set_Kys_Drv_Col(uint8_t enable); +BL_Err_Type GLB_UART_Sig_Swap_Set(uint8_t swapSel); +BL_Err_Type GLB_JTAG_Sig_Swap_Set(uint8_t swapSel); +BL_Err_Type GLB_CCI_Use_IO_0_1_2_7(uint8_t enable); +BL_Err_Type GLB_CCI_Use_Jtag_Pin(uint8_t enable); +BL_Err_Type GLB_Swap_SPI_0_MOSI_With_MISO(BL_Fun_Type newState); +BL_Err_Type GLB_Set_SPI_0_ACT_MOD_Sel(GLB_SPI_PAD_ACT_AS_Type mod); +BL_Err_Type GLB_Select_Internal_Flash(void); +BL_Err_Type GLB_Select_External_Flash(void); +BL_Err_Type GLB_Deswap_Flash_Pin(void); +BL_Err_Type GLB_Swap_Flash_CS_IO2_Pin(); +BL_Err_Type GLB_Swap_Flash_IO0_IO3_Pin(); +BL_Err_Type GLB_Swap_Flash_Pin(void); +BL_Err_Type GLB_Select_Internal_PSram(void); +/*----------*/ +BL_Err_Type GLB_Set_PDM_CLK(uint8_t enable,uint8_t div); +/*----------*/ +BL_Err_Type GLB_Set_MTimer_CLK(uint8_t enable,GLB_MTIMER_CLK_Type clkSel,uint32_t div); +/*----------*/ +BL_Err_Type GLB_Set_ADC_CLK(uint8_t enable,GLB_ADC_CLK_Type clkSel,uint8_t div); +BL_Err_Type GLB_Set_DAC_CLK(uint8_t enable,GLB_DAC_CLK_Type clkSel,uint8_t div); +/*----------*/ +BL_Err_Type GLB_Set_DIG_CLK_Sel(GLB_DIG_CLK_Type clkSel); +BL_Err_Type GLB_Set_DIG_512K_CLK(uint8_t enable,uint8_t compensation,uint8_t div); +BL_Err_Type GLB_Set_DIG_32K_CLK(uint8_t enable,uint8_t compensation,uint8_t div); +/*----------*/ +BL_Err_Type GLB_Set_BT_Coex_Signal(uint8_t enable,GLB_BT_BANDWIDTH_Type bandWidth, + uint8_t pti,uint8_t channel); +/*----------*/ +BL_Err_Type GLB_UART_Fun_Sel(GLB_UART_SIG_Type sig,GLB_UART_SIG_FUN_Type fun); +/*----------*/ +BL_Err_Type GLB_Power_Off_DLL(void); +BL_Err_Type GLB_Power_On_DLL(GLB_DLL_XTAL_Type xtalType); +BL_Err_Type GLB_Enable_DLL_All_Clks(void); +BL_Err_Type GLB_Enable_DLL_Clk(GLB_DLL_CLK_Type dllClk); +BL_Err_Type GLB_Disable_DLL_All_Clks(void); +BL_Err_Type GLB_Disable_DLL_Clk(GLB_DLL_CLK_Type dllClk); +/*----------*/ +BL_Err_Type GLB_IR_RX_GPIO_Sel(GLB_GPIO_Type gpio); +BL_Err_Type GLB_IR_LED_Driver_Enable(void); +BL_Err_Type GLB_IR_LED_Driver_Disable(void); +BL_Err_Type GLB_IR_LED_Driver_Output_Enable(GLB_GPIO_Type gpio); +BL_Err_Type GLB_IR_LED_Driver_Output_Disable(GLB_GPIO_Type gpio); +BL_Err_Type GLB_IR_LED_Driver_Ibias(uint8_t ibias); +/*----------*/ +BL_Err_Type GLB_GPIO_Init(GLB_GPIO_Cfg_Type *cfg); +BL_Err_Type GLB_GPIO_Func_Init(GLB_GPIO_FUNC_Type gpioFun,GLB_GPIO_Type *pinList,uint8_t cnt); +BL_Err_Type GLB_GPIO_INPUT_Enable(GLB_GPIO_Type gpioPin); +BL_Err_Type GLB_GPIO_INPUT_Disable(GLB_GPIO_Type gpioPin); +BL_Err_Type GLB_GPIO_OUTPUT_Enable(GLB_GPIO_Type gpioPin); +BL_Err_Type GLB_GPIO_OUTPUT_Disable(GLB_GPIO_Type gpioPin); +BL_Err_Type GLB_GPIO_Set_HZ(GLB_GPIO_Type gpioPin); +uint8_t GLB_GPIO_Get_Fun(GLB_GPIO_Type gpioPin); +BL_Err_Type GLB_GPIO_Write(GLB_GPIO_Type gpioPin,uint32_t val); +uint32_t GLB_GPIO_Read(GLB_GPIO_Type gpioPin); +BL_Err_Type GLB_GPIO_IntMask(GLB_GPIO_Type gpioPin,BL_Mask_Type intMask); +BL_Err_Type GLB_GPIO_IntClear(GLB_GPIO_Type gpioPin,BL_Sts_Type intClear); +BL_Sts_Type GLB_Get_GPIO_IntStatus(GLB_GPIO_Type gpioPin); +BL_Err_Type GLB_Set_GPIO_IntMod(GLB_GPIO_Type gpioPin,GLB_GPIO_INT_CONTROL_Type intCtlMod, + GLB_GPIO_INT_TRIG_Type intTrgMod); +GLB_GPIO_INT_CONTROL_Type GLB_Get_GPIO_IntCtlMod(GLB_GPIO_Type gpioPin); +BL_Err_Type GLB_GPIO_Int2Mask(GLB_GPIO_Type gpioPin,BL_Mask_Type intMask); +BL_Err_Type GLB_GPIO_Int2Clear(GLB_GPIO_Type gpioPin,BL_Sts_Type intClear); +BL_Sts_Type GLB_Get_GPIO_Int2Status(GLB_GPIO_Type gpioPin); +BL_Err_Type GLB_Set_GPIO_Int2Mod(GLB_GPIO_Type gpioPin,GLB_GPIO_INT_CONTROL_Type intCtlMod, + GLB_GPIO_INT_TRIG_Type intTrgMod); +GLB_GPIO_INT_CONTROL_Type GLB_Get_GPIO_Int2CtlMod(GLB_GPIO_Type gpioPin); +BL_Err_Type GLB_GPIO_INT0_IRQHandler_Install(void); +BL_Err_Type GLB_GPIO_INT0_Callback_Install(GLB_GPIO_Type gpioPin,intCallback_Type* cbFun); +BL_Err_Type GLB_GPIO_INT0_Callback_Install2(GLB_GPIO_Type gpioPin,intCallback_Type* cbFun); +/*----------*/; + +/*@} end of group GLB_Public_Functions */ + +/*@} end of group GLB */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_GLB_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_gpio.h b/drivers/bl702_driver/std_drv/inc/bl702_gpio.h new file mode 100644 index 00000000..aca6e011 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_gpio.h @@ -0,0 +1,945 @@ +/** + + ****************************************************************************** + + * @file bl702_gpio.h + + * @version V1.2 + + * @date 2020-09-04 + + * @brief This file is the description of.IP register + + ****************************************************************************** + + * @attention + + * + + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ + * + + * Redistribution and use in source and binary forms, with or without modification, + + * are permitted provided that the following conditions are met: + + * 1. Redistributions of source code must retain the above copyright notice, + + * this list of conditions and the following disclaimer. + + * 2. Redistributions in binary form must reproduce the above copyright notice, + + * this list of conditions and the following disclaimer in the documentation + + * and/or other materials provided with the distribution. + + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + * + + ****************************************************************************** + + */ + +#ifndef __BL702_GPIO_H__ +#define __BL702_GPIO_H__ + + +typedef enum +{ + GLB_GPIO_PIN_0 = 0, + GLB_GPIO_PIN_1, + GLB_GPIO_PIN_2, + GLB_GPIO_PIN_3, + GLB_GPIO_PIN_4, + GLB_GPIO_PIN_5, + GLB_GPIO_PIN_6, + GLB_GPIO_PIN_7, + GLB_GPIO_PIN_8, + GLB_GPIO_PIN_9, + GLB_GPIO_PIN_10, + GLB_GPIO_PIN_11, + GLB_GPIO_PIN_12, + GLB_GPIO_PIN_13, + GLB_GPIO_PIN_14, + GLB_GPIO_PIN_15, + GLB_GPIO_PIN_16, + GLB_GPIO_PIN_17, + GLB_GPIO_PIN_18, + GLB_GPIO_PIN_19, + GLB_GPIO_PIN_20, + GLB_GPIO_PIN_21, + GLB_GPIO_PIN_22, + GLB_GPIO_PIN_23, + GLB_GPIO_PIN_24, + GLB_GPIO_PIN_25, + GLB_GPIO_PIN_26, + GLB_GPIO_PIN_27, + GLB_GPIO_PIN_28, + GLB_GPIO_PIN_29, + GLB_GPIO_PIN_30, + GLB_GPIO_PIN_31, + GLB_GPIO_PIN_32, + GLB_GPIO_PIN_33, + GLB_GPIO_PIN_34, + GLB_GPIO_PIN_35, + GLB_GPIO_PIN_36, + GLB_GPIO_PIN_37, + GLB_GPIO_PIN_MAX, +}GLB_GPIO_Type; + +#define GPIO_MODE_INPUT ((uint32_t)0x00000000U) /*!< Input Floating Mode */ +#define GPIO_MODE_OUTPUT ((uint32_t)0x00000001U) /*!< Output Push Pull Mode */ +#define GPIO_MODE_AF ((uint32_t)0x00000002U) /*!< Alternate function */ +#define GPIO_MODE_ANALOG ((uint32_t)0x00000003U) /*!< Analog function */ +#define GPIO_PULL_UP ((uint32_t)0x00000000U) /*!< GPIO pull up */ +#define GPIO_PULL_DOWN ((uint32_t)0x00000001U) /*!< GPIO pull down */ +#define GPIO_PULL_NONE ((uint32_t)0x00000002U) /*!< GPIO no pull up or down */ + +typedef enum +{ + GPIO_FUN_CLK_OUT = 0 , + GPIO_FUN_BT_COEXIST = 1 , + GPIO_FUN_FLASH_PSRAM = 2 , + GPIO_FUN_I2S = 3 , + GPIO_FUN_SPI = 4 , + GPIO_FUN_I2C = 6 , + GPIO_FUN_UART = 7 , + GPIO_FUN_PWM = 8 , + GPIO_FUN_CAM = 9 , + GPIO_FUN_ANALOG = 10, + GPIO_FUN_USB = 10, + GPIO_FUN_GPIO = 11, + GPIO_FUN_RF_TEST = 12, + GPIO_FUN_SCAN = 13, + GPIO_FUN_E21_JTAG = 14, + GPIO_FUN_DEBUG = 15, + GPIO_FUN_EXTERNAL_PA = 16, + GPIO_FUN_USB_TRANCEIVER = 17, + GPIO_FUN_USB_CONTROLLER = 18, + GPIO_FUN_ETHER_MAC = 19, + GPIO_FUN_QDEC = 20, + GPIO_FUN_KEY_SCAN_IN = 21, + GPIO_FUN_KEY_SCAN_DRIVE = 22, + GPIO_FUN_CAM_MISC = 23, + GPIO_FUN_UART0_RTS = 0x70 , + GPIO_FUN_UART0_CTS = 0x71 , + GPIO_FUN_UART0_TX = 0x72 , + GPIO_FUN_UART0_RX = 0x73 , + GPIO_FUN_UART1_RTS = 0x74 , + GPIO_FUN_UART1_CTS = 0x75 , + GPIO_FUN_UART1_TX = 0x76 , + GPIO_FUN_UART1_RX = 0x77 , + GPIO_FUN_GPIO_OUTPUT = 0x80, + GPIO_FUN_GPIO_INPUT = 0x81, + GPIO_FUN_UNUSED = 255 +}GLB_GPIO_FUNC_Type; + + +typedef struct +{ + uint8_t gpioPin; + uint8_t gpioFun; + uint8_t gpioMode; + uint8_t pullType; + uint8_t drive; + uint8_t smtCtrl; +}GLB_GPIO_Cfg_Type; + +/* GPIO0 function definition */ +#define GPIO0_FUN_CLK_OUT_0 0 +#define GPIO0_FUN_BT_ABORT 1 +#define GPIO0_FUN_UNUSED2 2 +#define GPIO0_FUN_I2S0_BCLK 3 +#define GPIO0_FUN_SPI_0_MISO_SPI_0_MOSI 4 +#define GPIO0_FUN_I2C0_SCL 6 +#define GPIO0_FUN_UART_SIG0_UART_SIG4 7 +#define GPIO0_FUN_PWM_CH0 8 +#define GPIO0_FUN_PIX_CLK 9 +#define GPIO0_FUN_UNUSED10 10 +#define GPIO0_FUN_REG_GPIO_0 11 +#define GPIO0_FUN_UNUSED12 12 +#define GPIO0_FUN_SCAN_IN_0 13 +#define GPIO0_FUN_E21_TMS_E21_TCK 14 +#define GPIO0_FUN_S_CCI_CLK 15 +#define GPIO0_FUN_FEM_GPIO_0 16 +#define GPIO0_FUN_USB_TX_DN_USB_RX_DN 17 +#define GPIO0_FUN_USB_SUS 18 +#define GPIO0_FUN_MII_REF_CLK 19 +#define GPIO0_FUN_QDEC0_A 20 +#define GPIO0_FUN_ROW_I_0 21 +#define GPIO0_FUN_COL_O_0 22 +#define GPIO0_FUN_CAM_PWRDN 23 +/* GPIO1 function definition */ +#define GPIO1_FUN_CLK_OUT_1 0 +#define GPIO1_FUN_BT_ACTIVE 1 +#define GPIO1_FUN_UNUSED2 2 +#define GPIO1_FUN_I2S0_FS 3 +#define GPIO1_FUN_SPI_0_MOSI_SPI_0_MISO 4 +#define GPIO1_FUN_I2C0_SDA 6 +#define GPIO1_FUN_UART_SIG1_UART_SIG5 7 +#define GPIO1_FUN_PWM_CH1 8 +#define GPIO1_FUN_FRAME_VLD 9 +#define GPIO1_FUN_UNUSED10 10 +#define GPIO1_FUN_REG_GPIO_1 11 +#define GPIO1_FUN_UNUSED12 12 +#define GPIO1_FUN_SCAN_IN_1 13 +#define GPIO1_FUN_E21_TDI_E21_TDO 14 +#define GPIO1_FUN_S_CCI_CS 15 +#define GPIO1_FUN_FEM_GPIO_1 16 +#define GPIO1_FUN_USB_TX_OE 17 +#define GPIO1_FUN_USB_ENUM 18 +#define GPIO1_FUN_MII_TXD_0 19 +#define GPIO1_FUN_QDEC0_B 20 +#define GPIO1_FUN_ROW_I_1 21 +#define GPIO1_FUN_COL_O_1 22 +#define GPIO1_FUN_CAM_REF_CLK 23 +/* GPIO2 function definition */ +#define GPIO2_FUN_CLK_OUT_0 0 +#define GPIO2_FUN_BT_PRI 1 +#define GPIO2_FUN_UNUSED2 2 +#define GPIO2_FUN_I2S0_DIO_I2S0_DO 3 +#define GPIO2_FUN_SPI_0_SS 4 +#define GPIO2_FUN_I2C0_SCL 6 +#define GPIO2_FUN_UART_SIG2_UART_SIG6 7 +#define GPIO2_FUN_PWM_CH2 8 +#define GPIO2_FUN_LINE_VLD 9 +#define GPIO2_FUN_UNUSED10 10 +#define GPIO2_FUN_REG_GPIO_2 11 +#define GPIO2_FUN_UNUSED12 12 +#define GPIO2_FUN_SCAN_IN_2 13 +#define GPIO2_FUN_E21_TCK_E21_TMS 14 +#define GPIO2_FUN_S_CCI_DATA_0 15 +#define GPIO2_FUN_FEM_GPIO_2 16 +#define GPIO2_FUN_USB_TX_DP_USB_RX_DP 17 +#define GPIO2_FUN_USB_OEB 18 +#define GPIO2_FUN_MII_TXD_1 19 +#define GPIO2_FUN_QDEC0_LED 20 +#define GPIO2_FUN_ROW_I_2 21 +#define GPIO2_FUN_COL_O_2 22 +#define GPIO2_FUN_CAM_RESET 23 +/* GPIO3 function definition */ +#define GPIO3_FUN_CLK_OUT_1 0 +#define GPIO3_FUN_BT_ABORT 1 +#define GPIO3_FUN_UNUSED2 2 +#define GPIO3_FUN_I2S0_RCLK_O_I2S0_DI 3 +#define GPIO3_FUN_SPI_0_SCLK 4 +#define GPIO3_FUN_I2C0_SDA 6 +#define GPIO3_FUN_UART_SIG3_UART_SIG7 7 +#define GPIO3_FUN_PWM_CH3 8 +#define GPIO3_FUN_PIX_DAT0 9 +#define GPIO3_FUN_UNUSED10 10 +#define GPIO3_FUN_REG_GPIO_3 11 +#define GPIO3_FUN_RF_TEST_0 12 +#define GPIO3_FUN_UNUSED13 13 +#define GPIO3_FUN_E21_TDO_E21_TDI 14 +#define GPIO3_FUN_DEBUG_0 15 +#define GPIO3_FUN_FEM_GPIO_3 16 +#define GPIO3_FUN_USB_SUS_EXT 17 +#define GPIO3_FUN_VOP 18 +#define GPIO3_FUN_UNUSED19 19 +#define GPIO3_FUN_QDEC1_A 20 +#define GPIO3_FUN_ROW_I_3 21 +#define GPIO3_FUN_COL_O_3 22 +#define GPIO3_FUN_CAM_PWRDN 23 +/* GPIO4 function definition */ +#define GPIO4_FUN_CLK_OUT_0 0 +#define GPIO4_FUN_BT_ACTIVE 1 +#define GPIO4_FUN_UNUSED2 2 +#define GPIO4_FUN_I2S0_BCLK 3 +#define GPIO4_FUN_SPI_0_MISO_SPI_0_MOSI 4 +#define GPIO4_FUN_I2C0_SCL 6 +#define GPIO4_FUN_UART_SIG4_UART_SIG0 7 +#define GPIO4_FUN_PWM_CH4 8 +#define GPIO4_FUN_PIX_DAT1 9 +#define GPIO4_FUN_UNUSED10 10 +#define GPIO4_FUN_REG_GPIO_4 11 +#define GPIO4_FUN_RF_TEST_1 12 +#define GPIO4_FUN_UNUSED13 13 +#define GPIO4_FUN_E21_TMS_E21_TCK 14 +#define GPIO4_FUN_DEBUG_1 15 +#define GPIO4_FUN_FEM_GPIO_4 16 +#define GPIO4_FUN_USB_ENUM_EXT 17 +#define GPIO4_FUN_VOM 18 +#define GPIO4_FUN_UNUSED19 19 +#define GPIO4_FUN_QDEC1_B 20 +#define GPIO4_FUN_ROW_I_4 21 +#define GPIO4_FUN_COL_O_4 22 +#define GPIO4_FUN_CAM_REF_CLK 23 +/* GPIO5 function definition */ +#define GPIO5_FUN_CLK_OUT_1 0 +#define GPIO5_FUN_BT_PRI 1 +#define GPIO5_FUN_UNUSED2 2 +#define GPIO5_FUN_I2S0_FS 3 +#define GPIO5_FUN_SPI_0_MOSI_SPI_0_MISO 4 +#define GPIO5_FUN_I2C0_SDA 6 +#define GPIO5_FUN_UART_SIG5_UART_SIG1 7 +#define GPIO5_FUN_PWM_CH0 8 +#define GPIO5_FUN_PIX_DAT2 9 +#define GPIO5_FUN_UNUSED10 10 +#define GPIO5_FUN_REG_GPIO_5 11 +#define GPIO5_FUN_RF_TEST_2 12 +#define GPIO5_FUN_UNUSED13 13 +#define GPIO5_FUN_E21_TDI_E21_TDO 14 +#define GPIO5_FUN_DEBUG_2 15 +#define GPIO5_FUN_FEM_GPIO_0 16 +#define GPIO5_FUN_USB_TX_DN_USB_RX_DN 17 +#define GPIO5_FUN_BD 18 +#define GPIO5_FUN_UNUSED19 19 +#define GPIO5_FUN_QDEC1_LED 20 +#define GPIO5_FUN_ROW_I_5 21 +#define GPIO5_FUN_COL_O_5 22 +#define GPIO5_FUN_CAM_RESET 23 +/* GPIO6 function definition */ +#define GPIO6_FUN_CLK_OUT_0 0 +#define GPIO6_FUN_BT_ABORT 1 +#define GPIO6_FUN_UNUSED2 2 +#define GPIO6_FUN_I2S0_DIO_I2S0_DO 3 +#define GPIO6_FUN_SPI_0_SS 4 +#define GPIO6_FUN_I2C0_SCL 6 +#define GPIO6_FUN_UART_SIG6_UART_SIG2 7 +#define GPIO6_FUN_PWM_CH1 8 +#define GPIO6_FUN_PIX_DAT3 9 +#define GPIO6_FUN_UNUSED10 10 +#define GPIO6_FUN_REG_GPIO_6 11 +#define GPIO6_FUN_RF_TEST_3 12 +#define GPIO6_FUN_UNUSED13 13 +#define GPIO6_FUN_E21_TCK_E21_TMS 14 +#define GPIO6_FUN_DEBUG_3 15 +#define GPIO6_FUN_FEM_GPIO_1 16 +#define GPIO6_FUN_USB_TX_OE 17 +#define GPIO6_FUN_VIP 18 +#define GPIO6_FUN_UNUSED19 19 +#define GPIO6_FUN_QDEC2_A 20 +#define GPIO6_FUN_ROW_I_6 21 +#define GPIO6_FUN_COL_O_6 22 +#define GPIO6_FUN_CAM_PWRDN 23 +/* GPIO7 function definition */ +#define GPIO7_FUN_CLK_OUT_1 0 +#define GPIO7_FUN_BT_ACTIVE 1 +#define GPIO7_FUN_UNUSED2 2 +#define GPIO7_FUN_I2S0_RCLK_O_I2S0_DI 3 +#define GPIO7_FUN_SPI_0_SCLK 4 +#define GPIO7_FUN_I2C0_SDA 6 +#define GPIO7_FUN_UART_SIG7_UART_SIG3 7 +#define GPIO7_FUN_PWM_CH2 8 +#define GPIO7_FUN_UNUSED9 9 +#define GPIO7_FUN_USB_DP_GPIP_CH_6_GPDAC_VREF_EXT 10 +#define GPIO7_FUN_REG_GPIO_7 11 +#define GPIO7_FUN_UNUSED12 12 +#define GPIO7_FUN_SCAN_RSTB 13 +#define GPIO7_FUN_E21_TDO_E21_TDI 14 +#define GPIO7_FUN_S_CCI_DATA_1 15 +#define GPIO7_FUN_FEM_GPIO_2 16 +#define GPIO7_FUN_USB_TX_DP_USB_RX_DP 17 +#define GPIO7_FUN_VIM 18 +#define GPIO7_FUN_MII_RXD_0 19 +#define GPIO7_FUN_QDEC2_B 20 +#define GPIO7_FUN_ROW_I_7 21 +#define GPIO7_FUN_COL_O_7 22 +#define GPIO7_FUN_CAM_REF_CLK 23 +/* GPIO8 function definition */ +#define GPIO8_FUN_CLK_OUT_0 0 +#define GPIO8_FUN_BT_PRI 1 +#define GPIO8_FUN_UNUSED2 2 +#define GPIO8_FUN_I2S0_BCLK 3 +#define GPIO8_FUN_SPI_0_MISO_SPI_0_MOSI 4 +#define GPIO8_FUN_I2C0_SCL 6 +#define GPIO8_FUN_UART_SIG0_UART_SIG4 7 +#define GPIO8_FUN_PWM_CH3 8 +#define GPIO8_FUN_UNUSED9 9 +#define GPIO8_FUN_USB_DM_GPIP_CH_0 10 +#define GPIO8_FUN_REG_GPIO_8 11 +#define GPIO8_FUN_RF_TEST_4 12 +#define GPIO8_FUN_SCAN_CLK 13 +#define GPIO8_FUN_E21_TMS_E21_TCK 14 +#define GPIO8_FUN_DEBUG_4 15 +#define GPIO8_FUN_FEM_GPIO_3 16 +#define GPIO8_FUN_USB_SUS_EXT 17 +#define GPIO8_FUN_RCV 18 +#define GPIO8_FUN_MII_RXD_1 19 +#define GPIO8_FUN_QDEC2_LED 20 +#define GPIO8_FUN_ROW_I_0 21 +#define GPIO8_FUN_COL_O_8 22 +#define GPIO8_FUN_CAM_RESET 23 +/* GPIO9 function definition */ +#define GPIO9_FUN_CLK_OUT_1 0 +#define GPIO9_FUN_BT_ABORT 1 +#define GPIO9_FUN_UNUSED2 2 +#define GPIO9_FUN_I2S0_FS 3 +#define GPIO9_FUN_SPI_0_MOSI_SPI_0_MISO 4 +#define GPIO9_FUN_I2C0_SDA 6 +#define GPIO9_FUN_UART_SIG1_UART_SIG5 7 +#define GPIO9_FUN_PWM_CH4 8 +#define GPIO9_FUN_UNUSED9 9 +#define GPIO9_FUN_PMIP_DC_TP_CLKPLL_DC_TP_GPIP_CH_7 10 +#define GPIO9_FUN_REG_GPIO_9 11 +#define GPIO9_FUN_RF_TEST_5 12 +#define GPIO9_FUN_SCAN_EN 13 +#define GPIO9_FUN_E21_TDI_E21_TDO 14 +#define GPIO9_FUN_DEBUG_5 15 +#define GPIO9_FUN_FEM_GPIO_4 16 +#define GPIO9_FUN_USB_ENUM_EXT 17 +#define GPIO9_FUN_USB_SUS 18 +#define GPIO9_FUN_UNUSED19 19 +#define GPIO9_FUN_QDEC0_A 20 +#define GPIO9_FUN_ROW_I_1 21 +#define GPIO9_FUN_COL_O_9 22 +#define GPIO9_FUN_CAM_PWRDN 23 +/* GPIO10 function definition */ +#define GPIO10_FUN_CLK_OUT_0 0 +#define GPIO10_FUN_BT_ACTIVE 1 +#define GPIO10_FUN_UNUSED2 2 +#define GPIO10_FUN_I2S0_DIO_I2S0_DO 3 +#define GPIO10_FUN_SPI_0_SS 4 +#define GPIO10_FUN_I2C0_SCL 6 +#define GPIO10_FUN_UART_SIG2_UART_SIG6 7 +#define GPIO10_FUN_PWM_CH0 8 +#define GPIO10_FUN_UNUSED9 9 +#define GPIO10_FUN_MICBIAS 10 +#define GPIO10_FUN_REG_GPIO_10 11 +#define GPIO10_FUN_RF_TEST_6 12 +#define GPIO10_FUN_UNUSED13 13 +#define GPIO10_FUN_E21_TCK_E21_TMS 14 +#define GPIO10_FUN_DEBUG_6 15 +#define GPIO10_FUN_FEM_GPIO_0 16 +#define GPIO10_FUN_USB_TX_DN_USB_RX_DN 17 +#define GPIO10_FUN_USB_ENUM 18 +#define GPIO10_FUN_UNUSED19 19 +#define GPIO10_FUN_QDEC0_B 20 +#define GPIO10_FUN_ROW_I_2 21 +#define GPIO10_FUN_COL_O_10 22 +#define GPIO10_FUN_CAM_REF_CLK 23 +/* GPIO11 function definition */ +#define GPIO11_FUN_CLK_OUT_1 0 +#define GPIO11_FUN_BT_PRI 1 +#define GPIO11_FUN_UNUSED2 2 +#define GPIO11_FUN_I2S0_RCLK_O_I2S0_DI 3 +#define GPIO11_FUN_SPI_0_SCLK 4 +#define GPIO11_FUN_I2C0_SDA 6 +#define GPIO11_FUN_UART_SIG3_UART_SIG7 7 +#define GPIO11_FUN_PWM_CH1 8 +#define GPIO11_FUN_UNUSED9 9 +#define GPIO11_FUN_GPIP_CH_3 10 +#define GPIO11_FUN_REG_GPIO_11 11 +#define GPIO11_FUN_RF_TEST_7 12 +#define GPIO11_FUN_UNUSED13 13 +#define GPIO11_FUN_E21_TDO_E21_TDI 14 +#define GPIO11_FUN_DEBUG_7 15 +#define GPIO11_FUN_FEM_GPIO_1 16 +#define GPIO11_FUN_USB_TX_OE 17 +#define GPIO11_FUN_USB_OEB 18 +#define GPIO11_FUN_UNUSED19 19 +#define GPIO11_FUN_QDEC0_LED 20 +#define GPIO11_FUN_ROW_I_3 21 +#define GPIO11_FUN_COL_O_11 22 +#define GPIO11_FUN_CAM_RESET 23 +/* GPIO12 function definition */ +#define GPIO12_FUN_CLK_OUT_0 0 +#define GPIO12_FUN_BT_ABORT 1 +#define GPIO12_FUN_UNUSED2 2 +#define GPIO12_FUN_I2S0_BCLK 3 +#define GPIO12_FUN_SPI_0_MISO_SPI_0_MOSI 4 +#define GPIO12_FUN_I2C0_SCL 6 +#define GPIO12_FUN_UART_SIG4_UART_SIG0 7 +#define GPIO12_FUN_PWM_CH2 8 +#define GPIO12_FUN_PIX_DAT4 9 +#define GPIO12_FUN_GPIP_CH_4 10 +#define GPIO12_FUN_REG_GPIO_12 11 +#define GPIO12_FUN_RF_TEST_8 12 +#define GPIO12_FUN_UNUSED13 13 +#define GPIO12_FUN_E21_TMS_E21_TCK 14 +#define GPIO12_FUN_DEBUG_8 15 +#define GPIO12_FUN_FEM_GPIO_2 16 +#define GPIO12_FUN_USB_TX_DP_USB_RX_DP 17 +#define GPIO12_FUN_VOP 18 +#define GPIO12_FUN_UNUSED19 19 +#define GPIO12_FUN_QDEC1_A 20 +#define GPIO12_FUN_ROW_I_4 21 +#define GPIO12_FUN_COL_O_12 22 +#define GPIO12_FUN_CAM_PWRDN 23 +/* GPIO13 function definition */ +#define GPIO13_FUN_CLK_OUT_1 0 +#define GPIO13_FUN_BT_ACTIVE 1 +#define GPIO13_FUN_UNUSED2 2 +#define GPIO13_FUN_I2S0_FS 3 +#define GPIO13_FUN_SPI_0_MOSI_SPI_0_MISO 4 +#define GPIO13_FUN_I2C0_SDA 6 +#define GPIO13_FUN_UART_SIG5_UART_SIG1 7 +#define GPIO13_FUN_PWM_CH3 8 +#define GPIO13_FUN_UNUSED9 9 +#define GPIO13_FUN_UNUSED10 10 +#define GPIO13_FUN_REG_GPIO_13 11 +#define GPIO13_FUN_UNUSED12 12 +#define GPIO13_FUN_UNUSED13 13 +#define GPIO13_FUN_E21_TDI_E21_TDO 14 +#define GPIO13_FUN_DEBUG_9 15 +#define GPIO13_FUN_FEM_GPIO_3 16 +#define GPIO13_FUN_USB_SUS_EXT 17 +#define GPIO13_FUN_VOM 18 +#define GPIO13_FUN_UNUSED19 19 +#define GPIO13_FUN_QDEC1_B 20 +#define GPIO13_FUN_ROW_I_5 21 +#define GPIO13_FUN_COL_O_13 22 +#define GPIO13_FUN_CAM_REF_CLK 23 +/* GPIO14 function definition */ +#define GPIO14_FUN_CLK_OUT_0 0 +#define GPIO14_FUN_BT_PRI 1 +#define GPIO14_FUN_UNUSED2 2 +#define GPIO14_FUN_I2S0_DIO_I2S0_DO 3 +#define GPIO14_FUN_SPI_0_SS 4 +#define GPIO14_FUN_I2C0_SCL 6 +#define GPIO14_FUN_UART_SIG6_UART_SIG2 7 +#define GPIO14_FUN_PWM_CH4 8 +#define GPIO14_FUN_UNUSED9 9 +#define GPIO14_FUN_GPIP_CH_5_ATEST_OUT_0 10 +#define GPIO14_FUN_REG_GPIO_14 11 +#define GPIO14_FUN_RF_TEST_9 12 +#define GPIO14_FUN_SCAN_OUT_0 13 +#define GPIO14_FUN_E21_TCK_E21_TMS 14 +#define GPIO14_FUN_DEBUG_10 15 +#define GPIO14_FUN_FEM_GPIO_4 16 +#define GPIO14_FUN_USB_ENUM_EXT 17 +#define GPIO14_FUN_BD 18 +#define GPIO14_FUN_UNUSED19 19 +#define GPIO14_FUN_QDEC1_LED 20 +#define GPIO14_FUN_ROW_I_6 21 +#define GPIO14_FUN_COL_O_14 22 +#define GPIO14_FUN_CAM_RESET 23 +/* GPIO15 function definition */ +#define GPIO15_FUN_CLK_OUT_1 0 +#define GPIO15_FUN_BT_ABORT 1 +#define GPIO15_FUN_UNUSED2 2 +#define GPIO15_FUN_I2S0_RCLK_O_I2S0_DI 3 +#define GPIO15_FUN_SPI_0_SCLK 4 +#define GPIO15_FUN_I2C0_SDA 6 +#define GPIO15_FUN_UART_SIG7_UART_SIG3 7 +#define GPIO15_FUN_PWM_CH0 8 +#define GPIO15_FUN_UNUSED9 9 +#define GPIO15_FUN_GPIP_CH_1_ATEST_OUT_1 10 +#define GPIO15_FUN_REG_GPIO_15 11 +#define GPIO15_FUN_RF_TEST_10 12 +#define GPIO15_FUN_SCAN_OUT_1 13 +#define GPIO15_FUN_E21_TDO_E21_TDI 14 +#define GPIO15_FUN_DEBUG_11 15 +#define GPIO15_FUN_FEM_GPIO_0 16 +#define GPIO15_FUN_USB_TX_DN_USB_RX_DN 17 +#define GPIO15_FUN_VIP 18 +#define GPIO15_FUN_UNUSED19 19 +#define GPIO15_FUN_QDEC2_A 20 +#define GPIO15_FUN_ROW_I_7 21 +#define GPIO15_FUN_COL_O_15 22 +#define GPIO15_FUN_CAM_PWRDN 23 +/* GPIO16 function definition */ +#define GPIO16_FUN_CLK_OUT_0 0 +#define GPIO16_FUN_BT_ACTIVE 1 +#define GPIO16_FUN_UNUSED2 2 +#define GPIO16_FUN_I2S0_BCLK 3 +#define GPIO16_FUN_SPI_0_MISO_SPI_0_MOSI 4 +#define GPIO16_FUN_I2C0_SCL 6 +#define GPIO16_FUN_UART_SIG0_UART_SIG4 7 +#define GPIO16_FUN_PWM_CH1 8 +#define GPIO16_FUN_UNUSED9 9 +#define GPIO16_FUN_UNUSED10 10 +#define GPIO16_FUN_REG_GPIO_16 11 +#define GPIO16_FUN_RF_TEST_11 12 +#define GPIO16_FUN_UNUSED13 13 +#define GPIO16_FUN_E21_TMS_E21_TCK 14 +#define GPIO16_FUN_DEBUG_12 15 +#define GPIO16_FUN_FEM_GPIO_1 16 +#define GPIO16_FUN_USB_TX_OE 17 +#define GPIO16_FUN_VIM 18 +#define GPIO16_FUN_UNUSED19 19 +#define GPIO16_FUN_QDEC2_B 20 +#define GPIO16_FUN_ROW_I_0 21 +#define GPIO16_FUN_COL_O_16 22 +#define GPIO16_FUN_CAM_REF_CLK 23 +/* GPIO17 function definition */ +#define GPIO17_FUN_CLK_OUT_1 0 +#define GPIO17_FUN_BT_PRI 1 +#define GPIO17_FUN_SF_IO_0_SF2_CS2 2 +#define GPIO17_FUN_I2S0_FS 3 +#define GPIO17_FUN_SPI_0_MOSI_SPI_0_MISO 4 +#define GPIO17_FUN_I2C0_SDA 6 +#define GPIO17_FUN_UART_SIG1_UART_SIG5 7 +#define GPIO17_FUN_PWM_CH2 8 +#define GPIO17_FUN_PIX_DAT4 9 +#define GPIO17_FUN_GPIP_CH_2_PSW_IRRCV 10 +#define GPIO17_FUN_REG_GPIO_17 11 +#define GPIO17_FUN_RF_TEST_12 12 +#define GPIO17_FUN_SCAN_OUT_2 13 +#define GPIO17_FUN_E21_TDI_E21_TDO 14 +#define GPIO17_FUN_DEBUG_13 15 +#define GPIO17_FUN_FEM_GPIO_2 16 +#define GPIO17_FUN_USB_TX_DP_USB_RX_DP 17 +#define GPIO17_FUN_RCV 18 +#define GPIO17_FUN_UNUSED19 19 +#define GPIO17_FUN_QDEC2_LED 20 +#define GPIO17_FUN_ROW_I_1 21 +#define GPIO17_FUN_COL_O_17 22 +#define GPIO17_FUN_CAM_RESET 23 +/* GPIO18 function definition */ +#define GPIO18_FUN_CLK_OUT_0 0 +#define GPIO18_FUN_BT_ABORT 1 +#define GPIO18_FUN_SF_IO_1 2 +#define GPIO18_FUN_I2S0_DIO_I2S0_DO 3 +#define GPIO18_FUN_SPI_0_SS 4 +#define GPIO18_FUN_I2C0_SCL 6 +#define GPIO18_FUN_UART_SIG2_UART_SIG6 7 +#define GPIO18_FUN_PWM_CH3 8 +#define GPIO18_FUN_PIX_DAT5 9 +#define GPIO18_FUN_GPIP_CH_8 10 +#define GPIO18_FUN_REG_GPIO_18 11 +#define GPIO18_FUN_RF_TEST_13 12 +#define GPIO18_FUN_UNUSED13 13 +#define GPIO18_FUN_E21_TCK_E21_TMS 14 +#define GPIO18_FUN_M_CCI_CLK_DEBUG_14 15 +#define GPIO18_FUN_FEM_GPIO_3 16 +#define GPIO18_FUN_USB_SUS_EXT 17 +#define GPIO18_FUN_USB_SUS 18 +#define GPIO18_FUN_RMII_MDC 19 +#define GPIO18_FUN_QDEC0_A 20 +#define GPIO18_FUN_ROW_I_2 21 +#define GPIO18_FUN_COL_O_18 22 +#define GPIO18_FUN_CAM_PWRDN 23 +/* GPIO19 function definition */ +#define GPIO19_FUN_CLK_OUT_1 0 +#define GPIO19_FUN_BT_ACTIVE 1 +#define GPIO19_FUN_SF_CS 2 +#define GPIO19_FUN_I2S0_RCLK_O_I2S0_DI 3 +#define GPIO19_FUN_SPI_0_SCLK 4 +#define GPIO19_FUN_I2C0_SDA 6 +#define GPIO19_FUN_UART_SIG3_UART_SIG7 7 +#define GPIO19_FUN_PWM_CH4 8 +#define GPIO19_FUN_PIX_DAT6 9 +#define GPIO19_FUN_GPIP_CH_9 10 +#define GPIO19_FUN_REG_GPIO_19 11 +#define GPIO19_FUN_RF_TEST_14 12 +#define GPIO19_FUN_UNUSED13 13 +#define GPIO19_FUN_E21_TDO_E21_TDI 14 +#define GPIO19_FUN_M_CCI_CS_DEBUG_15 15 +#define GPIO19_FUN_FEM_GPIO_4 16 +#define GPIO19_FUN_USB_ENUM_EXT 17 +#define GPIO19_FUN_USB_ENUM 18 +#define GPIO19_FUN_RMII_MDIO 19 +#define GPIO19_FUN_QDEC0_B 20 +#define GPIO19_FUN_ROW_I_3 21 +#define GPIO19_FUN_COL_O_19 22 +#define GPIO19_FUN_CAM_REF_CLK 23 +/* GPIO20 function definition */ +#define GPIO20_FUN_CLK_OUT_0 0 +#define GPIO20_FUN_BT_PRI 1 +#define GPIO20_FUN_SF_IO_3 2 +#define GPIO20_FUN_I2S0_BCLK 3 +#define GPIO20_FUN_SPI_0_MISO_SPI_0_MOSI 4 +#define GPIO20_FUN_I2C0_SCL 6 +#define GPIO20_FUN_UART_SIG4_UART_SIG0 7 +#define GPIO20_FUN_PWM_CH0 8 +#define GPIO20_FUN_PIX_DAT7 9 +#define GPIO20_FUN_GPIP_CH_10 10 +#define GPIO20_FUN_REG_GPIO_20 11 +#define GPIO20_FUN_RF_TEST_15 12 +#define GPIO20_FUN_UNUSED13 13 +#define GPIO20_FUN_E21_TMS_E21_TCK 14 +#define GPIO20_FUN_M_CCI_DI_DEBUG_16 15 +#define GPIO20_FUN_FEM_GPIO_0 16 +#define GPIO20_FUN_USB_TX_DN_USB_RX_DN 17 +#define GPIO20_FUN_USB_OEB 18 +#define GPIO20_FUN_RMII_RXERR 19 +#define GPIO20_FUN_QDEC0_LED 20 +#define GPIO20_FUN_ROW_I_4 21 +#define GPIO20_FUN_COL_O_0 22 +#define GPIO20_FUN_CAM_RESET 23 +/* GPIO21 function definition */ +#define GPIO21_FUN_CLK_OUT_1 0 +#define GPIO21_FUN_BT_ABORT 1 +#define GPIO21_FUN_SF_CLK 2 +#define GPIO21_FUN_I2S0_FS 3 +#define GPIO21_FUN_SPI_0_MOSI_SPI_0_MISO 4 +#define GPIO21_FUN_I2C0_SDA 6 +#define GPIO21_FUN_UART_SIG5_UART_SIG1 7 +#define GPIO21_FUN_PWM_CH1 8 +#define GPIO21_FUN_UNUSED9 9 +#define GPIO21_FUN_GPIP_CH_11 10 +#define GPIO21_FUN_REG_GPIO_21 11 +#define GPIO21_FUN_RF_TEST_16 12 +#define GPIO21_FUN_UNUSED13 13 +#define GPIO21_FUN_E21_TDI_E21_TDO 14 +#define GPIO21_FUN_M_CCI_DO_DEBUG_17 15 +#define GPIO21_FUN_FEM_GPIO_1 16 +#define GPIO21_FUN_USB_TX_OE 17 +#define GPIO21_FUN_VOP 18 +#define GPIO21_FUN_RMII_TX_EN 19 +#define GPIO21_FUN_QDEC1_A 20 +#define GPIO21_FUN_ROW_I_5 21 +#define GPIO21_FUN_COL_O_1 22 +#define GPIO21_FUN_CAM_PWRDN 23 +/* GPIO22 function definition */ +#define GPIO22_FUN_CLK_OUT_0 0 +#define GPIO22_FUN_BT_ACTIVE 1 +#define GPIO22_FUN_SF_IO_2 2 +#define GPIO22_FUN_I2S0_DIO_I2S0_DO 3 +#define GPIO22_FUN_SPI_0_SS 4 +#define GPIO22_FUN_I2C0_SCL 6 +#define GPIO22_FUN_UART_SIG6_UART_SIG2 7 +#define GPIO22_FUN_PWM_CH2 8 +#define GPIO22_FUN_UNUSED9 9 +#define GPIO22_FUN_LEDDRV_0 10 +#define GPIO22_FUN_REG_GPIO_22 11 +#define GPIO22_FUN_RF_TEST_17 12 +#define GPIO22_FUN_UNUSED13 13 +#define GPIO22_FUN_E21_TCK_E21_TMS 14 +#define GPIO22_FUN_DEBUG_18 15 +#define GPIO22_FUN_FEM_GPIO_2 16 +#define GPIO22_FUN_USB_TX_DP_USB_RX_DP 17 +#define GPIO22_FUN_VOM 18 +#define GPIO22_FUN_RMII_RX_DV 19 +#define GPIO22_FUN_QDEC1_B 20 +#define GPIO22_FUN_ROW_I_6 21 +#define GPIO22_FUN_COL_O_2 22 +#define GPIO22_FUN_CAM_REF_CLK 23 +/* GPIO23 function definition */ +#define GPIO23_FUN_CLK_OUT_1 0 +#define GPIO23_FUN_BT_PRI 1 +#define GPIO23_FUN_SF2_IO_2_SF3_CS2 2 +#define GPIO23_FUN_I2S0_RCLK_O_I2S0_DI 3 +#define GPIO23_FUN_SPI_0_SCLK 4 +#define GPIO23_FUN_I2C0_SDA 6 +#define GPIO23_FUN_UART_SIG7_UART_SIG3 7 +#define GPIO23_FUN_PWM_CH3 8 +#define GPIO23_FUN_PIX_DAT4 9 +#define GPIO23_FUN_LEDDRV_1_FLASH_PULL_OUT_0 10 +#define GPIO23_FUN_REG_GPIO_23 11 +#define GPIO23_FUN_RF_TEST_18 12 +#define GPIO23_FUN_UNUSED13 13 +#define GPIO23_FUN_E21_TDO_E21_TDI 14 +#define GPIO23_FUN_DEBUG_19 15 +#define GPIO23_FUN_FEM_GPIO_3 16 +#define GPIO23_FUN_USB_SUS_EXT 17 +#define GPIO23_FUN_BD 18 +#define GPIO23_FUN_UNUSED19 19 +#define GPIO23_FUN_QDEC1_LED 20 +#define GPIO23_FUN_ROW_I_7 21 +#define GPIO23_FUN_COL_O_3 22 +#define GPIO23_FUN_CAM_RESET 23 +/* GPIO24 function definition */ +#define GPIO24_FUN_CLK_OUT_0 0 +#define GPIO24_FUN_BT_ABORT 1 +#define GPIO24_FUN_SF2_IO_1 2 +#define GPIO24_FUN_I2S0_BCLK 3 +#define GPIO24_FUN_SPI_0_MISO_SPI_0_MOSI 4 +#define GPIO24_FUN_I2C0_SCL 6 +#define GPIO24_FUN_UART_SIG0_UART_SIG4 7 +#define GPIO24_FUN_PWM_CH4 8 +#define GPIO24_FUN_PIX_DAT5 9 +#define GPIO24_FUN_FLASH_PULL_OUT_1 10 +#define GPIO24_FUN_REG_GPIO_24 11 +#define GPIO24_FUN_RF_TEST_19 12 +#define GPIO24_FUN_UNUSED13 13 +#define GPIO24_FUN_E21_TMS_E21_TCK 14 +#define GPIO24_FUN_DEBUG_20 15 +#define GPIO24_FUN_FEM_GPIO_4 16 +#define GPIO24_FUN_USB_ENUM_EXT 17 +#define GPIO24_FUN_VIP 18 +#define GPIO24_FUN_RMII_MDC 19 +#define GPIO24_FUN_QDEC2_A 20 +#define GPIO24_FUN_ROW_I_0 21 +#define GPIO24_FUN_COL_O_4 22 +#define GPIO24_FUN_CAM_PWRDN 23 +/* GPIO25 function definition */ +#define GPIO25_FUN_CLK_OUT_1 0 +#define GPIO25_FUN_BT_ACTIVE 1 +#define GPIO25_FUN_SF2_CS 2 +#define GPIO25_FUN_I2S0_FS 3 +#define GPIO25_FUN_SPI_0_MOSI_SPI_0_MISO 4 +#define GPIO25_FUN_I2C0_SDA 6 +#define GPIO25_FUN_UART_SIG1_UART_SIG5 7 +#define GPIO25_FUN_PWM_CH0 8 +#define GPIO25_FUN_PIX_DAT6 9 +#define GPIO25_FUN_FLASH_PULL_OUT_2 10 +#define GPIO25_FUN_REG_GPIO_25 11 +#define GPIO25_FUN_RF_TEST_20 12 +#define GPIO25_FUN_UNUSED13 13 +#define GPIO25_FUN_E21_TDI_E21_TDO 14 +#define GPIO25_FUN_DEBUG_21 15 +#define GPIO25_FUN_FEM_GPIO_0 16 +#define GPIO25_FUN_USB_TX_DN_USB_RX_DN 17 +#define GPIO25_FUN_VIM 18 +#define GPIO25_FUN_RMII_MDIO 19 +#define GPIO25_FUN_QDEC2_B 20 +#define GPIO25_FUN_ROW_I_1 21 +#define GPIO25_FUN_COL_O_5 22 +#define GPIO25_FUN_CAM_REF_CLK 23 +/* GPIO26 function definition */ +#define GPIO26_FUN_CLK_OUT_0 0 +#define GPIO26_FUN_BT_PRI 1 +#define GPIO26_FUN_SF2_IO_3 2 +#define GPIO26_FUN_I2S0_DIO_I2S0_DO 3 +#define GPIO26_FUN_SPI_0_SS 4 +#define GPIO26_FUN_I2C0_SCL 6 +#define GPIO26_FUN_UART_SIG2_UART_SIG6 7 +#define GPIO26_FUN_PWM_CH1 8 +#define GPIO26_FUN_PIX_DAT7 9 +#define GPIO26_FUN_FLASH_PULL_OUT_3 10 +#define GPIO26_FUN_REG_GPIO_26 11 +#define GPIO26_FUN_RF_TEST_21 12 +#define GPIO26_FUN_UNUSED13 13 +#define GPIO26_FUN_E21_TCK_E21_TMS 14 +#define GPIO26_FUN_DEBUG_22 15 +#define GPIO26_FUN_FEM_GPIO_1 16 +#define GPIO26_FUN_USB_TX_OE 17 +#define GPIO26_FUN_RCV 18 +#define GPIO26_FUN_RMII_RXERR 19 +#define GPIO26_FUN_QDEC2_LED 20 +#define GPIO26_FUN_ROW_I_2 21 +#define GPIO26_FUN_COL_O_6 22 +#define GPIO26_FUN_CAM_RESET 23 +/* GPIO27 function definition */ +#define GPIO27_FUN_CLK_OUT_1 0 +#define GPIO27_FUN_BT_ABORT 1 +#define GPIO27_FUN_SF2_CLK 2 +#define GPIO27_FUN_I2S0_RCLK_O_I2S0_DI 3 +#define GPIO27_FUN_SPI_0_SCLK 4 +#define GPIO27_FUN_I2C0_SDA 6 +#define GPIO27_FUN_UART_SIG3_UART_SIG7 7 +#define GPIO27_FUN_PWM_CH2 8 +#define GPIO27_FUN_UNUSED9 9 +#define GPIO27_FUN_FLASH_PULL_OUT_4 10 +#define GPIO27_FUN_REG_GPIO_27 11 +#define GPIO27_FUN_RF_TEST_22 12 +#define GPIO27_FUN_UNUSED13 13 +#define GPIO27_FUN_E21_TDO_E21_TDI 14 +#define GPIO27_FUN_DEBUG_23 15 +#define GPIO27_FUN_FEM_GPIO_2 16 +#define GPIO27_FUN_USB_TX_DP_USB_RX_DP 17 +#define GPIO27_FUN_USB_SUS 18 +#define GPIO27_FUN_RMII_TX_EN 19 +#define GPIO27_FUN_QDEC0_A 20 +#define GPIO27_FUN_ROW_I_3 21 +#define GPIO27_FUN_COL_O_7 22 +#define GPIO27_FUN_CAM_PWRDN 23 +/* GPIO28 function definition */ +#define GPIO28_FUN_CLK_OUT_0 0 +#define GPIO28_FUN_BT_ACTIVE 1 +#define GPIO28_FUN_SF2_IO_0 2 +#define GPIO28_FUN_I2S0_BCLK 3 +#define GPIO28_FUN_SPI_0_MISO_SPI_0_MOSI 4 +#define GPIO28_FUN_I2C0_SCL 6 +#define GPIO28_FUN_UART_SIG4_UART_SIG0 7 +#define GPIO28_FUN_PWM_CH3 8 +#define GPIO28_FUN_PIX_DAT4 9 +#define GPIO28_FUN_FLASH_PULL_OUT_5 10 +#define GPIO28_FUN_REG_GPIO_28 11 +#define GPIO28_FUN_RF_TEST_23 12 +#define GPIO28_FUN_UNUSED13 13 +#define GPIO28_FUN_E21_TMS_E21_TCK 14 +#define GPIO28_FUN_DEBUG_24 15 +#define GPIO28_FUN_FEM_GPIO_3 16 +#define GPIO28_FUN_USB_SUS_EXT 17 +#define GPIO28_FUN_USB_ENUM 18 +#define GPIO28_FUN_RMII_RX_DV 19 +#define GPIO28_FUN_QDEC0_B 20 +#define GPIO28_FUN_ROW_I_4 21 +#define GPIO28_FUN_COL_O_8 22 +#define GPIO28_FUN_CAM_REF_CLK 23 +/* GPIO29 function definition */ +#define GPIO29_FUN_CLK_OUT_1 0 +#define GPIO29_FUN_BT_PRI 1 +#define GPIO29_FUN_UNUSED2 2 +#define GPIO29_FUN_I2S0_FS 3 +#define GPIO29_FUN_SPI_0_MOSI_SPI_0_MISO 4 +#define GPIO29_FUN_I2C0_SDA 6 +#define GPIO29_FUN_UART_SIG5_UART_SIG1 7 +#define GPIO29_FUN_PWM_CH4 8 +#define GPIO29_FUN_PIX_DAT5 9 +#define GPIO29_FUN_UNUSED10 10 +#define GPIO29_FUN_REG_GPIO_29 11 +#define GPIO29_FUN_RF_TEST_24 12 +#define GPIO29_FUN_UNUSED13 13 +#define GPIO29_FUN_E21_TDI_E21_TDO 14 +#define GPIO29_FUN_DEBUG_25 15 +#define GPIO29_FUN_FEM_GPIO_4 16 +#define GPIO29_FUN_USB_ENUM_EXT 17 +#define GPIO29_FUN_USB_OEB 18 +#define GPIO29_FUN_UNUSED19 19 +#define GPIO29_FUN_QDEC0_LED 20 +#define GPIO29_FUN_ROW_I_5 21 +#define GPIO29_FUN_COL_O_9 22 +#define GPIO29_FUN_CAM_RESET 23 +/* GPIO30 function definition */ +#define GPIO30_FUN_CLK_OUT_0 0 +#define GPIO30_FUN_BT_ABORT 1 +#define GPIO30_FUN_UNUSED2 2 +#define GPIO30_FUN_I2S0_DIO_I2S0_DO 3 +#define GPIO30_FUN_SPI_0_SS 4 +#define GPIO30_FUN_I2C0_SCL 6 +#define GPIO30_FUN_UART_SIG6_UART_SIG2 7 +#define GPIO30_FUN_PWM_CH0 8 +#define GPIO30_FUN_PIX_DAT6 9 +#define GPIO30_FUN_UNUSED10 10 +#define GPIO30_FUN_REG_GPIO_30 11 +#define GPIO30_FUN_RF_TEST_25 12 +#define GPIO30_FUN_UNUSED13 13 +#define GPIO30_FUN_E21_TCK_E21_TMS 14 +#define GPIO30_FUN_DEBUG_26 15 +#define GPIO30_FUN_FEM_GPIO_0 16 +#define GPIO30_FUN_USB_TX_DN_USB_RX_DN 17 +#define GPIO30_FUN_VOP 18 +#define GPIO30_FUN_UNUSED19 19 +#define GPIO30_FUN_QDEC1_A 20 +#define GPIO30_FUN_ROW_I_6 21 +#define GPIO30_FUN_COL_O_10 22 +#define GPIO30_FUN_CAM_PWRDN 23 +/* GPIO31 function definition */ +#define GPIO31_FUN_CLK_OUT_1 0 +#define GPIO31_FUN_BT_ACTIVE 1 +#define GPIO31_FUN_UNUSED2 2 +#define GPIO31_FUN_I2S0_RCLK_O_I2S0_DI 3 +#define GPIO31_FUN_SPI_0_SCLK 4 +#define GPIO31_FUN_I2C0_SDA 6 +#define GPIO31_FUN_UART_SIG7_UART_SIG3 7 +#define GPIO31_FUN_PWM_CH1 8 +#define GPIO31_FUN_PIX_DAT7 9 +#define GPIO31_FUN_UNUSED10 10 +#define GPIO31_FUN_REG_GPIO_31 11 +#define GPIO31_FUN_RF_TEST_26 12 +#define GPIO31_FUN_UNUSED13 13 +#define GPIO31_FUN_E21_TDO_E21_TDI 14 +#define GPIO31_FUN_DEBUG_27 15 +#define GPIO31_FUN_FEM_GPIO_1 16 +#define GPIO31_FUN_USB_TX_OE 17 +#define GPIO31_FUN_VOM 18 +#define GPIO31_FUN_UNUSED19 19 +#define GPIO31_FUN_QDEC1_B 20 +#define GPIO31_FUN_ROW_I_7 21 +#define GPIO31_FUN_COL_O_11 22 +#define GPIO31_FUN_CAM_REF_CLK 23 + +#endif /*__BL702_GPIO_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_hbn.h b/drivers/bl702_driver/std_drv/inc/bl702_hbn.h new file mode 100644 index 00000000..57f57b77 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_hbn.h @@ -0,0 +1,560 @@ +/** + ****************************************************************************** + * @file bl702_hbn.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_HBN_H__ +#define __BL702_HBN_H__ + +#include "hbn_reg.h" +#include "bl702_aon.h" +#include "bl702_sflash.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup HBN + * @{ + */ + +/** @defgroup HBN_Public_Types + * @{ + */ + +/** + * @brief HBN PIR interrupt configuration type definition + */ +typedef struct { + BL_Fun_Type lowIntEn; /*!< Low will trigger interrupt */ + BL_Fun_Type highIntEn; /*!< High will trigger interrupt */ +}HBN_PIR_INT_CFG_Type; + +/** + * @brief HBN PIR low pass filter type definition + */ +typedef enum { + HBN_PIR_LPF_DIV1, /*!< HBN PIR lpf div 1 */ + HBN_PIR_LPF_DIV2, /*!< HBN PIR lpf div 2 */ +}HBN_PIR_LPF_Type; + +/** + * @brief HBN PIR high pass filter type definition + */ +typedef enum { + HBN_PIR_HPF_METHOD0, /*!< HBN PIR hpf calc method 0, 1-z^-1 */ + HBN_PIR_HPF_METHOD1, /*!< HBN PIR hpf calc method 1, 1-z^-2 */ + HBN_PIR_HPF_METHOD2, /*!< HBN PIR hpf calc method 2, 1-z^-3 */ +}HBN_PIR_HPF_Type; + +/** + * @brief HBN BOR threshold type definition + */ +typedef enum { + HBN_BOR_THRES_2P0V, /*!< BOR threshold 2.0V */ + HBN_BOR_THRES_2P4V, /*!< BOR threshold 2.4V */ +}HBN_BOR_THRES_Type; + +/** + * @brief HBN BOR mode type definition + */ +typedef enum { + HBN_BOR_MODE_POR_INDEPENDENT, /*!< POR is independent of BOR */ + HBN_BOR_MODE_POR_RELEVANT, /*!< POR is relevant to BOR */ +}HBN_BOR_MODE_Type; + +/** + * @brief HBN 32K clock type definition + */ +typedef enum { + HBN_32K_RC=0, /*!< HBN use rc 32k */ + HBN_32K_XTAL, /*!< HBN use xtal 32k */ + HBN_32K_DIG=3, /*!< HBN use dig 32k */ +}HBN_32K_CLK_Type; + +/** + * @brief HBN xclk clock type definition + */ +typedef enum { + HBN_XCLK_CLK_RC32M, /*!< use RC32M as xclk clock */ + HBN_XCLK_CLK_XTAL, /*!< use XTAL as xclk clock */ +}HBN_XCLK_CLK_Type; + +/** + * @brief HBN root clock type definition + */ +typedef enum { + HBN_ROOT_CLK_RC32M, /*!< use RC32M as root clock */ + HBN_ROOT_CLK_XTAL, /*!< use XTAL as root clock */ + HBN_ROOT_CLK_DLL, /*!< use DLL as root clock */ +}HBN_ROOT_CLK_Type; + +/** + * @brief HBN UART clock type definition + */ +typedef enum { + HBN_UART_CLK_FCLK=0, /*!< Select FCLK as UART clock */ + HBN_UART_CLK_96M, /*!< Select 96M as UART clock */ +}HBN_UART_CLK_Type; + +/** + * @brief HBN RTC interrupt delay type definition + */ +typedef enum { + HBN_RTC_INT_DELAY_32T=0, /*!< HBN RTC interrupt delay 32T */ + HBN_RTC_INT_DELAY_0T=1, /*!< HBN RTC interrupt delay 0T */ +}HBN_RTC_INT_Delay_Type; + +/** + * @brief HBN interrupt type definition + */ +typedef enum { + HBN_INT_GPIO9=0, /*!< HBN interrupt type: GPIO9 */ + HBN_INT_GPIO10=1, /*!< HBN interrupt type: GPIO10 */ + HBN_INT_GPIO11=2, /*!< HBN interrupt type: GPIO11 */ + HBN_INT_GPIO12=3, /*!< HBN interrupt type: GPIO12 */ + HBN_INT_GPIO13=4, /*!< HBN interrupt type: GPIO13 */ + HBN_INT_RTC=16, /*!< HBN interrupt type: RTC */ + HBN_INT_PIR, /*!< HBN interrupt type: PIR */ + HBN_INT_BOR, /*!< HBN interrupt type: BOR */ + HBN_INT_ACOMP0=20, /*!< HBN interrupt type: ACOMP0 */ + HBN_INT_ACOMP1=22, /*!< HBN interrupt type: ACOMP1 */ +}HBN_INT_Type; + +/** + * @brief HBN acomp interrupt type definition + */ +typedef enum { + HBN_ACOMP_INT_EDGE_POSEDGE=0, /*!< HBN acomp interrupt edge posedge */ + HBN_ACOMP_INT_EDGE_NEGEDGE=1, /*!< HBN acomp interrupt edge negedge */ +}HBN_ACOMP_INT_EDGE_Type; + +/** + * @brief HBN reset event type definition + */ +typedef enum { + HBN_RST_EVENT_POR_OUT, /*!< por_out event */ + HBN_RST_EVENT_EXT_RST_N, /*!< ext_rst_n event */ + HBN_RST_EVENT_SW_RST, /*!< sw_rst event */ + HBN_RST_EVENT_PWR_RST_N, /*!< pwr_rst_n event */ + HBN_RST_EVENT_BOR_OUT, /*!< bor_out_ event */ +}HBN_RST_EVENT_Type; + +/** + * @brief HBN GPIO interrupt trigger type definition + */ +typedef enum { + HBN_GPIO_INT_TRIGGER_SYNC_FALLING_EDGE, /*!< HBN GPIO INT trigger type: sync falling edge trigger */ + HBN_GPIO_INT_TRIGGER_SYNC_RISING_EDGE, /*!< HBN GPIO INT trigger type: sync rising edge trigger */ + HBN_GPIO_INT_TRIGGER_SYNC_LOW_LEVEL, /*!< HBN GPIO INT trigger type: sync low level trigger */ + HBN_GPIO_INT_TRIGGER_SYNC_HIGH_LEVEL, /*!< HBN GPIO INT trigger type: sync high level trigger */ + HBN_GPIO_INT_TRIGGER_ASYNC_FALLING_EDGE, /*!< HBN GPIO INT trigger type: async falling edge trigger */ + HBN_GPIO_INT_TRIGGER_ASYNC_RISING_EDGE, /*!< HBN GPIO INT trigger type: async rising edge trigger */ + HBN_GPIO_INT_TRIGGER_ASYNC_LOW_LEVEL, /*!< HBN GPIO INT trigger type: async low level trigger */ + HBN_GPIO_INT_TRIGGER_ASYNC_HIGH_LEVEL, /*!< HBN GPIO INT trigger type: async high level trigger */ +}HBN_GPIO_INT_Trigger_Type; + +/** + * @brief HBN OUT0 interrupt type definition + */ +typedef enum { + HBN_OUT0_INT_GPIO9=0, /*!< HBN out 0 interrupt type: GPIO9 */ + HBN_OUT0_INT_GPIO10=1, /*!< HBN out 0 interrupt type: GPIO10 */ + HBN_OUT0_INT_GPIO11=2, /*!< HBN out 0 interrupt type: GPIO11 */ + HBN_OUT0_INT_GPIO12=3, /*!< HBN out 0 interrupt type: GPIO12 */ + HBN_OUT0_INT_GPIO13=4, /*!< HBN out 0 interrupt type: GPIO13 */ + HBN_OUT0_INT_RTC, /*!< HBN out 0 interrupt type: RTC */ + HBN_OUT0_MAX, /*!< HBN out 0 max num */ +}HBN_OUT0_INT_Type; + +/** + * @brief HBN OUT0 interrupt type definition + */ +typedef enum { + HBN_OUT1_INT_PIR, /*!< HBN out 1 interrupt type: PIR */ + HBN_OUT1_INT_BOR, /*!< HBN out 1 interrupt type: BOR */ + HBN_OUT1_INT_ACOMP0, /*!< HBN out 1 interrupt type: ACOMP0 */ + HBN_OUT1_INT_ACOMP1, /*!< HBN out 1 interrupt type: ACOMP1 */ + HBN_OUT1_MAX, /*!< HBN out 1 max num */ +}HBN_OUT1_INT_Type; + +/** + * @brief HBN LDO level type definition + */ +typedef enum { + HBN_LDO_LEVEL_0P60V=0, /*!< HBN LDO voltage 0.60V */ + HBN_LDO_LEVEL_0P65V=1, /*!< HBN LDO voltage 0.65V */ + HBN_LDO_LEVEL_0P70V=2, /*!< HBN LDO voltage 0.70V */ + HBN_LDO_LEVEL_0P75V=3, /*!< HBN LDO voltage 0.75V */ + HBN_LDO_LEVEL_0P80V=4, /*!< HBN LDO voltage 0.80V */ + HBN_LDO_LEVEL_0P85V=5, /*!< HBN LDO voltage 0.85V */ + HBN_LDO_LEVEL_0P90V=6, /*!< HBN LDO voltage 0.90V */ + HBN_LDO_LEVEL_0P95V=7, /*!< HBN LDO voltage 0.95V */ + HBN_LDO_LEVEL_1P00V=8, /*!< HBN LDO voltage 1.00V */ + HBN_LDO_LEVEL_1P05V=9, /*!< HBN LDO voltage 1.05V */ + HBN_LDO_LEVEL_1P10V=10, /*!< HBN LDO voltage 1.10V */ + HBN_LDO_LEVEL_1P15V=11, /*!< HBN LDO voltage 1.15V */ + HBN_LDO_LEVEL_1P20V=12, /*!< HBN LDO voltage 1.20V */ + HBN_LDO_LEVEL_1P25V=13, /*!< HBN LDO voltage 1.25V */ + HBN_LDO_LEVEL_1P30V=14, /*!< HBN LDO voltage 1.30V */ + HBN_LDO_LEVEL_1P35V=15, /*!< HBN LDO voltage 1.35V */ +}HBN_LDO_LEVEL_Type; + +/** + * @brief HBN LDO11RT drive strength type definition + */ +typedef enum { + HBN_LDO11RT_DRIVE_STRENGTH_5_50UA=0, /*!< HBN LDO11RT drive strength 0: 5uA to 50uA */ + HBN_LDO11RT_DRIVE_STRENGTH_10_100UA=1, /*!< HBN LDO11RT drive strength 1: 10uA to 100uA */ + HBN_LDO11RT_DRIVE_STRENGTH_15_150UA=2, /*!< HBN LDO11RT drive strength 2: 15uA to 150uA */ + HBN_LDO11RT_DRIVE_STRENGTH_25_250UA=3, /*!< HBN LDO11RT drive strength 3: 25uA to 250uA */ +}HBN_LDO11RT_DRIVE_STRENGTH_Type; + +/** + * @brief HBN level type definition + */ +typedef enum { + HBN_LEVEL_0, /*!< HBN pd_core */ + HBN_LEVEL_1, /*!< HBN pd_aon_hbncore + pd_core */ + HBN_LEVEL_2, /*!< HBN pd_aon_hbncore + pd_core */ + HBN_LEVEL_3, /*!< HBN pd_aon_hbnrtc + pd_aon_hbncore + pd_core */ +}HBN_LEVEL_Type; + +/** + * @brief HBN BOR configuration type definition + */ +typedef struct { + uint8_t enableBor; /*!< Enable BOR or not */ + uint8_t enableBorInt; /*!< Enable BOR interrupt or not */ + uint8_t borThreshold; /*!< BOR threshold */ + uint8_t enablePorInBor; /*!< Enable POR when BOR occure or not */ +}HBN_BOR_CFG_Type; + +/** + * @brief HBN APP configuration type definition + */ +typedef struct { + uint8_t useXtal32k; /*!< Whether use xtal 32K as 32K clock source,otherwise use rc32k */ + uint32_t sleepTime; /*!< HBN sleep time */ + uint8_t gpioWakeupSrc; /*!< GPIO Wakeup source */ + HBN_GPIO_INT_Trigger_Type gpioTrigType; /*!< GPIO Triger type */ + SPI_Flash_Cfg_Type *flashCfg; /*!< Flash config pointer, used when power down flash */ + uint8_t flashPinCfg; /*!< 0 ext flash 23-28, 1 internal flash 23-28, 2 internal flash 23-28, 3 ext flash 17-22 */ + HBN_LEVEL_Type hbnLevel; /*!< HBN level */ + HBN_LDO_LEVEL_Type ldoLevel; /*!< LDO level */ +}HBN_APP_CFG_Type; + +/*@} end of group HBN_Public_Types */ + +/** @defgroup HBN_Public_Constants + * @{ + */ + +/** @defgroup HBN_PIR_LPF_TYPE + * @{ + */ +#define IS_HBN_PIR_LPF_TYPE(type) (((type) == HBN_PIR_LPF_DIV1) || \ + ((type) == HBN_PIR_LPF_DIV2)) + +/** @defgroup HBN_PIR_HPF_TYPE + * @{ + */ +#define IS_HBN_PIR_HPF_TYPE(type) (((type) == HBN_PIR_HPF_METHOD0) || \ + ((type) == HBN_PIR_HPF_METHOD1) || \ + ((type) == HBN_PIR_HPF_METHOD2)) + +/** @defgroup HBN_BOR_THRES_TYPE + * @{ + */ +#define IS_HBN_BOR_THRES_TYPE(type) (((type) == HBN_BOR_THRES_2P0V) || \ + ((type) == HBN_BOR_THRES_2P4V)) + +/** @defgroup HBN_BOR_MODE_TYPE + * @{ + */ +#define IS_HBN_BOR_MODE_TYPE(type) (((type) == HBN_BOR_MODE_POR_INDEPENDENT) || \ + ((type) == HBN_BOR_MODE_POR_RELEVANT)) + +/** @defgroup HBN_32K_CLK_TYPE + * @{ + */ +#define IS_HBN_32K_CLK_TYPE(type) (((type) == HBN_32K_RC) || \ + ((type) == HBN_32K_XTAL) || \ + ((type) == HBN_32K_DIG)) + +/** @defgroup HBN_XCLK_CLK_TYPE + * @{ + */ +#define IS_HBN_XCLK_CLK_TYPE(type) (((type) == HBN_XCLK_CLK_RC32M) || \ + ((type) == HBN_XCLK_CLK_XTAL)) + +/** @defgroup HBN_ROOT_CLK_TYPE + * @{ + */ +#define IS_HBN_ROOT_CLK_TYPE(type) (((type) == HBN_ROOT_CLK_RC32M) || \ + ((type) == HBN_ROOT_CLK_XTAL) || \ + ((type) == HBN_ROOT_CLK_DLL)) + +/** @defgroup HBN_UART_CLK_TYPE + * @{ + */ +#define IS_HBN_UART_CLK_TYPE(type) (((type) == HBN_UART_CLK_FCLK) || \ + ((type) == HBN_UART_CLK_96M)) + +/** @defgroup HBN_RTC_INT_DELAY_TYPE + * @{ + */ +#define IS_HBN_RTC_INT_DELAY_TYPE(type) (((type) == HBN_RTC_INT_DELAY_32T) || \ + ((type) == HBN_RTC_INT_DELAY_0T)) + +/** @defgroup HBN_INT_TYPE + * @{ + */ +#define IS_HBN_INT_TYPE(type) (((type) == HBN_INT_GPIO9) || \ + ((type) == HBN_INT_GPIO10) || \ + ((type) == HBN_INT_GPIO11) || \ + ((type) == HBN_INT_GPIO12) || \ + ((type) == HBN_INT_GPIO13) || \ + ((type) == HBN_INT_RTC) || \ + ((type) == HBN_INT_PIR) || \ + ((type) == HBN_INT_BOR) || \ + ((type) == HBN_INT_ACOMP0) || \ + ((type) == HBN_INT_ACOMP1)) + +/** @defgroup HBN_ACOMP_INT_EDGE_TYPE + * @{ + */ +#define IS_HBN_ACOMP_INT_EDGE_TYPE(type) (((type) == HBN_ACOMP_INT_EDGE_POSEDGE) || \ + ((type) == HBN_ACOMP_INT_EDGE_NEGEDGE)) + +/** @defgroup HBN_RST_EVENT_TYPE + * @{ + */ +#define IS_HBN_RST_EVENT_TYPE(type) (((type) == HBN_RST_EVENT_POR_OUT) || \ + ((type) == HBN_RST_EVENT_EXT_RST_N) || \ + ((type) == HBN_RST_EVENT_SW_RST) || \ + ((type) == HBN_RST_EVENT_PWR_RST_N) || \ + ((type) == HBN_RST_EVENT_BOR_OUT)) + +/** @defgroup HBN_GPIO_INT_TRIGGER_TYPE + * @{ + */ +#define IS_HBN_GPIO_INT_TRIGGER_TYPE(type) (((type) == HBN_GPIO_INT_TRIGGER_SYNC_FALLING_EDGE) || \ + ((type) == HBN_GPIO_INT_TRIGGER_SYNC_RISING_EDGE) || \ + ((type) == HBN_GPIO_INT_TRIGGER_SYNC_LOW_LEVEL) || \ + ((type) == HBN_GPIO_INT_TRIGGER_SYNC_HIGH_LEVEL) || \ + ((type) == HBN_GPIO_INT_TRIGGER_ASYNC_FALLING_EDGE) || \ + ((type) == HBN_GPIO_INT_TRIGGER_ASYNC_RISING_EDGE) || \ + ((type) == HBN_GPIO_INT_TRIGGER_ASYNC_LOW_LEVEL) || \ + ((type) == HBN_GPIO_INT_TRIGGER_ASYNC_HIGH_LEVEL)) + +/** @defgroup HBN_OUT0_INT_TYPE + * @{ + */ +#define IS_HBN_OUT0_INT_TYPE(type) (((type) == HBN_OUT0_INT_GPIO9) || \ + ((type) == HBN_OUT0_INT_GPIO10) || \ + ((type) == HBN_OUT0_INT_GPIO11) || \ + ((type) == HBN_OUT0_INT_GPIO12) || \ + ((type) == HBN_OUT0_INT_GPIO13) || \ + ((type) == HBN_OUT0_INT_RTC) || \ + ((type) == HBN_OUT0_MAX)) + +/** @defgroup HBN_OUT1_INT_TYPE + * @{ + */ +#define IS_HBN_OUT1_INT_TYPE(type) (((type) == HBN_OUT1_INT_PIR) || \ + ((type) == HBN_OUT1_INT_BOR) || \ + ((type) == HBN_OUT1_INT_ACOMP0) || \ + ((type) == HBN_OUT1_INT_ACOMP1) || \ + ((type) == HBN_OUT1_MAX)) + +/** @defgroup HBN_LDO_LEVEL_TYPE + * @{ + */ +#define IS_HBN_LDO_LEVEL_TYPE(type) (((type) == HBN_LDO_LEVEL_0P60V) || \ + ((type) == HBN_LDO_LEVEL_0P65V) || \ + ((type) == HBN_LDO_LEVEL_0P70V) || \ + ((type) == HBN_LDO_LEVEL_0P75V) || \ + ((type) == HBN_LDO_LEVEL_0P80V) || \ + ((type) == HBN_LDO_LEVEL_0P85V) || \ + ((type) == HBN_LDO_LEVEL_0P90V) || \ + ((type) == HBN_LDO_LEVEL_0P95V) || \ + ((type) == HBN_LDO_LEVEL_1P00V) || \ + ((type) == HBN_LDO_LEVEL_1P05V) || \ + ((type) == HBN_LDO_LEVEL_1P10V) || \ + ((type) == HBN_LDO_LEVEL_1P15V) || \ + ((type) == HBN_LDO_LEVEL_1P20V) || \ + ((type) == HBN_LDO_LEVEL_1P25V) || \ + ((type) == HBN_LDO_LEVEL_1P30V) || \ + ((type) == HBN_LDO_LEVEL_1P35V)) + +/** @defgroup HBN_LDO11RT_DRIVE_STRENGTH_TYPE + * @{ + */ +#define IS_HBN_LDO11RT_DRIVE_STRENGTH_TYPE(type) (((type) == HBN_LDO11RT_DRIVE_STRENGTH_5_50UA) || \ + ((type) == HBN_LDO11RT_DRIVE_STRENGTH_10_100UA) || \ + ((type) == HBN_LDO11RT_DRIVE_STRENGTH_15_150UA) || \ + ((type) == HBN_LDO11RT_DRIVE_STRENGTH_25_250UA)) + +/** @defgroup HBN_LEVEL_TYPE + * @{ + */ +#define IS_HBN_LEVEL_TYPE(type) (((type) == HBN_LEVEL_0) || \ + ((type) == HBN_LEVEL_1) || \ + ((type) == HBN_LEVEL_2) || \ + ((type) == HBN_LEVEL_3)) + +/*@} end of group HBN_Public_Constants */ + +/** @defgroup HBN_Public_Macros + * @{ + */ +#define HBN_RAM_SIZE (4*1024) +#define HBN_RTC_COMP_BIT0_39 0x01 +#define HBN_RTC_COMP_BIT0_23 0x02 +#define HBN_RTC_COMP_BIT13_39 0x04 +#define HBN_STATUS_ENTER_FLAG 0x4e424845 +#define HBN_STATUS_WAKEUP_FLAG 0x4e424857 +#define HBN_WAKEUP_GPIO_NONE 0x00 +#define HBN_WAKEUP_GPIO_10 0x02 +#define HBN_WAKEUP_GPIO_11 0x04 +#define HBN_WAKEUP_GPIO_12 0x08 +#define HBN_WAKEUP_GPIO_13 0x10 +#define HBN_WAKEUP_GPIO_ALL 0x1E + +/*@} end of group HBN_Public_Macros */ + +/** @defgroup HBN_Public_Functions + * @{ + */ +/*----------*/ +#ifndef BFLB_USE_HAL_DRIVER +void HBN_OUT0_IRQHandler(void); +void HBN_OUT1_IRQHandler(void); +#endif +/*----------*/ +void HBN_Mode_Enter(HBN_APP_CFG_Type *cfg); +void HBN_Power_Down_Flash(SPI_Flash_Cfg_Type *flashCfg); +void HBN_Enable_Ext(uint8_t aGPIOIeCfg,HBN_LDO_LEVEL_Type ldoLevel,HBN_LEVEL_Type hbnLevel); +BL_Err_Type HBN_Reset(void); +BL_Err_Type HBN_App_Reset(uint8_t npXtalType,uint8_t bclkDiv,uint8_t apXtalType,uint8_t fclkDiv); +BL_Err_Type HBN_Disable(void); +/*----------*/ +BL_Err_Type HBN_PIR_Enable(void); +BL_Err_Type HBN_PIR_Disable(void); +BL_Err_Type HBN_PIR_INT_Config(HBN_PIR_INT_CFG_Type* pirIntCfg); +BL_Err_Type HBN_PIR_LPF_Sel(HBN_PIR_LPF_Type lpf); +BL_Err_Type HBN_PIR_HPF_Sel(HBN_PIR_HPF_Type hpf); +BL_Err_Type HBN_Set_PIR_Threshold(uint16_t threshold); +uint16_t HBN_Get_PIR_Threshold(void); +BL_Err_Type HBN_Set_PIR_Interval(uint16_t interval); +uint16_t HBN_Get_PIR_Interval(void); +/*----------*/ +BL_Sts_Type HBN_Get_BOR_OUT_State(void); +BL_Err_Type HBN_Set_BOR_Config(uint8_t enable,HBN_BOR_THRES_Type threshold,HBN_BOR_MODE_Type mode); +/*----------*/ +BL_Err_Type HBN_Set_Ldo11_Aon_Vout(HBN_LDO_LEVEL_Type ldoLevel); +BL_Err_Type HBN_Set_Ldo11_Rt_Vout(HBN_LDO_LEVEL_Type ldoLevel); +BL_Err_Type HBN_Set_Ldo11_Soc_Vout(HBN_LDO_LEVEL_Type ldoLevel); +BL_Err_Type HBN_Set_Ldo11_All_Vout(HBN_LDO_LEVEL_Type ldoLevel); +BL_Err_Type HBN_Set_Ldo11rt_Drive_Strength(HBN_LDO11RT_DRIVE_STRENGTH_Type strength); +/*----------*/ +BL_Err_Type HBN_32K_Sel(HBN_32K_CLK_Type clkType); +BL_Err_Type HBN_Set_UART_CLK_Sel(HBN_UART_CLK_Type clkSel); +BL_Err_Type HBN_Set_XCLK_CLK_Sel(HBN_XCLK_CLK_Type xClk); +BL_Err_Type HBN_Set_ROOT_CLK_Sel(HBN_ROOT_CLK_Type rootClk); +/*----------*/ +BL_Err_Type HBN_Set_HRAM_slp(void); +BL_Err_Type HBN_Set_HRAM_Ret(void); +/*----------*/ +uint32_t HBN_Get_Status_Flag(void); +BL_Err_Type HBN_Set_Status_Flag(uint32_t flag); +uint32_t HBN_Get_Wakeup_Addr(void); +BL_Err_Type HBN_Set_Wakeup_Addr(uint32_t addr); +/*----------*/ +BL_Err_Type HBN_Clear_RTC_Counter(void); +BL_Err_Type HBN_Enable_RTC_Counter(void); +BL_Err_Type HBN_Set_RTC_Timer(HBN_RTC_INT_Delay_Type delay,uint32_t compValLow,uint32_t compValHigh,uint8_t compMode); +BL_Err_Type HBN_Get_RTC_Timer_Val(uint32_t *valLow,uint32_t *valHigh); +BL_Err_Type HBN_Clear_RTC_IRQ(void); +/*----------*/ +BL_Err_Type HBN_GPIO_INT_Enable(HBN_GPIO_INT_Trigger_Type gpioIntTrigType); +BL_Err_Type HBN_GPIO_INT_Disable(void); +BL_Sts_Type HBN_Get_INT_State(HBN_INT_Type irqType); +uint8_t HBN_Get_Pin_Wakeup_Mode(void); +BL_Err_Type HBN_Clear_IRQ(HBN_INT_Type irqType); +BL_Err_Type HBN_Hw_Pu_Pd_Cfg(uint8_t enable); +BL_Err_Type HBN_Aon_Pad_IeSmt_Cfg(uint8_t padCfg); +BL_Err_Type HBN_Pin_WakeUp_Mask(uint8_t maskVal); +/*----------*/ +BL_Err_Type HBN_Enable_AComp0_IRQ(HBN_ACOMP_INT_EDGE_Type edge); +BL_Err_Type HBN_Disable_AComp0_IRQ(HBN_ACOMP_INT_EDGE_Type edge); +BL_Err_Type HBN_Enable_AComp1_IRQ(HBN_ACOMP_INT_EDGE_Type edge); +BL_Err_Type HBN_Disable_AComp1_IRQ(HBN_ACOMP_INT_EDGE_Type edge); +/*----------*/ +BL_Err_Type HBN_Enable_BOR_IRQ(void); +BL_Err_Type HBN_Disable_BOR_IRQ(void); +/*----------*/ +BL_Sts_Type HBN_Get_Reset_Event(HBN_RST_EVENT_Type event); +BL_Err_Type HBN_Clear_Reset_Event(void); +/*----------*/ +BL_Err_Type HBN_Out0_IRQHandler_Install(void); +BL_Err_Type HBN_Out0_Callback_Install(HBN_OUT0_INT_Type intType,intCallback_Type* cbFun); +BL_Err_Type HBN_Out1_IRQHandler_Install(void); +BL_Err_Type HBN_Out1_Callback_Install(HBN_OUT1_INT_Type intType,intCallback_Type* cbFun); +/*----------*/ +BL_Err_Type HBN_GPIO_Dbg_Pull_Cfg(BL_Fun_Type pupdEn,BL_Fun_Type dlyEn, + uint8_t dlySec,HBN_INT_Type gpioIrq,BL_Mask_Type gpioMask); +/*----------*/ +BL_Err_Type HBN_Power_On_Xtal_32K(void); +BL_Err_Type HBN_Power_Off_Xtal_32K(void); +BL_Err_Type HBN_Power_On_RC32K(void); +BL_Err_Type HBN_Power_Off_RC32K(void); +BL_Err_Type HBN_Trim_RC32K(void); +BL_Err_Type HBN_Set_Pad_23_28_Pullnone(void); +BL_Err_Type HBN_Set_Pad_23_28_Pullup(void); +BL_Err_Type HBN_Set_Pad_23_28_Pulldown(void); +BL_Err_Type HBN_Set_Pad_23_28_ActiveIE(void); +BL_Err_Type HBN_Set_BOR_Cfg(HBN_BOR_CFG_Type *cfg); +/*----------*/ +void HBN_Enable(uint8_t aGPIOIeCfg,HBN_LDO_LEVEL_Type ldoLevel,HBN_LEVEL_Type hbnLevel); +/*----------*/; + +/*@} end of group HBN_Public_Functions */ + +/*@} end of group HBN */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_HBN_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_i2c.h b/drivers/bl702_driver/std_drv/inc/bl702_i2c.h new file mode 100644 index 00000000..15d157c5 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_i2c.h @@ -0,0 +1,194 @@ +/** + ****************************************************************************** + * @file bl702_i2c.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_I2C_H__ +#define __BL702_I2C_H__ + +#include "i2c_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup I2C + * @{ + */ + +/** @defgroup I2C_Public_Types + * @{ + */ + +/** + * @brief I2C No. type definition + */ +typedef enum { + I2C0_ID = 0, /*!< I2C0 define */ + I2C_ID_MAX, /*!< I2C max define */ +}I2C_ID_Type; + +/** + * @brief I2C read/write type definition + */ +typedef enum { + I2C_WRITE = 0, /*!< I2C write direction */ + I2C_READ, /*!< I2C read direction */ +}I2C_Direction_Type; + +/** + * @brief I2C interrupt type definition + */ +typedef enum { + I2C_TRANS_END_INT, /*!< I2C transfer end interrupt */ + I2C_TX_FIFO_READY_INT, /*!< I2C TX fifo ready interrupt */ + I2C_RX_FIFO_READY_INT, /*!< I2C RX fifo ready interrupt */ + I2C_NACK_RECV_INT, /*!< I2C nack received interrupt */ + I2C_ARB_LOST_INT, /*!< I2C arbitration lost interrupt */ + I2C_FIFO_ERR_INT, /*!< I2C TX/RX FIFO error interrupt */ + I2C_INT_ALL, /*!< I2C interrupt all type */ +}I2C_INT_Type; + +/** + * @brief I2S start condition phase structure type definition + */ +typedef struct { + uint8_t len0; /*!< Length of START condition phase 0 */ + uint8_t len1; /*!< Length of START condition phase 1 */ + uint8_t len2; /*!< Length of START condition phase 2 */ + uint8_t len3; /*!< Length of START condition phase 3 */ +}I2C_Start_Condition_Phase_Type; + +/** + * @brief I2S stop condition phase structure type definition + */ +typedef struct { + uint8_t len0; /*!< Length of STOP condition phase 0 */ + uint8_t len1; /*!< Length of STOP condition phase 1 */ + uint8_t len2; /*!< Length of STOP condition phase 2 */ + uint8_t len3; /*!< Length of STOP condition phase 3 */ +}I2C_Stop_Condition_Phase_Type; + +/** + * @brief I2S data phase structure type definition + */ +typedef struct { + uint8_t len0; /*!< Length of DATA phase 0 */ + uint8_t len1; /*!< Length of DATA phase 1 */ + uint8_t len2; /*!< Length of DATA phase 2 */ + uint8_t len3; /*!< Length of DATA phase 3 */ +}I2C_Data_Phase_Type; + +/** + * @brief I2S transfer structure type definition + */ +typedef struct { + uint8_t slaveAddr; /*!< I2C slave address */ + BL_Fun_Type stopEveryByte; /*!< I2C all data byte with stop bit */ + uint8_t subAddrSize; /*!< Specifies the size of I2C sub address section */ + uint32_t subAddr; /*!< I2C sub address */ + uint16_t dataSize; /*!< Specifies the size of I2C data section */ + uint8_t* data; /*!< Specifies the pointer of I2C R/W data */ +}I2C_Transfer_Cfg; + +/*@} end of group I2C_Public_Types */ + +/** @defgroup I2C_Public_Constants + * @{ + */ + +/** @defgroup I2C_ID_TYPE + * @{ + */ +#define IS_I2C_ID_TYPE(type) (((type) == I2C0_ID ) || \ + ((type) == I2C_ID_MAX)) + +/** @defgroup I2C_DIRECTION_TYPE + * @{ + */ +#define IS_I2C_DIRECTION_TYPE(type) (((type) == I2C_WRITE ) || \ + ((type) == I2C_READ)) + +/** @defgroup I2C_INT_TYPE + * @{ + */ +#define IS_I2C_INT_TYPE(type) (((type) == I2C_TRANS_END_INT) || \ + ((type) == I2C_TX_FIFO_READY_INT) || \ + ((type) == I2C_RX_FIFO_READY_INT) || \ + ((type) == I2C_NACK_RECV_INT) || \ + ((type) == I2C_ARB_LOST_INT) || \ + ((type) == I2C_FIFO_ERR_INT) || \ + ((type) == I2C_INT_ALL)) + +/*@} end of group I2C_Public_Constants */ + +/** @defgroup I2C_Public_Macros + * @{ + */ + +/*@} end of group I2C_Public_Macros */ + +/** @defgroup I2C_Public_Functions + * @{ + */ + +/** + * @brief I2C Functions + */ +#ifndef BFLB_USE_HAL_DRIVER +void I2C_IRQHandler(void); +#endif +void I2C_SendWord(I2C_ID_Type i2cNo, uint32_t data); +uint32_t I2C_RecieveWord(I2C_ID_Type i2cNo); +void I2C_Enable(I2C_ID_Type i2cNo); +void I2C_Disable(I2C_ID_Type i2cNo); +BL_Err_Type I2C_Reset(I2C_ID_Type i2cNo); +void I2C_SetPrd(I2C_ID_Type i2cNo, uint8_t phase); +void I2C_ClockSet(I2C_ID_Type i2cNo, uint32_t clk); +void I2C_SetSclSync(I2C_ID_Type i2cNo, uint8_t enable); +void I2C_Init(I2C_ID_Type i2cNo,I2C_Direction_Type direct,I2C_Transfer_Cfg *cfg); +BL_Sts_Type I2C_IsBusy(I2C_ID_Type i2cNo); +BL_Sts_Type I2C_TransferEndStatus(I2C_ID_Type i2cNo); +BL_Err_Type I2C_MasterSendBlocking(I2C_ID_Type i2cNo, I2C_Transfer_Cfg *cfg); +BL_Err_Type I2C_MasterReceiveBlocking(I2C_ID_Type i2cNo, I2C_Transfer_Cfg *cfg); +void I2C_IntMask(I2C_ID_Type i2cNo,I2C_INT_Type intType, BL_Mask_Type intMask); +void I2C_Int_Callback_Install(I2C_ID_Type i2cNo, I2C_INT_Type intType, intCallback_Type* cbFun); + +/*@} end of group I2C_Public_Functions */ + +/*@} end of group I2C */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_I2C_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_i2c_gpio_sim.h b/drivers/bl702_driver/std_drv/inc/bl702_i2c_gpio_sim.h new file mode 100644 index 00000000..bdf4a883 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_i2c_gpio_sim.h @@ -0,0 +1,79 @@ +/** + ****************************************************************************** + * @file bl702_i2c_gpio_sim.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_I2C_GPIO_SIM_H__ +#define __BL702_I2C_GPIO_SIM_H__ + +#include "bl702_glb.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup I2C_GPIO_SIM + * @{ + */ + +/** @defgroup I2C_GPIO_SIM_Public_Types + * @{ + */ + +/*@} end of group I2C_GPIO_SIM_Public_Types */ + +/** @defgroup I2C_GPIO_SIM_Public_Functions + * @{ + */ + +/** + * @brief I2C Functions + */ +void I2C_GPIO_Sim_Init(GLB_GPIO_Type sclGPIOPin,GLB_GPIO_Type sdaGPIOPin); +int I2C_Start(void); +void I2C_Stop(void); +uint8_t I2C_GetAck(void); +void I2C_SendByte(uint8_t Data); +uint8_t I2C_ReadByte(uint8_t ack); +int SCCB_Init(GLB_GPIO_Type sclGPIOPin,GLB_GPIO_Type sdaGPIOPin); +int SCCB_Write(uint8_t slave_addr, uint8_t* data,uint32_t wrsize); +int SCCB_Read(uint8_t slave_addr, uint8_t* data,uint32_t rdsize); + +/*@} end of group I2C_GPIO_SIM_Public_Functions */ + +/*@} end of group I2C_GPIO_SIM */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_I2C_GPIO_SIM_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_i2s.h b/drivers/bl702_driver/std_drv/inc/bl702_i2s.h new file mode 100644 index 00000000..425c66a0 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_i2s.h @@ -0,0 +1,292 @@ +/** + ****************************************************************************** + * @file bl702_i2s.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_I2S_H__ +#define __BL702_I2S_H__ + +#include "i2s_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup I2S + * @{ + */ + +/** @defgroup I2S_Public_Types + * @{ + */ + +/** + * @brief I2S mode type definition + */ +typedef enum { + I2S_MODE_I2S_LEFT, /*!< Left-Justified Mode */ + I2S_MODE_I2S_RIGHT, /*!< Right-Justified Mode */ + I2S_MODE_I2S_DSP, /*!< DSP Mode */ +}I2S_Mode_Type; + +/** + * @brief I2S role type definition + */ +typedef enum { + I2S_ROLE_MASTER = 0, /*!< I2S as master */ + I2S_ROLE_SLAVE = 1, /*!< I2S as slave */ +}I2S_Role_Type; + +/** + * @brief I2S data size type definition + */ +typedef enum { + I2S_SIZE_DATA_8 = 0, /*!< I2S data size 8 bits */ + I2S_SIZE_DATA_16, /*!< I2S data size 16 bits */ + I2S_SIZE_DATA_24, /*!< I2S data size 24 bits */ + I2S_SIZE_DATA_32, /*!< I2S data size 32 bits */ +}I2S_Data_Size_Type; + +/** + * @brief I2S frame size type definition + */ +typedef enum { + I2S_SIZE_FRAME_8 = 0, /*!< I2S frame size 8 bits */ + I2S_SIZE_FRAME_16, /*!< I2S frame size 16 bits */ + I2S_SIZE_FRAME_24, /*!< I2S frame size 24 bits */ + I2S_SIZE_FRAME_32, /*!< I2S frame size 32 bits */ +}I2S_Frame_Size_Type; + +/** + * @brief I2S endian data type definition + */ +typedef enum { + I2S_DATA_ENDIAN_MSB = 0, /*!< I2S use MSB first */ + I2S_DATA_ENDIAN_LSB, /*!< I2S use LSB first */ +}I2S_Endian_Type; + +/** + * @brief I2S frame select mode type definition + */ +typedef enum { + I2S_FS_MODE_EVEN = 0, /*!< I2S frame is even */ + I2S_FS_MODE_1T, /*!< I2S frame is only 1T high */ +}I2S_Fs_Mode_Type; + +/** + * @brief I2S rx mono mode channel select type definition + */ +typedef enum { + I2S_RX_MONO_MODE_LEFT_CHANNEL, /*!< I2S rx mono mode left channel */ + I2S_RX_MONO_MODE_RIGHT_CHANNEL, /*!< I2S rx mono mode right channel */ +}I2S_Mono_Mode_Channel; + +/** + * @brief I2S frame channel mode type definition + */ +typedef enum { + I2S_FS_CHANNELS_2 = 0, /*!< I2S frame is for 2 channels */ + I2S_FS_CHANNELS_3, /*!< I2S frame is for 3 channels */ + I2S_FS_CHANNELS_4, /*!< I2S frame is for 4 channels */ +}I2S_Fs_Channel_Type; + +/** + * @brief I2S mono control definition + */ +typedef enum { + I2S_MONO_CONTROL_STEREO = 0, /*!< I2S output stereo */ + I2S_MONO_CONTROL_MONO, /*!< I2S output mono */ +}I2S_MonoControl_Type; + +/** + * @brief I2S fifo 24-bit data align type definition + */ +typedef enum { + I2S_FIFO_24_RIGHT_JUSTIFIED = 0, /*!< I2S fifo:[31:24]0x00,[23:0]24bit_data */ + I2S_FIFO_24_LEFT_JUSTIFIED, /*!< I2S fifo:[31:8]24bit_data,[7:0]0x00 */ +}I2S_FIFO_24_Justified_Type; + +/** + * @brief I2S configuration structure type definition + */ +typedef struct { + I2S_Endian_Type endianType; /*!< I2S endian configuration */ + I2S_Mode_Type modeType; /*!< I2S mode configuration */ + uint32_t audioFreqHz; /*!< I2S audio pll output frequency in Hz */ + uint32_t sampleFreqHz; /*!< I2S sample data frequency in Hz */ + BL_Fun_Type bclkInvert; /*!< I2S bclk invert configuration */ + I2S_Frame_Size_Type frameSize; /*!< I2S frame size configuration */ + BL_Fun_Type fsInvert; /*!< I2S frame select invert configuration */ + I2S_Fs_Mode_Type fsMode; /*!< I2S frame mode configuration */ + I2S_Fs_Channel_Type fsChannel; /*!< I2S frame channels configuration */ + uint32_t dataOffset; /*!< I2S data output offset configuration */ + I2S_Data_Size_Type dataSize; /*!< I2S data size configuration */ + BL_Fun_Type monoMode; /*!< I2S enable mono mode,when this mode enable,lRMerge must be disabled */ + I2S_Mono_Mode_Channel monoModeChannel; /*!< I2S mono mode channel configuration */ +}I2S_CFG_Type; + +/** + * @brief I2S FIFO configuration structure type definition + */ +typedef struct { + BL_Fun_Type lRMerge; /*!< I2S FIFO contains both left and right channel data in one entry */ + BL_Fun_Type frameDataExchange; /*!< I2S exchange left and right channel data in one entry */ + BL_Fun_Type txfifoDmaEnable; /*!< Enable or disable I2S tx fifo dma function. */ + BL_Fun_Type rxfifoDmaEnable; /*!< Enable or disable I2S rx fifo dma function. */ + uint8_t rxFifoLevel; /*!< I2S receive fifo interrupt trigger level. only valid when fifo mode enabled. */ + uint8_t txFifoLevel; /*!< I2S transmit fifo interrupt trigger level. only valid when fifo mode enabled. */ +}I2S_FifoCfg_Type; + +/** + * @brief I2S IO configuration structure type definition + */ +typedef struct { + BL_Fun_Type deglitchEn; /*!< Enable or disable deglitch(for all the input pins) */ + uint8_t deglitchCnt; /*!< Deglitch cycle count(unit:cycle of I2S kernel clock) */ + BL_Fun_Type inverseBCLK; /*!< Enable or disable inverse BCLK signal */ + BL_Fun_Type inverseFS; /*!< Enable or disable inverse FS signal */ + BL_Fun_Type inverseRX; /*!< Enable or disable inverse RX signal */ + BL_Fun_Type inverseTX; /*!< Enable or disable inverse TX signal */ +}I2S_IOCfg_Type; + +/*@} end of group I2S_Public_Types */ + +/** @defgroup I2S_Public_Constants + * @{ + */ + +/** @defgroup I2S_MODE_TYPE + * @{ + */ +#define IS_I2S_MODE_TYPE(type) (((type) == I2S_MODE_I2S_LEFT) || \ + ((type) == I2S_MODE_I2S_RIGHT) || \ + ((type) == I2S_MODE_I2S_DSP)) + +/** @defgroup I2S_ROLE_TYPE + * @{ + */ +#define IS_I2S_ROLE_TYPE(type) (((type) == I2S_ROLE_MASTER ) || \ + ((type) == I2S_ROLE_SLAVE )) + +/** @defgroup I2S_DATA_SIZE_TYPE + * @{ + */ +#define IS_I2S_DATA_SIZE_TYPE(type) (((type) == I2S_SIZE_DATA_8 ) || \ + ((type) == I2S_SIZE_DATA_16) || \ + ((type) == I2S_SIZE_DATA_24) || \ + ((type) == I2S_SIZE_DATA_32)) + +/** @defgroup I2S_FRAME_SIZE_TYPE + * @{ + */ +#define IS_I2S_FRAME_SIZE_TYPE(type) (((type) == I2S_SIZE_FRAME_8 ) || \ + ((type) == I2S_SIZE_FRAME_16) || \ + ((type) == I2S_SIZE_FRAME_24) || \ + ((type) == I2S_SIZE_FRAME_32)) + +/** @defgroup I2S_ENDIAN_TYPE + * @{ + */ +#define IS_I2S_ENDIAN_TYPE(type) (((type) == I2S_DATA_ENDIAN_MSB ) || \ + ((type) == I2S_DATA_ENDIAN_LSB)) + +/** @defgroup I2S_FS_MODE_TYPE + * @{ + */ +#define IS_I2S_FS_MODE_TYPE(type) (((type) == I2S_FS_MODE_EVEN ) || \ + ((type) == I2S_FS_MODE_1T)) + +/** @defgroup I2S_MONO_MODE_CHANNEL + * @{ + */ +#define IS_I2S_MONO_MODE_CHANNEL(type) (((type) == I2S_RX_MONO_MODE_LEFT_CHANNEL) || \ + ((type) == I2S_RX_MONO_MODE_RIGHT_CHANNEL)) + +/** @defgroup I2S_FS_CHANNEL_TYPE + * @{ + */ +#define IS_I2S_FS_CHANNEL_TYPE(type) (((type) == I2S_FS_CHANNELS_2 ) || \ + ((type) == I2S_FS_CHANNELS_3) || \ + ((type) == I2S_FS_CHANNELS_4)) + +/** @defgroup I2S_MONOCONTROL_TYPE + * @{ + */ +#define IS_I2S_MONOCONTROL_TYPE(type) (((type) == I2S_MONO_CONTROL_STEREO ) || \ + ((type) == I2S_MONO_CONTROL_MONO)) + +/** @defgroup I2S_FIFO_24_JUSTIFIED_TYPE + * @{ + */ +#define IS_I2S_FIFO_24_JUSTIFIED_TYPE(type) (((type) == I2S_FIFO_24_RIGHT_JUSTIFIED ) || \ + ((type) == I2S_FIFO_24_LEFT_JUSTIFIED)) + +/*@} end of group I2S_Public_Constants */ + +/** @defgroup I2S_Public_Macros + * @{ + */ +#define I2S_TX_FIFO_SIZE 16 +#define I2S_RX_FIFO_SIZE 16 + +/*@} end of group I2S_Public_Macros */ + +/** @defgroup I2S_Public_Functions + * @{ + */ + +/** + * @brief I2S Functions + */ +void I2S_SetBclkPeriod(I2S_CFG_Type *i2sCfg); +void I2S_Init(I2S_CFG_Type *i2sCfg); +void I2S_FifoConfig(I2S_FifoCfg_Type *fifoCfg); +void I2S_IOConfig(I2S_IOCfg_Type *ioCfg); +void I2S_Enable(I2S_Role_Type roleType); +void I2S_Disable(void); +uint32_t I2S_Read(void); +void I2S_Write(uint32_t data); +void I2S_Mute(BL_Fun_Type enabled); +void I2S_SetFifoJustified(I2S_FIFO_24_Justified_Type justType); +uint32_t I2S_GetTxFIFO_AvlCnt(void); +uint32_t I2S_GetRxFIFO_AvlCnt(void); +void I2S_Flush(void); + +/*@} end of group I2S_Public_Functions */ + +/*@} end of group I2S */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_I2S_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_ir.h b/drivers/bl702_driver/std_drv/inc/bl702_ir.h new file mode 100644 index 00000000..0303af10 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_ir.h @@ -0,0 +1,253 @@ +/** + ****************************************************************************** + * @file bl702_ir.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_IR_H__ +#define __BL702_IR_H__ + +#include "ir_reg.h" +#include "bl702_common.h" +#include "bl702_hbn.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup IR + * @{ + */ + +/** @defgroup IR_Public_Types + * @{ + */ + +/** + * @brief IR direction type definition + */ +typedef enum { + IR_TX, /*!< IR TX direction */ + IR_RX, /*!< IR RX direction */ + IR_TXRX, /*!< IR TX and RX direction */ +}IR_Direction_Type; + +/** + * @brief IR word type definition + */ +typedef enum { + IR_WORD_0, /*!< IR data word 0 */ + IR_WORD_1, /*!< IR data word 1 */ +}IR_Word_Type; + +/** + * @brief IR RX mode type definition + */ +typedef enum { + IR_RX_NEC, /*!< IR RX NEC mode */ + IR_RX_RC5, /*!< IR RX RC5 mode */ + IR_RX_SWM, /*!< IR RX software pulse-width detection mode */ +}IR_RxMode_Type; + +/** + * @brief IR interrupt type definition + */ +typedef enum { + IR_INT_TX, /*!< IR TX transfer end interrupt */ + IR_INT_RX, /*!< IR RX transfer end interrupt */ + IR_INT_ALL, /*!< IR all interrupt */ +}IR_INT_Type; + +/** + * @brief IR fifo underflow or overflow type definition + */ +typedef enum { + IR_RX_FIFO_UNDERFLOW, /*!< Underflow flag of rx fifo */ + IR_RX_FIFO_OVERFLOW, /*!< Overflow flag of rx fifo */ +}IR_FifoStatus_Type; + +/** + * @brief IR TX configuration structure type definition + */ +typedef struct { + uint8_t dataBits; /*!< Bit count of data phase */ + BL_Fun_Type tailPulseInverse; /*!< Enable or disable signal of tail pulse inverse (don't care if SWM is enabled) */ + BL_Fun_Type tailPulse; /*!< Enable or disable signal of tail pulse (don't care if SWM is enabled) */ + BL_Fun_Type headPulseInverse; /*!< Enable or disable signal of head pulse inverse (don't care if SWM is enabled) */ + BL_Fun_Type headPulse; /*!< Enable or disable signal of head pulse (don't care if SWM is enabled) */ + BL_Fun_Type logic1PulseInverse; /*!< Enable or disable signal of logic 1 pulse inverse (don't care if SWM is enabled) */ + BL_Fun_Type logic0PulseInverse; /*!< Enable or disable signal of logic 0 pulse inverse (don't care if SWM is enabled) */ + BL_Fun_Type dataPulse; /*!< Enable or disable signal of data pulse (don't care if SWM is enabled) */ + BL_Fun_Type outputModulation; /*!< Enable or disable signal of output modulation */ + BL_Fun_Type outputInverse; /*!< Enable or disable signal of output inverse,0:output stays at low during idle state,1:stay at high */ +}IR_TxCfg_Type; + +/** + * @brief IR TX pulse width configuration structure type definition + */ +typedef struct { + uint8_t logic0PulseWidth_1; /*!< Pulse width of logic 0 pulse phase 1 (don't care if SWM is enabled) */ + uint8_t logic0PulseWidth_0; /*!< Pulse width of logic 0 pulse phase 0 (don't care if SWM is enabled) */ + uint8_t logic1PulseWidth_1; /*!< Pulse width of logic 1 pulse phase 1 (don't care if SWM is enabled) */ + uint8_t logic1PulseWidth_0; /*!< Pulse width of logic 1 pulse phase 0 (don't care if SWM is enabled) */ + uint8_t headPulseWidth_1; /*!< Pulse width of head pulse phase 1 (don't care if SWM is enabled) */ + uint8_t headPulseWidth_0; /*!< Pulse width of head pulse phase 0 (don't care if SWM is enabled) */ + uint8_t tailPulseWidth_1; /*!< Pulse width of tail pulse phase 1 (don't care if SWM is enabled) */ + uint8_t tailPulseWidth_0; /*!< Pulse width of tail pulse phase 0 (don't care if SWM is enabled) */ + uint8_t moduWidth_1; /*!< Modulation phase 1 width */ + uint8_t moduWidth_0; /*!< Modulation phase 0 width */ + uint16_t pulseWidthUnit; /*!< Pulse width unit */ +}IR_TxPulseWidthCfg_Type; + +/** + * @brief IR TX software mode pulse width(multiples of pulse width unit) configuration structure type definition + */ +typedef struct { + uint32_t swmData0; /*!< SWM pulse width data 0~7,multiples of pulse width unit,each pulse is represented by 4-bit */ + uint32_t swmData1; /*!< SWM pulse width data 8~15,multiples of pulse width unit,each pulse is represented by 4-bit */ + uint32_t swmData2; /*!< SWM pulse width data 16~23,multiples of pulse width unit,each pulse is represented by 4-bit */ + uint32_t swmData3; /*!< SWM pulse width data 24~31,multiples of pulse width unit,each pulse is represented by 4-bit */ + uint32_t swmData4; /*!< SWM pulse width data 32~39,multiples of pulse width unit,each pulse is represented by 4-bit */ + uint32_t swmData5; /*!< SWM pulse width data 40~47,multiples of pulse width unit,each pulse is represented by 4-bit */ + uint32_t swmData6; /*!< SWM pulse width data 48~55,multiples of pulse width unit,each pulse is represented by 4-bit */ + uint32_t swmData7; /*!< SWM pulse width data 56~63,multiples of pulse width unit,each pulse is represented by 4-bit */ +}IR_TxSWMPulseWidthCfg_Type; + +/** + * @brief IR RX configuration structure type definition + */ +typedef struct { + IR_RxMode_Type rxMode; /*!< Set ir rx mode */ + BL_Fun_Type inputInverse; /*!< Enable or disable signal of input inverse */ + uint16_t endThreshold; /*!< Pulse width threshold to trigger end condition */ + uint16_t dataThreshold; /*!< Pulse width threshold for logic 0/1 detection (don't care if SWM is enabled) */ + BL_Fun_Type rxDeglitch; /*!< Enable or disable signal of rx input de-glitch function */ + uint8_t DeglitchCnt; /*!< De-glitch function cycle count */ +}IR_RxCfg_Type; + +/*@} end of group IR_Public_Types */ + +/** @defgroup IR_Public_Constants + * @{ + */ + +/** @defgroup IR_DIRECTION_TYPE + * @{ + */ +#define IS_IR_DIRECTION_TYPE(type) (((type) == IR_TX) || \ + ((type) == IR_RX) || \ + ((type) == IR_TXRX)) + +/** @defgroup IR_WORD_TYPE + * @{ + */ +#define IS_IR_WORD_TYPE(type) (((type) == IR_WORD_0) || \ + ((type) == IR_WORD_1)) + +/** @defgroup IR_RXMODE_TYPE + * @{ + */ +#define IS_IR_RXMODE_TYPE(type) (((type) == IR_RX_NEC) || \ + ((type) == IR_RX_RC5) || \ + ((type) == IR_RX_SWM)) + +/** @defgroup IR_INT_TYPE + * @{ + */ +#define IS_IR_INT_TYPE(type) (((type) == IR_INT_TX) || \ + ((type) == IR_INT_RX) || \ + ((type) == IR_INT_ALL)) + +/** @defgroup IR_FIFOSTATUS_TYPE + * @{ + */ +#define IS_IR_FIFOSTATUS_TYPE(type) (((type) == IR_RX_FIFO_UNDERFLOW) || \ + ((type) == IR_RX_FIFO_OVERFLOW)) + +/*@} end of group IR_Public_Constants */ + +/** @defgroup IR_Public_Macros + * @{ + */ +#define IR_RX_FIFO_SIZE 64 + +/*@} end of group IR_Public_Macros */ + +/** @defgroup IR_Public_Functions + * @{ + */ + +/** + * @brief IR Functions + */ +#ifndef BFLB_USE_HAL_DRIVER +void IRRX_IRQHandler(void); +void IRTX_IRQHandler(void); +#endif +BL_Err_Type IR_TxInit(IR_TxCfg_Type *irTxCfg); +BL_Err_Type IR_TxPulseWidthConfig(IR_TxPulseWidthCfg_Type *irTxPulseWidthCfg); +BL_Err_Type IR_TxSWMPulseWidthConfig(IR_TxSWMPulseWidthCfg_Type *irTxSWMPulseWidthCfg); +BL_Err_Type IR_RxInit(IR_RxCfg_Type *irRxCfg); +BL_Err_Type IR_DeInit(void); +BL_Err_Type IR_Enable(IR_Direction_Type direct); +BL_Err_Type IR_Disable(IR_Direction_Type direct); +BL_Err_Type IR_TxSWM(BL_Fun_Type txSWM); +BL_Err_Type IR_RxFIFOClear(void); +BL_Err_Type IR_SendData(IR_Word_Type irWord,uint32_t data); +BL_Err_Type IR_SWMSendData(uint16_t *data,uint8_t length); +BL_Err_Type IR_SendCommand(uint32_t word1,uint32_t word0); +BL_Err_Type IR_SWMSendCommand(uint16_t *data,uint8_t length); +BL_Err_Type IR_SendNEC(uint8_t address,uint8_t command); +BL_Err_Type IR_IntMask(IR_INT_Type intType,BL_Mask_Type intMask); +BL_Err_Type IR_ClrIntStatus(IR_INT_Type intType); +BL_Err_Type IR_Int_Callback_Install(IR_INT_Type intType,intCallback_Type *cbFun); +BL_Sts_Type IR_GetIntStatus(IR_INT_Type intType); +BL_Sts_Type IR_GetRxFIFOStatus(IR_FifoStatus_Type fifoSts); +uint32_t IR_ReceiveData(IR_Word_Type irWord); +uint8_t IR_SWMReceiveData(uint16_t *data,uint8_t length); +BL_Err_Type IR_ReceiveNEC(uint8_t *address,uint8_t *command); +uint8_t IR_GetRxDataBitCount(void); +uint8_t IR_GetRxFIFOCount(void); +IR_RxMode_Type IR_LearnToInit(uint32_t *data,uint8_t *length); +BL_Err_Type IR_LearnToSend(IR_RxMode_Type mode,uint32_t *data,uint8_t length); +uint8_t IR_LearnToReceive(IR_RxMode_Type mode,uint32_t *data); +BL_Sts_Type IR_LEDInit(HBN_XCLK_CLK_Type clk,uint8_t div,uint8_t unit,uint8_t code0H,uint8_t code0L,uint8_t code1H, + uint8_t code1L); +BL_Sts_Type IR_LEDSend(uint32_t data); + +/*@} end of group IR_Public_Functions */ + +/*@} end of group IR */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_IR_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_it.h b/drivers/bl702_driver/std_drv/inc/bl702_it.h new file mode 100644 index 00000000..dccb1212 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_it.h @@ -0,0 +1,51 @@ +#ifndef __BL702_IT_H__ +#define __BL702_IT_H__ + +#include "bl702.h" +#include "bl_common.h" + +/** @addtogroup BL606_Peripheral_Driver + * @{ + */ + +/** @addtogroup COMMON + * @{ + */ + +/** @defgroup COMMON_Public_Types + * @{ + */ + +/*@} end of group COMMON_Public_Types */ + +/** @defgroup COMMON_Public_Constants + * @{ + */ + +/** @defgroup DRIVER_INT_PERIPH + * @{ + */ +#define IS_INT_PERIPH(INT_PERIPH) ((INT_PERIPH) < IRQn_LAST) + +/*@} end of group DRIVER_INT_PERIPH */ + +/** @defgroup DRIVER_INT_MASK + * @{ + */ +#define IS_BL_MASK_TYPE(type) (((type) == MASK) || ((type) == UNMASK)) + +/*@} end of group COMMON_Public_Constants */ + +/*@} end of group DRIVER_Public_Macro */ + +/** @defgroup DRIVER_Public_FunctionDeclaration + * @brief DRIVER functions declaration + * @{ + */ +void Interrupt_Handler_Register(IRQn_Type irq,pFunc interruptFun); + +/*@} end of group DRIVER_COMMON */ + +#endif /* __BL602_COMMON_H__ */ + + diff --git a/drivers/bl702_driver/std_drv/inc/bl702_kys.h b/drivers/bl702_driver/std_drv/inc/bl702_kys.h new file mode 100644 index 00000000..870adc44 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_kys.h @@ -0,0 +1,123 @@ +/** + ****************************************************************************** + * @file bl702_kys.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_KYS_H__ +#define __BL702_KYS_H__ + +#include "kys_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup KYS + * @{ + */ + +/** @defgroup KYS_Public_Types + * @{ + */ + +/** + * @brief KYS keycode type definition + */ +typedef enum { + KYS_KEYCODE_0, /*!< KYS keycode 0 */ + KYS_KEYCODE_1, /*!< KYS keycode 1 */ + KYS_KEYCODE_2, /*!< KYS keycode 2 */ + KYS_KEYCODE_3, /*!< KYS keycode 3 */ +}KYS_Keycode_Type; + +/** + * @brief KYS configuration structure type definition + */ +typedef struct { + uint8_t col; /*!< Col of keyboard,max:20 */ + uint8_t row; /*!< Row of keyboard,max:8 */ + uint8_t idleDuration; /*!< Idle duration between column scans */ + BL_Fun_Type ghostEn; /*!< Enable or disable ghost key event detection */ + BL_Fun_Type deglitchEn; /*!< Enable or disable deglitch function */ + uint8_t deglitchCnt; /*!< Deglitch count */ +}KYS_CFG_Type; + +/*@} end of group KYS_Public_Types */ + +/** @defgroup KYS_Public_Constants + * @{ + */ + +/** @defgroup KYS_KEYCODE_TYPE + * @{ + */ +#define IS_KYS_KEYCODE_TYPE(type) (((type) == KYS_KEYCODE_0) || \ + ((type) == KYS_KEYCODE_1) || \ + ((type) == KYS_KEYCODE_2) || \ + ((type) == KYS_KEYCODE_3)) + +/*@} end of group KYS_Public_Constants */ + +/** @defgroup KYS_Public_Macros + * @{ + */ + +/*@} end of group KYS_Public_Macros */ + +/** @defgroup KYS_Public_Functions + * @{ + */ + +/** + * @brief UART Functions + */ +#ifndef BFLB_USE_HAL_DRIVER +void KYS_IRQHandler(void); +#endif +BL_Err_Type KYS_Init(KYS_CFG_Type *kysCfg); +BL_Err_Type KYS_Enable(void); +BL_Err_Type KYS_Disable(void); +BL_Err_Type KYS_IntMask(BL_Mask_Type intMask); +BL_Err_Type KYS_IntClear(void); +BL_Err_Type KYS_Int_Callback_Install(intCallback_Type *cbFun); +uint8_t KYS_GetIntStatus(void); +uint8_t KYS_GetKeycode(KYS_Keycode_Type keycode,uint8_t *col,uint8_t *row); + +/*@} end of group KYS_Public_Functions */ + +/*@} end of group KYS */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_KYS_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_l1c.h b/drivers/bl702_driver/std_drv/inc/bl702_l1c.h new file mode 100644 index 00000000..6978b119 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_l1c.h @@ -0,0 +1,200 @@ +/** + ****************************************************************************** + * @file bl702_l1c.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_L1C_H__ +#define __BL702_L1C_H__ + +#include "l1c_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup L1C + * @{ + */ + +/** @defgroup L1C_Public_Types + * @{ + */ + +/** + * @brief L1C configuration structure type definition + */ +typedef struct { + BL_Fun_Type wrapDis; /*!< wrap disable */ + BL_Fun_Type bypassEn; /*!< bypass cache enable */ + uint8_t wayDis; /*!< Disable part of cache ways & used as ITCM */ + BL_Fun_Type cntEn; /*!< l1c count enable */ +}L1C_CACHE_Cfg_Type; + +/** + * @brief L1C BMX arb mode type definition + */ +typedef enum { + L1C_BMX_ARB_FIX, /*!< 0->fix */ + L1C_BMX_ARB_ROUND_ROBIN, /*!< 2->round-robin */ + L1C_BMX_ARB_RANDOM, /*!< 3->random */ +}L1C_BMX_ARB_Type; + +/** + * @brief L1C BMX configuration structure type definition + */ +typedef struct { + uint8_t timeoutEn; /*!< Bus timeout enable: detect slave no reaponse in 1024 cycles */ + BL_Fun_Type errEn; /*!< Bus error response enable */ + L1C_BMX_ARB_Type arbMod; /*!< 0->fix, 2->round-robin, 3->random */ +}L1C_BMX_Cfg_Type; + +/** + * @brief L1C BMX bus err type definition + */ +typedef enum { + L1C_BMX_BUS_ERR_TRUSTZONE_DECODE, /*!< Bus trustzone decode error */ + L1C_BMX_BUS_ERR_ADDR_DECODE, /*!< Bus addr decode error */ +}L1C_BMX_BUS_ERR_Type; + +/** + * @brief L1C BMX bus err interrupt type definition + */ +typedef enum { + L1C_BMX_ERR_INT_ERR, /*!< L1C BMX bus err interrupt */ + L1C_BMX_ERR_INT_ALL, /*!< L1C BMX bus err interrupt max num */ +}L1C_BMX_ERR_INT_Type; + +/** + * @brief L1C BMX time out interrupt type definition + */ +typedef enum { + L1C_BMX_TO_INT_TIMEOUT, /*!< L1C_BMX timeout interrupt */ + L1C_BMX_TO_INT_ALL, /*!< L1C_BMX timeout interrupt max num */ +}L1C_BMX_TO_INT_Type; + +/*@} end of group L1C_Public_Types */ + +/** @defgroup L1C_Public_Constants + * @{ + */ + +/** @defgroup L1C_BMX_ARB_TYPE + * @{ + */ +#define IS_L1C_BMX_ARB_TYPE(type) (((type) == L1C_BMX_ARB_FIX) || \ + ((type) == L1C_BMX_ARB_ROUND_ROBIN) || \ + ((type) == L1C_BMX_ARB_RANDOM)) + +/** @defgroup L1C_BMX_BUS_ERR_TYPE + * @{ + */ +#define IS_L1C_BMX_BUS_ERR_TYPE(type) (((type) == L1C_BMX_BUS_ERR_TRUSTZONE_DECODE) || \ + ((type) == L1C_BMX_BUS_ERR_ADDR_DECODE)) + +/** @defgroup L1C_BMX_ERR_INT_TYPE + * @{ + */ +#define IS_L1C_BMX_ERR_INT_TYPE(type) (((type) == L1C_BMX_ERR_INT_ERR) || \ + ((type) == L1C_BMX_ERR_INT_ALL)) + +/** @defgroup L1C_BMX_TO_INT_TYPE + * @{ + */ +#define IS_L1C_BMX_TO_INT_TYPE(type) (((type) == L1C_BMX_TO_INT_TIMEOUT) || \ + ((type) == L1C_BMX_TO_INT_ALL)) + +/*@} end of group L1C_Public_Constants */ + +/** @defgroup L1C_Public_Macros + * @{ + */ +#define L1C_WAY_DISABLE_NONE 0x00 +#define L1C_WAY_DISABLE_ONE 0x01 +#define L1C_WAY_DISABLE_TWO 0x03 +#define L1C_WAY_DISABLE_THREE 0x07 +#define L1C_WAY_DISABLE_ALL 0x0F +#define L1C_WAY_DISABLE_USER 0xFF +#if 1 +/*NP config address */ +#define L1C_CONF_REG (L1C_BASE+0x00) +#define L1C_HIT_CNT_LSB_REG (L1C_BASE+0x04) +#define L1C_HIT_CNT_MSB_REG (L1C_BASE+0x08) +#define L1C_MISS_CNT_REG (L1C_BASE+0x0C) +/* Get miss and hit count */ +#define L1C_Get_Miss_Cnt() BL702_REG_RD(L1C_MISS_CNT_REG) +#define L1C_Get_Hit_Cnt_LSB() BL702_REG_RD(L1C_HIT_CNT_LSB_REG) +#define L1C_Get_Hit_Cnt_MSB() BL702_REG_RD(L1C_HIT_CNT_MSB_REG) +#endif + +/*@} end of group L1C_Public_Macros */ + +/** @defgroup L1C_Public_Functions + * @{ + */ +/*----------*/ +#ifndef BFLB_USE_HAL_DRIVER +void L1C_BMX_ERR_IRQHandler(void); +void L1C_BMX_TO_IRQHandler(void); +#endif +/*----------*/ +BL_Err_Type L1C_Cache_Enable_Set(uint8_t wayDisable); +void L1C_Cache_Write_Set(BL_Fun_Type wtEn, BL_Fun_Type wbEn, BL_Fun_Type waEn); +BL_Err_Type L1C_Cache_Flush(uint8_t wayDisable); +void L1C_Cache_Hit_Count_Get(uint32_t *hitCountLow,uint32_t *hitCountHigh); +uint32_t L1C_Cache_Miss_Count_Get(void); +void L1C_Cache_Read_Disable(void); +/*----------*/ +BL_Err_Type L1C_Set_Wrap(BL_Fun_Type wrap); +BL_Err_Type L1C_Set_Way_Disable(uint8_t disableVal); +BL_Err_Type L1C_IROM_2T_Access_Set(uint8_t enable); +/*----------*/ +BL_Err_Type L1C_BMX_Init(L1C_BMX_Cfg_Type *l1cBmxCfg); +BL_Err_Type L1C_BMX_Addr_Monitor_Enable(void); +BL_Err_Type L1C_BMX_Addr_Monitor_Disable(void); +BL_Err_Type L1C_BMX_BusErrResponse_Enable(void); +BL_Err_Type L1C_BMX_BusErrResponse_Disable(void); +BL_Sts_Type L1C_BMX_Get_Status(L1C_BMX_BUS_ERR_Type errType); +uint32_t L1C_BMX_Get_Err_Addr(void); +BL_Err_Type L1C_BMX_ERR_INT_Callback_Install(L1C_BMX_ERR_INT_Type intType,intCallback_Type* cbFun); +BL_Err_Type L1C_BMX_TIMEOUT_INT_Callback_Install(L1C_BMX_TO_INT_Type intType, + intCallback_Type* cbFun); +/*----------*/; + +/*@} end of group L1C_Public_Functions */ + +/*@} end of group L1C */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_L1C_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_mjpeg.h b/drivers/bl702_driver/std_drv/inc/bl702_mjpeg.h new file mode 100644 index 00000000..3d4589ff --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_mjpeg.h @@ -0,0 +1,226 @@ +/** + ****************************************************************************** + * @file bl702_mjpeg.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_MJPEG_H__ +#define __BL702_MJPEG_H__ + +#include "mjpeg_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup MJPEG + * @{ + */ + +/** @defgroup MJPEG_Public_Types + * @{ + */ + +/** + * @brief MJPEG YUV format definition + */ +typedef enum { + MJPEG_YUV420, /*!< MJPEG YUV420 planar mode */ + MJPEG_YUV400, /*!< MJPEG YUV400 grey scale mode */ + MJPEG_YUV422_PLANAR, /*!< MJPEG YUV422 planar mode */ + MJPEG_YUV422_INTERLEAVE, /*!< MJPEG YUV422 interleave mode */ +}MJPEG_YUV_Mode_Type; + +/** + * @brief MJPEG burst type definition + */ +typedef enum { + MJPEG_BURST_SINGLE, /*!< MJPEG burst single */ + MJPEG_BURST_INCR4, /*!< MJPEG burst incr4 */ + MJPEG_BURST_INCR8, /*!< MJPEG burst incr8 */ + MJPEG_BURST_INCR16, /*!< MJPEG burst incr16 */ +}MJPEG_Burst_Type; + +/** + * @brief MJPEG swap mode block definition + */ +typedef enum { + MJPEG_BLOCK_0, /*!< Memory block 0 */ + MJPEG_BLOCK_1, /*!< Memory block 1 */ +}MJPEG_Swap_Block_Type; + +/** + * @brief MJPEG interrupt type definition + */ +typedef enum { + MJPEG_INT_NORMAL, /*!< MJPEG normal write interrupt */ + MJPEG_INT_CAM_OVERWRITE, /*!< MJPEG camera overwrite interrupt */ + MJPEG_INT_MEM_OVERWRITE, /*!< MJPEG memory overwrite interrupt */ + MJPEG_INT_FRAME_OVERWRITE, /*!< MJPEG frame overwrite interrupt */ + MJPEG_INT_BACK_IDLE, /*!< MJPEG back idle interrupt */ + MJPEG_INT_SWAP, /*!< MJPEG swap memory block interrupt */ + MJPEG_INT_ALL, /*!< MJPEG all interrupt type */ +}MJPEG_INT_Type; + +/** + * @brief MJPEG configuration strcut definition + */ +typedef struct { + MJPEG_Burst_Type burst; /*!< MJPEG burst type */ + uint8_t quality; /*!< MJPEG quantization selection, 1-75:Q table selection, others:Q100(lossless) */ + MJPEG_YUV_Mode_Type yuv; /*!< MJPEG control YUV mode */ + uint16_t waitCount; /*!< Cycle count in wait state, default value:0x400 */ + uint32_t bufferMjpeg; /*!< MJPEG buffer addr */ + uint32_t sizeMjpeg; /*!< MJPEG buffer size */ + uint32_t bufferCamYY; /*!< CAM buffer address of Y frame */ + uint32_t sizeCamYY; /*!< CAM buffer size of Y frame */ + uint32_t bufferCamUV; /*!< CAM buffer address of UV frame */ + uint32_t sizeCamUV; /*!< CAM buffer size of UV frame */ + uint16_t resolutionX; /*!< CAM RESOLUTION X */ + uint16_t resolutionY; /*!< CAM RESOLUTION Y */ + BL_Fun_Type bitOrderEnable; /*!< MJPEG bitstream order adjustment */ + BL_Fun_Type evenOrderEnable; /*!< Enable:U is even byte of UV frame and V is odd byte of UV frame */ + BL_Fun_Type swapModeEnable; /*!< Enable or disable write swap mode */ + BL_Fun_Type overStopEnable; /*!< Enable:if camera overwrite error occur,mjpeg will stop fetch data */ + BL_Fun_Type reflectDmy; /*!< UV dummy with relect */ + BL_Fun_Type verticalDmy; /*!< MJPEG last half vertical block with dummy data 0x80 */ + BL_Fun_Type horizationalDmy; /*!< MJPEG last half horizational block with dummy data 0x80 */ +}MJPEG_CFG_Type; + +/** + * @brief MJPEG packet configuration strcut definition + */ +typedef struct { + BL_Fun_Type packetEnable; /*!< Enable or disable packet mode */ + BL_Fun_Type endToTail; /*!< Enable or disable jpeg end jump to packet tail */ + uint16_t frameHead; /*!< Preserve head memory space for each frame */ + BL_Fun_Type frameTail; /*!< Enable:auto fill tail 0xFF and 0xD9 */ + uint16_t packetHead; /*!< Packet head byte count */ + uint16_t packetBody; /*!< Packet body byte count */ + uint16_t packetTail; /*!< Packet tail byte count */ +}MJPEG_Packet_Type; + +/** + * @brief MJPEG frame information strcut definition + */ +typedef struct { + uint8_t validFrames; /*!< Valid frames */ + uint32_t curFrameAddr; /*!< Current frame address */ + uint32_t curFrameBytes; /*!< Current frame bytes */ + uint8_t curFrameQ; /*!< Current frame Q mode */ + uint32_t status; /*!< MJPEG module status */ +}MJPEG_Frame_Info; + +/*@} end of group MJPEG_Public_Types */ + +/** @defgroup MJPEG_Public_Constants + * @{ + */ + +/** @defgroup MJPEG_YUV_MODE_TYPE + * @{ + */ +#define IS_MJPEG_YUV_MODE_TYPE(type) (((type) == MJPEG_YUV420) || \ + ((type) == MJPEG_YUV400) || \ + ((type) == MJPEG_YUV422_PLANAR) || \ + ((type) == MJPEG_YUV422_INTERLEAVE)) + +/** @defgroup MJPEG_BURST_TYPE + * @{ + */ +#define IS_MJPEG_BURST_TYPE(type) (((type) == MJPEG_BURST_SINGLE) || \ + ((type) == MJPEG_BURST_INCR4) || \ + ((type) == MJPEG_BURST_INCR8) || \ + ((type) == MJPEG_BURST_INCR16)) + +/** @defgroup MJPEG_SWAP_BLOCK_TYPE + * @{ + */ +#define IS_MJPEG_SWAP_BLOCK_TYPE(type) (((type) == MJPEG_BLOCK_0) || \ + ((type) == MJPEG_BLOCK_1)) + +/** @defgroup MJPEG_INT_TYPE + * @{ + */ +#define IS_MJPEG_INT_TYPE(type) (((type) == MJPEG_INT_NORMAL) || \ + ((type) == MJPEG_INT_CAM_OVERWRITE) || \ + ((type) == MJPEG_INT_MEM_OVERWRITE) || \ + ((type) == MJPEG_INT_FRAME_OVERWRITE) || \ + ((type) == MJPEG_INT_BACK_IDLE) || \ + ((type) == MJPEG_INT_SWAP) || \ + ((type) == MJPEG_INT_ALL)) + +/*@} end of group MJPEG_Public_Constants */ + +/** @defgroup MJPEG_Public_Macros + * @{ + */ + +/*@} end of group MJPEG_Public_Macros */ + +/** @defgroup MJPEG_Public_Functions + * @{ + */ +#ifndef BFLB_USE_HAL_DRIVER +void MJPEG_IRQHandler(void); +#endif +void MJPEG_Init(MJPEG_CFG_Type *cfg); +void MJPEG_Packet_Config(MJPEG_Packet_Type *cfg); +void MJPEG_Set_YUYV_Order_Interleave(uint8_t y0,uint8_t u0,uint8_t y1,uint8_t v0); +void MJPEG_Set_YUYV_Order_Planar(uint8_t yy,uint8_t uv); +void MJPEG_Deinit(void); +void MJPEG_Enable(void); +void MJPEG_Disable(void); +void MJPEG_SW_Enable(uint8_t count); +void MJPEG_SW_Run(void); +void MJPEG_Get_Frame_Info(MJPEG_Frame_Info *info); +uint8_t MJPEG_Get_Frame_Count(void); +void MJPEG_Pop_Frame(void); +void MJPEG_Current_Block_Clear(void); +MJPEG_Swap_Block_Type MJPEG_Get_Current_Block(void); +BL_Sts_Type MJPEG_Block_Is_Full(MJPEG_Swap_Block_Type block); +BL_Sts_Type MJPEG_Current_Block_Is_Start(void); +BL_Sts_Type MJPEG_Current_Block_Is_End(void); +uint32_t MJPEG_Get_Remain_Bit(void); +void MJPEG_Set_Frame_Threshold(uint8_t count); +void MJPEG_IntMask(MJPEG_INT_Type intType,BL_Mask_Type intMask); +void MJPEG_IntClr(MJPEG_INT_Type intType); +void MJPEG_Int_Callback_Install(MJPEG_INT_Type intType,intCallback_Type* cbFun); + +/*@} end of group MJPEG_Public_Functions */ + +/*@} end of group MJPEG */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_MJPEG_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_nf_cfg.h b/drivers/bl702_driver/std_drv/inc/bl702_nf_cfg.h new file mode 100644 index 00000000..026da4db --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_nf_cfg.h @@ -0,0 +1,49 @@ +/** + ****************************************************************************** + * @file bl702_nf_cfg.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_NF_CFG_H__ +#define __BL702_NF_CFG_H__ + +#include "string.h" +#include "bl702_nflash.h" +#include "bl702_sf_ctrl.h" + +/** @defgroup NF_CFG_Public_Functions + * @{ + */ +uint32_t NF_Cfg_Flash_Identify(uint8_t callFromFlash, uint32_t autoScan, uint32_t flashPinCfg, uint8_t restoreDefault, Nand_Flash_Cfg_Type *pFlashCfg); + + +#endif /* __BL702_NF_CFG_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_nflash.h b/drivers/bl702_driver/std_drv/inc/bl702_nflash.h new file mode 100644 index 00000000..b9cc9af5 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_nflash.h @@ -0,0 +1,196 @@ +/** + ****************************************************************************** + * @file bl702_nflah.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_NFLAH_H__ +#define __BL702_NFLAH_H__ + +#include "bl702_common.h" +#include "bl702_sf_ctrl.h" + +/** @addtogroup BL602_Peripheral_Driver + * @{ + */ + +/** @addtogroup SFLAH + * @{ + */ + +/** @defgroup SFLAH_Public_Types + * @{ + */ + +/** + * @brief Serial flash configuration structure type definition + */ +/*@} end of group SFLAH_Public_Types */ + +/** @defgroup SFLAH_Public_Constants + * @{ + */ + +/*@} end of group SFLAH_Public_Constants */ + +/** @defgroup SFLAH_Public_Macros + * @{ + */ +#define BFLB_NAND_FLASH_BLK_DATA_SIZE (128 * 1024) +#define BFLB_NAND_FLASH_BLK_TOTAL_SIZE ((128 + 4) * 1024) +#define BFLB_NAND_FLASH_PAGE_SIZE (2048) +#define BFLB_NAND_FLASH_PAGE_TOTAL_SIZE (2048 + 64) +#define BFLB_NAND_FLASH_PAGES_PER_BLOCK (64) +#define BFLB_NAND_FLASH_CMD_INVALID (0xff) +#define DISK_SECTOR_SIZE (512) +typedef unsigned char BYTE; +typedef unsigned long DWORD; +typedef unsigned int UINT; +typedef BYTE DSTATUS; +typedef enum { + RES_OK = 0, /* 0: Successful */ + RES_ERROR, /* 1: R/W Error */ + RES_WRPRT, /* 2: Write Protected */ + RES_NOTRDY, /* 3: Not Ready */ + RES_PARERR /* 4: Invalid Parameter */ +} DRESULT; + +typedef enum +{ + READ_DATA_FROM_CACHE = 0,//date:2048 bytes in each page + READ_SPARE_DATA_FROM_CACHE = 1,//spare date:64 bytes in each page +}BL_Nand_Flash_READ_DATE_TYPE; + +typedef struct { + uint8_t ioMode; /*!< Serail flash interface mode,bit0-3:IF mode,bit4:unwrap */ + uint8_t cReadSupport; /*!< Support continuous read mode,bit0:continuous read mode support,bit1:read mode cfg */ + uint8_t clkDelay; /*!< SPI clock delay,bit0-3:delay,bit4-6:pad delay */ + uint8_t clkInvert; /*!< SPI clock phase invert,bit0:clck invert,bit1:rx invert,bit2-4:pad delay,bit5-7:pad delay */ + uint8_t resetEnCmd; /*!< Flash enable reset command */ + uint8_t resetCmd; /*!< Flash reset command */ + uint8_t resetCreadCmd; /*!< Flash reset continuous read command */ + uint8_t resetCreadCmdSize; /*!< Flash reset continuous read command size */ + uint8_t jedecIdCmd; /*!< JEDEC ID command */ + uint8_t jedecIdCmdDmyClk; /*!< JEDEC ID command dummy clock */ + uint8_t qpiJedecIdCmd; /*!< QPI JEDEC ID comamnd */ + uint8_t qpiJedecIdCmdDmyClk; /*!< QPI JEDEC ID command dummy clock */ + uint8_t sectorSize; /*!< *1024bytes */ + uint8_t mid; /*!< Manufacturer ID */ + uint16_t pageSize; /*!< Page size */ + uint8_t chipEraseCmd; /*!< Chip erase cmd */ + uint8_t sectorEraseCmd; /*!< Sector erase command */ + uint8_t blk128EraseCmd; /*!< Block 128K erase command */ + uint8_t writeEnableCmd; /*!< Need before every erase or program */ + uint8_t programLoadCmd; /*!< Program Load cmd */ + uint8_t qprogramLoadCmd; /*!< Program Load cmd x4*/ + uint8_t pageProgramCmd; /*!< Page program cmd */ + uint8_t qpageProgramCmd; /*!< QIO page program cmd */ + uint8_t qppAddrMode; /*!< QIO page program address mode */ + uint8_t pageReadToCacheCmd; /*!< Page read comamnd */ + uint8_t getFeaturesCmd; /*!< GET FEATURES command to read the status */ + uint8_t setFeaturesCmd; /*!< SET FEATURES command to read the status */ + uint8_t readFromCacheCmd; /*!< Read from cache command */ + uint8_t fastReadCmd; /*!< Fast read command */ + uint8_t frDmyClk; /*!< Fast read command dummy clock */ + uint8_t qpiFastReadCmd; /*!< QPI fast read command */ + uint8_t qpiFrDmyClk; /*!< QPI fast read command dummy clock */ + uint8_t fastReadDoCmd; /*!< Fast read dual output command */ + uint8_t frDoDmyClk; /*!< Fast read dual output command dummy clock */ + uint8_t fastReadDioCmd; /*!< Fast read dual io comamnd */ + uint8_t frDioDmyClk; /*!< Fast read dual io command dummy clock */ + uint8_t fastReadQoCmd; /*!< Fast read quad output comamnd */ + uint8_t frQoDmyClk; /*!< Fast read quad output comamnd dummy clock */ + uint8_t fastReadQioCmd; /*!< Fast read quad io comamnd */ + uint8_t frQioDmyClk; /*!< Fast read quad io comamnd dummy clock */ + uint8_t qpiFastReadQioCmd; /*!< QPI fast read quad io comamnd */ + uint8_t qpiFrQioDmyClk; /*!< QPI fast read QIO dummy clock */ + uint8_t qpiPageProgramCmd; /*!< QPI program command */ + uint8_t writeVregEnableCmd; /*!< Enable write reg */ + uint8_t wrEnableIndex; /*!< Write enable register index */ + uint8_t qeIndex; /*!< Quad mode enable register index */ + uint8_t busyIndex; /*!< Busy status register index */ + uint8_t wrEnableBit; /*!< Write enable bit pos */ + uint8_t qeBit; /*!< Quad enable bit pos */ + uint8_t busyBit; /*!< Busy status bit pos */ + uint8_t wrEnableWriteRegLen; /*!< Register length of write enable */ + uint8_t wrEnableReadRegLen; /*!< Register length of write enable status */ + uint8_t qeWriteRegLen; /*!< Register length of contain quad enable */ + uint8_t qeReadRegLen; /*!< Register length of contain quad enable status */ + uint8_t releasePowerDown; /*!< Release power down command */ + uint8_t busyReadRegLen; /*!< Register length of contain busy status */ + uint8_t readRegCmd[4]; /*!< Read register command buffer */ + uint8_t writeRegCmd[4]; /*!< Write register command buffer */ + uint8_t enterQpi; /*!< Enter qpi command */ + uint8_t exitQpi; /*!< Exit qpi command */ + uint8_t cReadMode; /*!< Config data for continuous read mode */ + uint8_t cRExit; /*!< Config data for exit continuous read mode */ + uint8_t burstWrapCmd; /*!< Enable burst wrap command */ + uint8_t burstWrapCmdDmyClk; /*!< Enable burst wrap command dummy clock */ + uint8_t burstWrapDataMode; /*!< Data and address mode for this command */ + uint8_t burstWrapData; /*!< Data to enable burst wrap */ + uint8_t deBurstWrapCmd; /*!< Disable burst wrap command */ + uint8_t deBurstWrapCmdDmyClk; /*!< Disable burst wrap command dummy clock */ + uint8_t deBurstWrapDataMode; /*!< Data and address mode for this command */ + uint8_t deBurstWrapData; /*!< Data to disable burst wrap */ + uint16_t timeEsector; /*!< 4K erase time */ + uint16_t timeE132k; /*!< 132K erase time */ + uint16_t timePagePgm; /*!< Page program time */ + uint16_t timeCe; /*!< Chip erase time in ms */ + uint8_t pdDelay; /*!< Release power down command delay time for wake up */ + uint8_t qeData; /*!< QE set data */ +}__attribute__ ((packed)) Nand_Flash_Cfg_Type; + +//BL_Nand_Flash_Program_Bit_Err_Type ATTR_TCM_SECTION NFlash_Pass(uint8_t errorCode, BL_Nand_Flash_OP_Type opType); +BL_Err_Type NFlash_GetJedecId(Nand_Flash_Cfg_Type *flashCfg, uint8_t *data); +BL_Err_Type ATTR_TCM_SECTION NFlash_Erase(Nand_Flash_Cfg_Type *flashCfg, uint32_t startAddr, uint32_t endAddr); +BL_Err_Type ATTR_TCM_SECTION NFlash_Blk128_Erase(Nand_Flash_Cfg_Type *flashCfg, uint32_t blockNum); +BL_Err_Type ATTR_TCM_SECTION NFlash_Write_Enable(Nand_Flash_Cfg_Type *flashCfg); +BL_Err_Type ATTR_TCM_SECTION NFlash_Read(Nand_Flash_Cfg_Type *flashCfg, uint32_t addr, uint8_t *data, uint32_t len); +BL_Err_Type ATTR_TCM_SECTION NFlash_Program(Nand_Flash_Cfg_Type *flashCfg, uint32_t addr, const uint8_t *data, uint32_t len); +BL_Err_Type ATTR_TCM_SECTION NFlash_Page_Read_To_Cache(Nand_Flash_Cfg_Type *flashCfg, uint32_t absolutePageNum); +BL_Err_Type ATTR_TCM_SECTION NFlash_Get_Feature(Nand_Flash_Cfg_Type *flashCfg, uint8_t *data, uint8_t cmdType); +BL_Err_Type ATTR_TCM_SECTION NFlash_Read_From_Cache(Nand_Flash_Cfg_Type *flashCfg, uint32_t addr, uint8_t *data, uint32_t len, uint8_t readType); +BL_Err_Type ATTR_TCM_SECTION NFlash_Program_Execute(Nand_Flash_Cfg_Type *flashCfg, uint32_t addr); +BL_Err_Type ATTR_TCM_SECTION NFlash_Set_Feature(Nand_Flash_Cfg_Type *flashCfg); +BL_Err_Type ATTR_TCM_SECTION NFlash_Program_Load(Nand_Flash_Cfg_Type *flashCfg, uint32_t addr, const uint8_t *data, uint32_t len); +BL_Err_Type ATTR_TCM_SECTION NFlash_Check_Bad_Block(Nand_Flash_Cfg_Type *flashCfg, uint32_t blockNum, uint8_t *data, uint32_t len); +DRESULT ff_disk_read(BYTE pdrv, BYTE *buff, DWORD sector, UINT count); +DRESULT ff_disk_write(BYTE pdrv, const BYTE *buff, DWORD sector, UINT count); +DSTATUS ff_disk_initialize (BYTE pdrv); + +/*@} end of group SFLAH_Public_Functions */ + +/*@} end of group SFLAH */ + +/*@} end of group BL602_Peripheral_Driver */ + +#endif /* __BL602_SFLAH_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_pds.h b/drivers/bl702_driver/std_drv/inc/bl702_pds.h new file mode 100644 index 00000000..6932b806 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_pds.h @@ -0,0 +1,785 @@ +/** + ****************************************************************************** + * @file bl702_pds.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_PDS_H__ +#define __BL702_PDS_H__ + +#include "pds_reg.h" +#include "bl702_ef_ctrl.h" +#include "bl702_aon.h" +#include "bl702_hbn.h" +#include "bl702_sflash.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup PDS + * @{ + */ + +/** @defgroup PDS_Public_Types + * @{ + */ + +/** + * @brief PDS LDO level type definition + */ +typedef enum { + PDS_LDO_LEVEL_0P60V=0, /*!< PDS LDO voltage 0.60V */ + PDS_LDO_LEVEL_0P65V=1, /*!< PDS LDO voltage 0.65V */ + PDS_LDO_LEVEL_0P70V=2, /*!< PDS LDO voltage 0.70V */ + PDS_LDO_LEVEL_0P75V=3, /*!< PDS LDO voltage 0.75V */ + PDS_LDO_LEVEL_0P80V=4, /*!< PDS LDO voltage 0.80V */ + PDS_LDO_LEVEL_0P85V=5, /*!< PDS LDO voltage 0.85V */ + PDS_LDO_LEVEL_0P90V=6, /*!< PDS LDO voltage 0.90V */ + PDS_LDO_LEVEL_0P95V=7, /*!< PDS LDO voltage 0.95V */ + PDS_LDO_LEVEL_1P00V=8, /*!< PDS LDO voltage 1.00V */ + PDS_LDO_LEVEL_1P05V=9, /*!< PDS LDO voltage 1.05V */ + PDS_LDO_LEVEL_1P10V=10, /*!< PDS LDO voltage 1.10V */ + PDS_LDO_LEVEL_1P15V=11, /*!< PDS LDO voltage 1.15V */ + PDS_LDO_LEVEL_1P20V=12, /*!< PDS LDO voltage 1.20V */ + PDS_LDO_LEVEL_1P25V=13, /*!< PDS LDO voltage 1.25V */ + PDS_LDO_LEVEL_1P30V=14, /*!< PDS LDO voltage 1.30V */ + PDS_LDO_LEVEL_1P35V=15, /*!< PDS LDO voltage 1.35V */ +}PDS_LDO_LEVEL_Type; + +/** + * @brief PDS RAM configuration type definition + */ +typedef struct { + uint32_t PDS_RAM_CFG_0KB_16KB_CPU_RAM_RET1N : 1; /*!< [0] 0~16KB cpu_ram RET1N */ + uint32_t PDS_RAM_CFG_16KB_32KB_CPU_RAM_RET1N : 1; /*!< [1] 16~32KB cpu_ram RET1N */ + uint32_t PDS_RAM_CFG_32KB_48KB_CPU_RAM_RET1N : 1; /*!< [2] 32~48KB cpu_ram RET1N */ + uint32_t PDS_RAM_CFG_48KB_64KB_CPU_RAM_RET1N : 1; /*!< [3] 48~64KB cpu_ram RET1N */ + uint32_t PDS_RAM_CFG_0KB_16KB_CPU_RAM_RET2N : 1; /*!< [4] 0~16KB cpu_ram RET2N */ + uint32_t PDS_RAM_CFG_16KB_32KB_CPU_RAM_RET2N : 1; /*!< [5] 16~32KB cpu_ram RET2N */ + uint32_t PDS_RAM_CFG_32KB_48KB_CPU_RAM_RET2N : 1; /*!< [6] 32~48KB cpu_ram RET2N */ + uint32_t PDS_RAM_CFG_48KB_64KB_CPU_RAM_RET2N : 1; /*!< [7] 48~64KB cpu_ram RET2N */ + uint32_t PDS_RAM_CFG_0KB_16KB_CPU_RAM_PGEN : 1; /*!< [8] 0~16KB cpu_ram PGEN */ + uint32_t PDS_RAM_CFG_16KB_32KB_CPU_RAM_PGEN : 1; /*!< [9] 16~32KB cpu_ram PGEN */ + uint32_t PDS_RAM_CFG_32KB_48KB_CPU_RAM_PGEN : 1; /*!< [10] 32~48KB cpu_ram PGEN */ + uint32_t PDS_RAM_CFG_48KB_64KB_CPU_RAM_PGEN : 1; /*!< [11] 48~64KB cpu_ram PGEN */ + uint32_t PDS_RAM_CFG_RSV : 20; /*!< [31:12]reserve */ +}PDS_RAM_CFG_Type; + +/** + * @brief PDS PAD pin configuration type definition + */ +typedef enum { + PDS_PAD_PIN_GPIO_17, /*!< PAD GPIO 17 */ + PDS_PAD_PIN_GPIO_18, /*!< PAD GPIO 18 */ + PDS_PAD_PIN_GPIO_19, /*!< PAD GPIO 19 */ + PDS_PAD_PIN_GPIO_20, /*!< PAD GPIO 20 */ + PDS_PAD_PIN_GPIO_21, /*!< PAD GPIO 21 */ + PDS_PAD_PIN_GPIO_22, /*!< PAD GPIO 22 */ + PDS_PAD_PIN_GPIO_23, /*!< PAD GPIO 23 */ + PDS_PAD_PIN_GPIO_24, /*!< PAD GPIO 24 */ + PDS_PAD_PIN_GPIO_25, /*!< PAD GPIO 25 */ + PDS_PAD_PIN_GPIO_26, /*!< PAD GPIO 26 */ + PDS_PAD_PIN_GPIO_27, /*!< PAD GPIO 27 */ + PDS_PAD_PIN_GPIO_28, /*!< PAD GPIO 28 */ +}PDS_PAD_PIN_Type; + +/** + * @brief PDS PAD configuration type definition + */ +typedef enum { + PDS_PAD_CFG_PULL_NONE, /*!< no PD/PU/IE on PAD */ + PDS_PAD_CFG_PULL_DOWN, /*!< Pulldown PAD */ + PDS_PAD_CFG_PULL_UP, /*!< Pullup PAD */ + PDS_PAD_CFG_ACTIVE_IE, /*!< Active IE */ +}PDS_PAD_CFG_Type; + +/** + * @brief PDS configuration type definition + */ +typedef struct { + uint32_t pdsStart : 1; /*!< [0]PDS Start */ + uint32_t sleepForever : 1; /*!< [1]PDS sleep forever */ + uint32_t xtalForceOff : 1; /*!< [2]Power off xtal force */ + uint32_t saveWifiState : 1; /*!< [3]Save WIFI State Before Enter PDS */ + uint32_t dcdc18Off : 1; /*!< [4]power down dcdc18 during PDS */ + uint32_t bgSysOff : 1; /*!< [5]power down bg_sys during PDS */ + uint32_t gpioIePuPd : 1; /*!< [6]allow PDS Control the GPIO IE/PU/PD at Sleep Mode */ + uint32_t puFlash : 1; /*!< [7]turn off Flash Power During PDS */ + uint32_t clkOff : 1; /*!< [8]gate clock during PDS (each pwr domain has its own control) */ + uint32_t memStby : 1; /*!< [9]mem_stby during PDS (each power domain can has its own control) */ + uint32_t swPuFlash : 1; /*!< [10]SW Turn on Flash */ + uint32_t isolation : 1; /*!< [11]Isolation during PDS (each power domain can has its own control) */ + uint32_t waitXtalRdy : 1; /*!< [12]wait XTAL Ready during before PDS Interrupt */ + uint32_t pdsPwrOff : 1; /*!< [13]Power off during PDS (each power domain can has its own control) */ + uint32_t xtalOff : 1; /*!< [14]xtal power down during PDS */ + uint32_t socEnbForceOn : 1; /*!< [15]pds_soc_enb always active */ + uint32_t pdsRstSocEn : 1; /*!< [16]pds_rst controlled by PDS */ + uint32_t pdsRC32mOn : 1; /*!< [17]RC32M always on or RC32M on/off controlled by PDS state */ + uint32_t pdsLdoVselEn : 1; /*!< [18]PDS "SLEEP" control LDO voltage enable */ + uint32_t pdsRamLowPowerWithClkEn : 1; /*!< [19]Control SRAM Low Power with CLK (Sync) */ + uint32_t reserved20 : 1; /*!< [20]Reserved */ + uint32_t cpu0WfiMask : 1; /*!< [21]pds start condition mask np_wfi */ + uint32_t ldo11Off : 1; /*!< [22]power down ldo11 during PDS */ + uint32_t pdsForceRamClkEn : 1; /*!< [23]Force SRAM CLK Enable */ + uint32_t pdsLdoVol : 4; /*!< [27:24]LDO voltage value in PDS mode */ + uint32_t pdsCtlRfSel : 2; /*!< [29:28]select the way RF controlled by PDS */ + uint32_t pdsCtlPllSel : 2; /*!< [31:30]select the way PLL controlled by PDS */ +}PDS_CFG_Type; + +/** + * @brief PDS configuration type definition + */ +typedef struct { + uint32_t pdsStart : 1; /*!< [0]PDS Start */ + uint32_t sleepForever : 1; /*!< [1]PDS sleep forever */ + uint32_t xtalForceOff : 1; /*!< [2]Power off xtal force */ + uint32_t saveWifiState : 1; /*!< [3]Save WIFI State Before Enter PDS */ + uint32_t dcdc18Off : 1; /*!< [4]power down dcdc18 during PDS */ + uint32_t bgSysOff : 1; /*!< [5]power down bg_sys during PDS */ + uint32_t gpioIePuPd : 1; /*!< [6]allow PDS Control the GPIO IE/PU/PD at Sleep Mode */ + uint32_t puFlash : 1; /*!< [7]turn off Flash Power During PDS */ + uint32_t clkOff : 1; /*!< [8]gate clock during PDS (each pwr domain has its own control) */ + uint32_t memStby : 1; /*!< [9]mem_stby during PDS (each power domain can has its own control) */ + uint32_t swPuFlash : 1; /*!< [10]SW Turn on Flash */ + uint32_t isolation : 1; /*!< [11]Isolation during PDS (each power domain can has its own control) */ + uint32_t waitXtalRdy : 1; /*!< [12]wait XTAL Ready during before PDS Interrupt */ + uint32_t pdsPwrOff : 1; /*!< [13]Power off during PDS (each power domain can has its own control) */ + uint32_t xtalOff : 1; /*!< [14]xtal power down during PDS */ + uint32_t socEnbForceOn : 1; /*!< [15]pds_soc_enb always active */ + uint32_t pdsRstSocEn : 1; /*!< [16]pds_rst controlled by PDS */ + uint32_t pdsRC32mOn : 1; /*!< [17]RC32M always on or RC32M on/off controlled by PDS state */ + uint32_t pdsLdoVselEn : 1; /*!< [18]PDS "SLEEP" control LDO voltage enable */ + uint32_t pdsRamLowPowerWithClkEn : 1; /*!< [19]Control SRAM Low Power with CLK (Sync) */ + uint32_t reserved20 : 1; /*!< [20]Reserved */ + uint32_t cpu0WfiMask : 1; /*!< [21]pds start condition mask np_wfi */ + uint32_t ldo11Off : 1; /*!< [22]power down ldo11 during PDS */ + uint32_t pdsForceRamClkEn : 1; /*!< [23]Force SRAM CLK Enable */ + uint32_t pdsLdoVol : 4; /*!< [27:24]LDO voltage value in PDS mode */ + uint32_t pdsCtlRfSel : 2; /*!< [29:28]select the way RF controlled by PDS */ + uint32_t pdsCtlPllSel : 2; /*!< [31:30]select the way PLL controlled by PDS */ +}PDS_CTL_Type; + +/** + * @brief PDS force configuration type definition + */ +typedef struct { + uint32_t forceCpuPwrOff : 1; /*!< [0]manual force NP power off */ + uint32_t rsv1 : 1; /*!< [1]reserve */ + uint32_t forceBzPwrOff : 1; /*!< [2]manual force BZ power off */ + uint32_t forceUsbPwrOff : 1; /*!< [3]manual force USB power off */ + uint32_t forceCpuIsoEn : 1; /*!< [4]manual force NP isolation */ + uint32_t rsv5 : 1; /*!< [5]reserve */ + uint32_t forceBzIsoEn : 1; /*!< [6]manual force BZ isolation */ + uint32_t forceUsbIsoEn : 1; /*!< [7]manual force USB isolation */ + uint32_t forceCpuPdsRst : 1; /*!< [8]manual force NP pds reset */ + uint32_t rsv9 : 1; /*!< [9]reserve */ + uint32_t forceBzPdsRst : 1; /*!< [10]manual force BZ pds reset */ + uint32_t forceUsbPdsRst : 1; /*!< [11]manual force USB pds reset */ + uint32_t forceCpuMemStby : 1; /*!< [12]manual force NP memory sleep */ + uint32_t rsv13 : 1; /*!< [13]reserve */ + uint32_t forceBzMemStby : 1; /*!< [14]manual force BZ memory sleep */ + uint32_t forceUsbMemStby : 1; /*!< [15]manual force USB memory sleep */ + uint32_t forceCpuGateClk : 1; /*!< [16]manual force NP clock gated */ + uint32_t rsv17 : 1; /*!< [17]reserve */ + uint32_t forceBzGateClk : 1; /*!< [18]manual force BZ clock gated */ + uint32_t forceUsbGateClk : 1; /*!< [19]manual force USB clock gated */ + uint32_t rsv20_31 : 12; /*!< [31:20]reserve */ +}PDS_CTL2_Type; + +/** + * @brief PDS force configuration type definition + */ +typedef struct { + uint32_t rsv0 : 1; /*!< [0]reserve */ + uint32_t forceMiscPwrOff : 1; /*!< [1]manual force MISC pwr_off */ + uint32_t forceBlePwrOff : 1; /*!< [2]manual force BZ_BLE pwr_off */ + uint32_t rsv3_4 : 2; /*!< [4:3]reserve */ + uint32_t forceBleIsoEn : 1; /*!< [5]manual force BZ_BLE iso_en */ + uint32_t rsv6 : 1; /*!< [6]reserve */ + uint32_t forceMiscPdsRst : 1; /*!< [7]manual force MISC pds_rst */ + uint32_t forceBlePdsRst : 1; /*!< [8]manual force BZ_BLE pds_rst */ + uint32_t rsv9 : 1; /*!< [9]reserve */ + uint32_t forceMiscMemStby : 1; /*!< [10]manual force MISC mem_stby */ + uint32_t forceBleMemStby : 1; /*!< [11]manual force BZ_BLE mem_stby */ + uint32_t rsv12 : 1; /*!< [12]reserve */ + uint32_t forceMiscGateClk : 1; /*!< [13]manual force MISC gate_clk */ + uint32_t forceBleGateClk : 1; /*!< [14]manual force BZ_BLE gate_clk */ + uint32_t rsv15_23 : 9; /*!< [23:15]reserve */ + uint32_t CpuIsoEn : 1; /*!< [24]make NP isolated at PDS Sleep state */ + uint32_t rsv25_26 : 2; /*!< [26:25]reserve */ + uint32_t BzIsoEn : 1; /*!< [27]make BZ isolated at PDS Sleep state */ + uint32_t BleIsoEn : 1; /*!< [28]make Ble isolated at PDS Sleep state */ + uint32_t UsbIsoEn : 1; /*!< [29]make USB isolated at PDS Sleep state */ + uint32_t MiscIsoEn : 1; /*!< [30]make misc isolated at PDS Sleep state */ + uint32_t rsv31 : 1; /*!< [31]reserve */ +}PDS_CTL3_Type; + +/** + * @brief PDS force configuration type definition + */ +typedef struct { + uint32_t cpuPwrOff : 1; /*!< [0] */ + uint32_t cpuRst : 1; /*!< [1] */ + uint32_t cpuMemStby : 1; /*!< [2] */ + uint32_t cpuGateClk : 1; /*!< [3] */ + uint32_t rsv4_11 : 8; /*!< [11:4]reserve */ + uint32_t BzPwrOff : 1; /*!< [12] */ + uint32_t BzRst : 1; /*!< [13] */ + uint32_t BzMemStby : 1; /*!< [14] */ + uint32_t BzGateClk : 1; /*!< [15] */ + uint32_t BlePwrOff : 1; /*!< [16] */ + uint32_t BleRst : 1; /*!< [17] */ + uint32_t BleMemStby : 1; /*!< [18] */ + uint32_t BleGateClk : 1; /*!< [19] */ + uint32_t UsbPwrOff : 1; /*!< [20] */ + uint32_t UsbRst : 1; /*!< [21] */ + uint32_t UsbMemStby : 1; /*!< [22] */ + uint32_t UsbGateClk : 1; /*!< [23] */ + uint32_t MiscPwrOff : 1; /*!< [24] */ + uint32_t MiscRst : 1; /*!< [25] */ + uint32_t MiscMemStby : 1; /*!< [26] */ + uint32_t MiscGateClk : 1; /*!< [27] */ + uint32_t rsv28_29 : 2; /*!< [29:28]reserve */ + uint32_t MiscAnaPwrOff : 1; /*!< [30] */ + uint32_t MiscDigPwrOff : 1; /*!< [31] */ +}PDS_CTL4_Type; + +/** + * @brief PDS default level configuration type definition + */ +typedef struct { + PDS_CTL_Type pdsCtl; /*!< PDS_CTL configuration */ + PDS_CTL2_Type pdsCtl2; /*!< PDS_CTL2 configuration */ + PDS_CTL3_Type pdsCtl3; /*!< PDS_CTL3 configuration */ + PDS_CTL4_Type pdsCtl4; /*!< PDS_CTL4 configuration */ +}PDS_DEFAULT_LV_CFG_Type; + +/** + * @brief PDS interrupt type definition + */ +typedef enum { + PDS_INT_WAKEUP=0, /*!< PDS wakeup interrupt(assert bit while wakeup, include PDS_Timer/...) */ + PDS_INT_RF_DONE, /*!< PDS RF done interrupt */ + PDS_INT_PLL_DONE, /*!< PDS PLL done interrupt */ + PDS_INT_PDS_SLEEP_CNT, /*!< wakeup trigger by pds_sleep_cnt=0 */ + PDS_INT_HBN_IRQ_OUT0, /*!< wakeup trigger by hbn_irq_out[0] */ + PDS_INT_HBN_IRQ_OUT1, /*!< wakeup trigger by hbn_irq_out[1] */ + PDS_INT_GPIO_IRQ, /*!< wakeup trigger by gpio_irq */ + PDS_INT_IRRX, /*!< wakeup trigger by irrx_int */ + PDS_INT_BLE_SLP_IRQ, /*!< wakeup trigger by ble_slp_irq */ + PDS_INT_USB_WKUP, /*!< wakeup trigger by usb_wkup */ + PDS_INT_KYS_QDEC, /*!< wakeup trigger by kys_int or qdec */ + PDS_INT_MAX, /*!< PDS int max number */ +}PDS_INT_Type; + +/** + * @brief PDS vddcore GPIO interrupt type definition + */ +typedef enum { + PDS_VDDCORE_GPIO_SRC_GPIO_0, /*!< PDS VDDCORE GPIO0 as PDS interrupt source */ + PDS_VDDCORE_GPIO_SRC_GPIO_1, /*!< PDS VDDCORE GPIO1 as PDS interrupt source */ + PDS_VDDCORE_GPIO_SRC_GPIO_2, /*!< PDS VDDCORE GPIO2 as PDS interrupt source */ + PDS_VDDCORE_GPIO_SRC_GPIO_3, /*!< PDS VDDCORE GPIO3 as PDS interrupt source */ + PDS_VDDCORE_GPIO_SRC_GPIO_4, /*!< PDS VDDCORE GPIO4 as PDS interrupt source */ + PDS_VDDCORE_GPIO_SRC_GPIO_5, /*!< PDS VDDCORE GPIO5 as PDS interrupt source */ + PDS_VDDCORE_GPIO_SRC_GPIO_6, /*!< PDS VDDCORE GPIO6 as PDS interrupt source */ + PDS_VDDCORE_GPIO_SRC_GPIO_7, /*!< PDS VDDCORE GPIO7 as PDS interrupt source */ +}PDS_VDDCORE_GPIO_SRC_Type; + +/** + * @brief PDS reset event type definition + */ +typedef enum { + PDS_RST_EVENT_BUS_RST, /*!< hreset_n (Bus Reset) */ + PDS_RST_EVENT_HBN_PWR_ON_RST, /*!< pwr_rst_n (hbn power on reset) */ + PDS_RST_EVENT_PDS_RST, /*!< pds_rst_n (pds reset) */ + PDS_RST_EVENT_MAX, /*!< PDS rst event max number */ +}PDS_RST_EVENT_Type; + +/** + * @brief PDS PLL status type definition + */ +typedef enum { + PDS_PLL_STS_OFF=0, /*!< 2'b00 */ + PDS_PLL_STS_SFREG=1, /*!< 2'b01 */ + PDS_PLL_STS_PU=2, /*!< 2'b10 */ + PDS_PLL_STS_RDY=3, /*!< 2'b11 */ +}PDS_PLL_STS_Type; + +/** + * @brief PDS RF status type definition + */ +typedef enum { + PDS_RF_STS_OFF=0, /*!< 4'b0000 */ + PDS_RF_STS_PU_MBG=1, /*!< 4'b0001 */ + PDS_RF_STS_PU_LDO15RF=3, /*!< 4'b0011 */ + PDS_RF_STS_PU_SFREG=7, /*!< 4'b0111 */ + PDS_RF_STS_BZ_EN_AON=15, /*!< 4'b1111 */ +}PDS_RF_STS_Type; + +/** + * @brief PDS status type definition + */ +typedef enum { + PDS_STS_IDLE=0, /*!< 4'b0000 */ + PDS_STS_ECG=8, /*!< 4'b1000 */ + PDS_STS_ERST=12, /*!< 4'b1100 */ + PDS_STS_EISO=15, /*!< 4'b1111 */ + PDS_STS_POFF=7, /*!< 4'b0111 */ + PDS_STS_PRE_BGON=3, /*!< 4'b0011 */ + PDS_STS_PRE_BGON1=1, /*!< 4'b0001 */ + PDS_STS_BGON=5, /*!< 4'b0101 */ + PDS_STS_CLK_SW_32M=4, /*!< 4'b0100 */ + PDS_STS_PON_DCDC=6, /*!< 4'b0110 */ + PDS_STS_PON_LDO11_MISC=14, /*!< 4'b1110 */ + PDS_STS_PON=10, /*!< 4'b1010 */ + PDS_STS_DISO=2, /*!< 4'b0010 */ + PDS_STS_DCG=13, /*!< 4'b1101 */ + PDS_STS_DRST=11, /*!< 4'b1011 */ + PDS_STS_WAIT_EFUSE=9, /*!< 4'b1001 */ +}PDS_STS_Type; + +/** + * @brief PLL XTAL type definition + */ +typedef enum { + PDS_PLL_XTAL_NONE, /*!< XTAL is none */ + PDS_PLL_XTAL_32M, /*!< XTAL is 32M */ + PDS_PLL_XTAL_RC32M, /*!< XTAL is RC32M */ +}PDS_PLL_XTAL_Type; + +/** + * @brief PLL output clock type definition + */ +typedef enum { + PDS_PLL_CLK_480M, /*!< PLL output clock:480M */ + PDS_PLL_CLK_240M, /*!< PLL output clock:240M */ + PDS_PLL_CLK_192M, /*!< PLL output clock:192M */ + PDS_PLL_CLK_160M, /*!< PLL output clock:160M */ + PDS_PLL_CLK_120M, /*!< PLL output clock:120M */ + PDS_PLL_CLK_96M, /*!< PLL output clock:96M */ + PDS_PLL_CLK_80M, /*!< PLL output clock:80M */ + PDS_PLL_CLK_48M, /*!< PLL output clock:48M */ + PDS_PLL_CLK_32M, /*!< PLL output clock:32M */ +}PDS_PLL_CLK_Type; + +/** + * @brief PDS level 0-7 mode HBN GPIO interrupt trigger type definition + */ +typedef enum { + PDS_AON_GPIO_INT_TRIGGER_SYNC_FALLING_EDGE, /*!< PDS level 0-7 mode HBN GPIO INT trigger type: sync falling edge trigger */ + PDS_AON_GPIO_INT_TRIGGER_SYNC_RISING_EDGE, /*!< PDS level 0-7 mode HBN GPIO INT trigger type: sync rising edge trigger */ + PDS_AON_GPIO_INT_TRIGGER_SYNC_LOW_LEVEL, /*!< PDS level 0-7 mode HBN GPIO INT trigger type: sync low level trigger */ + PDS_AON_GPIO_INT_TRIGGER_SYNC_HIGH_LEVEL, /*!< PDS level 0-7 mode HBN GPIO INT trigger type: sync high level trigger */ + PDS_AON_GPIO_INT_TRIGGER_ASYNC_FALLING_EDGE, /*!< PDS level 0-7 mode HBN GPIO INT trigger type: async falling edge trigger */ + PDS_AON_GPIO_INT_TRIGGER_ASYNC_RISING_EDGE, /*!< PDS level 0-7 mode HBN GPIO INT trigger type: async rising edge trigger */ + PDS_AON_GPIO_INT_TRIGGER_ASYNC_LOW_LEVEL, /*!< PDS level 0-7 mode HBN GPIO INT trigger type: async low level trigger */ + PDS_AON_GPIO_INT_TRIGGER_ASYNC_HIGH_LEVEL, /*!< PDS level 0-7 mode HBN GPIO INT trigger type: async high level trigger */ +}PDS_AON_GPIO_INT_Trigger_Type; + +/** + * @brief PDS APP configuration type definition + */ +typedef struct { + uint8_t pdsLevel; /*!< PDS level */ + uint8_t turnOffXtal32m; /*!< Wheather turn off XTAL32M */ + uint8_t turnOffDll; /*!< Wheather turn off DLL */ + uint8_t turnOffRF; /*!< Wheather turn off RF */ + uint8_t useXtal32k; /*!< Wheather use xtal 32K as 32K clock source,otherwise use rc32k */ + uint8_t pdsAonGpioWakeupSrc; /*!< PDS level 0-7,31 mode aon GPIO Wakeup source(HBN wakeup pin) */ + PDS_AON_GPIO_INT_Trigger_Type pdsAonGpioTrigType; /*!< PDS level 0-7,31 mode aon GPIO Triger type(HBN wakeup pin) */ + uint8_t powerDownFlash; /*!< Whether power down flash */ + uint8_t pdsHoldGpio; /*!< Whether pds hold gpio level */ + uint8_t turnOffFlashPad; /*!< Whether turn off flash pad(GPIO17-GPIO22, GPIO23-GPIO28) */ + uint8_t flashPinCfg; /*!< 0 ext flash 23-28, 1 internal flash 23-28, 2 internal flash 23-28, 3 ext flash 17-22 */ + uint8_t turnoffPLL; /*!< Whether trun off PLL */ + uint8_t xtalType; /*!< XTal type, used when user choose turn off PLL, PDS will turn on when exit PDS mode */ + uint8_t flashContRead; /*!< Whether enable flash continue read */ + uint32_t sleepTime; /*!< PDS sleep time */ + SPI_Flash_Cfg_Type *flashCfg; /*!< Flash config pointer, used when power down flash */ + HBN_LDO_LEVEL_Type ldoLevel; /*!< LDO level */ + void (*preCbFun)(void); /*!< Pre callback function */ + void (*postCbFun)(void); /*!< Post callback function */ +}PDS_APP_CFG_Type; + +/** + * @brief PDS LDO voltage type definition + */ +typedef enum { + PDS_LDO_VOLTAGE_0P60V, /*!< PDS LDO voltage 0.60V */ + PDS_LDO_VOLTAGE_0P65V, /*!< PDS LDO voltage 0.65V */ + PDS_LDO_VOLTAGE_0P70V, /*!< PDS LDO voltage 0.70V */ + PDS_LDO_VOLTAGE_0P75V, /*!< PDS LDO voltage 0.75V */ + PDS_LDO_VOLTAGE_0P80V, /*!< PDS LDO voltage 0.80V */ + PDS_LDO_VOLTAGE_0P85V, /*!< PDS LDO voltage 0.85V */ + PDS_LDO_VOLTAGE_0P90V, /*!< PDS LDO voltage 0.9V */ + PDS_LDO_VOLTAGE_0P95V, /*!< PDS LDO voltage 0.95V */ + PDS_LDO_VOLTAGE_1P00V, /*!< PDS LDO voltage 1.0V */ + PDS_LDO_VOLTAGE_1P05V, /*!< PDS LDO voltage 1.05V */ + PDS_LDO_VOLTAGE_1P10V, /*!< PDS LDO voltage 1.1V */ + PDS_LDO_VOLTAGE_1P15V, /*!< PDS LDO voltage 1.15V */ + PDS_LDO_VOLTAGE_1P20V, /*!< PDS LDO voltage 1.2V */ + PDS_LDO_VOLTAGE_1P25V, /*!< PDS LDO voltage 1.25V */ + PDS_LDO_VOLTAGE_1P30V, /*!< PDS LDO voltage 1.3V */ + PDS_LDO_VOLTAGE_1P35V, /*!< PDS LDO voltage 1.35V */ +}PDS_LDO_VOLTAGE_Type; + +/** + * @brief PDS auto power down configuration type definition + */ +typedef struct { + BL_Fun_Type mbgPower; /*!< PDS auto [31] MBG power */ + BL_Fun_Type ldo18rfPower; /*!< PDS auto [30] LDO18RF power */ + BL_Fun_Type sfregPower; /*!< PDS auto [29] SF_REG power */ + BL_Fun_Type pllPower; /*!< PDS auto [28] PLL power */ + BL_Fun_Type cpu0Power; /*!< PDS auto [19] NP power */ + BL_Fun_Type rc32mPower; /*!< PDS auto [17] RC32M power */ + BL_Fun_Type xtalPower; /*!< PDS auto [14] XTAL power */ + BL_Fun_Type allPower; /*!< PDS auto [13] all power */ + BL_Fun_Type isoPower; /*!< PDS auto [11] ISO power */ + BL_Fun_Type bzPower; /*!< PDS auto [10] BZ power */ + BL_Fun_Type sramDisStanby; /*!< PDS auto [9] SRAM memory stanby disable */ + BL_Fun_Type cgPower; /*!< PDS auto [8] CG power */ + BL_Fun_Type cpu1Power; /*!< PDS auto [7] AP power */ + BL_Fun_Type usbPower; /*!< PDS auto [3] USB power */ +}PDS_AUTO_POWER_DOWN_CFG_Type; + +/** + * @brief PDS auto configuration type definition + */ +typedef struct { + PDS_LDO_VOLTAGE_Type vddcoreVol; /*!< PDS auto [27:24] VDDCORE voltage, reference 0x4001F80C[27:24], recommended 0xA */ + BL_Fun_Type vddcoreVolEn; /*!< PDS auto [18] VDDCORE voltage enable bit */ + BL_Fun_Type cpu0NotNeedWFI; /*!< PDS auto [21] NP not need WFI to get in PDS mode */ + BL_Fun_Type cpu1NotNeedWFI; /*!< PDS auto [20] AP not need WFI to get in PDS mode */ + BL_Fun_Type busReset; /*!< PDS auto [16] bus reset bit, reset after wake up from PDS mode */ + BL_Fun_Type disIrqWakeUp; /*!< PDS auto [15] disable IRQ request to wake up from PDS mode, except PDS counter IRQ */ + BL_Fun_Type powerOffXtalForever; /*!< PDS auto [2] power off xtal after get in PDS mode, and never power on xtal after wake up */ + BL_Fun_Type sleepForever; /*!< PDS auto [1] sleep forever after get in PDS mode, need reset system to restart */ +}PDS_AUTO_NORMAL_CFG_Type; + +/** + * @brief PDS force type definition + */ +typedef enum { + PDS_FORCE_NP, /*!< PDS force NP */ + PDS_FORCE_RSV, /*!< rsv */ + PDS_FORCE_BZ, /*!< PDS force BZ */ + PDS_FORCE_USB, /*!< PDS force USB */ +}PDS_FORCE_Type; + +/** + * @brief PDS force type definition + */ +typedef enum { + AUDIO_PLL_12288000_HZ, /*!< PDS AUDIO PLL SET AS 12.288MHZ */ + AUDIO_PLL_11289600_HZ, /*!< PDS AUDIO PLL SET AS 11.2896HZ */ + AUDIO_PLL_5644800_HZ, /*!< PDS AUDIO PLL SET AS 2.822400HZ */ + AUDIO_PLL_24576000_HZ, /*!< PDS AUDIO PLL SET AS 24.576000MHZ */ + AUDIO_PLL_24000000_HZ, /*!< PDS AUDIO PLL SET AS 24.000000MHZ */ +}PDS_AUDIO_PLL_Type; + +/*@} end of group PDS_Public_Types */ + +/** @defgroup PDS_Public_Constants + * @{ + */ + +/** @defgroup PDS_LDO_LEVEL_TYPE + * @{ + */ +#define IS_PDS_LDO_LEVEL_TYPE(type) (((type) == PDS_LDO_LEVEL_0P60V) || \ + ((type) == PDS_LDO_LEVEL_0P65V) || \ + ((type) == PDS_LDO_LEVEL_0P70V) || \ + ((type) == PDS_LDO_LEVEL_0P75V) || \ + ((type) == PDS_LDO_LEVEL_0P80V) || \ + ((type) == PDS_LDO_LEVEL_0P85V) || \ + ((type) == PDS_LDO_LEVEL_0P90V) || \ + ((type) == PDS_LDO_LEVEL_0P95V) || \ + ((type) == PDS_LDO_LEVEL_1P00V) || \ + ((type) == PDS_LDO_LEVEL_1P05V) || \ + ((type) == PDS_LDO_LEVEL_1P10V) || \ + ((type) == PDS_LDO_LEVEL_1P15V) || \ + ((type) == PDS_LDO_LEVEL_1P20V) || \ + ((type) == PDS_LDO_LEVEL_1P25V) || \ + ((type) == PDS_LDO_LEVEL_1P30V) || \ + ((type) == PDS_LDO_LEVEL_1P35V)) + +/** @defgroup PDS_PAD_PIN_TYPE + * @{ + */ +#define IS_PDS_PAD_PIN_TYPE(type) (((type) == PDS_PAD_PIN_GPIO_17) || \ + ((type) == PDS_PAD_PIN_GPIO_18) || \ + ((type) == PDS_PAD_PIN_GPIO_19) || \ + ((type) == PDS_PAD_PIN_GPIO_20) || \ + ((type) == PDS_PAD_PIN_GPIO_21) || \ + ((type) == PDS_PAD_PIN_GPIO_22) || \ + ((type) == PDS_PAD_PIN_GPIO_23) || \ + ((type) == PDS_PAD_PIN_GPIO_24) || \ + ((type) == PDS_PAD_PIN_GPIO_25) || \ + ((type) == PDS_PAD_PIN_GPIO_26) || \ + ((type) == PDS_PAD_PIN_GPIO_27) || \ + ((type) == PDS_PAD_PIN_GPIO_28)) + +/** @defgroup PDS_PAD_CFG_TYPE + * @{ + */ +#define IS_PDS_PAD_CFG_TYPE(type) (((type) == PDS_PAD_CFG_PULL_NONE) || \ + ((type) == PDS_PAD_CFG_PULL_DOWN) || \ + ((type) == PDS_PAD_CFG_PULL_UP) || \ + ((type) == PDS_PAD_CFG_ACTIVE_IE)) + +/** @defgroup PDS_INT_TYPE + * @{ + */ +#define IS_PDS_INT_TYPE(type) (((type) == PDS_INT_WAKEUP) || \ + ((type) == PDS_INT_RF_DONE) || \ + ((type) == PDS_INT_PLL_DONE) || \ + ((type) == PDS_INT_PDS_SLEEP_CNT) || \ + ((type) == PDS_INT_HBN_IRQ_OUT0) || \ + ((type) == PDS_INT_HBN_IRQ_OUT1) || \ + ((type) == PDS_INT_GPIO_IRQ) || \ + ((type) == PDS_INT_IRRX) || \ + ((type) == PDS_INT_BLE_SLP_IRQ) || \ + ((type) == PDS_INT_USB_WKUP) || \ + ((type) == PDS_INT_KYS_QDEC) || \ + ((type) == PDS_INT_MAX)) + +/** @defgroup PDS_VDDCORE_GPIO_SRC_TYPE + * @{ + */ +#define IS_PDS_VDDCORE_GPIO_SRC_TYPE(type) (((type) == PDS_VDDCORE_GPIO_SRC_GPIO_0) || \ + ((type) == PDS_VDDCORE_GPIO_SRC_GPIO_1) || \ + ((type) == PDS_VDDCORE_GPIO_SRC_GPIO_2) || \ + ((type) == PDS_VDDCORE_GPIO_SRC_GPIO_3) || \ + ((type) == PDS_VDDCORE_GPIO_SRC_GPIO_4) || \ + ((type) == PDS_VDDCORE_GPIO_SRC_GPIO_5) || \ + ((type) == PDS_VDDCORE_GPIO_SRC_GPIO_6) || \ + ((type) == PDS_VDDCORE_GPIO_SRC_GPIO_7)) + +/** @defgroup PDS_RST_EVENT_TYPE + * @{ + */ +#define IS_PDS_RST_EVENT_TYPE(type) (((type) == PDS_RST_EVENT_BUS_RST) || \ + ((type) == PDS_RST_EVENT_HBN_PWR_ON_RST) || \ + ((type) == PDS_RST_EVENT_PDS_RST) || \ + ((type) == PDS_RST_EVENT_MAX)) + +/** @defgroup PDS_PLL_STS_TYPE + * @{ + */ +#define IS_PDS_PLL_STS_TYPE(type) (((type) == PDS_PLL_STS_OFF) || \ + ((type) == PDS_PLL_STS_SFREG) || \ + ((type) == PDS_PLL_STS_PU) || \ + ((type) == PDS_PLL_STS_RDY)) + +/** @defgroup PDS_RF_STS_TYPE + * @{ + */ +#define IS_PDS_RF_STS_TYPE(type) (((type) == PDS_RF_STS_OFF) || \ + ((type) == PDS_RF_STS_PU_MBG) || \ + ((type) == PDS_RF_STS_PU_LDO15RF) || \ + ((type) == PDS_RF_STS_PU_SFREG) || \ + ((type) == PDS_RF_STS_BZ_EN_AON)) + +/** @defgroup PDS_STS_TYPE + * @{ + */ +#define IS_PDS_STS_TYPE(type) (((type) == PDS_STS_IDLE) || \ + ((type) == PDS_STS_ECG) || \ + ((type) == PDS_STS_ERST) || \ + ((type) == PDS_STS_EISO) || \ + ((type) == PDS_STS_POFF) || \ + ((type) == PDS_STS_PRE_BGON) || \ + ((type) == PDS_STS_PRE_BGON1) || \ + ((type) == PDS_STS_BGON) || \ + ((type) == PDS_STS_CLK_SW_32M) || \ + ((type) == PDS_STS_PON_DCDC) || \ + ((type) == PDS_STS_PON_LDO11_MISC) || \ + ((type) == PDS_STS_PON) || \ + ((type) == PDS_STS_DISO) || \ + ((type) == PDS_STS_DCG) || \ + ((type) == PDS_STS_DRST) || \ + ((type) == PDS_STS_WAIT_EFUSE)) + +/** @defgroup PDS_PLL_XTAL_TYPE + * @{ + */ +#define IS_PDS_PLL_XTAL_TYPE(type) (((type) == PDS_PLL_XTAL_NONE) || \ + ((type) == PDS_PLL_XTAL_32M) || \ + ((type) == PDS_PLL_XTAL_RC32M)) + +/** @defgroup PDS_PLL_CLK_TYPE + * @{ + */ +#define IS_PDS_PLL_CLK_TYPE(type) (((type) == PDS_PLL_CLK_480M) || \ + ((type) == PDS_PLL_CLK_240M) || \ + ((type) == PDS_PLL_CLK_192M) || \ + ((type) == PDS_PLL_CLK_160M) || \ + ((type) == PDS_PLL_CLK_120M) || \ + ((type) == PDS_PLL_CLK_96M) || \ + ((type) == PDS_PLL_CLK_80M) || \ + ((type) == PDS_PLL_CLK_48M) || \ + ((type) == PDS_PLL_CLK_32M)) + +/** @defgroup PDS_AON_GPIO_INT_TRIGGER_TYPE + * @{ + */ +#define IS_PDS_AON_GPIO_INT_TRIGGER_TYPE(type) (((type) == PDS_AON_GPIO_INT_TRIGGER_SYNC_FALLING_EDGE) || \ + ((type) == PDS_AON_GPIO_INT_TRIGGER_SYNC_RISING_EDGE) || \ + ((type) == PDS_AON_GPIO_INT_TRIGGER_SYNC_LOW_LEVEL) || \ + ((type) == PDS_AON_GPIO_INT_TRIGGER_SYNC_HIGH_LEVEL) || \ + ((type) == PDS_AON_GPIO_INT_TRIGGER_ASYNC_FALLING_EDGE) || \ + ((type) == PDS_AON_GPIO_INT_TRIGGER_ASYNC_RISING_EDGE) || \ + ((type) == PDS_AON_GPIO_INT_TRIGGER_ASYNC_LOW_LEVEL) || \ + ((type) == PDS_AON_GPIO_INT_TRIGGER_ASYNC_HIGH_LEVEL)) + +/** @defgroup PDS_LDO_VOLTAGE_TYPE + * @{ + */ +#define IS_PDS_LDO_VOLTAGE_TYPE(type) (((type) == PDS_LDO_VOLTAGE_0P60V) || \ + ((type) == PDS_LDO_VOLTAGE_0P65V) || \ + ((type) == PDS_LDO_VOLTAGE_0P70V) || \ + ((type) == PDS_LDO_VOLTAGE_0P75V) || \ + ((type) == PDS_LDO_VOLTAGE_0P80V) || \ + ((type) == PDS_LDO_VOLTAGE_0P85V) || \ + ((type) == PDS_LDO_VOLTAGE_0P90V) || \ + ((type) == PDS_LDO_VOLTAGE_0P95V) || \ + ((type) == PDS_LDO_VOLTAGE_1P00V) || \ + ((type) == PDS_LDO_VOLTAGE_1P05V) || \ + ((type) == PDS_LDO_VOLTAGE_1P10V) || \ + ((type) == PDS_LDO_VOLTAGE_1P15V) || \ + ((type) == PDS_LDO_VOLTAGE_1P20V) || \ + ((type) == PDS_LDO_VOLTAGE_1P25V) || \ + ((type) == PDS_LDO_VOLTAGE_1P30V) || \ + ((type) == PDS_LDO_VOLTAGE_1P35V)) + +/** @defgroup PDS_FORCE_TYPE + * @{ + */ +#define IS_PDS_FORCE_TYPE(type) (((type) == PDS_FORCE_NP) || \ + ((type) == PDS_FORCE_RSV) || \ + ((type) == PDS_FORCE_BZ) || \ + ((type) == PDS_FORCE_USB)) + +/** @defgroup PDS_AUDIO_PLL_TYPE + * @{ + */ +#define IS_PDS_AUDIO_PLL_TYPE(type) (((type) == AUDIO_PLL_12288000_HZ) || \ + ((type) == AUDIO_PLL_11289600_HZ) || \ + ((type) == AUDIO_PLL_5644800_HZ)) + +/*@} end of group PDS_Public_Constants */ + +/** @defgroup PDS_Public_Macros + * @{ + */ +#define PDS_LDO_MIN_PU_CNT (25) /* LDO need 25 cycles to power up */ +#define PDS_WARMUP_CNT (38) /* LDO hw warmup compensation latency cycles */ +#define PDS_WARMUP_LATENCY_CNT (38) /* LDO hw warmup compensation latency cycles */ +#define PDS_FORCE_PWR_OFF_OFFSET (0) +#define PDS_FORCE_ISO_EN_OFFSET (4) +#define PDS_FORCE_PDS_RST_OFFSET (8) +#define PDS_FORCE_MEM_STBY_OFFSET (12) +#define PDS_FORCE_GATE_CLK_OFFSET (16) +#define PDS_INT_MASK_BIT_OFFSET (8) +#define PDS_AON_WAKEUP_GPIO_NONE (0x00) +#define PDS_AON_WAKEUP_GPIO_10 (0x02) +#define PDS_AON_WAKEUP_GPIO_11 (0x04) +#define PDS_AON_WAKEUP_GPIO_12 (0x08) +#define PDS_AON_WAKEUP_GPIO_13 (0x10) +#define PDS_AON_WAKEUP_GPIO_ALL (0x1E) + +/*@} end of group PDS_Public_Macros */ + +/** @defgroup PDS_Public_Functions + * @{ + */ +#ifndef BFLB_USE_HAL_DRIVER +void PDS_WAKEUP_IRQHandler(void); +#endif +/*----------*/ +BL_Err_Type PDS_RAM_Config(PDS_RAM_CFG_Type *ramCfg); +BL_Err_Type PDS_Set_Pad_Config(PDS_PAD_PIN_Type pin,PDS_PAD_CFG_Type cfg); +/*----------*/ +BL_Err_Type PDS_App_Enable(PDS_CTL_Type *cfg,PDS_CTL4_Type *cfg4,uint32_t pdsSleepCnt); +BL_Err_Type PDS_Force_Config(PDS_CTL2_Type *cfg2,PDS_CTL3_Type *cfg3); +BL_Err_Type PDS_Default_Level_Config(PDS_DEFAULT_LV_CFG_Type *defaultLvCfg,uint32_t pdsSleepCnt); +/*----------*/ +BL_Err_Type PDS_IntEn(PDS_INT_Type intType,BL_Fun_Type enable); +BL_Err_Type PDS_IntMask(PDS_INT_Type intType,BL_Mask_Type intMask); +BL_Sts_Type PDS_Get_IntStatus(PDS_INT_Type intType); +BL_Err_Type PDS_IntClear(void); +PDS_PLL_STS_Type PDS_Get_PdsPllStstus(void); +PDS_RF_STS_Type PDS_Get_PdsRfStstus(void); +PDS_STS_Type PDS_Get_PdsStstus(void); +/*----------*/ +BL_Err_Type PDS_Clear_Reset_Event(void); +BL_Sts_Type PDS_Get_Reset_Event(PDS_RST_EVENT_Type event); +/*----------*/ +BL_Err_Type PDS_Set_Vddcore_GPIO_IntCfg(PDS_VDDCORE_GPIO_SRC_Type src, + PDS_AON_GPIO_INT_Trigger_Type mode); +BL_Err_Type PDS_Set_Vddcore_GPIO_IntMask(BL_Mask_Type intMask); +PDS_STS_Type PDS_Get_Vddcore_GPIO_IntStatus(void); +BL_Err_Type PDS_Set_Vddcore_GPIO_IntClear(void); +/*----------*/ +BL_Err_Type PDS_WAKEUP_IRQHandler_Install(void); +BL_Err_Type PDS_Int_Callback_Install(PDS_INT_Type intType,intCallback_Type* cbFun); +/*----------*/ +BL_Err_Type PDS_Trim_RC32M(void); +BL_Err_Type PDS_Select_RC32M_As_PLL_Ref(void); +BL_Err_Type PDS_Select_XTAL_As_PLL_Ref(void); +BL_Err_Type PDS_Power_On_PLL(PDS_PLL_XTAL_Type xtalType); +BL_Err_Type PDS_Enable_PLL_All_Clks(void); +BL_Err_Type PDS_Enable_PLL_Clk(PDS_PLL_CLK_Type pllClk); +BL_Err_Type PDS_Disable_PLL_All_Clks(void); +BL_Err_Type PDS_Disable_PLL_Clk(PDS_PLL_CLK_Type pllClk); +BL_Err_Type PDS_Power_Off_PLL(void); +BL_Err_Type PDS_Set_Audio_PLL_Freq(PDS_AUDIO_PLL_Type audioPLLFreq); +/*----------*/ +void PDS_Reset(void); +void PDS_Enable(PDS_CFG_Type *cfg,uint32_t pdsSleepCnt); +void PDS_Auto_Time_Config(uint32_t sleepDuration); +void PDS_Auto_Enable(PDS_AUTO_POWER_DOWN_CFG_Type *powerCfg,PDS_AUTO_NORMAL_CFG_Type *normalCfg,BL_Fun_Type enable); +void PDS_Manual_Force_Turn_Off(PDS_FORCE_Type domain); +void PDS_Manual_Force_Turn_On(PDS_FORCE_Type domain); +/*----------*/; + +/*@} end of group PDS_Public_Functions */ + +/*@} end of group PDS */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_PDS_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_psram.h b/drivers/bl702_driver/std_drv/inc/bl702_psram.h new file mode 100644 index 00000000..f71e5267 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_psram.h @@ -0,0 +1,174 @@ +/** + ****************************************************************************** + * @file bl702_psram.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_PSRAM_H__ +#define __BL702_PSRAM_H__ + +#include "sf_ctrl_reg.h" +#include "bl702_common.h" +#include "bl702_sf_ctrl.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup PSRAM + * @{ + */ + +/** @defgroup PSRAM_Public_Types + * @{ + */ + +/** + * @brief Psram drive strength type definition + */ +typedef enum { + PSRAM_DRIVE_STRENGTH_50_OHMS, /*!< Drive strength 50 ohms(default) */ + PSRAM_DRIVE_STRENGTH_100_OHMS, /*!< Drive strength 100 ohms */ + PSRAM_DRIVE_STRENGTH_200_OHMS, /*!< Drive strength 200 ohms */ +}PSRAM_Drive_Strength; + +/** + * @brief Psram burst length size type definition + */ +typedef enum { + PSRAM_BURST_LENGTH_16_BYTES, /*!< Burst Length 16 bytes */ + PSRAM_BURST_LENGTH_32_BYTES, /*!< Burst Length 32 bytes */ + PSRAM_BURST_LENGTH_64_BYTES, /*!< Burst Length 64 bytes */ + PSRAM_BURST_LENGTH_512_BYTES, /*!< Burst Length 512 bytes(default) */ +}PSRAM_Burst_Length; + +/** + * @brief Psram ctrl mode type definition + */ +typedef enum { + PSRAM_SPI_CTRL_MODE, /*!< Psram SPI ctrl mode */ + PSRAM_QPI_CTRL_MODE, /*!< Psram QPI ctrl mode */ +}PSRAM_Ctrl_Mode; + +/** + * @brief Psram ctrl configuration structure type definition + */ +typedef struct { + uint8_t readIdCmd; /*!< Read ID command */ + uint8_t readIdDmyClk; /*!< Read ID command dummy clock */ + uint8_t burstToggleCmd; /*!< Burst toggle length command */ + uint8_t resetEnableCmd; /*!< Psram reset enable command */ + uint8_t resetCmd; /*!< Psram reset command */ + uint8_t enterQuadModeCmd; /*!< Psram enter quad mode command */ + uint8_t exitQuadModeCmd; /*!< Psram exit quad mode command */ + uint8_t readRegCmd; /*!< Read register command */ + uint8_t readRegDmyClk; /*!< Read register command dummy clock */ + uint8_t writeRegCmd; /*!< Write register command */ + uint8_t readCmd; /*!< Psram read command */ + uint8_t readDmyClk; /*!< Psram read command dummy clock */ + uint8_t fReadCmd; /*!< Psram fast read command */ + uint8_t fReadDmyClk; /*!< Psram fast read command dummy clock */ + uint8_t fReadQuadCmd; /*!< Psram fast read quad command */ + uint8_t fReadQuadDmyClk; /*!< Psram fast read quad command dummy clock */ + uint8_t writeCmd; /*!< Psram write command */ + uint8_t quadWriteCmd; /*!< Psram quad write command */ + uint16_t pageSize; /*!< Psram page size */ + PSRAM_Ctrl_Mode ctrlMode; /*!< Psram ctrl mode */ + PSRAM_Drive_Strength driveStrength; /*!< Psram drive strength */ + PSRAM_Burst_Length burstLength; /*!< Psram burst length size */ +}SPI_Psram_Cfg_Type; + +/*@} end of group PSRAM_Public_Types */ + +/** @defgroup PSRAM_Public_Constants + * @{ + */ + +/** @defgroup PSRAM_DRIVE_STRENGTH + * @{ + */ +#define IS_PSRAM_DRIVE_STRENGTH(type) (((type) == PSRAM_DRIVE_STRENGTH_50_OHMS) || \ + ((type) == PSRAM_DRIVE_STRENGTH_100_OHMS) || \ + ((type) == PSRAM_DRIVE_STRENGTH_200_OHMS)) + +/** @defgroup PSRAM_BURST_LENGTH + * @{ + */ +#define IS_PSRAM_BURST_LENGTH(type) (((type) == PSRAM_BURST_LENGTH_16_BYTES) || \ + ((type) == PSRAM_BURST_LENGTH_32_BYTES) || \ + ((type) == PSRAM_BURST_LENGTH_64_BYTES) || \ + ((type) == PSRAM_BURST_LENGTH_512_BYTES)) + +/** @defgroup PSRAM_CTRL_MODE + * @{ + */ +#define IS_PSRAM_CTRL_MODE(type) (((type) == PSRAM_SPI_CTRL_MODE) || \ + ((type) == PSRAM_QPI_CTRL_MODE)) + +/*@} end of group PSRAM_Public_Constants */ + +/** @defgroup PSRAM_Public_Macros + * @{ + */ + +/*@} end of group PSRAM_Public_Macros */ + +/** @defgroup PSRAM_Public_Functions + * @{ + */ + +/** + * @brief PSRAM Functions + */ +void Psram_Init(SPI_Psram_Cfg_Type *psramCfg, SF_Ctrl_Cmds_Cfg *cmdsCfg, SF_Ctrl_Psram_Cfg *sfCtrlPsramCfg); +void Psram_ReadReg(SPI_Psram_Cfg_Type *psramCfg, uint8_t *regValue); +void Psram_WriteReg(SPI_Psram_Cfg_Type *psramCfg, uint8_t *regValue); +BL_Err_Type Psram_SetDriveStrength(SPI_Psram_Cfg_Type *psramCfg); +BL_Err_Type Psram_SetBurstWrap(SPI_Psram_Cfg_Type *psramCfg); +void Psram_ReadId(SPI_Psram_Cfg_Type *psramCfg, uint8_t *data); +BL_Err_Type Psram_EnterQuadMode(SPI_Psram_Cfg_Type *psramCfg); +BL_Err_Type Psram_ExitQuadMode(SPI_Psram_Cfg_Type *psramCfg); +BL_Err_Type Psram_ToggleBurstLength(SPI_Psram_Cfg_Type *psramCfg, PSRAM_Ctrl_Mode ctrlMode); +BL_Err_Type Psram_SoftwareReset(SPI_Psram_Cfg_Type *psramCfg, PSRAM_Ctrl_Mode ctrlMode); +BL_Err_Type Psram_Set_IDbus_Cfg(SPI_Psram_Cfg_Type *psramCfg, SF_Ctrl_IO_Type ioMode, uint32_t addr, uint32_t len); +BL_Err_Type Psram_Cache_Write_Set(SPI_Psram_Cfg_Type *psramCfg, SF_Ctrl_IO_Type ioMode, BL_Fun_Type wtEn, + BL_Fun_Type wbEn, BL_Fun_Type waEn); +BL_Err_Type Psram_Write(SPI_Psram_Cfg_Type *psramCfg, SF_Ctrl_IO_Type ioMode, uint32_t addr, uint8_t *data, uint32_t len); +BL_Err_Type Psram_Read(SPI_Psram_Cfg_Type *psramCfg, SF_Ctrl_IO_Type ioMode, uint32_t addr, uint8_t *data, uint32_t len); + +/*@} end of group PSRAM_Public_Functions */ + +/*@} end of group PSRAM */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_PSRAM_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_pwm.h b/drivers/bl702_driver/std_drv/inc/bl702_pwm.h new file mode 100644 index 00000000..057f0875 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_pwm.h @@ -0,0 +1,194 @@ +/** + ****************************************************************************** + * @file bl702_pwm.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_PWM_H__ +#define __BL702_PWM_H__ + +#include "pwm_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup PWM + * @{ + */ + +/** @defgroup PWM_Public_Types + * @{ + */ + +/** + * @brief PWM No. type definition + */ +typedef enum { + PWM_CH0 = 0, /*!< PWM Channel 0 define */ + PWM_CH1, /*!< PWM Channel 1 define */ + PWM_CH2, /*!< PWM Channel 2 define */ + PWM_CH3, /*!< PWM Channel 3 define */ + PWM_CH4, /*!< PWM Channel 4 define */ + PWM_CH_MAX, /*!< */ +}PWM_CH_ID_Type; + +/** + * @brief PWM Clock definition + */ +typedef enum { + PWM_CLK_XCLK = 0, /*!< PWM Clock source :XTAL CLK */ + PWM_CLK_BCLK, /*!< PWM Clock source :Bus CLK */ + PWM_CLK_32K, /*!< PWM Clock source :32K CLK */ +}PWM_Clk_Type; + +/** + * @brief PWM Stop Mode definition + */ +typedef enum { + PWM_STOP_ABRUPT = 0, /*!< PWM stop abrupt select define */ + PWM_STOP_GRACEFUL, /*!< PWM stop graceful select define */ +}PWM_Stop_Mode_Type; + +/** + * @brief PWM mode type def + */ +typedef enum { + PWM_POL_NORMAL = 0, /*!< PWM normal polarity mode define */ + PWM_POL_INVERT, /*!< PWM invert polarity mode define */ +}PWM_Polarity_Type; + +/** + * @brief PWM interrupt type def + */ +typedef enum { + PWM_INT_PULSE_CNT = 0, /*!< PWM Pulse count interrupt define */ + PWM_INT_ALL, /*!< */ +}PWM_INT_Type; + +/** + * @brief PWM configuration structure type definition + */ +typedef struct { + PWM_CH_ID_Type ch; /*!< PWM channel */ + PWM_Clk_Type clk; /*!< PWM Clock */ + PWM_Stop_Mode_Type stopMode; /*!< PWM Stop Mode */ + PWM_Polarity_Type pol; /*!< PWM mode type */ + uint16_t clkDiv; /*!< PWM clkDiv num */ + uint16_t period; /*!< PWM period set */ + uint16_t threshold1; /*!< PWM threshold1 num */ + uint16_t threshold2; /*!< PWM threshold2 num */ + uint16_t intPulseCnt; /*!< PWM interrupt pulse count */ +}PWM_CH_CFG_Type; + +/*@} end of group PWM_Public_Types */ + +/** @defgroup PWM_Public_Constants + * @{ + */ + +/** @defgroup PWM_CH_ID_TYPE + * @{ + */ +#define IS_PWM_CH_ID_TYPE(type) (((type) == PWM_CH0 ) || \ + ((type) == PWM_CH1) || \ + ((type) == PWM_CH2) || \ + ((type) == PWM_CH3) || \ + ((type) == PWM_CH4) || \ + ((type) == PWM_CH_MAX)) + +/** @defgroup PWM_CLK_TYPE + * @{ + */ +#define IS_PWM_CLK_TYPE(type) (((type) == PWM_CLK_XCLK ) || \ + ((type) == PWM_CLK_BCLK) || \ + ((type) == PWM_CLK_32K)) + +/** @defgroup PWM_STOP_MODE_TYPE + * @{ + */ +#define IS_PWM_STOP_MODE_TYPE(type) (((type) == PWM_STOP_ABRUPT ) || \ + ((type) == PWM_STOP_GRACEFUL)) + +/** @defgroup PWM_POLARITY_TYPE + * @{ + */ +#define IS_PWM_POLARITY_TYPE(type) (((type) == PWM_POL_NORMAL ) || \ + ((type) == PWM_POL_INVERT)) + +/** @defgroup PWM_INT_TYPE + * @{ + */ +#define IS_PWM_INT_TYPE(type) (((type) == PWM_INT_PULSE_CNT ) || \ + ((type) == PWM_INT_ALL)) + +/*@} end of group PWM_Public_Constants */ + +/** @defgroup PWM_Public_Macros + * @{ + */ +#define IS_PWM_CH(CH) ((CH) < PWM_CH_MAX) + +/*@} end of group PWM_Public_Macros */ + +/** @defgroup PWM_Public_Functions + * @{ + */ + +/** + * @brief PWM Functions + */ +#ifndef BFLB_USE_HAL_DRIVER +void PWM_IRQHandler(void); +#endif +BL_Err_Type PWM_Channel_Init(PWM_CH_CFG_Type *chCfg); +void PWM_Channel_Update(PWM_CH_ID_Type ch,uint16_t period,uint16_t threshold1,uint16_t threshold2); +void PWM_Channel_Set_Div(PWM_CH_ID_Type ch,uint16_t div); +void PWM_Channel_Set_Threshold1(PWM_CH_ID_Type ch,uint16_t threshold1); +void PWM_Channel_Set_Threshold2(PWM_CH_ID_Type ch,uint16_t threshold2); +void PWM_Channel_Set_Period(PWM_CH_ID_Type ch,uint16_t period); +void PWM_Channel_Get(PWM_CH_ID_Type ch,uint16_t *period,uint16_t *threshold1,uint16_t *threshold2); +void PWM_IntMask(PWM_CH_ID_Type ch,PWM_INT_Type intType,BL_Mask_Type intMask); +void PWM_Channel_Enable(PWM_CH_ID_Type ch); +void PWM_Channel_Disable(PWM_CH_ID_Type ch); +void PWM_SW_Mode(PWM_CH_ID_Type ch,BL_Fun_Type enable); +void PWM_SW_Force_Value(PWM_CH_ID_Type ch,uint8_t value); +void PWM_Int_Callback_Install(PWM_CH_ID_Type ch,uint32_t intType,intCallback_Type* cbFun); + +/*@} end of group PWM_Public_Functions */ + +/*@} end of group PWM */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_PWM_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_qdec.h b/drivers/bl702_driver/std_drv/inc/bl702_qdec.h new file mode 100644 index 00000000..079be08c --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_qdec.h @@ -0,0 +1,278 @@ +/** + ****************************************************************************** + * @file bl702_qdec.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_QDEC_H__ +#define __BL702_QDEC_H__ + +#include "qdec_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup QDEC + * @{ + */ + +/** @defgroup QDEC_Public_Types + * @{ + */ + +/** + * @brief QDEC port type definition + */ +typedef enum { + QDEC0_ID, /*!< QDEC0 port define */ + QDEC1_ID, /*!< QDEC1 port define */ + QDEC2_ID, /*!< QDEC2 port define */ + QDEC_ID_MAX, /*!< QDEC MAX ID define */ +}QDEC_ID_Type; + +/** + * @brief QDEC sample work mode type definition + */ +typedef enum { + QDEC_SAMPLE_SINGLE_MOD, /*!< Stop sample if rpt_rdy */ + QDEC_SAMPLE_CONTINUE_MOD, /*!< Continue sample */ +}QDEC_SAMPLE_MODE_Type; + +/** + * @brief QDEC sample period type definition + */ +typedef enum { + QDEC_SAMPLE_PERIOD_32US, /*!< 32 us at clock 1MHz */ + QDEC_SAMPLE_PERIOD_64US, /*!< 64 us at clock 1MHz */ + QDEC_SAMPLE_PERIOD_128US, /*!< 128 us at clock 1MHz */ + QDEC_SAMPLE_PERIOD_256US, /*!< 256 us at clock 1MHz */ + QDEC_SAMPLE_PERIOD_512US, /*!< 512 us at clock 1MHz */ + QDEC_SAMPLE_PERIOD_1MS, /*!< 1 ms at clock 1MHz */ + QDEC_SAMPLE_PERIOD_2MS, /*!< 2 ms at clock 1MHz */ + QDEC_SAMPLE_PERIOD_4MS, /*!< 4 ms at clock 1MHz */ + QDEC_SAMPLE_PERIOD_8MS, /*!< 8 ms at clock 1MHz */ + QDEC_SAMPLE_PERIOD_16MS, /*!< 16 ms at clock 1MHz */ + QDEC_SAMPLE_PERIOD_32MS, /*!< 32 ms at clock 1MHz */ + QDEC_SAMPLE_PERIOD_65MS, /*!< 65 ms at clock 1MHz */ + QDEC_SAMPLE_PERIOD_131MS, /*!< 131 ms at clock 1MHz */ +}QDEC_SAMPLE_PERIOD_Type; + +/** + * @brief QDEC report work mode type definition + */ +typedef enum { + QDEC_REPORT_SAMPLE_CHANGE_MOD, /*!< Count time only if sample change */ + QDEC_REPORT_TIME_MOD, /*!< Continue time */ +}QDEC_REPORT_MODE_Type; + +/** + * @brief QDEC sample config structure type definition + */ +typedef struct { + QDEC_SAMPLE_MODE_Type sampleMod; /*!< Sample work mode */ + QDEC_SAMPLE_PERIOD_Type samplePeriod; /*!< Sample period time */ +}QDEC_SAMPLE_Type; + +/** + * @brief QDEC report config structure type definition + */ +typedef struct { + QDEC_REPORT_MODE_Type reportMod; /*!< Report work mode */ + uint16_t reportPeriod; /*!< RPT_US report period in [us/report] = SP * RP */ +}QDEC_REPORT_Type; + +/** + * @brief QDEC acc work mode type definition + */ +typedef enum { + QDEC_ACC_STOP_SAMPLE_IF_OVERFLOW, /*!< Stop accumulate if overflow */ + QDEC_ACC_CONTINUE_ACCUMULATE, /*!< Continue accumulate */ +}QDEC_ACC_MODE_Type; + +/** + * @brief QDEC led config structure type definition + */ +typedef struct { + BL_Fun_Type ledEn; /*!< LED enable */ + BL_Fun_Type ledSwap; /*!< LED on/off polarity swap */ + uint16_t ledPeriod; /*!< Period in us the LED is switched on prior to sampling */ +}QDEC_LED_Type; + +/** + * @brief QDEC deglitch config structure type definition + */ +typedef struct { + BL_Fun_Type deglitchEn; /*!< deglitch enable */ + uint8_t deglitchStrength; /*!< deglitch strength */ +}QDEC_DEGLITCH_Type; + +/** + * @brief QDEC config structure type definition + */ +typedef struct { + QDEC_SAMPLE_Type sampleCfg; /*!< QDEC sample config structure */ + QDEC_REPORT_Type reportCfg; /*!< QDEC report config structure */ + QDEC_ACC_MODE_Type accMod; /*!< QDEC acc mode config */ + QDEC_LED_Type ledCfg; /*!< QDEC led config structure */ + QDEC_DEGLITCH_Type deglitchCfg; /*!< QDEC deglitch config structure */ +}QDEC_CFG_Type; + +/** + * @brief QDEC direction type definition + */ +typedef enum { + QDEC_DIRECTION_NO_CHANGE, /*!< Direction of last change no change */ + QDEC_DIRECTION_CLOCKWISE, /*!< Direction of last change clockwise */ + QDEC_DIRECTION_COUNTER_CLOCKWISE, /*!< Direction of last change counter-clockwise */ + QDEC_DIRECTION_ERROR, /*!< Direction of last change error */ +}QDEC_DIRECTION_Type; + +/** + * @brief QDEC interrupt type definition + */ +typedef enum { + QDEC_INT_REPORT, /*!< report interrupt */ + QDEC_INT_SAMPLE, /*!< sample interrupt */ + QDEC_INT_ERROR, /*!< error interrupt */ + QDEC_INT_OVERFLOW, /*!< ACC1 and ACC2 overflow interrupt */ + QDEC_INT_ALL, /*!< interrupt max num */ +}QDEC_INT_Type; + +/*@} end of group QDEC_Public_Types */ + +/** @defgroup QDEC_Public_Constants + * @{ + */ + +/** @defgroup QDEC_ID_TYPE + * @{ + */ +#define IS_QDEC_ID_TYPE(type) (((type) == QDEC0_ID) || \ + ((type) == QDEC1_ID) || \ + ((type) == QDEC2_ID) || \ + ((type) == QDEC_ID_MAX)) + +/** @defgroup QDEC_SAMPLE_MODE_TYPE + * @{ + */ +#define IS_QDEC_SAMPLE_MODE_TYPE(type) (((type) == QDEC_SAMPLE_SINGLE_MOD) || \ + ((type) == QDEC_SAMPLE_CONTINUE_MOD)) + +/** @defgroup QDEC_SAMPLE_PERIOD_TYPE + * @{ + */ +#define IS_QDEC_SAMPLE_PERIOD_TYPE(type) (((type) == QDEC_SAMPLE_PERIOD_32US) || \ + ((type) == QDEC_SAMPLE_PERIOD_64US) || \ + ((type) == QDEC_SAMPLE_PERIOD_128US) || \ + ((type) == QDEC_SAMPLE_PERIOD_256US) || \ + ((type) == QDEC_SAMPLE_PERIOD_512US) || \ + ((type) == QDEC_SAMPLE_PERIOD_1MS) || \ + ((type) == QDEC_SAMPLE_PERIOD_2MS) || \ + ((type) == QDEC_SAMPLE_PERIOD_4MS) || \ + ((type) == QDEC_SAMPLE_PERIOD_8MS) || \ + ((type) == QDEC_SAMPLE_PERIOD_16MS) || \ + ((type) == QDEC_SAMPLE_PERIOD_32MS) || \ + ((type) == QDEC_SAMPLE_PERIOD_65MS) || \ + ((type) == QDEC_SAMPLE_PERIOD_131MS)) + +/** @defgroup QDEC_REPORT_MODE_TYPE + * @{ + */ +#define IS_QDEC_REPORT_MODE_TYPE(type) (((type) == QDEC_REPORT_SAMPLE_CHANGE_MOD) || \ + ((type) == QDEC_REPORT_TIME_MOD)) + +/** @defgroup QDEC_ACC_MODE_TYPE + * @{ + */ +#define IS_QDEC_ACC_MODE_TYPE(type) (((type) == QDEC_ACC_STOP_SAMPLE_IF_OVERFLOW) || \ + ((type) == QDEC_ACC_CONTINUE_ACCUMULATE)) + +/** @defgroup QDEC_DIRECTION_TYPE + * @{ + */ +#define IS_QDEC_DIRECTION_TYPE(type) (((type) == QDEC_DIRECTION_NO_CHANGE) || \ + ((type) == QDEC_DIRECTION_CLOCKWISE) || \ + ((type) == QDEC_DIRECTION_COUNTER_CLOCKWISE) || \ + ((type) == QDEC_DIRECTION_ERROR)) + +/** @defgroup QDEC_INT_TYPE + * @{ + */ +#define IS_QDEC_INT_TYPE(type) (((type) == QDEC_INT_REPORT) || \ + ((type) == QDEC_INT_SAMPLE) || \ + ((type) == QDEC_INT_ERROR) || \ + ((type) == QDEC_INT_OVERFLOW) || \ + ((type) == QDEC_INT_ALL)) + +/*@} end of group QDEC_Public_Constants */ + +/** @defgroup QDEC_Public_Macros + * @{ + */ + +/*@} end of group QDEC_Public_Macros */ + +/** @defgroup QDEC_Public_Functions + * @{ + */ + +/** + * @brief QDEC Functions + */ +#ifndef BFLB_USE_HAL_DRIVER +void QDEC0_IRQHandler(void); +void QDEC1_IRQHandler(void); +void QDEC2_IRQHandler(void); +#endif +void QDEC_Init(QDEC_ID_Type qdecId,QDEC_CFG_Type *qdecCfg); +void QDEC_DeInit(QDEC_ID_Type qdecId); +void QDEC_Enable(QDEC_ID_Type qdecId); +void QDEC_Disable(QDEC_ID_Type qdecId); +void QDEC_SetIntMask(QDEC_ID_Type qdecId,QDEC_INT_Type intType,BL_Mask_Type intMask); +BL_Mask_Type QDEC_GetIntMask(QDEC_ID_Type qdecId,QDEC_INT_Type intType); +void QDEC_Int_Callback_Install(QDEC_ID_Type qdecId,QDEC_INT_Type intType,intCallback_Type* cbFun); +BL_Sts_Type QDEC_Get_Int_Status(QDEC_ID_Type qdecId,QDEC_INT_Type intType); +void QDEC_Clr_Int_Status(QDEC_ID_Type qdecId,QDEC_INT_Type intType); +QDEC_DIRECTION_Type QDEC_Get_Sample_Direction(QDEC_ID_Type qdecId); +uint8_t QDEC_Get_Err_Cnt(QDEC_ID_Type qdecId); +uint16_t QDEC_Get_Sample_Val(QDEC_ID_Type qdecId); +void QDEC_IntHandler(QDEC_ID_Type qdecId,QDEC_INT_Type intType); + +/*@} end of group QDEC_Public_Functions */ + +/*@} end of group QDEC */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_QDEC_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_romdriver.h b/drivers/bl702_driver/std_drv/inc/bl702_romdriver.h new file mode 100644 index 00000000..32d49b0b --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_romdriver.h @@ -0,0 +1,632 @@ +/** + ****************************************************************************** + * @file bl702_romdriver.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2019 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_ROMDRIVER_H__ +#define __BL702_ROMDRIVER_H__ + +#include "bl702_common.h" +#include "bl702_aon.h" +#include "bl702_glb.h" +#include "bl702_hbn.h" +#include "bl702_xip_sflash.h" +#include "bl702_sflash.h" +#include "bl702_sf_ctrl.h" +#include "bl702_psram.h" +#include "softcrc.h" + +#define ROMAPI_INDEX_SECT_SIZE (0x800) +#define ROMAPI_INDEX_MAX (ROMAPI_INDEX_SECT_SIZE / 4 - 1) + +typedef enum { + ROM_API_INDEX_REV = 0, + + ROM_API_INDEX_FUNC_START = 4, + + ROM_API_INDEX_AON_Power_On_MBG = ROM_API_INDEX_FUNC_START, + ROM_API_INDEX_AON_Power_Off_MBG, + ROM_API_INDEX_AON_Power_On_XTAL, + ROM_API_INDEX_AON_Set_Xtal_CapCode, + ROM_API_INDEX_AON_Power_Off_XTAL, + + ROM_API_INDEX_ASM_Delay_Us, + ROM_API_INDEX_BL702_Delay_US, + ROM_API_INDEX_BL702_Delay_MS, + ROM_API_INDEX_BL702_MemCpy, + ROM_API_INDEX_BL702_MemCpy4, + ROM_API_INDEX_BL702_MemCpy_Fast, + ROM_API_INDEX_ARCH_MemCpy_Fast, + ROM_API_INDEX_BL702_MemSet, + ROM_API_INDEX_BL702_MemSet4, + ROM_API_INDEX_BL702_MemCmp, + ROM_API_INDEX_BFLB_Soft_CRC32, + + ROM_API_INDEX_GLB_Get_Root_CLK_Sel, + ROM_API_INDEX_GLB_Set_System_CLK_Div, + ROM_API_INDEX_GLB_Get_BCLK_Div, + ROM_API_INDEX_GLB_Get_HCLK_Div, + ROM_API_INDEX_Update_SystemCoreClockWith_XTAL, + ROM_API_INDEX_GLB_Set_System_CLK, + ROM_API_INDEX_System_Core_Clock_Update_From_RC32M, + ROM_API_INDEX_GLB_Set_SF_CLK, + ROM_API_INDEX_GLB_Power_Off_DLL, + ROM_API_INDEX_GLB_Power_On_DLL, + ROM_API_INDEX_GLB_Enable_DLL_All_Clks, + ROM_API_INDEX_GLB_Enable_DLL_Clk, + ROM_API_INDEX_GLB_Disable_DLL_All_Clks, + ROM_API_INDEX_GLB_Disable_DLL_Clk, + ROM_API_INDEX_GLB_SW_System_Reset, + ROM_API_INDEX_GLB_SW_CPU_Reset, + ROM_API_INDEX_GLB_SW_POR_Reset, + ROM_API_INDEX_GLB_Select_Internal_Flash, + ROM_API_INDEX_GLB_Swap_Flash_Pin, + ROM_API_INDEX_GLB_Swap_Flash_CS_IO2_Pin, + ROM_API_INDEX_GLB_Swap_Flash_IO0_IO3_Pin, + ROM_API_INDEX_GLB_Select_Internal_PSram, + ROM_API_INDEX_GLB_GPIO_Init, + ROM_API_INDEX_GLB_GPIO_OUTPUT_Enable, + ROM_API_INDEX_GLB_GPIO_OUTPUT_Disable, + ROM_API_INDEX_GLB_GPIO_Set_HZ, + ROM_API_INDEX_GLB_Deswap_Flash_Pin, + ROM_API_INDEX_GLB_Select_External_Flash, + ROM_API_INDEX_GLB_GPIO_Get_Fun, + + ROM_API_INDEX_EF_Ctrl_Busy, + ROM_API_INDEX_EF_Ctrl_Sw_AHB_Clk_0, + ROM_API_INDEX_EF_Ctrl_Load_Efuse_R0, + ROM_API_INDEX_EF_Ctrl_Clear, + ROM_API_INDEX_EF_Ctrl_Get_Trim_Parity, + ROM_API_INDEX_EF_Ctrl_Read_RC32K_Trim, + ROM_API_INDEX_EF_Ctrl_Read_RC32M_Trim, + + ROM_API_INDEX_PDS_Trim_RC32M, + ROM_API_INDEX_PDS_Select_RC32M_As_PLL_Ref, + ROM_API_INDEX_PDS_Select_XTAL_As_PLL_Ref, + ROM_API_INDEX_PDS_Power_On_PLL, + ROM_API_INDEX_PDS_Enable_PLL_All_Clks, + ROM_API_INDEX_PDS_Disable_PLL_All_Clks, + ROM_API_INDEX_PDS_Enable_PLL_Clk, + ROM_API_INDEX_PDS_Disable_PLL_Clk, + ROM_API_INDEX_PDS_Power_Off_PLL, + ROM_API_INDEX_PDS_Reset, + ROM_API_INDEX_PDS_Enable, + ROM_API_INDEX_PDS_Auto_Time_Config, + ROM_API_INDEX_PDS_Auto_Enable, + ROM_API_INDEX_PDS_Manual_Force_Turn_Off, + ROM_API_INDEX_PDS_Manual_Force_Turn_On, + + ROM_API_INDEX_HBN_Enable, + ROM_API_INDEX_HBN_Reset, + ROM_API_INDEX_HBN_GPIO_Dbg_Pull_Cfg, + ROM_API_INDEX_HBN_Trim_RC32K, + ROM_API_INDEX_HBN_Set_ROOT_CLK_Sel, + + ROM_API_INDEX_XIP_SFlash_State_Save, + ROM_API_INDEX_XIP_SFlash_State_Restore, + ROM_API_INDEX_XIP_SFlash_Erase_Need_Lock, + ROM_API_INDEX_XIP_SFlash_Write_Need_Lock, + ROM_API_INDEX_XIP_SFlash_Read_Need_Lock, + ROM_API_INDEX_XIP_SFlash_GetJedecId_Need_Lock, + ROM_API_INDEX_XIP_SFlash_GetDeviceId_Need_Lock, + ROM_API_INDEX_XIP_SFlash_GetUniqueId_Need_Lock, + ROM_API_INDEX_XIP_SFlash_Read_Via_Cache_Need_Lock, + ROM_API_INDEX_XIP_SFlash_Read_With_Lock, + ROM_API_INDEX_XIP_SFlash_Write_With_Lock, + ROM_API_INDEX_XIP_SFlash_Erase_With_Lock, + + ROM_API_INDEX_SFlash_Init, + ROM_API_INDEX_SFlash_SetSPIMode, + ROM_API_INDEX_SFlash_Read_Reg, + ROM_API_INDEX_SFlash_Write_Reg, + ROM_API_INDEX_SFlash_Read_Reg_With_Cmd, + ROM_API_INDEX_SFlash_Write_Reg_With_Cmd, + ROM_API_INDEX_SFlash_Busy, + ROM_API_INDEX_SFlash_Write_Enable, + ROM_API_INDEX_SFlash_Qspi_Enable, + ROM_API_INDEX_SFlash_Volatile_Reg_Write_Enable, + ROM_API_INDEX_SFlash_Chip_Erase, + ROM_API_INDEX_SFlash_Sector_Erase, + ROM_API_INDEX_SFlash_Blk32_Erase, + ROM_API_INDEX_SFlash_Blk64_Erase, + ROM_API_INDEX_SFlash_Erase, + ROM_API_INDEX_SFlash_Program, + ROM_API_INDEX_SFlash_GetUniqueId, + ROM_API_INDEX_SFlash_GetJedecId, + ROM_API_INDEX_SFlash_GetDeviceId, + ROM_API_INDEX_SFlash_Powerdown, + ROM_API_INDEX_SFlash_Releae_Powerdown, + ROM_API_INDEX_SFlash_Restore_From_Powerdown, + ROM_API_INDEX_SFlash_SetBurstWrap, + ROM_API_INDEX_SFlash_DisableBurstWrap, + ROM_API_INDEX_SFlash_Software_Reset, + ROM_API_INDEX_SFlash_Reset_Continue_Read, + ROM_API_INDEX_SFlash_Set_IDbus_Cfg, + ROM_API_INDEX_SFlash_IDbus_Read_Enable, + ROM_API_INDEX_SFlash_Cache_Read_Enable, + ROM_API_INDEX_SFlash_Cache_Read_Disable, + ROM_API_INDEX_SFlash_Read, + + ROM_API_INDEX_L1C_Cache_Enable_Set, + ROM_API_INDEX_L1C_Cache_Write_Set, + ROM_API_INDEX_L1C_Cache_Flush, + ROM_API_INDEX_L1C_Cache_Hit_Count_Get, + ROM_API_INDEX_L1C_Cache_Miss_Count_Get, + ROM_API_INDEX_L1C_Cache_Read_Disable, + ROM_API_INDEX_L1C_Set_Wrap, + ROM_API_INDEX_L1C_Set_Way_Disable, + ROM_API_INDEX_L1C_IROM_2T_Access_Set, + + ROM_API_INDEX_SF_Ctrl_Enable, + ROM_API_INDEX_SF_Ctrl_Psram_Init, + ROM_API_INDEX_SF_Ctrl_Get_Clock_Delay, + ROM_API_INDEX_SF_Ctrl_Set_Clock_Delay, + ROM_API_INDEX_SF_Ctrl_Cmds_Set, + ROM_API_INDEX_SF_Ctrl_Set_Owner, + ROM_API_INDEX_SF_Ctrl_Disable, + ROM_API_INDEX_SF_Ctrl_Select_Pad, + ROM_API_INDEX_SF_Ctrl_Select_Bank, + ROM_API_INDEX_SF_Ctrl_AES_Enable_BE, + ROM_API_INDEX_SF_Ctrl_AES_Enable_LE, + ROM_API_INDEX_SF_Ctrl_AES_Set_Region, + ROM_API_INDEX_SF_Ctrl_AES_Set_Key, + ROM_API_INDEX_SF_Ctrl_AES_Set_Key_BE, + ROM_API_INDEX_SF_Ctrl_AES_Set_IV, + ROM_API_INDEX_SF_Ctrl_AES_Set_IV_BE, + ROM_API_INDEX_SF_Ctrl_AES_Enable, + ROM_API_INDEX_SF_Ctrl_AES_Disable, + ROM_API_INDEX_SF_Ctrl_Is_AES_Enable, + ROM_API_INDEX_SF_Ctrl_Set_Flash_Image_Offset, + ROM_API_INDEX_SF_Ctrl_Get_Flash_Image_Offset, + ROM_API_INDEX_SF_Ctrl_Select_Clock, + ROM_API_INDEX_SF_Ctrl_SendCmd, + ROM_API_INDEX_SF_Ctrl_Flash_Read_Icache_Set, + ROM_API_INDEX_SF_Ctrl_Psram_Write_Icache_Set, + ROM_API_INDEX_SF_Ctrl_Psram_Read_Icache_Set, + ROM_API_INDEX_SF_Ctrl_GetBusyState, + ROM_API_INDEX_SF_Cfg_Deinit_Ext_Flash_Gpio, + ROM_API_INDEX_SF_Cfg_Init_Ext_Flash_Gpio, + ROM_API_INDEX_SF_Cfg_Get_Flash_Cfg_Need_Lock, + ROM_API_INDEX_SF_Cfg_Init_Flash_Gpio, + ROM_API_INDEX_SF_Cfg_Flash_Identify, + + ROM_API_INDEX_Psram_Init, + ROM_API_INDEX_Psram_ReadReg, + ROM_API_INDEX_Psram_WriteReg, + ROM_API_INDEX_Psram_SetDriveStrength, + ROM_API_INDEX_Psram_SetBurstWrap, + ROM_API_INDEX_Psram_ReadId, + ROM_API_INDEX_Psram_EnterQuadMode, + ROM_API_INDEX_Psram_ExitQuadMode, + ROM_API_INDEX_Psram_ToggleBurstLength, + ROM_API_INDEX_Psram_SoftwareReset, + ROM_API_INDEX_Psram_Set_IDbus_Cfg, + ROM_API_INDEX_Psram_Cache_Write_Set, + ROM_API_INDEX_Psram_Write, + ROM_API_INDEX_Psram_Read, + + ROM_API_INDEX_FUNC_LAST = ROM_API_INDEX_Psram_Read, + + ROM_API_INDEX_FUNC_INVALID_START, + + ROM_API_INDEX_FUNC_LAST_ENTRY = ROMAPI_INDEX_MAX +} ROM_API_INDEX_e; + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup ROMDRIVER + * @{ + */ + +/** @defgroup ROMDRIVER_Public_Types + * @{ + */ +#define ROM_APITABLE ((uint32_t *)0x21018800) + +#define RomDriver_AON_Power_On_MBG \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_AON_Power_On_MBG]) +#define RomDriver_AON_Power_Off_MBG \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_AON_Power_Off_MBG]) +#define RomDriver_AON_Power_On_XTAL \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_AON_Power_On_XTAL]) +#define RomDriver_AON_Set_Xtal_CapCode \ + ((BL_Err_Type (*)(uint8_t capIn,uint8_t capOut))ROM_APITABLE[ROM_API_INDEX_AON_Set_Xtal_CapCode]) +#define RomDriver_AON_Power_Off_XTAL \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_AON_Power_Off_XTAL]) + +#define RomDriver_ASM_Delay_Us \ + ((void (*)(uint32_t core,uint32_t cnt))ROM_APITABLE[ROM_API_INDEX_ASM_Delay_Us]) +#define RomDriver_BL702_Delay_US \ + ((void (*)(uint32_t cnt))ROM_APITABLE[ROM_API_INDEX_BL702_Delay_US]) +#define RomDriver_BL702_Delay_MS \ + ((void (*)(uint32_t cnt))ROM_APITABLE[ROM_API_INDEX_BL702_Delay_MS]) +#define RomDriver_BL702_MemCpy \ + ((void* (*)(void *dst, const void *src, uint32_t n))ROM_APITABLE[ROM_API_INDEX_BL702_MemCpy]) +#define RomDriver_BL702_MemCpy4 \ + ((uint32_t* (*)(uint32_t *dst, const uint32_t *src, uint32_t n))ROM_APITABLE[ROM_API_INDEX_BL702_MemCpy4]) +#define RomDriver_BL702_MemCpy_Fast \ + ((void* (*)(void *pdst, const void *psrc, uint32_t n))ROM_APITABLE[ROM_API_INDEX_BL702_MemCpy_Fast]) +#define RomDriver_ARCH_MemCpy_Fast \ + ((void* (*)(void *pdst, const void *psrc, uint32_t n))ROM_APITABLE[ROM_API_INDEX_ARCH_MemCpy_Fast]) +#define RomDriver_BL702_MemSet \ + ((void* (*)(void *s, uint8_t c, uint32_t n))ROM_APITABLE[ROM_API_INDEX_BL702_MemSet]) +#define RomDriver_BL702_MemSet4 \ + ((uint32_t* (*)(uint32_t *dst, const uint32_t val, uint32_t n))ROM_APITABLE[ROM_API_INDEX_BL702_MemSet4]) +#define RomDriver_BL702_MemCmp \ + ((int (*)(const void *s1, const void *s2, uint32_t n))ROM_APITABLE[ROM_API_INDEX_BL702_MemCmp]) +#define RomDriver_BFLB_Soft_CRC32 \ + ((uint32_t (*)(void *dataIn, uint32_t len))ROM_APITABLE[ROM_API_INDEX_BFLB_Soft_CRC32]) + +#define RomDriver_GLB_Get_Root_CLK_Sel \ + ((GLB_ROOT_CLK_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_Get_Root_CLK_Sel]) +#define RomDriver_GLB_Set_System_CLK_Div \ + ((BL_Err_Type (*)(uint8_t hclkDiv,uint8_t bclkDiv))ROM_APITABLE[ROM_API_INDEX_GLB_Set_System_CLK_Div]) +#define RomDriver_GLB_Get_BCLK_Div \ + ((uint8_t (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_Get_BCLK_Div]) +#define RomDriver_GLB_Get_HCLK_Div \ + ((uint8_t (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_Get_HCLK_Div]) +#define RomDriver_Update_SystemCoreClockWith_XTAL \ + ((BL_Err_Type (*)(GLB_DLL_XTAL_Type xtalType))ROM_APITABLE[ROM_API_INDEX_Update_SystemCoreClockWith_XTAL]) +#define RomDriver_GLB_Set_System_CLK \ + ((BL_Err_Type (*)(GLB_DLL_XTAL_Type xtalType,GLB_SYS_CLK_Type clkFreq))ROM_APITABLE[ROM_API_INDEX_GLB_Set_System_CLK]) +#define RomDriver_System_Core_Clock_Update_From_RC32M \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_System_Core_Clock_Update_From_RC32M]) +#define RomDriver_GLB_Set_SF_CLK \ + ((BL_Err_Type (*)(uint8_t enable,GLB_SFLASH_CLK_Type clkSel,uint8_t div))ROM_APITABLE[ROM_API_INDEX_GLB_Set_SF_CLK]) +#define RomDriver_GLB_Power_Off_DLL \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_Power_Off_DLL]) +#define RomDriver_GLB_Power_On_DLL \ + ((BL_Err_Type (*)(GLB_DLL_XTAL_Type xtalType))ROM_APITABLE[ROM_API_INDEX_GLB_Power_On_DLL]) +#define RomDriver_GLB_Enable_DLL_All_Clks \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_Enable_DLL_All_Clks]) +#define RomDriver_GLB_Enable_DLL_Clk \ + ((BL_Err_Type (*)(GLB_DLL_CLK_Type dllClk))ROM_APITABLE[ROM_API_INDEX_GLB_Enable_DLL_Clk]) +#define RomDriver_GLB_Disable_DLL_All_Clks \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_Disable_DLL_All_Clks]) +#define RomDriver_GLB_Disable_DLL_Clk \ + ((BL_Err_Type (*)(GLB_DLL_CLK_Type dllClk))ROM_APITABLE[ROM_API_INDEX_GLB_Disable_DLL_Clk]) +#define RomDriver_GLB_SW_System_Reset \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_SW_System_Reset]) +#define RomDriver_GLB_SW_CPU_Reset \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_SW_CPU_Reset]) +#define RomDriver_GLB_SW_POR_Reset \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_SW_POR_Reset]) +#define RomDriver_GLB_Select_Internal_Flash \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_Select_Internal_Flash]) +#define RomDriver_GLB_Swap_Flash_Pin \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_Swap_Flash_Pin]) +#define RomDriver_GLB_Swap_Flash_CS_IO2_Pin \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_Swap_Flash_CS_IO2_Pin]) +#define RomDriver_GLB_Swap_Flash_IO0_IO3_Pin \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_Swap_Flash_IO0_IO3_Pin]) +#define RomDriver_GLB_Select_Internal_PSram \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_Select_Internal_PSram]) +#define RomDriver_GLB_GPIO_Init \ + ((BL_Err_Type (*)(GLB_GPIO_Cfg_Type *cfg))ROM_APITABLE[ROM_API_INDEX_GLB_GPIO_Init]) +#define RomDriver_GLB_GPIO_OUTPUT_Enable \ + ((BL_Err_Type (*)(GLB_GPIO_Type gpioPin))ROM_APITABLE[ROM_API_INDEX_GLB_GPIO_OUTPUT_Enable]) +#define RomDriver_GLB_GPIO_OUTPUT_Disable \ + ((BL_Err_Type (*)(GLB_GPIO_Type gpioPin))ROM_APITABLE[ROM_API_INDEX_GLB_GPIO_OUTPUT_Disable]) +#define RomDriver_GLB_GPIO_Set_HZ \ + ((BL_Err_Type (*)(GLB_GPIO_Type gpioPin))ROM_APITABLE[ROM_API_INDEX_GLB_GPIO_Set_HZ]) +#define RomDriver_GLB_Deswap_Flash_Pin \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_Deswap_Flash_Pin]) +#define RomDriver_GLB_Select_External_Flash \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_GLB_Select_External_Flash]) +#define RomDriver_GLB_GPIO_Get_Fun \ + ((uint8_t (*)(GLB_GPIO_Type gpioPin))ROM_APITABLE[ROM_API_INDEX_GLB_GPIO_Get_Fun]) + +#define RomDriver_EF_Ctrl_Busy \ + ((BL_Sts_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_EF_Ctrl_Busy]) +#define RomDriver_EF_Ctrl_Sw_AHB_Clk_0 \ + ((void (*)(void))ROM_APITABLE[ROM_API_INDEX_EF_Ctrl_Sw_AHB_Clk_0]) +#define RomDriver_EF_Ctrl_Load_Efuse_R0 \ + ((void (*)(void))ROM_APITABLE[ROM_API_INDEX_EF_Ctrl_Load_Efuse_R0]) +#define RomDriver_EF_Ctrl_Clear \ + ((void (*)(uint32_t index, uint32_t len))ROM_APITABLE[ROM_API_INDEX_EF_Ctrl_Clear]) +#define RomDriver_EF_Ctrl_Get_Trim_Parity \ + ((uint8_t (*)(uint32_t val,uint8_t len))ROM_APITABLE[ROM_API_INDEX_EF_Ctrl_Get_Trim_Parity]) +#define RomDriver_EF_Ctrl_Read_RC32K_Trim \ + ((void (*)(Efuse_Ana_RC32K_Trim_Type *trim))ROM_APITABLE[ROM_API_INDEX_EF_Ctrl_Read_RC32K_Trim]) +#define RomDriver_EF_Ctrl_Read_RC32M_Trim \ + ((void (*)(Efuse_Ana_RC32M_Trim_Type *trim))ROM_APITABLE[ROM_API_INDEX_EF_Ctrl_Read_RC32M_Trim]) + +#define RomDriver_PDS_Trim_RC32M \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_PDS_Trim_RC32M]) +#define RomDriver_PDS_Select_RC32M_As_PLL_Ref \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_PDS_Select_RC32M_As_PLL_Ref]) +#define RomDriver_PDS_Select_XTAL_As_PLL_Ref \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_PDS_Select_XTAL_As_PLL_Ref]) +#define RomDriver_PDS_Power_On_PLL \ + ((BL_Err_Type (*)(PDS_PLL_XTAL_Type xtalType))ROM_APITABLE[ROM_API_INDEX_PDS_Power_On_PLL]) +#define RomDriver_PDS_Enable_PLL_All_Clks \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_PDS_Enable_PLL_All_Clks]) +#define RomDriver_PDS_Disable_PLL_All_Clks \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_PDS_Disable_PLL_All_Clks]) +#define RomDriver_PDS_Enable_PLL_Clk \ + ((BL_Err_Type (*)(PDS_PLL_CLK_Type pllClk))ROM_APITABLE[ROM_API_INDEX_PDS_Enable_PLL_Clk]) +#define RomDriver_PDS_Disable_PLL_Clk \ + ((BL_Err_Type (*)(PDS_PLL_CLK_Type pllClk))ROM_APITABLE[ROM_API_INDEX_PDS_Disable_PLL_Clk]) +#define RomDriver_PDS_Power_Off_PLL \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_PDS_Power_Off_PLL]) +#define RomDriver_PDS_Reset \ + ((void (*)(void))ROM_APITABLE[ROM_API_INDEX_PDS_Reset]) +#define RomDriver_PDS_Enable \ + ((void (*)(PDS_CFG_Type *cfg,uint32_t pdsSleepCnt))ROM_APITABLE[ROM_API_INDEX_PDS_Enable]) +#define RomDriver_PDS_Auto_Time_Config \ + ((void (*)(uint32_t sleepDuration))ROM_APITABLE[ROM_API_INDEX_PDS_Auto_Time_Config]) +#define RomDriver_PDS_Auto_Enable \ + ((void (*)(PDS_AUTO_POWER_DOWN_CFG_Type *powerCfg, PDS_AUTO_NORMAL_CFG_Type *normalCfg, BL_Fun_Type enable))ROM_APITABLE[ROM_API_INDEX_PDS_Auto_Enable]) +#define RomDriver_PDS_Manual_Force_Turn_Off \ + ((void (*)(PDS_FORCE_Type domain))ROM_APITABLE[ROM_API_INDEX_PDS_Manual_Force_Turn_Off]) +#define RomDriver_PDS_Manual_Force_Turn_On \ + ((void (*)(PDS_FORCE_Type domain))ROM_APITABLE[ROM_API_INDEX_PDS_Manual_Force_Turn_On]) + +#define RomDriver_HBN_Enable \ + ((void (*)(uint8_t aGPIOIeCfg,HBN_LDO_LEVEL_Type ldoLevel,HBN_LEVEL_Type hbnLevel))ROM_APITABLE[ROM_API_INDEX_HBN_Enable]) +#define RomDriver_HBN_Reset \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_HBN_Reset]) +#define RomDriver_HBN_GPIO_Dbg_Pull_Cfg \ + ((BL_Err_Type (*)(BL_Fun_Type pupdEn,BL_Fun_Type dlyEn,uint8_t dlySec,HBN_INT_Type gpioIrq,BL_Mask_Type gpioMask))ROM_APITABLE[ROM_API_INDEX_HBN_GPIO_Dbg_Pull_Cfg]) +#define RomDriver_HBN_Trim_RC32K \ + ((BL_Err_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_HBN_Trim_RC32K]) +#define RomDriver_HBN_Set_ROOT_CLK_Sel \ + ((BL_Err_Type (*)(HBN_ROOT_CLK_Type rootClk))ROM_APITABLE[ROM_API_INDEX_HBN_Set_ROOT_CLK_Sel]) + +#define RomDriver_XIP_SFlash_State_Save \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *pFlashCfg,uint32_t *offset))ROM_APITABLE[ROM_API_INDEX_XIP_SFlash_State_Save]) +#define RomDriver_XIP_SFlash_State_Restore \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t offset))ROM_APITABLE[ROM_API_INDEX_XIP_SFlash_State_Restore]) +#define RomDriver_XIP_SFlash_Erase_Need_Lock \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t startaddr,uint32_t endaddr))ROM_APITABLE[ROM_API_INDEX_XIP_SFlash_Erase_Need_Lock]) +#define RomDriver_XIP_SFlash_Write_Need_Lock \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr,uint8_t *data, uint32_t len))ROM_APITABLE[ROM_API_INDEX_XIP_SFlash_Write_Need_Lock]) +#define RomDriver_XIP_SFlash_Read_Need_Lock \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr,uint8_t *data, uint32_t len))ROM_APITABLE[ROM_API_INDEX_XIP_SFlash_Read_Need_Lock]) +#define RomDriver_XIP_SFlash_GetJedecId_Need_Lock \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint8_t *data))ROM_APITABLE[ROM_API_INDEX_XIP_SFlash_GetJedecId_Need_Lock]) +#define RomDriver_XIP_SFlash_GetDeviceId_Need_Lock \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint8_t *data))ROM_APITABLE[ROM_API_INDEX_XIP_SFlash_GetDeviceId_Need_Lock]) +#define RomDriver_XIP_SFlash_GetUniqueId_Need_Lock \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint8_t *data,uint8_t idLen))ROM_APITABLE[ROM_API_INDEX_XIP_SFlash_GetUniqueId_Need_Lock]) +#define RomDriver_XIP_SFlash_Read_Via_Cache_Need_Lock \ + ((BL_Err_Type (*)(uint32_t addr,uint8_t *data, uint32_t len))ROM_APITABLE[ROM_API_INDEX_XIP_SFlash_Read_Via_Cache_Need_Lock]) +#define RomDriver_XIP_SFlash_Read_With_Lock \ + ((int (*)(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr, uint8_t *dst, int len))ROM_APITABLE[ROM_API_INDEX_XIP_SFlash_Read_With_Lock]) +#define RomDriver_XIP_SFlash_Write_With_Lock \ + ((int (*)(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr, uint8_t *src, int len))ROM_APITABLE[ROM_API_INDEX_XIP_SFlash_Write_With_Lock]) +#define RomDriver_XIP_SFlash_Erase_With_Lock \ + ((int (*)(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr, int len))ROM_APITABLE[ROM_API_INDEX_XIP_SFlash_Erase_With_Lock]) + +#define RomDriver_SFlash_Init \ + ((void (*)(const SF_Ctrl_Cfg_Type *pSfCtrlCfg))ROM_APITABLE[ROM_API_INDEX_SFlash_Init]) +#define RomDriver_SFlash_SetSPIMode \ + ((BL_Err_Type (*)(SF_Ctrl_Mode_Type mode))ROM_APITABLE[ROM_API_INDEX_SFlash_SetSPIMode]) +#define RomDriver_SFlash_Read_Reg \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg,uint8_t regIndex,uint8_t *regValue,uint8_t regLen))ROM_APITABLE[ROM_API_INDEX_SFlash_Read_Reg]) +#define RomDriver_SFlash_Write_Reg \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg,uint8_t regIndex,uint8_t *regValue,uint8_t regLen))ROM_APITABLE[ROM_API_INDEX_SFlash_Write_Reg]) +#define RomDriver_SFlash_Read_Reg_With_Cmd \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg,uint8_t readRegCmd,uint8_t *regValue,uint8_t regLen))ROM_APITABLE[ROM_API_INDEX_SFlash_Read_Reg_With_Cmd]) +#define RomDriver_SFlash_Write_Reg_With_Cmd \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg,uint8_t writeRegCmd,uint8_t *regValue,uint8_t regLen))ROM_APITABLE[ROM_API_INDEX_SFlash_Write_Reg_With_Cmd]) +#define RomDriver_SFlash_Busy \ + ((BL_Sts_Type (*)(SPI_Flash_Cfg_Type *flashCfg))ROM_APITABLE[ROM_API_INDEX_SFlash_Busy]) +#define RomDriver_SFlash_Write_Enable \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg))ROM_APITABLE[ROM_API_INDEX_SFlash_Write_Enable]) +#define RomDriver_SFlash_Qspi_Enable \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg))ROM_APITABLE[ROM_API_INDEX_SFlash_Qspi_Enable]) +#define RomDriver_SFlash_Volatile_Reg_Write_Enable \ + ((void (*)(SPI_Flash_Cfg_Type *flashCfg))ROM_APITABLE[ROM_API_INDEX_SFlash_Volatile_Reg_Write_Enable]) +#define RomDriver_SFlash_Chip_Erase \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg))ROM_APITABLE[ROM_API_INDEX_SFlash_Chip_Erase]) +#define RomDriver_SFlash_Sector_Erase \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg,uint32_t secNum))ROM_APITABLE[ROM_API_INDEX_SFlash_Sector_Erase]) +#define RomDriver_SFlash_Blk32_Erase \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg,uint32_t blkNum))ROM_APITABLE[ROM_API_INDEX_SFlash_Blk32_Erase]) +#define RomDriver_SFlash_Blk64_Erase \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg,uint32_t blkNum))ROM_APITABLE[ROM_API_INDEX_SFlash_Blk64_Erase]) +#define RomDriver_SFlash_Erase \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg,uint32_t startaddr,uint32_t endaddr))ROM_APITABLE[ROM_API_INDEX_SFlash_Erase]) +#define RomDriver_SFlash_Program \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr,uint8_t *data, uint32_t len))ROM_APITABLE[ROM_API_INDEX_SFlash_Program]) +#define RomDriver_SFlash_GetUniqueId \ + ((void (*)(uint8_t *data,uint8_t idLen))ROM_APITABLE[ROM_API_INDEX_SFlash_GetUniqueId]) +#define RomDriver_SFlash_GetJedecId \ + ((void (*)(SPI_Flash_Cfg_Type *flashCfg,uint8_t *data))ROM_APITABLE[ROM_API_INDEX_SFlash_GetJedecId]) +#define RomDriver_SFlash_GetDeviceId \ + ((void (*)(uint8_t *data))ROM_APITABLE[ROM_API_INDEX_SFlash_GetDeviceId]) +#define RomDriver_SFlash_Powerdown \ + ((void (*)(void))ROM_APITABLE[ROM_API_INDEX_SFlash_Powerdown]) +#define RomDriver_SFlash_Releae_Powerdown \ + ((void (*)(SPI_Flash_Cfg_Type *flashCfg))ROM_APITABLE[ROM_API_INDEX_SFlash_Releae_Powerdown]) +#define RomDriver_SFlash_Restore_From_Powerdown \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *pFlashCfg,uint8_t flashContRead))ROM_APITABLE[ROM_API_INDEX_SFlash_Restore_From_Powerdown]) +#define RomDriver_SFlash_SetBurstWrap \ + ((void (*)(SPI_Flash_Cfg_Type *flashCfg))ROM_APITABLE[ROM_API_INDEX_SFlash_SetBurstWrap]) +#define RomDriver_SFlash_DisableBurstWrap \ + ((void (*)(SPI_Flash_Cfg_Type *flashCfg))ROM_APITABLE[ROM_API_INDEX_SFlash_DisableBurstWrap]) +#define RomDriver_SFlash_Software_Reset \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg))ROM_APITABLE[ROM_API_INDEX_SFlash_Software_Reset]) +#define RomDriver_SFlash_Reset_Continue_Read \ + ((void (*)(SPI_Flash_Cfg_Type *flashCfg))ROM_APITABLE[ROM_API_INDEX_SFlash_Reset_Continue_Read]) +#define RomDriver_SFlash_Set_IDbus_Cfg \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg,SF_Ctrl_IO_Type ioMode,uint8_t contRead,uint32_t addr,uint32_t len))ROM_APITABLE[ROM_API_INDEX_SFlash_Set_IDbus_Cfg]) +#define RomDriver_SFlash_IDbus_Read_Enable \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg,SF_Ctrl_IO_Type ioMode,uint8_t contRead))ROM_APITABLE[ROM_API_INDEX_SFlash_IDbus_Read_Enable]) +#define RomDriver_SFlash_Cache_Read_Enable \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg,SF_Ctrl_IO_Type ioMode,uint8_t contRead,uint8_t wayDisable))ROM_APITABLE[ROM_API_INDEX_SFlash_Cache_Read_Enable]) +#define RomDriver_SFlash_Cache_Read_Disable \ + ((void (*)(void))ROM_APITABLE[ROM_API_INDEX_SFlash_Cache_Read_Disable]) +#define RomDriver_SFlash_Read \ + ((BL_Err_Type (*)(SPI_Flash_Cfg_Type *flashCfg,SF_Ctrl_IO_Type ioMode,uint8_t contRead,uint32_t addr,uint8_t *data, uint32_t len))ROM_APITABLE[ROM_API_INDEX_SFlash_Read]) + +#define RomDriver_L1C_Cache_Enable_Set \ + ((BL_Err_Type (*)(uint8_t wayDisable))ROM_APITABLE[ROM_API_INDEX_L1C_Cache_Enable_Set]) +#define RomDriver_L1C_Cache_Write_Set \ + ((void (*)(BL_Fun_Type wtEn, BL_Fun_Type wbEn, BL_Fun_Type waEn))ROM_APITABLE[ROM_API_INDEX_L1C_Cache_Write_Set]) +#define RomDriver_L1C_Cache_Flush \ + ((BL_Err_Type (*)(uint8_t wayDisable))ROM_APITABLE[ROM_API_INDEX_L1C_Cache_Flush]) +#define RomDriver_L1C_Cache_Hit_Count_Get \ + ((void (*)(uint32_t *hitCountLow,uint32_t *hitCountHigh))ROM_APITABLE[ROM_API_INDEX_L1C_Cache_Hit_Count_Get]) +#define RomDriver_L1C_Cache_Miss_Count_Get \ + ((uint32_t (*)(void))ROM_APITABLE[ROM_API_INDEX_L1C_Cache_Miss_Count_Get]) +#define RomDriver_L1C_Cache_Read_Disable \ + ((void (*)(void))ROM_APITABLE[ROM_API_INDEX_L1C_Cache_Read_Disable]) +#define RomDriver_L1C_Set_Wrap \ + ((BL_Err_Type (*)(BL_Fun_Type wrap))ROM_APITABLE[ROM_API_INDEX_L1C_Set_Wrap]) +#define RomDriver_L1C_Set_Way_Disable \ + ((BL_Err_Type (*)(uint8_t disableVal))ROM_APITABLE[ROM_API_INDEX_L1C_Set_Way_Disable]) +#define RomDriver_L1C_IROM_2T_Access_Set \ + ((BL_Err_Type (*)(uint8_t enable))ROM_APITABLE[ROM_API_INDEX_L1C_IROM_2T_Access_Set]) + +#define RomDriver_SF_Ctrl_Enable \ + ((void (*)(const SF_Ctrl_Cfg_Type *cfg))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Enable]) +#define RomDriver_SF_Ctrl_Psram_Init \ + ((void (*)(SF_Ctrl_Psram_Cfg *sfCtrlPsramCfg))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Psram_Init]) +#define RomDriver_SF_Ctrl_Get_Clock_Delay \ + ((uint8_t (*)(void))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Get_Clock_Delay]) +#define RomDriver_SF_Ctrl_Set_Clock_Delay \ + ((void (*)(uint8_t delay))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Set_Clock_Delay]) +#define RomDriver_SF_Ctrl_Cmds_Set \ + ((void (*)(SF_Ctrl_Cmds_Cfg *cmdsCfg))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Cmds_Set]) +#define RomDriver_SF_Ctrl_Set_Owner \ + ((void (*)(SF_Ctrl_Owner_Type owner))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Set_Owner]) +#define RomDriver_SF_Ctrl_Disable \ + ((void (*)(void))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Disable]) +#define RomDriver_SF_Ctrl_Select_Pad \ + ((void (*)(SF_Ctrl_Pad_Select sel))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Select_Pad]) +#define RomDriver_SF_Ctrl_Select_Bank \ + ((void (*)(SF_Ctrl_Select sel))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Select_Bank]) +#define RomDriver_SF_Ctrl_AES_Enable_BE \ + ((void (*)(void))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_AES_Enable_BE]) +#define RomDriver_SF_Ctrl_AES_Enable_LE \ + ((void (*)(void))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_AES_Enable_LE]) +#define RomDriver_SF_Ctrl_AES_Set_Region \ + ((void (*)(uint8_t region,uint8_t enable,uint8_t hwKey,uint32_t startAddr,uint32_t endAddr,uint8_t locked))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_AES_Set_Region]) +#define RomDriver_SF_Ctrl_AES_Set_Key \ + ((void (*)(uint8_t region,uint8_t *key, SF_Ctrl_AES_Key_Type keyType))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_AES_Set_Key]) +#define RomDriver_SF_Ctrl_AES_Set_Key_BE \ + ((void (*)(uint8_t region,uint8_t *key, SF_Ctrl_AES_Key_Type keyType))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_AES_Set_Key_BE]) +#define RomDriver_SF_Ctrl_AES_Set_IV \ + ((void (*)(uint8_t region,uint8_t *iv,uint32_t addrOffset))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_AES_Set_IV]) +#define RomDriver_SF_Ctrl_AES_Set_IV_BE \ + ((void (*)(uint8_t region,uint8_t *iv,uint32_t addrOffset))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_AES_Set_IV_BE]) +#define RomDriver_SF_Ctrl_AES_Enable \ + ((void (*)(void))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_AES_Enable]) +#define RomDriver_SF_Ctrl_AES_Disable \ + ((void (*)(void))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_AES_Disable]) +#define RomDriver_SF_Ctrl_Is_AES_Enable \ + ((uint8_t (*)(void))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Is_AES_Enable]) +#define RomDriver_SF_Ctrl_Set_Flash_Image_Offset \ + ((void (*)(uint32_t addrOffset))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Set_Flash_Image_Offset]) +#define RomDriver_SF_Ctrl_Get_Flash_Image_Offset \ + ((uint32_t (*)(void))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Get_Flash_Image_Offset]) +#define RomDriver_SF_Ctrl_Select_Clock \ + ((void (*)(SF_Ctrl_Sahb_Type sahbType))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Select_Clock]) +#define RomDriver_SF_Ctrl_SendCmd \ + ((void (*)(SF_Ctrl_Cmd_Cfg_Type *cfg))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_SendCmd]) +#define RomDriver_SF_Ctrl_Flash_Read_Icache_Set \ + ((void (*)(SF_Ctrl_Cmd_Cfg_Type *cfg,uint8_t cmdValid))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Flash_Read_Icache_Set]) +#define RomDriver_SF_Ctrl_Psram_Write_Icache_Set \ + ((void (*)(SF_Ctrl_Cmd_Cfg_Type *cfg,uint8_t cmdValid))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Psram_Write_Icache_Set]) +#define RomDriver_SF_Ctrl_Psram_Read_Icache_Set \ + ((void (*)(SF_Ctrl_Cmd_Cfg_Type *cfg,uint8_t cmdValid))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_Psram_Read_Icache_Set]) +#define RomDriver_SF_Ctrl_GetBusyState \ + ((BL_Sts_Type (*)(void))ROM_APITABLE[ROM_API_INDEX_SF_Ctrl_GetBusyState]) +#define RomDriver_SF_Cfg_Deinit_Ext_Flash_Gpio \ + ((void (*)(uint8_t extFlashPin))ROM_APITABLE[ROM_API_INDEX_SF_Cfg_Deinit_Ext_Flash_Gpio]) +#define RomDriver_SF_Cfg_Init_Ext_Flash_Gpio \ + ((void (*)(uint8_t extFlashPin))ROM_APITABLE[ROM_API_INDEX_SF_Cfg_Init_Ext_Flash_Gpio]) +#define RomDriver_SF_Cfg_Get_Flash_Cfg_Need_Lock \ + ((BL_Err_Type (*)(uint32_t flashID,SPI_Flash_Cfg_Type * pFlashCfg))ROM_APITABLE[ROM_API_INDEX_SF_Cfg_Get_Flash_Cfg_Need_Lock]) +#define RomDriver_SF_Cfg_Init_Flash_Gpio \ + ((void (*)(uint8_t flashPinCfg,uint8_t restoreDefault))ROM_APITABLE[ROM_API_INDEX_SF_Cfg_Init_Flash_Gpio]) +#define RomDriver_SF_Cfg_Flash_Identify \ + ((uint32_t (*)(uint8_t callFromFlash,uint32_t autoScan,uint32_t flashPinCfg,uint8_t restoreDefault, SPI_Flash_Cfg_Type * pFlashCfg))ROM_APITABLE[ROM_API_INDEX_SF_Cfg_Flash_Identify]) + +#define RomDriver_Psram_Init \ + ((void (*)(SPI_Psram_Cfg_Type *psramCfg, SF_Ctrl_Cmds_Cfg *cmdsCfg, SF_Ctrl_Psram_Cfg *sfCtrlPsramCfg))ROM_APITABLE[ROM_API_INDEX_Psram_Init]) +#define RomDriver_Psram_ReadReg \ + ((void (*)(SPI_Psram_Cfg_Type *psramCfg, uint8_t *regValue))ROM_APITABLE[ROM_API_INDEX_Psram_ReadReg]) +#define RomDriver_Psram_WriteReg \ + ((void (*)(SPI_Psram_Cfg_Type *psramCfg, uint8_t *regValue))ROM_APITABLE[ROM_API_INDEX_Psram_WriteReg]) +#define RomDriver_Psram_SetDriveStrength \ + ((BL_Err_Type (*)(SPI_Psram_Cfg_Type *psramCfg))ROM_APITABLE[ROM_API_INDEX_Psram_SetDriveStrength]) +#define RomDriver_Psram_SetBurstWrap \ + ((BL_Err_Type (*)(SPI_Psram_Cfg_Type *psramCfg))ROM_APITABLE[ROM_API_INDEX_Psram_SetBurstWrap]) +#define RomDriver_Psram_ReadId \ + ((void (*)(SPI_Psram_Cfg_Type *psramCfg, uint8_t *data))ROM_APITABLE[ROM_API_INDEX_Psram_ReadId]) +#define RomDriver_Psram_EnterQuadMode \ + ((BL_Err_Type (*)(SPI_Psram_Cfg_Type *psramCfg))ROM_APITABLE[ROM_API_INDEX_Psram_EnterQuadMode]) +#define RomDriver_Psram_ExitQuadMode \ + ((BL_Err_Type (*)(SPI_Psram_Cfg_Type *psramCfg))ROM_APITABLE[ROM_API_INDEX_Psram_ExitQuadMode]) +#define RomDriver_Psram_ToggleBurstLength \ + ((BL_Err_Type (*)(SPI_Psram_Cfg_Type *psramCfg, PSRAM_Ctrl_Mode ctrlMode))ROM_APITABLE[ROM_API_INDEX_Psram_ToggleBurstLength]) +#define RomDriver_Psram_SoftwareReset \ + ((BL_Err_Type (*)(SPI_Psram_Cfg_Type *psramCfg, PSRAM_Ctrl_Mode ctrlMode))ROM_APITABLE[ROM_API_INDEX_Psram_SoftwareReset]) +#define RomDriver_Psram_Set_IDbus_Cfg \ + ((BL_Err_Type (*)(SPI_Psram_Cfg_Type *psramCfg, SF_Ctrl_IO_Type ioMode, uint32_t addr, uint32_t len))ROM_APITABLE[ROM_API_INDEX_Psram_Set_IDbus_Cfg]) +#define RomDriver_Psram_Cache_Write_Set \ + ((BL_Err_Type (*)(SPI_Psram_Cfg_Type *psramCfg, SF_Ctrl_IO_Type ioMode, BL_Fun_Type wtEn, BL_Fun_Type wbEn, BL_Fun_Type waEn))ROM_APITABLE[ROM_API_INDEX_Psram_Cache_Write_Set]) +#define RomDriver_Psram_Write \ + ((BL_Err_Type (*)(SPI_Psram_Cfg_Type *psramCfg, SF_Ctrl_IO_Type ioMode, uint32_t addr, uint8_t *data, uint32_t len))ROM_APITABLE[ROM_API_INDEX_Psram_Write]) +#define RomDriver_Psram_Read \ + ((BL_Err_Type (*)(SPI_Psram_Cfg_Type *psramCfg, SF_Ctrl_IO_Type ioMode, uint32_t addr, uint8_t *data, uint32_t len))ROM_APITABLE[ROM_API_INDEX_Psram_Read]) +/*@} end of group ROMDRIVER_Public_Types */ + +/** @defgroup ROMDRIVER_Public_Constants + * @{ + */ + +/*@} end of group ROMDRIVER_Public_Constants */ + +/** @defgroup ROMDRIVER_Public_Macros + * @{ + */ + +/*@} end of group ROMDRIVER_Public_Macros */ + +/** @defgroup ROMDRIVER_Public_Functions + * @{ + */ + +/*@} end of group ROMDRIVER_Public_Functions */ + +/*@} end of group ROMDRIVER */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_ROMDRIVER_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_sec_dbg.h b/drivers/bl702_driver/std_drv/inc/bl702_sec_dbg.h new file mode 100644 index 00000000..05c35e36 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_sec_dbg.h @@ -0,0 +1,82 @@ +/** + ****************************************************************************** + * @file bl702_sec_dbg.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_SEC_DBG_H__ +#define __BL702_SEC_DBG_H__ + +#include "sec_dbg_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SEC_DBG + * @{ + */ + +/** @defgroup SEC_DBG_Public_Types + * @{ + */ + +/*@} end of group SEC_DBG_Public_Types */ + +/** @defgroup SEC_DBG_Public_Constants + * @{ + */ + +/*@} end of group SEC_DBG_Public_Constants */ + +/** @defgroup SEC_DBG_Public_Macros + * @{ + */ + +/*@} end of group SEC_DBG_Public_Macros */ + +/** @defgroup SEC_DBG_Public_Functions + * @{ + */ +void Sec_Dbg_Read_Chip_ID(uint8_t id[8]); +void Sec_Dbg_Read_WiFi_MAC(uint8_t macAddr[6]); +uint32_t Sec_Dbg_Read_Dbg_Mode(void); +uint32_t Sec_Dbg_Read_Dbg_Enable(void); + +/*@} end of group SEC_DBG_Public_Functions */ + +/*@} end of group SEC_DBG */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_SEC_DBG_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_sec_eng.h b/drivers/bl702_driver/std_drv/inc/bl702_sec_eng.h new file mode 100644 index 00000000..c14fd9a0 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_sec_eng.h @@ -0,0 +1,572 @@ +/** + ****************************************************************************** + * @file bl702_sec_eng.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_SEC_ENG_H__ +#define __BL702_SEC_ENG_H__ + +#include "sec_eng_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SEC_ENG + * @{ + */ + +/** @defgroup SEC_ENG_Public_Types + * @{ + */ + +/** + * @brief AES port type definition + */ +typedef enum { + SEC_ENG_AES_ID0, /*!< AES0 port define */ +}SEC_ENG_AES_ID_Type; + +/** + * @brief SHA port type definition + */ +typedef enum { + SEC_ENG_SHA_ID0, /*!< SHA0 port define */ +}SEC_ENG_SHA_ID_Type; + +/** + * @brief SHA type definition + */ +typedef enum { + SEC_ENG_SHA256, /*!< SHA type:SHA256 */ + SEC_ENG_SHA224, /*!< SHA type:SHA224 */ + SEC_ENG_SHA1, /*!< SHA type:SHA1 */ + SEC_ENG_SHA1_RSVD, /*!< SHA type:SHA1 */ +}SEC_ENG_SHA_Type; + +/** + * @brief AES type definition + */ +typedef enum { + SEC_ENG_AES_ECB, /*!< AES mode type:ECB */ + SEC_ENG_AES_CTR, /*!< AES mode type:CTR */ + SEC_ENG_AES_CBC, /*!< AES mode type:CBC */ +}SEC_ENG_AES_Type; + +/** + * @brief AES KEY type definition + */ +typedef enum { + SEC_ENG_AES_KEY_128BITS, /*!< AES KEY type:128 bits */ + SEC_ENG_AES_KEY_256BITS, /*!< AES KEY type:256 bits */ + SEC_ENG_AES_KEY_192BITS, /*!< AES KEY type:192 bits */ + SEC_ENG_AES_DOUBLE_KEY_128BITS, /*!< AES double KEY type:128 bits */ +}SEC_ENG_AES_Key_Type; + +/** + * @brief AES CTR mode counter type definition + */ +typedef enum { + SEC_ENG_AES_COUNTER_BYTE_4, /*!< AES CTR mode counter type:4 bytes */ + SEC_ENG_AES_COUNTER_BYTE_1, /*!< AES CTR mode counter type:1 byte */ + SEC_ENG_AES_COUNTER_BYTE_2, /*!< AES CTR mode counter type:2 bytes */ + SEC_ENG_AES_COUNTER_BYTE_3, /*!< AES CTR mode counter type:3 bytes */ +}SEC_ENG_AES_Counter_Type; + +/** + * @brief AES use new or old value type definition + */ +typedef enum { + SEC_ENG_AES_USE_NEW, /*!< Use new value */ + SEC_ENG_AES_USE_OLD, /*!< Use old value same as last one */ +}SEC_ENG_AES_ValueUsed_Type; + +/** + * @brief AES KEY source type definition + */ +typedef enum { + SEC_ENG_AES_KEY_SW, /*!< AES KEY from software */ + SEC_ENG_AES_KEY_HW, /*!< AES KEY from hardware */ +}SEC_ENG_AES_Key_Src_Type; + +/** + * @brief AES KEY source type definition + */ +typedef enum { + SEC_ENG_AES_ENCRYPTION, /*!< AES encryption */ + SEC_ENG_AES_DECRYPTION, /*!< AES decryption */ +}SEC_ENG_AES_EnDec_Type; + +/** + * @brief AES PKA register size type definition + */ +typedef enum { + SEC_ENG_PKA_REG_SIZE_8=1, /*!< Register size is 8 Bytes */ + SEC_ENG_PKA_REG_SIZE_16, /*!< Register size is 16 Bytes */ + SEC_ENG_PKA_REG_SIZE_32, /*!< Register size is 32 Bytes */ + SEC_ENG_PKA_REG_SIZE_64, /*!< Register size is 64 Bytes */ + SEC_ENG_PKA_REG_SIZE_96, /*!< Register size is 96 Bytes */ + SEC_ENG_PKA_REG_SIZE_128, /*!< Register size is 128 Bytes */ + SEC_ENG_PKA_REG_SIZE_192, /*!< Register size is 192 Bytes */ + SEC_ENG_PKA_REG_SIZE_256, /*!< Register size is 256 Bytes */ + SEC_ENG_PKA_REG_SIZE_384, /*!< Register size is 384 Bytes */ + SEC_ENG_PKA_REG_SIZE_512, /*!< Register size is 512 Bytes */ +}SEC_ENG_PKA_REG_SIZE_Type; + +/** + * @brief AES PKA register size type definition + */ +typedef enum { + SEC_ENG_PKA_OP_PPSEL, /*!< PKA operation type */ + SEC_ENG_PKA_OP_MOD2N=0x11, /*!< PKA operation type */ + SEC_ENG_PKA_OP_LDIV2N=0x12, /*!< PKA operation type */ + SEC_ENG_PKA_OP_LMUL2N=0x13, /*!< PKA operation type */ + SEC_ENG_PKA_OP_LDIV=0x14, /*!< PKA operation type */ + SEC_ENG_PKA_OP_LSQR=0x15, /*!< PKA operation type */ + SEC_ENG_PKA_OP_LMUL=0x16, /*!< PKA operation type */ + SEC_ENG_PKA_OP_LSUB=0x17, /*!< PKA operation type */ + SEC_ENG_PKA_OP_LADD=0x18, /*!< PKA operation type */ + SEC_ENG_PKA_OP_LCMP=0x19, /*!< PKA operation type */ + SEC_ENG_PKA_OP_MDIV2=0x21, /*!< PKA operation type */ + SEC_ENG_PKA_OP_MINV=0x22, /*!< PKA operation type */ + SEC_ENG_PKA_OP_MEXP=0x23, /*!< PKA operation type */ + SEC_ENG_PKA_OP_MSQR=0x24, /*!< PKA operation type */ + SEC_ENG_PKA_OP_MMUL=0x25, /*!< PKA operation type */ + SEC_ENG_PKA_OP_MREM=0x26, /*!< PKA operation type */ + SEC_ENG_PKA_OP_MSUB=0x27, /*!< PKA operation type */ + SEC_ENG_PKA_OP_MADD=0x28, /*!< PKA operation type */ + SEC_ENG_PKA_OP_RESIZE =0x31, /*!< PKA operation type */ + SEC_ENG_PKA_OP_MOVDAT=0x32, /*!< PKA operation type */ + SEC_ENG_PKA_OP_NLIR=0x33, /*!< PKA operation type */ + SEC_ENG_PKA_OP_SLIR=0x34, /*!< PKA operation type */ + SEC_ENG_PKA_OP_CLIR=0x35, /*!< PKA operation type */ + SEC_ENG_PKA_OP_CFLIRI_BUFFER=0x36, /*!< PKA operation type */ + SEC_ENG_PKA_OP_CTLIRI_PLD=0x37, /*!< PKA operation type */ + SEC_ENG_PKA_OP_CFLIR_BUFFER=0x38, /*!< PKA operation type */ + SEC_ENG_PKA_OP_CTLIR_PLD=0x39, /*!< PKA operation type */ +}SEC_ENG_PKA_OP_Type; + +/** + * @brief Sec Eng Interrupt Type Def + */ +typedef enum { + SEC_ENG_INT_TRNG, /*!< Sec Eng Trng Interrupt Type */ + SEC_ENG_INT_AES, /*!< Sec Eng Aes Interrupt Type */ + SEC_ENG_INT_SHA, /*!< Sec Eng Sha Interrupt Type */ + SEC_ENG_INT_PKA, /*!< Sec Eng Pka Interrupt Type */ + SEC_ENG_INT_CDET, /*!< Sec Eng Cdet Interrupt Type */ + SEC_ENG_INT_GMAC, /*!< Sec Eng Gmac Interrupt Type */ + SEC_ENG_INT_ALL, /*!< Sec Eng All Interrupt Types */ +}SEC_ENG_INT_Type; + +/** + * @brief SEC_ENG SHA context + */ +typedef struct { + uint32_t total[2]; /*!< Number of bytes processed */ + uint32_t *shaBuf; /*!< Data not processed but in this temp buffer */ + uint32_t *shaPadding; /*!< Padding data */ + uint8_t shaFeed; /*!< Sha has feed data */ +}SEC_Eng_SHA256_Ctx; + +/** + * @brief SEC_ENG SHA link mode context + */ +typedef struct { + uint32_t total[2]; /*!< Number of bytes processed */ + uint32_t *shaBuf; /*!< Data not processed but in this temp buffer */ + uint32_t *shaPadding; /*!< Padding data */ + uint32_t linkAddr; /*!< Link configure address */ +}SEC_Eng_SHA256_Link_Ctx; + +/** + * @brief SEC_ENG AES context + */ +typedef struct { + uint8_t aesFeed; /*!< AES has feed data */ + SEC_ENG_AES_Type mode; /*!< AES mode */ +}SEC_Eng_AES_Ctx; + +/** + * @brief SEC_ENG SHA link config structure type definition + */ +typedef struct { + uint32_t :2; /*!< [1:0]reserved */ + uint32_t shaMode:3; /*!< [4:2]Sha-256/sha-224/sha-1/sha-1 */ + uint32_t :1; /*!< [5]reserved */ + uint32_t shaHashSel:1; /*!< [6]New hash or accumulate last hash */ + uint32_t :2; /*!< [8:7]reserved */ + uint32_t shaIntClr:1; /*!< [9]Clear interrupt */ + uint32_t shaIntSet:1; /*!< [10]Set interrupt */ + uint32_t :5; /*!< [15:11]reserved */ + uint32_t shaMsgLen:16; /*!< [31:16]Number of 512-bit block */ + uint32_t shaSrcAddr; /*!< Message source address */ + uint32_t result[8]; /*!< Result of SHA */ +}__attribute__ ((aligned(4)))SEC_Eng_SHA_Link_Config_Type; + +/** + * @brief SEC_ENG AES link config structure type definition + */ +typedef struct { + uint32_t :3; /*!< [2:0]Reserved */ + uint32_t aesMode:2; /*!< [4:3]128-bit/256-bit/192-bit/128-bit-double key mode select */ + uint32_t aesDecEn:1; /*!< [5]Encode or decode */ + uint32_t aesDecKeySel:1; /*!< [6]Use new key or use same key as last one */ + uint32_t aesHwKeyEn:1; /*!< [7]Enable or disable using hardware hey */ + uint32_t :1; /*!< [8]Reserved */ + uint32_t aesIntClr:1; /*!< [9]Clear interrupt */ + uint32_t aesIntSet:1; /*!< [10]Set interrupt */ + uint32_t :1; /*!< [11]Reserved */ + uint32_t aesBlockMode:2; /*!< [13:12]ECB/CTR/CBC mode select */ + uint32_t aesIVSel:1; /*!< [14]Use new iv or use same iv as last one */ + uint32_t :1; /*!< [15]Reserved */ + uint32_t aesMsgLen:16; /*!< [31:16]Number of 128-bit block */ + uint32_t aesSrcAddr; /*!< Message source address */ + uint32_t aesDstAddr; /*!< Message destination address */ + uint32_t aesIV0; /*!< Big endian initial vector(MSB) */ + uint32_t aesIV1; /*!< Big endian initial vector */ + uint32_t aesIV2; /*!< Big endian initial vector */ + uint32_t aesIV3; /*!< Big endian initial vector(LSB)(CTR mode:counter initial value) */ + uint32_t aesKey0; /*!< Big endian aes key(aes-128/256 key MSB) */ + uint32_t aesKey1; /*!< Big endian aes key */ + uint32_t aesKey2; /*!< Big endian aes key */ + uint32_t aesKey3; /*!< Big endian aes key(aes-128 key LSB) */ + uint32_t aesKey4; /*!< Big endian aes key */ + uint32_t aesKey5; /*!< Big endian aes key */ + uint32_t aesKey6; /*!< Big endian aes key */ + uint32_t aesKey7; /*!< Big endian aes key(aes-256 key LSB) */ +}__attribute__ ((aligned(4)))SEC_Eng_AES_Link_Config_Type; + +/** + * @brief SEC_ENG GMAC link config structure type definition + */ +typedef struct { + uint32_t :9; /*!< [8:0]reserved */ + uint32_t gmacIntClr:1; /*!< [9]Clear interrupt */ + uint32_t gmacIntSet:1; /*!< [10]Set interrupt */ + uint32_t :5; /*!< [15:11]reserved */ + uint32_t gmacMsgLen:16; /*!< [31:16]Number of 128-bit block */ + uint32_t gmacSrcAddr; /*!< Message source address */ + uint32_t gmacKey0; /*!< GMAC key */ + uint32_t gmacKey1; /*!< GMAC key */ + uint32_t gmacKey2; /*!< GMAC key */ + uint32_t gmacKey3; /*!< GMAC key */ + uint32_t result[4]; /*!< Result of GMAC */ + uint32_t dummy; /*!< Not use,trigger GMAC will clear this value */ +}__attribute__ ((aligned(4)))SEC_Eng_GMAC_Link_Config_Type; + +/** + * @brief SEC_ENG PKA status type definition + */ +typedef struct { + uint16_t primeFail:1; /*!< [0]Prime fail */ + uint16_t errUnknown:1; /*!< [1]Err unknown opc */ + uint16_t errOverflow:1; /*!< [2]Err opq overflow */ + uint16_t errSrc2:1; /*!< [3]Err invalid src2 */ + uint16_t errSrc1:1; /*!< [4]Err invalid src1 */ + uint16_t errSrc0:1; /*!< [5]Err invalid src0 */ + uint16_t errDiv0:1; /*!< [6]Err div by 0 */ + uint16_t errFull:1; /*!< [7]Err cam full */ + uint16_t lastOpc:1; /*!< [8]Last opc */ + uint16_t opqFull:1; /*!< [9]Opq full */ + uint16_t cmdIndex:5; /*!< [14:10]Cmd err index */ + uint16_t errCmd:1; /*!< [15]Err cmd */ +}SEC_Eng_PKA_Status_Type; + +/*@} end of group SEC_ENG_Public_Types */ + +/** @defgroup SEC_ENG_Public_Constants + * @{ + */ + +/** @defgroup SEC_ENG_AES_ID_TYPE + * @{ + */ +#define IS_SEC_ENG_AES_ID_TYPE(type) (((type) == SEC_ENG_AES_ID0)) + +/** @defgroup SEC_ENG_SHA_ID_TYPE + * @{ + */ +#define IS_SEC_ENG_SHA_ID_TYPE(type) (((type) == SEC_ENG_SHA_ID0)) + +/** @defgroup SEC_ENG_SHA_TYPE + * @{ + */ +#define IS_SEC_ENG_SHA_TYPE(type) (((type) == SEC_ENG_SHA256) || \ + ((type) == SEC_ENG_SHA224) || \ + ((type) == SEC_ENG_SHA1) || \ + ((type) == SEC_ENG_SHA1_RSVD)) + +/** @defgroup SEC_ENG_AES_TYPE + * @{ + */ +#define IS_SEC_ENG_AES_TYPE(type) (((type) == SEC_ENG_AES_ECB) || \ + ((type) == SEC_ENG_AES_CTR) || \ + ((type) == SEC_ENG_AES_CBC)) + +/** @defgroup SEC_ENG_AES_KEY_TYPE + * @{ + */ +#define IS_SEC_ENG_AES_KEY_TYPE(type) (((type) == SEC_ENG_AES_KEY_128BITS) || \ + ((type) == SEC_ENG_AES_KEY_256BITS) || \ + ((type) == SEC_ENG_AES_KEY_192BITS) || \ + ((type) == SEC_ENG_AES_DOUBLE_KEY_128BITS)) + +/** @defgroup SEC_ENG_AES_COUNTER_TYPE + * @{ + */ +#define IS_SEC_ENG_AES_COUNTER_TYPE(type) (((type) == SEC_ENG_AES_COUNTER_BYTE_4) || \ + ((type) == SEC_ENG_AES_COUNTER_BYTE_1) || \ + ((type) == SEC_ENG_AES_COUNTER_BYTE_2) || \ + ((type) == SEC_ENG_AES_COUNTER_BYTE_3)) + +/** @defgroup SEC_ENG_AES_VALUEUSED_TYPE + * @{ + */ +#define IS_SEC_ENG_AES_VALUEUSED_TYPE(type) (((type) == SEC_ENG_AES_USE_NEW) || \ + ((type) == SEC_ENG_AES_USE_OLD)) + +/** @defgroup SEC_ENG_AES_KEY_SRC_TYPE + * @{ + */ +#define IS_SEC_ENG_AES_KEY_SRC_TYPE(type) (((type) == SEC_ENG_AES_KEY_SW) || \ + ((type) == SEC_ENG_AES_KEY_HW)) + +/** @defgroup SEC_ENG_AES_ENDEC_TYPE + * @{ + */ +#define IS_SEC_ENG_AES_ENDEC_TYPE(type) (((type) == SEC_ENG_AES_ENCRYPTION) || \ + ((type) == SEC_ENG_AES_DECRYPTION)) + +/** @defgroup SEC_ENG_PKA_REG_SIZE_TYPE + * @{ + */ +#define IS_SEC_ENG_PKA_REG_SIZE_TYPE(type) (((type) == SEC_ENG_PKA_REG_SIZE_8) || \ + ((type) == SEC_ENG_PKA_REG_SIZE_16) || \ + ((type) == SEC_ENG_PKA_REG_SIZE_32) || \ + ((type) == SEC_ENG_PKA_REG_SIZE_64) || \ + ((type) == SEC_ENG_PKA_REG_SIZE_96) || \ + ((type) == SEC_ENG_PKA_REG_SIZE_128) || \ + ((type) == SEC_ENG_PKA_REG_SIZE_192) || \ + ((type) == SEC_ENG_PKA_REG_SIZE_256) || \ + ((type) == SEC_ENG_PKA_REG_SIZE_384) || \ + ((type) == SEC_ENG_PKA_REG_SIZE_512)) + +/** @defgroup SEC_ENG_PKA_OP_TYPE + * @{ + */ +#define IS_SEC_ENG_PKA_OP_TYPE(type) (((type) == SEC_ENG_PKA_OP_PPSEL) || \ + ((type) == SEC_ENG_PKA_OP_MOD2N) || \ + ((type) == SEC_ENG_PKA_OP_LDIV2N) || \ + ((type) == SEC_ENG_PKA_OP_LMUL2N) || \ + ((type) == SEC_ENG_PKA_OP_LDIV) || \ + ((type) == SEC_ENG_PKA_OP_LSQR) || \ + ((type) == SEC_ENG_PKA_OP_LMUL) || \ + ((type) == SEC_ENG_PKA_OP_LSUB) || \ + ((type) == SEC_ENG_PKA_OP_LADD) || \ + ((type) == SEC_ENG_PKA_OP_LCMP) || \ + ((type) == SEC_ENG_PKA_OP_MDIV2) || \ + ((type) == SEC_ENG_PKA_OP_MINV) || \ + ((type) == SEC_ENG_PKA_OP_MEXP) || \ + ((type) == SEC_ENG_PKA_OP_MSQR) || \ + ((type) == SEC_ENG_PKA_OP_MMUL) || \ + ((type) == SEC_ENG_PKA_OP_MREM) || \ + ((type) == SEC_ENG_PKA_OP_MSUB) || \ + ((type) == SEC_ENG_PKA_OP_MADD) || \ + ((type) == SEC_ENG_PKA_OP_RESIZE ) || \ + ((type) == SEC_ENG_PKA_OP_MOVDAT) || \ + ((type) == SEC_ENG_PKA_OP_NLIR) || \ + ((type) == SEC_ENG_PKA_OP_SLIR) || \ + ((type) == SEC_ENG_PKA_OP_CLIR) || \ + ((type) == SEC_ENG_PKA_OP_CFLIRI_BUFFER) || \ + ((type) == SEC_ENG_PKA_OP_CTLIRI_PLD) || \ + ((type) == SEC_ENG_PKA_OP_CFLIR_BUFFER) || \ + ((type) == SEC_ENG_PKA_OP_CTLIR_PLD)) + +/** @defgroup SEC_ENG_INT_TYPE + * @{ + */ +#define IS_SEC_ENG_INT_TYPE(type) (((type) == SEC_ENG_INT_TRNG) || \ + ((type) == SEC_ENG_INT_AES) || \ + ((type) == SEC_ENG_INT_SHA) || \ + ((type) == SEC_ENG_INT_PKA) || \ + ((type) == SEC_ENG_INT_CDET) || \ + ((type) == SEC_ENG_INT_GMAC) || \ + ((type) == SEC_ENG_INT_ALL)) + +/*@} end of group SEC_ENG_Public_Constants */ + +/** @defgroup SEC_ENG_Public_Macros + * @{ + */ +#define SEC_ENG_PKA_STATUS_LAST_OPC_OFFSET 24 +#define SEC_ENG_PKA_STATUS_LAST_OPC_MASK 0x01000000 + +/*@} end of group SEC_ENG_Public_Macros */ + +/** @defgroup SEC_ENG_Public_Functions + * @{ + */ +#ifndef BFLB_USE_HAL_DRIVER +void SEC_GMAC_IRQHandler(void); +void SEC_CDET_IRQHandler(void); +void SEC_TRNG_IRQHandler(void); +void SEC_PKA_IRQHandler(void); +void SEC_AES_IRQHandler(void); +void SEC_SHA_IRQHandler(void); +#endif +void Sec_Eng_SHA256_Init(SEC_Eng_SHA256_Ctx *shaCtx,SEC_ENG_SHA_ID_Type shaNo,SEC_ENG_SHA_Type type, + uint32_t shaTmpBuf[16], +uint32_t padding[16]); +void Sec_Eng_SHA_Start(SEC_ENG_SHA_ID_Type shaNo); +BL_Err_Type Sec_Eng_SHA256_Update(SEC_Eng_SHA256_Ctx *shaCtx,SEC_ENG_SHA_ID_Type shaNo,const uint8_t *input, + uint32_t len); +BL_Err_Type Sec_Eng_SHA256_Finish(SEC_Eng_SHA256_Ctx *shaCtx,SEC_ENG_SHA_ID_Type shaNo,uint8_t *hash); +void Sec_Eng_SHA_Enable_Link(SEC_ENG_SHA_ID_Type shaNo); +void Sec_Eng_SHA_Disable_Link(SEC_ENG_SHA_ID_Type shaNo); +void Sec_Eng_SHA256_Link_Init(SEC_Eng_SHA256_Link_Ctx *shaCtx,SEC_ENG_SHA_ID_Type shaNo,uint32_t linkAddr, + uint32_t shaTmpBuf[16],uint32_t padding[16]); +BL_Err_Type Sec_Eng_SHA256_Link_Update(SEC_Eng_SHA256_Link_Ctx *shaCtx,SEC_ENG_SHA_ID_Type shaNo, + const uint8_t *input, uint32_t len); +BL_Err_Type Sec_Eng_SHA256_Link_Finish(SEC_Eng_SHA256_Link_Ctx *shaCtx,SEC_ENG_SHA_ID_Type shaNo, + uint8_t *hash); +BL_Err_Type Sec_Eng_AES_Init(SEC_Eng_AES_Ctx *aesCtx,SEC_ENG_AES_ID_Type aesNo,SEC_ENG_AES_Type aesType, + SEC_ENG_AES_Key_Type keyType,SEC_ENG_AES_EnDec_Type enDecType); +void Sec_Eng_AES_Enable_LE(SEC_ENG_AES_ID_Type aesNo); +void Sec_Eng_AES_Enable_BE(SEC_ENG_AES_ID_Type aesNo); +void Sec_Eng_AES_Enable_Link(SEC_ENG_AES_ID_Type aesNo); +void Sec_Eng_AES_Disable_Link(SEC_ENG_AES_ID_Type aesNo); +BL_Err_Type Sec_Eng_AES_Link_Work(SEC_ENG_AES_ID_Type aesNo,uint32_t linkAddr,const uint8_t *in,uint32_t len, + uint8_t *out); +void Sec_Eng_AES_Set_Hw_Key_Src(SEC_ENG_AES_ID_Type aesNo,uint8_t src); +void Sec_Eng_AES_Set_Key_IV(SEC_ENG_AES_ID_Type aesNo,SEC_ENG_AES_Key_Src_Type keySrc,const uint8_t *key, + const uint8_t *iv); +void Sec_Eng_AES_Set_Key_IV_BE(SEC_ENG_AES_ID_Type aesNo,SEC_ENG_AES_Key_Src_Type keySrc,const uint8_t *key, + const uint8_t *iv); +void Sec_Eng_AES_Set_Counter_Byte(SEC_ENG_AES_ID_Type aesNo,SEC_ENG_AES_Counter_Type counterType); +BL_Err_Type Sec_Eng_AES_Crypt(SEC_Eng_AES_Ctx *aesCtx,SEC_ENG_AES_ID_Type aesNo,const uint8_t *in, uint32_t len, + uint8_t *out); +BL_Err_Type Sec_Eng_AES_Finish(SEC_ENG_AES_ID_Type aesNo); +BL_Err_Type Sec_Eng_Trng_Enable(void); +void Sec_Eng_Trng_Int_Enable(void); +void Sec_Eng_Trng_Int_Disable(void); +BL_Err_Type Sec_Eng_Trng_Read(uint8_t data[32]); +void Sec_Eng_Trng_Int_Read_Trigger(void); +void Sec_Eng_Trng_Int_Read(uint8_t data[32]); +void Sec_Eng_Trng_Disable(void); +void Sec_Eng_PKA_Reset(void); +void Sec_Eng_PKA_BigEndian_Enable(void); +void Sec_Eng_PKA_LittleEndian_Enable(void); +void Sec_Eng_PKA_GetStatus(SEC_Eng_PKA_Status_Type *status); +void Sec_Eng_PKA_Write_Data( SEC_ENG_PKA_REG_SIZE_Type regType,uint8_t regIndex,const uint32_t *data,uint16_t size, + uint8_t lastOp); +void Sec_Eng_PKA_Read_Data(SEC_ENG_PKA_REG_SIZE_Type regType, uint8_t regIdx, uint32_t *result, uint8_t retSize); +void Sec_Eng_PKA_CREG(SEC_ENG_PKA_REG_SIZE_Type dRegType, uint8_t dRegIdx, uint8_t size,uint8_t lastOp); +void Sec_Eng_PKA_Write_Immediate( SEC_ENG_PKA_REG_SIZE_Type regType,uint8_t regIndex,uint32_t data,uint8_t lastOp); +void Sec_Eng_PKA_NREG(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_Move_Data(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_RESIZE(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_MADD(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint8_t s1RegType, + uint8_t s1RegIdx, uint8_t s2RegType, uint8_t s2RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_MSUB(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint8_t s1RegType, + uint8_t s1RegIdx, uint8_t s2RegType, uint8_t s2RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_MREM(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint8_t s2RegType, + uint8_t s2RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_MMUL(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint8_t s1RegType, + uint8_t s1RegIdx, uint8_t s2RegType, uint8_t s2RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_MSQR(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint8_t s2RegType, + uint8_t s2RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_MEXP(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint8_t s1RegType, + uint8_t s1RegIdx, uint8_t s2RegType, uint8_t s2RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_MINV(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint8_t s2RegType, + uint8_t s2RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_MINV(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint8_t s2RegType, + uint8_t s2RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_LCMP(uint8_t *cout, uint8_t s0RegType, uint8_t s0RegIdx, uint8_t s1RegType, uint8_t s1RegIdx); +void Sec_Eng_PKA_LADD(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint8_t s1RegType, + uint8_t s1RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_LSUB(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint8_t s1RegType, + uint8_t s1RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_LMUL(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint8_t s1RegType, + uint8_t s1RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_LSQR(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_LDIV(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint8_t s2RegType, + uint8_t s2RegIdx,uint8_t lastOp); +void Sec_Eng_PKA_LMUL2N(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint16_t bit_shift, + uint8_t lastOp); +void Sec_Eng_PKA_LDIV2N(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint16_t bit_shift, + uint8_t lastOp); +void Sec_Eng_PKA_LMOD2N(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, +uint16_t bit_shift, + uint8_t lastOp); +void Sec_Eng_PKA_GF2Mont(uint8_t dRegType, uint8_t dRegIdx, uint8_t sRegType, uint8_t sRegIdx,uint32_t size, + uint8_t tRegType, uint8_t tRegIdx,uint8_t pRegType, uint8_t pRegIdx); +void Sec_Eng_PKA_Mont2GF(uint8_t dRegType, uint8_t dRegIdx, uint8_t aRegType, uint8_t aRegIdx, uint8_t invrRegType, + uint8_t invrRegIdx, +uint8_t tRegType, uint8_t tRegIdx,uint8_t pRegType, uint8_t pRegIdx); +void Sec_Eng_GMAC_Enable_LE(void); +void Sec_Eng_GMAC_Enable_BE(void); +void Sec_Eng_GMAC_Enable_Link(void); +void Sec_Eng_GMAC_Disable_Link(void); +BL_Err_Type Sec_Eng_GMAC_Link_Work(uint32_t linkAddr,const uint8_t *in,uint32_t len,uint8_t *out); +void SEC_Eng_IntMask(SEC_ENG_INT_Type intType, BL_Mask_Type intMask); +void SEC_Eng_ClrIntStatus(SEC_ENG_INT_Type intType); +void SEC_Eng_Int_Callback_Install(SEC_ENG_INT_Type intType,intCallback_Type* cbFun); +BL_Sts_Type SEC_Eng_GetIntStatus(SEC_ENG_INT_Type intType); +/*----------*/ +void SEC_Eng_Turn_On_Sec_Ring(void); +void SEC_Eng_Turn_Off_Sec_Ring(void); +/*----------*/; + +/*@} end of group SEC_ENG_Public_Functions */ + +/*@} end of group SEC_ENG */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_SEC_ENG_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_sf_cfg.h b/drivers/bl702_driver/std_drv/inc/bl702_sf_cfg.h new file mode 100644 index 00000000..673e0299 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_sf_cfg.h @@ -0,0 +1,125 @@ +/** + ****************************************************************************** + * @file bl702_sf_cfg.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_SF_CFG_H__ +#define __BL702_SF_CFG_H__ + +#include "string.h" +#include "bl702_sflash.h" +#include "bl702_sf_ctrl.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SF_CFG + * @{ + */ + +/** @defgroup SF_CFG_Public_Types + * @{ + */ + +/*@} end of group SF_CFG_Public_Types */ + +/** @defgroup SF_CFG_Public_Constants + * @{ + */ + +/*@} end of group SF_CFG_Public_Constants */ + +/** @defgroup SF_CFG_Public_Macros + * @{ + */ +/* Flash option 0 */ +/* Flash CLK */ +#define BFLB_EXTFLASH_CLK0_GPIO GLB_GPIO_PIN_21 +/* FLASH CS */ +#define BFLB_EXTFLASH_CS0_GPIO GLB_GPIO_PIN_19 +/* FLASH DATA */ +#define BFLB_EXTFLASH_DATA00_GPIO GLB_GPIO_PIN_17 +#define BFLB_EXTFLASH_DATA10_GPIO GLB_GPIO_PIN_18 +#define BFLB_EXTFLASH_DATA20_GPIO GLB_GPIO_PIN_22 +#define BFLB_EXTFLASH_DATA30_GPIO GLB_GPIO_PIN_20 +/* Flash option 1 */ +/* Flash CLK */ +#define BFLB_EXTFLASH_CLK1_GPIO GLB_GPIO_PIN_27 +/* FLASH CS */ +#define BFLB_EXTFLASH_CS1_GPIO GLB_GPIO_PIN_25 +/* FLASH DATA */ +#define BFLB_EXTFLASH_DATA01_GPIO GLB_GPIO_PIN_28 +#define BFLB_EXTFLASH_DATA11_GPIO GLB_GPIO_PIN_24 +#define BFLB_EXTFLASH_DATA21_GPIO GLB_GPIO_PIN_23 +#define BFLB_EXTFLASH_DATA31_GPIO GLB_GPIO_PIN_26 +/* Flash option 2 */ +/* Flash CLK */ +#define BFLB_EXTFLASH_CLK2_GPIO GLB_GPIO_PIN_36 +/* FLASH CS */ +#define BFLB_EXTFLASH_CS2_GPIO GLB_GPIO_PIN_35 +/* FLASH DATA */ +#define BFLB_EXTFLASH_DATA02_GPIO GLB_GPIO_PIN_32 +#define BFLB_EXTFLASH_DATA12_GPIO GLB_GPIO_PIN_34 +#define BFLB_EXTFLASH_DATA22_GPIO GLB_GPIO_PIN_33 +#define BFLB_EXTFLASH_DATA32_GPIO GLB_GPIO_PIN_37 +#define BFLB_FLASH_CFG_SF2_EXT_23_28 0 +#define BFLB_FLASH_CFG_SF2_INT_512K 1 +#define BFLB_FLASH_CFG_SF2_INT_1M 2 +#define BFLB_FLASH_CFG_SF1_EXT_17_22 3 +#define BFLB_SF2_SWAP_NONE 0 +#define BFLB_SF2_SWAP_CS_IO2 1 +#define BFLB_SF2_SWAP_IO0_IO3 2 +#define BFLB_SF2_SWAP_BOTH 3 +#define BFLB_FLASH_ID_VALID_FLAG 0x80000000 +#define BFLB_FLASH_ID_VALID_MASK 0x7FFFFFFF + +/*@} end of group SF_CFG_Public_Macros */ + +/** @defgroup SF_CFG_Public_Functions + * @{ + */ +BL_Err_Type SF_Cfg_Get_Flash_Cfg_Need_Lock(uint32_t flashID,SPI_Flash_Cfg_Type * pFlashCfg); +void SF_Cfg_Init_Flash_Gpio(uint8_t flashPinCfg,uint8_t restoreDefault); +uint32_t SF_Cfg_Flash_Identify(uint8_t callFromFlash,uint32_t autoScan,uint32_t flashPinCfg,uint8_t restoreDefault, + SPI_Flash_Cfg_Type * pFlashCfg); +void SF_Cfg_Init_Ext_Flash_Gpio(uint8_t extFlashPin); +void SF_Cfg_Deinit_Ext_Flash_Gpio(uint8_t extFlashPin); + +/*@} end of group SF_CFG_Public_Functions */ + +/*@} end of group SF_CFG */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_SF_CFG_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_sf_cfg_ext.h b/drivers/bl702_driver/std_drv/inc/bl702_sf_cfg_ext.h new file mode 100644 index 00000000..b8b5ecb1 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_sf_cfg_ext.h @@ -0,0 +1,83 @@ +/** + ****************************************************************************** + * @file bl702_sf_cfg_ext.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_SF_CFG_EXT_H__ +#define __BL702_SF_CFG_EXT_H__ + +#include "string.h" +#include "bl702_sflash.h" +#include "bl702_sf_ctrl.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SF_CFG_EXT + * @{ + */ + +/** @defgroup SF_CFG_EXT_Public_Types + * @{ + */ + +/*@} end of group SF_CFG_EXT_Public_Types */ + +/** @defgroup SF_CFG_EXT_Public_Constants + * @{ + */ + +/*@} end of group SF_CFG_EXT_Public_Constants */ + +/** @defgroup SF_CFG_EXT_Public_Macros + * @{ + */ + +/*@} end of group SF_CFG_EXT_Public_Macros */ + +/** @defgroup SF_CFG_EXT_Public_Functions + * @{ + */ +void SF_Cfg_Init_Internal_Flash_Gpio(void); +BL_Err_Type SF_Cfg_Get_Flash_Cfg_Need_Lock_Ext(uint32_t flashID,SPI_Flash_Cfg_Type * pFlashCfg); +uint32_t SF_Cfg_Flash_Identify_Ext(uint8_t callFromFlash,uint32_t autoScan,uint32_t flashPinCfg, + uint8_t restoreDefault,SPI_Flash_Cfg_Type * pFlashCfg); + +/*@} end of group SF_CFG_EXT_Public_Functions */ + +/*@} end of group SF_CFG_EXT */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_SF_CFG_EXT_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_sf_ctrl.h b/drivers/bl702_driver/std_drv/inc/bl702_sf_ctrl.h new file mode 100644 index 00000000..a76ded0f --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_sf_ctrl.h @@ -0,0 +1,406 @@ +/** + ****************************************************************************** + * @file bl702_sf_ctrl.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_SF_CTRL_H__ +#define __BL702_SF_CTRL_H__ + +#include "sf_ctrl_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SF_CTRL + * @{ + */ + +/** @defgroup SF_CTRL_Public_Types + * @{ + */ + +/** + * @brief Serial flash pad select type definition + */ +typedef enum { + SF_CTRL_PAD_SEL_SF1, /*!< SF Ctrl pad select sf1, flash use GPIO 17-22, no psram */ + SF_CTRL_PAD_SEL_SF2, /*!< SF Ctrl pad select sf2, flash use GPIO 23-28, no psram, embedded flash */ + SF_CTRL_PAD_SEL_SF3, /*!< SF Ctrl pad select sf3, flash use GPIO 32-37, no psram */ + SF_CTRL_PAD_SEL_DUAL_BANK_SF1_SF2, /*!< SF Ctrl pad select sf1 and sf2, flash use GPIO 17-22, psram use GPIO 23-28 */ + SF_CTRL_PAD_SEL_DUAL_BANK_SF2_SF3, /*!< SF Ctrl pad select sf2 and sf3, flash use GPIO 23-28, psram use GPIO 32-37 */ + SF_CTRL_PAD_SEL_DUAL_BANK_SF3_SF1, /*!< SF Ctrl pad select sf3 and sf1, flash use GPIO 32-37, psram use GPIO 17-22 */ + SF_CTRL_PAD_SEL_DUAL_CS_SF2, /*!< SF Ctrl pad select sf2, flash/psram use GPIO 23-28, psram use GPIO 17 as CS2 */ + SF_CTRL_PAD_SEL_DUAL_CS_SF3, /*!< SF Ctrl pad select sf3, flash/psram use GPIO 32-37, psram use GPIO 23 as CS2 */ +}SF_Ctrl_Pad_Select; + +/** + * @brief Serial flash system bus control type definition + */ +typedef enum { + SF_CTRL_SEL_FLASH, /*!< SF Ctrl system bus control flash */ + SF_CTRL_SEL_PSRAM, /*!< SF Ctrl system bus control psram */ +}SF_Ctrl_Select; + +/** + * @brief Serail flash controller wrap mode len type definition + */ +typedef enum { + SF_CTRL_WRAP_LEN_8, /*!< SF Ctrl wrap length: 8 */ + SF_CTRL_WRAP_LEN_16, /*!< SF Ctrl wrap length: 16 */ + SF_CTRL_WRAP_LEN_32, /*!< SF Ctrl wrap length: 32 */ + SF_CTRL_WRAP_LEN_64, /*!< SF Ctrl wrap length: 64 */ + SF_CTRL_WRAP_LEN_128, /*!< SF Ctrl wrap length: 128 */ + SF_CTRL_WRAP_LEN_256, /*!< SF Ctrl wrap length: 256 */ + SF_CTRL_WRAP_LEN_512, /*!< SF Ctrl wrap length: 512 */ + SF_CTRL_WRAP_LEN_1024, /*!< SF Ctrl wrap length: 1024 */ + SF_CTRL_WRAP_LEN_2048, /*!< SF Ctrl wrap length: 2048 */ + SF_CTRL_WRAP_LEN_4096, /*!< SF Ctrl wrap length: 4096 */ +}SF_Ctrl_Wrap_Len_Type; + +/** + * @brief Serial flash controller owner type definition + */ +typedef enum { + SF_CTRL_OWNER_SAHB, /*!< System AHB bus control serial flash controller */ + SF_CTRL_OWNER_IAHB, /*!< I-Code AHB bus control serial flash controller */ +}SF_Ctrl_Owner_Type; + +/** + * @brief Serial flash controller select clock type definition + */ +typedef enum { + SF_CTRL_SAHB_CLOCK, /*!< Serial flash controller select default sahb clock */ + SF_CTRL_FLASH_CLOCK, /*!< Serial flash controller select flash clock */ +}SF_Ctrl_Sahb_Type; + +/** + * @brief Serial flash controller owner type definition + */ +typedef enum { + HIGH_SPEED_MODE_CLOCK, /*!< Serial flash controller high speed mode clk_ahb>clk_sf */ + REMOVE_CLOCK_CONSTRAIN, /*!< Serial flash controller remove clock constrain */ +}SF_Ctrl_Ahb2sif_Type; + +/** + * @brief Read and write type definition + */ +typedef enum { + SF_CTRL_READ, /*!< Serail flash read command flag */ + SF_CTRL_WRITE, /*!< Serail flash write command flag */ +}SF_Ctrl_RW_Type; + +/** + * @brief Serail flash interface IO type definition + */ +typedef enum { + SF_CTRL_NIO_MODE, /*!< Normal IO mode define */ + SF_CTRL_DO_MODE, /*!< Dual Output mode define */ + SF_CTRL_QO_MODE, /*!< Quad Output mode define */ + SF_CTRL_DIO_MODE, /*!< Dual IO mode define */ + SF_CTRL_QIO_MODE, /*!< Quad IO mode define */ +}SF_Ctrl_IO_Type; + +/** + * @brief Serail flash controller interface mode type definition + */ +typedef enum { + SF_CTRL_SPI_MODE, /*!< SPI mode define */ + SF_CTRL_QPI_MODE, /*!< QPI mode define */ +}SF_Ctrl_Mode_Type; + +/** + * @brief Serail flash controller command mode type definition + */ +typedef enum { + SF_CTRL_CMD_1_LINE, /*!< Command in one line mode */ + SF_CTRL_CMD_4_LINES, /*!< Command in four lines mode */ +}SF_Ctrl_Cmd_Mode_Type; + +/** + * @brief Serail flash controller address mode type definition + */ +typedef enum { + SF_CTRL_ADDR_1_LINE, /*!< Address in one line mode */ + SF_CTRL_ADDR_2_LINES, /*!< Address in two lines mode */ + SF_CTRL_ADDR_4_LINES, /*!< Address in four lines mode */ +}SF_Ctrl_Addr_Mode_Type; + +/** + * @brief Serail flash controller dummy mode type definition + */ +typedef enum { + SF_CTRL_DUMMY_1_LINE, /*!< Dummy in one line mode */ + SF_CTRL_DUMMY_2_LINES, /*!< Dummy in two lines mode */ + SF_CTRL_DUMMY_4_LINES, /*!< Dummy in four lines mode */ +}SF_Ctrl_Dmy_Mode_Type; + +/** + * @brief Serail flash controller data mode type definition + */ +typedef enum { + SF_CTRL_DATA_1_LINE, /*!< Data in one line mode */ + SF_CTRL_DATA_2_LINES, /*!< Data in two lines mode */ + SF_CTRL_DATA_4_LINES, /*!< Data in four lines mode */ +}SF_Ctrl_Data_Mode_Type; + +/** + * @brief Serail flash controller AES type definition + */ +typedef enum { + SF_CTRL_AES_128BITS, /*!< Serail flash AES key 128 bits length */ + SF_CTRL_AES_256BITS, /*!< Serail flash AES key 256 bits length */ + SF_CTRL_AES_192BITS, /*!< Serail flash AES key 192 bits length */ + SF_CTRL_AES_128BITS_DOUBLE_KEY, /*!< Serail flash AES key 128 bits length double key */ +}SF_Ctrl_AES_Key_Type; + +/** + * @brief Serail flash controller configuration structure type definition + */ +typedef struct { + SF_Ctrl_Owner_Type owner; /*!< Sflash interface bus owner */ + SF_Ctrl_Sahb_Type sahbClock; /*!< Sflash clock sahb sram select */ + SF_Ctrl_Ahb2sif_Type ahb2sifMode; /*!< Sflash ahb2sif mode */ + uint8_t clkDelay; /*!< Clock count for read due to pad delay */ + uint8_t clkInvert; /*!< Clock invert */ + uint8_t rxClkInvert; /*!< RX clock invert */ + uint8_t doDelay; /*!< Data out delay */ + uint8_t diDelay; /*!< Data in delay */ + uint8_t oeDelay; /*!< Output enable delay */ +}SF_Ctrl_Cfg_Type; + +/** + * @brief SF Ctrl psram controller configuration structure type definition + */ +typedef struct { + SF_Ctrl_Owner_Type owner; /*!< Psram interface bus owner */ + SF_Ctrl_Pad_Select padSel; /*!< SF Ctrl pad select */ + SF_Ctrl_Select bankSel; /*!< SF Ctrl bank select */ + BL_Fun_Type psramRxClkInvertSrc; /*!< Select psram rx clock invert source */ + BL_Fun_Type psramRxClkInvertSel; /*!< Select inveted psram rx clock */ + BL_Fun_Type psramDelaySrc; /*!< Select psram read delay source */ + uint8_t psramClkDelay; /*!< Psram read delay cycle = n + 1 */ +}SF_Ctrl_Psram_Cfg; + +/** + * @brief SF Ctrl cmds configuration structure type definition + */ +typedef struct { + BL_Fun_Type cmdsEn; /*!< SF Ctrl cmds enable */ + BL_Fun_Type burstToggleEn; /*!< SF Ctrl burst toggle mode enable */ + BL_Fun_Type wrapModeEn; /*!< SF Ctrl wrap mode cmd enable */ + SF_Ctrl_Wrap_Len_Type wrapLen; /*!< SF Ctrl wrap length */ +}SF_Ctrl_Cmds_Cfg; + +/** + * @brief Serail flash command configuration structure type definition + */ +typedef struct { + uint8_t rwFlag; /*!< Read write flag */ + SF_Ctrl_Cmd_Mode_Type cmdMode; /*!< Command mode */ + SF_Ctrl_Addr_Mode_Type addrMode; /*!< Address mode */ + uint8_t addrSize; /*!< Address size */ + uint8_t dummyClks; /*!< Dummy clocks */ + SF_Ctrl_Dmy_Mode_Type dummyMode; /*!< Dummy mode */ + SF_Ctrl_Data_Mode_Type dataMode; /*!< Data mode */ + uint8_t rsv[1]; /*!< */ + uint32_t nbData; /*!< Transfer number of bytes */ + uint32_t cmdBuf[2]; /*!< Command buffer */ +}SF_Ctrl_Cmd_Cfg_Type; + +/*@} end of group SF_CTRL_Public_Types */ + +/** @defgroup SF_CTRL_Public_Constants + * @{ + */ + +/** @defgroup SF_CTRL_PAD_SELECT + * @{ + */ +#define IS_SF_CTRL_PAD_SELECT(type) (((type) == SF_CTRL_PAD_SEL_SF1) || \ + ((type) == SF_CTRL_PAD_SEL_SF2) || \ + ((type) == SF_CTRL_PAD_SEL_SF3) || \ + ((type) == SF_CTRL_PAD_SEL_DUAL_BANK_SF1_SF2) || \ + ((type) == SF_CTRL_PAD_SEL_DUAL_BANK_SF2_SF3) || \ + ((type) == SF_CTRL_PAD_SEL_DUAL_BANK_SF3_SF1) || \ + ((type) == SF_CTRL_PAD_SEL_DUAL_CS_SF2) || \ + ((type) == SF_CTRL_PAD_SEL_DUAL_CS_SF3)) + +/** @defgroup SF_CTRL_SELECT + * @{ + */ +#define IS_SF_CTRL_SELECT(type) (((type) == SF_CTRL_SEL_FLASH) || \ + ((type) == SF_CTRL_SEL_PSRAM)) + +/** @defgroup SF_CTRL_WRAP_LEN_TYPE + * @{ + */ +#define IS_SF_CTRL_WRAP_LEN_TYPE(type) (((type) == SF_CTRL_WRAP_LEN_8) || \ + ((type) == SF_CTRL_WRAP_LEN_16) || \ + ((type) == SF_CTRL_WRAP_LEN_32) || \ + ((type) == SF_CTRL_WRAP_LEN_64) || \ + ((type) == SF_CTRL_WRAP_LEN_128) || \ + ((type) == SF_CTRL_WRAP_LEN_256) || \ + ((type) == SF_CTRL_WRAP_LEN_512) || \ + ((type) == SF_CTRL_WRAP_LEN_1024) || \ + ((type) == SF_CTRL_WRAP_LEN_2048) || \ + ((type) == SF_CTRL_WRAP_LEN_4096)) + +/** @defgroup SF_CTRL_OWNER_TYPE + * @{ + */ +#define IS_SF_CTRL_OWNER_TYPE(type) (((type) == SF_CTRL_OWNER_SAHB) || \ + ((type) == SF_CTRL_OWNER_IAHB)) + +/** @defgroup SF_CTRL_SAHB_TYPE + * @{ + */ +#define IS_SF_CTRL_SAHB_TYPE(type) (((type) == SF_CTRL_SAHB_CLOCK) || \ + ((type) == SF_CTRL_FLASH_CLOCK)) + +/** @defgroup SF_CTRL_AHB2SIF_TYPE + * @{ + */ +#define IS_SF_CTRL_AHB2SIF_TYPE(type) (((type) == HIGH_SPEED_MODE_CLOCK) || \ + ((type) == REMOVE_CLOCK_CONSTRAIN)) + +/** @defgroup SF_CTRL_RW_TYPE + * @{ + */ +#define IS_SF_CTRL_RW_TYPE(type) (((type) == SF_CTRL_READ) || \ + ((type) == SF_CTRL_WRITE)) + +/** @defgroup SF_CTRL_IO_TYPE + * @{ + */ +#define IS_SF_CTRL_IO_TYPE(type) (((type) == SF_CTRL_NIO_MODE) || \ + ((type) == SF_CTRL_DO_MODE) || \ + ((type) == SF_CTRL_QO_MODE) || \ + ((type) == SF_CTRL_DIO_MODE) || \ + ((type) == SF_CTRL_QIO_MODE)) + +/** @defgroup SF_CTRL_MODE_TYPE + * @{ + */ +#define IS_SF_CTRL_MODE_TYPE(type) (((type) == SF_CTRL_SPI_MODE) || \ + ((type) == SF_CTRL_QPI_MODE)) + +/** @defgroup SF_CTRL_CMD_MODE_TYPE + * @{ + */ +#define IS_SF_CTRL_CMD_MODE_TYPE(type) (((type) == SF_CTRL_CMD_1_LINE) || \ + ((type) == SF_CTRL_CMD_4_LINES)) + +/** @defgroup SF_CTRL_ADDR_MODE_TYPE + * @{ + */ +#define IS_SF_CTRL_ADDR_MODE_TYPE(type) (((type) == SF_CTRL_ADDR_1_LINE) || \ + ((type) == SF_CTRL_ADDR_2_LINES) || \ + ((type) == SF_CTRL_ADDR_4_LINES)) + +/** @defgroup SF_CTRL_DMY_MODE_TYPE + * @{ + */ +#define IS_SF_CTRL_DMY_MODE_TYPE(type) (((type) == SF_CTRL_DUMMY_1_LINE) || \ + ((type) == SF_CTRL_DUMMY_2_LINES) || \ + ((type) == SF_CTRL_DUMMY_4_LINES)) + +/** @defgroup SF_CTRL_DATA_MODE_TYPE + * @{ + */ +#define IS_SF_CTRL_DATA_MODE_TYPE(type) (((type) == SF_CTRL_DATA_1_LINE) || \ + ((type) == SF_CTRL_DATA_2_LINES) || \ + ((type) == SF_CTRL_DATA_4_LINES)) + +/** @defgroup SF_CTRL_AES_KEY_TYPE + * @{ + */ +#define IS_SF_CTRL_AES_KEY_TYPE(type) (((type) == SF_CTRL_AES_128BITS) || \ + ((type) == SF_CTRL_AES_256BITS) || \ + ((type) == SF_CTRL_AES_192BITS) || \ + ((type) == SF_CTRL_AES_128BITS_DOUBLE_KEY)) + +/*@} end of group SF_CTRL_Public_Constants */ + +/** @defgroup SF_CTRL_Public_Macros + * @{ + */ +#define SF_CTRL_NO_ADDRESS 0xFFFFFFFF +#define FLASH_CTRL_BUF_SIZE 256 + +/*@} end of group SF_CTRL_Public_Macros */ + +/** @defgroup SF_CTRL_Public_Functions + * @{ + */ +#ifndef BFLB_USE_HAL_DRIVER +void SF_Ctrl_IRQHandler(void); +#endif +void SF_Ctrl_Enable(const SF_Ctrl_Cfg_Type *cfg); +void SF_Ctrl_Psram_Init(SF_Ctrl_Psram_Cfg *psramCfg); +uint8_t SF_Ctrl_Get_Clock_Delay(void); +void SF_Ctrl_Set_Clock_Delay(uint8_t delay); +void SF_Ctrl_Cmds_Set(SF_Ctrl_Cmds_Cfg *cmdsCfg); +void SF_Ctrl_Select_Pad(SF_Ctrl_Pad_Select sel); +void SF_Ctrl_Select_Bank(SF_Ctrl_Select sel); +void SF_Ctrl_Set_Owner(SF_Ctrl_Owner_Type owner); +void SF_Ctrl_Disable(void); +void SF_Ctrl_AES_Enable_BE(void); +void SF_Ctrl_AES_Enable_LE(void); +void SF_Ctrl_AES_Set_Region(uint8_t region,uint8_t enable, uint8_t hwKey,uint32_t startAddr, +uint32_t endAddr, + uint8_t locked); +void SF_Ctrl_AES_Set_Key(uint8_t region,uint8_t *key, SF_Ctrl_AES_Key_Type keyType); +void SF_Ctrl_AES_Set_Key_BE(uint8_t region,uint8_t *key, SF_Ctrl_AES_Key_Type keyType); +void SF_Ctrl_AES_Set_IV(uint8_t region,uint8_t *iv,uint32_t addrOffset); +void SF_Ctrl_AES_Set_IV_BE(uint8_t region,uint8_t *iv,uint32_t addrOffset); +void SF_Ctrl_AES_Enable(void); +void SF_Ctrl_AES_Disable(void); +uint8_t SF_Ctrl_Is_AES_Enable(void); +void SF_Ctrl_Set_Flash_Image_Offset(uint32_t addrOffset); +uint32_t SF_Ctrl_Get_Flash_Image_Offset(void); +void SF_Ctrl_Select_Clock(SF_Ctrl_Sahb_Type sahbType); +void SF_Ctrl_SendCmd(SF_Ctrl_Cmd_Cfg_Type *cfg); +void SF_Ctrl_Flash_Read_Icache_Set(SF_Ctrl_Cmd_Cfg_Type *cfg,uint8_t cmdValid); +void SF_Ctrl_Psram_Write_Icache_Set(SF_Ctrl_Cmd_Cfg_Type *cfg,uint8_t cmdValid); +void SF_Ctrl_Psram_Read_Icache_Set(SF_Ctrl_Cmd_Cfg_Type *cfg,uint8_t cmdValid); +BL_Sts_Type SF_Ctrl_GetBusyState(void); + +/*@} end of group SF_CTRL_Public_Functions */ + +/*@} end of group SF_CTRL */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_SF_CTRL_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_sflash.h b/drivers/bl702_driver/std_drv/inc/bl702_sflash.h new file mode 100644 index 00000000..4afe5556 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_sflash.h @@ -0,0 +1,196 @@ +/** + ****************************************************************************** + * @file bl702_sflah.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_SFLAH_H__ +#define __BL702_SFLAH_H__ + +#include "bl702_common.h" +#include "bl702_sf_ctrl.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SFLAH + * @{ + */ + +/** @defgroup SFLAH_Public_Types + * @{ + */ + +/** + * @brief Serial flash configuration structure type definition + */ +typedef struct { + uint8_t ioMode; /*!< Serail flash interface mode,bit0-3:IF mode,bit4:unwrap */ + uint8_t cReadSupport; /*!< Support continuous read mode,bit0:continuous read mode support,bit1:read mode cfg */ + uint8_t clkDelay; /*!< SPI clock delay,bit0-3:delay,bit4-6:pad delay */ + uint8_t clkInvert; /*!< SPI clock phase invert,bit0:clck invert,bit1:rx invert,bit2-4:pad delay,bit5-7:pad delay */ + uint8_t resetEnCmd; /*!< Flash enable reset command */ + uint8_t resetCmd; /*!< Flash reset command */ + uint8_t resetCreadCmd; /*!< Flash reset continuous read command */ + uint8_t resetCreadCmdSize; /*!< Flash reset continuous read command size */ + uint8_t jedecIdCmd; /*!< JEDEC ID command */ + uint8_t jedecIdCmdDmyClk; /*!< JEDEC ID command dummy clock */ + uint8_t qpiJedecIdCmd; /*!< QPI JEDEC ID comamnd */ + uint8_t qpiJedecIdCmdDmyClk; /*!< QPI JEDEC ID command dummy clock */ + uint8_t sectorSize; /*!< *1024bytes */ + uint8_t mid; /*!< Manufacturer ID */ + uint16_t pageSize; /*!< Page size */ + uint8_t chipEraseCmd; /*!< Chip erase cmd */ + uint8_t sectorEraseCmd; /*!< Sector erase command */ + uint8_t blk32EraseCmd; /*!< Block 32K erase command,some Micron not support */ + uint8_t blk64EraseCmd; /*!< Block 64K erase command */ + uint8_t writeEnableCmd; /*!< Need before every erase or program */ + uint8_t pageProgramCmd; /*!< Page program cmd */ + uint8_t qpageProgramCmd; /*!< QIO page program cmd */ + uint8_t qppAddrMode; /*!< QIO page program address mode */ + uint8_t fastReadCmd; /*!< Fast read command */ + uint8_t frDmyClk; /*!< Fast read command dummy clock */ + uint8_t qpiFastReadCmd; /*!< QPI fast read command */ + uint8_t qpiFrDmyClk; /*!< QPI fast read command dummy clock */ + uint8_t fastReadDoCmd; /*!< Fast read dual output command */ + uint8_t frDoDmyClk; /*!< Fast read dual output command dummy clock */ + uint8_t fastReadDioCmd; /*!< Fast read dual io comamnd */ + uint8_t frDioDmyClk; /*!< Fast read dual io command dummy clock */ + uint8_t fastReadQoCmd; /*!< Fast read quad output comamnd */ + uint8_t frQoDmyClk; /*!< Fast read quad output comamnd dummy clock */ + uint8_t fastReadQioCmd; /*!< Fast read quad io comamnd */ + uint8_t frQioDmyClk; /*!< Fast read quad io comamnd dummy clock */ + uint8_t qpiFastReadQioCmd; /*!< QPI fast read quad io comamnd */ + uint8_t qpiFrQioDmyClk; /*!< QPI fast read QIO dummy clock */ + uint8_t qpiPageProgramCmd; /*!< QPI program command */ + uint8_t writeVregEnableCmd; /*!< Enable write reg */ + uint8_t wrEnableIndex; /*!< Write enable register index */ + uint8_t qeIndex; /*!< Quad mode enable register index */ + uint8_t busyIndex; /*!< Busy status register index */ + uint8_t wrEnableBit; /*!< Write enable bit pos */ + uint8_t qeBit; /*!< Quad enable bit pos */ + uint8_t busyBit; /*!< Busy status bit pos */ + uint8_t wrEnableWriteRegLen; /*!< Register length of write enable */ + uint8_t wrEnableReadRegLen; /*!< Register length of write enable status */ + uint8_t qeWriteRegLen; /*!< Register length of contain quad enable */ + uint8_t qeReadRegLen; /*!< Register length of contain quad enable status */ + uint8_t releasePowerDown; /*!< Release power down command */ + uint8_t busyReadRegLen; /*!< Register length of contain busy status */ + uint8_t readRegCmd[4]; /*!< Read register command buffer */ + uint8_t writeRegCmd[4]; /*!< Write register command buffer */ + uint8_t enterQpi; /*!< Enter qpi command */ + uint8_t exitQpi; /*!< Exit qpi command */ + uint8_t cReadMode; /*!< Config data for continuous read mode */ + uint8_t cRExit; /*!< Config data for exit continuous read mode */ + uint8_t burstWrapCmd; /*!< Enable burst wrap command */ + uint8_t burstWrapCmdDmyClk; /*!< Enable burst wrap command dummy clock */ + uint8_t burstWrapDataMode; /*!< Data and address mode for this command */ + uint8_t burstWrapData; /*!< Data to enable burst wrap */ + uint8_t deBurstWrapCmd; /*!< Disable burst wrap command */ + uint8_t deBurstWrapCmdDmyClk; /*!< Disable burst wrap command dummy clock */ + uint8_t deBurstWrapDataMode; /*!< Data and address mode for this command */ + uint8_t deBurstWrapData; /*!< Data to disable burst wrap */ + uint16_t timeEsector; /*!< 4K erase time */ + uint16_t timeE32k; /*!< 32K erase time */ + uint16_t timeE64k; /*!< 64K erase time */ + uint16_t timePagePgm; /*!< Page program time */ + uint16_t timeCe; /*!< Chip erase time in ms */ + uint8_t pdDelay; /*!< Release power down command delay time for wake up */ + uint8_t qeData; /*!< QE set data */ +}__attribute__ ((packed)) SPI_Flash_Cfg_Type; + +/*@} end of group SFLAH_Public_Types */ + +/** @defgroup SFLAH_Public_Constants + * @{ + */ + +/*@} end of group SFLAH_Public_Constants */ + +/** @defgroup SFLAH_Public_Macros + * @{ + */ +#define BFLB_SPIFLASH_BLK32K_SIZE (32*1024) +#define BFLB_SPIFLASH_BLK64K_SIZE (64*1024) +#define BFLB_SPIFLASH_CMD_INVALID 0xff + +/*@} end of group SFLAH_Public_Macros */ + +/** @defgroup SFLAH_Public_Functions + * @{ + */ +void SFlash_Init(const SF_Ctrl_Cfg_Type *sfCtrlCfg); +BL_Err_Type SFlash_SetSPIMode(SF_Ctrl_Mode_Type mode); +BL_Err_Type SFlash_Read_Reg(SPI_Flash_Cfg_Type *flashCfg,uint8_t regIndex,uint8_t *regValue,uint8_t regLen); +BL_Err_Type SFlash_Write_Reg(SPI_Flash_Cfg_Type *flashCfg,uint8_t regIndex,uint8_t *regValue,uint8_t regLen); +BL_Err_Type SFlash_Read_Reg_With_Cmd(SPI_Flash_Cfg_Type *flashCfg,uint8_t readRegCmd,uint8_t *regValue, + uint8_t regLen); +BL_Err_Type SFlash_Write_Reg_With_Cmd(SPI_Flash_Cfg_Type *flashCfg,uint8_t writeRegCmd,uint8_t *regValue, + uint8_t regLen); +BL_Sts_Type SFlash_Busy(SPI_Flash_Cfg_Type *flashCfg); +BL_Err_Type SFlash_Write_Enable(SPI_Flash_Cfg_Type *flashCfg); +BL_Err_Type SFlash_Qspi_Enable(SPI_Flash_Cfg_Type *flashCfg); +void SFlash_Volatile_Reg_Write_Enable(SPI_Flash_Cfg_Type *flashCfg); +BL_Err_Type SFlash_Chip_Erase(SPI_Flash_Cfg_Type *flashCfg); +BL_Err_Type SFlash_Sector_Erase(SPI_Flash_Cfg_Type *flashCfg,uint32_t secNum); +BL_Err_Type SFlash_Blk32_Erase(SPI_Flash_Cfg_Type *flashCfg,uint32_t blkNum); +BL_Err_Type SFlash_Blk64_Erase(SPI_Flash_Cfg_Type *flashCfg,uint32_t blkNum); +BL_Err_Type SFlash_Erase(SPI_Flash_Cfg_Type *flashCfg,uint32_t startaddr,uint32_t endaddr); +BL_Err_Type SFlash_Program(SPI_Flash_Cfg_Type *flashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr,uint8_t *data, uint32_t len); +void SFlash_GetUniqueId(uint8_t *data,uint8_t idLen); +void SFlash_GetJedecId(SPI_Flash_Cfg_Type *flashCfg,uint8_t *data); +void SFlash_GetDeviceId(uint8_t *data); +void SFlash_Powerdown(void); +void SFlash_Releae_Powerdown(SPI_Flash_Cfg_Type *flashCfg); +BL_Err_Type SFlash_Restore_From_Powerdown(SPI_Flash_Cfg_Type *pFlashCfg,uint8_t flashContRead); +void SFlash_SetBurstWrap(SPI_Flash_Cfg_Type *flashCfg); +void SFlash_DisableBurstWrap(SPI_Flash_Cfg_Type *flashCfg); +BL_Err_Type SFlash_Software_Reset(SPI_Flash_Cfg_Type *flashCfg); +void SFlash_Reset_Continue_Read(SPI_Flash_Cfg_Type *flashCfg); +BL_Err_Type SFlash_Set_IDbus_Cfg(SPI_Flash_Cfg_Type *flashCfg,SF_Ctrl_IO_Type ioMode,uint8_t contRead,uint32_t addr, + uint32_t len); +BL_Err_Type SFlash_IDbus_Read_Enable(SPI_Flash_Cfg_Type *flashCfg,SF_Ctrl_IO_Type ioMode,uint8_t contRead); +BL_Err_Type SFlash_Cache_Read_Enable(SPI_Flash_Cfg_Type *flashCfg,SF_Ctrl_IO_Type ioMode,uint8_t contRead, + uint8_t wayDisable); +void SFlash_Cache_Read_Disable(void); +BL_Err_Type SFlash_Restore_From_Powerdown(SPI_Flash_Cfg_Type *pFlashCfg,uint8_t flashContRead); +BL_Err_Type SFlash_Read(SPI_Flash_Cfg_Type *flashCfg,SF_Ctrl_IO_Type ioMode,uint8_t contRead,uint32_t addr,uint8_t *data, + uint32_t len); + +/*@} end of group SFLAH_Public_Functions */ + +/*@} end of group SFLAH */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_SFLAH_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_sflash_ext.h b/drivers/bl702_driver/std_drv/inc/bl702_sflash_ext.h new file mode 100644 index 00000000..5ebc59d9 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_sflash_ext.h @@ -0,0 +1,82 @@ +/** + ****************************************************************************** + * @file bl702_sflah_ext.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2019 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_SFLAH_EXT_H__ +#define __BL702_SFLAH_EXT_H__ + +#include "bl702_sflash.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SFLAH_EXT + * @{ + */ + +/** @defgroup SFLAH_EXT_Public_Types + * @{ + */ + +/*@} end of group SFLAH_EXT_Public_Types */ + +/** @defgroup SFLAH_EXT_Public_Constants + * @{ + */ + +/*@} end of group SFLAH_EXT_Public_Constants */ + +/** @defgroup SFLAH_EXT_Public_Macros + * @{ + */ + +/*@} end of group SFLAH_EXT_Public_Macros */ + +/** @defgroup SFLAH_EXT_Public_Functions + * @{ + */ +BL_Err_Type SFlash_Read_Reg_With_Cmd(SPI_Flash_Cfg_Type *flashCfg,uint8_t readRegCmd,uint8_t *regValue, + uint8_t regLen); +BL_Err_Type SFlash_Write_Reg_With_Cmd(SPI_Flash_Cfg_Type *flashCfg,uint8_t writeRegCmd,uint8_t *regValue, + uint8_t regLen); + +/*@} end of group SFLAH_EXT_Public_Functions */ + +/*@} end of group SFLAH_EXT */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_SFLAH_EXT_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_snflash.h b/drivers/bl702_driver/std_drv/inc/bl702_snflash.h new file mode 100644 index 00000000..1976298b --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_snflash.h @@ -0,0 +1,184 @@ +/** + ****************************************************************************** + * @file bl702_snflash.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef NANDFLASH_XT26G01A_H +#define NANDFLASH_XT26G01A_H + +#include "bl702_aon.h" +#include "bl702_common.h" +#include "bl702_glb.h" +#include "bl702_hbn.h" +#include "bl702_spi.h" +#include "bl702_gpio.h" + +#include "ffconf.h" +#include "ff.h" +#include "diskio.h" + +#define FLASH_WRITE_READ_SIZE (2560) +#define READ_PRINT_OPEN (0) + +#define SPI_PIN_CLK GLB_GPIO_PIN_11 +#define SPI_PIN_MOSI GLB_GPIO_PIN_12 +#define SPI_PIN_MISO GLB_GPIO_PIN_21 +#define SPI_PIN_CS GLB_GPIO_PIN_10 + +#define NANDFLASH_WRITE_ENABLE (0x06) +#define NANDFLASH_WRITE_DISABLE (0x04) +#define NANDFLASH_GET_FEATURES (0x0F) +#define NANDFLASH_SET_FEATURES (0x1F) +#define NANDFLASH_PAGE_READ_TO_CACHE (0x13) +#define NANDFLASH_READ_FROM_CACHE (0x03) +#define NANDFLASH_READ_ID (0x9F) +#define NANDFLASH_PROGRAM_LOAD (0x02) +#define NANDFLASH_PROGRAM_LOAD_RANDOM_DATA (0x84) +#define NANDFLASH_PROGRAM_EXECUTE (0x10) +#define NANDFLASH_BLOCK_ERASE (0xD8) +#define NANDFLASH_RESET (0xFF) + +#define NANDFLASH_BLOCK_LOCK_ADDR (0xA0) +#define NANDFLASH_FEATURE_ADDR (0xB0) +#define NANDFLASH_STATUS_ADDR (0xC0) +#define NANDFLASH_DUMMY_BYTE (0x00) +#define NANDFLASH_PAGE_SIZE (2048) +#define NANDFLASH_PAGE_TOTAL_SIZE (2048 + 64) +#define NANDFLASH_BLOCK_SIZE (128 * 1024) +#define NANDFLASH_PAGES_PER_BLOCK (64) + +typedef struct { + SPI_ID_Type spiNo; + SPI_CFG_Type spiCfg; + SPI_ClockCfg_Type clockCfg; +}NANDFLASH_CFG_Type; + +extern NANDFLASH_CFG_Type nfCfg; + +typedef struct { + uint8_t Reserved0 : 1; + uint8_t CMP : 1; + uint8_t INV : 1; + uint8_t BP0 : 1; + uint8_t BP1 : 1; + uint8_t BP2 : 1; + uint8_t Reserved6 : 1; + uint8_t BRWD : 1; +}NANDFLASH_BLOCK_LOCK_Type; + +typedef struct { + uint8_t QE : 1; + uint8_t Reserved1 : 1; + uint8_t Reserved2 : 1; + uint8_t Reserved3 : 1; + uint8_t ECC_EN : 1; + uint8_t Reserved5 : 1; + uint8_t OTP_EN : 1; + uint8_t OTP_PRT : 1; +}NANDFLASH_FEATURE_Type; + +typedef struct { + uint8_t OIP : 1; + uint8_t WEL : 1; + uint8_t EFAIL_ECCS0 : 1; + uint8_t PFAIL_ECCS1 : 1; + uint8_t ECCS2 : 1; + uint8_t ECCS3 : 1; + uint8_t Reserved6 : 1; + uint8_t Reserved7 : 1; +}NANDFLASH_STATUS_Type; + + +typedef enum +{ + NO_BIT_ERROR = 0, + ONE_BIT_ERROR_DETECTED_AND_CORRECTED = 1, + TWO_BIT_ERROR_DETECTED_AND_CORRECTED = 2, + THREE_BIT_ERROR_DETECTED_AND_CORRECTED = 3, + FOUR_BIT_ERROR_DETECTED_AND_CORRECTED = 4, + FIVE_BIT_ERROR_DETECTED_AND_CORRECTED = 5, + SIX_BIT_ERROR_DETECTED_AND_CORRECTED = 6, + SEVEN_BIT_ERROR_DETECTED_AND_CORRECTED = 7, + BIT_ERROR_DETECTED_AND_NOT_CORRECTED = 8, + EIGHT_BIT_ERROR_DETECTED_AND_CORRECTED_MAX = 9 +}NANDFLASH_ECC_Type; + +void ATTR_TCM_SECTION Nandflash_Psram_Cfg(void); +void Nandflash_Init(void); + +void Nandflash_Gpio_Init(GLB_GPIO_Type clk, GLB_GPIO_Type mosi, GLB_GPIO_Type miso); +void Nandflash_CS_High(void); +void Nandflash_CS_Low(void); +void Nandflash_Clock_Init(uint8_t enable, uint8_t div); +void Nandflash_SPI_Init(NANDFLASH_CFG_Type *pNandflashCfg); + +void Nandflash_WriteEnable(NANDFLASH_CFG_Type *pNandflashCfg); +void Nandflash_WriteDisable(NANDFLASH_CFG_Type *pNandflashCfg); +void Nandflash_Get_BlockLock(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pBlockLock); +void Nandflash_Set_BlockLock(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pBlockLock); +void Nandflash_Get_Feature(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pFeature); +void Nandflash_Set_Feature(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pFeature); +void Nandflash_Get_Status(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pStatus); +void Nandflash_Set_Status(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pStatus); + +NANDFLASH_ECC_Type Nandflash_CheckBadBlock(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t blockNum, uint8_t *buff, uint32_t len); + +NANDFLASH_ECC_Type Nandflash_PagesRead(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr, uint8_t *buff, uint32_t len); +NANDFLASH_ECC_Type Nandflash_PageRead(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr, uint8_t *buff, uint32_t len); +NANDFLASH_ECC_Type Nandflash_PageReadToCache(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr); +void Nandflash_ReadFromCache(NANDFLASH_CFG_Type *pNandflashCfg, uint16_t offset, uint8_t *buff, uint32_t len); + +void Nandflash_ReadID(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pManufactureID, uint8_t *pDeviceID); +void Nandflash_PagesProgram(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr, const uint8_t *buff, uint32_t len); +void Nandflash_PageProgram(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr, const uint8_t *buff, uint32_t len); +void Nandflash_ProgramLoad(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t pageOffset, const uint8_t *buff, uint32_t len); +void Nandflash_ProgramExecute(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr); +void Nandflash_InternalDataMove(NANDFLASH_CFG_Type *pNandflashCfg); +void Nandflash_ProgramLoadRandomData(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr, uint8_t *buff, uint32_t len); +void Nandflash_BlockErase(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr); +void Nandflash_Reset(NANDFLASH_CFG_Type *pNandflashCfg); + +void Nandflash_WriteUnprotect(NANDFLASH_CFG_Type *pNandflashCfg); +NANDFLASH_ECC_Type Nandflash_Check_ECC_Status(NANDFLASH_CFG_Type *pNandflashCfg); + +int Nandflash_Disk_Status(void); +int Nandflash_Disk_Initialize(void); +int Nandflash_Disk_Read(BYTE *buff, LBA_t sector, UINT count); +int Nandflash_Disk_Write(const BYTE *buff, LBA_t sector, UINT count); +int Nandflash_Disk_Ioctl(BYTE cmd, void *buff); +DSTATUS Nandflash_Translate_Result_Code(int result); + +#endif + + + diff --git a/drivers/bl702_driver/std_drv/inc/bl702_spi.h b/drivers/bl702_driver/std_drv/inc/bl702_spi.h new file mode 100644 index 00000000..f06d1680 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_spi.h @@ -0,0 +1,314 @@ +/** + ****************************************************************************** + * @file bl702_spi.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_SPI_H__ +#define __BL702_SPI_H__ + +#include "spi_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SPI + * @{ + */ + +/** @defgroup SPI_Public_Types + * @{ + */ + +/** + * @brief SPI No. type definition + */ +typedef enum { + SPI_ID_0, /*!< SPI0 port define */ + SPI_ID_MAX, /*!< SPI MAX ID define */ +}SPI_ID_Type; + +/** + * @brief SPI byte inverse type definition + */ +typedef enum { + SPI_BYTE_INVERSE_BYTE0_FIRST, /*!< SPI byte 0 is sent out first */ + SPI_BYTE_INVERSE_BYTE3_FIRST, /*!< SPI byte 3 is sent out first */ +}SPI_BYTE_INVERSE_Type; + +/** + * @brief SPI bit inverse type definition + */ +typedef enum { + SPI_BIT_INVERSE_MSB_FIRST, /*!< SPI each byte is sent out MSB first */ + SPI_BIT_INVERSE_LSB_FIRST, /*!< SPI each byte is sent out LSB first */ +}SPI_BIT_INVERSE_Type; + +/** + * @brief SPI clock phase inverse type definition + */ +typedef enum { + SPI_CLK_PHASE_INVERSE_0, /*!< SPI clock phase inverse 0 */ + SPI_CLK_PHASE_INVERSE_1, /*!< SPI clock phase inverse 1 */ +}SPI_CLK_PHASE_INVERSE_Type; + +/** + * @brief SPI clock polarity type definition + */ +typedef enum { + SPI_CLK_POLARITY_LOW, /*!< SPI clock output low at IDLE state */ + SPI_CLK_POLARITY_HIGH, /*!< SPI clock output high at IDLE state */ +}SPI_CLK_POLARITY_Type; + +/** + * @brief SPI frame size(also the valid width for each fifo entry) type definition + */ +typedef enum { + SPI_FRAME_SIZE_8, /*!< SPI frame size 8 bit */ + SPI_FRAME_SIZE_16, /*!< SPI frame size 16 bit */ + SPI_FRAME_SIZE_24, /*!< SPI frame size 24 bit */ + SPI_FRAME_SIZE_32, /*!< SPI frame size 32 bit */ +}SPI_FrameSize_Type; + +/** + * @brief SPI work mode select type definition + */ +typedef enum { + SPI_WORK_MODE_SLAVE, /*!< SPI work at slave mode */ + SPI_WORK_MODE_MASTER, /*!< SPI work at master mode */ +}SPI_WORK_MODE_Type; + +/** + * @brief SPI enable or disable timeout judgment definition + */ +typedef enum { + SPI_TIMEOUT_DISABLE, /*!< SPI disable timeout judgment */ + SPI_TIMEOUT_ENABLE, /*!< SPI enable timeout judgment */ +}SPI_Timeout_Type; + +/** + * @brief SPI fifo overflow/underflow flag type definition + */ +typedef enum { + SPI_FIFO_TX_OVERFLOW, /*!< SPI tx fifo overflow flag */ + SPI_FIFO_TX_UNDERFLOW, /*!< SPI tx fifo underflow flag */ + SPI_FIFO_RX_OVERFLOW, /*!< SPI rx fifo overflow flag */ + SPI_FIFO_RX_UNDERFLOW, /*!< SPI rx fifo underflow flag */ +}SPI_FifoStatus_Type; + +/** + * @brief SPI interrupt type definition + */ +typedef enum { + SPI_INT_END, /*!< SPI transfer end interrupt,shared by both master and slave mode */ + SPI_INT_TX_FIFO_REQ, /*!< SPI tx fifo ready interrupt(tx fifo count > tx fifo threshold) */ + SPI_INT_RX_FIFO_REQ, /*!< SPI rx fifo ready interrupt(rx fifo count > rx fifo threshold) */ + SPI_INT_SLAVE_TIMEOUT, /*!< SPI slave mode transfer time-out interrupt,triggered when spi bus is idle for the given value */ + SPI_INT_SLAVE_UNDERRUN, /*!< SPI slave mode tx underrun error interrupt,triggered when tx is not ready during transfer */ + SPI_INT_FIFO_ERROR, /*!< SPI tx/rx fifo error interrupt(overflow/underflow) */ + SPI_INT_ALL, /*!< All the interrupt */ +}SPI_INT_Type; + +/** + * @brief SPI configuration type definition + */ +typedef struct { + BL_Fun_Type deglitchEnable; /*!< Enable or disable de-glitch function */ + BL_Fun_Type continuousEnable; /*!< Enable or disable master continuous transfer mode,enable:SS will stay asserted if next data is valid */ + SPI_BYTE_INVERSE_Type byteSequence; /*!< The byte is sent first in SPI transfer */ + SPI_BIT_INVERSE_Type bitSequence; /*!< The bit is sent first in SPI transfer */ + SPI_CLK_PHASE_INVERSE_Type clkPhaseInv; /*!< Inverse SPI clock phase */ + SPI_CLK_POLARITY_Type clkPolarity; /*!< SPI clock plarity */ + SPI_FrameSize_Type frameSize; /*!< SPI frame size(also the valid width for each fifo entry) */ +}SPI_CFG_Type; + +/** + * @brief SPI configuration type definition + */ +typedef struct { + uint8_t startLen; /*!< Length of start condition */ + uint8_t stopLen; /*!< Length of stop condition */ + uint8_t dataPhase0Len; /*!< Length of data phase 0,affecting clock */ + uint8_t dataPhase1Len; /*!< Length of data phase 1,affecting clock */ + uint8_t intervalLen; /*!< Length of interval between frame */ +}SPI_ClockCfg_Type; + +/** + * @brief SPI DMA configuration type definition + */ +typedef struct { + uint8_t txFifoThreshold; /*!< SPI tx FIFO threshold */ + uint8_t rxFifoThreshold; /*!< SPI rx FIFO threshold */ + BL_Fun_Type txFifoDmaEnable; /*!< Enable or disable tx dma req/ack interface */ + BL_Fun_Type rxFifoDmaEnable; /*!< Enable or disable rx dma req/ack interface */ +}SPI_FifoCfg_Type; + +/*@} end of group SPI_Public_Types */ + +/** @defgroup SPI_Public_Constants + * @{ + */ + +/** @defgroup SPI_ID_TYPE + * @{ + */ +#define IS_SPI_ID_TYPE(type) (((type) == SPI_ID_0) || \ + ((type) == SPI_ID_MAX)) + +/** @defgroup SPI_BYTE_INVERSE_TYPE + * @{ + */ +#define IS_SPI_BYTE_INVERSE_TYPE(type) (((type) == SPI_BYTE_INVERSE_BYTE0_FIRST) || \ + ((type) == SPI_BYTE_INVERSE_BYTE3_FIRST)) + +/** @defgroup SPI_BIT_INVERSE_TYPE + * @{ + */ +#define IS_SPI_BIT_INVERSE_TYPE(type) (((type) == SPI_BIT_INVERSE_MSB_FIRST) || \ + ((type) == SPI_BIT_INVERSE_LSB_FIRST)) + +/** @defgroup SPI_CLK_PHASE_INVERSE_TYPE + * @{ + */ +#define IS_SPI_CLK_PHASE_INVERSE_TYPE(type) (((type) == SPI_CLK_PHASE_INVERSE_0) || \ + ((type) == SPI_CLK_PHASE_INVERSE_1)) + +/** @defgroup SPI_CLK_POLARITY_TYPE + * @{ + */ +#define IS_SPI_CLK_POLARITY_TYPE(type) (((type) == SPI_CLK_POLARITY_LOW) || \ + ((type) == SPI_CLK_POLARITY_HIGH)) + +/** @defgroup SPI_FRAMESIZE_TYPE + * @{ + */ +#define IS_SPI_FRAMESIZE_TYPE(type) (((type) == SPI_FRAME_SIZE_8) || \ + ((type) == SPI_FRAME_SIZE_16) || \ + ((type) == SPI_FRAME_SIZE_24) || \ + ((type) == SPI_FRAME_SIZE_32)) + +/** @defgroup SPI_WORK_MODE_TYPE + * @{ + */ +#define IS_SPI_WORK_MODE_TYPE(type) (((type) == SPI_WORK_MODE_SLAVE) || \ + ((type) == SPI_WORK_MODE_MASTER)) + +/** @defgroup SPI_TIMEOUT_TYPE + * @{ + */ +#define IS_SPI_TIMEOUT_TYPE(type) (((type) == SPI_TIMEOUT_DISABLE) || \ + ((type) == SPI_TIMEOUT_ENABLE)) + +/** @defgroup SPI_FIFOSTATUS_TYPE + * @{ + */ +#define IS_SPI_FIFOSTATUS_TYPE(type) (((type) == SPI_FIFO_TX_OVERFLOW) || \ + ((type) == SPI_FIFO_TX_UNDERFLOW) || \ + ((type) == SPI_FIFO_RX_OVERFLOW) || \ + ((type) == SPI_FIFO_RX_UNDERFLOW)) + +/** @defgroup SPI_INT_TYPE + * @{ + */ +#define IS_SPI_INT_TYPE(type) (((type) == SPI_INT_END) || \ + ((type) == SPI_INT_TX_FIFO_REQ) || \ + ((type) == SPI_INT_RX_FIFO_REQ) || \ + ((type) == SPI_INT_SLAVE_TIMEOUT) || \ + ((type) == SPI_INT_SLAVE_UNDERRUN) || \ + ((type) == SPI_INT_FIFO_ERROR) || \ + ((type) == SPI_INT_ALL)) + +/*@} end of group SPI_Public_Constants */ + +/** @defgroup SPI_Public_Macros + * @{ + */ +#define SPI_RX_FIFO_SIZE 4 +#define SPI_TX_FIFO_SIZE 4 + +/*@} end of group SPI_Public_Macros */ + +/** @defgroup SPI_Public_Functions + * @{ + */ +#ifndef BFLB_USE_HAL_DRIVER +void SPI_IRQHandler(void); +#endif +BL_Err_Type SPI_Init(SPI_ID_Type spiNo,SPI_CFG_Type *spiCfg); +BL_Err_Type SPI_DeInit(SPI_ID_Type spiNo); +BL_Err_Type SPI_SetClock(SPI_ID_Type spiNo,uint32_t clk); +BL_Err_Type SPI_ClockConfig(SPI_ID_Type spiNo,SPI_ClockCfg_Type *clockCfg); +BL_Err_Type SPI_FifoConfig(SPI_ID_Type spiNo,SPI_FifoCfg_Type *fifoCfg); +BL_Err_Type SPI_Enable(SPI_ID_Type spiNo,SPI_WORK_MODE_Type modeType); +BL_Err_Type SPI_Disable(SPI_ID_Type spiNo,SPI_WORK_MODE_Type modeType); +BL_Err_Type SPI_SetTimeOutValue(SPI_ID_Type spiNo,uint16_t value); +BL_Err_Type SPI_SetDeglitchCount(SPI_ID_Type spiNo,uint8_t cnt); +BL_Err_Type SPI_RxIgnoreEnable(SPI_ID_Type spiNo,uint8_t startPoint,uint8_t stopPoint); +BL_Err_Type SPI_RxIgnoreDisable(SPI_ID_Type spiNo); +BL_Err_Type SPI_ClrTxFifo(SPI_ID_Type spiNo); +BL_Err_Type SPI_ClrRxFifo(SPI_ID_Type spiNo); +BL_Err_Type SPI_ClrIntStatus(SPI_ID_Type spiNo,SPI_INT_Type intType); +BL_Err_Type SPI_IntMask(SPI_ID_Type spiNo,SPI_INT_Type intType,BL_Mask_Type intMask); +BL_Err_Type SPI_Int_Callback_Install(SPI_ID_Type spiNo,SPI_INT_Type intType,intCallback_Type *cbFun); +BL_Err_Type SPI_SendData(SPI_ID_Type spiNo,uint32_t data); +BL_Err_Type SPI_Send_8bits(SPI_ID_Type spiNo,uint8_t *buff,uint32_t length,SPI_Timeout_Type timeoutType); +BL_Err_Type SPI_Send_16bits(SPI_ID_Type spiNo,uint16_t *buff,uint32_t length,SPI_Timeout_Type timeoutType); +BL_Err_Type SPI_Send_24bits(SPI_ID_Type spiNo,uint32_t *buff,uint32_t length,SPI_Timeout_Type timeoutType); +BL_Err_Type SPI_Send_32bits(SPI_ID_Type spiNo,uint32_t *buff,uint32_t length,SPI_Timeout_Type timeoutType); +BL_Err_Type SPI_Recv_8bits(SPI_ID_Type spiNo,uint8_t *buff,uint32_t length,SPI_Timeout_Type timeoutType); +BL_Err_Type SPI_Recv_16bits(SPI_ID_Type spiNo,uint16_t *buff,uint32_t length,SPI_Timeout_Type timeoutType); +BL_Err_Type SPI_Recv_24bits(SPI_ID_Type spiNo,uint32_t *buff,uint32_t length,SPI_Timeout_Type timeoutType); +BL_Err_Type SPI_Recv_32bits(SPI_ID_Type spiNo,uint32_t *buff,uint32_t length,SPI_Timeout_Type timeoutType); +BL_Err_Type SPI_SendRecv_8bits(SPI_ID_Type spiNo,uint8_t *sendBuff,uint8_t *recvBuff,uint32_t length, + SPI_Timeout_Type timeoutType); +BL_Err_Type SPI_SendRecv_16bits(SPI_ID_Type spiNo,uint16_t *sendBuff,uint16_t *recvBuff,uint32_t length, + SPI_Timeout_Type timeoutType); +BL_Err_Type SPI_SendRecv_24bits(SPI_ID_Type spiNo,uint32_t *sendBuff,uint32_t *recvBuff,uint32_t length, + SPI_Timeout_Type timeoutType); +BL_Err_Type SPI_SendRecv_32bits(SPI_ID_Type spiNo,uint32_t *sendBuff,uint32_t *recvBuff,uint32_t length, + SPI_Timeout_Type timeoutType); +uint32_t SPI_ReceiveData(SPI_ID_Type spiNo); +uint8_t SPI_GetTxFifoCount(SPI_ID_Type spiNo); +uint8_t SPI_GetRxFifoCount(SPI_ID_Type spiNo); +BL_Sts_Type SPI_GetIntStatus(SPI_ID_Type spiNo,SPI_INT_Type intType); +BL_Sts_Type SPI_GetFifoStatus(SPI_ID_Type spiNo,SPI_FifoStatus_Type fifoSts); +BL_Sts_Type SPI_GetBusyStatus(SPI_ID_Type spiNo); + +/*@} end of group SPI_Public_Functions */ + +/*@} end of group SPI */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_SPI_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_timer.h b/drivers/bl702_driver/std_drv/inc/bl702_timer.h new file mode 100644 index 00000000..4bd0e9e1 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_timer.h @@ -0,0 +1,243 @@ +/** + ****************************************************************************** + * @file bl702_timer.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_TIMER_H__ +#define __BL702_TIMER_H__ + +#include "timer_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup TIMER + * @{ + */ + +/** @defgroup TIMER_Public_Types + * @{ + */ + +/** + * @brief TIMER channel type definition + */ +typedef enum { + TIMER_CH0, /*!< TIMER channel 0 port define */ + TIMER_CH1, /*!< TIMER channel 1 port define */ + TIMER_CH_MAX, /*!< */ +}TIMER_Chan_Type; + +/** + * @brief TIMER clock source type definition + */ +typedef enum { + TIMER_CLKSRC_FCLK, /*!< TIMER clock source :System CLK */ + TIMER_CLKSRC_32K, /*!< TIMER clock source :32K CLK */ + TIMER_CLKSRC_1K, /*!< TIMER clock source :1K CLK,Only for Timer not for Watchdog */ + TIMER_CLKSRC_XTAL, /*!< TIMER clock source :XTAL CLK */ +}TIMER_ClkSrc_Type; + +/** + * @brief TIMER match compare ID type definition + */ +typedef enum { + TIMER_COMP_ID_0, /*!< TIMER match compare ID 0 define */ + TIMER_COMP_ID_1, /*!< TIMER match compare ID 1 define */ + TIMER_COMP_ID_2, /*!< TIMER match compare ID 2 define */ +}TIMER_Comp_ID_Type; + +/** + * @brief TIMER preload source type definition + */ +typedef enum { + TIMER_PRELOAD_TRIG_NONE, /*!< TIMER no preload source, just free run */ + TIMER_PRELOAD_TRIG_COMP0, /*!< TIMER count register preload triggered by comparator 0 */ + TIMER_PRELOAD_TRIG_COMP1, /*!< TIMER count register preload triggered by comparator 1 */ + TIMER_PRELOAD_TRIG_COMP2, /*!< TIMER count register preload triggered by comparator 2 */ +}TIMER_PreLoad_Trig_Type; + +/** + * @brief TIMER count register run mode type definition + */ +typedef enum { + TIMER_COUNT_PRELOAD, /*!< TIMER count register preload from comparator register */ + TIMER_COUNT_FREERUN, /*!< TIMER count register free run */ +}TIMER_CountMode_Type; + +/** + * @brief TIMER interrupt type definition + */ +typedef enum { + TIMER_INT_COMP_0, /*!< Comparator 0 match cause interrupt */ + TIMER_INT_COMP_1, /*!< Comparator 1 match cause interrupt */ + TIMER_INT_COMP_2, /*!< Comparator 2 match cause interrupt */ + TIMER_INT_ALL, /*!< */ +}TIMER_INT_Type; + +/** + * @brief Watchdog timer interrupt type definition + */ +typedef enum { + WDT_INT, /*!< Comparator 0 match cause interrupt */ + WDT_INT_ALL, /*!< */ +}WDT_INT_Type; + +/** + * @brief TIMER configuration structure type definition + */ +typedef struct { + TIMER_Chan_Type timerCh; /*!< Timer channel */ + TIMER_ClkSrc_Type clkSrc; /*!< Timer clock source */ + TIMER_PreLoad_Trig_Type plTrigSrc; /*!< Timer count register preload trigger source slelect */ + TIMER_CountMode_Type countMode; /*!< Timer count mode */ + uint8_t clockDivision; /*!< Timer clock divison value */ + uint32_t matchVal0; /*!< Timer match 0 value 0 */ + uint32_t matchVal1; /*!< Timer match 1 value 0 */ + uint32_t matchVal2; /*!< Timer match 2 value 0 */ + uint32_t preLoadVal; /*!< Timer preload value */ +}TIMER_CFG_Type; + +/*@} end of group TIMER_Public_Types */ + +/** @defgroup TIMER_Public_Constants + * @{ + */ + +/** @defgroup TIMER_CHAN_TYPE + * @{ + */ +#define IS_TIMER_CHAN_TYPE(type) (((type) == TIMER_CH0) || \ + ((type) == TIMER_CH1) || \ + ((type) == TIMER_CH_MAX)) + +/** @defgroup TIMER_CLKSRC_TYPE + * @{ + */ +#define IS_TIMER_CLKSRC_TYPE(type) (((type) == TIMER_CLKSRC_FCLK) || \ + ((type) == TIMER_CLKSRC_32K) || \ + ((type) == TIMER_CLKSRC_1K) || \ + ((type) == TIMER_CLKSRC_XTAL)) + +/** @defgroup TIMER_COMP_ID_TYPE + * @{ + */ +#define IS_TIMER_COMP_ID_TYPE(type) (((type) == TIMER_COMP_ID_0) || \ + ((type) == TIMER_COMP_ID_1) || \ + ((type) == TIMER_COMP_ID_2)) + +/** @defgroup TIMER_PRELOAD_TRIG_TYPE + * @{ + */ +#define IS_TIMER_PRELOAD_TRIG_TYPE(type) (((type) == TIMER_PRELOAD_TRIG_NONE) || \ + ((type) == TIMER_PRELOAD_TRIG_COMP0) || \ + ((type) == TIMER_PRELOAD_TRIG_COMP1) || \ + ((type) == TIMER_PRELOAD_TRIG_COMP2)) + +/** @defgroup TIMER_COUNTMODE_TYPE + * @{ + */ +#define IS_TIMER_COUNTMODE_TYPE(type) (((type) == TIMER_COUNT_PRELOAD) || \ + ((type) == TIMER_COUNT_FREERUN)) + +/** @defgroup TIMER_INT_TYPE + * @{ + */ +#define IS_TIMER_INT_TYPE(type) (((type) == TIMER_INT_COMP_0) || \ + ((type) == TIMER_INT_COMP_1) || \ + ((type) == TIMER_INT_COMP_2) || \ + ((type) == TIMER_INT_ALL)) + +/** @defgroup WDT_INT_TYPE + * @{ + */ +#define IS_WDT_INT_TYPE(type) (((type) == WDT_INT) || \ + ((type) == WDT_INT_ALL)) + +/*@} end of group TIMER_Public_Constants */ + +/** @defgroup TIMER_Public_Macros + * @{ + */ +#define WDT_ENABLE_ACCESS() {BL_WR_REG(TIMER_BASE,TIMER_WFAR,BL_SET_REG_BITS_VAL(BL_RD_REG(TIMER_BASE,TIMER_WFAR),TIMER_WFAR,0xBABA));\ + BL_WR_REG(TIMER_BASE,TIMER_WSAR,BL_SET_REG_BITS_VAL(BL_RD_REG(TIMER_BASE,TIMER_WSAR),TIMER_WSAR,0xEB10));} + +/*@} end of group TIMER_Public_Macros */ + +/** @defgroup TIMER_Public_Functions + * @{ + */ + +/** + * @brief UART Functions + */ +#ifndef BFLB_USE_HAL_DRIVER +void TIMER_CH0_IRQHandler(void); +void TIMER_CH1_IRQHandler(void); +void TIMER_WDT_IRQHandler(void); +#endif +BL_Err_Type TIMER_Init(TIMER_CFG_Type* timerCfg); +uint32_t TIMER_GetCompValue(TIMER_Chan_Type timerCh, TIMER_Comp_ID_Type cmpNo); +void TIMER_SetCompValue(TIMER_Chan_Type timerCh, TIMER_Comp_ID_Type cmpNo, uint32_t val); +uint32_t TIMER_GetCounterValue(TIMER_Chan_Type timerCh); +BL_Sts_Type TIMER_GetMatchStatus(TIMER_Chan_Type timerCh, TIMER_Comp_ID_Type cmpNo); +uint32_t TIMER_GetPreloadValue(TIMER_Chan_Type timerCh); +void TIMER_SetPreloadValue(TIMER_Chan_Type timerCh,uint32_t val); +void TIMER_SetPreloadSrc(TIMER_Chan_Type timerCh, TIMER_PreLoad_Trig_Type plSrc); +void TIMER_SetCountMode(TIMER_Chan_Type timerCh, TIMER_CountMode_Type countMode); +void TIMER_ClearIntStatus(TIMER_Chan_Type timerCh, TIMER_Comp_ID_Type cmpNo); +void TIMER_Enable(TIMER_Chan_Type timerCh); +void TIMER_Disable(TIMER_Chan_Type timerCh); +void TIMER_IntMask(TIMER_Chan_Type timerCh,TIMER_INT_Type intType, BL_Mask_Type intMask); +void WDT_Set_Clock(TIMER_ClkSrc_Type clkSrc,uint8_t div); +uint16_t WDT_GetMatchValue(void); +void WDT_SetCompValue(uint16_t val); +uint16_t WDT_GetCounterValue(void); +void WDT_ResetCounterValue(void); +BL_Sts_Type WDT_GetResetStatus(void); +void WDT_ClearResetStatus(void); +void WDT_Enable(void); +void WDT_Disable(void); +void WDT_IntMask(WDT_INT_Type intType, BL_Mask_Type intMask); +void Timer_Int_Callback_Install(TIMER_Chan_Type timerChan,TIMER_INT_Type intType,intCallback_Type* cbFun); +void WDT_Int_Callback_Install(WDT_INT_Type wdtInt,intCallback_Type* cbFun); + +/*@} end of group TIMER_Public_Functions */ + +/*@} end of group TIMER */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_TIMER_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_uart.h b/drivers/bl702_driver/std_drv/inc/bl702_uart.h new file mode 100644 index 00000000..995ad360 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_uart.h @@ -0,0 +1,322 @@ +/** + ****************************************************************************** + * @file bl702_uart.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_UART_H__ +#define __BL702_UART_H__ + +#include "uart_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup UART + * @{ + */ + +/** @defgroup UART_Public_Types + * @{ + */ + +/** + * @brief UART port type definition + */ +typedef enum { + UART0_ID, /*!< UART0 port define */ + UART1_ID, /*!< UART1 port define */ + UART_ID_MAX, /*!< UART MAX ID define */ +}UART_ID_Type; + +/** + * @brief UART direction type definition + */ +typedef enum { + UART_TX, /*!< UART TX Direction */ + UART_RX, /*!< UART RX Direction */ + UART_TXRX, /*!< UART TX and RX Direction */ +}UART_Direction_Type; + +/** + * @brief UART parity type definition + */ +typedef enum { + UART_PARITY_NONE, /*!< UART parity none define */ + UART_PARITY_ODD, /*!< UART parity odd define */ + UART_PARITY_EVEN, /*!< UART parity even define */ +}UART_Parity_Type; + +/** + * @brief UART data bits type definiton + */ +typedef enum { + UART_DATABITS_5, /*!< UART data bits length:5 bits */ + UART_DATABITS_6, /*!< UART data bits length:6 bits */ + UART_DATABITS_7, /*!< UART data bits length:7 bits */ + UART_DATABITS_8, /*!< UART data bits length:8 bits */ +}UART_DataBits_Type; + +/** + * @brief UART stop bits type definiton + */ +typedef enum { + UART_STOPBITS_1, /*!< UART data stop bits length:1 bits */ + UART_STOPBITS_1_5, /*!< UART data stop bits length:1.5 bits */ + UART_STOPBITS_2, /*!< UART data stop bits length:2 bits */ +}UART_StopBits_Type; + +/** + * @brief UART each data byte is send out LSB-first or MSB-first type definiton + */ +typedef enum { + UART_LSB_FIRST, /*!< UART each byte is send out LSB-first */ + UART_MSB_FIRST, /*!< UART each byte is send out MSB-first */ +}UART_ByteBitInverse_Type; + +/** + * @brief UART auto baudrate detection using codeword 0x55 or start bit definiton + */ +typedef enum { + UART_AUTOBAUD_0X55, /*!< UART auto baudrate detection using codeword 0x55 */ + UART_AUTOBAUD_STARTBIT, /*!< UART auto baudrate detection using start bit */ +}UART_AutoBaudDetection_Type; + +/** + * @brief UART interrupt type definition + */ +typedef enum { + UART_INT_TX_END, /*!< UART tx transfer end interrupt */ + UART_INT_RX_END, /*!< UART rx transfer end interrupt */ + UART_INT_TX_FIFO_REQ, /*!< UART tx fifo interrupt when tx fifo count reaches,auto clear */ + UART_INT_RX_FIFO_REQ, /*!< UART rx fifo interrupt when rx fifo count reaches,auto clear */ + UART_INT_RTO, /*!< UART rx time-out interrupt */ + UART_INT_PCE, /*!< UART rx parity check error interrupt */ + UART_INT_TX_FER, /*!< UART tx fifo overflow/underflow error interrupt */ + UART_INT_RX_FER, /*!< UART rx fifo overflow/underflow error interrupt */ + UART_INT_LSE, /*!< UART rx lin mode sync field error interrupt */ + UART_INT_ALL, /*!< All the interrupt */ +}UART_INT_Type; + +/** + * @brief UART overflow or underflow type definition + */ +typedef enum { + UART_TX_OVERFLOW, /*!< UART tx fifo overflow */ + UART_TX_UNDERFLOW, /*!< UART tx fifo underflow */ + UART_RX_OVERFLOW, /*!< UART rx fifo overflow */ + UART_RX_UNDERFLOW, /*!< UART rx fifo underflow */ +}UART_Overflow_Type; + +/** + * @brief UART configuration structure type definition + */ +typedef struct { + uint32_t uartClk; /*!< Uart module clock */ + uint32_t baudRate; /*!< Uart baudrate */ + UART_DataBits_Type dataBits; /*!< Uart frame length of data bit */ + UART_StopBits_Type stopBits; /*!< Uart frame length of stop bit */ + UART_Parity_Type parity; /*!< Uart parity check type */ + BL_Fun_Type ctsFlowControl; /*!< Enable or disable tx CTS flow control */ + BL_Fun_Type rxDeglitch; /*!< Enable or disable rx input de-glitch function */ + BL_Fun_Type rtsSoftwareControl; /*!< Enable or disable rx RTS output SW control mode */ + BL_Fun_Type txSoftwareControl; /*!< Enable or disable tx output SW control mode */ + BL_Fun_Type txLinMode; /*!< Enable or disable tx LIN mode,LIN header will be sent before sending data */ + BL_Fun_Type rxLinMode; /*!< Enable or disable rx LIN mode,LIN header will be required and checked before receiving data */ + uint8_t txBreakBitCnt; /*!< Uart tx break bit count,additional 8 bit times will be added since LIN break field requires at + least 13 bit times */ + UART_ByteBitInverse_Type byteBitInverse; /*!< Uart each data byte is send out LSB-first or MSB-first */ +}UART_CFG_Type; + +/** + * @brief UART FIFO configuration structure type definition + */ +typedef struct { + uint8_t txFifoDmaThreshold; /*!< TX FIFO threshold, dma tx request will not be asserted if tx fifo count is less than this value */ + uint8_t rxFifoDmaThreshold; /*!< RX FIFO threshold, dma rx request will not be asserted if rx fifo count is less than this value */ + BL_Fun_Type txFifoDmaEnable; /*!< Enable or disable tx dma req/ack interface */ + BL_Fun_Type rxFifoDmaEnable; /*!< Enable or disable rx dma req/ack interface */ +}UART_FifoCfg_Type; + +/** + * @brief UART infrared configuration structure type definition + */ +typedef struct { + BL_Fun_Type txIrEnable; /*!< Enable or disable uart tx ir mode */ + BL_Fun_Type rxIrEnable; /*!< Enable or disable uart rx ir mode */ + BL_Fun_Type txIrInverse; /*!< Enable or disable inverse signal of uart tx output in ir mode */ + BL_Fun_Type rxIrInverse; /*!< Enable or disable inverse signal of uart rx input in ir mode */ + uint16_t txIrPulseStart; /*!< Set start position of uart tx ir pulse */ + uint16_t txIrPulseStop; /*!< Set stop position of uart tx ir pulse */ + uint16_t rxIrPulseStart; /*!< Set start position of uart rx pulse recovered from ir signal */ +}UART_IrCfg_Type; + +/*@} end of group UART_Public_Types */ + +/** @defgroup UART_Public_Constants + * @{ + */ + +/** @defgroup UART_ID_TYPE + * @{ + */ +#define IS_UART_ID_TYPE(type) (((type) == UART0_ID) || \ + ((type) == UART1_ID) || \ + ((type) == UART_ID_MAX)) + +/** @defgroup UART_DIRECTION_TYPE + * @{ + */ +#define IS_UART_DIRECTION_TYPE(type) (((type) == UART_TX) || \ + ((type) == UART_RX) || \ + ((type) == UART_TXRX)) + +/** @defgroup UART_PARITY_TYPE + * @{ + */ +#define IS_UART_PARITY_TYPE(type) (((type) == UART_PARITY_NONE) || \ + ((type) == UART_PARITY_ODD) || \ + ((type) == UART_PARITY_EVEN)) + +/** @defgroup UART_DATABITS_TYPE + * @{ + */ +#define IS_UART_DATABITS_TYPE(type) (((type) == UART_DATABITS_5) || \ + ((type) == UART_DATABITS_6) || \ + ((type) == UART_DATABITS_7) || \ + ((type) == UART_DATABITS_8)) + +/** @defgroup UART_STOPBITS_TYPE + * @{ + */ +#define IS_UART_STOPBITS_TYPE(type) (((type) == UART_STOPBITS_1) || \ + ((type) == UART_STOPBITS_1_5) || \ + ((type) == UART_STOPBITS_2)) + +/** @defgroup UART_BYTEBITINVERSE_TYPE + * @{ + */ +#define IS_UART_BYTEBITINVERSE_TYPE(type) (((type) == UART_LSB_FIRST) || \ + ((type) == UART_MSB_FIRST)) + +/** @defgroup UART_AUTOBAUDDETECTION_TYPE + * @{ + */ +#define IS_UART_AUTOBAUDDETECTION_TYPE(type) (((type) == UART_AUTOBAUD_0X55) || \ + ((type) == UART_AUTOBAUD_STARTBIT)) + +/** @defgroup UART_INT_TYPE + * @{ + */ +#define IS_UART_INT_TYPE(type) (((type) == UART_INT_TX_END) || \ + ((type) == UART_INT_RX_END) || \ + ((type) == UART_INT_TX_FIFO_REQ) || \ + ((type) == UART_INT_RX_FIFO_REQ) || \ + ((type) == UART_INT_RTO) || \ + ((type) == UART_INT_PCE) || \ + ((type) == UART_INT_TX_FER) || \ + ((type) == UART_INT_RX_FER) || \ + ((type) == UART_INT_LSE) || \ + ((type) == UART_INT_ALL)) + +/** @defgroup UART_OVERFLOW_TYPE + * @{ + */ +#define IS_UART_OVERFLOW_TYPE(type) (((type) == UART_TX_OVERFLOW) || \ + ((type) == UART_TX_UNDERFLOW) || \ + ((type) == UART_RX_OVERFLOW) || \ + ((type) == UART_RX_UNDERFLOW)) + +/*@} end of group UART_Public_Constants */ + +/** @defgroup UART_Public_Macros + * @{ + */ +#define UART_RX_FIFO_SIZE 128 +#define UART_TX_FIFO_SIZE 128 +#define UART_DEFAULT_RECV_TIMEOUT 80 + +/*@} end of group UART_Public_Macros */ + +/** @defgroup UART_Public_Functions + * @{ + */ + +/** + * @brief UART Functions + */ +#if (!defined BFLB_USE_HAL_DRIVER)||(defined BFLB_EFLASH_LOADER) +void UART0_IRQHandler(void); +void UART1_IRQHandler(void); +#endif +BL_Err_Type UART_Init(UART_ID_Type uartId,UART_CFG_Type* uartCfg); +BL_Err_Type UART_DeInit(UART_ID_Type uartId); +BL_Err_Type UART_FifoConfig(UART_ID_Type uartId,UART_FifoCfg_Type* fifoCfg); +BL_Err_Type UART_IrConfig(UART_ID_Type uartId,UART_IrCfg_Type* irCfg); +BL_Err_Type UART_Enable(UART_ID_Type uartId,UART_Direction_Type direct); +BL_Err_Type UART_Disable(UART_ID_Type uartId,UART_Direction_Type direct); +BL_Err_Type UART_SetTxDataLength(UART_ID_Type uartId,uint16_t length); +BL_Err_Type UART_SetRxDataLength(UART_ID_Type uartId,uint16_t length); +BL_Err_Type UART_SetRxTimeoutValue(UART_ID_Type uartId,uint8_t time); +BL_Err_Type UART_SetDeglitchCount(UART_ID_Type uartId,uint8_t deglitchCnt); +BL_Err_Type UART_SetBaudrate(UART_ID_Type uartId,UART_AutoBaudDetection_Type autoBaudDet); +BL_Err_Type UART_SetRtsValue(UART_ID_Type uartId); +BL_Err_Type UART_ClrRtsValue(UART_ID_Type uartId); +BL_Err_Type UART_SetTxValue(UART_ID_Type uartId); +BL_Err_Type UART_ClrTxValue(UART_ID_Type uartId); +BL_Err_Type UART_TxFreeRun(UART_ID_Type uartId,BL_Fun_Type txFreeRun); +BL_Err_Type UART_AutoBaudDetection(UART_ID_Type uartId,BL_Fun_Type autoBaud); +BL_Err_Type UART_TxFifoClear(UART_ID_Type uartId); +BL_Err_Type UART_RxFifoClear(UART_ID_Type uartId); +BL_Err_Type UART_IntMask(UART_ID_Type uartId,UART_INT_Type intType,BL_Mask_Type intMask); +BL_Err_Type UART_IntClear(UART_ID_Type uartId,UART_INT_Type intType); +BL_Err_Type UART_Int_Callback_Install(UART_ID_Type uartId,UART_INT_Type intType,intCallback_Type* cbFun); +BL_Err_Type UART_SendData(UART_ID_Type uartId,uint8_t* data,uint32_t len); +BL_Err_Type UART_SendDataBlock(UART_ID_Type uartId,uint8_t* data,uint32_t len); +uint32_t UART_ReceiveData(UART_ID_Type uartId,uint8_t* data,uint32_t maxLen); +uint16_t UART_GetAutoBaudCount(UART_ID_Type uartId,UART_AutoBaudDetection_Type autoBaudDet); +uint8_t UART_GetTxFifoCount(UART_ID_Type uartId); +uint8_t UART_GetRxFifoCount(UART_ID_Type uartId); +BL_Sts_Type UART_GetIntStatus(UART_ID_Type uartId,UART_INT_Type intType); +BL_Sts_Type UART_GetTxBusBusyStatus(UART_ID_Type uartId); +BL_Sts_Type UART_GetRxBusBusyStatus(UART_ID_Type uartId); +BL_Sts_Type UART_GetOverflowStatus(UART_ID_Type uartId,UART_Overflow_Type overflow); + +/*@} end of group UART_Public_Functions */ + +/*@} end of group UART */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_UART_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_usb.h b/drivers/bl702_driver/std_drv/inc/bl702_usb.h new file mode 100644 index 00000000..255d596c --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_usb.h @@ -0,0 +1,429 @@ +/** + ****************************************************************************** + * @file bl702_usb.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2019 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_USB_H__ +#define __BL702_USB_H__ + +#include "usb_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup USB + * @{ + */ + +/** @defgroup USB_Public_Types + * @{ + */ + +/** + * @brief USB end point ID + */ +typedef enum { + EP_ID0=0, /*!< USB end point 0 */ + EP_ID1, /*!< USB end point 1 */ + EP_ID2, /*!< USB end point 2 */ + EP_ID3, /*!< USB end point 3 */ + EP_ID4, /*!< USB end point 4 */ + EP_ID5, /*!< USB end point 5 */ + EP_ID6, /*!< USB end point 6 */ + EP_ID7, /*!< USB end point 7 */ +}USB_EP_ID; + +/** + * @brief USB end point type + */ +typedef enum { + EP_INT=0, /*!< interrupt transfer ep */ + EP_ISO=2, /*!< isochronous transfer ep */ + EP_BULK=4, /*!< bulk transfer ep */ + EP_CTRL=5, /*!< control transfer ep */ +}EP_XFER_Type; + +/** + * @brief USB end point transfer directions + */ +typedef enum { + EP_DISABLED=0, /*!< end point disabled */ + EP_IN=1, /*!< IN end point,device to host */ + EP_OUT=2, /*!< OUT end point ,host to device */ +}EP_XFER_DIR; + + +typedef enum { + USB_INT_SOF=0, + USB_INT_RESET, + USB_INT_VBUS_TGL, + USB_INT_GET_DCT_CMD, + USB_INT_EP0_SETUP_CMD, + USB_INT_EP0_SETUP_DONE, + USB_INT_EP0_IN_CMD, + USB_INT_EP0_IN_DONE, + USB_INT_EP0_OUT_CMD, + USB_INT_EP0_OUT_DONE, + USB_INT_EP1_CMD, + USB_INT_EP1_DONE, + USB_INT_EP2_CMD, + USB_INT_EP2_DONE, + USB_INT_EP3_CMD, + USB_INT_EP3_DONE, + USB_INT_EP4_CMD, + USB_INT_EP4_DONE, + USB_INT_EP5_CMD, + USB_INT_EP5_DONE, + USB_INT_EP6_CMD, + USB_INT_EP6_DONE, + USB_INT_EP7_CMD, + USB_INT_EP7_DONE, + USB_INT_RESET_END=27, + USB_INT_LPM_WAKEUP=28, + USB_INT_LPM_PACKET=29, + USB_INT_LOST_SOF_3_TIMES=30, + USB_INT_ERROR=31, + USB_INT_ALL=32, /* special */ +}USB_INT_Type; + + +typedef enum { + USB_FIFO_EMPTY=0, + USB_FIFO_FULL, +}USB_FIFO_STATUS_Type; + + +typedef enum { + USB_FIFO_ERROR_OVERFLOW=0, + USB_FIFO_ERROR_UNDERFLOW, +}USB_FIFO_ERROR_FLAG_Type; + + +typedef enum { + USB_EP_STATUS_ACK=0, + USB_EP_STATUS_NACK, + USB_EP_STATUS_STALL, + USB_EP_STATUS_NSTALL, +}USB_EP_STATUS_Type; + + +typedef enum { + USB_LPM_DEFAULT_RESP_ACK=0, + USB_LPM_DEFAULT_RESP_NACK, + USB_LPM_DEFAULT_RESP_STALL, + USB_LPM_DEFAULT_RESP_NYET, +}USB_LPM_DEFAULT_RESP_Type; + + +typedef enum { + USB_ERROR_UTMI_RX=0, + USB_ERROR_XFER_TO, + USB_ERROR_IVLD_EP, + USB_ERROR_PID_SEQ, + USB_ERROR_PID_CKS, + USB_ERROR_CRC5, + USB_ERROR_CRC16, +}USB_ERROR_Type; + + + +/** + * @brief USB configuration structure type definition + */ +typedef struct { + BL_Fun_Type EnumOutEn; /*!< EP0 IN direction enable or disable */ + BL_Fun_Type EnumInEn; /*!< EP0 OUT direction enable or disable */ + uint8_t EnumMaxPacketSize; /*!< EP0 max packet size, only valid when SoftwareCtrl is set */ + uint8_t DeviceAddress; /*!< Device(EP0) address, only valid when SoftwareCtrl is set */ + BL_Fun_Type SoftwareCtrl; /*!< EP0 software control enable */ + BL_Fun_Type RomBaseDescriptorUsed; /*!< Enable signal of ROM-based descriptors (don't care if SoftwareCtrl is set) */ +}USB_Config_Type; + +/** + * @brief end point configuration structure type definition + */ +typedef struct { + uint16_t EPMaxPacketSize; /*!< Endpoint max packet size */ + EP_XFER_DIR dir; /*!< Endpoint direction */ + EP_XFER_Type type; /*!< Endpoint type */ +}EP_Config_Type; + + +typedef struct { + uint32_t cr_ep_size : 9; + uint32_t cr_ep_dir : 2; + uint32_t cr_ep_type : 3; + uint32_t cr_ep_stall : 1; + uint32_t cr_ep_nack : 1; + uint32_t cr_ep_rdy : 1; + uint32_t reserved_17_31 : 15; +}usb_reg_epx_config_t; + +typedef struct { + uint32_t ep_dma_tx_en : 1; + uint32_t ep_dma_rx_en : 1; + uint32_t ep_tx_fifo_clr : 1; + uint32_t ep_rx_fifo_clr : 1; + uint32_t ep_tx_fifo_overflow : 1; + uint32_t ep_tx_fifo_underflow : 1; + uint32_t ep_rx_fifo_overflow : 1; + uint32_t ep_rx_fifo_underflow : 1; + uint32_t reserved_8_31 : 24; +}usb_reg_epx_fifo_config_t; + +typedef struct { + uint32_t ep_tx_fifo_cnt : 7; + uint32_t reserved_7_13 : 7; + uint32_t ep_tx_fifo_empty : 1; + uint32_t ep_tx_fifo_full : 1; + uint32_t ep_rx_fifo_cnt : 7; + uint32_t reserved_23_29 : 7; + uint32_t ep_rx_fifo_empty : 1; + uint32_t ep_rx_fifo_full : 1; +}usb_reg_epx_fifo_status_t; + +typedef struct { + uint32_t fifo : 8; + uint32_t reserved_8_31 : 24; +}usb_reg_epx_fifo_t; + + +/*@} end of group USB_Public_Types */ + +/** @defgroup USB_Public_Constants + * @{ + */ + +/** @defgroup USB_EP_ID + * @{ + */ +#define IS_USB_EP_ID(type) (((type) == EP_ID0) || \ + ((type) == EP_ID1) || \ + ((type) == EP_ID2) || \ + ((type) == EP_ID3) || \ + ((type) == EP_ID4) || \ + ((type) == EP_ID5) || \ + ((type) == EP_ID6) || \ + ((type) == EP_ID7)) + +/** @defgroup EP_XFER_TYPE + * @{ + */ +#define IS_EP_XFER_TYPE(type) (((type) == EP_INT) || \ + ((type) == EP_ISO) || \ + ((type) == EP_CTRL) || \ + ((type) == EP_BULK)) + +/** @defgroup EP_XFER_DIR + * @{ + */ +#define IS_EP_XFER_DIR(type) (((type) == EP_DISABLED) || \ + ((type) == EP_IN) || \ + ((type) == EP_OUT)) + +/*@} end of group USB_Public_Constants */ + +/** @defgroup USB_Public_Macros + * @{ + */ +#define USB_INT_TYPE_SOF 0x00000001 +#define USB_INT_TYPE_RESET 0x00000002 +#define USB_INT_TYPE_GET_DCT_CMD 0x00000008 +#define USB_INT_TYPE_EP0_SETUP_CMD 0x00000010 +#define USB_INT_TYPE_EP0_SETUP_DONE 0x00000020 +#define USB_INT_TYPE_EP0_IN_CMD 0x00000040 +#define USB_INT_TYPE_EP0_IN_DONE 0x00000080 +#define USB_INT_TYPE_EP0_OUT_CMD 0x00000100 +#define USB_INT_TYPE_EP0_OUT_DONE 0x00000200 +#define USB_INT_TYPE_EP1_CMD 0x00000400 +#define USB_INT_TYPE_EP1_DONE 0x00000800 +#define USB_INT_TYPE_EP2_CMD 0x00001000 +#define USB_INT_TYPE_EP2_DONE 0x00002000 +#define USB_INT_TYPE_EP3_CMD 0x00004000 +#define USB_INT_TYPE_EP3_DONE 0x00008000 +#define USB_INT_TYPE_EP4_CMD 0x00010000 +#define USB_INT_TYPE_EP4_DONE 0x00020000 +#define USB_INT_TYPE_EP5_CMD 0x00040000 +#define USB_INT_TYPE_EP5_DONE 0x00080000 +#define USB_INT_TYPE_EP6_CMD 0x00100000 +#define USB_INT_TYPE_EP6_DONE 0x00200000 +#define USB_INT_TYPE_EP7_CMD 0x00400000 +#define USB_INT_TYPE_EP7_DONE 0x00800000 +#define USB_INT_TYPE_RESET_END 0x08000000 +#define USB_INT_TYPE_LPM_WAKEUP 0x10000000 +#define USB_INT_TYPE_LPM_PACKET 0x20000000 +#define USB_INT_TYPE_LOST_SOF_3_TIMES 0x40000000 +#define USB_INT_TYPE_ERROR 0x80000000 +#define USB_INT_TYPE_ALL (USB_INT_TYPE_SOF | \ + USB_INT_TYPE_RESET | \ + USB_INT_TYPE_GET_DCT_CMD | \ + USB_INT_TYPE_EP0_SETUP_CMD | \ + USB_INT_TYPE_EP0_SETUP_DONE | \ + USB_INT_TYPE_EP0_IN_CMD | \ + USB_INT_TYPE_EP0_IN_DONE | \ + USB_INT_TYPE_EP0_OUT_CMD | \ + USB_INT_TYPE_EP0_OUT_DONE | \ + USB_INT_TYPE_EP1_CMD | \ + USB_INT_TYPE_EP1_DONE | \ + USB_INT_TYPE_EP2_CMD | \ + USB_INT_TYPE_EP2_DONE | \ + USB_INT_TYPE_EP3_CMD | \ + USB_INT_TYPE_EP3_DONE | \ + USB_INT_TYPE_EP4_CMD | \ + USB_INT_TYPE_EP4_DONE | \ + USB_INT_TYPE_EP5_CMD | \ + USB_INT_TYPE_EP5_DONE | \ + USB_INT_TYPE_EP6_CMD | \ + USB_INT_TYPE_EP6_DONE | \ + USB_INT_TYPE_EP7_CMD | \ + USB_INT_TYPE_EP7_DONE | \ + USB_INT_TYPE_RESET_END | \ + USB_INT_TYPE_LPM_WAKEUP | \ + USB_INT_TYPE_LPM_PACKET | \ + USB_INT_TYPE_LOST_SOF_3_TIMES| \ + USB_INT_TYPE_ERROR ) + +#define USB_EP_TX_FIFO_EMPTY 0x00004000 +#define USB_EP_TX_FIFO_FULL 0x00008000 +#define USB_EP_RX_FIFO_EMPTY 0x40000000 +#define USB_EP_RX_FIFO_FULL 0x80000000 +#define USB_EP_FIFO_STATUS_MASK (USB_EP_TX_FIFO_EMPTY | \ + USB_EP_TX_FIFO_FULL | \ + USB_EP_RX_FIFO_EMPTY | \ + USB_EP_RX_FIFO_FULL) +#define USB_EP_TX_FIFO_OVERFLOW 0x00000010 +#define USB_EP_TX_FIFO_UNDERFLOW 0x00000020 +#define USB_EP_RX_FIFO_OVERFLOW 0x00000040 +#define USB_EP_RX_FIFO_UNDERLOW 0x00000080 +#define USB_EP_FIFO_ERROR_MASK (USB_EP_TX_FIFO_OVERFLOW | \ + USB_EP_TX_FIFO_UNDERFLOW | \ + USB_EP_RX_FIFO_OVERFLOW | \ + USB_EP_RX_FIFO_UNDERLOW) + +#define EP_ID_MAX 8 + + +/*@} end of group USB_Public_Macros */ + +/** @defgroup USB_Public_Functions + * @{ + */ + +/** + * @brief USB Functions + */ + +/*----------*/ +#ifndef BFLB_USE_HAL_DRIVER +void USB_IRQHandler(void); +#endif +/*----------*/ +BL_Err_Type USB_Enable(void); +BL_Err_Type USB_Disable(void); +BL_Err_Type USB_Set_Config(BL_Fun_Type enable,USB_Config_Type * usbCfg); +BL_Err_Type USB_Set_Device_Addr(uint8_t addr); +uint8_t USB_Get_Device_Addr(void); +/*----------*/ +BL_Err_Type USB_Set_EPx_Xfer_Size(USB_EP_ID epId,uint8_t size); +BL_Err_Type USB_Set_EPx_IN_Busy(USB_EP_ID epId); +BL_Err_Type USB_Set_EPx_IN_Stall(USB_EP_ID epId); +BL_Err_Type USB_Set_EPx_OUT_Busy(USB_EP_ID epId); +BL_Err_Type USB_Set_EPx_OUT_Stall(USB_EP_ID epId); +BL_Err_Type USB_Set_EPx_Rdy(USB_EP_ID epId); +BL_Sts_Type USB_Is_EPx_RDY_Free(USB_EP_ID epId); +BL_Err_Type USB_Set_EPx_STALL(USB_EP_ID epId); +BL_Err_Type USB_Clr_EPx_STALL(USB_EP_ID epId); +BL_Err_Type USB_Set_EPx_Busy(USB_EP_ID epId); +BL_Err_Type USB_Set_EPx_Status(USB_EP_ID epId,USB_EP_STATUS_Type sts); +USB_EP_STATUS_Type USB_Get_EPx_Status(USB_EP_ID epId); +/*----------*/ +BL_Err_Type USB_IntEn(USB_INT_Type intType,uint8_t enable); +BL_Err_Type USB_IntMask(USB_INT_Type intType,BL_Mask_Type intMask); +BL_Sts_Type USB_Get_IntStatus(USB_INT_Type intType); +BL_Err_Type USB_Clr_IntStatus(USB_INT_Type intType); +BL_Err_Type USB_Clr_EPx_IntStatus(USB_EP_ID epId); +/*----------*/ +uint16_t USB_Get_Frame_Num(void); +/*----------*/ +BL_Err_Type USB_Set_EPx_Config(USB_EP_ID epId,EP_Config_Type * epCfg); +BL_Err_Type USB_Set_EPx_Type(USB_EP_ID epId,EP_XFER_Type type); +EP_XFER_Type USB_Get_EPx_Type(USB_EP_ID epId); +BL_Err_Type USB_Set_EPx_Dir(USB_EP_ID epId,EP_XFER_DIR dir); +EP_XFER_DIR USB_Get_EPx_Dir(USB_EP_ID epId); +BL_Err_Type USB_Set_EPx_Size(USB_EP_ID epId,uint32_t size); +/*----------*/ +BL_Sts_Type USB_Get_EPx_TX_FIFO_Errors(USB_EP_ID epId,USB_FIFO_ERROR_FLAG_Type errFlag); +BL_Sts_Type USB_Get_EPx_RX_FIFO_Errors(USB_EP_ID epId,USB_FIFO_ERROR_FLAG_Type errFlag); +BL_Err_Type USB_Clr_EPx_TX_FIFO_Errors(USB_EP_ID epId); +BL_Err_Type USB_Clr_EPx_RX_FIFO_Errors(USB_EP_ID epId); +/*----------*/ +BL_Err_Type USB_EPx_Write_Data_To_FIFO(USB_EP_ID epId,uint8_t *pData,uint16_t len); +BL_Err_Type USB_EPx_Read_Data_From_FIFO(USB_EP_ID epId,uint8_t *pBuff,uint16_t len); +/*----------*/ +BL_Err_Type USB_Set_EPx_TX_DMA_Interface_Config(USB_EP_ID epId,BL_Fun_Type newState); +BL_Err_Type USB_Set_EPx_RX_DMA_Interface_Config(USB_EP_ID epId,BL_Fun_Type newState); +BL_Err_Type USB_EPx_Write_Data_To_FIFO_DMA(USB_EP_ID epId,uint8_t *pData,uint16_t len); +BL_Err_Type USB_EPx_Read_Data_From_FIFO_DMA(USB_EP_ID epId,uint8_t *pBuff,uint16_t len); +/*----------*/ +uint16_t USB_Get_EPx_TX_FIFO_CNT(USB_EP_ID epId); +uint16_t USB_Get_EPx_RX_FIFO_CNT(USB_EP_ID epId); +BL_Sts_Type USB_Get_EPx_TX_FIFO_Status(USB_EP_ID epId ,USB_FIFO_STATUS_Type sts); +BL_Sts_Type USB_Get_EPx_RX_FIFO_Status(USB_EP_ID epId, USB_FIFO_STATUS_Type sts); +/*----------*/ +BL_Err_Type USB_Set_Internal_PullUp_Config(BL_Fun_Type newState); +/*----------*/ +BL_Sts_Type USB_Get_LPM_Status(void); +uint16_t USB_Get_LPM_Packet_Attr(void); +BL_Err_Type USB_Set_LPM_Default_Response(USB_LPM_DEFAULT_RESP_Type defaultResp); +BL_Err_Type USB_LPM_Enable(void); +BL_Err_Type USB_LPM_Disable(void); +/*----------*/ +BL_Err_Type USB_Device_Output_K_State(uint16_t stateWidth); +/*----------*/ +uint8_t USB_Get_Current_Packet_PID(void); +uint8_t USB_Get_Current_Packet_EP(void); +/*----------*/ +BL_Sts_Type USB_Get_Error_Status(USB_ERROR_Type err); +BL_Err_Type USB_Clr_Error_Status(USB_ERROR_Type err); +/*----------*/ + + +/*@} end of group USB_Public_Functions */ + +/*@} end of group USB */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_USB_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_xip_sflash.h b/drivers/bl702_driver/std_drv/inc/bl702_xip_sflash.h new file mode 100644 index 00000000..11e39669 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_xip_sflash.h @@ -0,0 +1,99 @@ +/** + ****************************************************************************** + * @file bl702_xip_sflash.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_XIP_SFLASH_H__ +#define __BL702_XIP_SFLASH_H__ + +#include "bl702_common.h" +#include "bl702_sflash.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup XIP_SFLASH + * @{ + */ + +/** @defgroup XIP_SFLASH_Public_Types + * @{ + */ + +/*@} end of group XIP_SFLASH_Public_Types */ + +/** @defgroup XIP_SFLASH_Public_Constants + * @{ + */ + +/*@} end of group XIP_SFLASH_Public_Constants */ + +/** @defgroup XIP_SFLASH_Public_Macros + * @{ + */ + +/*@} end of group XIP_SFLASH_Public_Macros */ + +/** @defgroup XIP_SFLASH_Public_Functions + * @{ + */ +void XIP_SFlash_Opt_Enter(void); +void XIP_SFlash_Opt_Exit(void); +BL_Err_Type XIP_SFlash_State_Save(SPI_Flash_Cfg_Type *pFlashCfg,uint32_t *offset); +BL_Err_Type XIP_SFlash_State_Restore(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t offset); +BL_Err_Type XIP_SFlash_Erase_Need_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode, + uint32_t startaddr,uint32_t endaddr); +BL_Err_Type XIP_SFlash_Write_Need_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr, + uint8_t *data,uint32_t len); +BL_Err_Type XIP_SFlash_Read_Need_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr, + uint8_t *data,uint32_t len); +BL_Err_Type XIP_SFlash_GetJedecId_Need_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode, + uint8_t *data); +BL_Err_Type XIP_SFlash_GetDeviceId_Need_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode, + uint8_t *data); +BL_Err_Type XIP_SFlash_GetUniqueId_Need_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode, + uint8_t *data,uint8_t idLen); +BL_Err_Type XIP_SFlash_Read_Via_Cache_Need_Lock(uint32_t addr,uint8_t *data,uint32_t len); +int XIP_SFlash_Read_With_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr,uint8_t *dst,int len); +int XIP_SFlash_Write_With_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr,uint8_t *src, + int len); +int XIP_SFlash_Erase_With_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr,int len); + +/*@} end of group XIP_SFLASH_Public_Functions */ + +/*@} end of group XIP_SFLASH */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_XIP_SFLASH_H__ */ diff --git a/drivers/bl702_driver/std_drv/inc/bl702_xip_sflash_ext.h b/drivers/bl702_driver/std_drv/inc/bl702_xip_sflash_ext.h new file mode 100644 index 00000000..d884bd03 --- /dev/null +++ b/drivers/bl702_driver/std_drv/inc/bl702_xip_sflash_ext.h @@ -0,0 +1,86 @@ +/** + ****************************************************************************** + * @file bl702_xip_sflash_ext.h + * @version V1.0 + * @date + * @brief This file is the standard driver header file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#ifndef __BL702_XIP_SFLASH_EXT_H__ +#define __BL702_XIP_SFLASH_EXT_H__ + +#include "bl702_common.h" +#include "bl702_sflash.h" +#include "bl702_xip_sflash.h" +#include "bl702_sf_cfg.h" +#include "bl702_sf_cfg_ext.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup XIP_SFLASH + * @{ + */ + +/** @defgroup XIP_SFLASH_EXT_Public_Types + * @{ + */ + +/*@} end of group XIP_SFLASH_EXT_Public_Types */ + +/** @defgroup XIP_SFLASH_EXT_Public_Constants + * @{ + */ + +/*@} end of group XIP_SFLASH_EXT_Public_Constants */ + +/** @defgroup XIP_SFLASH_EXT_Public_Macros + * @{ + */ + +/*@} end of group XIP_SFLASH_EXT_Public_Macros */ + +/** @defgroup XIP_SFLASH_EXT_Public_Functions + * @{ + */ + +BL_Err_Type XIP_SFlash_Init(SPI_Flash_Cfg_Type *pFlashCfg); +int XIP_SFlash_Read(uint32_t addr, uint8_t *dst, int len); +int XIP_SFlash_Write(uint32_t addr, uint8_t *src, int len); +int XIP_SFlash_Erase(uint32_t addr, int len); + +/*@} end of group XIP_SFLASH_EXT_Public_Functions */ + +/*@} end of group XIP_SFLASH */ + +/*@} end of group BL702_Peripheral_Driver */ + +#endif /* __BL702_XIP_SFLASH_EXT_H__ */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_acomp.c b/drivers/bl702_driver/std_drv/src/bl702_acomp.c new file mode 100644 index 00000000..78c7c171 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_acomp.c @@ -0,0 +1,201 @@ +/** + ****************************************************************************** + * @file bl702_acomp.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_acomp.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup ACOMP + * @{ + */ + +/** @defgroup ACOMP_Private_Macros + * @{ + */ + +/*@} end of group ACOMP_Private_Macros */ + +/** @defgroup ACOMP_Private_Types + * @{ + */ + +/*@} end of group ACOMP_Private_Types */ + +/** @defgroup ACOMP_Private_Variables + * @{ + */ + +/*@} end of group ACOMP_Private_Variables */ + +/** @defgroup ACOMP_Global_Variables + * @{ + */ + +/*@} end of group ACOMP_Global_Variables */ + +/** @defgroup ACOMP_Private_Fun_Declaration + * @{ + */ + +/*@} end of group ACOMP_Private_Fun_Declaration */ + +/** @defgroup ACOMP_Private_Functions + * @{ + */ + +/*@} end of group ACOMP_Private_Functions */ + +/** @defgroup ACOMP_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Analog compare init + * + * @param acompNo: Compare ID + * @param cfg: Compare consideration pointer + * + * @return None + * +*******************************************************************************/ +void AON_ACOMP_Init(AON_ACOMP_ID_Type acompNo,AON_ACOMP_CFG_Type *cfg) +{ + uint32_t tmpVal = 0; + + /* Check the parameters */ + CHECK_PARAM(IS_AON_ACOMP_ID_TYPE(acompNo)); + + if(acompNo==AON_ACOMP0_ID){ + /* Disable ACOMP first */ + tmpVal=BL_RD_REG(AON_BASE,AON_ACOMP0_CTRL); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_ACOMP0_EN); + tmpVal=BL_WR_REG(AON_BASE,AON_ACOMP0_CTRL,tmpVal); + + /* Set ACOMP config */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP0_MUXEN,cfg->muxEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP0_POS_SEL,cfg->posChanSel); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP0_NEG_SEL,cfg->negChanSel); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP0_LEVEL_SEL,cfg->levelFactor); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP0_BIAS_PROG,cfg->biasProg); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP0_HYST_SELP,cfg->hysteresisPosVolt); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP0_HYST_SELN,cfg->hysteresisNegVolt); + + tmpVal=BL_WR_REG(AON_BASE,AON_ACOMP0_CTRL,tmpVal); + + }else{ + /* Disable ACOMP first */ + tmpVal=BL_RD_REG(AON_BASE,AON_ACOMP1_CTRL); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_ACOMP1_EN); + tmpVal=BL_WR_REG(AON_BASE,AON_ACOMP1_CTRL,tmpVal); + + /* Set ACOMP config */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP1_MUXEN,cfg->muxEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP1_POS_SEL,cfg->posChanSel); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP1_NEG_SEL,cfg->negChanSel); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP1_LEVEL_SEL,cfg->levelFactor); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP1_BIAS_PROG,cfg->biasProg); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP1_HYST_SELP,cfg->hysteresisPosVolt); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_ACOMP1_HYST_SELN,cfg->hysteresisNegVolt); + + tmpVal=BL_WR_REG(AON_BASE,AON_ACOMP1_CTRL,tmpVal); + } +} + +/****************************************************************************//** + * @brief Analog compare enable + * + * @param acompNo: Compare ID + * + * @return None + * +*******************************************************************************/ +void AON_ACOMP_Enable(AON_ACOMP_ID_Type acompNo) +{ + uint32_t tmpVal = 0; + + /* Check the parameters */ + CHECK_PARAM(IS_AON_ACOMP_ID_TYPE(acompNo)); + + if(acompNo==AON_ACOMP0_ID){ + tmpVal=BL_RD_REG(AON_BASE,AON_ACOMP0_CTRL); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_ACOMP0_EN); + tmpVal=BL_WR_REG(AON_BASE,AON_ACOMP0_CTRL,tmpVal); + }else{ + tmpVal=BL_RD_REG(AON_BASE,AON_ACOMP1_CTRL); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_ACOMP1_EN); + tmpVal=BL_WR_REG(AON_BASE,AON_ACOMP1_CTRL,tmpVal); + } +} + +/****************************************************************************//** + * @brief Analog compare enable + * + * @param acompNo: Compare ID + * + * @return SET or RESET + * +*******************************************************************************/ +BL_Sts_Type AON_ACOMP_Get_Result(AON_ACOMP_ID_Type acompNo) +{ + uint32_t tmpVal = 0; + + /* Check the parameters */ + CHECK_PARAM(IS_AON_ACOMP_ID_TYPE(acompNo)); + + tmpVal=BL_RD_REG(AON_BASE,AON_ACOMP_CTRL); + /* Disable ACOMP first */ + if(acompNo==AON_ACOMP0_ID){ + if(BL_IS_REG_BIT_SET(tmpVal,AON_ACOMP0_OUT_RAW)){ + return SET; + }else{ + return RESET; + } + }else{ + if(BL_IS_REG_BIT_SET(tmpVal,AON_ACOMP1_OUT_RAW)){ + return SET; + }else{ + return RESET; + } + } +} + +/*@} end of group ACOMP_Public_Functions */ + +/*@} end of group ACOMP */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_adc.c b/drivers/bl702_driver/std_drv/src/bl702_adc.c new file mode 100644 index 00000000..5f673f9c --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_adc.c @@ -0,0 +1,1400 @@ +/** + ****************************************************************************** + * @file bl702_adc.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_adc.h" +#include "bl702_ef_ctrl.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup ADC + * @{ + */ + +/** @defgroup ADC_Private_Macros + * @{ + */ +#undef MSG +#define MSG(...) +#define AON_CLK_SET_DUMMY_WAIT {__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();} +#define ADC_RESTART_DUMMY_WAIT BL702_Delay_US(100) + +/*@} end of group ADC_Private_Macros */ + +/** @defgroup ADC_Private_Types + * @{ + */ + +/*@} end of group ADC_Private_Types */ + +/** @defgroup ADC_Private_Variables + * @{ + */ +static intCallback_Type * adcIntCbfArra[ADC_INT_ALL]={NULL}; +static ADC_Gain_Coeff_Type adcGainCoeffCal = { + .adcGainCoeffEnable = DISABLE, + .adcgainCoeffVal = 0, + .coe=1, +}; + +/*@} end of group ADC_Private_Variables */ + +/** @defgroup ADC_Global_Variables + * @{ + */ + +/*@} end of group ADC_Global_Variables */ + +/** @defgroup ADC_Private_Fun_Declaration + * @{ + */ + +/*@} end of group ADC_Private_Fun_Declaration */ + +/** @defgroup ADC_Private_Functions + * @{ + */ + +/*@} end of group ADC_Private_Functions */ + +/** @defgroup ADC_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Software reset the whole ADC + * + * @param None + * + * @return None + * +*******************************************************************************/ +void ADC_Reset(void) +{ + uint32_t regCmd; + + /* reset ADC */ + regCmd=BL_RD_REG(AON_BASE,AON_GPADC_REG_CMD); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CMD,BL_SET_REG_BIT(regCmd,AON_GPADC_SOFT_RST)); + AON_CLK_SET_DUMMY_WAIT; + BL_WR_REG(AON_BASE,AON_GPADC_REG_CMD,BL_CLR_REG_BIT(regCmd,AON_GPADC_SOFT_RST)); +} + +/****************************************************************************//** + * @brief ADC glable enable + * + * @param None + * + * @return None + * +*******************************************************************************/ +void ADC_Enable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_CMD); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_GPADC_GLOBAL_EN); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CMD,tmpVal); +} + +/****************************************************************************//** + * @brief ADC glable disable + * + * @param None + * + * @return None + * +*******************************************************************************/ +void ADC_Disable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_CMD); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_GLOBAL_EN); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CMD,tmpVal); +} + + +/****************************************************************************//** + * @brief ADC normal mode init + * + * @param cfg: ADC normal mode configuration + * + * @return None + * +*******************************************************************************/ +void ADC_Init(ADC_CFG_Type* cfg) +{ + uint32_t regCfg1; + uint32_t regCfg2; + uint32_t regCalib; + + CHECK_PARAM(IS_ADC_V18_SEL_TYPE(cfg->v18Sel)); + CHECK_PARAM(IS_ADC_V11_SEL_TYPE(cfg->v11Sel)); + CHECK_PARAM(IS_ADC_CLK_TYPE(cfg->clkDiv)); + CHECK_PARAM(IS_ADC_PGA_GAIN_TYPE(cfg->gain1)); + CHECK_PARAM(IS_ADC_PGA_GAIN_TYPE(cfg->gain2)); + CHECK_PARAM(IS_ADC_CHOP_MOD_TYPE(cfg->chopMode)); + CHECK_PARAM(IS_ADC_BIAS_SEL_TYPE(cfg->biasSel)); + CHECK_PARAM(IS_ADC_PGA_VCM_TYPE(cfg->vcm)); + CHECK_PARAM(IS_ADC_VREF_TYPE(cfg->vref)); + CHECK_PARAM(IS_ADC_SIG_INPUT_TYPE(cfg->inputMode)); + CHECK_PARAM(IS_ADC_DATA_WIDTH_TYPE(cfg->resWidth)); + + /* config 1 */ + regCfg1=BL_RD_REG(AON_BASE,AON_GPADC_REG_CONFIG1); + regCfg1=BL_SET_REG_BITS_VAL(regCfg1,AON_GPADC_V18_SEL,cfg->v18Sel); + regCfg1=BL_SET_REG_BITS_VAL(regCfg1,AON_GPADC_V11_SEL,cfg->v11Sel); + regCfg1=BL_CLR_REG_BIT(regCfg1,AON_GPADC_DITHER_EN); + regCfg1=BL_CLR_REG_BIT(regCfg1,AON_GPADC_SCAN_EN); + regCfg1=BL_SET_REG_BITS_VAL(regCfg1,AON_GPADC_SCAN_LENGTH,0); + regCfg1=BL_SET_REG_BITS_VAL(regCfg1,AON_GPADC_CLK_DIV_RATIO,cfg->clkDiv); + regCfg1=BL_CLR_REG_BIT(regCfg1,AON_GPADC_CLK_ANA_INV); + regCfg1=BL_SET_REG_BITS_VAL(regCfg1,AON_GPADC_CAL_OS_EN,cfg->offsetCalibEn); + regCfg1=BL_SET_REG_BITS_VAL(regCfg1,AON_GPADC_RES_SEL,cfg->resWidth); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CONFIG1,regCfg1); + AON_CLK_SET_DUMMY_WAIT; + + /* config 2 */ + regCfg2=BL_RD_REG(AON_BASE,AON_GPADC_REG_CONFIG2); + regCfg2=BL_SET_REG_BITS_VAL(regCfg2,AON_GPADC_DLY_SEL,0x02); + regCfg2=BL_SET_REG_BITS_VAL(regCfg2,AON_GPADC_PGA1_GAIN,cfg->gain1); + regCfg2=BL_SET_REG_BITS_VAL(regCfg2,AON_GPADC_PGA2_GAIN,cfg->gain2); + regCfg2=BL_SET_REG_BITS_VAL(regCfg2,AON_GPADC_BIAS_SEL,cfg->biasSel); + regCfg2=BL_SET_REG_BITS_VAL(regCfg2,AON_GPADC_CHOP_MODE,cfg->chopMode); + /* pga_vcmi_en is for mic */ + regCfg2=BL_CLR_REG_BIT(regCfg2,AON_GPADC_PGA_VCMI_EN); + if((cfg->gain1!=ADC_PGA_GAIN_NONE)||(cfg->gain2!=ADC_PGA_GAIN_NONE)){ + regCfg2=BL_SET_REG_BIT(regCfg2,AON_GPADC_PGA_EN); + }else{ + regCfg2=BL_CLR_REG_BIT(regCfg2,AON_GPADC_PGA_EN); + } + /* pga_os_cal is for mic */ + regCfg2=BL_SET_REG_BITS_VAL(regCfg2,AON_GPADC_PGA_OS_CAL,8); + regCfg2=BL_SET_REG_BITS_VAL(regCfg2,AON_GPADC_PGA_VCM,cfg->vcm); + regCfg2=BL_SET_REG_BITS_VAL(regCfg2,AON_GPADC_VREF_SEL,cfg->vref); + regCfg2=BL_SET_REG_BITS_VAL(regCfg2,AON_GPADC_DIFF_MODE,cfg->inputMode); + + BL_WR_REG(AON_BASE,AON_GPADC_REG_CONFIG2,regCfg2); + + /* calibration offset */ + regCalib=BL_RD_REG(AON_BASE,AON_GPADC_REG_DEFINE); + regCalib=BL_SET_REG_BITS_VAL(regCalib,AON_GPADC_OS_CAL_DATA,cfg->offsetCalibVal); + BL_WR_REG(AON_BASE,AON_GPADC_REG_DEFINE,regCalib); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(GPADC_DMA_IRQn,GPADC_DMA_IRQHandler); +#endif + + ADC_Gain_Trim(); +} + +/****************************************************************************//** + * @brief ADC normal mode channel config + * + * @param posCh: ADC pos channel type + * @param negCh: ADC neg channel type + * @param contEn: ENABLE or DISABLE continuous mode + * + * @return None + * +*******************************************************************************/ +void ADC_Channel_Config(ADC_Chan_Type posCh,ADC_Chan_Type negCh,BL_Fun_Type contEn) +{ + uint32_t regCmd; + uint32_t regCfg1; + + CHECK_PARAM(IS_AON_ADC_CHAN_TYPE(posCh)); + CHECK_PARAM(IS_AON_ADC_CHAN_TYPE(negCh)); + + /* set channel */ + regCmd=BL_RD_REG(AON_BASE,AON_GPADC_REG_CMD); + regCmd=BL_SET_REG_BITS_VAL(regCmd,AON_GPADC_POS_SEL,posCh); + regCmd=BL_SET_REG_BITS_VAL(regCmd,AON_GPADC_NEG_SEL,negCh); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CMD,regCmd); + + /* set continuous mode */ + regCfg1=BL_RD_REG(AON_BASE,AON_GPADC_REG_CONFIG1); + regCfg1=BL_SET_REG_BITS_VAL(regCfg1,AON_GPADC_CONT_CONV_EN,contEn); + regCfg1=BL_CLR_REG_BIT(regCfg1,AON_GPADC_SCAN_EN); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CONFIG1,regCfg1); + +} + +/****************************************************************************//** + * @brief ADC scan mode channel config + * + * @param posChList[]: ADC pos channel list type + * @param negChList[]: ADC neg channel list type + * @param scanLength: ADC scan length + * @param contEn: ENABLE or DISABLE continuous mode + * + * @return None + * +*******************************************************************************/ +void ADC_Scan_Channel_Config(ADC_Chan_Type posChList[],ADC_Chan_Type negChList[],uint8_t scanLength,BL_Fun_Type contEn) +{ + uint32_t tmpVal,i; + uint32_t dealLen; + + CHECK_PARAM((scanLength<13)); + + /* Deal with the first 6 */ + dealLen=6; + if(scanLengthdealLen){ + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_SCN_POS2); + for(i=0;ififoThreshold)); + + /* + * DMA enable : ,When the fifo data is exceeded to fifoThreshold DMA request will occur + * DMA disable : fifoThreshold determine how many data will raise FIFO ready interrupt + */ + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GPIP_GPADC_FIFO_THL,fifoCfg->fifoThreshold); + + /* Enable DMA */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GPIP_GPADC_DMA_EN,fifoCfg->dmaEn); + + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + /* clear fifo by SET GPIP_GPADC_FIFO_CLR bit*/ + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_FIFO_CLR); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + +} + +/****************************************************************************//** + * @brief ADC get DMA FIFO data count + * + * @param None + * + * @return data count in FIFO + * +*******************************************************************************/ +uint8_t ADC_Get_FIFO_Count(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + + return BL_GET_REG_BITS_VAL(tmpVal,GPIP_GPADC_FIFO_DATA_COUNT); +} + +/****************************************************************************//** + * @brief ADC get DMA FIFO full status + * + * @param None + * + * @return SET or RESET + * +*******************************************************************************/ +BL_Sts_Type ADC_FIFO_Is_Full(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + + if(BL_IS_REG_BIT_SET(tmpVal,GPIP_GPADC_FIFO_FULL)){ + return SET; + }else{ + return RESET; + } +} + +/****************************************************************************//** + * @brief ADC get DMA FIFO empty status + * + * @param None + * + * @return SET or RESET + * +*******************************************************************************/ +BL_Sts_Type ADC_FIFO_Is_Empty(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + + if(BL_IS_REG_BIT_SET(tmpVal,GPIP_GPADC_FIFO_NE)){ + return RESET; + }else{ + return SET; + } +} + + + + +/****************************************************************************//** + * @brief ADC read DMA FIFO data + * + * @param None + * + * @return ADC result if return 0 that means this is error data,user should ignore this data. + * +*******************************************************************************/ +uint32_t ADC_Read_FIFO(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_DMA_RDATA); + + return (tmpVal); +} + +/****************************************************************************//** + * @brief ADC parse result + * + * @param orgVal: Original A to D value + * @param len: Original AD vaule count + * @param result: Final Result array pointer + * + * @return None + * +*******************************************************************************/ +void ADC_Parse_Result(uint32_t *orgVal,uint32_t len,ADC_Result_Type *result) +{ + uint8_t neg=0; + uint32_t tmpVal1=0,tmpVal2=0; + ADC_Data_Width_Type dataType; + ADC_SIG_INPUT_Type sigType; + float ref=2.0; + uint32_t i=0; + + float coe=1.0; + + if(adcGainCoeffCal.adcGainCoeffEnable){ + coe=adcGainCoeffCal.coe; + } + + tmpVal1=BL_RD_REG(AON_BASE,AON_GPADC_REG_CONFIG1); + tmpVal2=BL_RD_REG(AON_BASE,AON_GPADC_REG_CONFIG2); + dataType=BL_GET_REG_BITS_VAL(tmpVal1,AON_GPADC_RES_SEL); + sigType=BL_GET_REG_BITS_VAL(tmpVal2,AON_GPADC_DIFF_MODE); + + if(BL_GET_REG_BITS_VAL(tmpVal2,AON_GPADC_VREF_SEL)==ADC_VREF_3P3V){ + ref=3.3; + } + if(sigType==ADC_INPUT_SINGLE_END){ + for(i=0;i>21; + result[i].negChan=-1; + if(dataType==ADC_DATA_WIDTH_12){ + result[i].value=(unsigned int)(((orgVal[i]&0xffff)>>4)/coe); + result[i].volt=result[i].value/4096.0*ref; + }else if(dataType==ADC_DATA_WIDTH_14_WITH_16_AVERAGE){ + result[i].value=(unsigned int)(((orgVal[i]&0xffff)>>2)/coe); + result[i].volt=result[i].value/16384.0*ref; + }else if(dataType==ADC_DATA_WIDTH_16_WITH_64_AVERAGE||dataType==ADC_DATA_WIDTH_16_WITH_256_AVERAGE){ + result[i].value=(unsigned int)((orgVal[i]&0xffff)/coe); + result[i].volt=result[i].value/65536.0*ref; + } + } + }else{ + for(i=0;i>21; + result[i].negChan=(orgVal[i]>>16)&0x1F; + + if(orgVal[i]&0x8000){ + orgVal[i] = ~orgVal[i]; + orgVal[i] += 1; + neg = 1; + } + if(dataType==ADC_DATA_WIDTH_12){ + result[i].value=(unsigned int)(((orgVal[i]&0xffff)>>4)/coe); + result[i].volt=result[i].value/2048.0*ref; + }else if(dataType==ADC_DATA_WIDTH_14_WITH_16_AVERAGE){ + result[i].value=(unsigned int)(((orgVal[i]&0xffff)>>2)/coe); + result[i].volt=result[i].value/8192.0*ref; + }else if(dataType==ADC_DATA_WIDTH_16_WITH_64_AVERAGE||dataType==ADC_DATA_WIDTH_16_WITH_256_AVERAGE){ + result[i].value=(unsigned int)((orgVal[i]&0xffff)/coe); + result[i].volt=result[i].value/32768.0*ref; + } + if(neg){ + result[i].volt = - result[i].volt; + } + } + } +} + +/****************************************************************************//** + * @brief ADC mask or unmask certain or all interrupt + * + * @param intType: interrupt type + * @param intMask: mask or unmask + * + * @return None + * +*******************************************************************************/ +void ADC_IntMask(ADC_INT_Type intType, BL_Mask_Type intMask) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_GPIP_ADC_INT_TYPE(intType)); + CHECK_PARAM(IS_BL_MASK_TYPE(intMask)); + + switch(intType) + { + case ADC_INT_POS_SATURATION: + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_ISR); + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_POS_SATUR_MASK); + }else{ + /* Disable this interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,AON_GPADC_POS_SATUR_MASK); + } + BL_WR_REG(AON_BASE,AON_GPADC_REG_ISR,tmpVal); + break; + case ADC_INT_NEG_SATURATION: + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_ISR); + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_NEG_SATUR_MASK); + }else{ + /* Disable this interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,AON_GPADC_NEG_SATUR_MASK); + } + BL_WR_REG(AON_BASE,AON_GPADC_REG_ISR,tmpVal); + break; + case ADC_INT_FIFO_UNDERRUN: + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_UNDERRUN_MASK); + }else{ + /* Disable this interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_FIFO_UNDERRUN_MASK); + } + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + break; + case ADC_INT_FIFO_OVERRUN: + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_OVERRUN_MASK); + }else{ + /* Disable this interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_FIFO_OVERRUN_MASK); + } + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + break; + case ADC_INT_ADC_READY: + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_RDY_MASK); + }else{ + /* Disable this interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_RDY_MASK); + } + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + break; + case ADC_INT_FIFO_READY: + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_RDY_MASK); + }else{ + /* Disable this interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_FIFO_RDY_MASK); + } + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + break; + + case ADC_INT_ALL: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_RD_REG(GPIP_BASE,AON_GPADC_REG_ISR); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_POS_SATUR_MASK); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_NEG_SATUR_MASK); + BL_WR_REG(AON_BASE,AON_GPADC_REG_ISR,tmpVal); + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_UNDERRUN_MASK); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_OVERRUN_MASK); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_RDY_MASK); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + }else{ + /* Disable this interrupt */ + tmpVal=BL_RD_REG(GPIP_BASE,AON_GPADC_REG_ISR); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_GPADC_POS_SATUR_MASK); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_GPADC_NEG_SATUR_MASK); + BL_WR_REG(AON_BASE,AON_GPADC_REG_ISR,tmpVal); + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_FIFO_OVERRUN_MASK); + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_FIFO_UNDERRUN_MASK); + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_RDY_MASK); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + } + break; + default: + break; + } +} + +/****************************************************************************//** + * @brief ADC clear certain or all interrupt + * + * @param intType: interrupt type + * + * @return None + * +*******************************************************************************/ +void ADC_IntClr(ADC_INT_Type intType) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_GPIP_ADC_INT_TYPE(intType)); + + switch(intType) + { + case ADC_INT_POS_SATURATION: + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_ISR); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_POS_SATUR_CLR); + BL_WR_REG(AON_BASE,AON_GPADC_REG_ISR,tmpVal); + + tmpVal=BL_SET_REG_BIT(tmpVal,AON_GPADC_POS_SATUR_CLR); + BL_WR_REG(AON_BASE,AON_GPADC_REG_ISR,tmpVal); + + /*Manual reset*/ + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_ISR); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_POS_SATUR_CLR); + BL_WR_REG(AON_BASE,AON_GPADC_REG_ISR,tmpVal); + + break; + case ADC_INT_NEG_SATURATION: + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_ISR); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_NEG_SATUR_CLR); + BL_WR_REG(AON_BASE,AON_GPADC_REG_ISR,tmpVal); + + tmpVal=BL_SET_REG_BIT(tmpVal,AON_GPADC_NEG_SATUR_CLR); + BL_WR_REG(AON_BASE,AON_GPADC_REG_ISR,tmpVal); + + /*Manual reset*/ + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_ISR); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_NEG_SATUR_CLR); + BL_WR_REG(AON_BASE,AON_GPADC_REG_ISR,tmpVal); + + break; + case ADC_INT_FIFO_UNDERRUN: + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_UNDERRUN_CLR); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_FIFO_UNDERRUN_CLR); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + /*Manual reset*/ + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_UNDERRUN_CLR); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + break; + case ADC_INT_FIFO_OVERRUN: + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_OVERRUN_CLR); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_FIFO_OVERRUN_CLR); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + /*Manual reset*/ + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_OVERRUN_CLR); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + break; + case ADC_INT_ADC_READY: + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_RDY_CLR); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_RDY_CLR); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + /*Manual reset*/ + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_RDY_CLR); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + break; + case ADC_INT_FIFO_READY: + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_RDY); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_FIFO_RDY); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + /*Manual reset*/ + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_RDY); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + + break; + case ADC_INT_ALL: + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_ISR); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_POS_SATUR_CLR); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_NEG_SATUR_CLR); + BL_WR_REG(AON_BASE,AON_GPADC_REG_ISR,tmpVal); + + tmpVal=BL_SET_REG_BIT(tmpVal,AON_GPADC_POS_SATUR_CLR); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_GPADC_NEG_SATUR_CLR); + BL_WR_REG(AON_BASE,AON_GPADC_REG_ISR,tmpVal); + + /*Manual reset*/ + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_ISR); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_POS_SATUR_CLR); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_NEG_SATUR_CLR); + BL_WR_REG(AON_BASE,AON_GPADC_REG_ISR,tmpVal); + + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_UNDERRUN_CLR); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_OVERRUN_CLR); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_RDY_CLR); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_FIFO_UNDERRUN_CLR); + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_FIFO_OVERRUN_CLR); + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPADC_RDY_CLR); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + /*Manual reset*/ + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_UNDERRUN_CLR); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_FIFO_OVERRUN_CLR); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPADC_RDY_CLR); + BL_WR_REG(GPIP_BASE,GPIP_GPADC_CONFIG,tmpVal); + + + break; + default: + break; + } +} + +/****************************************************************************//** + * @brief ADC get interrupt status + * + * @param intType: interrupt type + * + * @return SET or RESET + * +*******************************************************************************/ +BL_Sts_Type ADC_GetIntStatus(ADC_INT_Type intType) +{ + uint32_t tmpVal; + BL_Sts_Type bitStatus = RESET; + + /* Check the parameters */ + CHECK_PARAM(IS_GPIP_ADC_INT_TYPE(intType)); + + switch(intType) + { + case ADC_INT_POS_SATURATION: + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_ISR); + bitStatus = (BL_IS_REG_BIT_SET(tmpVal,AON_GPADC_POS_SATUR))?SET:RESET; + break; + case ADC_INT_NEG_SATURATION: + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_ISR); + bitStatus = (BL_IS_REG_BIT_SET(tmpVal,AON_GPADC_NEG_SATUR))?SET:RESET; + break; + case ADC_INT_FIFO_UNDERRUN: + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + bitStatus = (BL_IS_REG_BIT_SET(tmpVal,GPIP_GPADC_FIFO_UNDERRUN)) ? SET : RESET; + break; + case ADC_INT_FIFO_OVERRUN: + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + bitStatus = (BL_IS_REG_BIT_SET(tmpVal,GPIP_GPADC_FIFO_OVERRUN)) ? SET : RESET; + break; + case ADC_INT_ADC_READY: + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + bitStatus = (BL_IS_REG_BIT_SET(tmpVal,GPIP_GPADC_RDY)) ? SET : RESET; + break; + case ADC_INT_FIFO_READY: + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPADC_CONFIG); + bitStatus = (BL_IS_REG_BIT_SET(tmpVal,GPIP_GPADC_FIFO_RDY)) ? SET : RESET; + break; + case ADC_INT_ALL: + break; + default: + break; + } + + return bitStatus; +} + +/****************************************************************************//** + * @brief ADC install interrupt callback + * + * @param intType: ADC interrupt type + * @param cbFun: ADC interrupt callback + * + * @return None + * +*******************************************************************************/ +void ADC_Int_Callback_Install(ADC_INT_Type intType,intCallback_Type* cbFun) +{ + /* Check the parameters */ + CHECK_PARAM(IS_GPIP_ADC_INT_TYPE(intType)); + + adcIntCbfArra[intType] = cbFun; +} + +/****************************************************************************//** + * @brief ADC DMA interrupt handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void GPADC_DMA_IRQHandler(void) +{ + if( ADC_GetIntStatus(ADC_INT_POS_SATURATION)==SET ){ + ADC_IntClr(ADC_INT_POS_SATURATION); + if(adcIntCbfArra[ADC_INT_POS_SATURATION] != NULL){ + adcIntCbfArra[ADC_INT_POS_SATURATION](); + } + } + if( ADC_GetIntStatus(ADC_INT_NEG_SATURATION)==SET ){ + ADC_IntClr(ADC_INT_NEG_SATURATION); + if(adcIntCbfArra[ADC_INT_NEG_SATURATION] != NULL){ + adcIntCbfArra[ADC_INT_NEG_SATURATION](); + } + } + + if( ADC_GetIntStatus(ADC_INT_FIFO_UNDERRUN)==SET ){ + ADC_IntClr(ADC_INT_FIFO_UNDERRUN); + if(adcIntCbfArra[ADC_INT_FIFO_UNDERRUN] != NULL){ + adcIntCbfArra[ADC_INT_FIFO_UNDERRUN](); + } + } + + if( ADC_GetIntStatus(ADC_INT_FIFO_OVERRUN)==SET ){ + ADC_IntClr(ADC_INT_FIFO_OVERRUN); + if(adcIntCbfArra[ADC_INT_FIFO_OVERRUN] != NULL){ + adcIntCbfArra[ADC_INT_FIFO_OVERRUN](); + } + } + + if( ADC_GetIntStatus(ADC_INT_FIFO_READY)==SET ){ + ADC_IntClr(ADC_INT_FIFO_READY); + if(adcIntCbfArra[ADC_INT_FIFO_READY] != NULL){ + adcIntCbfArra[ADC_INT_FIFO_READY](); + } + } + + if( ADC_GetIntStatus(ADC_INT_FIFO_READY)==SET ){ + ADC_IntClr(ADC_INT_FIFO_READY); + if(adcIntCbfArra[ADC_INT_FIFO_READY] != NULL){ + adcIntCbfArra[ADC_INT_FIFO_READY](); + } + } +} +#endif + +/****************************************************************************//** + * @brief ADC VBAT enable + * + * @param None + * + * @return None + * +*******************************************************************************/ +void ADC_Vbat_Enable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_CONFIG2); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_GPADC_VBAT_EN); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CONFIG2,tmpVal); +} + +/****************************************************************************//** + * @brief ADC VBAT disable + * + * @param None + * + * @return None + * +*******************************************************************************/ +void ADC_Vbat_Disable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_CONFIG2); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_VBAT_EN); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CONFIG2,tmpVal); +} + +/****************************************************************************//** + * @brief ADC TSEN Config + * + * @param tsenMod: None + * + * @return None + * +*******************************************************************************/ +void ADC_Tsen_Init(ADC_TSEN_MOD_Type tsenMod) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_AON_ADC_TSEN_MOD_TYPE(type)); + + /* config gpadc_reg_cmd */ + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_CMD); + /* enable sensor dc test mux*/ + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_SEN_TEST_EN); + /*selected sen output current channel*/ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_GPADC_SEN_SEL,0); + /* enable chip sensor*/ + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_CHIP_SEN_PU); + /*dwa_en */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_GPADC_DWA_EN,1); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CMD,tmpVal); + + /* config 2 */ + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_CONFIG2); + /*tsvbe low=0*/ + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_TSVBE_LOW); + /*dly_sel=2*/ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_GPADC_DLY_SEL,2); + /*test_sel=0*/ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_GPADC_TEST_SEL,0); + /*test_en=0*/ + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_TEST_EN); + /*ts_en*/ + tmpVal=BL_SET_REG_BIT(tmpVal,AON_GPADC_TS_EN); + /*select tsen ext or inner*/ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_GPADC_TSEXT_SEL,tsenMod); + + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_GPADC_PGA_VCM,2); + /*pga vcmi enable*/ + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_PGA_VCMI_EN); + /*0:512uS;1:16mS;2:32mS;3:64mS*/ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_GPADC_PGA_OS_CAL,0); + + BL_WR_REG(AON_BASE,AON_GPADC_REG_CONFIG2,tmpVal); + + /* config 3 */ + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_CONFIG1); + /* set gpadc_dither_en */ + tmpVal = BL_SET_REG_BIT(tmpVal,AON_GPADC_DITHER_EN); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CONFIG1,tmpVal); + + /* set 4000F90C[19](gpadc_mic2_diff) = 1 + * debug advise form Ran + * 2020.08.26 + */ + tmpVal = BL_RD_REG(AON_BASE,AON_GPADC_REG_CMD); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,AON_GPADC_MIC2_DIFF,1); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CMD,tmpVal); +} + +/****************************************************************************//** + * @brief TSEN_Get_V_Error + * + * @param None + * + * @return None + * +*******************************************************************************/ +uint32_t TSEN_Get_V_Error(void) +{ + uint32_t v0 = 0, v1 = 0; + uint32_t v_error = 0; + uint32_t regVal = 0; + ADC_Result_Type result; + uint32_t tmpVal; + uint8_t gainCalEnabled=0; + + /* clear fifo by SET GPIP_GPADC_FIFO_CLR bit*/ + tmpVal = BL_RD_REG(GPIP_BASE, GPIP_GPADC_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal, GPIP_GPADC_FIFO_CLR); + BL_WR_REG(GPIP_BASE, GPIP_GPADC_CONFIG, tmpVal); + + ADC_SET_TSVBE_LOW(); + + ADC_Start(); + while (ADC_Get_FIFO_Count() == 0) + ; + regVal = ADC_Read_FIFO(); + gainCalEnabled=adcGainCoeffCal.adcGainCoeffEnable; + adcGainCoeffCal.adcGainCoeffEnable=0; + ADC_Parse_Result(®Val, 1, &result); + adcGainCoeffCal.adcGainCoeffEnable=gainCalEnabled; + v0 = result.value; + + /* clear fifo by SET GPIP_GPADC_FIFO_CLR bit*/ + tmpVal = BL_RD_REG(GPIP_BASE, GPIP_GPADC_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal, GPIP_GPADC_FIFO_CLR); + BL_WR_REG(GPIP_BASE, GPIP_GPADC_CONFIG, tmpVal); + + + ADC_SET_TSVBE_HIGH(); + + ADC_Start(); + while (ADC_Get_FIFO_Count() == 0) + ; + regVal = ADC_Read_FIFO(); + gainCalEnabled=adcGainCoeffCal.adcGainCoeffEnable; + adcGainCoeffCal.adcGainCoeffEnable=0; + ADC_Parse_Result(®Val, 1, &result); + adcGainCoeffCal.adcGainCoeffEnable=gainCalEnabled; + v1 = result.value; + + v_error = v0 - v1; + + return v_error; + + +} + +/****************************************************************************//** + * @brief Trim TSEN + * + * @param tsen_offset: None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_CLOCK_SECTION ADC_Trim_TSEN(uint16_t * tsen_offset) +{ + uint8_t average_index = 0; + uint32_t v_error_sum=0; + uint32_t tmpVal=0; + float A1=0.0,A2=0.0,C=0.0,delta=0.0; + Efuse_TSEN_Refcode_Corner_Type trim; + + EF_Ctrl_Read_TSEN_Trim(&trim); + + if(trim.tsenRefcodeCornerEn){ + if(trim.tsenRefcodeCornerParity==EF_Ctrl_Get_Trim_Parity(trim.tsenRefcodeCorner,12)){ + + MSG("TSEN ATE Version = %d\r\n",trim.tsenRefcodeCornerVersion); + + *tsen_offset = trim.tsenRefcodeCorner; + + if(trim.tsenRefcodeCornerVersion == 0){ + /* debug advise by ran + * 2020.9.04 + */ + + //set 4000F90C[19](gpadc_mic2_diff) = 0 + tmpVal = BL_RD_REG(AON_BASE,AON_GPADC_REG_CMD); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,AON_GPADC_MIC2_DIFF,0); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CMD,tmpVal); + + for(average_index=0;average_index<50;average_index++){ + v_error_sum += TSEN_Get_V_Error(); + } + + v_error_sum /= 50; + + MSG("A1 = %d\r\n",v_error_sum); + A1 = v_error_sum; + + v_error_sum = 0; + + //set 4000F90C[19](gpadc_mic2_diff) = 1 + tmpVal = BL_RD_REG(AON_BASE,AON_GPADC_REG_CMD); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,AON_GPADC_MIC2_DIFF,1); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CMD,tmpVal); + + for(average_index=0;average_index<50;average_index++){ + v_error_sum += TSEN_Get_V_Error(); + } + + v_error_sum /= 50; + + MSG("A2 = %d\r\n",v_error_sum); + A2 = v_error_sum; + + MSG("C = %d\r\n",*tsen_offset); + C = *tsen_offset; + + delta = A2 - (7.753 / 5.62 * A1) + 2.133 / 5.62 * C + 72; + + MSG("delta=A2-7.753/5.62*A1+2.133/5.62*C+72x; delta = %d\r\n",(uint16_t)delta); + + *tsen_offset = delta + C; + + } + return SUCCESS; + } + } + + return ERROR; + + +} + +/****************************************************************************//** + * @brief SET ADC TSEN TSVBE LOW/HIGH + * + * @param None + * + * @return None + * +*******************************************************************************/ +void ADC_SET_TSVBE_LOW(void) +{ + uint32_t tmpVal; + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_CONFIG2); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_TSVBE_LOW); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CONFIG2,tmpVal); +} + +/****************************************************************************//** + * @brief SET ADC TSEN TSVBE LOW/HIGH + * + * @param None + * + * @return None + * +*******************************************************************************/ +void ADC_SET_TSVBE_HIGH(void) +{ + uint32_t tmpVal; + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_CONFIG2); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_GPADC_TSVBE_LOW); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CONFIG2,tmpVal); +} + +/****************************************************************************//** + * @brief SET ADC TSEN TSVBE LOW/HIGH + * + * @param tsen_offset: tsen_offset form efuse trim data + * + * @return tempture + * +*******************************************************************************/ +float TSEN_Get_Temp(uint32_t tsen_offset) +{ + uint32_t v0 = 0, v1 = 0; + float temp = 0; + uint32_t regVal = 0; + ADC_Result_Type result; + uint32_t tmpVal; + uint8_t gainCalEnabled=0; + + /* clear fifo by SET GPIP_GPADC_FIFO_CLR bit*/ + tmpVal = BL_RD_REG(GPIP_BASE, GPIP_GPADC_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal, GPIP_GPADC_FIFO_CLR); + BL_WR_REG(GPIP_BASE, GPIP_GPADC_CONFIG, tmpVal); + + ADC_SET_TSVBE_LOW(); + + ADC_Start(); + while (ADC_Get_FIFO_Count() == 0) + ; + regVal = ADC_Read_FIFO(); + + gainCalEnabled=adcGainCoeffCal.adcGainCoeffEnable; + adcGainCoeffCal.adcGainCoeffEnable=0; + ADC_Parse_Result(®Val, 1, &result); + adcGainCoeffCal.adcGainCoeffEnable=gainCalEnabled; + v0 = result.value; + + /* clear fifo by SET GPIP_GPADC_FIFO_CLR bit*/ + tmpVal = BL_RD_REG(GPIP_BASE, GPIP_GPADC_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal, GPIP_GPADC_FIFO_CLR); + BL_WR_REG(GPIP_BASE, GPIP_GPADC_CONFIG, tmpVal); + + + ADC_SET_TSVBE_HIGH(); + + ADC_Start(); + while (ADC_Get_FIFO_Count() == 0) + ; + regVal = ADC_Read_FIFO(); + gainCalEnabled=adcGainCoeffCal.adcGainCoeffEnable; + adcGainCoeffCal.adcGainCoeffEnable=0; + ADC_Parse_Result(®Val, 1, &result); + adcGainCoeffCal.adcGainCoeffEnable=gainCalEnabled; + v1 = result.value; + + if (v0 > v1) + { + temp = (((float)v0 - (float)v1) - (float)tsen_offset) / 7.753; + } + else + { + temp = (((float)v1 - (float)v0) - (float)tsen_offset) / 7.753; + } + + return temp; +} + + +/****************************************************************************//** + * @brief ADC MIC Config + * + * @param adc_mic_config: adc_mic_config + * + * @return success or not + * +*******************************************************************************/ +BL_Err_Type ADC_Mic_Init(ADC_MIC_Type * adc_mic_config) +{ + uint32_t tmpVal1=0,tmpVal2=0; + + CHECK_PARAM(IS_ADC_MICBOOST_DB_Type(adc_mic_config->micboostDb)); + CHECK_PARAM(IS_PGA2_GAIN_Type(adc_mic_config->micPga2Gain)); + CHECK_PARAM(IS_ADC_MIC_MODE_Type(adc_mic_config->mic1Mode)); + CHECK_PARAM(IS_ADC_MIC_MODE_Type(adc_mic_config->mic2Mode)); + CHECK_PARAM(IS_BL_Fun_Type(adc_mic_config->dwaEn)); + CHECK_PARAM(IS_BL_Fun_Type(adc_mic_config->micboostBypassEn)); + CHECK_PARAM(IS_BL_Fun_Type(adc_mic_config->micPgaEn)); + CHECK_PARAM(IS_BL_Fun_Type(adc_mic_config->micBiasEn)); + + tmpVal2 = BL_RD_REG(AON_BASE,AON_GPADC_REG_CONFIG2); + + tmpVal1=BL_RD_REG(AON_BASE,AON_GPADC_REG_CMD); + tmpVal1=BL_SET_REG_BITS_VAL(tmpVal1,AON_GPADC_MICBOOST_32DB_EN,adc_mic_config->micboostDb); + tmpVal1=BL_SET_REG_BITS_VAL(tmpVal1,AON_GPADC_MIC_PGA2_GAIN,adc_mic_config->micPga2Gain); + tmpVal1=BL_SET_REG_BITS_VAL(tmpVal1,AON_GPADC_MIC1_DIFF,adc_mic_config->mic1Mode); + tmpVal1=BL_SET_REG_BITS_VAL(tmpVal1,AON_GPADC_MIC2_DIFF,adc_mic_config->mic2Mode); + tmpVal1=BL_SET_REG_BITS_VAL(tmpVal1,AON_GPADC_DWA_EN,adc_mic_config->dwaEn); + tmpVal1=BL_SET_REG_BITS_VAL(tmpVal1,AON_GPADC_BYP_MICBOOST,adc_mic_config->micboostBypassEn); + + if(BL_IS_REG_BIT_SET(tmpVal2,AON_GPADC_PGA_EN) && adc_mic_config->micPgaEn == ENABLE){ + /* 0x4000F914[13] and 0x4000F90c[15] Cannot be both Enable*/ + return ERROR; + }else{ + tmpVal1=BL_SET_REG_BITS_VAL(tmpVal1,AON_GPADC_MICPGA_EN,adc_mic_config->micPgaEn); + } + + tmpVal1=BL_SET_REG_BITS_VAL(tmpVal1,AON_GPADC_MICBIAS_EN,adc_mic_config->micBiasEn); + + BL_WR_REG(AON_BASE,AON_GPADC_REG_CMD,tmpVal1); + + return SUCCESS; + +} + + +/****************************************************************************//** + * @brief ADC MIC bias control + * + * @param None + * + * @return None + * +*******************************************************************************/ +void ADC_MIC_Bias_Enable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_CMD); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_GPADC_MICBIAS_EN); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CMD,tmpVal); +} + + +/****************************************************************************//** + * @brief ADC MIC bias control + * + * @param None + * + * @return None + * +*******************************************************************************/ +void ADC_MIC_Bias_Disable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(AON_BASE,AON_GPADC_REG_CMD); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_GPADC_MICBIAS_EN); + BL_WR_REG(AON_BASE,AON_GPADC_REG_CMD,tmpVal); +} + + +/****************************************************************************//** + * @brief Trim ADC Gain + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_CLOCK_SECTION ADC_Gain_Trim(void) +{ + Efuse_ADC_Gain_Coeff_Type trim; + uint32_t tmp; + + EF_Ctrl_Read_ADC_Gain_Trim(&trim); + + if(trim.adcGainCoeffEn){ + if(trim.adcGainCoeffParity==EF_Ctrl_Get_Trim_Parity(trim.adcGainCoeff,12)){ + adcGainCoeffCal.adcGainCoeffEnable = ENABLE; + adcGainCoeffCal.adcgainCoeffVal = trim.adcGainCoeff; + tmp=adcGainCoeffCal.adcgainCoeffVal; + if(tmp & 0x800){ + tmp = ~ tmp; + tmp += 1; + tmp = tmp&0xfff; + //printf("val==%08x\r\n",(unsigned int)tmp); + adcGainCoeffCal.coe=(1.0+((float)tmp/2048.0)); + //printf("coe==%0f\r\n",adcGainCoeffCal.coe); + }else{ + adcGainCoeffCal.coe=(1.0-((float)tmp/2048.0)); + //printf("coe==%0f\r\n",adcGainCoeffCal.coe); + } + + return SUCCESS; + } + } + + return ERROR; +} + +/*@} end of group ADC_Public_Functions */ + +/*@} end of group ADC */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_aon.c b/drivers/bl702_driver/std_drv/src/bl702_aon.c new file mode 100644 index 00000000..27eff95c --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_aon.c @@ -0,0 +1,508 @@ +/** + ****************************************************************************** + * @file bl702_aon.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_aon.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup AON + * @{ + */ + +/** @defgroup AON_Private_Macros + * @{ + */ +#define AON_CLK_SET_DUMMY_WAIT {__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();} + +/*@} end of group AON_Private_Macros */ + +/** @defgroup AON_Private_Types + * @{ + */ + +/*@} end of group AON_Private_Types */ + +/** @defgroup AON_Private_Variables + * @{ + */ + +/*@} end of group AON_Private_Variables */ + +/** @defgroup AON_Global_Variables + * @{ + */ + +/*@} end of group AON_Global_Variables */ + +/** @defgroup AON_Private_Fun_Declaration + * @{ + */ + +/*@} end of group AON_Private_Fun_Declaration */ + +/** @defgroup AON_Private_Functions + * @{ + */ + +/*@} end of group AON_Private_Functions */ + +/** @defgroup AON_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Power on MXX band gap + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION AON_Power_On_MBG(void) +{ + uint32_t tmpVal = 0; + + /* Power up RF for PLL to work */ + tmpVal=BL_RD_REG(AON_BASE,AON_RF_TOP_AON); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_PU_MBG_AON); + BL_WR_REG(AON_BASE,AON_RF_TOP_AON,tmpVal); + + BL702_Delay_US(55); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Power off MXX band gap + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION AON_Power_Off_MBG(void) +{ + uint32_t tmpVal = 0; + + /* Power OFF */ + tmpVal=BL_RD_REG(AON_BASE,AON_RF_TOP_AON); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_MBG_AON); + BL_WR_REG(AON_BASE,AON_RF_TOP_AON,tmpVal); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Power on XTAL + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION AON_Power_On_XTAL(void) +{ + uint32_t tmpVal = 0; + uint32_t timeOut=0; + + tmpVal=BL_RD_REG(AON_BASE,AON_RF_TOP_AON); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_PU_XTAL_AON); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_PU_XTAL_BUF_AON); + BL_WR_REG(AON_BASE,AON_RF_TOP_AON,tmpVal); + + /* Polling for ready */ + do{ + BL702_Delay_US(10); + timeOut++; + tmpVal=BL_RD_REG(AON_BASE,AON_TSEN); + }while(!BL_IS_REG_BIT_SET(tmpVal,AON_XTAL_RDY)&&timeOut<120); + + if(timeOut>=120){ + return TIMEOUT; + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Set XTAL cap code + * + * @param capIn: Cap code in + * @param capOut: Cap code out + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION AON_Set_Xtal_CapCode(uint8_t capIn,uint8_t capOut) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(AON_BASE,AON_XTAL_CFG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_XTAL_CAPCODE_IN_AON,capIn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_XTAL_CAPCODE_OUT_AON,capOut); + BL_WR_REG(AON_BASE,AON_XTAL_CFG,tmpVal); + + BL702_Delay_US(100); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Get XTAL cap code + * + * @param None + * + * @return Cap code + * +*******************************************************************************/ +uint8_t ATTR_CLOCK_SECTION AON_Get_Xtal_CapCode(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(AON_BASE,AON_XTAL_CFG); + + return BL_GET_REG_BITS_VAL(tmpVal,AON_XTAL_CAPCODE_IN_AON); +} + +/****************************************************************************//** + * @brief Power off XTAL + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION AON_Power_Off_XTAL(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(AON_BASE,AON_RF_TOP_AON); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_XTAL_AON); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_XTAL_BUF_AON); + BL_WR_REG(AON_BASE,AON_RF_TOP_AON,tmpVal); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Power on bandgap system + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION AON_Power_On_BG(void) +{ + uint32_t tmpVal = 0; + + /* power up RF for PLL to work */ + tmpVal=BL_RD_REG(AON_BASE,AON_BG_SYS_TOP); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_PU_BG_SYS_AON); + BL_WR_REG(AON_BASE,AON_BG_SYS_TOP,tmpVal); + + BL702_Delay_US(55); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Power off bandgap system + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION AON_Power_Off_BG(void) +{ + uint32_t tmpVal = 0; + + /* power up RF for PLL to work */ + tmpVal=BL_RD_REG(AON_BASE,AON_BG_SYS_TOP); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_BG_SYS_AON); + BL_WR_REG(AON_BASE,AON_BG_SYS_TOP,tmpVal); + + BL702_Delay_US(55); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Power on LDO11 + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION AON_Power_On_LDO11_SOC(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(AON_BASE,AON_LDO11SOC_AND_DCTEST); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_PU_LDO11SOC_AON); + BL_WR_REG(AON_BASE,AON_LDO11SOC_AND_DCTEST,tmpVal); + + BL702_Delay_US(55); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Power off LDO11 + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION AON_Power_Off_LDO11_SOC(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(AON_BASE,AON_LDO11SOC_AND_DCTEST); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_LDO11SOC_AON); + BL_WR_REG(AON_BASE,AON_LDO11SOC_AND_DCTEST,tmpVal); + + BL702_Delay_US(55); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Power on LDO15_RF + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION AON_Power_On_LDO15_RF(void) +{ + uint32_t tmpVal = 0; + + /* ldo15rf power on */ + tmpVal=BL_RD_REG(AON_BASE,AON_RF_TOP_AON); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_PU_LDO15RF_AON); + BL_WR_REG(AON_BASE,AON_RF_TOP_AON,tmpVal); + + BL702_Delay_US(90); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Power off LDO15_RF + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION AON_Power_Off_LDO15_RF(void) +{ + uint32_t tmpVal = 0; + + /* ldo15rf power off */ + tmpVal=BL_RD_REG(AON_BASE,AON_RF_TOP_AON); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_LDO15RF_AON); + BL_WR_REG(AON_BASE,AON_RF_TOP_AON,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief power on source follow regular + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION AON_Power_On_SFReg(void) +{ + uint32_t tmpVal = 0; + + /* power on sfreg */ + tmpVal=BL_RD_REG(AON_BASE,AON_RF_TOP_AON); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_PU_SFREG_AON); + BL_WR_REG(AON_BASE,AON_RF_TOP_AON,tmpVal); + + BL702_Delay_US(10); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief power off source follow regular + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION AON_Power_Off_SFReg(void) +{ + uint32_t tmpVal = 0; + + /* power off sfreg */ + tmpVal=BL_RD_REG(AON_BASE,AON_RF_TOP_AON); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_SFREG_AON); + BL_WR_REG(AON_BASE,AON_RF_TOP_AON,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Power off the power can be shut down in PDS0 + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION AON_LowPower_Enter_PDS0(void) +{ + uint32_t tmpVal = 0; + + /* power off bz */ + tmpVal=BL_RD_REG(AON_BASE,AON_MISC); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_SW_BZ_EN_AON); + BL_WR_REG(AON_BASE,AON_MISC,tmpVal); + + tmpVal=BL_RD_REG(AON_BASE,AON_RF_TOP_AON); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_SFREG_AON); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_LDO15RF_AON); + tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_MBG_AON); + BL_WR_REG(AON_BASE,AON_RF_TOP_AON,tmpVal); + + /* gating Clock, no more use */ + //tmpVal=BL_RD_REG(GLB_BASE,GLB_CGEN_CFG0); + //tmpVal=tmpVal&(~(1<<6)); + //tmpVal=tmpVal&(~(1<<7)); + //BL_WR_REG(GLB_BASE,GLB_CGEN_CFG0,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Power on the power powered down in PDS0 + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION AON_LowPower_Exit_PDS0(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(AON_BASE,AON_RF_TOP_AON); + + tmpVal=BL_SET_REG_BIT(tmpVal,AON_PU_MBG_AON); + BL_WR_REG(AON_BASE,AON_RF_TOP_AON,tmpVal); + + BL702_Delay_US(20); + + tmpVal=BL_SET_REG_BIT(tmpVal,AON_PU_LDO15RF_AON); + BL_WR_REG(AON_BASE,AON_RF_TOP_AON,tmpVal); + + BL702_Delay_US(60); + + tmpVal=BL_SET_REG_BIT(tmpVal,AON_PU_SFREG_AON); + BL_WR_REG(AON_BASE,AON_RF_TOP_AON,tmpVal); + + BL702_Delay_US(20); + + /* power on bz */ + tmpVal=BL_RD_REG(AON_BASE,AON_MISC); + tmpVal=BL_SET_REG_BIT(tmpVal,AON_SW_BZ_EN_AON); + BL_WR_REG(AON_BASE,AON_MISC,tmpVal); + + /* ungating Clock, no more use */ + //tmpVal=BL_RD_REG(GLB_BASE,GLB_CGEN_CFG0); + //tmpVal=tmpVal|((1<<6)); + //tmpVal=tmpVal|((1<<7)); + //BL_WR_REG(GLB_BASE,GLB_CGEN_CFG0,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Power on the power powered down in PDS0 + * + * @param delay: None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION AON_Set_LDO11_SOC_Sstart_Delay(uint8_t delay) +{ + uint32_t tmpVal = 0; + + CHECK_PARAM((delay<=0x3)); + + /* config ldo11soc_sstart_delay_aon */ + tmpVal=BL_RD_REG(AON_BASE,AON_LDO11SOC_AND_DCTEST); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_LDO11SOC_SSTART_DELAY_AON,delay); + BL_WR_REG(AON_BASE,AON_LDO11SOC_AND_DCTEST,tmpVal); + + return SUCCESS; +} + +/*@} end of group AON_Public_Functions */ + +/*@} end of group AON */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_cam.c b/drivers/bl702_driver/std_drv/src/bl702_cam.c new file mode 100644 index 00000000..6b8c5ba3 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_cam.c @@ -0,0 +1,700 @@ +/** + ****************************************************************************** + * @file bl702_cam.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702.h" +#include "bl702_cam.h" +#include "bl702_glb.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup CAM + * @{ + */ + +/** @defgroup CAM_Private_Macros + * @{ + */ + +/*@} end of group CAM_Private_Macros */ + +/** @defgroup CAM_Private_Types + * @{ + */ + +/*@} end of group CAM_Private_Types */ + +/** @defgroup CAM_Private_Variables + * @{ + */ +static intCallback_Type * camIntCbfArra[CAM_INT_ALL] = {NULL}; + + +/*@} end of group CAM_Private_Variables */ + +/** @defgroup CAM_Global_Variables + * @{ + */ + +/*@} end of group CAM_Global_Variables */ + +/** @defgroup CAM_Private_Fun_Declaration + * @{ + */ + +/*@} end of group CAM_Private_Fun_Declaration */ + +/** @defgroup CAM_Private_Functions + * @{ + */ + +/*@} end of group CAM_Private_Functions */ + +/** @defgroup CAM_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Camera module init + * + * @param cfg: Camera configuration structure pointer + * + * @return None + * +*******************************************************************************/ +void CAM_Init(CAM_CFG_Type *cfg) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_CAM_SW_MODE_TYPE(cfg->swMode)); + CHECK_PARAM(IS_CAM_FRAME_MODE_TYPE(cfg->frameMode)); + CHECK_PARAM(IS_CAM_YUV_MODE_TYPE(cfg->yuvMode)); + CHECK_PARAM(IS_CAM_FRAME_ACTIVE_POL(cfg->framePol)); + CHECK_PARAM(IS_CAM_LINE_ACTIVE_POL(cfg->linePol)); + CHECK_PARAM(IS_CAM_BURST_TYPE(cfg->burstType)); + CHECK_PARAM(IS_CAM_SENSOR_MODE_TYPE(cfg->camSensorMode)); + + /* Disable clock gate */ + GLB_AHB_Slave1_Clock_Gate(DISABLE,BL_AHB_SLAVE1_CAM); + + /* Set camera configuration */ + tmpVal=BL_RD_REG(CAM_BASE,CAM_DVP2AXI_CONFIGUE); + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_DVP_ENABLE); + BL_WR_REG(CAM_BASE,CAM_DVP2AXI_CONFIGUE,tmpVal); + + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,CAM_REG_SW_MODE,cfg->swMode); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,CAM_REG_INTERLV_MODE,cfg->frameMode); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,CAM_REG_FRAM_VLD_POL,cfg->framePol); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,CAM_REG_LINE_VLD_POL,cfg->linePol); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,CAM_REG_HBURST,cfg->burstType); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,CAM_REG_DVP_MODE,cfg->camSensorMode); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,CAM_REG_DVP_WAIT_CYCLE,cfg->waitCount); + + switch(cfg->yuvMode) + { + case CAM_YUV422: + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_DROP_EN); + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_SUBSAMPLE_EN); + break; + case CAM_YUV420_EVEN: + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_DROP_EN); + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_SUBSAMPLE_EN); + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_SUBSAMPLE_EVEN); + break; + case CAM_YUV420_ODD: + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_DROP_EN); + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_SUBSAMPLE_EN); + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_SUBSAMPLE_EVEN); + break; + case CAM_YUV400_EVEN: + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_DROP_EN); + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_DROP_EVEN); + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_SUBSAMPLE_EN); + break; + case CAM_YUV400_ODD: + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_DROP_EN); + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_DROP_EVEN); + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_SUBSAMPLE_EN); + break; + default: + break; + } + + BL_WR_REG(CAM_BASE,CAM_DVP2AXI_CONFIGUE,tmpVal); + + /* Set frame count to issue interrupt at sw mode */ + tmpVal = BL_RD_REG(CAM_BASE,CAM_INT_CONTROL); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,CAM_REG_FRAME_CNT_TRGR_INT,cfg->swIntCnt); + BL_WR_REG(CAM_BASE,CAM_INT_CONTROL,tmpVal); + + /* Set camera memory start address, memory size and frame size in burst */ + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_ADDR_START_0,cfg->memStart0&0xFFFFFFF0); + if(cfg->burstType==CAM_BURST_TYPE_SINGLE){ + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_MEM_BCNT_0,cfg->memSize0/4); + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_FRAME_BCNT_0,cfg->frameSize0/4); + }else if(cfg->burstType==CAM_BURST_TYPE_INCR4){ + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_MEM_BCNT_0,cfg->memSize0/16); + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_FRAME_BCNT_0,cfg->frameSize0/16); + }else if(cfg->burstType==CAM_BURST_TYPE_INCR8){ + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_MEM_BCNT_0,cfg->memSize0/32); + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_FRAME_BCNT_0,cfg->frameSize0/32); + }else if(cfg->burstType==CAM_BURST_TYPE_INCR16){ + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_MEM_BCNT_0,cfg->memSize0/64); + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_FRAME_BCNT_0,cfg->frameSize0/64); + } + if(!cfg->frameMode){ + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_ADDR_START_1,cfg->memStart1&0xFFFFFFF0); + if(cfg->burstType==CAM_BURST_TYPE_SINGLE){ + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_MEM_BCNT_1,cfg->memSize1/4); + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_FRAME_BCNT_1,cfg->frameSize1/4); + }else if(cfg->burstType==CAM_BURST_TYPE_INCR4){ + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_MEM_BCNT_1,cfg->memSize1/16); + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_FRAME_BCNT_1,cfg->frameSize1/16); + }else if(cfg->burstType==CAM_BURST_TYPE_INCR8){ + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_MEM_BCNT_1,cfg->memSize1/32); + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_FRAME_BCNT_1,cfg->frameSize1/32); + }else if(cfg->burstType==CAM_BURST_TYPE_INCR16){ + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_MEM_BCNT_1,cfg->memSize1/64); + BL_WR_REG(CAM_BASE,CAM_DVP2AHB_FRAME_BCNT_1,cfg->frameSize1/64); + } + } + + /* Clear interrupt */ + BL_WR_REG(CAM_BASE,CAM_DVP_FRAME_FIFO_POP,0xFFFF0); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(CAM_IRQn,CAM_IRQHandler); +#endif +} + +/****************************************************************************//** + * @brief Deinit camera module + * + * @param None + * + * @return None + * +*******************************************************************************/ +void CAM_Deinit(void) +{ + //GLB_AHB_Slave1_Reset(BL_AHB_SLAVE1_CAM); +} + +/****************************************************************************//** + * @brief Enable camera module + * + * @param None + * + * @return None + * +*******************************************************************************/ +void CAM_Enable(void) +{ + uint32_t tmpVal; + + /* Enable camera module */ + tmpVal=BL_RD_REG(CAM_BASE,CAM_DVP2AXI_CONFIGUE); + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_DVP_ENABLE); + BL_WR_REG(CAM_BASE,CAM_DVP2AXI_CONFIGUE,tmpVal); +} + +/****************************************************************************//** + * @brief Disable camera module + * + * @param None + * + * @return None + * +*******************************************************************************/ +void CAM_Disable(void) +{ + uint32_t tmpVal; + + /* Disable camera module */ + tmpVal=BL_RD_REG(CAM_BASE,CAM_DVP2AXI_CONFIGUE); + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_DVP_ENABLE); + BL_WR_REG(CAM_BASE,CAM_DVP2AXI_CONFIGUE,tmpVal); +} + +/****************************************************************************//** + * @brief Camera clock gate function + * + * @param enable: Enable or disable + * + * @return None + * +*******************************************************************************/ +void CAM_Clock_Gate(BL_Fun_Type enable) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(CAM_BASE,CAM_DVP2AXI_CONFIGUE); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,CAM_REG_DVP_PIX_CLK_CG,enable); + BL_WR_REG(CAM_BASE,CAM_DVP2AXI_CONFIGUE,tmpVal); +} + +/****************************************************************************//** + * @brief Camera hsync crop function + * + * @param start: Valid hsync start count + * @param end: Valid hsync end count + * + * @return None + * +*******************************************************************************/ +void CAM_Hsync_Crop(uint16_t start,uint16_t end) +{ + BL_WR_REG(CAM_BASE,CAM_HSYNC_CONTROL,(start<<16)+end); +} + +/****************************************************************************//** + * @brief Camera vsync crop function + * + * @param start: Valid vsync start count + * @param end: Valid vsync end count + * + * @return None + * +*******************************************************************************/ +void CAM_Vsync_Crop(uint16_t start,uint16_t end) +{ + BL_WR_REG(CAM_BASE,CAM_VSYNC_CONTROL,(start<<16)+end); +} + +/****************************************************************************//** + * @brief Camera set total valid pix count in a line function + * + * @param count: Count value + * + * @return None + * +*******************************************************************************/ +void CAM_Set_Hsync_Total_Count(uint16_t count) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(CAM_BASE,CAM_FRAME_SIZE_CONTROL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,CAM_REG_TOTAL_HCNT,count); + BL_WR_REG(CAM_BASE,CAM_FRAME_SIZE_CONTROL,tmpVal); +} + +/****************************************************************************//** + * @brief Camera set total valid line count in a frame function + * + * @param count: Count value + * + * @return None + * +*******************************************************************************/ +void CAM_Set_Vsync_Total_Count(uint16_t count) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(CAM_BASE,CAM_FRAME_SIZE_CONTROL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,CAM_REG_TOTAL_VCNT,count); + BL_WR_REG(CAM_BASE,CAM_FRAME_SIZE_CONTROL,tmpVal); +} + +/****************************************************************************//** + * @brief Get one camera frame in interleave mode + * + * @param info: Interleave mode camera frame infomation pointer + * + * @return None + * +*******************************************************************************/ +void CAM_Interleave_Get_Frame_Info(CAM_Interleave_Frame_Info *info) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(CAM_BASE,CAM_DVP_STATUS_AND_ERROR); + + info->validFrames=BL_GET_REG_BITS_VAL(tmpVal,CAM_FRAME_VALID_CNT_0); + info->curFrameAddr=BL_RD_REG(CAM_BASE,CAM_FRAME_START_ADDR0_0); + info->curFrameBytes=BL_RD_REG(CAM_BASE,CAM_FRAME_BYTE_CNT0_0); + info->status=tmpVal; +} + +/****************************************************************************//** + * @brief Get one camera frame in planar mode + * + * @param info: Planar mode camera frame infomation pointer + * + * @return None + * +*******************************************************************************/ +void CAM_Planar_Get_Frame_Info(CAM_Planar_Frame_Info *info) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(CAM_BASE,CAM_DVP_STATUS_AND_ERROR); + + info->validFrames0=BL_GET_REG_BITS_VAL(tmpVal,CAM_FRAME_VALID_CNT_0); + info->validFrames1=BL_GET_REG_BITS_VAL(tmpVal,CAM_FRAME_VALID_CNT_1); + info->curFrameAddr0=BL_RD_REG(CAM_BASE,CAM_FRAME_START_ADDR0_0); + info->curFrameAddr1=BL_RD_REG(CAM_BASE,CAM_FRAME_START_ADDR1_0); + info->curFrameBytes0=BL_RD_REG(CAM_BASE,CAM_FRAME_BYTE_CNT0_0); + info->curFrameBytes1=BL_RD_REG(CAM_BASE,CAM_FRAME_BYTE_CNT1_0); + info->status=tmpVal; +} + +/****************************************************************************//** + * @brief Get available count 0 of frames + * + * @param None + * + * @return Frames count + * +*******************************************************************************/ +uint8_t CAM_Get_Frame_Count_0(void) +{ + return BL_GET_REG_BITS_VAL(BL_RD_REG(CAM_BASE,CAM_DVP_STATUS_AND_ERROR),CAM_FRAME_VALID_CNT_0); +} + +/****************************************************************************//** + * @brief Get available count 1 of frames + * + * @param None + * + * @return Frames count + * +*******************************************************************************/ +uint8_t CAM_Get_Frame_Count_1(void) +{ + return BL_GET_REG_BITS_VAL(BL_RD_REG(CAM_BASE,CAM_DVP_STATUS_AND_ERROR),CAM_FRAME_VALID_CNT_1); +} + +/****************************************************************************//** + * @brief Pop one camera frame in interleave mode + * + * @param None + * + * @return None + * +*******************************************************************************/ +void CAM_Interleave_Pop_Frame(void) +{ + /* Pop one frame */ + BL_WR_REG(CAM_BASE,CAM_DVP_FRAME_FIFO_POP,1); +} + +/****************************************************************************//** + * @brief Pop one camera frame in planar mode + * + * @param None + * + * @return None + * +*******************************************************************************/ +void CAM_Planar_Pop_Frame(void) +{ + /* Pop one frame */ + BL_WR_REG(CAM_BASE,CAM_DVP_FRAME_FIFO_POP,3); +} + +/****************************************************************************//** + * @brief CAMERA Enable Disable Interrupt + * + * @param intType: CAMERA Interrupt Type + * @param intMask: Enable or Disable + * + * @return None + * +*******************************************************************************/ +void CAM_IntMask(CAM_INT_Type intType, BL_Mask_Type intMask) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_CAM_INT_TYPE(intType)); + CHECK_PARAM(IS_BL_MASK_TYPE(intMask)); + + tmpVal=BL_RD_REG(CAM_BASE,CAM_INT_CONTROL); + switch(intType) + { + case CAM_INT_NORMAL_0: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_NORMAL_0_EN); + }else{ + /* Disable this interrupt */ + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_INT_NORMAL_0_EN); + } + break; + + case CAM_INT_NORMAL_1: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_NORMAL_1_EN); + }else{ + /* Disable this interrupt */ + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_INT_NORMAL_1_EN); + } + break; + + case CAM_INT_MEMORY_OVERWRITE_0: + case CAM_INT_MEMORY_OVERWRITE_1: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_MEM_EN); + }else{ + /* Disable this interrupt */ + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_INT_MEM_EN); + } + break; + + case CAM_INT_FRAME_OVERWRITE_0: + case CAM_INT_FRAME_OVERWRITE_1: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_FRAME_EN); + }else{ + /* Disable this interrupt */ + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_INT_FRAME_EN); + } + break; + + case CAM_INT_FIFO_OVERWRITE_0: + case CAM_INT_FIFO_OVERWRITE_1: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_FIFO_EN); + }else{ + /* Disable this interrupt */ + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_INT_FIFO_EN); + } + break; + + case CAM_INT_VSYNC_CNT_ERROR: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_VCNT_EN); + }else{ + /* Disable this interrupt */ + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_INT_VCNT_EN); + } + break; + + case CAM_INT_HSYNC_CNT_ERROR: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_HCNT_EN); + }else{ + /* Disable this interrupt */ + tmpVal=BL_CLR_REG_BIT(tmpVal,CAM_REG_INT_HCNT_EN); + } + break; + + case CAM_INT_ALL: + if(intMask == UNMASK){ + /* Enable all interrupt */ + tmpVal |= 0x7F; + }else{ + /* Disable all interrupt */ + tmpVal &= 0xFFFFFF80; + } + break; + + default: + break; + } + BL_WR_REG(CAM_BASE,CAM_INT_CONTROL,tmpVal); +} + +/****************************************************************************//** + * @brief CAMERA Interrupt Clear + * + * @param intType: CAMERA Interrupt Type + * + * @return None + * +*******************************************************************************/ +void CAM_IntClr(CAM_INT_Type intType) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(CAM_BASE,CAM_DVP_FRAME_FIFO_POP); + + switch(intType) + { + case CAM_INT_NORMAL_0: + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_NORMAL_CLR_0); + break; + case CAM_INT_NORMAL_1: + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_NORMAL_CLR_1); + break; + case CAM_INT_MEMORY_OVERWRITE_0: + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_MEM_CLR_0); + break; + case CAM_INT_MEMORY_OVERWRITE_1: + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_MEM_CLR_1); + break; + case CAM_INT_FRAME_OVERWRITE_0: + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_FRAME_CLR_0); + break; + case CAM_INT_FRAME_OVERWRITE_1: + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_FRAME_CLR_1); + break; + case CAM_INT_FIFO_OVERWRITE_0: + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_FIFO_CLR_0); + break; + case CAM_INT_FIFO_OVERWRITE_1: + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_FIFO_CLR_1); + break; + case CAM_INT_VSYNC_CNT_ERROR: + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_VCNT_CLR_0); + break; + case CAM_INT_HSYNC_CNT_ERROR: + tmpVal=BL_SET_REG_BIT(tmpVal,CAM_REG_INT_HCNT_CLR_0); + break; + case CAM_INT_ALL: + tmpVal=0xFFFF0; + default: + break; + } + BL_WR_REG(CAM_BASE,CAM_DVP_FRAME_FIFO_POP,tmpVal); +} + +/****************************************************************************//** + * @brief Install camera interrupt callback function + * + * @param intType: CAMERA interrupt type + * @param cbFun: Pointer to interrupt callback function. The type should be void (*fn)(void) + * + * @return None + * +*******************************************************************************/ +void CAM_Int_Callback_Install(CAM_INT_Type intType,intCallback_Type* cbFun) +{ + /* Check the parameters */ + CHECK_PARAM(IS_CAM_INT_TYPE(intType)); + + camIntCbfArra[intType] = cbFun; +} + +/****************************************************************************//** + * @brief Camera interrupt handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void CAM_IRQHandler(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(CAM_BASE,CAM_DVP_STATUS_AND_ERROR); + if(BL_IS_REG_BIT_SET(tmpVal,CAM_STS_NORMAL_INT_0)){ + CAM_IntClr(CAM_INT_NORMAL_0); + if(camIntCbfArra[CAM_INT_NORMAL_0] != NULL) { + /* call the callback function */ + camIntCbfArra[CAM_INT_NORMAL_0](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,CAM_STS_NORMAL_INT_1)){ + CAM_IntClr(CAM_INT_NORMAL_1); + if(camIntCbfArra[CAM_INT_NORMAL_1] != NULL) { + /* call the callback function */ + camIntCbfArra[CAM_INT_NORMAL_1](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,CAM_STS_MEM_INT_0)){ + CAM_IntClr(CAM_INT_MEMORY_OVERWRITE_0); + if(camIntCbfArra[CAM_INT_MEMORY_OVERWRITE_0] != NULL) { + /* call the callback function */ + camIntCbfArra[CAM_INT_MEMORY_OVERWRITE_0](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,CAM_STS_MEM_INT_1)){ + CAM_IntClr(CAM_INT_MEMORY_OVERWRITE_1); + if(camIntCbfArra[CAM_INT_MEMORY_OVERWRITE_1] != NULL) { + /* call the callback function */ + camIntCbfArra[CAM_INT_MEMORY_OVERWRITE_1](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,CAM_STS_FRAME_INT_0)){ + CAM_IntClr(CAM_INT_FRAME_OVERWRITE_0); + if(camIntCbfArra[CAM_INT_FRAME_OVERWRITE_0] != NULL) { + /* call the callback function */ + camIntCbfArra[CAM_INT_FRAME_OVERWRITE_0](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,CAM_STS_FRAME_INT_1)){ + CAM_IntClr(CAM_INT_FRAME_OVERWRITE_1); + if(camIntCbfArra[CAM_INT_FRAME_OVERWRITE_1] != NULL) { + /* call the callback function */ + camIntCbfArra[CAM_INT_FRAME_OVERWRITE_1](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,CAM_STS_FIFO_INT_0)){ + CAM_IntClr(CAM_INT_FIFO_OVERWRITE_0); + if(camIntCbfArra[CAM_INT_FIFO_OVERWRITE_0] != NULL) { + /* call the callback function */ + camIntCbfArra[CAM_INT_FIFO_OVERWRITE_0](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,CAM_STS_FIFO_INT_1)){ + CAM_IntClr(CAM_INT_FIFO_OVERWRITE_1); + if(camIntCbfArra[CAM_INT_FIFO_OVERWRITE_1] != NULL) { + /* call the callback function */ + camIntCbfArra[CAM_INT_FIFO_OVERWRITE_1](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,CAM_STS_HCNT_INT)){ + CAM_IntClr(CAM_INT_HSYNC_CNT_ERROR); + if(camIntCbfArra[CAM_INT_HSYNC_CNT_ERROR] != NULL) { + /* call the callback function */ + camIntCbfArra[CAM_INT_HSYNC_CNT_ERROR](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,CAM_STS_VCNT_INT)){ + CAM_IntClr(CAM_INT_VSYNC_CNT_ERROR); + if(camIntCbfArra[CAM_INT_VSYNC_CNT_ERROR] != NULL) { + /* call the callback function */ + camIntCbfArra[CAM_INT_VSYNC_CNT_ERROR](); + } + } +} +#endif + +/*@} end of group CAM_Public_Functions */ + +/*@} end of group CAM */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_clock.c b/drivers/bl702_driver/std_drv/src/bl702_clock.c new file mode 100644 index 00000000..29f079a6 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_clock.c @@ -0,0 +1,166 @@ +/** + ****************************************************************************** + * @file bl702_clock.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_clock.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup CLOCK + * @{ + */ + +/** @defgroup CLOCK_Private_Macros + * @{ + */ + +/*@} end of group CLOCK_Private_Macros */ + +/** @defgroup CLOCK_Private_Types + * @{ + */ + +/*@} end of group CLOCK_Private_Types */ + +/** @defgroup CLOCK_Private_Variables + * @{ + */ +static Clock_Cfg_Type clkCfg; + +/*@} end of group CLOCK_Private_Variables */ + +/** @defgroup CLOCK_Global_Variables + * @{ + */ + +/*@} end of group CLOCK_Global_Variables */ + +/** @defgroup CLOCK_Private_Fun_Declaration + * @{ + */ + +/*@} end of group CLOCK_Private_Fun_Declaration */ + +/** @defgroup CLOCK_Private_Functions + * @{ + */ + +/*@} end of group CLOCK_Private_Functions */ + +/** @defgroup CLOCK_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Set System Clock + * + * @param type: System clock type + * @param clock: System clock value + * + * @return None + * +*******************************************************************************/ +void Clock_System_Clock_Set(BL_System_Clock_Type type,uint32_t clock) +{ + if(type
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ +#include "l1c_reg.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Periph_Driver + * @{ + */ + +/** @defgroup DRIVER_COMMON DRIVER_COMMON + * @brief Digger driver common functions + * @{ + */ + +/** @defgroup DRIVER_Private_Type + * @{ + */ + + +/*@} end of group DRIVER_Private_Type*/ + +/** @defgroup DRIVER_Private_Defines + * @{ + */ + +/*@} end of group DRIVER_Private_Defines */ + +/** @defgroup DRIVER_Private_Variables + * @{ + */ +pFunc __Interrupt_Handlers[IRQn_LAST]={0}; + +/*@} end of group DRIVER_Private_Variables */ + +/** @defgroup DRIVER_Global_Variables + * @{ + */ + +/*@} end of group DRIVER_Global_Variables */ + +/** @defgroup DRIVER_Private_FunctionDeclaration + * @{ + */ + +/*@} end of group DRIVER_Private_FunctionDeclaration */ + +/** @defgroup DRIVER_Private_Functions + * @{ + */ + +/*@} end of group DRIVER_Private_Functions */ + +/** @defgroup DRIVER_Public_Functions + * @{ + */ + +void Trap_Handler(void){ + unsigned long cause; + unsigned long epc; + unsigned long tval; + uint8_t isecall=0; + + MSG("Trap_Handler\r\n"); + + cause = read_csr(mcause); + MSG("mcause=%08x\r\n",(uint32_t)cause); + epc=read_csr(mepc); + MSG("mepc:%08x\r\n",(uint32_t)epc); + tval=read_csr(mtval); + MSG("mtval:%08x\r\n",(uint32_t)tval); + + cause=(cause&0x3ff); + switch(cause){ + case 1: + MSG("Instruction access fault\r\n"); + break; + case 2: + MSG("Illegal instruction\r\n"); + break; + case 3: + MSG("Breakpoint\r\n"); + break; + case 4: + MSG("Load address misaligned\r\n"); + break; + case 5: + MSG("Load access fault\r\n"); + break; + case 6: + MSG("Store/AMO address misaligned\r\n"); + break; + case 7: + MSG("Store/AMO access fault\r\n"); + break; + case 8: + MSG("Environment call from U-mode\r\n"); + epc+=4; + write_csr(mepc,epc); + break; + case 11: + MSG("Environment call from M-mode\r\n"); + epc+=4; + write_csr(mepc,epc); + isecall=1; + break; + default: + MSG("Cause num=%d\r\n",(uint32_t)cause); + epc+=4; + write_csr(mepc,epc); + break; + } + + if(!isecall){ + while(1); + } +} + +void Interrupt_Handler_Register(IRQn_Type irq,pFunc interruptFun) +{ + if(irq=IRQ_NUM_BASE){ + MSG("Peripheral Interrupt num:%d \r\n",(unsigned int)num-IRQ_NUM_BASE); + } + while(1); + } + }else{ + MSG("Unexpected interrupt num:%d\r\n",(unsigned int)num); + } + } +} + +void FreeRTOS_Interrupt_Handler(void) +{ + Interrupt_Handler(); +} + +/****************************************************************************//** + * @brief delay us + * + * @param[in] core: systemcoreclock + * + * @param[in] cnt: delay cnt us + * + * @return none + * + *******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +#ifdef ARCH_ARM +#ifndef __GNUC__ +__WEAK +__ASM void ATTR_TCM_SECTION ASM_Delay_Us(uint32_t core,uint32_t cnt) +{ + lsrs r0,#0x10 + muls r0,r1,r0 + mov r2,r0 + lsrs r2,#0x04 + lsrs r2,#0x03 + cmp r2,#0x01 + beq end + cmp r2,#0x00 + beq end +loop + mov r0,r0 + mov r0,r0 + mov r0,r0 + mov r0,r0 + mov r0,r0 + subs r2,r2,#0x01 + cmp r2,#0x00 + bne loop +end + bx lr +} +#else +__WEAK +void ATTR_TCM_SECTION ASM_Delay_Us(uint32_t core,uint32_t cnt) +{ + __asm__ __volatile__( + "lsr r0,#0x10\n\t" + "mul r0,r1,r0\n\t" + "mov r2,r0\n\t" + "lsr r2,#0x04\n\t" + "lsr r2,#0x03\n\t" + "cmp r2,#0x01\n\t" + "beq end\n\t" + "cmp r2,#0x00\n\t" + "beq end\n" + "loop :" + "mov r0,r0\n\t" + "mov r0,r0\n\t" + "mov r0,r0\n\t" + "mov r0,r0\n\t" + "mov r0,r0\n\t" + "sub r2,r2,#0x01\n\t" + "cmp r2,#0x00\n\t" + "bne loop\n" + "end :" + "mov r0,r0\n\t" + ); +} +#endif +#endif +#ifdef ARCH_RISCV +__WEAK +void ATTR_TCM_SECTION ASM_Delay_Us(uint32_t core,uint32_t cnt) +{ + uint32_t codeAddress = 0; + uint32_t divVal = 40; + + codeAddress = (uint32_t)&ASM_Delay_Us; + + /* 1M=100K*10, so multiple is 10 */ + /* loop function take 4 instructions, so instructionNum is 4 */ + /* if codeAddress locate at IROM space and irom_2t_access is 1, then irom2TAccess=2, else irom2TAccess=1 */ + /* divVal = multiple*instructionNum*irom2TAccess */ + if(((codeAddress&(0xF<<24))>>24)==0x01){ + /* IROM space */ + if(BL_GET_REG_BITS_VAL(BL_RD_REG(L1C_BASE,L1C_CONFIG),L1C_IROM_2T_ACCESS)){ + /* instruction 2T */ + divVal = 80; + } + } + + __asm__ __volatile__( + ".align 4\n\t" + "lw a4,%1\n\t" + "lui a5,0x18\n\t" + "addi a5,a5,1696\n\t" + "divu a5,a4,a5\n\t" + "sw a5,%1\n\t" + "lw a4,%1\n\t" + "lw a5,%0\n\t" + "mul a5,a4,a5\n\t" + "sw a5,%1\n\t" + "lw a4,%1\n\t" + "lw a5,%2\n\t" + "divu a5,a4,a5\n\t" + "sw a5,%1\n\t" + "lw a5,%1\n\t" + "li a4,0x1\n\t" + "beq a5,zero,end\n\t" + "beq a5,a4,end\n\t" + "nop\n\t" + "nop\n\t" + ".align 4\n\t" + "loop :\n" + "addi a4,a5,-1\n\t" + "mv a5,a4\n\t" + "bnez a5,loop\n\t" + "nop\n\t" + "end :\n\t" + "nop\n" + : /* output */ + :"m"(cnt),"m"(core),"m"(divVal) /* input */ + :"t1","a4","a5" /* destruct description */ + ); +} +#endif +#endif + +/****************************************************************************//** + * @brief delay us + * + * @param[in] cnt: delay cnt us + * + * @return none + * + *******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION BL702_Delay_US(uint32_t cnt) +{ + ASM_Delay_Us(SystemCoreClockGet(),cnt); +} +#endif +/****************************************************************************//** + * @brief delay ms + * + * @param[in] cnt: delay cnt ms + * + * @return none + * + *******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION BL702_Delay_MS(uint32_t cnt) +{ + uint32_t i = 0; + uint32_t count = 0; + + if(cnt>=1024){ + /* delay (n*1024) ms */ + count = 1024; + for(i=0;i<(cnt/1024);i++){ + BL702_Delay_US(1024*1000); + } + } + if(cnt&0x3FF){ + /* delay (1-1023)ms */ + count = cnt & 0x3FF; + BL702_Delay_US(count*1000); + } + //BL702_Delay_US(((cnt<<10)-(cnt<<4)-(cnt<<3))); +} +#endif +/* +char *_sbrk(int incr) +{} +*/ +/*@} end of group DRIVER_Public_Functions */ + +/*@} end of group DRIVER_COMMON */ + +/*@} end of group BL702_Periph_Driver */ + + diff --git a/drivers/bl702_driver/std_drv/src/bl702_dac.c b/drivers/bl702_driver/std_drv/src/bl702_dac.c new file mode 100644 index 00000000..5d533173 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_dac.c @@ -0,0 +1,504 @@ +/** + ****************************************************************************** + * @file bl702_dac.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_dac.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup DAC + * @{ + */ + +/** @defgroup DAC_Private_Macros + * @{ + */ +#define GPIP_CLK_SET_DUMMY_WAIT {__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();} + +/*@} end of group DAC_Private_Macros */ + +/** @defgroup DAC_Private_Types + * @{ + */ + +/*@} end of group DAC_Private_Types */ + +/** @defgroup DAC_Private_Variables + * @{ + */ + +/*@} end of group DAC_Private_Variables */ + +/** @defgroup DAC_Global_Variables + * @{ + */ + +/*@} end of group DAC_Global_Variables */ + +/** @defgroup DAC_Private_Fun_Declaration + * @{ + */ + +/*@} end of group DAC_Private_Fun_Declaration */ + +/** @defgroup DAC_Private_Functions + * @{ + */ + +/*@} end of group DAC_Private_Functions */ + +/** @defgroup DAC_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief DAC initialization + * + * @param cfg: DAC configuration pointer + * + * @return None + * +*******************************************************************************/ +void GLB_DAC_Init(GLB_DAC_Cfg_Type *cfg) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_GLB_DAC_REF_SEL_TYPE(cfg->refSel)); + + /* Set DAC config */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPDAC_CTRL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_REF_SEL,cfg->refSel); + if(ENABLE==cfg->resetChanA){ + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_GPDACA_RSTN_ANA); + tmpVal=BL_WR_REG(GLB_BASE,GLB_GPDAC_CTRL,tmpVal); + __NOP(); + __NOP(); + __NOP(); + __NOP(); + } + if(ENABLE==cfg->resetChanB){ + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_GPDACB_RSTN_ANA); + tmpVal=BL_WR_REG(GLB_BASE,GLB_GPDAC_CTRL,tmpVal); + __NOP(); + __NOP(); + __NOP(); + __NOP(); + } + + /* Clear reset */ + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_GPDACA_RSTN_ANA); + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_GPDACB_RSTN_ANA); + tmpVal=BL_WR_REG(GLB_BASE,GLB_GPDAC_CTRL,tmpVal); +} + +/****************************************************************************//** + * @brief DAC channel A initialization + * + * @param cfg: DAC channel configuration pointer + * + * @return None + * +*******************************************************************************/ +void GLB_DAC_Set_ChanA_Config(GLB_DAC_Chan_Cfg_Type *cfg) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_GLB_DAC_CHAN_TYPE(cfg->outMux)); + + /* Set channel A config */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPDAC_ACTRL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_A_OUTMUX,cfg->outMux); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_IOA_EN,cfg->outputEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_A_EN,cfg->chanEn); + + tmpVal=BL_WR_REG(GLB_BASE,GLB_GPDAC_ACTRL,tmpVal); +} + +/****************************************************************************//** + * @brief DAC channel B initialization + * + * @param cfg: DAC channel configuration pointer + * + * @return None + * +*******************************************************************************/ +void GLB_DAC_Set_ChanB_Config(GLB_DAC_Chan_Cfg_Type *cfg) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_GLB_DAC_CHAN_TYPE(cfg->outMux)); + + /* Set channel A config */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPDAC_BCTRL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_B_OUTMUX,cfg->outMux); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_IOB_EN,cfg->outputEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_B_EN,cfg->chanEn); + + tmpVal=BL_WR_REG(GLB_BASE,GLB_GPDAC_BCTRL,tmpVal); +} + +/****************************************************************************//** + * @brief Select DAC channel B source + * + * @param src: DAC channel B source selection type + * + * @return None + * +*******************************************************************************/ +void GPIP_Set_DAC_ChanB_SRC_SEL(GPIP_DAC_ChanB_SRC_Type src) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_GPIP_DAC_CHANB_SRC_TYPE(src)); + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_CONFIG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GPIP_GPDAC_CH_B_SEL,src); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_CONFIG,tmpVal); +} + +/****************************************************************************//** + * @brief Select DAC channel A source + * + * @param src: DAC channel A source selection type + * + * @return None + * +*******************************************************************************/ +void GPIP_Set_DAC_ChanA_SRC_SEL(GPIP_DAC_ChanA_SRC_Type src) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_GPIP_DAC_CHANA_SRC_TYPE(src)); + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_CONFIG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GPIP_GPDAC_CH_A_SEL,src); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_CONFIG,tmpVal); +} + +/****************************************************************************//** + * @brief Enable DAC channel B + * + * @param None + * + * @return None + * +*******************************************************************************/ +void GPIP_DAC_ChanB_Enable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_CONFIG); + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPDAC_EN2); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_CONFIG,tmpVal); +} + +/****************************************************************************//** + * @brief Disable DAC channel B + * + * @param None + * + * @return None + * +*******************************************************************************/ +void GPIP_DAC_ChanB_Disable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPDAC_EN2); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_CONFIG,tmpVal); +} + +/****************************************************************************//** + * @brief Enable DAC channel A + * + * @param None + * + * @return None + * +*******************************************************************************/ +void GPIP_DAC_ChanA_Enable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_CONFIG); + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPDAC_EN); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_CONFIG,tmpVal); +} + +/****************************************************************************//** + * @brief Disable DAC channel A + * + * @param None + * + * @return None + * +*******************************************************************************/ +void GPIP_DAC_ChanA_Disable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPDAC_EN); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_CONFIG,tmpVal); +} + +/****************************************************************************//** + * @brief Select DAC DMA TX format + * + * @param fmt: DAC DMA TX format selection type + * + * @return None + * +*******************************************************************************/ +void GPIP_Set_DAC_DMA_TX_FORMAT_SEL(GPIP_DAC_DMA_TX_FORMAT_Type fmt) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_GPIP_DAC_DMA_TX_FORMAT_TYPE(fmt)); + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_DMA_CONFIG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GPIP_GPDAC_DMA_FORMAT,fmt); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_DMA_CONFIG,tmpVal); +} + +/****************************************************************************//** + * @brief Enable DAC DMA TX + * + * @param None + * + * @return None + * +*******************************************************************************/ +void GPIP_Set_DAC_DMA_TX_Enable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_DMA_CONFIG); + tmpVal=BL_SET_REG_BIT(tmpVal,GPIP_GPDAC_DMA_TX_EN); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_DMA_CONFIG,tmpVal); +} + +/****************************************************************************//** + * @brief Disable DAC DMA TX + * + * @param None + * + * @return None + * +*******************************************************************************/ +void GPIP_Set_DAC_DMA_TX_Disable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_DMA_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,GPIP_GPDAC_DMA_TX_EN); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_DMA_CONFIG,tmpVal); +} + +/****************************************************************************//** + * @brief Disable DAC DMA TX + * + * @param data: The data to be send + * + * @return None + * +*******************************************************************************/ +void GPIP_DAC_DMA_WriteData(uint32_t data) +{ + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_DMA_WDATA,data); +} + +/****************************************************************************//** + * @brief AON and GPIP DAC config + * + * @param cfg: AON and GPIP DAC configuration + * + * @return config success or not + * +*******************************************************************************/ +BL_Err_Type GLB_GPIP_DAC_Init(GLB_GPIP_DAC_Cfg_Type* cfg) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_GLB_DAC_REF_SEL_TYPE(cfg->refSel)); + CHECK_PARAM(IS_GPIP_DAC_MOD_TYPE(cfg->div)); + CHECK_PARAM(IS_GPIP_DAC_DMA_TX_FORMAT_TYPE(cfg->dmaFmt)); + + /* AON Set DAC config */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPDAC_CTRL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_REF_SEL,cfg->refSel); + if(ENABLE==cfg->resetChanA){ + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_GPDACA_RSTN_ANA); + tmpVal=BL_WR_REG(GLB_BASE,GLB_GPDAC_CTRL,tmpVal); + __NOP(); + __NOP(); + __NOP(); + __NOP(); + } + if(ENABLE==cfg->resetChanB){ + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_GPDACB_RSTN_ANA); + tmpVal=BL_WR_REG(GLB_BASE,GLB_GPDAC_CTRL,tmpVal); + __NOP(); + __NOP(); + __NOP(); + __NOP(); + } + + /* AON Clear reset */ + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_GPDACA_RSTN_ANA); + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_GPDACB_RSTN_ANA); + tmpVal=BL_WR_REG(GLB_BASE,GLB_GPDAC_CTRL,tmpVal); + + /* GPIP Set DAC config */ + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_CONFIG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GPIP_GPDAC_MODE,cfg->div); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_CONFIG,tmpVal); + + /* GPIP Set DMA config */ + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_DMA_CONFIG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GPIP_GPDAC_DMA_TX_EN,cfg->dmaEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GPIP_GPDAC_DMA_FORMAT,cfg->dmaFmt); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_DMA_CONFIG,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief AON and GPIP DAC channel A config + * + * @param cfg: AON and GPIP DAC channel A configuration + * + * @return None + * +*******************************************************************************/ +void GLB_GPIP_DAC_Set_ChanA_Config(GLB_GPIP_DAC_ChanA_Cfg_Type *cfg) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_GPIP_DAC_CHANA_SRC_TYPE(cfg->src)); + + /* GPIP select source */ + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_CONFIG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GPIP_GPDAC_CH_A_SEL,cfg->src); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_CONFIG,tmpVal); + + /* GPIP enable or disable channel */ + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_CONFIG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GPIP_GPDAC_EN,cfg->chanEn); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_CONFIG,tmpVal); + + /* AON enable or disable channel */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPDAC_ACTRL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_IOA_EN,cfg->outputEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_A_EN,cfg->chanCovtEn); + tmpVal=BL_WR_REG(GLB_BASE,GLB_GPDAC_ACTRL,tmpVal); +} + +/****************************************************************************//** + * @brief AON and GPIP DAC channel B config + * + * @param cfg: AON and GPIP DAC channel B configuration + * + * @return None + * +*******************************************************************************/ +void GLB_GPIP_DAC_Set_ChanB_Config(GLB_GPIP_DAC_ChanB_Cfg_Type *cfg) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_GPIP_DAC_CHANB_SRC_TYPE(cfg->src)); + + /* GPIP select source */ + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_CONFIG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GPIP_GPDAC_CH_B_SEL,cfg->src); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_CONFIG,tmpVal); + + /* GPIP enable or disable channel */ + tmpVal=BL_RD_REG(GPIP_BASE,GPIP_GPDAC_CONFIG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GPIP_GPDAC_EN2,cfg->chanEn); + BL_WR_REG(GPIP_BASE,GPIP_GPDAC_CONFIG,tmpVal); + + /* AON enable or disable channel */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPDAC_BCTRL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_IOB_EN,cfg->outputEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_B_EN,cfg->chanCovtEn); + tmpVal=BL_WR_REG(GLB_BASE,GLB_GPDAC_BCTRL,tmpVal); +} + +/****************************************************************************//** + * @brief DAC channel A set value + * + * @param val: DAC value + * + * @return None + * +*******************************************************************************/ +void GLB_DAC_Set_ChanA_Value(uint16_t val) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPDAC_DATA); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_A_DATA,val); + tmpVal=BL_WR_REG(GLB_BASE,GLB_GPDAC_DATA,tmpVal); +} + +/****************************************************************************//** + * @brief DAC channel B set value + * + * @param val: DAC value + * + * @return None + * +*******************************************************************************/ +void GLB_DAC_Set_ChanB_Value(uint16_t val) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPDAC_DATA); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_GPDAC_B_DATA,val); + tmpVal=BL_WR_REG(GLB_BASE,GLB_GPDAC_DATA,tmpVal); +} + +/*@} end of group DAC_Public_Functions */ + +/*@} end of group DAC */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_dma.c b/drivers/bl702_driver/std_drv/src/bl702_dma.c new file mode 100644 index 00000000..6d697ccd --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_dma.c @@ -0,0 +1,749 @@ +/** + ****************************************************************************** + * @file bl702_dma.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702.h" +#include "bl702_dma.h" +#include "string.h" +#include "bl702_glb.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup DMA + * @{ + */ + +/** @defgroup DMA_Private_Macros + * @{ + */ +#define DMA_CHANNEL_OFFSET 0x100 +#define DMA_Get_Channel(ch) (DMA_BASE+DMA_CHANNEL_OFFSET+(ch)*0x100) +static intCallback_Type * dmaIntCbfArra[DMA_CH_MAX][DMA_INT_ALL]= { +{NULL, NULL}, +{NULL, NULL}, +{NULL, NULL}, +{NULL, NULL} +}; +static DMA_LLI_Ctrl_Type PingPongListArra[DMA_CH_MAX][2]; + +/*@} end of group DMA_Private_Macros */ + +/** @defgroup DMA_Private_Types + * @{ + */ + +/*@} end of group DMA_Private_Types */ + +/** @defgroup DMA_Private_Variables + * @{ + */ + +/*@} end of group DMA_Private_Variables */ + +/** @defgroup DMA_Global_Variables + * @{ + */ + +/*@} end of group DMA_Global_Variables */ + +/** @defgroup DMA_Private_Fun_Declaration + * @{ + */ + +/*@} end of group DMA_Private_Fun_Declaration */ + +/** @defgroup DMA_Private_Functions + * @{ + */ + +/****************************************************************************//** + * @brief DMA interrupt handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void DMA_ALL_IRQHandler(void) +{ + uint32_t tmpVal; + uint32_t intClr; + uint8_t ch; + /* Get DMA register */ + uint32_t DMAChs = DMA_BASE; + + for(ch=0;chch); + + /* Check the parameters */ + CHECK_PARAM(IS_DMA_CHAN_TYPE(chCfg->ch)); + CHECK_PARAM(IS_DMA_TRANS_WIDTH_TYPE(chCfg->srcTransfWidth)); + CHECK_PARAM(IS_DMA_TRANS_WIDTH_TYPE(chCfg->dstTransfWidth)); + CHECK_PARAM(IS_DMA_BURST_SIZE_TYPE(chCfg->srcBurstSzie)); + CHECK_PARAM(IS_DMA_BURST_SIZE_TYPE(chCfg->dstBurstSzie)); + CHECK_PARAM(IS_DMA_TRANS_DIR_TYPE(chCfg->dir)); + CHECK_PARAM(IS_DMA_PERIPH_REQ_TYPE(chCfg->dstPeriph)); + CHECK_PARAM(IS_DMA_PERIPH_REQ_TYPE(chCfg->srcPeriph)); + + /* Disable clock gate */ + GLB_AHB_Slave1_Clock_Gate(DISABLE,BL_AHB_SLAVE1_DMA); + + /* Config channel config */ + BL_WR_REG(DMAChs, DMA_SRCADDR, chCfg->srcDmaAddr); + BL_WR_REG(DMAChs, DMA_DSTADDR, chCfg->destDmaAddr); + + tmpVal = BL_RD_REG(DMAChs, DMA_CONTROL); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_TRANSFERSIZE, chCfg->transfLength); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_SWIDTH, chCfg->srcTransfWidth); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_DWIDTH, chCfg->dstTransfWidth); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_SBSIZE, chCfg->srcBurstSzie); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_DBSIZE, chCfg->dstBurstSzie); + + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_DST_ADD_MODE, chCfg->dstAddMode); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_DST_MIN_MODE, chCfg->dstMinMode); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_FIX_CNT, chCfg->fixCnt); + + /* FIXME: how to deal with SLargerD */ + tmpVal = BL_CLR_REG_BIT(tmpVal, DMA_SLARGERD); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_SI, chCfg->srcAddrInc); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_DI, chCfg->destAddrInc); + BL_WR_REG(DMAChs, DMA_CONTROL, tmpVal); + + tmpVal = BL_RD_REG(DMAChs, DMA_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_FLOWCNTRL, chCfg->dir); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_DSTPERIPHERAL, chCfg->dstPeriph); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_SRCPERIPHERAL, chCfg->srcPeriph); + BL_WR_REG(DMAChs, DMA_CONFIG, tmpVal); +} + +/****************************************************************************//** + * @brief DMA channel update source memory address and len + * + * @param ch: DMA channel + * @param memAddr: source memoty address + * @param len: source memory data length + * + * @return None + * +*******************************************************************************/ +void DMA_Channel_Update_SrcMemcfg(uint8_t ch, uint32_t memAddr, uint32_t len) +{ + uint32_t tmpVal; + /* Get channel register */ + uint32_t DMAChs = DMA_Get_Channel(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_DMA_CHAN_TYPE(ch)); + + /* config channel config*/ + BL_WR_REG(DMAChs, DMA_SRCADDR, memAddr); + tmpVal = BL_RD_REG(DMAChs, DMA_CONTROL); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_TRANSFERSIZE, len); + BL_WR_REG(DMAChs, DMA_CONTROL, tmpVal); +} + +/****************************************************************************//** + * @brief DMA channel update destination memory address and len + * + * @param ch: DMA channel + * @param memAddr: destination memoty address + * @param len: destination memory data length + * + * @return None + * +*******************************************************************************/ +void DMA_Channel_Update_DstMemcfg(uint8_t ch, uint32_t memAddr, uint32_t len) +{ + uint32_t tmpVal; + /* Get channel register */ + uint32_t DMAChs = DMA_Get_Channel(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_DMA_CHAN_TYPE(ch)); + + /* config channel config*/ + BL_WR_REG(DMAChs, DMA_DSTADDR, memAddr); + tmpVal = BL_RD_REG(DMAChs, DMA_CONTROL); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_TRANSFERSIZE, len); + BL_WR_REG(DMAChs, DMA_CONTROL, tmpVal); +} + +/****************************************************************************//** + * @brief Get DMA channel tranfersize + * + * @param ch: DMA channel + * + * @return tranfersize size + * +*******************************************************************************/ +uint32_t DMA_Channel_TranferSize(uint8_t ch) +{ + /* Get channel register */ + uint32_t DMAChs = DMA_Get_Channel(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_DMA_CHAN_TYPE(ch)); + + return BL_GET_REG_BITS_VAL(BL_RD_REG(DMAChs, DMA_CONTROL), DMA_TRANSFERSIZE); +} + +/****************************************************************************//** + * @brief Get DMA channel busy status + * + * @param ch: DMA channel + * + * @return SET or RESET + * +*******************************************************************************/ +BL_Sts_Type DMA_Channel_Is_Busy(uint8_t ch) +{ + /* Get channel register */ + uint32_t DMAChs = DMA_Get_Channel(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_DMA_CHAN_TYPE(ch)); + + return BL_IS_REG_BIT_SET(BL_RD_REG(DMAChs, DMA_CONFIG), DMA_E) == 1 ? SET:RESET; +} + +/****************************************************************************//** + * @brief DMA enable + * + * @param ch: DMA channel number + * + * @return None + * +*******************************************************************************/ +void DMA_Channel_Enable(uint8_t ch) +{ + uint32_t tmpVal; + /* Get channel register */ + uint32_t DMAChs = DMA_Get_Channel(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_DMA_CHAN_TYPE(ch)); + + tmpVal = BL_RD_REG(DMAChs, DMA_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal, DMA_E); + BL_WR_REG(DMAChs, DMA_CONFIG, tmpVal); +} + +/****************************************************************************//** + * @brief DMA disable + * + * @param ch: DMA channel number + * + * @return None + * +*******************************************************************************/ +void DMA_Channel_Disable(uint8_t ch) +{ + uint32_t tmpVal; + /* Get channel register */ + uint32_t DMAChs = DMA_Get_Channel(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_DMA_CHAN_TYPE(ch)); + + tmpVal = BL_RD_REG(DMAChs, DMA_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal, DMA_E); + BL_WR_REG(DMAChs, DMA_CONFIG, tmpVal); +} + +/****************************************************************************//** + * @brief DMA init LLI transfer + * + * @param ch: DMA channel number + * @param lliCfg: LLI configuration + * + * @return None + * +*******************************************************************************/ +void DMA_LLI_Init(uint8_t ch,DMA_LLI_Cfg_Type *lliCfg) +{ + uint32_t tmpVal; + /* Get channel register */ + uint32_t DMAChs = DMA_Get_Channel(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_DMA_CHAN_TYPE(ch)); + CHECK_PARAM(IS_DMA_TRANS_DIR_TYPE(lliCfg->dir)); + CHECK_PARAM(IS_DMA_PERIPH_REQ_TYPE(lliCfg->dstPeriph)); + CHECK_PARAM(IS_DMA_PERIPH_REQ_TYPE(lliCfg->srcPeriph)); + + /* Disable clock gate */ + GLB_AHB_Slave1_Clock_Gate(DISABLE,BL_AHB_SLAVE1_DMA); + + tmpVal = BL_RD_REG(DMAChs, DMA_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_FLOWCNTRL, lliCfg->dir); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_DSTPERIPHERAL, lliCfg->dstPeriph); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, DMA_SRCPERIPHERAL, lliCfg->srcPeriph); + BL_WR_REG(DMAChs, DMA_CONFIG, tmpVal); +} + +/****************************************************************************//** + * @brief DMA channel update LLI + * + * @param ch: DMA channel number + * @param LLI: LLI addr + * + * @return None + * +*******************************************************************************/ +void DMA_LLI_Update(uint8_t ch, uint32_t LLI) +{ + /* Get channel register */ + uint32_t DMAChs = DMA_Get_Channel(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_DMA_CHAN_TYPE(ch)); + + /* Config channel config */ + //BL_WR_REG(DMAChs, DMA_LLI, LLI); + BL702_MemCpy4((uint32_t*)DMAChs,(uint32_t*)LLI,4); +} + +/****************************************************************************//** + * @brief DMA LLI PingPong Structure Start + * + * @param dmaPpStruct: dma pp struct pointer + * @param Ping_Transfer_len: ping len + * @param Pong_Transfer_len: pong len + * + * @return Succrss or not + * +*******************************************************************************/ +BL_Err_Type DMA_LLI_PpStruct_Set_Transfer_Len(DMA_LLI_PP_Struct *dmaPpStruct,uint16_t Ping_Transfer_len,uint16_t Pong_Transfer_len){ + struct DMA_Control_Reg dmaCtrlRegVal_temp; + + if(Ping_Transfer_len > 4096 || Pong_Transfer_len >4096){ + return ERROR; + } + + dmaCtrlRegVal_temp = PingPongListArra[dmaPpStruct->dmaChan][PING_INDEX].dmaCtrl ; + dmaCtrlRegVal_temp.TransferSize = Ping_Transfer_len; + PingPongListArra[dmaPpStruct->dmaChan][PING_INDEX].dmaCtrl = dmaCtrlRegVal_temp; + + dmaCtrlRegVal_temp = PingPongListArra[dmaPpStruct->dmaChan][PONG_INDEX].dmaCtrl ; + dmaCtrlRegVal_temp.TransferSize = Pong_Transfer_len; + PingPongListArra[dmaPpStruct->dmaChan][PONG_INDEX].dmaCtrl = dmaCtrlRegVal_temp; + + DMA_LLI_Init(dmaPpStruct->dmaChan, dmaPpStruct->DMA_LLI_Cfg); + DMA_LLI_Update(dmaPpStruct->dmaChan, (uint32_t)&PingPongListArra[dmaPpStruct->dmaChan][PING_INDEX]); + + return SUCCESS; + +} + +/****************************************************************************//** + * @brief DMA LLI Start New Transmit for Ping-Pong Buf + * + * @param dmaPpBuf: DMA LLI Ping-Pong Buf + * + * @return None + * +*******************************************************************************/ +void DMA_LLI_PpBuf_Start_New_Transmit(DMA_LLI_PP_Buf *dmaPpBuf) +{ + NVIC_DisableIRQ(DMA_ALL_IRQn); + if(dmaPpBuf->lliListHeader[dmaPpBuf->idleIndex] != NULL){ + DMA_LLI_Update(dmaPpBuf->dmaChan, (uint32_t)dmaPpBuf->lliListHeader[dmaPpBuf->idleIndex]); + DMA_Channel_Enable(dmaPpBuf->dmaChan); + dmaPpBuf->idleIndex = (dmaPpBuf->idleIndex==0)?1:0; + } + NVIC_EnableIRQ(DMA_ALL_IRQn); +} + +/****************************************************************************//** + * @brief DMA LLI Remove Completed Ping-Pong Buf List + * + * @param dmaPpBuf: DMA LLI Ping-Pong Buf + * + * @return Next Ping-Pong Buf List Header + * +*******************************************************************************/ +DMA_LLI_Ctrl_Type * DMA_LLI_PpBuf_Remove_Completed_List(DMA_LLI_PP_Buf *dmaPpBuf) +{ + NVIC_DisableIRQ(DMA_ALL_IRQn); + + dmaPpBuf->lliListHeader[!dmaPpBuf->idleIndex] = NULL; + NVIC_EnableIRQ(DMA_ALL_IRQn); + return dmaPpBuf->lliListHeader[!dmaPpBuf->idleIndex]; +} + +/****************************************************************************//** + * @brief DMA LLI Append Buf to List + * + * @param dmaPpBuf: DMA LLI Ping-Pong Buf + * @param dmaLliList: New LLI Buf to Append + * + * @return None + * +*******************************************************************************/ +void DMA_LLI_PpBuf_Append(DMA_LLI_PP_Buf *dmaPpBuf, DMA_LLI_Ctrl_Type *dmaLliList) +{ + DMA_LLI_Ctrl_Type *pLliList = NULL; + NVIC_DisableIRQ(DMA_ALL_IRQn); + + pLliList = dmaPpBuf->lliListHeader[dmaPpBuf->idleIndex]; + if(pLliList == NULL){ + dmaLliList->nextLLI = 0; + dmaLliList->dmaCtrl.I = 1; + dmaPpBuf->lliListHeader[dmaPpBuf->idleIndex] = dmaLliList; + }else{ + /*Append to last */ + while(pLliList->nextLLI != 0){ + pLliList = (DMA_LLI_Ctrl_Type*)pLliList->nextLLI; + } + pLliList->nextLLI = (uint32_t)dmaLliList; + pLliList->dmaCtrl.I = 0; + dmaLliList->nextLLI = 0; + dmaLliList->dmaCtrl.I = 1; + } + + if(DMA_Channel_Is_Busy(dmaPpBuf->dmaChan) == RESET){ + /* DMA stopped: maybe stop just a few minutes ago(not enter INT due to NVIC_DisableIRQ) + or has already stopped before this function is called */ + if(dmaPpBuf->lliListHeader[!dmaPpBuf->idleIndex] == NULL){ + /* DMA has already stopped before this function is called */ + DMA_LLI_PpBuf_Start_New_Transmit(dmaPpBuf); + } + } + NVIC_EnableIRQ(DMA_ALL_IRQn); +} + +/****************************************************************************//** + * @brief DMA LLi Destroy Ping-Pong Buf + * + * @param dmaPpBuf: DMA LLI Ping-Pong Buf + * + * @return None + * +*******************************************************************************/ +void DMA_LLI_PpBuf_Destroy(DMA_LLI_PP_Buf *dmaPpBuf) +{ + /* DMA LLI Disable */ + DMA_Channel_Disable(dmaPpBuf->dmaChan); + if(dmaPpBuf->lliListHeader[0] != NULL && dmaPpBuf->onTransCompleted != NULL){ + dmaPpBuf->onTransCompleted(dmaPpBuf->lliListHeader[0]); + } + dmaPpBuf->lliListHeader[0] = NULL; + if(dmaPpBuf->lliListHeader[1] != NULL && dmaPpBuf->onTransCompleted != NULL){ + dmaPpBuf->onTransCompleted(dmaPpBuf->lliListHeader[1]); + } + dmaPpBuf->lliListHeader[1] = NULL; + dmaPpBuf->idleIndex = 0; +} + +/****************************************************************************//** + * @brief Mask/Unmask the DMA interrupt + * + * @param ch: DMA channel number + * @param intType: Specifies the interrupt type + * @param intMask: Enable/Disable Specified interrupt type + * + * @return None + * +*******************************************************************************/ +void DMA_IntMask(uint8_t ch,DMA_INT_Type intType, BL_Mask_Type intMask) +{ + uint32_t tmpVal; + /* Get channel register */ + uint32_t DMAChs = DMA_Get_Channel(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_DMA_CHAN_TYPE(ch)); + CHECK_PARAM(IS_DMA_INT_TYPE(intType)); + + switch(intType) + { + case DMA_INT_TCOMPLETED: + if(intMask == UNMASK) + { + /* UNMASK(Enable) this interrupt */ + tmpVal = BL_CLR_REG_BIT(BL_RD_REG(DMAChs, DMA_CONFIG), DMA_ITC); + BL_WR_REG(DMAChs, DMA_CONFIG, tmpVal); + tmpVal = BL_SET_REG_BIT(BL_RD_REG(DMAChs, DMA_CONTROL), DMA_I); + BL_WR_REG(DMAChs, DMA_CONTROL, tmpVal); + } + else + { + /* MASK(Disable) this interrupt */ + tmpVal = BL_SET_REG_BIT(BL_RD_REG(DMAChs, DMA_CONFIG), DMA_ITC); + BL_WR_REG(DMAChs, DMA_CONFIG, tmpVal); + tmpVal = BL_CLR_REG_BIT(BL_RD_REG(DMAChs, DMA_CONTROL), DMA_I); + BL_WR_REG(DMAChs, DMA_CONTROL, tmpVal); + } + break; + case DMA_INT_ERR: + if(intMask == UNMASK) + { + /* UNMASK(Enable) this interrupt */ + tmpVal = BL_CLR_REG_BIT(BL_RD_REG(DMAChs, DMA_CONFIG), DMA_IE); + BL_WR_REG(DMAChs, DMA_CONFIG, tmpVal); + } + else + { + /* MASK(Disable) this interrupt */ + tmpVal = BL_SET_REG_BIT(BL_RD_REG(DMAChs, DMA_CONFIG), DMA_IE); + BL_WR_REG(DMAChs, DMA_CONFIG, tmpVal); + } + break; + case DMA_INT_ALL: + if(intMask == UNMASK) + { + /* UNMASK(Enable) this interrupt */ + tmpVal = BL_RD_REG(DMAChs, DMA_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal, DMA_ITC); + tmpVal = BL_CLR_REG_BIT(tmpVal, DMA_IE); + BL_WR_REG(DMAChs, DMA_CONFIG, tmpVal); + tmpVal = BL_RD_REG(DMAChs, DMA_CONTROL); + tmpVal = BL_SET_REG_BIT(tmpVal, DMA_I); + BL_WR_REG(DMAChs, DMA_CONTROL, tmpVal); + } + else + { + /* MASK(Disable) this interrupt */ + tmpVal = BL_RD_REG(DMAChs, DMA_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal, DMA_ITC); + tmpVal = BL_SET_REG_BIT(tmpVal, DMA_IE); + BL_WR_REG(DMAChs, DMA_CONFIG, tmpVal); + tmpVal = BL_RD_REG(DMAChs, DMA_CONTROL); + tmpVal = BL_CLR_REG_BIT(tmpVal, DMA_I); + BL_WR_REG(DMAChs, DMA_CONTROL, tmpVal); + } + break; + + default: + break; + } +} + +/****************************************************************************//** + * @brief Install DMA interrupt callback function + * + * @param dmaChan: DMA Channel type + * @param intType: DMA interrupt type + * @param cbFun: Pointer to interrupt callback function. The type should be void (*fn)(void) + * + * @return None + * +*******************************************************************************/ +void DMA_Int_Callback_Install(DMA_Chan_Type dmaChan,DMA_INT_Type intType,intCallback_Type* cbFun) +{ + /* Check the parameters */ + CHECK_PARAM(IS_DMA_CHAN_TYPE(dmaChan)); + CHECK_PARAM(IS_DMA_INT_TYPE(intType)); + + dmaIntCbfArra[dmaChan][intType] = cbFun; +} + + + +/****************************************************************************//** + * @brief DMA LLI PingPong Structure Initial + * + * @param dmaPpStruct: DMA LLI PingPong Config Parameter + * + * @return start success or not + * +*******************************************************************************/ +BL_Err_Type DMA_LLI_PpStruct_Init(DMA_LLI_PP_Struct *dmaPpStruct) +{ + //setup lliList + dmaPpStruct->dmaCtrlRegVal.I=1; + dmaPpStruct->trans_index = 0; + + if(dmaPpStruct->DMA_LLI_Cfg->dir == DMA_TRNS_M2P){ + PingPongListArra[dmaPpStruct->dmaChan][PING_INDEX].srcDmaAddr = dmaPpStruct->chache_buf_addr[0]; + PingPongListArra[dmaPpStruct->dmaChan][PING_INDEX].destDmaAddr= dmaPpStruct->operatePeriphAddr; + + PingPongListArra[dmaPpStruct->dmaChan][PONG_INDEX].srcDmaAddr = dmaPpStruct->chache_buf_addr[1]; + PingPongListArra[dmaPpStruct->dmaChan][PONG_INDEX].destDmaAddr= dmaPpStruct->operatePeriphAddr; + } + else if(dmaPpStruct->DMA_LLI_Cfg->dir == DMA_TRNS_P2M){ + PingPongListArra[dmaPpStruct->dmaChan][PING_INDEX].srcDmaAddr = dmaPpStruct->operatePeriphAddr; + PingPongListArra[dmaPpStruct->dmaChan][PING_INDEX].destDmaAddr= dmaPpStruct->chache_buf_addr[0]; + + PingPongListArra[dmaPpStruct->dmaChan][PONG_INDEX].srcDmaAddr = dmaPpStruct->operatePeriphAddr; + PingPongListArra[dmaPpStruct->dmaChan][PONG_INDEX].destDmaAddr = dmaPpStruct->chache_buf_addr[1]; + }else{ + return ERROR; + /*V1.0 version DMA LLI Ping-Pong structure not support P2P & M2M MODE*/ + } + + PingPongListArra[dmaPpStruct->dmaChan][PING_INDEX].nextLLI = (uint32_t)&PingPongListArra[dmaPpStruct->dmaChan][PONG_INDEX]; + PingPongListArra[dmaPpStruct->dmaChan][PING_INDEX].dmaCtrl = dmaPpStruct->dmaCtrlRegVal; + + PingPongListArra[dmaPpStruct->dmaChan][PONG_INDEX].nextLLI = (uint32_t)&PingPongListArra[dmaPpStruct->dmaChan][PING_INDEX]; + PingPongListArra[dmaPpStruct->dmaChan][PONG_INDEX].dmaCtrl = dmaPpStruct->dmaCtrlRegVal; + + DMA_LLI_Init(dmaPpStruct->dmaChan, dmaPpStruct->DMA_LLI_Cfg); + + DMA_LLI_Update(dmaPpStruct->dmaChan, (uint32_t)&PingPongListArra[dmaPpStruct->dmaChan][PING_INDEX]); + + return SUCCESS; +} + + +/****************************************************************************//** + * @brief DMA LLI PingPong Structure Start + * + * @param dmaPpStruct: None + * + * @return None + * +*******************************************************************************/ +void DMA_LLI_PpStruct_Start(DMA_LLI_PP_Struct *dmaPpStruct){ + DMA_Channel_Enable(dmaPpStruct->dmaChan); +} + + +/****************************************************************************//** + * @brief DMA LLI PingPong Structure Stop + * + * @param dmaPpStruct: None + * + * @return None + * +*******************************************************************************/ +void DMA_LLI_PpStruct_Stop(DMA_LLI_PP_Struct *dmaPpStruct){ + DMA_Channel_Disable(dmaPpStruct->dmaChan); +} + + + +/*@} end of group DMA_Public_Functions */ + +/*@} end of group DMA */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_ef_ctrl.c b/drivers/bl702_driver/std_drv/src/bl702_ef_ctrl.c new file mode 100644 index 00000000..ae3c754e --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_ef_ctrl.c @@ -0,0 +1,1694 @@ +/** + ****************************************************************************** + * @file bl702_sec_ef_ctrl.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "string.h" +#include "bl702_ef_ctrl.h" +#include "ef_data_0_reg.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SEC_EF_CTRL + * @{ + */ + +/** @defgroup SEC_EF_CTRL_Private_Macros + * @{ + */ +#define EF_CTRL_EFUSE_CYCLE_PROTECT (0xbf<<24) +#define EF_CTRL_EFUSE_CTRL_PROTECT (0xbf<<8) +#define EF_CTRL_DFT_TIMEOUT_VAL (160*1000) +#ifndef BOOTROM +#define EF_CTRL_LOAD_BEFORE_READ_R0 EF_Ctrl_Load_Efuse_R0() +#else +#define EF_CTRL_LOAD_BEFORE_READ_R0 +#endif +#define EF_CTRL_DATA0_CLEAR EF_Ctrl_Clear(0,EF_CTRL_EFUSE_R0_SIZE/4) + +/*@} end of group SEC_EF_CTRL_Private_Macros */ + +/** @defgroup SEC_EF_CTRL_Private_Types + * @{ + */ + +/*@} end of group SEC_EF_CTRL_Private_Types */ + +/** @defgroup SEC_EF_CTRL_Private_Variables + * @{ + */ + +/*@} end of group SEC_EF_CTRL_Private_Variables */ + +/** @defgroup SEC_EF_CTRL_Global_Variables + * @{ + */ + +/*@} end of group SEC_EF_CTRL_Global_Variables */ + +/** @defgroup SEC_EF_CTRL_Private_Fun_Declaration + * @{ + */ + +/*@} end of group SEC_EF_CTRL_Private_Fun_Declaration */ + +/** @defgroup SEC_EF_CTRL_Private_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Switch efuse region 0 control to AHB clock + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +/* static */ void ATTR_TCM_SECTION EF_Ctrl_Sw_AHB_Clk_0(void) +{ + uint32_t tmpVal; + uint32_t timeout=EF_CTRL_DFT_TIMEOUT_VAL; + + while(EF_Ctrl_Busy()==SET){ + timeout--; + if(timeout==0){ + break; + } + } + + tmpVal=(EF_CTRL_EFUSE_CTRL_PROTECT)| \ + (EF_CTRL_OP_MODE_AUTO<ef_dbg_mode); + tmpVal= BL_SET_REG_BITS_VAL(tmpVal,EF_DATA_0_EF_DBG_JTAG_0_DIS,cfg->ef_dbg_jtag_0_dis); + tmpVal= BL_SET_REG_BITS_VAL(tmpVal,EF_DATA_0_EF_SBOOT_EN,cfg->ef_sboot_en); + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_CFG_0,tmpVal); + + if(program){ + EF_Ctrl_Program_Efuse_0(); + } +} + +/****************************************************************************//** + * @brief Efuse read security configuration + * + * @param cfg: security configuration pointer + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Read_Secure_Cfg(EF_Ctrl_Sec_Param_Type *cfg) +{ + uint32_t tmpVal; + + /* Trigger read data from efuse */ + EF_CTRL_LOAD_BEFORE_READ_R0; + + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_CFG_0); + + cfg->ef_dbg_mode =(EF_Ctrl_Dbg_Mode_Type)BL_GET_REG_BITS_VAL(tmpVal,EF_DATA_0_EF_DBG_MODE); + cfg->ef_dbg_jtag_0_dis=BL_GET_REG_BITS_VAL(tmpVal,EF_DATA_0_EF_DBG_JTAG_0_DIS); + cfg->ef_sboot_en =BL_GET_REG_BITS_VAL(tmpVal,EF_DATA_0_EF_SBOOT_EN); +} + +/****************************************************************************//** + * @brief Efuse write security boot configuration + * + * @param sign[1]: Sign configuration pointer + * @param aes[1]: AES configuration pointer + * @param program: program to efuse entity or not + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Write_Secure_Boot(EF_Ctrl_Sign_Type sign[1], EF_Ctrl_SF_AES_Type aes[1],uint8_t program) +{ + uint32_t tmpVal; + + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_CFG_0); + + tmpVal= BL_SET_REG_BITS_VAL(tmpVal,EF_DATA_0_EF_SBOOT_SIGN_MODE,sign[0]); + + if(aes[0]!=EF_CTRL_SF_AES_NONE){ + tmpVal= BL_SET_REG_BITS_VAL(tmpVal,EF_DATA_0_EF_SF_AES_MODE,aes[0]); + tmpVal= BL_SET_REG_BITS_VAL(tmpVal,EF_DATA_0_EF_CPU0_ENC_EN,1); + } + + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_CFG_0,tmpVal); + + if( program){ + EF_Ctrl_Program_Efuse_0(); + } +} + +/****************************************************************************//** + * @brief Efuse write security boot configuration + * + * @param sign[1]: Sign configuration pointer + * @param aes[1]: AES configuration pointer + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Read_Secure_Boot(EF_Ctrl_Sign_Type sign[1], EF_Ctrl_SF_AES_Type aes[1]) +{ + uint32_t tmpVal; + uint32_t tmpVal2; + + /* Trigger read data from efuse */ + EF_CTRL_LOAD_BEFORE_READ_R0; + + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_CFG_0); + + tmpVal2=BL_GET_REG_BITS_VAL(tmpVal,EF_DATA_0_EF_SBOOT_SIGN_MODE); + sign[0]=(EF_Ctrl_Sign_Type)(tmpVal2&0x01); + + tmpVal2=BL_GET_REG_BITS_VAL(tmpVal,EF_DATA_0_EF_CPU0_ENC_EN); + if(tmpVal2){ + aes[0]=(EF_Ctrl_SF_AES_Type)BL_GET_REG_BITS_VAL(tmpVal,EF_DATA_0_EF_SF_AES_MODE); + }else{ + aes[0]=EF_CTRL_SF_AES_NONE; + } +} + +/****************************************************************************//** + * @brief Analog Trim parity calculate + * + * @param val: Value of efuse trim data + * @param len: Length of bit to calculate + * + * @return Parity bit value + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +uint8_t ATTR_CLOCK_SECTION EF_Ctrl_Get_Trim_Parity(uint32_t val,uint8_t len) +{ + uint8_t cnt=0; + uint8_t i=0; + + for(i=0;itrimRc32mCodeFrExt=(tmpVal>>10)&0xff; + trim->trimRc32mCodeFrExtParity=(tmpVal>>18)&0x01; + trim->trimRc32mExtCodeEn=(tmpVal>>19)&0x01; +} +#endif + +/****************************************************************************//** + * @brief Efuse read RC32K trim + * + * @param trim: Trim data pointer + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_CLOCK_SECTION EF_Ctrl_Read_RC32K_Trim( Efuse_Ana_RC32K_Trim_Type *trim) +{ + uint32_t tmpVal=0; + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + EF_CTRL_LOAD_BEFORE_READ_R0; + + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_ANA_TRIM_0); + trim->trimRc32kCodeFrExt=(tmpVal>>20)&0x3ff; + trim->trimRc32kCodeFrExtParity=(tmpVal>>30)&0x01; + trim->trimRc32kExtCodeEn=(tmpVal>>31)&0x01; +} +#endif + + +/****************************************************************************//** + * @brief Efuse read TSEN trim + * + * @param trim: Trim data pointer + * + * @return None + * +*******************************************************************************/ +void ATTR_CLOCK_SECTION EF_Ctrl_Read_TSEN_Trim( Efuse_TSEN_Refcode_Corner_Type *trim) +{ + uint32_t tmpVal=0; + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + EF_CTRL_LOAD_BEFORE_READ_R0; + + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_5_W3); + trim->tsenRefcodeCornerEn=tmpVal&0x01; + + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_LOCK); + trim->tsenRefcodeCorner=tmpVal&0xfff; + trim->tsenRefcodeCornerParity=(tmpVal >> 12)&0x01; + + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_5_W1); + trim->tsenRefcodeCornerVersion=(tmpVal >> 30)&0x01; +} + + +/****************************************************************************//** + * @brief Efuse read ADC Gain trim + * + * @param trim: Trim data pointer + * + * @return None + * +*******************************************************************************/ +void ATTR_CLOCK_SECTION EF_Ctrl_Read_ADC_Gain_Trim( Efuse_ADC_Gain_Coeff_Type *trim) +{ + uint32_t tmpVal=0; + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + EF_CTRL_LOAD_BEFORE_READ_R0; + + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_5_W3); + trim -> adcGainCoeff = (tmpVal >> 1) & 0xfff; + trim -> adcGainCoeffParity = (tmpVal >> 13) & 0x01; + trim -> adcGainCoeffEn = (tmpVal >> 14) & 0x01; +} + + +/****************************************************************************//** + * @brief Efuse write software usage + * + * @param index: index of software usage + * @param usage: usage value + * @param program: program to efuse entity or not + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Write_Sw_Usage(uint32_t index, uint32_t usage,uint8_t program) +{ + /* switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + if(index==0){ + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_SW_USAGE_0,usage); + } + + if(program){ + EF_Ctrl_Program_Efuse_0(); + } +} + +/****************************************************************************//** + * @brief Efuse read software usage + * + * @param index: index of software usage + * @param usage: usage value + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Read_Sw_Usage( uint32_t index, uint32_t *usage) +{ + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + EF_CTRL_LOAD_BEFORE_READ_R0; + + if(index==0){ + *usage=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_SW_USAGE_0); + } +} + +/****************************************************************************//** + * @brief Efuse read software usage + * + * @param index: index of software usage + * @param program: usage value + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Writelock_Sw_Usage(uint32_t index, uint8_t program) +{ + uint32_t tmpVal; + + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_LOCK); + + if(index==0){ + tmpVal= BL_SET_REG_BIT(tmpVal,EF_DATA_0_WR_LOCK_SW_USAGE_0); + } + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_LOCK,tmpVal); + + if(program){ + EF_Ctrl_Program_Efuse_0(); + } +} + +/****************************************************************************//** + * @brief Efuse write MAC address + * + * @param mac[6]: MAC address buffer + * @param program: program to efuse entity or not + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Write_MAC_Address(uint8_t mac[6],uint8_t program) +{ + uint8_t *maclow=(uint8_t *)mac; + uint8_t *machigh=(uint8_t *)(mac+4); + uint32_t tmpVal; + + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + /* The low 32 bits */ + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_WIFI_MAC_LOW,BL_RDWD_FRM_BYTEP(maclow)); + /* The high 16 bits */ + tmpVal=machigh[0]+(machigh[1]<<8); + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_WIFI_MAC_HIGH,tmpVal); + + if( program){ + EF_Ctrl_Program_Efuse_0(); + } +} + +/****************************************************************************//** + * @brief Efuse Ctrl get zero bit count + * + * @param val: Value to count + * + * @return Zero bit count + * +*******************************************************************************/ +static uint32_t EF_Ctrl_Get_Byte_Zero_Cnt(uint8_t val) +{ + uint32_t cnt=0; + uint32_t i=0; + for(i=0;i<8;i++){ + if((val&(1<>8)&0xff; + machigh[2]=(tmpVal>>16)&0xff; + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Efuse lock writing for MAC address + * + * @param program: program to efuse entity or not + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Writelock_MAC_Address(uint8_t program) +{ + uint32_t tmpVal; + + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_LOCK); + tmpVal= BL_SET_REG_BIT(tmpVal,EF_DATA_0_WR_LOCK_WIFI_MAC); + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_LOCK,tmpVal); + + if( program){ + EF_Ctrl_Program_Efuse_0(); + } +} + +/****************************************************************************//** + * @brief Whether a value bits is all zero + * + * @param val: value to check + * @param start: start bit + * @param len: total length of bits to check + * + * @return 1 for all bits zero 0 for others + * +*******************************************************************************/ +uint8_t EF_Ctrl_Is_All_Bits_Zero(uint32_t val,uint8_t start,uint8_t len) +{ + uint32_t mask=0; + + val=(val>>start); + if(len>=32){ + mask=0xffffffff; + }else{ + mask=(1<=3){ + return ERROR; + } + + /* Change to local order */ + for(i=0;i<3;i++){ + tmpVal=mac[i]; + mac[i]=mac[5-i]; + mac[5-i]=tmpVal; + } + if(slot==2){ + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + }else{ + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + } + + /* The low 32 bits */ + if(slot==0){ + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_WIFI_MAC_LOW,BL_RDWD_FRM_BYTEP(maclow)); + }else if(slot==1){ + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_5_W0,BL_RDWD_FRM_BYTEP(maclow)); + }else if(slot==2){ + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_DBG_PWD_LOW,BL_RDWD_FRM_BYTEP(maclow)); + } + /* The high 16 bits */ + tmpVal=machigh[0]+(machigh[1]<<8); + cnt=0; + for(i=0;i<6;i++){ + cnt+=EF_Ctrl_Get_Byte_Zero_Cnt(mac[i]); + } + tmpVal|=((cnt&0x3f)<<16); + + if(slot==0){ + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_WIFI_MAC_HIGH,tmpVal); + }else if(slot==1){ + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_5_W1,tmpVal); + }else if(slot==2){ + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_DBG_PWD_HIGH,tmpVal); + } + + if( program){ + if(slot==2){ + EF_Ctrl_Program_Efuse_0(); + }else{ + EF_Ctrl_Program_Efuse_0(); + } + } + return SUCCESS; +} + +/****************************************************************************//** + * @brief Efuse read optional MAC address + * + * @param slot: MAC address slot + * @param mac[6]: MAC address buffer + * @param reload: Whether reload + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EF_Ctrl_Read_MAC_Address_Opt(uint8_t slot,uint8_t mac[6],uint8_t reload) +{ + uint8_t *maclow=(uint8_t *)mac; + uint8_t *machigh=(uint8_t *)(mac+4); + uint32_t tmpVal=0; + uint32_t i=0; + uint32_t cnt=0; + + if(slot>=3){ + return ERROR; + } + + /* Trigger read data from efuse */ + if(reload){ + if(slot==2){ + EF_CTRL_LOAD_BEFORE_READ_R0; + }else{ + EF_CTRL_LOAD_BEFORE_READ_R0; + } + } + + if(slot==0){ + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_WIFI_MAC_LOW); + }else if(slot==1){ + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_5_W0); + }else if(slot==2){ + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_DBG_PWD_LOW); + } + BL_WRWD_TO_BYTEP(maclow,tmpVal); + + if(slot==0){ + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_WIFI_MAC_HIGH); + }else if(slot==1){ + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_5_W1); + }else if(slot==2){ + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_DBG_PWD_HIGH); + } + machigh[0]=tmpVal&0xff; + machigh[1]=(tmpVal>>8)&0xff; + + /* Check parity */ + for(i=0;i<6;i++){ + cnt+=EF_Ctrl_Get_Byte_Zero_Cnt(mac[i]); + } + if((cnt&0x3f)==((tmpVal>>16)&0x3f)){ + /* Change to network order */ + for(i=0;i<3;i++){ + tmpVal=mac[i]; + mac[i]=mac[5-i]; + mac[5-i]=tmpVal; + } + return SUCCESS; + }else{ + return ERROR; + } +} + +/****************************************************************************//** + * @brief Efuse read chip ID + * + * @param chipID[8]: Chip ID buffer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EF_Ctrl_Read_Chip_ID(uint8_t chipID[8]) +{ + return EF_Ctrl_Read_MAC_Address(chipID); +} + +/****************************************************************************//** + * @brief Efuse get chip PID&&VID + * + * @param pid[1]: Chip PID + * @param vid[1]: Chip VID + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EF_Ctrl_Get_Chip_PIDVID(uint16_t pid[1],uint16_t vid[1]) +{ + uint32_t tmpVal; + + /* Trigger read data from efuse */ + EF_CTRL_LOAD_BEFORE_READ_R0; + + tmpVal = BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_4_W3); + pid[0] = (uint16_t)(tmpVal&0xFFFF); + vid[0] = (uint16_t)(tmpVal>>16); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Efuse get customer PID&&VID + * + * @param pid[1]: Customer PID + * @param vid[1]: Customer VID + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EF_Ctrl_Get_Customer_PIDVID(uint16_t pid[1],uint16_t vid[1]) +{ + uint32_t tmpVal; + + /* Trigger read data from efuse */ + EF_CTRL_LOAD_BEFORE_READ_R0; + + tmpVal = BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_4_W2); + pid[0] = (uint16_t)(tmpVal&0xFFFF); + vid[0] = (uint16_t)(tmpVal>>16); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Efuse read device info + * + * @param deviceInfo: Device info pointer + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Read_Device_Info(Efuse_Device_Info_Type *deviceInfo) +{ + uint32_t tmpVal; + uint32_t *p=(uint32_t *)deviceInfo; + + /* Trigger read data from efuse */ + EF_CTRL_LOAD_BEFORE_READ_R0; + + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_5_W2); + *p=tmpVal; +} + +/****************************************************************************//** + * @brief Whether Capcode is empty + * + * @param reload: Whether reload + * + * @return 0 for all slots full,1 for others + * +*******************************************************************************/ +uint8_t EF_Ctrl_Is_CapCode_Empty(uint8_t reload) +{ + uint32_t tmp=0xffffffff; + + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + if(reload){ + EF_CTRL_LOAD_BEFORE_READ_R0; + } + + tmp=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_ANA_TRIM_0); + return(EF_Ctrl_Is_All_Bits_Zero(tmp,2,8)); +} + +/****************************************************************************//** + * @brief Efuse write Cap code + * + * @param code: Cap code value + * @param program: Whether program + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EF_Ctrl_Write_CapCode_Opt(uint8_t code,uint8_t program) +{ + uint32_t tmp; + uint8_t trim; + + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + EF_CTRL_LOAD_BEFORE_READ_R0; + + tmp=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_ANA_TRIM_0); + + trim=code; + trim|=((EF_Ctrl_Get_Trim_Parity(code,6))<<6); + trim|=(1<<7); + + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_ANA_TRIM_0,tmp|(trim<<2)); + + if(program){ + EF_Ctrl_Program_Efuse_0(); + } + while(SET==EF_Ctrl_Busy()); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Efuse read Cap code + * + * @param code: Cap code pointer + * @param reload: Whether reload + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EF_Ctrl_Read_CapCode_Opt(uint8_t *code,uint8_t reload) +{ + uint32_t tmp; + Efuse_Capcode_Info_Type *trim=(Efuse_Capcode_Info_Type *)&tmp; + + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + if(reload){ + EF_CTRL_LOAD_BEFORE_READ_R0; + } + + tmp=(BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_ANA_TRIM_0))>>2; + + if(trim->en){ + if(trim->parity==EF_Ctrl_Get_Trim_Parity(trim->capCode,6)){ + *code=trim->capCode; + return SUCCESS; + } + } + return ERROR; +} + +/****************************************************************************//** + * @brief Whether power offset slot is empty + * + * @param slot: Power offset code slot + * @param reload: Whether reload + * + * @return 0 for all slots full,1 for others + * +*******************************************************************************/ +uint8_t EF_Ctrl_Is_PowerOffset_Slot_Empty(uint8_t slot,uint8_t reload) +{ + uint32_t tmp1=0xffffffff; + uint32_t part1Empty=0,part2Empty=0; + + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + if(reload){ + EF_CTRL_LOAD_BEFORE_READ_R0; + } + + if(slot==0){ + tmp1=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_5_W3); + part1Empty=(EF_Ctrl_Is_All_Bits_Zero(tmp1,15,17)); + part2Empty=1; + }else if(slot==1){ + tmp1=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_4_W1); + part1Empty=(EF_Ctrl_Is_All_Bits_Zero(tmp1,0,16)); + + tmp1=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_ANA_TRIM_0); + part2Empty=(EF_Ctrl_Is_All_Bits_Zero(tmp1,0,1)); + }else if(slot==2){ + tmp1=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_4_W1); + part1Empty=(EF_Ctrl_Is_All_Bits_Zero(tmp1,16,16)); + + tmp1=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_ANA_TRIM_0); + part2Empty=(EF_Ctrl_Is_All_Bits_Zero(tmp1,1,1)); + } + + return (part1Empty&&part2Empty); +} + +/****************************************************************************//** + * @brief Efuse write power offset + * + * @param slot: Power offset slot + * @param pwrOffset[3]: Power offset value array + * @param program: Whether program + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EF_Ctrl_Write_PowerOffset_Opt(uint8_t slot,int8_t pwrOffset[3],uint8_t program) +{ + uint64_t tmp=0; + uint32_t k=0; + uint64_t Value=0; + uint8_t parity; + + if(slot>=3){ + return ERROR; + } + + for(k=0;k<3;k++){ + /* Use 5 bits as signed value */ + if(pwrOffset[k]>15){ + pwrOffset[k]=15; + } + if(pwrOffset[k]<-16){ + pwrOffset[k]=-16; + } + tmp=((uint64_t)((pwrOffset[k])&0x1f))<<(k*5); + Value+=tmp; + } + parity=EF_Ctrl_Get_Trim_Parity(Value,15); + + if(slot==0){ + tmp=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_5_W3); + tmp|=(Value<<16); + tmp|=(1<<15); + tmp|=(uint32_t)(parity<<31); + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_5_W3,tmp); + }else if(slot==1){ + tmp=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_4_W1); + tmp|=(Value<<0); + tmp|=(uint32_t)(parity<<15); + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_4_W1,tmp); + + tmp=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_ANA_TRIM_0); + tmp|=(1<<0); + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_ANA_TRIM_0,tmp); + }else if(slot==2){ + tmp=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_4_W1); + tmp|=(Value<<16); + tmp|=(uint32_t)(parity<<31); + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_4_W1,tmp); + + tmp=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_ANA_TRIM_0); + tmp|=(1<<1); + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_EF_ANA_TRIM_0,tmp); + } + + if(program){ + EF_Ctrl_Program_Efuse_0(); + } + + while(SET==EF_Ctrl_Busy()); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Efuse read poweroffset value + * + * @param slot: Power offset slot + * @param pwrOffset[3]: Power offset array + * @param reload: Whether reload + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EF_Ctrl_Read_PowerOffset_Opt(uint8_t slot,int8_t pwrOffset[3],uint8_t reload) +{ + uint64_t pwrOffsetValue=0; + + uint32_t tmp = 0,k; + uint8_t en=0,parity=0; + + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + if(reload){ + EF_CTRL_LOAD_BEFORE_READ_R0; + } + + if(slot==0){ + tmp=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_5_W3); + en=(tmp>>15)&0x01; + pwrOffsetValue=(tmp>>16)&0x7fff; + parity=(tmp>>31)&0x01; + }else if(slot==1){ + tmp=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_4_W1); + pwrOffsetValue=(tmp>>0)&0x7fff; + parity=(tmp>>15)&0x01; + + tmp=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_ANA_TRIM_0); + en=(tmp>>0)&0x01; + }else if(slot==2){ + tmp=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_KEY_SLOT_4_W1); + pwrOffsetValue=(tmp>>16)&0x7fff; + parity=(tmp>>31)&0x01; + + tmp=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_EF_ANA_TRIM_0); + en=(tmp>>1)&0x01; + } + + if(en){ + if(parity==EF_Ctrl_Get_Trim_Parity(pwrOffsetValue,15)){ + for(k=0;k<3;k++){ + tmp=(pwrOffsetValue>>(k*5))&0x1f; + if(tmp>=16){ + pwrOffset[k]=tmp-32; + }else{ + pwrOffset[k]=tmp; + } + } + return SUCCESS; + } + } + return ERROR; +} + +/****************************************************************************//** + * @brief Efuse write AES key + * + * @param index: index of key slot + * @param keyData: key data buffer + * @param len: key data length in words + * @param program: program to efuse entity or not + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Write_AES_Key(uint8_t index,uint32_t *keyData,uint32_t len,uint8_t program) +{ + uint32_t *pAESKeyStart0=(uint32_t *)(EF_DATA_BASE+0x1C); + + if(index>5){ + return; + } + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + /* Every key is 4 words len*/ + BL702_MemCpy4(pAESKeyStart0+index*4,keyData,len); + + if( program){ + EF_Ctrl_Program_Efuse_0(); + } +} + +/****************************************************************************//** + * @brief Efuse read AES key from specified region and index + * + * @param index: index of key slot + * @param keyData: key data buffer + * @param len: key data length in words + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Read_AES_Key(uint8_t index,uint32_t *keyData,uint32_t len) +{ + uint32_t *pAESKeyStart0=(uint32_t *)(EF_DATA_BASE+0x1C); + + if(index>5){ + return; + } + /* Trigger read data from efuse*/ + EF_CTRL_LOAD_BEFORE_READ_R0; + + /* Every key is 4 words len*/ + BL702_MemCpy4(keyData,pAESKeyStart0+index*4,len); +} + +/****************************************************************************//** + * @brief Efuse lock writing for aes key + * + * @param index: index of key slot + * @param program: program to efuse entity or not + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Writelock_AES_Key(uint8_t index,uint8_t program) +{ + uint32_t tmpVal; + + if(index>5){ + return; + } + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_LOCK); + if(index<=3){ + tmpVal|=(1<<(index+19)); + }else{ + tmpVal|=(1<<(index+19)); + tmpVal|=(1<<(index-4+13)); + } + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_LOCK,tmpVal); + + if( program){ + EF_Ctrl_Program_Efuse_0(); + } +} + +/****************************************************************************//** + * @brief Efuse lock reading for aes key + * + * @param index: index of key slot + * @param program: program to efuse entity or not + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Readlock_AES_Key(uint8_t index,uint8_t program) +{ + uint32_t tmpVal; + + if(index>5){ + return; + } + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + tmpVal=BL_RD_REG(EF_DATA_BASE,EF_DATA_0_LOCK); + tmpVal|=(1<<(index+26)); + BL_WR_REG(EF_DATA_BASE,EF_DATA_0_LOCK,tmpVal); + + if( program){ + EF_Ctrl_Program_Efuse_0(); + } +} + +/****************************************************************************//** + * @brief Program data to efuse region 0 + * + * @param index: index of efuse in word + * @param data: data buffer + * @param len: data length + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Program_Direct_R0(uint32_t index, uint32_t *data, uint32_t len) +{ + uint32_t *pEfuseStart0=(uint32_t *)(EF_DATA_BASE+0x00); + + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + /* Add delay for CLK to be stable */ + BL702_Delay_US(4); + + BL702_MemCpy4(pEfuseStart0+index,data,len); + + EF_Ctrl_Program_Efuse_0(); +} + +/****************************************************************************//** + * @brief Read data from efuse region 0 + * + * @param index: index of efuse in word + * @param data: data buffer + * @param len: data length + * + * @return None + * +*******************************************************************************/ +void EF_Ctrl_Read_Direct_R0(uint32_t index, uint32_t *data, uint32_t len) +{ + uint32_t *pEfuseStart0=(uint32_t *)(EF_DATA_BASE+0x00); + + EF_CTRL_LOAD_BEFORE_READ_R0; + + BL702_MemCpy4(data,pEfuseStart0+index,len); +} + +/****************************************************************************//** + * @brief Clear efuse data register + * + * @param index: index of efuse in word + * @param len: data length + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION EF_Ctrl_Clear(uint32_t index, uint32_t len) +{ + uint32_t *pEfuseStart0=(uint32_t *)(EF_DATA_BASE+0x00); + uint32_t i=0; + + /* Switch to AHB clock */ + EF_Ctrl_Sw_AHB_Clk_0(); + + /* Clear data */ + for(i=0;i
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702.h" +#include "bl702_emac.h" +#include "bl702_glb.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup EMAC + * @{ + */ + +/** @defgroup EMAC_Private_Macros + * @{ + */ +#define PHY_MAX_RETRY (0x3F0) + +/*@} end of group EMAC_Private_Macros */ + +/** @defgroup EMAC_Private_Types + * @{ + */ + +/*@} end of group EMAC_Private_Types */ + +/** @defgroup EMAC_Private_Variables + * @{ + */ +static intCallback_Type * emacIntCbfArra[EMAC_INT_CNT]={NULL}; + +/*@} end of group EMAC_Private_Variables */ + +/** @defgroup EMAC_Global_Variables + * @{ + */ + +/*@} end of group EMAC_Global_Variables */ + +/** @defgroup EMAC_Private_Fun_Declaration + * @{ + */ + +/*@} end of group EMAC_Private_Fun_Declaration */ + +/** @defgroup EMAC_Private_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Set MAC Address + * + * @param macAddr[6]: MAC address buffer array + * + * @return None + * +*******************************************************************************/ +static void EMAC_SetMACAddres(uint8_t macAddr[6]) +{ + BL_WR_REG(EMAC_BASE, EMAC_MAC_ADDR1,(macAddr[0]<<8)|macAddr[1]); + BL_WR_REG(EMAC_BASE, EMAC_MAC_ADDR0,(macAddr[2]<<24)|(macAddr[3]<<16)|(macAddr[4]<<8)|(macAddr[5]<<0)); +} + +/****************************************************************************//** + * @brief Read PHY register + * + * @param phyReg: PHY register + * @param regValue: PHY register value pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_Phy_Read(uint16_t phyReg, uint16_t *regValue) +{ + uint32_t tmpVal; + + /* Set Register Address */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MIIADDRESS); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,EMAC_RGAD,phyReg); + BL_WR_REG(EMAC_BASE, EMAC_MIIADDRESS,tmpVal); + + /* Trigger read */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MIICOMMAND); + tmpVal = BL_SET_REG_BIT(tmpVal,EMAC_RSTAT); + BL_WR_REG(EMAC_BASE, EMAC_MIICOMMAND,tmpVal); + + BL_DRV_DUMMY; + + do{ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MIISTATUS); + BL702_Delay_US(16); + }while(BL_IS_REG_BIT_SET(tmpVal, EMAC_MIIM_BUSY)); + + + *regValue=BL_RD_REG(EMAC_BASE, EMAC_MIIRX_DATA); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Write PHY register + * + * @param phyReg: PHY register + * @param regValue: PHY register value + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_Phy_Write(uint16_t phyReg, uint16_t regValue) +{ + uint32_t tmpVal; + + /* Set Register Address */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MIIADDRESS); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,EMAC_RGAD,phyReg); + BL_WR_REG(EMAC_BASE, EMAC_MIIADDRESS,tmpVal); + + /* Set Write data */ + BL_WR_REG(EMAC_BASE, EMAC_MIITX_DATA,regValue); + + /* Trigger write */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MIICOMMAND); + tmpVal = BL_SET_REG_BIT(tmpVal,EMAC_WCTRLDATA); + BL_WR_REG(EMAC_BASE, EMAC_MIICOMMAND,tmpVal); + + BL_DRV_DUMMY; + + do{ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MIISTATUS); + }while(BL_IS_REG_BIT_SET(tmpVal, EMAC_MIIM_BUSY)); + + + return SUCCESS; +} + +BL_Err_Type EMAC_Phy_Reset(void) +{ + int timeout = 65536UL * 32; + uint16_t regval = PHY_RESET; + + if(EMAC_Phy_Write(PHY_BCR, PHY_RESET) != SUCCESS){ + return ERROR; + } + + for (; timeout; timeout --) { + if (SUCCESS != EMAC_Phy_Read(PHY_BCR, ®val)) { + return ERROR; + } + if (!(regval & PHY_RESET)) { + return SUCCESS; + } + } + + return TIMEOUT; +} + +BL_Err_Type EMAC_Phy_AutoNegotiate(ETHPHY_CFG_Type *cfg) +{ + uint16_t regval = 0; + uint16_t advertise = 0; + uint16_t lpa = 0; + uint32_t timeout = PHY_MAX_RETRY; + + if (SUCCESS != EMAC_Phy_Read(PHY_PHYID1, ®val)) { + return ERROR; + } + + if (SUCCESS != EMAC_Phy_Read(PHY_PHYID2, ®val)) { + return ERROR; + } + + if (SUCCESS != EMAC_Phy_Read(PHY_BCR, ®val)) { + return ERROR; + } + + regval &= ~PHY_AUTONEGOTIATION; + regval &= ~(PHY_LOOPBACK | PHY_POWERDOWN); + regval |= PHY_ISOLATE; + if(EMAC_Phy_Write(PHY_BCR, regval) != SUCCESS){ + return ERROR; + } + + /* set advertisement mode */ + advertise = PHY_ADVERTISE_100BASETXFULL | PHY_ADVERTISE_100BASETXHALF | + PHY_ADVERTISE_10BASETXFULL | PHY_ADVERTISE_10BASETXHALF | + PHY_ADVERTISE_8023; + if(EMAC_Phy_Write(PHY_ADVERTISE, advertise) != SUCCESS){ + return ERROR; + } + + BL702_Delay_MS(16); + if (SUCCESS != EMAC_Phy_Read(PHY_BCR, ®val)) { + return ERROR; + } + + BL702_Delay_MS(16); + regval |= (PHY_FULLDUPLEX_100M | PHY_AUTONEGOTIATION); + if(EMAC_Phy_Write(PHY_BCR, regval) != SUCCESS){ + return ERROR; + } + + BL702_Delay_MS(16); + regval |= PHY_RESTART_AUTONEGOTIATION; + regval &= ~PHY_ISOLATE; + if(EMAC_Phy_Write(PHY_BCR, regval) != SUCCESS){ + return ERROR; + } + + BL702_Delay_MS(2000); + while(1) { + if (SUCCESS != EMAC_Phy_Read(PHY_BSR, ®val)) { + return ERROR; + } + + if (regval & PHY_AUTONEGO_COMPLETE) { + /* complete */ + break; + } + + if (!(--timeout)) { + return TIMEOUT; + } + } + + BL702_Delay_MS(5000); + if (SUCCESS != EMAC_Phy_Read(PHY_LPA, &lpa)) { + return ERROR; + } + + if (((advertise & lpa) & PHY_ADVERTISE_100BASETXFULL) != 0) + { + /* 100BaseTX and Full Duplex */ + cfg->duplex = EMAC_MODE_FULLDUPLEX; + cfg->speed = EMAC_SPEED_100M; + } + else if (((advertise & lpa) & PHY_ADVERTISE_10BASETXFULL) != 0) + { + /* 10BaseT and Full Duplex */ + cfg->duplex = EMAC_MODE_FULLDUPLEX; + cfg->speed = EMAC_SPEED_10M; + } + else if (((advertise & lpa) & PHY_ADVERTISE_100BASETXHALF) != 0) + { + /* 100BaseTX and half Duplex */ + cfg->duplex = EMAC_MODE_HALFDUPLEX; + cfg->speed = EMAC_SPEED_100M; + } + else if (((advertise & lpa) & PHY_ADVERTISE_10BASETXHALF) != 0) + { + /* 10BaseT and half Duplex */ + cfg->duplex = EMAC_MODE_HALFDUPLEX; + cfg->speed = EMAC_SPEED_10M; + } + + return SUCCESS; +} + +BL_Err_Type EMAC_Phy_Linkup(ETHPHY_CFG_Type *cfg) +{ + uint16_t phy_bsr = 0; + uint16_t phy_sr = 0; + + BL702_Delay_MS(16); + if (SUCCESS != EMAC_Phy_Read(PHY_BSR, &phy_bsr)) { + return ERROR; + } + + BL702_Delay_MS(16); + if (!(PHY_LINKED_STATUS & phy_bsr)) { + return ERROR; + } + + BL702_Delay_MS(16); + if (SUCCESS != EMAC_Phy_Read(PHY_SR, &phy_sr)) { + return ERROR; + } + + if ((phy_bsr & PHY_BSR_100BASETXFULL) && PHY_SR_SPEED_MODE_COMPARE(phy_sr, PHY_SR_SPEED_100BASETXFULL)) { + /* 100BaseTX and Full Duplex */ + cfg->duplex = EMAC_MODE_FULLDUPLEX; + cfg->speed = EMAC_SPEED_100M; + } else if ((phy_bsr & PHY_BSR_10BASETXFULL) && PHY_SR_SPEED_MODE_COMPARE(phy_sr, PHY_SR_SPEED_10BASETXFULL)) { + /* 10BaseT and Full Duplex */ + cfg->duplex = EMAC_MODE_FULLDUPLEX; + cfg->speed = EMAC_SPEED_10M; + } else if ((phy_bsr & PHY_BSR_100BASETXHALF) && PHY_SR_SPEED_MODE_COMPARE(phy_sr, PHY_SR_SPEED_100BASETXHALF)) { + /* 100BaseTX and half Duplex */ + cfg->duplex = EMAC_MODE_HALFDUPLEX; + cfg->speed = EMAC_SPEED_100M; + } else if ((phy_bsr & PHY_BSR_10BASETXHALF) && PHY_SR_SPEED_MODE_COMPARE(phy_sr, PHY_SR_SPEED_10BASETXHALF)) { + /* 10BaseT and half Duplex */ + cfg->duplex = EMAC_MODE_HALFDUPLEX; + cfg->speed = EMAC_SPEED_10M; + } else { + /* 10BaseT and half Duplex */ + cfg->duplex = -1; + cfg->speed = -1; + return ERROR; + } + +#if 0 + if (SUCCESS != EMAC_Phy_Read(PHY_BCR, &phy_bsr)) { + return ERROR; + } + + /* enter test mode: near-end loopback */ + BL702_Delay_MS(16); + phy_bsr |= PHY_LOOPBACK; + if(EMAC_Phy_Write(PHY_BCR, phy_bsr) != SUCCESS){ + return ERROR; + } + + if (SUCCESS != EMAC_Phy_Read(PHY_BCR, &phy_bsr)) { + return ERROR; + } +#endif + +#if 0 + if (SUCCESS != EMAC_Phy_Read(17, &phy_bsr)) { + return ERROR; + } + + /* enter test mode: far loopback */ + BL702_Delay_MS(16); + phy_bsr |= (1 << 9); /* mode control/status register, FARLOOPBACK bit */ + if(EMAC_Phy_Write(17, phy_bsr) != SUCCESS){ + return ERROR; + } +#endif + + return SUCCESS; +} + +/*@} end of group EMAC_Private_Functions */ + +/** @defgroup EMAC_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Initialize EMAC module + * + * @param cfg: EMAC configuration pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_Init(EMAC_CFG_Type *cfg) +{ + uint32_t tmpVal; + + /* Disable clock gate */ + GLB_AHB_Slave1_Clock_Gate(DISABLE,BL_AHB_SLAVE1_EMAC); + + /* Set MAC config */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MODE); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_RMII_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_RECSMALL,cfg->recvSmallFrame); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_PAD,cfg->padEnable); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_HUGEN,cfg->recvHugeFrame); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_CRCEN,cfg->crcEnable); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_NOPRE,cfg->noPreamble); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_BRO,cfg->recvBroadCast); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_PRO,ENABLE); + //tmpVal |= (1 << 7); /* local loopback in emac */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_IFG,cfg->interFrameGapCheck); + BL_WR_REG(EMAC_BASE, EMAC_MODE,tmpVal); + + /* Set inter frame gap value */ + BL_WR_REG(EMAC_BASE, EMAC_IPGT,cfg->interFrameGapValue); + + /* Set MII interface */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MIIMODE); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_MIINOPRE,cfg->miiNoPreamble); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_CLKDIV,cfg->miiClkDiv); + BL_WR_REG(EMAC_BASE, EMAC_MIIMODE,tmpVal); + + /* Set collision */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_COLLCONFIG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_MAXRET,cfg->maxTxRetry); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_COLLVALID,cfg->collisionValid); + BL_WR_REG(EMAC_BASE, EMAC_COLLCONFIG,tmpVal); + + /* Set frame length */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_PACKETLEN); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_MINFL,cfg->minFrameLen); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_MAXFL,cfg->maxFrameLen); + BL_WR_REG(EMAC_BASE, EMAC_PACKETLEN,tmpVal); + + EMAC_SetMACAddres(cfg->macAddr); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(EMAC_IRQn,EMAC_IRQHandler); +#endif + return SUCCESS; +} + +/****************************************************************************//** + * @brief Initialize EMAC PHY module + * + * @param cfg: EMAC PHY configuration pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_PhyInit(ETHPHY_CFG_Type *cfg) +{ + uint32_t tmpVal; + uint16_t phyReg; + + /* Set Phy Address */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MIIADDRESS); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_FIAD,cfg->phyAddress); + BL_WR_REG(EMAC_BASE, EMAC_MIIADDRESS,tmpVal); + + if (SUCCESS != EMAC_Phy_Reset()) { + return ERROR; + } + + if(cfg->autoNegotiation){ +/* + uint32_t cnt=0; + do{ + if(EMAC_Phy_Read(PHY_BSR, &phyReg) != SUCCESS){ + return ERROR; + } + cnt++; + if(cnt>PHY_LINK_TO){ + return ERROR; + } + }while((phyReg & PHY_LINKED_STATUS) != PHY_LINKED_STATUS); +*/ + if(SUCCESS!=EMAC_Phy_AutoNegotiate(cfg)){ + return ERROR; + } + }else{ + if(EMAC_Phy_Read(PHY_BCR, &phyReg) != SUCCESS){ + return ERROR; + } + phyReg&=(~PHY_FULLDUPLEX_100M); + if(cfg->speed == EMAC_SPEED_10M){ + if(cfg->duplex==EMAC_MODE_FULLDUPLEX){ + phyReg|=PHY_FULLDUPLEX_10M; + }else{ + phyReg|=PHY_HALFDUPLEX_10M; + } + }else{ + if(cfg->duplex==EMAC_MODE_FULLDUPLEX){ + phyReg|=PHY_FULLDUPLEX_100M; + }else{ + phyReg|=PHY_HALFDUPLEX_100M; + } + } + if((EMAC_Phy_Write(PHY_BCR, phyReg)) != SUCCESS){ + return ERROR; + } + } + + /* Set MAC duplex config */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MODE); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,EMAC_FULLD,cfg->duplex); + BL_WR_REG(EMAC_BASE, EMAC_MODE,tmpVal); + + EMAC_Phy_Linkup(cfg); + return SUCCESS; +} + +/****************************************************************************//** + * @brief DeInitialize EMAC module + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_DeInit(void) +{ + EMAC_Disable(); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Initialize EMAC TX RX MDA buffer + * + * @param handle: EMAC handle pointer + * @param txBuff: TX buffer + * @param txBuffCount: TX buffer count + * @param rxBuff: RX buffer + * @param rxBuffCount: RX buffer count + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_DMADescListInit(EMAC_Handle_Type *handle,uint8_t *txBuff, uint32_t txBuffCount,uint8_t *rxBuff, uint32_t rxBuffCount) +{ + uint32_t i = 0; + + /* Set the Ethernet handler env */ + handle->bd = (EMAC_BD_Desc_Type *)(EMAC_BASE+EMAC_DMA_DESC_OFFSET); + handle->txIndexEMAC = 0; + handle->txIndexCPU = 0; + handle->txBuffLimit = txBuffCount - 1; + /* The receive descriptors' address starts right after the last transmit BD. */ + handle->rxIndexEMAC = txBuffCount; + handle->rxIndexCPU = txBuffCount; + handle->rxBuffLimit = txBuffCount + rxBuffCount - 1; + + /* Fill each DMARxDesc descriptor with the right values */ + for(i=0; i < txBuffCount; i++){ + /* Get the pointer on the ith member of the Tx Desc list */ + handle->bd[i].Buffer= (NULL == txBuff) ? 0 : (uint32_t)(txBuff+(ETH_MAX_PACKET_SIZE*i)); + handle->bd[i].C_S_L = 0; + } + /* For the last TX DMA Descriptor, it should be wrap back */ + handle->bd[handle->txBuffLimit].C_S_L |= EMAC_BD_FIELD_MSK(TX_WR); + + for(i = txBuffCount; i < (txBuffCount + rxBuffCount); i++){ + /* Get the pointer on the ith member of the Rx Desc list */ + handle->bd[i].Buffer= ( NULL == rxBuff) ? 0 : (uint32_t)(rxBuff+(ETH_MAX_PACKET_SIZE*(i-txBuffCount))); + handle->bd[i].C_S_L = (ETH_MAX_PACKET_SIZE << 16) | + EMAC_BD_FIELD_MSK(RX_IRQ) | + EMAC_BD_FIELD_MSK(RX_E); + } + /* For the last RX DMA Descriptor, it should be wrap back */ + handle->bd[handle->rxBuffLimit].C_S_L |= EMAC_BD_FIELD_MSK(RX_WR); + + /* For the TX DMA Descriptor, it will wrap to 0 according to EMAC_TX_BD_NUM*/ + BL_WR_REG(EMAC_BASE, EMAC_TX_BD_NUM,txBuffCount); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Get TX MDA buffer descripter for data to send + * + * @param handle: EMAC handle pointer + * @param txDMADesc: TX DMA descriptor pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_DMATxDescGet(EMAC_Handle_Type *handle,EMAC_BD_Desc_Type **txDMADesc) +{ + return SUCCESS; +} + +/****************************************************************************//** + * @brief Start TX + * + * @param handle: EMAC handle pointer + * @param txDMADesc: TX DMA descriptor pointer + * @param len: len + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_StartTx(EMAC_Handle_Type *handle,EMAC_BD_Desc_Type *txDMADesc, uint32_t len) +{ + return SUCCESS; +} + +/****************************************************************************//** + * @brief Enable EMAC module + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_Enable(void) +{ + uint32_t tmpVal; + + /* Enable EMAC */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MODE); + tmpVal=BL_SET_REG_BIT(tmpVal,EMAC_TXEN); + tmpVal=BL_SET_REG_BIT(tmpVal,EMAC_RXEN); + BL_WR_REG(EMAC_BASE, EMAC_MODE,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief EMAC_Enable_TX + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_Enable_TX(void) +{ + uint32_t tmpVal; + + /* Enable EMAC */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MODE); + tmpVal=BL_SET_REG_BIT(tmpVal,EMAC_TXEN); + BL_WR_REG(EMAC_BASE, EMAC_MODE,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief EMAC_Disable_TX + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_Disable_TX(void) +{ + uint32_t tmpVal; + + /* Enable EMAC */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MODE); + tmpVal=BL_CLR_REG_BIT(tmpVal,EMAC_TXEN); + BL_WR_REG(EMAC_BASE, EMAC_MODE,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Disable EMAC module + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_Disable(void) +{ + uint32_t tmpVal; + + /* Enable EMAC */ + tmpVal=BL_RD_REG(EMAC_BASE, EMAC_MODE); + tmpVal=BL_CLR_REG_BIT(tmpVal,EMAC_TXEN); + tmpVal=BL_CLR_REG_BIT(tmpVal,EMAC_RXEN); + BL_WR_REG(EMAC_BASE, EMAC_MODE,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief EMAC mask or unmask certain or all interrupt + * + * @param intType: EMAC interrupt type + * @param intMask: EMAC interrupt mask value( MASK:disbale interrupt,UNMASK:enable interrupt ) + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_IntMask(EMAC_INT_Type intType,BL_Mask_Type intMask) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_BL_MASK_TYPE(intMask)); + + tmpVal = BL_RD_REG(EMAC_BASE,EMAC_INT_MASK); + + /* Mask or unmask certain or all interrupt */ + if(MASK == intMask){ + tmpVal |= intType; + }else{ + tmpVal &= (~intType); + } + + /* Write back */ + BL_WR_REG(EMAC_BASE,EMAC_INT_MASK,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Get EMAC interrupt status + * + * @param intType: EMAC interrupt type + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Sts_Type EMAC_GetIntStatus(EMAC_INT_Type intType) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_EMAC_INT_TYPE(intType)); + + tmpVal = BL_RD_REG(EMAC_BASE,EMAC_INT_SOURCE); + + return (tmpVal & intType) ? SET : RESET; + +} + +/****************************************************************************//** + * @brief Clear EMAC interrupt + * + * @param intType: EMAC interrupt type + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_ClrIntStatus(EMAC_INT_Type intType) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_EMAC_INT_TYPE(intType)); + + tmpVal = BL_RD_REG(EMAC_BASE,EMAC_INT_SOURCE); + + BL_WR_REG(EMAC_BASE,EMAC_INT_SOURCE,tmpVal | intType); + + return SUCCESS; +} + + +/****************************************************************************//** + * @brief EMAC_Int_Callback_Install + * + * @param intIdx: EMAC_INT_Index + * @param cbFun: call back + * + * @return None + * +*******************************************************************************/ +BL_Err_Type EMAC_Int_Callback_Install(EMAC_INT_Index intIdx, intCallback_Type* cbFun) +{ + /* Check the parameters */ + + emacIntCbfArra[intIdx] = cbFun; + + return SUCCESS; +} + +/****************************************************************************//** + * @brief EMAC_IRQHandler + * + * @param None + * + * @return None + * +*******************************************************************************/ +void EMAC_IRQHandler(void) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(EMAC_BASE,EMAC_INT_MASK); + + if (SET == EMAC_GetIntStatus(EMAC_INT_TX_DONE) && !BL_IS_REG_BIT_SET(tmpVal,EMAC_TXB_M)) { + EMAC_ClrIntStatus(EMAC_INT_TX_DONE); + if(emacIntCbfArra[EMAC_INT_TX_DONE_IDX]){ + emacIntCbfArra[EMAC_INT_TX_DONE_IDX](); + } + } + + if (SET == EMAC_GetIntStatus(EMAC_INT_TX_ERROR) && !BL_IS_REG_BIT_SET(tmpVal,EMAC_TXE_M)) { + EMAC_ClrIntStatus(EMAC_INT_TX_ERROR); + if(emacIntCbfArra[EMAC_INT_TX_ERROR_IDX]){ + emacIntCbfArra[EMAC_INT_TX_ERROR_IDX](); + } + } + + if (SET == EMAC_GetIntStatus(EMAC_INT_RX_DONE) && !BL_IS_REG_BIT_SET(tmpVal,EMAC_RXB_M)) { + EMAC_ClrIntStatus(EMAC_INT_RX_DONE); + if(emacIntCbfArra[EMAC_INT_RX_DONE_IDX]){ + emacIntCbfArra[EMAC_INT_RX_DONE_IDX](); + } + } + + if (SET == EMAC_GetIntStatus(EMAC_INT_RX_ERROR) && !BL_IS_REG_BIT_SET(tmpVal,EMAC_RXE_M)) { + EMAC_ClrIntStatus(EMAC_INT_RX_ERROR); + if(emacIntCbfArra[EMAC_INT_RX_ERROR_IDX]){ + emacIntCbfArra[EMAC_INT_RX_ERROR_IDX](); + } + } + + if (SET == EMAC_GetIntStatus(EMAC_INT_RX_BUSY) && !BL_IS_REG_BIT_SET(tmpVal,EMAC_BUSY_M)) { + EMAC_ClrIntStatus(EMAC_INT_RX_BUSY); + if(emacIntCbfArra[EMAC_INT_RX_BUSY_IDX]){ + emacIntCbfArra[EMAC_INT_RX_BUSY_IDX](); + } + } + + if (SET == EMAC_GetIntStatus(EMAC_INT_TX_CTRL) && !BL_IS_REG_BIT_SET(tmpVal,EMAC_TXC_M)) { + EMAC_ClrIntStatus(EMAC_INT_TX_CTRL); + if(emacIntCbfArra[EMAC_INT_TX_CTRL_IDX]){ + emacIntCbfArra[EMAC_INT_TX_CTRL_IDX](); + } + } + + if (SET == EMAC_GetIntStatus(EMAC_INT_RX_CTRL) && !BL_IS_REG_BIT_SET(tmpVal,EMAC_RXC_M)) { + EMAC_ClrIntStatus(EMAC_INT_RX_CTRL); + if(emacIntCbfArra[EMAC_INT_RX_CTRL_IDX]){ + emacIntCbfArra[EMAC_INT_RX_CTRL_IDX](); + } + } +} + +/****************************************************************************//** + * @brief Request to pause TX + * + * @param timeCount: Pause time count + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_TxPauseReq(uint16_t timeCount) +{ + BL_WR_REG(EMAC_BASE,EMAC_TXCTRL,(1<<16)|timeCount); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Set hash value + * + * @param hash0: Hash value one + * @param hash1: Hash value two + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type EMAC_SetHash(uint32_t hash0,uint32_t hash1) +{ + BL_WR_REG(EMAC_BASE,EMAC_HASH0_ADDR,hash0); + + BL_WR_REG(EMAC_BASE,EMAC_HASH1_ADDR,hash1); + + return SUCCESS; +} + + +/*@} end of group EMAC_Public_Functions */ + +/*@} end of group EMAC */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_glb.c b/drivers/bl702_driver/std_drv/src/bl702_glb.c new file mode 100644 index 00000000..f9e87a61 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_glb.c @@ -0,0 +1,3470 @@ +/** + ****************************************************************************** + * @file bl702_glb.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_glb.h" +#include "bl702_hbn.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup GLB + * @{ + */ + +/** @defgroup GLB_Private_Macros + * @{ + */ +#define GLB_CLK_SET_DUMMY_WAIT {__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();} +#define GLB_GPIO_Get_Reg(pin) (glb_gpio_reg_t*)(GLB_BASE+GLB_GPIO_OFFSET+(pin/2)*4) +#define GLB_GPIO_INT0_NUM (32) +#define GLB_REG_BCLK_DIS_TRUE (*(volatile uint32_t *)(0x40000FFC)=(0x00000001)) +#define GLB_REG_BCLK_DIS_FALSE (*(volatile uint32_t *)(0x40000FFC)=(0x00000000)) +#define GLB_GPIO_INT0_CLEAR_TIMEOUT (32) + +/*@} end of group GLB_Private_Macros */ + +/** @defgroup GLB_Private_Types + * @{ + */ + +/*@} end of group GLB_Private_Types */ + +/** @defgroup GLB_Private_Variables + * @{ + */ +static intCallback_Type * glbBmxErrIntCbfArra[BMX_ERR_INT_ALL]={NULL}; +static intCallback_Type * glbBmxToIntCbfArra[BMX_TO_INT_ALL]={NULL}; +static intCallback_Type * glbGpioInt0CbfArra[GLB_GPIO_INT0_NUM] = {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, + NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, + NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, + NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; +static intCallback_Type * glbGpioInt0CbfArra2[GLB_GPIO_INT0_NUM] = {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, + NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, + NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, + NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; + + +/*@} end of group GLB_Private_Variables */ + +/** @defgroup GLB_Global_Variables + * @{ + */ + +/*@} end of group GLB_Global_Variables */ + +/** @defgroup GLB_Private_Fun_Declaration + * @{ + */ + +/*@} end of group GLB_Private_Fun_Declaration */ + +/** @defgroup GLB_Private_Functions + * @{ + */ + +/*@} end of group GLB_Private_Functions */ + +/** @defgroup GLB_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief get root clock selection + * + * @param None + * + * @return root clock selection + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +GLB_ROOT_CLK_Type ATTR_CLOCK_SECTION GLB_Get_Root_CLK_Sel(void) +{ + uint32_t tmpVal = 0; + + tmpVal = BL_RD_REG(GLB_BASE,GLB_CLK_CFG0); + + switch(BL_GET_REG_BITS_VAL(tmpVal,GLB_HBN_ROOT_CLK_SEL)){ + case 0: + return GLB_ROOT_CLK_RC32M; + case 1: + return GLB_ROOT_CLK_XTAL; + case 2: + case 3: + return GLB_ROOT_CLK_DLL; + default : + return GLB_ROOT_CLK_RC32M; + } +} +#endif + +/****************************************************************************//** + * @brief Set System clock divider + * + * @param hclkDiv: HCLK divider + * @param bclkDiv: BCLK divider + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION GLB_Set_System_CLK_Div(uint8_t hclkDiv,uint8_t bclkDiv) +{ + /***********************************************************************************/ + /* NOTE */ + /* "GLB_REG_BCLK_DIS_TRUE + GLB_REG_BCLK_DIS_FALSE" will stop bclk a little while. */ + /* OCRAM use bclk as source clock. Pay attention to risks when using this API. */ + /***********************************************************************************/ + uint32_t tmpVal; + + /* recommend: fclk<=160MHz, bclk<=80MHz */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_CLK_CFG0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_REG_HCLK_DIV,hclkDiv); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_REG_BCLK_DIV,bclkDiv); + BL_WR_REG(GLB_BASE,GLB_CLK_CFG0,tmpVal); + GLB_REG_BCLK_DIS_TRUE; + GLB_REG_BCLK_DIS_FALSE; + SystemCoreClockSet(SystemCoreClockGet()/((uint16_t)hclkDiv+1)); + GLB_CLK_SET_DUMMY_WAIT; + + tmpVal=BL_RD_REG(GLB_BASE,GLB_CLK_CFG0); + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_REG_HCLK_EN); + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_REG_BCLK_EN); + BL_WR_REG(GLB_BASE,GLB_CLK_CFG0,tmpVal); + GLB_CLK_SET_DUMMY_WAIT; + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Get Bus clock divider + * + * @param None + * + * @return Clock Divider + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +uint8_t ATTR_CLOCK_SECTION GLB_Get_BCLK_Div(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GLB_BASE,GLB_CLK_CFG0); + + return BL_GET_REG_BITS_VAL(tmpVal,GLB_REG_BCLK_DIV); +} +#endif + +/****************************************************************************//** + * @brief Get CPU clock divider + * + * @param None + * + * @return Clock Divider + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +uint8_t ATTR_CLOCK_SECTION GLB_Get_HCLK_Div(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(GLB_BASE,GLB_CLK_CFG0); + + return BL_GET_REG_BITS_VAL(tmpVal,GLB_REG_HCLK_DIV); +} +#endif + +/****************************************************************************//** + * @brief update SystemCoreClock value + * + * @param xtalType: XTAL frequency type + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION Update_SystemCoreClockWith_XTAL(GLB_DLL_XTAL_Type xtalType) +{ + CHECK_PARAM(IS_GLB_DLL_XTAL_TYPE(xtalType)); + + switch(xtalType){ + case GLB_DLL_XTAL_NONE: + break; + case GLB_DLL_XTAL_32M: + SystemCoreClockSet(32000000); + break; + case GLB_DLL_XTAL_RC32M: + SystemCoreClockSet(32000000); + break; + default : + break; + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Set System clock + * + * @param xtalType: XTAL frequency type + * @param clkFreq: clock frequency selection + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION GLB_Set_System_CLK(GLB_DLL_XTAL_Type xtalType,GLB_SYS_CLK_Type clkFreq) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_GLB_DLL_XTAL_TYPE(xtalType)); + CHECK_PARAM(IS_GLB_SYS_CLK_TYPE(clkFreq)); + + /* reg_bclk_en = reg_hclk_en = reg_fclk_en = 1, cannot be zero */ + tmpVal = BL_RD_REG(GLB_BASE,GLB_CLK_CFG0); + tmpVal = BL_SET_REG_BIT(tmpVal,GLB_REG_BCLK_EN); + tmpVal = BL_SET_REG_BIT(tmpVal,GLB_REG_HCLK_EN); + tmpVal = BL_SET_REG_BIT(tmpVal,GLB_REG_FCLK_EN); + BL_WR_REG(GLB_BASE,GLB_CLK_CFG0,tmpVal); + + /* Before config XTAL and DLL ,make sure root clk is from RC32M */ + HBN_Set_ROOT_CLK_Sel(HBN_ROOT_CLK_RC32M); + GLB_Set_System_CLK_Div(0,0); + SystemCoreClockSet(32*1000*1000); + + if(xtalType==GLB_DLL_XTAL_NONE){ + if(clkFreq==GLB_SYS_CLK_RC32M){ + return SUCCESS; + }else{ + return ERROR; + } + } + + if(xtalType!=GLB_DLL_XTAL_RC32M){ + /* power on xtal first */ + AON_Power_On_XTAL(); + } + + /* Bl702 make PLL Setting out of RF, so following setting can be removed*/ + //AON_Power_On_MBG(); + //AON_Power_On_LDO15_RF(); + + /* always power up PLL and enable all PLL clock output */ + //PDS_Power_On_PLL((PDS_PLL_XTAL_Type)xtalType); + //BL702_Delay_US(55); + //PDS_Enable_PLL_All_Clks(); + + /* always power up DLL and enable all DLL clock output */ + GLB_Power_Off_DLL(); + GLB_Power_On_DLL(xtalType); + GLB_Enable_DLL_All_Clks(); + + /* reg_pll_en = 1, cannot be zero */ + tmpVal = BL_RD_REG(GLB_BASE,GLB_CLK_CFG0); + tmpVal = BL_SET_REG_BIT(tmpVal,GLB_REG_PLL_EN); + BL_WR_REG(GLB_BASE,GLB_CLK_CFG0,tmpVal); + + /* select pll output clock before select root clock */ + if(clkFreq>=GLB_SYS_CLK_DLL57P6M){ + tmpVal = BL_RD_REG(GLB_BASE,GLB_CLK_CFG0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,GLB_REG_PLL_SEL,clkFreq-GLB_SYS_CLK_DLL57P6M); + BL_WR_REG(GLB_BASE,GLB_CLK_CFG0,tmpVal); + } + /* select root clock */ + switch(clkFreq){ + case GLB_SYS_CLK_RC32M: + break; + case GLB_SYS_CLK_XTAL: + HBN_Set_ROOT_CLK_Sel(HBN_ROOT_CLK_XTAL); + Update_SystemCoreClockWith_XTAL(xtalType); + break; + case GLB_SYS_CLK_DLL57P6M: + HBN_Set_ROOT_CLK_Sel(HBN_ROOT_CLK_DLL); + SystemCoreClockSet(57*6000*1000); + break; + case GLB_SYS_CLK_DLL96M: + L1C_IROM_2T_Access_Set(ENABLE); + GLB_Set_System_CLK_Div(0,1); + HBN_Set_ROOT_CLK_Sel(HBN_ROOT_CLK_DLL); + SystemCoreClockSet(96*1000*1000); + break; + case GLB_SYS_CLK_DLL144M: + L1C_IROM_2T_Access_Set(ENABLE); + GLB_Set_System_CLK_Div(0,1); + HBN_Set_ROOT_CLK_Sel(HBN_ROOT_CLK_DLL); + SystemCoreClockSet(144*1000*1000); + break; + default : + break; + } + + GLB_CLK_SET_DUMMY_WAIT; + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief This is demo for user that use RC32M as default bootup clock instead of DLL,when APP is + * started, this function can be called to set DLL to 160M + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION System_Core_Clock_Update_From_RC32M(void) +{ + SF_Ctrl_Cfg_Type sfCtrlCfg={ + .owner=SF_CTRL_OWNER_IAHB, + .clkDelay=1, + .clkInvert=1, + .rxClkInvert=1, + .doDelay=0, + .diDelay=0, + .oeDelay=0, + }; + /* Use RC32M as DLL ref source to set up DLL to 144M */ + GLB_Set_System_CLK(GLB_DLL_XTAL_RC32M,GLB_SYS_CLK_DLL144M); + /* Flash controller also need changes since system (bus) clock changed */ + SF_Ctrl_Enable(&sfCtrlCfg); + __NOP(); + __NOP(); + __NOP(); + __NOP(); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief set CAM clock + * + * @param enable: Enable or disable CAM clock + * @param clkSel: CAM clock type + * @param div: clock divider + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_Set_CAM_CLK(uint8_t enable,GLB_CAM_CLK_Type clkSel,uint8_t div) +{ + uint32_t tmpVal = 0; + + CHECK_PARAM(IS_GLB_CAM_CLK_TYPE(clkSel)); + + tmpVal = BL_RD_REG(GLB_BASE,GLB_CLK_CFG1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,GLB_REG_CAM_REF_CLK_SRC_SEL,clkSel); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,GLB_REG_CAM_REF_CLK_DIV,div); + BL_WR_REG(GLB_BASE,GLB_CLK_CFG1,tmpVal); + + tmpVal = BL_RD_REG(GLB_BASE,GLB_CLK_CFG1); + if(enable){ + tmpVal = BL_SET_REG_BIT(tmpVal,GLB_REG_CAM_REF_CLK_EN); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal,GLB_REG_CAM_REF_CLK_EN); + } + BL_WR_REG(GLB_BASE,GLB_CLK_CFG1,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief set mac154 and zigbee clock + * + * @param enable: Enable or disable mac154 and zigbee clock + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_Set_MAC154_ZIGBEE_CLK(uint8_t enable) +{ + uint32_t tmpVal = 0; + + tmpVal = BL_RD_REG(GLB_BASE,GLB_CLK_CFG1); + if(enable){ + tmpVal = BL_SET_REG_BIT(tmpVal,GLB_M154_ZBEN); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal,GLB_M154_ZBEN); + } + BL_WR_REG(GLB_BASE,GLB_CLK_CFG1,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief set BLE clock + * + * @param enable: Enable or disable BLE clock + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_Set_BLE_CLK(uint8_t enable) +{ + uint32_t tmpVal = 0; + + tmpVal = BL_RD_REG(GLB_BASE,GLB_CLK_CFG1); + if(enable){ + tmpVal = BL_SET_REG_BIT(tmpVal,GLB_BLE_EN); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal,GLB_BLE_EN); + } + BL_WR_REG(GLB_BASE,GLB_CLK_CFG1,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief set I2S clock + * + * @param enable: Enable or disable I2S clock + * @param outRef: I2S output ref clock type + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_Set_I2S_CLK(uint8_t enable,GLB_I2S_OUT_REF_CLK_Type outRef) +{ + uint32_t tmpVal = 0; + + CHECK_PARAM(IS_GLB_I2S_OUT_REF_CLK_TYPE(outRef)); + + tmpVal = BL_RD_REG(GLB_BASE,GLB_CLK_CFG1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,GLB_REG_I2S_0_REF_CLK_OE,outRef); + BL_WR_REG(GLB_BASE,GLB_CLK_CFG1,tmpVal); + + tmpVal = BL_RD_REG(GLB_BASE,GLB_CLK_CFG1); + if(enable){ + tmpVal = BL_SET_REG_BIT(tmpVal,GLB_REG_I2S0_CLK_EN); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal,GLB_REG_I2S0_CLK_EN); + } + BL_WR_REG(GLB_BASE,GLB_CLK_CFG1,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief set USB clock + * + * @param enable: Enable or disable USB clock + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_Set_USB_CLK(uint8_t enable) +{ + uint32_t tmpVal = 0; + + tmpVal = BL_RD_REG(GLB_BASE,GLB_CLK_CFG1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_48M_DIV_EN,1); + BL_WR_REG(GLB_BASE,GLB_CLK_CFG1,tmpVal); + + tmpVal = BL_RD_REG(GLB_BASE,GLB_CLK_CFG1); + if(enable){ + tmpVal = BL_SET_REG_BIT(tmpVal,GLB_USB_CLK_EN); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal,GLB_USB_CLK_EN); + } + BL_WR_REG(GLB_BASE,GLB_CLK_CFG1,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief set QDEC clock + * + * @param clkSel: QDEC clock type + * @param div: clock divider + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_Set_QDEC_CLK(GLB_QDEC_CLK_Type clkSel,uint8_t div) +{ + uint32_t tmpVal = 0; + + CHECK_PARAM(IS_GLB_QDEC_CLK_TYPE(clkSel)); + + tmpVal = BL_RD_REG(GLB_BASE,GLB_CLK_CFG1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,GLB_QDEC_CLK_SEL,clkSel); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,GLB_QDEC_CLK_DIV,div); + BL_WR_REG(GLB_BASE,GLB_CLK_CFG1,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief set DMA clock + * + * @param enable: Enable or disable DMA clock + * @param clk: DMA ID type + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_Set_DMA_CLK(uint8_t enable,GLB_DMA_CLK_ID_Type clk) +{ + uint32_t tmpVal; + uint32_t tmpVal2; + + tmpVal=BL_RD_REG(GLB_BASE,GLB_CLK_CFG2); + tmpVal2=BL_GET_REG_BITS_VAL(tmpVal,GLB_DMA_CLK_EN); + if(enable){ + tmpVal2 |=(1< gate QDEC0 + QDEC1 +QDEC2 + I2S */ + /* gate I2S <=> gate I2S + QDEC2 */ + + uint32_t tmpVal = 0; + + if((BL_AHB_SLAVE1_GLB==slave1)||(BL_AHB_SLAVE1_TZ2==slave1)|| \ + (BL_AHB_SLAVE1_CCI==slave1)||(BL_AHB_SLAVE1_L1C==slave1)|| \ + (BL_AHB_SLAVE1_PDS_HBN_AON_HBNRAM==slave1)){ + /* not support */ + return ERROR; + } + + /* gate QDEC and I2S */ + if(BL_AHB_SLAVE1_QDEC==slave1){ + tmpVal=BL_RD_REG(GLB_BASE,GLB_CGEN_CFG1); + if(enable){ + /* clear bit means clock gate */ + tmpVal &=(~(1<<0x18)); + tmpVal &=(~(1<<0x19)); + tmpVal &=(~(1<<0x1A)); + }else{ + /* set bit means clock pass */ + tmpVal |=(1<<0x18); + tmpVal |=(1<<0x19); + tmpVal |=(1<<0x1A); + } + BL_WR_REG(GLB_BASE,GLB_CGEN_CFG1,tmpVal); + return SUCCESS; + } + + /* gate KYS */ + if(BL_AHB_SLAVE1_KYS==slave1){ + tmpVal=BL_RD_REG(GLB_BASE,GLB_CGEN_CFG1); + if(enable){ + /* clear bit means clock gate */ + tmpVal &=(~(1<<0x1B)); + }else{ + /* set bit means clock pass */ + tmpVal |=(1<<0x1B); + } + BL_WR_REG(GLB_BASE,GLB_CGEN_CFG1,tmpVal); + return SUCCESS; + } + + /* gate I2S and QDEC2 */ + if(BL_AHB_SLAVE1_I2S==slave1){ + tmpVal=BL_RD_REG(GLB_BASE,GLB_CGEN_CFG1); + if(enable){ + /* clear bit means clock gate */ + tmpVal &=(~(1<<0x1A)); + }else{ + /* set bit means clock pass */ + tmpVal |=(1<<0x1A); + } + BL_WR_REG(GLB_BASE,GLB_CGEN_CFG1,tmpVal); + return SUCCESS; + } + + tmpVal=BL_RD_REG(GLB_BASE,GLB_CGEN_CFG1); + if(enable){ + /* clear bit means clock gate */ + tmpVal &=(~(1<timeoutEn)<=0xF); + + tmpVal=BL_RD_REG(GLB_BASE,GLB_BMX_CFG1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_BMX_TIMEOUT_EN,BmxCfg->timeoutEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_BMX_ERR_EN,BmxCfg->errEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_BMX_ARB_MODE,BmxCfg->arbMod); + BL_WR_REG(GLB_BASE,GLB_BMX_CFG1,tmpVal); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(BMX_ERR_IRQn,BMX_ERR_IRQHandler); + Interrupt_Handler_Register(BMX_TO_IRQn,BMX_TO_IRQHandler); +#endif + + return SUCCESS; +} + +/****************************************************************************//** + * @brief BMX address monitor enable + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_BMX_Addr_Monitor_Enable(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(GLB_BASE,GLB_BMX_CFG2); + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_BMX_ERR_ADDR_DIS); + BL_WR_REG(GLB_BASE,GLB_BMX_CFG2,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief BMX address monitor disable + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_BMX_Addr_Monitor_Disable(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(GLB_BASE,GLB_BMX_CFG2); + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_BMX_ERR_ADDR_DIS); + BL_WR_REG(GLB_BASE,GLB_BMX_CFG2,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief BMX bus error response enable + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_BMX_BusErrResponse_Enable(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(GLB_BASE,GLB_BMX_CFG1); + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_BMX_ERR_EN); + BL_WR_REG(GLB_BASE,GLB_BMX_CFG1,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief BMX bus error response disable + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_BMX_BusErrResponse_Disable(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(GLB_BASE,GLB_BMX_CFG1); + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_BMX_ERR_EN); + BL_WR_REG(GLB_BASE,GLB_BMX_CFG1,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Get BMX error status + * + * @param errType: BMX error status type + * + * @return SET or RESET + * +*******************************************************************************/ +BL_Sts_Type GLB_BMX_Get_Status(BMX_BUS_ERR_Type errType) +{ + uint32_t tmpVal = 0; + + CHECK_PARAM(IS_BMX_BUS_ERR_TYPE(errType)); + + tmpVal=BL_RD_REG(GLB_BASE,GLB_BMX_CFG2); + if(errType==BMX_BUS_ERR_TRUSTZONE_DECODE){ + return BL_GET_REG_BITS_VAL(tmpVal,GLB_BMX_ERR_TZ)?SET:RESET; + }else{ + return BL_GET_REG_BITS_VAL(tmpVal,GLB_BMX_ERR_DEC)?SET:RESET; + } +} + +/****************************************************************************//** + * @brief Get BMX error address + * + * @param None + * + * @return NP BMX error address + * +*******************************************************************************/ +uint32_t GLB_BMX_Get_Err_Addr(void) +{ + return BL_RD_REG(GLB_BASE,GLB_BMX_ERR_ADDR); +} + +/****************************************************************************//** + * @brief BMX error interrupt callback install + * + * @param intType: BMX error interrupt type + * @param cbFun: callback + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type BMX_ERR_INT_Callback_Install(BMX_ERR_INT_Type intType,intCallback_Type* cbFun) +{ + CHECK_PARAM(IS_BMX_ERR_INT_TYPE(intType)); + + glbBmxErrIntCbfArra[intType] = cbFun; + + return SUCCESS; +} + +/****************************************************************************//** + * @brief BMX ERR interrupt IRQ handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void BMX_ERR_IRQHandler(void) +{ + BMX_ERR_INT_Type intType; + + for(intType=BMX_ERR_INT_ERR;intTypedll.BF.ppu_dll = 0; */ + /* GLB->dll.BF.pu_dll = 0; */ + /* GLB->dll.BF.dll_reset = 1; */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_DLL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_PPU_DLL,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_PU_DLL,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_RESET,1); + BL_WR_REG(GLB_BASE,GLB_DLL,tmpVal); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief power on DLL + * + * @param xtalType: DLL xtal type + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION GLB_Power_On_DLL(GLB_DLL_XTAL_Type xtalType) +{ + uint32_t tmpVal=0; + + CHECK_PARAM(IS_GLB_DLL_XTAL_TYPE(xtalType)); + + /* GLB->dll.BF.dll_refclk_sel = XXX; */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_DLL); + switch(xtalType){ + case GLB_DLL_XTAL_NONE: + return ERROR; + case GLB_DLL_XTAL_32M: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_REFCLK_SEL,0); + break; + case GLB_DLL_XTAL_RC32M: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_REFCLK_SEL,1); + break; + default : + break; + } + BL_WR_REG(GLB_BASE,GLB_DLL,tmpVal); + + /* GLB->dll.BF.dll_prechg_sel = 1; */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_DLL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_PRECHG_SEL,1); + BL_WR_REG(GLB_BASE,GLB_DLL,tmpVal); + + /* GLB->dll.BF.ppu_dll = 1; */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_DLL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_PPU_DLL,1); + BL_WR_REG(GLB_BASE,GLB_DLL,tmpVal); + + BL702_Delay_US(2); + + /* GLB->dll.BF.pu_dll = 1; */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_DLL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_PU_DLL,1); + BL_WR_REG(GLB_BASE,GLB_DLL,tmpVal); + + BL702_Delay_US(2); + + /* GLB->dll.BF.dll_reset = 0; */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_DLL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_RESET,0); + BL_WR_REG(GLB_BASE,GLB_DLL,tmpVal); + + /* delay for settling */ + BL702_Delay_US(5); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief enable all DLL output clock + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION GLB_Enable_DLL_All_Clks(void) +{ + uint32_t tmpVal=0; + + /* GLB->dll.WORD = GLB->dll.WORD | 0x000000f8; include 288m and mmdiv */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_DLL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_57P6M_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_96M_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_144M_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_288M_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_MMDIV_EN,1); + BL_WR_REG(GLB_BASE,GLB_DLL,tmpVal); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief enable one of DLL output clock + * + * @param dllClk: None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION GLB_Enable_DLL_Clk(GLB_DLL_CLK_Type dllClk) +{ + uint32_t tmpVal=0; + + CHECK_PARAM(IS_GLB_DLL_CLK_TYPE(dllClk)); + + tmpVal=BL_RD_REG(GLB_BASE,GLB_DLL); + switch(dllClk){ + case GLB_DLL_CLK_57P6M: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_57P6M_EN,1); + break; + case GLB_DLL_CLK_96M: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_96M_EN,1); + break; + case GLB_DLL_CLK_144M: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_144M_EN,1); + break; + case GLB_DLL_CLK_288M: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_288M_EN,1); + break; + case GLB_DLL_CLK_MMDIV: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_MMDIV_EN,1); + break; + default : + break; + } + BL_WR_REG(GLB_BASE,GLB_DLL,tmpVal); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief disable all DLL output clock + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION GLB_Disable_DLL_All_Clks(void) +{ + uint32_t tmpVal=0; + + /* GLB->dll.WORD = GLB->dll.WORD & ~0x000000f8; */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_DLL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_57P6M_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_96M_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_144M_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_288M_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_MMDIV_EN,0); + BL_WR_REG(GLB_BASE,GLB_DLL,tmpVal); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief disable one of DLL output clock + * + * @param dllClk: None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION GLB_Disable_DLL_Clk(GLB_DLL_CLK_Type dllClk) +{ + uint32_t tmpVal=0; + + CHECK_PARAM(IS_GLB_DLL_CLK_TYPE(dllClk)); + + tmpVal=BL_RD_REG(GLB_BASE,GLB_DLL); + switch(dllClk){ + case GLB_DLL_CLK_57P6M: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_57P6M_EN,0); + break; + case GLB_DLL_CLK_96M: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_96M_EN,0); + break; + case GLB_DLL_CLK_144M: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_144M_EN,0); + break; + case GLB_DLL_CLK_288M: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_288M_EN,0); + break; + case GLB_DLL_CLK_MMDIV: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_DLL_CLK_MMDIV_EN,0); + break; + default : + break; + } + BL_WR_REG(GLB_BASE,GLB_DLL,tmpVal); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Select ir rx gpio (gpio17~gpio31) + * + * @param gpio: IR gpio selected + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_IR_RX_GPIO_Sel(GLB_GPIO_Type gpio) +{ + uint32_t tmpVal=0; + + /* Select gpio between gpio17 and gpio31 */ + if(gpio>16 && gpio<32){ + tmpVal=BL_RD_REG(GLB_BASE,GLB_LED_DRIVER); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_IR_RX_GPIO_SEL,gpio-16); + BL_WR_REG(GLB_BASE,GLB_LED_DRIVER,tmpVal); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Enable ir led driver + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_IR_LED_Driver_Enable(void) +{ + uint32_t tmpVal=0; + + /* Enable led driver */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_LED_DRIVER); + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_PU_LEDDRV); + BL_WR_REG(GLB_BASE,GLB_LED_DRIVER,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Disable ir led driver + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_IR_LED_Driver_Disable(void) +{ + uint32_t tmpVal=0; + + /* Disable led driver */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_LED_DRIVER); + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_PU_LEDDRV); + BL_WR_REG(GLB_BASE,GLB_LED_DRIVER,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Enable ir led driver gpio output(gpio 22 or 23) + * + * @param gpio: IR gpio selected + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_IR_LED_Driver_Output_Enable(GLB_GPIO_Type gpio) +{ + uint32_t tmpVal=0; + + if(gpio == GLB_GPIO_PIN_22){ + tmpVal=BL_RD_REG(GLB_BASE,GLB_LED_DRIVER); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_LEDDRV_OUT_EN,BL_GET_REG_BITS_VAL(tmpVal,GLB_LEDDRV_OUT_EN)|1); + BL_WR_REG(GLB_BASE,GLB_LED_DRIVER,tmpVal); + }else if(gpio == GLB_GPIO_PIN_23){ + tmpVal=BL_RD_REG(GLB_BASE,GLB_LED_DRIVER); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_LEDDRV_OUT_EN,BL_GET_REG_BITS_VAL(tmpVal,GLB_LEDDRV_OUT_EN)|2); + BL_WR_REG(GLB_BASE,GLB_LED_DRIVER,tmpVal); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Disable ir led driver gpio output(gpio 22 or 23) + * + * @param gpio: IR gpio selected + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_IR_LED_Driver_Output_Disable(GLB_GPIO_Type gpio) +{ + uint32_t tmpVal=0; + + if(gpio == GLB_GPIO_PIN_22){ + tmpVal=BL_RD_REG(GLB_BASE,GLB_LED_DRIVER); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_LEDDRV_OUT_EN,BL_GET_REG_BITS_VAL(tmpVal,GLB_LEDDRV_OUT_EN)&~1); + BL_WR_REG(GLB_BASE,GLB_LED_DRIVER,tmpVal); + }else if(gpio == GLB_GPIO_PIN_23){ + tmpVal=BL_RD_REG(GLB_BASE,GLB_LED_DRIVER); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_LEDDRV_OUT_EN,BL_GET_REG_BITS_VAL(tmpVal,GLB_LEDDRV_OUT_EN)&~2); + BL_WR_REG(GLB_BASE,GLB_LED_DRIVER,tmpVal); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Set ir led driver ibias + * + * @param ibias: Ibias value,0x0:0mA~0xf:120mA,8mA/step + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_IR_LED_Driver_Ibias(uint8_t ibias) +{ + uint32_t tmpVal=0; + + /* Set driver ibias */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_LED_DRIVER); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_LEDDRV_IBIAS,ibias&0xF); + BL_WR_REG(GLB_BASE,GLB_LED_DRIVER,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief GPIO initialization + * + * @param cfg: GPIO configuration + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION GLB_GPIO_Init(GLB_GPIO_Cfg_Type *cfg) +{ + uint8_t gpioPin=cfg->gpioPin; + uint32_t *pOut; + uint32_t pos; + uint32_t tmpOut; + uint32_t tmpVal; + uint32_t aonPadIeSmt; + + /* drive strength(drive) = 0 <=> 8.0mA @ 3.3V */ + /* drive strength(drive) = 1 <=> 9.6mA @ 3.3V */ + /* drive strength(drive) = 2 <=> 11.2mA @ 3.3V */ + /* drive strength(drive) = 3 <=> 12.8mA @ 3.3V */ + + pOut=(uint32_t *)(GLB_BASE+GLB_GPIO_OUTPUT_EN_OFFSET+((gpioPin>>5)<<2)); + pos=gpioPin%32; + tmpOut=*pOut; + + /* Disable output anyway*/ + tmpOut &= (~(1<gpioMode!=GPIO_MODE_ANALOG){ + /* not analog mode */ + + /* Set input or output */ + if(cfg->gpioMode==GPIO_MODE_OUTPUT){ + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_REG_GPIO_0_IE); + tmpOut |= (1<pullType==GPIO_PULL_UP){ + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_REG_GPIO_0_PU); + }else if(cfg->pullType==GPIO_PULL_DOWN){ + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_REG_GPIO_0_PD); + } + }else{ + /* analog mode */ + + /* clear ie && oe */ + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_REG_GPIO_0_IE); + tmpOut &= ~(1<drive); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_REG_GPIO_0_SMT,cfg->smtCtrl); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_REG_GPIO_0_FUNC_SEL,cfg->gpioFun); + }else{ + if(cfg->gpioMode!=GPIO_MODE_ANALOG){ + /* not analog mode */ + + /* Set input or output */ + if(cfg->gpioMode==GPIO_MODE_OUTPUT) { + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_REG_GPIO_1_IE); + tmpOut |= (1<pullType==GPIO_PULL_UP){ + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_REG_GPIO_1_PU); + }else if(cfg->pullType==GPIO_PULL_DOWN){ + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_REG_GPIO_1_PD); + } + }else{ + /* analog mode */ + + /* clear ie && oe */ + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_REG_GPIO_1_IE); + tmpOut &= ~(1<drive); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_REG_GPIO_1_SMT,cfg->smtCtrl); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_REG_GPIO_1_FUNC_SEL,cfg->gpioFun); + } + BL_WR_WORD(GLB_BASE+GLB_GPIO_OFFSET+gpioPin/2*4,tmpVal); + + *pOut=tmpOut; + + /* always on pads IE control (in HBN) */ + if(gpioPin>=9&&gpioPin<=13){ + tmpVal=BL_RD_REG(HBN_BASE,HBN_IRQ_MODE); + aonPadIeSmt=BL_GET_REG_BITS_VAL(tmpVal,HBN_REG_AON_PAD_IE_SMT); + + if(cfg->gpioMode!=GPIO_MODE_ANALOG){ + /* not analog mode */ + + if(cfg->gpioMode==GPIO_MODE_OUTPUT){ + aonPadIeSmt&=~(1<<(gpioPin-9)); + }else{ + aonPadIeSmt|=(1<<(gpioPin-9)); + } + }else{ + /* analog mode */ + + /* clear aon pad ie */ + aonPadIeSmt&=~(1<<(gpioPin-9)); + } + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_REG_AON_PAD_IE_SMT,aonPadIeSmt); + BL_WR_REG(HBN_BASE,HBN_IRQ_MODE,tmpVal); + } + + if(gpioPin>=32&&gpioPin<=37){ + if(BL_RD_REG(GLB_BASE,GLB_GPIO_USE_PSRAM__IO)&(1<<(gpioPin-32))){ + gpioPin-=9; + + tmpVal=BL_RD_WORD(GLB_BASE+GLB_GPIO_OFFSET+gpioPin/2*4); + if(gpioPin%2==0){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_REG_GPIO_0_FUNC_SEL,cfg->gpioFun); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,GLB_REG_GPIO_1_FUNC_SEL,cfg->gpioFun); + } + BL_WR_WORD(GLB_BASE+GLB_GPIO_OFFSET+gpioPin/2*4,tmpVal); + + /* GPIO32-GPIO37 use GPIO23-GPIO28 pinmux&&outputEn */ + pOut=(uint32_t *)(GLB_BASE+GLB_GPIO_OUTPUT_EN_OFFSET+((gpioPin>>5)<<2)); + pos=gpioPin%32; + tmpOut=*pOut; + /* Disable output anyway*/ + tmpOut &= (~(1<gpioMode!=GPIO_MODE_ANALOG){ + /* not analog mode */ + + if(cfg->gpioMode==GPIO_MODE_OUTPUT){ + tmpOut |= (1<>1)<<2; + tmpVal=*(uint32_t *)(GLB_BASE+GLB_GPIO_OFFSET+pinOffset); + if(gpioPin%2==0){ + /* [0] is ie */ + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_REG_GPIO_0_IE); + }else{ + /* [16] is ie */ + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_REG_GPIO_1_IE); + } + *(uint32_t *)(GLB_BASE+GLB_GPIO_OFFSET+pinOffset)=tmpVal; + + /* always on pads IE control (in HBN) */ + if(gpioPin>=9&&gpioPin<=13){ + tmpVal=BL_RD_REG(HBN_BASE,HBN_IRQ_MODE); + aonPadIeSmt=BL_GET_REG_BITS_VAL(tmpVal,HBN_REG_AON_PAD_IE_SMT); + aonPadIeSmt|=(1<<(gpioPin-9)); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_REG_AON_PAD_IE_SMT,aonPadIeSmt); + BL_WR_REG(HBN_BASE,HBN_IRQ_MODE,tmpVal); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief GPIO set input function disable + * + * @param gpioPin: GPIO pin + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION GLB_GPIO_INPUT_Disable(GLB_GPIO_Type gpioPin) +{ + uint32_t tmpVal; + uint32_t pinOffset; + uint32_t aonPadIeSmt; + + pinOffset=(gpioPin>>1)<<2; + tmpVal=*(uint32_t *)(GLB_BASE+GLB_GPIO_OFFSET+pinOffset); + if(gpioPin%2==0){ + /* [0] is ie */ + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_REG_GPIO_0_IE); + }else{ + /* [16] is ie */ + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_REG_GPIO_1_IE); + } + *(uint32_t *)(GLB_BASE+GLB_GPIO_OFFSET+pinOffset)=tmpVal; + + /* always on pads IE control (in HBN) */ + if(gpioPin>=9&&gpioPin<=13){ + tmpVal=BL_RD_REG(HBN_BASE,HBN_IRQ_MODE); + aonPadIeSmt=BL_GET_REG_BITS_VAL(tmpVal,HBN_REG_AON_PAD_IE_SMT); + aonPadIeSmt&=~(1<<(gpioPin-9)); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_REG_AON_PAD_IE_SMT,aonPadIeSmt); + BL_WR_REG(HBN_BASE,HBN_IRQ_MODE,tmpVal); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief GPIO set output function enable + * + * @param gpioPin: GPIO pin + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION GLB_GPIO_OUTPUT_Enable(GLB_GPIO_Type gpioPin) +{ + uint32_t tmpVal; + + /* GPIO32-GPIO37 use GPIO23-GPIO28 pinmux&&outputEn */ + if(gpioPin>=32&&gpioPin<=37){ + if(BL_RD_REG(GLB_BASE,GLB_GPIO_USE_PSRAM__IO)&(1<<(gpioPin-32))){ + gpioPin-=9; + } + } + + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPIO_CFGCTL34); + tmpVal=tmpVal|(1<=32&&gpioPin<=37){ + if(BL_RD_REG(GLB_BASE,GLB_GPIO_USE_PSRAM__IO)&(1<<(gpioPin-32))){ + gpioPin-=9; + } + } + + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPIO_CFGCTL34); + tmpVal=tmpVal&~(1<>5)<<2)); + pos=gpioPin%32; + tmpOut=*pOut; + + /* Disable output anyway*/ + tmpOut &= (~(1<=9&&gpioPin<=13){ + tmpVal=BL_RD_REG(HBN_BASE,HBN_IRQ_MODE); + aonPadIeSmt=BL_GET_REG_BITS_VAL(tmpVal,HBN_REG_AON_PAD_IE_SMT); + aonPadIeSmt&=~(1<<(gpioPin-9)); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_REG_AON_PAD_IE_SMT,aonPadIeSmt); + BL_WR_REG(HBN_BASE,HBN_IRQ_MODE,tmpVal); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Get GPIO function + * + * @param gpioPin: GPIO type + * + * @return GPIO function + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +uint8_t ATTR_TCM_SECTION GLB_GPIO_Get_Fun(GLB_GPIO_Type gpioPin) +{ + if(gpioPin>=32&&gpioPin<=37){ + if(BL_RD_REG(GLB_BASE,GLB_GPIO_USE_PSRAM__IO)&(1<<(gpioPin-32))){ + gpioPin-=9; + } + } + uint32_t tmpVal; + + tmpVal=BL_RD_WORD(GLB_BASE+GLB_GPIO_OFFSET+gpioPin/2*4); + + if(gpioPin%2==0){ + return BL_GET_REG_BITS_VAL(tmpVal,GLB_REG_GPIO_0_FUNC_SEL); + }else{ + return BL_GET_REG_BITS_VAL(tmpVal,GLB_REG_GPIO_1_FUNC_SEL); + } +} +#endif + +/****************************************************************************//** + * @brief Write GPIO + * + * @param gpioPin: GPIO type + * @param val: GPIO value + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_GPIO_Write(GLB_GPIO_Type gpioPin,uint32_t val) +{ + if(gpioPin>=32&&gpioPin<=37){ + if(BL_RD_REG(GLB_BASE,GLB_GPIO_USE_PSRAM__IO)&(1<<(gpioPin-32))){ + gpioPin-=9; + } + } + uint32_t *pOut=(uint32_t *)(GLB_BASE+GLB_GPIO_OUTPUT_OFFSET+((gpioPin>>5)<<2)); + uint32_t pos=gpioPin%32; + uint32_t tmpOut; + + tmpOut=*pOut; + if(val>0){ + tmpOut |= (1<=32&&gpioPin<=37){ + if(BL_RD_REG(GLB_BASE,GLB_GPIO_USE_PSRAM__IO)&(1<<(gpioPin-32))){ + gpioPin-=9; + } + } + uint32_t *p=(uint32_t *)(GLB_BASE+GLB_GPIO_INPUT_OFFSET+((gpioPin>>5)<<2)); + uint32_t pos=gpioPin%32; + + if((*p)&(1<>(bitVal*3); + return (tmpVal>>2)?GLB_GPIO_INT_CONTROL_ASYNC:GLB_GPIO_INT_CONTROL_SYNC; + }else if((gpioPin>GLB_GPIO_PIN_9)&&(gpioPin>(bitVal*3); + return (tmpVal>>2)?GLB_GPIO_INT_CONTROL_ASYNC:GLB_GPIO_INT_CONTROL_SYNC; + }else if((gpioPin>GLB_GPIO_PIN_19)&&(gpioPin>(bitVal*3); + return (tmpVal>>2)?GLB_GPIO_INT_CONTROL_ASYNC:GLB_GPIO_INT_CONTROL_SYNC; + }else{ + /* GPIO30 ~ GPIO31, GPIO32 ~ GPIO37 not recommend */ + bitVal=gpioPin-30; + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPIO_INT_MODE_SET4); + tmpVal=(tmpVal&(0x7<<(bitVal*3)))>>(bitVal*3); + return (tmpVal>>2)?GLB_GPIO_INT_CONTROL_ASYNC:GLB_GPIO_INT_CONTROL_SYNC; + } +} + +/****************************************************************************//** + * @brief Set GLB GPIO interrupt mask 2 + * + * @param gpioPin: GPIO type + * @param intMask: GPIO interrupt MASK or UNMASK + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_GPIO_Int2Mask(GLB_GPIO_Type gpioPin,BL_Mask_Type intMask) +{ + uint32_t tmpVal; + + if(gpioPin<32){ + /* GPIO0 ~ GPIO31 */ + tmpVal = BL_RD_REG(GLB_BASE,GLB_GPIO_INT2_MASK1); + if(intMask==MASK){ + tmpVal = tmpVal|(1<>(bitVal*3); + return (tmpVal>>2)?GLB_GPIO_INT_CONTROL_ASYNC:GLB_GPIO_INT_CONTROL_SYNC; + }else if((gpioPin>GLB_GPIO_PIN_9)&&(gpioPin>(bitVal*3); + return (tmpVal>>2)?GLB_GPIO_INT_CONTROL_ASYNC:GLB_GPIO_INT_CONTROL_SYNC; + }else if((gpioPin>GLB_GPIO_PIN_19)&&(gpioPin>(bitVal*3); + return (tmpVal>>2)?GLB_GPIO_INT_CONTROL_ASYNC:GLB_GPIO_INT_CONTROL_SYNC; + }else{ + /* GPIO30 ~ GPIO31, GPIO32 ~ GPIO37 not recommend */ + bitVal=gpioPin-30; + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPIO_INT2_MODE_SET4); + tmpVal=(tmpVal&(0x7<<(bitVal*3)))>>(bitVal*3); + return (tmpVal>>2)?GLB_GPIO_INT_CONTROL_ASYNC:GLB_GPIO_INT_CONTROL_SYNC; + } +} + +/****************************************************************************//** + * @brief GPIO INT0 IRQHandler install + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_GPIO_INT0_IRQHandler_Install(void) +{ +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(GPIO_INT0_IRQn,GPIO_INT0_IRQHandler); +#endif + + return SUCCESS; +} + +/****************************************************************************//** + * @brief GPIO interrupt IRQ handler callback install + * + * @param gpioPin: GPIO pin type + * @param cbFun: callback function + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_GPIO_INT0_Callback_Install(GLB_GPIO_Type gpioPin,intCallback_Type* cbFun) +{ + if(gpioPin<32){ + glbGpioInt0CbfArra[gpioPin] = cbFun; + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief GPIO interrupt IRQ handler callback install2 + * + * @param gpioPin: GPIO pin type + * @param cbFun: callback function + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type GLB_GPIO_INT0_Callback_Install2(GLB_GPIO_Type gpioPin,intCallback_Type* cbFun) +{ + if(gpioPin<32){ + glbGpioInt0CbfArra2[gpioPin] = cbFun; + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief GPIO interrupt IRQ handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void GPIO_INT0_IRQHandler(void) +{ + GLB_GPIO_Type gpioPin; + uint32_t timeOut=0; + + for(gpioPin=GLB_GPIO_PIN_0;gpioPin<=GLB_GPIO_PIN_31;gpioPin++){ + if(SET==GLB_Get_GPIO_IntStatus(gpioPin)){ + GLB_GPIO_IntClear(gpioPin,SET); + + /* timeout check */ + timeOut=GLB_GPIO_INT0_CLEAR_TIMEOUT; + do{ + timeOut--; + }while((SET==GLB_Get_GPIO_IntStatus(gpioPin))&&timeOut); + if(!timeOut){ + MSG("WARNING: Clear GPIO interrupt status fail.\r\n"); + } + + /* if timeOut==0, GPIO interrupt status not cleared */ + GLB_GPIO_IntClear(gpioPin,RESET); + + if(glbGpioInt0CbfArra[gpioPin] != NULL) { + /* Call the callback function */ + glbGpioInt0CbfArra[gpioPin](); + } + } + if(SET==GLB_Get_GPIO_Int2Status(gpioPin)){ + GLB_GPIO_Int2Clear(gpioPin,SET); + + /* timeout check */ + timeOut=GLB_GPIO_INT0_CLEAR_TIMEOUT; + do{ + timeOut--; + }while((SET==GLB_Get_GPIO_Int2Status(gpioPin))&&timeOut); + if(!timeOut){ + MSG("WARNING: Clear GPIO interrupt status fail.\r\n"); + } + + /* if timeOut==0, GPIO interrupt status not cleared */ + GLB_GPIO_Int2Clear(gpioPin,RESET); + + if(glbGpioInt0CbfArra2[gpioPin] != NULL) { + /* Call the callback function */ + glbGpioInt0CbfArra2[gpioPin](); + } + } + } +} +#endif + +/*@} end of group GLB_Public_Functions */ + +/*@} end of group GLB */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_hbn.c b/drivers/bl702_driver/std_drv/src/bl702_hbn.c new file mode 100644 index 00000000..da3b9c17 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_hbn.c @@ -0,0 +1,1962 @@ +/** + ****************************************************************************** + * @file bl702_hbn.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_hbn.h" +#include "bl702_glb.h" +#include "bl702_xip_sflash.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup HBN + * @{ + */ + +/** @defgroup HBN_Private_Macros + * @{ + */ +#define HBN_CLK_SET_DUMMY_WAIT {__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();} + +/*@} end of group HBN_Private_Macros */ + +/** @defgroup HBN_Private_Types + * @{ + */ + +/*@} end of group HBN_Private_Types */ + +/** @defgroup HBN_Private_Variables + * @{ + */ +static intCallback_Type * hbnInt0CbfArra[HBN_OUT0_MAX]={NULL,NULL,NULL,NULL,NULL,NULL}; +static intCallback_Type * hbnInt1CbfArra[HBN_OUT1_MAX]={NULL,NULL,NULL,NULL}; + + +/*@} end of group HBN_Private_Variables */ + +/** @defgroup HBN_Global_Variables + * @{ + */ + +/*@} end of group HBN_Global_Variables */ + +/** @defgroup HBN_Private_Fun_Declaration + * @{ + */ + +/*@} end of group HBN_Private_Fun_Declaration */ + +/** @defgroup HBN_Private_Functions + * @{ + */ + +/*@} end of group HBN_Private_Functions */ + +/** @defgroup HBN_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Enter HBN + * + * @param cfg: HBN APP Config + * + * @return None + * +*******************************************************************************/ +void ATTR_TCM_SECTION HBN_Mode_Enter(HBN_APP_CFG_Type *cfg) +{ + uint32_t valLow=0,valHigh=0; + uint64_t val; + uint32_t tmpVal=0,tmpVal2=0; + + /* work clock select */ + if(cfg->useXtal32k){ + HBN_32K_Sel(HBN_32K_XTAL); + }else{ + HBN_32K_Sel(HBN_32K_RC); + HBN_Power_Off_Xtal_32K(); + } + + /* turn off RC32K during HBN */ + if((cfg->hbnLevel)>=HBN_LEVEL_2){ + HBN_Power_Off_RC32K(); + }else{ + HBN_Power_On_RC32K(); + } + + /* clear aon pad interrupt before config them */ + HBN_Clear_IRQ(HBN_INT_GPIO9); + HBN_Clear_IRQ(HBN_INT_GPIO10); + HBN_Clear_IRQ(HBN_INT_GPIO11); + HBN_Clear_IRQ(HBN_INT_GPIO12); + HBN_Clear_IRQ(HBN_INT_GPIO13); + + /* always disable HBN pin pull up/down to reduce PDS/HBN current, 0x4000F014[16]=0 */ + HBN_Hw_Pu_Pd_Cfg(DISABLE); + + HBN_Pin_WakeUp_Mask(~(cfg->gpioWakeupSrc)); + if(cfg->gpioWakeupSrc!=0){ + HBN_Aon_Pad_IeSmt_Cfg(cfg->gpioWakeupSrc); + HBN_GPIO_INT_Enable(cfg->gpioTrigType); + }else{ + HBN_Aon_Pad_IeSmt_Cfg(0); + } + + /* always disable and mask aon_pad_GPIO9, mask/unmask and ie_enable/ie_disable */ + tmpVal=BL_RD_REG(HBN_BASE,HBN_IRQ_MODE); + tmpVal2=BL_GET_REG_BITS_VAL(tmpVal,HBN_PIN_WAKEUP_MASK); + tmpVal2|=(1<<0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_PIN_WAKEUP_MASK,tmpVal2); + tmpVal2=BL_GET_REG_BITS_VAL(tmpVal,HBN_REG_AON_PAD_IE_SMT); + tmpVal2&=~(1<<0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_REG_AON_PAD_IE_SMT,tmpVal2); + BL_WR_REG(HBN_BASE,HBN_IRQ_MODE,tmpVal); + + /* HBN RTC config and enable */ + if(cfg->sleepTime!=0){ + HBN_Clear_RTC_Counter(); + HBN_Get_RTC_Timer_Val(&valLow,&valHigh); + val=valLow+((uint64_t)valHigh<<32); + val+=cfg->sleepTime; + HBN_Set_RTC_Timer(HBN_RTC_INT_DELAY_0T,val&0xffffffff,val>>32,HBN_RTC_COMP_BIT0_39); + HBN_Enable_RTC_Counter(); + } + + HBN_Power_Down_Flash(cfg->flashCfg); + + switch(cfg->flashPinCfg){ + case 0: + HBN_Set_Pad_23_28_Pullup(); + break; + case 1: + /* need do nothing */ + break; + case 2: + /* need do nothing */ + break; + case 3: + /* can do nothing */ + break; + default : + break; + } + + GLB_Set_System_CLK(GLB_DLL_XTAL_NONE,GLB_SYS_CLK_RC32M); + + /* power off xtal */ + AON_Power_Off_XTAL(); + + HBN_Enable_Ext(cfg->gpioWakeupSrc,cfg->ldoLevel,cfg->hbnLevel); +} + +/****************************************************************************//** + * @brief power down and switch clock + * + * @param flashCfg: None + * + * @return None + * +*******************************************************************************/ +void ATTR_TCM_SECTION HBN_Power_Down_Flash(SPI_Flash_Cfg_Type *flashCfg) +{ + SPI_Flash_Cfg_Type bhFlashCfg; + + if(flashCfg==NULL){ + /* fix this some time */ + /* SFlash_Cache_Flush(); */ + XIP_SFlash_Read_Via_Cache_Need_Lock(BL702_FLASH_XIP_BASE+8+4,(uint8_t *)(&bhFlashCfg),sizeof(SPI_Flash_Cfg_Type)); + /* fix this some time */ + /* SFlash_Cache_Flush(); */ + + SF_Ctrl_Set_Owner(SF_CTRL_OWNER_SAHB); + SFlash_Reset_Continue_Read(&bhFlashCfg); + }else{ + SF_Ctrl_Set_Owner(SF_CTRL_OWNER_SAHB); + SFlash_Reset_Continue_Read(flashCfg); + } + + SFlash_Powerdown(); +} + +/****************************************************************************//** + * @brief Enable HBN mode + * + * @param aGPIOIeCfg: AON GPIO IE config,Bit0->GPIO18. Bit(s) of Wakeup GPIO(s) must not be set to + * 0(s),say when use GPIO7 as wake up pin,aGPIOIeCfg should be 0x01. + * @param ldoLevel: LDO volatge level + * @param hbnLevel: HBN work level + * + * @return None + * +*******************************************************************************/ +void ATTR_TCM_SECTION HBN_Enable_Ext(uint8_t aGPIOIeCfg,HBN_LDO_LEVEL_Type ldoLevel,HBN_LEVEL_Type hbnLevel) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_HBN_LDO_LEVEL_TYPE(ldoLevel)); + CHECK_PARAM(IS_HBN_LEVEL_TYPE(hbnLevel)); + + /* Setting from guide */ + /* RAM Retion, no longer use */ + /* BL_WR_REG(HBN_BASE,HBN_SRAM,0x24); */ + + /* AON GPIO IE */ + tmpVal=BL_RD_REG(HBN_BASE,HBN_IRQ_MODE); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_REG_AON_PAD_IE_SMT,aGPIOIeCfg); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_REG_EN_HW_PU_PD); + BL_WR_REG(HBN_BASE,HBN_IRQ_MODE,tmpVal); + + /* HBN mode LDO level */ + tmpVal=BL_RD_REG(HBN_BASE,HBN_CTL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_LDO11_AON_VOUT_SEL,ldoLevel); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_LDO11_RT_VOUT_SEL,ldoLevel); + BL_WR_REG(HBN_BASE,HBN_CTL,tmpVal); + + /* Select RC32M */ + tmpVal=BL_RD_REG(HBN_BASE,HBN_GLB); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_ROOT_CLK_SEL,0); + BL_WR_REG(HBN_BASE,HBN_GLB,tmpVal); + __NOP();__NOP();__NOP();__NOP(); + + /* Set HBN flag */ + BL_WR_REG(HBN_BASE,HBN_RSV0,HBN_STATUS_ENTER_FLAG); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_CTL); + /* Set HBN level, (HBN_PWRDN_HBN_RAM not use) */ + switch(hbnLevel){ + case HBN_LEVEL_0: + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PWRDN_HBN_CORE); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PWRDN_HBN_RTC); + break; + + case HBN_LEVEL_1: + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PWRDN_HBN_CORE); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PWRDN_HBN_RTC); + break; + + case HBN_LEVEL_2: + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PWRDN_HBN_CORE); + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PWRDN_HBN_RTC); + break; + + case HBN_LEVEL_3: + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PWRDN_HBN_CORE); + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PWRDN_HBN_RTC); + break; + + default : + break; + } + /* Set power on option:0 for por reset twice for robust 1 for reset only once*/ + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PWR_ON_OPTION); + BL_WR_REG(HBN_BASE,HBN_CTL,tmpVal); + + /* Enable HBN mode */ + tmpVal=BL_RD_REG(HBN_BASE,HBN_CTL); + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_MODE); + BL_WR_REG(HBN_BASE,HBN_CTL,tmpVal); + + while(1){ + BL702_Delay_MS(1000); + } +} + +/****************************************************************************//** + * @brief Reset HBN mode + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION HBN_Reset(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_CTL); + /* Reset HBN mode */ + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_SW_RST); + BL_WR_REG(HBN_BASE,HBN_CTL,tmpVal); + + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_SW_RST); + BL_WR_REG(HBN_BASE,HBN_CTL,tmpVal); + + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_SW_RST); + BL_WR_REG(HBN_BASE,HBN_CTL,tmpVal); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief reset HBN by software + * + * @param npXtalType: NP clock type + * @param bclkDiv: NP clock div + * @param apXtalType: AP clock type + * @param fclkDiv: AP clock div + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_App_Reset(uint8_t npXtalType,uint8_t bclkDiv,uint8_t apXtalType,uint8_t fclkDiv) +{ + uint32_t tmp[12]; + + tmp[0]=BL_RD_REG(HBN_BASE,HBN_CTL); + tmp[1]=BL_RD_REG(HBN_BASE,HBN_TIME_L); + tmp[2]=BL_RD_REG(HBN_BASE,HBN_TIME_H); + tmp[3]=BL_RD_REG(HBN_BASE,HBN_IRQ_MODE); + tmp[4]=BL_RD_REG(HBN_BASE,HBN_IRQ_CLR); + tmp[5]=BL_RD_REG(HBN_BASE,HBN_PIR_CFG); + tmp[6]=BL_RD_REG(HBN_BASE,HBN_PIR_VTH); + tmp[7]=BL_RD_REG(HBN_BASE,HBN_PIR_INTERVAL); + tmp[8]=BL_RD_REG(HBN_BASE,HBN_SRAM); + tmp[9]=BL_RD_REG(HBN_BASE,HBN_RSV0); + tmp[10]=BL_RD_REG(HBN_BASE,HBN_RSV1); + tmp[11]=BL_RD_REG(HBN_BASE,HBN_RSV2); + /* DO HBN reset */ + HBN_Reset(); + /* HBN need 3 32k cyclce to recovery */ + BL702_Delay_US(100); + /* Recover HBN value */ + BL_WR_REG(HBN_BASE,HBN_TIME_L,tmp[1]); + BL_WR_REG(HBN_BASE,HBN_TIME_H,tmp[2]); + BL_WR_REG(HBN_BASE,HBN_CTL,tmp[0]); + + BL_WR_REG(HBN_BASE,HBN_IRQ_MODE,tmp[3]); + BL_WR_REG(HBN_BASE,HBN_IRQ_CLR,tmp[4]); + BL_WR_REG(HBN_BASE,HBN_PIR_CFG,tmp[5]); + BL_WR_REG(HBN_BASE,HBN_PIR_VTH,tmp[6]); + BL_WR_REG(HBN_BASE,HBN_PIR_INTERVAL,tmp[7]); + BL_WR_REG(HBN_BASE,HBN_SRAM,tmp[8]); + BL_WR_REG(HBN_BASE,HBN_RSV0,tmp[9]); + BL_WR_REG(HBN_BASE,HBN_RSV1,tmp[10]); + BL_WR_REG(HBN_BASE,HBN_RSV2,tmp[11]); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Disable HBN mode + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Disable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_CTL); + /* Disable HBN mode */ + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_MODE); + BL_WR_REG(HBN_BASE,HBN_CTL,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Enable HBN PIR + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_PIR_Enable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_PIR_CFG); + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PIR_EN); + BL_WR_REG(HBN_BASE,HBN_PIR_CFG,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Disable HBN PIR + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_PIR_Disable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_PIR_CFG); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PIR_EN); + BL_WR_REG(HBN_BASE,HBN_PIR_CFG,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Config HBN PIR interrupt + * + * @param pirIntCfg: HBN PIR interrupt configuration + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_PIR_INT_Config(HBN_PIR_INT_CFG_Type* pirIntCfg) +{ + uint32_t tmpVal; + uint32_t bit4 = 0; + uint32_t bit5 = 0; + uint32_t bitVal = 0; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_PIR_CFG); + + /* low trigger interrupt */ + if(pirIntCfg->lowIntEn==ENABLE){ + bit5 = 0; + }else{ + bit5 = 1; + } + + /* high trigger interrupt */ + if(pirIntCfg->highIntEn==ENABLE){ + bit4 = 0; + }else{ + bit4 = 1; + } + + bitVal = bit4|(bit5<<1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_PIR_DIS,bitVal); + BL_WR_REG(HBN_BASE,HBN_PIR_CFG,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Select HBN PIR low pass filter + * + * @param lpf: HBN PIR low pass filter selection + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_PIR_LPF_Sel(HBN_PIR_LPF_Type lpf) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_HBN_PIR_LPF_TYPE(lpf)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_PIR_CFG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_PIR_LPF_SEL,lpf); + BL_WR_REG(HBN_BASE,HBN_PIR_CFG,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Select HBN PIR high pass filter + * + * @param hpf: HBN PIR high pass filter selection + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_PIR_HPF_Sel(HBN_PIR_HPF_Type hpf) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_HBN_PIR_HPF_TYPE(hpf)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_PIR_CFG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_PIR_HPF_SEL,hpf); + BL_WR_REG(HBN_BASE,HBN_PIR_CFG,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Set HBN PIR threshold value + * + * @param threshold: HBN PIR threshold value + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Set_PIR_Threshold(uint16_t threshold) +{ + uint32_t tmpVal; + + CHECK_PARAM((threshold<=0x3FFF)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_PIR_VTH); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_PIR_VTH,threshold); + BL_WR_REG(HBN_BASE,HBN_PIR_VTH,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Get HBN PIR threshold value + * + * @param None + * + * @return HBN PIR threshold value + * +*******************************************************************************/ +uint16_t HBN_Get_PIR_Threshold(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_PIR_VTH); + + return BL_GET_REG_BITS_VAL(tmpVal,HBN_PIR_VTH); +} + +/****************************************************************************//** + * @brief Set HBN PIR interval value + * + * @param interval: HBN PIR interval value + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Set_PIR_Interval(uint16_t interval) +{ + uint32_t tmpVal; + + CHECK_PARAM((interval<=0xFFF)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_PIR_INTERVAL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_PIR_INTERVAL,interval); + BL_WR_REG(HBN_BASE,HBN_PIR_INTERVAL,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Get HBN PIR interval value + * + * @param None + * + * @return HBN PIR interval value + * +*******************************************************************************/ +uint16_t HBN_Get_PIR_Interval(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_PIR_INTERVAL); + + return BL_GET_REG_BITS_VAL(tmpVal,HBN_PIR_INTERVAL); +} + +/****************************************************************************//** + * @brief get HBN bor out state + * + * @param None + * + * @return SET or RESET + * +*******************************************************************************/ +BL_Sts_Type HBN_Get_BOR_OUT_State(void) +{ + return BL_GET_REG_BITS_VAL(BL_RD_REG(HBN_BASE,HBN_MISC),HBN_R_BOR_OUT)?SET:RESET; +} + +/****************************************************************************//** + * @brief set HBN bor config + * + * @param enable: ENABLE or DISABLE, if enable, Power up Brown Out Reset + * @param threshold: bor threshold + * @param mode: bor work mode with por + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Set_BOR_Config(uint8_t enable,HBN_BOR_THRES_Type threshold,HBN_BOR_MODE_Type mode) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_HBN_BOR_THRES_TYPE(threshold)); + CHECK_PARAM(IS_HBN_BOR_MODE_TYPE(mode)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_MISC); + if(enable){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_PU_BOR,1); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_PU_BOR,0); + } + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_BOR_VTH,threshold); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_BOR_SEL,mode); + BL_WR_REG(HBN_BASE,HBN_MISC,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN set ldo11aon voltage out + * + * @param ldoLevel: LDO volatge level + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION HBN_Set_Ldo11_Aon_Vout(HBN_LDO_LEVEL_Type ldoLevel) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_HBN_LDO_LEVEL_TYPE(ldoLevel)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_GLB); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_SW_LDO11_AON_VOUT_SEL,ldoLevel); + BL_WR_REG(HBN_BASE,HBN_GLB,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN set ldo11rt voltage out + * + * @param ldoLevel: LDO volatge level + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION HBN_Set_Ldo11_Rt_Vout(HBN_LDO_LEVEL_Type ldoLevel) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_HBN_LDO_LEVEL_TYPE(ldoLevel)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_GLB); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_SW_LDO11_RT_VOUT_SEL,ldoLevel); + BL_WR_REG(HBN_BASE,HBN_GLB,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN set ldo11soc voltage out + * + * @param ldoLevel: LDO volatge level + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION HBN_Set_Ldo11_Soc_Vout(HBN_LDO_LEVEL_Type ldoLevel) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_HBN_LDO_LEVEL_TYPE(ldoLevel)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_GLB); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_SW_LDO11SOC_VOUT_SEL_AON,ldoLevel); + BL_WR_REG(HBN_BASE,HBN_GLB,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN set ldo11 all voltage out + * + * @param ldoLevel: LDO volatge level + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION HBN_Set_Ldo11_All_Vout(HBN_LDO_LEVEL_Type ldoLevel) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_HBN_LDO_LEVEL_TYPE(ldoLevel)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_GLB); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_SW_LDO11_AON_VOUT_SEL,ldoLevel); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_SW_LDO11_RT_VOUT_SEL,ldoLevel); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_SW_LDO11SOC_VOUT_SEL_AON,ldoLevel); + BL_WR_REG(HBN_BASE,HBN_GLB,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN set ldo11rt drive strength + * + * @param strength: ldo11rt drive strength + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION HBN_Set_Ldo11rt_Drive_Strength(HBN_LDO11RT_DRIVE_STRENGTH_Type strength) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_HBN_LDO11RT_DRIVE_STRENGTH_TYPE(strength)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_GLB); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_LDO11_RT_ILOAD_SEL,strength); + BL_WR_REG(HBN_BASE,HBN_GLB,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN select 32K + * + * @param clkType: HBN 32k clock type + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_CLOCK_SECTION HBN_32K_Sel(HBN_32K_CLK_Type clkType) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_HBN_32K_CLK_TYPE(clkType)); + + HBN_Trim_RC32K(); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_GLB); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_F32K_SEL,clkType); + BL_WR_REG(HBN_BASE,HBN_GLB,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Select uart clock source + * + * @param clkSel: uart clock type selection + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Set_UART_CLK_Sel(HBN_UART_CLK_Type clkSel) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_HBN_UART_CLK_TYPE(clkSel)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_GLB); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_UART_CLK_SEL,clkSel); + BL_WR_REG(HBN_BASE,HBN_GLB,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Select xclk clock source + * + * @param xClk: xclk clock type selection + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Set_XCLK_CLK_Sel(HBN_XCLK_CLK_Type xClk) +{ + uint32_t tmpVal; + uint32_t tmpVal2; + + CHECK_PARAM(IS_HBN_XCLK_CLK_TYPE(xClk)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_GLB); + tmpVal2=BL_GET_REG_BITS_VAL(tmpVal,HBN_ROOT_CLK_SEL); + switch(xClk){ + case HBN_XCLK_CLK_RC32M: + tmpVal2&=(~(1<<0)); + break; + case HBN_XCLK_CLK_XTAL: + tmpVal2|=(1<<0); + break; + default : + break; + } + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_ROOT_CLK_SEL,tmpVal2); + BL_WR_REG(HBN_BASE,HBN_GLB,tmpVal); + HBN_CLK_SET_DUMMY_WAIT; + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Select root clk source + * + * @param rootClk: root clock type selection + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION HBN_Set_ROOT_CLK_Sel(HBN_ROOT_CLK_Type rootClk) +{ + uint32_t tmpVal; + uint32_t tmpVal2; + + CHECK_PARAM(IS_HBN_ROOT_CLK_TYPE(rootClk)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_GLB); + tmpVal2=BL_GET_REG_BITS_VAL(tmpVal,HBN_ROOT_CLK_SEL); + switch(rootClk){ + case HBN_ROOT_CLK_RC32M: + tmpVal2=0x0; + break; + case HBN_ROOT_CLK_XTAL: + tmpVal2=0x1; + break; + case HBN_ROOT_CLK_DLL: + tmpVal2|=(1<<1); + break; + default : + break; + } + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_ROOT_CLK_SEL,tmpVal2); + BL_WR_REG(HBN_BASE,HBN_GLB,tmpVal); + HBN_CLK_SET_DUMMY_WAIT; + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief set HBN_RAM sleep mode + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Set_HRAM_slp(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_SRAM); + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_RETRAM_SLP); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_RETRAM_RET); + BL_WR_REG(HBN_BASE,HBN_SRAM,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief set HBN_RAM retension mode + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Set_HRAM_Ret(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_SRAM); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_RETRAM_SLP); + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_RETRAM_RET); + BL_WR_REG(HBN_BASE,HBN_SRAM,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Power on XTAL 32K + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_CLOCK_SECTION HBN_Power_On_Xtal_32K(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_XTAL32K); + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PU_XTAL32K); + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PU_XTAL32K_BUF); + BL_WR_REG(HBN_BASE,HBN_XTAL32K,tmpVal); + + /* Delay >1s */ + BL702_Delay_US(1100); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Power off XTAL 32K + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_CLOCK_SECTION HBN_Power_Off_Xtal_32K(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_XTAL32K); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PU_XTAL32K); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PU_XTAL32K_BUF); + BL_WR_REG(HBN_BASE,HBN_XTAL32K,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Power on RC32K + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_CLOCK_SECTION HBN_Power_On_RC32K(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_GLB); + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PU_RC32K); + BL_WR_REG(HBN_BASE,HBN_GLB,tmpVal); + + /* Delay >800us */ + BL702_Delay_US(880); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Power off RC3K + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_CLOCK_SECTION HBN_Power_Off_RC32K(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_GLB); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PU_RC32K); + BL_WR_REG(HBN_BASE,HBN_GLB,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Trim RC32K + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_CLOCK_SECTION HBN_Trim_RC32K(void) +{ + Efuse_Ana_RC32K_Trim_Type trim; + int32_t tmpVal = 0; + + EF_Ctrl_Read_RC32K_Trim(&trim); + if(trim.trimRc32kExtCodeEn){ + if(trim.trimRc32kCodeFrExtParity==EF_Ctrl_Get_Trim_Parity(trim.trimRc32kCodeFrExt,10)){ + tmpVal=BL_RD_REG(HBN_BASE,HBN_RC32K_CTRL0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_RC32K_CODE_FR_EXT,trim.trimRc32kCodeFrExt); + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_RC32K_EXT_CODE_EN); + BL_WR_REG(HBN_BASE,HBN_RC32K_CTRL0,tmpVal); + BL702_Delay_US(2); + return SUCCESS; + } + } + + return ERROR; +} +#endif + +/****************************************************************************//** + * @brief Get HBN status flag + * + * @param None + * + * @return HBN status flag value + * +*******************************************************************************/ +uint32_t HBN_Get_Status_Flag(void) +{ + return BL_RD_REG(HBN_BASE,HBN_RSV0); +} + +/****************************************************************************//** + * @brief Set HBN status flag + * + * @param flag: Status Flag + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Set_Status_Flag(uint32_t flag) +{ + BL_WR_REG(HBN_BASE,HBN_RSV0,flag); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Get HBN wakeup address + * + * @param None + * + * @return HBN wakeup address + * +*******************************************************************************/ +uint32_t HBN_Get_Wakeup_Addr(void) +{ + return BL_RD_REG(HBN_BASE,HBN_RSV1); +} + +/****************************************************************************//** + * @brief Set HBN wakeup address + * + * @param addr: HBN wakeup address + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Set_Wakeup_Addr(uint32_t addr) +{ + BL_WR_REG(HBN_BASE,HBN_RSV1,addr); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN clear RTC timer counter + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Clear_RTC_Counter(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_CTL); + /* Clear RTC control bit0 */ + BL_WR_REG(HBN_BASE,HBN_CTL,tmpVal&0xfffffffe); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN clear RTC timer counter + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Enable_RTC_Counter(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_CTL); + /* Set RTC control bit0 */ + BL_WR_REG(HBN_BASE,HBN_CTL,tmpVal|0x01); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN set RTC timer configuration + * + * @param delay: RTC interrupt delay 32 clocks + * @param compValLow: RTC interrupt commpare value low 32 bits + * @param compValHigh: RTC interrupt commpare value high 32 bits + * @param compMode: RTC interrupt commpare + * mode:HBN_RTC_COMP_BIT0_39,HBN_RTC_COMP_BIT0_23,HBN_RTC_COMP_BIT13_39 + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Set_RTC_Timer(HBN_RTC_INT_Delay_Type delay,uint32_t compValLow,uint32_t compValHigh,uint8_t compMode) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_HBN_RTC_INT_DELAY_TYPE(delay)); + + BL_WR_REG(HBN_BASE,HBN_TIME_L,compValLow); + BL_WR_REG(HBN_BASE,HBN_TIME_H,compValHigh&0xff); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_CTL); + /* Set interrupt delay option */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_RTC_DLY_OPTION,delay); + /* Set RTC compare mode */ + tmpVal |= (compMode<<1); + BL_WR_REG(HBN_BASE,HBN_CTL,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN get RTC timer count value + * + * @param valLow: RTC count value pointer for low 32 bits + * @param valHigh: RTC count value pointer for high 8 bits + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Get_RTC_Timer_Val(uint32_t *valLow,uint32_t *valHigh) +{ + uint32_t tmpVal; + + /* Tigger RTC val read */ + tmpVal=BL_RD_REG(HBN_BASE,HBN_RTC_TIME_H); + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_RTC_TIME_LATCH); + BL_WR_REG(HBN_BASE,HBN_RTC_TIME_H,tmpVal); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_RTC_TIME_LATCH); + BL_WR_REG(HBN_BASE,HBN_RTC_TIME_H,tmpVal); + + /* Read RTC val */ + *valLow=BL_RD_REG(HBN_BASE,HBN_RTC_TIME_L); + *valHigh=(BL_RD_REG(HBN_BASE,HBN_RTC_TIME_H)&0xff); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN clear RTC timer interrupt,this function must be called to clear delayed rtc IRQ + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Clear_RTC_INT(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_CTL); + /* Clear RTC commpare:bit1-3 for clearing Delayed RTC IRQ */ + BL_WR_REG(HBN_BASE,HBN_CTL,tmpVal&0xfffffff1); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN enable GPIO interrupt + * + * @param gpioIntTrigType: HBN GPIO interrupt trigger type + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_GPIO_INT_Enable(HBN_GPIO_INT_Trigger_Type gpioIntTrigType) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_HBN_GPIO_INT_TRIGGER_TYPE(gpioIntTrigType)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_IRQ_MODE); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_PIN_WAKEUP_MODE,gpioIntTrigType); + BL_WR_REG(HBN_BASE,HBN_IRQ_MODE,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN disable GPIO interrupt + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_GPIO_INT_Disable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_IRQ_MODE); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_PIN_WAKEUP_MASK,0); + BL_WR_REG(HBN_BASE,HBN_IRQ_MODE,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN get interrupt status + * + * @param irqType: HBN interrupt type + * + * @return SET or RESET + * +*******************************************************************************/ +BL_Sts_Type HBN_Get_INT_State(HBN_INT_Type irqType) +{ + uint32_t tmpVal; + + /* Check the parameters */ + + tmpVal=BL_RD_REG(HBN_BASE,HBN_IRQ_STAT); + + if(tmpVal&(1<=1)&&(dlySec<=7))); + CHECK_PARAM((gpioIrq>=HBN_INT_GPIO9)&&(gpioIrq<=HBN_INT_GPIO13)); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_IRQ_MODE); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_PIN_WAKEUP_EN,dlyEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_PIN_WAKEUP_SEL,dlySec); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_REG_EN_HW_PU_PD,pupdEn); + if(gpioMask!=UNMASK){ + tmpVal=tmpVal|(1<<(gpioIrq+8)); + }else{ + tmpVal=tmpVal&~(1<<(gpioIrq+8)); + } + BL_WR_REG(HBN_BASE,HBN_IRQ_MODE,tmpVal); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Set pad 23-28 pull none + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION HBN_Set_Pad_23_28_Pullnone(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(HBN_BASE,HBN_MISC); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_FLASH_PULLDOWN_AON,0x00); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_FLASH_PULLUP_AON,0x00); + BL_WR_REG(HBN_BASE,HBN_MISC,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Set pad 23-28 pull up + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION HBN_Set_Pad_23_28_Pullup(void) +{ + uint32_t tmpVal = 0; + + /********************************************/ + /* GPIO28 is bootpin, so leave it pull none */ + /********************************************/ + + tmpVal=BL_RD_REG(HBN_BASE,HBN_MISC); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_FLASH_PULLDOWN_AON,0x00); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_FLASH_PULLUP_AON,0x1F); + BL_WR_REG(HBN_BASE,HBN_MISC,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Set pad 23-28 pull down + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION HBN_Set_Pad_23_28_Pulldown(void) +{ + uint32_t tmpVal = 0; + + /********************************************/ + /* GPIO28 is bootpin, so leave it pull none */ + /********************************************/ + + tmpVal=BL_RD_REG(HBN_BASE,HBN_MISC); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_FLASH_PULLDOWN_AON,0x1F); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_FLASH_PULLUP_AON,0x00); + BL_WR_REG(HBN_BASE,HBN_MISC,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Set pad 23-28 active ie + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION HBN_Set_Pad_23_28_ActiveIE(void) +{ + uint32_t tmpVal = 0; + + /********************************************/ + /* GPIO28 is bootpin, so leave it pull none */ + /********************************************/ + + tmpVal=BL_RD_REG(HBN_BASE,HBN_MISC); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_FLASH_PULLDOWN_AON,0x1F); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_FLASH_PULLUP_AON,0x1F); + BL_WR_REG(HBN_BASE,HBN_MISC,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Set BOR config + * + * @param cfg: Enable or disable + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type HBN_Set_BOR_Cfg(HBN_BOR_CFG_Type *cfg) +{ + uint32_t tmpVal = 0; + + if(cfg->enableBorInt){ + HBN_Enable_BOR_IRQ(); + }else{ + HBN_Disable_BOR_IRQ(); + } + + tmpVal=BL_RD_REG(HBN_BASE,HBN_MISC); + + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_BOR_VTH,cfg->borThreshold); + if(cfg->enablePorInBor){ + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_BOR_SEL); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_BOR_SEL); + } + + if(cfg->enableBor){ + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PU_BOR); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PU_BOR); + } + + BL_WR_REG(HBN_BASE,HBN_MISC,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief HBN OUT0 interrupt handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void HBN_OUT0_IRQHandler(void) +{ + if(SET==HBN_Get_INT_State(HBN_INT_GPIO9)){ + HBN_Clear_IRQ(HBN_INT_GPIO9); + if(hbnInt0CbfArra[HBN_OUT0_INT_GPIO9] != NULL) { + hbnInt0CbfArra[HBN_OUT0_INT_GPIO9](); + } + } + if(SET==HBN_Get_INT_State(HBN_INT_GPIO10)){ + HBN_Clear_IRQ(HBN_INT_GPIO10); + if(hbnInt0CbfArra[HBN_OUT0_INT_GPIO10] != NULL) { + hbnInt0CbfArra[HBN_OUT0_INT_GPIO10](); + } + } + if(SET==HBN_Get_INT_State(HBN_INT_GPIO11)){ + HBN_Clear_IRQ(HBN_INT_GPIO11); + if(hbnInt0CbfArra[HBN_OUT0_INT_GPIO11] != NULL) { + hbnInt0CbfArra[HBN_OUT0_INT_GPIO11](); + } + } + if(SET==HBN_Get_INT_State(HBN_INT_GPIO12)){ + HBN_Clear_IRQ(HBN_INT_GPIO12); + if(hbnInt0CbfArra[HBN_OUT0_INT_GPIO12] != NULL) { + hbnInt0CbfArra[HBN_OUT0_INT_GPIO12](); + } + } + if(SET==HBN_Get_INT_State(HBN_INT_GPIO13)){ + HBN_Clear_IRQ(HBN_INT_GPIO13); + if(hbnInt0CbfArra[HBN_OUT0_INT_GPIO13] != NULL) { + hbnInt0CbfArra[HBN_OUT0_INT_GPIO13](); + } + } + if(SET==HBN_Get_INT_State(HBN_INT_RTC)){ + HBN_Clear_IRQ(HBN_INT_RTC); + HBN_Clear_RTC_INT(); + if(hbnInt0CbfArra[HBN_OUT0_INT_RTC] != NULL) { + hbnInt0CbfArra[HBN_OUT0_INT_RTC](); + } + } +} +#endif + +/****************************************************************************//** + * @brief HBN OUT1 interrupt handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void HBN_OUT1_IRQHandler(void) +{ + /* PIR */ + if(SET==HBN_Get_INT_State(HBN_INT_PIR)){ + HBN_Clear_IRQ(HBN_INT_PIR); + if(hbnInt1CbfArra[HBN_OUT1_INT_PIR] != NULL) { + hbnInt1CbfArra[HBN_OUT1_INT_PIR](); + } + } + /* BOR */ + if(SET==HBN_Get_INT_State(HBN_INT_BOR)){ + HBN_Clear_IRQ(HBN_INT_BOR); + if(hbnInt1CbfArra[HBN_OUT1_INT_BOR] != NULL) { + hbnInt1CbfArra[HBN_OUT1_INT_BOR](); + } + } + /* ACOMP0 */ + if(SET==HBN_Get_INT_State(HBN_INT_ACOMP0)){ + HBN_Clear_IRQ(HBN_INT_ACOMP0); + if(hbnInt1CbfArra[HBN_OUT1_INT_ACOMP0] != NULL) { + hbnInt1CbfArra[HBN_OUT1_INT_ACOMP0](); + } + } + /* ACOMP1 */ + if(SET==HBN_Get_INT_State(HBN_INT_ACOMP1)){ + HBN_Clear_IRQ(HBN_INT_ACOMP1); + if(hbnInt1CbfArra[HBN_OUT1_INT_ACOMP1] != NULL) { + hbnInt1CbfArra[HBN_OUT1_INT_ACOMP1](); + } + } +} +#endif + +/****************************************************************************//** + * @brief Enable HBN mode + * + * @param aGPIOIeCfg: AON GPIO IE config,Bit0->GPIO18. Bit(s) of Wakeup GPIO(s) must not be set to + * 0(s),say when use GPIO7 as wake up pin,aGPIOIeCfg should be 0x01. + * @param ldoLevel: LDO volatge level + * @param hbnLevel: HBN work level + * + * @return None + * +*******************************************************************************/ +void ATTR_TCM_SECTION HBN_Enable(uint8_t aGPIOIeCfg,HBN_LDO_LEVEL_Type ldoLevel,HBN_LEVEL_Type hbnLevel) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_HBN_LDO_LEVEL_TYPE(ldoLevel)); + CHECK_PARAM(IS_HBN_LEVEL_TYPE(hbnLevel)); + + /* Setting from guide */ + /* RAM Retion */ + BL_WR_REG(HBN_BASE,HBN_SRAM,0x24); + /* AON GPIO IE */ + tmpVal=BL_RD_REG(HBN_BASE,HBN_IRQ_MODE); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_REG_AON_PAD_IE_SMT,aGPIOIeCfg); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_REG_EN_HW_PU_PD); + BL_WR_REG(HBN_BASE,HBN_IRQ_MODE,tmpVal); + ///* Power off 1.8V */ + //tmpVal=BL_RD_REG(AON_BASE,AON_PMIP); + //tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_TOPLDO11_SOC); + //tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_TOPLDO18_RF); + //tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_TOPLDO18_IO); + ///* SOC11 enum is not the same as VDD11*/ + //tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_TOPLDO11_SOC_VOUT_SEL,ldoLevel-1); + //BL_WR_REG(AON_BASE,AON_PMIP,tmpVal); + // + ///* Set RT voltage */ + //tmpVal=BL_RD_REG(AON_BASE,AON); + //tmpVal=BL_CLR_REG_BIT(tmpVal,AON_TOPLDO18_IO_SW3); + //tmpVal=BL_CLR_REG_BIT(tmpVal,AON_TOPLDO18_IO_SW2); + //tmpVal=BL_CLR_REG_BIT(tmpVal,AON_TOPLDO18_IO_SW1); + //tmpVal=BL_CLR_REG_BIT(tmpVal,AON_TOPLDO18_IO_BYPASS); + //tmpVal=BL_CLR_REG_BIT(tmpVal,AON_PU_LDO18_AON); + ///* RT11 enum is not the same as VDD11*/ + //tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_TOPLDO11_RT_VOUT_SEL,ldoLevel-1); + //tmpVal=BL_SET_REG_BITS_VAL(tmpVal,AON_VDD11_SEL,ldoLevel); + //BL_WR_REG(AON_BASE,AON,tmpVal); + + /* Select RC32M */ + tmpVal=BL_RD_REG(HBN_BASE,HBN_GLB); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,HBN_ROOT_CLK_SEL,0); + BL_WR_REG(HBN_BASE,HBN_GLB,tmpVal); + __NOP();__NOP();__NOP();__NOP(); + + /* Set HBN flag */ + BL_WR_REG(HBN_BASE,HBN_RSV0,HBN_STATUS_ENTER_FLAG); + + tmpVal=BL_RD_REG(HBN_BASE,HBN_CTL); + /* Set HBN level, (HBN_PWRDN_HBN_RAM not use) */ + switch(hbnLevel){ + case HBN_LEVEL_0: + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PWRDN_HBN_CORE); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PWRDN_HBN_RTC); + break; + + case HBN_LEVEL_1: + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PWRDN_HBN_CORE); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PWRDN_HBN_RTC); + break; + + case HBN_LEVEL_2: + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PWRDN_HBN_CORE); + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PWRDN_HBN_RTC); + break; + + case HBN_LEVEL_3: + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PWRDN_HBN_CORE); + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_PWRDN_HBN_RTC); + break; + + default : + break; + } + /* Set power on option:0 for por reset twice for robust 1 for reset only once*/ + tmpVal=BL_CLR_REG_BIT(tmpVal,HBN_PWR_ON_OPTION); + BL_WR_REG(HBN_BASE,HBN_CTL,tmpVal); + + /* Enable HBN mode */ + tmpVal=BL_RD_REG(HBN_BASE,HBN_CTL); + tmpVal=BL_SET_REG_BIT(tmpVal,HBN_MODE); + BL_WR_REG(HBN_BASE,HBN_CTL,tmpVal); + + while(1){ + BL702_Delay_MS(1000); + } +} + +/*@} end of group HBN_Public_Functions */ + +/*@} end of group HBN */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_i2c.c b/drivers/bl702_driver/std_drv/src/bl702_i2c.c new file mode 100644 index 00000000..19ecac25 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_i2c.c @@ -0,0 +1,768 @@ +/** + ****************************************************************************** + * @file bl702_i2c.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_i2c.h" +#include "bl702_glb.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup I2C + * @{ + */ + +/** @defgroup I2C_Private_Macros + * @{ + */ +#define I2C_FIFO_STATUS_TIMEOUT (160*1000*2) +#define PUT_UINT32_LE(n,b,i) \ +{ \ + (b)[(i) ] = (uint8_t) ( (n) ); \ + (b)[(i) + 1] = (uint8_t) ( (n) >> 8 ); \ + (b)[(i) + 2] = (uint8_t) ( (n) >> 16 ); \ + (b)[(i) + 3] = (uint8_t) ( (n) >> 24 ); \ +} + +/*@} end of group I2C_Private_Macros */ + +/** @defgroup I2C_Private_Types + * @{ + */ + +/*@} end of group I2C_Private_Types */ + +/** @defgroup I2C_Private_Variables + * @{ + */ +intCallback_Type * i2cIntCbfArra[I2C_ID_MAX][I2C_INT_ALL]= {{NULL}}; + +/*@} end of group I2C_Private_Variables */ + +/** @defgroup I2C_Global_Variables + * @{ + */ + +/*@} end of group I2C_Global_Variables */ + +/** @defgroup I2C_Private_Fun_Declaration + * @{ + */ + +/*@} end of group I2C_Private_Fun_Declaration */ + +/** @defgroup I2C_Private_Functions + * @{ + */ + +/****************************************************************************//** + * @brief I2C interrupt handler + * + * @param i2cNo: I2C ID type + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +static void I2C_IntHandler(I2C_ID_Type i2cNo) +{ + uint32_t tmpVal; + uint32_t I2Cx = I2C_BASE; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + + tmpVal = BL_RD_REG(I2Cx, I2C_INT_STS); + if(BL_IS_REG_BIT_SET(tmpVal,I2C_END_INT)){ + if(i2cIntCbfArra[i2cNo][I2C_TRANS_END_INT] != NULL){ + /* Call the callback function */ + i2cIntCbfArra[i2cNo][I2C_TRANS_END_INT](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,I2C_TXF_INT)){ + if(i2cIntCbfArra[i2cNo][I2C_TX_FIFO_READY_INT] != NULL){ + /* Call the callback function */ + i2cIntCbfArra[i2cNo][I2C_TX_FIFO_READY_INT](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,I2C_RXF_INT)){ + if(i2cIntCbfArra[i2cNo][I2C_RX_FIFO_READY_INT] != NULL){ + /* Call the callback function */ + i2cIntCbfArra[i2cNo][I2C_RX_FIFO_READY_INT](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,I2C_NAK_INT)){ + if(i2cIntCbfArra[i2cNo][I2C_NACK_RECV_INT] != NULL){ + /* Call the callback function */ + i2cIntCbfArra[i2cNo][I2C_NACK_RECV_INT](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,I2C_ARB_INT)){ + if(i2cIntCbfArra[i2cNo][I2C_ARB_LOST_INT] != NULL){ + /* Call the callback function */ + i2cIntCbfArra[i2cNo][I2C_ARB_LOST_INT](); + } + } + if(BL_IS_REG_BIT_SET(tmpVal,I2C_FER_INT)){ + if(i2cIntCbfArra[i2cNo][I2C_FIFO_ERR_INT] != NULL){ + /* Call the callback function */ + i2cIntCbfArra[i2cNo][I2C_FIFO_ERR_INT](); + } + } +} +#endif + +/*@} end of group I2C_Private_Functions */ + +/** @defgroup I2C_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief I2C write word data + * + * @param i2cNo: I2C ID type + * @param data: Data word + * + * @return None + * +*******************************************************************************/ +void I2C_SendWord(I2C_ID_Type i2cNo, uint32_t data) +{ + uint32_t I2Cx = I2C_BASE; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + BL_WR_REG(I2Cx, I2C_FIFO_WDATA, data); +} + +/****************************************************************************//** + * @brief I2C read word data + * + * @param i2cNo: I2C ID type + * + * @return word data + * +*******************************************************************************/ +uint32_t I2C_RecieveWord(I2C_ID_Type i2cNo) +{ + uint32_t I2Cx = I2C_BASE; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + return BL_RD_REG(I2Cx, I2C_FIFO_RDATA); +} + +/****************************************************************************//** + * @brief I2C enable + * + * @param i2cNo: I2C ID type + * + * @return None + * +*******************************************************************************/ +void I2C_Enable(I2C_ID_Type i2cNo) +{ + uint32_t tmpVal; + uint32_t I2Cx = I2C_BASE; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + + tmpVal = BL_RD_REG(I2Cx, I2C_FIFO_CONFIG_0); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_TX_FIFO_CLR); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_RX_FIFO_CLR); + BL_WR_REG(I2Cx, I2C_FIFO_CONFIG_0, tmpVal); + + tmpVal = BL_RD_REG(I2Cx, I2C_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_M_EN); + BL_WR_REG(I2Cx, I2C_CONFIG, tmpVal); +} + +/****************************************************************************//** + * @brief I2C disable + * + * @param i2cNo: I2C ID type + * + * @return None + * +*******************************************************************************/ +void I2C_Disable(I2C_ID_Type i2cNo) +{ + uint32_t tmpVal; + uint32_t I2Cx = I2C_BASE; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + + tmpVal = BL_RD_REG(I2Cx, I2C_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_M_EN); + BL_WR_REG(I2Cx, I2C_CONFIG, tmpVal); + + /* Clear I2C fifo */ + tmpVal = BL_RD_REG(I2Cx, I2C_FIFO_CONFIG_0); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_TX_FIFO_CLR); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_RX_FIFO_CLR); + BL_WR_REG(I2Cx, I2C_FIFO_CONFIG_0, tmpVal); + + /* Clear I2C interrupt status */ + tmpVal = BL_RD_REG(I2Cx, I2C_INT_STS); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_END_CLR); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_NAK_CLR); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_ARB_CLR); + BL_WR_REG(I2Cx, I2C_INT_STS, tmpVal); +} + +/****************************************************************************//** + * @brief I2C set global reset function + * + * @param i2cNo: I2C ID type + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type I2C_Reset(I2C_ID_Type i2cNo) +{ + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + + GLB_AHB_Slave1_Reset(BL_AHB_SLAVE1_I2C); + return SUCCESS; +} + +/****************************************************************************//** + * @brief I2C init function + * + * @param i2cNo: I2C ID type + * @param direct: I2C read or write direct + * @param cfg: I2C transfer config struct + * + * @return None + * +*******************************************************************************/ +void I2C_Init(I2C_ID_Type i2cNo, I2C_Direction_Type direct, I2C_Transfer_Cfg *cfg) +{ + uint32_t tmpVal; + uint32_t I2Cx = I2C_BASE; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + + /* Disable clock gate */ + GLB_AHB_Slave1_Clock_Gate(DISABLE,BL_AHB_SLAVE1_I2C); + + /* I2C write config */ + tmpVal = BL_RD_REG(I2Cx, I2C_CONFIG); + if(direct == I2C_WRITE){ + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_PKT_DIR); + }else{ + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_PKT_DIR); + } + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_SLV_ADDR, cfg->slaveAddr); + if(cfg->subAddrSize > 0){ + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_SUB_ADDR_EN); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_SUB_ADDR_BC, cfg->subAddrSize-1); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_SUB_ADDR_EN); + } + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_PKT_LEN, cfg->dataSize-1); + BL_WR_REG(I2Cx, I2C_CONFIG, tmpVal); + + /* Set sub address */ + BL_WR_REG(I2Cx, I2C_SUB_ADDR, cfg->subAddr); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(I2C_IRQn,I2C_IRQHandler); +#endif +} + +/****************************************************************************//** + * @brief Set i2c prd + * + * @param i2cNo: I2C ID type + * @param phase: I2C phase value + * + * @return None + * +*******************************************************************************/ +void I2C_SetPrd(I2C_ID_Type i2cNo, uint8_t phase) +{ + uint32_t tmpVal; + uint32_t I2Cx = I2C_BASE; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + + //phase_cycles = (32000000 / phase / 4) - 1; + tmpVal = BL_RD_REG(I2Cx, I2C_PRD_START); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_PRD_S_PH_0, phase); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_PRD_S_PH_1, phase); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_PRD_S_PH_2, phase); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_PRD_S_PH_3, phase); + BL_WR_REG(I2Cx, I2C_PRD_START, tmpVal); + tmpVal = BL_RD_REG(I2Cx, I2C_PRD_STOP); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_PRD_P_PH_0, phase); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_PRD_P_PH_1, phase); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_PRD_P_PH_2, phase); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_PRD_P_PH_3, phase); + BL_WR_REG(I2Cx, I2C_PRD_STOP, tmpVal); + tmpVal = BL_RD_REG(I2Cx, I2C_PRD_DATA); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_PRD_D_PH_0, phase); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_PRD_D_PH_1, phase); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_PRD_D_PH_2, phase); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2C_CR_I2C_PRD_D_PH_3, phase); + BL_WR_REG(I2Cx, I2C_PRD_DATA, tmpVal); +} + +/****************************************************************************//** + * @brief I2C set scl output clock + * + * @param i2cNo: I2C ID type + * @param clk: Clock set + * + * @return None + * +*******************************************************************************/ +void I2C_ClockSet(I2C_ID_Type i2cNo, uint32_t clk) +{ + uint8_t bclkDiv = 0; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + + bclkDiv = GLB_Get_BCLK_Div(); + if(clk >= 100000){ + GLB_Set_I2C_CLK(1, 0); + I2C_SetPrd(i2cNo, (SystemCoreClockGet()/(bclkDiv+1)) / (clk*4)-1); + }else if(clk >= 8000){ + GLB_Set_I2C_CLK(1, 9); + I2C_SetPrd(i2cNo, ((SystemCoreClockGet()/(bclkDiv+1))/10) / (clk*4)-1); + }else if(clk >= 800){ + GLB_Set_I2C_CLK(1, 99); + I2C_SetPrd(i2cNo, ((SystemCoreClockGet()/(bclkDiv+1))/100) / (clk*4)-1); + }else{ + GLB_Set_I2C_CLK(1, 255); + I2C_SetPrd(i2cNo, ((SystemCoreClockGet()/(bclkDiv+1))/256) / (clk*4)-1); + } +} + +/****************************************************************************//** + * @brief I2C set scl sync + * + * @param i2cNo: I2C ID type + * @param enable: Enable or disable I2C scl sync + * + * @return None + * +*******************************************************************************/ +void I2C_SetSclSync(I2C_ID_Type i2cNo, uint8_t enable) +{ + uint32_t tmpVal; + uint32_t I2Cx = I2C_BASE; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + + tmpVal = BL_RD_REG(I2Cx, I2C_CONFIG); + if(enable){ + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_SCL_SYNC_EN); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_SCL_SYNC_EN); + } + BL_WR_REG(I2Cx, I2C_CONFIG, tmpVal); +} + +/****************************************************************************//** + * @brief Get i2c busy state + * + * @param i2cNo: I2C ID type + * + * @return RESET or SET + * +*******************************************************************************/ +BL_Sts_Type I2C_IsBusy(I2C_ID_Type i2cNo) +{ + uint32_t tmpVal; + uint32_t I2Cx = I2C_BASE; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + + tmpVal = BL_RD_REG(I2Cx, I2C_BUS_BUSY); + return ((BL_IS_REG_BIT_SET(tmpVal, I2C_STS_I2C_BUS_BUSY)) ? SET: RESET); +} + +/****************************************************************************//** + * @brief Get i2c transfer end state + * + * @param i2cNo: I2C ID type + * + * @return RESET or SET + * +*******************************************************************************/ +BL_Sts_Type I2C_TransferEndStatus(I2C_ID_Type i2cNo) +{ + uint32_t tmpVal; + uint32_t I2Cx = I2C_BASE; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + + tmpVal = BL_RD_REG(I2Cx, I2C_INT_STS); + return ((BL_IS_REG_BIT_SET(tmpVal, I2C_END_INT)) ? SET: RESET); +} + +/****************************************************************************//** + * @brief I2C master write block data + * + * @param i2cNo: I2C ID type + * @param cfg: I2C transfer config struct + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type I2C_MasterSendBlocking(I2C_ID_Type i2cNo, I2C_Transfer_Cfg *cfg) +{ + uint8_t i; + uint32_t timeOut = 0; + uint32_t temp = 0; + uint32_t I2Cx = I2C_BASE; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + + I2C_Disable(i2cNo); + I2C_Init(i2cNo, I2C_WRITE, cfg); + I2C_Enable(i2cNo); + + /* Set I2C write data */ + for(i=0; idataSize; i++){ + temp += (cfg->data[i] << ((i % 4) * 8)); + if((i + 1) % 4 == 0){ + timeOut = I2C_FIFO_STATUS_TIMEOUT; + while(BL_GET_REG_BITS_VAL(BL_RD_REG(I2Cx, I2C_FIFO_CONFIG_1), I2C_TX_FIFO_CNT) == 0){ + timeOut--; + if(timeOut == 0){ + I2C_Disable(i2cNo); + return TIMEOUT; + } + } + BL_WR_REG(I2Cx, I2C_FIFO_WDATA, temp); + temp = 0; + } + } + if((cfg->dataSize%4) != 0){ + timeOut = I2C_FIFO_STATUS_TIMEOUT; + while(BL_GET_REG_BITS_VAL(BL_RD_REG(I2Cx, I2C_FIFO_CONFIG_1), I2C_TX_FIFO_CNT) == 0){ + timeOut--; + if(timeOut == 0){ + I2C_Disable(i2cNo); + return TIMEOUT; + } + } + BL_WR_REG(I2Cx, I2C_FIFO_WDATA, temp); + } + + timeOut = I2C_FIFO_STATUS_TIMEOUT; + while(I2C_IsBusy(i2cNo) || !I2C_TransferEndStatus(i2cNo)){ + timeOut--; + if(timeOut == 0){ + I2C_Disable(i2cNo); + return TIMEOUT; + } + } + + I2C_Disable(i2cNo); + return SUCCESS; +} + +/****************************************************************************//** + * @brief I2C master read block data + * + * @param i2cNo: I2C ID type + * @param cfg: I2C transfer config struct + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type I2C_MasterReceiveBlocking(I2C_ID_Type i2cNo, I2C_Transfer_Cfg *cfg) +{ + uint8_t i = 0; + uint32_t timeOut = 0; + uint32_t temp = 0; + uint32_t I2Cx = I2C_BASE; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + + I2C_Disable(i2cNo); + I2C_Init(i2cNo, I2C_READ, cfg); + I2C_Enable(i2cNo); + + /* Read I2C data */ + while(cfg->dataSize - i >= 4){ + timeOut = I2C_FIFO_STATUS_TIMEOUT; + while(BL_GET_REG_BITS_VAL(BL_RD_REG(I2Cx, I2C_FIFO_CONFIG_1), I2C_RX_FIFO_CNT) == 0){ + timeOut--; + if(timeOut == 0){ + I2C_Disable(i2cNo); + return TIMEOUT; + } + } + temp = BL_RD_REG(I2Cx, I2C_FIFO_RDATA); + PUT_UINT32_LE(temp, cfg->data, i); + i += 4; + } + if(i < cfg->dataSize){ + timeOut = I2C_FIFO_STATUS_TIMEOUT; + while(BL_GET_REG_BITS_VAL(BL_RD_REG(I2Cx, I2C_FIFO_CONFIG_1), I2C_RX_FIFO_CNT) == 0){ + timeOut--; + if(timeOut == 0){ + I2C_Disable(i2cNo); + return TIMEOUT; + } + } + temp = BL_RD_REG(I2Cx, I2C_FIFO_RDATA); + while(i < cfg->dataSize){ + cfg->data[i] = (temp & 0xff); + temp = (temp >> 8); + i ++; + } + } + + timeOut = I2C_FIFO_STATUS_TIMEOUT; + while(I2C_IsBusy(i2cNo) || !I2C_TransferEndStatus(i2cNo)){ + timeOut--; + if(timeOut == 0){ + I2C_Disable(i2cNo); + return TIMEOUT; + } + } + + I2C_Disable(i2cNo); + return SUCCESS; +} + +/****************************************************************************//** + * @brief Mask/Unmask the I2C interrupt + * + * @param i2cNo: I2C ID type + * @param intType: Specifies the interrupt type + * @param intMask: Enable/Disable Specified interrupt type + * + * @return None + * +*******************************************************************************/ +void I2C_IntMask(I2C_ID_Type i2cNo, I2C_INT_Type intType, BL_Mask_Type intMask) +{ + uint32_t tmpVal; + uint32_t I2Cx = I2C_BASE; + + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + CHECK_PARAM(IS_I2C_INT_TYPE(intType)); + CHECK_PARAM(IS_BL_MASK_TYPE(intMask)); + + tmpVal = BL_RD_REG(I2Cx, I2C_INT_STS); + switch(intType) + { + case I2C_TRANS_END_INT: + if(intMask == UNMASK) + { + /* UNMASK(Enable) this interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_END_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_END_MASK); + } + else + { + /* MASK(Disable) this interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_END_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_END_MASK); + } + break; + case I2C_TX_FIFO_READY_INT: + if(intMask == UNMASK) + { + /* UNMASK(Enable) this interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_TXF_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_TXF_MASK); + } + else + { + /* MASK(Disable) this interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_TXF_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_TXF_MASK); + } + break; + case I2C_RX_FIFO_READY_INT: + if(intMask == UNMASK) + { + /* UNMASK(Enable) this interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_RXF_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_RXF_MASK); + } + else + { + /* MASK(Disable) this interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_RXF_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_RXF_MASK); + } + break; + case I2C_NACK_RECV_INT: + if(intMask == UNMASK) + { + /* UNMASK(Enable) this interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_NAK_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_NAK_MASK); + } + else + { + /* MASK(Disable) this interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_NAK_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_NAK_MASK); + } + break; + case I2C_ARB_LOST_INT: + if(intMask == UNMASK) + { + /* UNMASK(Enable) this interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_ARB_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_ARB_MASK); + } + else + { + /* MASK(Disable) this interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_ARB_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_ARB_MASK); + } + break; + case I2C_FIFO_ERR_INT: + if(intMask == UNMASK) + { + /* UNMASK(Enable) this interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_FER_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_FER_MASK); + } + else + { + /* MASK(Disable) this interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_FER_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_FER_MASK); + } + break; + case I2C_INT_ALL: + if(intMask == UNMASK) + { + /* UNMASK(Enable) this interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_END_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_TXF_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_RXF_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_NAK_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_ARB_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_FER_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_END_MASK); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_TXF_MASK); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_RXF_MASK); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_NAK_MASK); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_ARB_MASK); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_FER_MASK); + } + else + { + /* MASK(Disable) this interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_END_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_TXF_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_RXF_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_NAK_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_ARB_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2C_CR_I2C_FER_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_END_MASK); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_TXF_MASK); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_RXF_MASK); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_NAK_MASK); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_ARB_MASK); + tmpVal = BL_SET_REG_BIT(tmpVal, I2C_CR_I2C_FER_MASK); + } + break; + + default: + break; + } + BL_WR_REG(I2Cx, I2C_INT_STS, tmpVal); +} + +/****************************************************************************//** + * @brief Install I2C interrupt callback function + * + * @param i2cNo: I2C ID type + * @param intType: Specifies the interrupt type + * @param cbFun: Pointer to interrupt callback function. The type should be void (*fn)(void) + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void I2C_Int_Callback_Install(I2C_ID_Type i2cNo, I2C_INT_Type intType, intCallback_Type* cbFun) +{ + /* Check the parameters */ + CHECK_PARAM(IS_I2C_ID_TYPE(i2cNo)); + CHECK_PARAM(IS_I2C_INT_TYPE(intType)); + + i2cIntCbfArra[i2cNo][intType] = cbFun; +} +#endif + +/****************************************************************************//** + * @brief I2C IRQ handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void I2C_IRQHandler(void) +{ + I2C_IntHandler(I2C0_ID); +} +#endif + + +/*@} end of group I2C_Public_Functions */ + +/*@} end of group I2C */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_i2c_gpio_sim.c b/drivers/bl702_driver/std_drv/src/bl702_i2c_gpio_sim.c new file mode 100644 index 00000000..bffce800 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_i2c_gpio_sim.c @@ -0,0 +1,456 @@ +/** + ****************************************************************************** + * @file bl702_i2c_gpio_sim.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_glb.h" +#include "bl702_gpio.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup I2C_GPIO_SIM + * @{ + */ + +/** @defgroup I2C_GPIO_SIM_Private_Macros + * @{ + */ +#define SCL_H GLB_GPIO_Write(sclPin,1) +#define SCL_L GLB_GPIO_Write(sclPin,0) +#define SDA_H GLB_GPIO_Write(sdaPin,1) +#define SDA_L GLB_GPIO_Write(sdaPin,0) +#define SDA_read GLB_GPIO_Read(sdaPin) +#define I2C_Delay_US(a) BL702_Delay_US(a) +#define I2C_Delay_Const I2C_Delay_US(2) + +/*@} end of group I2C_GPIO_SIM_Private_Macros */ + +/** @defgroup I2C_GPIO_SIM_Private_Types + * @{ + */ + +/*@} end of group I2C_GPIO_SIM_Private_Types */ + +/** @defgroup I2C_GPIO_SIM_Private_Variables + * @{ + */ +static GLB_GPIO_Type sclPin; +static GLB_GPIO_Type sdaPin; +static uint8_t sda_out=0; + +/*@} end of group I2C_GPIO_SIM_Private_Variables */ + +/** @defgroup I2C_GPIO_SIM_Global_Variables + * @{ + */ + +/*@} end of group I2C_GPIO_SIM_Global_Variables */ + +/** @defgroup I2C_GPIO_SIM_Private_Fun_Declaration + * @{ + */ + +/*@} end of group I2C_GPIO_SIM_Private_Fun_Declaration */ + +/** @defgroup I2C_GPIO_SIM_Private_Functions + * @{ + */ + +/*@} end of group I2C_GPIO_SIM_Private_Functions */ + +/** @defgroup I2C_GPIO_SIM_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief I2C GPIO init function + * + * @param sclGPIOPin: I2C SCL GPIO pin + * @param sdaGPIOPin: I2C SDA GPIO pin + * + * @return None + * +*******************************************************************************/ +void I2C_GPIO_Sim_Init(GLB_GPIO_Type sclGPIOPin,GLB_GPIO_Type sdaGPIOPin) +{ + GLB_GPIO_Cfg_Type cfg; + uint8_t gpiopins[2]; + uint8_t gpiofuns[2]; + int i; + + sclPin=sclGPIOPin; + sdaPin=sdaGPIOPin; + + cfg.pullType=GPIO_PULL_UP; + cfg.drive=1; + cfg.smtCtrl=1; + cfg.gpioMode=GPIO_MODE_OUTPUT; + + gpiopins[0]=sclPin; + gpiopins[1]=sdaPin; + gpiofuns[0]=11; + gpiofuns[1]=11; + + for(i=0;i 25){ + SCL_L; + return 0; + } + } + SCL_L; + + return 1; +} + +/****************************************************************************//** + * @brief I2C send byte function + * + * @param Data: send data + * + * @return None + * +*******************************************************************************/ +void I2C_SendByte(uint8_t Data) +{ + uint8_t cnt; + + I2C_SDA_OUT(); + + for(cnt=0; cnt<8; cnt++){ + SCL_L; + I2C_Delay_Const; + if(Data & 0x80){ + SDA_H; + } + else{ + SDA_L; + } + Data <<= 1; + I2C_Delay_Const; + SCL_H; + I2C_Delay_Const; + } + SCL_L; + + I2C_Delay_Const; +} + +/****************************************************************************//** + * @brief I2C read byte function + * + * @param ack: i2c ack byte + * + * @return None + * +*******************************************************************************/ +uint8_t I2C_ReadByte(uint8_t ack) +{ + uint8_t cnt; + uint8_t data=0; + + I2C_SDA_IN(); + + for(cnt=0; cnt<8; cnt++){ + SCL_L; + I2C_Delay_Const; + + SCL_H; + I2C_Delay_Const; + data <<= 1; + if(SDA_read){ + data |= 0x01; + } + } + if(ack == 1){ + I2C_Ack(); + } + else{ + I2C_NoAck(); + } + + return data; +} + +/****************************************************************************//** + * @brief SCCB init function + * + * @param sclGPIOPin: I2C SCL GPIO pin + * @param sdaGPIOPin: I2C SDA GPIO pin + * + * @return None + * +*******************************************************************************/ +int SCCB_Init(GLB_GPIO_Type sclGPIOPin,GLB_GPIO_Type sdaGPIOPin) +{ + I2C_GPIO_Sim_Init(sclGPIOPin,sdaGPIOPin); + return 0; +} + +/****************************************************************************//** + * @brief SCCB write function + * + * @param slave_addr: salve addr + * @param data: write data + * @param wrsize: write data len + * + * @return None + * +*******************************************************************************/ +int SCCB_Write(uint8_t slave_addr, uint8_t* data,uint32_t wrsize) +{ + uint32_t i=0; + + I2C_Start(); + + I2C_SendByte((slave_addr<<1)|0); + if(!I2C_GetAck()){ + I2C_Stop(); + return -1; + } + for(i=0;i
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_i2s.h" +#include "bl702_glb.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup I2S + * @{ + */ + +/** @defgroup I2S_Private_Macros + * @{ + */ + +/*@} end of group I2S_Private_Macros */ + +/** @defgroup I2S_Private_Types + * @{ + */ + +/*@} end of group I2S_Private_Types */ + +/** @defgroup I2S_Private_Variables + * @{ + */ + +/*@} end of group I2S_Private_Variables */ + +/** @defgroup I2S_Global_Variables + * @{ + */ + +/*@} end of group I2S_Global_Variables */ + +/** @defgroup I2S_Private_Fun_Declaration + * @{ + */ + +/*@} end of group I2S_Private_Fun_Declaration */ + +/** @defgroup I2S_Private_Functions + * @{ + */ + +/*@} end of group I2S_Private_Functions */ + +/** @defgroup I2S_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief I2S BCLK config + * + * @param i2sCfg: I2S configuration pointer + * + * @return NONE + * +*******************************************************************************/ +void I2S_SetBclkPeriod(I2S_CFG_Type *i2sCfg) +{ + uint32_t overSampleRate; + uint32_t bclkDivCnt; + uint32_t tmpVal; + + CHECK_PARAM(IS_I2S_FRAME_SIZE_TYPE(i2sCfg->frameSize)); + + overSampleRate = i2sCfg->audioFreqHz/i2sCfg->sampleFreqHz; + switch(i2sCfg->frameSize) + { + case I2S_SIZE_FRAME_8: + bclkDivCnt = overSampleRate/16; + break; + case I2S_SIZE_FRAME_16: + bclkDivCnt = overSampleRate/32; + break; + case I2S_SIZE_FRAME_24: + bclkDivCnt = overSampleRate/48; + break; + case I2S_SIZE_FRAME_32: + bclkDivCnt = overSampleRate/64; + break; + default: + bclkDivCnt = overSampleRate/16; + break; + } + bclkDivCnt = (bclkDivCnt/2)-1; + + tmpVal = (bclkDivCnt << 16) | bclkDivCnt; + BL_WR_REG(I2S_BASE,I2S_BCLK_CONFIG,tmpVal); +} + +/****************************************************************************//** + * @brief I2S configuration + * + * @param i2sCfg: I2S configuration pointer + * + * @return NONE + * +*******************************************************************************/ +void I2S_Init(I2S_CFG_Type *i2sCfg) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_I2S_ENDIAN_TYPE(i2sCfg->endianType)); + CHECK_PARAM(IS_I2S_MODE_TYPE(i2sCfg->modeType)); + CHECK_PARAM(IS_I2S_FRAME_SIZE_TYPE(i2sCfg->frameSize)); + CHECK_PARAM(IS_I2S_FS_MODE_TYPE(i2sCfg->fsMode)); + CHECK_PARAM(IS_I2S_FS_CHANNEL_TYPE(i2sCfg->fsChannel)); + CHECK_PARAM(IS_I2S_DATA_SIZE_TYPE(i2sCfg->dataSize)); + CHECK_PARAM(IS_I2S_MONO_MODE_CHANNEL(i2sCfg->monoModeChannel)); + + /* Disable clock gate */ + GLB_AHB_Slave1_Clock_Gate(DISABLE,BL_AHB_SLAVE1_I2S); + + tmpVal=BL_RD_REG(I2S_BASE, I2S_CONFIG); + + /* Set data endian*/ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_CR_ENDIAN,i2sCfg->endianType); + + /* Set I2S mode */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_CR_I2S_MODE,i2sCfg->modeType); + + /* Set BCLK invert */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_CR_I2S_BCLK_INV,i2sCfg->bclkInvert); + + /* Set FS size */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_CR_FRAME_SIZE,i2sCfg->frameSize); + + /* Set FS invert */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_CR_I2S_FS_INV,i2sCfg->fsInvert); + + /* Set FS mode */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_CR_FS_1T_MODE,i2sCfg->fsMode); + + /* Set FS channel mode */ + + switch(i2sCfg->fsChannel){ + case I2S_FS_CHANNELS_2: + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_CR_FS_3CH_MODE); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_CR_FS_4CH_MODE); + break; + case I2S_FS_CHANNELS_3: + tmpVal = BL_SET_REG_BIT(tmpVal, I2S_CR_FS_3CH_MODE); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_CR_FS_4CH_MODE); + break; + case I2S_FS_CHANNELS_4: + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_CR_FS_3CH_MODE); + tmpVal = BL_SET_REG_BIT(tmpVal, I2S_CR_FS_4CH_MODE); + break; + default: + break; + } + + /* Set Data size */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_CR_DATA_SIZE,i2sCfg->dataSize); + + /* Set Data offset */ + if(i2sCfg->dataOffset!=0){ + tmpVal = BL_SET_REG_BIT(tmpVal, I2S_CR_OFS_EN); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_CR_OFS_CNT,i2sCfg->dataOffset-1); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_CR_OFS_EN); + } + + /* Set mono mode */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_CR_MONO_MODE,i2sCfg->monoMode); + + /* Set rx mono mode channel left or right */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_CR_MONO_RX_CH,i2sCfg->monoModeChannel); + + /* Clear mute mode */ + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_CR_MUTE_MODE); + + BL_WR_REG(I2S_BASE, I2S_CONFIG, tmpVal); + + I2S_SetBclkPeriod(i2sCfg); +} + +/****************************************************************************//** + * @brief I2S configure FIFO function + * + * @param fifoCfg: FIFO configuration structure pointer + * + * @return None + * +*******************************************************************************/ +void I2S_FifoConfig(I2S_FifoCfg_Type *fifoCfg) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(I2S_BASE, I2S_FIFO_CONFIG_0); + /* Set packed mode */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_CR_FIFO_LR_MERGE,fifoCfg->lRMerge); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_CR_FIFO_LR_EXCHG,fifoCfg->frameDataExchange); + /* Clear tx and rx FIFO signal */ + tmpVal = BL_SET_REG_BIT(tmpVal, I2S_TX_FIFO_CLR); + tmpVal = BL_SET_REG_BIT(tmpVal, I2S_RX_FIFO_CLR); + + /* Set DMA config */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_DMA_TX_EN,fifoCfg->txfifoDmaEnable); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_DMA_RX_EN,fifoCfg->rxfifoDmaEnable); + + BL_WR_REG(I2S_BASE, I2S_FIFO_CONFIG_0,tmpVal); + + /* Set CLR signal to 0*/ + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_TX_FIFO_CLR); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_RX_FIFO_CLR); + BL_WR_REG(I2S_BASE, I2S_FIFO_CONFIG_0,tmpVal); + + tmpVal=BL_RD_REG(I2S_BASE, I2S_FIFO_CONFIG_1); + /* Set TX and RX FIFO threshold */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_TX_FIFO_TH,fifoCfg->txFifoLevel); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, I2S_RX_FIFO_TH,fifoCfg->rxFifoLevel); + + BL_WR_REG(I2S_BASE, I2S_FIFO_CONFIG_1,tmpVal); +} + +/****************************************************************************//** + * @brief I2S configure IO function + * + * @param ioCfg: IO configuration structure pointer + * + * @return None + * +*******************************************************************************/ +void I2S_IOConfig(I2S_IOCfg_Type *ioCfg) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(I2S_BASE,I2S_IO_CONFIG); + /* Enable or disable deglitch */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,I2S_CR_DEG_EN,ioCfg->deglitchEn); + + /* Set deglitch cycle count */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,I2S_CR_DEG_CNT,ioCfg->deglitchCnt); + + /* Enable or disable inverse BCLK signal */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,I2S_CR_I2S_BCLK_INV,ioCfg->inverseBCLK); + + /* Enable or disable inverse FS signal */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,I2S_CR_I2S_FS_INV,ioCfg->inverseFS); + + /* Enable or disable inverse RX signal */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,I2S_CR_I2S_RXD_INV,ioCfg->inverseRX); + + /* Enable or disable inverse TX signal */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,I2S_CR_I2S_TXD_INV,ioCfg->inverseTX); + + BL_WR_REG(I2S_BASE,I2S_IO_CONFIG,tmpVal); +} + +/****************************************************************************//** + * @brief Enable I2S + * + * @param roleType: I2S master or slave + * + * @return None + * +*******************************************************************************/ +void I2S_Enable(I2S_Role_Type roleType) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_I2S_ROLE_TYPE(roleType)); + + tmpVal = BL_RD_REG(I2S_BASE, I2S_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal, I2S_CR_I2S_TXD_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2S_CR_I2S_RXD_EN); + + /* Set role type */ + if (I2S_ROLE_MASTER == roleType) { + tmpVal = BL_SET_REG_BIT(tmpVal, I2S_CR_I2S_M_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_CR_I2S_S_EN); + } else if (I2S_ROLE_SLAVE == roleType) { + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_CR_I2S_M_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, I2S_CR_I2S_S_EN); + } + + BL_WR_REG(I2S_BASE, I2S_CONFIG, tmpVal); +} + +/****************************************************************************//** + * @brief Disable I2S + * + * @param None + * + * @return None + * +*******************************************************************************/ +void I2S_Disable(void) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(I2S_BASE, I2S_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_CR_I2S_TXD_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_CR_I2S_RXD_EN); + + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_CR_I2S_M_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_CR_I2S_S_EN); + BL_WR_REG(I2S_BASE, I2S_CONFIG, tmpVal); +} + +/****************************************************************************//** + * @brief I2S read data + * + * @param None + * + * @return Data read + * +*******************************************************************************/ +uint32_t I2S_Read(void) +{ + while (0 == BL_GET_REG_BITS_VAL(BL_RD_REG(I2S_BASE, I2S_FIFO_CONFIG_1), I2S_RX_FIFO_CNT)){}; + return BL_RD_REG(I2S_BASE, I2S_FIFO_RDATA); +} + +/****************************************************************************//** + * @brief I2S write data + * + * @param data: write data + * + * @return None + * +*******************************************************************************/ +void I2S_Write(uint32_t data) +{ + while (0 == BL_GET_REG_BITS_VAL(BL_RD_REG(I2S_BASE, I2S_FIFO_CONFIG_1), I2S_TX_FIFO_CNT)){}; + BL_WR_REG(I2S_BASE, I2S_FIFO_WDATA, data); +} + +/****************************************************************************//** + * @brief I2S set mute + * + * @param enabled: mute enabled or not + * + * @return None + * +*******************************************************************************/ +void I2S_Mute(BL_Fun_Type enabled) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(I2S_BASE, I2S_CONFIG); + if(enabled ? 1 : 0) { + tmpVal = BL_SET_REG_BIT(tmpVal, I2S_CR_MUTE_MODE); + } + else { + tmpVal = BL_CLR_REG_BIT(tmpVal, I2S_CR_MUTE_MODE); + } + BL_WR_REG(I2S_BASE, I2S_CONFIG, tmpVal); +} + +/****************************************************************************//** + * @brief I2S set 24-bit data align mode in fifo + * + * @param justType: Align mode + * + * @return None + * +*******************************************************************************/ +void I2S_SetFifoJustified(I2S_FIFO_24_Justified_Type justType) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_I2S_FIFO_24_JUSTIFIED_TYPE(justType)); + + tmpVal = BL_RD_REG(I2S_BASE,I2S_FIFO_CONFIG_0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,I2S_CR_FIFO_24B_LJ,justType); + BL_WR_REG(I2S_BASE,I2S_FIFO_CONFIG_0,tmpVal); +} + +/****************************************************************************//** + * @brief I2S flush + * + * @param None + * + * @return data count in TX FIFO + * +*******************************************************************************/ +uint32_t I2S_GetTxFIFO_AvlCnt(void) +{ + return BL_GET_REG_BITS_VAL(BL_RD_REG(I2S_BASE, I2S_FIFO_CONFIG_1), I2S_TX_FIFO_CNT); +} + +/****************************************************************************//** + * @brief I2S flush + * + * @param None + * + * @return data count in RX FIFO + * +*******************************************************************************/ +uint32_t I2S_GetRxFIFO_AvlCnt(void) +{ + return BL_GET_REG_BITS_VAL(BL_RD_REG(I2S_BASE, I2S_FIFO_CONFIG_1), I2S_RX_FIFO_CNT); +} + +/****************************************************************************//** + * @brief I2S flush + * + * @param None + * + * @return None + * +*******************************************************************************/ +void I2S_Flush(void) +{ + while (I2S_TX_FIFO_SIZE != I2S_GetTxFIFO_AvlCnt()); +} + + +/*@} end of group I2S_Public_Functions */ + +/*@} end of group I2S */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_ir.c b/drivers/bl702_driver/std_drv/src/bl702_ir.c new file mode 100644 index 00000000..cded373b --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_ir.c @@ -0,0 +1,1146 @@ +/** + ****************************************************************************** + * @file bl702_ir.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_ir.h" +#include "bl702_glb.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup IR + * @{ + */ + +/** @defgroup IR_Private_Macros + * @{ + */ +#define NEC_HEAD_H_MIN 17000 +#define NEC_HEAD_H_MAX 19000 +#define NEC_HEAD_L_MIN 8400 +#define NEC_HEAD_L_MAX 9600 +#define NEC_BIT0_H_MIN 525 +#define NEC_BIT0_H_MAX 1725 +#define RC5_ONE_PLUSE_MIN 1175 +#define RC5_ONE_PLUSE_MAX 2375 +#define RC5_TWO_PLUSE_MIN 2955 +#define RC5_TWO_PLUSE_MAX 4155 +#define IR_TX_INT_TIMEOUT_COUNT (100*160*1000) +#define IR_RX_INT_TIMEOUT_COUNT (100*160*1000) + +/*@} end of group IR_Private_Macros */ + +/** @defgroup IR_Private_Types + * @{ + */ + +/*@} end of group IR_Private_Types */ + +/** @defgroup IR_Private_Variables + * @{ + */ +static intCallback_Type * irIntCbfArra[IR_INT_ALL]= {NULL,NULL}; + + +/*@} end of group IR_Private_Variables */ + +/** @defgroup IR_Global_Variables + * @{ + */ + +/*@} end of group IR_Global_Variables */ + +/** @defgroup IR_Private_Fun_Declaration + * @{ + */ + +/*@} end of group IR_Private_Fun_Declaration */ + +/** @defgroup IR_Private_Functions + * @{ + */ + +/*@} end of group IR_Private_Functions */ + +/** @defgroup IR_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief IR RX IRQ handler function + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void IRRX_IRQHandler(void) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(IR_BASE,IRRX_INT_STS); + if(BL_IS_REG_BIT_SET(tmpVal,IRRX_END_INT) && !BL_IS_REG_BIT_SET(tmpVal,IR_CR_IRRX_END_MASK)){ + BL_WR_REG(IR_BASE,IRRX_INT_STS,BL_SET_REG_BIT(tmpVal,IR_CR_IRRX_END_CLR)); + if(irIntCbfArra[IR_INT_RX] != NULL){ + irIntCbfArra[IR_INT_RX](); + } + } +} +#endif + +/****************************************************************************//** + * @brief IR TX IRQ handler function + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void IRTX_IRQHandler(void) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(IR_BASE,IRTX_INT_STS); + if(BL_IS_REG_BIT_SET(tmpVal,IRTX_END_INT) && !BL_IS_REG_BIT_SET(tmpVal,IR_CR_IRTX_END_MASK)){ + BL_WR_REG(IR_BASE,IRTX_INT_STS,BL_SET_REG_BIT(tmpVal,IR_CR_IRTX_END_CLR)); + if(irIntCbfArra[IR_INT_TX] != NULL){ + irIntCbfArra[IR_INT_TX](); + } + } +} +#endif + +/****************************************************************************//** + * @brief IR tx initialization function + * + * @param irTxCfg: IR tx configuration structure pointer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type IR_TxInit(IR_TxCfg_Type *irTxCfg) +{ + uint32_t tmpVal; + + /* Disable clock gate */ + GLB_AHB_Slave1_Clock_Gate(DISABLE,BL_AHB_SLAVE1_IRR); + + tmpVal = BL_RD_REG(IR_BASE,IRTX_CONFIG); + /* Set data bit */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_DATA_NUM,irTxCfg->dataBits-1); + /* Set tail pulse */ + ENABLE == irTxCfg->tailPulseInverse ? (tmpVal=BL_SET_REG_BIT(tmpVal,IR_CR_IRTX_TAIL_HL_INV)):(tmpVal=BL_CLR_REG_BIT(tmpVal,IR_CR_IRTX_TAIL_HL_INV)); + ENABLE == irTxCfg->tailPulse ? (tmpVal=BL_SET_REG_BIT(tmpVal,IR_CR_IRTX_TAIL_EN)):(tmpVal=BL_CLR_REG_BIT(tmpVal,IR_CR_IRTX_TAIL_EN)); + /* Set head pulse */ + ENABLE == irTxCfg->headPulseInverse ? (tmpVal=BL_SET_REG_BIT(tmpVal,IR_CR_IRTX_HEAD_HL_INV)):(tmpVal=BL_CLR_REG_BIT(tmpVal,IR_CR_IRTX_HEAD_HL_INV)); + ENABLE == irTxCfg->headPulse ? (tmpVal=BL_SET_REG_BIT(tmpVal,IR_CR_IRTX_HEAD_EN)):(tmpVal=BL_CLR_REG_BIT(tmpVal,IR_CR_IRTX_HEAD_EN)); + /* Enable or disable logic 1 and 0 pulse inverse */ + ENABLE == irTxCfg->logic1PulseInverse ? (tmpVal=BL_SET_REG_BIT(tmpVal,IR_CR_IRTX_LOGIC1_HL_INV)):(tmpVal=BL_CLR_REG_BIT(tmpVal,IR_CR_IRTX_LOGIC1_HL_INV)); + ENABLE == irTxCfg->logic0PulseInverse ? (tmpVal=BL_SET_REG_BIT(tmpVal,IR_CR_IRTX_LOGIC0_HL_INV)):(tmpVal=BL_CLR_REG_BIT(tmpVal,IR_CR_IRTX_LOGIC0_HL_INV)); + /* Enable or disable data pulse */ + ENABLE == irTxCfg->dataPulse ? (tmpVal=BL_SET_REG_BIT(tmpVal,IR_CR_IRTX_DATA_EN)):(tmpVal=BL_CLR_REG_BIT(tmpVal,IR_CR_IRTX_DATA_EN)); + /* Enable or disable output modulation */ + ENABLE == irTxCfg->outputModulation ? (tmpVal=BL_SET_REG_BIT(tmpVal,IR_CR_IRTX_MOD_EN)):(tmpVal=BL_CLR_REG_BIT(tmpVal,IR_CR_IRTX_MOD_EN)); + /* Enable or disable output inverse */ + ENABLE == irTxCfg->outputInverse ? (tmpVal=BL_SET_REG_BIT(tmpVal,IR_CR_IRTX_OUT_INV)):(tmpVal=BL_CLR_REG_BIT(tmpVal,IR_CR_IRTX_OUT_INV)); + + /* Write back */ + BL_WR_REG(IR_BASE,IRTX_CONFIG,tmpVal); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(IRTX_IRQn,IRTX_IRQHandler); +#endif + return SUCCESS; +} + +/****************************************************************************//** + * @brief IR tx pulse width configure function + * + * @param irTxPulseWidthCfg: IR tx pulse width configuration structure pointer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type IR_TxPulseWidthConfig(IR_TxPulseWidthCfg_Type *irTxPulseWidthCfg) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(IR_BASE,IRTX_PW); + /* Set logic 0 pulse phase 0 width */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_LOGIC0_PH0_W,irTxPulseWidthCfg->logic0PulseWidth_0-1); + /* Set logic 0 pulse phase 1 width */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_LOGIC0_PH1_W,irTxPulseWidthCfg->logic0PulseWidth_1-1); + /* Set logic 1 pulse phase 0 width */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_LOGIC1_PH0_W,irTxPulseWidthCfg->logic1PulseWidth_0-1); + /* Set logic 1 pulse phase 1 width */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_LOGIC1_PH1_W,irTxPulseWidthCfg->logic1PulseWidth_1-1); + /* Set head pulse phase 0 width */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_HEAD_PH0_W,irTxPulseWidthCfg->headPulseWidth_0-1); + /* Set head pulse phase 1 width */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_HEAD_PH1_W,irTxPulseWidthCfg->headPulseWidth_1-1); + /* Set tail pulse phase 0 width */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_TAIL_PH0_W,irTxPulseWidthCfg->tailPulseWidth_0-1); + /* Set tail pulse phase 1 width */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_TAIL_PH1_W,irTxPulseWidthCfg->tailPulseWidth_1-1); + BL_WR_REG(IR_BASE,IRTX_PW,tmpVal); + + tmpVal = BL_RD_REG(IR_BASE,IRTX_PULSE_WIDTH); + /* Set modulation phase 0 width */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_MOD_PH0_W,irTxPulseWidthCfg->moduWidth_0-1); + /* Set modulation phase 1 width */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_MOD_PH1_W,irTxPulseWidthCfg->moduWidth_1-1); + /* Set pulse width unit */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_PW_UNIT,irTxPulseWidthCfg->pulseWidthUnit-1); + BL_WR_REG(IR_BASE,IRTX_PULSE_WIDTH,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief IR tx software mode pulse width(multiples of pulse width unit) configure function + * + * @param irTxSWMPulseWidthCfg: IR tx software mode pulse width configuration structure pointer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type IR_TxSWMPulseWidthConfig(IR_TxSWMPulseWidthCfg_Type *irTxSWMPulseWidthCfg) +{ + /* Set swm pulse width,multiples of pulse width unit */ + BL_WR_REG(IR_BASE,IRTX_SWM_PW_0,irTxSWMPulseWidthCfg->swmData0); + BL_WR_REG(IR_BASE,IRTX_SWM_PW_1,irTxSWMPulseWidthCfg->swmData1); + BL_WR_REG(IR_BASE,IRTX_SWM_PW_2,irTxSWMPulseWidthCfg->swmData2); + BL_WR_REG(IR_BASE,IRTX_SWM_PW_3,irTxSWMPulseWidthCfg->swmData3); + BL_WR_REG(IR_BASE,IRTX_SWM_PW_4,irTxSWMPulseWidthCfg->swmData4); + BL_WR_REG(IR_BASE,IRTX_SWM_PW_5,irTxSWMPulseWidthCfg->swmData5); + BL_WR_REG(IR_BASE,IRTX_SWM_PW_6,irTxSWMPulseWidthCfg->swmData6); + BL_WR_REG(IR_BASE,IRTX_SWM_PW_7,irTxSWMPulseWidthCfg->swmData7); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief IR rx initialization function + * + * @param irRxCfg: IR rx configuration structure pointer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type IR_RxInit(IR_RxCfg_Type *irRxCfg) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_IR_RXMODE_TYPE(irRxCfg->rxMode)); + + /* Disable clock gate */ + GLB_AHB_Slave1_Clock_Gate(DISABLE,BL_AHB_SLAVE1_IRR); + + tmpVal = BL_RD_REG(IR_BASE,IRRX_CONFIG); + /* Set rx mode */ + switch(irRxCfg->rxMode) + { + case IR_RX_NEC: + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRRX_MODE,0x0); + break; + case IR_RX_RC5: + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRRX_MODE,0x1); + break; + case IR_RX_SWM: + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRRX_MODE,0x2); + break; + default: + break; + } + /* Enable or disable input inverse */ + ENABLE == irRxCfg->inputInverse ? (tmpVal=BL_SET_REG_BIT(tmpVal,IR_CR_IRRX_IN_INV)):(tmpVal=BL_CLR_REG_BIT(tmpVal,IR_CR_IRRX_IN_INV)); + /* Enable or disable rx input de-glitch function */ + ENABLE == irRxCfg->rxDeglitch ? (tmpVal=BL_SET_REG_BIT(tmpVal,IR_CR_IRRX_DEG_EN)):(tmpVal=BL_CLR_REG_BIT(tmpVal,IR_CR_IRRX_DEG_EN)); + /* Set de-glitch function cycle count */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRRX_DEG_CNT,irRxCfg->DeglitchCnt); + /* Write back */ + BL_WR_REG(IR_BASE,IRRX_CONFIG,tmpVal); + + tmpVal = BL_RD_REG(IR_BASE,IRRX_PW_CONFIG); + /* Set pulse width threshold to trigger end condition */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRRX_END_TH,irRxCfg->endThreshold-1); + /* Set pulse width threshold for logic0/1 detection */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRRX_DATA_TH,irRxCfg->dataThreshold-1); + /* Write back */ + BL_WR_REG(IR_BASE,IRRX_PW_CONFIG,tmpVal); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(IRRX_IRQn,IRRX_IRQHandler); +#endif + + return SUCCESS; +} + +/****************************************************************************//** + * @brief IR set default value of all registers function + * + * @param None + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type IR_DeInit(void) +{ + GLB_AHB_Slave1_Reset(BL_AHB_SLAVE1_IRR); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief IR enable function + * + * @param direct: IR direction type + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type IR_Enable(IR_Direction_Type direct) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_IR_DIRECTION_TYPE(direct)); + + if(direct == IR_TX || direct == IR_TXRX){ + /* Enable ir tx unit */ + tmpVal = BL_RD_REG(IR_BASE,IRTX_CONFIG); + BL_WR_REG(IR_BASE,IRTX_CONFIG,BL_SET_REG_BIT(tmpVal,IR_CR_IRTX_EN)); + } + + if(direct == IR_RX || direct == IR_TXRX){ + /* Enable ir rx unit */ + tmpVal = BL_RD_REG(IR_BASE,IRRX_CONFIG); + BL_WR_REG(IR_BASE,IRRX_CONFIG,BL_SET_REG_BIT(tmpVal,IR_CR_IRRX_EN)); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief IR disable function + * + * @param direct: IR direction type + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type IR_Disable(IR_Direction_Type direct) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_IR_DIRECTION_TYPE(direct)); + + if(direct == IR_TX || direct == IR_TXRX){ + /* Disable ir tx unit */ + tmpVal = BL_RD_REG(IR_BASE,IRTX_CONFIG); + BL_WR_REG(IR_BASE,IRTX_CONFIG,BL_CLR_REG_BIT(tmpVal,IR_CR_IRTX_EN)); + } + + if(direct == IR_RX || direct == IR_TXRX){ + /* Disable ir rx unit */ + tmpVal = BL_RD_REG(IR_BASE,IRRX_CONFIG); + BL_WR_REG(IR_BASE,IRRX_CONFIG,BL_CLR_REG_BIT(tmpVal,IR_CR_IRRX_EN)); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief IR tx software mode enable or disable function + * + * @param txSWM: Enable or disable + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type IR_TxSWM(BL_Fun_Type txSWM) +{ + uint32_t tmpVal; + + /* Enable or disable tx swm */ + tmpVal = BL_RD_REG(IR_BASE,IRTX_CONFIG); + if(ENABLE == txSWM){ + BL_WR_REG(IR_BASE,IRTX_CONFIG,BL_SET_REG_BIT(tmpVal,IR_CR_IRTX_SWM_EN)); + }else{ + BL_WR_REG(IR_BASE,IRTX_CONFIG,BL_CLR_REG_BIT(tmpVal,IR_CR_IRTX_SWM_EN)); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief IR clear rx fifo function + * + * @param None + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type IR_RxFIFOClear(void) +{ + uint32_t tmpVal; + + /* Clear rx fifo */ + tmpVal = BL_RD_REG(IR_BASE,IRRX_SWM_FIFO_CONFIG_0); + BL_WR_REG(IR_BASE,IRRX_SWM_FIFO_CONFIG_0,BL_SET_REG_BIT(tmpVal,IR_RX_FIFO_CLR)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief IR send data function + * + * @param irWord: IR tx data word 0 or 1 + * @param data: data to send + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type IR_SendData(IR_Word_Type irWord,uint32_t data) +{ + /* Check the parameters */ + CHECK_PARAM(IS_IR_WORD_TYPE(irWord)); + + /* Write word 0 or word 1 */ + if(IR_WORD_0 == irWord){ + BL_WR_REG(IR_BASE,IRTX_DATA_WORD0,data); + } + else{ + BL_WR_REG(IR_BASE,IRTX_DATA_WORD1,data); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief IR software mode send pulse width data function + * + * @param data: data to send + * @param length: Length of send buffer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type IR_SWMSendData(uint16_t *data,uint8_t length) +{ + uint8_t i = 0,j = 0; + uint16_t minData = data[0]; + uint32_t tmpVal; + uint32_t pwVal = 0; + uint32_t count = (length+7)/8; + + /* Search for min value */ + for(i=1;idata[i] && data[i]!=0){ + minData = data[i]; + } + } + + /* Set pulse width unit */ + tmpVal = BL_RD_REG(IR_BASE,IRTX_PULSE_WIDTH); + BL_WR_REG(IR_BASE,IRTX_PULSE_WIDTH,BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_PW_UNIT,minData)); + + /* Set tx SWM pulse width data as multiples of pulse width unit */ + for(i=0;i0){ + /* Read data */ + data[rxLen++] = BL_RD_REG(IR_BASE,IRRX_SWM_FIFO_RDATA)&0xffff; + } + return rxLen; +} + +/****************************************************************************//** + * @brief IR receive in NEC protocol + * + * @param address: Address + * @param command: Command + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type IR_ReceiveNEC(uint8_t* address,uint8_t* command) +{ + uint32_t tmpVal = IR_ReceiveData(IR_WORD_0); + + *address = tmpVal&0xff; + *command = (tmpVal>>16)&0xff; + + if((~(*address)&0xff) != ((tmpVal>>8)&0xff) || (~(*command)&0xff) != ((tmpVal>>24)&0xff)){ + return ERROR; + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief IR get rx data bit count function + * + * @param None + * + * @return IR rx data bit count + * +*******************************************************************************/ +uint8_t IR_GetRxDataBitCount(void) +{ + uint32_t tmpVal; + + /* Read rx data bit count */ + tmpVal = BL_RD_REG(IR_BASE,IRRX_DATA_COUNT); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,IR_STS_IRRX_DATA_CNT); + + return tmpVal; +} + +/****************************************************************************//** + * @brief IR get rx fifo count function + * + * @param None + * + * @return IR rx fifo available count + * +*******************************************************************************/ +uint8_t IR_GetRxFIFOCount(void) +{ + uint32_t tmpVal; + + /* Read rx fifo count */ + tmpVal = BL_RD_REG(IR_BASE,IRRX_SWM_FIFO_CONFIG_0); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,IR_RX_FIFO_CNT); + + return tmpVal; +} + +/****************************************************************************//** + * @brief IR learning to set rx and tx mode function + * + * @param data: Buffer to save data + * @param length: Length of data + * + * @return Protocol type + * +*******************************************************************************/ +IR_RxMode_Type IR_LearnToInit(uint32_t* data,uint8_t* length) +{ + uint32_t tmpVal; + uint32_t timeoutCnt = IR_RX_INT_TIMEOUT_COUNT; + + /* Disable clock gate */ + GLB_AHB_Slave1_Clock_Gate(DISABLE,BL_AHB_SLAVE1_IRR); + + /* Disable rx,set rx in software mode and enable rx input inverse */ + tmpVal = BL_RD_REG(IR_BASE,IRRX_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,IR_CR_IRRX_EN); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRRX_MODE,0x2); + tmpVal = BL_SET_REG_BIT(tmpVal,IR_CR_IRRX_IN_INV); + BL_WR_REG(IR_BASE,IRRX_CONFIG,tmpVal); + /* Set pulse width threshold to trigger end condition */ + tmpVal = BL_RD_REG(IR_BASE,IRRX_PW_CONFIG); + BL_WR_REG(IR_BASE,IRRX_PW_CONFIG,BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRRX_END_TH,19999)); + + /* Clear and mask rx interrupt */ + tmpVal = BL_RD_REG(IR_BASE,IRRX_INT_STS); + tmpVal = BL_SET_REG_BIT(tmpVal,IR_CR_IRRX_END_MASK); + BL_WR_REG(IR_BASE,IRRX_INT_STS,BL_SET_REG_BIT(tmpVal,IR_CR_IRRX_END_CLR)); + + /* Enable rx */ + tmpVal = BL_RD_REG(IR_BASE,IRRX_CONFIG); + BL_WR_REG(IR_BASE,IRRX_CONFIG,BL_SET_REG_BIT(tmpVal,IR_CR_IRRX_EN)); + + /* Wait for rx interrupt */ + while(SET != IR_GetIntStatus(IR_INT_RX)){ + timeoutCnt--; + if(timeoutCnt == 0){ + IR_Disable(IR_RX); + + return TIMEOUT; + } + } + + /* Disable rx */ + tmpVal = BL_RD_REG(IR_BASE,IRRX_CONFIG); + BL_WR_REG(IR_BASE,IRRX_CONFIG,BL_CLR_REG_BIT(tmpVal,IR_CR_IRRX_EN)); + + /* Clear rx interrupt */ + tmpVal = BL_RD_REG(IR_BASE,IRRX_INT_STS); + BL_WR_REG(IR_BASE,IRRX_INT_STS,BL_SET_REG_BIT(tmpVal,IR_CR_IRRX_END_CLR)); + + /*Receive data */ + *length = IR_GetRxFIFOCount(); + *length = IR_SWMReceiveData((uint16_t*)data,*length); + + /* Judge protocol type */ + if(NEC_HEAD_H_MIN<(data[0]&0xffff)&&(data[0]&0xffff)>16)&&(data[0]>>16)>16)&&(data[0]>>16)>16)&&(data[0]>>16)>16) != 0){ + /* Set tx in software mode */ + /* Tx configure */ + BL_WR_REG(IR_BASE,IRTX_CONFIG,*length<<12 | 0xc); + /* Set modulation phase width */ + BL_WR_REG(IR_BASE,IRTX_PULSE_WIDTH,0x22110000); + + return IR_RX_SWM; + }else{ + tmpVal = BL_RD_REG(IR_BASE,IRRX_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,IR_CR_IRRX_MODE); + if(tmpVal == 0){ + return IR_RX_NEC; + }else if(tmpVal == 1){ + return IR_RX_RC5; + }else{ + return IR_RX_SWM; + } + } +} + +/****************************************************************************//** + * @brief IR receive data according to mode which is learned function + * + * @param mode: Protocol type + * @param data: Buffer to save data + * + * @return Length of data + * +*******************************************************************************/ +uint8_t IR_LearnToReceive(IR_RxMode_Type mode,uint32_t* data) +{ + uint8_t length = 0; + uint32_t timeoutCnt = IR_RX_INT_TIMEOUT_COUNT; + + /* Check the parameters */ + CHECK_PARAM(IS_IR_RXMODE_TYPE(mode)); + + /* Disable ir rx */ + IR_Disable(IR_RX); + + /* Clear and mask rx interrupt */ + IR_ClrIntStatus(IR_INT_RX); + IR_IntMask(IR_INT_RX,MASK); + + /* Enable ir rx */ + IR_Enable(IR_RX); + + /* Wait for rx interrupt */ + while(SET != IR_GetIntStatus(IR_INT_RX)){ + timeoutCnt--; + if(timeoutCnt == 0){ + IR_Disable(IR_RX); + + return TIMEOUT; + } + } + + /* Disable ir rx */ + IR_Disable(IR_RX); + + /* Clear rx interrupt */ + IR_ClrIntStatus(IR_INT_RX); + + /* Receive data according to mode */ + if(mode == IR_RX_NEC || mode == IR_RX_RC5){ + /* Get data bit count */ + length = IR_GetRxDataBitCount(); + data[0] = IR_ReceiveData(IR_WORD_0); + }else{ + /* Get fifo count */ + length = IR_GetRxFIFOCount(); + length = IR_SWMReceiveData((uint16_t*)data,length); + } + + return length; +} + + +/****************************************************************************//** + * @brief IR send data according to mode which is learned function + * + * @param mode: Protocol type + * @param data: Buffer of data to send + * @param length: Length of data + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type IR_LearnToSend(IR_RxMode_Type mode,uint32_t* data,uint8_t length) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_IR_RXMODE_TYPE(mode)); + + /* Set send length */ + tmpVal = BL_RD_REG(IR_BASE,IRTX_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,IR_CR_IRTX_DATA_NUM,length-1); + BL_WR_REG(IR_BASE,IRTX_CONFIG,tmpVal); + + if(mode == IR_RX_NEC || mode == IR_RX_RC5){ + IR_SendCommand(0,data[0]); + }else{ + IR_SWMSendCommand((uint16_t*)data,length); + } + + return SUCCESS; +} + + +/****************************************************************************//** + * @brief IR init to control led function + * + * @param clk: Clock source + * @param div: Clock division(1~64) + * @param unit: Pulse width unit(multiples of clock pulse width, 1~4096) + * @param code0H: code 0 high level time(multiples of pulse width unit, 1~16) + * @param code0L: code 0 low level time(multiples of pulse width unit, 1~16) + * @param code1H: code 1 high level time(multiples of pulse width unit, 1~16) + * @param code1L: code 1 low level time(multiples of pulse width unit, 1~16) + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Sts_Type IR_LEDInit(HBN_XCLK_CLK_Type clk,uint8_t div,uint8_t unit,uint8_t code0H,uint8_t code0L,uint8_t code1H,uint8_t code1L) +{ + IR_TxCfg_Type txCfg = { + 24, /* 24-bit data */ + DISABLE, /* Disable signal of tail pulse inverse */ + DISABLE, /* Disable signal of tail pulse */ + DISABLE, /* Disable signal of head pulse inverse */ + DISABLE, /* Disable signal of head pulse */ + DISABLE, /* Disable signal of logic 1 pulse inverse */ + DISABLE, /* Disable signal of logic 0 pulse inverse */ + ENABLE, /* Enable signal of data pulse */ + DISABLE, /* Disable signal of output modulation */ + ENABLE /* Enable signal of output inverse */ + }; + + IR_TxPulseWidthCfg_Type txPWCfg = { + code0L, /* Pulse width of logic 0 pulse phase 1 */ + code0H, /* Pulse width of logic 0 pulse phase 0 */ + code1L, /* Pulse width of logic 1 pulse phase 1 */ + code1H, /* Pulse width of logic 1 pulse phase 0 */ + 1, /* Pulse width of head pulse phase 1 */ + 1, /* Pulse width of head pulse phase 0 */ + 1, /* Pulse width of tail pulse phase 1 */ + 1, /* Pulse width of tail pulse phase 0 */ + 1, /* Modulation phase 1 width */ + 1, /* Modulation phase 0 width */ + unit /* Pulse width unit */ + }; + + HBN_Set_XCLK_CLK_Sel(clk); + GLB_Set_IR_CLK(ENABLE,GLB_IR_CLK_SRC_XCLK,div-1); + + /* Disable ir before config */ + IR_Disable(IR_TXRX); + + /* IR tx init */ + IR_TxInit(&txCfg); + IR_TxPulseWidthConfig(&txPWCfg); + + return SUCCESS; +} + + +/****************************************************************************//** + * @brief IR send 24-bit data to control led function + * + * @param data: Data to send(24-bit) + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Sts_Type IR_LEDSend(uint32_t data) +{ + /* Change MSB_first to LSB_first */ + data = ((data>>1)&0x55555555)|((data<<1)&0xaaaaaaaa); + data = ((data>>2)&0x33333333)|((data<<2)&0xcccccccc); + data = ((data>>4)&0x0f0f0f0f)|((data<<4)&0xf0f0f0f0); + data = ((data>>16)&0xff)|(data&0xff00)|((data<<16)&0xff0000); + IR_SendCommand(0,data); + + return SUCCESS; +} + + +/*@} end of group IR_Public_Functions */ + +/*@} end of group IR */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_kys.c b/drivers/bl702_driver/std_drv/src/bl702_kys.c new file mode 100644 index 00000000..28c9e9b8 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_kys.c @@ -0,0 +1,276 @@ +/** + ****************************************************************************** + * @file bl702_kys.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_kys.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup KYS + * @{ + */ + +/** @defgroup KYS_Private_Macros + * @{ + */ + +/*@} end of group KYS_Private_Macros */ + +/** @defgroup KYS_Private_Types + * @{ + */ + +/*@} end of group KYS_Private_Types */ + +/** @defgroup KYS_Private_Variables + * @{ + */ +static intCallback_Type * KYSIntCbfArra[1]= {NULL}; + + +/*@} end of group KYS_Private_Variables */ + +/** @defgroup KYS_Global_Variables + * @{ + */ + +/*@} end of group KYS_Global_Variables */ + +/** @defgroup KYS_Private_Fun_Declaration + * @{ + */ + +/*@} end of group KYS_Private_Fun_Declaration */ + +/** @defgroup KYS_Private_Functions + * @{ + */ + +/*@} end of group KYS_Private_Functions */ + +/** @defgroup KYS_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief KYS interrupt handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void KYS_IRQHandler(void) +{ + if(KYSIntCbfArra[0] != NULL){ + KYSIntCbfArra[0](); + } +} +#endif + +/****************************************************************************//** + * @brief KYS initialization function + * + * @param kysCfg: KYS configuration structure pointer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type KYS_Init(KYS_CFG_Type *kysCfg) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(KYS_BASE,KYS_KS_CTRL); + /* Set col and row */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,KYS_COL_NUM,kysCfg->col-1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,KYS_ROW_NUM,kysCfg->row-1); + + /* Set idle duration between column scans */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,KYS_RC_EXT,kysCfg->idleDuration); + + /* Enable or disable ghost key event detection */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,KYS_GHOST_EN,kysCfg->ghostEn); + + /* Enable or disable deglitch function */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,KYS_DEG_EN,kysCfg->deglitchEn); + + /* Set deglitch count */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,KYS_DEG_CNT,kysCfg->deglitchCnt); + + /* Write back */ + BL_WR_REG(KYS_BASE,KYS_KS_CTRL,tmpVal); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(KYS_IRQn,KYS_IRQHandler); +#endif + return SUCCESS; +} + +/****************************************************************************//** + * @brief Enable KYS + * + * @param None + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type KYS_Enable(void) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(KYS_BASE,KYS_KS_CTRL); + BL_WR_REG(KYS_BASE,KYS_KS_CTRL,BL_SET_REG_BIT(tmpVal,KYS_KS_EN)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Disable KYS + * + * @param None + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type KYS_Disable(void) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(KYS_BASE,KYS_KS_CTRL); + BL_WR_REG(KYS_BASE,KYS_KS_CTRL,BL_CLR_REG_BIT(tmpVal,KYS_KS_EN)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief KYS mask or unmask interrupt + * + * @param intMask: KYS interrupt mask value( MASK:disbale interrupt,UNMASK:enable interrupt ) + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type KYS_IntMask(BL_Mask_Type intMask) +{ + if(MASK == intMask){ + BL_WR_REG(KYS_BASE,KYS_KS_INT_EN,0); + }else{ + BL_WR_REG(KYS_BASE,KYS_KS_INT_EN,1); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief KYS clear interrupt + * + * @param None + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type KYS_IntClear(void) +{ + BL_WR_REG(KYS_BASE,KYS_KEYCODE_CLR,0xf); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Install KYS interrupt callback function + * + * @param cbFun: Pointer to interrupt callback function. The type should be void (*fn)(void) + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type KYS_Int_Callback_Install(intCallback_Type *cbFun) +{ + KYSIntCbfArra[0] = cbFun; + + return SUCCESS; +} + +/****************************************************************************//** + * @brief KYS get interrupt status + * + * @param None + * + * @return Status of interrupt + * +*******************************************************************************/ +uint8_t KYS_GetIntStatus(void) +{ + return BL_RD_REG(KYS_BASE,KYS_KS_INT_STS)&0xf; +} + +/****************************************************************************//** + * @brief KYS get keycode value + * + * @param keycode: KYS keycode type + * @param col: Col of key + * @param row: Row of key + * + * @return Keycode value + * +*******************************************************************************/ +uint8_t KYS_GetKeycode(KYS_Keycode_Type keycode,uint8_t *col,uint8_t *row) +{ + uint32_t tmpVal; + uint8_t keyValue; + + /* Get keycode value */ + keyValue = BL_RD_REG(KYS_BASE,KYS_KEYCODE_VALUE)>>(8*keycode)&0xff; + + /* Get total row number of keyboard */ + tmpVal = BL_RD_REG(KYS_BASE,KYS_KS_CTRL); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,KYS_ROW_NUM); + + /* Calculate col and row of the key */ + *col = keyValue/(tmpVal+1); + *row = keyValue%(tmpVal+1); + + return keyValue; +} + + +/*@} end of group KYS_Public_Functions */ + +/*@} end of group KYS */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_l1c.c b/drivers/bl702_driver/std_drv/src/bl702_l1c.c new file mode 100644 index 00000000..65aea97f --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_l1c.c @@ -0,0 +1,627 @@ +/** + ****************************************************************************** + * @file bl702_l1c.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_l1c.h" +#include "bl702_common.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup L1C + * @{ + */ + +/** @defgroup L1C_Private_Macros + * @{ + */ + +/*@} end of group L1C_Private_Macros */ + +/** @defgroup L1C_Private_Types + * @{ + */ + +/*@} end of group L1C_Private_Types */ + +/** @defgroup L1C_Private_Variables + * @{ + */ +static intCallback_Type * l1cBmxErrIntCbfArra[L1C_BMX_ERR_INT_ALL]={NULL}; +static intCallback_Type * l1cBmxToIntCbfArra[L1C_BMX_TO_INT_ALL]={NULL}; + + +/*@} end of group L1C_Private_Variables */ + +/** @defgroup L1C_Global_Variables + * @{ + */ + +/*@} end of group L1C_Global_Variables */ + +/** @defgroup L1C_Private_Fun_Declaration + * @{ + */ + +/*@} end of group L1C_Private_Fun_Declaration */ + +/** @defgroup L1C_Private_Functions + * @{ + */ + +/*@} end of group L1C_Private_Functions */ + +/** @defgroup L1C_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Enable cache + * + * @param wayDisable: cache way disable config + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION L1C_Cache_Enable_Set(uint8_t wayDisable) +{ + L1C_Cache_Flush(wayDisable); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief L1C cache write set + * + * @param wtEn: L1C write through enable + * @param wbEn: L1C write back enable + * @param waEn: L1C write allocate enable + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION L1C_Cache_Write_Set(BL_Fun_Type wtEn, BL_Fun_Type wbEn, BL_Fun_Type waEn) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(L1C_BASE,L1C_CONFIG); + if(wtEn){ + tmpVal=BL_SET_REG_BIT(tmpVal,L1C_WT_EN); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_WT_EN); + } + if(wbEn){ + tmpVal=BL_SET_REG_BIT(tmpVal,L1C_WB_EN); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_WB_EN); + } + if(waEn){ + tmpVal=BL_SET_REG_BIT(tmpVal,L1C_WA_EN); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_WA_EN); + } + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief Flush cache + * + * @param wayDisable: cache way disable config + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION L1C_Cache_Flush(uint8_t wayDisable) +{ + uint32_t tmpVal; + uint32_t cnt=0; + uint8_t finWayDisable=0; + + + tmpVal=BL_RD_REG(L1C_BASE,L1C_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_CACHEABLE); + tmpVal=BL_SET_REG_BIT(tmpVal,L1C_BYPASS); + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_WAY_DIS); + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_CNT_EN); + finWayDisable=BL_GET_REG_BITS_VAL(tmpVal,L1C_WAY_DIS); + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); + + /*Set Tag RAM to zero */ + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_INVALID_EN); + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); + /* Left space for hardware change status*/ + __NOP(); + __NOP(); + __NOP(); + __NOP(); + tmpVal=BL_SET_REG_BIT(tmpVal,L1C_INVALID_EN); + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); + /* Left space for hardware change status*/ + __NOP(); + __NOP(); + __NOP(); + __NOP(); + /* Polling for invalid done */ + do{ + BL702_Delay_US(1); + cnt++; + tmpVal=BL_RD_REG(L1C_BASE,L1C_CONFIG); + }while(!BL_IS_REG_BIT_SET(tmpVal,L1C_INVALID_DONE)&&cnt<100); + + /* data flush */ + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_FLUSH_EN); + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); + /* Left space for hardware change status*/ + __NOP(); + __NOP(); + __NOP(); + __NOP(); + tmpVal=BL_SET_REG_BIT(tmpVal,L1C_FLUSH_EN); + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); + /* Left space for hardware change status*/ + __NOP(); + __NOP(); + __NOP(); + __NOP(); + /* Polling for flush done */ + do{ + BL702_Delay_US(1); + cnt++; + tmpVal=BL_RD_REG(L1C_BASE,L1C_CONFIG); + }while(!BL_IS_REG_BIT_SET(tmpVal,L1C_FLUSH_DONE)&&cnt<100); + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_FLUSH_EN); + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); + + tmpVal=BL_SET_REG_BIT(tmpVal,L1C_BYPASS); + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); + + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_BYPASS); + tmpVal=BL_SET_REG_BIT(tmpVal,L1C_CNT_EN); + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); + + if(wayDisable!=0xff){ + finWayDisable=wayDisable; + } + + tmpVal=BL_RD_REG(L1C_BASE,L1C_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_WAY_DIS); + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); + + tmpVal|=(finWayDisable<120MHz + * + * @param enable: ENABLE or DISABLE + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION L1C_IROM_2T_Access_Set(uint8_t enable) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(L1C_BASE,L1C_CONFIG); + if(enable){ + tmpVal=BL_SET_REG_BIT(tmpVal,L1C_IROM_2T_ACCESS); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_IROM_2T_ACCESS); + } + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief L1C BMX init + * + * @param l1cBmxCfg: L1C BMX config + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type L1C_BMX_Init(L1C_BMX_Cfg_Type *l1cBmxCfg) +{ + uint32_t tmpVal = 0; + + CHECK_PARAM((l1cBmxCfg->timeoutEn)<=0xF); + + tmpVal=BL_RD_REG(L1C_BASE,L1C_CONFIG); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,L1C_BMX_TIMEOUT_EN,l1cBmxCfg->timeoutEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,L1C_BMX_ERR_EN,l1cBmxCfg->errEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,L1C_BMX_ARB_MODE,l1cBmxCfg->arbMod); + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(L1C_BMX_ERR_IRQn,L1C_BMX_ERR_IRQHandler); + Interrupt_Handler_Register(L1C_BMX_TO_IRQn,L1C_BMX_TO_IRQHandler); +#endif + + return SUCCESS; +} + +/****************************************************************************//** + * @brief L1C BMX address monitor enable + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type L1C_BMX_Addr_Monitor_Enable(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(L1C_BASE,L1C_BMX_ERR_ADDR_EN); + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_BMX_ERR_ADDR_DIS); + BL_WR_REG(L1C_BASE,L1C_BMX_ERR_ADDR_EN,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief L1C BMX address monitor disable + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type L1C_BMX_Addr_Monitor_Disable(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(L1C_BASE,L1C_BMX_ERR_ADDR_EN); + tmpVal=BL_SET_REG_BIT(tmpVal,L1C_BMX_ERR_ADDR_DIS); + BL_WR_REG(L1C_BASE,L1C_BMX_ERR_ADDR_EN,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief L1C BMX bus error response enable + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type L1C_BMX_BusErrResponse_Enable(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(L1C_BASE,L1C_CONFIG); + tmpVal=BL_SET_REG_BIT(tmpVal,L1C_BMX_ERR_EN); + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief L1C BMX bus error response disable + * + * @param None + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type L1C_BMX_BusErrResponse_Disable(void) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(L1C_BASE,L1C_CONFIG); + tmpVal=BL_CLR_REG_BIT(tmpVal,L1C_BMX_ERR_EN); + BL_WR_REG(L1C_BASE,L1C_CONFIG,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Get L1C BMX error status + * + * @param errType: L1C BMX error status type + * + * @return SET or RESET + * +*******************************************************************************/ +BL_Sts_Type L1C_BMX_Get_Status(L1C_BMX_BUS_ERR_Type errType) +{ + uint32_t tmpVal = 0; + + CHECK_PARAM(IS_L1C_BMX_BUS_ERR_TYPE(errType)); + + tmpVal=BL_RD_REG(L1C_BASE,L1C_BMX_ERR_ADDR_EN); + if(errType==L1C_BMX_BUS_ERR_TRUSTZONE_DECODE){ + return BL_GET_REG_BITS_VAL(tmpVal,L1C_BMX_ERR_TZ)?SET:RESET; + }else{ + return BL_GET_REG_BITS_VAL(tmpVal,L1C_BMX_ERR_DEC)?SET:RESET; + } +} + +/****************************************************************************//** + * @brief Get L1C BMX error address + * + * @param None + * + * @return NP L1C BMX error address + * +*******************************************************************************/ +uint32_t L1C_BMX_Get_Err_Addr(void) +{ + return BL_RD_REG(L1C_BASE,L1C_BMX_ERR_ADDR); +} + +/****************************************************************************//** + * @brief L1C BMX error interrupt callback install + * + * @param intType: L1C BMX error interrupt type + * @param cbFun: callback + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type L1C_BMX_ERR_INT_Callback_Install(L1C_BMX_ERR_INT_Type intType,intCallback_Type* cbFun) +{ + CHECK_PARAM(IS_L1C_BMX_ERR_INT_TYPE(intType)); + + l1cBmxErrIntCbfArra[intType] = cbFun; + + return SUCCESS; +} + +/****************************************************************************//** + * @brief L1C BMX ERR interrupt IRQ handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void L1C_BMX_ERR_IRQHandler(void) +{ + L1C_BMX_ERR_INT_Type intType; + + for(intType=L1C_BMX_ERR_INT_ERR;intType
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702.h" +#include "bl702_mjpeg.h" +#include "bl702_glb.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup MJPEG + * @{ + */ + +/** @defgroup MJPEG_Private_Macros + * @{ + */ + +/*@} end of group MJPEG_Private_Macros */ + +/** @defgroup MJPEG_Private_Types + * @{ + */ + +/*@} end of group MJPEG_Private_Types */ + +/** @defgroup MJPEG_Private_Variables + * @{ + */ +static intCallback_Type * mjpegIntCbfArra[MJPEG_INT_ALL] = {NULL}; + + +/*@} end of group MJPEG_Private_Variables */ + +/** @defgroup MJPEG_Global_Variables + * @{ + */ + +/*@} end of group MJPEG_Global_Variables */ + +/** @defgroup MJPEG_Private_Fun_Declaration + * @{ + */ + +/*@} end of group MJPEG_Private_Fun_Declaration */ + +/** @defgroup MJPEG_Private_Functions + * @{ + */ + +/*@} end of group MJPEG_Private_Functions */ + +/** @defgroup MJPEG_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Mjpeg module init + * + * @param cfg: Mjpeg configuration structure pointer + * + * @return None + * +*******************************************************************************/ +void MJPEG_Init(MJPEG_CFG_Type *cfg) +{ + uint32_t tmpVal; + + /* Disable clock gate */ + GLB_AHB_Slave1_Clock_Gate(DISABLE,BL_AHB_SLAVE1_MJPEG); + + /* disable mjpeg */ + tmpVal = BL_RD_REG(MJPEG_BASE, MJPEG_CONTROL_1); + tmpVal = BL_CLR_REG_BIT(tmpVal, MJPEG_REG_MJPEG_ENABLE); + BL_WR_REG(MJPEG_BASE, MJPEG_CONTROL_1, tmpVal); + + /* basic stuff */ + tmpVal = BL_RD_REG(MJPEG_BASE, MJPEG_CONTROL_1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_YUV_MODE, cfg->yuv); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_Q_MODE, cfg->quality); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_H_BUST, cfg->burst); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_MJPEG_BIT_ORDER, cfg->bitOrderEnable); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_ORDER_U_EVEN, cfg->evenOrderEnable); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_WR_OVER_STOP, cfg->overStopEnable); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_REFLECT_DMY, cfg->reflectDmy); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_LAST_HF_HBLK_DMY, cfg->verticalDmy); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_LAST_HF_WBLK_DMY, cfg->horizationalDmy); + BL_WR_REG(MJPEG_BASE, MJPEG_CONTROL_1, tmpVal); + + tmpVal = BL_RD_REG(MJPEG_BASE, MJPEG_CONTROL_2); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,MJPEG_REG_MJPEG_WAIT_CYCLE,cfg->waitCount); + BL_WR_REG(MJPEG_BASE, MJPEG_CONTROL_2,tmpVal); + + tmpVal = BL_RD_REG(MJPEG_BASE,MJPEG_FRAME_SIZE); + switch(cfg->yuv) + { + case MJPEG_YUV422_INTERLEAVE: + case MJPEG_YUV422_PLANAR: + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_FRAME_WBLK, (cfg->resolutionX+15)>>4); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_FRAME_HBLK, (cfg->resolutionY+7)>>3); + break; + case MJPEG_YUV420: + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_FRAME_WBLK, (cfg->resolutionX+15)>>4); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_FRAME_HBLK, (cfg->resolutionY+15)>>4); + break; + case MJPEG_YUV400: + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_FRAME_WBLK, (cfg->resolutionX+7)>>3); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_FRAME_HBLK, (cfg->resolutionY+7)>>3); + break; + default: + break; + } + BL_WR_REG(MJPEG_BASE,MJPEG_FRAME_SIZE,tmpVal); + + tmpVal = BL_RD_REG(MJPEG_BASE, MJPEG_SWAP_MODE); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,MJPEG_REG_W_SWAP_MODE,cfg->swapModeEnable); + BL_WR_REG(MJPEG_BASE, MJPEG_SWAP_MODE,tmpVal); + + /*align buffer to 16 bytes boundary, should be kept the same as CAM module*/ + BL_WR_REG(MJPEG_BASE, MJPEG_YY_FRAME_ADDR, (cfg->bufferCamYY & 0xFFFFFFF0)); + BL_WR_REG(MJPEG_BASE, MJPEG_UV_FRAME_ADDR, (cfg->bufferCamUV & 0xFFFFFFF0)); + BL_WR_REG(MJPEG_BASE, MJPEG_YUV_MEM, (cfg->sizeCamUV<<16)+cfg->sizeCamYY); + + /*align buffer to 16 bytes boundary*/ + BL_WR_REG(MJPEG_BASE, MJPEG_JPEG_FRAME_ADDR, (cfg->bufferMjpeg & 0xFFFFFFF0)); + /*align buffer size in unit of 64 bytes */ + BL_WR_REG(MJPEG_BASE, MJPEG_JPEG_STORE_MEMORY, cfg->sizeMjpeg >> 6); + + /* Clear interrupt */ + BL_WR_REG(MJPEG_BASE, MJPEG_FRAME_FIFO_POP,0x3F00); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(MJPEG_IRQn,MJPEG_IRQHandler); +#endif +} + +/****************************************************************************//** + * @brief Mjpeg packet mode configure + * + * @param cfg: Packet configuration + * + * @return None + * +*******************************************************************************/ +void MJPEG_Packet_Config(MJPEG_Packet_Type *cfg) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(MJPEG_BASE,MJPEG_PAKET_CTRL); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,MJPEG_REG_PKET_EN,cfg->packetEnable); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,MJPEG_REG_JEND_TO_PEND,cfg->endToTail); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,MJPEG_REG_PKET_BODY_BYTE,cfg->packetBody); + BL_WR_REG(MJPEG_BASE,MJPEG_PAKET_CTRL,tmpVal); + + tmpVal = BL_RD_REG(MJPEG_BASE,MJPEG_HEADER_BYTE); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,MJPEG_REG_HEAD_BYTE,cfg->frameHead); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,MJPEG_REG_TAIL_EXP,cfg->frameTail); + BL_WR_REG(MJPEG_BASE,MJPEG_HEADER_BYTE,tmpVal); + + BL_WR_REG(MJPEG_BASE,MJPEG_PAKET_HEAD_TAIL,(cfg->packetTail<<16)+cfg->packetHead); +} + +/****************************************************************************//** + * @brief Mjpeg set YUYV order, only work in interleave mode + * + * @param y0: Y0 order + * @param u0: U0 order + * @param y1: Y1 order + * @param v0: V0 order + * + * @return None + * +*******************************************************************************/ +void MJPEG_Set_YUYV_Order_Interleave(uint8_t y0,uint8_t u0,uint8_t y1,uint8_t v0) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(MJPEG_BASE, MJPEG_CONTROL_1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_Y0_ORDER, y0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_U0_ORDER, u0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_Y1_ORDER, y1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, MJPEG_REG_V0_ORDER, v0); + BL_WR_REG(MJPEG_BASE, MJPEG_CONTROL_1, tmpVal); + + MJPEG_Set_YUYV_Order_Planar(0,1); +} + +/****************************************************************************//** + * @brief Mjpeg set YY/UV order, only work in planar mode + * + * @param yy: YY order + * @param uv: UV order + * + * @return None + * +*******************************************************************************/ +void MJPEG_Set_YUYV_Order_Planar(uint8_t yy,uint8_t uv) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(MJPEG_BASE,MJPEG_CONTROL_2); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,MJPEG_REG_YY_DVP2AHB_LSEL,yy); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,MJPEG_REG_YY_DVP2AHB_FSEL,yy); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,MJPEG_REG_UV_DVP2AHB_LSEL,uv); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,MJPEG_REG_UV_DVP2AHB_FSEL,uv); + BL_WR_REG(MJPEG_BASE,MJPEG_CONTROL_2,tmpVal); +} + +/****************************************************************************//** + * @brief Deinit mjpeg module + * + * @param None + * + * @return None + * +*******************************************************************************/ +void MJPEG_Deinit(void) +{ + //GLB_AHB_Slave2_Reset(BL_AHB_SLAVE2_MJPEG); +} + +/****************************************************************************//** + * @brief Enable mjpeg module + * + * @param None + * + * @return None + * +*******************************************************************************/ +void MJPEG_Enable(void) +{ + uint32_t tmpVal; + + /* Enable mjpeg module */ + tmpVal = BL_RD_REG(MJPEG_BASE, MJPEG_CONTROL_1); + tmpVal = BL_SET_REG_BIT(tmpVal, MJPEG_REG_MJPEG_ENABLE); + BL_WR_REG(MJPEG_BASE, MJPEG_CONTROL_1, tmpVal); +} + +/****************************************************************************//** + * @brief Disable mjpeg module + * + * @param None + * + * @return None + * +*******************************************************************************/ +void MJPEG_Disable(void) +{ + uint32_t tmpVal; + + /* Disable mjpeg module */ + tmpVal = BL_RD_REG(MJPEG_BASE, MJPEG_CONTROL_1); + tmpVal = BL_CLR_REG_BIT(tmpVal, MJPEG_REG_MJPEG_ENABLE); + BL_WR_REG(MJPEG_BASE, MJPEG_CONTROL_1, tmpVal); +} + +/****************************************************************************//** + * @brief Enable&disable mjpeg software mode and set frame count + * + * @param count: Frame count + * + * @return None + * +*******************************************************************************/ +void MJPEG_SW_Enable(uint8_t count) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(MJPEG_BASE,MJPEG_CONTROL_2); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,MJPEG_REG_SW_FRAME,count); + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_MJPEG_SW_MODE); + BL_WR_REG(MJPEG_BASE,MJPEG_CONTROL_2,tmpVal); + tmpVal = BL_CLR_REG_BIT(tmpVal,MJPEG_REG_MJPEG_SW_MODE); + BL_WR_REG(MJPEG_BASE,MJPEG_CONTROL_2,tmpVal); +} + +/****************************************************************************//** + * @brief MJPEG software mode run, software mode enable first + * + * @param None + * + * @return None + * +*******************************************************************************/ +void MJPEG_SW_Run(void) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(MJPEG_BASE,MJPEG_CONTROL_2); + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_MJPEG_SW_RUN); + BL_WR_REG(MJPEG_BASE,MJPEG_CONTROL_2,tmpVal); + tmpVal = BL_CLR_REG_BIT(tmpVal,MJPEG_REG_MJPEG_SW_RUN); + BL_WR_REG(MJPEG_BASE,MJPEG_CONTROL_2,tmpVal); +} + +/****************************************************************************//** + * @brief Get one mjpeg frame + * + * @param info: Mjpeg frame infomation pointer + * + * @return None + * +*******************************************************************************/ +void MJPEG_Get_Frame_Info(MJPEG_Frame_Info *info) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(MJPEG_BASE, MJPEG_CONTROL_3); + + info->validFrames = BL_GET_REG_BITS_VAL(tmpVal, MJPEG_FRAME_VALID_CNT); + info->curFrameAddr = BL_RD_REG(MJPEG_BASE, MJPEG_START_ADDR0); + info->curFrameBytes = (BL_RD_REG(MJPEG_BASE, MJPEG_BIT_CNT0)+7)>>3; + info->curFrameQ = BL_RD_REG(MJPEG_BASE, MJPEG_Q_MODE0)&0x3f; + info->status = tmpVal; +} + +/****************************************************************************//** + * @brief Get available count of frames + * + * @param None + * + * @return Frames count + * +*******************************************************************************/ +uint8_t MJPEG_Get_Frame_Count(void) +{ + return BL_GET_REG_BITS_VAL(BL_RD_REG(MJPEG_BASE, MJPEG_CONTROL_3), MJPEG_FRAME_VALID_CNT); +} + +/****************************************************************************//** + * @brief Pop one mjpeg frame + * + * @param None + * + * @return None + * +*******************************************************************************/ +void MJPEG_Pop_Frame(void) +{ + BL_WR_REG(MJPEG_BASE, MJPEG_FRAME_FIFO_POP,1); +} + +/****************************************************************************//** + * @brief Free current read memory block + * + * @param None + * + * @return None + * +*******************************************************************************/ +void MJPEG_Current_Block_Clear(void) +{ + BL_WR_REG(MJPEG_BASE, MJPEG_FRAME_FIFO_POP,0x2); +} + +/****************************************************************************//** + * @brief Current read memory block index + * + * @param None + * + * @return Block number + * +*******************************************************************************/ +MJPEG_Swap_Block_Type MJPEG_Get_Current_Block(void) +{ + return BL_GET_REG_BITS_VAL(BL_RD_REG(MJPEG_BASE,MJPEG_SWAP_MODE),MJPEG_STS_READ_SWAP_IDX); +} + +/****************************************************************************//** + * @brief Get block status, full or not full + * + * @param block: Block number + * + * @return Block status + * +*******************************************************************************/ +BL_Sts_Type MJPEG_Block_Is_Full(MJPEG_Swap_Block_Type block) +{ + CHECK_PARAM(IS_MJPEG_SWAP_BLOCK_TYPE(block)); + + if(MJPEG_BLOCK_0 == block){ + return BL_GET_REG_BITS_VAL(BL_RD_REG(MJPEG_BASE,MJPEG_SWAP_MODE),MJPEG_STS_SWAP0_FULL); + }else{ + return BL_GET_REG_BITS_VAL(BL_RD_REG(MJPEG_BASE,MJPEG_SWAP_MODE),MJPEG_STS_SWAP1_FULL); + } +} + +/****************************************************************************//** + * @brief Current read memory block is frame start + * + * @param None + * + * @return Set or reset + * +*******************************************************************************/ +BL_Sts_Type MJPEG_Current_Block_Is_Start(void) +{ + return BL_GET_REG_BITS_VAL(BL_RD_REG(MJPEG_BASE,MJPEG_SWAP_MODE),MJPEG_STS_SWAP_FSTART); +} + +/****************************************************************************//** + * @brief Current read memory block is frame end + * + * @param None + * + * @return Set or reset + * +*******************************************************************************/ +BL_Sts_Type MJPEG_Current_Block_Is_End(void) +{ + return BL_GET_REG_BITS_VAL(BL_RD_REG(MJPEG_BASE,MJPEG_SWAP_MODE),MJPEG_STS_SWAP_FEND); +} + +/****************************************************************************//** + * @brief Get frame remain bit count in last block, only valid when current read memory block is + * frame end + * + * @param None + * + * @return Bit count + * +*******************************************************************************/ +uint32_t MJPEG_Get_Remain_Bit(void) +{ + return BL_RD_REG(MJPEG_BASE,MJPEG_SWAP_BIT_CNT); +} + +/****************************************************************************//** + * @brief Set frame threshold to issue normal interrupt + * + * @param count: Frame threshold + * + * @return None + * +*******************************************************************************/ +void MJPEG_Set_Frame_Threshold(uint8_t count) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(MJPEG_BASE,MJPEG_CONTROL_3); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,MJPEG_REG_FRAME_CNT_TRGR_INT,count); + BL_WR_REG(MJPEG_BASE,MJPEG_CONTROL_3,tmpVal); +} + +/****************************************************************************//** + * @brief MJPEG Enable Disable Interrupt + * + * @param intType: MJPEG Interrupt Type + * @param intMask: Enable or Disable + * + * @return None + * +*******************************************************************************/ +void MJPEG_IntMask(MJPEG_INT_Type intType, BL_Mask_Type intMask) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_MJPEG_INT_TYPE(intType)); + CHECK_PARAM(IS_BL_MASK_TYPE(intMask)); + + tmpVal = BL_RD_REG(MJPEG_BASE,MJPEG_CONTROL_3); + switch(intType) + { + case MJPEG_INT_NORMAL: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_NORMAL_EN); + }else{ + /* Disable this interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal,MJPEG_REG_INT_NORMAL_EN); + } + break; + + case MJPEG_INT_CAM_OVERWRITE: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_CAM_EN); + }else{ + /* Disable this interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal,MJPEG_REG_INT_CAM_EN); + } + break; + + case MJPEG_INT_MEM_OVERWRITE: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_MEM_EN); + }else{ + /* Disable this interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal,MJPEG_REG_INT_MEM_EN); + } + break; + + case MJPEG_INT_FRAME_OVERWRITE: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_FRAME_EN); + }else{ + /* Disable this interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal,MJPEG_REG_INT_FRAME_EN); + } + break; + + case MJPEG_INT_BACK_IDLE: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_IDLE_EN); + }else{ + /* Disable this interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal,MJPEG_REG_INT_IDLE_EN); + } + break; + + case MJPEG_INT_SWAP: + if(intMask == UNMASK){ + /* Enable this interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_SWAP_EN); + }else{ + /* Disable this interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal,MJPEG_REG_INT_SWAP_EN); + } + break; + + case MJPEG_INT_ALL: + if(intMask == UNMASK){ + /* Enable all interrupt */ + tmpVal = BL_SET_REG_BIT(tmpVal, MJPEG_REG_INT_NORMAL_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, MJPEG_REG_INT_CAM_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, MJPEG_REG_INT_MEM_EN); + tmpVal = BL_SET_REG_BIT(tmpVal, MJPEG_REG_INT_FRAME_EN); + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_IDLE_EN); + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_SWAP_EN); + }else{ + /* Disable all interrupt */ + tmpVal = BL_CLR_REG_BIT(tmpVal, MJPEG_REG_INT_NORMAL_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, MJPEG_REG_INT_CAM_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, MJPEG_REG_INT_MEM_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal, MJPEG_REG_INT_FRAME_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal,MJPEG_REG_INT_IDLE_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal,MJPEG_REG_INT_SWAP_EN); + } + break; + + default: + break; + } + BL_WR_REG(MJPEG_BASE,MJPEG_CONTROL_3,tmpVal); +} + +/****************************************************************************//** + * @brief MJPEG Interrupt Clear + * + * @param intType: MJPEG Interrupt Type + * + * @return None + * +*******************************************************************************/ +void MJPEG_IntClr(MJPEG_INT_Type intType) +{ + uint32_t tmpVal; + + CHECK_PARAM(IS_MJPEG_INT_TYPE(intType)); + + tmpVal = BL_RD_REG(MJPEG_BASE,MJPEG_FRAME_FIFO_POP); + switch(intType) + { + case MJPEG_INT_NORMAL: + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_NORMAL_CLR); + break; + case MJPEG_INT_CAM_OVERWRITE: + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_CAM_CLR); + break; + case MJPEG_INT_MEM_OVERWRITE: + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_MEM_CLR); + break; + case MJPEG_INT_FRAME_OVERWRITE: + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_FRAME_CLR); + break; + case MJPEG_INT_BACK_IDLE: + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_IDLE_CLR); + break; + case MJPEG_INT_SWAP: + tmpVal = BL_SET_REG_BIT(tmpVal,MJPEG_REG_INT_SWAP_CLR); + break; + case MJPEG_INT_ALL: + tmpVal = 0x3F00; + default: + break; + } + BL_WR_REG(MJPEG_BASE,MJPEG_FRAME_FIFO_POP,tmpVal); +} + +/****************************************************************************//** + * @brief Install mjpeg interrupt callback function + * + * @param intType: MJPEG interrupt type + * @param cbFun: Pointer to interrupt callback function. The type should be void (*fn)(void) + * + * @return None + * +*******************************************************************************/ +void MJPEG_Int_Callback_Install(MJPEG_INT_Type intType,intCallback_Type* cbFun) +{ + /* Check the parameters */ + CHECK_PARAM(IS_MJPEG_INT_TYPE(intType)); + + mjpegIntCbfArra[intType] = cbFun; +} + +/****************************************************************************//** + * @brief Mjpeg interrupt handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void MJPEG_IRQHandler(void) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(MJPEG_BASE,MJPEG_CONTROL_3); + if( BL_IS_REG_BIT_SET(tmpVal, MJPEG_STS_NORMAL_INT) ){ + BL_WR_REG(MJPEG_BASE,MJPEG_FRAME_FIFO_POP,0x100); + if(mjpegIntCbfArra[MJPEG_INT_NORMAL] != NULL) { + /* call the callback function */ + mjpegIntCbfArra[MJPEG_INT_NORMAL](); + } + } + + if( BL_IS_REG_BIT_SET(tmpVal, MJPEG_STS_CAM_INT) ){ + BL_WR_REG(MJPEG_BASE,MJPEG_FRAME_FIFO_POP,0x200); + if(mjpegIntCbfArra[MJPEG_INT_CAM_OVERWRITE] != NULL) { + /* call the callback function */ + mjpegIntCbfArra[MJPEG_INT_CAM_OVERWRITE](); + } + } + + if( BL_IS_REG_BIT_SET(tmpVal, MJPEG_STS_MEM_INT) ){ + BL_WR_REG(MJPEG_BASE,MJPEG_FRAME_FIFO_POP,0x400); + if(mjpegIntCbfArra[MJPEG_INT_MEM_OVERWRITE] != NULL) { + /* call the callback function */ + mjpegIntCbfArra[MJPEG_INT_MEM_OVERWRITE](); + } + } + + if( BL_IS_REG_BIT_SET(tmpVal, MJPEG_STS_FRAME_INT) ){ + BL_WR_REG(MJPEG_BASE,MJPEG_FRAME_FIFO_POP,0x800); + if(mjpegIntCbfArra[MJPEG_INT_FRAME_OVERWRITE] != NULL) { + /* call the callback function */ + mjpegIntCbfArra[MJPEG_INT_FRAME_OVERWRITE](); + } + } + + if( BL_IS_REG_BIT_SET(tmpVal, MJPEG_STS_IDLE_INT) ){ + BL_WR_REG(MJPEG_BASE,MJPEG_FRAME_FIFO_POP,0x1000); + if(mjpegIntCbfArra[MJPEG_INT_BACK_IDLE] != NULL) { + /* call the callback function */ + mjpegIntCbfArra[MJPEG_INT_BACK_IDLE](); + } + } + + if( BL_IS_REG_BIT_SET(tmpVal, MJPEG_STS_SWAP_INT) ){ + BL_WR_REG(MJPEG_BASE,MJPEG_FRAME_FIFO_POP,0x2000); + if(mjpegIntCbfArra[MJPEG_INT_SWAP] != NULL) { + /* call the callback function */ + mjpegIntCbfArra[MJPEG_INT_SWAP](); + } + } +} +#endif + +/*@} end of group MJPEG_Public_Functions */ + +/*@} end of group MJPEG */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_pds.c b/drivers/bl702_driver/std_drv/src/bl702_pds.c new file mode 100644 index 00000000..d90f2413 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_pds.c @@ -0,0 +1,1303 @@ +/** + ****************************************************************************** + * @file bl702_pds.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702.h" +#include "bl702_pds.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup PDS + * @{ + */ + +/** @defgroup PDS_Private_Macros + * @{ + */ + +/*@} end of group PDS_Private_Macros */ + +/** @defgroup PDS_Private_Types + * @{ + */ + +/*@} end of group PDS_Private_Types */ + +/** @defgroup PDS_Private_Variables + * @{ + */ +static intCallback_Type * pdsIntCbfArra[PDS_INT_MAX][1]={{NULL},{NULL},{NULL},{NULL}, \ + {NULL},{NULL},{NULL},{NULL}, \ + {NULL},{NULL},{NULL} }; + + +/*@} end of group PDS_Private_Variables */ + +/** @defgroup PDS_Global_Variables + * @{ + */ + +/*@} end of group PDS_Global_Variables */ + +/** @defgroup PDS_Private_Fun_Declaration + * @{ + */ + +/*@} end of group PDS_Private_Fun_Declaration */ + +/** @defgroup PDS_Private_Functions + * @{ + */ + +/*@} end of group PDS_Private_Functions */ + +/** @defgroup PDS_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief power down sleep ram configure + * + * @param ramCfg: power down sleep force ram configuration + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION PDS_RAM_Config(PDS_RAM_CFG_Type *ramCfg) +{ + if(NULL==ramCfg){ + return ERROR; + } + + /* PDS_RAM1 config */ + BL_WR_REG(PDS_BASE,PDS_RAM1,*(uint32_t *)ramCfg); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief power down sleep set pad configure + * + * @param pin: power down sleep pad num + * @param cfg: power down sleep pad type + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION PDS_Set_Pad_Config(PDS_PAD_PIN_Type pin,PDS_PAD_CFG_Type cfg) +{ + uint32_t tmpVal = 0; + uint32_t tmpPu = 0; + uint32_t tmpPd = 0; + + if(pin sleep forever */ + /* PDS sleep time 1~PDS_WARMUP_LATENCY_CNT <=> error */ + /* PDS sleep time >PDS_WARMUP_LATENCY_CNT <=> correct */ + if(!pdsSleepCnt){ + cfg->sleepForever = 1; + }else if((pdsSleepCnt)&&(pdsSleepCnt<=PDS_WARMUP_LATENCY_CNT)){ + return ERROR; + }else{ + BL_WR_REG(PDS_BASE,PDS_TIME1,pdsSleepCnt-PDS_WARMUP_LATENCY_CNT); + } + + /* PDS_CTL4 config */ + BL_WR_REG(PDS_BASE,PDS_CTL4,*(uint32_t *)cfg4); + + /* PDS_CTL config */ + if(cfg->pdsStart){ + BL_WR_REG(PDS_BASE,PDS_CTL,(*(uint32_t *)cfg&~(1<<0))); + BL_WR_REG(PDS_BASE,PDS_CTL,(*(uint32_t *)cfg|(1<<0))); + }else{ + BL_WR_REG(PDS_BASE,PDS_CTL,*(uint32_t *)cfg); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief power down sleep force configure + * + * @param cfg2: power down sleep force configuration 1 + * @param cfg3: power down sleep force configuration 2 + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION PDS_Force_Config(PDS_CTL2_Type *cfg2,PDS_CTL3_Type *cfg3) +{ + /* PDS_CTL2 config */ + BL_WR_REG(PDS_BASE,PDS_CTL2,*(uint32_t *)cfg2); + + /* PDS_CTL3 config */ + BL_WR_REG(PDS_BASE,PDS_CTL3,*(uint32_t *)cfg3); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief power down sleep force configure + * + * @param defaultLvCfg: power down sleep default level configuration + * @param pdsSleepCnt: power down sleep time count + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION PDS_Default_Level_Config(PDS_DEFAULT_LV_CFG_Type *defaultLvCfg,uint32_t pdsSleepCnt) +{ + PDS_Force_Config((PDS_CTL2_Type *)&(defaultLvCfg->pdsCtl2),(PDS_CTL3_Type *)&(defaultLvCfg->pdsCtl3)); + PDS_App_Enable((PDS_CTL_Type *)&(defaultLvCfg->pdsCtl),(PDS_CTL4_Type *)&(defaultLvCfg->pdsCtl4),pdsSleepCnt); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief power down sleep int enable + * + * @param intType: PDS int type + * @param enable: ENABLE or DISABLE + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type PDS_IntEn(PDS_INT_Type intType,BL_Fun_Type enable) +{ + uint32_t offset = 0; + uint32_t tmpVal = 0; + + if((intTypePDS_INT_KYS_QDEC)){ + return ERROR; + } + + switch(intType){ + case PDS_INT_WAKEUP: + case PDS_INT_RF_DONE: + case PDS_INT_PLL_DONE: + break; + case PDS_INT_PDS_SLEEP_CNT: + offset = 16; + break; + case PDS_INT_HBN_IRQ_OUT0: + offset = 17; + break; + case PDS_INT_HBN_IRQ_OUT1: + offset = 18; + break; + case PDS_INT_GPIO_IRQ: + offset = 19; + break; + case PDS_INT_IRRX: + offset = 20; + break; + case PDS_INT_BLE_SLP_IRQ: + offset = 21; + break; + case PDS_INT_USB_WKUP: + offset = 22; + break; + case PDS_INT_KYS_QDEC: + offset = 23; + break; + case PDS_INT_MAX: + break; + default : + break; + } + + tmpVal = BL_RD_REG(PDS_BASE,PDS_INT); + if(enable){ + tmpVal = tmpVal|(1<PDS_INT_PLL_DONE){ + return ERROR; + } + + switch(intType){ + case PDS_INT_WAKEUP: + offset = 8; + break; + case PDS_INT_RF_DONE: + offset = 10; + break; + case PDS_INT_PLL_DONE: + offset = 11; + break; + case PDS_INT_PDS_SLEEP_CNT: + case PDS_INT_HBN_IRQ_OUT0: + case PDS_INT_HBN_IRQ_OUT1: + case PDS_INT_GPIO_IRQ: + case PDS_INT_IRRX: + case PDS_INT_BLE_SLP_IRQ: + case PDS_INT_USB_WKUP: + case PDS_INT_KYS_QDEC: + case PDS_INT_MAX: + default : + break; + } + + tmpVal = BL_RD_REG(PDS_BASE,PDS_INT); + if(intMask!=UNMASK){ + tmpVal = tmpVal|(1<vddcoreVol)); + + /* power config */ + pdsCtl |= (powerCfg->mbgPower << 31)| + (powerCfg->ldo18rfPower << 30)| + (powerCfg->sfregPower << 29)| + (powerCfg->pllPower << 28)| + (powerCfg->cpu0Power << 19)| + (powerCfg->rc32mPower << 17)| + (powerCfg->xtalPower << 14)| + (powerCfg->allPower << 13)| + (powerCfg->isoPower << 11)| + (powerCfg->bzPower << 10)| + (powerCfg->sramDisStanby << 9 )| + (powerCfg->cgPower << 8 )| + (powerCfg->cpu1Power << 7 )| + (powerCfg->usbPower << 3 ); + pdsCtl = BL_SET_REG_BITS_VAL(pdsCtl,PDS_CR_PDS_LDO_VOL,normalCfg->vddcoreVol); + pdsCtl |= (normalCfg->vddcoreVolEn << 18)| + (normalCfg->cpu0NotNeedWFI << 21)| + (normalCfg->cpu1NotNeedWFI << 20)| + (normalCfg->busReset << 16)| + (normalCfg->disIrqWakeUp << 15)| + (normalCfg->powerOffXtalForever << 2 )| + (normalCfg->sleepForever << 1 ); + BL_WR_REG(PDS_BASE,PDS_CTL,pdsCtl); + + + pdsCtl = BL_RD_REG(PDS_BASE, PDS_CTL); + if(enable){ + pdsCtl |= (1<<0); + }else{ + pdsCtl &= ~(1<<0); + } + BL_WR_REG(PDS_BASE,PDS_CTL,pdsCtl); +} +#endif + +/****************************************************************************//** + * @brief PDS force turn off XXX domain + * + * @param domain: PDS domain + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION PDS_Manual_Force_Turn_Off(PDS_FORCE_Type domain) +{ + uint32_t tmpVal = 0; + + /* memory sleep */ + tmpVal = BL_RD_REG(PDS_BASE, PDS_CTL2); + tmpVal |= 1<<(domain + PDS_FORCE_MEM_STBY_OFFSET); + BL_WR_REG(PDS_BASE, PDS_CTL2, tmpVal); + + /* gate clock */ + tmpVal = BL_RD_REG(PDS_BASE, PDS_CTL2); + tmpVal |= 1<<(domain + PDS_FORCE_GATE_CLK_OFFSET); + BL_WR_REG(PDS_BASE, PDS_CTL2, tmpVal); + + /* pds reset */ + tmpVal = BL_RD_REG(PDS_BASE, PDS_CTL2); + tmpVal |= 1<<(domain + PDS_FORCE_PDS_RST_OFFSET); + BL_WR_REG(PDS_BASE, PDS_CTL2, tmpVal); + + /* isolation on */ + tmpVal = BL_RD_REG(PDS_BASE, PDS_CTL2); + tmpVal |= 1<<(domain + PDS_FORCE_ISO_EN_OFFSET); + BL_WR_REG(PDS_BASE, PDS_CTL2, tmpVal); + + /* power off */ + tmpVal = BL_RD_REG(PDS_BASE, PDS_CTL2); + tmpVal |= 1<<(domain + PDS_FORCE_PWR_OFF_OFFSET); + BL_WR_REG(PDS_BASE, PDS_CTL2, tmpVal); +} +#endif + +/****************************************************************************//** + * @brief PDS force turn on XXX domain + * + * @param domain: PDS domain + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION PDS_Manual_Force_Turn_On(PDS_FORCE_Type domain) +{ + uint32_t tmpVal = 0; + + /* power on */ + tmpVal = BL_RD_REG(PDS_BASE, PDS_CTL2); + tmpVal &= ~(1<<(domain + PDS_FORCE_PWR_OFF_OFFSET)); + BL_WR_REG(PDS_BASE, PDS_CTL2, tmpVal); + + /* isolation off */ + tmpVal = BL_RD_REG(PDS_BASE, PDS_CTL2); + tmpVal &= ~(1<<(domain + PDS_FORCE_ISO_EN_OFFSET)); + BL_WR_REG(PDS_BASE, PDS_CTL2, tmpVal); + + /* pds de_reset */ + tmpVal = BL_RD_REG(PDS_BASE, PDS_CTL2); + tmpVal &= ~(1<<(domain + PDS_FORCE_PDS_RST_OFFSET)); + BL_WR_REG(PDS_BASE, PDS_CTL2, tmpVal); + + /* memory active */ + tmpVal = BL_RD_REG(PDS_BASE, PDS_CTL2); + tmpVal &= ~(1<<(domain + PDS_FORCE_MEM_STBY_OFFSET)); + BL_WR_REG(PDS_BASE, PDS_CTL2, tmpVal); + + /* clock on */ + tmpVal = BL_RD_REG(PDS_BASE, PDS_CTL2); + tmpVal &= ~(1<<(domain + PDS_FORCE_GATE_CLK_OFFSET)); + BL_WR_REG(PDS_BASE, PDS_CTL2, tmpVal); +} +#endif + +/****************************************************************************//** + * @brief Power down sleep wake up interrupt handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void PDS_WAKEUP_IRQHandler(void) +{ + for(PDS_INT_Type intType=PDS_INT_WAKEUP;intType
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_psram.h" +#include "bl702_l1c.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup PSRAM + * @{ + */ + +/** @defgroup PSRAM_Private_Macros + * @{ + */ + +/*@} end of group PSRAM_Private_Macros */ + +/** @defgroup PSRAM_Private_Types + * @{ + */ + +/*@} end of group PSRAM_Private_Types */ + +/** @defgroup PSRAM_Private_Variables + * @{ + */ + +/*@} end of group PSRAM_Private_Variables */ + +/** @defgroup PSRAM_Global_Variables + * @{ + */ + +/*@} end of group PSRAM_Global_Variables */ + +/** @defgroup PSRAM_Private_Fun_Declaration + * @{ + */ + +/*@} end of group PSRAM_Private_Fun_Declaration */ + +/** @defgroup PSRAM_Private_Functions + * @{ + */ + +/*@} end of group PSRAM_Private_Functions */ + +/** @defgroup PSRAM_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Init serial psram control interface + * + * @param psramCfg: Serial psram parameter configuration pointer + * @param cmdsCfg: Serial Serial Flash controller configuration pointer + * @param sfCtrlPsramCfg: Serial psram controller configuration pointer + * + * @return None + * +*******************************************************************************/ +//#ifndef BFLB_USE_ROM_DRIVER +//__WEAK +void ATTR_TCM_SECTION Psram_Init(SPI_Psram_Cfg_Type *psramCfg, SF_Ctrl_Cmds_Cfg *cmdsCfg, SF_Ctrl_Psram_Cfg *sfCtrlPsramCfg) +{ + SF_Ctrl_Psram_Init(sfCtrlPsramCfg); + SF_Ctrl_Cmds_Set(cmdsCfg); + + Psram_SetDriveStrength(psramCfg); + Psram_SetBurstWrap(psramCfg); +} +//#endif + +/****************************************************************************//** + * @brief Read psram register + * + * @param psramCfg: Serial psram parameter configuration pointer + * @param regValue: Register value pointer to store data + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION Psram_ReadReg(SPI_Psram_Cfg_Type *psramCfg, uint8_t *regValue) +{ + /* Check the parameters */ + CHECK_PARAM(IS_PSRAM_CTRL_MODE(psramCfg->ctrlMode)); + + uint8_t * const psramCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + SF_Ctrl_Cmd_Cfg_Type psramCmd; + if(((uint32_t)&psramCmd)%4 == 0){ + BL702_MemSet4((uint32_t *)&psramCmd, 0, sizeof(psramCmd)/4); + }else{ + BL702_MemSet(&psramCmd, 0, sizeof(psramCmd)); + } + + if(psramCfg->ctrlMode == PSRAM_QPI_CTRL_MODE){ + psramCmd.cmdMode = SF_CTRL_CMD_4_LINES; + psramCmd.addrMode = SF_CTRL_ADDR_4_LINES; + psramCmd.dataMode = SF_CTRL_DATA_4_LINES; + } + psramCmd.cmdBuf[0] = (psramCfg->readRegCmd)<<24; + psramCmd.rwFlag = SF_CTRL_READ; + psramCmd.addrSize = 3; + psramCmd.dummyClks = psramCfg->readRegDmyClk; + psramCmd.nbData = 1; + + SF_Ctrl_SendCmd(&psramCmd); + + while(SET==SF_Ctrl_GetBusyState()){ + } + + BL702_MemCpy(regValue, psramCtrlBuf, 1); +} +#endif + +/****************************************************************************//** + * @brief Write psram register + * + * @param psramCfg: Serial psram parameter configuration pointer + * @param regValue: Register value pointer storing data + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION Psram_WriteReg(SPI_Psram_Cfg_Type *psramCfg, uint8_t *regValue) +{ + /* Check the parameters */ + CHECK_PARAM(IS_PSRAM_CTRL_MODE(psramCfg->ctrlMode)); + + uint8_t * const psramCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + SF_Ctrl_Cmd_Cfg_Type psramCmd; + if(((uint32_t)&psramCmd)%4 == 0){ + BL702_MemSet4((uint32_t *)&psramCmd, 0, sizeof(psramCmd)/4); + }else{ + BL702_MemSet(&psramCmd, 0, sizeof(psramCmd)); + } + BL702_MemCpy(psramCtrlBuf, regValue, 1); + + if(psramCfg->ctrlMode == PSRAM_QPI_CTRL_MODE){ + psramCmd.cmdMode = SF_CTRL_CMD_4_LINES; + psramCmd.addrMode = SF_CTRL_ADDR_4_LINES; + psramCmd.dataMode = SF_CTRL_DATA_4_LINES; + } + psramCmd.cmdBuf[0] = (psramCfg->writeRegCmd)<<24; + psramCmd.rwFlag = SF_CTRL_WRITE; + psramCmd.addrSize = 3; + psramCmd.nbData = 1; + + SF_Ctrl_SendCmd(&psramCmd); +} +#endif + +/****************************************************************************//** + * @brief Set psram driver strength + * + * @param psramCfg: Serial psram parameter configuration pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION Psram_SetDriveStrength(SPI_Psram_Cfg_Type *psramCfg) +{ + uint32_t stat=0; + /* Check the parameters */ + CHECK_PARAM(IS_PSRAM_DRIVE_STRENGTH(psramCfg->driveStrength)); + + Psram_ReadReg(psramCfg, (uint8_t *)&stat); + if((stat & 0x3) == psramCfg->driveStrength){ + return SUCCESS; + } + + stat &= (~0x3); + stat |= psramCfg->driveStrength; + + Psram_WriteReg(psramCfg, (uint8_t *)&stat); + /* Wait for write done */ + + Psram_ReadReg(psramCfg, (uint8_t *)&stat); + + if((stat & 0x3) == psramCfg->driveStrength){ + return SUCCESS; + } + + return ERROR; +} +#endif + +/****************************************************************************//** + * @brief Set psram burst wrap size + * + * @param psramCfg: Serial psram parameter configuration pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION Psram_SetBurstWrap(SPI_Psram_Cfg_Type *psramCfg) +{ + uint32_t stat=0; + /* Check the parameters */ + CHECK_PARAM(IS_PSRAM_BURST_LENGTH(psramCfg->burstLength)); + + Psram_ReadReg(psramCfg, (uint8_t *)&stat); + if(((stat>>5) & 0x3) == psramCfg->burstLength){ + return SUCCESS; + } + + stat &= (~(0x3<<5)); + stat |= (psramCfg->burstLength<<5); + + Psram_WriteReg(psramCfg, (uint8_t *)&stat); + /* Wait for write done */ + + Psram_ReadReg(psramCfg, (uint8_t *)&stat); + + if(((stat>>5) & 0x3) == psramCfg->burstLength){ + return SUCCESS; + } + + return ERROR; +} +#endif + +/****************************************************************************//** + * @brief Get psram ID + * + * @param psramCfg: Serial psram parameter configuration pointer + * @param data: Data pointer to store read data + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION Psram_ReadId(SPI_Psram_Cfg_Type *psramCfg, uint8_t *data) +{ + uint8_t * const psramCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + SF_Ctrl_Cmd_Cfg_Type psramCmd; + + if(((uint32_t)&psramCmd)%4 == 0){ + BL702_MemSet4((uint32_t *)&psramCmd, 0, sizeof(psramCmd)/4); + }else{ + BL702_MemSet(&psramCmd, 0, sizeof(psramCmd)); + } + + psramCmd.cmdBuf[0] = (psramCfg->readIdCmd)<<24; + psramCmd.rwFlag = SF_CTRL_READ; + psramCmd.addrSize = 3; + psramCmd.dummyClks = psramCfg->readIdDmyClk; + psramCmd.nbData = 8; + + SF_Ctrl_SendCmd(&psramCmd); + + while(SET==SF_Ctrl_GetBusyState()){ + } + + BL702_MemCpy(data, psramCtrlBuf, 8); +} +#endif + +/****************************************************************************//** + * @brief Psram enter quad mode + * + * @param psramCfg: Serial psram parameter configuration pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION Psram_EnterQuadMode(SPI_Psram_Cfg_Type *psramCfg) +{ + SF_Ctrl_Cmd_Cfg_Type psramCmd; + + if(((uint32_t)&psramCmd)%4 == 0){ + BL702_MemSet4((uint32_t *)&psramCmd, 0, sizeof(psramCmd)/4); + }else{ + BL702_MemSet(&psramCmd, 0, sizeof(psramCmd)); + } + + psramCmd.cmdBuf[0] = (psramCfg->enterQuadModeCmd)<<24; + psramCmd.rwFlag = SF_CTRL_READ; + + SF_Ctrl_SendCmd(&psramCmd); + + while(SET==SF_Ctrl_GetBusyState()){ + } + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Psram exit quad mode + * + * @param psramCfg: Serial psram parameter configuration pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION Psram_ExitQuadMode(SPI_Psram_Cfg_Type *psramCfg) +{ + SF_Ctrl_Cmd_Cfg_Type psramCmd; + + if(((uint32_t)&psramCmd)%4 == 0){ + BL702_MemSet4((uint32_t *)&psramCmd, 0, sizeof(psramCmd)/4); + }else{ + BL702_MemSet(&psramCmd, 0, sizeof(psramCmd)); + } + + psramCmd.cmdMode = SF_CTRL_CMD_4_LINES; + psramCmd.addrMode = SF_CTRL_ADDR_4_LINES; + psramCmd.dataMode = SF_CTRL_DATA_4_LINES; + + psramCmd.cmdBuf[0] = (psramCfg->exitQuadModeCmd)<<24; + psramCmd.rwFlag = SF_CTRL_READ; + + SF_Ctrl_SendCmd(&psramCmd); + + while(SET==SF_Ctrl_GetBusyState()){ + } + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Psram toggle burst length + * + * @param psramCfg: Serial psram parameter configuration pointer + * @param ctrlMode: Psram ctrl mode type + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION Psram_ToggleBurstLength(SPI_Psram_Cfg_Type *psramCfg, PSRAM_Ctrl_Mode ctrlMode) +{ + SF_Ctrl_Cmd_Cfg_Type psramCmd; + /* Check the parameters */ + CHECK_PARAM(IS_PSRAM_CTRL_MODE(ctrlMode)); + + if(((uint32_t)&psramCmd)%4 == 0){ + BL702_MemSet4((uint32_t *)&psramCmd, 0, sizeof(psramCmd)/4); + }else{ + BL702_MemSet(&psramCmd, 0, sizeof(psramCmd)); + } + + if(ctrlMode == PSRAM_QPI_CTRL_MODE){ + psramCmd.cmdMode = SF_CTRL_CMD_4_LINES; + psramCmd.addrMode = SF_CTRL_ADDR_4_LINES; + psramCmd.dataMode = SF_CTRL_DATA_4_LINES; + } + + psramCmd.cmdBuf[0] = (psramCfg->burstToggleCmd)<<24; + psramCmd.rwFlag = SF_CTRL_READ; + + SF_Ctrl_SendCmd(&psramCmd); + + while(SET==SF_Ctrl_GetBusyState()){ + } + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Psram software reset + * + * @param psramCfg: Serial psram parameter configuration pointer + * @param ctrlMode: Psram ctrl mode type + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION Psram_SoftwareReset(SPI_Psram_Cfg_Type *psramCfg, PSRAM_Ctrl_Mode ctrlMode) +{ + SF_Ctrl_Cmd_Cfg_Type psramCmd; + /* Check the parameters */ + CHECK_PARAM(IS_PSRAM_CTRL_MODE(ctrlMode)); + + if(((uint32_t)&psramCmd)%4 == 0){ + BL702_MemSet4((uint32_t *)&psramCmd, 0, sizeof(psramCmd)/4); + }else{ + BL702_MemSet(&psramCmd, 0, sizeof(psramCmd)); + } + + if(ctrlMode == PSRAM_QPI_CTRL_MODE){ + psramCmd.cmdMode = SF_CTRL_CMD_4_LINES; + psramCmd.addrMode = SF_CTRL_ADDR_4_LINES; + psramCmd.dataMode = SF_CTRL_DATA_4_LINES; + } + + /* Reset enable */ + psramCmd.cmdBuf[0] = (psramCfg->resetEnableCmd)<<24; + /* rwFlag don't care */ + psramCmd.rwFlag = SF_CTRL_READ; + /* Wait for write done */ + + SF_Ctrl_SendCmd(&psramCmd); + while(SET==SF_Ctrl_GetBusyState()){ + } + + /* Reset */ + psramCmd.cmdBuf[0] = (psramCfg->resetCmd)<<24; + /* rwFlag don't care */ + psramCmd.rwFlag = SF_CTRL_READ; + SF_Ctrl_SendCmd(&psramCmd); + while(SET==SF_Ctrl_GetBusyState()){ + } + + BL702_Delay_US(50); + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Psram set IDbus config + * + * @param psramCfg: Serial psram parameter configuration pointer + * @param ioMode: Psram ctrl mode type + * @param addr: Address to read/write + * @param len: Data length to read/write + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION Psram_Set_IDbus_Cfg(SPI_Psram_Cfg_Type *psramCfg, + SF_Ctrl_IO_Type ioMode, uint32_t addr, uint32_t len) +{ + uint8_t cmd,dummyClks; + SF_Ctrl_Cmd_Cfg_Type psramCmd; + uint8_t cmdValid = 1; + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_IO_TYPE(ioMode)); + + SF_Ctrl_Set_Owner(SF_CTRL_OWNER_IAHB); + + /* read mode cache set */ + if(((uint32_t)&psramCmd)%4 == 0){ + BL702_MemSet4((uint32_t *)&psramCmd, 0, sizeof(psramCmd)/4); + }else{ + BL702_MemSet(&psramCmd, 0, sizeof(psramCmd)); + } + + if(SF_CTRL_NIO_MODE == ioMode){ + cmd = psramCfg->fReadCmd; + dummyClks = psramCfg->fReadDmyClk; + }else if(SF_CTRL_QIO_MODE == ioMode){ + psramCmd.addrMode = SF_CTRL_ADDR_4_LINES; + psramCmd.dataMode = SF_CTRL_DATA_4_LINES; + cmd = psramCfg->fReadQuadCmd; + dummyClks = psramCfg->fReadQuadDmyClk; + }else{ + return ERROR; + } + + /* prepare command */ + psramCmd.rwFlag = SF_CTRL_READ; + psramCmd.addrSize = 3; + psramCmd.cmdBuf[0] = (cmd<<24)|addr; + psramCmd.dummyClks = dummyClks; + psramCmd.nbData = len; + SF_Ctrl_Psram_Read_Icache_Set(&psramCmd, cmdValid); + + /* write mode cache set */ + if(((uint32_t)&psramCmd)%4 == 0){ + BL702_MemSet4((uint32_t *)&psramCmd, 0, sizeof(psramCmd)/4); + }else{ + BL702_MemSet(&psramCmd, 0, sizeof(psramCmd)); + } + + if(SF_CTRL_NIO_MODE == ioMode) + { + cmd = psramCfg->writeCmd; + }else if(SF_CTRL_QIO_MODE==ioMode){ + psramCmd.addrMode = SF_CTRL_ADDR_4_LINES; + psramCmd.dataMode = SF_CTRL_DATA_4_LINES; + cmd = psramCfg->quadWriteCmd; + }else{ + return ERROR; + } + dummyClks = 0; + + /* prepare command */ + psramCmd.rwFlag = SF_CTRL_WRITE; + psramCmd.addrSize = 3; + psramCmd.cmdBuf[0] = (cmd<<24)|addr; + psramCmd.dummyClks = dummyClks; + psramCmd.nbData = len; + SF_Ctrl_Psram_Write_Icache_Set(&psramCmd, cmdValid); + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Set cache write to psram with cache + * + * @param psramCfg: Serial psram parameter configuration pointer + * @param ioMode: Psram controller interface mode + * @param wtEn: Psram cache write through enable + * @param wbEn: Psram cache write back enable + * @param waEn: Psram cache write allocate enable + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION Psram_Cache_Write_Set(SPI_Psram_Cfg_Type *psramCfg, SF_Ctrl_IO_Type ioMode, + BL_Fun_Type wtEn, BL_Fun_Type wbEn, BL_Fun_Type waEn) +{ + BL_Err_Type stat; + + /* Cache now only support 32 bytes read */ + stat = Psram_Set_IDbus_Cfg(psramCfg, ioMode, 0, 32); + if(SUCCESS != stat){ + return stat; + } + + L1C_Cache_Write_Set(wtEn, wbEn, waEn); + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Write psram one region + * + * @param psramCfg: Serial psram parameter configuration pointer + * @param ioMode: Write mode: SPI mode or QPI mode + * @param addr: Start address to be write + * @param data: Data pointer to be write + * @param len: Data length to be write + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION Psram_Write(SPI_Psram_Cfg_Type *psramCfg, + SF_Ctrl_IO_Type ioMode, uint32_t addr, uint8_t *data, uint32_t len) +{ + uint8_t * const psramCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + uint32_t i = 0,curLen = 0; + uint32_t burstLen = 512; + uint8_t cmd; + SF_Ctrl_Cmd_Cfg_Type psramCmd; + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_IO_TYPE(ioMode)); + + if(((uint32_t)&psramCmd)%4 == 0){ + BL702_MemSet4((uint32_t *)&psramCmd, 0, sizeof(psramCmd)/4); + }else{ + BL702_MemSet(&psramCmd, 0, sizeof(psramCmd)); + } + + if(SF_CTRL_NIO_MODE == ioMode) + { + cmd = psramCfg->writeCmd; + }else if(SF_CTRL_QIO_MODE==ioMode){ + psramCmd.addrMode = SF_CTRL_ADDR_4_LINES; + psramCmd.dataMode = SF_CTRL_DATA_4_LINES; + cmd = psramCfg->quadWriteCmd; + }else{ + return ERROR; + } + + /* Prepare command */ + psramCmd.rwFlag = SF_CTRL_WRITE; + psramCmd.addrSize = 3; + + if(psramCfg->burstLength == PSRAM_BURST_LENGTH_16_BYTES){ + burstLen = 16; + }else if(psramCfg->burstLength == PSRAM_BURST_LENGTH_32_BYTES){ + burstLen = 32; + }else if(psramCfg->burstLength == PSRAM_BURST_LENGTH_64_BYTES){ + burstLen = 64; + }else if(psramCfg->burstLength == PSRAM_BURST_LENGTH_512_BYTES){ + burstLen = 512; + } + + for(i = 0;i < len;){ + /* Get current programmed length within page size */ + curLen = burstLen - addr % burstLen; + if(curLen > len - i){ + curLen = len - i; + } + + /* Prepare command */ + BL702_MemCpy_Fast(psramCtrlBuf, data, curLen); + psramCmd.cmdBuf[0] = (cmd<<24)|(addr); + psramCmd.nbData = curLen; + + SF_Ctrl_SendCmd(&psramCmd); + + /* Adjust address and programmed length */ + addr += curLen; + i += curLen; + data += curLen; + + /* Wait for write done */ + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Read data from psram + * + * @param psramCfg: Serial psram parameter configuration pointer + * @param ioMode: IoMode: psram controller interface mode + * @param addr: Psram read start address + * @param data: Data pointer to store data read from psram + * @param len: Data length to read + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION Psram_Read(SPI_Psram_Cfg_Type *psramCfg, + SF_Ctrl_IO_Type ioMode, uint32_t addr, uint8_t *data, uint32_t len) +{ + uint8_t * const psramCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + uint32_t curLen,i; + uint32_t burstLen = 512; + uint8_t cmd,dummyClks; + SF_Ctrl_Cmd_Cfg_Type psramCmd; + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_IO_TYPE(ioMode)); + + if(((uint32_t)&psramCmd)%4 == 0){ + BL702_MemSet4((uint32_t *)&psramCmd, 0, sizeof(psramCmd)/4); + }else{ + BL702_MemSet(&psramCmd,0, sizeof(psramCmd)); + } + + if(SF_CTRL_NIO_MODE == ioMode){ + cmd = psramCfg->fReadCmd; + dummyClks = psramCfg->fReadDmyClk; + }else if(SF_CTRL_QIO_MODE == ioMode){ + psramCmd.addrMode = SF_CTRL_ADDR_4_LINES; + psramCmd.dataMode = SF_CTRL_DATA_4_LINES; + cmd = psramCfg->fReadQuadCmd; + dummyClks = psramCfg->fReadQuadDmyClk; + }else{ + return ERROR; + } + + /* Prepare command */ + psramCmd.rwFlag = SF_CTRL_READ; + psramCmd.addrSize = 3; + psramCmd.dummyClks = dummyClks; + + if(psramCfg->burstLength == PSRAM_BURST_LENGTH_16_BYTES){ + burstLen = 16; + }else if(psramCfg->burstLength == PSRAM_BURST_LENGTH_32_BYTES){ + burstLen = 32; + }else if(psramCfg->burstLength == PSRAM_BURST_LENGTH_64_BYTES){ + burstLen = 64; + }else if(psramCfg->burstLength == PSRAM_BURST_LENGTH_512_BYTES){ + burstLen = 512; + } + + /* Read data */ + for(i=0;i len - i){ + curLen = len - i; + } + if(curLen >= FLASH_CTRL_BUF_SIZE){ + curLen = FLASH_CTRL_BUF_SIZE; + psramCmd.nbData = curLen; + }else{ + /* Make sf_ctrl word read */ + psramCmd.nbData = ((curLen+3)>>2)<<2; + } + + SF_Ctrl_SendCmd(&psramCmd); + + while(SET == SF_Ctrl_GetBusyState()){ + } + BL702_MemCpy_Fast(data, psramCtrlBuf, curLen); + + addr += curLen; + i += curLen; + data += curLen; + } + + return SUCCESS; +} +#endif + +/*@} end of group PSRAM_Public_Functions */ + +/*@} end of group PSRAM */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_pwm.c b/drivers/bl702_driver/std_drv/src/bl702_pwm.c new file mode 100644 index 00000000..e6d58e47 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_pwm.c @@ -0,0 +1,537 @@ +/** + ****************************************************************************** + * @file bl702_pwm.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_pwm.h" +#include "bl702_glb.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup PWM + * @{ + */ + +/** @defgroup PWM_Private_Macros + * @{ + */ +#define PWM_Get_Channel_Reg(ch) (PWM_BASE+PWM_CHANNEL_OFFSET+(ch)*0x20) +#define PWM_INT_TIMEOUT_COUNT (160*1000) +#define PWM_STOP_TIMEOUT_COUNT (160*1000) + +/*@} end of group PWM_Private_Macros */ + +/** @defgroup PWM_Private_Types + * @{ + */ + +/*@} end of group PWM_Private_Types */ + +/** @defgroup PWM_Private_Variables + * @{ + */ + +/** + * @brief PWM interrupt callback function address array + */ +static intCallback_Type * PWMIntCbfArra[PWM_CH_MAX][PWM_INT_ALL]= { + {NULL} +}; + + +/*@} end of group PWM_Private_Variables */ + +/** @defgroup PWM_Global_Variables + * @{ + */ + +/*@} end of group PWM_Global_Variables */ + +/** @defgroup PWM_Private_Fun_Declaration + * @{ + */ +#ifndef BFLB_USE_HAL_DRIVER +static BL_Err_Type PWM_IntHandler(IRQn_Type intPeriph); +#endif + +/*@} end of group PWM_Private_Fun_Declaration */ + +/** @defgroup PWM_Private_Functions + * @{ + */ + +/****************************************************************************//** + * @brief PWM interrupt handle + * + * @param intPeriph: Select the peripheral, such as PWM0_IRQn + * + * @return SUCCESS + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +static BL_Err_Type PWM_IntHandler(IRQn_Type intPeriph) +{ + uint32_t i; + uint32_t tmpVal; + uint32_t timeoutCnt = PWM_INT_TIMEOUT_COUNT; + /* Get channel register */ + uint32_t PWMx = PWM_BASE; + + for (i = 0; i < PWM_CH_MAX; i++) { + tmpVal = BL_RD_REG(PWMx, PWM_INT_CONFIG); + if ((BL_GET_REG_BITS_VAL(tmpVal, PWM_INTERRUPT_STS) & (1 << i)) != 0) { + /* Clear interrupt */ + tmpVal |= (1 << (i + PWM_INT_CLEAR_POS)); + BL_WR_REG(PWMx, PWM_INT_CONFIG, tmpVal); + /* FIXME: we need set pwm_int_clear to 0 by software and + before this,we must make sure pwm_interrupt_sts is 0*/ + do{ + tmpVal = BL_RD_REG(PWMx, PWM_INT_CONFIG); + timeoutCnt--; + if(timeoutCnt == 0){ + break; + } + }while(BL_GET_REG_BITS_VAL(tmpVal,PWM_INTERRUPT_STS)&(1 << i)); + + tmpVal &= (~(1 << (i + PWM_INT_CLEAR_POS))); + BL_WR_REG(PWMx, PWM_INT_CONFIG, tmpVal); + if (PWMIntCbfArra[i][PWM_INT_PULSE_CNT] != NULL) { + /* Call the callback function */ + PWMIntCbfArra[i][PWM_INT_PULSE_CNT](); + } + } + } + return SUCCESS; +} +#endif + +/*@} end of group PWM_Private_Functions */ + +/** @defgroup PWM_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief PWM channel init + * + * @param chCfg: PWM configuration + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type PWM_Channel_Init(PWM_CH_CFG_Type *chCfg) +{ + uint32_t tmpVal; + uint32_t timeoutCnt = PWM_STOP_TIMEOUT_COUNT; + /* Get channel register */ + uint32_t PWMx = PWM_Get_Channel_Reg(chCfg->ch); + + /* Check the parameters */ + CHECK_PARAM(IS_PWM_CH_ID_TYPE(chCfg->ch)); + CHECK_PARAM(IS_PWM_CLK_TYPE(chCfg->clk)); + CHECK_PARAM(IS_PWM_POLARITY_TYPE(chCfg->pol)); + CHECK_PARAM(IS_PWM_STOP_MODE_TYPE(chCfg->stopMode)); + + /* Disable clock gate */ + GLB_AHB_Slave1_Clock_Gate(DISABLE,BL_AHB_SLAVE1_PWM); + + /* Config pwm clock and polarity */ + tmpVal = BL_RD_REG(PWMx, PWM_CONFIG); + BL_WR_REG(PWMx, PWM_CONFIG, BL_SET_REG_BIT(tmpVal, PWM_STOP_EN)); + while(!BL_IS_REG_BIT_SET(BL_RD_REG(PWMx, PWM_CONFIG), PWM_STS_TOP)){ + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + } + tmpVal = BL_RD_REG(PWMx, PWM_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, PWM_REG_CLK_SEL, chCfg->clk); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, PWM_OUT_INV, chCfg->pol); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal, PWM_STOP_MODE, chCfg->stopMode); + BL_WR_REG(PWMx, PWM_CONFIG, tmpVal); + + /* Config pwm division */ + BL_WR_REG(PWMx, PWM_CLKDIV, chCfg->clkDiv); + + /* Config pwm period and duty */ + BL_WR_REG(PWMx, PWM_THRE1, chCfg->threshold1); + BL_WR_REG(PWMx, PWM_THRE2, chCfg->threshold2); + BL_WR_REG(PWMx, PWM_PERIOD, chCfg->period); + + /* Config interrupt pulse count */ + tmpVal = BL_RD_REG(PWMx, PWM_INTERRUPT); + BL_WR_REG(PWMx, PWM_INTERRUPT, BL_SET_REG_BITS_VAL(tmpVal, PWM_INT_PERIOD_CNT, chCfg->intPulseCnt)); + PWM_IntMask(chCfg->ch,PWM_INT_PULSE_CNT,chCfg->intPulseCnt!=0?UNMASK:MASK); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(PWM_IRQn,PWM_IRQHandler); +#endif + + return SUCCESS; +} + +/****************************************************************************//** + * @brief PWM channel update source memory address and len + * + * @param ch: PWM channel + * @param period: period + * @param threshold1: threshold1 + * @param threshold2: threshold2 + * + * @return None + * +*******************************************************************************/ +void PWM_Channel_Update(PWM_CH_ID_Type ch,uint16_t period,uint16_t threshold1,uint16_t threshold2) +{ + /* Get channel register */ + uint32_t PWMx = PWM_Get_Channel_Reg(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_PWM_CH_ID_TYPE(ch)); + + /* Config pwm period and duty */ + BL_WR_REG(PWMx, PWM_THRE1, threshold1); + BL_WR_REG(PWMx, PWM_THRE2, threshold2); + BL_WR_REG(PWMx, PWM_PERIOD, period); +} + +/****************************************************************************//** + * @brief PWM channel update clock divider + * + * @param ch: PWM channel + * @param div: Clock divider + * + * @return None + * +*******************************************************************************/ +void PWM_Channel_Set_Div(PWM_CH_ID_Type ch,uint16_t div) +{ + /* Get channel register */ + uint32_t PWMx = PWM_Get_Channel_Reg(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_PWM_CH_ID_TYPE(ch)); + + BL_WR_REG(PWMx, PWM_CLKDIV, div); +} + +/****************************************************************************//** + * @brief PWM channel update threshold1 + * + * @param ch: PWM channel + * @param threshold1: threshold1 + * + * @return None + * +*******************************************************************************/ +void PWM_Channel_Set_Threshold1(PWM_CH_ID_Type ch,uint16_t threshold1) +{ + /* Get channel register */ + uint32_t PWMx = PWM_Get_Channel_Reg(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_PWM_CH_ID_TYPE(ch)); + + /* Config pwm period and duty */ + BL_WR_REG(PWMx, PWM_THRE1, threshold1); +} + +/****************************************************************************//** + * @brief PWM channel update threshold2 + * + * @param ch: PWM channel + * @param threshold2: threshold2 + * + * @return None + * +*******************************************************************************/ +void PWM_Channel_Set_Threshold2(PWM_CH_ID_Type ch,uint16_t threshold2) +{ + /* Get channel register */ + uint32_t PWMx = PWM_Get_Channel_Reg(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_PWM_CH_ID_TYPE(ch)); + + /* Config pwm period and duty */ + BL_WR_REG(PWMx, PWM_THRE2, threshold2); +} + +/****************************************************************************//** + * @brief PWM channel update period + * + * @param ch: PWM channel + * @param period: period + * + * @return None + * +*******************************************************************************/ +void PWM_Channel_Set_Period(PWM_CH_ID_Type ch,uint16_t period) +{ + /* Get channel register */ + uint32_t PWMx = PWM_Get_Channel_Reg(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_PWM_CH_ID_TYPE(ch)); + + /* Config pwm period and duty */ + BL_WR_REG(PWMx, PWM_PERIOD, period); +} + +/****************************************************************************//** + * @brief PWM get configuration + * + * @param ch: PWM channel + * @param period: period pointer + * @param threshold1: threshold1 pointer + * @param threshold2: threshold2 pointer + * + * @return None + * +*******************************************************************************/ +void PWM_Channel_Get(PWM_CH_ID_Type ch,uint16_t *period,uint16_t *threshold1,uint16_t *threshold2) +{ + uint32_t tmpVal; + /* Get channel register */ + uint32_t PWMx = PWM_Get_Channel_Reg(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_PWM_CH_ID_TYPE(ch)); + + /* get pwm period and duty */ + tmpVal = BL_RD_REG(PWMx, PWM_THRE1); + *threshold1 = BL_GET_REG_BITS_VAL(tmpVal, PWM_THRE1); + tmpVal = BL_RD_REG(PWMx, PWM_THRE2); + *threshold2 = BL_GET_REG_BITS_VAL(tmpVal, PWM_THRE2); + tmpVal = BL_RD_REG(PWMx, PWM_PERIOD); + *period = BL_GET_REG_BITS_VAL(tmpVal, PWM_PERIOD); +} + +/****************************************************************************//** + * @brief PWM enable + * + * @param ch: PWM channel number + * + * @return None + * +*******************************************************************************/ +void PWM_Channel_Enable(PWM_CH_ID_Type ch) +{ + uint32_t tmpVal; + /* Get channel register */ + uint32_t PWMx = PWM_Get_Channel_Reg(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_PWM_CH_ID_TYPE(ch)); + + /* Config pwm clock to enable pwm */ + tmpVal = BL_RD_REG(PWMx, PWM_CONFIG); + BL_WR_REG(PWMx, PWM_CONFIG, BL_CLR_REG_BIT(tmpVal, PWM_STOP_EN)); +} + +/****************************************************************************//** + * @brief PWM disable + * + * @param ch: PWM channel number + * + * @return None + * +*******************************************************************************/ +void PWM_Channel_Disable(PWM_CH_ID_Type ch) +{ + uint32_t tmpVal; + /* Get channel register */ + uint32_t PWMx = PWM_Get_Channel_Reg(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_PWM_CH_ID_TYPE(ch)); + + /* Config pwm clock to disable pwm */ + tmpVal = BL_RD_REG(PWMx, PWM_CONFIG); + BL_WR_REG(PWMx, PWM_CONFIG, BL_SET_REG_BIT(tmpVal, PWM_STOP_EN)); + PWM_IntMask(ch,PWM_INT_PULSE_CNT,MASK); +} + +/****************************************************************************//** + * @brief PWM channel software mode enable or disable + * + * @param ch: PWM channel number + * @param enable: Enable or disable + * + * @return None + * +*******************************************************************************/ +void PWM_SW_Mode(PWM_CH_ID_Type ch,BL_Fun_Type enable) +{ + uint32_t tmpVal; + /* Get channel register */ + uint32_t PWMx = PWM_Get_Channel_Reg(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_PWM_CH_ID_TYPE(ch)); + + tmpVal = BL_RD_REG(PWMx,PWM_CONFIG); + BL_WR_REG(PWMx,PWM_CONFIG,BL_SET_REG_BITS_VAL(tmpVal,PWM_SW_MODE,enable)); +} + +/****************************************************************************//** + * @brief PWM channel force output high or low + * + * @param ch: PWM channel number + * @param value: Output value + * + * @return None + * +*******************************************************************************/ +void PWM_SW_Force_Value(PWM_CH_ID_Type ch,uint8_t value) +{ + uint32_t tmpVal; + /* Get channel register */ + uint32_t PWMx = PWM_Get_Channel_Reg(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_PWM_CH_ID_TYPE(ch)); + + tmpVal = BL_RD_REG(PWMx,PWM_CONFIG); + BL_WR_REG(PWMx,PWM_CONFIG,BL_SET_REG_BITS_VAL(tmpVal,PWM_SW_FORCE_VAL,value)); +} + + +/****************************************************************************//** + * @brief PWM channel force output high + * + * @param ch: PWM channel number + * + * @return None + * +*******************************************************************************/ +void PWM_Channel_Fource_Output(PWM_CH_ID_Type ch) +{ + uint32_t tmpVal; + /* Get channel register */ + uint32_t PWMx = PWM_Get_Channel_Reg(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_PWM_CH_ID_TYPE(ch)); + + tmpVal = BL_RD_REG(PWMx, PWM_CONFIG); + BL_WR_REG(PWMx, PWM_CONFIG, BL_SET_REG_BIT(tmpVal, PWM_SW_MODE)); +} + +/****************************************************************************//** + * @brief Mask/Unmask the PWM interrupt + * + * @param ch: PWM channel number + * @param intType: Specifies the interrupt type + * @param intMask: Enable/Disable Specified interrupt type + * + * @return None + * +*******************************************************************************/ +void PWM_IntMask(PWM_CH_ID_Type ch,PWM_INT_Type intType,BL_Mask_Type intMask) +{ + uint32_t tmpVal; + /* Get channel register */ + uint32_t PWMx = PWM_Get_Channel_Reg(ch); + + /* Check the parameters */ + CHECK_PARAM(IS_PWM_CH_ID_TYPE(ch)); + CHECK_PARAM(IS_PWM_INT_TYPE(intType)); + + tmpVal = BL_RD_REG(PWMx, PWM_INTERRUPT); + + switch(intType) { + case PWM_INT_PULSE_CNT: + if(intMask == UNMASK) { + /* UNMASK(Enable) this interrupt */ + BL_WR_REG(PWMx, PWM_INTERRUPT, BL_SET_REG_BIT(tmpVal, PWM_INT_ENABLE)); + } + else { + /* MASK(Disable) this interrupt */ + BL_WR_REG(PWMx, PWM_INTERRUPT, BL_CLR_REG_BIT(tmpVal, PWM_INT_ENABLE)); + } + break; + case PWM_INT_ALL: + if(intMask == UNMASK) { + /* UNMASK(Enable) this interrupt */ + BL_WR_REG(PWMx, PWM_INTERRUPT, BL_SET_REG_BIT(tmpVal, PWM_INT_ENABLE)); + } + else { + /* MASK(Disable) this interrupt */ + BL_WR_REG(PWMx, PWM_INTERRUPT, BL_CLR_REG_BIT(tmpVal, PWM_INT_ENABLE)); + } + break; + + default: + break; + } +} + +/****************************************************************************//** + * @brief Install PWM interrupt callback function + * + * @param ch: PWM channel number + * @param intType: PWM interrupt type + * @param cbFun: Pointer to interrupt callback function. The type should be void (*fn)(void) + * + * @return None + * +*******************************************************************************/ +void PWM_Int_Callback_Install(PWM_CH_ID_Type ch,uint32_t intType,intCallback_Type* cbFun) +{ + PWMIntCbfArra[ch][intType] = cbFun; +} + +/****************************************************************************//** + * @brief PWM interrupt function + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void PWM_IRQHandler(void) +{ + PWM_IntHandler(PWM_IRQn); +} +#endif + +/*@} end of group PWM_Public_Functions */ + +/*@} end of group PWM */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_qdec.c b/drivers/bl702_driver/std_drv/src/bl702_qdec.c new file mode 100644 index 00000000..4bade555 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_qdec.c @@ -0,0 +1,542 @@ +/** + ****************************************************************************** + * @file bl702_qdec.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_qdec.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup QDEC + * @{ + */ + +/** @defgroup QDEC_Private_Macros + * @{ + */ + +/*@} end of group QDEC_Private_Macros */ + +/** @defgroup QDEC_Private_Types + * @{ + */ + +/*@} end of group QDEC_Private_Types */ + +/** @defgroup QDEC_Private_Variables + * @{ + */ +static const uint32_t qdecAddr[QDEC_ID_MAX] = {QDEC0_BASE,QDEC1_BASE,QDEC2_BASE}; +static intCallback_Type * qdecIntCbfArra[QDEC_ID_MAX][QDEC_INT_ALL]= {{NULL,NULL,NULL,NULL}, + {NULL,NULL,NULL,NULL}, + {NULL,NULL,NULL,NULL}}; + + +/*@} end of group QDEC_Private_Variables */ + +/** @defgroup QDEC_Global_Variables + * @{ + */ + +/*@} end of group QDEC_Global_Variables */ + +/** @defgroup QDEC_Private_Fun_Declaration + * @{ + */ + +/*@} end of group QDEC_Private_Fun_Declaration */ + +/** @defgroup QDEC_Private_Functions + * @{ + */ + +/****************************************************************************//** + * @brief QDEC init + * + * @param qdecId: QDEC ID + * @param qdecCfg: QDEC config + * + * @return None + * +*******************************************************************************/ +void QDEC_Init(QDEC_ID_Type qdecId,QDEC_CFG_Type *qdecCfg) +{ + uint32_t tmpVal=0; + uint32_t QDECx = qdecAddr[qdecId]; + + CHECK_PARAM(IS_QDEC_SAMPLE_MODE_TYPE(qdecCfg->sampleCfg.sampleMod)); + CHECK_PARAM(IS_QDEC_SAMPLE_PERIOD_TYPE(qdecCfg->sampleCfg.samplePeriod)); + CHECK_PARAM(IS_QDEC_REPORT_MODE_TYPE(qdecCfg->reportCfg.reportMod)); + CHECK_PARAM((qdecCfg->ledCfg.ledPeriod)<=0x1FF); + CHECK_PARAM((qdecCfg->deglitchCfg.deglitchStrength)<=0xF); + + /* qdec_ctrl */ + tmpVal=BL_RD_REG(QDECx,QDEC0_CTRL0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_SPL_PERIOD,qdecCfg->sampleCfg.samplePeriod); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_RPT_PERIOD,qdecCfg->reportCfg.reportPeriod); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_LED_EN,qdecCfg->ledCfg.ledEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_LED_POL,qdecCfg->ledCfg.ledSwap); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_DEG_EN,qdecCfg->deglitchCfg.deglitchEn); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_DEG_CNT,qdecCfg->deglitchCfg.deglitchStrength); + BL_WR_REG(QDECx,QDEC0_CTRL0,tmpVal); + + /* qdec_ctrl1 */ + tmpVal=BL_RD_REG(QDECx,QDEC0_CTRL1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_SPL_MODE,qdecCfg->sampleCfg.sampleMod); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_RPT_MODE,qdecCfg->reportCfg.reportMod); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_LED_PERIOD,qdecCfg->ledCfg.ledPeriod); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_ACC_MODE,qdecCfg->accMod); + BL_WR_REG(QDECx,QDEC0_CTRL1,tmpVal); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(QDEC0_IRQn,QDEC0_IRQHandler); + Interrupt_Handler_Register(QDEC1_IRQn,QDEC1_IRQHandler); + Interrupt_Handler_Register(QDEC2_IRQn,QDEC2_IRQHandler); +#endif +} + +/****************************************************************************//** + * @brief QDEC deinit + * + * @param qdecId: QDEC ID + * + * @return None + * +*******************************************************************************/ +void QDEC_DeInit(QDEC_ID_Type qdecId) +{ + uint32_t tmpVal=0; + uint32_t QDECx = qdecAddr[qdecId]; + + /* deconfig qdec */ + tmpVal=BL_RD_REG(QDECx,QDEC0_CTRL0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_RPT_PERIOD,10); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_SPL_PERIOD,2); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_DEG_CNT,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_DEG_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_LED_POL,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_LED_EN,0); + BL_WR_REG(QDECx,QDEC0_CTRL0,tmpVal); + tmpVal=BL_RD_REG(QDECx,QDEC0_CTRL1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_LED_PERIOD,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_INPUT_SWAP,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_RPT_MODE,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_SPL_MODE,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_ACC_MODE,1); + BL_WR_REG(QDECx,QDEC0_CTRL1,tmpVal); + + /* enable qdec */ + tmpVal=BL_RD_REG(QDECx,QDEC0_CTRL0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_EN,1); + BL_WR_REG(QDECx,QDEC0_CTRL0,tmpVal); + + /* deconfig interrupt */ + tmpVal=BL_RD_REG(QDECx,QDEC0_INT_EN); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_OVERFLOW_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_DBL_RDY_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_SPL_RDY_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_RPT_RDY_EN,1); + BL_WR_REG(QDECx,QDEC0_INT_EN,tmpVal); + + /* clear status */ + tmpVal=BL_RD_REG(QDECx,QDEC0_INT_CLR); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_OVERFLOW_CLR,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_DBL_RDY_CLR,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_SPL_RDY_CLR,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_RPT_RDY_CLR,1); + BL_WR_REG(QDECx,QDEC0_INT_STS,tmpVal); + + /* clear value */ + tmpVal=BL_RD_REG(QDECx,QDEC0_VALUE); + + /* disable qdec */ + tmpVal=BL_RD_REG(QDECx,QDEC0_CTRL0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_EN,0); + BL_WR_REG(QDECx,QDEC0_CTRL0,tmpVal); +} + +/****************************************************************************//** + * @brief QDEC enable + * + * @param qdecId: QDEC ID + * + * @return None + * +*******************************************************************************/ +void QDEC_Enable(QDEC_ID_Type qdecId) +{ + uint32_t tmpVal=0; + uint32_t QDECx = qdecAddr[qdecId]; + + /* qdec_ctrl */ + tmpVal=BL_RD_REG(QDECx,QDEC0_CTRL0); + tmpVal=BL_SET_REG_BIT(tmpVal,QDEC_EN); + BL_WR_REG(QDECx,QDEC0_CTRL0,tmpVal); +} + +/****************************************************************************//** + * @brief QDEC disable + * + * @param qdecId: QDEC ID + * + * @return None + * +*******************************************************************************/ +void QDEC_Disable(QDEC_ID_Type qdecId) +{ + uint32_t tmpVal=0; + uint32_t QDECx = qdecAddr[qdecId]; + + /* qdec_ctrl */ + tmpVal=BL_RD_REG(QDECx,QDEC0_CTRL0); + tmpVal=BL_CLR_REG_BIT(tmpVal,QDEC_EN); + BL_WR_REG(QDECx,QDEC0_CTRL0,tmpVal); +} + +/****************************************************************************//** + * @brief set QDEC interrupt mask + * + * @param qdecId: QDEC ID + * @param intType: QDEC interrupt type + * @param intMask: MASK or UNMASK + * + * @return None + * +*******************************************************************************/ +void QDEC_SetIntMask(QDEC_ID_Type qdecId,QDEC_INT_Type intType,BL_Mask_Type intMask) +{ + uint32_t tmpVal=0; + uint32_t QDECx = qdecAddr[qdecId]; + + CHECK_PARAM(IS_QDEC_INT_TYPE(intType)); + + /* qdec_int_en */ + tmpVal=BL_RD_REG(QDECx,QDEC0_INT_EN); + switch(intType){ + case QDEC_INT_REPORT: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_RPT_RDY_EN,(intMask?0:1)); + break; + + case QDEC_INT_SAMPLE: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_SPL_RDY_EN,(intMask?0:1)); + break; + + case QDEC_INT_ERROR: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_DBL_RDY_EN,(intMask?0:1)); + break; + + case QDEC_INT_OVERFLOW: + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,QDEC_OVERFLOW_EN,(intMask?0:1)); + break; + + default : + break; + } + BL_WR_REG(QDECx,QDEC0_INT_EN,tmpVal); +} + +/****************************************************************************//** + * @brief get QDEC interrupt mask + * + * @param qdecId: QDEC ID + * @param intType: QDEC interrupt type + * + * @return MASK or UNMASK + * +*******************************************************************************/ +BL_Mask_Type QDEC_GetIntMask(QDEC_ID_Type qdecId,QDEC_INT_Type intType) +{ + uint32_t tmpVal=0; + uint32_t QDECx = qdecAddr[qdecId]; + + CHECK_PARAM(IS_QDEC_INT_TYPE(intType)); + + /* qdec_int_en */ + tmpVal=BL_RD_REG(QDECx,QDEC0_INT_EN); + switch(intType){ + case QDEC_INT_REPORT: + return BL_GET_REG_BITS_VAL(tmpVal,QDEC_RPT_RDY_EN)?UNMASK:MASK; + + case QDEC_INT_SAMPLE: + return BL_GET_REG_BITS_VAL(tmpVal,QDEC_SPL_RDY_EN)?UNMASK:MASK; + + case QDEC_INT_ERROR: + return BL_GET_REG_BITS_VAL(tmpVal,QDEC_DBL_RDY_EN)?UNMASK:MASK; + + case QDEC_INT_OVERFLOW: + return BL_GET_REG_BITS_VAL(tmpVal,QDEC_OVERFLOW_EN)?UNMASK:MASK; + + default : + return UNMASK; + } +} + +/****************************************************************************//** + * @brief QDEC interrupt callback install + * + * @param qdecId: QDEC ID + * @param intType: QDEC interrupt type + * @param cbFun: interrupt callback + * + * @return None + * +*******************************************************************************/ +void QDEC_Int_Callback_Install(QDEC_ID_Type qdecId,QDEC_INT_Type intType,intCallback_Type* cbFun) +{ + qdecIntCbfArra[qdecId][intType]= cbFun; +} + +/****************************************************************************//** + * @brief QDEC get interrupt status + * + * @param qdecId: QDEC ID + * @param intType: QDEC interrupt type + * + * @return SET or RESET + * +*******************************************************************************/ +BL_Sts_Type QDEC_Get_Int_Status(QDEC_ID_Type qdecId,QDEC_INT_Type intType) +{ + uint32_t tmpVal=0; + uint32_t QDECx = qdecAddr[qdecId]; + + CHECK_PARAM(IS_QDEC_INT_TYPE(intType)); + + /* qdec_int_sts */ + tmpVal=BL_RD_REG(QDECx,QDEC0_INT_STS); + switch(intType){ + case QDEC_INT_REPORT: + return BL_GET_REG_BITS_VAL(tmpVal,QDEC_RPT_RDY_STS)?SET:RESET; + + case QDEC_INT_SAMPLE: + return BL_GET_REG_BITS_VAL(tmpVal,QDEC_SPL_RDY_STS)?SET:RESET; + + case QDEC_INT_ERROR: + return BL_GET_REG_BITS_VAL(tmpVal,QDEC_DBL_RDY_STS)?SET:RESET; + + case QDEC_INT_OVERFLOW: + return BL_GET_REG_BITS_VAL(tmpVal,QDEC_OVERFLOW_STS)?SET:RESET; + + default : + return RESET; + } +} + +/****************************************************************************//** + * @brief QDEC clear interrupt status + * + * @param qdecId: QDEC ID + * @param intType: QDEC interrupt type + * + * @return None + * +*******************************************************************************/ +void QDEC_Clr_Int_Status(QDEC_ID_Type qdecId,QDEC_INT_Type intType) +{ + uint32_t tmpVal=0; + uint32_t QDECx = qdecAddr[qdecId]; + + CHECK_PARAM(IS_QDEC_INT_TYPE(intType)); + + /* qdec_int_clr */ + tmpVal=BL_RD_REG(QDECx,QDEC0_INT_CLR); + switch(intType){ + case QDEC_INT_REPORT: + tmpVal=BL_SET_REG_BIT(tmpVal,QDEC_RPT_RDY_CLR); + break; + + case QDEC_INT_SAMPLE: + tmpVal=BL_SET_REG_BIT(tmpVal,QDEC_SPL_RDY_CLR); + break; + + case QDEC_INT_ERROR: + tmpVal=BL_SET_REG_BIT(tmpVal,QDEC_DBL_RDY_CLR); + break; + + case QDEC_INT_OVERFLOW: + tmpVal=BL_SET_REG_BIT(tmpVal,QDEC_OVERFLOW_CLR); + break; + + default : + break; + } + BL_WR_REG(QDECx,QDEC0_INT_CLR,tmpVal); +} + +/****************************************************************************//** + * @brief QDEC get sample direction + * + * @param qdecId: QDEC ID + * + * @return None + * +*******************************************************************************/ +QDEC_DIRECTION_Type QDEC_Get_Sample_Direction(QDEC_ID_Type qdecId) +{ + uint32_t tmpVal=0; + uint32_t QDECx = qdecAddr[qdecId]; + + /* qdec_value */ + tmpVal=BL_RD_REG(QDECx,QDEC0_VALUE); + + return (QDEC_DIRECTION_Type)BL_GET_REG_BITS_VAL(tmpVal,QDEC_SPL_VAL); +} + +/****************************************************************************//** + * @brief QDEC get error count + * + * @param qdecId: QDEC ID + * + * @return None + * +*******************************************************************************/ +uint8_t QDEC_Get_Err_Cnt(QDEC_ID_Type qdecId) +{ + uint32_t tmpVal=0; + uint32_t QDECx = qdecAddr[qdecId]; + + /* qdec_value */ + tmpVal=BL_RD_REG(QDECx,QDEC0_VALUE); + + return BL_GET_REG_BITS_VAL(tmpVal,QDEC_ACC2_VAL); +} + +/****************************************************************************//** + * @brief QDEC get sample value + * + * @param qdecId: QDEC ID + * + * @return None + * +*******************************************************************************/ +uint16_t QDEC_Get_Sample_Val(QDEC_ID_Type qdecId) +{ + uint32_t tmpVal=0; + uint32_t QDECx = qdecAddr[qdecId]; + + /* qdec_value */ + tmpVal=BL_RD_REG(QDECx,QDEC0_VALUE); + + return BL_GET_REG_BITS_VAL(tmpVal,QDEC_ACC1_VAL); +} + +/****************************************************************************//** + * @brief QDEC interrupt handler + * + * @param qdecId: QDEC ID + * @param intType: QDEC interrupt type + * + * @return None + * +*******************************************************************************/ +void QDEC_IntHandler(QDEC_ID_Type qdecId,QDEC_INT_Type intType) +{ + if(SET==QDEC_Get_Int_Status(qdecId,intType)){ + QDEC_Clr_Int_Status(qdecId,intType); + if(qdecIntCbfArra[qdecId][intType]!=NULL){ + qdecIntCbfArra[qdecId][intType](); + } + } +} + +/****************************************************************************//** + * @brief QDEC0 interrupt handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void QDEC0_IRQHandler(void) +{ + QDEC_INT_Type intType; + + for(intType=QDEC_INT_REPORT;intType + +/** @addtogroup BL702_Periph_Driver + * @{ + */ + +/** @defgroup ROMDRIVER + * @brief ROMDRIVER common functions + * @{ + */ + +/** @defgroup ROMDRIVER_Private_Type + * @{ + */ +uint32_t const romDriverTable[]={ + 0x07020001, + 0x00000000, + 0x00000000, + 0x00000000, + + [ROM_API_INDEX_AON_Power_On_MBG] = (uint32_t)AON_Power_On_MBG, + [ROM_API_INDEX_AON_Power_Off_MBG] = (uint32_t)AON_Power_Off_MBG, + [ROM_API_INDEX_AON_Power_On_XTAL] = (uint32_t)AON_Power_On_XTAL, + [ROM_API_INDEX_AON_Set_Xtal_CapCode] = (uint32_t)AON_Set_Xtal_CapCode, + [ROM_API_INDEX_AON_Power_Off_XTAL] = (uint32_t)AON_Power_Off_XTAL, + + [ROM_API_INDEX_ASM_Delay_Us] = (uint32_t)ASM_Delay_Us, + [ROM_API_INDEX_BL702_Delay_US] = (uint32_t)BL702_Delay_US, + [ROM_API_INDEX_BL702_Delay_MS] = (uint32_t)BL702_Delay_MS, + [ROM_API_INDEX_BL702_MemCpy] = (uint32_t)BL702_MemCpy, + [ROM_API_INDEX_BL702_MemCpy4] = (uint32_t)BL702_MemCpy4, + [ROM_API_INDEX_BL702_MemCpy_Fast] = (uint32_t)BL702_MemCpy_Fast, + [ROM_API_INDEX_ARCH_MemCpy_Fast] = (uint32_t)ARCH_MemCpy_Fast, + [ROM_API_INDEX_BL702_MemSet] = (uint32_t)BL702_MemSet, + [ROM_API_INDEX_BL702_MemSet4] = (uint32_t)BL702_MemSet4, + [ROM_API_INDEX_BL702_MemCmp] = (uint32_t)BL702_MemCmp, + [ROM_API_INDEX_BFLB_Soft_CRC32] = (uint32_t)BFLB_Soft_CRC32, + + [ROM_API_INDEX_GLB_Get_Root_CLK_Sel] = (uint32_t)GLB_Get_Root_CLK_Sel, + [ROM_API_INDEX_GLB_Set_System_CLK_Div] = (uint32_t)GLB_Set_System_CLK_Div, + [ROM_API_INDEX_GLB_Get_BCLK_Div] = (uint32_t)GLB_Get_BCLK_Div, + [ROM_API_INDEX_GLB_Get_HCLK_Div] = (uint32_t)GLB_Get_HCLK_Div, + [ROM_API_INDEX_Update_SystemCoreClockWith_XTAL] = (uint32_t)Update_SystemCoreClockWith_XTAL, + [ROM_API_INDEX_GLB_Set_System_CLK] = (uint32_t)GLB_Set_System_CLK, + [ROM_API_INDEX_System_Core_Clock_Update_From_RC32M] = (uint32_t)System_Core_Clock_Update_From_RC32M, + [ROM_API_INDEX_GLB_Set_SF_CLK] = (uint32_t)GLB_Set_SF_CLK, + [ROM_API_INDEX_GLB_Power_Off_DLL] = (uint32_t)GLB_Power_Off_DLL, + [ROM_API_INDEX_GLB_Power_On_DLL] = (uint32_t)GLB_Power_On_DLL, + [ROM_API_INDEX_GLB_Enable_DLL_All_Clks] = (uint32_t)GLB_Enable_DLL_All_Clks, + [ROM_API_INDEX_GLB_Enable_DLL_Clk] = (uint32_t)GLB_Enable_DLL_Clk, + [ROM_API_INDEX_GLB_Disable_DLL_All_Clks] = (uint32_t)GLB_Disable_DLL_All_Clks, + [ROM_API_INDEX_GLB_Disable_DLL_Clk] = (uint32_t)GLB_Disable_DLL_Clk, + [ROM_API_INDEX_GLB_SW_System_Reset] = (uint32_t)GLB_SW_System_Reset, + [ROM_API_INDEX_GLB_SW_CPU_Reset] = (uint32_t)GLB_SW_CPU_Reset, + [ROM_API_INDEX_GLB_SW_POR_Reset] = (uint32_t)GLB_SW_POR_Reset, + [ROM_API_INDEX_GLB_Select_Internal_Flash] = (uint32_t)GLB_Select_Internal_Flash, + [ROM_API_INDEX_GLB_Swap_Flash_Pin] = (uint32_t)GLB_Swap_Flash_Pin, + [ROM_API_INDEX_GLB_Swap_Flash_CS_IO2_Pin] = (uint32_t)GLB_Swap_Flash_CS_IO2_Pin, + [ROM_API_INDEX_GLB_Swap_Flash_IO0_IO3_Pin] = (uint32_t)GLB_Swap_Flash_IO0_IO3_Pin, + [ROM_API_INDEX_GLB_Select_Internal_PSram] = (uint32_t)GLB_Select_Internal_PSram, + [ROM_API_INDEX_GLB_GPIO_Init] = (uint32_t)GLB_GPIO_Init, + [ROM_API_INDEX_GLB_GPIO_OUTPUT_Enable] = (uint32_t)GLB_GPIO_OUTPUT_Enable, + [ROM_API_INDEX_GLB_GPIO_OUTPUT_Disable] = (uint32_t)GLB_GPIO_OUTPUT_Disable, + [ROM_API_INDEX_GLB_GPIO_Set_HZ] = (uint32_t)GLB_GPIO_Set_HZ, + [ROM_API_INDEX_GLB_Deswap_Flash_Pin] = (uint32_t)GLB_Deswap_Flash_Pin, + [ROM_API_INDEX_GLB_Select_External_Flash] = (uint32_t)GLB_Select_External_Flash, + [ROM_API_INDEX_GLB_GPIO_Get_Fun] = (uint32_t)GLB_GPIO_Get_Fun, + + [ROM_API_INDEX_EF_Ctrl_Busy] = (uint32_t)EF_Ctrl_Busy, + [ROM_API_INDEX_EF_Ctrl_Sw_AHB_Clk_0] = (uint32_t)EF_Ctrl_Sw_AHB_Clk_0, + [ROM_API_INDEX_EF_Ctrl_Load_Efuse_R0] = (uint32_t)EF_Ctrl_Load_Efuse_R0, + [ROM_API_INDEX_EF_Ctrl_Clear] = (uint32_t)EF_Ctrl_Clear, + [ROM_API_INDEX_EF_Ctrl_Get_Trim_Parity] = (uint32_t)EF_Ctrl_Get_Trim_Parity, + [ROM_API_INDEX_EF_Ctrl_Read_RC32K_Trim] = (uint32_t)EF_Ctrl_Read_RC32K_Trim, + [ROM_API_INDEX_EF_Ctrl_Read_RC32M_Trim] = (uint32_t)EF_Ctrl_Read_RC32M_Trim, + + [ROM_API_INDEX_PDS_Trim_RC32M] = (uint32_t)PDS_Trim_RC32M, + [ROM_API_INDEX_PDS_Select_RC32M_As_PLL_Ref] = (uint32_t)PDS_Select_RC32M_As_PLL_Ref, + [ROM_API_INDEX_PDS_Select_XTAL_As_PLL_Ref] = (uint32_t)PDS_Select_XTAL_As_PLL_Ref, + [ROM_API_INDEX_PDS_Power_On_PLL] = (uint32_t)PDS_Power_On_PLL, + [ROM_API_INDEX_PDS_Enable_PLL_All_Clks] = (uint32_t)PDS_Enable_PLL_All_Clks, + [ROM_API_INDEX_PDS_Disable_PLL_All_Clks] = (uint32_t)PDS_Disable_PLL_All_Clks, + [ROM_API_INDEX_PDS_Enable_PLL_Clk] = (uint32_t)PDS_Enable_PLL_Clk, + [ROM_API_INDEX_PDS_Disable_PLL_Clk] = (uint32_t)PDS_Disable_PLL_Clk, + [ROM_API_INDEX_PDS_Power_Off_PLL] = (uint32_t)PDS_Power_Off_PLL, + [ROM_API_INDEX_PDS_Reset] = (uint32_t)PDS_Reset, + [ROM_API_INDEX_PDS_Enable] = (uint32_t)PDS_Enable, + [ROM_API_INDEX_PDS_Auto_Time_Config] = (uint32_t)PDS_Auto_Time_Config, + [ROM_API_INDEX_PDS_Auto_Enable] = (uint32_t)PDS_Auto_Enable, + [ROM_API_INDEX_PDS_Manual_Force_Turn_Off] = (uint32_t)PDS_Manual_Force_Turn_Off, + [ROM_API_INDEX_PDS_Manual_Force_Turn_On] = (uint32_t)PDS_Manual_Force_Turn_On, + + [ROM_API_INDEX_HBN_Enable] = (uint32_t)HBN_Enable, + [ROM_API_INDEX_HBN_Reset] = (uint32_t)HBN_Reset, + [ROM_API_INDEX_HBN_GPIO_Dbg_Pull_Cfg] = (uint32_t)HBN_GPIO_Dbg_Pull_Cfg, + [ROM_API_INDEX_HBN_Trim_RC32K] = (uint32_t)HBN_Trim_RC32K, + [ROM_API_INDEX_HBN_Set_ROOT_CLK_Sel] = (uint32_t)HBN_Set_ROOT_CLK_Sel, + + [ROM_API_INDEX_XIP_SFlash_State_Save] = (uint32_t)XIP_SFlash_State_Save, + [ROM_API_INDEX_XIP_SFlash_State_Restore] = (uint32_t)XIP_SFlash_State_Restore, + [ROM_API_INDEX_XIP_SFlash_Erase_Need_Lock] = (uint32_t)XIP_SFlash_Erase_Need_Lock, + [ROM_API_INDEX_XIP_SFlash_Write_Need_Lock] = (uint32_t)XIP_SFlash_Write_Need_Lock, + [ROM_API_INDEX_XIP_SFlash_Read_Need_Lock] = (uint32_t)XIP_SFlash_Read_Need_Lock, + [ROM_API_INDEX_XIP_SFlash_GetJedecId_Need_Lock] = (uint32_t)XIP_SFlash_GetJedecId_Need_Lock, + [ROM_API_INDEX_XIP_SFlash_GetDeviceId_Need_Lock] = (uint32_t)XIP_SFlash_GetDeviceId_Need_Lock, + [ROM_API_INDEX_XIP_SFlash_GetUniqueId_Need_Lock] = (uint32_t)XIP_SFlash_GetUniqueId_Need_Lock, + [ROM_API_INDEX_XIP_SFlash_Read_Via_Cache_Need_Lock] = (uint32_t)XIP_SFlash_Read_Via_Cache_Need_Lock, + [ROM_API_INDEX_XIP_SFlash_Read_With_Lock] = (uint32_t)XIP_SFlash_Read_With_Lock, + [ROM_API_INDEX_XIP_SFlash_Write_With_Lock] = (uint32_t)XIP_SFlash_Write_With_Lock, + [ROM_API_INDEX_XIP_SFlash_Erase_With_Lock] = (uint32_t)XIP_SFlash_Erase_With_Lock, + + [ROM_API_INDEX_SFlash_Init] = (uint32_t)SFlash_Init, + [ROM_API_INDEX_SFlash_SetSPIMode] = (uint32_t)SFlash_SetSPIMode, + [ROM_API_INDEX_SFlash_Read_Reg] = (uint32_t)SFlash_Read_Reg, + [ROM_API_INDEX_SFlash_Write_Reg] = (uint32_t)SFlash_Write_Reg, + [ROM_API_INDEX_SFlash_Read_Reg_With_Cmd] = (uint32_t)SFlash_Read_Reg_With_Cmd, + [ROM_API_INDEX_SFlash_Write_Reg_With_Cmd] = (uint32_t)SFlash_Write_Reg_With_Cmd, + [ROM_API_INDEX_SFlash_Busy] = (uint32_t)SFlash_Busy, + [ROM_API_INDEX_SFlash_Write_Enable] = (uint32_t)SFlash_Write_Enable, + [ROM_API_INDEX_SFlash_Qspi_Enable] = (uint32_t)SFlash_Qspi_Enable, + [ROM_API_INDEX_SFlash_Volatile_Reg_Write_Enable] = (uint32_t)SFlash_Volatile_Reg_Write_Enable, + [ROM_API_INDEX_SFlash_Chip_Erase] = (uint32_t)SFlash_Chip_Erase, + [ROM_API_INDEX_SFlash_Sector_Erase] = (uint32_t)SFlash_Sector_Erase, + [ROM_API_INDEX_SFlash_Blk32_Erase] = (uint32_t)SFlash_Blk32_Erase, + [ROM_API_INDEX_SFlash_Blk64_Erase] = (uint32_t)SFlash_Blk64_Erase, + [ROM_API_INDEX_SFlash_Erase] = (uint32_t)SFlash_Erase, + [ROM_API_INDEX_SFlash_Program] = (uint32_t)SFlash_Program, + [ROM_API_INDEX_SFlash_GetUniqueId] = (uint32_t)SFlash_GetUniqueId, + [ROM_API_INDEX_SFlash_GetJedecId] = (uint32_t)SFlash_GetJedecId, + [ROM_API_INDEX_SFlash_GetDeviceId] = (uint32_t)SFlash_GetDeviceId, + [ROM_API_INDEX_SFlash_Powerdown] = (uint32_t)SFlash_Powerdown, + [ROM_API_INDEX_SFlash_Releae_Powerdown] = (uint32_t)SFlash_Releae_Powerdown, + [ROM_API_INDEX_SFlash_Restore_From_Powerdown] = (uint32_t)SFlash_Restore_From_Powerdown, + [ROM_API_INDEX_SFlash_SetBurstWrap] = (uint32_t)SFlash_SetBurstWrap, + [ROM_API_INDEX_SFlash_DisableBurstWrap] = (uint32_t)SFlash_DisableBurstWrap, + [ROM_API_INDEX_SFlash_Software_Reset] = (uint32_t)SFlash_Software_Reset, + [ROM_API_INDEX_SFlash_Reset_Continue_Read] = (uint32_t)SFlash_Reset_Continue_Read, + [ROM_API_INDEX_SFlash_Set_IDbus_Cfg] = (uint32_t)SFlash_Set_IDbus_Cfg, + [ROM_API_INDEX_SFlash_IDbus_Read_Enable] = (uint32_t)SFlash_IDbus_Read_Enable, + [ROM_API_INDEX_SFlash_Cache_Read_Enable] = (uint32_t)SFlash_Cache_Read_Enable, + [ROM_API_INDEX_SFlash_Cache_Read_Disable] = (uint32_t)SFlash_Cache_Read_Disable, + [ROM_API_INDEX_SFlash_Read] = (uint32_t)SFlash_Read, + + [ROM_API_INDEX_L1C_Cache_Enable_Set] = (uint32_t)L1C_Cache_Enable_Set, + [ROM_API_INDEX_L1C_Cache_Write_Set] = (uint32_t)L1C_Cache_Write_Set, + [ROM_API_INDEX_L1C_Cache_Flush] = (uint32_t)L1C_Cache_Flush, + [ROM_API_INDEX_L1C_Cache_Hit_Count_Get] = (uint32_t)L1C_Cache_Hit_Count_Get, + [ROM_API_INDEX_L1C_Cache_Miss_Count_Get] = (uint32_t)L1C_Cache_Miss_Count_Get, + [ROM_API_INDEX_L1C_Cache_Read_Disable] = (uint32_t)L1C_Cache_Read_Disable, + [ROM_API_INDEX_L1C_Set_Wrap] = (uint32_t)L1C_Set_Wrap, + [ROM_API_INDEX_L1C_Set_Way_Disable] = (uint32_t)L1C_Set_Way_Disable, + [ROM_API_INDEX_L1C_IROM_2T_Access_Set] = (uint32_t)L1C_IROM_2T_Access_Set, + + [ROM_API_INDEX_SF_Ctrl_Enable] = (uint32_t)SF_Ctrl_Enable, + [ROM_API_INDEX_SF_Ctrl_Psram_Init] = (uint32_t)SF_Ctrl_Psram_Init, + [ROM_API_INDEX_SF_Ctrl_Get_Clock_Delay] = (uint32_t)SF_Ctrl_Get_Clock_Delay, + [ROM_API_INDEX_SF_Ctrl_Set_Clock_Delay] = (uint32_t)SF_Ctrl_Set_Clock_Delay, + [ROM_API_INDEX_SF_Ctrl_Cmds_Set] = (uint32_t)SF_Ctrl_Cmds_Set, + [ROM_API_INDEX_SF_Ctrl_Set_Owner] = (uint32_t)SF_Ctrl_Set_Owner, + [ROM_API_INDEX_SF_Ctrl_Disable] = (uint32_t)SF_Ctrl_Disable, + [ROM_API_INDEX_SF_Ctrl_Select_Pad] = (uint32_t)SF_Ctrl_Select_Pad, + [ROM_API_INDEX_SF_Ctrl_Select_Bank] = (uint32_t)SF_Ctrl_Select_Bank, + [ROM_API_INDEX_SF_Ctrl_AES_Enable_BE] = (uint32_t)SF_Ctrl_AES_Enable_BE, + [ROM_API_INDEX_SF_Ctrl_AES_Enable_LE] = (uint32_t)SF_Ctrl_AES_Enable_LE, + [ROM_API_INDEX_SF_Ctrl_AES_Set_Region] = (uint32_t)SF_Ctrl_AES_Set_Region, + [ROM_API_INDEX_SF_Ctrl_AES_Set_Key] = (uint32_t)SF_Ctrl_AES_Set_Key, + [ROM_API_INDEX_SF_Ctrl_AES_Set_Key_BE] = (uint32_t)SF_Ctrl_AES_Set_Key_BE, + [ROM_API_INDEX_SF_Ctrl_AES_Set_IV] = (uint32_t)SF_Ctrl_AES_Set_IV, + [ROM_API_INDEX_SF_Ctrl_AES_Set_IV_BE] = (uint32_t)SF_Ctrl_AES_Set_IV_BE, + [ROM_API_INDEX_SF_Ctrl_AES_Enable] = (uint32_t)SF_Ctrl_AES_Enable, + [ROM_API_INDEX_SF_Ctrl_AES_Disable] = (uint32_t)SF_Ctrl_AES_Disable, + [ROM_API_INDEX_SF_Ctrl_Is_AES_Enable] = (uint32_t)SF_Ctrl_Is_AES_Enable, + [ROM_API_INDEX_SF_Ctrl_Set_Flash_Image_Offset] = (uint32_t)SF_Ctrl_Set_Flash_Image_Offset, + [ROM_API_INDEX_SF_Ctrl_Get_Flash_Image_Offset] = (uint32_t)SF_Ctrl_Get_Flash_Image_Offset, + [ROM_API_INDEX_SF_Ctrl_Select_Clock] = (uint32_t)SF_Ctrl_Select_Clock, + [ROM_API_INDEX_SF_Ctrl_SendCmd] = (uint32_t)SF_Ctrl_SendCmd, + [ROM_API_INDEX_SF_Ctrl_Flash_Read_Icache_Set] = (uint32_t)SF_Ctrl_Flash_Read_Icache_Set, + [ROM_API_INDEX_SF_Ctrl_Psram_Write_Icache_Set] = (uint32_t)SF_Ctrl_Psram_Write_Icache_Set, + [ROM_API_INDEX_SF_Ctrl_Psram_Read_Icache_Set] = (uint32_t)SF_Ctrl_Psram_Read_Icache_Set, + [ROM_API_INDEX_SF_Ctrl_GetBusyState] = (uint32_t)SF_Ctrl_GetBusyState, + [ROM_API_INDEX_SF_Cfg_Deinit_Ext_Flash_Gpio] = (uint32_t)SF_Cfg_Deinit_Ext_Flash_Gpio, + [ROM_API_INDEX_SF_Cfg_Init_Ext_Flash_Gpio] = (uint32_t)SF_Cfg_Init_Ext_Flash_Gpio, + [ROM_API_INDEX_SF_Cfg_Get_Flash_Cfg_Need_Lock] = (uint32_t)SF_Cfg_Get_Flash_Cfg_Need_Lock, + [ROM_API_INDEX_SF_Cfg_Init_Flash_Gpio] = (uint32_t)SF_Cfg_Init_Flash_Gpio, + [ROM_API_INDEX_SF_Cfg_Flash_Identify] = (uint32_t)SF_Cfg_Flash_Identify, + + [ROM_API_INDEX_Psram_Init] = (uint32_t)Psram_Init, + [ROM_API_INDEX_Psram_ReadReg] = (uint32_t)Psram_ReadReg, + [ROM_API_INDEX_Psram_WriteReg] = (uint32_t)Psram_WriteReg, + [ROM_API_INDEX_Psram_SetDriveStrength] = (uint32_t)Psram_SetDriveStrength, + [ROM_API_INDEX_Psram_SetBurstWrap] = (uint32_t)Psram_SetBurstWrap, + [ROM_API_INDEX_Psram_ReadId] = (uint32_t)Psram_ReadId, + [ROM_API_INDEX_Psram_EnterQuadMode] = (uint32_t)Psram_EnterQuadMode, + [ROM_API_INDEX_Psram_ExitQuadMode] = (uint32_t)Psram_ExitQuadMode, + [ROM_API_INDEX_Psram_ToggleBurstLength] = (uint32_t)Psram_ToggleBurstLength, + [ROM_API_INDEX_Psram_SoftwareReset] = (uint32_t)Psram_SoftwareReset, + [ROM_API_INDEX_Psram_Set_IDbus_Cfg] = (uint32_t)Psram_Set_IDbus_Cfg, + [ROM_API_INDEX_Psram_Cache_Write_Set] = (uint32_t)Psram_Cache_Write_Set, + [ROM_API_INDEX_Psram_Write] = (uint32_t)Psram_Write, + [ROM_API_INDEX_Psram_Read] = (uint32_t)Psram_Read, + + [ROM_API_INDEX_FUNC_INVALID_START ... ROM_API_INDEX_FUNC_LAST_ENTRY] = 0xdeedbeef, +}; + +/*@} end of group ROMDRIVER_Private_Type*/ + +/** @defgroup ROMDRIVER_Private_Defines + * @{ + */ + +/*@} end of group ROMDRIVER_Private_Defines */ + +/** @defgroup ROMDRIVER_Private_Variables + * @{ + */ + +/*@} end of group ROMDRIVER_Private_Variables */ + +/** @defgroup ROMDRIVER_Global_Variables + * @{ + */ + +/*@} end of group ROMDRIVER_Global_Variables */ + +/** @defgroup ROMDRIVER_Private_FunctionDeclaration + * @{ + */ + +/*@} end of group ROMDRIVER_Private_FunctionDeclaration */ + +/** @defgroup ROMDRIVER_Private_Functions + * @{ + */ + +/*@} end of group ROMDRIVER_Private_Functions */ + +/** @defgroup ROMDRIVER_Public_Functions + * @{ + */ + +/*@} end of group ROMDRIVER_Public_Functions */ + +/*@} end of group ROMDRIVER_COMMON */ + +/*@} end of group BL702_Periph_Driver */ + + diff --git a/drivers/bl702_driver/std_drv/src/bl702_sec_dbg.c b/drivers/bl702_driver/std_drv/src/bl702_sec_dbg.c new file mode 100644 index 00000000..15db9fd6 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_sec_dbg.c @@ -0,0 +1,151 @@ +/** + ****************************************************************************** + * @file bl702_sec_dbg.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "string.h" +#include "bl702_sec_dbg.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SEC_DBG + * @{ + */ + +/** @defgroup SEC_DBG_Private_Macros + * @{ + */ + +/*@} end of group SEC_DBG_Private_Macros */ + +/** @defgroup SEC_DBG_Private_Types + * @{ + */ + +/*@} end of group SEC_DBG_Private_Types */ + +/** @defgroup SEC_DBG_Private_Variables + * @{ + */ + +/*@} end of group SEC_DBG_Private_Variables */ + +/** @defgroup SEC_DBG_Global_Variables + * @{ + */ + +/*@} end of group SEC_DBG_Global_Variables */ + +/** @defgroup SEC_DBG_Private_Fun_Declaration + * @{ + */ + +/*@} end of group SEC_DBG_Private_Fun_Declaration */ + +/** @defgroup SEC_DBG_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Sec Dbg read chip ID + * + * @param id[8]: chip ID buffer + * + * @return None + * +*******************************************************************************/ +void Sec_Dbg_Read_Chip_ID(uint8_t id[8]) +{ + uint32_t idLow,idHigh; + + idLow=BL_RD_REG(SEC_DBG_BASE,SEC_DBG_SD_CHIP_ID_LOW); + BL_WRWD_TO_BYTEP(id,idLow); + + idHigh=BL_RD_REG(SEC_DBG_BASE,SEC_DBG_SD_CHIP_ID_HIGH); + BL_WRWD_TO_BYTEP((id+4),idHigh); +} + +/****************************************************************************//** + * @brief Sec Dbg read MAC address + * + * @param macAddr[6]: MAC address buffer + * + * @return None + * +*******************************************************************************/ +void Sec_Dbg_Read_WiFi_MAC(uint8_t macAddr[6]) +{ + uint32_t macLow,macHigh; + + macLow=BL_RD_REG(SEC_DBG_BASE,SEC_DBG_SD_WIFI_MAC_LOW); + BL_WRWD_TO_BYTEP(macAddr,macLow); + + macHigh=BL_RD_REG(SEC_DBG_BASE,SEC_DBG_SD_WIFI_MAC_HIGH); + macAddr[4]=(macHigh>>0)&0xff; + macAddr[5]=(macHigh>>8)&0xff; +} + +/****************************************************************************//** + * @brief Sec Dbg read debug mode + * + * @param None + * + * @return debug mode status + * +*******************************************************************************/ +uint32_t Sec_Dbg_Read_Dbg_Mode(void) +{ + return BL_GET_REG_BITS_VAL(BL_RD_REG(SEC_DBG_BASE,SEC_DBG_SD_STATUS),SEC_DBG_SD_DBG_MODE); +} + +/****************************************************************************//** + * @brief Sec Dbg read debug enable status + * + * @param None + * + * @return enable status + * +*******************************************************************************/ +uint32_t Sec_Dbg_Read_Dbg_Enable(void) +{ + return BL_GET_REG_BITS_VAL(BL_RD_REG(SEC_DBG_BASE,SEC_DBG_SD_STATUS),SEC_DBG_SD_DBG_ENA); +} + +/*@} end of group SEC_DBG_Public_Functions */ + +/*@} end of group SEC_DBG */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_sec_eng.c b/drivers/bl702_driver/std_drv/src/bl702_sec_eng.c new file mode 100644 index 00000000..6c1bc926 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_sec_eng.c @@ -0,0 +1,3210 @@ +/** + ****************************************************************************** + * @file bl702_sec_eng.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "string.h" +#include "bl702_sec_eng.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SEC_ENG + * @{ + */ + +/** @defgroup SEC_ENG_Private_Macros + * @{ + */ +#define PUT_UINT32_BE(n,b,i) \ +{ \ + (b)[(i) ] = (uint8_t) ( (n) >> 24 ); \ + (b)[(i) + 1] = (uint8_t) ( (n) >> 16 ); \ + (b)[(i) + 2] = (uint8_t) ( (n) >> 8 ); \ + (b)[(i) + 3] = (uint8_t) ( (n) ); \ +} +#define PUT_UINT64_BE(n,b,i) \ +{ \ + (b)[(i) ] = (uint8_t) ( (n) >> 56 ); \ + (b)[(i) + 1] = (uint8_t) ( (n) >> 48 ); \ + (b)[(i) + 2] = (uint8_t) ( (n) >> 40 ); \ + (b)[(i) + 3] = (uint8_t) ( (n) >> 32 ); \ + (b)[(i) + 4] = (uint8_t) ( (n) >> 24 ); \ + (b)[(i) + 5] = (uint8_t) ( (n) >> 16 ); \ + (b)[(i) + 6] = (uint8_t) ( (n) >> 8 ); \ + (b)[(i) + 7] = (uint8_t) ( (n) ); \ +} +#define SEC_ENG_SHA_BUSY_TIMEOUT_COUNT (100*160*1000) +#define SEC_ENG_AES_BUSY_TIMEOUT_COUNT (100*160*1000) +#define SEC_ENG_TRNG_BUSY_TIMEOUT_COUNT (100*160*1000) +#define SEC_ENG_PKA_INT_TIMEOUT_COUNT (100*160*1000) +#define SEC_ENG_GMAC_BUSY_TIMEOUT_COUNT (100*160*1000) + +/*@} end of group SEC_ENG_Private_Macros */ + +/** @defgroup SEC_ENG_Private_Types + * @{ + */ +struct pka0_pld_cfg { + union { + struct { + uint32_t size : 12; /*[11: 0], r/w, 0x0 */ + uint32_t d_reg_index : 8; /*[19:12], r/w, 0x0 */ + uint32_t d_reg_type : 4; /*[23:20], r/w, 0x0 */ + uint32_t op : 7; /*[30:24], r/w, 0x0 */ + uint32_t last_op : 1; /*[31:31], r/w, 0x0 */ + }BF; + uint32_t WORD; + } value; +}; + +struct pka0_pldi_cfg { + union { + struct { + uint32_t rsvd : 12; /*[11: 0], r/w, 0x0 */ + uint32_t d_reg_index : 8; /*[19:12], r/w, 0x0 */ + uint32_t d_reg_type : 4; /*[23:20], r/w, 0x0 */ + uint32_t op : 7; /*[30:24], r/w, 0x0 */ + uint32_t last_op : 1; /*[31:31], r/w, 0x0 */ + }BF; + uint32_t WORD; + } value; +}; + +struct pka0_common_op_first_cfg{ + union { + struct { + uint32_t s0_reg_idx : 8; /*[7: 0], r/w, 0x0 */ + uint32_t s0_reg_type : 4; /*[11:8], r/w, 0x0 */ + uint32_t d_reg_idx : 8; /*[19:12], r/w, 0x0 */ + uint32_t d_reg_type : 4; /*[23:20], r/w, 0x0 */ + uint32_t op : 7; /*[30:24], r/w, 0x0 */ + uint32_t last_op : 1; /*[31:31], r/w, 0x0 */ + }BF; + uint32_t WORD; + } value; +}; + +struct pka0_common_op_snd_cfg_S1_only{ + union { + struct { + uint32_t reserved_0_11 : 12; /*[11: 0], rsvd, 0x0 */ + uint32_t s1_reg_idx : 8; /*[19:12], r/w, 0x0 */ + uint32_t s1_reg_type : 4; /*[23:20], r/w, 0x0 */ + uint32_t reserved_24_31 : 8; /*[31:24], rsvd, 0x0 */ + }BF; + uint32_t WORD; + } value; +}; + +struct pka0_common_op_snd_cfg_S2_only{ + union { + struct { + uint32_t s2_reg_idx : 8; /*[7 : 0], r/w, 0x0 */ + uint32_t s2_reg_type : 4; /*[11: 8], r/w, 0x0 */ + uint32_t reserved_12_31 : 20; /*[31:12], rsvd, 0x0 */ + }BF; + uint32_t WORD; + } value; +}; + +struct pka0_common_op_snd_cfg_S1_S2{ + union { + struct { + uint32_t s2_reg_idx : 8; /*[7 : 0], r/w, 0x0 */ + uint32_t s2_reg_type : 4; /*[11: 8], r/w, 0x0 */ + uint32_t s1_reg_idx : 8; /*[19:12], r/w, 0x0 */ + uint32_t s1_reg_type : 4; /*[23:20], r/w, 0x0 */ + uint32_t reserved_24_31 : 8; /*[31:24], rsvd, 0x0 */ + }BF; + uint32_t WORD; + } value; +}; + +struct pka0_bit_shift_op_cfg{ + union { + struct { + uint32_t bit_shift : 15; /*[14: 0], r/w, 0x0 */ + uint32_t reserved_24_31 : 17; /*[31:15], rsvd, 0x0 */ + }BF; + uint32_t WORD; + } value; +}; + +/*@} end of group SEC_ENG_Private_Types */ + +/** @defgroup SEC_ENG_Private_Variables + * @{ + */ +static intCallback_Type* secEngIntCbfArra[SEC_ENG_INT_ALL]= {NULL}; + + +/*@} end of group SEC_ENG_Private_Variables */ + +/** @defgroup SEC_ENG_Global_Variables + * @{ + */ + +/*@} end of group SEC_ENG_Global_Variables */ + +/** @defgroup SEC_ENG_Private_Fun_Declaration + * @{ + */ + +/*@} end of group SEC_ENG_Private_Fun_Declaration */ + +/** @defgroup SEC_ENG_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief SHA256 initialization function + * + * @param shaCtx: SHA256 context pointer + * @param shaNo: SHA ID type + * @param shaType: SHA type + * @param shaTmpBuf[16]: SHA temp buffer for store data that is less than 64 bytes + * @param padding[16]: SHA padding buffer for store padding data + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_SHA256_Init(SEC_Eng_SHA256_Ctx *shaCtx,SEC_ENG_SHA_ID_Type shaNo,SEC_ENG_SHA_Type shaType,uint32_t shaTmpBuf[16],uint32_t padding[16]) +{ + uint32_t SHAx = SEC_ENG_BASE+SEC_ENG_SHA_OFFSET; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_SHA_ID_TYPE(shaNo)); + CHECK_PARAM(IS_SEC_ENG_SHA_TYPE(shaType)); + + /* Deal SHA control register to set SHA mode */ + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_CTRL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_SHA_MODE,shaType); + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_CTRL,tmpVal); + + /* Clear context */ + memset(shaCtx,0,sizeof(SEC_Eng_SHA256_Ctx)); + + /* Init temp buffer and padding buffer */ + shaCtx->shaBuf=shaTmpBuf; + shaCtx->shaPadding=padding; + BL702_MemSet(shaCtx->shaPadding,0,64); + BL702_MemSet(shaCtx->shaPadding,0x80,1); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(SEC_SHA_IRQn,SEC_SHA_IRQHandler); +#endif +} + +/****************************************************************************//** + * @brief SHA start function + * + * @param shaNo: SHA ID type + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_SHA_Start(SEC_ENG_SHA_ID_Type shaNo) +{ + uint32_t SHAx = SEC_ENG_BASE+SEC_ENG_SHA_OFFSET; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_SHA_ID_TYPE(shaNo)); + + /* Set SHA enable */ + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_CTRL); + + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_SHA_EN); + /* Hash sel 0 for new start */ + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_SHA_HASH_SEL); + + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_CTRL,tmpVal); +} + +/****************************************************************************//** + * @brief SHA256 update input data function + * + * @param shaCtx: SHA256 context pointer + * @param shaNo: SHA ID type + * @param input: SHA input data pointer, and the address should be word align + * @param len: SHA input data length + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type Sec_Eng_SHA256_Update(SEC_Eng_SHA256_Ctx *shaCtx,SEC_ENG_SHA_ID_Type shaNo,const uint8_t *input, uint32_t len) +{ + uint32_t SHAx = SEC_ENG_BASE+SEC_ENG_SHA_OFFSET; + uint32_t tmpVal; + uint32_t fill; + uint32_t left; + uint32_t timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + + if( len == 0 ){ + return SUCCESS; + } + + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_BUSY)); + + /* SHA need set se_sha_sel to 1 to keep the last SHA state */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_SHA_HASH_SEL,shaCtx->shaFeed); + + left = shaCtx->total[0] & 0x3F; + fill = 64 - left; + + shaCtx->total[0] += (uint32_t) len; + shaCtx->total[0] &= 0xFFFFFFFF; + + if( shaCtx->total[0] < (uint32_t) len ){ + shaCtx->total[1]++; + } + + if( left && len >= fill ){ + BL702_MemCpy_Fast( (void *) ((uint8_t *)shaCtx->shaBuf + left), input, fill ); + /* Set data source address */ + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_MSA,(uint32_t )shaCtx->shaBuf); + + /* Set data length */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_SHA_MSG_LEN,1); + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_CTRL,tmpVal); + /* Trigger */ + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_SHA_TRIG_1T); + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_CTRL,tmpVal); + + shaCtx->shaFeed=1; + input += fill; + len -= fill; + left = 0; + } + + fill=len/64; + len=len%64; + if( fill>0 ){ + /* Wait finished */ + timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_BUSY)); + + /* SHA need set se_sha_sel to 1 to keep the last sha state */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_SHA_HASH_SEL,shaCtx->shaFeed); + + /* Fill data */ + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_MSA,(uint32_t)input); + + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_SHA_MSG_LEN,fill); + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_CTRL,tmpVal); + + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_SHA_TRIG_1T); + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_CTRL,tmpVal); + + input+=(fill*64); + shaCtx->shaFeed=1; + } + + if( len > 0 ){ + /* Wait finished */ + timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_BUSY)); + + /* Copy left data into temp buffer */ + BL702_MemCpy_Fast( (void *) ((uint8_t *)shaCtx->shaBuf + left), input, len ); + } + + /* Wait finished */ + timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_BUSY)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief SHA256 finish to get output function + * + * @param shaCtx: SHA256 context pointer + * @param shaNo: SHA ID type + * @param hash: SHA output data of SHA result + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type Sec_Eng_SHA256_Finish(SEC_Eng_SHA256_Ctx *shaCtx,SEC_ENG_SHA_ID_Type shaNo,uint8_t *hash) +{ + uint32_t last, padn; + uint32_t high, low; + uint8_t shaMode; + uint8_t msgLen[8]; + uint8_t *p=(uint8_t *)hash; + uint32_t SHAx = SEC_ENG_BASE+SEC_ENG_SHA_OFFSET; + uint32_t tmpVal; + uint32_t timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_SHA_ID_TYPE(shaNo)); + + /* Wait finished */ + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_BUSY)); + + high = ( shaCtx->total[0] >> 29 ) + | ( shaCtx->total[1] << 3 ); + low = ( shaCtx->total[0] << 3 ); + + PUT_UINT32_BE( high, msgLen, 0 ); + PUT_UINT32_BE( low, msgLen, 4 ); + + last = shaCtx->total[0] & 0x3F; + padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); + + Sec_Eng_SHA256_Update(shaCtx,shaNo, (uint8_t *)shaCtx->shaPadding, padn ); + + /* Wait for shaPadding idle */ + timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_BUSY)); + + BL702_MemCpy_Fast(shaCtx->shaPadding,msgLen,8); + Sec_Eng_SHA256_Update(shaCtx,shaNo, (uint8_t *)shaCtx->shaPadding, 8 ); + + /* Wait finished */ + timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_BUSY)); + + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_CTRL); + shaMode=(SEC_ENG_SHA_Type)BL_GET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_SHA_MODE); + /* Copy SHA value */ + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_HASH_L_0); + *p++=(tmpVal&0xff);*p++=((tmpVal>>8)&0xff);*p++=((tmpVal>>16)&0xff);*p++=((tmpVal>>24)&0xff); + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_HASH_L_1); + *p++=(tmpVal&0xff);*p++=((tmpVal>>8)&0xff);*p++=((tmpVal>>16)&0xff);*p++=((tmpVal>>24)&0xff); + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_HASH_L_2); + *p++=(tmpVal&0xff);*p++=((tmpVal>>8)&0xff);*p++=((tmpVal>>16)&0xff);*p++=((tmpVal>>24)&0xff); + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_HASH_L_3); + *p++=(tmpVal&0xff);*p++=((tmpVal>>8)&0xff);*p++=((tmpVal>>16)&0xff);*p++=((tmpVal>>24)&0xff); + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_HASH_L_4); + *p++=(tmpVal&0xff);*p++=((tmpVal>>8)&0xff);*p++=((tmpVal>>16)&0xff);*p++=((tmpVal>>24)&0xff); + if (shaMode==SEC_ENG_SHA224 || shaMode==SEC_ENG_SHA256){ + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_HASH_L_5); + *p++=(tmpVal&0xff);*p++=((tmpVal>>8)&0xff);*p++=((tmpVal>>16)&0xff);*p++=((tmpVal>>24)&0xff); + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_HASH_L_6); + *p++=(tmpVal&0xff);*p++=((tmpVal>>8)&0xff);*p++=((tmpVal>>16)&0xff);*p++=((tmpVal>>24)&0xff); + if (shaMode==SEC_ENG_SHA256){ + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_HASH_L_7); + *p++=(tmpVal&0xff);*p++=((tmpVal>>8)&0xff);*p++=((tmpVal>>16)&0xff);*p++=((tmpVal>>24)&0xff); + } + } + + /* Disable SHA engine*/ + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_CTRL); + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_SHA_HASH_SEL); + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_SHA_EN); + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_CTRL,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief SHA enable link mode and set link config address + * + * @param shaNo: SHA ID type + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_SHA_Enable_Link(SEC_ENG_SHA_ID_Type shaNo) +{ + uint32_t SHAx = SEC_ENG_BASE; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_SHA_ID_TYPE(shaNo)); + + /* Enable sha and enable link mode */ + tmpVal = BL_RD_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL); + tmpVal = BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_SHA_0_EN); + tmpVal = BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_SHA_0_LINK_MODE); + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL,tmpVal); +} + +/****************************************************************************//** + * @brief SHA disable link mode + * + * @param shaNo: SHA ID type + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_SHA_Disable_Link(SEC_ENG_SHA_ID_Type shaNo) +{ + uint32_t SHAx = SEC_ENG_BASE; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_SHA_ID_TYPE(shaNo)); + + /* Disable sha and disable link mode */ + tmpVal = BL_RD_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL); + tmpVal = BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_SHA_0_LINK_MODE); + tmpVal = BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_SHA_0_EN); + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL,tmpVal); +} + +/****************************************************************************//** + * @brief SHA256 link mode initialization function + * + * @param shaCtx: SHA256 link mode context pointer + * @param shaNo: SHA ID type + * @param linkAddr: SHA link configure address + * @param shaTmpBuf[16]: SHA temp buffer for store data that is less than 64 bytes + * @param padding[16]: SHA padding buffer for store padding data + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_SHA256_Link_Init(SEC_Eng_SHA256_Link_Ctx *shaCtx,SEC_ENG_SHA_ID_Type shaNo,uint32_t linkAddr,uint32_t shaTmpBuf[16],uint32_t padding[16]) +{ + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_SHA_ID_TYPE(shaNo)); + + /* Clear context */ + memset(shaCtx,0,sizeof(SEC_Eng_SHA256_Link_Ctx)); + + /* Init temp buffer,padding buffer and link address */ + shaCtx->shaBuf=shaTmpBuf; + shaCtx->shaPadding=padding; + BL702_MemSet(shaCtx->shaPadding,0,64); + BL702_MemSet(shaCtx->shaPadding,0x80,1); + shaCtx->linkAddr=linkAddr; + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(SEC_SHA_IRQn,SEC_SHA_IRQHandler); +#endif +} + +/****************************************************************************//** + * @brief SHA256 link mode update input data function + * + * @param shaCtx: SHA256 link mode context pointer + * @param shaNo: SHA ID type + * @param input: SHA input data pointer, and the address should be word align + * @param len: SHA input data length + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type Sec_Eng_SHA256_Link_Update(SEC_Eng_SHA256_Link_Ctx *shaCtx,SEC_ENG_SHA_ID_Type shaNo,const uint8_t *input, uint32_t len) +{ + uint32_t SHAx = SEC_ENG_BASE; + uint32_t tmpVal; + uint32_t fill; + uint32_t left; + uint32_t timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + + if( len == 0 ){ + return SUCCESS; + } + + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_0_BUSY)); + + /* Set link address */ + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_0_LINK,shaCtx->linkAddr); + + left = shaCtx->total[0] & 0x3F; + fill = 64 - left; + + shaCtx->total[0] += (uint32_t) len; + shaCtx->total[0] &= 0xFFFFFFFF; + + if( shaCtx->total[0] < (uint32_t) len ){ + shaCtx->total[1]++; + } + + if( left && len >= fill ){ + BL702_MemCpy_Fast( (void *) ((uint8_t *)shaCtx->shaBuf + left), input, fill ); + /* Set data source address */ + *(uint32_t *)(shaCtx->linkAddr+4) = (uint32_t)shaCtx->shaBuf; + + /* Set data length */ + *((uint16_t *)shaCtx->linkAddr+1) = 1; + /* Trigger */ + tmpVal = BL_RD_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL); + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL,BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_SHA_0_TRIG_1T)); + + /* Choose accumulating last hash in the next time */ + *((uint32_t *)shaCtx->linkAddr) |= 0x40; + input += fill; + len -= fill; + left = 0; + } + + fill=len/64; + len=len%64; + if( fill>0 ){ + /* Wait finished */ + timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_0_BUSY)); + + /* Fill data */ + *(uint32_t *)(shaCtx->linkAddr+4) = (uint32_t)input; + *((uint16_t *)shaCtx->linkAddr+1) = fill; + + /* Trigger */ + tmpVal = BL_RD_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL); + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL,BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_SHA_0_TRIG_1T)); + + input+=(fill*64); + /* Choose accumulating last hash in the next time */ + *((uint32_t *)shaCtx->linkAddr) |= 0x40; + } + + if( len > 0 ){ + /* Wait finished */ + timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_0_BUSY)); + + /* Copy left data into temp buffer */ + BL702_MemCpy_Fast( (void *) ((uint8_t *)shaCtx->shaBuf + left), input, len ); + } + + /* Wait finished */ + timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_0_BUSY)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief SHA256 link mode finish to get output function + * + * @param shaCtx: SHA256 link mode context pointer + * @param shaNo: SHA ID type + * @param hash: SHA output data of SHA result + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type Sec_Eng_SHA256_Link_Finish(SEC_Eng_SHA256_Link_Ctx *shaCtx,SEC_ENG_SHA_ID_Type shaNo,uint8_t *hash) +{ + uint32_t last, padn; + uint32_t high, low; + uint8_t msgLen[8]; + uint32_t SHAx = SEC_ENG_BASE; + uint32_t tmpVal; + uint32_t shaMode = (*(uint32_t *)shaCtx->linkAddr)>>2&0x7; + uint32_t timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_SHA_ID_TYPE(shaNo)); + + /* Wait finished */ + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_0_BUSY)); + + /* Set link address */ + BL_WR_REG(SHAx,SEC_ENG_SE_SHA_0_LINK,shaCtx->linkAddr); + + high = ( shaCtx->total[0] >> 29 ) + | ( shaCtx->total[1] << 3 ); + low = ( shaCtx->total[0] << 3 ); + + PUT_UINT32_BE( high, msgLen, 0 ); + PUT_UINT32_BE( low, msgLen, 4 ); + + last = shaCtx->total[0] & 0x3F; + padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); + + Sec_Eng_SHA256_Link_Update(shaCtx,shaNo, (uint8_t *)shaCtx->shaPadding, padn ); + + /* Wait for shaPadding idle */ + timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_0_BUSY)); + + Sec_Eng_SHA256_Link_Update(shaCtx,shaNo, msgLen, 8 ); + + /* Wait finished */ + timeoutCnt = SEC_ENG_SHA_BUSY_TIMEOUT_COUNT; + do { + tmpVal=BL_RD_REG(SHAx,SEC_ENG_SE_SHA_0_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_SHA_0_BUSY)); + + /* Get result according to SHA mode,result is placed in (link address + offset:8) */ + switch(shaMode){ + case 0: + BL702_MemCpy_Fast(hash,(uint8_t *)(shaCtx->linkAddr+8),32); + break; + case 1: + BL702_MemCpy_Fast(hash,(uint8_t *)(shaCtx->linkAddr+8),28); + break; + case 2: + BL702_MemCpy_Fast(hash,(uint8_t *)(shaCtx->linkAddr+8),20); + break; + case 3: + BL702_MemCpy_Fast(hash,(uint8_t *)(shaCtx->linkAddr+8),20); + break; + default: + break; + } + + /* Choose new hash in the next time */ + *((uint32_t *)shaCtx->linkAddr) &= ~0x40; + + return SUCCESS; +} + +/****************************************************************************//** + * @brief AES initialization function + * + * @param aesCtx: AES context pointer + * @param aesNo: AES ID type + * @param aesType: AES type:ECB,CTR,CBC + * @param keyType: AES key type:128,256,192 + * @param enDecType: AES encryption or decryption + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type Sec_Eng_AES_Init(SEC_Eng_AES_Ctx *aesCtx,SEC_ENG_AES_ID_Type aesNo,SEC_ENG_AES_Type aesType,SEC_ENG_AES_Key_Type keyType,SEC_ENG_AES_EnDec_Type enDecType) +{ + uint32_t AESx = SEC_ENG_BASE+SEC_ENG_AES_OFFSET; + uint32_t tmpVal; + uint32_t timeoutCnt = SEC_ENG_AES_BUSY_TIMEOUT_COUNT; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_AES_ID_TYPE(aesNo)); + CHECK_PARAM(IS_SEC_ENG_AES_TYPE(aesType)); + CHECK_PARAM(IS_SEC_ENG_AES_KEY_TYPE(keyType)); + CHECK_PARAM(IS_SEC_ENG_AES_ENDEC_TYPE(enDecType)); + + /* Wait finished */ + do { + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_AES_BUSY)); + + /* Set AES mode type*/ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_BLOCK_MODE,aesType); + + /* Set AES key type */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_MODE,keyType); + + /* Set AES encryption or decryption */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_DEC_EN,enDecType); + + /* Clear dec_key_sel to select new key */ + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_AES_DEC_KEY_SEL); + + /* Clear aes iv sel to select new iv */ + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_AES_IV_SEL); + + /* Clear AES interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_AES_INT_CLR_1T); + + /* Enable AES */ + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_AES_EN); + + BL_WR_REG(AESx,SEC_ENG_SE_AES_CTRL,tmpVal); + + /* Clear AES context */ + memset(aesCtx,0,sizeof(SEC_Eng_AES_Ctx)); + + /* Enable ID0 Access for HW Key */ + BL_WR_REG(SEC_ENG_BASE,SEC_ENG_SE_AES_0_CTRL_PROT,0x03); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(SEC_AES_IRQn,SEC_AES_IRQHandler); +#endif + + return SUCCESS; +} + +/****************************************************************************//** + * @brief AES enable function,set AES bigendian + * + * @param aesNo: AES ID type + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_AES_Enable_BE(SEC_ENG_AES_ID_Type aesNo) +{ + uint32_t AESx = SEC_ENG_BASE+SEC_ENG_AES_OFFSET; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_AES_ID_TYPE(aesNo)); + + BL_WR_REG(AESx,SEC_ENG_SE_AES_ENDIAN,0x0f); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(SEC_AES_IRQn,SEC_AES_IRQHandler); +#endif +} + +/****************************************************************************//** + * @brief AES enable function,set AES littleendian + * + * @param aesNo: AES ID type + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_AES_Enable_LE(SEC_ENG_AES_ID_Type aesNo) +{ + uint32_t AESx = SEC_ENG_BASE+SEC_ENG_AES_OFFSET; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_AES_ID_TYPE(aesNo)); + + BL_WR_REG(AESx,SEC_ENG_SE_AES_ENDIAN,0x00); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(SEC_AES_IRQn,SEC_AES_IRQHandler); +#endif +} + +/****************************************************************************//** + * @brief AES enable link mode + * + * @param aesNo: AES ID type + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_AES_Enable_Link(SEC_ENG_AES_ID_Type aesNo) +{ + uint32_t AESx = SEC_ENG_BASE; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_AES_ID_TYPE(aesNo)); + + /* Enable aes link mode */ + tmpVal = BL_RD_REG(AESx,SEC_ENG_SE_AES_0_CTRL); + BL_WR_REG(AESx,SEC_ENG_SE_AES_0_CTRL,BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_AES_0_LINK_MODE)); + + /* Enable ID0 Access for HW Key */ + BL_WR_REG(SEC_ENG_BASE,SEC_ENG_SE_AES_0_CTRL_PROT,0x03); +} + +/****************************************************************************//** + * @brief AES disable link mode + * + * @param aesNo: AES ID type + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_AES_Disable_Link(SEC_ENG_AES_ID_Type aesNo) +{ + uint32_t AESx = SEC_ENG_BASE; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_AES_ID_TYPE(aesNo)); + + /* Disable aes link mode */ + tmpVal = BL_RD_REG(AESx,SEC_ENG_SE_AES_0_CTRL); + BL_WR_REG(AESx,SEC_ENG_SE_AES_0_CTRL,BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_AES_0_LINK_MODE)); +} + +/****************************************************************************//** + * @brief AES work in link mode + * + * @param aesNo: AES ID type + * @param linkAddr: Address of config structure in link mode + * @param in: AES input data buffer to deal with + * @param len: AES input data length + * @param out: AES output data buffer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type Sec_Eng_AES_Link_Work(SEC_ENG_AES_ID_Type aesNo,uint32_t linkAddr,const uint8_t *in,uint32_t len,uint8_t *out) +{ + uint32_t AESx = SEC_ENG_BASE; + uint32_t tmpVal; + uint32_t timeoutCnt = SEC_ENG_AES_BUSY_TIMEOUT_COUNT; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_AES_ID_TYPE(aesNo)); + + /* Link address should word align */ + if((linkAddr&0x03) != 0 || len%16 != 0){ + return ERROR; + } + + /* Wait finished */ + do { + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_0_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_AES_0_BUSY)); + + /* Set link address */ + BL_WR_REG(AESx,SEC_ENG_SE_AES_0_LINK,linkAddr); + + /* Change source buffer address and destination buffer address */ + *(uint32_t *)(linkAddr+4) = (uint32_t)in; + *(uint32_t *)(linkAddr+8) = (uint32_t)out; + + /* Set data length */ + *((uint16_t *)linkAddr+1) = len/16; + + /* Enable aes */ + tmpVal = BL_RD_REG(AESx,SEC_ENG_SE_AES_0_CTRL); + BL_WR_REG(AESx,SEC_ENG_SE_AES_0_CTRL,BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_AES_0_EN)); + + /* Start aes engine and wait finishing */ + tmpVal = BL_RD_REG(AESx,SEC_ENG_SE_AES_0_CTRL); + BL_WR_REG(AESx,SEC_ENG_SE_AES_0_CTRL,BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_AES_0_TRIG_1T)); + __NOP(); + __NOP(); + timeoutCnt = SEC_ENG_AES_BUSY_TIMEOUT_COUNT; + do { + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_0_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_AES_0_BUSY)); + + /* Disable aes */ + BL_WR_REG(AESx,SEC_ENG_SE_AES_0_CTRL,BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_AES_0_EN)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief AES set hardware key source:efuse region for CPU0 or region efuse for CPU1 + * + * @param aesNo: AES ID type + * @param src: AES key source type + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_AES_Set_Hw_Key_Src(SEC_ENG_AES_ID_Type aesNo,uint8_t src) +{ + uint32_t AESx = SEC_ENG_BASE+SEC_ENG_AES_OFFSET; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_AES_ID_TYPE(aesNo)); + + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_SBOOT); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_SBOOT_KEY_SEL,src); + + BL_WR_REG(AESx,SEC_ENG_SE_AES_SBOOT,tmpVal); +} + +/****************************************************************************//** + * @brief AES set KEY and IV + * + * @param aesNo: AES ID type + * @param keySrc: AES KEY type:SEC_ENG_AES_KEY_HW or SEC_ENG_AES_KEY_SW + * @param key: AES KEY pointer + * @param iv: AES IV pointer + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_AES_Set_Key_IV(SEC_ENG_AES_ID_Type aesNo,SEC_ENG_AES_Key_Src_Type keySrc,const uint8_t *key,const uint8_t *iv) +{ + uint32_t AESx = SEC_ENG_BASE+SEC_ENG_AES_OFFSET; + uint32_t tmpVal; + uint32_t keyType; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_AES_ID_TYPE(aesNo)); + CHECK_PARAM(IS_SEC_ENG_AES_KEY_SRC_TYPE(keySrc)); + + /* Set IV */ + BL_WR_REG(AESx,SEC_ENG_SE_AES_IV_3,__REV(BL_RDWD_FRM_BYTEP(iv))); + iv+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_IV_2,__REV(BL_RDWD_FRM_BYTEP(iv))); + iv+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_IV_1,__REV(BL_RDWD_FRM_BYTEP(iv))); + iv+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_IV_0,__REV(BL_RDWD_FRM_BYTEP(iv))); + iv+=4; + + /* Select hardware key */ + if(keySrc==SEC_ENG_AES_KEY_HW){ + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_CTRL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_HW_KEY_EN,SEC_ENG_AES_KEY_HW); + BL_WR_REG(AESx,SEC_ENG_SE_AES_CTRL,tmpVal); + + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_KEY_SEL_0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_KEY_SEL_0,*key); + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_SEL_0,tmpVal); + + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_KEY_SEL_1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_KEY_SEL_1,*key); + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_SEL_1,tmpVal); + + return; + } + + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_7,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_6,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_5,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_4,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_CTRL); + keyType=BL_GET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_MODE); + if(keyType==(uint32_t)SEC_ENG_AES_KEY_192BITS){ + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_3,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_2,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + }else if(keyType==(uint32_t)SEC_ENG_AES_KEY_256BITS || keyType==(uint32_t)SEC_ENG_AES_DOUBLE_KEY_128BITS){ + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_3,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_2,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_1,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_0,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + } + + /* Select software key */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_HW_KEY_EN,SEC_ENG_AES_KEY_SW); + + BL_WR_REG(AESx,SEC_ENG_SE_AES_CTRL,tmpVal); +} + +/****************************************************************************//** + * @brief AES set KEY and IV with bigendian + * + * @param aesNo: AES ID type + * @param keySrc: AES KEY type:SEC_ENG_AES_KEY_HW or SEC_ENG_AES_KEY_SW + * @param key: AES KEY pointer + * @param iv: AES IV pointer + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_AES_Set_Key_IV_BE(SEC_ENG_AES_ID_Type aesNo,SEC_ENG_AES_Key_Src_Type keySrc,const uint8_t *key,const uint8_t *iv) +{ + uint32_t AESx = SEC_ENG_BASE+SEC_ENG_AES_OFFSET; + uint32_t tmpVal; + uint32_t keyType; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_AES_ID_TYPE(aesNo)); + CHECK_PARAM(IS_SEC_ENG_AES_KEY_SRC_TYPE(keySrc)); + + /* Set IV */ + BL_WR_REG(AESx,SEC_ENG_SE_AES_IV_0,BL_RDWD_FRM_BYTEP(iv)); + iv+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_IV_1,BL_RDWD_FRM_BYTEP(iv)); + iv+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_IV_2,BL_RDWD_FRM_BYTEP(iv)); + iv+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_IV_3,BL_RDWD_FRM_BYTEP(iv)); + iv+=4; + + /* Select hardware key */ + if(keySrc==SEC_ENG_AES_KEY_HW){ + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_CTRL); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_HW_KEY_EN,SEC_ENG_AES_KEY_HW); + BL_WR_REG(AESx,SEC_ENG_SE_AES_CTRL,tmpVal); + + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_KEY_SEL_0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_KEY_SEL_0,*key); + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_SEL_0,tmpVal); + + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_KEY_SEL_1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_KEY_SEL_1,*key); + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_SEL_1,tmpVal); + + return ; + } + + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_0,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_1,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_2,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_3,BL_RDWD_FRM_BYTEP(key)); + key+=4; + + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_CTRL); + keyType=BL_GET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_MODE); + if(keyType==(uint32_t)SEC_ENG_AES_KEY_192BITS){ + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_4,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_5,BL_RDWD_FRM_BYTEP(key)); + key+=4; + }else if(keyType==(uint32_t)SEC_ENG_AES_KEY_256BITS || keyType==(uint32_t)SEC_ENG_AES_DOUBLE_KEY_128BITS){ + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_4,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_5,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_6,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(AESx,SEC_ENG_SE_AES_KEY_7,BL_RDWD_FRM_BYTEP(key)); + key+=4; + } + + /* Select software key */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_HW_KEY_EN,SEC_ENG_AES_KEY_SW); + + BL_WR_REG(AESx,SEC_ENG_SE_AES_CTRL,tmpVal); +} + +/****************************************************************************//** + * @brief AES set counter byte type in CTR mode + * + * @param aesNo: AES ID type + * @param counterType: AES counter type + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_AES_Set_Counter_Byte(SEC_ENG_AES_ID_Type aesNo,SEC_ENG_AES_Counter_Type counterType) +{ + uint32_t AESx = SEC_ENG_BASE; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_SEC_ENG_AES_ID_TYPE(aesNo)); + CHECK_PARAM(IS_SEC_ENG_AES_COUNTER_TYPE(counterType)); + + /* Set counter type */ + tmpVal = BL_RD_REG(AESx,SEC_ENG_SE_AES_0_ENDIAN); + BL_WR_REG(AESx,SEC_ENG_SE_AES_0_ENDIAN,BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_0_CTR_LEN,counterType)); +} + +/****************************************************************************//** + * @brief AES encrypt or decrypt input data + * + * @param aesCtx: AES context pointer + * @param aesNo: AES ID type + * @param in: AES input data buffer to deal with + * @param len: AES input data length + * @param out: AES output data buffer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type Sec_Eng_AES_Crypt(SEC_Eng_AES_Ctx *aesCtx,SEC_ENG_AES_ID_Type aesNo,const uint8_t *in, uint32_t len,uint8_t *out) +{ + uint32_t AESx = SEC_ENG_BASE+SEC_ENG_AES_OFFSET; + uint32_t tmpVal; + uint32_t timeoutCnt = SEC_ENG_AES_BUSY_TIMEOUT_COUNT; + + if( len %16 !=0){ + return ERROR; + } + + /* Wait finished */ + do { + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_AES_BUSY)); + + /* Clear trigger */ + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_AES_TRIG_1T); + BL_WR_REG(AESx,SEC_ENG_SE_AES_CTRL,tmpVal); + + /* Set input and output address */ + BL_WR_REG(AESx,SEC_ENG_SE_AES_MSA,(uint32_t)in); + BL_WR_REG(AESx,SEC_ENG_SE_AES_MDA,(uint32_t)out); + + /* Set message length */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_MSG_LEN,len/16); + + if(aesCtx->mode==SEC_ENG_AES_CTR){ + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_AES_DEC_KEY_SEL); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_AES_DEC_KEY_SEL); + } + + /* Set IV sel:0 for new, 1 for last */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_AES_IV_SEL,aesCtx->aesFeed); + BL_WR_REG(AESx,SEC_ENG_SE_AES_CTRL,tmpVal); + + /* Trigger AES Engine */ + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_AES_TRIG_1T); + BL_WR_REG(AESx,SEC_ENG_SE_AES_CTRL,tmpVal); + + /* Wait finished */ + timeoutCnt = SEC_ENG_AES_BUSY_TIMEOUT_COUNT; + do { + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_AES_BUSY)); + + aesCtx->aesFeed=1; + + return SUCCESS; +} + +/****************************************************************************//** + * @brief AES finish function, clean register + * + * @param aesNo: AES ID type + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type Sec_Eng_AES_Finish(SEC_ENG_AES_ID_Type aesNo) +{ + uint32_t AESx = SEC_ENG_BASE+SEC_ENG_AES_OFFSET; + uint32_t tmpVal; + uint32_t timeoutCnt = SEC_ENG_AES_BUSY_TIMEOUT_COUNT; + + /* Wait finished */ + do { + tmpVal=BL_RD_REG(AESx,SEC_ENG_SE_AES_CTRL); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_AES_BUSY)); + + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_AES_EN); + + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_AES_DEC_KEY_SEL); + + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_AES_IV_SEL); + + BL_WR_REG(AESx,SEC_ENG_SE_AES_CTRL,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief TRNG enable TRNG interrupt + * + * @param None + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type Sec_Eng_Trng_Enable(void) +{ + uint32_t TRNGx = SEC_ENG_BASE+SEC_ENG_TRNG_OFFSET; + uint32_t tmpVal; + uint32_t timeoutCnt = SEC_ENG_TRNG_BUSY_TIMEOUT_COUNT; + + tmpVal=BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0); + + /* FIXME:default reseed number is 0x1ff, to verify, use 0xa to speed up */ + //tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_TRNG_RESEED_N,0x1ff); + + /* No interrupt as default */ + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_EN); + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_INT_CLR_1T); + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); + /* busy will be set to 1 after trigger, the gap is 1T */ + __NOP(); + __NOP(); + __NOP(); + __NOP(); + do { + tmpVal=BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_TRNG_BUSY)); + /* Clear trng interrupt */ + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_INT_CLR_1T); + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(SEC_TRNG_IRQn,SEC_TRNG_IRQHandler); +#endif + + return SUCCESS; +} + +/****************************************************************************//** + * @brief TRNG enable TRNG interrupt + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_Trng_Int_Enable(void) +{ + uint32_t TRNGx = SEC_ENG_BASE+SEC_ENG_TRNG_OFFSET; + uint32_t tmpVal; + + tmpVal=BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0); + + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_INT_MASK); + + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); +} + +/****************************************************************************//** + * @brief TRNG disable TRNG interrupt + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_Trng_Int_Disable(void) +{ + uint32_t TRNGx = SEC_ENG_BASE+SEC_ENG_TRNG_OFFSET; + uint32_t tmpVal; + + tmpVal=BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0); + + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_INT_MASK); + + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); +} + +/****************************************************************************//** + * @brief TRNG get random data out + * + * @param data[32]: TRNG output data + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type Sec_Eng_Trng_Read(uint8_t data[32]) +{ + uint8_t *p=(uint8_t *)data; + uint32_t TRNGx = SEC_ENG_BASE+SEC_ENG_TRNG_OFFSET; + uint32_t tmpVal; + uint32_t timeoutCnt = SEC_ENG_TRNG_BUSY_TIMEOUT_COUNT; + + tmpVal=BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0); + + /* Trigger */ + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_TRIG_1T); + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); + + /* busy will be set to 1 after trigger, the gap is 1T */ + __NOP(); + __NOP(); + __NOP(); + __NOP(); + do { + tmpVal=BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(BL_IS_REG_BIT_SET(tmpVal,SEC_ENG_SE_TRNG_BUSY)); + + /* copy trng value */ + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_0)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_1)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_2)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_3)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_4)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_5)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_6)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_7)); + p+=4; + + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_TRIG_1T); + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); + + /* Clear data */ + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_DOUT_CLR_1T); + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); + + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_DOUT_CLR_1T); + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief TRNG Interrupt Read Trigger + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_Trng_Int_Read_Trigger(void) +{ + uint32_t TRNGx = SEC_ENG_BASE+SEC_ENG_TRNG_OFFSET; + uint32_t tmpVal; + + Sec_Eng_Trng_Int_Enable(); + + tmpVal=BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0); + /* Trigger */ + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_TRIG_1T); + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); +} + +/****************************************************************************//** + * @brief TRNG get random data out with Interrupt + * + * @param data[32]: TRNG output data + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_Trng_Int_Read(uint8_t data[32]) +{ + uint8_t *p=(uint8_t *)data; + uint32_t TRNGx = SEC_ENG_BASE+SEC_ENG_TRNG_OFFSET; + uint32_t tmpVal; + + tmpVal=BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0); + + /* copy trng value */ + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_0)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_1)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_2)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_3)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_4)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_5)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_6)); + p+=4; + BL_WRWD_TO_BYTEP(p,BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_DOUT_7)); + p+=4; + + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_TRIG_1T); + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); + + /* Clear data */ + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_DOUT_CLR_1T); + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); + + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_DOUT_CLR_1T); + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); +} + +/****************************************************************************//** + * @brief Disable TRNG + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_Trng_Disable(void) +{ + uint32_t TRNGx = SEC_ENG_BASE+SEC_ENG_TRNG_OFFSET; + uint32_t tmpVal; + + tmpVal=BL_RD_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0); + + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_EN); + //tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_RESEED_N); + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_TRNG_INT_CLR_1T); + + BL_WR_REG(TRNGx,SEC_ENG_SE_TRNG_CTRL_0,tmpVal); +} + +/****************************************************************************//** + * @brief PKA Reset + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_Reset(void) +{ + uint8_t val; + + //Disable sec engine + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_CTRL_0, 0); + + //Enable sec engine + val = 1<<3; + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_CTRL_0, val); +} + +/****************************************************************************//** + * @brief PKA Enable big endian + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_BigEndian_Enable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_CTRL_0); + tmpVal=BL_SET_REG_BIT(tmpVal,SEC_ENG_SE_PKA_0_ENDIAN); + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_CTRL_0, tmpVal); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(SEC_PKA_IRQn,SEC_PKA_IRQHandler); +#endif +} + +/****************************************************************************//** + * @brief PKA Enable little endian + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_LittleEndian_Enable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_CTRL_0); + tmpVal=BL_CLR_REG_BIT(tmpVal,SEC_ENG_SE_PKA_0_ENDIAN); + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_CTRL_0, tmpVal); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(SEC_PKA_IRQn,SEC_PKA_IRQHandler); +#endif +} + +/****************************************************************************//** + * @brief PKA get status function + * + * @param status: Structure pointer of PKA status type + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_GetStatus(SEC_Eng_PKA_Status_Type *status) +{ + uint32_t tmpVal; + + tmpVal = BL_RD_REG(SEC_ENG_BASE,SEC_ENG_SE_PKA_0_CTRL_0); + *(uint16_t*)status = (uint16_t)BL_GET_REG_BITS_VAL(tmpVal,SEC_ENG_SE_PKA_0_STATUS); +} + +/****************************************************************************//** + * @brief PKA clear interrupt + * + * @param None + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_Clear_Int(void) +{ + uint32_t ctrl; + + ctrl = BL_RD_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_CTRL_0); + ctrl = BL_SET_REG_BIT(ctrl, SEC_ENG_SE_PKA_0_INT_CLR_1T); + + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_CTRL_0, ctrl); + + ctrl = BL_RD_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_CTRL_0); + ctrl = BL_CLR_REG_BIT(ctrl, SEC_ENG_SE_PKA_0_INT_CLR_1T); + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_CTRL_0, ctrl); +} + +/****************************************************************************//** + * @brief PKA get Register size according to Register type + * + * @param reg_type: PKA Register type + * + * @return Register size + * +*******************************************************************************/ +static uint16_t Sec_Eng_PKA_Get_Reg_Size(SEC_ENG_PKA_REG_SIZE_Type reg_type) +{ + switch(reg_type) + { + case SEC_ENG_PKA_REG_SIZE_8: + return 8; + case SEC_ENG_PKA_REG_SIZE_16: + return 16; + case SEC_ENG_PKA_REG_SIZE_32: + return 32; + case SEC_ENG_PKA_REG_SIZE_64: + return 64; + case SEC_ENG_PKA_REG_SIZE_96: + return 96; + case SEC_ENG_PKA_REG_SIZE_128: + return 128; + case SEC_ENG_PKA_REG_SIZE_192: + return 192; + case SEC_ENG_PKA_REG_SIZE_256: + return 256; + case SEC_ENG_PKA_REG_SIZE_384: + return 384; + case SEC_ENG_PKA_REG_SIZE_512: + return 512; + default: + return 0; + } +} + +/****************************************************************************//** + * @brief PKA set pre-load register configuration + * + * @param size: Data size in word to write + * @param regIndex: Register index + * @param regType: Register type + * @param op: PKA operation + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +static void Sec_Eng_PKA_Write_Pld_Cfg(uint16_t size, uint8_t regIndex, SEC_ENG_PKA_REG_SIZE_Type regType, SEC_ENG_PKA_OP_Type op, uint8_t lastOp) +{ + struct pka0_pld_cfg cfg; + + cfg.value.BF.size = size; + cfg.value.BF.d_reg_index = regIndex; + cfg.value.BF.d_reg_type = regType; + cfg.value.BF.op = op; + cfg.value.BF.last_op = lastOp; + + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, cfg.value.WORD); +} + +/****************************************************************************//** + * @brief PKA write common operation first configuration + * + * @param s0RegIndex: Register index + * @param s0RegType: Register type + * @param dRegIndex: Result Register index + * @param dRegType: Result Register type + * @param op: PKA operation + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +static void Sec_Eng_PKA_Write_Common_OP_First_Cfg(uint8_t s0RegIndex, uint8_t s0RegType, uint8_t dRegIndex, uint8_t dRegType, + uint8_t op, uint8_t lastOp) +{ + struct pka0_common_op_first_cfg cfg; + + cfg.value.BF.s0_reg_idx = s0RegIndex; + cfg.value.BF.s0_reg_type = s0RegType; + if(op != SEC_ENG_PKA_OP_LCMP) + { + cfg.value.BF.d_reg_idx = dRegIndex; + cfg.value.BF.d_reg_type = dRegType; + } + cfg.value.BF.op = op; + cfg.value.BF.last_op = lastOp; + + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, cfg.value.WORD); +} + +/****************************************************************************//** + * @brief PKA write common operation second configuration1 + * + * @param s1RegIndex: Register index + * @param s1RegType: Register type + * + * @return None + * +*******************************************************************************/ +static void Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S1(uint8_t s1RegIndex, uint8_t s1RegType) +{ + struct pka0_common_op_snd_cfg_S1_only cfg; + + cfg.value.BF.s1_reg_idx = s1RegIndex; + cfg.value.BF.s1_reg_type = s1RegType; + + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, cfg.value.WORD); +} + +/****************************************************************************//** + * @brief PKA write common operation second configuration2 + * + * @param s2RegIndex: Register index + * @param s2RegType: Register type + * + * @return None + * +*******************************************************************************/ +static void Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S2(uint8_t s2RegIndex, uint8_t s2RegType) +{ + struct pka0_common_op_snd_cfg_S2_only cfg; + + cfg.value.BF.s2_reg_idx = s2RegIndex; + cfg.value.BF.s2_reg_type = s2RegType; + + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, cfg.value.WORD); +} + +/****************************************************************************//** + * @brief PKA write common operation second configuration1 and configuration 2 + * + * @param s1RegIndex: Configuration 1 Register index + * @param s1RegType: Configuration 1 Register type + * @param s2RegIndex: Configuration 2 Register index + * @param s2RegType: Configuration 3 Register type + * + * @return None + * +*******************************************************************************/ +static void Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S1_S2(uint8_t s1RegIndex, uint8_t s1RegType, uint8_t s2RegIndex, uint8_t s2RegType) +{ + struct pka0_common_op_snd_cfg_S1_S2 cfg; + + cfg.value.BF.s1_reg_idx = s1RegIndex; + cfg.value.BF.s1_reg_type = s1RegType; + cfg.value.BF.s2_reg_idx = s2RegIndex; + cfg.value.BF.s2_reg_type = s2RegType; + + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, cfg.value.WORD); +} + +/****************************************************************************//** + * @brief PKA wait for complete interrupt + * + * @param None + * + * @return SUCCESS + * +*******************************************************************************/ +static BL_Err_Type Sec_Eng_PKA_Wait_ISR(void) +{ + uint32_t pka0_ctrl; + uint32_t timeoutCnt = SEC_ENG_PKA_INT_TIMEOUT_COUNT; + + do{ + pka0_ctrl = BL_RD_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_CTRL_0); + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + }while(!BL_GET_REG_BITS_VAL(pka0_ctrl, SEC_ENG_SE_PKA_0_INT)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief PKA read block data from register + * + * @param dest: Pointer to buffer address + * @param src: Pointer to register address + * @param len: Data len in word + * + * @return None + * +*******************************************************************************/ +#ifdef ARCH_ARM +#ifndef __GNUC__ +__ASM void Sec_Eng_PKA_Read_Block(uint32_t *dest,const uint32_t *src,uint32_t len) +{ + PUSH {R3-R6,LR} +Start0 + CMP R2,#4 + BLT Finish0 + LDR R3,[R1] + LDR R4,[R1] + LDR R5,[R1] + LDR R6,[R1] + STMIA R0!,{R3-R6} + SUBS R2,R2,#4 + B Start0 +Finish0 + POP {R3-R6,PC} +} +#else +void Sec_Eng_PKA_Read_Block(uint32_t *dest,const uint32_t *src,uint32_t len) +{ +__asm__ __volatile__("push {r3-r6,lr}\n\t" +"Start0 :" +"cmp r2,#4\n\t" +"blt Finish0\n\t" +"ldr r3,[r1]\n\t" +"ldr r4,[r1]\n\t" +"ldr r5,[r1]\n\t" +"ldr r6,[r1]\n\t" +"stmia r0!,{r3-r6}\n\t" +"sub r2,r2,#4\n\t" +"b Start0\n\t" +"Finish0 :" +"pop {r3-r6,pc}\n\t" +); +} +#endif +#endif +#ifdef ARCH_RISCV +void Sec_Eng_PKA_Read_Block(uint32_t *dest,const uint32_t *src,uint32_t len) +{ + uint32_t wrLen=len-len%4; + uint32_t i; + + for(i=0;iregLen/4){ + size=regLen/4; + } + Sec_Eng_PKA_Write_Block((uint32_t*)(SEC_ENG_BASE+SEC_ENG_SE_PKA_0_RW_OFFSET),data,size); + index=size-(size%4); + while(index < size) + { + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, data[index]); + index++; + } +} + +/****************************************************************************//** + * @brief PKA read data from register + * + * @param regType: Register type + * @param regIdx: Register index + * @param result: Data buffer + * @param retSize: Data length in word + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_Read_Data(SEC_ENG_PKA_REG_SIZE_Type regType, uint8_t regIdx, uint32_t *result, uint8_t retSize) +{ + uint16_t regSize; + uint32_t dummyData = 0; + + regSize = Sec_Eng_PKA_Get_Reg_Size(regType); + if(retSize > regSize/4){ + result = NULL; + return; + } + + Sec_Eng_PKA_Write_Pld_Cfg(retSize, regIdx, regType, SEC_ENG_PKA_OP_CFLIR_BUFFER,1); + + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, dummyData); + + Sec_Eng_PKA_Get_Result(result, retSize,regSize); +} + +/****************************************************************************//** + * @brief PKA clear register + * + * @param dRegType: Register type + * @param dRegIdx: Register index + * @param size: Data length in word + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_CREG(SEC_ENG_PKA_REG_SIZE_Type dRegType, uint8_t dRegIdx, uint8_t size,uint8_t lastOp) +{ + uint32_t dummyData = 0; + + Sec_Eng_PKA_Write_Pld_Cfg(size, dRegIdx, dRegType, SEC_ENG_PKA_OP_CLIR, lastOp); + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, dummyData); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA load data to register + * + * @param regType: regType: Register type + * @param regIndex: regIndex: Register index + * @param data: data: Data buffer + * @param lastOp: size: Data length in word + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_Write_Immediate( SEC_ENG_PKA_REG_SIZE_Type regType,uint8_t regIndex,uint32_t data,uint8_t lastOp) +{ + struct pka0_pldi_cfg cfg; + + cfg.value.BF.rsvd=0; + cfg.value.BF.d_reg_index = regIndex; + cfg.value.BF.d_reg_type = regType; + cfg.value.BF.op = SEC_ENG_PKA_OP_SLIR; + cfg.value.BF.last_op = lastOp; + + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, cfg.value.WORD); + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, data); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA negative source data:D = (1 << SIZE{S0})-S0 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source Register type + * @param s0RegIdx: Source Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_NREG(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx,uint8_t lastOp) +{ + uint32_t dummyData = 0; + + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_NLIR, lastOp); + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, dummyData); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA move data:D = S0 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source Register type + * @param s0RegIdx: Source Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_Move_Data(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx,uint8_t lastOp) +{ + uint32_t dummyData = 0; + + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_MOVDAT, lastOp); + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, dummyData); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA resize data:D = S0, D.Size = S0.Size + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source Register type + * @param s0RegIdx: Source Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_RESIZE(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx,uint8_t lastOp) +{ + uint32_t dummyData = 0; + + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_RESIZE, lastOp); + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, dummyData); + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA mod add:D = (S0 + S1) mod S2 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param s1RegType: Source 1 Register type + * @param s1RegIdx: Source 1 Register index + * @param s2RegType: Source 2 Register type + * @param s2RegIdx: Source 2 Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_MADD(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint8_t s1RegType, uint8_t s1RegIdx, uint8_t s2RegType, uint8_t s2RegIdx,uint8_t lastOp) +{ + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_MADD, lastOp); + Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S1_S2(s1RegIdx, s1RegType, s2RegIdx, s2RegType); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA mod sub:D = (S0 - S1) mod S2 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param s1RegType: Source 1 Register type + * @param s1RegIdx: Source 1 Register index + * @param s2RegType: Source 2 Register type + * @param s2RegIdx: Source 2 Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_MSUB(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint8_t s1RegType, uint8_t s1RegIdx, uint8_t s2RegType, uint8_t s2RegIdx,uint8_t lastOp) +{ + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_MSUB, lastOp); + Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S1_S2(s1RegIdx, s1RegType, s2RegIdx, s2RegType); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA mod :D = S0 mod S2 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param s2RegType: Source 2 Register type + * @param s2RegIdx: Source 2 Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_MREM(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint8_t s2RegType, uint8_t s2RegIdx,uint8_t lastOp) +{ + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_MREM, lastOp); + Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S2(s2RegIdx, s2RegType); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA mod mul:D = (S0 * S1) mod S2 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param s1RegType: Source 1 Register type + * @param s1RegIdx: Source 1 Register index + * @param s2RegType: Source 2 Register type + * @param s2RegIdx: Source 2 Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_MMUL(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint8_t s1RegType, uint8_t s1RegIdx, uint8_t s2RegType, uint8_t s2RegIdx,uint8_t lastOp) +{ + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_MMUL, lastOp); + Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S1_S2(s1RegIdx, s1RegType, s2RegIdx, s2RegType); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA mod sqr:D = (S0 ^ 2) mod S2 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param s2RegType: Source 2 Register type + * @param s2RegIdx: Source 2 Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_MSQR(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint8_t s2RegType, uint8_t s2RegIdx,uint8_t lastOp) +{ + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_MSQR, lastOp); + Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S2(s2RegIdx, s2RegType); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA mod exp:D = (S0 ^ S1) mod S2 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param s1RegType: Source 1 Register type + * @param s1RegIdx: Source 1 Register index + * @param s2RegType: Source 2 Register type + * @param s2RegIdx: Source 2 Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_MEXP(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint8_t s1RegType, uint8_t s1RegIdx, uint8_t s2RegType, uint8_t s2RegIdx,uint8_t lastOp) +{ + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_MEXP, lastOp); + Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S1_S2(s1RegIdx, s1RegType, s2RegIdx, s2RegType); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA mod exp:D = (S0 ^ (S2-2) ) mod S2 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param s2RegType: Source 2 Register type + * @param s2RegIdx: Source 2 Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_MINV(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint8_t s2RegType, uint8_t s2RegIdx,uint8_t lastOp) +{ + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_MINV, lastOp); + Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S2(s2RegIdx, s2RegType); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA Report COUT to 1 when S0 < S1 + * + * @param cout: Compare result + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param s1RegType: Source 1 Register type + * @param s1RegIdx: Source 1 Register index + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_LCMP(uint8_t *cout, uint8_t s0RegType, uint8_t s0RegIdx, uint8_t s1RegType, uint8_t s1RegIdx) +{ + uint32_t pka0_ctrl = 0x00; + + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, 0, 0, SEC_ENG_PKA_OP_LCMP, 1); + Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S1(s1RegIdx, s1RegType); + + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + pka0_ctrl = BL_RD_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_CTRL_0); + + *cout = (pka0_ctrl&SEC_ENG_PKA_STATUS_LAST_OPC_MASK)>>SEC_ENG_PKA_STATUS_LAST_OPC_OFFSET; +} + +/****************************************************************************//** + * @brief PKA add:D = S0 + S1 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param s1RegType: Source 1 Register type + * @param s1RegIdx: Source 1 Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_LADD(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint8_t s1RegType, uint8_t s1RegIdx,uint8_t lastOp) +{ + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_LADD, lastOp); + Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S1(s1RegIdx, s1RegType); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA sub:D = S0 - S1 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param s1RegType: Source 1 Register type + * @param s1RegIdx: Source 1 Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_LSUB(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint8_t s1RegType, uint8_t s1RegIdx,uint8_t lastOp) +{ + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_LSUB, lastOp); + Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S1(s1RegIdx, s1RegType); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA mul:D = S0 * S1 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param s1RegType: Source 1 Register type + * @param s1RegIdx: Source 1 Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_LMUL(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint8_t s1RegType, uint8_t s1RegIdx,uint8_t lastOp) +{ + + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_LMUL, lastOp); + Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S1(s1RegIdx, s1RegType); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA sqr:D = S0^2 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_LSQR(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx,uint8_t lastOp) +{ + uint32_t dummyData = 0; + + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_LSQR, lastOp); + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, dummyData); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA div:D = S0 / S2 + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param s2RegType: Source 2 Register type + * @param s2RegIdx: Source 2 Register index + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_LDIV(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint8_t s2RegType, uint8_t s2RegIdx,uint8_t lastOp) +{ + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_LDIV, lastOp); + Sec_Eng_PKA_Write_Common_OP_Snd_Cfg_S2(s2RegIdx, s2RegType); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA shift:D = S0 << BIT SHIFT + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param bit_shift: Bits to shift + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_LMUL2N(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint16_t bit_shift,uint8_t lastOp) +{ + struct pka0_bit_shift_op_cfg cfg; + + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_LMUL2N, 0); + + cfg.value.BF.bit_shift = bit_shift; + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, cfg.value.WORD); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA shift:D = S0 >> BIT SHIFT + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param bit_shift: Bits to shift + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_LDIV2N(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint16_t bit_shift,uint8_t lastOp) +{ + struct pka0_bit_shift_op_cfg cfg; + + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_LDIV2N, 0); + + cfg.value.BF.bit_shift = bit_shift; + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, cfg.value.WORD); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + +/****************************************************************************//** + * @brief PKA mod 2N:D = S0 % ((1 << BIT SHIFT)-1) + * + * @param dRegType: Destination Register type + * @param dRegIdx: Destination Register index + * @param s0RegType: Source 0 Register type + * @param s0RegIdx: Source 0 Register index + * @param bit_shift: Bits to shift + * @param lastOp: Last operation + * + * @return None + * +*******************************************************************************/ +void Sec_Eng_PKA_LMOD2N(uint8_t dRegType, uint8_t dRegIdx, uint8_t s0RegType, uint8_t s0RegIdx, + uint16_t bit_shift,uint8_t lastOp) +{ + struct pka0_bit_shift_op_cfg cfg; + + Sec_Eng_PKA_Write_Common_OP_First_Cfg(s0RegIdx, s0RegType, dRegIdx, dRegType, SEC_ENG_PKA_OP_MOD2N, lastOp); + + cfg.value.BF.bit_shift = bit_shift; + BL_WR_REG(SEC_ENG_BASE, SEC_ENG_SE_PKA_0_RW, cfg.value.WORD); + + if(lastOp){ + Sec_Eng_PKA_Wait_ISR(); + Sec_Eng_PKA_Clear_Int(); + } +} + + +/****************************************************************************//** + * @brief PKA GF to Mont filed 2N:d = (a<
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_glb.h" +#include "bl702_sf_cfg.h" +#include "softcrc.h" +#include "bl702_xip_sflash.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SF_CFG + * @{ + */ + +/** @defgroup SF_CFG_Private_Macros + * @{ + */ +#define BFLB_FLASH_CFG_MAGIC "FCFG" + +/*@} end of group SF_CFG_Private_Macros */ + +/** @defgroup SF_CFG_Private_Types + * @{ + */ +#ifndef BFLB_USE_ROM_DRIVER +typedef struct { + uint32_t jedecID; + char *name; + const SPI_Flash_Cfg_Type *cfg; +}Flash_Info_t; +#endif + + +/*@} end of group SF_CFG_Private_Types */ + +/** @defgroup SF_CFG_Private_Variables + * @{ + */ +#ifndef BFLB_USE_ROM_DRIVER +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Winb_80DV={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0xef, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=1, + .qeBit=0x01, + .qeWriteRegLen=0x02, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x01, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=0, + .cReadMode=0xFF, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3d, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=3, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Winb_16DV={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0xef, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=1, + .qeBit=0x01, + .qeWriteRegLen=0x02, /*Q08BV,Q16DV: 0x02.Q32FW,Q32FV: 0x01 */ + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x01, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0x20, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3d, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=3, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Winb_80EW_16FW_32JW_32FW_32FV={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0xef, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=1, + .qeBit=0x01, + .qeWriteRegLen=0x01, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x31, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0x20, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=400, + .timeE32k=1600, + .timeE64k=2000, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=3, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Issi={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0x9d, + + .deBurstWrapCmd=0xC0, + .deBurstWrapCmdDmyClk=0x00, + .deBurstWrapDataMode=SF_CTRL_DATA_1_LINE, + .deBurstWrapData=0x00, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=0, + .qeBit=0x06, + .qeWriteRegLen=0x01, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x31, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0xA0, + + .burstWrapCmd=0xC0, + .burstWrapCmdDmyClk=0x00, + .burstWrapDataMode=SF_CTRL_DATA_1_LINE, + .burstWrapData=0x06, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=5, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Gd_Md_40D={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0x51, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=1, + .qeBit=0x01, + .qeWriteRegLen=0x02, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x01, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=0, + .cReadMode=0xA0, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_DO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=20, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Gd_LQ08C_LE16C_LQ32D_WQ32E={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0xc8, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=1, + .qeBit=0x01, + .qeWriteRegLen=0x02, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x01, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0x20, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=20, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Gd_Q80E_Q16E={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0xc8, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=1, + .qeBit=0x01, + .qeWriteRegLen=0x02, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x01, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0xA0, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=20, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Gd_WQ80E_WQ16E={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0xc8, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=1, + .qeBit=0x01, + .qeWriteRegLen=0x02, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x01, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=32/8, + .cReadSupport=1, + .cReadMode=0xA0, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=8/8, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=20, + .qeData=0x12, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Gd_Q32C={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0xc8, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=1, + .qeBit=0x01, + .qeWriteRegLen=0x01, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x31, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0x20, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=20, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Mxic={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0xC2, + + .deBurstWrapCmd=0xC0, + .deBurstWrapCmdDmyClk=0x00, + .deBurstWrapDataMode=SF_CTRL_DATA_1_LINE, + .deBurstWrapData=0x10, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=0, + .qeBit=0x06, + .qeWriteRegLen=0x02, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x01, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0xA5, + + .burstWrapCmd=0xC0, + .burstWrapCmdDmyClk=0x00, + .burstWrapDataMode=SF_CTRL_DATA_1_LINE, + .burstWrapData=0x02, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x38, + .qppAddrMode=SF_CTRL_ADDR_4_LINES, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=45, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Mxic_1635F={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0xC2, + + .deBurstWrapCmd=0xC0, + .deBurstWrapCmdDmyClk=0x00, + .deBurstWrapDataMode=SF_CTRL_DATA_1_LINE, + .deBurstWrapData=0x10, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=0, + .qeBit=0x06, + .qeWriteRegLen=0x01, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x01, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0xA5, + + .burstWrapCmd=0xC0, + .burstWrapCmdDmyClk=0x00, + .burstWrapDataMode=SF_CTRL_DATA_1_LINE, + .burstWrapData=0x02, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x38, + .qppAddrMode=SF_CTRL_ADDR_4_LINES, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=45, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Xtx40={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0x0B, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=0x01, + .qeBit=0x01, + .qeWriteRegLen=0x02, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x01, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0x20, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_DIO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=6000, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=20, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Xtx={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0x0B, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=0x01, + .qeBit=0x01, + .qeWriteRegLen=0x02, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x01, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0x20, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=6000, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=20, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Puya_Q80L_Q80H_Q16H={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0x85, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=0x01, + .qeBit=0x01, + .qeWriteRegLen=0x02, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x01, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0x20, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3d, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=8, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Puya_Q32H={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0x85, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=0x01, + .qeBit=0x01, + .qeWriteRegLen=0x01, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x31, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0x20, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=8, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Boya40={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0x68, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=1, + .qeBit=0x01, + .qeWriteRegLen=0x02, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x01, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=0, + .cReadMode=0xA0, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_DO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=20, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Boya={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0x68, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=0x01, + .qeBit=0x01, + .qeWriteRegLen=0x01, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x31, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0x20, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=20, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_FT_VQ80={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0xef, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=1, + .qeBit=0x01, + .qeWriteRegLen=0x01, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x31, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=1, + .cReadMode=0x20, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_QIO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=8, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION Flash_Info_t flashInfos[]={ + { + .jedecID=0x1440ef, + .name="Winb_80DV_08_33", + .cfg=&flashCfg_Winb_80DV, + }, + { + .jedecID=0x1540ef, + .name="Winb_16DV_16_33", + .cfg=&flashCfg_Winb_16DV, + }, + { + .jedecID=0x1640ef, + .name="Winb_32FV_32_33", + .cfg=&flashCfg_Winb_80EW_16FW_32JW_32FW_32FV, + }, + { + .jedecID=0x1460ef, + .name="Winb_80EW_08_18", + .cfg=&flashCfg_Winb_80EW_16FW_32JW_32FW_32FV, + }, + { + .jedecID=0x1560ef, + .name="Winb_16FW_16_18", + .cfg=&flashCfg_Winb_80EW_16FW_32JW_32FW_32FV, + }, + { + .jedecID=0x1660ef, + .name="Winb_32FW_32_18", + .cfg=&flashCfg_Winb_80EW_16FW_32JW_32FW_32FV, + }, + { + .jedecID=0x1860ef, + .name="Winb_128FW_128_18", + .cfg=&flashCfg_Winb_80EW_16FW_32JW_32FW_32FV, + }, + { + .jedecID=0x1680ef, + .name="Winb_32JW_32_18", + .cfg=&flashCfg_Winb_80EW_16FW_32JW_32FW_32FV, + }, + { + .jedecID=0x13605e, + .name="Zbit_04_33", + .cfg=&flashCfg_Winb_80EW_16FW_32JW_32FW_32FV, + }, + { + .jedecID=0x14605e, + .name="Zbit_08_33", + .cfg=&flashCfg_Winb_80EW_16FW_32JW_32FW_32FV, + }, + { + .jedecID=0x14609d, + .name="ISSI_08_33", + .cfg=&flashCfg_Issi, + }, + { + .jedecID=0x15609d, + .name="ISSI_16_33", + .cfg=&flashCfg_Issi, + }, + { + .jedecID=0x16609d, + .name="ISSI_32_33", + .cfg=&flashCfg_Issi, + }, + { + .jedecID=0x14709d, + .name="ISSI_08_18", + .cfg=&flashCfg_Issi, + }, + { + .jedecID=0x15709d, + .name="ISSI_16_18", + .cfg=&flashCfg_Issi, + }, + { + .jedecID=0x16709d, + .name="ISSI_32_18", + .cfg=&flashCfg_Issi, + }, + { + .jedecID=0x134051, + .name="GD_MD04D_04_33", + .cfg=&flashCfg_Gd_Md_40D, + }, + { + .jedecID=0x1440C8, + .name="GD_Q08E_08_33", + .cfg=&flashCfg_Gd_Q80E_Q16E, + }, + { + .jedecID=0x1540C8, + .name="GD_Q16E_16_33", + .cfg=&flashCfg_Gd_Q80E_Q16E, + }, + { + .jedecID=0x1640C8, + .name="GD_Q32C_32_33", + .cfg=&flashCfg_Gd_Q32C, + }, + { + .jedecID=0x1460C8, + .name="GD_LQ08C_08_18", + .cfg=&flashCfg_Gd_LQ08C_LE16C_LQ32D_WQ32E, + }, + { + .jedecID=0x1560C8, + .name="GD_LE16C_16_18", + .cfg=&flashCfg_Gd_LQ08C_LE16C_LQ32D_WQ32E, + }, + { + .jedecID=0x1660C8, + .name="GD_LQ32D_32_18", + .cfg=&flashCfg_Gd_LQ08C_LE16C_LQ32D_WQ32E, + }, + { + .jedecID=0x1465C8, + .name="GD_WQ80E_80_33", + .cfg=&flashCfg_Gd_WQ80E_WQ16E, + }, + { + .jedecID=0x1565C8, + .name="GD_WQ16E_16_33", + .cfg=&flashCfg_Gd_WQ80E_WQ16E, + }, + { + .jedecID=0x1665C8, + .name="GD_WQ32E_32_33", + .cfg=&flashCfg_Gd_LQ08C_LE16C_LQ32D_WQ32E, + }, + { + .jedecID=0x3425C2, + .name="MX_25V80_08_18", + .cfg=&flashCfg_Mxic, + }, + { + .jedecID=0x3525C2, + .name="MX_25U16_35_18", + .cfg=&flashCfg_Mxic_1635F, + }, + { + .jedecID=0x3625C2, + .name="MX_25V32_32_18", + .cfg=&flashCfg_Mxic, + }, + { + .jedecID=0x13400B, + .name="XT_25F04D_04_33", + .cfg=&flashCfg_Xtx40, + }, + { + .jedecID=0x15400B, + .name="XT_25F16B_16_33", + .cfg=&flashCfg_Xtx, + }, + { + .jedecID=0x16400B, + .name="XT_25F32B_32_33", + .cfg=&flashCfg_Xtx, + }, + { + .jedecID=0x14600B, + .name="XT_25Q80B_08_18", + .cfg=&flashCfg_Xtx, + }, + { + .jedecID=0x16600B, + .name="XT_25Q32B_32_18", + .cfg=&flashCfg_Xtx, + }, + { + .jedecID=0x146085, + .name="Puya_Q80L/H_08_18/33", + .cfg=&flashCfg_Puya_Q80L_Q80H_Q16H, + }, + { + .jedecID=0x156085, + .name="Puya_Q16H_16_33", + .cfg=&flashCfg_Puya_Q80L_Q80H_Q16H, + }, + { + .jedecID=0x166085, + .name="Puya_Q32H_32_33", + .cfg=&flashCfg_Puya_Q32H, + }, + { + .jedecID=0x134068, + .name="Boya_Q04B_04_33", + .cfg=&flashCfg_Boya40, + }, + { + .jedecID=0x144068, + .name="Boya_Q08B_08_33", + .cfg=&flashCfg_Boya, + }, + { + .jedecID=0x154068, + .name="Boya_Q16B_16_33", + .cfg=&flashCfg_Boya, + }, + { + .jedecID=0x164068, + .name="Boya_Q32B_32_33", + .cfg=&flashCfg_Boya, + }, + { + .jedecID=0x174068, + .name="Boya_Q64A_64_33", + .cfg=&flashCfg_Boya, + }, + { + .jedecID=0x184068, + .name="Boya_Q128A_128_33", + .cfg=&flashCfg_Boya, + }, + { + .jedecID=0x14605E, + .name="FT_VQ80", + .cfg=&flashCfg_FT_VQ80, + } +}; +#endif + +/*@} end of group SF_CFG_Private_Variables */ + +/** @defgroup SF_CFG_Global_Variables + * @{ + */ + +/*@} end of group SF_CFG_Global_Variables */ + +/** @defgroup SF_CFG_Private_Fun_Declaration + * @{ + */ + +/*@} end of group SF_CFG_Private_Fun_Declaration */ + +/** @defgroup SF_CFG_Private_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Init external flash GPIO according to flash GPIO config + * + * @param extFlashPin: Flash GPIO config + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +/* static */ void ATTR_TCM_SECTION SF_Cfg_Init_Ext_Flash_Gpio(uint8_t extFlashPin) +{ + GLB_GPIO_Cfg_Type cfg; + uint8_t gpiopins[6]; + uint8_t i=0; + + cfg.gpioMode=GPIO_MODE_AF; + cfg.pullType=GPIO_PULL_UP; + cfg.drive=1; + cfg.smtCtrl=1; + cfg.gpioFun=GPIO_FUN_FLASH_PSRAM; + + if(extFlashPin==0){ + gpiopins[0]=BFLB_EXTFLASH_CLK0_GPIO; + gpiopins[1]=BFLB_EXTFLASH_CS0_GPIO; + gpiopins[2]=BFLB_EXTFLASH_DATA00_GPIO; + gpiopins[3]=BFLB_EXTFLASH_DATA10_GPIO; + gpiopins[4]=BFLB_EXTFLASH_DATA20_GPIO; + gpiopins[5]=BFLB_EXTFLASH_DATA30_GPIO; + }else if(extFlashPin==1){ + gpiopins[0]=BFLB_EXTFLASH_CLK1_GPIO; + gpiopins[1]=BFLB_EXTFLASH_CS1_GPIO; + gpiopins[2]=BFLB_EXTFLASH_DATA01_GPIO; + gpiopins[3]=BFLB_EXTFLASH_DATA11_GPIO; + gpiopins[4]=BFLB_EXTFLASH_DATA21_GPIO; + gpiopins[5]=BFLB_EXTFLASH_DATA31_GPIO; + }else{ + gpiopins[0]=BFLB_EXTFLASH_CLK2_GPIO; + gpiopins[1]=BFLB_EXTFLASH_CS2_GPIO; + gpiopins[2]=BFLB_EXTFLASH_DATA02_GPIO; + gpiopins[3]=BFLB_EXTFLASH_DATA12_GPIO; + gpiopins[4]=BFLB_EXTFLASH_DATA22_GPIO; + gpiopins[5]=BFLB_EXTFLASH_DATA32_GPIO; + } + + for(i=0;i>2)&0x03; + swapCfg=flashPinCfg&0x03; + + if(restoreDefault){ + /* Set Default first */ + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPIO_USE_PSRAM__IO); + if(BL_GET_REG_BITS_VAL(tmpVal,GLB_CFG_GPIO_USE_PSRAM_IO)==0x00){ + SF_Cfg_Init_Ext_Flash_Gpio(1); + } + + tmpVal=BL_RD_REG(GLB_BASE,GLB_PARM); + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_CFG_SFLASH2_SWAP_CS_IO2); + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_CFG_SFLASH2_SWAP_IO0_IO3); + BL_WR_REG(GLB_BASE,GLB_PARM,tmpVal); + + SF_Ctrl_Select_Pad(SF_CTRL_PAD_SEL_SF2); + + /* Default is set, so return */ + if(flashCfg==BFLB_FLASH_CFG_SF2_EXT_23_28&&swapCfg==BFLB_SF2_SWAP_NONE){ + return; + } + } + + if(flashCfg==BFLB_FLASH_CFG_SF1_EXT_17_22){ + SF_Cfg_Init_Ext_Flash_Gpio(0); + SF_Ctrl_Select_Pad(SF_CTRL_PAD_SEL_SF1); + }else{ + tmpVal=BL_RD_REG(GLB_BASE,GLB_GPIO_USE_PSRAM__IO); + if(BL_GET_REG_BITS_VAL(tmpVal,GLB_CFG_GPIO_USE_PSRAM_IO)==0x00){ + SF_Cfg_Init_Ext_Flash_Gpio(1); + } + + tmpVal=BL_RD_REG(GLB_BASE,GLB_PARM); + if(swapCfg==BFLB_SF2_SWAP_NONE){ + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_CFG_SFLASH2_SWAP_CS_IO2); + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_CFG_SFLASH2_SWAP_IO0_IO3); + }else if(swapCfg==BFLB_SF2_SWAP_CS_IO2){ + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_CFG_SFLASH2_SWAP_CS_IO2); + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_CFG_SFLASH2_SWAP_IO0_IO3); + }else if(swapCfg==BFLB_SF2_SWAP_IO0_IO3){ + tmpVal=BL_CLR_REG_BIT(tmpVal,GLB_CFG_SFLASH2_SWAP_CS_IO2); + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_CFG_SFLASH2_SWAP_IO0_IO3); + }else{ + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_CFG_SFLASH2_SWAP_CS_IO2); + tmpVal=BL_SET_REG_BIT(tmpVal,GLB_CFG_SFLASH2_SWAP_IO0_IO3); + } + BL_WR_REG(GLB_BASE,GLB_PARM,tmpVal); + + SF_Ctrl_Select_Pad(SF_CTRL_PAD_SEL_SF2); + } +} + +/****************************************************************************//** + * @brief Identify one flash + * + * @param callFromFlash: code run at flash or ram + * @param autoScan: Auto scan all GPIO pin + * @param flashPinCfg: Specify flash GPIO config, not auto scan + * @param restoreDefault: Wether restore default flash GPIO config + * @param pFlashCfg: Flash config pointer + * + * @return Flash ID + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +uint32_t ATTR_TCM_SECTION SF_Cfg_Flash_Identify(uint8_t callFromFlash, + uint32_t autoScan,uint32_t flashPinCfg,uint8_t restoreDefault,SPI_Flash_Cfg_Type * pFlashCfg) +{ + uint32_t jdecId=0; + uint32_t i=0; + uint32_t offset; + BL_Err_Type stat; + + BL702_MemCpy_Fast(pFlashCfg,&flashCfg_Gd_Q80E_Q16E,sizeof(SPI_Flash_Cfg_Type)); + if(callFromFlash == 1){ + stat=XIP_SFlash_State_Save(pFlashCfg,&offset); + if(stat!=SUCCESS){ + SF_Ctrl_Set_Owner(SF_CTRL_OWNER_IAHB); + return 0; + } + } + + if(autoScan){ + flashPinCfg=0; + do{ + if(flashPinCfg>0x0f){ + jdecId=0; + break; + } + SF_Cfg_Init_Flash_Gpio(flashPinCfg,restoreDefault); + SFlash_Releae_Powerdown(pFlashCfg); + SFlash_Reset_Continue_Read(pFlashCfg); + SFlash_DisableBurstWrap(pFlashCfg); + jdecId=0; + SFlash_GetJedecId(pFlashCfg,(uint8_t *)&jdecId); + SFlash_DisableBurstWrap(pFlashCfg); + jdecId=jdecId&0xffffff; + flashPinCfg++; + }while((jdecId&0x00ffff)==0||(jdecId&0xffff00)==0||(jdecId&0x00ffff)==0xffff||(jdecId&0xffff00)==0xffff00); + }else{ + /* select media gpio */ + SF_Cfg_Init_Flash_Gpio(flashPinCfg,restoreDefault); + SFlash_Releae_Powerdown(pFlashCfg); + SFlash_Reset_Continue_Read(pFlashCfg); + SFlash_DisableBurstWrap(pFlashCfg); + SFlash_GetJedecId(pFlashCfg,(uint8_t *)&jdecId); + SFlash_DisableBurstWrap(pFlashCfg); + jdecId=jdecId&0xffffff; + } + + for(i=0;iioMode,offset); + } + return jdecId; + }else{ + if(callFromFlash == 1){ + XIP_SFlash_State_Restore(pFlashCfg,pFlashCfg->ioMode,offset); + } + return (jdecId|BFLB_FLASH_ID_VALID_FLAG); + } +} +#endif + +/*@} end of group SF_CFG_Public_Functions */ + +/*@} end of group SF_CFG */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_sf_cfg_ext.c b/drivers/bl702_driver/std_drv/src/bl702_sf_cfg_ext.c new file mode 100644 index 00000000..91e686dd --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_sf_cfg_ext.c @@ -0,0 +1,423 @@ +/** + ****************************************************************************** + * @file bl702_sf_cfg_ext.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_glb.h" +#include "bl702_sf_cfg.h" +#include "bl702_sf_cfg_ext.h" +#include "bl702_xip_sflash.h" +#include "bl702_romdriver.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SF_CFG_EXT + * @{ + */ + +/** @defgroup SF_CFG_EXT_Private_Macros + * @{ + */ +#define BFLB_FLASH_CFG_MAGIC "FCFG" + +/*@} end of group SF_CFG_EXT_Private_Macros */ + +/** @defgroup SF_CFG_EXT_Private_Types + * @{ + */ +typedef struct { + uint32_t jedecID; + char *name; + const SPI_Flash_Cfg_Type *cfg; +}Flash_Info_t; + +/*@} end of group SF_CFG_EXT_Private_Types */ + +/** @defgroup SF_CFG_EXT_Private_Variables + * @{ + */ +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_Gd_Md_40D={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0x51, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=1, + .qeBit=0x01, + .qeWriteRegLen=0x02, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x35, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x01, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=0, + .cReadMode=0xA0, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=SF_CTRL_DO_MODE, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=20, + .qeData=0, +}; + +static const ATTR_TCM_CONST_SECTION SPI_Flash_Cfg_Type flashCfg_MX_KH25={ + .resetCreadCmd=0xff, + .resetCreadCmdSize=3, + .mid=0xc2, + + .deBurstWrapCmd=0x77, + .deBurstWrapCmdDmyClk=0x3, + .deBurstWrapDataMode=SF_CTRL_DATA_4_LINES, + .deBurstWrapData=0xF0, + + /*reg*/ + .writeEnableCmd=0x06, + .wrEnableIndex=0x00, + .wrEnableBit=0x01, + .wrEnableReadRegLen=0x01, + + .qeIndex=1, + .qeBit=0x01, + .qeWriteRegLen=0x01, + .qeReadRegLen=0x1, + + .busyIndex=0, + .busyBit=0x00, + .busyReadRegLen=0x1, + .releasePowerDown=0xab, + + .readRegCmd[0]=0x05, + .readRegCmd[1]=0x00, + .writeRegCmd[0]=0x01, + .writeRegCmd[1]=0x00, + + .fastReadQioCmd=0xeb, + .frQioDmyClk=16/8, + .cReadSupport=0, + .cReadMode=0x20, + + .burstWrapCmd=0x77, + .burstWrapCmdDmyClk=0x3, + .burstWrapDataMode=SF_CTRL_DATA_4_LINES, + .burstWrapData=0x40, + /*erase*/ + .chipEraseCmd=0xc7, + .sectorEraseCmd=0x20, + .blk32EraseCmd=0x52, + .blk64EraseCmd=0xd8, + /*write*/ + .pageProgramCmd=0x02, + .qpageProgramCmd=0x32, + .qppAddrMode=SF_CTRL_ADDR_1_LINE, + + .ioMode=0x11, + .clkDelay=1, + .clkInvert=0x3f, + + .resetEnCmd=0x66, + .resetCmd=0x99, + .cRExit=0xff, + .wrEnableWriteRegLen=0x00, + + /*id*/ + .jedecIdCmd=0x9f, + .jedecIdCmdDmyClk=0, + .qpiJedecIdCmd=0x9f, + .qpiJedecIdCmdDmyClk=0x00, + .sectorSize=4, + .pageSize=256, + + /*read*/ + .fastReadCmd=0x0b, + .frDmyClk=8/8, + .qpiFastReadCmd =0x0b, + .qpiFrDmyClk=8/8, + .fastReadDoCmd=0x3b, + .frDoDmyClk=8/8, + .fastReadDioCmd=0xbb, + .frDioDmyClk=0, + .fastReadQoCmd=0x6b, + .frQoDmyClk=8/8, + + .qpiFastReadQioCmd=0xeb, + .qpiFrQioDmyClk=16/8, + .qpiPageProgramCmd=0x02, + .writeVregEnableCmd=0x50, + + /* qpi mode */ + .enterQpi=0x38, + .exitQpi=0xff, + + /*AC*/ + .timeEsector=300, + .timeE32k=1200, + .timeE64k=1200, + .timePagePgm=5, + .timeCe=20*1000, + .pdDelay=20, + .qeData=0, +}; + + +static const ATTR_TCM_CONST_SECTION Flash_Info_t flashInfos[]={ + { + .jedecID=0x134051, + .name="GD_MD04D_04_33", + .cfg=&flashCfg_Gd_Md_40D, + }, + { + .jedecID=0x1320c2, + .name="MX_KH40_04_33", + .cfg=&flashCfg_MX_KH25, + }, + { + .jedecID=0x1420c2, + .name="MX_KH80_08_33", + .cfg=&flashCfg_MX_KH25, + }, + { + .jedecID=0x1520c2, + .name="MX_KH16_16_33", + .cfg=&flashCfg_MX_KH25, + }, +}; + +/*@} end of group SF_CFG_EXT_Private_Variables */ + +/** @defgroup SF_CFG_EXT_Global_Variables + * @{ + */ + +/*@} end of group SF_CFG_EXT_Global_Variables */ + +/** @defgroup SF_CFG_EXT_Private_Fun_Declaration + * @{ + */ + +/*@} end of group SF_CFG_EXT_Private_Fun_Declaration */ + +/** @defgroup SF_CFG_EXT_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Init internal flash GPIO + * + * @param None + * + * @return None + * +*******************************************************************************/ +void ATTR_TCM_SECTION SF_Cfg_Init_Internal_Flash_Gpio(void) +{ + GLB_GPIO_Cfg_Type gpioCfg = { + .gpioPin = GLB_GPIO_PIN_0, + .gpioFun = GPIO_FUN_GPIO, + .gpioMode = GPIO_MODE_INPUT, + .pullType = GPIO_PULL_NONE, + .drive = 0, + .smtCtrl = 1, + }; + + /* Turn on Flash pad, GPIO23 - GPIO28 */ + for(uint32_t pin=23;pin<29;pin++){ + gpioCfg.gpioPin = pin; + if(pin==25){ + gpioCfg.pullType = GPIO_PULL_DOWN; + }else{ + gpioCfg.pullType = GPIO_PULL_NONE; + } + GLB_GPIO_Init(&gpioCfg); + } +} + +/****************************************************************************//** + * @brief Get flash config according to flash ID + * + * @param flashID: Flash ID + * @param pFlashCfg: Flash config pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +BL_Err_Type ATTR_TCM_SECTION SF_Cfg_Get_Flash_Cfg_Need_Lock_Ext(uint32_t flashID,SPI_Flash_Cfg_Type * pFlashCfg) +{ + uint32_t i; + uint8_t buf[sizeof(SPI_Flash_Cfg_Type)+8]; + uint32_t crc,*pCrc; + + if(flashID==0){ + XIP_SFlash_Read_Via_Cache_Need_Lock(8+BL702_FLASH_XIP_BASE,buf,sizeof(SPI_Flash_Cfg_Type)+8); + if(BL702_MemCmp(buf,BFLB_FLASH_CFG_MAGIC,4)==0){ + crc=BFLB_Soft_CRC32((uint8_t *)buf+4,sizeof(SPI_Flash_Cfg_Type)); + pCrc=(uint32_t *)(buf+4+sizeof(SPI_Flash_Cfg_Type)); + if(*pCrc==crc){ + BL702_MemCpy_Fast(pFlashCfg,(uint8_t *)buf+4,sizeof(SPI_Flash_Cfg_Type)); + return SUCCESS ; + } + } + }else{ + if(SF_Cfg_Get_Flash_Cfg_Need_Lock(flashID, pFlashCfg)){ + return SUCCESS; + } + for(i=0;i
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_sf_ctrl.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SF_CTRL + * @{ + */ + +/** @defgroup SF_CTRL_Private_Macros + * @{ + */ + +/*@} end of group SF_CTRL_Private_Macros */ + +/** @defgroup SF_CTRL_Private_Types + * @{ + */ + +/*@} end of group SF_CTRL_Private_Types */ + +/** @defgroup SF_CTRL_Private_Variables + * @{ + */ +#define SF_CTRL_BUSY_STATE_TIMEOUT (5*160*1000) +#define SF_Ctrl_Get_AES_Region(addr,r) (addr+SF_CTRL_AES_REGION_OFFSET+(r)*0x100) + +/*@} end of group SF_CTRL_Private_Variables */ + +/** @defgroup SF_CTRL_Global_Variables + * @{ + */ + +/*@} end of group SF_CTRL_Global_Variables */ + +/** @defgroup SF_CTRL_Private_Fun_Declaration + * @{ + */ + +/*@} end of group SF_CTRL_Private_Fun_Declaration */ + +/** @defgroup SF_CTRL_Private_Functions + * @{ + */ + +/*@} end of group SF_CTRL_Private_Functions */ + +/** @defgroup SF_CTRL_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Enable serail flash controller + * + * @param cfg: serial flash controller config + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_Enable(const SF_Ctrl_Cfg_Type *cfg) +{ + uint32_t tmpVal = 0; + uint32_t timeOut = 0; + + if(cfg==NULL){ + return; + } + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_OWNER_TYPE(cfg->owner)); + + timeOut = SF_CTRL_BUSY_STATE_TIMEOUT; + while(SET==SF_Ctrl_GetBusyState()){ + timeOut--; + if(timeOut == 0){ + return; + } + } + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_0); + + if(cfg->clkDelay>0){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_READ_DLY_EN); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_READ_DLY_N,cfg->clkDelay-1); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_IF_READ_DLY_EN); + } + + /* Serail out inverted, so sf ctrl send on negative edge */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_CLK_OUT_INV_SEL,cfg->clkInvert); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_CLK_SF_RX_INV_SEL,cfg->rxClkInvert); + + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_0,tmpVal); + + /* Set do di and oe delay */ + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IO_DLY_1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IO_0_DO_DLY_SEL,cfg->doDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IO_0_DI_DLY_SEL,cfg->diDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IO_0_OE_DLY_SEL,cfg->oeDelay); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IO_DLY_1,tmpVal); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IO_DLY_2); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IO_1_DO_DLY_SEL,cfg->doDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IO_1_DI_DLY_SEL,cfg->diDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IO_1_OE_DLY_SEL,cfg->oeDelay); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IO_DLY_2,tmpVal); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IO_DLY_3); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IO_2_DO_DLY_SEL,cfg->doDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IO_2_DI_DLY_SEL,cfg->diDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IO_2_OE_DLY_SEL,cfg->oeDelay); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IO_DLY_3,tmpVal); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IO_DLY_4); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IO_3_DO_DLY_SEL,cfg->doDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IO_3_DI_DLY_SEL,cfg->diDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IO_3_OE_DLY_SEL,cfg->oeDelay); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IO_DLY_4,tmpVal); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF2_IF_IO_DLY_1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF2_IO_0_DO_DLY_SEL,cfg->doDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF2_IO_0_DI_DLY_SEL,cfg->diDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF2_IO_0_OE_DLY_SEL,cfg->oeDelay); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF2_IF_IO_DLY_1,tmpVal); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF2_IF_IO_DLY_2); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF2_IO_1_DO_DLY_SEL,cfg->doDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF2_IO_1_DI_DLY_SEL,cfg->diDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF2_IO_1_OE_DLY_SEL,cfg->oeDelay); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF2_IF_IO_DLY_2,tmpVal); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF2_IF_IO_DLY_3); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF2_IO_2_DO_DLY_SEL,cfg->doDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF2_IO_2_DI_DLY_SEL,cfg->diDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF2_IO_2_OE_DLY_SEL,cfg->oeDelay); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF2_IF_IO_DLY_3,tmpVal); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF2_IF_IO_DLY_4); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF2_IO_3_DO_DLY_SEL,cfg->doDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF2_IO_3_DI_DLY_SEL,cfg->diDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF2_IO_3_OE_DLY_SEL,cfg->oeDelay); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF2_IF_IO_DLY_4,tmpVal); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF3_IF_IO_DLY_1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF3_IO_0_DO_DLY_SEL,cfg->doDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF3_IO_0_DI_DLY_SEL,cfg->diDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF3_IO_0_OE_DLY_SEL,cfg->oeDelay); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF3_IF_IO_DLY_1,tmpVal); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF3_IF_IO_DLY_2); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF3_IO_1_DO_DLY_SEL,cfg->doDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF3_IO_1_DI_DLY_SEL,cfg->diDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF3_IO_1_OE_DLY_SEL,cfg->oeDelay); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF3_IF_IO_DLY_2,tmpVal); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF3_IF_IO_DLY_3); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF3_IO_2_DO_DLY_SEL,cfg->doDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF3_IO_2_DI_DLY_SEL,cfg->diDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF3_IO_2_OE_DLY_SEL,cfg->oeDelay); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF3_IF_IO_DLY_3,tmpVal); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF3_IF_IO_DLY_4); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF3_IO_3_DO_DLY_SEL,cfg->doDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF3_IO_3_DI_DLY_SEL,cfg->diDelay); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF3_IO_3_OE_DLY_SEL,cfg->oeDelay); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF3_IF_IO_DLY_4,tmpVal); + + /* Enable AHB access sram buffer and enable sf interface */ + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_1); + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_AHB2SRAM_EN); + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_EN); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_1,tmpVal); + + SF_Ctrl_Set_Owner(cfg->owner); +} +#endif + +/****************************************************************************//** + * @brief Enable serail psram controller + * + * @param sfCtrlPsramCfg: serial psram controller config + * + * @return None + * +*******************************************************************************/ +//#ifndef BFLB_USE_ROM_DRIVER +//__WEAK +void ATTR_TCM_SECTION SF_Ctrl_Psram_Init(SF_Ctrl_Psram_Cfg *sfCtrlPsramCfg) +{ + uint32_t tmpVal = 0; + + SF_Ctrl_Select_Pad(sfCtrlPsramCfg->padSel); + SF_Ctrl_Select_Bank(sfCtrlPsramCfg->bankSel); + + /* Select psram clock delay */ + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_12); + if(sfCtrlPsramCfg->psramRxClkInvertSrc){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF2_CLK_SF_RX_INV_SRC); + if(sfCtrlPsramCfg->psramRxClkInvertSel){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF2_CLK_SF_RX_INV_SEL); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF2_CLK_SF_RX_INV_SEL); + } + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF2_CLK_SF_RX_INV_SRC); + } + if(sfCtrlPsramCfg->psramDelaySrc){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF2_IF_READ_DLY_SRC); + if(sfCtrlPsramCfg->psramClkDelay>0){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF2_IF_READ_DLY_EN); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF2_IF_READ_DLY_N,sfCtrlPsramCfg->psramClkDelay-1); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF2_IF_READ_DLY_EN); + } + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF2_IF_READ_DLY_SRC); + } + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_12,tmpVal); + + /* Enable AHB access sram buffer and enable sf interface */ + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_1); + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_AHB2SRAM_EN); + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_EN); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_1,tmpVal); + + SF_Ctrl_Set_Owner(sfCtrlPsramCfg->owner); +} +//#endif + +/****************************************************************************//** + * @brief Get flash controller clock delay value + * + * @param None + * + * @return Clock delay value + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +uint8_t ATTR_TCM_SECTION SF_Ctrl_Get_Clock_Delay(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_0); + + if(BL_GET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_READ_DLY_EN)==0){ + return 0; + }else{ + return BL_GET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_READ_DLY_N) +1; + } +} +#endif + +/****************************************************************************//** + * @brief Set flash controller clock delay value + * + * @param delay: Clock delay value + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_Set_Clock_Delay(uint8_t delay) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_0); + + if(delay>0){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_READ_DLY_EN); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_READ_DLY_N,delay-1); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_IF_READ_DLY_EN); + } + + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_0,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief SF Ctrl set cmds config + * + * @param cmdsCfg: SF Ctrl cmds config + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_Cmds_Set(SF_Ctrl_Cmds_Cfg *cmdsCfg) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_WRAP_LEN_TYPE(cmdsCfg->wrapLen)); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_3); + if(cmdsCfg->cmdsEn){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_CMDS_EN); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_CMDS_EN); + } + if(cmdsCfg->burstToggleEn){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_CMDS_BT_EN); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_CMDS_BT_EN); + } + if(cmdsCfg->wrapModeEn){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_CMDS_WRAP_MODE); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_CMDS_WRAP_MODE); + } + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_CMDS_WRAP_LEN,cmdsCfg->wrapLen); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_3,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief SF Ctrl pad select + * + * @param sel: pad select type + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_Select_Pad(SF_Ctrl_Pad_Select sel) +{ + /* TODO: sf_if_bk_swap */ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_PAD_SELECT(sel)); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_2); + if(sel <= SF_CTRL_PAD_SEL_SF3){ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_IF_BK2_EN); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_PAD_SEL,sel); + }else if(sel >= SF_CTRL_PAD_SEL_DUAL_BANK_SF1_SF2 && sel <= SF_CTRL_PAD_SEL_DUAL_BANK_SF3_SF1){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_BK2_EN); + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_BK2_MODE); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_PAD_SEL,sel-SF_CTRL_PAD_SEL_DUAL_BANK_SF1_SF2); + }else if(sel == SF_CTRL_PAD_SEL_DUAL_CS_SF2){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_BK2_EN); + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_IF_BK2_MODE); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_PAD_SEL,1); + }else if(sel == SF_CTRL_PAD_SEL_DUAL_CS_SF3){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_BK2_EN); + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_IF_BK2_MODE); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_PAD_SEL,2); + } + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_2,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief SF Ctrl bank select + * + * @param sel: bank select type + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_Select_Bank(SF_Ctrl_Select sel) +{ + /* TODO: sf_if_bk_swap */ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_SELECT(sel)); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_2); + if(sel == SF_CTRL_SEL_FLASH){ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_IF_0_BK_SEL); + }else{ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_0_BK_SEL); + } + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_2,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief Set flash controller owner:I/D AHB or system AHB + * + * @param owner: owner type + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_Set_Owner(SF_Ctrl_Owner_Type owner) +{ + uint32_t tmpVal = 0; + uint32_t timeOut = 0; + + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_OWNER_TYPE(owner)); + + timeOut = SF_CTRL_BUSY_STATE_TIMEOUT; + while(SET==SF_Ctrl_GetBusyState()){ + timeOut--; + if(timeOut == 0){ + return; + } + } + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_1); + + /* Set owner */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_FN_SEL,owner); + + /* Set iahb to flash interface */ + if(owner==SF_CTRL_OWNER_IAHB){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_AHB2SIF_EN); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_AHB2SIF_EN); + } + + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_1,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief Disable flash controller + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_Disable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_1); + + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_IF_EN); + + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_1,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief Enable flash controller AES with big indian + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_AES_Enable_BE(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_0); + + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_AES_KEY_ENDIAN); + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_AES_IV_ENDIAN); + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_AES_DOUT_ENDIAN); + + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_0,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief Enable flash controller AES with little indian + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_AES_Enable_LE(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_0); + + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_AES_KEY_ENDIAN); + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_AES_IV_ENDIAN); + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_AES_DOUT_ENDIAN); + + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_0,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief Serial flash controller set AES region + * + * @param region: region number + * @param enable: enable or not + * @param hwKey: hardware key or software key + * @param startAddr: region start address + * @param endAddr: region end address + * @param locked: lock this region or not + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_AES_Set_Region(uint8_t region,uint8_t enable, + uint8_t hwKey,uint32_t startAddr,uint32_t endAddr,uint8_t locked) +{ + /* Do flash key eco*/ + uint32_t regionRegBase=SF_Ctrl_Get_AES_Region(SF_CTRL_BASE,region); + uint32_t tmpVal; + + if(!hwKey){ + regionRegBase=SF_Ctrl_Get_AES_Region(SF_CTRL_BASE,region); + } + tmpVal=BL_RD_REG(regionRegBase,SF_CTRL_SF_AES_CFG); + + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_AES_REGION_HW_KEY_EN,hwKey); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_AES_REGION_START,startAddr/1024); + /* sf_aes_end =1 means 1,11,1111,1111 */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_AES_REGION_END,endAddr/1024); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_AES_REGION_EN,enable); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_AES_REGION_LOCK,locked); + + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_CFG,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief Serial flash controller set AES key + * + * @param region: region number + * @param key: key data pointer + * @param keyType: flash controller AES key type:128 bits,192 bits or 256 bits + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_AES_Set_Key(uint8_t region,uint8_t *key, SF_Ctrl_AES_Key_Type keyType) +{ + /* Do flash key eco*/ + uint32_t regionRegBase=SF_Ctrl_Get_AES_Region(SF_CTRL_BASE,region); + uint32_t tmpVal,i=0; + + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_AES_KEY_TYPE(keyType)); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_AES); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_AES_MODE,keyType); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_AES,tmpVal); + + if(NULL!=key){ + if(keyType==SF_CTRL_AES_128BITS){ + i=4; + /* + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_7,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_6,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_5,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_4,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + */ + }else if(keyType==SF_CTRL_AES_256BITS){ + i=8; + /* + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_7,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_6,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_5,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_4,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_3,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_2,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_1,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_0,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + */ + }else if(keyType==SF_CTRL_AES_192BITS){ + i=6; + /* + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_7,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_6,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_5,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_4,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_3,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_2,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + */ + } + tmpVal=SF_CTRL_SF_AES_KEY_7_OFFSET; + while(i--){ + BL_WR_WORD(regionRegBase+tmpVal,__REV(BL_RDWD_FRM_BYTEP(key))); + key+=4; + tmpVal-=4; + } + } +} +#endif + +/****************************************************************************//** + * @brief Serial flash controller set AES key with big endian + * + * @param region: region number + * @param key: key data pointer + * @param keyType: flash controller AES key type:128 bits,192 bits or 256 bits + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_AES_Set_Key_BE(uint8_t region,uint8_t *key, SF_Ctrl_AES_Key_Type keyType) +{ + /* Do flash key eco*/ + uint32_t regionRegBase=SF_Ctrl_Get_AES_Region(SF_CTRL_BASE,region); + uint32_t tmpVal,i=0; + + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_AES_KEY_TYPE(keyType)); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_AES); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_AES_MODE,keyType); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_AES,tmpVal); + + if(NULL!=key){ + if(keyType==SF_CTRL_AES_128BITS){ + i=4; + /* + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_0,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_1,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_2,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_3,BL_RDWD_FRM_BYTEP(key)); + key+=4; + */ + } else if(keyType==SF_CTRL_AES_256BITS){ + i=8; + /* + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_0,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_1,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_2,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_3,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_4,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_5,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_6,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_7,BL_RDWD_FRM_BYTEP(key)); + key+=4; + */ + }else if(keyType==SF_CTRL_AES_192BITS){ + i=6; + /* + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_0,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_1,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_2,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_3,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_4,BL_RDWD_FRM_BYTEP(key)); + key+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_KEY_5,BL_RDWD_FRM_BYTEP(key)); + */ + } + tmpVal=SF_CTRL_SF_AES_KEY_0_OFFSET; + while(i--){ + BL_WR_WORD(regionRegBase+tmpVal,BL_RDWD_FRM_BYTEP(key)); + key+=4; + tmpVal+=4; + } + } +} +#endif + +/****************************************************************************//** + * @brief Serial flash controller set AES iv + * + * @param region: region number + * @param iv: iv data pointer + * @param addrOffset: flash address offset + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_AES_Set_IV(uint8_t region,uint8_t *iv,uint32_t addrOffset) +{ + /* Do flash key eco*/ + uint32_t regionRegBase=SF_Ctrl_Get_AES_Region(SF_CTRL_BASE,region); + uint32_t tmpVal,i=3; + + if(iv!=NULL){ + tmpVal=SF_CTRL_SF_AES_IV_W3_OFFSET; + while(i--){ + BL_WR_WORD(regionRegBase+tmpVal,__REV(BL_RDWD_FRM_BYTEP(iv))); + iv+=4; + tmpVal-=4; + } + /* + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_IV_W3,__REV(BL_RDWD_FRM_BYTEP(iv))); + iv+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_IV_W2,__REV(BL_RDWD_FRM_BYTEP(iv))); + iv+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_IV_W1,__REV(BL_RDWD_FRM_BYTEP(iv))); + iv+=4; + */ + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_IV_W0,addrOffset); + iv+=4; + } +} +#endif + +/****************************************************************************//** + * @brief Serial flash controller set AES iv with big endian + * + * @param region: region number + * @param iv: iv data pointer + * @param addrOffset: flash address offset + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_AES_Set_IV_BE(uint8_t region,uint8_t *iv,uint32_t addrOffset) +{ + /* Do flash key eco*/ + uint32_t regionRegBase=SF_Ctrl_Get_AES_Region(SF_CTRL_BASE,region); + uint32_t tmpVal,i=3; + + if(iv!=NULL){ + tmpVal=SF_CTRL_SF_AES_IV_W0_OFFSET; + while(i--){ + BL_WR_WORD(regionRegBase+tmpVal,BL_RDWD_FRM_BYTEP(iv)); + iv+=4; + tmpVal+=4; + } + /* + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_IV_W0,BL_RDWD_FRM_BYTEP(iv)); + iv+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_IV_W1,BL_RDWD_FRM_BYTEP(iv)); + iv+=4; + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_IV_W2,BL_RDWD_FRM_BYTEP(iv)); + iv+=4; + */ + BL_WR_REG(regionRegBase,SF_CTRL_SF_AES_IV_W3,__REV(addrOffset)); + iv+=4; + } +} +#endif + +/****************************************************************************//** + * @brief Enable serial flash controller AES + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_AES_Enable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_AES); + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_AES_EN); + + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_AES,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief Disable serial flash controller AES + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_AES_Disable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_AES); + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_AES_EN); + + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_AES,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief Check is serial flash controller AES enable + * + * @param None + * + * @return Wether AES is enable + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +uint8_t ATTR_TCM_SECTION SF_Ctrl_Is_AES_Enable(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_AES); + return BL_IS_REG_BIT_SET(tmpVal,SF_CTRL_SF_AES_EN); +} +#endif + +/****************************************************************************//** + * @brief Set flash image offset + * + * @param addrOffset: Address offset value + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_Set_Flash_Image_Offset(uint32_t addrOffset) +{ + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_ID0_OFFSET,addrOffset); +} +#endif + +/****************************************************************************//** + * @brief Get flash image offset + * + * @param None + * + * @return :Address offset value + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +uint32_t ATTR_TCM_SECTION SF_Ctrl_Get_Flash_Image_Offset(void) +{ + return BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_ID0_OFFSET); +} +#endif + +/****************************************************************************//** + * @brief SF controller send one command + * + * @param sahbType: Serial flash controller clock sahb sram select + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_Select_Clock(SF_Ctrl_Sahb_Type sahbType) +{ + uint32_t tmpVal = 0; + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_0); + if(sahbType==SF_CTRL_SAHB_CLOCK){ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_CLK_SAHB_SRAM_SEL); + }else if(sahbType==SF_CTRL_FLASH_CLOCK){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_CLK_SAHB_SRAM_SEL); + } + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_0,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief SF controller send one command + * + * @param cfg: Serial flash controller command configuration pointer + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_SendCmd(SF_Ctrl_Cmd_Cfg_Type *cfg) +{ + uint32_t tmpVal = 0; + uint32_t timeOut = 0; + + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_CMD_MODE_TYPE(cfg->cmdMode)); + CHECK_PARAM(IS_SF_CTRL_ADDR_MODE_TYPE(cfg->addrMode)); + CHECK_PARAM(IS_SF_CTRL_DMY_MODE_TYPE(cfg->dummyMode)); + CHECK_PARAM(IS_SF_CTRL_DATA_MODE_TYPE(cfg->dataMode)); + + timeOut = SF_CTRL_BUSY_STATE_TIMEOUT; + while(SET==SF_Ctrl_GetBusyState()){ + timeOut--; + if(timeOut == 0){ + return; + } + } + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_1); + + if(BL_GET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_FN_SEL)!=SF_CTRL_OWNER_SAHB){ + return; + } + + /* Clear trigger */ + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_SAHB_0); + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_IF_0_TRIG); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_SAHB_0,tmpVal); + + /* Copy command buffer */ + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_SAHB_1,cfg->cmdBuf[0]); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_SAHB_2,cfg->cmdBuf[1]); + + /* Configure SPI and IO mode*/ + if(SF_CTRL_CMD_1_LINE==cfg->cmdMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_QPI_MODE_EN,SF_CTRL_SPI_MODE); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_QPI_MODE_EN,SF_CTRL_QPI_MODE); + } + + if(SF_CTRL_ADDR_1_LINE==cfg->addrMode){ + if(SF_CTRL_DATA_1_LINE==cfg->dataMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_SPI_MODE,SF_CTRL_NIO_MODE); + }else if(SF_CTRL_DATA_2_LINES==cfg->dataMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_SPI_MODE,SF_CTRL_DO_MODE); + }else if(SF_CTRL_DATA_4_LINES==cfg->dataMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_SPI_MODE,SF_CTRL_QO_MODE); + } + }else if(SF_CTRL_ADDR_2_LINES==cfg->addrMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_SPI_MODE,SF_CTRL_DIO_MODE); + }else if(SF_CTRL_ADDR_4_LINES==cfg->addrMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_SPI_MODE,SF_CTRL_QIO_MODE); + } + + /* Configure cmd */ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_0_CMD_EN); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_CMD_BYTE,0); + + /* Configure address */ + if(cfg->addrSize != 0){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_0_ADR_EN); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_ADR_BYTE,cfg->addrSize-1); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_IF_0_ADR_EN); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_ADR_BYTE,0); + } + + /* Configure dummy */ + if(cfg->dummyClks !=0){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_0_DMY_EN); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_DMY_BYTE,cfg->dummyClks-1); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_IF_0_DMY_EN); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_DMY_BYTE,0); + } + + /* Configure data */ + if(cfg->nbData !=0){ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_0_DAT_EN); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_DAT_BYTE,cfg->nbData-1); + }else{ + tmpVal=BL_CLR_REG_BIT(tmpVal,SF_CTRL_SF_IF_0_DAT_EN); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_DAT_BYTE,0); + } + + /* Set read write flag */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_0_DAT_RW,cfg->rwFlag); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_SAHB_0,tmpVal); + + //switch sf_clk_sahb_sram_sel = 1 + SF_Ctrl_Select_Clock(SF_CTRL_FLASH_CLOCK); + /* Trigger */ + tmpVal=BL_SET_REG_BIT(tmpVal,SF_CTRL_SF_IF_0_TRIG); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_SAHB_0,tmpVal); + + timeOut = SF_CTRL_BUSY_STATE_TIMEOUT; + while(SET==SF_Ctrl_GetBusyState()){ + timeOut--; + if(timeOut == 0){ + SF_Ctrl_Select_Clock(SF_CTRL_SAHB_CLOCK); + return; + } + } + //switch sf_clk_sahb_sram_sel = 0 + SF_Ctrl_Select_Clock(SF_CTRL_SAHB_CLOCK); +} +#endif + +/****************************************************************************//** + * @brief Config SF controller for flash I/D cache read + * + * @param cfg: Serial flash controller command configuration pointer + * @param cmdValid: command valid or not, for continous read, cache may need no command + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_Flash_Read_Icache_Set(SF_Ctrl_Cmd_Cfg_Type *cfg,uint8_t cmdValid) +{ + uint32_t tmpVal = 0; + uint32_t timeOut = 0; + + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_CMD_MODE_TYPE(cfg->cmdMode)); + CHECK_PARAM(IS_SF_CTRL_ADDR_MODE_TYPE(cfg->addrMode)); + CHECK_PARAM(IS_SF_CTRL_DMY_MODE_TYPE(cfg->dummyMode)); + CHECK_PARAM(IS_SF_CTRL_DATA_MODE_TYPE(cfg->dataMode)); + + timeOut = SF_CTRL_BUSY_STATE_TIMEOUT; + while(SET==SF_Ctrl_GetBusyState()){ + timeOut--; + if(timeOut == 0){ + return; + } + } + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_1); + if(BL_GET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_FN_SEL)!=SF_CTRL_OWNER_IAHB){ + return; + } + + /* Copy command buffer */ + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_1,cfg->cmdBuf[0]); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_2,cfg->cmdBuf[1]); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_0); + + /* Configure SPI and IO mode*/ + if(SF_CTRL_CMD_1_LINE==cfg->cmdMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_QPI_MODE_EN,SF_CTRL_SPI_MODE); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_QPI_MODE_EN,SF_CTRL_QPI_MODE); + } + + if(SF_CTRL_ADDR_1_LINE==cfg->addrMode){ + if(SF_CTRL_DATA_1_LINE==cfg->dataMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_SPI_MODE,SF_CTRL_NIO_MODE); + }else if(SF_CTRL_DATA_2_LINES==cfg->dataMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_SPI_MODE,SF_CTRL_DO_MODE); + }else if(SF_CTRL_DATA_4_LINES==cfg->dataMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_SPI_MODE,SF_CTRL_QO_MODE); + } + }else if(SF_CTRL_ADDR_2_LINES==cfg->addrMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_SPI_MODE,SF_CTRL_DIO_MODE); + }else if(SF_CTRL_ADDR_4_LINES==cfg->addrMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_SPI_MODE,SF_CTRL_QIO_MODE); + } + + if(cmdValid){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_CMD_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_CMD_BYTE,0); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_CMD_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_CMD_BYTE,0); + } + + /* Configure address */ + if(cfg->addrSize != 0){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_ADR_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_ADR_BYTE,cfg->addrSize-1); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_ADR_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_ADR_BYTE,0); + } + + /* configure dummy */ + if(cfg->dummyClks !=0){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DMY_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DMY_BYTE,cfg->dummyClks-1); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DMY_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DMY_BYTE,0); + } + + /* Configure data */ + if(cfg->nbData !=0){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DAT_EN,1); + } else { + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DAT_EN,0); + } + + /* Set read write flag */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DAT_RW,cfg->rwFlag); + + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_0,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief Config psram controller for psram I/D cache write + * + * @param cfg: Serial flash controller command configuration pointer + * @param cmdValid: command valid or not, cache may need no command + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_Psram_Write_Icache_Set(SF_Ctrl_Cmd_Cfg_Type *cfg,uint8_t cmdValid) +{ + uint32_t tmpVal = 0; + uint32_t timeOut = 0; + + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_CMD_MODE_TYPE(cfg->cmdMode)); + CHECK_PARAM(IS_SF_CTRL_ADDR_MODE_TYPE(cfg->addrMode)); + CHECK_PARAM(IS_SF_CTRL_DMY_MODE_TYPE(cfg->dummyMode)); + CHECK_PARAM(IS_SF_CTRL_DATA_MODE_TYPE(cfg->dataMode)); + + timeOut = SF_CTRL_BUSY_STATE_TIMEOUT; + while(SET==SF_Ctrl_GetBusyState()){ + timeOut--; + if(timeOut == 0){ + return; + } + } + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_1); + + if(BL_GET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_FN_SEL)!=SF_CTRL_OWNER_IAHB){ + return; + } + + /* Copy command buffer */ + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_4,cfg->cmdBuf[0]); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_5,cfg->cmdBuf[1]); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_3); + + /* Configure SPI and IO mode*/ + if(SF_CTRL_CMD_1_LINE==cfg->cmdMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_QPI_MODE_EN,SF_CTRL_SPI_MODE); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_QPI_MODE_EN,SF_CTRL_QPI_MODE); + } + + if(SF_CTRL_ADDR_1_LINE==cfg->addrMode){ + if(SF_CTRL_DATA_1_LINE==cfg->dataMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_SPI_MODE,SF_CTRL_NIO_MODE); + }else if(SF_CTRL_DATA_2_LINES==cfg->dataMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_SPI_MODE,SF_CTRL_DO_MODE); + }else if(SF_CTRL_DATA_4_LINES==cfg->dataMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_SPI_MODE,SF_CTRL_QO_MODE); + } + }else if(SF_CTRL_ADDR_2_LINES==cfg->addrMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_SPI_MODE,SF_CTRL_DIO_MODE); + }else if(SF_CTRL_ADDR_4_LINES==cfg->addrMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_SPI_MODE,SF_CTRL_QIO_MODE); + } + + if(cmdValid){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_CMD_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_CMD_BYTE,0); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_CMD_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_CMD_BYTE,0); + } + + /* Configure address */ + if(cfg->addrSize != 0){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_ADR_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_ADR_BYTE,cfg->addrSize-1); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_ADR_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_ADR_BYTE,0); + } + + /* configure dummy */ + if(cfg->dummyClks !=0){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_DMY_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_DMY_BYTE,cfg->dummyClks-1); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_DMY_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_DMY_BYTE,0); + } + + /* Configure data */ + if(cfg->nbData !=0){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_DAT_EN,1); + } else { + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_DAT_EN,0); + } + + /* Set read write flag */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_2_DAT_RW,cfg->rwFlag); + + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_3,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief Config psram controller for psram I/D cache read + * + * @param cfg: Serial flash controller command configuration pointer + * @param cmdValid: command valid or not, for continous read, cache may need no command + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SF_Ctrl_Psram_Read_Icache_Set(SF_Ctrl_Cmd_Cfg_Type *cfg,uint8_t cmdValid) +{ + uint32_t tmpVal = 0; + uint32_t timeOut = 0; + + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_CMD_MODE_TYPE(cfg->cmdMode)); + CHECK_PARAM(IS_SF_CTRL_ADDR_MODE_TYPE(cfg->addrMode)); + CHECK_PARAM(IS_SF_CTRL_DMY_MODE_TYPE(cfg->dummyMode)); + CHECK_PARAM(IS_SF_CTRL_DATA_MODE_TYPE(cfg->dataMode)); + + timeOut = SF_CTRL_BUSY_STATE_TIMEOUT; + while(SET==SF_Ctrl_GetBusyState()){ + timeOut--; + if(timeOut == 0){ + return; + } + } + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_1); + + if(BL_GET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_FN_SEL)!=SF_CTRL_OWNER_IAHB){ + return; + } + + /* Copy command buffer */ + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_10,cfg->cmdBuf[0]); + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_11,cfg->cmdBuf[1]); + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_9); + + /* Configure SPI and IO mode*/ + if(SF_CTRL_CMD_1_LINE==cfg->cmdMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_QPI_MODE_EN,SF_CTRL_SPI_MODE); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_QPI_MODE_EN,SF_CTRL_QPI_MODE); + } + + if(SF_CTRL_ADDR_1_LINE==cfg->addrMode){ + if(SF_CTRL_DATA_1_LINE==cfg->dataMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_SPI_MODE,SF_CTRL_NIO_MODE); + }else if(SF_CTRL_DATA_2_LINES==cfg->dataMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_SPI_MODE,SF_CTRL_DO_MODE); + }else if(SF_CTRL_DATA_4_LINES==cfg->dataMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_SPI_MODE,SF_CTRL_QO_MODE); + } + }else if(SF_CTRL_ADDR_2_LINES==cfg->addrMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_SPI_MODE,SF_CTRL_DIO_MODE); + }else if(SF_CTRL_ADDR_4_LINES==cfg->addrMode){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_SPI_MODE,SF_CTRL_QIO_MODE); + } + + if(cmdValid){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_CMD_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_CMD_BYTE,0); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_CMD_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_CMD_BYTE,0); + } + + /* Configure address */ + if(cfg->addrSize != 0){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_ADR_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_ADR_BYTE,cfg->addrSize-1); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_ADR_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_ADR_BYTE,0); + } + + /* configure dummy */ + if(cfg->dummyClks !=0){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DMY_EN,1); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DMY_BYTE,cfg->dummyClks-1); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DMY_EN,0); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DMY_BYTE,0); + } + + /* Configure data */ + if(cfg->nbData !=0){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DAT_EN,1); + } else { + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DAT_EN,0); + } + + /* Set read write flag */ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,SF_CTRL_SF_IF_1_DAT_RW,cfg->rwFlag); + + BL_WR_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_IAHB_9,tmpVal); +} +#endif + +/****************************************************************************//** + * @brief Get SF Ctrl busy state + * + * @param None + * + * @return SET for SF ctrl busy or RESET for SF ctrl not busy + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Sts_Type ATTR_TCM_SECTION SF_Ctrl_GetBusyState(void) +{ + uint32_t tmpVal; + + tmpVal=BL_RD_REG(SF_CTRL_BASE,SF_CTRL_SF_IF_SAHB_0); + + if( BL_IS_REG_BIT_SET(tmpVal,SF_CTRL_SF_IF_BUSY)){ + return SET; + }else{ + return RESET; + } +} +#endif + +/****************************************************************************//** + * @brief SF Controller interrupt handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void SF_Ctrl_IRQHandler(void) +{ + /* TODO: Not implemented */ +} +#endif + +/*@} end of group SF_CTRL_Public_Functions */ + +/*@} end of group SF_CTRL */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_sflash.c b/drivers/bl702_driver/std_drv/src/bl702_sflash.c new file mode 100644 index 00000000..5a29fb1a --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_sflash.c @@ -0,0 +1,1470 @@ +/** + ****************************************************************************** + * @file bl702_sflash.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "string.h" +#include "bl702_sflash.h" +#include "bl702_sf_ctrl.h" +#include "bl702_l1c.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SFLASH + * @{ + */ + +/** @defgroup SFLASH_Private_Macros + * @{ + */ + +/*@} end of group SFLASH_Private_Macros */ + +/** @defgroup SFLASH_Private_Types + * @{ + */ + +/*@} end of group SFLASH_Private_Types */ + +/** @defgroup SFLASH_Private_Variables + * @{ + */ +#define SFCTRL_BUSY_STATE_TIMEOUT (5*160*1000) + +/*@} end of group SFLASH_Private_Variables */ + +/** @defgroup SFLASH_Global_Variables + * @{ + */ + +/*@} end of group SFLASH_Global_Variables */ + +/** @defgroup SFLASH_Private_Fun_Declaration + * @{ + */ + +/*@} end of group SFLASH_Private_Fun_Declaration */ + +/** @defgroup SFLASH_Private_Functions + * @{ + */ + +/*@} end of group SFLASH_Private_Functions */ + +/** @defgroup SFLASH_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Init serial flash control interface + * + * @param pSfCtrlCfg: Serial flash controller configuration pointer + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SFlash_Init(const SF_Ctrl_Cfg_Type *pSfCtrlCfg) +{ + SF_Ctrl_Enable(pSfCtrlCfg); +} +#endif + +/****************************************************************************//** + * @brief Set serial flash control interface SPI or QPI mode + * + * @param mode: Serial flash interface mode + * + * @return BFLB_RET:SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_SetSPIMode(SF_Ctrl_Mode_Type mode) +{ + BL_Err_Type stat=SUCCESS; + + /* Check the parameters */ + CHECK_PARAM(IS_SF_CTRL_MODE_TYPE(mode)); + + return stat; +} +#endif + +/****************************************************************************//** + * @brief Read flash register + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param regIndex: register index + * @param regValue: register value pointer to store data + * @param regLen: register value length + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Read_Reg(SPI_Flash_Cfg_Type *flashCfg,uint8_t regIndex,uint8_t *regValue,uint8_t regLen) +{ + uint8_t * const flashCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + uint32_t cnt=0; + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + flashCmd.cmdBuf[0]=(flashCfg->readRegCmd[regIndex])<<24; + flashCmd.rwFlag=SF_CTRL_READ; + flashCmd.nbData=regLen; + + SF_Ctrl_SendCmd(&flashCmd); + + while(SET==SF_Ctrl_GetBusyState()){ + BL702_Delay_US(1); + cnt++; + if(cnt>1000){ + return ERROR; + } + } + + BL702_MemCpy(regValue,flashCtrlBuf,regLen); + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Write flash register + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param regIndex: register index + * @param regValue: register value pointer storing data + * @param regLen: register value length + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Write_Reg(SPI_Flash_Cfg_Type *flashCfg,uint8_t regIndex,uint8_t *regValue,uint8_t regLen) +{ + uint8_t * const flashCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + uint32_t cnt=0; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + BL702_MemCpy(flashCtrlBuf,regValue,regLen); + + flashCmd.cmdBuf[0]=(flashCfg->writeRegCmd[regIndex])<<24; + flashCmd.rwFlag=SF_CTRL_WRITE; + flashCmd.nbData=regLen; + + SF_Ctrl_SendCmd(&flashCmd); + + /* take 40ms for tw(write status register) as default */ + while(SET==SFlash_Busy(flashCfg)){ + BL702_Delay_US(100); + cnt++; + if(cnt>400){ + return ERROR; + } + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Read flash register with read command + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param readRegCmd: read command + * @param regValue: register value pointer to store data + * @param regLen: register value length + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Read_Reg_With_Cmd(SPI_Flash_Cfg_Type *flashCfg,uint8_t readRegCmd,uint8_t *regValue,uint8_t regLen) +{ + uint8_t * const flashCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + uint32_t cnt=0; + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + flashCmd.cmdBuf[0]=readRegCmd<<24; + flashCmd.rwFlag=SF_CTRL_READ; + flashCmd.nbData=regLen; + + SF_Ctrl_SendCmd(&flashCmd); + + while(SET==SF_Ctrl_GetBusyState()){ + BL702_Delay_US(1); + cnt++; + if(cnt>1000){ + return ERROR; + } + } + + BL702_MemCpy(regValue,flashCtrlBuf,regLen); + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Write flash register with write command + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param writeRegCmd: write command + * @param regValue: register value pointer storing data + * @param regLen: register value length + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Write_Reg_With_Cmd(SPI_Flash_Cfg_Type *flashCfg,uint8_t writeRegCmd,uint8_t *regValue,uint8_t regLen) +{ + uint8_t * const flashCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + uint32_t cnt=0; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + BL702_MemCpy(flashCtrlBuf,regValue,regLen); + + flashCmd.cmdBuf[0]=writeRegCmd<<24; + flashCmd.rwFlag=SF_CTRL_WRITE; + flashCmd.nbData=regLen; + + SF_Ctrl_SendCmd(&flashCmd); + + /* take 40ms for tw(write status register) as default */ + while(SET==SFlash_Busy(flashCfg)){ + BL702_Delay_US(100); + cnt++; + if(cnt>400){ + return ERROR; + } + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Check flash busy status + * + * @param flashCfg: Serial flash parameter configuration pointer + * + * @return SET for busy or RESET for not busy + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Sts_Type ATTR_TCM_SECTION SFlash_Busy(SPI_Flash_Cfg_Type *flashCfg) +{ + uint32_t stat=0; + SFlash_Read_Reg(flashCfg,flashCfg->busyIndex,(uint8_t *)&stat,flashCfg->busyReadRegLen); + if((stat&(1<busyBit))==0){ + return RESET; + } + + return SET; +} +#endif + +/****************************************************************************//** + * @brief Enable flash write function + * + * @param flashCfg: Serial flash parameter configuration pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Write_Enable(SPI_Flash_Cfg_Type *flashCfg) +{ + uint32_t stat=0; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + /* Write enable*/ + flashCmd.cmdBuf[0]=(flashCfg->writeEnableCmd)<<24; + /* rwFlag don't care */ + flashCmd.rwFlag=SF_CTRL_READ; + SF_Ctrl_SendCmd(&flashCmd); + + SFlash_Read_Reg(flashCfg,flashCfg->wrEnableIndex,(uint8_t *)&stat,flashCfg->wrEnableReadRegLen); + + if((stat&(1<wrEnableBit))!=0){ + return SUCCESS; + } + + return ERROR; +} +#endif + +/****************************************************************************//** + * @brief Enable flash flash controller QSPI interface + * + * @param flashCfg: Serial flash parameter configuration pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Qspi_Enable(SPI_Flash_Cfg_Type *flashCfg) +{ + uint32_t stat=0,ret; + + if(flashCfg->qeReadRegLen==0){ + ret=SFlash_Write_Enable(flashCfg); + if(SUCCESS!=ret){ + return ERROR; + } + SFlash_Write_Reg(flashCfg,flashCfg->qeIndex,(uint8_t *)&stat,flashCfg->qeWriteRegLen); + return SUCCESS; + } + + SFlash_Read_Reg(flashCfg,flashCfg->qeIndex,(uint8_t *)&stat,flashCfg->qeReadRegLen); + + if(flashCfg->qeData==0){ + if((stat&(1<qeBit))!=0){ + return SUCCESS; + } + }else{ + if(((stat>>(flashCfg->qeBit&0x08))&0xff)==flashCfg->qeData){ + return SUCCESS; + } + } + + if(flashCfg->qeWriteRegLen!=1){ + /* This is read r0,read r1 write r0,r1 case*/ + SFlash_Read_Reg(flashCfg,0,(uint8_t *)&stat,1); + SFlash_Read_Reg(flashCfg,1,((uint8_t *)&stat)+1,1); + if(flashCfg->qeData==0){ + stat|=(1<<(flashCfg->qeBit+8*flashCfg->qeIndex)); + }else{ + stat=stat&(~(0xff<<(8*flashCfg->qeIndex))); + stat|=(flashCfg->qeData<<(8*flashCfg->qeIndex)); + } + }else{ + if(flashCfg->qeData==0){ + stat|=(1<<(flashCfg->qeBit%8)); + }else{ + stat=flashCfg->qeData; + } + } + + ret=SFlash_Write_Enable(flashCfg); + if(SUCCESS!=ret){ + return ERROR; + } + SFlash_Write_Reg(flashCfg,flashCfg->qeIndex,(uint8_t *)&stat,flashCfg->qeWriteRegLen); + SFlash_Read_Reg(flashCfg,flashCfg->qeIndex,(uint8_t *)&stat,flashCfg->qeReadRegLen); + + if(flashCfg->qeData==0){ + if((stat&(1<qeBit))!=0){ + return SUCCESS; + } + }else{ + if(((stat>>(flashCfg->qeBit&0x08))&0xff)==flashCfg->qeData){ + return SUCCESS; + } + } + + return ERROR; +} +#endif + +/****************************************************************************//** + * @brief Enable flash volatile register write enable + * + * @param flashCfg: Serial flash parameter configuration pointer + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SFlash_Volatile_Reg_Write_Enable(SPI_Flash_Cfg_Type *flashCfg) +{ + SF_Ctrl_Cmd_Cfg_Type flashCmd; + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + flashCmd.cmdBuf[0]=(flashCfg->writeVregEnableCmd)<<24; + flashCmd.rwFlag=SF_CTRL_WRITE; + + SF_Ctrl_SendCmd(&flashCmd); +} +#endif + +/****************************************************************************//** + * @brief Erase flash whole chip + * + * @param flashCfg: Serial flash parameter configuration pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Chip_Erase(SPI_Flash_Cfg_Type *flashCfg) +{ + SF_Ctrl_Cmd_Cfg_Type flashCmd; + uint32_t cnt=0; + BL_Err_Type stat=SFlash_Write_Enable(flashCfg); + + + if(stat!=SUCCESS){ + return stat; + } + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + + flashCmd.cmdBuf[0]=(flashCfg->chipEraseCmd)<<24; + /* rwFlag don't care */ + flashCmd.rwFlag=SF_CTRL_READ; + + SF_Ctrl_SendCmd(&flashCmd); + + while(SET==SFlash_Busy(flashCfg)){ + BL702_Delay_US(500); + cnt++; + if(cnt>flashCfg->timeCe*3){ + return ERROR; + } + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Erase flash one sector + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param secNum: flash sector number + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Sector_Erase(SPI_Flash_Cfg_Type *flashCfg,uint32_t secNum) +{ + uint32_t cnt=0; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + + BL_Err_Type stat=SFlash_Write_Enable(flashCfg); + if(stat!=SUCCESS){ + return stat; + } + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + flashCmd.cmdBuf[0]=(flashCfg->sectorEraseCmd<<24)|(flashCfg->sectorSize*1024*secNum); + /* rwFlag don't care */ + flashCmd.rwFlag=SF_CTRL_READ; + flashCmd.addrSize=3; + + SF_Ctrl_SendCmd(&flashCmd); + + while(SET==SFlash_Busy(flashCfg)){ + BL702_Delay_US(500); + cnt++; + if(cnt>flashCfg->timeEsector*3){ + return ERROR; + } + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Erase flash one 32K block + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param blkNum: flash 32K block number + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Blk32_Erase(SPI_Flash_Cfg_Type *flashCfg,uint32_t blkNum) +{ + uint32_t cnt=0; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + BL_Err_Type stat=SFlash_Write_Enable(flashCfg); + if(stat!=SUCCESS){ + return stat; + } + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + flashCmd.cmdBuf[0]=(flashCfg->blk32EraseCmd<<24)|(BFLB_SPIFLASH_BLK32K_SIZE*blkNum); + /* rwFlag don't care */ + flashCmd.rwFlag=SF_CTRL_READ; + flashCmd.addrSize=3; + + SF_Ctrl_SendCmd(&flashCmd); + + while(SET==SFlash_Busy(flashCfg)){ + BL702_Delay_US(500); + cnt++; + if(cnt>flashCfg->timeE32k*3){ + return ERROR; + } + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Erase flash one 64K block + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param blkNum: flash 64K block number + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Blk64_Erase(SPI_Flash_Cfg_Type *flashCfg,uint32_t blkNum) +{ + SF_Ctrl_Cmd_Cfg_Type flashCmd; + uint32_t cnt=0; + BL_Err_Type stat=SFlash_Write_Enable(flashCfg); + + if(stat!=SUCCESS){ + return stat; + } + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + flashCmd.cmdBuf[0]=(flashCfg->blk64EraseCmd<<24)|(BFLB_SPIFLASH_BLK64K_SIZE*blkNum); + /* rwFlag don't care */ + flashCmd.rwFlag=SF_CTRL_READ; + flashCmd.addrSize=3; + + SF_Ctrl_SendCmd(&flashCmd); + + while(SET==SFlash_Busy(flashCfg)){ + BL702_Delay_US(500); + cnt++; + if(cnt>flashCfg->timeE64k*3){ + return ERROR; + } + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Erase flash one region + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param startaddr: start address to erase + * @param endaddr: end address(include this address) to erase + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Erase(SPI_Flash_Cfg_Type *flashCfg,uint32_t startaddr,uint32_t endaddr) +{ + uint32_t len=0; + uint32_t eraseLen=0; + BL_Err_Type ret=SUCCESS; + + while(startaddr<=endaddr){ + len=endaddr-startaddr+1; + if(flashCfg->blk64EraseCmd!=BFLB_SPIFLASH_CMD_INVALID && + (startaddr&(BFLB_SPIFLASH_BLK64K_SIZE-1))==0 && + len>(BFLB_SPIFLASH_BLK64K_SIZE-flashCfg->sectorSize*1024)){ + /* 64K margin address,and length > 64K-sector size, erase one first */ + ret=SFlash_Blk64_Erase(flashCfg,startaddr/BFLB_SPIFLASH_BLK64K_SIZE); + eraseLen=BFLB_SPIFLASH_BLK64K_SIZE; + }else if( flashCfg->blk32EraseCmd!=BFLB_SPIFLASH_CMD_INVALID && + (startaddr&(BFLB_SPIFLASH_BLK32K_SIZE-1))==0 && + len>(BFLB_SPIFLASH_BLK32K_SIZE-flashCfg->sectorSize*1024)){ + /* 32K margin address,and length > 32K-sector size, erase one first */ + ret=SFlash_Blk32_Erase(flashCfg,startaddr/BFLB_SPIFLASH_BLK32K_SIZE); + eraseLen=BFLB_SPIFLASH_BLK32K_SIZE; + }else{ + /* Sector erase */ + startaddr=((startaddr) & (~(flashCfg->sectorSize*1024 - 1))); + ret=SFlash_Sector_Erase(flashCfg,startaddr/flashCfg->sectorSize/1024); + eraseLen=flashCfg->sectorSize*1024; + } + + startaddr+=eraseLen; + if(ret!=SUCCESS){ + return ERROR; + } + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Program flash one region + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param ioMode: progran mode:SPI mode or QPI mode + * @param addr: start address to be programed + * @param data: data pointer to be programed + * @param len: data length to be programed + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Program(SPI_Flash_Cfg_Type *flashCfg, + SF_Ctrl_IO_Type ioMode,uint32_t addr,uint8_t *data, uint32_t len) +{ + uint8_t * const flashCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + uint32_t i=0,curLen=0; + uint32_t cnt=0; + BL_Err_Type stat; + uint8_t cmd; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + if(SF_CTRL_NIO_MODE==ioMode||SF_CTRL_DO_MODE==ioMode||SF_CTRL_DIO_MODE==ioMode) + { + cmd=flashCfg->pageProgramCmd; + }else if(SF_CTRL_QIO_MODE==ioMode||SF_CTRL_QO_MODE==ioMode){ + flashCmd.addrMode=(SF_Ctrl_Addr_Mode_Type)flashCfg->qppAddrMode; + flashCmd.dataMode=SF_CTRL_DATA_4_LINES; + cmd=flashCfg->qpageProgramCmd; + }else{ + return ERROR; + } + + /* Prepare command */ + flashCmd.rwFlag=SF_CTRL_WRITE; + flashCmd.addrSize=3; + + for(i=0;ipageSize-addr%flashCfg->pageSize; + if(curLen>len-i){ + curLen=len-i; + } + + /* Prepare command */ + BL702_MemCpy_Fast(flashCtrlBuf,data,curLen); + flashCmd.cmdBuf[0]=(cmd<<24)|(addr); + flashCmd.nbData=curLen; + + SF_Ctrl_SendCmd(&flashCmd); + + /* Adjust address and programmed length */ + addr+=curLen; + i+=curLen; + data+=curLen; + + /* Wait for write done */ + cnt=0; + while(SET==SFlash_Busy(flashCfg)){ + BL702_Delay_US(100); + cnt++; + if(cnt>flashCfg->timePagePgm*20){ + return ERROR; + } + } + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Get flash unique ID + * + * @param data: data pointer to store read data + * @param idLen: unique ID len + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SFlash_GetUniqueId(uint8_t *data,uint8_t idLen) +{ + uint8_t * const flashCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + uint8_t cmd,dummyClks; + uint32_t timeOut=0; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + dummyClks=4; + cmd=0x4B; + flashCmd.cmdBuf[0]=(cmd<<24); + flashCmd.rwFlag=SF_CTRL_READ; + flashCmd.dummyClks=dummyClks; + flashCmd.nbData=idLen; + + SF_Ctrl_SendCmd(&flashCmd); + + timeOut=SFCTRL_BUSY_STATE_TIMEOUT; + while(SET==SF_Ctrl_GetBusyState()){ + timeOut--; + if(timeOut==0){ + return; + } + } + + BL702_MemCpy(data,flashCtrlBuf,idLen); +} +#endif + +/****************************************************************************//** + * @brief Get flash jedec ID + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param data: data pointer to store read data + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SFlash_GetJedecId(SPI_Flash_Cfg_Type *flashCfg,uint8_t *data) +{ + uint8_t * const flashCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + uint8_t cmd,dummyClks; + uint32_t timeOut=0; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + dummyClks=flashCfg->jedecIdCmdDmyClk; + cmd=flashCfg->jedecIdCmd; + flashCmd.cmdBuf[0]=(cmd<<24); + flashCmd.rwFlag=SF_CTRL_READ; + flashCmd.dummyClks=dummyClks; + flashCmd.nbData=3; + + SF_Ctrl_SendCmd(&flashCmd); + + timeOut=SFCTRL_BUSY_STATE_TIMEOUT; + while(SET==SF_Ctrl_GetBusyState()){ + timeOut--; + if(timeOut==0){ + return; + } + } + + BL702_MemCpy(data,flashCtrlBuf,3); +} +#endif + +/****************************************************************************//** + * @brief Get flash device ID + * + * @param data: data pointer to store read data + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SFlash_GetDeviceId(uint8_t *data) +{ + uint8_t * const flashCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + uint8_t cmd,dummyClks; + uint32_t timeOut=0; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + uint32_t addr = 0x00000001; + uint8_t readMode = 0xFF; + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + flashCmd.addrMode=SF_CTRL_ADDR_4_LINES; + flashCmd.dataMode=SF_CTRL_DATA_4_LINES; + dummyClks=2; + cmd=0x94; + flashCmd.cmdBuf[0]=(cmd<<24)|(addr); + flashCmd.cmdBuf[1]=(readMode<<24); + flashCmd.rwFlag=SF_CTRL_READ; + flashCmd.addrSize=4; + flashCmd.dummyClks=dummyClks; + flashCmd.nbData=2; + + SF_Ctrl_SendCmd(&flashCmd); + + timeOut=SFCTRL_BUSY_STATE_TIMEOUT; + while(SET==SF_Ctrl_GetBusyState()){ + timeOut--; + if(timeOut==0){ + return; + } + } + + BL702_MemCpy(data,flashCtrlBuf,2); +} +#endif + +/****************************************************************************//** + * @brief Set flash power down + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SFlash_Powerdown(void) +{ + SF_Ctrl_Cmd_Cfg_Type flashCmd; + uint8_t cmd=0; + uint32_t timeOut=0; + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + cmd=0xB9; + flashCmd.cmdBuf[0]=(cmd<<24); + flashCmd.rwFlag=SF_CTRL_WRITE; + + SF_Ctrl_SendCmd(&flashCmd); + + timeOut=SFCTRL_BUSY_STATE_TIMEOUT; + while(SET==SF_Ctrl_GetBusyState()){ + timeOut--; + if(timeOut==0) + return; + } +} +#endif + +/****************************************************************************//** + * @brief Release flash power down for wake up + * + * @param flashCfg: Serial flash parameter configuration pointer + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SFlash_Releae_Powerdown(SPI_Flash_Cfg_Type *flashCfg) +{ + uint8_t cmd; + uint32_t timeOut=0; + + SF_Ctrl_Cmd_Cfg_Type flashCmd; + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + cmd=flashCfg->releasePowerDown; + flashCmd.cmdBuf[0]=(cmd<<24); + flashCmd.rwFlag=SF_CTRL_WRITE; + + SF_Ctrl_SendCmd(&flashCmd); + + timeOut=SFCTRL_BUSY_STATE_TIMEOUT; + while(SET==SF_Ctrl_GetBusyState()){ + timeOut--; + if(timeOut==0) + return; + } +} +#endif + +/****************************************************************************//** + * @brief Sflash restore from power down + * + * @param pFlashCfg: Flash configuration pointer + * @param flashContRead: Whether enable continuous read + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Restore_From_Powerdown(SPI_Flash_Cfg_Type *pFlashCfg,uint8_t flashContRead) +{ + BL_Err_Type stat=SUCCESS; + uint32_t jdecId=0; + uint8_t tmp[8]; + uint8_t ioMode=pFlashCfg->ioMode&0xf; + + /* Wake flash up from power down */ + SFlash_Releae_Powerdown(pFlashCfg); + BL702_Delay_US(120); + + SFlash_GetJedecId(pFlashCfg,(uint8_t *)&jdecId); + + if(SF_CTRL_QO_MODE==ioMode||SF_CTRL_QIO_MODE==ioMode){ + SFlash_Qspi_Enable(pFlashCfg); + } + + if(((pFlashCfg->ioMode>>4)&0x01)==1){ + /* unwrap */ + L1C_Set_Wrap(DISABLE); + }else{ + /* burst wrap */ + L1C_Set_Wrap(ENABLE); + /* For command that is setting register instead of send command, we need write enable */ + SFlash_Write_Enable(pFlashCfg); + SFlash_SetBurstWrap(pFlashCfg); + } + + if(flashContRead){ + stat=SFlash_Read(pFlashCfg,ioMode,1,0x00000000,(uint8_t *)tmp, sizeof(tmp)); + SF_Ctrl_Set_Owner(SF_CTRL_OWNER_IAHB); + }else{ + stat=SFlash_Set_IDbus_Cfg(pFlashCfg,ioMode,0,0,32); + } + return stat; +} +#endif + +/****************************************************************************//** + * @brief Set flash burst wrap config + * + * @param flashCfg: Serial flash parameter configuration pointer + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SFlash_SetBurstWrap(SPI_Flash_Cfg_Type *flashCfg) +{ + uint8_t * const flashCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + uint8_t cmd,dummyClks; + uint32_t wrapData; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + + if(((flashCfg->ioMode>>4)&0x01)==1){ + /* Disable burst wrap ,just return */ + return; + } + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + flashCmd.addrMode=(SF_Ctrl_Addr_Mode_Type)flashCfg->burstWrapDataMode; + flashCmd.dataMode=(SF_Ctrl_Data_Mode_Type)flashCfg->burstWrapDataMode; + dummyClks=flashCfg->burstWrapCmdDmyClk; + cmd=flashCfg->burstWrapCmd; + wrapData=flashCfg->burstWrapData; + BL702_MemCpy4((uint32_t *)flashCtrlBuf,&wrapData,4); + flashCmd.cmdBuf[0]=(cmd<<24); + flashCmd.rwFlag=SF_CTRL_WRITE; + flashCmd.dummyClks=dummyClks; + flashCmd.nbData=1; + + SF_Ctrl_SendCmd(&flashCmd); +} +#endif + +/****************************************************************************//** + * @brief Disable flash burst wrap config + * + * @param flashCfg: Serial flash parameter configuration pointer + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SFlash_DisableBurstWrap(SPI_Flash_Cfg_Type *flashCfg) +{ + uint8_t * const flashCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + uint8_t cmd,dummyClks; + uint32_t wrapData; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + flashCmd.addrMode=(SF_Ctrl_Addr_Mode_Type)flashCfg->deBurstWrapDataMode; + flashCmd.dataMode=(SF_Ctrl_Data_Mode_Type)flashCfg->deBurstWrapDataMode; + dummyClks=flashCfg->deBurstWrapCmdDmyClk; + cmd=flashCfg->deBurstWrapCmd; + wrapData=flashCfg->deBurstWrapData; + BL702_MemCpy4((uint32_t *)flashCtrlBuf,&wrapData,4); + flashCmd.cmdBuf[0]=(cmd<<24); + flashCmd.rwFlag=SF_CTRL_WRITE; + flashCmd.dummyClks=dummyClks; + flashCmd.nbData=1; + + SF_Ctrl_SendCmd(&flashCmd); +} +#endif + +/****************************************************************************//** + * @brief Software reset flash + * + * @param flashCfg: Serial flash parameter configuration pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Software_Reset(SPI_Flash_Cfg_Type *flashCfg) +{ + uint16_t cnt=0; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + /* Reset enable */ + flashCmd.cmdBuf[0]=(flashCfg->resetEnCmd)<<24; + /* rwFlag don't care */ + flashCmd.rwFlag=SF_CTRL_READ; + /* Wait for write done */ + while(SET==SFlash_Busy(flashCfg)){ + BL702_Delay_US(100); + cnt++; + if(cnt>20){ + return ERROR; + } + } + SF_Ctrl_SendCmd(&flashCmd); + + /* Reset */ + flashCmd.cmdBuf[0]=(flashCfg->resetCmd)<<24; + /* rwFlag don't care */ + flashCmd.rwFlag=SF_CTRL_READ; + SF_Ctrl_SendCmd(&flashCmd); + + BL702_Delay_US(50); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Reset flash continous read mode + * + * @param flashCfg: Serial flash parameter configuration pointer + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SFlash_Reset_Continue_Read(SPI_Flash_Cfg_Type *flashCfg) +{ + SF_Ctrl_Cmd_Cfg_Type flashCmd; + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + /* Reset continous read */ + BL702_MemSet(&flashCmd.cmdBuf[0],flashCfg->resetCreadCmd,4); + /* rwFlag don't care */ + flashCmd.rwFlag=SF_CTRL_READ; + flashCmd.addrSize=flashCfg->resetCreadCmdSize; + SF_Ctrl_SendCmd(&flashCmd); +} +#endif + +/****************************************************************************//** + * @brief Set I/D bus read flash configuration in flash controller + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param ioMode: flash controller interface mode + * @param contRead: Wether enable cont read mode + * @param addr: address to read/write + * @param len: data length to read/write + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Set_IDbus_Cfg(SPI_Flash_Cfg_Type *flashCfg, + SF_Ctrl_IO_Type ioMode,uint8_t contRead,uint32_t addr,uint32_t len) +{ + uint8_t cmd,dummyClks; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + uint8_t cmdValid=1; + uint8_t noReadModeCfg=0; + uint8_t cReadSupport=0; + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + SF_Ctrl_Set_Owner(SF_CTRL_OWNER_IAHB); + + if(SF_CTRL_NIO_MODE==ioMode){ + cmd=flashCfg->fastReadCmd; + dummyClks=flashCfg->frDmyClk; + }else if(SF_CTRL_DO_MODE==ioMode){ + flashCmd.dataMode=SF_CTRL_DATA_2_LINES; + cmd=flashCfg->fastReadDoCmd; + dummyClks=flashCfg->frDoDmyClk; + }else if(SF_CTRL_DIO_MODE==ioMode){ + flashCmd.addrMode=SF_CTRL_ADDR_2_LINES; + flashCmd.dataMode=SF_CTRL_DATA_2_LINES; + cmd=flashCfg->fastReadDioCmd; + dummyClks=flashCfg->frDioDmyClk; + }else if(SF_CTRL_QO_MODE==ioMode){ + flashCmd.dataMode=SF_CTRL_DATA_4_LINES; + cmd=flashCfg->fastReadQoCmd; + dummyClks=flashCfg->frQoDmyClk; + }else if(SF_CTRL_QIO_MODE==ioMode){ + flashCmd.addrMode=SF_CTRL_ADDR_4_LINES; + flashCmd.dataMode=SF_CTRL_DATA_4_LINES; + cmd=flashCfg->fastReadQioCmd; + dummyClks=flashCfg->frQioDmyClk; + }else{ + return ERROR; + } + + /*prepare command**/ + flashCmd.rwFlag=SF_CTRL_READ; + flashCmd.addrSize=3; + flashCmd.cmdBuf[0]=(cmd<<24)|addr; + if(SF_CTRL_QIO_MODE==ioMode||SF_CTRL_DIO_MODE==ioMode){ + noReadModeCfg=flashCfg->cReadSupport&0x02; + cReadSupport=flashCfg->cReadSupport&0x01; + if(noReadModeCfg==0){ + /* Read mode must be set*/ + if(cReadSupport==0){ + /* Not support cont read,but we still need set read mode(winbond 80dv)*/ + flashCmd.cmdBuf[1]=(flashCfg->cReadMode<<24); + }else{ + /* Flash support cont read, setting depend on user parameter */ + if(contRead){ + flashCmd.cmdBuf[0]=(addr<<8)|flashCfg->cReadMode; + cmdValid=0; + }else{ + flashCmd.cmdBuf[1]=((!flashCfg->cReadMode)<<24); + } + } + flashCmd.addrSize++; + } + } + flashCmd.dummyClks=dummyClks; + flashCmd.nbData=len; + SF_Ctrl_Flash_Read_Icache_Set(&flashCmd,cmdValid); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Enable I/D bus read from flash + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param ioMode: flash controller interface mode + * @param contRead: Wether enable cont read mode + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_IDbus_Read_Enable(SPI_Flash_Cfg_Type *flashCfg,SF_Ctrl_IO_Type ioMode,uint8_t contRead) +{ + BL_Err_Type stat; + + stat=SFlash_Set_IDbus_Cfg(flashCfg,ioMode,contRead,0,4); + if(SUCCESS!=stat){ + return stat; + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Enable cache read from flash with cache + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param ioMode: flash controller interface mode + * @param contRead: Wether enable cont read mode + * @param wayDisable: cache way disable config + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Cache_Read_Enable(SPI_Flash_Cfg_Type *flashCfg, + SF_Ctrl_IO_Type ioMode,uint8_t contRead,uint8_t wayDisable) +{ + BL_Err_Type stat; + + /* Cache now only support 32 bytes read */ + stat=SFlash_Set_IDbus_Cfg(flashCfg,ioMode,contRead,0,32); + if(SUCCESS!=stat){ + return stat; + } + + return L1C_Cache_Enable_Set(wayDisable); +} +#endif + +/****************************************************************************//** + * @brief Disable read from flash with cache + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +void ATTR_TCM_SECTION SFlash_Cache_Read_Disable(void) +{ + L1C_Cache_Read_Disable(); +} +#endif + +/****************************************************************************//** + * @brief Read data from flash + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param ioMode: flash controller interface mode + * @param contRead: Wether enable cont read mode + * @param addr: flash read start address + * @param data: data pointer to store data read from flash + * @param len: data length to read + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Read(SPI_Flash_Cfg_Type *flashCfg, + SF_Ctrl_IO_Type ioMode,uint8_t contRead,uint32_t addr,uint8_t *data, uint32_t len) +{ + uint8_t * const flashCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + uint32_t curLen,i; + uint8_t cmd,dummyClks; + uint32_t timeOut=0; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + uint8_t noReadModeCfg=0; + uint8_t cReadSupport=0; + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + if(SF_CTRL_NIO_MODE==ioMode){ + cmd=flashCfg->fastReadCmd; + dummyClks=flashCfg->frDmyClk; + }else if(SF_CTRL_DO_MODE==ioMode){ + flashCmd.dataMode=SF_CTRL_DATA_2_LINES; + cmd=flashCfg->fastReadDoCmd; + dummyClks=flashCfg->frDoDmyClk; + }else if(SF_CTRL_DIO_MODE==ioMode){ + flashCmd.addrMode=SF_CTRL_ADDR_2_LINES; + flashCmd.dataMode=SF_CTRL_DATA_2_LINES; + cmd=flashCfg->fastReadDioCmd; + dummyClks=flashCfg->frDioDmyClk; + }else if(SF_CTRL_QO_MODE==ioMode){ + flashCmd.dataMode=SF_CTRL_DATA_4_LINES; + cmd=flashCfg->fastReadQoCmd; + dummyClks=flashCfg->frQoDmyClk; + }else if(SF_CTRL_QIO_MODE==ioMode){ + flashCmd.addrMode=SF_CTRL_ADDR_4_LINES; + flashCmd.dataMode=SF_CTRL_DATA_4_LINES; + cmd=flashCfg->fastReadQioCmd; + dummyClks=flashCfg->frQioDmyClk; + }else{ + return ERROR; + } + + /* Prepare command */ + flashCmd.rwFlag=SF_CTRL_READ; + flashCmd.addrSize=3; + if(SF_CTRL_QIO_MODE==ioMode||SF_CTRL_DIO_MODE==ioMode){ + noReadModeCfg=flashCfg->cReadSupport&0x02; + cReadSupport=flashCfg->cReadSupport&0x01; + if(noReadModeCfg==0){ + /* Read mode must be set*/ + if(cReadSupport==0){ + /* Not support cont read,but we still need set read mode(winbond 80dv)*/ + flashCmd.cmdBuf[1]=(flashCfg->cReadMode<<24); + }else{ + /* Flash support cont read, setting depend on user parameter */ + if(contRead){ + flashCmd.cmdBuf[1]=(flashCfg->cReadMode<<24); + }else{ + flashCmd.cmdBuf[1]=((!flashCfg->cReadMode)<<24); + } + } + flashCmd.addrSize++; + } + } + flashCmd.dummyClks=dummyClks; + + /* Read data */ + for(i=0;i=FLASH_CTRL_BUF_SIZE){ + curLen=FLASH_CTRL_BUF_SIZE; + flashCmd.nbData=curLen; + }else{ + /* Make sf_ctrl word read */ + flashCmd.nbData=((curLen+3)>>2)<<2; + } + + SF_Ctrl_SendCmd(&flashCmd); + + timeOut=SFCTRL_BUSY_STATE_TIMEOUT; + while(SET==SF_Ctrl_GetBusyState()){ + timeOut--; + if(timeOut==0){ + return TIMEOUT; + } + } + BL702_MemCpy_Fast(data,flashCtrlBuf,curLen); + + addr+=curLen; + i+=curLen; + data+=curLen; + } + + return SUCCESS; +} +#endif + +/*@} end of group SFLASH_Public_Functions */ + +/*@} end of group SFLASH */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_sflash_ext.c b/drivers/bl702_driver/std_drv/src/bl702_sflash_ext.c new file mode 100644 index 00000000..c875560d --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_sflash_ext.c @@ -0,0 +1,178 @@ +/** + ****************************************************************************** + * @file bl702_sflash_ext.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2019 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_sflash_ext.h" +#include "bl702_sf_ctrl.h" +#include "l1c_reg.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SFLASH_EXT + * @{ + */ + +/** @defgroup SFLASH_EXT_Private_Macros + * @{ + */ + +/*@} end of group SFLASH_EXT_Private_Macros */ + +/** @defgroup SFLASH_EXT_Private_Types + * @{ + */ + +/*@} end of group SFLASH_EXT_Private_Types */ + +/** @defgroup SFLASH_EXT_Private_Variables + * @{ + */ + +/*@} end of group SFLASH_EXT_Private_Variables */ + +/** @defgroup SFLASH_EXT_Global_Variables + * @{ + */ + +/*@} end of group SFLASH_EXT_Global_Variables */ + +/** @defgroup SFLASH_EXT_Private_Fun_Declaration + * @{ + */ + +/*@} end of group SFLASH_EXT_Private_Fun_Declaration */ + +/** @defgroup SFLASH_EXT_Private_Functions + * @{ + */ + +/*@} end of group SFLASH_EXT_Private_Functions */ + +/** @defgroup SFLASH_EXT_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Read flash register with read command + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param readRegCmd: read command + * @param regValue: register value pointer to store data + * @param regLen: register value length + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Read_Reg_With_Cmd(SPI_Flash_Cfg_Type *flashCfg,uint8_t readRegCmd,uint8_t *regValue,uint8_t regLen) +{ + uint8_t * const flashCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + uint32_t cnt=0; + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + + flashCmd.cmdBuf[0]=readRegCmd<<24; + flashCmd.rwFlag=SF_CTRL_READ; + flashCmd.nbData=regLen; + + SF_Ctrl_SendCmd(&flashCmd); + + while(SET==SF_Ctrl_GetBusyState()){ + BL702_Delay_US(1); + cnt++; + if(cnt>1000){ + return ERROR; + } + } + + BL702_MemCpy(regValue,flashCtrlBuf,regLen); + return SUCCESS; +} + +/****************************************************************************//** + * @brief Write flash register with write command + * + * @param flashCfg: Serial flash parameter configuration pointer + * @param writeRegCmd: write command + * @param regValue: register value pointer storing data + * @param regLen: register value length + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +__WEAK +BL_Err_Type ATTR_TCM_SECTION SFlash_Write_Reg_With_Cmd(SPI_Flash_Cfg_Type *flashCfg,uint8_t writeRegCmd,uint8_t *regValue,uint8_t regLen) +{ + uint8_t * const flashCtrlBuf=(uint8_t *)SF_CTRL_BUF_BASE; + uint32_t cnt=0; + SF_Ctrl_Cmd_Cfg_Type flashCmd; + + if(((uint32_t)&flashCmd)%4==0){ + BL702_MemSet4((uint32_t *)&flashCmd,0,sizeof(flashCmd)/4); + }else{ + BL702_MemSet(&flashCmd,0,sizeof(flashCmd)); + } + BL702_MemCpy(flashCtrlBuf,regValue,regLen); + + flashCmd.cmdBuf[0]=writeRegCmd<<24; + flashCmd.rwFlag=SF_CTRL_WRITE; + flashCmd.nbData=regLen; + + SF_Ctrl_SendCmd(&flashCmd); + + /* take 40ms for tw(write status register) as default */ + while(SET==SFlash_Busy(flashCfg)){ + BL702_Delay_US(100); + cnt++; + if(cnt>400){ + return ERROR; + } + } + + return SUCCESS; +} + +/*@} end of group SFLASH_EXT_Public_Functions */ + +/*@} end of group SFLASH_EXT */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_snflash.c b/drivers/bl702_driver/std_drv/src/bl702_snflash.c new file mode 100644 index 00000000..2de3d4bc --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_snflash.c @@ -0,0 +1,901 @@ +/** + ****************************************************************************** + * @file bl702_snflash.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_snflash.h" +#include "bl702_psram.h" + +#define PSRAM_ADDR (0x24000000) +#define DISK_SECTOR_SIZE (512) +#define PSRAM_READ_ERITE_SIZE (256) + +static void Nandflash_Erase(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t blockNum); +static void Nandflash_PageReadToPsram(uint32_t addr, uint32_t len); +static void ATTR_TCM_SECTION Nandflash_Psram_Write(uint8_t *buff, uint32_t len, uint32_t psramWriteOffsite); +static void ATTR_TCM_SECTION Nandflash_Psram_Read(uint8_t *buff, uint32_t readLen, uint32_t psramReadOffsite); +static void Nandflash_PageWriteToPsram(const uint8_t *buff, uint32_t addr, uint32_t len); +static void Nandflash_PageProgramFromPsram(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t blockNum); + +NANDFLASH_CFG_Type nfCfg = { + .spiNo = SPI_ID_0, + .spiCfg = { + DISABLE, /* Disable de-glitch function */ + DISABLE, /* Disable master continuous transfer mode */ + SPI_BYTE_INVERSE_BYTE0_FIRST, /* The byte 0 is sent first in SPI transfer */ + SPI_BIT_INVERSE_MSB_FIRST, /* MSB is sent first in SPI transfer */ + SPI_CLK_PHASE_INVERSE_0, /* SPI clock phase */ + SPI_CLK_POLARITY_LOW, /* SPI clock plarity */ + SPI_FRAME_SIZE_8 /* SPI frame size 8-bit(also the valid width for each fifo entry) */ + }, + .clockCfg = { + 1, /* Length of start condition */ + 1, /* Length of stop condition */ + 1, /* Length of data phase 0,affecting clock */ + 1, /* Length of data phase 1,affecting clock */ + 1 /* Length of interval between frame */ + } +}; + +static void ATTR_TCM_SECTION Nandflash_Psram_Write(uint8_t *buff, uint32_t len, uint32_t psramWriteOffsite) +{ + uint32_t i = 0; + uint32_t psramStartAddr = PSRAM_ADDR + psramWriteOffsite; + + for(i = 0; i < len / PSRAM_READ_ERITE_SIZE; i ++){ + BL702_MemCpy_Fast((void *)(psramStartAddr + i * PSRAM_READ_ERITE_SIZE), buff, PSRAM_READ_ERITE_SIZE); + buff += PSRAM_READ_ERITE_SIZE; + } + + /*if len is not an integral multiple of PSRAM_READ_ERITE_SIZE need memcpy once again*/ + if (len % PSRAM_READ_ERITE_SIZE != 0){ + BL702_MemCpy_Fast((void *)(psramStartAddr + i * PSRAM_READ_ERITE_SIZE), buff, len % PSRAM_READ_ERITE_SIZE); + buff += (len % PSRAM_READ_ERITE_SIZE); + } +} + +static void ATTR_TCM_SECTION Nandflash_Psram_Read(uint8_t *buff, uint32_t readLen, uint32_t psramReadOffsite) +{ + uint32_t i = 0; + uint32_t psramStartAddr = PSRAM_ADDR + psramReadOffsite; + for(i = 0; i < readLen / PSRAM_READ_ERITE_SIZE; i ++){ + BL702_MemCpy_Fast(buff, (void *)(psramStartAddr + i * PSRAM_READ_ERITE_SIZE), PSRAM_READ_ERITE_SIZE); + buff += PSRAM_READ_ERITE_SIZE; + } + + /*if len is not an integral multiple of PSRAM_READ_ERITE_SIZE need memcpy once again*/ + if (readLen % PSRAM_READ_ERITE_SIZE != 0){ + BL702_MemCpy_Fast(buff, (void *)(psramStartAddr + i * PSRAM_READ_ERITE_SIZE), readLen % PSRAM_READ_ERITE_SIZE); + } + +} + +void ATTR_TCM_SECTION Nandflash_Psram_Cfg() +{ + GLB_GPIO_Cfg_Type gpioCfg = { + .gpioPin = GLB_GPIO_PIN_17, + .gpioFun = GPIO17_FUN_SF_IO_0_SF2_CS2, + .gpioMode = GPIO_MODE_OUTPUT, + .pullType = GPIO_PULL_UP, + .drive = 3, + .smtCtrl = 1, + }; + + SPI_Psram_Cfg_Type apMemory1604 = { + .readIdCmd = 0x9F, + .readIdDmyClk = 0, + .burstToggleCmd = 0xC0, + .resetEnableCmd = 0x66, + .resetCmd = 0x99, + .enterQuadModeCmd = 0x35, + .exitQuadModeCmd = 0xF5, + .readRegCmd = 0xB5, + .readRegDmyClk = 1, + .writeRegCmd = 0xB1, + .readCmd = 0x03, + .readDmyClk = 0, + .fReadCmd = 0x0B, + .fReadDmyClk = 1, + .fReadQuadCmd = 0xEB, + .fReadQuadDmyClk = 3, + .writeCmd = 0x02, + .quadWriteCmd = 0x38, + .pageSize = 512, + .ctrlMode = PSRAM_SPI_CTRL_MODE, + .driveStrength = PSRAM_DRIVE_STRENGTH_50_OHMS, + .burstLength = PSRAM_BURST_LENGTH_512_BYTES, + }; + + SF_Ctrl_Cmds_Cfg cmdsCfg = { + .cmdsEn = ENABLE, + .burstToggleEn = ENABLE, + .wrapModeEn = DISABLE, + .wrapLen = SF_CTRL_WRAP_LEN_512, + }; + + SF_Ctrl_Psram_Cfg sfCtrlPsramCfg = { + .owner = SF_CTRL_OWNER_SAHB, + .padSel = SF_CTRL_PAD_SEL_DUAL_CS_SF2, + .bankSel = SF_CTRL_SEL_PSRAM, + .psramRxClkInvertSrc = ENABLE, + .psramRxClkInvertSel = ENABLE, + .psramDelaySrc = ENABLE, + .psramClkDelay = 0, + }; + uint8_t psramId[8] = {0}; + uint32_t wt_en = 1; + uint32_t wb_en = 0; + uint32_t wa_en = 0; + uint32_t i = 0; + + GLB_GPIO_Init(&gpioCfg); + + Psram_Init(&apMemory1604, &cmdsCfg, &sfCtrlPsramCfg); + Psram_SoftwareReset(&apMemory1604, apMemory1604.ctrlMode); + Psram_ReadId(&apMemory1604, psramId); + + Psram_Cache_Write_Set(&apMemory1604, SF_CTRL_QIO_MODE, wt_en, wb_en, wa_en); + L1C_Cache_Enable_Set(0x0f); + +} + +void Nandflash_Gpio_Init(GLB_GPIO_Type clk, GLB_GPIO_Type mosi, GLB_GPIO_Type miso) +{ + GLB_GPIO_Cfg_Type gpioCfg={ + .gpioPin=GLB_GPIO_PIN_0, + .gpioFun=GPIO_FUN_SPI0, + .gpioMode=GPIO_MODE_OUTPUT, + .pullType=GPIO_PULL_NONE, + .drive=0, + .smtCtrl=1 + }; + + /* cs */ + gpioCfg.gpioPin = SPI_PIN_CS; + gpioCfg.gpioFun = 11; + GLB_GPIO_Init(&gpioCfg); + GLB_GPIO_INPUT_Disable(gpioCfg.gpioPin); + GLB_GPIO_OUTPUT_Enable(gpioCfg.gpioPin); + Nandflash_CS_High(); + + /* clk */ + gpioCfg.gpioPin = clk; + gpioCfg.gpioFun = GPIO_FUN_SPI0; + GLB_GPIO_Init(&gpioCfg); + GLB_GPIO_INPUT_Disable(gpioCfg.gpioPin); + GLB_GPIO_OUTPUT_Enable(gpioCfg.gpioPin); + + /* mosi */ + gpioCfg.gpioPin = mosi; + gpioCfg.gpioFun = GPIO_FUN_SPI0; + GLB_GPIO_Init(&gpioCfg); + GLB_GPIO_INPUT_Enable(gpioCfg.gpioPin); + GLB_GPIO_OUTPUT_Enable(gpioCfg.gpioPin); + + /* miso */ + gpioCfg.gpioPin = miso; + gpioCfg.gpioFun = GPIO_FUN_SPI0; + GLB_GPIO_Init(&gpioCfg); + GLB_GPIO_INPUT_Enable(gpioCfg.gpioPin); + GLB_GPIO_OUTPUT_Enable(gpioCfg.gpioPin); + + GLB_Set_SPI_0_ACT_MOD_Sel(GLB_SPI_PAD_ACT_AS_MASTER); +} + +void Nandflash_CS_High(void) +{ + GLB_GPIO_Write(SPI_PIN_CS,1); +} + +void Nandflash_CS_Low(void) +{ + GLB_GPIO_Write(SPI_PIN_CS,0); +} + +void Nandflash_Clock_Init(uint8_t enable, uint8_t div) +{ + GLB_Set_SPI_CLK(enable,div); + GLB_AHB_Slave1_Clock_Gate(DISABLE,BL_AHB_SLAVE1_SPI); +} + +void Nandflash_SPI_Init(NANDFLASH_CFG_Type *pNandflashCfg) +{ + SPI_Disable(SPI_ID_0,SPI_WORK_MODE_MASTER); + SPI_IntMask(SPI_ID_0,SPI_INT_ALL,MASK); + SPI_Init(pNandflashCfg->spiNo,&(pNandflashCfg->spiCfg)); + SPI_ClockConfig(pNandflashCfg->spiNo,&(pNandflashCfg->clockCfg)); + SPI_Enable(SPI_ID_0,SPI_WORK_MODE_MASTER); +} + +void Nandflash_SendRecv(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *sendBuff, uint8_t *recvBuff, uint32_t len) +{ + SPI_SendRecv_8bits(pNandflashCfg->spiNo, sendBuff, recvBuff, len, SPI_TIMEOUT_DISABLE); +} + +void Nandflash_WriteEnable(NANDFLASH_CFG_Type *pNandflashCfg) +{ + uint8_t cmd[1] = {0}; + uint8_t pBlockLock = 0xff; + + cmd[0] = NANDFLASH_WRITE_ENABLE; + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 1, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); + + /*check block lock status*/ + Nandflash_Get_BlockLock(pNandflashCfg, &pBlockLock); + if (pBlockLock != 0){ + // MSG_ERR("Get BlockLock in Nandflash Write Enable and return %0x\r\n", pBlockLock); + } +} + +void Nandflash_WriteDisable(NANDFLASH_CFG_Type *pNandflashCfg) +{ + uint8_t cmd[1] = {0}; + + cmd[0] = NANDFLASH_WRITE_DISABLE; + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 1, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); +} + +void Nandflash_Get_BlockLock(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pBlockLock) +{ + uint8_t cmd[2] = {0}; + uint8_t ack[1] = {0}; + + cmd[0] = NANDFLASH_GET_FEATURES; + cmd[1] = NANDFLASH_BLOCK_LOCK_ADDR; + + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 2, SPI_TIMEOUT_DISABLE); + SPI_Recv_8bits(pNandflashCfg->spiNo, ack, 1, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); + + *pBlockLock = ack[0]; +} + +void Nandflash_Set_BlockLock(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pBlockLock) +{ + uint8_t cmd[3] = {0}; + + cmd[0] = NANDFLASH_SET_FEATURES; + cmd[1] = NANDFLASH_BLOCK_LOCK_ADDR; + cmd[2] = *pBlockLock; + + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 3, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); +} + +void Nandflash_Get_Feature(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pFeature) +{ + uint8_t cmd[2] = {0}; + uint8_t ack[1] = {0}; + + cmd[0] = NANDFLASH_GET_FEATURES; + cmd[1] = NANDFLASH_FEATURE_ADDR; + + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 2, SPI_TIMEOUT_DISABLE); + SPI_Recv_8bits(pNandflashCfg->spiNo, ack, 1, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); + + *pFeature = ack[0]; +} + +void Nandflash_Set_Feature(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pFeature) +{ + uint8_t cmd[3] = {0}; + + cmd[0] = NANDFLASH_GET_FEATURES; + cmd[1] = NANDFLASH_FEATURE_ADDR; + cmd[2] = *pFeature; + + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 3, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); +} + +void Nandflash_Get_Status(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pStatus) +{ + uint8_t cmd[2] = {0}; + uint8_t ack[1] = {0}; + + cmd[0] = NANDFLASH_GET_FEATURES; + cmd[1] = NANDFLASH_STATUS_ADDR; + + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 2, SPI_TIMEOUT_DISABLE); + SPI_Recv_8bits(pNandflashCfg->spiNo, ack, 1, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); + + *pStatus = ack[0]; +} + +void Nandflash_Set_Status(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pStatus) +{ + uint8_t cmd[3] = {0}; + + cmd[0] = NANDFLASH_GET_FEATURES; + cmd[1] = NANDFLASH_STATUS_ADDR; + cmd[2] = *pStatus; + + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 3, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); +} + +NANDFLASH_ECC_Type Nandflash_CheckBadBlock(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t blockNum, uint8_t *buff, uint32_t len) +{ + uint32_t pageNum = 0, pageAddr = 0; + NANDFLASH_ECC_Type ecc = 0; + + pageNum = blockNum * NANDFLASH_PAGES_PER_BLOCK; + + pageAddr = pageNum * NANDFLASH_PAGE_SIZE; + + if (len){ + //read to cache + ecc = Nandflash_PageReadToCache(pNandflashCfg, pageAddr); + + /* read from cache */ + Nandflash_ReadFromCache(pNandflashCfg, NANDFLASH_PAGE_SIZE, buff, len); + } + + return ecc; +} + +NANDFLASH_ECC_Type Nandflash_PageRead(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr, uint8_t *buff, uint32_t len) +{ + NANDFLASH_ECC_Type ecc = 0; + uint32_t pageAddr = addr & 0xFFFFF800; + uint32_t readLen = 0; + uint32_t pageOffset = addr - pageAddr; + + if((pageOffset + len) <= NANDFLASH_PAGE_SIZE){ + readLen = len; + }else{ + readLen = NANDFLASH_PAGE_SIZE - pageOffset; + } + + memset(buff, 0 ,len); + + if(readLen){ + /* read to cache */ + ecc = Nandflash_PageReadToCache(pNandflashCfg, pageAddr); + + /* read from cache */ + Nandflash_ReadFromCache(pNandflashCfg, pageOffset, buff, readLen); + } + + return ecc; +} + + +NANDFLASH_ECC_Type Nandflash_PagesRead(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr, uint8_t *buff, uint32_t len) +{ + NANDFLASH_ECC_Type ecc = 0; + uint32_t startPageNum = 0, endPageNum = 0, absolutePageNum = 0; + uint32_t readLen = 0, pageOffset = 0, beginAddr = addr; + + startPageNum = addr / NANDFLASH_PAGE_SIZE; + endPageNum = (addr + len - 1) / NANDFLASH_PAGE_SIZE; + + memset(buff, 0 ,len); + + if (len > 0){ + for (absolutePageNum = startPageNum; absolutePageNum <= endPageNum; absolutePageNum ++){ + pageOffset = addr % NANDFLASH_PAGE_SIZE; + + if (absolutePageNum == startPageNum){ + if (beginAddr + len >= NANDFLASH_PAGE_SIZE){ + readLen = (startPageNum + 1) * NANDFLASH_PAGE_SIZE - beginAddr; + }else{ + readLen = len; + } + }else if ((startPageNum < absolutePageNum) && (absolutePageNum < endPageNum)){ + readLen = NANDFLASH_PAGE_SIZE; + }else if (absolutePageNum == endPageNum){ + readLen = (beginAddr + len) - (endPageNum * NANDFLASH_PAGE_SIZE); + } + + /* read to cache */ + ecc = Nandflash_PageReadToCache(pNandflashCfg, absolutePageNum * NANDFLASH_PAGE_SIZE); + /* read from cache */ + Nandflash_ReadFromCache(pNandflashCfg, pageOffset, buff, readLen); + + addr = (absolutePageNum + 1) * NANDFLASH_PAGE_SIZE; + buff += readLen; + } + } + + return ecc; +} +NANDFLASH_ECC_Type Nandflash_PageReadToCache(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr) +{ + uint8_t feature = 0; + uint8_t cmd[4] = {0}; + uint8_t status = 0xff; + uint8_t pBlockLock = 0xff; + NANDFLASH_ECC_Type ecc = 0; + uint32_t blockNum = 0; + uint32_t pageNum = 0; + uint32_t absolutePageNum = 0; + uint16_t cmds = 0; + /* enable ECC */ + Nandflash_Get_Feature(pNandflashCfg, &feature); + ((NANDFLASH_FEATURE_Type *)(&feature))->ECC_EN = 1; + Nandflash_Set_Feature(pNandflashCfg, &feature); + + absolutePageNum = addr / NANDFLASH_PAGE_SIZE; + blockNum = absolutePageNum / NANDFLASH_PAGES_PER_BLOCK; + pageNum = absolutePageNum % NANDFLASH_PAGES_PER_BLOCK; + /* page read to cache */ + cmd[0] = NANDFLASH_PAGE_READ_TO_CACHE; + cmd[1] = NANDFLASH_DUMMY_BYTE; + cmds = (uint16_t)(blockNum << 6) | (uint16_t)pageNum; + cmd[2] = (uint8_t)(cmds >> 8); + cmd[3] = (uint8_t)(cmds >> 0); + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 4, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); + + /*check block lock status*/ + Nandflash_Get_BlockLock(pNandflashCfg, &pBlockLock); + if (pBlockLock != 0){ + // MSG_ERR("Get BlockLock in Nandflash PageRead To Cache and return %0x\r\n", pBlockLock); + } + + BL702_Delay_MS(20); + /* Operation In Progress */ + do{ + Nandflash_Get_Status(pNandflashCfg, &status); + }while((((NANDFLASH_STATUS_Type *)(&status))->OIP)); + + /* get ecc */ + Nandflash_Get_Status(pNandflashCfg, &status); + ecc = status; + + return ecc; +} + +void Nandflash_ReadFromCache(NANDFLASH_CFG_Type *pNandflashCfg, uint16_t offset, uint8_t *buff, uint32_t len) +{ + uint32_t readLen = len; + uint8_t cmd[4] = {0}; + uint8_t pBlockLock = 0xff; + + if(!buff){ + return ; + } + + if(readLen>NANDFLASH_PAGE_SIZE){ + readLen = NANDFLASH_PAGE_SIZE; + } + + /* read from cache */ + cmd[0] = NANDFLASH_READ_FROM_CACHE; + cmd[1] = (uint8_t)((offset >> 8) & 0x0F); + cmd[2] = (uint8_t)((offset >> 0) & 0xFF); + cmd[3] = NANDFLASH_DUMMY_BYTE; + + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 4, SPI_TIMEOUT_DISABLE); + SPI_Recv_8bits(pNandflashCfg->spiNo, buff, readLen, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); + + /*check block lock status*/ + Nandflash_Get_BlockLock(pNandflashCfg, &pBlockLock); + if (pBlockLock != 0){ + // MSG_ERR("Get BlockLock in Nandflash Read From Cache Erase and return %0x\r\n", pBlockLock); + } +} + +void Nandflash_ReadID(NANDFLASH_CFG_Type *pNandflashCfg, uint8_t *pManufactureID, uint8_t *pDeviceID) +{ + uint8_t cmd[2] = {0}; + uint8_t ack[2] = {0}; + + cmd[0] = NANDFLASH_READ_ID; + cmd[1] = NANDFLASH_DUMMY_BYTE; + + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 2, SPI_TIMEOUT_DISABLE); + SPI_Recv_8bits(pNandflashCfg->spiNo, ack, 2, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); + + *pManufactureID = ack[0]; + *pDeviceID = ack[1]; +} + +void Nandflash_PageProgram(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr, const uint8_t *buff, uint32_t len) +{ + uint32_t pageAddr = addr & 0xFFFFF800; + uint32_t writeLen = 0; + uint32_t pageOffset = addr - pageAddr; + + if((pageOffset + len) <= NANDFLASH_PAGE_SIZE){ + writeLen = len; + }else{ + writeLen = NANDFLASH_PAGE_SIZE - pageOffset; + } + + + if(writeLen){ + /* program load */ + Nandflash_ProgramLoad(pNandflashCfg, pageOffset, buff, writeLen); + + /* write enable */ + Nandflash_WriteEnable(pNandflashCfg); + + /* program execute */ + Nandflash_ProgramExecute(pNandflashCfg, pageAddr); + } + + return ; +} + + +void Nandflash_PagesProgram(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr, const uint8_t *buff, uint32_t len) +{ + int32_t startPageNum = 0, endPageNum = 0, absolutePageNum = 0; + uint32_t writeLen = 0, pageAddr = 0; + uint32_t pageOffset = 0, begin_addr = addr; + + startPageNum = addr / NANDFLASH_PAGE_SIZE; + endPageNum = (addr + len - 1) / NANDFLASH_PAGE_SIZE; + + if (len > 0){ + for (absolutePageNum = startPageNum; absolutePageNum <= endPageNum; absolutePageNum++){ + + pageOffset = 0; + pageAddr = absolutePageNum * NANDFLASH_PAGE_SIZE; + + if (absolutePageNum == startPageNum){ + if (begin_addr + len >= NANDFLASH_PAGE_SIZE){ + writeLen = (startPageNum + 1) * NANDFLASH_PAGE_SIZE - begin_addr; + }else{ + writeLen = len; + } + pageOffset = begin_addr % NANDFLASH_PAGE_SIZE; + }else if ((startPageNum < absolutePageNum) && (absolutePageNum < endPageNum)){ + writeLen = NANDFLASH_PAGE_SIZE; + pageOffset = 0; + }else if (absolutePageNum == endPageNum){ + writeLen = (begin_addr + len) - (endPageNum * NANDFLASH_PAGE_SIZE); + pageOffset = 0; + } + + if(writeLen){ + /* program load */ + Nandflash_ProgramLoad(pNandflashCfg, pageOffset, buff, writeLen); + + /* write enable */ + Nandflash_WriteEnable(pNandflashCfg); + + /* program execute */ + Nandflash_ProgramExecute(pNandflashCfg, pageAddr); + } + buff += writeLen; + } + } +} + +void Nandflash_ProgramLoad(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t pageOffset, const uint8_t *buff, uint32_t len) +{ + uint8_t cmd[3] = {0}; + uint32_t writeLen = len; + uint8_t pBlockLock = 0xff; + + if(!buff){ + return ; + } + + if(len > NANDFLASH_PAGE_SIZE){ + writeLen = NANDFLASH_PAGE_SIZE; + }else{ + + } + + cmd[0] = NANDFLASH_PROGRAM_LOAD; + cmd[1] = (uint8_t)((pageOffset >> 8) & 0x0F); + cmd[2] = (uint8_t)((pageOffset >> 0) & 0xFF); + + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 3, SPI_TIMEOUT_DISABLE); + SPI_Send_8bits(pNandflashCfg->spiNo, (uint8_t *)buff, writeLen, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); + + /*check block lock status*/ + Nandflash_Get_BlockLock(pNandflashCfg, &pBlockLock); + if (pBlockLock != 0){ + // MSG_ERR("Get BlockLock in Nandflash Program Load and return %0x\r\n", pBlockLock); + } +} + +void Nandflash_ProgramExecute(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr) +{ + uint8_t feature = 0; + uint8_t cmd[4] = {0}; + uint8_t status = 0xff; + uint8_t pBlockLock = 0xff; + uint32_t absolutePageNum = 0; + uint16_t cmds = 0; + uint32_t blockNum = 0; + uint32_t pageNum = 0; + absolutePageNum = addr / NANDFLASH_PAGE_SIZE; + blockNum = absolutePageNum / NANDFLASH_PAGES_PER_BLOCK; + pageNum = absolutePageNum % NANDFLASH_PAGES_PER_BLOCK; + + /* enable ECC */ + Nandflash_Get_Feature(pNandflashCfg, &feature); + ((NANDFLASH_FEATURE_Type *)(&feature))->ECC_EN = 1; + Nandflash_Set_Feature(pNandflashCfg, &feature); + + /* program execute */ + cmd[0] = NANDFLASH_PROGRAM_EXECUTE; + cmd[1] = NANDFLASH_DUMMY_BYTE; + cmds = (uint16_t)(blockNum << 6) | (uint16_t)pageNum; + cmd[2] = (uint8_t)(cmds >> 8); + cmd[3] = (uint8_t)(cmds >> 0); + + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 4, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); + + /*check block lock status*/ + Nandflash_Get_BlockLock(pNandflashCfg, &pBlockLock); + if (pBlockLock != 0){ + // MSG_ERR("Get BlockLock in Nandflash Program Execute and return %0x\r\n", pBlockLock); + } + + /* Operation In Progress */ + do{ + Nandflash_Get_Status(pNandflashCfg, &status); + }while((((NANDFLASH_STATUS_Type *)(&status))->OIP)); +} + +void Nandflash_InternalDataMove(NANDFLASH_CFG_Type *pNandflashCfg) +{ + +} + +void Nandflash_ProgramLoadRandomData(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr, uint8_t *buff, uint32_t len) +{ + +} + +static void Nandflash_Erase(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t blockNum) +{ + uint8_t cmd[4] = {0}; + uint16_t cmds = 0; + uint8_t pBlockLock = 0xff; + + /* block erase */ + cmd[0] = NANDFLASH_BLOCK_ERASE; + cmd[1] = NANDFLASH_DUMMY_BYTE; + cmds = (uint16_t)(blockNum << 6); + cmd[2] = (uint8_t)(cmds >> 8); + cmd[3] = (uint8_t)(cmds >> 0); + + Nandflash_CS_High(); + Nandflash_CS_Low(); + SPI_Send_8bits(pNandflashCfg->spiNo, cmd, 4, SPI_TIMEOUT_DISABLE); + Nandflash_CS_High(); + + /*check block lock status*/ + Nandflash_Get_BlockLock(pNandflashCfg, &pBlockLock); + if (pBlockLock != 0){ + // MSG_ERR("Get BlockLock in Nandflash Erase and return %0x\r\n", pBlockLock); + } +} + +void Nandflash_BlockErase(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t addr) +{ + uint8_t status = 0xff; + uint32_t blockNum = 0; + blockNum = addr / NANDFLASH_BLOCK_SIZE; + + Nandflash_WriteEnable(pNandflashCfg); + Nandflash_Erase(pNandflashCfg, blockNum); + + /* Operation In Progress */ + do{ + Nandflash_Get_Status(pNandflashCfg, &status); + }while((((NANDFLASH_STATUS_Type *)(&status))->OIP)); +} + +void Nandflash_Reset(NANDFLASH_CFG_Type *pNandflashCfg) +{ + +} + + +void Nandflash_WriteUnprotect(NANDFLASH_CFG_Type *pNandflashCfg) +{ + +} + +NANDFLASH_ECC_Type Nandflash_Check_ECC_Status(NANDFLASH_CFG_Type *pNandflashCfg) +{ + return NO_BIT_ERROR; +} + + + +int Nandflash_Disk_Status(void) +{ + return 0; +} + +int Nandflash_Disk_Initialize(void) +{ + return 0; +} + +int Nandflash_Disk_Read(BYTE *buff, LBA_t sector, UINT count) +{ + //512 bytes in a sector + uint32_t startAddr = sector * DISK_SECTOR_SIZE; + uint32_t len = count * DISK_SECTOR_SIZE; + NANDFLASH_ECC_Type ecc = 0; + + if (len > 0){ + ecc = Nandflash_PagesRead(&nfCfg, startAddr, buff, len); + } + return 0; +} + +void Nandflash_PageReadToPsram(uint32_t addr, uint32_t len) +{ + uint32_t startPageNum = 0, endPageNum = 0, absolutePageNum = 0; + uint32_t beginAddr = addr, psramWriteOffsite = 0; + uint8_t readBuff[NANDFLASH_PAGE_SIZE]; + + startPageNum = addr / NANDFLASH_PAGE_SIZE; + endPageNum = (addr + len - 1) / NANDFLASH_PAGE_SIZE; + + if (len > 0){ + for (absolutePageNum = startPageNum; absolutePageNum <= endPageNum; absolutePageNum ++){ + memset(readBuff, 0 ,sizeof(readBuff)); + + Nandflash_PageRead(&nfCfg, beginAddr, readBuff, NANDFLASH_PAGE_SIZE); + Nandflash_Psram_Write(readBuff, NANDFLASH_PAGE_SIZE, psramWriteOffsite); + + beginAddr = (absolutePageNum + 1) * NANDFLASH_PAGE_SIZE; + psramWriteOffsite += NANDFLASH_PAGE_SIZE; + } + } +} + +static void Nandflash_PageWriteToPsram(const uint8_t *buff, uint32_t psramWriteOffsite, uint32_t len) +{ + if (len > 0){ + return Nandflash_Psram_Write((uint8_t *)buff, len, psramWriteOffsite); + } +} + +static void Nandflash_PageProgramFromPsram(NANDFLASH_CFG_Type *pNandflashCfg, uint32_t blockNum) +{ + uint8_t psramReadBuf[NANDFLASH_PAGE_SIZE]; + uint32_t startPageNum = 0, endPageNum = 0, absolutePageNum = 0; + uint32_t psramReadOffsite = 0; + + startPageNum = blockNum * NANDFLASH_PAGES_PER_BLOCK; + endPageNum = (blockNum + 1) * NANDFLASH_PAGES_PER_BLOCK - 1; + + for (absolutePageNum = startPageNum; absolutePageNum <= endPageNum; absolutePageNum++){ + memset(psramReadBuf, 0, NANDFLASH_PAGE_SIZE); + Nandflash_Psram_Read(psramReadBuf, NANDFLASH_PAGE_SIZE, psramReadOffsite); + Nandflash_PageProgram(pNandflashCfg, absolutePageNum * NANDFLASH_PAGE_SIZE, psramReadBuf, NANDFLASH_PAGE_SIZE); + psramReadOffsite += NANDFLASH_PAGE_SIZE; + } +} + +int Nandflash_Disk_Write(const BYTE *buff, LBA_t sector, UINT count) +{ + uint32_t addr = sector * DISK_SECTOR_SIZE; + uint32_t len = count * DISK_SECTOR_SIZE; + uint32_t startBlockNum = 0, endBlockNum = 0, absoluteBlockNum = 0; + uint32_t writeLen = 0, beginAddr = addr; + + startBlockNum = addr / NANDFLASH_BLOCK_SIZE; + endBlockNum = (addr + len - 1) / NANDFLASH_BLOCK_SIZE; + + if (len > 0){ + Nandflash_Psram_Cfg(); + for (absoluteBlockNum = startBlockNum; absoluteBlockNum <= endBlockNum; absoluteBlockNum ++){ + if (absoluteBlockNum == startBlockNum){ + if (addr + len >= NANDFLASH_BLOCK_SIZE){ + writeLen = (absoluteBlockNum + 1) * NANDFLASH_BLOCK_SIZE - addr; + }else{ + writeLen = len; + } + }else if ((startBlockNum < absoluteBlockNum) && (absoluteBlockNum < endBlockNum)){ + writeLen = NANDFLASH_BLOCK_SIZE; + }else if (absoluteBlockNum == endBlockNum){ + writeLen = (addr + len) - (endBlockNum * NANDFLASH_BLOCK_SIZE); + } + + /*read data from block to psram*/ + Nandflash_PageReadToPsram(absoluteBlockNum * NANDFLASH_BLOCK_SIZE, NANDFLASH_BLOCK_SIZE); + /*update program data to psram*/ + Nandflash_PageWriteToPsram(buff, beginAddr % NANDFLASH_BLOCK_SIZE, writeLen); + /*erase block*/ + Nandflash_BlockErase(&nfCfg, absoluteBlockNum * NANDFLASH_BLOCK_SIZE); + /*program data from psram to block*/ + Nandflash_PageProgramFromPsram(&nfCfg, absoluteBlockNum); + + buff += writeLen; + beginAddr = (absoluteBlockNum + 1) * NANDFLASH_BLOCK_SIZE; + } + } + + return 0; +} + +int Nandflash_Disk_Ioctl(BYTE cmd, void *buff) +{ + return 0; +} + +void Nandflash_Init() +{ + Nandflash_Gpio_Init(SPI_PIN_CLK, SPI_PIN_MISO, SPI_PIN_MOSI); + Nandflash_Clock_Init(ENABLE, 0x1F); + Nandflash_SPI_Init(&nfCfg); +} + + + + + + + + + diff --git a/drivers/bl702_driver/std_drv/src/bl702_spi.c b/drivers/bl702_driver/std_drv/src/bl702_spi.c new file mode 100644 index 00000000..a3e5b27b --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_spi.c @@ -0,0 +1,1713 @@ +/** + ****************************************************************************** + * @file bl702_spi.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_spi.h" +#include "bl702_glb.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup SPI + * @{ + */ + +/** @defgroup SPI_Private_Macros + * @{ + */ +#define SPI_TX_TIMEOUT_COUNT (160*1000) +#define SPI_RX_TIMEOUT_COUNT (160*1000) + +/*@} end of group SPI_Private_Macros */ + +/** @defgroup SPI_Private_Types + * @{ + */ + +/*@} end of group SPI_Private_Types */ + +/** @defgroup SPI_Private_Variables + * @{ + */ +static const uint32_t spiAddr[SPI_ID_MAX] = {SPI_BASE}; +static intCallback_Type * spiIntCbfArra[SPI_ID_MAX][SPI_INT_ALL]= { + {NULL} +}; + + +/*@} end of group SPI_Private_Variables */ + +/** @defgroup SPI_Global_Variables + * @{ + */ + +/*@} end of group SPI_Global_Variables */ + +/** @defgroup SPI_Private_Fun_Declaration + * @{ + */ +#ifndef BFLB_USE_HAL_DRIVER +static void SPI_IntHandler(SPI_ID_Type spiNo); +#endif + +/*@} end of group SPI_Private_Fun_Declaration */ + +/** @defgroup SPI_Private_Functions + * @{ + */ + +/****************************************************************************//** + * @brief SPI interrupt common handler function + * + * @param spiNo: SPI ID type + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +static void SPI_IntHandler(SPI_ID_Type spiNo) +{ + uint32_t tmpVal; + uint32_t SPIx = spiAddr[spiNo]; + + CHECK_PARAM(IS_SPI_ID_TYPE(spiNo)); + + tmpVal = BL_RD_REG(SPIx,SPI_INT_STS); + + /* Transfer end interrupt,shared by both master and slave mode */ + if(BL_IS_REG_BIT_SET(tmpVal,SPI_END_INT) && !BL_IS_REG_BIT_SET(tmpVal,SPI_CR_SPI_END_MASK)){ + BL_WR_REG(SPIx,SPI_INT_STS,BL_SET_REG_BIT(tmpVal,SPI_CR_SPI_END_CLR)); + if(spiIntCbfArra[spiNo][SPI_INT_END] != NULL){ + spiIntCbfArra[spiNo][SPI_INT_END](); + } + } + /* TX fifo ready interrupt(fifo count > fifo threshold) */ + if(BL_IS_REG_BIT_SET(tmpVal,SPI_TXF_INT) && !BL_IS_REG_BIT_SET(tmpVal,SPI_CR_SPI_TXF_MASK)){ + if(spiIntCbfArra[spiNo][SPI_INT_TX_FIFO_REQ] != NULL){ + spiIntCbfArra[spiNo][SPI_INT_TX_FIFO_REQ](); + } + } + /* RX fifo ready interrupt(fifo count > fifo threshold) */ + if(BL_IS_REG_BIT_SET(tmpVal,SPI_RXF_INT) && !BL_IS_REG_BIT_SET(tmpVal,SPI_CR_SPI_RXF_MASK)){ + if(spiIntCbfArra[spiNo][SPI_INT_RX_FIFO_REQ] != NULL){ + spiIntCbfArra[spiNo][SPI_INT_RX_FIFO_REQ](); + } + } + /* Slave mode transfer time-out interrupt,triggered when bus is idle for the given value */ + if(BL_IS_REG_BIT_SET(tmpVal,SPI_STO_INT) && !BL_IS_REG_BIT_SET(tmpVal,SPI_CR_SPI_STO_MASK)){ + BL_WR_REG(SPIx,SPI_INT_STS,BL_SET_REG_BIT(tmpVal,SPI_CR_SPI_STO_CLR)); + if(spiIntCbfArra[spiNo][SPI_INT_SLAVE_TIMEOUT] != NULL){ + spiIntCbfArra[spiNo][SPI_INT_SLAVE_TIMEOUT](); + } + } + /* Slave mode tx underrun error interrupt,trigged when tx is not ready during transfer */ + if(BL_IS_REG_BIT_SET(tmpVal,SPI_TXU_INT) && !BL_IS_REG_BIT_SET(tmpVal,SPI_CR_SPI_TXU_MASK)){ + BL_WR_REG(SPIx,SPI_INT_STS,BL_SET_REG_BIT(tmpVal,SPI_CR_SPI_TXU_CLR)); + if(spiIntCbfArra[spiNo][SPI_INT_SLAVE_UNDERRUN] != NULL){ + spiIntCbfArra[spiNo][SPI_INT_SLAVE_UNDERRUN](); + } + } + /* TX/RX fifo overflow/underflow interrupt */ + if(BL_IS_REG_BIT_SET(tmpVal,SPI_FER_INT) && !BL_IS_REG_BIT_SET(tmpVal,SPI_CR_SPI_FER_MASK)){ + if(spiIntCbfArra[spiNo][SPI_INT_FIFO_ERROR] != NULL){ + spiIntCbfArra[spiNo][SPI_INT_FIFO_ERROR](); + } + } +} +#endif + + +/*@} end of group SPI_Private_Functions */ + +/** @defgroup SPI_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief SPI initialization function + * + * @param spiNo: SPI ID type + * @param spiCfg: SPI configuration structure pointer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type SPI_Init(SPI_ID_Type spiNo,SPI_CFG_Type* spiCfg) +{ + uint32_t tmpVal; + uint32_t SPIx = spiAddr[spiNo]; + + CHECK_PARAM(IS_SPI_ID_TYPE(spiNo)); + CHECK_PARAM(IS_SPI_WORK_MODE_TYPE(spiCfg->mod)); + CHECK_PARAM(IS_SPI_BYTE_INVERSE_TYPE(spiCfg->byteSequence)); + CHECK_PARAM(IS_SPI_BIT_INVERSE_TYPE(spiCfg->bitSequence)); + CHECK_PARAM(IS_SPI_CLK_PHASE_INVERSE_TYPE(spiCfg->clkPhaseInv)); + CHECK_PARAM(IS_SPI_CLK_POLARITY_TYPE(spiCfg->clkPolarity)); + + /* Disable clock gate */ + GLB_AHB_Slave1_Clock_Gate(DISABLE,BL_AHB_SLAVE1_SPI); + + /* spi config */ + tmpVal = BL_RD_REG(SPIx,SPI_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_DEG_EN,spiCfg->deglitchEnable); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_M_CONT_EN,spiCfg->continuousEnable); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_BYTE_INV,spiCfg->byteSequence); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_BIT_INV,spiCfg->bitSequence); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_SCLK_PH,(spiCfg->clkPhaseInv+1)&1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_SCLK_POL,spiCfg->clkPolarity); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_FRAME_SIZE,spiCfg->frameSize); + BL_WR_REG(SPIx,SPI_CONFIG,tmpVal); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(SPI_IRQn,SPI_IRQHandler); +#endif + return SUCCESS; +} + +/****************************************************************************//** + * @brief SPI set default value of all registers function + * + * @param spiNo: SPI ID type + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type SPI_DeInit(SPI_ID_Type spiNo) +{ + /* Check the parameters */ + CHECK_PARAM(IS_SPI_ID_TYPE(spiNo)); + + if(SPI_ID_0 == spiNo){ + GLB_AHB_Slave1_Reset(BL_AHB_SLAVE1_SPI); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Length of data phase1/0,start/stop condition and interval between frame initialization + * function + * + * @param spiNo: SPI ID type + * @param clockCfg: Clock configuration structure pointer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type SPI_ClockConfig(SPI_ID_Type spiNo,SPI_ClockCfg_Type *clockCfg) +{ + uint32_t tmpVal; + uint32_t SPIx = spiAddr[spiNo]; + + /* Check the parameters */ + CHECK_PARAM(IS_SPI_ID_TYPE(spiNo)); + + /* Configure length of data phase1/0 and start/stop condition */ + tmpVal = BL_RD_REG(SPIx,SPI_PRD_0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_PRD_S,clockCfg->startLen-1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_PRD_P,clockCfg->stopLen-1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_PRD_D_PH_0,clockCfg->dataPhase0Len-1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_PRD_D_PH_1,clockCfg->dataPhase1Len-1); + BL_WR_REG(SPIx,SPI_PRD_0,tmpVal); + + /* Configure length of interval between frame */ + tmpVal = BL_RD_REG(SPIx,SPI_PRD_1); + BL_WR_REG(SPIx,SPI_PRD_1,BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_PRD_I,clockCfg->intervalLen-1)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief SPI configure fifo function + * + * @param spiNo: SPI ID type + * @param fifoCfg: FIFO configuration structure pointer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type SPI_FifoConfig(SPI_ID_Type spiNo,SPI_FifoCfg_Type *fifoCfg) +{ + uint32_t tmpVal; + uint32_t SPIx = spiAddr[spiNo]; + + /* Check the parameters */ + CHECK_PARAM(IS_SPI_ID_TYPE(spiNo)); + + /* Set fifo threshold value */ + tmpVal = BL_RD_REG(SPIx,SPI_FIFO_CONFIG_1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_TX_FIFO_TH,fifoCfg->txFifoThreshold-1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_RX_FIFO_TH,fifoCfg->rxFifoThreshold-1); + BL_WR_REG(SPIx,SPI_FIFO_CONFIG_1,tmpVal); + + /* Enable or disable dma function */ + tmpVal = BL_RD_REG(SPIx,SPI_FIFO_CONFIG_0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_DMA_TX_EN,fifoCfg->txFifoDmaEnable); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_DMA_RX_EN,fifoCfg->rxFifoDmaEnable); + BL_WR_REG(SPIx,SPI_FIFO_CONFIG_0,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Set SPI SCK Clcok + * + * @param spiNo: SPI ID type + * @param clk: Clk + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type SPI_SetClock(SPI_ID_Type spiNo,uint32_t clk) +{ + uint32_t glb_div = 1,spi_div = 1; + uint32_t tmpVal; + uint32_t SPIx = spiAddr[spiNo]; + + if(clk < 4395){ + clk = 4395; + } + + if(clk > 36000000){ + clk = 36000000; + } + + if(clk>140625){ + glb_div = 1; + spi_div = 36000000 / clk; + }else{ + spi_div = 256; + glb_div = clk >>8; + } + + /* Configure length of data phase1/0 and start/stop condition */ + tmpVal = BL_RD_REG(SPIx,SPI_PRD_0); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_PRD_S,spi_div-1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_PRD_P,spi_div-1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_PRD_D_PH_0,spi_div-1); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_PRD_D_PH_1,spi_div-1); + BL_WR_REG(SPIx,SPI_PRD_0,tmpVal); + + tmpVal = BL_RD_REG(SPIx,SPI_PRD_1); + BL_WR_REG(SPIx,SPI_PRD_1,BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_PRD_I,spi_div-1)); + + GLB_Set_SPI_CLK(ENABLE,glb_div-1); + + return SUCCESS; +} + + +/****************************************************************************//** + * @brief Enable spi transfer + * + * @param spiNo: SPI ID type + * @param modeType: Master or slave mode select + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type SPI_Enable(SPI_ID_Type spiNo,SPI_WORK_MODE_Type modeType) +{ + uint32_t tmpVal; + uint32_t SPIx = spiAddr[spiNo]; + + CHECK_PARAM(IS_SPI_ID_TYPE(spiNo)); + CHECK_PARAM(IS_SPI_WORK_MODE_TYPE(modeType)); + + tmpVal = BL_RD_REG(SPIx,SPI_CONFIG); + if(modeType != SPI_WORK_MODE_SLAVE){ + /* master mode */ + tmpVal = BL_CLR_REG_BIT(tmpVal,SPI_CR_SPI_S_EN); + tmpVal = BL_SET_REG_BIT(tmpVal,SPI_CR_SPI_M_EN); + }else{ + /* slave mode */ + tmpVal = BL_CLR_REG_BIT(tmpVal,SPI_CR_SPI_M_EN); + tmpVal = BL_SET_REG_BIT(tmpVal,SPI_CR_SPI_S_EN); + } + BL_WR_REG(SPIx,SPI_CONFIG,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Disable spi transfer + * + * @param spiNo: SPI ID type + * @param modeType: Master or slave mode select + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type SPI_Disable(SPI_ID_Type spiNo,SPI_WORK_MODE_Type modeType) +{ + uint32_t tmpVal; + uint32_t SPIx = spiAddr[spiNo]; + + CHECK_PARAM(IS_SPI_ID_TYPE(spiNo)); + CHECK_PARAM(IS_SPI_WORK_MODE_TYPE(modeType)); + + /* close master and slave */ + tmpVal = BL_RD_REG(SPIx,SPI_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,SPI_CR_SPI_M_EN); + tmpVal = BL_CLR_REG_BIT(tmpVal,SPI_CR_SPI_S_EN); + BL_WR_REG(SPIx,SPI_CONFIG,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Set time-out value to trigger interrupt when spi bus is idle for the given value + * + * @param spiNo: SPI ID type + * @param value: Time value + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type SPI_SetTimeOutValue(SPI_ID_Type spiNo,uint16_t value) +{ + uint32_t tmpVal; + uint32_t SPIx = spiAddr[spiNo]; + + CHECK_PARAM(IS_SPI_ID_TYPE(spiNo)); + + /* Set time-out value */ + tmpVal = BL_RD_REG(SPIx,SPI_STO_VALUE); + BL_WR_REG(SPIx,SPI_STO_VALUE,BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_STO_VALUE,value-1)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Set de-glitch function cycle count value + * + * @param spiNo: SPI ID type + * @param cnt: De-glitch function cycle count + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type SPI_SetDeglitchCount(SPI_ID_Type spiNo,uint8_t cnt) +{ + uint32_t tmpVal; + uint32_t SPIx = spiAddr[spiNo]; + + /* Check the parameters */ + CHECK_PARAM(IS_SPI_ID_TYPE(spiNo)); + + /* Set count value */ + tmpVal = BL_RD_REG(SPIx,SPI_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,SPI_CR_SPI_DEG_CNT,cnt-1); + BL_WR_REG(SPIx,SPI_CONFIG,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Enable rx data ignore function and set start/stop point + * + * @param spiNo: SPI ID type + * @param startPoint: Start point + * @param stopPoint: Stop point + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type SPI_RxIgnoreEnable(SPI_ID_Type spiNo,uint8_t startPoint,uint8_t stopPoint) +{ + uint32_t tmpVal; + uint32_t SPIx = spiAddr[spiNo]; + + /* Check the parameters */ + CHECK_PARAM(IS_SPI_ID_TYPE(spiNo)); + + /* Enable rx ignore function */ + tmpVal = BL_RD_REG(SPIx,SPI_CONFIG); + BL_WR_REG(SPIx,SPI_CONFIG,BL_SET_REG_BIT(tmpVal,SPI_CR_SPI_RXD_IGNR_EN)); + + /* Set start and stop point */ + tmpVal = startPoint<
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_timer.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup TIMER + * @{ + */ + +/** @defgroup TIMER_Private_Macros + * @{ + */ +#define TIMER_MAX_MATCH 3 + +/*@} end of group TIMER_Private_Macros */ + +/** @defgroup TIMER_Private_Types + * @{ + */ + +/*@} end of group TIMER_Private_Types */ + +/** @defgroup TIMER_Private_Variables + * @{ + */ +intCallback_Type * timerIntCbfArra[3][TIMER_INT_ALL]= { +{NULL, NULL, NULL}, +{NULL, NULL, NULL}, +{NULL, NULL, NULL} +}; + +/*@} end of group TIMER_Private_Variables */ + +/** @defgroup TIMER_Global_Variables + * @{ + */ + +/*@} end of group TIMER_Global_Variables */ + +/** @defgroup TIMER_Private_Fun_Declaration + * @{ + */ +#ifndef BFLB_USE_HAL_DRIVER +static void TIMER_IntHandler(IRQn_Type irqNo, TIMER_Chan_Type timerCh); +#endif + +/*@} end of group TIMER_Private_Fun_Declaration */ + +/** @defgroup TIMER_Private_Functions + * @{ + */ + +/****************************************************************************//** + * @brief TIMER interrupt common handler function + * + * @param irqNo: Interrupt ID type + * @param timerCh: TIMER channel type + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void TIMER_IntHandler(IRQn_Type irqNo, TIMER_Chan_Type timerCh) +{ + uint32_t intId; + uint32_t tmpVal; + uint32_t tmpAddr; + + intId=BL_RD_WORD(TIMER_BASE+TIMER_TMSR2_OFFSET+4*timerCh); + tmpAddr=TIMER_BASE+TIMER_TICR2_OFFSET+4*timerCh; + tmpVal=BL_RD_WORD(tmpAddr); + + /* Comparator 0 match interrupt */ + if( BL_IS_REG_BIT_SET(intId,TIMER_TMSR_0) ){ + BL_WR_WORD(tmpAddr,BL_SET_REG_BIT(tmpVal,TIMER_TCLR_0)); + if(timerIntCbfArra[irqNo-TIMER_CH0_IRQn][TIMER_INT_COMP_0] != NULL){ + /* Call the callback function */ + timerIntCbfArra[irqNo-TIMER_CH0_IRQn][TIMER_INT_COMP_0](); + } + } + + /* Comparator 1 match interrupt */ + if( BL_IS_REG_BIT_SET(intId,TIMER_TMSR_1) ){ + BL_WR_WORD(tmpAddr,BL_SET_REG_BIT(tmpVal,TIMER_TCLR_1)); + if(timerIntCbfArra[irqNo-TIMER_CH0_IRQn][TIMER_INT_COMP_1] != NULL){ + /* Call the callback function */ + timerIntCbfArra[irqNo-TIMER_CH0_IRQn][TIMER_INT_COMP_1](); + } + } + + /* Comparator 2 match interrupt */ + if( BL_IS_REG_BIT_SET(intId,TIMER_TMSR_2) ){ + BL_WR_WORD(tmpAddr,BL_SET_REG_BIT(tmpVal,TIMER_TCLR_2)); + if(timerIntCbfArra[irqNo-TIMER_CH0_IRQn][TIMER_INT_COMP_2] != NULL){ + /* Call the callback function */ + timerIntCbfArra[irqNo-TIMER_CH0_IRQn][TIMER_INT_COMP_2](); + } + } +} +#endif + +/****************************************************************************//** + * @brief Get the specified channel and match comparator value + * + * @param timerCh: TIMER channel type + * @param cmpNo: TIMER comparator ID type + * + * @return Match comapre register value + * +*******************************************************************************/ +uint32_t TIMER_GetCompValue(TIMER_Chan_Type timerCh, TIMER_Comp_ID_Type cmpNo) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerCh)); + CHECK_PARAM(IS_TIMER_COMP_ID_TYPE(cmpNo)); + + tmpVal=BL_RD_WORD(TIMER_BASE+TIMER_TMR2_0_OFFSET+4*(TIMER_MAX_MATCH*timerCh+cmpNo)); + return tmpVal; +} + +/****************************************************************************//** + * @brief TIMER set specified channel and comparator compare value + * + * @param timerCh: TIMER channel type + * @param cmpNo: TIMER comparator ID type + * @param val: TIMER match comapre register value + * + * @return None + * +*******************************************************************************/ +void TIMER_SetCompValue(TIMER_Chan_Type timerCh, TIMER_Comp_ID_Type cmpNo, uint32_t val) +{ + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerCh)); + CHECK_PARAM(IS_TIMER_COMP_ID_TYPE(cmpNo)); + + BL_WR_WORD(TIMER_BASE+TIMER_TMR2_0_OFFSET+4*(TIMER_MAX_MATCH*timerCh+cmpNo),val); +} + +/****************************************************************************//** + * @brief TIMER get the specified channel count value + * + * @param timerCh: TIMER channel type + * + * @return TIMER count register value + * +*******************************************************************************/ +uint32_t TIMER_GetCounterValue(TIMER_Chan_Type timerCh) +{ + uint32_t tmpVal; + uint32_t tmpAddr; + + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerCh)); + + /* TO avoid risk of reading, don't read TCVWR directly*/ + /* request for read*/ + tmpAddr=TIMER_BASE+TIMER_TCVWR2_OFFSET+4*timerCh; + BL_WR_WORD(tmpAddr,1); + + /* Need wait */ + tmpVal=BL_RD_WORD(tmpAddr); + tmpVal=BL_RD_WORD(tmpAddr); + tmpVal=BL_RD_WORD(tmpAddr); + + return tmpVal; +} + +/****************************************************************************//** + * @brief TIMER get specified channel and comparator match status + * + * @param timerCh: TIMER channel type + * @param cmpNo: TIMER comparator ID type + * + * @return SET or RESET + * +*******************************************************************************/ +BL_Sts_Type TIMER_GetMatchStatus(TIMER_Chan_Type timerCh, TIMER_Comp_ID_Type cmpNo) +{ + uint32_t tmpVal; + BL_Sts_Type bitStatus=RESET; + + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerCh)); + CHECK_PARAM(IS_TIMER_COMP_ID_TYPE(cmpNo)); + + tmpVal=BL_RD_WORD(TIMER_BASE+TIMER_TMSR2_OFFSET+4*timerCh); + switch(cmpNo) + { + case TIMER_COMP_ID_0: + bitStatus = BL_IS_REG_BIT_SET(tmpVal,TIMER_TMSR_0) ? SET : RESET; + break; + case TIMER_COMP_ID_1: + bitStatus = BL_IS_REG_BIT_SET(tmpVal,TIMER_TMSR_1) ? SET : RESET; + break; + case TIMER_COMP_ID_2: + bitStatus = BL_IS_REG_BIT_SET(tmpVal,TIMER_TMSR_2) ? SET : RESET; + break; + default: + break; + } + return bitStatus; +} + +/****************************************************************************//** + * @brief TIMER get specified channel preload value + * + * @param timerCh: TIMER channel type + * + * @return Preload register value + * +*******************************************************************************/ +uint32_t TIMER_GetPreloadValue(TIMER_Chan_Type timerCh) +{ + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerCh)); + + return BL_RD_WORD(TIMER_BASE+TIMER_TPLVR2_OFFSET+4*timerCh); +} + +/****************************************************************************//** + * @brief TIMER set preload register low 32bits value + * + * @param timerCh: TIMER channel type + * @param val: Preload register low 32bits value + * + * @return None + * +*******************************************************************************/ +void TIMER_SetPreloadValue(TIMER_Chan_Type timerCh, uint32_t val) +{ + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerCh)); + + BL_WR_WORD(TIMER_BASE+TIMER_TPLVR2_OFFSET+4*timerCh,val); +} + +/****************************************************************************//** + * @brief TIMER set preload trigger source,COMP0,COMP1,COMP2 or None + * + * @param timerCh: TIMER channel type + * @param plSrc: TIMER preload source type + * + * @return None + * +*******************************************************************************/ +void TIMER_SetPreloadTrigSrc(TIMER_Chan_Type timerCh, TIMER_PreLoad_Trig_Type plSrc) +{ + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerCh)); + CHECK_PARAM(IS_TIMER_PRELOAD_TRIG_TYPE(plSrc)); + + BL_WR_WORD(TIMER_BASE+TIMER_TPLCR2_OFFSET+4*timerCh,plSrc); +} + +/****************************************************************************//** + * @brief TIMER set count mode:preload or free run + * + * @param timerCh: TIMER channel type + * @param countMode: TIMER count mode: TIMER_COUNT_PRELOAD or TIMER_COUNT_FREERUN + * + * @return None + * +*******************************************************************************/ +void TIMER_SetCountMode(TIMER_Chan_Type timerCh, TIMER_CountMode_Type countMode) +{ + uint32_t tmpval; + + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerCh)); + CHECK_PARAM(IS_TIMER_COUNTMODE_TYPE(countMode)); + + tmpval=BL_RD_WORD(TIMER_BASE+TIMER_TCMR_OFFSET); + tmpval &= (~(1<<(timerCh+1))); + tmpval |= (countMode<<(timerCh+1)); + + BL_WR_WORD(TIMER_BASE+TIMER_TCMR_OFFSET,tmpval); +} + +/****************************************************************************//** + * @brief TIMER clear interrupt status + * + * @param timerCh: TIMER channel type + * @param cmpNo: TIMER macth comparator ID type + * + * @return None + * +*******************************************************************************/ +void TIMER_ClearIntStatus(TIMER_Chan_Type timerCh, TIMER_Comp_ID_Type cmpNo) +{ + uint32_t tmpAddr; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerCh)); + CHECK_PARAM(IS_TIMER_COMP_ID_TYPE(cmpNo)); + + tmpAddr=TIMER_BASE+TIMER_TICR2_OFFSET+4*timerCh; + + tmpVal=BL_RD_WORD(tmpAddr); + tmpVal |=(1<timerCh; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CLKSRC_TYPE(timerCfg->clkSrc)); + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerCfg->timerCh)); + CHECK_PARAM(IS_TIMER_PRELOAD_TRIG_TYPE(timerCfg->plTrigSrc)); + CHECK_PARAM(IS_TIMER_COUNTMODE_TYPE(timerCfg->countMode)); + + /* Configure timer clock source */ + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_TCCR); + if(timerCh == TIMER_CH0){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,TIMER_CS_1,timerCfg->clkSrc); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,TIMER_CS_2,timerCfg->clkSrc); + } + BL_WR_REG(TIMER_BASE,TIMER_TCCR,tmpVal); + + /* Configure timer clock division */ + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_TCDR); + if(timerCh == TIMER_CH0){ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,TIMER_TCDR2,timerCfg->clockDivision); + }else{ + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,TIMER_TCDR3,timerCfg->clockDivision); + } + BL_WR_REG(TIMER_BASE,TIMER_TCDR,tmpVal); + + /* Configure timer count mode: preload or free run */ + TIMER_SetCountMode(timerCh,timerCfg->countMode); + + /* Configure timer preload trigger src */ + TIMER_SetPreloadTrigSrc(timerCh,timerCfg->plTrigSrc); + + if(timerCfg->countMode == TIMER_COUNT_PRELOAD){ + /* Configure timer preload value */ + TIMER_SetPreloadValue(timerCh, timerCfg->preLoadVal); + } + + /* Configure match compare values */ + TIMER_SetCompValue(timerCh,TIMER_COMP_ID_0,timerCfg->matchVal0); + TIMER_SetCompValue(timerCh,TIMER_COMP_ID_1,timerCfg->matchVal1); + TIMER_SetCompValue(timerCh,TIMER_COMP_ID_2,timerCfg->matchVal2); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(TIMER_CH0_IRQn,TIMER_CH0_IRQHandler); + Interrupt_Handler_Register(TIMER_CH1_IRQn,TIMER_CH1_IRQHandler); +#endif + + return SUCCESS; +} + +/****************************************************************************//** + * @brief TIMER enable one channel function + * + * @param timerCh: TIMER channel type + * + * @return None + * +*******************************************************************************/ +void TIMER_Enable(TIMER_Chan_Type timerCh) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerCh)); + + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_TCER); + tmpVal |=(1<<(timerCh+1)); + + BL_WR_REG(TIMER_BASE,TIMER_TCER,tmpVal); +} + +/****************************************************************************//** + * @brief TIMER disable one channel function + * + * @param timerCh: TIMER channel type + * + * @return None + * +*******************************************************************************/ +void TIMER_Disable(TIMER_Chan_Type timerCh) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerCh)); + + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_TCER); + tmpVal &= (~(1<<(timerCh+1))); + + BL_WR_REG(TIMER_BASE,TIMER_TCER,tmpVal); +} + +/****************************************************************************//** + * @brief TIMER mask or unmask certain or all interrupt + * + * @param timerCh: TIMER channel type + * @param intType: TIMER interrupt type + * @param intMask: TIMER interrupt mask value:MASK:disbale interrupt.UNMASK:enable interrupt + * + * @return None + * +*******************************************************************************/ +void TIMER_IntMask(TIMER_Chan_Type timerCh,TIMER_INT_Type intType, BL_Mask_Type intMask) +{ + uint32_t tmpAddr; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerCh)); + CHECK_PARAM(IS_TIMER_INT_TYPE(intType)); + CHECK_PARAM(IS_BL_MASK_TYPE(intMask)); + + tmpAddr=TIMER_BASE+TIMER_TIER2_OFFSET+4*timerCh; + tmpVal=BL_RD_WORD(tmpAddr); + + switch(intType) + { + case TIMER_INT_COMP_0: + if(intMask == UNMASK){ + /* Enable this interrupt */ + BL_WR_WORD(tmpAddr,BL_SET_REG_BIT(tmpVal,TIMER_TIER_0)); + }else{ + /* Disable this interrupt */ + BL_WR_WORD(tmpAddr,BL_CLR_REG_BIT(tmpVal,TIMER_TIER_0)); + } + break; + + case TIMER_INT_COMP_1: + if(intMask == UNMASK){ + /* Enable this interrupt */ + BL_WR_WORD(tmpAddr,BL_SET_REG_BIT(tmpVal,TIMER_TIER_1)); + }else{ + /* Disable this interrupt */ + BL_WR_WORD(tmpAddr,BL_CLR_REG_BIT(tmpVal,TIMER_TIER_1)); + } + break; + + case TIMER_INT_COMP_2: + if(intMask == UNMASK){ + /* Enable this interrupt */ + BL_WR_WORD(tmpAddr,BL_SET_REG_BIT(tmpVal,TIMER_TIER_2)); + }else{ + /* Disable this interrupt */ + BL_WR_WORD(tmpAddr,BL_CLR_REG_BIT(tmpVal,TIMER_TIER_2)); + } + break; + + case TIMER_INT_ALL: + if(intMask == UNMASK){ + /* Enable this interrupt */ + BL_WR_WORD(tmpAddr,BL_SET_REG_BIT(tmpVal,TIMER_TIER_0)); + BL_WR_WORD(tmpAddr,BL_SET_REG_BIT(tmpVal,TIMER_TIER_1)); + BL_WR_WORD(tmpAddr,BL_SET_REG_BIT(tmpVal,TIMER_TIER_2)); + }else{ + /* Disable this interrupt */ + BL_WR_WORD(tmpAddr,BL_CLR_REG_BIT(tmpVal,TIMER_TIER_0)); + BL_WR_WORD(tmpAddr,BL_CLR_REG_BIT(tmpVal,TIMER_TIER_1)); + BL_WR_WORD(tmpAddr,BL_CLR_REG_BIT(tmpVal,TIMER_TIER_2)); + } + break; + + default: + break; + } +} + +/****************************************************************************//** + * @brief TIMER set watchdog clock source and clock division + * + * @param clkSrc: Watchdog timer clock source type + * @param div: Watchdog timer clock division value + * + * @return None + * +*******************************************************************************/ +void WDT_Set_Clock(TIMER_ClkSrc_Type clkSrc,uint8_t div) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CLKSRC_TYPE(clkSrc)); + + /* Configure watchdog timer clock source */ + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_TCCR); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,TIMER_CS_WDT,clkSrc); + BL_WR_REG(TIMER_BASE,TIMER_TCCR,tmpVal); + + /* Configure watchdog timer clock divison */ + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_TCDR); + tmpVal=BL_SET_REG_BITS_VAL(tmpVal,TIMER_WCDR,div); + BL_WR_REG(TIMER_BASE,TIMER_TCDR,tmpVal); +} + +/****************************************************************************//** + * @brief TIMER get watchdog match compare value + * + * @param None + * + * @return Watchdog match comapre register value + * +*******************************************************************************/ +uint16_t WDT_GetMatchValue(void) +{ + uint32_t tmpVal; + + WDT_ENABLE_ACCESS(); + + /* Get watchdog timer match register value */ + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_WMR); + + return tmpVal; +} + +/****************************************************************************//** + * @brief TIMER set watchdog match compare value + * + * @param val: Watchdog match compare value + * + * @return None + * +*******************************************************************************/ +void WDT_SetCompValue(uint16_t val) +{ + WDT_ENABLE_ACCESS(); + + /* Set watchdog timer match register value */ + BL_WR_REG(TIMER_BASE,TIMER_WMR,val); +} + +/****************************************************************************//** + * @brief TIMER get watchdog count register value + * + * @param None + * + * @return Watchdog count register value + * +*******************************************************************************/ +uint16_t WDT_GetCounterValue(void) +{ + uint32_t tmpVal; + + WDT_ENABLE_ACCESS(); + + /* Get watchdog timer count register value */ + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_WVR); + + return tmpVal; +} + +/****************************************************************************//** + * @brief TIMER reset watchdog count register value + * + * @param None + * + * @return None + * +*******************************************************************************/ +void WDT_ResetCounterValue(void) +{ + uint32_t tmpVal; + + /* Reset watchdog timer count register value */ + WDT_ENABLE_ACCESS(); + + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_WCR); + + /* Set watchdog counter reset register bit0 to 1 */ + BL_WR_REG(TIMER_BASE,TIMER_WCR,BL_SET_REG_BIT(tmpVal,TIMER_WCR)); +} + +/****************************************************************************//** + * @brief TIMER get watchdog reset status + * + * @param None + * + * @return SET or RESET + * +*******************************************************************************/ +BL_Sts_Type WDT_GetResetStatus(void) +{ + uint32_t tmpVal; + + WDT_ENABLE_ACCESS(); + + /* Get watchdog status register */ + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_WSR); + + return (BL_IS_REG_BIT_SET(tmpVal,TIMER_WTS)) ? SET : RESET; +} + +/****************************************************************************//** + * @brief TIMER clear watchdog reset status + * + * @param None + * + * @return None + * +*******************************************************************************/ +void WDT_ClearResetStatus(void) +{ + uint32_t tmpVal; + + WDT_ENABLE_ACCESS(); + + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_WSR); + + /* Set watchdog status register */ + BL_WR_REG(TIMER_BASE,TIMER_WSR,BL_CLR_REG_BIT(tmpVal,TIMER_WTS)); +} + +/****************************************************************************//** + * @brief TIMER enable watchdog function + * + * @param None + * + * @return None + * +*******************************************************************************/ +void WDT_Enable(void) +{ + uint32_t tmpVal; + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(TIMER_WDT_IRQn,TIMER_WDT_IRQHandler); +#endif + + WDT_ENABLE_ACCESS(); + + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_WMER); + + BL_WR_REG(TIMER_BASE,TIMER_WMER,BL_SET_REG_BIT(tmpVal,TIMER_WE)); +} + +/****************************************************************************//** + * @brief Watchdog timer disable function + * + * @param None + * + * @return None + * +*******************************************************************************/ +void WDT_Disable(void) +{ + uint32_t tmpVal; + + WDT_ENABLE_ACCESS(); + + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_WMER); + + BL_WR_REG(TIMER_BASE,TIMER_WMER,BL_CLR_REG_BIT(tmpVal,TIMER_WE)); +} + +/****************************************************************************//** + * @brief Watchdog timer mask or unmask certain or all interrupt + * + * @param intType: Watchdog interrupt type + * @param intMask: Watchdog interrupt mask value:MASK:disbale interrupt.UNMASK:enable interrupt + * + * @return None + * +*******************************************************************************/ +void WDT_IntMask(WDT_INT_Type intType, BL_Mask_Type intMask) +{ + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_WDT_INT_TYPE(intType)); + CHECK_PARAM(IS_BL_MASK_TYPE(intMask)); + + WDT_ENABLE_ACCESS(); + + /* Deal with watchdog match/interrupt enable register, + WRIE:watchdog reset/interrupt enable */ + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_WMER); + + switch(intType) + { + case WDT_INT: + if(intMask == UNMASK){ + /* Enable this interrupt */ + /* 0 means generates a watchdog interrupt, + a watchdog timer reset is not generated*/ + BL_WR_REG(TIMER_BASE,TIMER_WMER,BL_CLR_REG_BIT(tmpVal,TIMER_WRIE)); + }else { + /* Disable this interrupt */ + /* 1 means generates a watchdog timer reset, + a watchdog interrupt is not generated*/ + BL_WR_REG(TIMER_BASE,TIMER_WMER,BL_SET_REG_BIT(tmpVal,TIMER_WRIE)); + } + break; + default: + break; + } +} + +/****************************************************************************//** + * @brief TIMER channel 0 interrupt handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void TIMER_CH0_IRQHandler(void) +{ + TIMER_IntHandler(TIMER_CH0_IRQn,TIMER_CH0); +} +#endif + +/****************************************************************************//** + * @brief TIMER channel 1 interrupt handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void TIMER_CH1_IRQHandler(void) +{ + TIMER_IntHandler(TIMER_CH1_IRQn,TIMER_CH1); +} +#endif + +/****************************************************************************//** + * @brief TIMER watchdog interrupt handler + * + * @param None + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +void TIMER_WDT_IRQHandler(void) +{ + uint32_t tmpVal; + + WDT_ENABLE_ACCESS(); + + tmpVal=BL_RD_REG(TIMER_BASE,TIMER_WICR); + BL_WR_REG(TIMER_BASE,TIMER_WICR,BL_SET_REG_BIT(tmpVal,TIMER_WICLR)); + + if(timerIntCbfArra[TIMER_WDT_IRQn-TIMER_CH0_IRQn][WDT_INT] != NULL){ + /* Call the callback function */ + timerIntCbfArra[TIMER_WDT_IRQn-TIMER_CH0_IRQn][WDT_INT](); + } +} +#endif + +/****************************************************************************//** + * @brief TIMER install interrupt callback + * + * @param timerChan: TIMER channel type + * @param intType: TIMER interrupt type + * @param cbFun: Pointer to interrupt callback function. The type should be void (*fn)(void) + * + * @return None + * +*******************************************************************************/ +void Timer_Int_Callback_Install(TIMER_Chan_Type timerChan,TIMER_INT_Type intType,intCallback_Type* cbFun) +{ + /* Check the parameters */ + CHECK_PARAM(IS_TIMER_CHAN_TYPE(timerChan)); + CHECK_PARAM(IS_TIMER_INT_TYPE(intType)); + + timerIntCbfArra[timerChan][intType] = cbFun; +} + +/****************************************************************************//** + * @brief Watchdog install interrupt callback + * + * @param wdtInt: Watchdog interrupt type + * @param cbFun: Pointer to interrupt callback function. The type should be void (*fn)(void) + * + * @return None + * +*******************************************************************************/ +void WDT_Int_Callback_Install(WDT_INT_Type wdtInt,intCallback_Type* cbFun) +{ + /* Check the parameters */ + CHECK_PARAM(IS_WDT_INT_TYPE(wdtInt)); + + timerIntCbfArra[2][wdtInt] = cbFun; +} + +/*@} end of group TIMER_Private_Functions */ + +/*@} end of group TIMER */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/drivers/bl702_driver/std_drv/src/bl702_uart.c b/drivers/bl702_driver/std_drv/src/bl702_uart.c new file mode 100644 index 00000000..0d7e4dd3 --- /dev/null +++ b/drivers/bl702_driver/std_drv/src/bl702_uart.c @@ -0,0 +1,1204 @@ +/** + ****************************************************************************** + * @file bl702_uart.c + * @version V1.0 + * @date + * @brief This file is the standard driver c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 Bouffalo Lab

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_uart.h" +#include "bl702_glb.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup UART + * @{ + */ + +/** @defgroup UART_Private_Macros + * @{ + */ +#define UART_TX_TIMEOUT_COUNT (160*1000) + +/*@} end of group UART_Private_Macros */ + +/** @defgroup UART_Private_Types + * @{ + */ + +/*@} end of group UART_Private_Types */ + +/** @defgroup UART_Private_Variables + * @{ + */ +static const uint32_t uartAddr[2] = {UART0_BASE,UART1_BASE}; +static intCallback_Type * uartIntCbfArra[2][UART_INT_ALL]= { + {NULL},{NULL} +}; + + +/*@} end of group UART_Private_Variables */ + +/** @defgroup UART_Global_Variables + * @{ + */ + +/*@} end of group UART_Global_Variables */ + +/** @defgroup UART_Private_Fun_Declaration + * @{ + */ +#ifndef BFLB_USE_HAL_DRIVER +static void UART_IntHandler(UART_ID_Type uartId); +#endif + +/*@} end of group UART_Private_Fun_Declaration */ + +/** @defgroup UART_Private_Functions + * @{ + */ + +/****************************************************************************//** + * @brief UART interrupt common handler function + * + * @param uartId: UART ID type + * + * @return None + * +*******************************************************************************/ +#ifndef BFLB_USE_HAL_DRIVER +static void UART_IntHandler(UART_ID_Type uartId) +{ + uint32_t tmpVal = 0; + uint32_t maskVal = 0; + uint32_t UARTx = uartAddr[uartId]; + + tmpVal = BL_RD_REG(UARTx,UART_INT_STS); + maskVal = BL_RD_REG(UARTx,UART_INT_MASK); + + /* Length of uart tx data transfer arrived interrupt */ + if(BL_IS_REG_BIT_SET(tmpVal,UART_UTX_END_INT) && !BL_IS_REG_BIT_SET(maskVal,UART_CR_UTX_END_MASK)){ + BL_WR_REG(UARTx,UART_INT_CLEAR,0x1); + if(uartIntCbfArra[uartId][UART_INT_TX_END] != NULL){ + uartIntCbfArra[uartId][UART_INT_TX_END](); + } + } + + /* Length of uart rx data transfer arrived interrupt */ + if(BL_IS_REG_BIT_SET(tmpVal,UART_URX_END_INT) && !BL_IS_REG_BIT_SET(maskVal,UART_CR_URX_END_MASK)){ + BL_WR_REG(UARTx,UART_INT_CLEAR,0x2); + if(uartIntCbfArra[uartId][UART_INT_RX_END] != NULL){ + uartIntCbfArra[uartId][UART_INT_RX_END](); + } + } + + /* Tx fifo ready interrupt,auto-cleared when data is pushed */ + if(BL_IS_REG_BIT_SET(tmpVal,UART_UTX_FIFO_INT) && !BL_IS_REG_BIT_SET(maskVal,UART_CR_UTX_FIFO_MASK)){ + if(uartIntCbfArra[uartId][UART_INT_TX_FIFO_REQ] != NULL){ + uartIntCbfArra[uartId][UART_INT_TX_FIFO_REQ](); + } + } + + /* Rx fifo ready interrupt,auto-cleared when data is popped */ + if(BL_IS_REG_BIT_SET(tmpVal,UART_URX_FIFO_INT) && !BL_IS_REG_BIT_SET(maskVal,UART_CR_URX_FIFO_MASK)){ + if(uartIntCbfArra[uartId][UART_INT_RX_FIFO_REQ] != NULL){ + uartIntCbfArra[uartId][UART_INT_RX_FIFO_REQ](); + } + } + + /* Rx time-out interrupt */ + if(BL_IS_REG_BIT_SET(tmpVal,UART_URX_RTO_INT) && !BL_IS_REG_BIT_SET(maskVal,UART_CR_URX_RTO_MASK)){ + BL_WR_REG(UARTx,UART_INT_CLEAR,0x10); + if(uartIntCbfArra[uartId][UART_INT_RTO] != NULL){ + uartIntCbfArra[uartId][UART_INT_RTO](); + } + } + + /* Rx parity check error interrupt */ + if(BL_IS_REG_BIT_SET(tmpVal,UART_URX_PCE_INT) && !BL_IS_REG_BIT_SET(maskVal,UART_CR_URX_PCE_MASK)){ + BL_WR_REG(UARTx,UART_INT_CLEAR,0x20); + if(uartIntCbfArra[uartId][UART_INT_PCE] != NULL){ + uartIntCbfArra[uartId][UART_INT_PCE](); + } + } + + /* Tx fifo overflow/underflow error interrupt */ + if(BL_IS_REG_BIT_SET(tmpVal,UART_UTX_FER_INT) && !BL_IS_REG_BIT_SET(maskVal,UART_CR_UTX_FER_MASK)){ + if(uartIntCbfArra[uartId][UART_INT_TX_FER] != NULL){ + uartIntCbfArra[uartId][UART_INT_TX_FER](); + } + } + + /* Rx fifo overflow/underflow error interrupt */ + if(BL_IS_REG_BIT_SET(tmpVal,UART_URX_FER_INT) && !BL_IS_REG_BIT_SET(maskVal,UART_CR_URX_FER_MASK)){ + if(uartIntCbfArra[uartId][UART_INT_RX_FER] != NULL){ + uartIntCbfArra[uartId][UART_INT_RX_FER](); + } + } + + /* Rx lin mode sync field error interrupt */ + if(BL_IS_REG_BIT_SET(tmpVal,UART_URX_LSE_INT) && !BL_IS_REG_BIT_SET(maskVal,UART_CR_URX_LSE_MASK)){ + BL_WR_REG(UARTx,UART_INT_CLEAR,0x100); + if(uartIntCbfArra[uartId][UART_INT_LSE] != NULL){ + uartIntCbfArra[uartId][UART_INT_LSE](); + } + } +} +#endif + + +/*@} end of group UART_Private_Functions */ + +/** @defgroup UART_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief UART initialization function + * + * @param uartId: UART ID type + * @param uartCfg: UART configuration structure pointer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_Init(UART_ID_Type uartId,UART_CFG_Type* uartCfg) +{ + uint32_t tmpValTxCfg = 0; + uint32_t tmpValRxCfg = 0; + uint32_t fraction = 0; + uint32_t baudRateDivisor = 0; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + CHECK_PARAM(IS_UART_PARITY_TYPE(uartCfg->parity)); + CHECK_PARAM(IS_UART_DATABITS_TYPE(uartCfg->dataBits)); + CHECK_PARAM(IS_UART_STOPBITS_TYPE(uartCfg->stopBits)); + CHECK_PARAM(IS_UART_BYTEBITINVERSE_TYPE(uartCfg->byteBitInverse)); + + /* Cal the baud rate divisor */ + fraction = uartCfg->uartClk * 10 / uartCfg->baudRate % 10; + baudRateDivisor = uartCfg->uartClk / uartCfg->baudRate; + if(fraction >= 5){ + ++baudRateDivisor; + } + + /* Set the baud rate register value */ + BL_WR_REG(UARTx,UART_BIT_PRD,((baudRateDivisor-1)<<0x10)|((baudRateDivisor-1)&0xFFFF)); + + /* Configure parity type */ + tmpValTxCfg = BL_RD_REG(UARTx,UART_UTX_CONFIG); + tmpValRxCfg = BL_RD_REG(UARTx,UART_URX_CONFIG); + switch(uartCfg->parity) + { + case UART_PARITY_NONE: + tmpValTxCfg = BL_CLR_REG_BIT(tmpValTxCfg,UART_CR_UTX_PRT_EN); + tmpValRxCfg = BL_CLR_REG_BIT(tmpValRxCfg,UART_CR_URX_PRT_EN); + break; + case UART_PARITY_ODD: + tmpValTxCfg = BL_SET_REG_BIT(tmpValTxCfg,UART_CR_UTX_PRT_EN); + tmpValTxCfg = BL_SET_REG_BIT(tmpValTxCfg,UART_CR_UTX_PRT_SEL); + tmpValRxCfg = BL_SET_REG_BIT(tmpValRxCfg,UART_CR_URX_PRT_EN); + tmpValRxCfg = BL_SET_REG_BIT(tmpValRxCfg,UART_CR_URX_PRT_SEL); + break; + case UART_PARITY_EVEN: + tmpValTxCfg = BL_SET_REG_BIT(tmpValTxCfg,UART_CR_UTX_PRT_EN); + tmpValTxCfg = BL_CLR_REG_BIT(tmpValTxCfg,UART_CR_UTX_PRT_SEL); + tmpValRxCfg = BL_SET_REG_BIT(tmpValRxCfg,UART_CR_URX_PRT_EN); + tmpValRxCfg = BL_CLR_REG_BIT(tmpValRxCfg,UART_CR_URX_PRT_SEL); + break; + default: + break; + } + + /* Configure data bits */ + tmpValTxCfg = BL_SET_REG_BITS_VAL(tmpValTxCfg,UART_CR_UTX_BIT_CNT_D,(uartCfg->dataBits+4)); + tmpValRxCfg = BL_SET_REG_BITS_VAL(tmpValRxCfg,UART_CR_URX_BIT_CNT_D,(uartCfg->dataBits+4)); + + /* Configure tx stop bits */ + tmpValTxCfg = BL_SET_REG_BITS_VAL(tmpValTxCfg,UART_CR_UTX_BIT_CNT_P,(uartCfg->stopBits+1)); + + /* Configure tx cts flow control function */ + tmpValTxCfg = BL_SET_REG_BITS_VAL(tmpValTxCfg,UART_CR_UTX_CTS_EN,uartCfg->ctsFlowControl); + + /* Configure rx input de-glitch function */ + tmpValRxCfg = BL_SET_REG_BITS_VAL(tmpValRxCfg,UART_CR_URX_DEG_EN,uartCfg->rxDeglitch); + + /* Configure tx lin mode function */ + tmpValTxCfg = BL_SET_REG_BITS_VAL(tmpValTxCfg,UART_CR_UTX_LIN_EN,uartCfg->txLinMode); + + /* Configure rx lin mode function */ + tmpValRxCfg = BL_SET_REG_BITS_VAL(tmpValRxCfg,UART_CR_URX_LIN_EN,uartCfg->rxLinMode); + + /* Set tx break bit count for lin protocol */ + tmpValTxCfg = BL_SET_REG_BITS_VAL(tmpValTxCfg,UART_CR_UTX_BIT_CNT_B,uartCfg->txBreakBitCnt); + + /* Write back */ + BL_WR_REG(UARTx,UART_UTX_CONFIG,tmpValTxCfg); + BL_WR_REG(UARTx,UART_URX_CONFIG,tmpValRxCfg); + + /* Configure LSB-first or MSB-first */ + tmpValTxCfg = BL_RD_REG(UARTx,UART_DATA_CONFIG); + if(UART_MSB_FIRST == uartCfg->byteBitInverse){ + tmpValTxCfg = BL_SET_REG_BIT(tmpValTxCfg,UART_CR_UART_BIT_INV); + }else{ + tmpValTxCfg = BL_CLR_REG_BIT(tmpValTxCfg,UART_CR_UART_BIT_INV); + } + BL_WR_REG(UARTx,UART_DATA_CONFIG,tmpValTxCfg); + + tmpValTxCfg = BL_RD_REG(UARTx,UART_SW_MODE); + /* Configure rx rts output SW control mode */ + tmpValTxCfg = BL_SET_REG_BITS_VAL(tmpValTxCfg,UART_CR_URX_RTS_SW_MODE,uartCfg->rtsSoftwareControl); + /* Configure tx output SW control mode */ + tmpValTxCfg = BL_SET_REG_BITS_VAL(tmpValTxCfg,UART_CR_UTX_TXD_SW_MODE,uartCfg->txSoftwareControl); + BL_WR_REG(UARTx,UART_SW_MODE,tmpValTxCfg); + +#ifndef BFLB_USE_HAL_DRIVER + Interrupt_Handler_Register(UART0_IRQn,UART0_IRQHandler); + Interrupt_Handler_Register(UART1_IRQn,UART1_IRQHandler); +#endif + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART set default value of all registers function + * + * @param uartId: UART ID type + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_DeInit(UART_ID_Type uartId) +{ + if(UART0_ID==uartId){ + GLB_AHB_Slave1_Reset(BL_AHB_SLAVE1_UART0); + }else if(UART1_ID==uartId){ + GLB_AHB_Slave1_Reset(BL_AHB_SLAVE1_UART1); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART configure fifo function + * + * @param uartId: UART ID type + * @param fifoCfg: FIFO configuration structure pointer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_FifoConfig(UART_ID_Type uartId,UART_FifoCfg_Type* fifoCfg) +{ + uint32_t tmpVal = 0; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Deal with uart fifo configure register */ + tmpVal = BL_RD_REG(UARTx,UART_FIFO_CONFIG_1); + /* Configure dma tx fifo threshold */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,UART_TX_FIFO_TH,fifoCfg->txFifoDmaThreshold-1); + /* Configure dma rx fifo threshold */ + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,UART_RX_FIFO_TH,fifoCfg->rxFifoDmaThreshold-1); + /* Write back */ + BL_WR_REG(UARTx,UART_FIFO_CONFIG_1,tmpVal); + + /* Enable or disable uart fifo dma function */ + tmpVal = BL_RD_REG(UARTx,UART_FIFO_CONFIG_0); + if(ENABLE == fifoCfg->txFifoDmaEnable){ + tmpVal = BL_SET_REG_BIT(tmpVal,UART_DMA_TX_EN); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal,UART_DMA_TX_EN); + } + if(ENABLE == fifoCfg->rxFifoDmaEnable){ + tmpVal = BL_SET_REG_BIT(tmpVal,UART_DMA_RX_EN); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal,UART_DMA_RX_EN); + } + BL_WR_REG(UARTx,UART_FIFO_CONFIG_0,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART configure infra function + * + * @param uartId: UART ID type + * @param irCfg: IR configuration structure pointer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_IrConfig(UART_ID_Type uartId, UART_IrCfg_Type* irCfg) +{ + uint32_t tmpVal = 0; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Configure tx ir mode */ + tmpVal = BL_RD_REG(UARTx,UART_UTX_CONFIG); + if(ENABLE == irCfg->txIrEnable){ + tmpVal = BL_SET_REG_BIT(tmpVal,UART_CR_UTX_IR_EN); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal,UART_CR_UTX_IR_EN); + } + if(ENABLE == irCfg->txIrInverse){ + tmpVal = BL_SET_REG_BIT(tmpVal,UART_CR_UTX_IR_INV); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal,UART_CR_UTX_IR_INV); + } + BL_WR_REG(UARTx,UART_UTX_CONFIG,tmpVal); + + /* Configure rx ir mode */ + tmpVal = BL_RD_REG(UARTx,UART_URX_CONFIG); + if(ENABLE == irCfg->rxIrEnable){ + tmpVal = BL_SET_REG_BIT(tmpVal,UART_CR_URX_IR_EN); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal,UART_CR_URX_IR_EN); + } + if(ENABLE == irCfg->rxIrInverse){ + tmpVal = BL_SET_REG_BIT(tmpVal,UART_CR_URX_IR_INV); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal,UART_CR_URX_IR_INV); + } + BL_WR_REG(UARTx,UART_URX_CONFIG,tmpVal); + + /* Configure tx ir pulse start and stop position */ + BL_WR_REG(UARTx,UART_UTX_IR_POSITION,irCfg->txIrPulseStop<<0x10|irCfg->txIrPulseStart); + + /* Configure rx ir pulse start position */ + BL_WR_REG(UARTx,UART_URX_IR_POSITION,irCfg->rxIrPulseStart); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Enable UART + * + * @param uartId: UART ID type + * @param direct: UART direction type + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_Enable(UART_ID_Type uartId,UART_Direction_Type direct) +{ + uint32_t tmpVal = 0; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + CHECK_PARAM(IS_UART_DIRECTION_TYPE(direct)); + + if(direct == UART_TX || direct == UART_TXRX){ + /* Enable UART tx unit */ + tmpVal = BL_RD_REG(UARTx,UART_UTX_CONFIG); + BL_WR_REG(UARTx,UART_UTX_CONFIG,BL_SET_REG_BIT(tmpVal,UART_CR_UTX_EN)); + } + + if(direct == UART_RX || direct == UART_TXRX){ + /* Enable UART rx unit */ + tmpVal = BL_RD_REG(UARTx,UART_URX_CONFIG); + BL_WR_REG(UARTx,UART_URX_CONFIG,BL_SET_REG_BIT(tmpVal,UART_CR_URX_EN)); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Disable UART + * + * @param uartId: UART ID type + * @param direct: UART direction type + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_Disable(UART_ID_Type uartId,UART_Direction_Type direct) +{ + uint32_t tmpVal = 0; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + CHECK_PARAM(IS_UART_DIRECTION_TYPE(direct)); + + if(direct == UART_TX || direct == UART_TXRX){ + /* Disable UART tx unit */ + tmpVal = BL_RD_REG(UARTx,UART_UTX_CONFIG); + BL_WR_REG(UARTx,UART_UTX_CONFIG,BL_CLR_REG_BIT(tmpVal,UART_CR_UTX_EN)); + } + + if(direct == UART_RX || direct == UART_TXRX){ + /* Disable UART rx unit */ + tmpVal = BL_RD_REG(UARTx,UART_URX_CONFIG); + BL_WR_REG(UARTx,UART_URX_CONFIG,BL_CLR_REG_BIT(tmpVal,UART_CR_URX_EN)); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART set length of tx data transfer,tx end interrupt will assert when this length is + * reached + * + * @param uartId: UART ID type + * @param length: Length of data (unit:character/byte) + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_SetTxDataLength(UART_ID_Type uartId,uint16_t length) +{ + uint32_t tmpVal = 0; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Set length */ + tmpVal = BL_RD_REG(UARTx,UART_UTX_CONFIG); + BL_WR_REG(UARTx,UART_UTX_CONFIG,BL_SET_REG_BITS_VAL(tmpVal,UART_CR_UTX_LEN,length-1)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART set length of rx data transfer,rx end interrupt will assert when this length is + * reached + * + * @param uartId: UART ID type + * @param length: Length of data (unit:character/byte) + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_SetRxDataLength(UART_ID_Type uartId,uint16_t length) +{ + uint32_t tmpVal = 0; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Set length */ + tmpVal = BL_RD_REG(UARTx,UART_URX_CONFIG); + BL_WR_REG(UARTx,UART_URX_CONFIG,BL_SET_REG_BITS_VAL(tmpVal,UART_CR_URX_LEN,length-1)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART set rx time-out value for triggering RTO interrupt + * + * @param uartId: UART ID type + * @param time: Time-out value (unit:bit time) + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_SetRxTimeoutValue(UART_ID_Type uartId,uint8_t time) +{ + uint32_t UARTx = uartAddr[uartId]; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Set time-out value */ + tmpVal = BL_RD_REG(UARTx,UART_URX_RTO_TIMER); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,UART_CR_URX_RTO_VALUE,time-1); + BL_WR_REG(UARTx,UART_URX_RTO_TIMER,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART set de-glitch function cycle count value + * + * @param uartId: UART ID type + * @param deglitchCnt: De-glitch function cycle count + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_SetDeglitchCount(UART_ID_Type uartId,uint8_t deglitchCnt) +{ + uint32_t UARTx = uartAddr[uartId]; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Set count value */ + tmpVal = BL_RD_REG(UARTx,UART_URX_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,UART_CR_URX_DEG_CNT,deglitchCnt-1); + BL_WR_REG(UARTx,UART_URX_CONFIG,tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART set tx and rx baudrate according to auto baudrate detection value + * + * @param uartId: UART ID type + * @param autoBaudDet: Choose detection value using codeword 0x55 or start bit + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_SetBaudrate(UART_ID_Type uartId,UART_AutoBaudDetection_Type autoBaudDet) +{ + uint32_t UARTx = uartAddr[uartId]; + uint16_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Get detection value */ + tmpVal = UART_GetAutoBaudCount(uartId,autoBaudDet); + + /* Set tx baudrate */ + BL_WR_REG(UARTx,UART_BIT_PRD,tmpVal<<0x10 | tmpVal); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART set rx rts output software control value + * + * @param uartId: UART ID type + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_SetRtsValue(UART_ID_Type uartId) +{ + uint32_t UARTx = uartAddr[uartId]; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Rts set 1*/ + tmpVal = BL_RD_REG(UARTx,UART_SW_MODE); + BL_WR_REG(UARTx,UART_SW_MODE,BL_SET_REG_BIT(tmpVal,UART_CR_URX_RTS_SW_VAL)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART clear rx rts output software control value + * + * @param uartId: UART ID type + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_ClrRtsValue(UART_ID_Type uartId) +{ + uint32_t UARTx = uartAddr[uartId]; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Rts clear 0 */ + tmpVal = BL_RD_REG(UARTx,UART_SW_MODE); + BL_WR_REG(UARTx,UART_SW_MODE,BL_CLR_REG_BIT(tmpVal,UART_CR_URX_RTS_SW_VAL)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART set tx output software control value + * + * @param uartId: UART ID type + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_SetTxValue(UART_ID_Type uartId) +{ + uint32_t UARTx = uartAddr[uartId]; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Tx set 1*/ + tmpVal = BL_RD_REG(UARTx,UART_SW_MODE); + BL_WR_REG(UARTx,UART_SW_MODE,BL_SET_REG_BIT(tmpVal,UART_CR_UTX_TXD_SW_VAL)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART clear tx output software control value + * + * @param uartId: UART ID type + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_ClrTxValue(UART_ID_Type uartId) +{ + uint32_t UARTx = uartAddr[uartId]; + uint32_t tmpVal; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Rts clear 0 */ + tmpVal = BL_RD_REG(UARTx,UART_SW_MODE); + BL_WR_REG(UARTx,UART_SW_MODE,BL_CLR_REG_BIT(tmpVal,UART_CR_UTX_TXD_SW_VAL)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART configure tx free run mode function + * + * @param uartId: UART ID type + * @param txFreeRun: Enable or disable tx free run mode + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_TxFreeRun(UART_ID_Type uartId,BL_Fun_Type txFreeRun) +{ + uint32_t tmpVal = 0; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Enable or disable tx free run mode */ + tmpVal = BL_RD_REG(UARTx,UART_UTX_CONFIG); + if(ENABLE == txFreeRun){ + BL_WR_REG(UARTx,UART_UTX_CONFIG,BL_SET_REG_BIT(tmpVal,UART_CR_UTX_FRM_EN)); + }else{ + BL_WR_REG(UARTx,UART_UTX_CONFIG,BL_CLR_REG_BIT(tmpVal,UART_CR_UTX_FRM_EN)); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART configure auto baud rate detection function + * + * @param uartId: UART ID type + * @param autoBaud: Enable or disable auto function + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_AutoBaudDetection(UART_ID_Type uartId,BL_Fun_Type autoBaud) +{ + uint32_t tmpVal = 0; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Enable or disable auto baud rate detection function */ + tmpVal = BL_RD_REG(UARTx,UART_URX_CONFIG); + if(ENABLE == autoBaud){ + BL_WR_REG(UARTx,UART_URX_CONFIG,BL_SET_REG_BIT(tmpVal,UART_CR_URX_ABR_EN)); + }else{ + BL_WR_REG(UARTx,UART_URX_CONFIG,BL_CLR_REG_BIT(tmpVal,UART_CR_URX_ABR_EN)); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART tx fifo clear + * + * @param uartId: UART ID type + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_TxFifoClear(UART_ID_Type uartId) +{ + uint32_t tmpVal = 0; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameter */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Clear tx fifo */ + tmpVal = BL_RD_REG(UARTx,UART_FIFO_CONFIG_0); + BL_WR_REG(UARTx,UART_FIFO_CONFIG_0,BL_SET_REG_BIT(tmpVal,UART_TX_FIFO_CLR)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART rx fifo clear + * + * @param uartId: UART ID type + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_RxFifoClear(UART_ID_Type uartId) +{ + uint32_t tmpVal = 0; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameter */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Clear rx fifo */ + tmpVal = BL_RD_REG(UARTx,UART_FIFO_CONFIG_0); + BL_WR_REG(UARTx,UART_FIFO_CONFIG_0,BL_SET_REG_BIT(tmpVal,UART_RX_FIFO_CLR)); + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART mask or unmask certain or all interrupt + * + * @param uartId: UART ID type + * @param intType: UART interrupt type + * @param intMask: UART interrupt mask value( MASK:disbale interrupt,UNMASK:enable interrupt ) + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_IntMask(UART_ID_Type uartId,UART_INT_Type intType,BL_Mask_Type intMask) +{ + uint32_t tmpVal; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + CHECK_PARAM(IS_UART_INT_TYPE(intType)); + CHECK_PARAM(IS_BL_MASK_TYPE(intMask)); + + tmpVal = BL_RD_REG(UARTx,UART_INT_MASK); + + /* Mask or unmask certain or all interrupt */ + if(UART_INT_ALL == intType){ + if(MASK == intMask){ + tmpVal |= 0x1ff; + }else{ + tmpVal &= 0; + } + }else{ + if(MASK == intMask){ + tmpVal |= 1<0){ + BL_WR_BYTE(UARTx+UART_FIFO_WDATA_OFFSET,data[txLen++]); + timeoutCnt = UART_TX_TIMEOUT_COUNT; + }else{ + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + } + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART send data to tx fifo in block mode + * + * @param uartId: UART ID type + * @param data: The data to be send + * @param len: The length of the send buffer + * + * @return SUCCESS + * +*******************************************************************************/ +BL_Err_Type UART_SendDataBlock(UART_ID_Type uartId, uint8_t* data,uint32_t len) +{ + uint32_t txLen = 0; + uint32_t UARTx = uartAddr[uartId]; + uint32_t timeoutCnt = UART_TX_TIMEOUT_COUNT; + + /* Check the parameter */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Send data */ + while(txLen0){ + BL_WR_BYTE(UARTx+UART_FIFO_WDATA_OFFSET,data[txLen++]); + timeoutCnt = UART_TX_TIMEOUT_COUNT; + }else{ + timeoutCnt--; + if(timeoutCnt == 0){ + return TIMEOUT; + } + } + } + + while(UART_GetTxBusBusyStatus(uartId) == SET){} + + return SUCCESS; +} + +/****************************************************************************//** + * @brief UART receive data from rx fifo + * + * @param uartId: UART ID type + * @param data: The receive data buffer + * @param maxLen: The max length of the buffer + * + * @return The length of the received buffer + * +*******************************************************************************/ +uint32_t UART_ReceiveData(UART_ID_Type uartId,uint8_t* data,uint32_t maxLen) +{ + uint32_t rxLen = 0; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameter */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + /* Receive data */ + while(rxLen0){ + data[rxLen++] = BL_RD_BYTE(UARTx+UART_FIFO_RDATA_OFFSET); + } + + return rxLen; +} + +/****************************************************************************//** + * @brief UART get auto baud count value + * + * @param uartId: UART ID type + * @param autoBaudDet: Detection using codeword 0x55 or start bit + * + * @return Bit period of auto baudrate detection + * +*******************************************************************************/ +uint16_t UART_GetAutoBaudCount(UART_ID_Type uartId,UART_AutoBaudDetection_Type autoBaudDet) +{ + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameter */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + CHECK_PARAM(IS_UART_AUTOBAUDDETECTION_TYPE(autoBaudDet)); + + /* Select 0x55 or start bit detection value */ + if(UART_AUTOBAUD_0X55 == autoBaudDet){ + return BL_RD_REG(UARTx,UART_STS_URX_ABR_PRD)>>0x10&0xffff; + }else{ + return BL_RD_REG(UARTx,UART_STS_URX_ABR_PRD)&0xffff; + } +} + +/****************************************************************************//** + * @brief UART get tx fifo unoccupied count value + * + * @param uartId: UART ID type + * + * @return Tx fifo unoccupied count value + * +*******************************************************************************/ +uint8_t UART_GetTxFifoCount(UART_ID_Type uartId) +{ + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameter */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + return BL_GET_REG_BITS_VAL(BL_RD_REG(UARTx,UART_FIFO_CONFIG_1),UART_TX_FIFO_CNT); +} + +/****************************************************************************//** + * @brief UART get rx fifo occupied count value + * + * @param uartId: UART ID type + * + * @return Rx fifo occupied count value + * +*******************************************************************************/ +uint8_t UART_GetRxFifoCount(UART_ID_Type uartId) +{ + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameter */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + + return BL_GET_REG_BITS_VAL(BL_RD_REG(UARTx,UART_FIFO_CONFIG_1),UART_RX_FIFO_CNT); +} + +/****************************************************************************//** + * @brief Get uart interrupt status + * + * @param uartId: UART ID type + * @param intType: UART interrupt type + * + * @return Status of interrupt + * +*******************************************************************************/ +BL_Sts_Type UART_GetIntStatus(UART_ID_Type uartId,UART_INT_Type intType) +{ + uint32_t tmpVal; + uint32_t UARTx = uartAddr[uartId]; + + /* Check the parameters */ + CHECK_PARAM(IS_UART_ID_TYPE(uartId)); + CHECK_PARAM(IS_UART_INT_TYPE(intType)); + + /* Get certain or all interrupt status */ + tmpVal = BL_RD_REG(UARTx,UART_INT_STS); + if(UART_INT_ALL == intType){ + if((tmpVal&0x1ff) != 0) + { + return SET; + }else{ + return RESET; + } + }else{ + if((tmpVal&(1U<
© COPYRIGHT(c) 2019 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "bl702_usb.h" +#include "bl702_glb.h" +#include "bl702_common.h" + + +/** @addtogroup BL70X_Peripheral_Driver + * @{ + */ + +/** @addtogroup USB + * @{ + */ + +/** @defgroup USB_Private_Macros + * @{ + */ + +/*@} end of group USB_Private_Macros */ + +/** @defgroup USB_Private_Types + * @{ + */ + +/*@} end of group USB_Private_Types */ + +/** @defgroup USB_Private_Variables + * @{ + */ + +/*@} end of group USB_Private_Variables */ + +/** @defgroup USB_Global_Variables + * @{ + */ + +/*@} end of group USB_Global_Variables */ + +/** @defgroup USB_Private_Fun_Declaration + * @{ + */ + +/*@} end of group USB_Private_Fun_Declaration */ + +/** @defgroup USB_Private_Functions + * @{ + */ + +/*@} end of group USB_Private_Functions */ + +/** @defgroup USB_Public_Functions + * @{ + */ + +BL_Err_Type USB_Enable(void) +{ + uint32_t tmpVal = 0; + + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_USB_EN); + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + + return SUCCESS; +} + +BL_Err_Type USB_Disable(void) +{ + uint32_t tmpVal = 0; + + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_USB_EN); + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + + return SUCCESS; +} + +BL_Err_Type USB_Set_Config(BL_Fun_Type enable,USB_Config_Type * usbCfg) +{ + uint32_t tmpVal=0; + + /* disable USB first */ + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_USB_EN); + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + + /* USB config */ + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + if(usbCfg->SoftwareCtrl==ENABLE){ + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_CTRL); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_USB_EP0_SW_ADDR,usbCfg->DeviceAddress); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_USB_EP0_SW_SIZE,usbCfg->EnumMaxPacketSize); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_USB_EP0_SW_NACK_IN,usbCfg->EnumInEn); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_USB_EP0_SW_NACK_OUT,usbCfg->EnumOutEn); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_USB_ROM_DCT_EN,usbCfg->RomBaseDescriptorUsed); + }else{ + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_CTRL); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_USB_ROM_DCT_EN,usbCfg->RomBaseDescriptorUsed); + } + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + + /* enable/disable USB */ + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + if(enable){ + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_USB_EN); + } + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + + return SUCCESS; +} + +BL_Err_Type USB_Set_Device_Addr(uint8_t addr) +{ + uint32_t tmpVal = 0; + + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_USB_EP0_SW_ADDR,addr); + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + + return SUCCESS; +} + +uint8_t USB_Get_Device_Addr(void) +{ + uint32_t tmpVal = 0; + + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + + return BL_GET_REG_BITS_VAL(tmpVal,USB_CR_USB_EP0_SW_ADDR); +} + +BL_Err_Type USB_Set_EPx_Xfer_Size(USB_EP_ID epId,uint8_t size) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_USB_EP0_SW_SIZE,size); + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + }else{ + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP1_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP1_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP2_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP2_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP3_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP3_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP4_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP4_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP5_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP5_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP6_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP6_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP7_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP7_CONFIG,tmpVal); + break; + + default : + break; + } + } + + return SUCCESS; +} + +BL_Err_Type USB_Set_EPx_IN_Busy(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_NACK_IN); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_STALL); + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + }else{ + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP1_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP1_STALL); + BL_WR_REG(USB_BASE,USB_EP1_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP2_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP2_STALL); + BL_WR_REG(USB_BASE,USB_EP2_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP3_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP3_STALL); + BL_WR_REG(USB_BASE,USB_EP3_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP4_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP4_STALL); + BL_WR_REG(USB_BASE,USB_EP4_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP5_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP5_STALL); + BL_WR_REG(USB_BASE,USB_EP5_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP6_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP6_STALL); + BL_WR_REG(USB_BASE,USB_EP6_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP7_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP7_STALL); + BL_WR_REG(USB_BASE,USB_EP7_CONFIG,tmpVal); + break; + + default : + break; + } + } + + return SUCCESS; +} + +BL_Err_Type USB_Set_EPx_IN_Stall(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_NACK_OUT); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_NACK_IN); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_STALL); + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + }else{ + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP1_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP1_STALL); + BL_WR_REG(USB_BASE,USB_EP1_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP2_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP2_STALL); + BL_WR_REG(USB_BASE,USB_EP2_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP3_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP3_STALL); + BL_WR_REG(USB_BASE,USB_EP3_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP4_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP4_STALL); + BL_WR_REG(USB_BASE,USB_EP4_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP5_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP5_STALL); + BL_WR_REG(USB_BASE,USB_EP5_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP6_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP6_STALL); + BL_WR_REG(USB_BASE,USB_EP6_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP7_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP7_STALL); + BL_WR_REG(USB_BASE,USB_EP7_CONFIG,tmpVal); + break; + + default : + break; + } + } + + return SUCCESS; +} + +BL_Err_Type USB_Set_EPx_OUT_Busy(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_NACK_OUT); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_STALL); + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + }else{ + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP1_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP1_STALL); + BL_WR_REG(USB_BASE,USB_EP1_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP2_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP2_STALL); + BL_WR_REG(USB_BASE,USB_EP2_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP3_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP3_STALL); + BL_WR_REG(USB_BASE,USB_EP3_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP4_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP4_STALL); + BL_WR_REG(USB_BASE,USB_EP4_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP5_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP5_STALL); + BL_WR_REG(USB_BASE,USB_EP5_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP6_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP6_STALL); + BL_WR_REG(USB_BASE,USB_EP6_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP7_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP7_STALL); + BL_WR_REG(USB_BASE,USB_EP7_CONFIG,tmpVal); + break; + + default : + break; + } + } + + return SUCCESS; +} + +BL_Err_Type USB_Set_EPx_OUT_Stall(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_NACK_OUT); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_NACK_IN); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_STALL); + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + }else{ + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP1_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP1_STALL); + BL_WR_REG(USB_BASE,USB_EP1_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP2_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP2_STALL); + BL_WR_REG(USB_BASE,USB_EP2_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP3_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP3_STALL); + BL_WR_REG(USB_BASE,USB_EP3_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP4_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP4_STALL); + BL_WR_REG(USB_BASE,USB_EP4_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP5_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP5_STALL); + BL_WR_REG(USB_BASE,USB_EP5_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP6_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP6_STALL); + BL_WR_REG(USB_BASE,USB_EP6_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP7_NACK); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP7_STALL); + BL_WR_REG(USB_BASE,USB_EP7_CONFIG,tmpVal); + break; + + default : + break; + } + } + + return SUCCESS; +} + +BL_Err_Type USB_Set_EPx_Rdy(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_RDY); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_NACK_OUT); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_NACK_IN); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_STALL); + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + }else{ + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP1_RDY); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP1_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP1_STALL); + BL_WR_REG(USB_BASE,USB_EP1_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP2_RDY); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP2_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP2_STALL); + BL_WR_REG(USB_BASE,USB_EP2_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP3_RDY); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP3_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP3_STALL); + BL_WR_REG(USB_BASE,USB_EP3_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP4_RDY); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP4_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP4_STALL); + BL_WR_REG(USB_BASE,USB_EP4_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP5_RDY); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP5_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP5_STALL); + BL_WR_REG(USB_BASE,USB_EP5_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP6_RDY); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP6_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP6_STALL); + BL_WR_REG(USB_BASE,USB_EP6_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP7_RDY); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP7_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP7_STALL); + BL_WR_REG(USB_BASE,USB_EP7_CONFIG,tmpVal); + break; + + default : + break; + } + } + + return SUCCESS; +} + +BL_Sts_Type USB_Is_EPx_RDY_Free(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_STS_USB_EP0_SW_RDY); + }else{ + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_STS_EP1_RDY); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_STS_EP2_RDY); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_STS_EP3_RDY); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_STS_EP4_RDY); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_STS_EP5_RDY); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_STS_EP6_RDY); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_STS_EP7_RDY); + break; + + default : + break; + } + } + + return tmpVal?RESET:SET; +} + +BL_Err_Type USB_Set_EPx_STALL(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_STALL); + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + }else{ + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP1_STALL); + BL_WR_REG(USB_BASE,USB_EP1_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP2_STALL); + BL_WR_REG(USB_BASE,USB_EP2_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP3_STALL); + BL_WR_REG(USB_BASE,USB_EP3_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP4_STALL); + BL_WR_REG(USB_BASE,USB_EP4_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP5_STALL); + BL_WR_REG(USB_BASE,USB_EP5_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP6_STALL); + BL_WR_REG(USB_BASE,USB_EP6_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP7_STALL); + BL_WR_REG(USB_BASE,USB_EP7_CONFIG,tmpVal); + break; + + default : + break; + } + } + + return SUCCESS; +} + +BL_Err_Type USB_Clr_EPx_STALL(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + return SUCCESS; + }else{ + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP1_STALL); + BL_WR_REG(USB_BASE,USB_EP1_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP2_STALL); + BL_WR_REG(USB_BASE,USB_EP2_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP3_STALL); + BL_WR_REG(USB_BASE,USB_EP3_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP4_STALL); + BL_WR_REG(USB_BASE,USB_EP4_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP5_STALL); + BL_WR_REG(USB_BASE,USB_EP5_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP6_STALL); + BL_WR_REG(USB_BASE,USB_EP6_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP7_STALL); + BL_WR_REG(USB_BASE,USB_EP7_CONFIG,tmpVal); + break; + + default : + break; + } + } + + return SUCCESS; +} + +BL_Err_Type USB_Set_EPx_Busy(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_NACK_IN); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_USB_EP0_SW_NACK_OUT); + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + }else{ + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP1_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP1_STALL); + BL_WR_REG(USB_BASE,USB_EP1_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP2_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP2_STALL); + BL_WR_REG(USB_BASE,USB_EP2_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP3_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP3_STALL); + BL_WR_REG(USB_BASE,USB_EP3_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP4_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP4_STALL); + BL_WR_REG(USB_BASE,USB_EP4_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP5_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP5_STALL); + BL_WR_REG(USB_BASE,USB_EP5_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP6_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP6_STALL); + BL_WR_REG(USB_BASE,USB_EP6_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_CR_EP7_NACK); + tmpVal = BL_CLR_REG_BIT(tmpVal,USB_CR_EP7_STALL); + BL_WR_REG(USB_BASE,USB_EP7_CONFIG,tmpVal); + break; + + default : + break; + } + } + + return SUCCESS; +} + +BL_Err_Type USB_Set_EPx_Status(USB_EP_ID epId,USB_EP_STATUS_Type sts) +{ + switch(sts){ + case USB_EP_STATUS_ACK: + USB_Set_EPx_Rdy(epId); + break; + case USB_EP_STATUS_NACK: + USB_Set_EPx_Busy(epId); + break; + case USB_EP_STATUS_STALL: + USB_Set_EPx_STALL(epId); + break; + case USB_EP_STATUS_NSTALL: + USB_Clr_EPx_STALL(epId); + break; + default : + break; + } + + return SUCCESS; +} + +USB_EP_STATUS_Type USB_Get_EPx_Status(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + switch((tmpVal>>24)&0x7){ + case 0: + return USB_EP_STATUS_ACK; + case 1: + return USB_EP_STATUS_STALL; + case 2: + case 4: + case 6: + return USB_EP_STATUS_NACK; + default : + break; + } + }else{ + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + break; + + default : + tmpVal = 0; + break; + } + switch((tmpVal>>14)&0x3){ + case 0: + return USB_EP_STATUS_ACK; + case 1: + return USB_EP_STATUS_STALL; + case 2: + return USB_EP_STATUS_NACK; + case 3: + default : + break; + } + } + + return USB_EP_STATUS_NSTALL; +} + +BL_Err_Type USB_IntEn(USB_INT_Type intType,uint8_t enable) +{ + uint32_t tmpVal = 0; + + if(USB_INT_ALL==intType){ + if(enable){ + BL_WR_REG(USB_BASE,USB_INT_EN,USB_INT_TYPE_ALL); + }else{ + BL_WR_REG(USB_BASE,USB_INT_EN,~USB_INT_TYPE_ALL); + } + + return SUCCESS; + } + + tmpVal = BL_RD_REG(USB_BASE,USB_INT_EN); + if(enable){ + tmpVal |= (1<type); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP1_DIR,epCfg->dir); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP1_SIZE,epCfg->EPMaxPacketSize); + BL_WR_REG(USB_BASE,USB_EP1_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP2_TYPE,epCfg->type); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP2_DIR,epCfg->dir); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP2_SIZE,epCfg->EPMaxPacketSize); + BL_WR_REG(USB_BASE,USB_EP2_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP3_TYPE,epCfg->type); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP3_DIR,epCfg->dir); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP3_SIZE,epCfg->EPMaxPacketSize); + BL_WR_REG(USB_BASE,USB_EP3_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP4_TYPE,epCfg->type); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP4_DIR,epCfg->dir); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP4_SIZE,epCfg->EPMaxPacketSize); + BL_WR_REG(USB_BASE,USB_EP4_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP5_TYPE,epCfg->type); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP5_DIR,epCfg->dir); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP5_SIZE,epCfg->EPMaxPacketSize); + BL_WR_REG(USB_BASE,USB_EP5_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP6_TYPE,epCfg->type); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP6_DIR,epCfg->dir); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP6_SIZE,epCfg->EPMaxPacketSize); + BL_WR_REG(USB_BASE,USB_EP6_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP7_TYPE,epCfg->type); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP7_DIR,epCfg->dir); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP7_SIZE,epCfg->EPMaxPacketSize); + BL_WR_REG(USB_BASE,USB_EP7_CONFIG,tmpVal); + break; + + default : + break; + } + + return SUCCESS; +} + +BL_Err_Type USB_Set_EPx_Type(USB_EP_ID epId,EP_XFER_Type type) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + return ERROR; + } + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP1_TYPE,type); + BL_WR_REG(USB_BASE,USB_EP1_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP2_TYPE,type); + BL_WR_REG(USB_BASE,USB_EP2_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP3_TYPE,type); + BL_WR_REG(USB_BASE,USB_EP3_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP4_TYPE,type); + BL_WR_REG(USB_BASE,USB_EP4_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP5_TYPE,type); + BL_WR_REG(USB_BASE,USB_EP5_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP6_TYPE,type); + BL_WR_REG(USB_BASE,USB_EP6_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP7_TYPE,type); + BL_WR_REG(USB_BASE,USB_EP7_CONFIG,tmpVal); + break; + + default : + break; + } + + return SUCCESS; +} + +EP_XFER_Type USB_Get_EPx_Type(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + return EP_CTRL; + } + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP1_TYPE); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP2_TYPE); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP3_TYPE); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP4_TYPE); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP5_TYPE); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP6_TYPE); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP7_TYPE); + break; + + default : + break; + } + + return (EP_XFER_Type)tmpVal; +} + +BL_Err_Type USB_Set_EPx_Dir(USB_EP_ID epId,EP_XFER_DIR dir) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + return ERROR; + } + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP1_DIR,dir); + BL_WR_REG(USB_BASE,USB_EP1_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP2_DIR,dir); + BL_WR_REG(USB_BASE,USB_EP2_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP3_DIR,dir); + BL_WR_REG(USB_BASE,USB_EP3_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP4_DIR,dir); + BL_WR_REG(USB_BASE,USB_EP4_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP5_DIR,dir); + BL_WR_REG(USB_BASE,USB_EP5_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP6_DIR,dir); + BL_WR_REG(USB_BASE,USB_EP6_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP7_DIR,dir); + BL_WR_REG(USB_BASE,USB_EP7_CONFIG,tmpVal); + break; + + default : + break; + } + + return SUCCESS; +} + +EP_XFER_DIR USB_Get_EPx_Dir(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + if(epId == EP_ID0){ + return EP_DISABLED; + } + switch(epId){ + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP1_DIR); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP2_DIR); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP3_DIR); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP4_DIR); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP5_DIR); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP6_DIR); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_CR_EP7_DIR); + break; + + default : + break; + } + + return (EP_XFER_DIR)tmpVal; +} + +BL_Err_Type USB_Set_EPx_Size(USB_EP_ID epId,uint32_t size) +{ + uint32_t tmpVal = 0; + + switch(epId){ + case EP_ID0: + tmpVal = BL_RD_REG(USB_BASE,USB_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_USB_EP0_SW_SIZE,size); + BL_WR_REG(USB_BASE,USB_CONFIG,tmpVal); + break; + + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP1_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP1_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP2_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP2_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP3_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP3_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP4_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP4_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP5_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP5_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP6_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP6_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_CONFIG); + tmpVal = BL_SET_REG_BITS_VAL(tmpVal,USB_CR_EP7_SIZE,size); + BL_WR_REG(USB_BASE,USB_EP7_CONFIG,tmpVal); + break; + + default : + break; + } + + return SUCCESS; +} + +BL_Sts_Type USB_Get_EPx_TX_FIFO_Errors(USB_EP_ID epId,USB_FIFO_ERROR_FLAG_Type errFlag) +{ + uint32_t tmpVal = 0; + + if(errFlag == USB_FIFO_ERROR_OVERFLOW){ + switch(epId){ + case EP_ID0: + tmpVal = BL_RD_REG(USB_BASE,USB_EP0_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP0_TX_FIFO_OVERFLOW); + break; + + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP1_TX_FIFO_OVERFLOW); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP2_TX_FIFO_OVERFLOW); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP3_TX_FIFO_OVERFLOW); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP4_TX_FIFO_OVERFLOW); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP5_TX_FIFO_OVERFLOW); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP6_TX_FIFO_OVERFLOW); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP7_TX_FIFO_OVERFLOW); + break; + + default : + tmpVal = 0; + break; + } + }else{ + switch(epId){ + case EP_ID0: + tmpVal = BL_RD_REG(USB_BASE,USB_EP0_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP0_TX_FIFO_UNDERFLOW); + break; + + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP1_TX_FIFO_UNDERFLOW); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP2_TX_FIFO_UNDERFLOW); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP3_TX_FIFO_UNDERFLOW); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP4_TX_FIFO_UNDERFLOW); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP5_TX_FIFO_UNDERFLOW); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP6_TX_FIFO_UNDERFLOW); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP7_TX_FIFO_UNDERFLOW); + break; + + default : + tmpVal = 0; + break; + } + } + return tmpVal?SET:RESET; +} + +BL_Sts_Type USB_Get_EPx_RX_FIFO_Errors(USB_EP_ID epId,USB_FIFO_ERROR_FLAG_Type errFlag) +{ + uint32_t tmpVal = 0; + + if(errFlag == USB_FIFO_ERROR_OVERFLOW){ + switch(epId){ + case EP_ID0: + tmpVal = BL_RD_REG(USB_BASE,USB_EP0_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP0_RX_FIFO_OVERFLOW); + break; + + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP1_RX_FIFO_OVERFLOW); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP2_RX_FIFO_OVERFLOW); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP3_RX_FIFO_OVERFLOW); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP4_RX_FIFO_OVERFLOW); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP5_RX_FIFO_OVERFLOW); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP6_RX_FIFO_OVERFLOW); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP7_RX_FIFO_OVERFLOW); + break; + + default : + tmpVal = 0; + break; + } + }else{ + switch(epId){ + case EP_ID0: + tmpVal = BL_RD_REG(USB_BASE,USB_EP0_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP0_RX_FIFO_UNDERFLOW); + break; + + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP1_RX_FIFO_UNDERFLOW); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP2_RX_FIFO_UNDERFLOW); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP3_RX_FIFO_UNDERFLOW); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP4_RX_FIFO_UNDERFLOW); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP5_RX_FIFO_UNDERFLOW); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP6_RX_FIFO_UNDERFLOW); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_FIFO_CONFIG); + tmpVal = BL_GET_REG_BITS_VAL(tmpVal,USB_EP7_RX_FIFO_UNDERFLOW); + break; + + default : + tmpVal = 0; + break; + } + } + return tmpVal?SET:RESET; +} + +BL_Err_Type USB_Clr_EPx_TX_FIFO_Errors(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + switch(epId){ + case EP_ID0: + tmpVal = BL_RD_REG(USB_BASE,USB_EP0_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP0_TX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP0_FIFO_CONFIG,tmpVal); + break; + + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP1_TX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP1_FIFO_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP2_TX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP2_FIFO_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP3_TX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP3_FIFO_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP4_TX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP4_FIFO_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP5_TX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP5_FIFO_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP6_TX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP6_FIFO_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP7_TX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP7_FIFO_CONFIG,tmpVal); + break; + + default : + break; + } + + return SUCCESS; +} + +BL_Err_Type USB_Clr_EPx_RX_FIFO_Errors(USB_EP_ID epId) +{ + uint32_t tmpVal = 0; + + switch(epId){ + case EP_ID0: + tmpVal = BL_RD_REG(USB_BASE,USB_EP0_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP0_RX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP0_FIFO_CONFIG,tmpVal); + break; + + case EP_ID1: + tmpVal = BL_RD_REG(USB_BASE,USB_EP1_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP1_RX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP1_FIFO_CONFIG,tmpVal); + break; + + case EP_ID2: + tmpVal = BL_RD_REG(USB_BASE,USB_EP2_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP2_RX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP2_FIFO_CONFIG,tmpVal); + break; + + case EP_ID3: + tmpVal = BL_RD_REG(USB_BASE,USB_EP3_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP3_RX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP3_FIFO_CONFIG,tmpVal); + break; + + case EP_ID4: + tmpVal = BL_RD_REG(USB_BASE,USB_EP4_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP4_RX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP4_FIFO_CONFIG,tmpVal); + break; + + case EP_ID5: + tmpVal = BL_RD_REG(USB_BASE,USB_EP5_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP5_RX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP5_FIFO_CONFIG,tmpVal); + break; + + case EP_ID6: + tmpVal = BL_RD_REG(USB_BASE,USB_EP6_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP6_RX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP6_FIFO_CONFIG,tmpVal); + break; + + case EP_ID7: + tmpVal = BL_RD_REG(USB_BASE,USB_EP7_FIFO_CONFIG); + tmpVal = BL_SET_REG_BIT(tmpVal,USB_EP7_RX_FIFO_CLR); + BL_WR_REG(USB_BASE,USB_EP7_FIFO_CONFIG,tmpVal); + break; + + default : + break; + } + + return SUCCESS; +} + + + + + +BL_Err_Type USB_EPx_Write_Data_To_FIFO(USB_EP_ID epId,uint8_t *pData,uint16_t len) +{ + uint32_t timeout = 0x00FFFFFF; + + while((!USB_Is_EPx_RDY_Free(epId))&&timeout){ + timeout--; + } + if(!timeout){ + return ERROR; + } + if(len==1){ + USB_Set_EPx_Xfer_Size(EP_ID0,1); + }else{ + USB_Set_EPx_Xfer_Size(EP_ID0,64); + } + for(uint16_t i=0;i
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "string.h" +#include "bl702_xip_sflash.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup XIP_SFLASH + * @{ + */ + +/** @defgroup XIP_SFLASH_Private_Macros + * @{ + */ + +/*@} end of group XIP_SFLASH_Private_Macros */ + +/** @defgroup XIP_SFLASH_Private_Types + * @{ + */ + +/*@} end of group XIP_SFLASH_Private_Types */ + +/** @defgroup XIP_SFLASH_Private_Variables + * @{ + */ +static uint8_t aesEnable; + +/*@} end of group XIP_SFLASH_Private_Variables */ + +/** @defgroup XIP_SFLASH_Global_Variables + * @{ + */ + +/*@} end of group XIP_SFLASH_Global_Variables */ + +/** @defgroup XIP_SFLASH_Private_Fun_Declaration + * @{ + */ + +/*@} end of group XIP_SFLASH_Private_Fun_Declaration */ + +/** @defgroup XIP_SFLASH_Private_Functions + * @{ + */ + +/****************************************************************************//** + * @brief XIP SFlash option save + * + * @param None + * + * @return None + * +*******************************************************************************/ +void XIP_SFlash_Opt_Enter(void) +{ + aesEnable=SF_Ctrl_Is_AES_Enable(); + if(aesEnable){ + SF_Ctrl_AES_Disable(); + } +} + +/****************************************************************************//** + * @brief XIP SFlash option restore + * + * @param None + * + * @return None + * +*******************************************************************************/ +void XIP_SFlash_Opt_Exit(void) +{ + if(aesEnable){ + SF_Ctrl_AES_Enable(); + } +} + +/****************************************************************************//** + * @brief Save flash controller state + * + * @param pFlashCfg: Flash config pointer + * @param offset: CPU XIP flash offset pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION XIP_SFlash_State_Save(SPI_Flash_Cfg_Type *pFlashCfg,uint32_t *offset) +{ + /* XIP_SFlash_Delay */ + volatile uint32_t i=32*2; + while(i--); + + SF_Ctrl_Set_Owner(SF_CTRL_OWNER_SAHB); + /* Exit form continous read for accepting command */ + SFlash_Reset_Continue_Read(pFlashCfg); + /* Send software reset command(80bv has no this command)to deburst wrap for ISSI like */ + SFlash_Software_Reset(pFlashCfg); + /* For disable command that is setting register instaed of send command, we need write enable */ + SFlash_DisableBurstWrap(pFlashCfg); + /* Enable QE again in case reset command make it reset */ + SFlash_Qspi_Enable(pFlashCfg); + /* Deburst again to make sure */ + SFlash_DisableBurstWrap(pFlashCfg); + + /* Clear offset setting*/ + *offset=SF_Ctrl_Get_Flash_Image_Offset(); + SF_Ctrl_Set_Flash_Image_Offset(0); + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Restore flash controller state + * + * @param pFlashCfg: Flash config pointer + * @param ioMode: flash controller interface mode + * @param offset: CPU XIP flash offset + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION XIP_SFlash_State_Restore(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t offset) +{ + uint32_t tmp[1]; + + SF_Ctrl_Set_Flash_Image_Offset(offset); + + SFlash_SetBurstWrap(pFlashCfg); + SFlash_Read(pFlashCfg,ioMode,1,0x0,(uint8_t *)tmp, sizeof(tmp)); + SFlash_Set_IDbus_Cfg(pFlashCfg,ioMode,1,0,32); + + return SUCCESS; +} +#endif + +/*@} end of group XIP_SFLASH_Private_Functions */ + +/** @defgroup XIP_SFLASH_Public_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Erase flash one region + * + * @param pFlashCfg: Flash config pointer + * @param ioMode: flash controller interface mode + * @param startaddr: start address to erase + * @param endaddr: end address(include this address) to erase + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION XIP_SFlash_Erase_Need_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t startaddr,uint32_t endaddr) +{ + BL_Err_Type stat; + uint32_t offset; + + stat=XIP_SFlash_State_Save(pFlashCfg,&offset); + if(stat!=SUCCESS){ + SFlash_Set_IDbus_Cfg(pFlashCfg,ioMode,1,0,32); + }else{ + stat=SFlash_Erase(pFlashCfg,startaddr,endaddr); + XIP_SFlash_State_Restore(pFlashCfg,ioMode,offset); + } + + return stat; +} +#endif + +/****************************************************************************//** + * @brief Program flash one region + * + * @param pFlashCfg: Flash config pointer + * @param ioMode: flash controller interface mode + * @param addr: start address to be programed + * @param data: data pointer to be programed + * @param len: data length to be programed + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION XIP_SFlash_Write_Need_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr,uint8_t *data, uint32_t len) +{ + BL_Err_Type stat; + uint32_t offset; + + stat=XIP_SFlash_State_Save(pFlashCfg,&offset); + if(stat!=SUCCESS){ + SFlash_Set_IDbus_Cfg(pFlashCfg,ioMode,1,0,32); + }else{ + stat= SFlash_Program(pFlashCfg,ioMode,addr,data,len); + XIP_SFlash_State_Restore(pFlashCfg,ioMode,offset); + } + + return stat; +} +#endif + +/****************************************************************************//** + * @brief Read data from flash + * + * @param pFlashCfg: Flash config pointer + * @param ioMode: flash controller interface mode + * @param addr: flash read start address + * @param data: data pointer to store data read from flash + * @param len: data length to read + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION XIP_SFlash_Read_Need_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint32_t addr,uint8_t *data, uint32_t len) +{ + BL_Err_Type stat; + uint32_t offset; + + stat=XIP_SFlash_State_Save(pFlashCfg,&offset); + if(stat!=SUCCESS){ + SFlash_Set_IDbus_Cfg(pFlashCfg,ioMode,1,0,32); + }else{ + stat=SFlash_Read(pFlashCfg,ioMode,0,addr, data,len); + XIP_SFlash_State_Restore(pFlashCfg,ioMode,offset); + } + + return stat; +} +#endif + +/****************************************************************************//** + * @brief Get Flash Jedec ID + * + * @param pFlashCfg: Flash config pointer + * @param ioMode: flash controller interface mode + * @param data: data pointer to store Jedec ID Read from flash + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION XIP_SFlash_GetJedecId_Need_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint8_t *data) +{ + BL_Err_Type stat; + uint32_t offset; + + stat=XIP_SFlash_State_Save(pFlashCfg,&offset); + if(stat!=SUCCESS){ + SFlash_Set_IDbus_Cfg(pFlashCfg,ioMode,1,0,32); + }else{ + SFlash_GetJedecId(pFlashCfg,data); + XIP_SFlash_State_Restore(pFlashCfg,ioMode,offset); + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Get Flash Device ID + * + * @param pFlashCfg: Flash config pointer + * @param ioMode: flash controller interface mode + * @param data: data pointer to store Device ID Read from flash + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION XIP_SFlash_GetDeviceId_Need_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint8_t *data) +{ + BL_Err_Type stat; + uint32_t offset; + + stat=XIP_SFlash_State_Save(pFlashCfg,&offset); + if(stat!=SUCCESS){ + SFlash_Set_IDbus_Cfg(pFlashCfg,ioMode,1,0,32); + }else{ + SFlash_GetDeviceId(data); + XIP_SFlash_State_Restore(pFlashCfg,ioMode,offset); + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Get Flash Unique ID + * + * @param pFlashCfg: Flash config pointer + * @param ioMode: flash controller interface mode + * @param data: data pointer to store Device ID Read from flash + * @param idLen: Unique id len + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION XIP_SFlash_GetUniqueId_Need_Lock(SPI_Flash_Cfg_Type *pFlashCfg,SF_Ctrl_IO_Type ioMode,uint8_t *data,uint8_t idLen) +{ + BL_Err_Type stat; + uint32_t offset; + + stat=XIP_SFlash_State_Save(pFlashCfg,&offset); + if(stat!=SUCCESS){ + SFlash_Set_IDbus_Cfg(pFlashCfg,ioMode,1,0,32); + }else{ + SFlash_GetUniqueId(data,idLen); + XIP_SFlash_State_Restore(pFlashCfg,ioMode,offset); + } + + return SUCCESS; +} +#endif + +/****************************************************************************//** + * @brief Read data from flash via XIP + * + * @param addr: flash read start address + * @param data: data pointer to store data read from flash + * @param len: data length to read + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +#ifndef BFLB_USE_ROM_DRIVER +__WEAK +BL_Err_Type ATTR_TCM_SECTION XIP_SFlash_Read_Via_Cache_Need_Lock(uint32_t addr,uint8_t *data, uint32_t len) +{ + uint32_t offset; + + if(addr>=BL702_FLASH_XIP_BASE && addr
© COPYRIGHT(c) 2020 Bouffalo Lab
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of Bouffalo Lab 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 THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "string.h" +#include "bl702_xip_sflash_ext.h" + +/** @addtogroup BL702_Peripheral_Driver + * @{ + */ + +/** @addtogroup XIP_SFLASH + * @{ + */ + +/** @defgroup XIP_SFLASH_EXT_Private_Macros + * @{ + */ + +/*@} end of group XIP_SFLASH_EXT_Private_Macros */ + +/** @defgroup XIP_SFLASH_EXT_Private_Types + * @{ + */ + +/*@} end of group XIP_SFLASH_EXT_Private_Types */ + +/** @defgroup XIP_SFLASH_EXT_Private_Variables + * @{ + */ + +static SPI_Flash_Cfg_Type flashCfg; + +/*@} end of group XIP_SFLASH_EXT_Private_Variables */ + +/** @defgroup XIP_SFLASH_EXT_Global_Variables + * @{ + */ + +/*@} end of group XIP_SFLASH_EXT_Global_Variables */ + +/** @defgroup XIP_SFLASH_EXT_Private_Fun_Declaration + * @{ + */ + +/*@} end of group XIP_SFLASH_EXT_Private_Fun_Declaration */ + +/** @defgroup XIP_SFLASH_EXT_Private_Functions + * @{ + */ + +/****************************************************************************//** + * @brief Read data from flash with lock + * + * @param pFlashCfg:Flash config pointer + * + * @return SUCCESS or ERROR + * +*******************************************************************************/ +__WEAK +BL_Err_Type ATTR_TCM_SECTION XIP_SFlash_Init(SPI_Flash_Cfg_Type *pFlashCfg) +{ + uint32_t ret; + + if(pFlashCfg==NULL){ + /* Get flash config identify */ + XIP_SFlash_Opt_Enter(); + ret=SF_Cfg_Flash_Identify_Ext(1,1,0,0,&flashCfg); + XIP_SFlash_Opt_Exit(); + if((ret&BFLB_FLASH_ID_VALID_FLAG)==0){ + return ERROR; + } + }else{ + memcpy(&flashCfg,pFlashCfg,sizeof(flashCfg)); + } + + return SUCCESS; +} + +/****************************************************************************//** + * @brief Read data from flash with lock + * + * @param addr: flash read start address + * @param dst: data pointer to store data read from flash + * @param len: data length to read + * + * @return 0 + * +*******************************************************************************/ +__WEAK +int ATTR_TCM_SECTION XIP_SFlash_Read(uint32_t addr, uint8_t *dst, int len) +{ + __disable_irq(); + XIP_SFlash_Opt_Enter(); + XIP_SFlash_Read_Need_Lock(&flashCfg, flashCfg.ioMode&0x0f, addr, dst, len); + XIP_SFlash_Opt_Exit(); + __enable_irq(); + return 0; +} + +/****************************************************************************//** + * @brief Program flash one region with lock + * + * @param addr: Start address to be programed + * @param src: Data pointer to be programed + * @param len: Data length to be programed + * + * @return 0 + * +*******************************************************************************/ +__WEAK +int ATTR_TCM_SECTION XIP_SFlash_Write(uint32_t addr, uint8_t *src, int len) +{ + __disable_irq(); + XIP_SFlash_Opt_Enter(); + XIP_SFlash_Write_Need_Lock(&flashCfg,flashCfg.ioMode&0x0f, addr, src, len); + XIP_SFlash_Opt_Exit(); + __enable_irq(); + return 0; +} + +/****************************************************************************//** + * @brief Erase flash one region with lock + * + * @param addr: Start address to be erased + * @param len: Data length to be erased + * + * @return 0 + * +*******************************************************************************/ +__WEAK +int ATTR_TCM_SECTION XIP_SFlash_Erase(uint32_t addr, int len) +{ + __disable_irq(); + XIP_SFlash_Opt_Enter(); + XIP_SFlash_Erase_Need_Lock(&flashCfg,flashCfg.ioMode&0x0f, addr, addr + len - 1); + XIP_SFlash_Opt_Exit(); + __enable_irq(); + return 0; +} + +/*@} end of group XIP_SFLASH_EXT_Public_Functions */ + +/*@} end of group XIP_SFLASH_EXT */ + +/*@} end of group BL702_Peripheral_Driver */ diff --git a/examples/adc/adc_continuous_differential/CMakeLists.txt b/examples/adc/adc_continuous_differential/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/adc/adc_continuous_differential/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/adc/adc_continuous_differential/cdk/adc_continuous_differential.cdkproj b/examples/adc/adc_continuous_differential/cdk/adc_continuous_differential.cdkproj new file mode 100644 index 00000000..007dc93b --- /dev/null +++ b/examples/adc/adc_continuous_differential/cdk/adc_continuous_differential.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/adc/adc_continuous_differential/main.c b/examples/adc/adc_continuous_differential/main.c new file mode 100644 index 00000000..d4bbd8c2 --- /dev/null +++ b/examples/adc/adc_continuous_differential/main.c @@ -0,0 +1,77 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_adc.h" +#include "hal_gpio.h" + +#define ADC_SCAN_NUM (50) + +uint8_t PinList[] = {GPIO_PIN_11, GPIO_PIN_12}; +adc_channel_t posChList[] = {ADC_CHANNEL3}; +adc_channel_t negChList[] = {ADC_CHANNEL4}; + +adc_res_val_t result_val; + +struct device* adc_test; + +int main(void) +{ + bflb_platform_init(0); + + adc_user_cfg_t adc_user_cfg; + + adc_user_cfg.dma_en = DISABLE; // disable dma + adc_user_cfg.conv_mode = ADC_CON_CONV; // continuous conversion + adc_user_cfg.in_mode = ADC_DIFFERENTIAL_IN; // differential input mode + + adc_user_cfg.pinList = PinList; + adc_user_cfg.posChList = posChList; + adc_user_cfg.negChList = negChList; + adc_user_cfg.num = sizeof(posChList)/sizeof(adc_channel_t); + + MSG("adc one-shot differential test case \r\n"); + adc_register(ADC0_INDEX, "adc_one_diff", DEVICE_OFLAG_STREAM_RX, &adc_user_cfg); + + adc_test = device_find("adc_one_diff"); + if(adc_test) + { + device_open(adc_test, DEVICE_OFLAG_STREAM_RX); + MSG("adc device find success\r\n"); + } + + device_control(adc_test,DEVICE_CTRL_RESUME,0); + while (1) + { + device_read(adc_test, 0, (void *)&result_val,sizeof(result_val)/sizeof(adc_res_val_t)); + if(result_val.volt <= 0) + { + result_val.volt = -result_val.volt; + MSG("PosId = %d NegId = %d V= -%d mV \r\n",result_val.posChan,result_val.negChan,(uint32_t)(result_val.volt * 1000)); + } + else + { + MSG("PosId = %d NegId = %d V= %d mV \r\n",result_val.posChan,result_val.negChan,(uint32_t)(result_val.volt * 1000)); + } + // bflb_platform_delay_ms(500); + } + +} \ No newline at end of file diff --git a/examples/adc/adc_continuous_single_ended/CMakeLists.txt b/examples/adc/adc_continuous_single_ended/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/adc/adc_continuous_single_ended/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/adc/adc_continuous_single_ended/cdk/adc_continuous_single_ended.cdkproj b/examples/adc/adc_continuous_single_ended/cdk/adc_continuous_single_ended.cdkproj new file mode 100644 index 00000000..991732af --- /dev/null +++ b/examples/adc/adc_continuous_single_ended/cdk/adc_continuous_single_ended.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/adc/adc_continuous_single_ended/main.c b/examples/adc/adc_continuous_single_ended/main.c new file mode 100644 index 00000000..32eda428 --- /dev/null +++ b/examples/adc/adc_continuous_single_ended/main.c @@ -0,0 +1,68 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_adc.h" +#include "hal_gpio.h" + +uint8_t PinList[] = {GPIO_PIN_12}; +adc_channel_t posChList[] = {ADC_CHANNEL4}; +adc_channel_t negChList[] = {ADC_CHANNEL_GND}; + +adc_res_val_t result_val; + +struct device* adc_test; + +int main(void) +{ + bflb_platform_init(0); + + adc_user_cfg_t adc_user_cfg; + + adc_user_cfg.dma_en = DISABLE; // disable dma + adc_user_cfg.conv_mode = ADC_CON_CONV; // continuous conversion + adc_user_cfg.in_mode = ADC_SINGLE_ENDED_IN; // single-ended input mode + + adc_user_cfg.pinList = PinList; + adc_user_cfg.posChList = posChList; + adc_user_cfg.negChList = negChList; + adc_user_cfg.num = sizeof(posChList)/sizeof(adc_channel_t); + + MSG("adc continue single ended test case \r\n"); + adc_register(ADC0_INDEX, "adc_continue_single", DEVICE_OFLAG_STREAM_RX, &adc_user_cfg); + + adc_test = device_find("adc_continue_single"); + if(adc_test) + { + device_open(adc_test, DEVICE_OFLAG_STREAM_RX); + MSG("adc device find success\r\n"); + } + + device_control(adc_test,DEVICE_CTRL_RESUME,0); + + while (1) + { + device_read(adc_test, 0, (void *)&result_val,sizeof(result_val)/sizeof(adc_res_val_t)); + MSG("PosId = %d NegId = %d V= %d mV \r\n",result_val.posChan,result_val.negChan,(uint32_t)(result_val.volt * 1000)); + // bflb_platform_delay_ms(500); + } + +} \ No newline at end of file diff --git a/examples/adc/adc_key/cdk/adc_key.cdkproj b/examples/adc/adc_key/cdk/adc_key.cdkproj new file mode 100644 index 00000000..b9fc2cc9 --- /dev/null +++ b/examples/adc/adc_key/cdk/adc_key.cdkproj @@ -0,0 +1,724 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + BL702;BL702_EVB;ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + diff --git a/examples/adc/adc_key/main.c b/examples/adc/adc_key/main.c new file mode 100644 index 00000000..6d61973d --- /dev/null +++ b/examples/adc/adc_key/main.c @@ -0,0 +1,169 @@ +/** + * @file adc_key.c + * @author Boufflao Lab MCU Team (jychen@bouffalolab.com) + * @brief + * @version 0.1 + * @date 2021-03-23 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "hal_adc.h" +#include "hal_gpio.h" + + +#define KEY0_ADC_VALUE 0 +#define KEY1_ADC_VALUE 100 +#define KEY2_ADC_VALUE 200 +#define KEY3_ADC_VALUE 300 +#define KEY4_ADC_VALUE 430 +#define KEY_NO_VALUE 3000 +#define KEY_MEASURE_OFFSET 30 + +#define KEY_FILTER_NUM 200 +typedef struct { + uint32_t vaildKeyNum; + uint16_t keyValue[KEY_FILTER_NUM]; +}adc_keys_status; + +uint8_t PinList[] = {GPIO_PIN_18}; +adc_channel_t posChList[] = {ADC_CHANNEL8}; +adc_channel_t negChList[] = {ADC_CHANNEL_GND}; +adc_res_val_t result_val; + +adc_keys_status key_machine; + +/** + * @brief init adc key machine + * + */ +static void key_machine_init(void){ + key_machine.vaildKeyNum = 0; + memset(key_machine.keyValue,0xff,KEY_FILTER_NUM); +} + +/** + * @brief Get the adc value range object + * + * @param Vmv input adc value ,unit is mV + * @return uint16_t + */ +static uint16_t get_adc_value_range(uint32_t Vmv){ + + if(Vmv > KEY4_ADC_VALUE - KEY_MEASURE_OFFSET && Vmv < KEY4_ADC_VALUE + KEY_MEASURE_OFFSET){ + return KEY4_ADC_VALUE; + }else if(Vmv > KEY3_ADC_VALUE - KEY_MEASURE_OFFSET && Vmv < KEY3_ADC_VALUE + KEY_MEASURE_OFFSET){ + return KEY3_ADC_VALUE; + }else if(Vmv > KEY2_ADC_VALUE - KEY_MEASURE_OFFSET && Vmv < KEY2_ADC_VALUE + KEY_MEASURE_OFFSET){ + return KEY2_ADC_VALUE; + }else if(Vmv > KEY1_ADC_VALUE - KEY_MEASURE_OFFSET && Vmv < KEY1_ADC_VALUE + KEY_MEASURE_OFFSET){ + return KEY1_ADC_VALUE; + }else if(Vmv < KEY_MEASURE_OFFSET){ + return KEY0_ADC_VALUE; + }else{ + return KEY_NO_VALUE; + } +} + +/** + * @brief Get the adc key value object + * + * @param Vmv input adc value ,unit is mV + * @return int + */ +static int get_adc_key_value(uint32_t Vmv){ + volatile uint16_t key_num[5]={0}; + uint8_t bigger=0,i=0,j=0; + + if(Vmv>KEY0_ADC_VALUE && Vmv KEY_FILTER_NUM){ + for(i=0;i=key_num[j]){ + bigger = 1; + }else{ + bigger = 0; + break; + } + } + if(bigger){ + key_machine_init(); + return i; + } + } + + } + } + return KEY_NO_VALUE; + +} + +int main(void) +{ + bflb_platform_init(0); + uint16_t keyValue=0; + + adc_user_cfg_t adc_user_cfg; + + adc_user_cfg.dma_en = DISABLE; + adc_user_cfg.conv_mode = ADC_CON_CONV; + adc_user_cfg.in_mode = ADC_SINGLE_ENDED_IN; + + adc_user_cfg.pinList = PinList; + adc_user_cfg.posChList = posChList; + adc_user_cfg.negChList = negChList; + adc_user_cfg.num = sizeof(posChList)/sizeof(adc_channel_t); + + adc_register(ADC0_INDEX, "adc_key", DEVICE_OFLAG_STREAM_RX, &adc_user_cfg); + + struct device* adc_test = device_find("adc_key"); + + if(adc_test) + { + device_open(adc_test, DEVICE_OFLAG_STREAM_RX); + }else{ + MSG("device open failed\r\n"); + } + + device_control(adc_test,DEVICE_CTRL_RESUME,0); + + key_machine_init(); + + while (1) + { + device_read(adc_test,0,(void *)&result_val,1); + keyValue = get_adc_key_value(result_val.volt * 1000); + if( keyValue!=KEY_NO_VALUE){ + MSG("key %d pressed\r\n",keyValue); + } + } + +} \ No newline at end of file diff --git a/examples/adc/adc_one_shot_differential/CMakeLists.txt b/examples/adc/adc_one_shot_differential/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/adc/adc_one_shot_differential/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/adc/adc_one_shot_differential/cdk/adc_one_shot_differential.cdkproj b/examples/adc/adc_one_shot_differential/cdk/adc_one_shot_differential.cdkproj new file mode 100644 index 00000000..75bcbb06 --- /dev/null +++ b/examples/adc/adc_one_shot_differential/cdk/adc_one_shot_differential.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/adc/adc_one_shot_differential/main.c b/examples/adc/adc_one_shot_differential/main.c new file mode 100644 index 00000000..131c7151 --- /dev/null +++ b/examples/adc/adc_one_shot_differential/main.c @@ -0,0 +1,82 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_adc.h" +#include "hal_gpio.h" + +#define ADC_SCAN_NUM (50) + +uint8_t PinList[] = {GPIO_PIN_11, GPIO_PIN_12}; +adc_channel_t posChList[] = {ADC_CHANNEL3}; +adc_channel_t negChList[] = {ADC_CHANNEL4}; + +adc_res_val_t result_val; + +struct device* adc_test; + +int main(void) +{ + bflb_platform_init(0); + + adc_user_cfg_t adc_user_cfg; + + adc_user_cfg.dma_en = DISABLE; // disable dma + adc_user_cfg.conv_mode = ADC_ONE_CONV; // single conversion + adc_user_cfg.in_mode = ADC_DIFFERENTIAL_IN; // differential input mode + + adc_user_cfg.pinList = PinList; + adc_user_cfg.posChList = posChList; + adc_user_cfg.negChList = negChList; + adc_user_cfg.num = sizeof(posChList)/sizeof(adc_channel_t); + + MSG("adc one-shot differential test case \r\n"); + adc_register(ADC0_INDEX, "adc_one_diff", DEVICE_OFLAG_STREAM_RX, &adc_user_cfg); + + adc_test = device_find("adc_one_diff"); + if(adc_test) + { + device_open(adc_test, DEVICE_OFLAG_STREAM_RX); + MSG("adc device find success\r\n"); + } + + for(uint32_t i = 0; i < ADC_SCAN_NUM; i++ ) + { + device_control(adc_test,DEVICE_CTRL_RESUME,0); + device_read(adc_test, 0, (void *)&result_val,sizeof(result_val)/sizeof(adc_res_val_t)); + if(result_val.volt <= 0) + { + result_val.volt = -result_val.volt; + MSG("PosId = %d NegId = %d V= -%d mV \r\n",result_val.posChan,result_val.negChan,(uint32_t)(result_val.volt * 1000)); + } + else + { + MSG("PosId = %d NegId = %d V= %d mV \r\n",result_val.posChan,result_val.negChan,(uint32_t)(result_val.volt * 1000)); + } + bflb_platform_delay_ms(500); + } + + while (1) + { + + } + +} \ No newline at end of file diff --git a/examples/adc/adc_one_shot_single_ended/CMakeLists.txt b/examples/adc/adc_one_shot_single_ended/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/adc/adc_one_shot_single_ended/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/adc/adc_one_shot_single_ended/cdk/adc_one_shot_single_ended.cdkproj b/examples/adc/adc_one_shot_single_ended/cdk/adc_one_shot_single_ended.cdkproj new file mode 100644 index 00000000..eb9b51f1 --- /dev/null +++ b/examples/adc/adc_one_shot_single_ended/cdk/adc_one_shot_single_ended.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/adc/adc_one_shot_single_ended/main.c b/examples/adc/adc_one_shot_single_ended/main.c new file mode 100644 index 00000000..55000933 --- /dev/null +++ b/examples/adc/adc_one_shot_single_ended/main.c @@ -0,0 +1,74 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_adc.h" +#include "hal_gpio.h" + +#define ADC_SCAN_NUM (100) + +uint8_t PinList[] = {GPIO_PIN_11}; +adc_channel_t posChList[] = {ADC_CHANNEL3}; +adc_channel_t negChList[] = {ADC_CHANNEL_GND}; + +adc_res_val_t result_val; + +struct device* adc_test; + +int main(void) +{ + bflb_platform_init(0); + + adc_user_cfg_t adc_user_cfg; + + adc_user_cfg.dma_en = DISABLE; // disable dma + adc_user_cfg.conv_mode = ADC_ONE_CONV; // single conversion + adc_user_cfg.in_mode = ADC_SINGLE_ENDED_IN; // single-ended input mode + + adc_user_cfg.pinList = PinList; + adc_user_cfg.posChList = posChList; + adc_user_cfg.negChList = negChList; + adc_user_cfg.num = sizeof(posChList)/sizeof(adc_channel_t); + + MSG("adc one-shot single ended test case \r\n"); + adc_register(ADC0_INDEX, "adc_one_single", DEVICE_OFLAG_STREAM_RX, &adc_user_cfg); + + adc_test = device_find("adc_one_single"); + if(adc_test) + { + device_open(adc_test, DEVICE_OFLAG_STREAM_RX); + MSG("adc device find success\r\n"); + } + + for(uint32_t i = 0; i < ADC_SCAN_NUM; i++ ) + { + device_control(adc_test,DEVICE_CTRL_RESUME,0); + device_read(adc_test, 0, (void *)&result_val,sizeof(result_val)/sizeof(adc_res_val_t)); + MSG("PosId = %d NegId = %d V= %d mV \r\n",result_val.posChan,result_val.negChan,(uint32_t)(result_val.volt * 1000)); + bflb_platform_delay_ms(500); + } + + while (1) + { + + } + +} \ No newline at end of file diff --git a/examples/adc/adc_scan_single_ended/CMakeLists.txt b/examples/adc/adc_scan_single_ended/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/adc/adc_scan_single_ended/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/adc/adc_scan_single_ended/cdk/adc_scan_single_ended.cdkproj b/examples/adc/adc_scan_single_ended/cdk/adc_scan_single_ended.cdkproj new file mode 100644 index 00000000..f4f05b49 --- /dev/null +++ b/examples/adc/adc_scan_single_ended/cdk/adc_scan_single_ended.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/adc/adc_scan_single_ended/main.c b/examples/adc/adc_scan_single_ended/main.c new file mode 100644 index 00000000..ed90b6e4 --- /dev/null +++ b/examples/adc/adc_scan_single_ended/main.c @@ -0,0 +1,74 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_adc.h" +#include "hal_gpio.h" + +#define ADC_SCAN_NUM (50) + +uint8_t PinList[] = {GPIO_PIN_11,GPIO_PIN_12}; +adc_channel_t posChList[] = {ADC_CHANNEL3,ADC_CHANNEL4}; +adc_channel_t negChList[] = {ADC_CHANNEL_GND,ADC_CHANNEL_GND}; + +adc_res_val_t result_val; + +struct device* adc_test; + +int main(void) +{ + bflb_platform_init(0); + + adc_user_cfg_t adc_user_cfg; + + adc_user_cfg.dma_en = DISABLE; // disable dma + adc_user_cfg.conv_mode = ADC_CON_CONV; // single conversion + adc_user_cfg.in_mode = ADC_SINGLE_ENDED_IN; // single-ended input mode + + adc_user_cfg.pinList = PinList; + adc_user_cfg.posChList = posChList; + adc_user_cfg.negChList = negChList; + adc_user_cfg.num = sizeof(posChList)/sizeof(adc_channel_t); + + MSG("adc one-shot single ended test case \r\n"); + adc_register(ADC0_INDEX, "adc_one_single", DEVICE_OFLAG_STREAM_RX, &adc_user_cfg); + + adc_test = device_find("adc_one_single"); + if(adc_test) + { + device_open(adc_test, DEVICE_OFLAG_STREAM_RX); + MSG("adc device find success\r\n"); + } + + for(uint32_t i = 0; i < ADC_SCAN_NUM; i++ ) + { + device_control(adc_test,DEVICE_CTRL_RESUME,0); + device_read(adc_test, 0, (void *)&result_val,sizeof(result_val)/sizeof(adc_res_val_t)); + MSG("PosId = %d NegId = %d V= %d mV \r\n",result_val.posChan,result_val.negChan,(uint32_t)(result_val.volt * 1000)); + // bflb_platform_delay_ms(10); + } + + while (1) + { + return SUCCESS; + } + +} \ No newline at end of file diff --git a/examples/adc/adc_vbat_poll/CMakeLists.txt b/examples/adc/adc_vbat_poll/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/adc/adc_vbat_poll/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/adc/adc_vbat_poll/cdk/adc_vbat_poll.cdkproj b/examples/adc/adc_vbat_poll/cdk/adc_vbat_poll.cdkproj new file mode 100644 index 00000000..984597b1 --- /dev/null +++ b/examples/adc/adc_vbat_poll/cdk/adc_vbat_poll.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/adc/adc_vbat_poll/main.c b/examples/adc/adc_vbat_poll/main.c new file mode 100644 index 00000000..aded3cef --- /dev/null +++ b/examples/adc/adc_vbat_poll/main.c @@ -0,0 +1,70 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_adc.h" +#include "hal_gpio.h" + +uint8_t PinList[] = {GPIO_PIN_18}; // ADC Pin list setting +adc_channel_t posChList[] = {ADC_CHANNEL_VABT_HALF}; // ADC Positive channel list setting +adc_channel_t negChList[] = {ADC_CHANNEL_GND}; // ADC Negative channel list setting + +struct device* vbat_test; + +adc_res_val_t result; + +int main(void) +{ + bflb_platform_init(0); + + adc_user_cfg_t adc_user_cfg; + + adc_user_cfg.dma_en = DISABLE; // disable dma + adc_user_cfg.conv_mode = ADC_ONE_CONV; // single conversion + adc_user_cfg.in_mode = ADC_SINGLE_ENDED_IN; // single-ended input mode + + adc_user_cfg.pinList = PinList; + adc_user_cfg.posChList = posChList; + adc_user_cfg.negChList = negChList; + adc_user_cfg.num = sizeof(posChList)/sizeof(adc_channel_t); + + adc_register(ADC0_INDEX, "adc_vbat_test", DEVICE_OFLAG_STREAM_RX, &adc_user_cfg); + + vbat_test = device_find("adc_vbat_test"); + if(vbat_test) + { + MSG("adc vbat test device find success\r\n"); + device_open(vbat_test,DEVICE_OFLAG_STREAM_RX); + } + + while(1){ + bflb_platform_delay_ms(1000); + MSG("adc vbat test case\r\n"); + for(uint8_t i=0;i<10;i++) + { + device_control(vbat_test,DEVICE_CTRL_RESUME,NULL); + device_read(vbat_test,0,&result,1); + MSG("vBat = %d mV\n",(uint32_t)(result.volt * 2000)); + + bflb_platform_delay_ms(500); + } + } +} \ No newline at end of file diff --git a/examples/bl_mcu_sdk.cdkws b/examples/bl_mcu_sdk.cdkws new file mode 100644 index 00000000..2fcbe894 --- /dev/null +++ b/examples/bl_mcu_sdk.cdkws @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/dac/dac_dma/CMakeLists.txt b/examples/dac/dac_dma/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/dac/dac_dma/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/dac/dac_dma/cdk/dac_dma.cdkproj b/examples/dac/dac_dma/cdk/dac_dma.cdkproj new file mode 100644 index 00000000..7cc5dc8d --- /dev/null +++ b/examples/dac/dac_dma/cdk/dac_dma.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/dac/dac_dma/main.c b/examples/dac/dac_dma/main.c new file mode 100644 index 00000000..c54540c7 --- /dev/null +++ b/examples/dac/dac_dma/main.c @@ -0,0 +1,103 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_dac.h" +#include "hal_dma.h" + +const uint16_t sinList[]={ +500 ,506 ,513 ,519 ,525 ,531 ,538 ,544 ,550 ,556 , +563 ,569 ,575 ,581 ,587 ,594 ,600 ,606 ,612 ,618 , +624 ,630 ,636 ,642 ,648 ,654 ,660 ,666 ,672 ,678 , +684 ,690 ,696 ,701 ,707 ,713 ,718 ,724 ,730 ,735 , +741 ,746 ,752 ,757 ,762 ,768 ,773 ,778 ,784 ,789 , +794 ,799 ,804 ,809 ,814 ,819 ,823 ,828 ,833 ,838 , +842 ,847 ,851 ,856 ,860 ,864 ,869 ,873 ,877 ,881 , +885 ,889 ,893 ,897 ,901 ,904 ,908 ,912 ,915 ,919 , +922 ,925 ,929 ,932 ,935 ,938 ,941 ,944 ,947 ,950 , +952 ,955 ,958 ,960 ,962 ,965 ,967 ,969 ,971 ,973 , +975 ,977 ,979 ,981 ,983 ,984 ,986 ,987 ,989 ,990 , +991 ,992 ,993 ,994 ,995 ,996 ,997 ,997 ,998 ,999 , +999 ,999 ,1000 ,1000 ,1000 ,1000 ,1000 ,1000 ,1000 , +999 ,999 ,999 ,998 ,998 ,997 ,996 ,995 ,994 ,993 , +992 ,991 ,990 ,989 ,987 ,986 ,984 ,983 ,981 ,979 , +978 ,976 ,974 ,972 ,970 ,967 ,965 ,963 ,960 ,958 ,955 ,953 ,950 ,947 ,944 ,941 ,938 ,935 , +932 ,929 ,926 ,922 ,919 ,916 ,912 ,908 ,905 ,901 ,897 ,893 ,890 ,886 ,882 ,878 ,873 ,869 , +865 ,861 ,856 ,852 ,847 ,843 ,838 ,833 ,829 ,824 ,819 ,814 ,809 ,804 ,799 ,794 ,789 ,784 , +779 ,774 ,768 ,763 ,758 ,752 ,747 ,741 ,736 ,730 ,725 ,719 ,714 ,708 ,702 ,696 ,691 ,685 ,679 , +673 ,667 ,661 ,655 ,649 ,643 ,637 ,631 ,625 ,619 ,613 ,607 ,601 ,594 ,588 ,582 ,576 ,570 ,563 , +557 ,551 ,545 ,538 ,532 ,526 ,520 ,513 ,507 ,501 ,495 ,488 ,482 ,476 ,469 ,463 ,457 ,451 ,444 , +438 ,432 ,426 ,420 ,413 ,407 ,401 ,395 ,389 ,383 ,376 ,370 ,364 ,358 ,352 ,346 ,340 ,334 ,329 , +323 ,317 ,311 ,305 ,299 ,294 ,288 ,282 ,277 ,271 ,265 ,260 ,254 ,249 ,244 ,238 ,233 ,228 ,222 , +217 ,212 ,207 ,202 ,197 ,192 ,187 ,182 ,177 ,172 ,168 ,163 ,158 ,154 ,149 ,145 ,141 ,136 ,132 ,128 ,124 , +119 ,115 ,111 ,107 ,104 ,100 ,96 ,92 ,89 ,85 ,82 ,78 ,75 ,72 ,69 ,65 ,62 ,59 ,56 ,54 ,51 ,48 ,45 ,43 ,40 ,38 , +36 ,33 ,31 ,29 ,27 ,25 ,23 ,21 ,19 ,18 ,16 ,14 ,13 ,12 ,10 ,9 ,8 ,7 ,6 ,5 ,4 ,3 ,3 ,2 ,2 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,2 ,2 ,3 ,4 ,5 ,5 ,6 ,8 ,9 ,10 ,11 , +12 ,14 ,15 ,17 ,19 ,20 ,22 ,24 ,26 ,28 ,30 ,32 ,35 ,37 ,39 ,42 ,44 ,47 ,50 ,52 ,55 ,58 ,61 ,64 ,67 ,71 ,74 ,77 ,81 ,84 ,87 ,91 ,95 ,98 ,102 ,106 ,110 ,114 ,118 ,122 , +126 ,130 ,135 ,139 ,143 ,148 ,152 ,157 ,161 ,166 ,171 ,175 ,180 ,185 ,190 ,195 ,200 ,205 ,210 ,215 ,220 ,226 ,231 ,236 ,242 ,247 ,252 ,258 ,263 ,269 ,274 ,280 ,286 , +291 ,297 ,303 ,309 ,315 ,320 ,326 ,332 ,338 ,344 ,350 ,356 ,362 ,368 ,374 ,380 ,386 ,392 ,399 ,405 ,411 ,417 ,423 ,430 ,436 ,442 ,448 ,455 ,461 ,467 ,473 ,480 ,486 ,492 +}; + + +int main(void) +{ + bflb_platform_init(0); + + /* register & open dac device */ + dac_register(DAC0_INDEX, "dac", DEVICE_OFLAG_RDWR); + struct device *dac = device_find("dac"); + + if (dac) + { + device_open(dac, DEVICE_OFLAG_DMA_TX); + MSG("device open success\r\n"); + } + + /* register & open dma device */ + if(dma_allocate_register("dac_dma",DEVICE_OFLAG_RDWR) == SUCCESS){ + MSG("dma allocate success\r\n"); + } + + struct device *dac_dma = device_find("dac_dma"); + + if(dac_dma){ + + ((dma_device_t *) dac_dma)->direction = DMA_MEMORY_TO_PERIPH; + ((dma_device_t *) dac_dma)->transfer_mode = DMA_LLI_ONCE_MODE; + ((dma_device_t *) dac_dma)->src_req = DMA_REQUEST_NONE; + ((dma_device_t *) dac_dma)->dst_req = DMA_REQUEST_DAC0; + ((dma_device_t *) dac_dma)->src_width = DMA_TRANSFER_WIDTH_16BIT; + ((dma_device_t *) dac_dma)->dst_width = DMA_TRANSFER_WIDTH_16BIT; + + device_open(dac_dma,0); + } + + /* connect dac device and dma device */ + device_control(dac,DEVICE_CTRL_DAC_ATTACH_TX_DMA,dac_dma); + + + while(1) + { + device_write(dac,DAC_CHANNEL_0,sinList,sizeof(sinList)/sizeof(uint8_t)); + while(dma_channel_check_busy(dac_dma) == SET){} + } + + BL_CASE_SUCCESS; +} diff --git a/examples/dac/dac_poll/CMakeLists.txt b/examples/dac/dac_poll/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/dac/dac_poll/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/dac/dac_poll/cdk/dac_poll.cdkproj b/examples/dac/dac_poll/cdk/dac_poll.cdkproj new file mode 100644 index 00000000..cc1ed3cd --- /dev/null +++ b/examples/dac/dac_poll/cdk/dac_poll.cdkproj @@ -0,0 +1,724 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + BL702;BL702_EVB;ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + diff --git a/examples/dac/dac_poll/main.c b/examples/dac/dac_poll/main.c new file mode 100644 index 00000000..1e94c31c --- /dev/null +++ b/examples/dac/dac_poll/main.c @@ -0,0 +1,74 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_dac.h" + +uint16_t sinList[]={ +500 ,506 ,513 ,519 ,525 ,531 ,538 ,544 ,550 ,556 , +563 ,569 ,575 ,581 ,587 ,594 ,600 ,606 ,612 ,618 , +624 ,630 ,636 ,642 ,648 ,654 ,660 ,666 ,672 ,678 , +684 ,690 ,696 ,701 ,707 ,713 ,718 ,724 ,730 ,735 , +741 ,746 ,752 ,757 ,762 ,768 ,773 ,778 ,784 ,789 , +794 ,799 ,804 ,809 ,814 ,819 ,823 ,828 ,833 ,838 , +842 ,847 ,851 ,856 ,860 ,864 ,869 ,873 ,877 ,881 , +885 ,889 ,893 ,897 ,901 ,904 ,908 ,912 ,915 ,919 , +922 ,925 ,929 ,932 ,935 ,938 ,941 ,944 ,947 ,950 , +952 ,955 ,958 ,960 ,962 ,965 ,967 ,969 ,971 ,973 , +975 ,977 ,979 ,981 ,983 ,984 ,986 ,987 ,989 ,990 , +991 ,992 ,993 ,994 ,995 ,996 ,997 ,997 ,998 ,999 , +999 ,999 ,1000 ,1000 ,1000 ,1000 ,1000 ,1000 ,1000 , +999 ,999 ,999 ,998 ,998 ,997 ,996 ,995 ,994 ,993 , +992 ,991 ,990 ,989 ,987 ,986 ,984 ,983 ,981 ,979 , +978 ,976 ,974 ,972 ,970 ,967 ,965 ,963 ,960 ,958 ,955 ,953 ,950 ,947 ,944 ,941 ,938 ,935 , +932 ,929 ,926 ,922 ,919 ,916 ,912 ,908 ,905 ,901 ,897 ,893 ,890 ,886 ,882 ,878 ,873 ,869 , +865 ,861 ,856 ,852 ,847 ,843 ,838 ,833 ,829 ,824 ,819 ,814 ,809 ,804 ,799 ,794 ,789 ,784 , +779 ,774 ,768 ,763 ,758 ,752 ,747 ,741 ,736 ,730 ,725 ,719 ,714 ,708 ,702 ,696 ,691 ,685 ,679 , +673 ,667 ,661 ,655 ,649 ,643 ,637 ,631 ,625 ,619 ,613 ,607 ,601 ,594 ,588 ,582 ,576 ,570 ,563 , +557 ,551 ,545 ,538 ,532 ,526 ,520 ,513 ,507 ,501 ,495 ,488 ,482 ,476 ,469 ,463 ,457 ,451 ,444 , +438 ,432 ,426 ,420 ,413 ,407 ,401 ,395 ,389 ,383 ,376 ,370 ,364 ,358 ,352 ,346 ,340 ,334 ,329 , +323 ,317 ,311 ,305 ,299 ,294 ,288 ,282 ,277 ,271 ,265 ,260 ,254 ,249 ,244 ,238 ,233 ,228 ,222 , +217 ,212 ,207 ,202 ,197 ,192 ,187 ,182 ,177 ,172 ,168 ,163 ,158 ,154 ,149 ,145 ,141 ,136 ,132 ,128 ,124 , +119 ,115 ,111 ,107 ,104 ,100 ,96 ,92 ,89 ,85 ,82 ,78 ,75 ,72 ,69 ,65 ,62 ,59 ,56 ,54 ,51 ,48 ,45 ,43 ,40 ,38 , +36 ,33 ,31 ,29 ,27 ,25 ,23 ,21 ,19 ,18 ,16 ,14 ,13 ,12 ,10 ,9 ,8 ,7 ,6 ,5 ,4 ,3 ,3 ,2 ,2 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,2 ,2 ,3 ,4 ,5 ,5 ,6 ,8 ,9 ,10 ,11 , +12 ,14 ,15 ,17 ,19 ,20 ,22 ,24 ,26 ,28 ,30 ,32 ,35 ,37 ,39 ,42 ,44 ,47 ,50 ,52 ,55 ,58 ,61 ,64 ,67 ,71 ,74 ,77 ,81 ,84 ,87 ,91 ,95 ,98 ,102 ,106 ,110 ,114 ,118 ,122 , +126 ,130 ,135 ,139 ,143 ,148 ,152 ,157 ,161 ,166 ,171 ,175 ,180 ,185 ,190 ,195 ,200 ,205 ,210 ,215 ,220 ,226 ,231 ,236 ,242 ,247 ,252 ,258 ,263 ,269 ,274 ,280 ,286 , +291 ,297 ,303 ,309 ,315 ,320 ,326 ,332 ,338 ,344 ,350 ,356 ,362 ,368 ,374 ,380 ,386 ,392 ,399 ,405 ,411 ,417 ,423 ,430 ,436 ,442 ,448 ,455 ,461 ,467 ,473 ,480 ,486 ,492 +}; + + +int main(void) +{ + bflb_platform_init(0); + dac_register(DAC0_INDEX, "dac", DEVICE_OFLAG_RDWR); + struct device *dac = device_find("dac"); + + if (dac) + { + device_open(dac, DEVICE_OFLAG_STREAM_TX); + MSG("device find success\r\n"); + } + + while(1) + { + device_write(dac,DAC_CHANNEL_0,sinList,sizeof(sinList)/sizeof(uint16_t)); + } +} diff --git a/examples/dma/dma_m2m/CMakeLists.txt b/examples/dma/dma_m2m/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/dma/dma_m2m/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/dma/dma_m2m/cdk/dma_m2m.cdkproj b/examples/dma/dma_m2m/cdk/dma_m2m.cdkproj new file mode 100644 index 00000000..b708de39 --- /dev/null +++ b/examples/dma/dma_m2m/cdk/dma_m2m.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/dma/dma_m2m/main.c b/examples/dma/dma_m2m/main.c new file mode 100644 index 00000000..f85d22c5 --- /dev/null +++ b/examples/dma/dma_m2m/main.c @@ -0,0 +1,77 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_dma.h" + + +uint8_t dma_src_buffer[8000] __attribute__((section(".system_ram"))); +uint8_t dma_dst_buffer[8000] __attribute__((section(".system_ram"))); + + +void dma_transfer_done(struct device *dev, void *args, uint32_t size, uint32_t state) +{ + uint32_t index=0; + + if(!state) + { + MSG("dma transfer task done\r\n"); + + for(index=0;index<8000;index++){ + if(dma_dst_buffer[index]!=0xff){ + MSG("dma transfer error\r\n"); + } + } + + MSG("dma transfer success\r\n"); + } + +} + +int main(void) +{ + bflb_platform_init(0); + + dma_register(DMA0_CH0_INDEX, "DMA", DEVICE_OFLAG_RDWR); + + struct device *dma = device_find("DMA"); + + + if (dma) + { + device_open(dma, 0); + device_set_callback(dma, dma_transfer_done); + device_control(dma, DEVICE_CTRL_SET_INT, NULL); + } + + /* prepare test memory src as 0xff but dest as 0x0 */ + + memset(dma_src_buffer,0xff,8000); + memset(dma_dst_buffer,0,8000); + + dma_reload(dma,(uint32_t)dma_src_buffer,(uint32_t)dma_dst_buffer,8000); + + dma_channel_start(dma); + + /*wait callback to check memory transfering is success*/ + while(1); + +} diff --git a/examples/gpio/gpio_blink/CMakeLists.txt b/examples/gpio/gpio_blink/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/gpio/gpio_blink/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/gpio/gpio_blink/cdk/gpio_blink.cdkproj b/examples/gpio/gpio_blink/cdk/gpio_blink.cdkproj new file mode 100644 index 00000000..2d183c79 --- /dev/null +++ b/examples/gpio/gpio_blink/cdk/gpio_blink.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/gpio/gpio_blink/main.c b/examples/gpio/gpio_blink/main.c new file mode 100644 index 00000000..b387d686 --- /dev/null +++ b/examples/gpio/gpio_blink/main.c @@ -0,0 +1,89 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_gpio.h" + +uint32_t count = 0; + +void gpio_blink_init(void) +{ + gpio_set_mode(GPIO_PIN_22, GPIO_OUTPUT_PP_MODE); + gpio_set_mode(GPIO_PIN_29, GPIO_OUTPUT_PP_MODE); + gpio_set_mode(GPIO_PIN_30, GPIO_OUTPUT_PP_MODE); + gpio_set_mode(GPIO_PIN_31, GPIO_OUTPUT_PP_MODE); + + gpio_write(GPIO_PIN_22, 0); + gpio_write(GPIO_PIN_29, 0); + gpio_write(GPIO_PIN_30, 0); + gpio_write(GPIO_PIN_31, 0); +} + +void led_blink_all(void) +{ + gpio_write(GPIO_PIN_22, 0); + gpio_write(GPIO_PIN_29, 0); + gpio_write(GPIO_PIN_30, 0); + gpio_write(GPIO_PIN_31, 0); + + bflb_platform_delay_ms(100); + + gpio_write(GPIO_PIN_22, 1); + gpio_write(GPIO_PIN_29, 1); + gpio_write(GPIO_PIN_30, 1); + gpio_write(GPIO_PIN_31, 1); + + bflb_platform_delay_ms(100); +} + +void led_running(void) +{ + gpio_write(GPIO_PIN_22, 1); + bflb_platform_delay_ms(200); + gpio_write(GPIO_PIN_22, 0); + + gpio_write(GPIO_PIN_29, 1); + bflb_platform_delay_ms(200); + gpio_write(GPIO_PIN_29, 0); + + gpio_write(GPIO_PIN_30, 1); + bflb_platform_delay_ms(200); + gpio_write(GPIO_PIN_30, 0); + + gpio_write(GPIO_PIN_31, 1); + bflb_platform_delay_ms(200); + gpio_write(GPIO_PIN_31, 0); + + count++; +} + +int main(void) +{ + bflb_platform_init(0); + + gpio_blink_init(); + + MSG("gpio test !\r\n"); + while (1) + { + led_running(); + } +} diff --git a/examples/hellowd/helloworld/CMakeLists.txt b/examples/hellowd/helloworld/CMakeLists.txt new file mode 100644 index 00000000..bb7ef18d --- /dev/null +++ b/examples/hellowd/helloworld/CMakeLists.txt @@ -0,0 +1,6 @@ +set(mains main.c) +#set(TARGET_REQUIRED_SRCS apple.c) +generate_bin() + + + diff --git a/examples/hellowd/helloworld/bl702_flash2.ld b/examples/hellowd/helloworld/bl702_flash2.ld new file mode 100644 index 00000000..14ced469 --- /dev/null +++ b/examples/hellowd/helloworld/bl702_flash2.ld @@ -0,0 +1,227 @@ +/**************************************************************************************** +* @file map.txt +* +* @brief This file is the map file (gnuarm or armgcc). +* +* Copyright (C) BouffaloLab 2018 +* +**************************************************************************************** +*/ + +/* configure the CPU type */ +OUTPUT_ARCH( "riscv" ) +/* link with the standard c library */ +INPUT(-lc) +/* link with the standard GCC library */ +INPUT(-lgcc) +/* configure the entry point */ +ENTRY(_enter) + +StackSize = 0x1000; /* 4KB */ +HeapSize = 0x1000; /* 4KB */ + +MEMORY +{ + xip_memory (rx) : ORIGIN = 0x23000000, LENGTH = 4096K + itcm_memory (rx) : ORIGIN = 0x22014000, LENGTH = 16K + dtcm_memory (rx) : ORIGIN = 0x42018000, LENGTH = 32K + ram_memory (!rx) : ORIGIN = 0x42020000, LENGTH = 48K +} + +SECTIONS +{ + PROVIDE(__metal_chicken_bit = 0); + + .text : + { + . = ALIGN(4); + __text_code_start__ = .; + + KEEP (*(.text.metal.init.enter)) + KEEP (*(SORT_NONE(.init))) + /* section information for finsh shell */ + . = ALIGN(4); + _shell_command_start = .; + KEEP(*(shellCommand)) + _shell_command_end = .; + + /* section information for usb desc */ + . = ALIGN(4); + _usb_desc_start = .; + KEEP(*(usb_desc)) + . = ALIGN(4); + _usb_desc_end = .; + + *(.text) + *(.text.*) + + /*put .rodata**/ + *(EXCLUDE_FILE( *bl602_glb.o \ + *bl602_pds.o \ + *bl602_common.o \ + *bl602_sf_cfg.o \ + *bl602_sf_ctrl.o \ + *bl602_sflash.o \ + *bl602_xip_sflash.o \ + *bl602_ef_ctrl.o) .rodata*) + *(.rodata) + *(.rodata.*) + + *(.srodata) + *(.srodata.*) + + . = ALIGN(4); + __text_code_end__ = .; + } > xip_memory + + . = ALIGN(4); + __itcm_load_addr = .; + + .itcm_region : AT (__itcm_load_addr) + { + . = ALIGN(4); + __tcm_code_start__ = .; + + *(.tcm_code) + *(.tcm_const) + *(.sclock_rlt_code) + *(.sclock_rlt_const) + + *bl602_glb.o*(.rodata*) + *bl602_pds.o*(.rodata*) + *bl602_common.o*(.rodata*) + *bl602_sf_cfg.o*(.rodata*) + *bl602_sf_ctrl.o*(.rodata*) + *bl602_sflash.o*(.rodata*) + *bl602_xip_sflash.o*(.rodata*) + *bl602_ef_ctrl.o*(.rodata*) + + . = ALIGN(4); + __tcm_code_end__ = .; + } > itcm_memory + + __dtcm_load_addr = __itcm_load_addr + SIZEOF(.itcm_region); + + .dtcm_region : AT (__dtcm_load_addr) + { + . = ALIGN(4); + __tcm_data_start__ = .; + + *(.tcm_data) + /* *finger_print.o(.data*) */ + + . = ALIGN(4); + __tcm_data_end__ = .; + } > dtcm_memory + + /* .heap_dummy section doesn't contains any symbols. It is only + * used for linker to calculate size of heap sections, and assign + * values to heap symbols later */ + .heap_dummy (NOLOAD): + { + . = ALIGN(0x4); + . = . + HeapSize; + . = ALIGN(0x4); + } > dtcm_memory + + _HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize; + _HeapSize = HeapSize; + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack") + + /*************************************************************************/ + /* .stack_dummy section doesn't contains any symbols. It is only + * used for linker to calculate size of stack sections, and assign + * values to stack symbols later */ + .stack_dummy (NOLOAD): + { + . = ALIGN(0x4); + . = . + StackSize; + . = ALIGN(0x4); + } > dtcm_memory + + /* Set stack top to end of RAM, and stack limit move down by + * size of stack_dummy section */ + __StackTop = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory); + PROVIDE( __freertos_irq_stack_top = __StackTop); + __StackLimit = __StackTop - SIZEOF(.stack_dummy); + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(__StackLimit >= __tcm_data_end__, "region RAM overflowed with stack") + /*************************************************************************/ + + __system_ram_load_addr = __dtcm_load_addr + SIZEOF(.dtcm_region); + + .system_ram_data_region : AT (__system_ram_load_addr) + { + . = ALIGN(4); + __system_ram_data_start__ = .; + + *(.system_ram) + + . = ALIGN(4); + __system_ram_data_end__ = .; + } > ram_memory + + __ram_load_addr = __system_ram_load_addr + SIZEOF(.system_ram_data_region); + + /* Data section */ + RAM_DATA : AT (__ram_load_addr) + { + . = ALIGN(4); + __ram_data_start__ = .; + + PROVIDE( __global_pointer$ = . + 0x800 ); + + *(.data) + *(.data.*) + *(.sdata) + *(.sdata.*) + *(.sdata2) + *(.sdata2.*) + + . = ALIGN(4); + __ram_data_end__ = .; + } > ram_memory + + .bss (NOLOAD) : + { + . = ALIGN(4); + __bss_start__ = .; + + *(.bss*) + *(.sbss*) + *(COMMON) + + . = ALIGN(4); + __bss_end__ = .; + } > ram_memory + + .noinit_data (NOLOAD) : + { + . = ALIGN(4); + __noinit_data_start__ = .; + + *(.noinit_data*) + + . = ALIGN(4); + __noinit_data_end__ = .; + } > ram_memory + + .heap (NOLOAD): + { + . = ALIGN(4); + __HeapBase = .; + + /*__end__ = .;*/ + /*end = __end__;*/ + KEEP(*(.heap*)) + + . = ALIGN(4); + __HeapLimit = .; + } > ram_memory + __HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory); + +} + diff --git a/examples/hellowd/helloworld/cdk/helloworld.cdkproj b/examples/hellowd/helloworld/cdk/helloworld.cdkproj new file mode 100644 index 00000000..2b004572 --- /dev/null +++ b/examples/hellowd/helloworld/cdk/helloworld.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + diff --git a/examples/hellowd/helloworld/main.c b/examples/hellowd/helloworld/main.c new file mode 100644 index 00000000..68c550a9 --- /dev/null +++ b/examples/hellowd/helloworld/main.c @@ -0,0 +1,57 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_uart.h" +int main(void) +{ + bflb_platform_init(0); + MSG("hello world!\r\n"); + while(1) + { + + } +} + +#ifdef SHELL_SUPPORT +#include "drv_shell.h" +void hellowd() +{ + MSG("hello World\r\n"); +} + +int func(int argc, char *argv[]) +{ + MSG("%dparameter(s)\r\n", argc); + for (uint8_t i = 1; i < argc; i++) + { + MSG("%s\r\n", argv[i]); + } + return 0; +} + +SHELL_EXPORT_CMD( +SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_DISABLE_RETURN, +hwd, hellowd, responds helloworld); +SHELL_EXPORT_CMD( +SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN)|SHELL_CMD_DISABLE_RETURN, +echo, func, print a char using parameter case); +#endif diff --git a/examples/i2c/i2c_at24cxx/CMakeLists.txt b/examples/i2c/i2c_at24cxx/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/i2c/i2c_at24cxx/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/i2c/i2c_at24cxx/cdk/i2c_at24cxx.cdkproj b/examples/i2c/i2c_at24cxx/cdk/i2c_at24cxx.cdkproj new file mode 100644 index 00000000..3080e914 --- /dev/null +++ b/examples/i2c/i2c_at24cxx/cdk/i2c_at24cxx.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/i2c/i2c_at24cxx/main.c b/examples/i2c/i2c_at24cxx/main.c new file mode 100644 index 00000000..25544f2f --- /dev/null +++ b/examples/i2c/i2c_at24cxx/main.c @@ -0,0 +1,61 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_i2c.h" +#include "hal_uart.h" + +int main(void) +{ + i2c_msg_t msg[2]; + uint8_t buf[8] = {0}; + + bflb_platform_init(0); + + i2c_register(I2C0_INDEX, "i2c", DEVICE_OFLAG_RDWR); + struct device *i2c0 = device_find("i2c"); + + if (i2c0) + { + MSG("device find success\r\n"); + device_open(i2c0, 0); + } + msg[0].buf = buf; + msg[0].flags = SUB_ADDR_1BYTE | I2C_WR; + msg[0].len = 8; + msg[0].slaveaddr = 0x50; + msg[0].subaddr = 0x00; + + msg[1].buf = buf; + msg[1].flags = SUB_ADDR_1BYTE | I2C_RD; + msg[1].len = 8; + msg[1].slaveaddr = 0x50; + msg[1].subaddr = 0x00; + if (i2c_transfer(i2c0, &msg[0], 2) == 0) + MSG("\r\n read:%0x\r\n", msg[1].buf[0] << 8 | msg[1].buf[1]); + + while (1) + { + MSG("\r\n i2c case\r\n"); + bflb_platform_delay_ms(1000); + // DEBUG("GPIO_PIN_RESET\r\n"); + } +} \ No newline at end of file diff --git a/examples/i2c/i2c_bmp180/CMakeLists.txt b/examples/i2c/i2c_bmp180/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/i2c/i2c_bmp180/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/i2c/i2c_bmp180/cdk/i2c_bmp180.cdkproj b/examples/i2c/i2c_bmp180/cdk/i2c_bmp180.cdkproj new file mode 100644 index 00000000..af4f47f4 --- /dev/null +++ b/examples/i2c/i2c_bmp180/cdk/i2c_bmp180.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/i2c/i2c_bmp180/main.c b/examples/i2c/i2c_bmp180/main.c new file mode 100644 index 00000000..98ed6571 --- /dev/null +++ b/examples/i2c/i2c_bmp180/main.c @@ -0,0 +1,54 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_i2c.h" +#include "hal_uart.h" + +int main(void) +{ + i2c_msg_t msg1; + uint8_t buf[2] = {0}; + + bflb_platform_init(0); + + i2c_register(I2C0_INDEX, "i2c", DEVICE_OFLAG_RDWR); + struct device *i2c0 = device_find("i2c"); + + if (i2c0) + { + MSG("device find success\r\n"); + device_open(i2c0, 0); + } + msg1.buf = buf; + msg1.flags = SUB_ADDR_1BYTE | I2C_RD; + msg1.len = 2; + msg1.slaveaddr = 0xEE >> 1; + msg1.subaddr = 0xaa; + if (i2c_transfer(i2c0, &msg1, 1) == 0) + MSG("\r\n read:%0x\r\n", msg1.buf[0] << 8 | msg1.buf[1]); + while (1) + { + MSG("\r\n i2c case\r\n"); + bflb_platform_delay_ms(1000); + // DEBUG("GPIO_PIN_RESET\r\n"); + } +} \ No newline at end of file diff --git a/examples/i2s/i2s_play_form_flash/CMakeLists.txt b/examples/i2s/i2s_play_form_flash/CMakeLists.txt new file mode 100644 index 00000000..240ea3d5 --- /dev/null +++ b/examples/i2s/i2s_play_form_flash/CMakeLists.txt @@ -0,0 +1,9 @@ +set(BSP_COMMON_DIR ${CMAKE_SOURCE_DIR}/bsp/bsp_common) +set(TARGET_REQUIRED_LIBS fatfs) +set(TARGET_REQUIRED_PRIVATE_INCLUDE ${BSP_COMMON_DIR}/es8388 ${BSP_COMMON_DIR}/spi_sd) +set(TARGET_REQUIRED_SRCS ${BSP_COMMON_DIR}/es8388/bsp_es8388.c ${BSP_COMMON_DIR}/fatfs/fatfs_spi_sd.c ${BSP_COMMON_DIR}/spi_sd/bsp_spi_sd.c) +set(mains main.c) +generate_bin() + + + diff --git a/examples/i2s/i2s_play_form_flash/cdk/i2s_play_form_flash.cdkproj b/examples/i2s/i2s_play_form_flash/cdk/i2s_play_form_flash.cdkproj new file mode 100644 index 00000000..ede0f239 --- /dev/null +++ b/examples/i2s/i2s_play_form_flash/cdk/i2s_play_form_flash.cdkproj @@ -0,0 +1,724 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + BL702;BL702_EVB;ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + diff --git a/examples/i2s/i2s_play_form_flash/fhm_onechannel_16k_20.h b/examples/i2s/i2s_play_form_flash/fhm_onechannel_16k_20.h new file mode 100644 index 00000000..5af4ff17 --- /dev/null +++ b/examples/i2s/i2s_play_form_flash/fhm_onechannel_16k_20.h @@ -0,0 +1,40010 @@ + + +//total len:640044 bytes +const unsigned char fhm_onechannel_16k_20[]={ + 0x52, 0x49, 0x46, 0x46, 0x24, 0xc4, 0x09, 0x00, 0x57, 0x41, 0x56, 0x45, 0x66, 0x6d, 0x74, 0x20, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, + 0x02, 0x00, 0x10, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0xc4, 0x09, 0x00, 0x24, 0x00, 0x1a, 0x00, + 0x1e, 0x00, 0x1c, 0x00, 0x22, 0x00, 0x23, 0x00, 0x1e, 0x00, 0x27, 0x00, 0x20, 0x00, 0x1e, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x23, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x3a, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x35, 0x00, 0x31, 0x00, 0x31, 0x00, 0x28, 0x00, + 0x29, 0x00, 0x21, 0x00, 0x27, 0x00, 0x1c, 0x00, 0x20, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x1a, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x05, 0x00, + 0x07, 0x00, 0x03, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x03, 0x00, 0x02, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x05, 0x00, + 0x02, 0x00, 0xfe, 0xff, 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x03, 0x00, 0xfb, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf2, 0xff, 0xed, 0xff, 0xf3, 0xff, 0xef, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xed, 0xff, 0xef, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xee, 0xff, 0xf3, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xf1, 0xff, 0xeb, 0xff, 0xf5, 0xff, 0x00, 0x00, + 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x07, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xf9, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfc, 0xff, + 0xff, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xf7, 0xff, 0x04, 0x00, 0xfd, 0xff, + 0x03, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x06, 0x00, 0x02, 0x00, 0x0a, 0x00, 0xfd, 0xff, 0xfe, 0xff, + 0x02, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x0d, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0x00, 0x00, 0xfb, 0xff, + 0xf0, 0xff, 0xfb, 0xff, 0xf3, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xe3, 0xff, 0xe7, 0xff, 0xec, 0xff, + 0xe9, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xe7, 0xff, 0xea, 0xff, 0xe7, 0xff, 0xea, 0xff, + 0xe8, 0xff, 0xea, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xeb, 0xff, 0xe6, 0xff, 0xe9, 0xff, 0xe4, 0xff, + 0xf1, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xeb, 0xff, 0xe3, 0xff, 0xed, 0xff, 0xee, 0xff, 0xe7, 0xff, + 0xe4, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xd8, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xdc, 0xff, 0xd7, 0xff, + 0xe1, 0xff, 0xd7, 0xff, 0xce, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xd9, 0xff, 0xd4, 0xff, + 0xdf, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xed, 0xff, 0xe4, 0xff, 0xed, 0xff, 0xe9, 0xff, 0xe4, 0xff, + 0xee, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf8, 0xff, + 0xf6, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfc, 0xff, + 0x00, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf1, 0xff, + 0xf8, 0xff, 0xf4, 0xff, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x08, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x1b, 0x00, 0x20, 0x00, 0x24, 0x00, + 0x20, 0x00, 0x17, 0x00, 0x1d, 0x00, 0x25, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x18, 0x00, + 0x19, 0x00, 0x20, 0x00, 0x19, 0x00, 0x12, 0x00, 0x12, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x24, 0x00, + 0x14, 0x00, 0x19, 0x00, 0x17, 0x00, 0x15, 0x00, 0x17, 0x00, 0x13, 0x00, 0x11, 0x00, 0x15, 0x00, + 0x17, 0x00, 0x12, 0x00, 0x14, 0x00, 0x17, 0x00, 0x1d, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, + 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0x22, 0x00, 0x21, 0x00, 0x24, 0x00, 0x2e, 0x00, 0x26, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x12, 0x00, 0x17, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x10, 0x00, + 0x0c, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xf5, 0xff, 0xec, 0xff, + 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xe5, 0xff, 0xec, 0xff, 0xe5, 0xff, 0xed, 0xff, 0xeb, 0xff, + 0xef, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xf2, 0xff, 0xf7, 0xff, 0xfc, 0xff, + 0xee, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xf3, 0xff, + 0xee, 0xff, 0xec, 0xff, 0xe9, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xdd, 0xff, 0xea, 0xff, 0xe2, 0xff, + 0xe2, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe7, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe3, 0xff, + 0xda, 0xff, 0xe6, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xe9, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xfa, 0xff, + 0xf9, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xf6, 0xff, + 0xf4, 0xff, 0xf0, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, + 0x05, 0x00, 0x03, 0x00, 0xf7, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x02, 0x00, 0x05, 0x00, 0xfe, 0xff, + 0x07, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x02, 0x00, 0xfe, 0xff, + 0xf6, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x08, 0x00, + 0x04, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xeb, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf0, 0xff, + 0xf3, 0xff, 0xf2, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xef, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xf6, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xe9, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xe4, 0xff, + 0xea, 0xff, 0xe8, 0xff, 0xe5, 0xff, 0xf2, 0xff, 0xef, 0xff, 0xf2, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xfd, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xfd, 0xff, + 0xfb, 0xff, 0x01, 0x00, 0x06, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x10, 0x00, + 0x05, 0x00, 0x0c, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x1a, 0x00, 0x15, 0x00, 0x17, 0x00, 0x1c, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x21, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x18, 0x00, 0x19, 0x00, 0x14, 0x00, + 0x12, 0x00, 0x0f, 0x00, 0x15, 0x00, 0x13, 0x00, 0x10, 0x00, 0x15, 0x00, 0x13, 0x00, 0x1a, 0x00, + 0x15, 0x00, 0x19, 0x00, 0x10, 0x00, 0x12, 0x00, 0x16, 0x00, 0x1f, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x1d, 0x00, 0x24, 0x00, 0x24, 0x00, 0x21, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x29, 0x00, + 0x29, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x27, 0x00, 0x29, 0x00, 0x29, 0x00, 0x31, 0x00, 0x2c, 0x00, + 0x2f, 0x00, 0x31, 0x00, 0x2e, 0x00, 0x33, 0x00, 0x31, 0x00, 0x2e, 0x00, 0x26, 0x00, 0x2d, 0x00, + 0x31, 0x00, 0x2c, 0x00, 0x30, 0x00, 0x34, 0x00, 0x33, 0x00, 0x35, 0x00, 0x38, 0x00, 0x33, 0x00, + 0x31, 0x00, 0x35, 0x00, 0x37, 0x00, 0x2b, 0x00, 0x32, 0x00, 0x37, 0x00, 0x3a, 0x00, 0x39, 0x00, + 0x3b, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x33, 0x00, 0x39, 0x00, 0x40, 0x00, 0x35, 0x00, 0x34, 0x00, + 0x38, 0x00, 0x35, 0x00, 0x33, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x28, 0x00, 0x21, 0x00, + 0x1f, 0x00, 0x22, 0x00, 0x18, 0x00, 0x17, 0x00, 0x1a, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x04, 0x00, + 0xfe, 0xff, 0x06, 0x00, 0xfd, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xf2, 0xff, 0xee, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xf0, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf7, 0xff, 0xf1, 0xff, + 0xed, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xd7, 0xff, + 0xe2, 0xff, 0xd5, 0xff, 0xdb, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd0, 0xff, 0xd5, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xd1, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xd5, 0xff, 0xd4, 0xff, + 0xdd, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xdd, 0xff, 0xe3, 0xff, 0xea, 0xff, 0xe7, 0xff, 0xee, 0xff, + 0xed, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xee, 0xff, 0xed, 0xff, 0xed, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0xef, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xf1, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xed, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xe9, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf5, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf6, 0xff, + 0xf3, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xfb, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xfa, 0xff, + 0x01, 0x00, 0xfa, 0xff, 0xf8, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xef, 0xff, 0xf5, 0xff, 0xfd, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf1, 0xff, 0xe7, 0xff, 0xe4, 0xff, 0xea, 0xff, + 0xde, 0xff, 0xe5, 0xff, 0xdb, 0xff, 0xe4, 0xff, 0xe7, 0xff, 0xde, 0xff, 0xe7, 0xff, 0xdc, 0xff, + 0xe0, 0xff, 0xd5, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xdb, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xde, 0xff, + 0xdf, 0xff, 0xe9, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xd9, 0xff, 0xdf, 0xff, 0xe0, 0xff, 0xdb, 0xff, + 0xd7, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xe0, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xd6, 0xff, 0xd0, 0xff, + 0xd3, 0xff, 0xd2, 0xff, 0xcf, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xdd, 0xff, + 0xda, 0xff, 0xd6, 0xff, 0xd3, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xeb, 0xff, + 0xe8, 0xff, 0xe4, 0xff, 0xeb, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf5, 0xff, + 0xf7, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0x04, 0x00, 0x08, 0x00, + 0x02, 0x00, 0xfd, 0xff, 0x09, 0x00, 0x0d, 0x00, 0x02, 0x00, 0x03, 0x00, 0x08, 0x00, 0x06, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x04, 0x00, 0xfe, 0xff, 0x0b, 0x00, 0x07, 0x00, 0x08, 0x00, 0x0c, 0x00, + 0x0b, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x13, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x1d, 0x00, 0x1b, 0x00, 0x11, 0x00, 0x13, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x1e, 0x00, 0x1f, 0x00, + 0x23, 0x00, 0x24, 0x00, 0x1f, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x27, 0x00, + 0x24, 0x00, 0x25, 0x00, 0x1c, 0x00, 0x22, 0x00, 0x2b, 0x00, 0x25, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x20, 0x00, 0x1e, 0x00, 0x21, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x16, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x28, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x29, 0x00, 0x28, 0x00, 0x31, 0x00, 0x21, 0x00, + 0x2e, 0x00, 0x34, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2f, 0x00, 0x32, 0x00, 0x31, 0x00, 0x3e, 0x00, + 0x37, 0x00, 0x3b, 0x00, 0x35, 0x00, 0x39, 0x00, 0x39, 0x00, 0x30, 0x00, 0x31, 0x00, 0x25, 0x00, + 0x2e, 0x00, 0x2a, 0x00, 0x24, 0x00, 0x1f, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x10, 0x00, + 0x15, 0x00, 0x13, 0x00, 0x19, 0x00, 0x14, 0x00, 0x11, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x06, 0x00, + 0x04, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x08, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x02, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, + 0xf9, 0xff, 0xeb, 0xff, 0xef, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xe4, 0xff, 0xf6, 0xff, + 0xe5, 0xff, 0xee, 0xff, 0xed, 0xff, 0xe1, 0xff, 0xef, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xec, 0xff, + 0xf7, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xef, 0xff, 0xed, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0x03, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x0f, 0x00, + 0x0e, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x13, 0x00, 0x08, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x12, 0x00, 0x06, 0x00, 0x11, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x01, 0x00, 0x0d, 0x00, + 0x05, 0x00, 0x07, 0x00, 0x11, 0x00, 0x0c, 0x00, 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0d, 0x00, + 0x12, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x15, 0x00, 0x0d, 0x00, 0x15, 0x00, 0x14, 0x00, 0x1c, 0x00, + 0x1a, 0x00, 0x15, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x13, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x03, 0x00, 0x0a, 0x00, 0xfd, 0xff, 0xf8, 0xff, 0x03, 0x00, + 0xfe, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xed, 0xff, 0xf0, 0xff, 0xf1, 0xff, + 0xee, 0xff, 0xec, 0xff, 0xea, 0xff, 0xf2, 0xff, 0xeb, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xef, 0xff, + 0xe6, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xe9, 0xff, 0xe1, 0xff, + 0xdf, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xe3, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xd1, 0xff, 0xd3, 0xff, 0xd0, 0xff, 0xd3, 0xff, + 0xd2, 0xff, 0xd4, 0xff, 0xdb, 0xff, 0xd7, 0xff, 0xde, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xd7, 0xff, + 0xd1, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd7, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xe4, 0xff, + 0xed, 0xff, 0xf2, 0xff, 0xeb, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0x01, 0x00, 0x0f, 0x00, + 0x0a, 0x00, 0x08, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x0b, 0x00, + 0x09, 0x00, 0x11, 0x00, 0x10, 0x00, 0x14, 0x00, 0x15, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x03, 0x00, + 0x06, 0x00, 0x01, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x17, 0x00, 0x15, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x0d, 0x00, + 0x11, 0x00, 0x18, 0x00, 0x13, 0x00, 0x16, 0x00, 0x17, 0x00, 0x16, 0x00, 0x1a, 0x00, 0x1e, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x1b, 0x00, 0x13, 0x00, 0x0c, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x04, 0x00, 0xf7, 0xff, 0x0b, 0x00, + 0xfc, 0xff, 0xfb, 0xff, 0x0a, 0x00, 0x08, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x14, 0x00, + 0x14, 0x00, 0x0f, 0x00, 0x11, 0x00, 0x0a, 0x00, 0x11, 0x00, 0x16, 0x00, 0x0f, 0x00, 0x18, 0x00, + 0x13, 0x00, 0x15, 0x00, 0x1e, 0x00, 0x15, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x0d, 0x00, + 0x13, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x08, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x13, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x02, 0x00, 0xed, 0xff, 0xf7, 0xff, 0xeb, 0xff, 0xf3, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xf3, 0xff, 0xee, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xeb, 0xff, + 0xe9, 0xff, 0xee, 0xff, 0xe5, 0xff, 0xf5, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf4, 0xff, + 0xf7, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf0, 0xff, 0xe3, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xe7, 0xff, + 0xdd, 0xff, 0xd0, 0xff, 0xcf, 0xff, 0xd9, 0xff, 0xe8, 0xff, 0xda, 0xff, 0xe3, 0xff, 0xd6, 0xff, + 0xd9, 0xff, 0xe3, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xd3, 0xff, 0xd9, 0xff, 0xd3, 0xff, 0xd1, 0xff, + 0xca, 0xff, 0xd2, 0xff, 0xd5, 0xff, 0xdd, 0xff, 0xe0, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xe6, 0xff, + 0xf5, 0xff, 0xe7, 0xff, 0xf3, 0xff, 0xef, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf6, 0xff, + 0xf5, 0xff, 0x03, 0x00, 0xf6, 0xff, 0x01, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x10, 0x00, + 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0xfd, 0xff, 0x12, 0x00, 0x07, 0x00, 0x08, 0x00, 0x0a, 0x00, + 0x0c, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x13, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x0e, 0x00, + 0x0d, 0x00, 0x07, 0x00, 0x14, 0x00, 0x0b, 0x00, 0x04, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x06, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x14, 0x00, 0xfc, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x09, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0xeb, 0xff, 0xf7, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xeb, 0xff, 0xf9, 0xff, 0xd5, 0xff, 0xdd, 0xff, + 0xe5, 0xff, 0xe7, 0xff, 0xfe, 0xff, 0xea, 0xff, 0xe1, 0xff, 0xde, 0xff, 0xeb, 0xff, 0xef, 0xff, + 0xe5, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xed, 0xff, + 0xf0, 0xff, 0xf8, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0x05, 0x00, 0x08, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xf4, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x05, 0x00, 0x10, 0x00, 0xff, 0xff, 0xf8, 0xff, 0x02, 0x00, + 0xfc, 0xff, 0xfd, 0xff, 0x01, 0x00, 0xe8, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xd7, 0xff, 0xf7, 0xff, + 0xfe, 0xff, 0xfb, 0xff, 0x08, 0x00, 0x05, 0x00, 0xea, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0x02, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x20, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0c, 0x00, + 0x05, 0x00, 0x0b, 0x00, 0x12, 0x00, 0x22, 0x00, 0x27, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x05, 0x00, + 0x0d, 0x00, 0xf6, 0xff, 0x11, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0f, 0x00, + 0xe9, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xd9, 0xff, 0xe8, 0xff, 0xf5, 0xff, 0xd8, 0xff, 0xee, 0xff, + 0xf7, 0xff, 0x02, 0x00, 0x37, 0x00, 0x25, 0x00, 0x32, 0x00, 0x22, 0x00, 0x26, 0x00, 0x3a, 0x00, + 0x06, 0x00, 0x0c, 0x00, 0xff, 0xff, 0xec, 0xff, 0x1c, 0x00, 0x21, 0x00, 0x2e, 0x00, 0x25, 0x00, + 0x1f, 0x00, 0x37, 0x00, 0x29, 0x00, 0x25, 0x00, 0x4a, 0x00, 0x26, 0x00, 0x3a, 0x00, 0x24, 0x00, + 0x08, 0x00, 0xfe, 0xff, 0xfc, 0xff, 0xf5, 0xff, 0x1f, 0x00, 0x1a, 0x00, 0x29, 0x00, 0x33, 0x00, + 0x3d, 0x00, 0x32, 0x00, 0x1f, 0x00, 0x2d, 0x00, 0x22, 0x00, 0x22, 0x00, 0x13, 0x00, 0xf8, 0xff, + 0x0b, 0x00, 0x2a, 0x00, 0x41, 0x00, 0x69, 0x00, 0x59, 0x00, 0x53, 0x00, 0x53, 0x00, 0x49, 0x00, + 0x45, 0x00, 0x40, 0x00, 0x5e, 0x00, 0x23, 0x00, 0x28, 0x00, 0x2a, 0x00, 0xf4, 0xff, 0x15, 0x00, + 0x02, 0x00, 0xfc, 0xff, 0x2c, 0x00, 0x33, 0x00, 0x2f, 0x00, 0x51, 0x00, 0x7b, 0x00, 0x74, 0x00, + 0x6d, 0x00, 0x4f, 0x00, 0x2c, 0x00, 0x16, 0x00, 0x19, 0x00, 0xe9, 0xff, 0xe4, 0xff, 0xf8, 0xff, + 0x0b, 0x00, 0x0b, 0x00, 0xff, 0xff, 0x10, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x24, 0x00, + 0x2c, 0x00, 0x41, 0x00, 0x3e, 0x00, 0x30, 0x00, 0x0d, 0x00, 0xf1, 0xff, 0x02, 0x00, 0xec, 0xff, + 0xda, 0xff, 0xea, 0xff, 0xda, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xe5, 0xff, 0xf8, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xf5, 0xff, 0x1e, 0x00, 0x1d, 0x00, 0x05, 0x00, 0xf1, 0xff, 0xd6, 0xff, 0xa1, 0xff, + 0xc1, 0xff, 0xf1, 0xff, 0xf6, 0xff, 0xde, 0xff, 0xce, 0xff, 0xb3, 0xff, 0x87, 0xff, 0x9d, 0xff, + 0xc3, 0xff, 0xe3, 0xff, 0xf4, 0xff, 0xde, 0xff, 0xdb, 0xff, 0xea, 0xff, 0xe7, 0xff, 0xfa, 0xff, + 0x37, 0x00, 0x24, 0x00, 0x1e, 0x00, 0x16, 0x00, 0x1a, 0x00, 0x24, 0x00, 0x14, 0x00, 0x36, 0x00, + 0x17, 0x00, 0x1c, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x09, 0x00, 0xf9, 0xff, 0xfc, 0xff, 0xef, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x44, 0x00, 0x59, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0x90, 0x00, 0x5c, 0x00, + 0x54, 0x00, 0x1a, 0x00, 0xf6, 0xff, 0x10, 0x00, 0xe9, 0xff, 0xd3, 0xff, 0xc0, 0xff, 0xb4, 0xff, + 0xcd, 0xff, 0xb4, 0xff, 0xf6, 0xff, 0x13, 0x00, 0x1c, 0x00, 0x36, 0x00, 0x1f, 0x00, 0x32, 0x00, + 0x24, 0x00, 0x1d, 0x00, 0xf7, 0xff, 0xcd, 0xff, 0xda, 0xff, 0xb4, 0xff, 0xa3, 0xff, 0xdf, 0xff, + 0xd2, 0xff, 0xce, 0xff, 0x14, 0x00, 0x22, 0x00, 0x4d, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x29, 0x00, + 0xf6, 0xff, 0xdb, 0xff, 0xb3, 0xff, 0xa7, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x8f, 0xff, 0x9a, 0xff, + 0x9f, 0xff, 0x73, 0xff, 0x5e, 0xff, 0x70, 0xff, 0x7a, 0xff, 0x86, 0xff, 0x67, 0xff, 0x49, 0xff, + 0x66, 0xff, 0x58, 0xff, 0x3f, 0xff, 0x6d, 0xff, 0x5d, 0xff, 0x7f, 0xff, 0x9a, 0xff, 0xbc, 0xff, + 0xee, 0xff, 0xd1, 0xff, 0xbd, 0xff, 0xe7, 0xff, 0xdc, 0xff, 0xbe, 0xff, 0xce, 0xff, 0x8d, 0xff, + 0x84, 0xff, 0xa2, 0xff, 0xa4, 0xff, 0xa8, 0xff, 0xcd, 0xff, 0xcf, 0xff, 0x03, 0x00, 0x08, 0x00, + 0xe7, 0xff, 0x06, 0x00, 0x01, 0x00, 0x09, 0x00, 0x13, 0x00, 0xeb, 0xff, 0xdf, 0xff, 0xa5, 0xff, + 0x9e, 0xff, 0xed, 0xff, 0xe0, 0xff, 0xce, 0xff, 0xab, 0xff, 0xae, 0xff, 0xcd, 0xff, 0xb6, 0xff, + 0xc1, 0xff, 0xd5, 0xff, 0xf0, 0xff, 0xd8, 0xff, 0xd0, 0xff, 0x1a, 0x00, 0x12, 0x00, 0x1a, 0x00, + 0x1c, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x46, 0x00, 0x77, 0x00, 0x7d, 0x00, 0x56, 0x00, 0x3c, 0x00, + 0x02, 0x00, 0xe9, 0xff, 0xd6, 0xff, 0xfa, 0xff, 0xcc, 0xff, 0xf3, 0xff, 0x1b, 0x00, 0xf5, 0xff, + 0x08, 0x00, 0xed, 0xff, 0x00, 0x00, 0x20, 0x00, 0x24, 0x00, 0x2f, 0x00, 0x2d, 0x00, 0x1e, 0x00, + 0x25, 0x00, 0x4d, 0x00, 0x37, 0x00, 0x18, 0x00, 0x22, 0x00, 0x27, 0x00, 0x2c, 0x00, 0x2f, 0x00, + 0x30, 0x00, 0x4f, 0x00, 0x45, 0x00, 0x39, 0x00, 0x91, 0x00, 0x6b, 0x00, 0x5c, 0x00, 0x69, 0x00, + 0x74, 0x00, 0x5c, 0x00, 0x54, 0x00, 0x2d, 0x00, 0x3c, 0x00, 0x6c, 0x00, 0x5a, 0x00, 0x7c, 0x00, + 0x50, 0x00, 0x5c, 0x00, 0x2e, 0x00, 0x18, 0x00, 0x3d, 0x00, 0x4e, 0x00, 0x45, 0x00, 0x4c, 0x00, + 0x6e, 0x00, 0x3e, 0x00, 0x31, 0x00, 0x44, 0x00, 0x3d, 0x00, 0x43, 0x00, 0x2c, 0x00, 0x2e, 0x00, + 0x3a, 0x00, 0x29, 0x00, 0x28, 0x00, 0x5c, 0x00, 0x75, 0x00, 0x55, 0x00, 0x63, 0x00, 0x6e, 0x00, + 0x9a, 0x00, 0x81, 0x00, 0x7b, 0x00, 0x8e, 0x00, 0x6a, 0x00, 0x92, 0x00, 0x60, 0x00, 0x69, 0x00, + 0x86, 0x00, 0x6c, 0x00, 0x7a, 0x00, 0x5e, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x69, 0x00, 0x4a, 0x00, + 0x48, 0x00, 0x45, 0x00, 0x19, 0x00, 0x20, 0x00, 0x09, 0x00, 0xf5, 0xff, 0xdc, 0xff, 0xc3, 0xff, + 0xdd, 0xff, 0x09, 0x00, 0xe3, 0xff, 0xdc, 0xff, 0xf5, 0xff, 0xb5, 0xff, 0xd2, 0xff, 0xda, 0xff, + 0xd7, 0xff, 0x9e, 0xff, 0xa7, 0xff, 0xc4, 0xff, 0x7a, 0xff, 0xa3, 0xff, 0x70, 0xff, 0x82, 0xff, + 0xa7, 0xff, 0x7d, 0xff, 0x9e, 0xff, 0xab, 0xff, 0xb0, 0xff, 0xb3, 0xff, 0x7e, 0xff, 0x72, 0xff, + 0x7d, 0xff, 0xa2, 0xff, 0xc2, 0xff, 0xd8, 0xff, 0xc8, 0xff, 0xa4, 0xff, 0x7b, 0xff, 0xa4, 0xff, + 0x95, 0xff, 0xbd, 0xff, 0xe5, 0xff, 0xdd, 0xff, 0x09, 0x00, 0xc0, 0xff, 0xa3, 0xff, 0xa0, 0xff, + 0x84, 0xff, 0x76, 0xff, 0x8f, 0xff, 0xa0, 0xff, 0xc7, 0xff, 0xc9, 0xff, 0xc4, 0xff, 0xd3, 0xff, + 0xb6, 0xff, 0xdb, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0x2c, 0x00, 0x39, 0x00, 0x33, 0x00, 0x1a, 0x00, + 0xfa, 0xff, 0x23, 0x00, 0x0b, 0x00, 0x2a, 0x00, 0x26, 0x00, 0x10, 0x00, 0x4b, 0x00, 0x18, 0x00, + 0x40, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x31, 0x00, 0x18, 0x00, 0x5c, 0x00, 0x13, 0x00, 0x3d, 0x00, + 0x1a, 0x00, 0x54, 0x00, 0x48, 0x00, 0x27, 0x00, 0x3a, 0x00, 0x0f, 0x00, 0x2f, 0x00, 0xe4, 0xff, + 0xdc, 0xff, 0x98, 0xff, 0x60, 0xff, 0x79, 0xff, 0x68, 0xff, 0x8d, 0xff, 0x54, 0xff, 0x40, 0xff, + 0x43, 0xff, 0x0c, 0xff, 0x3e, 0xff, 0x2b, 0xff, 0x65, 0xff, 0x36, 0xff, 0x78, 0xff, 0xb2, 0xff, + 0x9f, 0xff, 0xbd, 0xff, 0x9c, 0xff, 0xd7, 0xff, 0xd5, 0xff, 0xca, 0xff, 0xea, 0xff, 0xf8, 0xff, + 0x31, 0x00, 0x39, 0x00, 0x64, 0x00, 0x6f, 0x00, 0x6a, 0x00, 0x8a, 0x00, 0xb6, 0x00, 0xa0, 0x00, + 0xa5, 0x00, 0xa9, 0x00, 0x9b, 0x00, 0xe3, 0x00, 0xc4, 0x00, 0xc7, 0x00, 0xa3, 0x00, 0x97, 0x00, + 0xac, 0x00, 0xa1, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x63, 0x00, 0x68, 0x00, 0x86, 0x00, 0x7d, 0x00, + 0x55, 0x00, 0x6f, 0x00, 0x4d, 0x00, 0x7a, 0x00, 0x72, 0x00, 0x67, 0x00, 0x89, 0x00, 0x6d, 0x00, + 0x8c, 0x00, 0x70, 0x00, 0x46, 0x00, 0x0a, 0x00, 0xf7, 0xff, 0xfe, 0xff, 0xf5, 0xff, 0xf0, 0xff, + 0xcc, 0xff, 0x99, 0xff, 0xa8, 0xff, 0x6a, 0xff, 0x5d, 0xff, 0x2c, 0xff, 0x2f, 0xff, 0x35, 0xff, + 0x2b, 0xff, 0x6d, 0xff, 0x46, 0xff, 0x52, 0xff, 0x05, 0xff, 0x2a, 0xff, 0x2a, 0xff, 0x12, 0xff, + 0x0d, 0xff, 0xc8, 0xfe, 0x07, 0xff, 0xf4, 0xfe, 0x02, 0xff, 0x35, 0xff, 0xe6, 0xfe, 0x4a, 0xff, + 0x26, 0xff, 0x8c, 0xff, 0xf3, 0xff, 0x2a, 0x00, 0x0c, 0x01, 0x6b, 0x01, 0xdd, 0x01, 0xe1, 0x01, + 0x69, 0x01, 0xd3, 0x00, 0x3c, 0x00, 0xed, 0xff, 0xec, 0xff, 0x13, 0x00, 0x53, 0x00, 0x7c, 0x00, + 0x26, 0x00, 0xd6, 0xff, 0x6e, 0xff, 0x6e, 0xfe, 0x02, 0xfe, 0xc9, 0xfc, 0xb3, 0xfc, 0xc0, 0xfc, + 0x90, 0xfc, 0xc6, 0xfd, 0x78, 0xfd, 0x79, 0xfe, 0xb8, 0xfe, 0x03, 0xfe, 0xd1, 0xfd, 0x6b, 0xfc, + 0x74, 0xfc, 0x41, 0xfc, 0x15, 0xfc, 0xcf, 0xfc, 0xab, 0xfd, 0xae, 0x00, 0x23, 0x03, 0x42, 0x04, + 0x58, 0x05, 0xcb, 0x05, 0x70, 0x05, 0x1d, 0x03, 0xe1, 0xff, 0xd0, 0xff, 0xfd, 0x01, 0x1d, 0x06, + 0xcd, 0x08, 0x31, 0x0b, 0xa4, 0x0e, 0xb3, 0x0c, 0x76, 0x09, 0x11, 0x06, 0xbf, 0x01, 0x18, 0x03, + 0xe9, 0x01, 0xe6, 0x00, 0xe4, 0x04, 0x73, 0x05, 0x97, 0x07, 0xfe, 0x06, 0x77, 0x01, 0x26, 0x02, + 0x53, 0x01, 0xb3, 0xfb, 0x76, 0xf9, 0xa4, 0xf4, 0x92, 0xf8, 0x54, 0xff, 0x39, 0x00, 0x47, 0x05, + 0x24, 0x02, 0xa1, 0xff, 0x68, 0xfb, 0x28, 0xf1, 0x57, 0xf2, 0x63, 0xf1, 0x8e, 0xf2, 0x03, 0xf7, + 0x7d, 0xf5, 0x34, 0xf4, 0x9d, 0xf2, 0xc2, 0xeb, 0x9f, 0xec, 0xc1, 0xec, 0x26, 0xed, 0x47, 0xf3, + 0x4e, 0xf0, 0x5e, 0xf1, 0x96, 0xf4, 0x33, 0xf5, 0xe4, 0xfa, 0x4d, 0xfb, 0x5b, 0xfe, 0x73, 0x01, + 0xe9, 0x00, 0x55, 0x05, 0xef, 0x03, 0x54, 0x09, 0x13, 0x0e, 0x81, 0x0e, 0x25, 0x14, 0xfa, 0x12, + 0x78, 0x17, 0xdc, 0x1c, 0x5b, 0x20, 0xc6, 0x2b, 0x12, 0x2b, 0x8a, 0x29, 0x01, 0x24, 0x9d, 0x1d, + 0xfb, 0x1b, 0xf9, 0x16, 0xad, 0x13, 0xa1, 0x10, 0x15, 0x0d, 0xe7, 0x0a, 0x43, 0x05, 0x1b, 0x00, + 0xb7, 0xfe, 0x4a, 0xfc, 0x5d, 0xfb, 0xf5, 0xfb, 0xb8, 0xf6, 0x95, 0xf6, 0xba, 0xf4, 0xf6, 0xf2, + 0xb8, 0xf2, 0x6f, 0xec, 0xae, 0xed, 0x2a, 0xe9, 0x88, 0xe8, 0xf8, 0xe9, 0x2c, 0xe7, 0xb4, 0xee, + 0xe2, 0xee, 0x75, 0xf1, 0xe7, 0xf3, 0xf9, 0xf1, 0x4b, 0xf8, 0x50, 0xf8, 0x13, 0x01, 0x2a, 0x09, + 0x61, 0x0c, 0xed, 0x0c, 0xa4, 0x06, 0xf8, 0x02, 0xae, 0x00, 0x90, 0xfe, 0xcf, 0xfb, 0x53, 0xf8, + 0x4c, 0xf8, 0xc3, 0xf5, 0x83, 0xf2, 0x1c, 0xed, 0xbb, 0xeb, 0x8c, 0xea, 0xb5, 0xed, 0x38, 0xee, + 0x3c, 0xe9, 0xe9, 0xe8, 0x6b, 0xe7, 0xcb, 0xeb, 0xdb, 0xec, 0x3d, 0xee, 0x41, 0xf1, 0x5f, 0xf1, + 0x39, 0xf6, 0xdb, 0xf7, 0xad, 0xfb, 0x42, 0x00, 0x97, 0x01, 0x1c, 0x06, 0x82, 0x05, 0x2a, 0x08, + 0xfb, 0x09, 0xc1, 0x09, 0x9e, 0x10, 0x59, 0x15, 0x41, 0x1c, 0xeb, 0x1e, 0x03, 0x19, 0xce, 0x16, + 0x93, 0x15, 0x26, 0x17, 0x6f, 0x16, 0x60, 0x14, 0x92, 0x12, 0xd4, 0x10, 0x98, 0x0b, 0x7e, 0x08, + 0xf3, 0x03, 0xa4, 0x01, 0xa3, 0x04, 0xe8, 0x01, 0x8c, 0x00, 0xe8, 0xfc, 0x63, 0xfc, 0x59, 0xfe, + 0x7b, 0xfc, 0x94, 0xfd, 0xdb, 0xfb, 0x42, 0xfb, 0x6a, 0xfb, 0x97, 0xf9, 0xec, 0xfc, 0xd7, 0xfe, + 0x36, 0x04, 0x71, 0x04, 0xc6, 0x03, 0x5d, 0x07, 0xcc, 0x06, 0x79, 0x08, 0x75, 0x0e, 0xf4, 0x12, + 0xfa, 0x18, 0xe6, 0x18, 0xc3, 0x11, 0xa0, 0x0c, 0x3a, 0x0a, 0x40, 0x09, 0x69, 0x08, 0xa3, 0x02, + 0xcb, 0x02, 0x84, 0xfd, 0x95, 0xf8, 0x4a, 0xf6, 0xc3, 0xed, 0xd1, 0xf0, 0xed, 0xef, 0x53, 0xf0, + 0x80, 0xee, 0xc8, 0xea, 0xec, 0xed, 0x66, 0xec, 0xcc, 0xec, 0xdc, 0xeb, 0x4c, 0xeb, 0x28, 0xee, + 0xd0, 0xed, 0x0b, 0xf1, 0xde, 0xf1, 0x48, 0xf7, 0xa6, 0xfc, 0xef, 0xfc, 0x9c, 0xff, 0x64, 0x01, + 0x24, 0x03, 0xf8, 0x05, 0x4a, 0x0c, 0x7d, 0x12, 0x32, 0x1a, 0x4c, 0x1b, 0x80, 0x14, 0xe9, 0x10, + 0x9a, 0x0b, 0x3d, 0x0d, 0xb5, 0x09, 0x66, 0x05, 0x37, 0x06, 0x43, 0xff, 0x41, 0x00, 0x47, 0xfa, + 0x63, 0xf6, 0xbb, 0xf8, 0xb0, 0xf8, 0x33, 0xfc, 0xee, 0xf6, 0x3d, 0xf6, 0xb6, 0xf7, 0x45, 0xf7, + 0x68, 0xf8, 0x83, 0xf4, 0xc4, 0xf5, 0x6d, 0xf6, 0x7a, 0xf8, 0xa4, 0xf9, 0x14, 0xf8, 0xdc, 0xfd, + 0x93, 0x00, 0x2d, 0x02, 0x91, 0x05, 0x7e, 0x06, 0x09, 0x07, 0x5a, 0x08, 0xd9, 0x0b, 0x81, 0x11, + 0xb2, 0x18, 0xff, 0x17, 0x6b, 0x13, 0xb9, 0x0b, 0x2c, 0x08, 0xb0, 0x07, 0x0a, 0x02, 0xaa, 0x01, + 0x4d, 0xfd, 0x97, 0xfb, 0x60, 0xfa, 0x9a, 0xf3, 0x3c, 0xf0, 0xd0, 0xec, 0x28, 0xef, 0xe6, 0xef, + 0x6f, 0xec, 0xa9, 0xec, 0x3b, 0xed, 0xec, 0xef, 0x85, 0xf0, 0x70, 0xef, 0xa0, 0xef, 0xc3, 0xf0, + 0x81, 0xf3, 0xb0, 0xf3, 0x07, 0xf4, 0x4d, 0xf8, 0x9b, 0xfa, 0x9c, 0xfb, 0xe6, 0xff, 0x53, 0x00, + 0x88, 0x01, 0xdc, 0x02, 0x9e, 0x03, 0xf6, 0x0b, 0x1f, 0x11, 0xcd, 0x14, 0x3c, 0x11, 0x39, 0x09, + 0x90, 0x09, 0xd4, 0x04, 0xfe, 0x03, 0x5f, 0x00, 0xc5, 0xfb, 0x97, 0xfb, 0x73, 0xf7, 0x32, 0xf5, + 0x04, 0xef, 0x05, 0xee, 0xc9, 0xf0, 0x15, 0xf1, 0x96, 0xf0, 0x88, 0xef, 0xff, 0xf1, 0x1e, 0xf4, + 0x67, 0xf6, 0x7b, 0xf6, 0xf6, 0xf6, 0x32, 0xfa, 0xab, 0xfc, 0x05, 0xfe, 0x6d, 0xff, 0xe4, 0x04, + 0xb0, 0x06, 0xa5, 0x09, 0x15, 0x0f, 0xb4, 0x0f, 0x0b, 0x15, 0xf3, 0x13, 0x94, 0x16, 0x6d, 0x1d, + 0x82, 0x22, 0x43, 0x2a, 0x3a, 0x23, 0xf2, 0x1f, 0x2e, 0x1c, 0x0d, 0x18, 0x4f, 0x18, 0x5a, 0x11, + 0xa7, 0x0f, 0xb7, 0x0b, 0xf4, 0x08, 0xf7, 0x04, 0x7d, 0xfc, 0x40, 0xfb, 0x6a, 0xfa, 0x5c, 0xfa, + 0xb9, 0xf7, 0x9c, 0xf5, 0x80, 0xf6, 0x7f, 0xf6, 0xb3, 0xf7, 0x5c, 0xf5, 0x4b, 0xf4, 0x18, 0xf6, + 0x89, 0xf7, 0x6e, 0xf6, 0x51, 0xf8, 0xfb, 0xfb, 0x20, 0xfc, 0xc3, 0x00, 0xd0, 0x01, 0xfc, 0x04, + 0x81, 0x08, 0x8f, 0x06, 0x7c, 0x0a, 0xd2, 0x0c, 0x2e, 0x16, 0x74, 0x1a, 0xfe, 0x15, 0xd0, 0x13, + 0x5c, 0x0d, 0x3f, 0x0c, 0xfb, 0x08, 0x1d, 0x04, 0xb3, 0x00, 0xbb, 0xfc, 0x48, 0xfb, 0x80, 0xf6, + 0x75, 0xef, 0x6a, 0xed, 0xa2, 0xed, 0x9e, 0xed, 0x81, 0xec, 0x49, 0xeb, 0x77, 0xec, 0xf2, 0xed, + 0x4f, 0xef, 0x4e, 0xee, 0x21, 0xed, 0x4b, 0xf1, 0x26, 0xf2, 0x90, 0xf1, 0x98, 0xf5, 0x3b, 0xf6, + 0x7f, 0xfa, 0x20, 0xfd, 0xd1, 0xfe, 0x9a, 0x04, 0x49, 0x05, 0xae, 0x07, 0x5e, 0x07, 0xa5, 0x0b, + 0xeb, 0x15, 0xb5, 0x19, 0xc3, 0x1a, 0x27, 0x16, 0x48, 0x12, 0xa4, 0x0f, 0x6d, 0x0c, 0x1e, 0x08, + 0xdd, 0x03, 0x77, 0x01, 0xf0, 0xff, 0x1b, 0xfc, 0x69, 0xf4, 0x78, 0xf2, 0xa3, 0xf1, 0xb2, 0xf0, + 0x8b, 0xef, 0xe1, 0xec, 0xe3, 0xee, 0x38, 0xf0, 0xcf, 0xf2, 0x11, 0xf1, 0xe2, 0xef, 0x73, 0xf5, + 0xb0, 0xf3, 0x72, 0xf6, 0xa4, 0xf7, 0x63, 0xf8, 0x6f, 0xfe, 0x7d, 0xfd, 0xf7, 0x02, 0x3b, 0x05, + 0xcf, 0x07, 0x32, 0x0a, 0x28, 0x07, 0x03, 0x0e, 0x44, 0x14, 0x5b, 0x1a, 0xe4, 0x1a, 0x96, 0x16, + 0x71, 0x13, 0xcd, 0x0f, 0x50, 0x0d, 0xc4, 0x08, 0x85, 0x04, 0x03, 0x02, 0x43, 0x01, 0x9c, 0xfc, + 0x27, 0xf5, 0x37, 0xf2, 0xef, 0xef, 0x9b, 0xef, 0xe6, 0xec, 0xc2, 0xea, 0xff, 0xea, 0x9b, 0xec, + 0xf9, 0xef, 0xed, 0xeb, 0x08, 0xee, 0x51, 0xf0, 0x83, 0xef, 0x59, 0xf3, 0x94, 0xf1, 0x2c, 0xf6, + 0xf9, 0xf8, 0x87, 0xfa, 0xea, 0xff, 0x26, 0x01, 0x29, 0x07, 0x7f, 0x06, 0xc1, 0x05, 0x02, 0x0b, + 0xb2, 0x11, 0x43, 0x19, 0xfb, 0x1a, 0x58, 0x18, 0xa3, 0x15, 0x06, 0x13, 0x5d, 0x10, 0x00, 0x0d, + 0xce, 0x07, 0x77, 0x06, 0xe9, 0x05, 0xf0, 0x00, 0xa7, 0xfb, 0x6e, 0xf7, 0xdc, 0xf6, 0x79, 0xf6, + 0x87, 0xf4, 0x6d, 0xf3, 0x26, 0xf2, 0x06, 0xf7, 0x32, 0xf7, 0xed, 0xf4, 0x7d, 0xf7, 0xdb, 0xf6, + 0xa6, 0xf9, 0x95, 0xf9, 0xc3, 0xf9, 0x25, 0xfd, 0x98, 0xfe, 0x9d, 0x02, 0xab, 0x04, 0x0f, 0x09, + 0x80, 0x0d, 0x05, 0x0d, 0x83, 0x0c, 0x24, 0x10, 0x28, 0x17, 0xd2, 0x1e, 0x75, 0x21, 0xd7, 0x1e, + 0x93, 0x1c, 0x89, 0x18, 0x6f, 0x16, 0xd3, 0x11, 0x2c, 0x0b, 0x9f, 0x0a, 0xba, 0x07, 0xf5, 0x03, + 0x62, 0xfd, 0x21, 0xf8, 0x70, 0xf7, 0xa4, 0xf4, 0x9e, 0xf4, 0x8d, 0xef, 0x81, 0xef, 0xa1, 0xf3, + 0xb5, 0xf0, 0xee, 0xf1, 0x67, 0xf0, 0xa4, 0xf1, 0xc3, 0xf3, 0xc3, 0xf1, 0x7c, 0xf3, 0x71, 0xf3, + 0xa0, 0xf6, 0x7b, 0xf8, 0x31, 0xfa, 0xc9, 0xfe, 0x24, 0x02, 0x1c, 0x02, 0xcf, 0x00, 0x90, 0x03, + 0xd9, 0x09, 0xe2, 0x11, 0x16, 0x14, 0x2a, 0x13, 0x58, 0x10, 0xe5, 0x0c, 0x6e, 0x0c, 0x7c, 0x06, + 0x42, 0x02, 0x3f, 0x01, 0x0f, 0xff, 0xb5, 0xfc, 0x92, 0xf5, 0xa7, 0xf2, 0xe6, 0xef, 0xed, 0xef, + 0x57, 0xef, 0x98, 0xe9, 0x0e, 0xed, 0x4c, 0xee, 0x10, 0xef, 0x03, 0xf0, 0x51, 0xee, 0x9e, 0xf2, + 0xf9, 0xf2, 0x3f, 0xf4, 0x41, 0xf5, 0xa7, 0xf6, 0x35, 0xfb, 0xbe, 0xfc, 0x7b, 0xff, 0x50, 0x04, + 0x11, 0x08, 0xc5, 0x08, 0x05, 0x08, 0xd7, 0x09, 0x2d, 0x11, 0x65, 0x18, 0xe2, 0x1b, 0x04, 0x1c, + 0xca, 0x17, 0x8d, 0x16, 0x54, 0x14, 0x92, 0x0e, 0xa8, 0x0a, 0x7c, 0x07, 0xeb, 0x06, 0x6d, 0x02, + 0xc3, 0xfc, 0x2e, 0xf8, 0x94, 0xf4, 0x46, 0xf6, 0xc8, 0xf1, 0x42, 0xee, 0xac, 0xef, 0xa9, 0xef, + 0x87, 0xf1, 0x5b, 0xef, 0xf8, 0xee, 0x09, 0xf1, 0x8f, 0xf1, 0x2d, 0xf2, 0x1c, 0xf2, 0x5d, 0xf3, + 0x15, 0xf7, 0x3c, 0xf8, 0x8d, 0xfa, 0xac, 0xff, 0x7c, 0x02, 0x87, 0x04, 0xe1, 0x02, 0xe7, 0x04, + 0x57, 0x0c, 0x8c, 0x12, 0xea, 0x18, 0x34, 0x18, 0xb0, 0x15, 0xbe, 0x15, 0x35, 0x12, 0xe8, 0x0e, + 0x0f, 0x09, 0x10, 0x08, 0xf4, 0x06, 0xed, 0x02, 0x10, 0xff, 0x82, 0xf7, 0x33, 0xf7, 0x15, 0xf7, + 0x88, 0xf2, 0xb1, 0xf0, 0x9b, 0xef, 0x31, 0xf2, 0x06, 0xf3, 0xfe, 0xf1, 0x65, 0xf2, 0xf9, 0xf3, + 0x95, 0xf5, 0xb9, 0xf5, 0x5a, 0xf5, 0xbf, 0xf6, 0x19, 0xfa, 0x6c, 0xfa, 0x7c, 0xfd, 0x5d, 0x01, + 0x31, 0x05, 0x61, 0x07, 0x81, 0x04, 0xa2, 0x07, 0xc5, 0x0c, 0x71, 0x14, 0x80, 0x1b, 0xc8, 0x19, + 0x29, 0x1a, 0xcc, 0x18, 0x65, 0x17, 0x2f, 0x13, 0x62, 0x0d, 0xe7, 0x0c, 0xd1, 0x09, 0x91, 0x08, + 0xad, 0x02, 0x89, 0xfb, 0x0a, 0xfc, 0x98, 0xf9, 0x02, 0xf7, 0x7a, 0xf3, 0x83, 0xf2, 0x23, 0xf5, + 0x2f, 0xf5, 0x94, 0xf4, 0x7d, 0xf4, 0xd5, 0xf5, 0x8e, 0xf7, 0x3d, 0xf7, 0x4b, 0xf6, 0x69, 0xf8, + 0x0c, 0xfa, 0xf0, 0xfa, 0x19, 0xfd, 0x2e, 0x00, 0x3d, 0x05, 0x98, 0x05, 0x19, 0x04, 0xc6, 0x05, + 0xfd, 0x08, 0xcd, 0x11, 0x4e, 0x16, 0x95, 0x16, 0xec, 0x15, 0xc5, 0x14, 0x8a, 0x13, 0xfe, 0x0d, + 0xdd, 0x09, 0x07, 0x07, 0xf6, 0x04, 0x06, 0x04, 0x9e, 0xfc, 0xcc, 0xf7, 0xe9, 0xf6, 0xcb, 0xf4, + 0xd7, 0xf1, 0x59, 0xed, 0x9c, 0xec, 0xe8, 0xee, 0xc1, 0xee, 0xaa, 0xee, 0x48, 0xee, 0x68, 0xef, + 0xe8, 0xf1, 0x35, 0xf0, 0x8e, 0xf0, 0x57, 0xf2, 0xff, 0xf3, 0x38, 0xf6, 0xf6, 0xf6, 0xd2, 0xfb, + 0x92, 0x00, 0xff, 0x00, 0xf1, 0x01, 0x1d, 0x01, 0x63, 0x06, 0x70, 0x0e, 0xa1, 0x13, 0x2c, 0x15, + 0x5e, 0x14, 0x69, 0x15, 0x60, 0x13, 0x3d, 0x0f, 0x0b, 0x0b, 0x24, 0x07, 0x18, 0x07, 0x0f, 0x05, + 0x70, 0xfe, 0x0b, 0xfa, 0x95, 0xf8, 0x26, 0xf7, 0x31, 0xf4, 0x57, 0xef, 0xcc, 0xee, 0x6f, 0xf0, + 0x1e, 0xf0, 0x4b, 0xf0, 0x92, 0xee, 0xd9, 0xf0, 0x73, 0xf2, 0xb4, 0xf0, 0xe2, 0xf1, 0xff, 0xf1, + 0xbe, 0xf4, 0x11, 0xf6, 0x68, 0xf6, 0x86, 0xfc, 0x50, 0xff, 0x67, 0x02, 0x14, 0x02, 0x7a, 0x01, + 0xe1, 0x06, 0x11, 0x0e, 0xb9, 0x14, 0xc7, 0x15, 0x6a, 0x16, 0xcf, 0x17, 0xc4, 0x15, 0x7b, 0x13, + 0x01, 0x0e, 0xb6, 0x0a, 0x53, 0x0b, 0x26, 0x08, 0xa7, 0x02, 0x57, 0xfe, 0x72, 0xfc, 0xe0, 0xfb, + 0x32, 0xf8, 0x95, 0xf3, 0x37, 0xf3, 0xc5, 0xf3, 0x0e, 0xf5, 0x11, 0xf4, 0x1b, 0xf3, 0x05, 0xf6, + 0x64, 0xf6, 0xf8, 0xf5, 0xc7, 0xf5, 0x0a, 0xf6, 0x78, 0xf9, 0x8b, 0xf8, 0x97, 0xfa, 0x74, 0xfe, + 0xcc, 0x01, 0x31, 0x05, 0xd6, 0x03, 0x80, 0x03, 0xa7, 0x07, 0x09, 0x0f, 0x32, 0x15, 0x59, 0x16, + 0xdf, 0x17, 0x75, 0x18, 0x61, 0x17, 0x28, 0x15, 0xae, 0x0e, 0x1a, 0x0c, 0xec, 0x0b, 0x31, 0x08, + 0x63, 0x03, 0xdc, 0xfd, 0x51, 0xfc, 0xc9, 0xfb, 0xe9, 0xf6, 0x9c, 0xf3, 0x6a, 0xf1, 0x86, 0xf2, + 0xf5, 0xf3, 0xc2, 0xf1, 0x51, 0xf2, 0xe0, 0xf3, 0xc0, 0xf4, 0xfa, 0xf4, 0x5b, 0xf3, 0xe7, 0xf5, + 0x46, 0xf7, 0x82, 0xf7, 0x8e, 0xf9, 0x8e, 0xfc, 0x3c, 0x01, 0x4e, 0x04, 0x98, 0x03, 0xc5, 0x02, + 0x96, 0x06, 0x1b, 0x0e, 0xd4, 0x13, 0x51, 0x16, 0x66, 0x18, 0x36, 0x19, 0x9d, 0x19, 0xd5, 0x16, + 0x44, 0x10, 0x6e, 0x0e, 0x47, 0x0d, 0xf8, 0x09, 0x3b, 0x05, 0xd9, 0xfe, 0x77, 0xfe, 0x85, 0xfc, + 0x68, 0xf8, 0xa3, 0xf4, 0x0f, 0xf1, 0x0e, 0xf3, 0x73, 0xf2, 0xa5, 0xf0, 0x40, 0xf1, 0xf3, 0xf0, + 0xad, 0xf3, 0xc6, 0xf1, 0x4e, 0xf1, 0x6b, 0xf3, 0xec, 0xf3, 0x15, 0xf5, 0xe2, 0xf5, 0xcb, 0xf8, + 0x89, 0xfd, 0xac, 0x00, 0x8a, 0x00, 0x65, 0xff, 0x6f, 0x03, 0x8e, 0x0a, 0xcc, 0x0f, 0x1b, 0x13, + 0x69, 0x14, 0xae, 0x15, 0x3b, 0x17, 0xb3, 0x13, 0x22, 0x0e, 0x75, 0x0c, 0xc2, 0x0a, 0xf9, 0x08, + 0xfe, 0x02, 0xd1, 0xfd, 0x24, 0xfd, 0xcb, 0xfa, 0x2b, 0xf8, 0xeb, 0xf2, 0x33, 0xf0, 0x23, 0xf2, + 0x73, 0xf0, 0x73, 0xf0, 0x23, 0xef, 0x79, 0xf0, 0x74, 0xf2, 0x3e, 0xf0, 0xb4, 0xf0, 0x80, 0xf1, + 0x73, 0xf2, 0x8d, 0xf3, 0xe5, 0xf3, 0xd8, 0xf6, 0x8b, 0xfb, 0x0e, 0xff, 0x01, 0xff, 0xa4, 0xfd, + 0x88, 0x01, 0x86, 0x07, 0x48, 0x0d, 0x50, 0x11, 0xf6, 0x11, 0xbb, 0x14, 0x41, 0x16, 0x92, 0x12, + 0x96, 0x0e, 0x6f, 0x0b, 0xfd, 0x0a, 0xfb, 0x08, 0xcb, 0x02, 0xda, 0xfe, 0xdc, 0xfc, 0xd7, 0xfb, + 0x48, 0xf9, 0x7b, 0xf3, 0x98, 0xf2, 0x90, 0xf2, 0xda, 0xf2, 0x2a, 0xf2, 0x1f, 0xf1, 0xad, 0xf3, + 0xeb, 0xf4, 0x06, 0xf4, 0x84, 0xf4, 0x65, 0xf5, 0xc2, 0xf6, 0xe5, 0xf7, 0xbb, 0xf7, 0x7a, 0xfa, + 0x37, 0xff, 0x1d, 0x03, 0xda, 0x02, 0xc0, 0x01, 0x29, 0x05, 0x3e, 0x0a, 0xf4, 0x10, 0xa3, 0x14, + 0x39, 0x15, 0x7d, 0x19, 0x0b, 0x1a, 0xae, 0x17, 0x50, 0x13, 0xad, 0x0f, 0x03, 0x10, 0xaf, 0x0c, + 0x57, 0x07, 0xcb, 0x02, 0xc7, 0xff, 0x27, 0x00, 0x46, 0xfb, 0xf4, 0xf6, 0x7a, 0xf4, 0x28, 0xf4, + 0xdd, 0xf4, 0xd7, 0xf2, 0xad, 0xf2, 0x92, 0xf4, 0x60, 0xf5, 0xc8, 0xf4, 0xe8, 0xf4, 0x4d, 0xf5, + 0xea, 0xf6, 0x7b, 0xf7, 0x3f, 0xf7, 0x47, 0xf9, 0x1b, 0xfe, 0x0c, 0x02, 0x70, 0x01, 0xd0, 0x00, + 0xf5, 0x02, 0xd5, 0x07, 0x28, 0x0f, 0x72, 0x11, 0x83, 0x13, 0x49, 0x17, 0x1a, 0x18, 0xc9, 0x16, + 0x79, 0x11, 0xf5, 0x0e, 0xc5, 0x0e, 0xfe, 0x0a, 0xf3, 0x06, 0x9e, 0x00, 0x3a, 0xff, 0x7e, 0xfe, + 0xf7, 0xf9, 0x18, 0xf6, 0xa0, 0xf2, 0xb7, 0xf2, 0xd1, 0xf2, 0x8e, 0xf0, 0xfc, 0xf0, 0x54, 0xf2, + 0xd1, 0xf2, 0x08, 0xf3, 0x14, 0xf2, 0xc9, 0xf2, 0x2a, 0xf4, 0xd4, 0xf4, 0x96, 0xf4, 0x47, 0xf6, + 0xd6, 0xfb, 0x34, 0xff, 0x4e, 0xff, 0x19, 0xff, 0xae, 0xff, 0xa0, 0x05, 0xca, 0x0b, 0x72, 0x0e, + 0x7a, 0x11, 0x92, 0x14, 0xe0, 0x16, 0x5e, 0x15, 0x53, 0x10, 0xe7, 0x0e, 0x63, 0x0d, 0x89, 0x0b, + 0x61, 0x06, 0x90, 0x00, 0x92, 0xff, 0x51, 0xfe, 0xed, 0xfa, 0xd6, 0xf6, 0x43, 0xf3, 0x81, 0xf3, + 0x27, 0xf3, 0xb5, 0xf0, 0xa4, 0xf1, 0xfa, 0xf1, 0x78, 0xf3, 0x89, 0xf3, 0x76, 0xf2, 0x6f, 0xf3, + 0x2f, 0xf4, 0x0e, 0xf5, 0x04, 0xf4, 0x92, 0xf5, 0x27, 0xfb, 0xbc, 0xfd, 0x94, 0xff, 0x42, 0xfe, + 0xcd, 0xfe, 0xfc, 0x04, 0xc0, 0x09, 0x91, 0x0d, 0x08, 0x10, 0x48, 0x13, 0xe2, 0x16, 0x7f, 0x14, + 0x58, 0x11, 0x90, 0x0e, 0xbd, 0x0d, 0x66, 0x0c, 0xb2, 0x06, 0xa4, 0x01, 0xdf, 0xff, 0x96, 0xfe, + 0x96, 0xfb, 0xfc, 0xf6, 0x35, 0xf3, 0xc7, 0xf3, 0x7a, 0xf2, 0xcc, 0xf0, 0xcb, 0xf0, 0xfd, 0xf0, + 0xb8, 0xf2, 0x76, 0xf2, 0xdd, 0xf1, 0x74, 0xf2, 0xeb, 0xf3, 0x04, 0xf5, 0x2b, 0xf3, 0xa9, 0xf5, + 0xdc, 0xf9, 0x1c, 0xfd, 0x8a, 0xff, 0x34, 0xfd, 0xdc, 0xfe, 0x38, 0x04, 0x1d, 0x09, 0xf7, 0x0d, + 0xeb, 0x0f, 0x4d, 0x15, 0x48, 0x18, 0x34, 0x17, 0xa7, 0x14, 0x72, 0x11, 0xf7, 0x11, 0x3f, 0x10, + 0xa0, 0x0a, 0x0c, 0x06, 0xb3, 0x03, 0xc0, 0x02, 0x29, 0x00, 0x7f, 0xfa, 0xfd, 0xf7, 0x4c, 0xf7, + 0xff, 0xf5, 0xe0, 0xf4, 0x11, 0xf4, 0xc2, 0xf4, 0x47, 0xf6, 0xfa, 0xf5, 0x3f, 0xf5, 0x42, 0xf5, + 0x72, 0xf7, 0x48, 0xf7, 0xf4, 0xf5, 0xd4, 0xf7, 0xc1, 0xfa, 0x20, 0xff, 0x89, 0x00, 0x23, 0xfe, + 0xee, 0xff, 0xbc, 0x03, 0x85, 0x09, 0xe7, 0x0c, 0x6a, 0x0f, 0xbe, 0x14, 0x7c, 0x17, 0xc5, 0x17, + 0x9b, 0x14, 0xb8, 0x11, 0xa7, 0x12, 0x72, 0x10, 0x22, 0x0b, 0xda, 0x06, 0x6e, 0x03, 0x9a, 0x03, + 0x22, 0x00, 0xd8, 0xfa, 0x86, 0xf8, 0xc1, 0xf6, 0x0b, 0xf6, 0x4c, 0xf4, 0x4b, 0xf3, 0x16, 0xf4, + 0x1b, 0xf5, 0x8b, 0xf5, 0xbf, 0xf3, 0x4c, 0xf4, 0x26, 0xf6, 0x64, 0xf5, 0x21, 0xf5, 0x8f, 0xf5, + 0xad, 0xf8, 0xc5, 0xfd, 0x64, 0xfe, 0x39, 0xfd, 0x97, 0xfd, 0xe0, 0x01, 0xf1, 0x06, 0xaa, 0x09, + 0xc7, 0x0c, 0x2f, 0x11, 0xa4, 0x14, 0x45, 0x15, 0xcc, 0x11, 0x6d, 0x0f, 0x84, 0x10, 0xe0, 0x0d, + 0xd0, 0x09, 0x50, 0x04, 0x4b, 0x01, 0x78, 0x01, 0x3d, 0xfd, 0x0e, 0xf9, 0x11, 0xf6, 0x13, 0xf4, + 0x91, 0xf3, 0x32, 0xf1, 0x83, 0xf0, 0x85, 0xf0, 0x2f, 0xf2, 0x7a, 0xf2, 0x7b, 0xf0, 0x59, 0xf2, + 0x6e, 0xf3, 0x6c, 0xf3, 0x9f, 0xf3, 0xbe, 0xf2, 0xd6, 0xf6, 0x33, 0xfb, 0x9d, 0xfc, 0x9e, 0xfb, + 0xa9, 0xfb, 0x5a, 0x00, 0xd3, 0x04, 0x34, 0x08, 0xaa, 0x0b, 0xf2, 0x0f, 0xb2, 0x14, 0xbb, 0x15, + 0x0e, 0x12, 0xfe, 0x10, 0x0f, 0x11, 0x7b, 0x0f, 0xaa, 0x0b, 0x89, 0x05, 0x83, 0x03, 0x03, 0x03, + 0x1a, 0xff, 0x5b, 0xfb, 0x8d, 0xf7, 0x1c, 0xf6, 0x1c, 0xf5, 0x10, 0xf3, 0x01, 0xf2, 0xe9, 0xf1, + 0x4c, 0xf4, 0xaf, 0xf3, 0x65, 0xf2, 0x0f, 0xf4, 0x50, 0xf4, 0xa3, 0xf5, 0x94, 0xf4, 0xf4, 0xf3, + 0x15, 0xf8, 0x1c, 0xfc, 0x2c, 0xfe, 0xda, 0xfc, 0x3a, 0xfd, 0x83, 0x01, 0x36, 0x05, 0xc3, 0x08, + 0xe9, 0x0b, 0xe9, 0x0f, 0x11, 0x16, 0x66, 0x16, 0x01, 0x14, 0xf0, 0x12, 0x5f, 0x12, 0xf2, 0x11, + 0x12, 0x0d, 0x10, 0x07, 0xf8, 0x04, 0x8f, 0x03, 0xa9, 0x00, 0x60, 0xfc, 0xbc, 0xf8, 0xdf, 0xf6, + 0x94, 0xf5, 0xed, 0xf3, 0xde, 0xf1, 0x68, 0xf2, 0x59, 0xf4, 0x24, 0xf3, 0xec, 0xf2, 0x48, 0xf3, + 0x35, 0xf4, 0xae, 0xf5, 0x5e, 0xf4, 0xe6, 0xf3, 0x45, 0xf7, 0x83, 0xfb, 0x89, 0xfd, 0x36, 0xfc, + 0x7a, 0xfc, 0x52, 0x00, 0xbe, 0x03, 0xf8, 0x07, 0xf4, 0x09, 0x55, 0x0f, 0x99, 0x15, 0xee, 0x15, + 0x1a, 0x15, 0x65, 0x13, 0xb1, 0x13, 0xdb, 0x13, 0x3e, 0x0e, 0x92, 0x09, 0xe9, 0x06, 0xb4, 0x05, + 0x28, 0x03, 0x87, 0xfe, 0x2a, 0xfb, 0x90, 0xf8, 0x99, 0xf7, 0x41, 0xf5, 0x90, 0xf2, 0x19, 0xf4, + 0xd6, 0xf4, 0x9b, 0xf4, 0x5b, 0xf4, 0x2d, 0xf4, 0xd7, 0xf5, 0xef, 0xf6, 0x96, 0xf5, 0xd5, 0xf4, + 0xc9, 0xf7, 0x5a, 0xfc, 0x29, 0xfe, 0xc5, 0xfc, 0x83, 0xfd, 0x18, 0x00, 0x5d, 0x04, 0xb6, 0x07, + 0x80, 0x09, 0xa0, 0x0f, 0xff, 0x14, 0x40, 0x16, 0x9b, 0x15, 0x39, 0x13, 0xc2, 0x14, 0x1b, 0x14, + 0x0e, 0x0f, 0x6b, 0x0a, 0x1f, 0x07, 0x40, 0x06, 0x46, 0x03, 0xb0, 0xfe, 0xd9, 0xfa, 0xff, 0xf7, + 0x56, 0xf7, 0x9e, 0xf3, 0x94, 0xf1, 0x63, 0xf2, 0x80, 0xf2, 0x01, 0xf3, 0x20, 0xf2, 0xd3, 0xf1, + 0x81, 0xf3, 0x37, 0xf4, 0xa5, 0xf2, 0x72, 0xf1, 0x1b, 0xf4, 0xcc, 0xf8, 0xf4, 0xf9, 0xd2, 0xf9, + 0xc1, 0xf9, 0x54, 0xfc, 0x2c, 0x01, 0x00, 0x03, 0x9f, 0x05, 0xae, 0x0b, 0xa2, 0x10, 0x91, 0x13, + 0x36, 0x12, 0xb5, 0x10, 0x91, 0x12, 0xe9, 0x11, 0xab, 0x0d, 0xca, 0x08, 0xf0, 0x05, 0xc7, 0x04, + 0x23, 0x02, 0x3c, 0xfe, 0xb3, 0xf9, 0x08, 0xf8, 0x0f, 0xf7, 0x86, 0xf3, 0x48, 0xf2, 0x99, 0xf2, + 0x1d, 0xf3, 0xf6, 0xf3, 0x8d, 0xf2, 0xa6, 0xf2, 0xae, 0xf4, 0x53, 0xf5, 0x6b, 0xf4, 0x9d, 0xf2, + 0x0a, 0xf6, 0x08, 0xfa, 0x7a, 0xfb, 0xe1, 0xfb, 0xc4, 0xfa, 0x27, 0xfe, 0x5e, 0x02, 0xa4, 0x03, + 0x2f, 0x07, 0x0e, 0x0c, 0x20, 0x12, 0x6e, 0x15, 0xe8, 0x13, 0xb1, 0x13, 0x25, 0x15, 0xea, 0x14, + 0x0c, 0x11, 0xfd, 0x0b, 0x06, 0x09, 0x74, 0x07, 0x87, 0x05, 0xf8, 0x00, 0x7f, 0xfc, 0xf1, 0xfa, + 0x01, 0xf9, 0xa5, 0xf5, 0xec, 0xf3, 0x46, 0xf3, 0x3e, 0xf4, 0x02, 0xf5, 0x47, 0xf3, 0x9e, 0xf3, + 0xfb, 0xf4, 0x54, 0xf6, 0x95, 0xf4, 0xaa, 0xf2, 0xcd, 0xf5, 0xb3, 0xf8, 0x13, 0xfb, 0xd2, 0xfa, + 0x47, 0xf9, 0x65, 0xfd, 0x2e, 0x00, 0x2c, 0x02, 0x6b, 0x05, 0xaf, 0x09, 0xf0, 0x10, 0xeb, 0x13, + 0x2e, 0x13, 0x5a, 0x13, 0xd3, 0x14, 0x73, 0x15, 0xd3, 0x11, 0x76, 0x0d, 0xec, 0x09, 0x5d, 0x08, + 0xf3, 0x06, 0xec, 0x01, 0xdf, 0xfd, 0xf6, 0xfb, 0x75, 0xf9, 0x93, 0xf6, 0x66, 0xf4, 0x70, 0xf3, + 0xc1, 0xf4, 0x0f, 0xf5, 0xbd, 0xf3, 0x63, 0xf3, 0x1a, 0xf5, 0x76, 0xf6, 0x6b, 0xf4, 0x9a, 0xf3, + 0xc7, 0xf5, 0xf3, 0xf8, 0x29, 0xfc, 0xbf, 0xfa, 0x2b, 0xfa, 0x3f, 0xfd, 0x98, 0xff, 0x4f, 0x02, + 0x34, 0x04, 0x06, 0x09, 0x99, 0x10, 0x77, 0x13, 0xab, 0x13, 0xb5, 0x13, 0x9b, 0x15, 0x6d, 0x16, + 0x4a, 0x13, 0x36, 0x0f, 0x3f, 0x0b, 0x49, 0x0a, 0xb8, 0x08, 0xa6, 0x03, 0x6b, 0x00, 0xfe, 0xfd, + 0x46, 0xfb, 0xc8, 0xf8, 0x65, 0xf5, 0x8d, 0xf4, 0x07, 0xf5, 0x4f, 0xf5, 0xd2, 0xf3, 0xfa, 0xf2, + 0x6c, 0xf5, 0xcc, 0xf5, 0xbc, 0xf3, 0xcd, 0xf2, 0x52, 0xf3, 0x77, 0xf7, 0xf9, 0xf9, 0x66, 0xf8, + 0xa6, 0xf8, 0x9c, 0xfa, 0x60, 0xfd, 0x5e, 0xff, 0x81, 0x00, 0x73, 0x05, 0x34, 0x0c, 0x97, 0x0f, + 0xd2, 0x0f, 0x23, 0x10, 0x30, 0x12, 0x1c, 0x13, 0xe0, 0x10, 0x9d, 0x0c, 0x7d, 0x08, 0xe0, 0x07, + 0xc3, 0x05, 0x00, 0x01, 0x39, 0xfe, 0x1b, 0xfb, 0x2d, 0xf9, 0x52, 0xf6, 0xd6, 0xf2, 0xef, 0xf1, + 0x3d, 0xf2, 0xd7, 0xf2, 0xef, 0xf0, 0xa5, 0xf0, 0xb2, 0xf3, 0xe7, 0xf3, 0x90, 0xf3, 0x13, 0xf2, + 0x8a, 0xf2, 0x7c, 0xf7, 0x31, 0xf9, 0xa3, 0xf8, 0x96, 0xf8, 0x57, 0xfa, 0xf9, 0xfd, 0xad, 0xff, + 0x39, 0x01, 0x59, 0x06, 0x4a, 0x0d, 0x06, 0x11, 0xb4, 0x11, 0x73, 0x12, 0x63, 0x14, 0x04, 0x16, + 0x8c, 0x14, 0xcc, 0x0f, 0x4b, 0x0c, 0xac, 0x0b, 0xc1, 0x08, 0xc9, 0x04, 0x2d, 0x01, 0x0d, 0xfe, + 0x1b, 0xfc, 0xff, 0xf8, 0x55, 0xf5, 0xb4, 0xf3, 0x6b, 0xf4, 0xf2, 0xf4, 0x3e, 0xf2, 0x81, 0xf2, + 0x18, 0xf4, 0x5d, 0xf4, 0x61, 0xf4, 0x91, 0xf1, 0xd3, 0xf2, 0x15, 0xf7, 0x62, 0xf8, 0xaa, 0xf8, + 0xec, 0xf7, 0xec, 0xf9, 0x6b, 0xfd, 0x61, 0xfe, 0xe8, 0xff, 0xad, 0x04, 0x96, 0x0b, 0x8d, 0x0f, + 0x73, 0x10, 0x96, 0x11, 0x6f, 0x13, 0xfc, 0x15, 0xc2, 0x14, 0xb5, 0x0f, 0x08, 0x0d, 0x81, 0x0b, + 0xf5, 0x08, 0x53, 0x05, 0x64, 0x01, 0x88, 0xfe, 0xa4, 0xfc, 0x61, 0xf9, 0x86, 0xf5, 0x73, 0xf3, + 0xa9, 0xf4, 0x15, 0xf4, 0x2b, 0xf2, 0xcd, 0xf2, 0xc4, 0xf3, 0x83, 0xf5, 0xf9, 0xf4, 0x65, 0xf2, + 0x6b, 0xf4, 0xfa, 0xf7, 0xff, 0xf9, 0x45, 0xfa, 0x26, 0xf9, 0x60, 0xfb, 0x8d, 0xfe, 0x53, 0xff, + 0xd2, 0x00, 0x42, 0x05, 0x47, 0x0c, 0x78, 0x10, 0xea, 0x11, 0xec, 0x12, 0x6c, 0x14, 0xf0, 0x17, + 0x6b, 0x16, 0x0d, 0x12, 0x82, 0x0f, 0x6b, 0x0d, 0x53, 0x0b, 0x91, 0x07, 0x5e, 0x03, 0xa7, 0x00, + 0x48, 0xfe, 0x89, 0xfb, 0xb0, 0xf6, 0xdc, 0xf4, 0xff, 0xf5, 0xd1, 0xf4, 0xeb, 0xf3, 0x5d, 0xf3, + 0x3f, 0xf4, 0x56, 0xf6, 0xd4, 0xf4, 0x9b, 0xf2, 0xbf, 0xf3, 0x8b, 0xf6, 0x12, 0xf9, 0xd7, 0xf8, + 0x8c, 0xf7, 0xb3, 0xf9, 0x2a, 0xfc, 0x14, 0xfd, 0x3a, 0xfe, 0x70, 0x02, 0x27, 0x09, 0x6a, 0x0d, + 0xc0, 0x0f, 0xf7, 0x0f, 0x2b, 0x12, 0x02, 0x16, 0x9a, 0x14, 0x29, 0x11, 0x89, 0x0e, 0x4b, 0x0c, + 0xd0, 0x0a, 0x0a, 0x07, 0x34, 0x03, 0xeb, 0xff, 0x06, 0xfe, 0x1f, 0xfb, 0xdb, 0xf5, 0xa4, 0xf4, + 0xca, 0xf4, 0xfc, 0xf3, 0x71, 0xf3, 0x12, 0xf2, 0xa0, 0xf3, 0x9f, 0xf5, 0xf1, 0xf3, 0x20, 0xf2, + 0x8e, 0xf2, 0x67, 0xf5, 0x71, 0xf8, 0x14, 0xf8, 0x5c, 0xf7, 0x54, 0xf9, 0xa1, 0xfb, 0x34, 0xfc, + 0xe6, 0xfc, 0x0a, 0x01, 0xe7, 0x06, 0x15, 0x0c, 0x6b, 0x0e, 0x6e, 0x0e, 0x6a, 0x11, 0xd9, 0x14, + 0xd5, 0x13, 0x22, 0x11, 0xef, 0x0d, 0x19, 0x0c, 0x58, 0x0a, 0x1e, 0x07, 0x43, 0x03, 0x18, 0x00, + 0xdb, 0xfe, 0x05, 0xfb, 0x46, 0xf6, 0xdb, 0xf4, 0xff, 0xf3, 0xf0, 0xf3, 0xda, 0xf2, 0x0f, 0xf1, + 0x08, 0xf3, 0x67, 0xf4, 0x15, 0xf3, 0x9b, 0xf1, 0x65, 0xf1, 0xd7, 0xf4, 0xbf, 0xf7, 0x62, 0xf7, + 0xed, 0xf6, 0x82, 0xf8, 0x08, 0xfb, 0x39, 0xfb, 0x26, 0xfc, 0xbd, 0xff, 0x7d, 0x05, 0xa2, 0x0b, + 0x99, 0x0d, 0x42, 0x0e, 0x1f, 0x12, 0x53, 0x15, 0xb2, 0x15, 0x38, 0x13, 0xad, 0x10, 0x02, 0x0f, + 0x45, 0x0d, 0x96, 0x0a, 0xea, 0x05, 0x85, 0x03, 0x21, 0x02, 0xb9, 0xfd, 0x91, 0xf9, 0x4d, 0xf7, + 0x48, 0xf6, 0xaf, 0xf6, 0xce, 0xf4, 0x6e, 0xf3, 0x98, 0xf5, 0x9c, 0xf6, 0x15, 0xf6, 0x2a, 0xf4, + 0xcd, 0xf3, 0x53, 0xf7, 0x80, 0xf9, 0x4f, 0xf9, 0x92, 0xf8, 0x02, 0xfa, 0xee, 0xfb, 0xd8, 0xfb, + 0xc2, 0xfc, 0x7c, 0xff, 0x34, 0x05, 0xc9, 0x0b, 0x3b, 0x0d, 0xa5, 0x0e, 0xe9, 0x11, 0x58, 0x15, + 0x27, 0x16, 0xb4, 0x13, 0x54, 0x11, 0x24, 0x0f, 0x1e, 0x0e, 0x0a, 0x0b, 0x17, 0x06, 0x51, 0x04, + 0x34, 0x02, 0x1b, 0xfe, 0x2c, 0xfa, 0xdc, 0xf6, 0x39, 0xf6, 0x4b, 0xf6, 0x1a, 0xf4, 0x42, 0xf3, + 0xb4, 0xf4, 0xcd, 0xf5, 0x86, 0xf5, 0x01, 0xf3, 0xbc, 0xf2, 0xe9, 0xf5, 0x72, 0xf8, 0x38, 0xf8, + 0xa1, 0xf7, 0x16, 0xf9, 0xa0, 0xfa, 0xc2, 0xfa, 0x88, 0xfb, 0x6a, 0xfd, 0xd2, 0x03, 0xdd, 0x09, + 0x8e, 0x0b, 0x25, 0x0d, 0x36, 0x10, 0xfe, 0x13, 0x20, 0x15, 0x80, 0x13, 0xe2, 0x10, 0xbe, 0x0e, + 0x28, 0x0e, 0x77, 0x0a, 0xea, 0x05, 0x25, 0x04, 0x81, 0x01, 0xf6, 0xfd, 0xa9, 0xf9, 0xb6, 0xf5, + 0x3e, 0xf5, 0x9b, 0xf4, 0x96, 0xf2, 0xfb, 0xf1, 0xce, 0xf2, 0x8f, 0xf4, 0xee, 0xf3, 0x87, 0xf1, + 0x1d, 0xf1, 0x54, 0xf4, 0x19, 0xf7, 0xf6, 0xf6, 0xde, 0xf6, 0x51, 0xf8, 0x97, 0xf9, 0x9b, 0xfa, + 0x5b, 0xfa, 0x32, 0xfc, 0xac, 0x02, 0x5a, 0x08, 0xcb, 0x0a, 0x4e, 0x0c, 0x97, 0x0f, 0x61, 0x13, + 0x19, 0x15, 0x18, 0x14, 0x00, 0x11, 0x7a, 0x0f, 0xd0, 0x0e, 0x99, 0x0a, 0xc3, 0x06, 0xad, 0x04, + 0xe4, 0x01, 0x06, 0xff, 0xe8, 0xf9, 0xfd, 0xf5, 0x66, 0xf5, 0xc6, 0xf3, 0x37, 0xf2, 0xe3, 0xf0, + 0xc7, 0xf1, 0xd3, 0xf3, 0x21, 0xf3, 0x82, 0xf0, 0xec, 0xef, 0x0e, 0xf3, 0x79, 0xf5, 0x4f, 0xf5, + 0xe9, 0xf5, 0xae, 0xf6, 0x7d, 0xf8, 0xa1, 0xf9, 0xf0, 0xf8, 0x54, 0xfb, 0x58, 0x01, 0x2d, 0x07, + 0xbc, 0x09, 0xcb, 0x0b, 0x20, 0x0f, 0xd1, 0x12, 0xaa, 0x15, 0xcc, 0x14, 0xce, 0x11, 0x35, 0x11, + 0xfc, 0x0f, 0xd9, 0x0b, 0xa5, 0x08, 0xb1, 0x05, 0x6f, 0x03, 0xa8, 0x00, 0x36, 0xfb, 0x1c, 0xf8, + 0xcb, 0xf6, 0x83, 0xf5, 0x12, 0xf4, 0x98, 0xf2, 0xab, 0xf3, 0xa0, 0xf5, 0xe9, 0xf4, 0x87, 0xf2, + 0xc2, 0xf1, 0x12, 0xf5, 0xfd, 0xf6, 0x80, 0xf7, 0xec, 0xf7, 0x71, 0xf8, 0xb3, 0xfa, 0x3d, 0xfb, + 0x75, 0xfa, 0xa3, 0xfc, 0xa3, 0x02, 0x27, 0x08, 0xbb, 0x0a, 0xfc, 0x0c, 0xff, 0x0f, 0xe9, 0x13, + 0x6f, 0x17, 0x39, 0x16, 0xe1, 0x13, 0x92, 0x13, 0x8d, 0x11, 0x3b, 0x0e, 0xb6, 0x0a, 0x8e, 0x07, + 0x25, 0x06, 0x6e, 0x02, 0x68, 0xfd, 0x06, 0xfa, 0x06, 0xf8, 0xb4, 0xf6, 0xc3, 0xf4, 0x02, 0xf3, + 0x25, 0xf4, 0xaf, 0xf5, 0xfe, 0xf4, 0xf2, 0xf1, 0xb7, 0xf1, 0x5d, 0xf4, 0x34, 0xf6, 0x58, 0xf7, + 0x1f, 0xf7, 0xe8, 0xf7, 0x07, 0xfa, 0x1f, 0xfa, 0xf3, 0xf8, 0xd3, 0xfa, 0x49, 0x00, 0xbe, 0x05, + 0xae, 0x08, 0x20, 0x0b, 0xa7, 0x0d, 0x1c, 0x12, 0xf0, 0x15, 0x6b, 0x14, 0x38, 0x13, 0xaa, 0x12, + 0xa3, 0x10, 0x44, 0x0e, 0x20, 0x0a, 0x99, 0x07, 0x16, 0x06, 0x75, 0x02, 0xee, 0xfd, 0x25, 0xfa, + 0xfb, 0xf7, 0x9a, 0xf6, 0x29, 0xf4, 0xa8, 0xf2, 0x7e, 0xf3, 0xb1, 0xf5, 0xcb, 0xf4, 0x0b, 0xf2, + 0x05, 0xf2, 0xae, 0xf3, 0xec, 0xf5, 0x14, 0xf7, 0xd1, 0xf6, 0xcc, 0xf7, 0x0c, 0xfa, 0xeb, 0xf9, + 0x8c, 0xf8, 0x1a, 0xfa, 0x64, 0xff, 0x58, 0x04, 0xf9, 0x07, 0x52, 0x0a, 0x7d, 0x0c, 0xe8, 0x11, + 0x5a, 0x15, 0x73, 0x14, 0xf9, 0x13, 0xb1, 0x12, 0x6d, 0x11, 0xa6, 0x0e, 0x33, 0x0a, 0xf6, 0x07, + 0xed, 0x05, 0x5b, 0x02, 0xf6, 0xfd, 0x9d, 0xf9, 0xa0, 0xf7, 0xcb, 0xf5, 0x6f, 0xf3, 0x74, 0xf1, + 0x0a, 0xf2, 0x1d, 0xf4, 0xa4, 0xf2, 0x2a, 0xf0, 0xa9, 0xef, 0xea, 0xf0, 0x4c, 0xf3, 0x4a, 0xf4, + 0xcc, 0xf3, 0x1d, 0xf5, 0x3d, 0xf7, 0xfa, 0xf6, 0x92, 0xf5, 0x64, 0xf7, 0x03, 0xfc, 0x1d, 0x01, + 0x93, 0x05, 0x53, 0x07, 0x00, 0x0a, 0x02, 0x10, 0x18, 0x13, 0x8c, 0x13, 0x16, 0x13, 0x2b, 0x12, + 0x9a, 0x11, 0xd8, 0x0e, 0x09, 0x0b, 0x3a, 0x09, 0x46, 0x07, 0x82, 0x04, 0x6e, 0x00, 0x45, 0xfc, + 0x29, 0xfa, 0x54, 0xf8, 0xc3, 0xf5, 0xbc, 0xf3, 0x03, 0xf5, 0x10, 0xf7, 0xec, 0xf5, 0x0b, 0xf4, + 0x35, 0xf3, 0x41, 0xf4, 0x09, 0xf7, 0xbd, 0xf7, 0x5e, 0xf7, 0xaf, 0xf8, 0xd1, 0xfa, 0x3e, 0xfa, + 0xcb, 0xf8, 0x41, 0xfa, 0xc3, 0xfd, 0x4a, 0x03, 0x8a, 0x07, 0x66, 0x08, 0xc2, 0x0b, 0xbc, 0x10, + 0xf0, 0x13, 0x42, 0x15, 0x98, 0x14, 0x2c, 0x14, 0xae, 0x13, 0xa4, 0x10, 0x37, 0x0d, 0xb6, 0x0a, + 0xa3, 0x08, 0x7e, 0x05, 0xf6, 0x00, 0xb8, 0xfc, 0x22, 0xfa, 0x1c, 0xf8, 0xd4, 0xf4, 0x84, 0xf2, + 0xb9, 0xf3, 0x38, 0xf5, 0x26, 0xf4, 0x59, 0xf2, 0x7d, 0xf0, 0x9a, 0xf1, 0x4e, 0xf4, 0x1e, 0xf5, + 0xe4, 0xf4, 0x9e, 0xf6, 0xfd, 0xf8, 0x68, 0xf8, 0x4e, 0xf7, 0x4b, 0xf8, 0x2c, 0xfb, 0x50, 0x01, + 0x44, 0x05, 0xbc, 0x06, 0x9c, 0x0a, 0x6e, 0x0f, 0x6d, 0x13, 0x3a, 0x15, 0xbf, 0x14, 0x29, 0x15, + 0xa1, 0x14, 0x01, 0x12, 0xed, 0x0e, 0x61, 0x0c, 0x77, 0x0a, 0x8a, 0x07, 0x4f, 0x03, 0xcc, 0xfe, + 0x5b, 0xfc, 0x21, 0xfa, 0x35, 0xf6, 0xc0, 0xf3, 0xcb, 0xf4, 0xba, 0xf5, 0x58, 0xf5, 0x47, 0xf3, + 0x36, 0xf1, 0xf3, 0xf1, 0x76, 0xf4, 0x1f, 0xf5, 0xcb, 0xf4, 0xea, 0xf6, 0xe0, 0xf8, 0x25, 0xf8, + 0x7c, 0xf7, 0x1e, 0xf7, 0x03, 0xfa, 0xfe, 0xff, 0x31, 0x03, 0x04, 0x05, 0x7c, 0x08, 0xd1, 0x0c, + 0x5f, 0x11, 0xe8, 0x12, 0x0f, 0x13, 0xae, 0x13, 0x22, 0x13, 0x0f, 0x11, 0xde, 0x0d, 0x75, 0x0b, + 0xb0, 0x09, 0x31, 0x07, 0x06, 0x03, 0xa6, 0xfe, 0x43, 0xfc, 0xbf, 0xf9, 0x4f, 0xf5, 0x21, 0xf3, + 0x65, 0xf3, 0x6c, 0xf4, 0x62, 0xf4, 0x3d, 0xf2, 0x21, 0xf0, 0xfc, 0xf0, 0x85, 0xf3, 0x02, 0xf4, + 0x48, 0xf4, 0xb4, 0xf6, 0xff, 0xf7, 0x1a, 0xf8, 0x18, 0xf7, 0xea, 0xf5, 0x40, 0xf9, 0xdf, 0xfe, + 0xcf, 0x01, 0x34, 0x04, 0xe8, 0x06, 0x83, 0x0b, 0x03, 0x10, 0x6b, 0x11, 0x4e, 0x12, 0xff, 0x12, + 0xc4, 0x12, 0xe6, 0x10, 0xee, 0x0d, 0x68, 0x0b, 0x9d, 0x09, 0x15, 0x07, 0x02, 0x03, 0x75, 0xfe, + 0x86, 0xfc, 0x5b, 0xf9, 0x10, 0xf5, 0xff, 0xf2, 0xe5, 0xf2, 0x08, 0xf4, 0x3a, 0xf4, 0xf3, 0xf1, + 0xab, 0xef, 0x69, 0xf0, 0xbc, 0xf2, 0xd6, 0xf2, 0x02, 0xf4, 0x52, 0xf6, 0xbf, 0xf7, 0xbb, 0xf8, + 0x3b, 0xf7, 0xdd, 0xf5, 0x40, 0xf9, 0x30, 0xfe, 0xf1, 0x01, 0x58, 0x04, 0x3d, 0x07, 0x76, 0x0c, + 0xee, 0x10, 0x2c, 0x13, 0x74, 0x14, 0x45, 0x15, 0x59, 0x15, 0xd9, 0x13, 0x26, 0x11, 0xe2, 0x0e, + 0x25, 0x0d, 0x51, 0x0b, 0xba, 0x06, 0xc9, 0x02, 0xac, 0x00, 0x08, 0xfd, 0xe7, 0xf8, 0x5f, 0xf6, + 0xd1, 0xf5, 0xfe, 0xf6, 0x63, 0xf7, 0x16, 0xf5, 0x5f, 0xf2, 0x64, 0xf3, 0xbe, 0xf4, 0xb7, 0xf4, + 0x19, 0xf6, 0x5f, 0xf7, 0x15, 0xf9, 0x36, 0xfa, 0xbc, 0xf7, 0x9a, 0xf6, 0x1c, 0xf9, 0x40, 0xfd, + 0x21, 0x01, 0xf7, 0x02, 0x86, 0x05, 0x4a, 0x0a, 0xa8, 0x0e, 0x0b, 0x11, 0x90, 0x12, 0x9e, 0x13, + 0xff, 0x13, 0x55, 0x12, 0xd3, 0x0f, 0x22, 0x0d, 0xfd, 0x0b, 0xbe, 0x09, 0x1f, 0x05, 0xce, 0x01, + 0x1e, 0xff, 0x6f, 0xfb, 0x6a, 0xf7, 0x76, 0xf4, 0xa3, 0xf3, 0xdd, 0xf4, 0x7e, 0xf5, 0xb6, 0xf2, + 0x4e, 0xf0, 0x18, 0xf1, 0xc2, 0xf1, 0x64, 0xf2, 0xcf, 0xf3, 0xef, 0xf4, 0xd0, 0xf7, 0xd8, 0xf8, + 0x9e, 0xf6, 0x88, 0xf5, 0x69, 0xf7, 0xf0, 0xfb, 0xcf, 0xff, 0x9d, 0x01, 0x84, 0x04, 0x3f, 0x09, + 0xc4, 0x0d, 0xe9, 0x10, 0xb4, 0x12, 0x7f, 0x14, 0xf8, 0x14, 0x44, 0x14, 0xa0, 0x11, 0x2c, 0x0f, + 0x85, 0x0e, 0xe9, 0x0b, 0xd1, 0x07, 0xcd, 0x04, 0xe0, 0x01, 0x18, 0xfe, 0xd9, 0xf9, 0x74, 0xf6, + 0x19, 0xf5, 0x7f, 0xf6, 0x35, 0xf7, 0x3a, 0xf4, 0x4f, 0xf2, 0x97, 0xf2, 0x76, 0xf2, 0x99, 0xf3, + 0x1e, 0xf4, 0x3e, 0xf5, 0x24, 0xf8, 0x9e, 0xf8, 0x98, 0xf6, 0xe1, 0xf4, 0x13, 0xf6, 0x26, 0xfa, + 0x83, 0xfd, 0x3f, 0xff, 0x4a, 0x02, 0x67, 0x06, 0x0c, 0x0b, 0x09, 0x0e, 0x29, 0x10, 0xcf, 0x11, + 0xbd, 0x12, 0x70, 0x12, 0xbd, 0x0f, 0xc5, 0x0d, 0xe7, 0x0c, 0x22, 0x0a, 0x8a, 0x06, 0xd8, 0x03, + 0xe8, 0x00, 0x2e, 0xfd, 0x40, 0xf9, 0x5c, 0xf5, 0xa9, 0xf3, 0x68, 0xf5, 0xb3, 0xf5, 0x1c, 0xf3, + 0xeb, 0xf1, 0x44, 0xf1, 0x87, 0xf1, 0xcd, 0xf2, 0xdc, 0xf2, 0x8a, 0xf4, 0x81, 0xf7, 0x48, 0xf8, + 0x95, 0xf6, 0x92, 0xf4, 0x79, 0xf5, 0x86, 0xf9, 0x95, 0xfc, 0xd4, 0xfe, 0x63, 0x01, 0xe5, 0x05, + 0x76, 0x0a, 0xf0, 0x0d, 0xaf, 0x10, 0x61, 0x12, 0x14, 0x14, 0xf3, 0x13, 0x5d, 0x11, 0x25, 0x10, + 0x36, 0x0f, 0x76, 0x0c, 0x67, 0x09, 0xa2, 0x06, 0xb8, 0x03, 0x73, 0x00, 0x88, 0xfc, 0x10, 0xf8, + 0x62, 0xf6, 0x22, 0xf8, 0xee, 0xf7, 0x00, 0xf6, 0xa0, 0xf4, 0x39, 0xf3, 0xb9, 0xf3, 0x9b, 0xf4, + 0x67, 0xf4, 0x4e, 0xf6, 0x31, 0xf9, 0x66, 0xfa, 0xf5, 0xf8, 0x4b, 0xf6, 0x4b, 0xf7, 0x7a, 0xfa, + 0x86, 0xfd, 0x6f, 0xff, 0xf8, 0x01, 0x25, 0x06, 0x40, 0x0a, 0xec, 0x0d, 0x7a, 0x10, 0x45, 0x12, + 0x6e, 0x14, 0x15, 0x14, 0xcd, 0x11, 0xd5, 0x10, 0xa4, 0x0f, 0x11, 0x0d, 0x16, 0x0a, 0x3b, 0x07, + 0x07, 0x04, 0xe6, 0x00, 0x8c, 0xfc, 0x54, 0xf7, 0xfe, 0xf5, 0x10, 0xf7, 0x9b, 0xf6, 0x9a, 0xf5, + 0x91, 0xf3, 0x1c, 0xf2, 0xb0, 0xf2, 0xa1, 0xf2, 0xa0, 0xf2, 0x8b, 0xf4, 0x49, 0xf7, 0x3a, 0xf9, + 0x85, 0xf7, 0x40, 0xf5, 0xab, 0xf5, 0x68, 0xf8, 0x62, 0xfb, 0x58, 0xfd, 0xfe, 0xff, 0xc6, 0x03, + 0x0b, 0x08, 0x3f, 0x0c, 0xd4, 0x0e, 0x5f, 0x11, 0x00, 0x14, 0x76, 0x13, 0xe2, 0x11, 0x13, 0x11, + 0xb0, 0x0f, 0x69, 0x0d, 0x0f, 0x0b, 0x61, 0x08, 0x6a, 0x05, 0xce, 0x02, 0xfe, 0xfd, 0x85, 0xf8, + 0x42, 0xf7, 0x75, 0xf7, 0x3c, 0xf7, 0x77, 0xf6, 0x1c, 0xf4, 0xf9, 0xf2, 0x55, 0xf3, 0xd7, 0xf2, + 0x20, 0xf3, 0x53, 0xf4, 0x88, 0xf7, 0x88, 0xf9, 0x03, 0xf8, 0xed, 0xf5, 0xf7, 0xf5, 0xa4, 0xf8, + 0x82, 0xfb, 0x6c, 0xfd, 0xc1, 0xff, 0xd7, 0x02, 0x2b, 0x07, 0x35, 0x0b, 0x9c, 0x0d, 0xde, 0x10, + 0x8d, 0x13, 0x61, 0x13, 0x5c, 0x12, 0x6b, 0x11, 0xb0, 0x0f, 0x44, 0x0d, 0xbc, 0x0a, 0xcb, 0x07, + 0x22, 0x05, 0xeb, 0x02, 0xe8, 0xfd, 0xba, 0xf8, 0x64, 0xf7, 0x1f, 0xf7, 0x66, 0xf7, 0x8f, 0xf6, + 0xc0, 0xf3, 0xd4, 0xf2, 0x53, 0xf2, 0x21, 0xf2, 0x1c, 0xf2, 0x99, 0xf3, 0xa0, 0xf7, 0xfe, 0xf9, + 0xeb, 0xf8, 0x81, 0xf6, 0x0e, 0xf6, 0xdc, 0xf7, 0x94, 0xf9, 0x25, 0xfb, 0x87, 0xfd, 0x23, 0x01, + 0xbe, 0x06, 0xf2, 0x0a, 0x52, 0x0e, 0x62, 0x12, 0x2f, 0x14, 0x9d, 0x13, 0xed, 0x11, 0x7a, 0x10, + 0xff, 0x0e, 0xa3, 0x0c, 0x9b, 0x0a, 0xf0, 0x07, 0x13, 0x06, 0x32, 0x04, 0x0e, 0xfe, 0x31, 0xf8, + 0xf2, 0xf5, 0x88, 0xf4, 0x82, 0xf4, 0x0f, 0xf3, 0x8f, 0xf0, 0x09, 0xf1, 0xa8, 0xf1, 0x11, 0xf2, + 0x7f, 0xf2, 0xe1, 0xf2, 0x42, 0xf6, 0x49, 0xf7, 0x29, 0xf5, 0x70, 0xf3, 0xc0, 0xf2, 0x61, 0xf5, + 0x7a, 0xf8, 0xa5, 0xfa, 0xaa, 0xfc, 0x5c, 0xff, 0x23, 0x03, 0x61, 0x07, 0xae, 0x0a, 0xa7, 0x0f, + 0x97, 0x13, 0xea, 0x13, 0xf1, 0x14, 0xd3, 0x14, 0xb3, 0x13, 0x7a, 0x13, 0x14, 0x11, 0xe6, 0x0e, + 0xa6, 0x0d, 0x02, 0x0b, 0xe7, 0x05, 0xb1, 0x00, 0x40, 0xfe, 0x71, 0xfd, 0xcc, 0xfd, 0xf6, 0xfc, + 0x85, 0xfa, 0x21, 0xfa, 0xb4, 0xf9, 0xfd, 0xf9, 0x6b, 0xfa, 0x6c, 0xfa, 0xb6, 0xfc, 0xd3, 0xfc, + 0x95, 0xfa, 0x1e, 0xf7, 0x06, 0xf5, 0x37, 0xf5, 0xa8, 0xf6, 0x70, 0xf8, 0x57, 0xf9, 0x5c, 0xfb, + 0xf5, 0xfe, 0x27, 0x02, 0x3a, 0x05, 0x75, 0x09, 0x06, 0x0c, 0x35, 0x0c, 0x67, 0x0d, 0x5e, 0x0c, + 0x8b, 0x0b, 0x71, 0x0a, 0x13, 0x07, 0x08, 0x05, 0x27, 0x03, 0xc2, 0x00, 0x36, 0xfc, 0x84, 0xf7, + 0x87, 0xf5, 0xe3, 0xf4, 0x5f, 0xf6, 0xce, 0xf5, 0x7c, 0xf4, 0x22, 0xf4, 0xe5, 0xf3, 0x4e, 0xf5, + 0x69, 0xf5, 0xe0, 0xf6, 0xa2, 0xf9, 0x27, 0xfb, 0x04, 0xfa, 0x98, 0xf7, 0x40, 0xf6, 0x1c, 0xf6, + 0x18, 0xf8, 0xd3, 0xf9, 0xa8, 0xfa, 0x45, 0xfd, 0x84, 0x00, 0xbb, 0x03, 0x95, 0x07, 0xf1, 0x0c, + 0x8a, 0x0f, 0xee, 0x10, 0x0c, 0x12, 0x7b, 0x11, 0xe1, 0x11, 0x19, 0x11, 0x91, 0x0e, 0x09, 0x0d, + 0x24, 0x0c, 0x15, 0x0a, 0x11, 0x06, 0x96, 0x01, 0xe2, 0xfd, 0xc8, 0xfc, 0xe1, 0xfc, 0xbe, 0xfb, + 0x5d, 0xfa, 0x5e, 0xf8, 0xe8, 0xf7, 0xae, 0xf7, 0xcb, 0xf6, 0x5b, 0xf8, 0xf9, 0xfa, 0x4a, 0xfc, + 0x59, 0xfb, 0x58, 0xf9, 0x81, 0xf7, 0x33, 0xf7, 0xc7, 0xf8, 0xca, 0xf9, 0xa3, 0xfa, 0xcf, 0xfc, + 0xbe, 0xff, 0xc3, 0x01, 0x00, 0x06, 0x77, 0x0a, 0x97, 0x0c, 0xa5, 0x0e, 0x20, 0x0f, 0xde, 0x0e, + 0x30, 0x0f, 0x84, 0x0d, 0xcd, 0x0a, 0xc0, 0x08, 0x7f, 0x07, 0xf2, 0x04, 0x10, 0x01, 0x5a, 0xfc, + 0xca, 0xf8, 0x27, 0xf8, 0x9c, 0xf7, 0x67, 0xf7, 0x02, 0xf6, 0x7a, 0xf4, 0x41, 0xf4, 0x0b, 0xf4, + 0x20, 0xf3, 0x24, 0xf4, 0xb7, 0xf6, 0xe8, 0xf7, 0x7d, 0xf7, 0x8a, 0xf5, 0x5a, 0xf3, 0x0e, 0xf3, + 0xde, 0xf3, 0x33, 0xf5, 0x6b, 0xf5, 0x6d, 0xf8, 0xba, 0xfa, 0x29, 0xfd, 0x9a, 0x02, 0x7c, 0x06, + 0x1a, 0x0a, 0xbe, 0x0c, 0xde, 0x0d, 0xf6, 0x0e, 0x91, 0x0f, 0x8c, 0x0e, 0x23, 0x0c, 0x15, 0x0b, + 0x6a, 0x0a, 0xfa, 0x08, 0xed, 0x05, 0xf8, 0x00, 0x1e, 0xfe, 0x44, 0xfc, 0x35, 0xfc, 0xf6, 0xfb, + 0x7a, 0xfa, 0x80, 0xf9, 0x68, 0xf9, 0x26, 0xf9, 0x18, 0xf8, 0x52, 0xf9, 0x72, 0xfb, 0xb4, 0xfc, + 0xe3, 0xfc, 0xaa, 0xfa, 0xb1, 0xf8, 0x89, 0xf7, 0xb8, 0xf8, 0xf0, 0xf8, 0xb6, 0xf9, 0xb2, 0xfc, + 0xd2, 0xfd, 0x2a, 0x01, 0xf0, 0x05, 0xb3, 0x09, 0x81, 0x0d, 0xb2, 0x0f, 0x1a, 0x11, 0x24, 0x12, + 0xca, 0x12, 0x1c, 0x11, 0x71, 0x0e, 0x19, 0x0d, 0xc5, 0x0b, 0x1b, 0x0b, 0x27, 0x07, 0x26, 0x02, + 0x82, 0xfe, 0x2d, 0xfc, 0xe2, 0xfb, 0x7a, 0xfb, 0xf8, 0xf9, 0xbc, 0xf8, 0x2b, 0xf8, 0xfd, 0xf6, + 0xc6, 0xf5, 0x84, 0xf6, 0x0c, 0xf8, 0xa3, 0xf9, 0x81, 0xf9, 0xe3, 0xf7, 0x2a, 0xf5, 0x50, 0xf4, + 0x25, 0xf5, 0xb0, 0xf4, 0x78, 0xf6, 0x8e, 0xf8, 0xc8, 0xf9, 0xe6, 0xfc, 0xe9, 0x00, 0x37, 0x05, + 0x4a, 0x09, 0x1a, 0x0c, 0xa2, 0x0d, 0xb2, 0x0f, 0xc8, 0x10, 0x7f, 0x0f, 0xa4, 0x0d, 0xb5, 0x0b, + 0x46, 0x0b, 0x32, 0x0a, 0xd9, 0x06, 0x27, 0x02, 0xcb, 0xfd, 0xda, 0xfa, 0x0d, 0xfa, 0xb3, 0xf9, + 0x26, 0xf8, 0x6d, 0xf7, 0xfb, 0xf6, 0xa1, 0xf5, 0xd0, 0xf4, 0x17, 0xf5, 0x62, 0xf7, 0xea, 0xf8, + 0x0f, 0xfa, 0xe4, 0xf8, 0x15, 0xf6, 0x29, 0xf6, 0xa3, 0xf5, 0xd5, 0xf5, 0xbc, 0xf7, 0x14, 0xf9, + 0xa8, 0xfa, 0x7c, 0xfd, 0xbd, 0x01, 0x1d, 0x06, 0xe3, 0x0a, 0xcf, 0x0d, 0x19, 0x10, 0x08, 0x13, + 0x1b, 0x14, 0xb6, 0x13, 0x75, 0x11, 0x14, 0x10, 0xae, 0x0f, 0xe9, 0x0e, 0x57, 0x0c, 0xdc, 0x07, + 0x57, 0x03, 0xd1, 0xff, 0xa2, 0xfe, 0xb0, 0xfd, 0xdc, 0xfb, 0x58, 0xfb, 0x25, 0xfa, 0xa9, 0xf8, + 0xdd, 0xf6, 0xf4, 0xf6, 0x47, 0xf8, 0x77, 0xf9, 0x16, 0xfb, 0xde, 0xf8, 0x95, 0xf6, 0xa5, 0xf5, + 0xfb, 0xf3, 0x1b, 0xf4, 0x23, 0xf5, 0x4d, 0xf6, 0x4a, 0xf7, 0xa2, 0xf9, 0xf2, 0xfc, 0xeb, 0x00, + 0x63, 0x05, 0xd5, 0x07, 0x93, 0x0a, 0x16, 0x0d, 0xb4, 0x0e, 0x9d, 0x0e, 0x64, 0x0c, 0xd5, 0x0a, + 0x7d, 0x0a, 0xe0, 0x09, 0xae, 0x07, 0xeb, 0x03, 0x67, 0xff, 0xcd, 0xfb, 0xa7, 0xfa, 0x61, 0xf9, + 0x6d, 0xf8, 0xda, 0xf7, 0x5c, 0xf7, 0xeb, 0xf5, 0x57, 0xf4, 0xba, 0xf4, 0x70, 0xf5, 0x0d, 0xf8, + 0xcb, 0xf9, 0x57, 0xf8, 0x22, 0xf7, 0xef, 0xf5, 0x91, 0xf4, 0x7e, 0xf4, 0xb6, 0xf5, 0xcb, 0xf6, + 0x25, 0xf8, 0x57, 0xfa, 0x90, 0xfd, 0x40, 0x02, 0x92, 0x06, 0xb4, 0x09, 0xb6, 0x0c, 0x03, 0x10, + 0x41, 0x12, 0x97, 0x12, 0xcd, 0x10, 0x6e, 0x0f, 0x8f, 0x0f, 0x1e, 0x0f, 0x75, 0x0d, 0xec, 0x09, + 0xd8, 0x04, 0x9b, 0x01, 0x7f, 0xff, 0x15, 0xfe, 0xbd, 0xfc, 0x13, 0xfc, 0x6d, 0xfb, 0x06, 0xf9, + 0xeb, 0xf7, 0x32, 0xf7, 0xa5, 0xf7, 0x9c, 0xfa, 0xce, 0xfb, 0xb0, 0xfa, 0x4a, 0xf9, 0x99, 0xf7, + 0xa7, 0xf5, 0xd3, 0xf5, 0xa0, 0xf6, 0x62, 0xf7, 0xdd, 0xf8, 0xfd, 0xf9, 0x21, 0xfd, 0x39, 0x01, + 0x33, 0x05, 0x2c, 0x08, 0x03, 0x0b, 0xab, 0x0e, 0x21, 0x11, 0xc5, 0x11, 0xe2, 0x0f, 0x8e, 0x0e, + 0x6a, 0x0e, 0xc3, 0x0d, 0xe6, 0x0c, 0xeb, 0x08, 0x33, 0x04, 0xa8, 0x00, 0x1d, 0xfe, 0xc8, 0xfc, + 0x21, 0xfb, 0x26, 0xfb, 0x1c, 0xfa, 0x12, 0xf8, 0x04, 0xf7, 0x3d, 0xf5, 0x0c, 0xf6, 0x75, 0xf8, + 0xb5, 0xf9, 0x41, 0xf9, 0x4c, 0xf8, 0x44, 0xf6, 0x57, 0xf4, 0x57, 0xf4, 0x86, 0xf4, 0xb5, 0xf5, + 0x90, 0xf6, 0x94, 0xf7, 0xaa, 0xfa, 0x9f, 0xfe, 0xbd, 0x02, 0xbb, 0x05, 0xc5, 0x08, 0x61, 0x0c, + 0x88, 0x0f, 0x64, 0x10, 0xda, 0x0e, 0x13, 0x0e, 0x56, 0x0d, 0x3b, 0x0d, 0x62, 0x0c, 0xef, 0x08, + 0xcd, 0x04, 0xdc, 0x00, 0xa6, 0xfe, 0x7c, 0xfc, 0x58, 0xfb, 0xb0, 0xfb, 0x29, 0xfa, 0x0b, 0xf9, + 0x79, 0xf7, 0xcb, 0xf5, 0xcf, 0xf6, 0x84, 0xf9, 0xab, 0xfa, 0x19, 0xfb, 0x99, 0xfa, 0x54, 0xf8, + 0xe0, 0xf6, 0x2d, 0xf6, 0x86, 0xf6, 0x6b, 0xf7, 0xee, 0xf7, 0xfb, 0xf8, 0x88, 0xfb, 0xb9, 0xff, + 0x7b, 0x03, 0x99, 0x06, 0xd5, 0x09, 0x81, 0x0d, 0x45, 0x11, 0xd1, 0x11, 0xe3, 0x10, 0xcb, 0x0f, + 0x24, 0x0f, 0x76, 0x0f, 0x3c, 0x0e, 0x39, 0x0b, 0x67, 0x06, 0x9c, 0x02, 0x9f, 0xff, 0xa1, 0xfc, + 0xdf, 0xfb, 0x35, 0xfb, 0x13, 0xfa, 0xb9, 0xf8, 0xbc, 0xf6, 0xae, 0xf4, 0x99, 0xf5, 0xb6, 0xf7, + 0xbe, 0xf8, 0xc4, 0xf9, 0xb4, 0xf8, 0xfa, 0xf6, 0x34, 0xf5, 0x44, 0xf4, 0xd1, 0xf4, 0x58, 0xf5, + 0x01, 0xf6, 0x4f, 0xf6, 0xf4, 0xf8, 0xce, 0xfc, 0x5e, 0x00, 0xb0, 0x03, 0x49, 0x06, 0xfd, 0x0a, + 0xa1, 0x0e, 0xca, 0x0f, 0x8c, 0x0f, 0x2c, 0x0e, 0x0b, 0x0e, 0x1a, 0x0e, 0xb4, 0x0d, 0xd3, 0x0a, + 0x4a, 0x06, 0x5c, 0x03, 0x87, 0xff, 0xe2, 0xfc, 0xcf, 0xfb, 0xcb, 0xfa, 0xba, 0xf9, 0xc1, 0xf8, + 0xaf, 0xf6, 0xb4, 0xf4, 0x8e, 0xf5, 0xf3, 0xf6, 0xbd, 0xf8, 0xfb, 0xf9, 0x99, 0xf9, 0x43, 0xf8, + 0x7d, 0xf6, 0x9f, 0xf5, 0xfa, 0xf5, 0xb0, 0xf6, 0x0e, 0xf7, 0x75, 0xf7, 0xec, 0xf9, 0x93, 0xfd, + 0x9a, 0x01, 0x69, 0x04, 0x82, 0x07, 0x45, 0x0c, 0x0c, 0x10, 0x55, 0x12, 0x40, 0x12, 0x6e, 0x11, + 0x1d, 0x11, 0x3c, 0x11, 0x49, 0x11, 0x0e, 0x0e, 0x70, 0x0a, 0xec, 0x06, 0xbf, 0x02, 0xce, 0xff, + 0x33, 0xfe, 0xcd, 0xfc, 0xeb, 0xfb, 0xfe, 0xfa, 0x24, 0xf8, 0x44, 0xf6, 0x30, 0xf6, 0x46, 0xf7, + 0xe9, 0xf8, 0x09, 0xfa, 0x0f, 0xfa, 0x83, 0xf8, 0xc8, 0xf6, 0x83, 0xf5, 0x72, 0xf5, 0x0e, 0xf6, + 0xa7, 0xf5, 0xfb, 0xf5, 0xa6, 0xf7, 0x52, 0xfb, 0x21, 0xff, 0x6a, 0x01, 0xc6, 0x04, 0x23, 0x09, + 0x54, 0x0d, 0xb3, 0x0f, 0xe2, 0x0f, 0x3c, 0x0f, 0x9d, 0x0e, 0x4b, 0x0f, 0xec, 0x0e, 0x43, 0x0c, + 0x03, 0x09, 0x51, 0x05, 0xf6, 0x00, 0x3a, 0xfe, 0x77, 0xfc, 0xb4, 0xfa, 0xa7, 0xfa, 0x50, 0xf9, + 0xde, 0xf6, 0x1b, 0xf5, 0x8e, 0xf4, 0x7a, 0xf5, 0xe6, 0xf6, 0xb7, 0xf8, 0x2b, 0xf9, 0x33, 0xf8, + 0x90, 0xf6, 0x13, 0xf5, 0x59, 0xf5, 0x95, 0xf5, 0x9b, 0xf5, 0xa9, 0xf5, 0x1c, 0xf7, 0x43, 0xfb, + 0xa6, 0xfe, 0x80, 0x01, 0xbe, 0x04, 0x22, 0x09, 0xdf, 0x0d, 0x40, 0x10, 0x44, 0x11, 0x7c, 0x10, + 0x1c, 0x10, 0x1a, 0x11, 0xec, 0x10, 0xe1, 0x0e, 0x35, 0x0c, 0x78, 0x08, 0xfc, 0x03, 0x18, 0x01, + 0x45, 0xfe, 0xa9, 0xfc, 0x7f, 0xfc, 0x05, 0xfb, 0xea, 0xf8, 0xd0, 0xf6, 0x06, 0xf6, 0x52, 0xf6, + 0xb1, 0xf7, 0x7e, 0xf9, 0xf7, 0xf9, 0x59, 0xf9, 0x5d, 0xf7, 0xf9, 0xf5, 0xca, 0xf5, 0xb8, 0xf5, + 0x94, 0xf5, 0xd5, 0xf4, 0x3a, 0xf6, 0x99, 0xf9, 0x9b, 0xfc, 0x4a, 0xff, 0xeb, 0x01, 0xa0, 0x06, + 0x10, 0x0b, 0x28, 0x0e, 0x83, 0x0f, 0x9b, 0x0e, 0x97, 0x0e, 0x3f, 0x0f, 0xcb, 0x0e, 0x33, 0x0d, + 0x28, 0x0b, 0x61, 0x07, 0x6d, 0x03, 0x26, 0x00, 0xfc, 0xfc, 0xdc, 0xfb, 0x58, 0xfb, 0x1c, 0xfa, + 0x06, 0xf8, 0x16, 0xf6, 0x07, 0xf5, 0x37, 0xf5, 0xf6, 0xf6, 0xbf, 0xf8, 0xe6, 0xf9, 0x72, 0xf9, + 0xaf, 0xf7, 0x67, 0xf6, 0x2e, 0xf6, 0x85, 0xf6, 0xed, 0xf5, 0x22, 0xf5, 0xa1, 0xf6, 0xb9, 0xf9, + 0x03, 0xfd, 0x2f, 0xff, 0xf0, 0x01, 0x5a, 0x06, 0xad, 0x0a, 0x50, 0x0e, 0xda, 0x0f, 0x29, 0x0f, + 0x91, 0x0f, 0x92, 0x10, 0xd7, 0x0f, 0xfc, 0x0e, 0x9d, 0x0c, 0xee, 0x08, 0x44, 0x05, 0x7e, 0x01, + 0x88, 0xfe, 0xf7, 0xfc, 0xa1, 0xfc, 0xa3, 0xfb, 0x90, 0xf9, 0x94, 0xf7, 0xf9, 0xf5, 0x09, 0xf6, + 0x15, 0xf7, 0x13, 0xf9, 0xae, 0xfa, 0x65, 0xfa, 0x07, 0xf9, 0xa5, 0xf7, 0x67, 0xf7, 0xb7, 0xf7, + 0xc2, 0xf6, 0xd5, 0xf5, 0xd1, 0xf6, 0xd9, 0xf9, 0xd8, 0xfc, 0xf3, 0xfe, 0xd7, 0x01, 0x05, 0x06, + 0x86, 0x0a, 0xa9, 0x0e, 0x3a, 0x10, 0xd1, 0x0f, 0x8d, 0x10, 0xee, 0x10, 0xab, 0x10, 0x6f, 0x10, + 0x23, 0x0e, 0x08, 0x0b, 0x4c, 0x07, 0x40, 0x03, 0xb2, 0xff, 0xb8, 0xfd, 0x2d, 0xfd, 0xbb, 0xfb, + 0xf8, 0xf9, 0xea, 0xf7, 0x2a, 0xf6, 0xa8, 0xf5, 0x36, 0xf6, 0x26, 0xf8, 0xb9, 0xf9, 0xde, 0xf9, + 0x9e, 0xf8, 0xd3, 0xf6, 0xcc, 0xf6, 0xd1, 0xf6, 0xb6, 0xf5, 0x8f, 0xf4, 0x03, 0xf5, 0xcd, 0xf7, + 0x7f, 0xfa, 0x78, 0xfc, 0x49, 0xff, 0x19, 0x03, 0xe9, 0x07, 0xab, 0x0c, 0x4a, 0x0e, 0x9b, 0x0e, + 0x7a, 0x0f, 0xbc, 0x0f, 0x00, 0x10, 0xbf, 0x0f, 0x22, 0x0e, 0x8a, 0x0b, 0x2a, 0x08, 0x11, 0x04, + 0x3f, 0x00, 0x45, 0xfe, 0x33, 0xfd, 0xea, 0xfb, 0x44, 0xfa, 0x43, 0xf8, 0x67, 0xf6, 0x9f, 0xf5, + 0xf4, 0xf5, 0xe3, 0xf7, 0xb5, 0xf9, 0x44, 0xfa, 0x10, 0xf9, 0xa4, 0xf7, 0xb9, 0xf7, 0xbd, 0xf7, + 0xd6, 0xf6, 0x7b, 0xf5, 0xe7, 0xf5, 0xa0, 0xf8, 0xff, 0xfa, 0xf7, 0xfc, 0xa5, 0xff, 0x95, 0x02, + 0xcf, 0x07, 0x79, 0x0c, 0x36, 0x0e, 0x65, 0x0f, 0x3d, 0x10, 0xa0, 0x10, 0xf3, 0x10, 0xa3, 0x10, + 0x22, 0x0f, 0xb2, 0x0c, 0x57, 0x09, 0xdd, 0x04, 0xdb, 0x00, 0x6a, 0xfe, 0x1e, 0xfd, 0xc9, 0xfb, + 0xf1, 0xf9, 0xb0, 0xf7, 0xb0, 0xf5, 0x5d, 0xf4, 0x48, 0xf4, 0xba, 0xf5, 0xd8, 0xf7, 0x9f, 0xf8, + 0x78, 0xf7, 0x31, 0xf6, 0x09, 0xf6, 0x1a, 0xf6, 0x1f, 0xf5, 0x84, 0xf3, 0xed, 0xf3, 0x87, 0xf6, + 0xb7, 0xf8, 0x0e, 0xfb, 0x35, 0xfd, 0x45, 0x00, 0xe9, 0x05, 0x37, 0x0a, 0xbc, 0x0c, 0x6b, 0x0e, + 0x5c, 0x0f, 0x12, 0x10, 0x81, 0x10, 0x9d, 0x10, 0x76, 0x0f, 0xc1, 0x0d, 0xa5, 0x0a, 0x49, 0x06, + 0x71, 0x02, 0x05, 0x00, 0xa5, 0xfe, 0x9f, 0xfd, 0x04, 0xfc, 0x3e, 0xfa, 0x2e, 0xf8, 0xbb, 0xf6, + 0x77, 0xf6, 0xbe, 0xf7, 0x37, 0xfa, 0x02, 0xfb, 0x09, 0xfa, 0xda, 0xf8, 0x88, 0xf8, 0x98, 0xf8, + 0x1f, 0xf7, 0x24, 0xf5, 0x92, 0xf5, 0x70, 0xf7, 0xb0, 0xf9, 0x20, 0xfc, 0x76, 0xfd, 0xb7, 0x00, + 0xde, 0x05, 0x08, 0x0a, 0xe1, 0x0c, 0x68, 0x0e, 0x82, 0x0f, 0x0a, 0x10, 0xa5, 0x10, 0x86, 0x10, + 0x75, 0x0f, 0x12, 0x0e, 0x1d, 0x0b, 0xc5, 0x06, 0xe2, 0x02, 0xf5, 0xff, 0x59, 0xfe, 0x06, 0xfd, + 0x91, 0xfb, 0xb4, 0xf9, 0x66, 0xf7, 0xab, 0xf5, 0xba, 0xf4, 0xf5, 0xf5, 0x60, 0xf8, 0x57, 0xf9, + 0xb4, 0xf8, 0x7b, 0xf7, 0x70, 0xf7, 0xe4, 0xf7, 0x2b, 0xf6, 0x67, 0xf4, 0x99, 0xf4, 0x00, 0xf6, + 0xc1, 0xf8, 0xb8, 0xfa, 0xe3, 0xfb, 0x39, 0xff, 0xf2, 0x03, 0x88, 0x08, 0xa7, 0x0b, 0xe7, 0x0d, + 0x2c, 0x0f, 0x39, 0x10, 0x20, 0x11, 0x28, 0x11, 0x9e, 0x10, 0x91, 0x0f, 0xd4, 0x0c, 0xc6, 0x08, + 0x98, 0x04, 0x97, 0x01, 0xbe, 0xff, 0x4e, 0xfe, 0xec, 0xfc, 0x00, 0xfb, 0xd5, 0xf8, 0xa7, 0xf6, + 0x2d, 0xf5, 0x15, 0xf6, 0x62, 0xf8, 0xb5, 0xf9, 0x45, 0xf9, 0xfc, 0xf7, 0x36, 0xf8, 0x78, 0xf8, + 0xa6, 0xf6, 0x15, 0xf5, 0x63, 0xf4, 0x88, 0xf5, 0x21, 0xf8, 0x82, 0xf9, 0xc8, 0xfa, 0xac, 0xfd, + 0x48, 0x02, 0x93, 0x06, 0x09, 0x0a, 0x59, 0x0c, 0xb6, 0x0d, 0xf4, 0x0e, 0xed, 0x0f, 0x03, 0x10, + 0xdf, 0x0f, 0x20, 0x0f, 0xbf, 0x0c, 0xcb, 0x08, 0x95, 0x04, 0x4d, 0x01, 0x18, 0xff, 0xb0, 0xfd, + 0x4a, 0xfc, 0xb7, 0xfa, 0xbc, 0xf8, 0x3d, 0xf6, 0x77, 0xf4, 0x4b, 0xf5, 0x4b, 0xf7, 0xfb, 0xf8, + 0xdd, 0xf8, 0xda, 0xf7, 0x9d, 0xf8, 0x97, 0xf8, 0x0a, 0xf7, 0x5d, 0xf5, 0xf4, 0xf3, 0x65, 0xf5, + 0xcc, 0xf7, 0x0c, 0xf9, 0x36, 0xfa, 0xe1, 0xfc, 0x43, 0x01, 0x97, 0x05, 0x43, 0x09, 0xe5, 0x0b, + 0x7a, 0x0d, 0x0c, 0x0f, 0xc1, 0x0f, 0xa7, 0x0f, 0xa9, 0x0f, 0x16, 0x0f, 0x22, 0x0d, 0x59, 0x09, + 0x78, 0x05, 0x10, 0x02, 0x9f, 0xff, 0x22, 0xfe, 0x90, 0xfc, 0x10, 0xfb, 0x6e, 0xf9, 0xcb, 0xf6, + 0x14, 0xf5, 0x55, 0xf5, 0x67, 0xf7, 0x96, 0xf9, 0x40, 0xf9, 0xe7, 0xf8, 0xb9, 0xf9, 0xae, 0xf9, + 0xc0, 0xf8, 0xa4, 0xf6, 0x17, 0xf5, 0x39, 0xf6, 0x73, 0xf8, 0xa4, 0xf9, 0xdc, 0xfa, 0x69, 0xfd, + 0x61, 0x01, 0x9f, 0x05, 0x83, 0x09, 0x2f, 0x0c, 0x08, 0x0e, 0xf4, 0x0f, 0xcd, 0x10, 0x11, 0x11, + 0x45, 0x11, 0x2a, 0x11, 0x83, 0x0f, 0x22, 0x0c, 0xfb, 0x07, 0x3d, 0x04, 0x78, 0x01, 0xb7, 0xff, + 0xab, 0xfd, 0x59, 0xfc, 0x5a, 0xfa, 0x63, 0xf7, 0x61, 0xf5, 0xc2, 0xf4, 0xee, 0xf6, 0xb3, 0xf8, + 0x14, 0xf8, 0xd9, 0xf7, 0x24, 0xf8, 0x5f, 0xf8, 0x93, 0xf7, 0x3d, 0xf5, 0x8f, 0xf3, 0x63, 0xf4, + 0x6c, 0xf6, 0x86, 0xf7, 0x7a, 0xf8, 0xd8, 0xfa, 0x8f, 0xfe, 0xf0, 0x02, 0xe8, 0x06, 0xc1, 0x09, + 0x24, 0x0c, 0x39, 0x0e, 0x4b, 0x0f, 0xac, 0x0f, 0x4c, 0x10, 0x93, 0x10, 0x5d, 0x0f, 0x6b, 0x0c, + 0xa9, 0x08, 0xcc, 0x04, 0x44, 0x02, 0x2f, 0x00, 0x79, 0xfe, 0xb3, 0xfd, 0x9c, 0xfb, 0x04, 0xf9, + 0x66, 0xf6, 0x8b, 0xf5, 0xd8, 0xf7, 0x25, 0xf9, 0x18, 0xf9, 0x19, 0xf9, 0x6d, 0xf9, 0x0f, 0xfa, + 0x55, 0xf9, 0xcf, 0xf6, 0xe7, 0xf4, 0x86, 0xf5, 0x4e, 0xf7, 0x40, 0xf8, 0xff, 0xf8, 0x07, 0xfb, + 0x65, 0xfe, 0xaf, 0x02, 0x87, 0x06, 0x85, 0x09, 0x3d, 0x0c, 0x7c, 0x0e, 0x85, 0x0f, 0xfc, 0x0f, + 0xa8, 0x10, 0x14, 0x11, 0x09, 0x10, 0x64, 0x0d, 0x51, 0x09, 0x68, 0x05, 0x77, 0x02, 0xba, 0xff, + 0x18, 0xfe, 0x19, 0xfd, 0x77, 0xfb, 0x29, 0xf9, 0xd2, 0xf5, 0xf2, 0xf4, 0xb9, 0xf6, 0xcb, 0xf7, + 0x00, 0xf8, 0xd7, 0xf7, 0x50, 0xf8, 0x4e, 0xf9, 0xb9, 0xf8, 0x54, 0xf6, 0x48, 0xf4, 0x92, 0xf4, + 0xfb, 0xf5, 0xbb, 0xf6, 0x95, 0xf7, 0x37, 0xf9, 0x5a, 0xfc, 0xb0, 0x00, 0x8e, 0x04, 0x9c, 0x07, + 0x73, 0x0a, 0xf3, 0x0c, 0x16, 0x0e, 0x96, 0x0e, 0x84, 0x0f, 0xfa, 0x0f, 0xaa, 0x0f, 0x7c, 0x0d, + 0xa7, 0x09, 0x3a, 0x06, 0xf3, 0x02, 0x1b, 0x00, 0x57, 0xfe, 0x12, 0xfd, 0x00, 0xfc, 0x60, 0xf9, + 0xec, 0xf5, 0x14, 0xf5, 0x64, 0xf6, 0x9c, 0xf7, 0x0d, 0xf8, 0xe6, 0xf7, 0x77, 0xf8, 0x9d, 0xf9, + 0x3f, 0xf9, 0xdf, 0xf6, 0x9f, 0xf4, 0xb3, 0xf4, 0xc5, 0xf5, 0x82, 0xf6, 0x69, 0xf7, 0xb9, 0xf8, + 0xb9, 0xfb, 0xff, 0xff, 0xad, 0x03, 0x12, 0x07, 0x40, 0x0a, 0x23, 0x0d, 0x94, 0x0e, 0x7f, 0x0f, + 0x91, 0x10, 0x51, 0x11, 0xa0, 0x11, 0x86, 0x0f, 0xf3, 0x0b, 0xac, 0x08, 0x01, 0x05, 0x45, 0x02, + 0x26, 0x00, 0xe8, 0xfe, 0x36, 0xfe, 0x7b, 0xfb, 0x01, 0xf8, 0xb7, 0xf6, 0x67, 0xf7, 0x6e, 0xf8, + 0xad, 0xf8, 0x76, 0xf8, 0x09, 0xf9, 0x7e, 0xfa, 0x5c, 0xfa, 0x11, 0xf8, 0xd2, 0xf5, 0x62, 0xf5, + 0x09, 0xf6, 0x79, 0xf6, 0xfe, 0xf6, 0xdf, 0xf7, 0xbc, 0xfa, 0xba, 0xfe, 0x34, 0x02, 0x82, 0x05, + 0xee, 0x08, 0xb1, 0x0b, 0x15, 0x0d, 0x06, 0x0e, 0xb2, 0x0e, 0xdb, 0x0f, 0xa5, 0x10, 0xdb, 0x0e, + 0xf4, 0x0b, 0x72, 0x08, 0xde, 0x04, 0xee, 0x01, 0x3d, 0xff, 0x55, 0xfe, 0xab, 0xfd, 0xc8, 0xfa, + 0x9f, 0xf7, 0xf3, 0xf5, 0x65, 0xf6, 0xa1, 0xf7, 0xf6, 0xf7, 0xba, 0xf7, 0x61, 0xf8, 0x24, 0xfa, + 0x4d, 0xfa, 0x24, 0xf8, 0x2e, 0xf6, 0x97, 0xf5, 0x33, 0xf6, 0x0b, 0xf7, 0x64, 0xf7, 0x18, 0xf8, + 0xa6, 0xfa, 0x6a, 0xfe, 0xe6, 0x01, 0x65, 0x05, 0x12, 0x09, 0x23, 0x0c, 0x2d, 0x0e, 0x31, 0x0f, + 0xdd, 0x0f, 0x7e, 0x11, 0x21, 0x12, 0xae, 0x10, 0x29, 0x0e, 0xa5, 0x0a, 0x43, 0x07, 0xe8, 0x03, + 0x0c, 0x01, 0x50, 0x00, 0x5e, 0xff, 0x86, 0xfc, 0x14, 0xf9, 0xba, 0xf6, 0xca, 0xf6, 0xba, 0xf7, + 0xff, 0xf7, 0x91, 0xf7, 0x49, 0xf8, 0x55, 0xfa, 0x84, 0xfa, 0x5f, 0xf8, 0x6f, 0xf6, 0x4f, 0xf5, + 0xc8, 0xf5, 0x7b, 0xf6, 0x70, 0xf6, 0x26, 0xf7, 0xa1, 0xf9, 0x37, 0xfd, 0x49, 0x00, 0xd6, 0x03, + 0x92, 0x07, 0x92, 0x0a, 0x09, 0x0d, 0xe6, 0x0d, 0xf2, 0x0e, 0xc6, 0x10, 0x91, 0x11, 0xf0, 0x10, + 0x94, 0x0e, 0x65, 0x0b, 0x41, 0x08, 0x6d, 0x04, 0x9c, 0x01, 0xe8, 0x00, 0xdb, 0xff, 0x69, 0xfd, + 0x09, 0xfa, 0x76, 0xf7, 0x6e, 0xf7, 0x22, 0xf8, 0x26, 0xf8, 0x81, 0xf7, 0x01, 0xf8, 0x10, 0xfa, + 0x33, 0xfa, 0x83, 0xf8, 0x54, 0xf6, 0x1c, 0xf5, 0x73, 0xf5, 0xa6, 0xf5, 0x83, 0xf5, 0xe0, 0xf5, + 0x12, 0xf8, 0x3e, 0xfb, 0x2c, 0xfe, 0xe0, 0x01, 0x74, 0x05, 0x0b, 0x09, 0x9a, 0x0b, 0x6d, 0x0c, + 0xc7, 0x0d, 0x56, 0x0f, 0x5d, 0x10, 0x21, 0x10, 0xe6, 0x0d, 0x63, 0x0b, 0x31, 0x08, 0x4a, 0x04, + 0x83, 0x01, 0x81, 0x00, 0xa3, 0xff, 0x67, 0xfd, 0xff, 0xf9, 0x57, 0xf7, 0x11, 0xf7, 0xe1, 0xf7, + 0x12, 0xf8, 0x6a, 0xf7, 0x6b, 0xf8, 0x63, 0xfa, 0xd0, 0xfa, 0x9a, 0xf9, 0x62, 0xf7, 0x0a, 0xf6, + 0x5a, 0xf6, 0xd1, 0xf6, 0x7c, 0xf6, 0xaf, 0xf6, 0xbd, 0xf8, 0x85, 0xfb, 0x9d, 0xfe, 0x33, 0x02, + 0xb9, 0x05, 0xac, 0x09, 0x5b, 0x0c, 0x7c, 0x0d, 0x23, 0x0f, 0xd8, 0x10, 0x4f, 0x12, 0x5b, 0x12, + 0x84, 0x10, 0x3a, 0x0e, 0xd6, 0x0a, 0x7a, 0x06, 0x68, 0x03, 0x04, 0x02, 0x2f, 0x01, 0x15, 0xff, + 0x82, 0xfb, 0x85, 0xf8, 0x79, 0xf7, 0xf9, 0xf7, 0xb2, 0xf7, 0xcf, 0xf6, 0x6b, 0xf7, 0x14, 0xf9, + 0xde, 0xf9, 0xd7, 0xf8, 0x7a, 0xf6, 0xbe, 0xf4, 0xc5, 0xf4, 0xe0, 0xf4, 0x14, 0xf4, 0x3c, 0xf4, + 0xd9, 0xf5, 0x54, 0xf8, 0x5b, 0xfb, 0x9e, 0xfe, 0x6d, 0x02, 0xb2, 0x06, 0x7e, 0x09, 0x1f, 0x0b, + 0x9c, 0x0c, 0x91, 0x0e, 0xba, 0x10, 0xf2, 0x10, 0xaf, 0x0f, 0x07, 0x0e, 0xef, 0x0a, 0xcf, 0x06, + 0x7d, 0x03, 0xee, 0x01, 0x75, 0x01, 0x91, 0xff, 0x82, 0xfc, 0x54, 0xf9, 0x4d, 0xf8, 0xde, 0xf8, + 0x73, 0xf8, 0xc9, 0xf7, 0x6d, 0xf8, 0x42, 0xfa, 0x5a, 0xfb, 0xbc, 0xfa, 0x9c, 0xf8, 0xf4, 0xf6, + 0x2a, 0xf7, 0xe7, 0xf6, 0x08, 0xf6, 0x16, 0xf6, 0x23, 0xf7, 0x6b, 0xf9, 0x3a, 0xfc, 0xf2, 0xfe, + 0xbc, 0x02, 0x15, 0x07, 0x06, 0x0a, 0xb6, 0x0b, 0xf0, 0x0c, 0xc4, 0x0e, 0xda, 0x10, 0x3a, 0x11, + 0x7e, 0x10, 0xf4, 0x0e, 0xea, 0x0b, 0xe5, 0x07, 0x22, 0x04, 0x58, 0x02, 0x75, 0x01, 0xc1, 0xff, + 0x75, 0xfc, 0xbe, 0xf8, 0xbe, 0xf7, 0xeb, 0xf7, 0x32, 0xf7, 0x9c, 0xf6, 0xf3, 0xf6, 0xb1, 0xf8, + 0x53, 0xfa, 0xf5, 0xf9, 0xec, 0xf7, 0x42, 0xf6, 0x67, 0xf6, 0x0f, 0xf6, 0x50, 0xf5, 0x2e, 0xf5, + 0x0f, 0xf6, 0x74, 0xf8, 0xcd, 0xfa, 0x5a, 0xfd, 0x25, 0x01, 0x41, 0x05, 0xcc, 0x08, 0xba, 0x0a, + 0xd3, 0x0b, 0x11, 0x0e, 0x20, 0x10, 0xd6, 0x10, 0x9c, 0x10, 0x4b, 0x0f, 0x96, 0x0c, 0x67, 0x08, + 0x97, 0x04, 0x71, 0x02, 0x6f, 0x01, 0xde, 0xff, 0x7b, 0xfc, 0xbe, 0xf8, 0x5c, 0xf7, 0x33, 0xf7, + 0x6a, 0xf6, 0xbd, 0xf5, 0xe1, 0xf5, 0x75, 0xf7, 0x37, 0xf9, 0x18, 0xf9, 0x09, 0xf7, 0x73, 0xf5, + 0x43, 0xf5, 0xd4, 0xf4, 0x60, 0xf4, 0xee, 0xf3, 0xab, 0xf4, 0xfc, 0xf6, 0x1e, 0xf9, 0xa6, 0xfb, + 0x4b, 0xff, 0x86, 0x03, 0x60, 0x07, 0x6e, 0x09, 0x28, 0x0b, 0xc8, 0x0d, 0x11, 0x10, 0x75, 0x11, + 0xb7, 0x11, 0x23, 0x11, 0xeb, 0x0e, 0xf8, 0x0a, 0x3b, 0x07, 0xdc, 0x04, 0x28, 0x04, 0x0a, 0x03, + 0xd4, 0xff, 0x51, 0xfc, 0xb7, 0xfa, 0x5c, 0xfa, 0x71, 0xf9, 0x71, 0xf8, 0x60, 0xf8, 0xd0, 0xf9, + 0xd4, 0xfb, 0xc2, 0xfb, 0xc7, 0xf9, 0x67, 0xf8, 0xd3, 0xf7, 0x4b, 0xf7, 0x5c, 0xf6, 0x73, 0xf5, + 0xe8, 0xf5, 0xcb, 0xf7, 0x7a, 0xf9, 0xac, 0xfb, 0xfb, 0xfe, 0x38, 0x03, 0x33, 0x07, 0x13, 0x09, + 0xaf, 0x0a, 0xe6, 0x0c, 0x0d, 0x0f, 0x77, 0x10, 0xed, 0x10, 0xe2, 0x10, 0xcc, 0x0e, 0x0f, 0x0b, + 0x14, 0x07, 0x2e, 0x04, 0x76, 0x03, 0x3e, 0x02, 0xea, 0xfe, 0x6f, 0xfb, 0x7f, 0xf9, 0xc0, 0xf8, + 0xb5, 0xf7, 0xb0, 0xf6, 0x16, 0xf6, 0x83, 0xf7, 0xed, 0xf9, 0xe9, 0xf9, 0x61, 0xf8, 0x13, 0xf7, + 0x86, 0xf6, 0x2d, 0xf6, 0x4d, 0xf5, 0x73, 0xf4, 0x04, 0xf5, 0x91, 0xf6, 0x4e, 0xf8, 0x79, 0xfa, + 0x94, 0xfd, 0x3b, 0x02, 0x41, 0x06, 0x9d, 0x08, 0xaf, 0x0a, 0xfd, 0x0c, 0x5b, 0x0f, 0x14, 0x11, + 0x3c, 0x12, 0xaa, 0x12, 0xf8, 0x10, 0x68, 0x0d, 0x37, 0x09, 0x1c, 0x06, 0x41, 0x05, 0x00, 0x04, + 0xe5, 0x00, 0x85, 0xfd, 0x55, 0xfb, 0x54, 0xfa, 0x65, 0xf9, 0x14, 0xf8, 0x1c, 0xf7, 0x8b, 0xf8, + 0xc3, 0xfa, 0xec, 0xfa, 0xa3, 0xf9, 0x11, 0xf8, 0x60, 0xf7, 0x0d, 0xf7, 0xb8, 0xf5, 0xa7, 0xf4, + 0xe8, 0xf4, 0xe3, 0xf5, 0x82, 0xf7, 0xff, 0xf8, 0xf0, 0xfb, 0x63, 0x00, 0x68, 0x04, 0x24, 0x07, + 0x2d, 0x09, 0xc3, 0x0b, 0x03, 0x0e, 0xcb, 0x0f, 0x0c, 0x11, 0x6e, 0x11, 0x3c, 0x10, 0x39, 0x0d, + 0xd8, 0x08, 0xad, 0x05, 0xd2, 0x04, 0x9a, 0x03, 0xbd, 0x00, 0x66, 0xfd, 0x23, 0xfb, 0xe0, 0xf9, + 0xf8, 0xf8, 0x64, 0xf7, 0x51, 0xf6, 0xea, 0xf7, 0x11, 0xfa, 0x6d, 0xfa, 0x89, 0xf9, 0x05, 0xf8, + 0x51, 0xf7, 0xd8, 0xf6, 0x4a, 0xf5, 0x47, 0xf4, 0x17, 0xf4, 0x22, 0xf5, 0x79, 0xf6, 0x91, 0xf7, + 0x6f, 0xfa, 0xa3, 0xfe, 0xcc, 0x02, 0xa5, 0x05, 0xba, 0x07, 0x53, 0x0a, 0xa0, 0x0c, 0x71, 0x0e, + 0x1a, 0x10, 0xcf, 0x10, 0x3d, 0x10, 0x78, 0x0d, 0x20, 0x09, 0xe4, 0x05, 0xdc, 0x04, 0xac, 0x03, + 0xfb, 0x00, 0xeb, 0xfd, 0x73, 0xfb, 0x6b, 0xfa, 0xbc, 0xf9, 0xce, 0xf7, 0xae, 0xf6, 0x2d, 0xf8, + 0x52, 0xfa, 0x4c, 0xfb, 0x97, 0xfa, 0x4b, 0xf9, 0x07, 0xf9, 0x7d, 0xf8, 0x30, 0xf7, 0xd9, 0xf5, + 0xa9, 0xf5, 0xde, 0xf6, 0xd9, 0xf7, 0xd7, 0xf8, 0x6a, 0xfb, 0x80, 0xff, 0xb3, 0x03, 0x7c, 0x06, + 0xbd, 0x08, 0x46, 0x0b, 0x60, 0x0d, 0x60, 0x0f, 0x1e, 0x11, 0x18, 0x12, 0x2c, 0x12, 0x84, 0x0f, + 0x2b, 0x0b, 0xed, 0x07, 0x6f, 0x06, 0xe9, 0x04, 0x32, 0x02, 0xcd, 0xfe, 0xfe, 0xfb, 0xc6, 0xfa, + 0xab, 0xf9, 0x74, 0xf7, 0x23, 0xf6, 0x07, 0xf7, 0xf6, 0xf8, 0xe7, 0xf9, 0x17, 0xf9, 0xf9, 0xf7, + 0x8d, 0xf7, 0x0b, 0xf7, 0xea, 0xf5, 0x84, 0xf4, 0x39, 0xf4, 0x6d, 0xf5, 0x2f, 0xf6, 0x10, 0xf7, + 0x7e, 0xf9, 0x5d, 0xfd, 0x87, 0x01, 0xa4, 0x04, 0x79, 0x07, 0x14, 0x0a, 0x54, 0x0c, 0xab, 0x0e, + 0x7f, 0x10, 0xed, 0x11, 0x56, 0x12, 0x19, 0x10, 0xd6, 0x0b, 0x98, 0x08, 0x02, 0x07, 0x88, 0x05, + 0x3d, 0x03, 0x00, 0x00, 0x11, 0xfd, 0x08, 0xfc, 0xaa, 0xfa, 0x1d, 0xf8, 0xa5, 0xf6, 0xfb, 0xf6, + 0xf3, 0xf8, 0x12, 0xfa, 0x54, 0xf9, 0x7b, 0xf8, 0x06, 0xf8, 0x8c, 0xf7, 0x0d, 0xf6, 0x4e, 0xf4, + 0x10, 0xf4, 0xdd, 0xf4, 0x86, 0xf5, 0x37, 0xf6, 0x38, 0xf8, 0x02, 0xfc, 0xe6, 0xff, 0xf9, 0x02, + 0xb2, 0x05, 0x1e, 0x08, 0xa9, 0x0a, 0xfd, 0x0c, 0xbd, 0x0e, 0x9f, 0x10, 0xc6, 0x11, 0xe6, 0x0f, + 0x14, 0x0c, 0xc9, 0x08, 0x05, 0x07, 0xb4, 0x05, 0xa8, 0x03, 0x65, 0x00, 0xb1, 0xfd, 0xd6, 0xfc, + 0x76, 0xfb, 0x28, 0xf9, 0x7c, 0xf7, 0xd1, 0xf7, 0xd9, 0xf9, 0x10, 0xfb, 0xaa, 0xfa, 0xef, 0xf9, + 0x60, 0xf9, 0x06, 0xf9, 0x85, 0xf7, 0x9c, 0xf5, 0x32, 0xf5, 0xef, 0xf5, 0x70, 0xf6, 0xb0, 0xf6, + 0x73, 0xf8, 0xcb, 0xfb, 0x67, 0xff, 0xbd, 0x02, 0x85, 0x05, 0x13, 0x08, 0xb6, 0x0a, 0xf1, 0x0c, + 0xc2, 0x0e, 0xeb, 0x10, 0x57, 0x12, 0x8a, 0x10, 0xfc, 0x0c, 0x99, 0x09, 0x72, 0x07, 0x45, 0x06, + 0x1e, 0x04, 0x9c, 0x00, 0x3c, 0xfe, 0x15, 0xfd, 0x87, 0xfb, 0x30, 0xf9, 0xf3, 0xf6, 0xf0, 0xf6, + 0xc0, 0xf8, 0xf0, 0xf9, 0xd5, 0xf9, 0x1c, 0xf9, 0xdd, 0xf8, 0xa5, 0xf8, 0xf9, 0xf6, 0x26, 0xf5, + 0x80, 0xf4, 0x29, 0xf5, 0x84, 0xf5, 0x90, 0xf5, 0x31, 0xf7, 0x54, 0xfa, 0x0e, 0xfe, 0x8d, 0x01, + 0x64, 0x04, 0x27, 0x07, 0xfb, 0x09, 0x42, 0x0c, 0x2f, 0x0e, 0xc7, 0x10, 0x9c, 0x12, 0x9c, 0x11, + 0xac, 0x0e, 0x64, 0x0b, 0x23, 0x09, 0x36, 0x08, 0x0b, 0x06, 0xa6, 0x02, 0x53, 0x00, 0xff, 0xfe, + 0x81, 0xfd, 0x1e, 0xfb, 0xba, 0xf8, 0x9a, 0xf8, 0x3b, 0xfa, 0x83, 0xfb, 0x9f, 0xfb, 0xe7, 0xfa, + 0x0a, 0xfb, 0xa3, 0xfa, 0xbd, 0xf8, 0xd8, 0xf6, 0xeb, 0xf5, 0x54, 0xf6, 0x48, 0xf6, 0x1d, 0xf6, + 0x79, 0xf7, 0x2b, 0xfa, 0xcd, 0xfd, 0x4a, 0x01, 0xfe, 0x03, 0xed, 0x06, 0xa8, 0x09, 0x9b, 0x0b, + 0x8c, 0x0d, 0x49, 0x10, 0x27, 0x12, 0x84, 0x11, 0xcc, 0x0e, 0x19, 0x0b, 0xc2, 0x08, 0x9d, 0x07, + 0x2f, 0x05, 0xfe, 0x01, 0x8a, 0xff, 0x3b, 0xfe, 0xd7, 0xfc, 0xfb, 0xf9, 0x87, 0xf7, 0xf0, 0xf6, + 0x5b, 0xf8, 0xd2, 0xf9, 0xac, 0xf9, 0x6a, 0xf9, 0xc3, 0xf9, 0x77, 0xf9, 0xbf, 0xf7, 0x9a, 0xf5, + 0xcf, 0xf4, 0x05, 0xf5, 0xee, 0xf4, 0xde, 0xf4, 0xf8, 0xf5, 0x82, 0xf8, 0x30, 0xfc, 0xbd, 0xff, + 0x90, 0x02, 0x92, 0x05, 0x5a, 0x08, 0x34, 0x0a, 0x5c, 0x0c, 0x8b, 0x0f, 0xa5, 0x11, 0xbe, 0x11, + 0x56, 0x0f, 0xd5, 0x0b, 0xb7, 0x09, 0x50, 0x08, 0xd3, 0x05, 0xab, 0x02, 0x18, 0x00, 0xf6, 0xfe, + 0x90, 0xfd, 0xaf, 0xfa, 0x12, 0xf8, 0x17, 0xf7, 0x5f, 0xf8, 0xbd, 0xf9, 0xba, 0xf9, 0x8b, 0xf9, + 0xe9, 0xf9, 0xce, 0xf9, 0x51, 0xf8, 0x36, 0xf6, 0x47, 0xf5, 0x69, 0xf5, 0x26, 0xf5, 0x04, 0xf5, + 0xca, 0xf5, 0x08, 0xf8, 0x87, 0xfb, 0xdb, 0xfe, 0xbe, 0x01, 0xfa, 0x04, 0xa5, 0x07, 0x52, 0x09, + 0xbc, 0x0b, 0xdb, 0x0e, 0x5a, 0x11, 0x11, 0x12, 0x13, 0x10, 0xb1, 0x0c, 0x75, 0x0a, 0xfa, 0x08, + 0x87, 0x06, 0x45, 0x03, 0xab, 0x00, 0x80, 0xff, 0x05, 0xfe, 0x87, 0xfb, 0x75, 0xf8, 0x39, 0xf7, + 0x40, 0xf8, 0x5c, 0xf9, 0x78, 0xf9, 0x61, 0xf9, 0xd9, 0xf9, 0xf7, 0xf9, 0x7b, 0xf8, 0x5c, 0xf6, + 0x82, 0xf5, 0x52, 0xf5, 0xf3, 0xf4, 0xa9, 0xf4, 0xf7, 0xf4, 0xbf, 0xf6, 0x1a, 0xfa, 0x25, 0xfd, + 0x1d, 0x00, 0xa4, 0x03, 0x4a, 0x06, 0x1e, 0x08, 0x85, 0x0a, 0x47, 0x0d, 0x47, 0x10, 0x9a, 0x11, + 0xee, 0x0f, 0xe6, 0x0c, 0xb8, 0x0a, 0x4e, 0x09, 0xd8, 0x06, 0x81, 0x03, 0xff, 0x00, 0xb8, 0xff, + 0x79, 0xfe, 0x05, 0xfc, 0xe0, 0xf8, 0x60, 0xf7, 0x11, 0xf8, 0x05, 0xf9, 0x2e, 0xf9, 0x29, 0xf9, + 0xc2, 0xf9, 0x36, 0xfa, 0xf4, 0xf8, 0x21, 0xf7, 0x3a, 0xf6, 0xe8, 0xf5, 0xdd, 0xf5, 0x66, 0xf5, + 0x4f, 0xf5, 0x0f, 0xf7, 0x36, 0xfa, 0x37, 0xfd, 0x6f, 0x00, 0x1e, 0x04, 0xdb, 0x06, 0xd0, 0x08, + 0x01, 0x0b, 0xbe, 0x0d, 0xef, 0x10, 0x86, 0x12, 0x3b, 0x11, 0x85, 0x0e, 0x48, 0x0c, 0xd6, 0x0a, + 0x7f, 0x08, 0x31, 0x05, 0x8e, 0x02, 0x16, 0x01, 0xe4, 0xff, 0x34, 0xfd, 0xe1, 0xf9, 0x1d, 0xf8, + 0x5e, 0xf8, 0x2d, 0xf9, 0x46, 0xf9, 0x43, 0xf9, 0x29, 0xfa, 0x9b, 0xfa, 0x41, 0xf9, 0x58, 0xf7, + 0x1c, 0xf6, 0xb7, 0xf5, 0xa2, 0xf5, 0x0d, 0xf5, 0xd7, 0xf4, 0x7f, 0xf6, 0x3f, 0xf9, 0x06, 0xfc, + 0x6b, 0xff, 0xf6, 0x02, 0x89, 0x05, 0xbf, 0x07, 0xcc, 0x09, 0x7b, 0x0c, 0x0e, 0x10, 0xf5, 0x11, + 0x1d, 0x11, 0xa0, 0x0e, 0x8f, 0x0c, 0x19, 0x0b, 0x8e, 0x08, 0x0c, 0x05, 0x34, 0x02, 0xa3, 0x00, + 0x90, 0xff, 0xf5, 0xfc, 0xad, 0xf9, 0xd3, 0xf7, 0xf2, 0xf7, 0xa2, 0xf8, 0xa3, 0xf8, 0xbd, 0xf8, + 0xe3, 0xf9, 0x67, 0xfa, 0x55, 0xf9, 0xb6, 0xf7, 0x77, 0xf6, 0x22, 0xf6, 0x15, 0xf6, 0x4e, 0xf5, + 0xe2, 0xf4, 0x5c, 0xf6, 0x92, 0xf8, 0x2b, 0xfb, 0xa0, 0xfe, 0x0f, 0x02, 0x08, 0x05, 0x6d, 0x07, + 0x52, 0x09, 0x45, 0x0c, 0xd9, 0x0f, 0x24, 0x12, 0x9e, 0x11, 0x59, 0x0f, 0x9c, 0x0d, 0xf3, 0x0b, + 0x78, 0x09, 0x35, 0x06, 0x5c, 0x03, 0x0f, 0x02, 0x1b, 0x01, 0x81, 0xfe, 0x0c, 0xfb, 0xe9, 0xf8, + 0xcc, 0xf8, 0x5d, 0xf9, 0x0c, 0xf9, 0x66, 0xf9, 0x89, 0xfa, 0x11, 0xfb, 0x35, 0xfa, 0x93, 0xf8, + 0x34, 0xf7, 0xc1, 0xf6, 0x8b, 0xf6, 0x72, 0xf5, 0x03, 0xf5, 0x3f, 0xf6, 0x01, 0xf8, 0x7f, 0xfa, + 0xe2, 0xfd, 0x48, 0x01, 0x7f, 0x04, 0x7a, 0x06, 0x53, 0x08, 0x21, 0x0b, 0xd9, 0x0e, 0x8c, 0x11, + 0x6c, 0x11, 0xd5, 0x0f, 0x3c, 0x0e, 0xa6, 0x0c, 0x54, 0x0a, 0xee, 0x06, 0xe0, 0x03, 0x8f, 0x02, + 0x7e, 0x01, 0xf2, 0xfe, 0x8a, 0xfb, 0x0b, 0xf9, 0xc4, 0xf8, 0xd1, 0xf8, 0x7d, 0xf8, 0xd9, 0xf8, + 0xf2, 0xf9, 0xb6, 0xfa, 0x30, 0xfa, 0x8c, 0xf8, 0x02, 0xf7, 0xaf, 0xf6, 0x7f, 0xf6, 0x77, 0xf5, + 0x0c, 0xf5, 0xe4, 0xf5, 0x34, 0xf7, 0xa2, 0xf9, 0xc5, 0xfc, 0x3a, 0x00, 0x5e, 0x03, 0xa3, 0x05, + 0x57, 0x07, 0xd5, 0x09, 0xb8, 0x0d, 0xc0, 0x10, 0x21, 0x11, 0xe4, 0x0f, 0x77, 0x0e, 0x28, 0x0d, + 0x04, 0x0b, 0xaa, 0x07, 0xa9, 0x04, 0x24, 0x03, 0x36, 0x02, 0xe9, 0xff, 0x67, 0xfc, 0xd8, 0xf9, + 0x3d, 0xf9, 0xfb, 0xf8, 0x90, 0xf8, 0xf0, 0xf8, 0xd1, 0xf9, 0xab, 0xfa, 0x69, 0xfa, 0xd7, 0xf8, + 0x3c, 0xf7, 0xce, 0xf6, 0x91, 0xf6, 0x84, 0xf5, 0x1f, 0xf5, 0x64, 0xf5, 0xa6, 0xf6, 0xf1, 0xf8, + 0xc3, 0xfb, 0x41, 0xff, 0x7a, 0x02, 0xc7, 0x04, 0x4e, 0x06, 0xc4, 0x08, 0xc4, 0x0c, 0x0b, 0x10, + 0xfb, 0x10, 0x2a, 0x10, 0xc3, 0x0e, 0xad, 0x0d, 0x80, 0x0b, 0x0c, 0x08, 0x03, 0x05, 0x5d, 0x03, + 0x87, 0x02, 0x62, 0x00, 0xe4, 0xfc, 0x4f, 0xfa, 0x8a, 0xf9, 0xef, 0xf8, 0x60, 0xf8, 0xa8, 0xf8, + 0xac, 0xf9, 0xd1, 0xfa, 0xda, 0xfa, 0x39, 0xf9, 0xaf, 0xf7, 0x68, 0xf7, 0xab, 0xf6, 0x95, 0xf5, + 0xfd, 0xf4, 0xed, 0xf4, 0x13, 0xf6, 0x18, 0xf8, 0xe1, 0xfa, 0x45, 0xfe, 0x96, 0x01, 0xfa, 0x03, + 0x60, 0x05, 0xd4, 0x07, 0xba, 0x0b, 0xfb, 0x0e, 0x3b, 0x10, 0xb1, 0x0f, 0x8d, 0x0e, 0xaa, 0x0d, + 0x93, 0x0b, 0x21, 0x08, 0xfb, 0x04, 0x20, 0x03, 0x44, 0x02, 0x1a, 0x00, 0xa2, 0xfc, 0x32, 0xfa, + 0x0f, 0xf9, 0x50, 0xf8, 0xb5, 0xf7, 0x9e, 0xf7, 0x8d, 0xf8, 0xc9, 0xf9, 0xe9, 0xf9, 0x47, 0xf8, + 0x26, 0xf7, 0xb8, 0xf6, 0xfc, 0xf5, 0x29, 0xf5, 0x58, 0xf4, 0x1c, 0xf4, 0xd6, 0xf4, 0xa6, 0xf6, + 0x4a, 0xf9, 0x93, 0xfc, 0x3d, 0x00, 0xbc, 0x02, 0x42, 0x04, 0xe2, 0x06, 0xda, 0x0a, 0x64, 0x0e, + 0x22, 0x10, 0x01, 0x10, 0x72, 0x0f, 0xe7, 0x0e, 0x26, 0x0d, 0xdc, 0x09, 0xe6, 0x06, 0x2f, 0x05, + 0x81, 0x04, 0x45, 0x02, 0xc4, 0xfe, 0x5a, 0xfc, 0xf7, 0xfa, 0xf9, 0xf9, 0x33, 0xf9, 0x0b, 0xf9, + 0xc9, 0xf9, 0x57, 0xfb, 0x5f, 0xfb, 0x13, 0xfa, 0xfd, 0xf8, 0x2a, 0xf8, 0x70, 0xf7, 0x9c, 0xf6, + 0xa0, 0xf5, 0x1c, 0xf5, 0xa0, 0xf5, 0x07, 0xf7, 0x44, 0xf9, 0x81, 0xfc, 0xf2, 0xff, 0x60, 0x02, + 0xf5, 0x03, 0x78, 0x06, 0x23, 0x0a, 0xb9, 0x0d, 0xa4, 0x0f, 0xb0, 0x0f, 0x52, 0x0f, 0xe4, 0x0e, + 0x0f, 0x0d, 0xc7, 0x09, 0x66, 0x06, 0x9e, 0x04, 0xb1, 0x03, 0x7c, 0x01, 0x33, 0xfe, 0x93, 0xfb, + 0x14, 0xfa, 0x01, 0xf9, 0x35, 0xf8, 0x91, 0xf7, 0x79, 0xf8, 0x1c, 0xfa, 0x3b, 0xfa, 0x3b, 0xf9, + 0x34, 0xf8, 0x73, 0xf7, 0xda, 0xf6, 0x1f, 0xf6, 0x53, 0xf5, 0xdd, 0xf4, 0x57, 0xf5, 0xa4, 0xf6, + 0xc1, 0xf8, 0x18, 0xfc, 0xb6, 0xff, 0x2a, 0x02, 0xe2, 0x03, 0x62, 0x06, 0x3a, 0x0a, 0x30, 0x0e, + 0x72, 0x10, 0xf5, 0x10, 0xf0, 0x10, 0x9a, 0x10, 0x41, 0x0f, 0x00, 0x0c, 0x84, 0x08, 0xeb, 0x06, + 0xf5, 0x05, 0xb3, 0x03, 0x91, 0x00, 0xd6, 0xfd, 0xd8, 0xfb, 0xa1, 0xfa, 0x63, 0xf9, 0x99, 0xf8, + 0x79, 0xf9, 0xf4, 0xfa, 0x33, 0xfb, 0x6f, 0xfa, 0x31, 0xf9, 0x5d, 0xf8, 0xa6, 0xf7, 0xca, 0xf6, + 0xc2, 0xf5, 0xff, 0xf4, 0x4e, 0xf5, 0x39, 0xf6, 0xf6, 0xf7, 0x3c, 0xfb, 0xce, 0xfe, 0x4b, 0x01, + 0x11, 0x03, 0x3d, 0x05, 0xec, 0x08, 0xdc, 0x0c, 0x3a, 0x0f, 0x0d, 0x10, 0x2c, 0x10, 0x12, 0x10, + 0xdc, 0x0e, 0x8f, 0x0b, 0x3e, 0x08, 0x8b, 0x06, 0x69, 0x05, 0x2f, 0x03, 0x29, 0x00, 0x5c, 0xfd, + 0x5c, 0xfb, 0x21, 0xfa, 0x83, 0xf8, 0x9c, 0xf7, 0x76, 0xf8, 0xca, 0xf9, 0x5b, 0xfa, 0xcb, 0xf9, + 0xc1, 0xf8, 0xf3, 0xf7, 0x2f, 0xf7, 0x99, 0xf6, 0x96, 0xf5, 0xc7, 0xf4, 0xf9, 0xf4, 0x84, 0xf5, + 0x3b, 0xf7, 0x51, 0xfa, 0xce, 0xfd, 0x7a, 0x00, 0x37, 0x02, 0x68, 0x04, 0x0d, 0x08, 0xeb, 0x0b, + 0x84, 0x0e, 0x8c, 0x0f, 0xf1, 0x0f, 0x6a, 0x10, 0x5b, 0x0f, 0x2d, 0x0c, 0x05, 0x09, 0x73, 0x07, + 0x07, 0x06, 0x0d, 0x04, 0x39, 0x01, 0x1b, 0xfe, 0x34, 0xfc, 0xc6, 0xfa, 0xc9, 0xf8, 0xb5, 0xf7, + 0x52, 0xf8, 0x7b, 0xf9, 0x1e, 0xfa, 0xb2, 0xf9, 0xbf, 0xf8, 0xd8, 0xf7, 0x33, 0xf7, 0x97, 0xf6, + 0x8d, 0xf5, 0xfa, 0xf4, 0x07, 0xf5, 0x60, 0xf5, 0xf4, 0xf6, 0xe8, 0xf9, 0x63, 0xfd, 0x0d, 0x00, + 0xd4, 0x01, 0x02, 0x04, 0x9c, 0x07, 0x77, 0x0b, 0x55, 0x0e, 0xa3, 0x0f, 0x61, 0x10, 0x31, 0x11, + 0x90, 0x10, 0xb5, 0x0d, 0x9e, 0x0a, 0xd0, 0x08, 0x6b, 0x07, 0x9a, 0x05, 0x9f, 0x02, 0x90, 0xff, + 0x8c, 0xfd, 0xea, 0xfb, 0xce, 0xf9, 0x6a, 0xf8, 0xca, 0xf8, 0xe3, 0xf9, 0xa9, 0xfa, 0x82, 0xfa, + 0x9c, 0xf9, 0x99, 0xf8, 0xdc, 0xf7, 0x0f, 0xf7, 0xd1, 0xf5, 0x34, 0xf5, 0xeb, 0xf4, 0xdb, 0xf4, + 0x21, 0xf6, 0xbf, 0xf8, 0x23, 0xfc, 0xbb, 0xfe, 0x97, 0x00, 0xd5, 0x02, 0x48, 0x06, 0x30, 0x0a, + 0x19, 0x0d, 0x94, 0x0e, 0xd0, 0x0f, 0xe8, 0x10, 0x39, 0x10, 0x84, 0x0d, 0xb0, 0x0a, 0xb6, 0x08, + 0x55, 0x07, 0x85, 0x05, 0x7a, 0x02, 0xa8, 0xff, 0xe6, 0xfd, 0xeb, 0xfb, 0xbc, 0xf9, 0x5f, 0xf8, + 0x64, 0xf8, 0x86, 0xf9, 0x60, 0xfa, 0x70, 0xfa, 0x94, 0xf9, 0xac, 0xf8, 0x36, 0xf8, 0x17, 0xf7, + 0x00, 0xf6, 0x68, 0xf5, 0xc7, 0xf4, 0xae, 0xf4, 0xb6, 0xf5, 0x26, 0xf8, 0x5b, 0xfb, 0xf2, 0xfd, + 0xd7, 0xff, 0xec, 0x01, 0x3c, 0x05, 0x1d, 0x09, 0xfd, 0x0b, 0x8a, 0x0d, 0x05, 0x0f, 0x73, 0x10, + 0xeb, 0x0f, 0xa1, 0x0d, 0x05, 0x0b, 0xe5, 0x08, 0xaa, 0x07, 0xe1, 0x05, 0xcd, 0x02, 0x08, 0x00, + 0x09, 0xfe, 0x12, 0xfc, 0xd4, 0xf9, 0x4e, 0xf8, 0x52, 0xf8, 0x36, 0xf9, 0x25, 0xfa, 0x65, 0xfa, + 0xab, 0xf9, 0xd5, 0xf8, 0x42, 0xf8, 0x3b, 0xf7, 0x39, 0xf6, 0x7f, 0xf5, 0xc9, 0xf4, 0x7d, 0xf4, + 0x1b, 0xf5, 0x52, 0xf7, 0x5a, 0xfa, 0x09, 0xfd, 0xe3, 0xfe, 0xd4, 0x00, 0xda, 0x03, 0xd1, 0x07, + 0xdd, 0x0a, 0x80, 0x0c, 0x46, 0x0e, 0xef, 0x0f, 0xd1, 0x0f, 0xe7, 0x0d, 0x31, 0x0b, 0xe9, 0x08, + 0xb3, 0x07, 0xdd, 0x05, 0xf7, 0x02, 0x40, 0x00, 0x3c, 0xfe, 0x38, 0xfc, 0xe0, 0xf9, 0x16, 0xf8, + 0xd2, 0xf7, 0x93, 0xf8, 0xc7, 0xf9, 0x10, 0xfa, 0x81, 0xf9, 0x06, 0xf9, 0x66, 0xf8, 0x7d, 0xf7, + 0x9e, 0xf6, 0xfc, 0xf5, 0x4a, 0xf5, 0xcc, 0xf4, 0x3e, 0xf5, 0x39, 0xf7, 0x1c, 0xfa, 0xc1, 0xfc, + 0xa6, 0xfe, 0x78, 0x00, 0x89, 0x03, 0x85, 0x07, 0x83, 0x0a, 0x7f, 0x0c, 0xae, 0x0e, 0x96, 0x10, + 0xd9, 0x10, 0x62, 0x0f, 0xd0, 0x0c, 0x97, 0x0a, 0x55, 0x09, 0x94, 0x07, 0xe3, 0x04, 0x55, 0x02, + 0x5a, 0x00, 0x3c, 0xfe, 0xb7, 0xfb, 0xd9, 0xf9, 0x2f, 0xf9, 0x95, 0xf9, 0xdb, 0xfa, 0x2c, 0xfb, + 0xc5, 0xfa, 0x61, 0xfa, 0xa7, 0xf9, 0xd3, 0xf8, 0xed, 0xf7, 0x1a, 0xf7, 0x49, 0xf6, 0x83, 0xf5, + 0xa6, 0xf5, 0x44, 0xf7, 0xf1, 0xf9, 0x95, 0xfc, 0x68, 0xfe, 0xfe, 0xff, 0xf6, 0x02, 0xd0, 0x06, + 0x9d, 0x09, 0xb5, 0x0b, 0xe0, 0x0d, 0xd7, 0x0f, 0x6d, 0x10, 0x23, 0x0f, 0x68, 0x0c, 0x31, 0x0a, + 0xdd, 0x08, 0x15, 0x07, 0x92, 0x04, 0x28, 0x02, 0x32, 0x00, 0xea, 0xfd, 0x6c, 0xfb, 0x5b, 0xf9, + 0x31, 0xf8, 0x89, 0xf8, 0xc3, 0xf9, 0x4c, 0xfa, 0x52, 0xfa, 0x18, 0xfa, 0xa3, 0xf9, 0xda, 0xf8, + 0xeb, 0xf7, 0x3c, 0xf7, 0x6c, 0xf6, 0x72, 0xf5, 0x75, 0xf5, 0xe1, 0xf6, 0x74, 0xf9, 0x2c, 0xfc, + 0x19, 0xfe, 0xa3, 0xff, 0x9c, 0x02, 0x5e, 0x06, 0x2d, 0x09, 0x81, 0x0b, 0xd4, 0x0d, 0x0f, 0x10, + 0x1e, 0x11, 0x1f, 0x10, 0xbc, 0x0d, 0xbd, 0x0b, 0x45, 0x0a, 0x47, 0x08, 0xa4, 0x05, 0x2f, 0x03, + 0x0f, 0x01, 0xc4, 0xfe, 0x85, 0xfc, 0x39, 0xfa, 0xa7, 0xf8, 0xd4, 0xf8, 0xa8, 0xf9, 0x1f, 0xfa, + 0x09, 0xfa, 0xc8, 0xf9, 0x2c, 0xf9, 0x57, 0xf8, 0x5d, 0xf7, 0x86, 0xf6, 0x96, 0xf5, 0x8d, 0xf4, + 0x62, 0xf4, 0x51, 0xf5, 0xb2, 0xf7, 0x55, 0xfa, 0x13, 0xfc, 0xb5, 0xfd, 0xaf, 0x00, 0x35, 0x04, + 0xf9, 0x06, 0x61, 0x09, 0xfd, 0x0b, 0x85, 0x0e, 0xe5, 0x0f, 0x44, 0x0f, 0x40, 0x0d, 0x54, 0x0b, + 0x0e, 0x0a, 0x40, 0x08, 0xd3, 0x05, 0x99, 0x03, 0x84, 0x01, 0x6f, 0xff, 0x13, 0xfd, 0x98, 0xfa, + 0x12, 0xf9, 0x1f, 0xf9, 0xed, 0xf9, 0x88, 0xfa, 0xbe, 0xfa, 0xa3, 0xfa, 0x21, 0xfa, 0x55, 0xf9, + 0x96, 0xf8, 0xd7, 0xf7, 0xc7, 0xf6, 0xaa, 0xf5, 0x40, 0xf5, 0xec, 0xf5, 0x31, 0xf8, 0xb6, 0xfa, + 0x2f, 0xfc, 0xb9, 0xfd, 0x83, 0x00, 0xc6, 0x03, 0x8d, 0x06, 0xef, 0x08, 0x69, 0x0b, 0x0a, 0x0e, + 0xa8, 0x0f, 0x42, 0x0f, 0x6e, 0x0d, 0x9b, 0x0b, 0x5e, 0x0a, 0x72, 0x08, 0x20, 0x06, 0xfa, 0x03, + 0xba, 0x01, 0xa8, 0xff, 0x61, 0xfd, 0xbd, 0xfa, 0xf0, 0xf8, 0xc2, 0xf8, 0x6f, 0xf9, 0x2a, 0xfa, + 0x82, 0xfa, 0x7c, 0xfa, 0x33, 0xfa, 0x93, 0xf9, 0xd0, 0xf8, 0x16, 0xf8, 0x09, 0xf7, 0xfa, 0xf5, + 0x55, 0xf5, 0xb5, 0xf5, 0xe4, 0xf7, 0x52, 0xfa, 0xbe, 0xfb, 0x5b, 0xfd, 0x03, 0x00, 0x1f, 0x03, + 0x01, 0x06, 0x72, 0x08, 0x03, 0x0b, 0xe3, 0x0d, 0xfd, 0x0f, 0x19, 0x10, 0x65, 0x0e, 0xc1, 0x0c, + 0x5c, 0x0b, 0x5f, 0x09, 0x36, 0x07, 0xf4, 0x04, 0xc8, 0x02, 0xcf, 0x00, 0x63, 0xfe, 0xb4, 0xfb, + 0xae, 0xf9, 0xf3, 0xf8, 0x64, 0xf9, 0xf3, 0xf9, 0x6a, 0xfa, 0xa2, 0xfa, 0x54, 0xfa, 0x8f, 0xf9, + 0x0a, 0xf9, 0x53, 0xf8, 0x26, 0xf7, 0x15, 0xf6, 0xee, 0xf4, 0x0c, 0xf5, 0xdd, 0xf6, 0x16, 0xf9, + 0x7b, 0xfa, 0x0a, 0xfc, 0x85, 0xfe, 0x7b, 0x01, 0x3d, 0x04, 0x84, 0x06, 0x54, 0x09, 0x50, 0x0c, + 0xce, 0x0e, 0x52, 0x0f, 0x1b, 0x0e, 0xe2, 0x0c, 0xa5, 0x0b, 0xc7, 0x09, 0x8e, 0x07, 0x5d, 0x05, + 0x52, 0x03, 0x89, 0x01, 0x2a, 0xff, 0x6b, 0xfc, 0x73, 0xfa, 0x87, 0xf9, 0xba, 0xf9, 0x3c, 0xfa, + 0xaa, 0xfa, 0xf7, 0xfa, 0xba, 0xfa, 0x35, 0xfa, 0xd7, 0xf9, 0x2a, 0xf9, 0x5d, 0xf8, 0x39, 0xf7, + 0xa7, 0xf5, 0x95, 0xf5, 0x2e, 0xf7, 0xee, 0xf8, 0x4d, 0xfa, 0xbb, 0xfb, 0x11, 0xfe, 0x06, 0x01, + 0xbd, 0x03, 0x19, 0x06, 0xa0, 0x08, 0xac, 0x0b, 0x5b, 0x0e, 0xf6, 0x0e, 0x1f, 0x0e, 0x12, 0x0d, + 0x9c, 0x0b, 0xe8, 0x09, 0xe9, 0x07, 0x7e, 0x05, 0x57, 0x03, 0x7c, 0x01, 0xf8, 0xfe, 0x36, 0xfc, + 0xde, 0xf9, 0xe0, 0xf8, 0xf7, 0xf8, 0x94, 0xf9, 0x61, 0xfa, 0xc1, 0xfa, 0x93, 0xfa, 0x3b, 0xfa, + 0xcb, 0xf9, 0x2a, 0xf9, 0x81, 0xf8, 0x56, 0xf7, 0xec, 0xf5, 0xa1, 0xf5, 0x0d, 0xf7, 0xae, 0xf8, + 0x09, 0xfa, 0x5f, 0xfb, 0xad, 0xfd, 0x7d, 0x00, 0x3d, 0x03, 0xc6, 0x05, 0x57, 0x08, 0xc4, 0x0b, + 0xbe, 0x0e, 0xa3, 0x0f, 0x5a, 0x0f, 0x61, 0x0e, 0xfc, 0x0c, 0x6a, 0x0b, 0x67, 0x09, 0xef, 0x06, + 0xf4, 0x04, 0x08, 0x03, 0xae, 0x00, 0xc1, 0xfd, 0x36, 0xfb, 0xed, 0xf9, 0x70, 0xf9, 0xab, 0xf9, + 0x5d, 0xfa, 0xa8, 0xfa, 0x98, 0xfa, 0x67, 0xfa, 0xd4, 0xf9, 0x41, 0xf9, 0xa7, 0xf8, 0x6d, 0xf7, + 0xdf, 0xf5, 0x98, 0xf5, 0xc2, 0xf6, 0x45, 0xf8, 0x99, 0xf9, 0xf2, 0xfa, 0xe9, 0xfc, 0xaf, 0xff, + 0x4c, 0x02, 0x84, 0x04, 0xde, 0x06, 0x6e, 0x0a, 0x7d, 0x0d, 0xa5, 0x0e, 0xc5, 0x0e, 0xe3, 0x0d, + 0x98, 0x0c, 0x2b, 0x0b, 0x12, 0x09, 0xc8, 0x06, 0xd5, 0x04, 0x03, 0x03, 0xbd, 0x00, 0x02, 0xfe, + 0x4a, 0xfb, 0x9c, 0xf9, 0xe1, 0xf8, 0xfc, 0xf8, 0xba, 0xf9, 0x11, 0xfa, 0x21, 0xfa, 0x2d, 0xfa, + 0xbf, 0xf9, 0x6f, 0xf9, 0x1a, 0xf9, 0xbe, 0xf7, 0x3c, 0xf6, 0xa8, 0xf5, 0x9e, 0xf6, 0xfb, 0xf7, + 0x28, 0xf9, 0x6c, 0xfa, 0x4e, 0xfc, 0xf4, 0xfe, 0x8b, 0x01, 0xa0, 0x03, 0xf5, 0x05, 0x84, 0x09, + 0x93, 0x0c, 0x36, 0x0e, 0xab, 0x0e, 0x02, 0x0e, 0x14, 0x0d, 0xcd, 0x0b, 0xbf, 0x09, 0x76, 0x07, + 0x58, 0x05, 0x92, 0x03, 0x5b, 0x01, 0x9a, 0xfe, 0xeb, 0xfb, 0x16, 0xfa, 0x1c, 0xf9, 0x23, 0xf9, + 0xb3, 0xf9, 0x08, 0xfa, 0x58, 0xfa, 0x67, 0xfa, 0xec, 0xf9, 0xd0, 0xf9, 0x7b, 0xf9, 0x3c, 0xf8, + 0x92, 0xf6, 0xd9, 0xf5, 0x77, 0xf6, 0x97, 0xf7, 0xb1, 0xf8, 0xe2, 0xf9, 0xa7, 0xfb, 0x2c, 0xfe, + 0xcf, 0x00, 0xd7, 0x02, 0x62, 0x05, 0xd0, 0x08, 0xe3, 0x0b, 0xd2, 0x0d, 0x63, 0x0e, 0xfd, 0x0d, + 0x47, 0x0d, 0x10, 0x0c, 0x06, 0x0a, 0xb6, 0x07, 0xa1, 0x05, 0xec, 0x03, 0xaf, 0x01, 0xd4, 0xfe, + 0x23, 0xfc, 0xe1, 0xf9, 0xa8, 0xf8, 0x72, 0xf8, 0xd4, 0xf8, 0x3f, 0xf9, 0x95, 0xf9, 0xa9, 0xf9, + 0x4c, 0xf9, 0x32, 0xf9, 0x1b, 0xf9, 0xe2, 0xf7, 0x3a, 0xf6, 0x8f, 0xf5, 0x08, 0xf6, 0x07, 0xf7, + 0x0f, 0xf8, 0x17, 0xf9, 0xc9, 0xfa, 0x94, 0xfd, 0x09, 0x00, 0x29, 0x02, 0xe9, 0x04, 0x5f, 0x08, + 0xb3, 0x0b, 0x2a, 0x0e, 0x0e, 0x0f, 0x15, 0x0f, 0xa1, 0x0e, 0x9d, 0x0d, 0xd7, 0x0b, 0x93, 0x09, + 0x95, 0x07, 0xda, 0x05, 0xa3, 0x03, 0xe1, 0x00, 0x34, 0xfe, 0xb6, 0xfb, 0x1c, 0xfa, 0xcb, 0xf9, + 0xf4, 0xf9, 0x88, 0xfa, 0x07, 0xfb, 0xe6, 0xfa, 0x84, 0xfa, 0xa0, 0xfa, 0x7e, 0xfa, 0x45, 0xf9, + 0x88, 0xf7, 0x82, 0xf6, 0x9c, 0xf6, 0x7a, 0xf7, 0x77, 0xf8, 0x35, 0xf9, 0xb7, 0xfa, 0x2f, 0xfd, + 0x63, 0xff, 0x66, 0x01, 0xd8, 0x03, 0x13, 0x07, 0x55, 0x0a, 0xcd, 0x0c, 0x0b, 0x0e, 0x4a, 0x0e, + 0x02, 0x0e, 0x20, 0x0d, 0x47, 0x0b, 0x11, 0x09, 0x00, 0x07, 0x58, 0x05, 0x24, 0x03, 0x75, 0x00, + 0xc6, 0xfd, 0x0b, 0xfb, 0xab, 0xf9, 0xf0, 0xf8, 0x0c, 0xf9, 0x86, 0xf9, 0x0e, 0xfa, 0x26, 0xfa, + 0xe7, 0xf9, 0x2d, 0xfa, 0x0b, 0xfa, 0xfe, 0xf8, 0x72, 0xf7, 0x95, 0xf6, 0x88, 0xf6, 0x3e, 0xf7, + 0x06, 0xf8, 0xa1, 0xf8, 0x1b, 0xfa, 0x85, 0xfc, 0x92, 0xfe, 0x74, 0x00, 0xd3, 0x02, 0xd3, 0x05, + 0x52, 0x09, 0x21, 0x0c, 0xa9, 0x0d, 0x51, 0x0e, 0x41, 0x0e, 0x93, 0x0d, 0xe9, 0x0b, 0xa9, 0x09, + 0xd8, 0x07, 0x29, 0x06, 0x09, 0x04, 0xbd, 0x01, 0xe4, 0xfe, 0x35, 0xfc, 0x6f, 0xfa, 0x65, 0xf9, + 0x5f, 0xf9, 0xd1, 0xf9, 0x37, 0xfa, 0x62, 0xfa, 0x51, 0xfa, 0x7c, 0xfa, 0x95, 0xfa, 0xa3, 0xf9, + 0x48, 0xf8, 0x44, 0xf7, 0x24, 0xf7, 0xd2, 0xf7, 0x4e, 0xf8, 0xd6, 0xf8, 0x27, 0xfa, 0x52, 0xfc, + 0x6f, 0xfe, 0x61, 0x00, 0xb6, 0x02, 0xb3, 0x05, 0x01, 0x09, 0xdc, 0x0b, 0xbc, 0x0d, 0x7c, 0x0e, + 0x99, 0x0e, 0x3d, 0x0e, 0xc3, 0x0c, 0xe9, 0x0a, 0x19, 0x09, 0x36, 0x07, 0x51, 0x05, 0xed, 0x02, + 0xec, 0xff, 0x28, 0xfd, 0x1e, 0xfb, 0xde, 0xf9, 0x71, 0xf9, 0xc9, 0xf9, 0x59, 0xfa, 0x5f, 0xfa, + 0x6b, 0xfa, 0xd2, 0xfa, 0xde, 0xfa, 0xeb, 0xf9, 0x99, 0xf8, 0x37, 0xf7, 0xe3, 0xf6, 0x94, 0xf7, + 0xda, 0xf7, 0x40, 0xf8, 0x9a, 0xf9, 0xa0, 0xfb, 0x95, 0xfd, 0x5a, 0xff, 0x4a, 0x01, 0x2b, 0x04, + 0x6d, 0x07, 0x56, 0x0a, 0x5f, 0x0c, 0x54, 0x0d, 0xa5, 0x0d, 0x79, 0x0d, 0x32, 0x0c, 0x5e, 0x0a, + 0x9e, 0x08, 0xc0, 0x06, 0xfa, 0x04, 0xb4, 0x02, 0xe9, 0xff, 0x06, 0xfd, 0xd8, 0xfa, 0x85, 0xf9, + 0xfd, 0xf8, 0x52, 0xf9, 0xeb, 0xf9, 0x1b, 0xfa, 0x1e, 0xfa, 0x9a, 0xfa, 0xad, 0xfa, 0x3b, 0xfa, + 0xe5, 0xf8, 0x8d, 0xf7, 0x60, 0xf7, 0xe7, 0xf7, 0x55, 0xf8, 0xcd, 0xf8, 0x0f, 0xfa, 0xdf, 0xfb, + 0xd8, 0xfd, 0xaa, 0xff, 0x9b, 0x01, 0x4c, 0x04, 0x92, 0x07, 0xc3, 0x0a, 0xeb, 0x0c, 0x28, 0x0e, + 0x0c, 0x0f, 0x08, 0x0f, 0xe1, 0x0d, 0x1c, 0x0c, 0x16, 0x0a, 0x72, 0x08, 0x9f, 0x06, 0x69, 0x04, + 0xb3, 0x01, 0xd9, 0xfe, 0x64, 0xfc, 0x7f, 0xfa, 0x97, 0xf9, 0xa2, 0xf9, 0xdf, 0xf9, 0xad, 0xf9, + 0xe0, 0xf9, 0x41, 0xfa, 0x57, 0xfa, 0xf4, 0xf9, 0x89, 0xf8, 0x07, 0xf7, 0xa1, 0xf6, 0xe3, 0xf6, + 0xe5, 0xf6, 0x14, 0xf7, 0x25, 0xf8, 0xf2, 0xf9, 0xbf, 0xfb, 0x69, 0xfd, 0x66, 0xff, 0xef, 0x01, + 0x32, 0x05, 0x47, 0x08, 0x98, 0x0a, 0x3e, 0x0c, 0x69, 0x0d, 0xb1, 0x0d, 0xfa, 0x0c, 0x8e, 0x0b, + 0xc6, 0x09, 0x0c, 0x08, 0x75, 0x06, 0x8b, 0x04, 0xe0, 0x01, 0x1e, 0xff, 0x9c, 0xfc, 0xb7, 0xfa, + 0xb4, 0xf9, 0xd8, 0xf9, 0x1d, 0xfa, 0x3b, 0xfa, 0x62, 0xfa, 0xc9, 0xfa, 0x17, 0xfb, 0xb3, 0xfa, + 0x64, 0xf9, 0xf7, 0xf7, 0x8e, 0xf7, 0x8d, 0xf7, 0x6c, 0xf7, 0x9c, 0xf7, 0x66, 0xf8, 0xf5, 0xf9, + 0xc6, 0xfb, 0x43, 0xfd, 0x34, 0xff, 0x82, 0x01, 0xa8, 0x04, 0xe5, 0x07, 0x4d, 0x0a, 0x42, 0x0c, + 0x95, 0x0d, 0x11, 0x0e, 0x98, 0x0d, 0x21, 0x0c, 0x7b, 0x0a, 0xd3, 0x08, 0x4a, 0x07, 0x8b, 0x05, + 0xff, 0x02, 0x2d, 0x00, 0x9a, 0xfd, 0x3b, 0xfb, 0x11, 0xfa, 0xfa, 0xf9, 0xe9, 0xf9, 0x07, 0xfa, + 0x1d, 0xfa, 0x81, 0xfa, 0x25, 0xfb, 0xe9, 0xfa, 0xb2, 0xf9, 0x7d, 0xf8, 0xf9, 0xf7, 0xfd, 0xf7, + 0xe2, 0xf7, 0xfd, 0xf7, 0x9a, 0xf8, 0x0c, 0xfa, 0xaa, 0xfb, 0x28, 0xfd, 0xe6, 0xfe, 0x29, 0x01, + 0x2e, 0x04, 0x4f, 0x07, 0xc4, 0x09, 0xe3, 0x0b, 0x5b, 0x0d, 0x00, 0x0e, 0xbd, 0x0d, 0x7b, 0x0c, + 0xa6, 0x0a, 0xeb, 0x08, 0x6c, 0x07, 0xaa, 0x05, 0x3b, 0x03, 0x87, 0x00, 0xb7, 0xfd, 0x1d, 0xfb, + 0xe4, 0xf9, 0x78, 0xf9, 0x4a, 0xf9, 0x46, 0xf9, 0x63, 0xf9, 0xc4, 0xf9, 0x73, 0xfa, 0x4e, 0xfa, + 0x30, 0xf9, 0x16, 0xf8, 0x74, 0xf7, 0x4c, 0xf7, 0x21, 0xf7, 0xfd, 0xf6, 0x9c, 0xf7, 0x02, 0xf9, + 0x8c, 0xfa, 0x26, 0xfc, 0xd0, 0xfd, 0xd5, 0xff, 0xd0, 0x02, 0xd9, 0x05, 0x6c, 0x08, 0xb9, 0x0a, + 0x61, 0x0c, 0x51, 0x0d, 0x5b, 0x0d, 0x76, 0x0c, 0xf2, 0x0a, 0x3a, 0x09, 0xbe, 0x07, 0x3d, 0x06, + 0x16, 0x04, 0x9a, 0x01, 0x8e, 0xfe, 0xd4, 0xfb, 0x6c, 0xfa, 0xdd, 0xf9, 0x8f, 0xf9, 0x71, 0xf9, + 0x7c, 0xf9, 0xf3, 0xf9, 0x8c, 0xfa, 0x83, 0xfa, 0x84, 0xf9, 0x47, 0xf8, 0xb9, 0xf7, 0x99, 0xf7, + 0x73, 0xf7, 0x51, 0xf7, 0xc8, 0xf7, 0xcf, 0xf8, 0x4e, 0xfa, 0xd0, 0xfb, 0x3b, 0xfd, 0x55, 0xff, + 0x18, 0x02, 0x09, 0x05, 0xde, 0x07, 0x95, 0x0a, 0x81, 0x0c, 0x9d, 0x0d, 0x06, 0x0e, 0x62, 0x0d, + 0xf8, 0x0b, 0x5a, 0x0a, 0x10, 0x09, 0x81, 0x07, 0x67, 0x05, 0x06, 0x03, 0xf8, 0xff, 0x2b, 0xfd, + 0x4e, 0xfb, 0x54, 0xfa, 0xe7, 0xf9, 0xb1, 0xf9, 0x76, 0xf9, 0x02, 0xfa, 0xa8, 0xfa, 0x93, 0xfa, + 0xa3, 0xf9, 0x7b, 0xf8, 0xda, 0xf7, 0x86, 0xf7, 0x68, 0xf7, 0x2a, 0xf7, 0x99, 0xf7, 0xa5, 0xf8, + 0x26, 0xfa, 0xbd, 0xfb, 0x28, 0xfd, 0x32, 0xff, 0xbd, 0x01, 0x96, 0x04, 0x51, 0x07, 0xea, 0x09, + 0x15, 0x0c, 0x95, 0x0d, 0x37, 0x0e, 0xaa, 0x0d, 0x42, 0x0c, 0xd9, 0x0a, 0x5d, 0x09, 0xb1, 0x07, + 0x04, 0x06, 0xac, 0x03, 0x89, 0x00, 0xc6, 0xfd, 0xbb, 0xfb, 0x9e, 0xfa, 0x0c, 0xfa, 0xaa, 0xf9, + 0x77, 0xf9, 0xdd, 0xf9, 0xc4, 0xfa, 0xf2, 0xfa, 0x23, 0xfa, 0x29, 0xf9, 0x6a, 0xf8, 0x04, 0xf8, + 0xb8, 0xf7, 0x99, 0xf7, 0xaa, 0xf7, 0x7e, 0xf8, 0xd5, 0xf9, 0x47, 0xfb, 0xb4, 0xfc, 0x87, 0xfe, + 0xee, 0x00, 0xc2, 0x03, 0xa5, 0x06, 0x6e, 0x09, 0xc6, 0x0b, 0x8d, 0x0d, 0xbb, 0x0e, 0x87, 0x0e, + 0x5e, 0x0d, 0x10, 0x0c, 0x87, 0x0a, 0x1d, 0x09, 0xb1, 0x07, 0x5d, 0x05, 0x4b, 0x02, 0x5c, 0xff, + 0xfa, 0xfc, 0x9c, 0xfb, 0xe0, 0xfa, 0x3b, 0xfa, 0xd3, 0xf9, 0x2d, 0xfa, 0xe2, 0xfa, 0x20, 0xfb, + 0x95, 0xfa, 0x8f, 0xf9, 0xd4, 0xf8, 0x46, 0xf8, 0xd5, 0xf7, 0x89, 0xf7, 0x93, 0xf7, 0x37, 0xf8, + 0x7f, 0xf9, 0xd0, 0xfa, 0x23, 0xfc, 0xf6, 0xfd, 0x26, 0x00, 0xd3, 0x02, 0x8f, 0x05, 0x53, 0x08, + 0xb8, 0x0a, 0xd0, 0x0c, 0x33, 0x0e, 0x1c, 0x0e, 0x21, 0x0d, 0xe6, 0x0b, 0x59, 0x0a, 0xbc, 0x08, + 0xfd, 0x06, 0xe3, 0x04, 0x00, 0x02, 0xfd, 0xfe, 0x76, 0xfc, 0xe0, 0xfa, 0x0c, 0xfa, 0x3d, 0xf9, + 0xea, 0xf8, 0x3a, 0xf9, 0x06, 0xfa, 0x84, 0xfa, 0xf2, 0xf9, 0x27, 0xf9, 0x70, 0xf8, 0xfa, 0xf7, + 0x97, 0xf7, 0x36, 0xf7, 0x33, 0xf7, 0xe4, 0xf7, 0x33, 0xf9, 0x7a, 0xfa, 0xb3, 0xfb, 0x5e, 0xfd, + 0x95, 0xff, 0x38, 0x02, 0x12, 0x05, 0xf1, 0x07, 0x61, 0x0a, 0xba, 0x0c, 0x53, 0x0e, 0x7a, 0x0e, + 0xd6, 0x0d, 0xa7, 0x0c, 0x20, 0x0b, 0xc6, 0x09, 0x64, 0x08, 0x38, 0x06, 0x53, 0x03, 0x34, 0x00, + 0x7d, 0xfd, 0xa4, 0xfb, 0x60, 0xfa, 0x75, 0xf9, 0xf1, 0xf8, 0x10, 0xf9, 0xa8, 0xf9, 0x17, 0xfa, + 0xac, 0xf9, 0xee, 0xf8, 0x48, 0xf8, 0xaf, 0xf7, 0x6b, 0xf7, 0xe5, 0xf6, 0xcf, 0xf6, 0x55, 0xf7, + 0x71, 0xf8, 0xae, 0xf9, 0xcf, 0xfa, 0x6d, 0xfc, 0x95, 0xfe, 0x02, 0x01, 0xe5, 0x03, 0xc2, 0x06, + 0x49, 0x09, 0xf3, 0x0b, 0xcf, 0x0d, 0x84, 0x0e, 0x4d, 0x0e, 0x20, 0x0d, 0xbb, 0x0b, 0x96, 0x0a, + 0x47, 0x09, 0x6d, 0x07, 0xd5, 0x04, 0xae, 0x01, 0xd8, 0xfe, 0xd8, 0xfc, 0x64, 0xfb, 0x3d, 0xfa, + 0x43, 0xf9, 0x2d, 0xf9, 0xef, 0xf9, 0x50, 0xfa, 0x0a, 0xfa, 0x62, 0xf9, 0x75, 0xf8, 0xe2, 0xf7, + 0x89, 0xf7, 0xee, 0xf6, 0xa8, 0xf6, 0xf1, 0xf6, 0xce, 0xf7, 0xe2, 0xf8, 0xf2, 0xf9, 0x6f, 0xfb, + 0x3f, 0xfd, 0x97, 0xff, 0x7d, 0x02, 0x1c, 0x05, 0xbf, 0x07, 0x6a, 0x0a, 0x63, 0x0c, 0x6a, 0x0d, + 0x76, 0x0d, 0x71, 0x0c, 0x27, 0x0b, 0xee, 0x09, 0x9c, 0x08, 0xf9, 0x06, 0x97, 0x04, 0xaa, 0x01, + 0xd4, 0xfe, 0xb8, 0xfc, 0x3b, 0xfb, 0xf9, 0xf9, 0xf7, 0xf8, 0xe3, 0xf8, 0x8f, 0xf9, 0x2e, 0xfa, + 0x37, 0xfa, 0xba, 0xf9, 0x09, 0xf9, 0x94, 0xf8, 0x47, 0xf8, 0x9c, 0xf7, 0x4b, 0xf7, 0xa0, 0xf7, + 0x4e, 0xf8, 0x36, 0xf9, 0x53, 0xfa, 0xa7, 0xfb, 0x55, 0xfd, 0xc0, 0xff, 0x7c, 0x02, 0x16, 0x05, + 0xbc, 0x07, 0x8a, 0x0a, 0xe7, 0x0c, 0x41, 0x0e, 0xb1, 0x0e, 0xe2, 0x0d, 0x9d, 0x0c, 0x63, 0x0b, + 0x12, 0x0a, 0x81, 0x08, 0x21, 0x06, 0x2a, 0x03, 0x3b, 0x00, 0xec, 0xfd, 0x31, 0xfc, 0x83, 0xfa, + 0x56, 0xf9, 0x29, 0xf9, 0xa5, 0xf9, 0x37, 0xfa, 0x50, 0xfa, 0xc7, 0xf9, 0x2c, 0xf9, 0x8b, 0xf8, + 0xf1, 0xf7, 0x7a, 0xf7, 0xe4, 0xf6, 0x1a, 0xf7, 0xcb, 0xf7, 0x69, 0xf8, 0x7e, 0xf9, 0xa3, 0xfa, + 0x59, 0xfc, 0xb0, 0xfe, 0x43, 0x01, 0xbd, 0x03, 0xa5, 0x06, 0x88, 0x09, 0xcf, 0x0b, 0xb9, 0x0d, + 0x30, 0x0e, 0xd6, 0x0d, 0xd3, 0x0c, 0x7d, 0x0b, 0x5a, 0x0a, 0x15, 0x09, 0xf5, 0x06, 0x1c, 0x04, + 0x31, 0x01, 0xce, 0xfe, 0xf0, 0xfc, 0x09, 0xfb, 0x9c, 0xf9, 0x17, 0xf9, 0x83, 0xf9, 0x0d, 0xfa, + 0x25, 0xfa, 0xcb, 0xf9, 0x25, 0xf9, 0x89, 0xf8, 0x16, 0xf8, 0x46, 0xf7, 0xa7, 0xf6, 0xb0, 0xf6, + 0xe1, 0xf6, 0x89, 0xf7, 0x9e, 0xf8, 0xb9, 0xf9, 0x2c, 0xfb, 0x74, 0xfd, 0xdb, 0xff, 0x6f, 0x02, + 0x4a, 0x05, 0x34, 0x08, 0xf1, 0x0a, 0x0c, 0x0d, 0x13, 0x0e, 0xf7, 0x0d, 0x1b, 0x0d, 0x1f, 0x0c, + 0x3a, 0x0b, 0x16, 0x0a, 0x3a, 0x08, 0x70, 0x05, 0x44, 0x02, 0xce, 0xff, 0xd5, 0xfd, 0xe9, 0xfb, + 0x54, 0xfa, 0xca, 0xf9, 0x4b, 0xfa, 0xf8, 0xfa, 0x63, 0xfb, 0x2e, 0xfb, 0x94, 0xfa, 0x16, 0xfa, + 0x98, 0xf9, 0xbc, 0xf8, 0x20, 0xf8, 0x03, 0xf8, 0x3b, 0xf8, 0xd3, 0xf8, 0xb2, 0xf9, 0x7f, 0xfa, + 0xe8, 0xfb, 0xbe, 0xfd, 0xb9, 0xff, 0x17, 0x02, 0xb2, 0x04, 0x8f, 0x07, 0x67, 0x0a, 0xa4, 0x0c, + 0xee, 0x0d, 0xe0, 0x0d, 0x01, 0x0d, 0xcb, 0x0b, 0x9a, 0x0a, 0x5a, 0x09, 0x88, 0x07, 0xbb, 0x04, + 0xd3, 0x01, 0x5f, 0xff, 0x25, 0xfd, 0x27, 0xfb, 0x74, 0xf9, 0xac, 0xf8, 0xb4, 0xf8, 0x34, 0xf9, + 0x64, 0xf9, 0x2e, 0xf9, 0x8d, 0xf8, 0x25, 0xf8, 0xa0, 0xf7, 0xdb, 0xf6, 0x54, 0xf6, 0x22, 0xf6, + 0x79, 0xf6, 0x27, 0xf7, 0xfd, 0xf7, 0xb8, 0xf8, 0x2b, 0xfa, 0x26, 0xfc, 0x17, 0xfe, 0x9e, 0x00, + 0x52, 0x03, 0x27, 0x06, 0x2a, 0x09, 0xb6, 0x0b, 0x51, 0x0d, 0xb5, 0x0d, 0xfe, 0x0c, 0x0c, 0x0c, + 0x2a, 0x0b, 0x66, 0x0a, 0x0c, 0x09, 0x9f, 0x06, 0xf5, 0x03, 0xa6, 0x01, 0x72, 0xff, 0x3b, 0xfd, + 0x2d, 0xfb, 0xf4, 0xf9, 0xf8, 0xf9, 0x78, 0xfa, 0xce, 0xfa, 0xc0, 0xfa, 0x76, 0xfa, 0x55, 0xfa, + 0xd6, 0xf9, 0x1a, 0xf9, 0x80, 0xf8, 0x27, 0xf8, 0x22, 0xf8, 0xaa, 0xf8, 0x29, 0xf9, 0xf6, 0xf9, + 0x34, 0xfb, 0xd4, 0xfc, 0xb5, 0xfe, 0xcd, 0x00, 0x20, 0x03, 0xb5, 0x05, 0x79, 0x08, 0x25, 0x0b, + 0x1d, 0x0d, 0xa2, 0x0d, 0x2b, 0x0d, 0x50, 0x0c, 0x6d, 0x0b, 0x78, 0x0a, 0xe1, 0x08, 0x6f, 0x06, + 0xba, 0x03, 0x44, 0x01, 0x15, 0xff, 0xc1, 0xfc, 0x81, 0xfa, 0x5b, 0xf9, 0x1a, 0xf9, 0x98, 0xf9, + 0x20, 0xfa, 0x03, 0xfa, 0xcc, 0xf9, 0xa3, 0xf9, 0x1e, 0xf9, 0x76, 0xf8, 0xd5, 0xf7, 0x4a, 0xf7, + 0x4e, 0xf7, 0xc8, 0xf7, 0x3b, 0xf8, 0xee, 0xf8, 0x19, 0xfa, 0x8f, 0xfb, 0x58, 0xfd, 0x71, 0xff, + 0xd8, 0x01, 0x8f, 0x04, 0x72, 0x07, 0x4e, 0x0a, 0x87, 0x0c, 0x87, 0x0d, 0x47, 0x0d, 0x65, 0x0c, + 0x80, 0x0b, 0xb1, 0x0a, 0x56, 0x09, 0x0a, 0x07, 0x60, 0x04, 0xec, 0x01, 0x9f, 0xff, 0x53, 0xfd, + 0x04, 0xfb, 0x7d, 0xf9, 0x2d, 0xf9, 0x86, 0xf9, 0xff, 0xf9, 0xdd, 0xf9, 0xd5, 0xf9, 0xcb, 0xf9, + 0x4e, 0xf9, 0xcb, 0xf8, 0x4a, 0xf8, 0xc8, 0xf7, 0xd1, 0xf7, 0x37, 0xf8, 0x8b, 0xf8, 0x39, 0xf9, + 0x23, 0xfa, 0x5d, 0xfb, 0x43, 0xfd, 0x4c, 0xff, 0x7c, 0x01, 0x15, 0x04, 0x07, 0x07, 0xee, 0x09, + 0x64, 0x0c, 0xaa, 0x0d, 0xb8, 0x0d, 0x01, 0x0d, 0x56, 0x0c, 0xb1, 0x0b, 0x75, 0x0a, 0x5b, 0x08, + 0xd7, 0x05, 0x81, 0x03, 0x15, 0x01, 0xa1, 0xfe, 0x33, 0xfc, 0x70, 0xfa, 0xa5, 0xf9, 0xbb, 0xf9, + 0x11, 0xfa, 0x1d, 0xfa, 0x47, 0xfa, 0x10, 0xfa, 0xaa, 0xf9, 0x46, 0xf9, 0x85, 0xf8, 0xd5, 0xf7, + 0xd9, 0xf7, 0xea, 0xf7, 0x33, 0xf8, 0xc9, 0xf8, 0x6e, 0xf9, 0x8b, 0xfa, 0x05, 0xfc, 0xe3, 0xfd, + 0x00, 0x00, 0x5c, 0x02, 0x3a, 0x05, 0x3b, 0x08, 0xf4, 0x0a, 0x94, 0x0c, 0xfd, 0x0c, 0x76, 0x0c, + 0xf1, 0x0b, 0x55, 0x0b, 0x65, 0x0a, 0x74, 0x08, 0xf3, 0x05, 0xbf, 0x03, 0x65, 0x01, 0xfa, 0xfe, + 0x8d, 0xfc, 0xb3, 0xfa, 0xca, 0xf9, 0xd8, 0xf9, 0x1c, 0xfa, 0x5b, 0xfa, 0x9e, 0xfa, 0x75, 0xfa, + 0x3c, 0xfa, 0xd9, 0xf9, 0x31, 0xf9, 0x95, 0xf8, 0x71, 0xf8, 0x9d, 0xf8, 0xf9, 0xf8, 0x85, 0xf9, + 0x05, 0xfa, 0x07, 0xfb, 0x75, 0xfc, 0x1a, 0xfe, 0x1f, 0x00, 0x57, 0x02, 0x0b, 0x05, 0x29, 0x08, + 0xf6, 0x0a, 0xcc, 0x0c, 0x58, 0x0d, 0xfa, 0x0c, 0x6d, 0x0c, 0xff, 0x0b, 0x03, 0x0b, 0x26, 0x09, + 0xfb, 0x06, 0xc0, 0x04, 0x97, 0x02, 0x18, 0x00, 0x85, 0xfd, 0x50, 0xfb, 0x1a, 0xfa, 0x02, 0xfa, + 0x1a, 0xfa, 0x46, 0xfa, 0x84, 0xfa, 0x9d, 0xfa, 0x7d, 0xfa, 0x20, 0xfa, 0x6a, 0xf9, 0xd1, 0xf8, + 0x95, 0xf8, 0x92, 0xf8, 0xea, 0xf8, 0x62, 0xf9, 0xf4, 0xf9, 0xf4, 0xfa, 0x38, 0xfc, 0xd7, 0xfd, + 0xb7, 0xff, 0xbb, 0x01, 0x4d, 0x04, 0x3f, 0x07, 0x33, 0x0a, 0x64, 0x0c, 0x21, 0x0d, 0xd9, 0x0c, + 0x6a, 0x0c, 0x25, 0x0c, 0x54, 0x0b, 0x9e, 0x09, 0x8c, 0x07, 0x74, 0x05, 0x58, 0x03, 0xfb, 0x00, + 0x4c, 0xfe, 0xd8, 0xfb, 0x61, 0xfa, 0xda, 0xf9, 0xc4, 0xf9, 0xf4, 0xf9, 0x0d, 0xfa, 0x21, 0xfa, + 0x19, 0xfa, 0xc3, 0xf9, 0x11, 0xf9, 0x6f, 0xf8, 0xf0, 0xf7, 0xd7, 0xf7, 0x37, 0xf8, 0x76, 0xf8, + 0xf8, 0xf8, 0xe9, 0xf9, 0xf0, 0xfa, 0x88, 0xfc, 0x3e, 0xfe, 0x37, 0x00, 0xaf, 0x02, 0xb3, 0x05, + 0xdc, 0x08, 0x44, 0x0b, 0x7c, 0x0c, 0x8b, 0x0c, 0x3d, 0x0c, 0x0a, 0x0c, 0x56, 0x0b, 0xc4, 0x09, + 0x00, 0x08, 0xe6, 0x05, 0xd0, 0x03, 0x87, 0x01, 0xc4, 0xfe, 0x3e, 0xfc, 0x81, 0xfa, 0xb5, 0xf9, + 0x80, 0xf9, 0xc4, 0xf9, 0x02, 0xfa, 0x29, 0xfa, 0x78, 0xfa, 0x33, 0xfa, 0x99, 0xf9, 0x09, 0xf9, + 0x90, 0xf8, 0x91, 0xf8, 0xc1, 0xf8, 0x04, 0xf9, 0x8e, 0xf9, 0x2b, 0xfa, 0x68, 0xfb, 0xce, 0xfc, + 0x63, 0xfe, 0x4b, 0x00, 0x7b, 0x02, 0x7d, 0x05, 0x92, 0x08, 0x3e, 0x0b, 0xad, 0x0c, 0xc8, 0x0c, + 0xa1, 0x0c, 0x7e, 0x0c, 0xe8, 0x0b, 0x89, 0x0a, 0x93, 0x08, 0x8e, 0x06, 0x99, 0x04, 0x5e, 0x02, + 0x99, 0xff, 0xee, 0xfc, 0x06, 0xfb, 0xc9, 0xf9, 0x5c, 0xf9, 0x5d, 0xf9, 0x5d, 0xf9, 0xa3, 0xf9, + 0xcb, 0xf9, 0x8f, 0xf9, 0x0e, 0xf9, 0x57, 0xf8, 0xd1, 0xf7, 0xb5, 0xf7, 0xaf, 0xf7, 0xea, 0xf7, + 0x4e, 0xf8, 0xe6, 0xf8, 0x0c, 0xfa, 0x85, 0xfb, 0x3f, 0xfd, 0x04, 0xff, 0x27, 0x01, 0xe3, 0x03, + 0x22, 0x07, 0x16, 0x0a, 0xc2, 0x0b, 0x24, 0x0c, 0x40, 0x0c, 0x30, 0x0c, 0xcd, 0x0b, 0xb8, 0x0a, + 0xe5, 0x08, 0x30, 0x07, 0x78, 0x05, 0x72, 0x03, 0xb4, 0x00, 0xf0, 0xfd, 0xe0, 0xfb, 0x69, 0xfa, + 0xd0, 0xf9, 0xb5, 0xf9, 0xb5, 0xf9, 0xf9, 0xf9, 0x36, 0xfa, 0xf3, 0xf9, 0x86, 0xf9, 0xe2, 0xf8, + 0x37, 0xf8, 0xfe, 0xf7, 0x24, 0xf8, 0x2f, 0xf8, 0x5a, 0xf8, 0xd1, 0xf8, 0xaa, 0xf9, 0x12, 0xfb, + 0x89, 0xfc, 0x3d, 0xfe, 0x3d, 0x00, 0xec, 0x02, 0x45, 0x06, 0x61, 0x09, 0x26, 0x0b, 0xf1, 0x0b, + 0x2e, 0x0c, 0x3d, 0x0c, 0x07, 0x0c, 0x32, 0x0b, 0xb9, 0x09, 0xea, 0x07, 0x61, 0x06, 0x3f, 0x04, + 0x7e, 0x01, 0xf1, 0xfe, 0x6a, 0xfc, 0xb7, 0xfa, 0xff, 0xf9, 0xa8, 0xf9, 0xc4, 0xf9, 0x0b, 0xfa, + 0x6b, 0xfa, 0x6f, 0xfa, 0xec, 0xf9, 0x69, 0xf9, 0xb3, 0xf8, 0x5e, 0xf8, 0x66, 0xf8, 0x6e, 0xf8, + 0x94, 0xf8, 0x14, 0xf9, 0x1d, 0xfa, 0x62, 0xfb, 0xce, 0xfc, 0x67, 0xfe, 0x3c, 0x00, 0x9a, 0x02, + 0xc0, 0x05, 0xe7, 0x08, 0xd9, 0x0a, 0xcd, 0x0b, 0x55, 0x0c, 0x7e, 0x0c, 0x62, 0x0c, 0x81, 0x0b, + 0x1f, 0x0a, 0x65, 0x08, 0xec, 0x06, 0xee, 0x04, 0x58, 0x02, 0xa8, 0xff, 0xfa, 0xfc, 0xfd, 0xfa, + 0x06, 0xfa, 0x53, 0xf9, 0x42, 0xf9, 0x87, 0xf9, 0xe0, 0xf9, 0x04, 0xfa, 0xa6, 0xf9, 0xfe, 0xf8, + 0x35, 0xf8, 0xf3, 0xf7, 0xe3, 0xf7, 0xd7, 0xf7, 0x34, 0xf8, 0x9d, 0xf8, 0x6a, 0xf9, 0xca, 0xfa, + 0x49, 0xfc, 0xd1, 0xfd, 0x6a, 0xff, 0xb3, 0x01, 0xd2, 0x04, 0x21, 0x08, 0x68, 0x0a, 0x94, 0x0b, + 0x38, 0x0c, 0x96, 0x0c, 0xb1, 0x0c, 0xff, 0x0b, 0x94, 0x0a, 0xfd, 0x08, 0x7b, 0x07, 0x95, 0x05, + 0x3a, 0x03, 0xaa, 0x00, 0x10, 0xfe, 0x1b, 0xfc, 0xc8, 0xfa, 0x11, 0xfa, 0xc7, 0xf9, 0xf1, 0xf9, + 0x3a, 0xfa, 0x65, 0xfa, 0x45, 0xfa, 0xb6, 0xf9, 0x2e, 0xf9, 0xcd, 0xf8, 0xac, 0xf8, 0x7b, 0xf8, + 0x84, 0xf8, 0xbc, 0xf8, 0x61, 0xf9, 0x88, 0xfa, 0xf4, 0xfb, 0x64, 0xfd, 0xd9, 0xfe, 0xfe, 0x00, + 0x06, 0x04, 0x3d, 0x07, 0xb3, 0x09, 0x21, 0x0b, 0xd8, 0x0b, 0x35, 0x0c, 0x8c, 0x0c, 0xf2, 0x0b, + 0x9a, 0x0a, 0x61, 0x09, 0xdb, 0x07, 0x13, 0x06, 0xcc, 0x03, 0x34, 0x01, 0x7d, 0xfe, 0x5b, 0xfc, + 0xa3, 0xfa, 0x95, 0xf9, 0x35, 0xf9, 0x3d, 0xf9, 0xa4, 0xf9, 0xf0, 0xf9, 0xdd, 0xf9, 0x78, 0xf9, + 0xeb, 0xf8, 0x85, 0xf8, 0x90, 0xf8, 0x67, 0xf8, 0x41, 0xf8, 0x7f, 0xf8, 0x17, 0xf9, 0x2c, 0xfa, + 0x86, 0xfb, 0xe3, 0xfc, 0x25, 0xfe, 0xd9, 0xff, 0xd3, 0x02, 0x05, 0x06, 0x93, 0x08, 0x39, 0x0a, + 0x13, 0x0b, 0xa4, 0x0b, 0xe0, 0x0b, 0x79, 0x0b, 0x60, 0x0a, 0x11, 0x09, 0x9b, 0x07, 0xea, 0x05, + 0xc9, 0x03, 0x22, 0x01, 0xa0, 0xfe, 0x66, 0xfc, 0xcb, 0xfa, 0xd9, 0xf9, 0x67, 0xf9, 0xa2, 0xf9, + 0x28, 0xfa, 0xa6, 0xfa, 0xac, 0xfa, 0x24, 0xfa, 0x8d, 0xf9, 0x00, 0xf9, 0xb3, 0xf8, 0xd1, 0xf8, + 0xd6, 0xf8, 0xef, 0xf8, 0x58, 0xf9, 0x53, 0xfa, 0xb6, 0xfb, 0xfd, 0xfc, 0x3d, 0xfe, 0x14, 0x00, + 0xeb, 0x02, 0x12, 0x06, 0xc9, 0x08, 0x82, 0x0a, 0x5c, 0x0b, 0xf4, 0x0b, 0x4d, 0x0c, 0xe9, 0x0b, + 0xf8, 0x0a, 0x01, 0x0a, 0xad, 0x08, 0x5f, 0x07, 0xc1, 0x05, 0x58, 0x03, 0x05, 0x01, 0xd7, 0xfe, + 0xe7, 0xfc, 0x83, 0xfb, 0xc8, 0xfa, 0x8c, 0xfa, 0xb8, 0xfa, 0x0c, 0xfb, 0x1c, 0xfb, 0xc3, 0xfa, + 0x05, 0xfa, 0x4d, 0xf9, 0x3d, 0xf9, 0xf4, 0xf8, 0xb9, 0xf8, 0xcf, 0xf8, 0xf6, 0xf8, 0xb5, 0xf9, + 0x0c, 0xfb, 0x40, 0xfc, 0x38, 0xfd, 0x9e, 0xfe, 0x07, 0x01, 0x00, 0x04, 0xbe, 0x06, 0x82, 0x08, + 0x60, 0x09, 0x39, 0x0a, 0xa9, 0x0a, 0xa9, 0x0a, 0x30, 0x0a, 0x1c, 0x09, 0x13, 0x08, 0xe7, 0x06, + 0x6c, 0x05, 0x6e, 0x03, 0x33, 0x01, 0x6e, 0xfe, 0xdb, 0xfc, 0x1d, 0xfb, 0xf9, 0xf9, 0x39, 0xfa, + 0x69, 0xfa, 0x43, 0xfb, 0x4d, 0xfb, 0x4d, 0xfb, 0xe1, 0xfa, 0x22, 0xfa, 0xca, 0xf9, 0x66, 0xf9, + 0xe6, 0xf8, 0xb6, 0xf8, 0xf5, 0xf8, 0x83, 0xf9, 0xbe, 0xfa, 0xfc, 0xfb, 0x0a, 0xfd, 0x53, 0xfe, + 0x9c, 0x00, 0xb6, 0x03, 0x54, 0x06, 0xf6, 0x07, 0xf7, 0x08, 0x42, 0x0a, 0x28, 0x0b, 0xf4, 0x0a, + 0x58, 0x0a, 0x17, 0x09, 0x1a, 0x08, 0x0f, 0x07, 0xdb, 0x05, 0xcf, 0x03, 0x53, 0x01, 0x2f, 0xff, + 0x1c, 0xfd, 0xa0, 0xfb, 0x5e, 0xfa, 0xed, 0xf9, 0x7a, 0xfa, 0x5f, 0xfb, 0xa5, 0xfb, 0xaf, 0xfb, + 0x3b, 0xfb, 0x74, 0xfa, 0x25, 0xfa, 0xaa, 0xf9, 0x6e, 0xf9, 0x1f, 0xf9, 0x21, 0xf9, 0x96, 0xf9, + 0xb5, 0xfa, 0xb9, 0xfb, 0x52, 0xfc, 0x6f, 0xfd, 0x56, 0xff, 0xcd, 0x01, 0xd9, 0x04, 0xfa, 0x06, + 0x7d, 0x08, 0xab, 0x09, 0x69, 0x0a, 0xc1, 0x0a, 0x64, 0x0a, 0x92, 0x09, 0xbc, 0x08, 0xa4, 0x07, + 0x62, 0x06, 0xae, 0x04, 0xb3, 0x02, 0x57, 0x00, 0xfc, 0xfd, 0x87, 0xfc, 0x7b, 0xfb, 0xce, 0xfa, + 0xa9, 0xfa, 0x0b, 0xfb, 0xb3, 0xfb, 0xd6, 0xfb, 0x7a, 0xfb, 0x05, 0xfb, 0x9f, 0xfa, 0xd7, 0xf9, + 0xa4, 0xf9, 0x68, 0xf9, 0x0a, 0xf9, 0x63, 0xf9, 0x13, 0xfa, 0x03, 0xfb, 0xc3, 0xfb, 0xa7, 0xfc, + 0x57, 0xfe, 0xcf, 0x00, 0x75, 0x03, 0xce, 0x05, 0x81, 0x07, 0x2a, 0x09, 0xe4, 0x09, 0x31, 0x0a, + 0x1a, 0x0a, 0x2f, 0x09, 0x54, 0x08, 0x7f, 0x07, 0x7c, 0x06, 0xa7, 0x04, 0x7d, 0x02, 0x90, 0x00, + 0xb4, 0xfe, 0xf3, 0xfc, 0x85, 0xfb, 0xb9, 0xfa, 0x92, 0xfa, 0xf8, 0xfa, 0x97, 0xfb, 0xe5, 0xfb, + 0xb0, 0xfb, 0x25, 0xfb, 0xa5, 0xfa, 0x5e, 0xfa, 0x35, 0xfa, 0xd7, 0xf9, 0x32, 0xf9, 0xc6, 0xf9, + 0xdd, 0xfa, 0xd1, 0xfb, 0x83, 0xfc, 0x10, 0xfd, 0xa1, 0xfe, 0x06, 0x01, 0xee, 0x03, 0x50, 0x06, + 0xfb, 0x07, 0x56, 0x09, 0x4c, 0x0a, 0xf5, 0x0a, 0xc5, 0x0a, 0x0b, 0x0a, 0x20, 0x09, 0x2c, 0x08, + 0x2c, 0x07, 0x86, 0x05, 0x5b, 0x03, 0xb7, 0x00, 0xa9, 0xfe, 0xcd, 0xfc, 0x39, 0xfb, 0x43, 0xfa, + 0xba, 0xf9, 0x53, 0xfa, 0x00, 0xfb, 0x5e, 0xfb, 0x69, 0xfb, 0xd1, 0xfa, 0x2e, 0xfa, 0x52, 0xf9, + 0xd8, 0xf8, 0x53, 0xf8, 0xc6, 0xf7, 0xe2, 0xf7, 0x8c, 0xf8, 0x6f, 0xf9, 0x8e, 0xfa, 0x82, 0xfb, + 0x79, 0xfd, 0x59, 0x00, 0x69, 0x03, 0x20, 0x06, 0x07, 0x08, 0x9a, 0x09, 0x2c, 0x0a, 0x0c, 0x0a, + 0xe9, 0x09, 0x37, 0x09, 0xb8, 0x08, 0x01, 0x08, 0x79, 0x07, 0xa8, 0x06, 0x3e, 0x05, 0x41, 0x03, + 0xf6, 0x00, 0xcb, 0xfe, 0x47, 0xfd, 0xed, 0xfb, 0x41, 0xfb, 0xb2, 0xfb, 0x9c, 0xfc, 0x66, 0xfd, + 0x71, 0xfd, 0xf7, 0xfc, 0xf1, 0xfb, 0xac, 0xfa, 0x5c, 0xf9, 0xcf, 0xf7, 0xb2, 0xf6, 0x5a, 0xf6, + 0xec, 0xf6, 0xed, 0xf7, 0x5e, 0xf9, 0x7e, 0xfa, 0x1f, 0xfc, 0x62, 0xfe, 0xd1, 0x00, 0x63, 0x03, + 0xfb, 0x04, 0x44, 0x06, 0x49, 0x07, 0x29, 0x08, 0x73, 0x08, 0x5c, 0x08, 0x92, 0x08, 0x60, 0x08, + 0xe8, 0x07, 0x49, 0x07, 0x0d, 0x06, 0x4b, 0x04, 0x06, 0x02, 0x06, 0x00, 0x94, 0xfe, 0x64, 0xfd, + 0xb8, 0xfc, 0xf8, 0xfc, 0xe4, 0xfd, 0xf4, 0xfe, 0x50, 0xff, 0xd4, 0xfe, 0xf3, 0xfd, 0xfb, 0xfc, + 0x0e, 0xfc, 0xb5, 0xfa, 0x76, 0xf9, 0xd5, 0xf8, 0x63, 0xf8, 0x98, 0xf8, 0x00, 0xf9, 0x12, 0xf9, + 0xe7, 0xf9, 0x24, 0xfb, 0x56, 0xfd, 0x11, 0x00, 0x45, 0x02, 0x2e, 0x04, 0xb6, 0x05, 0xe2, 0x06, + 0xb1, 0x07, 0x02, 0x08, 0x65, 0x08, 0x41, 0x08, 0x2f, 0x08, 0x2b, 0x08, 0x97, 0x07, 0x8b, 0x06, + 0xa9, 0x04, 0xae, 0x02, 0x03, 0x01, 0x7b, 0xff, 0x87, 0xfe, 0x49, 0xfe, 0xe1, 0xfe, 0xe9, 0xff, + 0x6e, 0x00, 0x4b, 0x00, 0x69, 0xff, 0x81, 0xfe, 0x79, 0xfd, 0xa8, 0xfb, 0x1b, 0xfa, 0xe4, 0xf8, + 0xdb, 0xf7, 0xb1, 0xf7, 0x8c, 0xf7, 0x5c, 0xf7, 0xac, 0xf7, 0x6b, 0xf8, 0xfa, 0xf9, 0x37, 0xfc, + 0x4e, 0xfe, 0x51, 0x00, 0x29, 0x02, 0x7b, 0x03, 0xb5, 0x04, 0x5c, 0x05, 0xe0, 0x05, 0x05, 0x06, + 0x40, 0x06, 0x74, 0x06, 0xba, 0x06, 0xb3, 0x06, 0xea, 0x05, 0x95, 0x04, 0x1f, 0x03, 0x99, 0x01, + 0x6b, 0x00, 0xd0, 0xff, 0xf2, 0xff, 0xd8, 0x00, 0x77, 0x01, 0x7b, 0x01, 0xf8, 0x00, 0x1d, 0x00, + 0xc7, 0xfe, 0x1e, 0xfd, 0xc9, 0xfb, 0x98, 0xfa, 0x9b, 0xf9, 0x08, 0xf9, 0x6e, 0xf8, 0x12, 0xf8, + 0x08, 0xf8, 0x4e, 0xf8, 0xf6, 0xf8, 0xc6, 0xfa, 0xec, 0xfc, 0x09, 0xff, 0xdf, 0x00, 0x6b, 0x02, + 0xc5, 0x03, 0xb1, 0x04, 0x2e, 0x05, 0x56, 0x05, 0x4a, 0x05, 0x60, 0x05, 0xa9, 0x05, 0xe0, 0x05, + 0xbe, 0x05, 0x04, 0x05, 0xe0, 0x03, 0x67, 0x02, 0x23, 0x01, 0x3d, 0x00, 0x09, 0x00, 0x6c, 0x00, + 0x34, 0x01, 0xd4, 0x01, 0x4a, 0x02, 0xd7, 0x01, 0xf6, 0x00, 0x5c, 0xff, 0x7a, 0xfd, 0x47, 0xfb, + 0xba, 0xf9, 0xb7, 0xf8, 0x00, 0xf9, 0x47, 0xf8, 0xbd, 0xf6, 0x72, 0xf7, 0x0f, 0xf8, 0xb8, 0xf9, + 0xda, 0xfb, 0x69, 0xfe, 0x3a, 0x00, 0x2f, 0x01, 0x0b, 0x03, 0xf4, 0x03, 0xfe, 0x04, 0x2c, 0x06, + 0x34, 0x06, 0x25, 0x06, 0x95, 0x05, 0x5e, 0x05, 0x9d, 0x05, 0xee, 0x05, 0x90, 0x05, 0x7d, 0x04, + 0xdf, 0x02, 0x66, 0x01, 0x1a, 0x00, 0x20, 0x00, 0xd9, 0x00, 0x17, 0x02, 0x8c, 0x02, 0xe9, 0x01, + 0xc6, 0x00, 0x06, 0xff, 0x22, 0xfd, 0x11, 0xfc, 0x55, 0xfb, 0x31, 0xfa, 0x67, 0xf9, 0x80, 0xf9, + 0x0f, 0xfa, 0x88, 0xf9, 0x66, 0xf8, 0x41, 0xf8, 0x85, 0xf9, 0xba, 0xfb, 0x74, 0xfe, 0x21, 0x01, + 0x38, 0x03, 0x29, 0x04, 0xd8, 0x04, 0xc5, 0x04, 0x5d, 0x04, 0xf7, 0x03, 0x8d, 0x03, 0xff, 0x03, + 0xab, 0x04, 0x9e, 0x05, 0x4b, 0x06, 0x69, 0x06, 0x48, 0x05, 0xfc, 0x03, 0x11, 0x02, 0x6e, 0x01, + 0xa2, 0x01, 0xe9, 0x01, 0x6d, 0x02, 0x50, 0x02, 0xce, 0x01, 0xbe, 0x00, 0x3b, 0xff, 0x6d, 0xfd, + 0x74, 0xfc, 0x0e, 0xfc, 0x4a, 0xfb, 0xc7, 0xfa, 0x03, 0xfa, 0x07, 0xf9, 0xb1, 0xf8, 0xe3, 0xf8, + 0xc0, 0xf9, 0x72, 0xfb, 0x3b, 0xfd, 0x93, 0xfe, 0x1f, 0x00, 0x67, 0x01, 0xa8, 0x02, 0x30, 0x03, + 0x4e, 0x03, 0xa3, 0x03, 0x92, 0x03, 0xe5, 0x03, 0x6e, 0x04, 0x10, 0x05, 0x01, 0x05, 0x40, 0x04, + 0x3b, 0x03, 0x09, 0x02, 0x8b, 0x01, 0x70, 0x01, 0x92, 0x01, 0xde, 0x01, 0x21, 0x02, 0x5b, 0x02, + 0x7d, 0x02, 0xa4, 0x01, 0x09, 0x00, 0x93, 0xfe, 0xb2, 0xfd, 0x6d, 0xfd, 0xb1, 0xfc, 0xaf, 0xfb, + 0xa1, 0xfa, 0x71, 0xf9, 0xa5, 0xf8, 0x73, 0xf8, 0x65, 0xf9, 0xfd, 0xfa, 0xf3, 0xfc, 0xf7, 0xfe, + 0xcd, 0x00, 0x6d, 0x02, 0x57, 0x03, 0xa1, 0x03, 0x7f, 0x03, 0x91, 0x03, 0x96, 0x03, 0x47, 0x03, + 0xbb, 0x02, 0x9e, 0x02, 0x8a, 0x02, 0x21, 0x02, 0x59, 0x01, 0xb1, 0x00, 0x85, 0x00, 0x9c, 0x00, + 0xee, 0x00, 0x55, 0x01, 0xd7, 0x01, 0x10, 0x02, 0x01, 0x02, 0x7a, 0x01, 0x5c, 0x00, 0x3a, 0xff, + 0x43, 0xfe, 0x40, 0xfd, 0x24, 0xfc, 0x53, 0xfb, 0xbc, 0xfa, 0x26, 0xfa, 0x96, 0xf9, 0x19, 0xf9, + 0xd2, 0xf9, 0x10, 0xfb, 0x91, 0xfc, 0x74, 0xfe, 0x23, 0x00, 0xcc, 0x01, 0xca, 0x02, 0x3f, 0x03, + 0x83, 0x03, 0xdb, 0x03, 0xf5, 0x03, 0xaa, 0x03, 0xaf, 0x03, 0xc2, 0x03, 0xa4, 0x03, 0x60, 0x03, + 0x7b, 0x02, 0x87, 0x01, 0xe3, 0x00, 0xa2, 0x00, 0xbb, 0x00, 0x41, 0x01, 0xfe, 0x01, 0x77, 0x02, + 0xbf, 0x02, 0x1d, 0x02, 0x41, 0x01, 0x8a, 0x00, 0xd6, 0xff, 0x34, 0xff, 0x50, 0xfe, 0x16, 0xfd, + 0x13, 0xfc, 0x43, 0xfb, 0x59, 0xfa, 0x8b, 0xf9, 0x2b, 0xf9, 0x5d, 0xf9, 0x94, 0xfa, 0x2d, 0xfc, + 0xfd, 0xfd, 0xa1, 0xff, 0x17, 0x01, 0xd4, 0x01, 0x09, 0x02, 0x36, 0x02, 0x33, 0x02, 0x5d, 0x02, + 0x8f, 0x02, 0xf8, 0x02, 0x91, 0x03, 0x94, 0x03, 0x1a, 0x03, 0x38, 0x02, 0x77, 0x01, 0xf1, 0x00, + 0xb1, 0x00, 0xf3, 0x00, 0x80, 0x01, 0x2e, 0x02, 0xb6, 0x02, 0x86, 0x02, 0x09, 0x02, 0x6b, 0x01, + 0x1a, 0x01, 0x93, 0x00, 0xc4, 0xff, 0x01, 0xff, 0x27, 0xfe, 0x59, 0xfd, 0x04, 0xfc, 0xba, 0xfa, + 0x29, 0xfa, 0x32, 0xfa, 0xe9, 0xfa, 0x2d, 0xfc, 0xb8, 0xfd, 0x4d, 0xff, 0xb1, 0x00, 0x84, 0x01, + 0x02, 0x02, 0x3f, 0x02, 0x36, 0x02, 0x4c, 0x02, 0x4e, 0x02, 0x75, 0x02, 0x8d, 0x02, 0x66, 0x02, + 0xfe, 0x01, 0xa3, 0x01, 0x48, 0x01, 0xfb, 0x00, 0x20, 0x01, 0x5e, 0x01, 0xe0, 0x01, 0x7d, 0x02, + 0x9b, 0x02, 0x31, 0x02, 0x64, 0x01, 0xac, 0x00, 0x09, 0x00, 0x92, 0xff, 0xd7, 0xfe, 0x17, 0xfe, + 0x51, 0xfd, 0x57, 0xfc, 0x7a, 0xfb, 0xd9, 0xfa, 0xad, 0xfa, 0xc4, 0xfa, 0x3f, 0xfb, 0x3c, 0xfc, + 0x60, 0xfd, 0xdb, 0xfe, 0xf0, 0xff, 0xc5, 0x00, 0x12, 0x01, 0x70, 0x01, 0xd3, 0x01, 0xf3, 0x01, + 0x4a, 0x02, 0xc4, 0x02, 0x32, 0x03, 0x73, 0x03, 0x2c, 0x03, 0x68, 0x02, 0xcd, 0x01, 0x8d, 0x01, + 0x8b, 0x01, 0xaf, 0x01, 0x21, 0x02, 0xc2, 0x02, 0x3e, 0x03, 0xe4, 0x02, 0x20, 0x02, 0x69, 0x01, + 0xc1, 0x00, 0x46, 0x00, 0xc4, 0xff, 0x25, 0xff, 0x72, 0xfe, 0x81, 0xfd, 0x55, 0xfc, 0x46, 0xfb, + 0x71, 0xfa, 0x60, 0xfa, 0x98, 0xfa, 0x44, 0xfb, 0x5b, 0xfc, 0x88, 0xfd, 0xb9, 0xfe, 0xa9, 0xff, + 0x37, 0x00, 0xda, 0x00, 0x4b, 0x01, 0x72, 0x01, 0xaf, 0x01, 0xfb, 0x01, 0x91, 0x02, 0xb6, 0x02, + 0x76, 0x02, 0x0d, 0x02, 0xb2, 0x01, 0xc0, 0x01, 0xbe, 0x01, 0xcc, 0x01, 0x24, 0x02, 0xb2, 0x02, + 0x1b, 0x03, 0x23, 0x03, 0x68, 0x02, 0x9b, 0x01, 0xdd, 0x00, 0x70, 0x00, 0x1d, 0x00, 0xa8, 0xff, + 0x21, 0xff, 0x30, 0xfe, 0x34, 0xfd, 0x19, 0xfc, 0x52, 0xfb, 0xf6, 0xfa, 0xe9, 0xfa, 0x4f, 0xfb, + 0x0d, 0xfc, 0x2b, 0xfd, 0x8f, 0xfe, 0xa9, 0xff, 0x55, 0x00, 0xbd, 0x00, 0x19, 0x01, 0x1a, 0x01, + 0x41, 0x01, 0xac, 0x01, 0x22, 0x02, 0x2f, 0x02, 0xf8, 0x01, 0x90, 0x01, 0x78, 0x01, 0x88, 0x01, + 0x72, 0x01, 0x4e, 0x01, 0x8c, 0x01, 0x12, 0x02, 0x74, 0x02, 0x85, 0x02, 0xe7, 0x01, 0x32, 0x01, + 0x98, 0x00, 0xfc, 0xff, 0x98, 0xff, 0x20, 0xff, 0x87, 0xfe, 0xee, 0xfd, 0x30, 0xfd, 0x37, 0xfc, + 0x6b, 0xfb, 0x29, 0xfb, 0x2e, 0xfb, 0x88, 0xfb, 0x80, 0xfc, 0xbc, 0xfd, 0xfd, 0xfe, 0x23, 0x00, + 0xba, 0x00, 0x31, 0x01, 0x84, 0x01, 0x74, 0x01, 0xbc, 0x01, 0xef, 0x01, 0x2b, 0x02, 0x88, 0x02, + 0x5e, 0x02, 0x0b, 0x02, 0xb5, 0x01, 0xa5, 0x01, 0x86, 0x01, 0x35, 0x01, 0x99, 0x01, 0x03, 0x02, + 0x6a, 0x02, 0xa1, 0x02, 0x3d, 0x02, 0x99, 0x01, 0xca, 0x00, 0x12, 0x00, 0x7e, 0xff, 0x0d, 0xff, + 0x73, 0xfe, 0xd8, 0xfd, 0x0f, 0xfd, 0x23, 0xfc, 0x74, 0xfb, 0x04, 0xfb, 0xf9, 0xfa, 0x49, 0xfb, + 0xe2, 0xfb, 0xe0, 0xfc, 0x11, 0xfe, 0x34, 0xff, 0xc0, 0xff, 0x32, 0x00, 0x9d, 0x00, 0xa6, 0x00, + 0xd9, 0x00, 0x3c, 0x01, 0x92, 0x01, 0xc5, 0x01, 0xbd, 0x01, 0x3e, 0x01, 0xf8, 0x00, 0xda, 0x00, + 0xb9, 0x00, 0xb6, 0x00, 0xfc, 0x00, 0xa9, 0x01, 0x7a, 0x02, 0xe0, 0x02, 0x96, 0x02, 0x1d, 0x02, + 0xa4, 0x01, 0x15, 0x01, 0xb1, 0x00, 0x3b, 0x00, 0xe5, 0xff, 0x46, 0xff, 0x8c, 0xfe, 0xbb, 0xfd, + 0x0f, 0xfd, 0xb8, 0xfc, 0x85, 0xfc, 0xaa, 0xfc, 0x0e, 0xfd, 0xcc, 0xfd, 0xac, 0xfe, 0x91, 0xff, + 0x44, 0x00, 0xd2, 0x00, 0x31, 0x01, 0x0b, 0x01, 0x1d, 0x01, 0x6c, 0x01, 0xf3, 0x01, 0x27, 0x02, + 0xc4, 0x01, 0x39, 0x01, 0xa0, 0x00, 0xd0, 0x00, 0xa4, 0x00, 0x52, 0x00, 0x5c, 0x00, 0xc1, 0x00, + 0x95, 0x01, 0xf6, 0x01, 0xce, 0x01, 0x11, 0x01, 0x59, 0x00, 0x2a, 0x00, 0xae, 0xff, 0x33, 0xff, + 0x01, 0xff, 0xe4, 0xfe, 0xa1, 0xfe, 0x0c, 0xfe, 0x76, 0xfd, 0x0d, 0xfd, 0xa4, 0xfc, 0x7b, 0xfc, + 0xb0, 0xfc, 0x7d, 0xfd, 0x8a, 0xfe, 0x48, 0xff, 0x0e, 0x00, 0x75, 0x00, 0x7e, 0x00, 0x70, 0x00, + 0xab, 0x00, 0x06, 0x01, 0x65, 0x01, 0xb4, 0x01, 0x8a, 0x01, 0x0e, 0x01, 0xc7, 0x00, 0x9b, 0x00, + 0x9a, 0x00, 0x9f, 0x00, 0xb1, 0x00, 0x09, 0x01, 0x94, 0x01, 0xd1, 0x01, 0xd2, 0x01, 0x85, 0x01, + 0x0b, 0x01, 0x76, 0x00, 0xdd, 0xff, 0x92, 0xff, 0x46, 0xff, 0x13, 0xff, 0x8c, 0xfe, 0xe1, 0xfd, + 0x85, 0xfd, 0x16, 0xfd, 0xd9, 0xfc, 0xca, 0xfc, 0xf6, 0xfc, 0xeb, 0xfd, 0xec, 0xfe, 0xcf, 0xff, + 0x71, 0x00, 0x09, 0x01, 0x46, 0x01, 0x49, 0x01, 0x4a, 0x01, 0x57, 0x01, 0xa3, 0x01, 0xd5, 0x01, + 0xb8, 0x01, 0x63, 0x01, 0x34, 0x01, 0x1a, 0x01, 0xdd, 0x00, 0x60, 0x00, 0x61, 0x00, 0xd2, 0x00, + 0x88, 0x01, 0x27, 0x02, 0x50, 0x02, 0x14, 0x02, 0xaa, 0x01, 0x0c, 0x01, 0x8d, 0x00, 0x23, 0x00, + 0xcc, 0xff, 0x40, 0xff, 0xb7, 0xfe, 0x2c, 0xfe, 0xd0, 0xfd, 0x63, 0xfd, 0x25, 0xfd, 0x30, 0xfd, + 0x6f, 0xfd, 0x2c, 0xfe, 0x00, 0xff, 0xf0, 0xff, 0xbe, 0x00, 0x32, 0x01, 0x59, 0x01, 0x88, 0x01, + 0x67, 0x01, 0x44, 0x01, 0x85, 0x01, 0x9d, 0x01, 0x66, 0x01, 0x23, 0x01, 0xc6, 0x00, 0x76, 0x00, + 0x53, 0x00, 0xfa, 0xff, 0xd3, 0xff, 0x29, 0x00, 0xd6, 0x00, 0x67, 0x01, 0x97, 0x01, 0x78, 0x01, + 0x08, 0x01, 0x8d, 0x00, 0xd3, 0xff, 0x45, 0xff, 0x14, 0xff, 0xd7, 0xfe, 0x87, 0xfe, 0x05, 0xfe, + 0x70, 0xfd, 0x1b, 0xfd, 0xee, 0xfc, 0xf7, 0xfc, 0x2f, 0xfd, 0xee, 0xfd, 0xf4, 0xfe, 0xd7, 0xff, + 0xc1, 0x00, 0x50, 0x01, 0x99, 0x01, 0xb1, 0x01, 0x94, 0x01, 0x97, 0x01, 0x02, 0x02, 0x1b, 0x02, + 0xff, 0x01, 0xbf, 0x01, 0x68, 0x01, 0x2d, 0x01, 0xdd, 0x00, 0x78, 0x00, 0x54, 0x00, 0xa4, 0x00, + 0x46, 0x01, 0xb6, 0x01, 0xce, 0x01, 0xbb, 0x01, 0x60, 0x01, 0x14, 0x01, 0x6d, 0x00, 0xd6, 0xff, + 0x5d, 0xff, 0xec, 0xfe, 0x9f, 0xfe, 0x0c, 0xfe, 0x4e, 0xfd, 0xd8, 0xfc, 0xa3, 0xfc, 0x7d, 0xfc, + 0xb3, 0xfc, 0x2f, 0xfd, 0xd9, 0xfd, 0xbb, 0xfe, 0x77, 0xff, 0x0b, 0x00, 0x84, 0x00, 0xdc, 0x00, + 0xe8, 0x00, 0x14, 0x01, 0x5e, 0x01, 0x99, 0x01, 0x98, 0x01, 0x50, 0x01, 0xff, 0x00, 0xb0, 0x00, + 0x66, 0x00, 0xfa, 0xff, 0xd6, 0xff, 0x36, 0x00, 0xe4, 0x00, 0x8d, 0x01, 0xe2, 0x01, 0xdb, 0x01, + 0x8f, 0x01, 0x12, 0x01, 0x6f, 0x00, 0xca, 0xff, 0x81, 0xff, 0x22, 0xff, 0xba, 0xfe, 0x12, 0xfe, + 0x64, 0xfd, 0xec, 0xfc, 0xc3, 0xfc, 0xba, 0xfc, 0xdd, 0xfc, 0x58, 0xfd, 0x20, 0xfe, 0x09, 0xff, + 0xe2, 0xff, 0xb0, 0x00, 0x33, 0x01, 0x74, 0x01, 0x58, 0x01, 0x8a, 0x01, 0xae, 0x01, 0xf1, 0x01, + 0x08, 0x02, 0xc3, 0x01, 0x70, 0x01, 0x2d, 0x01, 0xdc, 0x00, 0x75, 0x00, 0x23, 0x00, 0x50, 0x00, + 0xd2, 0x00, 0x59, 0x01, 0x96, 0x01, 0x9b, 0x01, 0x64, 0x01, 0xf8, 0x00, 0x83, 0x00, 0x11, 0x00, + 0xbb, 0xff, 0x63, 0xff, 0x03, 0xff, 0x8c, 0xfe, 0xde, 0xfd, 0x6c, 0xfd, 0xf8, 0xfc, 0xd3, 0xfc, + 0xf0, 0xfc, 0x64, 0xfd, 0x33, 0xfe, 0x40, 0xff, 0x14, 0x00, 0xf0, 0x00, 0x89, 0x01, 0xbe, 0x01, + 0xd7, 0x01, 0xd4, 0x01, 0x33, 0x02, 0x7b, 0x02, 0x5d, 0x02, 0x44, 0x02, 0xdf, 0x01, 0xcc, 0x01, + 0x7c, 0x01, 0xe1, 0x00, 0x7d, 0x00, 0x84, 0x00, 0xfb, 0x00, 0x9a, 0x01, 0xdd, 0x01, 0xe2, 0x01, + 0xfd, 0x01, 0x83, 0x01, 0x01, 0x01, 0x79, 0x00, 0xe7, 0xff, 0x89, 0xff, 0x12, 0xff, 0x76, 0xfe, + 0xc2, 0xfd, 0x17, 0xfd, 0x98, 0xfc, 0x39, 0xfc, 0x26, 0xfc, 0x59, 0xfc, 0xf7, 0xfc, 0xff, 0xfd, + 0xc4, 0xfe, 0x80, 0xff, 0x3d, 0x00, 0x7c, 0x00, 0x8e, 0x00, 0xba, 0x00, 0xe1, 0x00, 0x4b, 0x01, + 0x62, 0x01, 0x3c, 0x01, 0x25, 0x01, 0x18, 0x01, 0xd4, 0x00, 0x5d, 0x00, 0x11, 0x00, 0x27, 0x00, + 0x92, 0x00, 0x22, 0x01, 0x82, 0x01, 0xcb, 0x01, 0xda, 0x01, 0x77, 0x01, 0x2f, 0x01, 0x9b, 0x00, + 0x0b, 0x00, 0xde, 0xff, 0x77, 0xff, 0xf3, 0xfe, 0x44, 0xfe, 0xa2, 0xfd, 0x07, 0xfd, 0x97, 0xfc, + 0x81, 0xfc, 0xd1, 0xfc, 0x6f, 0xfd, 0x51, 0xfe, 0x2d, 0xff, 0x0c, 0x00, 0xc1, 0x00, 0x2d, 0x01, + 0x3c, 0x01, 0x31, 0x01, 0x64, 0x01, 0xb4, 0x01, 0xad, 0x01, 0x71, 0x01, 0x54, 0x01, 0x04, 0x01, + 0xd8, 0x00, 0x53, 0x00, 0xe1, 0xff, 0xa6, 0xff, 0xef, 0xff, 0x66, 0x00, 0xeb, 0x00, 0x3d, 0x01, + 0x5d, 0x01, 0x47, 0x01, 0xb3, 0x00, 0x22, 0x00, 0xc1, 0xff, 0x56, 0xff, 0x11, 0xff, 0x7d, 0xfe, + 0xe8, 0xfd, 0x73, 0xfd, 0xc6, 0xfc, 0x9c, 0xfc, 0x8b, 0xfc, 0xb1, 0xfc, 0x86, 0xfd, 0x61, 0xfe, + 0x60, 0xff, 0x48, 0x00, 0xfa, 0x00, 0x7b, 0x01, 0x95, 0x01, 0xae, 0x01, 0xf7, 0x01, 0x10, 0x02, + 0x36, 0x02, 0x06, 0x02, 0xc6, 0x01, 0xaa, 0x01, 0x6f, 0x01, 0xe6, 0x00, 0x5d, 0x00, 0x4f, 0x00, + 0xa1, 0x00, 0x1e, 0x01, 0x6f, 0x01, 0xbc, 0x01, 0xb4, 0x01, 0x92, 0x01, 0x50, 0x01, 0xa4, 0x00, + 0x29, 0x00, 0xdb, 0xff, 0x6c, 0xff, 0xd2, 0xfe, 0x2d, 0xfe, 0x59, 0xfd, 0xd0, 0xfc, 0x79, 0xfc, + 0x24, 0xfc, 0x63, 0xfc, 0xe4, 0xfc, 0x7d, 0xfd, 0x5a, 0xfe, 0x7b, 0xff, 0x54, 0x00, 0xd9, 0x00, + 0xff, 0x00, 0xf7, 0x00, 0x29, 0x01, 0x97, 0x01, 0xe0, 0x01, 0xcb, 0x01, 0xb9, 0x01, 0x9d, 0x01, + 0x5b, 0x01, 0xeb, 0x00, 0x66, 0x00, 0x43, 0x00, 0x72, 0x00, 0x02, 0x01, 0x6d, 0x01, 0xd4, 0x01, + 0x04, 0x02, 0x07, 0x02, 0xb7, 0x01, 0x38, 0x01, 0xb2, 0x00, 0x8a, 0x00, 0x6a, 0x00, 0xd8, 0xff, + 0x53, 0xff, 0x7e, 0xfe, 0xd4, 0xfd, 0x49, 0xfd, 0xe7, 0xfc, 0xe7, 0xfc, 0x39, 0xfd, 0x01, 0xfe, + 0xe7, 0xfe, 0xab, 0xff, 0x81, 0x00, 0x13, 0x01, 0x20, 0x01, 0x19, 0x01, 0x23, 0x01, 0x93, 0x01, + 0x9a, 0x01, 0x70, 0x01, 0x8e, 0x01, 0x3a, 0x01, 0x0b, 0x01, 0x9b, 0x00, 0xf6, 0xff, 0xab, 0xff, + 0xb1, 0xff, 0xfe, 0xff, 0x8a, 0x00, 0xc7, 0x00, 0x07, 0x01, 0x2a, 0x01, 0xe2, 0x00, 0x6e, 0x00, + 0xe9, 0xff, 0xaa, 0xff, 0x70, 0xff, 0x1f, 0xff, 0x8a, 0xfe, 0xe3, 0xfd, 0x5b, 0xfd, 0xd4, 0xfc, + 0x6b, 0xfc, 0x7e, 0xfc, 0xce, 0xfc, 0x8f, 0xfd, 0x6b, 0xfe, 0x60, 0xff, 0x65, 0x00, 0xe1, 0x00, + 0x1f, 0x01, 0x25, 0x01, 0x42, 0x01, 0x80, 0x01, 0x8f, 0x01, 0xac, 0x01, 0xa0, 0x01, 0x92, 0x01, + 0x82, 0x01, 0x1a, 0x01, 0x81, 0x00, 0x2b, 0x00, 0x21, 0x00, 0x8f, 0x00, 0xff, 0x00, 0x5b, 0x01, + 0xb5, 0x01, 0xcb, 0x01, 0x8f, 0x01, 0x31, 0x01, 0xb5, 0x00, 0x50, 0x00, 0x29, 0x00, 0xc9, 0xff, + 0x5f, 0xff, 0xc8, 0xfe, 0x2d, 0xfe, 0x7a, 0xfd, 0xff, 0xfc, 0xd4, 0xfc, 0xfa, 0xfc, 0x84, 0xfd, + 0x36, 0xfe, 0x1a, 0xff, 0x0d, 0x00, 0xb4, 0x00, 0xec, 0x00, 0x0a, 0x01, 0x2f, 0x01, 0x8e, 0x01, + 0xdb, 0x01, 0xd1, 0x01, 0xac, 0x01, 0x92, 0x01, 0x4c, 0x01, 0xd7, 0x00, 0x47, 0x00, 0xe8, 0xff, + 0xfe, 0xff, 0x49, 0x00, 0xb1, 0x00, 0x1d, 0x01, 0x74, 0x01, 0xb9, 0x01, 0x7d, 0x01, 0x35, 0x01, + 0x0f, 0x01, 0xcd, 0x00, 0x8c, 0x00, 0x51, 0x00, 0xd1, 0xff, 0x15, 0xff, 0x8b, 0xfe, 0xbf, 0xfd, + 0x66, 0xfd, 0x64, 0xfd, 0x71, 0xfd, 0x95, 0xfd, 0x47, 0xfe, 0xfb, 0xfe, 0xd2, 0xff, 0x30, 0x00, + 0x51, 0x00, 0x49, 0x00, 0x4c, 0x00, 0x63, 0x00, 0x6e, 0x00, 0x45, 0x00, 0x1c, 0x00, 0x0d, 0x00, + 0x93, 0xff, 0x41, 0xff, 0xa1, 0xfe, 0x58, 0xfe, 0x52, 0xfe, 0xa7, 0xfe, 0x4a, 0xff, 0xf3, 0xff, + 0x86, 0x00, 0xd6, 0x00, 0xf4, 0x00, 0xd1, 0x00, 0xc4, 0x00, 0x9b, 0x00, 0x85, 0x00, 0x71, 0x00, + 0x34, 0x00, 0xe1, 0xff, 0x62, 0xff, 0xf3, 0xfe, 0xa4, 0xfe, 0x8c, 0xfe, 0x92, 0xfe, 0x10, 0xff, + 0xb7, 0xff, 0xb4, 0x00, 0xa9, 0x01, 0x51, 0x02, 0xd8, 0x02, 0xe1, 0x02, 0x29, 0x03, 0x54, 0x03, + 0x80, 0x03, 0x5c, 0x03, 0x18, 0x03, 0xc7, 0x02, 0x81, 0x02, 0x28, 0x02, 0xa0, 0x01, 0x26, 0x01, + 0xf2, 0x00, 0xeb, 0x00, 0x1a, 0x01, 0x56, 0x01, 0x83, 0x01, 0x77, 0x01, 0x4d, 0x01, 0x0e, 0x01, + 0xcc, 0x00, 0x74, 0x00, 0x67, 0x00, 0x27, 0x00, 0x6e, 0xff, 0x09, 0xff, 0x0a, 0xfe, 0x68, 0xfd, + 0x98, 0xfc, 0x64, 0xfc, 0x6d, 0xfc, 0xe4, 0xfc, 0x15, 0xfd, 0xc5, 0xfd, 0x5a, 0xfe, 0xd1, 0xfe, + 0xdd, 0xfe, 0xce, 0xfe, 0xf7, 0xfe, 0x57, 0xff, 0x66, 0xff, 0x21, 0xff, 0x9e, 0xfe, 0x14, 0xfe, + 0x90, 0xfd, 0x5a, 0xfc, 0xad, 0xfb, 0x03, 0xfb, 0x91, 0xfa, 0x13, 0xfb, 0x60, 0xfb, 0x19, 0xfc, + 0xf9, 0xfc, 0x31, 0xfd, 0x5a, 0xfd, 0x5e, 0xfd, 0x5e, 0xfd, 0x4c, 0xfd, 0xe1, 0xfc, 0xa3, 0xfd, + 0x1b, 0xfe, 0xa9, 0xfe, 0x36, 0xff, 0x37, 0xff, 0xe1, 0xff, 0x8b, 0x00, 0x9d, 0x00, 0x4d, 0x01, + 0xa5, 0x01, 0xcc, 0x02, 0x3a, 0x04, 0x8a, 0x05, 0xb3, 0x06, 0x23, 0x07, 0x50, 0x07, 0x30, 0x07, + 0x1e, 0x06, 0xae, 0x05, 0x5c, 0x04, 0x86, 0x01, 0x31, 0x02, 0xfe, 0x00, 0x67, 0x01, 0xec, 0x02, + 0xa7, 0x01, 0xa2, 0x02, 0x5e, 0x02, 0x54, 0xff, 0xf2, 0xfe, 0xe9, 0xfc, 0x41, 0xfc, 0xea, 0xfa, + 0xbd, 0xfd, 0x4e, 0x02, 0x76, 0x01, 0xcb, 0x04, 0x55, 0x03, 0xb0, 0xff, 0x7d, 0x00, 0x93, 0xfa, + 0xc0, 0xf6, 0xe9, 0xfa, 0x7e, 0xfb, 0xdb, 0xff, 0xbe, 0x01, 0x43, 0x02, 0x92, 0x00, 0x5c, 0xff, + 0xc6, 0xff, 0xa2, 0xfe, 0x25, 0xff, 0xf2, 0xfe, 0x8d, 0xfe, 0x0f, 0x04, 0xf6, 0x06, 0xf9, 0x0a, + 0x8e, 0x04, 0x7e, 0x02, 0xca, 0xff, 0x4b, 0xfa, 0xdb, 0xf6, 0x7d, 0xf5, 0x89, 0xf3, 0x85, 0xfa, + 0x3b, 0xfb, 0x6a, 0xfe, 0xa4, 0xfd, 0x0c, 0xfc, 0xf5, 0xfb, 0x7e, 0xf8, 0x55, 0xf9, 0x1a, 0xf9, + 0x4c, 0xf6, 0xe4, 0xf9, 0x33, 0xfd, 0x07, 0xfe, 0xfa, 0xfd, 0x91, 0xfb, 0x33, 0xf9, 0x68, 0xfa, + 0x2e, 0xfc, 0xf7, 0xfc, 0x15, 0xfe, 0x77, 0x00, 0xd4, 0x05, 0xfb, 0x0e, 0x69, 0x15, 0x01, 0x1b, + 0x7a, 0x18, 0x96, 0x16, 0xf6, 0x1a, 0xef, 0x17, 0x3f, 0x16, 0x86, 0x16, 0x53, 0x13, 0x7d, 0x17, + 0xc7, 0x18, 0xc4, 0x16, 0x67, 0x14, 0x67, 0x0f, 0x80, 0x0b, 0x76, 0x07, 0x7a, 0x04, 0xc7, 0x01, + 0x2c, 0xfc, 0x80, 0xfb, 0xa4, 0xfc, 0xa3, 0xfb, 0x8f, 0xf8, 0xb1, 0xf4, 0xd4, 0xed, 0xab, 0xea, + 0x90, 0xec, 0x44, 0xeb, 0x7b, 0xe7, 0x62, 0xe8, 0xd9, 0xe7, 0x96, 0xeb, 0xf3, 0xef, 0x3e, 0xf3, + 0x43, 0xf2, 0x08, 0xef, 0xee, 0xf2, 0xbe, 0xf3, 0x71, 0xf3, 0xda, 0xf7, 0x84, 0xf8, 0x06, 0xff, + 0x4b, 0x04, 0x0a, 0x04, 0xd9, 0x03, 0x71, 0x00, 0x85, 0xfb, 0xdf, 0xf6, 0x9b, 0xf4, 0x57, 0xf2, + 0x66, 0xef, 0xd1, 0xef, 0x60, 0xf3, 0x36, 0xf7, 0x8a, 0xf8, 0xc4, 0xf7, 0x7c, 0xf4, 0x32, 0xf1, + 0x8a, 0xf3, 0xc2, 0xf5, 0xa4, 0xf3, 0x83, 0xf5, 0xdd, 0xf6, 0x83, 0xf9, 0x73, 0xfe, 0x9f, 0x02, + 0x00, 0x04, 0xce, 0x00, 0xf3, 0x03, 0xad, 0x07, 0xe8, 0x08, 0x14, 0x0d, 0x08, 0x10, 0x47, 0x14, + 0xd2, 0x18, 0x68, 0x18, 0x77, 0x17, 0xad, 0x14, 0xad, 0x10, 0x16, 0x0b, 0x96, 0x07, 0x4c, 0x06, + 0x03, 0x04, 0xe5, 0x02, 0xdd, 0x05, 0x52, 0x0a, 0xdf, 0x0b, 0x16, 0x0c, 0x80, 0x08, 0xf9, 0x01, + 0x1d, 0x02, 0x54, 0x03, 0x3d, 0x00, 0xc1, 0x00, 0x46, 0x03, 0xff, 0x03, 0xfa, 0x06, 0x23, 0x0b, + 0xa3, 0x0d, 0xaa, 0x08, 0x4c, 0x08, 0x3e, 0x0a, 0xe4, 0x09, 0x15, 0x0c, 0x87, 0x0e, 0x4b, 0x10, + 0x6e, 0x13, 0x4e, 0x12, 0x47, 0x0f, 0x64, 0x0b, 0xbf, 0x06, 0x53, 0xfe, 0x51, 0xf8, 0x62, 0xf4, + 0x30, 0xf2, 0x03, 0xf1, 0xd0, 0xf1, 0x62, 0xf5, 0xf1, 0xf6, 0xdf, 0xf5, 0x64, 0xf4, 0xaf, 0xed, + 0x61, 0xed, 0xb9, 0xf1, 0x6b, 0xf1, 0xf1, 0xf1, 0xed, 0xf5, 0xc4, 0xf7, 0x08, 0xfb, 0x4f, 0xff, + 0xf7, 0x04, 0x69, 0x02, 0x10, 0x00, 0x67, 0x02, 0xcd, 0x02, 0xbb, 0x04, 0x00, 0x09, 0xee, 0x0a, + 0x8a, 0x0e, 0x28, 0x0f, 0xc1, 0x0c, 0x01, 0x09, 0xd0, 0x05, 0x9a, 0xfd, 0xd1, 0xf6, 0x25, 0xf3, + 0x20, 0xf2, 0xa9, 0xf2, 0x12, 0xf4, 0x3b, 0xf8, 0xda, 0xfb, 0xd9, 0xfa, 0x8b, 0xfa, 0x72, 0xf3, + 0x55, 0xef, 0x1f, 0xf2, 0x34, 0xf2, 0x21, 0xf2, 0xc1, 0xf6, 0xa6, 0xf9, 0xd2, 0xfd, 0x62, 0x02, + 0x24, 0x0a, 0x12, 0x0b, 0xea, 0x07, 0x46, 0x0a, 0xb1, 0x0c, 0x3e, 0x0e, 0x23, 0x13, 0xc2, 0x15, + 0xc3, 0x17, 0x86, 0x17, 0x05, 0x14, 0xda, 0x0d, 0x00, 0x0a, 0xa3, 0x01, 0x8e, 0xf9, 0xfd, 0xf4, + 0xed, 0xf2, 0xc6, 0xf4, 0x84, 0xf6, 0x87, 0xf8, 0x84, 0xfc, 0xf5, 0xf9, 0x66, 0xf8, 0xaa, 0xf2, + 0x4f, 0xeb, 0x92, 0xeb, 0x54, 0xec, 0xb8, 0xea, 0x9c, 0xed, 0x31, 0xf0, 0xfc, 0xf2, 0xe2, 0xf5, + 0xab, 0xfd, 0xfd, 0x01, 0x3d, 0x00, 0x22, 0x01, 0x82, 0x04, 0xd1, 0x05, 0x01, 0x0b, 0xb9, 0x0f, + 0x1e, 0x13, 0x56, 0x15, 0x2d, 0x15, 0x15, 0x10, 0xdc, 0x0c, 0x7f, 0x06, 0x37, 0xfc, 0x15, 0xf5, + 0x6b, 0xf0, 0xf7, 0xf0, 0xd7, 0xf2, 0xd6, 0xf3, 0xfd, 0xf8, 0xa4, 0xf8, 0x27, 0xf8, 0xee, 0xf4, + 0x50, 0xed, 0x40, 0xeb, 0x42, 0xed, 0xe2, 0xec, 0x41, 0xf0, 0x2a, 0xf4, 0x48, 0xf7, 0xc4, 0xf8, + 0x52, 0xfe, 0xf6, 0x03, 0xa1, 0x02, 0x3e, 0x01, 0x03, 0x04, 0x35, 0x06, 0xfb, 0x0a, 0x53, 0x11, + 0x16, 0x16, 0x7b, 0x19, 0x0e, 0x1b, 0x4e, 0x17, 0xb9, 0x14, 0x6d, 0x11, 0xb6, 0x08, 0xbc, 0x01, + 0x5a, 0xfc, 0x9d, 0xfb, 0xb8, 0xfd, 0xa8, 0xfc, 0xe0, 0x00, 0x6d, 0x01, 0xca, 0x00, 0x97, 0xff, + 0x57, 0xf8, 0x23, 0xf4, 0x50, 0xf5, 0x56, 0xf5, 0xf3, 0xf7, 0x7b, 0xfb, 0xbb, 0xff, 0x4c, 0x02, + 0x85, 0x06, 0x19, 0x0e, 0x8e, 0x0e, 0x16, 0x0b, 0xc2, 0x0b, 0xbb, 0x0c, 0x08, 0x0f, 0x51, 0x14, + 0x91, 0x18, 0x54, 0x1b, 0xdd, 0x1d, 0x3b, 0x1b, 0xc2, 0x16, 0xd3, 0x13, 0xe7, 0x0a, 0x7c, 0x02, + 0xd5, 0xfb, 0x8a, 0xf8, 0xec, 0xfa, 0x49, 0xf9, 0x4e, 0xfb, 0x74, 0xfc, 0xee, 0xf9, 0x6d, 0xf8, + 0x72, 0xf0, 0xe3, 0xe8, 0x1d, 0xe8, 0x88, 0xe8, 0x64, 0xea, 0x0e, 0xee, 0x7a, 0xf2, 0xf9, 0xf5, + 0xc5, 0xf8, 0x3b, 0x00, 0xcc, 0x03, 0x50, 0x01, 0x01, 0x01, 0x3e, 0x03, 0x0e, 0x05, 0x01, 0x0a, + 0x4d, 0x0f, 0x32, 0x12, 0xd2, 0x14, 0x67, 0x14, 0x8e, 0x0f, 0x2d, 0x0e, 0xfd, 0x07, 0x76, 0xff, + 0x58, 0xf8, 0x2b, 0xf3, 0x00, 0xf5, 0x74, 0xf4, 0x40, 0xf6, 0x79, 0xfa, 0x26, 0xf9, 0xe9, 0xf8, + 0x91, 0xf3, 0xe7, 0xea, 0xdf, 0xe7, 0x54, 0xe7, 0xd3, 0xe7, 0xe5, 0xea, 0xb5, 0xef, 0x80, 0xf4, + 0xbd, 0xf6, 0xad, 0xfd, 0x28, 0x03, 0x74, 0x02, 0x48, 0x01, 0x8c, 0x03, 0x84, 0x05, 0x15, 0x0a, + 0x97, 0x10, 0x77, 0x15, 0xe0, 0x18, 0x55, 0x1a, 0xbd, 0x14, 0x4a, 0x12, 0x53, 0x0d, 0xba, 0x04, + 0x97, 0xfd, 0xaa, 0xf6, 0x5a, 0xf7, 0x0e, 0xf8, 0xee, 0xf8, 0x55, 0xfe, 0x63, 0xfd, 0x41, 0xfd, + 0xbc, 0xf9, 0xee, 0xf0, 0xfc, 0xec, 0xb9, 0xec, 0x96, 0xec, 0xa1, 0xee, 0xcc, 0xf1, 0x58, 0xf6, + 0xc9, 0xf6, 0x3b, 0xfb, 0x65, 0x01, 0x62, 0x02, 0x94, 0x00, 0xb1, 0x02, 0x0a, 0x05, 0x97, 0x08, + 0xd2, 0x0e, 0x7f, 0x14, 0xff, 0x17, 0xcc, 0x1b, 0x9d, 0x17, 0xa1, 0x14, 0x55, 0x11, 0xab, 0x08, + 0xea, 0x00, 0xcb, 0xf7, 0x4e, 0xf5, 0x41, 0xf6, 0x97, 0xf5, 0x32, 0xfb, 0xe1, 0xfb, 0x79, 0xfb, + 0x44, 0xfa, 0x47, 0xf2, 0x3c, 0xec, 0x14, 0xeb, 0x87, 0xea, 0xf7, 0xec, 0xf0, 0xef, 0x57, 0xf5, + 0x83, 0xf6, 0xfd, 0xf8, 0xb5, 0xfe, 0xde, 0x00, 0xa9, 0xfd, 0xa2, 0xfd, 0xc1, 0xff, 0xe2, 0x02, + 0x0a, 0x09, 0xc8, 0x10, 0x03, 0x15, 0x44, 0x1a, 0x5b, 0x18, 0xd9, 0x14, 0xb1, 0x13, 0x1f, 0x0d, + 0xad, 0x06, 0x70, 0xfe, 0xd6, 0xf9, 0xb4, 0xfb, 0x06, 0xfa, 0x67, 0xfe, 0x31, 0x00, 0x07, 0xff, + 0xc5, 0xfe, 0xd2, 0xf8, 0x2d, 0xf2, 0x85, 0xf0, 0x9b, 0xef, 0xa7, 0xf1, 0xb8, 0xf3, 0x42, 0xf9, + 0x7d, 0xfb, 0xe7, 0xfc, 0x2a, 0x02, 0x88, 0x06, 0xad, 0x04, 0x46, 0x03, 0x67, 0x04, 0xd7, 0x05, + 0xe4, 0x08, 0xe8, 0x0f, 0xe9, 0x13, 0x29, 0x19, 0xb7, 0x19, 0x2f, 0x15, 0xf8, 0x13, 0x02, 0x0f, + 0x0d, 0x09, 0x59, 0x01, 0x15, 0xfa, 0xcf, 0xfb, 0x9e, 0xfa, 0x2e, 0xfe, 0x02, 0x02, 0xe1, 0x00, + 0xa6, 0x00, 0x2d, 0xfc, 0xd2, 0xf3, 0x69, 0xf0, 0x3d, 0xee, 0x83, 0xef, 0x13, 0xf1, 0xfe, 0xf5, + 0xc9, 0xf9, 0x7f, 0xfa, 0x1d, 0xfe, 0x3f, 0x03, 0xde, 0x02, 0xa7, 0x00, 0x32, 0x01, 0xee, 0x02, + 0xb7, 0x04, 0x11, 0x0b, 0x73, 0x0f, 0x49, 0x13, 0xb1, 0x14, 0x13, 0x0f, 0x68, 0x0c, 0x5d, 0x08, + 0x3a, 0x02, 0xf6, 0xfb, 0xda, 0xf2, 0x14, 0xf3, 0x71, 0xf2, 0x0a, 0xf4, 0x6c, 0xf9, 0x62, 0xf9, + 0xd4, 0xf9, 0x87, 0xf8, 0x41, 0xf1, 0x61, 0xed, 0x9b, 0xea, 0x15, 0xeb, 0x67, 0xec, 0x32, 0xf0, + 0x54, 0xf5, 0x94, 0xf6, 0x2a, 0xf9, 0xc2, 0xfe, 0x3b, 0x01, 0x03, 0x00, 0xe1, 0xff, 0xef, 0x01, + 0x36, 0x03, 0x1a, 0x09, 0xbf, 0x0f, 0xb2, 0x14, 0x2a, 0x19, 0x69, 0x15, 0xee, 0x11, 0xab, 0x0e, + 0x18, 0x08, 0x72, 0x02, 0x0c, 0xf8, 0x51, 0xf5, 0x93, 0xf5, 0x77, 0xf5, 0x01, 0xfb, 0xd8, 0xfc, + 0xb5, 0xfc, 0x22, 0xfd, 0x2d, 0xf7, 0xcf, 0xf2, 0x52, 0xf0, 0x85, 0xf0, 0x92, 0xf2, 0x8f, 0xf5, + 0x64, 0xfb, 0x49, 0xfd, 0x2f, 0xfe, 0x70, 0x02, 0xe1, 0x05, 0xd3, 0x04, 0x90, 0x03, 0x72, 0x05, + 0x95, 0x06, 0xa5, 0x0a, 0x82, 0x11, 0xba, 0x15, 0xb5, 0x1a, 0xd9, 0x18, 0xa0, 0x14, 0x5f, 0x12, + 0x30, 0x0c, 0x9a, 0x07, 0x00, 0xfd, 0x37, 0xf6, 0x5d, 0xf5, 0x53, 0xf2, 0xc4, 0xf5, 0x53, 0xf8, + 0x2a, 0xf7, 0x48, 0xf8, 0xcd, 0xf3, 0x9b, 0xee, 0xd2, 0xeb, 0xf3, 0xea, 0xe8, 0xec, 0x59, 0xef, + 0xc8, 0xf5, 0xcf, 0xf9, 0xb6, 0xfb, 0xd7, 0xff, 0xc8, 0x04, 0x6e, 0x05, 0x7d, 0x03, 0x65, 0x04, + 0xb5, 0x05, 0x50, 0x08, 0xab, 0x0f, 0xe2, 0x14, 0x39, 0x1b, 0xf2, 0x1b, 0xd6, 0x17, 0x4a, 0x16, + 0xe4, 0x10, 0xfb, 0x0c, 0x7e, 0x04, 0xa3, 0xfb, 0x13, 0xfb, 0x6e, 0xf8, 0x43, 0xfa, 0x68, 0xfd, + 0x07, 0xfb, 0xa5, 0xfa, 0xe1, 0xf6, 0xad, 0xf0, 0x46, 0xed, 0x2e, 0xeb, 0x0c, 0xed, 0xaa, 0xee, + 0x7a, 0xf4, 0xaf, 0xf9, 0xa1, 0xfb, 0x68, 0xfe, 0xbb, 0x03, 0x94, 0x06, 0x8e, 0x05, 0xd7, 0x05, + 0xdd, 0x07, 0x0c, 0x09, 0x47, 0x0f, 0x46, 0x14, 0x02, 0x1a, 0x01, 0x1d, 0x42, 0x19, 0xb2, 0x17, + 0xb2, 0x13, 0x27, 0x10, 0x0d, 0x0a, 0xdb, 0xfe, 0x2f, 0xfc, 0x28, 0xf9, 0xc3, 0xf8, 0xfb, 0xfc, + 0x75, 0xfc, 0x28, 0xfc, 0x5a, 0xfa, 0xad, 0xf3, 0xa2, 0xee, 0xf7, 0xe9, 0xdf, 0xe9, 0x0a, 0xea, + 0x03, 0xee, 0xa3, 0xf3, 0x67, 0xf6, 0x6c, 0xf8, 0x21, 0xfd, 0x42, 0x01, 0x41, 0x01, 0x83, 0x00, + 0x01, 0x03, 0x1f, 0x04, 0xb9, 0x09, 0x9e, 0x0f, 0x6a, 0x15, 0x14, 0x1a, 0xee, 0x16, 0x57, 0x14, + 0x95, 0x10, 0x56, 0x0c, 0xaf, 0x08, 0xbc, 0xfd, 0x67, 0xf9, 0x8c, 0xf7, 0xb2, 0xf5, 0xb6, 0xf9, + 0xc2, 0xfa, 0xff, 0xf9, 0xda, 0xf9, 0x48, 0xf4, 0xe0, 0xef, 0xf0, 0xea, 0x14, 0xea, 0x99, 0xe9, + 0x12, 0xeb, 0x54, 0xef, 0x32, 0xf2, 0x27, 0xf3, 0xd2, 0xf6, 0xbf, 0xfb, 0xdb, 0xfd, 0xd8, 0xfc, + 0x19, 0xff, 0x2e, 0x00, 0x57, 0x04, 0x9b, 0x0a, 0x8b, 0x10, 0xa6, 0x17, 0xca, 0x17, 0x1a, 0x16, + 0x4b, 0x14, 0xea, 0x0f, 0x13, 0x0e, 0xb6, 0x03, 0x02, 0xfc, 0x8d, 0xf9, 0x23, 0xf6, 0x09, 0xf9, + 0x59, 0xfc, 0x99, 0xfb, 0xb2, 0xfc, 0xdd, 0xf8, 0x13, 0xf5, 0x42, 0xf0, 0x86, 0xee, 0x1f, 0xee, + 0x9b, 0xee, 0xe2, 0xf2, 0x75, 0xf6, 0xf4, 0xf6, 0x31, 0xfa, 0x4a, 0xfe, 0x4f, 0x00, 0x61, 0xfc, + 0x6a, 0xfc, 0x96, 0xfe, 0x72, 0x02, 0xb0, 0x05, 0xa0, 0x0a, 0x18, 0x13, 0xfa, 0x14, 0x1a, 0x15, + 0x8d, 0x15, 0x5d, 0x12, 0x8e, 0x11, 0xd6, 0x09, 0xc9, 0xff, 0x89, 0xfb, 0xac, 0xf9, 0x37, 0xfb, + 0x10, 0xff, 0x9e, 0xfe, 0x9f, 0xff, 0x9c, 0xfd, 0x73, 0xfa, 0xf5, 0xf5, 0x1f, 0xf3, 0xc2, 0xf1, + 0xd1, 0xf0, 0xdd, 0xf2, 0x55, 0xf6, 0x4f, 0xf9, 0xce, 0xfb, 0x96, 0xfe, 0x76, 0x01, 0x3c, 0x00, + 0x96, 0xff, 0x85, 0xff, 0xd8, 0x00, 0xaa, 0x05, 0x56, 0x09, 0xaf, 0x10, 0xed, 0x16, 0x9a, 0x17, + 0x88, 0x19, 0xba, 0x13, 0xef, 0x10, 0xa1, 0x0b, 0xd4, 0x00, 0x0d, 0xfd, 0x13, 0xfa, 0x13, 0xfa, + 0x14, 0xff, 0x49, 0xff, 0x49, 0x01, 0xc2, 0xff, 0x6d, 0xfb, 0x01, 0xf5, 0xf2, 0xee, 0x43, 0xed, + 0xb8, 0xec, 0xda, 0xf0, 0xd2, 0xf8, 0xf6, 0xfd, 0x35, 0x00, 0xfb, 0x00, 0x97, 0x03, 0xc1, 0x02, + 0xab, 0x00, 0x0b, 0x01, 0x3a, 0x00, 0x44, 0x03, 0x65, 0x07, 0x76, 0x0d, 0x3c, 0x13, 0xd3, 0x11, + 0x5b, 0x12, 0x71, 0x0f, 0xe0, 0x0d, 0xf3, 0x0b, 0xaa, 0x01, 0x4d, 0xfb, 0x9e, 0xf7, 0x74, 0xf4, + 0xca, 0xf8, 0x5c, 0xfb, 0x39, 0xfd, 0xd7, 0xfc, 0x17, 0xfa, 0x2b, 0xf6, 0x80, 0xf1, 0x22, 0xf0, + 0xfc, 0xed, 0x31, 0xee, 0x87, 0xf2, 0xe1, 0xf6, 0xd0, 0xf9, 0x88, 0xfc, 0x9f, 0x01, 0x3c, 0x04, + 0x7b, 0x03, 0x3c, 0x04, 0xa7, 0x03, 0xfa, 0x05, 0xfc, 0x09, 0x74, 0x0f, 0xa0, 0x17, 0x68, 0x18, + 0x19, 0x18, 0x14, 0x13, 0x14, 0x0d, 0xf1, 0x0a, 0xd5, 0x02, 0x68, 0xfb, 0x96, 0xf7, 0x51, 0xf3, + 0xab, 0xf5, 0x91, 0xf8, 0xab, 0xfa, 0xd0, 0xfb, 0x0d, 0xfa, 0x24, 0xf7, 0xd8, 0xf1, 0x5c, 0xf0, + 0x0c, 0xef, 0x8c, 0xee, 0xb6, 0xf2, 0x4d, 0xf7, 0xff, 0xf9, 0xb3, 0xfb, 0x2b, 0xff, 0x14, 0x02, + 0x66, 0x00, 0xfe, 0x00, 0x7e, 0x00, 0x62, 0x01, 0x01, 0x05, 0xaa, 0x09, 0x6a, 0x13, 0xb8, 0x16, + 0xde, 0x16, 0x2b, 0x15, 0x96, 0x0f, 0x78, 0x0e, 0x7c, 0x08, 0xff, 0xfe, 0x66, 0xf9, 0x82, 0xf3, + 0x2b, 0xf3, 0xc2, 0xf5, 0x4f, 0xf7, 0x3c, 0xf9, 0xc7, 0xf7, 0xd7, 0xf5, 0x1c, 0xf0, 0x5d, 0xed, + 0x79, 0xec, 0x64, 0xeb, 0xd6, 0xee, 0xc6, 0xf4, 0x8a, 0xf8, 0x06, 0xfa, 0xb4, 0xfc, 0x0e, 0x02, + 0x68, 0x02, 0x9b, 0x02, 0xd1, 0x01, 0xc0, 0x01, 0xc3, 0x05, 0x1f, 0x0a, 0x3e, 0x13, 0x88, 0x18, + 0x71, 0x18, 0x14, 0x18, 0x9e, 0x12, 0x30, 0x11, 0xfb, 0x0c, 0x67, 0x03, 0x0c, 0xfe, 0x73, 0xf9, + 0x8b, 0xf7, 0xd9, 0xf9, 0x14, 0xfb, 0xe1, 0xfc, 0x2e, 0xfb, 0x20, 0xf9, 0x3e, 0xf3, 0x0f, 0xef, + 0x4d, 0xee, 0xbe, 0xed, 0xe7, 0xef, 0x9e, 0xf4, 0xad, 0xf8, 0x63, 0xfb, 0xa9, 0xfd, 0x81, 0x03, + 0x62, 0x05, 0xe6, 0x05, 0x27, 0x06, 0x1e, 0x05, 0x83, 0x07, 0x18, 0x0a, 0xe5, 0x10, 0xca, 0x17, + 0xbf, 0x18, 0x59, 0x1a, 0xcd, 0x16, 0xe1, 0x14, 0x50, 0x13, 0x0d, 0x0b, 0xd8, 0x03, 0x11, 0xfe, + 0x90, 0xf9, 0x4e, 0xfb, 0xd1, 0xfc, 0x8b, 0xff, 0x1b, 0xfe, 0xcd, 0xfb, 0x3c, 0xf6, 0x14, 0xf0, + 0xfb, 0xec, 0xd2, 0xe9, 0xeb, 0xe8, 0xcf, 0xec, 0xe5, 0xf1, 0x9a, 0xf6, 0x0b, 0xf8, 0x1e, 0xfd, + 0x2a, 0x00, 0x09, 0x00, 0xa6, 0x00, 0x65, 0x00, 0x0c, 0x03, 0x18, 0x06, 0x17, 0x0c, 0xaf, 0x14, + 0x8e, 0x16, 0xa3, 0x17, 0xbc, 0x13, 0xfa, 0x0f, 0x46, 0x0f, 0x54, 0x09, 0x6e, 0x01, 0x07, 0xfc, + 0x31, 0xf7, 0x3d, 0xf8, 0xd7, 0xf9, 0x51, 0xfd, 0x98, 0xfd, 0x67, 0xfc, 0x26, 0xf9, 0x21, 0xf3, + 0xea, 0xef, 0x5c, 0xed, 0xb0, 0xea, 0x84, 0xec, 0xb0, 0xef, 0xc6, 0xf3, 0xca, 0xf4, 0x8d, 0xf8, + 0xaf, 0xfc, 0x89, 0xfd, 0x13, 0xff, 0x02, 0xff, 0x74, 0x00, 0x2a, 0x03, 0x69, 0x07, 0x54, 0x11, + 0xe7, 0x15, 0xbd, 0x18, 0x42, 0x17, 0xe3, 0x12, 0xed, 0x11, 0x3f, 0x0e, 0x13, 0x06, 0xd7, 0xff, + 0xb7, 0xf9, 0x77, 0xf9, 0x1c, 0xfb, 0xbe, 0xfe, 0x7c, 0xff, 0x11, 0xfe, 0xc4, 0xfb, 0x13, 0xf6, + 0x58, 0xf2, 0x4f, 0xf0, 0x4b, 0xed, 0x24, 0xee, 0x22, 0xf1, 0xb8, 0xf5, 0x37, 0xf7, 0xba, 0xf8, + 0x62, 0xfc, 0xdc, 0xfc, 0x9a, 0xfd, 0x8e, 0xfd, 0xdd, 0xfd, 0x52, 0x00, 0xcb, 0x02, 0xbc, 0x0b, + 0x9a, 0x11, 0xcb, 0x14, 0x05, 0x15, 0x4e, 0x11, 0x24, 0x10, 0x27, 0x0e, 0x5b, 0x07, 0x5a, 0x01, + 0x8a, 0xfa, 0xb5, 0xf8, 0x23, 0xf9, 0x25, 0xfc, 0x46, 0xfe, 0x7a, 0xfd, 0x93, 0xfc, 0xf1, 0xf7, + 0x58, 0xf3, 0xac, 0xf1, 0xbe, 0xee, 0x99, 0xee, 0xfa, 0xf0, 0x06, 0xf6, 0x32, 0xf9, 0xb8, 0xfa, + 0xf8, 0xfe, 0x3b, 0x00, 0x21, 0x00, 0x60, 0xff, 0xfa, 0xfd, 0xe5, 0xff, 0xd4, 0x00, 0x10, 0x08, + 0x63, 0x0f, 0x48, 0x13, 0x4a, 0x15, 0x80, 0x12, 0x8a, 0x10, 0x1f, 0x10, 0xef, 0x0a, 0x17, 0x05, + 0x45, 0xfe, 0x4c, 0xfb, 0xaa, 0xfb, 0x19, 0xfe, 0x81, 0x01, 0x97, 0x00, 0x80, 0xff, 0x91, 0xfb, + 0x3a, 0xf6, 0x10, 0xf4, 0x2b, 0xf1, 0xb1, 0xef, 0x36, 0xf1, 0xef, 0xf5, 0x89, 0xfa, 0x9a, 0xfb, + 0x4b, 0xff, 0xd1, 0x01, 0xa4, 0x02, 0xb8, 0x03, 0x83, 0x02, 0xb9, 0x03, 0x62, 0x03, 0x91, 0x07, + 0xda, 0x0e, 0xed, 0x12, 0x17, 0x15, 0x90, 0x12, 0x6b, 0x0f, 0x0b, 0x0f, 0x17, 0x0b, 0x8a, 0x05, + 0x99, 0xfe, 0xa6, 0xf9, 0x21, 0xf9, 0x97, 0xfa, 0x4a, 0xff, 0x28, 0x00, 0xf5, 0xff, 0xbf, 0xfd, + 0x6f, 0xf8, 0x9a, 0xf5, 0x90, 0xf2, 0x9c, 0xef, 0x5a, 0xef, 0x30, 0xf2, 0x88, 0xf7, 0x58, 0xf9, + 0x6f, 0xfc, 0x19, 0x00, 0x15, 0x01, 0x60, 0x02, 0x64, 0x01, 0x60, 0x02, 0xb0, 0x02, 0x60, 0x05, + 0x2d, 0x0d, 0x77, 0x12, 0xd4, 0x15, 0x64, 0x14, 0xf6, 0x0f, 0x31, 0x0e, 0xdc, 0x0a, 0x5b, 0x05, + 0x7c, 0xfe, 0xde, 0xf7, 0x86, 0xf6, 0x6d, 0xf6, 0xca, 0xfa, 0xde, 0xfc, 0xd3, 0xfc, 0xdd, 0xfb, + 0x28, 0xf7, 0x03, 0xf4, 0xff, 0xf1, 0xa9, 0xee, 0xec, 0xed, 0x7e, 0xef, 0xcb, 0xf4, 0x69, 0xf7, + 0xe7, 0xf9, 0x36, 0xfe, 0xdd, 0xff, 0x71, 0x01, 0x05, 0x01, 0x68, 0x01, 0xea, 0x01, 0x8a, 0x02, + 0x2e, 0x09, 0x24, 0x0f, 0x05, 0x14, 0x1e, 0x15, 0xe4, 0x11, 0xdb, 0x0f, 0x9d, 0x0d, 0x8d, 0x08, + 0x08, 0x02, 0xaa, 0xf9, 0x5a, 0xf6, 0x9d, 0xf4, 0xc7, 0xf7, 0xc1, 0xfa, 0x4e, 0xfb, 0x79, 0xfb, + 0x5d, 0xf8, 0x6b, 0xf4, 0xbc, 0xf2, 0xa9, 0xef, 0x84, 0xee, 0xd5, 0xee, 0xbc, 0xf3, 0xc6, 0xf7, + 0x92, 0xf9, 0x90, 0xfd, 0x8a, 0xff, 0x26, 0x01, 0x5e, 0x01, 0x81, 0x01, 0xa6, 0x02, 0xa5, 0x02, + 0xc4, 0x08, 0x49, 0x0f, 0xd5, 0x14, 0x5f, 0x17, 0x2e, 0x15, 0xac, 0x12, 0x93, 0x11, 0x0a, 0x0e, + 0x24, 0x09, 0x60, 0x00, 0xa0, 0xfb, 0x60, 0xf8, 0x40, 0xf9, 0x17, 0xfc, 0x38, 0xfc, 0xe3, 0xfb, + 0x27, 0xf9, 0x8d, 0xf4, 0xe1, 0xf2, 0x57, 0xf0, 0x13, 0xef, 0x6e, 0xee, 0x03, 0xf2, 0x19, 0xf7, + 0x74, 0xf9, 0x3b, 0xfd, 0x42, 0x00, 0xf0, 0x01, 0xc1, 0x02, 0x28, 0x02, 0x34, 0x03, 0xc4, 0x01, + 0x3e, 0x05, 0x3d, 0x0b, 0x53, 0x11, 0x9a, 0x15, 0x05, 0x15, 0x3c, 0x12, 0x1f, 0x11, 0xf1, 0x0d, + 0x50, 0x0a, 0x1f, 0x02, 0xef, 0xfc, 0xec, 0xf9, 0xeb, 0xf9, 0xaa, 0xfd, 0xc6, 0xfe, 0x99, 0xfe, + 0x60, 0xfc, 0x97, 0xf6, 0x4f, 0xf3, 0x98, 0xef, 0x03, 0xed, 0x5b, 0xeb, 0x27, 0xed, 0xfe, 0xf2, + 0x12, 0xf6, 0x3b, 0xf9, 0x08, 0xfd, 0x2f, 0xff, 0x3b, 0x01, 0x34, 0x01, 0x2c, 0x03, 0x89, 0x02, + 0xda, 0x04, 0x8d, 0x0a, 0xeb, 0x10, 0xf8, 0x15, 0x87, 0x16, 0x40, 0x13, 0xb2, 0x11, 0xe2, 0x0e, + 0x91, 0x0c, 0xdc, 0x05, 0x6e, 0xff, 0x81, 0xfb, 0x7e, 0xf9, 0xa0, 0xfc, 0x26, 0xff, 0xeb, 0xff, + 0xc7, 0xff, 0x31, 0xfb, 0xef, 0xf7, 0xbd, 0xf4, 0xab, 0xf1, 0x3d, 0xef, 0x58, 0xee, 0x83, 0xf2, + 0x96, 0xf5, 0xa1, 0xf7, 0x7d, 0xfb, 0xf8, 0xfd, 0x91, 0x00, 0xa2, 0x00, 0x58, 0x02, 0xf7, 0x01, + 0xb4, 0x02, 0xab, 0x07, 0x41, 0x0e, 0x97, 0x14, 0x65, 0x17, 0xd7, 0x14, 0xc4, 0x12, 0x94, 0x0f, + 0x57, 0x0d, 0xce, 0x07, 0xce, 0xff, 0x11, 0xfb, 0x73, 0xf7, 0x49, 0xf9, 0x91, 0xfc, 0x69, 0xfd, + 0xeb, 0xfd, 0x47, 0xfa, 0x14, 0xf6, 0x5a, 0xf3, 0x6e, 0xf0, 0x79, 0xee, 0x91, 0xec, 0x41, 0xef, + 0x7e, 0xf3, 0x65, 0xf5, 0xaf, 0xf8, 0xcb, 0xfa, 0xb4, 0xfc, 0x7e, 0xfc, 0x7b, 0xfd, 0x44, 0xfe, + 0x68, 0xfe, 0x5e, 0x02, 0x99, 0x08, 0xb6, 0x0f, 0xd1, 0x14, 0x59, 0x14, 0xf2, 0x12, 0xad, 0x10, + 0x73, 0x0e, 0xe9, 0x0a, 0xe0, 0x02, 0x7d, 0xfd, 0x5c, 0xf8, 0xba, 0xf7, 0xed, 0xfa, 0x58, 0xfc, + 0xa9, 0xfd, 0xe3, 0xfb, 0xef, 0xf7, 0x28, 0xf5, 0x00, 0xf2, 0x96, 0xf0, 0x6d, 0xee, 0x07, 0xf0, + 0x31, 0xf5, 0xe0, 0xf7, 0x0f, 0xfb, 0xbd, 0xfd, 0x0d, 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x8e, 0x01, + 0x12, 0x00, 0xe0, 0x01, 0xa6, 0x06, 0x5b, 0x0d, 0x94, 0x13, 0xec, 0x14, 0xd9, 0x13, 0x52, 0x12, + 0x23, 0x10, 0xc7, 0x0e, 0x0d, 0x08, 0x6a, 0x02, 0x54, 0xfd, 0x2b, 0xfb, 0x88, 0xfd, 0x13, 0xff, + 0x17, 0x00, 0xbc, 0xfe, 0x94, 0xf9, 0x38, 0xf6, 0xb5, 0xf2, 0x22, 0xf1, 0xd1, 0xee, 0x23, 0xee, + 0xa7, 0xf2, 0x0b, 0xf6, 0x46, 0xf9, 0x96, 0xfc, 0x71, 0xff, 0xab, 0x00, 0xd0, 0x00, 0x6b, 0x02, + 0x34, 0x01, 0x15, 0x02, 0xe4, 0x05, 0xcb, 0x0b, 0x2e, 0x12, 0x54, 0x14, 0x94, 0x12, 0xab, 0x10, + 0xc1, 0x0d, 0x6b, 0x0d, 0x39, 0x08, 0x82, 0x02, 0x5d, 0xfd, 0xfc, 0xf9, 0xf6, 0xfb, 0xa2, 0xfe, + 0x02, 0x00, 0x37, 0x00, 0xd1, 0xfb, 0x5b, 0xf8, 0xce, 0xf4, 0x5f, 0xf2, 0xd7, 0xef, 0x2d, 0xed, + 0xd8, 0xef, 0xa2, 0xf3, 0x7c, 0xf6, 0x8f, 0xf9, 0x80, 0xfc, 0xc2, 0xfe, 0x47, 0xff, 0xfc, 0x01, + 0x95, 0x01, 0xc7, 0x01, 0x8a, 0x04, 0xb8, 0x09, 0x89, 0x10, 0x19, 0x15, 0x9e, 0x14, 0x7a, 0x13, + 0xec, 0x0f, 0x53, 0x0f, 0x1d, 0x0b, 0xd2, 0x04, 0x4b, 0xff, 0x66, 0xfa, 0xb1, 0xfa, 0x87, 0xfd, + 0x6f, 0xff, 0x9f, 0x01, 0xec, 0xfe, 0x05, 0xfc, 0x01, 0xf9, 0x46, 0xf6, 0x3d, 0xf4, 0xc0, 0xf0, + 0x27, 0xf1, 0x6f, 0xf4, 0x7c, 0xf6, 0x08, 0xf9, 0x97, 0xfb, 0x99, 0xfe, 0xb5, 0xfe, 0xf4, 0x00, + 0xcd, 0x00, 0x39, 0x00, 0xfc, 0x01, 0x97, 0x06, 0x70, 0x0d, 0x52, 0x13, 0xdc, 0x13, 0x64, 0x13, + 0xc9, 0x0f, 0xaa, 0x0e, 0xf9, 0x0b, 0x6e, 0x05, 0x0f, 0xff, 0xa6, 0xf8, 0x6f, 0xf6, 0xc0, 0xf8, + 0xae, 0xfa, 0x82, 0xfd, 0x1c, 0xfc, 0x14, 0xf9, 0x41, 0xf6, 0x53, 0xf3, 0x01, 0xf2, 0x37, 0xef, + 0x56, 0xee, 0xd9, 0xf1, 0xb4, 0xf4, 0x85, 0xf7, 0x10, 0xfa, 0x75, 0xfd, 0x4d, 0xfd, 0xa2, 0xfe, + 0x43, 0xff, 0x71, 0xfe, 0x38, 0xff, 0xc3, 0x02, 0xbe, 0x08, 0x00, 0x10, 0x70, 0x12, 0x58, 0x13, + 0xd6, 0x10, 0x5e, 0x0f, 0x6a, 0x0e, 0x1c, 0x09, 0x56, 0x03, 0x26, 0xfd, 0xfa, 0xf8, 0x4d, 0xfa, + 0xa3, 0xfb, 0x48, 0xfe, 0x14, 0xfe, 0xe2, 0xfa, 0x2b, 0xf8, 0xd9, 0xf4, 0x65, 0xf3, 0x5d, 0xf1, + 0x32, 0xef, 0x1e, 0xf2, 0xa3, 0xf5, 0x7c, 0xf9, 0x94, 0xfc, 0xfe, 0x00, 0xc5, 0x01, 0x88, 0x02, + 0xc3, 0x03, 0xc3, 0x02, 0x0e, 0x02, 0x8b, 0x03, 0x9c, 0x07, 0x8f, 0x0e, 0xca, 0x11, 0x03, 0x13, + 0x04, 0x11, 0xf7, 0x0d, 0x91, 0x0d, 0xa3, 0x09, 0x60, 0x04, 0x61, 0xfe, 0xfa, 0xf8, 0xfb, 0xf8, + 0x4f, 0xfa, 0xfe, 0xfc, 0x87, 0xfe, 0xdd, 0xfb, 0xbe, 0xf8, 0xa7, 0xf4, 0xfd, 0xf1, 0x75, 0xf0, + 0x32, 0xed, 0x31, 0xee, 0x87, 0xf1, 0x92, 0xf5, 0xa4, 0xf8, 0x74, 0xfd, 0x32, 0x00, 0x86, 0x01, + 0x4c, 0x04, 0xbf, 0x04, 0x28, 0x04, 0x2f, 0x05, 0x57, 0x08, 0xd1, 0x0e, 0x37, 0x13, 0x58, 0x14, + 0x38, 0x13, 0x51, 0x0f, 0x85, 0x0e, 0xc9, 0x0b, 0xeb, 0x06, 0x29, 0x01, 0xea, 0xfa, 0x62, 0xf9, + 0xa1, 0xfa, 0x25, 0xfd, 0x1c, 0x00, 0x4e, 0xfe, 0x3f, 0xfb, 0x62, 0xf7, 0x26, 0xf4, 0xd6, 0xf2, + 0x4d, 0xef, 0x65, 0xee, 0xa3, 0xf0, 0x3e, 0xf4, 0xf6, 0xf6, 0x0f, 0xfb, 0xfe, 0xfe, 0x02, 0x00, + 0xa9, 0x02, 0xe8, 0x03, 0xd9, 0x03, 0xcc, 0x04, 0x85, 0x07, 0xca, 0x0d, 0xcc, 0x13, 0x3c, 0x16, + 0xf1, 0x16, 0xf2, 0x12, 0x71, 0x11, 0x08, 0x0f, 0xe5, 0x09, 0x55, 0x04, 0x07, 0xfd, 0xf5, 0xf8, + 0xf4, 0xf8, 0x7d, 0xfa, 0x2e, 0xfe, 0xd1, 0xfd, 0x66, 0xfb, 0x2a, 0xf8, 0x9b, 0xf4, 0x57, 0xf3, + 0x82, 0xf0, 0x39, 0xee, 0x76, 0xef, 0xbb, 0xf2, 0xbb, 0xf5, 0xb5, 0xf8, 0xd5, 0xfc, 0x7c, 0xfd, + 0x49, 0xff, 0xca, 0x00, 0x9e, 0x00, 0xf0, 0x00, 0xf3, 0x02, 0x52, 0x08, 0xac, 0x0f, 0x70, 0x13, + 0x64, 0x16, 0x9b, 0x13, 0xd1, 0x11, 0x82, 0x10, 0x7d, 0x0c, 0x80, 0x07, 0x1e, 0x00, 0x13, 0xfa, + 0xdc, 0xf8, 0x1a, 0xf9, 0x9a, 0xfc, 0x5f, 0xfd, 0xfe, 0xfa, 0xf9, 0xf7, 0x13, 0xf4, 0x73, 0xf2, + 0x7f, 0xf0, 0xdd, 0xed, 0x59, 0xee, 0x4b, 0xf1, 0xf5, 0xf4, 0xb0, 0xf7, 0xe5, 0xfc, 0x74, 0xfe, + 0xd3, 0xff, 0x55, 0x01, 0x30, 0x01, 0xb6, 0x00, 0x92, 0x01, 0xe9, 0x04, 0x2a, 0x0c, 0x7f, 0x10, + 0x74, 0x14, 0x17, 0x13, 0x89, 0x10, 0xf9, 0x0f, 0x7f, 0x0d, 0x98, 0x09, 0xc5, 0x03, 0xf5, 0xfc, + 0x06, 0xfb, 0x9b, 0xfa, 0x15, 0xfd, 0xd2, 0xfe, 0x9f, 0xfc, 0x81, 0xf9, 0x34, 0xf5, 0x49, 0xf2, + 0xb7, 0xf0, 0x6c, 0xed, 0xa7, 0xec, 0x8a, 0xee, 0xb4, 0xf2, 0x74, 0xf5, 0x9b, 0xfa, 0x5c, 0xfd, + 0x62, 0xfe, 0x47, 0x00, 0x2d, 0x01, 0xb5, 0x00, 0x26, 0x01, 0x86, 0x02, 0x1f, 0x09, 0xf2, 0x0d, + 0x5c, 0x12, 0xc4, 0x12, 0xdb, 0x0f, 0x33, 0x0f, 0x5e, 0x0d, 0x14, 0x0a, 0x66, 0x05, 0x70, 0xfe, + 0xb4, 0xfb, 0x08, 0xfb, 0x42, 0xfd, 0x77, 0x00, 0xfa, 0xff, 0xc2, 0xfd, 0x17, 0xfa, 0x41, 0xf6, + 0xa3, 0xf4, 0x6b, 0xf1, 0xa2, 0xef, 0xf6, 0xef, 0x97, 0xf3, 0xef, 0xf5, 0x6c, 0xfa, 0x34, 0xfe, + 0xbc, 0xff, 0xcf, 0x01, 0x77, 0x03, 0x62, 0x03, 0x79, 0x03, 0xa9, 0x03, 0x55, 0x09, 0x8e, 0x0e, + 0x13, 0x13, 0xff, 0x14, 0xd8, 0x11, 0x36, 0x10, 0xb3, 0x0e, 0x4c, 0x0b, 0x61, 0x07, 0x2f, 0x00, + 0x95, 0xfb, 0xec, 0xf9, 0xd5, 0xfa, 0xe1, 0xfe, 0x3d, 0x00, 0xf1, 0xfe, 0x3c, 0xfc, 0x36, 0xf8, + 0x00, 0xf7, 0x98, 0xf4, 0x32, 0xf2, 0xe1, 0xf0, 0x7c, 0xf3, 0xbe, 0xf5, 0xc7, 0xf8, 0xb8, 0xfc, + 0xe9, 0xfd, 0x1a, 0xff, 0xde, 0x00, 0xc1, 0x00, 0x03, 0x01, 0x92, 0x00, 0xce, 0x04, 0xf9, 0x0a, + 0x91, 0x0f, 0xc5, 0x13, 0x36, 0x12, 0x26, 0x10, 0xea, 0x0e, 0xc0, 0x0b, 0x49, 0x08, 0x4e, 0x01, + 0xfb, 0xfa, 0x07, 0xf8, 0x5c, 0xf7, 0xd3, 0xfa, 0x75, 0xfd, 0x07, 0xfd, 0x68, 0xfb, 0xbd, 0xf7, + 0x8a, 0xf6, 0x09, 0xf5, 0x0a, 0xf3, 0x39, 0xf1, 0x1c, 0xf3, 0x1f, 0xf6, 0x95, 0xf8, 0xcf, 0xfc, + 0xad, 0xfe, 0x5c, 0xff, 0xf0, 0x00, 0xfc, 0x00, 0xe7, 0x00, 0xd6, 0xff, 0xc1, 0x01, 0xc4, 0x07, + 0x24, 0x0c, 0xae, 0x11, 0x03, 0x12, 0xa5, 0x0f, 0x89, 0x0e, 0xfc, 0x0b, 0x4b, 0x09, 0xec, 0x03, + 0xd7, 0xfc, 0xf0, 0xf8, 0xaa, 0xf6, 0xc2, 0xf8, 0x01, 0xfc, 0xf8, 0xfb, 0xe0, 0xfa, 0x4b, 0xf7, + 0x13, 0xf5, 0xe0, 0xf3, 0x31, 0xf2, 0x83, 0xf0, 0x6d, 0xf1, 0xe3, 0xf4, 0x7a, 0xf7, 0x3a, 0xfc, + 0x88, 0xff, 0xfb, 0x00, 0xd8, 0x02, 0x49, 0x03, 0x30, 0x03, 0x4c, 0x02, 0x37, 0x02, 0x89, 0x07, + 0xab, 0x0b, 0xee, 0x10, 0xbd, 0x12, 0x61, 0x10, 0xea, 0x0e, 0xd3, 0x0c, 0x87, 0x0a, 0x41, 0x06, + 0xf3, 0xfe, 0x5e, 0xfa, 0x6a, 0xf7, 0x1f, 0xf8, 0xac, 0xfb, 0x36, 0xfc, 0x94, 0xfb, 0x56, 0xf8, + 0xd4, 0xf4, 0x87, 0xf3, 0xd1, 0xf1, 0x14, 0xf0, 0x55, 0xef, 0x73, 0xf2, 0xc4, 0xf4, 0x57, 0xf9, + 0xc4, 0xfd, 0x0d, 0x00, 0x33, 0x02, 0xb4, 0x03, 0x3b, 0x04, 0x73, 0x04, 0x26, 0x03, 0x68, 0x07, + 0x85, 0x0b, 0xdd, 0x10, 0x84, 0x14, 0xce, 0x12, 0xd1, 0x10, 0xc5, 0x0e, 0x1d, 0x0c, 0x3e, 0x09, + 0x57, 0x02, 0xfa, 0xfc, 0x31, 0xf9, 0x5e, 0xf8, 0x9a, 0xfb, 0x64, 0xfd, 0x72, 0xfd, 0x72, 0xfb, + 0x94, 0xf7, 0xbd, 0xf5, 0xd5, 0xf3, 0xf9, 0xf1, 0xab, 0xef, 0x6e, 0xf1, 0x4e, 0xf3, 0xc4, 0xf6, + 0xa0, 0xfb, 0x7b, 0xfe, 0xa4, 0x00, 0x0b, 0x03, 0xf1, 0x03, 0x7e, 0x05, 0xf0, 0x03, 0x37, 0x07, + 0xc6, 0x0b, 0xe0, 0x10, 0x1c, 0x16, 0xdd, 0x15, 0x7c, 0x13, 0x8d, 0x11, 0x9d, 0x0e, 0x47, 0x0c, + 0xff, 0x05, 0x84, 0xff, 0xe0, 0xfa, 0xfd, 0xf7, 0xfb, 0xf9, 0xbf, 0xfc, 0x49, 0xfd, 0x96, 0xfc, + 0xa4, 0xf8, 0x49, 0xf6, 0x4f, 0xf4, 0xe1, 0xf2, 0xd7, 0xef, 0x1f, 0xf0, 0xbc, 0xf1, 0x1f, 0xf4, + 0x53, 0xf8, 0x58, 0xfb, 0xf1, 0xfc, 0x49, 0xff, 0x0f, 0x00, 0xe4, 0x01, 0x52, 0x00, 0xd9, 0x01, + 0xf1, 0x06, 0xfc, 0x0b, 0x70, 0x12, 0xb8, 0x14, 0x26, 0x13, 0xf0, 0x11, 0x56, 0x0f, 0xbd, 0x0d, + 0xe6, 0x08, 0x35, 0x02, 0xf5, 0xfc, 0xda, 0xf8, 0x47, 0xf9, 0x56, 0xfc, 0x45, 0xfd, 0x36, 0xfd, + 0x9b, 0xf9, 0xea, 0xf6, 0xdd, 0xf4, 0x27, 0xf4, 0x8a, 0xf1, 0x78, 0xf0, 0x1d, 0xf2, 0x2b, 0xf4, + 0x10, 0xf8, 0xe5, 0xfb, 0x3a, 0xfd, 0x91, 0xff, 0x0a, 0x00, 0xae, 0x01, 0xa5, 0x00, 0x15, 0x00, + 0x35, 0x04, 0x33, 0x08, 0x41, 0x0e, 0x95, 0x12, 0x0c, 0x12, 0x4e, 0x11, 0xe3, 0x0e, 0xb6, 0x0d, + 0xb7, 0x0a, 0xb4, 0x04, 0x73, 0xff, 0x85, 0xfa, 0x12, 0xf9, 0xde, 0xfb, 0x1a, 0xfd, 0xae, 0xfd, + 0x8a, 0xfa, 0x07, 0xf7, 0x30, 0xf4, 0xdc, 0xf2, 0x68, 0xf0, 0x62, 0xee, 0x90, 0xef, 0x69, 0xf1, + 0xd0, 0xf4, 0x58, 0xf9, 0x8f, 0xfb, 0x0d, 0xfe, 0x2b, 0xff, 0xa7, 0x00, 0xa3, 0x00, 0xb8, 0xfe, + 0x74, 0x01, 0xd0, 0x04, 0x2c, 0x0a, 0x9e, 0x0f, 0x41, 0x10, 0x56, 0x0f, 0x4c, 0x0d, 0xe0, 0x0b, + 0x88, 0x0a, 0xc2, 0x05, 0xd7, 0x00, 0x4d, 0xfc, 0xda, 0xf9, 0xbb, 0xfc, 0x18, 0xff, 0x76, 0x00, + 0xac, 0xfe, 0x1a, 0xfb, 0xf5, 0xf7, 0x5e, 0xf6, 0x97, 0xf4, 0xe7, 0xf1, 0xfb, 0xf1, 0x3b, 0xf3, + 0xbe, 0xf5, 0x58, 0xfa, 0x38, 0xfd, 0x00, 0x00, 0xa5, 0x01, 0xdd, 0x02, 0x60, 0x04, 0x28, 0x02, + 0xc1, 0x03, 0xde, 0x06, 0x34, 0x0b, 0xd9, 0x10, 0x61, 0x12, 0x3f, 0x11, 0xef, 0x0e, 0xd6, 0x0c, + 0xd6, 0x0b, 0x68, 0x07, 0x01, 0x02, 0x0b, 0xfd, 0x2a, 0xf9, 0xc6, 0xfa, 0x8c, 0xfd, 0xa2, 0xff, + 0x9d, 0xff, 0xa2, 0xfc, 0xab, 0xf9, 0x93, 0xf7, 0x54, 0xf6, 0x4a, 0xf3, 0x18, 0xf2, 0xb3, 0xf2, + 0x4e, 0xf4, 0x6a, 0xf8, 0xb9, 0xfb, 0xbf, 0xfd, 0xd0, 0xff, 0x78, 0x00, 0xcb, 0x02, 0xf7, 0x00, + 0x1e, 0x01, 0x03, 0x04, 0xb8, 0x07, 0xee, 0x0d, 0x5f, 0x11, 0x67, 0x11, 0xb5, 0x0f, 0xd3, 0x0c, + 0xad, 0x0b, 0x2a, 0x08, 0xa2, 0x02, 0x77, 0xfd, 0x5f, 0xf8, 0xd2, 0xf7, 0x48, 0xfa, 0xb1, 0xfc, + 0xd5, 0xfd, 0x05, 0xfc, 0x72, 0xf9, 0x07, 0xf7, 0x96, 0xf6, 0x88, 0xf4, 0x5e, 0xf3, 0xe1, 0xf3, + 0x35, 0xf5, 0x99, 0xf8, 0xbb, 0xfc, 0xe4, 0xfe, 0x69, 0x01, 0x91, 0x01, 0xb6, 0x03, 0x89, 0x02, + 0x2e, 0x01, 0x18, 0x03, 0x1a, 0x06, 0xa6, 0x0b, 0x7c, 0x10, 0xa7, 0x11, 0xbb, 0x10, 0xfb, 0x0d, + 0x2a, 0x0d, 0xb4, 0x0a, 0xc7, 0x05, 0xa3, 0x00, 0x9c, 0xfa, 0x80, 0xf7, 0x36, 0xf9, 0x50, 0xfb, + 0x47, 0xfd, 0xd6, 0xfb, 0x35, 0xf9, 0xfb, 0xf5, 0x63, 0xf5, 0x09, 0xf4, 0x4a, 0xf2, 0x59, 0xf2, + 0x78, 0xf3, 0x77, 0xf6, 0x7f, 0xfb, 0x00, 0xfe, 0x0c, 0x01, 0x69, 0x01, 0x5b, 0x03, 0x63, 0x03, + 0x67, 0x01, 0x33, 0x02, 0x83, 0x04, 0xd7, 0x08, 0x32, 0x0e, 0x73, 0x10, 0xa1, 0x10, 0x05, 0x0e, + 0xad, 0x0c, 0xfd, 0x0a, 0xcf, 0x06, 0x05, 0x02, 0x55, 0xfc, 0xdb, 0xf7, 0x6d, 0xf8, 0x1f, 0xfa, + 0x6f, 0xfc, 0xc2, 0xfb, 0x4c, 0xf9, 0x81, 0xf5, 0x37, 0xf4, 0x1d, 0xf3, 0x1c, 0xf1, 0x31, 0xf0, + 0x11, 0xf1, 0x33, 0xf3, 0x43, 0xf8, 0x7f, 0xfb, 0x5b, 0xff, 0xc3, 0x00, 0xbf, 0x02, 0x7f, 0x04, + 0xb9, 0x02, 0xf0, 0x02, 0xc4, 0x04, 0x38, 0x08, 0xc7, 0x0d, 0xea, 0x10, 0x09, 0x12, 0xa8, 0x0f, + 0x74, 0x0d, 0x3f, 0x0c, 0x24, 0x09, 0xc9, 0x04, 0xbc, 0xff, 0xd2, 0xf9, 0x04, 0xf9, 0x78, 0xfa, + 0x4c, 0xfd, 0xdf, 0xfd, 0x57, 0xfc, 0xb7, 0xf8, 0x2d, 0xf6, 0x3e, 0xf5, 0x11, 0xf3, 0x65, 0xf1, + 0x7b, 0xf1, 0x39, 0xf2, 0x64, 0xf6, 0xf2, 0xf9, 0xfe, 0xfd, 0x86, 0x00, 0x6a, 0x02, 0x62, 0x05, + 0xcc, 0x04, 0x89, 0x04, 0x53, 0x06, 0xe0, 0x08, 0x4a, 0x0e, 0x37, 0x12, 0x91, 0x14, 0x46, 0x13, + 0x88, 0x10, 0x5d, 0x0f, 0xa4, 0x0c, 0x11, 0x08, 0x17, 0x03, 0x5d, 0xfc, 0xe0, 0xf9, 0x87, 0xfa, + 0x44, 0xfd, 0xda, 0xfe, 0x0e, 0xfe, 0x51, 0xfb, 0x24, 0xf8, 0xf6, 0xf6, 0x42, 0xf5, 0xee, 0xf2, + 0x58, 0xf2, 0xd4, 0xf1, 0x7c, 0xf4, 0xf3, 0xf7, 0x3b, 0xfb, 0x0d, 0xfe, 0xd3, 0xfe, 0xb2, 0x01, + 0xff, 0x01, 0x82, 0x01, 0xd3, 0x02, 0x02, 0x05, 0x2e, 0x0a, 0x39, 0x0f, 0xf8, 0x12, 0x5e, 0x13, + 0x58, 0x10, 0xee, 0x0e, 0x05, 0x0d, 0xa7, 0x08, 0x28, 0x04, 0x32, 0xfd, 0xb1, 0xf8, 0xf9, 0xf7, + 0xdf, 0xf9, 0x28, 0xfc, 0x6a, 0xfc, 0x9a, 0xfa, 0x35, 0xf7, 0x91, 0xf5, 0x62, 0xf4, 0x32, 0xf2, + 0x69, 0xf1, 0xb5, 0xf0, 0x55, 0xf2, 0x25, 0xf6, 0x55, 0xf9, 0xfb, 0xfc, 0xa9, 0xfd, 0x6e, 0x00, + 0x99, 0x01, 0x9a, 0x00, 0x28, 0x01, 0x7e, 0x02, 0xdf, 0x06, 0x9c, 0x0c, 0x47, 0x11, 0x9d, 0x13, + 0xc7, 0x11, 0x94, 0x10, 0xb1, 0x0f, 0x76, 0x0c, 0xde, 0x08, 0xbc, 0x02, 0x00, 0xfd, 0x12, 0xfb, + 0xf6, 0xfb, 0xa1, 0xfe, 0x40, 0xff, 0x0b, 0xfe, 0x05, 0xfa, 0x3f, 0xf7, 0x39, 0xf6, 0x49, 0xf4, + 0xea, 0xf2, 0xf5, 0xf1, 0x48, 0xf2, 0xff, 0xf5, 0xf6, 0xf8, 0x0d, 0xfd, 0x6a, 0xfe, 0x81, 0x00, + 0x3f, 0x02, 0xff, 0x00, 0x65, 0x00, 0xcf, 0x00, 0xc3, 0x03, 0x9c, 0x08, 0xc9, 0x0c, 0xea, 0x0f, + 0xcb, 0x0e, 0x19, 0x0d, 0x9c, 0x0c, 0x3b, 0x0a, 0x47, 0x07, 0x93, 0x02, 0x5d, 0xfc, 0x7b, 0xf9, + 0x89, 0xf9, 0x80, 0xfc, 0xec, 0xfd, 0xd6, 0xfd, 0xb0, 0xfa, 0x4c, 0xf7, 0xbb, 0xf5, 0xbe, 0xf3, + 0x8a, 0xf1, 0x58, 0xf0, 0x4c, 0xef, 0x97, 0xf2, 0x96, 0xf5, 0x27, 0xfa, 0x6c, 0xfc, 0x5b, 0xfe, + 0x38, 0x01, 0x42, 0x01, 0xef, 0x00, 0x19, 0x01, 0xf0, 0x02, 0x9f, 0x07, 0xcf, 0x0b, 0x1d, 0x10, + 0x40, 0x10, 0x0a, 0x0e, 0x2e, 0x0d, 0x2a, 0x0b, 0x37, 0x08, 0x9f, 0x04, 0x76, 0xfe, 0xcd, 0xfa, + 0xf1, 0xf9, 0x17, 0xfd, 0xad, 0xff, 0xbe, 0x00, 0xd1, 0xfe, 0x5c, 0xfb, 0x43, 0xf9, 0xe4, 0xf7, + 0x48, 0xf5, 0x4a, 0xf4, 0x6e, 0xf2, 0x26, 0xf4, 0x87, 0xf6, 0x77, 0xfa, 0x86, 0xfd, 0x36, 0xff, + 0x17, 0x02, 0xeb, 0x02, 0x68, 0x02, 0x87, 0x02, 0x36, 0x03, 0x12, 0x07, 0xd4, 0x0a, 0x8e, 0x0f, + 0x39, 0x11, 0x21, 0x0f, 0xc0, 0x0d, 0x58, 0x0c, 0x5b, 0x09, 0x62, 0x06, 0x18, 0x00, 0xda, 0xfa, + 0x3f, 0xf8, 0x17, 0xfa, 0x2e, 0xfd, 0x0a, 0xff, 0x77, 0xfe, 0xc6, 0xfb, 0x22, 0xf9, 0x59, 0xf8, + 0x02, 0xf6, 0x06, 0xf5, 0xf3, 0xf2, 0xa1, 0xf3, 0xdc, 0xf5, 0x69, 0xf9, 0x4d, 0xfd, 0xbe, 0xfe, + 0x2d, 0x01, 0x7e, 0x02, 0xe2, 0x01, 0xb1, 0x01, 0xd2, 0x01, 0x5a, 0x05, 0x02, 0x09, 0x31, 0x0d, + 0x9e, 0x0f, 0x54, 0x0e, 0xe7, 0x0d, 0x85, 0x0d, 0xb2, 0x09, 0xee, 0x06, 0x6e, 0x01, 0x53, 0xfb, + 0x93, 0xf7, 0x1b, 0xf8, 0xc1, 0xfa, 0xcc, 0xfc, 0x44, 0xfd, 0xc6, 0xfa, 0x5a, 0xf7, 0x64, 0xf7, + 0x68, 0xf6, 0x23, 0xf6, 0x41, 0xf4, 0x59, 0xf3, 0x77, 0xf5, 0xd3, 0xf8, 0x79, 0xfd, 0x9e, 0xff, + 0xcd, 0x01, 0xa6, 0x03, 0xac, 0x02, 0x3a, 0x02, 0xdd, 0x01, 0x1b, 0x04, 0xbb, 0x07, 0xab, 0x0b, + 0x89, 0x0f, 0x2e, 0x0f, 0xad, 0x0d, 0x5e, 0x0d, 0x07, 0x0b, 0x93, 0x08, 0xdb, 0x03, 0x36, 0xfe, + 0x69, 0xfa, 0xf7, 0xf8, 0xba, 0xf9, 0xf8, 0xfa, 0x8f, 0xfb, 0x0f, 0xfa, 0xcf, 0xf6, 0x2e, 0xf6, + 0x2b, 0xf5, 0x60, 0xf4, 0xa2, 0xf3, 0x89, 0xf2, 0x49, 0xf4, 0x6e, 0xf6, 0xc7, 0xfa, 0xd6, 0xfd, + 0x63, 0x00, 0xf6, 0x03, 0x61, 0x05, 0xb2, 0x06, 0x9f, 0x06, 0xf0, 0x07, 0x6c, 0x0a, 0xdb, 0x0c, + 0xaa, 0x10, 0xb3, 0x11, 0x10, 0x10, 0x38, 0x0f, 0xfb, 0x0c, 0xe7, 0x0a, 0x63, 0x07, 0xfd, 0x00, + 0x37, 0xfb, 0xe5, 0xf7, 0x10, 0xf9, 0x02, 0xfb, 0x62, 0xfc, 0x13, 0xfc, 0x2c, 0xf8, 0xbf, 0xf5, + 0x17, 0xf4, 0x89, 0xf2, 0xb6, 0xf1, 0xa0, 0xee, 0x98, 0xee, 0x2a, 0xf0, 0x6c, 0xf4, 0xa0, 0xf8, + 0x52, 0xfb, 0x45, 0x00, 0x84, 0x02, 0x79, 0x03, 0x18, 0x04, 0x64, 0x04, 0x13, 0x07, 0x3f, 0x0a, + 0xcf, 0x0d, 0x69, 0x11, 0x2d, 0x11, 0x35, 0x10, 0xcc, 0x0e, 0xb8, 0x0b, 0x39, 0x08, 0x39, 0x02, + 0x96, 0xfc, 0x28, 0xf8, 0x43, 0xf7, 0x71, 0xf9, 0x73, 0xfb, 0x7c, 0xfd, 0x9d, 0xfc, 0xa4, 0xfa, + 0x2a, 0xf9, 0x5c, 0xf5, 0xea, 0xf3, 0x48, 0xf0, 0x39, 0xef, 0x49, 0xf0, 0xae, 0xf3, 0x76, 0xf8, + 0x51, 0xfc, 0xb3, 0xff, 0x47, 0x03, 0x2d, 0x04, 0xf3, 0x04, 0xab, 0x04, 0x33, 0x07, 0x39, 0x0a, + 0x4f, 0x0e, 0xbe, 0x12, 0x76, 0x14, 0xf7, 0x13, 0x99, 0x12, 0x89, 0x0f, 0xe9, 0x0c, 0x45, 0x08, + 0x37, 0x03, 0x44, 0xfd, 0x25, 0xfb, 0x33, 0xfc, 0x56, 0xfe, 0x0c, 0x01, 0x7e, 0x01, 0xcd, 0xfe, + 0x08, 0xfd, 0xf6, 0xf8, 0xf9, 0xf7, 0x8f, 0xf5, 0x72, 0xf3, 0x98, 0xf3, 0x29, 0xf5, 0x1a, 0xf9, + 0xdf, 0xfc, 0x9b, 0xff, 0xa4, 0x01, 0x9c, 0x01, 0xec, 0x00, 0x08, 0xff, 0x97, 0xff, 0x8f, 0x01, + 0x54, 0x05, 0xab, 0x0a, 0xcc, 0x0d, 0x65, 0x0d, 0x72, 0x0c, 0xa8, 0x09, 0xa9, 0x07, 0x15, 0x03, + 0xfd, 0xfd, 0x3f, 0xf8, 0x7a, 0xf4, 0x46, 0xf5, 0x21, 0xf8, 0xc9, 0xf9, 0xf1, 0xfa, 0x5a, 0xf8, + 0xde, 0xf6, 0xed, 0xf3, 0x4f, 0xf3, 0x85, 0xf2, 0xe1, 0xf0, 0x9a, 0xf1, 0x81, 0xf3, 0xad, 0xf7, + 0x6f, 0xfc, 0x80, 0xff, 0xec, 0x02, 0xf0, 0x03, 0xf9, 0x03, 0x7d, 0x01, 0x7c, 0x01, 0x4c, 0x03, + 0x28, 0x06, 0x3d, 0x0b, 0x89, 0x0f, 0x11, 0x10, 0x09, 0x11, 0x62, 0x0f, 0xec, 0x0d, 0x67, 0x0a, + 0xcd, 0x05, 0xab, 0x00, 0x77, 0xfc, 0x00, 0xfc, 0xc1, 0xfe, 0x5f, 0x00, 0x72, 0x02, 0xb1, 0x00, + 0x63, 0xfe, 0xd8, 0xfa, 0xa1, 0xf8, 0x96, 0xf7, 0x43, 0xf5, 0xfd, 0xf4, 0x28, 0xf6, 0xef, 0xf9, + 0xbb, 0xfe, 0x59, 0x01, 0x18, 0x04, 0xf0, 0x04, 0x71, 0x05, 0x6b, 0x03, 0x05, 0x02, 0xcf, 0x02, + 0x9e, 0x04, 0x7c, 0x08, 0xe5, 0x0c, 0xb9, 0x0d, 0x80, 0x0e, 0xef, 0x0c, 0xa2, 0x0b, 0xa3, 0x08, + 0x16, 0x04, 0x2f, 0xff, 0xb2, 0xf9, 0x0f, 0xf7, 0x2b, 0xf9, 0x38, 0xfb, 0xa1, 0xfd, 0xfe, 0xfc, + 0x1e, 0xfb, 0x4e, 0xf8, 0xf2, 0xf5, 0xe2, 0xf5, 0xb7, 0xf3, 0x6c, 0xf2, 0x67, 0xf2, 0x76, 0xf4, + 0xc3, 0xf8, 0x7b, 0xfb, 0x7e, 0xfe, 0xd2, 0xff, 0xc3, 0x00, 0x41, 0xff, 0x09, 0xfd, 0x87, 0xfd, + 0xe7, 0xfe, 0x7a, 0x02, 0xf1, 0x07, 0x3c, 0x0a, 0x03, 0x0c, 0x4b, 0x0b, 0xd1, 0x09, 0x95, 0x07, + 0x10, 0x03, 0xef, 0xfe, 0xcc, 0xf9, 0x50, 0xf6, 0xf9, 0xf7, 0xb6, 0xfa, 0x5f, 0xfe, 0x9c, 0xff, + 0x5a, 0xfe, 0x79, 0xfc, 0x89, 0xf9, 0x78, 0xf9, 0xce, 0xf7, 0x17, 0xf6, 0xd3, 0xf5, 0xa3, 0xf7, + 0x04, 0xfc, 0x45, 0xff, 0x37, 0x02, 0xa5, 0x03, 0xa4, 0x04, 0xcd, 0x03, 0x13, 0x01, 0xff, 0x00, + 0x49, 0x02, 0x47, 0x05, 0x2a, 0x0b, 0xb3, 0x0e, 0xbd, 0x10, 0x99, 0x10, 0x50, 0x0e, 0x2f, 0x0c, + 0xa9, 0x07, 0x74, 0x03, 0x43, 0xfe, 0xff, 0xf8, 0xd0, 0xf8, 0xf9, 0xfa, 0xb9, 0xfd, 0xaf, 0xff, + 0xf3, 0xfe, 0x2a, 0xfe, 0x40, 0xfb, 0xf4, 0xfa, 0xcf, 0xf9, 0x2e, 0xf8, 0xd5, 0xf7, 0x1c, 0xf9, + 0xe2, 0xfc, 0x13, 0x00, 0xc6, 0x02, 0x77, 0x04, 0x3b, 0x05, 0xfa, 0x04, 0x9d, 0x01, 0x66, 0x00, + 0xd3, 0x00, 0xbf, 0x02, 0x40, 0x08, 0x4b, 0x0c, 0x42, 0x0e, 0xde, 0x0e, 0x76, 0x0c, 0x1d, 0x0b, + 0x21, 0x07, 0x66, 0x02, 0x1d, 0xfd, 0x0a, 0xf7, 0xeb, 0xf4, 0xf6, 0xf6, 0x4e, 0xf9, 0x25, 0xfc, + 0xbf, 0xfb, 0xed, 0xfa, 0xc5, 0xf7, 0xdd, 0xf6, 0x6b, 0xf6, 0x27, 0xf5, 0xa0, 0xf4, 0x43, 0xf5, + 0xab, 0xf8, 0xd1, 0xfc, 0x6e, 0x00, 0x27, 0x03, 0x03, 0x04, 0x4f, 0x05, 0x13, 0x03, 0x64, 0x01, + 0x65, 0x01, 0xf5, 0x01, 0xf1, 0x05, 0xa0, 0x0a, 0xb1, 0x0c, 0x96, 0x0e, 0xb6, 0x0c, 0x7e, 0x0b, + 0x7b, 0x08, 0x66, 0x04, 0xf1, 0xff, 0x37, 0xfa, 0x5f, 0xf6, 0x7f, 0xf7, 0x6f, 0xf9, 0xb1, 0xfc, + 0xf1, 0xfc, 0xf3, 0xfc, 0x44, 0xfa, 0x3f, 0xf8, 0xb2, 0xf7, 0x3c, 0xf6, 0x20, 0xf5, 0x1c, 0xf5, + 0x7e, 0xf7, 0xf4, 0xfb, 0x04, 0x00, 0x18, 0x04, 0x86, 0x05, 0xec, 0x07, 0xf4, 0x06, 0xe4, 0x04, + 0xa6, 0x04, 0x9b, 0x04, 0x52, 0x07, 0xb0, 0x0c, 0x33, 0x0f, 0xbd, 0x11, 0x36, 0x10, 0x95, 0x0e, + 0xeb, 0x0b, 0x97, 0x07, 0xec, 0x02, 0xf2, 0xfc, 0x3f, 0xf7, 0xc5, 0xf6, 0xca, 0xf7, 0x55, 0xfb, + 0x8c, 0xfc, 0xb1, 0xfc, 0x76, 0xfa, 0x4e, 0xf7, 0x32, 0xf6, 0xbd, 0xf4, 0x21, 0xf3, 0x27, 0xf2, + 0xe9, 0xf2, 0x78, 0xf6, 0xc6, 0xf9, 0x2b, 0xfe, 0xaa, 0xff, 0x2a, 0x02, 0xcf, 0x02, 0x9f, 0x00, + 0x12, 0x00, 0x3e, 0x00, 0xf7, 0x01, 0x8f, 0x07, 0xc5, 0x0a, 0x0f, 0x0e, 0x22, 0x0e, 0x0a, 0x0d, + 0x56, 0x0b, 0x59, 0x07, 0x83, 0x02, 0x1f, 0xfd, 0xd4, 0xf6, 0x30, 0xf5, 0xc5, 0xf5, 0x29, 0xf9, + 0xab, 0xfb, 0x8e, 0xfc, 0xda, 0xfb, 0xd8, 0xf8, 0xa6, 0xf7, 0xc2, 0xf6, 0x11, 0xf5, 0xca, 0xf3, + 0xe2, 0xf3, 0x65, 0xf7, 0xa7, 0xfa, 0x5a, 0xff, 0x9f, 0x01, 0xb2, 0x03, 0x53, 0x05, 0x0c, 0x03, + 0x7c, 0x01, 0x71, 0x01, 0xe9, 0x01, 0x25, 0x07, 0x68, 0x0b, 0x5a, 0x0f, 0x18, 0x11, 0xf4, 0x0f, + 0xcd, 0x0e, 0xb5, 0x0b, 0x2e, 0x07, 0xbe, 0x02, 0x31, 0xfc, 0xc4, 0xf8, 0x98, 0xf8, 0xfc, 0xfa, + 0xb7, 0xfd, 0x56, 0xfe, 0x44, 0xfe, 0x11, 0xfb, 0x21, 0xf9, 0x38, 0xf8, 0xbd, 0xf6, 0x7f, 0xf5, + 0x01, 0xf5, 0xc9, 0xf7, 0x99, 0xfa, 0xdf, 0xfe, 0xa8, 0x01, 0x3c, 0x03, 0x8f, 0x05, 0x0d, 0x04, + 0xd7, 0x01, 0x7e, 0x01, 0x9d, 0x00, 0x36, 0x04, 0x9a, 0x08, 0xa4, 0x0c, 0xa8, 0x0f, 0x32, 0x0f, + 0x88, 0x0e, 0x02, 0x0c, 0x06, 0x08, 0x1f, 0x04, 0xe9, 0xfd, 0xf8, 0xf8, 0xcd, 0xf7, 0x44, 0xf9, + 0x9d, 0xfc, 0x7d, 0xfd, 0x08, 0xfe, 0x2a, 0xfb, 0x2b, 0xf8, 0x09, 0xf7, 0x78, 0xf5, 0x2a, 0xf4, + 0x1b, 0xf3, 0x1c, 0xf5, 0x11, 0xf8, 0x1a, 0xfc, 0x0d, 0x00, 0x85, 0x01, 0x0e, 0x04, 0xa5, 0x03, + 0x42, 0x01, 0x9f, 0x00, 0x5c, 0xff, 0x4c, 0x01, 0xc2, 0x05, 0x70, 0x09, 0x45, 0x0d, 0x53, 0x0d, + 0xd2, 0x0c, 0x31, 0x0b, 0xde, 0x07, 0xa9, 0x04, 0x80, 0xff, 0xe7, 0xf9, 0x3d, 0xf8, 0x92, 0xf8, + 0xf6, 0xfb, 0x9d, 0xfd, 0x0f, 0xff, 0xac, 0xfd, 0x5e, 0xfa, 0x9d, 0xf8, 0x20, 0xf7, 0xc2, 0xf5, + 0x10, 0xf4, 0xa4, 0xf4, 0x26, 0xf7, 0x7a, 0xfa, 0x54, 0xff, 0xf2, 0x00, 0xd2, 0x03, 0x39, 0x05, + 0x41, 0x03, 0x5f, 0x02, 0x26, 0x01, 0x91, 0x01, 0x1d, 0x06, 0xbd, 0x09, 0x5b, 0x0e, 0x5f, 0x0f, + 0xb8, 0x0e, 0x55, 0x0d, 0x2e, 0x0a, 0x69, 0x06, 0xf4, 0x01, 0x90, 0xfb, 0xc5, 0xf8, 0x19, 0xf8, + 0x76, 0xfb, 0xc8, 0xfd, 0xa1, 0xff, 0x7a, 0xff, 0x2d, 0xfc, 0xb6, 0xf9, 0x7b, 0xf8, 0x77, 0xf7, + 0xfb, 0xf5, 0x54, 0xf5, 0x5f, 0xf7, 0x65, 0xf9, 0xff, 0xfd, 0xeb, 0xff, 0xce, 0x01, 0xd2, 0x03, + 0x5c, 0x02, 0xdf, 0x00, 0x1d, 0x00, 0x7e, 0xff, 0x80, 0x03, 0x41, 0x07, 0xf5, 0x0b, 0x01, 0x0e, + 0x8d, 0x0d, 0xa0, 0x0c, 0x37, 0x0a, 0x7c, 0x06, 0xe9, 0x02, 0x84, 0xfc, 0x6c, 0xf8, 0x43, 0xf6, + 0x35, 0xf8, 0xd7, 0xfa, 0xf7, 0xfc, 0x2d, 0xfe, 0xdb, 0xfb, 0x25, 0xf9, 0x1e, 0xf8, 0x4c, 0xf7, + 0x71, 0xf6, 0x15, 0xf5, 0xe4, 0xf6, 0xa3, 0xf8, 0x26, 0xfd, 0x05, 0x00, 0x98, 0x01, 0x13, 0x04, + 0x8d, 0x03, 0x7d, 0x01, 0xfc, 0x00, 0x38, 0xff, 0xc3, 0x01, 0x66, 0x05, 0xec, 0x09, 0x61, 0x0d, + 0xe8, 0x0d, 0xa8, 0x0d, 0xfd, 0x0b, 0x5c, 0x08, 0x97, 0x05, 0xb3, 0xff, 0xe1, 0xfa, 0xf0, 0xf7, + 0x9a, 0xf8, 0x7f, 0xfb, 0x43, 0xfd, 0xd5, 0xfe, 0x3c, 0xfd, 0x1c, 0xfa, 0xd6, 0xf8, 0x26, 0xf8, + 0xcb, 0xf7, 0xf0, 0xf5, 0x48, 0xf7, 0xfe, 0xf8, 0xe5, 0xfc, 0xf0, 0x00, 0xcd, 0x02, 0xa2, 0x05, + 0xd0, 0x06, 0xb1, 0x04, 0x1e, 0x04, 0xdc, 0x01, 0xd6, 0x02, 0xdb, 0x05, 0x8d, 0x09, 0x9b, 0x0d, + 0xa6, 0x0e, 0x20, 0x0e, 0xff, 0x0c, 0x75, 0x09, 0x3b, 0x07, 0x38, 0x02, 0x83, 0xfc, 0xba, 0xf8, + 0x9e, 0xf7, 0x06, 0xfa, 0xf3, 0xfb, 0xc0, 0xfd, 0x5c, 0xfd, 0x24, 0xfa, 0xc2, 0xf7, 0x3e, 0xf6, + 0x0e, 0xf6, 0xf7, 0xf3, 0x6a, 0xf4, 0xcb, 0xf5, 0xb5, 0xf8, 0x65, 0xfd, 0xdd, 0xff, 0x9e, 0x02, + 0x16, 0x05, 0xc0, 0x03, 0x52, 0x03, 0x82, 0x01, 0x7e, 0x01, 0x16, 0x04, 0x31, 0x07, 0x94, 0x0b, + 0x78, 0x0d, 0xef, 0x0c, 0x17, 0x0c, 0x23, 0x09, 0xa8, 0x06, 0xe8, 0x02, 0x44, 0xfd, 0x2c, 0xf9, + 0xf0, 0xf6, 0x0b, 0xf9, 0xff, 0xfa, 0x1c, 0xfd, 0x0b, 0xfe, 0x5c, 0xfb, 0x06, 0xf9, 0x2c, 0xf7, + 0x12, 0xf7, 0x2f, 0xf5, 0x71, 0xf4, 0x84, 0xf5, 0x3b, 0xf7, 0xc6, 0xfb, 0xe5, 0xfe, 0x8f, 0x01, + 0x14, 0x05, 0xfc, 0x04, 0xa0, 0x04, 0xbc, 0x03, 0x85, 0x02, 0xdf, 0x04, 0x6d, 0x07, 0xc7, 0x0b, + 0xee, 0x0e, 0xf8, 0x0e, 0x9a, 0x0e, 0x2f, 0x0c, 0x58, 0x09, 0x1e, 0x06, 0x27, 0x00, 0x58, 0xfb, + 0x8e, 0xf7, 0x63, 0xf8, 0x8a, 0xfa, 0xaa, 0xfc, 0xa8, 0xfe, 0x03, 0xfd, 0x52, 0xfa, 0xcd, 0xf7, + 0x20, 0xf7, 0xb8, 0xf5, 0xee, 0xf3, 0xa5, 0xf4, 0x89, 0xf5, 0x5d, 0xf9, 0xe6, 0xfc, 0x17, 0xff, + 0x8d, 0x02, 0x7e, 0x03, 0xfb, 0x02, 0x87, 0x02, 0x64, 0x00, 0x23, 0x02, 0xa6, 0x04, 0xe0, 0x08, + 0xe1, 0x0c, 0xcf, 0x0d, 0xc6, 0x0d, 0x6c, 0x0c, 0x9d, 0x09, 0x53, 0x07, 0xd6, 0x01, 0xbe, 0xfc, + 0x10, 0xf8, 0x44, 0xf7, 0xe6, 0xf8, 0xb3, 0xfa, 0x20, 0xfd, 0xa5, 0xfc, 0x2a, 0xfa, 0x91, 0xf7, + 0xa8, 0xf6, 0x5e, 0xf6, 0x38, 0xf4, 0xab, 0xf4, 0x54, 0xf5, 0x54, 0xf8, 0x3c, 0xfc, 0x87, 0xfe, + 0xca, 0x01, 0x19, 0x04, 0x83, 0x03, 0x49, 0x03, 0xf0, 0x00, 0x7c, 0x01, 0x9a, 0x03, 0x29, 0x07, + 0xf9, 0x0b, 0x52, 0x0e, 0xd9, 0x0e, 0xa0, 0x0e, 0xcf, 0x0b, 0x04, 0x0a, 0x68, 0x05, 0x48, 0x00, + 0x24, 0xfb, 0xaf, 0xf8, 0xd9, 0xf9, 0x47, 0xfb, 0x92, 0xfd, 0x18, 0xfe, 0x9e, 0xfb, 0xdc, 0xf8, + 0xc9, 0xf6, 0xcd, 0xf6, 0x95, 0xf4, 0x7f, 0xf4, 0x06, 0xf5, 0x17, 0xf7, 0x22, 0xfb, 0x10, 0xfe, + 0xea, 0x00, 0x45, 0x04, 0x52, 0x04, 0x85, 0x04, 0x59, 0x02, 0xe2, 0x01, 0x59, 0x03, 0xf6, 0x05, + 0x60, 0x0a, 0x9c, 0x0d, 0x62, 0x0e, 0xf1, 0x0e, 0xdd, 0x0c, 0xa4, 0x0b, 0x87, 0x08, 0xbd, 0x03, + 0x8f, 0xfe, 0x96, 0xfa, 0xce, 0xfa, 0xe1, 0xfb, 0x2d, 0xfe, 0x06, 0x00, 0x6d, 0xfe, 0x8c, 0xfb, + 0x02, 0xf8, 0x7f, 0xf7, 0x83, 0xf5, 0x82, 0xf4, 0xae, 0xf3, 0x93, 0xf4, 0xd9, 0xf7, 0x07, 0xfb, + 0x23, 0xfe, 0x95, 0x02, 0x9e, 0x03, 0xe7, 0x03, 0x24, 0x02, 0x28, 0x00, 0xec, 0x00, 0x50, 0x03, + 0x76, 0x07, 0x91, 0x0b, 0xc6, 0x0c, 0x7d, 0x0d, 0xbc, 0x0b, 0x40, 0x0a, 0xdf, 0x07, 0x3b, 0x03, + 0xee, 0xfd, 0x10, 0xf9, 0x2c, 0xf8, 0x9d, 0xf9, 0x31, 0xfc, 0x01, 0xff, 0x85, 0xfe, 0x9d, 0xfc, + 0x5e, 0xf9, 0xc0, 0xf8, 0x3c, 0xf7, 0xee, 0xf5, 0xc6, 0xf5, 0xed, 0xf5, 0xbe, 0xf8, 0x8e, 0xfc, + 0x4f, 0xff, 0x92, 0x03, 0x84, 0x04, 0x74, 0x04, 0x6a, 0x03, 0x63, 0x01, 0x0f, 0x02, 0xb5, 0x03, + 0x42, 0x07, 0xe0, 0x0b, 0x52, 0x0d, 0x94, 0x0e, 0x41, 0x0d, 0x31, 0x0b, 0xfe, 0x08, 0x51, 0x04, + 0x08, 0xff, 0x78, 0xf9, 0xd2, 0xf7, 0x61, 0xf9, 0x6a, 0xfb, 0xa2, 0xfe, 0xbb, 0xfe, 0x49, 0xfd, + 0xdb, 0xf9, 0x57, 0xf8, 0x5b, 0xf7, 0x95, 0xf5, 0x30, 0xf5, 0x25, 0xf5, 0x13, 0xf7, 0x8b, 0xfa, + 0xcf, 0xfc, 0xa6, 0x00, 0x0c, 0x03, 0x9a, 0x03, 0x6a, 0x03, 0xd7, 0x00, 0x40, 0x00, 0x1f, 0x01, + 0xa7, 0x03, 0x78, 0x08, 0x24, 0x0b, 0xc1, 0x0c, 0x5e, 0x0c, 0x4e, 0x0a, 0xc5, 0x08, 0xf1, 0x04, + 0x68, 0x00, 0x84, 0xfa, 0x0e, 0xf7, 0x5b, 0xf7, 0x97, 0xf8, 0xd8, 0xfb, 0x72, 0xfd, 0x48, 0xfd, + 0xb3, 0xfa, 0xd3, 0xf8, 0x9d, 0xf8, 0x25, 0xf7, 0xf3, 0xf6, 0xed, 0xf6, 0x28, 0xf8, 0xe8, 0xfb, + 0xa7, 0xfe, 0xf5, 0x01, 0xf1, 0x04, 0x8d, 0x05, 0x0a, 0x06, 0x01, 0x04, 0xc0, 0x02, 0x39, 0x03, + 0xb1, 0x04, 0xc6, 0x08, 0xe7, 0x0b, 0x71, 0x0d, 0x37, 0x0e, 0x76, 0x0c, 0x6a, 0x0b, 0x45, 0x08, + 0x29, 0x04, 0x52, 0xfe, 0x5f, 0xf9, 0x7d, 0xf8, 0xbe, 0xf8, 0x45, 0xfb, 0x43, 0xfd, 0x71, 0xfd, + 0x04, 0xfb, 0xb8, 0xf7, 0x4b, 0xf7, 0xcb, 0xf5, 0x06, 0xf5, 0xa3, 0xf4, 0x67, 0xf5, 0xd5, 0xf8, + 0x47, 0xfc, 0x5c, 0xff, 0x8f, 0x03, 0xd9, 0x04, 0x16, 0x06, 0xc9, 0x04, 0xd8, 0x02, 0xab, 0x02, + 0x53, 0x03, 0x84, 0x06, 0x4f, 0x0a, 0x34, 0x0c, 0xdb, 0x0d, 0x56, 0x0c, 0x32, 0x0b, 0x9e, 0x08, + 0xe9, 0x04, 0x00, 0x00, 0x1d, 0xfa, 0x30, 0xf8, 0x48, 0xf8, 0x0e, 0xfa, 0xbb, 0xfc, 0x5d, 0xfd, + 0x2e, 0xfc, 0xb5, 0xf8, 0xa1, 0xf7, 0xf0, 0xf5, 0x9e, 0xf4, 0x07, 0xf4, 0x0b, 0xf4, 0x7c, 0xf6, + 0xf9, 0xf9, 0x73, 0xfc, 0xda, 0x00, 0x2b, 0x03, 0xfa, 0x04, 0xb7, 0x04, 0xe2, 0x02, 0xc1, 0x02, + 0x6e, 0x03, 0x1a, 0x06, 0xb3, 0x0a, 0x0d, 0x0d, 0x54, 0x0f, 0x73, 0x0e, 0xee, 0x0c, 0x0d, 0x0b, + 0xad, 0x07, 0x62, 0x03, 0x5a, 0xfd, 0xb8, 0xf9, 0x05, 0xf9, 0xe4, 0xf9, 0x0a, 0xfd, 0x6b, 0xfe, + 0x79, 0xfe, 0xf4, 0xfa, 0x14, 0xf9, 0x89, 0xf7, 0xb8, 0xf5, 0xe0, 0xf4, 0x60, 0xf4, 0x59, 0xf5, + 0x7a, 0xf8, 0x93, 0xfa, 0xa7, 0xfe, 0x8c, 0x01, 0x92, 0x03, 0x4f, 0x04, 0xbc, 0x02, 0x0d, 0x02, + 0x55, 0x02, 0xde, 0x03, 0x3e, 0x08, 0x35, 0x0b, 0x09, 0x0e, 0x0d, 0x0e, 0xa9, 0x0c, 0x7d, 0x0b, + 0xad, 0x08, 0x14, 0x05, 0xc9, 0xfe, 0xb0, 0xf9, 0x63, 0xf8, 0x5b, 0xf8, 0x0b, 0xfb, 0xa5, 0xfc, + 0x8c, 0xfd, 0xd8, 0xfa, 0x50, 0xf8, 0x37, 0xf7, 0xeb, 0xf5, 0xfc, 0xf4, 0x78, 0xf4, 0x9d, 0xf4, + 0x8b, 0xf7, 0xbe, 0xf9, 0x40, 0xfd, 0x8a, 0x00, 0x3f, 0x02, 0x95, 0x03, 0x5b, 0x02, 0xf3, 0x00, + 0xff, 0x00, 0xc9, 0x01, 0x1f, 0x06, 0xc7, 0x09, 0x18, 0x0d, 0x98, 0x0e, 0x97, 0x0d, 0x2a, 0x0d, + 0xfe, 0x0a, 0x35, 0x08, 0xf1, 0x02, 0xe1, 0xfc, 0xb0, 0xfa, 0x9c, 0xf9, 0xba, 0xfb, 0x87, 0xfd, + 0xe5, 0xfe, 0x0d, 0xfd, 0xfc, 0xf9, 0x8a, 0xf8, 0x48, 0xf7, 0x3d, 0xf6, 0x7f, 0xf5, 0x0d, 0xf5, + 0x94, 0xf7, 0x15, 0xfa, 0xfe, 0xfc, 0x8b, 0x00, 0xb6, 0x02, 0x9e, 0x04, 0x56, 0x04, 0x7b, 0x02, + 0xe3, 0x01, 0xba, 0x01, 0xd9, 0x04, 0x6e, 0x08, 0x94, 0x0b, 0xd0, 0x0d, 0x22, 0x0d, 0xed, 0x0c, + 0x9c, 0x0b, 0x6f, 0x09, 0x58, 0x05, 0xae, 0xfe, 0x80, 0xfb, 0xab, 0xf9, 0xeb, 0xfa, 0x43, 0xfd, + 0x11, 0xff, 0x93, 0xfe, 0x73, 0xfb, 0xdf, 0xf9, 0x73, 0xf8, 0x0b, 0xf7, 0x13, 0xf6, 0xf2, 0xf4, + 0x6e, 0xf6, 0xd2, 0xf8, 0x2c, 0xfb, 0x19, 0xff, 0x9b, 0x01, 0xff, 0x03, 0x7f, 0x04, 0x9c, 0x02, + 0x8b, 0x01, 0xe7, 0x00, 0xa9, 0x02, 0x2f, 0x06, 0x05, 0x09, 0xd3, 0x0b, 0x74, 0x0b, 0x0c, 0x0b, + 0x13, 0x0a, 0x10, 0x08, 0x14, 0x05, 0x0e, 0xff, 0x0e, 0xfb, 0xee, 0xf8, 0x32, 0xf9, 0x99, 0xfb, + 0xdb, 0xfd, 0xdf, 0xfe, 0x57, 0xfc, 0x49, 0xfa, 0xf8, 0xf8, 0x7b, 0xf7, 0x6f, 0xf6, 0x6e, 0xf5, + 0x15, 0xf6, 0x96, 0xf8, 0x95, 0xfa, 0x73, 0xfe, 0x86, 0x01, 0x27, 0x04, 0xaf, 0x05, 0x6c, 0x04, + 0x3a, 0x03, 0x72, 0x02, 0x12, 0x03, 0x78, 0x06, 0x46, 0x09, 0xab, 0x0c, 0x58, 0x0d, 0x71, 0x0c, + 0x93, 0x0b, 0x3d, 0x09, 0xab, 0x06, 0xec, 0x00, 0x81, 0xfb, 0xc4, 0xf8, 0x2d, 0xf8, 0x68, 0xfa, + 0xb9, 0xfc, 0xec, 0xfe, 0x64, 0xfd, 0x52, 0xfb, 0xc7, 0xf9, 0x7d, 0xf8, 0x7e, 0xf7, 0x7a, 0xf6, + 0x2a, 0xf6, 0x66, 0xf8, 0xf8, 0xf9, 0x48, 0xfd, 0xa2, 0x00, 0x08, 0x03, 0xfe, 0x04, 0x3b, 0x04, + 0xaf, 0x02, 0xcb, 0x01, 0x7b, 0x01, 0x8c, 0x04, 0x7e, 0x07, 0x46, 0x0b, 0xce, 0x0c, 0x0a, 0x0c, + 0x91, 0x0b, 0x85, 0x09, 0xc0, 0x07, 0xd7, 0x02, 0x8d, 0xfc, 0xd8, 0xf8, 0x7f, 0xf6, 0xd2, 0xf7, + 0x9f, 0xf9, 0x58, 0xfc, 0xfc, 0xfb, 0xe9, 0xf9, 0x94, 0xf8, 0x84, 0xf7, 0x82, 0xf6, 0xcc, 0xf5, + 0xb7, 0xf4, 0x97, 0xf6, 0x89, 0xf8, 0x95, 0xfb, 0x3e, 0xff, 0xdb, 0x01, 0x54, 0x04, 0xc7, 0x04, + 0x70, 0x03, 0x83, 0x02, 0x67, 0x01, 0x8c, 0x03, 0xf9, 0x05, 0x75, 0x09, 0x16, 0x0c, 0xf4, 0x0b, + 0xde, 0x0b, 0x77, 0x0a, 0x02, 0x09, 0xd3, 0x05, 0x59, 0xff, 0xef, 0xfa, 0xd5, 0xf7, 0x4d, 0xf8, + 0x9d, 0xf9, 0x53, 0xfc, 0x1d, 0xfd, 0x1d, 0xfb, 0x46, 0xf9, 0x0f, 0xf8, 0x0d, 0xf7, 0x98, 0xf6, + 0x67, 0xf5, 0xb2, 0xf6, 0xc3, 0xf8, 0x6c, 0xfb, 0x0d, 0xff, 0x2f, 0x02, 0xdb, 0x04, 0x61, 0x06, + 0x6e, 0x05, 0x85, 0x04, 0xdb, 0x02, 0xe9, 0x03, 0x79, 0x06, 0x98, 0x09, 0xe7, 0x0c, 0x27, 0x0d, + 0xd5, 0x0c, 0xc6, 0x0b, 0x35, 0x0a, 0x2c, 0x08, 0x27, 0x02, 0x15, 0xfd, 0xfd, 0xf8, 0x12, 0xf8, + 0xe5, 0xf8, 0x4c, 0xfb, 0xe7, 0xfc, 0x63, 0xfb, 0x26, 0xf9, 0x7a, 0xf7, 0xee, 0xf5, 0x1e, 0xf5, + 0xa9, 0xf3, 0xf2, 0xf3, 0xc8, 0xf5, 0x0a, 0xf8, 0x8a, 0xfb, 0x18, 0xff, 0x6b, 0x02, 0x22, 0x05, + 0xfa, 0x04, 0x56, 0x04, 0xa1, 0x02, 0xd1, 0x02, 0x31, 0x05, 0xa6, 0x07, 0x9a, 0x0b, 0xf6, 0x0c, + 0xe6, 0x0c, 0x81, 0x0c, 0xd6, 0x0a, 0xb1, 0x09, 0x73, 0x04, 0xf1, 0xfe, 0x39, 0xfa, 0x42, 0xf8, + 0xe7, 0xf8, 0x2d, 0xfb, 0xd7, 0xfd, 0x81, 0xfd, 0x23, 0xfb, 0x45, 0xf9, 0x7a, 0xf7, 0x8e, 0xf6, + 0xef, 0xf4, 0x17, 0xf4, 0x57, 0xf5, 0x20, 0xf7, 0x1c, 0xfa, 0x66, 0xfd, 0xb8, 0x00, 0xf4, 0x03, + 0x88, 0x04, 0x2b, 0x04, 0xe6, 0x02, 0x68, 0x02, 0x98, 0x04, 0x17, 0x07, 0x50, 0x0b, 0xd5, 0x0d, + 0x0b, 0x0e, 0xed, 0x0d, 0xfa, 0x0b, 0x47, 0x0b, 0x3e, 0x07, 0x82, 0x01, 0x69, 0xfc, 0x22, 0xf9, + 0x03, 0xf9, 0x84, 0xfa, 0x6b, 0xfd, 0xf5, 0xfd, 0x14, 0xfc, 0x09, 0xfa, 0x2d, 0xf8, 0x0c, 0xf7, + 0x9f, 0xf5, 0x36, 0xf4, 0x1f, 0xf5, 0x8e, 0xf6, 0x18, 0xf9, 0x43, 0xfc, 0x16, 0xff, 0x62, 0x02, + 0xa4, 0x03, 0x67, 0x03, 0x55, 0x02, 0x29, 0x01, 0xf4, 0x02, 0x5c, 0x05, 0x27, 0x09, 0xa2, 0x0c, + 0x7a, 0x0d, 0xdc, 0x0d, 0x73, 0x0c, 0xf7, 0x0b, 0x73, 0x09, 0xe1, 0x03, 0x9a, 0xfe, 0x5d, 0xfa, + 0x70, 0xf9, 0xf8, 0xf9, 0xad, 0xfc, 0x1e, 0xfe, 0xe3, 0xfc, 0xe5, 0xfa, 0xf3, 0xf8, 0x90, 0xf7, + 0x6c, 0xf6, 0x9f, 0xf4, 0xd7, 0xf4, 0xdd, 0xf5, 0xb9, 0xf7, 0x9d, 0xfa, 0x67, 0xfd, 0xaa, 0x00, + 0xa9, 0x02, 0x9a, 0x02, 0xe5, 0x01, 0x19, 0x00, 0xb8, 0x00, 0xae, 0x02, 0xeb, 0x05, 0x2b, 0x0a, + 0xc3, 0x0b, 0x8d, 0x0c, 0xb5, 0x0b, 0x19, 0x0b, 0x1d, 0x0a, 0x47, 0x05, 0x22, 0x00, 0x5b, 0xfb, + 0xab, 0xf9, 0xad, 0xf9, 0xed, 0xfb, 0x27, 0xfe, 0xa1, 0xfd, 0xc7, 0xfb, 0xe3, 0xf9, 0x2c, 0xf8, + 0x56, 0xf7, 0xa7, 0xf5, 0x39, 0xf5, 0x15, 0xf6, 0xc4, 0xf7, 0xbc, 0xfa, 0xba, 0xfd, 0x17, 0x01, + 0x1c, 0x04, 0x78, 0x04, 0x68, 0x04, 0x86, 0x02, 0x39, 0x02, 0x7d, 0x03, 0xa2, 0x05, 0xee, 0x09, + 0xdf, 0x0b, 0xbc, 0x0c, 0x75, 0x0c, 0x91, 0x0b, 0x93, 0x0b, 0xdb, 0x07, 0x26, 0x03, 0xd4, 0xfd, + 0x0b, 0xfb, 0x5c, 0xfa, 0xfa, 0xfb, 0x98, 0xfe, 0x6f, 0xff, 0xcf, 0xfd, 0xd3, 0xfb, 0xa4, 0xf9, + 0x94, 0xf8, 0x66, 0xf6, 0x22, 0xf5, 0x65, 0xf5, 0x6d, 0xf6, 0xe1, 0xf8, 0xe5, 0xfb, 0x01, 0xff, + 0x9e, 0x02, 0xc4, 0x03, 0x46, 0x04, 0x78, 0x02, 0x72, 0x01, 0x7f, 0x02, 0x29, 0x04, 0x05, 0x08, + 0xd6, 0x0a, 0xef, 0x0b, 0x05, 0x0c, 0x7b, 0x0a, 0x80, 0x0a, 0x7c, 0x07, 0xbe, 0x02, 0x6a, 0xfd, + 0xcd, 0xf9, 0xb8, 0xf8, 0xc7, 0xf9, 0xcf, 0xfc, 0xb2, 0xfe, 0xd7, 0xfd, 0x3d, 0xfc, 0x1e, 0xfa, + 0x35, 0xf9, 0xa6, 0xf7, 0x02, 0xf6, 0x0c, 0xf6, 0xfb, 0xf6, 0xfa, 0xf8, 0xaf, 0xfb, 0x69, 0xfe, + 0x39, 0x02, 0xd5, 0x03, 0x90, 0x04, 0x6e, 0x03, 0xd7, 0x01, 0x84, 0x02, 0xad, 0x03, 0x38, 0x07, + 0xac, 0x0a, 0xf0, 0x0b, 0xb3, 0x0c, 0x34, 0x0b, 0x3f, 0x0b, 0x1a, 0x09, 0x13, 0x05, 0xb1, 0xff, + 0x1a, 0xfb, 0xe5, 0xf8, 0x14, 0xf9, 0xa1, 0xfb, 0x3b, 0xfe, 0x3b, 0xfe, 0xf4, 0xfc, 0xf3, 0xfa, + 0xd0, 0xf9, 0xbd, 0xf8, 0x29, 0xf7, 0xd8, 0xf6, 0x8c, 0xf7, 0x0b, 0xf9, 0xa7, 0xfb, 0x1a, 0xfe, + 0xd1, 0x01, 0xfa, 0x03, 0xeb, 0x04, 0x52, 0x04, 0x59, 0x02, 0x67, 0x02, 0xf4, 0x02, 0x7b, 0x05, + 0x47, 0x09, 0xd5, 0x0a, 0x27, 0x0c, 0xb1, 0x0a, 0x53, 0x0a, 0x39, 0x09, 0xd1, 0x05, 0xc3, 0x00, + 0x81, 0xfb, 0x3d, 0xf8, 0x2e, 0xf7, 0xeb, 0xf8, 0xaf, 0xfb, 0x6a, 0xfc, 0x6f, 0xfb, 0xb6, 0xf9, + 0x85, 0xf8, 0xba, 0xf7, 0x42, 0xf6, 0x9a, 0xf5, 0x3f, 0xf6, 0x77, 0xf7, 0x18, 0xfa, 0x87, 0xfc, + 0x45, 0x00, 0x47, 0x03, 0xbe, 0x04, 0x0a, 0x05, 0x17, 0x03, 0x5f, 0x02, 0xc3, 0x02, 0x1e, 0x04, + 0x08, 0x08, 0x07, 0x0a, 0xba, 0x0b, 0x17, 0x0b, 0x5d, 0x0a, 0x00, 0x0a, 0x73, 0x07, 0xf2, 0x02, + 0x37, 0xfd, 0x0b, 0xf9, 0x37, 0xf7, 0xff, 0xf7, 0xae, 0xfa, 0x55, 0xfc, 0xb6, 0xfb, 0x04, 0xfa, + 0x42, 0xf8, 0x72, 0xf7, 0xef, 0xf5, 0xf8, 0xf4, 0x5c, 0xf5, 0x55, 0xf6, 0xe3, 0xf8, 0x72, 0xfb, + 0x07, 0xff, 0xbc, 0x02, 0xe2, 0x04, 0x29, 0x06, 0xc7, 0x04, 0xf0, 0x03, 0x54, 0x04, 0x1f, 0x05, + 0x09, 0x09, 0xaf, 0x0b, 0xd5, 0x0d, 0xd4, 0x0d, 0xa3, 0x0c, 0xa0, 0x0c, 0xa2, 0x0a, 0xba, 0x06, + 0x0e, 0x01, 0x5b, 0xfc, 0x8a, 0xf9, 0x60, 0xf9, 0xa2, 0xfb, 0x92, 0xfd, 0x9c, 0xfd, 0x05, 0xfc, + 0xd5, 0xf9, 0xbf, 0xf8, 0x42, 0xf7, 0x9b, 0xf5, 0x2d, 0xf5, 0x80, 0xf5, 0x20, 0xf7, 0x6d, 0xf9, + 0x80, 0xfc, 0x74, 0x00, 0xe9, 0x02, 0xca, 0x04, 0x51, 0x04, 0x17, 0x03, 0x9f, 0x03, 0xe4, 0x03, + 0x30, 0x07, 0x6a, 0x0a, 0xa3, 0x0c, 0x99, 0x0d, 0x4e, 0x0c, 0x4c, 0x0c, 0xd3, 0x0a, 0xa1, 0x07, + 0x4a, 0x02, 0xff, 0xfc, 0x5c, 0xf9, 0x40, 0xf8, 0xc7, 0xf9, 0x3a, 0xfc, 0xfb, 0xfc, 0x03, 0xfc, + 0xd9, 0xf9, 0x96, 0xf8, 0x34, 0xf7, 0x47, 0xf5, 0x62, 0xf4, 0x3b, 0xf4, 0x2a, 0xf5, 0x51, 0xf7, + 0x7c, 0xf9, 0x89, 0xfd, 0x6e, 0x00, 0xf3, 0x02, 0x88, 0x03, 0x4f, 0x02, 0xad, 0x02, 0xde, 0x02, + 0xa1, 0x05, 0x6f, 0x09, 0x2b, 0x0c, 0x54, 0x0e, 0xb2, 0x0d, 0xc4, 0x0d, 0x13, 0x0d, 0xa4, 0x0a, + 0xfa, 0x05, 0x80, 0x00, 0x08, 0xfc, 0xed, 0xf9, 0x68, 0xfa, 0xd5, 0xfc, 0x31, 0xfe, 0xed, 0xfd, + 0xc4, 0xfb, 0x0f, 0xfa, 0xcf, 0xf8, 0xeb, 0xf6, 0x7c, 0xf5, 0xff, 0xf4, 0x3b, 0xf5, 0x3c, 0xf7, + 0xee, 0xf8, 0x7f, 0xfc, 0x7f, 0xff, 0xe9, 0x01, 0xe8, 0x02, 0x89, 0x01, 0x69, 0x01, 0x64, 0x01, + 0x0c, 0x03, 0xe3, 0x06, 0xaa, 0x09, 0xb0, 0x0c, 0xc0, 0x0c, 0xc7, 0x0c, 0xb9, 0x0c, 0x4e, 0x0b, + 0xa0, 0x07, 0x68, 0x02, 0x4d, 0xfd, 0x68, 0xfa, 0xdc, 0xf9, 0x11, 0xfc, 0xfb, 0xfd, 0x2e, 0xfe, + 0x41, 0xfc, 0x44, 0xfa, 0xfc, 0xf8, 0x31, 0xf7, 0x37, 0xf5, 0x7d, 0xf4, 0x37, 0xf4, 0xcb, 0xf5, + 0x61, 0xf7, 0x99, 0xfa, 0xd8, 0xfd, 0x93, 0x00, 0x72, 0x02, 0x56, 0x01, 0xb9, 0x00, 0x73, 0x00, + 0xcf, 0x00, 0x34, 0x04, 0xe4, 0x06, 0x46, 0x0a, 0x25, 0x0b, 0x2e, 0x0b, 0xa5, 0x0b, 0x0d, 0x0b, + 0x57, 0x08, 0xd8, 0x03, 0xbf, 0xfe, 0x5a, 0xfb, 0x3f, 0xfa, 0x17, 0xfc, 0x53, 0xfe, 0x77, 0xff, + 0x52, 0xfe, 0x3c, 0xfc, 0xc7, 0xfa, 0x2a, 0xf9, 0xfd, 0xf6, 0x00, 0xf6, 0x52, 0xf5, 0x7e, 0xf6, + 0xe0, 0xf7, 0xb5, 0xfa, 0x2f, 0xfe, 0xfd, 0x00, 0x74, 0x03, 0x29, 0x03, 0x15, 0x02, 0x16, 0x02, + 0x73, 0x01, 0x12, 0x04, 0xc7, 0x06, 0x07, 0x0a, 0x90, 0x0b, 0x27, 0x0b, 0x6b, 0x0b, 0x2c, 0x0b, + 0x40, 0x09, 0x3b, 0x05, 0x32, 0x00, 0x63, 0xfc, 0x16, 0xfa, 0x18, 0xfb, 0x8f, 0xfd, 0x71, 0xff, + 0x67, 0xff, 0x64, 0xfd, 0xdd, 0xfb, 0x8f, 0xfa, 0x61, 0xf8, 0x39, 0xf7, 0x1c, 0xf6, 0x8b, 0xf6, + 0xdd, 0xf7, 0xc3, 0xf9, 0xf8, 0xfc, 0xe1, 0xff, 0xcd, 0x02, 0x8d, 0x03, 0x3a, 0x02, 0xee, 0x01, + 0xbe, 0x00, 0x48, 0x02, 0xe4, 0x04, 0xed, 0x07, 0x33, 0x0a, 0x09, 0x0a, 0x14, 0x0a, 0xdd, 0x09, + 0x89, 0x08, 0x19, 0x05, 0x11, 0x00, 0xa1, 0xfb, 0x7a, 0xf8, 0x67, 0xf8, 0xd6, 0xfa, 0x2a, 0xfd, + 0x29, 0xfe, 0xf2, 0xfc, 0x4a, 0xfb, 0x7c, 0xfa, 0xe3, 0xf8, 0xcc, 0xf7, 0xe2, 0xf6, 0xf4, 0xf6, + 0x29, 0xf8, 0xcf, 0xf9, 0xf2, 0xfc, 0x06, 0x00, 0x25, 0x03, 0xe7, 0x04, 0xb5, 0x03, 0x6e, 0x03, + 0x4d, 0x02, 0x0b, 0x03, 0x84, 0x05, 0x34, 0x08, 0x14, 0x0b, 0x31, 0x0b, 0xe7, 0x0a, 0xc7, 0x0a, + 0xcd, 0x09, 0x0b, 0x07, 0x29, 0x02, 0xfd, 0xfc, 0xb6, 0xf8, 0xf0, 0xf6, 0x5a, 0xf8, 0x8c, 0xfa, + 0x2d, 0xfc, 0x9e, 0xfb, 0x17, 0xfa, 0x58, 0xf9, 0x10, 0xf8, 0xe5, 0xf6, 0xff, 0xf5, 0xa2, 0xf5, + 0xfb, 0xf6, 0x84, 0xf8, 0x9f, 0xfb, 0xde, 0xfe, 0x24, 0x02, 0x1a, 0x05, 0x8e, 0x04, 0x51, 0x04, + 0x5b, 0x03, 0x33, 0x03, 0x8d, 0x05, 0x13, 0x08, 0xa0, 0x0b, 0xc2, 0x0c, 0xcd, 0x0c, 0xde, 0x0c, + 0x5d, 0x0c, 0x2f, 0x0a, 0xd7, 0x05, 0x8c, 0x00, 0xad, 0xfb, 0xaf, 0xf8, 0x33, 0xf9, 0xff, 0xfa, + 0xdf, 0xfc, 0x9d, 0xfc, 0xce, 0xfa, 0x89, 0xf9, 0x2e, 0xf8, 0xb1, 0xf6, 0xbe, 0xf5, 0xfe, 0xf4, + 0x0f, 0xf6, 0x34, 0xf7, 0xcf, 0xf9, 0x15, 0xfd, 0x3e, 0x00, 0xf1, 0x03, 0x80, 0x04, 0x31, 0x04, + 0xc9, 0x03, 0xf4, 0x02, 0xea, 0x04, 0x09, 0x07, 0x60, 0x0a, 0x2c, 0x0c, 0x2c, 0x0c, 0x5a, 0x0c, + 0x6e, 0x0c, 0x2b, 0x0b, 0xd2, 0x07, 0x93, 0x02, 0x64, 0xfd, 0x6a, 0xf9, 0xbd, 0xf8, 0x0e, 0xfa, + 0x16, 0xfc, 0x95, 0xfc, 0x16, 0xfb, 0x76, 0xf9, 0x4c, 0xf8, 0x6c, 0xf6, 0x2c, 0xf5, 0xdc, 0xf3, + 0x54, 0xf4, 0x74, 0xf5, 0x87, 0xf7, 0xd7, 0xfa, 0x3b, 0xfe, 0x6c, 0x02, 0x42, 0x04, 0x27, 0x04, + 0x4f, 0x04, 0x51, 0x03, 0xe1, 0x04, 0xe7, 0x06, 0x47, 0x0a, 0xfc, 0x0c, 0xb3, 0x0d, 0xf8, 0x0d, + 0x20, 0x0e, 0x63, 0x0d, 0xcd, 0x0a, 0xf5, 0x05, 0xce, 0x00, 0x18, 0xfc, 0x6f, 0xfa, 0x2a, 0xfb, + 0xf1, 0xfc, 0x06, 0xfe, 0xdf, 0xfc, 0xfd, 0xfa, 0xb3, 0xf9, 0x84, 0xf7, 0x21, 0xf6, 0x53, 0xf4, + 0xd3, 0xf3, 0x46, 0xf4, 0x63, 0xf5, 0x3b, 0xf8, 0x5b, 0xfb, 0x82, 0xff, 0x95, 0x02, 0xb6, 0x02, + 0x64, 0x03, 0x6a, 0x02, 0x35, 0x03, 0x03, 0x05, 0x25, 0x08, 0xa6, 0x0b, 0x32, 0x0d, 0xad, 0x0d, + 0x36, 0x0e, 0x12, 0x0e, 0xa2, 0x0c, 0x50, 0x08, 0x3d, 0x03, 0xef, 0xfd, 0xcf, 0xfa, 0xa2, 0xfa, + 0x2e, 0xfc, 0xed, 0xfd, 0xd2, 0xfd, 0x03, 0xfc, 0x9d, 0xfa, 0x52, 0xf8, 0xd0, 0xf6, 0xcf, 0xf4, + 0xb7, 0xf3, 0xc8, 0xf3, 0x5c, 0xf4, 0xa0, 0xf6, 0x40, 0xf9, 0xb6, 0xfc, 0x49, 0x00, 0xa9, 0x00, + 0x3b, 0x01, 0x5b, 0x00, 0x6f, 0x00, 0x28, 0x02, 0xfd, 0x04, 0xec, 0x08, 0x35, 0x0b, 0x17, 0x0c, + 0x03, 0x0d, 0x52, 0x0d, 0x11, 0x0d, 0xd2, 0x09, 0x5b, 0x05, 0x18, 0x00, 0x28, 0xfc, 0x66, 0xfb, + 0x88, 0xfc, 0x8a, 0xfe, 0x3c, 0xff, 0xa7, 0xfd, 0x84, 0xfc, 0x8a, 0xfa, 0xd9, 0xf8, 0x0c, 0xf7, + 0x6a, 0xf5, 0x28, 0xf5, 0x06, 0xf5, 0xb8, 0xf6, 0x40, 0xf9, 0x0d, 0xfc, 0x4e, 0x00, 0x45, 0x01, + 0xaf, 0x01, 0xc5, 0x00, 0xf3, 0xff, 0x1f, 0x01, 0x25, 0x03, 0xf3, 0x06, 0xea, 0x09, 0x3a, 0x0b, + 0x69, 0x0c, 0x04, 0x0d, 0x2d, 0x0d, 0xea, 0x0a, 0xc0, 0x06, 0xc1, 0x01, 0x29, 0xfd, 0x5f, 0xfb, + 0x20, 0xfc, 0x29, 0xfe, 0xec, 0xff, 0x13, 0xff, 0xd6, 0xfd, 0x0b, 0xfc, 0x27, 0xfa, 0x52, 0xf8, + 0x4f, 0xf6, 0xf4, 0xf5, 0xb8, 0xf5, 0xdc, 0xf6, 0x3e, 0xf9, 0x7d, 0xfb, 0xa1, 0xff, 0x1e, 0x01, + 0x5b, 0x01, 0xc5, 0x00, 0x94, 0xff, 0x21, 0x00, 0x82, 0x01, 0xb8, 0x04, 0x07, 0x08, 0x96, 0x09, + 0x99, 0x0a, 0x34, 0x0b, 0xbe, 0x0b, 0x29, 0x0a, 0xdb, 0x06, 0x88, 0x02, 0x8c, 0xfc, 0xcf, 0xf9, + 0xdb, 0xf9, 0x06, 0xfc, 0x2a, 0xff, 0xf9, 0xfe, 0x17, 0xfe, 0x8b, 0xfd, 0x7c, 0xfb, 0x03, 0xfa, + 0x52, 0xf7, 0x3c, 0xf6, 0x04, 0xf6, 0x06, 0xf7, 0x4e, 0xf9, 0xcf, 0xfb, 0x92, 0x00, 0xc8, 0x02, + 0x47, 0x03, 0xdf, 0x02, 0x5a, 0x01, 0x4c, 0x01, 0x08, 0x01, 0x15, 0x03, 0x05, 0x07, 0xa1, 0x09, + 0x8c, 0x0a, 0x0d, 0x0a, 0x0a, 0x0a, 0x4b, 0x09, 0x33, 0x05, 0x72, 0x00, 0xa3, 0xfa, 0x76, 0xf8, + 0xb9, 0xf8, 0x08, 0xfb, 0x92, 0xfe, 0xde, 0xff, 0x83, 0xff, 0xa9, 0xfe, 0x4a, 0xfc, 0x72, 0xfa, + 0x27, 0xf8, 0x18, 0xf7, 0x97, 0xf7, 0xf8, 0xf8, 0xdd, 0xfb, 0x08, 0xfe, 0x4e, 0x01, 0x66, 0x03, + 0x9a, 0x04, 0xd8, 0x04, 0xaf, 0x02, 0xe7, 0x01, 0xd1, 0x01, 0x0b, 0x04, 0xb9, 0x07, 0x9d, 0x09, + 0x82, 0x09, 0xb2, 0x08, 0xda, 0x07, 0x6e, 0x07, 0x50, 0x04, 0x43, 0xff, 0xfe, 0xf9, 0x43, 0xf7, + 0x3a, 0xf7, 0xf2, 0xf8, 0x72, 0xfb, 0x43, 0xfd, 0x37, 0xfe, 0x05, 0xfe, 0xad, 0xfc, 0x3a, 0xfb, + 0xe7, 0xf8, 0xd8, 0xf7, 0xf7, 0xf8, 0x69, 0xfa, 0x41, 0xfd, 0x98, 0xfe, 0xd6, 0x00, 0xd2, 0x03, + 0x59, 0x05, 0x78, 0x06, 0xfb, 0x04, 0x60, 0x03, 0xf2, 0x02, 0x3d, 0x04, 0xa6, 0x06, 0x22, 0x08, + 0xb0, 0x07, 0x3d, 0x07, 0xe3, 0x05, 0x77, 0x04, 0x8b, 0x01, 0xb9, 0xfd, 0x34, 0xfa, 0xf3, 0xf7, + 0x0e, 0xf8, 0x16, 0xf9, 0x72, 0xfb, 0x45, 0xfd, 0x7a, 0xfe, 0x97, 0xfe, 0x02, 0xfd, 0x41, 0xfb, + 0xfd, 0xf8, 0xaa, 0xf7, 0x6f, 0xf8, 0xf0, 0xf9, 0x99, 0xfc, 0xb0, 0xfe, 0x25, 0x01, 0x6f, 0x04, + 0xd5, 0x05, 0x7a, 0x07, 0xa1, 0x06, 0x49, 0x05, 0x38, 0x04, 0x4c, 0x04, 0xb9, 0x05, 0x66, 0x06, + 0x82, 0x06, 0x1d, 0x06, 0xdc, 0x04, 0x5e, 0x03, 0x70, 0x01, 0xce, 0xfe, 0x6a, 0xfc, 0xc8, 0xfa, + 0x39, 0xfb, 0xd4, 0xfb, 0x1c, 0xfd, 0x0b, 0xff, 0xac, 0xff, 0xf4, 0xfe, 0xf0, 0xfc, 0xda, 0xfa, + 0x4d, 0xf8, 0x2e, 0xf7, 0xc0, 0xf7, 0xdc, 0xf9, 0xea, 0xfc, 0x64, 0xff, 0xbd, 0x01, 0x85, 0x04, + 0x8a, 0x05, 0x83, 0x06, 0x99, 0x05, 0x9b, 0x03, 0x53, 0x02, 0xf6, 0x01, 0xc9, 0x02, 0x05, 0x03, + 0x70, 0x03, 0xfe, 0x03, 0xd9, 0x03, 0xd3, 0x02, 0x92, 0x01, 0x51, 0x00, 0xb4, 0xfe, 0x57, 0xfd, + 0xa3, 0xfd, 0x2c, 0xfe, 0xb1, 0xfe, 0xc0, 0xff, 0x4b, 0x00, 0x20, 0x00, 0x85, 0xfe, 0xe9, 0xfc, + 0xda, 0xfa, 0x56, 0xf9, 0xac, 0xf9, 0xe5, 0xfa, 0xfa, 0xfc, 0x02, 0xff, 0xdc, 0x00, 0x16, 0x03, + 0x00, 0x04, 0xbb, 0x04, 0x67, 0x04, 0xb4, 0x02, 0x55, 0x01, 0xbf, 0x00, 0x53, 0x01, 0xf8, 0x01, + 0x50, 0x02, 0x55, 0x03, 0xe9, 0x03, 0x45, 0x03, 0xf3, 0x01, 0xac, 0x00, 0x9c, 0xff, 0x76, 0xfe, + 0x11, 0xfe, 0x91, 0xfe, 0x45, 0xff, 0xf5, 0x00, 0xf2, 0x01, 0xf3, 0x01, 0x58, 0x00, 0xa7, 0xfe, + 0x6e, 0xfc, 0x4d, 0xfa, 0x29, 0xfa, 0x1b, 0xfb, 0xbd, 0xfc, 0xb1, 0xfe, 0x23, 0x00, 0x1a, 0x02, + 0xa5, 0x02, 0x84, 0x02, 0x5d, 0x02, 0x76, 0x01, 0x34, 0x00, 0x80, 0xff, 0x56, 0xff, 0xcf, 0xff, + 0x8f, 0x00, 0x79, 0x01, 0x2a, 0x02, 0x1c, 0x02, 0x49, 0x01, 0xd7, 0x00, 0x76, 0x00, 0xb5, 0xff, + 0x2f, 0xff, 0x3f, 0xff, 0x44, 0xff, 0x59, 0x00, 0xb0, 0x01, 0x30, 0x02, 0x5b, 0x01, 0xf3, 0xff, + 0x8d, 0xfe, 0xed, 0xfc, 0x9e, 0xfc, 0x63, 0xfd, 0x92, 0xfe, 0x4a, 0x00, 0xde, 0x01, 0x99, 0x03, + 0xfe, 0x03, 0x83, 0x03, 0xb9, 0x02, 0x53, 0x01, 0x7c, 0xff, 0x2e, 0xfe, 0x67, 0xfd, 0x97, 0xfd, + 0x96, 0xfe, 0x16, 0x00, 0x6f, 0x01, 0x9a, 0x01, 0xed, 0x00, 0x4b, 0x00, 0xe9, 0xff, 0x33, 0xff, + 0x26, 0xfe, 0xef, 0xfd, 0x46, 0xfd, 0xd6, 0xfd, 0x0d, 0xff, 0x37, 0x00, 0x0a, 0x00, 0xf2, 0xfe, + 0x48, 0xfe, 0x35, 0xfd, 0xe5, 0xfc, 0x7c, 0xfd, 0x40, 0xfe, 0xb0, 0xff, 0x64, 0x01, 0x24, 0x03, + 0xd8, 0x03, 0x88, 0x03, 0x14, 0x03, 0x37, 0x02, 0xb7, 0x00, 0x07, 0xff, 0xd0, 0xfd, 0x38, 0xfd, + 0x8f, 0xfd, 0xa2, 0xfe, 0xdf, 0xff, 0x61, 0x00, 0xd3, 0xff, 0x33, 0xff, 0x1e, 0xff, 0xc4, 0xfe, + 0xb6, 0xfd, 0x57, 0xfd, 0xad, 0xfc, 0x25, 0xfd, 0xa1, 0xfe, 0x15, 0x00, 0x93, 0x00, 0xfb, 0xff, + 0xa4, 0xff, 0x33, 0xff, 0xaf, 0xfe, 0xf1, 0xfe, 0x86, 0xff, 0xdd, 0x00, 0x7b, 0x02, 0x0a, 0x04, + 0x3b, 0x05, 0x2d, 0x05, 0x1a, 0x05, 0x95, 0x04, 0x2e, 0x03, 0x8e, 0x01, 0x05, 0x00, 0x15, 0xff, + 0x17, 0xff, 0xc7, 0xff, 0xc2, 0x00, 0xe1, 0x00, 0x02, 0x00, 0xed, 0xfe, 0x4f, 0xfe, 0xff, 0xfd, + 0xd9, 0xfc, 0x20, 0xfc, 0x61, 0xfb, 0x90, 0xfb, 0x08, 0xfd, 0x63, 0xfe, 0x51, 0xff, 0x46, 0xff, + 0x5c, 0xff, 0x6a, 0xff, 0x11, 0xff, 0x24, 0xff, 0x71, 0xff, 0x8f, 0x00, 0xe7, 0x01, 0x48, 0x03, + 0xa8, 0x04, 0xf4, 0x04, 0x14, 0x05, 0x0d, 0x05, 0x44, 0x04, 0xda, 0x02, 0x5e, 0x01, 0x49, 0x00, + 0x14, 0x00, 0x6f, 0x00, 0x16, 0x01, 0x29, 0x01, 0x89, 0x00, 0x64, 0xff, 0x76, 0xfe, 0x15, 0xfe, + 0xc9, 0xfc, 0xa9, 0xfb, 0xcb, 0xfa, 0x63, 0xfa, 0xa8, 0xfb, 0x2d, 0xfd, 0x92, 0xfe, 0xcf, 0xfe, + 0xde, 0xfe, 0x1c, 0xff, 0xd0, 0xfe, 0xbb, 0xfe, 0x11, 0xff, 0x0f, 0x00, 0x94, 0x01, 0xff, 0x02, + 0x9e, 0x04, 0x7d, 0x05, 0xc0, 0x05, 0xb1, 0x05, 0x71, 0x05, 0x6d, 0x04, 0x4e, 0x03, 0x4b, 0x02, + 0xe5, 0x01, 0xf5, 0x01, 0x80, 0x02, 0xa8, 0x02, 0x0a, 0x02, 0xea, 0x00, 0x8f, 0xff, 0x13, 0xff, + 0x19, 0xfe, 0xba, 0xfc, 0xf5, 0xfb, 0x0f, 0xfb, 0x5b, 0xfb, 0xd3, 0xfb, 0xd3, 0xfc, 0x52, 0xfd, + 0x8c, 0xfd, 0xf2, 0xfd, 0xd4, 0xfd, 0xe7, 0xfd, 0x13, 0xfe, 0xc6, 0xfe, 0x3d, 0x00, 0x82, 0x01, + 0xf9, 0x02, 0xc8, 0x03, 0x58, 0x04, 0xe0, 0x04, 0xf9, 0x04, 0x50, 0x04, 0x61, 0x03, 0x15, 0x02, + 0x61, 0x01, 0x1a, 0x01, 0x9b, 0x01, 0x0d, 0x02, 0xfd, 0x01, 0x53, 0x01, 0x04, 0x00, 0x4d, 0xff, + 0x97, 0xfe, 0x47, 0xfd, 0x7c, 0xfc, 0x3d, 0xfb, 0x01, 0xfb, 0x4a, 0xfb, 0x36, 0xfc, 0xc8, 0xfc, + 0xdc, 0xfc, 0xe3, 0xfc, 0x9f, 0xfc, 0x4c, 0xfc, 0x6a, 0xfc, 0x06, 0xfd, 0x4f, 0xfe, 0x98, 0xff, + 0x1d, 0x01, 0x59, 0x02, 0x2f, 0x03, 0xd4, 0x03, 0x36, 0x04, 0x0d, 0x04, 0xb6, 0x03, 0x8e, 0x02, + 0x1a, 0x02, 0xd7, 0x01, 0xd1, 0x01, 0xe5, 0x01, 0xc6, 0x01, 0x71, 0x01, 0x77, 0x00, 0xcb, 0xff, + 0xc6, 0xff, 0xa8, 0xfe, 0x4d, 0xfe, 0x7c, 0xfd, 0xed, 0xfc, 0x0e, 0xfd, 0x81, 0xfd, 0xf6, 0xfd, + 0xd2, 0xfd, 0xbb, 0xfd, 0xca, 0xfd, 0xa7, 0xfd, 0xc3, 0xfd, 0xe7, 0xfd, 0x5a, 0xfe, 0xe6, 0xfe, + 0x1c, 0x00, 0x7a, 0x01, 0x5a, 0x02, 0xe6, 0x02, 0x65, 0x03, 0x76, 0x03, 0x53, 0x03, 0x8a, 0x02, + 0xea, 0x01, 0x6c, 0x01, 0x42, 0x01, 0x87, 0x01, 0x03, 0x02, 0x0d, 0x02, 0x69, 0x01, 0x7b, 0x00, + 0x2a, 0x00, 0x45, 0xff, 0xda, 0xfe, 0x32, 0xfe, 0x90, 0xfd, 0xcd, 0xfd, 0x49, 0xfe, 0x23, 0xff, + 0x6c, 0xff, 0x37, 0xff, 0x31, 0xff, 0xea, 0xfe, 0xba, 0xfe, 0x87, 0xfe, 0xd1, 0xfe, 0x31, 0xff, + 0x00, 0x00, 0x1e, 0x01, 0xd0, 0x01, 0x07, 0x02, 0x4e, 0x02, 0x78, 0x02, 0x76, 0x02, 0xec, 0x01, + 0x3b, 0x01, 0xaf, 0x00, 0x22, 0x00, 0x3c, 0x00, 0xb3, 0x00, 0xfe, 0x00, 0xcc, 0x00, 0x1a, 0x00, + 0xd8, 0xff, 0x2d, 0xff, 0x9e, 0xfe, 0xec, 0xfd, 0x0b, 0xfd, 0x09, 0xfd, 0x7b, 0xfd, 0x73, 0xfe, + 0x11, 0xff, 0x20, 0xff, 0x65, 0xff, 0x88, 0xff, 0x88, 0xff, 0x24, 0xff, 0x14, 0xff, 0x4e, 0xff, + 0xc6, 0xff, 0xa1, 0x00, 0x70, 0x01, 0xde, 0x01, 0x47, 0x02, 0x02, 0x02, 0xc3, 0x01, 0x83, 0x01, + 0xb6, 0x00, 0x42, 0x00, 0xa0, 0xff, 0x84, 0xff, 0x13, 0x00, 0x51, 0x00, 0x64, 0x00, 0xd1, 0xff, + 0x8a, 0xff, 0x2c, 0xff, 0x59, 0xfe, 0xf7, 0xfd, 0x2c, 0xfd, 0x0b, 0xfd, 0x56, 0xfd, 0x3b, 0xfe, + 0xf9, 0xfe, 0x46, 0xff, 0x93, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0x0a, 0x00, + 0x62, 0x00, 0x57, 0x01, 0xa3, 0x02, 0x02, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x1b, 0x03, 0xcd, 0x02, + 0xb3, 0x01, 0x97, 0x00, 0x53, 0xff, 0xb5, 0xfe, 0xe6, 0xfe, 0x25, 0xff, 0x6e, 0xff, 0x2f, 0xff, + 0xb4, 0xfe, 0x7f, 0xfe, 0x95, 0xfd, 0x4c, 0xfd, 0x8b, 0xfc, 0x26, 0xfc, 0x4f, 0xfc, 0x06, 0xfd, + 0xfa, 0xfd, 0x8c, 0xfe, 0x0a, 0xff, 0x75, 0xff, 0xa1, 0xff, 0x90, 0xff, 0x4b, 0xff, 0x8f, 0xff, + 0xfa, 0xff, 0xf3, 0x00, 0x8c, 0x02, 0x63, 0x03, 0xd5, 0x03, 0x26, 0x04, 0xd7, 0x03, 0xb1, 0x03, + 0xc5, 0x02, 0xb1, 0x01, 0x68, 0x00, 0x9d, 0xff, 0x7d, 0xff, 0xb3, 0xff, 0x7b, 0xff, 0x17, 0xff, + 0x5e, 0xfe, 0x29, 0xfe, 0x93, 0xfd, 0x65, 0xfd, 0xf1, 0xfc, 0x74, 0xfc, 0x4e, 0xfc, 0xd1, 0xfc, + 0xf8, 0xfd, 0xe6, 0xfe, 0x93, 0xff, 0x1b, 0x00, 0x86, 0x00, 0xd9, 0x00, 0xbc, 0x00, 0xd0, 0x00, + 0xf5, 0x00, 0xa6, 0x01, 0xe3, 0x02, 0xcd, 0x03, 0x6c, 0x04, 0x20, 0x05, 0x3b, 0x05, 0x59, 0x05, + 0xb9, 0x04, 0x97, 0x03, 0x27, 0x02, 0xe4, 0x00, 0x50, 0x00, 0x19, 0x00, 0xdc, 0xff, 0x96, 0xff, + 0x76, 0xfe, 0xd3, 0xfd, 0xca, 0xfc, 0x1e, 0xfc, 0xb7, 0xfb, 0x25, 0xfb, 0x05, 0xfb, 0x5b, 0xfb, + 0x6c, 0xfc, 0x5a, 0xfd, 0x06, 0xfe, 0xa8, 0xfe, 0x27, 0xff, 0xad, 0xff, 0x78, 0xff, 0x91, 0xff, + 0xe1, 0xff, 0x90, 0x00, 0xfc, 0x01, 0x4f, 0x03, 0xff, 0x03, 0xd0, 0x04, 0xf8, 0x04, 0x32, 0x05, + 0xd3, 0x04, 0x04, 0x04, 0xfc, 0x02, 0xd4, 0x01, 0x41, 0x01, 0x19, 0x01, 0xe8, 0x00, 0xdd, 0x00, + 0xe0, 0xff, 0x25, 0xff, 0x2d, 0xfe, 0x58, 0xfd, 0x95, 0xfc, 0xb6, 0xfb, 0xe9, 0xfa, 0x92, 0xfa, + 0x44, 0xfb, 0x31, 0xfc, 0xe5, 0xfc, 0xb1, 0xfd, 0x3d, 0xfe, 0xda, 0xfe, 0xc9, 0xfe, 0xe9, 0xfe, + 0x4c, 0xff, 0x0c, 0x00, 0x47, 0x01, 0xdf, 0x02, 0xe3, 0x03, 0xf8, 0x04, 0x81, 0x05, 0xbc, 0x05, + 0x95, 0x05, 0xd4, 0x04, 0xd9, 0x03, 0xa5, 0x02, 0xbc, 0x01, 0x8a, 0x01, 0x7a, 0x01, 0x9e, 0x01, + 0xf5, 0x00, 0x5e, 0x00, 0xbe, 0xff, 0xbb, 0xfe, 0xd6, 0xfd, 0xc0, 0xfc, 0xba, 0xfb, 0x28, 0xfb, + 0x60, 0xfb, 0xe9, 0xfb, 0x2c, 0xfc, 0x78, 0xfc, 0xba, 0xfc, 0x2b, 0xfd, 0x78, 0xfd, 0x5c, 0xfd, + 0x91, 0xfd, 0x29, 0xfe, 0x2e, 0xff, 0xda, 0x00, 0xeb, 0x01, 0x34, 0x03, 0x0e, 0x04, 0x98, 0x04, + 0x03, 0x05, 0xcd, 0x04, 0x42, 0x04, 0x39, 0x03, 0x47, 0x02, 0x03, 0x02, 0xf5, 0x01, 0x13, 0x02, + 0xbc, 0x01, 0x30, 0x01, 0xd1, 0x00, 0xee, 0xff, 0x48, 0xff, 0x53, 0xfe, 0x65, 0xfd, 0x97, 0xfc, + 0x73, 0xfc, 0xf0, 0xfc, 0x1f, 0xfd, 0x6f, 0xfd, 0x8a, 0xfd, 0x91, 0xfd, 0x96, 0xfd, 0x14, 0xfd, + 0xe5, 0xfc, 0x0e, 0xfd, 0xb0, 0xfd, 0x68, 0xff, 0xf2, 0x00, 0x1f, 0x02, 0x29, 0x03, 0xc0, 0x03, + 0x79, 0x04, 0x77, 0x04, 0x22, 0x04, 0x44, 0x03, 0x39, 0x02, 0x0c, 0x02, 0xea, 0x01, 0x15, 0x02, + 0x20, 0x02, 0x7c, 0x01, 0x41, 0x01, 0x55, 0x00, 0xb3, 0xff, 0xfd, 0xfe, 0x35, 0xfe, 0xa4, 0xfd, + 0x2b, 0xfd, 0x79, 0xfd, 0xaf, 0xfd, 0xef, 0xfd, 0x18, 0xfe, 0x22, 0xfe, 0x48, 0xfe, 0xed, 0xfd, + 0x97, 0xfd, 0x71, 0xfd, 0x99, 0xfd, 0x7c, 0xfe, 0xad, 0xff, 0xa4, 0x00, 0xb7, 0x01, 0x37, 0x02, + 0x02, 0x03, 0x57, 0x03, 0x2f, 0x03, 0x87, 0x02, 0x98, 0x01, 0x10, 0x01, 0x04, 0x01, 0x1a, 0x01, + 0x97, 0x01, 0x3c, 0x01, 0x28, 0x01, 0x8c, 0x00, 0xd7, 0xff, 0x2f, 0xff, 0x78, 0xfe, 0xce, 0xfd, + 0x38, 0xfd, 0x64, 0xfd, 0xd7, 0xfd, 0x42, 0xfe, 0xc2, 0xfe, 0xc1, 0xfe, 0xef, 0xfe, 0xd3, 0xfe, + 0x4a, 0xfe, 0xfa, 0xfd, 0x0a, 0xfe, 0xb8, 0xfe, 0xd0, 0xff, 0x8e, 0x00, 0x61, 0x01, 0xbd, 0x01, + 0x09, 0x02, 0x2c, 0x02, 0x1a, 0x02, 0x95, 0x01, 0xc9, 0x00, 0x11, 0x00, 0x1a, 0x00, 0x14, 0x00, + 0xbb, 0x00, 0xb5, 0x00, 0xd9, 0x00, 0x7d, 0x00, 0xd1, 0xff, 0x7d, 0xff, 0xff, 0xfe, 0x7b, 0xfe, + 0xf6, 0xfd, 0xeb, 0xfd, 0x80, 0xfe, 0xcd, 0xfe, 0x58, 0xff, 0xa0, 0xff, 0xee, 0xff, 0x13, 0x00, + 0x93, 0xff, 0x20, 0xff, 0x22, 0xff, 0x6d, 0xff, 0x83, 0x00, 0x6c, 0x01, 0x37, 0x02, 0x81, 0x02, + 0xcf, 0x02, 0xe3, 0x02, 0x89, 0x02, 0xb3, 0x01, 0x9f, 0x00, 0x9f, 0xff, 0x58, 0xff, 0x38, 0xff, + 0xc8, 0xff, 0xda, 0xff, 0xd3, 0xff, 0x8c, 0xff, 0x17, 0xff, 0xd2, 0xfe, 0x70, 0xfe, 0x1f, 0xfe, + 0xb6, 0xfd, 0xb5, 0xfd, 0x4e, 0xfe, 0xdd, 0xfe, 0x63, 0xff, 0x97, 0xff, 0xfa, 0xff, 0x1b, 0x00, + 0xe3, 0xff, 0xa5, 0xff, 0xb9, 0xff, 0xf3, 0xff, 0xfd, 0x00, 0xba, 0x01, 0x82, 0x02, 0xf6, 0x02, + 0x50, 0x03, 0x88, 0x03, 0x5e, 0x03, 0xeb, 0x02, 0x0d, 0x02, 0xe0, 0x00, 0x10, 0x00, 0x67, 0xff, + 0x5e, 0xff, 0x3f, 0xff, 0xfa, 0xfe, 0xd5, 0xfe, 0x6b, 0xfe, 0x24, 0xfe, 0xd5, 0xfd, 0x60, 0xfd, + 0xff, 0xfc, 0xbf, 0xfc, 0x37, 0xfd, 0xcc, 0xfd, 0x87, 0xfe, 0x15, 0xff, 0xc8, 0xff, 0x4b, 0x00, + 0x62, 0x00, 0x4e, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x6f, 0x01, 0x76, 0x02, 0x51, 0x03, 0x38, 0x04, + 0xc5, 0x04, 0xf5, 0x04, 0xf2, 0x04, 0x78, 0x04, 0x9a, 0x03, 0x46, 0x02, 0x5c, 0x01, 0xb5, 0x00, + 0x51, 0x00, 0x3d, 0x00, 0x9c, 0xff, 0x14, 0xff, 0x42, 0xfe, 0x7e, 0xfd, 0xdc, 0xfc, 0x55, 0xfc, + 0x29, 0xfc, 0xb5, 0xfb, 0xff, 0xfb, 0x6d, 0xfc, 0x00, 0xfd, 0x92, 0xfd, 0x1a, 0xfe, 0xc1, 0xfe, + 0x1c, 0xff, 0x26, 0xff, 0x7b, 0xff, 0xa1, 0xff, 0x62, 0x00, 0x79, 0x01, 0x57, 0x02, 0x6b, 0x03, + 0x1f, 0x04, 0xa9, 0x04, 0xe2, 0x04, 0xbb, 0x04, 0x48, 0x04, 0x60, 0x03, 0x4f, 0x02, 0xa8, 0x01, + 0x38, 0x01, 0xfd, 0x00, 0x37, 0x00, 0xbd, 0xff, 0xed, 0xfe, 0xfe, 0xfd, 0x18, 0xfd, 0x42, 0xfc, + 0xab, 0xfb, 0xba, 0xfa, 0x80, 0xfa, 0xd3, 0xfa, 0x4d, 0xfb, 0x34, 0xfc, 0xbf, 0xfc, 0x7e, 0xfd, + 0x0e, 0xfe, 0x38, 0xfe, 0xb9, 0xfe, 0x06, 0xff, 0x95, 0xff, 0xa8, 0x00, 0xbe, 0x01, 0xee, 0x02, + 0xcf, 0x03, 0xbb, 0x04, 0x3a, 0x05, 0x6e, 0x05, 0x31, 0x05, 0x92, 0x04, 0xd9, 0x03, 0x5e, 0x03, + 0xbf, 0x02, 0xb5, 0x02, 0x37, 0x02, 0xc6, 0x01, 0x26, 0x01, 0x0f, 0x00, 0x2e, 0xff, 0x47, 0xfe, + 0x90, 0xfd, 0xa5, 0xfc, 0xdb, 0xfb, 0x95, 0xfb, 0x70, 0xfb, 0xc9, 0xfb, 0xf3, 0xfb, 0x62, 0xfc, + 0xcf, 0xfc, 0xe5, 0xfc, 0x11, 0xfd, 0x54, 0xfd, 0x88, 0xfd, 0x9a, 0xfe, 0x9e, 0xff, 0xd9, 0x00, + 0x0c, 0x02, 0x1d, 0x03, 0xdd, 0x03, 0x43, 0x04, 0x32, 0x04, 0xe0, 0x03, 0x05, 0x03, 0x89, 0x02, + 0xdf, 0x01, 0xfb, 0x01, 0xfc, 0x01, 0xd2, 0x01, 0xb0, 0x01, 0x0e, 0x01, 0x39, 0x00, 0x56, 0xff, + 0x9a, 0xfe, 0xb1, 0xfd, 0xde, 0xfc, 0x98, 0xfc, 0x8f, 0xfc, 0xc8, 0xfc, 0xc6, 0xfc, 0xc6, 0xfc, + 0xb9, 0xfc, 0x88, 0xfc, 0x5e, 0xfc, 0x8f, 0xfc, 0xcc, 0xfc, 0x85, 0xfd, 0x72, 0xfe, 0xa8, 0xff, + 0xda, 0x00, 0x00, 0x02, 0xbc, 0x02, 0x46, 0x03, 0x98, 0x03, 0xbd, 0x03, 0x42, 0x03, 0xf8, 0x02, + 0x8f, 0x02, 0x76, 0x02, 0x7c, 0x02, 0x6b, 0x02, 0x55, 0x02, 0xbd, 0x01, 0x0e, 0x01, 0x88, 0x00, + 0x04, 0x00, 0x82, 0xff, 0x8e, 0xfe, 0x33, 0xfe, 0xcc, 0xfd, 0xd5, 0xfd, 0xfe, 0xfd, 0x02, 0xfe, + 0x2f, 0xfe, 0x21, 0xfe, 0x8c, 0xfd, 0x58, 0xfd, 0xd2, 0xfc, 0xd6, 0xfc, 0x60, 0xfd, 0x3d, 0xfe, + 0x4b, 0xff, 0x7b, 0x00, 0x61, 0x01, 0x02, 0x02, 0x47, 0x02, 0x6b, 0x02, 0xeb, 0x01, 0xa0, 0x01, + 0x36, 0x01, 0x10, 0x01, 0x77, 0x01, 0x8e, 0x01, 0xc1, 0x01, 0x7a, 0x01, 0xd9, 0x00, 0x50, 0x00, + 0x9f, 0xff, 0x17, 0xff, 0x58, 0xfe, 0xfd, 0xfd, 0xfc, 0xfd, 0x18, 0xfe, 0x63, 0xfe, 0x87, 0xfe, + 0xa5, 0xfe, 0xd9, 0xfe, 0x4b, 0xfe, 0x26, 0xfe, 0xf9, 0xfd, 0x0f, 0xfe, 0x7e, 0xfe, 0xec, 0xfe, + 0xa9, 0xff, 0x6e, 0x00, 0xf2, 0x00, 0x7c, 0x01, 0xa7, 0x01, 0xe5, 0x01, 0x87, 0x01, 0xfe, 0x00, + 0xb6, 0x00, 0x55, 0x00, 0xb2, 0x00, 0xe8, 0x00, 0x04, 0x01, 0x10, 0x01, 0xa5, 0x00, 0x44, 0x00, + 0x87, 0xff, 0x30, 0xff, 0x91, 0xfe, 0xef, 0xfd, 0xc7, 0xfd, 0xe2, 0xfd, 0x3b, 0xfe, 0xa1, 0xfe, + 0xfe, 0xfe, 0x65, 0xff, 0x65, 0xff, 0x59, 0xff, 0x16, 0xff, 0xf2, 0xfe, 0x51, 0xff, 0xf5, 0xff, + 0xd6, 0x00, 0xb9, 0x01, 0x68, 0x02, 0xf2, 0x02, 0xf0, 0x02, 0xf3, 0x02, 0x7d, 0x02, 0xac, 0x01, + 0x59, 0x01, 0xf3, 0x00, 0x2f, 0x01, 0x62, 0x01, 0x8c, 0x01, 0xa5, 0x01, 0x5e, 0x01, 0xce, 0x00, + 0x18, 0x00, 0xcc, 0xff, 0x34, 0xff, 0x84, 0xfe, 0x5d, 0xfe, 0x6c, 0xfe, 0x9c, 0xfe, 0x02, 0xff, + 0x2f, 0xff, 0xa0, 0xff, 0xb1, 0xff, 0xb4, 0xff, 0xd7, 0xff, 0xbb, 0xff, 0x15, 0x00, 0x84, 0x00, + 0x2a, 0x01, 0xde, 0x01, 0x86, 0x02, 0xf3, 0x02, 0x3f, 0x03, 0x2a, 0x03, 0xdf, 0x02, 0xe0, 0x01, + 0x18, 0x01, 0x38, 0x00, 0xc3, 0xff, 0xab, 0xff, 0xb8, 0xff, 0x06, 0x00, 0xe2, 0xff, 0x7c, 0xff, + 0xed, 0xfe, 0x72, 0xfe, 0x28, 0xfe, 0x74, 0xfd, 0x06, 0xfd, 0x08, 0xfd, 0x71, 0xfd, 0xdf, 0xfd, + 0x41, 0xfe, 0xcf, 0xfe, 0x25, 0xff, 0x05, 0xff, 0xff, 0xfe, 0xc3, 0xfe, 0x17, 0xff, 0xcb, 0xff, + 0xcd, 0x00, 0xba, 0x01, 0xe8, 0x02, 0xd5, 0x03, 0x3f, 0x04, 0x40, 0x04, 0x28, 0x04, 0x51, 0x03, + 0x9c, 0x02, 0xd3, 0x01, 0x68, 0x01, 0x2b, 0x01, 0xd8, 0x00, 0xb1, 0x00, 0x50, 0x00, 0xab, 0xff, + 0xe4, 0xfe, 0x51, 0xfe, 0x02, 0xfe, 0x58, 0xfd, 0x02, 0xfd, 0xf1, 0xfc, 0x5f, 0xfd, 0xda, 0xfd, + 0x3e, 0xfe, 0xbc, 0xfe, 0x6d, 0xff, 0x57, 0xff, 0x70, 0xff, 0x5c, 0xff, 0x67, 0xff, 0xd9, 0xff, + 0xa1, 0x00, 0x68, 0x01, 0x55, 0x02, 0x4e, 0x03, 0x0d, 0x04, 0x46, 0x04, 0x64, 0x04, 0xd7, 0x03, + 0x4d, 0x03, 0x89, 0x02, 0xd2, 0x01, 0xad, 0x01, 0x60, 0x01, 0x5d, 0x01, 0x32, 0x01, 0xa3, 0x00, + 0xc4, 0xff, 0x7f, 0xfe, 0xac, 0xfd, 0xb7, 0xfc, 0xb8, 0xfb, 0x3d, 0xfb, 0x48, 0xfb, 0x9e, 0xfb, + 0x3f, 0xfc, 0xc3, 0xfc, 0x9d, 0xfd, 0xed, 0xfd, 0x33, 0xfe, 0x4c, 0xfe, 0x82, 0xfe, 0xfb, 0xfe, + 0xbd, 0xff, 0x83, 0x00, 0x8e, 0x01, 0x8b, 0x02, 0x6a, 0x03, 0xb4, 0x03, 0xf0, 0x03, 0xb1, 0x03, + 0x4c, 0x03, 0xe3, 0x02, 0x62, 0x02, 0x52, 0x02, 0x2b, 0x02, 0x07, 0x02, 0x1b, 0x02, 0x9d, 0x01, + 0x09, 0x01, 0xf4, 0xff, 0x1b, 0xff, 0x35, 0xfe, 0x23, 0xfd, 0x29, 0xfc, 0xc7, 0xfb, 0xb5, 0xfb, + 0xe9, 0xfb, 0x4d, 0xfc, 0x1a, 0xfd, 0x75, 0xfd, 0xb4, 0xfd, 0xc3, 0xfd, 0x0a, 0xfe, 0x76, 0xfe, + 0x38, 0xff, 0xff, 0xff, 0x1b, 0x01, 0x2f, 0x02, 0x52, 0x03, 0xf4, 0x03, 0x48, 0x04, 0x42, 0x04, + 0xb5, 0x03, 0x1e, 0x03, 0x7d, 0x02, 0x53, 0x02, 0x4c, 0x02, 0x54, 0x02, 0x99, 0x02, 0x7d, 0x02, + 0x3d, 0x02, 0x13, 0x01, 0x0f, 0x00, 0x0f, 0xff, 0xee, 0xfd, 0x42, 0xfd, 0xd6, 0xfc, 0x9c, 0xfc, + 0xbe, 0xfc, 0xa9, 0xfc, 0xe4, 0xfc, 0xe3, 0xfc, 0xe8, 0xfc, 0xea, 0xfc, 0xe7, 0xfc, 0x1a, 0xfd, + 0xbd, 0xfd, 0x81, 0xfe, 0x85, 0xff, 0xb4, 0x00, 0xff, 0x01, 0xf0, 0x02, 0x85, 0x03, 0xe1, 0x03, + 0x8c, 0x03, 0x48, 0x03, 0xc0, 0x02, 0x67, 0x02, 0x57, 0x02, 0x3c, 0x02, 0x60, 0x02, 0x41, 0x02, + 0x10, 0x02, 0x49, 0x01, 0x59, 0x00, 0x89, 0xff, 0x77, 0xfe, 0x68, 0xfd, 0xce, 0xfc, 0x75, 0xfc, + 0x94, 0xfc, 0xc0, 0xfc, 0x30, 0xfd, 0x9a, 0xfd, 0x56, 0xfd, 0x42, 0xfd, 0xc8, 0xfc, 0x7a, 0xfc, + 0xb8, 0xfc, 0x36, 0xfd, 0x10, 0xfe, 0x3d, 0xff, 0x88, 0x00, 0xa5, 0x01, 0x6e, 0x02, 0xfc, 0x02, + 0xf5, 0x02, 0xfb, 0x02, 0x9d, 0x02, 0x64, 0x02, 0x8e, 0x02, 0x70, 0x02, 0x9b, 0x02, 0xb3, 0x02, + 0x9e, 0x02, 0xf5, 0x01, 0xf1, 0x00, 0x28, 0x00, 0x53, 0xff, 0x84, 0xfe, 0xcb, 0xfd, 0x6f, 0xfd, + 0x69, 0xfd, 0x6b, 0xfd, 0x7a, 0xfd, 0xcc, 0xfd, 0xea, 0xfd, 0xf3, 0xfd, 0xa5, 0xfd, 0x3c, 0xfd, + 0x3c, 0xfd, 0x66, 0xfd, 0xc8, 0xfd, 0x60, 0xfe, 0x33, 0xff, 0x73, 0x00, 0x41, 0x01, 0x29, 0x02, + 0x57, 0x02, 0x4a, 0x02, 0x0b, 0x02, 0xad, 0x01, 0xa8, 0x01, 0xa6, 0x01, 0xfb, 0x01, 0x7f, 0x02, + 0xb5, 0x02, 0xc0, 0x02, 0xfe, 0x01, 0x4a, 0x01, 0x61, 0x00, 0x6b, 0xff, 0x6e, 0xfe, 0xd0, 0xfd, + 0xca, 0xfd, 0xfc, 0xfd, 0x2a, 0xfe, 0xce, 0xfe, 0x1d, 0xff, 0x34, 0xff, 0xdb, 0xfe, 0x61, 0xfe, + 0x3b, 0xfe, 0x4b, 0xfe, 0xac, 0xfe, 0x69, 0xff, 0x1d, 0x00, 0x19, 0x01, 0x71, 0x01, 0xe0, 0x01, + 0xe0, 0x01, 0x93, 0x01, 0x4a, 0x01, 0xbb, 0x00, 0x97, 0x00, 0xa4, 0x00, 0xd3, 0x00, 0x5a, 0x01, + 0xae, 0x01, 0xdb, 0x01, 0x62, 0x01, 0xdc, 0x00, 0x23, 0x00, 0x48, 0xff, 0x67, 0xfe, 0xd1, 0xfd, + 0x8e, 0xfd, 0xb4, 0xfd, 0xac, 0xfd, 0x47, 0xfe, 0xac, 0xfe, 0xd8, 0xfe, 0xd7, 0xfe, 0xa8, 0xfe, + 0x7b, 0xfe, 0x98, 0xfe, 0xe7, 0xfe, 0xa3, 0xff, 0x53, 0x00, 0x8a, 0x01, 0x5f, 0x02, 0xdb, 0x02, + 0xfa, 0x02, 0x7a, 0x02, 0xcb, 0x01, 0xbe, 0x00, 0x33, 0x00, 0x07, 0x00, 0x2b, 0x00, 0xaf, 0x00, + 0x04, 0x01, 0x5d, 0x01, 0x11, 0x01, 0x89, 0x00, 0xd7, 0xff, 0x4b, 0xff, 0x83, 0xfe, 0x23, 0xfe, + 0x10, 0xfe, 0x85, 0xfe, 0x97, 0xfe, 0xff, 0xfe, 0x96, 0xff, 0xc8, 0xff, 0xb5, 0xff, 0x3e, 0xff, + 0xe7, 0xfe, 0x05, 0xff, 0x71, 0xff, 0x49, 0x00, 0xf9, 0x00, 0xf7, 0x01, 0xaa, 0x02, 0x01, 0x03, + 0x46, 0x03, 0xf9, 0x02, 0x72, 0x02, 0xb1, 0x01, 0xf8, 0x00, 0x98, 0x00, 0x2e, 0x00, 0x1e, 0x00, + 0x1f, 0x00, 0x50, 0x00, 0x17, 0x00, 0x89, 0xff, 0xdd, 0xfe, 0x28, 0xfe, 0x5c, 0xfd, 0x16, 0xfd, + 0xd4, 0xfc, 0x34, 0xfd, 0x83, 0xfd, 0x14, 0xfe, 0x0a, 0xff, 0x98, 0xff, 0xe6, 0xff, 0xcf, 0xff, + 0x57, 0xff, 0x26, 0xff, 0x2c, 0xff, 0xdc, 0xff, 0x7a, 0x00, 0x83, 0x01, 0x83, 0x02, 0x37, 0x03, + 0xaf, 0x03, 0x79, 0x03, 0xf7, 0x02, 0x09, 0x02, 0x1f, 0x01, 0xa1, 0x00, 0x81, 0x00, 0x94, 0x00, + 0xc6, 0x00, 0xfa, 0x00, 0x91, 0x00, 0x9f, 0xff, 0x8a, 0xfe, 0xb2, 0xfd, 0xe3, 0xfc, 0x42, 0xfc, + 0xd3, 0xfb, 0xe6, 0xfb, 0x2e, 0xfc, 0xab, 0xfc, 0x8a, 0xfd, 0x56, 0xfe, 0xe0, 0xfe, 0x0b, 0xff, + 0xd9, 0xfe, 0x09, 0xff, 0x53, 0xff, 0x0b, 0x00, 0x98, 0x00, 0x5e, 0x01, 0x52, 0x02, 0xeb, 0x02, + 0x86, 0x03, 0x7b, 0x03, 0x59, 0x03, 0xb9, 0x02, 0xea, 0x01, 0x92, 0x01, 0x36, 0x01, 0x0d, 0x01, + 0x1a, 0x01, 0x75, 0x01, 0x95, 0x01, 0x0c, 0x01, 0x52, 0x00, 0x68, 0xff, 0x35, 0xfe, 0xf7, 0xfc, + 0x1b, 0xfc, 0xd0, 0xfb, 0xd0, 0xfb, 0x09, 0xfc, 0xd5, 0xfc, 0xc4, 0xfd, 0x6a, 0xfe, 0xa7, 0xfe, + 0x8d, 0xfe, 0x79, 0xfe, 0xb0, 0xfe, 0x4d, 0xff, 0x29, 0x00, 0xe2, 0x00, 0x2a, 0x02, 0xf8, 0x02, + 0x9c, 0x03, 0xe7, 0x03, 0x96, 0x03, 0x2c, 0x03, 0x21, 0x02, 0xb9, 0x01, 0x89, 0x01, 0x9f, 0x01, + 0xd1, 0x01, 0xf1, 0x01, 0x46, 0x02, 0xae, 0x01, 0xd2, 0x00, 0xdc, 0xff, 0xdd, 0xfe, 0x20, 0xfe, + 0x46, 0xfd, 0xa8, 0xfc, 0x9f, 0xfc, 0x6c, 0xfc, 0xb5, 0xfc, 0x28, 0xfd, 0x92, 0xfd, 0xc8, 0xfd, + 0xa4, 0xfd, 0x7c, 0xfd, 0x7e, 0xfd, 0xf4, 0xfd, 0xa9, 0xfe, 0x44, 0xff, 0x43, 0x00, 0x5f, 0x01, + 0x3f, 0x02, 0xe8, 0x02, 0x2a, 0x03, 0xf1, 0x02, 0x30, 0x02, 0x7a, 0x01, 0x04, 0x01, 0xca, 0x00, + 0xf4, 0x00, 0x2e, 0x01, 0xc8, 0x01, 0xec, 0x01, 0x9c, 0x01, 0x04, 0x01, 0x34, 0x00, 0x42, 0xff, + 0x51, 0xfe, 0x91, 0xfd, 0xa3, 0xfd, 0xba, 0xfd, 0x05, 0xfe, 0x92, 0xfe, 0xec, 0xfe, 0xe1, 0xfe, + 0x7a, 0xfe, 0xe3, 0xfd, 0x7d, 0xfd, 0x80, 0xfd, 0x32, 0xfe, 0xa0, 0xfe, 0xa3, 0xff, 0xd1, 0x00, + 0xaf, 0x01, 0x8b, 0x02, 0xca, 0x02, 0xd1, 0x02, 0x62, 0x02, 0xa7, 0x01, 0x76, 0x01, 0x60, 0x01, + 0x76, 0x01, 0xb8, 0x01, 0x1d, 0x02, 0x1d, 0x02, 0xcc, 0x01, 0x2f, 0x01, 0x81, 0x00, 0xc1, 0xff, + 0x13, 0xff, 0x61, 0xfe, 0x60, 0xfe, 0x62, 0xfe, 0x9d, 0xfe, 0x1e, 0xff, 0x90, 0xff, 0xf0, 0xff, + 0xff, 0xff, 0x86, 0xff, 0xe9, 0xfe, 0x4b, 0xfe, 0x52, 0xfe, 0x4a, 0xfe, 0xb4, 0xfe, 0x80, 0xff, + 0x62, 0x00, 0x1d, 0x01, 0x93, 0x01, 0xbd, 0x01, 0x70, 0x01, 0xc2, 0x00, 0x83, 0x00, 0x7e, 0x00, + 0xb2, 0x00, 0x09, 0x01, 0xaf, 0x01, 0x2d, 0x02, 0x29, 0x02, 0x92, 0x01, 0xb8, 0x00, 0xc0, 0xff, + 0xe0, 0xfe, 0xfe, 0xfd, 0xe6, 0xfd, 0xf9, 0xfd, 0x77, 0xfe, 0x08, 0xff, 0xb4, 0xff, 0x10, 0x00, + 0x07, 0x00, 0x8f, 0xff, 0xf9, 0xfe, 0x7f, 0xfe, 0xd0, 0xfe, 0x11, 0xff, 0x43, 0xff, 0xf3, 0xff, + 0x75, 0x00, 0x10, 0x01, 0x4e, 0x01, 0x5b, 0x01, 0x3d, 0x01, 0x70, 0x00, 0x1c, 0x00, 0xcc, 0xff, + 0xc1, 0xff, 0x0e, 0x00, 0xb6, 0x00, 0x68, 0x01, 0xc4, 0x01, 0x90, 0x01, 0x33, 0x01, 0xc5, 0x00, + 0x33, 0x00, 0x59, 0xff, 0x06, 0xff, 0xdc, 0xfe, 0xf5, 0xfe, 0x5c, 0xff, 0xf6, 0xff, 0x8b, 0x00, + 0xfa, 0x00, 0xc7, 0x00, 0x47, 0x00, 0x9e, 0xff, 0x8d, 0xff, 0xba, 0xff, 0x01, 0x00, 0xcf, 0x00, + 0xa0, 0x01, 0x6e, 0x02, 0xcf, 0x02, 0xa8, 0x02, 0x4b, 0x02, 0x2f, 0x01, 0x57, 0x00, 0xbe, 0xff, + 0x97, 0xff, 0xa2, 0xff, 0x12, 0x00, 0x9a, 0x00, 0xe8, 0x00, 0xdb, 0x00, 0x91, 0x00, 0x0d, 0x00, + 0x8b, 0xff, 0xe0, 0xfe, 0x6d, 0xfe, 0x7e, 0xfe, 0xaf, 0xfe, 0x05, 0xff, 0x6a, 0xff, 0xc3, 0xff, + 0x04, 0x00, 0xce, 0xff, 0x61, 0xff, 0xc3, 0xfe, 0x91, 0xfe, 0xde, 0xfe, 0x36, 0xff, 0xdf, 0xff, + 0xa8, 0x00, 0x37, 0x01, 0xde, 0x01, 0x27, 0x02, 0x34, 0x02, 0xa5, 0x01, 0x95, 0x00, 0xb3, 0xff, + 0x22, 0xff, 0xdf, 0xfe, 0xe3, 0xfe, 0x3a, 0xff, 0xb1, 0xff, 0xc1, 0xff, 0xbe, 0xff, 0x69, 0xff, + 0x06, 0xff, 0x93, 0xfe, 0x10, 0xfe, 0x35, 0xfe, 0x6c, 0xfe, 0xb6, 0xfe, 0x70, 0xff, 0x2b, 0x00, + 0xd4, 0x00, 0x0e, 0x01, 0xbc, 0x00, 0x23, 0x00, 0x8b, 0xff, 0xad, 0xff, 0xda, 0xff, 0x7d, 0x00, + 0x92, 0x01, 0x57, 0x02, 0x44, 0x03, 0x85, 0x03, 0xa9, 0x03, 0x3b, 0x03, 0x20, 0x02, 0x3b, 0x01, + 0x94, 0x00, 0x33, 0x00, 0x18, 0x00, 0x3e, 0x00, 0x72, 0x00, 0x58, 0x00, 0xfe, 0xff, 0x66, 0xff, + 0xb3, 0xfe, 0x17, 0xfe, 0x4b, 0xfd, 0x16, 0xfd, 0x49, 0xfd, 0xa7, 0xfd, 0x60, 0xfe, 0x28, 0xff, + 0xef, 0xff, 0x71, 0x00, 0x8b, 0x00, 0x2d, 0x00, 0xab, 0xff, 0xdc, 0xff, 0x00, 0x00, 0x41, 0x00, + 0xf0, 0x00, 0x6f, 0x01, 0x42, 0x02, 0xcd, 0x02, 0x09, 0x03, 0xee, 0x02, 0x06, 0x02, 0x32, 0x01, + 0x59, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0xc2, 0xff, 0x3f, 0x00, 0x71, 0x00, 0x22, 0x00, 0x99, 0xff, + 0x9c, 0xfe, 0xb5, 0xfd, 0x7a, 0xfc, 0xe4, 0xfb, 0xed, 0xfb, 0x0e, 0xfc, 0x80, 0xfc, 0x3c, 0xfd, + 0x11, 0xfe, 0xc8, 0xfe, 0xf2, 0xfe, 0xff, 0xfe, 0x8d, 0xfe, 0xb2, 0xfe, 0x1e, 0xff, 0x7e, 0xff, + 0x76, 0x00, 0x37, 0x01, 0x0c, 0x02, 0x9d, 0x02, 0xd8, 0x02, 0xc8, 0x02, 0x13, 0x02, 0x2b, 0x01, + 0x7a, 0x00, 0x37, 0x00, 0x19, 0x00, 0x34, 0x00, 0x82, 0x00, 0xdf, 0x00, 0xb2, 0x00, 0x65, 0x00, + 0xc6, 0xff, 0x32, 0xff, 0x54, 0xfe, 0x73, 0xfd, 0x0b, 0xfd, 0xcc, 0xfc, 0xbe, 0xfc, 0x2d, 0xfd, + 0xc9, 0xfd, 0x7f, 0xfe, 0x9d, 0xfe, 0xc4, 0xfe, 0x60, 0xfe, 0x3b, 0xfe, 0x9f, 0xfe, 0x11, 0xff, + 0xee, 0xff, 0xd0, 0x00, 0xec, 0x01, 0xf2, 0x02, 0x6e, 0x03, 0xdb, 0x03, 0x6b, 0x03, 0x89, 0x02, + 0x9e, 0x01, 0xe3, 0x00, 0x53, 0x00, 0x4f, 0x00, 0xb1, 0x00, 0x33, 0x01, 0x7f, 0x01, 0x64, 0x01, + 0xda, 0x00, 0x23, 0x00, 0x22, 0xff, 0x44, 0xfe, 0xe1, 0xfd, 0xd9, 0xfd, 0xdf, 0xfd, 0x2b, 0xfe, + 0x63, 0xfe, 0xcc, 0xfe, 0xca, 0xfe, 0x9d, 0xfe, 0x2d, 0xfe, 0xad, 0xfd, 0xba, 0xfd, 0x13, 0xfe, + 0x94, 0xfe, 0x89, 0xff, 0x70, 0x00, 0x8e, 0x01, 0x1c, 0x02, 0xac, 0x02, 0xad, 0x02, 0x2b, 0x02, + 0x8b, 0x01, 0x24, 0x01, 0xec, 0x00, 0xd4, 0x00, 0x1f, 0x01, 0x8a, 0x01, 0xb3, 0x01, 0xdd, 0x01, + 0x72, 0x01, 0x29, 0x01, 0x5e, 0x00, 0x8c, 0xff, 0xf7, 0xfe, 0xb0, 0xfe, 0x83, 0xfe, 0xc2, 0xfe, + 0x23, 0xff, 0xf0, 0xff, 0x67, 0x00, 0x5d, 0x00, 0xe4, 0xff, 0xf6, 0xfe, 0x95, 0xfe, 0x5b, 0xfe, + 0x71, 0xfe, 0xf6, 0xfe, 0xaf, 0xff, 0xab, 0x00, 0x51, 0x01, 0xf8, 0x01, 0x10, 0x02, 0xe2, 0x01, + 0x45, 0x01, 0xb6, 0x00, 0x81, 0x00, 0x67, 0x00, 0xc1, 0x00, 0x6f, 0x01, 0xee, 0x01, 0x38, 0x02, + 0x01, 0x02, 0x65, 0x01, 0xb1, 0x00, 0xa4, 0xff, 0x07, 0xff, 0xc7, 0xfe, 0xb6, 0xfe, 0xff, 0xfe, + 0x65, 0xff, 0xe5, 0xff, 0x6b, 0x00, 0x86, 0x00, 0x4b, 0x00, 0xa6, 0xff, 0x31, 0xff, 0xe5, 0xfe, + 0xc8, 0xfe, 0x03, 0xff, 0x50, 0xff, 0xf0, 0xff, 0x87, 0x00, 0xfc, 0x00, 0x2b, 0x01, 0x08, 0x01, + 0x57, 0x00, 0xa9, 0xff, 0x5c, 0xff, 0x65, 0xff, 0xa5, 0xff, 0x7b, 0x00, 0x51, 0x01, 0xc6, 0x01, + 0xf5, 0x01, 0xc3, 0x01, 0x5e, 0x01, 0xa5, 0x00, 0xaa, 0xff, 0x20, 0xff, 0xb9, 0xfe, 0xb8, 0xfe, + 0x14, 0xff, 0xb3, 0xff, 0x85, 0x00, 0xe7, 0x00, 0x05, 0x01, 0x3a, 0x00, 0x8c, 0xff, 0x3e, 0xff, + 0xf4, 0xfe, 0x56, 0xff, 0xae, 0xff, 0x30, 0x00, 0x82, 0x00, 0xaf, 0x00, 0xc6, 0x00, 0x58, 0x00, + 0x82, 0xff, 0x9b, 0xfe, 0xfe, 0xfd, 0xb7, 0xfd, 0xcd, 0xfd, 0x9d, 0xfe, 0x5c, 0xff, 0x02, 0x00, + 0x79, 0x00, 0x56, 0x00, 0x31, 0x00, 0xca, 0xff, 0x2e, 0xff, 0xdf, 0xfe, 0xed, 0xfe, 0x1e, 0xff, + 0x7a, 0xff, 0xfd, 0xff, 0xcf, 0x00, 0x48, 0x01, 0x91, 0x01, 0x39, 0x01, 0xac, 0x00, 0x7f, 0x00, + 0x47, 0x00, 0x54, 0x00, 0x88, 0x00, 0xfd, 0x00, 0x82, 0x01, 0xe9, 0x01, 0x45, 0x02, 0x29, 0x02, + 0x5b, 0x01, 0x11, 0x00, 0xe2, 0xfe, 0x17, 0xfe, 0xad, 0xfd, 0xc7, 0xfd, 0x71, 0xfe, 0xd5, 0xfe, + 0x5f, 0xff, 0x61, 0xff, 0x51, 0xff, 0xf7, 0xfe, 0x63, 0xfe, 0x02, 0xfe, 0xf4, 0xfd, 0x31, 0xfe, + 0xe0, 0xfe, 0x8c, 0xff, 0x97, 0x00, 0x5e, 0x01, 0xc9, 0x01, 0xa7, 0x01, 0xe9, 0x00, 0x89, 0x00, + 0x37, 0x00, 0x5f, 0x00, 0xc2, 0x00, 0x2d, 0x01, 0xed, 0x01, 0x55, 0x02, 0xaf, 0x02, 0xbd, 0x02, + 0x46, 0x02, 0x50, 0x01, 0x53, 0x00, 0x94, 0xff, 0xf9, 0xfe, 0xbd, 0xfe, 0xf0, 0xfe, 0xe5, 0xfe, + 0xff, 0xfe, 0xb2, 0xfe, 0x5a, 0xfe, 0xd6, 0xfd, 0x47, 0xfd, 0xc3, 0xfc, 0x81, 0xfc, 0x9b, 0xfc, + 0x0d, 0xfd, 0xa2, 0xfd, 0xbd, 0xfe, 0xd1, 0xff, 0xa0, 0x00, 0x25, 0x01, 0xed, 0x00, 0xae, 0x00, + 0x7b, 0x00, 0x70, 0x00, 0xa2, 0x00, 0xdc, 0x00, 0x8b, 0x01, 0x0d, 0x02, 0xd4, 0x02, 0x33, 0x03, + 0x32, 0x03, 0x72, 0x02, 0x5b, 0x01, 0x56, 0x00, 0xbc, 0xff, 0x68, 0xff, 0xbb, 0xff, 0xfc, 0xff, + 0x41, 0x00, 0x00, 0x00, 0x67, 0xff, 0x8e, 0xfe, 0x8c, 0xfd, 0x98, 0xfc, 0x0a, 0xfc, 0xb2, 0xfb, + 0xfc, 0xfb, 0x6a, 0xfc, 0x63, 0xfd, 0x7c, 0xfe, 0x53, 0xff, 0x06, 0x00, 0xfd, 0xff, 0xcf, 0xff, + 0xb5, 0xff, 0xe3, 0xff, 0x43, 0x00, 0x91, 0x00, 0xa2, 0x01, 0x71, 0x02, 0xfb, 0x02, 0x71, 0x03, + 0x7d, 0x03, 0xbc, 0x02, 0xf8, 0x01, 0x4c, 0x01, 0xce, 0x00, 0x6a, 0x00, 0x82, 0x00, 0xa8, 0x00, + 0xe1, 0x00, 0xf1, 0x00, 0xb5, 0x00, 0x2c, 0x00, 0x57, 0xff, 0x41, 0xfe, 0x53, 0xfd, 0x9c, 0xfc, + 0x5e, 0xfc, 0x53, 0xfc, 0x9b, 0xfc, 0x81, 0xfd, 0x41, 0xfe, 0xd2, 0xfe, 0xf9, 0xfe, 0xb6, 0xfe, + 0xa9, 0xfe, 0xc9, 0xfe, 0x58, 0xff, 0xe1, 0xff, 0xea, 0x00, 0x01, 0x02, 0xf5, 0x02, 0xb7, 0x03, + 0x14, 0x04, 0xc2, 0x03, 0xdc, 0x02, 0xc8, 0x01, 0x22, 0x01, 0x5b, 0x00, 0x66, 0x00, 0xdf, 0x00, + 0x3e, 0x01, 0x87, 0x01, 0x60, 0x01, 0xd2, 0x00, 0x2d, 0x00, 0x4f, 0xff, 0x9f, 0xfe, 0x03, 0xfe, + 0xba, 0xfd, 0x8e, 0xfd, 0x8a, 0xfd, 0xf6, 0xfd, 0x5d, 0xfe, 0xc7, 0xfe, 0xca, 0xfe, 0x44, 0xfe, + 0xf5, 0xfd, 0xd5, 0xfd, 0x46, 0xfe, 0xaf, 0xfe, 0xa4, 0xff, 0xb6, 0x00, 0xd2, 0x01, 0xde, 0x02, + 0xb7, 0x03, 0xf0, 0x03, 0x8a, 0x03, 0xdc, 0x02, 0x22, 0x02, 0x59, 0x01, 0x1d, 0x01, 0x35, 0x01, + 0x59, 0x01, 0x8d, 0x01, 0x92, 0x01, 0x73, 0x01, 0x03, 0x01, 0x31, 0x00, 0x50, 0xff, 0x80, 0xfe, + 0x0e, 0xfe, 0x20, 0xfe, 0x44, 0xfe, 0xed, 0xfe, 0x97, 0xff, 0xee, 0xff, 0xe3, 0xff, 0x3e, 0xff, + 0xa6, 0xfe, 0xf1, 0xfd, 0xdc, 0xfd, 0x36, 0xfe, 0xcd, 0xfe, 0xbe, 0xff, 0xaa, 0x00, 0xa1, 0x01, + 0x72, 0x02, 0xcd, 0x02, 0xb2, 0x02, 0x1b, 0x02, 0x98, 0x01, 0x27, 0x01, 0x0a, 0x01, 0x73, 0x01, + 0xbe, 0x01, 0x24, 0x02, 0x49, 0x02, 0xde, 0x01, 0x7a, 0x01, 0xc0, 0x00, 0xe5, 0xff, 0x2c, 0xff, + 0xa0, 0xfe, 0xa1, 0xfe, 0x68, 0xfe, 0x96, 0xfe, 0x26, 0xff, 0xc3, 0xff, 0x3e, 0x00, 0x00, 0x00, + 0xa5, 0xff, 0x1b, 0xff, 0xe8, 0xfe, 0xc3, 0xfe, 0xb0, 0xfe, 0x23, 0xff, 0xb6, 0xff, 0x54, 0x00, + 0xe2, 0x00, 0x3b, 0x01, 0x22, 0x01, 0xa3, 0x00, 0xfe, 0xff, 0x77, 0xff, 0x1f, 0xff, 0x71, 0xff, + 0x07, 0x00, 0xbd, 0x00, 0x63, 0x01, 0x82, 0x01, 0x63, 0x01, 0xfc, 0x00, 0x0a, 0x00, 0x46, 0xff, + 0x87, 0xfe, 0x43, 0xfe, 0x28, 0xfe, 0x79, 0xfe, 0x38, 0xff, 0xe5, 0xff, 0x74, 0x00, 0x54, 0x00, + 0xdb, 0xff, 0xa5, 0xff, 0x6d, 0xff, 0x76, 0xff, 0xbe, 0xff, 0x54, 0x00, 0xde, 0x00, 0x5d, 0x01, + 0xbe, 0x01, 0xdb, 0x01, 0xa1, 0x01, 0x0a, 0x01, 0x1f, 0x00, 0x6b, 0xff, 0xdc, 0xfe, 0x07, 0xff, + 0x6a, 0xff, 0x05, 0x00, 0x89, 0x00, 0xd3, 0x00, 0xfe, 0x00, 0x00, 0x01, 0x7a, 0x00, 0x05, 0x00, + 0x9f, 0xff, 0x69, 0xff, 0x28, 0xff, 0x2a, 0xff, 0x8c, 0xff, 0xdf, 0xff, 0x75, 0x00, 0xb0, 0x00, + 0x9a, 0x00, 0x78, 0x00, 0xf8, 0xff, 0xe7, 0xff, 0xf7, 0xff, 0x55, 0x00, 0xed, 0x00, 0x95, 0x01, + 0x14, 0x02, 0x7b, 0x02, 0x6d, 0x02, 0xb1, 0x01, 0x70, 0x00, 0x60, 0xff, 0x4c, 0xfe, 0xcd, 0xfd, + 0xba, 0xfd, 0x09, 0xfe, 0x80, 0xfe, 0xc8, 0xfe, 0xce, 0xfe, 0xe7, 0xfe, 0x9a, 0xfe, 0x30, 0xfe, + 0xd3, 0xfd, 0xb5, 0xfd, 0xf0, 0xfd, 0x19, 0xfe, 0xb2, 0xfe, 0x47, 0xff, 0xec, 0xff, 0x50, 0x00, + 0x1d, 0x00, 0xd0, 0xff, 0x69, 0xff, 0x9f, 0xff, 0xb8, 0xff, 0x21, 0x00, 0xca, 0x00, 0x8f, 0x01, + 0x13, 0x02, 0xa3, 0x02, 0xd9, 0x02, 0xc4, 0x02, 0xfd, 0x01, 0x31, 0x01, 0x1c, 0x00, 0x39, 0xff, + 0xb4, 0xfe, 0x75, 0xfe, 0x99, 0xfe, 0xba, 0xfe, 0x7a, 0xfe, 0x74, 0xfe, 0x2a, 0xfe, 0xa8, 0xfd, + 0x4a, 0xfd, 0x37, 0xfd, 0x63, 0xfd, 0xa5, 0xfd, 0x1b, 0xfe, 0xcb, 0xfe, 0xa6, 0xff, 0x99, 0x00, + 0xcb, 0x00, 0xce, 0x00, 0x4f, 0x00, 0x0c, 0x00, 0x32, 0x00, 0x46, 0x00, 0xb4, 0x00, 0x53, 0x01, + 0x0c, 0x02, 0xc4, 0x02, 0x4b, 0x03, 0x61, 0x03, 0xaf, 0x02, 0xf0, 0x01, 0xf6, 0x00, 0x1a, 0x00, + 0xb4, 0xff, 0xaa, 0xff, 0xba, 0xff, 0xd5, 0xff, 0x7e, 0xff, 0x4f, 0xff, 0xdb, 0xfe, 0x1a, 0xfe, + 0x58, 0xfd, 0xa4, 0xfc, 0x74, 0xfc, 0x8e, 0xfc, 0xf2, 0xfc, 0x8f, 0xfd, 0x91, 0xfe, 0xaa, 0xff, + 0xff, 0xff, 0x3c, 0x00, 0x22, 0x00, 0x37, 0x00, 0x63, 0x00, 0x88, 0x00, 0x16, 0x01, 0xb9, 0x01, + 0x6f, 0x02, 0xe4, 0x02, 0x0b, 0x03, 0x42, 0x03, 0xc7, 0x02, 0x09, 0x02, 0x26, 0x01, 0x2e, 0x00, + 0xe6, 0xff, 0xd5, 0xff, 0x33, 0x00, 0x6a, 0x00, 0x87, 0x00, 0x79, 0x00, 0x0d, 0x00, 0x26, 0xff, + 0x4b, 0xfe, 0x62, 0xfd, 0xed, 0xfc, 0xd2, 0xfc, 0xe6, 0xfc, 0x43, 0xfd, 0xc1, 0xfd, 0x7a, 0xfe, + 0xd3, 0xfe, 0x05, 0xff, 0xfa, 0xfe, 0xf1, 0xfe, 0x28, 0xff, 0xa3, 0xff, 0x5a, 0x00, 0x5c, 0x01, + 0x22, 0x02, 0xcc, 0x02, 0x41, 0x03, 0x84, 0x03, 0x67, 0x03, 0x73, 0x02, 0x91, 0x01, 0xdf, 0x00, + 0xba, 0x00, 0x0c, 0x01, 0x4d, 0x01, 0x58, 0x01, 0x74, 0x01, 0x64, 0x01, 0x5b, 0x01, 0xf2, 0x00, + 0x4c, 0x00, 0x9c, 0xff, 0x2c, 0xff, 0x35, 0xff, 0xf8, 0xfe, 0xd2, 0xfe, 0xd3, 0xfe, 0xe5, 0xfe, + 0xcb, 0xfe, 0xba, 0xfe, 0x94, 0xfe, 0x37, 0xfe, 0x29, 0xfe, 0x73, 0xfe, 0xed, 0xfe, 0x6d, 0xff, + 0x1d, 0x00, 0xe0, 0x00, 0xa0, 0x01, 0x25, 0x02, 0x63, 0x02, 0xf9, 0x01, 0x9c, 0x01, 0x57, 0x01, + 0x3e, 0x01, 0x48, 0x01, 0x54, 0x01, 0x6c, 0x01, 0x93, 0x01, 0xb6, 0x01, 0xb4, 0x01, 0x3a, 0x01, + 0x9b, 0x00, 0xc3, 0xff, 0x4e, 0xff, 0x1c, 0xff, 0x1d, 0xff, 0x46, 0xff, 0x26, 0xff, 0x56, 0xff, + 0x26, 0xff, 0xc7, 0xfe, 0x7f, 0xfe, 0xd9, 0xfd, 0x82, 0xfd, 0x37, 0xfd, 0x5a, 0xfd, 0x8c, 0xfd, + 0xde, 0xfd, 0x65, 0xfe, 0x1d, 0xff, 0xd7, 0xff, 0x5c, 0x00, 0x80, 0x00, 0x91, 0x00, 0xca, 0x00, + 0x3e, 0x01, 0xba, 0x01, 0x02, 0x02, 0x28, 0x02, 0x42, 0x02, 0x23, 0x02, 0xe1, 0x01, 0x80, 0x01, + 0xed, 0x00, 0x5e, 0x00, 0xf8, 0xff, 0xe5, 0xff, 0x06, 0x00, 0x24, 0x00, 0x24, 0x00, 0x80, 0x00, + 0x94, 0x00, 0x62, 0x00, 0x0f, 0x00, 0x48, 0xff, 0x8c, 0xfe, 0xf1, 0xfd, 0x8c, 0xfd, 0x3f, 0xfd, + 0xef, 0xfc, 0x40, 0xfd, 0x06, 0xfe, 0x90, 0xfe, 0x1a, 0xff, 0x5d, 0xff, 0x5c, 0xff, 0x8e, 0xff, + 0xf7, 0xff, 0x7c, 0x00, 0x12, 0x01, 0x42, 0x01, 0x86, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xa8, 0x01, + 0x40, 0x01, 0xa2, 0x00, 0xf6, 0xff, 0xc6, 0xff, 0xdf, 0xff, 0x08, 0x00, 0x56, 0x00, 0x86, 0x00, + 0x97, 0x00, 0x80, 0x00, 0x46, 0x00, 0xcf, 0xff, 0x64, 0xff, 0x23, 0xff, 0xfc, 0xfe, 0xcf, 0xfe, + 0x9d, 0xfe, 0x95, 0xfe, 0xdb, 0xfe, 0x3e, 0xff, 0x75, 0xff, 0x63, 0xff, 0x26, 0xff, 0x3b, 0xff, + 0x51, 0xff, 0xb6, 0xff, 0x16, 0x00, 0x5b, 0x00, 0xc3, 0x00, 0xe3, 0x00, 0x09, 0x01, 0x29, 0x01, + 0x25, 0x01, 0xe5, 0x00, 0x6c, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x51, 0x00, 0x7a, 0x00, + 0xcd, 0x00, 0x86, 0x00, 0x4b, 0x00, 0x03, 0x00, 0xc8, 0xff, 0x82, 0xff, 0x46, 0xff, 0xf9, 0xfe, + 0xf4, 0xfe, 0x4c, 0xff, 0xbd, 0xff, 0x5f, 0x00, 0xb8, 0x00, 0x9b, 0x00, 0x72, 0x00, 0x1e, 0x00, + 0xe2, 0xff, 0xa6, 0xff, 0x99, 0xff, 0x86, 0xff, 0x8d, 0xff, 0x9f, 0xff, 0x8c, 0xff, 0x7d, 0xff, + 0x80, 0xff, 0x71, 0xff, 0x5f, 0xff, 0x4f, 0xff, 0x84, 0xff, 0xbd, 0xff, 0x09, 0x00, 0x62, 0x00, + 0x9c, 0x00, 0x85, 0x00, 0x43, 0x00, 0xc8, 0xff, 0x75, 0xff, 0x12, 0xff, 0x08, 0xff, 0xe1, 0xfe, + 0xb6, 0xfe, 0x03, 0xff, 0x94, 0xff, 0x59, 0x00, 0x01, 0x01, 0x7a, 0x01, 0xa4, 0x01, 0xb7, 0x01, + 0x86, 0x01, 0x33, 0x01, 0xdc, 0x00, 0x65, 0x00, 0xfa, 0xff, 0xa2, 0xff, 0x6b, 0xff, 0x46, 0xff, + 0x44, 0xff, 0x36, 0xff, 0xfd, 0xfe, 0xe9, 0xfe, 0x09, 0xff, 0x3e, 0xff, 0xa1, 0xff, 0x01, 0x00, + 0x70, 0x00, 0x91, 0x00, 0x71, 0x00, 0x65, 0x00, 0x22, 0x00, 0xc8, 0xff, 0x7b, 0xff, 0x2c, 0xff, + 0x05, 0xff, 0x03, 0xff, 0x87, 0xff, 0x39, 0x00, 0xe0, 0x00, 0x63, 0x01, 0x78, 0x01, 0xbf, 0x01, + 0xb3, 0x01, 0xc3, 0x01, 0x9a, 0x01, 0x61, 0x01, 0x3c, 0x01, 0xcb, 0x00, 0x7e, 0x00, 0x13, 0x00, + 0xc8, 0xff, 0x91, 0xff, 0x2d, 0xff, 0xd9, 0xfe, 0x86, 0xfe, 0x83, 0xfe, 0xb4, 0xfe, 0xfb, 0xfe, + 0x4b, 0xff, 0xbd, 0xff, 0xf0, 0xff, 0xe8, 0xff, 0xfe, 0xff, 0xcd, 0xff, 0x99, 0xff, 0x81, 0xff, + 0x49, 0xff, 0x2f, 0xff, 0x6f, 0xff, 0x0a, 0x00, 0x96, 0x00, 0x25, 0x01, 0x8c, 0x01, 0xda, 0x01, + 0xd7, 0x01, 0xde, 0x01, 0xcb, 0x01, 0xb3, 0x01, 0xb5, 0x01, 0xba, 0x01, 0xc2, 0x01, 0xb0, 0x01, + 0x6e, 0x01, 0x53, 0x01, 0xfa, 0x00, 0x66, 0x00, 0xe0, 0xff, 0x5b, 0xff, 0x1b, 0xff, 0xef, 0xfe, + 0x0e, 0xff, 0x41, 0xff, 0x49, 0xff, 0x1c, 0xff, 0x08, 0xff, 0xeb, 0xfe, 0xe6, 0xfe, 0x01, 0xff, + 0xf7, 0xfe, 0x26, 0xff, 0x60, 0xff, 0xf5, 0xff, 0x8c, 0x00, 0x18, 0x01, 0x5a, 0x01, 0x73, 0x01, + 0x77, 0x01, 0x72, 0x01, 0x9a, 0x01, 0x89, 0x01, 0x68, 0x01, 0x82, 0x01, 0x63, 0x01, 0x5d, 0x01, + 0x64, 0x01, 0x71, 0x01, 0xb7, 0x01, 0x69, 0x01, 0xf3, 0x00, 0x7b, 0x00, 0x07, 0x00, 0xc2, 0xff, + 0x8a, 0xff, 0x93, 0xff, 0x1a, 0xff, 0x94, 0xfe, 0x47, 0xfe, 0xfb, 0xfd, 0xb2, 0xfd, 0xa3, 0xfd, + 0xba, 0xfd, 0xc4, 0xfd, 0xf7, 0xfd, 0x7b, 0xfe, 0x32, 0xff, 0x22, 0x00, 0xcb, 0x00, 0x3d, 0x01, + 0x95, 0x01, 0x84, 0x01, 0x6d, 0x01, 0x60, 0x01, 0x3a, 0x01, 0x39, 0x01, 0x30, 0x01, 0x25, 0x01, + 0x34, 0x01, 0x4b, 0x01, 0x3a, 0x01, 0x2d, 0x01, 0xfe, 0x00, 0xbf, 0x00, 0xb9, 0x00, 0xa3, 0x00, + 0x83, 0x00, 0x51, 0x00, 0x09, 0x00, 0x9d, 0xff, 0xe7, 0xfe, 0x78, 0xfe, 0x0c, 0xfe, 0x7c, 0xfd, + 0x25, 0xfd, 0xbf, 0xfc, 0xbb, 0xfc, 0x1a, 0xfd, 0xae, 0xfd, 0x86, 0xfe, 0x57, 0xff, 0x12, 0x00, + 0x9b, 0x00, 0xfe, 0x00, 0x3d, 0x01, 0x70, 0x01, 0x55, 0x01, 0x5a, 0x01, 0x23, 0x01, 0x15, 0x01, + 0xe2, 0x00, 0xd2, 0x00, 0xde, 0x00, 0xce, 0x00, 0x9f, 0x00, 0x63, 0x00, 0x5c, 0x00, 0x41, 0x00, + 0x4f, 0x00, 0x73, 0x00, 0x93, 0x00, 0x7b, 0x00, 0x42, 0x00, 0x00, 0x00, 0x49, 0xff, 0xce, 0xfe, + 0x59, 0xfe, 0xda, 0xfd, 0x41, 0xfd, 0x22, 0xfd, 0x76, 0xfd, 0xed, 0xfd, 0x93, 0xfe, 0x28, 0xff, + 0x9f, 0xff, 0x14, 0x00, 0x69, 0x00, 0xd5, 0x00, 0xde, 0x00, 0x50, 0x01, 0xb8, 0x01, 0xc4, 0x01, + 0xbd, 0x01, 0xb0, 0x01, 0xa3, 0x01, 0x4b, 0x01, 0x0d, 0x01, 0xc8, 0x00, 0x6a, 0x00, 0x47, 0x00, + 0x1e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x07, 0x00, 0xc4, 0xff, 0xc3, 0xff, 0xac, 0xff, 0x75, 0xff, + 0x33, 0xff, 0xc2, 0xfe, 0x53, 0xfe, 0x08, 0xfe, 0xe4, 0xfd, 0x05, 0xfe, 0x56, 0xfe, 0x9a, 0xfe, + 0xe0, 0xfe, 0xef, 0xfe, 0x0b, 0xff, 0x42, 0xff, 0x3b, 0xff, 0x61, 0xff, 0xa6, 0xff, 0xd7, 0xff, + 0x02, 0x00, 0x3d, 0x00, 0x73, 0x00, 0x91, 0x00, 0x93, 0x00, 0x9f, 0x00, 0x56, 0x00, 0xfa, 0xff, + 0xc6, 0xff, 0xb2, 0xff, 0xce, 0xff, 0xe9, 0xff, 0xd2, 0xff, 0xaa, 0xff, 0x95, 0xff, 0x61, 0xff, + 0x5b, 0xff, 0x4d, 0xff, 0x54, 0xff, 0x22, 0xff, 0x3e, 0xff, 0x80, 0xff, 0xd2, 0xff, 0x17, 0x00, + 0x3e, 0x00, 0x53, 0x00, 0x0c, 0x00, 0xe1, 0xff, 0xca, 0xff, 0xb7, 0xff, 0xa8, 0xff, 0x94, 0xff, + 0xaa, 0xff, 0xb1, 0xff, 0xc7, 0xff, 0x43, 0x00, 0x71, 0x00, 0x91, 0x00, 0xbb, 0x00, 0x88, 0x00, + 0x91, 0x00, 0x68, 0x00, 0x61, 0x00, 0x56, 0x00, 0x33, 0x00, 0x01, 0x00, 0xd7, 0xff, 0xaa, 0xff, + 0xb1, 0xff, 0x8c, 0xff, 0x89, 0xff, 0x4e, 0xff, 0x36, 0xff, 0x79, 0xff, 0x0e, 0x00, 0xb6, 0x00, + 0x27, 0x01, 0x63, 0x01, 0x2f, 0x01, 0xfc, 0x00, 0x98, 0x00, 0x10, 0x00, 0xdb, 0xff, 0x80, 0xff, + 0x30, 0xff, 0x04, 0xff, 0xf6, 0xfe, 0x13, 0xff, 0x26, 0xff, 0x45, 0xff, 0x68, 0xff, 0x84, 0xff, + 0x9a, 0xff, 0xae, 0xff, 0xf9, 0xff, 0x5e, 0x00, 0x8f, 0x00, 0xa4, 0x00, 0x99, 0x00, 0x49, 0x00, + 0x03, 0x00, 0xe5, 0xff, 0xe7, 0xff, 0xa0, 0xff, 0x96, 0xff, 0xb9, 0xff, 0x11, 0x00, 0xac, 0x00, + 0x4b, 0x01, 0xae, 0x01, 0xe3, 0x01, 0x1f, 0x02, 0x3f, 0x02, 0xf4, 0x01, 0x8a, 0x01, 0x17, 0x01, + 0xa6, 0x00, 0x40, 0x00, 0xdf, 0xff, 0x85, 0xff, 0x5e, 0xff, 0x1b, 0xff, 0xef, 0xfe, 0xe0, 0xfe, + 0xa9, 0xfe, 0x86, 0xfe, 0x95, 0xfe, 0x0a, 0xff, 0x63, 0xff, 0xc3, 0xff, 0x25, 0x00, 0x53, 0x00, + 0x5a, 0x00, 0x58, 0x00, 0x2e, 0x00, 0xdd, 0xff, 0x9d, 0xff, 0x61, 0xff, 0x99, 0xff, 0x4a, 0x00, + 0xee, 0x00, 0x6d, 0x01, 0xbe, 0x01, 0xbc, 0x01, 0xc4, 0x01, 0xb0, 0x01, 0x93, 0x01, 0x7f, 0x01, + 0x52, 0x01, 0x2d, 0x01, 0xf6, 0x00, 0xd2, 0x00, 0xab, 0x00, 0x5f, 0x00, 0xde, 0xff, 0x50, 0xff, + 0xc9, 0xfe, 0x34, 0xfe, 0x22, 0xfe, 0x0f, 0xfe, 0x48, 0xfe, 0x91, 0xfe, 0xc9, 0xfe, 0x2e, 0xff, + 0x46, 0xff, 0x67, 0xff, 0x82, 0xff, 0xa5, 0xff, 0xb9, 0xff, 0xbc, 0xff, 0xea, 0xff, 0x46, 0x00, + 0xcf, 0x00, 0x28, 0x01, 0x50, 0x01, 0x5e, 0x01, 0x80, 0x01, 0x58, 0x01, 0xef, 0x00, 0xef, 0x00, + 0xae, 0x00, 0xd1, 0x00, 0xb7, 0x00, 0xa8, 0x00, 0xbe, 0x00, 0xc0, 0x00, 0x8c, 0x00, 0x1c, 0x00, + 0xb5, 0xff, 0xfb, 0xfe, 0x9c, 0xfe, 0x39, 0xfe, 0x3a, 0xfe, 0x3c, 0xfe, 0x38, 0xfe, 0x4f, 0xfe, + 0x53, 0xfe, 0x4c, 0xfe, 0x74, 0xfe, 0xba, 0xfe, 0xc8, 0xfe, 0x18, 0xff, 0x75, 0xff, 0x2e, 0x00, + 0x1a, 0x01, 0xcd, 0x01, 0x3d, 0x02, 0x35, 0x02, 0x3f, 0x02, 0xc3, 0x01, 0x8e, 0x01, 0x5a, 0x01, + 0x1e, 0x01, 0x10, 0x01, 0x05, 0x01, 0xc7, 0x00, 0xbb, 0x00, 0xdc, 0x00, 0xc5, 0x00, 0xa8, 0x00, + 0x95, 0x00, 0x3f, 0x00, 0xf7, 0xff, 0x84, 0xff, 0x6d, 0xff, 0x3b, 0xff, 0xeb, 0xfe, 0xc2, 0xfe, + 0x63, 0xfe, 0x4b, 0xfe, 0x29, 0xfe, 0x23, 0xfe, 0xfa, 0xfd, 0xf7, 0xfd, 0x2a, 0xfe, 0x83, 0xfe, + 0x79, 0xff, 0x55, 0x00, 0x20, 0x01, 0x92, 0x01, 0xfc, 0x01, 0x0b, 0x02, 0xee, 0x01, 0xc6, 0x01, + 0x60, 0x01, 0x06, 0x01, 0xc0, 0x00, 0x85, 0x00, 0x95, 0x00, 0x8e, 0x00, 0x8c, 0x00, 0x5e, 0x00, + 0xef, 0xff, 0xbf, 0xff, 0xb0, 0xff, 0x55, 0xff, 0x5d, 0xff, 0x93, 0xff, 0x9b, 0xff, 0xbe, 0xff, + 0x9d, 0xff, 0x4e, 0xff, 0x25, 0xff, 0xd0, 0xfe, 0x80, 0xfe, 0x50, 0xfe, 0x17, 0xfe, 0x4f, 0xfe, + 0xd1, 0xfe, 0x6b, 0xff, 0x37, 0x00, 0xdc, 0x00, 0x3f, 0x01, 0xbc, 0x01, 0xcd, 0x01, 0xdf, 0x01, + 0xf3, 0x01, 0x0b, 0x02, 0xf4, 0x01, 0xb7, 0x01, 0x94, 0x01, 0x57, 0x01, 0x2a, 0x01, 0xcb, 0x00, + 0x68, 0x00, 0x26, 0x00, 0xb6, 0xff, 0x4b, 0xff, 0x13, 0xff, 0x00, 0xff, 0x43, 0xff, 0x75, 0xff, + 0x99, 0xff, 0x8e, 0xff, 0x73, 0xff, 0x75, 0xff, 0x34, 0xff, 0xf2, 0xfe, 0x7d, 0xfe, 0x66, 0xfe, + 0x88, 0xfe, 0xc8, 0xfe, 0x3d, 0xff, 0x83, 0xff, 0xc9, 0xff, 0x2b, 0x00, 0x56, 0x00, 0x51, 0x00, + 0x5c, 0x00, 0x8e, 0x00, 0xee, 0x00, 0x07, 0x01, 0x1d, 0x01, 0x3d, 0x01, 0x24, 0x01, 0x39, 0x01, + 0xee, 0x00, 0x3c, 0x00, 0xcb, 0xff, 0x79, 0xff, 0x3c, 0xff, 0x5f, 0xff, 0x67, 0xff, 0x5d, 0xff, + 0x34, 0xff, 0x53, 0xff, 0x62, 0xff, 0x3b, 0xff, 0x77, 0xff, 0x77, 0xff, 0x34, 0xff, 0x04, 0xff, + 0x12, 0xff, 0x4a, 0xff, 0xa1, 0xff, 0xe8, 0xff, 0xc1, 0xff, 0xb1, 0xff, 0x9d, 0xff, 0x90, 0xff, + 0x80, 0xff, 0x80, 0xff, 0x7f, 0xff, 0xa4, 0xff, 0xc5, 0xff, 0x02, 0x00, 0x4a, 0x00, 0x96, 0x00, + 0xc9, 0x00, 0xcc, 0x00, 0xe7, 0x00, 0xa1, 0x00, 0x16, 0x00, 0x0b, 0x00, 0xd8, 0xff, 0xbb, 0xff, + 0xd2, 0xff, 0xcf, 0xff, 0xb1, 0xff, 0x89, 0xff, 0x6b, 0xff, 0x56, 0xff, 0x52, 0xff, 0x59, 0xff, + 0x89, 0xff, 0xd1, 0xff, 0x53, 0x00, 0xe0, 0x00, 0xe9, 0x00, 0x0a, 0x01, 0xda, 0x00, 0x55, 0x00, + 0xf9, 0xff, 0x73, 0xff, 0x3a, 0xff, 0x17, 0xff, 0xd8, 0xfe, 0xb1, 0xfe, 0xbf, 0xfe, 0x24, 0xff, + 0x7b, 0xff, 0x7b, 0xff, 0x4b, 0xff, 0x9e, 0xff, 0xa1, 0xff, 0x98, 0xff, 0xdd, 0xff, 0x0a, 0x00, + 0x37, 0x00, 0x0f, 0x00, 0xfa, 0xff, 0x06, 0x00, 0xf0, 0xff, 0xbe, 0xff, 0x9a, 0xff, 0x43, 0xff, + 0xf8, 0xfe, 0x38, 0xff, 0xab, 0xff, 0x48, 0x00, 0xdc, 0x00, 0x6f, 0x01, 0x99, 0x01, 0xaf, 0x01, + 0x98, 0x01, 0x1f, 0x01, 0xef, 0x00, 0x80, 0x00, 0x2b, 0x00, 0x14, 0x00, 0xed, 0xff, 0xf0, 0xff, + 0xe5, 0xff, 0xd7, 0xff, 0x96, 0xff, 0x7d, 0xff, 0x5e, 0xff, 0x33, 0xff, 0x68, 0xff, 0xd8, 0xff, + 0x48, 0x00, 0xb7, 0x00, 0xeb, 0x00, 0xda, 0x00, 0xe5, 0x00, 0xa2, 0x00, 0x57, 0x00, 0x07, 0x00, + 0x9f, 0xff, 0x84, 0xff, 0xc1, 0xff, 0x5e, 0x00, 0xab, 0x00, 0xe2, 0x00, 0x27, 0x01, 0x3e, 0x01, + 0x51, 0x01, 0x1b, 0x01, 0x04, 0x01, 0xc6, 0x00, 0x69, 0x00, 0x52, 0x00, 0x7d, 0x00, 0x2f, 0x00, + 0xe6, 0xff, 0xbd, 0xff, 0x28, 0xff, 0xb5, 0xfe, 0xa1, 0xfe, 0xf9, 0xfd, 0x55, 0xfd, 0xb0, 0xfd, + 0x02, 0xff, 0x57, 0xff, 0xc0, 0xff, 0xf9, 0xff, 0xe3, 0xff, 0x29, 0x00, 0x42, 0x00, 0x45, 0x00, + 0xed, 0xff, 0x20, 0x00, 0xf4, 0xff, 0x51, 0x00, 0xb6, 0x00, 0xe4, 0x00, 0xd7, 0x00, 0xa4, 0x00, + 0xf1, 0x00, 0xfb, 0x00, 0xe5, 0x00, 0xd0, 0x00, 0xe2, 0x00, 0xd0, 0x00, 0xb0, 0x00, 0xe3, 0x00, + 0xff, 0x00, 0xe4, 0x00, 0xb3, 0x00, 0x66, 0x00, 0xed, 0xff, 0x35, 0xff, 0xab, 0xfe, 0xad, 0xfe, + 0x96, 0xfe, 0x96, 0xfe, 0xc5, 0xfe, 0xf0, 0xfe, 0x12, 0xff, 0x6a, 0xff, 0x90, 0xff, 0x8e, 0xff, + 0x57, 0xff, 0x23, 0xff, 0x71, 0xff, 0xe4, 0xff, 0x7b, 0x00, 0xe3, 0x00, 0xea, 0x00, 0x0f, 0x01, + 0x50, 0x01, 0xda, 0x00, 0x8a, 0x00, 0x48, 0x00, 0x24, 0x00, 0xf4, 0xff, 0x2a, 0x00, 0x91, 0x00, + 0x8b, 0x00, 0xb3, 0x00, 0xa9, 0x00, 0xab, 0x00, 0xa1, 0x00, 0x4d, 0x00, 0x0c, 0x00, 0xcb, 0xff, + 0xb8, 0xff, 0xa9, 0xff, 0xbd, 0xff, 0xa1, 0xff, 0x7a, 0xff, 0x75, 0xff, 0x73, 0xff, 0x3b, 0xff, + 0xd6, 0xfe, 0xd6, 0xfe, 0x5b, 0xff, 0xad, 0xff, 0x8e, 0x00, 0x31, 0x01, 0xfe, 0x01, 0x7c, 0x02, + 0xa2, 0x02, 0x72, 0x02, 0x10, 0x02, 0x8a, 0x01, 0x52, 0x01, 0xe9, 0x00, 0x8c, 0x00, 0x72, 0x00, + 0x4b, 0x00, 0x36, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x68, 0x00, 0x4c, 0x00, 0x18, 0x00, 0xdb, 0xff, + 0x8f, 0xff, 0x9e, 0xff, 0xc0, 0xff, 0x9b, 0xff, 0x54, 0xff, 0x30, 0xff, 0xf3, 0xfe, 0xbd, 0xfe, + 0x58, 0xfe, 0xbb, 0xfd, 0x9f, 0xfd, 0xa3, 0xfd, 0xd6, 0xfd, 0x3b, 0xfe, 0xb6, 0xfe, 0x9d, 0xff, + 0x6c, 0x00, 0xd4, 0x00, 0xbd, 0x00, 0x94, 0x00, 0x70, 0x00, 0x05, 0x00, 0xac, 0xff, 0x4c, 0xff, + 0x58, 0xff, 0x87, 0xff, 0x7f, 0xff, 0x76, 0xff, 0x70, 0xff, 0x97, 0xff, 0x3b, 0xff, 0xf5, 0xfe, + 0xf8, 0xfe, 0x1b, 0xff, 0x8f, 0xff, 0xee, 0xff, 0x43, 0x00, 0x7c, 0x00, 0x2a, 0x00, 0xbf, 0xff, + 0x2d, 0xff, 0x7a, 0xfe, 0x3c, 0xfe, 0x0e, 0xfe, 0x39, 0xfe, 0x7c, 0xfe, 0xe0, 0xfe, 0x6a, 0xff, + 0xee, 0xff, 0x29, 0x00, 0x49, 0x00, 0x46, 0x00, 0x89, 0x00, 0x9a, 0x00, 0x9c, 0x00, 0x08, 0x01, + 0x0e, 0x01, 0x6e, 0x01, 0x3a, 0x01, 0x16, 0x01, 0x0b, 0x01, 0xba, 0x00, 0x8b, 0x00, 0x46, 0x00, + 0x4f, 0x00, 0x81, 0x00, 0x8c, 0x00, 0x98, 0x00, 0xa4, 0x00, 0xcd, 0x00, 0xf5, 0x00, 0x27, 0x01, + 0xe8, 0x00, 0xa0, 0x00, 0x61, 0x00, 0xf0, 0xff, 0xca, 0xff, 0x0a, 0x00, 0xf7, 0xff, 0x10, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xfe, 0xff, 0xdb, 0xff, 0xd9, 0xff, 0xd5, 0xff, 0xc5, 0xff, 0xf4, 0xff, + 0x61, 0x00, 0x87, 0x00, 0x48, 0x01, 0x98, 0x01, 0xc2, 0x01, 0xa8, 0x01, 0x4c, 0x01, 0xca, 0x00, + 0x80, 0x00, 0x5d, 0x00, 0x28, 0x00, 0x22, 0x00, 0x23, 0x00, 0x31, 0x00, 0x1e, 0x00, 0x09, 0x00, + 0xd6, 0xff, 0x86, 0xff, 0x66, 0xff, 0x53, 0xff, 0x3d, 0xff, 0x6b, 0xff, 0xa4, 0xff, 0xec, 0xff, + 0x2d, 0x00, 0x46, 0x00, 0x1a, 0x00, 0x99, 0xff, 0x2e, 0xff, 0xd5, 0xfe, 0x78, 0xfe, 0x6d, 0xfe, + 0x88, 0xfe, 0xbf, 0xfe, 0xc6, 0xfe, 0x04, 0xff, 0x91, 0xff, 0x9f, 0xff, 0xe6, 0xff, 0x1b, 0x00, + 0xf7, 0xff, 0x40, 0x00, 0x4d, 0x00, 0x9b, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0xba, 0x00, 0x5d, 0x00, + 0x30, 0x00, 0xf5, 0xff, 0x74, 0xff, 0x2b, 0xff, 0x42, 0xff, 0xb8, 0xff, 0x15, 0x00, 0x95, 0x00, + 0x32, 0x01, 0xa6, 0x01, 0x05, 0x02, 0x87, 0x01, 0xc5, 0x00, 0x65, 0x00, 0x02, 0x00, 0xab, 0xff, + 0x62, 0xff, 0x01, 0xff, 0xe6, 0xfe, 0x48, 0xff, 0x8d, 0xff, 0xca, 0xff, 0xe7, 0xff, 0x0c, 0x00, + 0xf1, 0xff, 0x09, 0x00, 0x7d, 0x00, 0xdb, 0x00, 0x7f, 0x01, 0xcf, 0x01, 0xd5, 0x01, 0x84, 0x01, + 0x1e, 0x01, 0xd8, 0x00, 0x2d, 0x00, 0xf1, 0xff, 0x51, 0xff, 0x8b, 0xff, 0x04, 0x00, 0x63, 0x00, + 0xe5, 0x00, 0x2b, 0x01, 0x38, 0x01, 0x70, 0x01, 0x5f, 0x01, 0x0a, 0x01, 0x8d, 0x00, 0xfa, 0xff, + 0xba, 0xff, 0x5c, 0xff, 0x42, 0xff, 0x26, 0xff, 0xbf, 0xfe, 0x69, 0xfe, 0x59, 0xfe, 0x5d, 0xfe, + 0x2f, 0xfe, 0x5c, 0xfe, 0x0c, 0xff, 0xaf, 0xff, 0xeb, 0xff, 0x63, 0x00, 0xeb, 0x00, 0x1a, 0x01, + 0x3e, 0x01, 0x09, 0x01, 0x7c, 0x00, 0x7c, 0x00, 0x74, 0x00, 0x92, 0x00, 0x18, 0x01, 0x41, 0x01, + 0x24, 0x01, 0x6b, 0x01, 0x3d, 0x01, 0xc1, 0x00, 0xa2, 0x00, 0x50, 0x00, 0x26, 0x00, 0x0a, 0x00, + 0xe5, 0xff, 0x1e, 0x00, 0x0f, 0x00, 0xb8, 0xff, 0x47, 0xff, 0xf1, 0xfe, 0xbc, 0xfe, 0x61, 0xfe, + 0x3c, 0xfe, 0x47, 0xfe, 0x00, 0xfe, 0x22, 0xfe, 0x52, 0xfe, 0x62, 0xfe, 0x9b, 0xfe, 0xf4, 0xfe, + 0x62, 0xff, 0x90, 0xff, 0x76, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xca, 0xff, 0x06, 0x00, 0x60, 0x00, + 0xa3, 0x00, 0x11, 0x01, 0x3d, 0x01, 0x20, 0x01, 0xfa, 0x00, 0x4f, 0x00, 0x19, 0x00, 0xde, 0xff, + 0xaa, 0xff, 0x6a, 0xff, 0x09, 0xff, 0x08, 0xff, 0x53, 0xff, 0x87, 0xff, 0xce, 0xff, 0xd3, 0xff, + 0x7f, 0xff, 0x72, 0xff, 0x1b, 0xff, 0x29, 0xff, 0x9c, 0xfe, 0x33, 0xfe, 0x63, 0xfe, 0x94, 0xfe, + 0x96, 0xfe, 0xd7, 0xfe, 0xc6, 0xfe, 0x23, 0xff, 0x20, 0xff, 0x33, 0xff, 0x8e, 0xff, 0x1f, 0x00, + 0xeb, 0x00, 0x7d, 0x01, 0xfe, 0x01, 0xd8, 0x01, 0x68, 0x01, 0xf4, 0x00, 0xc7, 0x00, 0xc0, 0x00, + 0x43, 0x00, 0xfa, 0xff, 0xdf, 0xff, 0xf2, 0xff, 0x07, 0x00, 0x0f, 0x00, 0x39, 0x00, 0x6f, 0x00, + 0x6f, 0x00, 0x47, 0x00, 0x1d, 0x00, 0x38, 0x00, 0x3d, 0x00, 0x49, 0x00, 0x2d, 0x00, 0xd2, 0xff, + 0xde, 0xff, 0xb7, 0xff, 0x82, 0xff, 0x6a, 0xff, 0xdd, 0xfe, 0xc8, 0xfe, 0x1f, 0xff, 0x8e, 0xff, + 0xf0, 0xff, 0x4b, 0x00, 0xb9, 0x00, 0x12, 0x01, 0x65, 0x01, 0x84, 0x01, 0xa6, 0x01, 0x1d, 0x01, + 0xba, 0x00, 0x64, 0x00, 0xd4, 0xff, 0x8f, 0xff, 0x5b, 0xff, 0x72, 0xff, 0xfc, 0xfe, 0x6b, 0xff, + 0xdc, 0xff, 0x3c, 0x00, 0xd6, 0x00, 0x9d, 0x00, 0x40, 0x00, 0x93, 0x00, 0xb7, 0x00, 0x53, 0x01, + 0x48, 0x01, 0x88, 0x00, 0x7e, 0x00, 0x6a, 0x00, 0xc0, 0x00, 0xbb, 0x00, 0xbd, 0xff, 0x63, 0xff, + 0x1a, 0x00, 0x6f, 0x00, 0xa5, 0x00, 0x0c, 0x01, 0x07, 0x01, 0xb3, 0x00, 0x1d, 0x00, 0x6e, 0x00, + 0x98, 0x00, 0xd0, 0x00, 0x32, 0x01, 0x6c, 0x00, 0xde, 0xff, 0x41, 0xff, 0x44, 0xff, 0xe2, 0xff, + 0x55, 0xff, 0xc7, 0xfe, 0x45, 0xfe, 0x43, 0xfe, 0xd7, 0xfe, 0x0d, 0xff, 0xd6, 0xfd, 0xa7, 0xfd, + 0x65, 0xfe, 0xc7, 0xff, 0x1c, 0x00, 0x9f, 0xff, 0x8c, 0xfe, 0x31, 0xfe, 0xaf, 0xfe, 0x7d, 0xfe, + 0x46, 0xfe, 0x7d, 0xfd, 0x9c, 0xfd, 0x02, 0xfe, 0x1c, 0xff, 0x52, 0xff, 0xc1, 0xfe, 0xed, 0xfd, + 0x6d, 0xfe, 0x42, 0xff, 0x1e, 0x00, 0x3b, 0x00, 0x7a, 0xff, 0xa5, 0xff, 0x4e, 0xff, 0xbb, 0xff, + 0x7a, 0x00, 0x84, 0xff, 0x50, 0xff, 0xb1, 0xff, 0xcf, 0xfe, 0x0c, 0x00, 0xf7, 0xff, 0xfe, 0xfe, + 0xd3, 0xfe, 0x53, 0xfe, 0x3d, 0xff, 0xfe, 0xff, 0xc6, 0xff, 0xae, 0xff, 0x11, 0xff, 0x45, 0xff, + 0x8c, 0x01, 0x7d, 0x01, 0xa1, 0x01, 0x8f, 0x01, 0x3f, 0x01, 0xa9, 0x02, 0x7d, 0x03, 0x09, 0x04, + 0x2d, 0x03, 0xcc, 0x02, 0xcc, 0x02, 0x38, 0x03, 0x8f, 0x03, 0xc0, 0x03, 0x5e, 0x04, 0xcd, 0x04, + 0x18, 0x06, 0xa2, 0x06, 0x4c, 0x06, 0xf3, 0x05, 0x57, 0x06, 0x3d, 0x05, 0xdc, 0x04, 0xc9, 0x04, + 0xd3, 0x05, 0x9d, 0x06, 0x65, 0x06, 0x92, 0x05, 0xee, 0x04, 0x7d, 0x04, 0xbf, 0x04, 0xcd, 0x04, + 0xf6, 0x03, 0x55, 0x04, 0x12, 0x04, 0xe0, 0x03, 0x7f, 0x03, 0x4e, 0x03, 0x46, 0x02, 0x30, 0x00, + 0xdb, 0xfe, 0xe3, 0xfe, 0x1e, 0xff, 0x20, 0xfe, 0x25, 0xfd, 0x06, 0xfb, 0x91, 0xf9, 0x97, 0xf9, + 0xac, 0xf9, 0x4e, 0xf8, 0x92, 0xf7, 0x26, 0xf7, 0xc1, 0xf6, 0x4a, 0xf7, 0x6c, 0xf7, 0x7e, 0xf6, + 0x65, 0xf5, 0x11, 0xf5, 0x9d, 0xf4, 0x84, 0xf4, 0x0a, 0xf5, 0x50, 0xf5, 0x2e, 0xf4, 0xcf, 0xf2, + 0xb1, 0xf3, 0x9a, 0xf4, 0x72, 0xf5, 0x5a, 0xf6, 0xfb, 0xf5, 0x9c, 0xf5, 0x27, 0xf7, 0xc8, 0xf8, + 0x20, 0xf9, 0x31, 0xf8, 0x4f, 0xf7, 0x89, 0xf7, 0xfc, 0xf7, 0xc7, 0xf8, 0xbc, 0xf9, 0xc9, 0xfa, + 0x86, 0xfb, 0x41, 0xfd, 0x05, 0xfe, 0x57, 0xff, 0xcd, 0x00, 0x7d, 0x01, 0x32, 0x02, 0xab, 0x03, + 0x97, 0x06, 0x7f, 0x09, 0xcc, 0x0a, 0xc6, 0x0a, 0xc0, 0x0a, 0x42, 0x0b, 0x5c, 0x0d, 0xe8, 0x0d, + 0x92, 0x0d, 0x47, 0x0e, 0x13, 0x0f, 0x4b, 0x0f, 0xf7, 0x0e, 0x06, 0x0f, 0xff, 0x0d, 0x42, 0x0c, + 0xe1, 0x0a, 0xb7, 0x0a, 0xc1, 0x0a, 0x52, 0x0a, 0x16, 0x09, 0x3c, 0x07, 0xfb, 0x04, 0x78, 0x04, + 0x9b, 0x03, 0xb0, 0x01, 0xad, 0xff, 0x5a, 0xfe, 0xf5, 0xfd, 0x8a, 0xfd, 0xc2, 0xfc, 0x6c, 0xfa, + 0x1b, 0xf9, 0x38, 0xf9, 0x9b, 0xf9, 0x6a, 0xf9, 0xa7, 0xf9, 0xe7, 0xf9, 0x1b, 0xf9, 0x86, 0xf8, + 0x83, 0xf8, 0x7c, 0xf8, 0x69, 0xf8, 0x8d, 0xf8, 0x6b, 0xf8, 0xe3, 0xf7, 0xa6, 0xf8, 0xce, 0xf9, + 0x1b, 0xfa, 0x3d, 0xf9, 0xcc, 0xf8, 0x05, 0xf9, 0x3c, 0xf9, 0x99, 0xf9, 0x71, 0xfa, 0xf6, 0xfa, + 0x7c, 0xfc, 0x91, 0xfd, 0x22, 0xfe, 0xe3, 0xfe, 0xed, 0xff, 0x93, 0x00, 0x34, 0x01, 0x27, 0x02, + 0xdf, 0x03, 0x4a, 0x06, 0x51, 0x08, 0x22, 0x0a, 0x52, 0x0a, 0x61, 0x0b, 0x84, 0x0d, 0x0e, 0x0f, + 0xf3, 0x0f, 0x48, 0x11, 0x49, 0x13, 0x17, 0x14, 0x82, 0x14, 0x53, 0x15, 0x6c, 0x15, 0xdf, 0x13, + 0xb0, 0x12, 0xd6, 0x11, 0x0e, 0x11, 0x56, 0x10, 0xa4, 0x0f, 0x22, 0x0e, 0xfd, 0x0b, 0xd1, 0x0a, + 0x23, 0x0a, 0x6b, 0x08, 0xce, 0x06, 0x77, 0x05, 0xc4, 0x03, 0x75, 0x02, 0x06, 0x01, 0xde, 0xfe, + 0xb3, 0xfc, 0xb6, 0xfb, 0x85, 0xfa, 0xef, 0xf8, 0x4b, 0xf8, 0xdf, 0xf7, 0xb9, 0xf6, 0x6b, 0xf5, + 0x8c, 0xf4, 0x9f, 0xf3, 0x56, 0xf3, 0xb9, 0xf3, 0xbb, 0xf2, 0x8a, 0xf1, 0xb9, 0xf1, 0xde, 0xf2, + 0xfb, 0xf2, 0x22, 0xf2, 0xdc, 0xf0, 0x62, 0xf0, 0xea, 0xef, 0x8c, 0xef, 0x36, 0xef, 0xdb, 0xee, + 0xa7, 0xef, 0x0b, 0xf1, 0x9c, 0xf1, 0x55, 0xf2, 0x34, 0xf3, 0x22, 0xf4, 0x66, 0xf5, 0x46, 0xf6, + 0xe7, 0xf7, 0x0b, 0xfa, 0x7c, 0xfc, 0x2e, 0xfe, 0xb2, 0xfe, 0x93, 0xff, 0x0f, 0x01, 0x83, 0x02, + 0x16, 0x03, 0x8c, 0x04, 0xbb, 0x06, 0x05, 0x08, 0x99, 0x08, 0x3b, 0x0a, 0x90, 0x0b, 0xc3, 0x0b, + 0x00, 0x0c, 0xc9, 0x0b, 0xb0, 0x0b, 0xed, 0x0b, 0x9b, 0x0c, 0xf0, 0x0b, 0x66, 0x0a, 0x97, 0x09, + 0xcd, 0x08, 0xf1, 0x07, 0xf8, 0x06, 0xf1, 0x05, 0x4e, 0x04, 0x2a, 0x03, 0x1c, 0x02, 0xa2, 0x00, + 0x7c, 0xff, 0x48, 0xff, 0x02, 0xff, 0x09, 0xfe, 0xae, 0xfd, 0xce, 0xfd, 0x48, 0xfd, 0xf0, 0xfb, + 0x00, 0xfa, 0xd3, 0xf8, 0x67, 0xf8, 0x6a, 0xf8, 0xba, 0xf7, 0xba, 0xf5, 0xde, 0xf4, 0x0e, 0xf5, + 0xec, 0xf5, 0x03, 0xf6, 0x2b, 0xf5, 0xc0, 0xf4, 0xee, 0xf3, 0x51, 0xf3, 0xdb, 0xf3, 0x34, 0xf4, + 0xfc, 0xf4, 0x43, 0xf5, 0xf6, 0xf5, 0x7a, 0xf6, 0x07, 0xf7, 0xc5, 0xf8, 0x88, 0xf9, 0x97, 0xf9, + 0xdf, 0xf9, 0x7b, 0xfb, 0xce, 0xfd, 0xa7, 0xff, 0x02, 0x01, 0x30, 0x01, 0xac, 0x02, 0xc5, 0x04, + 0x30, 0x06, 0x54, 0x07, 0x24, 0x09, 0x16, 0x0b, 0x8a, 0x0c, 0x0c, 0x0d, 0xfb, 0x0d, 0x72, 0x0e, + 0x60, 0x0e, 0x8c, 0x0e, 0xa5, 0x0d, 0x24, 0x0e, 0xe9, 0x0e, 0x2d, 0x0f, 0x8c, 0x0d, 0x45, 0x0c, + 0x7b, 0x0c, 0x4c, 0x0c, 0x10, 0x0c, 0x2b, 0x0b, 0xcf, 0x0a, 0xa1, 0x0a, 0xbf, 0x09, 0x8a, 0x08, + 0x90, 0x06, 0x0a, 0x06, 0x79, 0x05, 0xb8, 0x04, 0x02, 0x04, 0xf9, 0x04, 0x64, 0x05, 0x46, 0x04, + 0x3a, 0x03, 0xaa, 0x01, 0x82, 0x01, 0xfc, 0x01, 0x2e, 0x01, 0x41, 0x00, 0xd7, 0xfe, 0xc0, 0xfe, + 0xa4, 0xfe, 0xfb, 0xfc, 0xdc, 0xfc, 0xb3, 0xfb, 0xea, 0xf9, 0x2a, 0xf9, 0x5c, 0xf8, 0x9c, 0xf8, + 0x93, 0xf8, 0x21, 0xf8, 0x75, 0xf7, 0x30, 0xf7, 0x42, 0xf8, 0x79, 0xf8, 0x53, 0xf9, 0x7b, 0xf9, + 0x01, 0xfa, 0x3d, 0xfa, 0x20, 0xfb, 0x8c, 0xfd, 0xb7, 0xfc, 0x1a, 0xfc, 0x8e, 0xfc, 0x27, 0xfe, + 0x56, 0xfe, 0xf3, 0xfd, 0xd8, 0xfe, 0xa6, 0xfe, 0x7c, 0xff, 0xcf, 0x00, 0xa2, 0x01, 0x9e, 0x01, + 0x15, 0x02, 0x83, 0x02, 0x71, 0x00, 0xb0, 0xff, 0x6b, 0x00, 0x11, 0x00, 0xd6, 0xfe, 0x16, 0xfd, + 0x54, 0xfc, 0xc0, 0xfb, 0x6a, 0xfb, 0xa2, 0xfa, 0xd0, 0xf8, 0x34, 0xf8, 0xbc, 0xf7, 0xce, 0xf6, + 0xef, 0xf6, 0xfc, 0xf6, 0xa9, 0xf7, 0xa6, 0xf6, 0x67, 0xf7, 0x2b, 0xf9, 0xc7, 0xf9, 0x31, 0xfb, + 0x39, 0xfb, 0x4b, 0xfa, 0x36, 0xf8, 0x2c, 0xf8, 0xf3, 0xf7, 0xde, 0xf6, 0x52, 0xf6, 0x4c, 0xf7, + 0xd7, 0xf9, 0x6f, 0xfa, 0x54, 0xfa, 0xcf, 0xf9, 0xed, 0xf7, 0xad, 0xf6, 0x77, 0xf5, 0x5d, 0xf5, + 0x3b, 0xf4, 0x95, 0xf5, 0x5a, 0xf6, 0x03, 0xf6, 0x88, 0xf3, 0x9f, 0xf3, 0x76, 0xf4, 0xee, 0xf1, + 0x18, 0xf8, 0x4b, 0xfc, 0x98, 0x01, 0x48, 0x00, 0x5b, 0x03, 0x58, 0xfe, 0x8b, 0x00, 0x01, 0x04, + 0x3b, 0x0b, 0xbe, 0x08, 0x10, 0x11, 0xc9, 0x17, 0x7d, 0x1a, 0xc1, 0x22, 0xd4, 0x27, 0xb3, 0x24, + 0xe6, 0x25, 0x3a, 0x27, 0x9e, 0x25, 0x3a, 0x25, 0x09, 0x20, 0x0e, 0x21, 0x9a, 0x16, 0x25, 0x19, + 0xc9, 0x0e, 0x04, 0x0c, 0x45, 0x06, 0x2a, 0xff, 0xb1, 0xf8, 0x20, 0xf8, 0xb1, 0xf6, 0x7d, 0xf5, + 0x8f, 0xef, 0xef, 0xe3, 0x07, 0xde, 0x1c, 0xde, 0xf6, 0xe7, 0x99, 0xed, 0x7d, 0xf1, 0x00, 0xf5, + 0xfa, 0xf8, 0x7e, 0xf9, 0x35, 0x00, 0x9a, 0x05, 0x48, 0x08, 0xb0, 0x0e, 0x72, 0x11, 0x3e, 0x1b, + 0xb2, 0x1a, 0x31, 0x1b, 0xdd, 0x1b, 0x17, 0x18, 0x4f, 0x18, 0x7b, 0x15, 0x61, 0x13, 0xd4, 0x0d, + 0x46, 0x0a, 0x8f, 0x07, 0xa9, 0x06, 0x26, 0x02, 0x86, 0x04, 0xf1, 0xfd, 0x7b, 0xf4, 0xa7, 0xee, + 0xe5, 0xe7, 0xda, 0xe8, 0x78, 0xe9, 0x8f, 0xea, 0xf5, 0xec, 0xba, 0xee, 0x2f, 0xf0, 0x27, 0xfc, + 0x18, 0x03, 0x2f, 0x0a, 0xf9, 0x13, 0x68, 0x1f, 0x82, 0x26, 0x44, 0x24, 0x28, 0x25, 0x3d, 0x22, + 0x28, 0x1f, 0x08, 0x1c, 0x76, 0x15, 0xb3, 0x0e, 0xdf, 0x07, 0xb4, 0x03, 0x89, 0x00, 0x1e, 0xfb, + 0x2b, 0xf7, 0x3f, 0xf6, 0x9e, 0xed, 0x54, 0xe4, 0x53, 0xdc, 0x2e, 0xd9, 0x53, 0xd9, 0x56, 0xd7, + 0xde, 0xd6, 0x9d, 0xd7, 0x07, 0xd7, 0xbc, 0xda, 0xcf, 0xe0, 0x41, 0xe2, 0xa5, 0xe6, 0xd0, 0xef, + 0x69, 0xf7, 0xa9, 0xfc, 0x3c, 0xff, 0x7f, 0x04, 0xde, 0x05, 0x90, 0x07, 0xc4, 0x04, 0xff, 0xfd, + 0x94, 0xf9, 0x6f, 0xf1, 0x9b, 0xea, 0xed, 0xe6, 0xbd, 0xe0, 0xb1, 0xe1, 0xfa, 0xdd, 0x15, 0xd5, + 0xa7, 0xce, 0x2c, 0xc9, 0x10, 0xcd, 0x4c, 0xcc, 0xc9, 0xce, 0x57, 0xd1, 0x8c, 0xd1, 0xe3, 0xd2, + 0xf7, 0xd8, 0x1e, 0xdf, 0x67, 0xe5, 0xdd, 0xf1, 0x28, 0xfc, 0x93, 0x07, 0xf4, 0x10, 0x1a, 0x19, + 0x43, 0x21, 0x58, 0x25, 0x36, 0x2a, 0x07, 0x2b, 0x76, 0x26, 0xed, 0x22, 0xad, 0x1b, 0x5a, 0x19, + 0x30, 0x16, 0x1d, 0x12, 0xbe, 0x12, 0x88, 0x10, 0x11, 0x0a, 0x91, 0x03, 0x01, 0x01, 0xfc, 0xfe, + 0x58, 0xfc, 0x54, 0xfe, 0x61, 0xfd, 0x8c, 0xf8, 0x52, 0xf7, 0x0c, 0xfb, 0xb9, 0xfd, 0xeb, 0x05, + 0xf6, 0x0e, 0x74, 0x15, 0x8f, 0x20, 0x7b, 0x28, 0x77, 0x34, 0x4d, 0x3f, 0xcd, 0x44, 0x24, 0x46, + 0x7b, 0x43, 0xa7, 0x3d, 0x2a, 0x36, 0x40, 0x2e, 0x48, 0x2e, 0x4a, 0x27, 0x5f, 0x22, 0xc4, 0x21, + 0xf7, 0x18, 0x7a, 0x10, 0xa1, 0x06, 0xde, 0x01, 0xba, 0xfc, 0x1e, 0xfb, 0xb5, 0xf9, 0x27, 0xf2, + 0x4f, 0xed, 0xa6, 0xea, 0x18, 0xeb, 0x50, 0xec, 0xa2, 0xf2, 0x14, 0xf8, 0x39, 0x01, 0x12, 0x09, + 0x2c, 0x0f, 0x17, 0x18, 0x2e, 0x1d, 0x1b, 0x23, 0x35, 0x29, 0x0f, 0x24, 0x18, 0x21, 0xa5, 0x19, + 0xa2, 0x13, 0x8e, 0x10, 0x9d, 0x06, 0x39, 0x06, 0x88, 0x05, 0xbb, 0xfc, 0x02, 0xf2, 0x1f, 0xea, + 0x1d, 0xe6, 0xea, 0xe3, 0x08, 0xe6, 0xc1, 0xe6, 0xf8, 0xe6, 0xcb, 0xe5, 0xc9, 0xe8, 0xcf, 0xed, + 0xbd, 0xf3, 0xb5, 0xfa, 0x24, 0x03, 0x86, 0x12, 0x99, 0x18, 0x4d, 0x1f, 0x9d, 0x26, 0xb2, 0x27, + 0x3f, 0x29, 0x2d, 0x23, 0x87, 0x19, 0x0a, 0x13, 0x64, 0x06, 0x4f, 0x00, 0x02, 0xfb, 0x14, 0xf4, + 0x30, 0xf4, 0x2b, 0xee, 0x99, 0xe4, 0x36, 0xd6, 0xb3, 0xcd, 0xc0, 0xc6, 0xa1, 0xc3, 0x58, 0xc4, + 0xdb, 0xc4, 0xab, 0xc5, 0xf0, 0xc8, 0xcf, 0xcf, 0x00, 0xd4, 0x12, 0xda, 0x6a, 0xe1, 0x54, 0xec, + 0xd5, 0xf9, 0x72, 0x02, 0x2b, 0x0b, 0xb4, 0x0e, 0x69, 0x11, 0x6e, 0x15, 0xf8, 0x11, 0x54, 0x10, + 0x32, 0x0b, 0xbb, 0x02, 0x20, 0xff, 0xfe, 0xf8, 0x35, 0xf6, 0x6b, 0xf6, 0x47, 0xf0, 0x2f, 0xe6, + 0x4b, 0xda, 0x3a, 0xd6, 0xbd, 0xd1, 0x02, 0xd1, 0x46, 0xd2, 0x88, 0xd3, 0xd5, 0xd4, 0x2b, 0xd9, + 0x64, 0xe0, 0xd5, 0xe7, 0x95, 0xef, 0x57, 0xf7, 0x55, 0x04, 0xa2, 0x0d, 0xef, 0x14, 0xfb, 0x1d, + 0xa9, 0x20, 0x06, 0x24, 0xbf, 0x24, 0x92, 0x1f, 0x98, 0x1d, 0x11, 0x17, 0x73, 0x10, 0xb6, 0x0d, + 0xc1, 0x02, 0x30, 0xff, 0x3f, 0xfc, 0xf6, 0xf6, 0x0c, 0xe7, 0xd7, 0xda, 0xa6, 0xd7, 0x7a, 0xcf, + 0x1e, 0xd0, 0x44, 0xd1, 0xa8, 0xd4, 0x2f, 0xd8, 0x4a, 0xe0, 0xbc, 0xe8, 0x9b, 0xef, 0xa0, 0xf8, + 0xeb, 0x01, 0xc1, 0x0f, 0xab, 0x1c, 0xa1, 0x25, 0x3b, 0x2e, 0x81, 0x31, 0x2b, 0x35, 0xca, 0x30, + 0x0a, 0x2a, 0x70, 0x27, 0x64, 0x20, 0x79, 0x1e, 0x1d, 0x19, 0x71, 0x14, 0xe0, 0x12, 0xd3, 0x0d, + 0x29, 0x05, 0x9c, 0xf3, 0x79, 0xed, 0xbf, 0xe9, 0x96, 0xe6, 0x91, 0xe4, 0x21, 0xe4, 0xac, 0xe3, + 0x91, 0xe3, 0xbe, 0xeb, 0x0c, 0xf1, 0xa3, 0xf9, 0x97, 0x01, 0x2d, 0x0d, 0x8b, 0x1a, 0xed, 0x24, + 0x2d, 0x2f, 0x19, 0x35, 0xd5, 0x3b, 0xa5, 0x3e, 0x23, 0x38, 0x17, 0x37, 0x54, 0x32, 0x1d, 0x2a, + 0x41, 0x27, 0x06, 0x1f, 0x0b, 0x16, 0x04, 0x14, 0xb1, 0x0e, 0x83, 0x06, 0x2f, 0xf9, 0x3c, 0xf2, + 0x5f, 0xef, 0xb4, 0xec, 0x43, 0xe9, 0x16, 0xe8, 0xe8, 0xe7, 0x40, 0xea, 0x37, 0xf2, 0x8b, 0xf8, + 0xbf, 0x03, 0x44, 0x0a, 0xfa, 0x15, 0x8f, 0x24, 0xe4, 0x2c, 0x16, 0x35, 0xc1, 0x38, 0xcb, 0x3c, + 0x08, 0x3b, 0x3e, 0x35, 0x29, 0x35, 0x55, 0x2d, 0x89, 0x26, 0xb4, 0x21, 0x97, 0x1b, 0xe3, 0x15, + 0x7e, 0x0f, 0xe6, 0x08, 0x95, 0xf9, 0x85, 0xec, 0x6d, 0xe7, 0xe2, 0xe4, 0xf2, 0xe0, 0x24, 0xdb, + 0xc3, 0xd7, 0xb2, 0xd4, 0xca, 0xd6, 0x9b, 0xdb, 0x57, 0xe4, 0xd2, 0xeb, 0x8c, 0xf0, 0xc0, 0xfc, + 0xa0, 0x05, 0xfd, 0x07, 0x37, 0x0c, 0xa6, 0x11, 0xee, 0x16, 0xcf, 0x14, 0xde, 0x12, 0x88, 0x0f, + 0xab, 0x05, 0x4e, 0x01, 0xb4, 0xfc, 0xfc, 0xf3, 0xbf, 0xee, 0x62, 0xe9, 0xdf, 0xde, 0x4d, 0xd0, + 0x7b, 0xc7, 0x68, 0xc2, 0xb2, 0xc1, 0x0b, 0xc4, 0xe5, 0xc1, 0xa5, 0xbe, 0x02, 0xbe, 0xc1, 0xc0, + 0xc0, 0xc4, 0x6f, 0xcd, 0x91, 0xd0, 0xc4, 0xd5, 0x19, 0xe3, 0xab, 0xea, 0x5c, 0xf3, 0xe2, 0xf8, + 0x24, 0x01, 0x06, 0x08, 0x4f, 0x02, 0x62, 0xff, 0xbd, 0xfb, 0x22, 0xf8, 0x8f, 0xf5, 0xde, 0xef, + 0xd0, 0xe9, 0x65, 0xe6, 0xb8, 0xe6, 0xb7, 0xdf, 0xb0, 0xd5, 0xa5, 0xce, 0x64, 0xce, 0xa3, 0xd0, + 0xd3, 0xcf, 0xce, 0xcf, 0xb6, 0xd1, 0x41, 0xd7, 0x5e, 0xdc, 0xc6, 0xe4, 0xfe, 0xf0, 0x5d, 0xf9, + 0x60, 0x07, 0x21, 0x15, 0xbe, 0x1d, 0x2e, 0x28, 0xec, 0x30, 0x63, 0x3c, 0x6a, 0x40, 0xa9, 0x40, + 0x82, 0x40, 0x3c, 0x3c, 0x36, 0x3b, 0x1b, 0x39, 0x26, 0x34, 0x7c, 0x33, 0x61, 0x30, 0x60, 0x2a, + 0x0e, 0x1f, 0xce, 0x13, 0x25, 0x0d, 0x84, 0x0b, 0x45, 0x0a, 0xaa, 0x08, 0x65, 0x06, 0x71, 0x02, + 0x0b, 0x06, 0xf2, 0x04, 0x80, 0x0a, 0x60, 0x0e, 0x3a, 0x10, 0x2e, 0x1b, 0xb4, 0x1e, 0x58, 0x21, + 0x12, 0x25, 0x4f, 0x25, 0x77, 0x2a, 0x2b, 0x2a, 0x90, 0x28, 0x96, 0x25, 0xe0, 0x1e, 0x73, 0x17, + 0xc0, 0x0e, 0x3f, 0x06, 0x7d, 0x00, 0xa0, 0xfa, 0x60, 0xf0, 0x4b, 0xe3, 0x75, 0xda, 0x03, 0xd5, + 0xa2, 0xd2, 0xa7, 0xcf, 0x02, 0xcd, 0x05, 0xcb, 0xe5, 0xca, 0xd0, 0xce, 0x9c, 0xd5, 0x04, 0xdf, + 0x88, 0xe3, 0xcc, 0xec, 0xe1, 0xf9, 0x3b, 0x01, 0x70, 0x0b, 0x94, 0x10, 0x0f, 0x17, 0x93, 0x1e, + 0x8b, 0x20, 0x17, 0x23, 0xc5, 0x1f, 0x22, 0x1b, 0x70, 0x1b, 0x4a, 0x16, 0xac, 0x11, 0xbb, 0x10, + 0x40, 0x0f, 0xdc, 0x05, 0x95, 0xfa, 0xa4, 0xf1, 0x5d, 0xf0, 0x56, 0xf1, 0x26, 0xf0, 0x48, 0xf1, + 0x18, 0xee, 0x99, 0xf0, 0x3f, 0xf4, 0x26, 0xfb, 0x0a, 0x06, 0x4d, 0x09, 0x34, 0x14, 0xb0, 0x1c, + 0xaf, 0x24, 0xa5, 0x2b, 0x1a, 0x2c, 0xf6, 0x35, 0xb4, 0x35, 0x3f, 0x34, 0x27, 0x34, 0xd7, 0x2e, + 0x5d, 0x2c, 0x98, 0x27, 0x8e, 0x20, 0x93, 0x1a, 0xdd, 0x17, 0xa7, 0x11, 0x75, 0x01, 0x9e, 0xf2, + 0xc9, 0xe8, 0x9b, 0xe4, 0x75, 0xe1, 0x68, 0xde, 0xda, 0xdc, 0xe5, 0xda, 0x01, 0xdd, 0x6e, 0xde, + 0xc7, 0xe4, 0x7a, 0xe7, 0x45, 0xeb, 0xa1, 0xf6, 0x0f, 0xfc, 0xde, 0x04, 0xc7, 0x0b, 0x66, 0x0f, + 0x61, 0x15, 0x6f, 0x15, 0x38, 0x16, 0xcf, 0x12, 0x60, 0x0a, 0xf4, 0x09, 0x8f, 0x04, 0x50, 0xfd, + 0x9f, 0xf9, 0x83, 0xf5, 0x98, 0xec, 0xcc, 0xde, 0x18, 0xd7, 0x8b, 0xd0, 0x33, 0xcc, 0x88, 0xc9, + 0x6c, 0xc6, 0x20, 0xc2, 0xbb, 0xc0, 0x28, 0xc5, 0xd4, 0xca, 0x10, 0xd4, 0x05, 0xda, 0xfd, 0xe2, + 0x2d, 0xef, 0xb5, 0xf8, 0xe3, 0x01, 0x9c, 0x05, 0x7b, 0x0f, 0xc6, 0x15, 0x96, 0x15, 0x80, 0x19, + 0xde, 0x15, 0x09, 0x12, 0x6a, 0x10, 0xce, 0x0b, 0x06, 0x07, 0xd0, 0x05, 0xaf, 0x04, 0x20, 0xf9, + 0x40, 0xf0, 0xa4, 0xe5, 0x6a, 0xde, 0x5a, 0xda, 0xa3, 0xd5, 0x5a, 0xd4, 0xed, 0xce, 0xa3, 0xcf, + 0x4c, 0xd2, 0x0e, 0xd8, 0x3f, 0xde, 0x20, 0xe2, 0x48, 0xed, 0x42, 0xf5, 0x8a, 0xfe, 0x0a, 0x04, + 0x21, 0x07, 0x6b, 0x0d, 0xaa, 0x0f, 0xa0, 0x14, 0x08, 0x17, 0x6a, 0x15, 0xe7, 0x17, 0xde, 0x17, + 0x9a, 0x13, 0x7f, 0x0e, 0x60, 0x0c, 0x5a, 0x08, 0xa1, 0xfe, 0x80, 0xf6, 0x56, 0xf0, 0x2f, 0xee, + 0xd3, 0xed, 0x68, 0xef, 0x0d, 0xee, 0x0b, 0xec, 0xe3, 0xef, 0x56, 0xf4, 0x12, 0xfd, 0x19, 0x06, + 0xa3, 0x0c, 0xe3, 0x17, 0x94, 0x21, 0x5f, 0x2b, 0x53, 0x34, 0xb9, 0x3c, 0x51, 0x45, 0x06, 0x47, + 0x70, 0x49, 0xa8, 0x48, 0x6a, 0x44, 0x03, 0x44, 0x49, 0x41, 0xe4, 0x3a, 0x1d, 0x37, 0x91, 0x34, + 0x25, 0x2c, 0x88, 0x20, 0x98, 0x14, 0xb2, 0x0a, 0xab, 0x05, 0xc3, 0x00, 0x26, 0x00, 0xb3, 0xfa, + 0x2e, 0xf7, 0xcc, 0xf5, 0x8d, 0xf6, 0xe6, 0xf9, 0xee, 0xf9, 0x73, 0x02, 0x78, 0x09, 0x5e, 0x0c, + 0x28, 0x10, 0xfb, 0x13, 0xa6, 0x16, 0x46, 0x16, 0xdc, 0x16, 0x1e, 0x15, 0x28, 0x10, 0x3f, 0x0d, + 0x87, 0x0b, 0x43, 0x07, 0x0e, 0xff, 0x8f, 0xfa, 0x7b, 0xf4, 0x63, 0xec, 0xd3, 0xe2, 0xcf, 0xd6, + 0x94, 0xd0, 0xec, 0xca, 0x06, 0xc9, 0x17, 0xc7, 0xc8, 0xc4, 0x25, 0xc8, 0x26, 0xcb, 0xf4, 0xd2, + 0x6a, 0xdb, 0x0b, 0xe0, 0xdb, 0xe7, 0x4b, 0xf0, 0xc5, 0xf7, 0x75, 0xfc, 0xf9, 0x02, 0x18, 0x0c, + 0x9b, 0x0f, 0x13, 0x11, 0x4e, 0x13, 0x2e, 0x11, 0x95, 0x0f, 0xa8, 0x0b, 0xe4, 0x08, 0xb8, 0x06, + 0x3b, 0x04, 0xbf, 0x00, 0x69, 0xf9, 0x09, 0xf1, 0xd4, 0xe8, 0x86, 0xe6, 0xde, 0xe2, 0xeb, 0xe2, + 0xbe, 0xe0, 0x3b, 0xde, 0x67, 0xe1, 0xa8, 0xe3, 0xda, 0xeb, 0x08, 0xf3, 0xd7, 0xf8, 0xf1, 0x03, + 0x8d, 0x09, 0xb4, 0x12, 0x95, 0x1a, 0x90, 0x1e, 0x30, 0x25, 0x3b, 0x29, 0xa8, 0x2c, 0xe7, 0x29, + 0xc3, 0x25, 0x99, 0x22, 0x67, 0x1f, 0xd9, 0x19, 0x3b, 0x15, 0xcc, 0x13, 0x68, 0x0e, 0xca, 0x05, + 0x77, 0xfb, 0xd8, 0xf3, 0x24, 0xed, 0x9a, 0xe9, 0x0a, 0xe8, 0x59, 0xe2, 0x21, 0xe2, 0xfc, 0xe2, + 0x39, 0xe6, 0x26, 0xeb, 0x35, 0xed, 0x9f, 0xf4, 0x28, 0xfc, 0x7f, 0x03, 0xc3, 0x0a, 0x65, 0x0e, + 0x22, 0x12, 0x2f, 0x13, 0xb1, 0x10, 0xc6, 0x0f, 0xde, 0x0b, 0x7f, 0x07, 0x43, 0x07, 0x71, 0x05, + 0xc2, 0xff, 0x94, 0xfa, 0x9c, 0xf7, 0xe3, 0xef, 0xfc, 0xe4, 0xe1, 0xda, 0x4e, 0xd4, 0x27, 0xd0, + 0xd1, 0xd1, 0xe1, 0xd0, 0xdb, 0xcd, 0x1c, 0xd1, 0x58, 0xd2, 0xb8, 0xd7, 0x61, 0xde, 0xc1, 0xe3, + 0x8c, 0xee, 0x86, 0xf6, 0x93, 0x00, 0xaf, 0x07, 0x1c, 0x0d, 0xa8, 0x16, 0x51, 0x19, 0x1f, 0x1d, + 0x3c, 0x1e, 0xb9, 0x1c, 0xef, 0x1b, 0xa9, 0x19, 0x74, 0x16, 0x97, 0x11, 0x90, 0x10, 0x55, 0x0d, + 0x3d, 0x05, 0x45, 0xfb, 0x13, 0xf2, 0xbd, 0xec, 0x5e, 0xe9, 0x58, 0xea, 0xca, 0xe6, 0x46, 0xe8, + 0x13, 0xec, 0xcb, 0xed, 0x38, 0xf5, 0x27, 0xfa, 0xce, 0x00, 0x85, 0x07, 0xa3, 0x12, 0xef, 0x1b, + 0x4a, 0x22, 0x9f, 0x29, 0xac, 0x2e, 0x98, 0x2e, 0xf6, 0x2d, 0x48, 0x2e, 0xc2, 0x29, 0x22, 0x26, + 0x6e, 0x25, 0x64, 0x1f, 0xbd, 0x1a, 0x4f, 0x1a, 0xf7, 0x14, 0xba, 0x0b, 0x83, 0x03, 0xe5, 0xfc, + 0xff, 0xf2, 0x63, 0xf0, 0x01, 0xec, 0x93, 0xe7, 0xa0, 0xe7, 0xb9, 0xe7, 0x2a, 0xed, 0x95, 0xf3, + 0x6d, 0xfa, 0x39, 0x02, 0x93, 0x07, 0xb5, 0x0f, 0x7a, 0x15, 0x28, 0x18, 0x77, 0x1c, 0x62, 0x1e, + 0xcf, 0x22, 0x8f, 0x23, 0x6d, 0x1f, 0x77, 0x1c, 0x21, 0x1b, 0xa1, 0x18, 0x0b, 0x11, 0x8b, 0x0d, + 0xe4, 0x09, 0xe2, 0x02, 0xc5, 0xf9, 0x54, 0xec, 0xf4, 0xe5, 0x2d, 0xdf, 0x53, 0xde, 0x3f, 0xdb, + 0xfc, 0xd6, 0x46, 0xd6, 0xbd, 0xd4, 0xf0, 0xd8, 0xdd, 0xdb, 0xbf, 0xdf, 0xaf, 0xe6, 0xdb, 0xee, + 0x67, 0xf8, 0xca, 0xfc, 0xf9, 0x01, 0x18, 0x09, 0xb6, 0x0a, 0x55, 0x0c, 0xa8, 0x0c, 0x17, 0x0c, + 0x46, 0x0a, 0x4d, 0x0a, 0x18, 0x07, 0x70, 0x02, 0xac, 0x00, 0x05, 0xff, 0x14, 0xfb, 0xf9, 0xf2, + 0x31, 0xec, 0xf4, 0xe7, 0xda, 0xe7, 0x7a, 0xe7, 0xb6, 0xe3, 0x65, 0xe2, 0xef, 0xe1, 0x7a, 0xe2, + 0x6a, 0xe7, 0x54, 0xec, 0x3e, 0xf1, 0x9d, 0xf8, 0x8e, 0x01, 0x82, 0x08, 0x87, 0x0e, 0x04, 0x13, + 0xab, 0x17, 0xd2, 0x18, 0xb3, 0x19, 0x18, 0x17, 0x41, 0x16, 0x88, 0x15, 0x37, 0x12, 0x18, 0x10, + 0x63, 0x0e, 0x91, 0x0d, 0x6f, 0x09, 0x13, 0x03, 0x1f, 0xf9, 0x55, 0xf2, 0xcb, 0xec, 0xb6, 0xe9, + 0xc4, 0xe9, 0xe2, 0xe6, 0x0e, 0xe6, 0xc3, 0xe5, 0x40, 0xea, 0x7f, 0xf0, 0x02, 0xf5, 0x77, 0xfd, + 0x9f, 0x02, 0x60, 0x0b, 0x3a, 0x11, 0x0d, 0x14, 0xbf, 0x1b, 0x66, 0x1e, 0x80, 0x22, 0xf4, 0x23, + 0xa9, 0x22, 0xde, 0x20, 0x50, 0x1f, 0x72, 0x1d, 0xb9, 0x16, 0x24, 0x15, 0x2d, 0x13, 0xb7, 0x10, + 0x18, 0x0a, 0x27, 0x01, 0xc7, 0xfa, 0x6a, 0xf2, 0xbe, 0xef, 0xac, 0xed, 0x16, 0xeb, 0xc3, 0xea, + 0xb6, 0xea, 0x08, 0xef, 0xe2, 0xf3, 0x0a, 0xf8, 0xe9, 0xfc, 0xf1, 0x02, 0xd8, 0x09, 0x6c, 0x0e, + 0x4d, 0x12, 0x4a, 0x18, 0x2f, 0x1b, 0xe0, 0x1c, 0x24, 0x1a, 0x91, 0x15, 0xcd, 0x11, 0x2e, 0x0f, + 0xd4, 0x0c, 0xf1, 0x07, 0xa1, 0x03, 0x6e, 0x01, 0x95, 0xfe, 0xb0, 0xf4, 0x16, 0xec, 0xf6, 0xe4, + 0x7d, 0xe0, 0xe9, 0xde, 0x4e, 0xdb, 0xa5, 0xd7, 0x3e, 0xd5, 0x70, 0xd5, 0x17, 0xda, 0x4d, 0xde, + 0x33, 0xe4, 0x88, 0xeb, 0x5b, 0xf4, 0x9f, 0xfc, 0xaf, 0xfd, 0x34, 0x04, 0x7b, 0x08, 0xf3, 0x08, + 0xc5, 0x09, 0xa0, 0x08, 0x7c, 0x05, 0xf1, 0x01, 0xb9, 0x00, 0x14, 0xfc, 0x5b, 0xfa, 0xa1, 0xf7, + 0x89, 0xf5, 0x99, 0xf2, 0x86, 0xea, 0x3f, 0xe6, 0xc2, 0xdd, 0xff, 0xdd, 0x3e, 0xde, 0x31, 0xda, + 0xb8, 0xdb, 0x1e, 0xdb, 0xc7, 0xdf, 0x55, 0xe3, 0x66, 0xe8, 0xf7, 0xee, 0x81, 0xf6, 0xbd, 0x02, + 0xb2, 0x0a, 0x78, 0x10, 0x0e, 0x18, 0x5f, 0x1d, 0x2d, 0x22, 0x2c, 0x25, 0xd0, 0x26, 0x77, 0x25, + 0x35, 0x27, 0xfa, 0x26, 0x27, 0x24, 0xfa, 0x22, 0x20, 0x22, 0x31, 0x22, 0x7c, 0x1b, 0x7b, 0x14, + 0x0a, 0x0d, 0xbd, 0x07, 0x16, 0x09, 0x7b, 0x08, 0xf6, 0x05, 0x44, 0x04, 0x65, 0x02, 0x08, 0x04, + 0x37, 0x07, 0x7c, 0x0a, 0xd7, 0x0d, 0x4b, 0x14, 0x14, 0x1c, 0xcb, 0x1e, 0x86, 0x22, 0xec, 0x28, + 0xac, 0x28, 0x35, 0x29, 0xf8, 0x26, 0x61, 0x21, 0x02, 0x1a, 0x3c, 0x14, 0x0c, 0x10, 0x47, 0x08, + 0xc9, 0x03, 0x10, 0x02, 0x42, 0xff, 0x7b, 0xf5, 0x76, 0xec, 0xcb, 0xe1, 0x74, 0xdb, 0x18, 0xd8, + 0xa1, 0xd2, 0x9b, 0xd1, 0x02, 0xcf, 0x69, 0xcd, 0x29, 0xcf, 0x42, 0xd2, 0x82, 0xd8, 0xd3, 0xdd, + 0x9a, 0xe6, 0xd1, 0xf0, 0x07, 0xf6, 0xae, 0xfc, 0x59, 0x02, 0x72, 0x06, 0x2c, 0x09, 0xd4, 0x0b, + 0xfe, 0x09, 0x7c, 0x08, 0x8f, 0x0a, 0xe5, 0x08, 0xbc, 0x07, 0x8a, 0x05, 0x24, 0x06, 0xfe, 0x02, + 0x72, 0xfd, 0x3d, 0xf6, 0xcd, 0xec, 0x3f, 0xec, 0xc8, 0xe9, 0x48, 0xe6, 0x10, 0xe5, 0xe5, 0xe3, + 0x5b, 0xe6, 0x27, 0xeb, 0xbd, 0xef, 0x9e, 0xf6, 0x05, 0xff, 0x04, 0x09, 0x04, 0x12, 0x6c, 0x16, + 0xa3, 0x1c, 0x7a, 0x20, 0xfb, 0x24, 0x7d, 0x27, 0x17, 0x26, 0xf1, 0x21, 0xfe, 0x1e, 0x2b, 0x1d, + 0x29, 0x18, 0xfa, 0x13, 0x89, 0x11, 0xdc, 0x0e, 0x31, 0x09, 0x0f, 0x01, 0x04, 0xf9, 0x7c, 0xf2, + 0x94, 0xf0, 0xae, 0xed, 0x8b, 0xe8, 0xcb, 0xe3, 0x0c, 0xde, 0x48, 0xde, 0xef, 0xde, 0xc0, 0xe1, + 0x94, 0xe7, 0xed, 0xed, 0x63, 0xfa, 0x53, 0xff, 0x4c, 0x03, 0x9b, 0x08, 0xbf, 0x0b, 0x71, 0x0e, + 0xe4, 0x0f, 0xa1, 0x0f, 0x6b, 0x0d, 0x39, 0x0f, 0x63, 0x0c, 0x9a, 0x07, 0x9b, 0x04, 0xc4, 0x06, + 0xe5, 0x05, 0xbe, 0xfe, 0x26, 0xf8, 0xb6, 0xee, 0xee, 0xeb, 0x14, 0xe9, 0x7c, 0xe5, 0x19, 0xe5, + 0x20, 0xe0, 0xaa, 0xdf, 0xe1, 0xe3, 0xe8, 0xe7, 0x5a, 0xec, 0xb9, 0xf0, 0x5a, 0xf7, 0xc6, 0xff, + 0xab, 0x06, 0x23, 0x0d, 0x40, 0x13, 0xb6, 0x17, 0xfd, 0x19, 0x33, 0x1c, 0x40, 0x1a, 0x19, 0x18, + 0x78, 0x17, 0x41, 0x14, 0x4c, 0x11, 0xc8, 0x0e, 0xd6, 0x10, 0xe5, 0x0d, 0x84, 0x07, 0x51, 0x00, + 0x24, 0xf8, 0xa4, 0xf3, 0xa2, 0xf0, 0x92, 0xef, 0x3b, 0xee, 0xf3, 0xe9, 0xad, 0xe8, 0xe8, 0xe8, + 0xcf, 0xea, 0xf2, 0xed, 0x1f, 0xef, 0xa2, 0xf6, 0xa9, 0xfd, 0x82, 0x01, 0x99, 0x06, 0x74, 0x09, + 0xa7, 0x0c, 0x10, 0x0f, 0x94, 0x0f, 0x68, 0x0b, 0x8c, 0x0a, 0x37, 0x08, 0xe2, 0x02, 0xd9, 0xff, + 0xee, 0xfd, 0x80, 0xfe, 0x55, 0xfc, 0x4e, 0xf9, 0x04, 0xf1, 0x54, 0xe9, 0xd0, 0xe7, 0x1f, 0xe6, + 0xc4, 0xe5, 0xb8, 0xe2, 0x2a, 0xe1, 0xdc, 0xe4, 0x0a, 0xe8, 0x01, 0xec, 0x3c, 0xf1, 0x0c, 0xfb, + 0x2b, 0x08, 0x65, 0x10, 0xa9, 0x16, 0xeb, 0x1d, 0x38, 0x24, 0x6b, 0x27, 0xfb, 0x2b, 0x3d, 0x2b, + 0x8d, 0x2a, 0xb4, 0x2a, 0xf6, 0x28, 0xb1, 0x27, 0x3a, 0x23, 0xd6, 0x25, 0x65, 0x25, 0xd2, 0x20, + 0x5a, 0x1d, 0xaa, 0x15, 0xc5, 0x0f, 0x66, 0x0c, 0xb6, 0x09, 0x0d, 0x06, 0x9b, 0x01, 0xf2, 0xfd, + 0x8f, 0xff, 0x44, 0x02, 0x3b, 0x04, 0x33, 0x05, 0x42, 0x0b, 0x21, 0x14, 0x1c, 0x16, 0xe0, 0x1a, + 0xfd, 0x1e, 0xe3, 0x1e, 0xa6, 0x1e, 0x47, 0x20, 0x3f, 0x1d, 0xf2, 0x19, 0x4e, 0x16, 0xb0, 0x0e, + 0xa4, 0x08, 0xf5, 0x04, 0xb7, 0x03, 0x95, 0xfe, 0xf6, 0xf6, 0x60, 0xee, 0x51, 0xe3, 0xed, 0xde, + 0x01, 0xdc, 0x58, 0xd8, 0x17, 0xd6, 0x3d, 0xd3, 0x6b, 0xd3, 0x55, 0xd3, 0xb6, 0xd4, 0xcb, 0xd6, + 0x03, 0xd9, 0xbc, 0xe2, 0xe9, 0xea, 0x95, 0xf1, 0x8f, 0xf9, 0xc8, 0xfd, 0x5f, 0x00, 0xc0, 0x03, + 0xe9, 0x04, 0x23, 0x02, 0x02, 0x00, 0x86, 0xfd, 0x18, 0xfc, 0x10, 0xf7, 0x03, 0xf5, 0xbf, 0xf4, + 0x2f, 0xf1, 0x34, 0xef, 0x11, 0xe8, 0x17, 0xe0, 0xf5, 0xdd, 0x4a, 0xdd, 0xf1, 0xdb, 0x13, 0xda, + 0x40, 0xd9, 0x18, 0xda, 0x56, 0xdc, 0x6c, 0xe0, 0xb8, 0xe3, 0x61, 0xe9, 0xe2, 0xf2, 0x89, 0xf9, + 0x26, 0x00, 0x04, 0x08, 0x0a, 0x0c, 0x76, 0x10, 0x64, 0x15, 0x34, 0x14, 0x38, 0x12, 0x57, 0x11, + 0x9d, 0x11, 0x1c, 0x11, 0xf9, 0x0d, 0x8c, 0x0e, 0x0e, 0x0e, 0x67, 0x0c, 0xe7, 0x08, 0x79, 0xff, + 0x82, 0xf9, 0x90, 0xf7, 0x08, 0xf5, 0x0c, 0xf4, 0xa6, 0xf2, 0xcd, 0xf2, 0xd0, 0xf5, 0x14, 0xf8, + 0xb4, 0xfa, 0x2b, 0xfd, 0x34, 0x06, 0x46, 0x0e, 0x35, 0x13, 0x58, 0x19, 0x3a, 0x1e, 0x2e, 0x21, + 0x38, 0x23, 0x09, 0x27, 0x52, 0x24, 0x02, 0x22, 0x02, 0x1f, 0x90, 0x1c, 0x32, 0x16, 0xa7, 0x0e, + 0x10, 0x0e, 0x28, 0x09, 0x2f, 0x05, 0xe7, 0xff, 0x18, 0xf9, 0x30, 0xf5, 0x82, 0xf0, 0xfb, 0xed, + 0x06, 0xea, 0x6e, 0xe6, 0x6a, 0xe5, 0x9d, 0xe5, 0x68, 0xe8, 0x7f, 0xea, 0x12, 0xed, 0xce, 0xf4, + 0x18, 0xfe, 0x27, 0x05, 0x4c, 0x0b, 0xbb, 0x0f, 0x5e, 0x13, 0x93, 0x18, 0x9d, 0x18, 0x36, 0x17, + 0x97, 0x15, 0x5f, 0x13, 0xfd, 0x11, 0x48, 0x0d, 0xb9, 0x0c, 0x4d, 0x0c, 0xba, 0x09, 0x80, 0x06, + 0xe1, 0xfe, 0x99, 0xf7, 0x1f, 0xf4, 0xf2, 0xef, 0x53, 0xeb, 0xf4, 0xe7, 0x66, 0xe5, 0x80, 0xe4, + 0x77, 0xe4, 0x34, 0xe7, 0x52, 0xea, 0x66, 0xef, 0x55, 0xf7, 0x54, 0xff, 0xd5, 0x07, 0x76, 0x0e, + 0x97, 0x13, 0x34, 0x17, 0x91, 0x1b, 0x35, 0x1b, 0x4c, 0x19, 0x99, 0x17, 0xc2, 0x16, 0x6e, 0x13, + 0x50, 0x0d, 0x8b, 0x0c, 0x14, 0x0b, 0x93, 0x07, 0xfb, 0x02, 0x8b, 0xfa, 0x1e, 0xf5, 0xfc, 0xf0, + 0x86, 0xef, 0x3a, 0xef, 0x13, 0xec, 0x31, 0xeb, 0x1e, 0xeb, 0x86, 0xed, 0x53, 0xef, 0xbf, 0xef, + 0x6f, 0xf4, 0x6f, 0xfb, 0x42, 0x03, 0x71, 0x09, 0xac, 0x10, 0x9d, 0x14, 0xa8, 0x17, 0x98, 0x1b, + 0xbf, 0x1a, 0xc5, 0x19, 0xde, 0x17, 0x57, 0x17, 0xf5, 0x12, 0x79, 0x0f, 0x66, 0x0e, 0x6f, 0x0b, + 0xd5, 0x09, 0x2f, 0x04, 0x38, 0xfd, 0xd2, 0xf7, 0xed, 0xf3, 0xf3, 0xef, 0xc8, 0xec, 0xf2, 0xe7, + 0x24, 0xe5, 0x98, 0xe5, 0x8a, 0xe7, 0xad, 0xe9, 0x88, 0xea, 0x18, 0xf1, 0x7f, 0xf8, 0xcc, 0xfc, + 0x2b, 0x01, 0xab, 0x05, 0x84, 0x09, 0xa2, 0x0e, 0xbe, 0x10, 0xbe, 0x0e, 0x0e, 0x0d, 0xde, 0x0a, + 0x3c, 0x06, 0xd6, 0x00, 0x98, 0xff, 0xdd, 0xff, 0x45, 0xfd, 0x3d, 0xfc, 0x1a, 0xf8, 0xdc, 0xf1, + 0x65, 0xee, 0xa9, 0xeb, 0x4f, 0xea, 0xe9, 0xe6, 0x15, 0xe5, 0x0b, 0xe5, 0xaf, 0xe5, 0x89, 0xe9, + 0xab, 0xea, 0xc2, 0xec, 0xce, 0xf2, 0xa8, 0xfa, 0x23, 0xfe, 0xe8, 0x01, 0xb8, 0x06, 0x66, 0x09, + 0x44, 0x0e, 0x1a, 0x0d, 0xd6, 0x0c, 0xe4, 0x0b, 0x97, 0x0b, 0x0c, 0x08, 0xfd, 0x03, 0x74, 0x03, + 0x82, 0x00, 0x68, 0xff, 0xa2, 0xfb, 0x41, 0xf4, 0x7c, 0xef, 0x3a, 0xec, 0x18, 0xea, 0x8f, 0xe8, + 0xf3, 0xe4, 0x59, 0xe3, 0x72, 0xe2, 0x2f, 0xe4, 0x53, 0xe7, 0x78, 0xe9, 0x15, 0xee, 0xd9, 0xf4, + 0x8f, 0xfa, 0x0d, 0x02, 0x18, 0x0c, 0x30, 0x10, 0xf8, 0x14, 0xc9, 0x19, 0xd0, 0x1a, 0x22, 0x1a, + 0x46, 0x19, 0xcb, 0x17, 0xbe, 0x13, 0x9c, 0x12, 0xdf, 0x12, 0x0f, 0x11, 0xc7, 0x0f, 0xa7, 0x0d, + 0xa7, 0x08, 0x11, 0x04, 0x1e, 0x02, 0x50, 0x02, 0x68, 0x01, 0xdc, 0xfd, 0xa2, 0xfc, 0x3a, 0xfb, + 0x38, 0xfd, 0xd8, 0xfe, 0xdc, 0xff, 0x3d, 0x06, 0x9f, 0x0d, 0x52, 0x12, 0x5c, 0x17, 0xbd, 0x1d, + 0xa8, 0x20, 0x43, 0x25, 0x35, 0x26, 0x60, 0x25, 0xc2, 0x23, 0x8c, 0x20, 0x9f, 0x1e, 0xd5, 0x1a, + 0xcb, 0x18, 0xab, 0x15, 0x1b, 0x13, 0x30, 0x11, 0x7e, 0x09, 0x4d, 0x01, 0xa0, 0xf9, 0xb5, 0xf5, + 0x7e, 0xf2, 0x15, 0xed, 0x8e, 0xea, 0xc9, 0xe7, 0x15, 0xe8, 0x5b, 0xea, 0xd4, 0xeb, 0x07, 0xed, + 0x2b, 0xf2, 0x7c, 0xf7, 0x4e, 0xfa, 0x0f, 0x00, 0x6e, 0x03, 0x89, 0x07, 0xbd, 0x0a, 0x4a, 0x09, + 0x83, 0x07, 0x79, 0x04, 0x39, 0x03, 0xed, 0xfd, 0x3b, 0xf9, 0x58, 0xf7, 0x76, 0xf3, 0x4f, 0xf1, + 0x1f, 0xee, 0xe1, 0xe7, 0xf5, 0xe1, 0xb3, 0xde, 0xa6, 0xdd, 0xb8, 0xdc, 0x22, 0xd8, 0x5d, 0xd7, + 0x45, 0xd6, 0x35, 0xd7, 0x31, 0xdb, 0xdb, 0xdd, 0x35, 0xe4, 0xde, 0xeb, 0x7e, 0xf2, 0x82, 0xf8, + 0xe9, 0xff, 0x88, 0x04, 0xe7, 0x09, 0x04, 0x0e, 0x4a, 0x10, 0xbe, 0x10, 0x61, 0x0f, 0x6b, 0x0f, + 0x9d, 0x0c, 0x4b, 0x09, 0x14, 0x0a, 0x5b, 0x0c, 0xb6, 0x0d, 0x09, 0x0b, 0xc8, 0x06, 0x89, 0x03, + 0x6b, 0x01, 0xec, 0x01, 0xc1, 0xff, 0x18, 0xfe, 0xdf, 0xfd, 0xa6, 0xfc, 0xbc, 0xfe, 0x55, 0x00, + 0xd8, 0x03, 0xf8, 0x09, 0x1f, 0x11, 0x0f, 0x17, 0x0f, 0x1e, 0x8d, 0x22, 0xf8, 0x22, 0x97, 0x25, + 0x6e, 0x26, 0xbf, 0x26, 0xc5, 0x22, 0x5e, 0x20, 0xe5, 0x1c, 0xb7, 0x17, 0xf1, 0x14, 0xb2, 0x0e, + 0xe6, 0x09, 0x43, 0x05, 0xe8, 0xfd, 0x5b, 0xf5, 0xce, 0xee, 0x2a, 0xec, 0x49, 0xe9, 0x97, 0xe5, + 0x4d, 0xe3, 0x6c, 0xdf, 0x6c, 0xdd, 0xf6, 0xdd, 0xa1, 0xde, 0x4e, 0xe0, 0x0c, 0xe6, 0x60, 0xec, + 0x71, 0xf1, 0x44, 0xf5, 0x86, 0xf8, 0xb6, 0xfe, 0x22, 0x03, 0xc8, 0x06, 0xf5, 0x07, 0xc2, 0x06, + 0x7d, 0x07, 0xd7, 0x05, 0x40, 0x01, 0x5a, 0xff, 0x90, 0xff, 0x75, 0x00, 0xc6, 0xff, 0xe3, 0xfa, + 0x76, 0xf6, 0x5c, 0xf3, 0x2d, 0xf3, 0xdd, 0xf1, 0x7c, 0xef, 0xc1, 0xee, 0x0d, 0xec, 0x4c, 0xed, + 0x22, 0xef, 0xe3, 0xf0, 0x29, 0xf4, 0xee, 0xfa, 0xa4, 0x01, 0x8b, 0x07, 0xf7, 0x0d, 0x3f, 0x11, + 0xfa, 0x17, 0xaa, 0x1d, 0x0c, 0x20, 0xd9, 0x1e, 0x48, 0x1f, 0x77, 0x1e, 0x48, 0x17, 0x30, 0x13, + 0xa6, 0x10, 0x21, 0x0f, 0x2a, 0x0d, 0x6e, 0x08, 0xc3, 0x01, 0x32, 0xfb, 0xf0, 0xf6, 0xf8, 0xf2, + 0x6e, 0xef, 0xf7, 0xec, 0x70, 0xe9, 0x79, 0xe8, 0x77, 0xea, 0x79, 0xeb, 0xba, 0xec, 0x68, 0xf1, + 0xec, 0xf7, 0x85, 0xfc, 0xdb, 0x01, 0xea, 0x04, 0xdb, 0x08, 0xf7, 0x0b, 0x8b, 0x0e, 0xcd, 0x0f, + 0x6a, 0x0c, 0xad, 0x0c, 0x86, 0x0b, 0x0e, 0x07, 0xb1, 0x05, 0x42, 0x05, 0x66, 0x05, 0x23, 0x04, + 0x60, 0xff, 0x04, 0xf9, 0xf5, 0xf4, 0x02, 0xf3, 0xfb, 0xf1, 0x17, 0xf0, 0x80, 0xef, 0xc0, 0xec, + 0x26, 0xec, 0xd3, 0xee, 0xd5, 0xf0, 0x26, 0xf4, 0x59, 0xfb, 0x12, 0x03, 0x57, 0x08, 0x99, 0x0e, + 0xa7, 0x12, 0xa3, 0x17, 0x59, 0x1c, 0x3d, 0x1e, 0x1c, 0x1e, 0x02, 0x1d, 0xbf, 0x1c, 0xee, 0x17, + 0x86, 0x13, 0x88, 0x11, 0x51, 0x0c, 0xa0, 0x0a, 0x43, 0x09, 0xbd, 0x03, 0x55, 0xfd, 0xd0, 0xf7, + 0x4c, 0xf6, 0xa2, 0xf4, 0xad, 0xf3, 0xe2, 0xf0, 0xf1, 0xee, 0xf2, 0xef, 0x11, 0xf1, 0xff, 0xf0, + 0x2c, 0xf2, 0xcf, 0xf8, 0x87, 0xfe, 0xf4, 0x03, 0x56, 0x08, 0x2e, 0x0b, 0xe8, 0x0c, 0x07, 0x0d, + 0x1b, 0x0d, 0x86, 0x08, 0x3d, 0x07, 0x0d, 0x06, 0xf3, 0x00, 0xf6, 0xfc, 0xfa, 0xfa, 0x2a, 0xfa, + 0x71, 0xf8, 0xcb, 0xf4, 0x98, 0xee, 0x25, 0xe8, 0x3b, 0xe3, 0x56, 0xe2, 0x9b, 0xe0, 0x28, 0xde, + 0x14, 0xdc, 0xd6, 0xda, 0xf1, 0xdd, 0x16, 0xe1, 0xba, 0xe2, 0x16, 0xe8, 0x0b, 0xf0, 0x75, 0xf7, + 0xe2, 0xff, 0x53, 0x05, 0x9f, 0x0a, 0x2e, 0x10, 0x51, 0x15, 0x16, 0x19, 0x8b, 0x19, 0x74, 0x1b, + 0x01, 0x1b, 0x11, 0x17, 0x95, 0x15, 0x1b, 0x13, 0x43, 0x13, 0x5f, 0x14, 0x2c, 0x10, 0xc6, 0x0a, + 0x48, 0x05, 0x6a, 0x03, 0x94, 0x03, 0x7d, 0x02, 0x7f, 0x01, 0xc6, 0xff, 0x08, 0x00, 0x26, 0x01, + 0x83, 0x01, 0x71, 0x01, 0x4f, 0x06, 0x8a, 0x0b, 0xb4, 0x10, 0xc8, 0x16, 0x8d, 0x1a, 0x6e, 0x1e, + 0xb1, 0x1f, 0xdd, 0x20, 0xc9, 0x1f, 0xdc, 0x1d, 0xe8, 0x1d, 0x5b, 0x19, 0x33, 0x14, 0x87, 0x0e, + 0x2e, 0x0a, 0x77, 0x09, 0x29, 0x07, 0x05, 0x02, 0x71, 0xfa, 0x71, 0xf3, 0x26, 0xf0, 0x66, 0xec, + 0x93, 0xe7, 0x33, 0xe3, 0x03, 0xde, 0x0d, 0xdb, 0x6c, 0xdc, 0xa9, 0xdc, 0x25, 0xe0, 0xc3, 0xe6, + 0xbc, 0xec, 0x23, 0xf4, 0x7a, 0xf9, 0x38, 0xff, 0x58, 0x02, 0xd8, 0x04, 0x02, 0x07, 0x2b, 0x06, + 0x23, 0x07, 0x4b, 0x05, 0x7c, 0x01, 0xc0, 0xfe, 0xe5, 0xfa, 0x2c, 0xf8, 0x8c, 0xf7, 0xa0, 0xf4, + 0x69, 0xf0, 0x5b, 0xe9, 0x1a, 0xe4, 0x52, 0xe4, 0x8c, 0xe2, 0x97, 0xe1, 0x90, 0xdf, 0x0b, 0xde, + 0xb8, 0xdf, 0xa9, 0xe1, 0x68, 0xe2, 0x91, 0xe7, 0x2f, 0xef, 0x1e, 0xf6, 0xdc, 0xfe, 0x33, 0x03, + 0x75, 0x06, 0xf8, 0x09, 0x29, 0x0f, 0xc1, 0x11, 0x04, 0x10, 0x74, 0x11, 0xbb, 0x10, 0xbe, 0x0d, + 0xc7, 0x0a, 0x59, 0x07, 0xbd, 0x07, 0x82, 0x07, 0xb3, 0x05, 0x8e, 0x01, 0xa7, 0xfb, 0xdd, 0xf8, + 0x93, 0xf6, 0xb2, 0xf5, 0x74, 0xf4, 0xce, 0xf2, 0xeb, 0xf2, 0x24, 0xf6, 0x72, 0xf8, 0xfb, 0xf8, + 0x7b, 0xfd, 0x8f, 0x02, 0xad, 0x09, 0xe6, 0x10, 0x06, 0x17, 0xe7, 0x1c, 0x09, 0x22, 0xdf, 0x25, + 0x0a, 0x25, 0x5b, 0x23, 0xc8, 0x21, 0xb1, 0x1e, 0x5d, 0x1c, 0x97, 0x18, 0xbf, 0x14, 0xb2, 0x14, + 0x04, 0x13, 0x0e, 0x0d, 0xde, 0x04, 0xe9, 0xfe, 0xed, 0xfc, 0xbd, 0xf8, 0x47, 0xf5, 0x44, 0xf3, + 0x2f, 0xf0, 0xda, 0xef, 0xe7, 0xf0, 0x65, 0xf0, 0xad, 0xf2, 0x05, 0xf7, 0x68, 0xfb, 0x14, 0x02, + 0x2c, 0x08, 0x6d, 0x0b, 0x65, 0x0e, 0x8e, 0x11, 0x66, 0x13, 0x34, 0x12, 0x2e, 0x13, 0xc9, 0x13, + 0x42, 0x10, 0xb1, 0x0d, 0x0d, 0x0a, 0xc8, 0x07, 0xd0, 0x07, 0x1e, 0x06, 0xe3, 0x02, 0xbb, 0xfc, + 0xc7, 0xf8, 0x39, 0xf6, 0x4f, 0xf3, 0xcc, 0xf0, 0x27, 0xed, 0x58, 0xea, 0x1f, 0xea, 0x45, 0xeb, + 0x99, 0xe9, 0xb0, 0xec, 0x87, 0xef, 0xe4, 0xf3, 0x58, 0xfb, 0x5d, 0x00, 0x2d, 0x05, 0xfe, 0x07, + 0xab, 0x0c, 0x34, 0x0e, 0xb8, 0x0c, 0x79, 0x0d, 0x2f, 0x0c, 0x0e, 0x0a, 0xbd, 0x07, 0xb4, 0x05, + 0x80, 0x03, 0xb2, 0x01, 0x6a, 0xff, 0xb9, 0xfa, 0x21, 0xf6, 0x76, 0xf3, 0x8c, 0xf1, 0xec, 0xee, + 0xec, 0xec, 0x2f, 0xe9, 0x67, 0xe6, 0x80, 0xe7, 0x5e, 0xe7, 0x86, 0xe7, 0x00, 0xeb, 0x81, 0xf0, + 0xaf, 0xf8, 0xc1, 0xff, 0x1f, 0x05, 0xd4, 0x09, 0x79, 0x0f, 0x25, 0x14, 0xe5, 0x12, 0x11, 0x10, + 0x89, 0x0f, 0x0b, 0x0d, 0x71, 0x09, 0x99, 0x06, 0xb4, 0x03, 0x07, 0x05, 0x35, 0x05, 0xbc, 0x02, + 0x3f, 0xfe, 0x5f, 0xf9, 0x56, 0xf6, 0x63, 0xf3, 0x0c, 0xf1, 0x27, 0xef, 0xd0, 0xec, 0x79, 0xeb, + 0xe7, 0xed, 0x86, 0xed, 0x69, 0xee, 0xb2, 0xf1, 0x9b, 0xf6, 0x9b, 0xfe, 0x11, 0x04, 0x68, 0x09, + 0xac, 0x0d, 0x4d, 0x11, 0x33, 0x15, 0xf1, 0x13, 0xfa, 0x13, 0x50, 0x13, 0x33, 0x10, 0x0e, 0x0d, + 0xb2, 0x09, 0xff, 0x07, 0x98, 0x06, 0x09, 0x05, 0xcd, 0xff, 0x1e, 0xf9, 0xc3, 0xf4, 0x23, 0xf3, + 0x57, 0xf2, 0x1c, 0xf0, 0x11, 0xef, 0x3b, 0xed, 0x9c, 0xee, 0xa7, 0xf0, 0x19, 0xf1, 0x12, 0xf5, + 0x98, 0xf8, 0xd0, 0xfe, 0x4d, 0x05, 0x9e, 0x0a, 0x2d, 0x10, 0x16, 0x14, 0x9c, 0x19, 0xa7, 0x1a, + 0x14, 0x18, 0x74, 0x17, 0x89, 0x14, 0x8e, 0x0e, 0x18, 0x0b, 0xcc, 0x07, 0x46, 0x06, 0x55, 0x05, + 0x8a, 0x02, 0xd6, 0xfe, 0xe3, 0xf7, 0x24, 0xf3, 0x32, 0xf1, 0x6f, 0xef, 0x6a, 0xed, 0xad, 0xe8, + 0x25, 0xe5, 0x31, 0xe5, 0x69, 0xe4, 0x68, 0xe4, 0xeb, 0xe6, 0x81, 0xeb, 0xd9, 0xf2, 0xce, 0xf8, + 0xf2, 0xfe, 0x00, 0x05, 0x58, 0x08, 0x61, 0x0e, 0x01, 0x10, 0xf6, 0x0f, 0xc7, 0x11, 0xb6, 0x0f, + 0xc6, 0x0e, 0xe5, 0x0c, 0x70, 0x0a, 0xd6, 0x09, 0x48, 0x09, 0x49, 0x08, 0x5a, 0x04, 0x3b, 0xff, + 0x4e, 0xfc, 0xb6, 0xfa, 0x23, 0xf9, 0x2f, 0xf8, 0x53, 0xf5, 0xf2, 0xf3, 0x8d, 0xf7, 0x4d, 0xf8, + 0xf2, 0xfa, 0x54, 0xfe, 0x22, 0x04, 0xb7, 0x0a, 0x7c, 0x0f, 0xbf, 0x15, 0x3d, 0x1a, 0xe6, 0x1f, + 0xc8, 0x23, 0xa7, 0x22, 0xc5, 0x22, 0x89, 0x21, 0xd7, 0x1e, 0xbc, 0x1c, 0x62, 0x19, 0x80, 0x17, + 0xff, 0x17, 0xa3, 0x17, 0x2d, 0x14, 0x6f, 0x0d, 0x51, 0x07, 0x30, 0x04, 0x3b, 0x02, 0x86, 0xff, + 0xe0, 0xfa, 0x9d, 0xf5, 0xf6, 0xf2, 0xba, 0xef, 0x78, 0xec, 0x23, 0xec, 0x4b, 0xed, 0xf5, 0xf0, + 0xfe, 0xf6, 0x5c, 0xfd, 0x56, 0x02, 0x7a, 0x05, 0x5a, 0x0b, 0x0f, 0x0e, 0xc7, 0x0c, 0xf7, 0x0b, + 0x3b, 0x09, 0x86, 0x05, 0x26, 0x02, 0x53, 0xfc, 0x1b, 0xf9, 0x24, 0xf7, 0x97, 0xf5, 0x0f, 0xf0, + 0xec, 0xe7, 0x94, 0xe2, 0xdc, 0xdf, 0xae, 0xdd, 0x54, 0xda, 0x3e, 0xd7, 0x9e, 0xd3, 0x47, 0xd4, + 0xc6, 0xd3, 0x62, 0xd3, 0xad, 0xd6, 0xe9, 0xda, 0xb1, 0xe0, 0x67, 0xe6, 0x15, 0xee, 0x0b, 0xf4, + 0x2b, 0xfa, 0xb3, 0x01, 0xe5, 0x02, 0x02, 0x04, 0xe2, 0x04, 0x5a, 0x04, 0x92, 0x03, 0xde, 0x01, + 0xe8, 0xff, 0xa2, 0xff, 0x5b, 0x02, 0xff, 0x01, 0xf2, 0xff, 0x3c, 0xfc, 0xbb, 0xf9, 0xe7, 0xf8, + 0x03, 0xf8, 0x75, 0xf8, 0x2c, 0xf5, 0xed, 0xf3, 0x91, 0xf5, 0xe4, 0xf5, 0xc4, 0xf8, 0xb3, 0xfc, + 0xc8, 0x01, 0x1b, 0x07, 0x5c, 0x0d, 0x0f, 0x13, 0x43, 0x17, 0xea, 0x1d, 0x8d, 0x23, 0xcc, 0x25, + 0x12, 0x27, 0x87, 0x26, 0xb9, 0x23, 0xeb, 0x1f, 0x31, 0x1a, 0xe9, 0x15, 0xda, 0x13, 0x9a, 0x13, + 0x5c, 0x11, 0xa2, 0x0a, 0x83, 0x04, 0x95, 0xff, 0x3b, 0xfb, 0xae, 0xf8, 0x1e, 0xf7, 0x86, 0xf1, + 0x1e, 0xee, 0xda, 0xec, 0x99, 0xea, 0xd0, 0xea, 0x4e, 0xeb, 0xd6, 0xee, 0x15, 0xf5, 0xf5, 0xfa, + 0xd6, 0xff, 0x37, 0x03, 0xf1, 0x09, 0x6e, 0x0d, 0x29, 0x0d, 0x24, 0x0d, 0xca, 0x0b, 0xc4, 0x09, + 0xcc, 0x07, 0x7c, 0x05, 0xc5, 0x04, 0x30, 0x06, 0xf6, 0x06, 0x3f, 0x05, 0x4d, 0x01, 0x55, 0xfe, + 0x12, 0xfe, 0x18, 0xfd, 0xba, 0xfc, 0x0a, 0xfb, 0x8a, 0xf7, 0x9f, 0xf7, 0x0c, 0xf6, 0x0f, 0xf6, + 0xc3, 0xf7, 0x49, 0xfa, 0x17, 0xff, 0x01, 0x05, 0x4c, 0x0a, 0x86, 0x0d, 0x96, 0x12, 0x35, 0x18, + 0x75, 0x1b, 0x8c, 0x1a, 0xac, 0x19, 0x96, 0x18, 0xc6, 0x15, 0xfd, 0x11, 0x06, 0x0e, 0x77, 0x0d, + 0x4e, 0x0e, 0xd3, 0x0d, 0xa5, 0x08, 0x4b, 0x01, 0xc6, 0xfc, 0x58, 0xf8, 0xb6, 0xf5, 0x47, 0xf5, + 0x84, 0xf1, 0x89, 0xee, 0x3e, 0xee, 0x2c, 0xeb, 0xc7, 0xe7, 0x5a, 0xe7, 0x39, 0xe9, 0x83, 0xed, + 0x1f, 0xf1, 0x9b, 0xf6, 0xd6, 0xfa, 0xa9, 0xff, 0x62, 0x04, 0x58, 0x05, 0x70, 0x07, 0xc9, 0x07, + 0x1f, 0x05, 0x39, 0x01, 0x5e, 0xfc, 0xdb, 0xf9, 0x64, 0xf8, 0x10, 0xf8, 0xcb, 0xf6, 0xd7, 0xf3, + 0x92, 0xf0, 0x25, 0xef, 0xf7, 0xed, 0xa5, 0xee, 0x77, 0xef, 0x80, 0xeb, 0x1f, 0xeb, 0x3b, 0xea, + 0xc4, 0xea, 0x45, 0xed, 0xfd, 0xee, 0x93, 0xf4, 0xd9, 0xfa, 0x32, 0x01, 0x30, 0x07, 0xc8, 0x0c, + 0x66, 0x14, 0xbe, 0x19, 0x38, 0x1c, 0x01, 0x1e, 0x18, 0x1e, 0x52, 0x1b, 0x4c, 0x18, 0x91, 0x15, + 0xee, 0x13, 0xe5, 0x13, 0x2a, 0x13, 0x8e, 0x10, 0xef, 0x09, 0x86, 0x04, 0x5c, 0x00, 0x05, 0xfd, + 0x88, 0xfc, 0x14, 0xf9, 0xcb, 0xf5, 0x99, 0xf5, 0x34, 0xf4, 0x28, 0xf3, 0x0d, 0xf2, 0x06, 0xf4, + 0x1d, 0xf9, 0x3b, 0xff, 0x7e, 0x06, 0x9a, 0x09, 0xf1, 0x0d, 0xaf, 0x12, 0x02, 0x14, 0xc8, 0x13, + 0x83, 0x12, 0xd0, 0x0f, 0x4b, 0x0c, 0x7d, 0x06, 0xda, 0x00, 0x8d, 0xfc, 0x1e, 0xfb, 0x56, 0xfa, + 0xf2, 0xf6, 0x9d, 0xf1, 0xc6, 0xec, 0xc6, 0xe9, 0xed, 0xe7, 0x43, 0xe7, 0x16, 0xe3, 0x5c, 0xe1, + 0xcc, 0xe0, 0x7b, 0xde, 0x8b, 0xde, 0xfa, 0xde, 0x00, 0xe3, 0x85, 0xe7, 0x4a, 0xed, 0x33, 0xf5, + 0xce, 0xfa, 0x75, 0x02, 0xa2, 0x07, 0xf6, 0x0a, 0x1a, 0x0e, 0xb3, 0x0f, 0x87, 0x10, 0x63, 0x0f, + 0x97, 0x0d, 0x93, 0x0a, 0xd9, 0x0a, 0x61, 0x0d, 0x9e, 0x0d, 0x3e, 0x0a, 0x7a, 0x06, 0x7b, 0x04, + 0xcc, 0x02, 0xb2, 0x03, 0xb6, 0x02, 0x29, 0xff, 0x66, 0xfe, 0x93, 0xfd, 0xa2, 0xfc, 0x22, 0xfc, + 0xf3, 0xfe, 0x6c, 0x03, 0x30, 0x08, 0xf3, 0x0d, 0x7f, 0x12, 0x6b, 0x17, 0xd8, 0x1c, 0x74, 0x20, + 0x4b, 0x21, 0x28, 0x23, 0xcc, 0x22, 0x22, 0x1f, 0xad, 0x1a, 0x21, 0x15, 0xff, 0x0f, 0x35, 0x0d, + 0x94, 0x0d, 0xce, 0x0c, 0xe5, 0x08, 0xef, 0x03, 0x5a, 0xff, 0x43, 0xfc, 0xd9, 0xfa, 0x11, 0xf8, + 0xae, 0xf5, 0xc2, 0xf3, 0x63, 0xf1, 0x2a, 0xef, 0xed, 0xec, 0xb5, 0xeb, 0xcf, 0xeb, 0x2a, 0xee, + 0xc5, 0xf3, 0xba, 0xf6, 0xe0, 0xfb, 0x53, 0x03, 0x14, 0x07, 0x54, 0x09, 0xc3, 0x0a, 0xd9, 0x0a, + 0x3c, 0x0a, 0xc4, 0x07, 0xb2, 0x03, 0x57, 0x00, 0x2b, 0x00, 0xb8, 0xfe, 0x2a, 0xfb, 0x2e, 0xf5, + 0x06, 0xf0, 0x06, 0xed, 0x14, 0xec, 0xf7, 0xeb, 0xcd, 0xe7, 0x78, 0xe6, 0x84, 0xe4, 0x1f, 0xe3, + 0x98, 0xe1, 0x73, 0xe2, 0x77, 0xe4, 0x51, 0xe9, 0x1a, 0xef, 0xf4, 0xf5, 0xd4, 0xfb, 0xf4, 0x01, + 0xc2, 0x07, 0x9c, 0x0c, 0x2a, 0x0e, 0x6d, 0x0f, 0x8b, 0x0d, 0x11, 0x0b, 0x44, 0x06, 0xa6, 0xff, + 0xfb, 0xfd, 0x30, 0xfd, 0x85, 0xfe, 0x21, 0xfa, 0xea, 0xf4, 0x8d, 0xf0, 0xa8, 0xee, 0xbc, 0xee, + 0x4b, 0xef, 0x61, 0xec, 0x20, 0xe9, 0x3d, 0xe8, 0x47, 0xe8, 0xeb, 0xe9, 0x83, 0xec, 0x59, 0xf0, + 0x7c, 0xf5, 0x07, 0xfe, 0x2c, 0x05, 0x47, 0x0c, 0xfd, 0x13, 0xc4, 0x19, 0x55, 0x1d, 0x59, 0x20, + 0x78, 0x22, 0xd7, 0x21, 0x79, 0x20, 0x97, 0x1c, 0x0f, 0x18, 0xbc, 0x16, 0x1f, 0x16, 0x48, 0x13, + 0x0e, 0x0d, 0xd7, 0x06, 0x1e, 0x03, 0xa5, 0xff, 0x66, 0xfe, 0x00, 0xfb, 0xf1, 0xf6, 0x69, 0xf4, + 0x7d, 0xf1, 0x9a, 0xf0, 0x06, 0xef, 0x86, 0xf0, 0x7d, 0xf2, 0x3e, 0xf6, 0xda, 0xfb, 0xc0, 0xff, + 0x87, 0x07, 0x4f, 0x10, 0xf7, 0x16, 0xba, 0x19, 0x56, 0x1c, 0xe4, 0x1c, 0x36, 0x1a, 0xe6, 0x15, + 0xa1, 0x0f, 0x22, 0x0c, 0x87, 0x09, 0x8e, 0x08, 0xb4, 0x06, 0x63, 0x01, 0xdd, 0xfd, 0xbe, 0xf9, + 0x55, 0xf7, 0x5d, 0xf8, 0xd1, 0xf7, 0x8f, 0xf5, 0x01, 0xf3, 0x86, 0xf0, 0x24, 0xef, 0x2d, 0xee, + 0x50, 0xef, 0x1b, 0xf2, 0x1a, 0xf7, 0x7a, 0xfc, 0xa9, 0x00, 0x0f, 0x07, 0x05, 0x0e, 0x5f, 0x12, + 0xdd, 0x15, 0x47, 0x17, 0xce, 0x17, 0x46, 0x17, 0xfd, 0x12, 0xf5, 0x0d, 0x7e, 0x0b, 0xec, 0x09, + 0xd0, 0x06, 0x13, 0x02, 0x56, 0xfc, 0x4a, 0xf7, 0x83, 0xf2, 0xf6, 0xf0, 0xcb, 0xf0, 0x90, 0xed, + 0xf8, 0xea, 0x1a, 0xe9, 0xb4, 0xe8, 0x16, 0xe8, 0x51, 0xe8, 0x9f, 0xea, 0x82, 0xec, 0xdd, 0xf1, + 0xed, 0xf5, 0x9e, 0xfb, 0x27, 0x03, 0xd5, 0x09, 0xfa, 0x0e, 0xfa, 0x11, 0x52, 0x14, 0xab, 0x14, + 0x72, 0x14, 0x5c, 0x12, 0x4d, 0x0f, 0xff, 0x0c, 0x0a, 0x0b, 0x07, 0x08, 0x52, 0x00, 0xcb, 0xf9, + 0x98, 0xf4, 0x83, 0xf1, 0x33, 0xf2, 0x55, 0xf0, 0x4c, 0xed, 0x1a, 0xea, 0x27, 0xe8, 0xf7, 0xe6, + 0xb9, 0xe4, 0xd0, 0xe4, 0x23, 0xe7, 0xce, 0xec, 0xeb, 0xf1, 0x47, 0xf5, 0x38, 0xfb, 0x33, 0x03, + 0x3b, 0x09, 0x47, 0x0e, 0x6e, 0x13, 0x31, 0x17, 0x6a, 0x19, 0xc8, 0x17, 0x8a, 0x14, 0xa3, 0x10, + 0x81, 0x0e, 0x87, 0x0d, 0x82, 0x0a, 0x10, 0x05, 0xfb, 0xfd, 0x87, 0xf8, 0xf4, 0xf4, 0x8b, 0xf3, + 0xb4, 0xef, 0x0a, 0xec, 0xdd, 0xe9, 0x8a, 0xe7, 0xe4, 0xe5, 0x59, 0xe5, 0x5f, 0xe8, 0x3e, 0xeb, + 0x45, 0xef, 0x67, 0xf4, 0x21, 0xfa, 0xfd, 0x02, 0x03, 0x0c, 0x44, 0x13, 0xee, 0x17, 0xd7, 0x1b, + 0x4e, 0x1e, 0xc1, 0x1d, 0x96, 0x1b, 0xf8, 0x17, 0x31, 0x15, 0x69, 0x14, 0x5f, 0x12, 0xbc, 0x0c, + 0x65, 0x06, 0xdf, 0xff, 0x18, 0xf9, 0x3d, 0xf7, 0xec, 0xf5, 0x06, 0xf2, 0x5b, 0xed, 0xb6, 0xe8, + 0xa2, 0xe6, 0x11, 0xe4, 0xb6, 0xe4, 0x44, 0xe6, 0xf7, 0xe8, 0xd8, 0xed, 0x8e, 0xf1, 0x07, 0xf6, + 0x5e, 0xfc, 0x02, 0x04, 0xeb, 0x09, 0xc5, 0x0f, 0x9a, 0x14, 0xde, 0x15, 0xd3, 0x15, 0xf8, 0x13, + 0x61, 0x10, 0xcf, 0x0d, 0x20, 0x0d, 0xfa, 0x0a, 0x12, 0x05, 0x54, 0xfe, 0x43, 0xf8, 0x75, 0xf4, + 0x86, 0xf3, 0x24, 0xf2, 0x72, 0xf0, 0x43, 0xef, 0x91, 0xed, 0x66, 0xec, 0xe8, 0xea, 0x1c, 0xec, + 0x64, 0xee, 0x36, 0xf3, 0x8c, 0xfa, 0x2b, 0x00, 0x37, 0x07, 0xae, 0x0f, 0x49, 0x18, 0x1b, 0x1f, + 0xed, 0x24, 0x1e, 0x29, 0x60, 0x29, 0xc8, 0x28, 0x00, 0x26, 0x57, 0x20, 0x81, 0x1d, 0xcd, 0x1b, + 0xc7, 0x18, 0xe4, 0x11, 0xb1, 0x0b, 0x8a, 0x06, 0xc0, 0x04, 0xd5, 0x04, 0xb2, 0x01, 0x10, 0xff, + 0xce, 0xfa, 0x3a, 0xf8, 0x1b, 0xf5, 0x36, 0xf3, 0x55, 0xf4, 0xe4, 0xf4, 0x55, 0xf8, 0x07, 0xfb, + 0x89, 0xfd, 0x08, 0x02, 0x35, 0x09, 0x03, 0x0f, 0xc1, 0x12, 0xaa, 0x16, 0xad, 0x18, 0x4c, 0x19, + 0xed, 0x16, 0x98, 0x12, 0x24, 0x0f, 0x22, 0x0e, 0xe7, 0x0d, 0xe5, 0x08, 0xbb, 0x01, 0x9a, 0xf8, + 0x95, 0xf0, 0x31, 0xec, 0xdb, 0xe8, 0xdc, 0xe4, 0x27, 0xe0, 0x9a, 0xda, 0xbe, 0xd6, 0x46, 0xd3, + 0xbe, 0xd2, 0xd6, 0xd3, 0x14, 0xd6, 0x23, 0xdb, 0x33, 0xe1, 0x28, 0xe7, 0x2d, 0xef, 0xc1, 0xf7, + 0x31, 0xfe, 0x6b, 0x03, 0xbf, 0x07, 0x5b, 0x0b, 0xdf, 0x0c, 0xac, 0x0b, 0xa6, 0x07, 0x4e, 0x05, + 0x64, 0x04, 0x03, 0x03, 0x09, 0xff, 0x78, 0xfa, 0x6e, 0xf5, 0xca, 0xf0, 0xd4, 0xef, 0xe9, 0xee, + 0xb8, 0xee, 0x44, 0xec, 0x5f, 0xe9, 0x43, 0xe8, 0x4c, 0xe6, 0xc6, 0xe6, 0xd6, 0xe7, 0xc2, 0xeb, + 0x62, 0xf2, 0xbf, 0xf6, 0xe8, 0xfd, 0x01, 0x08, 0xca, 0x11, 0x8d, 0x19, 0xa4, 0x1f, 0x9f, 0x23, + 0x26, 0x26, 0xb8, 0x26, 0xcc, 0x24, 0xeb, 0x20, 0xe7, 0x1d, 0x2e, 0x1d, 0xd5, 0x19, 0x1b, 0x14, + 0x91, 0x0c, 0x4f, 0x04, 0x31, 0xff, 0x1c, 0xfb, 0xb7, 0xf8, 0x23, 0xf6, 0xbb, 0xf1, 0x8f, 0xed, + 0x2a, 0xe9, 0x5f, 0xe7, 0x48, 0xe7, 0xe2, 0xe8, 0x8e, 0xed, 0x22, 0xf3, 0x6a, 0xf6, 0x0e, 0xfc, + 0xf8, 0x03, 0x3a, 0x0a, 0xb4, 0x10, 0xe3, 0x14, 0x0c, 0x19, 0xa6, 0x1a, 0x57, 0x19, 0xd5, 0x15, + 0x67, 0x11, 0xf8, 0x0e, 0xe5, 0x0c, 0xa3, 0x09, 0x83, 0x05, 0xb5, 0xfe, 0xcf, 0xf8, 0x7c, 0xf7, + 0xf1, 0xf6, 0xcb, 0xf5, 0xa9, 0xf3, 0x7e, 0xf1, 0x27, 0xf1, 0xa7, 0xef, 0x1b, 0xf1, 0x63, 0xf2, + 0xa2, 0xf4, 0x75, 0xfa, 0x8b, 0xfe, 0x6f, 0x03, 0xb8, 0x0a, 0x18, 0x13, 0x75, 0x19, 0xb2, 0x1e, + 0xa0, 0x23, 0xe6, 0x26, 0xc3, 0x27, 0xbe, 0x24, 0x1d, 0x20, 0x31, 0x1c, 0x40, 0x1a, 0xd0, 0x17, + 0xe0, 0x11, 0x60, 0x0b, 0xa3, 0x02, 0xf8, 0xfb, 0x38, 0xf8, 0x01, 0xf5, 0xeb, 0xf2, 0x60, 0xee, + 0xd2, 0xeb, 0x7a, 0xe8, 0x6b, 0xe6, 0xc9, 0xe5, 0x71, 0xe5, 0xc1, 0xe8, 0x1f, 0xed, 0x8a, 0xef, + 0x83, 0xf3, 0x72, 0xfa, 0xc3, 0x00, 0xe9, 0x05, 0x2a, 0x0a, 0x8d, 0x0d, 0xef, 0x0e, 0x03, 0x0e, + 0xb7, 0x0a, 0xdd, 0x06, 0x3c, 0x04, 0xc2, 0x03, 0x7e, 0x01, 0x7d, 0xfd, 0xb6, 0xf7, 0xe9, 0xef, + 0xb1, 0xea, 0x57, 0xe7, 0xa3, 0xe5, 0xeb, 0xe3, 0x12, 0xe1, 0x20, 0xde, 0x0a, 0xdb, 0x15, 0xdb, + 0x6c, 0xdc, 0x28, 0xdf, 0x2c, 0xe5, 0xd3, 0xeb, 0x29, 0xf1, 0x49, 0xf9, 0xd1, 0x02, 0x03, 0x0b, + 0xda, 0x11, 0x2c, 0x18, 0x2b, 0x1d, 0x72, 0x20, 0x04, 0x22, 0xb1, 0x20, 0x97, 0x1e, 0xa1, 0x1c, + 0x3f, 0x1c, 0xf2, 0x18, 0xab, 0x14, 0xcf, 0x0d, 0x3e, 0x06, 0xd2, 0x02, 0x8b, 0xff, 0x9f, 0xfc, + 0xd6, 0xf7, 0xb5, 0xf4, 0xc5, 0xf0, 0x4a, 0xed, 0x78, 0xed, 0x1e, 0xed, 0x92, 0xee, 0x5c, 0xf2, + 0x30, 0xf6, 0xb3, 0xfa, 0x3e, 0x00, 0xb1, 0x07, 0xf9, 0x0e, 0xfa, 0x14, 0x95, 0x1a, 0x3f, 0x1e, + 0xd6, 0x1e, 0x16, 0x1d, 0x80, 0x18, 0x61, 0x13, 0x9c, 0x10, 0x76, 0x0d, 0xfe, 0x08, 0x82, 0x02, + 0x3b, 0xf9, 0x09, 0xf2, 0x1c, 0xee, 0xfc, 0xea, 0xe2, 0xe6, 0xc6, 0xe2, 0x88, 0xdf, 0x8b, 0xdc, + 0x95, 0xd9, 0xda, 0xd7, 0xc7, 0xd7, 0xd9, 0xda, 0x1a, 0xe0, 0x0b, 0xe4, 0x7e, 0xea, 0xb2, 0xf2, + 0x98, 0xfa, 0xc2, 0x01, 0xb0, 0x07, 0x23, 0x0e, 0xec, 0x11, 0xf9, 0x13, 0x00, 0x13, 0xaa, 0x0f, + 0x37, 0x0e, 0x8c, 0x0f, 0x40, 0x0f, 0x44, 0x0c, 0x9e, 0x07, 0x71, 0x01, 0xbf, 0xfc, 0x5b, 0xf9, + 0x5c, 0xf7, 0x57, 0xf5, 0x9d, 0xf3, 0xa1, 0xf1, 0xe1, 0xef, 0x4e, 0xf0, 0xc2, 0xf1, 0xe9, 0xf3, + 0x18, 0xf8, 0xe2, 0xfc, 0x3d, 0x01, 0x7a, 0x07, 0x22, 0x10, 0x2b, 0x18, 0xdb, 0x1d, 0x54, 0x23, + 0x91, 0x27, 0x3c, 0x2a, 0xa9, 0x29, 0xe4, 0x26, 0x4d, 0x22, 0x41, 0x1f, 0xe0, 0x1d, 0x66, 0x1a, + 0x03, 0x16, 0x28, 0x0d, 0x22, 0x05, 0xcc, 0xff, 0xec, 0xfb, 0xe3, 0xf9, 0x57, 0xf7, 0xcc, 0xf4, + 0xd2, 0xf0, 0xc4, 0xed, 0xdd, 0xec, 0xed, 0xec, 0x3f, 0xed, 0x4f, 0xf0, 0x60, 0xf4, 0xf4, 0xf8, + 0x96, 0xfe, 0xc5, 0x03, 0x19, 0x09, 0x5e, 0x0c, 0x0a, 0x10, 0x44, 0x13, 0xa4, 0x14, 0x9c, 0x14, + 0xc4, 0x10, 0xc8, 0x0c, 0x50, 0x0c, 0x80, 0x0b, 0x72, 0x09, 0x00, 0x06, 0x53, 0xff, 0xe1, 0xf9, + 0x25, 0xf6, 0x68, 0xf2, 0xbd, 0xee, 0xc1, 0xea, 0x36, 0xe7, 0xab, 0xe3, 0x1a, 0xe0, 0x90, 0xde, + 0x20, 0xdd, 0xf0, 0xde, 0xb4, 0xe3, 0x17, 0xe8, 0xa8, 0xed, 0xcf, 0xf4, 0x50, 0xfc, 0x86, 0x02, + 0x25, 0x08, 0x16, 0x0d, 0xae, 0x10, 0x3b, 0x12, 0x95, 0x11, 0x1e, 0x0e, 0x51, 0x0b, 0x17, 0x0b, + 0x70, 0x09, 0x9a, 0x07, 0x9e, 0x01, 0xb8, 0xfa, 0x77, 0xf5, 0x35, 0xf1, 0xd4, 0xef, 0xa4, 0xed, + 0x59, 0xeb, 0xb8, 0xe8, 0x35, 0xe6, 0xa4, 0xe4, 0x8b, 0xe3, 0xaf, 0xe4, 0x41, 0xe8, 0xa9, 0xeb, + 0xf5, 0xee, 0x6c, 0xf4, 0x50, 0xfc, 0xf8, 0x03, 0xa2, 0x09, 0x4e, 0x0f, 0xeb, 0x14, 0x23, 0x19, + 0xd7, 0x1b, 0x90, 0x1a, 0x06, 0x17, 0x59, 0x16, 0x10, 0x16, 0x39, 0x14, 0x87, 0x11, 0xab, 0x0b, + 0xd7, 0x05, 0x64, 0x01, 0x33, 0xfe, 0xc3, 0xfb, 0xa8, 0xf9, 0xe7, 0xf6, 0x75, 0xf3, 0x27, 0xf0, + 0x38, 0xef, 0x77, 0xed, 0xa7, 0xec, 0xdc, 0xf0, 0xe5, 0xf4, 0xf4, 0xf9, 0xbe, 0x00, 0xc8, 0x08, + 0xcc, 0x0f, 0x43, 0x14, 0x76, 0x18, 0x9a, 0x1b, 0x46, 0x1e, 0x27, 0x1e, 0x30, 0x1b, 0xfd, 0x17, + 0x24, 0x16, 0xb8, 0x13, 0xdd, 0x10, 0x66, 0x0c, 0x56, 0x05, 0x11, 0x00, 0x80, 0xfc, 0x70, 0xfa, + 0x58, 0xf8, 0xd1, 0xf5, 0x3d, 0xf3, 0x6a, 0xf0, 0x1b, 0xee, 0xf3, 0xed, 0x22, 0xef, 0x2e, 0xf2, + 0x8b, 0xf7, 0xec, 0xfb, 0x98, 0x00, 0x61, 0x06, 0x86, 0x0c, 0x36, 0x11, 0x52, 0x15, 0x2e, 0x19, + 0x1e, 0x1b, 0x79, 0x1c, 0x4f, 0x1b, 0x2c, 0x16, 0xc6, 0x13, 0x89, 0x12, 0xe9, 0x0f, 0xe1, 0x0c, + 0x31, 0x07, 0x8e, 0x00, 0x9e, 0xf9, 0x6b, 0xf5, 0x53, 0xf1, 0xf9, 0xec, 0xa4, 0xe9, 0x9b, 0xe6, + 0xc9, 0xe3, 0xd6, 0xe2, 0xf7, 0xe2, 0xa7, 0xe3, 0x6f, 0xe8, 0x71, 0xec, 0xb5, 0xef, 0x30, 0xf5, + 0xd1, 0xfc, 0x15, 0x04, 0xe5, 0x08, 0x97, 0x0d, 0x38, 0x11, 0xa3, 0x12, 0x15, 0x13, 0x09, 0x11, + 0x00, 0x0d, 0x34, 0x0a, 0x48, 0x08, 0x72, 0x06, 0x22, 0x04, 0x91, 0xfe, 0xbd, 0xf8, 0x2d, 0xf4, + 0x60, 0xf2, 0xb5, 0xf0, 0xb8, 0xed, 0x08, 0xeb, 0xea, 0xe7, 0xd8, 0xe4, 0x94, 0xe3, 0xc4, 0xe1, + 0xf6, 0xe1, 0xa0, 0xe5, 0x9d, 0xe9, 0x24, 0xee, 0xbc, 0xf4, 0xa4, 0xfd, 0x30, 0x05, 0x50, 0x0a, + 0x09, 0x0f, 0x67, 0x13, 0x1b, 0x16, 0xa6, 0x16, 0x99, 0x13, 0x02, 0x11, 0xd4, 0x10, 0x01, 0x10, + 0x7f, 0x0f, 0x75, 0x0b, 0xe7, 0x04, 0xa9, 0xfe, 0xb4, 0xfa, 0xdf, 0xf7, 0x2e, 0xf4, 0x42, 0xf2, + 0x82, 0xf0, 0x0c, 0xee, 0x83, 0xeb, 0xdb, 0xe9, 0x40, 0xe8, 0xc7, 0xe9, 0x2b, 0xee, 0x01, 0xf2, + 0x20, 0xf7, 0x0e, 0xfd, 0x6a, 0x04, 0x33, 0x0b, 0x04, 0x11, 0xaf, 0x16, 0x44, 0x1a, 0x0c, 0x1d, + 0x2a, 0x1e, 0x6e, 0x1b, 0xd1, 0x18, 0xa1, 0x17, 0xd9, 0x15, 0x65, 0x13, 0x84, 0x0d, 0x71, 0x06, + 0x1b, 0x00, 0xc8, 0xfb, 0xc3, 0xf8, 0x9d, 0xf5, 0xd7, 0xf3, 0x7c, 0xf1, 0x00, 0xed, 0xbf, 0xe9, + 0x3d, 0xe7, 0xa9, 0xe6, 0xb8, 0xe8, 0x7b, 0xea, 0xef, 0xed, 0xb3, 0xf2, 0xfa, 0xf9, 0x1a, 0x01, + 0x8a, 0x07, 0xde, 0x0c, 0x6e, 0x11, 0x6e, 0x14, 0x00, 0x16, 0xc4, 0x14, 0x7f, 0x10, 0x4b, 0x0e, + 0x56, 0x0c, 0x55, 0x0b, 0xf1, 0x08, 0xf8, 0x02, 0x0c, 0xfd, 0x82, 0xf8, 0xba, 0xf5, 0x31, 0xf3, + 0xeb, 0xf0, 0x56, 0xee, 0xbc, 0xea, 0xee, 0xe7, 0x05, 0xe7, 0xd1, 0xe5, 0x73, 0xe7, 0x0a, 0xec, + 0xa3, 0xf0, 0x7c, 0xf7, 0x15, 0xfe, 0x54, 0x06, 0x60, 0x0e, 0xc8, 0x13, 0x28, 0x19, 0x5f, 0x1d, + 0x81, 0x20, 0x25, 0x22, 0x93, 0x1f, 0xa8, 0x1c, 0xdc, 0x1a, 0xf3, 0x19, 0x38, 0x1a, 0x49, 0x17, + 0x5a, 0x10, 0x5f, 0x09, 0xbf, 0x04, 0x71, 0x00, 0x63, 0xfd, 0x4d, 0xfb, 0xce, 0xf9, 0x9c, 0xf6, + 0xba, 0xf4, 0x1f, 0xf3, 0xd9, 0xf1, 0xed, 0xf3, 0x21, 0xf7, 0x14, 0xfc, 0x7f, 0x00, 0x57, 0x05, + 0xe1, 0x0c, 0x79, 0x13, 0x25, 0x17, 0x00, 0x1a, 0xab, 0x1c, 0x5d, 0x1e, 0xa7, 0x1c, 0xd9, 0x17, + 0x6a, 0x14, 0x39, 0x12, 0xa4, 0x0f, 0x09, 0x0d, 0x07, 0x07, 0xfd, 0xff, 0x41, 0xfa, 0xde, 0xf5, + 0xf4, 0xf1, 0x86, 0xef, 0xbe, 0xed, 0x78, 0xea, 0xcc, 0xe5, 0x82, 0xe2, 0x27, 0xdf, 0xb3, 0xdd, + 0xc6, 0xde, 0x65, 0xe0, 0xd6, 0xe2, 0x61, 0xe6, 0x15, 0xec, 0x06, 0xf3, 0x61, 0xf9, 0x95, 0xff, + 0xfb, 0x03, 0x6b, 0x07, 0xd0, 0x0a, 0x69, 0x09, 0x4f, 0x06, 0x37, 0x04, 0x90, 0x02, 0x35, 0x02, + 0x04, 0x00, 0xd0, 0xfb, 0x06, 0xf6, 0xb3, 0xf2, 0x97, 0xef, 0xd4, 0xed, 0x30, 0xed, 0x4b, 0xec, + 0x1f, 0xea, 0x12, 0xe8, 0x11, 0xe8, 0xd9, 0xe6, 0x63, 0xe8, 0xda, 0xeb, 0x22, 0xf0, 0xf8, 0xf4, + 0xe0, 0xf9, 0x68, 0x01, 0xca, 0x07, 0xb0, 0x0c, 0xad, 0x11, 0xf4, 0x16, 0x5e, 0x1b, 0x11, 0x1d, + 0xf9, 0x19, 0x1f, 0x18, 0x25, 0x17, 0xb5, 0x15, 0xf9, 0x15, 0x1f, 0x13, 0x91, 0x0d, 0xec, 0x06, + 0x59, 0x02, 0xb9, 0xfe, 0x44, 0xfb, 0x0b, 0xf8, 0x78, 0xf5, 0xf9, 0xf2, 0x99, 0xf1, 0xa1, 0xef, + 0xae, 0xec, 0x36, 0xec, 0xa7, 0xee, 0x00, 0xf2, 0x16, 0xf4, 0x6d, 0xf8, 0x7c, 0xff, 0xf6, 0x05, + 0x26, 0x0b, 0x9c, 0x10, 0x63, 0x14, 0x04, 0x18, 0x19, 0x17, 0x2e, 0x12, 0xcf, 0x0f, 0x60, 0x0d, + 0xe1, 0x0b, 0x9d, 0x0a, 0xf3, 0x06, 0x33, 0x00, 0xbf, 0xf9, 0xd7, 0xf5, 0x4c, 0xf3, 0xf1, 0xf1, + 0x8d, 0xf1, 0xb6, 0xf0, 0xe8, 0xee, 0xfa, 0xed, 0x0a, 0xec, 0x74, 0xec, 0x6b, 0xf0, 0x8d, 0xf5, + 0xe5, 0xfa, 0xda, 0xff, 0x68, 0x08, 0x34, 0x12, 0x26, 0x19, 0xc4, 0x1e, 0x25, 0x23, 0xc7, 0x27, + 0xe4, 0x2a, 0x73, 0x28, 0xe1, 0x23, 0xc6, 0x1f, 0xd4, 0x1c, 0xe2, 0x1a, 0x18, 0x19, 0xe2, 0x14, + 0x09, 0x0e, 0xe8, 0x06, 0x07, 0x01, 0x79, 0xfc, 0x56, 0xf8, 0x32, 0xf6, 0xa3, 0xf1, 0xce, 0xed, + 0x34, 0xeb, 0xcd, 0xe7, 0x2f, 0xe8, 0x32, 0xea, 0x46, 0xed, 0xcb, 0xf0, 0xb3, 0xf5, 0xd1, 0xfc, + 0xef, 0x02, 0xbf, 0x07, 0xd3, 0x0c, 0x49, 0x10, 0xbc, 0x13, 0x59, 0x15, 0x18, 0x12, 0x34, 0x0d, + 0xfb, 0x07, 0x01, 0x04, 0xf7, 0x01, 0x74, 0xfe, 0x79, 0xf7, 0xa4, 0xef, 0x46, 0xea, 0x55, 0xe6, + 0x81, 0xe3, 0x78, 0xe2, 0xe2, 0xe2, 0x91, 0xe1, 0xbb, 0xe0, 0xa3, 0xde, 0x77, 0xdc, 0x67, 0xde, + 0x75, 0xe1, 0x17, 0xe5, 0xd5, 0xe7, 0xad, 0xec, 0x94, 0xf5, 0xc4, 0xfc, 0xaa, 0x04, 0x68, 0x0c, + 0xdd, 0x12, 0x85, 0x18, 0xc9, 0x19, 0xfa, 0x17, 0x81, 0x15, 0xe0, 0x12, 0x95, 0x11, 0x3b, 0x11, + 0x78, 0x0f, 0x4f, 0x0a, 0x92, 0x04, 0x32, 0x00, 0x35, 0xfd, 0x9e, 0xf9, 0x46, 0xf8, 0x29, 0xf7, + 0xe6, 0xf4, 0xe2, 0xf2, 0x5f, 0xef, 0x9c, 0xee, 0xdf, 0xef, 0x22, 0xf2, 0x7b, 0xf5, 0x0a, 0xf9, + 0x66, 0xff, 0x93, 0x06, 0x99, 0x0c, 0xbe, 0x11, 0xa8, 0x15, 0x0e, 0x1a, 0x1d, 0x1e, 0x92, 0x1d, + 0xff, 0x1a, 0x8d, 0x16, 0x94, 0x13, 0x32, 0x12, 0x87, 0x10, 0xf5, 0x0b, 0x64, 0x04, 0xd8, 0xfd, + 0x5d, 0xf8, 0x85, 0xf3, 0xfd, 0xef, 0xe3, 0xed, 0xb9, 0xea, 0x9a, 0xe8, 0x07, 0xe6, 0x89, 0xe2, + 0x87, 0xe1, 0xf7, 0xe1, 0x0b, 0xe4, 0xc0, 0xe6, 0x59, 0xea, 0x14, 0xf1, 0x6a, 0xf7, 0x0b, 0xfe, + 0xac, 0x04, 0xbd, 0x08, 0xa5, 0x0e, 0x7f, 0x12, 0xf9, 0x12, 0x1c, 0x11, 0xf1, 0x0d, 0x65, 0x0d, + 0x1e, 0x0d, 0x51, 0x0b, 0xc3, 0x05, 0x2e, 0xff, 0x15, 0xfb, 0x93, 0xf7, 0xa3, 0xf4, 0xfc, 0xf3, + 0x70, 0xf3, 0x37, 0xf1, 0x01, 0xf0, 0x8d, 0xed, 0xc8, 0xeb, 0xd4, 0xeb, 0x00, 0xef, 0x3f, 0xf4, + 0x66, 0xf8, 0x1e, 0xfe, 0x3e, 0x05, 0x1c, 0x0d, 0x58, 0x15, 0x92, 0x1b, 0xd8, 0x20, 0xe5, 0x25, + 0x9e, 0x27, 0x90, 0x25, 0xdf, 0x20, 0xd2, 0x1b, 0x41, 0x19, 0x67, 0x17, 0x07, 0x14, 0xbc, 0x0e, + 0xf7, 0x08, 0xc5, 0x04, 0x4c, 0xff, 0xd5, 0xf9, 0x32, 0xf8, 0xc5, 0xf5, 0x8c, 0xf3, 0x55, 0xf1, + 0x95, 0xed, 0x43, 0xeb, 0x7f, 0xeb, 0x88, 0xed, 0xa1, 0xf0, 0xea, 0xf3, 0x63, 0xfa, 0xce, 0x01, + 0x6b, 0x08, 0x81, 0x0e, 0x46, 0x12, 0x0b, 0x17, 0x4b, 0x1b, 0x64, 0x1b, 0x0d, 0x19, 0x15, 0x15, + 0x8e, 0x11, 0xf4, 0x0e, 0xf7, 0x0c, 0xf6, 0x08, 0x7d, 0x02, 0xa9, 0xfb, 0xfe, 0xf6, 0x28, 0xf3, + 0xb6, 0xf0, 0x5d, 0xf0, 0xfd, 0xed, 0xc1, 0xec, 0x47, 0xec, 0x4e, 0xea, 0x94, 0xe9, 0xaf, 0xe9, + 0xef, 0xec, 0xb4, 0xef, 0x19, 0xf2, 0x85, 0xf7, 0xab, 0xfc, 0x25, 0x02, 0x4e, 0x07, 0xd5, 0x0b, + 0x91, 0x11, 0x8f, 0x15, 0x7a, 0x15, 0x82, 0x12, 0x8e, 0x0e, 0x95, 0x0b, 0x8c, 0x0a, 0x67, 0x08, + 0xf9, 0x02, 0x74, 0xfc, 0x0b, 0xf7, 0x9f, 0xf2, 0x7d, 0xee, 0x39, 0xee, 0x1b, 0xed, 0xd5, 0xea, + 0x68, 0xea, 0x63, 0xe8, 0xa0, 0xe5, 0x71, 0xe4, 0x3f, 0xe6, 0x2c, 0xea, 0x53, 0xec, 0x17, 0xf1, + 0x33, 0xf8, 0x7f, 0xfe, 0x5c, 0x04, 0x58, 0x08, 0xe0, 0x0c, 0xf6, 0x11, 0x16, 0x14, 0xb8, 0x13, + 0xeb, 0x10, 0x66, 0x0d, 0x5b, 0x0b, 0xb2, 0x0b, 0xbf, 0x09, 0x55, 0x05, 0x99, 0x00, 0x16, 0xfd, + 0xed, 0xf9, 0xb3, 0xf5, 0xc8, 0xf4, 0xac, 0xf2, 0x09, 0xf0, 0x14, 0xef, 0xee, 0xec, 0x7b, 0xec, + 0x48, 0xed, 0x69, 0xf0, 0x51, 0xf4, 0x7a, 0xf5, 0xc1, 0xfa, 0xd6, 0x00, 0x3b, 0x06, 0x54, 0x0c, + 0x71, 0x11, 0xa0, 0x17, 0x36, 0x1c, 0x79, 0x1d, 0x27, 0x1c, 0xcc, 0x19, 0x44, 0x16, 0xe7, 0x14, + 0x6b, 0x14, 0x83, 0x11, 0x01, 0x0c, 0xf5, 0x04, 0x06, 0x00, 0xd9, 0xfa, 0x1d, 0xf8, 0x6f, 0xf7, + 0xf4, 0xf4, 0xdd, 0xf4, 0x5c, 0xf3, 0x90, 0xf0, 0xa4, 0xef, 0x7d, 0xf0, 0xeb, 0xf2, 0x2c, 0xf5, + 0xad, 0xf8, 0xa4, 0xff, 0x5e, 0x06, 0x03, 0x0d, 0x6b, 0x13, 0xe4, 0x18, 0x2b, 0x1f, 0x8e, 0x22, + 0x7a, 0x22, 0x34, 0x20, 0xfa, 0x1a, 0xb3, 0x16, 0xd8, 0x14, 0xee, 0x11, 0x65, 0x0d, 0xf4, 0x06, + 0xb4, 0x01, 0x5e, 0xfd, 0x33, 0xf9, 0x9d, 0xf7, 0xd5, 0xf3, 0x95, 0xf0, 0x65, 0xef, 0x23, 0xed, + 0x2c, 0xea, 0x72, 0xe8, 0xf6, 0xe8, 0x6f, 0xeb, 0x72, 0xed, 0x4b, 0xf2, 0xac, 0xf9, 0x9b, 0xff, + 0x70, 0x07, 0x28, 0x0d, 0x84, 0x11, 0xd9, 0x16, 0x7d, 0x18, 0x1c, 0x18, 0x22, 0x15, 0x9d, 0x11, + 0x89, 0x0f, 0xec, 0x0d, 0x8e, 0x09, 0xb1, 0x02, 0xfc, 0xfa, 0xaa, 0xf5, 0xd0, 0xf0, 0xe1, 0xeb, + 0xdc, 0xe9, 0x23, 0xe7, 0xd7, 0xe6, 0x66, 0xe5, 0x53, 0xe2, 0x59, 0xe2, 0x7e, 0xe2, 0x8f, 0xe4, + 0x5c, 0xe7, 0x0b, 0xea, 0x52, 0xee, 0x21, 0xf3, 0xcb, 0xf8, 0x5b, 0xfd, 0x22, 0x00, 0x0a, 0x06, + 0xc4, 0x0b, 0xeb, 0x0e, 0x26, 0x10, 0x70, 0x0e, 0xc4, 0x0a, 0xe9, 0x08, 0xe2, 0x07, 0x7b, 0x05, + 0xe6, 0xff, 0x59, 0xfb, 0x6f, 0xf8, 0xeb, 0xf3, 0x0d, 0xf1, 0xd6, 0xef, 0x7b, 0xee, 0x6e, 0xee, + 0x79, 0xed, 0x41, 0xec, 0x7a, 0xeb, 0x16, 0xec, 0x64, 0xef, 0x4e, 0xf2, 0x73, 0xf6, 0x01, 0xfd, + 0x58, 0x03, 0x13, 0x0b, 0x35, 0x11, 0xbd, 0x15, 0x37, 0x1b, 0xdb, 0x1f, 0xba, 0x21, 0x35, 0x20, + 0xf3, 0x1c, 0x65, 0x1a, 0x01, 0x1a, 0x17, 0x19, 0xed, 0x15, 0xa7, 0x0f, 0x06, 0x0a, 0x83, 0x05, + 0xb6, 0x00, 0x99, 0xfe, 0x5c, 0xfc, 0x4d, 0xfa, 0x8b, 0xf8, 0x64, 0xf4, 0x90, 0xf1, 0x73, 0xef, + 0xde, 0xef, 0x22, 0xf2, 0xec, 0xf2, 0x70, 0xf5, 0xdc, 0xf8, 0x3c, 0xfd, 0x94, 0x01, 0x0c, 0x05, + 0x40, 0x09, 0x46, 0x0e, 0xf5, 0x10, 0x7d, 0x10, 0x04, 0x0e, 0xac, 0x09, 0x3d, 0x08, 0xe0, 0x07, + 0x18, 0x05, 0x8a, 0x00, 0xb9, 0xfa, 0xad, 0xf6, 0xff, 0xf0, 0x98, 0xec, 0x02, 0xeb, 0x00, 0xe8, + 0xa1, 0xe6, 0xc5, 0xe5, 0x6c, 0xe3, 0x67, 0xe1, 0x22, 0xe1, 0xcb, 0xe3, 0x45, 0xe7, 0x1f, 0xeb, + 0xcc, 0xef, 0xb9, 0xf5, 0xfd, 0xfd, 0xc7, 0x05, 0x35, 0x0b, 0x54, 0x12, 0xe3, 0x1a, 0x6e, 0x20, + 0x0e, 0x22, 0x28, 0x21, 0xa5, 0x1e, 0xe2, 0x1c, 0xa9, 0x1b, 0x49, 0x19, 0xb4, 0x13, 0xc6, 0x0e, + 0x58, 0x0b, 0x97, 0x06, 0x18, 0x04, 0x3f, 0x03, 0x77, 0x01, 0x37, 0x00, 0x23, 0xfe, 0xab, 0xfb, + 0xc2, 0xf9, 0x95, 0xf8, 0x73, 0xfa, 0x8d, 0xfb, 0x62, 0xfd, 0xb5, 0x00, 0x2e, 0x05, 0xd1, 0x0a, + 0x70, 0x10, 0x72, 0x15, 0x5e, 0x1b, 0x49, 0x20, 0x3f, 0x21, 0x46, 0x1f, 0x21, 0x1a, 0x5a, 0x16, + 0xc3, 0x14, 0x9e, 0x12, 0x1d, 0x0f, 0x3a, 0x07, 0xa5, 0xff, 0xae, 0xf8, 0x91, 0xf2, 0x40, 0xef, + 0xf0, 0xea, 0x6e, 0xe7, 0xb1, 0xe5, 0xef, 0xe2, 0xc3, 0xdf, 0xfc, 0xdd, 0x48, 0xdf, 0x2c, 0xe2, + 0x46, 0xe4, 0xa0, 0xe7, 0x0d, 0xec, 0x22, 0xf1, 0xd8, 0xf6, 0xcb, 0xfa, 0x4d, 0xfe, 0xe2, 0x03, + 0xf1, 0x07, 0x09, 0x09, 0x3a, 0x08, 0xa7, 0x06, 0x87, 0x06, 0xdf, 0x05, 0xda, 0x04, 0x8a, 0x01, + 0x54, 0xfc, 0x1f, 0xf8, 0x8e, 0xf3, 0x19, 0xf0, 0x6f, 0xee, 0x3c, 0xec, 0xb9, 0xec, 0x86, 0xed, + 0xda, 0xec, 0x19, 0xec, 0x58, 0xeb, 0x2b, 0xee, 0x3e, 0xf1, 0x97, 0xf3, 0xb6, 0xf7, 0xd7, 0xfc, + 0xb1, 0x03, 0x99, 0x09, 0xea, 0x0d, 0xb5, 0x13, 0xdc, 0x19, 0x76, 0x1c, 0xfa, 0x1c, 0xff, 0x1a, + 0xde, 0x17, 0x48, 0x16, 0x86, 0x15, 0x22, 0x14, 0xce, 0x0e, 0x04, 0x08, 0xaf, 0x02, 0xc3, 0xfc, + 0x4a, 0xfa, 0xa6, 0xf7, 0xc9, 0xf4, 0x94, 0xf3, 0xdf, 0xef, 0x01, 0xec, 0xa5, 0xe7, 0xa6, 0xe5, + 0xe8, 0xe6, 0xf6, 0xe8, 0xc8, 0xeb, 0xde, 0xee, 0x81, 0xf3, 0x83, 0xf9, 0x98, 0xfd, 0xd3, 0x00, + 0x52, 0x06, 0x55, 0x0b, 0xc2, 0x0d, 0x38, 0x0e, 0xd2, 0x0b, 0x81, 0x09, 0xbf, 0x08, 0x40, 0x09, + 0xd5, 0x08, 0x73, 0x04, 0x9b, 0x00, 0x86, 0xfc, 0xee, 0xf8, 0x04, 0xf7, 0xe3, 0xf3, 0x2b, 0xf3, + 0x9e, 0xf3, 0xa7, 0xf2, 0x62, 0xf1, 0xc0, 0xf0, 0xa8, 0xf2, 0xff, 0xf4, 0x82, 0xf7, 0x49, 0xfc, + 0x54, 0x01, 0x46, 0x08, 0xf9, 0x0e, 0xfb, 0x13, 0xef, 0x19, 0x0d, 0x21, 0x5e, 0x27, 0x1d, 0x2b, + 0x29, 0x2c, 0xe3, 0x29, 0xef, 0x27, 0x91, 0x27, 0x83, 0x26, 0x47, 0x22, 0xd4, 0x1b, 0xe7, 0x15, + 0x59, 0x0f, 0xfc, 0x0a, 0xd8, 0x06, 0xf3, 0x01, 0x83, 0x00, 0x3f, 0xfd, 0x37, 0xf8, 0x23, 0xf2, + 0x55, 0xee, 0xce, 0xed, 0x96, 0xed, 0x16, 0xee, 0x0a, 0xef, 0x21, 0xf1, 0x00, 0xf6, 0xfa, 0xf9, + 0x5f, 0xfd, 0x8a, 0x02, 0xa5, 0x07, 0xd6, 0x0a, 0x31, 0x0c, 0xe6, 0x0a, 0x50, 0x07, 0x7d, 0x04, + 0x7e, 0x03, 0x88, 0x02, 0x65, 0xfe, 0x13, 0xfa, 0xa0, 0xf4, 0xc4, 0xee, 0x30, 0xea, 0x61, 0xe6, + 0xdc, 0xe3, 0x3f, 0xe3, 0x29, 0xe2, 0xce, 0xdf, 0xdf, 0xdd, 0x66, 0xdd, 0x16, 0xdf, 0xe4, 0xe1, + 0x25, 0xe6, 0xfe, 0xea, 0xa0, 0xf0, 0xe4, 0xf7, 0xc9, 0xfc, 0xa8, 0x00, 0x72, 0x06, 0x45, 0x0c, + 0xdb, 0x0f, 0xa1, 0x11, 0x57, 0x10, 0x70, 0x0e, 0xc0, 0x0f, 0xc2, 0x12, 0xd1, 0x12, 0xfd, 0x0f, + 0xa6, 0x0c, 0x47, 0x08, 0xfe, 0x04, 0x91, 0x03, 0xb8, 0x00, 0x60, 0xff, 0xdf, 0xfd, 0x35, 0xfb, + 0x6d, 0xf8, 0x35, 0xf6, 0x2f, 0xf6, 0xb5, 0xf6, 0xb7, 0xf7, 0xc7, 0xf9, 0x4b, 0xfb, 0x5a, 0xfe, + 0x4f, 0x03, 0x15, 0x06, 0x7e, 0x09, 0x67, 0x0e, 0xab, 0x12, 0xdd, 0x14, 0xbc, 0x13, 0xb2, 0x0f, + 0x38, 0x0d, 0x22, 0x0c, 0xe5, 0x0b, 0xae, 0x08, 0x16, 0x04, 0x90, 0x00, 0x29, 0xfb, 0x15, 0xf7, + 0x2d, 0xf3, 0x0d, 0xf1, 0x60, 0xf1, 0x74, 0xf1, 0x09, 0xf0, 0x7e, 0xed, 0x98, 0xeb, 0x17, 0xeb, + 0x89, 0xeb, 0x97, 0xed, 0xba, 0xf0, 0x0f, 0xf4, 0x57, 0xf9, 0x5b, 0xfe, 0x20, 0x01, 0x24, 0x05, + 0x67, 0x09, 0xa1, 0x0d, 0x47, 0x10, 0x84, 0x0f, 0x8c, 0x0d, 0x11, 0x0c, 0x04, 0x0d, 0xa4, 0x0d, + 0xf8, 0x0b, 0x7b, 0x09, 0x8f, 0x06, 0x16, 0x03, 0x0f, 0x01, 0x7b, 0xfe, 0x4e, 0xfd, 0x74, 0xfc, + 0x77, 0xfa, 0x0f, 0xf8, 0x12, 0xf5, 0x1f, 0xf3, 0xa0, 0xf3, 0xaf, 0xf5, 0x22, 0xf7, 0x53, 0xf8, + 0x18, 0xfc, 0xe3, 0x01, 0xbf, 0x05, 0x84, 0x08, 0xdb, 0x0c, 0x3c, 0x11, 0x73, 0x14, 0x88, 0x16, + 0xd9, 0x14, 0x62, 0x13, 0x11, 0x12, 0x4d, 0x12, 0x33, 0x11, 0xaf, 0x0c, 0xec, 0x08, 0x4f, 0x02, + 0x98, 0xfc, 0xa0, 0xf8, 0xd6, 0xf4, 0x98, 0xf3, 0x49, 0xf3, 0x04, 0xf3, 0xd0, 0xf1, 0xb2, 0xef, + 0xaf, 0xee, 0x57, 0xee, 0xf8, 0xef, 0xef, 0xf2, 0x07, 0xf5, 0x61, 0xf9, 0x02, 0xff, 0x8a, 0x01, + 0x50, 0x04, 0x00, 0x0a, 0xa8, 0x0f, 0x6a, 0x14, 0x21, 0x15, 0x83, 0x13, 0x85, 0x12, 0x35, 0x12, + 0x43, 0x13, 0x3f, 0x11, 0xf8, 0x0d, 0x21, 0x0b, 0x33, 0x06, 0xde, 0x02, 0x08, 0x00, 0x1a, 0xfc, + 0x5a, 0xfa, 0x0d, 0xf9, 0xdc, 0xf6, 0xe9, 0xf2, 0xe3, 0xef, 0x1d, 0xf0, 0x56, 0xf0, 0x79, 0xf2, + 0x56, 0xf5, 0x6b, 0xf8, 0x6d, 0xfe, 0x48, 0x04, 0x18, 0x07, 0x57, 0x09, 0x24, 0x0d, 0xd7, 0x0f, + 0x7b, 0x10, 0x7a, 0x0e, 0x64, 0x0b, 0x2d, 0x08, 0xc7, 0x06, 0x2e, 0x07, 0xb0, 0x03, 0xe8, 0xff, + 0x7c, 0xfb, 0x01, 0xf6, 0x6e, 0xf2, 0x3a, 0xee, 0x3d, 0xec, 0x97, 0xea, 0x6d, 0xe9, 0xd9, 0xe7, + 0xd0, 0xe4, 0x6f, 0xe3, 0x23, 0xe4, 0xd6, 0xe6, 0xb4, 0xe9, 0x96, 0xeb, 0x6f, 0xef, 0x89, 0xf5, + 0x2a, 0xfa, 0x39, 0xfc, 0xcd, 0x00, 0x36, 0x06, 0x98, 0x0a, 0x93, 0x0d, 0xd6, 0x0d, 0x80, 0x0c, + 0xca, 0x09, 0xe2, 0x0a, 0xf8, 0x0b, 0x7f, 0x09, 0x5e, 0x07, 0xa7, 0x03, 0xb6, 0x00, 0x2b, 0xfe, + 0x21, 0xfb, 0x4b, 0xf9, 0xd6, 0xf8, 0x4a, 0xf9, 0x4a, 0xf8, 0xf1, 0xf5, 0x24, 0xf5, 0x58, 0xf5, + 0x21, 0xf6, 0x39, 0xf7, 0x96, 0xf8, 0x0d, 0xfe, 0x68, 0x04, 0xea, 0x07, 0x5c, 0x0a, 0xe6, 0x0e, + 0xa1, 0x13, 0xbc, 0x15, 0xb5, 0x15, 0xb6, 0x13, 0x1b, 0x11, 0x3d, 0x0f, 0x3e, 0x0f, 0xed, 0x0c, + 0x25, 0x09, 0x56, 0x05, 0x19, 0x01, 0xf6, 0xfd, 0xed, 0xfa, 0xa6, 0xf7, 0xe9, 0xf5, 0x5d, 0xf5, + 0xec, 0xf3, 0xae, 0xf0, 0x80, 0xed, 0xfa, 0xec, 0x94, 0xed, 0x56, 0xef, 0xb8, 0xf1, 0xa7, 0xf4, + 0x59, 0xf9, 0xbb, 0xfe, 0x29, 0x02, 0x1c, 0x06, 0xdc, 0x0b, 0xd9, 0x10, 0x69, 0x14, 0x84, 0x15, + 0x3b, 0x15, 0xc9, 0x13, 0x9e, 0x15, 0x4c, 0x18, 0xad, 0x17, 0x63, 0x15, 0x95, 0x11, 0x5e, 0x0d, + 0xc1, 0x09, 0x3d, 0x06, 0x81, 0x03, 0xa3, 0x01, 0xf8, 0x00, 0xd6, 0xfe, 0x00, 0xfc, 0x90, 0xf9, + 0x1c, 0xf8, 0xa9, 0xf7, 0x1c, 0xf8, 0x19, 0xf9, 0xae, 0xfb, 0xcd, 0x00, 0xcf, 0x04, 0x86, 0x07, + 0x9f, 0x0a, 0x91, 0x0e, 0x17, 0x12, 0x0b, 0x15, 0x4b, 0x15, 0x19, 0x12, 0x36, 0x0f, 0x41, 0x10, + 0x90, 0x0f, 0xe7, 0x0b, 0x52, 0x07, 0xd4, 0x01, 0xca, 0xfd, 0xaf, 0xf8, 0x16, 0xf4, 0x3a, 0xf1, + 0x30, 0xee, 0xa3, 0xeb, 0x4c, 0xe8, 0x30, 0xe5, 0xdf, 0xe3, 0xb9, 0xe2, 0xdb, 0xe2, 0xad, 0xe3, + 0x6b, 0xe4, 0xf5, 0xe7, 0xf1, 0xed, 0xcf, 0xf2, 0xb6, 0xf6, 0x35, 0xfc, 0x76, 0x00, 0xe6, 0x03, + 0x13, 0x05, 0xe3, 0x02, 0x17, 0xff, 0xa2, 0xfd, 0xd7, 0xff, 0xdf, 0xfe, 0x0d, 0xfd, 0x0d, 0xfb, + 0xf3, 0xf8, 0x1b, 0xf7, 0x68, 0xf4, 0xc4, 0xf2, 0x28, 0xf2, 0x1e, 0xf3, 0x07, 0xf3, 0x42, 0xf1, + 0x4c, 0xef, 0x48, 0xee, 0xb5, 0xee, 0xf0, 0xf0, 0xa8, 0xf4, 0x82, 0xf8, 0x69, 0xfe, 0x53, 0x05, + 0x4d, 0x0a, 0xb7, 0x0d, 0x29, 0x12, 0x15, 0x17, 0x27, 0x1b, 0xea, 0x1c, 0xb0, 0x1b, 0x5e, 0x19, + 0x5f, 0x19, 0x82, 0x18, 0xa8, 0x15, 0xf1, 0x12, 0xa8, 0x0e, 0x0b, 0x0a, 0xf3, 0x04, 0xf9, 0x00, + 0x4c, 0xfe, 0xf5, 0xfb, 0x05, 0xfb, 0x45, 0xfa, 0x10, 0xf8, 0x8f, 0xf6, 0x3d, 0xf5, 0x8b, 0xf4, + 0x1b, 0xf6, 0x0d, 0xf6, 0x49, 0xf7, 0xb9, 0xfb, 0x5d, 0x00, 0x79, 0x03, 0x16, 0x06, 0xc6, 0x08, + 0x92, 0x0b, 0x3a, 0x0d, 0x48, 0x0c, 0xab, 0x08, 0x6f, 0x05, 0x33, 0x06, 0x39, 0x05, 0xdd, 0x01, + 0xd8, 0xfd, 0x1d, 0xf9, 0x91, 0xf5, 0xae, 0xf2, 0x52, 0xf1, 0xc5, 0xf0, 0xe1, 0xef, 0x5a, 0xf0, + 0x84, 0xef, 0xbf, 0xec, 0x21, 0xeb, 0x91, 0xea, 0x80, 0xeb, 0xb9, 0xed, 0xc4, 0xef, 0x3d, 0xf4, + 0xf6, 0xfa, 0x93, 0xff, 0x18, 0x04, 0x31, 0x09, 0xb8, 0x0f, 0x05, 0x16, 0xa7, 0x18, 0xcf, 0x18, + 0x4c, 0x16, 0xf4, 0x15, 0x24, 0x17, 0xc1, 0x16, 0x3c, 0x16, 0xc0, 0x13, 0x1b, 0x10, 0x59, 0x0c, + 0xbf, 0x07, 0x9c, 0x03, 0x55, 0x00, 0x89, 0xfe, 0xfc, 0xfd, 0xb6, 0xfb, 0x71, 0xf9, 0x94, 0xf8, + 0x03, 0xf8, 0xa9, 0xf9, 0x3f, 0xfa, 0x8f, 0xfa, 0x60, 0xfe, 0xc4, 0x03, 0x2c, 0x07, 0xe8, 0x09, + 0x02, 0x0d, 0x3d, 0x11, 0xdb, 0x13, 0x0c, 0x14, 0xbc, 0x12, 0x9d, 0x0f, 0x87, 0x0f, 0x7a, 0x0f, + 0xc8, 0x0d, 0x5e, 0x0b, 0x0b, 0x06, 0x26, 0x01, 0x40, 0xfc, 0x6c, 0xf8, 0xde, 0xf5, 0x73, 0xf3, + 0xaa, 0xf2, 0x9a, 0xf0, 0xeb, 0xec, 0xca, 0xe9, 0x4d, 0xe7, 0x1f, 0xe7, 0x49, 0xe8, 0x29, 0xe9, + 0xbd, 0xea, 0xe3, 0xf0, 0xa0, 0xf7, 0xd1, 0xfb, 0x18, 0x01, 0xd8, 0x06, 0x44, 0x0d, 0x3a, 0x10, + 0x25, 0x11, 0x4b, 0x0f, 0xf1, 0x0b, 0xb1, 0x0b, 0x4e, 0x0a, 0x61, 0x08, 0xf9, 0x04, 0xca, 0x00, + 0x06, 0xfd, 0xe9, 0xf8, 0x09, 0xf6, 0x63, 0xf3, 0x00, 0xf2, 0x93, 0xf1, 0x87, 0xf0, 0x5d, 0xee, + 0x45, 0xec, 0x72, 0xeb, 0xed, 0xec, 0xb0, 0xee, 0xcd, 0xef, 0x25, 0xf4, 0xba, 0xfa, 0xc3, 0xff, + 0xe4, 0x03, 0x1e, 0x08, 0x8d, 0x0c, 0xd8, 0x10, 0x22, 0x13, 0x7d, 0x13, 0x93, 0x10, 0x08, 0x0f, + 0xce, 0x0f, 0x2f, 0x0e, 0x5c, 0x0b, 0x70, 0x07, 0x0b, 0x03, 0xe7, 0xff, 0xd5, 0xfc, 0x28, 0xf9, + 0x9c, 0xf5, 0x61, 0xf3, 0xa3, 0xf2, 0xd7, 0xef, 0x11, 0xed, 0x1f, 0xec, 0x89, 0xeb, 0x06, 0xed, + 0xff, 0xed, 0x44, 0xee, 0x05, 0xf2, 0x4c, 0xf7, 0xf3, 0xfa, 0x95, 0xff, 0x92, 0x04, 0x98, 0x0a, + 0x52, 0x0e, 0xe5, 0x0f, 0xc2, 0x0f, 0x75, 0x0c, 0xd4, 0x0b, 0xb8, 0x0b, 0x86, 0x0a, 0x5a, 0x08, + 0x0e, 0x04, 0x7f, 0xff, 0x08, 0xfc, 0x9e, 0xf8, 0x8c, 0xf5, 0x86, 0xf4, 0x88, 0xf5, 0x53, 0xf6, + 0xd5, 0xf4, 0x65, 0xf3, 0x49, 0xf3, 0xdb, 0xf3, 0x78, 0xf5, 0x1e, 0xf6, 0x76, 0xf7, 0x3c, 0xfd, + 0x10, 0x03, 0xdc, 0x07, 0xa6, 0x0c, 0x9d, 0x11, 0xd4, 0x16, 0x85, 0x1a, 0xf5, 0x1c, 0x93, 0x1b, + 0x45, 0x18, 0xa9, 0x18, 0x26, 0x19, 0x68, 0x18, 0xd0, 0x16, 0x6d, 0x13, 0x85, 0x10, 0xb0, 0x0d, + 0x13, 0x0a, 0x0b, 0x07, 0x22, 0x04, 0x5a, 0x03, 0xe5, 0x01, 0x54, 0xfe, 0x71, 0xfb, 0xbd, 0xf8, + 0xd9, 0xf7, 0x0c, 0xf8, 0xfc, 0xf6, 0xc3, 0xf8, 0xf6, 0xfc, 0x1a, 0x00, 0x11, 0x03, 0x92, 0x05, + 0xfd, 0x09, 0xec, 0x0d, 0x3b, 0x10, 0xc9, 0x10, 0x92, 0x0c, 0xf6, 0x09, 0x6b, 0x0a, 0x87, 0x09, + 0x58, 0x07, 0xe8, 0x03, 0x87, 0xff, 0x66, 0xfb, 0x71, 0xf6, 0xde, 0xf1, 0x4e, 0xef, 0x49, 0xed, + 0xb8, 0xec, 0x16, 0xeb, 0x0b, 0xe8, 0x95, 0xe6, 0x54, 0xe5, 0x6f, 0xe6, 0x6a, 0xe8, 0xd2, 0xe8, + 0x51, 0xec, 0xfd, 0xef, 0xb6, 0xf3, 0xd5, 0xf7, 0xdc, 0xfb, 0x5f, 0x02, 0xce, 0x07, 0xd3, 0x0b, + 0x33, 0x0c, 0x6f, 0x08, 0x7a, 0x07, 0x62, 0x07, 0xfa, 0x05, 0x97, 0x03, 0xc0, 0xff, 0xde, 0xfb, + 0x11, 0xf9, 0x35, 0xf6, 0xf8, 0xf3, 0x2c, 0xf3, 0xc4, 0xf3, 0x12, 0xf5, 0x12, 0xf4, 0x28, 0xf3, + 0x79, 0xf2, 0x9a, 0xf1, 0x2d, 0xf2, 0xde, 0xf2, 0xb3, 0xf3, 0xcb, 0xf8, 0x94, 0xfe, 0xc6, 0x03, + 0x2b, 0x08, 0xaf, 0x0c, 0x6f, 0x12, 0x63, 0x16, 0x41, 0x19, 0x1b, 0x17, 0x3b, 0x13, 0x9e, 0x12, + 0x76, 0x12, 0xd8, 0x11, 0x36, 0x0f, 0x13, 0x0a, 0xf9, 0x04, 0xc0, 0x00, 0x1f, 0xfd, 0x81, 0xf9, + 0x95, 0xf6, 0x3b, 0xf5, 0x33, 0xf5, 0x16, 0xf4, 0xca, 0xf2, 0x40, 0xf2, 0x41, 0xf2, 0x3f, 0xf4, + 0x8e, 0xf5, 0x0c, 0xf8, 0x36, 0xfd, 0x42, 0x01, 0x8c, 0x04, 0xa5, 0x07, 0x00, 0x0c, 0xfd, 0x0f, + 0xb9, 0x12, 0x40, 0x13, 0x3c, 0x0f, 0xac, 0x0c, 0x97, 0x0b, 0xeb, 0x09, 0xd2, 0x06, 0x37, 0x03, + 0xe7, 0xfe, 0x3d, 0xfa, 0x79, 0xf5, 0x73, 0xf1, 0xf2, 0xef, 0x05, 0xf0, 0xdf, 0xf1, 0xf6, 0xf1, + 0x5f, 0xf0, 0xc2, 0xee, 0x35, 0xef, 0xce, 0xf1, 0x5d, 0xf4, 0x35, 0xf4, 0x81, 0xf6, 0xa4, 0xfb, + 0x9b, 0x00, 0x3d, 0x05, 0x0e, 0x09, 0x6e, 0x0e, 0x03, 0x14, 0xa8, 0x18, 0x3a, 0x1a, 0x50, 0x18, + 0x1a, 0x16, 0x3e, 0x15, 0x66, 0x13, 0x93, 0x11, 0xeb, 0x0d, 0x00, 0x09, 0x7a, 0x05, 0x65, 0x01, + 0x03, 0xff, 0x12, 0xfc, 0x3b, 0xfa, 0x5c, 0xf9, 0x40, 0xf7, 0xdd, 0xf5, 0x16, 0xf4, 0x5a, 0xf3, + 0xf5, 0xf4, 0xff, 0xf5, 0x90, 0xf6, 0x71, 0xfa, 0x48, 0xff, 0xc2, 0x03, 0x24, 0x07, 0xbe, 0x0a, + 0x4d, 0x0f, 0x5e, 0x13, 0x38, 0x16, 0x6d, 0x14, 0xb6, 0x10, 0xdd, 0x0e, 0x15, 0x0d, 0x28, 0x0b, + 0x0e, 0x09, 0xb7, 0x05, 0x93, 0x01, 0x93, 0xfd, 0x71, 0xf8, 0x92, 0xf4, 0x59, 0xf2, 0x94, 0xf2, + 0x96, 0xf2, 0x3e, 0xf0, 0x7b, 0xee, 0x12, 0xed, 0x43, 0xed, 0xf3, 0xed, 0x96, 0xed, 0xbf, 0xef, + 0x48, 0xf4, 0x29, 0xf9, 0x5f, 0xfd, 0xef, 0x00, 0xf5, 0x05, 0x84, 0x0b, 0x46, 0x11, 0x9f, 0x15, + 0xdd, 0x14, 0x47, 0x13, 0x08, 0x12, 0xbe, 0x10, 0xbe, 0x0e, 0xf4, 0x0a, 0x0d, 0x05, 0x49, 0xff, + 0xda, 0xf9, 0x33, 0xf5, 0x7c, 0xf0, 0x8e, 0xed, 0x8b, 0xed, 0xc4, 0xec, 0xcf, 0xeb, 0xec, 0xe9, + 0x84, 0xe8, 0x37, 0xea, 0x75, 0xeb, 0x9c, 0xeb, 0x2b, 0xef, 0x82, 0xf4, 0x48, 0xf9, 0x4d, 0xfd, + 0xd5, 0x01, 0xea, 0x07, 0xe2, 0x0c, 0x6f, 0x12, 0xb5, 0x13, 0xb5, 0x11, 0xec, 0x0f, 0x68, 0x0e, + 0x20, 0x0d, 0x4b, 0x0a, 0x8c, 0x06, 0x2e, 0x02, 0xa4, 0xfd, 0x9d, 0xf9, 0x50, 0xf6, 0x23, 0xf3, + 0x7b, 0xf1, 0x20, 0xf1, 0x01, 0xf0, 0x7e, 0xee, 0xb4, 0xec, 0x0f, 0xeb, 0xb1, 0xec, 0x61, 0xed, + 0xa5, 0xee, 0x66, 0xf2, 0x09, 0xf7, 0x44, 0xfc, 0x80, 0xff, 0xd3, 0x04, 0x34, 0x0a, 0x0f, 0x10, + 0x23, 0x15, 0xff, 0x14, 0xb1, 0x12, 0xb9, 0x11, 0xe7, 0x11, 0x78, 0x10, 0xd3, 0x0d, 0x75, 0x09, + 0x6e, 0x05, 0x25, 0x01, 0x8d, 0xfc, 0x1c, 0xf7, 0xf7, 0xf2, 0xcc, 0xf1, 0x3d, 0xf1, 0x4c, 0xf0, + 0x09, 0xf0, 0xfa, 0xef, 0x3a, 0xf1, 0xfe, 0xf3, 0xfa, 0xf4, 0xc3, 0xf7, 0x8c, 0xfb, 0xb3, 0xff, + 0xf5, 0x03, 0x9b, 0x07, 0x69, 0x0c, 0x6b, 0x11, 0xdb, 0x16, 0x64, 0x1b, 0xa3, 0x1a, 0xd6, 0x18, + 0xf6, 0x17, 0x84, 0x17, 0xa3, 0x16, 0x18, 0x14, 0x67, 0x10, 0xcc, 0x0b, 0x5f, 0x07, 0xaa, 0x03, + 0x20, 0x00, 0x5e, 0xfe, 0x8d, 0xfe, 0xc6, 0xfd, 0x35, 0xfc, 0xef, 0xfa, 0x62, 0xf9, 0x6d, 0xf9, + 0x0b, 0xf9, 0xed, 0xf7, 0xc0, 0xf9, 0xfd, 0xfc, 0x40, 0x01, 0x3b, 0x04, 0xc5, 0x07, 0x24, 0x0c, + 0xf4, 0x0f, 0xba, 0x14, 0xf7, 0x16, 0xcd, 0x15, 0x12, 0x14, 0xf8, 0x12, 0x48, 0x12, 0x5e, 0x10, + 0xad, 0x0c, 0x02, 0x08, 0x31, 0x03, 0xcd, 0xfd, 0xa4, 0xf9, 0x94, 0xf5, 0x06, 0xf3, 0x9b, 0xf1, + 0xdc, 0xef, 0xe8, 0xed, 0x64, 0xeb, 0xb4, 0xea, 0xc5, 0xeb, 0xb3, 0xec, 0xde, 0xec, 0xf0, 0xee, + 0xd4, 0xf3, 0x77, 0xf8, 0xb2, 0xfa, 0x16, 0xfd, 0x44, 0x00, 0xc0, 0x04, 0xe3, 0x09, 0xf2, 0x0a, + 0xf4, 0x08, 0x6f, 0x08, 0x7f, 0x08, 0x99, 0x07, 0x9d, 0x05, 0x53, 0x01, 0xd5, 0xfc, 0xad, 0xf7, + 0x01, 0xf3, 0x45, 0xee, 0x8f, 0xea, 0x97, 0xe8, 0xd9, 0xe7, 0xa8, 0xe7, 0x7f, 0xe7, 0xbc, 0xe7, + 0x64, 0xe8, 0x57, 0xea, 0x75, 0xeb, 0xac, 0xed, 0x07, 0xf1, 0xae, 0xf5, 0x17, 0xfa, 0xcb, 0xfd, + 0xd4, 0x03, 0x01, 0x0a, 0x43, 0x11, 0x86, 0x16, 0x32, 0x17, 0x1d, 0x16, 0x52, 0x16, 0xb2, 0x15, + 0x10, 0x14, 0xeb, 0x11, 0x14, 0x0e, 0x59, 0x0a, 0xd3, 0x05, 0x88, 0x01, 0x11, 0xfd, 0x18, 0xf9, + 0xb0, 0xf7, 0x57, 0xf6, 0x80, 0xf5, 0xf2, 0xf4, 0xf3, 0xf3, 0xbe, 0xf5, 0x92, 0xf7, 0x44, 0xf8, + 0x3d, 0xfa, 0x1c, 0xfe, 0x82, 0x03, 0x7c, 0x07, 0x0d, 0x0c, 0x6b, 0x10, 0x5a, 0x14, 0x06, 0x19, + 0xb0, 0x1b, 0xcc, 0x19, 0x6c, 0x16, 0x8d, 0x14, 0x83, 0x12, 0xd9, 0x10, 0x05, 0x0d, 0x62, 0x07, + 0xaa, 0x00, 0x7f, 0xfa, 0x8d, 0xf5, 0xcb, 0xf0, 0xd3, 0xec, 0x31, 0xeb, 0xbc, 0xe9, 0x96, 0xe8, + 0xf5, 0xe6, 0x32, 0xe5, 0xb5, 0xe6, 0xe6, 0xe7, 0xac, 0xe9, 0xc2, 0xec, 0x90, 0xf1, 0xca, 0xf6, + 0x33, 0xfa, 0x4f, 0xff, 0xeb, 0x03, 0x9a, 0x08, 0xc4, 0x0e, 0x61, 0x12, 0x99, 0x13, 0x8f, 0x13, + 0x75, 0x13, 0xc0, 0x13, 0xc5, 0x13, 0xb4, 0x11, 0xd0, 0x0d, 0xb6, 0x08, 0x13, 0x04, 0x36, 0x00, + 0xe9, 0xfc, 0x30, 0xfb, 0x77, 0xfa, 0x49, 0xf9, 0x1a, 0xf9, 0xc1, 0xf7, 0x3e, 0xf8, 0x86, 0xfa, + 0xc4, 0xfa, 0x04, 0xfc, 0x53, 0xfe, 0x12, 0x03, 0x3d, 0x07, 0x49, 0x0a, 0x64, 0x0e, 0x52, 0x12, + 0xd5, 0x17, 0xd2, 0x1c, 0x05, 0x1d, 0xe4, 0x1a, 0xc1, 0x19, 0xeb, 0x17, 0x7c, 0x16, 0xd1, 0x13, + 0x97, 0x0f, 0x41, 0x0a, 0x5d, 0x04, 0xa9, 0xff, 0xea, 0xf9, 0x5d, 0xf5, 0xaf, 0xf3, 0xe4, 0xf1, + 0xc8, 0xef, 0x7b, 0xed, 0xa2, 0xea, 0xad, 0xe9, 0xb8, 0xe9, 0xab, 0xe9, 0xce, 0xea, 0x3b, 0xed, + 0x4a, 0xf0, 0xda, 0xf2, 0x33, 0xf6, 0x9e, 0xfa, 0x68, 0xfe, 0x9a, 0x03, 0x10, 0x08, 0xc9, 0x08, + 0xc2, 0x08, 0xa7, 0x08, 0x3b, 0x09, 0x02, 0x0a, 0x90, 0x08, 0x18, 0x06, 0x21, 0x02, 0x99, 0xfd, + 0xe3, 0xf8, 0x53, 0xf3, 0x67, 0xef, 0xd4, 0xed, 0xe2, 0xeb, 0x13, 0xeb, 0xba, 0xe9, 0x4d, 0xe9, + 0xef, 0xeb, 0xd2, 0xed, 0x3f, 0xef, 0x7a, 0xf1, 0x90, 0xf6, 0xa3, 0xfb, 0x71, 0xff, 0x48, 0x04, + 0xc5, 0x08, 0xe2, 0x0d, 0x13, 0x14, 0x70, 0x18, 0x57, 0x18, 0x2d, 0x18, 0xe1, 0x17, 0x44, 0x18, + 0x0d, 0x18, 0x10, 0x14, 0xd6, 0x0f, 0xbd, 0x09, 0xc8, 0x04, 0xae, 0xff, 0x96, 0xfa, 0xa6, 0xf8, + 0xad, 0xf6, 0x88, 0xf5, 0x11, 0xf4, 0x5b, 0xf1, 0x7e, 0xf0, 0x00, 0xf0, 0x87, 0xef, 0x24, 0xef, + 0xbc, 0xef, 0x7a, 0xf3, 0x75, 0xf6, 0x3b, 0xf9, 0x3e, 0xfc, 0xa7, 0xff, 0xa9, 0x04, 0x7d, 0x0a, + 0xbc, 0x0c, 0x72, 0x0b, 0x73, 0x0a, 0xa5, 0x09, 0x4b, 0x09, 0xde, 0x07, 0x13, 0x05, 0x26, 0x01, + 0x72, 0xfc, 0x1d, 0xf8, 0x25, 0xf3, 0x75, 0xee, 0x96, 0xec, 0x79, 0xea, 0x3e, 0xe9, 0x62, 0xe8, + 0x4c, 0xe6, 0x34, 0xe8, 0xc3, 0xea, 0xe1, 0xed, 0x12, 0xf1, 0x4f, 0xf5, 0xb5, 0xfb, 0xda, 0x00, + 0x54, 0x06, 0x0c, 0x0b, 0x5a, 0x0f, 0x9b, 0x15, 0x8a, 0x1a, 0x1f, 0x1c, 0x88, 0x1b, 0xbc, 0x1b, + 0xc7, 0x1c, 0x11, 0x1d, 0x47, 0x1c, 0x9c, 0x19, 0xf3, 0x15, 0xdf, 0x11, 0x25, 0x0d, 0xeb, 0x07, + 0x8c, 0x04, 0x4c, 0x03, 0x68, 0x02, 0x45, 0x02, 0x24, 0x01, 0x0b, 0x00, 0x0e, 0x00, 0x8b, 0x00, + 0xea, 0x00, 0xb9, 0x00, 0xa1, 0x02, 0xfa, 0x04, 0xa9, 0x06, 0x1f, 0x09, 0x84, 0x0b, 0x53, 0x0e, + 0xca, 0x12, 0x55, 0x15, 0x3e, 0x14, 0x5f, 0x11, 0x8f, 0x0f, 0x4a, 0x0f, 0xa1, 0x0d, 0xaa, 0x0a, + 0xfc, 0x05, 0xa9, 0x00, 0xfe, 0xfa, 0x53, 0xf5, 0x9d, 0xef, 0x97, 0xeb, 0x68, 0xe9, 0x1d, 0xe8, + 0x8e, 0xe7, 0x15, 0xe5, 0xfd, 0xe3, 0xb2, 0xe4, 0xfc, 0xe4, 0xb2, 0xe5, 0x9e, 0xe7, 0x2f, 0xed, + 0x8b, 0xf2, 0xcd, 0xf6, 0x50, 0xfb, 0xa7, 0xfe, 0x90, 0x03, 0x38, 0x09, 0xa7, 0x0b, 0x11, 0x0b, + 0x0c, 0x0a, 0xbd, 0x09, 0x5b, 0x0a, 0x15, 0x0a, 0x1c, 0x08, 0xf7, 0x04, 0xc7, 0x00, 0xaa, 0xfc, + 0x90, 0xf8, 0x18, 0xf4, 0xb3, 0xf1, 0xac, 0xef, 0x18, 0xee, 0xad, 0xec, 0x7d, 0xea, 0x06, 0xea, + 0x8a, 0xeb, 0x9d, 0xed, 0xc1, 0xef, 0x03, 0xf3, 0xd7, 0xf7, 0x5b, 0xfc, 0xfd, 0xff, 0xb9, 0x03, + 0x5d, 0x07, 0x09, 0x0d, 0xcd, 0x12, 0xe8, 0x14, 0x69, 0x15, 0xe2, 0x14, 0xc6, 0x14, 0xa3, 0x14, + 0x4b, 0x13, 0x53, 0x11, 0x5e, 0x0c, 0xd5, 0x06, 0x3e, 0x01, 0x2f, 0xfb, 0x73, 0xf6, 0x7c, 0xf3, + 0x9d, 0xf1, 0xbe, 0xef, 0xf7, 0xec, 0x6e, 0xea, 0x46, 0xea, 0xf2, 0xeb, 0x2b, 0xed, 0x03, 0xee, + 0x73, 0xf1, 0xb7, 0xf6, 0x7b, 0xfb, 0x77, 0x00, 0x95, 0x04, 0xa2, 0x08, 0xe2, 0x0e, 0x39, 0x14, + 0x38, 0x16, 0x06, 0x16, 0xc1, 0x14, 0x50, 0x14, 0x7f, 0x13, 0x6a, 0x11, 0x4c, 0x0e, 0x6d, 0x09, + 0xee, 0x03, 0x97, 0xfe, 0x4a, 0xf9, 0xaa, 0xf5, 0x86, 0xf2, 0x48, 0xf0, 0x11, 0xef, 0x72, 0xec, + 0xf3, 0xea, 0x0e, 0xeb, 0x36, 0xec, 0x07, 0xed, 0xf7, 0xee, 0xc6, 0xf3, 0x1f, 0xf9, 0xca, 0xfd, + 0x51, 0x02, 0x7c, 0x07, 0x28, 0x0d, 0x98, 0x13, 0x78, 0x17, 0xd4, 0x17, 0x16, 0x17, 0x80, 0x16, + 0xc9, 0x17, 0x2f, 0x18, 0xe1, 0x16, 0x18, 0x14, 0x6a, 0x0f, 0x23, 0x0b, 0x60, 0x06, 0x3e, 0x00, + 0xb9, 0xfb, 0x87, 0xf8, 0x6a, 0xf6, 0x5d, 0xf4, 0x01, 0xf2, 0xd3, 0xf0, 0x9a, 0xf1, 0xb4, 0xf2, + 0x45, 0xf3, 0xd9, 0xf5, 0xfc, 0xf9, 0xa4, 0xfd, 0xc7, 0x00, 0xe8, 0x03, 0xf1, 0x06, 0xe2, 0x0b, + 0x3c, 0x11, 0x41, 0x14, 0xa4, 0x14, 0xb1, 0x13, 0xbb, 0x12, 0x86, 0x12, 0xb8, 0x11, 0x81, 0x0f, + 0x69, 0x0b, 0x1a, 0x06, 0xc1, 0x01, 0xeb, 0xfb, 0xbd, 0xf6, 0x42, 0xf3, 0x9c, 0xf0, 0x32, 0xf0, + 0x6e, 0xee, 0xd0, 0xec, 0x66, 0xec, 0x7d, 0xec, 0x1a, 0xed, 0x00, 0xed, 0x69, 0xef, 0x7a, 0xf3, + 0x5f, 0xf7, 0xfa, 0xfb, 0x87, 0xff, 0xe2, 0x02, 0x10, 0x08, 0x4d, 0x0d, 0x32, 0x10, 0x32, 0x10, + 0x73, 0x0f, 0x6f, 0x0f, 0xed, 0x0f, 0xaa, 0x0f, 0x62, 0x0e, 0xc8, 0x0a, 0x1b, 0x07, 0x52, 0x03, + 0x10, 0xfe, 0x13, 0xfa, 0x99, 0xf6, 0x18, 0xf4, 0xa1, 0xf1, 0xe4, 0xed, 0xf7, 0xea, 0x40, 0xea, + 0x83, 0xea, 0xbd, 0xea, 0x9a, 0xeb, 0x6e, 0xef, 0x3f, 0xf4, 0x3d, 0xf8, 0xc9, 0xfc, 0x72, 0x00, + 0x68, 0x04, 0xc6, 0x09, 0x76, 0x0e, 0x48, 0x10, 0x36, 0x0f, 0x42, 0x0e, 0x3a, 0x0e, 0x2d, 0x0e, + 0x48, 0x0d, 0x46, 0x0b, 0xbc, 0x07, 0x21, 0x03, 0x57, 0xfd, 0x4b, 0xf7, 0x24, 0xf3, 0xdb, 0xef, + 0x73, 0xee, 0x18, 0xee, 0x1e, 0xed, 0x47, 0xec, 0xfc, 0xeb, 0x0b, 0xec, 0x7f, 0xec, 0x1b, 0xee, + 0x4b, 0xf2, 0x72, 0xf6, 0xa1, 0xfa, 0x04, 0xff, 0x90, 0x02, 0xa2, 0x06, 0x06, 0x0c, 0x3c, 0x10, + 0xb3, 0x11, 0xa9, 0x11, 0xdc, 0x11, 0x2b, 0x13, 0xe1, 0x12, 0x67, 0x11, 0xab, 0x0d, 0x01, 0x09, + 0xe3, 0x04, 0xb9, 0xff, 0xae, 0xfa, 0xfb, 0xf6, 0x87, 0xf4, 0x90, 0xf2, 0x07, 0xf0, 0x40, 0xed, + 0x9d, 0xeb, 0x41, 0xeb, 0xe6, 0xeb, 0xca, 0xec, 0x8a, 0xef, 0xdb, 0xf4, 0x5b, 0xfa, 0x1b, 0x00, + 0xa6, 0x05, 0x33, 0x0a, 0x64, 0x10, 0x98, 0x16, 0xd8, 0x19, 0x2f, 0x1a, 0x61, 0x18, 0x1f, 0x17, + 0xa6, 0x16, 0xa9, 0x16, 0x9a, 0x15, 0x2a, 0x12, 0xd5, 0x0d, 0xd7, 0x08, 0xa1, 0x03, 0x5a, 0xff, + 0xa4, 0xfb, 0x21, 0xf9, 0xd2, 0xf7, 0x75, 0xf6, 0x1f, 0xf5, 0x27, 0xf5, 0x28, 0xf6, 0xb7, 0xf7, + 0xda, 0xf8, 0x4d, 0xfc, 0x3b, 0x01, 0x85, 0x05, 0x68, 0x09, 0x6e, 0x0c, 0x70, 0x0f, 0x04, 0x14, + 0xb2, 0x18, 0xab, 0x1a, 0x11, 0x1a, 0x8f, 0x18, 0x1d, 0x18, 0x4f, 0x17, 0xfe, 0x15, 0x98, 0x13, + 0x63, 0x0f, 0x0f, 0x0b, 0xde, 0x05, 0x2e, 0x00, 0x98, 0xfb, 0xe6, 0xf6, 0x3c, 0xf3, 0x11, 0xf0, + 0x56, 0xed, 0x75, 0xeb, 0x9e, 0xea, 0xff, 0xeb, 0x53, 0xec, 0xb1, 0xec, 0x7d, 0xef, 0xaa, 0xf3, + 0xc8, 0xf7, 0x67, 0xfc, 0x18, 0x01, 0x7e, 0x05, 0xc2, 0x0a, 0x61, 0x0e, 0x00, 0x0f, 0xd2, 0x0d, + 0xc7, 0x0b, 0x89, 0x0a, 0x3c, 0x09, 0x5c, 0x07, 0xed, 0x03, 0x0e, 0xff, 0x06, 0xfa, 0xa8, 0xf4, + 0xc7, 0xef, 0xd3, 0xeb, 0xcc, 0xe8, 0x2b, 0xe7, 0x0e, 0xe6, 0xc4, 0xe3, 0x91, 0xe1, 0xac, 0xe0, + 0x1a, 0xe1, 0x63, 0xe1, 0xdc, 0xe3, 0xec, 0xe8, 0x3f, 0xee, 0xf8, 0xf3, 0x24, 0xf9, 0xc8, 0xfd, + 0x57, 0x03, 0x4a, 0x0a, 0xed, 0x0e, 0xfb, 0x10, 0xa8, 0x11, 0xbc, 0x11, 0xd3, 0x12, 0x7d, 0x13, + 0x72, 0x13, 0x0b, 0x11, 0x9e, 0x0d, 0x85, 0x0a, 0x1c, 0x06, 0x59, 0x01, 0x98, 0xfc, 0x0a, 0xf9, + 0x6c, 0xf6, 0x36, 0xf4, 0x83, 0xf2, 0xbc, 0xf1, 0x57, 0xf2, 0x4e, 0xf2, 0x7e, 0xf1, 0xaf, 0xf3, + 0x30, 0xf8, 0x26, 0xfd, 0x28, 0x02, 0x06, 0x07, 0xa2, 0x0b, 0x67, 0x11, 0xc1, 0x16, 0x5a, 0x19, + 0xfc, 0x19, 0xe8, 0x18, 0x55, 0x18, 0xfb, 0x17, 0x06, 0x17, 0x08, 0x15, 0xf1, 0x0f, 0x10, 0x0a, + 0x00, 0x04, 0x8b, 0xfd, 0xfe, 0xf7, 0xf1, 0xf2, 0xbc, 0xee, 0x20, 0xec, 0x74, 0xe9, 0x41, 0xe6, + 0x42, 0xe4, 0x32, 0xe4, 0xe8, 0xe3, 0x9a, 0xe3, 0x83, 0xe6, 0x7c, 0xea, 0x8a, 0xee, 0x88, 0xf3, + 0x90, 0xf8, 0x9f, 0xfe, 0xee, 0x05, 0xbf, 0x0c, 0x3e, 0x11, 0x93, 0x12, 0x43, 0x12, 0x66, 0x12, + 0x24, 0x13, 0x5c, 0x13, 0x0c, 0x13, 0x1d, 0x11, 0x00, 0x0f, 0xf0, 0x0b, 0x13, 0x07, 0x44, 0x03, + 0x4e, 0x00, 0xd9, 0xfd, 0x1a, 0xfc, 0x0c, 0xfa, 0x63, 0xf8, 0xaa, 0xf7, 0x7f, 0xf8, 0xd1, 0xf7, + 0xd8, 0xf8, 0x8d, 0xfc, 0x2a, 0x01, 0x33, 0x06, 0x38, 0x0b, 0x1f, 0x0f, 0xd2, 0x12, 0xb5, 0x17, + 0xec, 0x1a, 0x42, 0x1c, 0xab, 0x1a, 0x3b, 0x19, 0x54, 0x18, 0x43, 0x17, 0x44, 0x16, 0x75, 0x12, + 0x83, 0x0d, 0x7d, 0x08, 0xbf, 0x02, 0x07, 0xfd, 0x7b, 0xf8, 0x7d, 0xf4, 0xc8, 0xf1, 0xaf, 0xee, + 0x7a, 0xeb, 0x58, 0xe9, 0x9c, 0xe8, 0x1e, 0xe8, 0x6b, 0xe7, 0x90, 0xe8, 0x85, 0xeb, 0x02, 0xee, + 0x22, 0xf1, 0xca, 0xf4, 0xf4, 0xf7, 0x5d, 0xfd, 0x55, 0x03, 0x72, 0x07, 0x66, 0x08, 0xe3, 0x06, + 0x14, 0x06, 0x37, 0x06, 0xa9, 0x06, 0x07, 0x06, 0x52, 0x03, 0x45, 0x00, 0x95, 0xfd, 0x41, 0xf9, + 0x27, 0xf6, 0x31, 0xf4, 0x3f, 0xf2, 0xec, 0xf1, 0xcb, 0xf0, 0x93, 0xef, 0x5a, 0xee, 0x98, 0xee, + 0xbd, 0xee, 0xa2, 0xee, 0xf8, 0xf0, 0x46, 0xf5, 0xa3, 0xf9, 0x58, 0xfe, 0x7d, 0x03, 0xe6, 0x07, + 0xbf, 0x0d, 0x2b, 0x13, 0x46, 0x17, 0xf3, 0x17, 0xac, 0x16, 0xf0, 0x15, 0xac, 0x14, 0x09, 0x14, + 0x68, 0x12, 0xc5, 0x0e, 0x26, 0x0b, 0x68, 0x06, 0xb0, 0x01, 0x6c, 0xfd, 0xc0, 0xf8, 0x42, 0xf5, + 0xd0, 0xf2, 0xeb, 0xf0, 0xb6, 0xee, 0x31, 0xee, 0x42, 0xef, 0x2a, 0xef, 0xd3, 0xee, 0xe3, 0xef, + 0x0e, 0xf2, 0x4a, 0xf5, 0xa3, 0xf9, 0xbc, 0xfc, 0x77, 0x00, 0xc7, 0x05, 0x46, 0x0a, 0x4e, 0x0c, + 0x91, 0x0a, 0x74, 0x09, 0xc9, 0x08, 0x65, 0x08, 0xc9, 0x08, 0x8f, 0x06, 0x29, 0x03, 0xa2, 0xff, + 0x07, 0xfa, 0x9e, 0xf4, 0xb9, 0xf0, 0x56, 0xed, 0x05, 0xec, 0x11, 0xea, 0x8b, 0xe8, 0x09, 0xe7, + 0x17, 0xe7, 0xfa, 0xe7, 0x1b, 0xe8, 0x27, 0xea, 0xb7, 0xed, 0x57, 0xf2, 0xd0, 0xf7, 0xcb, 0xfd, + 0x34, 0x03, 0x58, 0x09, 0xef, 0x10, 0x92, 0x17, 0xd4, 0x1a, 0xd1, 0x1b, 0xd9, 0x1b, 0x23, 0x1b, + 0x62, 0x1a, 0xc6, 0x19, 0xc9, 0x16, 0x52, 0x13, 0xe1, 0x0f, 0xa6, 0x0b, 0xe8, 0x07, 0x97, 0x03, + 0x2c, 0x00, 0x74, 0xfe, 0x3d, 0xfd, 0x1d, 0xfc, 0xa3, 0xfa, 0x09, 0xfb, 0x08, 0xfb, 0x4b, 0xfb, + 0x2c, 0xfd, 0x31, 0x01, 0xe6, 0x04, 0x3a, 0x09, 0xdc, 0x0d, 0xd1, 0x11, 0x15, 0x17, 0xab, 0x1b, + 0xe2, 0x1e, 0x68, 0x1e, 0x7a, 0x1c, 0x2d, 0x1a, 0x16, 0x18, 0xc6, 0x16, 0x85, 0x13, 0xf0, 0x0e, + 0xdd, 0x09, 0x51, 0x04, 0xa7, 0xfe, 0xbf, 0xf9, 0x9d, 0xf4, 0xfe, 0xf0, 0x3b, 0xee, 0x2e, 0xeb, + 0x9f, 0xe7, 0xe8, 0xe4, 0xd8, 0xe4, 0x8f, 0xe4, 0x98, 0xe4, 0x4b, 0xe7, 0x85, 0xeb, 0x92, 0xef, + 0x93, 0xf4, 0xbe, 0xf8, 0x67, 0xfd, 0xc1, 0x03, 0x77, 0x0a, 0x38, 0x0f, 0xbd, 0x10, 0xfc, 0x0f, + 0x5f, 0x0e, 0x4d, 0x0d, 0xfd, 0x0c, 0x84, 0x0b, 0xb5, 0x07, 0xaf, 0x03, 0x0a, 0xfe, 0xf7, 0xf8, + 0xcc, 0xf3, 0x3c, 0xef, 0x15, 0xed, 0xc8, 0xeb, 0xa8, 0xeb, 0x1b, 0xea, 0x62, 0xea, 0x05, 0xeb, + 0x8a, 0xea, 0xc6, 0xea, 0x5e, 0xed, 0x68, 0xf0, 0xc3, 0xf4, 0x2d, 0xfa, 0x01, 0xfe, 0xca, 0x03, + 0x32, 0x0a, 0x73, 0x10, 0x23, 0x14, 0x0e, 0x15, 0x06, 0x15, 0x26, 0x14, 0x35, 0x14, 0x86, 0x13, + 0x39, 0x11, 0x50, 0x0e, 0xb0, 0x0a, 0x52, 0x06, 0xdf, 0x01, 0x7a, 0xfd, 0xad, 0xf9, 0xa7, 0xf6, + 0x48, 0xf4, 0x79, 0xf1, 0xd1, 0xee, 0xfd, 0xed, 0xb0, 0xed, 0x3d, 0xed, 0x9a, 0xee, 0xeb, 0xf1, + 0x0f, 0xf4, 0xca, 0xf7, 0x24, 0xfc, 0x67, 0x00, 0xe7, 0x05, 0x45, 0x0c, 0xd4, 0x11, 0x66, 0x14, + 0x4c, 0x14, 0x3e, 0x13, 0xef, 0x11, 0xb5, 0x11, 0x4f, 0x11, 0x68, 0x0e, 0x62, 0x0b, 0x21, 0x07, + 0x25, 0x02, 0xfe, 0xfc, 0x8d, 0xf7, 0x51, 0xf3, 0x85, 0xf0, 0x70, 0xef, 0xed, 0xec, 0xf0, 0xea, + 0xe4, 0xea, 0x5f, 0xea, 0xc6, 0xe9, 0xb4, 0xeb, 0x01, 0xef, 0xb1, 0xf1, 0x34, 0xf6, 0xea, 0xf9, + 0xd1, 0xfd, 0xb0, 0x03, 0x26, 0x0a, 0x79, 0x10, 0x7a, 0x13, 0x62, 0x14, 0x9f, 0x14, 0xd6, 0x14, + 0x8c, 0x15, 0x49, 0x14, 0x95, 0x11, 0xb1, 0x0e, 0xfc, 0x0a, 0xab, 0x07, 0x58, 0x04, 0x35, 0x01, + 0x3d, 0xfe, 0x06, 0xfc, 0x5f, 0xfa, 0x5a, 0xf8, 0xe4, 0xf7, 0x37, 0xf8, 0x8c, 0xf7, 0xbe, 0xf6, + 0xf8, 0xf8, 0xef, 0xfa, 0x61, 0xfe, 0x5d, 0x03, 0xd5, 0x06, 0xa8, 0x0b, 0x6c, 0x11, 0x7e, 0x17, + 0x13, 0x1b, 0xaa, 0x1a, 0xeb, 0x18, 0x2c, 0x16, 0x44, 0x14, 0xd4, 0x13, 0x2b, 0x11, 0x1d, 0x0d, + 0x97, 0x08, 0xce, 0x02, 0x6c, 0xfd, 0x79, 0xf7, 0x2b, 0xf3, 0xf6, 0xef, 0x92, 0xee, 0x6a, 0xed, + 0x44, 0xeb, 0xe8, 0xea, 0x42, 0xea, 0x14, 0xe9, 0x9c, 0xe9, 0xd9, 0xeb, 0x2b, 0xee, 0x07, 0xf3, + 0x66, 0xf7, 0x55, 0xfa, 0x3d, 0xfe, 0x2b, 0x03, 0x4b, 0x09, 0xbf, 0x0c, 0x60, 0x0d, 0x89, 0x0d, + 0x8b, 0x0c, 0xde, 0x0b, 0xde, 0x0a, 0x40, 0x08, 0xc8, 0x05, 0xd9, 0x01, 0xa9, 0xfd, 0x4c, 0xf9, + 0x42, 0xf5, 0x6b, 0xf2, 0x0e, 0xf0, 0xa5, 0xef, 0x75, 0xee, 0xa7, 0xed, 0xb6, 0xee, 0x3d, 0xef, + 0xd6, 0xee, 0xb7, 0xf0, 0xb8, 0xf2, 0x41, 0xf5, 0x85, 0xf9, 0x2f, 0xfd, 0x10, 0x01, 0x15, 0x05, + 0xab, 0x0a, 0x22, 0x10, 0x85, 0x12, 0xd3, 0x12, 0xf8, 0x11, 0x9b, 0x10, 0x37, 0x10, 0x6d, 0x0e, + 0x0c, 0x0b, 0x8e, 0x07, 0xd6, 0x02, 0x81, 0xfe, 0xda, 0xf9, 0x7a, 0xf5, 0xcd, 0xf1, 0x11, 0xf0, + 0xe1, 0xee, 0x13, 0xed, 0x20, 0xec, 0x9d, 0xec, 0xaf, 0xec, 0x0c, 0xed, 0xe4, 0xef, 0xb5, 0xf2, + 0x24, 0xf7, 0x74, 0xfb, 0x87, 0xfe, 0x29, 0x02, 0x3b, 0x07, 0xd1, 0x0d, 0xf8, 0x12, 0x8d, 0x14, + 0xfd, 0x14, 0x5b, 0x13, 0xd3, 0x11, 0x40, 0x11, 0xed, 0x0e, 0x97, 0x0c, 0x15, 0x09, 0x47, 0x05, + 0x64, 0x01, 0x81, 0xfc, 0x0d, 0xf8, 0xbf, 0xf3, 0xbd, 0xf1, 0xeb, 0xef, 0xe7, 0xed, 0x79, 0xed, + 0x71, 0xed, 0x73, 0xec, 0x2c, 0xed, 0x31, 0xef, 0x5d, 0xf1, 0x39, 0xf6, 0x6d, 0xfa, 0x68, 0xfe, + 0xbc, 0x02, 0x6f, 0x08, 0x6a, 0x0f, 0x5e, 0x13, 0xec, 0x15, 0x60, 0x16, 0x35, 0x15, 0x90, 0x15, + 0x7b, 0x15, 0x77, 0x13, 0x9f, 0x10, 0x2e, 0x0c, 0x96, 0x07, 0xb1, 0x02, 0xe0, 0xfd, 0x98, 0xf9, + 0xff, 0xf6, 0xab, 0xf5, 0x6f, 0xf3, 0x7a, 0xf1, 0xa4, 0xf1, 0x70, 0xf2, 0x52, 0xf2, 0x63, 0xf4, + 0x74, 0xf6, 0xd4, 0xf9, 0xed, 0xfe, 0x8a, 0x03, 0xd5, 0x07, 0x6e, 0x0c, 0x49, 0x13, 0x3a, 0x1a, + 0xd2, 0x1d, 0x71, 0x1f, 0xb0, 0x1e, 0xe7, 0x1c, 0xb8, 0x1c, 0xe8, 0x1a, 0x41, 0x18, 0xca, 0x14, + 0xd3, 0x0f, 0xfd, 0x0a, 0x64, 0x05, 0x75, 0x00, 0xd6, 0xfb, 0x44, 0xf9, 0xbb, 0xf7, 0x76, 0xf5, + 0xca, 0xf3, 0x4b, 0xf3, 0x62, 0xf2, 0x04, 0xf1, 0xa3, 0xf1, 0xd2, 0xf2, 0xd7, 0xf5, 0xe9, 0xf9, + 0x80, 0xfd, 0xae, 0x01, 0xba, 0x05, 0x4f, 0x0b, 0x19, 0x10, 0x4f, 0x12, 0x03, 0x13, 0x74, 0x11, + 0xac, 0x10, 0x6c, 0x10, 0xa5, 0x0d, 0xcd, 0x09, 0xe8, 0x04, 0x13, 0x00, 0x05, 0xfb, 0x35, 0xf5, + 0xff, 0xee, 0x58, 0xe9, 0x96, 0xe5, 0x0a, 0xe3, 0x70, 0xe0, 0x9a, 0xdf, 0x95, 0xe0, 0x09, 0xe0, + 0xf4, 0xe0, 0x24, 0xe3, 0x42, 0xe5, 0xec, 0xe8, 0xa3, 0xec, 0xf5, 0xef, 0x32, 0xf3, 0xc0, 0xf8, + 0xc9, 0xff, 0xcc, 0x04, 0x0e, 0x08, 0xaf, 0x09, 0x9b, 0x09, 0x97, 0x0a, 0xbb, 0x0b, 0xe8, 0x0a, + 0x82, 0x09, 0xad, 0x06, 0xf3, 0x03, 0xc4, 0x00, 0xfc, 0xfc, 0x1c, 0xf9, 0x5f, 0xf6, 0x85, 0xf5, + 0x74, 0xf4, 0x0a, 0xf3, 0x55, 0xf3, 0x7e, 0xf3, 0xa7, 0xf2, 0xfe, 0xf3, 0x46, 0xf5, 0x10, 0xf8, + 0xeb, 0xfc, 0xc0, 0x01, 0xfa, 0x05, 0xb7, 0x09, 0x87, 0x0e, 0xa4, 0x14, 0xc4, 0x18, 0x68, 0x1b, + 0x75, 0x1b, 0x9f, 0x1a, 0x78, 0x1b, 0x3a, 0x1a, 0xc1, 0x17, 0xd9, 0x13, 0x9f, 0x0f, 0x4a, 0x0b, + 0x4a, 0x06, 0x7a, 0x01, 0x27, 0xfc, 0xc7, 0xf7, 0x8f, 0xf4, 0x55, 0xf1, 0x4b, 0xee, 0xff, 0xed, + 0x68, 0xec, 0xb8, 0xea, 0xf4, 0xea, 0x10, 0xeb, 0x6b, 0xed, 0x87, 0xf0, 0xa1, 0xf3, 0x29, 0xf6, + 0x11, 0xf9, 0x71, 0xfe, 0x6b, 0x03, 0x92, 0x06, 0x78, 0x08, 0x73, 0x08, 0x0b, 0x09, 0x99, 0x0a, + 0x40, 0x0a, 0x4f, 0x09, 0x90, 0x07, 0x1a, 0x05, 0xf1, 0x01, 0xbe, 0xfe, 0x2f, 0xfb, 0x54, 0xf8, + 0x0c, 0xf7, 0xab, 0xf6, 0x89, 0xf5, 0x16, 0xf5, 0x09, 0xf6, 0x9d, 0xf5, 0x0c, 0xf7, 0x7b, 0xf9, + 0xd6, 0xfb, 0x81, 0xff, 0x8c, 0x03, 0xb4, 0x07, 0x49, 0x0b, 0x89, 0x0f, 0x1b, 0x16, 0xd6, 0x1b, + 0xb5, 0x1f, 0xfb, 0x20, 0x99, 0x1f, 0x21, 0x1f, 0xc3, 0x1d, 0x8d, 0x1b, 0xa1, 0x17, 0x2b, 0x13, + 0xa2, 0x0e, 0x71, 0x09, 0xa0, 0x03, 0x6f, 0xfd, 0xbf, 0xf8, 0x64, 0xf5, 0xe3, 0xf2, 0x55, 0xf0, + 0x0d, 0xf0, 0xf2, 0xef, 0xbd, 0xee, 0x9e, 0xef, 0x99, 0xef, 0xa8, 0xf0, 0x73, 0xf3, 0x7a, 0xf6, + 0x6c, 0xf9, 0xae, 0xfb, 0x90, 0x00, 0x4b, 0x06, 0x9b, 0x09, 0xfa, 0x0b, 0xa8, 0x0b, 0x85, 0x0a, + 0xb3, 0x0a, 0x4e, 0x0a, 0xf1, 0x08, 0x22, 0x06, 0x2d, 0x02, 0xcb, 0xfd, 0xb7, 0xf9, 0x8f, 0xf5, + 0xd6, 0xf1, 0x9b, 0xee, 0x5f, 0xed, 0xc6, 0xeb, 0xa6, 0xe9, 0x62, 0xea, 0x5d, 0xea, 0x75, 0xeb, + 0xe3, 0xed, 0x13, 0xf0, 0x30, 0xf4, 0xd7, 0xf8, 0x04, 0xfd, 0x8c, 0x00, 0xcb, 0x03, 0x55, 0x09, + 0x5f, 0x0f, 0x3a, 0x13, 0x3f, 0x15, 0x49, 0x14, 0xaf, 0x13, 0x68, 0x14, 0xab, 0x13, 0x35, 0x12, + 0x55, 0x0f, 0x7d, 0x0b, 0x1b, 0x07, 0xa7, 0x02, 0x97, 0xfd, 0x8a, 0xf8, 0xfc, 0xf4, 0xbb, 0xf2, + 0x38, 0xf0, 0xce, 0xee, 0x41, 0xef, 0xa6, 0xee, 0x02, 0xef, 0xbd, 0xef, 0xbe, 0xf0, 0x02, 0xf4, + 0xb3, 0xf7, 0x81, 0xfb, 0x62, 0xfe, 0xf1, 0x01, 0xfd, 0x06, 0xb5, 0x0a, 0xd2, 0x0d, 0x10, 0x0f, + 0xab, 0x0e, 0xf6, 0x0e, 0xe0, 0x0e, 0x7b, 0x0d, 0xb4, 0x0a, 0xd0, 0x06, 0x60, 0x02, 0x28, 0xfe, + 0x2d, 0xfa, 0x16, 0xf6, 0x5e, 0xf2, 0x84, 0xf0, 0xb3, 0xee, 0x72, 0xeb, 0xee, 0xea, 0x67, 0xea, + 0xcc, 0xe9, 0x04, 0xeb, 0xf5, 0xeb, 0xe6, 0xed, 0x43, 0xf1, 0xad, 0xf5, 0xcc, 0xf9, 0x3c, 0xfd, + 0x9f, 0x02, 0x20, 0x09, 0x89, 0x0e, 0x90, 0x12, 0xcf, 0x13, 0x2f, 0x13, 0x3d, 0x14, 0xe7, 0x14, + 0xe0, 0x14, 0xd3, 0x13, 0x54, 0x11, 0xcb, 0x0e, 0xca, 0x0b, 0xc8, 0x07, 0x01, 0x03, 0x04, 0xff, + 0x17, 0xfd, 0x93, 0xfa, 0x3f, 0xf8, 0x67, 0xf8, 0xbd, 0xf7, 0x34, 0xf7, 0xf5, 0xf7, 0xd5, 0xf8, + 0x77, 0xfb, 0x24, 0xff, 0xc3, 0x02, 0xd6, 0x05, 0xbd, 0x08, 0xb5, 0x0d, 0x6a, 0x12, 0xe1, 0x16, + 0x06, 0x1a, 0xf9, 0x19, 0xf6, 0x19, 0x39, 0x1a, 0xc2, 0x19, 0x02, 0x18, 0xed, 0x14, 0x98, 0x10, + 0xa0, 0x0b, 0xf4, 0x06, 0xca, 0x01, 0xfb, 0xfb, 0x4c, 0xf7, 0xf7, 0xf4, 0x2c, 0xf1, 0x97, 0xee, + 0x20, 0xee, 0x87, 0xec, 0x77, 0xec, 0x5d, 0xec, 0xf6, 0xec, 0x67, 0xee, 0x09, 0xf1, 0x6d, 0xf4, + 0x57, 0xf6, 0x48, 0xf9, 0x0c, 0xfe, 0xe5, 0x02, 0x84, 0x07, 0x74, 0x09, 0x2b, 0x09, 0xb1, 0x09, + 0x74, 0x0a, 0x8e, 0x0a, 0xa4, 0x09, 0x7b, 0x07, 0xd7, 0x04, 0x1e, 0x01, 0xa6, 0xfc, 0x7c, 0xf8, + 0x2c, 0xf4, 0x62, 0xf2, 0x88, 0xf0, 0x08, 0xed, 0xe3, 0xeb, 0xec, 0xea, 0x20, 0xea, 0x30, 0xeb, + 0xc5, 0xec, 0x6b, 0xef, 0x42, 0xf3, 0xd3, 0xf7, 0xb0, 0xfb, 0xe1, 0xfd, 0xdb, 0x01, 0xcd, 0x06, + 0x13, 0x0b, 0x28, 0x0f, 0x1f, 0x10, 0xd7, 0x0f, 0x0e, 0x10, 0x5c, 0x10, 0x31, 0x10, 0xf5, 0x0e, + 0x4a, 0x0d, 0x69, 0x0a, 0x75, 0x07, 0xa7, 0x03, 0x04, 0xff, 0xfd, 0xfa, 0xd1, 0xf8, 0x06, 0xf6, + 0x4c, 0xf3, 0x1d, 0xf3, 0xb6, 0xf1, 0xb8, 0xf0, 0x62, 0xf1, 0x97, 0xf1, 0xe3, 0xf2, 0x1f, 0xf5, + 0x9d, 0xf8, 0x44, 0xfb, 0x94, 0xfd, 0x87, 0x01, 0x01, 0x06, 0x5e, 0x0a, 0xae, 0x0c, 0x0a, 0x0c, + 0x4c, 0x0b, 0xc0, 0x0b, 0x43, 0x0c, 0xd7, 0x0b, 0x3f, 0x0a, 0x9e, 0x07, 0x3b, 0x04, 0x55, 0x00, + 0x63, 0xfc, 0x8a, 0xf7, 0xff, 0xf3, 0x04, 0xf3, 0xca, 0xf0, 0x3c, 0xef, 0xde, 0xee, 0xf1, 0xed, + 0x00, 0xee, 0xa1, 0xee, 0xaa, 0xef, 0xe6, 0xf1, 0xfb, 0xf4, 0x15, 0xf8, 0x59, 0xfa, 0x36, 0xfd, + 0xff, 0x01, 0x21, 0x07, 0xcf, 0x0b, 0x5e, 0x0e, 0x5c, 0x0e, 0xf2, 0x0e, 0xd0, 0x0f, 0x6c, 0x10, + 0x2f, 0x10, 0x6f, 0x0f, 0xd1, 0x0d, 0x5b, 0x0b, 0xf3, 0x09, 0x87, 0x07, 0x59, 0x04, 0x0c, 0x03, + 0x3d, 0x02, 0x2b, 0x00, 0x91, 0xff, 0xc0, 0xfe, 0xd3, 0xfd, 0x87, 0xfe, 0x7f, 0xfe, 0x62, 0xff, + 0x76, 0x01, 0x31, 0x05, 0xe7, 0x08, 0x62, 0x0a, 0xc0, 0x0c, 0xa7, 0x10, 0x74, 0x14, 0xce, 0x17, + 0x32, 0x18, 0x21, 0x17, 0x9b, 0x16, 0x0c, 0x16, 0xe7, 0x14, 0xea, 0x12, 0x88, 0x0f, 0x16, 0x0b, + 0x57, 0x06, 0xfb, 0x00, 0x9f, 0xfb, 0x39, 0xf6, 0x49, 0xf3, 0x62, 0xef, 0xf7, 0xeb, 0x03, 0xeb, + 0x8f, 0xe9, 0x88, 0xe9, 0xe3, 0xe9, 0xbe, 0xea, 0xb4, 0xec, 0x78, 0xef, 0xd6, 0xf2, 0x59, 0xf5, + 0x43, 0xf7, 0x31, 0xfa, 0x7c, 0xfe, 0xde, 0x02, 0x42, 0x06, 0x19, 0x07, 0xc9, 0x06, 0x1e, 0x07, + 0x65, 0x07, 0x3c, 0x07, 0x01, 0x06, 0xbe, 0x03, 0x0e, 0x01, 0x53, 0xfe, 0x5f, 0xfb, 0xc4, 0xf6, + 0xbd, 0xf3, 0xb0, 0xf2, 0xcd, 0xf0, 0xcd, 0xef, 0x63, 0xef, 0x53, 0xee, 0x8a, 0xee, 0x23, 0xef, + 0x86, 0xf0, 0x55, 0xf3, 0x5d, 0xf7, 0x63, 0xfc, 0xdc, 0xff, 0x3d, 0x03, 0xd8, 0x07, 0x71, 0x0c, + 0x3b, 0x11, 0x9b, 0x13, 0x32, 0x13, 0x15, 0x12, 0x7c, 0x11, 0x5c, 0x10, 0xea, 0x0e, 0xdb, 0x0c, + 0xa6, 0x09, 0x8e, 0x06, 0x4a, 0x03, 0x37, 0xff, 0x8e, 0xf9, 0x18, 0xf6, 0x7a, 0xf3, 0xfa, 0xef, + 0xe3, 0xee, 0xab, 0xed, 0xf9, 0xec, 0x21, 0xed, 0xe8, 0xec, 0x1a, 0xee, 0x68, 0xf0, 0xbd, 0xf4, + 0xe7, 0xf8, 0x9a, 0xfb, 0x3b, 0xff, 0x7a, 0x03, 0x26, 0x08, 0xe0, 0x0c, 0x25, 0x0f, 0xbe, 0x0e, + 0xbc, 0x0e, 0x95, 0x0e, 0x93, 0x0e, 0x64, 0x0e, 0x90, 0x0c, 0xca, 0x09, 0x73, 0x06, 0x0c, 0x03, + 0x06, 0xfe, 0x50, 0xf9, 0x10, 0xf7, 0x77, 0xf4, 0x22, 0xf2, 0x5d, 0xf1, 0xe2, 0xef, 0x32, 0xef, + 0xe1, 0xee, 0x9b, 0xee, 0xa6, 0xef, 0xab, 0xf1, 0xfb, 0xf5, 0xfd, 0xf8, 0xc0, 0xfa, 0x2b, 0xfe, + 0x94, 0x02, 0x67, 0x08, 0x16, 0x0d, 0x91, 0x0e, 0x5b, 0x0e, 0x28, 0x0e, 0x59, 0x0e, 0xe9, 0x0d, + 0x3d, 0x0d, 0x1e, 0x0b, 0x72, 0x08, 0xde, 0x05, 0xe1, 0x02, 0xce, 0xfe, 0x0b, 0xfc, 0xd3, 0xfa, + 0x03, 0xf8, 0x8d, 0xf6, 0xdf, 0xf5, 0xd1, 0xf4, 0x81, 0xf4, 0x29, 0xf4, 0x0f, 0xf5, 0x89, 0xf6, + 0xb6, 0xf9, 0x96, 0xfd, 0xdc, 0x00, 0xa0, 0x04, 0x1d, 0x09, 0x1c, 0x0e, 0xb6, 0x13, 0x98, 0x17, + 0x2c, 0x18, 0xa9, 0x18, 0x4d, 0x19, 0x0e, 0x1a, 0x6d, 0x1a, 0xd0, 0x19, 0x70, 0x18, 0x26, 0x16, + 0x86, 0x13, 0x7f, 0x0f, 0xf2, 0x09, 0x3f, 0x06, 0x4c, 0x03, 0xc0, 0xff, 0x0b, 0xfd, 0x0d, 0xfb, + 0x44, 0xf9, 0xd0, 0xf7, 0xe0, 0xf6, 0x84, 0xf6, 0xec, 0xf6, 0x28, 0xf9, 0x59, 0xfc, 0x2b, 0xfe, + 0x9e, 0x00, 0x95, 0x03, 0xb7, 0x06, 0xf0, 0x0a, 0x5f, 0x0c, 0x6e, 0x0b, 0x88, 0x0a, 0xe8, 0x09, + 0x9f, 0x09, 0xa8, 0x08, 0xcf, 0x06, 0xd4, 0x03, 0x74, 0x00, 0xe6, 0xfc, 0x75, 0xf8, 0x83, 0xf3, + 0xe2, 0xf0, 0xba, 0xed, 0xb3, 0xea, 0x6b, 0xe9, 0x71, 0xe7, 0x29, 0xe6, 0xd7, 0xe4, 0x70, 0xe4, + 0xa0, 0xe4, 0x2c, 0xe6, 0x02, 0xea, 0x73, 0xed, 0x5f, 0xf0, 0x07, 0xf4, 0x7e, 0xf8, 0x0d, 0xfe, + 0x60, 0x03, 0x92, 0x05, 0xf9, 0x05, 0x6c, 0x06, 0x72, 0x06, 0xd5, 0x06, 0x28, 0x06, 0xcd, 0x04, + 0x2d, 0x03, 0x8a, 0x01, 0x97, 0x00, 0x47, 0xfd, 0x78, 0xfa, 0x52, 0xf9, 0x43, 0xf7, 0x57, 0xf6, + 0xd8, 0xf5, 0x34, 0xf5, 0x80, 0xf4, 0x85, 0xf4, 0xc2, 0xf4, 0x40, 0xf5, 0x03, 0xf8, 0x6c, 0xfc, + 0x62, 0x00, 0x23, 0x03, 0xdd, 0x06, 0x05, 0x0b, 0x77, 0x10, 0x23, 0x14, 0x87, 0x14, 0x38, 0x14, + 0xf9, 0x13, 0x81, 0x13, 0x40, 0x12, 0xc9, 0x10, 0xe7, 0x0e, 0x4e, 0x0c, 0xd3, 0x09, 0x62, 0x06, + 0x1a, 0x01, 0x4e, 0xfd, 0x11, 0xfa, 0x46, 0xf6, 0x64, 0xf4, 0x04, 0xf3, 0x67, 0xf2, 0xb5, 0xf1, + 0x3a, 0xf1, 0xf9, 0xf0, 0xd3, 0xf0, 0xe9, 0xf2, 0x63, 0xf5, 0xfe, 0xf6, 0x42, 0xf9, 0x87, 0xfb, + 0x1e, 0xff, 0xcf, 0x03, 0xa9, 0x06, 0x26, 0x07, 0x12, 0x07, 0xcb, 0x06, 0x08, 0x06, 0x5b, 0x05, + 0x06, 0x04, 0x3d, 0x02, 0x0f, 0x00, 0xe5, 0xfe, 0xf9, 0xfb, 0xdb, 0xf7, 0xdd, 0xf6, 0x9e, 0xf5, + 0x24, 0xf5, 0xea, 0xf5, 0x59, 0xf6, 0x07, 0xf7, 0x8e, 0xf7, 0x21, 0xf8, 0x72, 0xf8, 0x24, 0xfa, + 0x08, 0xfe, 0x24, 0x02, 0x32, 0x05, 0x1d, 0x09, 0x9e, 0x0d, 0x5a, 0x13, 0xf7, 0x18, 0x2d, 0x1b, + 0xa6, 0x1b, 0x2a, 0x1b, 0x60, 0x1a, 0xb2, 0x19, 0x48, 0x18, 0x3b, 0x16, 0x23, 0x13, 0x90, 0x10, + 0x2b, 0x0e, 0xe4, 0x08, 0x10, 0x04, 0xb0, 0x00, 0xd6, 0xfc, 0x33, 0xfa, 0x36, 0xf8, 0x1f, 0xf6, + 0xda, 0xf4, 0x26, 0xf4, 0xc1, 0xf3, 0xc0, 0xf3, 0x3b, 0xf5, 0xc4, 0xf8, 0x7b, 0xfb, 0x3b, 0xfe, + 0x26, 0x01, 0xac, 0x04, 0xa0, 0x09, 0xaa, 0x0c, 0x9c, 0x0d, 0xd8, 0x0c, 0x01, 0x0c, 0xf7, 0x0b, + 0x2a, 0x0b, 0x9e, 0x09, 0x12, 0x07, 0xd1, 0x03, 0x31, 0x01, 0x07, 0xfe, 0x04, 0xf8, 0xed, 0xf3, + 0x30, 0xf1, 0xc9, 0xee, 0x5f, 0xed, 0xe4, 0xeb, 0x45, 0xeb, 0xca, 0xea, 0xe0, 0xea, 0xa9, 0xea, + 0xf0, 0xea, 0xd7, 0xed, 0xd4, 0xf1, 0xc5, 0xf4, 0x24, 0xf8, 0x5f, 0xfc, 0xc3, 0x01, 0xdd, 0x08, + 0x21, 0x0e, 0x37, 0x10, 0xc8, 0x10, 0xb2, 0x10, 0x6b, 0x10, 0x7e, 0x0f, 0x03, 0x0e, 0xa0, 0x0b, + 0x77, 0x08, 0x79, 0x06, 0x4f, 0x02, 0xa0, 0xfd, 0xa2, 0xfa, 0x5a, 0xf7, 0x9c, 0xf4, 0xcc, 0xf2, + 0xde, 0xf1, 0x6d, 0xf1, 0x17, 0xf1, 0xd4, 0xf0, 0x32, 0xf0, 0x7c, 0xf0, 0xc3, 0xf2, 0xf1, 0xf5, + 0x3b, 0xf9, 0x34, 0xfd, 0x2c, 0x01, 0xa2, 0x06, 0x72, 0x0c, 0xb9, 0x0f, 0x8d, 0x10, 0x17, 0x10, + 0x14, 0x10, 0x36, 0x10, 0xba, 0x0f, 0xfc, 0x0d, 0xea, 0x0a, 0x76, 0x08, 0xff, 0x06, 0x8a, 0x02, + 0x25, 0xfe, 0x10, 0xfb, 0x89, 0xf7, 0x18, 0xf5, 0x86, 0xf2, 0x01, 0xf1, 0x9f, 0xef, 0xc3, 0xee, + 0xbb, 0xee, 0x17, 0xee, 0xf6, 0xee, 0xa7, 0xf1, 0x2a, 0xf4, 0x7a, 0xf6, 0x4b, 0xf9, 0xfe, 0xfc, + 0x1d, 0x02, 0x6b, 0x07, 0x3c, 0x0a, 0x95, 0x0b, 0x31, 0x0c, 0xe6, 0x0c, 0x78, 0x0d, 0xa4, 0x0c, + 0x3d, 0x0b, 0x80, 0x08, 0x06, 0x07, 0xfa, 0x04, 0x77, 0x00, 0xaa, 0xfd, 0x58, 0xfb, 0x25, 0xf9, + 0x41, 0xf8, 0x96, 0xf7, 0xda, 0xf7, 0x0c, 0xf8, 0x96, 0xf8, 0x3a, 0xf9, 0x28, 0xf9, 0x5c, 0xfa, + 0x6b, 0xfd, 0x2a, 0x00, 0x83, 0x03, 0xb3, 0x06, 0xad, 0x0a, 0x9a, 0x10, 0x8e, 0x15, 0x33, 0x18, + 0xf0, 0x18, 0x02, 0x19, 0xfa, 0x18, 0x40, 0x18, 0x9c, 0x16, 0x45, 0x14, 0xc4, 0x11, 0xbb, 0x10, + 0xca, 0x0d, 0x39, 0x09, 0x11, 0x06, 0x55, 0x02, 0x2e, 0xff, 0x9b, 0xfc, 0xe7, 0xf9, 0x2b, 0xf8, + 0x25, 0xf6, 0xa2, 0xf4, 0xf5, 0xf2, 0xbe, 0xf1, 0xd1, 0xf2, 0x72, 0xf4, 0x11, 0xf6, 0xf8, 0xf7, + 0x7a, 0xfa, 0xdc, 0xfe, 0x40, 0x04, 0xd7, 0x07, 0x43, 0x08, 0x8f, 0x07, 0x30, 0x06, 0x36, 0x05, + 0xea, 0x03, 0xcd, 0x02, 0xad, 0x00, 0x75, 0xfe, 0x4e, 0xfd, 0x60, 0xf9, 0xe0, 0xf5, 0x1e, 0xf3, + 0x12, 0xf0, 0x63, 0xee, 0x50, 0xed, 0x49, 0xed, 0xb4, 0xec, 0xc4, 0xec, 0x53, 0xed, 0x80, 0xed, + 0x68, 0xee, 0xd7, 0xf0, 0x9a, 0xf3, 0x8a, 0xf6, 0x4b, 0xf9, 0x44, 0xfc, 0xf2, 0x01, 0xdc, 0x07, + 0xf5, 0x0b, 0x46, 0x0e, 0xea, 0x0e, 0x72, 0x0f, 0xa8, 0x0f, 0xc5, 0x0e, 0x39, 0x0d, 0x41, 0x0a, + 0xa2, 0x08, 0x89, 0x06, 0xf6, 0x01, 0x7d, 0xfe, 0xef, 0xfb, 0xbe, 0xf9, 0x88, 0xf8, 0xa2, 0xf7, + 0x31, 0xf7, 0xa5, 0xf6, 0x73, 0xf6, 0x83, 0xf6, 0x31, 0xf5, 0x70, 0xf5, 0x78, 0xf7, 0x12, 0xf9, + 0x5f, 0xfb, 0xca, 0xfd, 0x68, 0x01, 0xe7, 0x06, 0x1f, 0x0c, 0x54, 0x0e, 0xdf, 0x0e, 0xd5, 0x0d, + 0x79, 0x0c, 0xcb, 0x0a, 0xf1, 0x08, 0xbe, 0x06, 0xc5, 0x02, 0x6e, 0x00, 0xbe, 0xfc, 0x20, 0xf8, + 0x21, 0xf5, 0x0b, 0xf2, 0x0a, 0xf0, 0x55, 0xee, 0xe9, 0xec, 0xad, 0xeb, 0x13, 0xeb, 0x5c, 0xeb, + 0x19, 0xec, 0xca, 0xec, 0x65, 0xef, 0xf3, 0xf2, 0xc6, 0xf5, 0xed, 0xf8, 0x2d, 0xfb, 0x3e, 0xff, + 0x3f, 0x05, 0x8b, 0x09, 0x58, 0x0c, 0x19, 0x0d, 0x6d, 0x0d, 0x26, 0x0e, 0xeb, 0x0d, 0xad, 0x0d, + 0x5a, 0x0b, 0x69, 0x09, 0xa7, 0x08, 0x4f, 0x05, 0xe2, 0x01, 0xfd, 0xfe, 0x84, 0xfc, 0xec, 0xfa, + 0x64, 0xfa, 0xa3, 0xfa, 0x87, 0xfb, 0xfa, 0xfc, 0xc5, 0xfe, 0x8a, 0xff, 0x54, 0x00, 0x6b, 0x03, + 0xde, 0x05, 0x38, 0x08, 0xe3, 0x0a, 0xac, 0x0d, 0x00, 0x13, 0xb3, 0x18, 0x94, 0x1c, 0x1a, 0x1e, + 0xe8, 0x1d, 0x71, 0x1d, 0x3d, 0x1c, 0x80, 0x1a, 0x18, 0x18, 0x3b, 0x13, 0xf9, 0x0f, 0x58, 0x0c, + 0x4c, 0x06, 0xba, 0x01, 0x5f, 0xfd, 0x93, 0xf9, 0x46, 0xf6, 0x87, 0xf3, 0x54, 0xf1, 0x3f, 0xef, + 0x40, 0xee, 0xa1, 0xed, 0xa0, 0xec, 0x11, 0xed, 0x25, 0xef, 0x6b, 0xf1, 0xe7, 0xf3, 0x8a, 0xf6, + 0xc9, 0xf9, 0x60, 0xff, 0xd2, 0x04, 0x6e, 0x08, 0xe4, 0x09, 0x4c, 0x09, 0xf8, 0x08, 0xe8, 0x07, + 0xe1, 0x06, 0x99, 0x04, 0x74, 0x01, 0x51, 0x00, 0xea, 0xfd, 0x06, 0xfa, 0x4f, 0xf6, 0x79, 0xf3, + 0x05, 0xf1, 0x40, 0xef, 0xfa, 0xed, 0x8e, 0xed, 0x95, 0xed, 0x0c, 0xee, 0x77, 0xee, 0x3e, 0xee, + 0xbe, 0xf0, 0xf5, 0xf3, 0x01, 0xf7, 0xee, 0xf9, 0x54, 0xfc, 0x4f, 0x00, 0x61, 0x06, 0x38, 0x0c, + 0x58, 0x10, 0x93, 0x12, 0x26, 0x14, 0x54, 0x15, 0x72, 0x15, 0x01, 0x15, 0x15, 0x12, 0x68, 0x0e, + 0x0c, 0x0c, 0xb7, 0x07, 0x82, 0x02, 0x21, 0xfe, 0xac, 0xf9, 0x5f, 0xf6, 0xe1, 0xf3, 0xfd, 0xf1, + 0x84, 0xf0, 0x65, 0xef, 0x89, 0xef, 0x46, 0xef, 0x47, 0xef, 0xee, 0xf0, 0xe4, 0xf2, 0xe0, 0xf4, + 0xca, 0xf6, 0xdc, 0xf8, 0x36, 0xfd, 0x90, 0x03, 0xd6, 0x08, 0x32, 0x0c, 0x72, 0x0d, 0x66, 0x0e, + 0xae, 0x0e, 0x31, 0x0e, 0x06, 0x0d, 0x15, 0x0a, 0x09, 0x09, 0x79, 0x07, 0x77, 0x03, 0x40, 0xff, + 0xc8, 0xfb, 0x1b, 0xf9, 0x0f, 0xf7, 0xa0, 0xf5, 0xce, 0xf4, 0x29, 0xf4, 0x37, 0xf3, 0xbd, 0xf2, + 0x49, 0xf1, 0x6f, 0xf1, 0xb5, 0xf3, 0x35, 0xf6, 0x0d, 0xf9, 0xb1, 0xfa, 0x42, 0xfd, 0xe0, 0x01, + 0x2b, 0x07, 0x7d, 0x0b, 0x45, 0x0d, 0xe0, 0x0d, 0x17, 0x0e, 0xb8, 0x0d, 0xce, 0x0d, 0x4a, 0x0c, + 0x8f, 0x09, 0x16, 0x08, 0xc4, 0x05, 0xa4, 0x01, 0x5f, 0xfe, 0x00, 0xfb, 0xc2, 0xf7, 0x63, 0xf5, + 0xe2, 0xf3, 0x96, 0xf3, 0x38, 0xf3, 0x6a, 0xf4, 0x9e, 0xf5, 0x37, 0xf6, 0x73, 0xf8, 0x29, 0xfb, + 0xf5, 0xfd, 0x45, 0x00, 0xc9, 0x01, 0x78, 0x04, 0x92, 0x09, 0x37, 0x0f, 0x6a, 0x13, 0x27, 0x15, + 0x1e, 0x16, 0xd7, 0x16, 0x64, 0x17, 0xe8, 0x17, 0x68, 0x15, 0x5b, 0x13, 0xf9, 0x11, 0x84, 0x0e, + 0x2a, 0x0b, 0xac, 0x07, 0xda, 0x04, 0x13, 0x03, 0xcc, 0x01, 0x95, 0x00, 0x0f, 0xff, 0x5a, 0xfe, + 0xce, 0xfd, 0x6b, 0xfc, 0x43, 0xfb, 0x0d, 0xfc, 0x86, 0xfd, 0x17, 0xff, 0x41, 0x00, 0xf3, 0x00, + 0xcd, 0x03, 0xa7, 0x08, 0x39, 0x0d, 0x0d, 0x10, 0xf4, 0x10, 0x1d, 0x11, 0xa9, 0x0f, 0x9c, 0x0e, + 0xd3, 0x0b, 0x00, 0x07, 0xd0, 0x03, 0xf3, 0x00, 0x1b, 0xfd, 0x21, 0xf9, 0x97, 0xf5, 0xfa, 0xf1, + 0x4f, 0xef, 0x55, 0xed, 0x92, 0xeb, 0xec, 0xe9, 0xb4, 0xe9, 0xdd, 0xea, 0x85, 0xea, 0x3e, 0xeb, + 0xc9, 0xec, 0x0f, 0xef, 0x2e, 0xf2, 0xf8, 0xf3, 0x8f, 0xf5, 0x4f, 0xf9, 0xd4, 0xfd, 0xb8, 0x01, + 0xa2, 0x03, 0x86, 0x04, 0x5f, 0x05, 0x8c, 0x05, 0x60, 0x06, 0x65, 0x05, 0x04, 0x03, 0x6b, 0x02, + 0x50, 0x00, 0x32, 0xfd, 0xdc, 0xf9, 0x25, 0xf6, 0x53, 0xf3, 0x11, 0xf1, 0x08, 0xf0, 0xe8, 0xef, + 0x72, 0xf0, 0xb6, 0xf1, 0xa3, 0xf2, 0xf8, 0xf2, 0x35, 0xf4, 0xc3, 0xf6, 0x65, 0xf9, 0x8d, 0xfc, + 0x1c, 0xfe, 0x61, 0x00, 0x3f, 0x05, 0xf3, 0x0a, 0x1f, 0x10, 0xc4, 0x12, 0xad, 0x14, 0x20, 0x15, + 0x5d, 0x15, 0x3d, 0x15, 0x11, 0x12, 0xab, 0x0e, 0x2b, 0x0c, 0x02, 0x09, 0xbd, 0x04, 0xb4, 0x00, + 0x6a, 0xfc, 0xd2, 0xf8, 0x9e, 0xf6, 0x2c, 0xf5, 0x0b, 0xf4, 0x87, 0xf3, 0x06, 0xf4, 0x43, 0xf3, + 0x75, 0xf2, 0xb5, 0xf3, 0x62, 0xf5, 0x4a, 0xf8, 0x2b, 0xfb, 0xf0, 0xfc, 0xad, 0xff, 0xbb, 0x03, + 0xa9, 0x07, 0xf7, 0x09, 0xbb, 0x0a, 0x40, 0x0b, 0xf2, 0x0a, 0xbe, 0x0a, 0xd5, 0x09, 0x62, 0x06, + 0x0c, 0x04, 0x5b, 0x02, 0x54, 0xff, 0xdb, 0xfb, 0x0a, 0xf8, 0xfa, 0xf4, 0xbe, 0xf2, 0xec, 0xf0, + 0xfb, 0xef, 0x1b, 0xef, 0x83, 0xef, 0xf0, 0xf0, 0xc2, 0xf1, 0x9e, 0xf3, 0x01, 0xf7, 0xfd, 0xfa, + 0x26, 0xff, 0xfb, 0x01, 0x27, 0x04, 0x48, 0x08, 0x46, 0x0d, 0xe6, 0x12, 0xbb, 0x16, 0x38, 0x19, + 0x1d, 0x1a, 0xca, 0x19, 0xbf, 0x1a, 0x93, 0x19, 0xbf, 0x16, 0xcb, 0x14, 0x2e, 0x12, 0x0b, 0x0e, + 0xf9, 0x08, 0x35, 0x04, 0xb3, 0xff, 0x75, 0xfc, 0x9c, 0xfa, 0x62, 0xf9, 0x0c, 0xf8, 0x18, 0xf8, + 0x18, 0xf8, 0x41, 0xf7, 0xda, 0xf7, 0x2a, 0xf9, 0xb3, 0xfb, 0x57, 0xfe, 0xe3, 0xff, 0xa6, 0x01, + 0x0b, 0x05, 0xc9, 0x09, 0xad, 0x0d, 0xc7, 0x0f, 0x52, 0x11, 0xa1, 0x11, 0x34, 0x12, 0x09, 0x12, + 0x54, 0x0e, 0x35, 0x0a, 0x40, 0x07, 0x61, 0x03, 0xf1, 0xfe, 0x78, 0xfa, 0x58, 0xf6, 0xf2, 0xf2, + 0xd3, 0xef, 0x1d, 0xee, 0x8f, 0xec, 0x68, 0xeb, 0x38, 0xeb, 0x6d, 0xea, 0x43, 0xea, 0x87, 0xeb, + 0xb3, 0xed, 0x9a, 0xf0, 0x51, 0xf3, 0x35, 0xf5, 0x36, 0xf8, 0x3b, 0xfc, 0xbc, 0x01, 0x16, 0x06, + 0xda, 0x07, 0x85, 0x09, 0xbc, 0x09, 0x6e, 0x0b, 0x2f, 0x0c, 0x97, 0x0a, 0xb2, 0x09, 0x7a, 0x08, + 0x3a, 0x06, 0x91, 0x02, 0x8b, 0xfe, 0x9d, 0xfa, 0xce, 0xf6, 0xfe, 0xf3, 0xf7, 0xf1, 0xcc, 0xef, + 0x22, 0xef, 0x96, 0xef, 0x51, 0xef, 0x4a, 0xf0, 0x4f, 0xf2, 0xf0, 0xf4, 0xac, 0xf8, 0xf1, 0xfa, + 0xa2, 0xfc, 0xfa, 0xfe, 0xbe, 0x02, 0x9e, 0x07, 0x91, 0x0a, 0x42, 0x0d, 0xb8, 0x0e, 0xef, 0x0f, + 0xd1, 0x11, 0x1b, 0x11, 0x8d, 0x0e, 0x60, 0x0c, 0x10, 0x0a, 0x7a, 0x06, 0xe9, 0x02, 0x69, 0xff, + 0xf5, 0xfb, 0x68, 0xf8, 0xb6, 0xf5, 0xef, 0xf3, 0xac, 0xf2, 0x27, 0xf3, 0x7c, 0xf3, 0x49, 0xf3, + 0xe0, 0xf2, 0x27, 0xf3, 0xbc, 0xf4, 0xdb, 0xf6, 0x4f, 0xf8, 0x20, 0xfa, 0x8f, 0xfd, 0x0f, 0x02, + 0x89, 0x06, 0xb6, 0x08, 0x20, 0x0a, 0x2b, 0x0a, 0x88, 0x0a, 0x43, 0x0b, 0x3d, 0x09, 0xbd, 0x06, + 0xde, 0x04, 0xb7, 0x02, 0x15, 0x00, 0xf0, 0xfc, 0xb3, 0xf9, 0x69, 0xf6, 0xc9, 0xf3, 0xc8, 0xf2, + 0x21, 0xf1, 0x5d, 0xf0, 0x21, 0xf1, 0xc2, 0xf1, 0xd0, 0xf2, 0x10, 0xf5, 0x8c, 0xf8, 0x4b, 0xfd, + 0xa9, 0x01, 0x2d, 0x04, 0x49, 0x07, 0x3a, 0x0b, 0x7f, 0x10, 0x10, 0x14, 0xd5, 0x15, 0x71, 0x17, + 0x12, 0x18, 0x44, 0x19, 0x87, 0x19, 0x8c, 0x17, 0xae, 0x15, 0x76, 0x14, 0xe1, 0x11, 0xd9, 0x0e, + 0x35, 0x0b, 0xae, 0x06, 0xff, 0x02, 0xbc, 0xff, 0x26, 0xfe, 0xc0, 0xfc, 0xf5, 0xfc, 0xbc, 0xfd, + 0x03, 0xfd, 0xad, 0xfc, 0x69, 0xfc, 0x15, 0xfd, 0xa2, 0xfe, 0x09, 0x00, 0x4e, 0x00, 0x52, 0x01, + 0xb4, 0x03, 0x1f, 0x07, 0xfc, 0x08, 0xef, 0x09, 0xf0, 0x09, 0x5d, 0x09, 0xf0, 0x09, 0xdb, 0x08, + 0xc8, 0x05, 0x9f, 0x02, 0xa9, 0xfe, 0xd6, 0xf9, 0x46, 0xf5, 0xce, 0xf0, 0xca, 0xec, 0x95, 0xe9, + 0x83, 0xe7, 0xfa, 0xe5, 0x7f, 0xe4, 0xf2, 0xe4, 0x09, 0xe6, 0xd8, 0xe6, 0x98, 0xe8, 0x6b, 0xeb, + 0xb1, 0xef, 0x97, 0xf4, 0xb4, 0xf7, 0x73, 0xfa, 0x32, 0xfe, 0xbe, 0x03, 0xe2, 0x08, 0x04, 0x0c, + 0x93, 0x0e, 0xa1, 0x0e, 0xf6, 0x0e, 0x00, 0x10, 0xf4, 0x0e, 0xcd, 0x0c, 0xd7, 0x0b, 0xf6, 0x0a, + 0xc4, 0x08, 0x26, 0x06, 0x5b, 0x02, 0xb5, 0xfe, 0x38, 0xfb, 0xfb, 0xf8, 0x0d, 0xf7, 0xb5, 0xf5, + 0x4b, 0xf6, 0x41, 0xf6, 0x6b, 0xf6, 0x4d, 0xf7, 0xb9, 0xf8, 0x19, 0xfc, 0x42, 0xff, 0x34, 0x01, + 0xce, 0x02, 0x45, 0x05, 0x13, 0x09, 0x0b, 0x0c, 0x1d, 0x0e, 0x0a, 0x0f, 0xce, 0x0e, 0x65, 0x0f, + 0xf8, 0x0f, 0xb2, 0x0d, 0xf7, 0x0a, 0xd2, 0x08, 0xa4, 0x05, 0x83, 0x01, 0x63, 0xfc, 0x8a, 0xf7, + 0x46, 0xf3, 0x3b, 0xf0, 0x13, 0xee, 0x58, 0xeb, 0x1f, 0xea, 0x18, 0xea, 0x27, 0xea, 0x99, 0xea, + 0xb5, 0xeb, 0xce, 0xed, 0x0e, 0xf1, 0xb3, 0xf3, 0xa2, 0xf5, 0x4b, 0xf8, 0xb9, 0xfc, 0xa6, 0x02, + 0xef, 0x06, 0x29, 0x0a, 0x64, 0x0b, 0x54, 0x0b, 0x2a, 0x0d, 0x6a, 0x0d, 0xfe, 0x0b, 0x88, 0x0a, + 0xea, 0x08, 0x68, 0x06, 0x6d, 0x03, 0x39, 0x00, 0x05, 0xfd, 0x10, 0xfa, 0x4c, 0xf8, 0x00, 0xf7, + 0xa7, 0xf5, 0xd9, 0xf5, 0x5b, 0xf6, 0x90, 0xf6, 0xd9, 0xf7, 0x97, 0xf9, 0x88, 0xfd, 0x60, 0x02, + 0x2f, 0x06, 0xcb, 0x09, 0x08, 0x0d, 0xd9, 0x11, 0xfe, 0x16, 0xb5, 0x1a, 0x2a, 0x1d, 0x62, 0x1d, + 0x6b, 0x1d, 0xe6, 0x1e, 0x13, 0x1e, 0x11, 0x1b, 0x5e, 0x18, 0xc7, 0x15, 0xae, 0x12, 0x6d, 0x0e, + 0xd2, 0x09, 0x0e, 0x05, 0xe0, 0xff, 0x5b, 0xfc, 0x5c, 0xf8, 0x15, 0xf5, 0x38, 0xf4, 0xad, 0xf3, + 0x6b, 0xf3, 0x80, 0xf3, 0x32, 0xf4, 0x1f, 0xf6, 0x64, 0xf8, 0xc6, 0xf9, 0xe2, 0xfa, 0x1e, 0xfd, + 0x1e, 0x01, 0x7e, 0x04, 0xd6, 0x06, 0x7f, 0x08, 0x01, 0x08, 0xc0, 0x08, 0xe1, 0x09, 0xe4, 0x08, + 0xa4, 0x07, 0x2d, 0x06, 0x72, 0x03, 0xbe, 0xff, 0x95, 0xfb, 0x34, 0xf7, 0x3b, 0xf3, 0x79, 0xf0, + 0x93, 0xee, 0x8a, 0xec, 0x54, 0xeb, 0xc5, 0xeb, 0xb1, 0xeb, 0x26, 0xec, 0xc0, 0xec, 0x2d, 0xee, + 0x68, 0xf1, 0x84, 0xf4, 0x93, 0xf7, 0x00, 0xfa, 0x98, 0xfd, 0x01, 0x03, 0x01, 0x08, 0xd8, 0x0b, + 0x4f, 0x0d, 0xa3, 0x0d, 0xd6, 0x0e, 0xfd, 0x0e, 0xf8, 0x0c, 0x96, 0x0b, 0xfb, 0x09, 0x21, 0x08, + 0x15, 0x06, 0xd1, 0x02, 0x7d, 0xff, 0x6a, 0xfb, 0x55, 0xf8, 0xbb, 0xf5, 0x2b, 0xf3, 0x1d, 0xf2, + 0x24, 0xf1, 0x79, 0xf0, 0x1d, 0xf0, 0x03, 0xf0, 0x14, 0xf2, 0x96, 0xf5, 0x98, 0xf8, 0xb6, 0xfa, + 0x9c, 0xfc, 0xa4, 0x00, 0x18, 0x05, 0x16, 0x08, 0xdf, 0x09, 0x0f, 0x0a, 0x84, 0x0a, 0x49, 0x0c, + 0x64, 0x0c, 0x38, 0x0b, 0x6d, 0x0a, 0xa6, 0x08, 0x43, 0x06, 0x7e, 0x03, 0x3b, 0x00, 0xd5, 0xfc, + 0x95, 0xf9, 0x6b, 0xf7, 0xa2, 0xf5, 0x34, 0xf4, 0xbf, 0xf3, 0x02, 0xf3, 0x7f, 0xf2, 0xcc, 0xf2, + 0xa2, 0xf3, 0x8c, 0xf6, 0x61, 0xf9, 0x14, 0xfb, 0xd9, 0xfb, 0x0a, 0xfd, 0x90, 0x00, 0x4a, 0x04, + 0x39, 0x08, 0xca, 0x0a, 0xee, 0x0a, 0xf4, 0x0b, 0xef, 0x0c, 0x04, 0x0c, 0xfa, 0x09, 0x89, 0x08, + 0x58, 0x06, 0x7a, 0x03, 0x10, 0x00, 0x25, 0xfc, 0x67, 0xf8, 0x22, 0xf5, 0x90, 0xf3, 0x5c, 0xf1, + 0x01, 0xf0, 0x24, 0xf0, 0x19, 0xf0, 0x87, 0xf0, 0xe7, 0xf0, 0xb1, 0xf2, 0x70, 0xf6, 0xbb, 0xfa, + 0x97, 0xfe, 0x87, 0x01, 0xd0, 0x05, 0x66, 0x0b, 0x14, 0x10, 0x24, 0x14, 0x00, 0x16, 0xb9, 0x15, + 0xf9, 0x15, 0xb8, 0x15, 0x0d, 0x14, 0x93, 0x12, 0xf6, 0x10, 0xc6, 0x0e, 0xfc, 0x0b, 0xfa, 0x08, + 0xbe, 0x05, 0x4c, 0x02, 0xc9, 0xff, 0x5a, 0xfd, 0x4d, 0xfa, 0x40, 0xf9, 0x43, 0xf9, 0x45, 0xf9, + 0x26, 0xfa, 0xa3, 0xfa, 0xa6, 0xfc, 0x03, 0x00, 0xac, 0x02, 0x7a, 0x04, 0x55, 0x05, 0x47, 0x08, + 0x5f, 0x0c, 0xd2, 0x0f, 0x5c, 0x12, 0xf2, 0x11, 0x5e, 0x11, 0xc9, 0x11, 0x60, 0x11, 0xfd, 0x0f, + 0x31, 0x0e, 0xf8, 0x0b, 0x53, 0x09, 0x64, 0x05, 0x36, 0x00, 0x97, 0xfa, 0xb4, 0xf4, 0xfd, 0xf0, + 0xd1, 0xed, 0xe3, 0xea, 0xb0, 0xe9, 0x74, 0xe8, 0xaf, 0xe7, 0x8e, 0xe7, 0x02, 0xe8, 0xbe, 0xea, + 0x9e, 0xee, 0xe6, 0xf1, 0x28, 0xf4, 0x21, 0xf7, 0x1b, 0xfc, 0xb2, 0x00, 0x17, 0x05, 0x6a, 0x08, + 0x1e, 0x09, 0xb3, 0x09, 0xd6, 0x0a, 0x21, 0x0a, 0x29, 0x08, 0xb0, 0x05, 0x41, 0x03, 0xd7, 0x00, + 0xa4, 0xfd, 0x05, 0xfb, 0x0f, 0xf8, 0x41, 0xf5, 0xb9, 0xf3, 0x5f, 0xf1, 0xbb, 0xef, 0x6d, 0xef, + 0xee, 0xee, 0x24, 0xef, 0x30, 0xef, 0xfd, 0xef, 0x0c, 0xf3, 0x85, 0xf6, 0xd3, 0xf9, 0x20, 0xfc, + 0x46, 0xff, 0xe2, 0x03, 0x11, 0x08, 0x81, 0x0c, 0x67, 0x0e, 0x29, 0x0e, 0xf2, 0x0e, 0x93, 0x0f, + 0x0c, 0x0f, 0x10, 0x0e, 0x9c, 0x0c, 0x3b, 0x0b, 0xfc, 0x08, 0xa9, 0x05, 0x00, 0x02, 0x49, 0xfd, + 0x7b, 0xf9, 0xc5, 0xf6, 0x36, 0xf3, 0x89, 0xf1, 0xe6, 0xf0, 0x00, 0xf0, 0x67, 0xef, 0x25, 0xef, + 0x17, 0xf1, 0x98, 0xf4, 0xa6, 0xf8, 0xf1, 0xfb, 0x04, 0xfe, 0x47, 0x01, 0x5c, 0x05, 0xd1, 0x09, + 0xc1, 0x0d, 0xb1, 0x0f, 0x2d, 0x10, 0x63, 0x11, 0xce, 0x11, 0x46, 0x10, 0xa1, 0x0e, 0x34, 0x0c, + 0x92, 0x09, 0x35, 0x06, 0x52, 0x02, 0x23, 0xfe, 0xc4, 0xf9, 0x14, 0xf7, 0x06, 0xf4, 0x5e, 0xf1, + 0x49, 0xf0, 0x5b, 0xef, 0x66, 0xef, 0x18, 0xef, 0xe7, 0xee, 0x99, 0xf0, 0xb7, 0xf3, 0x06, 0xf7, + 0x1e, 0xfa, 0xf8, 0xfc, 0x80, 0x01, 0x0c, 0x07, 0x7a, 0x0c, 0xe0, 0x10, 0xa9, 0x12, 0xba, 0x14, + 0xc2, 0x16, 0x31, 0x17, 0x56, 0x16, 0xfb, 0x14, 0xba, 0x13, 0x36, 0x12, 0x59, 0x0f, 0xde, 0x0b, + 0xe8, 0x07, 0x4d, 0x04, 0xb5, 0x01, 0xa9, 0xfe, 0xfa, 0xfb, 0x35, 0xfa, 0x34, 0xf8, 0x5c, 0xf7, + 0x28, 0xf6, 0x4a, 0xf6, 0x92, 0xf8, 0xc4, 0xfb, 0x2d, 0xff, 0xb1, 0x00, 0x0a, 0x03, 0xdf, 0x06, + 0x86, 0x0a, 0x9c, 0x0e, 0xe1, 0x10, 0xfe, 0x10, 0x24, 0x11, 0x5e, 0x11, 0x28, 0x10, 0x5f, 0x0e, + 0x6b, 0x0c, 0x44, 0x0a, 0xdb, 0x07, 0x72, 0x04, 0xcd, 0x00, 0x31, 0xfc, 0x0d, 0xf8, 0x4c, 0xf4, + 0x77, 0xf0, 0x48, 0xee, 0xe8, 0xec, 0x4d, 0xec, 0x04, 0xec, 0x95, 0xeb, 0x60, 0xec, 0xa6, 0xee, + 0x95, 0xf1, 0xfa, 0xf3, 0x21, 0xf5, 0xb3, 0xf7, 0xd6, 0xfb, 0x00, 0x01, 0x2c, 0x06, 0xa4, 0x08, + 0x10, 0x0a, 0xd0, 0x0b, 0xa8, 0x0c, 0xf4, 0x0b, 0xd9, 0x0a, 0x17, 0x09, 0xf5, 0x06, 0x7f, 0x04, + 0x86, 0x01, 0x07, 0xfe, 0xc0, 0xfa, 0xe7, 0xf8, 0x8b, 0xf6, 0x8c, 0xf4, 0x87, 0xf3, 0x8c, 0xf2, + 0x39, 0xf2, 0xc4, 0xf1, 0x52, 0xf1, 0x59, 0xf2, 0xc3, 0xf4, 0xbe, 0xf7, 0xaa, 0xf9, 0xb4, 0xfb, + 0xa5, 0xff, 0xc3, 0x03, 0x72, 0x08, 0xfd, 0x0b, 0x08, 0x0d, 0x39, 0x0d, 0xc2, 0x0d, 0x6b, 0x0d, + 0x19, 0x0c, 0xd8, 0x0a, 0x37, 0x09, 0x37, 0x07, 0x6f, 0x04, 0xbc, 0x01, 0x3c, 0xfe, 0xce, 0xfa, + 0xca, 0xf8, 0x38, 0xf6, 0x49, 0xf4, 0x21, 0xf3, 0x9f, 0xf2, 0xc6, 0xf2, 0x35, 0xf2, 0xd7, 0xf1, + 0x10, 0xf3, 0xb4, 0xf5, 0xd8, 0xf8, 0xc9, 0xfa, 0x12, 0xfd, 0x79, 0x00, 0xc3, 0x03, 0x2b, 0x07, + 0xed, 0x08, 0xe3, 0x08, 0x8f, 0x09, 0x78, 0x0a, 0x48, 0x0a, 0x44, 0x09, 0x76, 0x07, 0x67, 0x05, + 0x87, 0x02, 0x7f, 0xff, 0xcc, 0xfb, 0x8c, 0xf7, 0x85, 0xf4, 0x57, 0xf1, 0xaf, 0xee, 0x29, 0xed, + 0x93, 0xec, 0xe7, 0xec, 0x86, 0xed, 0xbe, 0xed, 0x3e, 0xef, 0x62, 0xf2, 0xbd, 0xf6, 0x6e, 0xfa, + 0x29, 0xfd, 0x74, 0x01, 0xa4, 0x06, 0xa9, 0x0c, 0xc7, 0x12, 0x68, 0x16, 0x3d, 0x18, 0x6c, 0x1a, + 0x11, 0x1c, 0x05, 0x1c, 0xd6, 0x1a, 0xb3, 0x18, 0x3f, 0x16, 0x83, 0x13, 0xf3, 0x10, 0x9c, 0x0d, + 0xc2, 0x09, 0x6b, 0x07, 0x76, 0x04, 0x92, 0x01, 0xf3, 0xff, 0xcf, 0xfe, 0x0b, 0xfe, 0xcf, 0xfc, + 0x2e, 0xfc, 0x46, 0xfc, 0x25, 0xfe, 0x22, 0x01, 0xee, 0x02, 0x7b, 0x04, 0x05, 0x07, 0x1b, 0x0a, + 0x4d, 0x0d, 0x3b, 0x10, 0xe1, 0x10, 0x55, 0x10, 0xc9, 0x10, 0xad, 0x0f, 0x20, 0x0e, 0x6a, 0x0b, + 0x07, 0x08, 0x45, 0x05, 0x76, 0x01, 0xee, 0xfd, 0x77, 0xf9, 0x0f, 0xf5, 0x79, 0xf1, 0x3a, 0xed, + 0x7a, 0xe9, 0xc8, 0xe6, 0x3b, 0xe5, 0x46, 0xe4, 0x11, 0xe3, 0xbc, 0xe2, 0xe3, 0xe3, 0x9d, 0xe6, + 0xcc, 0xea, 0x82, 0xed, 0xa3, 0xf0, 0x49, 0xf5, 0x05, 0xfa, 0xa1, 0xff, 0x94, 0x04, 0x22, 0x07, + 0xf6, 0x08, 0x3d, 0x0b, 0x53, 0x0c, 0x62, 0x0c, 0x12, 0x0b, 0xf2, 0x09, 0x97, 0x07, 0x85, 0x04, + 0x70, 0x01, 0x5c, 0xfd, 0xe9, 0xfa, 0xd7, 0xf8, 0xa8, 0xf6, 0x17, 0xf6, 0x76, 0xf5, 0xb7, 0xf5, + 0xa8, 0xf6, 0x58, 0xf6, 0xf6, 0xf6, 0x2b, 0xf8, 0xed, 0xfa, 0x81, 0xfd, 0xbd, 0xfe, 0xe4, 0x00, + 0xfe, 0x03, 0x06, 0x08, 0x9c, 0x0c, 0xb6, 0x0f, 0x81, 0x10, 0xe9, 0x11, 0xba, 0x12, 0x69, 0x12, + 0xe8, 0x10, 0x41, 0x0e, 0x6b, 0x0c, 0xb9, 0x09, 0xb1, 0x06, 0x3f, 0x03, 0x38, 0xff, 0x04, 0xfc, + 0x9d, 0xf8, 0x19, 0xf5, 0x95, 0xf2, 0x4d, 0xf0, 0xe2, 0xee, 0x2d, 0xed, 0xe1, 0xeb, 0x61, 0xec, + 0xbf, 0xed, 0x43, 0xf0, 0xc2, 0xf2, 0xd7, 0xf4, 0x29, 0xf8, 0x44, 0xfc, 0x9a, 0x01, 0x52, 0x06, + 0x5b, 0x08, 0xf8, 0x08, 0x40, 0x0a, 0x0f, 0x0b, 0x21, 0x0b, 0x2d, 0x0a, 0xa6, 0x08, 0x85, 0x06, + 0xeb, 0x03, 0x0f, 0x01, 0x86, 0xfd, 0x8b, 0xfa, 0x4c, 0xf8, 0x9a, 0xf5, 0xea, 0xf2, 0x1e, 0xf1, + 0xc4, 0xf0, 0x5d, 0xf1, 0xa1, 0xf1, 0x60, 0xf2, 0x62, 0xf3, 0x1a, 0xf6, 0xac, 0xf9, 0xec, 0xfb, + 0x45, 0xfe, 0x5d, 0x01, 0xa5, 0x05, 0x35, 0x0b, 0x3e, 0x10, 0xb7, 0x12, 0x1e, 0x15, 0xc6, 0x17, + 0x61, 0x19, 0xc8, 0x19, 0x26, 0x19, 0x52, 0x18, 0x7f, 0x16, 0xbf, 0x13, 0x55, 0x10, 0x75, 0x0c, + 0x04, 0x09, 0x56, 0x05, 0xae, 0x01, 0xbe, 0xfe, 0xa9, 0xfc, 0x1b, 0xfb, 0x0c, 0xfa, 0x24, 0xf8, + 0x4b, 0xf6, 0xcf, 0xf5, 0x2d, 0xf7, 0x3e, 0xf9, 0x82, 0xfa, 0xfc, 0xfc, 0x36, 0x00, 0x25, 0x04, + 0x4a, 0x09, 0x58, 0x0c, 0x33, 0x0d, 0x3a, 0x0e, 0xe5, 0x0e, 0xef, 0x0e, 0xdd, 0x0d, 0x55, 0x0c, + 0x52, 0x0a, 0x7b, 0x07, 0x8b, 0x04, 0xb2, 0x00, 0x27, 0xfd, 0x77, 0xfa, 0x96, 0xf7, 0xe8, 0xf4, + 0x99, 0xf2, 0x33, 0xf0, 0x00, 0xef, 0x68, 0xee, 0x8a, 0xed, 0x3c, 0xed, 0x96, 0xee, 0x9a, 0xf1, + 0xb9, 0xf3, 0x3f, 0xf5, 0x76, 0xf7, 0xa5, 0xfa, 0xb8, 0xfe, 0x7e, 0x03, 0x04, 0x06, 0x73, 0x07, + 0xd8, 0x09, 0xe5, 0x0b, 0xfb, 0x0c, 0x7e, 0x0c, 0xf2, 0x0b, 0x62, 0x0a, 0x18, 0x08, 0xa4, 0x05, + 0xf8, 0x01, 0x32, 0xfe, 0xe7, 0xfa, 0x9b, 0xf7, 0x2f, 0xf5, 0x42, 0xf3, 0x89, 0xf2, 0x88, 0xf2, + 0xeb, 0xf1, 0xa8, 0xf1, 0x99, 0xf1, 0x04, 0xf3, 0x56, 0xf5, 0xeb, 0xf6, 0x52, 0xf8, 0x2e, 0xfa, + 0x15, 0xfd, 0x7d, 0x01, 0x64, 0x05, 0x3d, 0x07, 0xc0, 0x08, 0x91, 0x09, 0x6e, 0x0a, 0x62, 0x0a, + 0xf7, 0x08, 0x7e, 0x07, 0x1d, 0x05, 0x5b, 0x02, 0xa2, 0xff, 0xdf, 0xfb, 0xf9, 0xf8, 0x5e, 0xf6, + 0x9b, 0xf3, 0xa4, 0xf1, 0x5e, 0xf0, 0x26, 0xf0, 0xbf, 0xf0, 0xcd, 0xf0, 0x99, 0xf0, 0x1d, 0xf1, + 0x3a, 0xf4, 0x87, 0xf7, 0x1f, 0xf9, 0x35, 0xfb, 0xe8, 0xfd, 0xab, 0x01, 0x96, 0x06, 0xe5, 0x0a, + 0x91, 0x0c, 0x98, 0x0d, 0x44, 0x0e, 0x8f, 0x0e, 0x3b, 0x0e, 0x18, 0x0d, 0x05, 0x0c, 0x9d, 0x09, + 0x53, 0x07, 0x7f, 0x04, 0xa9, 0x00, 0x74, 0xfd, 0x40, 0xfa, 0x17, 0xf7, 0x9d, 0xf4, 0x78, 0xf2, + 0xb3, 0xf1, 0xe5, 0xf0, 0x9e, 0xf0, 0x0a, 0xf0, 0x72, 0xf2, 0xec, 0xf5, 0xf5, 0xf6, 0xf7, 0xfa, + 0x61, 0xfd, 0x58, 0x00, 0x4a, 0x06, 0x80, 0x0b, 0xe6, 0x0e, 0x7a, 0x11, 0xe7, 0x13, 0x91, 0x16, + 0xc7, 0x17, 0x3a, 0x17, 0x8e, 0x17, 0xd4, 0x16, 0x92, 0x13, 0xd8, 0x11, 0x8e, 0x0c, 0xb9, 0x08, + 0x88, 0x05, 0xc9, 0x00, 0xa6, 0xff, 0x79, 0xfd, 0x3b, 0xfb, 0xb5, 0xfb, 0x29, 0xfb, 0x03, 0xfb, + 0x04, 0xfb, 0x77, 0xfc, 0x69, 0xfe, 0x76, 0x00, 0x1d, 0x02, 0xdd, 0x02, 0x0b, 0x05, 0x9f, 0x09, + 0xd1, 0x0d, 0x5e, 0x10, 0xf9, 0x11, 0x05, 0x12, 0x50, 0x14, 0xa6, 0x13, 0xc2, 0x11, 0x5d, 0x11, + 0x6c, 0x0f, 0x24, 0x0b, 0x52, 0x07, 0x90, 0x02, 0xec, 0xfe, 0x57, 0xfa, 0xfa, 0xf6, 0xe0, 0xf3, + 0xef, 0xee, 0x23, 0xee, 0x72, 0xed, 0x59, 0xe9, 0xba, 0xe8, 0xfb, 0xe9, 0x5a, 0xe7, 0xa0, 0xe9, + 0xa8, 0xec, 0x32, 0xed, 0x9e, 0xf1, 0xda, 0xf7, 0x40, 0xfb, 0x76, 0x01, 0xf4, 0x04, 0x62, 0x07, + 0xb3, 0x08, 0xaf, 0x0c, 0xae, 0x0b, 0xe8, 0x0b, 0x26, 0x0c, 0xa4, 0x0a, 0x72, 0x07, 0x6d, 0x06, + 0x99, 0x01, 0xc8, 0xfc, 0x0b, 0xfa, 0x3a, 0xf9, 0xdf, 0xf4, 0xca, 0xf4, 0x68, 0xf5, 0x00, 0xf4, + 0x43, 0xf4, 0xbf, 0xf5, 0x7e, 0xf7, 0xe6, 0xfc, 0x16, 0x01, 0xc8, 0x02, 0x81, 0x02, 0xd5, 0x04, + 0x3e, 0x04, 0x0a, 0x09, 0x8f, 0x0c, 0xee, 0x0a, 0x03, 0x0c, 0x73, 0x0c, 0xea, 0x0b, 0x21, 0x0c, + 0xb9, 0x0a, 0x6d, 0x09, 0x79, 0x04, 0x36, 0xff, 0xf3, 0xfc, 0x97, 0xf8, 0xbc, 0xf6, 0x07, 0xf0, + 0x54, 0xed, 0xaa, 0xe9, 0xc7, 0xe8, 0xb4, 0xe8, 0xc1, 0xe7, 0x36, 0xea, 0xa0, 0xe8, 0x3c, 0xe9, + 0xbb, 0xec, 0xad, 0xef, 0x88, 0xf4, 0x4a, 0xf8, 0x5d, 0xfc, 0xb9, 0x01, 0x65, 0x08, 0xa8, 0x0d, + 0x13, 0x10, 0xb5, 0x15, 0x7c, 0x18, 0x0d, 0x17, 0xd9, 0x17, 0x0a, 0x19, 0xde, 0x17, 0x14, 0x15, + 0x9e, 0x13, 0xde, 0x0e, 0xb5, 0x08, 0x22, 0x07, 0xcc, 0x00, 0x71, 0xfe, 0x98, 0xfb, 0x20, 0xf6, + 0xd7, 0xf4, 0x17, 0xf2, 0x89, 0xf0, 0x68, 0xec, 0x6e, 0xed, 0x20, 0xf0, 0x61, 0xf2, 0x6b, 0xf2, + 0x57, 0xf2, 0x9b, 0xf6, 0x77, 0xfa, 0x96, 0x00, 0x75, 0x03, 0xfa, 0x03, 0x4e, 0x09, 0xde, 0x0b, + 0x11, 0x0d, 0x2c, 0x0e, 0xf9, 0x0d, 0x5b, 0x0e, 0x01, 0x0c, 0x1d, 0x0b, 0x0c, 0x0c, 0xc9, 0x09, + 0x43, 0x06, 0x9c, 0x04, 0x7f, 0x02, 0x1e, 0x00, 0x56, 0xff, 0xc9, 0xff, 0x40, 0xfe, 0x5a, 0xfe, + 0x56, 0xfb, 0x64, 0xfd, 0x4b, 0xff, 0x66, 0xfe, 0xae, 0x00, 0x7a, 0xfe, 0xaf, 0xff, 0xab, 0x00, + 0xca, 0x01, 0x71, 0x04, 0x56, 0x08, 0xa5, 0x09, 0x99, 0x09, 0xbd, 0x08, 0x08, 0x09, 0x0c, 0x08, + 0xbe, 0x06, 0x8a, 0x03, 0x40, 0x01, 0x76, 0xfb, 0x80, 0xf7, 0x91, 0xf8, 0x6f, 0xf3, 0x55, 0xf5, + 0xd9, 0xf1, 0x8f, 0xee, 0x5d, 0xf2, 0xef, 0xf1, 0x67, 0xf2, 0xae, 0xf6, 0x74, 0xf7, 0x3a, 0xfc, + 0x80, 0xfc, 0x97, 0xff, 0x2f, 0x03, 0xc7, 0x06, 0x34, 0x0d, 0x6a, 0x0d, 0xb3, 0x0e, 0x31, 0x0d, + 0x93, 0x11, 0xb5, 0x0f, 0x3d, 0x0e, 0x87, 0x0a, 0xc7, 0x06, 0xac, 0x03, 0x4b, 0x00, 0xa6, 0xff, + 0x90, 0xf7, 0xd1, 0xf2, 0xad, 0xf0, 0xa3, 0xec, 0xd7, 0xe8, 0x3c, 0xe6, 0x48, 0xe8, 0x19, 0xe8, + 0x37, 0xe7, 0x2f, 0xe9, 0xa7, 0xea, 0x5d, 0xf1, 0x86, 0xf5, 0x4d, 0xf6, 0x6b, 0xfa, 0x00, 0x01, + 0x62, 0x03, 0x63, 0x09, 0x69, 0x0e, 0x31, 0x0f, 0x65, 0x11, 0x9b, 0x13, 0x0e, 0x14, 0x45, 0x16, + 0xde, 0x18, 0x3f, 0x15, 0xf8, 0x16, 0x2a, 0x11, 0xec, 0x0c, 0xce, 0x08, 0x62, 0x02, 0xda, 0xff, + 0x84, 0xf8, 0xe9, 0xf2, 0xba, 0xf0, 0xc3, 0xf1, 0xd6, 0xf1, 0x93, 0xf0, 0xd6, 0xef, 0xc8, 0xf1, + 0x12, 0xf6, 0xb0, 0xf4, 0x8f, 0xf5, 0x61, 0xf9, 0x64, 0xfd, 0x99, 0x02, 0x9a, 0x04, 0x96, 0x09, + 0xc7, 0x0a, 0x0f, 0x0c, 0x3e, 0x0f, 0xe8, 0x0d, 0x13, 0x0b, 0x67, 0x0c, 0x16, 0x0d, 0x6a, 0x08, + 0xd7, 0x08, 0xa1, 0x06, 0x2d, 0x01, 0x3d, 0x00, 0x55, 0xff, 0x37, 0xfb, 0xaa, 0xfb, 0x89, 0xf8, + 0x94, 0xf7, 0x9e, 0xf6, 0xb0, 0xf0, 0xe3, 0xef, 0x54, 0xf1, 0x93, 0xef, 0x98, 0xf0, 0xd2, 0xf4, + 0x8f, 0xf6, 0xbb, 0xf6, 0x8a, 0xfb, 0x44, 0x01, 0x84, 0x05, 0x5d, 0x06, 0x74, 0x09, 0x99, 0x0c, + 0xb9, 0x0d, 0xc3, 0x11, 0x84, 0x10, 0xcd, 0x0f, 0x1c, 0x12, 0x30, 0x0d, 0xb2, 0x08, 0xd8, 0x09, + 0x97, 0x04, 0x36, 0x01, 0x3d, 0x01, 0x85, 0xfe, 0x60, 0xfd, 0x90, 0xff, 0xda, 0x00, 0xe6, 0xfe, + 0x55, 0x01, 0xd5, 0x03, 0x20, 0x06, 0x19, 0x06, 0xf1, 0x05, 0x64, 0x08, 0xb9, 0x07, 0x60, 0x08, + 0x25, 0x0a, 0xb3, 0x06, 0xfc, 0x04, 0x23, 0x06, 0x44, 0x06, 0x0d, 0x04, 0x03, 0x02, 0xf2, 0xff, + 0x91, 0xfe, 0x74, 0xf9, 0xcf, 0xf1, 0xdc, 0xf0, 0x67, 0xee, 0xbb, 0xeb, 0x05, 0xed, 0xa5, 0xea, + 0xd3, 0xe7, 0x00, 0xe7, 0xd5, 0xe6, 0xea, 0xe5, 0xed, 0xe3, 0x5b, 0xe5, 0x8b, 0xe9, 0xbf, 0xeb, + 0x8f, 0xed, 0xd3, 0xf1, 0x05, 0xf6, 0x4a, 0xfa, 0x37, 0x03, 0xdd, 0x06, 0xf2, 0x09, 0x0a, 0x0e, + 0x1c, 0x0f, 0x1d, 0x12, 0x85, 0x10, 0x9d, 0x0d, 0xf7, 0x0a, 0xcd, 0x08, 0x1c, 0x02, 0xc8, 0xfe, + 0x88, 0xfc, 0x8f, 0xf6, 0x32, 0xf2, 0x48, 0xef, 0xb7, 0xee, 0xab, 0xec, 0x0d, 0xea, 0xae, 0xed, + 0xa0, 0xef, 0xb7, 0xee, 0x4b, 0xf4, 0xcd, 0xf7, 0xa3, 0xfb, 0x78, 0x00, 0xbd, 0x01, 0x7e, 0x07, + 0x58, 0x0e, 0xe5, 0x11, 0x96, 0x17, 0x7b, 0x19, 0x94, 0x18, 0x49, 0x1c, 0xcb, 0x1f, 0x1d, 0x1f, + 0xa4, 0x1f, 0x4c, 0x1f, 0xe6, 0x1b, 0xc8, 0x1a, 0x73, 0x16, 0x99, 0x13, 0x03, 0x0e, 0xe1, 0x08, + 0x4f, 0x04, 0x57, 0xfc, 0xa0, 0xf7, 0xbe, 0xf6, 0xc1, 0xf5, 0xe3, 0xf5, 0x66, 0xf3, 0xa2, 0xf4, + 0x1a, 0xf9, 0x36, 0xfc, 0x52, 0xfb, 0xbd, 0xfb, 0xc2, 0x01, 0x8c, 0x06, 0xed, 0x0e, 0xde, 0x12, + 0xa2, 0x13, 0x7f, 0x19, 0x53, 0x19, 0x9e, 0x1a, 0xec, 0x19, 0xb1, 0x17, 0x07, 0x19, 0x7e, 0x17, + 0x01, 0x14, 0x46, 0x0f, 0x97, 0x0d, 0x66, 0x0a, 0x24, 0x08, 0x92, 0x06, 0x69, 0x00, 0xb5, 0x00, + 0x86, 0xfe, 0xa2, 0xfc, 0xaf, 0xf8, 0x01, 0xf3, 0x1b, 0xf3, 0x05, 0xf4, 0x14, 0xf1, 0xd2, 0xed, + 0xe1, 0xef, 0x44, 0xf2, 0xd3, 0xf2, 0x8d, 0xf6, 0x25, 0xf7, 0x36, 0xf9, 0xf4, 0xfa, 0x35, 0xfd, + 0xe6, 0xff, 0xc3, 0xfd, 0xa0, 0xfe, 0xaf, 0x00, 0x7b, 0xfe, 0xa0, 0x00, 0x0a, 0xff, 0xe2, 0xf8, + 0x55, 0xf9, 0x07, 0xf8, 0x51, 0xf3, 0x0b, 0xf4, 0xc5, 0xf3, 0xb0, 0xf4, 0xb1, 0xf5, 0xfb, 0xf1, + 0xd4, 0xf2, 0xfe, 0xf8, 0xc0, 0xfa, 0xc2, 0xfe, 0xf7, 0xfe, 0x64, 0x00, 0x00, 0x04, 0xa1, 0x05, + 0x33, 0x04, 0xc1, 0x02, 0x0e, 0xfe, 0x85, 0xfb, 0xaf, 0xfd, 0xdf, 0xfb, 0x9c, 0xf8, 0x7e, 0xf7, + 0x7b, 0xf4, 0xcf, 0xf1, 0xb8, 0xed, 0x5e, 0xe9, 0x01, 0xe6, 0xe6, 0xe2, 0xb0, 0xe1, 0xd5, 0xe1, + 0x14, 0xe1, 0xda, 0xe3, 0xea, 0xe6, 0xca, 0xe2, 0x1e, 0xe3, 0xe0, 0xe4, 0x84, 0xe9, 0x00, 0xf0, + 0xf9, 0xee, 0x61, 0xf1, 0xb7, 0xf5, 0xfb, 0xfe, 0xe6, 0x04, 0xde, 0x0b, 0xa3, 0x0d, 0x6f, 0x0d, + 0x79, 0x0f, 0x9a, 0x0f, 0x53, 0x0e, 0xbd, 0x0c, 0x3b, 0x0b, 0x03, 0x07, 0x2e, 0x02, 0xcc, 0xfb, + 0xb9, 0xf4, 0x74, 0xf4, 0x0f, 0xef, 0x5d, 0xea, 0x85, 0xe6, 0xe2, 0xe3, 0x5d, 0xe7, 0xdc, 0xe4, + 0x2d, 0xe5, 0xb0, 0xe6, 0xce, 0xe8, 0x2f, 0xf1, 0x5a, 0xf4, 0xf9, 0xfa, 0x31, 0x00, 0x3b, 0x05, + 0x03, 0x0c, 0xc5, 0x11, 0x46, 0x18, 0xc7, 0x16, 0xef, 0x19, 0x5e, 0x1d, 0xc6, 0x1d, 0x67, 0x22, + 0xa9, 0x20, 0x74, 0x22, 0x77, 0x1d, 0xfb, 0x18, 0x69, 0x19, 0xe9, 0x13, 0x26, 0x12, 0xc1, 0x11, + 0xde, 0x0a, 0x3d, 0x04, 0xce, 0xff, 0x8f, 0xfc, 0x74, 0xfa, 0x76, 0xf7, 0xf7, 0xf5, 0x0b, 0xf9, + 0x46, 0xfa, 0x63, 0xfb, 0xf3, 0xfc, 0x6a, 0xfe, 0xa5, 0x01, 0xe2, 0x09, 0x1e, 0x12, 0x81, 0x17, + 0x5c, 0x19, 0xde, 0x1c, 0x4a, 0x23, 0x62, 0x21, 0xc3, 0x21, 0xe6, 0x23, 0x3e, 0x21, 0xf5, 0x1f, + 0x0a, 0x1d, 0x85, 0x1b, 0x39, 0x18, 0x82, 0x18, 0x8a, 0x14, 0x5d, 0x11, 0xac, 0x0f, 0x6b, 0x0d, + 0x69, 0x11, 0x47, 0x0d, 0x61, 0x07, 0xaf, 0x04, 0x74, 0x02, 0x29, 0x04, 0x19, 0x02, 0x28, 0x00, + 0x2a, 0xff, 0x41, 0xfe, 0x78, 0x01, 0xc8, 0x05, 0xd3, 0x02, 0x48, 0x01, 0x8d, 0x02, 0x63, 0x04, + 0x7f, 0x03, 0x3a, 0x03, 0x49, 0x05, 0x9a, 0x06, 0xfc, 0x05, 0xad, 0x01, 0xf2, 0x00, 0xb8, 0x01, + 0x65, 0xff, 0x74, 0x01, 0xbf, 0xfd, 0xfb, 0xf8, 0x5c, 0xf9, 0xa8, 0xf9, 0x9b, 0xf4, 0x8b, 0xf3, + 0x20, 0xf6, 0x26, 0xf9, 0x03, 0xfd, 0xe0, 0xf8, 0x4b, 0xfc, 0x7c, 0xff, 0xb7, 0x00, 0x28, 0x07, + 0xbd, 0x08, 0x75, 0x0a, 0x26, 0x0a, 0xd7, 0x06, 0x9a, 0x01, 0x2c, 0xff, 0xd0, 0xfa, 0x23, 0xf9, + 0xd3, 0xf7, 0x03, 0xf1, 0x3c, 0xf1, 0xd7, 0xec, 0x21, 0xe9, 0xdf, 0xe9, 0x85, 0xe5, 0x93, 0xe4, + 0x08, 0xe4, 0x0b, 0xe8, 0xb5, 0xe9, 0xd1, 0xe8, 0x00, 0xe6, 0xef, 0xe5, 0x9e, 0xeb, 0xab, 0xeb, + 0x6e, 0xf2, 0x0b, 0xf7, 0x90, 0xf6, 0x55, 0xff, 0xab, 0x05, 0xc7, 0x06, 0x1f, 0x09, 0x80, 0x08, + 0x0b, 0x0c, 0x71, 0x0c, 0xc9, 0x09, 0xd3, 0x08, 0xb9, 0x06, 0xa2, 0x04, 0x61, 0xfe, 0x65, 0xf9, + 0x87, 0xf4, 0x73, 0xee, 0x4e, 0xec, 0xa9, 0xe8, 0x8b, 0xe2, 0x5d, 0xde, 0xac, 0xdc, 0x27, 0xdb, + 0xe5, 0xd6, 0x11, 0xd8, 0x09, 0xda, 0x3c, 0xdb, 0xb0, 0xde, 0x7c, 0xde, 0x82, 0xe4, 0x4a, 0xea, + 0x29, 0xf1, 0x51, 0xfa, 0x3a, 0xff, 0x9e, 0x05, 0x4e, 0x06, 0x83, 0x09, 0x6c, 0x08, 0x7d, 0x05, + 0x7f, 0x07, 0xf3, 0x03, 0x9a, 0x06, 0xd9, 0x04, 0x4e, 0x01, 0xc1, 0x03, 0xc5, 0x03, 0x7f, 0x03, + 0xd5, 0x03, 0xeb, 0x01, 0xf6, 0x02, 0x3d, 0x01, 0x08, 0xfe, 0xef, 0xf9, 0xa5, 0xf7, 0x70, 0xfc, + 0x2d, 0xfe, 0x2a, 0x02, 0x8e, 0x07, 0xff, 0x06, 0x86, 0x0b, 0x56, 0x13, 0x17, 0x16, 0xbc, 0x16, + 0x00, 0x1b, 0x76, 0x1e, 0x20, 0x21, 0xac, 0x25, 0x71, 0x24, 0xeb, 0x23, 0xc4, 0x23, 0xc0, 0x1f, + 0x20, 0x1d, 0xe9, 0x1b, 0x05, 0x17, 0x86, 0x13, 0x9f, 0x15, 0x53, 0x0d, 0x76, 0x0c, 0xd7, 0x0c, + 0x1d, 0x09, 0x89, 0x09, 0xbb, 0x05, 0xd0, 0x05, 0x7e, 0x03, 0xe4, 0xff, 0x1e, 0xfc, 0x99, 0xf8, + 0x0a, 0xf7, 0x17, 0xf6, 0xe8, 0xf5, 0xec, 0xf5, 0x32, 0xf8, 0x43, 0xf7, 0x11, 0xf9, 0x56, 0xf9, + 0x34, 0xf8, 0x65, 0xf5, 0xfb, 0xf2, 0x76, 0xf3, 0x08, 0xf1, 0xfe, 0xef, 0x47, 0xed, 0xca, 0xef, + 0xcc, 0xf1, 0xc2, 0xee, 0xb2, 0xf3, 0xa2, 0xf5, 0x24, 0xf8, 0x49, 0xfe, 0xb6, 0xfb, 0x37, 0xfa, + 0x7c, 0xfd, 0xbb, 0xfd, 0x9b, 0x04, 0x38, 0x0c, 0xee, 0x0b, 0x4a, 0x12, 0x67, 0x18, 0x72, 0x1b, + 0x44, 0x1d, 0xd0, 0x1e, 0x2b, 0x1e, 0xc3, 0x18, 0xf0, 0x17, 0x34, 0x11, 0x1d, 0x0d, 0x0c, 0x0f, + 0xee, 0x0a, 0x1d, 0x0a, 0x58, 0x06, 0x65, 0x03, 0xa8, 0x03, 0x41, 0x00, 0x1a, 0xfe, 0x5e, 0xf8, + 0x8d, 0xf9, 0xf2, 0xfb, 0xfb, 0xf7, 0xfc, 0xf9, 0x24, 0xfd, 0xef, 0xfd, 0x22, 0x02, 0x01, 0x02, + 0x88, 0xfe, 0x1b, 0x01, 0x29, 0x05, 0x39, 0x08, 0x01, 0x0c, 0x45, 0x10, 0x06, 0x12, 0x0e, 0x15, + 0x39, 0x15, 0x6a, 0x14, 0xc5, 0x12, 0xab, 0x10, 0x09, 0x0d, 0xb3, 0x09, 0x64, 0x04, 0xe0, 0xfa, + 0x75, 0xf8, 0x4b, 0xf2, 0x38, 0xeb, 0xe6, 0xe9, 0x58, 0xe6, 0xe5, 0xe6, 0x23, 0xe5, 0x15, 0xe0, + 0xbf, 0xe2, 0x6d, 0xe0, 0x66, 0xe0, 0x91, 0xe3, 0xc5, 0xe5, 0x44, 0xea, 0xc9, 0xe9, 0xbd, 0xf2, + 0x39, 0xf9, 0xcb, 0xfb, 0x5a, 0x01, 0xa4, 0x03, 0x92, 0x05, 0xf2, 0x05, 0x31, 0x06, 0x27, 0x04, + 0x17, 0x04, 0x74, 0x03, 0x3f, 0x01, 0xb9, 0xff, 0x11, 0xfb, 0xfa, 0xf9, 0xdc, 0xfb, 0x72, 0xfa, + 0x3f, 0xf7, 0xe0, 0xf9, 0x68, 0xf7, 0xd2, 0xf2, 0x45, 0xee, 0xfe, 0xe8, 0x07, 0xe7, 0x49, 0xe6, + 0xfb, 0xe6, 0xc2, 0xe4, 0x6e, 0xe4, 0x17, 0xe8, 0x3c, 0xec, 0xfe, 0xf0, 0x15, 0xf6, 0x33, 0xf9, + 0x99, 0xfb, 0xa1, 0x01, 0x00, 0x03, 0x3f, 0x03, 0x86, 0x05, 0xc1, 0x03, 0xd0, 0x03, 0x59, 0x00, + 0x2e, 0xfb, 0xbc, 0xfa, 0x91, 0xfa, 0xec, 0xf9, 0x8a, 0xf5, 0xd5, 0xf7, 0x97, 0xf7, 0xe2, 0xf9, + 0xb0, 0xf9, 0xca, 0xf8, 0x66, 0xf9, 0xc2, 0xf6, 0xf5, 0xfa, 0x02, 0xfd, 0xea, 0xfc, 0xef, 0xfb, + 0xaa, 0xfd, 0x69, 0xff, 0x26, 0xfe, 0x3f, 0xfe, 0x40, 0xfe, 0x73, 0x00, 0x04, 0x01, 0x2b, 0x00, + 0x69, 0x01, 0xfc, 0x03, 0x9c, 0x03, 0x8b, 0x05, 0xcc, 0x04, 0x5a, 0x02, 0x4d, 0x05, 0xff, 0x06, + 0x77, 0x07, 0x24, 0x09, 0xbf, 0x08, 0xaa, 0x0e, 0xfe, 0x11, 0xda, 0x10, 0x78, 0x14, 0x68, 0x17, + 0x67, 0x17, 0xa7, 0x1a, 0x78, 0x18, 0xfc, 0x18, 0x82, 0x1c, 0x2a, 0x1e, 0x5e, 0x23, 0x1f, 0x25, + 0x69, 0x27, 0x57, 0x2b, 0xf3, 0x2c, 0xbd, 0x2d, 0x73, 0x28, 0x88, 0x21, 0xf1, 0x18, 0x8f, 0x13, + 0xa7, 0x0e, 0x48, 0x07, 0x77, 0x04, 0xb2, 0xfd, 0xbc, 0xfa, 0x85, 0xf8, 0x3a, 0xf2, 0x62, 0xf3, + 0x47, 0xf1, 0xba, 0xf1, 0x81, 0xf3, 0x31, 0xf0, 0xbf, 0xed, 0x09, 0xf0, 0x08, 0xf2, 0x83, 0xf5, + 0xb6, 0xf7, 0xe5, 0xfa, 0xff, 0x00, 0x8e, 0x05, 0x4a, 0x07, 0x96, 0x08, 0x2a, 0x0b, 0x86, 0x0b, + 0xdc, 0x0a, 0xbd, 0x0c, 0xbb, 0x0c, 0xc2, 0x0b, 0x9e, 0x0d, 0x9d, 0x0c, 0x81, 0x07, 0x08, 0x06, + 0x07, 0x03, 0x09, 0xff, 0xc6, 0xf7, 0xdf, 0xf0, 0x82, 0xf0, 0x22, 0xef, 0x7e, 0xed, 0xa1, 0xe9, + 0xd1, 0xe6, 0x7d, 0xeb, 0x08, 0xeb, 0xe8, 0xec, 0x16, 0xeb, 0xae, 0xe7, 0x01, 0xee, 0x75, 0xf0, + 0xa9, 0xf4, 0xc7, 0xf8, 0x3e, 0xfd, 0x1a, 0x02, 0x61, 0x06, 0x21, 0x0b, 0x08, 0x07, 0xda, 0x07, + 0xba, 0x05, 0xb3, 0x01, 0x34, 0xfe, 0xa9, 0xf8, 0x9b, 0xf6, 0x04, 0xf7, 0x47, 0xf4, 0x88, 0xf1, + 0x7d, 0xf2, 0xdf, 0xf3, 0x00, 0xf8, 0x78, 0xf8, 0x00, 0xf7, 0x57, 0xf3, 0x75, 0xed, 0xdc, 0xed, + 0xc6, 0xec, 0xc1, 0xed, 0x11, 0xf2, 0x25, 0xf4, 0x68, 0xf9, 0xfe, 0xfe, 0x19, 0x00, 0xd3, 0x05, + 0x4a, 0x07, 0x3f, 0x06, 0x62, 0x0b, 0x86, 0x0b, 0xb9, 0x0a, 0x81, 0x0f, 0xdb, 0x10, 0x7b, 0x0e, + 0x3f, 0x0b, 0xbf, 0x0a, 0xfb, 0x07, 0xd7, 0x06, 0xdd, 0x06, 0x66, 0x03, 0x39, 0x06, 0xb9, 0x04, + 0xba, 0x02, 0xe9, 0x02, 0x0f, 0x04, 0xed, 0x06, 0x7d, 0x05, 0x5e, 0x05, 0x14, 0x02, 0x93, 0x00, + 0xc4, 0x01, 0xea, 0x02, 0x22, 0x01, 0x7e, 0xff, 0xd6, 0xfd, 0x24, 0xff, 0xb6, 0x00, 0x5a, 0xfc, + 0x53, 0xfa, 0x21, 0xfa, 0xc2, 0xf8, 0x7e, 0xf7, 0x50, 0xf2, 0xa3, 0xed, 0x3c, 0xed, 0xf1, 0xec, + 0x4d, 0xea, 0x04, 0xeb, 0x93, 0xee, 0x84, 0xf0, 0x83, 0xf5, 0xa9, 0xf9, 0x35, 0xf7, 0x63, 0xf9, + 0x2e, 0xff, 0xa7, 0xfe, 0x82, 0x03, 0x96, 0x03, 0xd2, 0x05, 0x35, 0x0f, 0xd9, 0x12, 0x8a, 0x16, + 0x09, 0x18, 0x29, 0x19, 0x33, 0x1a, 0x6f, 0x1b, 0xcd, 0x1b, 0xa0, 0x17, 0x67, 0x14, 0x80, 0x10, + 0xd1, 0x09, 0x99, 0x03, 0x56, 0x00, 0xe7, 0xff, 0x32, 0xf9, 0xfb, 0xf7, 0xf7, 0xf6, 0xa0, 0xf5, + 0x1d, 0xf8, 0xde, 0xf2, 0x8f, 0xf1, 0x8d, 0xf4, 0x33, 0xf6, 0xcb, 0xf8, 0xda, 0xfb, 0x6d, 0xf9, + 0xf8, 0xf9, 0xd2, 0xfe, 0x1d, 0x01, 0x52, 0x06, 0x7e, 0x0a, 0x22, 0x0d, 0x22, 0x13, 0xdc, 0x16, + 0x48, 0x16, 0x8d, 0x16, 0x78, 0x16, 0xc8, 0x15, 0xd5, 0x13, 0xbc, 0x0f, 0xfc, 0x0b, 0x92, 0x08, + 0x44, 0x06, 0x5c, 0x02, 0x45, 0xfe, 0xaf, 0xf8, 0x91, 0xf3, 0xb3, 0xf3, 0xa6, 0xf2, 0xa7, 0xf0, + 0xc8, 0xec, 0x69, 0xea, 0x65, 0xec, 0x56, 0xec, 0xee, 0xee, 0x5d, 0xef, 0x43, 0xf2, 0x94, 0xfa, + 0xe7, 0xfc, 0xb1, 0x01, 0x11, 0x05, 0x78, 0x07, 0x38, 0x0b, 0x64, 0x0c, 0x18, 0x0d, 0xdb, 0x0b, + 0x7a, 0x0f, 0x30, 0x0d, 0x94, 0x09, 0x26, 0x07, 0xef, 0x03, 0x18, 0x02, 0x78, 0x00, 0x56, 0xfc, + 0x62, 0xfa, 0x5d, 0xfc, 0xbe, 0xfa, 0x9a, 0xfb, 0x47, 0xfb, 0xde, 0xfb, 0x88, 0xfc, 0xcc, 0xf7, + 0xe1, 0xf2, 0xea, 0xed, 0x9f, 0xed, 0xdd, 0xf1, 0xb8, 0xf3, 0x89, 0xf3, 0xcc, 0xf6, 0x8d, 0xf9, + 0x67, 0x00, 0x75, 0x04, 0x8c, 0x03, 0x76, 0x06, 0xb7, 0x06, 0xe0, 0x05, 0x53, 0x05, 0x72, 0x02, + 0x00, 0x01, 0xfc, 0xfd, 0x18, 0xfd, 0x4b, 0xf9, 0x94, 0xf7, 0x61, 0xf8, 0xf2, 0xf9, 0xd6, 0xfd, + 0x99, 0xfb, 0xad, 0xfb, 0x0a, 0xfa, 0x0a, 0xfa, 0x3c, 0xfd, 0xc2, 0xfb, 0x4e, 0xfd, 0xb8, 0x01, + 0x6a, 0x05, 0xf7, 0x05, 0xa0, 0x07, 0xf9, 0x04, 0xa8, 0x01, 0xa3, 0x00, 0x2f, 0xff, 0x23, 0xfd, + 0x2d, 0xfa, 0xd6, 0xf8, 0x59, 0xf9, 0x38, 0xf8, 0x24, 0xf8, 0x58, 0xf7, 0x80, 0xf5, 0x4b, 0xf4, + 0x07, 0xf4, 0xbe, 0xf2, 0x63, 0xf5, 0x8c, 0xf8, 0xfe, 0xf8, 0x8f, 0xfa, 0xa3, 0xff, 0xab, 0x02, + 0x23, 0x07, 0xe8, 0x0b, 0x6e, 0x0a, 0x50, 0x0c, 0xf2, 0x0c, 0xb1, 0x0f, 0xad, 0x13, 0x0e, 0x15, + 0xc8, 0x1a, 0x4e, 0x1d, 0x01, 0x21, 0xcc, 0x22, 0x43, 0x20, 0x7f, 0x20, 0x31, 0x1f, 0xc0, 0x18, + 0x9d, 0x10, 0xff, 0x08, 0x09, 0x02, 0xbc, 0xfc, 0xce, 0xfc, 0x15, 0xf5, 0x33, 0xf1, 0x68, 0xf3, + 0x14, 0xf4, 0xc2, 0xf5, 0x60, 0xf3, 0x12, 0xf1, 0xda, 0xf2, 0x01, 0xf3, 0x67, 0xf3, 0x7b, 0xf5, + 0xf9, 0xf6, 0xec, 0xfa, 0xa8, 0x01, 0x12, 0x05, 0xef, 0x08, 0x24, 0x0b, 0xa0, 0x0d, 0x36, 0x0f, + 0xa9, 0x0c, 0xe1, 0x0b, 0xe5, 0x0b, 0x0f, 0x0c, 0xcd, 0x0c, 0x6b, 0x09, 0x94, 0x05, 0x3d, 0x04, + 0xa6, 0x01, 0x81, 0xff, 0xfe, 0xfb, 0x9e, 0xfa, 0xe1, 0xf7, 0xc9, 0xf0, 0x76, 0xec, 0xb8, 0xe7, + 0x4b, 0xea, 0x1b, 0xeb, 0x3d, 0xe9, 0xbd, 0xea, 0x69, 0xe5, 0x8a, 0xe6, 0x3d, 0xea, 0x86, 0xe9, + 0x96, 0xed, 0x29, 0xf0, 0xc6, 0xf4, 0x8e, 0xf9, 0xa0, 0xfd, 0x11, 0xfe, 0xb3, 0x00, 0xf6, 0x03, + 0xdd, 0x02, 0x42, 0x03, 0x33, 0xff, 0xb2, 0xfa, 0x0d, 0xf7, 0x4f, 0xf5, 0x0c, 0xf3, 0xc5, 0xf1, + 0xe1, 0xf2, 0x59, 0xf3, 0xad, 0xf6, 0x10, 0xf8, 0x7c, 0xfa, 0x01, 0xfc, 0x04, 0xff, 0xe0, 0xff, + 0x17, 0xfd, 0xf0, 0xfb, 0xa4, 0xfb, 0x5a, 0xfd, 0x98, 0x04, 0xa7, 0x08, 0xe4, 0x06, 0x80, 0x0b, + 0xb5, 0x0c, 0x27, 0x0f, 0xb3, 0x12, 0x88, 0x11, 0xbf, 0x15, 0x38, 0x16, 0x43, 0x14, 0x24, 0x13, + 0x89, 0x12, 0x56, 0x13, 0xfc, 0x10, 0xcc, 0x0f, 0x3f, 0x0c, 0xfd, 0x0a, 0xaf, 0x0b, 0x82, 0x08, + 0x07, 0x07, 0x5c, 0x06, 0x7f, 0x09, 0xbb, 0x0a, 0x64, 0x0b, 0x4f, 0x09, 0x0e, 0x05, 0x28, 0x06, + 0x54, 0x08, 0x46, 0x09, 0x1e, 0x08, 0x21, 0x08, 0x96, 0x08, 0x22, 0x06, 0xfc, 0x01, 0x0c, 0xfe, + 0x63, 0xfc, 0x76, 0xf8, 0x05, 0xf3, 0xb2, 0xf0, 0x99, 0xec, 0x31, 0xea, 0x53, 0xe9, 0x52, 0xe5, + 0x75, 0xe0, 0x83, 0xe0, 0x83, 0xe1, 0xde, 0xe4, 0x86, 0xe9, 0x5c, 0xeb, 0xea, 0xec, 0xbf, 0xf0, + 0xf2, 0xf1, 0xbc, 0xf4, 0xbf, 0xfa, 0x82, 0xfc, 0x2b, 0x03, 0xb8, 0x08, 0xf7, 0x0b, 0x6a, 0x0f, + 0xe0, 0x11, 0xa0, 0x16, 0x0a, 0x19, 0x5e, 0x19, 0x55, 0x1a, 0x9b, 0x19, 0xf0, 0x1a, 0x19, 0x1a, + 0xa8, 0x15, 0x8f, 0x0f, 0xd9, 0x0a, 0xfe, 0x04, 0xdb, 0xfd, 0x49, 0xfc, 0x57, 0xf7, 0x83, 0xf6, + 0x0d, 0xf5, 0x77, 0xf1, 0xf3, 0xf2, 0x01, 0xf2, 0x60, 0xf3, 0x41, 0xf7, 0x2d, 0xf6, 0x90, 0xf4, + 0x18, 0xf7, 0x3d, 0xf9, 0xcc, 0xfa, 0xbc, 0xfe, 0x45, 0x00, 0xf8, 0x05, 0x23, 0x0b, 0x81, 0x0d, + 0xf3, 0x0f, 0x83, 0x0f, 0x11, 0x0f, 0x23, 0x0f, 0x19, 0x0e, 0x1d, 0x0c, 0x0a, 0x09, 0x68, 0x04, + 0xdd, 0x02, 0x7e, 0xff, 0x72, 0xfd, 0x18, 0xfc, 0xd8, 0xfd, 0x38, 0xfe, 0xb9, 0xf8, 0xbd, 0xf5, + 0x88, 0xf0, 0x52, 0xf0, 0xdd, 0xef, 0xdc, 0xee, 0x8d, 0xf0, 0x99, 0xef, 0xf5, 0xf4, 0x86, 0xf9, + 0x2f, 0xfa, 0x60, 0xfd, 0x5b, 0x00, 0xb6, 0x04, 0x52, 0x06, 0xe7, 0x08, 0x0a, 0x09, 0xa4, 0x0b, + 0x44, 0x0d, 0xfa, 0x0b, 0xc4, 0x0d, 0xff, 0x0b, 0xd0, 0x09, 0x58, 0x06, 0xd5, 0x01, 0x2b, 0x00, + 0xa3, 0x01, 0xac, 0xff, 0x5a, 0xfc, 0xe1, 0xfa, 0xbd, 0xf9, 0x62, 0xff, 0x9f, 0x03, 0xf3, 0x03, + 0x4b, 0x02, 0x84, 0xfd, 0xfb, 0xfa, 0x26, 0xfa, 0x87, 0xf6, 0xdf, 0xf7, 0x56, 0xfb, 0x6a, 0xfa, + 0x5f, 0xfc, 0x75, 0xfb, 0xf9, 0xfc, 0xd0, 0xff, 0x87, 0xff, 0xf2, 0x02, 0x63, 0x01, 0xfd, 0xfd, + 0xa6, 0xfa, 0x22, 0xf8, 0x75, 0xf7, 0x5d, 0xf4, 0xf3, 0xf3, 0xa9, 0xf4, 0xc0, 0xf5, 0x54, 0xf6, + 0xfd, 0xf6, 0x1b, 0xf8, 0xb9, 0xf5, 0xe9, 0xf7, 0x5c, 0xf9, 0x5f, 0xf8, 0x04, 0xfa, 0x75, 0xfc, + 0x79, 0x00, 0xef, 0x05, 0xda, 0x08, 0xda, 0x09, 0xd1, 0x0a, 0x5c, 0x0a, 0x65, 0x07, 0xb3, 0x04, + 0x31, 0x01, 0xba, 0xff, 0x1e, 0xfd, 0x01, 0xf9, 0x07, 0xf7, 0xa7, 0xf5, 0x7b, 0xf6, 0xc7, 0xf5, + 0x05, 0xf5, 0x52, 0xf5, 0xb3, 0xf5, 0x10, 0xf6, 0x65, 0xf6, 0x9f, 0xf7, 0x3e, 0xfd, 0x52, 0x02, + 0xfe, 0x06, 0xcf, 0x08, 0x5d, 0x09, 0xf6, 0x0d, 0x1f, 0x11, 0xaf, 0x15, 0x14, 0x17, 0xee, 0x18, + 0x99, 0x1c, 0xec, 0x1d, 0xb9, 0x21, 0x1a, 0x24, 0xce, 0x22, 0x03, 0x25, 0xc9, 0x24, 0x80, 0x21, + 0xe8, 0x1e, 0xf8, 0x19, 0x4f, 0x11, 0x16, 0x0c, 0x8b, 0x03, 0xa7, 0xfa, 0x11, 0xfb, 0xdf, 0xf7, + 0x19, 0xf5, 0xf4, 0xf3, 0xfd, 0xf2, 0x67, 0xf3, 0x3e, 0xf2, 0x04, 0xf2, 0x6c, 0xf2, 0x00, 0xf2, + 0xc3, 0xf2, 0x30, 0xf8, 0xd4, 0xfb, 0x64, 0xfd, 0x78, 0x00, 0x3a, 0x02, 0xde, 0x06, 0x02, 0x09, + 0x10, 0x09, 0x02, 0x0a, 0xa7, 0x08, 0x7e, 0x06, 0xc3, 0x05, 0xde, 0x03, 0xd0, 0x02, 0x76, 0x02, + 0x7b, 0xfc, 0x33, 0xfb, 0x95, 0xf9, 0x20, 0xf9, 0xf8, 0xf8, 0x59, 0xf7, 0xe6, 0xf4, 0x7a, 0xf2, + 0xae, 0xf1, 0x5e, 0xee, 0xb3, 0xee, 0x2e, 0xec, 0x24, 0xe9, 0xf1, 0xea, 0x69, 0xea, 0xf3, 0xeb, + 0x49, 0xee, 0xe3, 0xef, 0x08, 0xf3, 0xd8, 0xf5, 0x54, 0xf9, 0x58, 0xf9, 0xd3, 0xfc, 0xf3, 0xfd, + 0x1a, 0xfe, 0xad, 0xff, 0xe5, 0xfd, 0x68, 0xfc, 0x6e, 0xf9, 0x17, 0xf6, 0xda, 0xf0, 0x50, 0xee, + 0xb0, 0xee, 0x5a, 0xef, 0x11, 0xf1, 0x83, 0xf2, 0x45, 0xf1, 0x1b, 0xf0, 0x85, 0xf4, 0xbc, 0xf7, + 0x8f, 0xf8, 0xb3, 0xfb, 0xfb, 0xfd, 0x16, 0x00, 0xda, 0x02, 0xa1, 0x00, 0xa5, 0x02, 0xed, 0x06, + 0xb6, 0x05, 0x06, 0x07, 0xcb, 0x05, 0x75, 0x06, 0xa6, 0x09, 0xe6, 0x08, 0x8d, 0x0b, 0xee, 0x0b, + 0x80, 0x0a, 0x37, 0x08, 0x40, 0x06, 0x45, 0x06, 0xc0, 0x06, 0xef, 0x08, 0x27, 0x08, 0xda, 0x05, + 0x87, 0x04, 0x73, 0x06, 0xe8, 0x09, 0xfd, 0x0a, 0xd1, 0x0b, 0x5e, 0x0b, 0x78, 0x0c, 0x69, 0x0d, + 0x2b, 0x0d, 0xcd, 0x0d, 0x01, 0x11, 0xe0, 0x13, 0xf1, 0x15, 0x6f, 0x16, 0x9c, 0x14, 0x4a, 0x12, + 0xb2, 0x0f, 0x79, 0x09, 0x50, 0x06, 0xba, 0x01, 0x6e, 0xfa, 0x04, 0xf5, 0xe5, 0xef, 0xd8, 0xeb, + 0x31, 0xeb, 0x21, 0xea, 0x33, 0xe9, 0xff, 0xe9, 0x61, 0xeb, 0xfe, 0xec, 0xe5, 0xed, 0xb0, 0xf1, + 0x0c, 0xf4, 0xc1, 0xf5, 0x74, 0xf7, 0x07, 0xfa, 0x8c, 0x01, 0xfd, 0x06, 0x68, 0x0c, 0xfe, 0x0f, + 0xf9, 0x12, 0x64, 0x15, 0x44, 0x15, 0xa6, 0x16, 0xf8, 0x17, 0x07, 0x17, 0x30, 0x17, 0x9d, 0x16, + 0xfd, 0x14, 0xc2, 0x12, 0x5b, 0x11, 0xaf, 0x0a, 0xe2, 0x05, 0xf2, 0xff, 0xfe, 0xfa, 0x3b, 0xfa, + 0x9e, 0xf4, 0x4e, 0xf1, 0x12, 0xf0, 0xd9, 0xef, 0xe6, 0xf3, 0xad, 0xf3, 0x37, 0xf3, 0x48, 0xf4, + 0x02, 0xf5, 0x69, 0xf5, 0x8b, 0xf9, 0x09, 0xfc, 0xf7, 0xfd, 0x2b, 0x02, 0xac, 0x03, 0xf4, 0x07, + 0xf3, 0x0a, 0x87, 0x0c, 0x88, 0x0e, 0xd7, 0x0e, 0x2f, 0x0d, 0x14, 0x0b, 0x16, 0x08, 0x32, 0x04, + 0x44, 0x01, 0xea, 0xfc, 0x6e, 0xfc, 0x61, 0xfb, 0xce, 0xfc, 0x8d, 0xfd, 0x98, 0xfe, 0xd5, 0xfe, + 0xac, 0xfd, 0x98, 0xfb, 0x17, 0xf6, 0xa3, 0xf3, 0xd7, 0xf2, 0xa3, 0xf3, 0xb9, 0xf7, 0x82, 0xf8, + 0x62, 0xfb, 0x2a, 0xfd, 0xbe, 0xfe, 0xdb, 0xff, 0xa3, 0x00, 0x60, 0x02, 0x62, 0x03, 0x31, 0x04, + 0xd1, 0x02, 0x39, 0x03, 0xdf, 0x02, 0x3c, 0x02, 0x38, 0x02, 0x8f, 0xff, 0x48, 0xfe, 0x5d, 0xfd, + 0x0e, 0xfc, 0xd2, 0xf8, 0xc9, 0xf6, 0x1b, 0xf5, 0x26, 0xf7, 0xdc, 0xf8, 0x11, 0xf8, 0xc2, 0xf9, + 0xd2, 0xfb, 0xf9, 0xfb, 0xe7, 0xfd, 0x34, 0x00, 0x7f, 0xfe, 0x3f, 0xfe, 0xeb, 0xfc, 0xaf, 0xfc, + 0x72, 0xff, 0xc9, 0xfd, 0xc8, 0xfe, 0xc7, 0xfb, 0x9e, 0xfb, 0x63, 0xfd, 0xab, 0xfb, 0xb9, 0xfc, + 0x6e, 0xfb, 0x4f, 0xf8, 0x48, 0xf5, 0x46, 0xf2, 0x5b, 0xf1, 0x7f, 0xf2, 0xa8, 0xf4, 0x82, 0xf6, + 0xd7, 0xf9, 0xfa, 0xf8, 0xbb, 0xfa, 0xfd, 0xfc, 0x88, 0xfb, 0x48, 0xfb, 0x27, 0xfd, 0x4f, 0x00, + 0x80, 0x04, 0x3f, 0x07, 0x2c, 0x09, 0xba, 0x0b, 0x84, 0x0e, 0x72, 0x0e, 0x76, 0x0e, 0x76, 0x0e, + 0xe7, 0x0a, 0x60, 0x07, 0x96, 0x01, 0x6c, 0xfd, 0x6c, 0xfa, 0xad, 0xf5, 0xca, 0xf0, 0xa4, 0xeb, + 0x84, 0xeb, 0x97, 0xed, 0xc0, 0xed, 0x58, 0xec, 0x37, 0xec, 0x0b, 0xed, 0x87, 0xf1, 0x2b, 0xf5, + 0x52, 0xf8, 0x07, 0xfb, 0xde, 0xfd, 0xf1, 0x00, 0x31, 0x05, 0xca, 0x09, 0xd1, 0x0d, 0xe5, 0x12, + 0x54, 0x17, 0xaa, 0x19, 0x4d, 0x1c, 0xe3, 0x1b, 0x65, 0x1d, 0xfd, 0x1f, 0x4c, 0x1f, 0x01, 0x1f, + 0x71, 0x1f, 0x15, 0x1b, 0xe3, 0x15, 0x5b, 0x13, 0xb4, 0x0c, 0x16, 0x09, 0xe4, 0x04, 0xd5, 0xff, + 0xeb, 0xff, 0xd8, 0xfd, 0xfa, 0xfb, 0x34, 0xfa, 0x39, 0xf9, 0xdc, 0xf9, 0xf0, 0xf8, 0x62, 0xf9, + 0x25, 0xfc, 0x57, 0xff, 0x3f, 0x01, 0xfa, 0x04, 0xef, 0x07, 0x70, 0x0a, 0x60, 0x0c, 0xb7, 0x0b, + 0x25, 0x0f, 0x94, 0x10, 0x29, 0x10, 0xb5, 0x0f, 0x40, 0x0f, 0x8a, 0x0b, 0x3e, 0x0b, 0x34, 0x07, + 0xfe, 0x02, 0x19, 0x02, 0x69, 0x00, 0xf3, 0x00, 0xde, 0xfd, 0xdf, 0xfa, 0x0d, 0xf9, 0xf6, 0xfa, + 0x4c, 0xfc, 0x08, 0xfd, 0x94, 0xfb, 0x58, 0xf5, 0x16, 0xf3, 0xfa, 0xf0, 0xf0, 0xef, 0x8f, 0xef, + 0xbe, 0xef, 0xc9, 0xf2, 0x61, 0xf3, 0x74, 0xf5, 0x07, 0xf5, 0x3f, 0xf5, 0x50, 0xf6, 0xa3, 0xf6, + 0x90, 0xf8, 0x14, 0xf8, 0x64, 0xf7, 0xa1, 0xf4, 0x3a, 0xf2, 0x30, 0xf0, 0xa9, 0xee, 0x90, 0xee, + 0xd0, 0xee, 0x01, 0xef, 0xb6, 0xef, 0x1c, 0xf0, 0x98, 0xf0, 0x77, 0xf4, 0x24, 0xf6, 0x7f, 0xf3, + 0x7c, 0xf4, 0xdf, 0xf7, 0x10, 0xfc, 0x1f, 0x02, 0x27, 0x07, 0xa8, 0x09, 0x06, 0x0c, 0x14, 0x0a, + 0x7a, 0x08, 0xf9, 0x09, 0x14, 0x09, 0x6e, 0x09, 0xea, 0x05, 0xde, 0x03, 0x3e, 0x05, 0x4f, 0x04, + 0x5c, 0x04, 0xbe, 0x03, 0xee, 0x01, 0xe6, 0x01, 0x9b, 0x02, 0x5d, 0x01, 0xef, 0xff, 0xbd, 0xff, + 0xcf, 0x00, 0x34, 0x04, 0x4d, 0x05, 0xff, 0x05, 0x20, 0x07, 0x4f, 0x06, 0x72, 0x07, 0xe8, 0x08, + 0x28, 0x08, 0x17, 0x0a, 0x08, 0x0b, 0xf0, 0x0b, 0x2d, 0x0e, 0xbe, 0x0e, 0xa7, 0x0e, 0x3c, 0x0f, + 0x56, 0x0e, 0xd6, 0x0b, 0x90, 0x09, 0xbb, 0x01, 0xb0, 0xfa, 0xa9, 0xf4, 0x0f, 0xed, 0xfe, 0xe6, + 0x13, 0xe1, 0x02, 0xdf, 0xfe, 0xe0, 0x0b, 0xe2, 0x53, 0xe2, 0x14, 0xe4, 0x9e, 0xe5, 0x59, 0xe9, + 0xb2, 0xea, 0x8f, 0xeb, 0xb6, 0xed, 0x9c, 0xf3, 0x55, 0xf9, 0xce, 0xfd, 0x8f, 0x04, 0xc2, 0x09, + 0xd8, 0x0e, 0xef, 0x12, 0x52, 0x16, 0xb2, 0x19, 0xd8, 0x19, 0x35, 0x19, 0xa0, 0x19, 0xed, 0x18, + 0x0d, 0x17, 0x51, 0x18, 0x1a, 0x15, 0x57, 0x11, 0x1f, 0x11, 0xfa, 0x0e, 0xa8, 0x0d, 0x95, 0x07, + 0x6d, 0x01, 0x6d, 0xfe, 0x3c, 0xfc, 0x14, 0xfd, 0x5c, 0xfb, 0x5a, 0xf8, 0x0e, 0xf8, 0x89, 0xf8, + 0xa5, 0xf8, 0xce, 0xfa, 0x42, 0xfc, 0xa8, 0xfb, 0xcf, 0xfe, 0x6c, 0x01, 0x62, 0x03, 0x3f, 0x05, + 0x32, 0x05, 0x34, 0x06, 0x21, 0x08, 0xbc, 0x09, 0xdb, 0x08, 0x15, 0x09, 0xb0, 0x04, 0xa2, 0x01, + 0x28, 0xfd, 0x5c, 0xf8, 0xde, 0xf6, 0x72, 0xf5, 0x10, 0xf7, 0x3a, 0xf7, 0x44, 0xf7, 0x64, 0xf9, + 0xd6, 0xfc, 0x89, 0xfd, 0x2e, 0xfd, 0x92, 0xfb, 0x7c, 0xf8, 0x26, 0xf9, 0x3b, 0xf9, 0xe9, 0xfb, + 0x43, 0xfd, 0x17, 0xfe, 0xc1, 0x01, 0x1b, 0x02, 0xd9, 0x03, 0x45, 0x05, 0xf5, 0x04, 0x10, 0x05, + 0xa8, 0x05, 0x58, 0x05, 0xce, 0x04, 0xbf, 0x04, 0x83, 0x02, 0x60, 0x00, 0x33, 0x03, 0xf5, 0x04, + 0xaf, 0x04, 0xc4, 0x04, 0xab, 0x01, 0xf9, 0xff, 0xee, 0x00, 0x90, 0x01, 0xcb, 0x03, 0x33, 0x05, + 0x41, 0x03, 0x05, 0x03, 0xfe, 0x04, 0x4e, 0x06, 0xca, 0x07, 0x9d, 0x0a, 0x7b, 0x0c, 0xcb, 0x0c, + 0x42, 0x0a, 0x7d, 0x07, 0x03, 0x05, 0x94, 0x02, 0xea, 0x02, 0x79, 0xfe, 0x8f, 0xfa, 0x77, 0xf8, + 0x61, 0xf3, 0x6a, 0xf0, 0x1b, 0xef, 0x2e, 0xed, 0x8c, 0xec, 0x7b, 0xed, 0xa4, 0xec, 0x12, 0xed, + 0x01, 0xee, 0xac, 0xf0, 0x10, 0xf6, 0x17, 0xf6, 0xc3, 0xf5, 0xe8, 0xf6, 0x36, 0xf8, 0xb7, 0xfa, + 0x01, 0xff, 0x3f, 0x01, 0x5c, 0x04, 0x35, 0x08, 0xbd, 0x08, 0xbf, 0x09, 0x5a, 0x0b, 0x9e, 0x0a, + 0x9b, 0x0a, 0x5a, 0x0a, 0xae, 0x07, 0xb3, 0x04, 0x18, 0xff, 0x1c, 0xf8, 0x72, 0xf2, 0xfc, 0xef, + 0x04, 0xee, 0x70, 0xea, 0x6c, 0xe7, 0xe8, 0xe7, 0x16, 0xe7, 0xa3, 0xe8, 0x1a, 0xee, 0x38, 0xf0, + 0x8c, 0xf4, 0x63, 0xf6, 0x07, 0xf8, 0x86, 0xfb, 0xee, 0xff, 0x4d, 0x04, 0x28, 0x08, 0x2a, 0x0e, + 0xdf, 0x12, 0x8c, 0x17, 0x23, 0x1b, 0xf4, 0x1b, 0xa2, 0x1d, 0xa8, 0x1d, 0xa7, 0x1d, 0x80, 0x1e, + 0x1b, 0x1d, 0xa6, 0x17, 0xce, 0x15, 0x72, 0x10, 0x6b, 0x0a, 0x03, 0x09, 0x9c, 0x06, 0x59, 0x06, + 0x73, 0x03, 0xd3, 0xfe, 0x12, 0xfe, 0x54, 0xfd, 0x7a, 0xfc, 0xf6, 0xf7, 0x0b, 0xf4, 0xb0, 0xf4, + 0x50, 0xf6, 0xdc, 0xf8, 0xa2, 0xfc, 0xf7, 0xfe, 0x90, 0x00, 0xc5, 0x02, 0x01, 0x04, 0xab, 0x06, + 0x51, 0x08, 0xc2, 0x07, 0xc0, 0x07, 0x46, 0x07, 0x80, 0x07, 0xff, 0x06, 0xdc, 0x05, 0xdb, 0x01, + 0x6c, 0x00, 0x05, 0xff, 0x6a, 0xfd, 0xf3, 0xfc, 0x8c, 0xfb, 0xe6, 0xf9, 0x64, 0xf9, 0x46, 0xfa, + 0xc9, 0xfb, 0x70, 0xff, 0xf1, 0xff, 0x47, 0x01, 0xcf, 0x02, 0x3d, 0x00, 0x24, 0xff, 0xf2, 0xfb, + 0xaf, 0xfb, 0x55, 0xfa, 0xfd, 0xfa, 0x83, 0xfd, 0x27, 0xfd, 0x3b, 0xfc, 0x5f, 0xfb, 0x5d, 0xfb, + 0xd0, 0xfb, 0x80, 0xfb, 0xd5, 0xf8, 0x83, 0xf6, 0x1a, 0xf4, 0xa3, 0xef, 0x84, 0xec, 0x45, 0xec, + 0x58, 0xee, 0xc7, 0xef, 0xb8, 0xf1, 0x48, 0xf2, 0xcd, 0xf3, 0x29, 0xf5, 0xe2, 0xf3, 0xaa, 0xf5, + 0x34, 0xf8, 0x32, 0xf9, 0x73, 0xfb, 0x58, 0xfe, 0x11, 0x02, 0x04, 0x06, 0x80, 0x0a, 0x4a, 0x0d, + 0x72, 0x10, 0xee, 0x0e, 0xd4, 0x0c, 0xd2, 0x0a, 0x77, 0x06, 0xd2, 0x05, 0x50, 0x02, 0x6f, 0xfd, + 0xae, 0xfb, 0x6e, 0xf8, 0x13, 0xf8, 0x84, 0xf9, 0xc4, 0xfa, 0xe9, 0xfa, 0x39, 0xfb, 0x38, 0xf9, + 0x9c, 0xfa, 0x44, 0xfd, 0x2a, 0x00, 0x7f, 0x04, 0x9f, 0x05, 0xdb, 0x07, 0xcb, 0x0a, 0x1c, 0x0c, + 0xee, 0x0d, 0xa6, 0x0f, 0xed, 0x0f, 0xe6, 0x12, 0xd0, 0x15, 0x0b, 0x16, 0xfe, 0x14, 0xa8, 0x14, + 0xa9, 0x14, 0x86, 0x15, 0x70, 0x15, 0xdc, 0x11, 0xc0, 0x0d, 0x67, 0x05, 0x83, 0xfc, 0x3f, 0xf4, + 0x0e, 0xef, 0xe1, 0xeb, 0x7f, 0xe8, 0x55, 0xe3, 0x89, 0xe3, 0xca, 0xe5, 0x35, 0xe7, 0x86, 0xea, + 0x29, 0xeb, 0x09, 0xec, 0x40, 0xee, 0x43, 0xf1, 0xb1, 0xf4, 0xf0, 0xf9, 0xe7, 0xff, 0x85, 0x03, + 0x24, 0x08, 0x8b, 0x0c, 0xf5, 0x0f, 0x66, 0x13, 0x8b, 0x15, 0xd4, 0x15, 0x53, 0x15, 0x8f, 0x13, + 0xfb, 0x11, 0x39, 0x10, 0x0d, 0x0b, 0x1d, 0x0a, 0x12, 0x09, 0x1b, 0x08, 0x4f, 0x08, 0x47, 0x05, + 0xc1, 0x03, 0x40, 0x00, 0xfd, 0xfd, 0xc9, 0xfd, 0xf8, 0xfc, 0x7f, 0xfb, 0xe7, 0xf8, 0xd1, 0xf4, + 0x73, 0xf4, 0x47, 0xf5, 0xc0, 0xf4, 0x5e, 0xf8, 0x99, 0xfb, 0xaa, 0xfd, 0x71, 0x00, 0x73, 0x00, + 0x6f, 0x00, 0xcd, 0x01, 0x46, 0x04, 0x5f, 0x03, 0xb5, 0x03, 0xe6, 0x02, 0x68, 0x00, 0xe3, 0xfd, + 0x6e, 0xfa, 0x80, 0xf8, 0x3f, 0xf4, 0xaf, 0xf4, 0xcd, 0xf4, 0x0e, 0xf4, 0x44, 0xf7, 0x3f, 0xfa, + 0x24, 0xfe, 0x26, 0xfe, 0xd6, 0xfe, 0xd2, 0xfe, 0x12, 0x02, 0x87, 0x04, 0x74, 0x04, 0x24, 0x06, + 0x84, 0x03, 0x95, 0x05, 0x10, 0x04, 0x22, 0x02, 0x5a, 0x04, 0xb8, 0x04, 0x9d, 0x03, 0x1c, 0x03, + 0x49, 0x02, 0x80, 0x00, 0x02, 0xff, 0x45, 0xfc, 0xac, 0xf9, 0xcd, 0xf8, 0xaf, 0xf9, 0xd0, 0xf9, + 0xa9, 0xf9, 0x35, 0xf9, 0x3e, 0xf9, 0xfb, 0xfc, 0x05, 0xff, 0xe8, 0xfe, 0x32, 0x00, 0x8c, 0xff, + 0xeb, 0x00, 0xaa, 0x04, 0x2c, 0x07, 0xf6, 0x06, 0xc9, 0x05, 0x5a, 0x07, 0xef, 0x09, 0xe8, 0x0b, + 0xee, 0x0d, 0xd6, 0x0d, 0xec, 0x0a, 0xb2, 0x09, 0xc7, 0x07, 0xdc, 0x03, 0x84, 0x02, 0x5b, 0xfe, + 0x39, 0xf8, 0x8f, 0xf4, 0x21, 0xef, 0x2a, 0xec, 0x74, 0xec, 0x9f, 0xec, 0x73, 0xed, 0x22, 0xf0, + 0x4c, 0xef, 0xd3, 0xf2, 0x9e, 0xf5, 0x8f, 0xf5, 0x1f, 0xf9, 0xc4, 0xfb, 0xb6, 0xfe, 0xa8, 0x03, + 0xc0, 0x06, 0x04, 0x09, 0x30, 0x0c, 0x03, 0x0c, 0xf5, 0x0d, 0x78, 0x10, 0x29, 0x10, 0x54, 0x0e, + 0xea, 0x0d, 0x8e, 0x0d, 0xba, 0x0b, 0xb7, 0x0a, 0x0e, 0x09, 0x3a, 0x05, 0x74, 0x00, 0x28, 0xfc, + 0x8d, 0xf6, 0x6d, 0xf2, 0x0f, 0xef, 0xed, 0xe9, 0xa6, 0xe3, 0xd1, 0xe4, 0x8f, 0xe6, 0xcb, 0xe7, + 0x5a, 0xea, 0xcf, 0xeb, 0xad, 0xef, 0x33, 0xf5, 0x3f, 0xf8, 0x98, 0xf8, 0xa5, 0xfb, 0x7a, 0xff, + 0xa8, 0x04, 0xf2, 0x09, 0x43, 0x0c, 0x72, 0x0f, 0x08, 0x12, 0xfd, 0x14, 0x38, 0x15, 0xda, 0x15, + 0x01, 0x15, 0xbc, 0x13, 0xff, 0x11, 0xb3, 0x0a, 0x48, 0x08, 0x2e, 0x06, 0x26, 0x05, 0xe7, 0x04, + 0xfc, 0x02, 0xf6, 0x04, 0x84, 0x06, 0x1d, 0x07, 0xbb, 0x04, 0xd1, 0x01, 0x54, 0x00, 0x7b, 0xff, + 0xdd, 0xfd, 0xce, 0xfe, 0xc1, 0x00, 0x64, 0x01, 0xf3, 0x03, 0x1a, 0x05, 0xc7, 0x06, 0x26, 0x09, + 0x4d, 0x08, 0x6b, 0x08, 0x5f, 0x09, 0xe1, 0x09, 0xa8, 0x07, 0xaa, 0x05, 0x2f, 0x03, 0x1b, 0x01, + 0xc9, 0x01, 0x2a, 0x00, 0xa8, 0x00, 0x10, 0xff, 0xd8, 0xfb, 0x12, 0xfa, 0x23, 0xf9, 0xd2, 0xf9, + 0x3e, 0xfc, 0xcb, 0xfd, 0xcb, 0xfc, 0xcd, 0xfe, 0x07, 0x00, 0x66, 0x03, 0xaf, 0x03, 0xde, 0x02, + 0xc5, 0x02, 0x87, 0xff, 0x8d, 0x00, 0x8c, 0xfe, 0x1b, 0xfa, 0x20, 0xfa, 0x9b, 0xfb, 0x38, 0xfb, + 0x46, 0xfa, 0x50, 0xf8, 0x85, 0xf6, 0xd3, 0xf3, 0x7a, 0xef, 0x60, 0xeb, 0xc2, 0xe8, 0xb7, 0xe8, + 0x19, 0xe8, 0x2f, 0xe8, 0xe0, 0xe9, 0x55, 0xed, 0xe7, 0xf3, 0xbb, 0xf6, 0x6a, 0xf7, 0x77, 0xf7, + 0x91, 0xf6, 0xe5, 0xf9, 0x8a, 0xfe, 0x9b, 0x02, 0x7f, 0x05, 0xa1, 0x06, 0x8b, 0x07, 0x91, 0x0b, + 0x65, 0x0e, 0x1d, 0x11, 0x93, 0x14, 0x04, 0x14, 0x90, 0x12, 0x71, 0x0f, 0x96, 0x09, 0x6d, 0x05, + 0x56, 0x00, 0x2b, 0xfc, 0x03, 0xfa, 0x25, 0xf9, 0x66, 0xf8, 0xe7, 0xf7, 0x8f, 0xf7, 0x45, 0xf7, + 0x9e, 0xfb, 0x46, 0xfd, 0x4f, 0x00, 0x5f, 0x01, 0x4e, 0x01, 0xa2, 0x04, 0x0b, 0x08, 0xd6, 0x09, + 0x6a, 0x0b, 0xff, 0x0b, 0xcf, 0x0c, 0x50, 0x10, 0x04, 0x11, 0xde, 0x10, 0xa5, 0x11, 0x3a, 0x12, + 0x53, 0x12, 0x87, 0x11, 0x09, 0x10, 0xe1, 0x0e, 0x78, 0x0c, 0xb8, 0x08, 0x55, 0x03, 0x9a, 0xfc, + 0x13, 0xf6, 0xe2, 0xf0, 0x85, 0xeb, 0x14, 0xe8, 0x34, 0xe7, 0x6c, 0xe3, 0x52, 0xe4, 0xb4, 0xe5, + 0x47, 0xe5, 0xcd, 0xe6, 0xf3, 0xe9, 0xf5, 0xed, 0xd8, 0xf2, 0x96, 0xf7, 0xd5, 0xf9, 0x11, 0xfd, + 0xd5, 0x01, 0x4b, 0x06, 0x93, 0x09, 0xc9, 0x0c, 0x4c, 0x11, 0x68, 0x14, 0x57, 0x17, 0xa5, 0x16, + 0x78, 0x16, 0xfb, 0x13, 0xcc, 0x11, 0xdc, 0x11, 0x10, 0x0f, 0x22, 0x0f, 0x8c, 0x0d, 0xa1, 0x0b, + 0x95, 0x09, 0x5d, 0x07, 0xa9, 0x09, 0xb7, 0x0a, 0x35, 0x09, 0x3f, 0x07, 0xe5, 0x04, 0x0f, 0x04, + 0x6c, 0x04, 0xe2, 0xff, 0xfd, 0xfc, 0x95, 0xfb, 0xa6, 0xfa, 0xd7, 0xfc, 0x24, 0xfd, 0x05, 0xfc, + 0xa6, 0xfc, 0x09, 0xfd, 0xbc, 0xfd, 0x07, 0xfe, 0x63, 0xff, 0x8e, 0xfe, 0x0d, 0xfb, 0xbb, 0xf7, + 0x7b, 0xf4, 0xf7, 0xf1, 0xa3, 0xf0, 0x8a, 0xef, 0x06, 0xee, 0x60, 0xee, 0x0a, 0xef, 0xa2, 0xf1, + 0x03, 0xf3, 0x73, 0xf4, 0x40, 0xf6, 0xbf, 0xf6, 0xe5, 0xfa, 0xa9, 0xfc, 0x3e, 0x02, 0x1b, 0x04, + 0x66, 0x05, 0xb5, 0x07, 0xbc, 0x05, 0x30, 0x05, 0x06, 0x04, 0xb5, 0x00, 0x56, 0xff, 0x86, 0x00, + 0x25, 0xff, 0x1f, 0xfd, 0x39, 0xfb, 0xf7, 0xf7, 0xef, 0xf6, 0xf5, 0xf6, 0x10, 0xf7, 0x55, 0xf7, + 0x4c, 0xf8, 0xd8, 0xf6, 0x94, 0xf6, 0xfe, 0xf9, 0xe9, 0xfc, 0xec, 0x01, 0x6d, 0x04, 0x81, 0x05, + 0xbd, 0x07, 0x75, 0x08, 0x69, 0x0a, 0x1a, 0x0c, 0x46, 0x0d, 0x88, 0x0e, 0x77, 0x0f, 0x9b, 0x0f, + 0xbb, 0x0f, 0x16, 0x0f, 0x6c, 0x11, 0x25, 0x14, 0x36, 0x13, 0x47, 0x12, 0x6d, 0x0f, 0xdb, 0x08, + 0x64, 0x04, 0x09, 0xfd, 0xa0, 0xf5, 0x76, 0xf0, 0xc6, 0xec, 0xf2, 0xe8, 0xb2, 0xe8, 0x6a, 0xe9, + 0x70, 0xeb, 0x48, 0xf1, 0xe1, 0xf1, 0x5e, 0xf3, 0xb4, 0xf4, 0x7f, 0xf5, 0x92, 0xf9, 0x92, 0xfe, + 0x6c, 0x01, 0xa9, 0x04, 0x7d, 0x06, 0xca, 0x07, 0x86, 0x0a, 0xb7, 0x0b, 0x36, 0x0c, 0xb7, 0x0d, + 0x4a, 0x0f, 0x46, 0x0e, 0xd8, 0x0c, 0x01, 0x0a, 0x3c, 0x06, 0xc8, 0x02, 0x4e, 0x02, 0x15, 0x01, + 0x18, 0x00, 0x3a, 0xfd, 0xb4, 0xf7, 0xda, 0xf1, 0x24, 0xef, 0xc2, 0xef, 0x27, 0xed, 0xeb, 0xeb, + 0xc4, 0xec, 0x01, 0xed, 0x58, 0xf0, 0x27, 0xf4, 0x3f, 0xf6, 0x41, 0xf9, 0x16, 0xfc, 0x36, 0xfe, + 0x51, 0x01, 0x43, 0x03, 0x19, 0x06, 0xd0, 0x09, 0xe1, 0x0c, 0xa2, 0x10, 0xbd, 0x13, 0x5a, 0x16, + 0xd7, 0x15, 0x06, 0x16, 0x1d, 0x12, 0xbd, 0x0e, 0x8b, 0x0d, 0xca, 0x08, 0x8b, 0x06, 0x47, 0x03, + 0x0c, 0x02, 0xfc, 0x02, 0x47, 0x04, 0xbe, 0x06, 0x54, 0x08, 0x9c, 0x07, 0x95, 0x06, 0x48, 0x05, + 0x1f, 0x05, 0xae, 0x06, 0x0d, 0x04, 0xc9, 0x02, 0x40, 0x02, 0xcf, 0x00, 0x5c, 0x02, 0x38, 0x02, + 0x45, 0x02, 0xee, 0x03, 0x78, 0x03, 0xda, 0x02, 0x79, 0x01, 0x10, 0xff, 0x6e, 0xfc, 0x8e, 0xfa, + 0xc9, 0xf8, 0x0e, 0xf9, 0x33, 0xfa, 0xb8, 0xf8, 0xe6, 0xf6, 0xa4, 0xf5, 0x06, 0xf7, 0x6c, 0xf8, + 0xa8, 0xfa, 0x45, 0xfa, 0xa1, 0xfb, 0x72, 0xfe, 0x11, 0x00, 0x29, 0x03, 0x4d, 0x02, 0x79, 0x05, + 0xd1, 0x06, 0x90, 0x08, 0xa8, 0x09, 0x31, 0x06, 0xb3, 0x04, 0xf4, 0x02, 0xbd, 0xff, 0x41, 0xfd, + 0xfb, 0xfc, 0x74, 0xfc, 0x18, 0xfa, 0x4b, 0xf6, 0xf3, 0xf1, 0xff, 0xed, 0x3a, 0xeb, 0x3a, 0xe9, + 0x89, 0xe6, 0x45, 0xe6, 0xe0, 0xe6, 0x26, 0xe9, 0xe2, 0xec, 0xe2, 0xee, 0xc2, 0xf2, 0x67, 0xf4, + 0x2f, 0xf6, 0xb5, 0xf9, 0x10, 0xfa, 0xc7, 0xfb, 0x3a, 0xff, 0xaf, 0x00, 0x08, 0x04, 0xec, 0x05, + 0xda, 0x04, 0x38, 0x06, 0xe6, 0x06, 0xd9, 0x08, 0xfe, 0x0b, 0x88, 0x0c, 0x0d, 0x0b, 0x32, 0x07, + 0xbe, 0x00, 0x3f, 0xfd, 0xa7, 0xfa, 0xb1, 0xf8, 0xf5, 0xf5, 0xe8, 0xf2, 0x2c, 0xef, 0x32, 0xf0, + 0x88, 0xf2, 0x45, 0xf4, 0xee, 0xf8, 0x68, 0xfa, 0x68, 0xfd, 0xc3, 0x01, 0x31, 0x03, 0xf5, 0x04, + 0x74, 0x07, 0x4a, 0x09, 0x69, 0x0d, 0x1e, 0x0f, 0x97, 0x0f, 0x59, 0x11, 0x50, 0x11, 0x9c, 0x12, + 0xd1, 0x13, 0x18, 0x14, 0x0b, 0x16, 0x81, 0x15, 0xdb, 0x12, 0xb2, 0x0f, 0x85, 0x0a, 0x8e, 0x07, + 0x27, 0x05, 0x6d, 0x02, 0xf0, 0xfd, 0x6f, 0xfa, 0x3c, 0xf7, 0x8a, 0xf5, 0xaf, 0xf5, 0x38, 0xf3, + 0x56, 0xef, 0xf3, 0xee, 0xa0, 0xef, 0xab, 0xf0, 0x43, 0xf4, 0x94, 0xf6, 0x2d, 0xf9, 0x58, 0xfd, + 0x84, 0xff, 0x79, 0x01, 0xfc, 0x01, 0x76, 0x05, 0xa6, 0x07, 0x33, 0x0a, 0x7f, 0x0d, 0x94, 0x0e, + 0x6d, 0x0f, 0xa5, 0x0c, 0xd1, 0x0b, 0x43, 0x0a, 0xd9, 0x0b, 0x0d, 0x0e, 0xac, 0x0b, 0xba, 0x09, + 0x28, 0x07, 0x53, 0x07, 0x26, 0x08, 0x4a, 0x08, 0xf1, 0x08, 0xd7, 0x0a, 0x5d, 0x0c, 0xab, 0x0d, + 0xe8, 0x0b, 0xa9, 0x08, 0x02, 0x09, 0x6b, 0x06, 0x50, 0x03, 0xdc, 0x01, 0xda, 0xfd, 0x5f, 0xfc, + 0x71, 0xfc, 0x35, 0xfc, 0x15, 0xfc, 0x2d, 0xfd, 0x65, 0xfd, 0x27, 0xfc, 0x80, 0xfa, 0xe3, 0xf7, + 0x87, 0xf5, 0xfe, 0xf2, 0xfc, 0xf0, 0x10, 0xef, 0xe1, 0xed, 0xee, 0xee, 0xb4, 0xf0, 0x7f, 0xf4, + 0x63, 0xf6, 0x98, 0xf7, 0x46, 0xf7, 0x6d, 0xfa, 0xaf, 0xfc, 0xfe, 0xfe, 0x24, 0x03, 0xd1, 0x02, + 0x56, 0x07, 0xc7, 0x09, 0x91, 0x0a, 0x15, 0x0d, 0xf8, 0x0b, 0x49, 0x0a, 0xb4, 0x09, 0x62, 0x06, + 0x2f, 0x02, 0xb7, 0xfe, 0xfb, 0xfa, 0x15, 0xf7, 0xe1, 0xf3, 0x7e, 0xf3, 0xa2, 0xf3, 0xa0, 0xf3, + 0x45, 0xf2, 0xaa, 0xef, 0xf8, 0xf0, 0x11, 0xf3, 0x35, 0xf5, 0xcd, 0xf7, 0xca, 0xf8, 0x1a, 0xfd, + 0x82, 0x01, 0xc0, 0x04, 0x7b, 0x06, 0x5a, 0x06, 0x70, 0x06, 0xdd, 0x08, 0x54, 0x09, 0x10, 0x0a, + 0x1a, 0x0a, 0x94, 0x08, 0x9c, 0x08, 0xe5, 0x06, 0x47, 0x07, 0x2a, 0x0a, 0x53, 0x0a, 0x63, 0x0a, + 0x81, 0x06, 0xea, 0xff, 0x6a, 0xfb, 0x1e, 0xf6, 0x82, 0xf0, 0x2a, 0xeb, 0x40, 0xe9, 0xdf, 0xe6, + 0xdd, 0xe9, 0x4d, 0xec, 0x08, 0xec, 0xef, 0xef, 0x6a, 0xf2, 0x97, 0xf5, 0x66, 0xfa, 0x08, 0xfd, + 0xdd, 0xfe, 0xca, 0x02, 0x2d, 0x05, 0x40, 0x08, 0xc0, 0x0a, 0x6c, 0x0b, 0x5b, 0x0d, 0xd0, 0x0d, + 0x30, 0x0e, 0x7b, 0x0e, 0x76, 0x0d, 0x90, 0x0c, 0xb8, 0x08, 0x16, 0x05, 0xf3, 0x02, 0x4a, 0x01, + 0x81, 0x00, 0x14, 0xff, 0xf0, 0xfc, 0x2a, 0xfa, 0x00, 0xf9, 0xc9, 0xf6, 0xa6, 0xf4, 0x59, 0xf3, + 0x5f, 0xf1, 0x66, 0xf1, 0xeb, 0xf1, 0x94, 0xf1, 0x1e, 0xf2, 0xf5, 0xf3, 0x98, 0xf5, 0x2a, 0xf9, + 0xdc, 0xfb, 0x3e, 0xfc, 0xa7, 0xfe, 0xe6, 0xfe, 0xf5, 0x00, 0xd5, 0x02, 0x44, 0x06, 0xb3, 0x09, + 0xb7, 0x0b, 0x39, 0x0d, 0xef, 0x0a, 0xd6, 0x0a, 0x93, 0x08, 0xe5, 0x06, 0xc4, 0x06, 0x41, 0x04, + 0x74, 0x03, 0x28, 0x04, 0x71, 0x05, 0x72, 0x06, 0x07, 0x07, 0x48, 0x08, 0x56, 0x0b, 0x02, 0x0e, + 0x56, 0x10, 0xd1, 0x0f, 0xa0, 0x0e, 0xac, 0x10, 0x90, 0x0f, 0xe8, 0x0d, 0x67, 0x0c, 0x56, 0x09, + 0x21, 0x09, 0x0c, 0x09, 0x6e, 0x08, 0xc2, 0x08, 0x42, 0x07, 0xb0, 0x04, 0x58, 0x01, 0xf7, 0xfd, + 0x16, 0xfe, 0x31, 0xff, 0x52, 0xfe, 0xfd, 0xfb, 0xa7, 0xf9, 0x75, 0xf9, 0x43, 0xfa, 0x5a, 0xfc, + 0x9f, 0xfd, 0x58, 0xfd, 0x37, 0x01, 0x81, 0x01, 0xbe, 0x03, 0x57, 0x04, 0x91, 0x04, 0xb7, 0x06, + 0x8d, 0x06, 0x9e, 0x08, 0x4e, 0x08, 0x61, 0x08, 0x3f, 0x09, 0xc1, 0x07, 0x90, 0x05, 0x04, 0x05, + 0x29, 0x03, 0x23, 0xff, 0xdf, 0xfa, 0x0b, 0xf6, 0xad, 0xf2, 0xe4, 0xee, 0xf8, 0xea, 0x0f, 0xe8, + 0x2f, 0xe5, 0xcc, 0xe3, 0xa0, 0xe3, 0xba, 0xe6, 0x61, 0xe9, 0xde, 0xeb, 0x04, 0xee, 0xe5, 0xee, + 0xd4, 0xf3, 0x76, 0xf7, 0x1f, 0xfb, 0x54, 0xff, 0xbc, 0x00, 0xbb, 0x01, 0x79, 0x05, 0x3d, 0x06, + 0x04, 0x08, 0xe7, 0x0a, 0x16, 0x0b, 0xb2, 0x0b, 0x00, 0x0b, 0x91, 0x0a, 0x66, 0x0b, 0xb0, 0x08, + 0x9a, 0x07, 0xcf, 0x05, 0x6b, 0x04, 0xca, 0x02, 0x79, 0xff, 0x24, 0xfb, 0xda, 0xf6, 0x70, 0xf6, + 0x70, 0xf4, 0x0d, 0xf5, 0xb5, 0xf4, 0xef, 0xf4, 0x57, 0xf9, 0x9d, 0xfc, 0x89, 0xff, 0x89, 0x01, + 0x7d, 0x02, 0xa4, 0x04, 0xde, 0x05, 0xd3, 0x05, 0xb3, 0x07, 0xad, 0x08, 0xd2, 0x08, 0x0c, 0x0a, + 0x83, 0x0a, 0xf0, 0x0a, 0x35, 0x0c, 0x75, 0x0c, 0xe7, 0x0c, 0xbb, 0x0a, 0xee, 0x07, 0x93, 0x04, + 0x62, 0x01, 0x41, 0xfd, 0xf6, 0xfa, 0x6d, 0xfb, 0xe4, 0xfa, 0x1d, 0xfb, 0xf5, 0xf9, 0x3d, 0xf5, + 0x2e, 0xf3, 0xad, 0xf2, 0xe7, 0xf0, 0x2a, 0xf0, 0x90, 0xef, 0x49, 0xef, 0xf2, 0xf0, 0x5b, 0xf1, + 0x2b, 0xf4, 0xed, 0xf6, 0xc1, 0xf9, 0x98, 0xfd, 0x9c, 0xfe, 0x38, 0x01, 0x0e, 0x03, 0x83, 0x05, + 0x3d, 0x06, 0x60, 0x06, 0x2d, 0x08, 0x83, 0x0a, 0xb5, 0x0d, 0x45, 0x0e, 0x88, 0x0f, 0xa9, 0x10, + 0x7b, 0x11, 0xc2, 0x12, 0xca, 0x11, 0x2d, 0x10, 0xc8, 0x0f, 0x2b, 0x10, 0x4d, 0x11, 0x86, 0x13, + 0x7f, 0x12, 0x8f, 0x12, 0xc9, 0x10, 0x7e, 0x0c, 0x0e, 0x0c, 0xfc, 0x07, 0xf5, 0x03, 0xf7, 0x00, + 0x82, 0xfc, 0x8a, 0xf9, 0x05, 0xf8, 0x70, 0xf7, 0xc6, 0xf7, 0x6c, 0xf7, 0x49, 0xf7, 0x63, 0xf6, + 0x19, 0xf4, 0x9f, 0xf3, 0xbb, 0xf2, 0x87, 0xf0, 0x71, 0xf0, 0x0a, 0xf0, 0xd2, 0xf1, 0x23, 0xf3, + 0x85, 0xf3, 0x04, 0xf4, 0xc7, 0xf4, 0xbc, 0xf7, 0xcc, 0xf7, 0x4d, 0xfa, 0xba, 0xf9, 0x45, 0xfa, + 0xce, 0xfc, 0x00, 0xfc, 0x0f, 0xfe, 0xc8, 0xff, 0xc9, 0x01, 0x99, 0x04, 0xb3, 0x05, 0x02, 0x05, + 0x08, 0x04, 0xfd, 0x00, 0xd1, 0xfb, 0xf7, 0xf7, 0x1c, 0xf7, 0xea, 0xf7, 0xf4, 0xf8, 0x0f, 0xf9, + 0x47, 0xf8, 0x6f, 0xf8, 0x19, 0xfa, 0x2d, 0xfb, 0xeb, 0xfc, 0x04, 0xfe, 0x1b, 0x00, 0x8e, 0x03, + 0x1b, 0x05, 0xb8, 0x06, 0x2d, 0x08, 0x05, 0x09, 0x59, 0x0b, 0xe9, 0x0a, 0x4d, 0x09, 0xc4, 0x09, + 0x80, 0x08, 0x8e, 0x08, 0xa5, 0x08, 0x66, 0x07, 0x09, 0x08, 0x81, 0x06, 0xbe, 0x05, 0x8d, 0x07, + 0xb0, 0x06, 0x23, 0x08, 0xec, 0x07, 0x1b, 0x04, 0xcc, 0xff, 0x4b, 0xfc, 0x84, 0xf7, 0xff, 0xf4, + 0x3e, 0xf6, 0x9c, 0xf3, 0x1b, 0xf3, 0x6e, 0xf2, 0x18, 0xf1, 0x30, 0xf3, 0x50, 0xf5, 0x47, 0xf7, + 0x39, 0xf9, 0xec, 0xf9, 0x3a, 0xfb, 0x3a, 0xfc, 0x47, 0xfc, 0x02, 0xff, 0x5b, 0x01, 0xab, 0x02, + 0xb5, 0x05, 0xc5, 0x05, 0x1b, 0x05, 0xaa, 0x03, 0x50, 0x02, 0xf9, 0x03, 0x00, 0x05, 0xc4, 0x06, + 0xef, 0x06, 0x01, 0x05, 0x56, 0x03, 0x7e, 0x03, 0xec, 0x04, 0x27, 0x06, 0x08, 0x06, 0xa9, 0x04, + 0x5e, 0x03, 0xfb, 0x01, 0x39, 0x00, 0x5a, 0xfd, 0x88, 0xfb, 0x0a, 0xf9, 0x05, 0xf7, 0xa2, 0xf6, + 0x5e, 0xf4, 0xf2, 0xf5, 0xb7, 0xf6, 0x35, 0xf7, 0x3a, 0xf9, 0x34, 0xfa, 0x2f, 0xfc, 0x47, 0xfe, + 0x60, 0x02, 0x81, 0x03, 0x10, 0x06, 0xbc, 0x08, 0x83, 0x08, 0x36, 0x09, 0x36, 0x07, 0xd5, 0x06, + 0x7b, 0x08, 0x39, 0x0b, 0x48, 0x0d, 0x15, 0x0d, 0xf8, 0x0b, 0xac, 0x0b, 0x52, 0x0c, 0x19, 0x0d, + 0xad, 0x0e, 0xb3, 0x0d, 0xc1, 0x0d, 0x98, 0x0c, 0xfe, 0x08, 0x20, 0x08, 0x59, 0x06, 0xec, 0x03, + 0x28, 0x02, 0x2b, 0xff, 0x14, 0xfd, 0x51, 0xfb, 0xef, 0xf7, 0x21, 0xf7, 0x00, 0xf6, 0x20, 0xf6, + 0x1a, 0xf8, 0x67, 0xf7, 0x5d, 0xf6, 0x4c, 0xf7, 0x71, 0xf7, 0xda, 0xf8, 0xef, 0xf9, 0xae, 0xfa, + 0xba, 0xfa, 0xda, 0xfd, 0x27, 0x00, 0x5d, 0x01, 0x8e, 0x03, 0x7b, 0x02, 0x48, 0x03, 0xc3, 0x01, + 0x5a, 0x01, 0xda, 0x01, 0x3b, 0x00, 0x46, 0x00, 0xa7, 0xff, 0x2f, 0xff, 0xc5, 0x00, 0x51, 0x01, + 0x12, 0x02, 0x2d, 0x03, 0x7e, 0x01, 0x83, 0xff, 0xb2, 0xfc, 0xc7, 0xf8, 0x41, 0xf6, 0x2f, 0xf3, + 0x01, 0xf0, 0xc4, 0xee, 0x66, 0xef, 0x16, 0xf1, 0xb5, 0xf1, 0xd0, 0xf2, 0xfb, 0xf2, 0x0a, 0xf5, + 0xd1, 0xf7, 0xb7, 0xf8, 0x86, 0xf9, 0x9b, 0xfa, 0xb1, 0xfa, 0x55, 0xfd, 0xdd, 0xfd, 0x80, 0xfd, + 0xa4, 0xff, 0x56, 0x00, 0xed, 0x00, 0xde, 0x02, 0xc0, 0x02, 0xae, 0x02, 0x52, 0x00, 0x81, 0xfe, + 0xf7, 0xfe, 0x36, 0x00, 0xca, 0x03, 0xc7, 0x04, 0x83, 0x04, 0xab, 0x02, 0x55, 0x02, 0x07, 0x01, + 0x28, 0xfe, 0x78, 0xfd, 0xdc, 0xfa, 0x37, 0xfb, 0xbd, 0xfb, 0xaf, 0xfb, 0x6f, 0xfc, 0x18, 0xfd, + 0x3a, 0xfe, 0x8e, 0xff, 0x2d, 0xff, 0x68, 0x00, 0x80, 0x01, 0x13, 0x00, 0x03, 0x02, 0xa1, 0x03, + 0x69, 0x03, 0x43, 0x07, 0x64, 0x08, 0x60, 0x09, 0x61, 0x0b, 0xab, 0x0c, 0x53, 0x0e, 0xe0, 0x0e, + 0xb6, 0x0d, 0x1d, 0x0b, 0xae, 0x08, 0x76, 0x07, 0x32, 0x08, 0x8a, 0x09, 0x11, 0x0a, 0xbb, 0x09, + 0x2b, 0x08, 0x69, 0x06, 0xe4, 0x03, 0x36, 0x01, 0xbb, 0xfd, 0x31, 0xfb, 0xb8, 0xf8, 0x21, 0xf6, + 0x50, 0xf5, 0x61, 0xf4, 0x71, 0xf6, 0x9c, 0xf7, 0x15, 0xfa, 0xc3, 0xfc, 0x83, 0xfc, 0x95, 0xfd, + 0x33, 0xfd, 0xdd, 0xfe, 0x0d, 0x01, 0x1d, 0x04, 0x8d, 0x06, 0x61, 0x08, 0xd2, 0x09, 0x30, 0x0a, + 0xa9, 0x0c, 0x61, 0x0f, 0xc3, 0x10, 0xa9, 0x11, 0x22, 0x12, 0xa6, 0x11, 0x94, 0x11, 0xd1, 0x10, + 0x61, 0x0f, 0x38, 0x10, 0xcf, 0x0e, 0x99, 0x0e, 0x45, 0x0e, 0x1d, 0x0b, 0x82, 0x08, 0xc0, 0x05, + 0x11, 0x02, 0x59, 0xff, 0x8d, 0xfc, 0x8d, 0xfa, 0xf4, 0xf8, 0x32, 0xf7, 0x55, 0xf8, 0x3e, 0xf8, + 0xcd, 0xf7, 0xb3, 0xf7, 0xf7, 0xf3, 0x3f, 0xf1, 0x09, 0xf1, 0x79, 0xf2, 0xea, 0xf4, 0x07, 0xf6, + 0xa3, 0xf6, 0xf5, 0xf5, 0x04, 0xf8, 0xce, 0xf8, 0xe0, 0xf9, 0x30, 0xfc, 0xb0, 0xfb, 0x1b, 0xfe, + 0x24, 0xfd, 0xbe, 0xfc, 0x76, 0xfe, 0x1c, 0xfe, 0x04, 0xff, 0x6b, 0x01, 0x95, 0x02, 0x7c, 0x04, + 0x02, 0x05, 0x3b, 0x03, 0x91, 0x01, 0xaf, 0xff, 0x91, 0xfd, 0x3b, 0xfb, 0xdf, 0xf7, 0xc2, 0xf5, + 0xbd, 0xf3, 0x5e, 0xf3, 0xb4, 0xf3, 0x62, 0xf3, 0x86, 0xf3, 0xfd, 0xf3, 0x40, 0xf6, 0xa6, 0xf7, + 0x03, 0xfa, 0x3b, 0xfc, 0xae, 0xfc, 0x05, 0xfd, 0x6a, 0xfd, 0x86, 0xfe, 0x97, 0x01, 0x8c, 0x02, + 0x43, 0x02, 0xa7, 0x02, 0x4e, 0x02, 0x10, 0x03, 0x14, 0x04, 0xb6, 0x03, 0xaa, 0x05, 0x53, 0x05, + 0x9e, 0x04, 0x32, 0x05, 0xda, 0x03, 0xcb, 0x03, 0x02, 0x02, 0x90, 0x00, 0x4c, 0xfe, 0x87, 0xfe, + 0x5f, 0xfd, 0x63, 0xfa, 0x33, 0xf9, 0xa4, 0xf6, 0xd5, 0xf5, 0x45, 0xf5, 0x19, 0xf4, 0x3d, 0xf4, + 0x54, 0xf4, 0x9f, 0xf5, 0x5b, 0xf8, 0xcb, 0xf9, 0xc0, 0xfb, 0x57, 0xfe, 0x00, 0xff, 0xf9, 0x01, + 0x4f, 0x04, 0xb0, 0x04, 0x75, 0x06, 0x44, 0x05, 0xbe, 0x04, 0xea, 0x04, 0x52, 0x05, 0xb4, 0x06, + 0xdf, 0x06, 0xff, 0x06, 0x7a, 0x07, 0x8d, 0x07, 0xe7, 0x06, 0xd2, 0x05, 0x1e, 0x05, 0xdb, 0x06, + 0x16, 0x08, 0x75, 0x07, 0x1e, 0x06, 0x0c, 0x04, 0x41, 0x00, 0xe2, 0xfb, 0x95, 0xfa, 0xbf, 0xf7, + 0x71, 0xf5, 0x1b, 0xf4, 0xa8, 0xf0, 0x7a, 0xf0, 0x56, 0xf0, 0xe3, 0xf1, 0x7b, 0xf4, 0x5f, 0xf6, + 0x09, 0xf9, 0x3b, 0xfb, 0xb7, 0xfd, 0xea, 0xfe, 0x10, 0x00, 0xee, 0xff, 0x2a, 0x01, 0x3f, 0x03, + 0xcf, 0x04, 0xcb, 0x07, 0xa1, 0x0a, 0xed, 0x0c, 0x89, 0x0e, 0x3a, 0x10, 0x8c, 0x10, 0x29, 0x11, + 0xb6, 0x10, 0xe5, 0x0f, 0x82, 0x10, 0x12, 0x10, 0x9d, 0x11, 0xc2, 0x11, 0x4e, 0x10, 0x2f, 0x10, + 0x68, 0x0f, 0x67, 0x0e, 0xbe, 0x0d, 0xb6, 0x09, 0xe3, 0x05, 0xd8, 0x02, 0x03, 0xff, 0xe6, 0xfe, + 0xc7, 0xfe, 0x53, 0xfd, 0x64, 0xfe, 0x79, 0xfd, 0x4d, 0xfd, 0x00, 0xfe, 0x8a, 0xfe, 0x4c, 0xff, + 0xd4, 0xff, 0x65, 0x01, 0xda, 0x00, 0xa5, 0x02, 0x17, 0x03, 0x48, 0x02, 0x8b, 0x02, 0xf8, 0x01, + 0x84, 0x03, 0xb9, 0x02, 0x34, 0x02, 0x7b, 0x01, 0x1e, 0xff, 0xd9, 0xfd, 0x1a, 0xfd, 0x5c, 0xfd, + 0x0f, 0xff, 0x43, 0x00, 0x4f, 0x01, 0x55, 0x02, 0xb0, 0x01, 0x18, 0xff, 0x84, 0xfb, 0xad, 0xf5, + 0x3e, 0xf2, 0x17, 0xf0, 0x9f, 0xef, 0x34, 0xf0, 0xff, 0xef, 0xc4, 0xef, 0x41, 0xf0, 0x94, 0xf1, + 0x03, 0xf2, 0x9e, 0xf3, 0x22, 0xf6, 0x2d, 0xf6, 0x1d, 0xf7, 0x0a, 0xf8, 0xed, 0xf7, 0xdf, 0xfa, + 0xf2, 0xfc, 0xe3, 0xfd, 0xb9, 0x00, 0xca, 0x02, 0xe0, 0x03, 0xff, 0x03, 0x94, 0x02, 0xc2, 0x03, + 0x26, 0x03, 0xf4, 0x02, 0x8e, 0x02, 0x5f, 0x01, 0x30, 0x03, 0x77, 0x04, 0x61, 0x06, 0xc1, 0x05, + 0x81, 0x05, 0xa6, 0x04, 0x23, 0x03, 0x2e, 0x01, 0x44, 0xff, 0x73, 0xfe, 0x6e, 0xfc, 0xa1, 0xfa, + 0x75, 0xfa, 0x5c, 0xf9, 0xa6, 0xf9, 0xbe, 0xfb, 0xcf, 0xfa, 0x5e, 0xfa, 0x92, 0xfb, 0xd9, 0xf9, + 0x4e, 0xfb, 0xb2, 0xfc, 0x29, 0xfd, 0xed, 0x00, 0x6d, 0x02, 0x9c, 0x03, 0x30, 0x04, 0x6d, 0x03, + 0xe5, 0x02, 0x47, 0x02, 0xd4, 0x01, 0xfd, 0x02, 0x7b, 0x03, 0x66, 0x03, 0xde, 0x02, 0x0a, 0x02, + 0x96, 0x03, 0x4a, 0x04, 0x9f, 0x04, 0xcb, 0x03, 0xc2, 0x01, 0xe8, 0xfe, 0xa0, 0xfa, 0xc7, 0xf8, + 0x1b, 0xf6, 0x57, 0xf4, 0xbd, 0xf3, 0x28, 0xf3, 0x6a, 0xf5, 0x4e, 0xf5, 0xe5, 0xf6, 0x04, 0xf8, + 0xc1, 0xf8, 0xef, 0xfa, 0x55, 0xfd, 0xc5, 0xfe, 0xfa, 0xff, 0xc6, 0x01, 0xd4, 0x02, 0xf1, 0x06, + 0x8b, 0x0a, 0x74, 0x0b, 0xa4, 0x0d, 0x62, 0x10, 0xba, 0x12, 0x8f, 0x15, 0x3d, 0x18, 0xc3, 0x17, + 0x2c, 0x17, 0xa7, 0x15, 0x8d, 0x13, 0x01, 0x14, 0x16, 0x14, 0xe5, 0x13, 0x76, 0x12, 0x84, 0x0e, + 0x8d, 0x0b, 0xa8, 0x08, 0xfa, 0x05, 0xa3, 0x04, 0x57, 0x01, 0x69, 0xff, 0xbf, 0xfd, 0xfc, 0xf9, + 0x95, 0xf8, 0x9f, 0xf5, 0x12, 0xf2, 0xaa, 0xf1, 0x7f, 0xf0, 0x41, 0xf0, 0x71, 0xf0, 0xc0, 0xf0, + 0xa6, 0xf1, 0x69, 0xf2, 0xe3, 0xf2, 0x0a, 0xf3, 0xa3, 0xf4, 0x21, 0xf4, 0xa7, 0xf4, 0xad, 0xf5, + 0xe0, 0xf5, 0xa4, 0xf8, 0x5a, 0xf9, 0x45, 0xf9, 0x91, 0xfb, 0x67, 0xfc, 0x59, 0xfe, 0x04, 0x00, + 0xcd, 0x00, 0x4b, 0x02, 0x0a, 0x03, 0x41, 0x03, 0xf9, 0x03, 0xc2, 0x02, 0x58, 0x01, 0x80, 0xff, + 0x70, 0xfd, 0xb6, 0xfc, 0x5d, 0xfa, 0x7a, 0xf9, 0xad, 0xf9, 0x67, 0xf9, 0x04, 0xfa, 0xed, 0xfb, + 0x40, 0xfd, 0xce, 0xfd, 0x8c, 0xfe, 0xfa, 0xff, 0xb1, 0x00, 0x79, 0x02, 0x7c, 0x03, 0xa6, 0x02, + 0x83, 0x03, 0x42, 0x04, 0xda, 0x03, 0x45, 0x05, 0xfc, 0x05, 0xe7, 0x07, 0x68, 0x09, 0x78, 0x09, + 0xb6, 0x0b, 0xc7, 0x0a, 0x5a, 0x09, 0xca, 0x06, 0x3b, 0x04, 0x28, 0x03, 0x73, 0x03, 0xd3, 0x03, + 0x43, 0x02, 0x00, 0x02, 0x8c, 0x00, 0xb4, 0xfe, 0x44, 0xfc, 0x73, 0xf9, 0x0a, 0xf7, 0xf4, 0xf3, + 0x67, 0xf1, 0xa1, 0xf0, 0xb9, 0xef, 0x83, 0xef, 0x3c, 0xf2, 0x85, 0xf3, 0xe9, 0xf5, 0x70, 0xfa, + 0x63, 0xfb, 0x1b, 0xfe, 0x6d, 0xfe, 0x4f, 0xfe, 0x3e, 0x01, 0x94, 0x02, 0x4c, 0x03, 0xee, 0x02, + 0x5c, 0x02, 0x7b, 0x04, 0x41, 0x06, 0x9c, 0x06, 0xec, 0x08, 0x28, 0x09, 0xc4, 0x08, 0x0e, 0x09, + 0x0d, 0x08, 0x7c, 0x09, 0xd9, 0x0a, 0xed, 0x09, 0xbb, 0x07, 0x94, 0x06, 0x81, 0x04, 0x24, 0x01, + 0xe9, 0xfe, 0x0a, 0xfb, 0x41, 0xf8, 0xd6, 0xf5, 0x41, 0xf3, 0x53, 0xf3, 0x87, 0xf2, 0xc9, 0xf4, + 0x16, 0xf8, 0xc3, 0xfa, 0xc9, 0xfd, 0x9a, 0xff, 0xc2, 0xfe, 0xf9, 0xfd, 0xd8, 0xfd, 0x25, 0xfe, + 0x06, 0x01, 0x3e, 0x04, 0xdd, 0x05, 0x41, 0x06, 0xaa, 0x07, 0x28, 0x09, 0x07, 0x0b, 0x11, 0x0d, + 0x05, 0x0d, 0x9c, 0x0c, 0x01, 0x0b, 0x5c, 0x09, 0x09, 0x09, 0x95, 0x08, 0xbc, 0x09, 0x24, 0x0b, + 0xf5, 0x0a, 0x67, 0x0c, 0xe6, 0x0b, 0xf6, 0x09, 0x23, 0x09, 0xe7, 0x05, 0xf1, 0x03, 0x26, 0x02, + 0xd5, 0xfc, 0x8a, 0xfa, 0x5d, 0xf9, 0x60, 0xf8, 0x6b, 0xf9, 0x41, 0xfa, 0x13, 0xfa, 0x1d, 0xf9, + 0x67, 0xf9, 0x21, 0xfa, 0xd5, 0xfb, 0x01, 0xfd, 0xfe, 0xfc, 0xbf, 0xfd, 0x80, 0xfc, 0x61, 0xfd, + 0x9a, 0xfe, 0xaf, 0xfe, 0x94, 0x00, 0x81, 0x00, 0x89, 0xff, 0xd9, 0xff, 0x43, 0xff, 0x7a, 0xff, + 0x79, 0x00, 0x2a, 0x02, 0x3d, 0x05, 0x30, 0x07, 0x39, 0x07, 0xa7, 0x07, 0x12, 0x05, 0x98, 0x02, + 0x1e, 0x00, 0x61, 0xfc, 0xd1, 0xf9, 0x13, 0xf7, 0xbb, 0xf4, 0x8a, 0xf3, 0xde, 0xf2, 0x12, 0xf2, + 0x91, 0xf2, 0x41, 0xf3, 0x09, 0xf3, 0xba, 0xf3, 0x37, 0xf5, 0xec, 0xf5, 0xa9, 0xf6, 0x89, 0xf7, + 0x0b, 0xf8, 0xd8, 0xfa, 0xc9, 0xfe, 0x4f, 0x00, 0xfa, 0x01, 0x36, 0x02, 0xbc, 0x03, 0xec, 0x04, + 0x79, 0x04, 0x17, 0x05, 0x3b, 0x03, 0x40, 0x03, 0x3b, 0x02, 0xb7, 0x01, 0x43, 0x02, 0xf5, 0x02, + 0x3f, 0x03, 0xc6, 0x02, 0x39, 0x03, 0xa4, 0x03, 0x35, 0x03, 0x02, 0x01, 0xbb, 0xfd, 0x28, 0xfb, + 0x05, 0xf9, 0xf6, 0xf7, 0x1d, 0xf8, 0xfb, 0xf6, 0x9c, 0xf5, 0x1d, 0xf7, 0xae, 0xf6, 0x65, 0xf7, + 0x19, 0xfa, 0xcf, 0xfa, 0xcf, 0xfd, 0x04, 0x00, 0x6c, 0x01, 0xc2, 0x04, 0xa5, 0x06, 0x70, 0x06, + 0x34, 0x05, 0x8b, 0x03, 0x00, 0x04, 0x27, 0x05, 0x91, 0x05, 0x91, 0x07, 0xd3, 0x07, 0xd0, 0x07, + 0x91, 0x07, 0xc3, 0x06, 0x0b, 0x07, 0x78, 0x07, 0xf1, 0x07, 0x3e, 0x07, 0x29, 0x07, 0x45, 0x05, + 0xa4, 0x01, 0x27, 0xff, 0x93, 0xfc, 0x04, 0xfd, 0xa8, 0xfc, 0xe8, 0xfb, 0x5c, 0xfb, 0x9a, 0xf8, + 0x61, 0xf8, 0xcd, 0xfa, 0xe3, 0xfa, 0x50, 0xfb, 0x84, 0xfd, 0x25, 0xfd, 0x52, 0xfe, 0xf9, 0xff, + 0xd9, 0xff, 0x75, 0x01, 0x45, 0x04, 0x16, 0x06, 0x38, 0x07, 0x62, 0x09, 0xd3, 0x0b, 0xcc, 0x0d, + 0x38, 0x0f, 0xff, 0x0f, 0xaf, 0x10, 0x99, 0x10, 0x9a, 0x0f, 0xdb, 0x0e, 0xe0, 0x0d, 0xff, 0x0d, + 0x93, 0x0d, 0x31, 0x0b, 0x87, 0x0a, 0xe9, 0x09, 0xae, 0x08, 0x26, 0x09, 0x73, 0x07, 0x05, 0x05, + 0x89, 0x02, 0x81, 0xfc, 0x9f, 0xf8, 0x1b, 0xf5, 0xa9, 0xf2, 0xda, 0xf2, 0x7d, 0xf2, 0xa2, 0xf2, + 0xed, 0xf1, 0xa6, 0xf1, 0xb0, 0xf2, 0x79, 0xf4, 0xe4, 0xf4, 0x11, 0xf5, 0xf1, 0xf6, 0xa7, 0xf6, + 0x3c, 0xf7, 0xfa, 0xf7, 0xb5, 0xf7, 0xa8, 0xfa, 0x91, 0xfd, 0xd6, 0xff, 0xdd, 0x01, 0x8a, 0x02, + 0xe4, 0x01, 0x59, 0x02, 0xc9, 0x03, 0x58, 0x05, 0xba, 0x05, 0x7f, 0x04, 0xc0, 0x04, 0x53, 0x03, + 0xf4, 0x02, 0x52, 0x02, 0x75, 0xff, 0xf8, 0xfc, 0xa0, 0xfa, 0xb1, 0xf7, 0xf4, 0xf6, 0x7e, 0xf7, + 0x8e, 0xf6, 0xfa, 0xf5, 0x78, 0xf6, 0x13, 0xf7, 0x9a, 0xf8, 0xa5, 0xfa, 0x24, 0xfc, 0x1f, 0xfd, + 0x4d, 0xfd, 0x5d, 0xfc, 0x19, 0xfd, 0x44, 0xfe, 0xb5, 0xff, 0x8c, 0x02, 0x92, 0x03, 0x2a, 0x07, + 0x9f, 0x08, 0x09, 0x08, 0x02, 0x08, 0x7b, 0x05, 0x8e, 0x03, 0x39, 0x02, 0x3e, 0x01, 0x41, 0x00, + 0x58, 0x00, 0x87, 0xff, 0x46, 0xff, 0xdd, 0xff, 0x87, 0x00, 0x92, 0x00, 0xa4, 0xfe, 0x13, 0xfc, + 0x06, 0xfa, 0xaf, 0xf7, 0x59, 0xf5, 0x35, 0xf4, 0x1d, 0xf3, 0xd3, 0xf2, 0x56, 0xf6, 0x27, 0xf8, + 0x06, 0xfb, 0x76, 0xfd, 0x98, 0xfe, 0xf3, 0x01, 0xec, 0x02, 0xbd, 0x02, 0xe4, 0x03, 0xef, 0x04, + 0x2f, 0x05, 0x44, 0x05, 0x71, 0x04, 0xb1, 0x05, 0x55, 0x06, 0xee, 0x05, 0x78, 0x07, 0xb4, 0x07, + 0xa6, 0x08, 0x7c, 0x09, 0x70, 0x07, 0x24, 0x06, 0x75, 0x06, 0xf4, 0x06, 0x6a, 0x06, 0x06, 0x06, + 0xf0, 0x04, 0xd9, 0x01, 0x8a, 0xfe, 0xe7, 0xf9, 0x43, 0xf7, 0x2a, 0xf5, 0xec, 0xf3, 0xe7, 0xf3, + 0xb6, 0xf2, 0x33, 0xf3, 0x2f, 0xf6, 0x3f, 0xf7, 0xaa, 0xf7, 0xe6, 0xf8, 0x73, 0xf8, 0x7e, 0xf8, + 0xd8, 0xf9, 0x5e, 0xfa, 0xb7, 0xfb, 0x84, 0xfe, 0x45, 0x02, 0xa4, 0x04, 0xe2, 0x05, 0x9d, 0x07, + 0xec, 0x09, 0x0e, 0x0c, 0x21, 0x0e, 0x01, 0x0f, 0x5e, 0x0e, 0xae, 0x0d, 0x61, 0x0d, 0x84, 0x0d, + 0xec, 0x0f, 0x0b, 0x12, 0xea, 0x10, 0x6f, 0x11, 0xad, 0x11, 0xea, 0x0f, 0xb5, 0x0f, 0xc9, 0x0d, + 0x08, 0x0a, 0x57, 0x07, 0x4f, 0x02, 0xbc, 0xff, 0xa2, 0xfd, 0x8a, 0xfb, 0x7d, 0xfb, 0xa1, 0xfa, + 0xb9, 0xfa, 0xe9, 0xfb, 0x1f, 0xfb, 0x81, 0xfb, 0x4c, 0xfc, 0x67, 0xfc, 0x2e, 0xfd, 0x30, 0xff, + 0xd8, 0xfe, 0x66, 0xfe, 0x2e, 0xfe, 0x2e, 0xfc, 0x7a, 0xfc, 0x74, 0xfc, 0x3d, 0xfd, 0xd1, 0xfd, + 0xbd, 0xfd, 0x21, 0xfe, 0xaf, 0xfe, 0x15, 0x00, 0x28, 0x02, 0x03, 0x03, 0xf0, 0x00, 0x30, 0x00, + 0x16, 0xff, 0x53, 0xfe, 0x5c, 0xfd, 0xcc, 0xfa, 0xb9, 0xf8, 0x4a, 0xf7, 0x44, 0xf5, 0x00, 0xf5, + 0xdf, 0xf4, 0x4f, 0xf3, 0xbd, 0xf2, 0xcc, 0xf3, 0x93, 0xf3, 0x13, 0xf4, 0x7d, 0xf5, 0xd8, 0xf6, + 0x13, 0xf8, 0xad, 0xfa, 0x6b, 0xfc, 0x7a, 0xfe, 0x06, 0x00, 0xbf, 0x02, 0x86, 0x05, 0x69, 0x05, + 0x09, 0x07, 0x61, 0x08, 0x10, 0x07, 0x80, 0x07, 0x7a, 0x07, 0x5b, 0x07, 0x77, 0x07, 0xdd, 0x06, + 0x00, 0x06, 0x77, 0x06, 0x6f, 0x06, 0xc9, 0x06, 0x63, 0x07, 0xe8, 0x06, 0x4a, 0x07, 0xdc, 0x05, + 0xa9, 0x03, 0xa4, 0x01, 0x5c, 0xfe, 0x2f, 0xfb, 0xd8, 0xf8, 0xeb, 0xf6, 0xd1, 0xf3, 0x34, 0xf3, + 0xa1, 0xf1, 0x4a, 0xf2, 0x8d, 0xf4, 0x38, 0xf6, 0xca, 0xf9, 0x7c, 0xfb, 0x9e, 0xfb, 0xf7, 0xfb, + 0x3f, 0xfc, 0x5f, 0xfc, 0xfa, 0xfb, 0x12, 0xfb, 0x0c, 0xfb, 0x42, 0xfc, 0x15, 0xfd, 0x72, 0xff, + 0xff, 0x00, 0x2b, 0x02, 0xf3, 0x02, 0x10, 0x02, 0x5e, 0x01, 0x5c, 0x01, 0x11, 0x02, 0xab, 0x01, + 0x24, 0x01, 0x71, 0x01, 0x34, 0x00, 0x77, 0xff, 0x91, 0xfd, 0x3d, 0xfc, 0x34, 0xfb, 0x74, 0xfa, + 0xee, 0xfa, 0x92, 0xf9, 0xfc, 0xf7, 0x53, 0xf8, 0x0c, 0xf8, 0x48, 0xf8, 0xd1, 0xfb, 0x8a, 0xfd, + 0x26, 0xff, 0x60, 0x01, 0x8c, 0x00, 0x84, 0x01, 0x54, 0x04, 0x0e, 0x08, 0xd9, 0x0a, 0xc7, 0x0b, + 0x48, 0x0d, 0x35, 0x0f, 0x8b, 0x11, 0x8c, 0x13, 0xa0, 0x14, 0xc4, 0x14, 0x59, 0x13, 0x1e, 0x12, + 0x70, 0x0f, 0x13, 0x0f, 0x40, 0x0e, 0x01, 0x0d, 0x4d, 0x0d, 0xc6, 0x0d, 0xac, 0x0d, 0x2e, 0x0d, + 0x44, 0x0b, 0x44, 0x07, 0x91, 0x03, 0xc1, 0xff, 0xb8, 0xfb, 0x90, 0xf7, 0xb3, 0xf3, 0x24, 0xf3, + 0xc3, 0xf1, 0x19, 0xf3, 0xd9, 0xf3, 0x9d, 0xf2, 0x2a, 0xf2, 0x02, 0xf3, 0x31, 0xf3, 0xdb, 0xf2, + 0xbd, 0xf4, 0x38, 0xf4, 0xa9, 0xf3, 0xc6, 0xf4, 0x75, 0xf5, 0x61, 0xf7, 0xae, 0xf9, 0x70, 0xfc, + 0x4c, 0xfe, 0x9b, 0x00, 0xa3, 0x01, 0xee, 0x01, 0xa2, 0x00, 0x57, 0x01, 0x56, 0x03, 0xf3, 0x02, + 0xaa, 0x04, 0x33, 0x05, 0x6d, 0x05, 0xe0, 0x05, 0x96, 0x03, 0x06, 0x01, 0xd5, 0xff, 0x57, 0xfd, + 0x77, 0xfb, 0x0d, 0xfb, 0xb3, 0xf9, 0xfa, 0xf9, 0x3a, 0xfa, 0x47, 0xfa, 0xd5, 0xfb, 0x17, 0xfd, + 0x8a, 0xfd, 0xe7, 0xfc, 0xf4, 0xfb, 0x32, 0xfc, 0x88, 0xfc, 0x25, 0xfd, 0x0a, 0xff, 0x56, 0x02, + 0xb3, 0x02, 0xb4, 0x03, 0xea, 0x04, 0xe9, 0x03, 0x36, 0x04, 0x12, 0x06, 0xc6, 0x06, 0xad, 0x06, + 0x37, 0x05, 0x43, 0x00, 0x75, 0xff, 0x38, 0x01, 0xb9, 0x03, 0xca, 0x04, 0xb0, 0x06, 0x2d, 0x08, + 0x59, 0x08, 0x43, 0x04, 0x72, 0x00, 0x7b, 0xfe, 0x39, 0xfb, 0x16, 0xfa, 0x23, 0xf8, 0xe1, 0xf6, + 0xc5, 0xfa, 0x62, 0xfa, 0xf8, 0xf9, 0x03, 0xfa, 0x30, 0xfb, 0xe2, 0xff, 0xc4, 0xfd, 0x2e, 0xfa, + 0x5d, 0xfa, 0x0f, 0xfd, 0x6a, 0xfe, 0xe9, 0xfd, 0x9d, 0xfc, 0xa5, 0xfc, 0x7e, 0xfa, 0x06, 0xf7, + 0xb3, 0xf9, 0xe1, 0xfd, 0xbf, 0xff, 0x97, 0x01, 0x8a, 0xfc, 0x00, 0xf9, 0xc0, 0xf7, 0x3e, 0xf8, + 0xc7, 0xfb, 0x65, 0xfe, 0xc5, 0x01, 0x94, 0x03, 0x59, 0x00, 0xbc, 0xfe, 0x22, 0x00, 0xf1, 0x00, + 0xa8, 0xff, 0x90, 0x00, 0xe8, 0x03, 0xfb, 0x06, 0x0d, 0x09, 0xfd, 0x09, 0xbd, 0x09, 0xd7, 0x0d, + 0x0d, 0x14, 0x39, 0x17, 0x18, 0x19, 0xde, 0x14, 0xcc, 0x16, 0xae, 0x19, 0xd7, 0x1c, 0x9e, 0x1e, + 0x25, 0x1a, 0x1b, 0x15, 0x63, 0x10, 0xf3, 0x0b, 0x2d, 0x0b, 0x4d, 0x0b, 0x9a, 0x0c, 0xf4, 0x0c, + 0xb0, 0x08, 0x68, 0x03, 0x09, 0x03, 0x4a, 0x04, 0x77, 0x02, 0x48, 0xfe, 0x48, 0x00, 0x27, 0x00, + 0xf3, 0xfd, 0xe9, 0xfc, 0xd3, 0xf9, 0xf6, 0xf7, 0xcb, 0xf6, 0x45, 0xf7, 0x6a, 0xf6, 0x67, 0xf2, + 0xe1, 0xf0, 0x0f, 0xf1, 0xb2, 0xf1, 0xe5, 0xf2, 0x62, 0xf3, 0x20, 0xf2, 0x2f, 0xee, 0x2c, 0xe9, + 0x3b, 0xe4, 0x51, 0xe5, 0xdd, 0xe5, 0xc5, 0xe7, 0x4d, 0xe9, 0x67, 0xe4, 0x58, 0xe3, 0x84, 0xe5, + 0x24, 0xeb, 0xce, 0xec, 0x02, 0xf0, 0xd7, 0xf7, 0x11, 0xfb, 0xbb, 0xfb, 0x84, 0xfe, 0x59, 0xff, + 0xb0, 0x00, 0x65, 0x03, 0x50, 0x07, 0x0d, 0x09, 0xcd, 0x07, 0xb4, 0x08, 0x2e, 0x09, 0x47, 0x0b, + 0xfa, 0x0a, 0xb2, 0x09, 0x4b, 0x06, 0xf6, 0xfd, 0x55, 0xfa, 0x1a, 0xf4, 0x73, 0xf1, 0x55, 0xf1, + 0x20, 0xf3, 0x1d, 0xf6, 0xaf, 0xf4, 0xe9, 0xf4, 0x13, 0xf8, 0x81, 0xfb, 0xc7, 0xfc, 0xd3, 0x00, + 0xe5, 0x06, 0x6e, 0x09, 0x15, 0x0c, 0xb3, 0x0e, 0x1e, 0x0e, 0xa8, 0x0f, 0xe7, 0x14, 0x5b, 0x19, + 0x73, 0x17, 0x89, 0x15, 0x2e, 0x17, 0x87, 0x1a, 0x38, 0x1e, 0x79, 0x1f, 0xeb, 0x1e, 0x40, 0x1a, + 0xb4, 0x16, 0x9c, 0x10, 0xc6, 0x0a, 0x1a, 0x06, 0xac, 0xff, 0x8a, 0xfb, 0x03, 0xf4, 0xdb, 0xec, + 0xf4, 0xe7, 0xa0, 0xe8, 0x5c, 0xe6, 0x2d, 0xe6, 0x7d, 0xec, 0xb2, 0xf0, 0x0a, 0xf5, 0x0c, 0xfa, + 0x98, 0xf9, 0xe7, 0xf7, 0x65, 0xf7, 0x90, 0xfd, 0xa8, 0x01, 0x91, 0xff, 0x3b, 0x01, 0x2c, 0x04, + 0x0e, 0x09, 0x94, 0x0f, 0x4c, 0x14, 0x2c, 0x15, 0x02, 0x12, 0xb6, 0x0e, 0x16, 0x07, 0x32, 0x04, + 0x6e, 0x02, 0x42, 0x02, 0x84, 0x03, 0xbe, 0xfc, 0x3b, 0xf9, 0xf9, 0xf6, 0x14, 0xf6, 0x54, 0xf4, + 0x51, 0xf2, 0x06, 0xf3, 0xd7, 0xf2, 0x19, 0xf3, 0x96, 0xf1, 0x81, 0xf1, 0x3e, 0xef, 0x1e, 0xee, + 0x3e, 0xf5, 0x43, 0xf7, 0x77, 0xf8, 0x5e, 0xfc, 0xb4, 0xfe, 0x3b, 0x06, 0x35, 0x0a, 0xc2, 0x0f, + 0xda, 0x12, 0x26, 0x11, 0x7c, 0x0f, 0xb6, 0x0c, 0x1c, 0x0e, 0x54, 0x0e, 0x05, 0x12, 0x0f, 0x12, + 0x01, 0x0d, 0xf5, 0x08, 0x5b, 0x06, 0x58, 0x06, 0xa2, 0x05, 0x8d, 0x08, 0x3a, 0x0d, 0x1f, 0x0f, + 0x37, 0x0f, 0xfa, 0x0e, 0xcf, 0x0c, 0xf8, 0x06, 0x44, 0x07, 0xc1, 0x06, 0xbb, 0x02, 0x47, 0x00, + 0xcd, 0xfc, 0x52, 0xfc, 0x29, 0x00, 0x36, 0x01, 0xca, 0x02, 0x10, 0x00, 0xa8, 0xf8, 0xf7, 0xf3, + 0xe7, 0xee, 0xd8, 0xeb, 0x4c, 0xeb, 0x9d, 0xed, 0x89, 0xeb, 0x36, 0xe6, 0x02, 0xe4, 0x67, 0xe6, + 0xbc, 0xe8, 0x99, 0xeb, 0xd4, 0xef, 0x42, 0xf4, 0x38, 0xf6, 0xd9, 0xf8, 0x25, 0xf9, 0x10, 0xf9, + 0x89, 0xfa, 0xad, 0xff, 0x2a, 0x04, 0x74, 0x04, 0x5d, 0x06, 0xc1, 0x06, 0x4d, 0x0a, 0xf6, 0x0b, + 0xa2, 0x0c, 0x0b, 0x0b, 0xcf, 0x03, 0xff, 0xfe, 0x87, 0xf8, 0xd6, 0xf5, 0xd9, 0xf1, 0x53, 0xf0, + 0xa3, 0xf1, 0xc4, 0xec, 0x3e, 0xe9, 0xba, 0xe7, 0xb8, 0xe9, 0xae, 0xe8, 0x0c, 0xea, 0x2e, 0xef, + 0xd6, 0xf2, 0x5a, 0xf8, 0xd0, 0xfa, 0xee, 0xfd, 0x0d, 0xfe, 0xcc, 0xfe, 0x4e, 0x03, 0x51, 0x04, + 0x65, 0x06, 0x70, 0x08, 0x7d, 0x09, 0x0c, 0x0f, 0x74, 0x11, 0x2e, 0x14, 0x98, 0x14, 0x56, 0x0f, + 0x1c, 0x0a, 0x8d, 0x06, 0xc6, 0x04, 0xe5, 0x00, 0xbb, 0x02, 0x7b, 0xff, 0xeb, 0xf8, 0x69, 0xf3, + 0x60, 0xf2, 0x8c, 0xf5, 0xbd, 0xf4, 0xbd, 0xf4, 0x5f, 0xf8, 0xee, 0xfb, 0x0c, 0xff, 0x54, 0x03, + 0x1e, 0x07, 0xdf, 0x05, 0xd3, 0x09, 0x14, 0x0f, 0xea, 0x11, 0x0a, 0x16, 0x69, 0x15, 0x93, 0x16, + 0x16, 0x1c, 0xdc, 0x1c, 0xbc, 0x20, 0xc2, 0x1e, 0x70, 0x19, 0xc4, 0x16, 0x7d, 0x14, 0x77, 0x11, + 0x8a, 0x0e, 0x6a, 0x0e, 0x33, 0x0b, 0x47, 0x04, 0xf1, 0xfe, 0x4d, 0x00, 0xbb, 0xfd, 0x25, 0xf8, + 0x1e, 0xf8, 0xb6, 0xf7, 0x02, 0xf7, 0xff, 0xf7, 0xdd, 0xf8, 0xce, 0xf5, 0x21, 0xf3, 0xcb, 0xf4, + 0xa2, 0xf5, 0x6d, 0xf8, 0x8a, 0xf9, 0x7b, 0xfb, 0x79, 0x00, 0x18, 0x04, 0x15, 0x08, 0x0e, 0x0a, + 0xa2, 0x06, 0xe1, 0x04, 0x31, 0x00, 0x23, 0xfd, 0xcc, 0xfc, 0xe8, 0xfe, 0x11, 0x00, 0x0a, 0x00, + 0x3b, 0xfb, 0x19, 0xfb, 0x26, 0x01, 0x23, 0x01, 0x7f, 0x01, 0x09, 0x04, 0x9b, 0x05, 0x3d, 0x06, + 0xe1, 0x07, 0x78, 0x0a, 0x7c, 0x08, 0xab, 0x07, 0x61, 0x0a, 0xf7, 0x09, 0xc2, 0x08, 0x08, 0x09, + 0xa9, 0x07, 0x15, 0x09, 0xe0, 0x09, 0x18, 0x0a, 0xa0, 0x07, 0x9f, 0x03, 0x08, 0x00, 0x38, 0xfb, + 0xa9, 0xf9, 0x08, 0xf7, 0xcf, 0xf6, 0x4a, 0xf7, 0xf1, 0xf4, 0x9f, 0xef, 0x2e, 0xee, 0x74, 0xee, + 0x64, 0xea, 0x0b, 0xeb, 0xde, 0xef, 0xce, 0xf4, 0x80, 0xf8, 0x1c, 0xfd, 0x7f, 0x00, 0xb3, 0xfd, + 0x31, 0xfe, 0xb9, 0x01, 0x72, 0x03, 0x0c, 0x05, 0x45, 0x05, 0x90, 0x06, 0x48, 0x0c, 0xab, 0x0e, + 0x35, 0x10, 0xb8, 0x0c, 0x90, 0x06, 0xcb, 0xfc, 0x7f, 0xf7, 0xac, 0xf3, 0xd3, 0xf0, 0xba, 0xee, + 0x54, 0xed, 0x87, 0xe8, 0xf0, 0xe3, 0x7a, 0xe8, 0x21, 0xec, 0xbc, 0xeb, 0x61, 0xef, 0x10, 0xf3, + 0xab, 0xf6, 0x59, 0xf9, 0x74, 0xfe, 0x1d, 0xfe, 0xf4, 0xfd, 0x7e, 0x01, 0xdd, 0x03, 0x1a, 0x06, + 0x1b, 0x07, 0x00, 0x07, 0xaa, 0x0b, 0x79, 0x0e, 0x2e, 0x10, 0x69, 0x12, 0xd8, 0x0e, 0x65, 0x0b, + 0x37, 0x06, 0xe6, 0x03, 0x7f, 0x01, 0x14, 0x01, 0x83, 0x00, 0x1c, 0xfd, 0x7a, 0xf5, 0x05, 0xef, + 0xbc, 0xec, 0x07, 0xe9, 0x8d, 0xe6, 0x87, 0xe7, 0x47, 0xe9, 0x13, 0xec, 0xb8, 0xef, 0x6f, 0xf4, + 0xc6, 0xf4, 0xb3, 0xf6, 0x60, 0xfa, 0xc7, 0xfc, 0x1e, 0x00, 0x99, 0x01, 0xbe, 0x04, 0xdc, 0x08, + 0xfe, 0x0a, 0xa6, 0x0f, 0x25, 0x0f, 0x47, 0x0e, 0x18, 0x0b, 0x78, 0x07, 0xaf, 0x07, 0xc3, 0x05, + 0x21, 0x06, 0x7f, 0x06, 0x50, 0x03, 0xda, 0xfd, 0x0d, 0xfe, 0xac, 0x01, 0x7a, 0x02, 0xe9, 0x03, + 0xdf, 0x03, 0x69, 0x04, 0xf1, 0x02, 0xaa, 0x01, 0x40, 0x02, 0x49, 0xff, 0xe5, 0xfe, 0xdf, 0xfe, + 0x54, 0xfe, 0x3d, 0xfe, 0x24, 0x00, 0x59, 0x04, 0xc4, 0x09, 0x4b, 0x0e, 0x26, 0x12, 0x94, 0x11, + 0xfd, 0x0f, 0x2c, 0x0a, 0xbc, 0x0b, 0xb4, 0x0b, 0x26, 0x0c, 0xd2, 0x0d, 0x56, 0x0e, 0x3a, 0x0b, + 0xbd, 0x06, 0x15, 0x08, 0xcc, 0x08, 0x70, 0x06, 0x1e, 0x06, 0x12, 0x07, 0xce, 0x09, 0x1c, 0x0c, + 0x62, 0x0f, 0x5f, 0x0f, 0x37, 0x0d, 0x8d, 0x0c, 0x06, 0x0b, 0xdc, 0x09, 0xbc, 0x09, 0x57, 0x06, + 0xe1, 0x06, 0x5d, 0x07, 0xe2, 0x05, 0x0f, 0x03, 0x04, 0xff, 0xd5, 0xf7, 0x41, 0xf1, 0x12, 0xf0, + 0x01, 0xeb, 0x6a, 0xe9, 0xc3, 0xe9, 0x4d, 0xe8, 0x6a, 0xe3, 0xe6, 0xdf, 0x7f, 0xe5, 0xee, 0xe7, + 0x6d, 0xe8, 0xdb, 0xe9, 0xe3, 0xec, 0x3b, 0xee, 0x92, 0xf1, 0x64, 0xf8, 0x1f, 0xf9, 0x56, 0xfd, + 0x93, 0xff, 0xa3, 0xff, 0xfe, 0x01, 0x13, 0x05, 0x75, 0x08, 0xb4, 0x0d, 0x9b, 0x12, 0x39, 0x17, + 0xbe, 0x17, 0x53, 0x16, 0x6e, 0x11, 0x4e, 0x0c, 0x97, 0x08, 0x6b, 0x06, 0x01, 0x03, 0x19, 0x02, + 0x5b, 0xfe, 0x80, 0xf5, 0xee, 0xf3, 0xc0, 0xf5, 0x47, 0xf3, 0xef, 0xf1, 0x77, 0xf3, 0x3c, 0xf7, + 0xc2, 0xf9, 0x77, 0xff, 0x38, 0x04, 0xcc, 0x04, 0xbc, 0x06, 0xbf, 0x06, 0xb6, 0x08, 0xe7, 0x0a, + 0x7a, 0x0b, 0x33, 0x0c, 0x5f, 0x0f, 0xad, 0x12, 0x83, 0x13, 0x3f, 0x12, 0xab, 0x0f, 0xa6, 0x07, + 0x0d, 0x04, 0xef, 0xff, 0x06, 0xfc, 0x29, 0xfb, 0xe3, 0xfa, 0x1e, 0xf5, 0xf4, 0xec, 0x0b, 0xeb, + 0x42, 0xec, 0xd9, 0xea, 0x1f, 0xe9, 0x1a, 0xe9, 0x64, 0xe8, 0x23, 0xe6, 0x6a, 0xe9, 0xc8, 0xea, + 0x4f, 0xed, 0xd5, 0xef, 0x96, 0xf1, 0xe5, 0xf5, 0xd6, 0xf8, 0x4e, 0xfb, 0xcd, 0x01, 0x32, 0x07, + 0xbf, 0x0d, 0xb8, 0x0c, 0xf8, 0x0d, 0x3c, 0x0c, 0x2e, 0x07, 0xc2, 0x07, 0x5b, 0x07, 0xf9, 0x07, + 0x57, 0x08, 0x27, 0x08, 0xe1, 0x03, 0x4e, 0xfd, 0xa1, 0xfd, 0x03, 0xfc, 0x3e, 0xf9, 0x39, 0xf9, + 0x3a, 0xfe, 0xa0, 0xfe, 0x8c, 0x00, 0xbc, 0x02, 0x46, 0x00, 0xf8, 0x00, 0x64, 0xff, 0xd6, 0xfe, + 0x8a, 0xff, 0xd4, 0xfd, 0x5a, 0xfd, 0x4c, 0x00, 0xb8, 0x03, 0xc7, 0x08, 0x20, 0x0a, 0x9b, 0x0b, + 0x4c, 0x08, 0x25, 0x03, 0x99, 0x01, 0x6a, 0x01, 0x40, 0x02, 0x58, 0x03, 0x89, 0x01, 0xf7, 0xfb, + 0x4e, 0xf9, 0x20, 0xfe, 0xfa, 0x00, 0x1c, 0x04, 0x18, 0x07, 0x3c, 0x08, 0xcc, 0x06, 0xc2, 0x09, + 0x73, 0x0c, 0x28, 0x0b, 0xc3, 0x0c, 0x7f, 0x0b, 0x1d, 0x0c, 0xcd, 0x0c, 0xcc, 0x0a, 0x84, 0x0d, + 0x37, 0x0d, 0x23, 0x10, 0xe7, 0x10, 0x86, 0x0d, 0xd3, 0x0a, 0x0d, 0x03, 0x6c, 0xfd, 0xeb, 0xf9, + 0xfa, 0xf8, 0x7e, 0xf7, 0x4e, 0xf8, 0x6a, 0xf5, 0xae, 0xef, 0x16, 0xed, 0x10, 0xed, 0x2d, 0xee, + 0x62, 0xec, 0x82, 0xee, 0xfa, 0xef, 0x40, 0xf0, 0x07, 0xf6, 0x8c, 0xf9, 0xdc, 0xfe, 0x7b, 0x00, + 0x6f, 0x02, 0x7d, 0x05, 0x14, 0x05, 0xcc, 0x05, 0xba, 0x0a, 0xec, 0x0b, 0x28, 0x11, 0xc1, 0x10, + 0x15, 0x12, 0x10, 0x11, 0x8c, 0x0a, 0x8d, 0x08, 0xa4, 0x05, 0x9c, 0x00, 0x3e, 0xfe, 0xe7, 0xfb, + 0x5f, 0xf5, 0x58, 0xee, 0xd2, 0xeb, 0x2f, 0xee, 0x5e, 0xee, 0xc9, 0xec, 0x81, 0xf1, 0x46, 0xf1, + 0x78, 0xf5, 0xc5, 0xf9, 0x26, 0xfb, 0x11, 0xff, 0x0c, 0xff, 0x92, 0x00, 0x89, 0x02, 0x59, 0x03, + 0x40, 0x06, 0x6a, 0x09, 0x3b, 0x0d, 0x65, 0x11, 0x0d, 0x12, 0xdf, 0x12, 0x4b, 0x0d, 0xeb, 0x07, + 0x53, 0x07, 0x91, 0x04, 0xa6, 0x03, 0xcd, 0x02, 0x91, 0x00, 0x6f, 0xfa, 0xa7, 0xf5, 0x44, 0xf5, + 0xe1, 0xf4, 0x73, 0xf0, 0xbb, 0xed, 0xb2, 0xed, 0xe8, 0xe9, 0x1a, 0xef, 0x6a, 0xf0, 0x30, 0xf3, + 0xfa, 0xf5, 0x99, 0xf4, 0x95, 0xf6, 0x02, 0xf9, 0xc5, 0xfc, 0x53, 0x01, 0xe9, 0x03, 0x68, 0x09, + 0xd7, 0x0c, 0x97, 0x0e, 0xa9, 0x0e, 0x20, 0x0b, 0x6a, 0x06, 0x6c, 0x05, 0xef, 0x02, 0x9f, 0x02, + 0xed, 0x04, 0x58, 0x02, 0x43, 0xfd, 0x01, 0xfb, 0x12, 0xfd, 0x3a, 0xfe, 0x08, 0xfe, 0x6c, 0x01, + 0x94, 0x01, 0xe1, 0x02, 0xe8, 0x07, 0x6a, 0x07, 0x4f, 0x08, 0xc7, 0x07, 0x22, 0x04, 0xfb, 0x02, + 0x52, 0x02, 0xfd, 0x01, 0xa5, 0x02, 0x23, 0x02, 0x26, 0x07, 0x3c, 0x06, 0x8f, 0x06, 0xac, 0x06, + 0xae, 0x02, 0xf9, 0x01, 0xff, 0x00, 0xbb, 0xfe, 0x37, 0x00, 0xba, 0x01, 0xfa, 0xfd, 0xeb, 0xfa, + 0xff, 0xf9, 0x81, 0xfb, 0x65, 0xfb, 0xe9, 0xf9, 0xc8, 0x00, 0x4f, 0x00, 0x1c, 0x04, 0xa9, 0x09, + 0xb4, 0x0a, 0x7c, 0x0e, 0x7d, 0x0e, 0xc2, 0x0d, 0x17, 0x0f, 0xe2, 0x0e, 0x83, 0x0f, 0x74, 0x0f, + 0x03, 0x11, 0x1d, 0x12, 0x95, 0x0f, 0x24, 0x0f, 0x1c, 0x0a, 0xc7, 0x00, 0x8c, 0xfb, 0x59, 0xf5, + 0x1b, 0xf2, 0xe0, 0xf1, 0xc6, 0xee, 0xd8, 0xe9, 0xb9, 0xe5, 0xc8, 0xe4, 0x5e, 0xe8, 0xd7, 0xe7, + 0x13, 0xec, 0x35, 0xf2, 0x3f, 0xf0, 0x20, 0xf5, 0xaf, 0xf6, 0xbe, 0xf7, 0xdc, 0xfb, 0xe8, 0xfc, + 0x3e, 0xff, 0xfd, 0x02, 0x09, 0x04, 0x73, 0x07, 0xa2, 0x08, 0x6a, 0x0d, 0x09, 0x10, 0x38, 0x10, + 0xa3, 0x10, 0xa9, 0x0c, 0x9d, 0x08, 0x8f, 0x06, 0x25, 0x04, 0xe9, 0x02, 0x38, 0x01, 0x9c, 0xfc, + 0xf7, 0xf5, 0x20, 0xf1, 0x07, 0xf0, 0x5a, 0xee, 0x04, 0xe9, 0x9e, 0xea, 0x1b, 0xea, 0x6b, 0xe9, + 0x74, 0xf0, 0x61, 0xf4, 0x4f, 0xf9, 0xea, 0xfc, 0x9f, 0xfe, 0x9c, 0x02, 0x02, 0x03, 0xd4, 0x04, + 0xd7, 0x06, 0xc8, 0x08, 0xed, 0x0d, 0x60, 0x0f, 0xbc, 0x11, 0x40, 0x12, 0xa5, 0x0d, 0x89, 0x08, + 0x7d, 0x06, 0xed, 0x02, 0x3a, 0x02, 0xb0, 0x02, 0xfe, 0xfc, 0x46, 0xf8, 0x76, 0xf3, 0x6e, 0xf5, + 0x99, 0xf4, 0x7f, 0xf2, 0x20, 0xf8, 0x94, 0xf4, 0x25, 0xf5, 0x80, 0xf6, 0x77, 0xf7, 0x52, 0xf8, + 0x98, 0xf7, 0x28, 0xf6, 0x2e, 0xf8, 0x24, 0xf8, 0x9a, 0xfb, 0xdc, 0x00, 0x40, 0x05, 0x29, 0x0a, + 0x58, 0x0b, 0x04, 0x0e, 0xfd, 0x0e, 0x85, 0x0a, 0xa1, 0x09, 0xb4, 0x06, 0x09, 0x04, 0xff, 0x05, + 0x16, 0x06, 0xe8, 0x03, 0x01, 0x02, 0x6c, 0x01, 0xf8, 0x04, 0x86, 0x00, 0xa6, 0x00, 0x90, 0x02, + 0xa5, 0xfd, 0x08, 0x03, 0x40, 0x08, 0x47, 0x0b, 0x0a, 0x0f, 0xf0, 0x0d, 0xd3, 0x0c, 0xc6, 0x0a, + 0xfe, 0x07, 0xd2, 0x08, 0x65, 0x0a, 0x30, 0x0c, 0x4f, 0x0e, 0xba, 0x0d, 0x3e, 0x0d, 0x96, 0x09, + 0x65, 0x04, 0xc4, 0x04, 0x17, 0x04, 0xec, 0x03, 0x01, 0x05, 0x9b, 0x01, 0xaa, 0xfd, 0x57, 0xf9, + 0xca, 0xfa, 0xe1, 0xfc, 0x2b, 0xf9, 0xbd, 0xfe, 0x76, 0xff, 0x4b, 0x02, 0x44, 0x08, 0x16, 0x09, + 0x7d, 0x0a, 0xea, 0x0b, 0xa1, 0x0a, 0x73, 0x0a, 0xf0, 0x08, 0xb4, 0x08, 0xde, 0x0a, 0x7a, 0x0a, + 0xe1, 0x0b, 0x74, 0x0c, 0x7e, 0x0b, 0x2e, 0x0a, 0x3a, 0x03, 0x23, 0xfd, 0x87, 0xf8, 0x1d, 0xf1, + 0xd1, 0xee, 0x86, 0xee, 0x84, 0xea, 0x10, 0xe6, 0xf4, 0xe2, 0x74, 0xe5, 0xb8, 0xe3, 0xf4, 0xe1, + 0x19, 0xe4, 0xbc, 0xe2, 0x45, 0xe7, 0x6c, 0xec, 0x02, 0xf1, 0xb8, 0xf6, 0x1d, 0xf9, 0x9c, 0xf8, + 0xfb, 0xfa, 0x2b, 0xfb, 0x52, 0x00, 0xcf, 0x04, 0xe2, 0x07, 0xde, 0x0b, 0x18, 0x0c, 0xfb, 0x0c, + 0xd6, 0x0b, 0x3d, 0x07, 0x68, 0x05, 0x6b, 0x03, 0xc4, 0xfe, 0x06, 0x00, 0x4a, 0x00, 0xb8, 0xf9, + 0x22, 0xf3, 0x93, 0xed, 0x5d, 0xf0, 0xfc, 0xeb, 0x17, 0xeb, 0x71, 0xed, 0x5c, 0xec, 0xf2, 0xee, + 0xe0, 0xef, 0x42, 0xf3, 0x3b, 0xf9, 0x49, 0xfb, 0xb0, 0xfc, 0x09, 0xfe, 0x41, 0x00, 0x78, 0x02, + 0x1e, 0x04, 0x6e, 0x07, 0x85, 0x0b, 0x39, 0x0d, 0x0a, 0x10, 0x6f, 0x0e, 0x51, 0x0a, 0xb4, 0x0a, + 0x27, 0x07, 0x93, 0x04, 0xab, 0x06, 0xae, 0x05, 0x0d, 0x03, 0x70, 0xff, 0x3c, 0x00, 0x2e, 0x00, + 0x5c, 0xfa, 0x8a, 0xfb, 0xe8, 0xf9, 0x60, 0xf9, 0x50, 0xfc, 0xf3, 0xfb, 0xd4, 0xfd, 0xad, 0xff, + 0xe0, 0xfc, 0xe8, 0xfc, 0x5e, 0xfa, 0xdd, 0xfa, 0x6f, 0xfc, 0x9e, 0xfd, 0x87, 0x03, 0x93, 0x05, + 0xb2, 0x05, 0x2b, 0x08, 0xda, 0x06, 0xe3, 0x04, 0xf7, 0x02, 0xaa, 0xfe, 0x91, 0xfe, 0x1d, 0xff, + 0x7c, 0xfc, 0xcc, 0xf7, 0x39, 0xf3, 0x91, 0xf8, 0x7c, 0xf7, 0xa0, 0xf8, 0x93, 0xfe, 0xef, 0xfd, + 0xa3, 0xff, 0xb1, 0x01, 0x2e, 0x05, 0x1e, 0x0b, 0xff, 0x0c, 0x84, 0x0d, 0x44, 0x0d, 0x5a, 0x0b, + 0x9d, 0x0c, 0xd0, 0x0b, 0x0f, 0x0d, 0x6c, 0x11, 0xb3, 0x11, 0xbf, 0x13, 0xb8, 0x14, 0xfd, 0x0d, + 0x45, 0x0b, 0x47, 0x08, 0x47, 0x05, 0x5b, 0x0a, 0xbc, 0x0b, 0x94, 0x0a, 0x10, 0x07, 0x34, 0x06, + 0x0a, 0x09, 0x80, 0x05, 0x70, 0x06, 0x6f, 0x05, 0x2b, 0x04, 0x6b, 0x06, 0xa1, 0x0b, 0x1e, 0x10, + 0x8e, 0x13, 0x2a, 0x15, 0xe7, 0x15, 0xfe, 0x14, 0x96, 0x12, 0x8e, 0x13, 0x08, 0x13, 0xa5, 0x14, + 0x15, 0x15, 0x10, 0x12, 0xa7, 0x12, 0x73, 0x0d, 0xb9, 0x06, 0xe7, 0x02, 0xa1, 0xfc, 0xfa, 0xf6, + 0x9a, 0xf2, 0xf2, 0xec, 0x98, 0xe7, 0xe8, 0xdf, 0x14, 0xdf, 0x45, 0xde, 0xcc, 0xda, 0x9f, 0xdf, + 0xfd, 0xe0, 0xd4, 0xe1, 0x9f, 0xe5, 0xa7, 0xe9, 0x48, 0xef, 0x22, 0xf5, 0xfa, 0xf6, 0x6e, 0xf7, + 0x9d, 0xf7, 0x80, 0xf8, 0x18, 0xfc, 0x70, 0x01, 0xe9, 0x08, 0x55, 0x0c, 0x4b, 0x0e, 0x50, 0x11, + 0x97, 0x0d, 0x3e, 0x0b, 0xfa, 0x09, 0x59, 0x06, 0x45, 0x07, 0xca, 0x06, 0xbc, 0x06, 0x38, 0x03, + 0x49, 0xfc, 0xa1, 0xfd, 0x5b, 0xf9, 0x72, 0xf7, 0xe4, 0xf5, 0x7b, 0xf1, 0xf7, 0xef, 0xec, 0xf0, + 0x92, 0xf0, 0x16, 0xf4, 0x21, 0xf7, 0xec, 0xf9, 0x24, 0xfc, 0x8b, 0xfb, 0x63, 0xff, 0x14, 0x02, + 0x58, 0x04, 0x2a, 0x07, 0x94, 0x06, 0x17, 0x09, 0x47, 0x0a, 0xbd, 0x05, 0xdd, 0x04, 0xca, 0x02, + 0x65, 0x00, 0x59, 0x00, 0x4c, 0xfe, 0x95, 0xfb, 0x1e, 0xf5, 0x4d, 0xf3, 0x1d, 0xf5, 0x22, 0xf2, + 0x28, 0xf2, 0xe4, 0xf1, 0x24, 0xf1, 0x98, 0xf2, 0x4f, 0xf3, 0x73, 0xf6, 0x48, 0xf9, 0x39, 0xf8, + 0xbf, 0xf6, 0x51, 0xf4, 0x5b, 0xf3, 0x34, 0xf4, 0x98, 0xf4, 0xdb, 0xf8, 0x09, 0xfc, 0xef, 0xfe, + 0x92, 0x02, 0x25, 0x02, 0x0a, 0x01, 0x61, 0x01, 0xbe, 0xff, 0x58, 0xff, 0x7b, 0x00, 0x26, 0x00, + 0x9e, 0xfe, 0xcc, 0xf7, 0xf4, 0xfa, 0x5c, 0xfc, 0x84, 0xfb, 0xc8, 0xfe, 0x3e, 0xfe, 0x4a, 0xff, + 0x4b, 0xff, 0x2c, 0x00, 0xd7, 0x03, 0xef, 0x09, 0xe8, 0x0d, 0x06, 0x0f, 0x6b, 0x0f, 0x00, 0x10, + 0x6d, 0x10, 0xf8, 0x10, 0xe9, 0x12, 0x56, 0x10, 0x96, 0x10, 0x33, 0x12, 0xc8, 0x0d, 0xb4, 0x0b, + 0xd5, 0x06, 0x53, 0x00, 0xb5, 0xfe, 0x89, 0xfe, 0x83, 0x00, 0x2d, 0xfd, 0x47, 0xf9, 0x56, 0xfb, + 0x93, 0xf8, 0xbd, 0xf8, 0xaa, 0xfc, 0xb2, 0xfc, 0xaa, 0xfd, 0x11, 0x00, 0x20, 0x03, 0x72, 0x0a, + 0x01, 0x0e, 0x93, 0x0f, 0x8e, 0x10, 0x63, 0x0f, 0xa0, 0x10, 0x42, 0x11, 0xab, 0x13, 0x08, 0x17, + 0x26, 0x15, 0xf9, 0x14, 0x0d, 0x15, 0x42, 0x0f, 0x7d, 0x0b, 0xc3, 0x05, 0xbc, 0x01, 0x7b, 0x00, + 0x4e, 0xfd, 0x61, 0xf9, 0x27, 0xef, 0x2b, 0xed, 0x09, 0xee, 0xef, 0xe9, 0xc3, 0xea, 0x7d, 0xea, + 0x40, 0xe9, 0x23, 0xeb, 0x3d, 0xeb, 0xd9, 0xed, 0x23, 0xf5, 0x3f, 0xfa, 0xc3, 0xff, 0x0c, 0x03, + 0x72, 0x02, 0xdc, 0x03, 0x48, 0x04, 0x3a, 0x09, 0x48, 0x0d, 0x09, 0x0f, 0x54, 0x14, 0xa4, 0x12, + 0x9e, 0x0e, 0xc2, 0x0c, 0x20, 0x08, 0x98, 0x06, 0x80, 0x04, 0xe6, 0x04, 0xcc, 0x02, 0xfb, 0xfa, + 0x82, 0xfb, 0x12, 0xf8, 0xba, 0xf5, 0xb7, 0xf6, 0x60, 0xf6, 0xcc, 0xf5, 0x4c, 0xf5, 0x02, 0xf5, + 0x94, 0xf6, 0x9a, 0xf8, 0x2e, 0xf9, 0xb0, 0xfa, 0xeb, 0xf8, 0x5d, 0xfb, 0xb5, 0xfc, 0xbf, 0xfe, + 0x8a, 0x05, 0xa6, 0x03, 0x3e, 0x05, 0x3d, 0x08, 0x24, 0x05, 0x74, 0x02, 0x40, 0xff, 0xb5, 0xfc, + 0xb5, 0xfc, 0x4d, 0xfd, 0x77, 0xfe, 0x5c, 0xf8, 0x77, 0xf3, 0x4a, 0xf6, 0xef, 0xf5, 0x93, 0xf7, + 0x8b, 0xf8, 0x6f, 0xf5, 0x1f, 0xf5, 0x2b, 0xf3, 0xaa, 0xf2, 0x43, 0xf7, 0x46, 0xfc, 0x09, 0xff, + 0x0b, 0xff, 0x03, 0xfc, 0xd2, 0xfb, 0x54, 0xfb, 0x20, 0xfc, 0x07, 0xff, 0xca, 0xfe, 0x50, 0x01, + 0x55, 0x01, 0x45, 0xfe, 0xaa, 0xfd, 0x92, 0xfa, 0xbf, 0xfa, 0x9f, 0xfa, 0x53, 0xfc, 0xc3, 0xfd, + 0x9f, 0xf5, 0xa9, 0xf2, 0xd3, 0xf2, 0x05, 0xf1, 0xd2, 0xf2, 0x39, 0xf6, 0xcb, 0xf8, 0x63, 0xfd, + 0x12, 0xff, 0xa2, 0x00, 0xe6, 0x05, 0x1d, 0x08, 0xeb, 0x0b, 0x50, 0x0c, 0x16, 0x0c, 0x98, 0x0d, + 0x1b, 0x0e, 0x08, 0x13, 0xfa, 0x13, 0x5a, 0x11, 0x62, 0x12, 0xeb, 0x0f, 0x34, 0x0c, 0x78, 0x0a, + 0x5d, 0x06, 0xc0, 0x03, 0xfc, 0xff, 0x59, 0xff, 0x61, 0xfd, 0xe0, 0xf7, 0x67, 0xfb, 0x9d, 0xfc, + 0xa9, 0xfc, 0xc1, 0xfd, 0x7d, 0xfd, 0xb4, 0xff, 0xb8, 0xfe, 0xca, 0xfc, 0x68, 0x02, 0xa0, 0x07, + 0xac, 0x0b, 0x33, 0x11, 0x05, 0x11, 0x18, 0x14, 0x8c, 0x14, 0xa8, 0x15, 0xcc, 0x1b, 0xed, 0x1a, + 0x97, 0x1a, 0x40, 0x1b, 0xd3, 0x15, 0xb5, 0x11, 0x2b, 0x0c, 0xda, 0x05, 0x17, 0x03, 0x3e, 0xff, + 0x79, 0xff, 0x6a, 0xf6, 0x4d, 0xed, 0xd2, 0xea, 0x8c, 0xe5, 0x04, 0xe5, 0xb9, 0xe4, 0xcd, 0xe3, + 0x62, 0xe6, 0x57, 0xe7, 0x68, 0xe9, 0x61, 0xef, 0x16, 0xf3, 0x51, 0xf7, 0x7b, 0xfb, 0x4d, 0xfd, + 0x8c, 0x01, 0xc0, 0x00, 0x53, 0x05, 0xf0, 0x09, 0x16, 0x08, 0x0c, 0x0e, 0xeb, 0x10, 0xb7, 0x10, + 0x65, 0x0f, 0x01, 0x0a, 0xb0, 0x09, 0x8e, 0x07, 0xbf, 0x06, 0xc9, 0x06, 0xd0, 0x00, 0x3d, 0xff, + 0x7f, 0x00, 0x6c, 0xfe, 0x5a, 0xfe, 0x3a, 0xfd, 0x16, 0xfb, 0xad, 0xfa, 0x6d, 0xf7, 0xbd, 0xf6, + 0xff, 0xf8, 0xd6, 0xf9, 0xf2, 0xfc, 0xbd, 0xfb, 0x5b, 0xfb, 0xdb, 0xfb, 0x31, 0xfd, 0xbe, 0x04, + 0xfc, 0x07, 0x05, 0x08, 0xb6, 0x0a, 0xcc, 0x08, 0x59, 0x06, 0xed, 0x03, 0xeb, 0xfe, 0xb0, 0xfd, + 0xa0, 0xfb, 0xcf, 0xfe, 0x71, 0xfd, 0x62, 0xf7, 0x19, 0xf6, 0x28, 0xf2, 0x50, 0xf2, 0x85, 0xf5, + 0x23, 0xf7, 0x76, 0xf9, 0x8d, 0xfb, 0x68, 0xf9, 0xf1, 0xfb, 0x29, 0xfe, 0x94, 0x00, 0x2f, 0x05, + 0x0d, 0x02, 0xac, 0x01, 0x64, 0xff, 0x2a, 0xff, 0x42, 0x03, 0x51, 0x00, 0x91, 0x01, 0xdf, 0x03, + 0x38, 0x00, 0x07, 0xfe, 0x38, 0xfa, 0xdb, 0xf9, 0xa0, 0xf9, 0xd9, 0xf9, 0x5a, 0xfe, 0x6d, 0xfb, + 0x00, 0xf8, 0x08, 0xf9, 0x57, 0xf7, 0xd6, 0xf7, 0x0b, 0xf9, 0x05, 0xf8, 0x43, 0xfb, 0x43, 0xfc, + 0x8f, 0xfb, 0xf6, 0xff, 0x33, 0x01, 0x41, 0x06, 0x29, 0x08, 0x0a, 0x08, 0x05, 0x0b, 0x93, 0x08, + 0xab, 0x0d, 0xd4, 0x11, 0x4b, 0x10, 0x00, 0x13, 0x04, 0x10, 0x61, 0x0a, 0x9c, 0x06, 0x33, 0x01, + 0x4b, 0xff, 0xf2, 0xfc, 0x3a, 0xfc, 0xd4, 0xfb, 0x12, 0xf3, 0x43, 0xef, 0x0a, 0xf0, 0x26, 0xf0, + 0x28, 0xf3, 0x5d, 0xf4, 0x19, 0xf7, 0x2d, 0xfb, 0x6b, 0xfb, 0xb1, 0xfd, 0xf0, 0x01, 0xbb, 0x06, + 0xc4, 0x0c, 0x7a, 0x0c, 0xc8, 0x0d, 0xab, 0x0e, 0x4e, 0x0e, 0x0d, 0x15, 0xd1, 0x17, 0x94, 0x18, + 0x01, 0x1b, 0x8c, 0x18, 0xf3, 0x15, 0x30, 0x10, 0x20, 0x0b, 0x1d, 0x08, 0x1a, 0x03, 0xe1, 0x05, + 0x5e, 0x02, 0x57, 0xfa, 0x95, 0xf7, 0x5e, 0xf3, 0x62, 0xf0, 0xe0, 0xef, 0x12, 0xee, 0xa8, 0xed, + 0xc1, 0xec, 0xf6, 0xe7, 0x7b, 0xea, 0x68, 0xed, 0xac, 0xf1, 0x07, 0xf5, 0x70, 0xf5, 0x20, 0xfa, + 0x8f, 0xfb, 0xbe, 0xff, 0x96, 0x06, 0x7b, 0x07, 0x57, 0x08, 0xd8, 0x07, 0xa7, 0x06, 0xfd, 0x06, + 0xd2, 0x03, 0x0b, 0x02, 0xde, 0xff, 0x60, 0xff, 0x14, 0x02, 0xa5, 0xfc, 0x34, 0xf7, 0x93, 0xf7, + 0x6e, 0xf5, 0x84, 0xf5, 0x82, 0xf6, 0x35, 0xf7, 0xcb, 0xf9, 0x5f, 0xf9, 0xa5, 0xf8, 0x62, 0xfc, + 0x09, 0xfd, 0x7a, 0x00, 0xb6, 0x00, 0x76, 0xfe, 0xe0, 0xfd, 0x8f, 0xf9, 0xa6, 0xfd, 0x82, 0x04, + 0xbc, 0x05, 0xcf, 0x09, 0x44, 0x0a, 0xbb, 0x07, 0xf0, 0x05, 0x29, 0x02, 0xe0, 0x00, 0x63, 0xfe, + 0xca, 0xff, 0x63, 0x00, 0x8b, 0xfb, 0x7e, 0xfb, 0x09, 0xfc, 0x13, 0xfb, 0xb9, 0xfb, 0xc8, 0xfd, + 0xc0, 0xff, 0x0b, 0x03, 0x82, 0x00, 0xe0, 0x00, 0x59, 0x01, 0x42, 0x01, 0xa2, 0x05, 0x6f, 0x05, + 0xcd, 0x06, 0xdf, 0x05, 0x2c, 0x04, 0x43, 0x09, 0xc4, 0x08, 0x18, 0x07, 0x87, 0x06, 0xd9, 0x03, + 0x88, 0x01, 0x42, 0xfb, 0x66, 0xf6, 0x7a, 0xf3, 0xa1, 0xf1, 0x68, 0xf4, 0x3d, 0xf4, 0x71, 0xf0, + 0x5b, 0xf1, 0x63, 0xf0, 0xad, 0xef, 0x80, 0xf1, 0x2c, 0xf1, 0x83, 0xf3, 0x9a, 0xf5, 0xb0, 0xf6, + 0xce, 0xfc, 0x7d, 0x00, 0x37, 0x06, 0xfd, 0x09, 0xf0, 0x09, 0xfd, 0x0a, 0x59, 0x08, 0x45, 0x0b, + 0x25, 0x11, 0xa5, 0x11, 0xe0, 0x14, 0x21, 0x16, 0xb6, 0x13, 0xdb, 0x0f, 0x09, 0x09, 0xd4, 0x05, + 0x70, 0x02, 0xba, 0x01, 0xea, 0x03, 0x82, 0xff, 0x4e, 0xfa, 0x2b, 0xf7, 0x18, 0xf5, 0x17, 0xf7, + 0x71, 0xfa, 0x41, 0xfb, 0x96, 0xff, 0xee, 0xff, 0x4e, 0xff, 0xc5, 0x01, 0x26, 0x02, 0x55, 0x08, + 0x9c, 0x0b, 0x41, 0x0d, 0x6b, 0x0e, 0xe0, 0x0d, 0xcd, 0x13, 0x8c, 0x18, 0x55, 0x1a, 0x25, 0x1e, + 0x0f, 0x1f, 0x1e, 0x1c, 0xe8, 0x16, 0x13, 0x12, 0xb0, 0x0c, 0x3d, 0x07, 0xc0, 0x05, 0x10, 0x04, + 0xe0, 0xfd, 0x2e, 0xf9, 0x07, 0xf5, 0xb9, 0xef, 0xbc, 0xec, 0xc8, 0xe9, 0x65, 0xe8, 0xc4, 0xea, + 0x00, 0xe8, 0xdf, 0xe7, 0x10, 0xe8, 0x6a, 0xec, 0x85, 0xf2, 0x2f, 0xf3, 0x6f, 0xf4, 0xfd, 0xf2, + 0x8b, 0xf4, 0x77, 0xfc, 0x4c, 0x01, 0xd7, 0x04, 0x95, 0x08, 0x4d, 0x07, 0x50, 0x05, 0xe5, 0x02, + 0x3e, 0x01, 0xab, 0x00, 0x45, 0x00, 0x9f, 0x04, 0x5b, 0x04, 0x11, 0xff, 0x03, 0xfd, 0xe2, 0xfb, + 0x2c, 0xfd, 0x7d, 0xff, 0x86, 0xff, 0xc4, 0x01, 0xe8, 0x01, 0xa8, 0xfe, 0x09, 0xfe, 0xbc, 0xfd, + 0xef, 0x01, 0xaa, 0x03, 0xf3, 0x02, 0xf8, 0x03, 0x0d, 0xff, 0x1b, 0xff, 0x8e, 0x02, 0x4c, 0x03, + 0x8a, 0x08, 0x71, 0x0a, 0x56, 0x0a, 0xd3, 0x06, 0x98, 0x01, 0x8c, 0xfe, 0x6a, 0xfa, 0x0c, 0xfa, + 0x73, 0xfc, 0xa8, 0xf8, 0xc1, 0xf3, 0xce, 0xf2, 0x29, 0xf1, 0xa2, 0xf0, 0x8a, 0xf0, 0x75, 0xf0, + 0x2c, 0xf5, 0x79, 0xf5, 0xd7, 0xf7, 0xc1, 0xfa, 0xd7, 0xfd, 0x68, 0x02, 0x15, 0x03, 0x05, 0x04, + 0x6b, 0x01, 0xfd, 0xfd, 0x21, 0x01, 0xa8, 0x04, 0xec, 0x05, 0x6a, 0x06, 0x34, 0x04, 0x4a, 0x01, + 0x95, 0xfc, 0x02, 0xf8, 0x9f, 0xf3, 0x73, 0xef, 0xfb, 0xf1, 0x2a, 0xf3, 0x0b, 0xf0, 0x8d, 0xef, + 0x36, 0xf0, 0x2f, 0xf2, 0x70, 0xf5, 0xb8, 0xf7, 0xcd, 0xfa, 0x36, 0xfd, 0x32, 0xfb, 0x98, 0xfb, + 0x29, 0xfd, 0xe3, 0x02, 0x30, 0x08, 0x83, 0x0a, 0x4f, 0x0d, 0x99, 0x0b, 0xeb, 0x0b, 0x71, 0x11, + 0x5b, 0x15, 0x73, 0x18, 0xe7, 0x19, 0x3d, 0x1a, 0xa8, 0x18, 0x4b, 0x13, 0xb2, 0x0d, 0x94, 0x07, + 0xbf, 0x03, 0x01, 0x04, 0x2a, 0x02, 0xa3, 0xfd, 0x1a, 0xfa, 0x77, 0xf6, 0xe5, 0xf2, 0x6d, 0xf2, + 0xcd, 0xf1, 0x65, 0xf5, 0x49, 0xf8, 0x86, 0xfa, 0xdd, 0xfd, 0x47, 0xff, 0x89, 0x05, 0x6b, 0x09, + 0xf3, 0x0b, 0xaf, 0x0d, 0x0b, 0x0a, 0xb9, 0x0b, 0xc2, 0x0f, 0xdf, 0x12, 0xb6, 0x16, 0x4a, 0x18, + 0x47, 0x19, 0xa4, 0x17, 0x6d, 0x13, 0xe5, 0x0e, 0x08, 0x0b, 0x48, 0x08, 0x40, 0x08, 0x1f, 0x03, + 0xca, 0xfd, 0x91, 0xfb, 0x9d, 0xf8, 0x44, 0xf8, 0x7a, 0xf6, 0xa4, 0xf4, 0xf6, 0xf5, 0xb6, 0xf3, + 0xb0, 0xf2, 0x77, 0xf0, 0xa6, 0xef, 0x37, 0xf2, 0x69, 0xf4, 0xed, 0xf6, 0x90, 0xf6, 0x1e, 0xf5, + 0xfb, 0xf8, 0x25, 0xfe, 0x70, 0x04, 0x4f, 0x0a, 0x0d, 0x0c, 0xdc, 0x0c, 0xcc, 0x08, 0xb7, 0x04, + 0x70, 0x01, 0x67, 0xfd, 0x72, 0xff, 0x48, 0x01, 0x51, 0xff, 0xe4, 0xfc, 0x74, 0xfa, 0x6d, 0xf7, + 0xc5, 0xf7, 0x64, 0xf6, 0xa4, 0xf8, 0x9e, 0xfb, 0x45, 0xfb, 0xf1, 0xfc, 0xea, 0xfc, 0xe6, 0x00, + 0xf8, 0x04, 0x62, 0x07, 0x01, 0x08, 0x3e, 0x03, 0x83, 0x01, 0xca, 0x01, 0xe2, 0x01, 0x3b, 0x03, + 0xee, 0x03, 0x7a, 0x06, 0xb5, 0x05, 0x45, 0x02, 0x5c, 0xfe, 0x46, 0xf9, 0x2f, 0xf7, 0xfd, 0xf9, + 0x6f, 0xf9, 0xd0, 0xf5, 0xfb, 0xf2, 0x83, 0xf0, 0xff, 0xf1, 0x07, 0xf3, 0x0c, 0xf4, 0x95, 0xf8, + 0xe0, 0xf9, 0x7a, 0xfa, 0xc3, 0xfa, 0x0f, 0xfc, 0x7e, 0x00, 0xd0, 0x02, 0xc2, 0x05, 0xb9, 0x06, + 0xe2, 0x02, 0x55, 0x02, 0x0f, 0x05, 0x4e, 0x09, 0x85, 0x0c, 0x64, 0x0d, 0x21, 0x0c, 0x76, 0x07, + 0xa7, 0x01, 0x78, 0xfc, 0x5d, 0xf6, 0xd4, 0xf3, 0x07, 0xf3, 0xb6, 0xef, 0xb9, 0xec, 0xa8, 0xea, + 0xc2, 0xe8, 0x64, 0xea, 0x5a, 0xeb, 0xee, 0xed, 0x24, 0xf3, 0xae, 0xf4, 0xe1, 0xf5, 0x43, 0xf5, + 0x15, 0xf8, 0x49, 0xff, 0xd6, 0x04, 0x22, 0x0a, 0xef, 0x09, 0xd1, 0x06, 0x2d, 0x08, 0x6d, 0x0b, + 0x0f, 0x10, 0x0d, 0x13, 0xf6, 0x14, 0x31, 0x15, 0xc8, 0x11, 0x28, 0x0e, 0x9d, 0x09, 0x64, 0x04, + 0x71, 0x03, 0xa3, 0x02, 0x55, 0xfe, 0x9e, 0xfb, 0x3a, 0xf8, 0xd1, 0xf5, 0xd7, 0xf6, 0xf3, 0xf4, + 0x83, 0xf7, 0xe2, 0xf8, 0x29, 0xf9, 0xa0, 0xfa, 0x07, 0xfb, 0xf7, 0xfe, 0xdc, 0x01, 0xe6, 0x05, + 0x76, 0x09, 0xa7, 0x07, 0x9a, 0x07, 0xd7, 0x0a, 0xf8, 0x0e, 0x64, 0x13, 0xfa, 0x16, 0x1e, 0x1a, + 0x3f, 0x1a, 0xe0, 0x16, 0xdd, 0x14, 0x38, 0x10, 0xe5, 0x0c, 0xcf, 0x0d, 0xff, 0x09, 0x3d, 0x05, + 0xab, 0x00, 0xd6, 0xfb, 0xec, 0xfa, 0xef, 0xf7, 0x5c, 0xf5, 0x2b, 0xf5, 0xab, 0xf2, 0xe0, 0xf2, + 0x99, 0xf1, 0x35, 0xf0, 0xfb, 0xf3, 0x81, 0xf6, 0xf9, 0xf8, 0xa1, 0xf9, 0xc4, 0xf5, 0xed, 0xf5, + 0x28, 0xf8, 0x72, 0xfc, 0xbe, 0x00, 0xaf, 0x05, 0xd3, 0x09, 0xdb, 0x08, 0x4c, 0x07, 0x53, 0x05, + 0xcb, 0x00, 0x48, 0x00, 0xc7, 0x01, 0x4f, 0x01, 0xc8, 0x00, 0x5d, 0xff, 0xb7, 0xfd, 0xb6, 0xff, + 0xbb, 0xfe, 0x43, 0x01, 0x83, 0x04, 0xf4, 0x05, 0x2b, 0x07, 0xfa, 0x03, 0x26, 0x04, 0xc6, 0x05, + 0x2c, 0x07, 0x92, 0x09, 0xd5, 0x07, 0x96, 0x04, 0xbb, 0x03, 0xbc, 0x05, 0x88, 0x07, 0x86, 0x07, + 0x17, 0x07, 0x6a, 0x06, 0x5f, 0x04, 0xa2, 0x01, 0x97, 0xfe, 0x6b, 0xf9, 0x1d, 0xf7, 0x53, 0xf7, + 0x1b, 0xf6, 0xe6, 0xf3, 0x84, 0xf0, 0x1c, 0xf0, 0xfe, 0xee, 0x5a, 0xed, 0x92, 0xef, 0xca, 0xf1, + 0x33, 0xf4, 0xd2, 0xf4, 0x73, 0xf5, 0x1c, 0xfb, 0xa6, 0x00, 0x34, 0x05, 0x20, 0x09, 0xda, 0x07, + 0x1e, 0x06, 0xb4, 0x05, 0x99, 0x06, 0x94, 0x08, 0xf9, 0x0a, 0x1f, 0x0d, 0x3a, 0x0b, 0xc0, 0x06, + 0x2d, 0x02, 0x6c, 0xfb, 0x38, 0xf7, 0xf7, 0xf6, 0xc0, 0xf4, 0xcd, 0xf0, 0x5c, 0xed, 0xaf, 0xea, + 0x41, 0xec, 0x4d, 0xec, 0x09, 0xee, 0x88, 0xf4, 0xcd, 0xf8, 0xbb, 0xfc, 0xf8, 0xfc, 0x22, 0xfc, + 0xe3, 0xfd, 0x85, 0xff, 0xfb, 0x04, 0x35, 0x08, 0x1f, 0x07, 0x7f, 0x06, 0x52, 0x07, 0xbb, 0x0b, + 0xf3, 0x0f, 0xb0, 0x12, 0x26, 0x14, 0x64, 0x13, 0xd4, 0x0f, 0xe7, 0x0b, 0xc9, 0x05, 0xb0, 0x02, + 0xdf, 0x01, 0xfc, 0xfd, 0x5d, 0xfa, 0xc6, 0xf5, 0x04, 0xf3, 0x80, 0xf1, 0x5a, 0xed, 0xfa, 0xed, + 0x08, 0xef, 0xeb, 0xef, 0xe7, 0xef, 0x98, 0xee, 0x74, 0xf2, 0x1c, 0xf8, 0x97, 0xfd, 0x78, 0x04, + 0x83, 0x06, 0x0e, 0x05, 0xbc, 0x05, 0x1d, 0x09, 0x4f, 0x0d, 0x2e, 0x10, 0x5f, 0x12, 0x05, 0x15, + 0x3d, 0x14, 0x04, 0x12, 0xf1, 0x0d, 0x47, 0x0b, 0x13, 0x0c, 0x34, 0x0d, 0xc8, 0x0b, 0xab, 0x07, + 0x26, 0x02, 0x96, 0xff, 0xed, 0xfd, 0xce, 0xfd, 0x73, 0x00, 0x0f, 0x01, 0x60, 0x00, 0x9a, 0xfd, + 0xd1, 0xfa, 0xa6, 0xfa, 0x60, 0xf9, 0xfc, 0xfb, 0x57, 0xfe, 0x7d, 0xfa, 0x78, 0xf7, 0xae, 0xf6, + 0xb6, 0xf9, 0xf7, 0xfc, 0x57, 0x00, 0xf4, 0x03, 0xba, 0x06, 0x8b, 0x05, 0x4e, 0x03, 0x4a, 0x00, + 0xd2, 0xfd, 0x49, 0xfe, 0x7a, 0xfb, 0x64, 0xf9, 0x93, 0xf7, 0x43, 0xf5, 0x36, 0xf6, 0x06, 0xf5, + 0xed, 0xf4, 0xa1, 0xf6, 0xb3, 0xf8, 0x1b, 0xfb, 0xc3, 0xfa, 0xa0, 0xfb, 0x4f, 0xfe, 0x3d, 0x02, + 0xce, 0x08, 0xe3, 0x0b, 0xe1, 0x08, 0xc9, 0x06, 0x77, 0x07, 0x7a, 0x09, 0x3b, 0x0c, 0x71, 0x0c, + 0xf9, 0x0c, 0x52, 0x0a, 0xaa, 0x05, 0x8d, 0x03, 0x0d, 0xff, 0xd0, 0xfd, 0x15, 0xfe, 0x99, 0xfb, + 0xec, 0xfa, 0x11, 0xf8, 0xb8, 0xf5, 0xb7, 0xf6, 0xd4, 0xf6, 0x8d, 0xf8, 0xec, 0xfa, 0x16, 0xfe, + 0x5d, 0x00, 0x4d, 0xff, 0xd8, 0xff, 0x88, 0x02, 0x66, 0x06, 0xe2, 0x0b, 0x11, 0x0c, 0x06, 0x0a, + 0x93, 0x09, 0x9b, 0x0b, 0x48, 0x0e, 0x24, 0x10, 0x31, 0x12, 0x56, 0x13, 0xa8, 0x10, 0x29, 0x0d, + 0x94, 0x07, 0x93, 0x00, 0xb1, 0xfd, 0x35, 0xfb, 0xe6, 0xf7, 0x6d, 0xf3, 0x05, 0xec, 0x6d, 0xe9, + 0x46, 0xe7, 0x91, 0xe5, 0x10, 0xe6, 0x00, 0xe7, 0xe2, 0xeb, 0x7e, 0xee, 0x21, 0xf0, 0xfc, 0xf3, + 0x2f, 0xf7, 0x22, 0xfc, 0x4b, 0x00, 0x2c, 0x02, 0xd7, 0x02, 0xa1, 0x03, 0x04, 0x06, 0x4c, 0x09, + 0x5b, 0x0c, 0x73, 0x10, 0xf3, 0x11, 0x8c, 0x0f, 0x91, 0x0e, 0x4f, 0x0a, 0xe1, 0x06, 0x53, 0x07, + 0xca, 0x05, 0xbf, 0x03, 0x1a, 0xff, 0xca, 0xfb, 0xee, 0xfa, 0x40, 0xf9, 0xc8, 0xf8, 0x39, 0xfa, + 0x7f, 0xfd, 0xc6, 0xff, 0x2c, 0xfe, 0xb1, 0xfc, 0xb8, 0xfc, 0x95, 0xfe, 0x44, 0x04, 0x2d, 0x07, + 0xaa, 0x06, 0xd9, 0x05, 0xf4, 0x06, 0x26, 0x0b, 0xb7, 0x0f, 0x20, 0x13, 0x50, 0x15, 0xf5, 0x14, + 0x1b, 0x14, 0x07, 0x12, 0x35, 0x0d, 0x00, 0x0a, 0x7f, 0x0a, 0xf5, 0x09, 0x84, 0x08, 0xec, 0x03, + 0x69, 0x00, 0x67, 0xfd, 0x2e, 0xf8, 0x01, 0xf7, 0xb8, 0xf7, 0x80, 0xf8, 0xb1, 0xf6, 0x7b, 0xf3, + 0xe1, 0xf1, 0x9d, 0xf1, 0x29, 0xf4, 0x4e, 0xf7, 0x8f, 0xf8, 0x92, 0xf5, 0xec, 0xf1, 0xcf, 0xf1, + 0x7e, 0xf3, 0x77, 0xf5, 0xed, 0xf7, 0xab, 0xfa, 0xac, 0xfa, 0x1f, 0xfb, 0x61, 0xf8, 0xef, 0xf4, + 0x58, 0xf7, 0xd1, 0xf8, 0xfa, 0xf9, 0x98, 0xf7, 0x02, 0xf4, 0x3b, 0xf4, 0x86, 0xf4, 0xd7, 0xf5, + 0x47, 0xf9, 0xc7, 0xfd, 0xa9, 0x01, 0x26, 0x04, 0xfa, 0x04, 0x85, 0x05, 0x18, 0x06, 0x41, 0x09, + 0xd3, 0x0c, 0xf5, 0x0c, 0x35, 0x0a, 0x64, 0x07, 0x6a, 0x08, 0x3a, 0x0c, 0xab, 0x0e, 0xee, 0x10, + 0x57, 0x10, 0x93, 0x0c, 0x02, 0x07, 0x41, 0x00, 0xb5, 0xfd, 0x93, 0xfc, 0xf4, 0xfa, 0xbc, 0xf9, + 0xe0, 0xf4, 0x12, 0xf2, 0xf2, 0xf1, 0x8b, 0xef, 0xdb, 0xef, 0x77, 0xf1, 0x97, 0xf3, 0x37, 0xf5, + 0x00, 0xf5, 0x35, 0xf5, 0x64, 0xf6, 0x2f, 0xfa, 0x59, 0x01, 0x0c, 0x07, 0x7d, 0x07, 0x31, 0x06, + 0xb9, 0x06, 0x7c, 0x09, 0xb9, 0x0c, 0x6f, 0x0e, 0x08, 0x10, 0xaa, 0x0e, 0xc1, 0x0b, 0x9f, 0x07, + 0x54, 0x01, 0x6e, 0xfe, 0x19, 0xfc, 0x97, 0xfa, 0x21, 0xf8, 0x51, 0xf2, 0x6e, 0xee, 0xdf, 0xea, + 0xe9, 0xe8, 0x04, 0xea, 0x5c, 0xed, 0xad, 0xf0, 0x2b, 0xf3, 0x23, 0xf6, 0xc3, 0xf8, 0x53, 0xfb, + 0x1c, 0x00, 0x83, 0x05, 0x06, 0x07, 0xdb, 0x04, 0xd6, 0x04, 0x1c, 0x07, 0x36, 0x0b, 0x88, 0x0f, + 0x71, 0x13, 0xd9, 0x15, 0xb1, 0x15, 0x0f, 0x15, 0xdb, 0x10, 0xc7, 0x0c, 0x33, 0x0b, 0xda, 0x09, + 0x2e, 0x09, 0x51, 0x05, 0xfa, 0xff, 0x36, 0xfd, 0x5e, 0xfb, 0x25, 0xf9, 0x53, 0xf8, 0x04, 0xf8, + 0x1d, 0xf9, 0xa8, 0xf9, 0xd6, 0xf8, 0x61, 0xf8, 0xe8, 0xf8, 0xe0, 0xfc, 0x1a, 0x02, 0x6f, 0x05, + 0xa2, 0x04, 0x27, 0x04, 0x6c, 0x06, 0x7d, 0x0a, 0x75, 0x0f, 0x9b, 0x13, 0xe7, 0x14, 0x92, 0x12, + 0x74, 0x0f, 0xaa, 0x0a, 0x4e, 0x08, 0xe8, 0x06, 0x8f, 0x05, 0x0f, 0x06, 0x8b, 0x03, 0xf4, 0x01, + 0xd8, 0x00, 0x75, 0xfe, 0x68, 0xfc, 0x9f, 0xfb, 0xb9, 0xfe, 0xe9, 0x01, 0xe3, 0x01, 0xa5, 0x00, + 0x5f, 0xff, 0x1b, 0xfe, 0xcf, 0xff, 0xc6, 0x01, 0x28, 0xff, 0xe9, 0xfb, 0x70, 0xf9, 0xa8, 0xfa, + 0xe8, 0xfc, 0x48, 0xff, 0x56, 0x01, 0x2b, 0x01, 0xec, 0x00, 0x6b, 0xfe, 0xfe, 0xfa, 0x18, 0xf9, + 0x78, 0xf8, 0x5a, 0xfa, 0x0b, 0xfa, 0x19, 0xf7, 0xf8, 0xf4, 0xbc, 0xf2, 0x34, 0xf1, 0x90, 0xf1, + 0x52, 0xf3, 0xfe, 0xf6, 0x12, 0xf9, 0xd8, 0xf8, 0x1d, 0xfa, 0x0e, 0xfb, 0x7e, 0xfe, 0x57, 0x03, + 0x85, 0x07, 0x56, 0x08, 0x46, 0x07, 0xbb, 0x07, 0xd5, 0x08, 0xe3, 0x0a, 0xdd, 0x0d, 0xc5, 0x0f, + 0x33, 0x0f, 0x3e, 0x0c, 0x2e, 0x05, 0x23, 0xfe, 0xcc, 0xfa, 0x1d, 0xfa, 0x0e, 0xfa, 0xc6, 0xf6, + 0x2e, 0xf3, 0x0d, 0xf0, 0x30, 0xed, 0xee, 0xec, 0x93, 0xed, 0xc4, 0xf0, 0xed, 0xf4, 0x0b, 0xf7, + 0x9d, 0xf8, 0xe4, 0xf8, 0xe5, 0xf8, 0x96, 0xfb, 0xdb, 0xff, 0x2b, 0x03, 0xdf, 0x02, 0xf5, 0x00, + 0x72, 0x02, 0x39, 0x06, 0xa4, 0x0a, 0x90, 0x0f, 0xf3, 0x10, 0x6c, 0x10, 0xa5, 0x0d, 0x73, 0x07, + 0x40, 0x03, 0xc3, 0xff, 0xe5, 0xfe, 0xb8, 0xfd, 0x74, 0xf9, 0xe3, 0xf5, 0xef, 0xf1, 0xc3, 0xed, + 0x11, 0xea, 0xc8, 0xe9, 0xeb, 0xeb, 0x0f, 0xef, 0xef, 0xef, 0x9a, 0xef, 0x7e, 0xf1, 0x3e, 0xf6, + 0x42, 0xfe, 0xfc, 0x04, 0xfc, 0x07, 0x9a, 0x07, 0x49, 0x07, 0xf2, 0x0a, 0x55, 0x0f, 0xcd, 0x13, + 0x19, 0x18, 0xd5, 0x19, 0xc2, 0x18, 0x16, 0x15, 0x2b, 0x10, 0x65, 0x0d, 0xe2, 0x0b, 0x34, 0x0c, + 0xaa, 0x0a, 0xd4, 0x05, 0xb9, 0x00, 0xff, 0xfb, 0x7d, 0xf8, 0x3a, 0xf7, 0x62, 0xf7, 0x0c, 0xfa, + 0x83, 0xfb, 0x31, 0xfb, 0xab, 0xf9, 0xfc, 0xf8, 0x12, 0xfa, 0x0e, 0xfc, 0x48, 0xfd, 0xf5, 0xfc, + 0xb2, 0xfb, 0x14, 0xfb, 0x1d, 0xfe, 0x21, 0x02, 0xb8, 0x07, 0xf2, 0x0c, 0x6f, 0x0f, 0xa3, 0x0f, + 0x88, 0x0a, 0xe7, 0x06, 0x9c, 0x04, 0x60, 0x05, 0x07, 0x06, 0x59, 0x03, 0x9e, 0x00, 0x31, 0xfe, + 0x50, 0xfe, 0x3d, 0xfc, 0xc6, 0xfa, 0xd1, 0xfa, 0xee, 0xfc, 0x1a, 0xfe, 0xd0, 0xfd, 0x7b, 0xfc, + 0x05, 0xfc, 0x90, 0xff, 0xdd, 0x01, 0x44, 0x04, 0x26, 0x04, 0x51, 0x00, 0x00, 0x00, 0x9b, 0x01, + 0x2e, 0x04, 0xa4, 0x06, 0xcd, 0x06, 0x98, 0x06, 0x2c, 0x04, 0xb0, 0xff, 0x75, 0xfc, 0xe3, 0xfa, + 0x62, 0xfc, 0xc4, 0xfd, 0xcc, 0xfc, 0xb1, 0xfa, 0xcf, 0xf8, 0xb6, 0xf6, 0x84, 0xf4, 0xc9, 0xf4, + 0x89, 0xf8, 0xc4, 0xfd, 0xe4, 0x00, 0x31, 0x02, 0x5d, 0x03, 0xa7, 0x06, 0x42, 0x0a, 0x9a, 0x0d, + 0xd5, 0x0e, 0xf5, 0x0c, 0xd9, 0x0a, 0xb2, 0x0b, 0x09, 0x0e, 0x6c, 0x10, 0x9c, 0x12, 0xde, 0x13, + 0xb6, 0x14, 0x11, 0x10, 0x58, 0x09, 0x1d, 0x04, 0x8c, 0xff, 0xf1, 0xfd, 0xbe, 0xfa, 0x0c, 0xf6, + 0x01, 0xf1, 0x0c, 0xee, 0x74, 0xe9, 0x2a, 0xe6, 0x6e, 0xe6, 0x55, 0xe8, 0x9f, 0xea, 0xe1, 0xeb, + 0x7c, 0xec, 0xb3, 0xec, 0xc9, 0xee, 0x4f, 0xf3, 0xb2, 0xf8, 0x92, 0xfc, 0xee, 0xfc, 0x2c, 0xfe, + 0x0f, 0x02, 0x32, 0x06, 0xc2, 0x0a, 0x22, 0x0e, 0x9f, 0x11, 0xae, 0x11, 0xee, 0x0c, 0x12, 0x08, + 0x63, 0x03, 0x7a, 0x02, 0x6e, 0x01, 0x98, 0xfe, 0xd2, 0xf9, 0xb2, 0xf5, 0x60, 0xf2, 0xc6, 0xed, + 0x57, 0xea, 0xf0, 0xe8, 0xa0, 0xeb, 0x68, 0xed, 0xa7, 0xef, 0xf1, 0xef, 0x1a, 0xef, 0x89, 0xf2, + 0x05, 0xf9, 0x3a, 0xff, 0x1e, 0x01, 0x44, 0x00, 0x5b, 0x01, 0x8b, 0x03, 0xf8, 0x07, 0xe7, 0x0d, + 0xef, 0x10, 0xb7, 0x14, 0x4c, 0x14, 0xf7, 0x0f, 0x56, 0x0d, 0x51, 0x0a, 0xeb, 0x0a, 0x7a, 0x0a, + 0xbf, 0x08, 0x45, 0x05, 0x75, 0x01, 0x88, 0xfd, 0x5e, 0xf9, 0xb3, 0xf7, 0x86, 0xf7, 0xd4, 0xf8, + 0xf2, 0xf8, 0xfa, 0xf7, 0xed, 0xf5, 0xcd, 0xf5, 0xef, 0xf9, 0x02, 0xfe, 0xa6, 0x01, 0x21, 0x01, + 0x6b, 0xff, 0xe5, 0x01, 0x93, 0x03, 0xe9, 0x07, 0x7c, 0x0c, 0xb4, 0x10, 0x34, 0x15, 0x86, 0x13, + 0x69, 0x10, 0x5e, 0x0b, 0x61, 0x08, 0xfb, 0x08, 0x7b, 0x09, 0xfa, 0x07, 0xec, 0x02, 0x32, 0x00, + 0x61, 0xfe, 0x7d, 0xfe, 0xae, 0xfd, 0x82, 0xff, 0x08, 0x02, 0x0f, 0x03, 0x4e, 0x03, 0xba, 0x02, + 0x87, 0x03, 0x14, 0x05, 0x67, 0x07, 0x7b, 0x07, 0x5c, 0x04, 0x32, 0x01, 0x83, 0xff, 0x9b, 0x00, + 0x8f, 0x04, 0x77, 0x07, 0x3c, 0x09, 0x1a, 0x08, 0x60, 0x03, 0x3f, 0xff, 0xa6, 0xf9, 0x2a, 0xf8, + 0xde, 0xf8, 0xe9, 0xf7, 0x4f, 0xf5, 0xc4, 0xf2, 0x83, 0xf1, 0xb7, 0xef, 0xc9, 0xed, 0xc3, 0xec, + 0x90, 0xee, 0x45, 0xf1, 0x8a, 0xf2, 0x2b, 0xf2, 0x69, 0xf2, 0xbe, 0xf6, 0xf6, 0xfc, 0xbd, 0x02, + 0xd9, 0x05, 0xff, 0x04, 0x9b, 0x05, 0x98, 0x07, 0x03, 0x0c, 0x5c, 0x11, 0x3f, 0x13, 0x2e, 0x15, + 0x81, 0x14, 0x44, 0x12, 0x0a, 0x0d, 0x36, 0x07, 0x16, 0x06, 0x75, 0x04, 0xcb, 0x01, 0xb3, 0xfc, + 0xec, 0xf8, 0x15, 0xf5, 0xb0, 0xf2, 0x98, 0xf0, 0xda, 0xf0, 0xac, 0xf3, 0xe0, 0xf5, 0x38, 0xf8, + 0x3a, 0xf9, 0xd0, 0xfb, 0x00, 0xff, 0xa7, 0x01, 0xad, 0x04, 0x51, 0x05, 0xe0, 0x03, 0x2a, 0x04, + 0x1d, 0x07, 0x25, 0x0c, 0x61, 0x11, 0x7e, 0x15, 0xbd, 0x18, 0x3f, 0x18, 0xe4, 0x15, 0x3d, 0x10, + 0xda, 0x0b, 0xb1, 0x0a, 0x2f, 0x08, 0x1c, 0x03, 0x0b, 0xfd, 0x2a, 0xf8, 0x3b, 0xf4, 0x8f, 0xf0, + 0x45, 0xed, 0x52, 0xeb, 0x28, 0xe9, 0xbe, 0xe7, 0xc6, 0xe5, 0xde, 0xe4, 0x38, 0xe5, 0x4d, 0xe7, + 0xb0, 0xeb, 0xbd, 0xf1, 0xbc, 0xf4, 0xf3, 0xf5, 0xee, 0xf8, 0xe8, 0xfc, 0xfa, 0x01, 0xcb, 0x05, + 0x60, 0x0b, 0x3a, 0x0e, 0x0f, 0x0d, 0x83, 0x0b, 0xe2, 0x06, 0xf1, 0x05, 0x5e, 0x06, 0x8c, 0x06, + 0x3d, 0x04, 0xdd, 0x01, 0xe8, 0xff, 0xc2, 0xfc, 0x3c, 0xfa, 0xe2, 0xf8, 0x7f, 0xf9, 0x34, 0xfb, + 0x66, 0xfd, 0xef, 0xfd, 0xa4, 0xfd, 0x81, 0xff, 0xb9, 0x01, 0xaf, 0x05, 0x23, 0x07, 0x92, 0x04, + 0x62, 0x02, 0x1b, 0x02, 0x54, 0x05, 0x88, 0x08, 0xd5, 0x0b, 0xb7, 0x10, 0xe6, 0x12, 0x11, 0x13, + 0x80, 0x10, 0xaa, 0x0c, 0x45, 0x0b, 0xb4, 0x09, 0xe3, 0x07, 0x21, 0x05, 0xbd, 0x01, 0x93, 0xfd, + 0xc6, 0xfa, 0x14, 0xf9, 0x65, 0xfa, 0x98, 0xfa, 0x19, 0xfb, 0xd7, 0xfb, 0xc1, 0xf9, 0x45, 0xf8, + 0x83, 0xfa, 0xc3, 0xfc, 0x81, 0xff, 0xb3, 0x00, 0x0a, 0xff, 0x9d, 0xfd, 0x4f, 0xfc, 0xb9, 0xfd, + 0xb5, 0xff, 0xea, 0x02, 0xde, 0x05, 0xaf, 0x03, 0x7a, 0x00, 0xf2, 0xf9, 0x97, 0xf5, 0x37, 0xf4, + 0xaf, 0xf3, 0x94, 0xf2, 0x09, 0xf0, 0x54, 0xee, 0xb9, 0xec, 0xb7, 0xec, 0x97, 0xec, 0xa4, 0xed, + 0x30, 0xef, 0x06, 0xf3, 0xa7, 0xf6, 0x9e, 0xf7, 0x9d, 0xfa, 0x3b, 0xfe, 0x9a, 0x03, 0xd5, 0x09, + 0xb4, 0x0b, 0xfe, 0x0b, 0xc0, 0x0a, 0xa0, 0x0b, 0x6f, 0x0f, 0x23, 0x13, 0xa8, 0x17, 0xb9, 0x19, + 0x78, 0x18, 0x5e, 0x15, 0x25, 0x10, 0x84, 0x0c, 0xf0, 0x09, 0xfc, 0x07, 0x83, 0x03, 0xca, 0xfd, + 0xcb, 0xf8, 0xe9, 0xf4, 0x71, 0xf0, 0x7a, 0xee, 0xe5, 0xed, 0x08, 0xee, 0x3c, 0xef, 0x9e, 0xee, + 0x4a, 0xee, 0x55, 0xf1, 0x67, 0xf5, 0x79, 0xfa, 0xf5, 0xfd, 0x6b, 0xff, 0x1f, 0x00, 0x4f, 0x00, + 0x0a, 0x04, 0xd6, 0x08, 0xe4, 0x0c, 0xb3, 0x12, 0x78, 0x15, 0xd2, 0x15, 0xf0, 0x12, 0xb0, 0x0d, + 0xbf, 0x0b, 0x9f, 0x0a, 0xea, 0x08, 0x7a, 0x04, 0x84, 0xfe, 0x70, 0xf9, 0x7e, 0xf5, 0xce, 0xf1, + 0x2c, 0xf0, 0x8d, 0xef, 0x6e, 0xef, 0xef, 0xef, 0x63, 0xef, 0xc7, 0xef, 0x51, 0xf2, 0xe0, 0xf4, + 0xe8, 0xf8, 0x8e, 0xfa, 0x2b, 0xfc, 0xa3, 0xfc, 0x0e, 0xfe, 0xed, 0x03, 0xa4, 0x08, 0x30, 0x0d, + 0x04, 0x12, 0xac, 0x14, 0xef, 0x14, 0xc1, 0x11, 0x9e, 0x0f, 0x2b, 0x0f, 0xb0, 0x0e, 0x21, 0x0c, + 0x5f, 0x09, 0x93, 0x05, 0xd2, 0x02, 0x74, 0x00, 0xbc, 0xfd, 0xde, 0xfc, 0x33, 0xfb, 0x43, 0xfb, + 0x88, 0xfa, 0x92, 0xf8, 0xa2, 0xf8, 0x00, 0xf9, 0x9a, 0xfb, 0xa2, 0xff, 0xbd, 0x01, 0xfe, 0x01, + 0xd5, 0x00, 0xfe, 0x00, 0x6c, 0x04, 0xea, 0x06, 0xca, 0x09, 0xc6, 0x0c, 0x04, 0x0e, 0x47, 0x0e, + 0x69, 0x0b, 0x11, 0x0a, 0x7b, 0x09, 0x1c, 0x08, 0x57, 0x05, 0xb9, 0x01, 0x13, 0xfe, 0x1e, 0xfb, + 0x70, 0xf8, 0x6c, 0xf6, 0x82, 0xf6, 0xe7, 0xf7, 0xcd, 0xfa, 0x5b, 0xfc, 0x27, 0xfd, 0x35, 0x00, + 0x2f, 0x01, 0x4d, 0x05, 0x5f, 0x07, 0xa5, 0x06, 0x88, 0x05, 0xeb, 0x02, 0xf5, 0x02, 0x4d, 0x03, + 0xb6, 0x03, 0xdb, 0x06, 0x48, 0x09, 0xda, 0x09, 0x31, 0x07, 0x02, 0x02, 0x60, 0xfe, 0x5b, 0xfd, + 0x5f, 0xfa, 0x58, 0xf7, 0x54, 0xf3, 0x7f, 0xef, 0x5c, 0xee, 0x05, 0xed, 0xd1, 0xed, 0xdf, 0xed, + 0xc6, 0xed, 0x15, 0xf0, 0x09, 0xf0, 0xcc, 0xf0, 0xb8, 0xf2, 0xe6, 0xf4, 0x0c, 0xfa, 0xe8, 0xfd, + 0x18, 0x02, 0x93, 0x04, 0x38, 0x05, 0xdf, 0x07, 0x19, 0x0b, 0x25, 0x0e, 0x61, 0x12, 0xcd, 0x14, + 0x1e, 0x15, 0x66, 0x12, 0x35, 0x0d, 0x50, 0x0a, 0xd6, 0x08, 0x2b, 0x05, 0x80, 0x02, 0xd7, 0xfc, + 0x9c, 0xf7, 0xc3, 0xf2, 0xf2, 0xed, 0xc1, 0xea, 0xe2, 0xe8, 0xd2, 0xe9, 0xeb, 0xeb, 0x4b, 0xeb, + 0x0a, 0xee, 0xc7, 0xf1, 0x5c, 0xf5, 0x65, 0xfa, 0x5e, 0xfd, 0xbd, 0xfd, 0x4e, 0xfd, 0x05, 0xfd, + 0x78, 0xfe, 0x24, 0x02, 0x6c, 0x06, 0x62, 0x0b, 0x9a, 0x0f, 0x93, 0x12, 0xcc, 0x11, 0xbd, 0x0f, + 0x2d, 0x0d, 0xbb, 0x0c, 0xf5, 0x09, 0xa4, 0x08, 0xaa, 0x03, 0x3b, 0xff, 0x03, 0xfb, 0xab, 0xf6, + 0xf2, 0xf4, 0xbc, 0xf3, 0xcb, 0xf2, 0xe4, 0xf0, 0xc1, 0xed, 0x9d, 0xed, 0xef, 0xed, 0xa0, 0xef, + 0xf4, 0xf2, 0x82, 0xf5, 0x75, 0xf6, 0x54, 0xf8, 0xa5, 0xfa, 0x19, 0xfe, 0xdc, 0x02, 0xa3, 0x07, + 0x42, 0x0d, 0x82, 0x10, 0x74, 0x13, 0x91, 0x12, 0x4b, 0x11, 0xc9, 0x10, 0x13, 0x10, 0xec, 0x0c, + 0x4a, 0x0b, 0x6d, 0x08, 0xb1, 0x06, 0xcb, 0x04, 0xc0, 0x02, 0xb7, 0x01, 0x7a, 0x00, 0xed, 0xff, + 0x1e, 0xff, 0x16, 0xff, 0xd9, 0x00, 0x0e, 0x02, 0x79, 0x03, 0xb0, 0x04, 0x0c, 0x04, 0x17, 0x03, + 0x88, 0x02, 0x75, 0x02, 0xef, 0x01, 0x57, 0x03, 0x13, 0x04, 0xfa, 0x05, 0xbe, 0x07, 0xf8, 0x09, + 0xdb, 0x0b, 0x4c, 0x0c, 0x4c, 0x0c, 0xeb, 0x09, 0xe7, 0x06, 0xc1, 0x04, 0xbe, 0x00, 0xbd, 0xfe, + 0xff, 0xfc, 0x6b, 0xfc, 0xe7, 0xfb, 0xe0, 0xfa, 0xd7, 0xfa, 0x85, 0xf9, 0x21, 0xfa, 0xac, 0xfb, + 0xdb, 0xfe, 0x13, 0x00, 0x50, 0x01, 0x65, 0x00, 0x52, 0x00, 0x79, 0x01, 0x91, 0x02, 0xbd, 0x02, + 0x87, 0x01, 0xca, 0x00, 0x86, 0x01, 0xfe, 0x01, 0xb1, 0x03, 0xea, 0x03, 0xaf, 0x02, 0x69, 0x00, + 0xda, 0xfb, 0x2e, 0xf8, 0x45, 0xf4, 0xb2, 0xf0, 0x8b, 0xef, 0xf2, 0xf0, 0xde, 0xf1, 0xdb, 0xf2, + 0xf9, 0xf2, 0xca, 0xf2, 0x71, 0xf3, 0xb1, 0xf6, 0x99, 0xfa, 0x1c, 0xfe, 0xda, 0x00, 0x72, 0x01, + 0x54, 0x01, 0x98, 0x04, 0x67, 0x06, 0x60, 0x08, 0xc6, 0x09, 0xa7, 0x0a, 0xa4, 0x0b, 0x1d, 0x0c, + 0x7b, 0x0c, 0xe9, 0x0e, 0x46, 0x10, 0x56, 0x11, 0xca, 0x0f, 0xa3, 0x0a, 0x3b, 0x06, 0x5d, 0x00, + 0x23, 0xfd, 0x01, 0xfb, 0x8b, 0xf8, 0x64, 0xf6, 0x0c, 0xf4, 0x66, 0xf1, 0x7c, 0xee, 0xf9, 0xeb, + 0xbd, 0xea, 0xb5, 0xec, 0x9d, 0xee, 0x91, 0xf2, 0xfa, 0xf4, 0x73, 0xf5, 0x31, 0xf8, 0x47, 0xf9, + 0xae, 0xfc, 0xe0, 0xfe, 0x89, 0xff, 0x01, 0x01, 0x99, 0x00, 0xbb, 0x03, 0x68, 0x07, 0x79, 0x0a, + 0xc9, 0x0d, 0x97, 0x0d, 0x0a, 0x0c, 0x4c, 0x09, 0x6a, 0x05, 0xe4, 0x01, 0x97, 0xff, 0x3e, 0xfd, + 0x24, 0xfc, 0x64, 0xfb, 0x06, 0xf9, 0xb3, 0xf7, 0x84, 0xf6, 0x7c, 0xf7, 0xd1, 0xf8, 0x97, 0xf8, + 0xbe, 0xf9, 0x88, 0xf8, 0xb3, 0xf7, 0x12, 0xf7, 0x99, 0xf7, 0x60, 0xfa, 0x64, 0xfc, 0x23, 0xfe, + 0x72, 0x01, 0x18, 0x03, 0x49, 0x03, 0x68, 0x04, 0xc4, 0x06, 0x93, 0x09, 0x65, 0x0a, 0xaf, 0x09, + 0x75, 0x06, 0xd8, 0x02, 0x16, 0x02, 0x73, 0x01, 0x0f, 0x02, 0xf4, 0x03, 0x0b, 0x05, 0xc8, 0x03, + 0x29, 0x02, 0x58, 0x01, 0x20, 0x01, 0xa4, 0x00, 0x3f, 0x00, 0xd8, 0x01, 0x61, 0x01, 0x6e, 0x01, + 0x18, 0x02, 0xd6, 0x01, 0x96, 0x03, 0x30, 0x04, 0x33, 0x04, 0xcf, 0x04, 0x43, 0x03, 0xd2, 0x02, + 0x37, 0x03, 0x09, 0x06, 0xd6, 0x07, 0x5d, 0x07, 0x7d, 0x06, 0xa6, 0x04, 0x7f, 0x02, 0x66, 0x01, + 0x9d, 0x00, 0xea, 0x00, 0xd0, 0x02, 0x7a, 0x03, 0x66, 0x03, 0x2e, 0x04, 0x48, 0x06, 0xce, 0x08, + 0xe5, 0x0a, 0xbe, 0x0d, 0x19, 0x0d, 0xdc, 0x0a, 0xeb, 0x09, 0x28, 0x09, 0xcc, 0x08, 0xd2, 0x08, + 0x05, 0x07, 0x67, 0x04, 0x8b, 0x02, 0x68, 0x00, 0x6a, 0xff, 0xf9, 0xfe, 0x1a, 0x00, 0x8e, 0xfe, + 0x67, 0xfb, 0x1d, 0xf8, 0x06, 0xf3, 0x5f, 0xef, 0xc9, 0xec, 0x97, 0xec, 0xed, 0xee, 0x28, 0xf1, + 0xcd, 0xf2, 0x29, 0xf3, 0x2d, 0xf3, 0xfc, 0xf4, 0x33, 0xf7, 0xe4, 0xf8, 0xb4, 0xfa, 0xc2, 0xfa, + 0x13, 0xfb, 0x81, 0xfd, 0xa1, 0xff, 0x90, 0x02, 0x22, 0x05, 0x43, 0x07, 0x47, 0x09, 0x80, 0x08, + 0xcb, 0x07, 0x5f, 0x06, 0x92, 0x07, 0x23, 0x0a, 0x82, 0x09, 0x3e, 0x06, 0x28, 0x02, 0x19, 0xfd, + 0x93, 0xfa, 0x56, 0xfb, 0x22, 0xfb, 0xf0, 0xf9, 0x1b, 0xf8, 0x4c, 0xf7, 0x51, 0xf6, 0xfc, 0xf6, + 0x8d, 0xfa, 0x02, 0xfc, 0xc6, 0xfd, 0x2d, 0xff, 0x01, 0xfe, 0x9d, 0xfe, 0xe3, 0xff, 0xa1, 0x01, + 0x85, 0x03, 0xac, 0x04, 0xd1, 0x04, 0xbb, 0x03, 0xbd, 0x02, 0x28, 0x03, 0x76, 0x06, 0x78, 0x09, + 0xa5, 0x0a, 0x1a, 0x0a, 0x19, 0x08, 0x84, 0x05, 0xb7, 0x02, 0xcc, 0x00, 0xca, 0xfd, 0x27, 0xfc, + 0xf7, 0xfc, 0x09, 0xfd, 0x7a, 0xfa, 0xc8, 0xf6, 0x0a, 0xf5, 0xd0, 0xf4, 0x2d, 0xf5, 0xc7, 0xf5, + 0xa7, 0xf4, 0x4f, 0xf3, 0x7f, 0xf3, 0x37, 0xf4, 0x27, 0xf6, 0x13, 0xf8, 0x27, 0xf8, 0xbe, 0xf8, + 0x8d, 0xf9, 0xf5, 0xfb, 0x82, 0xfe, 0x8f, 0x00, 0xfe, 0x02, 0x19, 0x05, 0xc0, 0x05, 0xf1, 0x03, + 0x5a, 0x02, 0x6c, 0x00, 0xf8, 0xff, 0x6a, 0x00, 0xec, 0x00, 0x90, 0x02, 0xae, 0x03, 0x16, 0x04, + 0xa9, 0x03, 0x01, 0x07, 0xb1, 0x09, 0x90, 0x0a, 0x01, 0x0c, 0xd4, 0x09, 0x0f, 0x09, 0x7c, 0x08, + 0xb8, 0x07, 0x54, 0x08, 0x97, 0x08, 0xd6, 0x07, 0x5c, 0x06, 0xd1, 0x04, 0x5c, 0x03, 0x8e, 0x02, + 0x6d, 0x02, 0x4d, 0x03, 0x49, 0x03, 0x06, 0x02, 0xfa, 0x00, 0xa3, 0xff, 0xd1, 0xff, 0x3e, 0xff, + 0x23, 0xfe, 0x87, 0xfe, 0xb7, 0xfe, 0x62, 0xff, 0x1a, 0xff, 0xdd, 0xfe, 0x0c, 0xfe, 0xfa, 0xfc, + 0x53, 0x00, 0xe3, 0x04, 0xe5, 0x07, 0x36, 0x0a, 0xa8, 0x09, 0xcb, 0x09, 0x9e, 0x0a, 0xd7, 0x07, + 0x4b, 0x06, 0x6c, 0x04, 0xbc, 0x02, 0xd6, 0xfe, 0x3a, 0xfb, 0x24, 0xfc, 0x06, 0xfa, 0x98, 0xf6, + 0x7f, 0xf2, 0xb2, 0xef, 0x27, 0xee, 0xaf, 0xeb, 0x9c, 0xed, 0x58, 0xef, 0xca, 0xef, 0xb9, 0xee, + 0xe9, 0xea, 0x51, 0xeb, 0xb7, 0xef, 0xa0, 0xf4, 0xf4, 0xf8, 0x08, 0x00, 0xab, 0x02, 0x9a, 0x05, + 0x5d, 0x07, 0x72, 0x08, 0x62, 0x0b, 0xc8, 0x0b, 0xb2, 0x0a, 0x34, 0x0b, 0x0c, 0x0e, 0x05, 0x0f, + 0xb0, 0x0e, 0xc4, 0x0c, 0xca, 0x0b, 0xec, 0x0c, 0x09, 0x0d, 0xf5, 0x0b, 0x90, 0x07, 0x72, 0x03, + 0x00, 0x01, 0xde, 0xfd, 0x39, 0xfd, 0x79, 0xfe, 0x2a, 0xfd, 0x0b, 0xfa, 0xbd, 0xf8, 0xf0, 0xf8, + 0xae, 0xf6, 0xb7, 0xf6, 0x23, 0xf7, 0x2f, 0xf6, 0xb2, 0xf5, 0xae, 0xf6, 0x23, 0xfa, 0x68, 0xfd, + 0xe6, 0xff, 0x1e, 0x02, 0x3d, 0x05, 0x9a, 0x03, 0x9c, 0x02, 0x5e, 0x00, 0xcf, 0x01, 0x7f, 0x06, + 0x2f, 0x08, 0x14, 0x09, 0xcb, 0x05, 0xec, 0x00, 0xb4, 0xfc, 0x49, 0xfc, 0x25, 0xfb, 0xf8, 0xf8, + 0x7c, 0xf7, 0x25, 0xf6, 0x75, 0xf6, 0xd0, 0xf6, 0x6d, 0xf9, 0x77, 0xfd, 0xae, 0x00, 0x5d, 0x01, + 0x71, 0xfe, 0x8d, 0xfb, 0x3a, 0xf9, 0x06, 0xf7, 0xb7, 0xf6, 0x20, 0xf9, 0x61, 0xfa, 0x4b, 0xfa, + 0x54, 0xfa, 0x9a, 0xfb, 0xb6, 0x00, 0x9a, 0x05, 0xd4, 0x09, 0x1a, 0x09, 0x04, 0x09, 0x40, 0x07, + 0xdb, 0x03, 0xaf, 0x02, 0xbd, 0x01, 0x3b, 0x03, 0x5f, 0x04, 0xf7, 0x03, 0x0c, 0x03, 0xbc, 0x03, + 0xf6, 0x05, 0xbc, 0x09, 0x47, 0x0b, 0xf4, 0x0c, 0x58, 0x0b, 0xa9, 0x08, 0xef, 0x06, 0x4c, 0x06, + 0xc9, 0x06, 0xf1, 0x07, 0x23, 0x07, 0xf6, 0x04, 0x08, 0x04, 0xd2, 0x03, 0x5b, 0x04, 0x3d, 0x04, + 0x50, 0x04, 0xb1, 0x04, 0xbf, 0x04, 0x68, 0x03, 0x8b, 0xff, 0xe9, 0xfb, 0x30, 0xfb, 0x67, 0xfc, + 0x22, 0xfd, 0x0d, 0xfd, 0x83, 0xfc, 0xbc, 0xfb, 0xea, 0xfb, 0x34, 0xff, 0xcf, 0x02, 0x46, 0x05, + 0x66, 0x07, 0xa7, 0x06, 0x8c, 0x07, 0x71, 0x08, 0xca, 0x08, 0x69, 0x09, 0x0c, 0x0a, 0x2a, 0x0a, + 0xf3, 0x08, 0x25, 0x07, 0x4b, 0x05, 0xf6, 0x02, 0x6a, 0x01, 0xd7, 0x00, 0x7d, 0xff, 0x34, 0xfd, + 0xb5, 0xfa, 0x01, 0xf7, 0xf5, 0xf4, 0x37, 0xf3, 0xae, 0xef, 0xc9, 0xee, 0x0b, 0xee, 0x2a, 0xee, + 0x09, 0xee, 0xf9, 0xee, 0x57, 0xf2, 0xc9, 0xf3, 0xd4, 0xf5, 0x68, 0xf7, 0x02, 0xf8, 0xf1, 0xf8, + 0xa1, 0xfa, 0x00, 0xfd, 0x27, 0x00, 0x58, 0x02, 0x67, 0x03, 0x87, 0x05, 0x2d, 0x06, 0x38, 0x06, + 0x10, 0x06, 0x53, 0x06, 0xf9, 0x06, 0x64, 0x06, 0xd7, 0x06, 0xe9, 0x05, 0xc0, 0x03, 0xb0, 0x00, + 0xd9, 0xfc, 0x34, 0xfb, 0x4e, 0xfa, 0x57, 0xfa, 0x4d, 0xfa, 0x6d, 0xf8, 0x0c, 0xf8, 0x9e, 0xf8, + 0x32, 0xf9, 0x70, 0xfa, 0x52, 0xfb, 0xfc, 0xfa, 0x61, 0xfa, 0x13, 0xfa, 0xcc, 0xfb, 0x73, 0xfd, + 0xaf, 0xfe, 0x57, 0xff, 0x9c, 0xff, 0x64, 0x00, 0xd2, 0xff, 0xe9, 0xff, 0x4d, 0x01, 0x6d, 0x01, + 0xff, 0x01, 0x3e, 0x03, 0x6a, 0x03, 0xcc, 0x02, 0x6d, 0x01, 0x26, 0x00, 0xb9, 0x00, 0x0c, 0x01, + 0x22, 0x01, 0x21, 0x00, 0x6e, 0xfe, 0x7e, 0xfe, 0xd9, 0xfb, 0x7a, 0xfa, 0x6a, 0xfa, 0x49, 0xfa, + 0x37, 0xfb, 0x03, 0xfb, 0xba, 0xfa, 0x2d, 0xfb, 0xab, 0xfb, 0x06, 0xfc, 0x8b, 0xfc, 0x52, 0xfb, + 0x21, 0xfa, 0x01, 0xfa, 0x90, 0xfb, 0xe4, 0xfe, 0x49, 0x00, 0x55, 0x01, 0x29, 0x01, 0x51, 0x00, + 0x58, 0x00, 0xf1, 0xff, 0xa9, 0x00, 0x5b, 0x01, 0xd6, 0x01, 0x94, 0x03, 0xea, 0x03, 0xf7, 0x04, + 0x0e, 0x07, 0x6f, 0x09, 0xc1, 0x0c, 0x32, 0x10, 0x7c, 0x11, 0x38, 0x11, 0x14, 0x10, 0xea, 0x0e, + 0xd0, 0x0e, 0x1d, 0x0e, 0x83, 0x0d, 0x9d, 0x0c, 0x81, 0x0b, 0x45, 0x0a, 0xe7, 0x08, 0xee, 0x07, + 0x9c, 0x06, 0xf9, 0x04, 0x9d, 0x03, 0x58, 0x01, 0x55, 0xfe, 0x8b, 0xfb, 0x99, 0xf9, 0xda, 0xf8, + 0xfc, 0xf9, 0xc3, 0xfb, 0x7c, 0xfc, 0x9e, 0xfb, 0x4c, 0xfc, 0x06, 0xfe, 0xdc, 0xff, 0xfe, 0x01, + 0x49, 0x02, 0xc0, 0x02, 0x9c, 0x03, 0xb4, 0x04, 0x43, 0x06, 0xe2, 0x07, 0x18, 0x09, 0x92, 0x0a, + 0x35, 0x0b, 0x6d, 0x0a, 0xd5, 0x09, 0xa6, 0x08, 0x02, 0x07, 0x1d, 0x04, 0x92, 0x01, 0x69, 0xff, + 0xde, 0xfa, 0xe8, 0xf7, 0x43, 0xf5, 0x60, 0xf3, 0x25, 0xf2, 0x08, 0xf0, 0x23, 0xf0, 0xc6, 0xed, + 0x0f, 0xec, 0xdf, 0xed, 0xaf, 0xef, 0x26, 0xf4, 0x21, 0xf8, 0xd4, 0xfa, 0xaa, 0xfd, 0xf9, 0xfe, + 0x77, 0xff, 0x3f, 0x01, 0xeb, 0x02, 0xa9, 0x04, 0x4f, 0x06, 0x25, 0x06, 0x23, 0x08, 0x92, 0x08, + 0x09, 0x0a, 0x3e, 0x0c, 0xb7, 0x0b, 0xd8, 0x0b, 0x51, 0x0a, 0xbd, 0x07, 0x7b, 0x05, 0x86, 0x03, + 0x61, 0x00, 0x61, 0xfd, 0x06, 0xfb, 0xb9, 0xf9, 0xbf, 0xf7, 0x2b, 0xf7, 0x07, 0xf7, 0xbf, 0xf4, + 0x8c, 0xf4, 0x20, 0xf4, 0x8d, 0xf3, 0x08, 0xf3, 0x10, 0xf2, 0x88, 0xf2, 0xf9, 0xf3, 0x28, 0xf6, + 0x70, 0xf8, 0x0e, 0xfa, 0x8e, 0xfb, 0x65, 0xfd, 0xad, 0xfe, 0x80, 0x00, 0xf7, 0x01, 0xae, 0x01, + 0x74, 0x02, 0x89, 0x02, 0xb2, 0x02, 0x29, 0x03, 0x45, 0x03, 0xab, 0x03, 0x3a, 0x03, 0x47, 0x04, + 0x03, 0x04, 0x70, 0x02, 0x89, 0x02, 0x22, 0x02, 0x1e, 0x02, 0xeb, 0x01, 0x13, 0x01, 0xc5, 0x00, + 0xa3, 0xff, 0x2d, 0xff, 0x57, 0xff, 0x2f, 0xfe, 0xa9, 0xfb, 0x68, 0xfb, 0x34, 0xfa, 0xc8, 0xf9, + 0xb3, 0xf8, 0x2c, 0xf8, 0x80, 0xf9, 0x2a, 0xfa, 0xcc, 0xfb, 0xe9, 0xfd, 0x9e, 0xfe, 0xe6, 0xfd, + 0xc1, 0xfc, 0xd3, 0xfc, 0x2b, 0xfd, 0xf8, 0xfd, 0x92, 0xfe, 0xc0, 0xfe, 0xa2, 0xff, 0xf0, 0x00, + 0x86, 0x01, 0xa8, 0x01, 0xbc, 0x02, 0xed, 0x03, 0x9e, 0x05, 0x79, 0x06, 0x2c, 0x06, 0x26, 0x07, + 0x89, 0x06, 0x77, 0x06, 0xdb, 0x06, 0x28, 0x06, 0x38, 0x06, 0x9b, 0x05, 0x19, 0x06, 0x8d, 0x06, + 0xf5, 0x04, 0x9c, 0x03, 0xd1, 0x02, 0x8c, 0x00, 0xa4, 0xff, 0xca, 0xfd, 0xbd, 0xfc, 0x15, 0xfd, + 0x6c, 0xfd, 0x92, 0xff, 0xeb, 0xff, 0x96, 0x01, 0x07, 0x02, 0x41, 0x03, 0xe1, 0x06, 0x68, 0x09, + 0x01, 0x0c, 0x45, 0x0d, 0x34, 0x0e, 0x05, 0x0f, 0x5f, 0x10, 0x36, 0x11, 0x56, 0x12, 0x83, 0x12, + 0x16, 0x12, 0xe3, 0x11, 0x4b, 0x10, 0x09, 0x10, 0x4a, 0x0e, 0x85, 0x0b, 0xa3, 0x09, 0x0f, 0x06, + 0xce, 0x02, 0xf1, 0xfd, 0x1f, 0xfa, 0x00, 0xf8, 0x3d, 0xf5, 0xd8, 0xf3, 0x4b, 0xf2, 0x71, 0xf0, + 0xd3, 0xee, 0x6e, 0xee, 0x2a, 0xee, 0xe4, 0xee, 0xa5, 0xf0, 0xc1, 0xf2, 0x3d, 0xf4, 0x1a, 0xf4, + 0xd6, 0xf5, 0xb2, 0xf7, 0x3d, 0xfa, 0xa5, 0xfd, 0x66, 0xff, 0x34, 0x01, 0x1d, 0x01, 0xf9, 0x02, + 0x1c, 0x05, 0x34, 0x06, 0xcf, 0x07, 0xd9, 0x08, 0x26, 0x07, 0x94, 0x05, 0xe6, 0x03, 0xc4, 0x02, + 0x12, 0x02, 0x7d, 0x00, 0xc6, 0xff, 0x6e, 0xfc, 0x98, 0xf9, 0x9f, 0xf8, 0xf9, 0xf8, 0x45, 0xfa, + 0xfe, 0xf9, 0x25, 0xfb, 0x35, 0xfc, 0x08, 0xfc, 0xd5, 0xfa, 0xc8, 0xfa, 0x56, 0xfb, 0x97, 0xfb, + 0x3b, 0xfc, 0x2d, 0xfc, 0x4a, 0xfc, 0x5d, 0xfc, 0x5e, 0xfe, 0x28, 0x01, 0x9b, 0x02, 0x41, 0x04, + 0xed, 0x03, 0xd8, 0x02, 0xb7, 0x01, 0x8c, 0x00, 0x04, 0x01, 0x68, 0x01, 0x5c, 0x02, 0x5c, 0x02, + 0xe2, 0x00, 0xe2, 0xff, 0x80, 0x00, 0x0e, 0x00, 0xa8, 0xff, 0x67, 0xff, 0x6f, 0xfd, 0x03, 0xfb, + 0x35, 0xf7, 0x1a, 0xf5, 0xab, 0xf5, 0x64, 0xf6, 0x37, 0xf7, 0xf6, 0xf5, 0xd2, 0xf5, 0x21, 0xf5, + 0xa7, 0xf3, 0x62, 0xf4, 0x2d, 0xf5, 0x17, 0xf6, 0xd9, 0xf6, 0x30, 0xf7, 0x03, 0xf8, 0x6b, 0xf8, + 0x15, 0xf8, 0x57, 0xf9, 0x20, 0xfb, 0xb7, 0xfd, 0xf2, 0xfe, 0x0a, 0xfe, 0x31, 0xff, 0x30, 0x01, + 0x84, 0x03, 0xe2, 0x06, 0x43, 0x0a, 0xd6, 0x0d, 0x08, 0x10, 0x8d, 0x11, 0x2d, 0x13, 0xed, 0x13, + 0xb4, 0x14, 0x87, 0x14, 0x41, 0x13, 0xc6, 0x11, 0x69, 0x0f, 0x35, 0x0e, 0x83, 0x0e, 0xca, 0x0d, + 0xa4, 0x0c, 0x64, 0x0a, 0xd5, 0x07, 0x99, 0x05, 0xde, 0x00, 0x99, 0xfe, 0x33, 0xfc, 0xe6, 0xf9, + 0x4a, 0xfa, 0x80, 0xf8, 0x50, 0xf8, 0x55, 0xf9, 0x41, 0xf9, 0xce, 0xf9, 0xcb, 0xfa, 0xf0, 0xfb, + 0x0c, 0xfd, 0x51, 0xfe, 0xbf, 0xfc, 0x17, 0xfe, 0x97, 0xff, 0x74, 0x01, 0x98, 0x03, 0xca, 0x05, + 0x84, 0x07, 0xe0, 0x06, 0xe8, 0x08, 0xaf, 0x0a, 0x75, 0x09, 0xd0, 0x08, 0xf7, 0x06, 0x74, 0x04, + 0xce, 0xff, 0xb7, 0xfb, 0xe8, 0xf7, 0x76, 0xf5, 0x60, 0xf5, 0x12, 0xf4, 0x91, 0xf2, 0xa8, 0xf1, + 0xaa, 0xf0, 0x49, 0xef, 0x9d, 0xef, 0xc1, 0xf1, 0x8f, 0xf3, 0xd5, 0xf6, 0x6c, 0xfa, 0x16, 0xfc, + 0x7e, 0xfd, 0xb9, 0xff, 0xb5, 0x00, 0xda, 0x02, 0xcd, 0x04, 0x56, 0x06, 0x76, 0x07, 0x74, 0x09, + 0x15, 0x0b, 0x5c, 0x0c, 0xb7, 0x0e, 0x46, 0x0f, 0x2e, 0x10, 0xbb, 0x0e, 0x2b, 0x0c, 0x85, 0x0b, + 0xf9, 0x08, 0xe1, 0x08, 0x36, 0x06, 0x10, 0x04, 0x30, 0x01, 0xa2, 0xfc, 0x84, 0xfa, 0x2c, 0xfa, + 0xb4, 0xf7, 0x9f, 0xf6, 0x30, 0xf7, 0x0b, 0xf4, 0x79, 0xf1, 0x30, 0xf1, 0xc0, 0xee, 0x17, 0xf1, + 0xee, 0xf2, 0x2e, 0xf4, 0x46, 0xf6, 0x07, 0xf9, 0xb0, 0xfa, 0x36, 0xfc, 0xb7, 0xff, 0xe2, 0x01, + 0x43, 0x03, 0xc3, 0x03, 0xb1, 0x01, 0x46, 0x00, 0xe3, 0xff, 0x1c, 0x01, 0x4f, 0x02, 0x3a, 0x04, + 0x2e, 0x04, 0xf7, 0x01, 0xed, 0x00, 0x9b, 0x02, 0x3e, 0x01, 0xe1, 0x01, 0x3a, 0x04, 0x89, 0x02, + 0x98, 0xff, 0x12, 0xfe, 0xf8, 0xf9, 0xdb, 0xfa, 0x6d, 0xfb, 0xba, 0xf9, 0xe6, 0xf8, 0xb7, 0xf8, + 0xa7, 0xf6, 0x6d, 0xf7, 0xbb, 0xf7, 0x76, 0xf8, 0xf0, 0xf7, 0x4a, 0xf9, 0x38, 0xf9, 0x60, 0xfa, + 0x74, 0xfc, 0xae, 0xfb, 0x33, 0xfe, 0xd1, 0xff, 0xf8, 0xff, 0x01, 0x02, 0xfd, 0x03, 0xd1, 0x05, + 0x7a, 0x07, 0x65, 0x08, 0x16, 0x0a, 0x70, 0x0b, 0xfd, 0x0b, 0xee, 0x0b, 0x69, 0x0c, 0x1b, 0x0e, + 0x86, 0x0f, 0x45, 0x10, 0xcb, 0x10, 0x54, 0x0f, 0x36, 0x0d, 0x09, 0x0d, 0x47, 0x0c, 0xfe, 0x0c, + 0x28, 0x0d, 0x33, 0x09, 0xfb, 0x05, 0x5b, 0x03, 0x50, 0x00, 0x82, 0xfc, 0xcc, 0xfb, 0xd4, 0xfb, + 0x83, 0xf8, 0x0e, 0xf7, 0x86, 0xf5, 0x7a, 0xf5, 0xfb, 0xf6, 0x73, 0xf8, 0x68, 0xf9, 0x44, 0xfc, + 0xb8, 0xfe, 0xf7, 0xff, 0x2b, 0x03, 0x87, 0x03, 0x00, 0x04, 0x95, 0x03, 0xb1, 0x04, 0x5d, 0x05, + 0x68, 0x06, 0x43, 0x07, 0x3f, 0x08, 0x43, 0x09, 0x51, 0x09, 0x91, 0x08, 0xc0, 0x07, 0xbb, 0x06, + 0x87, 0x03, 0x70, 0xfe, 0x32, 0xfb, 0x7d, 0xf9, 0x10, 0xf9, 0x01, 0xf7, 0x2d, 0xf5, 0x8b, 0xf4, + 0x5a, 0xf3, 0x3e, 0xf3, 0x6e, 0xf3, 0xaf, 0xf4, 0x2d, 0xf5, 0x95, 0xf4, 0x72, 0xf3, 0x71, 0xf5, + 0x22, 0xf7, 0xab, 0xf9, 0x8c, 0xfc, 0xde, 0xfd, 0xc8, 0xfe, 0x01, 0xff, 0xa5, 0x00, 0x6c, 0x04, + 0x0f, 0x07, 0x0e, 0x08, 0x3b, 0x07, 0x0b, 0x08, 0xda, 0x06, 0xc5, 0x05, 0x3a, 0x05, 0xa9, 0x04, + 0x26, 0x04, 0xfe, 0x02, 0x00, 0x01, 0x66, 0x00, 0x4f, 0xff, 0x8e, 0xfb, 0x7b, 0xf9, 0xe9, 0xf8, + 0xb2, 0xf8, 0x7b, 0xfa, 0xc4, 0xfa, 0xde, 0xfb, 0xc6, 0xfa, 0x89, 0xf8, 0x86, 0xf8, 0x18, 0xf9, + 0xe1, 0xf9, 0x13, 0xfa, 0xa8, 0xf9, 0x07, 0xfa, 0xc8, 0xfa, 0xa9, 0xfc, 0x55, 0xfe, 0xdf, 0x00, + 0x54, 0x02, 0xc1, 0x02, 0x62, 0x02, 0x2a, 0x02, 0x5b, 0x03, 0x71, 0x04, 0x62, 0x03, 0xeb, 0x03, + 0xb0, 0x05, 0x35, 0x05, 0x69, 0x06, 0x3d, 0x08, 0x88, 0x07, 0x8b, 0x07, 0x37, 0x06, 0x2b, 0x06, + 0xa6, 0x05, 0xa9, 0x02, 0x8e, 0xff, 0xa4, 0xfe, 0x8e, 0xfd, 0x08, 0xfc, 0xcb, 0xfb, 0xea, 0xfc, + 0x96, 0xfc, 0xb9, 0xfb, 0xcf, 0xfb, 0x51, 0xfc, 0xe0, 0xfc, 0x0b, 0xfb, 0x88, 0xf8, 0xd4, 0xf6, + 0x79, 0xf5, 0xcd, 0xf7, 0x0d, 0xfa, 0x2d, 0xfb, 0x57, 0xfc, 0x86, 0xfb, 0xef, 0xfb, 0x3d, 0xfc, + 0xfb, 0xfd, 0x64, 0x00, 0x65, 0x03, 0x53, 0x06, 0x7c, 0x08, 0xcc, 0x08, 0x7d, 0x08, 0x54, 0x0a, + 0xb3, 0x0a, 0x02, 0x0c, 0x35, 0x0b, 0xd3, 0x0a, 0x1c, 0x0b, 0xbb, 0x08, 0xfc, 0x07, 0x38, 0x08, + 0xf5, 0x07, 0x5c, 0x07, 0x6e, 0x04, 0x31, 0x01, 0x29, 0xfd, 0x18, 0xfc, 0xa2, 0xfb, 0xcf, 0xfc, + 0xe3, 0xfc, 0xff, 0xfa, 0x7c, 0xf8, 0x8b, 0xf6, 0xa7, 0xf5, 0x51, 0xf5, 0x76, 0xf7, 0x17, 0xfb, + 0xb5, 0xff, 0xc1, 0xff, 0x2a, 0x02, 0x72, 0x01, 0xf2, 0x00, 0xf6, 0x02, 0xb7, 0x00, 0xf3, 0x01, + 0x5a, 0x04, 0x5b, 0x03, 0x5a, 0x07, 0x89, 0x0c, 0x2d, 0x0e, 0x51, 0x0c, 0x1d, 0x0b, 0x2d, 0x07, + 0x4e, 0x03, 0xac, 0xfd, 0x26, 0xf9, 0x2b, 0xfb, 0x2b, 0xfb, 0xc2, 0xfa, 0xf5, 0xf7, 0x29, 0xf5, + 0x97, 0xf2, 0xb7, 0xf0, 0x1e, 0xee, 0x39, 0xf0, 0x15, 0xf0, 0xed, 0xf0, 0xe0, 0xef, 0x86, 0xf2, + 0x5b, 0xfa, 0x9a, 0xfc, 0x8b, 0xfd, 0xe5, 0xfd, 0xea, 0xfd, 0x38, 0x01, 0xc4, 0x01, 0x94, 0x03, + 0x6a, 0x06, 0x99, 0x0b, 0x07, 0x12, 0x31, 0x19, 0x01, 0x1d, 0x7f, 0x1a, 0x01, 0x1b, 0x88, 0x1b, + 0x9b, 0x1d, 0x98, 0x1c, 0x3a, 0x19, 0xfe, 0x1b, 0x04, 0x1c, 0xc2, 0x1b, 0x72, 0x1a, 0x3e, 0x15, + 0x92, 0x12, 0x2f, 0x0d, 0x81, 0x07, 0xa7, 0x01, 0x5e, 0xfe, 0x32, 0xf8, 0x5c, 0xf6, 0x1d, 0xf6, + 0x75, 0xf6, 0x8f, 0xf5, 0xf3, 0xf0, 0x8c, 0xed, 0x5e, 0xed, 0xab, 0xef, 0x93, 0xee, 0xdb, 0xec, + 0xb1, 0xe9, 0xe7, 0xea, 0xda, 0xec, 0x5a, 0xed, 0xff, 0xf3, 0x10, 0xf2, 0xb4, 0xee, 0x17, 0xf0, + 0xf9, 0xf1, 0x80, 0xf6, 0x2b, 0xf8, 0x44, 0xfc, 0x4e, 0x02, 0x97, 0x06, 0x73, 0x0a, 0xf7, 0x09, + 0x90, 0x06, 0x9f, 0x01, 0xe2, 0xfc, 0x78, 0xf5, 0x2d, 0xf0, 0x16, 0xe7, 0xc8, 0xe1, 0xf3, 0xe3, + 0x0d, 0xe7, 0xb6, 0xe9, 0xcc, 0xea, 0xdb, 0xe7, 0xd6, 0xe5, 0x1f, 0xe8, 0x29, 0xe8, 0x78, 0xe5, + 0x4c, 0xe4, 0x70, 0xe6, 0x4e, 0xeb, 0xf1, 0xec, 0xeb, 0xf2, 0x9c, 0xf6, 0xeb, 0xf5, 0x37, 0xfa, + 0xbe, 0xfe, 0x5e, 0x04, 0xd2, 0x0b, 0xf0, 0x12, 0xb2, 0x1a, 0x18, 0x1c, 0xf3, 0x1e, 0x93, 0x20, + 0x1d, 0x20, 0x7d, 0x1d, 0x9b, 0x18, 0x36, 0x17, 0x7a, 0x16, 0x36, 0x15, 0x28, 0x14, 0x6a, 0x13, + 0xcf, 0x16, 0x57, 0x17, 0x06, 0x18, 0x8a, 0x13, 0xb4, 0x08, 0x36, 0x07, 0x30, 0x06, 0xec, 0x01, + 0x34, 0x01, 0x5b, 0xfe, 0x6a, 0x01, 0xba, 0xff, 0x0d, 0x03, 0x14, 0x09, 0x8e, 0x08, 0xda, 0x0b, + 0xc7, 0x11, 0xa9, 0x17, 0x25, 0x1c, 0x68, 0x1f, 0xa4, 0x27, 0x24, 0x28, 0xfc, 0x26, 0x5f, 0x24, + 0x83, 0x20, 0x6b, 0x1b, 0x9d, 0x13, 0x05, 0x0f, 0xd8, 0x0a, 0x00, 0x06, 0xd0, 0x01, 0x67, 0xfe, + 0x03, 0xfe, 0x7b, 0xfa, 0x61, 0xfa, 0xec, 0xf7, 0xb4, 0xee, 0x53, 0xe7, 0x6f, 0xe5, 0xec, 0xe4, + 0xd1, 0xe3, 0x1e, 0xdf, 0x70, 0xe2, 0x98, 0xe1, 0xd5, 0xe2, 0x40, 0xe9, 0xe6, 0xe6, 0x10, 0xe4, + 0x73, 0xe4, 0xc0, 0xea, 0x12, 0xf3, 0x36, 0xf6, 0x06, 0xfd, 0x2a, 0x00, 0xa9, 0x02, 0xb1, 0x04, + 0x3c, 0x02, 0xa7, 0xff, 0xc3, 0xf9, 0x94, 0xf2, 0xa7, 0xed, 0xa0, 0xe8, 0x88, 0xe6, 0xb6, 0xe4, + 0xbd, 0xe8, 0xd6, 0xeb, 0x3b, 0xeb, 0xe8, 0xed, 0xd0, 0xeb, 0xb1, 0xe6, 0x3a, 0xe7, 0xe6, 0xe7, + 0xb0, 0xeb, 0x8f, 0xe9, 0x3b, 0xed, 0xad, 0xf2, 0xa5, 0xf3, 0xa0, 0xfd, 0x0a, 0x03, 0x41, 0x05, + 0xda, 0x06, 0xf2, 0x09, 0xac, 0x14, 0xcc, 0x19, 0x80, 0x20, 0xe1, 0x26, 0xf2, 0x28, 0xfe, 0x29, + 0xe8, 0x25, 0xa2, 0x21, 0xd2, 0x18, 0x64, 0x12, 0xa7, 0x0f, 0xa0, 0x0b, 0xc7, 0x08, 0x7a, 0x04, + 0x58, 0x04, 0x01, 0x06, 0x85, 0x04, 0xdd, 0x03, 0x79, 0xff, 0xb4, 0xf7, 0xaf, 0xf4, 0x65, 0xef, + 0x23, 0xef, 0xa8, 0xeb, 0x7a, 0xe8, 0x06, 0xec, 0x7e, 0xe8, 0xef, 0xeb, 0xd8, 0xed, 0xc9, 0xed, + 0x05, 0xf0, 0x03, 0xf1, 0x7a, 0xf9, 0x50, 0xff, 0x97, 0x04, 0xae, 0x07, 0x59, 0x04, 0x7e, 0x04, + 0x74, 0x03, 0x6d, 0x01, 0xe6, 0xfc, 0x44, 0xf7, 0x85, 0xf2, 0xd0, 0xef, 0x68, 0xf0, 0xc9, 0xf0, + 0x10, 0xf1, 0xf9, 0xf4, 0x1c, 0xf7, 0x5d, 0xfb, 0x57, 0xfc, 0x2c, 0xf9, 0xf8, 0xf9, 0x15, 0xf8, + 0xcb, 0xfa, 0x6f, 0xfb, 0x40, 0xfa, 0x8d, 0x02, 0xee, 0x04, 0x98, 0x0a, 0xa2, 0x11, 0xef, 0x14, + 0xb0, 0x16, 0x99, 0x15, 0x34, 0x19, 0x93, 0x1c, 0xf9, 0x1f, 0xc9, 0x26, 0x83, 0x27, 0xfb, 0x27, + 0xba, 0x25, 0x21, 0x22, 0x6c, 0x1e, 0x96, 0x16, 0xbe, 0x0f, 0x49, 0x0a, 0xe6, 0x05, 0xb0, 0x05, + 0xb4, 0x01, 0xf5, 0x02, 0x24, 0x03, 0x89, 0x04, 0x11, 0x07, 0x79, 0x00, 0x7a, 0xfb, 0xe4, 0xf7, + 0xb0, 0xf7, 0xe4, 0xf9, 0x5b, 0xf5, 0xf2, 0xf9, 0xad, 0xfc, 0x52, 0xff, 0x49, 0x05, 0x8f, 0x05, + 0xc4, 0x04, 0x19, 0x01, 0x6b, 0x02, 0x04, 0x09, 0xa9, 0x0a, 0xbf, 0x0f, 0xa7, 0x10, 0x25, 0x12, + 0xe1, 0x10, 0xc7, 0x0d, 0xcd, 0x0a, 0x9d, 0x03, 0x8d, 0xfc, 0xf0, 0xf7, 0x8f, 0xf4, 0x22, 0xf4, + 0x3a, 0xf3, 0xb8, 0xf3, 0xa5, 0xf3, 0x08, 0xf4, 0x6b, 0xf7, 0x29, 0xf6, 0xca, 0xef, 0x80, 0xec, + 0x06, 0xea, 0x51, 0xef, 0x73, 0xed, 0xd7, 0xef, 0x1d, 0xf3, 0xd5, 0xf1, 0xb5, 0xf7, 0x2d, 0xfd, + 0x91, 0xff, 0xa4, 0xfe, 0xb4, 0xfc, 0x0c, 0x05, 0xe8, 0x09, 0xbb, 0x10, 0xbe, 0x14, 0x73, 0x16, + 0x76, 0x1a, 0xf5, 0x17, 0x23, 0x13, 0xd9, 0x0c, 0x1c, 0x03, 0x3c, 0xfc, 0x6a, 0xf6, 0x47, 0xf3, + 0xfb, 0xf1, 0xe1, 0xf0, 0x84, 0xf2, 0xa4, 0xf1, 0xc6, 0xf1, 0x8e, 0xf1, 0xb0, 0xec, 0x03, 0xe8, + 0xb7, 0xe1, 0x51, 0xe3, 0x81, 0xde, 0xfb, 0xde, 0x7f, 0xe5, 0xdc, 0xe8, 0xc4, 0xee, 0x05, 0xf3, + 0x9e, 0xf8, 0x9a, 0xfa, 0xa1, 0xf9, 0x85, 0xff, 0xa2, 0x05, 0x4b, 0x0f, 0x23, 0x16, 0x46, 0x1a, + 0x49, 0x21, 0xbe, 0x22, 0x21, 0x20, 0x27, 0x1d, 0x5e, 0x13, 0x76, 0x0b, 0x8c, 0x04, 0x56, 0x01, + 0x14, 0xff, 0x5b, 0xfa, 0xf8, 0xfb, 0x7e, 0xfd, 0x36, 0xfd, 0x05, 0xfb, 0x77, 0xf1, 0xac, 0xeb, + 0xe3, 0xe4, 0x9a, 0xe7, 0x59, 0xe7, 0xe9, 0xe2, 0x2c, 0xe7, 0x10, 0xea, 0x89, 0xee, 0x81, 0xf4, + 0x88, 0xf8, 0x9e, 0xfd, 0xff, 0xfc, 0xeb, 0xff, 0xbe, 0x07, 0x8e, 0x0e, 0xb7, 0x18, 0x6a, 0x1d, + 0x96, 0x21, 0x8d, 0x24, 0x40, 0x21, 0xf5, 0x1f, 0x3e, 0x1a, 0xe3, 0x10, 0x93, 0x09, 0xa2, 0x05, + 0x20, 0x05, 0x7b, 0x01, 0x84, 0xfe, 0x2f, 0xfb, 0xd3, 0xf7, 0x06, 0xf8, 0xca, 0xf1, 0x02, 0xed, + 0xf9, 0xe3, 0xde, 0xe1, 0xa8, 0xe6, 0x83, 0xe3, 0x17, 0xe6, 0x59, 0xe8, 0xf1, 0xe8, 0x28, 0xed, + 0x40, 0xf0, 0x67, 0xf6, 0x1f, 0xf8, 0xb3, 0xfb, 0xc6, 0x03, 0x79, 0x09, 0xf6, 0x12, 0x1c, 0x1a, + 0x0d, 0x21, 0xee, 0x27, 0x5d, 0x27, 0x06, 0x26, 0xfd, 0x22, 0x06, 0x1d, 0x80, 0x16, 0xb6, 0x0e, + 0x2d, 0x0c, 0x2e, 0x0a, 0xe3, 0x08, 0xe1, 0x09, 0x4c, 0x05, 0x56, 0x04, 0x7f, 0x00, 0xb7, 0xfb, + 0xc2, 0xf5, 0x63, 0xef, 0xb3, 0xf3, 0x5c, 0xf1, 0xec, 0xf2, 0x8f, 0xf4, 0xa3, 0xf2, 0x14, 0xf7, + 0x2a, 0xf9, 0xd4, 0xfc, 0x60, 0xfd, 0x74, 0xfa, 0xaf, 0x00, 0x48, 0x06, 0x3c, 0x0d, 0x21, 0x13, + 0x99, 0x16, 0xec, 0x1b, 0x3f, 0x1c, 0x64, 0x19, 0xc2, 0x14, 0xea, 0x0b, 0x38, 0x03, 0x7d, 0xfc, + 0x33, 0xfb, 0x77, 0xf8, 0x3b, 0xf6, 0x96, 0xf9, 0xf3, 0xf9, 0x4e, 0xfa, 0xe1, 0xf8, 0x3b, 0xf4, + 0x82, 0xef, 0x3a, 0xe7, 0x4c, 0xea, 0x28, 0xeb, 0x23, 0xeb, 0xb6, 0xef, 0xae, 0xef, 0xc8, 0xf0, + 0x98, 0xf3, 0x29, 0xfa, 0x5c, 0x00, 0xde, 0xfd, 0x48, 0x01, 0xb5, 0x06, 0x69, 0x0c, 0xd8, 0x14, + 0x48, 0x17, 0xcd, 0x19, 0x89, 0x1a, 0x0c, 0x18, 0x59, 0x17, 0xf7, 0x0e, 0xec, 0x07, 0xb9, 0x00, + 0x4f, 0xfc, 0x32, 0xfb, 0x41, 0xf8, 0x4e, 0xf9, 0x89, 0xf9, 0x30, 0xfa, 0x42, 0xfc, 0x97, 0xf6, + 0x39, 0xf4, 0x63, 0xec, 0x32, 0xeb, 0x88, 0xee, 0x62, 0xea, 0xb8, 0xed, 0x47, 0xed, 0x7a, 0xeb, + 0xeb, 0xec, 0x85, 0xed, 0x79, 0xf2, 0x52, 0xf0, 0x94, 0xf1, 0x42, 0xf4, 0xd7, 0xf4, 0x52, 0xfa, + 0x9a, 0xfd, 0x23, 0x01, 0x69, 0x04, 0x33, 0x03, 0x61, 0x05, 0x1e, 0x03, 0xcd, 0xff, 0x11, 0xfa, + 0xa5, 0xf4, 0x23, 0xf4, 0xc9, 0xf3, 0x81, 0xf5, 0x6c, 0xf8, 0x4f, 0xfa, 0x51, 0xff, 0xf5, 0xfe, + 0x70, 0xff, 0x4f, 0xf9, 0xa2, 0xf7, 0xb3, 0xfe, 0x93, 0xff, 0xb7, 0x02, 0x05, 0x05, 0x2e, 0x06, + 0xa3, 0x09, 0x8d, 0x09, 0x08, 0x0e, 0x27, 0x0c, 0x3c, 0x0a, 0xa0, 0x0d, 0x47, 0x0f, 0x7b, 0x14, + 0x02, 0x18, 0xbf, 0x1a, 0x6a, 0x1e, 0x7d, 0x1d, 0xff, 0x1c, 0xa4, 0x18, 0x10, 0x13, 0x66, 0x0b, + 0x43, 0x02, 0x2f, 0xfe, 0xfc, 0xf9, 0x4f, 0xf9, 0xd3, 0xfb, 0xcd, 0xf8, 0xc5, 0xfc, 0xb3, 0xfa, + 0xac, 0xf8, 0x85, 0xf2, 0xc6, 0xe9, 0x95, 0xed, 0xe4, 0xed, 0xd5, 0xef, 0x94, 0xf3, 0x2e, 0xf2, + 0xea, 0xf3, 0x85, 0xf4, 0x80, 0xfa, 0xe1, 0xfc, 0x33, 0xf9, 0x51, 0xfc, 0x9a, 0xff, 0xc4, 0x05, + 0x45, 0x0d, 0x1c, 0x10, 0xa8, 0x14, 0xc4, 0x14, 0xc0, 0x14, 0xa9, 0x13, 0x49, 0x0d, 0xea, 0x08, + 0xa3, 0x02, 0x95, 0xfc, 0xd2, 0xf8, 0x0d, 0xf7, 0x83, 0xfa, 0xfb, 0xfa, 0x45, 0xfe, 0x34, 0xff, + 0x3b, 0xfd, 0x7b, 0xfb, 0xf5, 0xf3, 0xea, 0xf2, 0xa8, 0xf2, 0xca, 0xf1, 0x92, 0xf7, 0xce, 0xf8, + 0x35, 0xfb, 0x45, 0xfc, 0xf0, 0xff, 0x2b, 0x06, 0x4c, 0x06, 0x69, 0x09, 0x2a, 0x0c, 0x7a, 0x11, + 0x10, 0x1a, 0xc3, 0x1e, 0x6c, 0x23, 0xc0, 0x24, 0x92, 0x24, 0x5b, 0x23, 0xa9, 0x1d, 0x79, 0x18, + 0x11, 0x10, 0x4d, 0x09, 0xc7, 0x04, 0xee, 0xfe, 0x06, 0xff, 0x4c, 0xfd, 0xcd, 0xfd, 0x2a, 0xff, + 0xd9, 0xfa, 0xcf, 0xf7, 0x69, 0xed, 0x84, 0xea, 0x85, 0xeb, 0xa0, 0xe8, 0x9e, 0xea, 0x7c, 0xeb, + 0x8a, 0xef, 0x3c, 0xf2, 0x03, 0xf3, 0x5e, 0xfa, 0xf7, 0xf9, 0xf9, 0xfa, 0x30, 0xfe, 0x0a, 0x03, + 0xee, 0x0c, 0x4f, 0x14, 0x71, 0x1a, 0x01, 0x1d, 0x41, 0x1c, 0x43, 0x1c, 0xfd, 0x18, 0x20, 0x14, + 0x52, 0x0c, 0x67, 0x02, 0x18, 0xfd, 0x53, 0xf8, 0x57, 0xf6, 0x45, 0xf3, 0x77, 0xef, 0xa2, 0xf0, + 0x20, 0xed, 0x0e, 0xeb, 0x4b, 0xe1, 0xe7, 0xd9, 0xf0, 0xda, 0xcb, 0xda, 0xd0, 0xdc, 0x3f, 0xdf, + 0xf2, 0xe1, 0xfb, 0xe5, 0x7a, 0xe8, 0x59, 0xf0, 0xc3, 0xf2, 0x6a, 0xf4, 0x14, 0xf9, 0xe7, 0xfc, + 0x39, 0x07, 0xf6, 0x10, 0x95, 0x18, 0xe8, 0x1f, 0xa0, 0x20, 0xe5, 0x22, 0xb3, 0x1f, 0x0a, 0x1b, + 0x1b, 0x18, 0x58, 0x10, 0x59, 0x08, 0x1e, 0x02, 0xe4, 0xff, 0xf4, 0xff, 0x02, 0xfc, 0x45, 0xfd, + 0xf0, 0xf9, 0xe9, 0xf9, 0x18, 0xf7, 0x4a, 0xee, 0x49, 0xee, 0x9c, 0xec, 0x01, 0xeb, 0xdc, 0xed, + 0xb1, 0xed, 0xdc, 0xf1, 0x07, 0xf3, 0x8d, 0xf9, 0x65, 0xfe, 0x5c, 0xfd, 0xb5, 0x00, 0xe1, 0x04, + 0xee, 0x0c, 0xf1, 0x17, 0x6f, 0x1d, 0x8f, 0x23, 0x0a, 0x27, 0x76, 0x29, 0x60, 0x26, 0x54, 0x21, + 0x00, 0x1d, 0x43, 0x16, 0x96, 0x0f, 0xbe, 0x0a, 0xd5, 0x04, 0xf4, 0x03, 0x49, 0x01, 0x4e, 0x01, + 0xef, 0xfd, 0x18, 0xfb, 0x73, 0xf8, 0xa8, 0xef, 0x3b, 0xec, 0xaf, 0xe9, 0x4c, 0xe6, 0xe8, 0xe5, + 0x65, 0xe3, 0x9b, 0xe6, 0xa2, 0xe4, 0xf5, 0xe6, 0x65, 0xed, 0x4c, 0xed, 0x50, 0xef, 0x8c, 0xef, + 0xce, 0xf3, 0x6f, 0xfd, 0x4e, 0x03, 0xc6, 0x0a, 0x58, 0x0c, 0x09, 0x0e, 0xff, 0x0d, 0x52, 0x0b, + 0x85, 0x08, 0xba, 0x02, 0x3f, 0xfc, 0x61, 0xfa, 0xde, 0xf6, 0x71, 0xfa, 0x81, 0xf9, 0xed, 0xfa, + 0x51, 0xfc, 0x6d, 0xfa, 0xce, 0xfb, 0x21, 0xf5, 0xfe, 0xf1, 0xbf, 0xf1, 0xc7, 0xed, 0x20, 0xef, + 0xb1, 0xef, 0x42, 0xf4, 0x48, 0xf7, 0x9c, 0xf8, 0x43, 0xff, 0xe8, 0x02, 0x95, 0x04, 0x05, 0x05, + 0x7a, 0x04, 0x00, 0x0b, 0x6f, 0x10, 0x6e, 0x18, 0x8a, 0x1e, 0x65, 0x1e, 0x9b, 0x1e, 0xe0, 0x1b, + 0x2e, 0x18, 0xa6, 0x14, 0x90, 0x0c, 0x05, 0x07, 0x0e, 0x02, 0x6a, 0x03, 0x37, 0x02, 0x16, 0x01, + 0xb3, 0x02, 0x21, 0x00, 0x35, 0x01, 0x1c, 0xfc, 0x5c, 0xf5, 0x35, 0xf5, 0xbc, 0xf1, 0x98, 0xf1, + 0x25, 0xef, 0x76, 0xee, 0x8d, 0xee, 0xbc, 0xec, 0x24, 0xf1, 0x8c, 0xf2, 0x5c, 0xf1, 0x46, 0xf1, + 0xcb, 0xef, 0xf9, 0xf4, 0xe2, 0xf8, 0xce, 0xfd, 0xa5, 0x04, 0x3a, 0x08, 0x7b, 0x0c, 0xd6, 0x0b, + 0xca, 0x0a, 0xf1, 0x08, 0x85, 0x02, 0x9c, 0xfe, 0x9a, 0xfa, 0x1d, 0xfc, 0x79, 0xfe, 0x75, 0xfe, + 0x41, 0x02, 0x5c, 0x01, 0xac, 0x05, 0x18, 0x08, 0xf5, 0x03, 0x77, 0x04, 0x4d, 0x03, 0x7d, 0x05, + 0x32, 0x04, 0x39, 0x03, 0xc1, 0x06, 0x95, 0x03, 0x83, 0x07, 0x59, 0x0c, 0x7c, 0x0b, 0x83, 0x0a, + 0xac, 0x07, 0xf2, 0x0a, 0x7a, 0x0f, 0x8d, 0x13, 0xa1, 0x19, 0x88, 0x1c, 0xa1, 0x1f, 0x0b, 0x1e, + 0xf7, 0x19, 0xde, 0x14, 0x8e, 0x0b, 0x95, 0x03, 0x32, 0xfc, 0xf9, 0xf7, 0x8e, 0xf8, 0xa8, 0xf7, + 0x5f, 0xfb, 0x68, 0xf9, 0x93, 0xf8, 0xfe, 0xf7, 0x6b, 0xf0, 0x43, 0xed, 0x4d, 0xea, 0x45, 0xe7, + 0xb3, 0xe6, 0xed, 0xe6, 0xb1, 0xeb, 0x4e, 0xea, 0x6c, 0xec, 0x06, 0xf2, 0x6b, 0xf5, 0x06, 0xf9, + 0xca, 0xf8, 0xeb, 0xf9, 0x8e, 0xfe, 0xdf, 0x02, 0x7a, 0x0b, 0x14, 0x10, 0xd8, 0x14, 0x0c, 0x17, + 0x39, 0x14, 0x06, 0x11, 0xaa, 0x0a, 0x71, 0x04, 0xaa, 0xff, 0x61, 0xfc, 0x98, 0xfe, 0xe7, 0xfd, + 0xb1, 0x01, 0xe0, 0x01, 0xf3, 0xff, 0xa0, 0x00, 0x5f, 0xfa, 0x61, 0xf6, 0x96, 0xf4, 0x01, 0xf2, + 0x7d, 0xf2, 0xdd, 0xf0, 0xb3, 0xf5, 0xec, 0xf6, 0xc7, 0xf6, 0x7e, 0xfb, 0xe6, 0xfe, 0x1a, 0x02, + 0x94, 0x03, 0x40, 0x03, 0x11, 0x08, 0xcd, 0x0b, 0x59, 0x11, 0x26, 0x16, 0x5d, 0x18, 0xcf, 0x18, + 0xfb, 0x16, 0x79, 0x15, 0xd4, 0x10, 0x6f, 0x07, 0xda, 0xff, 0x0f, 0xf8, 0x19, 0xf7, 0xf7, 0xf4, + 0x8e, 0xf4, 0xb8, 0xf2, 0xe7, 0xee, 0xcb, 0xef, 0x69, 0xec, 0x71, 0xe6, 0x8f, 0xe3, 0x1a, 0xe1, + 0x33, 0xe3, 0x9d, 0xe1, 0xd6, 0xe5, 0x9b, 0xe9, 0xf7, 0xe8, 0x3f, 0xed, 0xf2, 0xf1, 0xbb, 0xf7, + 0x49, 0xfa, 0xf2, 0xfa, 0x91, 0x01, 0x59, 0x05, 0x6c, 0x0d, 0x78, 0x16, 0x3e, 0x1d, 0x99, 0x21, + 0x4d, 0x22, 0xe5, 0x20, 0x51, 0x1d, 0x51, 0x14, 0x2e, 0x0c, 0xbc, 0x00, 0x98, 0xfd, 0x6a, 0xfb, + 0xe0, 0xfa, 0x08, 0xfb, 0x0d, 0xf6, 0x03, 0xf6, 0x1c, 0xf4, 0x95, 0xec, 0x6a, 0xe9, 0x99, 0xe5, + 0x82, 0xe6, 0x2d, 0xe7, 0x1d, 0xea, 0x1a, 0xef, 0x87, 0xee, 0xa3, 0xf0, 0xfe, 0xf4, 0x18, 0xf8, + 0x07, 0xfc, 0x83, 0xfc, 0x69, 0x02, 0x30, 0x09, 0x39, 0x10, 0x50, 0x19, 0x5e, 0x1f, 0x6f, 0x23, + 0x83, 0x26, 0x61, 0x23, 0x0e, 0x1f, 0x89, 0x18, 0x0a, 0x13, 0xa4, 0x09, 0xc1, 0x03, 0x3f, 0x01, + 0x77, 0xff, 0x9b, 0x01, 0xb7, 0xff, 0x5c, 0xfe, 0xf4, 0xfe, 0xdc, 0xf9, 0x18, 0xf6, 0x48, 0xf2, + 0x1f, 0xf3, 0x2a, 0xf2, 0xbf, 0xf1, 0x38, 0xf6, 0xad, 0xf4, 0x70, 0xf4, 0x46, 0xf9, 0x70, 0xfd, + 0x2a, 0x03, 0xf3, 0x04, 0x85, 0x08, 0x5d, 0x0e, 0x11, 0x14, 0x91, 0x1a, 0xe4, 0x1e, 0x7c, 0x22, + 0x31, 0x24, 0xb4, 0x23, 0xcc, 0x23, 0xe6, 0x1d, 0x58, 0x19, 0x2f, 0x12, 0x25, 0x0b, 0xfe, 0x08, + 0xd8, 0x05, 0x5f, 0x07, 0x4e, 0x05, 0x2e, 0x02, 0xaa, 0x03, 0x16, 0xff, 0x13, 0xfa, 0x8c, 0xf3, + 0x34, 0xef, 0x92, 0xec, 0x1d, 0xe7, 0xe8, 0xea, 0x59, 0xec, 0x14, 0xea, 0x9e, 0xec, 0xef, 0xed, + 0xbd, 0xf2, 0xe0, 0xf2, 0x77, 0xf3, 0xa3, 0xf5, 0x0e, 0xf8, 0x6e, 0xfe, 0x8f, 0x04, 0x19, 0x08, + 0xbd, 0x0a, 0x7c, 0x0a, 0x53, 0x0b, 0x73, 0x09, 0xf8, 0x05, 0xd5, 0x00, 0x48, 0xfa, 0xbf, 0xf8, + 0xea, 0xf6, 0x2c, 0xfb, 0x02, 0xfd, 0xf7, 0xfb, 0x02, 0x00, 0xd1, 0xfc, 0x98, 0xf7, 0xd0, 0xf3, + 0x82, 0xf0, 0x4d, 0xf1, 0x29, 0xf0, 0xa2, 0xf3, 0xd0, 0xf6, 0x6b, 0xf6, 0x53, 0xf8, 0x5c, 0xf9, + 0xc4, 0xfc, 0x3a, 0xfd, 0x1d, 0xfc, 0x05, 0xff, 0x33, 0x00, 0x63, 0x06, 0x0e, 0x0e, 0xfc, 0x12, + 0xcd, 0x16, 0xbb, 0x16, 0xe7, 0x15, 0x6e, 0x13, 0x0d, 0x11, 0x82, 0x0d, 0xc7, 0x04, 0xd5, 0x01, + 0x81, 0xfe, 0x92, 0xfd, 0x91, 0xfe, 0xc7, 0xfb, 0xa4, 0xfe, 0xf6, 0xfe, 0x18, 0xfc, 0x7e, 0xf8, + 0x4b, 0xf3, 0xa0, 0xf2, 0x2e, 0xee, 0xed, 0xec, 0xd4, 0xed, 0x80, 0xe9, 0xee, 0xe7, 0x67, 0xe8, + 0xb4, 0xe9, 0x0e, 0xec, 0xe3, 0xe8, 0xb1, 0xea, 0x8a, 0xed, 0xec, 0xf1, 0xb6, 0xf8, 0xce, 0xfe, + 0x52, 0x04, 0x38, 0x06, 0x5b, 0x08, 0x42, 0x0a, 0xfc, 0x07, 0xcc, 0x07, 0x21, 0x00, 0x93, 0xfb, + 0x21, 0xfa, 0x4b, 0xfa, 0x4f, 0xff, 0xee, 0x00, 0x52, 0x04, 0x24, 0x09, 0x02, 0x0a, 0xa5, 0x09, + 0xff, 0x04, 0x48, 0x04, 0x44, 0x00, 0x81, 0xfd, 0xe9, 0x01, 0xf6, 0x01, 0x59, 0x01, 0x56, 0x02, + 0xc6, 0x04, 0x28, 0x08, 0x0a, 0x05, 0x18, 0x05, 0xf9, 0x04, 0x95, 0x08, 0xa8, 0x0f, 0x2c, 0x16, + 0x9f, 0x1b, 0x18, 0x1d, 0x69, 0x1b, 0xce, 0x18, 0x8e, 0x12, 0xc2, 0x0f, 0xa5, 0x07, 0xfc, 0x01, + 0xaa, 0xfe, 0x24, 0xfb, 0x02, 0xfe, 0x8f, 0xfd, 0xe6, 0xfd, 0x3d, 0x00, 0x71, 0xfb, 0xfe, 0xf7, + 0xae, 0xf1, 0x09, 0xef, 0x71, 0xec, 0x3c, 0xe9, 0x7b, 0xed, 0x55, 0xf0, 0x3f, 0xf1, 0x43, 0xf4, + 0x61, 0xf7, 0x3a, 0xfd, 0x49, 0xfd, 0x16, 0xfe, 0x62, 0xff, 0x25, 0x02, 0x42, 0x0a, 0x90, 0x11, + 0x00, 0x16, 0x7b, 0x19, 0x37, 0x18, 0xd6, 0x17, 0xea, 0x14, 0x2e, 0x13, 0x1a, 0x0e, 0xc0, 0x07, + 0xeb, 0x04, 0x41, 0x02, 0x0a, 0x02, 0x8f, 0x01, 0x7b, 0xff, 0xdb, 0x01, 0xfd, 0xff, 0x81, 0xfd, + 0xec, 0xf7, 0x9b, 0xf5, 0xcd, 0xf3, 0xee, 0xef, 0x0b, 0xf1, 0x24, 0xf3, 0xc5, 0xf2, 0xd4, 0xf5, + 0x5b, 0xf9, 0xcb, 0xff, 0x98, 0x02, 0x90, 0x02, 0xb4, 0x02, 0x4a, 0x03, 0x59, 0x07, 0xc1, 0x0c, + 0x77, 0x12, 0xba, 0x17, 0xf9, 0x15, 0x8d, 0x16, 0x0a, 0x13, 0x5b, 0x10, 0xb3, 0x0b, 0x4a, 0x02, + 0x81, 0xfc, 0x54, 0xf6, 0x46, 0xf4, 0x73, 0xf4, 0x9d, 0xf0, 0x79, 0xf1, 0x28, 0xf1, 0xa0, 0xf0, + 0x2c, 0xed, 0x89, 0xe9, 0xa9, 0xe9, 0x19, 0xe5, 0x1a, 0xe5, 0xeb, 0xe9, 0x4b, 0xec, 0xfc, 0xf0, + 0x1b, 0xf3, 0x59, 0xf9, 0x74, 0xfc, 0x7e, 0xfb, 0x5c, 0xfe, 0x31, 0x01, 0x2a, 0x06, 0x07, 0x0f, + 0x22, 0x16, 0x8e, 0x1e, 0xb7, 0x20, 0xc3, 0x20, 0x5c, 0x1c, 0xf0, 0x16, 0xb3, 0x11, 0xaf, 0x07, + 0xd7, 0xff, 0x55, 0xf9, 0x15, 0xf6, 0x41, 0xf7, 0x50, 0xf3, 0x94, 0xf2, 0xda, 0xf0, 0x4d, 0xec, + 0x27, 0xe9, 0x30, 0xe5, 0xcc, 0xe4, 0x2f, 0xe3, 0x85, 0xe2, 0x6d, 0xe5, 0x8d, 0xe5, 0xf5, 0xe6, + 0xc3, 0xe7, 0xa3, 0xed, 0x7a, 0xf4, 0x2f, 0xf6, 0x9d, 0xf8, 0xc8, 0xfa, 0xe3, 0xff, 0x7d, 0x09, + 0x38, 0x12, 0x6f, 0x1a, 0xd6, 0x1d, 0x0f, 0x1f, 0xaa, 0x1c, 0x7b, 0x18, 0x10, 0x17, 0x2a, 0x11, + 0xeb, 0x0a, 0x71, 0x06, 0xe1, 0x02, 0x49, 0x03, 0xd7, 0x00, 0x96, 0xff, 0x87, 0xff, 0xd9, 0xfe, + 0xef, 0xfe, 0xad, 0xfa, 0xe8, 0xf9, 0x33, 0xf7, 0xd7, 0xf0, 0x14, 0xf2, 0x11, 0xf3, 0x6a, 0xf4, + 0x69, 0xf6, 0x47, 0xf9, 0x82, 0x00, 0xfa, 0x03, 0x1f, 0x06, 0x1e, 0x08, 0x60, 0x09, 0xfa, 0x0e, + 0x95, 0x13, 0xbf, 0x19, 0x23, 0x1d, 0xde, 0x1c, 0x87, 0x1f, 0xdf, 0x1c, 0x82, 0x1c, 0xfa, 0x16, + 0x98, 0x0e, 0x47, 0x09, 0xc2, 0x03, 0x86, 0x03, 0xad, 0x03, 0xaa, 0x01, 0xb7, 0x00, 0x9d, 0xfd, + 0x06, 0xfb, 0x1d, 0xf4, 0xe1, 0xef, 0xdd, 0xee, 0xf5, 0xe8, 0xf2, 0xe6, 0xe8, 0xe6, 0x6c, 0xe7, + 0xe3, 0xe8, 0x29, 0xea, 0x6f, 0xf0, 0x03, 0xf2, 0x1f, 0xf3, 0x41, 0xf4, 0x86, 0xf3, 0x30, 0xf7, + 0x57, 0xfd, 0xbb, 0x04, 0x12, 0x0d, 0x53, 0x10, 0xe2, 0x13, 0xac, 0x12, 0x8d, 0x12, 0x1c, 0x0f, + 0xf8, 0x09, 0xd5, 0x07, 0x2e, 0x04, 0x8d, 0x06, 0xb8, 0x08, 0x8a, 0x06, 0x20, 0x08, 0x0c, 0x07, + 0x89, 0x06, 0x85, 0x03, 0xa3, 0xff, 0xf9, 0xfe, 0x96, 0xfb, 0x20, 0xfb, 0x21, 0xfc, 0xa9, 0xfb, + 0xdd, 0xfd, 0x32, 0xfd, 0xdb, 0x01, 0x9b, 0x02, 0xf4, 0x01, 0x85, 0x02, 0x58, 0x01, 0x26, 0x04, + 0x66, 0x09, 0x08, 0x0e, 0x6e, 0x14, 0x15, 0x16, 0x60, 0x18, 0xde, 0x16, 0xcd, 0x15, 0x99, 0x14, + 0x98, 0x0d, 0xc1, 0x06, 0x94, 0xff, 0x5d, 0xfa, 0x5a, 0xfb, 0x54, 0xfa, 0xd9, 0xfa, 0x77, 0xf9, + 0xd7, 0xf8, 0x73, 0xf6, 0x35, 0xf2, 0x92, 0xf1, 0x97, 0xed, 0x82, 0xe8, 0xc6, 0xe7, 0xd4, 0xe4, + 0x19, 0xe4, 0x86, 0xe1, 0x7b, 0xe3, 0x08, 0xe8, 0xac, 0xe9, 0xea, 0xea, 0xec, 0xeb, 0x66, 0xed, + 0x19, 0xf1, 0x46, 0xf6, 0x11, 0x00, 0xc0, 0x04, 0x1f, 0x0b, 0x1d, 0x0e, 0x77, 0x0d, 0x68, 0x0d, + 0x6f, 0x08, 0xad, 0x04, 0xd8, 0x00, 0xf5, 0xfd, 0xe4, 0x00, 0x40, 0x02, 0x85, 0x06, 0x35, 0x08, + 0x9a, 0x0a, 0x45, 0x0c, 0xe4, 0x08, 0xcc, 0x08, 0x17, 0x07, 0x5b, 0x01, 0x2a, 0x01, 0x34, 0x00, + 0x1e, 0x04, 0xf1, 0x02, 0xae, 0x02, 0x42, 0x06, 0x6a, 0x05, 0x7f, 0x05, 0x50, 0x05, 0xb1, 0x04, + 0x2e, 0x09, 0xa4, 0x0b, 0xc2, 0x11, 0x1d, 0x14, 0xb1, 0x14, 0x3c, 0x14, 0xe8, 0x10, 0xf3, 0x0e, + 0x71, 0x08, 0x29, 0x01, 0x98, 0xfa, 0xd2, 0xf3, 0x3f, 0xf4, 0x48, 0xf3, 0xec, 0xf3, 0xd4, 0xf4, + 0xb1, 0xf3, 0x4f, 0xf2, 0x20, 0xed, 0x5f, 0xe9, 0xed, 0xe8, 0x22, 0xe6, 0x06, 0xe7, 0x99, 0xe8, + 0xf8, 0xeb, 0x1c, 0xed, 0xde, 0xee, 0xe5, 0xf4, 0x4b, 0xf8, 0xdd, 0xfb, 0x27, 0xfe, 0x1f, 0xfd, + 0x19, 0x00, 0x70, 0x03, 0x77, 0x0a, 0xe4, 0x0f, 0x98, 0x14, 0x8d, 0x16, 0xd8, 0x14, 0xee, 0x14, + 0x8d, 0x13, 0x90, 0x0e, 0x74, 0x09, 0xa9, 0x02, 0xac, 0x01, 0xf9, 0x00, 0x94, 0x00, 0xb4, 0x00, + 0x46, 0xff, 0xc8, 0x01, 0x11, 0xff, 0x4b, 0xfb, 0x99, 0xfb, 0xde, 0xf6, 0x49, 0xf5, 0x0d, 0xf5, + 0x2c, 0xf7, 0xc9, 0xfa, 0x20, 0xfb, 0x25, 0xff, 0x5b, 0x02, 0x3b, 0x02, 0x8b, 0x03, 0x76, 0x03, + 0xb9, 0x06, 0x68, 0x08, 0xbe, 0x0b, 0x40, 0x11, 0x4f, 0x13, 0xbd, 0x16, 0x73, 0x15, 0xd2, 0x13, + 0x88, 0x11, 0xd2, 0x0a, 0x55, 0x05, 0x1a, 0xfc, 0x13, 0xf6, 0x02, 0xf5, 0xae, 0xf3, 0xbe, 0xf4, + 0x78, 0xf4, 0x58, 0xf6, 0x4b, 0xf5, 0x58, 0xf0, 0x24, 0xf0, 0x75, 0xed, 0x90, 0xeb, 0x53, 0xec, + 0x87, 0xee, 0x57, 0xf2, 0x01, 0xf2, 0x8f, 0xf4, 0xad, 0xf9, 0xbc, 0xfb, 0xbf, 0xff, 0xf8, 0x00, + 0x5f, 0x04, 0x45, 0x0a, 0x01, 0x10, 0xb3, 0x17, 0xff, 0x1c, 0x9e, 0x21, 0x96, 0x20, 0xb9, 0x1d, + 0x66, 0x19, 0x70, 0x12, 0xb1, 0x0d, 0x9a, 0x05, 0x17, 0xff, 0xdf, 0xfc, 0xb4, 0xf8, 0x27, 0xf8, + 0x70, 0xf6, 0x45, 0xf6, 0x09, 0xf5, 0x03, 0xf0, 0xa3, 0xee, 0xa9, 0xeb, 0xe9, 0xe7, 0xff, 0xe5, + 0x55, 0xe5, 0x74, 0xe9, 0xda, 0xe9, 0xf1, 0xeb, 0xa9, 0xf0, 0xb7, 0xf2, 0x00, 0xf7, 0x7f, 0xf9, + 0xc1, 0xfc, 0xdf, 0x01, 0x8f, 0x06, 0x48, 0x0f, 0x76, 0x13, 0xcf, 0x18, 0x2f, 0x1b, 0x94, 0x19, + 0xdd, 0x19, 0x6c, 0x18, 0x1a, 0x15, 0xec, 0x0e, 0xbe, 0x06, 0x61, 0x03, 0xf4, 0xff, 0x6d, 0xff, + 0x5e, 0xff, 0x00, 0x00, 0xa5, 0x01, 0x73, 0xfc, 0x44, 0xf9, 0xb6, 0xf7, 0xd3, 0xf2, 0x76, 0xf0, + 0x3f, 0xed, 0x51, 0xef, 0xbe, 0xf1, 0x4e, 0xf3, 0x81, 0xf7, 0xbf, 0xfa, 0x90, 0xfd, 0x05, 0x00, + 0x40, 0x01, 0xcb, 0x03, 0x93, 0x04, 0xdc, 0x0b, 0x24, 0x12, 0x4d, 0x18, 0x77, 0x1d, 0xea, 0x1c, + 0xb6, 0x1b, 0x64, 0x18, 0x8f, 0x14, 0x8a, 0x11, 0x2b, 0x0a, 0xd6, 0x06, 0xbe, 0x03, 0x95, 0x01, + 0x63, 0xff, 0x25, 0xfc, 0x06, 0xfd, 0x10, 0xf9, 0x34, 0xf3, 0x78, 0xf0, 0x8b, 0xea, 0xa4, 0xe7, + 0x2d, 0xe3, 0x03, 0xe5, 0xb1, 0xe6, 0xce, 0xe5, 0xb8, 0xe9, 0x60, 0xeb, 0x09, 0xec, 0x56, 0xef, + 0xe8, 0xee, 0xf4, 0xf2, 0xac, 0xf5, 0x2f, 0xfc, 0x8d, 0x03, 0xa7, 0x09, 0x39, 0x0f, 0x4d, 0x0f, + 0xfc, 0x10, 0x13, 0x11, 0x82, 0x0f, 0xe6, 0x0e, 0xa6, 0x07, 0x8a, 0x03, 0xea, 0x00, 0x05, 0x00, + 0xe4, 0x01, 0x9e, 0x01, 0x76, 0x02, 0xef, 0x01, 0xd0, 0xfd, 0x02, 0xfd, 0x1e, 0xf9, 0x5e, 0xf7, + 0xe1, 0xf4, 0x5b, 0xf5, 0xae, 0xf6, 0xd9, 0xf4, 0x37, 0xf7, 0x32, 0xfa, 0x17, 0xfb, 0x0e, 0xfe, + 0x0a, 0xfd, 0xff, 0xfd, 0x61, 0xfe, 0x77, 0x03, 0xa0, 0x0a, 0xca, 0x10, 0x45, 0x18, 0xf8, 0x19, + 0x96, 0x18, 0xa1, 0x16, 0xe9, 0x11, 0x9b, 0x0f, 0xc2, 0x08, 0x8e, 0x02, 0x2a, 0xfe, 0xbe, 0xfb, + 0x16, 0xfc, 0x82, 0xfb, 0x07, 0xfe, 0xa5, 0xff, 0x14, 0xfc, 0x10, 0xfd, 0x99, 0xf9, 0x9d, 0xf5, + 0xc5, 0xf0, 0x34, 0xec, 0x0e, 0xed, 0xc1, 0xec, 0xe9, 0xed, 0xb6, 0xf1, 0x10, 0xf2, 0xec, 0xf3, + 0x37, 0xf3, 0x38, 0xf5, 0x4d, 0xf7, 0xdb, 0xf9, 0x28, 0x02, 0x29, 0x07, 0x21, 0x0d, 0xfb, 0x10, + 0xd2, 0x10, 0xfc, 0x12, 0x21, 0x10, 0x12, 0x0e, 0x87, 0x0a, 0x06, 0x05, 0xad, 0x02, 0x6e, 0x01, + 0x72, 0x03, 0x6a, 0x05, 0xc2, 0x07, 0x8a, 0x0b, 0x41, 0x08, 0x4b, 0x07, 0x4a, 0x06, 0x91, 0x04, + 0x01, 0x03, 0xe3, 0xff, 0x8f, 0x01, 0xde, 0x01, 0xc6, 0x00, 0x10, 0x04, 0x0b, 0x04, 0x2c, 0x06, + 0xd4, 0x06, 0x2d, 0x06, 0x8d, 0x05, 0x49, 0x04, 0xfb, 0x07, 0xb3, 0x0c, 0x1c, 0x12, 0x10, 0x15, + 0xc9, 0x12, 0xda, 0x10, 0xe9, 0x0b, 0x83, 0x09, 0xcd, 0x05, 0x90, 0xfe, 0x74, 0xfa, 0x12, 0xf6, + 0x0d, 0xf5, 0xca, 0xf4, 0x63, 0xf4, 0xb8, 0xf5, 0x15, 0xf4, 0x98, 0xf2, 0x77, 0xf1, 0x0d, 0xf0, + 0xcb, 0xef, 0xb0, 0xec, 0x3b, 0xee, 0xde, 0xf0, 0x4c, 0xf2, 0xff, 0xf7, 0x62, 0xfa, 0xb5, 0xfc, + 0x98, 0xfd, 0xc4, 0xfc, 0x54, 0xfe, 0x46, 0xfd, 0x4c, 0x01, 0x95, 0x06, 0x3d, 0x0c, 0x48, 0x12, + 0xc6, 0x12, 0x16, 0x12, 0xec, 0x0f, 0xcc, 0x0d, 0xca, 0x0b, 0x9a, 0x04, 0x73, 0xfe, 0x50, 0xf9, + 0xf0, 0xf7, 0xf7, 0xf8, 0x34, 0xf8, 0x9b, 0xfa, 0xaf, 0xf9, 0x71, 0xf6, 0xb5, 0xf6, 0x82, 0xf4, + 0x16, 0xf4, 0x28, 0xf2, 0x6c, 0xf1, 0x18, 0xf4, 0x1a, 0xf3, 0xc2, 0xf4, 0xe1, 0xf7, 0x51, 0xfa, + 0x54, 0xfd, 0x46, 0xfd, 0x2f, 0xff, 0x15, 0xfe, 0xe8, 0xff, 0x25, 0x05, 0x10, 0x0a, 0x46, 0x10, + 0xd3, 0x12, 0x83, 0x12, 0x79, 0x11, 0xd2, 0x0c, 0x59, 0x0a, 0x0b, 0x05, 0x7f, 0xff, 0x6c, 0xfa, + 0x1a, 0xf8, 0xa6, 0xf8, 0x19, 0xf7, 0xcc, 0xf7, 0x1b, 0xf9, 0x36, 0xf7, 0x87, 0xf7, 0x98, 0xf6, + 0x30, 0xf7, 0x3c, 0xf4, 0x8e, 0xf1, 0x50, 0xf4, 0xd2, 0xf4, 0x71, 0xf6, 0xc1, 0xf9, 0xdd, 0xfa, + 0x47, 0xff, 0xe7, 0x00, 0xd9, 0x03, 0xa5, 0x05, 0xab, 0x08, 0x39, 0x0e, 0x87, 0x13, 0xed, 0x19, + 0x5d, 0x1c, 0x9f, 0x1b, 0x47, 0x1a, 0x36, 0x15, 0x88, 0x12, 0x4b, 0x0c, 0x58, 0x04, 0x27, 0xfd, + 0x02, 0xf7, 0x3f, 0xf5, 0x1e, 0xf4, 0x05, 0xf4, 0x45, 0xf4, 0xed, 0xef, 0x30, 0xed, 0xd2, 0xe9, + 0x1d, 0xe9, 0x06, 0xe8, 0xfb, 0xe4, 0xda, 0xe5, 0x80, 0xe6, 0x66, 0xe7, 0x69, 0xec, 0xb3, 0xee, + 0xb0, 0xf4, 0x61, 0xf8, 0x5c, 0xfc, 0xf0, 0xfe, 0xdc, 0x00, 0xcb, 0x06, 0x46, 0x0d, 0x8f, 0x15, + 0xcf, 0x1c, 0xcf, 0x1f, 0x61, 0x21, 0xc2, 0x1f, 0x31, 0x1f, 0x36, 0x1c, 0x36, 0x17, 0xc5, 0x10, + 0x76, 0x0b, 0xa1, 0x0a, 0x20, 0x09, 0x7c, 0x06, 0x89, 0x08, 0x92, 0x05, 0x50, 0x03, 0xb5, 0x00, + 0x11, 0xfe, 0xf5, 0xfc, 0xa9, 0xf8, 0xf6, 0xf6, 0x0b, 0xf8, 0xb0, 0xf7, 0x6f, 0xfb, 0x7c, 0xfc, + 0xf4, 0xff, 0xf5, 0x00, 0x7a, 0x02, 0x34, 0x05, 0x78, 0x04, 0x2b, 0x08, 0x44, 0x0c, 0x74, 0x10, + 0xd0, 0x16, 0xb4, 0x18, 0xd1, 0x1a, 0xcf, 0x19, 0x1d, 0x18, 0xb7, 0x16, 0xf0, 0x10, 0x8d, 0x09, + 0xe4, 0x01, 0x99, 0xfd, 0xb7, 0xfc, 0x6e, 0xf8, 0x1d, 0xf8, 0x5a, 0xf5, 0xfd, 0xf1, 0xfa, 0xee, + 0x68, 0xeb, 0xcf, 0xea, 0x10, 0xe7, 0xa1, 0xe3, 0x7e, 0xe5, 0x5c, 0xe3, 0x72, 0xe5, 0x02, 0xe7, + 0x39, 0xe9, 0x53, 0xed, 0xa4, 0xef, 0xa5, 0xf2, 0x08, 0xf4, 0xc8, 0xf6, 0xdc, 0xfb, 0xa2, 0x01, + 0x79, 0x09, 0xb3, 0x0e, 0xc0, 0x13, 0x62, 0x14, 0xdf, 0x12, 0xd2, 0x12, 0x76, 0x0f, 0xff, 0x0a, + 0x8d, 0x05, 0xc0, 0x01, 0x55, 0x02, 0x21, 0x02, 0x4a, 0x04, 0x33, 0x04, 0xdc, 0x02, 0x01, 0x01, + 0x95, 0xfd, 0xba, 0xfc, 0x41, 0xf9, 0x7f, 0xf5, 0xb1, 0xf5, 0x32, 0xf4, 0x7f, 0xf6, 0x24, 0xf8, + 0xb5, 0xf8, 0xec, 0xfa, 0x84, 0xfa, 0x0d, 0xfc, 0x5f, 0xfb, 0x8a, 0xfc, 0x6d, 0x01, 0x9d, 0x04, + 0xa9, 0x0a, 0x34, 0x0d, 0x53, 0x0f, 0x7e, 0x0f, 0x13, 0x0d, 0x2a, 0x0c, 0xce, 0x08, 0x62, 0x03, + 0x36, 0xfc, 0x69, 0xf6, 0xc5, 0xf6, 0x87, 0xf5, 0x5c, 0xf7, 0x69, 0xfa, 0xba, 0xf8, 0xbd, 0xf7, + 0xeb, 0xf4, 0x79, 0xf3, 0x44, 0xf2, 0xe7, 0xec, 0x67, 0xec, 0x5f, 0xeb, 0x6f, 0xeb, 0xd5, 0xed, + 0x2a, 0xee, 0x71, 0xf1, 0x3b, 0xf2, 0xb8, 0xf5, 0x4e, 0xf8, 0x83, 0xf7, 0xb7, 0xfa, 0x2b, 0xfe, + 0xde, 0x04, 0x4b, 0x0b, 0xce, 0x0e, 0x7e, 0x12, 0x9a, 0x12, 0xa8, 0x12, 0x2a, 0x12, 0xa7, 0x0f, + 0x90, 0x0b, 0x2c, 0x07, 0x3b, 0x07, 0xef, 0x07, 0x1d, 0x08, 0x63, 0x0b, 0xe8, 0x0b, 0xbe, 0x0c, + 0x76, 0x0b, 0x69, 0x09, 0x7e, 0x09, 0xa7, 0x04, 0xd4, 0x02, 0x42, 0x02, 0xac, 0x01, 0x19, 0x04, + 0xc8, 0x03, 0xde, 0x04, 0xe2, 0x03, 0x1e, 0x03, 0x71, 0x02, 0x48, 0x01, 0xf5, 0x01, 0x03, 0x03, + 0xf0, 0x06, 0xdd, 0x0a, 0x25, 0x0c, 0xca, 0x0d, 0xe1, 0x0a, 0x9d, 0x09, 0x6d, 0x08, 0x3b, 0x04, + 0xe9, 0xfe, 0xad, 0xf7, 0xfb, 0xf3, 0x68, 0xf3, 0xdc, 0xf2, 0x80, 0xf5, 0x42, 0xf5, 0x41, 0xf5, + 0x64, 0xf3, 0x26, 0xf1, 0x84, 0xf1, 0x51, 0xef, 0xf6, 0xef, 0xc2, 0xf2, 0x11, 0xf3, 0x91, 0xf6, + 0xa8, 0xf7, 0xf1, 0xfa, 0x23, 0xfd, 0xdf, 0xfd, 0x96, 0xff, 0x54, 0xff, 0x36, 0x01, 0xa8, 0x04, + 0xd4, 0x08, 0x44, 0x0f, 0x67, 0x13, 0x6d, 0x17, 0xb1, 0x16, 0xf7, 0x14, 0xcc, 0x13, 0x47, 0x11, + 0x8d, 0x0d, 0xd6, 0x06, 0xaa, 0x01, 0x2b, 0x00, 0x8c, 0xfc, 0x47, 0xfd, 0x63, 0xfd, 0x3f, 0xfc, + 0xb4, 0xfb, 0x7e, 0xf9, 0x1e, 0xf9, 0x09, 0xf7, 0x4d, 0xf2, 0x3d, 0xf2, 0xb2, 0xf0, 0x7d, 0xf2, + 0x09, 0xf4, 0xc4, 0xf6, 0x10, 0xf9, 0x22, 0xf9, 0xc1, 0xfb, 0x41, 0xfc, 0xa3, 0xfc, 0xca, 0xff, + 0x5a, 0x02, 0xcc, 0x07, 0xd7, 0x0a, 0xca, 0x0d, 0x7b, 0x0f, 0x8e, 0x0d, 0x15, 0x0c, 0x41, 0x0a, + 0xbf, 0x06, 0x31, 0x01, 0x11, 0xfa, 0x5a, 0xf7, 0xf6, 0xf3, 0x41, 0xf4, 0xb5, 0xf6, 0xb3, 0xf7, + 0x99, 0xf7, 0x5e, 0xf4, 0xde, 0xf2, 0x66, 0xf3, 0xcd, 0xee, 0x25, 0xef, 0x6e, 0xee, 0xa4, 0xf0, + 0x2b, 0xf4, 0x91, 0xf6, 0x9f, 0xfa, 0x98, 0xfd, 0x23, 0x01, 0xfd, 0x03, 0xa7, 0x05, 0x79, 0x08, + 0x22, 0x0b, 0xfd, 0x11, 0x79, 0x17, 0xff, 0x1a, 0x53, 0x1c, 0xf4, 0x18, 0xa0, 0x15, 0x3a, 0x12, + 0x05, 0x0d, 0xf9, 0x06, 0x2c, 0xff, 0x33, 0xfb, 0xbe, 0xf6, 0x7c, 0xf4, 0x5f, 0xf3, 0x7f, 0xf1, + 0x6a, 0xf0, 0x59, 0xed, 0xf6, 0xea, 0xa0, 0xea, 0x29, 0xe7, 0x6c, 0xe7, 0x32, 0xe6, 0x21, 0xe7, + 0x0b, 0xeb, 0x33, 0xee, 0x35, 0xf3, 0xdd, 0xf5, 0x88, 0xf9, 0x5f, 0xfd, 0xe6, 0xfe, 0x2b, 0x03, + 0x0d, 0x07, 0x0b, 0x0e, 0xd4, 0x14, 0xa2, 0x1a, 0x1c, 0x1f, 0xe1, 0x1e, 0x10, 0x1e, 0x53, 0x1e, + 0x2a, 0x1d, 0xf6, 0x19, 0xa2, 0x10, 0x66, 0x0b, 0x80, 0x07, 0xe2, 0x02, 0x10, 0x03, 0x60, 0x02, + 0xba, 0x01, 0xff, 0x00, 0x99, 0xfd, 0xde, 0xfd, 0xe8, 0xfa, 0xa6, 0xf8, 0xb9, 0xf7, 0x05, 0xf6, + 0x8c, 0xf7, 0xc7, 0xf7, 0x80, 0xfb, 0xf7, 0xfd, 0x39, 0xff, 0xad, 0x02, 0xb1, 0x01, 0x71, 0x02, + 0xae, 0x03, 0x4a, 0x06, 0xe1, 0x0b, 0x80, 0x10, 0xf9, 0x15, 0x04, 0x19, 0x84, 0x17, 0xc6, 0x15, + 0x81, 0x12, 0x05, 0x0f, 0x33, 0x08, 0x9c, 0x01, 0x24, 0xfd, 0xa4, 0xf8, 0x00, 0xf7, 0x08, 0xf6, + 0x44, 0xf5, 0x55, 0xf5, 0xd9, 0xf1, 0xc4, 0xf1, 0x70, 0xef, 0x52, 0xeb, 0xf4, 0xe9, 0xe5, 0xe6, + 0x94, 0xe8, 0x48, 0xea, 0xba, 0xec, 0xd1, 0xef, 0x35, 0xf2, 0xfd, 0xf4, 0x41, 0xf5, 0x73, 0xf6, + 0xc0, 0xf8, 0xbf, 0xfd, 0x53, 0x05, 0x52, 0x0a, 0x40, 0x10, 0x16, 0x14, 0x91, 0x13, 0x14, 0x13, + 0x45, 0x11, 0xe2, 0x0f, 0x5e, 0x0c, 0x92, 0x07, 0x71, 0x05, 0x36, 0x03, 0xd6, 0x04, 0x36, 0x06, + 0xc3, 0x06, 0xcd, 0x06, 0x56, 0x02, 0xcc, 0x00, 0x7c, 0xfe, 0x49, 0xfb, 0xab, 0xfa, 0x0e, 0xf6, + 0x75, 0xf5, 0xf5, 0xf5, 0xa0, 0xf6, 0xd4, 0xf8, 0xc7, 0xf8, 0x7e, 0xfb, 0x01, 0xfc, 0xe1, 0xfb, + 0x07, 0xfd, 0xa4, 0xfd, 0xf9, 0x01, 0xb7, 0x05, 0xde, 0x0a, 0xdc, 0x0e, 0xc8, 0x0e, 0xa2, 0x0d, + 0x56, 0x0b, 0xa2, 0x09, 0xb2, 0x06, 0x3a, 0x00, 0x70, 0xfe, 0xd7, 0xfa, 0xdb, 0xf9, 0x8a, 0xfb, + 0xd8, 0xfb, 0xc5, 0xfd, 0x76, 0xfc, 0x86, 0xfa, 0xfa, 0xf9, 0xe9, 0xf5, 0x3b, 0xf4, 0xce, 0xef, + 0xc1, 0xec, 0x3d, 0xec, 0x7b, 0xed, 0xd3, 0xf1, 0x84, 0xf2, 0x4e, 0xf4, 0x0e, 0xf6, 0xdb, 0xf4, + 0x32, 0xf6, 0x96, 0xf6, 0x09, 0xfb, 0x94, 0x00, 0x3a, 0x06, 0xd8, 0x0c, 0x8a, 0x10, 0x2a, 0x11, + 0x47, 0x11, 0x73, 0x11, 0x27, 0x10, 0x98, 0x0a, 0x57, 0x07, 0xa9, 0x04, 0x0b, 0x04, 0xbe, 0x06, + 0x96, 0x07, 0x56, 0x09, 0x90, 0x09, 0xb5, 0x06, 0x2b, 0x07, 0xca, 0x03, 0x52, 0x03, 0x05, 0x01, + 0xa2, 0xfe, 0xbd, 0xfe, 0xdd, 0xfd, 0x88, 0xfe, 0x02, 0xff, 0x6e, 0xff, 0xde, 0xff, 0x4b, 0xfe, + 0x12, 0xff, 0xf0, 0xfd, 0x1c, 0x00, 0xf0, 0x03, 0xfe, 0x07, 0xa6, 0x0d, 0x3a, 0x10, 0x2f, 0x0f, + 0x70, 0x0d, 0xc7, 0x0a, 0xf5, 0x08, 0x96, 0x03, 0xe0, 0xfe, 0xeb, 0xfa, 0x50, 0xf8, 0xaf, 0xf8, + 0xfd, 0xf8, 0x97, 0xf9, 0xf6, 0xf8, 0x36, 0xf6, 0x5b, 0xf7, 0x81, 0xf5, 0x4a, 0xf6, 0xbe, 0xf5, + 0xe1, 0xf2, 0x50, 0xf3, 0xba, 0xf3, 0x76, 0xf6, 0xce, 0xf8, 0xc0, 0xf9, 0xf9, 0xfc, 0xe0, 0xfc, + 0x38, 0xfe, 0x81, 0xff, 0xa1, 0x02, 0x93, 0x06, 0x33, 0x0a, 0x20, 0x0f, 0xd9, 0x12, 0x24, 0x13, + 0x84, 0x12, 0x88, 0x0f, 0x86, 0x0e, 0x7e, 0x08, 0x1f, 0x02, 0x00, 0xfe, 0x8b, 0xf8, 0x2c, 0xf7, + 0x90, 0xf7, 0x2d, 0xf8, 0x4d, 0xfa, 0xb5, 0xf6, 0x50, 0xf5, 0x2d, 0xf3, 0x8a, 0xf1, 0xd0, 0xf0, + 0xc9, 0xed, 0xc8, 0xed, 0xbb, 0xed, 0xb8, 0xef, 0xe6, 0xf3, 0xc8, 0xf5, 0xf6, 0xfa, 0x93, 0xfd, + 0x2c, 0xff, 0x18, 0x01, 0xcf, 0x01, 0x6c, 0x05, 0x3b, 0x09, 0x5f, 0x0d, 0xdd, 0x12, 0x9b, 0x14, + 0x28, 0x14, 0xf0, 0x11, 0x68, 0x10, 0x47, 0x0c, 0x46, 0x06, 0xe1, 0x01, 0xa5, 0xfd, 0x12, 0xfb, + 0x7a, 0xfb, 0x23, 0xfb, 0x90, 0xfd, 0xf8, 0xfa, 0xc2, 0xf8, 0xc9, 0xf7, 0xa6, 0xf5, 0x36, 0xf6, + 0x6f, 0xf4, 0xb5, 0xf3, 0xc2, 0xf5, 0xdc, 0xf8, 0x21, 0xfd, 0xdc, 0xff, 0x5a, 0x03, 0xc7, 0x04, + 0x4d, 0x06, 0xce, 0x08, 0xd2, 0x09, 0x14, 0x0d, 0xe0, 0x0f, 0x1b, 0x13, 0x2f, 0x17, 0x9a, 0x17, + 0xd3, 0x15, 0xb2, 0x11, 0xe4, 0x0e, 0x01, 0x0b, 0xeb, 0x03, 0x1b, 0xfd, 0xb7, 0xf5, 0x56, 0xf0, + 0x41, 0xee, 0x49, 0xec, 0x8f, 0xed, 0x4c, 0xeb, 0x8f, 0xe8, 0x95, 0xe7, 0x63, 0xe5, 0xf7, 0xe7, + 0x9c, 0xe7, 0x2a, 0xe7, 0xcd, 0xe8, 0xc8, 0xe9, 0xc0, 0xee, 0xb4, 0xf1, 0xce, 0xf6, 0x07, 0xfc, + 0xe6, 0xfe, 0xee, 0x02, 0x2b, 0x06, 0x8d, 0x0a, 0xa0, 0x0e, 0x9b, 0x12, 0x05, 0x1a, 0x5e, 0x1f, + 0xbb, 0x22, 0xda, 0x22, 0x6f, 0x21, 0x1c, 0x21, 0x3a, 0x19, 0x68, 0x12, 0x3b, 0x0c, 0x6d, 0x04, + 0xb8, 0x02, 0xbd, 0x01, 0x74, 0x02, 0x44, 0x04, 0xf2, 0x02, 0xbc, 0x02, 0xdb, 0xff, 0x53, 0xfe, + 0x23, 0xfb, 0x84, 0xf7, 0xb6, 0xf6, 0xe0, 0xf5, 0x03, 0xf9, 0x84, 0xfb, 0x72, 0xfd, 0x69, 0x00, + 0x7b, 0xff, 0x2b, 0x00, 0x86, 0x00, 0xd6, 0x00, 0x20, 0x05, 0x19, 0x08, 0x53, 0x0c, 0x0b, 0x11, + 0xb9, 0x13, 0x88, 0x13, 0x42, 0x11, 0x25, 0x10, 0xd5, 0x0b, 0xc9, 0x05, 0xc9, 0xff, 0xe2, 0xf8, + 0xba, 0xf5, 0xa3, 0xf4, 0x16, 0xf6, 0x00, 0xf9, 0xe3, 0xf6, 0xf1, 0xf5, 0x7a, 0xf2, 0xb7, 0xf0, + 0xbb, 0xef, 0x7c, 0xec, 0x27, 0xeb, 0x83, 0xea, 0xbf, 0xec, 0x26, 0xef, 0xac, 0xf0, 0x0a, 0xf4, + 0x47, 0xf4, 0x39, 0xf6, 0x50, 0xf7, 0xa0, 0xf8, 0xe7, 0xfb, 0x6d, 0xfe, 0x83, 0x02, 0xe0, 0x08, + 0x73, 0x0c, 0x9f, 0x0e, 0x9b, 0x0d, 0x83, 0x0d, 0xc2, 0x0b, 0x0c, 0x09, 0xd5, 0x06, 0xdc, 0x02, + 0x8e, 0x00, 0x39, 0xff, 0xc8, 0xff, 0x03, 0x03, 0x8e, 0x01, 0x34, 0x01, 0x83, 0xfd, 0x2b, 0xfa, + 0x97, 0xf9, 0xbd, 0xf5, 0xeb, 0xf3, 0xc5, 0xf1, 0x47, 0xf2, 0x36, 0xf6, 0x11, 0xf7, 0x06, 0xfa, + 0x45, 0xf9, 0xc8, 0xf8, 0xf8, 0xf7, 0x5b, 0xf7, 0xe8, 0xf8, 0xc4, 0xfa, 0x2b, 0xfd, 0x6d, 0x02, + 0x74, 0x06, 0x16, 0x0a, 0x10, 0x0a, 0x1b, 0x0c, 0x43, 0x0c, 0x0d, 0x08, 0x84, 0x05, 0xa8, 0x00, + 0xb8, 0xfc, 0x8d, 0xfc, 0x65, 0xfc, 0x79, 0x00, 0x36, 0x01, 0x2f, 0x02, 0xcd, 0x00, 0x8a, 0xfc, + 0x5b, 0xfb, 0xda, 0xf7, 0x75, 0xf5, 0x46, 0xf4, 0x9a, 0xf3, 0xc8, 0xf7, 0x80, 0xf8, 0xb4, 0xfa, + 0x95, 0xfb, 0xe0, 0xf9, 0x3b, 0xfa, 0xba, 0xf9, 0x8e, 0xfa, 0x99, 0xfe, 0x24, 0x02, 0x2e, 0x09, + 0x89, 0x10, 0xdc, 0x16, 0x86, 0x17, 0x01, 0x18, 0x8c, 0x18, 0x4a, 0x15, 0x3d, 0x12, 0x6b, 0x0e, + 0x23, 0x09, 0x25, 0x08, 0x52, 0x06, 0x58, 0x09, 0x3f, 0x0a, 0x07, 0x0a, 0x43, 0x0a, 0x9b, 0x07, + 0xdf, 0x06, 0x43, 0x05, 0x68, 0x02, 0x3f, 0x00, 0xd2, 0xfd, 0xd6, 0xfe, 0x47, 0xfe, 0x3f, 0xff, + 0xa0, 0xfe, 0x24, 0xfc, 0xb7, 0xfa, 0x66, 0xf8, 0xca, 0xf8, 0x57, 0xfb, 0x07, 0xfd, 0xa4, 0x01, + 0x4e, 0x05, 0x79, 0x09, 0xb5, 0x09, 0xa1, 0x08, 0xe6, 0x07, 0x39, 0x04, 0xd8, 0x00, 0x9e, 0xfd, + 0xfc, 0xf7, 0xc9, 0xf4, 0x73, 0xf1, 0xd2, 0xf3, 0x8d, 0xf5, 0x44, 0xf6, 0xbe, 0xf8, 0xe5, 0xf5, + 0x9c, 0xf5, 0x17, 0xf6, 0x3c, 0xf4, 0x15, 0xf5, 0x5a, 0xf3, 0xc1, 0xf6, 0xa9, 0xf9, 0x67, 0xfc, + 0x86, 0x00, 0xa7, 0x01, 0x34, 0x03, 0x7f, 0x02, 0xee, 0x01, 0x7b, 0x04, 0x19, 0x06, 0x70, 0x0a, + 0x00, 0x0f, 0xcf, 0x13, 0xb0, 0x15, 0xc2, 0x13, 0x46, 0x14, 0x22, 0x11, 0x60, 0x0b, 0xce, 0x07, + 0x48, 0x01, 0xa2, 0xfd, 0xe3, 0xf9, 0x29, 0xf9, 0x7a, 0xfb, 0x0d, 0xfa, 0xcd, 0xfa, 0x88, 0xf8, + 0x85, 0xf6, 0x81, 0xf6, 0x0c, 0xf4, 0x8c, 0xf3, 0xa7, 0xf1, 0xa8, 0xf3, 0x31, 0xf8, 0xeb, 0xfa, + 0x51, 0xff, 0xb5, 0x00, 0xaf, 0x00, 0x04, 0x01, 0x53, 0xff, 0x29, 0x00, 0x8b, 0x01, 0xd1, 0x03, + 0xd4, 0x07, 0x56, 0x0c, 0xcf, 0x0e, 0x28, 0x0d, 0x73, 0x0b, 0x58, 0x09, 0x15, 0x05, 0x36, 0x01, + 0xd7, 0xfa, 0x2c, 0xf6, 0xac, 0xf2, 0x78, 0xef, 0xdb, 0xf1, 0xa5, 0xf1, 0x9d, 0xf2, 0x0e, 0xf2, + 0xc5, 0xf0, 0xe3, 0xf1, 0x0f, 0xf2, 0xfc, 0xf3, 0x94, 0xf4, 0x15, 0xf6, 0x32, 0xfa, 0xfa, 0xfc, + 0xcc, 0x01, 0xc4, 0x04, 0x31, 0x06, 0x69, 0x07, 0x11, 0x06, 0x27, 0x07, 0x02, 0x09, 0xa5, 0x0a, + 0x41, 0x0e, 0x9a, 0x11, 0x14, 0x15, 0x60, 0x13, 0x33, 0x11, 0x54, 0x0e, 0x70, 0x08, 0xba, 0x02, + 0x45, 0xfb, 0xf3, 0xf4, 0x17, 0xf0, 0x2e, 0xeb, 0x14, 0xec, 0xba, 0xea, 0xbc, 0xeb, 0xdd, 0xed, + 0x35, 0xec, 0x37, 0xee, 0x66, 0xee, 0xff, 0xee, 0x52, 0xf0, 0x08, 0xf0, 0xb7, 0xf4, 0x24, 0xf7, + 0xf0, 0xfb, 0xe7, 0x00, 0x3c, 0x04, 0x02, 0x07, 0xfa, 0x06, 0xd1, 0x07, 0xfa, 0x0a, 0xbf, 0x0d, + 0xc2, 0x13, 0x2a, 0x19, 0x1d, 0x20, 0x1c, 0x22, 0x25, 0x21, 0x5d, 0x21, 0xcd, 0x1c, 0x07, 0x17, + 0x0a, 0x11, 0x0f, 0x09, 0x57, 0x04, 0x4a, 0xff, 0x35, 0x00, 0xcd, 0x01, 0x1a, 0x02, 0x67, 0x03, + 0xed, 0x00, 0xf7, 0xff, 0xcb, 0xfe, 0x6b, 0xfc, 0xa5, 0xfb, 0xef, 0xf7, 0xa7, 0xf9, 0xfd, 0xfa, + 0x48, 0xfc, 0x70, 0xff, 0xba, 0xff, 0x01, 0x00, 0xe5, 0xff, 0xcf, 0xfd, 0x3c, 0xff, 0x0b, 0x00, + 0x4a, 0x02, 0x93, 0x05, 0x17, 0x0b, 0xd8, 0x0e, 0xd1, 0x0e, 0x1d, 0x0e, 0xb1, 0x0b, 0xfe, 0x06, + 0x06, 0x03, 0x44, 0xfc, 0x64, 0xf9, 0x62, 0xf4, 0x25, 0xf3, 0xef, 0xf4, 0xcb, 0xf4, 0x89, 0xf6, + 0x9d, 0xf4, 0xa4, 0xf2, 0xa2, 0xf2, 0x92, 0xf0, 0x91, 0xf0, 0x76, 0xee, 0xd8, 0xee, 0xc2, 0xef, + 0xf1, 0xf1, 0x44, 0xf6, 0xf7, 0xf8, 0xd2, 0xfa, 0xd4, 0xfb, 0xe7, 0xf9, 0x37, 0xfb, 0xbf, 0xfb, + 0x85, 0xfe, 0xdf, 0x02, 0xb7, 0x08, 0xcf, 0x0d, 0x41, 0x0f, 0x24, 0x11, 0x8f, 0x12, 0xae, 0x10, + 0xa3, 0x0e, 0x43, 0x09, 0x1e, 0x07, 0x31, 0x03, 0xdf, 0x01, 0xd0, 0x03, 0x70, 0x02, 0x7c, 0x03, + 0xc0, 0x01, 0xc1, 0xfd, 0x55, 0xfc, 0x40, 0xf8, 0xce, 0xf7, 0xdf, 0xf3, 0xd6, 0xf2, 0x90, 0xf4, + 0x18, 0xf4, 0x4e, 0xf6, 0x1f, 0xf7, 0x31, 0xf7, 0xe9, 0xf7, 0x3f, 0xf5, 0x62, 0xf5, 0xe8, 0xf4, + 0x55, 0xf6, 0x18, 0xfa, 0x38, 0xff, 0xae, 0x06, 0x3f, 0x09, 0xe9, 0x0a, 0x29, 0x0d, 0x5a, 0x0a, + 0x13, 0x09, 0xb5, 0x03, 0x66, 0x00, 0xf5, 0xfd, 0x08, 0xfb, 0xd7, 0xfd, 0xa6, 0xfe, 0xd8, 0xff, + 0x4f, 0x00, 0x09, 0xfd, 0x9c, 0xfc, 0xfe, 0xf8, 0x02, 0xf8, 0x09, 0xf6, 0x15, 0xf3, 0x83, 0xf4, + 0xa1, 0xf3, 0xb0, 0xf4, 0x14, 0xf7, 0x47, 0xf6, 0x2b, 0xf7, 0x72, 0xf5, 0xea, 0xf4, 0x1e, 0xf7, + 0x92, 0xfa, 0xd1, 0xfe, 0x43, 0x04, 0x7c, 0x0b, 0xa7, 0x10, 0xdf, 0x12, 0xa9, 0x15, 0xef, 0x13, + 0x04, 0x12, 0x84, 0x0d, 0x09, 0x09, 0xe4, 0x06, 0xaa, 0x02, 0x7f, 0x03, 0x85, 0x04, 0xcc, 0x05, + 0xea, 0x07, 0x05, 0x06, 0x52, 0x05, 0xff, 0x02, 0x31, 0x01, 0x25, 0x00, 0x61, 0xfe, 0xb4, 0xfe, + 0xbf, 0xfd, 0xe3, 0xfd, 0xae, 0xff, 0xec, 0xff, 0xb5, 0x01, 0xda, 0x00, 0xb7, 0xff, 0x8b, 0x00, + 0xb2, 0x01, 0xe1, 0x04, 0xa0, 0x07, 0x13, 0x0d, 0x20, 0x11, 0x30, 0x11, 0x19, 0x13, 0xcd, 0x11, + 0x0a, 0x0f, 0x1b, 0x0a, 0x07, 0x04, 0x97, 0x00, 0x6c, 0xfa, 0x7e, 0xfa, 0xaf, 0xfb, 0xe3, 0xfb, + 0xc0, 0xfe, 0x19, 0xfc, 0xb3, 0xfa, 0x25, 0xf9, 0x9f, 0xf7, 0x54, 0xf8, 0x96, 0xf5, 0xe1, 0xf6, + 0x15, 0xf9, 0x41, 0xfb, 0xa9, 0xff, 0x49, 0x01, 0x5e, 0x03, 0x35, 0x04, 0x94, 0x02, 0x71, 0x03, + 0x85, 0x03, 0x3a, 0x05, 0x49, 0x07, 0x67, 0x0b, 0x90, 0x0f, 0xfc, 0x0e, 0xef, 0x0f, 0x8c, 0x0e, + 0xc0, 0x0a, 0x6a, 0x07, 0x6a, 0x00, 0xb2, 0xfc, 0x25, 0xf6, 0xa9, 0xf1, 0xde, 0xf1, 0x3f, 0xf1, + 0x4d, 0xf3, 0x37, 0xf2, 0x24, 0xf0, 0x3d, 0xef, 0xcb, 0xec, 0x1f, 0xee, 0x5b, 0xed, 0xd5, 0xee, + 0x48, 0xf2, 0x58, 0xf4, 0x5e, 0xf9, 0x0f, 0xfd, 0x65, 0xff, 0x16, 0x02, 0x23, 0x01, 0xfb, 0x01, + 0xc8, 0x02, 0x08, 0x04, 0x17, 0x05, 0xd8, 0x07, 0x44, 0x0c, 0x24, 0x0e, 0x28, 0x0f, 0x96, 0x10, + 0x40, 0x0e, 0x5f, 0x0c, 0x64, 0x05, 0x66, 0x00, 0x31, 0xfb, 0x40, 0xf6, 0x09, 0xf6, 0xec, 0xf4, + 0x60, 0xf6, 0x72, 0xf7, 0x10, 0xf7, 0x1d, 0xf8, 0x84, 0xf6, 0xcd, 0xf7, 0xf3, 0xf7, 0x9c, 0xf8, + 0xaf, 0xfb, 0x80, 0xfd, 0x8d, 0x00, 0x83, 0x04, 0x77, 0x06, 0xe0, 0x08, 0x94, 0x07, 0x3f, 0x07, + 0xa2, 0x06, 0xf4, 0x06, 0x30, 0x08, 0x1b, 0x0a, 0xd0, 0x0d, 0x06, 0x0f, 0x3a, 0x0d, 0x3e, 0x0c, + 0x8a, 0x08, 0x67, 0x05, 0x46, 0xfe, 0x21, 0xf8, 0x9e, 0xf1, 0xda, 0xe9, 0x75, 0xe8, 0x5f, 0xe7, + 0x53, 0xe8, 0xde, 0xea, 0xf6, 0xe9, 0xf3, 0xeb, 0x34, 0xea, 0xa1, 0xeb, 0xfb, 0xec, 0x87, 0xec, + 0x8d, 0xef, 0x61, 0xf2, 0xd5, 0xf5, 0xd2, 0xfa, 0xa7, 0xfd, 0x18, 0x02, 0xf4, 0x02, 0x97, 0x04, + 0x97, 0x06, 0x73, 0x09, 0xd2, 0x0d, 0x40, 0x11, 0x60, 0x17, 0x81, 0x1c, 0xec, 0x1d, 0x41, 0x21, + 0xfe, 0x1e, 0xa5, 0x1c, 0xfc, 0x17, 0x2b, 0x12, 0xf9, 0x0e, 0xc2, 0x08, 0xd8, 0x05, 0xbb, 0x05, + 0xa3, 0x05, 0xdd, 0x08, 0xcd, 0x07, 0x63, 0x07, 0x7c, 0x04, 0x6f, 0x01, 0x84, 0x00, 0x1b, 0xfd, + 0x25, 0xfc, 0xc7, 0xfb, 0x7a, 0xfa, 0x9d, 0xfd, 0xff, 0xfd, 0xe8, 0xff, 0x56, 0x00, 0x6f, 0xfe, + 0xf0, 0xfc, 0xc8, 0xfc, 0xe6, 0xfd, 0x06, 0x00, 0x2f, 0x03, 0x25, 0x08, 0x5a, 0x09, 0xab, 0x0b, + 0x26, 0x0c, 0x83, 0x0b, 0x77, 0x09, 0x18, 0x04, 0x0c, 0x01, 0x3f, 0xfb, 0x47, 0xf7, 0xbc, 0xf6, + 0x4d, 0xf5, 0x1e, 0xf8, 0x1d, 0xf8, 0x17, 0xf8, 0xa1, 0xf6, 0x7c, 0xf3, 0xe1, 0xf2, 0x47, 0xf0, + 0xe8, 0xee, 0x24, 0xf0, 0xc6, 0xf0, 0xb6, 0xf4, 0x77, 0xf7, 0x20, 0xfa, 0xad, 0xfb, 0x18, 0xfb, + 0x52, 0xfb, 0x29, 0xfb, 0x7d, 0xfc, 0xab, 0xfe, 0x66, 0x02, 0x55, 0x0a, 0x1d, 0x0e, 0x10, 0x12, + 0x7d, 0x14, 0x99, 0x15, 0x33, 0x16, 0x3f, 0x12, 0x4a, 0x10, 0x69, 0x0b, 0x21, 0x06, 0x7d, 0x05, + 0xdc, 0x02, 0xdf, 0x03, 0xdd, 0x02, 0xb8, 0x00, 0x55, 0xfe, 0x37, 0xf9, 0x3d, 0xf8, 0xa9, 0xf5, + 0x7f, 0xf2, 0x5b, 0xf1, 0x52, 0xef, 0xb3, 0xf0, 0x30, 0xf2, 0x80, 0xf3, 0x38, 0xf5, 0x1b, 0xf3, + 0x15, 0xf2, 0x9d, 0xf1, 0xa2, 0xf2, 0x3b, 0xf5, 0xad, 0xf7, 0x9b, 0xfe, 0xdf, 0x02, 0x80, 0x06, + 0x24, 0x0a, 0xed, 0x09, 0xf6, 0x0a, 0xbf, 0x07, 0x42, 0x05, 0xb1, 0x02, 0x7a, 0xfd, 0x01, 0xfc, + 0x55, 0xfa, 0x5b, 0xfb, 0x2a, 0xfd, 0xbf, 0xfc, 0xbd, 0xfd, 0x45, 0xfa, 0x6c, 0xf8, 0xce, 0xf6, + 0xfd, 0xf2, 0xe4, 0xf2, 0xc5, 0xf1, 0xc7, 0xf1, 0xbd, 0xf3, 0x7d, 0xf4, 0xe6, 0xf7, 0xc6, 0xf9, + 0xb7, 0xf9, 0xfe, 0xf9, 0x9a, 0xfb, 0xd8, 0xfe, 0x38, 0x02, 0x45, 0x08, 0x99, 0x0e, 0x5f, 0x12, + 0xad, 0x16, 0xe4, 0x16, 0xc7, 0x17, 0x30, 0x15, 0xdf, 0x10, 0xc0, 0x0d, 0xac, 0x07, 0x63, 0x05, + 0x77, 0x04, 0x81, 0x04, 0x55, 0x06, 0xa3, 0x04, 0x16, 0x05, 0xc0, 0x02, 0x12, 0x01, 0xa2, 0x00, + 0x91, 0xfd, 0xa5, 0xfb, 0x90, 0xfa, 0x25, 0xfa, 0x10, 0xfc, 0x45, 0xfd, 0x0b, 0x00, 0x2c, 0x00, + 0xbf, 0xff, 0x11, 0xff, 0x48, 0xfe, 0xfe, 0xff, 0x6e, 0x01, 0x99, 0x04, 0x12, 0x0a, 0xe9, 0x0b, + 0xac, 0x0e, 0x1f, 0x0e, 0x79, 0x0d, 0xbc, 0x0a, 0x9b, 0x05, 0xe5, 0x02, 0xfa, 0xfc, 0xf8, 0xf8, + 0xf6, 0xf6, 0x3d, 0xf5, 0xaa, 0xf7, 0x27, 0xf7, 0x6b, 0xf8, 0x9d, 0xf6, 0x76, 0xf4, 0x19, 0xf6, + 0x60, 0xf6, 0x2e, 0xf7, 0xf3, 0xf8, 0xed, 0xf9, 0x07, 0xfe, 0x5c, 0x00, 0xbc, 0x04, 0x7b, 0x07, + 0xde, 0x07, 0x96, 0x07, 0x80, 0x06, 0xbb, 0x06, 0x3a, 0x07, 0x78, 0x08, 0x09, 0x0d, 0x76, 0x0e, + 0x4d, 0x11, 0xaf, 0x11, 0x54, 0x11, 0x8c, 0x0f, 0x35, 0x09, 0x09, 0x05, 0x0b, 0xff, 0xdc, 0xf8, + 0x64, 0xf6, 0xc1, 0xf2, 0x95, 0xf3, 0x95, 0xf3, 0x3a, 0xf4, 0xe3, 0xf3, 0x20, 0xf2, 0xaf, 0xf2, + 0x81, 0xf2, 0x13, 0xf2, 0xc2, 0xf4, 0xe2, 0xf4, 0xfc, 0xf7, 0x42, 0xfb, 0xed, 0xfe, 0x1f, 0x03, + 0x1e, 0x05, 0x16, 0x05, 0xae, 0x03, 0xc5, 0x02, 0xf1, 0x02, 0x71, 0x02, 0xb2, 0x06, 0xd6, 0x09, + 0x26, 0x0d, 0x39, 0x0e, 0x36, 0x0d, 0x08, 0x0d, 0xc9, 0x08, 0x01, 0x04, 0x79, 0xfe, 0x20, 0xf7, + 0xb2, 0xf3, 0x8d, 0xf1, 0x93, 0xf3, 0xbe, 0xf4, 0xe5, 0xf5, 0x31, 0xf7, 0xd9, 0xf5, 0x1e, 0xf6, + 0x92, 0xf7, 0xfd, 0xf6, 0x29, 0xf9, 0x97, 0xf9, 0xf1, 0xfb, 0xcc, 0xfe, 0x0b, 0x02, 0x05, 0x06, + 0xb7, 0x06, 0x61, 0x06, 0xf9, 0x05, 0xd7, 0x05, 0x3c, 0x07, 0x2b, 0x06, 0xf4, 0x07, 0xb5, 0x09, + 0x18, 0x0b, 0x53, 0x0c, 0x09, 0x0b, 0xd1, 0x09, 0xde, 0x04, 0x54, 0xff, 0x13, 0xfb, 0x6f, 0xf3, + 0x08, 0xf0, 0x13, 0xec, 0xcd, 0xeb, 0x44, 0xed, 0xb2, 0xed, 0x13, 0xf0, 0x2c, 0xef, 0xc9, 0xee, + 0x60, 0xf1, 0x58, 0xf1, 0xb9, 0xf2, 0x6f, 0xf3, 0x03, 0xf5, 0x1c, 0xf8, 0x38, 0xfa, 0x63, 0xff, + 0x54, 0x03, 0x63, 0x05, 0xfb, 0x06, 0x1f, 0x07, 0xf9, 0x08, 0xb3, 0x09, 0x37, 0x0e, 0xf6, 0x12, + 0x17, 0x16, 0xff, 0x19, 0xd6, 0x1a, 0xa8, 0x1c, 0x7d, 0x1b, 0x16, 0x17, 0x81, 0x14, 0xe8, 0x0d, + 0xdb, 0x08, 0x2e, 0x05, 0x33, 0x03, 0xb7, 0x04, 0x92, 0x04, 0xc9, 0x04, 0xd0, 0x02, 0xa1, 0xfe, + 0x8b, 0xfd, 0x66, 0xfa, 0x34, 0xf8, 0xa3, 0xf6, 0xc9, 0xf5, 0x9a, 0xf7, 0x22, 0xf8, 0x5b, 0xf9, + 0x7d, 0xfa, 0xc4, 0xfa, 0xea, 0xfa, 0xd3, 0xf9, 0x05, 0xfa, 0x51, 0xfa, 0x54, 0xfc, 0x1f, 0x01, + 0x52, 0x05, 0x7b, 0x0b, 0x98, 0x0d, 0x59, 0x0f, 0xff, 0x10, 0xd3, 0x0d, 0x74, 0x0b, 0x45, 0x06, + 0x60, 0x00, 0xb5, 0xfd, 0xe0, 0xfa, 0x10, 0xfc, 0xd7, 0xfb, 0x72, 0xfb, 0xd2, 0xf9, 0x5c, 0xf5, + 0x58, 0xf4, 0x95, 0xf2, 0x51, 0xf1, 0x28, 0xf1, 0xb1, 0xef, 0xcc, 0xf0, 0x7e, 0xf2, 0xe3, 0xf5, + 0x18, 0xf9, 0x8e, 0xfa, 0x7c, 0xfa, 0x0d, 0xfa, 0xe1, 0xfb, 0xdc, 0xfc, 0xfc, 0xfe, 0x20, 0x05, + 0x24, 0x09, 0x6f, 0x0e, 0x46, 0x13, 0x43, 0x16, 0x95, 0x18, 0x55, 0x16, 0x47, 0x14, 0x32, 0x10, + 0x13, 0x09, 0x37, 0x06, 0x07, 0x01, 0xb7, 0xff, 0x98, 0xfe, 0x99, 0xfd, 0x64, 0xfd, 0x5e, 0xf9, + 0x37, 0xf7, 0x5a, 0xf3, 0x87, 0xf0, 0x56, 0xf0, 0xa9, 0xed, 0xe0, 0xed, 0xd4, 0xee, 0xe5, 0xef, + 0x4c, 0xf1, 0x8f, 0xf3, 0x39, 0xf5, 0x9c, 0xf4, 0x2b, 0xf4, 0xde, 0xf5, 0xd4, 0xf5, 0xc8, 0xfa, + 0xb9, 0xfe, 0x73, 0x03, 0xeb, 0x08, 0x9e, 0x0b, 0x85, 0x0f, 0x0b, 0x0f, 0x16, 0x0d, 0x70, 0x0a, + 0x68, 0x04, 0xcf, 0x00, 0x44, 0xfc, 0xbe, 0xfc, 0x8a, 0xfd, 0x41, 0xfd, 0xc7, 0xfe, 0xe5, 0xfb, + 0x03, 0xfa, 0xf2, 0xf9, 0x82, 0xf6, 0xae, 0xf5, 0x9f, 0xf3, 0xd2, 0xf2, 0xbb, 0xf4, 0x4a, 0xf7, + 0x37, 0xfa, 0x32, 0xfd, 0xa7, 0xfe, 0x6a, 0xfe, 0xd2, 0xfd, 0x60, 0x00, 0x0c, 0x01, 0x2f, 0x04, + 0x98, 0x08, 0x63, 0x0d, 0xf6, 0x12, 0x5e, 0x15, 0x2d, 0x18, 0xd8, 0x17, 0xe2, 0x13, 0x87, 0x11, + 0x95, 0x0c, 0xed, 0x08, 0xf7, 0x03, 0x12, 0x02, 0xb5, 0x01, 0xc8, 0x00, 0xf1, 0x01, 0x26, 0x01, + 0x45, 0xfe, 0x28, 0xfd, 0x2a, 0xfb, 0x14, 0xfb, 0xed, 0xf9, 0x05, 0xf9, 0xa6, 0xf9, 0x2d, 0xfa, + 0x3f, 0xfc, 0xc0, 0xfe, 0x8f, 0x00, 0xc3, 0x01, 0x17, 0x01, 0x74, 0x02, 0xe5, 0x02, 0xc2, 0x04, + 0xdd, 0x07, 0x3a, 0x0a, 0x01, 0x0e, 0x20, 0x10, 0x80, 0x12, 0x92, 0x12, 0xbc, 0x0f, 0x25, 0x0e, + 0x8d, 0x06, 0x72, 0x01, 0x90, 0xfd, 0xdd, 0xf9, 0x4f, 0xfa, 0x0b, 0xf9, 0x94, 0xf9, 0xd3, 0xfa, + 0x1c, 0xf9, 0x37, 0xfa, 0x83, 0xf9, 0xa6, 0xfa, 0x65, 0xfa, 0xc2, 0xfa, 0x3a, 0xfd, 0xe3, 0xfe, + 0x81, 0x00, 0x14, 0x03, 0x44, 0x05, 0xfa, 0x06, 0x6c, 0x05, 0x05, 0x05, 0x75, 0x03, 0xa2, 0x01, + 0x61, 0x02, 0x55, 0x04, 0xf8, 0x07, 0x78, 0x09, 0xde, 0x09, 0x1d, 0x0a, 0x37, 0x06, 0xef, 0x03, + 0x7e, 0xff, 0xf8, 0xf8, 0x4d, 0xf3, 0x78, 0xee, 0x85, 0xee, 0x73, 0xee, 0x8a, 0xef, 0x0b, 0xf2, + 0xee, 0xf0, 0x6b, 0xf1, 0x40, 0xf1, 0xd7, 0xf1, 0x88, 0xf4, 0xfb, 0xf4, 0xcc, 0xf6, 0xa9, 0xfa, + 0xd3, 0xfc, 0x70, 0x00, 0x3e, 0x04, 0x1e, 0x06, 0xaf, 0x05, 0x27, 0x06, 0x87, 0x05, 0xb3, 0x03, + 0x69, 0x05, 0x68, 0x06, 0xde, 0x09, 0x99, 0x0d, 0xdd, 0x0e, 0xd3, 0x10, 0xc4, 0x0d, 0xcd, 0x0b, + 0xe8, 0x07, 0x70, 0x01, 0x3f, 0xfd, 0xb6, 0xf8, 0x70, 0xf7, 0x41, 0xf7, 0xb1, 0xf7, 0xc9, 0xf9, + 0x4a, 0xf8, 0x64, 0xf7, 0x34, 0xf6, 0x2b, 0xf5, 0xdb, 0xf5, 0xe0, 0xf5, 0x98, 0xf6, 0x66, 0xf7, + 0x49, 0xf8, 0x02, 0xfb, 0x3b, 0xfc, 0x73, 0xff, 0x0b, 0x00, 0x75, 0xfe, 0xbf, 0xfe, 0xf7, 0xfc, + 0xba, 0xfd, 0xc5, 0xfe, 0x17, 0x02, 0xbe, 0x04, 0xa0, 0x05, 0xdd, 0x07, 0x02, 0x07, 0x1a, 0x05, + 0xac, 0x02, 0x67, 0xfd, 0xe7, 0xf8, 0xed, 0xf2, 0xc8, 0xef, 0x2e, 0xf0, 0xf9, 0xef, 0xda, 0xf2, + 0xf5, 0xf3, 0x77, 0xf3, 0x14, 0xf4, 0xb0, 0xf3, 0x96, 0xf4, 0xfb, 0xf3, 0x2b, 0xf4, 0xdc, 0xf6, + 0x52, 0xf9, 0x63, 0xfc, 0x45, 0x00, 0x76, 0x04, 0xec, 0x06, 0x01, 0x08, 0xac, 0x0a, 0x83, 0x09, + 0x4b, 0x0a, 0x13, 0x0d, 0x2b, 0x10, 0xc8, 0x15, 0x97, 0x19, 0x61, 0x1e, 0x63, 0x20, 0x01, 0x1f, + 0x3f, 0x1e, 0x32, 0x19, 0x76, 0x13, 0xbc, 0x0c, 0xdb, 0x07, 0x00, 0x06, 0x5c, 0x04, 0x8c, 0x05, + 0x85, 0x05, 0x7a, 0x01, 0xe1, 0xff, 0x3a, 0xfc, 0x1b, 0xfb, 0x08, 0xfa, 0xd5, 0xf6, 0x13, 0xf6, + 0xcd, 0xf5, 0x29, 0xf6, 0x29, 0xf8, 0x85, 0xf9, 0x74, 0xfa, 0x17, 0xf9, 0x09, 0xfa, 0x60, 0xf9, + 0xc9, 0xf9, 0xd5, 0xfc, 0x3e, 0x00, 0x1e, 0x06, 0xd9, 0x09, 0xa5, 0x0d, 0x66, 0x10, 0x3c, 0x10, + 0x8c, 0x10, 0xda, 0x0c, 0xd7, 0x08, 0x9e, 0x03, 0x3b, 0xfe, 0x09, 0xfc, 0xe7, 0xf9, 0xe2, 0xf8, + 0x41, 0xf9, 0x2f, 0xf7, 0x47, 0xf6, 0x63, 0xf3, 0xba, 0xf1, 0xaa, 0xf1, 0x62, 0xef, 0x3b, 0xef, + 0xa7, 0xf0, 0xc5, 0xf1, 0xef, 0xf4, 0x6a, 0xf6, 0x0b, 0xfa, 0x42, 0xfa, 0xa2, 0xfc, 0x70, 0xfd, + 0x31, 0xfe, 0x8c, 0x01, 0xb3, 0x05, 0xe0, 0x0c, 0xf7, 0x11, 0x27, 0x16, 0xde, 0x1a, 0x89, 0x1a, + 0xd1, 0x1b, 0xa3, 0x18, 0x58, 0x14, 0xa5, 0x0f, 0xff, 0x08, 0xfa, 0x05, 0xd6, 0x03, 0x57, 0x01, + 0x58, 0x01, 0x19, 0xfe, 0x25, 0xfb, 0x0f, 0xf7, 0xb1, 0xf3, 0x1b, 0xf1, 0x3f, 0xed, 0xdd, 0xea, + 0x77, 0xea, 0x3a, 0xea, 0xbb, 0xeb, 0x6b, 0xee, 0xfb, 0xf2, 0x20, 0xf4, 0x17, 0xf4, 0xb1, 0xf4, + 0xc1, 0xf3, 0x96, 0xf4, 0x1c, 0xf8, 0x05, 0xfd, 0x90, 0x03, 0x6f, 0x07, 0xbc, 0x0c, 0xb0, 0x0d, + 0xa0, 0x0e, 0xba, 0x0d, 0x2b, 0x0b, 0xaf, 0x06, 0x3e, 0x01, 0xeb, 0xfc, 0xe3, 0xfb, 0x1a, 0xfa, + 0x6c, 0xfd, 0xdb, 0xfc, 0x18, 0xfb, 0xe9, 0xf9, 0x17, 0xf7, 0xff, 0xf5, 0x8b, 0xf5, 0xa4, 0xf4, + 0x47, 0xf4, 0xa7, 0xf4, 0x80, 0xf7, 0x0e, 0xfb, 0x3b, 0xff, 0x99, 0x00, 0x7b, 0x00, 0xe0, 0x00, + 0x43, 0x00, 0xc2, 0x02, 0x91, 0x04, 0xb1, 0x07, 0x0e, 0x0e, 0xe5, 0x10, 0x84, 0x14, 0x42, 0x15, + 0x7c, 0x16, 0xa2, 0x15, 0x06, 0x10, 0xb3, 0x0c, 0x7b, 0x07, 0x6c, 0x02, 0xfc, 0x00, 0x99, 0xfe, + 0xfa, 0xfd, 0xf2, 0xfc, 0xc8, 0xfc, 0x99, 0xfc, 0x0d, 0xfb, 0x63, 0xfb, 0xbc, 0xfb, 0x1c, 0xf9, + 0x22, 0xf9, 0xe3, 0xf8, 0x6b, 0xfb, 0x6e, 0xfb, 0xb7, 0xfe, 0x64, 0x01, 0x57, 0x00, 0xc3, 0x00, + 0x74, 0xff, 0x3b, 0xfe, 0x26, 0xfd, 0x28, 0xff, 0xe7, 0x03, 0x45, 0x06, 0x58, 0x09, 0x3b, 0x0b, + 0x24, 0x0a, 0xb8, 0x0a, 0xaf, 0x07, 0xca, 0x03, 0x80, 0xfe, 0xee, 0xf8, 0x29, 0xf7, 0x82, 0xf5, + 0x45, 0xf6, 0x86, 0xf8, 0x68, 0xf9, 0x12, 0xfb, 0x8a, 0xfc, 0xa5, 0xfd, 0xf3, 0xfd, 0x2c, 0xfd, + 0xe5, 0xfd, 0x4b, 0xfe, 0xfe, 0xff, 0x29, 0x02, 0x6a, 0x04, 0xdd, 0x06, 0xb5, 0x06, 0xf4, 0x05, + 0xba, 0x03, 0xd1, 0x01, 0xfb, 0x00, 0x8c, 0x00, 0x4c, 0x03, 0x29, 0x05, 0xaa, 0x07, 0xf2, 0x08, + 0x5b, 0x08, 0x4c, 0x07, 0xb4, 0x03, 0xfb, 0xff, 0x50, 0xfb, 0x11, 0xf6, 0x58, 0xf4, 0xf5, 0xf2, + 0x6b, 0xf2, 0x01, 0xf5, 0x62, 0xf4, 0x91, 0xf6, 0x12, 0xf7, 0xd6, 0xf6, 0x59, 0xf8, 0xfd, 0xf8, + 0xb9, 0xf9, 0x8b, 0xfa, 0xc3, 0xfb, 0x51, 0xfd, 0xf4, 0xff, 0x32, 0x05, 0x67, 0x06, 0x75, 0x07, + 0x9e, 0x05, 0xe7, 0x02, 0xe8, 0x03, 0x0f, 0x04, 0x1f, 0x07, 0x11, 0x0b, 0xa3, 0x0c, 0xe9, 0x0e, + 0x4c, 0x0f, 0xdc, 0x10, 0xef, 0x0e, 0x67, 0x0b, 0x49, 0x08, 0x48, 0x03, 0xf2, 0xff, 0x6a, 0xfd, + 0x1d, 0xfc, 0xe6, 0xfc, 0x24, 0xfb, 0xa6, 0xfb, 0xd1, 0xfb, 0xe0, 0xf9, 0x67, 0xfa, 0x70, 0xf9, + 0x2f, 0xf8, 0x31, 0xf8, 0x67, 0xf8, 0x64, 0xfa, 0xb4, 0xfa, 0xf7, 0xfe, 0x36, 0x00, 0xc1, 0xff, + 0x37, 0xff, 0x63, 0xfe, 0xe6, 0xfc, 0xc7, 0xfb, 0x68, 0xfd, 0xd3, 0x00, 0xc7, 0x02, 0xb3, 0x07, + 0x36, 0x09, 0xc0, 0x09, 0x1b, 0x09, 0x2f, 0x05, 0xda, 0x02, 0x05, 0xfd, 0x68, 0xf8, 0xb4, 0xf6, + 0x21, 0xf3, 0x29, 0xf4, 0x99, 0xf5, 0x64, 0xf6, 0xa8, 0xf5, 0x49, 0xf5, 0x68, 0xf6, 0x8a, 0xf6, + 0x6d, 0xf5, 0x37, 0xf5, 0x34, 0xf4, 0xe1, 0xf5, 0x7b, 0xf8, 0x6e, 0xfc, 0x01, 0x01, 0x85, 0x02, + 0x4b, 0x03, 0xd6, 0x02, 0x5b, 0x02, 0x10, 0x03, 0xcc, 0x05, 0xa4, 0x0a, 0xb8, 0x0f, 0x66, 0x16, + 0x70, 0x18, 0xda, 0x1a, 0x62, 0x1b, 0x26, 0x18, 0xf1, 0x13, 0x27, 0x0f, 0xa6, 0x07, 0x77, 0x03, + 0xae, 0xfe, 0xf9, 0xfd, 0x10, 0xfe, 0x93, 0xfb, 0xf8, 0xfa, 0xd1, 0xf8, 0xbe, 0xf6, 0xd5, 0xf5, + 0xb2, 0xf3, 0xa2, 0xf1, 0xd0, 0xef, 0xd6, 0xef, 0x39, 0xef, 0x16, 0xf2, 0xda, 0xf4, 0x55, 0xf6, + 0xcb, 0xf9, 0x37, 0xfa, 0x21, 0xfb, 0x27, 0xfd, 0x47, 0xfd, 0x2a, 0x03, 0x3f, 0x08, 0x2b, 0x0e, + 0x8e, 0x12, 0x02, 0x15, 0x0a, 0x17, 0x78, 0x15, 0x33, 0x13, 0x86, 0x0e, 0x86, 0x07, 0x25, 0x03, + 0x9b, 0xfd, 0xcb, 0xfb, 0x21, 0xfa, 0x41, 0xf6, 0x59, 0xf6, 0x4f, 0xf3, 0x8a, 0xf1, 0x6e, 0xf3, + 0x0b, 0xef, 0x85, 0xee, 0x7c, 0xec, 0x9e, 0xec, 0x82, 0xed, 0xef, 0xee, 0x6c, 0xf3, 0x37, 0xf7, + 0xe2, 0xf9, 0xc5, 0xfb, 0x81, 0xfe, 0xc9, 0xff, 0xf9, 0xff, 0x50, 0x05, 0xa6, 0x09, 0x19, 0x0e, + 0xb3, 0x14, 0xc7, 0x16, 0xb6, 0x18, 0x00, 0x18, 0x80, 0x14, 0x0b, 0x13, 0x5b, 0x0c, 0x70, 0x08, + 0x59, 0x05, 0x1b, 0x01, 0x3d, 0xff, 0x48, 0xfe, 0xe5, 0xfb, 0xac, 0xf8, 0x58, 0xf6, 0x6a, 0xf4, + 0xac, 0xf1, 0x4c, 0xf0, 0xa7, 0xef, 0xd0, 0xf0, 0xa5, 0xf1, 0x77, 0xf2, 0xa6, 0xf6, 0x26, 0xfa, + 0x36, 0xfb, 0x7d, 0xfd, 0x99, 0xfc, 0x72, 0xfb, 0x55, 0xfb, 0xc5, 0xfd, 0x2f, 0x02, 0x16, 0x07, + 0xb7, 0x0a, 0x18, 0x0e, 0x61, 0x11, 0xdb, 0x11, 0xe1, 0x0f, 0xe4, 0x0d, 0xb0, 0x08, 0x94, 0x05, + 0x79, 0x02, 0x81, 0xff, 0xaf, 0x00, 0x7d, 0xfe, 0xdb, 0xfe, 0x95, 0xfe, 0x89, 0xfb, 0x29, 0xfb, + 0xd8, 0xfa, 0x2a, 0xfa, 0x75, 0xf9, 0xe1, 0xf9, 0x93, 0xfa, 0xf6, 0xfa, 0xd9, 0xfe, 0xb4, 0x01, + 0x19, 0x04, 0x37, 0x05, 0xfd, 0x03, 0xd6, 0x04, 0x36, 0x03, 0xdd, 0x02, 0xe0, 0x06, 0x82, 0x09, + 0x80, 0x0d, 0xfa, 0x0f, 0x3d, 0x11, 0xac, 0x12, 0xbc, 0x0f, 0x6e, 0x0d, 0x28, 0x09, 0x87, 0x03, + 0xca, 0xfe, 0x27, 0xfb, 0x5a, 0xfb, 0x18, 0xfb, 0x52, 0xfb, 0xb1, 0xfd, 0x24, 0xfb, 0x5f, 0xfc, + 0x89, 0xfb, 0x5d, 0xfa, 0xaa, 0xfa, 0xb2, 0xf9, 0xbd, 0xf9, 0x9a, 0xf7, 0x52, 0xf9, 0x4b, 0xfc, + 0x33, 0xfe, 0x1b, 0xfe, 0x5c, 0xfe, 0xb8, 0xff, 0xe1, 0xfe, 0x1f, 0xfe, 0x4e, 0x00, 0x22, 0x01, + 0x0b, 0x06, 0x81, 0x09, 0xdd, 0x0a, 0xde, 0x0d, 0x03, 0x0a, 0x9d, 0x08, 0xbf, 0x06, 0xcc, 0xff, + 0x7f, 0xff, 0xb1, 0xfd, 0x9f, 0xfc, 0xc0, 0xfe, 0x9d, 0x00, 0x81, 0x01, 0xa0, 0x01, 0x28, 0x02, + 0x75, 0x02, 0xd4, 0x01, 0xd1, 0x00, 0xf8, 0x00, 0x69, 0x01, 0x76, 0xff, 0x54, 0xff, 0x8a, 0x02, + 0x56, 0x02, 0x4c, 0x03, 0xc8, 0x01, 0x7e, 0xff, 0x96, 0xfc, 0xa0, 0xf9, 0xf1, 0xf7, 0xe6, 0xf8, + 0x8f, 0xfa, 0x3a, 0xfb, 0x85, 0xfd, 0xe1, 0xff, 0x0d, 0x00, 0x85, 0xfe, 0xc4, 0xfd, 0x0a, 0xf9, + 0xbd, 0xf5, 0x54, 0xf1, 0xc5, 0xef, 0x64, 0xf2, 0x62, 0xf2, 0x44, 0xf5, 0xad, 0xf6, 0xa5, 0xf5, + 0x19, 0xf6, 0x98, 0xf6, 0x27, 0xf6, 0xc0, 0xf5, 0x77, 0xf7, 0x11, 0xf9, 0x1c, 0xfb, 0xa4, 0xfd, + 0x25, 0x01, 0x71, 0x05, 0x62, 0x07, 0x58, 0x07, 0x63, 0x08, 0xf8, 0x04, 0x13, 0x05, 0x18, 0x06, + 0x11, 0x08, 0xa8, 0x0b, 0xd8, 0x0c, 0xdd, 0x0f, 0x3f, 0x12, 0x20, 0x12, 0x39, 0x12, 0x67, 0x0e, + 0x29, 0x0a, 0xfa, 0x05, 0x25, 0x02, 0xf8, 0x00, 0x47, 0xff, 0xdf, 0xff, 0xca, 0xfe, 0xe3, 0xfa, + 0x0e, 0xfc, 0x20, 0xf9, 0x26, 0xf9, 0xf5, 0xf6, 0xb9, 0xf5, 0x77, 0xf6, 0xc4, 0xf4, 0xc7, 0xf6, + 0xa2, 0xf8, 0x94, 0xf9, 0xaa, 0xfa, 0x99, 0xfa, 0x56, 0xfb, 0x44, 0xf9, 0x5f, 0xfa, 0x82, 0xfd, + 0x45, 0xff, 0x29, 0x02, 0xd3, 0x04, 0x1d, 0x07, 0xde, 0x08, 0x0b, 0x07, 0x7e, 0x08, 0x39, 0x04, + 0xd1, 0xfd, 0xb3, 0xfa, 0xb6, 0xf7, 0x65, 0xf5, 0x08, 0xf5, 0xdf, 0xf5, 0xef, 0xf5, 0x69, 0xf5, + 0x6e, 0xf4, 0xb6, 0xf3, 0xe1, 0xf2, 0xc1, 0xf0, 0x3f, 0xf2, 0x00, 0xf3, 0x1a, 0xf4, 0x00, 0xf7, + 0xc5, 0xfa, 0xd7, 0xfd, 0xf9, 0xff, 0xb0, 0x01, 0x0a, 0x04, 0x9a, 0x04, 0xf3, 0x05, 0xb4, 0x08, + 0xb5, 0x0d, 0x0b, 0x13, 0x33, 0x18, 0x48, 0x1b, 0xb1, 0x1e, 0x0a, 0x1e, 0xf8, 0x1c, 0xc4, 0x19, + 0x9a, 0x13, 0x95, 0x0c, 0xdd, 0x04, 0x08, 0x02, 0x76, 0xfe, 0xa5, 0xfc, 0x9b, 0xfc, 0xf3, 0xf9, + 0x98, 0xf7, 0x60, 0xf4, 0x98, 0xf2, 0x1d, 0xef, 0x11, 0xec, 0xd5, 0xea, 0xd9, 0xe9, 0x0c, 0xec, + 0x58, 0xef, 0x99, 0xf2, 0xbd, 0xf8, 0xdd, 0xf9, 0xe6, 0xfc, 0x22, 0xff, 0x25, 0xfe, 0xb2, 0x02, + 0x65, 0x07, 0xb9, 0x0b, 0xe1, 0x10, 0x6d, 0x13, 0x33, 0x18, 0x95, 0x18, 0xc0, 0x18, 0xcb, 0x18, + 0x4d, 0x14, 0x92, 0x0e, 0xe6, 0x07, 0xf9, 0x02, 0x0b, 0x00, 0x93, 0xfc, 0x96, 0xfd, 0x97, 0xf9, + 0x95, 0xf7, 0xf7, 0xf6, 0x64, 0xf3, 0x9e, 0xf1, 0xaf, 0xee, 0xac, 0xee, 0x52, 0xed, 0x06, 0xee, + 0x72, 0xf3, 0xfd, 0xf5, 0x42, 0xfa, 0x32, 0xfe, 0xb8, 0x00, 0x86, 0x02, 0x3b, 0x02, 0x04, 0x05, + 0x7a, 0x08, 0xb7, 0x0b, 0xcc, 0x0f, 0xb1, 0x12, 0xc5, 0x17, 0x96, 0x17, 0xcf, 0x15, 0x96, 0x17, + 0x6f, 0x12, 0x18, 0x0d, 0xbe, 0x09, 0xb5, 0x02, 0x3f, 0xff, 0x45, 0xfd, 0x4f, 0xfb, 0x54, 0xf8, + 0x61, 0xf6, 0xc1, 0xf4, 0xb5, 0xf3, 0x16, 0xf2, 0x00, 0xee, 0x2c, 0xee, 0x9b, 0xed, 0xa7, 0xeb, + 0xc4, 0xef, 0x8c, 0xf4, 0x59, 0xf7, 0x6f, 0xf8, 0x83, 0xf9, 0x77, 0xf9, 0x43, 0xf8, 0x55, 0xf8, + 0x4d, 0xfa, 0x4c, 0xfe, 0x30, 0x03, 0x74, 0x06, 0x85, 0x09, 0x47, 0x0d, 0x3e, 0x0d, 0x53, 0x0e, + 0x7b, 0x0c, 0xfd, 0x09, 0x80, 0x04, 0x75, 0xff, 0x0e, 0xfe, 0x05, 0xfb, 0xbc, 0xfb, 0x94, 0xfb, + 0x10, 0xfb, 0x6a, 0xfb, 0xd6, 0xfb, 0x78, 0xfb, 0x1f, 0xfa, 0x98, 0xf9, 0x00, 0xf8, 0x1f, 0xf7, + 0xd2, 0xf8, 0xe7, 0xfa, 0x7e, 0xff, 0xdf, 0x00, 0xc4, 0xff, 0x04, 0x03, 0xbc, 0x01, 0xe5, 0xff, + 0x93, 0x01, 0x7a, 0x02, 0x8a, 0x06, 0x9a, 0x09, 0x88, 0x0c, 0x55, 0x0f, 0x68, 0x0e, 0x40, 0x0f, + 0x99, 0x0d, 0x9f, 0x09, 0x57, 0x06, 0x75, 0x02, 0xf7, 0x00, 0xfb, 0xfe, 0xdf, 0xfe, 0xb9, 0xff, + 0x16, 0xfc, 0x0e, 0xff, 0xf5, 0x00, 0xe4, 0xff, 0x7d, 0xfd, 0x05, 0xfb, 0xaa, 0xfa, 0x8d, 0xf6, + 0x8a, 0xf5, 0x17, 0xf8, 0x14, 0xf9, 0x52, 0xfa, 0xc3, 0xfa, 0x1e, 0xfc, 0x71, 0xfb, 0x87, 0xf8, + 0xdb, 0xf7, 0x99, 0xfa, 0x5c, 0xfe, 0x8c, 0x02, 0x85, 0x05, 0xa8, 0x08, 0xd4, 0x08, 0x5d, 0x09, + 0x14, 0x0a, 0x50, 0x06, 0x90, 0x06, 0xee, 0x04, 0xbc, 0x01, 0x28, 0x02, 0x8b, 0x03, 0x6d, 0x05, + 0xfd, 0x06, 0x2f, 0x07, 0x50, 0x08, 0x82, 0x08, 0xde, 0x05, 0x6c, 0x04, 0xda, 0x03, 0xa3, 0x01, + 0xf9, 0xfe, 0xca, 0xff, 0x1c, 0x01, 0x8e, 0x02, 0x74, 0x02, 0x13, 0x03, 0x5d, 0xff, 0xa8, 0xfb, + 0x05, 0xf8, 0x21, 0xf8, 0xf7, 0xf9, 0x4f, 0xfb, 0x8b, 0xfd, 0x07, 0x01, 0x41, 0x03, 0x38, 0x03, + 0x0b, 0x02, 0x36, 0xff, 0xd3, 0xfd, 0x37, 0xf9, 0xdc, 0xf6, 0x21, 0xf6, 0x8c, 0xf3, 0x74, 0xf4, + 0xee, 0xf3, 0xfe, 0xf3, 0x6b, 0xf4, 0xa4, 0xf4, 0xbd, 0xf4, 0x24, 0xf5, 0x59, 0xf4, 0x16, 0xf2, + 0x4e, 0xf0, 0x1d, 0xf1, 0xed, 0xf2, 0x63, 0xf8, 0xf0, 0xfa, 0xa9, 0xfb, 0x20, 0xfd, 0x6e, 0xfb, + 0x37, 0xfa, 0x68, 0xfa, 0xd6, 0xfb, 0xc9, 0x01, 0x1f, 0x04, 0x9a, 0x08, 0x28, 0x0e, 0x92, 0x0e, + 0xcf, 0x11, 0x51, 0x11, 0x28, 0x0e, 0x4b, 0x0b, 0xfb, 0x05, 0x60, 0x01, 0xfc, 0xfd, 0x47, 0xff, + 0xba, 0xfd, 0x2e, 0xfb, 0xab, 0xfc, 0x44, 0xfb, 0x19, 0xfa, 0x12, 0xf9, 0xde, 0xf7, 0x51, 0xf7, + 0xe3, 0xf3, 0xef, 0xf3, 0x60, 0xf7, 0xfd, 0xf8, 0x2a, 0xfa, 0x83, 0xfd, 0xa7, 0x00, 0x70, 0x00, + 0x9d, 0x00, 0xd2, 0x01, 0x33, 0x02, 0x56, 0x06, 0x9f, 0x09, 0x1f, 0x0f, 0xbf, 0x13, 0x11, 0x13, + 0x90, 0x13, 0x05, 0x12, 0x6a, 0x0d, 0x10, 0x0b, 0x72, 0x06, 0x60, 0x03, 0xe3, 0x00, 0xc8, 0xfe, + 0xd1, 0xfe, 0x9e, 0xfd, 0x7f, 0xfd, 0x49, 0xfd, 0x1d, 0xfd, 0x2b, 0xfc, 0x67, 0xfb, 0x7b, 0xfa, + 0x84, 0xf7, 0x9e, 0xf9, 0x00, 0xfb, 0x79, 0xfc, 0x8f, 0x01, 0xf1, 0x04, 0x08, 0x08, 0x00, 0x0a, + 0xa6, 0x09, 0x33, 0x0a, 0xc7, 0x0d, 0xf5, 0x11, 0x1e, 0x15, 0xc3, 0x17, 0x68, 0x1b, 0x21, 0x1c, + 0x56, 0x1c, 0x18, 0x1b, 0x1f, 0x17, 0x2a, 0x13, 0x89, 0x0a, 0xfd, 0x04, 0xbf, 0x01, 0x72, 0xfe, + 0xca, 0xfc, 0xf3, 0xf9, 0x2c, 0xf9, 0x84, 0xf7, 0x4b, 0xf5, 0xcf, 0xf2, 0xe8, 0xf1, 0x83, 0xf0, + 0xf3, 0xee, 0x4d, 0xf1, 0xa1, 0xf1, 0x42, 0xf3, 0xdf, 0xf7, 0xa2, 0xfb, 0xf8, 0xff, 0x16, 0x04, + 0x13, 0x04, 0x34, 0x05, 0x93, 0x04, 0xba, 0x07, 0x4e, 0x0b, 0x26, 0x0d, 0xaa, 0x13, 0x3a, 0x16, + 0xe7, 0x16, 0x2a, 0x18, 0xa5, 0x15, 0x6a, 0x11, 0xb5, 0x09, 0xa8, 0x03, 0x1b, 0x00, 0x65, 0xfa, + 0xc7, 0xf9, 0xed, 0xf5, 0xb1, 0xf5, 0xe8, 0xf3, 0x8b, 0xf0, 0xd4, 0xee, 0x30, 0xec, 0xea, 0xeb, + 0xed, 0xe9, 0x03, 0xe7, 0x7f, 0xe9, 0xe1, 0xeb, 0xc9, 0xee, 0x82, 0xf2, 0xb6, 0xf5, 0x9a, 0xf8, + 0x7d, 0xf7, 0x01, 0xf7, 0xf1, 0xf6, 0xfc, 0xf7, 0x48, 0xfc, 0xa6, 0xfe, 0x89, 0x03, 0xd5, 0x06, + 0x12, 0x07, 0x28, 0x0a, 0x86, 0x08, 0x60, 0x04, 0x38, 0x02, 0x92, 0xfc, 0xf7, 0xf6, 0xf0, 0xf3, + 0x46, 0xf3, 0xf4, 0xf2, 0x48, 0xf4, 0x9b, 0xf5, 0x9f, 0xf3, 0xbc, 0xf2, 0xf4, 0xf1, 0x82, 0xf1, + 0x21, 0xf1, 0x14, 0xf0, 0x30, 0xf2, 0xbc, 0xf1, 0xf0, 0xf3, 0x53, 0xf5, 0x8d, 0xf8, 0x74, 0xfa, + 0x35, 0xfc, 0x8e, 0xfb, 0x90, 0xfa, 0xcf, 0xfb, 0x70, 0xff, 0x2b, 0x01, 0x96, 0x04, 0x00, 0x0a, + 0x3b, 0x0d, 0xc8, 0x0d, 0x95, 0x0e, 0x58, 0x11, 0x47, 0x0d, 0xc1, 0x06, 0xf7, 0x04, 0x8f, 0x02, + 0x88, 0x02, 0x3c, 0x03, 0x86, 0x03, 0xeb, 0x04, 0x01, 0x04, 0xc0, 0x04, 0xbb, 0x03, 0xc4, 0x02, + 0x9e, 0x00, 0x79, 0xfd, 0x71, 0xfd, 0x8b, 0xfa, 0x48, 0xfc, 0x94, 0xff, 0x15, 0x01, 0x39, 0x02, + 0xe4, 0x01, 0x24, 0x00, 0x4a, 0x00, 0x0f, 0xfe, 0x81, 0x01, 0xe1, 0x03, 0x0f, 0x06, 0x51, 0x0b, + 0xb7, 0x0d, 0x99, 0x0e, 0xa5, 0x10, 0xc5, 0x10, 0xdf, 0x0f, 0xdd, 0x0a, 0x5e, 0x08, 0xbd, 0x04, + 0x95, 0x02, 0xef, 0x02, 0x6c, 0x03, 0xfd, 0x04, 0x19, 0x04, 0x2b, 0x04, 0xb6, 0x01, 0xb8, 0xfd, + 0xb9, 0xfc, 0x5c, 0xfa, 0xad, 0xf8, 0xa0, 0xf7, 0x26, 0xf7, 0xbb, 0xf8, 0xb9, 0xf9, 0x0c, 0xfa, + 0xa4, 0xfb, 0xe8, 0xfa, 0x89, 0xfa, 0x5b, 0xfa, 0x0f, 0xfc, 0x5b, 0xfd, 0x06, 0x00, 0x97, 0x04, + 0x08, 0x08, 0x75, 0x0a, 0x6e, 0x0e, 0x53, 0x0d, 0xe9, 0x0c, 0xe3, 0x0b, 0xcd, 0x0a, 0x5a, 0x08, + 0x39, 0x08, 0xc5, 0x07, 0x2d, 0x08, 0x27, 0x0a, 0xf5, 0x09, 0x1e, 0x08, 0xc6, 0x07, 0x86, 0x06, + 0xd4, 0x05, 0xf6, 0x01, 0xc5, 0x01, 0x14, 0x02, 0xd5, 0x00, 0xf4, 0x01, 0x30, 0x02, 0xb9, 0x01, + 0x5d, 0x00, 0x97, 0xff, 0x67, 0xfc, 0x26, 0xf9, 0x99, 0xf9, 0x87, 0xfc, 0xbe, 0xfe, 0xd4, 0x00, + 0xf1, 0x03, 0x12, 0x06, 0x9d, 0x06, 0x7a, 0x07, 0xd2, 0x09, 0x14, 0x06, 0xed, 0x01, 0xb1, 0xfe, + 0xd1, 0xfa, 0x17, 0xf8, 0x59, 0xf8, 0xaa, 0xf9, 0xaf, 0xf8, 0x9d, 0xf7, 0xd5, 0xf9, 0xa7, 0xf8, + 0x74, 0xf6, 0xe1, 0xf3, 0x00, 0xf4, 0x63, 0xf2, 0x9b, 0xf0, 0x79, 0xf4, 0x35, 0xf8, 0x1f, 0xf9, + 0xa7, 0xfb, 0x84, 0xfb, 0x67, 0xfb, 0x13, 0xfa, 0x96, 0xf8, 0xed, 0xfb, 0x31, 0xfe, 0xed, 0x01, + 0xd5, 0x07, 0xdd, 0x0a, 0xc9, 0x0c, 0xb6, 0x0d, 0x77, 0x0d, 0xc7, 0x09, 0x2c, 0x03, 0x0c, 0xff, + 0xeb, 0xf9, 0x29, 0xf8, 0x86, 0xf4, 0xd8, 0xf2, 0x77, 0xf3, 0xe3, 0xf1, 0xe5, 0xf1, 0x10, 0xef, + 0x64, 0xec, 0x2d, 0xeb, 0x90, 0xe8, 0x18, 0xe7, 0xbc, 0xe6, 0x1f, 0xe7, 0xd2, 0xea, 0xa1, 0xee, + 0x7f, 0xf2, 0x7c, 0xf5, 0xdf, 0xf6, 0x4c, 0xf7, 0x8a, 0xf7, 0x63, 0xfb, 0x14, 0xff, 0x48, 0x01, + 0x55, 0x06, 0x67, 0x07, 0x2f, 0x09, 0x89, 0x0a, 0x71, 0x09, 0x29, 0x09, 0x88, 0x05, 0x0b, 0x04, + 0xee, 0xfe, 0xd1, 0xfa, 0xe6, 0xf8, 0x82, 0xf8, 0x4c, 0xf9, 0x24, 0xfb, 0xf7, 0xfb, 0xfd, 0xfc, + 0xf6, 0xfb, 0xf5, 0xfb, 0xd4, 0xfa, 0x50, 0xfa, 0x65, 0xfc, 0xb7, 0xfd, 0xc6, 0x00, 0xfe, 0x04, + 0xac, 0x07, 0x15, 0x0b, 0x1b, 0x0f, 0xc4, 0x0f, 0x6b, 0x0e, 0x7a, 0x10, 0x8e, 0x13, 0xc6, 0x13, + 0x23, 0x15, 0xd1, 0x19, 0xff, 0x1c, 0x84, 0x1b, 0x0a, 0x1a, 0x46, 0x1a, 0xa5, 0x15, 0x85, 0x10, + 0x16, 0x0b, 0x91, 0x04, 0x24, 0x03, 0x1e, 0x01, 0xf0, 0xff, 0xac, 0xfd, 0xfd, 0xfb, 0xd4, 0xfb, + 0xfd, 0xfa, 0x59, 0xfa, 0x07, 0xf9, 0x48, 0xfa, 0xbf, 0xf8, 0xb7, 0xf7, 0xf5, 0xfd, 0x0b, 0x03, + 0x9c, 0x06, 0x58, 0x0a, 0x78, 0x0b, 0xa3, 0x0b, 0xbb, 0x09, 0x87, 0x0a, 0x49, 0x0b, 0x0f, 0x0d, + 0x9e, 0x10, 0xb5, 0x15, 0x24, 0x17, 0x3d, 0x17, 0xae, 0x14, 0x84, 0x15, 0xe1, 0x10, 0x63, 0x0b, + 0xd6, 0x06, 0x84, 0x00, 0x3e, 0xfd, 0x8b, 0xf9, 0xd7, 0xf6, 0xf4, 0xf3, 0xfb, 0xf3, 0x47, 0xf4, + 0x18, 0xf0, 0xe2, 0xef, 0x78, 0xf0, 0xb8, 0xed, 0x38, 0xee, 0x3f, 0xef, 0xc1, 0xed, 0x77, 0xf2, + 0x79, 0xf3, 0x6c, 0xf5, 0x5c, 0xf9, 0xca, 0xfb, 0x4f, 0xf9, 0xe3, 0xf8, 0x95, 0xfb, 0x5b, 0xfd, + 0x8a, 0x01, 0xba, 0x05, 0xba, 0x06, 0xa4, 0x0a, 0x6f, 0x0a, 0x5a, 0x0a, 0xd9, 0x09, 0x71, 0x07, + 0xd7, 0x02, 0x41, 0xfe, 0x29, 0xfe, 0xa1, 0xfc, 0xdd, 0xfc, 0x0d, 0xfc, 0x65, 0xfc, 0xb8, 0xfe, + 0x3e, 0xfc, 0xa9, 0xfc, 0xa7, 0xfc, 0x4a, 0xf9, 0x36, 0xf6, 0xe3, 0xf4, 0x69, 0xf4, 0x8a, 0xf3, + 0x81, 0xf5, 0xdb, 0xf6, 0xc9, 0xf9, 0xbd, 0xfb, 0x61, 0xf6, 0x9a, 0xf2, 0x9b, 0xf4, 0xcb, 0xf4, + 0xb0, 0xf5, 0x06, 0xfb, 0x63, 0xff, 0x33, 0x03, 0x0b, 0x06, 0x89, 0x07, 0x1c, 0x08, 0xdc, 0x05, + 0x8f, 0x03, 0x18, 0xff, 0xd8, 0xfe, 0xf9, 0xfe, 0x1f, 0xff, 0xd1, 0x01, 0x4e, 0x01, 0xe0, 0x02, + 0xd2, 0x02, 0x26, 0x00, 0x50, 0xfe, 0x18, 0xfc, 0xa0, 0xfa, 0x3d, 0xf7, 0xed, 0xf5, 0x63, 0xf8, + 0xc5, 0xf8, 0xcf, 0xfb, 0xad, 0xfc, 0x02, 0xff, 0xc8, 0xfc, 0x74, 0xf8, 0x70, 0xfb, 0x93, 0xfc, + 0x9e, 0xfb, 0xb8, 0x00, 0x5b, 0x06, 0xfa, 0x08, 0xa2, 0x0b, 0x70, 0x0d, 0x28, 0x0d, 0xfd, 0x0b, + 0xd8, 0x0b, 0xcd, 0x06, 0x20, 0x06, 0x77, 0x06, 0x8d, 0x01, 0x96, 0x01, 0x1d, 0x00, 0xe9, 0xfe, + 0xef, 0xfe, 0x90, 0xfc, 0x7e, 0xf8, 0xe0, 0xf9, 0xd3, 0xf6, 0x99, 0xf1, 0xe0, 0xef, 0x8b, 0xf0, + 0xed, 0xee, 0xc9, 0xf0, 0x95, 0xf4, 0x7a, 0xf6, 0x05, 0xf9, 0x5b, 0xf8, 0x27, 0xf6, 0xc5, 0xf8, + 0x55, 0xf9, 0x53, 0xfd, 0xbd, 0x02, 0x7a, 0x06, 0x97, 0x0a, 0xe3, 0x0d, 0x81, 0x12, 0x0e, 0x13, + 0x64, 0x14, 0x7b, 0x11, 0x51, 0x0d, 0xd5, 0x0d, 0x1a, 0x0c, 0xed, 0x0b, 0x53, 0x0e, 0xe0, 0x0e, + 0x4c, 0x0c, 0x11, 0x0b, 0xa1, 0x0b, 0xde, 0x08, 0xaf, 0x08, 0x53, 0x05, 0xcc, 0x02, 0x96, 0x03, + 0x6f, 0x02, 0x1f, 0x01, 0x9a, 0x03, 0x35, 0x04, 0x2e, 0x02, 0x5a, 0x01, 0x69, 0xff, 0xbe, 0xfc, + 0xb1, 0xfe, 0xac, 0xff, 0x1a, 0x01, 0x9c, 0x06, 0x45, 0x0a, 0xbe, 0x09, 0x06, 0x0d, 0x6e, 0x0b, + 0x60, 0x06, 0x87, 0x03, 0xf3, 0xfe, 0xd5, 0xfb, 0x58, 0xfb, 0xc6, 0xf9, 0xd7, 0xf8, 0xd0, 0xf8, + 0x8c, 0xf8, 0x2b, 0xf6, 0x6c, 0xf6, 0x0d, 0xf5, 0x70, 0xf3, 0xb2, 0xf4, 0x92, 0xf2, 0x90, 0xf3, + 0x79, 0xf7, 0x66, 0xf7, 0xdd, 0xfa, 0xb9, 0xff, 0x9a, 0x00, 0x94, 0xfe, 0xb6, 0xff, 0x15, 0x02, + 0x9a, 0x02, 0x6b, 0x06, 0x7a, 0x0b, 0x26, 0x0e, 0x54, 0x12, 0xf4, 0x11, 0x82, 0x12, 0x12, 0x14, + 0x21, 0x0f, 0x4b, 0x0a, 0x3e, 0x06, 0x73, 0x01, 0xf3, 0xfc, 0xfa, 0xfb, 0x68, 0xf8, 0x19, 0xf6, + 0xe9, 0xf6, 0xc6, 0xf4, 0x6f, 0xf1, 0xc5, 0xf1, 0xa2, 0xef, 0x9c, 0xec, 0x15, 0xed, 0x3d, 0xed, + 0xc6, 0xed, 0x54, 0xef, 0x9e, 0xf1, 0x50, 0xf7, 0xef, 0xfb, 0x39, 0xfe, 0xea, 0xfe, 0x51, 0x00, + 0x07, 0x00, 0x82, 0xff, 0xd7, 0x04, 0x26, 0x04, 0xd0, 0x06, 0xbe, 0x09, 0x3f, 0x0a, 0xdb, 0x0b, + 0x7e, 0x0a, 0xde, 0x05, 0x29, 0x02, 0x53, 0xfd, 0x07, 0xf8, 0x10, 0xf6, 0xf0, 0xf7, 0x2b, 0xf6, + 0x30, 0xf8, 0xae, 0xf8, 0xe2, 0xf6, 0x2a, 0xf8, 0x26, 0xf9, 0xdd, 0xf6, 0x00, 0xf6, 0x12, 0xf8, + 0x0f, 0xf9, 0x11, 0xfb, 0x07, 0x01, 0x32, 0x04, 0x3a, 0x08, 0xb4, 0x09, 0x86, 0x06, 0xfa, 0x04, + 0xed, 0x06, 0xf7, 0x05, 0x28, 0x08, 0x92, 0x09, 0x7f, 0x0b, 0x2c, 0x0d, 0x00, 0x0f, 0xf1, 0x0e, + 0x7c, 0x0d, 0x6e, 0x09, 0xea, 0x03, 0xb9, 0xff, 0x9b, 0xfb, 0xdc, 0xf6, 0xed, 0xf6, 0x60, 0xf6, + 0x0a, 0xf6, 0x16, 0xf7, 0x83, 0xf6, 0x80, 0xf6, 0x3a, 0xf6, 0xe3, 0xf5, 0x30, 0xf7, 0x70, 0xf8, + 0x01, 0xfa, 0x05, 0xfa, 0x9a, 0xfe, 0x31, 0x02, 0x71, 0x03, 0xda, 0x07, 0x67, 0x08, 0x42, 0x06, + 0x0a, 0x0a, 0x76, 0x09, 0x9d, 0x09, 0x8f, 0x0e, 0x0d, 0x11, 0x28, 0x12, 0xf3, 0x13, 0xa7, 0x17, + 0x6b, 0x14, 0xb9, 0x13, 0xa2, 0x10, 0xce, 0x09, 0x30, 0x06, 0xd6, 0x01, 0xc5, 0xfd, 0x99, 0xfb, + 0xc7, 0xf9, 0x90, 0xf9, 0x1b, 0xf9, 0x25, 0xf8, 0xdb, 0xf6, 0x83, 0xf5, 0x08, 0xf3, 0x52, 0xf0, + 0x6d, 0xef, 0x6c, 0xed, 0x85, 0xee, 0x46, 0xf3, 0x7d, 0xf5, 0xe7, 0xf5, 0x03, 0xf8, 0xb8, 0xf6, + 0xce, 0xf7, 0x8c, 0xf8, 0xb1, 0xf9, 0x72, 0xfd, 0x68, 0x00, 0xd8, 0x02, 0x29, 0x05, 0x48, 0x08, + 0xb2, 0x08, 0xce, 0x09, 0x91, 0x0b, 0x56, 0x06, 0x9e, 0x02, 0x2d, 0x01, 0x1b, 0xff, 0xc3, 0xfe, + 0x6e, 0x02, 0xe0, 0x03, 0x90, 0x01, 0xb9, 0x02, 0x7a, 0x01, 0xe9, 0xfd, 0x29, 0xfe, 0x56, 0xfa, + 0xab, 0xf8, 0x4e, 0xf9, 0xfc, 0xf8, 0xab, 0xfa, 0xa4, 0xfd, 0xea, 0xfd, 0xe5, 0xfd, 0x1c, 0xfc, + 0xf0, 0xfa, 0xcf, 0xf9, 0xb6, 0xfb, 0x6f, 0xfd, 0x78, 0x00, 0xbf, 0x05, 0x6d, 0x08, 0xcc, 0x0c, + 0x9e, 0x0e, 0x33, 0x0d, 0x7a, 0x0c, 0x88, 0x0a, 0x9d, 0x08, 0x75, 0x06, 0x22, 0x07, 0xea, 0x07, + 0x1a, 0x07, 0xe7, 0x07, 0x2c, 0x05, 0x88, 0x04, 0xa1, 0x04, 0xa0, 0xff, 0xcf, 0xfd, 0x79, 0xfc, + 0xdc, 0xf7, 0xc8, 0xf7, 0xef, 0xf9, 0xf2, 0xf9, 0x71, 0xfa, 0xd3, 0xfd, 0x3c, 0xfe, 0x72, 0xfc, + 0x56, 0xfa, 0xf8, 0xf9, 0xdc, 0xfa, 0x77, 0x00, 0x50, 0x02, 0x7b, 0x07, 0xaa, 0x0a, 0x3b, 0x0b, + 0xb1, 0x0e, 0x9d, 0x11, 0x49, 0x12, 0x61, 0x10, 0x11, 0x0e, 0x71, 0x0a, 0x3c, 0x06, 0xee, 0x04, + 0x61, 0x00, 0x4b, 0x00, 0x53, 0x01, 0x09, 0xff, 0xe2, 0xfd, 0xac, 0xfa, 0xcd, 0xf6, 0xc4, 0xf3, + 0x8b, 0xef, 0xfd, 0xeb, 0xe7, 0xea, 0x2a, 0xec, 0x83, 0xee, 0x4a, 0xf1, 0xdf, 0xf2, 0x31, 0xf3, + 0x16, 0xf4, 0xea, 0xf3, 0x4c, 0xf2, 0x6d, 0xf6, 0xac, 0xf9, 0x86, 0xfc, 0x19, 0x02, 0xd8, 0x08, + 0x57, 0x0b, 0xf7, 0x0d, 0xcc, 0x10, 0xad, 0x0d, 0xd0, 0x0a, 0x7c, 0x0a, 0x10, 0x07, 0x41, 0x06, + 0x88, 0x04, 0x96, 0x03, 0x54, 0x05, 0x90, 0x04, 0xad, 0x02, 0xaf, 0x02, 0xd4, 0x01, 0x6d, 0xff, + 0x62, 0xfd, 0x4c, 0xfa, 0x33, 0xf8, 0x4d, 0xf8, 0x32, 0xfb, 0xdf, 0xfb, 0x33, 0xfe, 0x35, 0xfe, + 0xa4, 0xfa, 0xf4, 0xf8, 0xc9, 0xf8, 0x80, 0xfb, 0x96, 0xfc, 0x10, 0xff, 0xf7, 0x01, 0x27, 0x05, + 0xe1, 0x06, 0xb1, 0x05, 0x70, 0x06, 0x64, 0x05, 0x7c, 0x02, 0x86, 0x01, 0x69, 0xfb, 0x5f, 0xf9, + 0x58, 0xf9, 0xbf, 0xf7, 0xaa, 0xf7, 0xc1, 0xf8, 0x69, 0xf8, 0x59, 0xf8, 0x31, 0xf9, 0xf0, 0xf8, + 0xa5, 0xf6, 0x50, 0xf7, 0x45, 0xf8, 0xbe, 0xf9, 0xf6, 0xfb, 0x64, 0xff, 0x23, 0x02, 0xf6, 0x06, + 0x22, 0x06, 0x21, 0x06, 0x08, 0x09, 0x84, 0x09, 0x54, 0x09, 0x6c, 0x0c, 0xde, 0x0f, 0xaf, 0x10, + 0x08, 0x12, 0xdc, 0x11, 0xac, 0x0f, 0xc9, 0x0f, 0x6c, 0x0b, 0x6b, 0x07, 0xd7, 0x02, 0xa9, 0xfd, + 0xff, 0xfb, 0x12, 0xf9, 0xd6, 0xf6, 0xd6, 0xf5, 0x15, 0xf4, 0x39, 0xf3, 0xd3, 0xf2, 0xfb, 0xf3, + 0x80, 0xf1, 0x00, 0xee, 0xcb, 0xec, 0xcd, 0xec, 0xf7, 0xf0, 0x3a, 0xf6, 0x7f, 0xf8, 0x44, 0xfd, + 0x9a, 0xff, 0x42, 0xff, 0x0d, 0xfe, 0x88, 0xff, 0x42, 0xff, 0xee, 0x00, 0x6e, 0x05, 0x94, 0x06, + 0x7a, 0x08, 0xc1, 0x0a, 0x3c, 0x0a, 0x0f, 0x0b, 0xb9, 0x08, 0x75, 0x03, 0x18, 0x01, 0xbc, 0xff, + 0x80, 0xfc, 0xc8, 0xf9, 0xa0, 0xfc, 0xdb, 0xfd, 0x11, 0xfe, 0x45, 0xff, 0x13, 0x00, 0x28, 0xff, + 0x88, 0xff, 0x0f, 0xfe, 0xf4, 0xfe, 0xf8, 0x01, 0xd5, 0x03, 0xea, 0x06, 0x30, 0x09, 0xd4, 0x0c, + 0xca, 0x0d, 0x92, 0x0c, 0x76, 0x09, 0x00, 0x09, 0xbf, 0x09, 0x10, 0x08, 0x5a, 0x0b, 0x9b, 0x0e, + 0x31, 0x0f, 0x8a, 0x11, 0xf9, 0x10, 0x1b, 0x0f, 0xa8, 0x0b, 0x95, 0x07, 0x62, 0x02, 0xca, 0xfd, + 0x75, 0xfd, 0x92, 0xfa, 0x99, 0xf9, 0x9e, 0xf9, 0x95, 0xf7, 0x4a, 0xf9, 0x97, 0xfa, 0x04, 0xfa, + 0x4f, 0xfa, 0x04, 0xfa, 0x44, 0xf7, 0xab, 0xf7, 0xe6, 0xf8, 0x2c, 0xf9, 0x4e, 0xfd, 0xc5, 0x03, + 0x91, 0x04, 0x79, 0x03, 0x92, 0x04, 0xf9, 0x03, 0xd3, 0x04, 0x50, 0x05, 0xd3, 0x06, 0x9b, 0x0b, + 0xb2, 0x0d, 0xa0, 0x0f, 0xf6, 0x10, 0x63, 0x11, 0x4a, 0x11, 0xa3, 0x0e, 0x4a, 0x0a, 0x4f, 0x04, + 0x8f, 0x00, 0xc2, 0xfd, 0x92, 0xfa, 0xbb, 0xfb, 0xb7, 0xfb, 0xf4, 0xf9, 0xd1, 0xf8, 0xf9, 0xf6, + 0xe2, 0xf4, 0xcd, 0xf1, 0xa7, 0xed, 0x25, 0xeb, 0x8a, 0xea, 0x18, 0xec, 0x98, 0xec, 0x15, 0xf1, + 0x13, 0xf3, 0x07, 0xf2, 0xe7, 0xf4, 0xfa, 0xf4, 0x81, 0xf4, 0x6f, 0xf5, 0x66, 0xf8, 0x95, 0xfa, + 0xee, 0xfd, 0x8f, 0x02, 0xfb, 0x04, 0xfb, 0x07, 0x37, 0x0a, 0x0c, 0x06, 0xc6, 0x04, 0xe9, 0x02, + 0xb6, 0x00, 0x18, 0xfe, 0x15, 0xfd, 0x52, 0xfd, 0x82, 0xfd, 0x0c, 0xfc, 0x9e, 0xfa, 0x3b, 0xfa, + 0x57, 0xf8, 0x8f, 0xf5, 0x8f, 0xf2, 0xa2, 0xef, 0x85, 0xee, 0x52, 0xf0, 0x1f, 0xf0, 0xc2, 0xf1, + 0x3b, 0xf6, 0x77, 0xf5, 0x25, 0xf5, 0x4b, 0xf4, 0xf3, 0xf3, 0xd8, 0xf4, 0xf6, 0xf7, 0x2e, 0xfd, + 0xc6, 0x01, 0xa7, 0x05, 0xa3, 0x08, 0x07, 0x0b, 0x51, 0x0e, 0x74, 0x0d, 0x36, 0x0d, 0xe2, 0x0b, + 0xcf, 0x08, 0x31, 0x07, 0x4c, 0x08, 0x1a, 0x08, 0x7a, 0x06, 0x07, 0x06, 0xf0, 0x04, 0x0a, 0x02, + 0xb1, 0x01, 0x7c, 0xff, 0x6e, 0xfc, 0xfb, 0xfa, 0xac, 0xfa, 0x90, 0xfa, 0x8b, 0xfa, 0xb7, 0xfc, + 0x0c, 0x00, 0x7b, 0xff, 0x64, 0xfe, 0xfc, 0xff, 0xfb, 0x01, 0xe8, 0x02, 0xa6, 0x03, 0x31, 0x08, + 0x22, 0x0c, 0x61, 0x0f, 0xf1, 0x12, 0x3e, 0x15, 0xc2, 0x17, 0x13, 0x18, 0x9c, 0x15, 0x0e, 0x12, + 0x97, 0x0d, 0xc6, 0x08, 0x6d, 0x06, 0x33, 0x05, 0x67, 0x03, 0x3c, 0x02, 0xee, 0x00, 0xbc, 0xfd, + 0x33, 0xfc, 0xf8, 0xf9, 0x48, 0xf4, 0xab, 0xf1, 0x0b, 0xef, 0x43, 0xec, 0xf9, 0xed, 0xb4, 0xef, + 0xb8, 0xf2, 0x3a, 0xf4, 0x0c, 0xf6, 0x02, 0xf6, 0xb0, 0xf5, 0x16, 0xf7, 0xc3, 0xf8, 0xeb, 0xfc, + 0x70, 0x02, 0xf7, 0x04, 0xa8, 0x09, 0x5b, 0x0c, 0x5b, 0x0f, 0x73, 0x10, 0x35, 0x10, 0xea, 0x0d, + 0x5d, 0x0b, 0x56, 0x09, 0x38, 0x06, 0x8f, 0x05, 0xe8, 0x06, 0xdb, 0x07, 0x8c, 0x08, 0xc4, 0x07, + 0xf3, 0x07, 0x49, 0x07, 0x9d, 0x03, 0xd6, 0x00, 0x49, 0x00, 0xb1, 0xff, 0xec, 0x00, 0x2a, 0x01, + 0x1e, 0x02, 0xd8, 0x02, 0x7e, 0x04, 0xac, 0x03, 0xca, 0x01, 0xcd, 0x00, 0x0e, 0x00, 0x5f, 0xff, + 0xf8, 0x02, 0x86, 0x04, 0xdd, 0x04, 0xc1, 0x06, 0xac, 0x08, 0x63, 0x06, 0x6c, 0x05, 0x59, 0x04, + 0xe4, 0xfe, 0x96, 0xfa, 0x9b, 0xf8, 0x20, 0xf7, 0xfb, 0xf6, 0x03, 0xf6, 0xb7, 0xf5, 0xa5, 0xf7, + 0x40, 0xf7, 0xc1, 0xf7, 0xfa, 0xf7, 0x8e, 0xf6, 0x31, 0xf5, 0xbe, 0xf5, 0xb5, 0xf6, 0x88, 0xf7, + 0x10, 0xfc, 0x40, 0x01, 0x29, 0x01, 0x9f, 0x01, 0x4b, 0x01, 0x51, 0x02, 0xba, 0x02, 0x51, 0x02, + 0x03, 0x05, 0x34, 0x06, 0x12, 0x06, 0x84, 0x06, 0xe8, 0x07, 0x3a, 0x08, 0x29, 0x08, 0x98, 0x07, + 0x32, 0x02, 0xde, 0xfd, 0x78, 0xfa, 0x0c, 0xf6, 0x4e, 0xf3, 0x08, 0xf3, 0xfc, 0xf2, 0x2d, 0xf4, + 0x9e, 0xf4, 0xd1, 0xf3, 0x22, 0xf2, 0xf0, 0xf0, 0x8b, 0xf0, 0xea, 0xed, 0xe8, 0xee, 0x41, 0xf1, + 0x7d, 0xf2, 0xeb, 0xf6, 0xd2, 0xf9, 0x23, 0xfb, 0xd0, 0xfc, 0x13, 0xfc, 0xa8, 0xfb, 0xb1, 0xfc, + 0x3a, 0xfe, 0x56, 0xff, 0x50, 0x02, 0xb5, 0x04, 0x3e, 0x05, 0x6b, 0x08, 0xbc, 0x07, 0xb4, 0x06, + 0x55, 0x04, 0xe8, 0x00, 0xd0, 0xfe, 0x30, 0xfb, 0x00, 0xfa, 0x6a, 0xfc, 0x80, 0xfd, 0x9b, 0xfd, + 0xe8, 0xfe, 0x89, 0x00, 0x00, 0x01, 0xae, 0xff, 0xe2, 0xff, 0x1f, 0xfd, 0x8b, 0xfe, 0x61, 0x01, + 0x1e, 0x02, 0xf0, 0x04, 0x49, 0x06, 0xe8, 0x05, 0x7f, 0x05, 0x91, 0x04, 0x8a, 0x02, 0xd3, 0x02, + 0x74, 0x05, 0x9b, 0x07, 0x3d, 0x0a, 0x67, 0x0c, 0x61, 0x0c, 0x1d, 0x0c, 0x42, 0x0b, 0x1c, 0x0b, + 0xba, 0x09, 0x37, 0x06, 0x20, 0x02, 0x29, 0xff, 0x22, 0xfd, 0x66, 0xfd, 0xa6, 0xfc, 0x7b, 0xfe, + 0x03, 0xff, 0xf0, 0xfe, 0x0b, 0x00, 0x82, 0xff, 0x4e, 0xfc, 0xf5, 0xfa, 0x99, 0xfa, 0xf4, 0xfc, + 0xf7, 0xfc, 0x71, 0x00, 0x2b, 0x05, 0x1d, 0x06, 0x43, 0x06, 0x23, 0x08, 0x38, 0x09, 0x01, 0x08, + 0x59, 0x0a, 0x49, 0x0d, 0xb9, 0x0e, 0x0c, 0x13, 0x8c, 0x14, 0xc2, 0x16, 0x66, 0x18, 0xaa, 0x18, + 0xfe, 0x15, 0xca, 0x10, 0x11, 0x0c, 0x81, 0x08, 0xfb, 0x05, 0x58, 0x04, 0x95, 0x00, 0x38, 0x00, + 0xea, 0xff, 0x50, 0xfd, 0x12, 0xfc, 0xc7, 0xf8, 0x55, 0xf3, 0x0b, 0xf0, 0x20, 0xec, 0xab, 0xea, + 0x51, 0xeb, 0x53, 0xed, 0x09, 0xf0, 0x72, 0xf3, 0xc1, 0xf5, 0x7c, 0xf5, 0xed, 0xf4, 0x6a, 0xf4, + 0xc4, 0xf5, 0xe6, 0xf9, 0xaf, 0xfc, 0xe6, 0x01, 0x11, 0x04, 0xb6, 0x05, 0x88, 0x0a, 0x84, 0x0c, + 0xfc, 0x0c, 0x86, 0x0b, 0x1b, 0x09, 0x08, 0x06, 0x97, 0x01, 0xfd, 0xff, 0x88, 0xff, 0x7a, 0xfe, + 0x81, 0xff, 0xb7, 0xfd, 0xaa, 0xfc, 0x50, 0xfb, 0xfe, 0xf6, 0x68, 0xf3, 0xef, 0xf0, 0x41, 0xf0, + 0x02, 0xf0, 0xf2, 0xf1, 0x58, 0xf3, 0xdc, 0xf4, 0x6b, 0xf7, 0x4a, 0xf6, 0xee, 0xf4, 0x3d, 0xf5, + 0xb0, 0xf6, 0x18, 0xf9, 0x40, 0xfc, 0x22, 0x01, 0xf0, 0x03, 0xc4, 0x08, 0x91, 0x0b, 0xb2, 0x0c, + 0x6f, 0x0d, 0x76, 0x0c, 0xea, 0x09, 0x01, 0x09, 0xe2, 0x05, 0x58, 0x03, 0x38, 0x02, 0x28, 0x00, + 0x25, 0xff, 0x2b, 0xfe, 0xb4, 0xfc, 0x1b, 0xfd, 0xda, 0xfb, 0x3c, 0xf8, 0x96, 0xf6, 0x46, 0xf5, + 0xf3, 0xf2, 0x9c, 0xf2, 0xec, 0xf5, 0x09, 0xf9, 0x2c, 0xfb, 0x0d, 0xfb, 0x9b, 0xfa, 0xa7, 0xfc, + 0x09, 0xfd, 0x13, 0x00, 0x47, 0x03, 0x6f, 0x07, 0x04, 0x0a, 0x80, 0x0c, 0x74, 0x0f, 0x69, 0x10, + 0x06, 0x12, 0x87, 0x12, 0xa4, 0x0d, 0x8d, 0x09, 0xf4, 0x06, 0x18, 0x03, 0xc2, 0x00, 0x9b, 0xff, + 0x3b, 0xff, 0xf2, 0xfd, 0x43, 0xfd, 0xc8, 0xfb, 0x56, 0xf8, 0x45, 0xf5, 0xd7, 0xf1, 0x71, 0xef, + 0x90, 0xee, 0x82, 0xee, 0xc4, 0xf0, 0x0f, 0xf3, 0x29, 0xf5, 0xd3, 0xf6, 0x6c, 0xf8, 0x5c, 0xf9, + 0xbf, 0xf9, 0x7d, 0xfb, 0x45, 0xfe, 0xe0, 0x02, 0x14, 0x08, 0x1a, 0x08, 0x58, 0x0b, 0x93, 0x0e, + 0x7b, 0x0f, 0x02, 0x10, 0xf0, 0x0d, 0xa2, 0x0a, 0x92, 0x09, 0x79, 0x06, 0x45, 0x05, 0x63, 0x07, + 0x38, 0x07, 0xb8, 0x05, 0x89, 0x05, 0xf8, 0x05, 0xc4, 0x04, 0x19, 0x04, 0x35, 0x01, 0x01, 0xfe, + 0x76, 0xfe, 0xc8, 0xfd, 0x3f, 0xfe, 0x1b, 0x00, 0xe6, 0x02, 0xe3, 0x03, 0xe6, 0x01, 0x4e, 0x00, + 0x47, 0xfd, 0x6c, 0xfc, 0x9c, 0xfd, 0x4b, 0xff, 0x81, 0x01, 0xb1, 0x02, 0x3d, 0x04, 0x63, 0x05, + 0xb2, 0x05, 0xf1, 0x05, 0x78, 0x05, 0x9f, 0x02, 0x09, 0x00, 0x3d, 0xfd, 0xcb, 0xfb, 0x23, 0xfb, + 0x43, 0xfb, 0x91, 0xfb, 0x2d, 0xfd, 0x6b, 0xfe, 0xa8, 0xfe, 0x45, 0xfd, 0x39, 0xfc, 0xe6, 0xfb, + 0x50, 0xfd, 0xe7, 0xfe, 0x38, 0xff, 0xf6, 0x01, 0xaf, 0x06, 0x94, 0x08, 0xff, 0x06, 0x92, 0x08, + 0xfa, 0x07, 0x29, 0x05, 0x35, 0x06, 0x78, 0x06, 0x38, 0x07, 0x93, 0x08, 0x1c, 0x09, 0xac, 0x0a, + 0x2e, 0x0d, 0xbd, 0x0d, 0xb9, 0x0b, 0x69, 0x07, 0x19, 0x03, 0xde, 0xfe, 0x74, 0xfc, 0xfd, 0xf9, + 0x81, 0xf8, 0xdb, 0xf8, 0xc3, 0xf7, 0x1a, 0xf8, 0x28, 0xf8, 0x53, 0xf6, 0xbd, 0xf5, 0x58, 0xf3, + 0x8f, 0xf1, 0x59, 0xef, 0xba, 0xef, 0xa0, 0xf1, 0xc6, 0xf4, 0x85, 0xf8, 0xc6, 0xf9, 0x0f, 0xfa, + 0xe2, 0xf9, 0x82, 0xf6, 0xaf, 0xf7, 0x58, 0xf9, 0xd1, 0xfb, 0xc9, 0xfe, 0x06, 0x00, 0xb2, 0x01, + 0xcc, 0x04, 0xba, 0x06, 0x52, 0x05, 0x62, 0x03, 0x83, 0x02, 0x46, 0xff, 0x26, 0xfb, 0xed, 0xfa, + 0x5f, 0xfb, 0xf3, 0xfc, 0x2e, 0x00, 0xca, 0x00, 0xdc, 0x01, 0xd3, 0x01, 0x47, 0x01, 0x3c, 0xff, + 0xff, 0xfe, 0xff, 0xfe, 0xc6, 0xfd, 0x74, 0xff, 0x78, 0x00, 0xfd, 0x01, 0x23, 0x03, 0xb6, 0x01, + 0x51, 0x01, 0x9e, 0x00, 0xd1, 0x00, 0x0b, 0x02, 0xcc, 0x03, 0x9b, 0x03, 0x21, 0x05, 0x7e, 0x07, + 0x48, 0x08, 0x88, 0x08, 0xa2, 0x08, 0xeb, 0x05, 0xd5, 0x03, 0xf0, 0xff, 0x4d, 0xfc, 0x70, 0xfb, + 0xe8, 0xf9, 0x88, 0xf8, 0xcf, 0xf8, 0x22, 0xf9, 0x88, 0xf8, 0x1b, 0xf9, 0x71, 0xf8, 0x3b, 0xf5, + 0x8e, 0xf4, 0xd4, 0xf5, 0x0f, 0xf4, 0x3b, 0xf5, 0xa0, 0xf8, 0xb6, 0xfc, 0x03, 0x00, 0xdd, 0x00, + 0x2e, 0x02, 0xa9, 0x02, 0xf7, 0x02, 0xcd, 0x03, 0x43, 0x07, 0x19, 0x0b, 0x2b, 0x0d, 0x79, 0x0f, + 0x0e, 0x13, 0xdd, 0x13, 0x71, 0x15, 0x06, 0x16, 0x29, 0x13, 0x08, 0x0f, 0x8f, 0x0a, 0x26, 0x08, + 0x4f, 0x05, 0x37, 0x03, 0x07, 0x02, 0xaf, 0xff, 0xfa, 0xfe, 0xc3, 0xfa, 0x7c, 0xf8, 0x7d, 0xf5, + 0xec, 0xef, 0x36, 0xee, 0x78, 0xec, 0x93, 0xed, 0xfa, 0xf0, 0x05, 0xf3, 0x21, 0xf5, 0x22, 0xf7, + 0x66, 0xf8, 0x4f, 0xf7, 0x95, 0xf8, 0x66, 0xfa, 0x4e, 0xfb, 0x56, 0x00, 0x1f, 0x03, 0x45, 0x05, + 0x33, 0x0a, 0x1e, 0x0e, 0xce, 0x10, 0xe0, 0x10, 0xdd, 0x0e, 0x60, 0x0b, 0xda, 0x07, 0xdf, 0x03, + 0xb6, 0x01, 0x7e, 0x01, 0x48, 0x01, 0x57, 0xff, 0x80, 0xff, 0xf8, 0xfd, 0x76, 0xfa, 0x39, 0xf9, + 0xd5, 0xf5, 0x20, 0xf3, 0x07, 0xf2, 0xb0, 0xf1, 0x15, 0xf3, 0x3c, 0xf4, 0xd4, 0xf6, 0xcd, 0xf7, + 0xd9, 0xf7, 0xba, 0xf6, 0xf2, 0xf5, 0x53, 0xf7, 0x9e, 0xfa, 0xaa, 0xfe, 0x3e, 0x02, 0xf3, 0x05, + 0x19, 0x0a, 0x20, 0x0d, 0x07, 0x0f, 0x37, 0x11, 0x23, 0x11, 0x26, 0x0f, 0x01, 0x0b, 0x0c, 0x0a, + 0x3a, 0x07, 0xef, 0x03, 0x5e, 0x03, 0x92, 0x02, 0x1f, 0x02, 0x29, 0x04, 0xea, 0x02, 0x16, 0x00, + 0x1e, 0xfd, 0xce, 0xfa, 0xca, 0xf9, 0x30, 0xf9, 0x37, 0xf8, 0xf8, 0xf9, 0xde, 0xfe, 0x68, 0xff, + 0x22, 0x00, 0xa2, 0x01, 0xfe, 0x01, 0x6c, 0x02, 0x51, 0x04, 0x45, 0x07, 0x3f, 0x08, 0x2f, 0x0a, + 0x4c, 0x0d, 0xa7, 0x0f, 0x50, 0x11, 0x61, 0x13, 0xc8, 0x12, 0x61, 0x10, 0x3a, 0x0b, 0x39, 0x07, + 0x4c, 0x05, 0x9f, 0x01, 0xbc, 0x00, 0x85, 0x00, 0xd1, 0xfe, 0x81, 0xfe, 0x05, 0xfb, 0x16, 0xf9, + 0x82, 0xf6, 0xe2, 0xf2, 0x35, 0xef, 0xac, 0xec, 0xe0, 0xeb, 0xb8, 0xec, 0x78, 0xf0, 0xd8, 0xf3, + 0x2f, 0xf4, 0x6f, 0xf5, 0x3c, 0xf5, 0xbc, 0xf5, 0x44, 0xf7, 0xf5, 0xf9, 0xfa, 0xfc, 0x4f, 0xfe, + 0x44, 0x01, 0xa2, 0x03, 0x41, 0x07, 0x86, 0x0a, 0x72, 0x09, 0x96, 0x08, 0x3b, 0x09, 0x90, 0x06, + 0xbd, 0x03, 0xeb, 0x02, 0x6e, 0x02, 0x4d, 0x03, 0xcd, 0x03, 0xd7, 0x04, 0xfa, 0x03, 0xe7, 0x02, + 0x5e, 0x02, 0xbd, 0xff, 0x9f, 0xfd, 0xef, 0xfc, 0x99, 0xfd, 0x98, 0xfe, 0x7a, 0xff, 0xb8, 0x00, + 0x97, 0x00, 0xc2, 0xfe, 0xbc, 0xfc, 0x7d, 0xfb, 0x51, 0xf9, 0x79, 0xfa, 0x64, 0xfb, 0x0d, 0xfc, + 0x28, 0xfe, 0xf9, 0xff, 0x64, 0x00, 0x29, 0x03, 0x56, 0x04, 0x24, 0x03, 0x5d, 0x02, 0x94, 0xff, + 0xb8, 0xfc, 0xc9, 0xfb, 0xf7, 0xf9, 0xae, 0xf9, 0x74, 0xfa, 0x87, 0xfa, 0x2c, 0xfb, 0xe7, 0xfc, + 0x63, 0xfd, 0xb5, 0xfb, 0xd6, 0xfb, 0x9a, 0xfc, 0x41, 0xfc, 0xab, 0xfc, 0x3d, 0x00, 0x19, 0x04, + 0xb0, 0x03, 0xe6, 0x04, 0x05, 0x04, 0xe8, 0x02, 0x23, 0x02, 0x25, 0x01, 0xb3, 0x01, 0x3b, 0x03, + 0x12, 0x05, 0xca, 0x07, 0x97, 0x08, 0x8f, 0x09, 0xd6, 0x0b, 0x6d, 0x0b, 0x5f, 0x09, 0x60, 0x05, + 0xc5, 0x00, 0xfc, 0xfd, 0x46, 0xfb, 0xd2, 0xfb, 0xc6, 0xfb, 0x21, 0xfd, 0x49, 0xfd, 0x73, 0xfc, + 0x5d, 0xfd, 0x5b, 0xfa, 0x59, 0xf7, 0xfe, 0xf5, 0x20, 0xf4, 0xd2, 0xf3, 0xf0, 0xf6, 0x26, 0xfa, + 0x89, 0xfc, 0x93, 0xfe, 0xf7, 0xfe, 0xe1, 0xfc, 0xac, 0xfd, 0xfd, 0xfc, 0xc1, 0xfd, 0x09, 0x01, + 0xca, 0x01, 0x78, 0x03, 0xd1, 0x05, 0x25, 0x08, 0xad, 0x0a, 0x34, 0x09, 0x0c, 0x07, 0xd0, 0x05, + 0x55, 0x02, 0xfa, 0xff, 0xfe, 0xfd, 0xc7, 0xfe, 0xb3, 0x00, 0xca, 0x01, 0x7b, 0x03, 0x9a, 0x03, + 0x34, 0x04, 0xb9, 0x02, 0x13, 0x00, 0x17, 0xfe, 0x68, 0xfd, 0xe7, 0xfd, 0x86, 0xfe, 0x3f, 0x00, + 0x3e, 0x01, 0xc8, 0x02, 0x81, 0x03, 0x88, 0x02, 0x03, 0x02, 0x8e, 0x01, 0x62, 0x01, 0x44, 0x03, + 0xf6, 0x04, 0x54, 0x05, 0x40, 0x07, 0xc6, 0x08, 0xe5, 0x09, 0x7f, 0x0a, 0x6b, 0x0a, 0x80, 0x08, + 0x12, 0x05, 0xc9, 0x02, 0x16, 0xff, 0xda, 0xfb, 0x4e, 0xfc, 0x84, 0xfb, 0x92, 0xfb, 0x63, 0xfc, + 0xc7, 0xfc, 0xb4, 0xfb, 0x7e, 0xf9, 0x83, 0xf8, 0xc4, 0xf7, 0xae, 0xf7, 0x01, 0xf7, 0x59, 0xfb, + 0xc9, 0xff, 0x2b, 0x01, 0x2d, 0x03, 0xa4, 0x03, 0x27, 0x04, 0xf8, 0x04, 0xf0, 0x04, 0x78, 0x06, + 0x27, 0x08, 0x82, 0x0a, 0x80, 0x0d, 0x4f, 0x0f, 0x45, 0x11, 0xf1, 0x12, 0x59, 0x13, 0x60, 0x11, + 0xd0, 0x0c, 0x74, 0x09, 0xc3, 0x04, 0xb8, 0x00, 0x4e, 0xff, 0x04, 0xfc, 0xc3, 0xfa, 0xb5, 0xf8, + 0x37, 0xf7, 0xc4, 0xf3, 0xb8, 0xf0, 0xca, 0xed, 0xa4, 0xea, 0x6b, 0xe9, 0x5e, 0xe9, 0x4c, 0xea, + 0x75, 0xee, 0x0d, 0xf1, 0x9d, 0xf2, 0xea, 0xf2, 0xd9, 0xf2, 0xfb, 0xf3, 0x0e, 0xf4, 0xaf, 0xf6, + 0x21, 0xfa, 0xd2, 0xfc, 0x27, 0x01, 0xf7, 0x03, 0x92, 0x07, 0x17, 0x0b, 0xf3, 0x09, 0xe0, 0x09, + 0x64, 0x08, 0x89, 0x04, 0x81, 0x01, 0x5b, 0xfe, 0xed, 0xfe, 0x57, 0xfe, 0xdc, 0xfd, 0xf1, 0xfc, + 0x58, 0xfc, 0x36, 0xfb, 0x96, 0xf8, 0x22, 0xf7, 0xaf, 0xf3, 0xb2, 0xf2, 0x39, 0xf4, 0x20, 0xf5, + 0x51, 0xf6, 0xcf, 0xf6, 0x24, 0xf7, 0xa8, 0xf7, 0x00, 0xf9, 0x40, 0xf8, 0x99, 0xf8, 0x24, 0xfb, + 0x44, 0xfe, 0xc1, 0x00, 0xe9, 0x04, 0x7f, 0x08, 0x82, 0x0a, 0xf5, 0x0c, 0x17, 0x0e, 0x35, 0x0e, + 0xff, 0x0d, 0x06, 0x0b, 0x35, 0x07, 0x9f, 0x04, 0x94, 0x02, 0x4d, 0x02, 0x10, 0x02, 0x85, 0x01, + 0x16, 0x01, 0x2d, 0x02, 0x95, 0x00, 0xbd, 0xfd, 0x0d, 0xfb, 0x16, 0xf9, 0x2d, 0xf7, 0xd2, 0xf5, + 0x0a, 0xfa, 0xe8, 0xfc, 0x38, 0xfe, 0xe6, 0xff, 0xe0, 0x00, 0xcd, 0x01, 0x1b, 0x01, 0x96, 0x01, + 0x64, 0x04, 0xa1, 0x05, 0x5f, 0x08, 0xac, 0x0b, 0xde, 0x0c, 0x68, 0x0f, 0x91, 0x12, 0xb0, 0x13, + 0x1a, 0x12, 0x19, 0x0e, 0x39, 0x0a, 0x04, 0x07, 0x4f, 0x07, 0xbc, 0x04, 0xa3, 0x03, 0x13, 0x05, + 0xd6, 0x03, 0xbc, 0x02, 0x79, 0x00, 0x5e, 0xfc, 0x79, 0xf9, 0x70, 0xf6, 0x93, 0xf4, 0x17, 0xf4, + 0xb6, 0xf5, 0xc0, 0xf7, 0xa9, 0xf9, 0xdf, 0xfb, 0x50, 0xfc, 0x97, 0xfc, 0x64, 0xfc, 0x23, 0xfb, + 0x32, 0xfc, 0x95, 0xfe, 0x3e, 0x00, 0x16, 0x02, 0x25, 0x04, 0xbc, 0x07, 0x48, 0x0b, 0x90, 0x0b, + 0x43, 0x0d, 0xf8, 0x0b, 0xbf, 0x09, 0xcb, 0x06, 0xe8, 0x05, 0xe5, 0x05, 0xac, 0x04, 0x94, 0x05, + 0xd5, 0x05, 0xa4, 0x05, 0x6b, 0x05, 0xda, 0x03, 0xfc, 0x01, 0x99, 0xff, 0x80, 0xfe, 0x9d, 0xfd, + 0x6b, 0xfe, 0x2f, 0xfe, 0x0b, 0xfd, 0x27, 0xfd, 0xf3, 0xfc, 0xc1, 0xfa, 0x48, 0xf8, 0x7e, 0xf7, + 0xb5, 0xf6, 0xe3, 0xf7, 0x24, 0xf9, 0xe6, 0xf9, 0xaa, 0xfb, 0x53, 0xfe, 0xe1, 0xff, 0xd6, 0x01, + 0x9b, 0x03, 0x44, 0x03, 0x7f, 0x01, 0x97, 0xfe, 0xd8, 0xfa, 0x7b, 0xf9, 0x75, 0xf9, 0x4f, 0xfa, + 0xce, 0xfb, 0x2c, 0xfd, 0x19, 0xff, 0x12, 0xff, 0x52, 0xfe, 0xe1, 0xfd, 0x3e, 0xfe, 0x5f, 0xfc, + 0x32, 0xfc, 0x99, 0xff, 0xd9, 0x00, 0x78, 0x01, 0x69, 0x02, 0xfd, 0x01, 0x88, 0x00, 0x24, 0xff, + 0xfa, 0xfe, 0x79, 0xff, 0x5a, 0x00, 0xa6, 0x01, 0x40, 0x03, 0xf0, 0x04, 0x64, 0x06, 0x3c, 0x07, + 0x5c, 0x09, 0x7d, 0x06, 0xf0, 0x01, 0xad, 0xfe, 0x1c, 0xfb, 0x0c, 0xfa, 0x1d, 0xf9, 0x4f, 0xfa, + 0x65, 0xfa, 0x42, 0xfa, 0x14, 0xfa, 0x66, 0xf8, 0x24, 0xf7, 0xb2, 0xf4, 0xd4, 0xf1, 0x0e, 0xf1, + 0x1c, 0xf1, 0xeb, 0xf2, 0xcd, 0xf5, 0x4f, 0xf8, 0xe8, 0xf9, 0x85, 0xfa, 0x9d, 0xfb, 0xe2, 0xfa, + 0x2f, 0xfa, 0x23, 0xfb, 0x02, 0xfe, 0xc2, 0x00, 0xa6, 0x02, 0x77, 0x03, 0x40, 0x06, 0x68, 0x06, + 0x1a, 0x07, 0x10, 0x09, 0x95, 0x06, 0x57, 0x04, 0x90, 0x01, 0x96, 0x00, 0x34, 0x01, 0x57, 0x02, + 0xd7, 0x03, 0x6c, 0x04, 0xa6, 0x05, 0x11, 0x05, 0xce, 0x03, 0x5c, 0x02, 0x64, 0xff, 0xc5, 0xfe, + 0x3e, 0x00, 0xd7, 0x00, 0x98, 0x00, 0x5a, 0x02, 0xdd, 0x02, 0xd6, 0x03, 0x5d, 0x04, 0x93, 0x03, + 0xd9, 0x02, 0xec, 0x02, 0x1c, 0x03, 0xab, 0x03, 0x1a, 0x05, 0xf1, 0x05, 0xa7, 0x06, 0x41, 0x08, + 0x62, 0x09, 0x25, 0x0a, 0xfb, 0x07, 0x9e, 0x04, 0x63, 0x00, 0x82, 0xfc, 0x8a, 0xfa, 0x05, 0xf9, + 0x00, 0xf9, 0xb3, 0xf8, 0x34, 0xfa, 0x64, 0xfb, 0xe0, 0xfa, 0x35, 0xf9, 0x9f, 0xf7, 0xb0, 0xf7, + 0x06, 0xf7, 0x98, 0xf8, 0xb0, 0xfa, 0x5c, 0xfe, 0xa3, 0x02, 0xf4, 0x04, 0xa0, 0x06, 0x60, 0x07, + 0xb2, 0x05, 0x88, 0x06, 0xbd, 0x08, 0xbe, 0x09, 0x18, 0x0d, 0x38, 0x0f, 0x8c, 0x10, 0xd0, 0x12, + 0xee, 0x15, 0x45, 0x18, 0x15, 0x15, 0xf0, 0x11, 0x5b, 0x0c, 0x0c, 0x08, 0x73, 0x05, 0x23, 0x01, + 0xd1, 0xff, 0x39, 0xff, 0x6b, 0xfd, 0xc3, 0xfc, 0xb1, 0xfa, 0xf9, 0xf7, 0xe1, 0xf4, 0x5f, 0xf2, + 0xfc, 0xf0, 0x95, 0xf0, 0xa8, 0xf2, 0x0a, 0xf4, 0xd1, 0xf6, 0x53, 0xf8, 0xb2, 0xf8, 0xed, 0xf9, + 0xd5, 0xf9, 0x0f, 0xfa, 0x0c, 0xfc, 0x43, 0xfe, 0x27, 0x01, 0x13, 0x03, 0xb0, 0x03, 0x0e, 0x07, + 0xdb, 0x08, 0x29, 0x0a, 0x9a, 0x09, 0x85, 0x07, 0xe7, 0x04, 0x6d, 0x00, 0x4b, 0xfe, 0x7c, 0xfc, + 0x3a, 0xfb, 0x07, 0xfc, 0x65, 0xfb, 0x68, 0xf9, 0x5e, 0xf8, 0x2f, 0xf8, 0x8d, 0xf5, 0x67, 0xf4, + 0x72, 0xf3, 0x68, 0xf2, 0x5c, 0xf2, 0x87, 0xf2, 0xac, 0xf2, 0x0e, 0xf4, 0x22, 0xf6, 0xd4, 0xf6, + 0x4d, 0xf7, 0xc5, 0xf7, 0x93, 0xf9, 0xef, 0xfb, 0x05, 0xff, 0x0e, 0x01, 0x2d, 0x03, 0xfa, 0x05, + 0x63, 0x08, 0x2f, 0x0b, 0x30, 0x0c, 0x96, 0x0b, 0x74, 0x0a, 0x98, 0x07, 0x3f, 0x04, 0x4c, 0x02, + 0x59, 0x01, 0x09, 0x02, 0xd8, 0x01, 0x6a, 0x02, 0x85, 0x02, 0xd1, 0x02, 0xc2, 0xfe, 0x13, 0xfc, + 0xbb, 0xfa, 0x61, 0xf8, 0x74, 0xf9, 0x14, 0xfb, 0xbf, 0xfd, 0x2a, 0x00, 0x5e, 0x01, 0x84, 0x02, + 0x8e, 0x01, 0xe3, 0x00, 0x2b, 0x02, 0x1e, 0x03, 0x1d, 0x04, 0xff, 0x05, 0xd0, 0x06, 0xd1, 0x09, + 0x66, 0x0b, 0xeb, 0x0d, 0x19, 0x11, 0x23, 0x10, 0x6c, 0x0d, 0x94, 0x08, 0x0e, 0x06, 0x48, 0x04, + 0xce, 0x03, 0xe8, 0x03, 0x9b, 0x01, 0x4b, 0x00, 0x17, 0xff, 0xed, 0xfc, 0xfd, 0xf9, 0x21, 0xf6, + 0xa2, 0xf4, 0x5d, 0xf2, 0xc0, 0xf1, 0x83, 0xf2, 0x9d, 0xf3, 0xb2, 0xf6, 0xee, 0xf7, 0x73, 0xf8, + 0xa3, 0xf8, 0xdf, 0xf7, 0x12, 0xf8, 0x57, 0xf8, 0xd5, 0xf9, 0x92, 0xfd, 0xb5, 0xfe, 0x70, 0x01, + 0x40, 0x05, 0x0a, 0x07, 0x6f, 0x0a, 0x29, 0x0c, 0x9d, 0x0b, 0xb7, 0x09, 0x05, 0x07, 0x95, 0x05, + 0xf5, 0x04, 0x5a, 0x05, 0x09, 0x05, 0x98, 0x05, 0xa4, 0x06, 0x6a, 0x06, 0x66, 0x05, 0xba, 0x03, + 0x38, 0x02, 0xe0, 0xff, 0xe0, 0xfe, 0xab, 0xfd, 0x26, 0xfd, 0xa3, 0xfc, 0x7c, 0xfc, 0x03, 0xfc, + 0x4c, 0xfb, 0xa1, 0xf9, 0x7e, 0xf7, 0x90, 0xf7, 0xf6, 0xf7, 0xf1, 0xf8, 0xb6, 0xf9, 0x9b, 0xfa, + 0xa8, 0xfc, 0x93, 0xff, 0x92, 0x03, 0x75, 0x05, 0x55, 0x04, 0x18, 0x02, 0xa1, 0xfe, 0x96, 0xfb, + 0x6c, 0xf9, 0x3f, 0xfa, 0x8f, 0xfa, 0xa4, 0xfb, 0x7a, 0xfe, 0xee, 0x00, 0x14, 0x01, 0x1f, 0xff, + 0xc2, 0xff, 0x63, 0xfe, 0x1e, 0xfd, 0x99, 0xfd, 0xe4, 0xfd, 0xb4, 0x00, 0x5b, 0x02, 0xad, 0x02, + 0x46, 0x04, 0x49, 0x04, 0x63, 0x02, 0x8b, 0x02, 0xda, 0x02, 0x22, 0x03, 0x21, 0x04, 0x39, 0x05, + 0xe6, 0x06, 0x74, 0x07, 0xc9, 0x0a, 0x6a, 0x0c, 0x6a, 0x0b, 0x2f, 0x08, 0x50, 0x04, 0x4e, 0x02, + 0xf8, 0xff, 0xf1, 0xfe, 0xc4, 0xfe, 0xae, 0xfd, 0x34, 0xfe, 0x5c, 0xfd, 0x64, 0xfc, 0xa4, 0xfa, + 0x89, 0xf8, 0xac, 0xf7, 0xad, 0xf5, 0x3c, 0xf5, 0x54, 0xf6, 0xff, 0xf8, 0x66, 0xfc, 0x88, 0xfd, + 0xb4, 0xfe, 0xaf, 0xff, 0x57, 0xfe, 0xc7, 0xfe, 0x66, 0x00, 0x83, 0x01, 0xee, 0x02, 0xd1, 0x01, + 0xd4, 0x02, 0x68, 0x04, 0x3f, 0x06, 0x21, 0x08, 0xe9, 0x07, 0x88, 0x07, 0x8f, 0x05, 0x76, 0x02, + 0x30, 0x01, 0x18, 0x00, 0x95, 0xff, 0x81, 0x00, 0xaa, 0x01, 0xa2, 0x00, 0xf5, 0xff, 0x1b, 0xff, + 0x64, 0xfe, 0x14, 0xfd, 0x69, 0xfc, 0x69, 0xfc, 0x62, 0xfd, 0x04, 0xfe, 0x8e, 0xfe, 0x5b, 0x00, + 0xd6, 0x01, 0xe6, 0x02, 0x31, 0x02, 0x0c, 0x01, 0x85, 0x01, 0xae, 0x01, 0xa3, 0x01, 0x6b, 0x02, + 0x14, 0x03, 0xe1, 0x04, 0x07, 0x07, 0x0a, 0x09, 0x4e, 0x08, 0x33, 0x07, 0x83, 0x04, 0x48, 0x00, + 0x4f, 0xfc, 0x1a, 0xf9, 0xb2, 0xf8, 0xd9, 0xf7, 0x9b, 0xf8, 0xd0, 0xf8, 0xba, 0xfa, 0xda, 0xfa, + 0x36, 0xf9, 0x32, 0xf9, 0x1d, 0xf8, 0xbe, 0xf7, 0x4b, 0xf9, 0x03, 0xfc, 0x5f, 0xff, 0xf4, 0x01, + 0xad, 0x04, 0x60, 0x06, 0xf1, 0x05, 0xf8, 0x05, 0x6e, 0x07, 0xd6, 0x07, 0xf8, 0x08, 0xc8, 0x09, + 0x72, 0x0c, 0x42, 0x0e, 0x56, 0x0f, 0xe7, 0x11, 0x28, 0x13, 0x99, 0x12, 0x20, 0x0e, 0x7f, 0x08, + 0x04, 0x04, 0xb0, 0xff, 0xbf, 0xfd, 0x99, 0xfb, 0x08, 0xfa, 0x04, 0xf9, 0x6b, 0xf7, 0x93, 0xf6, + 0x9b, 0xf3, 0xac, 0xf0, 0xa3, 0xef, 0xd3, 0xed, 0xd0, 0xed, 0xc9, 0xee, 0x9a, 0xf0, 0x0d, 0xf3, + 0x7e, 0xf5, 0xa6, 0xf7, 0x47, 0xf8, 0x98, 0xf8, 0x9b, 0xfa, 0xf9, 0xfa, 0x24, 0xfd, 0xf5, 0xfe, + 0xea, 0xff, 0x38, 0x02, 0xe2, 0x03, 0xb2, 0x06, 0x60, 0x09, 0xc7, 0x09, 0xa1, 0x08, 0x50, 0x05, + 0x60, 0x03, 0x4e, 0x01, 0xde, 0xff, 0x5b, 0xfe, 0xba, 0xfd, 0x95, 0xfd, 0x22, 0xfd, 0xf0, 0xfc, + 0xe3, 0xfb, 0xa4, 0xfa, 0x2b, 0xf8, 0xa0, 0xf6, 0xa5, 0xf5, 0xb9, 0xf5, 0x84, 0xf5, 0x41, 0xf6, + 0x66, 0xf8, 0xbd, 0xfa, 0x60, 0xfc, 0xb5, 0xfc, 0x0f, 0xfd, 0x96, 0xfd, 0xa5, 0xfe, 0x45, 0x00, + 0xe0, 0x00, 0x71, 0x02, 0xba, 0x04, 0x99, 0x07, 0x02, 0x0b, 0x83, 0x0d, 0x80, 0x0d, 0xd7, 0x0a, + 0xb4, 0x09, 0x68, 0x06, 0x83, 0x03, 0x11, 0x02, 0x4e, 0x01, 0x0b, 0x02, 0x27, 0x02, 0x68, 0x02, + 0xeb, 0xff, 0x5e, 0xfe, 0x36, 0xfd, 0x82, 0xfa, 0xe5, 0xf9, 0x97, 0xf9, 0x45, 0xfa, 0x91, 0xfc, + 0x4f, 0xfe, 0x0d, 0x00, 0xd8, 0x00, 0xf1, 0xff, 0xf0, 0x00, 0xe9, 0x01, 0x08, 0x02, 0xc1, 0x02, + 0x8c, 0x03, 0x12, 0x06, 0x9f, 0x07, 0x30, 0x0b, 0x6d, 0x0e, 0x0c, 0x11, 0x16, 0x12, 0xed, 0x0e, + 0x0b, 0x0d, 0xfd, 0x0a, 0x28, 0x08, 0x93, 0x06, 0x79, 0x04, 0x97, 0x03, 0x73, 0x02, 0xa5, 0x00, + 0x4f, 0xfe, 0xe7, 0xfb, 0xb0, 0xfa, 0x39, 0xf8, 0x62, 0xf6, 0x78, 0xf5, 0xa3, 0xf4, 0xb4, 0xf5, + 0x60, 0xf8, 0x10, 0xf9, 0xa9, 0xf9, 0x59, 0xf9, 0x93, 0xf8, 0x12, 0xf9, 0xa2, 0xf9, 0x7c, 0xfb, + 0x69, 0xfc, 0xe5, 0xfe, 0x69, 0x01, 0x9a, 0x03, 0x8e, 0x07, 0xda, 0x09, 0x13, 0x0b, 0x9a, 0x0b, + 0xff, 0x09, 0x00, 0x08, 0xd5, 0x05, 0xaf, 0x04, 0x97, 0x04, 0x6c, 0x05, 0x3f, 0x05, 0x2e, 0x05, + 0x38, 0x04, 0x36, 0x04, 0x17, 0x03, 0xe5, 0xff, 0xb1, 0xfc, 0x6b, 0xfb, 0xde, 0xfa, 0x3b, 0xf9, + 0x44, 0xf8, 0xc1, 0xf8, 0xcd, 0xf8, 0x93, 0xf9, 0xea, 0xf8, 0x0a, 0xf7, 0x9a, 0xf6, 0xbb, 0xf6, + 0xc4, 0xf6, 0xfb, 0xf7, 0xcc, 0xf9, 0x9e, 0xfb, 0x6e, 0xff, 0x21, 0x02, 0xa8, 0x03, 0x25, 0x04, + 0xbc, 0x02, 0x25, 0x00, 0x8e, 0xfc, 0x40, 0xfb, 0x44, 0xfa, 0x82, 0xfc, 0xc1, 0xfd, 0xbe, 0xfe, + 0x7c, 0x00, 0x4f, 0x00, 0xd6, 0xff, 0xae, 0xfe, 0x13, 0xfd, 0xb2, 0xfc, 0xfd, 0xfb, 0x10, 0xfd, + 0xcc, 0xfe, 0x1c, 0x00, 0x57, 0x02, 0xd4, 0x03, 0x91, 0x03, 0x6b, 0x03, 0x05, 0x02, 0x81, 0x02, + 0x80, 0x01, 0xcd, 0x01, 0x50, 0x03, 0xf3, 0x02, 0xf6, 0x04, 0x9b, 0x07, 0xc8, 0x09, 0xec, 0x09, + 0x57, 0x07, 0xc3, 0x03, 0xb6, 0xff, 0x35, 0xfe, 0x8e, 0xfc, 0x68, 0xfa, 0x56, 0xfa, 0x91, 0xf9, + 0xfd, 0xf8, 0x1a, 0xf8, 0x85, 0xf6, 0x8f, 0xf4, 0x2f, 0xf4, 0xa6, 0xf4, 0x01, 0xf4, 0xef, 0xf4, + 0xd9, 0xf6, 0x6d, 0xfa, 0xb8, 0xfc, 0xc8, 0xfe, 0x00, 0xff, 0x1a, 0x00, 0x69, 0x00, 0x9c, 0xff, + 0xa6, 0x00, 0x79, 0x00, 0x8d, 0x01, 0xf7, 0x02, 0xf5, 0x03, 0xe0, 0x06, 0x5d, 0x09, 0x39, 0x0b, + 0x4f, 0x0b, 0x53, 0x09, 0xb9, 0x06, 0x0f, 0x05, 0x9d, 0x03, 0xfa, 0x02, 0x8c, 0x02, 0xc6, 0x02, + 0x3c, 0x03, 0x13, 0x03, 0x19, 0x03, 0x56, 0x02, 0x1b, 0x02, 0xab, 0x01, 0x21, 0x01, 0x09, 0x01, + 0x8a, 0x01, 0x1d, 0x02, 0x2c, 0x03, 0x90, 0x04, 0xe4, 0x04, 0xc9, 0x04, 0x3d, 0x05, 0x40, 0x04, + 0xaf, 0x03, 0xd7, 0x03, 0x20, 0x03, 0x38, 0x03, 0xa7, 0x04, 0x8e, 0x06, 0xee, 0x06, 0xec, 0x07, + 0x2a, 0x06, 0xf5, 0x03, 0xc7, 0x00, 0x51, 0xfc, 0xbe, 0xf8, 0xf0, 0xf6, 0x89, 0xf7, 0x9b, 0xf7, + 0xbe, 0xf8, 0x66, 0xf9, 0xa4, 0xf8, 0x47, 0xf9, 0xed, 0xf8, 0xc1, 0xf8, 0xff, 0xf8, 0xd6, 0xf8, + 0xd9, 0xfa, 0x57, 0xfd, 0x36, 0xff, 0xd1, 0x02, 0xda, 0x04, 0x14, 0x06, 0x78, 0x07, 0x5b, 0x07, + 0xf4, 0x08, 0x47, 0x09, 0xc6, 0x0a, 0x37, 0x0c, 0x66, 0x0d, 0xc7, 0x0f, 0x45, 0x11, 0x9e, 0x13, + 0x9f, 0x12, 0xdd, 0x0e, 0xab, 0x0b, 0x0d, 0x07, 0x04, 0x03, 0x71, 0x00, 0x8b, 0xff, 0xf4, 0xfd, + 0x06, 0xfc, 0x58, 0xfb, 0x57, 0xf8, 0x14, 0xf6, 0x73, 0xf4, 0x70, 0xf2, 0x89, 0xf0, 0xdc, 0xef, + 0x25, 0xf0, 0x5d, 0xf2, 0x2d, 0xf5, 0x5f, 0xf6, 0xf4, 0xf7, 0x1c, 0xf9, 0xc9, 0xfa, 0x8a, 0xfa, + 0xab, 0xfb, 0x95, 0xfc, 0x0c, 0xfd, 0x39, 0xff, 0x0c, 0x00, 0x4a, 0x01, 0xa1, 0x03, 0xdc, 0x05, + 0xd8, 0x07, 0x5c, 0x07, 0x27, 0x05, 0x97, 0x02, 0x35, 0x00, 0xa2, 0xfd, 0x31, 0xfd, 0xff, 0xfb, + 0x61, 0xfb, 0x88, 0xfa, 0x41, 0xf9, 0x32, 0xf8, 0x78, 0xf7, 0x94, 0xf5, 0x6b, 0xf3, 0xb2, 0xf2, + 0x63, 0xf2, 0x54, 0xf2, 0x2a, 0xf3, 0x91, 0xf4, 0x77, 0xf6, 0x43, 0xf9, 0x96, 0xfa, 0xb4, 0xfa, + 0x49, 0xfb, 0xfa, 0xfb, 0x31, 0xfc, 0xfb, 0xfd, 0x40, 0x00, 0x68, 0x03, 0x14, 0x07, 0x33, 0x0b, + 0x55, 0x0e, 0x54, 0x0f, 0x83, 0x0f, 0xf5, 0x0b, 0x70, 0x08, 0x9e, 0x05, 0x13, 0x04, 0xf5, 0x03, + 0x19, 0x03, 0xc3, 0x02, 0x99, 0x02, 0x28, 0x02, 0x2b, 0x01, 0xd6, 0xfd, 0xd4, 0xfb, 0xda, 0xfa, + 0xe6, 0xf9, 0x69, 0xfa, 0xf7, 0xfa, 0x2d, 0xfc, 0x14, 0xff, 0xf6, 0xff, 0xfa, 0x00, 0xb9, 0xff, + 0x99, 0x00, 0x25, 0x02, 0x94, 0x01, 0x62, 0x03, 0x91, 0x05, 0x6c, 0x07, 0xa2, 0x09, 0x17, 0x0d, + 0x47, 0x11, 0x4b, 0x12, 0x79, 0x11, 0x11, 0x0e, 0x74, 0x09, 0xb0, 0x07, 0x6a, 0x05, 0x16, 0x04, + 0x3d, 0x02, 0xe0, 0x00, 0xcf, 0xff, 0xc8, 0xfd, 0xc7, 0xfb, 0xe7, 0xf9, 0x5e, 0xf8, 0x4b, 0xf6, + 0xe5, 0xf4, 0xd3, 0xf3, 0xc2, 0xf4, 0x08, 0xf5, 0xca, 0xf6, 0x04, 0xf8, 0x5e, 0xf8, 0x38, 0xf9, + 0xf7, 0xf9, 0x7e, 0xfb, 0x92, 0xfc, 0x1c, 0xfe, 0xd8, 0x00, 0x7d, 0x02, 0x46, 0x04, 0x0d, 0x07, + 0x88, 0x0a, 0x66, 0x0c, 0xec, 0x0c, 0x0f, 0x0c, 0x71, 0x0b, 0x20, 0x0a, 0xa4, 0x08, 0x51, 0x07, + 0xee, 0x06, 0x9c, 0x07, 0x27, 0x07, 0x6f, 0x06, 0xf9, 0x05, 0xb2, 0x04, 0xfa, 0x02, 0xaa, 0x00, + 0xca, 0xfd, 0xfd, 0xfb, 0xcb, 0xfa, 0x18, 0xfa, 0xe2, 0xf9, 0xaa, 0xfa, 0x24, 0xfb, 0x14, 0xfb, + 0xc5, 0xfa, 0x37, 0xfa, 0x72, 0xf9, 0xe4, 0xf8, 0x1d, 0xf9, 0xe1, 0xf9, 0xcf, 0xfb, 0x55, 0xfd, + 0x9a, 0x00, 0x89, 0x02, 0x13, 0x03, 0x12, 0x02, 0x76, 0xff, 0x5a, 0xfd, 0xbe, 0xfa, 0x77, 0xfa, + 0x56, 0xfb, 0xac, 0xfc, 0xeb, 0xfd, 0xec, 0xfd, 0x7e, 0xfe, 0x22, 0xfe, 0x5e, 0xfc, 0x8f, 0xfb, + 0x70, 0xfa, 0xf3, 0xf9, 0xbf, 0xfb, 0x96, 0xfc, 0x96, 0xfe, 0x48, 0x01, 0x2b, 0x02, 0xbb, 0x02, + 0x69, 0x01, 0x20, 0x01, 0x9a, 0xff, 0xb4, 0xfe, 0x96, 0xff, 0xd3, 0x00, 0x52, 0x02, 0x10, 0x03, + 0x32, 0x05, 0x94, 0x08, 0xf2, 0x08, 0xcf, 0x07, 0x52, 0x04, 0x37, 0x01, 0x06, 0xff, 0x91, 0xfd, + 0x3f, 0xfd, 0x1a, 0xfb, 0x61, 0xfa, 0x48, 0xf9, 0xde, 0xf8, 0xe4, 0xf8, 0xf8, 0xf8, 0x5c, 0xf8, + 0xd1, 0xf7, 0xc1, 0xf7, 0xd7, 0xf8, 0xbc, 0xfa, 0x16, 0xfc, 0xb5, 0xfe, 0x79, 0xff, 0x26, 0x00, + 0x6b, 0x00, 0x09, 0x00, 0x8a, 0xff, 0x50, 0xff, 0x3b, 0x00, 0xea, 0x00, 0xf2, 0x00, 0xe0, 0x01, + 0x16, 0x04, 0x95, 0x06, 0x90, 0x08, 0x93, 0x08, 0x6b, 0x07, 0xcc, 0x05, 0x78, 0x02, 0xdd, 0x00, + 0xa3, 0xff, 0x86, 0xff, 0xd1, 0xff, 0x66, 0x00, 0xfe, 0x00, 0x13, 0x02, 0xf2, 0x02, 0xf9, 0x01, + 0xb7, 0x00, 0x93, 0x00, 0x95, 0x00, 0xf8, 0xff, 0x04, 0xff, 0xaa, 0xff, 0x11, 0x02, 0xed, 0x03, + 0x7d, 0x04, 0xef, 0x03, 0x22, 0x03, 0xb2, 0x01, 0x60, 0x01, 0x25, 0x01, 0x80, 0x01, 0x49, 0x02, + 0xa9, 0x03, 0x89, 0x06, 0xec, 0x06, 0x2e, 0x06, 0xbd, 0x03, 0xe6, 0x00, 0x64, 0xfd, 0x87, 0xfa, + 0xf7, 0xf9, 0x74, 0xf9, 0x98, 0xf9, 0x90, 0xfa, 0xe6, 0xfa, 0xaa, 0xfc, 0x27, 0xfd, 0x41, 0xfc, + 0x68, 0xfb, 0x34, 0xfb, 0x55, 0xfb, 0xfa, 0xfb, 0x12, 0xfd, 0xa1, 0x00, 0x1c, 0x03, 0x42, 0x06, + 0x8f, 0x07, 0x8e, 0x07, 0xe1, 0x08, 0x1f, 0x09, 0x3a, 0x09, 0x8a, 0x0a, 0xd9, 0x0b, 0xac, 0x0c, + 0x4b, 0x0d, 0x43, 0x0f, 0xf9, 0x10, 0x40, 0x10, 0x7b, 0x0e, 0xc0, 0x0a, 0x70, 0x07, 0xfd, 0x03, + 0x05, 0x02, 0x19, 0x00, 0x45, 0xfd, 0x34, 0xfb, 0x2a, 0xf9, 0x99, 0xf6, 0xbb, 0xf4, 0x52, 0xf3, + 0x87, 0xf1, 0x4e, 0xf1, 0x61, 0xf0, 0x30, 0xf0, 0x68, 0xf0, 0xf3, 0xf2, 0x4b, 0xf5, 0x81, 0xf6, + 0x13, 0xf8, 0x16, 0xf9, 0xeb, 0xfa, 0x2a, 0xfc, 0xcb, 0xfb, 0x14, 0xfd, 0xe5, 0xfe, 0x49, 0xff, + 0x9b, 0x00, 0x54, 0x04, 0xf7, 0x06, 0xc1, 0x08, 0x53, 0x09, 0x63, 0x08, 0x0f, 0x06, 0xea, 0x03, + 0xb9, 0x01, 0xc4, 0xfe, 0xa9, 0xfd, 0xd3, 0xfc, 0x7a, 0xfb, 0xb8, 0xfa, 0xa0, 0xfa, 0x4c, 0xf9, + 0x9a, 0xf7, 0x98, 0xf6, 0x99, 0xf5, 0xd7, 0xf4, 0xe3, 0xf3, 0x78, 0xf4, 0xa3, 0xf6, 0xfb, 0xf8, + 0xaa, 0xfb, 0xb3, 0xfc, 0x79, 0xfc, 0x38, 0xfc, 0x74, 0xfb, 0xa9, 0xfc, 0x9e, 0xfe, 0x9a, 0x01, + 0xd8, 0x03, 0x24, 0x08, 0x28, 0x0c, 0x9e, 0x0d, 0x84, 0x0e, 0x2a, 0x0d, 0x01, 0x0a, 0xe8, 0x05, + 0xf1, 0x02, 0x19, 0x01, 0x36, 0x00, 0x3a, 0x00, 0xf8, 0xfe, 0x18, 0xfe, 0x7d, 0xfe, 0xd0, 0xfc, + 0x9f, 0xfa, 0xbf, 0xf9, 0xd1, 0xf7, 0xb9, 0xf7, 0x85, 0xf7, 0x58, 0xf8, 0x7b, 0xfa, 0x60, 0xfc, + 0xad, 0xfe, 0xf5, 0xfe, 0x81, 0x00, 0x66, 0x01, 0xa9, 0x01, 0xf0, 0x02, 0xc0, 0x04, 0x70, 0x07, + 0x94, 0x09, 0xdb, 0x0b, 0x01, 0x10, 0xed, 0x12, 0xea, 0x13, 0xae, 0x12, 0xd7, 0x0f, 0x9b, 0x0c, + 0xdc, 0x09, 0x72, 0x08, 0x78, 0x06, 0x24, 0x05, 0x2b, 0x03, 0x5f, 0x01, 0x13, 0x00, 0xeb, 0xfe, + 0xec, 0xfc, 0x20, 0xfc, 0x73, 0xfa, 0x73, 0xf8, 0x8a, 0xf7, 0xb9, 0xf6, 0x8f, 0xf7, 0xb7, 0xf8, + 0x9e, 0xfa, 0x87, 0xfb, 0xdd, 0xfc, 0xdc, 0xfe, 0x2f, 0xfe, 0x39, 0xff, 0x79, 0x01, 0xfa, 0x01, + 0x9a, 0x01, 0x28, 0x03, 0xce, 0x05, 0xb2, 0x08, 0x79, 0x0b, 0x5e, 0x0b, 0x63, 0x0b, 0x41, 0x09, + 0x7b, 0x07, 0x69, 0x05, 0xbf, 0x03, 0x30, 0x03, 0xc6, 0x02, 0x9b, 0x02, 0xaf, 0x02, 0x6b, 0x02, + 0x47, 0x01, 0x59, 0xff, 0x75, 0xfd, 0x83, 0xfc, 0x37, 0xfa, 0xf5, 0xf8, 0x79, 0xf8, 0xd1, 0xf8, + 0x25, 0xfa, 0x70, 0xfc, 0x89, 0xfc, 0x54, 0xfc, 0xa4, 0xfa, 0x2c, 0xfa, 0xdb, 0xf9, 0x79, 0xf9, + 0x4f, 0xfa, 0x79, 0xfb, 0xa1, 0xfe, 0x98, 0x01, 0x3e, 0x04, 0x92, 0x04, 0xea, 0x02, 0x73, 0x01, + 0x73, 0xfe, 0x25, 0xfc, 0xec, 0xfb, 0x62, 0xfc, 0xfe, 0xfc, 0xe2, 0xfc, 0x6c, 0xfd, 0x53, 0xfd, + 0x50, 0xfc, 0xcc, 0xfb, 0x49, 0xfb, 0x9e, 0xfb, 0x92, 0xfc, 0xbd, 0xfb, 0xaf, 0xfd, 0x2b, 0xff, + 0x02, 0x01, 0x2a, 0x02, 0xca, 0x01, 0xaf, 0x01, 0x7a, 0x01, 0x3b, 0x01, 0x4a, 0x01, 0xba, 0x01, + 0x4e, 0x02, 0xd8, 0x02, 0x1a, 0x04, 0x6b, 0x06, 0xb1, 0x07, 0x4d, 0x08, 0xc5, 0x06, 0x2e, 0x04, + 0x2b, 0x01, 0x44, 0xfe, 0xf7, 0xfb, 0x44, 0xf9, 0x4d, 0xf7, 0xf9, 0xf5, 0x3c, 0xf5, 0xb8, 0xf4, + 0x60, 0xf4, 0xfe, 0xf3, 0x52, 0xf5, 0x4a, 0xf5, 0xf7, 0xf5, 0x56, 0xf5, 0x49, 0xf5, 0xbb, 0xf7, + 0x65, 0xf9, 0x69, 0xfb, 0xd1, 0xfc, 0x68, 0xfd, 0xf3, 0xfe, 0xf6, 0xff, 0x55, 0x00, 0xef, 0x01, + 0x61, 0x03, 0x93, 0x03, 0x00, 0x05, 0xfd, 0x07, 0xa8, 0x0b, 0xdc, 0x0c, 0xb7, 0x0e, 0xe2, 0x0d, + 0xc9, 0x0a, 0x6c, 0x08, 0x74, 0x05, 0x71, 0x03, 0x37, 0x03, 0x21, 0x04, 0xf3, 0x03, 0x23, 0x04, + 0x74, 0x04, 0x41, 0x04, 0x0f, 0x03, 0x38, 0x01, 0x5e, 0xff, 0x86, 0xfd, 0x25, 0xfc, 0x70, 0xfc, + 0x98, 0xfc, 0x4e, 0xfe, 0x6e, 0x00, 0x08, 0x01, 0x41, 0x00, 0xcc, 0xfe, 0xfd, 0xfe, 0xcd, 0xfd, + 0x0d, 0xff, 0x0d, 0x00, 0xff, 0x00, 0x4e, 0x03, 0xa9, 0x05, 0x2c, 0x07, 0x56, 0x06, 0x44, 0x05, + 0x38, 0x03, 0x4e, 0xff, 0xce, 0xfc, 0x2f, 0xfb, 0x0c, 0xfb, 0x60, 0xfc, 0xb7, 0xfb, 0x17, 0xfc, + 0xa6, 0xfd, 0x3a, 0xfc, 0xcc, 0xfb, 0xde, 0xf9, 0x4e, 0xf9, 0xd1, 0xf8, 0x73, 0xf8, 0xb7, 0xfa, + 0x0f, 0xfc, 0x6e, 0xff, 0x21, 0x02, 0x9d, 0x02, 0x87, 0x03, 0x79, 0x04, 0xa9, 0x05, 0xe4, 0x06, + 0x42, 0x07, 0xb7, 0x08, 0x65, 0x09, 0xab, 0x0a, 0xf1, 0x0c, 0x0f, 0x0f, 0x5f, 0x10, 0xe1, 0x0f, + 0x3a, 0x0e, 0x85, 0x0a, 0x87, 0x08, 0xb3, 0x06, 0xb3, 0x02, 0x2f, 0xff, 0x58, 0xfd, 0xca, 0xfb, + 0x8f, 0xfb, 0xe6, 0xf9, 0x35, 0xf8, 0xd0, 0xf7, 0xf0, 0xf6, 0x13, 0xf6, 0x51, 0xf4, 0xab, 0xf3, + 0xe8, 0xf4, 0xcd, 0xf6, 0x6f, 0xf8, 0xf4, 0xf8, 0x3d, 0xfa, 0x1b, 0xfb, 0x4c, 0xfb, 0x2f, 0xfb, + 0xc3, 0xfc, 0xbb, 0xfc, 0xf4, 0xfc, 0xd4, 0xfd, 0x3a, 0x00, 0x56, 0x04, 0xed, 0x06, 0xa9, 0x08, + 0x31, 0x07, 0x18, 0x05, 0x24, 0x03, 0x43, 0x01, 0x59, 0xfe, 0xe3, 0xfc, 0x30, 0xfd, 0xbf, 0xfd, + 0x5c, 0xfd, 0x87, 0xfd, 0xa8, 0xfd, 0x0e, 0xfd, 0xc2, 0xfb, 0x5b, 0xfa, 0xfe, 0xf8, 0x77, 0xf8, + 0xcb, 0xf9, 0x7d, 0xfb, 0x9f, 0xfe, 0x2c, 0x00, 0x59, 0x00, 0x56, 0xff, 0xa5, 0xfe, 0xf8, 0xfe, + 0x47, 0xff, 0x07, 0x00, 0x21, 0x02, 0x99, 0x05, 0xd8, 0x07, 0xcf, 0x09, 0xc8, 0x0a, 0x76, 0x0a, + 0x12, 0x09, 0x56, 0x07, 0x9a, 0x03, 0xbc, 0xff, 0xba, 0xfe, 0x32, 0xff, 0x4f, 0xfe, 0x50, 0xfc, + 0x7a, 0xfd, 0xe6, 0xfc, 0x49, 0xfb, 0xd5, 0xfa, 0xb5, 0xf8, 0x28, 0xf8, 0x31, 0xf7, 0x7d, 0xf6, + 0x09, 0xf7, 0x8d, 0xf8, 0x96, 0xfb, 0x29, 0xfc, 0x96, 0xfc, 0x55, 0xfd, 0xe2, 0xfd, 0x44, 0xff, + 0x1f, 0x00, 0x98, 0x01, 0xf6, 0x01, 0xd1, 0x02, 0x5f, 0x05, 0xad, 0x06, 0x13, 0x09, 0xd7, 0x09, + 0x5a, 0x08, 0xc4, 0x05, 0x4e, 0x04, 0xd7, 0x02, 0xa4, 0x00, 0xbc, 0xfe, 0x0e, 0xfd, 0x5e, 0xfc, + 0x1c, 0xfc, 0xd8, 0xfc, 0xd1, 0xfb, 0xea, 0xfc, 0xd2, 0xfc, 0xa5, 0xfb, 0xbe, 0xfa, 0x70, 0xf8, + 0xed, 0xf9, 0xea, 0xfc, 0xfa, 0xfe, 0x3a, 0xff, 0x6f, 0x00, 0x5c, 0x04, 0x21, 0x06, 0xb5, 0x05, + 0x6d, 0x05, 0xe6, 0x07, 0x53, 0x08, 0xb9, 0x08, 0x59, 0x0a, 0x98, 0x0b, 0xf9, 0x0d, 0xe4, 0x10, + 0xe4, 0x10, 0x26, 0x10, 0xf1, 0x0e, 0x5b, 0x0c, 0xb9, 0x09, 0x56, 0x07, 0x07, 0x06, 0x5c, 0x04, + 0x6d, 0x03, 0x7e, 0x03, 0xc7, 0x02, 0xe7, 0x01, 0x14, 0x00, 0x51, 0xfc, 0x3e, 0xfa, 0xa3, 0xf8, + 0x31, 0xf8, 0xae, 0xf6, 0xcf, 0xf7, 0xe3, 0xfa, 0x5c, 0xfb, 0xe5, 0xfa, 0x2f, 0xf9, 0x1b, 0xf8, + 0x34, 0xf7, 0x0e, 0xf7, 0xbf, 0xf5, 0x6e, 0xf4, 0x0b, 0xf6, 0x69, 0xf8, 0x1a, 0xfc, 0x91, 0xfd, + 0x32, 0xff, 0xe2, 0x01, 0xc4, 0x01, 0xfe, 0xfe, 0x70, 0xfb, 0xc8, 0xfb, 0x10, 0xfc, 0xfd, 0xfa, + 0x8e, 0xf7, 0xb4, 0xf9, 0x31, 0xfb, 0xd7, 0xfc, 0x5f, 0xfe, 0x72, 0xfe, 0x22, 0x00, 0xf0, 0xff, + 0x21, 0x00, 0x57, 0xfd, 0x34, 0xfc, 0x24, 0xfe, 0x6e, 0xff, 0x2a, 0x01, 0xf4, 0x01, 0x0a, 0x06, + 0xfa, 0x04, 0x3b, 0x06, 0xdb, 0x04, 0x7f, 0x03, 0x8f, 0x01, 0x83, 0x01, 0x0d, 0x05, 0x6f, 0x05, + 0x01, 0x08, 0x0e, 0x0b, 0x05, 0x0c, 0xe0, 0x08, 0x93, 0x05, 0xe0, 0xfe, 0xc8, 0xfb, 0xc1, 0xf5, + 0xd8, 0xf5, 0x71, 0xf6, 0x6a, 0xf7, 0x4b, 0xfb, 0x1e, 0xfc, 0xa7, 0xfb, 0x20, 0xf7, 0xe2, 0xf3, + 0x29, 0xf0, 0xef, 0xed, 0xd6, 0xee, 0x42, 0xf3, 0x95, 0xf5, 0xa7, 0xf8, 0x47, 0xf8, 0xae, 0xfd, + 0x8e, 0xfe, 0x91, 0xfe, 0xdb, 0x01, 0x4f, 0x03, 0x21, 0x02, 0x75, 0x04, 0x9a, 0x0c, 0xb0, 0x0d, + 0x98, 0x11, 0x7c, 0x19, 0x18, 0x17, 0x5d, 0x1b, 0xff, 0x17, 0x0c, 0x18, 0x13, 0x19, 0xf5, 0x1a, + 0xfa, 0x18, 0x65, 0x19, 0x61, 0x1c, 0x8e, 0x1a, 0xa2, 0x19, 0x1c, 0x16, 0x88, 0x12, 0x98, 0x0e, + 0xba, 0x04, 0x89, 0x02, 0x18, 0xfb, 0x22, 0xf7, 0x28, 0xf9, 0x6b, 0xf4, 0xeb, 0xf2, 0x02, 0xf4, + 0x6b, 0xf4, 0x5c, 0xef, 0x47, 0xee, 0x6d, 0xea, 0x86, 0xe6, 0x9c, 0xe8, 0xcd, 0xe6, 0xcd, 0xe7, + 0xc7, 0xe4, 0x9c, 0xe5, 0x69, 0xe6, 0x1b, 0xe0, 0xa8, 0xe2, 0x94, 0xdf, 0x05, 0xe1, 0x2d, 0xe3, + 0xe3, 0xe7, 0x1f, 0xec, 0x25, 0xf4, 0x6e, 0xfd, 0xff, 0xfa, 0x60, 0xfb, 0x6b, 0x02, 0x95, 0x01, + 0x0d, 0xff, 0x57, 0xfd, 0x26, 0xfd, 0x32, 0xfd, 0xd5, 0xfc, 0x81, 0xf7, 0xd8, 0xf4, 0x9b, 0xf5, + 0x5e, 0xf5, 0xdf, 0xf5, 0x60, 0xf5, 0x9d, 0xfd, 0x6a, 0x00, 0xc4, 0xfe, 0xfe, 0x02, 0xc0, 0x00, + 0x2c, 0x03, 0xa4, 0x08, 0xf1, 0x07, 0xd4, 0x01, 0x8b, 0xfb, 0x7e, 0xfd, 0xf2, 0xfa, 0x07, 0xfa, + 0x12, 0xfb, 0xd2, 0x00, 0x7e, 0x01, 0xb5, 0x00, 0x3d, 0x04, 0x39, 0x09, 0xb6, 0x10, 0xd7, 0x18, + 0xd9, 0x14, 0x32, 0x19, 0x1d, 0x1a, 0x85, 0x1a, 0x8c, 0x1d, 0xdc, 0x20, 0xd5, 0x20, 0x44, 0x26, + 0xfb, 0x22, 0x7f, 0x1b, 0x8c, 0x18, 0xa3, 0x12, 0xee, 0x10, 0xb2, 0x0c, 0x1b, 0x0a, 0xd8, 0x12, + 0x12, 0x14, 0x54, 0x16, 0xea, 0x15, 0xc2, 0x0f, 0x44, 0x0c, 0xc7, 0x09, 0xda, 0x07, 0x94, 0x02, + 0xd8, 0x04, 0x71, 0xfe, 0xcf, 0xff, 0x12, 0xff, 0xcf, 0xfd, 0xa3, 0x02, 0x23, 0x02, 0xa7, 0xfd, + 0x38, 0x00, 0x11, 0xfd, 0x21, 0x05, 0x64, 0x07, 0x46, 0x0a, 0x96, 0x0e, 0x53, 0x11, 0x1e, 0x0d, + 0xf1, 0x0c, 0x5b, 0x0c, 0x17, 0x09, 0x40, 0x0e, 0xac, 0x06, 0x54, 0x02, 0x9b, 0xfe, 0x6d, 0xfa, + 0x3e, 0xfb, 0x2b, 0xf9, 0x0c, 0xf6, 0x53, 0xf8, 0x60, 0xf5, 0xfa, 0xf1, 0xc6, 0xf0, 0x34, 0xef, + 0xbb, 0xea, 0x20, 0xed, 0x1d, 0xeb, 0x63, 0xeb, 0x35, 0xec, 0x93, 0xec, 0x80, 0xec, 0x12, 0xed, + 0xa5, 0xea, 0x37, 0xee, 0x7e, 0xf0, 0x41, 0xf1, 0xd6, 0xf2, 0x80, 0xf7, 0x2d, 0xfe, 0xd9, 0x03, + 0xe0, 0x05, 0x22, 0x09, 0x4b, 0x0b, 0xca, 0x09, 0x6d, 0x0b, 0x8a, 0x08, 0x92, 0x0b, 0x80, 0x0c, + 0xa5, 0x0c, 0x70, 0x08, 0x0f, 0x05, 0xb7, 0x03, 0x2f, 0xfe, 0x80, 0xfd, 0x84, 0xfc, 0x84, 0xf9, + 0xe3, 0xfb, 0xfc, 0xfb, 0x3b, 0xfa, 0xf5, 0xf5, 0x87, 0xf8, 0xe6, 0xf9, 0x5d, 0xf6, 0xd3, 0xf5, + 0xbe, 0xf5, 0x98, 0xf1, 0x01, 0xf2, 0x59, 0xef, 0x92, 0xef, 0x97, 0xf2, 0x5a, 0xf9, 0xe4, 0xfa, + 0x56, 0xfe, 0x77, 0x00, 0x41, 0x06, 0x77, 0x09, 0xe6, 0x08, 0x89, 0x09, 0x29, 0x07, 0x74, 0x09, + 0xe0, 0x08, 0x50, 0x08, 0xd7, 0x08, 0x48, 0x08, 0x4e, 0x06, 0x42, 0x00, 0x08, 0xfa, 0x55, 0xeb, + 0xfe, 0xea, 0x03, 0xe6, 0xa5, 0xe0, 0x90, 0xe5, 0x31, 0xe5, 0x81, 0xe9, 0xed, 0xe5, 0x74, 0xe6, + 0x70, 0xe7, 0x4c, 0xe4, 0x2a, 0xe7, 0x00, 0xe6, 0xe6, 0xe2, 0x9e, 0xe8, 0xcc, 0xe8, 0x67, 0xea, + 0x31, 0xeb, 0xbd, 0xeb, 0x8d, 0xeb, 0xbe, 0xec, 0xc8, 0xeb, 0xf0, 0xed, 0x44, 0xf7, 0x90, 0xf9, + 0xea, 0xff, 0x9d, 0x01, 0x14, 0x07, 0x18, 0x08, 0xda, 0x08, 0x84, 0x0b, 0xd2, 0x09, 0xef, 0x04, + 0x5d, 0x00, 0xf9, 0xfd, 0xd9, 0xf6, 0xf2, 0xf5, 0xb1, 0xf6, 0xa4, 0xf3, 0xc5, 0xf2, 0xa2, 0xf3, + 0xc3, 0xfb, 0xca, 0xfc, 0x32, 0xff, 0x6d, 0xfe, 0x0c, 0x00, 0xa7, 0x03, 0xe8, 0x01, 0x60, 0x03, + 0x28, 0x07, 0xa6, 0x09, 0x4d, 0x0b, 0xfe, 0x0c, 0x19, 0x0f, 0xcd, 0x0f, 0xf7, 0x17, 0x16, 0x1a, + 0x64, 0x1a, 0xed, 0x20, 0x85, 0x2a, 0xf7, 0x2e, 0x0a, 0x31, 0x6b, 0x34, 0xe7, 0x32, 0x6d, 0x2e, + 0xd8, 0x27, 0x22, 0x25, 0xb2, 0x23, 0x5b, 0x23, 0x35, 0x20, 0xa5, 0x19, 0x71, 0x13, 0xdd, 0x0e, + 0xd8, 0x09, 0xa8, 0x03, 0x4a, 0xfe, 0x57, 0xfb, 0x0f, 0xff, 0x98, 0x04, 0x2b, 0xff, 0x5d, 0xff, + 0x7e, 0x06, 0xd3, 0x07, 0x44, 0x05, 0x14, 0x0a, 0xbb, 0x0d, 0xe7, 0x0a, 0x06, 0x0b, 0xe3, 0x0a, + 0xcf, 0x09, 0xe8, 0x0b, 0xa1, 0x0f, 0xa9, 0x0f, 0x1f, 0x10, 0xe5, 0x0f, 0x09, 0x14, 0x71, 0x15, + 0x59, 0x10, 0xe2, 0x11, 0xa6, 0x11, 0x27, 0x10, 0xfc, 0x0c, 0x74, 0x0d, 0x25, 0x12, 0x55, 0x0d, + 0x78, 0x08, 0xcd, 0x00, 0x30, 0xf8, 0x3e, 0xf1, 0xdd, 0xed, 0x3a, 0xeb, 0xee, 0xe8, 0x96, 0xe9, + 0xa5, 0xed, 0x01, 0xf1, 0x83, 0xf0, 0x1e, 0xee, 0x1e, 0xee, 0xcb, 0xf1, 0x47, 0xf0, 0xde, 0xf1, + 0xa0, 0xf2, 0xb7, 0xf4, 0x8d, 0xf2, 0x1e, 0xf4, 0x46, 0xf8, 0xab, 0xf9, 0x1a, 0xfa, 0x99, 0xf9, + 0xfa, 0xf8, 0x29, 0xf8, 0x41, 0xf8, 0x54, 0xfe, 0x09, 0x00, 0xb2, 0x00, 0x2a, 0x02, 0x6e, 0xfe, + 0x70, 0xfa, 0x45, 0xf8, 0xcd, 0xf9, 0xdc, 0xf6, 0x1d, 0xf4, 0x0d, 0xf3, 0xb5, 0xef, 0x66, 0xee, + 0x3f, 0xe9, 0x95, 0xe6, 0x52, 0xe3, 0xc5, 0xdd, 0x0d, 0xdf, 0xd1, 0xe3, 0xe5, 0xe3, 0xd9, 0xe3, + 0xc2, 0xe8, 0x7f, 0xec, 0x61, 0xf0, 0xf8, 0xf5, 0x64, 0xfc, 0xad, 0xf9, 0x67, 0xf8, 0xa3, 0xf7, + 0x60, 0xf3, 0xd0, 0xf1, 0x16, 0xf0, 0xb9, 0xed, 0x63, 0xeb, 0xaf, 0xee, 0x13, 0xf1, 0x4b, 0xf2, + 0x7d, 0xf7, 0xc9, 0xf7, 0x0f, 0xf8, 0xaf, 0xf5, 0xea, 0xf3, 0xc4, 0xf4, 0x9d, 0xf5, 0x25, 0xfc, + 0x53, 0xf8, 0xd2, 0xf4, 0x10, 0xf9, 0xb4, 0xf3, 0xca, 0xee, 0xc3, 0xef, 0x06, 0xf0, 0x82, 0xef, + 0xfb, 0xf2, 0x51, 0xfc, 0x7e, 0xfe, 0xcf, 0x00, 0x4d, 0x06, 0x73, 0x06, 0x01, 0x06, 0x8a, 0x03, + 0x67, 0x01, 0xf4, 0x01, 0x10, 0x01, 0xf0, 0xfe, 0x2f, 0xfa, 0x8c, 0x05, 0xc8, 0x0a, 0xf7, 0x0e, + 0x91, 0x14, 0x63, 0x13, 0xe7, 0x15, 0x67, 0x17, 0x4a, 0x1a, 0x07, 0x17, 0x7e, 0x18, 0x2a, 0x1f, + 0x73, 0x1d, 0x62, 0x1a, 0xff, 0x20, 0x33, 0x24, 0x18, 0x24, 0xa6, 0x24, 0x45, 0x20, 0x2e, 0x1a, + 0x7f, 0x17, 0x1e, 0x15, 0x63, 0x12, 0x24, 0x11, 0xb4, 0x15, 0x7d, 0x1a, 0x8f, 0x1a, 0x37, 0x1d, + 0x9e, 0x18, 0xbc, 0x18, 0xde, 0x19, 0x2f, 0x15, 0x6d, 0x17, 0x42, 0x19, 0xf4, 0x15, 0xf2, 0x14, + 0xbb, 0x12, 0xb3, 0x10, 0xe0, 0x11, 0x50, 0x14, 0xdd, 0x0d, 0x8d, 0x0e, 0x33, 0x0f, 0x3e, 0x12, + 0xcb, 0x16, 0x8d, 0x15, 0x62, 0x1a, 0x40, 0x15, 0xda, 0x14, 0x42, 0x11, 0x71, 0x10, 0x66, 0x12, + 0x49, 0x09, 0x44, 0x05, 0x87, 0xfe, 0xde, 0xfd, 0x0b, 0xf7, 0x13, 0xf4, 0x0f, 0xf4, 0xd7, 0xf0, + 0x1d, 0xf4, 0xdd, 0xf4, 0x9e, 0xf2, 0x5e, 0xf0, 0x98, 0xef, 0xe3, 0xea, 0x3a, 0xe5, 0x6c, 0xe0, + 0x46, 0xdf, 0x2d, 0xe0, 0xbe, 0xde, 0xe8, 0xdc, 0x17, 0xdb, 0xdf, 0xe0, 0x77, 0xe2, 0x86, 0xe4, + 0x06, 0xe5, 0x9f, 0xe9, 0x39, 0xf4, 0xb5, 0xf1, 0xd2, 0xf9, 0x51, 0xfd, 0xfd, 0xfe, 0xd3, 0x03, + 0x5a, 0x00, 0x89, 0xff, 0x55, 0xfe, 0xb1, 0x08, 0x34, 0x06, 0xad, 0x03, 0x21, 0x05, 0x2b, 0xfb, + 0x24, 0xfb, 0x64, 0xf1, 0xb0, 0xe4, 0x4c, 0xde, 0x6d, 0xe1, 0x3f, 0xe4, 0x42, 0xe1, 0x9c, 0xe5, + 0x1c, 0xea, 0xb9, 0xec, 0x5d, 0xeb, 0xd9, 0xec, 0x31, 0xed, 0x06, 0xf1, 0xc0, 0xf0, 0x87, 0xef, + 0xa6, 0xf0, 0x6f, 0xf2, 0xea, 0xf4, 0x4e, 0xf5, 0xac, 0xf3, 0xdb, 0xee, 0x12, 0xf3, 0xc1, 0xf3, + 0xb2, 0xf8, 0xaa, 0x01, 0x64, 0x05, 0x39, 0x0b, 0x9a, 0x0a, 0xed, 0x0d, 0x76, 0x0d, 0xf7, 0x0d, + 0x77, 0x09, 0x38, 0xff, 0x10, 0xfc, 0x90, 0xf6, 0x88, 0xf0, 0x96, 0xef, 0x5d, 0xec, 0xce, 0xee, + 0xd9, 0xf3, 0x50, 0xf2, 0x09, 0xf7, 0x96, 0xfb, 0x08, 0xf9, 0x4a, 0xfa, 0x2a, 0xfb, 0x36, 0xfd, + 0x06, 0xfb, 0x18, 0x00, 0xa4, 0xfe, 0xd4, 0xff, 0x8f, 0x03, 0x52, 0xff, 0x16, 0x03, 0x07, 0x03, + 0xea, 0x02, 0x19, 0x0a, 0x51, 0x0a, 0xd2, 0x0b, 0x17, 0x0e, 0x83, 0x12, 0xbf, 0x18, 0x3f, 0x18, + 0xba, 0x18, 0xae, 0x17, 0x0b, 0x14, 0x03, 0x0f, 0x99, 0x0c, 0xbd, 0x08, 0xf0, 0x04, 0x81, 0x02, + 0xa2, 0xfd, 0xdb, 0xfa, 0xd6, 0xf3, 0x62, 0xf0, 0x29, 0xee, 0x49, 0xed, 0x86, 0xea, 0xdf, 0xea, + 0x62, 0xed, 0xa5, 0xef, 0x38, 0xf8, 0x55, 0xfc, 0x6e, 0x02, 0x3d, 0x07, 0xa8, 0x04, 0x30, 0x05, + 0x1f, 0x04, 0xeb, 0x03, 0x41, 0x03, 0x31, 0x06, 0x89, 0x09, 0x0e, 0x0a, 0x63, 0x0f, 0x3b, 0x13, + 0x04, 0x18, 0xf6, 0x1b, 0x33, 0x1b, 0x5e, 0x1d, 0x47, 0x1b, 0xca, 0x19, 0xf5, 0x18, 0x85, 0x1d, + 0x31, 0x1e, 0x7c, 0x1e, 0x33, 0x1f, 0x8d, 0x18, 0x54, 0x18, 0x23, 0x11, 0xa5, 0x08, 0x30, 0x09, + 0x22, 0x0a, 0xfb, 0x0c, 0xb4, 0x0e, 0xae, 0x10, 0x2d, 0x12, 0xa2, 0x0e, 0x1d, 0x0d, 0xc5, 0x10, + 0x55, 0x0b, 0x33, 0x0f, 0xce, 0x0c, 0xa2, 0x0d, 0xe7, 0x0b, 0xcd, 0x09, 0xb5, 0x0d, 0x12, 0x0c, + 0xcd, 0x10, 0xca, 0x0c, 0x9e, 0x0c, 0x95, 0x0e, 0x59, 0x0b, 0xc6, 0x0f, 0x2e, 0x0e, 0x04, 0x0e, + 0xa4, 0x0d, 0xe8, 0x0b, 0x40, 0x0d, 0xd3, 0x0d, 0x97, 0x10, 0x65, 0x11, 0xec, 0x0c, 0x02, 0x0d, + 0xec, 0x09, 0xef, 0x02, 0xfc, 0xf9, 0x45, 0xf0, 0xfe, 0xf0, 0x56, 0xef, 0xa8, 0xee, 0xe9, 0xed, + 0x7f, 0xed, 0xb0, 0xf3, 0x8f, 0xf4, 0xe2, 0xf6, 0x4c, 0xfa, 0x09, 0xfd, 0x13, 0xfc, 0xf8, 0xfc, + 0xed, 0xfe, 0x6a, 0xfc, 0x99, 0xff, 0x5d, 0xfd, 0xb4, 0xf4, 0x11, 0xf6, 0xae, 0xf0, 0x50, 0xf1, + 0xa4, 0xef, 0x7a, 0xf0, 0xcd, 0xf2, 0x92, 0xf0, 0xee, 0xf2, 0x4a, 0xed, 0xda, 0xe8, 0x96, 0xe7, + 0x86, 0xe9, 0x1f, 0xe8, 0x9a, 0xdf, 0x07, 0xe1, 0x40, 0xe1, 0x63, 0xdd, 0x16, 0xd8, 0xd9, 0xd2, + 0x76, 0xd4, 0xfa, 0xd4, 0x9b, 0xd6, 0xce, 0xda, 0x4c, 0xdd, 0xc6, 0xe1, 0xc5, 0xe3, 0xcb, 0xe5, + 0xf5, 0xe8, 0x3c, 0xe8, 0xc2, 0xe7, 0xbe, 0xe5, 0x43, 0xe4, 0x5b, 0xe5, 0x88, 0xe9, 0xa3, 0xed, + 0x25, 0xf1, 0x94, 0xf3, 0x3b, 0xfa, 0x4f, 0xfa, 0xc7, 0xfa, 0xa6, 0xfe, 0xb1, 0xfd, 0xa6, 0x00, + 0x38, 0xff, 0x4b, 0x01, 0x7b, 0x04, 0x50, 0x08, 0xab, 0x09, 0x96, 0x0c, 0x14, 0x0a, 0x5c, 0x06, + 0x9e, 0x08, 0x37, 0x01, 0x36, 0xfd, 0x25, 0xfb, 0xde, 0xfa, 0x3d, 0xf9, 0xb6, 0xfe, 0x31, 0x01, + 0x68, 0x04, 0xb1, 0x08, 0x89, 0x03, 0x5a, 0x02, 0x73, 0x01, 0x83, 0x05, 0x7b, 0x06, 0xe8, 0x00, + 0x1f, 0xff, 0x9b, 0xfd, 0x06, 0x00, 0x6e, 0xff, 0xaf, 0xfe, 0x4a, 0x01, 0xf8, 0x02, 0xbe, 0xfe, + 0xb3, 0x00, 0xde, 0x03, 0x10, 0x04, 0x69, 0x08, 0xb8, 0x0c, 0x0d, 0x0b, 0x7e, 0x0b, 0xc4, 0x0f, + 0x6c, 0x11, 0x52, 0x10, 0x8d, 0x0d, 0x10, 0x10, 0xcf, 0x0e, 0x0f, 0x0f, 0x4a, 0x0b, 0x1b, 0x0a, + 0x77, 0x0f, 0x8a, 0x13, 0x0c, 0x15, 0xe4, 0x18, 0x01, 0x14, 0xa3, 0x11, 0x4e, 0x0e, 0xb7, 0x09, + 0x98, 0x0b, 0x61, 0x01, 0xb3, 0x02, 0xb5, 0xfe, 0xa8, 0x00, 0x43, 0xfc, 0x97, 0xfe, 0x7c, 0xfc, + 0x06, 0xf8, 0x41, 0xfc, 0x6e, 0xfa, 0x23, 0xf8, 0x0c, 0x01, 0xda, 0x04, 0x13, 0x0d, 0xbc, 0x10, + 0x9b, 0x12, 0x74, 0x14, 0x67, 0x15, 0xb7, 0x19, 0x4a, 0x17, 0x02, 0x19, 0x94, 0x1c, 0x4f, 0x21, + 0x79, 0x23, 0x1e, 0x22, 0x60, 0x1d, 0xee, 0x1a, 0x90, 0x14, 0xe3, 0x10, 0x67, 0x0f, 0xaf, 0x12, + 0x1c, 0x14, 0xe5, 0x13, 0x04, 0x15, 0x4d, 0x16, 0x57, 0x19, 0xb5, 0x1a, 0x30, 0x1b, 0xba, 0x13, + 0xa6, 0x10, 0x10, 0x0e, 0xa3, 0x0b, 0x4a, 0x09, 0xcc, 0x07, 0xec, 0x01, 0xcd, 0x07, 0x1a, 0x02, + 0x5f, 0x02, 0xa7, 0x04, 0xc4, 0x04, 0x80, 0x0b, 0xa6, 0x09, 0xb3, 0x0a, 0xaa, 0x04, 0xcd, 0x06, + 0x61, 0x06, 0x99, 0x08, 0xe6, 0x03, 0x84, 0xfa, 0x3d, 0xfa, 0x28, 0xf5, 0x8b, 0xee, 0x10, 0xef, + 0xe6, 0xe9, 0xf6, 0xe8, 0x10, 0xeb, 0xd7, 0xe8, 0x5b, 0xeb, 0x03, 0xec, 0x23, 0xf0, 0x2e, 0xf1, + 0x14, 0xf1, 0xb6, 0xf1, 0x7b, 0xf0, 0x5d, 0xee, 0x57, 0xee, 0x04, 0xea, 0x85, 0xe9, 0x99, 0xe8, + 0xff, 0xeb, 0xdb, 0xeb, 0x17, 0xea, 0x12, 0xea, 0xa8, 0xeb, 0xeb, 0xf0, 0x1b, 0xf2, 0x91, 0xf5, + 0x32, 0xf7, 0x81, 0xf9, 0xa5, 0xfc, 0xe7, 0xfe, 0x6c, 0xfc, 0xbe, 0xf7, 0x32, 0xf6, 0x5e, 0xf3, + 0xe2, 0xf0, 0x93, 0xed, 0x17, 0xe7, 0x8f, 0xe5, 0xa6, 0xe2, 0xe1, 0xde, 0x32, 0xdb, 0x4d, 0xde, + 0xd6, 0xe0, 0x96, 0xe3, 0x1d, 0xe9, 0x03, 0xe9, 0x16, 0xf1, 0x1e, 0xf5, 0x60, 0xfc, 0x38, 0xfc, + 0x5e, 0xf9, 0x4e, 0xf8, 0x6e, 0xf8, 0x89, 0xf4, 0xf1, 0xf1, 0xfe, 0xf3, 0x65, 0xf4, 0xd8, 0xf8, + 0xa7, 0xfb, 0x38, 0x00, 0xfa, 0x04, 0x08, 0x0b, 0x18, 0x08, 0xe6, 0x04, 0xbf, 0xff, 0xd7, 0x02, + 0xdd, 0x01, 0x29, 0x04, 0x5d, 0x03, 0x3d, 0x01, 0xae, 0x05, 0x54, 0x05, 0x6c, 0x02, 0x17, 0xfc, + 0x86, 0xf8, 0x97, 0xf8, 0x22, 0xfc, 0x44, 0xfa, 0x48, 0x00, 0x26, 0x00, 0x7a, 0x03, 0xfb, 0x03, + 0x75, 0x07, 0x41, 0x09, 0x47, 0x07, 0x0b, 0x07, 0xf8, 0x03, 0x15, 0x03, 0xe4, 0x00, 0xcc, 0xfd, + 0xc4, 0x01, 0x13, 0x00, 0x91, 0x03, 0x73, 0x03, 0xa7, 0x00, 0x05, 0x03, 0xac, 0xfe, 0x4e, 0x05, + 0x0d, 0x02, 0xfe, 0x00, 0x7b, 0x01, 0xdf, 0x03, 0x53, 0x07, 0xd1, 0x08, 0x5e, 0x0a, 0x46, 0x0e, + 0xd2, 0x10, 0xee, 0x0b, 0x6e, 0x07, 0x06, 0x06, 0xb7, 0x02, 0xd0, 0xfc, 0x79, 0xfe, 0x61, 0xfc, + 0x6c, 0x04, 0x4b, 0x09, 0xd8, 0x0c, 0x7f, 0x0e, 0x78, 0x14, 0x7d, 0x18, 0x32, 0x1c, 0x90, 0x1b, + 0xe0, 0x19, 0x68, 0x19, 0xd6, 0x1c, 0x17, 0x1c, 0x40, 0x1c, 0xc4, 0x1b, 0x3c, 0x17, 0xf1, 0x18, + 0x7b, 0x10, 0x52, 0x0c, 0xe1, 0x08, 0xbb, 0x0d, 0x41, 0x0d, 0xf3, 0x09, 0x70, 0x09, 0xd4, 0x04, + 0xe6, 0x04, 0x91, 0x02, 0xb2, 0x01, 0x5d, 0xff, 0xc4, 0xfd, 0x48, 0xfc, 0x41, 0xf8, 0xfe, 0xf3, + 0x4b, 0xf5, 0x04, 0xf2, 0xec, 0xf3, 0x38, 0xf4, 0x28, 0xf5, 0x86, 0xf8, 0xb2, 0xf9, 0x66, 0xfb, + 0xfc, 0x00, 0x14, 0x03, 0xc2, 0x07, 0x09, 0x09, 0xe5, 0x08, 0x96, 0x08, 0xbc, 0x07, 0x25, 0x04, + 0x19, 0x05, 0xed, 0x08, 0x3a, 0x04, 0xae, 0x03, 0xa6, 0x04, 0x65, 0x03, 0x4b, 0x05, 0xe6, 0x08, + 0xf3, 0x04, 0xbc, 0x03, 0xad, 0x04, 0xa6, 0x05, 0xa3, 0x0a, 0xa7, 0x0d, 0xba, 0x0c, 0xb1, 0x0b, + 0x8b, 0x0c, 0xc8, 0x09, 0x61, 0x04, 0xc4, 0xff, 0xd7, 0x01, 0x24, 0xfa, 0x36, 0xfb, 0x83, 0xf9, + 0xe3, 0xfc, 0x39, 0xff, 0x0a, 0xff, 0xb2, 0x03, 0xd9, 0x05, 0xf2, 0x08, 0x1e, 0x07, 0x45, 0x06, + 0x43, 0x02, 0x6d, 0xfd, 0xda, 0xf9, 0xf6, 0xf4, 0xba, 0xf1, 0x4e, 0xf2, 0x38, 0xee, 0xee, 0xee, + 0x3a, 0xee, 0x19, 0xec, 0xf9, 0xea, 0x3e, 0xed, 0x90, 0xec, 0x5a, 0xec, 0xa7, 0xee, 0x3f, 0xec, + 0x04, 0xf1, 0x09, 0xf1, 0x15, 0xf2, 0x84, 0xef, 0x61, 0xf1, 0xeb, 0xf1, 0x08, 0xf3, 0xb1, 0xf2, + 0x6f, 0xf1, 0xb1, 0xf0, 0x54, 0xf7, 0x92, 0xf8, 0x62, 0xfa, 0x84, 0x00, 0x7d, 0xfe, 0x96, 0xfe, + 0xce, 0xfa, 0xf4, 0xf8, 0xeb, 0xf6, 0x38, 0xf5, 0xb9, 0xf5, 0x6a, 0xf3, 0x67, 0xf5, 0xb6, 0xf4, + 0x33, 0xee, 0xf9, 0xee, 0xb9, 0xe7, 0x83, 0xe7, 0x0c, 0xe6, 0xce, 0xe6, 0x87, 0xe9, 0xd4, 0xeb, + 0x8f, 0xf2, 0x92, 0xf6, 0x65, 0xfa, 0x73, 0xf7, 0xcc, 0xfa, 0x09, 0xff, 0xf9, 0x00, 0xe2, 0xff, + 0x6f, 0x05, 0xac, 0x05, 0xa8, 0x06, 0x60, 0x05, 0x37, 0x07, 0x2a, 0x04, 0x92, 0x03, 0xe1, 0x03, + 0x64, 0x00, 0xb6, 0x03, 0x3f, 0x04, 0xdd, 0x06, 0x78, 0x07, 0xb4, 0x0b, 0xed, 0x0e, 0x6a, 0x13, + 0xa0, 0x13, 0xe7, 0x0f, 0xae, 0x0a, 0x87, 0x08, 0x9f, 0x00, 0xb4, 0x02, 0x22, 0xff, 0xcd, 0xff, + 0x02, 0x02, 0x9b, 0xfe, 0xeb, 0x03, 0x41, 0x03, 0xe7, 0x03, 0x97, 0x05, 0x75, 0x06, 0xcc, 0x06, + 0x85, 0x05, 0xcd, 0x04, 0x93, 0x04, 0x5f, 0x04, 0x17, 0x07, 0xd1, 0x04, 0x3c, 0x06, 0x02, 0x02, + 0x8b, 0xff, 0xfe, 0xfb, 0xc0, 0xf9, 0x52, 0xf9, 0x99, 0xf4, 0x81, 0xf7, 0x64, 0xfa, 0x2b, 0xfb, + 0x7d, 0xfd, 0xb3, 0x03, 0xe9, 0x06, 0xc3, 0x0a, 0xf5, 0x07, 0xfc, 0x04, 0xdf, 0x04, 0xd6, 0x06, + 0xde, 0x04, 0x88, 0x06, 0x06, 0x07, 0x07, 0x04, 0x14, 0x01, 0x46, 0x01, 0x87, 0x00, 0x41, 0x04, + 0xe2, 0x08, 0x58, 0x0a, 0x99, 0x0b, 0xbe, 0x0b, 0x0f, 0x10, 0xd6, 0x12, 0xbf, 0x16, 0x0f, 0x15, + 0xc2, 0x14, 0x11, 0x10, 0x3a, 0x0d, 0x81, 0x07, 0x72, 0xff, 0xff, 0xfd, 0xb6, 0xf8, 0x17, 0xf9, + 0x84, 0xf7, 0xcf, 0xf8, 0xe5, 0xf7, 0x7b, 0xfd, 0xa8, 0x00, 0xd2, 0x02, 0xe2, 0x06, 0xe6, 0x07, + 0xf0, 0x0a, 0x3a, 0x0b, 0xc8, 0x09, 0x26, 0x09, 0x3a, 0x02, 0xa5, 0xff, 0x2a, 0xff, 0x33, 0xfb, + 0x74, 0xfe, 0xc6, 0x01, 0x9e, 0x04, 0x49, 0x06, 0x91, 0x08, 0xf4, 0x07, 0x4d, 0x09, 0x60, 0x09, + 0x4d, 0x08, 0xb9, 0x05, 0xe0, 0x05, 0x3e, 0x0a, 0xc8, 0x0a, 0x2b, 0x07, 0xac, 0x06, 0xb2, 0x06, + 0x94, 0x04, 0xb5, 0x04, 0x31, 0xfe, 0xed, 0xff, 0xc3, 0xfa, 0x0b, 0xfa, 0xe8, 0xfb, 0x11, 0xfc, + 0x7d, 0xfd, 0xfe, 0xff, 0xbb, 0x04, 0x48, 0x05, 0xab, 0x02, 0x34, 0x03, 0x74, 0xff, 0x44, 0x00, + 0x34, 0xfe, 0xa8, 0xfa, 0xfd, 0xfb, 0x9b, 0xf6, 0x30, 0xf9, 0x24, 0xf5, 0x78, 0xf7, 0xc7, 0xf5, + 0x99, 0xf2, 0xcb, 0xf4, 0x40, 0xf3, 0x7d, 0xf2, 0x1e, 0xf4, 0x7d, 0xf3, 0x7c, 0xf8, 0x2f, 0xfb, + 0x53, 0xfa, 0xea, 0xfd, 0x9a, 0xfe, 0x39, 0xfe, 0xbc, 0xf7, 0x57, 0xf5, 0x22, 0xef, 0x19, 0xef, + 0x2e, 0xee, 0x57, 0xf1, 0x8f, 0xf4, 0x01, 0xfc, 0xca, 0xfe, 0x40, 0x00, 0x47, 0x03, 0xe6, 0x04, + 0x93, 0x08, 0xda, 0x0c, 0x88, 0x0a, 0x21, 0x06, 0x7c, 0x0a, 0x74, 0x09, 0xe6, 0x0c, 0x1c, 0x09, + 0x59, 0x06, 0x63, 0x04, 0x8d, 0x00, 0x36, 0x00, 0xff, 0xfb, 0x04, 0xf8, 0xeb, 0xf6, 0xc9, 0xf4, + 0x46, 0xf5, 0x64, 0xf0, 0x66, 0xf1, 0xdd, 0xf2, 0x18, 0xf2, 0x26, 0xf1, 0x20, 0xee, 0xea, 0xef, + 0x92, 0xe9, 0xf8, 0xe9, 0xae, 0xe7, 0xf8, 0xea, 0xdc, 0xed, 0x2f, 0xeb, 0x70, 0xea, 0x82, 0xef, + 0x41, 0xec, 0x4d, 0xee, 0x97, 0xf6, 0x87, 0xf9, 0x26, 0xfe, 0x16, 0x04, 0xe4, 0x06, 0x3f, 0x08, + 0x20, 0x0b, 0xbf, 0x08, 0xb1, 0x09, 0x92, 0x07, 0x32, 0x06, 0xa9, 0x01, 0xca, 0xff, 0x49, 0xfe, + 0x1e, 0xfd, 0x43, 0x00, 0x73, 0x03, 0x73, 0x02, 0xf6, 0x04, 0xb4, 0x04, 0x91, 0x05, 0x8b, 0x0a, + 0xcc, 0x09, 0x24, 0x0b, 0x60, 0x0a, 0x9c, 0x0c, 0x54, 0x06, 0xca, 0x05, 0xf7, 0x04, 0x74, 0x05, + 0xbc, 0x06, 0xc2, 0x04, 0xf6, 0x04, 0x74, 0x07, 0x42, 0x0c, 0xa6, 0x0f, 0x81, 0x13, 0xf5, 0x15, + 0x1e, 0x15, 0x2a, 0x14, 0xa9, 0x11, 0xb1, 0x0d, 0x56, 0x0e, 0xb0, 0x08, 0xa6, 0x04, 0x3a, 0x03, + 0xe8, 0xfe, 0xfa, 0xfc, 0x43, 0x01, 0x91, 0x02, 0x50, 0x00, 0xc2, 0x01, 0x28, 0xff, 0xd7, 0xfe, + 0x81, 0xff, 0x5c, 0xfb, 0x9e, 0xf9, 0xa9, 0xfd, 0x8e, 0x00, 0x01, 0x02, 0x93, 0x00, 0x91, 0x03, + 0xb1, 0x03, 0xce, 0x05, 0x82, 0x07, 0x45, 0x05, 0xba, 0x08, 0x40, 0x0a, 0x3c, 0x0a, 0x06, 0x0e, + 0xe3, 0x0e, 0xa7, 0x0b, 0xec, 0x0a, 0x6c, 0x09, 0x0e, 0x0a, 0xd1, 0x08, 0xb4, 0x0a, 0x9d, 0x05, + 0xe4, 0x07, 0x00, 0x04, 0x8d, 0x00, 0x81, 0x00, 0x47, 0xf9, 0x34, 0xf8, 0x53, 0xf4, 0xa2, 0xf6, + 0xdb, 0xf6, 0x26, 0xf6, 0x03, 0xf9, 0x2a, 0xfb, 0xf8, 0xfe, 0x3f, 0x01, 0x74, 0xff, 0x27, 0x04, + 0x85, 0x04, 0xff, 0x03, 0x72, 0x02, 0xc3, 0x02, 0x49, 0x00, 0x8c, 0x00, 0xe1, 0x02, 0xe1, 0xff, + 0x80, 0x02, 0xa1, 0xff, 0x9e, 0xfd, 0xe5, 0xfd, 0x52, 0xff, 0x80, 0xff, 0x32, 0x03, 0xf4, 0x01, + 0xcc, 0x04, 0xdb, 0x04, 0xe5, 0x07, 0xfb, 0x03, 0x84, 0x01, 0x43, 0xff, 0x0a, 0xf9, 0x1b, 0xf8, + 0x15, 0xf5, 0xa0, 0xf6, 0xbe, 0xf8, 0x07, 0xfb, 0x43, 0xfd, 0x5c, 0xfd, 0x82, 0xfe, 0xc8, 0xfe, + 0x0b, 0xff, 0x3b, 0x00, 0xcc, 0xf9, 0xbd, 0xf9, 0xa1, 0xf7, 0xe0, 0xfa, 0xb3, 0xfd, 0x12, 0x00, + 0x6d, 0x03, 0xfd, 0x00, 0x9f, 0xfc, 0x28, 0xf8, 0x20, 0xf8, 0x2e, 0xf7, 0xd9, 0xf2, 0xbc, 0xee, + 0x2b, 0xf3, 0x2e, 0xf2, 0xf2, 0xf7, 0x1e, 0xfa, 0x22, 0xfc, 0x51, 0xfc, 0xb8, 0xfe, 0xb7, 0xfd, + 0xac, 0xfc, 0x05, 0xfc, 0xa3, 0xfa, 0x91, 0xf9, 0x96, 0xf6, 0xbf, 0xf4, 0x80, 0xf4, 0xe8, 0xf4, + 0x60, 0xf4, 0x26, 0xf6, 0xbd, 0xf6, 0x83, 0xfb, 0x4c, 0xfc, 0xd0, 0xfc, 0x06, 0xfe, 0x85, 0x03, + 0x5e, 0x08, 0xf2, 0x0b, 0xd9, 0x0a, 0x98, 0x05, 0x10, 0x02, 0x6e, 0xfa, 0x11, 0xf7, 0xd3, 0xf0, + 0x35, 0xee, 0xe7, 0xef, 0x9b, 0xf0, 0x99, 0xf1, 0xcf, 0xf3, 0x34, 0xf6, 0xd0, 0xfc, 0x08, 0xfe, + 0xa1, 0x00, 0x14, 0x00, 0x17, 0x02, 0x28, 0x01, 0x9b, 0xff, 0xec, 0xff, 0xd4, 0xfc, 0xa4, 0xfb, + 0xb0, 0xf9, 0x91, 0xfb, 0x89, 0xfb, 0x39, 0xfe, 0xa7, 0x01, 0xae, 0x02, 0xbf, 0x05, 0x36, 0x07, + 0xa9, 0x08, 0x2d, 0x0a, 0x1d, 0x0a, 0x6d, 0x0b, 0x78, 0x0b, 0xa2, 0x0d, 0xe4, 0x0d, 0x09, 0x0b, + 0x74, 0x0c, 0xcb, 0x09, 0x14, 0x0a, 0x67, 0x09, 0x0d, 0x07, 0x00, 0x04, 0x19, 0x00, 0xf9, 0xfc, + 0x19, 0xfd, 0x48, 0xfe, 0x56, 0x02, 0xbf, 0x00, 0x09, 0x05, 0x79, 0x06, 0xa2, 0x04, 0xad, 0x06, + 0x89, 0x02, 0xc7, 0x06, 0xe3, 0x05, 0x8d, 0x04, 0xe8, 0xff, 0x38, 0xfa, 0x8a, 0xfa, 0xb2, 0xfa, + 0x02, 0xfc, 0x07, 0xfd, 0x98, 0xfb, 0x0e, 0xfe, 0xbf, 0x00, 0xec, 0x01, 0x39, 0x03, 0xd5, 0x02, + 0xb9, 0x06, 0x81, 0x08, 0x9f, 0x0a, 0x5c, 0x09, 0x9b, 0x0a, 0x24, 0x06, 0x10, 0x01, 0x81, 0xfe, + 0xea, 0xfa, 0x6c, 0xfa, 0x6d, 0xfd, 0xc0, 0xfd, 0xb6, 0x00, 0xd2, 0x03, 0x97, 0x07, 0x37, 0x0b, + 0x2d, 0x0c, 0xc2, 0x0d, 0xd5, 0x0c, 0x89, 0x13, 0xad, 0x12, 0xda, 0x13, 0xba, 0x12, 0xc7, 0x11, + 0xf7, 0x10, 0x7a, 0x0f, 0x8c, 0x10, 0x5c, 0x11, 0x0c, 0x0f, 0x56, 0x0e, 0xff, 0x06, 0x97, 0x04, + 0xfd, 0x00, 0xca, 0xfc, 0xee, 0xfe, 0x9e, 0xfb, 0xb0, 0xfb, 0x0b, 0xfa, 0x9b, 0xfa, 0xc6, 0xf6, + 0x1e, 0xf6, 0x78, 0xf1, 0x19, 0xef, 0x9b, 0xee, 0xac, 0xed, 0x53, 0xed, 0x8f, 0xee, 0xce, 0xeb, + 0xcd, 0xe9, 0x64, 0xeb, 0x80, 0xeb, 0xbb, 0xeb, 0x7a, 0xee, 0xdc, 0xf4, 0xec, 0xf6, 0xc5, 0xfd, + 0x4f, 0x00, 0xdc, 0x06, 0xbe, 0x09, 0x25, 0x0c, 0xe1, 0x07, 0x48, 0x06, 0x47, 0x01, 0xa7, 0xfc, + 0x5c, 0xf9, 0x41, 0xf7, 0x39, 0xf5, 0x6c, 0xf8, 0x1c, 0xff, 0xe1, 0xfe, 0xec, 0xff, 0xba, 0xfd, + 0x0f, 0x00, 0xd4, 0x01, 0x00, 0x05, 0x47, 0x03, 0xb8, 0x01, 0x69, 0x01, 0xc7, 0xff, 0x5d, 0xfd, + 0xda, 0xf9, 0x6d, 0xf8, 0xa9, 0xfb, 0xa6, 0xfc, 0x4d, 0xfd, 0x6f, 0xfe, 0x74, 0xff, 0xea, 0x02, + 0x0e, 0x05, 0xfe, 0x07, 0x98, 0x06, 0x8b, 0x0a, 0x9a, 0x08, 0xc6, 0x07, 0xda, 0x06, 0x33, 0x02, + 0xf4, 0xfb, 0x6f, 0xf8, 0xee, 0xf3, 0xfb, 0xf1, 0x30, 0xf4, 0x2c, 0xf9, 0x61, 0xf8, 0x02, 0xf6, + 0x89, 0xf7, 0x42, 0xf5, 0x7b, 0xf5, 0xaa, 0xf2, 0x61, 0xf1, 0x7d, 0xf2, 0xfc, 0xf8, 0xc5, 0xf9, + 0xc9, 0xf8, 0x33, 0xfc, 0x4a, 0xfc, 0xfa, 0xfd, 0x38, 0x00, 0xa9, 0x01, 0xb0, 0x03, 0x84, 0x01, + 0x3d, 0x00, 0x94, 0x02, 0xa6, 0x03, 0x71, 0x07, 0x97, 0x06, 0xba, 0x09, 0xe1, 0x07, 0x9f, 0x07, + 0x15, 0x06, 0x53, 0x03, 0xe8, 0x04, 0xdb, 0x02, 0xa5, 0x01, 0x49, 0xfe, 0xa8, 0xf9, 0xb4, 0xfa, + 0xac, 0xf9, 0x30, 0xf7, 0xa1, 0xf4, 0xb8, 0xf3, 0xcd, 0xf8, 0x97, 0xf9, 0x4b, 0xff, 0xd8, 0x01, + 0x00, 0x02, 0xc0, 0x03, 0xcb, 0x04, 0xad, 0x05, 0x66, 0x04, 0x13, 0x05, 0x30, 0x03, 0x66, 0x01, + 0x3d, 0xff, 0x5b, 0x01, 0x19, 0x03, 0x83, 0x05, 0x52, 0x04, 0x93, 0x05, 0x6c, 0x08, 0x1b, 0x0c, + 0xd4, 0x0b, 0xb8, 0x0b, 0xd3, 0x09, 0xc7, 0x07, 0xc8, 0x0b, 0x93, 0x0b, 0x07, 0x0c, 0xb8, 0x0a, + 0xb5, 0x05, 0xc7, 0x03, 0x0d, 0x00, 0x58, 0x01, 0x73, 0x04, 0x4a, 0x03, 0xdf, 0x08, 0x8f, 0x08, + 0xf9, 0x0a, 0x28, 0x06, 0xd4, 0x06, 0x25, 0x08, 0xca, 0x04, 0x3b, 0x05, 0xa6, 0x04, 0xf6, 0x07, + 0xcd, 0x08, 0x29, 0x08, 0xa3, 0x06, 0xf3, 0x06, 0x3f, 0x06, 0x3f, 0x04, 0x1c, 0xff, 0xb1, 0x00, + 0x91, 0xfd, 0x95, 0xfc, 0x80, 0xfc, 0xef, 0xfc, 0xbd, 0xfd, 0xb6, 0xff, 0x55, 0x01, 0x24, 0x02, + 0xf1, 0x01, 0xb3, 0x03, 0x68, 0x06, 0x14, 0x02, 0xb4, 0xff, 0xeb, 0xfc, 0xbf, 0xfb, 0x85, 0xfc, + 0x72, 0xfe, 0xe6, 0xfc, 0x49, 0xfe, 0x33, 0xf9, 0xbe, 0xfa, 0xb0, 0xfb, 0x78, 0xfe, 0xc6, 0x02, + 0xc4, 0x02, 0xb0, 0x05, 0x41, 0x09, 0x3e, 0x0f, 0x98, 0x10, 0x3e, 0x0e, 0x58, 0x06, 0xbf, 0x00, + 0x07, 0xfa, 0x22, 0xf4, 0xff, 0xf0, 0xba, 0xf1, 0x81, 0xf2, 0x95, 0xf6, 0xa4, 0xf7, 0x0b, 0xfb, + 0x68, 0x00, 0x98, 0x03, 0x9b, 0x01, 0x6b, 0xfd, 0x8e, 0xfb, 0x6b, 0xf9, 0xef, 0xfa, 0x44, 0xfc, + 0xf8, 0xfc, 0xca, 0xfb, 0x67, 0xf8, 0xc0, 0xf5, 0xb8, 0xf6, 0x5a, 0xf7, 0x73, 0xfa, 0x4d, 0xf7, + 0x2b, 0xf7, 0x54, 0xf9, 0xb8, 0xff, 0xe2, 0x02, 0xc2, 0x02, 0x6c, 0x06, 0xb9, 0x06, 0x9a, 0x0a, + 0x1b, 0x0b, 0x14, 0x08, 0xec, 0x06, 0x85, 0x03, 0xf9, 0xfb, 0x50, 0xfb, 0x16, 0xf9, 0x95, 0xf9, + 0xbd, 0xf6, 0xe6, 0xf4, 0x67, 0xf6, 0x47, 0xf6, 0x62, 0xfa, 0x0f, 0xfb, 0x9d, 0xfc, 0x11, 0xfc, + 0x48, 0xfc, 0xef, 0xfc, 0x94, 0xfc, 0x8e, 0xfe, 0x3c, 0xfd, 0xe8, 0xfd, 0xc2, 0xfa, 0x88, 0xf1, + 0x6e, 0xf3, 0x6c, 0xf3, 0x00, 0xf7, 0x2e, 0xf9, 0xfc, 0xf8, 0xef, 0xfb, 0x65, 0xfb, 0x08, 0xfe, + 0xc0, 0xfe, 0x7b, 0x02, 0x6c, 0x04, 0x52, 0x06, 0x20, 0x07, 0x7f, 0x04, 0xc4, 0x01, 0xd8, 0xff, + 0xa4, 0xfa, 0xde, 0xf6, 0xb1, 0xf5, 0x17, 0xf4, 0xab, 0xf3, 0x42, 0xf3, 0xd6, 0xf5, 0xe7, 0xf7, + 0xe6, 0xfd, 0xd5, 0xff, 0xff, 0x03, 0x35, 0x08, 0xf2, 0x06, 0x19, 0x09, 0x01, 0x0d, 0x05, 0x0d, + 0x24, 0x0d, 0x21, 0x0c, 0xba, 0x0d, 0x1b, 0x0e, 0xd8, 0x10, 0x18, 0x10, 0xda, 0x0e, 0x05, 0x0f, + 0xf8, 0x09, 0x02, 0x07, 0x1c, 0x02, 0x71, 0x02, 0x08, 0x00, 0x8d, 0x00, 0xd8, 0x01, 0x3c, 0x02, + 0x20, 0x02, 0x41, 0x04, 0x77, 0x01, 0xb0, 0xfe, 0x6a, 0xfa, 0xc9, 0xf4, 0x12, 0xf3, 0x90, 0xee, + 0xad, 0xef, 0xdd, 0xed, 0xe4, 0xed, 0xbb, 0xed, 0xbd, 0xf1, 0x52, 0xf4, 0x88, 0xf8, 0x14, 0xfc, + 0x42, 0xff, 0x1c, 0x01, 0x58, 0x08, 0x9e, 0x0e, 0xd9, 0x10, 0x3a, 0x12, 0xd7, 0x0f, 0xf6, 0x0a, + 0xac, 0x07, 0x49, 0x05, 0xbb, 0x03, 0xa6, 0x08, 0xb3, 0x06, 0xd7, 0x06, 0x54, 0x07, 0x80, 0x08, + 0xbd, 0x08, 0xb2, 0x08, 0xe0, 0x05, 0x73, 0x07, 0x7b, 0x0a, 0xbd, 0x0c, 0x72, 0x0b, 0xae, 0x09, + 0xa6, 0x07, 0xf2, 0x05, 0x46, 0x03, 0x7f, 0xfe, 0xea, 0xff, 0x7f, 0xfd, 0x4d, 0x01, 0xf5, 0xff, + 0x10, 0xff, 0x9a, 0x00, 0x81, 0x03, 0x97, 0x05, 0x0a, 0x09, 0x50, 0x0c, 0xca, 0x0e, 0x4d, 0x0f, + 0x6b, 0x0b, 0x4f, 0x05, 0x54, 0x01, 0x7b, 0xfc, 0x34, 0xfb, 0x72, 0xfa, 0xf9, 0xf7, 0x03, 0xfb, + 0x6f, 0xf9, 0x7c, 0xf9, 0x6e, 0xf6, 0x1b, 0xf7, 0xa3, 0xf4, 0x3a, 0xf5, 0xc7, 0xf3, 0xa8, 0xf4, + 0x7a, 0xfa, 0x17, 0x00, 0x27, 0x03, 0x5f, 0x07, 0x06, 0x09, 0xa6, 0x06, 0x35, 0x08, 0x49, 0x04, + 0x08, 0x03, 0x6d, 0xfc, 0xc1, 0xf9, 0x44, 0xf9, 0x26, 0xfc, 0x90, 0x02, 0x04, 0x07, 0xd9, 0x09, + 0x8e, 0x08, 0x5d, 0x08, 0x26, 0x08, 0xe2, 0x03, 0x05, 0x02, 0x61, 0xfd, 0xbd, 0xfb, 0x0a, 0xfb, + 0x06, 0xf3, 0xe7, 0xf0, 0x40, 0xf0, 0x0f, 0xf1, 0x8d, 0xf0, 0x64, 0xf1, 0x1d, 0xf2, 0xe5, 0xf3, + 0x8b, 0xf4, 0xde, 0xf5, 0x27, 0xf4, 0x18, 0xf3, 0x3b, 0xf4, 0x21, 0xf7, 0x76, 0xf6, 0x2d, 0xf5, + 0x2e, 0xf7, 0x89, 0xf4, 0xa8, 0xf3, 0x23, 0xf2, 0xb9, 0xf5, 0xce, 0xf8, 0x3f, 0xf8, 0x51, 0xf8, + 0x63, 0xf8, 0x60, 0xfd, 0xb5, 0xff, 0xa8, 0x00, 0xd1, 0x01, 0x64, 0xfe, 0xf6, 0x00, 0x73, 0x05, + 0x3a, 0x08, 0x52, 0x09, 0x43, 0x04, 0x21, 0x03, 0x41, 0xff, 0x6c, 0x00, 0xda, 0x02, 0x93, 0x06, + 0x09, 0x09, 0x04, 0x08, 0x8e, 0x06, 0x33, 0x03, 0x3c, 0x01, 0xea, 0x01, 0x59, 0x01, 0xd8, 0x03, + 0xbf, 0x05, 0xa6, 0x02, 0x32, 0x06, 0x72, 0x06, 0x3f, 0x08, 0x21, 0x09, 0xe5, 0x09, 0xbe, 0x08, + 0xa8, 0x07, 0xca, 0x04, 0xee, 0xff, 0x64, 0xfd, 0x0e, 0xf9, 0xc7, 0xf8, 0xe1, 0xf8, 0xb0, 0xfb, + 0xf4, 0xfd, 0x51, 0x01, 0x81, 0x00, 0x8b, 0x03, 0x6b, 0x05, 0x7d, 0x03, 0xee, 0xff, 0xf9, 0xfb, + 0x9d, 0xf7, 0xd2, 0xf6, 0x97, 0xf6, 0x53, 0xf7, 0xd3, 0xf8, 0x86, 0xf8, 0x79, 0xf8, 0xcb, 0xf9, + 0x37, 0xfd, 0xbd, 0x00, 0x13, 0x04, 0xab, 0x04, 0x9f, 0x07, 0xc6, 0x08, 0x66, 0x0b, 0x52, 0x0b, + 0xf3, 0x09, 0xb0, 0x06, 0x4b, 0x06, 0xb5, 0xff, 0xac, 0xfd, 0x98, 0xfe, 0x10, 0xfd, 0xca, 0x00, + 0x78, 0x02, 0x7f, 0x01, 0xf7, 0x00, 0xb1, 0x04, 0xf0, 0x02, 0x49, 0x02, 0x4c, 0x01, 0xc6, 0x01, + 0xa1, 0x04, 0xd1, 0x06, 0xd7, 0x04, 0xbc, 0x07, 0x51, 0x04, 0x41, 0x00, 0xf9, 0xfe, 0x72, 0xfc, + 0x69, 0xff, 0x8a, 0x02, 0xe9, 0x02, 0x50, 0x01, 0xca, 0x03, 0x89, 0x06, 0x92, 0x0a, 0xd9, 0x0b, + 0x8b, 0x0f, 0x76, 0x12, 0xaf, 0x16, 0xc4, 0x12, 0xa5, 0x13, 0x62, 0x10, 0xfa, 0x0b, 0x2b, 0x09, + 0x78, 0x05, 0xa0, 0x07, 0xcf, 0x03, 0xee, 0x01, 0xdc, 0xfe, 0x3c, 0xfa, 0x07, 0xf9, 0x1f, 0xfa, + 0x6d, 0xf9, 0x95, 0xf8, 0xfb, 0xf8, 0x38, 0xfb, 0xf3, 0xfd, 0x4f, 0x02, 0xa8, 0xfd, 0x61, 0xfc, + 0x0c, 0xfd, 0x4d, 0xf5, 0x67, 0xf1, 0xc8, 0xf0, 0x5c, 0xf2, 0x18, 0xf4, 0xaf, 0xf5, 0x99, 0xf6, + 0x12, 0xf9, 0x5c, 0xfc, 0xe6, 0x00, 0x5b, 0x01, 0xd5, 0x03, 0x0f, 0x01, 0x9a, 0x01, 0x4c, 0xfd, + 0x4c, 0xf8, 0xe0, 0xf6, 0x17, 0xf4, 0xb4, 0xf0, 0x05, 0xf1, 0x1e, 0xf2, 0x8c, 0xf1, 0x42, 0xf2, + 0x49, 0xf0, 0xf7, 0xf0, 0x9b, 0xf3, 0x31, 0xf6, 0x76, 0xf7, 0xa5, 0xfb, 0x17, 0xfb, 0xf3, 0xfc, + 0x01, 0x01, 0xdc, 0x06, 0x39, 0x0a, 0x81, 0x0a, 0xe2, 0x0c, 0x7b, 0x0b, 0x41, 0x0c, 0xdd, 0x0c, + 0xdc, 0x0d, 0x4b, 0x0d, 0x39, 0x0b, 0x59, 0x07, 0x50, 0x05, 0xb7, 0x03, 0xdf, 0x01, 0x06, 0xfd, + 0xd6, 0xff, 0x5e, 0x00, 0xf6, 0xfe, 0x6e, 0xfe, 0x73, 0xfc, 0x63, 0xfc, 0x58, 0xfb, 0x59, 0xf8, + 0xc8, 0xf4, 0xb4, 0xf4, 0x8c, 0xf2, 0xa6, 0xf2, 0xa0, 0xf4, 0xe4, 0xf4, 0xe4, 0xf3, 0x1a, 0xf4, + 0x29, 0xf3, 0x78, 0xf4, 0xa5, 0xf8, 0x4f, 0xfa, 0x88, 0xff, 0x2e, 0x06, 0x2e, 0x09, 0xed, 0x0b, + 0xd4, 0x0d, 0xe0, 0x09, 0x58, 0x0a, 0xa2, 0x07, 0x1e, 0x05, 0x19, 0x06, 0xbe, 0x03, 0xd0, 0xff, + 0x21, 0xfe, 0x9f, 0xfc, 0xf2, 0x00, 0xa0, 0x01, 0x37, 0x02, 0x4d, 0x04, 0x0f, 0x06, 0x4c, 0x07, + 0xbb, 0x04, 0x8c, 0x02, 0x49, 0xfe, 0xbd, 0xfd, 0x14, 0xfa, 0x60, 0xfb, 0x00, 0xfc, 0x4a, 0xfb, + 0xce, 0xfc, 0x91, 0xff, 0x36, 0xfe, 0x38, 0xfd, 0xf5, 0xfc, 0xe1, 0xfd, 0x52, 0x01, 0xba, 0x01, + 0xbd, 0x03, 0x8a, 0x07, 0x7b, 0x09, 0x89, 0x07, 0x0c, 0x08, 0x64, 0x03, 0x7c, 0x01, 0x37, 0x00, + 0xc3, 0xff, 0xd5, 0xfe, 0x2b, 0x00, 0x3a, 0xfd, 0x60, 0xfb, 0xeb, 0xfc, 0x5e, 0xfe, 0xc4, 0x00, + 0xd9, 0x01, 0x12, 0x02, 0x36, 0x04, 0x3e, 0x09, 0x69, 0x09, 0xf0, 0x0e, 0x34, 0x10, 0xd8, 0x0f, + 0x4c, 0x0d, 0x45, 0x0b, 0xeb, 0x0b, 0x48, 0x0d, 0x69, 0x0a, 0x6e, 0x0b, 0xe4, 0x0b, 0x5a, 0x0e, + 0x13, 0x11, 0x27, 0x12, 0xab, 0x0f, 0x68, 0x0d, 0x60, 0x0c, 0xc7, 0x09, 0xc8, 0x0b, 0x77, 0x06, + 0x84, 0x04, 0xf2, 0x02, 0x6d, 0xff, 0x0c, 0xfa, 0x3d, 0xf8, 0x07, 0xfa, 0xd9, 0xfb, 0x45, 0xf9, + 0x31, 0xf7, 0x6c, 0xf4, 0x1c, 0xf3, 0x22, 0xf4, 0x3f, 0xf5, 0xdb, 0xf6, 0x28, 0xf5, 0x89, 0xf8, + 0xf3, 0xf6, 0xa0, 0xf5, 0xdd, 0xf2, 0x16, 0xf2, 0xf1, 0xee, 0x0a, 0xed, 0x34, 0xec, 0x3f, 0xed, + 0xe8, 0xef, 0x03, 0xf4, 0xc0, 0xf4, 0x8f, 0xf7, 0x66, 0xf8, 0x99, 0xf8, 0x35, 0xfd, 0x0e, 0xfc, + 0x7c, 0xfd, 0x7d, 0xfd, 0xd0, 0x00, 0xc7, 0x03, 0x93, 0x03, 0xd0, 0x02, 0x9e, 0x03, 0x22, 0x03, + 0xb6, 0x03, 0xc3, 0x05, 0xd2, 0x05, 0x89, 0x06, 0x3f, 0x06, 0x33, 0x03, 0xc0, 0x01, 0xde, 0x03, + 0x62, 0x01, 0x87, 0x05, 0x50, 0x07, 0xc5, 0x04, 0x41, 0x03, 0x2e, 0x03, 0xf2, 0x03, 0xf6, 0x05, + 0x75, 0x06, 0x37, 0x07, 0x5c, 0x06, 0x3f, 0x05, 0xf0, 0x01, 0x82, 0x01, 0xa8, 0x01, 0x76, 0x00, + 0x31, 0x02, 0x95, 0x01, 0xea, 0x01, 0x00, 0x03, 0x67, 0x02, 0x89, 0x01, 0xe3, 0x02, 0x82, 0x01, + 0x58, 0x01, 0xe2, 0xfe, 0xc1, 0xf9, 0xe8, 0xf6, 0xd1, 0xf5, 0x4b, 0xf6, 0x12, 0xf9, 0xd0, 0xf9, + 0x33, 0xf7, 0xd9, 0xf5, 0xe8, 0xf3, 0x5f, 0xf9, 0x1a, 0xfb, 0xf9, 0xfa, 0xa0, 0xfb, 0xa9, 0xfe, + 0xe4, 0x00, 0xbd, 0x05, 0xd3, 0x06, 0xd2, 0x06, 0xff, 0x07, 0xb5, 0x02, 0x49, 0xff, 0xbe, 0xfe, + 0xed, 0xfa, 0x5f, 0xfb, 0x2d, 0xff, 0xe1, 0xfc, 0x12, 0xfc, 0x56, 0xfc, 0x73, 0xfe, 0x07, 0x00, + 0x08, 0x00, 0xc2, 0xfd, 0x6f, 0x00, 0x8b, 0x00, 0xfc, 0xfc, 0x34, 0xfc, 0x9f, 0xfa, 0x3d, 0xfa, + 0xb9, 0xf8, 0x1b, 0xfb, 0x39, 0xfc, 0x25, 0xff, 0x96, 0xfe, 0x9e, 0xfc, 0x47, 0xfa, 0xec, 0xfd, + 0x03, 0x01, 0xad, 0x06, 0x44, 0x0a, 0x0f, 0x0e, 0x5e, 0x12, 0xdd, 0x12, 0xfa, 0x13, 0x64, 0x12, + 0xc5, 0x0f, 0xb7, 0x0b, 0x03, 0x07, 0x0a, 0x06, 0x6b, 0x04, 0x69, 0x01, 0xb6, 0x01, 0xc7, 0xff, + 0x8d, 0xff, 0x72, 0xfe, 0x68, 0xff, 0xe5, 0xfd, 0x1b, 0x00, 0x4c, 0xff, 0x57, 0xfd, 0xd0, 0xff, + 0xec, 0xfc, 0xf0, 0xf9, 0x39, 0xfa, 0x42, 0xfa, 0x9a, 0xf7, 0xa1, 0xf8, 0xb3, 0xf7, 0x9a, 0xfb, + 0xdd, 0xfa, 0x24, 0xfd, 0x7e, 0xfe, 0x4f, 0x03, 0x56, 0x04, 0xfc, 0x04, 0x0c, 0x06, 0x85, 0x05, + 0xee, 0x05, 0x64, 0x03, 0x86, 0xff, 0x37, 0xfd, 0xc4, 0xfc, 0x61, 0xf9, 0x16, 0xf6, 0xd7, 0xf4, + 0x39, 0xf4, 0x18, 0xf2, 0x36, 0xf4, 0x54, 0xf1, 0x5a, 0xf2, 0xe2, 0xf2, 0x35, 0xf3, 0x8a, 0xf7, + 0x4c, 0xfa, 0xe4, 0xfa, 0x84, 0xfc, 0x6f, 0x02, 0x3d, 0x06, 0xa8, 0x06, 0xde, 0x05, 0x7f, 0x06, + 0x55, 0x05, 0xdf, 0x06, 0x24, 0x09, 0x90, 0x0d, 0x12, 0x0e, 0x85, 0x0e, 0xc4, 0x08, 0xe9, 0x06, + 0xda, 0x06, 0x39, 0x02, 0x4f, 0x01, 0xa5, 0x01, 0x0c, 0xff, 0x53, 0xfe, 0x32, 0xfe, 0xdf, 0xfc, + 0x2b, 0xfd, 0x0c, 0xfa, 0xa9, 0xf7, 0x93, 0xf5, 0xb8, 0xf3, 0x23, 0xf2, 0x53, 0xf5, 0x37, 0xf6, + 0x24, 0xf8, 0xd7, 0xf9, 0xcf, 0xfb, 0xf9, 0xfe, 0x26, 0x04, 0xf9, 0x04, 0x82, 0x05, 0x88, 0x09, + 0xf8, 0x09, 0xad, 0x0d, 0xce, 0x0d, 0x03, 0x0e, 0x0a, 0x0d, 0xee, 0x0e, 0x25, 0x0b, 0x06, 0x0b, + 0x39, 0x09, 0xdb, 0x04, 0xe0, 0xfe, 0x7f, 0xfb, 0x3a, 0xff, 0x8b, 0x01, 0x19, 0x03, 0xbe, 0x00, + 0x58, 0x01, 0x76, 0xff, 0x1e, 0xff, 0xa5, 0xfc, 0x6b, 0xfc, 0x03, 0xfc, 0xa9, 0xf9, 0x2d, 0xf9, + 0x8f, 0xfb, 0x1c, 0xfa, 0x67, 0xfa, 0x62, 0xfd, 0x8f, 0xfe, 0x2a, 0xfd, 0x7f, 0xfb, 0xd3, 0xfa, + 0x43, 0xfe, 0x25, 0xff, 0xf8, 0xfe, 0xfd, 0x04, 0x69, 0x05, 0x2e, 0x04, 0xd8, 0x02, 0xe2, 0x01, + 0x12, 0xfd, 0x3a, 0xf9, 0x60, 0xf4, 0x32, 0xf3, 0xe3, 0xf2, 0x5c, 0xf2, 0x7b, 0xf2, 0x3e, 0xf1, + 0xae, 0xf4, 0x9c, 0xfa, 0xda, 0xff, 0xb4, 0xfe, 0xbf, 0x01, 0x54, 0x05, 0x09, 0x05, 0x3d, 0x06, + 0x13, 0x0b, 0x81, 0x0b, 0xae, 0x09, 0xf5, 0x09, 0x4e, 0x0c, 0xfa, 0x09, 0x66, 0x0d, 0xb8, 0x10, + 0x13, 0x0e, 0xf4, 0x0d, 0xad, 0x13, 0xb8, 0x16, 0x4c, 0x13, 0x48, 0x18, 0x95, 0x19, 0x9b, 0x16, + 0xaf, 0x15, 0xe1, 0x18, 0x32, 0x10, 0x38, 0x08, 0x8c, 0x07, 0x1d, 0x05, 0xc8, 0xf9, 0x87, 0xf9, + 0x56, 0xff, 0xca, 0xf9, 0xfc, 0xf5, 0x87, 0xf4, 0xa6, 0xf6, 0xb6, 0xf1, 0x5e, 0xf8, 0xe7, 0xfa, + 0xec, 0xf7, 0xec, 0xf5, 0x3f, 0xf7, 0xe3, 0xf1, 0x32, 0xec, 0xfd, 0xec, 0xbf, 0xec, 0xaa, 0xe7, + 0x03, 0xe8, 0x16, 0xec, 0x00, 0xed, 0xfe, 0xef, 0x1b, 0xf3, 0x6c, 0xf6, 0x6f, 0xf5, 0x54, 0xf8, + 0x3b, 0xfd, 0x7b, 0xfd, 0xec, 0xfb, 0x63, 0xfd, 0xf4, 0xfd, 0x72, 0x00, 0x2b, 0x04, 0xc3, 0x06, + 0x43, 0x03, 0x2d, 0x00, 0x3a, 0xfd, 0xca, 0xfc, 0xe8, 0xfb, 0xf8, 0xfa, 0x4b, 0xfd, 0x65, 0xf8, + 0x38, 0xf9, 0x87, 0xfc, 0xed, 0xfd, 0x52, 0xfc, 0xce, 0x01, 0x49, 0x01, 0xe8, 0xfe, 0x3f, 0xfc, + 0xd9, 0xfb, 0x1e, 0xfd, 0x6c, 0xfd, 0x3c, 0xfe, 0xa3, 0xfd, 0xd7, 0xfd, 0xf3, 0xfe, 0xbb, 0x00, + 0x51, 0x00, 0x64, 0x00, 0x3f, 0x01, 0x74, 0x01, 0x79, 0x00, 0x2b, 0x02, 0xec, 0xff, 0xd2, 0x02, + 0xf8, 0x04, 0x21, 0x07, 0xa8, 0x07, 0x35, 0x06, 0x0a, 0x03, 0x47, 0xfe, 0xe6, 0xfa, 0x13, 0xf8, + 0x60, 0xfa, 0xde, 0xf8, 0x86, 0xf9, 0xb3, 0xf4, 0xfc, 0xf1, 0x0e, 0xf4, 0x20, 0xfa, 0x60, 0xfd, + 0x34, 0xff, 0x24, 0x00, 0xcb, 0x01, 0xb0, 0x04, 0x14, 0x06, 0x33, 0x09, 0x32, 0x0d, 0xc9, 0x0d, + 0x81, 0x0b, 0xb1, 0x0c, 0x08, 0x0b, 0xcb, 0x08, 0x53, 0x0a, 0xaf, 0x0c, 0x81, 0x0a, 0xd4, 0x08, + 0xa6, 0x08, 0xba, 0x0a, 0x40, 0x0b, 0x8d, 0x0b, 0x46, 0x0a, 0x52, 0x09, 0x60, 0x06, 0x19, 0x04, + 0x76, 0x03, 0x01, 0x03, 0x33, 0x02, 0x6b, 0xfe, 0x27, 0xfd, 0x2f, 0xf9, 0x7c, 0xf9, 0x1f, 0xf7, + 0x80, 0xf7, 0xbf, 0xfa, 0x78, 0xfd, 0x70, 0x02, 0x6b, 0x06, 0x75, 0x0a, 0x23, 0x0c, 0x2f, 0x0e, + 0x78, 0x12, 0x50, 0x13, 0xce, 0x0f, 0x96, 0x0d, 0x21, 0x06, 0xd4, 0x03, 0xcd, 0x03, 0x4a, 0x06, + 0x64, 0x03, 0x47, 0x01, 0x0c, 0x02, 0x20, 0x02, 0x1d, 0xff, 0x34, 0xff, 0x77, 0x01, 0x39, 0xfe, + 0xb9, 0xfa, 0x76, 0xfb, 0x52, 0xfc, 0x76, 0xf8, 0xc9, 0xfb, 0x51, 0xfd, 0xd0, 0xfb, 0x5b, 0xf6, + 0x58, 0xf6, 0x3d, 0xf7, 0x79, 0xf9, 0x75, 0xfb, 0x5b, 0xfb, 0xff, 0xfc, 0xa8, 0xff, 0xb9, 0x01, + 0x43, 0x03, 0x06, 0x06, 0xe2, 0x06, 0x5c, 0x07, 0x94, 0x01, 0xde, 0xfc, 0x65, 0xfb, 0xf9, 0xf9, + 0x1e, 0xf4, 0xed, 0xf3, 0x23, 0xf5, 0x4f, 0xf4, 0xbf, 0xf4, 0xb7, 0xf3, 0x5e, 0xf4, 0x46, 0xf4, + 0x0c, 0xf4, 0xce, 0xf9, 0x03, 0xfc, 0x67, 0xfc, 0x60, 0xfe, 0x03, 0x00, 0xaa, 0x03, 0xf6, 0x05, + 0x73, 0x07, 0xd9, 0x03, 0x7f, 0x03, 0xca, 0x03, 0x5f, 0x07, 0x5e, 0x07, 0xdd, 0x09, 0x99, 0x0b, + 0xf2, 0x06, 0xe3, 0x04, 0xb0, 0x05, 0x2a, 0x04, 0xb3, 0x00, 0x33, 0x03, 0x77, 0x02, 0x26, 0x00, + 0x3d, 0xfb, 0x76, 0xfc, 0x90, 0xfc, 0x49, 0xfc, 0xb1, 0xfa, 0xda, 0xf9, 0x8f, 0xf6, 0xab, 0xf4, + 0x7c, 0xf5, 0xfc, 0xf5, 0x2c, 0xf9, 0x70, 0xfe, 0xa5, 0xfe, 0xf9, 0xfc, 0xea, 0x01, 0xd0, 0x03, + 0x69, 0x04, 0xc1, 0x04, 0xcb, 0x07, 0xd2, 0x06, 0x7a, 0x08, 0xc6, 0x07, 0x76, 0x08, 0xba, 0x08, + 0x28, 0x08, 0x74, 0x06, 0x12, 0x03, 0x37, 0x01, 0x12, 0xfe, 0x55, 0xfa, 0x50, 0xf7, 0xa4, 0xf7, + 0xff, 0xf5, 0x14, 0xf5, 0xc6, 0xf3, 0x58, 0xf5, 0x07, 0xf5, 0x70, 0xf4, 0x78, 0xf2, 0xcb, 0xf3, + 0x0b, 0xf0, 0xf6, 0xec, 0x0c, 0xf0, 0x33, 0xf1, 0x66, 0xf1, 0x32, 0xf2, 0xaa, 0xf5, 0x7f, 0xf7, + 0xfd, 0xf5, 0x01, 0xf6, 0xa0, 0xf9, 0x7d, 0xf9, 0x1e, 0xfb, 0xa7, 0xfc, 0x7e, 0xff, 0xb8, 0x00, + 0x3b, 0x01, 0x62, 0xff, 0xb5, 0xff, 0xda, 0xfd, 0xf8, 0xf9, 0x77, 0xf7, 0x0d, 0xf5, 0x49, 0xf6, + 0xe9, 0xf5, 0x7f, 0xf8, 0x06, 0xfa, 0x0a, 0xfd, 0xf5, 0x01, 0x97, 0x06, 0x36, 0x06, 0x8b, 0x0a, + 0x21, 0x0c, 0x28, 0x0d, 0x2b, 0x0f, 0x02, 0x12, 0x7b, 0x12, 0x36, 0x11, 0x23, 0x13, 0x08, 0x14, + 0x83, 0x17, 0xfc, 0x16, 0xad, 0x16, 0x81, 0x16, 0x25, 0x18, 0xaf, 0x1a, 0xab, 0x1e, 0xc1, 0x20, + 0x25, 0x22, 0x8e, 0x1e, 0xd4, 0x1c, 0x47, 0x1b, 0xca, 0x17, 0x8b, 0x12, 0xfc, 0x0d, 0x52, 0x0d, + 0x23, 0x09, 0x11, 0x05, 0xd7, 0x01, 0x62, 0x00, 0x52, 0xfe, 0xaf, 0xfd, 0xeb, 0xfb, 0x1f, 0xfc, + 0x49, 0xfb, 0xdb, 0xfb, 0x63, 0xfb, 0xe9, 0xfc, 0x93, 0xfa, 0x60, 0xf7, 0x4f, 0xf5, 0x09, 0xf4, + 0xd1, 0xf2, 0x21, 0xee, 0x3c, 0xee, 0x3d, 0xed, 0x1b, 0xed, 0x0e, 0xef, 0x4a, 0xf0, 0x82, 0xf2, + 0xe0, 0xf6, 0xb7, 0xf7, 0x0e, 0xfc, 0x22, 0xfc, 0x96, 0xfd, 0xa2, 0xfe, 0x24, 0xff, 0x2e, 0x00, + 0x8b, 0x02, 0x19, 0x03, 0xa0, 0x00, 0x6b, 0x01, 0x80, 0xfe, 0xa7, 0xfe, 0x8d, 0xfe, 0x66, 0xfd, + 0x6e, 0xfc, 0x5e, 0xfd, 0x11, 0xfb, 0xb0, 0xfc, 0xd1, 0xfb, 0x21, 0xfc, 0x31, 0xfb, 0xcc, 0xfc, + 0x59, 0xff, 0xf5, 0xfc, 0x34, 0xfc, 0xae, 0xfa, 0xa6, 0xf9, 0x2b, 0xf8, 0x0c, 0xfb, 0x94, 0xfb, + 0x76, 0xff, 0xe9, 0x01, 0x39, 0x03, 0xac, 0x03, 0x36, 0x04, 0xf8, 0x00, 0x13, 0x00, 0x2d, 0x01, + 0xa1, 0x02, 0xbb, 0x02, 0x97, 0x02, 0x86, 0x05, 0x61, 0x05, 0x43, 0x04, 0x2d, 0x01, 0x86, 0xfe, + 0xa9, 0xfb, 0xdc, 0xfa, 0x67, 0xf9, 0xc1, 0xf8, 0xc2, 0xf7, 0xbc, 0xf7, 0x19, 0xf5, 0x69, 0xf3, + 0x67, 0xf6, 0x35, 0xfa, 0xf7, 0xfb, 0xbf, 0xfc, 0x69, 0xfc, 0x82, 0xfc, 0x7a, 0x00, 0x89, 0x02, + 0x2a, 0x06, 0xf6, 0x06, 0x48, 0x07, 0xa8, 0x06, 0x0e, 0x09, 0x1a, 0x06, 0x80, 0x04, 0x82, 0x05, + 0xae, 0x06, 0xdb, 0x02, 0x93, 0x01, 0x70, 0x03, 0xb0, 0x02, 0xad, 0x01, 0x94, 0x00, 0x8d, 0xff, + 0x29, 0xfd, 0xbc, 0xfd, 0x52, 0xfb, 0x36, 0xfb, 0x70, 0xf8, 0x20, 0xf5, 0xca, 0xf1, 0x66, 0xef, + 0x15, 0xef, 0x9b, 0xf1, 0xf5, 0xf1, 0xb9, 0xf3, 0x98, 0xf4, 0x6b, 0xf6, 0x4f, 0xfa, 0x95, 0xfb, + 0xf3, 0x00, 0xf1, 0x03, 0x14, 0x07, 0xad, 0x06, 0xdb, 0x08, 0xba, 0x06, 0x4c, 0x04, 0x3f, 0x01, + 0x3a, 0xff, 0xc1, 0xff, 0xa2, 0x00, 0xb1, 0x00, 0x4a, 0x01, 0x45, 0x00, 0x71, 0x00, 0x2b, 0x01, + 0x85, 0xff, 0xf4, 0xff, 0x65, 0xfe, 0xb1, 0xff, 0x0b, 0x02, 0x26, 0x03, 0xc5, 0xff, 0x9e, 0xff, + 0x4a, 0x01, 0xd3, 0x01, 0xa7, 0xff, 0x20, 0xfe, 0x49, 0xfe, 0x17, 0x01, 0x89, 0x01, 0xa2, 0x01, + 0x2d, 0x06, 0xf6, 0x09, 0xa0, 0x0d, 0xcf, 0x0e, 0xa0, 0x11, 0xb7, 0x0e, 0xea, 0x0a, 0x42, 0x06, + 0x19, 0x03, 0x26, 0x00, 0xa2, 0xfd, 0xa9, 0xfc, 0xf2, 0xfc, 0xf1, 0xf9, 0x86, 0xfa, 0x7c, 0xf9, + 0x94, 0xf8, 0x12, 0xf9, 0x44, 0xf7, 0x65, 0xfa, 0x63, 0xfc, 0x8b, 0xff, 0xa7, 0xff, 0x74, 0x01, + 0xf7, 0x00, 0x2f, 0x04, 0xb0, 0x05, 0xf8, 0x05, 0x4f, 0x05, 0x85, 0x04, 0x2d, 0x04, 0x5b, 0x04, + 0x34, 0x04, 0xf3, 0x05, 0xe7, 0x07, 0x92, 0x06, 0xe6, 0x07, 0x98, 0x07, 0x35, 0x07, 0x22, 0x03, + 0xa0, 0x03, 0x96, 0x02, 0x2b, 0x00, 0xc7, 0xfb, 0x16, 0xfc, 0x0d, 0xfc, 0xee, 0xf9, 0xa2, 0xf8, + 0xfc, 0xf7, 0xbf, 0xf7, 0x6f, 0xf8, 0x75, 0xfa, 0xca, 0xfb, 0x4b, 0xff, 0x9b, 0xff, 0x74, 0x01, + 0x34, 0x02, 0x9a, 0x06, 0x98, 0x08, 0xeb, 0x09, 0xf2, 0x0a, 0x65, 0x0c, 0x1e, 0x0c, 0x74, 0x0c, + 0xed, 0x0c, 0x1a, 0x0d, 0x36, 0x0c, 0xcd, 0x0a, 0xa7, 0x0a, 0x4c, 0x0b, 0xc4, 0x08, 0x9b, 0x03, + 0x11, 0x00, 0x0a, 0xfd, 0x84, 0xfe, 0x71, 0xfd, 0x53, 0xfe, 0xe2, 0xfd, 0x0b, 0xff, 0xe3, 0xfc, + 0xe0, 0xfa, 0x45, 0xf8, 0x90, 0xf5, 0x05, 0xf5, 0x3f, 0xf4, 0x03, 0xf5, 0x8b, 0xf5, 0xba, 0xf4, + 0x50, 0xf4, 0x85, 0xf8, 0xf4, 0xf6, 0x73, 0xf6, 0x1c, 0xf6, 0x8d, 0xf7, 0x36, 0xf6, 0x09, 0xf8, + 0x39, 0xfa, 0xea, 0xfd, 0x43, 0x00, 0x19, 0x00, 0x8a, 0xff, 0xa4, 0xfd, 0x85, 0xfc, 0x5a, 0xf8, + 0xde, 0xf4, 0xd8, 0xf3, 0xe7, 0xf4, 0x06, 0xf4, 0xec, 0xf6, 0x07, 0xf8, 0x76, 0xfb, 0x75, 0xff, + 0x5d, 0x01, 0x6b, 0x03, 0x37, 0x05, 0xfa, 0x05, 0x3d, 0x06, 0x06, 0x09, 0xee, 0x09, 0xb9, 0x09, + 0x25, 0x08, 0x1c, 0x08, 0x33, 0x09, 0x45, 0x0b, 0xb3, 0x09, 0xb3, 0x0c, 0xd7, 0x0d, 0xec, 0x0e, + 0xe9, 0x0f, 0x91, 0x10, 0x02, 0x12, 0xa5, 0x14, 0xc1, 0x13, 0xd5, 0x14, 0x8d, 0x14, 0x9b, 0x10, + 0x52, 0x0d, 0x2a, 0x0c, 0xa7, 0x08, 0x64, 0x02, 0x8e, 0x01, 0xed, 0xfd, 0x36, 0xfe, 0xd4, 0xfb, + 0xdf, 0xf9, 0x49, 0xf8, 0x71, 0xf9, 0xc1, 0xf8, 0xda, 0xf6, 0xdb, 0xf6, 0x4f, 0xf6, 0x5a, 0xf4, + 0x64, 0xf1, 0x42, 0xef, 0xe5, 0xec, 0x54, 0xec, 0x1c, 0xea, 0x4d, 0xe8, 0x7f, 0xe7, 0xdc, 0xeb, + 0xae, 0xeb, 0xe4, 0xef, 0xb1, 0xf3, 0x84, 0xf6, 0xee, 0xf8, 0x35, 0xfd, 0xb6, 0xfe, 0xca, 0xff, + 0xb3, 0x00, 0xa9, 0x00, 0x70, 0x01, 0xde, 0xff, 0xbf, 0x00, 0x2e, 0x00, 0xca, 0x01, 0x7c, 0x00, + 0x46, 0x01, 0xbd, 0xff, 0x66, 0xfc, 0x9e, 0xfc, 0x7c, 0xfc, 0xab, 0xf8, 0x6c, 0xfc, 0x7d, 0xff, + 0xf2, 0xfe, 0x05, 0x01, 0xcf, 0xff, 0xbc, 0xfe, 0xf1, 0xfb, 0xd9, 0xfa, 0xc7, 0xf9, 0xb4, 0xf9, + 0xaa, 0xf9, 0x24, 0xfc, 0x85, 0xfd, 0x1f, 0x02, 0xf9, 0x02, 0x26, 0x05, 0x1f, 0x07, 0x2d, 0x08, + 0x5b, 0x06, 0x40, 0x08, 0xd2, 0x06, 0x73, 0x07, 0xa9, 0x07, 0x39, 0x04, 0xcf, 0x05, 0xc5, 0x04, + 0x29, 0x05, 0x24, 0x02, 0x30, 0xff, 0x75, 0xfc, 0xa8, 0xfa, 0x2d, 0xf9, 0x64, 0xf9, 0xdc, 0xf9, + 0x06, 0xfa, 0x18, 0xf9, 0x0e, 0xf9, 0xd6, 0xfb, 0x97, 0xfc, 0x6c, 0xff, 0x3f, 0x02, 0x09, 0x05, + 0x6e, 0x05, 0xa7, 0x07, 0x94, 0x07, 0xd9, 0x08, 0x32, 0x0b, 0x89, 0x0c, 0x4c, 0x0b, 0x78, 0x0f, + 0x5e, 0x0d, 0xf7, 0x0d, 0xf8, 0x0f, 0xb8, 0x0c, 0x3f, 0x0a, 0xbb, 0x09, 0x04, 0x09, 0x7b, 0x07, + 0x14, 0x0a, 0xa5, 0x09, 0x29, 0x0a, 0x41, 0x07, 0x16, 0x06, 0x1b, 0x03, 0x7e, 0xff, 0x16, 0xfc, + 0x34, 0xfa, 0x47, 0xf9, 0xc3, 0xf7, 0xc8, 0xf8, 0x7d, 0xf8, 0x5c, 0xf7, 0xf9, 0xf7, 0x76, 0xf9, + 0x42, 0xfe, 0xbb, 0x00, 0xff, 0x04, 0x3b, 0x0a, 0x74, 0x0b, 0x1f, 0x0c, 0x1b, 0x0c, 0xc0, 0x0c, + 0x58, 0x07, 0x4a, 0x06, 0x26, 0x02, 0x6e, 0xff, 0x5a, 0xfd, 0x79, 0xfc, 0xee, 0xfd, 0xe6, 0xfc, + 0xd1, 0xfc, 0x04, 0xfc, 0xb9, 0xfa, 0x03, 0xfa, 0x34, 0xfc, 0xbc, 0xfa, 0x1a, 0xf9, 0x08, 0xfc, + 0x00, 0xfe, 0x94, 0xfe, 0x9e, 0xff, 0x2b, 0xfe, 0xa2, 0xfd, 0xec, 0xfc, 0xbc, 0xfa, 0xd7, 0xf9, + 0xa7, 0xfc, 0x82, 0xfd, 0xb8, 0xfd, 0xf8, 0x01, 0x4a, 0x05, 0x51, 0x07, 0xc4, 0x07, 0x43, 0x0b, + 0xb7, 0x08, 0x2c, 0x04, 0x5d, 0x02, 0x69, 0x01, 0x59, 0xfb, 0xa0, 0xf5, 0xef, 0xf3, 0xe3, 0xf2, + 0xbe, 0xf4, 0xbd, 0xf2, 0xf2, 0xf3, 0x6b, 0xf7, 0x13, 0xf7, 0xaf, 0xf4, 0x91, 0xf7, 0xb8, 0xf7, + 0x25, 0xfc, 0x6b, 0xfc, 0x3d, 0xfd, 0x77, 0x02, 0xce, 0x01, 0x33, 0x01, 0xfd, 0x03, 0x56, 0x04, + 0x40, 0x05, 0xb4, 0x04, 0x92, 0x00, 0x32, 0x05, 0x4b, 0x07, 0x09, 0x05, 0x73, 0x05, 0x8c, 0x05, + 0x07, 0x03, 0x9e, 0x01, 0x63, 0x00, 0x33, 0x02, 0xb5, 0x02, 0x61, 0xff, 0x3f, 0xfc, 0x30, 0xf9, + 0xa4, 0xf4, 0x60, 0xf3, 0xa2, 0xf3, 0x96, 0xf6, 0xcb, 0xf8, 0x05, 0xf5, 0x3b, 0xf9, 0xe5, 0xfb, + 0x9b, 0xfa, 0x21, 0xf9, 0xb8, 0xfc, 0x90, 0xfe, 0xc5, 0x00, 0xfd, 0xff, 0xba, 0x01, 0xde, 0x03, + 0x0c, 0x01, 0xf7, 0xfe, 0x0b, 0xff, 0xd0, 0x02, 0x41, 0x06, 0xc9, 0x07, 0x72, 0x09, 0xb3, 0x08, + 0x80, 0x06, 0x63, 0x02, 0xff, 0xfc, 0xa3, 0xfc, 0xad, 0xfa, 0x1b, 0xf9, 0xe9, 0xfb, 0xae, 0xfe, + 0x31, 0xfd, 0xa9, 0xf9, 0x62, 0xf7, 0xf7, 0xf7, 0x5d, 0xf7, 0x58, 0xf5, 0xc6, 0xf6, 0x0d, 0xf5, + 0x99, 0xf7, 0x45, 0xf6, 0xc3, 0xf5, 0x08, 0xf8, 0x60, 0xfb, 0x27, 0xfc, 0xef, 0xfe, 0x75, 0xfe, + 0x14, 0xfe, 0x80, 0xfd, 0x38, 0xfc, 0x06, 0xfe, 0x85, 0x01, 0xa5, 0x03, 0x98, 0x04, 0x7d, 0x04, + 0xa0, 0x02, 0xce, 0x00, 0xa4, 0xfd, 0x22, 0xfd, 0xc4, 0xfb, 0x76, 0xfc, 0xa6, 0xfb, 0x69, 0xfd, + 0x3d, 0xff, 0xb0, 0x01, 0x48, 0x03, 0x79, 0x04, 0xe4, 0x06, 0x52, 0x08, 0x7a, 0x09, 0xda, 0x0a, + 0x95, 0x09, 0xf4, 0x07, 0x3c, 0x09, 0xfa, 0x07, 0x03, 0x0a, 0xdf, 0x08, 0xde, 0x0c, 0x7b, 0x0f, + 0xb0, 0x0f, 0xbe, 0x0d, 0x5b, 0x0f, 0xd3, 0x10, 0x7e, 0x11, 0x57, 0x12, 0xd2, 0x13, 0x86, 0x16, + 0xad, 0x16, 0x8d, 0x15, 0xbb, 0x11, 0x59, 0x0f, 0xcc, 0x0d, 0x69, 0x0c, 0x51, 0x09, 0x7e, 0x09, + 0x86, 0x07, 0x66, 0x06, 0xd6, 0x05, 0xa1, 0x05, 0xda, 0x06, 0x6d, 0x05, 0x3d, 0x03, 0xd1, 0x03, + 0x68, 0x04, 0x05, 0x01, 0x28, 0xfe, 0x4c, 0xfd, 0x09, 0xfc, 0x76, 0xf8, 0x05, 0xf7, 0x70, 0xf4, + 0x25, 0xf4, 0x36, 0xf2, 0x51, 0xf1, 0x97, 0xf1, 0x5c, 0xf2, 0x9e, 0xf3, 0xad, 0xf7, 0xf6, 0xfc, + 0xff, 0xff, 0xfe, 0x01, 0x19, 0x01, 0x11, 0x01, 0x7b, 0xff, 0x62, 0xfe, 0x5f, 0xfd, 0x50, 0xfe, + 0x40, 0xfc, 0x2e, 0xfb, 0xe7, 0xfa, 0x2d, 0xfd, 0x19, 0xfc, 0xf1, 0xf8, 0xf0, 0xf8, 0x40, 0xf8, + 0xeb, 0xf6, 0x77, 0xf7, 0x4c, 0xf8, 0x59, 0xf8, 0x65, 0xf8, 0x62, 0xf5, 0x67, 0xf5, 0x4e, 0xf6, + 0x2e, 0xf6, 0x09, 0xf4, 0x96, 0xf4, 0x4c, 0xf4, 0xae, 0xf4, 0xb3, 0xf4, 0xa4, 0xf6, 0x7e, 0xf9, + 0x56, 0xfb, 0x32, 0xfc, 0x35, 0xfe, 0x5e, 0x02, 0x6d, 0x03, 0x7f, 0x04, 0x04, 0x02, 0x73, 0x03, + 0x23, 0x03, 0x02, 0x03, 0xad, 0x03, 0x47, 0x03, 0xf5, 0x00, 0x92, 0xff, 0x5f, 0xfb, 0xc7, 0xf9, + 0x87, 0xfa, 0x4d, 0xfa, 0x72, 0xfc, 0xef, 0xfb, 0x00, 0xfb, 0x3d, 0xfb, 0xa5, 0xfb, 0x53, 0xfc, + 0xe2, 0xff, 0x03, 0x00, 0x28, 0x00, 0xe8, 0xfe, 0x34, 0xff, 0x14, 0xfe, 0xb6, 0xfd, 0x27, 0xff, + 0x89, 0x01, 0xc0, 0x03, 0xce, 0x04, 0xb6, 0x05, 0x72, 0x04, 0x3c, 0x03, 0xac, 0x00, 0x6d, 0x01, + 0x99, 0x00, 0x67, 0x02, 0x30, 0x03, 0xf8, 0x03, 0x2a, 0x03, 0xff, 0x02, 0xd7, 0x00, 0x2a, 0xfe, + 0xfe, 0xfa, 0x72, 0xf9, 0x75, 0xf9, 0x34, 0xf8, 0x56, 0xf8, 0x06, 0xf8, 0x37, 0xf8, 0xa0, 0xf8, + 0x12, 0xf9, 0x0d, 0xf9, 0xaf, 0xfb, 0x7b, 0xfd, 0x53, 0x01, 0xd0, 0x03, 0x1f, 0x05, 0xb4, 0x06, + 0x4e, 0x0a, 0xf7, 0x0a, 0x0f, 0x0b, 0xaa, 0x09, 0xff, 0x07, 0x8d, 0x08, 0x2b, 0x06, 0xd8, 0x05, + 0x44, 0x06, 0x0c, 0x07, 0x30, 0x06, 0x97, 0x06, 0x44, 0x05, 0x04, 0x05, 0x2e, 0x02, 0x5f, 0x01, + 0xb4, 0x01, 0x4f, 0x02, 0x3f, 0x02, 0x1d, 0x02, 0x97, 0x00, 0xf4, 0xff, 0xd9, 0xff, 0x73, 0xfd, + 0x5f, 0xfd, 0x86, 0xfd, 0x30, 0xfd, 0x4c, 0xfd, 0xff, 0xfe, 0x73, 0x00, 0x48, 0x04, 0x14, 0x07, + 0xc1, 0x09, 0x49, 0x0b, 0xa1, 0x09, 0x9a, 0x06, 0xbc, 0x04, 0x43, 0x02, 0xd6, 0x00, 0xcd, 0xfd, + 0x25, 0xfb, 0xaa, 0xf9, 0xf0, 0xf5, 0xbb, 0xf5, 0x78, 0xf5, 0x27, 0xf7, 0x1c, 0xf7, 0xe3, 0xf7, + 0x33, 0xf8, 0xd9, 0xf9, 0xf1, 0xf9, 0x77, 0xfa, 0x66, 0xfc, 0x1b, 0xff, 0x88, 0x00, 0x98, 0x01, + 0x20, 0x03, 0x0e, 0x03, 0x82, 0x02, 0x75, 0x00, 0x15, 0x02, 0x8c, 0x03, 0x98, 0x04, 0xf4, 0x06, + 0x32, 0x0b, 0xa1, 0x0d, 0x53, 0x0f, 0xb3, 0x10, 0x4b, 0x13, 0xd1, 0x13, 0x59, 0x11, 0x7a, 0x0d, + 0xb8, 0x0a, 0xdf, 0x06, 0x6e, 0x02, 0xf0, 0xff, 0x4d, 0xfd, 0x9c, 0xfe, 0xd2, 0xfd, 0xcb, 0xfd, + 0x6e, 0xfd, 0x7b, 0xfe, 0xa0, 0xfd, 0x3a, 0xfe, 0xcc, 0xfe, 0x3e, 0x01, 0x48, 0x02, 0x14, 0x02, + 0x14, 0x03, 0x39, 0x04, 0xa7, 0x04, 0x3c, 0x04, 0xf5, 0x03, 0xd6, 0x02, 0x51, 0x04, 0x59, 0x04, + 0xdb, 0x05, 0x63, 0x07, 0x1e, 0x08, 0xbd, 0x06, 0x40, 0x05, 0x41, 0x03, 0x18, 0x03, 0xc5, 0xff, + 0x49, 0xfd, 0x13, 0xfe, 0x96, 0xfb, 0x7a, 0xf9, 0x11, 0xf7, 0xd8, 0xf5, 0xd4, 0xf3, 0x23, 0xf2, + 0x87, 0xee, 0xce, 0xee, 0x0f, 0xee, 0xc4, 0xed, 0x88, 0xee, 0x72, 0xef, 0x38, 0xef, 0xc5, 0xef, + 0xc7, 0xf1, 0x11, 0xf4, 0x05, 0xf6, 0x8c, 0xf6, 0x5f, 0xf9, 0xc2, 0xfc, 0x12, 0x01, 0xe8, 0x03, + 0xb3, 0x06, 0x99, 0x06, 0x36, 0x07, 0xdb, 0x05, 0xde, 0x02, 0x04, 0x00, 0xab, 0xff, 0xda, 0xfe, + 0xbe, 0xfc, 0x94, 0xfb, 0x8b, 0xfc, 0x6f, 0xfe, 0xa3, 0xff, 0x5b, 0x03, 0x4e, 0x05, 0xd5, 0x04, + 0x69, 0x02, 0x64, 0x02, 0x34, 0x01, 0xe7, 0xff, 0xb8, 0xfc, 0x0b, 0xfd, 0x34, 0xfd, 0xbd, 0xfc, + 0xb3, 0xfb, 0x44, 0xfc, 0xf5, 0xfd, 0xc9, 0xff, 0xa2, 0x00, 0x41, 0x02, 0x62, 0x05, 0x54, 0x06, + 0xba, 0x07, 0xa0, 0x08, 0xaf, 0x0b, 0x6b, 0x0c, 0xf1, 0x0c, 0xa3, 0x0a, 0x1d, 0x07, 0x8e, 0x03, + 0x64, 0x00, 0xb5, 0xfd, 0x4e, 0xfc, 0xf3, 0xfb, 0xdc, 0xfa, 0x4a, 0xfb, 0x99, 0xfc, 0x64, 0xfd, + 0x27, 0xfd, 0x72, 0xff, 0x85, 0x00, 0xf4, 0x00, 0x32, 0x00, 0xa3, 0x00, 0xe7, 0xff, 0x66, 0x00, + 0xd4, 0xfe, 0x26, 0xfe, 0xa6, 0xfc, 0x1d, 0xfc, 0xf6, 0xfc, 0x85, 0xfb, 0x68, 0xfb, 0x19, 0xfc, + 0xc7, 0xfd, 0x7d, 0xfe, 0xff, 0x01, 0x48, 0x03, 0x2d, 0x03, 0x19, 0x03, 0x32, 0x04, 0x57, 0x03, + 0x96, 0x01, 0x67, 0xff, 0x44, 0xfe, 0x3b, 0xfc, 0x0a, 0xfb, 0x95, 0xfa, 0x37, 0xfa, 0x22, 0xfa, + 0x60, 0xf8, 0xa1, 0xf6, 0xca, 0xf5, 0xdb, 0xf6, 0xa3, 0xf7, 0x98, 0xf9, 0xcc, 0xfa, 0x3f, 0xfc, + 0x33, 0xfc, 0xaf, 0xfd, 0x37, 0xfd, 0x9c, 0xfc, 0x8d, 0xfb, 0xa4, 0xfa, 0x22, 0xfa, 0x9c, 0xfa, + 0x21, 0xfc, 0x52, 0xfd, 0x47, 0xff, 0xc9, 0x00, 0x49, 0x02, 0x54, 0x01, 0xb8, 0x02, 0xcf, 0x03, + 0x8c, 0x04, 0xc3, 0x03, 0xcc, 0x04, 0x93, 0x05, 0xd8, 0x06, 0x17, 0x07, 0xe6, 0x07, 0x3b, 0x09, + 0x9d, 0x08, 0x2a, 0x08, 0x76, 0x07, 0x71, 0x07, 0x67, 0x06, 0xf7, 0x06, 0xa2, 0x06, 0xff, 0x07, + 0x6d, 0x08, 0xd0, 0x09, 0xa5, 0x0b, 0x37, 0x0c, 0x06, 0x0b, 0xf5, 0x09, 0x83, 0x09, 0x63, 0x09, + 0x2c, 0x07, 0x41, 0x05, 0x13, 0x07, 0x46, 0x07, 0xf6, 0x06, 0x80, 0x05, 0xf2, 0x04, 0x9f, 0x02, + 0x00, 0x02, 0xf1, 0xff, 0xda, 0xff, 0x11, 0xff, 0x80, 0xfe, 0x63, 0xfe, 0xab, 0xff, 0x2d, 0x01, + 0xa5, 0x00, 0x50, 0x00, 0x44, 0xfe, 0x40, 0xfc, 0x9b, 0xf9, 0xb8, 0xf8, 0x53, 0xf8, 0x18, 0xf9, + 0xc7, 0xf8, 0x90, 0xf8, 0x7f, 0xf7, 0x06, 0xf8, 0x5e, 0xf8, 0x41, 0xf9, 0x39, 0xfb, 0x1c, 0xff, + 0x8c, 0x00, 0xaa, 0x00, 0xff, 0x02, 0x10, 0x05, 0x43, 0x06, 0x97, 0x05, 0x9d, 0x06, 0x77, 0x06, + 0xf9, 0x05, 0x44, 0x04, 0x52, 0x04, 0xc5, 0x01, 0x0f, 0x00, 0xe2, 0xfe, 0xbf, 0xff, 0x89, 0x00, + 0x8a, 0x00, 0xad, 0xff, 0x83, 0xff, 0x18, 0xff, 0x01, 0xfe, 0x20, 0xfe, 0xd9, 0xfd, 0x20, 0xfe, + 0x57, 0xfc, 0x65, 0xfc, 0x22, 0xfc, 0x2b, 0xfb, 0xba, 0xf9, 0xb3, 0xf8, 0x76, 0xf7, 0x32, 0xf8, + 0x81, 0xf9, 0xae, 0xfb, 0x2e, 0xff, 0x9d, 0x03, 0x34, 0x05, 0x7c, 0x05, 0xd4, 0x05, 0x2b, 0x04, + 0x95, 0x02, 0x1e, 0x00, 0xfc, 0xff, 0x57, 0xfe, 0x94, 0xfc, 0xde, 0xfa, 0x81, 0xfa, 0x25, 0xfa, + 0xc1, 0xf9, 0x81, 0xf9, 0x57, 0xfa, 0xcb, 0xf9, 0x7e, 0xfa, 0xe6, 0xf9, 0xff, 0xf9, 0x94, 0xfa, + 0xf1, 0xf8, 0x9f, 0xfa, 0x89, 0xfa, 0x4d, 0xfa, 0x12, 0xf9, 0x33, 0xf8, 0x52, 0xf7, 0xe3, 0xf7, + 0xe1, 0xf8, 0x67, 0xfb, 0x7c, 0xfd, 0x23, 0x01, 0xd8, 0x03, 0x18, 0x05, 0x5d, 0x07, 0x36, 0x08, + 0x41, 0x07, 0x9b, 0x05, 0x75, 0x06, 0xf3, 0x04, 0xd1, 0x03, 0xd3, 0x01, 0x30, 0x01, 0x05, 0x01, + 0x02, 0x01, 0x5a, 0x00, 0x1d, 0x02, 0x19, 0x02, 0x25, 0x01, 0x71, 0x00, 0x6a, 0x00, 0x74, 0x01, + 0x4c, 0x01, 0xfa, 0x02, 0xa1, 0x03, 0xc1, 0x04, 0x5f, 0x04, 0x8e, 0x03, 0xde, 0x00, 0xad, 0xfe, + 0x10, 0xfe, 0x6a, 0xfe, 0x41, 0x00, 0x90, 0x03, 0x90, 0x05, 0x66, 0x06, 0x0e, 0x07, 0x54, 0x05, + 0x59, 0x03, 0xba, 0x01, 0x77, 0x01, 0x78, 0x02, 0x6c, 0x01, 0x3c, 0xfe, 0xf0, 0xfc, 0x34, 0xfa, + 0xa9, 0xf8, 0x25, 0xf7, 0x7c, 0xf6, 0xa1, 0xf6, 0x72, 0xf7, 0xf5, 0xf4, 0x7a, 0xf4, 0x05, 0xf5, + 0x6d, 0xf4, 0x57, 0xf5, 0xba, 0xf6, 0xa1, 0xf9, 0x98, 0xfb, 0xef, 0xfe, 0xbe, 0xff, 0xf1, 0x01, + 0xa8, 0x02, 0x0f, 0x05, 0x73, 0x07, 0x3a, 0x08, 0x44, 0x08, 0xeb, 0x07, 0x90, 0x07, 0x69, 0x06, + 0x92, 0x04, 0x10, 0x03, 0x4f, 0x02, 0xbc, 0x00, 0x4a, 0xff, 0x88, 0xfd, 0x49, 0xfd, 0xae, 0xfd, + 0x51, 0xff, 0x99, 0xfe, 0x86, 0xff, 0x54, 0xff, 0xa3, 0xff, 0x4e, 0xff, 0xfe, 0xfe, 0x23, 0x00, + 0x96, 0x00, 0xc2, 0x00, 0x2c, 0x02, 0xa0, 0x03, 0xf7, 0x02, 0xda, 0x04, 0xc6, 0x05, 0x38, 0x07, + 0x24, 0x07, 0x0c, 0x09, 0x4b, 0x0a, 0x8f, 0x0c, 0xc3, 0x0e, 0x58, 0x10, 0xca, 0x10, 0x35, 0x0f, + 0x0e, 0x0c, 0xaf, 0x08, 0xcf, 0x04, 0xd9, 0x01, 0x79, 0xff, 0xb4, 0xfd, 0x2b, 0xfc, 0x17, 0xfa, + 0xfd, 0xf9, 0xc1, 0xf9, 0x57, 0xfa, 0x26, 0xfb, 0xb3, 0xfd, 0x3a, 0xfe, 0x48, 0x00, 0xb9, 0x00, + 0x53, 0x02, 0x77, 0x03, 0xba, 0x03, 0xf3, 0x03, 0x71, 0x04, 0x13, 0x05, 0xb2, 0x05, 0x31, 0x06, + 0x63, 0x05, 0x1f, 0x07, 0x0a, 0x06, 0x8c, 0x07, 0xd6, 0x09, 0x3b, 0x0b, 0x0c, 0x0b, 0xc7, 0x0b, + 0xe4, 0x0a, 0xe1, 0x09, 0xee, 0x07, 0xe5, 0x03, 0xa0, 0xff, 0xbc, 0xf9, 0x12, 0xf5, 0xcc, 0xf1, + 0x42, 0xef, 0xd1, 0xed, 0xa4, 0xec, 0x88, 0xe9, 0x37, 0xe7, 0x32, 0xe6, 0x1e, 0xe6, 0xb8, 0xe6, + 0x1b, 0xea, 0x45, 0xeb, 0x17, 0xec, 0xfe, 0xed, 0xd1, 0xef, 0xd5, 0xf0, 0xb5, 0xf1, 0x88, 0xf3, + 0x19, 0xf5, 0x4f, 0xf7, 0x96, 0xf8, 0xef, 0xfb, 0x1e, 0xff, 0x17, 0x03, 0xab, 0x04, 0x37, 0x06, + 0xfb, 0x06, 0xcf, 0x07, 0x29, 0x07, 0xea, 0x07, 0x6f, 0x08, 0xc7, 0x07, 0x08, 0x08, 0x71, 0x06, + 0x2b, 0x04, 0x35, 0x02, 0x30, 0x00, 0x03, 0xfe, 0xd9, 0xfc, 0xe9, 0xfb, 0xad, 0xfb, 0xdb, 0xfa, + 0x10, 0xfb, 0x7e, 0xfa, 0x15, 0xfa, 0x67, 0xf9, 0x2e, 0xfc, 0xaf, 0xfe, 0xf8, 0xff, 0x63, 0x00, + 0xae, 0xff, 0xd2, 0x00, 0x47, 0x01, 0x59, 0x02, 0x18, 0x04, 0x21, 0x08, 0x3b, 0x0a, 0x7f, 0x0d, + 0xe7, 0x0d, 0xcb, 0x0e, 0xbf, 0x0d, 0x9a, 0x0c, 0x47, 0x0c, 0x73, 0x0b, 0x09, 0x0b, 0x6b, 0x0b, + 0xef, 0x0a, 0xeb, 0x0a, 0x47, 0x0c, 0x6f, 0x0b, 0xc8, 0x0a, 0xb9, 0x07, 0x80, 0x05, 0xde, 0x03, + 0x7b, 0x01, 0xaf, 0xfe, 0xbb, 0xfc, 0xbe, 0xfa, 0xe6, 0xf8, 0x65, 0xf8, 0x95, 0xf7, 0xa6, 0xf5, + 0x4d, 0xf6, 0x4a, 0xf6, 0x71, 0xf6, 0xa1, 0xf7, 0xae, 0xf9, 0x06, 0xfd, 0xbc, 0xfe, 0xa6, 0x00, + 0xf2, 0x01, 0xce, 0x03, 0x8c, 0x03, 0x53, 0x04, 0xc7, 0x03, 0xcc, 0x05, 0x0f, 0x06, 0x86, 0x05, + 0x9c, 0x04, 0x06, 0x04, 0x61, 0x05, 0x91, 0x06, 0x5b, 0x08, 0x3e, 0x09, 0xf6, 0x09, 0x3e, 0x09, + 0xee, 0x07, 0xaf, 0x04, 0x7a, 0x02, 0x26, 0x00, 0x8a, 0xff, 0x5f, 0xff, 0x42, 0xfe, 0x57, 0xfc, + 0x7d, 0xfa, 0x6e, 0xf7, 0xe9, 0xf5, 0x70, 0xf5, 0xb0, 0xf4, 0x6a, 0xf7, 0x68, 0xfa, 0x75, 0xfc, + 0x0a, 0xfc, 0xa7, 0xfd, 0x15, 0xfe, 0x46, 0xfd, 0xe8, 0xfb, 0x31, 0xfd, 0xa9, 0xfc, 0x47, 0xfd, + 0x5e, 0xfd, 0xb0, 0xfd, 0xe2, 0xfd, 0xb3, 0xfd, 0xad, 0xfd, 0x3a, 0xfd, 0xc2, 0xfe, 0xa8, 0xff, + 0x68, 0x01, 0x20, 0x01, 0x8a, 0x01, 0x2a, 0x02, 0x3f, 0x01, 0x27, 0x00, 0x5a, 0xff, 0xd3, 0xfd, + 0x8e, 0xfd, 0xc9, 0xfb, 0x8e, 0xfb, 0xb8, 0xfb, 0xba, 0xfa, 0xb6, 0xf9, 0x6f, 0xfa, 0x3c, 0xfb, + 0x74, 0xfb, 0x60, 0xfd, 0x97, 0xfe, 0x3f, 0x01, 0x01, 0x00, 0xd1, 0x00, 0xe3, 0x01, 0x83, 0x02, + 0x37, 0x02, 0xff, 0x03, 0xaa, 0x04, 0x67, 0x06, 0x85, 0x08, 0x58, 0x09, 0x05, 0x0b, 0x94, 0x0b, + 0xf8, 0x0b, 0xa2, 0x0b, 0x51, 0x0d, 0x65, 0x0d, 0x27, 0x0e, 0x6b, 0x0d, 0xee, 0x0d, 0x37, 0x0e, + 0x10, 0x0e, 0x1a, 0x0d, 0xe0, 0x0a, 0x6a, 0x08, 0xb8, 0x06, 0x5d, 0x05, 0xf7, 0x03, 0x3f, 0x03, + 0xe7, 0x00, 0x5e, 0xfe, 0xd6, 0xfa, 0x01, 0xf8, 0xbc, 0xf3, 0x52, 0xf2, 0x78, 0xf1, 0xb5, 0xf1, + 0x9a, 0xf1, 0xbd, 0xf1, 0xda, 0xf2, 0x55, 0xf3, 0xc2, 0xf2, 0x37, 0xf3, 0xec, 0xf2, 0x0f, 0xf3, + 0x94, 0xf4, 0xd4, 0xf5, 0x43, 0xf8, 0x93, 0xfa, 0x54, 0xfc, 0x8d, 0xfc, 0x17, 0xff, 0xeb, 0x01, + 0x59, 0x05, 0xe7, 0x06, 0xd3, 0x07, 0x92, 0x09, 0x46, 0x09, 0x0b, 0x09, 0x15, 0x09, 0xc9, 0x07, + 0xeb, 0x06, 0x9f, 0x06, 0xaf, 0x04, 0xac, 0x02, 0xd8, 0xff, 0x9d, 0xfc, 0x80, 0xf8, 0x58, 0xf5, + 0x07, 0xf3, 0xba, 0xf2, 0xfa, 0xf2, 0x61, 0xf3, 0x8f, 0xf2, 0xdb, 0xf1, 0x44, 0xf2, 0xc3, 0xf3, + 0x88, 0xf4, 0x4b, 0xf6, 0x7b, 0xf8, 0x16, 0xfa, 0xf3, 0xfc, 0xda, 0xfd, 0x97, 0x00, 0x3c, 0x01, + 0x49, 0x02, 0x2b, 0x03, 0x3d, 0x04, 0x36, 0x05, 0x09, 0x07, 0x20, 0x08, 0x35, 0x09, 0xee, 0x0a, + 0x3e, 0x0c, 0xf7, 0x0b, 0x06, 0x0b, 0xc6, 0x0a, 0xfe, 0x08, 0x18, 0x07, 0x5f, 0x04, 0xc6, 0x03, + 0x48, 0x02, 0x75, 0x01, 0xad, 0xff, 0xba, 0xfd, 0x1e, 0xfc, 0x3a, 0xfc, 0xef, 0xfc, 0x0d, 0xff, + 0x83, 0xff, 0x53, 0x00, 0x1a, 0x01, 0x35, 0x02, 0x68, 0x03, 0x80, 0x03, 0x75, 0x05, 0x2e, 0x06, + 0x7b, 0x08, 0x2c, 0x09, 0x1e, 0x0b, 0x50, 0x0a, 0x52, 0x0a, 0x05, 0x0a, 0xae, 0x09, 0x38, 0x09, + 0x3e, 0x09, 0x3d, 0x0a, 0x9d, 0x09, 0xd4, 0x08, 0x0e, 0x08, 0xd8, 0x05, 0xd1, 0x02, 0x10, 0x01, + 0x49, 0xff, 0x41, 0xfe, 0x7e, 0xfc, 0xd8, 0xfb, 0xee, 0xf9, 0x46, 0xf8, 0xb1, 0xf5, 0x58, 0xf4, + 0xda, 0xf0, 0x97, 0xf0, 0xeb, 0xf1, 0x70, 0xf3, 0x91, 0xf5, 0xc3, 0xf5, 0x61, 0xf6, 0x6f, 0xf6, + 0x3b, 0xf8, 0x9c, 0xf8, 0xbd, 0xf9, 0xf1, 0xf9, 0x7e, 0xfc, 0x02, 0xfd, 0x13, 0xff, 0xb1, 0xff, + 0x5d, 0x00, 0xa3, 0x00, 0xa2, 0x00, 0x96, 0x00, 0x5d, 0x00, 0x61, 0x00, 0x34, 0x01, 0x75, 0x01, + 0x73, 0x01, 0xa1, 0x02, 0xc8, 0x01, 0xa1, 0x00, 0x59, 0xff, 0x6f, 0xfe, 0x6b, 0xfd, 0x33, 0xfe, + 0x07, 0xfd, 0x03, 0xfc, 0x19, 0xfb, 0x8c, 0xfa, 0x45, 0xf9, 0x04, 0xfa, 0x83, 0xfb, 0x50, 0xfe, + 0x84, 0x00, 0xa8, 0xff, 0x0a, 0x00, 0x6c, 0x00, 0xaf, 0x00, 0x4b, 0x00, 0x98, 0x00, 0x3e, 0x01, + 0xdb, 0x02, 0x90, 0x03, 0x83, 0x05, 0xc7, 0x05, 0xbe, 0x06, 0x40, 0x05, 0x97, 0x02, 0xe2, 0x01, + 0x35, 0x03, 0xe7, 0x04, 0x70, 0x06, 0x7a, 0x07, 0x31, 0x08, 0xfd, 0x08, 0x39, 0x08, 0x4b, 0x08, + 0x0e, 0x06, 0x2a, 0x04, 0x0d, 0x03, 0x69, 0x01, 0x82, 0xff, 0x36, 0xff, 0x95, 0xfd, 0x8d, 0xfa, + 0x45, 0xf8, 0x6d, 0xf6, 0x9a, 0xf6, 0x30, 0xf7, 0x07, 0xf8, 0x05, 0xf6, 0x2f, 0xf6, 0x7b, 0xf6, + 0x6f, 0xf7, 0x05, 0xf8, 0x16, 0xfb, 0x57, 0xfd, 0x7f, 0xfd, 0x56, 0xfe, 0x8a, 0x00, 0x1b, 0x01, + 0x1f, 0x02, 0x89, 0x04, 0x44, 0x05, 0xde, 0x05, 0x74, 0x06, 0xa2, 0x07, 0xcd, 0x08, 0x67, 0x0a, + 0x81, 0x09, 0xaf, 0x0a, 0x71, 0x0a, 0x47, 0x0a, 0x39, 0x0a, 0x5d, 0x0a, 0xba, 0x09, 0x8c, 0x08, + 0x6e, 0x06, 0xd9, 0x05, 0xa5, 0x05, 0x78, 0x02, 0x35, 0x00, 0xd0, 0xfc, 0xc0, 0xf9, 0xb5, 0xf9, + 0x64, 0xfb, 0x5e, 0xfb, 0x51, 0xfb, 0x09, 0xfa, 0x1d, 0xfb, 0x9f, 0xfb, 0xe0, 0xfa, 0x59, 0xfb, + 0x11, 0xfd, 0x63, 0xfd, 0xe1, 0xfe, 0xab, 0x01, 0x5d, 0x02, 0x47, 0x02, 0x88, 0x02, 0x9d, 0x03, + 0x98, 0x02, 0x39, 0x01, 0xe0, 0x02, 0x83, 0x05, 0x5a, 0x04, 0xec, 0x04, 0x09, 0x05, 0x94, 0x04, + 0x75, 0x04, 0x2d, 0x04, 0xa4, 0x03, 0xf0, 0x03, 0xa6, 0x02, 0x89, 0x00, 0x6b, 0xfe, 0x7a, 0xfc, + 0x5d, 0xfc, 0x4a, 0xf9, 0xb4, 0xf8, 0xb7, 0xf9, 0xc1, 0xfb, 0x08, 0xfc, 0xfb, 0xfb, 0x3d, 0xfa, + 0x02, 0xf9, 0x93, 0xf7, 0x84, 0xf6, 0xb3, 0xf8, 0x62, 0xfa, 0xc4, 0xfa, 0xbc, 0xfb, 0xb4, 0xfd, + 0xfe, 0xfc, 0xc7, 0xfc, 0x74, 0xfc, 0xf1, 0xfd, 0xf0, 0xfc, 0x56, 0xfb, 0xed, 0xfc, 0x3a, 0xfe, + 0x4f, 0xfd, 0x19, 0xfe, 0xd1, 0xfd, 0x72, 0xfd, 0x7b, 0xfd, 0x00, 0xfb, 0x47, 0xf9, 0x11, 0xfb, + 0xaa, 0xfa, 0x8c, 0xf8, 0x77, 0xf6, 0xa6, 0xf4, 0xe1, 0xf5, 0x8b, 0xf2, 0xd4, 0xef, 0x88, 0xf0, + 0x98, 0xf2, 0xa6, 0xf3, 0x52, 0xf4, 0xb9, 0xf4, 0x73, 0xf7, 0xb0, 0xf7, 0xca, 0xf6, 0xa9, 0xf8, + 0x4c, 0xf9, 0xa8, 0xfa, 0xbb, 0xfb, 0x7e, 0xfe, 0xff, 0x00, 0xed, 0x03, 0x06, 0x05, 0x87, 0x07, + 0xb1, 0x08, 0xb4, 0x08, 0xd2, 0x09, 0x99, 0x0b, 0x6a, 0x0d, 0x18, 0x10, 0x14, 0x0f, 0x89, 0x0e, + 0x93, 0x0f, 0x06, 0x0e, 0xb8, 0x0c, 0xe6, 0x0b, 0x24, 0x0d, 0x0c, 0x0b, 0x55, 0x08, 0xe1, 0x05, + 0xe5, 0x05, 0xa5, 0x01, 0x40, 0xfc, 0x9b, 0xfb, 0x75, 0xfd, 0x27, 0xfd, 0x27, 0xfd, 0x01, 0xfe, + 0xa3, 0xff, 0x29, 0x00, 0xba, 0xfe, 0xb5, 0x00, 0x06, 0x01, 0xd3, 0x01, 0x07, 0x03, 0x0e, 0x06, + 0xe7, 0x07, 0x91, 0x09, 0xf8, 0x09, 0xf6, 0x0a, 0x99, 0x0c, 0x0f, 0x0c, 0x88, 0x0c, 0x13, 0x0e, + 0x89, 0x0e, 0xeb, 0x0d, 0xf5, 0x0a, 0xa2, 0x09, 0x7c, 0x0a, 0x82, 0x07, 0xff, 0x05, 0x2f, 0x05, + 0xb4, 0x06, 0x00, 0x04, 0x62, 0x00, 0xd8, 0xfd, 0xdb, 0xfd, 0xfb, 0xfc, 0xe1, 0xf9, 0x4d, 0xf9, + 0x96, 0xfb, 0x6f, 0xfc, 0xdb, 0xfc, 0x3f, 0xfc, 0xb6, 0xfc, 0x8e, 0xfe, 0x51, 0xfd, 0xfa, 0xfe, + 0x8c, 0x01, 0xa5, 0x02, 0xfa, 0x01, 0xbc, 0x02, 0x43, 0x04, 0x8a, 0x04, 0x16, 0x02, 0x61, 0x02, + 0xc2, 0x02, 0x0e, 0x04, 0xfa, 0x02, 0xde, 0x03, 0xd4, 0x04, 0xc0, 0x03, 0x1c, 0x02, 0x40, 0x00, + 0x8a, 0x01, 0x6e, 0xff, 0x16, 0xfe, 0x38, 0xfc, 0xdb, 0xfc, 0xee, 0xfb, 0x39, 0xfa, 0xb5, 0xf8, + 0x80, 0xf8, 0x63, 0xf8, 0xb1, 0xf5, 0x93, 0xf3, 0x74, 0xf2, 0xe1, 0xf3, 0xd0, 0xf6, 0x02, 0xf8, + 0xb9, 0xf9, 0xa7, 0xfb, 0x13, 0xf9, 0x3c, 0xfa, 0xe6, 0xfb, 0x29, 0xfd, 0x55, 0xfe, 0x83, 0xff, + 0xba, 0x00, 0x2d, 0x04, 0x21, 0x04, 0x80, 0x03, 0x59, 0x04, 0x49, 0x06, 0x22, 0x05, 0x40, 0x06, + 0xbe, 0x09, 0xf5, 0x09, 0x58, 0x08, 0x09, 0x08, 0xcd, 0x09, 0x86, 0x08, 0xc8, 0x06, 0xa9, 0x06, + 0x07, 0x08, 0xa1, 0x08, 0x57, 0x09, 0xde, 0x06, 0x1f, 0x05, 0x8d, 0x03, 0xe0, 0xff, 0x79, 0xfc, + 0x72, 0xfb, 0xad, 0xfd, 0xc0, 0xfd, 0x5e, 0xfc, 0xf3, 0xfa, 0x33, 0xfc, 0x79, 0xf9, 0x6a, 0xf9, + 0x21, 0xfa, 0x0c, 0xfb, 0x53, 0xfb, 0x21, 0xfc, 0x9f, 0xfc, 0xda, 0xfb, 0xad, 0xfb, 0xb5, 0xfa, + 0x95, 0xfc, 0xa5, 0xfb, 0x41, 0xfb, 0xc6, 0xfa, 0xdc, 0xfa, 0x80, 0xfc, 0x09, 0xfd, 0x1f, 0xfd, + 0x12, 0xfd, 0x15, 0xfb, 0x59, 0xfa, 0x06, 0xfa, 0x5d, 0xf9, 0x0e, 0xf7, 0xdb, 0xf5, 0xb6, 0xf3, + 0x60, 0xf2, 0xf2, 0xf1, 0x70, 0xf0, 0xce, 0xef, 0x36, 0xed, 0x9e, 0xee, 0x04, 0xef, 0xb2, 0xee, + 0x6e, 0xf0, 0x00, 0xf3, 0x6e, 0xf5, 0x34, 0xf6, 0x31, 0xf7, 0x75, 0xf8, 0xf5, 0xf9, 0x1c, 0xfc, + 0xcb, 0xfe, 0x77, 0x01, 0xae, 0x03, 0x8d, 0x03, 0x34, 0x04, 0x75, 0x05, 0xf1, 0x05, 0xad, 0x06, + 0x9f, 0x08, 0x3a, 0x09, 0x3a, 0x09, 0x60, 0x09, 0x70, 0x0b, 0xb0, 0x09, 0x17, 0x08, 0xe9, 0x07, + 0x61, 0x07, 0x0c, 0x08, 0xce, 0x07, 0xe2, 0x05, 0x57, 0x04, 0x7d, 0x03, 0xdf, 0x01, 0x0f, 0x00, + 0x6e, 0xfd, 0x3b, 0xfd, 0x18, 0xfd, 0x05, 0xfe, 0xb2, 0xfd, 0xe6, 0xfe, 0x60, 0xfe, 0x9a, 0xfd, + 0x1f, 0xfe, 0xb9, 0xfd, 0x99, 0xfe, 0xfd, 0xff, 0xcd, 0x02, 0x6e, 0x02, 0x2d, 0x03, 0xfe, 0x03, + 0x99, 0x05, 0x04, 0x06, 0x5a, 0x09, 0xab, 0x0b, 0xd1, 0x0b, 0xef, 0x0b, 0xc7, 0x0b, 0xf7, 0x09, + 0x6b, 0x0b, 0x34, 0x0c, 0x09, 0x0c, 0x1c, 0x0b, 0xca, 0x0b, 0xb1, 0x0b, 0x1d, 0x09, 0x41, 0x08, + 0x1b, 0x07, 0x08, 0x07, 0x75, 0x04, 0x27, 0x03, 0xca, 0x00, 0xed, 0xff, 0xc9, 0xfe, 0x42, 0xff, + 0x4c, 0xff, 0x43, 0xff, 0x38, 0xfe, 0x6a, 0xfc, 0x11, 0xfe, 0xe5, 0xfd, 0x4f, 0xfd, 0xa6, 0xfd, + 0xd1, 0x00, 0xfa, 0x02, 0x5a, 0x02, 0x42, 0x03, 0xc1, 0x04, 0x8f, 0x03, 0x5c, 0x03, 0x44, 0x04, + 0x89, 0x04, 0x85, 0x04, 0x7f, 0x05, 0x63, 0x04, 0x39, 0x04, 0xf2, 0x03, 0x21, 0x05, 0xbb, 0x03, + 0xfb, 0xff, 0x61, 0xfe, 0x0f, 0xfd, 0x9b, 0xfc, 0xe0, 0xfa, 0x26, 0xfa, 0x50, 0xf7, 0x73, 0xf5, + 0x9e, 0xf1, 0xb7, 0xee, 0x5e, 0xee, 0x04, 0xf1, 0xee, 0xf1, 0x5c, 0xef, 0x6b, 0xef, 0x8f, 0xef, + 0x0f, 0xef, 0x38, 0xef, 0xe7, 0xf3, 0x35, 0xf6, 0x35, 0xf9, 0xd3, 0xfc, 0x7e, 0xfd, 0x13, 0xfe, + 0x37, 0x01, 0x86, 0x04, 0xf7, 0x04, 0x1f, 0x06, 0x2d, 0x0a, 0xc5, 0x0b, 0xed, 0x0b, 0xe4, 0x0d, + 0xf7, 0x0e, 0xa8, 0x0e, 0xfe, 0x0d, 0x8c, 0x0d, 0x9d, 0x0c, 0x0b, 0x0e, 0x4e, 0x0d, 0x5d, 0x0b, + 0xed, 0x08, 0xd2, 0x07, 0x3b, 0x04, 0x21, 0x02, 0xfb, 0xff, 0xed, 0xfc, 0x01, 0xfa, 0xbe, 0xf8, + 0x1f, 0xfb, 0x8c, 0xf8, 0xa6, 0xf6, 0x59, 0xf7, 0x11, 0xf8, 0x90, 0xf6, 0x0a, 0xf8, 0x92, 0xf8, + 0xde, 0xf8, 0x48, 0xfb, 0xcc, 0xfd, 0x84, 0xfd, 0xfd, 0xff, 0xca, 0x02, 0xf2, 0x03, 0x2a, 0x02, + 0x0a, 0x02, 0x2c, 0x04, 0xcf, 0x02, 0xc6, 0x02, 0x34, 0x03, 0x81, 0x03, 0x63, 0x02, 0x2d, 0x02, + 0xd8, 0xff, 0x8a, 0xff, 0xb3, 0xfd, 0x45, 0xfd, 0xe3, 0xfc, 0xbe, 0xf9, 0x85, 0xf8, 0x4f, 0xf9, + 0x20, 0xf7, 0x82, 0xf4, 0x7d, 0xf5, 0x51, 0xf6, 0xe7, 0xf8, 0x5f, 0xfa, 0x85, 0xfc, 0xa2, 0xfc, + 0xa9, 0xfd, 0x76, 0xfe, 0xd8, 0xfe, 0x28, 0x00, 0x6a, 0x02, 0x3e, 0x04, 0x1b, 0x05, 0x03, 0x06, + 0x63, 0x06, 0x4b, 0x06, 0xcc, 0x05, 0x9e, 0x05, 0x36, 0x04, 0x35, 0x05, 0xbb, 0x05, 0xa7, 0x03, + 0xaa, 0x03, 0x82, 0x03, 0xa0, 0x02, 0x31, 0x01, 0xa9, 0xfe, 0x7f, 0xff, 0x1f, 0xfd, 0x1a, 0xfb, + 0x4a, 0xfa, 0x75, 0xf9, 0x6c, 0xf8, 0xeb, 0xf7, 0xb2, 0xf6, 0x88, 0xf4, 0x95, 0xf4, 0x2e, 0xf4, + 0xed, 0xf5, 0xba, 0xf5, 0xb0, 0xf7, 0x8c, 0xf7, 0x17, 0xf7, 0xe5, 0xf7, 0x02, 0xf9, 0x22, 0xf8, + 0xf8, 0xf8, 0xd8, 0xfb, 0x2d, 0xfb, 0x68, 0xfa, 0xb1, 0xfb, 0x47, 0xfe, 0x29, 0xff, 0x92, 0x01, + 0xd1, 0x01, 0xc1, 0x01, 0xcc, 0x00, 0x27, 0x02, 0xf0, 0x03, 0x7f, 0x03, 0xcd, 0x03, 0x4e, 0x06, + 0x3f, 0x04, 0x57, 0x05, 0x08, 0x07, 0x31, 0x08, 0x4b, 0x0a, 0x2e, 0x0a, 0xf6, 0x08, 0xef, 0x06, + 0x35, 0x06, 0x76, 0x03, 0xba, 0x00, 0x3a, 0xff, 0x83, 0x01, 0x13, 0x01, 0xeb, 0x01, 0xd6, 0x02, + 0x53, 0x02, 0x42, 0x01, 0x5a, 0x01, 0x73, 0x01, 0xab, 0x01, 0xe4, 0x03, 0xca, 0x04, 0x2b, 0x05, + 0x22, 0x06, 0xff, 0x07, 0x9c, 0x09, 0x53, 0x09, 0x66, 0x09, 0x79, 0x0b, 0x78, 0x09, 0x22, 0x09, + 0x2f, 0x0b, 0x88, 0x0d, 0x64, 0x0c, 0x83, 0x0b, 0xb7, 0x0a, 0x0c, 0x09, 0xb2, 0x08, 0xe1, 0x09, + 0x75, 0x0a, 0x3a, 0x08, 0xce, 0x06, 0xa4, 0x05, 0xeb, 0x02, 0x20, 0x00, 0x2d, 0xff, 0xb4, 0xfc, + 0xd7, 0xfc, 0x26, 0xfd, 0x5d, 0xfc, 0x01, 0xfb, 0xf2, 0xfb, 0xae, 0xfd, 0x30, 0xfe, 0xa4, 0xfe, + 0x57, 0x00, 0xda, 0x02, 0xcb, 0x00, 0x0f, 0x02, 0x7d, 0x04, 0x4c, 0x04, 0xee, 0x04, 0x81, 0x06, + 0xe6, 0x05, 0x26, 0x06, 0x56, 0x05, 0x3b, 0x06, 0xa5, 0x05, 0x6b, 0x05, 0x44, 0x05, 0x45, 0x04, + 0x24, 0x03, 0x88, 0x02, 0xb0, 0xff, 0x24, 0xfd, 0xea, 0xfc, 0x49, 0xfb, 0x09, 0xfa, 0xb6, 0xf8, + 0xb5, 0xf9, 0xaf, 0xf7, 0xf8, 0xf5, 0xb4, 0xf3, 0xb0, 0xf3, 0xb4, 0xf4, 0xfd, 0xf4, 0xc6, 0xf6, + 0x90, 0xf7, 0xeb, 0xf7, 0x8e, 0xf8, 0x56, 0xf7, 0x2e, 0xf7, 0xca, 0xf9, 0x6c, 0xf9, 0x9b, 0xf8, + 0x53, 0xfa, 0xce, 0xfb, 0x41, 0xfb, 0xc5, 0xfb, 0x27, 0xfb, 0x4f, 0xfc, 0x00, 0xfb, 0x64, 0xfb, + 0x75, 0xfc, 0xe8, 0xfb, 0xb5, 0xfc, 0x0c, 0xfe, 0x47, 0xfe, 0xc3, 0xfd, 0xcd, 0xfe, 0x70, 0xfd, + 0x9d, 0xfe, 0x6d, 0xff, 0x36, 0xff, 0xdd, 0xfc, 0xe6, 0xfb, 0x9b, 0xf9, 0x96, 0xf8, 0x3d, 0xf6, + 0xec, 0xf6, 0xe9, 0xf8, 0x31, 0xf7, 0xe6, 0xf8, 0x5b, 0xf8, 0xb8, 0xf7, 0x09, 0xf6, 0x17, 0xf7, + 0x38, 0xf7, 0x07, 0xf9, 0x2a, 0xfa, 0xf2, 0xfa, 0xbd, 0xfb, 0x32, 0xfe, 0xf2, 0xff, 0x16, 0x01, + 0xad, 0x03, 0xeb, 0x05, 0x93, 0x07, 0x3f, 0x06, 0x46, 0x07, 0xc8, 0x08, 0xaf, 0x09, 0xa9, 0x09, + 0x6a, 0x0b, 0x66, 0x0c, 0xab, 0x0c, 0x99, 0x0b, 0x00, 0x0b, 0xdc, 0x0a, 0x68, 0x09, 0x39, 0x07, + 0xba, 0x05, 0xc2, 0x05, 0xa2, 0x03, 0x45, 0xfe, 0xd4, 0xfc, 0xaf, 0xfd, 0xfe, 0xfb, 0xad, 0xfb, + 0xef, 0xfc, 0x15, 0xfd, 0x78, 0xfd, 0xc4, 0xfc, 0x91, 0xfc, 0x8e, 0xfd, 0xe2, 0xfc, 0x14, 0xff, + 0xa7, 0x00, 0xb4, 0x00, 0xc3, 0x01, 0x4a, 0x05, 0x21, 0x07, 0x92, 0x08, 0x8a, 0x0a, 0xd4, 0x09, + 0xea, 0x08, 0xac, 0x0b, 0x11, 0x0d, 0x15, 0x0b, 0x44, 0x0b, 0xde, 0x09, 0xd3, 0x06, 0x32, 0x03, + 0xec, 0x05, 0xdc, 0x04, 0x0b, 0x04, 0x1d, 0x02, 0xc6, 0xff, 0xb7, 0xfc, 0x4b, 0xf9, 0xf6, 0xf7, + 0x1a, 0xf5, 0x72, 0xf4, 0x62, 0xf4, 0xf5, 0xf2, 0x9a, 0xf0, 0xf4, 0xf4, 0xa3, 0xf3, 0xd1, 0xf2, + 0x55, 0xf4, 0xed, 0xf5, 0x1b, 0xf6, 0x46, 0xf8, 0x99, 0xfa, 0xcc, 0xfa, 0xb7, 0xfb, 0xe0, 0xfc, + 0x68, 0xff, 0x0e, 0xfd, 0xcc, 0x01, 0xfd, 0xff, 0x8a, 0x00, 0xaf, 0x00, 0x0f, 0x02, 0xd1, 0xfe, + 0x3e, 0xfe, 0x31, 0xff, 0x87, 0xfe, 0xb7, 0xfd, 0xad, 0xff, 0x8f, 0x00, 0xfb, 0xfd, 0x2a, 0xfc, + 0xd9, 0xfa, 0x96, 0xfa, 0x6d, 0xfb, 0xaf, 0xfa, 0xaa, 0xf7, 0x8a, 0xfa, 0x80, 0xfb, 0x50, 0xfb, + 0x74, 0xfe, 0x92, 0xff, 0x3f, 0x00, 0x6d, 0xfe, 0xd3, 0xff, 0xa2, 0x01, 0x6e, 0x05, 0xb1, 0x06, + 0x67, 0x0a, 0xa0, 0x0a, 0x98, 0x0c, 0x64, 0x0e, 0x01, 0x10, 0xea, 0x13, 0xc3, 0x14, 0x9f, 0x15, + 0xeb, 0x13, 0x06, 0x16, 0xb1, 0x17, 0xce, 0x16, 0x49, 0x17, 0xc4, 0x18, 0x75, 0x13, 0x1b, 0x12, + 0xbd, 0x0e, 0x49, 0x0d, 0x48, 0x0a, 0xf5, 0x07, 0xc0, 0x05, 0x2f, 0x04, 0x9f, 0x02, 0xac, 0xfe, + 0x7c, 0xf9, 0x7a, 0xf8, 0xae, 0xf6, 0xc5, 0xf2, 0xf0, 0xf1, 0x53, 0xf3, 0xc1, 0xf1, 0xa5, 0xf2, + 0x17, 0xf1, 0xf8, 0xee, 0x49, 0xf0, 0x81, 0xef, 0xf3, 0xee, 0x92, 0xf0, 0x75, 0xf0, 0x4a, 0xf1, + 0x5c, 0xf2, 0x81, 0xf4, 0x90, 0xf4, 0x30, 0xf5, 0xf7, 0xf5, 0x5c, 0xf7, 0x03, 0xf7, 0x5a, 0xf9, + 0xbd, 0xf8, 0x7f, 0xf8, 0x58, 0xfc, 0xf3, 0xfb, 0xff, 0xfe, 0x67, 0x00, 0xff, 0x00, 0x4d, 0x03, + 0x5d, 0x03, 0x96, 0x02, 0x4c, 0x06, 0x27, 0x04, 0xc7, 0x04, 0x13, 0x06, 0x4f, 0x05, 0x75, 0x05, + 0x1e, 0x06, 0xcb, 0x03, 0xb4, 0x04, 0x80, 0x04, 0x2b, 0x01, 0xe9, 0x01, 0xeb, 0x01, 0x2b, 0xfd, + 0x49, 0xfe, 0x59, 0x00, 0x94, 0xff, 0xbc, 0xfb, 0xe8, 0xfe, 0x2c, 0xff, 0x4e, 0x00, 0xba, 0x02, + 0x7c, 0x01, 0x73, 0x00, 0xc4, 0x00, 0xeb, 0xfd, 0xa2, 0xff, 0x2c, 0x02, 0x0f, 0x02, 0xe7, 0xff, + 0xc2, 0x00, 0x23, 0x00, 0xd0, 0x01, 0xa0, 0x00, 0x32, 0xff, 0xea, 0xff, 0x46, 0xfd, 0x8d, 0xfd, + 0x3c, 0xfb, 0x22, 0xfa, 0x5d, 0xf9, 0x3f, 0xfb, 0xa1, 0xfb, 0xe1, 0xfa, 0x54, 0xfb, 0x30, 0xfe, + 0x0a, 0xfd, 0x3d, 0x00, 0x6b, 0x02, 0x60, 0x04, 0x80, 0x06, 0x6e, 0x08, 0x60, 0x09, 0x42, 0x0a, + 0x1f, 0x0b, 0x40, 0x09, 0x42, 0x0b, 0xd2, 0x09, 0x3a, 0x08, 0xa1, 0x0a, 0x63, 0x09, 0x49, 0x07, + 0x14, 0x06, 0x1f, 0x06, 0x91, 0x03, 0xa6, 0x00, 0x41, 0xff, 0x05, 0xfe, 0x44, 0xff, 0xec, 0x00, + 0x6c, 0xfc, 0xc8, 0xfb, 0x62, 0xf9, 0x34, 0xf7, 0xef, 0xf6, 0x64, 0xf9, 0xbc, 0xf6, 0x50, 0xf6, + 0x40, 0xf6, 0xba, 0xf7, 0x7d, 0xf8, 0xb0, 0xf8, 0xe3, 0xf8, 0xa5, 0xf7, 0xea, 0xf7, 0xa6, 0xf8, + 0x90, 0xfa, 0x48, 0xfa, 0xb5, 0xfc, 0x5f, 0xfd, 0xdf, 0xfe, 0x8c, 0xff, 0xe3, 0x03, 0xb2, 0x04, + 0x09, 0x06, 0x8a, 0x08, 0x0c, 0x0b, 0xe2, 0x0b, 0x2f, 0x0e, 0xb4, 0x0f, 0x18, 0x0e, 0xe7, 0x0f, + 0x39, 0x0e, 0x31, 0x0d, 0xd7, 0x0e, 0x3a, 0x0d, 0x0a, 0x0c, 0xd7, 0x0d, 0xcc, 0x0d, 0x99, 0x09, + 0x7d, 0x07, 0xe3, 0x04, 0x18, 0x02, 0x90, 0x00, 0xe7, 0xfd, 0x40, 0xfc, 0x05, 0xfd, 0xdc, 0xf9, + 0x9e, 0xf8, 0x61, 0xf6, 0x1f, 0xf4, 0x7c, 0xee, 0xcd, 0xf0, 0x00, 0xf1, 0x26, 0xf1, 0x38, 0xf0, + 0x9e, 0xef, 0x65, 0xf1, 0x7a, 0xf2, 0x6a, 0xf3, 0x6b, 0xf3, 0x43, 0xf4, 0xd6, 0xf3, 0xb5, 0xf5, + 0x7d, 0xf6, 0x38, 0xf9, 0x6a, 0xf9, 0xd4, 0xfa, 0x4f, 0xfa, 0x8b, 0xfc, 0xd0, 0xfb, 0x53, 0xfb, + 0x1b, 0xfc, 0x2c, 0xfd, 0x17, 0xfc, 0x08, 0xfb, 0xd3, 0xfb, 0xd4, 0xf8, 0x7d, 0xf8, 0x2d, 0xfa, + 0x77, 0xf8, 0x1d, 0xfa, 0x3d, 0xfc, 0x7b, 0xf9, 0x21, 0xfa, 0x63, 0xfe, 0x94, 0xff, 0x95, 0x00, + 0x4d, 0x01, 0xa3, 0x01, 0xbb, 0x03, 0xb5, 0x06, 0xea, 0x05, 0x61, 0x08, 0x6a, 0x0a, 0x2d, 0x0d, + 0x85, 0x0c, 0xa0, 0x0f, 0xc5, 0x0d, 0xf1, 0x0c, 0xf0, 0x0b, 0xba, 0x0e, 0xaa, 0x0e, 0x41, 0x0f, + 0x4a, 0x0e, 0x4b, 0x0c, 0xcf, 0x0b, 0xd0, 0x0b, 0xf1, 0x0a, 0xbe, 0x07, 0xf1, 0x07, 0xe8, 0x05, + 0xf5, 0x04, 0x8d, 0x01, 0x3e, 0x00, 0x52, 0xfe, 0x69, 0xfd, 0x0e, 0xfe, 0x61, 0xff, 0xf8, 0xfc, + 0x29, 0xfd, 0x54, 0xfe, 0x2b, 0xfd, 0xc5, 0xfd, 0xc4, 0xfe, 0xf0, 0xfd, 0x28, 0x01, 0x14, 0x03, + 0xfa, 0x00, 0x85, 0x04, 0x7f, 0x07, 0xad, 0x05, 0x34, 0x06, 0xbb, 0x09, 0x01, 0x09, 0x5a, 0x08, + 0x1c, 0x08, 0x02, 0x06, 0xdd, 0x07, 0xfa, 0x05, 0x96, 0x04, 0x95, 0x02, 0x98, 0x03, 0xd4, 0x01, + 0x6d, 0x02, 0xe8, 0x01, 0xcc, 0xff, 0x9a, 0xfa, 0x0b, 0xf9, 0xa1, 0xf6, 0xaa, 0xf6, 0xc0, 0xf7, + 0x89, 0xf7, 0xbf, 0xf7, 0xaf, 0xf8, 0x85, 0xf8, 0x93, 0xf9, 0x25, 0xfa, 0x86, 0xf8, 0x6a, 0xf9, + 0x61, 0xf9, 0x1d, 0xfc, 0xa8, 0xfe, 0x91, 0xff, 0x84, 0x00, 0xe1, 0x02, 0x3c, 0x05, 0xa8, 0x05, + 0xd8, 0x07, 0x62, 0x08, 0x71, 0x06, 0xcc, 0x08, 0x4e, 0x08, 0xb3, 0x06, 0x52, 0x09, 0x07, 0x09, + 0x68, 0x07, 0x7f, 0x08, 0xc5, 0x06, 0x8f, 0x02, 0x06, 0x02, 0x8d, 0x02, 0x3c, 0x01, 0x60, 0x01, + 0x62, 0xfe, 0x59, 0xfc, 0xdd, 0xf8, 0x5c, 0xf7, 0xf0, 0xf3, 0x0b, 0xf3, 0x95, 0xf2, 0xdc, 0xf2, + 0xb7, 0xf1, 0xcc, 0xf3, 0xb8, 0xf1, 0xcc, 0xef, 0x4f, 0xee, 0x1b, 0xef, 0x30, 0xf1, 0x49, 0xf2, + 0x63, 0xf2, 0xbc, 0xf3, 0x58, 0xf4, 0xb7, 0xf4, 0x18, 0xf7, 0x5b, 0xf5, 0xad, 0xf6, 0xef, 0xf7, + 0x12, 0xf7, 0xf0, 0xf9, 0x7e, 0xfc, 0xb6, 0xfc, 0x30, 0xfd, 0xbb, 0xfd, 0xb5, 0xfd, 0xea, 0xfe, + 0x39, 0x01, 0x84, 0x00, 0x2e, 0x02, 0x11, 0x04, 0x83, 0x04, 0xd8, 0x03, 0x77, 0x04, 0x6b, 0x02, + 0x94, 0x00, 0x8e, 0x02, 0x38, 0x03, 0xfb, 0x01, 0x61, 0x03, 0x11, 0x03, 0xd8, 0x04, 0xe6, 0x04, + 0x36, 0x04, 0xf6, 0x01, 0xb6, 0x03, 0xbf, 0x02, 0x69, 0x02, 0x94, 0x03, 0x4b, 0x04, 0x2d, 0x03, + 0x94, 0x05, 0x5f, 0x06, 0x89, 0x05, 0xf6, 0x03, 0xb0, 0x02, 0xea, 0x01, 0x35, 0x02, 0x8d, 0x02, + 0x7a, 0x02, 0x64, 0x02, 0x18, 0x00, 0xd7, 0xff, 0x29, 0x00, 0x41, 0xfe, 0x30, 0xff, 0xa3, 0xfd, + 0xd6, 0xfb, 0xbb, 0xfd, 0xb1, 0xfe, 0x7a, 0xfc, 0x28, 0xfd, 0x0e, 0xfe, 0xe4, 0xfd, 0x5b, 0xff, + 0x15, 0xff, 0x68, 0xfe, 0x3b, 0xff, 0xed, 0xff, 0xfb, 0xfe, 0xea, 0x00, 0xb2, 0x03, 0xb1, 0x03, + 0x78, 0x03, 0xe2, 0x06, 0xac, 0x06, 0xbb, 0x06, 0x4c, 0x07, 0x8b, 0x08, 0x36, 0x08, 0xd7, 0x09, + 0x62, 0x07, 0x1f, 0x08, 0x88, 0x07, 0xb7, 0x06, 0x2e, 0x07, 0x99, 0x07, 0x19, 0x05, 0x47, 0x04, + 0xcb, 0x04, 0xa8, 0x05, 0xbb, 0x05, 0xff, 0x02, 0xdb, 0x00, 0x62, 0x00, 0x5d, 0xff, 0x59, 0xfd, + 0xa2, 0xfe, 0x41, 0xfe, 0xd9, 0xfc, 0xbe, 0xfc, 0x79, 0xfb, 0x13, 0xfc, 0x88, 0xfb, 0x11, 0xfb, + 0x48, 0xfa, 0xc2, 0xfb, 0x61, 0xfc, 0xe6, 0xfb, 0xce, 0xfd, 0x4b, 0xfe, 0x38, 0xff, 0xf4, 0x01, + 0xd2, 0x02, 0xbe, 0x03, 0x43, 0x06, 0xf6, 0x07, 0x40, 0x08, 0x2d, 0x0a, 0xf3, 0x0d, 0xbb, 0x0b, + 0xec, 0x0c, 0xe1, 0x0e, 0xa9, 0x0f, 0x0c, 0x0e, 0x46, 0x0f, 0x67, 0x0f, 0x92, 0x11, 0x9a, 0x10, + 0x4e, 0x0f, 0xaf, 0x0d, 0x85, 0x0c, 0x3e, 0x08, 0x18, 0x05, 0x59, 0x03, 0xbf, 0x01, 0x5e, 0xff, + 0x33, 0xfd, 0xa4, 0xfd, 0x87, 0xfc, 0x31, 0xfa, 0x80, 0xf6, 0x8c, 0xf4, 0x5a, 0xf2, 0x77, 0xf1, + 0x0c, 0xf3, 0x00, 0xf3, 0xac, 0xf2, 0xb3, 0xf3, 0x56, 0xf4, 0x53, 0xf3, 0xdf, 0xf5, 0x1a, 0xf5, + 0x43, 0xf4, 0x69, 0xf5, 0x7a, 0xf7, 0x96, 0xf7, 0xa8, 0xf9, 0xcd, 0xfa, 0x72, 0xfb, 0xe4, 0xfc, + 0x12, 0xfd, 0x03, 0xfc, 0x03, 0xfe, 0xc1, 0xfd, 0x8b, 0xfb, 0xa6, 0xfe, 0x00, 0xfe, 0x37, 0xfc, + 0xaa, 0xf9, 0xe9, 0xfb, 0x40, 0xfb, 0x74, 0xfc, 0x76, 0xfa, 0x53, 0xfb, 0x2a, 0xfc, 0x59, 0xfc, + 0x93, 0xfb, 0x3d, 0xfd, 0x6b, 0xfd, 0x70, 0xfd, 0x03, 0xfe, 0x44, 0xff, 0x9d, 0x00, 0x4a, 0x00, + 0x32, 0x01, 0xd5, 0x03, 0xb4, 0x06, 0x10, 0x05, 0x12, 0x04, 0x67, 0x03, 0x11, 0x02, 0xde, 0x02, + 0x5a, 0x02, 0x31, 0x01, 0x58, 0x00, 0x66, 0xff, 0x90, 0xfb, 0x5f, 0xfb, 0x3f, 0xfb, 0x04, 0xf9, + 0xd6, 0xf6, 0xd7, 0xf6, 0xa6, 0xf4, 0x21, 0xf4, 0xe7, 0xf2, 0xfb, 0xf1, 0x20, 0xf1, 0x8d, 0xf2, + 0x7e, 0xf1, 0xf1, 0xf0, 0xf5, 0xf2, 0x1d, 0xf3, 0xfe, 0xf4, 0x64, 0xf6, 0xb1, 0xf9, 0x56, 0xfa, + 0xa9, 0xfb, 0xc0, 0xfd, 0xad, 0x00, 0x5c, 0x00, 0x2b, 0x02, 0x2f, 0x03, 0xd9, 0x06, 0x0e, 0x08, + 0x4d, 0x09, 0x71, 0x0a, 0xc3, 0x0a, 0x5d, 0x0a, 0xad, 0x0a, 0x44, 0x0b, 0xf5, 0x0b, 0xaf, 0x0a, + 0x05, 0x08, 0x95, 0x09, 0xc6, 0x0a, 0xb7, 0x0a, 0xd7, 0x08, 0x7d, 0x06, 0x96, 0x04, 0x54, 0x03, + 0x15, 0x02, 0x53, 0x00, 0x57, 0x00, 0xc7, 0x00, 0x2d, 0xff, 0x89, 0xff, 0xba, 0x00, 0x42, 0xfe, + 0xa6, 0xfe, 0xf2, 0xfd, 0x7d, 0xfe, 0x2c, 0xfe, 0x13, 0x00, 0x73, 0x00, 0x62, 0x02, 0xe9, 0x04, + 0xee, 0x04, 0x36, 0x05, 0x41, 0x06, 0xce, 0x06, 0x70, 0x06, 0x2c, 0x09, 0x10, 0x0a, 0xf1, 0x0a, + 0x6e, 0x0a, 0x4e, 0x0b, 0x3d, 0x0b, 0x08, 0x0b, 0x9d, 0x07, 0xec, 0x07, 0x83, 0x07, 0x05, 0x07, + 0x12, 0x06, 0xc4, 0x04, 0x1a, 0x04, 0x29, 0x01, 0x07, 0xff, 0xec, 0xfc, 0x1f, 0xfd, 0x2e, 0xfc, + 0x03, 0xfb, 0x37, 0xfb, 0x29, 0xfa, 0xe8, 0xf9, 0xa8, 0xf9, 0x5e, 0xf7, 0xd5, 0xf6, 0x7d, 0xf8, + 0xce, 0xf9, 0xf5, 0xfa, 0xd2, 0xfc, 0x6b, 0xfd, 0x9a, 0xfc, 0x39, 0xff, 0x7e, 0x00, 0x91, 0x00, + 0x5e, 0x00, 0x56, 0x01, 0xc7, 0xff, 0x2d, 0x01, 0x67, 0x01, 0xf6, 0x01, 0x2c, 0x04, 0x6d, 0x05, + 0x49, 0x05, 0x8c, 0x05, 0x27, 0x07, 0xcf, 0x05, 0x54, 0x06, 0xce, 0x07, 0xb8, 0x08, 0xc3, 0x07, + 0x7e, 0x06, 0x98, 0x04, 0x5f, 0x05, 0x3c, 0x03, 0x65, 0x02, 0x01, 0x02, 0x2b, 0x02, 0x6f, 0x02, + 0xb1, 0x02, 0x20, 0x02, 0x98, 0x01, 0xc2, 0xff, 0x93, 0xfe, 0x28, 0xff, 0x2d, 0x00, 0x70, 0xfe, + 0x7e, 0xff, 0x6b, 0xff, 0x09, 0xff, 0x43, 0xff, 0x43, 0xfe, 0xbe, 0xfc, 0x1b, 0xfb, 0xb9, 0xfa, + 0x06, 0xfa, 0x43, 0xfa, 0x6a, 0xfb, 0x0c, 0xfa, 0x35, 0xf9, 0xd1, 0xf8, 0x52, 0xf9, 0x25, 0xf8, + 0xd5, 0xf9, 0x31, 0xf8, 0x62, 0xf7, 0x91, 0xf8, 0x23, 0xf6, 0x9c, 0xf4, 0x4b, 0xf5, 0xae, 0xf5, + 0xde, 0xf5, 0xad, 0xf7, 0x5f, 0xf8, 0xb1, 0xf7, 0x9a, 0xf6, 0x37, 0xf9, 0xd6, 0xfa, 0x14, 0xfb, + 0xda, 0xfa, 0x4c, 0xfd, 0x48, 0xff, 0xd0, 0xff, 0x87, 0xff, 0x26, 0xff, 0x37, 0xff, 0x4a, 0x00, + 0x53, 0x01, 0x17, 0x02, 0xea, 0x02, 0xa8, 0x02, 0x95, 0x00, 0xa4, 0x01, 0x4b, 0x01, 0xd6, 0x00, + 0x0a, 0xff, 0x16, 0xfe, 0x6b, 0xfe, 0xc4, 0xfe, 0x7c, 0xfe, 0x4c, 0xfc, 0x56, 0xfb, 0xff, 0xfb, + 0xba, 0xf9, 0xe2, 0xf9, 0xf7, 0xf8, 0xb4, 0xf7, 0x24, 0xf6, 0x70, 0xf7, 0x5e, 0xf5, 0xe4, 0xf5, + 0xd7, 0xf5, 0x0e, 0xf4, 0xa8, 0xf5, 0xe4, 0xf5, 0x4a, 0xf5, 0x6c, 0xf6, 0xd6, 0xf8, 0xe7, 0xf8, + 0xc5, 0xfa, 0x8f, 0xfc, 0x24, 0x00, 0x6b, 0x01, 0xe0, 0x01, 0xb5, 0x04, 0xbd, 0x07, 0x91, 0x09, + 0xb5, 0x0b, 0x47, 0x0d, 0x85, 0x0f, 0x0d, 0x12, 0x46, 0x10, 0x9b, 0x0f, 0x4f, 0x10, 0x8e, 0x10, + 0x7f, 0x11, 0x0f, 0x12, 0xea, 0x13, 0xe4, 0x11, 0xb3, 0x10, 0x59, 0x0f, 0x54, 0x0d, 0xda, 0x0a, + 0x56, 0x09, 0x0c, 0x07, 0x00, 0x06, 0xdc, 0x05, 0xd7, 0x04, 0xe1, 0x01, 0x8e, 0x00, 0x87, 0xfd, + 0xcd, 0xfc, 0xa9, 0xfc, 0x4a, 0xfe, 0x59, 0xfd, 0x53, 0xfe, 0x00, 0xff, 0xce, 0xfd, 0x66, 0xff, + 0x37, 0xfe, 0xda, 0xfc, 0xea, 0xfd, 0xfe, 0xfe, 0xa6, 0xfe, 0x36, 0xff, 0x73, 0x00, 0xe1, 0x01, + 0xe4, 0x01, 0x63, 0x03, 0xdd, 0x04, 0xa2, 0x04, 0x3c, 0x04, 0xc3, 0x04, 0x39, 0x05, 0x55, 0x05, + 0x56, 0x05, 0xc6, 0x03, 0x34, 0x04, 0xe5, 0x03, 0x58, 0x02, 0x1e, 0x02, 0xde, 0x01, 0x55, 0x01, + 0x4a, 0x00, 0x7a, 0x01, 0x41, 0x02, 0x65, 0x01, 0xfb, 0x00, 0x87, 0x02, 0xcb, 0x01, 0xa3, 0x03, + 0x13, 0x05, 0x14, 0x05, 0x14, 0x05, 0x88, 0x08, 0x00, 0x07, 0xea, 0x06, 0x18, 0x06, 0x3f, 0x05, + 0x6a, 0x03, 0xa9, 0x04, 0x06, 0x05, 0x0b, 0x05, 0xa9, 0x05, 0xbe, 0x03, 0x1f, 0x03, 0x82, 0x02, + 0xee, 0x00, 0x2b, 0xff, 0x67, 0xff, 0xb3, 0xfe, 0xfc, 0xfd, 0x72, 0xfb, 0x63, 0xfa, 0xa9, 0xf7, + 0x80, 0xf6, 0x99, 0xf6, 0x58, 0xf7, 0x23, 0xf7, 0x68, 0xf5, 0xef, 0xf5, 0x71, 0xf7, 0xfd, 0xf8, + 0x19, 0xf8, 0xfe, 0xf8, 0x1b, 0xfa, 0xe2, 0xfb, 0xfe, 0xfc, 0xe3, 0xfd, 0x5b, 0xff, 0xf3, 0xff, + 0x12, 0x00, 0x54, 0x02, 0xeb, 0x03, 0x2b, 0x02, 0xd8, 0x01, 0xa8, 0x01, 0x00, 0x01, 0x6e, 0x00, + 0x35, 0x00, 0x4d, 0xfd, 0x50, 0xfe, 0x5d, 0xfc, 0x06, 0xfc, 0xcd, 0xfb, 0x84, 0xfb, 0xcb, 0xf8, + 0xa3, 0xf7, 0x95, 0xf5, 0xc5, 0xf3, 0x91, 0xf2, 0x3e, 0xf2, 0x0b, 0xf2, 0x4e, 0xf2, 0xe9, 0xf2, + 0x29, 0xf2, 0x20, 0xf2, 0x06, 0xf2, 0xb8, 0xf4, 0xb9, 0xf3, 0x12, 0xf4, 0x19, 0xf5, 0xfe, 0xf5, + 0x54, 0xf6, 0xf6, 0xf9, 0x22, 0xfc, 0x25, 0xfe, 0x0d, 0x00, 0x23, 0x01, 0x58, 0x04, 0xf7, 0x05, + 0x4c, 0x06, 0xfa, 0x07, 0xa2, 0x08, 0xeb, 0x09, 0xc3, 0x0a, 0x51, 0x0a, 0x87, 0x09, 0xa9, 0x07, + 0x83, 0x07, 0x6c, 0x08, 0x08, 0x08, 0x90, 0x07, 0xa6, 0x06, 0xa8, 0x05, 0x24, 0x03, 0x1b, 0x02, + 0x67, 0xfe, 0xd9, 0xfc, 0x9a, 0xfb, 0x4c, 0xfc, 0xc3, 0xf9, 0x7d, 0xfa, 0xcd, 0xf9, 0x56, 0xf8, + 0x03, 0xf8, 0x2c, 0xf8, 0x8d, 0xf7, 0x50, 0xf9, 0x34, 0xfa, 0xa3, 0xfa, 0x19, 0xfd, 0xde, 0xfd, + 0x91, 0xfd, 0x6b, 0xfc, 0xf3, 0xfd, 0x45, 0xfd, 0xaf, 0xfd, 0x81, 0xfe, 0xf8, 0xff, 0x04, 0x01, + 0x82, 0x01, 0x0c, 0x03, 0x2a, 0x03, 0xe4, 0x02, 0x51, 0x02, 0x18, 0x03, 0xab, 0x04, 0xe2, 0x05, + 0xe0, 0x06, 0x4c, 0x07, 0xc1, 0x07, 0xa3, 0x07, 0x0e, 0x06, 0x8a, 0x06, 0x7d, 0x06, 0x74, 0x05, + 0xd8, 0x04, 0x1f, 0x05, 0x59, 0x05, 0x5c, 0x05, 0xe8, 0x04, 0xe1, 0x03, 0x78, 0x05, 0x36, 0x04, + 0x6a, 0x04, 0xb7, 0x03, 0x1b, 0x06, 0x22, 0x06, 0x62, 0x07, 0x30, 0x09, 0x5b, 0x09, 0x2a, 0x07, + 0xe4, 0x06, 0x97, 0x05, 0x9b, 0x04, 0x57, 0x05, 0x0f, 0x05, 0x15, 0x05, 0x51, 0x06, 0x04, 0x07, + 0x1f, 0x05, 0x30, 0x04, 0x1f, 0x03, 0x34, 0x03, 0x60, 0x02, 0x8a, 0x03, 0x5e, 0x03, 0x8d, 0x00, + 0xa8, 0xff, 0x8f, 0x00, 0x3f, 0x00, 0x25, 0x00, 0xf1, 0xff, 0x9f, 0xff, 0x3c, 0xff, 0x83, 0x00, + 0x2c, 0x00, 0xdb, 0xff, 0xf8, 0x01, 0xf6, 0x01, 0x7f, 0x02, 0xe4, 0x03, 0xa8, 0x05, 0x9f, 0x04, + 0xa6, 0x04, 0x9b, 0x05, 0xc6, 0x04, 0xe2, 0x04, 0x01, 0x04, 0xef, 0x03, 0xf0, 0x03, 0x6c, 0x03, + 0xd3, 0x01, 0x99, 0x01, 0xd7, 0x00, 0xa0, 0xff, 0x47, 0xfe, 0x51, 0xfe, 0x8e, 0xfc, 0x47, 0xfb, + 0x97, 0xf9, 0xcf, 0xf7, 0xce, 0xf6, 0x5c, 0xf5, 0xda, 0xf2, 0xf8, 0xf0, 0x19, 0xf2, 0xac, 0xf2, + 0xc5, 0xf1, 0x56, 0xf0, 0x20, 0xef, 0xa8, 0xee, 0xa3, 0xee, 0x85, 0xef, 0x06, 0xf0, 0x45, 0xf0, + 0x8c, 0xf1, 0xbd, 0xf2, 0xbf, 0xf5, 0xd4, 0xf7, 0x69, 0xf8, 0xfe, 0xf9, 0x91, 0xfc, 0xab, 0xff, + 0x76, 0x01, 0xff, 0x02, 0x13, 0x06, 0x76, 0x07, 0xb8, 0x07, 0x1c, 0x0a, 0x90, 0x0b, 0x94, 0x09, + 0x8f, 0x0a, 0xf4, 0x0a, 0xcd, 0x0a, 0xa6, 0x0b, 0x01, 0x0c, 0xb9, 0x09, 0xc7, 0x0a, 0xaa, 0x09, + 0xe1, 0x05, 0x9d, 0x02, 0x64, 0x01, 0x47, 0x00, 0xec, 0xfe, 0xa5, 0xfd, 0x4b, 0xfc, 0x59, 0xfb, + 0xe0, 0xf9, 0x6f, 0xf8, 0x38, 0xf7, 0xfd, 0xf5, 0xde, 0xf4, 0x86, 0xf3, 0x75, 0xf5, 0x46, 0xf7, + 0x40, 0xf8, 0xa2, 0xf8, 0xf2, 0xf9, 0x82, 0xf9, 0xd2, 0xf9, 0xa0, 0xfa, 0x05, 0xfc, 0x32, 0xfd, + 0x13, 0xfd, 0x55, 0xfe, 0xf1, 0x00, 0xde, 0x01, 0xae, 0x01, 0x94, 0x01, 0xd8, 0x02, 0x8d, 0x03, + 0xd1, 0x03, 0x18, 0x05, 0xa2, 0x06, 0x1a, 0x07, 0xca, 0x05, 0x5a, 0x06, 0x88, 0x05, 0xc6, 0x04, + 0xd8, 0x03, 0x8c, 0x03, 0x5a, 0x03, 0xc9, 0x03, 0x18, 0x03, 0x36, 0x01, 0xf4, 0x00, 0xfc, 0x01, + 0x29, 0x01, 0xa7, 0x00, 0xdb, 0x00, 0xa3, 0x01, 0x6d, 0x02, 0x71, 0x02, 0x37, 0x03, 0x2b, 0x03, + 0x18, 0x02, 0x2c, 0x02, 0x26, 0x02, 0x49, 0x03, 0x7c, 0x01, 0xd6, 0x00, 0x47, 0x01, 0xfb, 0x01, + 0xd0, 0x00, 0x96, 0xff, 0xe8, 0xfe, 0xf5, 0xfc, 0xd3, 0xfa, 0xec, 0xf9, 0x52, 0xfa, 0x5b, 0xf9, + 0xb6, 0xf6, 0xb2, 0xf5, 0x51, 0xf4, 0x19, 0xf4, 0x82, 0xf2, 0x46, 0xf1, 0x3d, 0xf2, 0x71, 0xf2, + 0xd2, 0xf2, 0xd4, 0xf3, 0xe6, 0xf6, 0x06, 0xf8, 0x7d, 0xfb, 0x31, 0xfd, 0xf8, 0xff, 0x65, 0x01, + 0xb5, 0x03, 0x95, 0x04, 0xb0, 0x06, 0xcf, 0x09, 0xe9, 0x0a, 0x15, 0x0c, 0x3c, 0x0e, 0x38, 0x0f, + 0x89, 0x0e, 0xc2, 0x0f, 0xf9, 0x0f, 0x12, 0x0f, 0xa9, 0x0e, 0x92, 0x0e, 0xf3, 0x0c, 0x68, 0x0c, + 0x2f, 0x0b, 0xb2, 0x09, 0x4a, 0x0a, 0xfc, 0x08, 0x6d, 0x06, 0x35, 0x03, 0x85, 0x01, 0x18, 0x01, + 0xab, 0x01, 0xe5, 0x00, 0x64, 0x00, 0x8a, 0xfd, 0x04, 0xfc, 0x4b, 0xfc, 0xd2, 0xfc, 0x2e, 0xfb, + 0x37, 0xfc, 0x6f, 0xfc, 0x46, 0xfe, 0x29, 0x02, 0x01, 0x03, 0x9f, 0x04, 0x59, 0x06, 0x3e, 0x07, + 0x32, 0x06, 0x72, 0x07, 0x35, 0x07, 0x19, 0x08, 0x4b, 0x08, 0x97, 0x08, 0x34, 0x08, 0x8f, 0x08, + 0x7e, 0x07, 0x9a, 0x06, 0xbb, 0x05, 0x2a, 0x05, 0xb4, 0x03, 0x29, 0x03, 0x9f, 0x02, 0x02, 0x01, + 0x38, 0xff, 0xcf, 0xfd, 0xd8, 0xfa, 0x5b, 0xf9, 0x3a, 0xfa, 0x59, 0xf9, 0x5e, 0xf8, 0x21, 0xf8, + 0x79, 0xf6, 0x8f, 0xf5, 0x56, 0xf5, 0xe3, 0xf5, 0xf8, 0xf4, 0x16, 0xf4, 0x21, 0xf5, 0x22, 0xf6, + 0x96, 0xf7, 0x38, 0xfa, 0x29, 0xfb, 0x7d, 0xfc, 0x61, 0xfb, 0x4d, 0xfd, 0x86, 0xfd, 0x1b, 0xff, + 0xc8, 0xfe, 0x6c, 0xff, 0x94, 0x01, 0x70, 0x04, 0x64, 0x04, 0x30, 0x02, 0x06, 0x04, 0x6a, 0x02, + 0xb8, 0x01, 0xf0, 0x00, 0x16, 0x02, 0x9c, 0x02, 0xce, 0x02, 0x48, 0x02, 0x90, 0x01, 0x65, 0x00, + 0xed, 0xfe, 0x00, 0xfc, 0x36, 0xfd, 0x6f, 0xfe, 0x8b, 0xfb, 0x5c, 0xfb, 0x80, 0xfb, 0x77, 0xfa, + 0x95, 0xf8, 0x24, 0xf8, 0xa1, 0xf7, 0x62, 0xf8, 0x21, 0xf8, 0x90, 0xf8, 0x60, 0xfa, 0xc6, 0xfa, + 0x67, 0xf9, 0xa8, 0xf8, 0x2d, 0xfa, 0x2f, 0xfb, 0x15, 0xfb, 0x22, 0xfb, 0xa9, 0xfd, 0xf8, 0xfd, + 0xff, 0xfd, 0x20, 0xfe, 0xf3, 0xfe, 0x1f, 0xfe, 0x53, 0xfd, 0xe5, 0xfc, 0x0f, 0xfe, 0x5f, 0xfe, + 0xd5, 0xfd, 0xb3, 0xfb, 0xb7, 0xfb, 0x69, 0xfc, 0x60, 0xfa, 0xa9, 0xfb, 0x19, 0xfd, 0xd6, 0xfc, + 0xd2, 0xfa, 0x2c, 0xfc, 0xed, 0xfb, 0xdb, 0xfc, 0x31, 0xfe, 0xd3, 0x00, 0x0e, 0x01, 0x1b, 0x03, + 0xfc, 0x03, 0xbf, 0x03, 0x45, 0x05, 0x91, 0x06, 0x55, 0x07, 0xc9, 0x08, 0xed, 0x08, 0xbc, 0x09, + 0x38, 0x0b, 0x1f, 0x0b, 0x15, 0x0b, 0x2b, 0x0b, 0xe0, 0x0a, 0x78, 0x0a, 0x8e, 0x09, 0x79, 0x08, + 0x39, 0x06, 0x10, 0x03, 0xd7, 0x02, 0xbf, 0x03, 0x22, 0x02, 0x80, 0x00, 0x02, 0xfe, 0xf7, 0xfb, + 0x9e, 0xfa, 0xba, 0xfa, 0xed, 0xf8, 0xc4, 0xf7, 0xb7, 0xf5, 0xea, 0xf3, 0x60, 0xf3, 0x7a, 0xf4, + 0xca, 0xf4, 0x59, 0xf4, 0x84, 0xf5, 0xf7, 0xf7, 0x04, 0xf9, 0xfa, 0xfa, 0x51, 0xfc, 0xca, 0xfd, + 0xa8, 0xff, 0x6d, 0x01, 0xf1, 0x02, 0x3e, 0x06, 0xf8, 0x0a, 0x1f, 0x0b, 0x57, 0x0d, 0x15, 0x10, + 0xa6, 0x10, 0x42, 0x10, 0xf2, 0x10, 0x2b, 0x11, 0x7d, 0x10, 0x17, 0x10, 0x19, 0x11, 0xf6, 0x10, + 0x91, 0x11, 0x81, 0x0f, 0xc4, 0x0b, 0x87, 0x08, 0xa6, 0x05, 0xc2, 0x04, 0x3b, 0x03, 0x7a, 0x02, + 0x5b, 0xff, 0x73, 0xfc, 0x87, 0xfb, 0xef, 0xf9, 0xd2, 0xf8, 0xaf, 0xf5, 0x15, 0xf5, 0x44, 0xf4, + 0x52, 0xf4, 0x33, 0xf6, 0xa4, 0xf7, 0x72, 0xf7, 0x98, 0xf8, 0x59, 0xf8, 0x67, 0xf9, 0x11, 0xfc, + 0x1b, 0xfc, 0x09, 0xfc, 0x85, 0xfd, 0xd0, 0xff, 0x4b, 0x01, 0x42, 0x04, 0x79, 0x04, 0xe5, 0x04, + 0x2c, 0x07, 0xd8, 0x06, 0x24, 0x06, 0x21, 0x07, 0x1a, 0x08, 0xdf, 0x07, 0x8d, 0x08, 0xb6, 0x07, + 0x66, 0x06, 0xe5, 0x05, 0x8f, 0x05, 0xb0, 0x05, 0x86, 0x04, 0x9e, 0x03, 0x6b, 0x02, 0x4f, 0x02, + 0x88, 0x00, 0xef, 0xfe, 0x84, 0xfd, 0x64, 0xfc, 0xae, 0xfc, 0xc4, 0xfd, 0x8e, 0xfe, 0xfe, 0x00, + 0xda, 0x01, 0x07, 0x01, 0xe1, 0x00, 0xd5, 0x01, 0xa7, 0x00, 0x6d, 0x00, 0xfa, 0x00, 0x37, 0x01, + 0x24, 0x02, 0x9f, 0x02, 0xa6, 0x02, 0x59, 0x02, 0x10, 0x00, 0xe7, 0xfd, 0xe1, 0xfc, 0xa6, 0xfb, + 0x46, 0xfa, 0x59, 0xf8, 0x0c, 0xf8, 0x8e, 0xf6, 0x10, 0xf5, 0xd1, 0xf4, 0x5b, 0xf4, 0x21, 0xf4, + 0x5a, 0xf3, 0x71, 0xf2, 0xc8, 0xf1, 0x21, 0xf2, 0x74, 0xf1, 0xf9, 0xf1, 0xd2, 0xf4, 0xeb, 0xf5, + 0x73, 0xf6, 0xf2, 0xf6, 0x1d, 0xf8, 0xc9, 0xf9, 0xa8, 0xfb, 0x4d, 0xfd, 0x29, 0x00, 0xc6, 0x01, + 0x5f, 0x04, 0xb6, 0x04, 0x4b, 0x05, 0x2d, 0x05, 0x5d, 0x04, 0x63, 0x04, 0xf8, 0x04, 0xad, 0x05, + 0x06, 0x04, 0xcd, 0x00, 0xd1, 0x00, 0xde, 0xfe, 0x82, 0xfe, 0xc2, 0xfe, 0x50, 0xfd, 0x60, 0xfb, + 0x7e, 0xf9, 0x9d, 0xf8, 0xe8, 0xf7, 0x8e, 0xf8, 0x1b, 0xf6, 0x1b, 0xf5, 0x6c, 0xf4, 0xe8, 0xf4, + 0x7f, 0xf4, 0x8f, 0xf4, 0x2d, 0xf6, 0x89, 0xf6, 0x7f, 0xf7, 0x03, 0xfa, 0x32, 0xfb, 0x6c, 0xfc, + 0xd4, 0xff, 0x7c, 0x00, 0x34, 0x02, 0x47, 0x04, 0xe7, 0x05, 0x1b, 0x08, 0xa3, 0x0b, 0x2d, 0x0e, + 0xe1, 0x0e, 0xd3, 0x0f, 0x74, 0x10, 0x67, 0x10, 0xc7, 0x0f, 0x01, 0x0f, 0x33, 0x0e, 0x8d, 0x0e, + 0x90, 0x0e, 0xb3, 0x0e, 0xef, 0x0c, 0x1c, 0x0b, 0xcb, 0x06, 0x48, 0x05, 0xb3, 0x03, 0x91, 0x04, + 0x11, 0x03, 0xc1, 0x00, 0xe9, 0xff, 0x5f, 0xfe, 0x09, 0xfd, 0xf3, 0xfc, 0xa8, 0xfb, 0xf3, 0xfa, + 0x07, 0xfb, 0xf9, 0xf9, 0x50, 0xfc, 0x09, 0xfe, 0x7f, 0xfd, 0x0e, 0xfc, 0x7e, 0xfc, 0x55, 0xfd, + 0xe2, 0xfc, 0x01, 0xfe, 0xd8, 0x00, 0x13, 0x01, 0x1a, 0x02, 0xce, 0x04, 0xf1, 0x04, 0xee, 0x04, + 0xe0, 0x04, 0x17, 0x04, 0x07, 0x04, 0x32, 0x04, 0x7e, 0x03, 0x4c, 0x04, 0x26, 0x05, 0xe6, 0x05, + 0x9e, 0x04, 0xce, 0x03, 0x9f, 0x03, 0x3b, 0x03, 0x2b, 0x02, 0x8d, 0x01, 0x16, 0x00, 0x2e, 0xff, + 0xc1, 0x00, 0xe1, 0xff, 0x01, 0x00, 0xbd, 0xfe, 0x55, 0xfe, 0x45, 0xfd, 0x74, 0xfe, 0xc1, 0xff, + 0xb7, 0x01, 0x7a, 0x01, 0xa6, 0x02, 0xc0, 0x03, 0x37, 0x03, 0xa9, 0x04, 0x5e, 0x04, 0xef, 0x03, + 0x98, 0x04, 0x46, 0x05, 0x96, 0x06, 0xb4, 0x08, 0x5b, 0x07, 0xf1, 0x05, 0x80, 0x04, 0xac, 0x03, + 0xe4, 0x01, 0xd6, 0x00, 0x33, 0x00, 0x64, 0xfe, 0xcd, 0xfd, 0xfb, 0xfc, 0x07, 0xfb, 0x9e, 0xfb, + 0x48, 0xfb, 0x44, 0xfa, 0x2a, 0xfb, 0x79, 0xfa, 0xc9, 0xf9, 0xba, 0xf8, 0xc2, 0xf8, 0xcf, 0xfa, + 0x4f, 0xfb, 0x49, 0xfa, 0xe4, 0xfb, 0xfa, 0xfc, 0x08, 0xfd, 0xf0, 0xfd, 0x3b, 0xfe, 0x23, 0xff, + 0xbd, 0xff, 0x7e, 0x00, 0xf4, 0x00, 0x53, 0x02, 0xc5, 0x01, 0x6e, 0x00, 0x9c, 0xff, 0x10, 0x00, + 0x67, 0xff, 0xe5, 0xfd, 0x5d, 0xfd, 0x04, 0xfd, 0xbd, 0xfb, 0x17, 0xfb, 0x7d, 0xf9, 0x52, 0xf8, + 0xeb, 0xf5, 0x3d, 0xf3, 0x6f, 0xf4, 0x84, 0xf4, 0xf4, 0xf3, 0x02, 0xf4, 0x22, 0xf3, 0x56, 0xf2, + 0xcb, 0xf1, 0xe8, 0xf0, 0x41, 0xf2, 0x3b, 0xf4, 0x9e, 0xf4, 0x8f, 0xf5, 0x1f, 0xf7, 0xa3, 0xf9, + 0x30, 0xfb, 0x77, 0xfd, 0x58, 0x00, 0x99, 0x03, 0xcd, 0x03, 0x46, 0x05, 0x29, 0x07, 0xe8, 0x08, + 0x8b, 0x0a, 0x47, 0x0d, 0x7f, 0x0d, 0xbb, 0x0d, 0xaf, 0x0e, 0x23, 0x0d, 0xc5, 0x0b, 0x11, 0x0b, + 0x13, 0x0b, 0x1f, 0x0a, 0xcc, 0x0a, 0xad, 0x09, 0x6d, 0x06, 0x2d, 0x03, 0x35, 0x01, 0x91, 0xfe, + 0x84, 0xfd, 0x36, 0xfc, 0x08, 0xfb, 0xc8, 0xf7, 0xe3, 0xf6, 0x12, 0xf6, 0x86, 0xf4, 0xbd, 0xf3, + 0x38, 0xf2, 0x98, 0xf1, 0x85, 0xf2, 0x52, 0xf4, 0xf4, 0xf4, 0xc7, 0xf5, 0xdb, 0xf7, 0x06, 0xf9, + 0x99, 0xf9, 0xd8, 0xfa, 0xc9, 0xfc, 0x80, 0xfe, 0xa6, 0x00, 0xda, 0x02, 0xed, 0x03, 0xf3, 0x05, + 0x49, 0x07, 0xcb, 0x06, 0xac, 0x08, 0x3a, 0x09, 0xce, 0x08, 0x55, 0x0a, 0x51, 0x0b, 0x1f, 0x0c, + 0x7d, 0x0d, 0x10, 0x0d, 0xca, 0x0b, 0xff, 0x0b, 0xf3, 0x0b, 0x47, 0x0c, 0x74, 0x0b, 0x01, 0x09, + 0xd6, 0x08, 0xc0, 0x08, 0x37, 0x07, 0x1a, 0x08, 0xfd, 0x06, 0x81, 0x06, 0x9a, 0x07, 0xf9, 0x06, + 0x27, 0x06, 0x16, 0x07, 0xe8, 0x06, 0xe4, 0x05, 0xb1, 0x05, 0x7f, 0x05, 0x4a, 0x05, 0x50, 0x05, + 0xea, 0x03, 0x0b, 0x03, 0x0e, 0x04, 0xe1, 0x04, 0x8b, 0x03, 0xd8, 0x02, 0xe3, 0x01, 0xf4, 0xff, + 0x6a, 0xfd, 0x8b, 0xfb, 0x0d, 0xfa, 0x2d, 0xf9, 0x8b, 0xf8, 0x33, 0xf8, 0x36, 0xf7, 0xcb, 0xf6, + 0x0c, 0xf7, 0x7a, 0xf6, 0xa8, 0xf6, 0x5d, 0xf7, 0x24, 0xf7, 0xbf, 0xf6, 0x60, 0xf7, 0x11, 0xf8, + 0x10, 0xfa, 0x9c, 0xfb, 0x9d, 0xfd, 0xe8, 0xfe, 0xdd, 0x01, 0xcb, 0x03, 0xac, 0x04, 0x1c, 0x06, + 0xb1, 0x06, 0x40, 0x07, 0x07, 0x09, 0x15, 0x0a, 0xfa, 0x09, 0x20, 0x0a, 0xbc, 0x0a, 0x65, 0x0a, + 0x86, 0x09, 0x7e, 0x08, 0x18, 0x07, 0x2d, 0x05, 0x46, 0x04, 0x31, 0x02, 0x30, 0x02, 0x8e, 0x01, + 0x8e, 0x00, 0xa7, 0xfd, 0x8e, 0xfc, 0x09, 0xfb, 0xb6, 0xf8, 0xb6, 0xf8, 0xd3, 0xf8, 0xc2, 0xf6, + 0xf3, 0xf5, 0x4b, 0xf4, 0x7d, 0xf2, 0x74, 0xf1, 0xd3, 0xf0, 0x19, 0xf1, 0xcc, 0xf1, 0xc4, 0xf2, + 0x80, 0xf3, 0xc7, 0xf4, 0xdb, 0xf5, 0xb6, 0xf7, 0xd4, 0xf8, 0x8c, 0xf9, 0xa4, 0xfa, 0xbb, 0xfc, + 0x04, 0xfe, 0x6f, 0xff, 0x3a, 0x00, 0x79, 0x01, 0x44, 0x03, 0xe8, 0x03, 0x06, 0x04, 0x6d, 0x04, + 0x3d, 0x03, 0xd3, 0x01, 0x4c, 0x03, 0xc7, 0x03, 0x8e, 0x03, 0xa0, 0x01, 0xe8, 0xff, 0x39, 0xff, + 0x8a, 0xfd, 0xe5, 0xfc, 0xaa, 0xfc, 0x31, 0xfc, 0x20, 0xfb, 0xad, 0xfa, 0x37, 0xfa, 0x51, 0xfa, + 0x83, 0xf8, 0xf3, 0xf7, 0xb5, 0xf8, 0x0b, 0xf9, 0x45, 0xf9, 0x38, 0xfb, 0xee, 0xfb, 0x8b, 0xfd, + 0xd8, 0xfe, 0x48, 0xff, 0x34, 0xff, 0x07, 0x01, 0x9c, 0x01, 0x3e, 0x03, 0xed, 0x04, 0x88, 0x06, + 0x33, 0x08, 0xdb, 0x07, 0xcf, 0x08, 0xad, 0x07, 0xac, 0x07, 0x2c, 0x07, 0xc3, 0x07, 0xc3, 0x07, + 0xa7, 0x08, 0x43, 0x08, 0x1f, 0x07, 0x9c, 0x05, 0xb3, 0x04, 0xe1, 0x02, 0x85, 0x01, 0x79, 0x01, + 0x1d, 0xff, 0x2b, 0xfe, 0xbb, 0xfe, 0xd4, 0xfe, 0x18, 0xfd, 0xa6, 0xfc, 0xa1, 0xfb, 0xb2, 0xfb, + 0xff, 0xfc, 0x75, 0xfc, 0x12, 0xfd, 0x85, 0xfd, 0xbe, 0xfd, 0xa9, 0xfd, 0x0c, 0xfe, 0x50, 0xff, + 0x18, 0xff, 0x27, 0xfe, 0xa0, 0x00, 0x2c, 0x02, 0xda, 0x02, 0x3c, 0x02, 0x76, 0x02, 0xb4, 0x01, + 0x9f, 0x02, 0xe5, 0x01, 0x40, 0x01, 0x80, 0x01, 0x4c, 0x01, 0xb7, 0x01, 0xf7, 0x01, 0x9e, 0x01, + 0x13, 0x00, 0x67, 0x00, 0x41, 0x00, 0x6b, 0x00, 0x0d, 0x00, 0x06, 0x01, 0x21, 0x00, 0x41, 0x01, + 0x23, 0x02, 0x3d, 0x02, 0x75, 0x02, 0x48, 0x03, 0x73, 0x04, 0xd6, 0x04, 0x9d, 0x05, 0xee, 0x07, + 0x1f, 0x08, 0xdc, 0x07, 0x00, 0x0a, 0x40, 0x0a, 0xbc, 0x09, 0xf4, 0x09, 0x3a, 0x09, 0xe1, 0x08, + 0xad, 0x09, 0x45, 0x09, 0x56, 0x08, 0xa1, 0x07, 0xf6, 0x05, 0x74, 0x03, 0x7b, 0x01, 0x09, 0x01, + 0xcf, 0xff, 0x3a, 0xfe, 0xfb, 0xfc, 0x87, 0xfc, 0xef, 0xfa, 0xf7, 0xf9, 0x05, 0xf8, 0xf0, 0xf7, + 0x28, 0xf7, 0x4b, 0xf6, 0x47, 0xf4, 0x92, 0xf2, 0x8c, 0xf2, 0x1b, 0xf2, 0x05, 0xf3, 0x93, 0xf4, + 0xee, 0xf5, 0xe5, 0xf5, 0x45, 0xf8, 0xf8, 0xf9, 0x64, 0xfb, 0x9e, 0xfc, 0x15, 0xfd, 0xba, 0xfe, + 0x71, 0x01, 0xf5, 0x02, 0xfc, 0x04, 0xc1, 0x07, 0x9d, 0x09, 0x24, 0x0a, 0xe3, 0x0b, 0x5a, 0x0c, + 0x6b, 0x0b, 0x82, 0x0a, 0xc8, 0x0a, 0x71, 0x0a, 0x7a, 0x0a, 0x33, 0x09, 0x88, 0x06, 0xcc, 0x04, + 0xde, 0x02, 0xd7, 0x00, 0xf1, 0xfe, 0x56, 0xfe, 0x3c, 0xfc, 0xb6, 0xf9, 0xd2, 0xf7, 0x04, 0xf6, + 0xb8, 0xf3, 0x68, 0xf1, 0x85, 0xf1, 0xe5, 0xf0, 0xa4, 0xf1, 0xf5, 0xf0, 0xff, 0xf1, 0x3d, 0xf3, + 0xed, 0xf4, 0x94, 0xf6, 0x38, 0xf7, 0x5b, 0xf7, 0x18, 0xf8, 0xe4, 0xf8, 0x67, 0xfa, 0xdd, 0xfc, + 0xa9, 0xfe, 0x64, 0x00, 0x1c, 0x02, 0x91, 0x03, 0xf2, 0x04, 0xa0, 0x05, 0x26, 0x05, 0x68, 0x06, + 0xeb, 0x07, 0x04, 0x09, 0xc0, 0x08, 0x2d, 0x09, 0xc4, 0x07, 0x4a, 0x06, 0xd8, 0x04, 0x95, 0x04, + 0xbe, 0x03, 0x59, 0x02, 0xcb, 0x01, 0x69, 0x01, 0x54, 0x01, 0xbc, 0xff, 0x65, 0xfe, 0xa9, 0xfd, + 0x36, 0xfd, 0x2c, 0xfd, 0xa3, 0xfd, 0x52, 0xff, 0xcc, 0xff, 0x79, 0x00, 0xa2, 0x01, 0x63, 0x01, + 0xaa, 0x00, 0xa8, 0x00, 0x11, 0x00, 0xeb, 0x00, 0x97, 0x02, 0x14, 0x03, 0xe4, 0x02, 0xf1, 0x02, + 0x85, 0x02, 0x0e, 0x02, 0x77, 0x00, 0x0b, 0xff, 0x6e, 0xfe, 0x24, 0xfd, 0xa2, 0xfc, 0x45, 0xfd, + 0xaa, 0xfb, 0xca, 0xfa, 0xee, 0xfa, 0xec, 0xfa, 0xde, 0xfa, 0xa1, 0xfa, 0x71, 0xfa, 0xe5, 0xfa, + 0xfe, 0xfb, 0x0a, 0xfc, 0x6b, 0xfd, 0x84, 0xff, 0x9b, 0x01, 0x87, 0x01, 0xe5, 0x02, 0x64, 0x04, + 0x2f, 0x05, 0x1e, 0x06, 0xb0, 0x07, 0xb9, 0x09, 0x41, 0x0b, 0x87, 0x0b, 0x75, 0x0b, 0x5b, 0x0b, + 0x53, 0x0b, 0x95, 0x0b, 0xe8, 0x0b, 0xb0, 0x0a, 0x51, 0x09, 0xc4, 0x07, 0x72, 0x06, 0x6d, 0x05, + 0x03, 0x04, 0x61, 0x02, 0x72, 0x01, 0xf8, 0x00, 0x49, 0x00, 0xa7, 0xfe, 0x75, 0xfc, 0x03, 0xfb, + 0xa0, 0xfa, 0x8b, 0xf9, 0x08, 0xf9, 0x34, 0xf8, 0x7c, 0xf6, 0x46, 0xf5, 0x17, 0xf6, 0x80, 0xf6, + 0x6c, 0xf7, 0x3b, 0xf8, 0xcb, 0xf8, 0x8c, 0xfa, 0xa4, 0xfb, 0x50, 0xfc, 0x1a, 0xfd, 0x70, 0xfe, + 0x1c, 0x00, 0xaa, 0x01, 0x11, 0x03, 0xf5, 0x04, 0xfe, 0x06, 0x29, 0x08, 0x68, 0x09, 0xbe, 0x09, + 0xb5, 0x08, 0x2e, 0x09, 0xd3, 0x08, 0xb2, 0x08, 0xe9, 0x08, 0x68, 0x08, 0x49, 0x07, 0x08, 0x07, + 0xa5, 0x04, 0x14, 0x03, 0xc8, 0x01, 0xaa, 0x00, 0x34, 0xff, 0xb8, 0xfd, 0x19, 0xfd, 0x07, 0xfc, + 0x57, 0xf9, 0x58, 0xf6, 0x33, 0xf4, 0xcf, 0xf3, 0x64, 0xf4, 0x1a, 0xf4, 0xc2, 0xf3, 0x1e, 0xf4, + 0x11, 0xf5, 0x24, 0xf6, 0xe4, 0xf7, 0x3b, 0xf8, 0x9a, 0xf8, 0xe6, 0xf8, 0x1e, 0xf9, 0xb3, 0xfa, + 0x81, 0xfc, 0x9b, 0xfe, 0xc6, 0xff, 0xe2, 0x01, 0xe8, 0x02, 0x77, 0x03, 0x61, 0x02, 0x8f, 0x02, + 0x54, 0x03, 0xd6, 0x02, 0x2a, 0x04, 0x46, 0x05, 0x8f, 0x04, 0xcc, 0x03, 0x22, 0x03, 0x55, 0x01, + 0x6c, 0x00, 0x5d, 0xff, 0x3b, 0xfe, 0xc5, 0xfd, 0xaf, 0xfe, 0x6f, 0xfd, 0x6b, 0xfd, 0xc4, 0xfc, + 0x35, 0xfc, 0x10, 0xfc, 0xf9, 0xfc, 0x34, 0xfe, 0xcc, 0xfe, 0x2b, 0xff, 0xa1, 0x00, 0x44, 0x01, + 0xd4, 0x01, 0xcc, 0x01, 0x0f, 0x01, 0xf7, 0x01, 0xd2, 0x02, 0xf5, 0x03, 0x97, 0x04, 0x17, 0x05, + 0x5d, 0x05, 0x75, 0x05, 0x75, 0x05, 0x0b, 0x05, 0xfa, 0x02, 0x1f, 0x02, 0x80, 0x01, 0x5a, 0x00, + 0x45, 0xff, 0xaa, 0xfd, 0x8d, 0xfc, 0x9c, 0xfb, 0x14, 0xfd, 0x53, 0xfc, 0xe1, 0xfb, 0x84, 0xfc, + 0xd7, 0xfc, 0x49, 0xfc, 0x9f, 0xfc, 0x55, 0xfd, 0xf8, 0xfd, 0xae, 0xfe, 0xcb, 0xfe, 0x9c, 0xff, + 0x9d, 0x00, 0x3f, 0x01, 0x47, 0x01, 0x15, 0x03, 0xa6, 0x04, 0x46, 0x05, 0xd9, 0x04, 0x51, 0x05, + 0xa9, 0x03, 0xe3, 0x02, 0x46, 0x03, 0x45, 0x03, 0x1d, 0x02, 0x28, 0x02, 0x2a, 0x02, 0x7b, 0x02, + 0x8e, 0x01, 0xd0, 0xff, 0x0f, 0xff, 0x47, 0xfe, 0xce, 0xfd, 0xfb, 0xfc, 0x47, 0xfc, 0x31, 0xfa, + 0x56, 0xfa, 0x8b, 0xfa, 0xfe, 0xfa, 0xbb, 0xfb, 0xcb, 0xfa, 0x8b, 0xf9, 0xb9, 0xf9, 0xaa, 0xf9, + 0x95, 0xf9, 0x09, 0xfb, 0x14, 0xfb, 0xc7, 0xfc, 0x20, 0xff, 0x37, 0x00, 0x2b, 0x01, 0x77, 0x03, + 0xec, 0x04, 0x4a, 0x06, 0x56, 0x08, 0x39, 0x0a, 0x3f, 0x0b, 0x12, 0x0d, 0x40, 0x0f, 0x72, 0x10, + 0x64, 0x10, 0xb3, 0x0f, 0x9d, 0x0e, 0x13, 0x0e, 0xd5, 0x0d, 0x96, 0x0c, 0x69, 0x0d, 0x4a, 0x0c, + 0xea, 0x0a, 0x9e, 0x08, 0xb5, 0x06, 0x00, 0x04, 0xa7, 0x01, 0x3e, 0xff, 0x33, 0xfd, 0x96, 0xfb, + 0x87, 0xf9, 0x42, 0xf6, 0x2e, 0xf3, 0xaa, 0xf1, 0xbb, 0xf0, 0x9f, 0xf0, 0x02, 0xf0, 0x20, 0xf0, + 0xf4, 0xef, 0x69, 0xf0, 0x3e, 0xf2, 0x9c, 0xf3, 0x45, 0xf4, 0x5c, 0xf5, 0x15, 0xf6, 0x65, 0xf7, + 0x73, 0xf9, 0x71, 0xfb, 0x5f, 0xfd, 0x56, 0x00, 0xcc, 0x02, 0x70, 0x03, 0xb3, 0x04, 0x17, 0x05, + 0xb9, 0x05, 0xf7, 0x05, 0x6e, 0x07, 0xcc, 0x08, 0x1e, 0x09, 0xdf, 0x08, 0xbf, 0x08, 0x15, 0x08, + 0x16, 0x07, 0x67, 0x05, 0xc0, 0x03, 0x02, 0x04, 0x0a, 0x03, 0x24, 0x02, 0x5d, 0x01, 0xe5, 0x00, + 0x3e, 0xff, 0x3c, 0xfe, 0x08, 0xfe, 0x46, 0xfe, 0x9e, 0xfd, 0x61, 0xfd, 0x4a, 0xfe, 0xf6, 0xff, + 0xfc, 0x00, 0x58, 0x00, 0x91, 0xfe, 0xf2, 0xfd, 0x9b, 0xfd, 0xee, 0xfd, 0x0e, 0xff, 0x8a, 0xff, + 0xa7, 0xff, 0x6e, 0xff, 0x7a, 0xff, 0x80, 0xfe, 0xdb, 0xfc, 0xad, 0xfb, 0x92, 0xf9, 0x00, 0xf9, + 0xb4, 0xf9, 0xf7, 0xf7, 0xa4, 0xf6, 0x1a, 0xf7, 0xbb, 0xf6, 0xda, 0xf6, 0x96, 0xf7, 0x6f, 0xf8, + 0x84, 0xf8, 0x1e, 0xf9, 0x43, 0xf9, 0xff, 0xf9, 0x28, 0xfa, 0xd3, 0xfb, 0x6b, 0xfd, 0xc6, 0xff, + 0x88, 0x02, 0x06, 0x03, 0x8e, 0x04, 0xe4, 0x06, 0xef, 0x08, 0xef, 0x09, 0x98, 0x0b, 0x27, 0x0c, + 0xf5, 0x0b, 0x91, 0x0b, 0x17, 0x0c, 0x8a, 0x0c, 0x46, 0x0c, 0x5e, 0x0a, 0xa0, 0x09, 0xe8, 0x08, + 0x77, 0x08, 0xe8, 0x06, 0x61, 0x04, 0xfb, 0x02, 0x86, 0x02, 0xf0, 0x00, 0x9b, 0xff, 0x6b, 0xfe, + 0x4a, 0xfc, 0x89, 0xfb, 0xac, 0xfa, 0x67, 0xfa, 0x1d, 0xfa, 0xe8, 0xf8, 0x47, 0xf7, 0x2c, 0xf6, + 0x62, 0xf6, 0x2e, 0xf6, 0xcc, 0xf5, 0x92, 0xf6, 0x52, 0xf7, 0xb1, 0xf7, 0xe4, 0xf8, 0x1a, 0xfa, + 0x2c, 0xfb, 0x59, 0xfc, 0x04, 0xfd, 0xdd, 0xfe, 0xf6, 0xff, 0x07, 0x01, 0x1d, 0x03, 0xf6, 0x04, + 0x79, 0x07, 0x79, 0x07, 0x02, 0x07, 0xbe, 0x07, 0x79, 0x07, 0xce, 0x06, 0x32, 0x07, 0x8f, 0x07, + 0xfb, 0x06, 0x26, 0x06, 0xf6, 0x04, 0xbc, 0x04, 0xa0, 0x02, 0x42, 0x01, 0x91, 0xff, 0x22, 0xff, + 0xc9, 0xff, 0x34, 0xff, 0x34, 0xfd, 0x22, 0xfc, 0xe9, 0xfa, 0xb9, 0xf9, 0xf0, 0xf8, 0x26, 0xf9, + 0x32, 0xf9, 0x1f, 0xf9, 0x2c, 0xfa, 0xd0, 0xfb, 0xe9, 0xfc, 0x9f, 0xfd, 0x77, 0xfd, 0xd0, 0xfd, + 0x75, 0xff, 0xb5, 0xff, 0x80, 0x00, 0x92, 0x02, 0x99, 0x04, 0xbe, 0x05, 0xff, 0x06, 0x5f, 0x07, + 0xd4, 0x07, 0x1f, 0x07, 0xd1, 0x06, 0x18, 0x07, 0xef, 0x07, 0x96, 0x07, 0xe5, 0x06, 0x24, 0x07, + 0x72, 0x06, 0x92, 0x04, 0x65, 0x02, 0xd4, 0x01, 0x28, 0x01, 0x7f, 0x00, 0x90, 0xff, 0xd1, 0xfe, + 0xb1, 0xfd, 0xf6, 0xfb, 0xd7, 0xfb, 0x7a, 0xfb, 0x93, 0xfb, 0x12, 0xfb, 0x2c, 0xfa, 0xe9, 0xfa, + 0x50, 0xfd, 0x98, 0xfd, 0x14, 0xfe, 0x6f, 0xfe, 0x47, 0xfe, 0xa9, 0xfd, 0x76, 0xfe, 0x52, 0xff, + 0x3e, 0x00, 0xb9, 0x00, 0x90, 0x01, 0xeb, 0x01, 0x43, 0x02, 0x24, 0x01, 0x21, 0xff, 0x14, 0xfe, + 0x32, 0xfe, 0xed, 0xfd, 0x94, 0xfc, 0x34, 0xfd, 0x97, 0xfc, 0x6b, 0xfc, 0x5a, 0xfc, 0xc6, 0xfc, + 0x8f, 0xfc, 0x42, 0xfc, 0x3d, 0xfc, 0xcf, 0xfc, 0xa3, 0xfd, 0xb4, 0xfd, 0x5b, 0xfe, 0xb7, 0xff, + 0x5e, 0x01, 0x1f, 0x02, 0x4f, 0x02, 0x25, 0x03, 0xab, 0x04, 0x6f, 0x05, 0xbd, 0x06, 0x9a, 0x07, + 0xa2, 0x07, 0xb5, 0x06, 0x09, 0x06, 0x06, 0x06, 0x44, 0x06, 0xd6, 0x05, 0xef, 0x03, 0x3a, 0x04, + 0x2f, 0x04, 0xec, 0x03, 0xb5, 0x02, 0x67, 0x01, 0x1a, 0x00, 0xb1, 0xff, 0x7f, 0xfe, 0x57, 0xfd, + 0xa9, 0xfb, 0xaf, 0xfa, 0x77, 0xf9, 0x78, 0xf9, 0x97, 0xf9, 0x78, 0xf9, 0xd1, 0xf8, 0x77, 0xf7, + 0x59, 0xf7, 0x5a, 0xf6, 0x11, 0xf6, 0x5a, 0xf6, 0x33, 0xf7, 0x18, 0xf8, 0x35, 0xf9, 0x1e, 0xfa, + 0xb4, 0xfb, 0x4b, 0xfc, 0xe7, 0xfc, 0x41, 0xfe, 0x48, 0x00, 0xdf, 0x00, 0x72, 0x01, 0x75, 0x03, + 0x81, 0x05, 0x55, 0x06, 0xa6, 0x06, 0xb1, 0x07, 0xe5, 0x07, 0xb9, 0x08, 0xcd, 0x08, 0xa6, 0x08, + 0xd5, 0x07, 0x67, 0x07, 0x57, 0x06, 0x92, 0x05, 0x5e, 0x05, 0x14, 0x03, 0x46, 0x00, 0xae, 0xfe, + 0x68, 0xfe, 0x87, 0xfc, 0x07, 0xfb, 0x25, 0xf9, 0xc1, 0xf6, 0x0d, 0xf5, 0x79, 0xf4, 0xb5, 0xf3, + 0xe1, 0xf3, 0xcb, 0xf3, 0x30, 0xf4, 0x3b, 0xf5, 0x08, 0xf8, 0x62, 0xf9, 0xe1, 0xf9, 0x47, 0xfb, + 0xae, 0xfc, 0x85, 0xfd, 0x1d, 0xfe, 0x14, 0x00, 0x06, 0x02, 0x44, 0x04, 0x18, 0x06, 0x8b, 0x07, + 0x48, 0x08, 0x24, 0x09, 0x8d, 0x08, 0x05, 0x09, 0x40, 0x09, 0xdf, 0x09, 0x33, 0x0a, 0x9f, 0x0a, + 0xce, 0x0a, 0x80, 0x09, 0xde, 0x07, 0xba, 0x06, 0x0a, 0x05, 0xe6, 0x03, 0xfe, 0x03, 0xbd, 0x02, + 0x08, 0x02, 0x7f, 0x00, 0xbf, 0xfe, 0x48, 0xfe, 0xef, 0xfd, 0x27, 0xfd, 0xaf, 0xfb, 0xd4, 0xfb, + 0xf0, 0xfc, 0xc5, 0xfd, 0xe4, 0xfe, 0xa8, 0xff, 0x14, 0xff, 0xe8, 0xff, 0x5a, 0x00, 0x95, 0x00, + 0x8c, 0x01, 0x85, 0x02, 0xca, 0x01, 0x72, 0x02, 0x21, 0x03, 0xb1, 0x02, 0x42, 0x01, 0x44, 0x00, + 0x98, 0xff, 0x75, 0xfe, 0xa6, 0xfd, 0xef, 0xfc, 0x97, 0xfc, 0x41, 0xfc, 0x64, 0xfc, 0x61, 0xfc, + 0x11, 0xfd, 0xc5, 0xfc, 0x8a, 0xfc, 0x71, 0xfc, 0xc2, 0xfc, 0x93, 0xfc, 0x75, 0xfc, 0xe7, 0xfd, + 0xa8, 0xff, 0x76, 0x00, 0xa0, 0x01, 0xd5, 0x02, 0x92, 0x03, 0x60, 0x05, 0x5b, 0x07, 0xb9, 0x08, + 0xc2, 0x09, 0x1c, 0x0a, 0x4b, 0x09, 0x1b, 0x09, 0x95, 0x09, 0x4a, 0x09, 0x6c, 0x08, 0xe8, 0x07, + 0xad, 0x07, 0xd4, 0x06, 0x8b, 0x05, 0x9f, 0x03, 0xcc, 0x01, 0x84, 0x00, 0xa1, 0xff, 0x60, 0xfe, + 0x92, 0xfd, 0xba, 0xfb, 0x75, 0xf9, 0x88, 0xf8, 0x7f, 0xf8, 0xa5, 0xf7, 0xf3, 0xf6, 0xe5, 0xf5, + 0x2d, 0xf5, 0xf2, 0xf3, 0x07, 0xf3, 0x8e, 0xf2, 0x02, 0xf3, 0x35, 0xf4, 0x5e, 0xf5, 0xe0, 0xf6, + 0xb4, 0xf8, 0xd5, 0xf9, 0x9d, 0xfa, 0x29, 0xfc, 0x12, 0xfe, 0x58, 0xff, 0x74, 0x00, 0xcf, 0x02, + 0xc2, 0x04, 0x0f, 0x07, 0x0f, 0x09, 0xc1, 0x09, 0x07, 0x09, 0x9d, 0x09, 0xc1, 0x09, 0xd8, 0x09, + 0xc4, 0x09, 0x65, 0x09, 0x97, 0x08, 0x34, 0x08, 0x08, 0x08, 0x75, 0x06, 0x85, 0x04, 0xb9, 0x02, + 0x0d, 0x01, 0x60, 0x00, 0x58, 0xff, 0xca, 0xfd, 0xdb, 0xfb, 0x95, 0xfa, 0xbe, 0xf8, 0xd9, 0xf6, + 0x91, 0xf6, 0xd4, 0xf5, 0x82, 0xf5, 0xca, 0xf5, 0x52, 0xf6, 0x83, 0xf7, 0x34, 0xf8, 0x6f, 0xf9, + 0x80, 0xfa, 0x86, 0xfb, 0x68, 0xfb, 0xf8, 0xfb, 0x51, 0xfc, 0xbb, 0xfd, 0x58, 0xff, 0xdd, 0x00, + 0x17, 0x02, 0x2b, 0x03, 0x2e, 0x03, 0x22, 0x03, 0x83, 0x03, 0x4b, 0x02, 0x9a, 0x02, 0x11, 0x03, + 0x21, 0x03, 0x2c, 0x02, 0xcc, 0x01, 0x7e, 0x00, 0x64, 0xff, 0xbb, 0xfe, 0x22, 0xff, 0x99, 0xff, + 0x84, 0x00, 0xf4, 0xff, 0xb0, 0xfd, 0x52, 0xfd, 0xd8, 0xfd, 0x54, 0xfd, 0x1d, 0xfd, 0x43, 0xfd, + 0x67, 0xfd, 0xa7, 0xfe, 0x4d, 0x00, 0xb6, 0x00, 0x1c, 0x01, 0x7c, 0x02, 0x7b, 0x02, 0x71, 0x02, + 0xfe, 0x02, 0x65, 0x03, 0xd2, 0x03, 0x4e, 0x04, 0xa4, 0x05, 0x2f, 0x06, 0xe5, 0x05, 0x74, 0x05, + 0x78, 0x04, 0xd5, 0x02, 0x1a, 0x02, 0xa1, 0x00, 0x26, 0x00, 0x4a, 0xff, 0x1e, 0xff, 0xf3, 0xfe, + 0xde, 0xfe, 0x69, 0xfe, 0xd4, 0xfd, 0x5b, 0xfe, 0x66, 0xfd, 0x27, 0xfc, 0xb4, 0xfb, 0x26, 0xfc, + 0xae, 0xfc, 0x06, 0xfe, 0xea, 0xfe, 0x23, 0x00, 0x3a, 0x00, 0x1d, 0x01, 0x54, 0x01, 0xba, 0x02, + 0x9c, 0x04, 0x5b, 0x05, 0xde, 0x04, 0xa9, 0x05, 0x7f, 0x05, 0x46, 0x05, 0x9d, 0x05, 0xcc, 0x05, + 0x81, 0x05, 0xae, 0x05, 0x01, 0x06, 0xdd, 0x04, 0x49, 0x04, 0xc6, 0x02, 0xf9, 0x01, 0xe8, 0x01, + 0x30, 0x02, 0x86, 0x01, 0xd5, 0xff, 0xbe, 0xfe, 0x83, 0xfe, 0x0c, 0xfe, 0x53, 0xfd, 0x65, 0xfd, + 0xdd, 0xfc, 0x4f, 0xfc, 0x79, 0xfb, 0x92, 0xfa, 0x11, 0xf9, 0x13, 0xf9, 0x52, 0xf9, 0x85, 0xfa, + 0x11, 0xfc, 0xdc, 0xfc, 0xd9, 0xfd, 0xcd, 0xff, 0xd1, 0x01, 0xef, 0x02, 0x5e, 0x04, 0x8f, 0x05, + 0xe9, 0x06, 0x59, 0x08, 0x3a, 0x0a, 0xce, 0x0a, 0x7e, 0x0b, 0x28, 0x0b, 0x7d, 0x0b, 0x81, 0x0b, + 0xeb, 0x0b, 0x63, 0x0a, 0x5e, 0x09, 0xa6, 0x08, 0xb5, 0x07, 0x68, 0x06, 0xcc, 0x04, 0x88, 0x02, + 0xd9, 0xff, 0xa1, 0xfe, 0x1a, 0xfd, 0x79, 0xfb, 0x94, 0xf9, 0xfc, 0xf6, 0x5a, 0xf4, 0x0f, 0xf2, + 0x9c, 0xf0, 0x79, 0xef, 0xa4, 0xee, 0x29, 0xef, 0x50, 0xf0, 0x8d, 0xf1, 0xcb, 0xf2, 0xf0, 0xf3, + 0xc0, 0xf5, 0xd4, 0xf6, 0x25, 0xf8, 0x0b, 0xf9, 0x3d, 0xfa, 0x6f, 0xfb, 0xeb, 0xfc, 0x4b, 0xff, + 0x71, 0x02, 0x1c, 0x04, 0x4e, 0x05, 0x7b, 0x06, 0xe3, 0x06, 0x36, 0x06, 0xca, 0x06, 0x77, 0x07, + 0x82, 0x07, 0xea, 0x08, 0xc6, 0x08, 0xf7, 0x07, 0x07, 0x06, 0x99, 0x04, 0x4e, 0x02, 0x0f, 0x02, + 0x16, 0x02, 0x3f, 0x01, 0xac, 0xff, 0xd9, 0xfe, 0x57, 0xfd, 0x99, 0xfc, 0x02, 0xfc, 0x15, 0xfb, + 0x2c, 0xfa, 0xf8, 0xf9, 0x7a, 0xfa, 0x17, 0xfb, 0xa7, 0xfb, 0xdd, 0xfb, 0xc6, 0xfb, 0x31, 0xfc, + 0x5e, 0xfd, 0xf5, 0xfc, 0x31, 0xfd, 0xa4, 0xfd, 0x64, 0xfe, 0xb4, 0xfe, 0x8f, 0xfe, 0x95, 0xfe, + 0x67, 0xfe, 0xf1, 0xfd, 0xbe, 0xfc, 0x46, 0xfc, 0x3b, 0xfc, 0x8f, 0xfb, 0xb9, 0xfa, 0x5e, 0xfb, + 0x53, 0xfb, 0x39, 0xfb, 0x46, 0xfb, 0xcf, 0xfb, 0xb0, 0xfb, 0x76, 0xfb, 0xe9, 0xfb, 0x95, 0xfb, + 0x96, 0xfb, 0x1b, 0xfc, 0x9f, 0xfd, 0x2a, 0xfe, 0xee, 0xff, 0x8a, 0x00, 0x19, 0x01, 0x79, 0x03, + 0x7b, 0x06, 0x32, 0x08, 0x3f, 0x09, 0x4e, 0x0a, 0x28, 0x0b, 0x99, 0x0b, 0x4b, 0x0c, 0x40, 0x0c, + 0x6c, 0x0c, 0x78, 0x0c, 0x04, 0x0d, 0x76, 0x0c, 0x05, 0x0c, 0xc4, 0x0a, 0x64, 0x08, 0x21, 0x07, + 0xac, 0x06, 0x7d, 0x05, 0x8f, 0x02, 0x30, 0x01, 0x08, 0x00, 0xa5, 0xfe, 0xa3, 0xfd, 0xed, 0xfc, + 0x5b, 0xfc, 0x0e, 0xfb, 0x75, 0xfa, 0x8b, 0xf8, 0x06, 0xf7, 0x1e, 0xf6, 0xef, 0xf4, 0x60, 0xf5, + 0xb1, 0xf6, 0xdf, 0xf6, 0x72, 0xf7, 0x73, 0xf9, 0xa6, 0xfb, 0x81, 0xfc, 0xa7, 0xfd, 0x90, 0xff, + 0x53, 0x01, 0xc3, 0x02, 0x14, 0x04, 0x9b, 0x06, 0x58, 0x09, 0xdf, 0x09, 0x83, 0x09, 0x8d, 0x0a, + 0xa1, 0x0b, 0xae, 0x0b, 0x5e, 0x0a, 0xec, 0x09, 0xf6, 0x09, 0x8d, 0x0a, 0x1a, 0x09, 0x2f, 0x08, + 0x87, 0x06, 0x2d, 0x04, 0x4a, 0x02, 0xe7, 0x00, 0x53, 0x00, 0x09, 0xfe, 0x35, 0xfc, 0x8f, 0xfa, + 0x04, 0xf9, 0x06, 0xf8, 0xa2, 0xf6, 0xfd, 0xf5, 0x7d, 0xf6, 0x30, 0xf7, 0x89, 0xf7, 0x71, 0xf8, + 0xe4, 0xf9, 0xa5, 0xf9, 0x84, 0xfa, 0x10, 0xfc, 0x77, 0xfc, 0xab, 0xfb, 0x25, 0xfb, 0x6a, 0xfc, + 0x0c, 0xfe, 0xdc, 0xfe, 0xb0, 0xff, 0x7d, 0x00, 0x5f, 0x01, 0x0f, 0x02, 0x35, 0x01, 0x68, 0x01, + 0x22, 0x01, 0xff, 0x00, 0xcb, 0x00, 0x6f, 0x01, 0xcd, 0x01, 0x52, 0x00, 0xaf, 0xfe, 0x39, 0xfe, + 0x1e, 0xfe, 0x0c, 0xfe, 0x70, 0xfd, 0x64, 0xfc, 0x40, 0xfc, 0x08, 0xfc, 0xbf, 0xfb, 0x40, 0xfa, + 0x42, 0xfa, 0x15, 0xfa, 0x8e, 0xf9, 0x2c, 0xfa, 0x0d, 0xfc, 0x75, 0xfc, 0x2f, 0xfd, 0xd1, 0xfd, + 0xe6, 0xfe, 0xf0, 0xfe, 0xc6, 0xfe, 0x4d, 0xfe, 0xf7, 0xfe, 0x03, 0x01, 0x8e, 0x01, 0xdc, 0x01, + 0x47, 0x02, 0x20, 0x02, 0xef, 0x01, 0x76, 0x01, 0x16, 0x02, 0x16, 0x02, 0xcf, 0x00, 0xd6, 0x00, + 0x65, 0x00, 0x3c, 0xff, 0xc6, 0xfe, 0x89, 0xfd, 0x74, 0xfd, 0x1f, 0xfe, 0x5f, 0xfe, 0xbb, 0xfe, + 0x60, 0xfe, 0xf2, 0xfc, 0x63, 0xfc, 0x65, 0xfc, 0xdf, 0xfc, 0x8e, 0xfb, 0x10, 0xf9, 0xb3, 0xf7, + 0x96, 0xf9, 0x6f, 0xfb, 0x36, 0xfd, 0x73, 0xff, 0x42, 0x02, 0x37, 0x04, 0xe7, 0x02, 0x9c, 0xfe, + 0xb8, 0xfd, 0x15, 0x03, 0xd3, 0x02, 0x3e, 0x08, 0x5f, 0x0a, 0x5f, 0x0f, 0xdc, 0x0d, 0xca, 0x07, + 0xff, 0x08, 0x85, 0x0a, 0x35, 0x0b, 0x5c, 0x0b, 0x76, 0x06, 0x33, 0x0a, 0xa9, 0x06, 0x8f, 0x07, + 0x63, 0x07, 0x1b, 0x04, 0xef, 0x02, 0x5d, 0x00, 0xc8, 0x02, 0xca, 0xff, 0x26, 0xfe, 0x1d, 0xfb, + 0xa2, 0xfb, 0x65, 0xf8, 0x44, 0xf4, 0xaa, 0xf1, 0x20, 0xf0, 0x78, 0xea, 0x6c, 0xe9, 0x16, 0xed, + 0x0a, 0xf3, 0xd6, 0xf8, 0x16, 0xf5, 0x33, 0xf8, 0x2f, 0xf8, 0xbe, 0xfa, 0xa6, 0xfb, 0xff, 0xfe, + 0xee, 0x05, 0xc9, 0x0c, 0x0e, 0x0f, 0xba, 0x0e, 0x05, 0x0f, 0xb6, 0x12, 0xf6, 0x14, 0x67, 0x17, + 0xf3, 0x17, 0x13, 0x1c, 0x5d, 0x20, 0x69, 0x22, 0x6d, 0x25, 0xaf, 0x26, 0x28, 0x27, 0x8b, 0x26, + 0xf4, 0x20, 0xa2, 0x1d, 0x74, 0x16, 0xa5, 0x0d, 0x5a, 0x0b, 0x30, 0x07, 0x1c, 0x04, 0x16, 0x01, + 0x2d, 0xfd, 0xfd, 0xf8, 0xa0, 0xf3, 0xbd, 0xf4, 0xf1, 0xf6, 0x14, 0xf6, 0xd6, 0xf3, 0x35, 0xf3, + 0x50, 0xf2, 0x97, 0xf0, 0xfb, 0xec, 0x78, 0xec, 0xfa, 0xef, 0x92, 0xf0, 0xcd, 0xf0, 0xfd, 0xf1, + 0xde, 0xf4, 0xfe, 0xf6, 0x0e, 0xf9, 0xe1, 0xfb, 0x09, 0xff, 0xa3, 0xfe, 0x74, 0xfe, 0xd8, 0xfe, + 0xb4, 0xf7, 0x70, 0xf1, 0x95, 0xef, 0x69, 0xee, 0xfa, 0xed, 0xa8, 0xe7, 0x4e, 0xe2, 0x68, 0xdf, + 0x2e, 0xdc, 0x8f, 0xdc, 0x5e, 0xde, 0x8c, 0xe2, 0xf0, 0xe6, 0x35, 0xe7, 0x86, 0xe8, 0xea, 0xe8, + 0x97, 0xe9, 0x4e, 0xeb, 0xd7, 0xed, 0x56, 0xf0, 0xf8, 0xf1, 0xcc, 0xf6, 0x39, 0xfd, 0x34, 0xff, + 0x47, 0x04, 0xeb, 0x07, 0x82, 0x0d, 0xbd, 0x10, 0xe9, 0x11, 0x1b, 0x12, 0xbb, 0x0e, 0x9c, 0x0c, + 0x96, 0x08, 0x75, 0x07, 0x4f, 0x04, 0x21, 0xfc, 0x45, 0xf6, 0xe9, 0xf1, 0xb5, 0xf0, 0xdc, 0xf2, + 0x4c, 0xf3, 0x14, 0xf7, 0xed, 0xf8, 0xee, 0xfa, 0xd6, 0xfd, 0xe2, 0xfd, 0xa3, 0xfd, 0x92, 0xff, + 0x6e, 0x02, 0xff, 0x06, 0x8b, 0x09, 0x1d, 0x0e, 0x44, 0x14, 0x14, 0x1a, 0x30, 0x20, 0x4c, 0x26, + 0xb6, 0x2c, 0x0b, 0x2f, 0x9b, 0x31, 0x28, 0x2f, 0x98, 0x2b, 0xcf, 0x26, 0xfb, 0x20, 0xb5, 0x1d, + 0x75, 0x17, 0x17, 0x0e, 0xf0, 0x07, 0xe0, 0x01, 0x73, 0xfe, 0x10, 0xfa, 0x63, 0xf6, 0x81, 0xf7, + 0xe1, 0xf4, 0xfa, 0xf1, 0xb4, 0xef, 0xda, 0xed, 0x09, 0xec, 0xff, 0xe9, 0xaf, 0xe8, 0x63, 0xe7, + 0x39, 0xe7, 0x51, 0xe9, 0xf5, 0xee, 0xf9, 0xf3, 0x1d, 0xf8, 0x91, 0xff, 0xd3, 0x06, 0x9b, 0x0c, + 0xdf, 0x10, 0xfe, 0x11, 0x2b, 0x12, 0xe9, 0x10, 0xe5, 0x10, 0x4d, 0x12, 0x65, 0x0e, 0xb9, 0x07, + 0xbf, 0x03, 0xe1, 0x01, 0x74, 0x01, 0x57, 0xff, 0xfd, 0xff, 0x9b, 0xff, 0xcf, 0xfc, 0xe5, 0xfb, + 0xd9, 0xf9, 0xab, 0xf7, 0xe8, 0xf4, 0x88, 0xf4, 0x83, 0xf4, 0x22, 0xf1, 0x02, 0xf0, 0x54, 0xf2, + 0x39, 0xf4, 0xd7, 0xf7, 0x5a, 0xfa, 0x0e, 0xff, 0x48, 0x06, 0xf5, 0x08, 0x47, 0x09, 0x61, 0x0b, + 0x11, 0x0c, 0x13, 0x0b, 0x7b, 0x0c, 0x02, 0x0f, 0xee, 0x0d, 0x11, 0x0c, 0x78, 0x07, 0x6e, 0x04, + 0x29, 0x02, 0xca, 0x01, 0xa3, 0x04, 0xa7, 0x04, 0xf5, 0x05, 0xec, 0x06, 0x7e, 0x05, 0xe1, 0x03, + 0xc5, 0x02, 0xbb, 0x02, 0x6a, 0x02, 0xc9, 0x01, 0x5f, 0x02, 0x6d, 0x02, 0x61, 0x02, 0xbd, 0x02, + 0xcb, 0x04, 0x5c, 0x0a, 0x57, 0x0e, 0x61, 0x10, 0xb4, 0x12, 0xf0, 0x10, 0xe2, 0x0d, 0xab, 0x0c, + 0x0c, 0x0d, 0x25, 0x0c, 0xc1, 0x06, 0x94, 0x01, 0xfb, 0xfe, 0x5d, 0xfb, 0xbe, 0xf6, 0x76, 0xf6, + 0x50, 0xf8, 0xc7, 0xf9, 0x52, 0xf9, 0x75, 0xf8, 0x10, 0xf8, 0x12, 0xf7, 0xaa, 0xf4, 0x4f, 0xf5, + 0x12, 0xf7, 0x33, 0xf6, 0x47, 0xf6, 0xe7, 0xf6, 0xc2, 0xf5, 0x5f, 0xf5, 0x9d, 0xf7, 0x9f, 0xf9, + 0x4c, 0xfc, 0x7d, 0xfd, 0xb5, 0xfe, 0xb8, 0xfe, 0x9a, 0xfd, 0xf8, 0xfb, 0x81, 0xf9, 0x0c, 0xf7, + 0x37, 0xf4, 0xdb, 0xf1, 0x70, 0xed, 0x6c, 0xe9, 0x67, 0xe8, 0x66, 0xe5, 0x21, 0xe6, 0xf3, 0xe6, + 0x6a, 0xe5, 0x13, 0xe7, 0x51, 0xe7, 0xcd, 0xe5, 0x16, 0xe8, 0x9f, 0xeb, 0xa9, 0xec, 0x92, 0xee, + 0x75, 0xf0, 0x09, 0xf4, 0x6a, 0xf6, 0x50, 0xfb, 0x8b, 0x03, 0x8c, 0x09, 0xb5, 0x0d, 0xbe, 0x0f, + 0x95, 0x0f, 0x2c, 0x0e, 0x63, 0x0f, 0xae, 0x10, 0xd4, 0x10, 0x80, 0x11, 0x0e, 0x0e, 0x62, 0x0b, + 0x42, 0x08, 0x7b, 0x02, 0x50, 0x00, 0x93, 0xff, 0x0c, 0xff, 0xae, 0xff, 0x22, 0x00, 0xff, 0xff, + 0xc7, 0xfe, 0x9f, 0xfc, 0xdf, 0xfb, 0xaf, 0xfd, 0x7b, 0xff, 0xa2, 0x01, 0xad, 0x02, 0x27, 0x02, + 0x0b, 0x05, 0xa5, 0x06, 0x8d, 0x07, 0x32, 0x09, 0xec, 0x09, 0x0a, 0x0c, 0x00, 0x0f, 0x91, 0x10, + 0x93, 0x10, 0xa7, 0x10, 0x05, 0x0e, 0xac, 0x09, 0x3d, 0x05, 0x3b, 0x02, 0x0e, 0xff, 0xef, 0xfc, + 0x05, 0xfc, 0x62, 0xf8, 0x29, 0xf5, 0x7c, 0xf2, 0xf3, 0xf1, 0x27, 0xf1, 0x3c, 0xef, 0x49, 0xee, + 0x6a, 0xef, 0x69, 0xef, 0xea, 0xea, 0x95, 0xea, 0x01, 0xea, 0xb5, 0xe6, 0xfd, 0xea, 0xf0, 0xf0, + 0xef, 0xf1, 0x1f, 0xf5, 0x2a, 0xf3, 0x01, 0xf5, 0x12, 0xf8, 0x0d, 0xfa, 0x59, 0xfe, 0x4f, 0x00, + 0xa2, 0x01, 0xe0, 0x00, 0x5b, 0xfc, 0xa4, 0xfc, 0xc8, 0x00, 0x38, 0x04, 0x64, 0x04, 0x1a, 0x07, + 0x3e, 0x08, 0x0c, 0x08, 0xe8, 0x07, 0x49, 0x06, 0xe9, 0x04, 0x53, 0x05, 0xa5, 0x06, 0x6e, 0x08, + 0xf6, 0x07, 0xcd, 0x05, 0xeb, 0x07, 0x1f, 0x07, 0x1d, 0x06, 0x1f, 0x0b, 0x0d, 0x0c, 0x02, 0x0d, + 0x14, 0x0e, 0x44, 0x0e, 0x6d, 0x0d, 0xc5, 0x0b, 0x38, 0x0e, 0xaf, 0x10, 0x29, 0x0e, 0x57, 0x0a, + 0xf5, 0x0a, 0x2f, 0x0b, 0xbc, 0x0e, 0xf0, 0x0d, 0xec, 0x0a, 0x33, 0x0e, 0x7c, 0x0e, 0x42, 0x0e, + 0x1e, 0x13, 0xaf, 0x16, 0x36, 0x15, 0xaa, 0x19, 0xab, 0x1c, 0x42, 0x1b, 0xeb, 0x1c, 0x53, 0x22, + 0x56, 0x22, 0xf4, 0x1e, 0x4f, 0x1f, 0xf9, 0x1e, 0xab, 0x1a, 0x6a, 0x1c, 0x05, 0x1d, 0x8c, 0x1a, + 0x0f, 0x15, 0x01, 0x11, 0x80, 0x11, 0x9c, 0x05, 0x61, 0x02, 0xd5, 0xff, 0x06, 0xf8, 0x43, 0xf7, + 0xce, 0xf4, 0x14, 0xee, 0x60, 0xeb, 0x3a, 0xea, 0x03, 0xe8, 0xc8, 0xe5, 0xed, 0xe8, 0xee, 0xea, + 0xd6, 0xed, 0x79, 0xf3, 0xda, 0xf5, 0xb0, 0xf4, 0x98, 0xf5, 0xd2, 0xfb, 0x69, 0x00, 0x49, 0x02, + 0x14, 0x07, 0xe3, 0x08, 0x6b, 0x05, 0x44, 0x09, 0xa8, 0x06, 0xba, 0x05, 0x18, 0x06, 0xc4, 0x06, + 0x70, 0xff, 0xcd, 0xf7, 0x50, 0xf6, 0x73, 0xef, 0x75, 0xf0, 0x72, 0xee, 0x9f, 0xeb, 0x84, 0xe7, + 0xea, 0xe3, 0x76, 0xe2, 0xa6, 0xde, 0x48, 0xe4, 0xcb, 0xe8, 0xf5, 0xe8, 0xa6, 0xed, 0xde, 0xec, + 0x5e, 0xee, 0x61, 0xf5, 0x95, 0xf8, 0xf9, 0xf8, 0xde, 0xf5, 0x2c, 0xf9, 0x0e, 0xf7, 0xff, 0xf8, + 0xd6, 0xfb, 0x69, 0xfd, 0xc6, 0xfb, 0x49, 0xfa, 0x31, 0xf8, 0x62, 0xf3, 0x55, 0xf2, 0x28, 0xf1, + 0xaf, 0xf3, 0xf6, 0xf4, 0xac, 0xf0, 0x55, 0xec, 0x2b, 0xeb, 0x98, 0xea, 0x4b, 0xe9, 0x63, 0xe5, + 0x22, 0xe8, 0xcb, 0xe8, 0xe1, 0xe7, 0x3b, 0xee, 0xed, 0xf3, 0x72, 0xf5, 0xcf, 0xf2, 0x58, 0xf6, + 0x96, 0xf6, 0x9b, 0xf9, 0x43, 0x01, 0x6d, 0x08, 0xaa, 0x08, 0x1e, 0x07, 0x41, 0x0a, 0x7d, 0x06, + 0xb3, 0x08, 0x1d, 0x0e, 0xf1, 0x08, 0xa9, 0x02, 0x46, 0x00, 0x68, 0xfe, 0xbd, 0xfa, 0x2e, 0xf9, + 0x93, 0xfa, 0x30, 0xf5, 0xd5, 0xf1, 0x32, 0xf2, 0x96, 0xf1, 0xae, 0xf4, 0x1f, 0xf9, 0xc9, 0xfd, + 0x5a, 0xf8, 0xf7, 0xfa, 0xf2, 0xfe, 0xb1, 0x01, 0x8e, 0x08, 0xfb, 0x09, 0x0a, 0x0e, 0xa1, 0x0d, + 0x7a, 0x10, 0x14, 0x12, 0x84, 0x11, 0x4d, 0x11, 0x6a, 0x10, 0x73, 0x0f, 0x66, 0x0b, 0x6d, 0x09, + 0xa7, 0x07, 0xd7, 0x08, 0xa3, 0x0a, 0x0a, 0x09, 0x06, 0x08, 0xc2, 0x04, 0xe1, 0x02, 0x04, 0x03, + 0x23, 0x00, 0x32, 0x00, 0x42, 0x03, 0x05, 0x06, 0xfb, 0x05, 0xd9, 0x0a, 0x22, 0x0d, 0x5f, 0x0f, + 0x43, 0x10, 0x1f, 0x0f, 0xe6, 0x11, 0x77, 0x14, 0xe9, 0x17, 0xdf, 0x18, 0x5c, 0x15, 0x2b, 0x17, + 0x36, 0x14, 0x38, 0x13, 0xa8, 0x13, 0x3c, 0x0f, 0x36, 0x0b, 0x4d, 0x07, 0x24, 0x07, 0x6d, 0x04, + 0xfc, 0x00, 0x1d, 0x02, 0xd1, 0xff, 0x65, 0xfa, 0xf8, 0xfa, 0x92, 0xff, 0x7f, 0xfd, 0xc5, 0x01, + 0xf2, 0x08, 0xa0, 0x0c, 0x51, 0x0f, 0x6f, 0x12, 0x63, 0x15, 0x32, 0x1a, 0x6b, 0x1d, 0x70, 0x1a, + 0x98, 0x1f, 0xfa, 0x24, 0x32, 0x28, 0x0e, 0x2c, 0x8d, 0x28, 0x31, 0x21, 0x34, 0x20, 0x49, 0x1f, + 0xd3, 0x1d, 0xbe, 0x17, 0xaf, 0x13, 0x61, 0x12, 0xb1, 0x0d, 0x9a, 0x08, 0xaa, 0x06, 0x6f, 0xff, + 0xf3, 0xf9, 0xb7, 0xf7, 0xe4, 0xef, 0x09, 0xed, 0xbd, 0xec, 0xb9, 0xe7, 0x37, 0xe8, 0xfc, 0xe7, + 0x78, 0xe9, 0x9e, 0xee, 0x1c, 0xef, 0xb0, 0xef, 0x98, 0xf3, 0x52, 0xfa, 0x16, 0xfd, 0xe3, 0xfd, + 0xdd, 0xfd, 0xff, 0xfe, 0xa8, 0x01, 0x91, 0xfc, 0x80, 0xfb, 0xaf, 0xfa, 0x80, 0xf3, 0xca, 0xf1, + 0xe8, 0xef, 0x21, 0xed, 0x7a, 0xec, 0x29, 0xe9, 0xfd, 0xe4, 0x47, 0xe2, 0x56, 0xe0, 0xaf, 0xde, + 0x4a, 0xde, 0x84, 0xd8, 0x67, 0xdc, 0x49, 0xde, 0x8b, 0xde, 0xf5, 0xe0, 0xac, 0xe0, 0x7a, 0xe2, + 0x6c, 0xe4, 0xa2, 0xe3, 0x95, 0xe5, 0x1e, 0xe8, 0x5a, 0xe9, 0x6a, 0xe9, 0xca, 0xe5, 0x8e, 0xe6, + 0xa1, 0xe7, 0x35, 0xe4, 0x7f, 0xe4, 0x6b, 0xe3, 0x8b, 0xe3, 0x88, 0xe6, 0xe5, 0xe7, 0xaf, 0xe6, + 0x70, 0xe9, 0xba, 0xe6, 0x42, 0xe4, 0x78, 0xe5, 0x82, 0xe6, 0x77, 0xe8, 0xe5, 0xec, 0x60, 0xed, + 0x46, 0xee, 0x94, 0xf5, 0x93, 0xf9, 0xdb, 0xfa, 0x82, 0xff, 0xe8, 0x03, 0x7b, 0x07, 0x68, 0x0b, + 0x8f, 0x12, 0x0e, 0x19, 0x95, 0x17, 0x19, 0x15, 0x0e, 0x13, 0x90, 0x0f, 0x4b, 0x0e, 0x38, 0x0d, + 0xe1, 0x0c, 0xdb, 0x0b, 0xec, 0x0a, 0xda, 0x08, 0x45, 0x07, 0x41, 0x06, 0x86, 0x06, 0xda, 0x06, + 0x53, 0x08, 0x7e, 0x0a, 0xee, 0x0b, 0x45, 0x0e, 0xb0, 0x0f, 0x31, 0x10, 0xfb, 0x15, 0xc8, 0x17, + 0x92, 0x1c, 0x81, 0x1b, 0x0c, 0x1f, 0x95, 0x25, 0x62, 0x27, 0x59, 0x28, 0x9c, 0x2b, 0x66, 0x27, + 0xef, 0x22, 0xa1, 0x21, 0x86, 0x1d, 0x5b, 0x15, 0xdc, 0x10, 0x9c, 0x0c, 0x1f, 0x08, 0xae, 0x04, + 0x61, 0x02, 0x33, 0x00, 0xf0, 0xf9, 0x58, 0xf6, 0x88, 0xf4, 0x1b, 0xf2, 0xa9, 0xf0, 0xd9, 0xee, + 0x92, 0xef, 0x16, 0xf1, 0x70, 0xf3, 0xf8, 0xf4, 0x1b, 0xfa, 0x6a, 0xfe, 0x25, 0x00, 0x33, 0x04, + 0x6c, 0x08, 0x01, 0x0a, 0x74, 0x0e, 0xc8, 0x12, 0xc2, 0x11, 0x5d, 0x11, 0x56, 0x13, 0xbc, 0x12, + 0x67, 0x0c, 0xb3, 0x0b, 0x6b, 0x09, 0x39, 0x03, 0xe4, 0x02, 0x2a, 0x02, 0xb6, 0xff, 0x98, 0xfe, + 0xd0, 0xfb, 0x29, 0xf8, 0x54, 0xfb, 0x93, 0xfe, 0x51, 0xff, 0x68, 0x02, 0x45, 0x03, 0xc6, 0x03, + 0xe8, 0x07, 0xdc, 0x0a, 0xc6, 0x0c, 0x75, 0x0e, 0xcd, 0x12, 0xe9, 0x16, 0xce, 0x1e, 0xaa, 0x22, + 0xbf, 0x23, 0xa3, 0x21, 0x36, 0x1f, 0xf5, 0x1d, 0xe9, 0x1b, 0x32, 0x19, 0x2f, 0x16, 0xc0, 0x13, + 0x97, 0x13, 0x14, 0x10, 0xeb, 0x0d, 0x7c, 0x0c, 0x19, 0x06, 0xbe, 0xfe, 0x6b, 0xfd, 0x4f, 0xf9, + 0xb2, 0xf5, 0xb4, 0xf3, 0xcb, 0xed, 0xe2, 0xeb, 0x72, 0xec, 0xa5, 0xed, 0x85, 0xed, 0x32, 0xee, + 0x08, 0xf1, 0xda, 0xf1, 0x17, 0xf4, 0x72, 0xf6, 0x68, 0xf8, 0x25, 0xf8, 0x64, 0xfa, 0xee, 0xfd, + 0x0e, 0xfb, 0x85, 0xfb, 0xb6, 0xfa, 0x60, 0xf4, 0x07, 0xf2, 0x2c, 0xf3, 0x97, 0xee, 0x58, 0xea, + 0x3a, 0xe8, 0x6a, 0xe5, 0x49, 0xe5, 0x53, 0xe4, 0xad, 0xe2, 0x94, 0xe1, 0xf6, 0xe2, 0x00, 0xe3, + 0x99, 0xe2, 0x1d, 0xe4, 0x97, 0xe5, 0x2c, 0xe6, 0x7c, 0xe9, 0xf9, 0xea, 0x5b, 0xec, 0x1f, 0xf1, + 0x72, 0xf2, 0x9e, 0xf2, 0xa3, 0xf0, 0x78, 0xf0, 0xd2, 0xf1, 0x6f, 0xef, 0xa2, 0xee, 0x2e, 0xec, + 0xd5, 0xea, 0x3d, 0xec, 0x09, 0xec, 0xec, 0xed, 0x13, 0xf1, 0x40, 0xf0, 0x6a, 0xef, 0x18, 0xee, + 0x82, 0xec, 0xa8, 0xed, 0xc7, 0xef, 0x09, 0xf2, 0xaa, 0xf4, 0x21, 0xfc, 0x05, 0xff, 0xa5, 0xff, + 0xf7, 0x01, 0xba, 0x04, 0x35, 0x06, 0xfc, 0x09, 0x9b, 0x0d, 0xa5, 0x14, 0x20, 0x18, 0x8e, 0x16, + 0x60, 0x15, 0x3b, 0x14, 0x8f, 0x12, 0x93, 0x0f, 0xe1, 0x09, 0x7b, 0x05, 0x7b, 0x03, 0x13, 0x01, + 0x9a, 0xfc, 0xa6, 0xf9, 0xb5, 0xf6, 0x42, 0xf3, 0x90, 0xf2, 0xc1, 0xf2, 0x35, 0xf3, 0x26, 0xf5, + 0x6f, 0xf4, 0x17, 0xf3, 0xa0, 0xf8, 0x7a, 0xfb, 0xe3, 0xfe, 0xfb, 0x01, 0xf3, 0x04, 0xd4, 0x09, + 0x1e, 0x0f, 0xc0, 0x12, 0xbb, 0x17, 0xc1, 0x17, 0xc5, 0x13, 0x62, 0x14, 0x95, 0x14, 0x1e, 0x11, + 0x50, 0x0e, 0x5e, 0x0b, 0xdc, 0x08, 0x16, 0x08, 0xaf, 0x05, 0xb8, 0x03, 0x96, 0x01, 0xbf, 0xfc, + 0xf9, 0xf8, 0x9e, 0xf6, 0x65, 0xf3, 0xd8, 0xf0, 0x54, 0xee, 0x34, 0xee, 0x69, 0xef, 0xc2, 0xef, + 0x52, 0xf3, 0x09, 0xf6, 0x8d, 0xf9, 0x07, 0xfc, 0x69, 0xfe, 0x52, 0x06, 0x55, 0x0b, 0x4d, 0x0e, + 0xe4, 0x0f, 0xb8, 0x11, 0x29, 0x15, 0xed, 0x16, 0xdc, 0x15, 0x1f, 0x15, 0x78, 0x12, 0xdf, 0x13, + 0x97, 0x11, 0x48, 0x10, 0xe5, 0x11, 0x3c, 0x10, 0x39, 0x0e, 0x9e, 0x0e, 0xf7, 0x0d, 0xf7, 0x0e, + 0xa6, 0x11, 0xeb, 0x11, 0x55, 0x13, 0xfd, 0x16, 0xa7, 0x18, 0x25, 0x18, 0x64, 0x17, 0xac, 0x19, + 0x30, 0x1b, 0x63, 0x1e, 0x4c, 0x21, 0xfe, 0x24, 0xa2, 0x27, 0x8a, 0x24, 0x65, 0x21, 0x84, 0x20, + 0x2c, 0x20, 0x5f, 0x1d, 0xc9, 0x17, 0xce, 0x14, 0x42, 0x14, 0xd9, 0x13, 0xb9, 0x11, 0x7c, 0x0d, + 0x38, 0x0b, 0x1b, 0x0a, 0xbe, 0x06, 0x02, 0x03, 0xd9, 0xff, 0xa8, 0xfc, 0x2f, 0xfa, 0x35, 0xf7, + 0xb9, 0xf7, 0xe1, 0xf8, 0x62, 0xf9, 0x72, 0xfb, 0x06, 0xfa, 0x9d, 0xfa, 0xa4, 0xff, 0xd8, 0x00, + 0xf0, 0x03, 0xd6, 0x03, 0x6f, 0x01, 0x32, 0x02, 0xbf, 0x03, 0xcf, 0x00, 0x07, 0xfc, 0xdf, 0xf8, + 0x3e, 0xf3, 0xf9, 0xed, 0xeb, 0xea, 0xdf, 0xe9, 0xcd, 0xe5, 0xd9, 0xe2, 0x7f, 0xe2, 0xc7, 0xe0, + 0x3b, 0xe1, 0x64, 0xe3, 0x82, 0xe1, 0x46, 0xe0, 0x7a, 0xe2, 0x55, 0xe3, 0x1e, 0xe5, 0xed, 0xe8, + 0xe8, 0xea, 0xdc, 0xec, 0xe2, 0xed, 0x26, 0xf0, 0x59, 0xf4, 0x62, 0xf6, 0xbf, 0xf3, 0x04, 0xf1, + 0x73, 0xf1, 0x4f, 0xf2, 0x27, 0xed, 0x78, 0xe7, 0xdc, 0xe1, 0x20, 0xe2, 0x96, 0xe2, 0xf5, 0xdf, + 0xa8, 0xe0, 0x3f, 0xe0, 0x9a, 0xde, 0xa5, 0xdd, 0x5c, 0xdc, 0xfb, 0xd8, 0xc0, 0xd7, 0x64, 0xdb, + 0x0a, 0xde, 0x7a, 0xe3, 0xa9, 0xea, 0xee, 0xed, 0xc8, 0xef, 0x0b, 0xf3, 0x69, 0xf8, 0x33, 0xfe, + 0x58, 0x04, 0x9f, 0x0c, 0x0b, 0x11, 0xfc, 0x12, 0x35, 0x13, 0xc7, 0x14, 0xa8, 0x15, 0x92, 0x15, + 0xd3, 0x11, 0x69, 0x0d, 0xaf, 0x0b, 0xd6, 0x09, 0x98, 0x09, 0xac, 0x02, 0xec, 0xfe, 0x5a, 0xff, + 0x18, 0xfe, 0xa8, 0xfd, 0xce, 0xfb, 0xa9, 0xfa, 0xc5, 0xfd, 0x05, 0xfc, 0x16, 0xfa, 0xb9, 0xfc, + 0x19, 0x00, 0xbb, 0x02, 0x9c, 0x03, 0x1c, 0x06, 0xd9, 0x0b, 0x5b, 0x10, 0xf3, 0x15, 0x1d, 0x18, + 0x33, 0x16, 0x8e, 0x16, 0x05, 0x18, 0x18, 0x18, 0x15, 0x17, 0x82, 0x16, 0xf2, 0x13, 0x8c, 0x13, + 0x5f, 0x11, 0xcd, 0x10, 0xe9, 0x0f, 0x20, 0x0b, 0xbd, 0x07, 0xd2, 0x05, 0xb5, 0x04, 0xe5, 0x02, + 0x01, 0x00, 0xf0, 0xfd, 0x59, 0xfc, 0x8c, 0xfb, 0x7e, 0xfb, 0x62, 0xfb, 0x1c, 0xfc, 0xb5, 0xfb, + 0x5f, 0xfc, 0x15, 0xfc, 0x3a, 0xfe, 0xfb, 0x02, 0xf4, 0x00, 0x96, 0xfe, 0x7a, 0x01, 0x92, 0x06, + 0xf3, 0x04, 0xe7, 0x02, 0x73, 0xfe, 0xeb, 0xfc, 0xd9, 0xff, 0xa5, 0xfe, 0xb0, 0xfc, 0x35, 0xfd, + 0x88, 0xfe, 0x0e, 0x00, 0xd9, 0x01, 0x22, 0x02, 0x99, 0x03, 0x2b, 0x08, 0x82, 0x0d, 0x6c, 0x10, + 0xe5, 0x14, 0x51, 0x18, 0xb5, 0x17, 0x64, 0x16, 0x54, 0x19, 0xbb, 0x1d, 0x2d, 0x21, 0xaa, 0x26, + 0xb9, 0x29, 0xc9, 0x26, 0x88, 0x24, 0x85, 0x24, 0x09, 0x21, 0x7e, 0x1e, 0x2b, 0x1a, 0xb4, 0x13, + 0xc8, 0x11, 0x65, 0x0e, 0x3b, 0x0c, 0x3c, 0x08, 0xfe, 0x01, 0x76, 0x00, 0x65, 0xfe, 0xcc, 0xfb, + 0x09, 0xf9, 0x81, 0xf5, 0x9a, 0xf5, 0xfb, 0xf0, 0xad, 0xed, 0x70, 0xee, 0xbe, 0xef, 0x0c, 0xf1, + 0xb0, 0xf1, 0x1b, 0xf3, 0x2b, 0xf4, 0x59, 0xf6, 0xa8, 0xfc, 0x14, 0xff, 0x72, 0xfc, 0x6d, 0xfa, + 0x72, 0xfd, 0xe7, 0xfc, 0x5f, 0xfa, 0x4f, 0xf7, 0xcc, 0xf1, 0xe6, 0xec, 0x98, 0xe7, 0x96, 0xe4, + 0x34, 0xe2, 0x49, 0xde, 0x3c, 0xda, 0x85, 0xda, 0xec, 0xd9, 0xe1, 0xd9, 0xdd, 0xd9, 0xac, 0xd9, + 0x0e, 0xdb, 0x5e, 0xde, 0x49, 0xe2, 0xf5, 0xe3, 0xf1, 0xe7, 0xfb, 0xec, 0xb9, 0xf1, 0x85, 0xf5, + 0x76, 0xfc, 0x99, 0x05, 0x31, 0x08, 0xa4, 0x07, 0x13, 0x0a, 0xc2, 0x0f, 0x5e, 0x10, 0x4b, 0x0c, + 0xb8, 0x09, 0xe8, 0x08, 0x1d, 0x09, 0x0b, 0x0b, 0x2e, 0x0a, 0xd9, 0x08, 0x62, 0x07, 0x4c, 0x07, + 0x34, 0x07, 0xba, 0x02, 0x1c, 0xff, 0x00, 0xfe, 0x3a, 0xff, 0x02, 0xff, 0x64, 0x01, 0x38, 0x02, + 0xab, 0xfe, 0x1c, 0xfc, 0xb1, 0xfc, 0x15, 0x00, 0x77, 0x01, 0xe7, 0x04, 0xcc, 0x07, 0x0f, 0x08, + 0x26, 0x09, 0x63, 0x09, 0xd9, 0x09, 0x31, 0x09, 0xda, 0x04, 0x43, 0x00, 0x70, 0xfe, 0xee, 0xfb, + 0x7e, 0xf9, 0x07, 0xf8, 0x32, 0xf3, 0x22, 0xef, 0xa0, 0xf0, 0xa9, 0xf0, 0xa0, 0xf1, 0x1c, 0xf0, + 0xc9, 0xf1, 0x75, 0xf2, 0x10, 0xf2, 0xa6, 0xf3, 0x09, 0xf5, 0x50, 0xf8, 0xe2, 0xf9, 0xd5, 0xf9, + 0x61, 0xfc, 0x79, 0x02, 0x22, 0x0a, 0xd0, 0x0d, 0x47, 0x0c, 0x79, 0x08, 0x71, 0x08, 0x59, 0x0a, + 0xea, 0x09, 0x90, 0x08, 0x55, 0x07, 0xb2, 0x05, 0xa3, 0x04, 0xa1, 0x04, 0xf3, 0x03, 0xe3, 0x01, + 0x92, 0xff, 0xd5, 0xfe, 0xc1, 0xfe, 0xdf, 0xfc, 0x09, 0xfb, 0x6a, 0xfa, 0x1e, 0xf8, 0xb5, 0xf9, + 0x24, 0xfb, 0x47, 0xfa, 0x41, 0xfc, 0x59, 0xfe, 0x2a, 0x00, 0x1c, 0x00, 0x8d, 0x02, 0x1d, 0x07, + 0x9f, 0x08, 0xdc, 0x07, 0xe2, 0x06, 0x94, 0x0a, 0x95, 0x0b, 0x82, 0x08, 0x8d, 0x02, 0x39, 0xff, + 0x6d, 0xfd, 0xf2, 0xfb, 0x11, 0xfa, 0x9d, 0xf7, 0x9c, 0xf5, 0xd8, 0xf4, 0x5b, 0xf6, 0x06, 0xf8, + 0x28, 0xf8, 0xf8, 0xf9, 0xed, 0xfe, 0xd0, 0x02, 0x47, 0x08, 0xdb, 0x0c, 0x36, 0x10, 0x8a, 0x11, + 0x39, 0x13, 0x2a, 0x19, 0x5a, 0x1f, 0xcc, 0x25, 0xef, 0x2c, 0x6a, 0x2e, 0x20, 0x2e, 0xf6, 0x2f, + 0x04, 0x30, 0xb8, 0x2d, 0x5b, 0x2b, 0x19, 0x28, 0x1b, 0x24, 0x26, 0x21, 0x0a, 0x1f, 0x4d, 0x1b, + 0xd1, 0x13, 0xb2, 0x0d, 0xa5, 0x0c, 0x1e, 0x0a, 0xd2, 0x04, 0x71, 0xfe, 0x38, 0xfa, 0x17, 0xf6, + 0xf3, 0xf1, 0x26, 0xf0, 0xb9, 0xef, 0xdd, 0xef, 0x5b, 0xf0, 0x52, 0xf0, 0xbc, 0xf1, 0x45, 0xf3, + 0xd5, 0xf8, 0x29, 0xfe, 0x11, 0xff, 0xd4, 0xfc, 0x33, 0xff, 0xfe, 0x02, 0xe3, 0x02, 0xd7, 0x00, + 0xaf, 0xfe, 0x3e, 0xfb, 0xb4, 0xf6, 0x41, 0xf4, 0x04, 0xf1, 0x80, 0xed, 0x61, 0xea, 0x71, 0xe8, + 0x24, 0xe7, 0x64, 0xe6, 0x9b, 0xe4, 0xdd, 0xe4, 0xfb, 0xe3, 0xeb, 0xe3, 0x8d, 0xe4, 0x64, 0xe6, + 0x85, 0xe7, 0x48, 0xe7, 0x86, 0xea, 0x35, 0xec, 0x97, 0xef, 0x74, 0xf5, 0x8d, 0xf9, 0x4d, 0xfa, + 0x0e, 0xfa, 0x1c, 0xfd, 0x4c, 0xff, 0xb1, 0xfd, 0x50, 0xfa, 0x68, 0xf8, 0x4c, 0xf9, 0x1d, 0xfc, + 0xf7, 0xfb, 0x5b, 0xfb, 0x63, 0xfa, 0x41, 0xfb, 0xbf, 0xfa, 0x9c, 0xf9, 0x7a, 0xf7, 0x0f, 0xf5, + 0xfc, 0xf3, 0x53, 0xf6, 0xf4, 0xf8, 0x30, 0xf9, 0x76, 0xfa, 0xb0, 0xf8, 0x93, 0xf7, 0x14, 0xfa, + 0x18, 0xfc, 0x84, 0xfe, 0xa7, 0x03, 0x6c, 0x05, 0xa2, 0x04, 0x09, 0x06, 0x6e, 0x07, 0x72, 0x08, + 0xa0, 0x06, 0xfa, 0x02, 0x4e, 0x00, 0x2c, 0x00, 0x77, 0xff, 0x93, 0xfc, 0x0e, 0xf9, 0xf2, 0xf5, + 0x88, 0xf6, 0x55, 0xf8, 0x88, 0xf9, 0x26, 0xfa, 0xe4, 0xf9, 0x0c, 0xfa, 0xef, 0xfb, 0x4d, 0xfc, + 0x8f, 0xff, 0x6b, 0x02, 0xd5, 0x04, 0xa5, 0x06, 0x27, 0x08, 0xb1, 0x0c, 0x2e, 0x15, 0x79, 0x1b, + 0x94, 0x1c, 0x83, 0x1c, 0x49, 0x1c, 0xbe, 0x1b, 0xd1, 0x1c, 0xc9, 0x19, 0x38, 0x16, 0x21, 0x15, + 0xe4, 0x12, 0x02, 0x10, 0xf1, 0x0c, 0x3d, 0x0a, 0xec, 0x07, 0xf0, 0x04, 0xeb, 0x01, 0xd1, 0x00, + 0xdc, 0xfe, 0x68, 0xfc, 0x15, 0xfa, 0xc6, 0xf8, 0xc2, 0xf8, 0x60, 0xf8, 0xaf, 0xf7, 0x7b, 0xf8, + 0x99, 0xfa, 0x9f, 0xf9, 0x34, 0xf9, 0xc7, 0xfe, 0x0a, 0x01, 0x7a, 0x01, 0xe0, 0x00, 0x89, 0x02, + 0x1c, 0x05, 0x0e, 0x04, 0xdc, 0xfe, 0x83, 0xfb, 0x6e, 0xf9, 0xa0, 0xf7, 0xc0, 0xf5, 0xa7, 0xf2, + 0x63, 0xee, 0x12, 0xed, 0xcb, 0xec, 0x74, 0xed, 0xd1, 0xec, 0xca, 0xec, 0x4d, 0xf0, 0xe5, 0xf1, + 0x0e, 0xf5, 0x46, 0xf8, 0x16, 0xfc, 0xef, 0xfd, 0xdf, 0xfe, 0x6a, 0x02, 0xf6, 0x06, 0x26, 0x0d, + 0xdf, 0x14, 0xd0, 0x18, 0x41, 0x1a, 0x4b, 0x1c, 0x8c, 0x1e, 0xa6, 0x20, 0x91, 0x1d, 0x38, 0x1a, + 0x86, 0x19, 0x20, 0x1a, 0xa4, 0x17, 0xda, 0x14, 0x4e, 0x11, 0x66, 0x0b, 0xc5, 0x07, 0x17, 0x07, + 0xde, 0x06, 0xe5, 0x01, 0xf8, 0xfd, 0x3e, 0xfa, 0x12, 0xf7, 0x6c, 0xf3, 0xdf, 0xf2, 0xd4, 0xf2, + 0xaa, 0xf1, 0x80, 0xf2, 0x9e, 0xf0, 0x78, 0xf0, 0xc1, 0xf4, 0x48, 0xf7, 0xd4, 0xf7, 0x57, 0xf8, + 0x44, 0xf9, 0x6e, 0xfb, 0xa9, 0xfe, 0x9f, 0xfd, 0x45, 0xfa, 0xa1, 0xf9, 0x96, 0xf7, 0x6a, 0xf4, + 0x92, 0xf2, 0xaf, 0xf0, 0xdb, 0xed, 0x0a, 0xeb, 0x28, 0xec, 0x87, 0xec, 0x6a, 0xec, 0x0a, 0xee, + 0x9a, 0xef, 0xcb, 0xf0, 0xb9, 0xf1, 0xc9, 0xf6, 0xb4, 0xf9, 0x61, 0xfa, 0x73, 0xfc, 0x42, 0xfd, + 0xf1, 0xff, 0xf7, 0x04, 0xce, 0x08, 0x34, 0x0b, 0xe2, 0x0b, 0x5a, 0x0c, 0x97, 0x0d, 0xa4, 0x0c, + 0xed, 0x07, 0xca, 0x04, 0x83, 0x04, 0xd6, 0x06, 0xc7, 0x07, 0x83, 0x07, 0x8c, 0x06, 0xa4, 0x05, + 0xc8, 0x04, 0x7a, 0x04, 0x13, 0x04, 0x11, 0x03, 0x8c, 0x02, 0x20, 0x03, 0xeb, 0x04, 0xe4, 0x06, + 0xa3, 0x07, 0xc9, 0x08, 0xad, 0x09, 0x44, 0x09, 0x74, 0x0a, 0xed, 0x0d, 0xb2, 0x11, 0x4b, 0x13, + 0xeb, 0x12, 0xae, 0x12, 0xa8, 0x14, 0x8c, 0x15, 0xaf, 0x11, 0x44, 0x0e, 0x16, 0x0a, 0x72, 0x06, + 0xc1, 0x03, 0x4b, 0x00, 0x9e, 0xfa, 0x1d, 0xf4, 0x39, 0xf0, 0x55, 0xef, 0xf3, 0xee, 0xe7, 0xed, + 0xc9, 0xed, 0x99, 0xec, 0x11, 0xed, 0xc4, 0xec, 0x99, 0xef, 0x7b, 0xf3, 0xf4, 0xf4, 0x94, 0xf6, + 0x42, 0xf9, 0xc6, 0xfc, 0x61, 0x02, 0xbc, 0x08, 0xb1, 0x0c, 0xd6, 0x0d, 0x79, 0x0e, 0x3e, 0x10, + 0x87, 0x10, 0x56, 0x0e, 0xec, 0x0b, 0xa3, 0x0a, 0xce, 0x08, 0xc7, 0x06, 0x3b, 0x06, 0x1b, 0x02, + 0x06, 0xfd, 0x5a, 0xf9, 0xaf, 0xf6, 0xbf, 0xf2, 0x3a, 0xf0, 0x65, 0xed, 0x3a, 0xe9, 0xe2, 0xe6, + 0xcf, 0xe3, 0xb7, 0xe3, 0x77, 0xe5, 0x16, 0xe6, 0xe2, 0xe6, 0x31, 0xe8, 0xcf, 0xe9, 0xcd, 0xec, + 0xe1, 0xf0, 0xb1, 0xf4, 0xfd, 0xf5, 0x38, 0xf9, 0xd4, 0xfe, 0x24, 0x02, 0x0c, 0xff, 0x47, 0xfd, + 0x44, 0xfd, 0xea, 0xfc, 0x67, 0xfe, 0x53, 0xfe, 0x45, 0xfc, 0xb1, 0xfa, 0x48, 0xfa, 0x68, 0xfb, + 0x4b, 0xfc, 0xfe, 0xfc, 0xff, 0xfe, 0xac, 0x00, 0xa2, 0x02, 0xd4, 0x05, 0xf9, 0x09, 0xbb, 0x0b, + 0x56, 0x0b, 0x57, 0x0c, 0x9a, 0x0f, 0xfc, 0x13, 0x2d, 0x18, 0x16, 0x1d, 0x40, 0x1f, 0x7c, 0x1f, + 0xb5, 0x20, 0xb6, 0x23, 0x0d, 0x22, 0xfb, 0x1d, 0x1f, 0x1c, 0x36, 0x1b, 0xaf, 0x1a, 0x97, 0x18, + 0xf6, 0x15, 0xc4, 0x12, 0x6b, 0x0f, 0xc6, 0x0c, 0x47, 0x0c, 0x6b, 0x0a, 0x13, 0x07, 0xb3, 0x02, + 0xd7, 0xff, 0x70, 0xfc, 0x53, 0xfa, 0xff, 0xf9, 0x32, 0xfa, 0x03, 0xf9, 0x6a, 0xf8, 0xb4, 0xf7, + 0x6b, 0xf7, 0xa0, 0xf9, 0xb4, 0xf9, 0x64, 0xf9, 0x11, 0xf9, 0x61, 0xfb, 0x2a, 0xfd, 0xfb, 0xfb, + 0x36, 0xf8, 0xd3, 0xf4, 0xf5, 0xf3, 0xdc, 0xf2, 0x07, 0xf0, 0xf7, 0xec, 0x51, 0xea, 0x76, 0xe8, + 0xe4, 0xe8, 0x2a, 0xe8, 0x15, 0xe9, 0xb1, 0xe9, 0xb6, 0xea, 0x4f, 0xeb, 0x3b, 0xec, 0x34, 0xf0, + 0x45, 0xf3, 0x9d, 0xf5, 0xbe, 0xf7, 0xd9, 0xf8, 0x58, 0xfa, 0xac, 0xfe, 0x3b, 0x03, 0x12, 0x06, + 0xff, 0x06, 0xf4, 0x09, 0xce, 0x0c, 0xe0, 0x0a, 0x66, 0x07, 0xc8, 0x03, 0x76, 0x01, 0xd3, 0x01, + 0xb9, 0x02, 0xb7, 0x02, 0x74, 0x01, 0xed, 0xfe, 0x16, 0xfc, 0xd3, 0xfa, 0xea, 0xf9, 0x49, 0xf8, + 0x49, 0xf6, 0xa1, 0xf6, 0xd5, 0xf6, 0x6d, 0xf8, 0x99, 0xfb, 0x9e, 0xfb, 0xc7, 0xfc, 0x5d, 0xff, + 0x9f, 0xff, 0xfc, 0x01, 0x03, 0x07, 0x7c, 0x0a, 0x75, 0x0a, 0x4d, 0x0a, 0x85, 0x0e, 0x45, 0x12, + 0x0e, 0x13, 0x1f, 0x11, 0xb3, 0x0e, 0x03, 0x0d, 0xca, 0x0b, 0xd6, 0x09, 0xcf, 0x06, 0xd7, 0x02, + 0x3b, 0xfe, 0x4f, 0xfb, 0xe6, 0xf9, 0x44, 0xf8, 0x19, 0xf7, 0x4d, 0xf6, 0xab, 0xf4, 0x6c, 0xf3, + 0x8b, 0xf4, 0x93, 0xf6, 0xe1, 0xf7, 0x6d, 0xf9, 0xf0, 0xfb, 0x65, 0xfd, 0x1e, 0x00, 0x8b, 0x06, + 0xfe, 0x0b, 0x61, 0x0d, 0xfe, 0x0f, 0xd8, 0x13, 0x5b, 0x15, 0x74, 0x14, 0x32, 0x13, 0x6c, 0x11, + 0xa4, 0x12, 0x72, 0x14, 0x3b, 0x13, 0x98, 0x12, 0x66, 0x10, 0x07, 0x0d, 0xa2, 0x0b, 0xf9, 0x09, + 0x60, 0x06, 0x3c, 0x02, 0xb4, 0x00, 0x2b, 0xfe, 0x6e, 0xfa, 0x9b, 0xf9, 0xb7, 0xf8, 0x88, 0xf7, + 0xb1, 0xf5, 0xab, 0xf4, 0xa6, 0xf3, 0x2b, 0xf4, 0x60, 0xf4, 0x4b, 0xf3, 0x8e, 0xf2, 0xba, 0xf3, + 0x8c, 0xf5, 0xda, 0xf6, 0x02, 0xf5, 0x52, 0xf1, 0x8c, 0xef, 0x4d, 0xef, 0xdd, 0xef, 0x2d, 0xf0, + 0xd1, 0xef, 0x76, 0xee, 0x53, 0xee, 0xee, 0xee, 0xa7, 0xf0, 0xaa, 0xf2, 0x2f, 0xf3, 0xcc, 0xf5, + 0x91, 0xf9, 0x13, 0xfd, 0xb8, 0x00, 0x3b, 0x04, 0xad, 0x06, 0xbf, 0x08, 0x7e, 0x09, 0xb8, 0x0c, + 0xcf, 0x12, 0x1c, 0x16, 0x18, 0x17, 0xbd, 0x17, 0x39, 0x18, 0x1e, 0x18, 0x6a, 0x17, 0x49, 0x13, + 0x0c, 0x0f, 0xa5, 0x0c, 0xc9, 0x0a, 0xb3, 0x08, 0xa3, 0x06, 0xcd, 0x03, 0xfa, 0x00, 0xda, 0xfe, + 0x10, 0xfe, 0xfc, 0xfc, 0xd4, 0xfa, 0x2a, 0xf9, 0x97, 0xf5, 0x56, 0xf3, 0x6a, 0xf3, 0x65, 0xf2, + 0xaa, 0xf2, 0xfb, 0xf3, 0xc8, 0xf4, 0x0b, 0xf5, 0x4d, 0xf7, 0x43, 0xfa, 0x3e, 0xfb, 0xeb, 0xfb, + 0xc6, 0xfc, 0xcb, 0x00, 0x4e, 0x04, 0x5a, 0x04, 0x13, 0x02, 0xcd, 0xfe, 0xe4, 0xfc, 0x26, 0xfc, + 0x19, 0xfa, 0xa6, 0xf6, 0xa9, 0xf2, 0x7f, 0xf0, 0x3f, 0xef, 0x03, 0xed, 0x0f, 0xec, 0xda, 0xeb, + 0x87, 0xec, 0xa7, 0xec, 0x57, 0xed, 0x66, 0xf1, 0xc3, 0xf4, 0x2c, 0xf7, 0xe4, 0xf9, 0x61, 0xfb, + 0x3d, 0xfd, 0x5b, 0x02, 0xe8, 0x06, 0x80, 0x0a, 0x11, 0x0e, 0xd6, 0x11, 0xf7, 0x14, 0x0e, 0x17, + 0x14, 0x15, 0x68, 0x12, 0xf2, 0x11, 0xfb, 0x11, 0x90, 0x11, 0x8a, 0x13, 0x0a, 0x14, 0x6f, 0x10, + 0x00, 0x10, 0x25, 0x0f, 0x3f, 0x0c, 0x50, 0x09, 0x22, 0x07, 0x0e, 0x06, 0x81, 0x03, 0x48, 0x02, + 0x11, 0x03, 0x60, 0x02, 0x2c, 0x01, 0xbc, 0x00, 0x33, 0xff, 0xa8, 0xff, 0xfa, 0x01, 0x27, 0x04, + 0x71, 0x04, 0xa6, 0x02, 0xa5, 0x03, 0xba, 0x06, 0x1d, 0x0a, 0xb5, 0x08, 0xdd, 0x05, 0xdc, 0x04, + 0xae, 0x03, 0x32, 0x01, 0x37, 0xff, 0xd5, 0xfc, 0xea, 0xfa, 0xc6, 0xf8, 0x62, 0xf7, 0x57, 0xf8, + 0x6e, 0xf6, 0x4f, 0xf6, 0x21, 0xf6, 0xf1, 0xf4, 0xea, 0xf6, 0xe6, 0xf8, 0x26, 0xfa, 0x78, 0xfb, + 0x81, 0xfb, 0x10, 0xfb, 0x8d, 0xfe, 0xee, 0x01, 0x52, 0x05, 0x09, 0x08, 0xd3, 0x08, 0x02, 0x0a, + 0x11, 0x0c, 0xd9, 0x09, 0xdb, 0x06, 0xfa, 0x04, 0x87, 0x04, 0x95, 0x04, 0x40, 0x04, 0xff, 0x02, + 0xd0, 0x00, 0x5e, 0x00, 0xca, 0xfe, 0x87, 0xfd, 0x67, 0xfb, 0x4b, 0xf8, 0x51, 0xf6, 0xe5, 0xf4, + 0x90, 0xf3, 0xb1, 0xf3, 0x32, 0xf4, 0xde, 0xf4, 0xb1, 0xf4, 0xbf, 0xf4, 0x29, 0xf5, 0x43, 0xf6, + 0x23, 0xf8, 0x5c, 0xf8, 0xee, 0xf7, 0x8c, 0xf8, 0x57, 0xfa, 0xdf, 0xfa, 0x09, 0xf9, 0x58, 0xf6, + 0x13, 0xf3, 0xf4, 0xf1, 0x65, 0xf1, 0xe5, 0xef, 0x3a, 0xee, 0xf0, 0xec, 0x98, 0xeb, 0xd3, 0xea, + 0x89, 0xeb, 0xd1, 0xec, 0xf9, 0xee, 0x63, 0xf1, 0xbe, 0xf3, 0xb8, 0xf7, 0x1c, 0xfc, 0xf0, 0x00, + 0xf9, 0x04, 0xbf, 0x07, 0xec, 0x09, 0x6e, 0x0d, 0xb4, 0x12, 0x79, 0x19, 0x27, 0x1e, 0x2a, 0x1f, + 0x9c, 0x21, 0xe9, 0x24, 0xa1, 0x25, 0x03, 0x23, 0xa6, 0x21, 0xfe, 0x1e, 0x08, 0x1d, 0xde, 0x1b, + 0x78, 0x19, 0x7b, 0x15, 0xa1, 0x13, 0xe2, 0x10, 0x43, 0x0e, 0xe3, 0x0c, 0x78, 0x09, 0xc8, 0x05, + 0x31, 0x01, 0x0f, 0xfd, 0xd7, 0xfa, 0x92, 0xfa, 0xb6, 0xf9, 0x9d, 0xf8, 0x94, 0xf8, 0x9a, 0xf8, + 0xc7, 0xf8, 0xe5, 0xf9, 0x5c, 0xfc, 0x0a, 0xfd, 0xe3, 0xfc, 0x6c, 0xff, 0xf0, 0x02, 0xe7, 0x02, + 0xbe, 0x00, 0xa3, 0xff, 0xcb, 0xfe, 0x88, 0xfd, 0xda, 0xfb, 0xfc, 0xf9, 0xf2, 0xf6, 0x1e, 0xf4, + 0xce, 0xf1, 0x70, 0xf0, 0x4e, 0xee, 0x4b, 0xeb, 0x1a, 0xea, 0x00, 0xe9, 0x30, 0xe8, 0x79, 0xe8, + 0x4c, 0xea, 0x3a, 0xec, 0x2d, 0xec, 0x5a, 0xec, 0xfe, 0xed, 0xe2, 0xef, 0x01, 0xf3, 0x15, 0xf7, + 0x2c, 0xf9, 0x2e, 0xfc, 0xc6, 0x00, 0xf2, 0x02, 0xb3, 0x01, 0xd0, 0xff, 0xdf, 0xfd, 0x9e, 0xfe, + 0x38, 0xff, 0x20, 0x00, 0x05, 0x02, 0x2d, 0x03, 0xed, 0x02, 0xfd, 0x02, 0x92, 0x03, 0xed, 0x02, + 0x7d, 0x02, 0xab, 0x02, 0x4d, 0x01, 0x1c, 0x01, 0xfe, 0x02, 0xef, 0x03, 0x4e, 0x05, 0xed, 0x05, + 0x28, 0x05, 0x09, 0x05, 0xcc, 0x06, 0x96, 0x09, 0x89, 0x0a, 0x9f, 0x09, 0x2f, 0x09, 0x4c, 0x0a, + 0xc3, 0x0b, 0xbe, 0x0a, 0xa6, 0x07, 0x51, 0x06, 0xcf, 0x04, 0x8c, 0x01, 0x22, 0xff, 0xf0, 0xfb, + 0xeb, 0xf8, 0x49, 0xf6, 0xd3, 0xf4, 0xce, 0xf4, 0x94, 0xf4, 0x0f, 0xf4, 0x34, 0xf4, 0xb3, 0xf3, + 0x09, 0xf5, 0x3d, 0xf8, 0x81, 0xfb, 0x48, 0xfe, 0xc2, 0x00, 0xed, 0x01, 0xf3, 0x03, 0x74, 0x08, + 0xb7, 0x0d, 0x88, 0x10, 0x8b, 0x13, 0xaf, 0x17, 0xc4, 0x19, 0x2a, 0x19, 0x48, 0x16, 0xb0, 0x12, + 0xeb, 0x10, 0xc9, 0x0f, 0x76, 0x0f, 0x08, 0x0e, 0xaa, 0x0b, 0x1e, 0x0a, 0x81, 0x07, 0x7f, 0x06, + 0x42, 0x03, 0x19, 0x00, 0xd1, 0xfe, 0xe6, 0xfb, 0xe0, 0xf9, 0x5f, 0xfa, 0xcd, 0xf9, 0xcb, 0xf8, + 0xa4, 0xf9, 0x87, 0xf9, 0x26, 0xf8, 0x6b, 0xf8, 0x8e, 0xfa, 0xbe, 0xfb, 0xb5, 0xfb, 0xb7, 0xfc, + 0x2c, 0xff, 0xa1, 0x00, 0x58, 0xff, 0xfa, 0xfd, 0x11, 0xfc, 0xe5, 0xfa, 0xfd, 0xf9, 0x89, 0xf9, + 0x1a, 0xf8, 0x24, 0xf6, 0x39, 0xf3, 0x43, 0xf2, 0x07, 0xf2, 0x8a, 0xf0, 0x35, 0xf1, 0x02, 0xf3, + 0x90, 0xf2, 0x11, 0xf3, 0x80, 0xf6, 0x61, 0xf9, 0xfa, 0xfb, 0xf0, 0xfe, 0x6e, 0x01, 0x35, 0x03, + 0x2e, 0x07, 0xf2, 0x0c, 0x08, 0x10, 0x52, 0x12, 0xde, 0x15, 0xb1, 0x18, 0x97, 0x1a, 0x03, 0x1a, + 0x6a, 0x17, 0x58, 0x15, 0x37, 0x14, 0x10, 0x13, 0xcb, 0x11, 0x2d, 0x10, 0x66, 0x0e, 0x3c, 0x0c, + 0x3a, 0x0b, 0x4e, 0x09, 0x00, 0x07, 0x18, 0x04, 0x20, 0x00, 0x3a, 0xfb, 0x83, 0xf7, 0xd1, 0xf4, + 0x4e, 0xf3, 0x78, 0xf2, 0xcd, 0xf0, 0x13, 0xef, 0x51, 0xed, 0xd0, 0xed, 0xa7, 0xef, 0x71, 0xf0, + 0xd6, 0xf0, 0xb0, 0xf2, 0x19, 0xf6, 0x6c, 0xf8, 0xde, 0xf7, 0x22, 0xf7, 0xa2, 0xf6, 0x18, 0xf6, + 0x95, 0xf6, 0xc5, 0xf5, 0x27, 0xf4, 0x6b, 0xf2, 0xcd, 0xf0, 0x14, 0xf1, 0x87, 0xf0, 0x01, 0xf0, + 0x0b, 0xf1, 0x4c, 0xf1, 0x0f, 0xf2, 0xca, 0xf3, 0xc3, 0xf5, 0x8b, 0xf8, 0x83, 0xfb, 0x1a, 0xfd, + 0x28, 0xfd, 0xef, 0xfe, 0x22, 0x01, 0x32, 0x03, 0x2a, 0x06, 0xa5, 0x08, 0x84, 0x0b, 0xbf, 0x0d, + 0x11, 0x0d, 0xfb, 0x09, 0x3e, 0x06, 0xb2, 0x04, 0xc8, 0x03, 0x13, 0x05, 0xe9, 0x04, 0x6c, 0x05, + 0x25, 0x06, 0x4b, 0x05, 0xf3, 0x04, 0xf4, 0x03, 0x64, 0x04, 0x87, 0x04, 0xa3, 0x03, 0x2f, 0x04, + 0x39, 0x05, 0x23, 0x05, 0x7a, 0x06, 0x90, 0x07, 0x3a, 0x08, 0xee, 0x08, 0xfe, 0x09, 0xf2, 0x0b, + 0xe9, 0x0c, 0xa1, 0x0c, 0xbc, 0x0c, 0x1b, 0x0e, 0x12, 0x0f, 0x22, 0x0f, 0x71, 0x0c, 0xf7, 0x09, + 0x49, 0x06, 0xe8, 0x03, 0xc8, 0x01, 0x57, 0xfd, 0xa1, 0xf8, 0x84, 0xf5, 0x0d, 0xf4, 0xdc, 0xf0, + 0xab, 0xef, 0x43, 0xf0, 0xe0, 0xef, 0x97, 0xee, 0xb5, 0xef, 0xc8, 0xf0, 0x18, 0xf3, 0x09, 0xf7, + 0x31, 0xf9, 0x9e, 0xf9, 0xab, 0xfb, 0x3e, 0xfe, 0x73, 0x02, 0x0e, 0x06, 0xbb, 0x08, 0x8c, 0x0c, + 0xed, 0x10, 0xfc, 0x13, 0x87, 0x11, 0xc1, 0x0e, 0xed, 0x0c, 0x24, 0x0b, 0xb1, 0x0b, 0x61, 0x0b, + 0x76, 0x0a, 0xae, 0x08, 0x5c, 0x06, 0x40, 0x04, 0xdc, 0x00, 0xd6, 0xfd, 0x25, 0xfb, 0xe0, 0xf7, + 0x47, 0xf5, 0xd8, 0xf3, 0x50, 0xf2, 0x9e, 0xf0, 0x29, 0xf0, 0x1e, 0xf1, 0xa8, 0xef, 0x0c, 0xef, + 0x9f, 0xf1, 0xea, 0xf3, 0x14, 0xf4, 0x9c, 0xf4, 0xa3, 0xf6, 0x54, 0xfa, 0x15, 0xfc, 0x32, 0xfb, + 0x1c, 0xfa, 0x83, 0xf9, 0xae, 0xf9, 0xa2, 0xfa, 0x59, 0xfa, 0x76, 0xfa, 0xcf, 0xf9, 0xe9, 0xf8, + 0xe0, 0xf8, 0x9c, 0xf8, 0x23, 0xf9, 0x56, 0xfb, 0xf9, 0xfc, 0x4e, 0xfe, 0x0f, 0x00, 0xc1, 0x01, + 0x95, 0x04, 0x7d, 0x06, 0x07, 0x09, 0xe9, 0x0a, 0x2f, 0x0d, 0x54, 0x10, 0x78, 0x13, 0x82, 0x15, + 0x5d, 0x17, 0x15, 0x1b, 0x7f, 0x1d, 0xbb, 0x1d, 0x9e, 0x1c, 0xc7, 0x19, 0xe4, 0x17, 0xf5, 0x17, + 0x29, 0x16, 0x63, 0x14, 0x97, 0x13, 0xd7, 0x11, 0xac, 0x10, 0x8f, 0x0e, 0x54, 0x0c, 0x36, 0x0a, + 0x1f, 0x08, 0x62, 0x05, 0x83, 0x02, 0xb3, 0xff, 0x9a, 0xfe, 0x44, 0xfe, 0xd3, 0xfc, 0xb9, 0xfa, + 0xd1, 0xf8, 0x4f, 0xf9, 0x59, 0xfa, 0xa4, 0xf9, 0x00, 0xf8, 0x3d, 0xf8, 0x1c, 0xfa, 0x99, 0xfb, + 0x2e, 0xfa, 0x6f, 0xf7, 0xf5, 0xf3, 0x93, 0xf1, 0xf8, 0xf1, 0x71, 0xf0, 0x57, 0xef, 0x98, 0xed, + 0xea, 0xea, 0xd2, 0xe8, 0xc6, 0xe7, 0x2f, 0xe7, 0xb2, 0xe6, 0xb9, 0xe6, 0x29, 0xe7, 0xd8, 0xe7, + 0x1f, 0xe9, 0xe9, 0xeb, 0x0d, 0xef, 0x2f, 0xf2, 0xb4, 0xf3, 0x3e, 0xf5, 0x37, 0xf9, 0x2b, 0xfe, + 0xbd, 0xff, 0x26, 0x02, 0xc7, 0x06, 0x99, 0x0b, 0x9d, 0x0d, 0xab, 0x0b, 0x9f, 0x08, 0xeb, 0x04, + 0x1e, 0x03, 0x0a, 0x02, 0xdb, 0x00, 0x40, 0x01, 0x42, 0x01, 0x5b, 0x00, 0x30, 0xff, 0xfe, 0xfc, + 0x99, 0xfa, 0x0d, 0xfa, 0x10, 0xfa, 0x12, 0xfa, 0x58, 0xfa, 0x0a, 0xfa, 0x96, 0xfa, 0xe1, 0xfb, + 0xe7, 0xfc, 0xe4, 0xfd, 0x03, 0xff, 0x8d, 0x01, 0xeb, 0x03, 0x6b, 0x04, 0x9f, 0x04, 0xcc, 0x06, + 0x25, 0x09, 0xfb, 0x0a, 0xe3, 0x0b, 0x29, 0x0a, 0x3a, 0x08, 0x7a, 0x07, 0xdc, 0x05, 0xb5, 0x03, + 0x94, 0x01, 0xa3, 0xfe, 0xef, 0xfc, 0x26, 0xfb, 0x3f, 0xf8, 0x12, 0xf6, 0x6d, 0xf6, 0x5d, 0xf4, + 0x99, 0xf3, 0xe4, 0xf3, 0x47, 0xf5, 0x26, 0xf7, 0xe9, 0xf7, 0x33, 0xf9, 0x7d, 0xfa, 0x7c, 0xfd, + 0x80, 0x01, 0x2c, 0x04, 0x46, 0x06, 0xd7, 0x09, 0xd1, 0x0e, 0xc5, 0x13, 0x24, 0x15, 0x97, 0x13, + 0x36, 0x12, 0x12, 0x11, 0xf3, 0x10, 0x4a, 0x12, 0x59, 0x14, 0xbb, 0x13, 0x50, 0x12, 0xcd, 0x11, + 0x76, 0x10, 0x57, 0x0e, 0xeb, 0x0c, 0xa1, 0x0a, 0xbb, 0x08, 0x9f, 0x07, 0x71, 0x05, 0x09, 0x04, + 0x15, 0x01, 0x3b, 0xfe, 0xff, 0xfb, 0xa2, 0xf9, 0x24, 0xfa, 0x58, 0xfb, 0x0a, 0xfa, 0xdd, 0xf7, + 0x5e, 0xf6, 0xab, 0xf7, 0x76, 0xf9, 0x00, 0xf9, 0x05, 0xf7, 0xf8, 0xf4, 0xea, 0xf5, 0x7e, 0xf5, + 0x6f, 0xf5, 0x91, 0xf5, 0x47, 0xf4, 0x78, 0xf4, 0xe0, 0xf4, 0x31, 0xf4, 0xf8, 0xf3, 0x49, 0xf6, + 0x1d, 0xf8, 0xaa, 0xfa, 0xd9, 0xfc, 0x35, 0xff, 0xc0, 0x00, 0x4d, 0x04, 0xc9, 0x06, 0x87, 0x08, + 0x09, 0x0c, 0x3d, 0x10, 0x6f, 0x13, 0x4a, 0x14, 0x0d, 0x16, 0xba, 0x16, 0xa6, 0x19, 0x58, 0x1a, + 0xd2, 0x19, 0xb6, 0x17, 0x21, 0x15, 0x7c, 0x12, 0xaf, 0x0f, 0x54, 0x0d, 0x57, 0x0b, 0x61, 0x09, + 0x0b, 0x09, 0x4c, 0x07, 0x03, 0x05, 0x64, 0x03, 0xfa, 0x01, 0x3b, 0xff, 0xe6, 0xfc, 0x74, 0xfb, + 0xb3, 0xf9, 0x4d, 0xf7, 0x94, 0xf5, 0x18, 0xf3, 0x5c, 0xf0, 0x78, 0xf1, 0x3d, 0xf3, 0x02, 0xf3, + 0x7c, 0xf2, 0xbf, 0xf1, 0xce, 0xf2, 0x91, 0xf5, 0x8b, 0xf7, 0xc5, 0xf6, 0x22, 0xf4, 0x2b, 0xf3, + 0x08, 0xf2, 0xd8, 0xf0, 0xc7, 0xef, 0x78, 0xeb, 0xf2, 0xe8, 0xbf, 0xe7, 0x6f, 0xe5, 0x6d, 0xe3, + 0x63, 0xe3, 0x39, 0xe3, 0xb7, 0xe2, 0xc4, 0xe4, 0x1f, 0xe7, 0x2e, 0xea, 0xc2, 0xec, 0x09, 0xf0, + 0xb0, 0xf2, 0x87, 0xf3, 0xf0, 0xf5, 0x88, 0xfa, 0x85, 0xfd, 0x8a, 0xff, 0x1e, 0x02, 0x26, 0x07, + 0xc8, 0x0a, 0xf2, 0x0b, 0x17, 0x0c, 0xf6, 0x0a, 0x6c, 0x0b, 0x27, 0x0c, 0x78, 0x0c, 0x79, 0x0d, + 0xe5, 0x0e, 0xda, 0x0f, 0x77, 0x10, 0xb8, 0x0f, 0xe1, 0x0d, 0x29, 0x0d, 0x99, 0x0c, 0xd1, 0x0d, + 0xfc, 0x0c, 0xf2, 0x0c, 0x43, 0x0c, 0xdd, 0x0b, 0xce, 0x0b, 0x6f, 0x0b, 0xfb, 0x0a, 0xe3, 0x0a, + 0xe5, 0x0b, 0x5d, 0x0b, 0xae, 0x09, 0x65, 0x08, 0xf4, 0x08, 0x1a, 0x09, 0x1e, 0x07, 0xe1, 0x05, + 0xbc, 0x05, 0xd0, 0x03, 0x4e, 0x04, 0x1a, 0x03, 0x61, 0x00, 0x1e, 0xff, 0x18, 0xfe, 0x08, 0xfd, + 0xb2, 0xfb, 0x8a, 0xfa, 0x08, 0xf9, 0xe3, 0xf7, 0xf2, 0xf8, 0x3f, 0xfa, 0xdf, 0xfb, 0xc6, 0xfd, + 0x24, 0xff, 0x8b, 0xff, 0x49, 0xff, 0xfc, 0xff, 0x65, 0x01, 0x6d, 0x02, 0x06, 0x02, 0x25, 0x01, + 0x23, 0x04, 0x54, 0x07, 0x07, 0x07, 0x3c, 0x05, 0x27, 0x01, 0xb6, 0xfe, 0x88, 0xfd, 0xb6, 0xfd, + 0xda, 0xff, 0xa1, 0xff, 0xd5, 0xfe, 0x9a, 0xfe, 0xd9, 0xfd, 0x7b, 0xfc, 0x1d, 0xfb, 0x2b, 0xf9, + 0xd4, 0xf7, 0x28, 0xf8, 0x3a, 0xf8, 0x49, 0xf8, 0x4c, 0xf9, 0x46, 0xf9, 0x96, 0xf9, 0x7a, 0xfa, + 0x65, 0xfb, 0xbf, 0xfd, 0xba, 0xfe, 0x0c, 0xfe, 0xf1, 0xfb, 0x12, 0xfe, 0x87, 0xff, 0x6f, 0xfd, + 0x7e, 0xfb, 0xa5, 0xf8, 0x4f, 0xf6, 0xea, 0xf5, 0x0f, 0xf5, 0xdd, 0xf4, 0x2a, 0xf4, 0xe6, 0xf3, + 0xd9, 0xf3, 0xe9, 0xf2, 0xdd, 0xf2, 0xdc, 0xf2, 0x29, 0xf4, 0xa1, 0xf7, 0x4f, 0xf9, 0x6f, 0xfb, + 0xb4, 0xfe, 0x42, 0x02, 0x94, 0x06, 0xd3, 0x09, 0xa3, 0x0d, 0xc1, 0x13, 0xcf, 0x18, 0x92, 0x1b, + 0xbf, 0x1d, 0x27, 0x20, 0x2e, 0x23, 0x08, 0x25, 0x8a, 0x25, 0x45, 0x23, 0x8f, 0x20, 0xe4, 0x1c, + 0x96, 0x19, 0xca, 0x16, 0xf2, 0x12, 0xf9, 0x0f, 0x69, 0x0e, 0xc2, 0x0d, 0x0f, 0x0b, 0x4a, 0x07, + 0xbf, 0x02, 0xbe, 0xfe, 0x25, 0xfc, 0x96, 0xf9, 0x65, 0xf7, 0x57, 0xf5, 0x49, 0xf3, 0x02, 0xf2, + 0x48, 0xf0, 0xcc, 0xf0, 0xa2, 0xf3, 0x1f, 0xf6, 0x87, 0xf6, 0x5c, 0xf5, 0xc1, 0xf7, 0xc6, 0xf9, + 0x5c, 0xfb, 0x50, 0xfc, 0x97, 0xfa, 0x03, 0xf9, 0xa7, 0xf8, 0x17, 0xf9, 0xa3, 0xf8, 0x8a, 0xf7, + 0x15, 0xf6, 0x01, 0xf6, 0xc3, 0xf5, 0x48, 0xf4, 0xce, 0xf2, 0xec, 0xf1, 0x15, 0xf1, 0x59, 0xf0, + 0x33, 0xf0, 0x0a, 0xf1, 0xfa, 0xf1, 0x6d, 0xf2, 0x8a, 0xf2, 0xe6, 0xf2, 0xf6, 0xf3, 0x3c, 0xf6, + 0x83, 0xf8, 0x20, 0xfa, 0xb6, 0xfb, 0xd7, 0xfe, 0xea, 0x01, 0x8a, 0x03, 0xd4, 0x02, 0x11, 0x00, + 0x3d, 0xfe, 0x72, 0xfc, 0x6a, 0xfb, 0x68, 0xfb, 0x43, 0xfb, 0xe7, 0xfc, 0x05, 0xff, 0x97, 0xff, + 0x10, 0x00, 0xe7, 0xff, 0xa0, 0x00, 0x16, 0x02, 0xa8, 0x02, 0x04, 0x04, 0x89, 0x04, 0xd4, 0x04, + 0xfa, 0x04, 0x4a, 0x05, 0x87, 0x04, 0xe9, 0x05, 0xe8, 0x07, 0xb7, 0x07, 0x59, 0x07, 0x77, 0x07, + 0x18, 0x08, 0x33, 0x08, 0x57, 0x07, 0x52, 0x04, 0x38, 0x03, 0x79, 0x03, 0x20, 0x02, 0x73, 0xff, + 0xfa, 0xfc, 0xf4, 0xf9, 0xd1, 0xf7, 0xcf, 0xf7, 0x0e, 0xf7, 0x50, 0xf5, 0xf1, 0xf3, 0x4c, 0xf4, + 0xf2, 0xf4, 0xe7, 0xf5, 0x76, 0xf7, 0x72, 0xf9, 0xa3, 0xfb, 0xae, 0xfd, 0x3d, 0xff, 0x98, 0x01, + 0x21, 0x05, 0x11, 0x08, 0x70, 0x0a, 0xa0, 0x0b, 0x00, 0x0f, 0x95, 0x12, 0xfa, 0x15, 0xfb, 0x15, + 0xc2, 0x12, 0x0f, 0x10, 0xdc, 0x0d, 0xba, 0x0c, 0x51, 0x0a, 0x7d, 0x08, 0xe5, 0x06, 0xda, 0x05, + 0x99, 0x04, 0x25, 0x03, 0x31, 0x01, 0x0e, 0xff, 0x8e, 0xfd, 0xd6, 0xfc, 0x64, 0xfc, 0x77, 0xfb, + 0x45, 0xfa, 0xd3, 0xf9, 0x8a, 0xf9, 0x6f, 0xf7, 0xda, 0xf7, 0xd1, 0xf9, 0x34, 0xfb, 0x38, 0xfc, + 0xe0, 0xfc, 0xca, 0xfe, 0x06, 0x01, 0x86, 0x02, 0x42, 0x01, 0x16, 0x00, 0xa5, 0xff, 0xd7, 0xff, + 0x4e, 0xff, 0x01, 0xff, 0xf1, 0xfc, 0x18, 0xfb, 0xce, 0xfa, 0x54, 0xf9, 0x48, 0xf8, 0x99, 0xf7, + 0x8a, 0xf7, 0x39, 0xf9, 0xdf, 0xfa, 0x39, 0xfc, 0xd2, 0xfd, 0x9b, 0xff, 0x9f, 0x01, 0xca, 0x03, + 0x35, 0x07, 0x28, 0x0a, 0xdf, 0x0d, 0xc4, 0x10, 0xdd, 0x11, 0x38, 0x14, 0x19, 0x18, 0xae, 0x1a, + 0x14, 0x1b, 0x86, 0x19, 0x1c, 0x18, 0x46, 0x16, 0xdb, 0x13, 0xba, 0x11, 0x41, 0x0f, 0xf6, 0x0a, + 0x1d, 0x09, 0xa3, 0x08, 0x96, 0x06, 0x91, 0x04, 0xbb, 0x00, 0xcf, 0xfd, 0x03, 0xfc, 0x93, 0xfa, + 0x3a, 0xf8, 0x0b, 0xf5, 0xcc, 0xf3, 0x15, 0xf2, 0x63, 0xef, 0xd7, 0xed, 0xd8, 0xed, 0xcb, 0xee, + 0xa1, 0xef, 0x03, 0xef, 0xcc, 0xef, 0xb6, 0xf2, 0x76, 0xf5, 0xc4, 0xf4, 0x6d, 0xf4, 0x4a, 0xf5, + 0xd5, 0xf4, 0x4b, 0xf4, 0x57, 0xf4, 0x21, 0xf3, 0x98, 0xf0, 0x44, 0xf0, 0x39, 0xef, 0x97, 0xee, + 0xad, 0xee, 0x0d, 0xef, 0x09, 0xef, 0x49, 0xef, 0x54, 0xf0, 0xd7, 0xf1, 0xa6, 0xf3, 0x43, 0xf6, + 0xf8, 0xf8, 0x0f, 0xfb, 0x3b, 0xfd, 0xe2, 0xfe, 0x4f, 0x01, 0x37, 0x02, 0xf1, 0x02, 0xfd, 0x05, + 0xb7, 0x09, 0x8b, 0x0c, 0x36, 0x0c, 0x86, 0x0a, 0x6e, 0x08, 0x35, 0x06, 0x4f, 0x05, 0x95, 0x05, + 0xad, 0x04, 0x5f, 0x04, 0x06, 0x05, 0x99, 0x05, 0x45, 0x05, 0xc2, 0x04, 0xba, 0x03, 0xf2, 0x04, + 0xb8, 0x06, 0x26, 0x06, 0x44, 0x06, 0xe1, 0x06, 0xb8, 0x07, 0x56, 0x08, 0xa7, 0x09, 0x04, 0x0c, + 0xc2, 0x0d, 0x6d, 0x0e, 0xec, 0x0d, 0x37, 0x0e, 0x3e, 0x0f, 0x4f, 0x0f, 0xe8, 0x0d, 0xac, 0x0b, + 0x2c, 0x0a, 0x42, 0x08, 0x22, 0x06, 0xd3, 0x03, 0x01, 0x01, 0x9f, 0xfc, 0x73, 0xf9, 0x41, 0xf7, + 0xa6, 0xf5, 0xc6, 0xf3, 0x61, 0xf1, 0x5d, 0xf0, 0xb5, 0xf0, 0xac, 0xf0, 0x51, 0xf1, 0x1d, 0xf2, + 0x2f, 0xf3, 0x76, 0xf5, 0xf2, 0xf6, 0x03, 0xf8, 0xf4, 0xfa, 0xf1, 0xfe, 0x40, 0x01, 0xd2, 0x03, + 0xb5, 0x07, 0xd8, 0x0b, 0x4a, 0x10, 0xf0, 0x11, 0xe4, 0x12, 0xf6, 0x11, 0x01, 0x10, 0xa6, 0x0e, + 0x26, 0x0d, 0x5d, 0x0b, 0xad, 0x09, 0x7c, 0x07, 0xb6, 0x04, 0x2a, 0x02, 0xa5, 0xff, 0x88, 0xfc, + 0x93, 0xfa, 0xca, 0xf8, 0xee, 0xf5, 0x87, 0xf3, 0x30, 0xf2, 0xce, 0xf0, 0x5a, 0xef, 0x9f, 0xee, + 0x13, 0xee, 0x4a, 0xee, 0xd3, 0xef, 0x5c, 0xf0, 0x8d, 0xf0, 0xcc, 0xf2, 0x59, 0xf5, 0x78, 0xf7, + 0xda, 0xf7, 0x1d, 0xf8, 0x4e, 0xf7, 0x79, 0xf7, 0xf1, 0xf7, 0x97, 0xf8, 0x28, 0xf8, 0xed, 0xf7, + 0xf3, 0xf7, 0x72, 0xf8, 0x1d, 0xf8, 0x6d, 0xf7, 0x32, 0xf8, 0x16, 0xfa, 0x9a, 0xfc, 0x9e, 0xfe, + 0xa2, 0x00, 0xc2, 0x01, 0x54, 0x03, 0x0d, 0x06, 0xda, 0x08, 0x7f, 0x0b, 0x2e, 0x0f, 0x87, 0x11, + 0x8d, 0x12, 0x84, 0x14, 0x1b, 0x17, 0x03, 0x1a, 0x1f, 0x1b, 0x90, 0x1b, 0x5f, 0x1a, 0xbe, 0x18, + 0x93, 0x16, 0xb5, 0x14, 0x18, 0x12, 0x54, 0x0f, 0x0b, 0x0d, 0xca, 0x0a, 0xac, 0x0a, 0xe1, 0x08, + 0x35, 0x06, 0x2e, 0x05, 0x47, 0x05, 0xf2, 0x03, 0xbc, 0x02, 0xac, 0x01, 0xf9, 0x00, 0xaf, 0xff, + 0x3f, 0xff, 0x7e, 0xfe, 0xd5, 0xfd, 0xf9, 0xfe, 0x88, 0xfe, 0xd8, 0xfc, 0x96, 0xfc, 0xb5, 0xfc, + 0xbb, 0xfc, 0x98, 0xfc, 0x38, 0xfb, 0x95, 0xf9, 0x44, 0xf8, 0xe7, 0xf6, 0xb3, 0xf5, 0xaa, 0xf4, + 0x71, 0xf3, 0xc7, 0xf1, 0x92, 0xef, 0x44, 0xee, 0x95, 0xed, 0x68, 0xed, 0x34, 0xed, 0x14, 0xed, + 0x23, 0xed, 0xd8, 0xed, 0xc6, 0xee, 0xb7, 0xf0, 0x81, 0xf3, 0x85, 0xf6, 0x15, 0xf9, 0x35, 0xfc, + 0xe4, 0xff, 0xac, 0x02, 0x2d, 0x05, 0x9d, 0x07, 0xc1, 0x0a, 0x7a, 0x0e, 0xb6, 0x0f, 0x02, 0x0f, + 0x13, 0x0d, 0xa6, 0x0a, 0x56, 0x08, 0x79, 0x05, 0x96, 0x02, 0xc5, 0x00, 0x64, 0xff, 0x3b, 0xff, + 0xc9, 0xfd, 0x40, 0xfb, 0xa1, 0xf9, 0x59, 0xf9, 0x4b, 0xfa, 0x16, 0xfb, 0x9e, 0xfa, 0x2b, 0xfa, + 0xb0, 0xfa, 0x00, 0xfb, 0xa7, 0xfa, 0x2a, 0xfd, 0x83, 0x00, 0x2d, 0x02, 0x36, 0x03, 0xb5, 0x04, + 0xae, 0x06, 0x1e, 0x09, 0x89, 0x0a, 0xc0, 0x0a, 0xd9, 0x09, 0xbb, 0x09, 0xf8, 0x08, 0xab, 0x07, + 0x66, 0x06, 0x87, 0x03, 0x65, 0x00, 0x4e, 0xfd, 0x92, 0xfa, 0xb8, 0xf7, 0x1b, 0xf5, 0xb9, 0xf1, + 0x97, 0xef, 0xe4, 0xef, 0x6c, 0xef, 0x02, 0xee, 0x8a, 0xee, 0xfc, 0xef, 0xe9, 0xf1, 0xc3, 0xf2, + 0x35, 0xf5, 0xd7, 0xf9, 0xd9, 0xfc, 0x7e, 0xff, 0x89, 0x02, 0x54, 0x07, 0x30, 0x0c, 0xf4, 0x0f, + 0xe8, 0x11, 0x69, 0x12, 0xbf, 0x12, 0x81, 0x11, 0x2c, 0x11, 0xc5, 0x10, 0x7c, 0x0f, 0x0f, 0x0e, + 0xa9, 0x0d, 0x00, 0x0d, 0x0d, 0x0c, 0xc7, 0x0a, 0x40, 0x09, 0x27, 0x07, 0xda, 0x04, 0x72, 0x02, + 0x6e, 0x00, 0xd2, 0xff, 0xbc, 0xfe, 0x56, 0xfc, 0x33, 0xfa, 0xfd, 0xf9, 0x2a, 0xf9, 0x86, 0xf8, + 0x45, 0xf8, 0x2c, 0xf8, 0xe2, 0xf8, 0x5a, 0xfa, 0x11, 0xfa, 0x1b, 0xf9, 0x67, 0xf8, 0xe2, 0xf7, + 0x15, 0xf8, 0xaf, 0xf7, 0x0d, 0xf7, 0x9d, 0xf6, 0xce, 0xf5, 0x2f, 0xf5, 0x82, 0xf4, 0x42, 0xf4, + 0x0d, 0xf4, 0x4d, 0xf5, 0x9a, 0xf8, 0x7e, 0xfb, 0x8c, 0xfd, 0x27, 0x00, 0xac, 0x02, 0xe2, 0x04, + 0x71, 0x07, 0xff, 0x0a, 0x3b, 0x0f, 0x95, 0x12, 0xfa, 0x13, 0x5e, 0x15, 0xed, 0x16, 0xb2, 0x18, + 0xe5, 0x19, 0x64, 0x19, 0xf6, 0x17, 0x82, 0x16, 0x55, 0x13, 0x95, 0x10, 0xd5, 0x0d, 0xfd, 0x09, + 0xc2, 0x06, 0x9e, 0x03, 0x84, 0x02, 0x62, 0x00, 0xa3, 0xfd, 0x2e, 0xfb, 0xc1, 0xf9, 0xf7, 0xf8, + 0x5e, 0xf7, 0x1c, 0xf5, 0x65, 0xf4, 0x75, 0xf3, 0x2e, 0xf2, 0x67, 0xf1, 0x57, 0xf2, 0x77, 0xf4, + 0xda, 0xf5, 0x32, 0xf7, 0x4a, 0xf8, 0x58, 0xfa, 0x1c, 0xfd, 0x2c, 0xff, 0x54, 0xff, 0x3b, 0xff, + 0x1b, 0xff, 0xcf, 0xfe, 0x66, 0xfe, 0x44, 0xfc, 0x3d, 0xfa, 0xd0, 0xf7, 0x3a, 0xf5, 0x7b, 0xf3, + 0xab, 0xf2, 0xb4, 0xf1, 0x9a, 0xf0, 0x26, 0xf0, 0xce, 0xef, 0x8d, 0xee, 0x2d, 0xee, 0xfd, 0xef, + 0xbc, 0xf1, 0x11, 0xf4, 0x8e, 0xf5, 0x38, 0xf8, 0xd3, 0xfa, 0x79, 0xfc, 0xfd, 0xfe, 0x68, 0x01, + 0x7f, 0x05, 0x75, 0x0a, 0x3f, 0x0d, 0x8d, 0x0f, 0xde, 0x10, 0xea, 0x0f, 0xaa, 0x0f, 0xe2, 0x0e, + 0x2b, 0x0d, 0x2f, 0x0c, 0x9a, 0x0c, 0x7a, 0x0c, 0x6a, 0x0b, 0x0e, 0x0b, 0xb2, 0x08, 0xa3, 0x06, + 0x2e, 0x06, 0xbf, 0x05, 0x87, 0x04, 0xeb, 0x03, 0xe8, 0x02, 0x69, 0x01, 0xb9, 0xff, 0x69, 0xff, + 0xc5, 0x00, 0xed, 0x01, 0xba, 0x01, 0xf7, 0x00, 0xc5, 0x01, 0x99, 0x03, 0x4f, 0x04, 0x0d, 0x04, + 0x64, 0x03, 0x54, 0x02, 0x04, 0x02, 0x6c, 0x02, 0x97, 0x01, 0x6c, 0x00, 0xcd, 0xfe, 0x25, 0xfd, + 0x56, 0xfc, 0x8b, 0xfb, 0xb6, 0xfa, 0x4e, 0xf9, 0xf0, 0xf8, 0x90, 0xf9, 0x91, 0xf9, 0xe7, 0xf9, + 0x5a, 0xfa, 0x72, 0xfb, 0x2a, 0xfc, 0x23, 0xfc, 0x2d, 0xfd, 0x20, 0xff, 0x64, 0x01, 0xf0, 0x01, + 0x29, 0x02, 0x50, 0x04, 0xdb, 0x06, 0x37, 0x08, 0xda, 0x09, 0x4d, 0x0a, 0x60, 0x09, 0xc3, 0x08, + 0xf5, 0x07, 0x9f, 0x05, 0x71, 0x03, 0xa9, 0x01, 0xc4, 0xff, 0x37, 0xfe, 0x62, 0xfd, 0x83, 0xfb, + 0x51, 0xfa, 0x0e, 0xfa, 0xca, 0xf8, 0xb2, 0xf6, 0xc2, 0xf5, 0xe5, 0xf5, 0x7e, 0xf5, 0xa3, 0xf5, + 0x66, 0xf5, 0x3b, 0xf6, 0xbe, 0xf6, 0xbf, 0xf6, 0xe2, 0xf6, 0xbb, 0xf7, 0xa5, 0xf8, 0xc4, 0xf9, + 0x00, 0xf9, 0x5e, 0xf7, 0x1f, 0xf6, 0x19, 0xf5, 0x31, 0xf4, 0xac, 0xf2, 0xb2, 0xf2, 0xb4, 0xf1, + 0x70, 0xf0, 0xf6, 0xef, 0xae, 0xef, 0xf8, 0xef, 0xed, 0xef, 0x52, 0xf0, 0x5d, 0xf2, 0x3b, 0xf5, + 0x09, 0xf7, 0xd2, 0xf9, 0x94, 0xfc, 0x38, 0xff, 0xbf, 0x01, 0x08, 0x05, 0x4d, 0x0a, 0xac, 0x0f, + 0x6e, 0x13, 0xfa, 0x16, 0x7d, 0x1a, 0xd2, 0x1d, 0xd4, 0x20, 0xb0, 0x22, 0x6f, 0x23, 0xf3, 0x21, + 0xce, 0x21, 0xda, 0x20, 0x69, 0x1d, 0x23, 0x1a, 0x8b, 0x16, 0x11, 0x12, 0x60, 0x0f, 0x6c, 0x0d, + 0xfe, 0x0a, 0xf6, 0x07, 0x61, 0x05, 0x6b, 0x03, 0x1d, 0x01, 0x15, 0xff, 0x15, 0xfd, 0xe3, 0xfa, + 0x23, 0xf9, 0x43, 0xf7, 0xb1, 0xf6, 0xef, 0xf7, 0xd5, 0xf8, 0x78, 0xf8, 0x8d, 0xf8, 0xe4, 0xf9, + 0x75, 0xfb, 0x6c, 0xfc, 0x6a, 0xfd, 0xdb, 0xfd, 0xc5, 0xfe, 0x2d, 0x00, 0xe9, 0x00, 0x90, 0x00, + 0xf4, 0xff, 0xa6, 0xfe, 0x1d, 0xfd, 0x0a, 0xfc, 0x44, 0xfb, 0xc2, 0xfa, 0xfc, 0xf9, 0xf5, 0xf8, + 0x9b, 0xf7, 0x5e, 0xf5, 0x7e, 0xf3, 0x8a, 0xf2, 0xfd, 0xf2, 0x35, 0xf4, 0x64, 0xf4, 0xf0, 0xf5, + 0x16, 0xf8, 0xe6, 0xf8, 0xd2, 0xf9, 0x76, 0xfb, 0xb8, 0xfd, 0xa0, 0x00, 0x60, 0x03, 0xd2, 0x05, + 0x36, 0x06, 0x19, 0x06, 0xca, 0x05, 0x53, 0x04, 0xaa, 0x03, 0x10, 0x02, 0x62, 0x00, 0x6e, 0x00, + 0xe0, 0x00, 0x31, 0x01, 0x64, 0x01, 0xf1, 0x00, 0xc7, 0x00, 0x7b, 0x01, 0xbd, 0x01, 0x74, 0x01, + 0x12, 0x01, 0x4d, 0x01, 0x41, 0x00, 0xa3, 0xff, 0x6e, 0x00, 0x8f, 0x01, 0xdf, 0x01, 0x45, 0x01, + 0x67, 0x01, 0xec, 0x02, 0x04, 0x04, 0x53, 0x02, 0xd6, 0x00, 0x58, 0xff, 0x6f, 0xfe, 0xbf, 0xfd, + 0x32, 0xfc, 0xcb, 0xfa, 0xf5, 0xf8, 0xd2, 0xf6, 0x0a, 0xf5, 0x09, 0xf4, 0xe9, 0xf2, 0x7b, 0xf1, + 0xac, 0xf0, 0xfa, 0xf0, 0xbc, 0xf1, 0xc4, 0xf2, 0xa5, 0xf3, 0x87, 0xf5, 0x35, 0xf7, 0x72, 0xf8, + 0xec, 0xfb, 0x73, 0xff, 0x7c, 0x02, 0x10, 0x05, 0xfd, 0x07, 0x4f, 0x0a, 0xb4, 0x0d, 0xc3, 0x10, + 0xc5, 0x12, 0x31, 0x13, 0xc9, 0x13, 0x76, 0x13, 0xa7, 0x11, 0x57, 0x0f, 0xee, 0x0b, 0x95, 0x08, + 0xb2, 0x06, 0x52, 0x05, 0x23, 0x04, 0xc4, 0x03, 0x88, 0x02, 0x49, 0x01, 0x42, 0x00, 0xa5, 0xfe, + 0xd9, 0xfb, 0xb1, 0xfa, 0x27, 0xfa, 0x75, 0xf8, 0xe9, 0xf6, 0x2e, 0xf7, 0x3f, 0xf7, 0xdf, 0xf6, + 0x95, 0xf6, 0xa7, 0xf6, 0x2e, 0xf9, 0x50, 0xfb, 0x5f, 0xfc, 0x1a, 0xfd, 0x90, 0xfc, 0x80, 0xfc, + 0x9c, 0xfc, 0x6e, 0xfc, 0x78, 0xfc, 0xdf, 0xfb, 0x69, 0xfa, 0x4d, 0xf9, 0x5e, 0xf8, 0x81, 0xf7, + 0x9f, 0xf6, 0x16, 0xf6, 0xc0, 0xf6, 0xf4, 0xf8, 0x29, 0xfa, 0xc1, 0xfa, 0xb4, 0xfc, 0x6a, 0xff, + 0xbb, 0x00, 0x0e, 0x03, 0xcd, 0x06, 0x37, 0x0a, 0x0b, 0x0d, 0xf4, 0x0e, 0x99, 0x10, 0xb6, 0x13, + 0xb6, 0x16, 0x93, 0x17, 0xec, 0x17, 0xda, 0x17, 0x56, 0x18, 0xea, 0x17, 0x18, 0x17, 0xd8, 0x14, + 0xa4, 0x11, 0xec, 0x0e, 0x32, 0x0c, 0xda, 0x09, 0xd6, 0x08, 0xfd, 0x06, 0xaf, 0x04, 0xdf, 0x02, + 0x6e, 0x01, 0x63, 0xff, 0xd4, 0xfc, 0x3d, 0xfa, 0xd2, 0xf7, 0x6d, 0xf5, 0xd5, 0xf3, 0xf2, 0xf2, + 0xc3, 0xf2, 0x23, 0xf2, 0xc8, 0xf1, 0xa5, 0xf2, 0x01, 0xf4, 0x3d, 0xf4, 0xae, 0xf4, 0x68, 0xf5, + 0xe8, 0xf5, 0xf0, 0xf6, 0x92, 0xf7, 0x64, 0xf7, 0x11, 0xf6, 0x07, 0xf4, 0x4b, 0xf3, 0x5a, 0xf3, + 0xf1, 0xf2, 0x43, 0xf3, 0x88, 0xf3, 0x9e, 0xf4, 0xc7, 0xf5, 0xe6, 0xf5, 0x8a, 0xf5, 0x1b, 0xf6, + 0xb8, 0xf7, 0x14, 0xf9, 0xdc, 0xfa, 0xdd, 0xfd, 0x8c, 0x00, 0x17, 0x02, 0x2f, 0x02, 0x82, 0x01, + 0x39, 0x03, 0x5b, 0x06, 0x75, 0x08, 0x31, 0x0a, 0x70, 0x0a, 0x36, 0x0a, 0x24, 0x09, 0xe7, 0x07, + 0x27, 0x06, 0x52, 0x04, 0x70, 0x02, 0xff, 0x00, 0xb2, 0x00, 0x01, 0x01, 0x44, 0x00, 0x22, 0x00, + 0xeb, 0x00, 0x54, 0x01, 0xc1, 0x01, 0x2b, 0x02, 0xcc, 0x02, 0x22, 0x04, 0x55, 0x05, 0x07, 0x06, + 0x0a, 0x08, 0x7e, 0x0a, 0x4b, 0x0c, 0x4c, 0x0d, 0x53, 0x0e, 0xa7, 0x10, 0xc8, 0x11, 0x7d, 0x11, + 0xe9, 0x0f, 0x5a, 0x0d, 0x41, 0x0c, 0x6b, 0x0a, 0xee, 0x07, 0x1b, 0x05, 0x9f, 0x01, 0x95, 0xfe, + 0xcb, 0xfa, 0xee, 0xf7, 0xfe, 0xf5, 0xa6, 0xf2, 0xfc, 0xf0, 0x49, 0xf1, 0x8d, 0xf0, 0xbb, 0xef, + 0x25, 0xf0, 0x09, 0xf1, 0x21, 0xf2, 0x06, 0xf3, 0xd5, 0xf4, 0xb6, 0xf6, 0x62, 0xf9, 0x2c, 0xfc, + 0xad, 0xfd, 0x74, 0x00, 0x43, 0x04, 0x23, 0x07, 0x9d, 0x0a, 0xf3, 0x0c, 0x79, 0x0e, 0xd6, 0x0f, + 0x9d, 0x10, 0x79, 0x0f, 0x87, 0x0c, 0x86, 0x09, 0x5b, 0x06, 0x12, 0x04, 0x3f, 0x02, 0x9e, 0x00, + 0x6a, 0xfe, 0x0d, 0xfd, 0xaf, 0xfb, 0xf2, 0xf8, 0xf0, 0xf5, 0xa6, 0xf3, 0xb0, 0xf2, 0x11, 0xf1, + 0x1f, 0xef, 0x5d, 0xef, 0x48, 0xf0, 0x48, 0xf0, 0x53, 0xef, 0xf4, 0xee, 0xc5, 0xf0, 0xcc, 0xf2, + 0xbf, 0xf4, 0xf1, 0xf5, 0xb6, 0xf5, 0xf1, 0xf5, 0x86, 0xf6, 0xc4, 0xf7, 0xfd, 0xf7, 0x96, 0xf8, + 0xa9, 0xf9, 0x80, 0xfa, 0xe4, 0xfa, 0x4e, 0xfb, 0x0b, 0xfb, 0x88, 0xfb, 0x51, 0xfd, 0xb9, 0xfe, + 0x3d, 0x00, 0x42, 0x01, 0xdc, 0x01, 0x11, 0x03, 0x8d, 0x04, 0x6d, 0x05, 0x1a, 0x07, 0x46, 0x0a, + 0xc0, 0x0c, 0x06, 0x0e, 0xb7, 0x0f, 0x64, 0x12, 0xa6, 0x14, 0x97, 0x16, 0x6f, 0x17, 0x88, 0x16, + 0x1a, 0x17, 0x14, 0x17, 0xda, 0x14, 0x0f, 0x12, 0x38, 0x0f, 0x35, 0x0c, 0xa7, 0x09, 0xa9, 0x07, + 0xbe, 0x05, 0x47, 0x04, 0x46, 0x04, 0x70, 0x04, 0xbe, 0x04, 0x9e, 0x03, 0xda, 0x01, 0x0f, 0x01, + 0x1f, 0x00, 0x08, 0xff, 0x8f, 0xfe, 0xad, 0xfe, 0xdd, 0xfe, 0xa6, 0xff, 0x38, 0xff, 0xaf, 0xfe, + 0xeb, 0xfe, 0x49, 0xff, 0x11, 0xff, 0x15, 0xfe, 0xf3, 0xfc, 0x3c, 0xfd, 0x52, 0xfd, 0xf4, 0xfb, + 0x8b, 0xfa, 0x6a, 0xf8, 0x1f, 0xf6, 0xc2, 0xf4, 0x7c, 0xf4, 0xbc, 0xf3, 0x8f, 0xf3, 0x7d, 0xf4, + 0x9f, 0xf4, 0x29, 0xf4, 0xd3, 0xf3, 0xa3, 0xf3, 0x9a, 0xf4, 0xd3, 0xf5, 0xa9, 0xf6, 0xe5, 0xf8, + 0x66, 0xfc, 0x65, 0xff, 0x2c, 0x01, 0xf8, 0x01, 0xea, 0x03, 0x6f, 0x06, 0x87, 0x09, 0xf8, 0x0b, + 0xf9, 0x0b, 0xfd, 0x0c, 0xc4, 0x0c, 0x79, 0x0a, 0x18, 0x07, 0x45, 0x04, 0xea, 0x00, 0xe3, 0xfd, + 0x70, 0xfc, 0xec, 0xfa, 0x91, 0xf9, 0x3f, 0xf8, 0x4b, 0xf8, 0x35, 0xf9, 0xa1, 0xf9, 0x18, 0xf9, + 0x6b, 0xf9, 0x4b, 0xfa, 0x50, 0xfa, 0x17, 0xfa, 0x27, 0xfb, 0x7c, 0xfc, 0xe3, 0xfd, 0xbd, 0xfe, + 0x17, 0x00, 0x04, 0x03, 0x26, 0x05, 0x8f, 0x07, 0x6d, 0x08, 0x0f, 0x08, 0x6c, 0x08, 0xc2, 0x08, + 0x57, 0x07, 0x46, 0x06, 0xed, 0x04, 0x4d, 0x03, 0xd7, 0x01, 0x8b, 0xff, 0xe1, 0xfc, 0xe5, 0xf9, + 0x56, 0xf8, 0x2e, 0xf7, 0xb3, 0xf6, 0xda, 0xf5, 0x05, 0xf4, 0x54, 0xf3, 0x8d, 0xf4, 0x5c, 0xf4, + 0x74, 0xf4, 0x8c, 0xf6, 0x47, 0xf9, 0x90, 0xfb, 0x0c, 0xfd, 0xe2, 0xfe, 0x9c, 0x01, 0x92, 0x04, + 0x10, 0x07, 0xaf, 0x08, 0x4e, 0x0a, 0x61, 0x0c, 0xdd, 0x0c, 0xc2, 0x0c, 0xb2, 0x0b, 0x71, 0x09, + 0xe2, 0x07, 0x56, 0x06, 0x07, 0x06, 0x6a, 0x06, 0xb9, 0x06, 0x94, 0x07, 0x81, 0x07, 0xab, 0x06, + 0x52, 0x05, 0x03, 0x04, 0x07, 0x03, 0x18, 0x01, 0x1f, 0xff, 0x66, 0xfd, 0x8b, 0xfc, 0x9c, 0xfc, + 0xeb, 0xfa, 0x25, 0xf9, 0x49, 0xf9, 0xc7, 0xf9, 0x7c, 0xfa, 0xac, 0xfa, 0x6d, 0xf9, 0x0d, 0xf9, + 0xd3, 0xf7, 0x04, 0xf7, 0x6f, 0xf6, 0x75, 0xf5, 0x8a, 0xf4, 0xe6, 0xf4, 0x23, 0xf5, 0x8a, 0xf4, + 0x33, 0xf4, 0x89, 0xf4, 0x99, 0xf5, 0x69, 0xf8, 0x46, 0xfb, 0x30, 0xfd, 0xfb, 0xff, 0x3a, 0x03, + 0xa1, 0x05, 0x99, 0x07, 0xcb, 0x0a, 0x70, 0x0e, 0x59, 0x12, 0x5e, 0x15, 0x17, 0x17, 0x81, 0x19, + 0x94, 0x1b, 0xeb, 0x1c, 0xd2, 0x1c, 0x9f, 0x1c, 0xb9, 0x1c, 0x18, 0x1b, 0xe5, 0x18, 0xe2, 0x14, + 0x4b, 0x10, 0xe8, 0x0b, 0xc9, 0x07, 0xff, 0x03, 0x6a, 0x00, 0xfb, 0xfc, 0xa4, 0xfa, 0x63, 0xf9, + 0x2d, 0xf8, 0xac, 0xf5, 0x7f, 0xf3, 0x29, 0xf2, 0xad, 0xf0, 0xf0, 0xee, 0x82, 0xed, 0x14, 0xee, + 0x63, 0xef, 0x09, 0xf1, 0x75, 0xf2, 0x36, 0xf4, 0x4d, 0xf6, 0x3c, 0xf9, 0x6c, 0xfb, 0x68, 0xfc, + 0x01, 0xfd, 0xb0, 0xfd, 0x5a, 0xfe, 0x4e, 0xfe, 0x07, 0xfd, 0x55, 0xfa, 0x1c, 0xf8, 0xda, 0xf5, + 0xe0, 0xf3, 0x25, 0xf3, 0x75, 0xf2, 0xc9, 0xf1, 0xaf, 0xf1, 0x91, 0xf1, 0x11, 0xf0, 0xfa, 0xee, + 0x81, 0xef, 0xec, 0xef, 0x9f, 0xf0, 0x9a, 0xf2, 0xa5, 0xf4, 0xba, 0xf7, 0x82, 0xf9, 0xa0, 0xfa, + 0x11, 0xfd, 0xf4, 0xff, 0xa9, 0x03, 0x22, 0x07, 0x38, 0x0a, 0x2a, 0x0c, 0x01, 0x0e, 0x62, 0x0f, + 0x06, 0x0f, 0x96, 0x0d, 0xfb, 0x0b, 0x0d, 0x0b, 0x9d, 0x0a, 0x0c, 0x0a, 0xb3, 0x09, 0x82, 0x09, + 0x4a, 0x09, 0xd5, 0x08, 0x97, 0x08, 0xb8, 0x07, 0x9a, 0x06, 0x63, 0x06, 0x70, 0x05, 0x5b, 0x04, + 0xc5, 0x03, 0xb1, 0x03, 0xaf, 0x04, 0x62, 0x05, 0xb7, 0x05, 0x5e, 0x07, 0xd7, 0x08, 0x9e, 0x09, + 0xac, 0x09, 0x60, 0x09, 0x75, 0x08, 0x29, 0x07, 0x27, 0x06, 0x81, 0x04, 0x2f, 0x02, 0xff, 0x00, + 0xb7, 0xff, 0xcc, 0xfe, 0x34, 0xfe, 0x43, 0xfd, 0xe0, 0xfc, 0xf2, 0xfc, 0x28, 0xfd, 0x7c, 0xfc, + 0xc8, 0xfb, 0x64, 0xfb, 0x37, 0xfb, 0x4c, 0xfb, 0x27, 0xfb, 0xf3, 0xfa, 0x4a, 0xfc, 0x29, 0xfe, + 0x91, 0xfe, 0x28, 0xff, 0x98, 0x00, 0xa2, 0x02, 0xbe, 0x04, 0x21, 0x06, 0xf3, 0x06, 0x4e, 0x08, + 0xf7, 0x08, 0x28, 0x08, 0x89, 0x06, 0x02, 0x04, 0xc3, 0x00, 0xd2, 0xfd, 0x8b, 0xfc, 0xee, 0xfa, + 0x8e, 0xfa, 0x81, 0xfb, 0x9b, 0xfb, 0xc2, 0xfb, 0x53, 0xfb, 0x75, 0xfa, 0x24, 0xfa, 0x18, 0xfa, + 0xbc, 0xf9, 0x90, 0xf9, 0x16, 0xf9, 0xfd, 0xf9, 0x9d, 0xfa, 0x54, 0xfa, 0x86, 0xfb, 0x5e, 0xfd, + 0x41, 0xff, 0x1d, 0x00, 0x1c, 0xff, 0xfa, 0xfc, 0x69, 0xfb, 0x46, 0xfa, 0x12, 0xf8, 0xf8, 0xf5, + 0x93, 0xf4, 0xf1, 0xf2, 0x88, 0xf1, 0x2c, 0xf1, 0x53, 0xf0, 0x22, 0xef, 0x60, 0xef, 0xbe, 0xf0, + 0xa8, 0xf1, 0xad, 0xf2, 0xe8, 0xf3, 0x18, 0xf6, 0xf5, 0xf7, 0x81, 0xf9, 0x71, 0xfb, 0xe8, 0xfe, + 0x83, 0x03, 0xe2, 0x06, 0x19, 0x0b, 0x87, 0x0f, 0xc4, 0x13, 0xef, 0x17, 0x28, 0x1b, 0x36, 0x1d, + 0xa1, 0x1e, 0xdd, 0x1f, 0x92, 0x1f, 0x86, 0x1d, 0x8f, 0x1a, 0xc5, 0x16, 0x9f, 0x12, 0x5d, 0x0e, + 0x9e, 0x0a, 0x81, 0x07, 0xb2, 0x04, 0xc9, 0x02, 0x81, 0x01, 0xab, 0xff, 0x23, 0xfd, 0x21, 0xfb, + 0x6e, 0xf9, 0xb7, 0xf7, 0x8e, 0xf5, 0xec, 0xf3, 0xdc, 0xf4, 0x4f, 0xf5, 0xd6, 0xf4, 0x93, 0xf5, + 0x95, 0xf6, 0xd9, 0xf7, 0xb5, 0xf9, 0x15, 0xfb, 0x4a, 0xfb, 0x33, 0xfc, 0xe0, 0xfd, 0x93, 0xfe, + 0x6c, 0xfe, 0xf7, 0xfd, 0xf5, 0xfc, 0xa8, 0xfb, 0x55, 0xfb, 0xfb, 0xfa, 0xb7, 0xfa, 0x36, 0xfb, + 0x0c, 0xfb, 0x21, 0xfb, 0xfc, 0xf9, 0xd0, 0xf7, 0x0a, 0xf7, 0x8f, 0xf7, 0x9e, 0xf7, 0x19, 0xf7, + 0xdd, 0xf7, 0x19, 0xfa, 0xdc, 0xfa, 0x66, 0xfb, 0x87, 0xfc, 0xe8, 0xfe, 0x02, 0x02, 0x96, 0x04, + 0x13, 0x07, 0x4b, 0x08, 0x27, 0x09, 0x2a, 0x09, 0xbe, 0x08, 0x25, 0x07, 0xec, 0x04, 0x11, 0x03, + 0x6f, 0x01, 0x6b, 0x00, 0xfc, 0xff, 0x6c, 0x00, 0x4f, 0x01, 0x98, 0x02, 0xcb, 0x03, 0x83, 0x04, + 0xb7, 0x04, 0xb5, 0x05, 0xd3, 0x05, 0xe4, 0x04, 0x02, 0x04, 0x5c, 0x04, 0xa5, 0x04, 0x09, 0x04, + 0x8a, 0x04, 0x57, 0x05, 0x6a, 0x06, 0x2a, 0x08, 0xbb, 0x08, 0x8e, 0x07, 0xd1, 0x06, 0xb7, 0x05, + 0xe3, 0x03, 0x36, 0x02, 0x28, 0x00, 0x2a, 0xfd, 0x59, 0xfa, 0xb9, 0xf8, 0x7a, 0xf6, 0xea, 0xf3, + 0xdd, 0xf1, 0xe3, 0xf0, 0xaf, 0xf0, 0x2e, 0xf0, 0xf7, 0xee, 0x29, 0xef, 0xe4, 0xf0, 0xb4, 0xf1, + 0xb4, 0xf2, 0x6f, 0xf4, 0x8b, 0xf7, 0xc3, 0xfa, 0x6f, 0xfd, 0x1d, 0x00, 0xc3, 0x02, 0x34, 0x06, + 0x21, 0x0a, 0xc3, 0x0c, 0xa2, 0x0e, 0x4f, 0x10, 0xab, 0x11, 0x22, 0x12, 0xe0, 0x10, 0xdb, 0x0e, + 0x5b, 0x0c, 0xf7, 0x08, 0x34, 0x06, 0x78, 0x04, 0x4c, 0x03, 0xa6, 0x02, 0x1d, 0x02, 0x11, 0x02, + 0xf7, 0x00, 0xfc, 0xfe, 0xcb, 0xfd, 0xa4, 0xfc, 0x04, 0xfb, 0x4a, 0xf9, 0x48, 0xf8, 0x86, 0xf8, + 0x95, 0xf7, 0x30, 0xf7, 0x49, 0xf7, 0xa0, 0xf8, 0x0f, 0xfc, 0x26, 0xff, 0x61, 0x00, 0x6c, 0x00, + 0x56, 0x00, 0xea, 0xff, 0x4b, 0xff, 0xdb, 0xfe, 0x1f, 0xfe, 0x3b, 0xfd, 0x91, 0xfc, 0x90, 0xfb, + 0xb9, 0xf9, 0xf7, 0xf8, 0x76, 0xf8, 0x4c, 0xf8, 0x7d, 0xf9, 0x8d, 0xf9, 0xdc, 0xf9, 0x54, 0xfb, + 0x04, 0xfc, 0xa6, 0xfc, 0x48, 0xfd, 0xc9, 0xfe, 0x89, 0x01, 0xbb, 0x03, 0x52, 0x06, 0x7e, 0x08, + 0x69, 0x0b, 0x90, 0x0e, 0x0c, 0x11, 0x9c, 0x12, 0x16, 0x14, 0x5f, 0x15, 0xa9, 0x16, 0xbf, 0x16, + 0x5a, 0x15, 0x3f, 0x13, 0x78, 0x10, 0x44, 0x0e, 0x93, 0x0b, 0x0b, 0x09, 0x6a, 0x07, 0x83, 0x05, + 0xa0, 0x04, 0x98, 0x03, 0x4a, 0x01, 0xda, 0xfe, 0x2d, 0xfc, 0xf9, 0xf8, 0xa0, 0xf5, 0x4b, 0xf3, + 0x0c, 0xf2, 0x95, 0xf1, 0x99, 0xf0, 0x59, 0xef, 0xa5, 0xef, 0x19, 0xf1, 0x0a, 0xf3, 0xe9, 0xf3, + 0x7f, 0xf4, 0x81, 0xf5, 0x9d, 0xf5, 0x17, 0xf6, 0x1f, 0xf6, 0x7f, 0xf5, 0x7d, 0xf4, 0xb4, 0xf3, + 0x3b, 0xf3, 0xf8, 0xf2, 0xdf, 0xf3, 0xcb, 0xf4, 0x73, 0xf6, 0x8d, 0xf8, 0x6d, 0xf9, 0x7d, 0xfa, + 0x3f, 0xfb, 0x32, 0xfc, 0xd7, 0xfc, 0x63, 0xfc, 0x8f, 0xfd, 0x91, 0xff, 0xaf, 0x00, 0x89, 0x00, + 0xd9, 0xff, 0x64, 0x00, 0xa7, 0x02, 0xfb, 0x04, 0x80, 0x06, 0x50, 0x07, 0xfe, 0x07, 0x9d, 0x08, + 0xc2, 0x07, 0x66, 0x06, 0x27, 0x05, 0x59, 0x03, 0xe1, 0x01, 0x92, 0x00, 0xde, 0xff, 0x32, 0xff, + 0xf0, 0xfe, 0xf9, 0xff, 0x08, 0x01, 0xdd, 0x01, 0x1c, 0x03, 0xb7, 0x04, 0x60, 0x05, 0x32, 0x06, + 0xeb, 0x06, 0x35, 0x08, 0x34, 0x0a, 0x34, 0x0b, 0xe8, 0x0b, 0x06, 0x0d, 0x3e, 0x0f, 0x8a, 0x11, + 0xb6, 0x12, 0xf6, 0x12, 0xcf, 0x11, 0x9a, 0x10, 0x59, 0x0f, 0x50, 0x0c, 0x14, 0x09, 0x5a, 0x06, + 0xc3, 0x03, 0x07, 0x01, 0x74, 0xfe, 0xcb, 0xfb, 0xf9, 0xf8, 0x24, 0xf7, 0x27, 0xf6, 0xa5, 0xf5, + 0x28, 0xf4, 0xb4, 0xf3, 0x8b, 0xf3, 0x69, 0xf2, 0x33, 0xf2, 0x5e, 0xf2, 0xe2, 0xf3, 0x6c, 0xf5, + 0x5f, 0xf6, 0x3b, 0xf8, 0x80, 0xfa, 0x74, 0xfd, 0xb9, 0x01, 0x8b, 0x05, 0x69, 0x08, 0x93, 0x0b, + 0x7f, 0x0e, 0x36, 0x10, 0x94, 0x10, 0xe2, 0x0f, 0xed, 0x0d, 0xf6, 0x0a, 0x4b, 0x08, 0x34, 0x06, + 0x44, 0x04, 0x14, 0x02, 0x83, 0x00, 0xd6, 0xff, 0x6b, 0xfe, 0x12, 0xfd, 0x33, 0xfc, 0x5d, 0xfa, + 0x96, 0xf8, 0xe2, 0xf5, 0x18, 0xf4, 0xe2, 0xf3, 0xe0, 0xf2, 0xef, 0xf0, 0xc8, 0xef, 0x3f, 0xf0, + 0x11, 0xf2, 0xfc, 0xf3, 0x51, 0xf5, 0x13, 0xf6, 0x1e, 0xf6, 0x8e, 0xf6, 0x31, 0xf6, 0xf7, 0xf5, + 0x68, 0xf6, 0x02, 0xf7, 0xb4, 0xf7, 0xe3, 0xf8, 0xbc, 0xf8, 0x93, 0xf8, 0x42, 0xf9, 0x3b, 0xfa, + 0xd4, 0xfb, 0xd3, 0xfd, 0xc0, 0xff, 0xc7, 0x00, 0x54, 0x01, 0x8c, 0x01, 0x60, 0x01, 0xe5, 0x01, + 0x9c, 0x03, 0xbf, 0x04, 0xed, 0x05, 0x65, 0x07, 0xb3, 0x09, 0xa7, 0x0c, 0xe0, 0x0e, 0x90, 0x10, + 0xe8, 0x11, 0x9a, 0x13, 0xa3, 0x14, 0x1d, 0x14, 0xd2, 0x12, 0xc1, 0x10, 0xb8, 0x0d, 0xf9, 0x0a, + 0x32, 0x08, 0x5c, 0x05, 0x30, 0x03, 0x4c, 0x02, 0x03, 0x02, 0x46, 0x02, 0x84, 0x02, 0xfb, 0x01, + 0x26, 0x01, 0x09, 0x00, 0xf6, 0xfe, 0x26, 0xfd, 0x88, 0xfc, 0x18, 0xfc, 0xd6, 0xfa, 0x39, 0xf9, + 0x91, 0xf8, 0x99, 0xf8, 0xfd, 0xf8, 0xa8, 0xf9, 0x80, 0xf9, 0x95, 0xf9, 0x4c, 0xfa, 0x38, 0xfa, + 0x3d, 0xf9, 0x33, 0xf9, 0xf3, 0xf7, 0xca, 0xf6, 0x53, 0xf6, 0x14, 0xf6, 0xfe, 0xf5, 0x7f, 0xf5, + 0xba, 0xf5, 0x6f, 0xf6, 0xdd, 0xf6, 0x49, 0xf7, 0xdc, 0xf7, 0x97, 0xf8, 0x5a, 0xf9, 0x8c, 0xf9, + 0x6b, 0xfb, 0xe4, 0xfd, 0x21, 0x00, 0xaf, 0x01, 0xa6, 0x02, 0x50, 0x04, 0xef, 0x06, 0xf2, 0x09, + 0x96, 0x0c, 0x66, 0x0e, 0x38, 0x10, 0x71, 0x11, 0x22, 0x11, 0xb5, 0x0f, 0xaa, 0x0d, 0x6c, 0x0b, + 0xc7, 0x08, 0xb4, 0x06, 0x42, 0x04, 0x3f, 0x02, 0x1f, 0x00, 0x91, 0xfe, 0x62, 0xff, 0xee, 0xff, + 0x0c, 0x00, 0x71, 0xff, 0x20, 0xff, 0xf0, 0xfd, 0x06, 0xfc, 0x23, 0xfc, 0x47, 0xfc, 0x88, 0xfb, + 0x97, 0xfb, 0x52, 0xfc, 0x9e, 0xfd, 0xb1, 0xff, 0x15, 0x02, 0xac, 0x03, 0x13, 0x05, 0xdb, 0x06, + 0x80, 0x07, 0xb8, 0x06, 0x92, 0x05, 0x88, 0x04, 0xd1, 0x03, 0x27, 0x03, 0xec, 0x01, 0x1d, 0x00, + 0x4b, 0xfe, 0x07, 0xfc, 0x15, 0xfa, 0x4b, 0xf9, 0x83, 0xf8, 0x23, 0xf7, 0x1c, 0xf6, 0x3f, 0xf5, + 0xa6, 0xf3, 0x1e, 0xf2, 0xe6, 0xf1, 0xee, 0xf2, 0x9a, 0xf3, 0x9a, 0xf3, 0x93, 0xf4, 0xaa, 0xf6, + 0x16, 0xf9, 0x7f, 0xfb, 0xe7, 0xfd, 0x18, 0x00, 0x74, 0x02, 0xcc, 0x04, 0x1d, 0x06, 0xed, 0x06, + 0xe0, 0x05, 0xf2, 0x04, 0x3b, 0x05, 0x0e, 0x05, 0xb3, 0x05, 0xf3, 0x05, 0xac, 0x05, 0xa1, 0x06, + 0x5c, 0x07, 0x3f, 0x07, 0x6e, 0x07, 0x71, 0x07, 0x7c, 0x06, 0x29, 0x04, 0xc2, 0x02, 0xff, 0x01, + 0x2f, 0x00, 0xe5, 0xfd, 0x14, 0xfc, 0xf6, 0xfa, 0x16, 0xfb, 0xf1, 0xfb, 0x3d, 0xfb, 0x6a, 0xfb, + 0x72, 0xfb, 0xfe, 0xfa, 0x86, 0xf9, 0x3b, 0xf8, 0x2e, 0xf7, 0x23, 0xf6, 0xfb, 0xf5, 0x41, 0xf6, + 0x31, 0xf6, 0x09, 0xf6, 0xba, 0xf5, 0x63, 0xf6, 0xf6, 0xf8, 0x8a, 0xfb, 0xf0, 0xfe, 0xe2, 0x01, + 0x98, 0x04, 0x08, 0x07, 0x2e, 0x08, 0xb4, 0x09, 0xb9, 0x0b, 0x0a, 0x0e, 0x89, 0x10, 0x1c, 0x12, + 0xaf, 0x13, 0xb2, 0x15, 0x89, 0x16, 0x1f, 0x17, 0x61, 0x17, 0xe9, 0x17, 0xaf, 0x17, 0x67, 0x16, + 0x97, 0x14, 0xb7, 0x11, 0x67, 0x0e, 0x07, 0x0b, 0x5f, 0x07, 0xc6, 0x03, 0x1e, 0x00, 0xa0, 0xfc, + 0x6a, 0xfb, 0x6e, 0xfa, 0xc4, 0xf8, 0x8c, 0xf7, 0x94, 0xf6, 0xf2, 0xf4, 0x95, 0xf2, 0x74, 0xf1, + 0x69, 0xf1, 0xf0, 0xf0, 0x64, 0xf1, 0xf8, 0xf1, 0x85, 0xf2, 0x75, 0xf4, 0xf2, 0xf6, 0x3e, 0xf9, + 0xa0, 0xfa, 0x8b, 0xfb, 0x8e, 0xfc, 0x55, 0xfd, 0x38, 0xfd, 0x3a, 0xfc, 0x77, 0xfa, 0xd0, 0xf8, + 0x88, 0xf7, 0x58, 0xf6, 0x8d, 0xf5, 0x5e, 0xf4, 0x8c, 0xf3, 0x9c, 0xf3, 0x03, 0xf4, 0x37, 0xf4, + 0x7c, 0xf4, 0x29, 0xf4, 0xbf, 0xf4, 0xc6, 0xf4, 0x93, 0xf4, 0x68, 0xf5, 0x7b, 0xf6, 0x10, 0xf7, + 0x23, 0xf7, 0x31, 0xf8, 0x3a, 0xfa, 0xd5, 0xfc, 0x5c, 0xff, 0xaa, 0x02, 0xde, 0x05, 0xa1, 0x08, + 0xf2, 0x0a, 0xb9, 0x0b, 0xe8, 0x0b, 0xbd, 0x0b, 0x8c, 0x0b, 0xd8, 0x0a, 0x40, 0x0a, 0xdd, 0x09, + 0x2e, 0x08, 0x9f, 0x07, 0x74, 0x08, 0xa4, 0x08, 0x37, 0x09, 0x97, 0x09, 0x92, 0x09, 0x4f, 0x09, + 0x36, 0x08, 0x5d, 0x07, 0xa2, 0x06, 0xa2, 0x06, 0x11, 0x06, 0xea, 0x05, 0x4f, 0x06, 0xd7, 0x06, + 0x0e, 0x08, 0xdd, 0x08, 0xdd, 0x08, 0xd5, 0x08, 0xb3, 0x08, 0x2a, 0x07, 0x4a, 0x05, 0xba, 0x03, + 0x88, 0x02, 0xb5, 0x01, 0xee, 0x00, 0x32, 0x00, 0x25, 0xff, 0xe0, 0xfd, 0x96, 0xfd, 0xed, 0xfd, + 0x97, 0xfe, 0xe3, 0xfe, 0xd7, 0xfe, 0xfa, 0xfe, 0x4f, 0xfe, 0xc3, 0xfd, 0x3a, 0xfd, 0xfe, 0xfc, + 0x7f, 0xfc, 0x61, 0xfb, 0x5c, 0xfb, 0x22, 0xfc, 0x5a, 0xfd, 0x22, 0xff, 0x88, 0x00, 0x9a, 0x01, + 0xb4, 0x03, 0x51, 0x05, 0xf0, 0x05, 0x79, 0x05, 0xaa, 0x04, 0x05, 0x03, 0x1b, 0x01, 0x79, 0xff, + 0xea, 0xfd, 0xe8, 0xfb, 0x98, 0xfa, 0xde, 0xfa, 0x79, 0xfb, 0x0f, 0xfc, 0xc6, 0xfc, 0x6d, 0xfd, + 0x7f, 0xfd, 0x97, 0xfd, 0x89, 0xfd, 0x7d, 0xfd, 0x4c, 0xfd, 0x5b, 0xfc, 0x85, 0xfb, 0xee, 0xfa, + 0x49, 0xfb, 0xb5, 0xfc, 0x9f, 0xfd, 0x51, 0xfd, 0xa9, 0xfc, 0x54, 0xfc, 0x78, 0xfa, 0x21, 0xf8, + 0xcb, 0xf6, 0xdb, 0xf5, 0xc8, 0xf4, 0xe9, 0xf3, 0x16, 0xf3, 0x6d, 0xf2, 0x46, 0xf1, 0xc3, 0xf0, + 0x3e, 0xf2, 0x6b, 0xf3, 0xf4, 0xf4, 0x92, 0xf6, 0xa3, 0xf8, 0x97, 0xfa, 0x3e, 0xfb, 0x5d, 0xfc, + 0xfa, 0xfd, 0x7c, 0x00, 0xc0, 0x02, 0x77, 0x05, 0xe9, 0x08, 0x75, 0x0c, 0x34, 0x10, 0x62, 0x13, + 0x97, 0x15, 0x6f, 0x18, 0xe5, 0x1a, 0x2f, 0x1b, 0xf4, 0x1a, 0xe8, 0x19, 0xda, 0x17, 0xff, 0x14, + 0xeb, 0x11, 0xd4, 0x0e, 0xca, 0x0a, 0xa8, 0x06, 0x7d, 0x04, 0xdc, 0x02, 0xd1, 0x01, 0xff, 0x00, + 0x7d, 0xff, 0x11, 0xfe, 0xfe, 0xfb, 0xc4, 0xf9, 0x6a, 0xf8, 0x62, 0xf7, 0xe2, 0xf5, 0x39, 0xf4, + 0x76, 0xf3, 0x7d, 0xf3, 0x05, 0xf4, 0xab, 0xf5, 0xec, 0xf6, 0xcd, 0xf7, 0x8b, 0xf9, 0xc9, 0xfa, + 0x40, 0xfb, 0xec, 0xfb, 0x81, 0xfc, 0xe5, 0xfc, 0x5d, 0xfd, 0x6e, 0xfd, 0x91, 0xfd, 0x56, 0xfd, + 0x68, 0xfd, 0xed, 0xfd, 0xd2, 0xfe, 0x7c, 0xff, 0x5b, 0xff, 0x87, 0xff, 0xc3, 0xff, 0x41, 0xff, + 0x9b, 0xfe, 0xcb, 0xfe, 0x8c, 0xfe, 0xdf, 0xfd, 0x68, 0xfd, 0xa4, 0xfc, 0xd4, 0xfc, 0xfb, 0xfd, + 0xb9, 0xff, 0xad, 0x00, 0xb5, 0x01, 0x54, 0x03, 0x6c, 0x03, 0x52, 0x03, 0x5a, 0x03, 0x9b, 0x02, + 0x62, 0x01, 0xeb, 0xff, 0x9e, 0xfe, 0x13, 0xfe, 0x87, 0xfc, 0x1e, 0xfd, 0xd6, 0xfe, 0x24, 0x01, + 0x75, 0x03, 0xcb, 0x05, 0xc6, 0x07, 0x27, 0x08, 0xe0, 0x08, 0xee, 0x08, 0x4d, 0x08, 0x4c, 0x08, + 0x44, 0x07, 0x05, 0x06, 0xc2, 0x05, 0x21, 0x06, 0x7f, 0x05, 0x60, 0x06, 0x6d, 0x07, 0x40, 0x06, + 0xef, 0x05, 0x40, 0x05, 0xd2, 0x02, 0xb9, 0xff, 0xad, 0xfd, 0x82, 0xfb, 0x5b, 0xf9, 0xf7, 0xf8, + 0xf7, 0xf6, 0x96, 0xf3, 0x40, 0xf2, 0x9f, 0xf1, 0x8a, 0xf1, 0x29, 0xf2, 0xe2, 0xf2, 0x3a, 0xf4, + 0x48, 0xf4, 0x06, 0xf4, 0x42, 0xf6, 0x10, 0xf8, 0xfe, 0xf9, 0x8d, 0xfb, 0x85, 0xfd, 0x2e, 0xfe, + 0xc7, 0xff, 0x09, 0x03, 0xad, 0x04, 0xd7, 0x05, 0x33, 0x07, 0xd1, 0x06, 0xe7, 0x06, 0x6e, 0x06, + 0x1c, 0x06, 0x0f, 0x05, 0x43, 0x03, 0x02, 0x01, 0xe8, 0xfe, 0x08, 0xfe, 0x3f, 0xfc, 0x56, 0xfb, + 0x07, 0xfb, 0xf2, 0xfa, 0xf3, 0xfa, 0xb3, 0xfb, 0xb0, 0xfc, 0x49, 0xfc, 0xb3, 0xfb, 0x35, 0xfc, + 0xfd, 0xfb, 0x45, 0xfb, 0xd9, 0xfa, 0x9c, 0xfa, 0x8b, 0xfa, 0xf0, 0xfb, 0x49, 0xff, 0x06, 0x02, + 0x38, 0x03, 0x8d, 0x03, 0xa9, 0x04, 0x79, 0x03, 0xcf, 0x02, 0xef, 0x03, 0x83, 0x03, 0x49, 0x02, + 0x8b, 0x00, 0x90, 0xff, 0xc7, 0xfd, 0x8b, 0xfc, 0xd6, 0xfc, 0x32, 0xfd, 0x95, 0xfd, 0x28, 0xff, + 0x66, 0x01, 0x21, 0x03, 0x7c, 0x03, 0x5a, 0x04, 0x77, 0x05, 0x49, 0x06, 0x14, 0x08, 0x80, 0x09, + 0x5e, 0x0b, 0xc8, 0x0c, 0xe2, 0x0e, 0x62, 0x10, 0x68, 0x11, 0x04, 0x13, 0x8d, 0x13, 0xe7, 0x12, + 0xe4, 0x12, 0x1c, 0x12, 0x9f, 0x11, 0x0a, 0x11, 0xbe, 0x0e, 0x01, 0x0d, 0x3f, 0x0b, 0xb7, 0x08, + 0xa0, 0x05, 0x06, 0x04, 0x98, 0x02, 0xe1, 0xff, 0x22, 0xfd, 0xf5, 0xfb, 0xf2, 0xf9, 0xbb, 0xf6, + 0xf2, 0xf4, 0xe1, 0xf3, 0xb7, 0xf2, 0x56, 0xf1, 0x05, 0xf0, 0x8d, 0xef, 0x35, 0xef, 0xb3, 0xef, + 0x5e, 0xf1, 0x35, 0xf2, 0xba, 0xf2, 0x93, 0xf3, 0x9b, 0xf3, 0x2b, 0xf3, 0x55, 0xf3, 0xb1, 0xf3, + 0x57, 0xf3, 0x8e, 0xf2, 0x8f, 0xf2, 0x3e, 0xf2, 0x60, 0xf1, 0x61, 0xf2, 0x56, 0xf3, 0x43, 0xf5, + 0x39, 0xf7, 0x33, 0xf9, 0x42, 0xfc, 0xd9, 0xfd, 0xb6, 0xfe, 0x42, 0xff, 0x4c, 0x00, 0x6b, 0x01, + 0xb7, 0x01, 0x86, 0x01, 0x3a, 0x01, 0x63, 0x01, 0xed, 0x01, 0x6e, 0x02, 0xb1, 0x03, 0x40, 0x03, + 0x40, 0x03, 0x8b, 0x02, 0xf2, 0x00, 0x66, 0x00, 0xf5, 0xff, 0x5f, 0xff, 0xf8, 0xfd, 0xa8, 0xfd, + 0xff, 0xfc, 0x84, 0xfb, 0x40, 0xfb, 0x7d, 0xfc, 0x3d, 0xfd, 0xb6, 0xfd, 0x66, 0xff, 0xe6, 0x00, + 0x24, 0x01, 0x52, 0x02, 0x48, 0x04, 0xa9, 0x05, 0x84, 0x07, 0xc8, 0x08, 0x2f, 0x0b, 0x84, 0x0c, + 0x93, 0x0d, 0x8d, 0x0f, 0xb2, 0x10, 0x10, 0x11, 0x3f, 0x11, 0x58, 0x10, 0xdf, 0x0d, 0x74, 0x0b, + 0xea, 0x08, 0x5b, 0x06, 0x75, 0x03, 0x04, 0x02, 0x32, 0xff, 0xe6, 0xfb, 0x55, 0xf9, 0x6f, 0xf7, + 0x59, 0xf6, 0x0b, 0xf6, 0x81, 0xf6, 0xda, 0xf7, 0x6a, 0xf9, 0xca, 0xf9, 0x6b, 0xf9, 0x33, 0xfa, + 0x3f, 0xfc, 0x30, 0xfd, 0xda, 0xfd, 0xa5, 0xff, 0x8b, 0x01, 0xa0, 0x02, 0xd9, 0x05, 0x87, 0x08, + 0x22, 0x0b, 0x9d, 0x0d, 0x20, 0x0f, 0x4b, 0x10, 0xe4, 0x0f, 0xdd, 0x0f, 0xef, 0x0e, 0x8b, 0x0d, + 0xf4, 0x0c, 0x8d, 0x0b, 0x75, 0x08, 0xab, 0x05, 0x8d, 0x03, 0x38, 0x02, 0xfd, 0xff, 0xff, 0xfe, + 0xe1, 0xfe, 0xf8, 0xfd, 0x56, 0xfc, 0x52, 0xfb, 0xef, 0xfa, 0x87, 0xf9, 0x77, 0xf8, 0xc9, 0xf7, + 0x8a, 0xf6, 0xd5, 0xf5, 0xd1, 0xf6, 0x10, 0xf8, 0xa1, 0xf8, 0xad, 0xf8, 0xba, 0xf8, 0x53, 0xf8, + 0xcd, 0xf7, 0x02, 0xf8, 0xae, 0xf7, 0x8b, 0xf8, 0x0d, 0xf9, 0x4b, 0xf8, 0xc8, 0xf7, 0xa9, 0xf6, + 0xf7, 0xf5, 0x94, 0xf6, 0xfa, 0xf7, 0xbe, 0xf9, 0x21, 0xfc, 0x31, 0xff, 0xa7, 0x00, 0x04, 0x01, + 0x4d, 0x02, 0xe9, 0x03, 0x2f, 0x05, 0x95, 0x05, 0x10, 0x08, 0x5d, 0x09, 0x68, 0x0a, 0x40, 0x0c, + 0x8c, 0x0d, 0x90, 0x0e, 0xdb, 0x0e, 0xc9, 0x0e, 0x62, 0x0e, 0x2c, 0x0d, 0x99, 0x0b, 0x01, 0x0a, + 0x9c, 0x07, 0x80, 0x06, 0x24, 0x05, 0x59, 0x02, 0xbe, 0xff, 0x74, 0xfe, 0x99, 0xfd, 0xa3, 0xfc, + 0x5d, 0xfc, 0xc2, 0xfc, 0x5a, 0xfd, 0xb3, 0xfc, 0x81, 0xfc, 0x5f, 0xfc, 0x10, 0xfc, 0x98, 0xfc, + 0xba, 0xfc, 0x99, 0xfc, 0x1f, 0xfc, 0x85, 0xfc, 0x74, 0xfc, 0x14, 0xfc, 0x9c, 0xfc, 0x7e, 0xfc, + 0xad, 0xfb, 0x68, 0xfb, 0xb6, 0xf9, 0x6e, 0xf8, 0x90, 0xf7, 0x9b, 0xf6, 0x8e, 0xf5, 0x2b, 0xf4, + 0xbb, 0xf2, 0x1b, 0xf1, 0x29, 0xf0, 0x18, 0xf0, 0x0a, 0xf1, 0x0d, 0xf2, 0xd4, 0xf4, 0xbf, 0xf7, + 0xc9, 0xf8, 0x74, 0xfa, 0x76, 0xfd, 0xe4, 0xfe, 0xb6, 0x00, 0xed, 0x02, 0x05, 0x04, 0xd7, 0x05, + 0x72, 0x08, 0xc3, 0x0a, 0x11, 0x0c, 0xf9, 0x0c, 0x79, 0x0d, 0x46, 0x0d, 0x14, 0x0c, 0x83, 0x0a, + 0x2b, 0x08, 0x05, 0x06, 0x65, 0x04, 0x9e, 0x02, 0x09, 0x00, 0x6b, 0xfd, 0xa5, 0xfb, 0x21, 0xfa, + 0x78, 0xf9, 0x49, 0xf9, 0x3f, 0xf9, 0x92, 0xf9, 0x9e, 0xf9, 0xc7, 0xf9, 0x9e, 0xf9, 0xd0, 0xf9, + 0x4d, 0xfb, 0xa5, 0xfc, 0xf6, 0xfd, 0x5f, 0xff, 0x69, 0x01, 0x98, 0x03, 0xf5, 0x05, 0x0e, 0x09, + 0x38, 0x0b, 0x80, 0x0c, 0x36, 0x0d, 0xf8, 0x0c, 0x04, 0x0c, 0xab, 0x0b, 0xaf, 0x0a, 0x44, 0x09, + 0x5b, 0x07, 0x04, 0x05, 0xca, 0x01, 0xf3, 0xfd, 0x7a, 0xfb, 0x5b, 0xf9, 0x55, 0xf7, 0x29, 0xf7, + 0x75, 0xf8, 0xb2, 0xf7, 0x9f, 0xf7, 0xac, 0xf7, 0xbf, 0xf7, 0xf6, 0xf7, 0x82, 0xf8, 0x7d, 0xf9, + 0xb6, 0xfa, 0xad, 0xfc, 0xc1, 0xfe, 0x21, 0x00, 0xd8, 0x01, 0x2d, 0x03, 0xcd, 0x03, 0xe8, 0x04, + 0xfc, 0x05, 0x86, 0x06, 0xdd, 0x05, 0x8e, 0x06, 0xdd, 0x07, 0xe7, 0x07, 0x66, 0x07, 0x6e, 0x06, + 0x38, 0x06, 0x99, 0x05, 0x93, 0x05, 0x85, 0x05, 0x2a, 0x05, 0x9a, 0x05, 0x06, 0x05, 0xaf, 0x03, + 0x91, 0x02, 0x68, 0x01, 0x20, 0x00, 0xa6, 0xfe, 0x5e, 0xfd, 0x43, 0xfd, 0xe3, 0xfc, 0xb1, 0xfc, + 0xd6, 0xfc, 0x78, 0xfc, 0xbc, 0xfb, 0xe7, 0xfa, 0x5d, 0xf9, 0x00, 0xf8, 0x01, 0xf7, 0x40, 0xf6, + 0xb4, 0xf5, 0x2b, 0xf5, 0x49, 0xf4, 0x0d, 0xf3, 0x8b, 0xf1, 0xbf, 0xf1, 0x69, 0xf3, 0x41, 0xf5, + 0x3c, 0xf9, 0x7c, 0xfd, 0xaa, 0x00, 0xe1, 0x03, 0x8f, 0x06, 0xca, 0x08, 0x87, 0x0b, 0x60, 0x0e, + 0x59, 0x10, 0x6c, 0x12, 0x48, 0x15, 0xe0, 0x16, 0xc6, 0x17, 0x07, 0x19, 0xac, 0x18, 0xb7, 0x17, + 0xa7, 0x16, 0xaa, 0x15, 0xdc, 0x13, 0xd1, 0x10, 0x65, 0x0e, 0xeb, 0x0b, 0x45, 0x09, 0x4e, 0x06, + 0xb9, 0x02, 0xa8, 0xff, 0x80, 0xfd, 0x7e, 0xfb, 0x75, 0xf9, 0x8f, 0xf7, 0xce, 0xf6, 0xb5, 0xf5, + 0xa5, 0xf4, 0x88, 0xf3, 0xb1, 0xf3, 0x30, 0xf4, 0x34, 0xf4, 0x8f, 0xf5, 0xcc, 0xf6, 0xa8, 0xf7, + 0x6b, 0xf9, 0xb9, 0xfa, 0xfd, 0xfb, 0x86, 0xfd, 0x00, 0xfe, 0x75, 0xfe, 0xfa, 0xfd, 0xe8, 0xfd, + 0x45, 0xfc, 0x9b, 0xfa, 0x3c, 0xf9, 0x7a, 0xf7, 0x1e, 0xf5, 0xe0, 0xf1, 0xa1, 0xf0, 0x48, 0xef, + 0x51, 0xee, 0x21, 0xef, 0x8f, 0xf0, 0x27, 0xf2, 0x27, 0xf4, 0xea, 0xf4, 0x85, 0xf5, 0xbb, 0xf5, + 0x37, 0xf6, 0xa1, 0xf6, 0xce, 0xf7, 0x55, 0xfa, 0x85, 0xfb, 0xf8, 0xfc, 0x84, 0xfe, 0x89, 0x00, + 0xc4, 0x01, 0x78, 0x03, 0x11, 0x05, 0x8b, 0x05, 0x3f, 0x06, 0x70, 0x06, 0xcd, 0x06, 0x85, 0x06, + 0xf1, 0x05, 0xe9, 0x04, 0x91, 0x03, 0xeb, 0x02, 0x16, 0x03, 0xb0, 0x02, 0x52, 0x02, 0x49, 0x02, + 0xff, 0x02, 0xd4, 0x02, 0x4d, 0x02, 0xde, 0x02, 0xa9, 0x03, 0xed, 0x03, 0xef, 0x04, 0x63, 0x05, + 0x84, 0x05, 0x00, 0x07, 0xa7, 0x07, 0x96, 0x08, 0xb9, 0x08, 0xf3, 0x08, 0x66, 0x08, 0x16, 0x07, + 0x86, 0x06, 0xa9, 0x05, 0x21, 0x04, 0x04, 0x03, 0x04, 0x03, 0x66, 0x01, 0xc8, 0xff, 0x89, 0xfe, + 0x0e, 0xfd, 0x09, 0xfc, 0x44, 0xfc, 0x36, 0xfd, 0xc3, 0xfe, 0x2b, 0x00, 0x1a, 0x01, 0xdb, 0x01, + 0x31, 0x02, 0x30, 0x02, 0x7b, 0x01, 0xeb, 0x01, 0xa2, 0x02, 0x41, 0x03, 0xc5, 0x03, 0x74, 0x04, + 0xa8, 0x04, 0xb8, 0x04, 0x34, 0x05, 0xe5, 0x04, 0x0e, 0x04, 0x12, 0x03, 0x94, 0x01, 0x1a, 0x00, + 0x35, 0xff, 0xe6, 0xfd, 0x2e, 0xfc, 0x5d, 0xfa, 0x8b, 0xf9, 0x52, 0xf9, 0x23, 0xf9, 0x7c, 0xf8, + 0xc6, 0xf8, 0x4b, 0xfa, 0x61, 0xfb, 0xc7, 0xfb, 0xd5, 0xfd, 0x12, 0xfe, 0x57, 0xfd, 0x69, 0xfe, + 0xd8, 0xfe, 0x9a, 0xff, 0xf4, 0x00, 0xe7, 0x01, 0x1d, 0x02, 0x3d, 0x02, 0xcc, 0x01, 0xcc, 0x00, + 0xf4, 0xfe, 0xb5, 0xfd, 0xc7, 0xfc, 0xbf, 0xfa, 0xa2, 0xf9, 0x3e, 0xf8, 0x8c, 0xf6, 0xa8, 0xf4, + 0xc6, 0xf2, 0xce, 0xf1, 0x9e, 0xf1, 0xe4, 0xf1, 0x47, 0xf3, 0xa1, 0xf5, 0x56, 0xf8, 0xea, 0xf9, + 0xaa, 0xfb, 0x19, 0xfe, 0x0a, 0x00, 0x5d, 0x02, 0x06, 0x05, 0xa3, 0x08, 0xe8, 0x0b, 0x2b, 0x0f, + 0x56, 0x12, 0xdb, 0x14, 0x67, 0x16, 0xb4, 0x17, 0xcb, 0x18, 0x69, 0x18, 0x7b, 0x17, 0x66, 0x16, + 0x13, 0x14, 0x7a, 0x11, 0x46, 0x0f, 0xed, 0x0b, 0x72, 0x08, 0x49, 0x04, 0x68, 0x01, 0x16, 0xff, + 0x4f, 0xfb, 0x50, 0xf9, 0x11, 0xf8, 0x11, 0xf6, 0x62, 0xf4, 0xb8, 0xf3, 0x4a, 0xf2, 0xdd, 0xf0, + 0x20, 0xf0, 0x93, 0xef, 0x5b, 0xef, 0xa1, 0xf0, 0xa0, 0xf1, 0x67, 0xf2, 0x58, 0xf3, 0x0c, 0xf5, + 0x0f, 0xf7, 0x1e, 0xf8, 0xd3, 0xf9, 0x3b, 0xfb, 0x4d, 0xfc, 0x43, 0xfd, 0xf7, 0xfd, 0x69, 0xfe, + 0x48, 0xfe, 0x92, 0xfd, 0xd7, 0xfd, 0xdc, 0xfe, 0x18, 0xff, 0xd8, 0xfe, 0x94, 0xff, 0x61, 0x01, + 0xb0, 0x02, 0x91, 0x03, 0xc6, 0x04, 0x27, 0x05, 0x66, 0x04, 0x19, 0x04, 0x4a, 0x04, 0xe6, 0x04, + 0xb8, 0x05, 0xad, 0x06, 0x6d, 0x07, 0x3f, 0x07, 0xd0, 0x06, 0x8d, 0x06, 0x70, 0x05, 0x91, 0x04, + 0xeb, 0x03, 0xa9, 0x02, 0x9d, 0x01, 0x32, 0x00, 0x64, 0xff, 0xe3, 0xfd, 0xe0, 0xfc, 0xe6, 0xfd, + 0xfb, 0xfe, 0x74, 0xfe, 0x62, 0xff, 0x96, 0x00, 0x5d, 0x01, 0xad, 0x01, 0xfc, 0x01, 0x78, 0x02, + 0xdd, 0x02, 0xd8, 0x03, 0xdd, 0x03, 0x9b, 0x03, 0xcb, 0x03, 0x8f, 0x04, 0xa1, 0x04, 0xf9, 0x04, + 0xe1, 0x05, 0x6e, 0x05, 0xcf, 0x04, 0x56, 0x04, 0xcd, 0x02, 0x15, 0x01, 0x69, 0xff, 0xf5, 0xfc, + 0xd6, 0xfa, 0x9c, 0xf8, 0xf4, 0xf5, 0x6b, 0xf3, 0xba, 0xf1, 0xda, 0xf0, 0x99, 0xef, 0x9d, 0xef, + 0x11, 0xf1, 0x02, 0xf3, 0x1c, 0xf5, 0x45, 0xf7, 0x1a, 0xf9, 0xd1, 0xfa, 0x22, 0xfc, 0x07, 0xfe, + 0x1a, 0x00, 0x59, 0x02, 0xc8, 0x04, 0xa7, 0x06, 0xe1, 0x07, 0x29, 0x09, 0x48, 0x0a, 0x29, 0x0a, + 0xa4, 0x09, 0xd9, 0x08, 0x80, 0x07, 0x60, 0x06, 0x8e, 0x05, 0x42, 0x04, 0xb9, 0x01, 0x39, 0xff, + 0xc4, 0xfe, 0x6a, 0xfe, 0x48, 0xfd, 0xe1, 0xfc, 0x84, 0xfc, 0xaf, 0xfc, 0x40, 0xfd, 0x7e, 0xfd, + 0x2a, 0xfd, 0x4d, 0xfd, 0xb5, 0xfd, 0xab, 0xfd, 0x7e, 0xfd, 0x6f, 0xfe, 0xc3, 0xff, 0x5d, 0x00, + 0x33, 0x02, 0xa7, 0x03, 0x5a, 0x04, 0x87, 0x04, 0x60, 0x04, 0x64, 0x04, 0x67, 0x04, 0x42, 0x03, + 0x4b, 0x02, 0x29, 0x01, 0x57, 0xff, 0x43, 0xfd, 0xe1, 0xfa, 0x88, 0xf9, 0xbb, 0xf8, 0xa9, 0xf7, + 0xe1, 0xf7, 0x8f, 0xf9, 0x07, 0xfc, 0x2c, 0xfe, 0xfe, 0xff, 0x43, 0x02, 0xca, 0x03, 0x4a, 0x05, + 0x2e, 0x07, 0xfc, 0x07, 0x75, 0x09, 0xff, 0x0b, 0xae, 0x0d, 0xfd, 0x0e, 0x6c, 0x10, 0x17, 0x11, + 0x61, 0x11, 0x4f, 0x11, 0x1c, 0x11, 0xc6, 0x10, 0x26, 0x10, 0x41, 0x0f, 0x1c, 0x0e, 0xf2, 0x0b, + 0x7a, 0x09, 0x23, 0x07, 0xa6, 0x04, 0xb7, 0x02, 0xc7, 0x00, 0x73, 0xfe, 0x49, 0xfc, 0x24, 0xfb, + 0x7d, 0xf9, 0xc1, 0xf7, 0xa9, 0xf5, 0x84, 0xf4, 0xa3, 0xf3, 0x61, 0xf2, 0x87, 0xf2, 0xca, 0xf2, + 0x77, 0xf2, 0xed, 0xf2, 0x87, 0xf3, 0xd9, 0xf3, 0xfd, 0xf4, 0xd9, 0xf5, 0xf4, 0xf5, 0xcc, 0xf5, + 0x5e, 0xf5, 0x04, 0xf5, 0xe5, 0xf4, 0xa5, 0xf4, 0x58, 0xf3, 0x9b, 0xf2, 0x89, 0xf2, 0x47, 0xf3, + 0xf5, 0xf3, 0xc9, 0xf4, 0x4f, 0xf6, 0xe8, 0xf8, 0x06, 0xfc, 0x5c, 0xfe, 0xa1, 0x00, 0x48, 0x02, + 0x8a, 0x03, 0x13, 0x05, 0x00, 0x05, 0xcd, 0x05, 0x38, 0x07, 0x8c, 0x07, 0x26, 0x08, 0x69, 0x08, + 0x66, 0x08, 0x84, 0x07, 0x5d, 0x06, 0x5a, 0x06, 0xb2, 0x05, 0xe4, 0x03, 0xfa, 0x02, 0xb0, 0x01, + 0x2b, 0xff, 0xe5, 0xfc, 0x0b, 0xfb, 0xca, 0xf9, 0xe1, 0xf8, 0x9f, 0xf8, 0x71, 0xf8, 0xc3, 0xf8, + 0x3a, 0xfa, 0x78, 0xfb, 0x47, 0xfc, 0xab, 0xfd, 0x63, 0x00, 0x27, 0x03, 0xd4, 0x04, 0xe3, 0x06, + 0xad, 0x08, 0x39, 0x0a, 0xf8, 0x0b, 0x8c, 0x0d, 0x9f, 0x0f, 0x8e, 0x10, 0xd4, 0x10, 0x4e, 0x10, + 0x37, 0x0f, 0x44, 0x0d, 0x29, 0x0b, 0xd8, 0x08, 0x74, 0x06, 0xa4, 0x03, 0x44, 0x00, 0x2b, 0xfd, + 0x4b, 0xfa, 0xda, 0xf7, 0xad, 0xf5, 0x19, 0xf4, 0xe3, 0xf3, 0x9d, 0xf4, 0xe4, 0xf5, 0x09, 0xf7, + 0x87, 0xf6, 0xeb, 0xf6, 0xdc, 0xf7, 0x6a, 0xf8, 0xa7, 0xf9, 0x08, 0xfc, 0x16, 0xfe, 0xf4, 0xff, + 0xf7, 0x01, 0x15, 0x04, 0x7a, 0x06, 0x61, 0x08, 0x12, 0x0a, 0xab, 0x0a, 0xc4, 0x0a, 0x19, 0x0b, + 0x2d, 0x0b, 0x89, 0x0a, 0x06, 0x09, 0x1d, 0x07, 0x11, 0x05, 0x80, 0x03, 0x9b, 0x01, 0xe8, 0xff, + 0x63, 0xfe, 0x27, 0xfd, 0x72, 0xfc, 0x3c, 0xfb, 0x4f, 0xfa, 0x3b, 0xfa, 0x97, 0xf9, 0xda, 0xf8, + 0x9e, 0xf8, 0x45, 0xf8, 0xbf, 0xf7, 0x56, 0xf7, 0x15, 0xf8, 0x82, 0xf8, 0xbd, 0xf8, 0x00, 0xf9, + 0x0c, 0xf9, 0xe3, 0xf9, 0x60, 0xfa, 0x37, 0xfa, 0xcf, 0xfa, 0x8d, 0xfb, 0xb3, 0xfb, 0xb2, 0xfb, + 0x51, 0xfb, 0x75, 0xfb, 0x7a, 0xfb, 0x99, 0xfb, 0xe7, 0xfb, 0x22, 0xfd, 0x5b, 0xff, 0x8f, 0x01, + 0xb7, 0x02, 0x55, 0x03, 0xd9, 0x04, 0xef, 0x05, 0xb0, 0x06, 0x3f, 0x07, 0x7b, 0x08, 0x7e, 0x09, + 0xdd, 0x0a, 0xb4, 0x0b, 0x03, 0x0d, 0xab, 0x0d, 0x78, 0x0d, 0x87, 0x0d, 0xc3, 0x0c, 0x3d, 0x0b, + 0x52, 0x0a, 0x1b, 0x09, 0x26, 0x07, 0x8b, 0x05, 0x82, 0x03, 0xcb, 0x01, 0xab, 0xff, 0x52, 0xfe, + 0x5e, 0xfd, 0xcf, 0xfc, 0x42, 0xfd, 0xcf, 0xfd, 0xe1, 0xfd, 0xd4, 0xfd, 0xaf, 0xfd, 0xda, 0xfc, + 0xde, 0xfc, 0x0c, 0xfd, 0x8a, 0xfd, 0xec, 0xfd, 0x2a, 0xfe, 0xbc, 0xfd, 0x09, 0xfd, 0x90, 0xfc, + 0x57, 0xfc, 0x84, 0xfc, 0x85, 0xfc, 0xf4, 0xfb, 0xd6, 0xfa, 0xe6, 0xf9, 0x17, 0xf9, 0x7e, 0xf8, + 0x59, 0xf7, 0xcb, 0xf5, 0x6d, 0xf4, 0xa5, 0xf3, 0xc4, 0xf2, 0xc5, 0xf2, 0x27, 0xf3, 0xba, 0xf4, + 0x1f, 0xf7, 0x6a, 0xf9, 0xc5, 0xfb, 0xfb, 0xfd, 0x77, 0x00, 0xb3, 0x02, 0x9b, 0x04, 0x62, 0x06, + 0x14, 0x09, 0x0e, 0x0b, 0x8e, 0x0c, 0x19, 0x0e, 0xc4, 0x0e, 0xf3, 0x0e, 0x42, 0x0f, 0x90, 0x0e, + 0xad, 0x0d, 0x61, 0x0c, 0x00, 0x0a, 0xb7, 0x07, 0x4f, 0x05, 0xe6, 0x02, 0x00, 0x00, 0xbd, 0xfd, + 0x2b, 0xfc, 0x97, 0xfa, 0xfb, 0xf8, 0xaf, 0xf8, 0x3a, 0xf9, 0x59, 0xf9, 0x86, 0xf9, 0xd6, 0xf9, + 0x5a, 0xfa, 0x37, 0xfb, 0xde, 0xfc, 0xe4, 0xfd, 0x1f, 0xff, 0x6d, 0x00, 0xf9, 0x01, 0x3f, 0x03, + 0x06, 0x05, 0x9b, 0x07, 0x20, 0x09, 0x5f, 0x0a, 0xf5, 0x0a, 0xa8, 0x0a, 0x5b, 0x0a, 0xa4, 0x09, + 0x4b, 0x08, 0xd1, 0x06, 0x81, 0x04, 0x0d, 0x02, 0x36, 0xff, 0x9a, 0xfc, 0xb3, 0xf9, 0x0a, 0xf6, + 0x54, 0xf4, 0x21, 0xf4, 0xa4, 0xf3, 0xdc, 0xf3, 0xec, 0xf3, 0xbd, 0xf3, 0xcd, 0xf3, 0x74, 0xf3, + 0x85, 0xf4, 0xc5, 0xf5, 0x24, 0xf7, 0x89, 0xf8, 0x5c, 0xf9, 0xf8, 0xf9, 0x1e, 0xfb, 0xce, 0xfc, + 0x56, 0xfd, 0xdb, 0xfd, 0xa8, 0xfe, 0xda, 0xfe, 0x13, 0xff, 0x43, 0x00, 0x5c, 0x01, 0x7c, 0x01, + 0x60, 0x01, 0x08, 0x02, 0x32, 0x02, 0x6b, 0x02, 0x40, 0x03, 0xa2, 0x03, 0x51, 0x04, 0x99, 0x04, + 0x8e, 0x04, 0x13, 0x04, 0x00, 0x04, 0xef, 0x03, 0x7f, 0x03, 0xe1, 0x02, 0xc0, 0x02, 0x6c, 0x02, + 0xde, 0x01, 0x88, 0x01, 0x01, 0x01, 0xc2, 0x00, 0x7f, 0x00, 0x0d, 0x00, 0x2c, 0xff, 0x2f, 0xfe, + 0x0e, 0xfd, 0x88, 0xfc, 0x68, 0xfb, 0x3c, 0xfa, 0x1c, 0xf9, 0x4d, 0xf8, 0x66, 0xf8, 0xf9, 0xf7, + 0x70, 0xf7, 0x7d, 0xf8, 0x39, 0xfb, 0xd0, 0xfe, 0x08, 0x02, 0x61, 0x04, 0x9f, 0x07, 0x55, 0x0a, + 0xd0, 0x0c, 0x8a, 0x0e, 0xba, 0x10, 0x47, 0x12, 0xf1, 0x13, 0xc9, 0x15, 0x62, 0x16, 0x6b, 0x17, + 0x21, 0x17, 0xc8, 0x15, 0x4a, 0x14, 0x8f, 0x12, 0x48, 0x10, 0xde, 0x0d, 0x86, 0x0b, 0x7f, 0x09, + 0x58, 0x05, 0xa8, 0x01, 0xdb, 0xfe, 0x8e, 0xfb, 0xc2, 0xf8, 0xe8, 0xf5, 0x35, 0xf4, 0xad, 0xf2, + 0x9d, 0xf1, 0xd2, 0xf0, 0xe7, 0xef, 0x05, 0xef, 0x6c, 0xef, 0x0d, 0xf0, 0x64, 0xf1, 0x3e, 0xf3, + 0x17, 0xf5, 0xfe, 0xf6, 0x0b, 0xf8, 0x2f, 0xf9, 0xd8, 0xfa, 0xd9, 0xfc, 0xa5, 0xfe, 0x60, 0x00, + 0x6e, 0x00, 0x5a, 0x00, 0x80, 0xff, 0xe7, 0xfe, 0x7f, 0xfe, 0xa7, 0xfc, 0x92, 0xfa, 0x77, 0xf9, + 0x32, 0xf8, 0x85, 0xf6, 0xbe, 0xf5, 0xa8, 0xf5, 0x7b, 0xf6, 0xb8, 0xf7, 0x4f, 0xf9, 0x71, 0xfa, + 0xcf, 0xfb, 0xb2, 0xfc, 0x84, 0xfd, 0xcd, 0xfd, 0x9c, 0xfe, 0xb1, 0x00, 0xec, 0x01, 0x90, 0x02, + 0x83, 0x03, 0x7a, 0x04, 0x30, 0x05, 0x3d, 0x06, 0x65, 0x07, 0xd8, 0x07, 0x4f, 0x07, 0x4c, 0x07, + 0x3a, 0x07, 0x0d, 0x06, 0x23, 0x05, 0x6d, 0x04, 0x59, 0x03, 0x35, 0x02, 0x68, 0x01, 0x5d, 0x00, + 0x56, 0x00, 0x83, 0x00, 0x5d, 0x00, 0x03, 0x00, 0xf3, 0xff, 0x79, 0x00, 0x58, 0x01, 0x3f, 0x02, + 0x85, 0x02, 0x78, 0x02, 0x2b, 0x03, 0xc7, 0x03, 0x22, 0x04, 0x10, 0x05, 0x7b, 0x05, 0xa2, 0x05, + 0xfe, 0x04, 0x09, 0x04, 0x28, 0x03, 0x22, 0x02, 0x5c, 0x01, 0xd8, 0x00, 0x53, 0xff, 0xe5, 0xfd, + 0x44, 0xfd, 0xa0, 0xfc, 0x8c, 0xfb, 0x5b, 0xfa, 0x64, 0xfa, 0x52, 0xfb, 0x5e, 0xfc, 0xb4, 0xfd, + 0xf5, 0xfe, 0x4e, 0xff, 0xc2, 0xff, 0x0a, 0x00, 0xba, 0xff, 0x11, 0x00, 0x76, 0x01, 0x56, 0x02, + 0x69, 0x02, 0x6b, 0x02, 0xc3, 0x02, 0xe9, 0x02, 0x2d, 0x03, 0xdc, 0x03, 0x00, 0x03, 0xa8, 0x01, + 0x23, 0x01, 0x74, 0x00, 0x89, 0xff, 0x11, 0xfe, 0x8d, 0xfc, 0x01, 0xfb, 0x54, 0xfa, 0xcb, 0xf9, + 0x32, 0xf9, 0xcd, 0xf8, 0x07, 0xf9, 0x31, 0xfa, 0x8a, 0xfb, 0x7f, 0xfc, 0x88, 0xfd, 0x00, 0xff, + 0x1c, 0x00, 0x4d, 0x00, 0xcd, 0x00, 0x5a, 0x02, 0x8a, 0x02, 0xa2, 0x02, 0xe5, 0x02, 0xca, 0x02, + 0xa5, 0x02, 0xf1, 0x01, 0x00, 0x01, 0xce, 0xff, 0xd8, 0xfd, 0x27, 0xfc, 0xfc, 0xfa, 0xff, 0xf8, + 0x47, 0xf7, 0x19, 0xf6, 0x00, 0xf5, 0xa6, 0xf3, 0x61, 0xf2, 0x96, 0xf1, 0x2c, 0xf2, 0x93, 0xf3, + 0xb9, 0xf5, 0x0e, 0xf8, 0xf9, 0xf9, 0x9d, 0xfc, 0xc8, 0xff, 0xcd, 0x01, 0x14, 0x04, 0x0e, 0x07, + 0x28, 0x0a, 0x82, 0x0d, 0x52, 0x10, 0xba, 0x13, 0xc1, 0x15, 0x98, 0x16, 0x8f, 0x17, 0x45, 0x17, + 0x20, 0x16, 0x2b, 0x15, 0xf7, 0x13, 0x4c, 0x12, 0x85, 0x0f, 0x18, 0x0c, 0x85, 0x08, 0x1f, 0x05, + 0x3e, 0x02, 0x02, 0xff, 0x2e, 0xfc, 0x4c, 0xfa, 0xe4, 0xf8, 0x6f, 0xf7, 0x30, 0xf6, 0xb2, 0xf4, + 0xb8, 0xf3, 0x85, 0xf3, 0x41, 0xf3, 0xbe, 0xf3, 0x96, 0xf4, 0x46, 0xf5, 0x5b, 0xf5, 0x77, 0xf5, + 0x43, 0xf6, 0x58, 0xf7, 0x14, 0xf8, 0x6b, 0xf9, 0x81, 0xfa, 0x65, 0xfb, 0x09, 0xfc, 0x29, 0xfd, + 0xd9, 0xfd, 0x79, 0xfd, 0x07, 0xfd, 0xf9, 0xfc, 0x41, 0xfd, 0x0c, 0xfd, 0xf7, 0xfc, 0xfe, 0xfc, + 0x18, 0xfd, 0x9c, 0xfe, 0xf4, 0xff, 0x8c, 0x00, 0x1a, 0x02, 0x85, 0x03, 0xef, 0x03, 0x31, 0x04, + 0xcb, 0x04, 0x2d, 0x06, 0x8c, 0x06, 0x23, 0x07, 0x12, 0x08, 0x53, 0x08, 0x43, 0x08, 0x0c, 0x08, + 0x49, 0x07, 0xe8, 0x05, 0x93, 0x04, 0x5b, 0x03, 0x45, 0x02, 0x49, 0x01, 0x06, 0x00, 0x8c, 0xfe, + 0x37, 0xfe, 0x18, 0xfe, 0x63, 0xfe, 0x29, 0xfe, 0x9a, 0xfe, 0x59, 0xff, 0x36, 0x00, 0x4e, 0x01, + 0xb7, 0x01, 0xb2, 0x02, 0xd3, 0x03, 0x8f, 0x04, 0xd9, 0x04, 0x01, 0x05, 0x7f, 0x05, 0xe0, 0x05, + 0xab, 0x05, 0x66, 0x06, 0x2f, 0x07, 0xef, 0x06, 0x9d, 0x06, 0xe9, 0x05, 0x68, 0x04, 0xbb, 0x02, + 0xc2, 0x01, 0x76, 0x00, 0x1b, 0xfe, 0x58, 0xfb, 0x68, 0xf9, 0x74, 0xf7, 0xfd, 0xf4, 0x0a, 0xf3, + 0x78, 0xf1, 0xf5, 0xf0, 0x33, 0xf1, 0xfa, 0xf1, 0x38, 0xf3, 0x15, 0xf5, 0xcc, 0xf6, 0x61, 0xf8, + 0x36, 0xfa, 0xb2, 0xfc, 0xa9, 0xfe, 0x6d, 0x00, 0xbe, 0x01, 0x40, 0x03, 0xac, 0x04, 0xa6, 0x05, + 0x44, 0x06, 0x63, 0x06, 0x3c, 0x06, 0x70, 0x05, 0x30, 0x04, 0x8b, 0x03, 0x30, 0x03, 0xda, 0x01, + 0xf8, 0xff, 0x51, 0xfe, 0x84, 0xfd, 0x38, 0xfc, 0x3c, 0xfb, 0xa9, 0xfa, 0xeb, 0xf9, 0x0b, 0xfa, + 0x2c, 0xfa, 0xe7, 0xf9, 0xf6, 0xf9, 0xba, 0xfa, 0xbb, 0xfb, 0x68, 0xfc, 0x74, 0xfc, 0x00, 0xfe, + 0xf8, 0xfe, 0xf8, 0xff, 0x93, 0x01, 0x11, 0x03, 0xe6, 0x03, 0xa7, 0x04, 0xe7, 0x04, 0xc2, 0x04, + 0x4f, 0x04, 0x98, 0x03, 0x97, 0x03, 0xac, 0x02, 0x09, 0x01, 0xa3, 0xff, 0x70, 0xfe, 0x04, 0xfd, + 0xf4, 0xfb, 0x4a, 0xfa, 0x8d, 0xf9, 0xfa, 0xf9, 0x28, 0xfb, 0x10, 0xfd, 0x08, 0xff, 0x0e, 0x01, + 0x65, 0x02, 0x6f, 0x04, 0x61, 0x06, 0x90, 0x07, 0x6f, 0x09, 0xd7, 0x0b, 0x8d, 0x0d, 0x39, 0x0f, + 0x85, 0x11, 0xc6, 0x12, 0xb2, 0x12, 0x02, 0x12, 0x7f, 0x11, 0xa3, 0x10, 0x1f, 0x10, 0x0e, 0x10, + 0x36, 0x0f, 0x87, 0x0c, 0x75, 0x0a, 0x64, 0x08, 0xd7, 0x05, 0x87, 0x03, 0x89, 0x01, 0x02, 0x00, + 0x64, 0xfe, 0x94, 0xfc, 0xe0, 0xfa, 0x4e, 0xf8, 0x38, 0xf6, 0x04, 0xf5, 0x2b, 0xf4, 0x56, 0xf4, + 0x67, 0xf4, 0x27, 0xf4, 0x6d, 0xf3, 0x24, 0xf3, 0x8d, 0xf3, 0x28, 0xf4, 0x14, 0xf5, 0x6a, 0xf5, + 0x81, 0xf5, 0xd7, 0xf5, 0x32, 0xf5, 0x32, 0xf5, 0x29, 0xf5, 0xcb, 0xf4, 0x6f, 0xf4, 0xe8, 0xf3, + 0xb4, 0xf4, 0xea, 0xf4, 0x22, 0xf5, 0x22, 0xf6, 0xdb, 0xf7, 0x2c, 0xfa, 0x20, 0xfc, 0xeb, 0xfe, + 0x37, 0x01, 0x55, 0x03, 0x87, 0x05, 0x1a, 0x07, 0x8f, 0x07, 0x43, 0x08, 0x51, 0x09, 0xc9, 0x09, + 0xbc, 0x09, 0x5d, 0x0a, 0xa3, 0x0a, 0xde, 0x09, 0xed, 0x08, 0xf7, 0x07, 0x14, 0x06, 0xfd, 0x03, + 0xd7, 0x02, 0x66, 0x01, 0x5a, 0xff, 0x82, 0xfd, 0x6c, 0xfc, 0x67, 0xfb, 0x75, 0xfa, 0x21, 0xf9, + 0x69, 0xf8, 0x98, 0xf8, 0xe4, 0xf9, 0xe9, 0xfa, 0xf1, 0xfb, 0xa8, 0xfd, 0xa5, 0xff, 0xa6, 0x01, + 0x08, 0x04, 0x5d, 0x06, 0x3b, 0x08, 0xeb, 0x09, 0x55, 0x0b, 0xc6, 0x0c, 0xc6, 0x0e, 0xf1, 0x0f, + 0x03, 0x10, 0x5a, 0x0f, 0x04, 0x0e, 0x67, 0x0c, 0x99, 0x0a, 0xdc, 0x08, 0xd4, 0x06, 0xab, 0x03, + 0x93, 0x00, 0xe6, 0xfd, 0x5f, 0xfb, 0x29, 0xf8, 0x06, 0xf5, 0xff, 0xf3, 0xf0, 0xf2, 0x5a, 0xf2, + 0xac, 0xf2, 0xb7, 0xf2, 0x66, 0xf2, 0x17, 0xf3, 0xa1, 0xf4, 0xe7, 0xf5, 0x5b, 0xf7, 0x9d, 0xf9, + 0x68, 0xfb, 0xf7, 0xfc, 0xde, 0xff, 0x22, 0x02, 0x35, 0x04, 0xcb, 0x05, 0x97, 0x07, 0x74, 0x08, + 0x18, 0x08, 0x43, 0x08, 0x2e, 0x08, 0xe4, 0x07, 0xe4, 0x06, 0x5a, 0x05, 0x89, 0x04, 0x04, 0x03, + 0x78, 0x00, 0xbf, 0xfe, 0x7b, 0xfd, 0xc7, 0xfc, 0xcd, 0xfb, 0x64, 0xfa, 0x0e, 0xfa, 0xc0, 0xf9, + 0x56, 0xf9, 0x5d, 0xf9, 0x49, 0xf9, 0x0f, 0xf9, 0x3b, 0xf9, 0xc0, 0xf9, 0x20, 0xfa, 0x02, 0xfb, + 0x2c, 0xfc, 0x01, 0xfd, 0x65, 0xfd, 0x46, 0xfd, 0x3d, 0xfd, 0xcb, 0xfc, 0xd4, 0xfc, 0x74, 0xfd, + 0x94, 0xfd, 0x50, 0xfd, 0x98, 0xfd, 0x5e, 0xfe, 0xcf, 0xfd, 0xe9, 0xfc, 0xaa, 0xfc, 0xd4, 0xfc, + 0xe5, 0xfd, 0xd3, 0xff, 0x8f, 0x01, 0xf0, 0x02, 0xc2, 0x03, 0xfe, 0x04, 0xe2, 0x05, 0x90, 0x06, + 0x71, 0x07, 0x65, 0x08, 0x3e, 0x09, 0xb1, 0x0a, 0x15, 0x0c, 0xc9, 0x0c, 0x49, 0x0d, 0xde, 0x0c, + 0xa8, 0x0b, 0xf7, 0x09, 0xd9, 0x08, 0x9c, 0x07, 0x75, 0x06, 0x2b, 0x04, 0xa8, 0x01, 0xf4, 0xff, + 0x37, 0xfe, 0x3a, 0xfc, 0x6f, 0xfa, 0xe4, 0xf9, 0x36, 0xfa, 0xc0, 0xfa, 0x96, 0xfa, 0x36, 0xfa, + 0xf2, 0xf9, 0x74, 0xf9, 0xd1, 0xf9, 0xe6, 0xfa, 0x85, 0xfb, 0x1b, 0xfc, 0xfe, 0xfb, 0xca, 0xfb, + 0xad, 0xfb, 0x87, 0xfb, 0xbc, 0xfb, 0x86, 0xfb, 0xfe, 0xfb, 0x29, 0xfc, 0x87, 0xfb, 0xfa, 0xfa, + 0xc5, 0xfa, 0x40, 0xfa, 0x3b, 0xf9, 0xc8, 0xf8, 0x16, 0xf9, 0x69, 0xf8, 0x4e, 0xf7, 0x5b, 0xf7, + 0x57, 0xf7, 0x26, 0xf8, 0xed, 0xf9, 0x1a, 0xfc, 0x08, 0xfe, 0x5c, 0x00, 0x9a, 0x02, 0xab, 0x04, + 0x86, 0x06, 0x56, 0x08, 0xfb, 0x09, 0x62, 0x0b, 0x52, 0x0d, 0xc0, 0x0e, 0x95, 0x0f, 0x70, 0x10, + 0x91, 0x10, 0xd1, 0x0f, 0x2c, 0x0e, 0xb3, 0x0b, 0x9f, 0x09, 0xdc, 0x07, 0xc1, 0x05, 0x2e, 0x03, + 0xef, 0x00, 0x69, 0xff, 0x46, 0xfd, 0xec, 0xfa, 0xa9, 0xf8, 0x7c, 0xf7, 0x58, 0xf7, 0xf5, 0xf6, + 0x1d, 0xf7, 0x75, 0xf7, 0x5a, 0xf7, 0xd2, 0xf7, 0x6a, 0xf8, 0x31, 0xf9, 0x5c, 0xfa, 0x0f, 0xfc, + 0xac, 0xfd, 0x40, 0xff, 0xde, 0x01, 0x3c, 0x04, 0x51, 0x06, 0xd3, 0x07, 0x1e, 0x09, 0xa3, 0x09, + 0xe3, 0x09, 0x22, 0x0a, 0xe8, 0x09, 0x59, 0x08, 0xe0, 0x06, 0x0f, 0x06, 0x34, 0x04, 0x27, 0x02, + 0x79, 0xff, 0xf1, 0xfc, 0x55, 0xfb, 0xa4, 0xfa, 0xbc, 0xf9, 0xeb, 0xf8, 0x78, 0xf8, 0x29, 0xf8, + 0x16, 0xf8, 0x4e, 0xf8, 0xb7, 0xf8, 0xa1, 0xf8, 0x2a, 0xf9, 0x42, 0xfa, 0x27, 0xfb, 0xc3, 0xfb, + 0xde, 0xfc, 0xbf, 0xfd, 0xa4, 0xfe, 0x34, 0xff, 0xf9, 0xfe, 0x2a, 0xfe, 0x08, 0xfe, 0xa5, 0xfe, + 0xe3, 0xfe, 0x25, 0xff, 0xd1, 0xff, 0x58, 0x00, 0x0c, 0x00, 0x16, 0x00, 0x75, 0x00, 0x79, 0x01, + 0x1f, 0x02, 0xec, 0x02, 0x67, 0x03, 0x41, 0x03, 0x07, 0x03, 0xbd, 0x02, 0x54, 0x02, 0x5c, 0x01, + 0x41, 0x01, 0x72, 0x00, 0x1e, 0x00, 0xe4, 0xff, 0xbc, 0xff, 0x84, 0xff, 0x05, 0xff, 0x83, 0xfe, + 0x5d, 0xfd, 0x07, 0xfc, 0xed, 0xfa, 0xba, 0xf9, 0x83, 0xf8, 0x17, 0xf7, 0x72, 0xf6, 0x7c, 0xf6, + 0x8a, 0xf6, 0x60, 0xf6, 0xca, 0xf5, 0x85, 0xf6, 0xb8, 0xf8, 0x9a, 0xfb, 0x0e, 0xff, 0x2c, 0x03, + 0x89, 0x06, 0x1e, 0x09, 0x96, 0x0b, 0xd6, 0x0d, 0xe4, 0x0f, 0xd4, 0x11, 0x00, 0x14, 0x3b, 0x15, + 0xbf, 0x16, 0x7d, 0x17, 0x34, 0x17, 0x9a, 0x16, 0x34, 0x15, 0x66, 0x13, 0x32, 0x11, 0x3c, 0x0f, + 0x6d, 0x0d, 0x8e, 0x0a, 0xfc, 0x06, 0xde, 0x03, 0x2d, 0x01, 0x06, 0xfe, 0x0a, 0xfb, 0xee, 0xf8, + 0x36, 0xf7, 0xb7, 0xf5, 0x93, 0xf4, 0x83, 0xf3, 0x45, 0xf2, 0x51, 0xf1, 0x6b, 0xf1, 0xe3, 0xf1, + 0x6d, 0xf2, 0xc2, 0xf3, 0x12, 0xf5, 0x07, 0xf6, 0x99, 0xf7, 0xfc, 0xf8, 0x55, 0xfa, 0x95, 0xfb, + 0xf6, 0xfc, 0x31, 0xfe, 0xa5, 0xfe, 0x9b, 0xfe, 0xe9, 0xfd, 0x1f, 0xfd, 0x40, 0xfc, 0x59, 0xfb, + 0xb7, 0xfa, 0x7b, 0xfa, 0x45, 0xf9, 0xd1, 0xf7, 0xf1, 0xf6, 0xa6, 0xf6, 0xe0, 0xf6, 0xd6, 0xf7, + 0x9b, 0xf9, 0x15, 0xfb, 0x49, 0xfc, 0x16, 0xfe, 0x0a, 0xff, 0x45, 0xff, 0xe2, 0xff, 0x00, 0x01, + 0xa1, 0x02, 0xe9, 0x03, 0x63, 0x05, 0xca, 0x06, 0xbf, 0x07, 0xa8, 0x08, 0xdd, 0x08, 0x6b, 0x08, + 0x05, 0x08, 0x44, 0x08, 0x97, 0x07, 0x3c, 0x06, 0x82, 0x05, 0x50, 0x05, 0x41, 0x04, 0xba, 0x02, + 0x93, 0x01, 0x6c, 0x00, 0xce, 0xff, 0x49, 0xff, 0x86, 0xff, 0xb8, 0xff, 0xbd, 0xff, 0xde, 0xff, + 0x24, 0x00, 0x5b, 0x00, 0xdf, 0x00, 0x25, 0x01, 0x6f, 0x01, 0x27, 0x02, 0x58, 0x03, 0x65, 0x04, + 0x42, 0x05, 0x92, 0x05, 0x77, 0x05, 0x70, 0x05, 0xc3, 0x04, 0xea, 0x03, 0x08, 0x03, 0xfb, 0x01, + 0x1c, 0x00, 0xce, 0xfe, 0x74, 0xfe, 0xe6, 0xfd, 0x83, 0xfc, 0xa0, 0xfb, 0xab, 0xfb, 0x6d, 0xfb, + 0x93, 0xfb, 0x1b, 0xfc, 0xd2, 0xfc, 0x35, 0xfd, 0x2d, 0xfe, 0xc0, 0xfe, 0x83, 0xfe, 0x83, 0xfe, + 0xca, 0xfe, 0x33, 0xff, 0x68, 0xff, 0xf1, 0xff, 0x70, 0x00, 0xbf, 0x00, 0x0d, 0x01, 0x40, 0x01, + 0x97, 0x00, 0xc7, 0xff, 0x36, 0xff, 0x70, 0xfe, 0x2c, 0xfd, 0xc7, 0xfc, 0x34, 0xfc, 0xbb, 0xfb, + 0xda, 0xfa, 0xf7, 0xf9, 0x49, 0xf9, 0x12, 0xf9, 0x35, 0xfa, 0x4a, 0xfb, 0xe5, 0xfc, 0x7a, 0xfe, + 0x22, 0x00, 0xa5, 0x01, 0x89, 0x02, 0x0d, 0x03, 0x41, 0x03, 0xc1, 0x03, 0xdb, 0x04, 0x3d, 0x05, + 0x9c, 0x05, 0xd8, 0x05, 0x4d, 0x05, 0x87, 0x04, 0x41, 0x03, 0xeb, 0x01, 0x2e, 0x00, 0xe6, 0xfe, + 0xd6, 0xfd, 0x31, 0xfc, 0x74, 0xfa, 0xc5, 0xf9, 0xcf, 0xf8, 0x2f, 0xf7, 0x8e, 0xf5, 0x85, 0xf4, + 0x62, 0xf4, 0x85, 0xf4, 0x0a, 0xf6, 0x00, 0xf8, 0x3e, 0xfa, 0x9d, 0xfc, 0x70, 0xfe, 0x11, 0x00, + 0xe7, 0x01, 0xf4, 0x03, 0xb2, 0x06, 0x98, 0x09, 0x67, 0x0c, 0x0e, 0x0f, 0xe0, 0x10, 0xf5, 0x11, + 0xa7, 0x12, 0x67, 0x12, 0x97, 0x11, 0x4b, 0x11, 0x6f, 0x10, 0xc1, 0x0e, 0xf1, 0x0b, 0xf2, 0x08, + 0x61, 0x06, 0xe1, 0x03, 0x84, 0x01, 0xeb, 0xfe, 0xf6, 0xfc, 0x59, 0xfb, 0x66, 0xf9, 0x91, 0xf7, + 0x36, 0xf6, 0xf1, 0xf4, 0x12, 0xf4, 0xb0, 0xf3, 0xb7, 0xf3, 0x3d, 0xf3, 0x2f, 0xf3, 0x6a, 0xf3, + 0xb9, 0xf3, 0x9c, 0xf4, 0xd6, 0xf5, 0xf1, 0xf6, 0xc3, 0xf7, 0x03, 0xf9, 0x88, 0xfa, 0x93, 0xfb, + 0x57, 0xfc, 0x66, 0xfd, 0xce, 0xfd, 0x12, 0xfe, 0xef, 0xfe, 0xde, 0xff, 0x38, 0x00, 0x10, 0x00, + 0x15, 0x00, 0xaf, 0xff, 0xd9, 0xff, 0x4b, 0x00, 0x55, 0x01, 0xb2, 0x02, 0xff, 0x03, 0x68, 0x05, + 0x08, 0x06, 0x46, 0x06, 0x19, 0x06, 0x4f, 0x06, 0xa0, 0x06, 0x05, 0x07, 0xe1, 0x07, 0x49, 0x08, + 0x59, 0x08, 0x3f, 0x08, 0xd5, 0x06, 0x35, 0x05, 0x7e, 0x03, 0x6c, 0x02, 0xb1, 0x01, 0x94, 0x00, + 0x58, 0xff, 0x65, 0xfe, 0xc7, 0xfd, 0x72, 0xfd, 0xf7, 0xfc, 0xb4, 0xfc, 0x8b, 0xfd, 0x58, 0xfe, + 0x59, 0xff, 0x0e, 0x01, 0xaa, 0x02, 0x42, 0x03, 0xc6, 0x03, 0x83, 0x04, 0x91, 0x04, 0x85, 0x04, + 0xff, 0x04, 0x9e, 0x05, 0x40, 0x06, 0x16, 0x07, 0x57, 0x07, 0x30, 0x07, 0xce, 0x06, 0xfd, 0x05, + 0xee, 0x04, 0x01, 0x04, 0x3c, 0x03, 0xb6, 0x01, 0x14, 0xff, 0xfe, 0xfc, 0x42, 0xfb, 0x5e, 0xf9, + 0xb3, 0xf7, 0xd3, 0xf5, 0x7a, 0xf4, 0xad, 0xf3, 0x63, 0xf3, 0x66, 0xf3, 0x28, 0xf4, 0xa2, 0xf5, + 0xe8, 0xf7, 0xee, 0xf9, 0xda, 0xfb, 0x36, 0xfd, 0x52, 0xfe, 0x1b, 0xff, 0x61, 0x00, 0x46, 0x02, + 0x73, 0x03, 0xd8, 0x04, 0x2f, 0x05, 0xa0, 0x04, 0x00, 0x04, 0xe2, 0x02, 0xc3, 0x01, 0xa4, 0x00, + 0x51, 0xff, 0x50, 0xfe, 0x4f, 0xfd, 0x7f, 0xfc, 0xa9, 0xfb, 0x54, 0xfa, 0x3b, 0xf9, 0x69, 0xf8, + 0xc2, 0xf8, 0x1b, 0xf9, 0x43, 0xfa, 0x6c, 0xfb, 0x0c, 0xfc, 0x09, 0xfd, 0xfa, 0xfd, 0x06, 0xfe, + 0x72, 0xfe, 0x4d, 0xff, 0x44, 0x00, 0xbf, 0x01, 0x21, 0x03, 0xb5, 0x04, 0xf4, 0x05, 0xef, 0x06, + 0x15, 0x07, 0xa3, 0x06, 0xdd, 0x05, 0xc1, 0x05, 0x45, 0x05, 0xdd, 0x03, 0x81, 0x02, 0x2c, 0x01, + 0x88, 0xff, 0x29, 0xfe, 0x4a, 0xfc, 0xa4, 0xfa, 0xf5, 0xf9, 0xab, 0xf9, 0x03, 0xfa, 0xfd, 0xfa, + 0x93, 0xfc, 0x36, 0xfe, 0x8b, 0xff, 0x99, 0x00, 0xe0, 0x01, 0xd9, 0x02, 0xbf, 0x03, 0x8f, 0x05, + 0x55, 0x07, 0xeb, 0x08, 0x09, 0x0b, 0x8a, 0x0c, 0xf6, 0x0c, 0x12, 0x0d, 0x55, 0x0d, 0x2c, 0x0d, + 0x67, 0x0d, 0x95, 0x0d, 0xae, 0x0c, 0xe2, 0x0a, 0x38, 0x09, 0xa9, 0x07, 0x88, 0x05, 0x57, 0x03, + 0xbd, 0x01, 0x72, 0x00, 0xd6, 0xfe, 0x24, 0xfd, 0x31, 0xfb, 0xf0, 0xf8, 0x73, 0xf7, 0x7c, 0xf6, + 0x9d, 0xf5, 0xcc, 0xf4, 0x17, 0xf4, 0x36, 0xf3, 0xad, 0xf2, 0x73, 0xf3, 0xf7, 0xf3, 0x8e, 0xf4, + 0x2b, 0xf5, 0xd4, 0xf5, 0x55, 0xf6, 0xc7, 0xf6, 0x65, 0xf7, 0x40, 0xf7, 0x75, 0xf7, 0xc3, 0xf7, + 0xe4, 0xf7, 0x6f, 0xf8, 0x4f, 0xf9, 0xa7, 0xf9, 0x8b, 0xf9, 0xf6, 0xf9, 0x28, 0xfb, 0x83, 0xfc, + 0xce, 0xfe, 0x40, 0x01, 0xcc, 0x03, 0x0a, 0x06, 0xd8, 0x07, 0x0c, 0x09, 0x24, 0x09, 0x7b, 0x09, + 0x7f, 0x09, 0x63, 0x09, 0x33, 0x09, 0x8a, 0x09, 0x88, 0x09, 0x04, 0x09, 0xce, 0x07, 0x0a, 0x06, + 0xb8, 0x03, 0xe2, 0x01, 0xc0, 0x00, 0x7b, 0xff, 0xf2, 0xfd, 0x55, 0xfc, 0x11, 0xfb, 0x77, 0xf9, + 0xf2, 0xf7, 0xf4, 0xf6, 0xa7, 0xf6, 0xf2, 0xf6, 0x1e, 0xf8, 0x40, 0xf9, 0xc0, 0xfa, 0xc1, 0xfc, + 0x70, 0xfe, 0x1c, 0x00, 0x44, 0x02, 0x40, 0x04, 0xc2, 0x05, 0xb9, 0x07, 0x5d, 0x09, 0x08, 0x0b, + 0x55, 0x0c, 0x3f, 0x0d, 0xd9, 0x0d, 0xa8, 0x0d, 0x3b, 0x0d, 0xaa, 0x0b, 0x39, 0x0a, 0xa5, 0x08, + 0x69, 0x06, 0xf7, 0x03, 0x30, 0x02, 0x67, 0x00, 0x60, 0xfe, 0xb1, 0xfb, 0xeb, 0xf9, 0xaf, 0xf8, + 0x8d, 0xf7, 0xa1, 0xf6, 0x2e, 0xf6, 0x5b, 0xf6, 0xc5, 0xf6, 0xef, 0xf7, 0x49, 0xf9, 0xf6, 0xf9, + 0x85, 0xfa, 0x0c, 0xfb, 0x7d, 0xfb, 0x12, 0xfd, 0x59, 0xff, 0x5f, 0x01, 0xc8, 0x02, 0x58, 0x04, + 0x61, 0x05, 0x6c, 0x05, 0x81, 0x05, 0xe2, 0x05, 0xde, 0x05, 0x6b, 0x05, 0x3a, 0x05, 0xe3, 0x04, + 0xf7, 0x03, 0x4f, 0x02, 0x91, 0x00, 0x5a, 0xfe, 0x7e, 0xfd, 0x71, 0xfd, 0x8b, 0xfd, 0xbd, 0xfd, + 0xae, 0xfd, 0xaf, 0xfd, 0xe2, 0xfc, 0x56, 0xfc, 0x22, 0xfc, 0x61, 0xfb, 0x1b, 0xfb, 0x4f, 0xfb, + 0x0a, 0xfb, 0x9d, 0xfb, 0x32, 0xfc, 0x57, 0xfc, 0xd5, 0xfb, 0xcf, 0xfb, 0x63, 0xfb, 0x5b, 0xfb, + 0x04, 0xfc, 0x21, 0xfc, 0x4a, 0xfc, 0x84, 0xfc, 0x06, 0xfd, 0xc3, 0xfc, 0xa4, 0xfc, 0x62, 0xfc, + 0x5f, 0xfc, 0x01, 0xfd, 0xff, 0xfd, 0xdb, 0xff, 0xce, 0x01, 0xb3, 0x03, 0x41, 0x05, 0x6f, 0x06, + 0x40, 0x07, 0x8c, 0x08, 0x96, 0x09, 0x82, 0x0a, 0x5c, 0x0b, 0x91, 0x0c, 0x57, 0x0d, 0x8d, 0x0d, + 0x0c, 0x0e, 0xd0, 0x0d, 0xa2, 0x0c, 0x35, 0x0b, 0x30, 0x0a, 0x44, 0x09, 0x58, 0x07, 0x38, 0x05, + 0x52, 0x03, 0x50, 0x01, 0x1c, 0xff, 0x7e, 0xfc, 0x8f, 0xfa, 0x07, 0xfa, 0x14, 0xfa, 0x6e, 0xf9, + 0xd7, 0xf8, 0xd4, 0xf8, 0xbc, 0xf8, 0xf0, 0xf8, 0x6e, 0xf9, 0xd8, 0xf9, 0xb5, 0xf9, 0xa0, 0xf9, + 0xd3, 0xf9, 0xa4, 0xf9, 0x08, 0xfa, 0xc2, 0xfa, 0xac, 0xfa, 0xd2, 0xfa, 0x92, 0xfb, 0x5b, 0xfb, + 0xfa, 0xfa, 0x76, 0xfa, 0xc2, 0xf9, 0xbd, 0xf8, 0x43, 0xf8, 0x73, 0xf8, 0xa9, 0xf8, 0xd6, 0xf7, + 0xd5, 0xf6, 0x8b, 0xf6, 0x64, 0xf6, 0x29, 0xf7, 0x8a, 0xf8, 0x8c, 0xfa, 0xb6, 0xfc, 0x6e, 0xff, + 0xaf, 0x01, 0xe3, 0x03, 0xd9, 0x05, 0xad, 0x07, 0xfb, 0x08, 0x6c, 0x0a, 0x46, 0x0c, 0xfe, 0x0d, + 0xf7, 0x0e, 0x8a, 0x0f, 0x96, 0x0f, 0x75, 0x0e, 0xfd, 0x0c, 0xa7, 0x0b, 0x7d, 0x0a, 0xeb, 0x08, + 0x62, 0x07, 0x5a, 0x05, 0x84, 0x03, 0xee, 0x01, 0xf7, 0xff, 0x94, 0xfd, 0xfc, 0xfb, 0x52, 0xfb, + 0x09, 0xfb, 0x60, 0xfb, 0xdf, 0xfb, 0x53, 0xfc, 0x2d, 0xfc, 0x55, 0xfc, 0x85, 0xfc, 0x67, 0xfc, + 0x26, 0xfd, 0x68, 0xfe, 0x81, 0xff, 0x50, 0x01, 0xf5, 0x02, 0xea, 0x03, 0x01, 0x05, 0x31, 0x06, + 0x4e, 0x07, 0x62, 0x07, 0x71, 0x07, 0x22, 0x07, 0x30, 0x06, 0xf4, 0x04, 0xd4, 0x03, 0x9b, 0x02, + 0x28, 0x01, 0x07, 0xff, 0x44, 0xfd, 0xcc, 0xfb, 0x8b, 0xfa, 0x6e, 0xf9, 0x6c, 0xf8, 0x20, 0xf8, + 0x96, 0xf8, 0x43, 0xf9, 0x79, 0xf9, 0x41, 0xfa, 0x6f, 0xfa, 0x23, 0xfa, 0xe8, 0xf9, 0x0c, 0xfa, + 0x81, 0xfa, 0x30, 0xfb, 0x1f, 0xfc, 0xed, 0xfc, 0x3e, 0xfd, 0xbf, 0xfc, 0x08, 0xfd, 0xa6, 0xfd, + 0x93, 0xfd, 0xdb, 0xfd, 0x49, 0xfe, 0xb0, 0xfe, 0x39, 0xff, 0x26, 0xff, 0x44, 0xfe, 0x9d, 0xfd, + 0xcc, 0xfd, 0x47, 0xfe, 0xf1, 0xfe, 0x4b, 0x00, 0x8a, 0x01, 0xe7, 0x01, 0x44, 0x02, 0x53, 0x02, + 0x19, 0x02, 0x12, 0x02, 0xd7, 0x01, 0xb3, 0x01, 0x4a, 0x02, 0xf4, 0x02, 0xf4, 0x02, 0xbe, 0x02, + 0x24, 0x02, 0x5c, 0x01, 0x6c, 0x00, 0x44, 0xff, 0x93, 0xfe, 0xc5, 0xfd, 0x61, 0xfc, 0x44, 0xfb, + 0x8a, 0xfa, 0xe2, 0xf9, 0x1a, 0xf9, 0x8b, 0xf8, 0x3b, 0xf8, 0x2a, 0xf8, 0x07, 0xf9, 0x5a, 0xfa, + 0xeb, 0xfb, 0xa8, 0xfe, 0x46, 0x01, 0x4c, 0x03, 0x7e, 0x05, 0x85, 0x07, 0xc3, 0x08, 0x22, 0x0a, + 0x0c, 0x0c, 0xaf, 0x0d, 0xe1, 0x0e, 0x82, 0x0f, 0x3e, 0x10, 0x4f, 0x10, 0x20, 0x10, 0x9a, 0x0f, + 0xb6, 0x0e, 0xa0, 0x0d, 0x3b, 0x0c, 0x68, 0x0a, 0x40, 0x08, 0x1f, 0x06, 0xf5, 0x03, 0x04, 0x01, + 0x65, 0xfe, 0xa1, 0xfc, 0xec, 0xfa, 0x64, 0xf9, 0x19, 0xf8, 0xac, 0xf6, 0x5d, 0xf5, 0x12, 0xf5, + 0xff, 0xf4, 0x21, 0xf5, 0x24, 0xf5, 0x22, 0xf5, 0x61, 0xf5, 0xd4, 0xf5, 0x2b, 0xf7, 0xf7, 0xf7, + 0x11, 0xf9, 0xf3, 0xf9, 0x7f, 0xfa, 0x86, 0xfa, 0x95, 0xfa, 0xea, 0xfa, 0xa9, 0xfa, 0x73, 0xfa, + 0x63, 0xfa, 0x7c, 0xfa, 0xe9, 0xfa, 0xff, 0xfa, 0xb8, 0xfa, 0x3f, 0xfa, 0xf9, 0xf9, 0xa7, 0xfa, + 0x76, 0xfb, 0xb4, 0xfc, 0xef, 0xfe, 0xb6, 0x00, 0x23, 0x02, 0xc5, 0x03, 0x07, 0x05, 0xa0, 0x05, + 0xa3, 0x05, 0xdb, 0x05, 0xdd, 0x06, 0xb1, 0x07, 0x66, 0x08, 0x14, 0x09, 0x08, 0x09, 0x4c, 0x08, + 0x66, 0x07, 0x5f, 0x06, 0xa4, 0x05, 0x16, 0x05, 0xc3, 0x03, 0x60, 0x02, 0x61, 0x01, 0x3a, 0x00, + 0x7f, 0xfe, 0xc1, 0xfc, 0xd6, 0xfb, 0x87, 0xfb, 0xb7, 0xfb, 0x6e, 0xfc, 0xdc, 0xfc, 0xc5, 0xfd, + 0xe1, 0xfe, 0xab, 0xff, 0x5b, 0x00, 0x40, 0x01, 0x39, 0x02, 0xdb, 0x02, 0x11, 0x04, 0x38, 0x05, + 0x00, 0x06, 0x6c, 0x06, 0xd2, 0x06, 0x1e, 0x07, 0xfe, 0x06, 0xae, 0x06, 0x2a, 0x06, 0x1a, 0x05, + 0xec, 0x03, 0xc4, 0x02, 0xdc, 0x01, 0xe9, 0x00, 0x9d, 0xff, 0x79, 0xfe, 0x67, 0xfd, 0x4b, 0xfc, + 0x61, 0xfb, 0x58, 0xfa, 0x4c, 0xf9, 0x1e, 0xf9, 0x53, 0xf9, 0x16, 0xfa, 0x08, 0xfb, 0xa8, 0xfb, + 0x5d, 0xfc, 0xae, 0xfc, 0x55, 0xfd, 0xf6, 0xfd, 0xe8, 0xfe, 0xe1, 0xff, 0x11, 0x01, 0xee, 0x01, + 0xb6, 0x02, 0x94, 0x02, 0xd8, 0x01, 0x0b, 0x02, 0x8e, 0x01, 0xbb, 0x00, 0x13, 0x00, 0xd9, 0xff, + 0xe1, 0xff, 0xe1, 0xfe, 0x94, 0xfd, 0xa6, 0xfc, 0xb6, 0xfb, 0xe6, 0xfb, 0xa0, 0xfc, 0x5d, 0xfd, + 0x31, 0xfe, 0x93, 0xfe, 0x02, 0xff, 0x8a, 0xff, 0x5d, 0x00, 0xf9, 0x00, 0x09, 0x01, 0x53, 0x01, + 0xd3, 0x01, 0x94, 0x02, 0xe8, 0x02, 0x07, 0x03, 0x1e, 0x03, 0x38, 0x02, 0x0a, 0x01, 0x62, 0x00, + 0x00, 0x00, 0x20, 0xff, 0x5a, 0xfe, 0xaa, 0xfd, 0xc6, 0xfc, 0x21, 0xfc, 0x0d, 0xfb, 0xe0, 0xf9, + 0x43, 0xf9, 0x29, 0xf9, 0xc5, 0xf8, 0xf3, 0xf8, 0xa0, 0xf9, 0xc4, 0xfa, 0x81, 0xfc, 0x1a, 0xfe, + 0x26, 0x00, 0xe8, 0x01, 0x47, 0x03, 0x11, 0x05, 0xdb, 0x06, 0x87, 0x08, 0x0c, 0x0a, 0x44, 0x0b, + 0x62, 0x0c, 0x7d, 0x0d, 0x26, 0x0e, 0x9f, 0x0d, 0xcc, 0x0c, 0xe0, 0x0b, 0x52, 0x0a, 0x9d, 0x08, + 0xea, 0x06, 0x10, 0x05, 0xb6, 0x02, 0x6d, 0x00, 0x3a, 0xfe, 0x33, 0xfc, 0xd8, 0xfa, 0x0f, 0xfa, + 0xf7, 0xf8, 0xfa, 0xf7, 0x6d, 0xf7, 0xf1, 0xf6, 0xe3, 0xf6, 0x06, 0xf7, 0xe4, 0xf6, 0x9b, 0xf6, + 0x75, 0xf6, 0x5a, 0xf6, 0x01, 0xf7, 0xc1, 0xf7, 0xd5, 0xf8, 0xdc, 0xf9, 0xb1, 0xfa, 0xf2, 0xfa, + 0x1c, 0xfb, 0x8c, 0xfb, 0x6f, 0xfb, 0x8f, 0xfb, 0xe2, 0xfb, 0x6d, 0xfc, 0x4d, 0xfd, 0xbd, 0xfd, + 0x60, 0xfd, 0x62, 0xfd, 0x69, 0xfd, 0x77, 0xfd, 0x23, 0xfe, 0x62, 0xff, 0x0b, 0x01, 0x78, 0x02, + 0x05, 0x04, 0x8e, 0x05, 0x2e, 0x07, 0x98, 0x08, 0x8a, 0x09, 0x0e, 0x0a, 0x91, 0x0a, 0x43, 0x0b, + 0x96, 0x0b, 0x96, 0x0b, 0x83, 0x0b, 0xf4, 0x0a, 0x5c, 0x09, 0x74, 0x07, 0xf8, 0x05, 0x91, 0x04, + 0xd2, 0x02, 0x91, 0x01, 0x37, 0x00, 0xdc, 0xfe, 0x2b, 0xfd, 0x5d, 0xfb, 0x0f, 0xfa, 0x94, 0xf9, + 0xc6, 0xf9, 0x03, 0xfa, 0x7a, 0xfa, 0x09, 0xfb, 0xdf, 0xfb, 0x6a, 0xfc, 0xfa, 0xfc, 0xef, 0xfd, + 0xb8, 0xfe, 0x6c, 0xff, 0x76, 0x00, 0x08, 0x02, 0x75, 0x03, 0x98, 0x04, 0x79, 0x05, 0xab, 0x06, + 0x8c, 0x07, 0x31, 0x08, 0x40, 0x08, 0x97, 0x07, 0xf5, 0x06, 0xfc, 0x05, 0x8d, 0x04, 0x4c, 0x03, + 0xe9, 0x01, 0x54, 0x00, 0xac, 0xfe, 0x32, 0xfd, 0xdc, 0xfb, 0xbf, 0xfa, 0xd9, 0xf9, 0xff, 0xf8, + 0xb2, 0xf8, 0xf0, 0xf8, 0xad, 0xf9, 0x6e, 0xfa, 0xf7, 0xfa, 0x9f, 0xfb, 0xca, 0xfb, 0xdf, 0xfb, + 0x31, 0xfc, 0xb3, 0xfc, 0x7c, 0xfd, 0x9d, 0xfe, 0xbe, 0xff, 0xe0, 0xff, 0x37, 0xff, 0xf7, 0xfe, + 0x8d, 0xfe, 0xf3, 0xfd, 0xae, 0xfd, 0x89, 0xfd, 0xa6, 0xfd, 0x7b, 0xfd, 0xb3, 0xfc, 0xb4, 0xfb, + 0x30, 0xfb, 0x23, 0xfb, 0x98, 0xfb, 0x5f, 0xfc, 0xae, 0xfd, 0x67, 0xfe, 0xa5, 0xfe, 0xef, 0xfe, + 0x7e, 0xff, 0x4c, 0x00, 0xe6, 0x00, 0x6b, 0x01, 0xe9, 0x01, 0xa9, 0x02, 0x1d, 0x03, 0x4a, 0x03, + 0x91, 0x03, 0xbc, 0x03, 0x2f, 0x03, 0x47, 0x02, 0x30, 0x01, 0x4d, 0x00, 0x22, 0xff, 0xdc, 0xfd, + 0x1b, 0xfd, 0x45, 0xfc, 0x20, 0xfb, 0x06, 0xfa, 0xa8, 0xf9, 0x5b, 0xf9, 0x3d, 0xf9, 0xd0, 0xf9, + 0xd5, 0xfa, 0x1a, 0xfc, 0x48, 0xfe, 0xbf, 0x00, 0xb4, 0x02, 0x17, 0x05, 0x3b, 0x07, 0xae, 0x08, + 0x0c, 0x0a, 0x21, 0x0b, 0x35, 0x0c, 0xd2, 0x0c, 0x69, 0x0d, 0xa6, 0x0e, 0x25, 0x0f, 0x67, 0x0f, + 0xe0, 0x0e, 0x03, 0x0e, 0xab, 0x0c, 0xd1, 0x0a, 0x2f, 0x09, 0xbf, 0x07, 0x06, 0x06, 0xa5, 0x03, + 0xe7, 0x00, 0xa6, 0xfe, 0xaf, 0xfc, 0x07, 0xfb, 0x02, 0xfa, 0xb7, 0xf8, 0xae, 0xf7, 0xe0, 0xf6, + 0x77, 0xf6, 0x3f, 0xf6, 0x41, 0xf6, 0x48, 0xf6, 0x5c, 0xf6, 0x58, 0xf6, 0x71, 0xf6, 0x40, 0xf7, + 0x24, 0xf8, 0xe2, 0xf8, 0xd0, 0xf9, 0x6a, 0xfa, 0x2d, 0xfa, 0x1f, 0xfa, 0x38, 0xfa, 0xe6, 0xf9, + 0xa7, 0xf9, 0xdc, 0xf9, 0x7a, 0xfa, 0xb9, 0xfa, 0x1c, 0xfb, 0x6e, 0xfb, 0x28, 0xfb, 0xf3, 0xfa, + 0xcc, 0xfb, 0xa0, 0xfc, 0x20, 0xfe, 0xfa, 0xff, 0xa5, 0x01, 0x34, 0x03, 0xd9, 0x04, 0x61, 0x06, + 0x7c, 0x07, 0x4e, 0x08, 0x08, 0x09, 0xa4, 0x09, 0xbd, 0x09, 0xd1, 0x09, 0x27, 0x0a, 0x28, 0x0a, + 0x3e, 0x09, 0x6f, 0x08, 0x42, 0x07, 0xc2, 0x05, 0x66, 0x04, 0xb5, 0x02, 0x1f, 0x01, 0xf7, 0xff, + 0x35, 0xfe, 0x17, 0xfc, 0x6b, 0xfa, 0x2f, 0xf9, 0x80, 0xf8, 0x73, 0xf8, 0x05, 0xf9, 0x92, 0xf9, + 0xad, 0xfa, 0xac, 0xfb, 0x8f, 0xfc, 0xbe, 0xfd, 0x13, 0xff, 0x48, 0x00, 0x85, 0x01, 0xeb, 0x02, + 0x83, 0x04, 0xa8, 0x05, 0x27, 0x06, 0x33, 0x07, 0xf3, 0x07, 0x47, 0x08, 0x69, 0x08, 0x02, 0x08, + 0xe6, 0x06, 0x88, 0x05, 0x31, 0x04, 0x5d, 0x03, 0x48, 0x02, 0xff, 0x00, 0xcf, 0xff, 0x61, 0xfe, + 0xf7, 0xfc, 0xc1, 0xfb, 0xa8, 0xfa, 0x5f, 0xf9, 0x22, 0xf9, 0xef, 0xf8, 0x41, 0xf9, 0x1c, 0xfa, + 0xf2, 0xfa, 0xa4, 0xfb, 0x1e, 0xfc, 0xaf, 0xfc, 0x36, 0xfd, 0x18, 0xfe, 0x13, 0xff, 0x23, 0x00, + 0x11, 0x01, 0xc8, 0x01, 0x03, 0x02, 0xe8, 0x01, 0xb6, 0x01, 0xa3, 0x01, 0xf3, 0x00, 0x61, 0x00, + 0x1e, 0x00, 0xc8, 0xff, 0x4d, 0xff, 0x77, 0xfe, 0x77, 0xfd, 0xd3, 0xfc, 0xd7, 0xfc, 0x64, 0xfd, + 0x43, 0xfe, 0x0e, 0xff, 0xc7, 0xff, 0x5c, 0x00, 0xcc, 0x00, 0x82, 0x01, 0x56, 0x02, 0xc2, 0x02, + 0x0e, 0x03, 0x96, 0x03, 0xe1, 0x03, 0x57, 0x03, 0x22, 0x03, 0x17, 0x03, 0x47, 0x02, 0xc4, 0x01, + 0x1d, 0x01, 0xdf, 0xff, 0xea, 0xfe, 0xc9, 0xfd, 0xdc, 0xfc, 0x1f, 0xfc, 0x79, 0xfb, 0x03, 0xfb, + 0x47, 0xfa, 0xf3, 0xf9, 0xd7, 0xf9, 0x75, 0xf9, 0xb7, 0xf9, 0x9f, 0xfa, 0xe7, 0xfb, 0x5b, 0xfd, + 0x5e, 0xff, 0xa1, 0x01, 0x4e, 0x03, 0x22, 0x05, 0x94, 0x06, 0xdd, 0x07, 0x87, 0x09, 0xc3, 0x0a, + 0x85, 0x0b, 0x56, 0x0c, 0x13, 0x0d, 0x34, 0x0d, 0xcd, 0x0c, 0x13, 0x0c, 0xaa, 0x0a, 0xa9, 0x08, + 0x8f, 0x06, 0x0c, 0x05, 0x96, 0x03, 0x80, 0x01, 0xa8, 0xff, 0xc9, 0xfd, 0x42, 0xfc, 0xfe, 0xfa, + 0x57, 0xfa, 0xb9, 0xf9, 0x0c, 0xf9, 0xcb, 0xf8, 0xbb, 0xf8, 0xad, 0xf8, 0xd9, 0xf8, 0x10, 0xf9, + 0xb6, 0xf8, 0xa9, 0xf8, 0xcd, 0xf8, 0x73, 0xf9, 0x5a, 0xfa, 0xf8, 0xfa, 0xce, 0xfb, 0x93, 0xfc, + 0xb8, 0xfc, 0x87, 0xfc, 0x79, 0xfc, 0xf3, 0xfb, 0xff, 0xfb, 0xa5, 0xfb, 0x6f, 0xfb, 0x74, 0xfb, + 0xa4, 0xfb, 0x8e, 0xfb, 0x57, 0xfb, 0x13, 0xfb, 0x35, 0xfb, 0xce, 0xfb, 0x7d, 0xfc, 0xc1, 0xfd, + 0x38, 0xff, 0xdb, 0x00, 0xa3, 0x02, 0x5b, 0x04, 0x1d, 0x06, 0x8e, 0x07, 0x5f, 0x08, 0x20, 0x09, + 0x09, 0x0a, 0x29, 0x0a, 0x3f, 0x0a, 0xae, 0x0a, 0x22, 0x0a, 0x77, 0x09, 0xca, 0x08, 0x9f, 0x07, + 0x01, 0x06, 0x17, 0x04, 0x22, 0x02, 0xc5, 0x00, 0x5c, 0xff, 0xe6, 0xfd, 0x6b, 0xfc, 0xcb, 0xfa, + 0x1f, 0xfa, 0xaf, 0xf9, 0xf6, 0xf9, 0x41, 0xfa, 0xb7, 0xfa, 0xa1, 0xfb, 0x7e, 0xfc, 0x6f, 0xfd, + 0x4f, 0xfe, 0xbf, 0xfe, 0x49, 0xff, 0x95, 0x00, 0x73, 0x02, 0xf6, 0x03, 0xe2, 0x04, 0xf3, 0x05, + 0x17, 0x07, 0xf7, 0x07, 0x85, 0x08, 0x53, 0x08, 0xfc, 0x07, 0x41, 0x07, 0xf4, 0x05, 0x67, 0x04, + 0x63, 0x03, 0xe7, 0x01, 0x1b, 0x00, 0x97, 0xfe, 0x34, 0xfd, 0xa3, 0xfb, 0x10, 0xfa, 0xd8, 0xf8, + 0xb8, 0xf7, 0x49, 0xf7, 0xc9, 0xf7, 0xea, 0xf8, 0xa9, 0xf9, 0x86, 0xfa, 0xe9, 0xfa, 0x54, 0xfb, + 0x57, 0xfb, 0xe7, 0xfb, 0x93, 0xfc, 0xee, 0xfc, 0xd8, 0xfd, 0x29, 0xfe, 0x2c, 0xfe, 0xe8, 0xfd, + 0xf9, 0xfd, 0x09, 0xfe, 0x65, 0xfd, 0xef, 0xfc, 0xa7, 0xfc, 0x52, 0xfc, 0xfd, 0xfb, 0x4e, 0xfb, + 0xf9, 0xfa, 0x8f, 0xfa, 0xfb, 0xfa, 0xd7, 0xfb, 0xbb, 0xfc, 0xf3, 0xfd, 0x16, 0xff, 0x38, 0x00, + 0x37, 0x01, 0x81, 0x02, 0x38, 0x03, 0x26, 0x04, 0xf0, 0x04, 0x6a, 0x05, 0x8f, 0x06, 0x20, 0x07, + 0x30, 0x07, 0x4e, 0x07, 0xd5, 0x06, 0xe7, 0x05, 0xe6, 0x04, 0xd5, 0x03, 0x90, 0x02, 0xb0, 0x00, + 0xc1, 0xfe, 0x52, 0xfd, 0x0f, 0xfc, 0xa1, 0xfa, 0xa8, 0xf9, 0x3f, 0xf9, 0xe8, 0xf8, 0xaf, 0xf8, + 0xd1, 0xf8, 0x38, 0xf9, 0xb4, 0xf9, 0x30, 0xfb, 0x5e, 0xfd, 0xb6, 0xff, 0x04, 0x02, 0x21, 0x04, + 0x92, 0x05, 0xe4, 0x06, 0x70, 0x08, 0xe9, 0x09, 0xfa, 0x0a, 0x53, 0x0c, 0xa8, 0x0d, 0x44, 0x0e, + 0xbc, 0x0e, 0xc4, 0x0e, 0x2e, 0x0e, 0xd6, 0x0c, 0x50, 0x0b, 0xd9, 0x09, 0x56, 0x08, 0x61, 0x06, + 0x17, 0x04, 0xbe, 0x01, 0x71, 0xff, 0x53, 0xfd, 0x9b, 0xfb, 0xb6, 0xf9, 0x09, 0xf8, 0xcf, 0xf6, + 0xd5, 0xf5, 0x78, 0xf5, 0x4f, 0xf5, 0x59, 0xf5, 0x26, 0xf5, 0xc5, 0xf4, 0x07, 0xf5, 0xb8, 0xf5, + 0x99, 0xf6, 0xb0, 0xf7, 0xde, 0xf8, 0x34, 0xfa, 0x0e, 0xfb, 0x0e, 0xfb, 0xa9, 0xfb, 0x5e, 0xfc, + 0x8b, 0xfc, 0x6d, 0xfc, 0x96, 0xfc, 0xe0, 0xfc, 0xe7, 0xfc, 0xfc, 0xfc, 0x45, 0xfd, 0x64, 0xfd, + 0xa5, 0xfd, 0x6f, 0xfe, 0x91, 0xfe, 0xf1, 0xfe, 0xdc, 0xff, 0x0e, 0x01, 0x6c, 0x02, 0x09, 0x04, + 0x58, 0x05, 0x57, 0x06, 0xc8, 0x06, 0xee, 0x06, 0x27, 0x07, 0xb5, 0x07, 0xdc, 0x07, 0xb9, 0x07, + 0xa6, 0x07, 0x14, 0x07, 0x80, 0x06, 0xbd, 0x05, 0x7e, 0x04, 0xfc, 0x02, 0x63, 0x01, 0x0e, 0x00, + 0x7a, 0xfe, 0xc3, 0xfc, 0xb3, 0xfa, 0x38, 0xf9, 0x6c, 0xf8, 0xb5, 0xf7, 0xaa, 0xf7, 0x42, 0xf8, + 0xb7, 0xf8, 0xa5, 0xf9, 0xf2, 0xfa, 0x74, 0xfc, 0xde, 0xfd, 0xb3, 0xfe, 0xd3, 0xff, 0x1d, 0x01, + 0x87, 0x02, 0x5d, 0x04, 0x60, 0x05, 0x44, 0x06, 0x6c, 0x07, 0xf6, 0x07, 0x27, 0x08, 0xbf, 0x07, + 0xbb, 0x07, 0x43, 0x07, 0xd7, 0x05, 0xaf, 0x04, 0xc6, 0x03, 0x6a, 0x02, 0x58, 0x01, 0x6d, 0x00, + 0x3b, 0xff, 0xf6, 0xfd, 0x04, 0xfd, 0xd9, 0xfb, 0xc7, 0xfa, 0x53, 0xfa, 0x01, 0xfa, 0x59, 0xfa, + 0x9d, 0xfb, 0xeb, 0xfc, 0xdd, 0xfd, 0x5d, 0xfe, 0xa3, 0xfe, 0x05, 0xff, 0xb4, 0xff, 0xae, 0x00, + 0x97, 0x01, 0x86, 0x02, 0xe6, 0x02, 0x94, 0x02, 0x36, 0x02, 0xf5, 0x01, 0x53, 0x01, 0xa7, 0x00, + 0xab, 0xff, 0xfc, 0xfe, 0x75, 0xfe, 0x3f, 0xfd, 0x28, 0xfc, 0x32, 0xfb, 0xfe, 0xfa, 0x71, 0xfb, + 0x2e, 0xfc, 0x6f, 0xfc, 0xc0, 0xfc, 0x93, 0xfd, 0x90, 0xfe, 0x99, 0xff, 0x6f, 0x00, 0xae, 0x01, + 0x1c, 0x02, 0x36, 0x02, 0xf9, 0x02, 0x6c, 0x03, 0x81, 0x03, 0xd2, 0x03, 0x09, 0x04, 0xc4, 0x03, + 0x34, 0x03, 0xd6, 0x02, 0xf7, 0x01, 0xdb, 0x00, 0x14, 0x00, 0x33, 0xff, 0x5b, 0xfe, 0x88, 0xfd, + 0xe2, 0xfc, 0x22, 0xfc, 0xb4, 0xfb, 0x9d, 0xfb, 0x30, 0xfb, 0xd6, 0xfa, 0x17, 0xfb, 0xca, 0xfb, + 0xb4, 0xfc, 0xbe, 0xfe, 0xde, 0x00, 0x8f, 0x02, 0x25, 0x04, 0x7e, 0x05, 0xce, 0x06, 0x3e, 0x08, + 0x83, 0x09, 0xf5, 0x09, 0x3c, 0x0b, 0x33, 0x0c, 0x7d, 0x0c, 0x55, 0x0c, 0xb8, 0x0b, 0x12, 0x0b, + 0x94, 0x09, 0xcf, 0x07, 0x70, 0x06, 0xf1, 0x04, 0x9d, 0x02, 0x5c, 0x00, 0x58, 0xfe, 0x9a, 0xfc, + 0x55, 0xfb, 0x09, 0xfa, 0x10, 0xf9, 0x2f, 0xf8, 0x78, 0xf7, 0x3c, 0xf7, 0x1e, 0xf7, 0xfa, 0xf6, + 0x57, 0xf7, 0x1f, 0xf7, 0xa2, 0xf6, 0x08, 0xf7, 0xd4, 0xf7, 0x52, 0xf8, 0xe1, 0xf8, 0x46, 0xfa, + 0x42, 0xfb, 0xb8, 0xfb, 0xcd, 0xfb, 0x76, 0xfb, 0xa2, 0xfb, 0x68, 0xfb, 0x0e, 0xfb, 0x13, 0xfb, + 0x0a, 0xfb, 0x19, 0xfb, 0x28, 0xfb, 0x21, 0xfb, 0xc6, 0xfb, 0x98, 0xfc, 0x45, 0xfd, 0x02, 0xfe, + 0x46, 0xfe, 0x3e, 0xff, 0x86, 0x01, 0xce, 0x03, 0x2f, 0x06, 0x8d, 0x08, 0x85, 0x0a, 0x77, 0x0b, + 0x75, 0x0c, 0x20, 0x0d, 0x4c, 0x0d, 0x98, 0x0d, 0x4c, 0x0d, 0x41, 0x0d, 0x77, 0x0c, 0xbc, 0x0a, + 0xcf, 0x08, 0x0f, 0x07, 0x2c, 0x05, 0x46, 0x03, 0x61, 0x01, 0xeb, 0xff, 0xc4, 0xfd, 0xc6, 0xfb, + 0x46, 0xfa, 0xf4, 0xf8, 0x1d, 0xf8, 0xbb, 0xf7, 0x9b, 0xf7, 0xe4, 0xf7, 0xd2, 0xf8, 0xca, 0xf9, + 0x08, 0xfb, 0x30, 0xfc, 0x09, 0xfd, 0xad, 0xfd, 0x0a, 0xff, 0xc9, 0x00, 0xd9, 0x01, 0x58, 0x03, + 0x4e, 0x05, 0x32, 0x06, 0x57, 0x07, 0x43, 0x08, 0x83, 0x07, 0x3f, 0x07, 0xa0, 0x06, 0xa3, 0x05, + 0x63, 0x04, 0x1c, 0x03, 0x8f, 0x01, 0xe2, 0xff, 0x88, 0xfe, 0xec, 0xfc, 0x7f, 0xfb, 0x37, 0xfa, + 0xe4, 0xf8, 0x2d, 0xf8, 0x79, 0xf7, 0x4b, 0xf7, 0xe0, 0xf7, 0xcc, 0xf8, 0xf3, 0xf9, 0x95, 0xfa, + 0x70, 0xfb, 0x0a, 0xfc, 0x61, 0xfc, 0x1c, 0xfd, 0x94, 0xfd, 0x0a, 0xfe, 0xf0, 0xfe, 0x6a, 0xff, + 0xb9, 0xff, 0x12, 0x00, 0xd3, 0xff, 0x1b, 0xff, 0xad, 0xfe, 0xb4, 0xfe, 0x8c, 0xfe, 0x3f, 0xfe, + 0x6c, 0xfd, 0xda, 0xfc, 0xc6, 0xfc, 0x5d, 0xfd, 0x5a, 0xfd, 0xd8, 0xfd, 0x24, 0xfe, 0xd8, 0xfe, + 0x7f, 0xff, 0x82, 0x00, 0x79, 0x01, 0x1c, 0x02, 0xdb, 0x02, 0x35, 0x03, 0x21, 0x04, 0x0e, 0x04, + 0x1b, 0x04, 0x57, 0x04, 0xac, 0x04, 0xa9, 0x04, 0x48, 0x04, 0xad, 0x03, 0xad, 0x02, 0x89, 0x01, + 0xab, 0xff, 0xef, 0xfd, 0xe7, 0xfc, 0xc4, 0xfb, 0x6f, 0xfa, 0xd4, 0xf9, 0x52, 0xf9, 0x54, 0xf9, + 0x84, 0xf9, 0x65, 0xf9, 0x35, 0xfa, 0xdd, 0xfa, 0x1c, 0xfc, 0xdf, 0xfd, 0xb7, 0xff, 0x5f, 0x02, + 0x22, 0x04, 0x2f, 0x06, 0xbc, 0x07, 0x77, 0x09, 0x14, 0x0b, 0x27, 0x0c, 0x8c, 0x0d, 0x2b, 0x0e, + 0xc5, 0x0e, 0x34, 0x0f, 0x11, 0x0f, 0xc0, 0x0e, 0xc2, 0x0d, 0x09, 0x0c, 0x76, 0x0a, 0x16, 0x09, + 0x1e, 0x07, 0xcd, 0x04, 0x0e, 0x03, 0xcd, 0x00, 0x05, 0xfe, 0xfe, 0xfb, 0x40, 0xfa, 0x69, 0xf8, + 0x17, 0xf7, 0x11, 0xf6, 0xd9, 0xf5, 0xad, 0xf5, 0x27, 0xf5, 0x5e, 0xf4, 0xf0, 0xf4, 0xde, 0xf5, + 0xa9, 0xf5, 0x1b, 0xf6, 0x41, 0xf6, 0xdf, 0xf7, 0xf2, 0xf9, 0xb4, 0xfa, 0xa1, 0xfa, 0x65, 0xfb, + 0x22, 0xfc, 0xc6, 0xfb, 0x14, 0xfb, 0x15, 0xfb, 0x22, 0xfb, 0x99, 0xfa, 0x1d, 0xfa, 0x47, 0xfa, + 0x22, 0xfb, 0xab, 0xfb, 0x89, 0xfc, 0x11, 0xfd, 0x17, 0xfe, 0xc4, 0xfe, 0x1b, 0xff, 0x12, 0x01, + 0xee, 0x02, 0x1c, 0x05, 0x63, 0x06, 0xc1, 0x07, 0x20, 0x08, 0x52, 0x08, 0x68, 0x07, 0x57, 0x08, + 0xf4, 0x08, 0xdb, 0x0b, 0x7e, 0x0c, 0x48, 0x0d, 0xcf, 0x0b, 0xa4, 0x0a, 0x9f, 0x06, 0x50, 0x04, + 0xab, 0x02, 0x92, 0xff, 0xc3, 0xff, 0x65, 0xfd, 0x4b, 0xfc, 0x94, 0xf9, 0x8c, 0xf7, 0xed, 0xf5, + 0x09, 0xf6, 0xb9, 0xf4, 0x96, 0xf4, 0x4e, 0xf5, 0x0a, 0xf7, 0x9a, 0xf7, 0x37, 0xf7, 0x43, 0xf7, + 0xb5, 0xf9, 0x5c, 0xfb, 0x62, 0xfc, 0xc1, 0xfe, 0xf4, 0xff, 0x34, 0x02, 0x6c, 0x03, 0x25, 0x04, + 0x7b, 0x05, 0x23, 0x07, 0xd7, 0x05, 0x1f, 0x06, 0x17, 0x06, 0xc1, 0x06, 0x3a, 0x07, 0x9d, 0x08, + 0x84, 0x0a, 0xf0, 0x0b, 0x42, 0x0b, 0x1f, 0x0b, 0xaa, 0x0b, 0xe8, 0x0a, 0x7e, 0x0b, 0x36, 0x0b, + 0x70, 0x0b, 0x11, 0x0b, 0xc7, 0x09, 0x84, 0x08, 0x3e, 0x07, 0xa7, 0x05, 0x2d, 0x04, 0xf4, 0x01, + 0x22, 0x01, 0x1a, 0x00, 0x46, 0xff, 0x6c, 0xfd, 0xbd, 0xfe, 0x01, 0xfe, 0x64, 0xfb, 0xf8, 0xfa, + 0xa8, 0xf9, 0x65, 0xf9, 0x60, 0xf9, 0x31, 0xf8, 0x8e, 0xf7, 0xd2, 0xf7, 0x94, 0xf5, 0x97, 0xf5, + 0xdb, 0xf4, 0x30, 0xf5, 0x27, 0xf5, 0xf5, 0xf7, 0x4b, 0xfa, 0xab, 0xfc, 0x16, 0xfe, 0x26, 0xff, + 0x7e, 0x02, 0x40, 0x03, 0x76, 0x06, 0xd9, 0x07, 0x0e, 0x0a, 0xf2, 0x0a, 0x3b, 0x09, 0x46, 0x07, + 0xfa, 0x05, 0x29, 0x04, 0x92, 0x01, 0xec, 0xfd, 0x32, 0xfa, 0xc4, 0xf7, 0xab, 0xf4, 0x95, 0xf1, + 0xa1, 0xf1, 0xa8, 0xf1, 0x12, 0xf0, 0x2b, 0xf0, 0x73, 0xef, 0xb6, 0xef, 0x3a, 0xf1, 0x1b, 0xf1, + 0xd4, 0xf0, 0x2c, 0xf3, 0x5d, 0xf4, 0xa2, 0xf5, 0xdc, 0xf7, 0x8d, 0xf9, 0x05, 0xfc, 0x9a, 0xff, + 0x48, 0x02, 0x2a, 0x05, 0xc7, 0x07, 0x1b, 0x0a, 0x13, 0x0c, 0x30, 0x0e, 0x24, 0x12, 0x09, 0x15, + 0x11, 0x16, 0x82, 0x15, 0x44, 0x13, 0x5f, 0x10, 0x7c, 0x0e, 0x6f, 0x0b, 0x89, 0x09, 0x61, 0x05, + 0x46, 0x01, 0x6f, 0xfe, 0xd8, 0xfa, 0x99, 0xf7, 0xe6, 0xf5, 0x67, 0xf6, 0x39, 0xf6, 0xc4, 0xf4, + 0xf1, 0xf3, 0x2d, 0xf4, 0x27, 0xf5, 0xe9, 0xf4, 0xc5, 0xf4, 0x8d, 0xf5, 0xd8, 0xf7, 0x8b, 0xf9, + 0xf5, 0xf8, 0xa2, 0xf8, 0x34, 0xfa, 0xf7, 0xfc, 0x55, 0xfe, 0x20, 0xff, 0x14, 0x00, 0x93, 0xff, + 0x73, 0xff, 0xed, 0xff, 0x72, 0x00, 0x17, 0x03, 0x91, 0x07, 0xe0, 0x08, 0x03, 0x09, 0x97, 0x09, + 0xfa, 0x09, 0x40, 0x08, 0x56, 0x09, 0x98, 0x08, 0xd8, 0x07, 0x9b, 0x06, 0x11, 0x08, 0x77, 0x07, + 0x7b, 0x06, 0xf4, 0x07, 0xe7, 0x06, 0x20, 0x06, 0x47, 0x05, 0xf1, 0x05, 0x86, 0x05, 0x82, 0x06, + 0xe0, 0x05, 0xd0, 0x05, 0x52, 0x05, 0x93, 0x04, 0xc0, 0x02, 0x7c, 0xff, 0xfc, 0xff, 0xf2, 0xff, + 0xfe, 0xff, 0x3e, 0xff, 0x99, 0xfe, 0x6d, 0xfd, 0xa2, 0xfe, 0x70, 0xfe, 0xa2, 0xff, 0x51, 0x04, + 0x2a, 0x09, 0x78, 0x0a, 0xbf, 0x0a, 0xaa, 0x0b, 0xad, 0x0c, 0x49, 0x0d, 0x9a, 0x0e, 0xc8, 0x0d, + 0x33, 0x0c, 0xe4, 0x0b, 0xd8, 0x0a, 0x8e, 0x09, 0x6b, 0x02, 0x09, 0x09, 0x4c, 0x07, 0x4f, 0x02, + 0xb9, 0x03, 0x2f, 0x00, 0x33, 0xfd, 0x2f, 0xfe, 0x71, 0xfc, 0xe5, 0xfc, 0x14, 0xfd, 0xf7, 0xfb, + 0xd9, 0xfb, 0x44, 0xfb, 0x32, 0xf8, 0xc6, 0xf5, 0x08, 0xf9, 0x96, 0xf6, 0xd3, 0xf4, 0xb5, 0xf5, + 0x6d, 0xf8, 0xd4, 0xf6, 0xbb, 0xf7, 0x25, 0xfa, 0x91, 0xf9, 0x6d, 0xfb, 0xb3, 0x01, 0x14, 0x00, + 0x0a, 0xfd, 0xfc, 0xfe, 0x47, 0xfe, 0x7f, 0xfa, 0x70, 0xf8, 0x27, 0xf8, 0xaf, 0xf2, 0x2b, 0xee, + 0x98, 0xed, 0xbe, 0xeb, 0x0e, 0xeb, 0x4e, 0xea, 0xc8, 0xe9, 0x25, 0xe8, 0x2a, 0xe9, 0xc8, 0xeb, + 0xda, 0xeb, 0x5e, 0xee, 0xe6, 0xf3, 0x73, 0xf6, 0xbe, 0xf8, 0x38, 0xf9, 0x08, 0xfb, 0x0a, 0xfb, + 0x54, 0xfe, 0x27, 0x01, 0xf5, 0x02, 0x88, 0x02, 0x68, 0x05, 0x35, 0x03, 0x83, 0x01, 0xda, 0x04, + 0xb2, 0x07, 0x4d, 0x09, 0xa5, 0x0d, 0x78, 0x0b, 0x42, 0x09, 0x36, 0x0a, 0x06, 0x08, 0xdf, 0x03, + 0xd5, 0x01, 0x46, 0x00, 0xb8, 0xff, 0x46, 0xfc, 0x6e, 0xf8, 0x28, 0xf9, 0x92, 0xf9, 0xe5, 0xf5, + 0x99, 0xf6, 0x7f, 0xf7, 0x1f, 0xf9, 0x20, 0xfc, 0x6f, 0xff, 0xf1, 0x01, 0x34, 0x05, 0x47, 0x06, + 0xcd, 0x0b, 0x95, 0x09, 0x78, 0x0b, 0x2a, 0x0e, 0x98, 0x0d, 0x26, 0x0a, 0xfa, 0x0c, 0x36, 0x08, + 0x37, 0x05, 0x33, 0x08, 0x98, 0x06, 0x69, 0x02, 0xd4, 0x04, 0x9e, 0x04, 0x05, 0x05, 0x0f, 0x05, + 0x31, 0x06, 0xa8, 0x04, 0xa4, 0x04, 0x7f, 0x03, 0xfd, 0x00, 0x81, 0xff, 0x58, 0xff, 0x87, 0xfd, + 0x47, 0xfa, 0x95, 0xf8, 0xaa, 0xf6, 0x2a, 0xf6, 0xf7, 0xf4, 0xa0, 0xf4, 0x76, 0xf6, 0xb2, 0xf4, + 0x19, 0xf5, 0x49, 0xf6, 0xf0, 0xfb, 0xc5, 0xfd, 0xd6, 0x00, 0x29, 0x03, 0xc9, 0x00, 0xec, 0xfe, + 0x48, 0x04, 0x27, 0x06, 0xc3, 0x07, 0x4b, 0x0a, 0x4e, 0x09, 0x28, 0x0a, 0x24, 0x0c, 0x68, 0x0d, + 0xd8, 0x0e, 0x7e, 0x13, 0x81, 0x17, 0x8b, 0x17, 0xec, 0x19, 0x7b, 0x1c, 0x6f, 0x1b, 0x60, 0x1a, + 0x17, 0x18, 0x19, 0x15, 0x15, 0x15, 0xd5, 0x11, 0xe1, 0x0c, 0x19, 0x0a, 0x32, 0x06, 0xad, 0x00, + 0xd2, 0x00, 0x40, 0xfe, 0xc2, 0xfa, 0x58, 0xf8, 0x0c, 0xf8, 0x26, 0xf5, 0xb6, 0xf5, 0x4a, 0xf5, + 0x1a, 0xf4, 0x1a, 0xf6, 0x0e, 0xf6, 0x92, 0xf6, 0xa0, 0xf7, 0x9c, 0xfa, 0x1a, 0xfc, 0xf4, 0xfc, + 0x83, 0x00, 0xee, 0xff, 0x07, 0x03, 0xfd, 0x05, 0xe6, 0x02, 0x19, 0x07, 0xb4, 0x0c, 0xb2, 0x0c, + 0x4c, 0x0c, 0x5f, 0x0e, 0xf7, 0x0b, 0x56, 0x0a, 0x7a, 0x08, 0xfa, 0x06, 0xa2, 0x04, 0x84, 0xfa, + 0x21, 0xf9, 0x45, 0xf5, 0x88, 0xf0, 0xa5, 0xf0, 0x42, 0xec, 0x5e, 0xea, 0x3f, 0xe9, 0xf6, 0xe7, + 0xa2, 0xe8, 0x9b, 0xe7, 0x26, 0xe9, 0xde, 0xee, 0x85, 0xf1, 0x02, 0xf4, 0x5a, 0xfb, 0xc8, 0xfa, + 0x4d, 0xfe, 0xc7, 0x00, 0xe8, 0xff, 0xc2, 0x06, 0x74, 0x08, 0x9a, 0x08, 0x0c, 0x0a, 0x93, 0x05, + 0xa4, 0x02, 0xe4, 0x07, 0xab, 0x0a, 0x04, 0x0d, 0xb4, 0x0c, 0x2f, 0x0a, 0x2c, 0x07, 0x84, 0x03, + 0x4e, 0x02, 0xbc, 0x01, 0xc4, 0x00, 0xdf, 0xfd, 0xb5, 0xf6, 0xb8, 0xf2, 0x4c, 0xf3, 0xae, 0xf3, + 0xd0, 0xf2, 0x65, 0xf2, 0x8e, 0xee, 0xe7, 0xed, 0xc0, 0xf2, 0x30, 0xf2, 0xf3, 0xf2, 0x8f, 0xf2, + 0x6d, 0xf3, 0xc2, 0xf3, 0x98, 0xf3, 0x02, 0xfa, 0xc9, 0xf7, 0x9b, 0xf5, 0xa7, 0xf5, 0xe3, 0xf5, + 0x9b, 0xf1, 0xf3, 0xf2, 0xe6, 0xf4, 0x93, 0xf2, 0x06, 0xee, 0x57, 0xf0, 0x13, 0xf4, 0x3e, 0xf5, + 0xee, 0xf4, 0xaa, 0xf8, 0xcd, 0xf9, 0xfb, 0xfb, 0x01, 0xfc, 0x83, 0xfa, 0x70, 0xfa, 0xba, 0xfc, + 0x87, 0xfd, 0x5d, 0xfb, 0x76, 0xfb, 0x49, 0xfe, 0xf9, 0xfd, 0xde, 0xfa, 0xb4, 0xf9, 0x0e, 0xf8, + 0x43, 0xf9, 0x59, 0xf8, 0xfd, 0xfa, 0x8a, 0xfb, 0xad, 0xfe, 0x0b, 0x03, 0xf8, 0x01, 0x05, 0x01, + 0xbd, 0x01, 0x0e, 0x02, 0xbe, 0x04, 0x98, 0x09, 0x05, 0x09, 0x2a, 0x0a, 0x2e, 0x0a, 0xd2, 0x0a, + 0x28, 0x0a, 0x3b, 0x0d, 0x46, 0x13, 0x00, 0x16, 0x67, 0x18, 0x14, 0x18, 0x3f, 0x18, 0x4f, 0x17, + 0x23, 0x17, 0x27, 0x19, 0x45, 0x17, 0x9a, 0x11, 0x45, 0x0f, 0xb5, 0x0d, 0xbe, 0x08, 0xab, 0x04, + 0x47, 0x02, 0x57, 0xff, 0x61, 0xfd, 0x8c, 0xfa, 0x8a, 0xfb, 0xab, 0xfa, 0xc8, 0xf8, 0x67, 0xfe, + 0x0f, 0x00, 0xb7, 0x00, 0x85, 0x04, 0xe1, 0x07, 0x06, 0x07, 0xd7, 0x05, 0x61, 0x09, 0x84, 0x0c, + 0xed, 0x0c, 0x55, 0x0f, 0x4a, 0x13, 0xe4, 0x15, 0x08, 0x16, 0x6f, 0x18, 0x36, 0x18, 0xc4, 0x18, + 0xc4, 0x19, 0xd2, 0x16, 0x71, 0x17, 0x83, 0x15, 0x92, 0x0e, 0xdd, 0x0d, 0x01, 0x0c, 0x1f, 0x07, + 0xf6, 0x04, 0x67, 0x01, 0x4b, 0xfc, 0x37, 0xfa, 0xc8, 0xf7, 0x94, 0xf3, 0x33, 0xf2, 0x4a, 0xee, + 0xdf, 0xec, 0x13, 0xec, 0x0b, 0xee, 0x88, 0xf0, 0x5e, 0xf4, 0x17, 0xf9, 0x08, 0xfa, 0xd5, 0xfc, + 0xf1, 0x00, 0xf1, 0x05, 0x32, 0x09, 0x96, 0x0c, 0xff, 0x0c, 0x9e, 0x0d, 0x44, 0x10, 0x46, 0x0e, + 0x37, 0x0b, 0xd0, 0x05, 0xd4, 0x04, 0xbc, 0x05, 0x77, 0x07, 0x74, 0x07, 0x87, 0x05, 0xc0, 0x03, + 0xef, 0xfd, 0xb5, 0xfe, 0xdb, 0xff, 0x28, 0xfd, 0x2b, 0xfc, 0x8c, 0xf4, 0x0a, 0xef, 0x5e, 0xea, + 0xe4, 0xe9, 0x8f, 0xe8, 0x75, 0xe3, 0xfe, 0xe3, 0xfa, 0xe3, 0xc0, 0xe2, 0x60, 0xe6, 0x53, 0xe9, + 0x82, 0xea, 0xa3, 0xeb, 0xb7, 0xea, 0x0c, 0xef, 0xe2, 0xec, 0x0b, 0xec, 0x8a, 0xf0, 0x59, 0xf0, + 0xf7, 0xf0, 0x1c, 0xf1, 0x29, 0xf0, 0xe4, 0xef, 0xe4, 0xef, 0xe2, 0xf0, 0xe7, 0xf2, 0x6b, 0xf5, + 0x82, 0xf6, 0x84, 0xf6, 0xab, 0xf6, 0xb5, 0xf7, 0x8b, 0xf9, 0x01, 0xfc, 0xea, 0xf9, 0x58, 0xfa, + 0x07, 0xfd, 0x2c, 0xfb, 0x4d, 0xfd, 0x92, 0xff, 0x3b, 0x01, 0xba, 0xfe, 0xf6, 0xfc, 0x53, 0xfe, + 0xb2, 0xfb, 0x6d, 0xfc, 0xce, 0xfa, 0x63, 0xfa, 0x23, 0xfa, 0xa4, 0xfb, 0x34, 0xfc, 0xfa, 0xff, + 0x15, 0x01, 0xf9, 0x01, 0xed, 0x05, 0x4e, 0x0b, 0xd1, 0x10, 0x09, 0x15, 0xfb, 0x15, 0x00, 0x14, + 0x39, 0x13, 0x47, 0x15, 0xaf, 0x12, 0x9b, 0x15, 0x23, 0x1d, 0x6b, 0x20, 0x1d, 0x24, 0xd9, 0x25, + 0x51, 0x2a, 0xa8, 0x2e, 0xa2, 0x2a, 0x59, 0x2b, 0x8f, 0x29, 0xa0, 0x25, 0x09, 0x22, 0x3b, 0x1e, + 0xfb, 0x19, 0x09, 0x14, 0xc6, 0x13, 0x6b, 0x10, 0xe6, 0x0c, 0x97, 0x0a, 0x08, 0x07, 0x6c, 0x07, + 0xc9, 0x06, 0x46, 0x01, 0x2b, 0xfd, 0xc9, 0xfb, 0x66, 0xf9, 0xd5, 0xf6, 0xe8, 0xf2, 0x7b, 0xef, + 0x21, 0xf1, 0xa6, 0xf1, 0xa4, 0xed, 0xcb, 0xeb, 0xa4, 0xef, 0xfd, 0xee, 0xe2, 0xec, 0x1a, 0xef, + 0xbf, 0xef, 0x81, 0xf0, 0xff, 0xf1, 0x30, 0xef, 0xeb, 0xec, 0x69, 0xea, 0x56, 0xe7, 0xe2, 0xe5, + 0x74, 0xe5, 0x4c, 0xe3, 0xb0, 0xe0, 0xdf, 0xe0, 0xc9, 0xe0, 0xfd, 0xe0, 0x5e, 0xe1, 0xb1, 0xe0, + 0xaf, 0xdc, 0x57, 0xde, 0x73, 0xdb, 0xcc, 0xd9, 0x66, 0xdc, 0x5a, 0xdf, 0x33, 0xe3, 0xec, 0xe8, + 0x0d, 0xed, 0xdc, 0xf3, 0xc8, 0xfb, 0xd8, 0x01, 0xe7, 0x03, 0xca, 0x06, 0xbd, 0x09, 0x08, 0x0c, + 0xb4, 0x0f, 0xe1, 0x0c, 0xe9, 0x0d, 0x8f, 0x0f, 0xed, 0x12, 0xad, 0x15, 0xfc, 0x16, 0x5d, 0x17, + 0xaa, 0x16, 0xff, 0x16, 0x81, 0x19, 0x51, 0x16, 0xbd, 0x12, 0x0b, 0x12, 0x30, 0x0c, 0xea, 0x07, + 0x89, 0x05, 0xba, 0x05, 0xed, 0x04, 0x52, 0x04, 0x16, 0x04, 0x43, 0x06, 0x91, 0x09, 0x91, 0x0c, + 0x0e, 0x0f, 0x0e, 0x10, 0x50, 0x13, 0x5b, 0x19, 0xa6, 0x16, 0x07, 0x13, 0xf9, 0x10, 0x9d, 0x0b, + 0x1e, 0x0a, 0x0a, 0x0c, 0x81, 0x0d, 0xfd, 0x09, 0xd6, 0x09, 0x75, 0x0d, 0xbd, 0x0c, 0xb8, 0x0a, + 0xfd, 0x0b, 0x54, 0x0e, 0xaa, 0x0c, 0x3e, 0x08, 0x28, 0x03, 0x35, 0xfe, 0x53, 0xf9, 0x26, 0xf6, + 0x67, 0xf2, 0x80, 0xef, 0x31, 0xf0, 0x74, 0xf1, 0x96, 0xed, 0xdd, 0xef, 0xf4, 0xec, 0x1e, 0xe9, + 0xe2, 0xe9, 0x7e, 0xe8, 0xc9, 0xe6, 0x30, 0xe8, 0xc9, 0xea, 0xda, 0xeb, 0x03, 0xee, 0x38, 0xf0, + 0x48, 0xf1, 0xb4, 0xf4, 0x76, 0xf7, 0xa0, 0xf8, 0xca, 0xfa, 0xc2, 0xfb, 0xe2, 0xff, 0xe8, 0xff, + 0x61, 0xfe, 0x57, 0xfe, 0xe9, 0xff, 0x24, 0x02, 0xc8, 0x03, 0x66, 0x09, 0x8e, 0x0f, 0x07, 0x11, + 0xf9, 0x13, 0x0c, 0x18, 0x93, 0x17, 0xcc, 0x19, 0x1a, 0x1b, 0x92, 0x1a, 0x69, 0x19, 0x4c, 0x14, + 0x93, 0x0d, 0x4a, 0x08, 0xd3, 0x08, 0xef, 0x09, 0xe6, 0x04, 0xbc, 0x03, 0xaa, 0x03, 0x8f, 0x05, + 0x90, 0x09, 0xa0, 0x09, 0x0a, 0x0c, 0xcc, 0x0c, 0xaf, 0x09, 0x73, 0x09, 0x32, 0x07, 0x8a, 0x04, + 0xb5, 0x03, 0x3a, 0x06, 0xf4, 0x05, 0xf6, 0x05, 0x05, 0x0b, 0x59, 0x0d, 0x26, 0x0d, 0x76, 0x0c, + 0x7c, 0x0e, 0xe7, 0x11, 0x97, 0x14, 0x4e, 0x12, 0x48, 0x0f, 0x22, 0x0d, 0xc5, 0x0a, 0x53, 0x06, + 0xcc, 0x02, 0x44, 0x00, 0xde, 0xfd, 0x72, 0xfb, 0x71, 0xf8, 0x02, 0xf3, 0x0f, 0xed, 0xaa, 0xe9, + 0xab, 0xe4, 0x84, 0xdf, 0xab, 0xda, 0x22, 0xdb, 0x41, 0xda, 0x72, 0xda, 0xfc, 0xdb, 0x28, 0xdc, + 0xf5, 0xdf, 0x1d, 0xe4, 0x7e, 0xe4, 0x93, 0xe8, 0xb9, 0xec, 0x37, 0xee, 0xae, 0xf2, 0xa7, 0xf2, + 0xca, 0xf4, 0x3b, 0xf3, 0x38, 0xf2, 0x62, 0xf3, 0xf5, 0xf3, 0x80, 0xf6, 0xba, 0xf9, 0x63, 0xfd, + 0x64, 0xff, 0x60, 0x00, 0x20, 0x02, 0xd8, 0x04, 0x46, 0x06, 0x34, 0x06, 0xf7, 0x01, 0x63, 0xfc, + 0xdd, 0xf6, 0xe2, 0xf3, 0x41, 0xf0, 0x98, 0xf1, 0xde, 0xf3, 0xe2, 0xf3, 0x69, 0xf8, 0xc2, 0xfd, + 0x0d, 0xfd, 0x9c, 0xfd, 0xf9, 0x01, 0x9d, 0x05, 0xda, 0x07, 0xe5, 0x06, 0x43, 0x06, 0x02, 0x05, + 0x21, 0x08, 0x65, 0x0a, 0x8d, 0x0a, 0x95, 0x0b, 0x6d, 0x0d, 0xa9, 0x0c, 0x42, 0x0c, 0x54, 0x0a, + 0x27, 0x08, 0x76, 0x09, 0x40, 0x08, 0x87, 0x07, 0x50, 0x08, 0x53, 0x09, 0xe0, 0x08, 0x9d, 0x07, + 0x8c, 0x04, 0x63, 0x04, 0xca, 0x07, 0xe7, 0x06, 0x08, 0x06, 0xd7, 0x07, 0x88, 0x06, 0xea, 0x05, + 0x1f, 0x06, 0x1f, 0x03, 0x6d, 0xfd, 0xa1, 0xfb, 0xbc, 0xfc, 0x86, 0xfa, 0x32, 0xfb, 0x05, 0xfc, + 0x1a, 0x00, 0x20, 0x02, 0x97, 0x05, 0xd5, 0x07, 0x19, 0x09, 0x52, 0x0a, 0x45, 0x0c, 0x04, 0x0d, + 0xe1, 0x09, 0x63, 0x08, 0xaf, 0x04, 0x3f, 0x02, 0xe5, 0x00, 0xf4, 0xff, 0x8b, 0x03, 0x47, 0x09, + 0x56, 0x0a, 0xf4, 0x0b, 0x54, 0x0a, 0x1f, 0x09, 0xab, 0x0a, 0xb0, 0x0a, 0x03, 0x07, 0xa9, 0x03, + 0x8a, 0x02, 0xb0, 0xfd, 0x04, 0xfb, 0x0e, 0xf9, 0x6e, 0xf6, 0xc4, 0xf5, 0xb7, 0xf6, 0xa4, 0xf5, + 0x49, 0xf3, 0x01, 0xf2, 0xde, 0xf4, 0xc4, 0xf4, 0xa2, 0xf4, 0x84, 0xf3, 0x5d, 0xf1, 0x89, 0xf2, + 0xc4, 0xf1, 0xfe, 0xf1, 0xf7, 0xf6, 0xff, 0xfa, 0x6b, 0xfe, 0x18, 0x01, 0xe7, 0x02, 0x1d, 0x01, + 0xe9, 0x02, 0xf0, 0x08, 0xe8, 0x08, 0xb2, 0x06, 0xa5, 0x06, 0xd5, 0x03, 0xab, 0x03, 0xc6, 0x03, + 0xfa, 0xff, 0x35, 0x00, 0xd7, 0x01, 0x4e, 0x02, 0xc0, 0x03, 0xe2, 0x03, 0xce, 0x02, 0x47, 0x02, + 0x24, 0x00, 0xc4, 0xfc, 0x60, 0xfa, 0x34, 0xf8, 0x21, 0xf7, 0x00, 0xf8, 0x1c, 0xf7, 0x19, 0xf8, + 0xe1, 0xff, 0xb2, 0x05, 0x04, 0x0a, 0x08, 0x0e, 0x77, 0x10, 0xec, 0x12, 0x28, 0x17, 0x47, 0x19, + 0x8f, 0x18, 0x4a, 0x17, 0x85, 0x17, 0xd5, 0x17, 0x64, 0x16, 0x99, 0x16, 0x42, 0x18, 0xb9, 0x1a, + 0xb7, 0x1c, 0x90, 0x1a, 0xcf, 0x16, 0xf4, 0x13, 0x01, 0x12, 0xf0, 0x0f, 0x95, 0x0a, 0x29, 0x07, + 0x00, 0x05, 0x33, 0xfe, 0xba, 0xf8, 0xd9, 0xf3, 0x2f, 0xf2, 0xa7, 0xf0, 0x6f, 0xf0, 0xdf, 0xf1, + 0x7e, 0xee, 0xc9, 0xed, 0x79, 0xf0, 0x3e, 0xf1, 0xdc, 0xf1, 0x3e, 0xf0, 0x2c, 0xf1, 0x5d, 0xf0, + 0x7b, 0xee, 0x1e, 0xec, 0xdd, 0xeb, 0x45, 0xef, 0xdc, 0xf0, 0x5c, 0xf3, 0xee, 0xf4, 0xe5, 0xf4, + 0x8c, 0xf6, 0x70, 0xf9, 0xcb, 0xf9, 0x90, 0xf8, 0x7a, 0xf5, 0x91, 0xf5, 0x56, 0xf3, 0x98, 0xee, + 0x66, 0xed, 0x17, 0xf0, 0x9c, 0xf2, 0xdd, 0xf2, 0x9c, 0xf2, 0x64, 0xf0, 0x7d, 0xf0, 0x56, 0xf0, + 0xdc, 0xef, 0x0b, 0xed, 0x3e, 0xea, 0x34, 0xe7, 0x61, 0xe8, 0x13, 0xea, 0xb2, 0xe8, 0x25, 0xea, + 0x89, 0xef, 0xc2, 0xf2, 0x30, 0xf6, 0xaf, 0xfa, 0x48, 0xfa, 0x2f, 0xfb, 0x43, 0xfd, 0x4b, 0xfe, + 0x12, 0x01, 0x97, 0x06, 0x33, 0x09, 0xef, 0x0a, 0x4c, 0x0b, 0xe5, 0x0b, 0xb9, 0x0f, 0xb7, 0x14, + 0xe6, 0x18, 0x69, 0x1c, 0xe2, 0x1d, 0x43, 0x1e, 0xb3, 0x21, 0x68, 0x22, 0x33, 0x1d, 0xea, 0x17, + 0x14, 0x16, 0xef, 0x11, 0xca, 0x0b, 0x6b, 0x07, 0x72, 0x06, 0xa5, 0x04, 0x30, 0x04, 0x50, 0x05, + 0xee, 0x03, 0x0d, 0x01, 0x9c, 0x01, 0xb1, 0x02, 0x6d, 0x00, 0x88, 0xff, 0x5a, 0xfd, 0x5d, 0xfa, + 0x9c, 0xf5, 0x87, 0xf1, 0x9f, 0xf3, 0x94, 0xf8, 0x33, 0xfb, 0x54, 0xfe, 0xf5, 0xfd, 0x76, 0xfc, + 0x78, 0xfa, 0xe4, 0xfa, 0xf2, 0xfa, 0x84, 0xfb, 0x3f, 0xfe, 0xd1, 0xff, 0x58, 0x01, 0xda, 0xfd, + 0x8f, 0xfc, 0x47, 0xfe, 0xb5, 0xfc, 0xa7, 0xfb, 0x09, 0xfc, 0x66, 0xf8, 0xbf, 0xf6, 0x63, 0xf4, + 0x18, 0xf2, 0x08, 0xef, 0xdb, 0xec, 0x27, 0xec, 0x5d, 0xeb, 0x4e, 0xec, 0x87, 0xed, 0x0e, 0xf1, + 0x62, 0xf6, 0xee, 0xfb, 0x39, 0xff, 0xee, 0x01, 0x9a, 0x05, 0x2a, 0x0b, 0x09, 0x0c, 0xd0, 0x0c, + 0xdf, 0x0e, 0x13, 0x0f, 0x09, 0x10, 0xaa, 0x10, 0x9f, 0x0e, 0x90, 0x0f, 0x14, 0x12, 0xb6, 0x14, + 0xa9, 0x19, 0xe6, 0x1d, 0x21, 0x1f, 0x06, 0x1f, 0xa2, 0x1f, 0x77, 0x1e, 0x41, 0x1c, 0x7a, 0x1a, + 0x10, 0x18, 0x22, 0x13, 0x75, 0x0c, 0xb3, 0x07, 0xa5, 0x08, 0x8b, 0x08, 0xe0, 0x06, 0x31, 0x07, + 0xd3, 0x06, 0x40, 0x05, 0xf0, 0x06, 0x1b, 0x09, 0x90, 0x06, 0x68, 0x04, 0xe6, 0x04, 0x53, 0x04, + 0x1c, 0xff, 0x5e, 0xfe, 0xc1, 0xfd, 0xeb, 0xfe, 0x5f, 0x01, 0x7a, 0x02, 0xa0, 0xff, 0xca, 0xfc, + 0xe0, 0xf9, 0xc3, 0xf5, 0x09, 0xf4, 0x12, 0xf6, 0x4f, 0xf5, 0xba, 0xf4, 0x67, 0xf4, 0x36, 0xef, + 0x80, 0xef, 0x68, 0xef, 0x96, 0xf0, 0x13, 0xf2, 0xa7, 0xf1, 0xee, 0xf1, 0xc5, 0xf0, 0xa8, 0xed, + 0x57, 0xe9, 0xe2, 0xe6, 0xb3, 0xe4, 0x99, 0xe2, 0x21, 0xe1, 0x51, 0xe0, 0xda, 0xdf, 0xe1, 0xe0, + 0x19, 0xe2, 0xb3, 0xe7, 0x6a, 0xed, 0xfc, 0xf1, 0x9e, 0xf6, 0x07, 0xfb, 0x06, 0xfd, 0xda, 0xfd, + 0x96, 0xfd, 0xad, 0xfd, 0x94, 0xfe, 0x76, 0xfe, 0xb6, 0xfd, 0x5e, 0x01, 0xc2, 0x07, 0xdb, 0x0a, + 0x46, 0x0e, 0xc1, 0x10, 0x50, 0x13, 0xb0, 0x15, 0x9a, 0x17, 0x19, 0x17, 0x7f, 0x16, 0x76, 0x15, + 0xfe, 0x12, 0xac, 0x11, 0x4f, 0x0d, 0x0a, 0x0a, 0x02, 0x0a, 0x6a, 0x09, 0xb0, 0x06, 0xbd, 0x04, + 0x80, 0x05, 0x10, 0x02, 0xab, 0xfc, 0x34, 0xfc, 0xc0, 0xfd, 0x90, 0xff, 0x03, 0x02, 0xd0, 0x03, + 0xc6, 0x00, 0x76, 0xff, 0xa4, 0x01, 0x3d, 0x04, 0xe7, 0x04, 0x11, 0x07, 0x07, 0x0b, 0x44, 0x0c, + 0x25, 0x0e, 0x6d, 0x0e, 0x85, 0x0d, 0xd0, 0x0a, 0x38, 0x0a, 0x76, 0x0a, 0x12, 0x09, 0xc8, 0x07, + 0xcc, 0x05, 0xb2, 0x04, 0x01, 0x05, 0xd6, 0x06, 0xbe, 0x04, 0x72, 0x02, 0x73, 0x02, 0x85, 0xff, + 0x75, 0xfa, 0x53, 0xf8, 0x06, 0xf2, 0xe9, 0xea, 0x45, 0xe5, 0x9a, 0xdf, 0x99, 0xde, 0x12, 0xdf, + 0xca, 0xe0, 0xef, 0xe3, 0xea, 0xe6, 0x18, 0xeb, 0xa8, 0xed, 0x12, 0xf0, 0x92, 0xee, 0xe8, 0xf0, + 0xcc, 0xf3, 0x1c, 0xf4, 0x2b, 0xf8, 0x6d, 0xf8, 0xbe, 0xf8, 0x2d, 0xfb, 0xa7, 0xfd, 0x75, 0xfd, + 0x0c, 0x00, 0x77, 0x04, 0xe5, 0x04, 0x55, 0x05, 0xcf, 0x06, 0x1c, 0x07, 0x26, 0x07, 0x77, 0x07, + 0x0c, 0x07, 0x2d, 0x06, 0xeb, 0x03, 0x2e, 0x03, 0xdd, 0x04, 0x25, 0x04, 0xde, 0x03, 0xe8, 0x02, + 0xb9, 0x03, 0x19, 0x06, 0x81, 0x04, 0x22, 0x03, 0xeb, 0x03, 0xbe, 0x02, 0x08, 0x02, 0xed, 0x03, + 0xc6, 0x00, 0x2f, 0xff, 0xf4, 0xfd, 0x3a, 0xff, 0x23, 0x03, 0xc5, 0x06, 0x9c, 0x0b, 0xe6, 0x0c, + 0xdc, 0x0b, 0xc0, 0x08, 0x76, 0x08, 0x7e, 0x08, 0xb9, 0x08, 0x78, 0x07, 0x46, 0x05, 0x91, 0x05, + 0x66, 0x08, 0x14, 0x09, 0x2c, 0x09, 0xde, 0x0b, 0xbe, 0x0b, 0x26, 0x0d, 0x13, 0x0f, 0x3f, 0x0e, + 0xb5, 0x0b, 0x7c, 0x07, 0x34, 0x02, 0x6e, 0xfd, 0x15, 0xfa, 0xe5, 0xf6, 0x1f, 0xf6, 0x83, 0xf8, + 0xce, 0xf7, 0x50, 0xf9, 0xd6, 0xfa, 0x56, 0xfa, 0xaa, 0xfb, 0x38, 0xfb, 0x0d, 0xfa, 0x7a, 0xfb, + 0x53, 0xfb, 0xa4, 0xfa, 0xe9, 0xfb, 0x56, 0xfa, 0x35, 0xfd, 0xc4, 0xfe, 0x3e, 0x00, 0x4c, 0x02, + 0x9a, 0x05, 0x89, 0x09, 0xa5, 0x0c, 0x9a, 0x0d, 0x5b, 0x0b, 0x46, 0x0d, 0xa7, 0x0c, 0x2d, 0x0b, + 0xd9, 0x0b, 0x59, 0x0b, 0xf8, 0x06, 0x27, 0x04, 0xef, 0x01, 0x03, 0x00, 0xf2, 0xfe, 0x92, 0xfe, + 0x4d, 0xfe, 0x8b, 0xfe, 0x70, 0xfd, 0xec, 0xfc, 0x1d, 0xfc, 0x68, 0xf8, 0xcf, 0xf7, 0x80, 0xf7, + 0x96, 0xf6, 0xe4, 0xf6, 0x55, 0xf9, 0x87, 0xfb, 0x05, 0xfd, 0xf4, 0xfe, 0x58, 0x03, 0x31, 0x06, + 0x63, 0x08, 0xe4, 0x06, 0x72, 0x05, 0xe0, 0x02, 0x1c, 0x02, 0x77, 0x02, 0xcc, 0xfe, 0xf8, 0x01, + 0xd0, 0x01, 0x7a, 0x00, 0x82, 0x00, 0x6c, 0x02, 0xee, 0x02, 0xc3, 0x00, 0x45, 0xfc, 0x6b, 0xf7, + 0x95, 0xf6, 0x28, 0xf5, 0xc5, 0xf3, 0xe6, 0xf0, 0x8c, 0xed, 0x27, 0xec, 0x15, 0xee, 0xa6, 0xee, + 0x77, 0xef, 0xe5, 0xf0, 0x17, 0xf5, 0xf3, 0xf9, 0xde, 0xfe, 0xcc, 0x02, 0x7d, 0x05, 0x3c, 0x05, + 0xcd, 0x02, 0x9b, 0x02, 0xe9, 0x03, 0xfa, 0x01, 0x5f, 0x01, 0x72, 0x04, 0x07, 0x06, 0x5e, 0x09, + 0x0a, 0x0b, 0xb7, 0x0b, 0x98, 0x0e, 0xd1, 0x0f, 0x57, 0x0f, 0xdf, 0x10, 0xd9, 0x0d, 0x2e, 0x09, + 0xd8, 0x04, 0xa4, 0x01, 0xe8, 0xfe, 0xcd, 0xfd, 0x89, 0xfd, 0xbf, 0xfa, 0x72, 0xfa, 0x3f, 0xfa, + 0xb0, 0xf9, 0x60, 0xf7, 0x6c, 0xf4, 0x5b, 0xf3, 0xe1, 0xf1, 0xde, 0xf2, 0xb7, 0xf3, 0xd7, 0xf3, + 0xd4, 0xf5, 0x84, 0xf7, 0xb2, 0xf6, 0x87, 0xf5, 0xeb, 0xf6, 0x01, 0xf9, 0xf4, 0xf9, 0x14, 0xfa, + 0xc3, 0xfa, 0x55, 0xfa, 0x8f, 0xf9, 0x76, 0xf7, 0x70, 0xf6, 0x45, 0xf8, 0xe2, 0xf8, 0x57, 0xfa, + 0xd8, 0xfc, 0xea, 0xfd, 0x9e, 0xfe, 0x18, 0x01, 0x5b, 0x03, 0xe3, 0x05, 0xce, 0x07, 0xc2, 0x07, + 0x9a, 0x06, 0xcb, 0x00, 0xb8, 0xfe, 0x2b, 0xfd, 0x28, 0xf7, 0xe5, 0xf3, 0xde, 0xf0, 0x97, 0xef, + 0xbf, 0xf1, 0xd0, 0xf4, 0x6a, 0xf9, 0x22, 0xfd, 0xfd, 0xff, 0xec, 0x00, 0x69, 0x04, 0x4c, 0x06, + 0x8d, 0x05, 0x5f, 0x05, 0x8d, 0x03, 0x71, 0x03, 0x44, 0x07, 0x39, 0x0a, 0xda, 0x0b, 0xc2, 0x0e, + 0x92, 0x11, 0xa6, 0x14, 0xb5, 0x17, 0x0f, 0x1b, 0x2b, 0x1b, 0x9a, 0x1d, 0xd3, 0x1b, 0x70, 0x16, + 0x6a, 0x14, 0x52, 0x13, 0x48, 0x11, 0x18, 0x11, 0x97, 0x10, 0xc7, 0x0d, 0x46, 0x0c, 0x5d, 0x07, + 0xce, 0x01, 0xb9, 0xfc, 0x87, 0xf9, 0x80, 0xf7, 0x8b, 0xf4, 0x4c, 0xf1, 0xa2, 0xef, 0xff, 0xed, + 0x59, 0xef, 0x07, 0xf0, 0xa6, 0xef, 0x7e, 0xef, 0x72, 0xf2, 0x21, 0xf5, 0xa6, 0xf7, 0xac, 0xf9, + 0xcc, 0xf9, 0xc0, 0xf9, 0xce, 0xf7, 0x69, 0xf8, 0x1b, 0xf9, 0x63, 0xf9, 0xaf, 0xf7, 0xe1, 0xf7, + 0x8a, 0xf8, 0xb7, 0xf8, 0x11, 0xfa, 0x92, 0xfc, 0xd0, 0xfe, 0xb6, 0x01, 0xbf, 0x02, 0xc1, 0x03, + 0xbb, 0x03, 0xe1, 0xfe, 0xf2, 0xf9, 0x57, 0xf7, 0x8c, 0xf4, 0x64, 0xf1, 0xfb, 0xf1, 0xe7, 0xf1, + 0xd5, 0xf3, 0xd2, 0xf6, 0xe2, 0xf7, 0xb5, 0xfd, 0x0e, 0x03, 0x5b, 0x05, 0x09, 0x0a, 0x18, 0x0b, + 0xaa, 0x0a, 0xa9, 0x0a, 0x6a, 0x0a, 0xa6, 0x0c, 0x8d, 0x0d, 0xe3, 0x0e, 0x87, 0x11, 0x62, 0x16, + 0x1f, 0x18, 0x5c, 0x19, 0x92, 0x16, 0x53, 0x12, 0x65, 0x14, 0x5d, 0x16, 0xe4, 0x16, 0x42, 0x17, + 0x4d, 0x16, 0x01, 0x15, 0xe8, 0x15, 0x8b, 0x13, 0x94, 0x11, 0x86, 0x11, 0xa6, 0x11, 0x21, 0x10, + 0x97, 0x0f, 0x3d, 0x0f, 0xe2, 0x0c, 0xa8, 0x0a, 0x53, 0x07, 0x46, 0x03, 0x06, 0x02, 0x37, 0xfe, + 0xfb, 0xfb, 0xfb, 0xfb, 0x69, 0xfb, 0x61, 0xfc, 0xb9, 0xfc, 0x78, 0xfc, 0xb3, 0xfb, 0x59, 0xfe, + 0x13, 0x00, 0x4e, 0x01, 0x8a, 0xfd, 0x5c, 0xf9, 0x4e, 0xf4, 0xab, 0xee, 0xe0, 0xec, 0x44, 0xec, + 0x7d, 0xeb, 0xb6, 0xec, 0xcd, 0xed, 0x64, 0xee, 0x46, 0xf3, 0x61, 0xf3, 0x6c, 0xf0, 0xf6, 0xef, + 0x5d, 0xef, 0x5b, 0xec, 0x30, 0xea, 0xf2, 0xe6, 0x6d, 0xe5, 0x9d, 0xe3, 0xb5, 0xe0, 0x68, 0xdf, + 0x50, 0xe0, 0xa6, 0xe1, 0xb9, 0xe2, 0x39, 0xe3, 0x5d, 0xe4, 0xe6, 0xe7, 0xcd, 0xeb, 0x63, 0xee, + 0xf0, 0xed, 0x84, 0xef, 0xb2, 0xf1, 0x2e, 0xf4, 0xa3, 0xf6, 0xe1, 0xf9, 0x6a, 0xff, 0xf7, 0x04, + 0x8b, 0x08, 0xa2, 0x0d, 0xe0, 0x12, 0xf9, 0x13, 0xf3, 0x15, 0x8c, 0x15, 0x74, 0x17, 0x70, 0x16, + 0xae, 0x13, 0x18, 0x11, 0x71, 0x0d, 0xea, 0x0b, 0x56, 0x0b, 0x9f, 0x0d, 0xc2, 0x0e, 0xff, 0x0e, + 0xed, 0x0d, 0xb6, 0x09, 0xcc, 0x06, 0x89, 0x04, 0xc8, 0x01, 0x60, 0x00, 0xdb, 0xfd, 0xd5, 0xfc, + 0x4e, 0xfc, 0x58, 0xfd, 0x22, 0xff, 0x22, 0x01, 0xfb, 0x03, 0x36, 0x07, 0xe4, 0x08, 0x06, 0x0b, + 0x01, 0x0e, 0x36, 0x11, 0x53, 0x10, 0x00, 0x0c, 0xd5, 0x09, 0xef, 0x07, 0x7d, 0x06, 0xe8, 0x06, + 0x02, 0x08, 0x1d, 0x09, 0x3d, 0x0c, 0xc1, 0x09, 0xa0, 0x05, 0xfc, 0x03, 0x01, 0x02, 0x53, 0x00, + 0xd3, 0xfe, 0x93, 0xfc, 0x8f, 0xf6, 0xcb, 0xf1, 0x9c, 0xef, 0xfe, 0xea, 0xe0, 0xe5, 0x47, 0xe5, + 0xf7, 0xe5, 0x24, 0xe6, 0x26, 0xeb, 0xf8, 0xee, 0x2a, 0xef, 0xb4, 0xef, 0x49, 0xf2, 0xd3, 0xf6, + 0xb4, 0xfa, 0x57, 0xfc, 0xd2, 0xfb, 0x89, 0xfc, 0x9f, 0xfb, 0x23, 0xfc, 0x8c, 0x00, 0xb9, 0x03, + 0x93, 0x08, 0x4c, 0x0d, 0x01, 0x12, 0x51, 0x14, 0xdf, 0x16, 0x86, 0x18, 0xf1, 0x15, 0x6f, 0x15, + 0x2a, 0x14, 0xf2, 0x10, 0xfd, 0x0f, 0xf7, 0x0e, 0x5a, 0x0e, 0x5f, 0x10, 0xf6, 0x11, 0x89, 0x11, + 0x17, 0x12, 0x31, 0x11, 0x32, 0x0f, 0x8a, 0x0b, 0x42, 0x07, 0x4b, 0x03, 0x88, 0x00, 0x3a, 0xff, + 0x47, 0xfd, 0x21, 0xfc, 0x09, 0xfd, 0x8f, 0x01, 0x12, 0x03, 0x72, 0x04, 0xbb, 0x03, 0x82, 0x00, + 0xd2, 0xfe, 0x07, 0xff, 0xdc, 0xfe, 0xa1, 0xff, 0x63, 0x00, 0x27, 0xff, 0x24, 0xfe, 0x6a, 0xfd, + 0xe3, 0xfe, 0x7e, 0x00, 0x13, 0x03, 0x5a, 0x04, 0x2c, 0x08, 0xef, 0x0a, 0xd6, 0x0a, 0xcd, 0x0a, + 0x25, 0x0a, 0x22, 0x07, 0xe3, 0x02, 0x16, 0xfe, 0x43, 0xf8, 0x7a, 0xf3, 0xf5, 0xef, 0xeb, 0xed, + 0x90, 0xed, 0x10, 0xed, 0x4c, 0xec, 0x10, 0xee, 0xb7, 0xee, 0x3b, 0xf2, 0xd7, 0xf2, 0x3e, 0xf4, + 0xe5, 0xf3, 0x40, 0xf0, 0xb4, 0xee, 0xc0, 0xee, 0x11, 0xed, 0x73, 0xec, 0xf6, 0xf0, 0x8b, 0xf4, + 0x31, 0xfa, 0x87, 0xfe, 0xda, 0xff, 0x42, 0x00, 0x01, 0x02, 0xe8, 0x01, 0x6c, 0x04, 0x47, 0x06, + 0xd9, 0x06, 0x9a, 0x07, 0xdb, 0x04, 0xc7, 0x03, 0xf0, 0x05, 0x5c, 0x07, 0xad, 0x05, 0xba, 0x03, + 0xb6, 0x00, 0x4d, 0xfe, 0x53, 0xfc, 0x7c, 0xf9, 0xe7, 0xf3, 0xf6, 0xf3, 0xb8, 0xf3, 0xd3, 0xf0, + 0x04, 0xf0, 0x15, 0xf1, 0x71, 0xf3, 0x08, 0xf7, 0x41, 0xfb, 0x92, 0xff, 0x91, 0x03, 0xd9, 0x05, + 0xa0, 0x07, 0x45, 0x07, 0x05, 0x0a, 0x07, 0x0a, 0x5a, 0x09, 0xae, 0x06, 0x12, 0x05, 0xc1, 0x01, + 0x45, 0x01, 0x54, 0x03, 0xff, 0x03, 0xaa, 0x09, 0x21, 0x0d, 0x08, 0x0e, 0xa1, 0x0d, 0xf2, 0x0b, + 0x9d, 0x0a, 0x9f, 0x0b, 0x06, 0x08, 0xe2, 0x02, 0x94, 0xff, 0x16, 0xfb, 0xcf, 0xf5, 0x94, 0xf3, + 0x81, 0xf2, 0xe3, 0xf2, 0x00, 0xf4, 0x4d, 0xf6, 0x41, 0xf9, 0x19, 0xfc, 0x0b, 0xfe, 0x60, 0xfd, + 0xcd, 0xfd, 0x95, 0xfe, 0x41, 0xfe, 0x17, 0xfd, 0x70, 0xfd, 0x2e, 0xff, 0xe5, 0x02, 0xda, 0x04, + 0xbf, 0x04, 0xbf, 0x03, 0x51, 0x04, 0x8b, 0x06, 0x8d, 0x04, 0x12, 0x04, 0x0f, 0x05, 0x9b, 0x04, + 0xe5, 0x03, 0x46, 0x02, 0x9f, 0xff, 0x3e, 0xfe, 0xc6, 0xfd, 0x64, 0xff, 0xc1, 0x03, 0x76, 0x06, + 0x47, 0x05, 0x93, 0x02, 0xcf, 0xfe, 0xb6, 0xfa, 0x9d, 0xfa, 0xcd, 0xf9, 0xd7, 0xf6, 0x2a, 0xf5, + 0x2e, 0xf2, 0xf2, 0xf0, 0x80, 0xf1, 0x6c, 0xf3, 0x32, 0xf7, 0x6b, 0xfa, 0x89, 0xff, 0x86, 0x02, + 0x39, 0x04, 0x42, 0x06, 0x8d, 0x06, 0x5f, 0x05, 0x27, 0x05, 0xf2, 0x03, 0xf3, 0x00, 0xe3, 0xff, + 0x9f, 0x00, 0x9e, 0x02, 0x13, 0x06, 0x45, 0x09, 0xac, 0x0c, 0xb9, 0x10, 0x86, 0x13, 0x06, 0x13, + 0xc4, 0x11, 0xa6, 0x0f, 0x0e, 0x0e, 0x19, 0x0b, 0x7d, 0x06, 0x64, 0x03, 0x97, 0x00, 0xf8, 0xfd, + 0x8a, 0xfb, 0xbe, 0xfb, 0x10, 0xf9, 0x3e, 0xf7, 0x3c, 0xf6, 0x3e, 0xf3, 0xd7, 0xf3, 0x13, 0xf8, + 0x56, 0xfc, 0xd2, 0xfc, 0x0b, 0xff, 0xb8, 0x00, 0xca, 0x00, 0x20, 0x01, 0xec, 0x02, 0x0a, 0x07, + 0x2d, 0x0d, 0x96, 0x11, 0x62, 0x15, 0xe7, 0x17, 0x80, 0x1a, 0xeb, 0x1a, 0xa4, 0x1a, 0x42, 0x1c, + 0xb3, 0x19, 0x48, 0x16, 0x00, 0x13, 0x72, 0x10, 0x6d, 0x0f, 0x2d, 0x0f, 0x5e, 0x0e, 0xe6, 0x0e, + 0xcf, 0x0e, 0x9d, 0x0e, 0x98, 0x0b, 0x91, 0x06, 0x70, 0xff, 0x82, 0xf9, 0xcc, 0xf3, 0x05, 0xee, + 0xf6, 0xe7, 0x20, 0xe3, 0xed, 0xe2, 0x16, 0xe3, 0x2d, 0xe7, 0x87, 0xeb, 0x10, 0xef, 0x40, 0xf0, + 0x48, 0xf0, 0xe6, 0xed, 0x01, 0xee, 0xcf, 0xf0, 0xe4, 0xf0, 0xbf, 0xf0, 0x69, 0xef, 0x0a, 0xef, + 0x68, 0xef, 0xc5, 0xf1, 0x01, 0xf2, 0xb8, 0xf2, 0x52, 0xf5, 0x46, 0xf6, 0x07, 0xf6, 0x70, 0xf6, + 0x53, 0xf6, 0x6a, 0xf6, 0x61, 0xf6, 0x8f, 0xf4, 0xf6, 0xf0, 0x49, 0xef, 0xf7, 0xed, 0xdb, 0xeb, + 0xf8, 0xec, 0xe2, 0xed, 0x3e, 0xef, 0xe3, 0xf0, 0xd3, 0xf2, 0xb7, 0xf3, 0x6f, 0xf5, 0x04, 0xf8, + 0x4a, 0xfa, 0x80, 0xfb, 0xc9, 0xfd, 0x9b, 0xfc, 0xb6, 0xfc, 0xca, 0xfd, 0xad, 0xfd, 0x24, 0x03, + 0xd4, 0x09, 0x57, 0x0e, 0x48, 0x10, 0x0a, 0x13, 0x1b, 0x13, 0x1e, 0x14, 0xd5, 0x15, 0xef, 0x15, + 0x06, 0x18, 0x78, 0x17, 0x34, 0x14, 0x8a, 0x12, 0x75, 0x12, 0x41, 0x12, 0x5f, 0x13, 0xd0, 0x15, + 0xad, 0x18, 0x4d, 0x1a, 0x25, 0x18, 0x90, 0x12, 0x62, 0x0d, 0xbb, 0x09, 0xc0, 0x04, 0x27, 0x00, + 0x9d, 0xfc, 0xf8, 0xfa, 0x98, 0xfb, 0x44, 0xfa, 0x0e, 0xf9, 0x27, 0xf9, 0xd0, 0xfa, 0x85, 0xfb, + 0xe9, 0xf9, 0x61, 0xf9, 0x50, 0xf8, 0x16, 0xf8, 0x5f, 0xf6, 0x98, 0xf5, 0xe7, 0xf3, 0x63, 0xf1, + 0x46, 0xf0, 0xd4, 0xef, 0x08, 0xf3, 0x1c, 0xf8, 0x67, 0xfb, 0xcf, 0xfd, 0x68, 0xfd, 0xf6, 0xfc, + 0x4e, 0x00, 0x64, 0x02, 0xf9, 0x01, 0x34, 0x02, 0x78, 0xff, 0x26, 0xfb, 0xf3, 0xf7, 0x06, 0xf5, + 0x0f, 0xf4, 0x85, 0xf4, 0xde, 0xf4, 0xb6, 0xf5, 0x4b, 0xf8, 0x68, 0xf9, 0x3f, 0xfa, 0x87, 0xf9, + 0x69, 0xfb, 0x0b, 0xfd, 0xdc, 0xfb, 0x8d, 0xfa, 0x93, 0xfb, 0x4d, 0xfd, 0xb8, 0xff, 0x2d, 0x03, + 0x84, 0x06, 0x8a, 0x0d, 0x75, 0x13, 0xe5, 0x14, 0x45, 0x14, 0xb1, 0x15, 0x20, 0x15, 0x97, 0x14, + 0xc9, 0x15, 0x17, 0x14, 0x2d, 0x14, 0x24, 0x14, 0xaa, 0x12, 0x36, 0x12, 0xd0, 0x12, 0xa0, 0x13, + 0x33, 0x12, 0xd5, 0x0e, 0x16, 0x0b, 0xb7, 0x08, 0xcd, 0x06, 0x62, 0x01, 0x73, 0x00, 0x36, 0xfe, + 0x61, 0xfb, 0xe7, 0xf8, 0x2c, 0xf6, 0xf0, 0xf5, 0xbd, 0xf7, 0xf2, 0xfb, 0x74, 0x00, 0x45, 0x03, + 0xa2, 0x05, 0x53, 0x07, 0xd6, 0x05, 0xcd, 0x05, 0xd2, 0x04, 0xd8, 0x02, 0x04, 0x01, 0x49, 0xff, + 0xfb, 0xfb, 0xb9, 0xfb, 0x5e, 0xfc, 0x13, 0xfc, 0xb9, 0xff, 0x19, 0x03, 0xde, 0x04, 0x44, 0x04, + 0x50, 0x03, 0xaa, 0x01, 0x94, 0xff, 0x07, 0xfd, 0x3a, 0xf8, 0xb0, 0xf2, 0xe2, 0xee, 0xc2, 0xeb, + 0x66, 0xea, 0x1f, 0xea, 0xf8, 0xeb, 0x81, 0xed, 0x7b, 0xeb, 0x14, 0xe9, 0xdd, 0xe8, 0xb9, 0xea, + 0x9a, 0xec, 0x48, 0xf0, 0x47, 0xf2, 0x53, 0xf4, 0x9c, 0xf6, 0xe2, 0xf8, 0xbf, 0xf8, 0xb8, 0xfa, + 0x23, 0xfd, 0x1c, 0xff, 0x6a, 0x01, 0xe4, 0x02, 0x19, 0x06, 0x63, 0x06, 0x26, 0x08, 0xa1, 0x09, + 0xf0, 0x09, 0x61, 0x0a, 0xe0, 0x0b, 0x07, 0x0c, 0xd5, 0x0c, 0x0c, 0x0e, 0xde, 0x0f, 0xdc, 0x12, + 0xbf, 0x15, 0xe7, 0x16, 0x0c, 0x17, 0xe0, 0x16, 0xee, 0x14, 0xb8, 0x0f, 0x18, 0x0b, 0x76, 0x06, + 0x7c, 0x01, 0x01, 0xfc, 0x03, 0xf8, 0x69, 0xf7, 0xcc, 0xf7, 0x9f, 0xfa, 0xeb, 0xfe, 0x60, 0x02, + 0x30, 0x02, 0xd7, 0x01, 0x0a, 0x03, 0x09, 0x02, 0xa6, 0x01, 0x3d, 0x01, 0xe2, 0xfe, 0x3e, 0xfd, + 0xc5, 0xfb, 0x08, 0xfa, 0xd8, 0xf9, 0xd2, 0xfd, 0x34, 0x02, 0x3e, 0x05, 0x80, 0x08, 0x05, 0x09, + 0x47, 0x07, 0x5d, 0x06, 0xbb, 0x04, 0xa7, 0x01, 0x5a, 0xff, 0x78, 0xfe, 0xf8, 0xfa, 0xde, 0xf7, + 0x73, 0xf5, 0xf3, 0xf0, 0xbf, 0xee, 0xbb, 0xeb, 0x77, 0xe9, 0x09, 0xe7, 0x1d, 0xe5, 0x9b, 0xe4, + 0x68, 0xe3, 0xa1, 0xe4, 0x55, 0xe5, 0xa6, 0xe6, 0x59, 0xe7, 0xd2, 0xe7, 0xf3, 0xea, 0xce, 0xef, + 0x15, 0xf4, 0x4e, 0xf9, 0x9c, 0xfc, 0x12, 0xfd, 0x35, 0xff, 0x96, 0x03, 0x13, 0x05, 0x99, 0x07, + 0xa0, 0x0a, 0x88, 0x09, 0x66, 0x09, 0xb4, 0x09, 0x38, 0x09, 0x37, 0x09, 0x41, 0x0a, 0xf5, 0x0b, + 0x7f, 0x0f, 0x41, 0x11, 0x56, 0x12, 0x45, 0x11, 0xa4, 0x0f, 0x56, 0x0c, 0x2f, 0x06, 0x94, 0xff, + 0x0c, 0xfc, 0x78, 0xfa, 0x5a, 0xf7, 0x70, 0xf6, 0xe3, 0xf7, 0xb8, 0xfb, 0x48, 0x00, 0xf5, 0x04, + 0x4c, 0x06, 0xd8, 0x08, 0xd2, 0x09, 0xe9, 0x08, 0x89, 0x07, 0x5b, 0x07, 0x97, 0x08, 0x12, 0x08, + 0x8c, 0x07, 0xd3, 0x05, 0x27, 0x06, 0x4b, 0x06, 0xdf, 0x06, 0x70, 0x07, 0x7a, 0x06, 0xc0, 0x06, + 0x29, 0x08, 0x26, 0x07, 0x89, 0x08, 0x5d, 0x09, 0x4d, 0x09, 0x19, 0x08, 0xb2, 0x04, 0x22, 0x02, + 0x25, 0x01, 0x86, 0x00, 0x16, 0x00, 0x39, 0x01, 0x85, 0x00, 0xae, 0x02, 0xed, 0x01, 0xc6, 0xff, + 0x15, 0x00, 0x6e, 0x00, 0x64, 0xfe, 0x65, 0xfe, 0x2b, 0xfe, 0x77, 0xfe, 0x6f, 0xff, 0xf1, 0xfe, + 0x84, 0x02, 0xd2, 0x06, 0xbc, 0x0a, 0xc7, 0x0b, 0xea, 0x0c, 0x4e, 0x0c, 0xf5, 0x0a, 0x78, 0x09, + 0x8c, 0x05, 0xba, 0x03, 0x30, 0x03, 0x26, 0x00, 0x20, 0xff, 0xce, 0xff, 0xc7, 0x01, 0x35, 0x05, + 0x81, 0x06, 0x43, 0x05, 0xd7, 0x02, 0x53, 0x03, 0xef, 0x00, 0xdc, 0xfd, 0x1b, 0xfb, 0x94, 0xf7, + 0x90, 0xf5, 0xa0, 0xf3, 0x52, 0xf0, 0xc3, 0xee, 0xda, 0xec, 0xc0, 0xeb, 0x26, 0xec, 0x72, 0xed, + 0x1b, 0xf2, 0x6a, 0xf4, 0x8b, 0xf5, 0x23, 0xf6, 0x49, 0xf6, 0xdb, 0xf4, 0x65, 0xf5, 0x74, 0xf6, + 0x5d, 0xf8, 0xbd, 0xfa, 0xc7, 0xfb, 0xa5, 0xfe, 0x73, 0x00, 0xd7, 0x02, 0x01, 0x06, 0x33, 0x09, + 0x90, 0x0a, 0xfa, 0x0a, 0x04, 0x0b, 0x03, 0x09, 0x69, 0x07, 0xda, 0x04, 0x22, 0x01, 0x00, 0xfe, + 0xb1, 0xfb, 0xd7, 0xfa, 0x83, 0xfb, 0xfb, 0xfb, 0xbf, 0xf9, 0x6f, 0xf7, 0xb1, 0xf6, 0xa0, 0xf6, + 0x6e, 0xf6, 0xfd, 0xf4, 0x57, 0xf5, 0x88, 0xf6, 0x85, 0xf7, 0x55, 0xf7, 0x9c, 0xf8, 0xd2, 0xfb, + 0xba, 0xff, 0xd5, 0x04, 0x5d, 0x08, 0x87, 0x0c, 0x23, 0x0f, 0xcf, 0x0d, 0x6f, 0x0d, 0x31, 0x0d, + 0x88, 0x0c, 0xb9, 0x0d, 0x37, 0x0d, 0x14, 0x0e, 0x42, 0x0e, 0x1d, 0x0c, 0x72, 0x0a, 0xc9, 0x08, + 0x9f, 0x08, 0x4a, 0x08, 0x8a, 0x07, 0xad, 0x05, 0x3b, 0x02, 0x33, 0xff, 0xbc, 0xfa, 0xcb, 0xf6, + 0x3a, 0xf2, 0x77, 0xee, 0xf2, 0xea, 0x8d, 0xe9, 0x65, 0xea, 0xcd, 0xea, 0x72, 0xec, 0x54, 0xee, + 0xf3, 0xf0, 0x35, 0xf4, 0x5f, 0xf7, 0x28, 0xfa, 0xaf, 0xfb, 0x2a, 0xfa, 0xed, 0xf9, 0xfd, 0xfa, + 0x77, 0xfa, 0x72, 0xfa, 0xe8, 0xfa, 0xf7, 0xfb, 0x69, 0xfe, 0x53, 0x01, 0x91, 0x04, 0xde, 0x07, + 0x38, 0x0b, 0x67, 0x0b, 0x63, 0x09, 0x7f, 0x06, 0x1b, 0x04, 0xa2, 0x02, 0x18, 0x01, 0xa0, 0x00, + 0x53, 0xff, 0xfe, 0x00, 0x19, 0x02, 0x86, 0x01, 0xc9, 0x00, 0x59, 0x00, 0x4d, 0xfe, 0xf8, 0xfa, + 0x5d, 0xf8, 0x80, 0xf7, 0x2c, 0xf8, 0x2c, 0xf8, 0xd3, 0xf9, 0x1b, 0xfb, 0x5a, 0xfc, 0x3a, 0xfd, + 0x13, 0xff, 0x29, 0x01, 0x34, 0x02, 0x3b, 0x03, 0xf4, 0x04, 0x50, 0x05, 0x20, 0x06, 0x2b, 0x08, + 0xe2, 0x08, 0x3d, 0x0b, 0x75, 0x0d, 0xea, 0x0d, 0x8d, 0x10, 0xd5, 0x12, 0x63, 0x12, 0x0c, 0x14, + 0xdd, 0x15, 0x9b, 0x18, 0x9d, 0x1a, 0xd5, 0x19, 0x09, 0x19, 0x71, 0x17, 0x30, 0x12, 0x11, 0x0c, + 0x98, 0x06, 0xa5, 0x02, 0x54, 0xfe, 0x6a, 0xf9, 0xd4, 0xf6, 0x2b, 0xf6, 0xc4, 0xf7, 0xca, 0xf6, + 0xdf, 0xf9, 0xab, 0xfc, 0x77, 0xfc, 0x50, 0xfb, 0x01, 0xf9, 0x90, 0xf7, 0xb1, 0xf4, 0xea, 0xf2, + 0x3c, 0xf2, 0x5b, 0xf2, 0x51, 0xf4, 0x65, 0xf6, 0xda, 0xf8, 0x50, 0xfa, 0x9e, 0xfa, 0xc4, 0xfc, + 0xa8, 0xfd, 0xb0, 0xff, 0xcb, 0x01, 0x2b, 0x02, 0x15, 0x03, 0x99, 0x04, 0x71, 0x04, 0x2c, 0x03, + 0x71, 0x00, 0xd8, 0xfd, 0x81, 0xfb, 0x6b, 0xf8, 0xd3, 0xf7, 0xbe, 0xf7, 0x4b, 0xf5, 0xab, 0xf3, + 0x9d, 0xf2, 0x6c, 0xef, 0x7b, 0xef, 0x3b, 0xef, 0xc0, 0xf1, 0x08, 0xf6, 0x2c, 0xf9, 0xfb, 0xfb, + 0xd0, 0xff, 0xaa, 0x04, 0x4c, 0x09, 0x0b, 0x0e, 0x61, 0x11, 0xde, 0x13, 0x6a, 0x14, 0xdb, 0x13, + 0x22, 0x13, 0x9d, 0x12, 0x2b, 0x11, 0x93, 0x10, 0xe7, 0x0f, 0x75, 0x10, 0x0f, 0x13, 0xb2, 0x14, + 0xd3, 0x13, 0x3a, 0x14, 0x73, 0x15, 0xc5, 0x14, 0x88, 0x12, 0xc0, 0x10, 0x74, 0x0c, 0x02, 0x07, + 0x59, 0x03, 0x24, 0xfd, 0x9e, 0xf9, 0x4e, 0xf7, 0x76, 0xf5, 0x22, 0xf5, 0xdb, 0xf4, 0x14, 0xf6, + 0x40, 0xf8, 0xf5, 0xf7, 0xb6, 0xf8, 0xaf, 0xf9, 0xa2, 0xf8, 0x23, 0xf7, 0x2b, 0xf6, 0x85, 0xf7, + 0xbc, 0xf7, 0x88, 0xf7, 0x13, 0xf6, 0x70, 0xf4, 0x68, 0xf3, 0xee, 0xf3, 0x11, 0xf4, 0x6d, 0xf3, + 0x30, 0xf3, 0x7d, 0xf2, 0xf3, 0xf1, 0xb7, 0xf2, 0x04, 0xf1, 0xcd, 0xef, 0xa0, 0xf0, 0x72, 0xf0, + 0xa2, 0xef, 0xfe, 0xee, 0x24, 0xf0, 0x86, 0xef, 0xb8, 0xed, 0x4b, 0xec, 0x82, 0xec, 0xdc, 0xec, + 0xb4, 0xec, 0xb9, 0xeb, 0xe5, 0xeb, 0xd7, 0xec, 0x9c, 0xed, 0xe6, 0xed, 0x3d, 0xef, 0xab, 0xf2, + 0xeb, 0xf5, 0x03, 0xf9, 0x72, 0xfd, 0x83, 0x05, 0xdd, 0x09, 0x87, 0x0b, 0x8e, 0x0c, 0x06, 0x0b, + 0xf1, 0x09, 0xc9, 0x08, 0x80, 0x09, 0x7d, 0x0b, 0xc5, 0x0c, 0xc8, 0x0f, 0xe9, 0x12, 0x13, 0x16, + 0x9e, 0x18, 0xf0, 0x19, 0x4e, 0x1a, 0x17, 0x1a, 0x2c, 0x19, 0x83, 0x17, 0x72, 0x16, 0xdc, 0x13, + 0x0e, 0x10, 0xdf, 0x0b, 0xbf, 0x08, 0x31, 0x05, 0x06, 0x01, 0xee, 0xfe, 0x9a, 0xfd, 0x6f, 0xfb, + 0x47, 0xfa, 0x8b, 0xfa, 0xbb, 0xfa, 0x49, 0xfd, 0xab, 0xfe, 0xbd, 0xfe, 0xe3, 0xff, 0xd0, 0x00, + 0xb7, 0x01, 0xb1, 0x02, 0x4a, 0x03, 0x88, 0x05, 0xca, 0x06, 0xda, 0x07, 0x98, 0x0a, 0xe0, 0x0d, + 0x5e, 0x0f, 0x9a, 0x10, 0xc6, 0x10, 0x39, 0x0e, 0x09, 0x0c, 0xda, 0x0a, 0x98, 0x08, 0x90, 0x06, + 0x41, 0x05, 0x28, 0x04, 0x21, 0x03, 0x9e, 0x02, 0xb6, 0x02, 0x7c, 0x00, 0x9b, 0xfe, 0x30, 0xfa, + 0x88, 0xf5, 0x6e, 0xf2, 0xe7, 0xed, 0x3c, 0xea, 0x8b, 0xe8, 0x2f, 0xe9, 0xf1, 0xea, 0xc8, 0xed, + 0x1d, 0xf2, 0xd0, 0xf5, 0x09, 0xf8, 0x3e, 0xfa, 0xe8, 0xfb, 0x24, 0xfd, 0xc3, 0xfe, 0xd7, 0xff, + 0xb4, 0x00, 0x90, 0x03, 0x4b, 0x04, 0x33, 0x06, 0x10, 0x07, 0xd8, 0x05, 0xe7, 0x06, 0xb7, 0x07, + 0x67, 0x07, 0xb7, 0x09, 0xb3, 0x0a, 0x4f, 0x09, 0xe4, 0x08, 0xc7, 0x06, 0x02, 0x04, 0x1e, 0x01, + 0x0b, 0x01, 0xae, 0xff, 0x1e, 0xfd, 0x02, 0xfb, 0x6b, 0xfa, 0x6c, 0xfa, 0xb6, 0xf9, 0x13, 0xfa, + 0x8b, 0xfa, 0x4b, 0xfc, 0x4f, 0xfe, 0x7f, 0xff, 0xfd, 0xff, 0xd0, 0xff, 0xc6, 0xfd, 0x92, 0xfb, + 0xed, 0xf9, 0xc8, 0xfa, 0x01, 0xfc, 0x5a, 0xfd, 0x25, 0xff, 0xe4, 0xff, 0xe7, 0x00, 0xde, 0x01, + 0xff, 0x01, 0xe5, 0x02, 0xc6, 0x02, 0xa3, 0x02, 0x44, 0x03, 0x15, 0x01, 0x56, 0x00, 0x6c, 0xff, + 0xea, 0xff, 0x5c, 0x01, 0x37, 0x02, 0xc5, 0x01, 0x14, 0x02, 0xb4, 0x01, 0x1e, 0xff, 0x86, 0xfc, + 0x19, 0xfa, 0xfe, 0xf7, 0x2b, 0xf4, 0xfb, 0xf3, 0x5f, 0xf4, 0x3c, 0xf4, 0x4b, 0xf2, 0x2b, 0xf3, + 0x42, 0xf4, 0xf3, 0xf5, 0xcf, 0xf7, 0x8d, 0xf8, 0x36, 0xfa, 0xb9, 0xfa, 0xaa, 0xfa, 0x90, 0xfa, + 0x90, 0xf9, 0x64, 0xf9, 0x0a, 0xfa, 0x06, 0xfb, 0xd0, 0xfb, 0xb6, 0xfd, 0xaa, 0x01, 0x96, 0x04, + 0x68, 0x07, 0xe0, 0x08, 0x76, 0x0a, 0x02, 0x0d, 0x50, 0x0e, 0x41, 0x0d, 0xfe, 0x0b, 0x08, 0x0c, + 0xda, 0x08, 0xbe, 0x05, 0xb4, 0x02, 0xbb, 0xfe, 0xc4, 0xfc, 0xd4, 0xfb, 0xf0, 0xf9, 0x9b, 0xfc, + 0x46, 0xfe, 0xdd, 0xfe, 0xd6, 0xfe, 0x04, 0xfe, 0x26, 0xfd, 0xd4, 0xfa, 0x60, 0xfa, 0xba, 0xf9, + 0xee, 0xf9, 0xe0, 0xfa, 0x82, 0xfe, 0x00, 0x02, 0x83, 0x04, 0x0d, 0x05, 0x8f, 0x04, 0x8d, 0x05, + 0xc2, 0x04, 0x66, 0x04, 0x41, 0x06, 0xc2, 0x06, 0xec, 0x06, 0x4b, 0x07, 0xee, 0x05, 0x1a, 0x04, + 0xd5, 0x02, 0x8a, 0x02, 0xb5, 0x02, 0xc4, 0x01, 0x0b, 0xff, 0x5f, 0xfb, 0xcc, 0xf7, 0xa8, 0xf5, + 0x33, 0xf3, 0xee, 0xf2, 0x95, 0xf3, 0x10, 0xf4, 0x09, 0xf4, 0x5e, 0xf4, 0xda, 0xf5, 0x16, 0xf8, + 0x74, 0xfb, 0xcf, 0xfd, 0x24, 0x01, 0xb4, 0x06, 0x48, 0x0b, 0x22, 0x0e, 0x0a, 0x10, 0x0c, 0x10, + 0x54, 0x0e, 0x94, 0x0c, 0xaf, 0x0b, 0x37, 0x0b, 0xf1, 0x0a, 0xb3, 0x0b, 0xd0, 0x0c, 0xb3, 0x0f, + 0x5a, 0x12, 0xa3, 0x12, 0x74, 0x14, 0xc3, 0x13, 0x7a, 0x11, 0x99, 0x0e, 0x63, 0x0a, 0xfa, 0x05, + 0xec, 0x01, 0x75, 0xfe, 0x6d, 0xf9, 0x57, 0xf6, 0x83, 0xf5, 0x2a, 0xf5, 0xf9, 0xf3, 0x05, 0xf3, + 0x24, 0xf1, 0xbd, 0xef, 0xb1, 0xf0, 0x3f, 0xf2, 0xf2, 0xf2, 0xd1, 0xf6, 0xe5, 0xf9, 0xe5, 0xfa, + 0x08, 0xfb, 0xc0, 0xf9, 0x7a, 0xfa, 0x22, 0xfc, 0x1c, 0xfd, 0x7f, 0xfd, 0x80, 0xff, 0x4e, 0x00, + 0x75, 0xff, 0x10, 0xff, 0xda, 0xfe, 0xa4, 0xfe, 0x33, 0x01, 0x75, 0x01, 0xda, 0x01, 0x43, 0x02, + 0x9a, 0x03, 0xac, 0x06, 0x50, 0x08, 0x4e, 0x09, 0xae, 0x09, 0xc0, 0x0b, 0xe7, 0x09, 0x6d, 0x06, + 0x81, 0x04, 0x51, 0x02, 0xb9, 0xfe, 0x0a, 0xfc, 0x35, 0xf9, 0x5f, 0xf7, 0x93, 0xf6, 0x61, 0xf7, + 0x55, 0xfb, 0x74, 0xff, 0x1b, 0x03, 0x29, 0x05, 0xa0, 0x07, 0xbc, 0x08, 0x54, 0x09, 0x67, 0x09, + 0x63, 0x09, 0xa6, 0x07, 0x6d, 0x06, 0x3e, 0x05, 0xd1, 0x04, 0x75, 0x07, 0x1b, 0x0a, 0xc1, 0x0a, + 0x6a, 0x0c, 0xcd, 0x0e, 0x91, 0x0e, 0xc6, 0x0e, 0xaf, 0x0e, 0x66, 0x0c, 0xf1, 0x08, 0xd5, 0x06, + 0xb2, 0x04, 0x2f, 0x02, 0x96, 0xfd, 0xcc, 0xf9, 0x9a, 0xf6, 0x76, 0xf4, 0xc6, 0xf1, 0x91, 0xee, + 0xe5, 0xec, 0x70, 0xea, 0xea, 0xe7, 0x68, 0xe6, 0xa7, 0xe7, 0xdd, 0xe8, 0xc2, 0xe9, 0x1e, 0xea, + 0x29, 0xea, 0xd9, 0xea, 0x1f, 0xed, 0x1e, 0xf0, 0xe5, 0xf2, 0x6b, 0xf4, 0x83, 0xf6, 0xe0, 0xf7, + 0xd7, 0xf8, 0xe4, 0xf9, 0x3d, 0xfa, 0x02, 0xfd, 0x10, 0xfe, 0x9e, 0xff, 0x36, 0x00, 0xef, 0xfd, + 0xc8, 0xfd, 0x81, 0xff, 0x83, 0x00, 0x51, 0x02, 0xf4, 0x05, 0x1e, 0x08, 0xa8, 0x06, 0xa9, 0x03, + 0xa9, 0xff, 0x52, 0xfb, 0xb8, 0xf8, 0xe9, 0xf5, 0xe0, 0xf3, 0xad, 0xf2, 0x6d, 0xf4, 0x54, 0xf6, + 0xd6, 0xf9, 0xfb, 0xfe, 0xa3, 0x01, 0xae, 0x04, 0x72, 0x07, 0x43, 0x08, 0xbe, 0x09, 0xcf, 0x0b, + 0x38, 0x0d, 0x3d, 0x0d, 0x28, 0x0d, 0x78, 0x0b, 0xbd, 0x09, 0x2d, 0x0a, 0xef, 0x0b, 0xdd, 0x0d, + 0x86, 0x0f, 0xe1, 0x0f, 0x40, 0x10, 0x25, 0x0f, 0x15, 0x0e, 0x8a, 0x0e, 0x9f, 0x0e, 0x7d, 0x0e, + 0x50, 0x0d, 0x2f, 0x0c, 0xae, 0x09, 0x2d, 0x08, 0x36, 0x07, 0xc8, 0x04, 0x90, 0x03, 0xc2, 0x04, + 0xca, 0x05, 0x8f, 0x05, 0x9e, 0x04, 0xa6, 0x03, 0x5e, 0x02, 0x97, 0x00, 0x91, 0x00, 0xb5, 0xff, + 0x05, 0xfe, 0x86, 0xfd, 0x3d, 0xfe, 0xb5, 0x00, 0xbd, 0x03, 0xe8, 0x04, 0x9f, 0x07, 0xd1, 0x07, + 0xc1, 0x04, 0xba, 0x01, 0x7b, 0xff, 0xba, 0xfd, 0x4e, 0xfb, 0xc2, 0xf9, 0x65, 0xf8, 0xe1, 0xf7, + 0xe2, 0xf6, 0xa9, 0xf8, 0xf9, 0xfa, 0x3c, 0xfb, 0xe9, 0xfa, 0x71, 0xfa, 0x9b, 0xf8, 0x16, 0xf5, + 0x97, 0xf1, 0xcd, 0xef, 0x2e, 0xef, 0x52, 0xef, 0xc0, 0xee, 0x2f, 0xec, 0xf2, 0xea, 0x4a, 0xeb, + 0xa2, 0xec, 0xd7, 0xec, 0x6a, 0xf1, 0xfa, 0xf5, 0x10, 0xf7, 0xdd, 0xf8, 0x4b, 0xfa, 0x1c, 0xfc, + 0x7e, 0xfe, 0x55, 0x00, 0x65, 0x01, 0xc5, 0x01, 0xe2, 0x03, 0x26, 0x06, 0x90, 0x08, 0x11, 0x0d, + 0x8d, 0x0f, 0xab, 0x14, 0x15, 0x18, 0x3f, 0x18, 0xc4, 0x18, 0xcb, 0x18, 0xc0, 0x17, 0x8c, 0x15, + 0xa1, 0x12, 0xc9, 0x0e, 0x19, 0x0b, 0x4c, 0x07, 0x29, 0x05, 0xaf, 0x03, 0x59, 0x03, 0x65, 0x02, + 0x2f, 0x02, 0x22, 0x00, 0xfa, 0xfc, 0x97, 0xfa, 0xc4, 0xfa, 0xe4, 0xf9, 0x41, 0xf8, 0x2f, 0xf9, + 0x34, 0xf9, 0xd3, 0xf8, 0x22, 0xfb, 0x44, 0xfe, 0x58, 0xff, 0xb9, 0x02, 0xc0, 0x05, 0x46, 0x06, + 0x1a, 0x06, 0x90, 0x04, 0xc5, 0x02, 0x8e, 0x02, 0x7b, 0x02, 0xe8, 0x01, 0xf9, 0x00, 0x96, 0xff, + 0x71, 0xfe, 0x37, 0xfe, 0xfd, 0xfe, 0x58, 0xff, 0x12, 0x00, 0x8f, 0xfe, 0x19, 0xfb, 0xa0, 0xf6, + 0xd8, 0xf2, 0x6c, 0xef, 0xa1, 0xec, 0x3b, 0xe9, 0x65, 0xe7, 0x40, 0xe7, 0x09, 0xe6, 0x0d, 0xe7, + 0x5b, 0xe9, 0xe0, 0xec, 0x5b, 0xf1, 0xc1, 0xf5, 0xcc, 0xf9, 0xc2, 0xfc, 0x1f, 0xfe, 0xfe, 0x00, + 0x6f, 0x04, 0xbb, 0x06, 0x95, 0x07, 0x79, 0x06, 0xc6, 0x05, 0xaf, 0x06, 0xda, 0x08, 0x95, 0x0a, + 0x2f, 0x0f, 0xca, 0x14, 0xe3, 0x17, 0xa5, 0x18, 0xc8, 0x16, 0xe5, 0x15, 0xf9, 0x12, 0xc0, 0x0e, + 0xf8, 0x0b, 0x47, 0x09, 0xe6, 0x07, 0x56, 0x06, 0x3f, 0x05, 0x55, 0x04, 0x12, 0x02, 0x34, 0x01, + 0x35, 0x00, 0x9e, 0xfd, 0xc1, 0xf9, 0x5f, 0xf7, 0x90, 0xf7, 0xb0, 0xf6, 0x86, 0xf6, 0x18, 0xf6, + 0x55, 0xf5, 0xee, 0xf4, 0xd0, 0xf4, 0x52, 0xf6, 0xb8, 0xf9, 0x7e, 0xfb, 0x18, 0xfc, 0xd8, 0xfb, + 0x32, 0xfa, 0xbf, 0xf8, 0x48, 0xfa, 0x53, 0xfc, 0x65, 0xfc, 0xc8, 0xfe, 0x02, 0x00, 0xea, 0x00, + 0xcc, 0x01, 0xc1, 0x02, 0xa6, 0x03, 0x81, 0x06, 0x78, 0x0a, 0x93, 0x0c, 0xc9, 0x0d, 0x6e, 0x0b, + 0x4a, 0x08, 0x36, 0x04, 0x10, 0x00, 0xb8, 0xfb, 0xb8, 0xf7, 0x1a, 0xf5, 0xde, 0xf2, 0x86, 0xf1, + 0x7b, 0xf2, 0x2e, 0xf4, 0x36, 0xf8, 0x50, 0xfd, 0x17, 0xfe, 0x10, 0xfe, 0x08, 0xff, 0x72, 0xfe, + 0xfe, 0xfc, 0xf1, 0xfc, 0x55, 0xfc, 0xbf, 0xfb, 0x20, 0xfb, 0x84, 0xfb, 0xc0, 0xfc, 0x2e, 0x00, + 0x1d, 0x02, 0x37, 0x05, 0x77, 0x08, 0x95, 0x08, 0xf1, 0x08, 0xf3, 0x09, 0x90, 0x0c, 0x1a, 0x0d, + 0x62, 0x0c, 0x4a, 0x0a, 0xf7, 0x07, 0x6d, 0x05, 0x7f, 0x04, 0x5f, 0x01, 0x6f, 0xff, 0xac, 0xfe, + 0x37, 0xfd, 0xaa, 0xfb, 0x73, 0xf8, 0x4b, 0xf7, 0xc3, 0xf5, 0x97, 0xf4, 0x7b, 0xf3, 0x95, 0xf3, + 0xc5, 0xf5, 0x90, 0xf7, 0xd7, 0xf8, 0x9c, 0xfc, 0x1c, 0x00, 0x6d, 0x05, 0xc5, 0x0a, 0x57, 0x0d, + 0x1e, 0x0d, 0x85, 0x0c, 0x32, 0x0d, 0x78, 0x0c, 0x1a, 0x0b, 0x7b, 0x09, 0xc8, 0x08, 0x82, 0x07, + 0xc1, 0x06, 0xbe, 0x06, 0x21, 0x09, 0x2b, 0x0c, 0x8f, 0x0e, 0x68, 0x0e, 0xa5, 0x0d, 0x6d, 0x0b, + 0x08, 0x08, 0xb6, 0x03, 0xcc, 0xfe, 0x50, 0xfb, 0x1d, 0xf8, 0x56, 0xf6, 0x39, 0xf4, 0x23, 0xf5, + 0x18, 0xf4, 0x30, 0xf4, 0x99, 0xf7, 0xa7, 0xfa, 0xb1, 0xfd, 0xb8, 0xfe, 0x1a, 0xff, 0xea, 0xff, + 0xb9, 0x00, 0x08, 0x01, 0x22, 0x01, 0xf9, 0x00, 0xb3, 0xff, 0x60, 0xfe, 0x80, 0xff, 0x2d, 0x00, + 0x13, 0x01, 0x4d, 0x02, 0x0a, 0x02, 0xc7, 0x01, 0xd6, 0x01, 0x1a, 0x02, 0xab, 0x02, 0x47, 0x01, + 0xc5, 0xff, 0xc7, 0xfe, 0xd0, 0xfc, 0x22, 0xfa, 0x9a, 0xf8, 0xa5, 0xf8, 0xc9, 0xf7, 0x6e, 0xf7, + 0xbb, 0xf7, 0xae, 0xf6, 0xb7, 0xf4, 0x7e, 0xf4, 0xc1, 0xf4, 0x48, 0xf4, 0x80, 0xf3, 0x08, 0xf3, + 0x30, 0xf2, 0xe6, 0xf1, 0x12, 0xf3, 0xad, 0xf3, 0x50, 0xf7, 0xe3, 0xfc, 0xe6, 0x00, 0x2e, 0x05, + 0x4f, 0x06, 0x25, 0x05, 0xbb, 0x02, 0x73, 0x00, 0x7b, 0xfe, 0xcf, 0xfc, 0xd5, 0xfd, 0x4a, 0xff, + 0x4a, 0x01, 0x8f, 0x02, 0x5a, 0x04, 0x61, 0x07, 0x7b, 0x0a, 0x49, 0x0c, 0x01, 0x0c, 0x70, 0x0b, + 0x58, 0x0b, 0x28, 0x09, 0x69, 0x05, 0x6a, 0x01, 0xa6, 0xfd, 0x3d, 0xfa, 0x5b, 0xf7, 0x6e, 0xf6, + 0xd1, 0xf6, 0x8c, 0xf7, 0x37, 0xf7, 0xbc, 0xf7, 0xe6, 0xf8, 0x96, 0xf9, 0x84, 0xfb, 0x19, 0xfe, + 0x86, 0xfe, 0x1b, 0x00, 0x68, 0x03, 0xac, 0x05, 0xe6, 0x05, 0xd5, 0x07, 0x18, 0x08, 0x4a, 0x09, + 0x2f, 0x0e, 0xf6, 0x11, 0x68, 0x16, 0xe4, 0x18, 0x03, 0x1b, 0x96, 0x1b, 0xc3, 0x1a, 0x3e, 0x19, + 0x08, 0x16, 0xfb, 0x12, 0x0a, 0x10, 0x58, 0x0c, 0xa4, 0x0a, 0xb9, 0x0a, 0xce, 0x09, 0xe1, 0x07, + 0x14, 0x05, 0xba, 0x01, 0x53, 0xfd, 0xd1, 0xf9, 0x0d, 0xf5, 0x4f, 0xf0, 0xd4, 0xec, 0xee, 0xe9, + 0x8d, 0xe8, 0x99, 0xe7, 0xad, 0xe6, 0x1d, 0xe9, 0x78, 0xeb, 0xe9, 0xed, 0x70, 0xf1, 0xf8, 0xf2, + 0xd7, 0xf3, 0xe2, 0xf4, 0x51, 0xf6, 0x55, 0xf6, 0x87, 0xf7, 0x04, 0xf9, 0x03, 0xf9, 0x11, 0xf9, + 0xaf, 0xfb, 0x45, 0xfc, 0xcd, 0xfc, 0x09, 0xfe, 0x5f, 0xff, 0x8c, 0x01, 0x5b, 0x01, 0x43, 0x02, + 0xe8, 0x01, 0x0c, 0x00, 0xce, 0xfc, 0xf0, 0xf8, 0x60, 0xf6, 0x29, 0xf5, 0x2b, 0xf4, 0x31, 0xf4, + 0xf6, 0xf4, 0x70, 0xf7, 0x68, 0xfa, 0x58, 0xfd, 0x0d, 0x00, 0xbf, 0x02, 0xb9, 0x05, 0x25, 0x07, + 0x85, 0x07, 0xb7, 0x06, 0x58, 0x07, 0xd1, 0x07, 0x09, 0x06, 0x1c, 0x04, 0xaf, 0x05, 0x0f, 0x08, + 0xc0, 0x09, 0x72, 0x0c, 0x9f, 0x0e, 0x04, 0x10, 0x7e, 0x11, 0x24, 0x12, 0x4a, 0x11, 0x24, 0x10, + 0x88, 0x0f, 0x83, 0x0f, 0x45, 0x0d, 0x99, 0x0c, 0xdc, 0x0a, 0x53, 0x09, 0xef, 0x08, 0x87, 0x07, + 0xf2, 0x05, 0xe2, 0x03, 0x3c, 0x02, 0xb8, 0xff, 0x0f, 0xfd, 0xa7, 0xfb, 0x4a, 0xf8, 0x1a, 0xf5, + 0xa8, 0xf3, 0x93, 0xf2, 0xb6, 0xf3, 0x44, 0xf5, 0x5d, 0xf6, 0xae, 0xf7, 0x7a, 0xf8, 0x55, 0xf8, + 0xe5, 0xf8, 0x46, 0xf9, 0x7c, 0xf8, 0x09, 0xf7, 0x28, 0xf6, 0x9a, 0xf5, 0x2d, 0xf6, 0x27, 0xf6, + 0xa4, 0xf5, 0xa3, 0xf8, 0xa1, 0xfb, 0x06, 0xff, 0xe7, 0x01, 0xbf, 0x04, 0x89, 0x06, 0xc2, 0x07, + 0x99, 0x09, 0x51, 0x09, 0x53, 0x06, 0x67, 0x04, 0x88, 0x01, 0x86, 0xfc, 0x51, 0xfa, 0x5f, 0xf9, + 0x1b, 0xf9, 0x16, 0xfa, 0x6d, 0xfb, 0x33, 0xfd, 0xa0, 0xff, 0xc7, 0x01, 0xbf, 0x02, 0x55, 0x02, + 0xd3, 0x00, 0xe6, 0xfe, 0xbd, 0xfe, 0x10, 0x00, 0xcd, 0x01, 0x56, 0x02, 0x70, 0x03, 0x6e, 0x05, + 0xbb, 0x06, 0x0d, 0x08, 0x4f, 0x09, 0xc7, 0x0a, 0x6c, 0x0c, 0x7b, 0x0e, 0x2c, 0x0f, 0xac, 0x0e, + 0xf5, 0x0d, 0x70, 0x0d, 0x2c, 0x0b, 0xd8, 0x08, 0xb4, 0x07, 0x1c, 0x07, 0x62, 0x05, 0xe6, 0x01, + 0xfa, 0xfd, 0x72, 0xfa, 0x43, 0xf8, 0xdd, 0xf6, 0x60, 0xf5, 0x86, 0xf3, 0x3c, 0xf4, 0xc1, 0xf4, + 0x18, 0xf3, 0xdc, 0xf2, 0xb1, 0xf2, 0xc3, 0xf4, 0xa7, 0xf7, 0x5e, 0xfa, 0x1c, 0xff, 0xa5, 0x02, + 0x0c, 0x06, 0x54, 0x08, 0x18, 0x08, 0x9f, 0x06, 0xf4, 0x03, 0xcf, 0x01, 0x87, 0xfe, 0xbf, 0xfc, + 0x3f, 0xfc, 0xd6, 0xfd, 0xa6, 0x00, 0x70, 0x02, 0x2c, 0x04, 0xae, 0x06, 0xb7, 0x06, 0xe1, 0x05, + 0x69, 0x04, 0xcc, 0x01, 0x6f, 0xfe, 0x0b, 0xfa, 0xb5, 0xf6, 0xf9, 0xf1, 0x2b, 0xed, 0x01, 0xec, + 0xd2, 0xec, 0x0d, 0xed, 0x5a, 0xed, 0x89, 0xee, 0xcc, 0xef, 0x6c, 0xf1, 0x05, 0xf5, 0x4c, 0xf8, + 0xe0, 0xf9, 0x0c, 0xfc, 0xd7, 0xfd, 0xbb, 0xfe, 0x68, 0x01, 0xf4, 0x02, 0x5c, 0x04, 0x86, 0x05, + 0xd3, 0x04, 0xa5, 0x04, 0xa0, 0x05, 0x95, 0x07, 0x09, 0x09, 0x0b, 0x0b, 0xa0, 0x0b, 0x75, 0x0b, + 0x7f, 0x0b, 0x6e, 0x0c, 0xa2, 0x0c, 0xce, 0x0b, 0xe8, 0x0c, 0x5f, 0x0e, 0x18, 0x10, 0xcb, 0x10, + 0x12, 0x10, 0x40, 0x0e, 0xbc, 0x0c, 0xa9, 0x0a, 0xef, 0x07, 0x01, 0x06, 0x09, 0x04, 0x22, 0x01, + 0xeb, 0xfd, 0x28, 0xfa, 0x0b, 0xfa, 0xae, 0xfb, 0x4d, 0xfd, 0x54, 0xff, 0xe5, 0x01, 0x85, 0x04, + 0x21, 0x06, 0x88, 0x06, 0x3b, 0x06, 0x00, 0x04, 0x98, 0x02, 0xc3, 0x02, 0x35, 0x01, 0xce, 0x00, + 0xe3, 0xff, 0xa2, 0x01, 0xe6, 0x02, 0x51, 0x03, 0x95, 0x04, 0xff, 0x05, 0xd1, 0x07, 0xa4, 0x08, + 0x85, 0x08, 0x1b, 0x08, 0x14, 0x06, 0xbb, 0x01, 0x48, 0xfd, 0xe6, 0xf8, 0x75, 0xf4, 0x02, 0xf2, + 0x49, 0xf1, 0x1c, 0xef, 0x7d, 0xed, 0xd1, 0xeb, 0x14, 0xea, 0x21, 0xea, 0x50, 0xeb, 0x3f, 0xec, + 0x5f, 0xed, 0x4c, 0xee, 0xce, 0xef, 0x2a, 0xf0, 0x21, 0xf0, 0x6c, 0xf2, 0x60, 0xf5, 0xf5, 0xf8, + 0x05, 0xfb, 0xed, 0xfc, 0x0b, 0xff, 0x18, 0x02, 0x08, 0x04, 0xe2, 0x06, 0xda, 0x09, 0x4d, 0x0c, + 0x9e, 0x0d, 0xf2, 0x0b, 0x16, 0x0b, 0xc2, 0x0a, 0x72, 0x0b, 0xc8, 0x0b, 0x2d, 0x0c, 0x62, 0x0c, + 0xde, 0x0c, 0x51, 0x0b, 0x5e, 0x08, 0x91, 0x04, 0xb3, 0x00, 0xaf, 0xfc, 0x07, 0xf9, 0xb5, 0xf6, + 0x94, 0xf4, 0xbe, 0xf2, 0x12, 0xf3, 0xa0, 0xf4, 0x17, 0xf7, 0x44, 0xfa, 0x9a, 0xfc, 0x54, 0xff, + 0x5f, 0x01, 0xf6, 0x03, 0x50, 0x06, 0x70, 0x06, 0xd1, 0x04, 0xb5, 0x03, 0xed, 0x02, 0x0a, 0x01, + 0xb9, 0x00, 0xd9, 0x01, 0x7b, 0x03, 0xde, 0x03, 0x67, 0x03, 0x70, 0x03, 0x67, 0x04, 0xa5, 0x04, + 0xf6, 0x04, 0x2d, 0x04, 0x21, 0x05, 0x47, 0x06, 0x46, 0x04, 0x37, 0x01, 0x41, 0xfd, 0x00, 0xfc, + 0x3b, 0xfc, 0x37, 0xfc, 0xf0, 0xfb, 0x15, 0xfd, 0x44, 0xff, 0x4d, 0x00, 0x34, 0x01, 0x0a, 0x03, + 0x93, 0x04, 0x46, 0x04, 0x2f, 0x02, 0x7f, 0x00, 0xea, 0xff, 0xaf, 0x01, 0x83, 0x04, 0xa5, 0x06, + 0x50, 0x08, 0x77, 0x09, 0x5d, 0x09, 0x3f, 0x08, 0xf4, 0x06, 0xf8, 0x05, 0xd1, 0x05, 0xb1, 0x05, + 0xeb, 0x04, 0x1f, 0x03, 0xc0, 0x01, 0xb2, 0x00, 0x5d, 0x00, 0xb1, 0x00, 0xdf, 0x00, 0xe3, 0x00, + 0x40, 0x00, 0xd9, 0xfd, 0x4f, 0xfa, 0x7f, 0xf8, 0xc3, 0xf6, 0xce, 0xf4, 0x22, 0xf4, 0x02, 0xf3, + 0x3b, 0xf1, 0xa2, 0xef, 0x82, 0xef, 0x0c, 0xf0, 0x79, 0xef, 0x90, 0xef, 0x86, 0xf0, 0x9f, 0xf2, + 0x0e, 0xf6, 0xac, 0xf7, 0x9c, 0xf9, 0x30, 0xfc, 0x6a, 0xfc, 0x0f, 0xfc, 0x05, 0xfc, 0x1c, 0xfc, + 0xb1, 0xfc, 0xdd, 0xfe, 0x90, 0x02, 0x6a, 0x05, 0xeb, 0x08, 0x41, 0x0b, 0x88, 0x0c, 0x50, 0x0d, + 0xb8, 0x0e, 0x68, 0x0f, 0x15, 0x0f, 0xe3, 0x0c, 0x6b, 0x09, 0xbf, 0x04, 0x32, 0x00, 0x65, 0xfc, + 0xd3, 0xfa, 0x38, 0xfb, 0x21, 0xfb, 0xca, 0xfb, 0xa6, 0xfb, 0x8c, 0xfa, 0xc4, 0xf9, 0x04, 0xf9, + 0x2a, 0xfa, 0x20, 0xfc, 0x98, 0xfc, 0xc1, 0xfc, 0x0c, 0xfd, 0xbc, 0xff, 0xa7, 0x02, 0xa1, 0x04, + 0xe7, 0x06, 0xac, 0x08, 0xee, 0x08, 0x53, 0x0a, 0x32, 0x0c, 0xe1, 0x0b, 0x20, 0x0d, 0xcc, 0x0d, + 0x04, 0x0d, 0x69, 0x0b, 0x2a, 0x0a, 0x57, 0x0a, 0xaf, 0x0a, 0x9c, 0x0a, 0xee, 0x08, 0x26, 0x07, + 0x49, 0x05, 0x0a, 0x02, 0x3d, 0xfd, 0xd4, 0xf8, 0x0c, 0xf6, 0xec, 0xf3, 0xe8, 0xf0, 0x8d, 0xef, + 0x7f, 0xed, 0x35, 0xeb, 0xd5, 0xea, 0x02, 0xec, 0xef, 0xee, 0xaa, 0xf2, 0xdd, 0xf5, 0x29, 0xf8, + 0x24, 0xfa, 0xcd, 0xfc, 0xc3, 0x00, 0x45, 0x04, 0x72, 0x06, 0x4c, 0x06, 0x00, 0x05, 0x92, 0x03, + 0xda, 0x03, 0xd5, 0x03, 0xef, 0x04, 0x42, 0x07, 0xf1, 0x09, 0x98, 0x0b, 0x7e, 0x0d, 0x20, 0x0d, + 0x3a, 0x0c, 0xd5, 0x0b, 0x8a, 0x09, 0x14, 0x08, 0x1f, 0x06, 0xcf, 0x03, 0x6e, 0x01, 0x85, 0xfe, + 0x16, 0xfd, 0xde, 0xfc, 0xd5, 0xfb, 0x40, 0xfb, 0x49, 0xfa, 0x3c, 0xf9, 0xf8, 0xf8, 0xec, 0xf8, + 0xc5, 0xf9, 0x76, 0xfa, 0xd9, 0xfa, 0xb3, 0xfa, 0x0f, 0xfa, 0x0c, 0xfa, 0xa5, 0xfc, 0x76, 0xfe, + 0xfc, 0xfe, 0x01, 0x01, 0x5a, 0x01, 0x68, 0x00, 0xfa, 0x00, 0x20, 0x01, 0x98, 0x02, 0x09, 0x06, + 0x29, 0x09, 0x0e, 0x0a, 0x78, 0x09, 0xb6, 0x09, 0x08, 0x0b, 0x1e, 0x0c, 0x9f, 0x0c, 0x9f, 0x0d, + 0x4b, 0x0e, 0x40, 0x0e, 0x41, 0x0c, 0xd6, 0x09, 0xe9, 0x07, 0x05, 0x04, 0xbc, 0xfe, 0xbb, 0xf9, + 0x77, 0xf5, 0x5c, 0xf2, 0xff, 0xef, 0x64, 0xef, 0xe5, 0xf0, 0x0a, 0xf2, 0x56, 0xf3, 0x63, 0xf4, + 0xfa, 0xf3, 0xf8, 0xf3, 0x37, 0xf5, 0x19, 0xf6, 0x4a, 0xf6, 0x1f, 0xf7, 0xb5, 0xf6, 0xe0, 0xf4, + 0x1b, 0xf4, 0x1b, 0xf5, 0x5b, 0xf8, 0x14, 0xfb, 0x6c, 0xfd, 0x26, 0x00, 0x58, 0x01, 0x1f, 0x02, + 0xc8, 0x03, 0x6e, 0x04, 0xa7, 0x05, 0xd9, 0x06, 0x7e, 0x06, 0x2d, 0x05, 0x4a, 0x04, 0x99, 0x02, + 0xeb, 0xfe, 0x84, 0xfc, 0x60, 0xfa, 0x7f, 0xf9, 0xbe, 0xf9, 0x50, 0xf9, 0x62, 0xf8, 0xe3, 0xf8, + 0xa2, 0xf9, 0xdc, 0xfa, 0xd3, 0xfb, 0xe3, 0xfb, 0xc5, 0xfc, 0xc9, 0xfe, 0x3c, 0x02, 0xbe, 0x06, + 0x07, 0x0c, 0x2c, 0x0f, 0x0d, 0x11, 0x12, 0x11, 0x9b, 0x11, 0x82, 0x12, 0x47, 0x13, 0xa9, 0x13, + 0x5e, 0x14, 0xf9, 0x13, 0x49, 0x12, 0xd5, 0x0f, 0x59, 0x0f, 0x9c, 0x10, 0x27, 0x11, 0xe3, 0x11, + 0x11, 0x12, 0xb0, 0x10, 0x90, 0x0d, 0xf1, 0x09, 0x51, 0x04, 0x9f, 0x00, 0xe0, 0xfe, 0xdc, 0xfb, + 0xac, 0xf8, 0x93, 0xf6, 0x8f, 0xf4, 0x42, 0xf3, 0xae, 0xf2, 0xe8, 0xf1, 0xac, 0xf2, 0x18, 0xf4, + 0x61, 0xf5, 0x79, 0xf5, 0xcd, 0xf6, 0x0a, 0xf8, 0xb3, 0xf7, 0xe7, 0xf5, 0x9b, 0xf4, 0xf8, 0xf3, + 0x9f, 0xf3, 0x03, 0xf4, 0x7f, 0xf4, 0xfb, 0xf4, 0x8f, 0xf6, 0x60, 0xf8, 0x77, 0xf8, 0x59, 0xf8, + 0x6d, 0xf8, 0x20, 0xfa, 0xdf, 0xfa, 0xef, 0xfb, 0x0e, 0xfc, 0xe9, 0xfb, 0x6a, 0xfa, 0x09, 0xf9, + 0x13, 0xf9, 0x13, 0xf9, 0x73, 0xf9, 0x15, 0xfa, 0x78, 0xf9, 0x43, 0xf9, 0x74, 0xfa, 0xa7, 0xfa, + 0x34, 0xfb, 0x9a, 0xfb, 0xd3, 0xfc, 0x03, 0xfc, 0x94, 0xfb, 0xad, 0xfb, 0x94, 0xfc, 0x74, 0xff, + 0xb0, 0x02, 0x1f, 0x06, 0xb0, 0x08, 0x9f, 0x09, 0xa1, 0x08, 0x1a, 0x08, 0x6e, 0x08, 0x0a, 0x08, + 0x46, 0x08, 0x66, 0x09, 0x90, 0x09, 0x88, 0x09, 0x02, 0x0b, 0x87, 0x0d, 0xa8, 0x0e, 0x36, 0x10, + 0x6c, 0x11, 0x36, 0x10, 0xaa, 0x0d, 0x63, 0x0a, 0x3e, 0x07, 0xc6, 0x02, 0xb1, 0xfe, 0x3a, 0xfc, + 0xde, 0xf9, 0xd5, 0xf6, 0xe1, 0xf4, 0x5a, 0xf4, 0x1e, 0xf4, 0xc2, 0xf3, 0x46, 0xf4, 0x9c, 0xf5, + 0x98, 0xf5, 0x18, 0xf6, 0x47, 0xf7, 0x44, 0xfa, 0x54, 0xfd, 0x06, 0x00, 0x31, 0x02, 0x16, 0x03, + 0x2a, 0x04, 0xf3, 0x05, 0xf9, 0x07, 0x2f, 0x0a, 0x0b, 0x0c, 0x30, 0x0f, 0x16, 0x12, 0xe5, 0x12, + 0xf8, 0x13, 0x77, 0x14, 0xdf, 0x12, 0x1b, 0x10, 0x8f, 0x0d, 0x07, 0x0b, 0x34, 0x08, 0x16, 0x06, + 0x47, 0x04, 0xdd, 0x01, 0x6e, 0x00, 0xed, 0xfe, 0x47, 0xfc, 0xd3, 0xf8, 0x62, 0xf6, 0x8a, 0xf4, + 0x4d, 0xf2, 0x37, 0xf1, 0xcb, 0xf1, 0x7e, 0xf1, 0xb8, 0xf0, 0x32, 0xf0, 0xa8, 0xf1, 0xd8, 0xf3, + 0xa6, 0xf6, 0x25, 0xfa, 0xbb, 0xfb, 0x7d, 0xfb, 0x11, 0xfb, 0xe4, 0xfa, 0x5e, 0xfb, 0x6e, 0xfb, + 0x63, 0xfd, 0x95, 0xff, 0xea, 0x01, 0x88, 0x02, 0xcc, 0x02, 0xc6, 0x03, 0xe8, 0x03, 0xc7, 0x04, + 0x82, 0x06, 0xa8, 0x07, 0xff, 0x05, 0xa2, 0x04, 0xc8, 0x03, 0x75, 0x00, 0xcd, 0xfc, 0xb7, 0xfa, + 0x87, 0xfa, 0xbb, 0xf8, 0x69, 0xf8, 0xaa, 0xf9, 0x71, 0xfb, 0x5d, 0xfd, 0x79, 0xff, 0x38, 0x01, + 0x79, 0x02, 0x0a, 0x03, 0x61, 0x03, 0x06, 0x03, 0x97, 0x02, 0x96, 0x03, 0x09, 0x03, 0x9c, 0x00, + 0x30, 0xfe, 0x81, 0xfe, 0x01, 0x00, 0x46, 0x00, 0xc7, 0x02, 0x63, 0x05, 0x61, 0x05, 0x0d, 0x06, + 0x96, 0x05, 0x8f, 0x05, 0xe0, 0x06, 0x57, 0x07, 0x36, 0x07, 0xff, 0x05, 0x84, 0x05, 0x74, 0x05, + 0x56, 0x04, 0x55, 0x01, 0x8a, 0xff, 0x6f, 0xfe, 0xc2, 0xfc, 0x57, 0xf9, 0xdd, 0xf7, 0x87, 0xf6, + 0xa3, 0xf3, 0x16, 0xf1, 0x1e, 0xf1, 0x7e, 0xf2, 0x01, 0xf3, 0xc8, 0xf3, 0x22, 0xf4, 0xd7, 0xf4, + 0x6f, 0xf7, 0xaf, 0xfa, 0x23, 0xfc, 0xb0, 0xfc, 0x36, 0xfc, 0x5d, 0xfc, 0xb9, 0xfb, 0x10, 0xfc, + 0x6c, 0xfe, 0x2c, 0x01, 0x95, 0x03, 0xa7, 0x04, 0x30, 0x07, 0x8b, 0x09, 0x9c, 0x0b, 0x61, 0x0e, + 0x66, 0x10, 0xec, 0x10, 0xed, 0x11, 0x5c, 0x11, 0x85, 0x0e, 0xdf, 0x0a, 0x21, 0x08, 0x85, 0x04, + 0x45, 0x00, 0x5b, 0xfc, 0x48, 0xfa, 0xe8, 0xf8, 0x26, 0xf7, 0xe8, 0xf7, 0x02, 0xfa, 0x59, 0xfb, + 0x8b, 0xfb, 0xe9, 0xfb, 0x59, 0xfc, 0x6e, 0xfc, 0x3c, 0xfd, 0x57, 0xfe, 0x12, 0xff, 0x7b, 0xff, + 0x5a, 0x00, 0xed, 0x01, 0xa8, 0x02, 0x55, 0x04, 0x4f, 0x06, 0xf6, 0x05, 0x79, 0x06, 0x89, 0x06, + 0x09, 0x06, 0x23, 0x04, 0x21, 0x03, 0xe4, 0x03, 0x7c, 0x04, 0x9e, 0x03, 0xa0, 0x02, 0x02, 0x02, + 0x57, 0x00, 0xc4, 0xfe, 0x60, 0xfe, 0x0e, 0xfd, 0xce, 0xf9, 0xd4, 0xf7, 0xb2, 0xf6, 0x76, 0xf5, + 0x93, 0xf5, 0x2a, 0xf7, 0x34, 0xf9, 0xd1, 0xfa, 0x78, 0xfc, 0x71, 0xfe, 0xd0, 0xff, 0x34, 0x01, + 0x1e, 0x03, 0xc3, 0x06, 0x1c, 0x0a, 0x53, 0x0c, 0xc9, 0x0c, 0x4e, 0x0b, 0x56, 0x08, 0xc2, 0x05, + 0xc3, 0x02, 0xa2, 0x00, 0x16, 0x00, 0xd0, 0xff, 0x03, 0x00, 0xd6, 0xff, 0x33, 0x02, 0x68, 0x04, + 0xa0, 0x05, 0xc7, 0x05, 0xee, 0x04, 0x5e, 0x02, 0x95, 0xff, 0x18, 0xfd, 0x71, 0xf9, 0x10, 0xf6, + 0xfb, 0xf2, 0xb4, 0xf0, 0x79, 0xef, 0x89, 0xee, 0x22, 0xef, 0x41, 0xf0, 0x99, 0xf0, 0xc8, 0xf0, + 0x9a, 0xf1, 0x46, 0xf2, 0xff, 0xf1, 0x41, 0xf2, 0x3a, 0xf4, 0x8e, 0xf7, 0x78, 0xfa, 0x4c, 0xfd, + 0xb7, 0xff, 0x69, 0x00, 0x63, 0x00, 0x57, 0x02, 0xd8, 0x04, 0xb6, 0x05, 0xe4, 0x06, 0xa9, 0x07, + 0x3e, 0x08, 0xd8, 0x07, 0xc0, 0x08, 0x75, 0x0a, 0xf3, 0x0b, 0xa3, 0x0c, 0x96, 0x0d, 0xbd, 0x0e, + 0x57, 0x0f, 0x4b, 0x10, 0x51, 0x10, 0x00, 0x0e, 0xb9, 0x0b, 0x34, 0x09, 0xb8, 0x05, 0xd6, 0x02, + 0xd3, 0x00, 0x22, 0xff, 0x1e, 0xfc, 0x99, 0xfa, 0x5f, 0xfa, 0xbd, 0xfa, 0x6e, 0xfb, 0x89, 0xfd, + 0xbe, 0xff, 0xcc, 0x02, 0x83, 0x06, 0x1f, 0x08, 0x62, 0x08, 0xec, 0x07, 0x25, 0x07, 0x2b, 0x06, + 0x88, 0x05, 0x74, 0x05, 0xb3, 0x06, 0xbd, 0x07, 0x55, 0x08, 0x51, 0x08, 0xb4, 0x08, 0x7f, 0x09, + 0xfb, 0x09, 0x33, 0x0a, 0x1b, 0x09, 0x5c, 0x06, 0x91, 0x02, 0x4a, 0xff, 0x31, 0xfb, 0xa5, 0xf7, + 0xff, 0xf4, 0x1c, 0xf2, 0xf5, 0xee, 0x5b, 0xec, 0xdb, 0xeb, 0x3d, 0xeb, 0xe4, 0xe9, 0x38, 0xe9, + 0xba, 0xe8, 0x99, 0xe8, 0xde, 0xe8, 0xa1, 0xe9, 0xaa, 0xeb, 0x8e, 0xee, 0x59, 0xf1, 0x9b, 0xf4, + 0x9c, 0xf8, 0xc3, 0xfb, 0xde, 0xfe, 0xdf, 0x00, 0x87, 0x03, 0xd4, 0x05, 0x3b, 0x07, 0xae, 0x08, + 0x5a, 0x09, 0x92, 0x08, 0x8c, 0x07, 0x8f, 0x06, 0x0e, 0x06, 0xea, 0x04, 0xf6, 0x03, 0xd0, 0x03, + 0xff, 0x03, 0x53, 0x05, 0x44, 0x06, 0x6b, 0x06, 0x23, 0x05, 0x8e, 0x02, 0x2a, 0xff, 0xb8, 0xfc, + 0x09, 0xfb, 0x3d, 0xf9, 0xd8, 0xf8, 0xd4, 0xf8, 0x14, 0xf9, 0x10, 0xfa, 0x69, 0xfc, 0x3e, 0xff, + 0x9a, 0x00, 0xd9, 0x01, 0x57, 0x03, 0x24, 0x05, 0xf2, 0x04, 0x67, 0x04, 0x05, 0x04, 0x0b, 0x03, + 0xd8, 0x02, 0xf1, 0x02, 0xca, 0x03, 0x19, 0x05, 0x77, 0x06, 0x30, 0x08, 0xa3, 0x09, 0xc0, 0x0a, + 0x16, 0x0c, 0x72, 0x0d, 0x0c, 0x0d, 0xd2, 0x0c, 0x2a, 0x0c, 0x3b, 0x0b, 0x20, 0x0a, 0x34, 0x08, + 0x71, 0x06, 0x91, 0x05, 0x70, 0x04, 0xaa, 0x02, 0x83, 0x02, 0x08, 0x02, 0x4b, 0x02, 0xbe, 0x03, + 0xa4, 0x02, 0xe2, 0x01, 0x61, 0x01, 0x94, 0x00, 0xd4, 0xfe, 0x80, 0xfd, 0x0c, 0xfd, 0x8a, 0xfd, + 0x96, 0xfe, 0x2b, 0xff, 0x49, 0x01, 0x09, 0x02, 0x13, 0x03, 0xe2, 0x02, 0x59, 0x02, 0x4d, 0x01, + 0x91, 0x01, 0xde, 0x01, 0xbf, 0xff, 0xb4, 0xfe, 0x91, 0xfe, 0xe6, 0xfd, 0x56, 0xfd, 0xdd, 0xfd, + 0x69, 0xfe, 0x75, 0xff, 0x34, 0xff, 0x6b, 0xfe, 0x59, 0xfd, 0xf7, 0xfa, 0xaa, 0xf7, 0x93, 0xf4, + 0x28, 0xf2, 0x64, 0xf0, 0xac, 0xf0, 0x3c, 0xf1, 0x6b, 0xf2, 0x07, 0xf4, 0xc7, 0xf4, 0x3a, 0xf7, + 0x1d, 0xf9, 0xba, 0xfa, 0x03, 0xfd, 0x6d, 0xff, 0xc7, 0x00, 0xe4, 0x00, 0x3c, 0x02, 0xb4, 0x02, + 0xe3, 0x03, 0xa9, 0x04, 0x28, 0x06, 0x09, 0x08, 0x2f, 0x0a, 0x90, 0x0d, 0xa7, 0x0e, 0x76, 0x0f, + 0x16, 0x10, 0x75, 0x10, 0xa5, 0x0f, 0x53, 0x0e, 0x7c, 0x0c, 0x6e, 0x0a, 0x59, 0x06, 0xe5, 0x01, + 0x75, 0xfc, 0xa6, 0xf8, 0xfd, 0xf4, 0xe0, 0xf2, 0x5d, 0xf3, 0xdd, 0xf2, 0x45, 0xf3, 0xfc, 0xf2, + 0x0f, 0xf3, 0x3e, 0xf3, 0xd8, 0xf2, 0x50, 0xf2, 0x88, 0xf1, 0x93, 0xf1, 0x47, 0xf3, 0xc1, 0xf6, + 0xd5, 0xf9, 0x7e, 0xfc, 0x0e, 0x00, 0x64, 0x01, 0xd8, 0x01, 0xc2, 0x02, 0xe3, 0x03, 0x46, 0x03, + 0x7b, 0x02, 0x64, 0x02, 0x30, 0x01, 0x14, 0x01, 0x44, 0x01, 0x11, 0x02, 0x55, 0x01, 0x02, 0x01, + 0x15, 0x02, 0x25, 0x02, 0x78, 0x01, 0x74, 0x00, 0x08, 0xff, 0xa4, 0xfb, 0x87, 0xf8, 0x13, 0xf6, + 0x9a, 0xf4, 0xdd, 0xf3, 0x72, 0xf4, 0x13, 0xf5, 0xd6, 0xf6, 0x1c, 0xf9, 0x26, 0xfb, 0x20, 0xfe, + 0x0f, 0x00, 0x3e, 0x01, 0x2a, 0x04, 0xe7, 0x06, 0x38, 0x08, 0x6a, 0x09, 0x33, 0x0a, 0x1f, 0x09, + 0x78, 0x07, 0x8c, 0x06, 0x93, 0x06, 0xb0, 0x06, 0xb2, 0x07, 0x33, 0x0b, 0xd9, 0x0d, 0xae, 0x0f, + 0x11, 0x11, 0xcc, 0x12, 0x11, 0x12, 0xab, 0x11, 0xe5, 0x10, 0xa1, 0x0e, 0x7b, 0x0c, 0xd7, 0x09, + 0x85, 0x07, 0x83, 0x03, 0x3c, 0x01, 0x22, 0x00, 0x6e, 0xfd, 0x1d, 0xfb, 0x65, 0xf9, 0x35, 0xf8, + 0x16, 0xf7, 0xa7, 0xf5, 0xc9, 0xf4, 0x8a, 0xf3, 0x89, 0xf2, 0xda, 0xf2, 0x1c, 0xf3, 0xee, 0xf3, + 0xfa, 0xf5, 0xab, 0xf8, 0xbe, 0xfb, 0x88, 0xfd, 0x64, 0xff, 0x64, 0x00, 0xc9, 0x00, 0xe0, 0x01, + 0xe3, 0x01, 0x9c, 0x03, 0x17, 0x05, 0x40, 0x06, 0x35, 0x07, 0x75, 0x09, 0x09, 0x0b, 0x8a, 0x0b, + 0xf6, 0x0c, 0xf7, 0x0d, 0x4a, 0x0f, 0xbd, 0x0f, 0x98, 0x0e, 0xa2, 0x0b, 0xc6, 0x07, 0x1c, 0x04, + 0xfa, 0xff, 0x7b, 0xfb, 0x57, 0xf7, 0xb4, 0xf4, 0x73, 0xf2, 0x18, 0xf1, 0xdc, 0xf2, 0x57, 0xf4, + 0x95, 0xf5, 0x24, 0xf6, 0x68, 0xf7, 0x42, 0xf8, 0x5c, 0xf8, 0x83, 0xf9, 0x87, 0xf9, 0x85, 0xf8, + 0x43, 0xf7, 0x2c, 0xf7, 0xb0, 0xf7, 0xd2, 0xf7, 0x79, 0xf9, 0x7d, 0xfb, 0x9e, 0xfc, 0xa6, 0xfd, + 0xfb, 0xfe, 0x07, 0x01, 0x4f, 0x02, 0x06, 0x02, 0xa9, 0x01, 0xb7, 0x00, 0x9c, 0x00, 0xdc, 0xff, + 0x92, 0xff, 0xb2, 0xfd, 0xfe, 0xfb, 0x44, 0xfb, 0x70, 0xfa, 0x8c, 0xf9, 0xd3, 0xf7, 0xd5, 0xf6, + 0x84, 0xf5, 0x8d, 0xf4, 0xbb, 0xf5, 0xcc, 0xf6, 0x2e, 0xf8, 0xc5, 0xf8, 0xa2, 0xfa, 0xe1, 0xfc, + 0x94, 0xff, 0xca, 0x03, 0xad, 0x06, 0x44, 0x09, 0x7d, 0x0b, 0xb8, 0x0d, 0xe6, 0x0e, 0xa6, 0x0e, + 0x8c, 0x0e, 0x06, 0x0f, 0xbc, 0x0d, 0xb0, 0x0b, 0x45, 0x0a, 0x77, 0x08, 0x2a, 0x07, 0xc5, 0x06, + 0x5b, 0x08, 0xd6, 0x08, 0x5d, 0x09, 0x73, 0x0a, 0x6e, 0x0a, 0xbc, 0x08, 0xe3, 0x04, 0xae, 0x01, + 0xb9, 0xfd, 0x8e, 0xfa, 0x6f, 0xf7, 0xb0, 0xf5, 0x14, 0xf5, 0x7a, 0xf4, 0x70, 0xf5, 0x9c, 0xf6, + 0xef, 0xf7, 0x05, 0xf9, 0x2d, 0xfa, 0x02, 0xfa, 0x84, 0xf9, 0xe1, 0xf9, 0xb1, 0xf9, 0x64, 0xfa, + 0x1b, 0xfa, 0x72, 0xfa, 0x79, 0xf9, 0x39, 0xf9, 0x0c, 0xfa, 0x77, 0xfb, 0x28, 0xfd, 0xd4, 0xfd, + 0xb6, 0xfe, 0x8a, 0xfe, 0x68, 0xff, 0xc7, 0xff, 0xa4, 0x01, 0xbc, 0x01, 0x51, 0x01, 0x61, 0x01, + 0xc7, 0xff, 0x29, 0x00, 0x03, 0xff, 0xd5, 0xfd, 0x51, 0xfc, 0x02, 0xfb, 0xf6, 0xfa, 0x78, 0xfb, + 0xc3, 0xfb, 0x51, 0xfb, 0x4a, 0xfb, 0x4d, 0xfb, 0x01, 0xfb, 0x08, 0xfc, 0xd5, 0xfc, 0x43, 0xfc, + 0xf8, 0xfd, 0xb2, 0x01, 0x16, 0x06, 0x5b, 0x0a, 0xdd, 0x0d, 0xeb, 0x10, 0xbb, 0x10, 0x47, 0x11, + 0x41, 0x0f, 0x8e, 0x0d, 0x5d, 0x0d, 0x59, 0x0c, 0xdb, 0x0b, 0xa8, 0x0b, 0x70, 0x0c, 0x66, 0x0d, + 0x9b, 0x0d, 0x51, 0x0d, 0x45, 0x0d, 0xc9, 0x0c, 0x6b, 0x0c, 0x19, 0x0b, 0xaf, 0x07, 0xfa, 0x03, + 0x1b, 0x00, 0xe5, 0xfb, 0x8a, 0xf9, 0x99, 0xf8, 0x16, 0xf7, 0x89, 0xf6, 0x3e, 0xf7, 0x51, 0xf8, + 0x63, 0xf9, 0x02, 0xfa, 0x9f, 0xfa, 0x7d, 0xfa, 0x2f, 0xfa, 0x0a, 0xfb, 0xef, 0xfd, 0x0d, 0x01, + 0xde, 0x01, 0x30, 0x03, 0xff, 0x04, 0xce, 0x05, 0x03, 0x06, 0x14, 0x07, 0xf3, 0x09, 0x9a, 0x0b, + 0x26, 0x0d, 0x1e, 0x0e, 0xbe, 0x0e, 0xd6, 0x0e, 0xba, 0x0d, 0x9e, 0x0b, 0xa0, 0x0a, 0x41, 0x08, + 0x70, 0x04, 0x35, 0x02, 0x44, 0x01, 0x07, 0xff, 0x9a, 0xfc, 0x2f, 0xfb, 0x4d, 0xf8, 0xb7, 0xf7, + 0xef, 0xf5, 0xde, 0xf3, 0x64, 0xf2, 0x02, 0xf1, 0xdd, 0xef, 0x75, 0xef, 0x7e, 0xef, 0xbf, 0xef, + 0x35, 0xf0, 0x25, 0xf2, 0xf7, 0xf3, 0x29, 0xf7, 0xf2, 0xf8, 0x49, 0xfa, 0x3c, 0xfb, 0xf4, 0xfa, + 0xee, 0xf8, 0xae, 0xf6, 0x39, 0xf8, 0x7d, 0xf9, 0x25, 0xfb, 0xe6, 0xfb, 0x82, 0xfd, 0x90, 0xfe, + 0x79, 0x00, 0x07, 0x02, 0x46, 0x02, 0x5b, 0x04, 0x05, 0x04, 0x64, 0x03, 0x4a, 0x03, 0x40, 0x01, + 0x79, 0xff, 0x79, 0xfd, 0xca, 0xfb, 0x8e, 0xf9, 0x94, 0xf9, 0x17, 0xfa, 0x6f, 0xf9, 0xc0, 0xfb, + 0x8b, 0xfc, 0x02, 0xfd, 0x1a, 0xfe, 0xcb, 0xff, 0xab, 0xff, 0xbc, 0xfe, 0xa9, 0xfe, 0xab, 0xfe, + 0x24, 0xfd, 0xef, 0xfc, 0x22, 0xfc, 0xca, 0xfc, 0x53, 0xfc, 0x06, 0xfd, 0x73, 0xfe, 0x71, 0x00, + 0x3c, 0x03, 0xa8, 0x04, 0xd4, 0x05, 0x48, 0x05, 0xe8, 0x04, 0x85, 0x05, 0xcf, 0x04, 0x23, 0x05, + 0x8c, 0x04, 0x4e, 0x04, 0xbc, 0x03, 0x83, 0x03, 0x28, 0x02, 0x5f, 0x00, 0xc1, 0xfe, 0x3f, 0xfc, + 0x3d, 0xfa, 0xee, 0xf7, 0x6b, 0xf5, 0xb9, 0xf5, 0xa7, 0xf5, 0x03, 0xf6, 0x8d, 0xf6, 0xa2, 0xf6, + 0xe7, 0xf7, 0x71, 0xf8, 0xf8, 0xfa, 0x95, 0xfd, 0x16, 0x00, 0x25, 0x01, 0x8e, 0x01, 0xe2, 0x01, + 0x8e, 0x02, 0x14, 0x02, 0x3a, 0x02, 0xb0, 0x03, 0xcd, 0x05, 0xf0, 0x06, 0x7e, 0x08, 0xb3, 0x09, + 0xbc, 0x0a, 0x09, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0xf9, 0x10, 0x41, 0x11, 0x2d, 0x10, 0xd0, 0x0e, + 0xd1, 0x0b, 0xde, 0x08, 0x5e, 0x05, 0x69, 0x03, 0x9a, 0x02, 0x5c, 0x01, 0x58, 0x01, 0x37, 0x02, + 0xda, 0x02, 0x76, 0x03, 0x7c, 0x05, 0xdb, 0x06, 0x82, 0x06, 0x81, 0x05, 0x00, 0x04, 0x89, 0x03, + 0x29, 0x04, 0x77, 0x03, 0x96, 0x03, 0x8f, 0x03, 0x2f, 0x04, 0x42, 0x04, 0xb5, 0x03, 0x13, 0x05, + 0xa2, 0x05, 0xca, 0x04, 0xd3, 0x03, 0x6a, 0x03, 0x17, 0x03, 0x1e, 0x02, 0x47, 0x02, 0x03, 0x03, + 0x3b, 0x02, 0x24, 0x02, 0x7d, 0x01, 0x7f, 0x00, 0x4f, 0xfe, 0x32, 0xfc, 0x6e, 0xfa, 0xd9, 0xf7, + 0xb5, 0xf5, 0xd0, 0xf3, 0xcb, 0xf2, 0x9c, 0xf2, 0xac, 0xf2, 0x5d, 0xf4, 0x52, 0xf6, 0xe5, 0xf7, + 0x8b, 0xf9, 0xc7, 0xf8, 0x68, 0xfa, 0xde, 0xfa, 0x8f, 0xfe, 0xbf, 0x01, 0x66, 0x03, 0xf3, 0x03, + 0x21, 0x03, 0xf6, 0x00, 0xa5, 0xfd, 0x2e, 0xfd, 0x3c, 0xfd, 0x7d, 0xfc, 0x1e, 0xfd, 0xb1, 0xfd, + 0xe1, 0xfe, 0x43, 0xff, 0x4d, 0xff, 0x63, 0x00, 0x46, 0x00, 0xb3, 0x01, 0x40, 0x01, 0xd2, 0x00, + 0xba, 0xfe, 0xe5, 0xfb, 0xc4, 0xf8, 0xd4, 0xf6, 0x0d, 0xf5, 0x2f, 0xf5, 0xcf, 0xf5, 0xd4, 0xf6, + 0x9a, 0xf6, 0xc4, 0xf7, 0xbe, 0xf9, 0xaa, 0xf9, 0xee, 0xf7, 0x1e, 0xf6, 0xa0, 0xf7, 0xa5, 0xf7, + 0xf4, 0xf9, 0x9d, 0xfa, 0x98, 0xfe, 0x7a, 0x00, 0xc3, 0x00, 0x8c, 0x00, 0xc5, 0x01, 0x8b, 0x02, + 0x26, 0x03, 0xeb, 0x03, 0xf1, 0x05, 0x0f, 0x09, 0x4a, 0x08, 0x29, 0x07, 0xa1, 0x09, 0xe9, 0x09, + 0xd0, 0x0a, 0x80, 0x0a, 0x67, 0x0a, 0x3f, 0x0b, 0x3c, 0x09, 0xdc, 0x07, 0x2b, 0x05, 0x8a, 0x03, + 0x3e, 0x03, 0x3a, 0x02, 0xe5, 0xff, 0x80, 0xff, 0x99, 0x00, 0xca, 0x00, 0xed, 0xff, 0x8e, 0x00, + 0x40, 0x00, 0xcb, 0xff, 0x7f, 0xfe, 0xaf, 0xff, 0x87, 0x04, 0x56, 0x08, 0x75, 0x08, 0x24, 0x08, + 0xde, 0x08, 0xbc, 0x05, 0xc3, 0x03, 0xba, 0x02, 0x74, 0x02, 0x9a, 0x03, 0xbe, 0x04, 0x38, 0x03, + 0x13, 0x03, 0x4c, 0x02, 0x06, 0x02, 0x38, 0x02, 0x0d, 0x01, 0x91, 0x00, 0xa2, 0x00, 0x7b, 0xff, + 0x08, 0xfc, 0x4c, 0xf8, 0x22, 0xf5, 0x6c, 0xf1, 0xcc, 0xee, 0x23, 0xee, 0x10, 0xef, 0x16, 0xef, + 0xe1, 0xee, 0xe9, 0xec, 0xa4, 0xec, 0x66, 0xf0, 0xd1, 0xf0, 0x2e, 0xef, 0x34, 0xf1, 0x33, 0xf4, + 0xf9, 0xf5, 0xd0, 0xf9, 0xff, 0xfc, 0x0d, 0xff, 0x09, 0x00, 0x16, 0x01, 0x67, 0xff, 0x82, 0x03, + 0xe3, 0x07, 0xab, 0x07, 0xf2, 0x08, 0x83, 0x0a, 0xfe, 0x0a, 0x69, 0x09, 0x0e, 0x0a, 0x14, 0x0b, + 0x3a, 0x0b, 0xe0, 0x0c, 0x32, 0x0c, 0xac, 0x0a, 0x06, 0x0a, 0xee, 0x06, 0x5d, 0x04, 0xe7, 0x00, + 0xd6, 0x00, 0x24, 0xff, 0x5b, 0xfe, 0xa5, 0xfb, 0x8f, 0xfa, 0xa0, 0xfa, 0x32, 0xfb, 0x7d, 0xfc, + 0xd4, 0xfe, 0xfe, 0xff, 0xc6, 0xfe, 0x96, 0xfe, 0x60, 0xff, 0x6c, 0x01, 0x48, 0x02, 0x2e, 0x03, + 0x98, 0x02, 0xfd, 0x02, 0xb9, 0x03, 0xaf, 0x04, 0x9f, 0x04, 0xd0, 0x06, 0x65, 0x07, 0x07, 0x09, + 0xc5, 0x09, 0x24, 0x0b, 0x2a, 0x0e, 0x3d, 0x0e, 0x05, 0x0e, 0x7f, 0x0c, 0xbb, 0x0d, 0xf9, 0x0d, + 0x34, 0x0e, 0xa9, 0x0c, 0x48, 0x0a, 0xd7, 0x08, 0x0a, 0x06, 0x33, 0x03, 0x74, 0x00, 0x31, 0xfe, + 0xf5, 0xfc, 0x09, 0xfa, 0x93, 0xfb, 0x4a, 0xfc, 0x73, 0xfd, 0x8a, 0xfb, 0x0d, 0xf8, 0x35, 0xf7, + 0x69, 0xf6, 0x5d, 0xf7, 0x98, 0xf9, 0x51, 0xfa, 0x82, 0xfa, 0xe7, 0xf8, 0x1a, 0xf7, 0x5a, 0xf7, + 0x9d, 0xf8, 0x7c, 0xfa, 0x52, 0xfa, 0x54, 0xfa, 0xb3, 0xf9, 0xfd, 0xfa, 0xdd, 0xfb, 0x88, 0xfd, + 0x3d, 0xfe, 0x9d, 0xfe, 0x3a, 0x00, 0x8f, 0x00, 0xa7, 0x00, 0xdd, 0x00, 0x34, 0xfe, 0xae, 0xf9, + 0xed, 0xf6, 0x70, 0xf5, 0x3d, 0xf3, 0xd9, 0xf1, 0xac, 0xf0, 0xcd, 0xef, 0xfb, 0xef, 0x27, 0xf1, + 0x41, 0xf2, 0x33, 0xf2, 0xe6, 0xf4, 0xa6, 0xf3, 0x93, 0xf4, 0x98, 0xf6, 0xb2, 0xfa, 0xb8, 0xff, + 0x95, 0x01, 0x55, 0x02, 0x87, 0x03, 0x4c, 0x04, 0xbf, 0x06, 0xcd, 0x09, 0x73, 0x0d, 0x9a, 0x0f, + 0x86, 0x0f, 0x77, 0x0f, 0xac, 0x11, 0xa9, 0x14, 0xd2, 0x15, 0x2f, 0x16, 0x7c, 0x13, 0x31, 0x13, + 0x51, 0x13, 0x5e, 0x12, 0xb8, 0x0f, 0x5a, 0x0c, 0xb2, 0x09, 0x73, 0x05, 0xcf, 0x02, 0x89, 0x01, + 0x99, 0x00, 0xe1, 0xfe, 0xc2, 0xfc, 0x3a, 0xfd, 0xa5, 0xfd, 0x2a, 0xfd, 0xde, 0xfb, 0x4b, 0xfa, + 0x28, 0xf9, 0xb6, 0xf9, 0xdd, 0xfc, 0xc1, 0xfd, 0x95, 0xfe, 0x4c, 0xfe, 0xe1, 0xfc, 0x0b, 0xfb, + 0x91, 0xfa, 0xd9, 0xfb, 0x17, 0xfd, 0xeb, 0xfb, 0x64, 0xfa, 0xda, 0xf9, 0xff, 0xf8, 0x6f, 0xf9, + 0xf8, 0xf8, 0xdf, 0xf6, 0xb4, 0xf8, 0xc8, 0xf8, 0xc7, 0xf8, 0xb0, 0xf8, 0x12, 0xf8, 0x71, 0xf6, + 0xb7, 0xf3, 0x7b, 0xf2, 0xe8, 0xf0, 0xc6, 0xf2, 0x59, 0xf4, 0x3f, 0xf4, 0x5c, 0xf6, 0x50, 0xf8, + 0xf3, 0xf8, 0x08, 0xfa, 0x35, 0xfb, 0xe7, 0xfd, 0x18, 0xff, 0x81, 0x01, 0x10, 0x04, 0x6c, 0x07, + 0x82, 0x09, 0xc5, 0x09, 0x8d, 0x09, 0xfc, 0x08, 0x25, 0x0b, 0xb0, 0x0b, 0x65, 0x0d, 0xf7, 0x0d, + 0x13, 0x0d, 0x3e, 0x0c, 0x4f, 0x0c, 0x2e, 0x0d, 0x82, 0x0f, 0x18, 0x0f, 0x03, 0x0f, 0x8f, 0x0d, + 0xdd, 0x0c, 0xab, 0x0a, 0x50, 0x09, 0x81, 0x07, 0x63, 0x05, 0xfc, 0x03, 0x37, 0x02, 0x84, 0x00, + 0xd0, 0xfd, 0xb2, 0xfd, 0x79, 0xfb, 0x7f, 0xfb, 0x0b, 0xfb, 0xb0, 0xfa, 0xa7, 0xfb, 0x9a, 0xfa, + 0x3f, 0xf9, 0x4f, 0xf9, 0x2a, 0xf9, 0xb5, 0xfa, 0x3c, 0xfc, 0xb0, 0xfe, 0xb6, 0xff, 0xc1, 0xff, + 0x61, 0xff, 0x0c, 0x01, 0x30, 0x03, 0xc4, 0x04, 0x77, 0x07, 0x21, 0x05, 0x78, 0x05, 0xb2, 0x06, + 0xe1, 0x06, 0x95, 0x06, 0xf6, 0x06, 0xc6, 0x06, 0x2c, 0x06, 0xeb, 0x04, 0x5f, 0x04, 0x15, 0x02, + 0xc8, 0xff, 0x09, 0xfb, 0x11, 0xf5, 0x29, 0xf1, 0xc0, 0xed, 0xcd, 0xeb, 0xdf, 0xea, 0xe8, 0xea, + 0x25, 0xea, 0xfd, 0xe8, 0x2f, 0xe7, 0xa1, 0xe7, 0x97, 0xe8, 0x3c, 0xe9, 0xac, 0xea, 0x26, 0xec, + 0x2c, 0xee, 0x0c, 0xf1, 0x59, 0xf2, 0xb5, 0xf4, 0xad, 0xf7, 0x70, 0xf8, 0xb5, 0xfa, 0xae, 0xfe, + 0x10, 0x01, 0x24, 0x03, 0x2a, 0x04, 0xac, 0x05, 0xae, 0x07, 0xea, 0x07, 0x74, 0x0a, 0xd4, 0x0b, + 0x9c, 0x0b, 0x27, 0x0b, 0x87, 0x0b, 0xef, 0x09, 0x03, 0x07, 0xad, 0x05, 0x98, 0x04, 0xad, 0x01, + 0x59, 0xff, 0x9b, 0xfe, 0xcc, 0xfe, 0x72, 0xff, 0x93, 0x01, 0x23, 0x01, 0x12, 0x02, 0x3c, 0x03, + 0x71, 0x03, 0x7e, 0x03, 0x44, 0x06, 0xe0, 0x09, 0x39, 0x0a, 0xb7, 0x0b, 0xde, 0x0e, 0x7b, 0x10, + 0x4e, 0x11, 0xc3, 0x11, 0x07, 0x12, 0x0c, 0x14, 0x04, 0x15, 0x9e, 0x14, 0xcd, 0x13, 0x1d, 0x16, + 0xe1, 0x13, 0x16, 0x11, 0x5c, 0x10, 0x04, 0x11, 0x99, 0x10, 0xc5, 0x0f, 0x2c, 0x0f, 0x80, 0x0c, + 0x15, 0x09, 0x20, 0x07, 0x5c, 0x03, 0xfe, 0xfe, 0xec, 0xfb, 0x07, 0xfa, 0x19, 0xf8, 0x74, 0xf6, + 0xa7, 0xf6, 0x8b, 0xf6, 0xf1, 0xf5, 0x88, 0xf4, 0x86, 0xf4, 0xbe, 0xf2, 0xfd, 0xf3, 0x8e, 0xf4, + 0x4d, 0xf3, 0xf2, 0xf3, 0x48, 0xf3, 0xaa, 0xf2, 0x0b, 0xf0, 0x8d, 0xf1, 0x74, 0xf3, 0xb2, 0xf3, + 0x16, 0xf4, 0xf8, 0xf4, 0x50, 0xf8, 0x4a, 0xf9, 0xd0, 0xfa, 0x43, 0xfc, 0xee, 0xfc, 0x27, 0x00, + 0x90, 0x00, 0x49, 0x03, 0x77, 0x05, 0x9c, 0x05, 0xe4, 0x02, 0x65, 0x02, 0xcd, 0x01, 0x16, 0x01, + 0xc0, 0x00, 0x9a, 0xff, 0xb6, 0xfd, 0xb3, 0xfd, 0xd1, 0xfc, 0xdd, 0xfb, 0xcb, 0xfa, 0x50, 0xfa, + 0xdc, 0xfa, 0xa6, 0xf9, 0xba, 0xfa, 0x90, 0xfb, 0xea, 0xfb, 0x54, 0xfb, 0xa4, 0xfb, 0xe9, 0xfc, + 0x32, 0xfe, 0xbe, 0xfe, 0x74, 0xfe, 0x03, 0xff, 0x49, 0x00, 0xbd, 0x00, 0xe1, 0x01, 0x0e, 0x03, + 0xd1, 0x03, 0x2f, 0x04, 0x43, 0x04, 0x86, 0x04, 0xf4, 0x06, 0x2a, 0x09, 0xef, 0x07, 0xc0, 0x06, + 0x49, 0x05, 0xe7, 0x03, 0x6c, 0x01, 0x46, 0x00, 0xd8, 0xfd, 0xc7, 0xfb, 0xa0, 0xf8, 0x70, 0xf7, + 0x5c, 0xf7, 0xdb, 0xf7, 0x21, 0xf9, 0x3a, 0xfa, 0x22, 0xf9, 0x44, 0xfa, 0xbb, 0xfb, 0xd9, 0xfd, + 0xf4, 0x00, 0x24, 0x02, 0xdb, 0x03, 0x8c, 0x04, 0x32, 0x05, 0x36, 0x06, 0x22, 0x08, 0x8d, 0x08, + 0x6f, 0x09, 0x74, 0x09, 0x8f, 0x0a, 0xb9, 0x0c, 0x67, 0x0e, 0xe0, 0x0c, 0x2c, 0x0a, 0xb2, 0x09, + 0x13, 0x08, 0xe2, 0x05, 0xdd, 0x05, 0xb9, 0x06, 0xd7, 0x03, 0x99, 0xff, 0xa9, 0xfb, 0x5c, 0xfa, + 0xca, 0xf9, 0xad, 0xf7, 0xa5, 0xf4, 0x0f, 0xf4, 0x5e, 0xf2, 0xbe, 0xf1, 0x13, 0xf2, 0xfa, 0xf4, + 0xc9, 0xf6, 0x0e, 0xf5, 0x79, 0xf5, 0xfa, 0xf6, 0xac, 0xf8, 0x62, 0xfc, 0xf1, 0xfd, 0x8f, 0xfe, + 0xa2, 0xfe, 0xad, 0xff, 0x9c, 0xff, 0x3b, 0x01, 0x48, 0x03, 0x53, 0x03, 0xef, 0x03, 0xd0, 0x03, + 0xfc, 0x03, 0xee, 0x03, 0x77, 0x04, 0x6e, 0x04, 0x94, 0x03, 0x23, 0x05, 0x95, 0x05, 0xa7, 0x06, + 0x82, 0x05, 0x8b, 0x03, 0xdb, 0x02, 0x4f, 0xff, 0x62, 0xfd, 0x0d, 0xfb, 0x9e, 0xfc, 0x34, 0xfd, + 0x1e, 0xfb, 0x40, 0xfa, 0x56, 0xfc, 0x84, 0xff, 0x2c, 0xff, 0xf9, 0xff, 0x20, 0x00, 0xf7, 0xff, + 0xff, 0xff, 0x5d, 0x01, 0xf6, 0x03, 0xbb, 0x05, 0x5a, 0x04, 0x61, 0x04, 0xf0, 0x04, 0xee, 0x05, + 0x10, 0x07, 0x86, 0x08, 0xbd, 0x07, 0x0f, 0x09, 0xd8, 0x09, 0xaf, 0x09, 0x08, 0x0a, 0xc9, 0x09, + 0xf2, 0x09, 0x3e, 0x09, 0x45, 0x09, 0xd6, 0x08, 0xfa, 0x07, 0xca, 0x06, 0x20, 0x05, 0x54, 0x01, + 0x73, 0xfe, 0xef, 0xfc, 0xfd, 0xfa, 0xe9, 0xf6, 0x08, 0xf6, 0x93, 0xf4, 0x0c, 0xf3, 0xfa, 0xf1, + 0xf8, 0xf1, 0xdc, 0xf2, 0x08, 0xf2, 0x40, 0xf1, 0x20, 0xf1, 0x86, 0xf3, 0x46, 0xf6, 0xf6, 0xf7, + 0x71, 0xf8, 0x46, 0xfa, 0x2e, 0xfb, 0xbc, 0xfc, 0xe2, 0xff, 0x5c, 0x04, 0xa9, 0x06, 0xef, 0x08, + 0x1e, 0x09, 0x34, 0x09, 0xf1, 0x09, 0xa8, 0x0b, 0xbd, 0x0c, 0x66, 0x0c, 0x3d, 0x0e, 0x2d, 0x0f, + 0xfe, 0x0d, 0xdc, 0x0b, 0x11, 0x0a, 0xfb, 0x06, 0x1c, 0x04, 0x0b, 0x01, 0xda, 0xff, 0xda, 0xfe, + 0x45, 0xfc, 0x52, 0xf9, 0x67, 0xf7, 0xa4, 0xf7, 0xc8, 0xf8, 0xda, 0xf8, 0xea, 0xf8, 0xa1, 0xf7, + 0x3a, 0xf8, 0x56, 0xf8, 0xfd, 0xf7, 0x8d, 0xf8, 0xb4, 0xfa, 0xc2, 0xfb, 0x30, 0xfb, 0x21, 0xfc, + 0xf0, 0xfd, 0x56, 0xff, 0x22, 0xff, 0x69, 0x00, 0x83, 0x01, 0xea, 0x00, 0x68, 0x01, 0x8a, 0x02, + 0xf4, 0x02, 0x14, 0x04, 0x97, 0x02, 0x2f, 0x02, 0xc6, 0x01, 0x52, 0x01, 0x3b, 0x01, 0x12, 0x01, + 0x9d, 0xfe, 0x80, 0xfc, 0x91, 0xfc, 0xea, 0xfa, 0xcc, 0xfa, 0x49, 0xfb, 0x5e, 0xfb, 0x3f, 0xfc, + 0x2e, 0xfd, 0xad, 0xfd, 0x62, 0xfe, 0xe0, 0xfe, 0xc0, 0xff, 0x2c, 0xff, 0x9e, 0x01, 0xda, 0x03, + 0xa0, 0x04, 0x7c, 0x02, 0x5b, 0x02, 0xe0, 0x00, 0x1e, 0xff, 0xac, 0xfe, 0xf1, 0xfe, 0x36, 0x02, + 0x56, 0x01, 0xac, 0xfe, 0xff, 0xfb, 0x5e, 0xfc, 0x37, 0xfd, 0xf9, 0xfb, 0x52, 0xfd, 0x55, 0xfe, + 0x04, 0xfd, 0xf6, 0xfc, 0xef, 0xfb, 0x9e, 0xfb, 0xdd, 0xfa, 0xbb, 0xf8, 0xd5, 0xf6, 0x3e, 0xf7, + 0x51, 0xf8, 0x75, 0xf7, 0x1d, 0xf7, 0x86, 0xf7, 0xd5, 0xf8, 0x25, 0xfa, 0x70, 0xfb, 0xdd, 0xfc, + 0x56, 0xfd, 0xcb, 0xfd, 0xb2, 0xfe, 0x6a, 0xff, 0x86, 0x00, 0x03, 0x01, 0xaf, 0x02, 0x76, 0x02, + 0x42, 0x02, 0x34, 0x03, 0x0b, 0x05, 0xb2, 0x06, 0x15, 0x07, 0xc1, 0x08, 0x21, 0x0b, 0x88, 0x09, + 0xc6, 0x08, 0x1b, 0x0a, 0xea, 0x0c, 0x70, 0x0c, 0x65, 0x0b, 0x66, 0x0a, 0x8d, 0x0a, 0x63, 0x0a, + 0x96, 0x08, 0x97, 0x07, 0xf9, 0x05, 0x6f, 0x03, 0x62, 0x01, 0x66, 0x01, 0xd0, 0x00, 0xcf, 0x01, + 0x60, 0x01, 0xa8, 0x00, 0x72, 0x00, 0x57, 0x00, 0x6d, 0x01, 0xe4, 0x01, 0x71, 0x02, 0x16, 0x04, + 0x02, 0x05, 0x4d, 0x05, 0x6d, 0x06, 0x06, 0x07, 0xf9, 0x05, 0x3f, 0x06, 0x52, 0x07, 0x01, 0x07, + 0x8c, 0x09, 0x74, 0x09, 0xfb, 0x07, 0x1e, 0x06, 0x96, 0x05, 0x2e, 0x05, 0x50, 0x05, 0xbe, 0x03, + 0x55, 0x03, 0x67, 0x02, 0x8d, 0xfe, 0xbd, 0xfa, 0x07, 0xf8, 0x6d, 0xf6, 0xf1, 0xf2, 0x4f, 0xef, + 0x66, 0xed, 0xde, 0xec, 0x41, 0xeb, 0xb0, 0xeb, 0xf5, 0xec, 0xd9, 0xee, 0x56, 0xf0, 0x77, 0xf2, + 0x5b, 0xf3, 0x0d, 0xf6, 0xf1, 0xf9, 0x93, 0xfb, 0xff, 0xfc, 0x80, 0xff, 0x15, 0x02, 0x90, 0x03, + 0xce, 0x05, 0xc5, 0x06, 0x1d, 0x08, 0x9f, 0x0a, 0x15, 0x0b, 0x54, 0x0c, 0x63, 0x0d, 0x6a, 0x0c, + 0x7c, 0x0c, 0x40, 0x0b, 0x85, 0x0b, 0xe4, 0x0a, 0x0b, 0x0a, 0x78, 0x07, 0x02, 0x05, 0xcb, 0x03, + 0xbc, 0x01, 0x92, 0xfe, 0x55, 0xfb, 0xbd, 0xf9, 0x57, 0xf7, 0x8e, 0xf3, 0x21, 0xf1, 0x24, 0xf0, + 0x06, 0xf2, 0x32, 0xf2, 0x2d, 0xf2, 0x94, 0xf3, 0xa3, 0xf3, 0xcd, 0xf3, 0x91, 0xf4, 0xf0, 0xf6, + 0xfb, 0xf7, 0xc7, 0xf8, 0x64, 0xfa, 0x96, 0xfb, 0xcb, 0xfc, 0x9f, 0xfe, 0x59, 0xff, 0x5b, 0x00, + 0x08, 0x02, 0xc1, 0x03, 0xcb, 0x03, 0xa7, 0x04, 0xfd, 0x04, 0x79, 0x04, 0xd1, 0x05, 0x16, 0x07, + 0xcd, 0x08, 0x84, 0x09, 0x65, 0x09, 0x8d, 0x08, 0x6d, 0x06, 0x43, 0x04, 0x96, 0x03, 0xa9, 0x01, + 0xeb, 0xfe, 0x5f, 0xfc, 0x8c, 0xfb, 0x15, 0xfc, 0x15, 0xfc, 0x9c, 0xfb, 0x76, 0xfd, 0xa0, 0xfd, + 0x33, 0xfc, 0xa0, 0xfa, 0x04, 0xfc, 0xc1, 0xfe, 0x69, 0xfd, 0x02, 0xfd, 0x40, 0xfd, 0x94, 0xfe, + 0x84, 0xfe, 0x81, 0xfe, 0x50, 0x00, 0x86, 0x01, 0xad, 0x01, 0x1e, 0x03, 0x47, 0x05, 0x86, 0x06, + 0x7e, 0x07, 0x60, 0x07, 0x48, 0x07, 0xf8, 0x08, 0x6c, 0x09, 0xd0, 0x09, 0x8c, 0x09, 0xc2, 0x08, + 0xc6, 0x06, 0xce, 0x04, 0x1a, 0x03, 0x25, 0x01, 0x31, 0xff, 0x58, 0xfd, 0x76, 0xfa, 0x10, 0xf8, + 0xcb, 0xf7, 0xee, 0xf7, 0x84, 0xf8, 0x83, 0xf7, 0x4a, 0xf7, 0xc9, 0xf6, 0x35, 0xf7, 0xd9, 0xf8, + 0x17, 0xfa, 0x9e, 0xfc, 0x99, 0xfe, 0x50, 0xfd, 0x6d, 0xfd, 0x47, 0xfe, 0x85, 0x01, 0xb4, 0x03, + 0x26, 0x05, 0xec, 0x06, 0x0d, 0x07, 0xb0, 0x07, 0x92, 0x08, 0x2f, 0x0a, 0xc8, 0x0a, 0xa9, 0x09, + 0xaa, 0x09, 0x81, 0x0a, 0xe2, 0x0a, 0x94, 0x0a, 0x73, 0x07, 0x12, 0x05, 0x2f, 0x02, 0x91, 0x00, + 0x31, 0xfe, 0xa6, 0xfc, 0x5a, 0xfa, 0x36, 0xf7, 0x04, 0xf7, 0x60, 0xf7, 0x96, 0xf8, 0x89, 0xfa, + 0xdf, 0xfb, 0xec, 0xfa, 0x3d, 0xfa, 0xec, 0xfb, 0x25, 0xfe, 0xf4, 0xfe, 0x7c, 0xff, 0x74, 0x00, + 0xe4, 0x00, 0x64, 0x00, 0xbe, 0x00, 0xd9, 0x00, 0x5f, 0x02, 0x93, 0x03, 0x9c, 0x02, 0xf0, 0x01, + 0x92, 0x02, 0xdd, 0x02, 0x5e, 0x01, 0xf5, 0x00, 0xef, 0xff, 0x75, 0xff, 0x94, 0xfe, 0xec, 0xfe, + 0x34, 0xff, 0x2f, 0xfe, 0x4b, 0xfc, 0xe9, 0xfa, 0xc1, 0xfa, 0x84, 0xfb, 0xbe, 0xfb, 0xf5, 0xfb, + 0x3c, 0xfb, 0x0b, 0xfd, 0x37, 0xfe, 0x67, 0xff, 0x99, 0x01, 0x96, 0x02, 0x7c, 0x03, 0xdd, 0x05, + 0x9c, 0x07, 0xa9, 0x09, 0xcb, 0x0b, 0x9e, 0x0c, 0x3e, 0x0c, 0xc3, 0x0a, 0x68, 0x0b, 0x34, 0x0d, + 0xb9, 0x0d, 0x86, 0x0c, 0x4b, 0x0c, 0x71, 0x0a, 0x90, 0x08, 0xb5, 0x07, 0x1e, 0x07, 0xbe, 0x07, + 0xb4, 0x06, 0x0b, 0x05, 0x60, 0x03, 0x17, 0x02, 0xda, 0x00, 0xcf, 0xfe, 0x2c, 0xfd, 0xa9, 0xfa, + 0x58, 0xf8, 0x79, 0xf5, 0x7f, 0xf3, 0x27, 0xf3, 0x07, 0xf1, 0x26, 0xf0, 0x03, 0xf1, 0xae, 0xf2, + 0x68, 0xf4, 0x7c, 0xf5, 0x6d, 0xf4, 0x74, 0xf4, 0xbe, 0xf4, 0x6c, 0xf5, 0xb7, 0xf7, 0xf8, 0xf9, + 0x9f, 0xfa, 0x37, 0xfa, 0x91, 0xfb, 0xc7, 0xfc, 0xb2, 0xfe, 0xec, 0x01, 0xae, 0x04, 0x8d, 0x05, + 0xd3, 0x05, 0xaf, 0x07, 0x69, 0x09, 0x6b, 0x09, 0x53, 0x08, 0x38, 0x08, 0x5f, 0x08, 0xb9, 0x08, + 0xe6, 0x07, 0xf0, 0x06, 0xd3, 0x05, 0x13, 0x02, 0x41, 0xfe, 0x4b, 0xfb, 0x39, 0xf9, 0x6e, 0xf7, + 0xba, 0xf5, 0xb1, 0xf3, 0x9e, 0xf2, 0xfc, 0xf1, 0x39, 0xf1, 0x84, 0xf0, 0xa2, 0xf1, 0x8b, 0xf2, + 0x16, 0xf2, 0xba, 0xf3, 0xc4, 0xf5, 0x52, 0xf8, 0xf1, 0xf9, 0x73, 0xfa, 0x09, 0xfc, 0x27, 0xff, + 0x7e, 0x01, 0x9c, 0x04, 0x5b, 0x06, 0x5e, 0x07, 0x43, 0x07, 0x0a, 0x08, 0x9f, 0x08, 0xa1, 0x09, + 0x06, 0x0b, 0x93, 0x0c, 0x19, 0x0c, 0x30, 0x0b, 0x9d, 0x0a, 0x18, 0x09, 0x8c, 0x07, 0x3b, 0x04, + 0x87, 0x02, 0x10, 0xff, 0x74, 0xfb, 0x4d, 0xf9, 0x4d, 0xf8, 0xb9, 0xf8, 0x92, 0xf8, 0xf3, 0xf8, + 0x21, 0xfa, 0x0d, 0xfb, 0x40, 0xfc, 0x3e, 0xfd, 0x57, 0xfe, 0x33, 0xfe, 0x9d, 0xff, 0xd4, 0x01, + 0xf6, 0x03, 0x3c, 0x07, 0x4f, 0x07, 0x36, 0x07, 0xc0, 0x07, 0x83, 0x0a, 0x66, 0x0d, 0xda, 0x0e, + 0xaa, 0x0e, 0x16, 0x0f, 0xd9, 0x0e, 0x52, 0x0e, 0x05, 0x0e, 0x5f, 0x0d, 0xcd, 0x0b, 0x31, 0x0a, + 0x91, 0x09, 0xf9, 0x07, 0x32, 0x07, 0xe9, 0x05, 0x20, 0x04, 0xca, 0xff, 0xd9, 0xfc, 0x55, 0xfb, + 0xdc, 0xf9, 0x69, 0xf8, 0xb6, 0xf6, 0xf5, 0xf6, 0x2e, 0xf6, 0xaf, 0xf4, 0x33, 0xf4, 0x90, 0xf4, + 0x6d, 0xf5, 0x96, 0xf5, 0x9c, 0xf5, 0xbd, 0xf5, 0x69, 0xf6, 0x1c, 0xf6, 0x28, 0xf6, 0x9e, 0xf6, + 0x67, 0xf7, 0xb8, 0xf8, 0x94, 0xf8, 0x3c, 0xfa, 0x7e, 0xfc, 0x8e, 0xfd, 0x57, 0xfd, 0x46, 0xfe, + 0xfc, 0xff, 0x28, 0x02, 0x77, 0x04, 0x66, 0x06, 0x30, 0x07, 0x42, 0x07, 0x48, 0x07, 0x24, 0x07, + 0xe7, 0x06, 0xa2, 0x06, 0x2e, 0x05, 0xfa, 0x03, 0xa3, 0x01, 0xeb, 0x00, 0x63, 0x02, 0x1f, 0x03, + 0x9b, 0x03, 0xa0, 0x03, 0x70, 0x04, 0x84, 0x04, 0x67, 0x03, 0x16, 0x02, 0x31, 0x02, 0xbf, 0x00, + 0xc4, 0xff, 0x99, 0xff, 0xc8, 0xff, 0x20, 0xff, 0x32, 0xfe, 0xeb, 0xfd, 0x26, 0xfe, 0xb6, 0xfe, + 0xfc, 0xfe, 0xbb, 0xff, 0x73, 0x01, 0x13, 0x01, 0xed, 0xff, 0x61, 0xff, 0x02, 0xff, 0x17, 0x00, + 0xf3, 0xff, 0xa0, 0xfe, 0x2a, 0xfe, 0x53, 0xfe, 0x9c, 0xfd, 0x20, 0xfc, 0x4e, 0xfa, 0x65, 0xf8, + 0x56, 0xf6, 0xc4, 0xf5, 0xc7, 0xf5, 0x1b, 0xf6, 0xc4, 0xf5, 0xe7, 0xf5, 0x65, 0xf6, 0x2b, 0xf6, + 0xa6, 0xf8, 0x0b, 0xfb, 0xf8, 0xfc, 0x57, 0xfe, 0x80, 0xff, 0x8a, 0x01, 0x18, 0x03, 0x3e, 0x03, + 0x2e, 0x04, 0xb9, 0x06, 0xe4, 0x07, 0xfb, 0x07, 0x7d, 0x09, 0xb1, 0x0a, 0x5e, 0x0b, 0xfb, 0x09, + 0x98, 0x09, 0xd5, 0x08, 0x9c, 0x08, 0x03, 0x08, 0x54, 0x07, 0x6d, 0x06, 0xde, 0x03, 0x7c, 0x00, + 0x8d, 0xfd, 0x27, 0xfb, 0xc4, 0xf9, 0x4f, 0xf7, 0x8e, 0xf3, 0x14, 0xf2, 0xab, 0xf1, 0x1c, 0xf3, + 0xe7, 0xf4, 0x2d, 0xf6, 0x10, 0xf8, 0x47, 0xf9, 0x92, 0xf9, 0x6f, 0xfb, 0x18, 0xfd, 0xfa, 0xfe, + 0xc3, 0x00, 0xe6, 0x01, 0x85, 0x02, 0xb1, 0x03, 0x59, 0x05, 0xb2, 0x06, 0x85, 0x07, 0xaa, 0x08, + 0xc4, 0x09, 0xeb, 0x09, 0x52, 0x0a, 0xea, 0x09, 0xa4, 0x09, 0x0e, 0x07, 0x1e, 0x05, 0xe5, 0x03, + 0x31, 0x05, 0xef, 0x04, 0x7d, 0x03, 0xfe, 0x01, 0x0a, 0x00, 0x0d, 0xfe, 0x16, 0xfc, 0x91, 0xfb, + 0xc8, 0xfa, 0x93, 0xf8, 0x9b, 0xf7, 0xc3, 0xf7, 0xf9, 0xf8, 0x2c, 0xfb, 0xb5, 0xfb, 0x38, 0xfb, + 0x89, 0xfb, 0x31, 0xfd, 0xe1, 0xfe, 0xd2, 0x00, 0x10, 0x01, 0x9d, 0x01, 0x34, 0x02, 0xa2, 0x02, + 0x43, 0x03, 0xd5, 0x03, 0xac, 0x04, 0x50, 0x04, 0xb3, 0x03, 0x25, 0x03, 0xe0, 0x03, 0x55, 0x04, + 0x9d, 0x04, 0x35, 0x03, 0x0d, 0x03, 0xa8, 0x03, 0xc0, 0x03, 0xa8, 0x02, 0x53, 0x02, 0x44, 0x02, + 0x2f, 0x00, 0x45, 0xfc, 0x78, 0xfa, 0x50, 0xf9, 0x6e, 0xf7, 0x2f, 0xf4, 0x6e, 0xf2, 0x4d, 0xf2, + 0x21, 0xf2, 0x8e, 0xf2, 0x85, 0xf4, 0x31, 0xf6, 0xf8, 0xf4, 0xeb, 0xf3, 0xe1, 0xf3, 0x88, 0xf4, + 0xdc, 0xf6, 0x4b, 0xf9, 0x47, 0xfa, 0x60, 0xfb, 0x63, 0xfc, 0xeb, 0xfe, 0xe7, 0x01, 0x3b, 0x05, + 0x24, 0x08, 0x29, 0x0a, 0x89, 0x0c, 0x4b, 0x0e, 0x82, 0x10, 0x88, 0x12, 0x25, 0x13, 0xf3, 0x12, + 0xdf, 0x12, 0xab, 0x14, 0x9a, 0x15, 0xa2, 0x15, 0xe6, 0x13, 0x97, 0x11, 0x1e, 0x10, 0x49, 0x0e, + 0x7d, 0x0b, 0xba, 0x08, 0xdd, 0x06, 0x8a, 0x02, 0x34, 0xff, 0xde, 0xfd, 0xa1, 0xfe, 0xbb, 0xfd, + 0x7a, 0xfb, 0x9c, 0xfa, 0x4f, 0xfa, 0x9a, 0xf9, 0xcc, 0xf8, 0xb7, 0xf9, 0x30, 0xfb, 0x8f, 0xfa, + 0x90, 0xfa, 0xc8, 0xfb, 0x1b, 0xfd, 0x6a, 0xfe, 0x54, 0xff, 0xbd, 0xff, 0xcc, 0xff, 0xd7, 0x00, + 0xf3, 0x01, 0xd9, 0x02, 0x41, 0x02, 0xf8, 0x01, 0x15, 0x02, 0xb9, 0x01, 0xdf, 0x00, 0xaf, 0x00, + 0xcc, 0xff, 0x11, 0xfe, 0x27, 0xfb, 0xf4, 0xf8, 0x02, 0xf8, 0x01, 0xf7, 0xc1, 0xf5, 0xe8, 0xf4, + 0x38, 0xf6, 0xa0, 0xf7, 0xf9, 0xf9, 0x01, 0xfb, 0x84, 0xfc, 0x56, 0xfd, 0xff, 0xfc, 0xa9, 0xfc, + 0xa2, 0xfd, 0x32, 0x00, 0x7d, 0x01, 0xba, 0x00, 0xca, 0x00, 0x2d, 0x00, 0xf8, 0xff, 0xb9, 0xff, + 0x32, 0x01, 0x0d, 0x03, 0x4b, 0x02, 0xe8, 0x00, 0x3d, 0x00, 0x48, 0xff, 0x62, 0xfe, 0x0d, 0xfe, + 0xf7, 0xfb, 0xf4, 0xfb, 0xe0, 0xfb, 0x24, 0xfc, 0x73, 0xfc, 0x04, 0xfb, 0x2a, 0xfa, 0x5e, 0xf9, + 0x41, 0xf8, 0x8b, 0xf7, 0x37, 0xf7, 0x2d, 0xf7, 0x8a, 0xf6, 0x54, 0xf6, 0xd0, 0xf6, 0x51, 0xf9, + 0x26, 0xfb, 0xb1, 0xfb, 0xca, 0xfc, 0x60, 0xfe, 0x99, 0xff, 0xde, 0x00, 0xed, 0x01, 0x08, 0x03, + 0x99, 0x03, 0x36, 0x02, 0x58, 0x01, 0xbe, 0x01, 0xe6, 0x03, 0x02, 0x05, 0x8b, 0x05, 0xe5, 0x05, + 0x5e, 0x06, 0x9f, 0x06, 0x78, 0x06, 0x8f, 0x07, 0xbf, 0x08, 0xff, 0x07, 0x38, 0x07, 0xc1, 0x07, + 0x56, 0x08, 0x6a, 0x08, 0x11, 0x07, 0x66, 0x05, 0x66, 0x03, 0x6a, 0x01, 0x92, 0x00, 0x38, 0x00, + 0x57, 0xfe, 0xb5, 0xfe, 0x42, 0x00, 0x63, 0x01, 0x33, 0x01, 0x30, 0x01, 0xec, 0x00, 0x98, 0x00, + 0xa7, 0xff, 0x97, 0xff, 0xb9, 0x01, 0xa8, 0x02, 0x66, 0x02, 0x65, 0x01, 0x28, 0x02, 0x45, 0x02, + 0x64, 0x03, 0xa3, 0x04, 0x61, 0x06, 0xde, 0x07, 0xf3, 0x06, 0x0f, 0x05, 0x6e, 0x04, 0xa5, 0x04, + 0xe5, 0x03, 0x02, 0x03, 0xd5, 0x02, 0xe8, 0x01, 0x7d, 0xff, 0x28, 0xfd, 0xab, 0xfb, 0x82, 0xfa, + 0xc7, 0xf6, 0x95, 0xf3, 0xdb, 0xf0, 0x20, 0xef, 0x08, 0xee, 0x86, 0xed, 0xcf, 0xed, 0x76, 0xee, + 0xf5, 0xee, 0xf5, 0xf0, 0xcc, 0xf3, 0x00, 0xf6, 0x68, 0xf8, 0xe4, 0xfa, 0x1e, 0xfd, 0x9a, 0xff, + 0x16, 0x03, 0x71, 0x06, 0x42, 0x08, 0xfe, 0x08, 0x7b, 0x0a, 0x0d, 0x0e, 0x63, 0x10, 0xc1, 0x10, + 0x3c, 0x11, 0xcb, 0x11, 0x89, 0x11, 0xb5, 0x11, 0x29, 0x11, 0x1c, 0x11, 0x7e, 0x0f, 0x1b, 0x0c, + 0x84, 0x09, 0xfd, 0x06, 0x53, 0x05, 0x28, 0x02, 0xa6, 0xfe, 0xa2, 0xfb, 0xac, 0xf8, 0x1d, 0xf5, + 0xb0, 0xf2, 0xbb, 0xf2, 0x01, 0xf4, 0xcd, 0xf4, 0x75, 0xf5, 0x53, 0xf6, 0xb7, 0xf6, 0xbb, 0xf6, + 0x0d, 0xf8, 0x52, 0xf9, 0x96, 0xfa, 0x88, 0xfc, 0x19, 0xfe, 0x6b, 0xff, 0x7e, 0xff, 0x05, 0x01, + 0x9a, 0x02, 0x1c, 0x04, 0xf6, 0x04, 0xdb, 0x06, 0xae, 0x07, 0x9f, 0x07, 0x04, 0x06, 0x5a, 0x05, + 0x47, 0x06, 0xc2, 0x06, 0x44, 0x06, 0xcf, 0x06, 0x70, 0x07, 0x9c, 0x06, 0xc8, 0x05, 0x19, 0x04, + 0x52, 0x04, 0xdf, 0x02, 0xfa, 0xff, 0x81, 0xfd, 0x0c, 0xfc, 0x8f, 0xfb, 0x7f, 0xfb, 0x42, 0xfb, + 0x14, 0xfc, 0x1f, 0xfb, 0x12, 0xfa, 0x44, 0xfa, 0xca, 0xfa, 0xd9, 0xfb, 0x5d, 0xfb, 0xcb, 0xfa, + 0x30, 0xfb, 0x61, 0xfb, 0x82, 0xfb, 0xd7, 0xfb, 0x60, 0xfb, 0xdf, 0xfb, 0x80, 0xfc, 0x3f, 0xfe, + 0x74, 0xff, 0x7b, 0x00, 0xed, 0x00, 0xb7, 0x01, 0x4b, 0x02, 0xf5, 0x02, 0x75, 0x04, 0x1c, 0x05, + 0x37, 0x05, 0x33, 0x04, 0xf2, 0x03, 0x25, 0x04, 0xcb, 0x02, 0x72, 0x00, 0x44, 0xfe, 0xf7, 0xfc, + 0x08, 0xfb, 0x11, 0xfa, 0x8b, 0xfa, 0x2e, 0xfc, 0xf1, 0xfc, 0x44, 0xfb, 0x7e, 0xf9, 0xba, 0xf8, + 0xc5, 0xf8, 0xec, 0xf8, 0xb8, 0xf9, 0x89, 0xfa, 0x4f, 0xfb, 0xaa, 0xfb, 0xbe, 0xfb, 0xd3, 0xfc, + 0x90, 0xfe, 0x02, 0x00, 0xd5, 0x01, 0x88, 0x04, 0x38, 0x06, 0x65, 0x07, 0x96, 0x08, 0x82, 0x08, + 0x2a, 0x08, 0xa5, 0x08, 0xc2, 0x08, 0x3f, 0x09, 0x24, 0x08, 0xca, 0x07, 0x40, 0x07, 0x74, 0x05, + 0x6b, 0x03, 0xdc, 0x01, 0x55, 0x00, 0x6c, 0xfd, 0x4b, 0xf9, 0x04, 0xf7, 0x9c, 0xf6, 0x4f, 0xf6, + 0x6e, 0xf5, 0xc5, 0xf5, 0x0c, 0xf7, 0x4d, 0xf6, 0x18, 0xf7, 0x07, 0xf8, 0x97, 0xfa, 0x60, 0xfb, + 0x43, 0xfb, 0xa5, 0xfb, 0x57, 0xfc, 0xee, 0xfc, 0x6f, 0xfd, 0xfd, 0xfe, 0xd1, 0xff, 0xf5, 0xff, + 0x28, 0x00, 0xc4, 0x00, 0xfc, 0x01, 0x18, 0x02, 0x21, 0x01, 0x1d, 0x00, 0xd8, 0xfe, 0x41, 0xfe, + 0x09, 0xfe, 0x2f, 0xfe, 0x9a, 0xfd, 0x48, 0xfc, 0x7e, 0xfa, 0x70, 0xfa, 0x60, 0xfa, 0x8d, 0xf9, + 0x3f, 0xf9, 0xba, 0xf9, 0xc8, 0xfa, 0x88, 0xfc, 0x7c, 0x00, 0x8d, 0x03, 0xe3, 0x04, 0x5c, 0x05, + 0x8a, 0x06, 0x70, 0x09, 0x43, 0x0b, 0x55, 0x0c, 0xaf, 0x0d, 0x58, 0x0f, 0xda, 0x0e, 0xe1, 0x0e, + 0x27, 0x10, 0x93, 0x11, 0xb8, 0x11, 0x2a, 0x11, 0xc3, 0x10, 0xe6, 0x0f, 0xb7, 0x0e, 0x7d, 0x0d, + 0x50, 0x0c, 0x5c, 0x0a, 0x1e, 0x09, 0xdb, 0x06, 0x92, 0x05, 0x18, 0x04, 0xff, 0x02, 0x66, 0x01, + 0xa2, 0xff, 0x86, 0xfd, 0xc1, 0xfb, 0x09, 0xfa, 0xd4, 0xf7, 0x00, 0xf6, 0xc6, 0xf4, 0x76, 0xf4, + 0x60, 0xf4, 0xd6, 0xf4, 0x1f, 0xf5, 0x1f, 0xf6, 0xc8, 0xf6, 0xcb, 0xf6, 0x90, 0xf6, 0xa8, 0xf8, + 0xd0, 0xf9, 0x1d, 0xfa, 0xfe, 0xf9, 0xb9, 0xfa, 0xfb, 0xfb, 0xf2, 0xfc, 0x4a, 0xfe, 0x86, 0x00, + 0x1f, 0x03, 0x08, 0x04, 0xa1, 0x05, 0x26, 0x07, 0xea, 0x09, 0x03, 0x0a, 0x35, 0x09, 0x15, 0x09, + 0xba, 0x08, 0x92, 0x08, 0xc0, 0x08, 0xda, 0x07, 0xfc, 0x05, 0xe9, 0x02, 0x0c, 0x00, 0x1f, 0xfd, + 0x8d, 0xfa, 0x01, 0xf8, 0x93, 0xf5, 0x2b, 0xf4, 0x56, 0xf3, 0xdc, 0xf3, 0xe7, 0xf3, 0x1b, 0xf3, + 0x6c, 0xf1, 0xaf, 0xf0, 0x2c, 0xf1, 0x10, 0xf2, 0x99, 0xf3, 0xd7, 0xf4, 0x11, 0xf6, 0x44, 0xf7, + 0x93, 0xf7, 0x8b, 0xf9, 0x17, 0xfd, 0x64, 0x00, 0xba, 0x02, 0x36, 0x04, 0x82, 0x06, 0x1e, 0x08, + 0xd2, 0x08, 0xd5, 0x08, 0x47, 0x09, 0xc6, 0x09, 0x89, 0x09, 0xc5, 0x09, 0x38, 0x0a, 0x31, 0x0a, + 0x04, 0x08, 0x16, 0x05, 0x71, 0x02, 0x5b, 0xff, 0x3c, 0xfc, 0x42, 0xf9, 0xf0, 0xf7, 0x05, 0xf7, + 0x25, 0xf6, 0x93, 0xf5, 0x37, 0xf6, 0x74, 0xf6, 0xbd, 0xf6, 0xe7, 0xf7, 0xd5, 0xf8, 0x47, 0xfa, + 0x63, 0xfc, 0x6a, 0xff, 0xb1, 0x01, 0x2d, 0x03, 0x9d, 0x04, 0x1d, 0x06, 0xa4, 0x07, 0x2f, 0x09, + 0x8f, 0x0a, 0xa4, 0x0c, 0xfd, 0x0d, 0xad, 0x0e, 0xfd, 0x0e, 0x98, 0x0f, 0x84, 0x0f, 0xea, 0x0d, + 0xc3, 0x0c, 0xc9, 0x0b, 0x56, 0x0b, 0xe0, 0x09, 0x85, 0x07, 0xd6, 0x05, 0xae, 0x03, 0x33, 0x00, + 0x22, 0xfd, 0xd0, 0xfb, 0x3f, 0xfb, 0x84, 0xf9, 0xdc, 0xf8, 0x97, 0xf8, 0xbe, 0xf8, 0xdf, 0xf7, + 0x83, 0xf7, 0x50, 0xf8, 0xc6, 0xf7, 0x87, 0xf6, 0xa8, 0xf6, 0x52, 0xf7, 0x48, 0xf8, 0xcd, 0xf7, + 0xfc, 0xf6, 0x87, 0xf6, 0x88, 0xf6, 0x1c, 0xf8, 0x37, 0xfa, 0x41, 0xfb, 0x68, 0xfb, 0x07, 0xfb, + 0xe7, 0xfb, 0x9e, 0xfc, 0x64, 0xfd, 0xcc, 0xfe, 0x02, 0x00, 0xff, 0x00, 0x42, 0x01, 0xdf, 0x02, + 0x73, 0x04, 0x17, 0x05, 0x3a, 0x05, 0x5e, 0x05, 0x2f, 0x05, 0xbd, 0x04, 0x10, 0x04, 0x60, 0x03, + 0x4a, 0x03, 0xfc, 0x03, 0x48, 0x03, 0x21, 0x04, 0xac, 0x05, 0x01, 0x06, 0xc3, 0x05, 0x67, 0x04, + 0x3f, 0x04, 0xe0, 0x03, 0xdc, 0x02, 0xd5, 0x01, 0xf2, 0x01, 0xd4, 0x00, 0x19, 0x00, 0x26, 0xff, + 0xd7, 0xfe, 0xcc, 0xfe, 0x68, 0xff, 0x42, 0x00, 0x54, 0x00, 0x19, 0x00, 0x81, 0x00, 0xc1, 0x00, + 0x67, 0x00, 0x11, 0x01, 0x74, 0x01, 0xa8, 0x01, 0x76, 0x00, 0xc1, 0xff, 0x69, 0xff, 0x5e, 0xfe, + 0x59, 0xfc, 0x45, 0xfa, 0xfb, 0xf8, 0xfa, 0xf8, 0x73, 0xf8, 0x42, 0xf8, 0x4e, 0xf9, 0xda, 0xf9, + 0xdd, 0xf9, 0x47, 0xfa, 0x50, 0xfb, 0x5b, 0xfd, 0xd7, 0xfd, 0x11, 0xfe, 0xfe, 0xff, 0xe0, 0x01, + 0xd6, 0x03, 0xc9, 0x03, 0xb3, 0x04, 0x12, 0x06, 0x2b, 0x08, 0x60, 0x09, 0x6c, 0x0a, 0xf6, 0x0b, + 0x9f, 0x0b, 0xa6, 0x0a, 0xd9, 0x09, 0x70, 0x09, 0x03, 0x09, 0xba, 0x07, 0x40, 0x06, 0xd4, 0x04, + 0x5e, 0x03, 0x24, 0x02, 0x60, 0x01, 0x6b, 0xff, 0x11, 0xfc, 0x65, 0xf9, 0xd0, 0xf6, 0x28, 0xf4, + 0x56, 0xf3, 0x27, 0xf3, 0x97, 0xf3, 0x2d, 0xf4, 0x68, 0xf4, 0xac, 0xf5, 0x01, 0xf7, 0x08, 0xf8, + 0x9c, 0xf8, 0x05, 0xfb, 0x75, 0xfe, 0x1b, 0x00, 0xaa, 0x00, 0xca, 0x01, 0xeb, 0x02, 0x4f, 0x03, + 0x0c, 0x04, 0x1b, 0x05, 0x5d, 0x07, 0x5d, 0x09, 0xe3, 0x09, 0xfc, 0x08, 0x4c, 0x08, 0xc0, 0x06, + 0x02, 0x04, 0x01, 0x03, 0x30, 0x03, 0xe8, 0x02, 0xb5, 0x01, 0x31, 0x00, 0x8e, 0xfe, 0x8c, 0xfc, + 0x44, 0xfa, 0x40, 0xf8, 0x2c, 0xf7, 0xa9, 0xf6, 0xb9, 0xf6, 0xc4, 0xf8, 0xaf, 0xf9, 0xec, 0xfa, + 0x10, 0xfc, 0xf8, 0xfc, 0x80, 0xfd, 0x83, 0xfe, 0x08, 0x00, 0x20, 0x01, 0xef, 0x01, 0xbe, 0x02, + 0xec, 0x03, 0x4f, 0x04, 0xdd, 0x03, 0xf8, 0x03, 0x67, 0x05, 0x2e, 0x07, 0x1d, 0x07, 0x6b, 0x06, + 0xec, 0x06, 0x05, 0x07, 0xc7, 0x05, 0xb8, 0x04, 0xc1, 0x03, 0xd1, 0x03, 0xee, 0x03, 0x09, 0x03, + 0x85, 0x02, 0x3c, 0x01, 0x20, 0x00, 0x90, 0xfe, 0xd7, 0xfc, 0x7e, 0xfb, 0xcf, 0xf8, 0x73, 0xf5, + 0x81, 0xf3, 0xd2, 0xf2, 0x30, 0xf3, 0xb7, 0xf2, 0x4e, 0xf2, 0xa9, 0xf1, 0xb9, 0xf0, 0xf1, 0xf0, + 0xb9, 0xf1, 0x6c, 0xf2, 0xd7, 0xf3, 0x38, 0xf5, 0x5f, 0xf6, 0x3b, 0xf7, 0xe1, 0xf8, 0x3c, 0xfb, + 0xda, 0xfc, 0x3d, 0xfe, 0x6f, 0x00, 0x79, 0x04, 0xa1, 0x07, 0x4c, 0x0a, 0x9f, 0x0b, 0x2e, 0x0e, + 0x40, 0x10, 0xb3, 0x10, 0x05, 0x12, 0xc9, 0x13, 0x8e, 0x14, 0xca, 0x13, 0x74, 0x12, 0x00, 0x11, + 0xc8, 0x0f, 0x24, 0x0e, 0x3e, 0x0c, 0x1d, 0x0a, 0x30, 0x08, 0x03, 0x06, 0x10, 0x04, 0x25, 0x02, + 0xea, 0x01, 0x4f, 0x00, 0xd7, 0xfe, 0x7e, 0xfd, 0xae, 0xfc, 0x32, 0xfc, 0x6c, 0xfb, 0x44, 0xfb, + 0xd3, 0xfa, 0xc5, 0xfa, 0x9e, 0xfa, 0x85, 0xfb, 0xd2, 0xfc, 0x39, 0xff, 0xd9, 0x00, 0x7e, 0x01, + 0x10, 0x01, 0xd5, 0x01, 0x47, 0x03, 0x7a, 0x03, 0xe0, 0x02, 0x0c, 0x03, 0x13, 0x03, 0x00, 0x03, + 0xc8, 0x01, 0x93, 0x00, 0xc3, 0x00, 0x97, 0xff, 0x27, 0xfd, 0x81, 0xfb, 0xfb, 0xfa, 0x9c, 0xf9, + 0x30, 0xf7, 0xde, 0xf5, 0x19, 0xf6, 0x0a, 0xf7, 0x82, 0xf8, 0xac, 0xf9, 0xce, 0xfa, 0xd8, 0xfa, + 0x3b, 0xfb, 0xba, 0xfb, 0x1c, 0xfd, 0x93, 0xff, 0xae, 0x00, 0xad, 0x00, 0xdd, 0x00, 0x96, 0x01, + 0x2f, 0x02, 0xc6, 0x01, 0x57, 0x01, 0xaa, 0x01, 0x44, 0x02, 0x22, 0x03, 0xa4, 0x03, 0xa1, 0x02, + 0x64, 0x01, 0x6d, 0x00, 0x35, 0xff, 0x34, 0xfe, 0xb1, 0xfe, 0x06, 0xff, 0xb3, 0xfd, 0xd7, 0xfb, + 0x9b, 0xf9, 0x2e, 0xf9, 0x3c, 0xf8, 0x30, 0xf6, 0x34, 0xf5, 0xae, 0xf6, 0x0b, 0xf8, 0x7c, 0xf8, + 0xd5, 0xf9, 0x21, 0xfb, 0x57, 0xfc, 0xe3, 0xfc, 0xe3, 0xfd, 0xbd, 0xff, 0xcb, 0x01, 0x60, 0x03, + 0xd7, 0x04, 0x87, 0x05, 0xee, 0x04, 0x8a, 0x03, 0x18, 0x03, 0xa5, 0x03, 0x42, 0x05, 0x8f, 0x06, + 0x6c, 0x06, 0x46, 0x06, 0x2a, 0x06, 0x5e, 0x06, 0x03, 0x06, 0x70, 0x04, 0xdd, 0x03, 0x13, 0x04, + 0x2e, 0x04, 0x15, 0x05, 0x04, 0x05, 0xe9, 0x04, 0xac, 0x04, 0x83, 0x03, 0x0c, 0x02, 0x8b, 0x01, + 0x9f, 0x00, 0x39, 0xff, 0xf2, 0xfd, 0xa9, 0xfd, 0xff, 0xfe, 0x10, 0x00, 0x3b, 0xff, 0xea, 0xfe, + 0xa7, 0xff, 0xcf, 0xff, 0x98, 0xff, 0x75, 0x00, 0x4d, 0x02, 0xc3, 0x02, 0xb8, 0x01, 0xb9, 0x01, + 0xce, 0x01, 0xf5, 0x01, 0xa2, 0x02, 0x82, 0x03, 0xe9, 0x04, 0x3e, 0x05, 0xab, 0x05, 0x42, 0x05, + 0x0a, 0x05, 0x67, 0x04, 0xae, 0x02, 0xbd, 0x01, 0x1b, 0x01, 0x88, 0x00, 0x75, 0x00, 0xe2, 0xfe, + 0xb4, 0xfb, 0x86, 0xf8, 0x13, 0xf6, 0xda, 0xf3, 0x60, 0xf2, 0xc8, 0xf0, 0xbe, 0xef, 0x7f, 0xef, + 0xf2, 0xee, 0xd4, 0xef, 0x81, 0xf1, 0xed, 0xf2, 0x5f, 0xf4, 0x99, 0xf5, 0x99, 0xf7, 0xb2, 0xfa, + 0xd8, 0xfc, 0x95, 0xfe, 0x82, 0x00, 0x1d, 0x03, 0xec, 0x04, 0x1b, 0x07, 0xf8, 0x09, 0x6f, 0x0d, + 0x0f, 0x0f, 0x34, 0x0f, 0xf1, 0x0f, 0x8c, 0x10, 0x2d, 0x11, 0x51, 0x11, 0x5d, 0x11, 0x5b, 0x10, + 0xd2, 0x0e, 0x8e, 0x0c, 0x68, 0x0a, 0xb3, 0x07, 0x9b, 0x05, 0x13, 0x03, 0x42, 0x00, 0x0e, 0xfd, + 0x2d, 0xfa, 0x20, 0xf7, 0x29, 0xf4, 0xb7, 0xf1, 0xa9, 0xf0, 0xd1, 0xf0, 0xd3, 0xf0, 0xa0, 0xf0, + 0xba, 0xf0, 0x32, 0xf2, 0x94, 0xf2, 0xb4, 0xf3, 0x30, 0xf5, 0x7b, 0xf7, 0xb2, 0xf9, 0x17, 0xfb, + 0x29, 0xfc, 0xe8, 0xfd, 0xab, 0xff, 0x54, 0x00, 0x13, 0x01, 0x5c, 0x03, 0xc6, 0x05, 0x3a, 0x06, + 0x4b, 0x06, 0xae, 0x06, 0xde, 0x07, 0xf5, 0x07, 0xcc, 0x07, 0x35, 0x08, 0xa2, 0x08, 0x5b, 0x08, + 0x77, 0x07, 0x80, 0x06, 0x61, 0x05, 0x4f, 0x03, 0xba, 0x01, 0xbf, 0x00, 0xff, 0xff, 0x20, 0xff, + 0x08, 0xff, 0x32, 0xff, 0x1c, 0xff, 0x14, 0xff, 0x3d, 0xff, 0x2c, 0xff, 0x4d, 0xfe, 0xfb, 0xfd, + 0xab, 0xfe, 0x3f, 0xff, 0xcb, 0xff, 0x31, 0x00, 0x73, 0xff, 0x16, 0xff, 0x30, 0xff, 0x68, 0xff, + 0x18, 0x01, 0x62, 0x02, 0x4d, 0x02, 0xb8, 0x01, 0xcb, 0x02, 0xc5, 0x03, 0x12, 0x03, 0x5f, 0x02, + 0x23, 0x02, 0x46, 0x03, 0xfe, 0x03, 0xcf, 0x03, 0x8e, 0x03, 0x25, 0x03, 0x3b, 0x02, 0xfc, 0xff, + 0x59, 0xfe, 0x30, 0xfd, 0x1d, 0xfc, 0xad, 0xfb, 0xbd, 0xfb, 0xab, 0xfc, 0x32, 0xfc, 0x9f, 0xfa, + 0x9a, 0xf9, 0x6f, 0xf8, 0xc4, 0xf7, 0x68, 0xf8, 0x96, 0xf9, 0x7e, 0xfa, 0x22, 0xfb, 0xb1, 0xfb, + 0x8b, 0xfc, 0x11, 0xfc, 0x6c, 0xfc, 0xe1, 0xfd, 0xbc, 0xff, 0x86, 0x02, 0x79, 0x05, 0x66, 0x07, + 0x04, 0x08, 0x60, 0x08, 0x7e, 0x08, 0x09, 0x0a, 0x70, 0x0b, 0x64, 0x0b, 0x10, 0x0b, 0xb1, 0x0b, + 0x00, 0x0b, 0x9d, 0x08, 0x7d, 0x05, 0x93, 0x03, 0xf4, 0x01, 0x12, 0x00, 0x78, 0xfe, 0x9b, 0xfc, + 0xbc, 0xfb, 0x97, 0xfa, 0xf0, 0xf9, 0x47, 0xf9, 0xe0, 0xf8, 0x47, 0xf9, 0xc3, 0xf9, 0xbe, 0xfa, + 0x81, 0xfb, 0xc7, 0xfa, 0x0a, 0xfb, 0x6e, 0xfb, 0x3e, 0xfb, 0xb7, 0xfa, 0x06, 0xfb, 0xb5, 0xfb, + 0xaa, 0xfc, 0x88, 0xfd, 0x0d, 0xff, 0xd8, 0xff, 0x3a, 0xff, 0xb9, 0xfe, 0x70, 0xfe, 0xf9, 0xfd, + 0xbb, 0xfd, 0xd0, 0xfd, 0x28, 0xfd, 0xc4, 0xfc, 0x66, 0xfb, 0x0f, 0xfa, 0xc5, 0xfa, 0xf7, 0xfa, + 0x3e, 0xf9, 0x08, 0xf8, 0xd3, 0xf7, 0xbb, 0xf7, 0xfa, 0xf7, 0xfb, 0xf8, 0x12, 0xfb, 0x47, 0xfd, + 0x31, 0xfe, 0xca, 0xff, 0xdf, 0x01, 0x2e, 0x04, 0x65, 0x06, 0x32, 0x08, 0xae, 0x09, 0xbe, 0x0a, + 0xf6, 0x0b, 0x84, 0x0d, 0x65, 0x0f, 0x63, 0x10, 0x3b, 0x10, 0x9d, 0x10, 0xe4, 0x11, 0x90, 0x11, + 0xa7, 0x10, 0x11, 0x0f, 0xf5, 0x0d, 0x48, 0x0c, 0xa7, 0x0a, 0x08, 0x0a, 0xc4, 0x08, 0x6d, 0x06, + 0x4c, 0x04, 0x80, 0x01, 0xfe, 0xfd, 0x4b, 0xfb, 0x00, 0xfa, 0x43, 0xf9, 0x53, 0xf7, 0xf7, 0xf4, + 0xea, 0xf2, 0x16, 0xf3, 0xb5, 0xf3, 0xd6, 0xf3, 0x7b, 0xf4, 0xb5, 0xf6, 0x9c, 0xf7, 0x52, 0xf8, + 0xa5, 0xf8, 0xc9, 0xf9, 0xfb, 0xfa, 0x52, 0xfb, 0x3e, 0xfc, 0xcc, 0xfc, 0xf1, 0xfd, 0x2e, 0xff, + 0x6f, 0x00, 0xa7, 0x01, 0x5a, 0x03, 0x26, 0x04, 0x7a, 0x05, 0x8d, 0x07, 0xd9, 0x08, 0xa4, 0x08, + 0x3b, 0x08, 0x03, 0x08, 0xbf, 0x07, 0xba, 0x06, 0x30, 0x06, 0x24, 0x05, 0x75, 0x03, 0x78, 0x02, + 0x26, 0x01, 0x19, 0xff, 0xd4, 0xfb, 0xe6, 0xf8, 0x0b, 0xf7, 0x1f, 0xf6, 0x17, 0xf6, 0xb3, 0xf6, + 0xc1, 0xf6, 0x9e, 0xf5, 0xcc, 0xf3, 0xa8, 0xf3, 0x59, 0xf5, 0x9d, 0xf6, 0x6e, 0xf7, 0x44, 0xf8, + 0xf6, 0xf9, 0xf5, 0xfa, 0x6f, 0xfb, 0x9d, 0xfb, 0xa1, 0xfc, 0x7b, 0xfe, 0x4e, 0x00, 0x6f, 0x03, + 0x0f, 0x05, 0x6d, 0x06, 0xc2, 0x06, 0x67, 0x06, 0x86, 0x06, 0x62, 0x07, 0x6c, 0x08, 0x1f, 0x0a, + 0x49, 0x0b, 0xe5, 0x0a, 0xb4, 0x08, 0xfe, 0x05, 0xe6, 0x03, 0xcd, 0x01, 0x01, 0x00, 0x40, 0xfe, + 0x82, 0xfc, 0xde, 0xfa, 0xd2, 0xfa, 0x1d, 0xfb, 0xfa, 0xfa, 0x32, 0xfa, 0x30, 0xfa, 0xda, 0xfa, + 0xc2, 0xfb, 0xab, 0xfc, 0x42, 0xfe, 0xf5, 0xff, 0x63, 0x00, 0x69, 0x00, 0xdd, 0x00, 0x10, 0x03, + 0x95, 0x04, 0x97, 0x05, 0xe9, 0x06, 0xed, 0x08, 0x9c, 0x09, 0x6b, 0x0a, 0x38, 0x0b, 0x59, 0x0c, + 0xef, 0x0b, 0x76, 0x0b, 0x3f, 0x0b, 0xd3, 0x0a, 0x8e, 0x0a, 0xe5, 0x08, 0x0c, 0x07, 0x69, 0x05, + 0x15, 0x03, 0x49, 0x01, 0xbb, 0xff, 0xe0, 0xfd, 0xda, 0xfb, 0x87, 0xf9, 0xd5, 0xf8, 0x7e, 0xf8, + 0xab, 0xf7, 0x4f, 0xf6, 0xb0, 0xf4, 0xc2, 0xf2, 0xc0, 0xf1, 0x32, 0xf2, 0xb5, 0xf3, 0xeb, 0xf4, + 0xc4, 0xf4, 0x61, 0xf4, 0x7a, 0xf4, 0xb6, 0xf4, 0x45, 0xf5, 0x41, 0xf7, 0xb2, 0xf9, 0x81, 0xfa, + 0xe3, 0xfa, 0x1d, 0xfc, 0x65, 0xfd, 0x6f, 0xfe, 0x92, 0xfe, 0xbd, 0xff, 0xc0, 0x01, 0xdb, 0x02, + 0x3a, 0x04, 0xb8, 0x05, 0xa9, 0x05, 0xbd, 0x04, 0x14, 0x03, 0x4a, 0x03, 0xd0, 0x03, 0x3b, 0x04, + 0x59, 0x03, 0x88, 0x02, 0xcb, 0x01, 0x9e, 0x01, 0x69, 0x02, 0x1f, 0x03, 0x91, 0x04, 0xbe, 0x05, + 0x57, 0x06, 0x69, 0x06, 0x83, 0x06, 0x32, 0x06, 0xaa, 0x05, 0x65, 0x04, 0xd0, 0x02, 0xce, 0x01, + 0x98, 0x01, 0xc0, 0x01, 0xb3, 0x01, 0xcf, 0x00, 0x09, 0x00, 0x3f, 0xff, 0x7d, 0xfe, 0x38, 0xfe, + 0x31, 0xff, 0x8e, 0xff, 0x86, 0xfe, 0xa3, 0xfd, 0x81, 0xfc, 0x9f, 0xfc, 0x99, 0xfb, 0x8f, 0xfa, + 0x7a, 0xfa, 0x0a, 0xfb, 0x7e, 0xf9, 0x29, 0xf8, 0x08, 0xf7, 0xcf, 0xf6, 0xd2, 0xf6, 0xb1, 0xf6, + 0xcc, 0xf7, 0xe8, 0xf8, 0xad, 0xf9, 0xa1, 0xf9, 0x23, 0xfa, 0xa8, 0xfa, 0x00, 0xfc, 0x7c, 0xfd, + 0xa7, 0xff, 0xb2, 0x01, 0x43, 0x03, 0xb7, 0x04, 0x56, 0x05, 0x6a, 0x06, 0x50, 0x08, 0xd4, 0x09, + 0xa6, 0x0a, 0xe2, 0x0a, 0x0f, 0x0b, 0xf4, 0x0a, 0xcf, 0x0a, 0x63, 0x0a, 0x63, 0x09, 0xaf, 0x08, + 0xc3, 0x08, 0xa8, 0x07, 0x06, 0x07, 0x34, 0x07, 0x7a, 0x05, 0x76, 0x02, 0xc6, 0xff, 0x40, 0xfe, + 0x59, 0xfd, 0xc3, 0xfb, 0xe5, 0xf9, 0x80, 0xf9, 0xd4, 0xf9, 0xf2, 0xf9, 0x3a, 0xfa, 0xa4, 0xfa, + 0x9c, 0xfb, 0x31, 0xfd, 0x51, 0xfd, 0xd6, 0xfe, 0x4f, 0x00, 0x90, 0x01, 0x21, 0x01, 0xab, 0x00, + 0x39, 0x00, 0xea, 0x00, 0xbe, 0x02, 0xd2, 0x04, 0xa7, 0x06, 0x73, 0x07, 0x4a, 0x08, 0x9e, 0x08, + 0x3f, 0x08, 0xeb, 0x07, 0x74, 0x07, 0xda, 0x05, 0xa7, 0x04, 0x81, 0x03, 0xca, 0x02, 0xa0, 0x01, + 0x33, 0x00, 0xf8, 0xfd, 0x3a, 0xfc, 0x82, 0xfa, 0x7c, 0xf8, 0x6d, 0xf7, 0x13, 0xf8, 0x6e, 0xf8, + 0xc8, 0xf7, 0xc3, 0xf7, 0x50, 0xf8, 0x46, 0xf9, 0x5c, 0xf9, 0xae, 0xf9, 0x25, 0xfb, 0x0d, 0xfd, + 0x1a, 0xfe, 0x51, 0xff, 0xdf, 0xff, 0x57, 0x01, 0x5f, 0x02, 0x29, 0x03, 0xba, 0x04, 0x64, 0x06, + 0x8d, 0x07, 0xbe, 0x07, 0x22, 0x08, 0x75, 0x07, 0x5a, 0x06, 0x03, 0x06, 0x35, 0x06, 0xad, 0x06, + 0x10, 0x07, 0xcb, 0x06, 0xa1, 0x05, 0xa2, 0x03, 0xf1, 0x01, 0xac, 0xff, 0xc5, 0xfc, 0xdb, 0xf9, + 0x8f, 0xf7, 0xaa, 0xf5, 0xc0, 0xf4, 0x6f, 0xf3, 0x8f, 0xf2, 0x4c, 0xf2, 0x7d, 0xf1, 0xd9, 0xf0, + 0x02, 0xf2, 0x68, 0xf4, 0x04, 0xf6, 0xfa, 0xf5, 0x0c, 0xf6, 0xb5, 0xf7, 0xe9, 0xf8, 0x1c, 0xfa, + 0x5f, 0xfa, 0xa6, 0xfb, 0x86, 0xfd, 0x0d, 0xff, 0x5c, 0x01, 0xc5, 0x03, 0xf5, 0x05, 0xd0, 0x07, + 0xb1, 0x08, 0x68, 0x0a, 0x41, 0x0c, 0xa8, 0x0d, 0x33, 0x0e, 0x24, 0x0e, 0xb5, 0x0d, 0x01, 0x0c, + 0x0c, 0x0b, 0xc0, 0x0a, 0x9e, 0x0a, 0xc8, 0x09, 0x22, 0x08, 0x9c, 0x06, 0x3b, 0x05, 0x4b, 0x04, + 0x71, 0x03, 0x42, 0x01, 0x89, 0xff, 0xf7, 0xfd, 0x46, 0xfd, 0x70, 0xfc, 0x7c, 0xfb, 0x4b, 0xfb, + 0x52, 0xfb, 0xd4, 0xfa, 0x90, 0xf9, 0x83, 0xf9, 0x16, 0xfb, 0x22, 0xfc, 0xef, 0xfb, 0xa4, 0xfc, + 0xa7, 0xfd, 0x43, 0xfe, 0xc6, 0xfe, 0xa2, 0xff, 0x0c, 0x00, 0x29, 0x01, 0xeb, 0x00, 0x58, 0x01, + 0x80, 0x02, 0xcb, 0x03, 0x3d, 0x04, 0xfb, 0x02, 0x2b, 0x02, 0x5b, 0x01, 0x85, 0x00, 0x96, 0xff, + 0xd5, 0xfe, 0x36, 0xfd, 0x54, 0xfb, 0xec, 0xf9, 0x9e, 0xf9, 0x4e, 0xfb, 0xce, 0xfc, 0x8d, 0xfd, + 0x28, 0xfe, 0x2d, 0xff, 0x9d, 0x00, 0x0a, 0x01, 0x55, 0x01, 0xe2, 0x00, 0xcb, 0x01, 0x4a, 0x03, + 0x0a, 0x03, 0xef, 0x01, 0xdd, 0x01, 0x8c, 0x01, 0x35, 0x01, 0x91, 0x00, 0x8e, 0x01, 0xa6, 0x03, + 0x8a, 0x04, 0x9a, 0x03, 0x9d, 0x02, 0xd8, 0x01, 0xd1, 0x00, 0x29, 0x00, 0x1e, 0xff, 0x97, 0xfe, + 0x91, 0xfd, 0xf5, 0xfb, 0x4a, 0xfb, 0x6b, 0xfa, 0x11, 0xf9, 0x3d, 0xf7, 0xb9, 0xf5, 0xe5, 0xf5, + 0x7a, 0xf6, 0x21, 0xf7, 0x06, 0xf7, 0x55, 0xf7, 0x26, 0xf7, 0x4e, 0xf7, 0x0f, 0xf8, 0x1b, 0xf9, + 0x61, 0xfb, 0x55, 0xfe, 0xe9, 0xff, 0x4a, 0x00, 0x10, 0x01, 0xee, 0x01, 0x53, 0x03, 0xfc, 0x03, + 0x8c, 0x04, 0xac, 0x05, 0x16, 0x07, 0xa9, 0x07, 0x3b, 0x07, 0xd4, 0x06, 0x53, 0x06, 0xdb, 0x05, + 0x91, 0x05, 0xf2, 0x06, 0x1f, 0x09, 0xee, 0x08, 0xd2, 0x07, 0xce, 0x06, 0x80, 0x05, 0xd0, 0x04, + 0xf6, 0x03, 0x3b, 0x03, 0x9b, 0x02, 0x52, 0x01, 0x8e, 0xff, 0x49, 0xff, 0xdc, 0xff, 0x40, 0x00, + 0xc1, 0x00, 0xc1, 0x01, 0xac, 0x02, 0x70, 0x03, 0x21, 0x04, 0x93, 0x04, 0xdb, 0x04, 0x9b, 0x04, + 0x9c, 0x03, 0x57, 0x02, 0xfd, 0x01, 0x1b, 0x03, 0x3e, 0x04, 0x16, 0x04, 0x20, 0x04, 0x0e, 0x04, + 0xa9, 0x04, 0x1b, 0x05, 0xc9, 0x03, 0xd2, 0x01, 0x8c, 0x00, 0x5c, 0xff, 0x89, 0xfe, 0x57, 0xfd, + 0x90, 0xfb, 0x80, 0xf9, 0xde, 0xf6, 0x59, 0xf4, 0xcb, 0xf3, 0x8d, 0xf3, 0x37, 0xf2, 0xb3, 0xf0, + 0xb6, 0xef, 0xc9, 0xef, 0x19, 0xef, 0x97, 0xef, 0xe1, 0xef, 0x85, 0xf0, 0x1e, 0xf1, 0x9f, 0xf1, + 0x3e, 0xf4, 0x52, 0xf7, 0x2f, 0xfa, 0x1a, 0xfc, 0x60, 0xfd, 0x3f, 0xff, 0xc9, 0x01, 0x26, 0x05, + 0x58, 0x08, 0xf9, 0x0a, 0xb1, 0x0c, 0xb3, 0x0d, 0x79, 0x0e, 0x60, 0x0e, 0x53, 0x0f, 0xed, 0x0f, + 0x4d, 0x10, 0xc2, 0x10, 0x09, 0x11, 0x0f, 0x11, 0xcb, 0x0f, 0x8e, 0x0c, 0xb9, 0x09, 0x00, 0x07, + 0x9f, 0x04, 0xec, 0x01, 0x71, 0xff, 0x54, 0xfd, 0x13, 0xfa, 0x7e, 0xf6, 0x38, 0xf4, 0x70, 0xf3, + 0x64, 0xf3, 0xc5, 0xf3, 0x26, 0xf4, 0xad, 0xf4, 0x18, 0xf5, 0xb9, 0xf4, 0x93, 0xf5, 0x32, 0xf7, + 0xd9, 0xf8, 0x62, 0xf9, 0xea, 0xf8, 0xf0, 0xf9, 0x18, 0xfc, 0xe0, 0xfd, 0x56, 0xff, 0x21, 0x01, + 0x56, 0x02, 0x49, 0x04, 0x52, 0x06, 0xfd, 0x07, 0xc8, 0x08, 0xb5, 0x08, 0xd6, 0x07, 0x65, 0x06, + 0xed, 0x05, 0x71, 0x06, 0x7b, 0x06, 0x34, 0x06, 0x4b, 0x05, 0x6a, 0x04, 0xcd, 0x03, 0xab, 0x02, + 0x29, 0x01, 0x9f, 0xff, 0x1b, 0xff, 0x73, 0xfe, 0x3b, 0xfe, 0xd7, 0xfd, 0xdc, 0xfd, 0x38, 0xfc, + 0x51, 0xfa, 0x75, 0xfa, 0x61, 0xfc, 0x9e, 0xfe, 0x5c, 0xff, 0x71, 0xff, 0xc4, 0xff, 0x88, 0x00, + 0x1b, 0x01, 0x05, 0x02, 0x5d, 0x03, 0x85, 0x04, 0x8c, 0x04, 0xb0, 0x04, 0x35, 0x05, 0x76, 0x05, + 0x6d, 0x05, 0x34, 0x05, 0xf3, 0x05, 0xab, 0x06, 0x9e, 0x06, 0xe7, 0x06, 0xd7, 0x05, 0x5b, 0x04, + 0xb4, 0x02, 0x9b, 0x00, 0xa8, 0xfe, 0x48, 0xfd, 0xca, 0xfc, 0x73, 0xfc, 0xc1, 0xfb, 0x51, 0xfb, + 0x76, 0xfb, 0xf5, 0xfb, 0xae, 0xfc, 0xa2, 0xfc, 0x9c, 0xfc, 0xb0, 0xfc, 0x51, 0xfd, 0x98, 0xfd, + 0x36, 0xfe, 0xa3, 0xfe, 0x56, 0xfd, 0x5c, 0xfc, 0x8c, 0xfc, 0x76, 0xfe, 0x85, 0x00, 0xf6, 0x01, + 0x04, 0x03, 0x00, 0x04, 0x50, 0x05, 0x2e, 0x06, 0x6f, 0x07, 0x9e, 0x08, 0x59, 0x09, 0x61, 0x08, + 0x86, 0x06, 0x0f, 0x06, 0x3e, 0x05, 0x68, 0x04, 0x6b, 0x03, 0xca, 0x02, 0xe7, 0x00, 0x1c, 0xff, + 0x53, 0xfe, 0x0e, 0xfd, 0x0b, 0xfc, 0xdf, 0xfa, 0xf4, 0xf8, 0x72, 0xf7, 0x9b, 0xf7, 0x53, 0xf7, + 0x72, 0xf7, 0x0e, 0xf7, 0x76, 0xf6, 0x38, 0xf8, 0x40, 0xf9, 0xa7, 0xf9, 0xf2, 0xf8, 0xaa, 0xf8, + 0xdf, 0xf8, 0x2c, 0xfa, 0x55, 0xfa, 0xe1, 0xfc, 0xa8, 0xfd, 0x2b, 0xfd, 0x98, 0xfc, 0x86, 0xfb, + 0xc9, 0xfc, 0x99, 0xfd, 0x2c, 0xff, 0xba, 0x00, 0x1f, 0x01, 0x89, 0x01, 0x0e, 0x00, 0xfc, 0xff, + 0x14, 0xff, 0x64, 0xfd, 0x2c, 0xfc, 0x50, 0xfa, 0x3f, 0xfa, 0x5d, 0xfa, 0xff, 0xf9, 0x35, 0xfa, + 0x46, 0xfb, 0x15, 0xfc, 0xd1, 0xfc, 0x8d, 0x00, 0xe4, 0x02, 0xe6, 0x04, 0xf5, 0x06, 0x2c, 0x07, + 0x0d, 0x08, 0x50, 0x08, 0x8a, 0x09, 0x29, 0x0a, 0x21, 0x09, 0x45, 0x0a, 0x72, 0x0a, 0xa6, 0x0b, + 0xb7, 0x0c, 0xf8, 0x0b, 0x24, 0x0c, 0xf7, 0x0b, 0x85, 0x0b, 0x21, 0x0a, 0xa4, 0x09, 0xe6, 0x08, + 0xa1, 0x05, 0x0f, 0x03, 0xca, 0x00, 0xf5, 0xff, 0x5e, 0xff, 0xd1, 0xfd, 0x55, 0xfc, 0x4b, 0xfb, + 0xa0, 0xfa, 0xf5, 0xf7, 0x72, 0xf7, 0x72, 0xf7, 0x2d, 0xf7, 0x20, 0xf7, 0xdf, 0xf5, 0x5b, 0xf6, + 0xdf, 0xf6, 0xca, 0xf7, 0xd6, 0xf9, 0x37, 0xfb, 0x43, 0xfc, 0xec, 0xfc, 0x84, 0xfd, 0x5d, 0xfe, + 0xad, 0xfe, 0x08, 0x00, 0xca, 0x00, 0x99, 0x01, 0xa2, 0x02, 0x98, 0x04, 0x7d, 0x06, 0xda, 0x06, + 0x44, 0x07, 0x43, 0x08, 0xad, 0x09, 0x62, 0x09, 0xf8, 0x08, 0x6b, 0x09, 0x08, 0x08, 0xd6, 0x06, + 0x69, 0x05, 0x61, 0x04, 0x24, 0x02, 0x24, 0xfe, 0x52, 0xfa, 0xf2, 0xf6, 0x02, 0xf6, 0x1d, 0xf5, + 0x14, 0xf4, 0x62, 0xf3, 0x64, 0xf3, 0xd8, 0xf3, 0x30, 0xf4, 0xd5, 0xf4, 0x64, 0xf6, 0xe0, 0xf7, + 0xe3, 0xf7, 0xdf, 0xf8, 0xb5, 0xfa, 0xc2, 0xfb, 0xc2, 0xfb, 0x79, 0xfc, 0x18, 0xfe, 0xd5, 0x00, + 0xdc, 0x02, 0x28, 0x04, 0x67, 0x06, 0x0a, 0x09, 0xea, 0x0a, 0x74, 0x0c, 0xa5, 0x0c, 0x18, 0x0d, + 0xbc, 0x0d, 0x87, 0x0d, 0x18, 0x0d, 0x07, 0x0c, 0xc4, 0x0a, 0xa3, 0x0a, 0xe1, 0x08, 0xfd, 0x06, + 0xa3, 0x06, 0x22, 0x04, 0xc2, 0x00, 0x02, 0xff, 0xa9, 0xfe, 0x3a, 0xfd, 0xee, 0xfa, 0xb3, 0xf8, + 0x02, 0xf8, 0x0f, 0xf8, 0xbd, 0xf8, 0x04, 0xfa, 0x46, 0xfb, 0xbf, 0xfc, 0x60, 0xfc, 0x39, 0xfc, + 0x06, 0xfe, 0xe0, 0xff, 0xd7, 0x00, 0xbe, 0x00, 0x11, 0x01, 0x69, 0x02, 0x16, 0x03, 0x00, 0x04, + 0xef, 0x03, 0xd9, 0x03, 0x6f, 0x04, 0x8b, 0x04, 0x55, 0x05, 0x5f, 0x07, 0x3d, 0x07, 0x95, 0x06, + 0xd4, 0x05, 0x76, 0x03, 0xb1, 0x01, 0x49, 0x00, 0x0a, 0xff, 0xb5, 0xfd, 0xbe, 0xfb, 0x1e, 0xfa, + 0x5c, 0xfa, 0x01, 0xfa, 0xeb, 0xf8, 0xd6, 0xf7, 0xc4, 0xf7, 0x2b, 0xf8, 0xf7, 0xf9, 0x57, 0xfb, + 0xd2, 0xfb, 0x0b, 0xfb, 0x33, 0xf9, 0xac, 0xf8, 0x7b, 0xf8, 0xdd, 0xf8, 0x2f, 0xfa, 0xfb, 0xfa, + 0xc7, 0xfc, 0x2b, 0xfe, 0xdf, 0xfd, 0xac, 0xfe, 0xfd, 0xff, 0x00, 0x01, 0x32, 0x01, 0xe1, 0x01, + 0xc8, 0x01, 0x3d, 0x03, 0xda, 0x03, 0x46, 0x02, 0x52, 0x02, 0x64, 0x02, 0x8b, 0x01, 0x40, 0x01, + 0xd1, 0x01, 0x33, 0x03, 0x06, 0x02, 0x60, 0x00, 0xf6, 0xfe, 0xcb, 0xfb, 0x99, 0xfc, 0xb7, 0xfc, + 0x0e, 0xfc, 0x03, 0xfc, 0x75, 0xfc, 0xde, 0xfc, 0xaf, 0xfd, 0x8a, 0xfd, 0x1d, 0xff, 0x3a, 0xfe, + 0xdf, 0xfc, 0xf4, 0xfd, 0x7d, 0xff, 0xd7, 0x01, 0x5b, 0x00, 0x5c, 0xff, 0x99, 0xff, 0x17, 0xff, + 0x6f, 0xff, 0xbc, 0xff, 0xd5, 0x00, 0x1a, 0x01, 0x8f, 0xff, 0xc9, 0xff, 0xde, 0x01, 0x45, 0x04, + 0x8f, 0x04, 0xf8, 0x03, 0xfb, 0x02, 0x88, 0x00, 0x89, 0xfe, 0xef, 0xfd, 0x71, 0xfc, 0x10, 0xfc, + 0x9f, 0xfa, 0x0f, 0xfb, 0xb1, 0xfd, 0xe5, 0xfe, 0xbd, 0xfe, 0x28, 0xfe, 0xa3, 0xfe, 0x80, 0xff, + 0xc5, 0xff, 0x45, 0x01, 0xbe, 0x02, 0x29, 0x05, 0x49, 0x06, 0xd2, 0x05, 0x73, 0x07, 0x55, 0x08, + 0xee, 0x08, 0xa4, 0x08, 0xdc, 0x07, 0xfe, 0x07, 0xf0, 0x09, 0x5e, 0x0b, 0x3f, 0x0b, 0x47, 0x08, + 0xea, 0x06, 0xd5, 0x05, 0x1a, 0x05, 0x75, 0x03, 0xad, 0x00, 0x4b, 0xfe, 0x42, 0xfd, 0xa9, 0xfb, + 0x71, 0xfa, 0x97, 0xf9, 0xd7, 0xf7, 0x2b, 0xf7, 0x0c, 0xf7, 0xb3, 0xf6, 0xfd, 0xf5, 0xb0, 0xf6, + 0x42, 0xf6, 0x40, 0xf6, 0x09, 0xf7, 0xcd, 0xf8, 0x35, 0xfb, 0x75, 0xfc, 0x6c, 0xfd, 0xe8, 0xff, + 0xe8, 0x02, 0xa7, 0x04, 0xfb, 0x04, 0xc4, 0x05, 0x49, 0x07, 0x37, 0x08, 0x07, 0x09, 0x22, 0x0a, + 0x08, 0x0c, 0x0e, 0x0c, 0xed, 0x0b, 0x2e, 0x0c, 0xa7, 0x0c, 0xb5, 0x0b, 0xbc, 0x09, 0x26, 0x08, + 0x82, 0x07, 0x5f, 0x07, 0xf6, 0x04, 0x05, 0x01, 0xe4, 0xfe, 0x89, 0xfc, 0x64, 0xfa, 0x36, 0xf9, + 0x32, 0xf8, 0x18, 0xf8, 0xf1, 0xf5, 0x54, 0xf5, 0x01, 0xf6, 0x7f, 0xf6, 0xcd, 0xf7, 0x6c, 0xf9, + 0xf6, 0xf9, 0x18, 0xf9, 0x54, 0xfa, 0x2f, 0xfb, 0x13, 0xfc, 0xc7, 0xfc, 0x63, 0xfc, 0x35, 0xfb, + 0xe5, 0xfc, 0x6d, 0xfe, 0xe2, 0x00, 0x8d, 0x01, 0x3c, 0x00, 0x19, 0x01, 0x95, 0x02, 0x4c, 0x03, + 0xc1, 0x04, 0x6f, 0x04, 0xff, 0x02, 0x78, 0x02, 0x9f, 0x00, 0x10, 0x01, 0x72, 0x00, 0x27, 0xff, + 0x54, 0xfe, 0x3e, 0xfc, 0xc2, 0xfb, 0x1f, 0xfc, 0x26, 0xfb, 0x3e, 0xf8, 0x20, 0xf6, 0xdd, 0xf4, + 0x96, 0xf3, 0x05, 0xf3, 0xfa, 0xf3, 0x19, 0xf5, 0x65, 0xf5, 0xaa, 0xf6, 0xb3, 0xf7, 0xe9, 0xf8, + 0x50, 0xfa, 0x9c, 0xfc, 0x57, 0xfb, 0x5c, 0xfb, 0xe6, 0xfc, 0x40, 0xff, 0x6c, 0x02, 0xf9, 0x05, + 0x2a, 0x08, 0xab, 0x08, 0xa9, 0x09, 0x05, 0x0a, 0x56, 0x0b, 0x1a, 0x0e, 0xf5, 0x0f, 0xa2, 0x0f, + 0xba, 0x0e, 0xa3, 0x0e, 0x84, 0x0d, 0x5d, 0x0b, 0xcb, 0x09, 0xa1, 0x08, 0x75, 0x07, 0xc2, 0x05, + 0xd1, 0x04, 0x90, 0x03, 0x12, 0x01, 0xfc, 0xff, 0xdd, 0xfe, 0x26, 0xfe, 0x9f, 0xff, 0x4a, 0x01, + 0x4d, 0x01, 0x61, 0x00, 0xf4, 0xff, 0x31, 0xff, 0x29, 0xfe, 0x85, 0x00, 0x2e, 0x00, 0x31, 0x00, + 0x02, 0x01, 0x23, 0x00, 0x33, 0x01, 0xd7, 0x02, 0x89, 0x03, 0xc3, 0x03, 0x4d, 0x05, 0x68, 0x06, + 0xdd, 0x04, 0x89, 0x05, 0x2c, 0x06, 0x69, 0x05, 0x97, 0x05, 0x62, 0x06, 0xb3, 0x03, 0x94, 0x01, + 0xd9, 0x02, 0x08, 0x02, 0x50, 0xff, 0x13, 0xfe, 0x16, 0xfd, 0x0b, 0xfa, 0xe5, 0xf9, 0x8b, 0xfa, + 0xba, 0xf9, 0x63, 0xf9, 0xa4, 0xfa, 0xed, 0xf9, 0xeb, 0xf8, 0xad, 0xfb, 0x4e, 0xfb, 0xf6, 0xf9, + 0xec, 0xfb, 0xf4, 0xfc, 0xf3, 0xfb, 0x38, 0xfc, 0x0f, 0xfe, 0x08, 0xfb, 0x05, 0xfa, 0x68, 0xfc, + 0x39, 0xfe, 0x93, 0xfc, 0xe6, 0xfd, 0x87, 0xff, 0x23, 0xfc, 0x75, 0xfb, 0xd4, 0xfc, 0x18, 0xfe, + 0x36, 0xfc, 0xbc, 0xfd, 0xab, 0xfd, 0xed, 0xfb, 0x2c, 0xfb, 0x04, 0xfc, 0xdc, 0xf9, 0x00, 0xf8, + 0x6b, 0xf8, 0x7c, 0xf7, 0x32, 0xf6, 0x39, 0xf9, 0x83, 0xfa, 0x41, 0xf8, 0xdc, 0xf9, 0xc6, 0xfb, + 0x43, 0xfc, 0x05, 0xfd, 0xf9, 0x00, 0x83, 0x00, 0xf5, 0x00, 0xcb, 0x03, 0x9d, 0x04, 0xda, 0x02, + 0x55, 0x04, 0x74, 0x06, 0x4d, 0x03, 0xef, 0x03, 0x24, 0x08, 0x58, 0x07, 0x4f, 0x04, 0xe3, 0x05, + 0xb7, 0x06, 0x15, 0x05, 0x24, 0x06, 0xda, 0x06, 0x28, 0x05, 0xac, 0x04, 0x65, 0x04, 0x53, 0x01, + 0x79, 0x01, 0x42, 0x02, 0x0b, 0x01, 0x6c, 0xff, 0x55, 0xff, 0xe4, 0xfe, 0x1a, 0xfd, 0x28, 0xfc, + 0xb4, 0xfa, 0x37, 0xf9, 0x14, 0xfa, 0x22, 0xfc, 0xe3, 0xfc, 0x20, 0xfe, 0x5e, 0x00, 0xe9, 0xfe, + 0x92, 0xfe, 0xb1, 0x00, 0x01, 0x02, 0xdd, 0x02, 0xd8, 0x03, 0x04, 0x05, 0x4a, 0x04, 0xe0, 0x05, + 0x20, 0x08, 0xc2, 0x09, 0xa8, 0x0b, 0x6a, 0x0a, 0xd9, 0x08, 0xf6, 0x07, 0xef, 0x07, 0x7b, 0x09, + 0x72, 0x09, 0x3b, 0x08, 0x9b, 0x05, 0xb3, 0x02, 0xe6, 0x00, 0x44, 0x00, 0xb9, 0xfe, 0x70, 0xfc, + 0x0a, 0xfb, 0xd9, 0xf7, 0xa6, 0xf5, 0xf7, 0xf5, 0xcb, 0xf6, 0x07, 0xf6, 0x15, 0xf5, 0x1b, 0xf5, + 0xfb, 0xf3, 0x9f, 0xf5, 0x49, 0xfa, 0x05, 0xfd, 0xa9, 0xfd, 0xcd, 0xfe, 0xfe, 0xfe, 0xf4, 0xfd, + 0x50, 0xff, 0x28, 0x03, 0x79, 0x05, 0x04, 0x06, 0x47, 0x06, 0xe0, 0x05, 0x4c, 0x06, 0x42, 0x08, + 0x44, 0x09, 0x59, 0x09, 0x37, 0x09, 0x88, 0x08, 0x34, 0x08, 0x95, 0x07, 0xca, 0x06, 0x18, 0x05, + 0x64, 0x00, 0x17, 0xfd, 0x59, 0xfd, 0x9f, 0xfc, 0xf9, 0xfa, 0xea, 0xfa, 0xe7, 0xf8, 0x91, 0xf3, + 0x75, 0xf0, 0xd8, 0xf0, 0x9d, 0xf0, 0xa5, 0xf1, 0x21, 0xf3, 0xc0, 0xf2, 0x4e, 0xf1, 0xe6, 0xf2, + 0x73, 0xf5, 0xc1, 0xf5, 0x8e, 0xf8, 0x2d, 0xfa, 0x68, 0xf9, 0x0f, 0xfa, 0x1b, 0xfd, 0x2c, 0xff, + 0x44, 0x01, 0x54, 0x04, 0x63, 0x04, 0x3c, 0x05, 0xf3, 0x07, 0xa4, 0x08, 0xc8, 0x08, 0x4f, 0x09, + 0x1a, 0x09, 0xb9, 0x06, 0x8e, 0x05, 0x72, 0x07, 0x26, 0x08, 0xa1, 0x06, 0xe3, 0x05, 0x2c, 0x05, + 0xfd, 0x02, 0x6b, 0x00, 0xcb, 0xfe, 0xbd, 0xfd, 0x26, 0xfd, 0xa4, 0xfd, 0x0e, 0xfd, 0x16, 0xfb, + 0x62, 0xfa, 0xe7, 0xfa, 0xab, 0xfa, 0x36, 0xfa, 0xba, 0xfb, 0x61, 0xfd, 0xa8, 0xfd, 0x3e, 0xfe, + 0xab, 0xfe, 0x05, 0xff, 0x72, 0xff, 0x5d, 0x00, 0xcf, 0xff, 0x97, 0x01, 0x2e, 0x04, 0x1a, 0x06, + 0xda, 0x07, 0x2f, 0x08, 0xa4, 0x08, 0xe5, 0x08, 0x8a, 0x09, 0x42, 0x09, 0xff, 0x09, 0x39, 0x0a, + 0xf2, 0x08, 0xd3, 0x07, 0x67, 0x06, 0xb7, 0x05, 0x48, 0x05, 0x08, 0x04, 0xb3, 0x02, 0xee, 0x01, + 0x3f, 0x00, 0x14, 0xff, 0xd1, 0xfe, 0x5a, 0xff, 0x58, 0xff, 0xb8, 0xfd, 0x17, 0xfd, 0xa4, 0xfd, + 0x75, 0xfd, 0xf4, 0xfd, 0x5d, 0xfe, 0x05, 0xfd, 0xb7, 0xfb, 0xcd, 0xfb, 0xe8, 0xfb, 0x91, 0xfc, + 0x4c, 0xfe, 0x0c, 0xff, 0x56, 0xff, 0x4d, 0x00, 0x23, 0x01, 0x81, 0x01, 0x84, 0x02, 0x0c, 0x03, + 0x9c, 0x02, 0x96, 0x01, 0xfa, 0x00, 0x53, 0x01, 0x37, 0x01, 0xf4, 0x00, 0x4b, 0x00, 0x9d, 0xfe, + 0x3a, 0xfd, 0x21, 0xfc, 0xd4, 0xfa, 0x82, 0xf8, 0x3e, 0xf8, 0x6b, 0xf7, 0xd7, 0xf6, 0xa6, 0xf6, + 0x97, 0xf7, 0x1b, 0xf9, 0x24, 0xfa, 0x0e, 0xfa, 0x5a, 0xfb, 0x29, 0xfd, 0x6d, 0xfe, 0x57, 0xff, + 0xd0, 0xfe, 0x9a, 0xfe, 0x7d, 0xff, 0xf7, 0xff, 0x3d, 0x01, 0xac, 0x02, 0x24, 0x03, 0x33, 0x03, + 0x8b, 0x02, 0xc2, 0x01, 0x74, 0x02, 0x3b, 0x04, 0x03, 0x04, 0x06, 0x04, 0x9e, 0x04, 0x98, 0x03, + 0xe1, 0x02, 0x76, 0x01, 0x3e, 0xff, 0x32, 0xfe, 0x88, 0xfd, 0xf1, 0xfb, 0xd3, 0xfb, 0x3a, 0xfd, + 0xf9, 0xfc, 0x84, 0xfb, 0xb5, 0xfa, 0xad, 0xfa, 0x2e, 0xfc, 0x5b, 0xff, 0xae, 0x01, 0x7a, 0x01, + 0xe9, 0x03, 0xdb, 0x05, 0xa4, 0x06, 0xc9, 0x05, 0xd3, 0x06, 0x17, 0x07, 0xd3, 0x05, 0xcd, 0x07, + 0x27, 0x0a, 0x2b, 0x0b, 0x5a, 0x0c, 0x58, 0x0b, 0x27, 0x0b, 0xb9, 0x09, 0x95, 0x08, 0x37, 0x0a, + 0x23, 0x0b, 0x94, 0x0a, 0xcb, 0x09, 0x17, 0x09, 0x9a, 0x06, 0x6c, 0x06, 0xa4, 0x04, 0xe3, 0x02, + 0x3e, 0x01, 0x21, 0x00, 0xcc, 0xfc, 0xb3, 0xfa, 0xed, 0xf9, 0x19, 0xf8, 0x2b, 0xf7, 0xf9, 0xf7, + 0xa5, 0xf5, 0x06, 0xf5, 0xc2, 0xf7, 0xf7, 0xf8, 0x5b, 0xf9, 0xc4, 0xfb, 0xea, 0xfc, 0x99, 0xfc, + 0x84, 0xfe, 0x22, 0x00, 0xdd, 0x00, 0x6d, 0x01, 0x1f, 0x01, 0x0b, 0x00, 0xc1, 0x01, 0xb8, 0x03, + 0x70, 0x04, 0x64, 0x04, 0xdd, 0x04, 0xd3, 0x04, 0x81, 0x05, 0xc1, 0x05, 0x27, 0x05, 0x13, 0x04, + 0xeb, 0x02, 0x93, 0x00, 0x0d, 0x00, 0x19, 0x01, 0x84, 0xff, 0xfe, 0xfb, 0x4c, 0xfa, 0xb2, 0xf6, + 0x6f, 0xf4, 0x7e, 0xf4, 0x61, 0xf3, 0xc7, 0xf1, 0x45, 0xf1, 0xe8, 0xf0, 0xef, 0xef, 0x3e, 0xf0, + 0xe9, 0xf0, 0x6c, 0xf1, 0xe7, 0xf2, 0xd6, 0xf4, 0x43, 0xf5, 0xe9, 0xf5, 0xcf, 0xf7, 0x09, 0xf9, + 0xbe, 0xf8, 0xe6, 0xf9, 0x56, 0xfd, 0x4e, 0x00, 0x9f, 0x02, 0x46, 0x05, 0x37, 0x06, 0x3b, 0x05, + 0x82, 0x06, 0xc4, 0x06, 0x04, 0x06, 0x4f, 0x07, 0xf5, 0x06, 0xe7, 0x06, 0xba, 0x07, 0x34, 0x07, + 0xbf, 0x05, 0x28, 0x04, 0x86, 0x01, 0x10, 0x00, 0x66, 0xfe, 0x28, 0xfb, 0x87, 0xfa, 0x73, 0xf9, + 0x17, 0xf7, 0x6d, 0xf5, 0xf4, 0xf4, 0x6d, 0xf5, 0x50, 0xf6, 0xa3, 0xf7, 0x56, 0xf8, 0x7e, 0xf9, + 0xb2, 0xfa, 0xea, 0xfa, 0x9f, 0xfc, 0x22, 0xfe, 0xa9, 0xfe, 0xbe, 0xfe, 0x3f, 0x00, 0x85, 0x01, + 0xda, 0x02, 0xf3, 0x04, 0xc7, 0x06, 0x8d, 0x07, 0xe0, 0x07, 0x23, 0x09, 0x62, 0x0a, 0xe8, 0x0a, + 0xb1, 0x09, 0x07, 0x08, 0xeb, 0x06, 0x4a, 0x06, 0x5e, 0x05, 0x1b, 0x05, 0x21, 0x04, 0xbb, 0x01, + 0x7d, 0x01, 0x4d, 0x01, 0x52, 0x00, 0xad, 0xff, 0x11, 0xff, 0x84, 0xfe, 0x2a, 0xfd, 0xd9, 0xfc, + 0x3f, 0xff, 0x4d, 0x01, 0xf6, 0x03, 0x7d, 0x04, 0x95, 0x03, 0x4a, 0x03, 0x8c, 0x03, 0x17, 0x03, + 0x69, 0x02, 0x7a, 0x03, 0xe1, 0x05, 0x15, 0x07, 0x06, 0x0e, 0x4e, 0x11, 0x52, 0x12, 0xa0, 0x11, + 0x55, 0x0f, 0x27, 0x0e, 0x0c, 0x0c, 0x08, 0x09, 0x4d, 0x0a, 0xd5, 0x08, 0xc1, 0x0b, 0x88, 0x0c, + 0x39, 0x0e, 0xc9, 0x0c, 0x7a, 0x07, 0xe1, 0x03, 0xaa, 0x00, 0x61, 0xfc, 0x38, 0xfb, 0xfd, 0xfa, + 0xf9, 0xfe, 0xf0, 0xfc, 0xdf, 0xfc, 0xfe, 0xfd, 0xa5, 0xfb, 0x00, 0xfa, 0xe9, 0xf6, 0x8b, 0xf3, + 0x8a, 0xf1, 0x9b, 0xf4, 0x35, 0xf6, 0x7b, 0xf9, 0x2b, 0xfd, 0xd8, 0xfa, 0x27, 0xf7, 0xea, 0xf5, + 0xee, 0xf1, 0xb5, 0xf1, 0x5a, 0xee, 0x8d, 0xec, 0x42, 0xf2, 0xe3, 0xf3, 0x81, 0xf3, 0xf0, 0xf3, + 0x0d, 0xf3, 0xf9, 0xf5, 0x56, 0xf3, 0x9a, 0xf0, 0xcc, 0xf2, 0x8f, 0xf1, 0xb1, 0xf2, 0x2a, 0xf7, + 0x26, 0xfb, 0x5a, 0xfe, 0xc1, 0x01, 0xc7, 0x07, 0x56, 0x0c, 0x40, 0x0d, 0x55, 0x0e, 0x9b, 0x10, + 0xc6, 0x0f, 0x5b, 0x13, 0x6b, 0x1a, 0xbb, 0x1e, 0x86, 0x24, 0x34, 0x23, 0x19, 0x21, 0x23, 0x21, + 0xd4, 0x1c, 0xae, 0x17, 0xd9, 0x12, 0x6d, 0x0c, 0xe1, 0x0a, 0x67, 0x0a, 0xbe, 0x08, 0xf1, 0x0a, + 0x10, 0x06, 0x1f, 0x04, 0xe1, 0x00, 0x5a, 0xf6, 0x7d, 0xf6, 0x8d, 0xf6, 0xc8, 0xef, 0x20, 0xef, + 0xf5, 0xec, 0x90, 0xeb, 0x09, 0xea, 0x2f, 0xe7, 0x11, 0xe7, 0x34, 0xe8, 0x6e, 0xe4, 0x4c, 0xe5, + 0xea, 0xe5, 0x20, 0xe7, 0x9d, 0xf0, 0xb0, 0xf7, 0xab, 0xf9, 0xde, 0xff, 0x7f, 0x00, 0xd4, 0x02, + 0x7e, 0x01, 0xfc, 0xfa, 0xef, 0xf8, 0xcf, 0xf3, 0x99, 0xee, 0xa7, 0xef, 0x2d, 0xec, 0xe1, 0xec, + 0x0c, 0xef, 0x8c, 0xf2, 0xab, 0xf5, 0x63, 0xf2, 0x94, 0xf2, 0xa8, 0xf8, 0x61, 0xf7, 0x7c, 0xf8, + 0x7a, 0xfb, 0xd1, 0xfd, 0xea, 0xff, 0x32, 0xff, 0x7e, 0xfd, 0xd4, 0xfe, 0x7a, 0xfc, 0x87, 0xfc, + 0x39, 0xff, 0xc1, 0xff, 0xb0, 0x04, 0x15, 0x0e, 0x42, 0x10, 0x60, 0x13, 0x93, 0x13, 0xf9, 0x13, + 0x09, 0x14, 0xb4, 0x0e, 0x94, 0x0a, 0x21, 0x0a, 0x3a, 0x08, 0xbf, 0x09, 0x6b, 0x08, 0x68, 0x06, + 0xec, 0x08, 0xc6, 0x0d, 0xf1, 0x0f, 0xdf, 0x0f, 0xcf, 0x0b, 0x86, 0x0f, 0x27, 0x0f, 0xac, 0x0a, + 0x43, 0x0c, 0x7a, 0x0e, 0x69, 0x0e, 0x69, 0x0d, 0x25, 0x0c, 0x3f, 0x14, 0xc3, 0x15, 0x8f, 0x17, + 0x77, 0x1a, 0x76, 0x19, 0x18, 0x1c, 0x3a, 0x22, 0x26, 0x23, 0xf3, 0x20, 0x87, 0x1c, 0xfd, 0x15, + 0x76, 0x0c, 0x68, 0x03, 0xc7, 0xf9, 0x95, 0xf5, 0x85, 0xee, 0x45, 0xea, 0xa4, 0xea, 0x63, 0xe7, + 0x67, 0xe5, 0x3d, 0xe6, 0xbf, 0xe4, 0x11, 0xe6, 0xf7, 0xde, 0x8f, 0xde, 0xde, 0xe0, 0x48, 0xde, + 0xbe, 0xe0, 0x3c, 0xe4, 0xb4, 0xe6, 0x8e, 0xe8, 0x17, 0xe8, 0x21, 0xf1, 0xda, 0xf5, 0xf8, 0xf9, + 0xb4, 0x01, 0x1e, 0x05, 0x67, 0x0b, 0xbd, 0x14, 0xc4, 0x19, 0xf7, 0x1a, 0x09, 0x19, 0x6f, 0x18, + 0x87, 0x13, 0x9b, 0x0e, 0x3f, 0x06, 0x2c, 0x03, 0x05, 0xff, 0x8b, 0xf9, 0xb4, 0xfa, 0x31, 0xf8, + 0x16, 0xf5, 0x33, 0xf6, 0x01, 0xf3, 0x13, 0xf5, 0xad, 0xef, 0x44, 0xec, 0x25, 0xf1, 0xaf, 0xed, + 0x43, 0xee, 0x59, 0xf1, 0xb9, 0xf1, 0x25, 0xf4, 0xca, 0xf1, 0x16, 0xf9, 0x76, 0xff, 0x30, 0xff, + 0x8e, 0x05, 0x37, 0x0d, 0xd9, 0x13, 0xe1, 0x1d, 0x48, 0x25, 0x35, 0x27, 0x72, 0x25, 0xf2, 0x24, + 0x9e, 0x1f, 0xc0, 0x18, 0xbb, 0x0f, 0x8e, 0x07, 0x99, 0x03, 0xfd, 0xfb, 0x93, 0xfb, 0x58, 0xfb, + 0x00, 0xf4, 0xa6, 0xf2, 0x76, 0xee, 0xae, 0xed, 0xe1, 0xea, 0x20, 0xe2, 0x17, 0xe4, 0x08, 0xe2, + 0x9b, 0xdf, 0x0e, 0xe3, 0xf8, 0xe3, 0x37, 0xea, 0xa9, 0xe9, 0x4a, 0xe9, 0x4a, 0xf0, 0xd1, 0xf1, + 0xd1, 0xf7, 0xa8, 0xfe, 0x28, 0x05, 0x6d, 0x0f, 0xcd, 0x19, 0x1c, 0x21, 0x88, 0x20, 0x7f, 0x20, + 0x2c, 0x1f, 0x1f, 0x1a, 0x82, 0x14, 0x32, 0x0c, 0x8f, 0x09, 0xd4, 0x03, 0x14, 0x01, 0x8e, 0x03, + 0x2e, 0xfc, 0x45, 0xf9, 0xbc, 0xf6, 0x76, 0xf1, 0x0f, 0xef, 0xcf, 0xe4, 0x98, 0xe2, 0x58, 0xe1, + 0x0c, 0xdd, 0xbb, 0xdd, 0x9f, 0xdd, 0xd1, 0xe0, 0x7e, 0xe2, 0x40, 0xe1, 0xc7, 0xe9, 0x9b, 0xed, + 0x36, 0xf2, 0x44, 0xf7, 0x5e, 0xfb, 0x96, 0x01, 0x70, 0x09, 0x68, 0x13, 0x5f, 0x17, 0xe7, 0x16, + 0xbe, 0x16, 0x2e, 0x11, 0x87, 0x0d, 0x24, 0x06, 0xe7, 0x02, 0x55, 0x00, 0xfd, 0xfc, 0xd5, 0x01, + 0x85, 0xfe, 0x19, 0xfc, 0x69, 0xfc, 0xb7, 0xf6, 0xb6, 0xf6, 0xbc, 0xec, 0x0f, 0xe8, 0x49, 0xea, + 0x7a, 0xe8, 0x20, 0xeb, 0x37, 0xec, 0x09, 0xf0, 0xbf, 0xf5, 0xdb, 0xf3, 0x27, 0xfc, 0x13, 0x03, + 0xcb, 0x07, 0x57, 0x0f, 0x1d, 0x16, 0x33, 0x1f, 0x9e, 0x29, 0xe6, 0x34, 0x3e, 0x38, 0xc0, 0x37, + 0x41, 0x3c, 0x56, 0x39, 0x84, 0x38, 0x92, 0x32, 0xab, 0x2c, 0xf0, 0x2a, 0x95, 0x23, 0xf6, 0x23, + 0xa1, 0x23, 0x05, 0x1e, 0xfc, 0x1c, 0xde, 0x13, 0x6f, 0x0f, 0x16, 0x05, 0x98, 0xfa, 0xcd, 0xf8, + 0xad, 0xf4, 0x92, 0xf2, 0x0b, 0xf2, 0xb2, 0xf1, 0xb6, 0xf3, 0x34, 0xee, 0x63, 0xf0, 0x2b, 0xf4, + 0xc5, 0xf3, 0xb9, 0xf7, 0x45, 0xfb, 0x68, 0x01, 0x59, 0x09, 0x95, 0x13, 0xc9, 0x1a, 0xec, 0x18, + 0xa6, 0x19, 0xf8, 0x15, 0xfc, 0x13, 0x75, 0x0f, 0xb9, 0x07, 0xa0, 0x05, 0x3f, 0xff, 0x88, 0xfe, + 0x1f, 0x01, 0x14, 0xfc, 0x4c, 0xfc, 0xef, 0xf5, 0x13, 0xf3, 0x84, 0xef, 0xf8, 0xe6, 0x64, 0xe7, + 0x1e, 0xe5, 0x86, 0xe2, 0xda, 0xe1, 0x5d, 0xdf, 0xaa, 0xe4, 0x83, 0xe1, 0x62, 0xdf, 0xb3, 0xe0, + 0x16, 0xdf, 0xd9, 0xe0, 0x7a, 0xe3, 0x63, 0xe9, 0x90, 0xf0, 0x7b, 0xf8, 0xc0, 0x04, 0xeb, 0x05, + 0x01, 0x08, 0x70, 0x07, 0x01, 0x04, 0x62, 0x01, 0x95, 0xf9, 0x26, 0xf8, 0x05, 0xf4, 0x89, 0xf0, + 0xbb, 0xf6, 0xa3, 0xf4, 0xbc, 0xf5, 0x8a, 0xf4, 0x86, 0xf2, 0x23, 0xf4, 0xa4, 0xec, 0x2e, 0xeb, + 0xbd, 0xec, 0xd6, 0xec, 0x20, 0xf1, 0x22, 0xf0, 0x24, 0xf6, 0x85, 0xf6, 0xa5, 0xf4, 0x84, 0xfa, + 0x5e, 0xfc, 0x21, 0xff, 0x81, 0x02, 0xe1, 0x05, 0x25, 0x0d, 0x53, 0x14, 0x90, 0x20, 0xce, 0x24, + 0x1e, 0x25, 0xcc, 0x23, 0x80, 0x1e, 0x34, 0x1c, 0x18, 0x14, 0x60, 0x0f, 0x97, 0x0c, 0xb5, 0x06, + 0x7c, 0x0a, 0xa3, 0x09, 0x34, 0x08, 0x68, 0x07, 0x4d, 0x02, 0x2a, 0x03, 0xad, 0xfc, 0x03, 0xf7, + 0x66, 0xf8, 0xf7, 0xf6, 0x37, 0xfa, 0xf1, 0xf9, 0xbb, 0xfd, 0xbb, 0xff, 0x22, 0xfb, 0x44, 0xff, + 0x07, 0x01, 0x2a, 0x03, 0xca, 0x04, 0x94, 0x05, 0xe7, 0x0a, 0x65, 0x0d, 0x70, 0x17, 0xdc, 0x1b, + 0x9d, 0x17, 0x62, 0x18, 0xd2, 0x12, 0x9d, 0x0f, 0x1c, 0x08, 0xe9, 0xff, 0xa0, 0xfd, 0x7e, 0xf3, + 0x65, 0xf1, 0x2a, 0xf0, 0x81, 0xee, 0x54, 0xf0, 0x8f, 0xe9, 0xca, 0xe7, 0xc1, 0xe1, 0x63, 0xd8, + 0x28, 0xd9, 0xa5, 0xd7, 0x4d, 0xda, 0x8d, 0xda, 0xbd, 0xdc, 0xec, 0xe5, 0xb0, 0xe4, 0x7a, 0xe7, + 0x88, 0xeb, 0x80, 0xed, 0x6c, 0xf1, 0x1d, 0xf5, 0x69, 0xfe, 0x18, 0x05, 0x97, 0x0e, 0x1f, 0x1a, + 0x5a, 0x1a, 0xdf, 0x1c, 0x9a, 0x1b, 0xf3, 0x1a, 0x8d, 0x18, 0xbe, 0x0f, 0x4d, 0x10, 0x2a, 0x0b, + 0x5b, 0x07, 0x76, 0x09, 0x7c, 0x06, 0x8f, 0x07, 0x4d, 0x03, 0x84, 0x02, 0xfa, 0x02, 0xb1, 0xfb, + 0xb7, 0xfa, 0x95, 0xf9, 0x61, 0xfa, 0x3f, 0xfa, 0x25, 0xfa, 0x91, 0x02, 0x41, 0x01, 0xf0, 0x00, + 0x15, 0x03, 0x48, 0x03, 0xf1, 0x07, 0xaa, 0x09, 0xd3, 0x0f, 0x63, 0x15, 0xa4, 0x1b, 0xd7, 0x27, + 0x5d, 0x29, 0xe2, 0x29, 0x7e, 0x27, 0xbc, 0x22, 0x87, 0x1e, 0xe7, 0x12, 0x57, 0x0e, 0xee, 0x07, + 0xdd, 0xff, 0x56, 0x00, 0x7e, 0xfb, 0xf0, 0xf9, 0x3e, 0xf4, 0x60, 0xee, 0xae, 0xee, 0x77, 0xe8, + 0xe2, 0xe4, 0x1a, 0xe3, 0x5d, 0xe3, 0xe4, 0xe6, 0x0d, 0xe5, 0xfc, 0xeb, 0x58, 0xed, 0x9f, 0xea, + 0x45, 0xed, 0x1f, 0xf0, 0xcb, 0xf6, 0x95, 0xfa, 0xa0, 0x01, 0x49, 0x09, 0x8b, 0x0c, 0x60, 0x1a, + 0x29, 0x21, 0x4c, 0x24, 0x66, 0x25, 0xf6, 0x1f, 0x42, 0x1e, 0x8d, 0x15, 0x39, 0x0f, 0xc2, 0x0b, + 0x98, 0x02, 0x11, 0x01, 0xaa, 0xfe, 0x05, 0xfd, 0x49, 0xf9, 0x38, 0xf3, 0x82, 0xf1, 0xed, 0xe9, + 0x05, 0xe3, 0x6e, 0xe0, 0x05, 0xde, 0xca, 0xe0, 0xbc, 0xde, 0xd8, 0xe3, 0x9e, 0xe7, 0x0c, 0xe6, + 0x1a, 0xea, 0xef, 0xec, 0x03, 0xf1, 0x17, 0xf4, 0x8f, 0xf8, 0x0e, 0x02, 0x9a, 0x06, 0xca, 0x13, + 0x58, 0x1d, 0xf7, 0x1f, 0x27, 0x24, 0x0d, 0x23, 0xe7, 0x23, 0x77, 0x1e, 0x13, 0x17, 0xae, 0x15, + 0xd1, 0x0c, 0x2a, 0x0b, 0x35, 0x0b, 0x8d, 0x09, 0xd5, 0x07, 0x35, 0xff, 0x07, 0xfc, 0x32, 0xf7, + 0x25, 0xed, 0x5d, 0xe8, 0x4e, 0xe5, 0xd4, 0xe7, 0x99, 0xe4, 0x4d, 0xe6, 0x07, 0xeb, 0x59, 0xe9, + 0x87, 0xec, 0xe4, 0xed, 0xd4, 0xf0, 0x95, 0xf5, 0xfd, 0xf7, 0xcd, 0x01, 0x87, 0x05, 0x71, 0x0d, + 0x4c, 0x19, 0x07, 0x1b, 0xe4, 0x1e, 0xfd, 0x1f, 0x2b, 0x21, 0xa0, 0x20, 0x4c, 0x18, 0xe9, 0x16, + 0x34, 0x10, 0xa7, 0x0b, 0x31, 0x0b, 0xbf, 0x07, 0x4d, 0x06, 0x68, 0x00, 0xd9, 0xfb, 0xc8, 0xf8, + 0xc5, 0xf0, 0x21, 0xed, 0x60, 0xe8, 0x82, 0xe6, 0x03, 0xe2, 0x91, 0xdf, 0x25, 0xe5, 0x2a, 0xe5, + 0x68, 0xe3, 0x2d, 0xe2, 0x78, 0xe2, 0xca, 0xe5, 0xce, 0xe5, 0xc0, 0xec, 0x34, 0xf2, 0x21, 0xf7, + 0x50, 0x04, 0xb1, 0x0a, 0x9b, 0x10, 0x90, 0x13, 0x7f, 0x12, 0x1f, 0x13, 0x5a, 0x0a, 0x41, 0x09, + 0x43, 0x07, 0xbd, 0x02, 0x7d, 0x03, 0x09, 0x03, 0xbd, 0x04, 0xaf, 0x02, 0xc9, 0xff, 0x53, 0x00, + 0xef, 0xfb, 0xfd, 0xf9, 0xda, 0xf5, 0x75, 0xf7, 0xb8, 0xf8, 0xef, 0xf4, 0xc6, 0xf9, 0x6a, 0xfa, + 0xb3, 0xf8, 0x23, 0xf9, 0x64, 0xf8, 0xc5, 0xfd, 0x4a, 0xff, 0x4a, 0x03, 0x82, 0x08, 0x04, 0x0b, + 0x23, 0x16, 0x62, 0x1d, 0x7b, 0x21, 0x8c, 0x24, 0xee, 0x21, 0xd5, 0x21, 0x89, 0x1a, 0xd8, 0x14, + 0xc1, 0x11, 0x7a, 0x09, 0x3b, 0x08, 0x51, 0x06, 0xc0, 0x05, 0x0b, 0x06, 0xd3, 0x01, 0xc2, 0x00, + 0x2b, 0xfc, 0xb1, 0xf7, 0xd0, 0xf3, 0xe5, 0xf1, 0x6b, 0xf4, 0xfd, 0xf1, 0x5a, 0xf4, 0x96, 0xf6, + 0x9c, 0xf4, 0x47, 0xf5, 0xa5, 0xf3, 0x1a, 0xf8, 0xce, 0xf9, 0x34, 0xfc, 0xd5, 0x03, 0xbb, 0x05, + 0xd7, 0x0e, 0xfa, 0x18, 0x36, 0x1c, 0x2b, 0x20, 0xef, 0x1d, 0x57, 0x1e, 0xbe, 0x1a, 0xd7, 0x14, + 0xfa, 0x12, 0x1f, 0x0b, 0xa3, 0x06, 0xb3, 0x04, 0x1e, 0x04, 0xc3, 0x03, 0x06, 0xfe, 0x36, 0xfc, + 0x58, 0xf7, 0x98, 0xf1, 0x63, 0xeb, 0xec, 0xe5, 0xe1, 0xe8, 0xa7, 0xe5, 0x6b, 0xe5, 0x4b, 0xea, + 0x07, 0xea, 0x0e, 0xeb, 0x58, 0xe8, 0x98, 0xe9, 0xd2, 0xeb, 0x4f, 0xea, 0x34, 0xf0, 0x72, 0xf2, + 0xb1, 0xf8, 0x8a, 0x02, 0x49, 0x06, 0x81, 0x0b, 0x93, 0x0a, 0x5f, 0x0b, 0x0e, 0x0a, 0x76, 0x01, + 0xd3, 0xff, 0x2a, 0xfa, 0x31, 0xf6, 0xac, 0xf5, 0xcc, 0xf4, 0x99, 0xf7, 0x4d, 0xf5, 0xdb, 0xf4, + 0x23, 0xf4, 0x23, 0xf1, 0xdd, 0xed, 0xaf, 0xe8, 0xae, 0xeb, 0xa2, 0xeb, 0x91, 0xed, 0xb4, 0xf5, + 0x18, 0xf7, 0xc9, 0xf8, 0x54, 0xf9, 0x00, 0xfa, 0x4f, 0xff, 0x87, 0xff, 0x5d, 0x06, 0x9d, 0x0c, + 0x53, 0x10, 0x76, 0x1a, 0x20, 0x21, 0x07, 0x28, 0x59, 0x29, 0x4f, 0x28, 0xe8, 0x27, 0x9d, 0x1f, + 0x8e, 0x1b, 0x1b, 0x17, 0x20, 0x11, 0xf0, 0x0d, 0xf4, 0x09, 0x82, 0x0a, 0xda, 0x08, 0xca, 0x05, + 0x54, 0x05, 0x03, 0x02, 0xd3, 0xfd, 0xb8, 0xf5, 0x9c, 0xf5, 0xdf, 0xf4, 0xa6, 0xf1, 0xb5, 0xf4, + 0xff, 0xf4, 0xfb, 0xf5, 0xa4, 0xf4, 0x79, 0xf2, 0xd7, 0xf8, 0x60, 0xf9, 0x52, 0xfd, 0x21, 0x01, + 0xf4, 0x01, 0xba, 0x0b, 0x58, 0x12, 0x7b, 0x18, 0xd4, 0x1b, 0x7b, 0x18, 0xef, 0x17, 0x5d, 0x0f, + 0x4d, 0x07, 0x15, 0x01, 0x36, 0xf9, 0x5a, 0xf3, 0x49, 0xed, 0x87, 0xec, 0x4e, 0xec, 0xdd, 0xe9, + 0xfb, 0xe8, 0x55, 0xe3, 0xbd, 0xe0, 0x4c, 0xda, 0xb1, 0xd8, 0x29, 0xdc, 0xbc, 0xd9, 0x34, 0xdd, + 0xad, 0xe1, 0xd2, 0xe2, 0x04, 0xe4, 0xba, 0xe3, 0xbd, 0xea, 0x4e, 0xee, 0x8a, 0xf2, 0x65, 0xfc, + 0x7c, 0x00, 0x10, 0x0a, 0x9c, 0x14, 0xe5, 0x1b, 0x9f, 0x22, 0x3f, 0x22, 0x81, 0x25, 0xde, 0x22, + 0x55, 0x1d, 0xc3, 0x1a, 0x3f, 0x14, 0xa7, 0x0e, 0x1c, 0x0a, 0x25, 0x07, 0x21, 0x07, 0x3b, 0x03, + 0xe3, 0xff, 0xb2, 0xf9, 0x99, 0xf6, 0xc7, 0xee, 0x25, 0xe9, 0xfa, 0xea, 0x70, 0xe7, 0x79, 0xe7, + 0xe3, 0xeb, 0x9f, 0xed, 0x7b, 0xf0, 0x8d, 0xee, 0x58, 0xf2, 0x3f, 0xf5, 0xf2, 0xf5, 0xf8, 0xfd, + 0x8f, 0x01, 0xe9, 0x07, 0x9a, 0x13, 0xc4, 0x1b, 0x3b, 0x24, 0x87, 0x25, 0x3b, 0x28, 0x85, 0x28, + 0xd9, 0x23, 0xac, 0x21, 0x3a, 0x1d, 0x07, 0x19, 0x82, 0x15, 0x7d, 0x12, 0x87, 0x13, 0x1e, 0x0f, + 0xc3, 0x0b, 0xba, 0x06, 0xb4, 0x03, 0xf4, 0xfd, 0x50, 0xf5, 0x55, 0xf5, 0x6c, 0xf2, 0xbe, 0xee, + 0xe6, 0xf1, 0x0b, 0xf2, 0xc8, 0xf3, 0x78, 0xf1, 0x62, 0xf1, 0x73, 0xf4, 0x39, 0xf2, 0x82, 0xf7, + 0xa2, 0xfb, 0x9e, 0xfd, 0x49, 0x06, 0xf9, 0x0c, 0xf2, 0x16, 0x5c, 0x19, 0xaf, 0x19, 0xd4, 0x1b, + 0xe2, 0x15, 0xfb, 0x0f, 0xeb, 0x0b, 0x0b, 0x07, 0x7a, 0x03, 0xad, 0xff, 0x0e, 0x00, 0xb6, 0xfd, + 0x47, 0xfc, 0x58, 0xf9, 0xac, 0xf6, 0xe2, 0xf2, 0x81, 0xe9, 0xa5, 0xe8, 0xec, 0xe7, 0xab, 0xe3, + 0xe2, 0xe5, 0xfb, 0xe5, 0x32, 0xe8, 0xdf, 0xe7, 0xf4, 0xe6, 0x19, 0xec, 0xb9, 0xec, 0xd1, 0xef, + 0x02, 0xf5, 0xda, 0xf7, 0x63, 0x02, 0x2c, 0x0c, 0x15, 0x16, 0x81, 0x1a, 0x5d, 0x1b, 0x4d, 0x1e, + 0x33, 0x1a, 0x74, 0x15, 0x5d, 0x13, 0xc3, 0x0f, 0x1c, 0x0c, 0xb4, 0x07, 0x3d, 0x09, 0xc1, 0x09, + 0xbe, 0x09, 0x0f, 0x08, 0x7f, 0x04, 0x47, 0x03, 0xa8, 0xfb, 0x7c, 0xf8, 0x9e, 0xf8, 0x3f, 0xf3, + 0x5d, 0xf3, 0xa9, 0xf2, 0x0c, 0xf3, 0x5b, 0xf2, 0x2b, 0xee, 0x6f, 0xf2, 0x1e, 0xf2, 0xaf, 0xf1, + 0xd3, 0xf6, 0xa4, 0xf6, 0xb4, 0xfc, 0xf9, 0x03, 0x71, 0x0b, 0xef, 0x10, 0xd0, 0x10, 0x01, 0x14, + 0x97, 0x12, 0x46, 0x0e, 0x8f, 0x0b, 0xea, 0x05, 0xd3, 0x00, 0x01, 0xfb, 0xf4, 0xf9, 0x95, 0xfa, + 0x82, 0xfa, 0xd2, 0xf9, 0xa2, 0xf4, 0xc2, 0xf2, 0xf7, 0xeb, 0xa3, 0xe6, 0x46, 0xe8, 0x47, 0xe4, + 0xe2, 0xe2, 0x49, 0xe3, 0x31, 0xe5, 0xb5, 0xe8, 0x3d, 0xe6, 0xc2, 0xe8, 0xfd, 0xe8, 0x36, 0xe7, + 0xf1, 0xec, 0xb1, 0xef, 0x55, 0xf5, 0x46, 0xfe, 0x49, 0x07, 0xff, 0x0f, 0xcb, 0x11, 0x59, 0x17, + 0x53, 0x19, 0x1e, 0x16, 0xda, 0x14, 0x30, 0x13, 0x4a, 0x11, 0x2b, 0x0d, 0xfa, 0x0b, 0x7c, 0x0d, + 0x60, 0x0d, 0x2b, 0x0e, 0xfd, 0x0a, 0x93, 0x0c, 0x2a, 0x0a, 0xa8, 0x03, 0x9e, 0x05, 0xc7, 0x02, + 0x91, 0x00, 0x6c, 0x02, 0x7f, 0x02, 0x33, 0x05, 0x2d, 0x01, 0x85, 0x00, 0x3a, 0x02, 0xec, 0xfe, + 0x84, 0x01, 0xf8, 0x01, 0xa4, 0x01, 0xe7, 0x06, 0xae, 0x0b, 0x21, 0x13, 0x10, 0x14, 0xc6, 0x15, + 0x39, 0x17, 0x75, 0x12, 0x13, 0x0e, 0xc1, 0x08, 0x2b, 0x05, 0xbd, 0x00, 0x0f, 0xfc, 0x90, 0xfd, + 0x10, 0xfd, 0x82, 0xfd, 0xfa, 0xf9, 0xc6, 0xf8, 0x21, 0xf8, 0x73, 0xf1, 0xa4, 0xf1, 0x8e, 0xf2, + 0x29, 0xf1, 0xb5, 0xf3, 0x48, 0xf4, 0xd7, 0xf8, 0x2a, 0xf7, 0x9c, 0xf6, 0x4d, 0xfb, 0x90, 0xfb, + 0xfa, 0xfe, 0x0b, 0x03, 0x00, 0x04, 0xd2, 0x09, 0x4a, 0x0f, 0xdf, 0x17, 0xd1, 0x1b, 0x35, 0x1c, + 0x00, 0x1d, 0x3f, 0x19, 0x70, 0x12, 0x19, 0x0c, 0x94, 0x06, 0xc9, 0x00, 0x66, 0xf9, 0x7d, 0xf8, + 0x05, 0xf7, 0xc9, 0xf7, 0x8f, 0xf5, 0x70, 0xf2, 0xc5, 0xf1, 0xea, 0xe9, 0xc2, 0xe5, 0xce, 0xe6, + 0x2a, 0xe4, 0x10, 0xe5, 0xae, 0xe3, 0x1f, 0xe7, 0xa7, 0xe9, 0x67, 0xe9, 0x4c, 0xee, 0xb8, 0xef, + 0x91, 0xf1, 0x9b, 0xf7, 0x2e, 0xfa, 0x1f, 0x00, 0x11, 0x06, 0x33, 0x10, 0x50, 0x16, 0xda, 0x17, + 0x2a, 0x1c, 0x03, 0x1c, 0xec, 0x17, 0xbc, 0x12, 0xef, 0x0b, 0x06, 0x07, 0xb6, 0x00, 0xd7, 0xff, + 0x0e, 0xfe, 0xa9, 0xfe, 0x79, 0xfd, 0x9a, 0xf8, 0x30, 0xf8, 0x71, 0xf3, 0x9c, 0xee, 0x6a, 0xef, + 0x9d, 0xec, 0x3b, 0xed, 0xf5, 0xec, 0x39, 0xf0, 0x7c, 0xf4, 0x4f, 0xf3, 0x16, 0xf7, 0xa5, 0xfa, + 0x8d, 0xfb, 0x07, 0x02, 0x9b, 0x05, 0x5c, 0x0b, 0xa1, 0x11, 0x21, 0x1a, 0x4a, 0x22, 0x12, 0x25, + 0xf9, 0x29, 0x16, 0x2c, 0x34, 0x28, 0x35, 0x23, 0xaa, 0x1d, 0xe5, 0x19, 0x48, 0x11, 0x8b, 0x0c, + 0xd9, 0x08, 0x3d, 0x06, 0x67, 0x03, 0xed, 0xfb, 0xb5, 0xf9, 0x3b, 0xf6, 0xe4, 0xee, 0x3e, 0xed, + 0xa1, 0xe8, 0xcc, 0xe5, 0xb8, 0xe3, 0xe6, 0xe4, 0xdf, 0xe9, 0x6e, 0xe8, 0x9e, 0xe8, 0xaf, 0xe9, + 0xc3, 0xe7, 0xc1, 0xeb, 0x01, 0xee, 0x0d, 0xf2, 0x9c, 0xf6, 0x47, 0xfd, 0xea, 0x07, 0x7f, 0x0d, + 0x3e, 0x13, 0x83, 0x17, 0xc5, 0x15, 0x57, 0x12, 0x68, 0x0d, 0x43, 0x0c, 0x68, 0x08, 0xb4, 0x04, + 0x68, 0x02, 0x00, 0x00, 0x6f, 0x00, 0xdb, 0xfb, 0x7e, 0xf9, 0xc1, 0xf8, 0x15, 0xf1, 0xe5, 0xef, + 0x3c, 0xee, 0x01, 0xec, 0x6e, 0xeb, 0xe9, 0xea, 0x68, 0xef, 0xfa, 0xee, 0x30, 0xee, 0x6a, 0xf2, + 0x1b, 0xf3, 0x04, 0xf7, 0xa2, 0xfa, 0x01, 0xfe, 0xb6, 0x02, 0x4f, 0x08, 0x7f, 0x12, 0x14, 0x18, + 0x4e, 0x1b, 0x4f, 0x1f, 0xfa, 0x1e, 0xe9, 0x1c, 0xee, 0x16, 0x94, 0x12, 0x06, 0x0e, 0xa6, 0x08, + 0x31, 0x06, 0x81, 0x03, 0x90, 0x04, 0xdb, 0x01, 0x33, 0xff, 0x3d, 0xff, 0x4a, 0xf8, 0x5c, 0xf3, + 0x57, 0xf0, 0xef, 0xec, 0xb9, 0xeb, 0x1e, 0xe8, 0xef, 0xeb, 0xaa, 0xed, 0x4a, 0xeb, 0x71, 0xed, + 0xbf, 0xed, 0xac, 0xf0, 0xf6, 0xf4, 0x32, 0xf8, 0xe9, 0xfd, 0xfa, 0x03, 0x14, 0x0e, 0x56, 0x15, + 0x22, 0x19, 0x20, 0x1e, 0x18, 0x20, 0x69, 0x20, 0xd0, 0x1c, 0x74, 0x1a, 0x27, 0x19, 0xe1, 0x13, + 0xec, 0x11, 0x5a, 0x0f, 0x46, 0x11, 0xd2, 0x10, 0xe4, 0x0b, 0xb3, 0x0b, 0xc9, 0x06, 0x4b, 0x00, + 0x14, 0xfd, 0x98, 0xf7, 0xa7, 0xf4, 0x7b, 0xef, 0x7c, 0xef, 0xe4, 0xf0, 0x36, 0xed, 0xf6, 0xec, + 0xba, 0xeb, 0x43, 0xea, 0x83, 0xeb, 0x99, 0xec, 0xdc, 0xf0, 0x12, 0xf3, 0x67, 0xf9, 0xea, 0x00, + 0x9f, 0x04, 0x1e, 0x0a, 0xbe, 0x0d, 0x8f, 0x0d, 0xd0, 0x0a, 0x09, 0x07, 0x35, 0x06, 0xc3, 0x01, + 0xe3, 0x00, 0x7a, 0xfe, 0xf6, 0xfe, 0x59, 0x00, 0x8b, 0xfd, 0xc9, 0xff, 0x24, 0xff, 0xcc, 0xf8, + 0x39, 0xf7, 0x8f, 0xf4, 0xb4, 0xf4, 0x8c, 0xf2, 0xea, 0xf2, 0xe8, 0xf7, 0x32, 0xf6, 0x3a, 0xf5, + 0x19, 0xf6, 0x14, 0xf5, 0xce, 0xf6, 0x78, 0xf7, 0x1f, 0xfa, 0xae, 0xfb, 0xa1, 0x01, 0x9d, 0x0a, + 0xcc, 0x0f, 0x3b, 0x15, 0x11, 0x1a, 0x19, 0x1b, 0x08, 0x19, 0xec, 0x13, 0xad, 0x13, 0x59, 0x0f, + 0xd1, 0x0b, 0x5b, 0x07, 0xd1, 0x04, 0xaa, 0x06, 0x69, 0x03, 0x47, 0x02, 0x99, 0x02, 0x4d, 0xfd, + 0x7c, 0xfb, 0xce, 0xf7, 0x1d, 0xf7, 0xf0, 0xf4, 0xd5, 0xf2, 0x3b, 0xf6, 0xb0, 0xf4, 0x65, 0xf2, + 0x9f, 0xf3, 0x0e, 0xf2, 0x7e, 0xf3, 0xce, 0xf3, 0xe9, 0xf4, 0xde, 0xf4, 0xcf, 0xf6, 0x0f, 0xfe, + 0xda, 0x03, 0x41, 0x07, 0x10, 0x0a, 0x8e, 0x09, 0x2b, 0x07, 0xd6, 0x00, 0xf8, 0xfe, 0x19, 0xfb, + 0x1b, 0xf6, 0x19, 0xf2, 0x9c, 0xef, 0xa2, 0xf2, 0x46, 0xf2, 0x90, 0xf0, 0x8d, 0xf2, 0x34, 0xee, + 0x92, 0xeb, 0x5a, 0xea, 0x9b, 0xeb, 0xc5, 0xec, 0x8d, 0xeb, 0xb0, 0xef, 0xb4, 0xf2, 0xca, 0xf2, + 0x61, 0xf6, 0xce, 0xf8, 0xa0, 0xfd, 0x93, 0x00, 0x10, 0x05, 0x75, 0x09, 0xaf, 0x0d, 0x49, 0x17, + 0xdb, 0x1e, 0x5f, 0x22, 0x05, 0x27, 0xf7, 0x28, 0x19, 0x29, 0x64, 0x23, 0xd9, 0x20, 0x5d, 0x1d, + 0xe0, 0x17, 0xaa, 0x13, 0xbf, 0x0e, 0xa6, 0x0e, 0xb2, 0x0c, 0x6f, 0x08, 0xd5, 0x08, 0xab, 0x03, + 0x18, 0xff, 0xf8, 0xf9, 0xbb, 0xf5, 0x6a, 0xf4, 0xd1, 0xef, 0xc4, 0xef, 0x79, 0xf2, 0xc6, 0xf1, + 0xfa, 0xf3, 0xcd, 0xf4, 0xca, 0xf6, 0x85, 0xf8, 0x0c, 0xfb, 0x81, 0xfe, 0x75, 0x00, 0x79, 0x07, + 0x79, 0x10, 0xa6, 0x14, 0x8e, 0x18, 0xeb, 0x18, 0xdd, 0x19, 0x4b, 0x15, 0xdb, 0x0f, 0x4d, 0x0d, + 0x3c, 0x08, 0xf3, 0x04, 0x40, 0x00, 0xf7, 0xfd, 0xf3, 0xfd, 0xc5, 0xf9, 0x01, 0xfa, 0x99, 0xf7, + 0x1b, 0xf3, 0x52, 0xf0, 0xa7, 0xed, 0xc6, 0xed, 0x93, 0xea, 0x94, 0xea, 0x1f, 0xef, 0xde, 0xee, + 0x34, 0xf0, 0xac, 0xf0, 0x90, 0xf1, 0xa3, 0xf3, 0x59, 0xf5, 0x8f, 0xf8, 0xe0, 0xf9, 0x78, 0xfe, + 0x78, 0x07, 0x05, 0x0d, 0xbe, 0x12, 0x44, 0x16, 0xd6, 0x18, 0x15, 0x16, 0xe8, 0x0f, 0x05, 0x0e, + 0x65, 0x09, 0xce, 0x04, 0x9b, 0xfd, 0x77, 0xf8, 0x8d, 0xf8, 0x4c, 0xf4, 0xeb, 0xf2, 0x68, 0xf2, + 0x78, 0xee, 0x9e, 0xeb, 0x28, 0xe8, 0x72, 0xe8, 0xb6, 0xe7, 0x55, 0xe6, 0xcd, 0xe9, 0x8f, 0xea, + 0x52, 0xec, 0x0a, 0xef, 0x1e, 0xf1, 0xc8, 0xf3, 0x50, 0xf5, 0x56, 0xfa, 0xec, 0xfc, 0x4f, 0x01, + 0x44, 0x0c, 0x72, 0x14, 0x47, 0x1b, 0x39, 0x20, 0xc9, 0x23, 0x3b, 0x25, 0xca, 0x20, 0x98, 0x1f, + 0xd3, 0x1b, 0x1f, 0x17, 0x4b, 0x11, 0xbe, 0x0b, 0x70, 0x0c, 0xcf, 0x09, 0x20, 0x07, 0x32, 0x06, + 0x70, 0x00, 0x69, 0xfc, 0x9d, 0xf7, 0xf7, 0xf5, 0x8f, 0xf4, 0x34, 0xf0, 0x74, 0xf1, 0x16, 0xf2, + 0x9c, 0xf1, 0xb1, 0xf2, 0x2c, 0xf2, 0xd7, 0xf4, 0x07, 0xf6, 0x62, 0xf9, 0x3f, 0xfc, 0x24, 0xff, + 0x54, 0x07, 0x14, 0x0e, 0x5c, 0x13, 0x3c, 0x17, 0x05, 0x1a, 0x11, 0x1d, 0xbb, 0x18, 0x9a, 0x16, + 0xfd, 0x12, 0xb7, 0x0d, 0xbe, 0x08, 0xac, 0x02, 0x12, 0x03, 0x25, 0x02, 0xaf, 0xfe, 0x3e, 0xfe, + 0x3a, 0xf9, 0xd0, 0xf4, 0xcb, 0xee, 0x9f, 0xea, 0xcc, 0xe7, 0x2f, 0xe2, 0xc9, 0xe0, 0xaa, 0xe1, + 0xe1, 0xe1, 0x72, 0xe4, 0x5b, 0xe4, 0xed, 0xe6, 0xe1, 0xe7, 0x04, 0xeb, 0x9f, 0xf0, 0xc3, 0xf3, + 0x2d, 0xfb, 0x9f, 0x03, 0x3a, 0x09, 0x04, 0x0f, 0xc6, 0x12, 0xc8, 0x18, 0xa7, 0x17, 0x97, 0x16, + 0x09, 0x16, 0xf9, 0x13, 0x13, 0x13, 0x02, 0x0f, 0xf8, 0x0d, 0x0a, 0x0f, 0xd4, 0x0b, 0x06, 0x0d, + 0xa7, 0x0a, 0x4c, 0x08, 0x9b, 0x04, 0x6d, 0xff, 0x7a, 0xfd, 0x60, 0xf8, 0xda, 0xf4, 0x3c, 0xf5, + 0x53, 0xf3, 0x2c, 0xf3, 0xab, 0xf0, 0x9a, 0xf0, 0x12, 0xf0, 0x52, 0xf0, 0x64, 0xf2, 0x3e, 0xf1, + 0x59, 0xf4, 0x34, 0xfb, 0x54, 0x00, 0xe9, 0x06, 0x2e, 0x0a, 0x00, 0x0f, 0x7a, 0x0e, 0x96, 0x0b, + 0x93, 0x0a, 0x99, 0x07, 0xa9, 0x04, 0x15, 0x00, 0x07, 0xfe, 0x42, 0x00, 0xdc, 0xfd, 0x79, 0xfe, + 0x3e, 0xfd, 0x6a, 0xfb, 0x7e, 0xf8, 0xed, 0xf4, 0x39, 0xf6, 0x31, 0xf5, 0xf2, 0xf2, 0x08, 0xf5, + 0x68, 0xf5, 0x9d, 0xf7, 0x48, 0xf7, 0xfc, 0xf7, 0x0f, 0xf9, 0xe7, 0xf9, 0xed, 0xfc, 0xec, 0xfc, + 0x12, 0xff, 0x14, 0x07, 0x52, 0x0d, 0xb8, 0x14, 0x19, 0x18, 0x03, 0x1d, 0xba, 0x1e, 0x96, 0x1b, + 0x66, 0x19, 0x43, 0x15, 0xe0, 0x11, 0x18, 0x0c, 0xed, 0x04, 0x4c, 0x05, 0xe5, 0x02, 0x39, 0x02, + 0xa1, 0x01, 0x29, 0xfe, 0x15, 0xfb, 0xd7, 0xf6, 0xf4, 0xf5, 0x7c, 0xf4, 0xa9, 0xf0, 0x6e, 0xf1, + 0xe8, 0xef, 0x26, 0xf1, 0x87, 0xf1, 0xe6, 0xf1, 0x41, 0xf3, 0x9a, 0xf1, 0x41, 0xf3, 0xb4, 0xf4, + 0xb1, 0xf5, 0xb1, 0xfc, 0x85, 0x01, 0x66, 0x07, 0xb3, 0x0a, 0x5a, 0x0f, 0x99, 0x13, 0xcf, 0x11, + 0xd5, 0x0f, 0x4b, 0x0c, 0x6d, 0x08, 0xe0, 0x04, 0xa2, 0xff, 0xb4, 0x00, 0xb4, 0xff, 0x1c, 0xfe, + 0x51, 0xfe, 0x84, 0xfc, 0x21, 0xfc, 0xda, 0xf8, 0x30, 0xf6, 0xfe, 0xf5, 0xc9, 0xf2, 0x33, 0xf3, + 0x59, 0xf4, 0x4d, 0xf7, 0xf0, 0xf9, 0x62, 0xfa, 0xec, 0xfc, 0x65, 0xfd, 0x18, 0x00, 0x58, 0x03, + 0x4e, 0x03, 0xbd, 0x07, 0x9b, 0x0c, 0xd9, 0x12, 0x6a, 0x16, 0xff, 0x17, 0x9f, 0x1b, 0xfc, 0x18, + 0x1b, 0x15, 0xaa, 0x11, 0xc0, 0x0d, 0x5f, 0x0b, 0x09, 0x04, 0xce, 0x00, 0x35, 0xff, 0x5f, 0xfb, + 0x91, 0xfa, 0x4e, 0xf8, 0x3f, 0xf7, 0x7d, 0xf3, 0xf1, 0xee, 0x87, 0xed, 0xbf, 0xe8, 0xaf, 0xe7, + 0x3a, 0xe8, 0xdc, 0xe9, 0x5f, 0xed, 0x64, 0xed, 0x0e, 0xef, 0xec, 0xee, 0x4f, 0xf0, 0x6e, 0xf4, + 0xbe, 0xf4, 0x0a, 0xf8, 0x57, 0xfd, 0x45, 0x03, 0xa8, 0x09, 0x2c, 0x0d, 0x27, 0x12, 0x6e, 0x11, + 0x80, 0x0d, 0x8e, 0x0a, 0xd3, 0x06, 0x87, 0x05, 0x2b, 0x00, 0xc3, 0xfb, 0x15, 0xfb, 0x0c, 0xf8, + 0x37, 0xf8, 0x83, 0xf7, 0x00, 0xf7, 0x42, 0xf5, 0xb1, 0xf1, 0x40, 0xf3, 0x13, 0xf3, 0x5b, 0xf3, + 0xac, 0xf5, 0xd2, 0xf7, 0x63, 0xfb, 0xfa, 0xfb, 0xe0, 0xff, 0xb3, 0x02, 0x50, 0x04, 0x12, 0x09, + 0x4f, 0x09, 0xf8, 0x0b, 0x8c, 0x12, 0xe6, 0x18, 0x4e, 0x20, 0xd1, 0x22, 0x4d, 0x27, 0x39, 0x29, + 0x78, 0x26, 0x16, 0x23, 0x63, 0x1d, 0xe6, 0x17, 0xd3, 0x0f, 0x5c, 0x07, 0x3e, 0x04, 0x43, 0xff, + 0x9f, 0xfc, 0x1d, 0xf9, 0x78, 0xf6, 0xb0, 0xf4, 0xa2, 0xef, 0xf3, 0xed, 0xf2, 0xeb, 0xb4, 0xe9, + 0x16, 0xeb, 0x88, 0xeb, 0xe7, 0xee, 0xd8, 0xee, 0x1e, 0xef, 0x1f, 0xf0, 0x9d, 0xef, 0xfc, 0xf3, + 0x19, 0xf7, 0xc5, 0xf9, 0xd0, 0x00, 0x48, 0x07, 0xe5, 0x10, 0xce, 0x15, 0x53, 0x1b, 0xb6, 0x20, + 0xd5, 0x20, 0x8b, 0x1f, 0x80, 0x1b, 0x4d, 0x18, 0xe7, 0x13, 0x81, 0x0b, 0xd0, 0x08, 0xf3, 0x04, + 0x95, 0x01, 0x87, 0xfe, 0x6b, 0xfa, 0x6d, 0xf6, 0x1e, 0xf0, 0x74, 0xec, 0xc8, 0xe9, 0xbc, 0xe4, + 0xc7, 0xe2, 0xfa, 0xdf, 0x1f, 0xe2, 0xb1, 0xe2, 0xd0, 0xe1, 0x1d, 0xe3, 0x63, 0xe2, 0xac, 0xe4, + 0xaf, 0xe8, 0xe2, 0xe9, 0x54, 0xef, 0x57, 0xf4, 0x25, 0xfc, 0x2c, 0x02, 0xbc, 0x07, 0x97, 0x0f, + 0x06, 0x12, 0xf9, 0x10, 0x6a, 0x0e, 0x88, 0x0c, 0x6d, 0x0c, 0x34, 0x07, 0x8a, 0x05, 0xdb, 0x03, + 0x65, 0x01, 0x33, 0x01, 0xdd, 0x00, 0xa7, 0x01, 0xb0, 0xfe, 0xd1, 0xf9, 0xc4, 0xf7, 0x62, 0xf3, + 0x70, 0xf3, 0x87, 0xf2, 0xda, 0xf3, 0x14, 0xf5, 0x64, 0xf4, 0xd2, 0xf6, 0xa8, 0xf7, 0xf2, 0xf9, + 0xab, 0xfe, 0xa5, 0xfe, 0x9c, 0x02, 0xab, 0x06, 0xcd, 0x0d, 0x49, 0x15, 0x5e, 0x19, 0x5e, 0x1f, + 0x2f, 0x22, 0xd9, 0x21, 0x5e, 0x21, 0xff, 0x1e, 0x40, 0x1e, 0x6c, 0x18, 0x62, 0x14, 0x96, 0x12, + 0x30, 0x10, 0x14, 0x0f, 0x08, 0x0c, 0x57, 0x0a, 0x79, 0x07, 0x90, 0x01, 0xc9, 0xff, 0x39, 0xfb, + 0x73, 0xf8, 0x3e, 0xf5, 0x82, 0xf2, 0x3d, 0xf1, 0x4e, 0xee, 0x26, 0xee, 0xd4, 0xed, 0x27, 0xec, + 0xb6, 0xee, 0x28, 0xee, 0x68, 0xee, 0x59, 0xf0, 0x5b, 0xf5, 0x56, 0xfc, 0xcb, 0x00, 0xd8, 0x06, + 0xac, 0x0a, 0xdf, 0x09, 0x1a, 0x09, 0x9c, 0x05, 0x99, 0x04, 0xb4, 0xff, 0xbe, 0xf9, 0x09, 0xf8, + 0x97, 0xf6, 0xd9, 0xf6, 0x55, 0xf6, 0xf2, 0xf5, 0x94, 0xf5, 0x27, 0xf2, 0x97, 0xf2, 0xc5, 0xf1, + 0xbb, 0xf1, 0xf9, 0xf1, 0x92, 0xf0, 0xdb, 0xf2, 0xf3, 0xf2, 0xcc, 0xf3, 0xf5, 0xf4, 0x62, 0xf3, + 0x69, 0xf7, 0x91, 0xf9, 0xe6, 0xfa, 0xac, 0xff, 0x2e, 0x05, 0x01, 0x0d, 0x2e, 0x11, 0x2a, 0x16, + 0xcf, 0x1c, 0x5b, 0x1f, 0xfe, 0x1f, 0x0e, 0x1c, 0x95, 0x19, 0xe0, 0x15, 0x58, 0x0f, 0x71, 0x0c, + 0xaa, 0x08, 0x24, 0x07, 0x14, 0x06, 0x58, 0x04, 0x9b, 0x04, 0x48, 0x00, 0x80, 0xfd, 0x79, 0xfa, + 0x8d, 0xf6, 0x5c, 0xf5, 0x0a, 0xf3, 0xa2, 0xf4, 0x8a, 0xf4, 0x17, 0xf3, 0xc8, 0xf3, 0x76, 0xf1, + 0x4c, 0xf3, 0x52, 0xf4, 0xc5, 0xf2, 0x71, 0xf4, 0xdb, 0xf6, 0x96, 0xfd, 0x00, 0x03, 0x89, 0x06, + 0x98, 0x0b, 0xf9, 0x0c, 0xd8, 0x0c, 0xe4, 0x09, 0x7f, 0x07, 0x20, 0x06, 0xb6, 0x00, 0x16, 0xfe, + 0x3f, 0xfc, 0x9b, 0xfb, 0x69, 0xfb, 0xf6, 0xfa, 0x20, 0xfd, 0x46, 0xfb, 0xbb, 0xf9, 0xf5, 0xf8, + 0x93, 0xf6, 0xd4, 0xf7, 0x09, 0xf7, 0x57, 0xf9, 0xfa, 0xfb, 0x54, 0xfc, 0xef, 0xfe, 0xb9, 0xfd, + 0x29, 0xff, 0x66, 0x02, 0x4e, 0x02, 0x40, 0x03, 0xdc, 0x03, 0x16, 0x09, 0xdc, 0x0d, 0x63, 0x10, + 0x83, 0x14, 0x93, 0x15, 0xbb, 0x14, 0x0a, 0x11, 0xd9, 0x0c, 0xc6, 0x0b, 0xd5, 0x05, 0xae, 0x00, + 0xec, 0xfb, 0x1d, 0xf9, 0xe6, 0xf8, 0xc2, 0xf7, 0x25, 0xf8, 0xf8, 0xf5, 0x03, 0xf2, 0xe0, 0xf0, + 0x3e, 0xee, 0xb7, 0xef, 0x7c, 0xef, 0x76, 0xf0, 0x2a, 0xf3, 0xab, 0xf3, 0x44, 0xf8, 0xcd, 0xfa, + 0x88, 0xfc, 0xfd, 0x00, 0x26, 0x01, 0x77, 0x03, 0x8d, 0x06, 0x4a, 0x0c, 0x09, 0x13, 0x2b, 0x16, + 0xad, 0x1a, 0x03, 0x1e, 0x76, 0x1e, 0xb1, 0x1c, 0x8b, 0x17, 0xdd, 0x14, 0xa0, 0x0e, 0x67, 0x08, + 0x98, 0x03, 0x27, 0x00, 0x20, 0xff, 0x6a, 0xfc, 0x18, 0xfb, 0x26, 0xfa, 0x08, 0xf6, 0xbb, 0xf4, + 0x94, 0xf1, 0x4d, 0xf1, 0xe7, 0xf0, 0x11, 0xf0, 0xcf, 0xf2, 0x28, 0xf3, 0xc8, 0xf4, 0x1b, 0xf6, + 0x11, 0xf5, 0x32, 0xf9, 0xf8, 0xfa, 0x6a, 0xfd, 0x9a, 0xff, 0xdb, 0x03, 0xe8, 0x0a, 0x9b, 0x0e, + 0xb0, 0x12, 0x33, 0x17, 0xd8, 0x18, 0x4b, 0x19, 0xc4, 0x14, 0x50, 0x12, 0xb6, 0x0c, 0xf5, 0x04, + 0x63, 0xff, 0x6e, 0xfa, 0xe7, 0xf7, 0x67, 0xf4, 0xeb, 0xf1, 0x79, 0xf0, 0x84, 0xeb, 0xfe, 0xe9, + 0xdc, 0xe6, 0x33, 0xe4, 0x3d, 0xe3, 0x28, 0xe1, 0xa4, 0xe3, 0x15, 0xe5, 0x22, 0xe6, 0x81, 0xe8, + 0xd6, 0xe6, 0x51, 0xea, 0xa3, 0xed, 0xea, 0xf0, 0x75, 0xf5, 0xfe, 0xf9, 0x69, 0x01, 0x07, 0x09, + 0x59, 0x0f, 0xbd, 0x16, 0x10, 0x1b, 0xc8, 0x1e, 0xe8, 0x1c, 0x3d, 0x1c, 0xba, 0x1b, 0xb3, 0x17, + 0x83, 0x14, 0x40, 0x10, 0xf2, 0x0c, 0x54, 0x0a, 0x7b, 0x07, 0xac, 0x08, 0x30, 0x05, 0x44, 0x02, + 0x99, 0xfe, 0x75, 0xfa, 0x4d, 0xf9, 0xa5, 0xf6, 0x95, 0xf6, 0x6d, 0xf6, 0x2a, 0xf5, 0xd5, 0xf7, + 0x51, 0xf6, 0x13, 0xf8, 0x3f, 0xfa, 0x43, 0xfa, 0xfb, 0xfa, 0x8c, 0xfb, 0xdf, 0x00, 0x74, 0x07, + 0xaa, 0x0b, 0x70, 0x11, 0x4f, 0x15, 0xb0, 0x18, 0xa1, 0x17, 0x96, 0x15, 0x1e, 0x15, 0x54, 0x11, + 0x47, 0x0d, 0x91, 0x08, 0xeb, 0x05, 0xb3, 0x04, 0xec, 0x00, 0x27, 0x00, 0xb3, 0xfc, 0xec, 0xf8, + 0xe5, 0xf5, 0xb3, 0xf1, 0x29, 0xf1, 0x1c, 0xef, 0x38, 0xee, 0xe6, 0xef, 0x30, 0xee, 0x2c, 0xf1, + 0x81, 0xf2, 0xa2, 0xf3, 0xc6, 0xf6, 0x65, 0xf7, 0x51, 0xf9, 0x45, 0xfb, 0x19, 0x00, 0x10, 0x07, + 0x39, 0x0b, 0xcb, 0x10, 0xc8, 0x14, 0x16, 0x18, 0x5b, 0x18, 0x31, 0x16, 0xae, 0x15, 0x45, 0x11, + 0x25, 0x0c, 0x50, 0x07, 0x3e, 0x03, 0xfe, 0x01, 0x33, 0xfe, 0x0a, 0xfd, 0x69, 0xfa, 0x38, 0xf6, + 0xd6, 0xf3, 0x64, 0xef, 0xa4, 0xed, 0x8a, 0xea, 0xdf, 0xe5, 0xaf, 0xe5, 0x60, 0xe3, 0xea, 0xe4, + 0x9f, 0xe5, 0x4a, 0xe4, 0x28, 0xe6, 0xef, 0xe6, 0xfe, 0xe8, 0x0a, 0xeb, 0xc3, 0xee, 0xd9, 0xf5, + 0x72, 0xfb, 0xac, 0x01, 0x5c, 0x08, 0x42, 0x0f, 0x62, 0x13, 0x3d, 0x12, 0xa6, 0x12, 0xae, 0x10, + 0x02, 0x0e, 0x65, 0x0b, 0x37, 0x08, 0x35, 0x08, 0x45, 0x06, 0x81, 0x06, 0xdd, 0x06, 0x9e, 0x04, + 0xcf, 0x04, 0x49, 0x02, 0x7a, 0x00, 0xb9, 0xfe, 0x2c, 0xfc, 0x86, 0xfd, 0x60, 0xfc, 0xdd, 0xfc, + 0xf5, 0xfd, 0xea, 0xfb, 0x4e, 0xfd, 0x9d, 0xfd, 0x25, 0xff, 0x80, 0x00, 0xd4, 0x01, 0x2e, 0x07, + 0x3a, 0x0c, 0xb5, 0x11, 0xf8, 0x16, 0xa9, 0x1a, 0xf1, 0x1d, 0xd6, 0x1b, 0x84, 0x1a, 0x5e, 0x18, + 0x21, 0x14, 0x53, 0x10, 0xcf, 0x0a, 0x48, 0x08, 0x29, 0x05, 0xbf, 0x02, 0xa1, 0x03, 0xc9, 0x00, + 0x7c, 0xff, 0xcf, 0xfb, 0x43, 0xf8, 0xfb, 0xf6, 0x67, 0xf3, 0x9e, 0xf3, 0xf7, 0xf2, 0x9d, 0xf1, + 0x46, 0xf3, 0xe4, 0xf0, 0x12, 0xf1, 0x43, 0xf1, 0x85, 0xf0, 0x01, 0xef, 0x6c, 0xed, 0x62, 0xf0, + 0x68, 0xf5, 0x9f, 0xf9, 0x58, 0xfe, 0x2d, 0x02, 0x7b, 0x06, 0xe3, 0x04, 0x9c, 0x03, 0x59, 0x03, + 0x81, 0x00, 0x82, 0xfd, 0x41, 0xf9, 0x9b, 0xf7, 0x56, 0xf7, 0x25, 0xf6, 0x09, 0xf8, 0xea, 0xf6, + 0xb6, 0xf6, 0x2a, 0xf6, 0xfc, 0xf4, 0xc3, 0xf6, 0x8c, 0xf6, 0x8a, 0xf7, 0x7b, 0xf9, 0xc7, 0xf8, + 0xbe, 0xfc, 0x77, 0xfe, 0xa5, 0x00, 0x27, 0x03, 0xd3, 0x03, 0x92, 0x04, 0x5c, 0x04, 0x79, 0x06, + 0xfb, 0x0a, 0x4f, 0x0e, 0xcc, 0x12, 0x87, 0x15, 0xc9, 0x19, 0xc5, 0x19, 0x32, 0x17, 0xd5, 0x14, + 0x14, 0x0f, 0x0d, 0x0a, 0x8c, 0x04, 0xd5, 0xff, 0xa7, 0xfe, 0x93, 0xfb, 0x39, 0xfc, 0x2b, 0xfa, + 0xb0, 0xf7, 0xd7, 0xf6, 0xc2, 0xf3, 0x4e, 0xf3, 0xe9, 0xf1, 0x73, 0xf0, 0x02, 0xf3, 0xdd, 0xf2, + 0xd3, 0xf5, 0x2d, 0xf7, 0x85, 0xf7, 0x93, 0xf9, 0x13, 0xfb, 0x89, 0xfd, 0x93, 0xfe, 0xf2, 0x00, + 0xaf, 0x06, 0x47, 0x0a, 0x2d, 0x0f, 0x6a, 0x13, 0x70, 0x19, 0xc1, 0x1b, 0xd4, 0x18, 0x5b, 0x16, + 0x47, 0x12, 0xeb, 0x0d, 0xfa, 0x08, 0x36, 0x03, 0x64, 0x01, 0x1d, 0xfd, 0xd1, 0xfb, 0x66, 0xfa, + 0xf2, 0xf7, 0x99, 0xf7, 0x3d, 0xf4, 0xa7, 0xf1, 0x34, 0xf0, 0x79, 0xed, 0x9a, 0xee, 0x9d, 0xec, + 0xa6, 0xed, 0xca, 0xef, 0x5e, 0xef, 0x3a, 0xf1, 0x5d, 0xf3, 0x68, 0xf6, 0x76, 0xf8, 0x6d, 0xf9, + 0x06, 0xfe, 0x4c, 0x02, 0x40, 0x08, 0x17, 0x0d, 0x35, 0x12, 0x77, 0x16, 0x3f, 0x15, 0xd1, 0x13, + 0x0e, 0x11, 0x2b, 0x0c, 0x7f, 0x08, 0x8c, 0x02, 0x3b, 0x00, 0x4b, 0xfc, 0x93, 0xfa, 0xb6, 0xfb, + 0x28, 0xfa, 0xc1, 0xfa, 0xe3, 0xf8, 0x9f, 0xf6, 0xa3, 0xf6, 0x82, 0xf4, 0xdd, 0xf6, 0xdd, 0xf6, + 0x82, 0xf7, 0x2e, 0xfa, 0xe3, 0xf9, 0xd2, 0xfb, 0x26, 0xfe, 0xc9, 0x00, 0xb9, 0x02, 0xc6, 0x02, + 0x2f, 0x07, 0xb7, 0x0b, 0xdd, 0x11, 0xce, 0x17, 0xf4, 0x1c, 0x83, 0x22, 0x84, 0x22, 0x02, 0x21, + 0x93, 0x1f, 0xaa, 0x1b, 0x28, 0x17, 0x96, 0x0f, 0x51, 0x0b, 0xf1, 0x06, 0xdf, 0x01, 0xdb, 0xff, + 0x6f, 0xfb, 0x22, 0xf8, 0x8e, 0xf4, 0x92, 0xef, 0x1c, 0xee, 0xfb, 0xe9, 0x8c, 0xe8, 0xae, 0xe6, + 0x5e, 0xe4, 0xef, 0xe5, 0x75, 0xe6, 0x7f, 0xe7, 0x4d, 0xe9, 0xa7, 0xea, 0xb9, 0xec, 0xd3, 0xec, + 0x6f, 0xef, 0x0c, 0xf4, 0x5e, 0xf9, 0x04, 0xff, 0x1f, 0x04, 0x02, 0x0c, 0xea, 0x0e, 0xd3, 0x0e, + 0xee, 0x0e, 0x50, 0x0b, 0x85, 0x08, 0xfb, 0x03, 0x17, 0x00, 0x3b, 0xfd, 0xbe, 0xf9, 0xb9, 0xf9, + 0x9e, 0xf6, 0x13, 0xf4, 0xe7, 0xf2, 0x21, 0xef, 0x17, 0xee, 0xaf, 0xeb, 0xe8, 0xea, 0xe0, 0xeb, + 0x06, 0xeb, 0xf8, 0xed, 0x48, 0xef, 0xe4, 0xf0, 0xb0, 0xf3, 0x32, 0xf6, 0x78, 0xfa, 0xd9, 0xfc, + 0x76, 0x00, 0x34, 0x06, 0xdc, 0x0b, 0x89, 0x12, 0x75, 0x17, 0x5e, 0x1f, 0x20, 0x25, 0x53, 0x27, + 0xba, 0x28, 0x4f, 0x26, 0xb3, 0x23, 0x5c, 0x1f, 0x67, 0x1a, 0x46, 0x18, 0xb8, 0x13, 0xf4, 0x11, + 0xc6, 0x0f, 0x5c, 0x0c, 0xca, 0x0a, 0x0a, 0x06, 0xf6, 0x01, 0xb7, 0xfc, 0xe3, 0xf6, 0x8f, 0xf4, + 0xa5, 0xf0, 0x2b, 0xf0, 0xc5, 0xef, 0xcd, 0xed, 0xbb, 0xec, 0xd6, 0xec, 0x07, 0xef, 0x41, 0xef, + 0xbe, 0xee, 0x0a, 0xf2, 0x16, 0xf6, 0x54, 0xfc, 0x36, 0x01, 0xb7, 0x07, 0x07, 0x0e, 0x00, 0x0f, + 0x93, 0x0f, 0xd1, 0x0e, 0x5a, 0x0d, 0xb9, 0x0b, 0x6d, 0x07, 0xdb, 0x05, 0x85, 0x02, 0xc6, 0x01, + 0x1b, 0x03, 0x61, 0x02, 0xb5, 0x03, 0x27, 0x02, 0x9b, 0xff, 0xca, 0xfd, 0x04, 0xfa, 0xe6, 0xf9, + 0x9b, 0xf7, 0xf3, 0xf5, 0x26, 0xf6, 0xf6, 0xf4, 0x1f, 0xf5, 0x1b, 0xf6, 0xc3, 0xf6, 0x31, 0xf7, + 0x5f, 0xf5, 0xa7, 0xf6, 0x3e, 0xf8, 0xeb, 0xfb, 0xd6, 0xfe, 0xa8, 0x03, 0xb6, 0x09, 0x69, 0x0c, + 0xd3, 0x0c, 0xbc, 0x0c, 0x7e, 0x09, 0x31, 0x06, 0xe3, 0xff, 0x42, 0xfc, 0x34, 0xf8, 0x9f, 0xf5, + 0x9b, 0xf6, 0xca, 0xf6, 0xb8, 0xf6, 0x0d, 0xf7, 0x7a, 0xf4, 0x6a, 0xf3, 0x3f, 0xf0, 0xc5, 0xf0, + 0xd7, 0xef, 0x30, 0xef, 0x17, 0xf2, 0x93, 0xf3, 0x17, 0xf6, 0xe4, 0xf8, 0xb7, 0xf9, 0x97, 0xfa, + 0x29, 0xf9, 0x3c, 0xfa, 0xdd, 0xfc, 0xa7, 0x01, 0xdc, 0x06, 0x94, 0x0b, 0xd0, 0x11, 0x92, 0x15, + 0x69, 0x16, 0xd3, 0x16, 0x15, 0x15, 0xe5, 0x12, 0xa7, 0x0d, 0xc0, 0x0a, 0xe1, 0x07, 0x15, 0x05, + 0xed, 0x05, 0xcd, 0x04, 0x1d, 0x04, 0xa3, 0x04, 0x20, 0x03, 0x38, 0x04, 0x83, 0x01, 0x32, 0x01, + 0x33, 0x01, 0x31, 0x00, 0x7d, 0x02, 0x1f, 0x04, 0x54, 0x04, 0xe7, 0x04, 0x01, 0x04, 0x85, 0x05, + 0x07, 0x04, 0xcc, 0x02, 0x31, 0x02, 0x4d, 0x03, 0x75, 0x05, 0x54, 0x07, 0x16, 0x0c, 0xb1, 0x0f, + 0x8b, 0x0f, 0x55, 0x0e, 0x7c, 0x0a, 0x59, 0x07, 0xf4, 0x00, 0x17, 0xfc, 0x64, 0xf8, 0xea, 0xf2, + 0xdd, 0xf1, 0x94, 0xf0, 0xb0, 0xef, 0xe5, 0xef, 0x9c, 0xec, 0x14, 0xec, 0x38, 0xe9, 0x4f, 0xe7, + 0x9a, 0xe8, 0x24, 0xe8, 0x9e, 0xea, 0xb2, 0xee, 0xf2, 0xf0, 0xb6, 0xf3, 0x2e, 0xf6, 0xe1, 0xf9, + 0x16, 0xfb, 0xcc, 0xfb, 0x68, 0xfd, 0x88, 0x00, 0x5c, 0x05, 0xd3, 0x08, 0x46, 0x0e, 0xb1, 0x13, + 0x82, 0x14, 0xd2, 0x15, 0xa4, 0x14, 0x32, 0x13, 0x83, 0x0f, 0x32, 0x0b, 0x0a, 0x09, 0x76, 0x03, + 0xe3, 0x00, 0x78, 0x00, 0x66, 0xff, 0x42, 0x01, 0xac, 0xff, 0xe5, 0xfe, 0xaf, 0xfc, 0x89, 0xf9, + 0x99, 0xfa, 0xe9, 0xf9, 0xaf, 0xf9, 0xae, 0xfa, 0xad, 0xfb, 0xc4, 0xfd, 0x1e, 0xff, 0x3d, 0x02, + 0xd9, 0x02, 0x82, 0x01, 0xec, 0x00, 0x99, 0x01, 0x98, 0x06, 0x1f, 0x0a, 0x46, 0x0e, 0x47, 0x13, + 0xe5, 0x13, 0x0f, 0x15, 0x70, 0x13, 0xf7, 0x10, 0xfb, 0x0c, 0x2d, 0x05, 0x86, 0x01, 0xc0, 0xfb, + 0x60, 0xf7, 0x9f, 0xf6, 0x12, 0xf4, 0x36, 0xf3, 0x05, 0xf0, 0xad, 0xee, 0x0e, 0xef, 0x9b, 0xec, + 0x26, 0xee, 0xb6, 0xed, 0x90, 0xed, 0x72, 0xf0, 0xe8, 0xf2, 0x09, 0xf6, 0xc1, 0xf7, 0x50, 0xfa, + 0x79, 0xfc, 0xf6, 0xfb, 0x14, 0xfd, 0xaa, 0xfe, 0x0d, 0x04, 0x45, 0x08, 0x15, 0x0c, 0xe0, 0x13, + 0x0c, 0x18, 0xa3, 0x1a, 0xe5, 0x1a, 0x94, 0x18, 0x38, 0x16, 0xc0, 0x0e, 0x22, 0x0a, 0x73, 0x04, + 0x17, 0xfe, 0x8d, 0xfb, 0xb3, 0xf7, 0x3f, 0xf5, 0xc2, 0xf2, 0x77, 0xef, 0xf0, 0xee, 0xb7, 0xeb, + 0xf2, 0xea, 0x78, 0xea, 0xea, 0xe9, 0xcf, 0xeb, 0xf8, 0xed, 0xad, 0xf0, 0xfa, 0xf2, 0xf2, 0xf4, + 0x0b, 0xf7, 0x64, 0xf7, 0xc4, 0xf8, 0xea, 0xf8, 0x12, 0xfb, 0x2b, 0xfe, 0xa3, 0x00, 0x45, 0x06, + 0x35, 0x0b, 0xaa, 0x0f, 0xef, 0x13, 0xa3, 0x14, 0x77, 0x16, 0x88, 0x13, 0x89, 0x12, 0xdf, 0x11, + 0x7c, 0x0d, 0x6b, 0x0c, 0x35, 0x0a, 0x51, 0x08, 0x3a, 0x07, 0xad, 0x03, 0xc7, 0x03, 0x87, 0xff, + 0xfd, 0xfc, 0xa1, 0xfc, 0xdf, 0xfa, 0xe4, 0xfb, 0x6a, 0xfd, 0x52, 0xfe, 0x2b, 0xfe, 0xee, 0xfd, + 0xca, 0x00, 0x62, 0x00, 0x15, 0x00, 0xf9, 0xfe, 0x60, 0x00, 0x41, 0x05, 0xba, 0x07, 0x23, 0x0d, + 0xfc, 0x12, 0x2b, 0x15, 0x0a, 0x18, 0x44, 0x16, 0x13, 0x16, 0x68, 0x12, 0x1d, 0x0d, 0xbc, 0x09, + 0x87, 0x03, 0xcd, 0x00, 0x44, 0xff, 0xee, 0xfc, 0x8a, 0xfc, 0xed, 0xf7, 0x83, 0xf6, 0x3e, 0xf3, + 0x0e, 0xef, 0x49, 0xee, 0x9e, 0xeb, 0xcc, 0xe9, 0x33, 0xea, 0x5a, 0xeb, 0x9d, 0xec, 0xc3, 0xea, + 0xd5, 0xec, 0xc3, 0xeb, 0x31, 0xea, 0x26, 0xe9, 0x80, 0xe9, 0x86, 0xee, 0x29, 0xf2, 0x4d, 0xf7, + 0xee, 0xfe, 0x3d, 0x02, 0x11, 0x07, 0xa1, 0x07, 0xde, 0x07, 0x57, 0x06, 0xd7, 0x01, 0xf7, 0x00, + 0xf9, 0xfd, 0x5f, 0xfc, 0x81, 0xfd, 0xc8, 0xfc, 0x48, 0xff, 0x84, 0xfe, 0x79, 0xff, 0x86, 0x00, + 0xc5, 0xfe, 0x75, 0x00, 0x5d, 0x00, 0x1a, 0x00, 0x6d, 0x01, 0xb3, 0x02, 0x34, 0x06, 0x66, 0x06, + 0x68, 0x09, 0xaf, 0x0a, 0x3f, 0x09, 0x2b, 0x09, 0x58, 0x08, 0xef, 0x0b, 0x22, 0x0f, 0xcd, 0x10, + 0x94, 0x17, 0x1b, 0x1b, 0x0f, 0x1f, 0x1f, 0x20, 0x9c, 0x1e, 0x43, 0x1c, 0xde, 0x13, 0x7d, 0x0e, + 0x20, 0x09, 0xf0, 0x03, 0xea, 0x02, 0xf6, 0xfe, 0xa1, 0xfe, 0xc2, 0xfc, 0x5a, 0xfb, 0x5d, 0xfb, + 0xc1, 0xf7, 0x1b, 0xf7, 0x87, 0xf6, 0x52, 0xf5, 0xcf, 0xf6, 0x69, 0xf7, 0xe8, 0xf9, 0xeb, 0xf8, + 0xd1, 0xf8, 0x72, 0xf9, 0x58, 0xf7, 0x39, 0xf7, 0xb2, 0xf5, 0x02, 0xf7, 0x0f, 0xfa, 0x3d, 0xfb, + 0x74, 0x01, 0x00, 0x06, 0x33, 0x0a, 0xac, 0x0c, 0x3a, 0x0b, 0x5d, 0x0a, 0x65, 0x05, 0xec, 0x01, + 0x79, 0xff, 0x09, 0xfa, 0x95, 0xf8, 0xf4, 0xf5, 0x22, 0xf6, 0x5f, 0xf5, 0x44, 0xf3, 0x41, 0xf4, + 0x68, 0xf1, 0x2b, 0xf0, 0x5a, 0xf0, 0x40, 0xef, 0x18, 0xf1, 0xec, 0xf1, 0x2e, 0xf5, 0xfd, 0xf5, + 0x8c, 0xf5, 0x21, 0xf8, 0x07, 0xf7, 0xd4, 0xf6, 0x49, 0xf5, 0xb4, 0xf4, 0xe2, 0xf7, 0xe6, 0xf7, + 0xda, 0xfb, 0x64, 0x01, 0x45, 0x05, 0xf4, 0x08, 0xcf, 0x07, 0xd8, 0x07, 0xe6, 0x04, 0xda, 0x00, + 0x37, 0xff, 0x73, 0xfa, 0x4a, 0xf9, 0x14, 0xf8, 0x67, 0xf8, 0xfb, 0xfa, 0x46, 0xfa, 0x14, 0xfc, + 0xd9, 0xfa, 0x4c, 0xf9, 0x2b, 0xfb, 0x5d, 0xfb, 0xab, 0xfd, 0xc2, 0xff, 0x21, 0x03, 0x85, 0x06, + 0x96, 0x06, 0x4a, 0x0a, 0x7e, 0x0b, 0x22, 0x0c, 0xd7, 0x0b, 0x5b, 0x0a, 0xc1, 0x0d, 0x4b, 0x0f, + 0x1e, 0x12, 0x06, 0x17, 0x03, 0x19, 0xca, 0x1b, 0xb1, 0x1a, 0xd8, 0x19, 0x49, 0x17, 0x5f, 0x11, + 0xbb, 0x0d, 0xc1, 0x07, 0x12, 0x03, 0xaf, 0xff, 0x3b, 0xfc, 0xfb, 0xfc, 0x5a, 0xf9, 0xde, 0xf8, + 0x50, 0xf8, 0x64, 0xf5, 0x72, 0xf5, 0x05, 0xf4, 0xb3, 0xf3, 0x3b, 0xf4, 0xb4, 0xf5, 0xce, 0xf9, + 0x9f, 0xf9, 0x29, 0xfc, 0x39, 0xfd, 0x3f, 0xfc, 0x0e, 0xfd, 0x1a, 0xfb, 0xcd, 0xfd, 0xf7, 0x00, + 0xc6, 0x02, 0xaa, 0x08, 0x3f, 0x0c, 0x97, 0x10, 0x5d, 0x11, 0x88, 0x0f, 0x7f, 0x0d, 0xec, 0x06, + 0x16, 0x02, 0x5a, 0xfd, 0x85, 0xf8, 0xb7, 0xf5, 0xe6, 0xf1, 0x33, 0xf2, 0x22, 0xf0, 0x76, 0xef, + 0xf4, 0xef, 0x7f, 0xed, 0xe4, 0xed, 0x03, 0xee, 0x82, 0xee, 0xda, 0xf0, 0x0e, 0xf2, 0x76, 0xf7, + 0xab, 0xf8, 0x91, 0xfa, 0x78, 0xfe, 0x39, 0xff, 0x9e, 0x01, 0xaf, 0x01, 0x58, 0x03, 0x77, 0x08, + 0x8d, 0x0a, 0x7f, 0x10, 0x1d, 0x16, 0x93, 0x1c, 0x36, 0x20, 0x6e, 0x20, 0x9e, 0x1f, 0x99, 0x1a, + 0x3f, 0x16, 0x83, 0x11, 0xb9, 0x0a, 0xb5, 0x06, 0x62, 0x00, 0x5d, 0xfe, 0x47, 0xfb, 0xc0, 0xf7, + 0x3f, 0xf7, 0x8f, 0xf2, 0x90, 0xee, 0x16, 0xec, 0xe8, 0xe8, 0xfe, 0xe9, 0xe1, 0xe9, 0xb1, 0xec, + 0x3a, 0xee, 0x49, 0xee, 0x0f, 0xf1, 0x78, 0xf2, 0x69, 0xf4, 0x87, 0xf4, 0x71, 0xf4, 0x0d, 0xf9, + 0x43, 0xfb, 0xd1, 0x00, 0xdd, 0x06, 0xb9, 0x0d, 0xd6, 0x12, 0x50, 0x13, 0x32, 0x15, 0xe7, 0x13, + 0xcd, 0x10, 0xd9, 0x0e, 0xd5, 0x08, 0x21, 0x06, 0x9b, 0x01, 0x25, 0x00, 0x2d, 0x00, 0xf8, 0xfc, + 0x36, 0xfc, 0x33, 0xf8, 0x3d, 0xf4, 0xb1, 0xf3, 0x97, 0xf1, 0x66, 0xf2, 0xa7, 0xf1, 0x78, 0xf3, + 0x58, 0xf6, 0x25, 0xf6, 0x00, 0xf9, 0xe1, 0xfa, 0xac, 0xfb, 0x25, 0xfc, 0xdd, 0xfa, 0x5a, 0xfe, + 0x41, 0x00, 0xdc, 0x03, 0x9b, 0x08, 0x4c, 0x0d, 0x96, 0x12, 0x20, 0x14, 0xe4, 0x15, 0xac, 0x15, + 0xed, 0x11, 0x1a, 0x10, 0xb6, 0x0a, 0x5a, 0x07, 0x0d, 0x03, 0xc0, 0xff, 0x13, 0x00, 0xeb, 0xfc, + 0x5a, 0xfb, 0xcf, 0xf9, 0xa3, 0xf5, 0x38, 0xf4, 0x24, 0xf1, 0x98, 0xf0, 0x94, 0xef, 0xca, 0xef, + 0x39, 0xf3, 0x95, 0xf3, 0xf0, 0xf5, 0x5f, 0xf7, 0xb7, 0xf7, 0xe5, 0xf8, 0xc9, 0xf6, 0xe8, 0xf9, + 0x6f, 0xfd, 0x54, 0x01, 0x7e, 0x07, 0x7f, 0x0c, 0x1f, 0x13, 0xce, 0x15, 0x8b, 0x17, 0xec, 0x18, + 0xe6, 0x15, 0x9c, 0x14, 0xc2, 0x10, 0x29, 0x0e, 0x76, 0x0c, 0xad, 0x09, 0x38, 0x0a, 0xd4, 0x07, + 0xe2, 0x06, 0x65, 0x07, 0x49, 0x04, 0x69, 0x03, 0xba, 0x00, 0x68, 0xff, 0x2a, 0xfe, 0x38, 0xfc, + 0x31, 0xfe, 0xda, 0xfc, 0x42, 0xfc, 0xbe, 0xfc, 0x28, 0xfb, 0xe1, 0xfb, 0x0b, 0xf9, 0x0f, 0xf8, + 0xe1, 0xf8, 0x1f, 0xf9, 0xfe, 0xfc, 0x72, 0x01, 0xbb, 0x07, 0xdf, 0x0a, 0xcb, 0x0a, 0x2f, 0x0b, + 0x27, 0x07, 0x28, 0x04, 0x4a, 0x00, 0x8c, 0xfb, 0x18, 0xf9, 0xa2, 0xf4, 0xd7, 0xf4, 0x4a, 0xf4, + 0xe2, 0xf2, 0xe1, 0xf3, 0x49, 0xf1, 0x62, 0xf0, 0x6c, 0xef, 0x6a, 0xef, 0xa9, 0xf0, 0x61, 0xef, + 0xb3, 0xf1, 0x27, 0xf2, 0xe8, 0xf1, 0x01, 0xf4, 0x34, 0xf4, 0xbe, 0xf5, 0x3c, 0xf4, 0xce, 0xf2, + 0x5d, 0xf5, 0xd7, 0xf6, 0x48, 0xfb, 0x87, 0xff, 0xd4, 0x04, 0xa7, 0x09, 0xa2, 0x0b, 0x91, 0x0e, + 0x73, 0x0d, 0xd7, 0x0b, 0x1e, 0x0a, 0xdf, 0x05, 0xbc, 0x04, 0x68, 0x01, 0xb3, 0x01, 0xc9, 0x02, + 0xe4, 0x01, 0xd3, 0x03, 0x3d, 0x02, 0x81, 0x01, 0x6c, 0x01, 0x43, 0x00, 0x6f, 0x02, 0xf6, 0x01, + 0x30, 0x04, 0x14, 0x06, 0xc8, 0x05, 0x7c, 0x08, 0xeb, 0x08, 0x5b, 0x0a, 0x28, 0x09, 0x80, 0x04, + 0x94, 0x04, 0x82, 0x03, 0xa6, 0x04, 0xb8, 0x06, 0x97, 0x09, 0x46, 0x0d, 0x02, 0x0e, 0xa5, 0x0f, + 0x88, 0x0e, 0x38, 0x0b, 0x6f, 0x08, 0xc3, 0x02, 0x36, 0x00, 0x55, 0xfc, 0xae, 0xfa, 0x6c, 0xfb, + 0x9f, 0xf8, 0x85, 0xf8, 0x4d, 0xf7, 0xb9, 0xf4, 0x28, 0xf5, 0x87, 0xf3, 0x1f, 0xf5, 0x07, 0xf5, + 0x16, 0xf6, 0x11, 0xfa, 0xc6, 0xfb, 0xef, 0xfe, 0x09, 0x01, 0x0e, 0x02, 0x5c, 0x03, 0x35, 0x01, + 0x67, 0x02, 0x10, 0x03, 0x9a, 0x04, 0x1f, 0x07, 0xce, 0x09, 0x11, 0x0e, 0x5e, 0x0f, 0x09, 0x10, + 0xa0, 0x0f, 0x7a, 0x0b, 0x8d, 0x08, 0x72, 0x02, 0xec, 0xfd, 0x90, 0xf8, 0x9b, 0xf3, 0x85, 0xf2, + 0x8e, 0xef, 0x73, 0xee, 0x19, 0xee, 0x35, 0xeb, 0xda, 0xea, 0x01, 0xe9, 0x5a, 0xea, 0x54, 0xea, + 0x15, 0xea, 0x51, 0xed, 0xc0, 0xee, 0x75, 0xf1, 0x0c, 0xf5, 0x18, 0xf7, 0xb5, 0xfa, 0x83, 0xf9, + 0x0b, 0xfb, 0xe2, 0xfd, 0x91, 0x00, 0xf9, 0x04, 0x72, 0x09, 0xf5, 0x0f, 0xac, 0x14, 0x33, 0x17, + 0x4d, 0x19, 0x38, 0x16, 0x55, 0x14, 0x57, 0x0f, 0xf3, 0x0a, 0xb0, 0x07, 0xdd, 0x02, 0x15, 0x02, + 0x0b, 0x00, 0x4f, 0xfd, 0xd5, 0xfd, 0x5f, 0xfb, 0x04, 0xfb, 0x43, 0xf9, 0xbf, 0xf8, 0x92, 0xf9, + 0x9b, 0xf9, 0x80, 0xfc, 0x9d, 0xfd, 0xa6, 0xfe, 0x91, 0x01, 0xcf, 0x02, 0x5d, 0x07, 0xad, 0x07, + 0xbe, 0x07, 0xea, 0x09, 0x5c, 0x0b, 0xfb, 0x0e, 0x8a, 0x12, 0xc4, 0x17, 0x9c, 0x1c, 0xb3, 0x1d, + 0xc6, 0x1f, 0x7f, 0x1d, 0xe4, 0x1a, 0xcf, 0x15, 0xf4, 0x0e, 0x62, 0x09, 0x16, 0x02, 0xfe, 0xfe, + 0x04, 0xfd, 0x66, 0xf8, 0xb0, 0xf6, 0x9c, 0xf1, 0xfe, 0xed, 0x0e, 0xea, 0x8c, 0xe6, 0x24, 0xe6, + 0x6e, 0xe4, 0x12, 0xe6, 0x4e, 0xe8, 0xea, 0xe8, 0x0e, 0xec, 0xe0, 0xec, 0xc2, 0xef, 0x50, 0xf0, + 0x67, 0xef, 0x20, 0xf2, 0x36, 0xf4, 0x25, 0xf8, 0x8a, 0xfc, 0x39, 0x02, 0x5b, 0x09, 0x05, 0x0d, + 0x93, 0x12, 0xf5, 0x13, 0xa0, 0x13, 0x5b, 0x12, 0xfa, 0x0d, 0xce, 0x0b, 0x7d, 0x07, 0x79, 0x04, + 0xa6, 0x03, 0x3e, 0x00, 0xcc, 0xff, 0x7c, 0xfd, 0x91, 0xfa, 0x6a, 0xf8, 0x46, 0xf5, 0xbb, 0xf5, + 0x8a, 0xf4, 0xe6, 0xf4, 0xed, 0xf7, 0x90, 0xf8, 0xca, 0xfb, 0x25, 0xfd, 0x7e, 0xff, 0xa5, 0x01, + 0xbf, 0xff, 0xa9, 0x00, 0x8f, 0x01, 0x6a, 0x03, 0xc2, 0x06, 0xc6, 0x09, 0x43, 0x0f, 0xd2, 0x12, + 0x52, 0x17, 0x64, 0x19, 0x1d, 0x18, 0xed, 0x15, 0x70, 0x10, 0xcf, 0x0c, 0xc9, 0x07, 0xec, 0x02, + 0xd7, 0x01, 0xc9, 0xfd, 0x9a, 0xfb, 0x90, 0xf9, 0x6a, 0xf6, 0x61, 0xf4, 0x14, 0xf0, 0x67, 0xee, + 0x97, 0xec, 0x56, 0xeb, 0xf1, 0xed, 0x6d, 0xee, 0x03, 0xf0, 0xaa, 0xf0, 0xe0, 0xf0, 0x21, 0xf3, + 0x9b, 0xf1, 0x6c, 0xf2, 0x96, 0xf3, 0x62, 0xf5, 0xcb, 0xf8, 0x0f, 0xfc, 0xb5, 0x03, 0x27, 0x09, + 0x3b, 0x0d, 0xcc, 0x10, 0x58, 0x10, 0xa9, 0x10, 0x78, 0x0d, 0x6e, 0x0b, 0x40, 0x09, 0x48, 0x05, + 0x31, 0x05, 0x82, 0x03, 0xaf, 0x02, 0x1b, 0x03, 0xce, 0x00, 0x04, 0x00, 0x88, 0xfc, 0x70, 0xfb, + 0x18, 0xfb, 0x71, 0xf8, 0x90, 0xf9, 0x56, 0xf9, 0x74, 0xf9, 0x90, 0xfa, 0x1e, 0xfa, 0xae, 0xfc, + 0x61, 0xfb, 0x9d, 0xfa, 0xff, 0xfa, 0x25, 0xfb, 0xfa, 0xfc, 0xb8, 0xfe, 0x4f, 0x03, 0x23, 0x08, + 0x34, 0x0b, 0x2c, 0x0f, 0xbe, 0x0e, 0x2a, 0x0e, 0x04, 0x0b, 0xbc, 0x07, 0x9a, 0x05, 0xe6, 0x00, + 0xde, 0xff, 0xd0, 0xff, 0xa6, 0xfe, 0x09, 0x00, 0xaf, 0xfe, 0x9f, 0xfe, 0x93, 0xfc, 0x20, 0xfb, + 0xb0, 0xfb, 0xab, 0xfa, 0x8d, 0xfc, 0xe0, 0xfd, 0x3d, 0xfe, 0x15, 0x00, 0x31, 0xff, 0xb8, 0x01, + 0x8d, 0x01, 0xc8, 0xff, 0x67, 0xff, 0x7f, 0xff, 0x74, 0x01, 0x60, 0x03, 0x9c, 0x06, 0xf7, 0x0a, + 0x74, 0x0d, 0x9d, 0x11, 0x84, 0x12, 0x33, 0x13, 0x50, 0x11, 0xb8, 0x0d, 0x2e, 0x0b, 0xda, 0x05, + 0xed, 0x02, 0xd2, 0x01, 0x80, 0xfe, 0x78, 0xfe, 0x1c, 0xfc, 0xfa, 0xfa, 0x5d, 0xf9, 0x89, 0xf6, + 0x38, 0xf6, 0x69, 0xf4, 0x78, 0xf4, 0x27, 0xf7, 0x11, 0xf8, 0x09, 0xfb, 0x83, 0xfa, 0x0d, 0xfc, + 0xab, 0xfc, 0xb0, 0xf9, 0x0e, 0xf8, 0x88, 0xf6, 0x82, 0xf6, 0xff, 0xf6, 0xba, 0xf8, 0x01, 0xfe, + 0x3a, 0x00, 0x47, 0x04, 0x5e, 0x05, 0xaf, 0x04, 0xcb, 0x03, 0x36, 0x00, 0x88, 0xfe, 0xe5, 0xfa, + 0x8e, 0xf6, 0xfb, 0xf5, 0x2a, 0xf3, 0xcb, 0xf2, 0xa1, 0xf1, 0x18, 0xf1, 0x16, 0xf1, 0xbd, 0xee, + 0x01, 0xf0, 0xa3, 0xf0, 0x28, 0xf1, 0x92, 0xf5, 0x42, 0xf7, 0x92, 0xfb, 0x04, 0xfe, 0x33, 0x01, + 0xfc, 0x04, 0xe9, 0x04, 0x2d, 0x05, 0xa0, 0x05, 0x9e, 0x06, 0x99, 0x08, 0x76, 0x0a, 0xb5, 0x0f, + 0xe7, 0x12, 0x0c, 0x17, 0x76, 0x19, 0x7f, 0x19, 0x9c, 0x18, 0x3e, 0x14, 0xcd, 0x10, 0xc6, 0x0c, + 0x88, 0x06, 0x18, 0x04, 0xec, 0xff, 0xc3, 0xfd, 0xe4, 0xfc, 0x58, 0xfb, 0x7e, 0xfa, 0xc3, 0xf6, + 0xdb, 0xf4, 0x03, 0xf4, 0xee, 0xf1, 0x45, 0xf4, 0x29, 0xf5, 0xab, 0xf7, 0xa3, 0xf9, 0x50, 0xfb, + 0xbe, 0xff, 0xf7, 0x00, 0x6e, 0x01, 0x8a, 0x01, 0xec, 0x01, 0x54, 0x04, 0xba, 0x05, 0xa8, 0x0a, + 0xb2, 0x0e, 0x68, 0x12, 0x6a, 0x15, 0x61, 0x15, 0xea, 0x14, 0xee, 0x10, 0xc3, 0x0c, 0x73, 0x09, + 0x8d, 0x02, 0xb4, 0xff, 0x11, 0xfd, 0xa8, 0xfa, 0x3b, 0xfa, 0xf5, 0xf7, 0x8a, 0xf7, 0x2f, 0xf5, + 0x20, 0xf3, 0x80, 0xf3, 0x59, 0xf1, 0xb6, 0xf2, 0xa6, 0xf3, 0xe0, 0xf4, 0x8a, 0xf7, 0x9c, 0xf8, + 0x1a, 0xfc, 0x22, 0xfe, 0x55, 0xfe, 0x29, 0xff, 0x65, 0xff, 0x33, 0x01, 0x95, 0x01, 0x22, 0x05, + 0xcd, 0x09, 0x57, 0x0d, 0xc1, 0x11, 0x92, 0x12, 0x3c, 0x13, 0x06, 0x11, 0x80, 0x0c, 0xb4, 0x09, + 0xb3, 0x02, 0x4e, 0xfd, 0xbe, 0xf9, 0x1d, 0xf5, 0x2e, 0xf3, 0xe3, 0xef, 0x79, 0xee, 0x8d, 0xeb, + 0xbd, 0xe7, 0x6e, 0xe7, 0x56, 0xe5, 0xfa, 0xe5, 0xfb, 0xe7, 0x9f, 0xe9, 0xd5, 0xed, 0x8f, 0xef, + 0xc5, 0xf3, 0xb7, 0xf7, 0xca, 0xf8, 0x40, 0xfa, 0x2b, 0xfb, 0xe9, 0xfd, 0x75, 0x00, 0xf1, 0x04, + 0x72, 0x0b, 0x2f, 0x10, 0xfc, 0x16, 0x9a, 0x1a, 0x45, 0x1d, 0x17, 0x1e, 0xd8, 0x1a, 0x54, 0x19, + 0xce, 0x14, 0x79, 0x10, 0x43, 0x0e, 0xce, 0x09, 0x5e, 0x07, 0x1e, 0x04, 0x39, 0x02, 0x78, 0x00, + 0xbc, 0xfc, 0x57, 0xfb, 0x44, 0xf9, 0xec, 0xf7, 0xd7, 0xf8, 0xfe, 0xf8, 0x4c, 0xfb, 0x99, 0xfb, + 0x09, 0xfd, 0x08, 0x00, 0x78, 0x00, 0x2b, 0x00, 0xfb, 0xfe, 0xb3, 0xfe, 0xd6, 0xfe, 0xda, 0xff, + 0x7a, 0x05, 0x9c, 0x09, 0xbd, 0x0e, 0x3c, 0x12, 0xa0, 0x13, 0xcb, 0x13, 0x0f, 0x10, 0x4a, 0x0d, + 0x40, 0x09, 0x0a, 0x03, 0x65, 0x00, 0x3d, 0xfc, 0x40, 0xfa, 0x19, 0xf7, 0x0e, 0xf4, 0xa5, 0xf2, + 0x3c, 0xee, 0x99, 0xeb, 0xa3, 0xe9, 0xd5, 0xe6, 0xda, 0xe7, 0xbb, 0xe7, 0x8c, 0xe9, 0x22, 0xea, + 0x57, 0xeb, 0x09, 0xef, 0xb7, 0xf0, 0xe3, 0xf1, 0x5e, 0xf2, 0x9b, 0xf3, 0x40, 0xf6, 0xca, 0xf7, + 0xb8, 0xfd, 0x9f, 0x02, 0xf0, 0x08, 0xe2, 0x0e, 0x43, 0x12, 0xba, 0x15, 0x45, 0x15, 0x36, 0x14, + 0xaf, 0x13, 0x27, 0x0f, 0xb9, 0x0d, 0xc1, 0x0b, 0xdb, 0x0a, 0xff, 0x09, 0x65, 0x08, 0x4a, 0x08, + 0x4b, 0x05, 0x36, 0x02, 0xae, 0x00, 0x7d, 0xfd, 0x78, 0xfd, 0xec, 0xfb, 0xa3, 0xfb, 0xb8, 0xfb, + 0x19, 0xfb, 0x5b, 0xfd, 0xe3, 0xfe, 0xa5, 0xfe, 0xa7, 0xfd, 0xa7, 0xfb, 0x47, 0xfc, 0xb6, 0xfb, + 0x96, 0xfe, 0x23, 0x02, 0xf8, 0x05, 0x82, 0x0a, 0x88, 0x0d, 0x20, 0x10, 0x59, 0x0f, 0x46, 0x0c, + 0x5c, 0x0b, 0x9b, 0x06, 0xd3, 0x03, 0xe2, 0x01, 0x31, 0x00, 0xd1, 0xff, 0x22, 0xfe, 0xdd, 0xfd, + 0xf8, 0xfb, 0x1e, 0xf9, 0xd6, 0xf8, 0xc3, 0xf5, 0x34, 0xf5, 0xed, 0xf4, 0x9e, 0xf5, 0x55, 0xf7, + 0x15, 0xf7, 0xbf, 0xf8, 0x83, 0xfa, 0x2e, 0xfa, 0xdf, 0xf9, 0xe0, 0xf7, 0xe3, 0xf8, 0x33, 0xf8, + 0x1b, 0xfa, 0xc0, 0xfd, 0x26, 0x01, 0x7c, 0x06, 0x1b, 0x0a, 0x67, 0x0d, 0xa3, 0x0e, 0x68, 0x0c, + 0xd4, 0x0b, 0xa6, 0x07, 0x75, 0x03, 0x7d, 0x00, 0xc7, 0xfd, 0x26, 0xfd, 0x68, 0xfb, 0x7d, 0xfb, + 0xa0, 0xfb, 0x2f, 0xf9, 0xa1, 0xf9, 0xea, 0xf7, 0x8a, 0xf7, 0x8c, 0xf8, 0x08, 0xf9, 0x4a, 0xfb, + 0x5b, 0xfb, 0xa1, 0xfc, 0xab, 0xff, 0xee, 0xff, 0x45, 0x00, 0x64, 0xfe, 0x01, 0xfe, 0x19, 0xfd, + 0x3a, 0xfd, 0x0a, 0x01, 0x67, 0x04, 0x86, 0x09, 0x91, 0x0d, 0x4c, 0x10, 0xce, 0x12, 0x01, 0x11, + 0x34, 0x10, 0x9f, 0x0d, 0x51, 0x09, 0xb7, 0x06, 0x8c, 0x03, 0x60, 0x02, 0x39, 0x00, 0x9b, 0xfe, + 0x15, 0xff, 0x51, 0xfc, 0xe3, 0xfb, 0xc1, 0xfa, 0x44, 0xfa, 0xfe, 0xfb, 0x98, 0xfc, 0x7f, 0xff, + 0xd8, 0x00, 0x00, 0x02, 0xcc, 0x05, 0x8b, 0x07, 0xa1, 0x08, 0x2f, 0x07, 0xbc, 0x06, 0x0c, 0x07, + 0xd7, 0x05, 0x10, 0x08, 0xb0, 0x09, 0x64, 0x0c, 0xbd, 0x0e, 0x45, 0x0f, 0xff, 0x10, 0x12, 0x0e, + 0xcb, 0x0a, 0x79, 0x06, 0x5f, 0xff, 0x77, 0xfa, 0x9c, 0xf5, 0xe0, 0xf3, 0x4d, 0xf2, 0x9c, 0xef, + 0x65, 0xef, 0xc7, 0xeb, 0x02, 0xe9, 0x7c, 0xe7, 0x7c, 0xe4, 0x15, 0xe5, 0x3a, 0xe5, 0x94, 0xe7, + 0xd5, 0xe9, 0x23, 0xeb, 0x3d, 0xef, 0x97, 0xf2, 0x0c, 0xf5, 0xce, 0xf5, 0x6f, 0xf6, 0xbb, 0xf8, + 0x44, 0xf9, 0xb0, 0xfc, 0xcd, 0xff, 0x54, 0x03, 0xdb, 0x07, 0xd0, 0x0a, 0xc0, 0x0e, 0x74, 0x0e, + 0x04, 0x0c, 0x15, 0x0b, 0x77, 0x06, 0xe9, 0x02, 0xe1, 0xfe, 0x8a, 0xfc, 0xa2, 0xfb, 0x6f, 0xf9, + 0x42, 0xfa, 0x76, 0xf9, 0xf5, 0xf7, 0x0e, 0xf8, 0x0b, 0xf6, 0x90, 0xf6, 0xc1, 0xf6, 0xce, 0xf8, + 0xfc, 0xfb, 0x87, 0xfd, 0x23, 0x01, 0xe5, 0x04, 0xc2, 0x07, 0x60, 0x09, 0x57, 0x09, 0x62, 0x0b, + 0x8c, 0x0b, 0xc1, 0x0d, 0x5f, 0x10, 0x93, 0x13, 0x27, 0x18, 0x7e, 0x1a, 0xf7, 0x1d, 0x11, 0x1f, + 0x3c, 0x1c, 0x04, 0x1a, 0xbe, 0x13, 0xe7, 0x0d, 0xcd, 0x07, 0x4b, 0x02, 0x4c, 0xff, 0x30, 0xfb, + 0x44, 0xf9, 0xbe, 0xf7, 0x94, 0xf3, 0x04, 0xf2, 0x6c, 0xee, 0x35, 0xed, 0xc8, 0xec, 0x00, 0xed, + 0x98, 0xef, 0x80, 0xf0, 0x6f, 0xf2, 0x9c, 0xf5, 0x93, 0xf7, 0x7f, 0xf9, 0xdf, 0xf8, 0x0e, 0xfb, + 0x94, 0xfb, 0x90, 0xfc, 0x88, 0x00, 0x1a, 0x05, 0x27, 0x0b, 0x35, 0x10, 0x9d, 0x14, 0x22, 0x18, + 0xe5, 0x16, 0x8a, 0x16, 0x74, 0x13, 0x8c, 0x0f, 0x4c, 0x0b, 0x00, 0x06, 0x48, 0x03, 0xb8, 0xff, + 0xb9, 0xfc, 0xc7, 0xfb, 0xb6, 0xf7, 0x56, 0xf6, 0xf3, 0xf2, 0x88, 0xf0, 0x14, 0xef, 0x9d, 0xed, + 0x6a, 0xee, 0x16, 0xef, 0xbc, 0xef, 0x6f, 0xf2, 0xe5, 0xf4, 0xf8, 0xf6, 0x3e, 0xf6, 0x1d, 0xf7, + 0xde, 0xf7, 0x56, 0xf8, 0x54, 0xfb, 0x79, 0xfe, 0x47, 0x03, 0x8b, 0x08, 0x83, 0x0c, 0xf4, 0x11, + 0x53, 0x12, 0xc7, 0x12, 0x91, 0x11, 0x57, 0x0e, 0xe6, 0x0a, 0x7c, 0x06, 0xeb, 0x04, 0xf4, 0x02, + 0x0d, 0x00, 0x05, 0x00, 0x56, 0xfd, 0x7c, 0xfb, 0xe4, 0xf8, 0xa9, 0xf5, 0x61, 0xf4, 0x97, 0xf2, + 0x3a, 0xf3, 0x5a, 0xf4, 0x14, 0xf4, 0x28, 0xf6, 0xb1, 0xf7, 0x9d, 0xfa, 0xbf, 0xfa, 0x5f, 0xfb, + 0xba, 0xfc, 0x98, 0xfc, 0x9e, 0xfe, 0x56, 0x01, 0x89, 0x05, 0xf5, 0x0a, 0x73, 0x0e, 0x42, 0x14, + 0xd4, 0x16, 0xcb, 0x17, 0xb4, 0x18, 0x46, 0x16, 0x96, 0x13, 0xca, 0x0f, 0x46, 0x0d, 0x4d, 0x0c, + 0xbd, 0x08, 0x8b, 0x07, 0xf8, 0x04, 0x99, 0x02, 0x76, 0x00, 0x7f, 0xfc, 0xbd, 0xf9, 0x3f, 0xf6, + 0x04, 0xf5, 0xc2, 0xf5, 0x02, 0xf5, 0xf9, 0xf5, 0xa9, 0xf6, 0x48, 0xf8, 0x53, 0xf7, 0x3d, 0xf5, + 0x14, 0xf5, 0x2a, 0xf4, 0xf3, 0xf4, 0xf3, 0xf6, 0x29, 0xfa, 0xfd, 0xfe, 0x07, 0x02, 0xde, 0x06, + 0x5a, 0x09, 0xbb, 0x08, 0x0f, 0x09, 0xfe, 0x06, 0xd0, 0x04, 0xdd, 0x01, 0x25, 0xff, 0x61, 0xfe, + 0xae, 0xfb, 0xe2, 0xfb, 0xb6, 0xfb, 0x76, 0xfa, 0x70, 0xfa, 0x3e, 0xf8, 0xfc, 0xf6, 0xfb, 0xf5, + 0x8c, 0xf5, 0xb1, 0xf7, 0xa8, 0xf7, 0xa4, 0xf8, 0xfc, 0xf9, 0x15, 0xfc, 0xa4, 0xfd, 0x05, 0xfc, + 0xf1, 0xfc, 0x9e, 0xfc, 0xd0, 0xfc, 0xf2, 0xfe, 0x06, 0x01, 0x70, 0x06, 0x22, 0x0a, 0xf9, 0x0e, + 0xf6, 0x13, 0x32, 0x14, 0x8a, 0x14, 0x83, 0x12, 0x1a, 0x0f, 0x58, 0x0b, 0xa2, 0x06, 0xf2, 0x04, + 0x2f, 0x02, 0xa0, 0x00, 0x78, 0x00, 0xaa, 0xfe, 0xe8, 0xfe, 0x50, 0xfc, 0x7a, 0xfa, 0x13, 0xf9, + 0x6c, 0xf7, 0xf4, 0xf8, 0xc9, 0xf8, 0x51, 0xf9, 0x22, 0xfb, 0xe1, 0xfb, 0x6d, 0xfd, 0x4b, 0xfb, + 0xa2, 0xfa, 0xe5, 0xf9, 0x0c, 0xf9, 0xc3, 0xf9, 0x44, 0xfb, 0x1e, 0x00, 0x40, 0x03, 0x8b, 0x06, + 0x9c, 0x09, 0xe0, 0x09, 0x3f, 0x0a, 0x06, 0x09, 0xaf, 0x06, 0xa6, 0x03, 0xa0, 0xfe, 0x57, 0xfb, + 0x3f, 0xf9, 0xf7, 0xf6, 0x70, 0xf7, 0xff, 0xf4, 0x42, 0xf5, 0x90, 0xf3, 0x9d, 0xf2, 0x20, 0xf1, + 0xa5, 0xef, 0x35, 0xf1, 0xee, 0xf2, 0xdc, 0xf4, 0x71, 0xf8, 0x29, 0xfb, 0x4c, 0xfe, 0xf0, 0xfd, + 0xc0, 0xfe, 0x77, 0x00, 0x08, 0x00, 0x85, 0x00, 0x47, 0x00, 0x46, 0x04, 0x86, 0x07, 0x53, 0x0a, + 0x55, 0x0e, 0xb0, 0x0f, 0xd0, 0x0e, 0xb2, 0x0d, 0x25, 0x0b, 0xf7, 0x08, 0x84, 0x05, 0x78, 0x03, + 0xe1, 0x00, 0xc9, 0xfe, 0x82, 0xfe, 0x99, 0xfd, 0xc5, 0xfc, 0xf4, 0xfb, 0x14, 0xfa, 0x1a, 0xf9, + 0x93, 0xf8, 0xde, 0xf8, 0xbc, 0xfa, 0xc6, 0xfb, 0x57, 0x00, 0xd1, 0x00, 0x85, 0x04, 0x47, 0x06, + 0x35, 0x07, 0x9e, 0x08, 0xd5, 0x05, 0x39, 0x05, 0xf9, 0x05, 0xee, 0x07, 0xa5, 0x0c, 0x26, 0x0e, + 0x28, 0x13, 0xc4, 0x15, 0x25, 0x15, 0x44, 0x13, 0xcd, 0x10, 0x5d, 0x0e, 0xef, 0x08, 0xac, 0x04, + 0x1a, 0x02, 0xd0, 0xfe, 0xd9, 0xfc, 0x98, 0xfb, 0xae, 0xf9, 0xa5, 0xf8, 0xce, 0xf6, 0x5e, 0xf5, + 0x89, 0xf2, 0x00, 0xf4, 0x84, 0xf6, 0x50, 0xf7, 0xf4, 0xf7, 0x85, 0xf9, 0x04, 0xfc, 0x1d, 0xff, + 0x3f, 0x00, 0x6d, 0x01, 0x35, 0x02, 0x40, 0x01, 0x5f, 0x01, 0xbd, 0x00, 0x7b, 0x06, 0x5b, 0x08, + 0x84, 0x0b, 0xd0, 0x0d, 0x28, 0x0d, 0xca, 0x0c, 0x50, 0x09, 0x49, 0x04, 0x79, 0xfe, 0x52, 0xf7, + 0x4a, 0xf4, 0x06, 0xef, 0xb1, 0xed, 0x72, 0xec, 0xea, 0xea, 0x59, 0xe9, 0x93, 0xe5, 0x51, 0xe4, + 0x60, 0xe3, 0x28, 0xe3, 0xbc, 0xe4, 0x8a, 0xe6, 0xb4, 0xe8, 0x58, 0xea, 0x55, 0xed, 0xf1, 0xf1, + 0xc1, 0xf3, 0x4c, 0xf6, 0x90, 0xf7, 0x2c, 0xfa, 0xef, 0xfd, 0xc1, 0x02, 0x40, 0x08, 0x54, 0x0e, + 0x59, 0x14, 0x29, 0x1b, 0x76, 0x1f, 0x21, 0x21, 0x7c, 0x21, 0x51, 0x20, 0xed, 0x1e, 0x1f, 0x18, + 0xfd, 0x14, 0xee, 0x10, 0x63, 0x0d, 0x34, 0x0b, 0xf6, 0x06, 0xb1, 0x05, 0x0b, 0x03, 0xa8, 0xfe, + 0x85, 0xfb, 0xc0, 0xf5, 0x7c, 0xf6, 0xa1, 0xf5, 0x9b, 0xf5, 0xb3, 0xf5, 0x9e, 0xf7, 0xa8, 0xfb, + 0xa1, 0xfb, 0x50, 0xfb, 0xf8, 0xfa, 0x67, 0xfa, 0x3f, 0xfa, 0x3a, 0xfb, 0x3f, 0xff, 0xf6, 0x03, + 0xc3, 0x07, 0xc5, 0x0c, 0x1c, 0x0f, 0xca, 0x11, 0x8a, 0x11, 0xdc, 0x0f, 0x07, 0x0e, 0xdc, 0x0b, + 0x20, 0x09, 0x49, 0x07, 0xf6, 0x04, 0x6f, 0x04, 0x72, 0x02, 0x9e, 0x00, 0x60, 0xff, 0xb4, 0xfb, + 0x5c, 0xfa, 0x23, 0xf5, 0x43, 0xf3, 0xa3, 0xf3, 0x3a, 0xf3, 0x4f, 0xf4, 0xaf, 0xf4, 0xd6, 0xf6, + 0xf3, 0xf8, 0xa4, 0xf9, 0x60, 0xfc, 0x2e, 0xfa, 0xe6, 0xf9, 0x2b, 0xf9, 0x0c, 0xfc, 0x41, 0x00, + 0x9b, 0x02, 0x84, 0x08, 0x05, 0x0c, 0xb6, 0x0e, 0x5e, 0x10, 0x51, 0x11, 0x63, 0x11, 0x44, 0x0d, + 0x07, 0x0a, 0x7a, 0x07, 0xee, 0x03, 0x74, 0x03, 0x12, 0x00, 0x06, 0xfe, 0x0e, 0xfc, 0xf5, 0xf8, + 0xf6, 0xf4, 0x52, 0xf2, 0x1e, 0xf1, 0x7f, 0xf1, 0xfd, 0xf0, 0xbd, 0xf1, 0xc0, 0xf1, 0xd6, 0xf2, + 0x0d, 0xf6, 0x06, 0xf6, 0x76, 0xf8, 0xac, 0xf8, 0xa3, 0xf7, 0xcc, 0xf7, 0xca, 0xf8, 0xde, 0xfd, + 0x3f, 0x01, 0x2f, 0x05, 0xb7, 0x09, 0x03, 0x0b, 0xea, 0x0e, 0x44, 0x0e, 0xac, 0x0d, 0x76, 0x0a, + 0x70, 0x06, 0x13, 0x05, 0x1e, 0x02, 0xb1, 0x01, 0x10, 0x01, 0x13, 0x00, 0x4a, 0xff, 0xa7, 0xfc, + 0xaf, 0xfb, 0xd2, 0xf8, 0x7c, 0xf6, 0x93, 0xf7, 0x52, 0xf7, 0x27, 0xf9, 0xf2, 0xf7, 0xf6, 0xf8, + 0x06, 0xfb, 0xa3, 0xfc, 0x5d, 0xfc, 0x70, 0xfc, 0xbd, 0xfc, 0x96, 0xfe, 0x7f, 0xff, 0xba, 0x03, + 0x9e, 0x07, 0x49, 0x0a, 0xc8, 0x0e, 0xdc, 0x11, 0x63, 0x15, 0x7a, 0x17, 0xf7, 0x15, 0xb0, 0x12, + 0x9d, 0x0c, 0xfd, 0x08, 0x83, 0x06, 0x18, 0x05, 0xf4, 0x04, 0x59, 0x00, 0x0a, 0xff, 0xf9, 0xfb, + 0x2f, 0xfa, 0x54, 0xf6, 0xdf, 0xf1, 0x4e, 0xf1, 0x09, 0xf0, 0xc4, 0xf0, 0xba, 0xf0, 0x58, 0xf1, + 0x15, 0xf4, 0x43, 0xf3, 0x4e, 0xf3, 0xb4, 0xf2, 0xf8, 0xf1, 0x7d, 0xf1, 0xd3, 0xef, 0x63, 0xf3, + 0x5c, 0xf6, 0xf0, 0xf9, 0x3f, 0xfd, 0x5b, 0x02, 0xce, 0x05, 0xcc, 0x07, 0x8b, 0x07, 0x6f, 0x08, + 0x25, 0x06, 0x4c, 0x04, 0x64, 0x03, 0x7d, 0x01, 0x0d, 0x02, 0x77, 0x01, 0xf8, 0x00, 0x9b, 0x01, + 0xef, 0x01, 0x45, 0x03, 0x09, 0x00, 0xbd, 0xfe, 0x26, 0x00, 0x77, 0x01, 0x12, 0x04, 0x07, 0x04, + 0x38, 0x07, 0xcb, 0x08, 0x72, 0x09, 0x86, 0x09, 0xb0, 0x07, 0x3c, 0x06, 0x9f, 0x03, 0x9d, 0x03, + 0xdb, 0x05, 0x88, 0x06, 0x2b, 0x0a, 0xb7, 0x0c, 0x6d, 0x0f, 0xff, 0x0f, 0x07, 0x0e, 0x88, 0x0d, + 0x17, 0x08, 0x70, 0x03, 0x68, 0x00, 0x84, 0xfe, 0x04, 0xfc, 0x2e, 0xf9, 0x11, 0xf7, 0xca, 0xf6, + 0x76, 0xf3, 0xa2, 0xf2, 0xdb, 0xf0, 0x75, 0xef, 0xc2, 0xf1, 0x5e, 0xf4, 0xfe, 0xf6, 0x0e, 0xf9, + 0xec, 0xfa, 0x2b, 0xff, 0x66, 0x01, 0x18, 0x04, 0xe1, 0x04, 0x3c, 0x03, 0x65, 0x02, 0x8c, 0x01, + 0xd4, 0x05, 0xf2, 0x07, 0x6a, 0x0a, 0x73, 0x0c, 0x27, 0x0e, 0x2b, 0x10, 0xe9, 0x0e, 0xb4, 0x0d, + 0xbc, 0x09, 0xcb, 0x03, 0x54, 0x00, 0xb7, 0xfb, 0x81, 0xfa, 0x5f, 0xf8, 0x24, 0xf6, 0x1d, 0xf5, + 0xe7, 0xf2, 0x34, 0xf2, 0x0e, 0xf0, 0x08, 0xee, 0xb2, 0xec, 0xad, 0xed, 0xe8, 0xee, 0xda, 0xee, + 0xaf, 0xef, 0xd2, 0xf4, 0x3d, 0xf7, 0x33, 0xf8, 0xe6, 0xf9, 0xa8, 0xfa, 0x52, 0xfc, 0xcb, 0xfe, + 0x3d, 0x02, 0x70, 0x06, 0xda, 0x09, 0x8f, 0x0e, 0x1d, 0x12, 0x1e, 0x16, 0x3c, 0x18, 0x90, 0x17, + 0xc9, 0x14, 0x81, 0x0e, 0xaf, 0x0a, 0xf9, 0x05, 0x93, 0x03, 0x9a, 0x01, 0xf3, 0xfd, 0xce, 0xfc, + 0xa0, 0xfa, 0xe5, 0xf8, 0x13, 0xf7, 0xb7, 0xf2, 0x3f, 0xf2, 0xd8, 0xf0, 0x8f, 0xf2, 0x87, 0xf3, + 0xab, 0xf4, 0x06, 0xf8, 0x22, 0xf9, 0x03, 0xfb, 0xaf, 0xfb, 0x5f, 0xfd, 0x64, 0xfe, 0x3d, 0xff, + 0x98, 0x03, 0xf1, 0x07, 0xb2, 0x0a, 0xac, 0x0f, 0xb8, 0x15, 0x3f, 0x1a, 0xd1, 0x1b, 0x01, 0x1c, + 0xfa, 0x1a, 0x76, 0x18, 0x27, 0x15, 0x21, 0x12, 0x82, 0x0e, 0x5e, 0x0c, 0xe4, 0x07, 0xb2, 0x04, + 0x44, 0x03, 0x6e, 0x00, 0x10, 0xfe, 0x78, 0xf7, 0xa0, 0xf3, 0xc2, 0xf0, 0x5d, 0xf0, 0x8f, 0xf1, + 0x8e, 0xf0, 0x40, 0xf1, 0x0f, 0xf2, 0x09, 0xf2, 0x4f, 0xf2, 0xfa, 0xef, 0x97, 0xf0, 0x33, 0xee, + 0x41, 0xee, 0x0d, 0xf1, 0x82, 0xf4, 0xd5, 0xf9, 0x6e, 0xfe, 0x9d, 0x03, 0x7c, 0x06, 0x2d, 0x08, + 0xa2, 0x09, 0x9c, 0x07, 0x1e, 0x05, 0x23, 0x03, 0x92, 0x00, 0x48, 0xfe, 0x03, 0xfc, 0xac, 0xfb, + 0xbc, 0xfa, 0x1a, 0xf8, 0xd5, 0xf5, 0xf1, 0xf2, 0xa7, 0xf0, 0xb5, 0xf0, 0xfe, 0xf0, 0x02, 0xf3, + 0x55, 0xf4, 0x76, 0xf5, 0xe9, 0xf8, 0xd2, 0xfb, 0x7f, 0xff, 0x08, 0x01, 0x81, 0x02, 0x5d, 0x02, + 0xf3, 0x01, 0xb0, 0x05, 0xab, 0x09, 0xd1, 0x0d, 0xa5, 0x12, 0x1b, 0x17, 0x2f, 0x1d, 0x9b, 0x1d, + 0x8e, 0x1f, 0xea, 0x1d, 0xbe, 0x1a, 0x08, 0x17, 0x1a, 0x13, 0x07, 0x12, 0x5a, 0x0f, 0x21, 0x0d, + 0x9b, 0x0a, 0x5f, 0x07, 0xca, 0x04, 0x7c, 0x00, 0x11, 0xfb, 0x24, 0xf7, 0xc6, 0xf5, 0xec, 0xf4, + 0x84, 0xf2, 0x59, 0xf1, 0x6a, 0xf2, 0x1c, 0xf4, 0x44, 0xf3, 0x54, 0xf3, 0x8a, 0xf3, 0xf3, 0xf3, + 0xbf, 0xf3, 0x12, 0xf6, 0x2d, 0xfa, 0xde, 0xfd, 0xe1, 0x01, 0x5a, 0x06, 0x62, 0x0c, 0x76, 0x0e, + 0x92, 0x10, 0x3b, 0x10, 0x71, 0x0c, 0x07, 0x0a, 0x7e, 0x07, 0xec, 0x05, 0xb7, 0x04, 0x3e, 0x01, + 0xb2, 0x01, 0x7f, 0xff, 0x21, 0xfe, 0xc7, 0xfb, 0x49, 0xf8, 0x19, 0xf5, 0xc1, 0xf1, 0x03, 0xf2, + 0x52, 0xf1, 0xb9, 0xf0, 0x92, 0xf1, 0x75, 0xf1, 0x9d, 0xf2, 0x66, 0xf2, 0x94, 0xf2, 0xaa, 0xf1, + 0x5f, 0xf0, 0x63, 0xf1, 0x93, 0xf2, 0xa1, 0xf4, 0x7c, 0xf7, 0x1b, 0xfd, 0xee, 0x01, 0x0f, 0x04, + 0xdd, 0x04, 0xee, 0x05, 0x5e, 0x04, 0x06, 0x03, 0xa9, 0x01, 0x25, 0x00, 0xba, 0xff, 0xd7, 0xfd, + 0xc3, 0xfe, 0x11, 0x00, 0x7a, 0xff, 0x09, 0x00, 0x8c, 0xfc, 0x7c, 0xf9, 0x02, 0xf8, 0x57, 0xf8, + 0xbf, 0xfa, 0xd4, 0xf8, 0x16, 0xfa, 0x76, 0xfb, 0x94, 0xfd, 0xc8, 0xfd, 0xd7, 0xfc, 0xee, 0xfc, + 0x01, 0xfa, 0xe1, 0xf8, 0x4b, 0xfa, 0x32, 0xfd, 0x8a, 0x01, 0xba, 0x04, 0x97, 0x08, 0xbc, 0x0b, + 0xdb, 0x0d, 0xb3, 0x0e, 0x2e, 0x0d, 0x73, 0x0c, 0x23, 0x0a, 0x53, 0x07, 0x78, 0x04, 0xaf, 0x02, + 0x96, 0x02, 0xd5, 0x02, 0x5b, 0x01, 0x2c, 0x01, 0xc1, 0xff, 0x3b, 0xfe, 0x8d, 0xfd, 0x04, 0xff, + 0xd3, 0x01, 0x21, 0x02, 0x66, 0x02, 0x48, 0x05, 0xfc, 0x06, 0x75, 0x09, 0xf5, 0x09, 0x33, 0x09, + 0xf2, 0x06, 0x80, 0x03, 0x67, 0x04, 0xc6, 0x04, 0xc5, 0x06, 0x45, 0x08, 0x3a, 0x0b, 0x5f, 0x0d, + 0x2a, 0x0c, 0xc2, 0x0c, 0xeb, 0x09, 0x55, 0x06, 0xf7, 0x01, 0x85, 0xfc, 0xc8, 0xfa, 0x95, 0xf8, + 0x04, 0xf7, 0x8c, 0xf4, 0x38, 0xf3, 0x48, 0xf2, 0x1c, 0xef, 0x63, 0xed, 0x1a, 0xec, 0x64, 0xed, + 0xf0, 0xee, 0xa9, 0xef, 0xf2, 0xf0, 0xc3, 0xf4, 0xcc, 0xf8, 0x46, 0xfb, 0xa2, 0xfc, 0x25, 0xff, + 0x03, 0x00, 0x59, 0x00, 0x22, 0x03, 0x8f, 0x06, 0x1c, 0x09, 0x12, 0x0d, 0x1a, 0x11, 0x5c, 0x16, + 0xe3, 0x18, 0x5e, 0x1b, 0xc6, 0x1b, 0x40, 0x18, 0x56, 0x16, 0xe3, 0x11, 0x6d, 0x0f, 0xde, 0x0c, + 0x36, 0x0a, 0x2a, 0x0a, 0x5d, 0x07, 0xd6, 0x05, 0xde, 0x02, 0x47, 0xfe, 0xe4, 0xfa, 0xc5, 0xf6, + 0x83, 0xf6, 0x37, 0xf6, 0xb6, 0xf6, 0x46, 0xf7, 0xee, 0xf7, 0x78, 0xfb, 0x9c, 0xfb, 0xef, 0xfb, + 0x20, 0xfb, 0x1d, 0xfb, 0xee, 0xfb, 0xf8, 0xfc, 0x9c, 0xfe, 0x67, 0x01, 0xde, 0x04, 0x72, 0x09, + 0x8e, 0x0a, 0xc8, 0x0b, 0x6b, 0x0c, 0xd6, 0x09, 0x25, 0x07, 0x93, 0x04, 0x44, 0x01, 0x39, 0xff, + 0x5f, 0xfc, 0xe2, 0xfb, 0x81, 0xfa, 0x22, 0xf9, 0x7b, 0xf9, 0x89, 0xf5, 0x2c, 0xf2, 0x47, 0xef, + 0x59, 0xef, 0xaf, 0xf0, 0x53, 0xef, 0xb4, 0xf0, 0xaf, 0xf1, 0x17, 0xf4, 0x0f, 0xf6, 0xb4, 0xf6, + 0x6a, 0xf8, 0x5a, 0xf7, 0x2d, 0xf7, 0x9b, 0xf7, 0x26, 0xfb, 0x1a, 0x00, 0x58, 0x03, 0x85, 0x08, + 0x4c, 0x0c, 0x25, 0x0f, 0x13, 0x10, 0x8c, 0x0f, 0xe7, 0x0e, 0xe4, 0x0b, 0xdf, 0x06, 0x45, 0x03, + 0xc7, 0xff, 0x8b, 0xfe, 0xa5, 0xfc, 0xdc, 0xf9, 0xf2, 0xf7, 0xa0, 0xf5, 0xb0, 0xf1, 0x5e, 0xf0, + 0x62, 0xf0, 0xb3, 0xf1, 0xfa, 0xf0, 0x21, 0xf1, 0x1b, 0xf4, 0x47, 0xf7, 0x46, 0xfb, 0xd4, 0xfc, + 0xf4, 0xfd, 0xe9, 0xfc, 0x59, 0xfc, 0xaa, 0xfe, 0x11, 0x00, 0xd3, 0x03, 0x64, 0x07, 0x11, 0x0c, + 0x65, 0x11, 0x1c, 0x14, 0x76, 0x17, 0x18, 0x17, 0x65, 0x16, 0x28, 0x13, 0xb5, 0x0e, 0x37, 0x0d, + 0x7d, 0x0a, 0xab, 0x08, 0x76, 0x05, 0x5b, 0x03, 0x31, 0x01, 0x36, 0xfc, 0xa2, 0xf8, 0xae, 0xf6, + 0x33, 0xf5, 0xf3, 0xf4, 0x20, 0xf3, 0xe8, 0xf2, 0xc9, 0xf3, 0x02, 0xf6, 0xe0, 0xf7, 0xb8, 0xf9, + 0xf9, 0xfa, 0x66, 0xfb, 0x06, 0xfb, 0x17, 0xfd, 0x54, 0xff, 0xbf, 0x01, 0x1c, 0x05, 0xf6, 0x08, + 0xfd, 0x0e, 0x29, 0x13, 0xac, 0x17, 0xf4, 0x18, 0x86, 0x16, 0x6d, 0x15, 0x8c, 0x11, 0x8e, 0x0e, + 0x5a, 0x0c, 0x4b, 0x09, 0xa5, 0x07, 0x85, 0x03, 0x9d, 0x01, 0xe9, 0xfd, 0xf7, 0xf9, 0x7a, 0xf5, + 0x2c, 0xef, 0xf2, 0xec, 0xce, 0xea, 0x22, 0xea, 0x28, 0xea, 0x20, 0xea, 0xe4, 0xec, 0xae, 0xec, + 0xfc, 0xeb, 0x77, 0xec, 0xf9, 0xec, 0x36, 0xee, 0xe5, 0xee, 0xec, 0xf0, 0x5b, 0xf4, 0x27, 0xf9, + 0x00, 0xfe, 0x1b, 0x02, 0x96, 0x05, 0x31, 0x08, 0x9b, 0x08, 0xe5, 0x09, 0x2f, 0x0a, 0x83, 0x08, + 0xf6, 0x07, 0x05, 0x07, 0xe1, 0x07, 0x01, 0x08, 0xb1, 0x08, 0x46, 0x0a, 0xeb, 0x07, 0x6f, 0x05, + 0x39, 0x03, 0xfc, 0x01, 0xce, 0x01, 0xf3, 0xff, 0x58, 0x00, 0x46, 0x00, 0xd3, 0x02, 0x24, 0x03, + 0xd5, 0x02, 0x86, 0x03, 0xa5, 0x00, 0x49, 0xfe, 0xa1, 0xfc, 0x55, 0xfd, 0x6e, 0x00, 0xd9, 0x01, + 0x0f, 0x06, 0x00, 0x0a, 0x73, 0x0c, 0x1e, 0x0d, 0x96, 0x0b, 0x51, 0x0b, 0xfd, 0x09, 0xc2, 0x06, + 0xaf, 0x03, 0xa0, 0x02, 0x75, 0x01, 0x11, 0x00, 0x18, 0xff, 0xb2, 0xfe, 0x4e, 0xfd, 0x86, 0xfa, + 0x03, 0xf9, 0x36, 0xf8, 0x55, 0xf9, 0xe8, 0xf8, 0x1c, 0xf9, 0x6e, 0xfa, 0x6a, 0xfc, 0x9f, 0xff, + 0xe2, 0x00, 0x30, 0x01, 0xa4, 0xff, 0x7a, 0xfd, 0x69, 0xfd, 0xbd, 0xfc, 0x2f, 0xff, 0x05, 0x00, + 0x91, 0x03, 0x60, 0x07, 0x4c, 0x09, 0xba, 0x0c, 0xf8, 0x0c, 0x65, 0x0b, 0x35, 0x08, 0x9e, 0x03, + 0x3e, 0x01, 0xbf, 0xfd, 0xa2, 0xfc, 0x2a, 0xfb, 0xe1, 0xf9, 0x62, 0xf9, 0x35, 0xf7, 0x4d, 0xf5, + 0x46, 0xf3, 0x34, 0xf2, 0x15, 0xf1, 0x82, 0xf0, 0x58, 0xf1, 0x04, 0xf2, 0x53, 0xf4, 0xe8, 0xf6, + 0x2a, 0xf8, 0x3c, 0xf8, 0x51, 0xf8, 0xf3, 0xf7, 0xd5, 0xf8, 0x20, 0xf9, 0xee, 0xf9, 0x61, 0xfb, + 0x2a, 0xfe, 0x9a, 0x03, 0xee, 0x07, 0xce, 0x0b, 0x34, 0x0d, 0x0b, 0x0c, 0xe5, 0x0b, 0x11, 0x08, + 0x6c, 0x06, 0x24, 0x03, 0x0f, 0x01, 0xfc, 0x00, 0x31, 0xff, 0x2c, 0xff, 0x8a, 0xfe, 0x33, 0xfd, + 0xce, 0xfa, 0xc5, 0xf6, 0x6c, 0xf7, 0x91, 0xf7, 0x46, 0xf8, 0x8f, 0xf9, 0x34, 0xfc, 0x73, 0x00, + 0x9e, 0x01, 0xe3, 0x01, 0x8a, 0x02, 0xb6, 0x03, 0x39, 0x04, 0xde, 0x03, 0xa8, 0x04, 0x36, 0x06, + 0x42, 0x08, 0x6f, 0x0b, 0xf7, 0x0e, 0x6b, 0x11, 0xa5, 0x12, 0xfb, 0x11, 0xec, 0x11, 0xd5, 0x10, + 0x3d, 0x0e, 0xea, 0x0b, 0xb3, 0x08, 0xbc, 0x06, 0x4c, 0x05, 0x04, 0x05, 0x39, 0x05, 0xc2, 0x02, + 0x31, 0x00, 0x7a, 0xfb, 0xdf, 0xf9, 0x02, 0xf9, 0x95, 0xf7, 0xd6, 0xf7, 0x5b, 0xf8, 0x49, 0xfa, + 0x85, 0xfb, 0x7d, 0xfc, 0x56, 0xfe, 0xa5, 0xfc, 0x30, 0xfb, 0x8c, 0xf9, 0xc9, 0xf9, 0x84, 0xfa, + 0x76, 0xfc, 0x91, 0x00, 0x2b, 0x03, 0x7c, 0x05, 0x3e, 0x05, 0xa8, 0x04, 0xf7, 0x04, 0x44, 0x02, + 0x59, 0xff, 0xd0, 0xfc, 0x8c, 0xfa, 0xc1, 0xf8, 0x56, 0xf7, 0x88, 0xf6, 0x45, 0xf5, 0x74, 0xf3, + 0xe6, 0xf1, 0xeb, 0xef, 0x66, 0xef, 0xf0, 0xf0, 0xa3, 0xf1, 0x2e, 0xf2, 0xed, 0xf3, 0xfb, 0xf7, + 0x46, 0xfd, 0x2e, 0x00, 0x21, 0x04, 0xb1, 0x05, 0x2b, 0x07, 0xdc, 0x08, 0x62, 0x09, 0x68, 0x0b, + 0xe8, 0x0d, 0xe2, 0x12, 0x1c, 0x17, 0xc9, 0x19, 0xb3, 0x1d, 0x8d, 0x1d, 0x32, 0x1c, 0x75, 0x18, + 0x72, 0x14, 0x5c, 0x10, 0x4c, 0x0a, 0x77, 0x07, 0x42, 0x04, 0x0d, 0x02, 0x27, 0xff, 0xad, 0xfa, + 0x50, 0xf7, 0x3c, 0xf3, 0x88, 0xef, 0x85, 0xed, 0xea, 0xec, 0x19, 0xec, 0x08, 0xeb, 0xe4, 0xec, + 0xb0, 0xef, 0x68, 0xf0, 0x3d, 0xf1, 0xd4, 0xf1, 0x47, 0xf2, 0x85, 0xf3, 0x1b, 0xf5, 0xf9, 0xf7, + 0x2c, 0xfa, 0x17, 0xfe, 0xc5, 0x04, 0xd7, 0x09, 0xe6, 0x0f, 0x8c, 0x13, 0xd3, 0x13, 0x2b, 0x14, + 0x6b, 0x12, 0x49, 0x10, 0x51, 0x0c, 0xf2, 0x08, 0x99, 0x06, 0x52, 0x02, 0xba, 0x00, 0x2f, 0xfe, + 0xca, 0xfb, 0x3b, 0xf7, 0xdd, 0xf1, 0xd4, 0xef, 0x07, 0xed, 0xe1, 0xeb, 0xc8, 0xea, 0xd3, 0xec, + 0xab, 0xef, 0xce, 0xef, 0xe7, 0xf0, 0xb2, 0xf2, 0xa4, 0xf3, 0x8f, 0xf3, 0x6a, 0xf3, 0x1d, 0xf5, + 0x5b, 0xf6, 0x9b, 0xf9, 0xc4, 0xfe, 0x57, 0x04, 0x27, 0x09, 0x47, 0x0c, 0xca, 0x0d, 0xd1, 0x0f, + 0x8c, 0x10, 0xc8, 0x10, 0x06, 0x0f, 0x41, 0x0b, 0x44, 0x0a, 0x6f, 0x09, 0x02, 0x09, 0xc6, 0x08, + 0x2f, 0x07, 0xc7, 0x04, 0x32, 0x00, 0xa8, 0xfd, 0x27, 0xfb, 0xbd, 0xf8, 0x3f, 0xf8, 0x75, 0xf7, + 0x30, 0xf9, 0x3a, 0xfa, 0x11, 0xfc, 0xbc, 0xfd, 0xc4, 0xfc, 0xb0, 0xfc, 0xa0, 0xfb, 0x9f, 0xfc, + 0x6b, 0xfc, 0x4c, 0xfe, 0xa5, 0x03, 0x24, 0x07, 0x01, 0x0a, 0x05, 0x0c, 0x25, 0x0e, 0x27, 0x10, + 0xba, 0x0f, 0x9c, 0x0f, 0x60, 0x0d, 0x54, 0x0b, 0x70, 0x09, 0x81, 0x08, 0x8d, 0x08, 0xef, 0x07, + 0x3e, 0x06, 0xbd, 0x04, 0x4e, 0x01, 0xa4, 0xff, 0x8f, 0xff, 0x38, 0xfd, 0xca, 0xfa, 0xb7, 0xf8, + 0xe4, 0xf8, 0xb0, 0xfa, 0x39, 0xfb, 0x5e, 0xfd, 0x52, 0xfd, 0xfb, 0xfc, 0x5e, 0xfc, 0x5a, 0xfb, + 0xe2, 0xfb, 0x47, 0xfc, 0x1e, 0xff, 0xe5, 0x00, 0x8a, 0x03, 0xd9, 0x07, 0x0b, 0x08, 0x68, 0x08, + 0xaf, 0x05, 0x83, 0x03, 0x93, 0x00, 0x0c, 0xfb, 0x1e, 0xf9, 0xde, 0xf8, 0x08, 0xf8, 0x71, 0xf6, + 0xc6, 0xf4, 0xfb, 0xf4, 0x24, 0xf2, 0xff, 0xef, 0x4f, 0xef, 0x41, 0xef, 0x27, 0xef, 0x1b, 0xef, + 0xcd, 0xf0, 0x03, 0xf4, 0x6e, 0xf4, 0xd6, 0xf5, 0xb3, 0xf6, 0x8d, 0xf6, 0xde, 0xf7, 0x9d, 0xf9, + 0xac, 0xfb, 0xbe, 0xfc, 0x37, 0xff, 0xd9, 0x03, 0x99, 0x08, 0x95, 0x0e, 0xd6, 0x11, 0x12, 0x14, + 0x2f, 0x16, 0x45, 0x15, 0x86, 0x13, 0xea, 0x0f, 0x40, 0x0e, 0xbc, 0x0c, 0x86, 0x0a, 0x1b, 0x0b, + 0x4a, 0x0a, 0x20, 0x0a, 0xf4, 0x06, 0xc4, 0x02, 0x0d, 0x01, 0x0f, 0xff, 0x69, 0xfd, 0xca, 0xfc, + 0x99, 0xfe, 0x40, 0x01, 0x8e, 0x00, 0xc3, 0x01, 0x92, 0x01, 0xbe, 0x00, 0xfa, 0xfe, 0x9d, 0xfd, + 0x46, 0xfd, 0x2b, 0xfc, 0x8e, 0xfc, 0x13, 0x00, 0xc2, 0x02, 0x41, 0x05, 0xd3, 0x06, 0xb9, 0x06, + 0xb6, 0x06, 0xb6, 0x06, 0x07, 0x06, 0xce, 0x03, 0x94, 0x00, 0xef, 0xfe, 0xa7, 0xfd, 0x47, 0xfe, + 0x72, 0xfe, 0x27, 0xfe, 0x2d, 0xfd, 0x83, 0xfa, 0x21, 0xfa, 0x15, 0xf9, 0xe6, 0xf8, 0x25, 0xf9, + 0x2a, 0xf8, 0x21, 0xfb, 0x4d, 0xfd, 0x47, 0x00, 0x71, 0x02, 0x1b, 0x02, 0xd9, 0x01, 0x77, 0x00, + 0xaf, 0xff, 0x78, 0xfd, 0xc2, 0xfd, 0xd3, 0x01, 0x33, 0x03, 0x75, 0x05, 0x7c, 0x07, 0x3a, 0x09, + 0x43, 0x09, 0xe1, 0x07, 0xc3, 0x06, 0x62, 0x03, 0xb3, 0xfe, 0x18, 0xfc, 0x66, 0xfa, 0xa5, 0xf9, + 0x85, 0xf8, 0x38, 0xf7, 0x44, 0xf5, 0x19, 0xf2, 0x87, 0xf0, 0xcd, 0xf0, 0x8e, 0xf0, 0x1a, 0xf0, + 0x4c, 0xef, 0xed, 0xf1, 0x37, 0xf6, 0x21, 0xf9, 0x30, 0xfd, 0xbe, 0xfe, 0x09, 0x01, 0x59, 0x01, + 0x73, 0x01, 0x40, 0x03, 0xca, 0x03, 0x04, 0x07, 0x5d, 0x09, 0xdf, 0x0c, 0xfb, 0x10, 0x25, 0x12, + 0x14, 0x13, 0x85, 0x11, 0x63, 0x10, 0xf1, 0x0c, 0xcb, 0x06, 0x06, 0x05, 0xa8, 0x03, 0x8d, 0x01, + 0xdf, 0xfe, 0x74, 0xfc, 0x32, 0xfb, 0x18, 0xf8, 0xcf, 0xf4, 0xd7, 0xf3, 0xc9, 0xf2, 0xd3, 0xf1, + 0xe5, 0xf0, 0x0a, 0xf2, 0x0c, 0xf5, 0x40, 0xf7, 0x2f, 0xf9, 0xd8, 0xfa, 0xe0, 0xfc, 0xf5, 0xfe, + 0x3a, 0x01, 0xec, 0x03, 0x59, 0x05, 0xce, 0x07, 0x99, 0x0c, 0xbb, 0x10, 0x97, 0x15, 0x0d, 0x18, + 0x25, 0x1a, 0x1a, 0x1b, 0x93, 0x19, 0x4a, 0x17, 0x7b, 0x12, 0x23, 0x0e, 0x95, 0x09, 0x80, 0x05, + 0x9e, 0x03, 0xc0, 0x00, 0x06, 0xff, 0x88, 0xfa, 0xec, 0xf5, 0xce, 0xf2, 0x7b, 0xee, 0x4b, 0xeb, + 0xcd, 0xe8, 0x29, 0xe9, 0x1c, 0xea, 0x29, 0xea, 0xaa, 0xeb, 0x75, 0xec, 0x42, 0xed, 0x83, 0xed, + 0xa4, 0xee, 0xa9, 0xf0, 0xd5, 0xf1, 0x03, 0xf5, 0x32, 0xf9, 0x27, 0xfe, 0xd8, 0x03, 0x97, 0x07, + 0xbf, 0x0a, 0xc2, 0x0c, 0x9a, 0x0e, 0x05, 0x10, 0x4c, 0x0f, 0x57, 0x0c, 0x8f, 0x09, 0x51, 0x07, + 0xb3, 0x07, 0x41, 0x06, 0xad, 0x05, 0x29, 0x05, 0x6d, 0x02, 0x2a, 0x00, 0xbb, 0xfd, 0x29, 0xfd, + 0x07, 0xfc, 0x6a, 0xf9, 0xa6, 0xfa, 0xfb, 0xfb, 0xb8, 0xfe, 0xf4, 0xff, 0xaf, 0xff, 0x0d, 0x00, + 0x82, 0xfe, 0x55, 0xfd, 0xcc, 0xfb, 0xf6, 0xfc, 0xb9, 0x00, 0x60, 0x03, 0x0e, 0x07, 0x38, 0x0a, + 0x2e, 0x0d, 0xa0, 0x0e, 0x39, 0x0f, 0x7f, 0x0f, 0xc8, 0x0c, 0xbd, 0x09, 0x92, 0x07, 0x3c, 0x05, + 0xa0, 0x04, 0xd1, 0x02, 0x4d, 0x00, 0x7d, 0xfd, 0x65, 0xf9, 0xf3, 0xf5, 0x98, 0xf4, 0x31, 0xf3, + 0xef, 0xf1, 0x4f, 0xef, 0xcc, 0xf0, 0x43, 0xf3, 0x9e, 0xf4, 0xf2, 0xf6, 0xf7, 0xf8, 0x97, 0xfa, + 0x32, 0xfb, 0x3b, 0xfc, 0x8c, 0xfd, 0x0b, 0xfd, 0xf8, 0xfe, 0x59, 0x00, 0xbb, 0x04, 0xb2, 0x08, + 0xa2, 0x0a, 0x0b, 0x0d, 0x10, 0x0e, 0x4a, 0x0e, 0x3e, 0x0b, 0xed, 0x06, 0x95, 0x04, 0xf8, 0x02, + 0x6a, 0x02, 0xd2, 0x00, 0xfa, 0xff, 0x92, 0xff, 0x14, 0xfd, 0x05, 0xfb, 0xf4, 0xf8, 0xa1, 0xf6, + 0xa3, 0xf4, 0xb8, 0xf1, 0xe9, 0xf0, 0x76, 0xf2, 0x1e, 0xf4, 0x19, 0xf5, 0xeb, 0xf5, 0x89, 0xf6, + 0x3c, 0xf7, 0x7a, 0xf8, 0x79, 0xfa, 0xd3, 0xf9, 0x18, 0xfb, 0x44, 0xfe, 0x73, 0x02, 0x40, 0x07, + 0x6d, 0x0b, 0x49, 0x0f, 0xff, 0x10, 0x12, 0x11, 0x48, 0x11, 0x9f, 0x0e, 0x06, 0x0d, 0x85, 0x09, + 0x1b, 0x08, 0x7e, 0x08, 0x17, 0x08, 0x41, 0x08, 0x3e, 0x07, 0x13, 0x06, 0x88, 0x03, 0x1d, 0x00, + 0xbf, 0xfe, 0x11, 0xfd, 0xb4, 0xfc, 0x63, 0xfc, 0xa7, 0xfc, 0x4c, 0xfd, 0xb7, 0xfc, 0x77, 0xfd, + 0xcd, 0xfc, 0x7f, 0xfc, 0x7a, 0xfc, 0x31, 0xfb, 0x34, 0xfc, 0xeb, 0xfd, 0x33, 0x01, 0xcb, 0x04, + 0x86, 0x07, 0xd1, 0x09, 0x23, 0x0b, 0xc9, 0x0b, 0xfb, 0x0c, 0x48, 0x0b, 0xa7, 0x08, 0xb3, 0x05, + 0x2b, 0x04, 0xbc, 0x03, 0x03, 0x02, 0x3a, 0x02, 0x63, 0x02, 0xb3, 0xff, 0xef, 0xfd, 0xe6, 0xfb, + 0xc5, 0xfb, 0xc4, 0xf9, 0x13, 0xf7, 0x40, 0xf7, 0x48, 0xf8, 0x97, 0xf9, 0x62, 0xf9, 0x10, 0xfa, + 0x4e, 0xfa, 0xfc, 0xf7, 0xff, 0xf5, 0x20, 0xf3, 0x51, 0xf2, 0x73, 0xf3, 0xcc, 0xf4, 0x1b, 0xf8, + 0x03, 0xfa, 0x24, 0xfc, 0x76, 0xfd, 0x1b, 0xfe, 0xf3, 0xfe, 0x62, 0xfd, 0x4d, 0xfb, 0x62, 0xf9, + 0xd5, 0xf7, 0x0d, 0xf8, 0xb0, 0xf7, 0xb4, 0xf7, 0x6d, 0xf7, 0x27, 0xf5, 0xbc, 0xf4, 0x19, 0xf5, + 0x41, 0xf6, 0x34, 0xf6, 0x4d, 0xf5, 0x4f, 0xf7, 0x56, 0xfa, 0xab, 0xfd, 0x22, 0x02, 0x4c, 0x05, + 0xe5, 0x07, 0x68, 0x08, 0x45, 0x0a, 0x5e, 0x0b, 0xfa, 0x0a, 0x02, 0x0b, 0x42, 0x0c, 0x13, 0x10, + 0x9d, 0x12, 0xca, 0x14, 0x3d, 0x17, 0x50, 0x17, 0x2d, 0x16, 0x24, 0x12, 0x1a, 0x0e, 0x35, 0x0b, + 0x51, 0x07, 0x04, 0x06, 0x7d, 0x03, 0x91, 0x01, 0xd4, 0xff, 0x30, 0xfd, 0xa6, 0xfa, 0x70, 0xf7, + 0x67, 0xf5, 0x78, 0xf3, 0xaa, 0xf1, 0x0a, 0xf2, 0x7f, 0xf3, 0x91, 0xf5, 0x29, 0xf7, 0x66, 0xf8, + 0x50, 0xf9, 0x32, 0xfa, 0xad, 0xfc, 0x30, 0xfe, 0x2c, 0xfe, 0xd2, 0xff, 0x50, 0x02, 0xbc, 0x05, + 0xb4, 0x09, 0xd5, 0x0c, 0x5d, 0x10, 0xec, 0x10, 0x92, 0x11, 0x3d, 0x11, 0x0c, 0x0f, 0xe2, 0x0b, + 0xdf, 0x06, 0x32, 0x05, 0x3f, 0x03, 0x87, 0x00, 0x83, 0xff, 0xa0, 0xfd, 0x47, 0xfc, 0x94, 0xf8, + 0x9e, 0xf4, 0x25, 0xf3, 0x0b, 0xf0, 0xf8, 0xee, 0x0e, 0xef, 0xe5, 0xf0, 0x0f, 0xf2, 0x8d, 0xf3, + 0xe1, 0xf5, 0x76, 0xf7, 0x6e, 0xf9, 0x0d, 0xfb, 0xc3, 0xfa, 0x2f, 0xfc, 0x5e, 0xfe, 0xe0, 0x01, + 0xfb, 0x05, 0x9b, 0x09, 0x3b, 0x0c, 0x0b, 0x0d, 0xd0, 0x0d, 0xe7, 0x0e, 0xc8, 0x0c, 0x6f, 0x09, + 0x4f, 0x05, 0x14, 0x02, 0x8f, 0x00, 0xc4, 0xfe, 0x56, 0xff, 0xd0, 0xfe, 0x61, 0xfc, 0xed, 0xf9, + 0x0f, 0xf8, 0x2b, 0xf8, 0xb5, 0xf5, 0x73, 0xf3, 0x39, 0xf4, 0x56, 0xf5, 0xc4, 0xf6, 0x64, 0xf7, + 0x8b, 0xfa, 0xbe, 0xfc, 0x10, 0xfc, 0xf2, 0xfc, 0xe7, 0xfc, 0x96, 0xfe, 0x0d, 0x00, 0x02, 0x03, + 0xc1, 0x06, 0xeb, 0x09, 0xa6, 0x0d, 0x3a, 0x10, 0xcd, 0x11, 0x7e, 0x13, 0xdf, 0x11, 0x8a, 0x0f, + 0xf0, 0x0b, 0x58, 0x09, 0x2b, 0x07, 0xb5, 0x04, 0xb6, 0x02, 0xaf, 0x00, 0x4d, 0xfd, 0x57, 0xfb, + 0x20, 0xf9, 0x9f, 0xf7, 0x38, 0xf6, 0x31, 0xf4, 0x1b, 0xf4, 0x54, 0xf4, 0xc5, 0xf5, 0xbf, 0xf7, + 0x34, 0xfa, 0xce, 0xfb, 0xed, 0xfb, 0xbd, 0xfe, 0x59, 0xff, 0xcd, 0xfe, 0x60, 0xff, 0x28, 0x01, + 0x65, 0x05, 0xd5, 0x07, 0xce, 0x0a, 0xbb, 0x0e, 0x2e, 0x10, 0x79, 0x11, 0x5e, 0x0f, 0x69, 0x0d, + 0xb1, 0x09, 0x31, 0x06, 0xff, 0x03, 0x3e, 0x01, 0xcc, 0xfe, 0x59, 0xfc, 0x0f, 0xf9, 0x7c, 0xf6, + 0xee, 0xf2, 0x64, 0xf0, 0x38, 0xee, 0x53, 0xec, 0x85, 0xeb, 0x36, 0xec, 0xf2, 0xed, 0x93, 0xef, + 0x64, 0xf0, 0x03, 0xf2, 0xac, 0xf3, 0x7d, 0xf6, 0x53, 0xf8, 0x10, 0xf9, 0x02, 0xfb, 0x0a, 0xfd, + 0xb9, 0x00, 0xed, 0x04, 0xfc, 0x09, 0xc4, 0x0f, 0xe7, 0x11, 0xf1, 0x14, 0x94, 0x17, 0xc4, 0x17, + 0x57, 0x16, 0x04, 0x13, 0xa7, 0x12, 0x5a, 0x11, 0x6f, 0x0f, 0xd2, 0x0f, 0xa5, 0x0e, 0x2f, 0x0d, + 0x04, 0x08, 0xe4, 0x03, 0xec, 0x00, 0xb1, 0xfc, 0xd3, 0xf9, 0xc8, 0xf7, 0x44, 0xf7, 0xc2, 0xf6, + 0xb5, 0xf5, 0x4f, 0xf6, 0xb9, 0xf5, 0x2f, 0xf6, 0x4e, 0xf5, 0xcb, 0xf3, 0x0e, 0xf4, 0x57, 0xf5, + 0xc3, 0xf7, 0xac, 0xfb, 0xda, 0xfe, 0x89, 0x01, 0xe7, 0x02, 0x0b, 0x05, 0xf2, 0x06, 0x76, 0x06, + 0xe1, 0x05, 0xec, 0x03, 0xe4, 0x02, 0x4f, 0x02, 0x53, 0x01, 0x97, 0x03, 0x4d, 0x04, 0x56, 0x03, + 0xb0, 0x02, 0x92, 0x01, 0xac, 0x01, 0x16, 0xff, 0xe4, 0xfc, 0x2d, 0xfc, 0xa7, 0xfb, 0x45, 0xfb, + 0xab, 0xfa, 0xab, 0xfc, 0x9b, 0xfc, 0xa0, 0xfb, 0x39, 0xfb, 0x5b, 0xf9, 0x38, 0xf8, 0xcc, 0xf7, + 0x2b, 0xf9, 0x26, 0xfc, 0x1c, 0xfe, 0x33, 0x01, 0x28, 0x03, 0xc0, 0x05, 0x85, 0x07, 0x3c, 0x07, + 0x43, 0x05, 0x5d, 0x02, 0xe8, 0xff, 0xb1, 0xfe, 0x12, 0xfe, 0x67, 0xfe, 0x83, 0xfd, 0xc6, 0xfc, + 0x57, 0xfc, 0xf7, 0xfa, 0x03, 0xfb, 0xb3, 0xfa, 0xc4, 0xf9, 0x20, 0xf9, 0xec, 0xf8, 0x0f, 0xfb, + 0xb7, 0xfd, 0xe2, 0xff, 0x07, 0x01, 0xef, 0x00, 0xf7, 0x02, 0x24, 0x02, 0xf4, 0x00, 0xe0, 0x00, + 0x01, 0x02, 0xa6, 0x04, 0xb8, 0x05, 0x1e, 0x09, 0x4a, 0x0c, 0xad, 0x0d, 0xbe, 0x0e, 0xb9, 0x0d, + 0xbb, 0x0c, 0x94, 0x09, 0x49, 0x06, 0x83, 0x04, 0x08, 0x02, 0xba, 0x00, 0x28, 0xff, 0xf2, 0xfd, + 0xe7, 0xfc, 0x16, 0xfb, 0x0d, 0xfa, 0xbd, 0xf8, 0x4a, 0xf7, 0xfd, 0xf6, 0xec, 0xf7, 0x3d, 0xfa, + 0xba, 0xfb, 0xf3, 0xfc, 0x0b, 0xff, 0x3f, 0x00, 0x0c, 0x02, 0x56, 0x02, 0x6e, 0x02, 0x7c, 0x03, + 0x8c, 0x03, 0x9b, 0x04, 0x01, 0x07, 0xd5, 0x09, 0xea, 0x0c, 0x22, 0x0d, 0x79, 0x0f, 0x8e, 0x10, + 0x55, 0x0f, 0x1a, 0x0c, 0xe7, 0x07, 0x02, 0x06, 0x2c, 0x02, 0x26, 0xff, 0xe3, 0xfd, 0xca, 0xfb, + 0x84, 0xfa, 0x5d, 0xf6, 0x41, 0xf3, 0xa0, 0xf0, 0x56, 0xed, 0x68, 0xeb, 0xfc, 0xe9, 0xc5, 0xea, + 0x18, 0xeb, 0x25, 0xec, 0x8d, 0xee, 0x83, 0xf0, 0x6d, 0xf2, 0xd3, 0xf3, 0x83, 0xf4, 0x75, 0xf5, + 0xfe, 0xf6, 0xd4, 0xfa, 0xcd, 0xfe, 0xa1, 0x01, 0x6c, 0x04, 0x0a, 0x06, 0x72, 0x08, 0x40, 0x0a, + 0x20, 0x0a, 0xc2, 0x09, 0xed, 0x07, 0xf6, 0x04, 0xed, 0x02, 0x23, 0x01, 0x65, 0x02, 0xab, 0x01, + 0x15, 0x01, 0x6a, 0x00, 0xdc, 0xff, 0x79, 0xff, 0xf0, 0xfd, 0x15, 0xfd, 0xa0, 0xfc, 0x49, 0xfc, + 0x7a, 0xfd, 0x42, 0xff, 0x47, 0x03, 0x98, 0x04, 0xc2, 0x05, 0x91, 0x06, 0x31, 0x06, 0x86, 0x06, + 0xbe, 0x06, 0x40, 0x09, 0xec, 0x0b, 0x4f, 0x0e, 0xe8, 0x10, 0x74, 0x12, 0x50, 0x14, 0xee, 0x14, + 0x83, 0x13, 0xcd, 0x10, 0xf3, 0x0b, 0x38, 0x08, 0x2f, 0x06, 0x60, 0x03, 0x4f, 0x01, 0x1f, 0xfe, + 0x8c, 0xfb, 0x36, 0xf9, 0xf0, 0xf5, 0xef, 0xf3, 0xca, 0xf2, 0x73, 0xf1, 0xbc, 0xef, 0x70, 0xee, + 0x82, 0xf0, 0xb0, 0xf1, 0x51, 0xf4, 0x2c, 0xf6, 0x51, 0xf8, 0x4d, 0xfb, 0x3e, 0xfc, 0x41, 0xfd, + 0xf3, 0xfe, 0xf1, 0x00, 0x10, 0x04, 0x5a, 0x06, 0x3a, 0x0b, 0x92, 0x0e, 0x34, 0x11, 0x42, 0x13, + 0x56, 0x13, 0x82, 0x12, 0x76, 0x0e, 0x8b, 0x0a, 0xab, 0x07, 0xe7, 0x03, 0xbd, 0x00, 0x39, 0xfd, + 0x48, 0xfb, 0x94, 0xf9, 0x41, 0xf6, 0x2d, 0xf4, 0x85, 0xf1, 0xf2, 0xed, 0x79, 0xeb, 0x7e, 0xea, + 0xd0, 0xea, 0x5a, 0xeb, 0x6c, 0xec, 0x78, 0xee, 0xd3, 0xef, 0x61, 0xf1, 0x99, 0xf2, 0xda, 0xf3, + 0xbd, 0xf5, 0x1b, 0xf6, 0x86, 0xf9, 0xdd, 0xfd, 0x6a, 0x03, 0x32, 0x08, 0x07, 0x0c, 0x18, 0x11, + 0x46, 0x14, 0xfe, 0x14, 0x8f, 0x14, 0xa3, 0x12, 0x3e, 0x12, 0xbb, 0x0e, 0x74, 0x0c, 0xb9, 0x0a, + 0x46, 0x09, 0xb0, 0x07, 0xd8, 0x03, 0xf5, 0x00, 0x2a, 0xfe, 0x08, 0xfb, 0x25, 0xf8, 0xf0, 0xf5, + 0x90, 0xf5, 0x2c, 0xf4, 0xd2, 0xf3, 0x57, 0xf5, 0xfa, 0xf5, 0x73, 0xf7, 0xa7, 0xf8, 0x63, 0xf8, + 0xec, 0xf7, 0xa9, 0xf8, 0x2b, 0xfb, 0x53, 0xfe, 0x26, 0x01, 0x16, 0x04, 0x0a, 0x07, 0x6b, 0x0a, + 0x94, 0x0c, 0xad, 0x0d, 0x22, 0x0f, 0xe6, 0x0d, 0xd6, 0x0c, 0x54, 0x0b, 0xd0, 0x0a, 0x83, 0x0a, + 0xdc, 0x08, 0x36, 0x08, 0x27, 0x07, 0x0c, 0x05, 0x2f, 0x03, 0x50, 0x00, 0x7c, 0xfe, 0x36, 0xfb, + 0x51, 0xf9, 0x0b, 0xf8, 0x6a, 0xf7, 0xe0, 0xf8, 0x66, 0xf8, 0x6a, 0xf8, 0x09, 0xf8, 0xd1, 0xf6, + 0x89, 0xf5, 0xc8, 0xf3, 0xf6, 0xf4, 0xfc, 0xf5, 0x74, 0xf7, 0x32, 0xfa, 0x77, 0xfc, 0x69, 0xff, + 0x3c, 0x01, 0x49, 0x03, 0x66, 0x03, 0xb7, 0x01, 0x26, 0x01, 0x55, 0x01, 0xf9, 0x00, 0xed, 0x00, + 0x5d, 0x00, 0x39, 0x01, 0x48, 0x01, 0xc3, 0xff, 0xa8, 0xff, 0x8d, 0xff, 0xff, 0xfe, 0xd6, 0xfc, + 0xa4, 0xfb, 0xe1, 0xfc, 0x15, 0xfd, 0x7c, 0xfe, 0x53, 0x00, 0xf3, 0x01, 0xce, 0x03, 0x64, 0x03, + 0x9f, 0x04, 0xa4, 0x04, 0x64, 0x05, 0x9f, 0x06, 0xdb, 0x07, 0x01, 0x0c, 0xe0, 0x0e, 0x55, 0x11, + 0x21, 0x13, 0x0c, 0x13, 0x48, 0x12, 0x52, 0x0e, 0x6a, 0x0b, 0x99, 0x09, 0x67, 0x06, 0x00, 0x04, + 0x34, 0x01, 0x5b, 0x00, 0xa8, 0xfe, 0x9b, 0xfc, 0x06, 0xfb, 0x27, 0xf9, 0xb3, 0xf6, 0x08, 0xf5, + 0x84, 0xf4, 0x73, 0xf5, 0xe6, 0xf4, 0x16, 0xf5, 0x56, 0xf6, 0x37, 0xf6, 0x6a, 0xf6, 0x4a, 0xf6, + 0x64, 0xf6, 0x48, 0xf6, 0x41, 0xf5, 0x23, 0xf7, 0x9c, 0xf9, 0x84, 0xfc, 0x5f, 0xff, 0x81, 0x02, + 0xef, 0x06, 0x76, 0x08, 0x29, 0x0a, 0x11, 0x0a, 0x8e, 0x08, 0x52, 0x07, 0x0e, 0x04, 0x68, 0x02, + 0x19, 0x01, 0x20, 0x00, 0x79, 0xff, 0xd5, 0xfd, 0x98, 0xfc, 0x84, 0xfa, 0x89, 0xf8, 0x30, 0xf7, + 0xf0, 0xf5, 0x42, 0xf6, 0x96, 0xf5, 0x84, 0xf6, 0xb1, 0xf7, 0x2e, 0xf9, 0xeb, 0xfa, 0x3a, 0xfc, + 0xfc, 0xfb, 0xe2, 0xfa, 0xab, 0xf9, 0x09, 0xfb, 0xea, 0xfb, 0x9e, 0xfd, 0x5b, 0x00, 0x5b, 0x03, + 0xe3, 0x05, 0x83, 0x07, 0xf9, 0x08, 0x8c, 0x09, 0x2f, 0x07, 0x42, 0x05, 0x06, 0x03, 0x04, 0x02, + 0xff, 0x00, 0x6d, 0xff, 0xa0, 0x00, 0x09, 0x00, 0xa2, 0xfe, 0xf4, 0xfc, 0xb2, 0xfb, 0xe2, 0xfb, + 0x50, 0xfa, 0xfe, 0xf9, 0x24, 0xfa, 0x49, 0xfb, 0xdc, 0xfd, 0x37, 0xff, 0xaf, 0x01, 0x46, 0x03, + 0x56, 0x03, 0x78, 0x03, 0x18, 0x03, 0x84, 0x04, 0xf8, 0x04, 0x98, 0x06, 0xf5, 0x07, 0x29, 0x09, + 0x3d, 0x0b, 0xad, 0x0c, 0xa2, 0x0d, 0x57, 0x0d, 0xd9, 0x09, 0x32, 0x08, 0x74, 0x06, 0x10, 0x04, + 0x3e, 0x01, 0x32, 0xff, 0xa5, 0xfe, 0x5a, 0xfd, 0x32, 0xfb, 0x6a, 0xfa, 0xe4, 0xf8, 0xd5, 0xf7, + 0xa5, 0xf5, 0x51, 0xf5, 0x69, 0xf6, 0xd7, 0xf5, 0x9e, 0xf7, 0xda, 0xf9, 0x51, 0xfc, 0xc5, 0xfe, + 0x8f, 0xff, 0x9d, 0x01, 0x6a, 0x02, 0x43, 0x03, 0x78, 0x04, 0x97, 0x05, 0xc8, 0x08, 0x9c, 0x0a, + 0xbc, 0x0c, 0x4f, 0x0e, 0x3f, 0x0e, 0xdc, 0x0d, 0x53, 0x0a, 0x8a, 0x07, 0x9e, 0x03, 0xce, 0xff, + 0xaa, 0xfc, 0x13, 0xf9, 0xa9, 0xf6, 0x1b, 0xf5, 0xf9, 0xf2, 0x4d, 0xf1, 0x94, 0xee, 0xe4, 0xec, + 0x92, 0xeb, 0xbf, 0xeb, 0x2e, 0xec, 0x4d, 0xec, 0xd1, 0xed, 0x3e, 0xf0, 0xa3, 0xf1, 0x2d, 0xf4, + 0x4f, 0xf6, 0x18, 0xf9, 0x82, 0xfa, 0x84, 0xfb, 0x4a, 0xff, 0x86, 0x02, 0xc5, 0x06, 0xdf, 0x0a, + 0xe5, 0x0f, 0xf6, 0x14, 0x73, 0x17, 0xc2, 0x19, 0x67, 0x1a, 0xff, 0x18, 0x64, 0x17, 0xb1, 0x13, + 0x59, 0x11, 0xab, 0x0e, 0xfb, 0x0c, 0x26, 0x0c, 0xee, 0x09, 0xfe, 0x06, 0x3f, 0x02, 0x36, 0xff, + 0x24, 0xfc, 0x55, 0xf9, 0x02, 0xf8, 0x9a, 0xf6, 0xe0, 0xf5, 0x1e, 0xf6, 0x7d, 0xf6, 0xd9, 0xf7, + 0x52, 0xf8, 0x38, 0xf8, 0x0b, 0xf7, 0x7b, 0xf7, 0xdb, 0xf9, 0xfe, 0xfb, 0xd5, 0xfe, 0x42, 0x02, + 0xf1, 0x04, 0x4c, 0x08, 0xf3, 0x0a, 0x18, 0x0e, 0x89, 0x0f, 0xcf, 0x0d, 0xe5, 0x0c, 0x2a, 0x0b, + 0x81, 0x09, 0xda, 0x06, 0xba, 0x04, 0xf2, 0x04, 0xa0, 0x03, 0x95, 0x01, 0x58, 0xff, 0x58, 0xfd, + 0x52, 0xfc, 0x61, 0xf9, 0x78, 0xf8, 0x1c, 0xf7, 0xc8, 0xf6, 0x6a, 0xf7, 0xb6, 0xf7, 0xa9, 0xf9, + 0xdd, 0xf9, 0xb4, 0xf9, 0x30, 0xf9, 0x2b, 0xf8, 0xb6, 0xf8, 0x24, 0xf9, 0xe8, 0xfa, 0x95, 0xfc, + 0x1e, 0xfe, 0xaa, 0x01, 0x8a, 0x04, 0xa2, 0x07, 0xf2, 0x08, 0x2c, 0x08, 0x0c, 0x08, 0xfb, 0x06, + 0xcd, 0x04, 0x3a, 0x03, 0xaa, 0x01, 0x45, 0x01, 0xf7, 0xff, 0x26, 0xfe, 0x5e, 0xfd, 0xdb, 0xfa, + 0x77, 0xf8, 0xa9, 0xf5, 0x38, 0xf4, 0x41, 0xf3, 0xa5, 0xf1, 0x86, 0xf2, 0x93, 0xf4, 0x83, 0xf6, + 0x22, 0xf8, 0x41, 0xf8, 0xf1, 0xf9, 0x57, 0xfa, 0x8e, 0xfb, 0x86, 0xfc, 0x53, 0xfe, 0x26, 0x01, + 0x84, 0x03, 0x19, 0x07, 0xef, 0x09, 0xde, 0x0b, 0xa6, 0x0d, 0xe7, 0x0c, 0xab, 0x0c, 0x9a, 0x0b, + 0xe5, 0x09, 0x83, 0x08, 0x2c, 0x06, 0x33, 0x05, 0xf9, 0x04, 0xb0, 0x04, 0x48, 0x03, 0xe9, 0x00, + 0x6f, 0xff, 0x18, 0xfe, 0x93, 0xfc, 0xb5, 0xfb, 0x42, 0xfa, 0xeb, 0xf9, 0x16, 0xfa, 0xbd, 0xf9, + 0x5b, 0xfb, 0xbb, 0xfc, 0x35, 0xfd, 0x0d, 0xfc, 0x33, 0xfc, 0xb4, 0xfd, 0xc0, 0xfe, 0x77, 0x00, + 0x85, 0x02, 0x40, 0x05, 0x8d, 0x08, 0x36, 0x0a, 0x03, 0x0d, 0x96, 0x0d, 0x72, 0x0d, 0xdd, 0x0b, + 0xb4, 0x09, 0xda, 0x07, 0x5c, 0x05, 0x29, 0x04, 0xe9, 0x03, 0xaa, 0x02, 0x8a, 0x01, 0xa1, 0xfe, + 0x53, 0xfd, 0x7e, 0xfb, 0xcf, 0xf8, 0x45, 0xf7, 0xba, 0xf5, 0xc1, 0xf4, 0x90, 0xf3, 0xce, 0xf3, + 0xe3, 0xf4, 0xbd, 0xf4, 0xf8, 0xf3, 0x1b, 0xf3, 0xef, 0xf2, 0x03, 0xf4, 0x18, 0xf5, 0x2a, 0xf7, + 0xcd, 0xf9, 0x64, 0xfb, 0x12, 0xfe, 0xba, 0x00, 0xb3, 0x04, 0x83, 0x06, 0xfe, 0x05, 0x50, 0x06, + 0x39, 0x05, 0xe8, 0x03, 0x27, 0x02, 0xd8, 0x00, 0x94, 0x02, 0xa2, 0x02, 0x64, 0x03, 0xca, 0x02, + 0x56, 0x03, 0xe4, 0x03, 0x01, 0x03, 0x73, 0x03, 0xad, 0x03, 0x91, 0x03, 0x6b, 0x05, 0xc4, 0x06, + 0x2d, 0x09, 0x1d, 0x09, 0x50, 0x08, 0xca, 0x06, 0x18, 0x05, 0x4f, 0x04, 0x3b, 0x03, 0x97, 0x03, + 0xe8, 0x03, 0xe5, 0x03, 0x78, 0x05, 0xc7, 0x06, 0x72, 0x07, 0x01, 0x07, 0x23, 0x05, 0xd2, 0x03, + 0xc2, 0x01, 0x92, 0xff, 0x17, 0xfe, 0xd5, 0xfb, 0x22, 0xfa, 0x80, 0xf8, 0xcb, 0xf7, 0x12, 0xf7, + 0x2a, 0xf5, 0xc9, 0xf3, 0xcf, 0xf2, 0x85, 0xf2, 0x52, 0xf2, 0x8d, 0xf1, 0xaf, 0xf3, 0x2a, 0xf6, + 0xbb, 0xf9, 0x3b, 0xfc, 0x56, 0xfe, 0x83, 0x00, 0x0e, 0x01, 0xa9, 0x01, 0xf1, 0x02, 0xaa, 0x03, + 0x0e, 0x05, 0xd1, 0x05, 0x6c, 0x08, 0xbd, 0x09, 0xfc, 0x0a, 0xb1, 0x0b, 0x33, 0x0a, 0xa8, 0x08, + 0xd3, 0x05, 0x16, 0x03, 0x41, 0x00, 0x5b, 0xfc, 0xb3, 0xf9, 0x02, 0xf9, 0x5c, 0xf8, 0x2a, 0xf7, + 0xd5, 0xf4, 0x00, 0xf4, 0xf1, 0xf2, 0x55, 0xf1, 0x92, 0xf0, 0x93, 0xf0, 0x61, 0xf1, 0x77, 0xf2, + 0x30, 0xf4, 0xbd, 0xf7, 0xf5, 0xfa, 0x34, 0xfd, 0x0f, 0xfe, 0xf0, 0xff, 0x5b, 0x02, 0x29, 0x03, + 0x8b, 0x05, 0xdb, 0x07, 0xda, 0x0b, 0x03, 0x0f, 0xf6, 0x10, 0xd2, 0x13, 0x31, 0x14, 0x95, 0x13, + 0xa8, 0x11, 0x1d, 0x0f, 0x76, 0x0d, 0xb7, 0x09, 0xff, 0x07, 0xc8, 0x06, 0x81, 0x05, 0xec, 0x03, + 0x7e, 0x00, 0xaa, 0xfe, 0xcf, 0xfc, 0xdf, 0xfa, 0xbd, 0xf9, 0x1b, 0xf8, 0x04, 0xf7, 0x43, 0xf6, + 0x1e, 0xf7, 0x17, 0xf9, 0xda, 0xf9, 0x95, 0xfa, 0x10, 0xfb, 0x13, 0xfc, 0x38, 0xfd, 0xd7, 0xfe, + 0xe9, 0x01, 0xe6, 0x04, 0xd2, 0x06, 0xc1, 0x09, 0xa9, 0x0c, 0x88, 0x10, 0xd5, 0x11, 0xae, 0x10, + 0x1a, 0x10, 0x58, 0x0e, 0x23, 0x0c, 0x48, 0x08, 0x40, 0x05, 0x46, 0x04, 0x29, 0x02, 0xaa, 0x00, + 0x77, 0xfe, 0x76, 0xfc, 0x81, 0xfa, 0x9c, 0xf7, 0xa9, 0xf6, 0x81, 0xf4, 0x23, 0xf3, 0xf0, 0xf2, + 0x1e, 0xf3, 0xa4, 0xf4, 0xb7, 0xf4, 0x14, 0xf5, 0x82, 0xf4, 0xc5, 0xf3, 0x5e, 0xf4, 0xd2, 0xf4, + 0x77, 0xf6, 0xcd, 0xf7, 0x41, 0xf9, 0x27, 0xfd, 0x80, 0x00, 0x9c, 0x03, 0x38, 0x05, 0x39, 0x06, + 0xa3, 0x06, 0xca, 0x05, 0xd6, 0x04, 0xa2, 0x04, 0x5d, 0x02, 0x79, 0x00, 0x89, 0xfe, 0x1d, 0xfe, + 0x6a, 0xfd, 0x52, 0xfb, 0x09, 0xfa, 0xe6, 0xf8, 0x79, 0xf8, 0x5c, 0xf7, 0x88, 0xf5, 0x4e, 0xf6, + 0x32, 0xf7, 0x30, 0xf9, 0x1b, 0xfb, 0x9a, 0xfd, 0xe9, 0xff, 0xf6, 0xff, 0x42, 0x01, 0x22, 0x02, + 0x5a, 0x03, 0xce, 0x04, 0xd3, 0x06, 0x2c, 0x0b, 0x33, 0x0e, 0x24, 0x11, 0x1a, 0x13, 0x18, 0x13, + 0xb7, 0x12, 0xc9, 0x11, 0x95, 0x10, 0x8d, 0x0e, 0x40, 0x0b, 0x30, 0x09, 0xa2, 0x07, 0xda, 0x06, + 0x4a, 0x04, 0x29, 0x01, 0x26, 0xfe, 0x4c, 0xfb, 0x49, 0xf8, 0xf8, 0xf6, 0xae, 0xf5, 0xe9, 0xf4, + 0xf6, 0xf2, 0xeb, 0xf2, 0xea, 0xf3, 0xa3, 0xf4, 0x46, 0xf5, 0xe1, 0xf4, 0x9b, 0xf5, 0xdc, 0xf6, + 0xb9, 0xf6, 0x56, 0xf8, 0x0f, 0xfa, 0x7f, 0xfd, 0x9c, 0x00, 0x04, 0x03, 0xa8, 0x07, 0x85, 0x09, + 0xea, 0x0a, 0x3a, 0x0b, 0xdd, 0x0a, 0xbe, 0x0a, 0x94, 0x08, 0x09, 0x08, 0x05, 0x08, 0x18, 0x08, + 0xb2, 0x07, 0x9a, 0x05, 0xa2, 0x03, 0x07, 0x01, 0xee, 0xfe, 0x86, 0xfd, 0xc1, 0xfa, 0x56, 0xf8, + 0x66, 0xf6, 0x8d, 0xf6, 0xe6, 0xf6, 0xce, 0xf6, 0x33, 0xf7, 0x63, 0xf7, 0xbe, 0xf6, 0x95, 0xf6, + 0x9e, 0xf6, 0x91, 0xf8, 0x71, 0xf9, 0x82, 0xfa, 0xf2, 0xfc, 0x81, 0xff, 0xe8, 0x02, 0xcd, 0x04, + 0xce, 0x04, 0x77, 0x05, 0x21, 0x04, 0x99, 0x02, 0xae, 0x00, 0x43, 0xff, 0x5e, 0xff, 0x00, 0xff, + 0x5e, 0x00, 0x93, 0x00, 0xdd, 0x00, 0xde, 0x00, 0xd6, 0xff, 0x0e, 0x00, 0x30, 0xff, 0x88, 0xfe, + 0x45, 0xfe, 0x8c, 0xfe, 0xa2, 0xff, 0xb8, 0xff, 0xab, 0x00, 0xaa, 0xff, 0xb8, 0xfe, 0x32, 0xff, + 0x51, 0xff, 0xa3, 0xff, 0x27, 0xff, 0xd4, 0xff, 0xd6, 0x01, 0x5d, 0x03, 0xd6, 0x04, 0x8c, 0x06, + 0x1d, 0x07, 0x14, 0x07, 0x57, 0x05, 0x82, 0x04, 0x37, 0x03, 0xcd, 0x00, 0xd7, 0xfe, 0xfa, 0xfd, + 0x2b, 0xfe, 0x0e, 0xfe, 0x16, 0xfd, 0x17, 0xfd, 0xb5, 0xfc, 0x5b, 0xfd, 0x03, 0xfd, 0xbf, 0xfc, + 0xc6, 0xfd, 0x10, 0xfe, 0xb6, 0xff, 0xf6, 0x00, 0xc4, 0x02, 0x24, 0x04, 0xeb, 0x03, 0x57, 0x04, + 0xe4, 0x03, 0x97, 0x03, 0xcf, 0x03, 0x0a, 0x04, 0x3a, 0x06, 0x15, 0x07, 0xa0, 0x08, 0xba, 0x09, + 0x03, 0x09, 0x99, 0x07, 0xa4, 0x05, 0x1e, 0x04, 0x1e, 0x01, 0xf0, 0xfc, 0x28, 0xfa, 0x97, 0xf8, + 0xb2, 0xf7, 0xf2, 0xf5, 0x9d, 0xf3, 0x6e, 0xf2, 0xc0, 0xf0, 0xd4, 0xef, 0x69, 0xf0, 0xf4, 0xf0, + 0x8e, 0xf1, 0x25, 0xf2, 0x2c, 0xf4, 0x37, 0xf7, 0x67, 0xf9, 0x31, 0xfc, 0xd3, 0xfd, 0xc0, 0xff, + 0x67, 0x01, 0xce, 0x01, 0xba, 0x03, 0x99, 0x04, 0xf7, 0x06, 0xf0, 0x08, 0x1d, 0x0b, 0x98, 0x0e, + 0x78, 0x10, 0x78, 0x11, 0xcf, 0x10, 0x51, 0x0f, 0xb7, 0x0d, 0x4c, 0x0a, 0x82, 0x08, 0x3d, 0x07, + 0x18, 0x07, 0x65, 0x06, 0x46, 0x04, 0x88, 0x01, 0x3f, 0xfe, 0x23, 0xfc, 0xc7, 0xfa, 0xae, 0xf8, + 0xfe, 0xf6, 0x83, 0xf6, 0x92, 0xf7, 0xa7, 0xf8, 0xc4, 0xf9, 0x50, 0xfb, 0x20, 0xfc, 0x40, 0xfc, + 0xff, 0xfc, 0x4e, 0xfe, 0x44, 0x00, 0x7a, 0x01, 0x55, 0x02, 0xc9, 0x04, 0x3c, 0x06, 0x0c, 0x08, + 0x0f, 0x09, 0x9f, 0x09, 0x82, 0x09, 0x20, 0x07, 0x20, 0x05, 0x5f, 0x02, 0x66, 0x00, 0x4b, 0xfe, + 0xcf, 0xfc, 0xe8, 0xfc, 0xed, 0xfb, 0x1c, 0xfb, 0x6e, 0xfa, 0x4b, 0xf9, 0xbd, 0xf8, 0xe8, 0xf6, + 0x3f, 0xf6, 0xb7, 0xf5, 0x94, 0xf6, 0x27, 0xf8, 0xde, 0xf9, 0xb4, 0xfb, 0xf8, 0xfb, 0x04, 0xfc, + 0x78, 0xfd, 0x81, 0xfe, 0x73, 0xff, 0x2d, 0x00, 0xdf, 0x01, 0x73, 0x04, 0x58, 0x06, 0x97, 0x08, + 0xe1, 0x0a, 0xe2, 0x0b, 0x91, 0x0b, 0x2d, 0x0a, 0xca, 0x08, 0x38, 0x07, 0xc2, 0x03, 0xb8, 0x00, + 0xc9, 0xfe, 0x4b, 0xfe, 0xf2, 0xfc, 0xee, 0xfa, 0x0f, 0xfa, 0x2b, 0xf8, 0x19, 0xf7, 0x72, 0xf5, + 0xac, 0xf4, 0x4a, 0xf4, 0x3b, 0xf4, 0x8b, 0xf5, 0x34, 0xf7, 0xeb, 0xf9, 0x5e, 0xfc, 0x61, 0xfd, + 0x41, 0xff, 0xf1, 0xff, 0x0d, 0x02, 0x92, 0x03, 0xdf, 0x05, 0x3c, 0x09, 0x5b, 0x0c, 0x18, 0x10, + 0xf4, 0x12, 0xe8, 0x13, 0x75, 0x14, 0xd3, 0x13, 0x97, 0x13, 0x31, 0x11, 0xfe, 0x0d, 0x16, 0x0b, + 0x7b, 0x08, 0x4a, 0x06, 0xdd, 0x03, 0x13, 0x01, 0x33, 0xfe, 0x1e, 0xfb, 0xef, 0xf8, 0xe8, 0xf7, + 0x5e, 0xf6, 0x26, 0xf5, 0x8d, 0xf3, 0xd7, 0xf3, 0xf2, 0xf4, 0x99, 0xf5, 0xb2, 0xf7, 0xb2, 0xf8, + 0x2a, 0xfa, 0xa2, 0xfa, 0xf6, 0xfa, 0xb7, 0xfc, 0xcb, 0xfd, 0xec, 0xff, 0x03, 0x02, 0x71, 0x04, + 0x2e, 0x08, 0xa8, 0x0a, 0xac, 0x0d, 0x4f, 0x0e, 0x6d, 0x0e, 0x38, 0x0d, 0x0f, 0x0b, 0x30, 0x09, + 0x16, 0x07, 0xfe, 0x05, 0xe5, 0x04, 0x0b, 0x02, 0x22, 0xff, 0x4a, 0xfb, 0x60, 0xf8, 0x0a, 0xf6, + 0x4b, 0xf3, 0x4d, 0xf0, 0x8b, 0xee, 0xc9, 0xed, 0x5c, 0xed, 0xc8, 0xed, 0x66, 0xee, 0x82, 0xee, + 0x3d, 0xee, 0x6d, 0xef, 0xe1, 0xf0, 0x1b, 0xf3, 0x33, 0xf4, 0xe7, 0xf5, 0x34, 0xf9, 0xdc, 0xfb, + 0xde, 0xfe, 0x70, 0x01, 0xbd, 0x04, 0x13, 0x07, 0x89, 0x07, 0x6e, 0x08, 0x4b, 0x08, 0x1a, 0x08, + 0x08, 0x07, 0xa3, 0x06, 0x20, 0x08, 0x9a, 0x07, 0x16, 0x08, 0x71, 0x07, 0x9d, 0x06, 0x8d, 0x05, + 0xa3, 0x03, 0x28, 0x02, 0x7c, 0x00, 0xf3, 0xff, 0xea, 0x00, 0x10, 0x02, 0x55, 0x03, 0x05, 0x03, + 0x89, 0x02, 0x19, 0x02, 0x69, 0x01, 0xd5, 0x00, 0x83, 0x00, 0x0d, 0x01, 0x36, 0x02, 0x28, 0x03, + 0xe6, 0x04, 0xa3, 0x06, 0xd7, 0x06, 0x5f, 0x06, 0x51, 0x05, 0xbf, 0x05, 0xbf, 0x04, 0xe6, 0x02, + 0x1a, 0x01, 0xf1, 0xff, 0xe8, 0xff, 0x95, 0xfe, 0xce, 0xfd, 0xcc, 0xfd, 0x8f, 0xfc, 0x2e, 0xfc, + 0xe1, 0xfa, 0x20, 0xfa, 0x8d, 0xf9, 0x5d, 0xf8, 0x0f, 0xf9, 0x5c, 0xf9, 0xca, 0xfa, 0x97, 0xfc, + 0xb5, 0xfd, 0x75, 0xff, 0x6f, 0xff, 0xcf, 0xff, 0x26, 0x00, 0x27, 0x00, 0x8c, 0x01, 0x50, 0x03, + 0xe3, 0x05, 0x82, 0x07, 0x3f, 0x08, 0xa2, 0x08, 0x8d, 0x08, 0xce, 0x07, 0x64, 0x05, 0xcd, 0x02, + 0x46, 0x00, 0x12, 0xfe, 0xd1, 0xfc, 0xab, 0xfc, 0x65, 0xfb, 0x41, 0xfa, 0x15, 0xf8, 0x09, 0xf8, + 0xcf, 0xf8, 0x84, 0xf8, 0x8e, 0xf7, 0xc8, 0xf6, 0x44, 0xf7, 0x99, 0xf8, 0xa2, 0xf9, 0x9f, 0xfb, + 0x97, 0xfc, 0x0d, 0xfe, 0x1f, 0xfe, 0xa7, 0xfe, 0x40, 0x00, 0x91, 0xff, 0xcd, 0x00, 0xbc, 0x01, + 0x4c, 0x03, 0x8a, 0x05, 0x56, 0x07, 0x3a, 0x0a, 0x4c, 0x0b, 0x51, 0x0b, 0xab, 0x0a, 0xf1, 0x08, + 0x35, 0x07, 0xee, 0x04, 0x21, 0x04, 0xaf, 0x03, 0x99, 0x01, 0x0a, 0xff, 0xf2, 0xfc, 0x82, 0xfb, + 0xd5, 0xf9, 0x2f, 0xf9, 0xfc, 0xf7, 0x40, 0xf7, 0x2f, 0xf7, 0x0a, 0xf8, 0xc1, 0xf9, 0xc4, 0xfb, + 0x29, 0xfc, 0xb4, 0xfc, 0x6a, 0xfd, 0x76, 0xfe, 0xaa, 0xff, 0x64, 0x00, 0xe6, 0x00, 0xb4, 0x02, + 0xde, 0x03, 0xd2, 0x05, 0x63, 0x07, 0x87, 0x09, 0x62, 0x0a, 0xb6, 0x09, 0x8c, 0x09, 0x46, 0x08, + 0xfe, 0x06, 0xa1, 0x04, 0xd2, 0x02, 0xe7, 0x02, 0x3c, 0x01, 0xde, 0x00, 0xf6, 0xff, 0x0c, 0xff, + 0xe9, 0xfd, 0xd4, 0xfb, 0x59, 0xfa, 0xcd, 0xf8, 0xf5, 0xf7, 0xeb, 0xf8, 0x2a, 0xfa, 0x80, 0xfb, + 0x14, 0xfc, 0x31, 0xfd, 0x67, 0xfd, 0x22, 0xfd, 0x67, 0xfd, 0x6a, 0xfd, 0xd7, 0xfd, 0xf8, 0xfe, + 0x59, 0x00, 0xc6, 0x02, 0x88, 0x04, 0x3a, 0x05, 0xfc, 0x04, 0x0c, 0x05, 0xae, 0x05, 0x43, 0x04, + 0x84, 0x02, 0x23, 0x01, 0x65, 0xff, 0x6c, 0xff, 0x39, 0xfe, 0x2b, 0xfd, 0x69, 0xfc, 0x00, 0xfb, + 0x1c, 0xfa, 0x33, 0xf9, 0x82, 0xf8, 0xb9, 0xf7, 0xe1, 0xf6, 0xbe, 0xf7, 0x6a, 0xf8, 0x5e, 0xfa, + 0x50, 0xfd, 0xbd, 0xff, 0xf8, 0x01, 0x13, 0x03, 0x71, 0x04, 0xf8, 0x04, 0xb7, 0x05, 0x9c, 0x07, + 0x28, 0x0a, 0x99, 0x0d, 0x74, 0x0f, 0x14, 0x11, 0x66, 0x12, 0x02, 0x12, 0x75, 0x10, 0x6a, 0x0e, + 0x6a, 0x0c, 0x8a, 0x09, 0xdb, 0x05, 0xae, 0x03, 0x9b, 0x02, 0x99, 0x00, 0x55, 0xfd, 0x30, 0xf9, + 0xce, 0xf6, 0xb6, 0xf5, 0x2d, 0xf3, 0xa7, 0xf1, 0x4e, 0xf0, 0x71, 0xf0, 0xbe, 0xf0, 0x2d, 0xf1, + 0x02, 0xf3, 0xdc, 0xf4, 0xc0, 0xf6, 0x5d, 0xf7, 0x51, 0xf8, 0xf5, 0xf9, 0xb1, 0xfa, 0x11, 0xfd, + 0x6b, 0xff, 0x1b, 0x02, 0x27, 0x05, 0x59, 0x08, 0x20, 0x0c, 0x19, 0x0e, 0x43, 0x0f, 0xb2, 0x0e, + 0x00, 0x0d, 0xdc, 0x0a, 0x48, 0x08, 0x92, 0x07, 0x11, 0x07, 0xc4, 0x04, 0xac, 0x02, 0xae, 0x00, + 0x87, 0xfe, 0xee, 0xfb, 0x42, 0xf9, 0x04, 0xf7, 0xd1, 0xf4, 0x21, 0xf3, 0x18, 0xf3, 0x2f, 0xf4, + 0xbc, 0xf5, 0xb0, 0xf5, 0xfc, 0xf5, 0xb0, 0xf7, 0x9c, 0xf8, 0xc6, 0xf9, 0xc6, 0xf9, 0xcf, 0xfa, + 0xa2, 0xfc, 0x4a, 0xfe, 0x8e, 0x00, 0xbd, 0x02, 0xd0, 0x05, 0xb9, 0x07, 0xb3, 0x08, 0xa3, 0x09, + 0xd7, 0x08, 0xa3, 0x07, 0x73, 0x05, 0xcc, 0x03, 0x26, 0x03, 0xb6, 0x01, 0xef, 0x01, 0x13, 0x01, + 0x18, 0x00, 0x2a, 0xff, 0xcf, 0xfd, 0x07, 0xfc, 0x19, 0xfa, 0xb5, 0xf9, 0xbb, 0xfa, 0xd4, 0xfb, + 0x2e, 0xfd, 0x0f, 0xfe, 0xc5, 0xff, 0xb7, 0x00, 0x86, 0x00, 0xae, 0x00, 0x08, 0x01, 0x35, 0x01, + 0x4f, 0x02, 0xb1, 0x03, 0xa8, 0x06, 0xbe, 0x08, 0xc5, 0x09, 0xa1, 0x0a, 0xf1, 0x0a, 0x79, 0x0b, + 0x3a, 0x0a, 0xca, 0x08, 0x57, 0x07, 0x11, 0x05, 0x01, 0x04, 0x5d, 0x02, 0xf1, 0x00, 0xe2, 0xff, + 0xcc, 0xfd, 0xac, 0xfc, 0x5e, 0xfb, 0x6f, 0xfa, 0x36, 0xf9, 0xf8, 0xf7, 0x24, 0xf8, 0x5c, 0xf7, + 0x26, 0xf8, 0x81, 0xf9, 0x3e, 0xfb, 0x3f, 0xfd, 0x49, 0xfe, 0xec, 0xfe, 0x27, 0xff, 0x05, 0xff, + 0x5b, 0x00, 0x2c, 0x02, 0xa1, 0x04, 0xa0, 0x05, 0xe6, 0x06, 0x72, 0x08, 0xf9, 0x08, 0xf7, 0x07, + 0x99, 0x06, 0x5d, 0x04, 0x6f, 0x01, 0xe1, 0xfd, 0x5e, 0xfc, 0x06, 0xfc, 0x64, 0xfa, 0x3a, 0xf8, + 0x7e, 0xf5, 0xf3, 0xf3, 0xaa, 0xf2, 0x16, 0xf1, 0x22, 0xf0, 0x6a, 0xef, 0xe6, 0xef, 0x8b, 0xf0, + 0x0c, 0xf2, 0x51, 0xf4, 0xbf, 0xf5, 0xb2, 0xf7, 0x64, 0xf9, 0x1f, 0xfb, 0x7b, 0xfc, 0x28, 0xfd, + 0x14, 0xff, 0xc5, 0x00, 0x13, 0x03, 0x9a, 0x05, 0xd5, 0x08, 0x59, 0x0c, 0xdb, 0x0e, 0xcd, 0x10, + 0x6d, 0x11, 0x28, 0x10, 0xaa, 0x0e, 0x5e, 0x0c, 0xe0, 0x0b, 0x63, 0x0b, 0x5d, 0x0a, 0x00, 0x09, + 0x79, 0x07, 0x92, 0x05, 0x44, 0x03, 0xd6, 0x00, 0x1d, 0xff, 0x6f, 0xfc, 0x04, 0xfa, 0xbc, 0xf9, + 0x88, 0xfa, 0x98, 0xfb, 0x92, 0xfb, 0xda, 0xfb, 0x45, 0xfc, 0x4a, 0xfc, 0xa2, 0xfc, 0x7c, 0xfc, + 0xc4, 0xfd, 0x1a, 0xff, 0x19, 0x00, 0xa9, 0x02, 0x7a, 0x04, 0xe5, 0x06, 0x7b, 0x08, 0x70, 0x09, + 0x70, 0x0a, 0x69, 0x09, 0xbc, 0x08, 0x8d, 0x06, 0x77, 0x04, 0x88, 0x03, 0x13, 0x02, 0xe6, 0x01, + 0x59, 0x01, 0xbe, 0x00, 0xad, 0x00, 0x4e, 0xff, 0x8f, 0xfd, 0x48, 0xfb, 0x38, 0xfa, 0x57, 0xfa, + 0xc4, 0xfa, 0xe3, 0xfa, 0xdd, 0xfb, 0x5f, 0xfd, 0x54, 0xfe, 0x3a, 0xfe, 0xec, 0xfd, 0x51, 0xfd, + 0xb2, 0xfc, 0xd0, 0xfc, 0xef, 0xfd, 0x52, 0x00, 0x21, 0x02, 0x33, 0x03, 0x34, 0x04, 0x00, 0x05, + 0xaf, 0x05, 0x03, 0x05, 0xca, 0x03, 0x88, 0x02, 0xd2, 0xff, 0xa9, 0xfe, 0x7d, 0xfd, 0xcb, 0xfc, + 0xc4, 0xfb, 0x07, 0xfa, 0x87, 0xf9, 0x50, 0xf8, 0x58, 0xf7, 0xee, 0xf5, 0x62, 0xf4, 0x17, 0xf4, + 0xe0, 0xf3, 0xb5, 0xf4, 0x39, 0xf6, 0xc8, 0xf8, 0x8c, 0xfb, 0x7a, 0xfd, 0xfd, 0xfe, 0xef, 0xfe, + 0x41, 0xff, 0xc3, 0x00, 0xe2, 0x02, 0x5c, 0x05, 0x75, 0x07, 0x75, 0x09, 0x4c, 0x0c, 0xfc, 0x0d, + 0x9a, 0x0e, 0x66, 0x0e, 0xa4, 0x0d, 0x79, 0x0b, 0x46, 0x08, 0xa5, 0x06, 0x03, 0x06, 0x1b, 0x05, + 0x62, 0x03, 0xef, 0x00, 0x1d, 0xff, 0x2d, 0xfd, 0xaa, 0xfa, 0x2b, 0xf9, 0x83, 0xf7, 0x9d, 0xf6, + 0x84, 0xf5, 0x19, 0xf6, 0x00, 0xf7, 0x9b, 0xf7, 0x55, 0xf9, 0x53, 0xfa, 0x89, 0xfb, 0x57, 0xfc, + 0xe5, 0xfc, 0x3c, 0xfe, 0xf9, 0xfe, 0xac, 0x00, 0x1d, 0x02, 0x52, 0x04, 0x1f, 0x07, 0x46, 0x09, + 0xa1, 0x0b, 0xaa, 0x0c, 0xd1, 0x0b, 0x59, 0x0a, 0x66, 0x08, 0x4b, 0x07, 0x41, 0x06, 0xfd, 0x04, + 0x1a, 0x04, 0xaa, 0x02, 0xe2, 0x00, 0xb0, 0xfe, 0x91, 0xfc, 0x5d, 0xfa, 0xf2, 0xf6, 0x95, 0xf4, + 0x87, 0xf3, 0xdc, 0xf3, 0xba, 0xf4, 0x85, 0xf4, 0x48, 0xf5, 0x34, 0xf6, 0x57, 0xf6, 0x06, 0xf7, + 0x13, 0xf7, 0xc1, 0xf8, 0xc7, 0xf9, 0x99, 0xfb, 0xa3, 0xfe, 0xe1, 0x00, 0x88, 0x03, 0xc4, 0x05, + 0xdb, 0x07, 0xa1, 0x09, 0x01, 0x0a, 0x68, 0x0a, 0x8a, 0x08, 0xe3, 0x06, 0x97, 0x05, 0x10, 0x05, + 0xcd, 0x04, 0x27, 0x04, 0x56, 0x04, 0xb8, 0x04, 0x49, 0x04, 0xe9, 0x02, 0x03, 0x01, 0x0d, 0x00, + 0x5e, 0x00, 0xb4, 0x00, 0x78, 0x01, 0x76, 0x02, 0xec, 0x03, 0xc0, 0x04, 0x77, 0x04, 0x47, 0x04, + 0x08, 0x03, 0x4c, 0x01, 0x8c, 0x00, 0xcb, 0x00, 0x1b, 0x02, 0x3c, 0x03, 0xf7, 0x03, 0xe9, 0x04, + 0x0c, 0x05, 0x00, 0x05, 0xac, 0x03, 0xc9, 0x02, 0xe9, 0x00, 0x5d, 0xfe, 0xb8, 0xfc, 0xc8, 0xfb, + 0x2d, 0xfb, 0xf7, 0xf9, 0x6c, 0xf8, 0x08, 0xf8, 0x4b, 0xf7, 0x14, 0xf7, 0x08, 0xf6, 0x47, 0xf5, + 0x0f, 0xf5, 0xbb, 0xf4, 0xec, 0xf5, 0xd7, 0xf6, 0x62, 0xf9, 0x9e, 0xfc, 0x75, 0xff, 0xb3, 0x00, + 0x09, 0x01, 0x2c, 0x01, 0x0a, 0x02, 0x6e, 0x03, 0xd4, 0x04, 0x85, 0x06, 0x2a, 0x08, 0x3d, 0x0a, + 0x06, 0x0b, 0x24, 0x0c, 0x02, 0x0c, 0x75, 0x0a, 0x82, 0x07, 0xb4, 0x03, 0xe8, 0x01, 0x65, 0x00, + 0x9a, 0xfe, 0xe3, 0xfc, 0xe6, 0xfa, 0x4c, 0xf9, 0x58, 0xf7, 0x16, 0xf6, 0x52, 0xf5, 0x10, 0xf4, + 0x0e, 0xf3, 0x7b, 0xf2, 0x99, 0xf3, 0x74, 0xf5, 0x38, 0xf6, 0xcd, 0xf8, 0x28, 0xfa, 0x1c, 0xfc, + 0x84, 0xfd, 0x17, 0xfe, 0x90, 0xff, 0x54, 0x00, 0x4f, 0x02, 0xae, 0x03, 0x00, 0x05, 0x28, 0x07, + 0xe2, 0x09, 0xa0, 0x0c, 0x8d, 0x0d, 0xa8, 0x0c, 0x94, 0x0b, 0x1f, 0x0a, 0x4c, 0x08, 0xb1, 0x06, + 0x96, 0x05, 0x5b, 0x05, 0xf7, 0x03, 0x6a, 0x02, 0xb5, 0x00, 0x55, 0xff, 0xf0, 0xfd, 0xf4, 0xfa, + 0xb8, 0xf8, 0x0d, 0xf8, 0xb6, 0xf8, 0x80, 0xf9, 0x19, 0xfa, 0xdb, 0xfb, 0x2c, 0xfd, 0x5b, 0xfd, + 0xfb, 0xfd, 0xb8, 0xfd, 0xaa, 0xfe, 0x5f, 0xff, 0x70, 0x00, 0xe6, 0x02, 0xcc, 0x03, 0x63, 0x06, + 0x1c, 0x08, 0x9c, 0x09, 0x41, 0x0a, 0x4b, 0x0a, 0x9f, 0x0a, 0x1c, 0x09, 0xbf, 0x06, 0x95, 0x04, + 0x22, 0x03, 0x7b, 0x01, 0x09, 0x00, 0xe8, 0xfe, 0xc4, 0xfe, 0xfd, 0xfd, 0xd2, 0xfc, 0x4e, 0xfa, + 0xfd, 0xf8, 0x35, 0xf8, 0xc4, 0xf7, 0x96, 0xf8, 0xd2, 0xf8, 0x69, 0xfa, 0xd4, 0xfb, 0xe3, 0xfc, + 0x4d, 0xfd, 0x17, 0xfc, 0xb0, 0xfb, 0x52, 0xfb, 0x65, 0xfc, 0xcb, 0xfd, 0xce, 0xfe, 0x72, 0x00, + 0x7d, 0x02, 0x68, 0x03, 0x3d, 0x04, 0x6f, 0x04, 0xb9, 0x04, 0xd8, 0x03, 0xf1, 0x00, 0xc3, 0xff, + 0xed, 0xfe, 0xaa, 0xfe, 0x57, 0xfd, 0x0a, 0xfc, 0x56, 0xfb, 0xab, 0xfa, 0x8c, 0xfa, 0x19, 0xf9, + 0x4e, 0xf8, 0xb1, 0xf7, 0xeb, 0xf7, 0x07, 0xf8, 0x0f, 0xf8, 0xde, 0xf9, 0x0a, 0xfd, 0x8e, 0xff, + 0x61, 0x01, 0xbd, 0x01, 0x9b, 0x02, 0x3e, 0x04, 0x3b, 0x05, 0x93, 0x06, 0xbd, 0x08, 0x7d, 0x0b, + 0xdf, 0x0d, 0x33, 0x0f, 0x33, 0x11, 0xe0, 0x11, 0x3b, 0x11, 0x62, 0x0e, 0xb2, 0x0a, 0xa2, 0x08, + 0xe4, 0x06, 0xcb, 0x04, 0xa5, 0x02, 0x68, 0x00, 0x16, 0xff, 0xb3, 0xfc, 0x98, 0xfa, 0xce, 0xf8, + 0xca, 0xf6, 0xf2, 0xf5, 0x5d, 0xf4, 0x6e, 0xf4, 0x24, 0xf5, 0x11, 0xf6, 0xf0, 0xf7, 0xa0, 0xf8, + 0x17, 0xfa, 0x3c, 0xfb, 0x71, 0xfc, 0x3d, 0xfd, 0xeb, 0xfd, 0xc2, 0xff, 0x73, 0x01, 0x25, 0x03, + 0x3f, 0x05, 0xf2, 0x07, 0xbc, 0x0b, 0xc2, 0x0d, 0x8b, 0x0e, 0xf2, 0x0d, 0x82, 0x0c, 0xfa, 0x0a, + 0x67, 0x09, 0xfd, 0x07, 0xb3, 0x06, 0xd1, 0x04, 0xf7, 0x03, 0x7f, 0x02, 0x8e, 0x00, 0x06, 0xfe, + 0x7e, 0xfa, 0x70, 0xf7, 0xc3, 0xf5, 0x46, 0xf4, 0x58, 0xf4, 0x37, 0xf4, 0xdd, 0xf4, 0x28, 0xf5, + 0x41, 0xf5, 0x61, 0xf6, 0xa9, 0xf6, 0xc5, 0xf7, 0x82, 0xf6, 0xc7, 0xf8, 0x3f, 0xfb, 0x89, 0xfa, + 0x87, 0xfc, 0x63, 0xff, 0x63, 0x01, 0x36, 0x03, 0xc5, 0x05, 0x1e, 0x06, 0xad, 0x04, 0x09, 0x04, + 0x9f, 0x03, 0x86, 0x00, 0x21, 0xff, 0x33, 0xfe, 0x33, 0xff, 0x83, 0xfe, 0x39, 0xfe, 0x69, 0xfd, + 0xa4, 0xfc, 0xed, 0xfb, 0xfd, 0xf9, 0xaa, 0xf9, 0x74, 0xfa, 0x34, 0xfc, 0x55, 0xfc, 0xf6, 0xfd, + 0x48, 0x00, 0x75, 0x01, 0x52, 0x01, 0xb4, 0x00, 0xa4, 0x00, 0xf2, 0x00, 0x0d, 0x03, 0xa6, 0x03, + 0x55, 0x04, 0xa9, 0x06, 0x28, 0x09, 0x96, 0x09, 0x9e, 0x08, 0x4a, 0x0a, 0x9e, 0x09, 0x75, 0x07, + 0x53, 0x05, 0x9c, 0x04, 0x1d, 0x03, 0x8d, 0x00, 0x2a, 0x00, 0x0b, 0xff, 0x73, 0xfd, 0xd3, 0xfc, + 0x95, 0xfd, 0xac, 0xfa, 0x49, 0xf8, 0x40, 0xf8, 0x0d, 0xf9, 0x05, 0xf8, 0xe3, 0xf8, 0x58, 0xfc, + 0xfb, 0xfb, 0x0b, 0xfd, 0xca, 0xfd, 0x38, 0xfe, 0x29, 0xff, 0xf6, 0x00, 0x51, 0x02, 0x30, 0x02, + 0x5c, 0x03, 0xc6, 0x06, 0xca, 0x08, 0x6a, 0x0a, 0x8c, 0x0a, 0x22, 0x08, 0xd0, 0x06, 0x53, 0x05, + 0x34, 0x02, 0x34, 0x00, 0xa6, 0xfe, 0x9b, 0xfc, 0x06, 0xfb, 0x94, 0xf9, 0x44, 0xfa, 0xe3, 0xf9, + 0xda, 0xf7, 0xa1, 0xf6, 0x61, 0xf5, 0x92, 0xf3, 0xa0, 0xf5, 0x7d, 0xf7, 0xb5, 0xf7, 0x59, 0xf9, + 0xe0, 0xfa, 0xef, 0xfc, 0x2a, 0xfe, 0x75, 0xff, 0x08, 0x01, 0xfb, 0x01, 0xdd, 0x02, 0xde, 0x02, + 0x84, 0x04, 0x36, 0x06, 0x2c, 0x09, 0xf7, 0x0c, 0xf1, 0x0c, 0x2a, 0x0d, 0x6a, 0x0f, 0x3b, 0x0f, + 0xe2, 0x0c, 0x06, 0x0e, 0x8c, 0x0a, 0x22, 0x04, 0x28, 0x07, 0xf1, 0x06, 0x1b, 0x05, 0x73, 0x07, + 0xd8, 0x06, 0xb1, 0xfe, 0x36, 0xfb, 0x3f, 0xfd, 0x42, 0xfb, 0xf3, 0xf8, 0xe4, 0xfa, 0xd5, 0xfb, + 0xcd, 0xfb, 0xba, 0xf9, 0xcf, 0xfb, 0x98, 0xfd, 0x03, 0xfb, 0xee, 0xf7, 0x35, 0xf9, 0x6c, 0xf8, + 0xf0, 0xf9, 0xd2, 0xfd, 0xc9, 0x00, 0xec, 0x00, 0x3e, 0x00, 0x47, 0x03, 0x17, 0x03, 0x7d, 0x00, + 0xa3, 0x00, 0x89, 0x01, 0xdf, 0xfb, 0xcf, 0xfa, 0xac, 0xf7, 0xb0, 0xf8, 0xda, 0xfa, 0x1f, 0xfa, + 0xd7, 0xf8, 0x27, 0xfa, 0x42, 0xf6, 0xea, 0xf7, 0x27, 0xfa, 0x25, 0xfc, 0x09, 0xfa, 0xf2, 0xfb, + 0x5b, 0xfe, 0xad, 0xfe, 0xc8, 0xff, 0x1b, 0x02, 0xce, 0xfd, 0xa0, 0xfb, 0xe0, 0xfc, 0x93, 0xfc, + 0xf1, 0x00, 0xae, 0x01, 0x4a, 0x01, 0xc3, 0x00, 0x21, 0x03, 0x0d, 0x01, 0xb3, 0x05, 0xc9, 0x07, + 0x66, 0x03, 0xc7, 0x00, 0xde, 0x02, 0x9c, 0x00, 0x0f, 0x01, 0xff, 0xff, 0x3d, 0xff, 0x20, 0xfa, + 0x19, 0xfc, 0xbd, 0xfd, 0xc8, 0xfc, 0x7d, 0xfc, 0x7b, 0xfc, 0xfb, 0xf7, 0x35, 0xf7, 0xe5, 0xfa, + 0xc8, 0xfc, 0x2b, 0x01, 0x08, 0x02, 0x23, 0x01, 0x6d, 0x03, 0x8e, 0x06, 0x4e, 0x08, 0x1c, 0x0b, + 0x73, 0x0d, 0xbf, 0x0c, 0xa3, 0x0a, 0xa1, 0x0e, 0x33, 0x15, 0x68, 0x15, 0x88, 0x15, 0x56, 0x13, + 0x00, 0x0c, 0xab, 0x0b, 0x57, 0x0c, 0x6a, 0x0a, 0x85, 0x0a, 0xa7, 0x06, 0xdb, 0x01, 0x42, 0xff, + 0x0f, 0x02, 0xc5, 0x04, 0xc1, 0x02, 0x35, 0xfe, 0xbe, 0xf8, 0x32, 0xf5, 0xc9, 0xf8, 0xd7, 0xf9, + 0x93, 0xfc, 0x46, 0xfa, 0xd7, 0xf8, 0xc5, 0xf7, 0x8f, 0xf9, 0xb5, 0xfc, 0x14, 0xfe, 0x85, 0xff, + 0x15, 0xfe, 0x55, 0xfc, 0xa0, 0xff, 0xe5, 0x06, 0x95, 0x0b, 0xba, 0x0c, 0x7d, 0x0b, 0x97, 0x07, + 0xe9, 0x06, 0x72, 0x07, 0xfd, 0x07, 0x06, 0x08, 0xc7, 0x02, 0xaa, 0xfe, 0x42, 0xfa, 0xd4, 0xf8, + 0x94, 0xf9, 0x05, 0xfb, 0x6d, 0xf7, 0xde, 0xf2, 0x7d, 0xee, 0xc6, 0xec, 0x1d, 0xef, 0xf2, 0xf1, + 0x74, 0xf2, 0x29, 0xf1, 0x71, 0xee, 0x40, 0xf0, 0x5e, 0xf1, 0x6b, 0xf5, 0xe5, 0xf7, 0xc2, 0xf5, + 0xfa, 0xf2, 0xdf, 0xf4, 0x26, 0xf8, 0x5b, 0xfb, 0x10, 0x01, 0x3a, 0x02, 0x77, 0x00, 0x19, 0x01, + 0xe8, 0x03, 0x66, 0x07, 0xf1, 0x06, 0x88, 0x04, 0xdd, 0x03, 0xeb, 0xff, 0x5f, 0xff, 0x79, 0x02, + 0x53, 0x02, 0x2b, 0x02, 0x89, 0x00, 0x9c, 0xf8, 0x29, 0xfe, 0x4b, 0xfc, 0x53, 0xfc, 0xd0, 0xfd, + 0x04, 0xf8, 0xfe, 0xf6, 0x41, 0xfc, 0x0d, 0xff, 0xaf, 0xfd, 0xea, 0x00, 0x6c, 0xfd, 0x9b, 0xfe, + 0x50, 0xfe, 0x9e, 0xfd, 0x72, 0x05, 0x41, 0x03, 0x8d, 0x07, 0x5e, 0x08, 0x57, 0x05, 0x5f, 0x0a, + 0xcc, 0x0a, 0xdf, 0x0c, 0xfc, 0x0a, 0x2d, 0x08, 0xb1, 0x03, 0x9d, 0x06, 0x27, 0x07, 0xfc, 0x02, + 0x25, 0x04, 0x14, 0x02, 0xc0, 0xff, 0x16, 0xfd, 0x28, 0xfe, 0xab, 0xfd, 0x53, 0xfd, 0xb3, 0xfd, + 0xd8, 0xfb, 0xfc, 0xff, 0xc7, 0x00, 0xf7, 0x04, 0x9e, 0x06, 0x6e, 0x06, 0xb5, 0x06, 0x95, 0x07, + 0x84, 0x0a, 0x79, 0x0a, 0x17, 0x0b, 0xea, 0x0b, 0xc7, 0x0c, 0x95, 0x0f, 0x48, 0x11, 0x65, 0x13, + 0x0c, 0x11, 0x6f, 0x0f, 0x66, 0x0b, 0xd4, 0x05, 0x3b, 0x03, 0x76, 0x03, 0x10, 0x03, 0xc9, 0x00, + 0xb1, 0xfe, 0x3f, 0xfd, 0xc4, 0xf9, 0x68, 0xf8, 0xe1, 0xf7, 0x81, 0xf5, 0xa0, 0xf4, 0x28, 0xf3, + 0x29, 0xf1, 0x80, 0xf0, 0x80, 0xf2, 0x03, 0xf5, 0x2b, 0xf4, 0x50, 0xf4, 0x12, 0xf5, 0x70, 0xf4, + 0x9b, 0xf5, 0x71, 0xf7, 0xe1, 0xf7, 0x5d, 0xf7, 0x58, 0xf8, 0x81, 0xfd, 0x7b, 0x01, 0x6c, 0x03, + 0x5a, 0x08, 0xb4, 0x05, 0x83, 0x03, 0x6b, 0x02, 0x8f, 0xfe, 0xd7, 0xfe, 0x16, 0x00, 0x7d, 0x00, + 0xc2, 0xff, 0xc0, 0xfe, 0x94, 0x01, 0x96, 0xff, 0xbe, 0xfe, 0x00, 0xfe, 0x78, 0xfa, 0x7e, 0xfa, + 0x67, 0xfa, 0x44, 0xfc, 0xd4, 0xfb, 0xdc, 0xfb, 0xdf, 0x01, 0x3e, 0x00, 0xb5, 0x00, 0x9b, 0x03, + 0xc6, 0x02, 0xbf, 0x03, 0x38, 0x06, 0x1f, 0x06, 0xf8, 0x04, 0x01, 0x08, 0x1b, 0x07, 0x95, 0x0c, + 0x9e, 0x0a, 0x2c, 0x09, 0xbd, 0x0b, 0xc7, 0x07, 0xaa, 0x06, 0xc0, 0x04, 0x62, 0x03, 0x6b, 0x00, + 0x19, 0xfd, 0xb5, 0xfc, 0x0d, 0xfd, 0xfb, 0xf7, 0x3c, 0xf5, 0x94, 0xf4, 0xf8, 0xf2, 0x0c, 0xf1, + 0xe9, 0xf1, 0x4a, 0xf2, 0x9b, 0xf2, 0x11, 0xf4, 0x53, 0xf3, 0xc4, 0xf2, 0x9d, 0xf6, 0x92, 0xf5, + 0xe3, 0xf5, 0x99, 0xf6, 0xbe, 0xf4, 0xfc, 0xf7, 0x43, 0xf7, 0x68, 0xfb, 0x1b, 0x00, 0x19, 0x02, + 0x9f, 0x04, 0x0d, 0x01, 0xf3, 0x00, 0x8e, 0x05, 0xf1, 0x00, 0xe9, 0x00, 0x1f, 0x01, 0x6c, 0xff, + 0x95, 0xfc, 0xdd, 0xfd, 0x08, 0xff, 0x22, 0xfd, 0xff, 0xfc, 0x14, 0xf9, 0x27, 0xf8, 0x81, 0xf5, + 0xc0, 0xf4, 0xe3, 0xf4, 0x59, 0xf5, 0x3b, 0xf6, 0xdd, 0xf5, 0xd5, 0xf6, 0xa1, 0xf5, 0x6d, 0xf8, + 0x6c, 0xf9, 0x1b, 0xf9, 0x4c, 0xfc, 0xc5, 0xfe, 0xff, 0xfb, 0xe8, 0xfe, 0xc1, 0x08, 0x4c, 0x08, + 0xf6, 0x0c, 0x6c, 0x0f, 0x5c, 0x0f, 0xfe, 0x10, 0x94, 0x0e, 0x6e, 0x10, 0xf2, 0x0c, 0x51, 0x0d, + 0x45, 0x13, 0xe8, 0x0c, 0xbf, 0x10, 0x93, 0x12, 0x68, 0x10, 0x1d, 0x0f, 0x44, 0x0a, 0xb8, 0x05, + 0x5c, 0x06, 0xce, 0xff, 0x59, 0x00, 0xdf, 0x01, 0x1d, 0x01, 0xfe, 0x00, 0xfd, 0xff, 0xf7, 0xff, + 0xec, 0x04, 0xf5, 0x02, 0xed, 0x01, 0xf3, 0x03, 0x7c, 0x05, 0x10, 0x09, 0x3e, 0x0c, 0xb1, 0x0f, + 0x81, 0x11, 0x89, 0x11, 0xfd, 0x10, 0x39, 0x12, 0xad, 0x13, 0xa9, 0x0e, 0x59, 0x0f, 0x2a, 0x0b, + 0x56, 0x0a, 0x6d, 0x0b, 0xb3, 0x07, 0xdf, 0x0a, 0xfd, 0x0a, 0x69, 0x09, 0x24, 0x05, 0x62, 0xff, + 0x29, 0xff, 0xcc, 0xfd, 0x08, 0xfe, 0x6f, 0xfd, 0x43, 0x02, 0x71, 0xfd, 0x2e, 0xfe, 0xda, 0xff, + 0x20, 0xfe, 0xc3, 0xff, 0x62, 0xff, 0xff, 0xfe, 0x32, 0xfe, 0x45, 0xfd, 0x93, 0xfe, 0x08, 0xfe, + 0xb9, 0x01, 0x78, 0x03, 0x58, 0x03, 0x47, 0x04, 0x94, 0x04, 0x31, 0x02, 0x31, 0xfd, 0xa7, 0xfa, + 0x85, 0xfa, 0xe7, 0xfa, 0xe4, 0xfa, 0xaf, 0xfb, 0x61, 0xfe, 0xfb, 0xfd, 0xbb, 0xfa, 0x22, 0xfc, + 0x4a, 0xfd, 0x7a, 0x00, 0xd5, 0x03, 0x5a, 0x04, 0xc7, 0x05, 0x3e, 0x0a, 0x5f, 0x0c, 0xce, 0x0c, + 0x77, 0x0d, 0x28, 0x0b, 0x49, 0x06, 0xb7, 0x03, 0x86, 0x05, 0x6f, 0x03, 0x53, 0x05, 0xa3, 0x05, + 0x87, 0x02, 0x7f, 0x02, 0x30, 0x00, 0x55, 0xfd, 0x39, 0xf7, 0xcf, 0xf5, 0x02, 0xf5, 0xfa, 0xef, + 0x53, 0xed, 0xb2, 0xeb, 0x1a, 0xea, 0xb0, 0xe6, 0xc3, 0xe6, 0x95, 0xe8, 0xba, 0xe8, 0xf8, 0xe5, + 0x0b, 0xe6, 0x61, 0xe7, 0xa8, 0xe5, 0x47, 0xe8, 0x31, 0xec, 0x56, 0xf0, 0x43, 0xf6, 0x88, 0xf4, + 0xf3, 0xf4, 0xda, 0xf8, 0x86, 0xfc, 0xa6, 0xfd, 0x55, 0xfe, 0x33, 0xfe, 0x55, 0xff, 0xe0, 0x01, + 0x05, 0x04, 0xb9, 0x05, 0xb2, 0x05, 0x71, 0x03, 0x7a, 0xff, 0xc0, 0xfb, 0x71, 0xf7, 0xb4, 0xf3, + 0x47, 0xef, 0x37, 0xee, 0x46, 0xee, 0xa6, 0xef, 0xe9, 0xee, 0xda, 0xe9, 0x64, 0xea, 0x8b, 0xea, + 0x84, 0xe5, 0x3e, 0xe6, 0xf9, 0xe7, 0x16, 0xe6, 0x3e, 0xe9, 0xd3, 0xed, 0x8f, 0xf0, 0x27, 0xf3, + 0x1a, 0xf6, 0x33, 0xf9, 0xe5, 0xfb, 0xe0, 0xfb, 0x6b, 0xfa, 0x02, 0xfb, 0x5a, 0xff, 0x65, 0x03, + 0x0f, 0x04, 0xfc, 0x05, 0x3a, 0x04, 0xdb, 0x02, 0x6c, 0x01, 0xcc, 0xfd, 0x82, 0x01, 0x38, 0x01, + 0xf7, 0xfc, 0x54, 0xfa, 0x6f, 0xfa, 0x04, 0xfe, 0x1b, 0xfd, 0xbf, 0xfb, 0x70, 0xfc, 0x26, 0xfd, + 0x09, 0xfc, 0xda, 0xfa, 0xb1, 0xfd, 0xcb, 0xfd, 0x0b, 0xfe, 0xc2, 0xfe, 0x7a, 0x03, 0xfa, 0x07, + 0xd4, 0x06, 0x4f, 0x07, 0x0b, 0x08, 0x6c, 0x07, 0x74, 0x08, 0xc5, 0x0b, 0x83, 0x10, 0xa3, 0x15, + 0x84, 0x18, 0x84, 0x18, 0x78, 0x1a, 0x18, 0x1f, 0x00, 0x25, 0x83, 0x26, 0x65, 0x22, 0xc6, 0x21, + 0xdb, 0x1d, 0xa3, 0x1c, 0xe7, 0x21, 0x75, 0x20, 0x31, 0x20, 0x4d, 0x18, 0xae, 0x15, 0xeb, 0x18, + 0xd0, 0x17, 0x96, 0x15, 0x8c, 0x10, 0x47, 0x10, 0xb7, 0x0d, 0x95, 0x0b, 0xdc, 0x0e, 0x06, 0x13, + 0x6b, 0x12, 0xb0, 0x0f, 0x63, 0x10, 0x5f, 0x10, 0x97, 0x0f, 0x00, 0x10, 0x63, 0x0f, 0x5f, 0x11, + 0x6c, 0x15, 0x2f, 0x18, 0xa7, 0x19, 0x63, 0x1c, 0x89, 0x1f, 0xf1, 0x1d, 0x05, 0x1b, 0x4a, 0x1b, + 0xf1, 0x1a, 0x3d, 0x19, 0x7c, 0x13, 0xcd, 0x10, 0xc7, 0x0d, 0xfa, 0x03, 0x51, 0x03, 0x16, 0x03, + 0x92, 0x01, 0xb3, 0xfb, 0xe3, 0xf5, 0xf8, 0xf2, 0x8e, 0xf0, 0xc0, 0xf0, 0x24, 0xee, 0xd9, 0xf1, + 0x90, 0xf3, 0x57, 0xf1, 0x87, 0xef, 0x33, 0xf0, 0xc6, 0xf1, 0x5b, 0xf3, 0x47, 0xf3, 0x20, 0xf7, + 0x80, 0xfb, 0xd0, 0xfe, 0x00, 0x03, 0xe6, 0x02, 0xa6, 0x04, 0x72, 0x04, 0x4d, 0x03, 0x96, 0x02, + 0x0c, 0xff, 0x9e, 0xfa, 0x4d, 0xf6, 0x2d, 0xf4, 0x94, 0xf1, 0x30, 0xee, 0x0c, 0xe5, 0x17, 0xde, + 0xc9, 0xdc, 0xdd, 0xd9, 0x29, 0xd7, 0x6e, 0xd3, 0xfa, 0xd2, 0x44, 0xd0, 0x46, 0xcc, 0xa4, 0xce, + 0xfc, 0xcc, 0xfd, 0xcc, 0xa7, 0xcd, 0x6a, 0xcf, 0x59, 0xd0, 0xe8, 0xd1, 0xdd, 0xd1, 0x50, 0xd7, + 0xeb, 0xe1, 0x0a, 0xe6, 0xe3, 0xed, 0x6a, 0xee, 0x9d, 0xf4, 0xc2, 0xf9, 0x87, 0xfb, 0x2c, 0xfb, + 0x54, 0xfc, 0x3b, 0xfe, 0x7a, 0xfe, 0x3d, 0x02, 0x8c, 0x06, 0x6b, 0x0a, 0x51, 0x0b, 0x11, 0x09, + 0xbc, 0x08, 0xc9, 0x0a, 0x4c, 0x09, 0xbb, 0x03, 0xc6, 0xfe, 0xc9, 0xfc, 0x7d, 0xfc, 0x79, 0xff, + 0x56, 0x04, 0xcc, 0x04, 0xb0, 0x00, 0x25, 0x00, 0x62, 0x00, 0x6e, 0x02, 0xe8, 0x03, 0x21, 0x06, + 0x13, 0x07, 0xd5, 0x08, 0xf2, 0x0b, 0x22, 0x0c, 0xfc, 0x0d, 0xf4, 0x0e, 0x9b, 0x0f, 0x4b, 0x0b, + 0x08, 0x05, 0x22, 0x02, 0x5e, 0x07, 0xf9, 0x04, 0x79, 0xff, 0xbd, 0x03, 0x6e, 0x02, 0x0c, 0x03, + 0xc7, 0x03, 0xd7, 0x05, 0x46, 0x02, 0x2b, 0xfd, 0xd0, 0xf9, 0x8d, 0xfc, 0xfc, 0xfc, 0x1c, 0xfc, + 0xb8, 0x03, 0x88, 0x05, 0x37, 0x06, 0x59, 0x07, 0x9d, 0x06, 0x46, 0x08, 0xd1, 0x03, 0x14, 0xff, + 0x3c, 0xfd, 0x15, 0x01, 0x91, 0x05, 0xda, 0x06, 0xe4, 0x09, 0x43, 0x0c, 0x5e, 0x0e, 0x2a, 0x0b, + 0x79, 0x0a, 0x76, 0x08, 0x3f, 0x09, 0x76, 0x0c, 0x0e, 0x08, 0x61, 0x0a, 0xa7, 0x0f, 0x3c, 0x0e, + 0xf8, 0x0c, 0x7b, 0x10, 0x72, 0x13, 0x7a, 0x13, 0xcd, 0x11, 0x44, 0x15, 0xfb, 0x19, 0x1b, 0x1c, + 0x24, 0x20, 0x12, 0x21, 0x7b, 0x1d, 0xc1, 0x20, 0xc4, 0x1b, 0xe6, 0x11, 0x9d, 0x0a, 0xec, 0x03, + 0x5c, 0x02, 0x56, 0xf9, 0x85, 0xf9, 0x5a, 0xfd, 0xf0, 0xf6, 0xfc, 0xf5, 0xa6, 0xf0, 0x3f, 0xea, + 0x2f, 0xed, 0xf1, 0xea, 0x28, 0xea, 0xe8, 0xea, 0x5c, 0xe4, 0x20, 0xe7, 0x46, 0xec, 0x23, 0xe9, + 0xf3, 0xeb, 0xf6, 0xec, 0x30, 0xf6, 0x2c, 0xfb, 0xd9, 0xfc, 0xd0, 0x02, 0xa5, 0x0c, 0x68, 0x17, + 0xf8, 0x1f, 0xaa, 0x1f, 0x94, 0x2a, 0xc5, 0x2e, 0xb1, 0x2f, 0x0c, 0x2f, 0xca, 0x30, 0x72, 0x30, + 0xb9, 0x2b, 0xf1, 0x2a, 0xd4, 0x21, 0xa0, 0x1f, 0xe2, 0x1b, 0xe8, 0x11, 0x92, 0x0b, 0x38, 0x06, + 0xe4, 0xfe, 0x2f, 0xfc, 0xf9, 0xf7, 0xa8, 0xf4, 0xcc, 0xf3, 0x0f, 0xf5, 0x59, 0xf6, 0xbe, 0xf2, + 0x9e, 0xed, 0xe6, 0xed, 0x69, 0xe7, 0x64, 0xe8, 0xd2, 0xe5, 0xa3, 0xe3, 0x27, 0xe9, 0xce, 0xea, + 0xc8, 0xec, 0x96, 0xf3, 0x8f, 0xf1, 0x0a, 0xf7, 0x5a, 0xfa, 0x92, 0xf9, 0xc7, 0xfc, 0x39, 0x00, + 0xf9, 0x00, 0xfc, 0xfe, 0xae, 0x02, 0x81, 0x06, 0x98, 0x02, 0x34, 0xfc, 0x38, 0xf4, 0x56, 0xee, + 0x91, 0xec, 0x2a, 0xe4, 0xac, 0xdc, 0xb5, 0xda, 0xdf, 0xde, 0x6a, 0xdf, 0xca, 0xda, 0xd9, 0xd9, + 0xa2, 0xda, 0x9a, 0xdc, 0x4f, 0xe0, 0x8a, 0xda, 0x79, 0xdb, 0x8d, 0xdb, 0x09, 0xde, 0x38, 0xe3, + 0x58, 0xe8, 0x74, 0xef, 0x80, 0xf9, 0x67, 0xfc, 0xe2, 0xfb, 0x76, 0xfb, 0x0c, 0xff, 0x1e, 0x03, + 0x19, 0x03, 0x7f, 0x08, 0x57, 0x0d, 0x7c, 0x17, 0x38, 0x1c, 0xbf, 0x1d, 0xd1, 0x22, 0xa9, 0x23, + 0x11, 0x24, 0x43, 0x22, 0x26, 0x17, 0x3a, 0x14, 0x7b, 0x12, 0xde, 0x10, 0x54, 0x0d, 0x32, 0x05, + 0xee, 0x05, 0x10, 0x03, 0x49, 0xfe, 0x03, 0xf7, 0x75, 0xf2, 0x3f, 0xf0, 0xb0, 0xf1, 0x4a, 0xf2, + 0xf0, 0xec, 0xc5, 0xef, 0x95, 0xed, 0x81, 0xef, 0xc5, 0xf0, 0x5e, 0xf4, 0x03, 0xf8, 0xe2, 0xfb, + 0x59, 0xfc, 0xd0, 0xfc, 0xfd, 0x00, 0xfa, 0x06, 0x84, 0x0d, 0x1e, 0x15, 0x82, 0x1a, 0x1f, 0x1d, + 0xa6, 0x1e, 0xbf, 0x1d, 0x14, 0x1e, 0x73, 0x18, 0x23, 0x18, 0xfc, 0x10, 0xc9, 0x09, 0x92, 0x04, + 0xfc, 0xfe, 0x12, 0xfe, 0xe9, 0xf5, 0xd1, 0xef, 0xc5, 0xec, 0x7a, 0xe9, 0x36, 0xe6, 0x81, 0xe1, + 0x5f, 0xe2, 0x5b, 0xe5, 0xa9, 0xe8, 0xf3, 0xe8, 0xa0, 0xe9, 0xb8, 0xec, 0x92, 0xf1, 0x47, 0xf4, + 0x02, 0xf2, 0xdd, 0xf8, 0x76, 0x01, 0xd7, 0x09, 0xce, 0x0a, 0x27, 0x0b, 0xac, 0x13, 0x92, 0x1b, + 0x20, 0x21, 0xa1, 0x24, 0xc0, 0x27, 0x59, 0x28, 0x1a, 0x21, 0x9b, 0x1c, 0x0e, 0x18, 0x43, 0x1c, + 0xfb, 0x1a, 0x3c, 0x13, 0x87, 0x0a, 0x69, 0xfc, 0x14, 0xfc, 0x3f, 0xfc, 0x02, 0xf4, 0x44, 0xef, + 0x39, 0xec, 0x18, 0xee, 0x1c, 0xef, 0x21, 0xeb, 0xd7, 0xe8, 0x15, 0xed, 0x42, 0xf2, 0x8c, 0xf1, + 0xdc, 0xf0, 0x44, 0xf5, 0xe9, 0xfb, 0x8e, 0xff, 0x1b, 0x04, 0xb6, 0x09, 0x2f, 0x0e, 0x5c, 0x18, + 0x1e, 0x1c, 0xe3, 0x1b, 0x51, 0x23, 0xb3, 0x22, 0x27, 0x22, 0xbc, 0x23, 0x75, 0x28, 0x59, 0x26, + 0x98, 0x24, 0x31, 0x1e, 0xfc, 0x18, 0xc3, 0x1b, 0x62, 0x16, 0x8b, 0x12, 0x0a, 0x09, 0x51, 0x01, + 0xe1, 0xff, 0xab, 0xfc, 0x1c, 0xfb, 0x8e, 0xfa, 0xc6, 0xf7, 0x08, 0xf4, 0x64, 0xf1, 0xa6, 0xed, + 0xc0, 0xee, 0x3f, 0xee, 0x69, 0xf1, 0xe5, 0xf2, 0xc1, 0xef, 0x44, 0xf4, 0x7e, 0xf0, 0x83, 0xef, + 0x09, 0xee, 0x88, 0xed, 0x53, 0xee, 0x27, 0xef, 0x56, 0xea, 0x0d, 0xe7, 0xd0, 0xed, 0xbc, 0xf3, + 0x9f, 0xf0, 0x8c, 0xf3, 0x38, 0xf5, 0xb2, 0xf6, 0xdc, 0xf6, 0x6f, 0xed, 0xdb, 0xea, 0xb3, 0xeb, + 0x4b, 0xed, 0xdf, 0xec, 0x8b, 0xe9, 0x82, 0xe6, 0x13, 0xe6, 0xd2, 0xe7, 0x6c, 0xe8, 0x02, 0xe7, + 0x2a, 0xe6, 0x3c, 0xea, 0x63, 0xe9, 0xbd, 0xe9, 0xa4, 0xec, 0xea, 0xf2, 0x51, 0xff, 0x36, 0x02, + 0x49, 0x01, 0x00, 0x01, 0xa2, 0x02, 0x65, 0x02, 0xc0, 0x00, 0x71, 0x00, 0xf7, 0x02, 0xd3, 0x0a, + 0xfe, 0x0f, 0x98, 0x0f, 0x77, 0x19, 0x57, 0x1e, 0x74, 0x20, 0x94, 0x1f, 0x66, 0x20, 0xf2, 0x23, + 0xe0, 0x24, 0x9d, 0x25, 0x9f, 0x23, 0x11, 0x28, 0xde, 0x26, 0x47, 0x26, 0x9b, 0x1b, 0x02, 0x12, + 0x88, 0x0d, 0xe8, 0x00, 0x71, 0xfd, 0x23, 0xf8, 0x5e, 0xf6, 0x28, 0xf4, 0xd9, 0xee, 0xa9, 0xee, + 0xab, 0xec, 0x17, 0xf3, 0x9b, 0xf4, 0x40, 0xf2, 0xb8, 0xf3, 0x0b, 0xef, 0x0a, 0xeb, 0x74, 0xea, + 0x60, 0xea, 0xe3, 0xed, 0xdd, 0xf0, 0x30, 0xf8, 0xb8, 0xf5, 0x88, 0xf5, 0x88, 0xfb, 0x06, 0xff, + 0x58, 0x00, 0x7f, 0xfe, 0xf5, 0x04, 0x1c, 0x0b, 0x41, 0x0f, 0xbe, 0x0c, 0xde, 0x09, 0xff, 0x0b, + 0xc9, 0x0c, 0x7b, 0x09, 0x61, 0x00, 0x95, 0xfc, 0x3e, 0xf8, 0x73, 0xf6, 0x2b, 0xf4, 0x1a, 0xf0, + 0x51, 0xf2, 0xc1, 0xf2, 0xa7, 0xf6, 0x79, 0xf3, 0x92, 0xf0, 0x7f, 0xf4, 0x5a, 0xf6, 0xd4, 0xf7, + 0x09, 0xfa, 0x56, 0xf9, 0xd4, 0xf9, 0x9c, 0xfc, 0xa5, 0xfe, 0xb5, 0xff, 0xad, 0x06, 0x17, 0x08, + 0x90, 0x07, 0x89, 0x05, 0x65, 0x05, 0xf4, 0x10, 0x66, 0x16, 0x0a, 0x16, 0xeb, 0x16, 0x83, 0x18, + 0xdd, 0x17, 0xe2, 0x18, 0x3d, 0x17, 0xe3, 0x13, 0xb6, 0x16, 0x7d, 0x13, 0x52, 0x0f, 0x81, 0x07, + 0x20, 0x02, 0x6b, 0xff, 0x73, 0xf8, 0x00, 0xf3, 0x7d, 0xef, 0xd1, 0xee, 0xc1, 0xeb, 0x94, 0xe9, + 0x95, 0xe8, 0x1f, 0xee, 0xb6, 0xed, 0xe3, 0xee, 0x0e, 0xf3, 0x6a, 0xf5, 0xe6, 0xf4, 0xbe, 0xf3, + 0x5a, 0xf0, 0x9d, 0xf3, 0xd3, 0xfc, 0xaf, 0xff, 0xdb, 0x01, 0xea, 0xff, 0xad, 0x03, 0xcc, 0x0a, + 0x09, 0x0f, 0x3c, 0x0f, 0xe7, 0x17, 0xb5, 0x1c, 0xb1, 0x20, 0xa1, 0x23, 0x5a, 0x21, 0x6e, 0x27, + 0x4b, 0x29, 0x30, 0x27, 0xd6, 0x1f, 0xd2, 0x19, 0x4f, 0x16, 0x97, 0x0e, 0x6b, 0x09, 0xec, 0xff, + 0x5f, 0xfb, 0xbe, 0xfb, 0xa8, 0xf5, 0x4d, 0xeb, 0x63, 0xe6, 0xb0, 0xe8, 0x57, 0xe3, 0x56, 0xdf, + 0x3b, 0xdf, 0xe1, 0xda, 0xe9, 0xdf, 0x0b, 0xe2, 0xea, 0xe0, 0x57, 0xe4, 0xc0, 0xea, 0xec, 0xed, + 0x2e, 0xf0, 0x81, 0xf1, 0xd6, 0xf2, 0x48, 0xfa, 0x36, 0xfd, 0x7e, 0x02, 0xf0, 0x0c, 0xa9, 0x10, + 0x10, 0x18, 0xf4, 0x1a, 0xb5, 0x1c, 0x96, 0x1f, 0x85, 0x20, 0xb8, 0x20, 0x90, 0x18, 0x97, 0x12, + 0xc6, 0x0b, 0x53, 0x08, 0xfb, 0x06, 0x77, 0x01, 0x91, 0xfd, 0xd1, 0xfb, 0xb9, 0xf3, 0x06, 0xec, + 0x06, 0xea, 0x08, 0xe8, 0x3c, 0xe6, 0x57, 0xe8, 0xd3, 0xec, 0x1a, 0xef, 0x68, 0xf6, 0x44, 0xf7, + 0x79, 0xf5, 0xad, 0xf6, 0x6c, 0xfb, 0xc7, 0xfb, 0xed, 0xfe, 0x74, 0xff, 0x94, 0x05, 0xca, 0x10, + 0x9a, 0x12, 0x6b, 0x18, 0xd1, 0x1c, 0x81, 0x24, 0xdd, 0x22, 0xe3, 0x1d, 0xee, 0x19, 0x6c, 0x14, + 0x5c, 0x16, 0xd5, 0x11, 0x2f, 0x0a, 0xa3, 0x04, 0x28, 0x00, 0xa3, 0xfb, 0xb7, 0xf7, 0x94, 0xf0, + 0x5f, 0xed, 0x45, 0xed, 0x84, 0xe8, 0x9b, 0xe2, 0x8a, 0xdf, 0xc8, 0xe2, 0xd3, 0xe5, 0x74, 0xe8, + 0x94, 0xe9, 0x3f, 0xec, 0xfd, 0xef, 0x1b, 0xf2, 0x14, 0xef, 0x6c, 0xee, 0x65, 0xf4, 0xd6, 0xfb, + 0xbf, 0xfd, 0xff, 0xfe, 0x1a, 0x04, 0x65, 0x0b, 0xfe, 0x0e, 0x6e, 0x0f, 0x20, 0x10, 0xec, 0x10, + 0xb7, 0x11, 0xa0, 0x10, 0x9e, 0x0f, 0xfd, 0x0c, 0x69, 0x0e, 0xdb, 0x0d, 0xf1, 0x0b, 0xf4, 0x09, + 0xa2, 0x02, 0xe2, 0xfe, 0x09, 0xfb, 0xb9, 0xf1, 0x4e, 0xf3, 0x3e, 0xf4, 0x08, 0xee, 0x75, 0xec, + 0x8a, 0xed, 0x09, 0xee, 0x30, 0xf2, 0xe8, 0xf3, 0xc4, 0xf1, 0xe8, 0xf1, 0x26, 0xf6, 0x93, 0xf4, + 0x9a, 0xf7, 0xa9, 0xf7, 0x84, 0xfa, 0xf0, 0xfe, 0xad, 0xfb, 0x67, 0xfc, 0x4d, 0xfe, 0x55, 0x01, + 0x15, 0x03, 0x50, 0x01, 0x7f, 0x03, 0x5e, 0x0a, 0x3d, 0x0c, 0x6e, 0x08, 0xed, 0x07, 0x8d, 0x04, + 0xb3, 0x07, 0x77, 0x05, 0x05, 0x02, 0x01, 0x00, 0x40, 0xff, 0x83, 0x00, 0x0f, 0xfa, 0x96, 0xf6, + 0x9d, 0xf8, 0x2b, 0xff, 0x29, 0xfa, 0x69, 0xf7, 0x1f, 0xf4, 0x76, 0xf4, 0x55, 0xfb, 0x6d, 0xfe, + 0x46, 0xfe, 0x3c, 0x01, 0x72, 0x04, 0x4d, 0x05, 0x15, 0x05, 0xda, 0x03, 0xe2, 0x08, 0xc1, 0x0c, + 0x18, 0x0d, 0x3d, 0x0e, 0x9e, 0x12, 0x6f, 0x18, 0x45, 0x1c, 0x1e, 0x1e, 0x35, 0x1e, 0x82, 0x22, + 0x9f, 0x22, 0x63, 0x22, 0x81, 0x1f, 0x8d, 0x1d, 0x2a, 0x1e, 0x1f, 0x1c, 0x10, 0x19, 0x9f, 0x10, + 0xe1, 0x0a, 0xd5, 0x08, 0x60, 0xfe, 0xea, 0xf1, 0x2e, 0xed, 0x20, 0xea, 0xe7, 0xe4, 0xf5, 0xe1, + 0x2f, 0xe0, 0xd4, 0xe0, 0x59, 0xe3, 0x86, 0xe1, 0xf2, 0xe6, 0xb0, 0xe8, 0x82, 0xe7, 0x48, 0xe5, + 0x90, 0xe0, 0x59, 0xe0, 0xcc, 0xe6, 0x3f, 0xea, 0x80, 0xe8, 0x23, 0xeb, 0x1c, 0xef, 0x04, 0xf4, + 0xf5, 0xf8, 0x29, 0xfc, 0x79, 0xfd, 0xce, 0x03, 0xe1, 0x0a, 0x3f, 0x0a, 0x22, 0x10, 0xc1, 0x14, + 0x86, 0x17, 0x8c, 0x1a, 0x3c, 0x16, 0x7b, 0x10, 0x44, 0x0f, 0xd6, 0x0e, 0x4e, 0x04, 0x68, 0xfd, + 0x1e, 0x00, 0x33, 0x04, 0xb8, 0x06, 0x8a, 0x05, 0x56, 0x03, 0x50, 0x04, 0xeb, 0x05, 0xc6, 0x00, + 0x27, 0x00, 0x19, 0x02, 0x09, 0x05, 0x33, 0x04, 0x5d, 0x03, 0xd9, 0x02, 0x92, 0x06, 0x41, 0x0c, + 0xc8, 0x07, 0xbc, 0x03, 0xb2, 0x04, 0xd4, 0x06, 0x2f, 0x07, 0x71, 0x0a, 0x70, 0x09, 0x0b, 0x0e, + 0x44, 0x12, 0x0f, 0x12, 0x03, 0x15, 0xdc, 0x14, 0x8e, 0x16, 0x9b, 0x17, 0x25, 0x15, 0x9c, 0x0e, + 0x1d, 0x0d, 0xd7, 0x0b, 0xaa, 0x06, 0x46, 0x02, 0xe8, 0xff, 0x7a, 0xff, 0x5b, 0xfc, 0xf2, 0xf6, + 0xef, 0xee, 0x93, 0xec, 0xe5, 0xea, 0xed, 0xe7, 0xff, 0xe7, 0x55, 0xe7, 0x3c, 0xe9, 0x16, 0xea, + 0xe5, 0xe5, 0xb8, 0xe6, 0x13, 0xe5, 0x28, 0xe9, 0x93, 0xe5, 0x17, 0xe3, 0x64, 0xe8, 0x8c, 0xe9, + 0x87, 0xed, 0xe9, 0xf0, 0x4f, 0xf8, 0xb1, 0x02, 0x5e, 0x07, 0x84, 0x08, 0x4c, 0x0b, 0x1a, 0x0f, + 0x1b, 0x12, 0x22, 0x16, 0x05, 0x15, 0x06, 0x12, 0x70, 0x15, 0xfd, 0x14, 0x1a, 0x11, 0xfd, 0x0a, + 0x33, 0x02, 0x78, 0xff, 0x9d, 0xfe, 0x0a, 0xf7, 0xef, 0xf3, 0x67, 0xf2, 0x2e, 0xef, 0x44, 0xec, + 0xfb, 0xe8, 0x5c, 0xe6, 0xd2, 0xec, 0xf8, 0xeb, 0xce, 0xe5, 0x7b, 0xe3, 0xcf, 0xe7, 0x1a, 0xf0, + 0x6d, 0xee, 0xc6, 0xec, 0x52, 0xf0, 0x72, 0xf5, 0x27, 0xfa, 0xd8, 0xfb, 0x81, 0x00, 0xa2, 0x08, + 0x73, 0x0f, 0x41, 0x10, 0xe1, 0x16, 0x9f, 0x19, 0xf8, 0x1f, 0xb3, 0x28, 0xd7, 0x25, 0xa0, 0x20, + 0xda, 0x1d, 0xc7, 0x1c, 0x23, 0x17, 0x0b, 0x13, 0x25, 0x0c, 0xb3, 0x06, 0xb2, 0x04, 0x30, 0xfd, + 0x7f, 0xf6, 0xab, 0xf5, 0x57, 0xf3, 0x15, 0xf2, 0xa4, 0xf0, 0xf9, 0xf4, 0x42, 0xf8, 0x08, 0xfc, + 0xf6, 0xfb, 0x3d, 0xf9, 0xa7, 0xfd, 0x42, 0x02, 0xdf, 0x00, 0x7e, 0xfe, 0x7a, 0x00, 0xa8, 0x03, + 0x6a, 0x05, 0xee, 0x05, 0x80, 0x09, 0xcf, 0x0f, 0x0a, 0x12, 0x18, 0x15, 0xa3, 0x12, 0x3e, 0x11, + 0x2d, 0x10, 0x9b, 0x0c, 0x54, 0x08, 0x83, 0x04, 0xfc, 0x02, 0x45, 0xff, 0xef, 0xf7, 0x18, 0xf1, + 0x78, 0xf0, 0xa8, 0xef, 0xfe, 0xe9, 0x60, 0xe3, 0xb0, 0xe0, 0xf2, 0xde, 0x66, 0xe1, 0xf6, 0xe0, + 0x5b, 0xe1, 0xe0, 0xe4, 0x54, 0xeb, 0x90, 0xf0, 0xc3, 0xef, 0x87, 0xf2, 0x42, 0xf4, 0xa6, 0xf9, + 0xa6, 0xfc, 0xbe, 0xfb, 0xbe, 0x03, 0x77, 0x0d, 0x53, 0x14, 0x9e, 0x16, 0x6c, 0x1b, 0xf5, 0x1e, + 0x86, 0x22, 0x54, 0x24, 0xe9, 0x1d, 0x62, 0x1c, 0x1c, 0x1f, 0x0d, 0x22, 0xaa, 0x20, 0x8c, 0x1d, + 0xa4, 0x1d, 0x54, 0x1c, 0x5b, 0x16, 0xc8, 0x0c, 0xe1, 0x07, 0xef, 0x04, 0x48, 0x00, 0x2a, 0xfa, + 0xa6, 0xf6, 0x0f, 0xf6, 0xeb, 0xf4, 0x0e, 0xf5, 0xe5, 0xf3, 0x6e, 0xf1, 0x29, 0xf3, 0x18, 0xf3, + 0xae, 0xef, 0x2c, 0xef, 0xdd, 0xee, 0xc3, 0xf0, 0x61, 0xf5, 0x9a, 0xf4, 0xdc, 0xf4, 0xba, 0xfb, + 0xf6, 0xfc, 0xc6, 0xfd, 0x04, 0x00, 0x51, 0x02, 0x60, 0x04, 0x19, 0x08, 0xd7, 0x06, 0x42, 0x06, + 0x33, 0x0d, 0xe2, 0x0d, 0xb4, 0x0b, 0xf2, 0x08, 0xb6, 0x07, 0xf3, 0x06, 0x16, 0x00, 0xee, 0xf8, + 0x40, 0xf8, 0xf5, 0xf4, 0x52, 0xf3, 0xe9, 0xef, 0x7e, 0xee, 0x16, 0xf1, 0x59, 0xed, 0x63, 0xeb, + 0xd9, 0xe7, 0xc3, 0xe9, 0x74, 0xeb, 0x6a, 0xef, 0xa2, 0xeb, 0x18, 0xed, 0x77, 0xf5, 0xd2, 0xfb, + 0x68, 0x00, 0x13, 0xfd, 0x84, 0x00, 0x06, 0x05, 0xca, 0x06, 0xb3, 0x08, 0x0d, 0x0a, 0xd6, 0x0e, + 0x16, 0x13, 0x22, 0x18, 0xba, 0x16, 0xf8, 0x17, 0xeb, 0x19, 0x9a, 0x17, 0x70, 0x16, 0xc6, 0x10, + 0x0b, 0x10, 0x89, 0x10, 0x75, 0x09, 0xa4, 0x01, 0x04, 0xfd, 0xce, 0xf8, 0x52, 0xf6, 0x4e, 0xf0, + 0x2b, 0xe9, 0x24, 0xe6, 0x48, 0xe6, 0x55, 0xe6, 0x35, 0xe4, 0xd1, 0xe3, 0x1b, 0xe8, 0x25, 0xea, + 0x7f, 0xe9, 0xb1, 0xe8, 0x94, 0xe8, 0x85, 0xed, 0x3f, 0xee, 0xd2, 0xea, 0x4d, 0xee, 0xad, 0xf0, + 0x49, 0xf4, 0x4e, 0xf8, 0x97, 0xfe, 0x1c, 0x01, 0x32, 0x04, 0xcd, 0x0a, 0x6b, 0x0c, 0xa5, 0x10, + 0xa1, 0x14, 0xde, 0x14, 0x46, 0x16, 0xc1, 0x14, 0xa3, 0x14, 0x3c, 0x13, 0xa8, 0x10, 0xbd, 0x0b, + 0x6d, 0x07, 0x4f, 0x09, 0x0a, 0x08, 0xc5, 0x08, 0x43, 0x08, 0x15, 0x09, 0x43, 0x0b, 0xc0, 0x0c, + 0x2f, 0x07, 0x07, 0x07, 0x12, 0x0a, 0xda, 0x08, 0x4d, 0x05, 0x45, 0xff, 0x80, 0x01, 0x85, 0x02, + 0x3b, 0x00, 0xee, 0xfb, 0x5a, 0xfc, 0x7c, 0xfe, 0x03, 0xfb, 0x1d, 0xf9, 0x53, 0xf9, 0xca, 0xfe, + 0xd8, 0xfe, 0xde, 0x01, 0xb6, 0x01, 0x76, 0x02, 0x77, 0x0a, 0xf3, 0x0d, 0x9a, 0x0b, 0x9c, 0x07, + 0xe4, 0x06, 0x63, 0x06, 0xfc, 0x03, 0x00, 0x00, 0x73, 0xfd, 0xfa, 0xfc, 0x57, 0xfe, 0x0c, 0xfa, + 0x0a, 0xf8, 0x84, 0xf7, 0xbb, 0xf5, 0xae, 0xf1, 0x2a, 0xec, 0x55, 0xeb, 0x55, 0xee, 0x54, 0xf4, + 0x99, 0xf3, 0x49, 0xf1, 0x07, 0xf5, 0x8f, 0xf5, 0x8a, 0xf5, 0x12, 0xf3, 0xe2, 0xf0, 0xc4, 0xef, + 0x4e, 0xf1, 0x4d, 0xf3, 0xb9, 0xf7, 0xc3, 0x00, 0xd8, 0x05, 0xea, 0x0a, 0x29, 0x0e, 0x59, 0x10, + 0x64, 0x15, 0x02, 0x18, 0xda, 0x17, 0x03, 0x17, 0x22, 0x1b, 0x84, 0x1c, 0xb9, 0x1a, 0x9e, 0x18, + 0x75, 0x18, 0xed, 0x15, 0x11, 0x0e, 0x60, 0x0a, 0xd4, 0x04, 0x79, 0x00, 0xed, 0xfc, 0x9d, 0xf6, + 0x05, 0xf4, 0x50, 0xf1, 0x31, 0xf1, 0x3e, 0xf3, 0x76, 0xf3, 0x5d, 0xf0, 0x7c, 0xf1, 0xfc, 0xf4, + 0xdf, 0xf1, 0x49, 0xf4, 0x2a, 0xf6, 0xf0, 0xf8, 0x6b, 0xfe, 0xf3, 0x00, 0x54, 0x03, 0x5c, 0x0a, + 0xdc, 0x0e, 0x17, 0x12, 0x5a, 0x12, 0x76, 0x12, 0x0a, 0x1a, 0x86, 0x1c, 0x27, 0x1b, 0x0a, 0x1b, + 0xfe, 0x1c, 0xde, 0x1d, 0x31, 0x1b, 0xc6, 0x11, 0x0e, 0x0e, 0x97, 0x0a, 0x27, 0x01, 0x69, 0xf8, + 0x37, 0xef, 0x01, 0xec, 0x5b, 0xe8, 0x28, 0xe8, 0x17, 0xe6, 0xcb, 0xe3, 0xac, 0xe4, 0x3e, 0xe6, + 0x96, 0xe7, 0xaa, 0xe4, 0x52, 0xe7, 0x11, 0xea, 0x16, 0xed, 0xc5, 0xee, 0xc6, 0xf0, 0xdd, 0xf3, + 0xea, 0xf5, 0x72, 0xf5, 0x0b, 0xf6, 0x51, 0xfa, 0x8e, 0x01, 0xc2, 0x08, 0x23, 0x09, 0x5d, 0x09, + 0xeb, 0x0f, 0x71, 0x13, 0xe2, 0x11, 0x29, 0x10, 0x08, 0x0f, 0x28, 0x0e, 0x3a, 0x08, 0xa1, 0x03, + 0x56, 0xff, 0x6b, 0xfc, 0xac, 0xf7, 0x7b, 0xef, 0x59, 0xed, 0xd5, 0xeb, 0x3d, 0xe8, 0x6e, 0xe7, + 0x83, 0xe5, 0x60, 0xe3, 0xa6, 0xe5, 0x3a, 0xe9, 0xb9, 0xea, 0x81, 0xed, 0xfa, 0xf2, 0xf8, 0xf6, + 0xc1, 0xf7, 0xf4, 0xf9, 0x61, 0xfe, 0x9c, 0x04, 0x37, 0x09, 0x07, 0x0b, 0x86, 0x0f, 0xcf, 0x15, + 0x06, 0x1b, 0xa5, 0x1e, 0x6f, 0x21, 0x49, 0x22, 0x16, 0x25, 0x95, 0x28, 0xba, 0x27, 0xd7, 0x26, + 0x6a, 0x28, 0xdf, 0x27, 0xb9, 0x23, 0xd0, 0x1e, 0x82, 0x19, 0x26, 0x18, 0x75, 0x13, 0x08, 0x0a, + 0x42, 0x02, 0xc0, 0xfc, 0x3f, 0xf8, 0xe5, 0xf3, 0x2f, 0xee, 0x0c, 0xe9, 0x4e, 0xea, 0xab, 0xe7, + 0x47, 0xe4, 0x26, 0xde, 0x26, 0xe0, 0xab, 0xe2, 0xa8, 0xdf, 0x8c, 0xe0, 0x52, 0xe1, 0xfd, 0xe4, + 0x89, 0xe7, 0xe0, 0xeb, 0xb5, 0xef, 0x58, 0xf2, 0x54, 0xf6, 0x0b, 0xf8, 0x3d, 0xfa, 0xbc, 0xfc, + 0xb6, 0xfd, 0x09, 0x03, 0xaa, 0x04, 0x16, 0x05, 0x5d, 0x07, 0xb3, 0x0a, 0xc4, 0x0a, 0x79, 0x04, + 0x1d, 0x00, 0x93, 0xfd, 0xf7, 0xfc, 0xc7, 0xfb, 0x90, 0xfb, 0x88, 0xfa, 0xd9, 0xfa, 0x81, 0xfc, + 0x25, 0xf8, 0x4e, 0xf6, 0xd5, 0xf6, 0x56, 0xf5, 0xdd, 0xf2, 0x1f, 0xf3, 0x2f, 0xf8, 0x1e, 0xff, + 0xc5, 0x01, 0x80, 0x02, 0xaf, 0x09, 0x93, 0x0d, 0x78, 0x0d, 0x64, 0x0f, 0x8e, 0x11, 0x20, 0x15, + 0xee, 0x18, 0xf8, 0x18, 0xa5, 0x1a, 0xcb, 0x1c, 0x72, 0x20, 0xb0, 0x23, 0x19, 0x22, 0x28, 0x1f, + 0x5c, 0x1c, 0x0e, 0x1b, 0x14, 0x16, 0x6e, 0x0e, 0x20, 0x09, 0xd3, 0x08, 0x29, 0x04, 0xd8, 0xfc, + 0x1d, 0xfb, 0x43, 0xf6, 0x4c, 0xf4, 0x04, 0xf1, 0x43, 0xe9, 0xf7, 0xe6, 0xb1, 0xea, 0xbe, 0xea, + 0x6b, 0xe9, 0x7d, 0xea, 0x52, 0xed, 0x2e, 0xf4, 0x4e, 0xf2, 0xeb, 0xf0, 0xa5, 0xf1, 0xbe, 0xf2, + 0xcf, 0xf2, 0x25, 0xf1, 0xa3, 0xef, 0xe4, 0xf2, 0x04, 0xf9, 0x1a, 0xfd, 0x77, 0xff, 0x2d, 0x01, + 0xdf, 0x04, 0x39, 0x09, 0x52, 0x07, 0x5f, 0x05, 0x88, 0x05, 0xae, 0x06, 0x78, 0x05, 0x57, 0x04, + 0x42, 0x07, 0x16, 0x06, 0xcd, 0x02, 0x5d, 0x00, 0x66, 0xfe, 0x11, 0xfe, 0xbb, 0xfc, 0xb7, 0xfd, + 0x9e, 0xfe, 0x06, 0xff, 0x52, 0x02, 0x4e, 0x04, 0xcf, 0x04, 0x95, 0x00, 0x70, 0x00, 0xc2, 0x00, + 0xfe, 0x00, 0x39, 0x00, 0x77, 0xfe, 0x9c, 0xfe, 0x53, 0xff, 0xed, 0xfd, 0x4a, 0xff, 0x67, 0x01, + 0xe1, 0x05, 0xe2, 0x05, 0xa9, 0x05, 0xfd, 0x08, 0x35, 0x0c, 0x88, 0x0f, 0x60, 0x10, 0x99, 0x0e, + 0x6d, 0x0f, 0x8b, 0x12, 0x6e, 0x0c, 0x1d, 0x09, 0xe8, 0x09, 0x40, 0x07, 0xc6, 0x05, 0x79, 0x01, + 0xf9, 0xfe, 0x1d, 0xfe, 0x7e, 0xff, 0x94, 0xfd, 0xd4, 0xf7, 0x96, 0xf5, 0x07, 0xf5, 0xfa, 0xf7, + 0x00, 0xf5, 0x16, 0xf2, 0x8c, 0xf1, 0x3b, 0xf4, 0x9f, 0xf3, 0x7b, 0xf1, 0x5c, 0xf1, 0x21, 0xf2, + 0xdc, 0xf2, 0x68, 0xf2, 0xa8, 0xf1, 0x64, 0xf5, 0x9d, 0xfe, 0xae, 0x03, 0xb3, 0x05, 0xdf, 0x0a, + 0x7d, 0x0f, 0x4a, 0x16, 0x9f, 0x17, 0x11, 0x15, 0xc9, 0x16, 0xc7, 0x19, 0x2d, 0x16, 0xa5, 0x12, + 0xa5, 0x11, 0xa1, 0x10, 0x2c, 0x0d, 0xc5, 0x07, 0x86, 0x01, 0x3c, 0xfb, 0x58, 0xf8, 0x5f, 0xf2, + 0x08, 0xed, 0x95, 0xe7, 0xf1, 0xe5, 0xb2, 0xe3, 0x35, 0xe1, 0x20, 0xe1, 0x68, 0xe3, 0xf6, 0xe4, + 0xdb, 0xe3, 0x2b, 0xe2, 0xc0, 0xe3, 0x64, 0xe6, 0xe2, 0xe6, 0xe2, 0xe7, 0x40, 0xed, 0xe2, 0xf2, + 0xed, 0xfa, 0x3b, 0x01, 0xb2, 0x04, 0xd4, 0x09, 0x61, 0x0b, 0x0a, 0x0f, 0xcd, 0x12, 0x78, 0x17, + 0x97, 0x1d, 0xf9, 0x21, 0x56, 0x22, 0x45, 0x21, 0xdd, 0x21, 0xd6, 0x1e, 0x45, 0x1d, 0xf1, 0x13, + 0x8f, 0x0a, 0x51, 0x06, 0x40, 0x03, 0xeb, 0xfe, 0x02, 0xf9, 0xf4, 0xf5, 0xdb, 0xf5, 0x93, 0xf5, + 0x94, 0xef, 0x55, 0xee, 0x64, 0xf0, 0xa6, 0xf1, 0x0a, 0xf1, 0x5c, 0xee, 0xcd, 0xf0, 0xbd, 0xf4, + 0x35, 0xf4, 0xa3, 0xf5, 0xe6, 0xf7, 0x78, 0xf8, 0x78, 0xfb, 0x29, 0xff, 0x41, 0x02, 0xa9, 0x02, + 0x59, 0x05, 0xc6, 0x0b, 0x2b, 0x0e, 0x88, 0x10, 0x59, 0x15, 0x5e, 0x18, 0x7a, 0x17, 0x7f, 0x15, + 0xe1, 0x0f, 0x2b, 0x0c, 0x35, 0x0d, 0x40, 0x06, 0x63, 0xff, 0x51, 0xfb, 0xf2, 0xfa, 0x07, 0xf9, + 0xf7, 0xf3, 0x91, 0xf1, 0x53, 0xf1, 0x33, 0xf2, 0x17, 0xee, 0xc2, 0xeb, 0xcd, 0xea, 0xb4, 0xee, + 0x57, 0xef, 0x76, 0xef, 0xfb, 0xf2, 0xcc, 0xf6, 0x47, 0xf9, 0x7c, 0xf8, 0x84, 0xfb, 0xda, 0xff, + 0x6d, 0x01, 0xe5, 0x04, 0x5d, 0x08, 0xee, 0x0d, 0x3e, 0x16, 0x24, 0x1c, 0xb0, 0x1d, 0xf8, 0x1e, + 0x5c, 0x23, 0x2d, 0x24, 0xdf, 0x21, 0xe6, 0x1d, 0x24, 0x1c, 0x83, 0x1a, 0x3c, 0x18, 0x63, 0x16, + 0x5e, 0x0e, 0x19, 0x08, 0xe6, 0x04, 0x8f, 0xfe, 0x92, 0xf7, 0x85, 0xf4, 0xff, 0xf2, 0x71, 0xf0, + 0xf8, 0xeb, 0x56, 0xe6, 0x74, 0xe7, 0x1a, 0xe9, 0x07, 0xe9, 0x24, 0xe6, 0x2c, 0xe6, 0x89, 0xe9, + 0x33, 0xec, 0xe8, 0xe8, 0x92, 0xec, 0x4c, 0xef, 0x3c, 0xf3, 0x0e, 0xf8, 0x02, 0xf9, 0xed, 0xfb, + 0x5f, 0x01, 0xb8, 0x04, 0x16, 0x03, 0x7f, 0x04, 0xa1, 0x07, 0x6c, 0x0b, 0xd5, 0x0b, 0xc9, 0x09, + 0xff, 0x09, 0xbf, 0x07, 0x11, 0x07, 0x9e, 0x06, 0xd3, 0x04, 0x9c, 0x00, 0x84, 0xfd, 0x44, 0xfd, + 0x23, 0xfa, 0xe0, 0xf8, 0xef, 0xf7, 0xda, 0xf8, 0x3c, 0xf8, 0x24, 0xf6, 0xa6, 0xf5, 0x9c, 0xf9, + 0x20, 0xff, 0x72, 0x00, 0x8e, 0x02, 0xd2, 0x08, 0xf8, 0x0c, 0xde, 0x0f, 0xe6, 0x10, 0xdc, 0x12, + 0xb4, 0x15, 0xca, 0x17, 0x0c, 0x15, 0xc8, 0x14, 0x05, 0x18, 0x44, 0x18, 0x8c, 0x15, 0x0e, 0x14, + 0x88, 0x13, 0x1f, 0x12, 0xdb, 0x0c, 0x3f, 0x07, 0x29, 0x03, 0xdc, 0xff, 0x75, 0xfa, 0x26, 0xf5, + 0xfa, 0xf1, 0x5e, 0xed, 0xcf, 0xec, 0xe9, 0xe9, 0x02, 0xe5, 0x8e, 0xe0, 0x21, 0xdf, 0xa0, 0xdf, + 0xa6, 0xdc, 0x5b, 0xd9, 0x83, 0xdb, 0x1e, 0xdf, 0x37, 0xe4, 0x9c, 0xe8, 0x34, 0xec, 0xe9, 0xf0, + 0x73, 0xf1, 0xb4, 0xed, 0x4e, 0xed, 0x7e, 0xf0, 0x60, 0xf5, 0x33, 0xfc, 0x4a, 0xfe, 0xd6, 0x00, + 0xad, 0x08, 0xdb, 0x0c, 0x05, 0x0d, 0x7f, 0x0b, 0x8b, 0x0d, 0x30, 0x0f, 0x08, 0x10, 0xe8, 0x0b, + 0xa7, 0x0e, 0x6b, 0x0f, 0xb8, 0x0e, 0xa4, 0x0c, 0x61, 0x08, 0x50, 0x09, 0x19, 0x08, 0x74, 0x05, + 0x7c, 0x01, 0xa0, 0xff, 0x31, 0xff, 0x71, 0x00, 0xc5, 0x00, 0xf7, 0x00, 0x34, 0x03, 0x79, 0x04, + 0x4f, 0x03, 0xf6, 0x03, 0x19, 0x04, 0x51, 0x02, 0x1c, 0xff, 0x5a, 0xfd, 0x30, 0xfd, 0x1c, 0xfd, + 0x7c, 0x02, 0x31, 0x05, 0x70, 0x07, 0x0e, 0x0a, 0x57, 0x0c, 0x11, 0x0f, 0x31, 0x10, 0x48, 0x11, + 0xfc, 0x12, 0x2e, 0x16, 0xc4, 0x15, 0xa5, 0x13, 0x27, 0x11, 0xb6, 0x10, 0x8d, 0x0f, 0xb7, 0x0c, + 0xfe, 0x08, 0x6b, 0x05, 0xa7, 0x00, 0xb5, 0xfd, 0x5c, 0xf8, 0x66, 0xf6, 0x84, 0xf7, 0x1c, 0xf7, + 0x57, 0xf3, 0x6f, 0xef, 0xbb, 0xee, 0x21, 0xee, 0x1b, 0xe9, 0x03, 0xe5, 0x9a, 0xe7, 0xfe, 0xe7, + 0x78, 0xe8, 0x69, 0xeb, 0xed, 0xe9, 0x63, 0xec, 0x9f, 0xf0, 0xd8, 0xf3, 0xfd, 0xf8, 0x87, 0xfb, + 0x28, 0x02, 0x9c, 0x06, 0x22, 0x0b, 0x10, 0x0f, 0x56, 0x11, 0x2a, 0x16, 0x39, 0x19, 0xca, 0x16, + 0x8d, 0x13, 0x27, 0x17, 0x47, 0x17, 0x66, 0x14, 0x3f, 0x11, 0xd3, 0x0c, 0xcb, 0x0b, 0x1f, 0x0a, + 0x07, 0x04, 0xf5, 0xfd, 0x23, 0xfd, 0xb1, 0xfa, 0x5b, 0xf7, 0xc4, 0xf1, 0xf3, 0xf1, 0x48, 0xf2, + 0xb5, 0xee, 0xc1, 0xec, 0x59, 0xee, 0xc9, 0xef, 0xea, 0xf0, 0x62, 0xf0, 0x1b, 0xef, 0xb4, 0xf1, + 0x33, 0xf5, 0xfe, 0xfa, 0x9c, 0xfe, 0x12, 0x02, 0x81, 0x07, 0x78, 0x0b, 0x6a, 0x0d, 0x65, 0x13, + 0xc0, 0x19, 0x00, 0x1d, 0x1d, 0x1f, 0x75, 0x1e, 0x14, 0x1d, 0x1f, 0x1e, 0xf8, 0x1e, 0x1a, 0x1c, + 0x57, 0x18, 0xcf, 0x15, 0xea, 0x0f, 0x1e, 0x0b, 0xea, 0x06, 0x5f, 0x00, 0xbc, 0xfd, 0x7c, 0xfe, + 0x92, 0xfa, 0x43, 0xf5, 0x2f, 0xf4, 0x15, 0xf4, 0xeb, 0xee, 0x32, 0xed, 0x4f, 0xec, 0xaa, 0xec, + 0x27, 0xec, 0x67, 0xea, 0xd9, 0xe7, 0xa5, 0xe7, 0x1f, 0xe9, 0xd4, 0xe7, 0xd5, 0xe8, 0x24, 0xea, + 0x1d, 0xef, 0xf9, 0xf1, 0x63, 0xf1, 0x8a, 0xf2, 0x59, 0xf6, 0xc8, 0xfc, 0x0c, 0x01, 0xc4, 0x04, + 0x2b, 0x04, 0x4f, 0x05, 0xdd, 0x04, 0x60, 0x02, 0x62, 0x00, 0xa5, 0xfb, 0xd5, 0xf7, 0x2d, 0xf4, + 0x8e, 0xf1, 0x52, 0xf0, 0xe3, 0xef, 0x58, 0xf1, 0x7b, 0xf0, 0x95, 0xeb, 0x4c, 0xe9, 0xd2, 0xea, + 0x6f, 0xec, 0x8b, 0xef, 0x59, 0xf3, 0x75, 0xf6, 0x55, 0xfb, 0x90, 0xfe, 0x17, 0xfe, 0x32, 0x00, + 0xe5, 0x02, 0xaf, 0x04, 0xe7, 0x07, 0xbc, 0x0a, 0xdb, 0x11, 0x90, 0x17, 0x51, 0x1b, 0xdd, 0x1c, + 0x55, 0x23, 0x46, 0x2a, 0x79, 0x2b, 0x8e, 0x2a, 0x6c, 0x27, 0x1f, 0x26, 0x5a, 0x20, 0x14, 0x1c, + 0x25, 0x19, 0xd7, 0x14, 0x77, 0x11, 0x75, 0x0b, 0xc0, 0x05, 0x7c, 0x00, 0x81, 0xfd, 0xc4, 0xf9, + 0x33, 0xf2, 0xf6, 0xed, 0xea, 0xe9, 0xc0, 0xe6, 0x5e, 0xe6, 0xb7, 0xe4, 0x8e, 0xe6, 0x6e, 0xea, + 0x76, 0xeb, 0xe0, 0xea, 0xea, 0xeb, 0x44, 0xec, 0x83, 0xef, 0xe2, 0xf3, 0x03, 0xf6, 0x3c, 0xfb, + 0x7e, 0x01, 0x4b, 0x07, 0x0b, 0x0a, 0x0d, 0x0c, 0x2d, 0x0d, 0x4f, 0x12, 0x42, 0x12, 0x01, 0x0f, + 0xbc, 0x0b, 0xdf, 0x0b, 0x15, 0x0c, 0x6c, 0x08, 0xa2, 0x06, 0xf9, 0x06, 0x90, 0x04, 0x7d, 0x00, + 0xcb, 0xfa, 0x7f, 0xf2, 0xf8, 0xf0, 0xfe, 0xef, 0x01, 0xed, 0xe5, 0xee, 0xfb, 0xef, 0x00, 0xef, + 0x5a, 0xef, 0x88, 0xf2, 0xfb, 0xf6, 0x97, 0xfb, 0x83, 0xfe, 0x8f, 0x01, 0xa2, 0x04, 0xe7, 0x07, + 0xc5, 0x0c, 0x9c, 0x0f, 0x15, 0x14, 0xa9, 0x15, 0xf3, 0x16, 0xf8, 0x1a, 0x19, 0x1e, 0x99, 0x1c, + 0x6e, 0x1d, 0xce, 0x1f, 0x4e, 0x1e, 0x37, 0x1d, 0x5e, 0x19, 0xc5, 0x15, 0x53, 0x12, 0x9e, 0x0c, + 0x61, 0x08, 0xcb, 0x04, 0xab, 0x02, 0x95, 0xfd, 0xf3, 0xf6, 0x1a, 0xf0, 0xee, 0xed, 0xfd, 0xeb, + 0x56, 0xe7, 0x24, 0xe5, 0x47, 0xe2, 0xdc, 0xe0, 0x89, 0xde, 0x9c, 0xdc, 0x60, 0xe2, 0xc5, 0xe6, + 0xd8, 0xe9, 0x42, 0xeb, 0x2e, 0xeb, 0x99, 0xef, 0xe5, 0xf1, 0xf6, 0xf4, 0xce, 0xf6, 0x9f, 0xfa, + 0x8e, 0xfd, 0x03, 0x01, 0x10, 0x06, 0xea, 0x05, 0xca, 0x07, 0xaa, 0x0c, 0x79, 0x0e, 0xb2, 0x0f, + 0x90, 0x0e, 0x48, 0x0e, 0xec, 0x0e, 0xa5, 0x10, 0x0e, 0x10, 0xc9, 0x0d, 0x07, 0x10, 0xe3, 0x0e, + 0xcf, 0x08, 0x3d, 0x03, 0xfc, 0x00, 0x12, 0xff, 0x89, 0xfc, 0x96, 0xfa, 0x46, 0xf8, 0xab, 0xf9, + 0x90, 0xf7, 0xea, 0xf3, 0x0b, 0xf5, 0x2a, 0xf7, 0xb4, 0xf7, 0x24, 0xf5, 0xe8, 0xf2, 0x07, 0xef, + 0xa1, 0xee, 0x22, 0xef, 0xf8, 0xef, 0x80, 0xf5, 0x64, 0xf9, 0xa2, 0xfc, 0xcd, 0xff, 0x57, 0x02, + 0x39, 0x05, 0x5a, 0x09, 0x50, 0x0b, 0x43, 0x0b, 0xd4, 0x0c, 0x39, 0x0e, 0xd4, 0x0e, 0x3c, 0x0f, + 0x54, 0x0f, 0x82, 0x0a, 0xec, 0x06, 0x45, 0x05, 0x88, 0x01, 0x5c, 0xfe, 0x0a, 0xff, 0x2a, 0xff, + 0x09, 0xff, 0x08, 0x00, 0x11, 0x00, 0xfb, 0xfd, 0x0b, 0xf9, 0x66, 0xf3, 0xb5, 0xef, 0x2a, 0xf3, + 0x76, 0xf4, 0x59, 0xf1, 0xc0, 0xee, 0xab, 0xee, 0x80, 0xef, 0xe7, 0xf0, 0xae, 0xf3, 0x1d, 0xf8, + 0x92, 0xfd, 0x05, 0x01, 0x17, 0x02, 0xf7, 0x01, 0x24, 0x07, 0xdc, 0x0b, 0xb9, 0x0e, 0x8c, 0x11, + 0x27, 0x13, 0xef, 0x13, 0x06, 0x14, 0x96, 0x13, 0x22, 0x11, 0x7f, 0x0f, 0xe7, 0x0e, 0x4b, 0x0a, + 0x7b, 0x07, 0x3e, 0x06, 0xc9, 0x02, 0xbf, 0x02, 0x79, 0x00, 0xde, 0xfc, 0x84, 0xfb, 0xb8, 0xf9, + 0xca, 0xf6, 0xf7, 0xf3, 0x3e, 0xf3, 0xf0, 0xf2, 0x02, 0xf6, 0x3f, 0xf6, 0x40, 0xf6, 0x75, 0xf7, + 0x82, 0xf7, 0x84, 0xfa, 0x82, 0xfa, 0x6f, 0xfb, 0xa3, 0xfe, 0x81, 0x03, 0xd6, 0x05, 0xb6, 0x06, + 0x0e, 0x0c, 0x47, 0x12, 0x0e, 0x17, 0xba, 0x18, 0x38, 0x1a, 0x92, 0x18, 0xb1, 0x14, 0x83, 0x13, + 0x6e, 0x11, 0x7b, 0x13, 0x6b, 0x15, 0x2a, 0x0f, 0x29, 0x0b, 0xe6, 0x08, 0xcb, 0x05, 0x0f, 0x03, + 0x3e, 0x01, 0xba, 0xfd, 0x68, 0xfb, 0x42, 0xf9, 0x46, 0xf4, 0x2d, 0xf0, 0x26, 0xef, 0x5b, 0xef, + 0xf0, 0xef, 0x39, 0xef, 0x1a, 0xf0, 0x1c, 0xef, 0x2e, 0xee, 0xdb, 0xee, 0x09, 0xee, 0xa0, 0xef, + 0x23, 0xf4, 0x0f, 0xf8, 0x64, 0xf9, 0xda, 0xf8, 0x70, 0xfa, 0x5c, 0x01, 0x65, 0x05, 0x60, 0x06, + 0x88, 0x09, 0x4e, 0x0a, 0x80, 0x0b, 0x66, 0x0a, 0x00, 0x08, 0x14, 0x09, 0x65, 0x08, 0xea, 0x05, + 0x5f, 0xff, 0x86, 0xfa, 0x68, 0xfa, 0xbc, 0xf5, 0xc1, 0xf1, 0xe0, 0xef, 0x74, 0xef, 0x6e, 0xee, + 0x9a, 0xee, 0x67, 0xee, 0x6a, 0xed, 0x8e, 0xf2, 0xda, 0xf3, 0x26, 0xf5, 0x1c, 0xf8, 0x7d, 0xf9, + 0x72, 0xf8, 0xb6, 0xfb, 0x49, 0xfe, 0x3b, 0xfe, 0x96, 0x02, 0x18, 0x08, 0x39, 0x0c, 0x8f, 0x0f, + 0xa7, 0x16, 0xc8, 0x1c, 0xc6, 0x24, 0x3d, 0x2a, 0x4a, 0x2b, 0x91, 0x29, 0xd3, 0x27, 0x80, 0x22, + 0x76, 0x1e, 0x3c, 0x1b, 0xd3, 0x15, 0xef, 0x10, 0xc5, 0x09, 0x4d, 0x01, 0xc8, 0xfa, 0x65, 0xf6, + 0x65, 0xf1, 0xeb, 0xec, 0x96, 0xe9, 0x37, 0xe5, 0xeb, 0xdc, 0x9b, 0xd6, 0x40, 0xd4, 0x82, 0xd5, + 0xe8, 0xd9, 0xb2, 0xd9, 0x50, 0xdb, 0x5a, 0xde, 0x54, 0xde, 0x00, 0xdf, 0x8b, 0xe0, 0xf1, 0xe2, + 0x7b, 0xe8, 0x93, 0xef, 0x6d, 0xf7, 0xd0, 0xfd, 0x93, 0x04, 0x6f, 0x07, 0xd7, 0x0a, 0x34, 0x0e, + 0x7b, 0x0f, 0x42, 0x11, 0xed, 0x11, 0xa8, 0x11, 0x1e, 0x10, 0x42, 0x11, 0x76, 0x13, 0xfb, 0x13, + 0x40, 0x0f, 0xae, 0x08, 0xe5, 0x04, 0x9f, 0x03, 0xfb, 0x00, 0xc5, 0xfa, 0x4e, 0xf9, 0xfb, 0xf8, + 0xed, 0xf5, 0xa7, 0xf3, 0x72, 0xf3, 0x02, 0xf9, 0x12, 0xfd, 0x07, 0xff, 0x80, 0x00, 0xa3, 0x00, + 0xaa, 0x02, 0xdd, 0x02, 0xa4, 0x05, 0xf7, 0x08, 0x0b, 0x0e, 0xc1, 0x13, 0x5a, 0x16, 0x6e, 0x19, + 0x8c, 0x1a, 0x4e, 0x1c, 0x73, 0x1d, 0xf7, 0x1d, 0x6e, 0x1e, 0x8d, 0x1d, 0x71, 0x1a, 0x8c, 0x17, + 0xdb, 0x14, 0xc8, 0x12, 0x95, 0x0f, 0xfe, 0x0e, 0xda, 0x08, 0x94, 0x03, 0xb9, 0xff, 0x7a, 0xf9, + 0x6f, 0xf8, 0xb3, 0xf5, 0x88, 0xf3, 0x77, 0xf2, 0xa6, 0xf0, 0x96, 0xea, 0x73, 0xe8, 0xf3, 0xe8, + 0x1b, 0xe7, 0xd7, 0xe7, 0x32, 0xe9, 0x98, 0xeb, 0x4c, 0xed, 0xe8, 0xee, 0x5a, 0xf0, 0x5a, 0xf1, + 0xcf, 0xf6, 0xff, 0xf9, 0x94, 0xf7, 0x55, 0xf8, 0xed, 0xfa, 0x08, 0xfc, 0x6a, 0x00, 0x27, 0x02, + 0x50, 0x03, 0xd0, 0x07, 0xc5, 0x08, 0x14, 0x07, 0x91, 0x09, 0x17, 0x0a, 0x6d, 0x0b, 0xee, 0x0c, + 0x7c, 0x0c, 0xe0, 0x09, 0x7a, 0x07, 0xc6, 0x04, 0x26, 0x01, 0xab, 0xfe, 0xac, 0xfe, 0x9f, 0xfe, + 0x85, 0xfb, 0x10, 0xfa, 0x1a, 0xf8, 0xe3, 0xf8, 0xbb, 0xfd, 0x40, 0xff, 0xbf, 0xfe, 0x57, 0xfd, + 0x3d, 0xfb, 0x43, 0xfd, 0xd2, 0xfb, 0x87, 0xf9, 0xc4, 0xfb, 0x95, 0xfe, 0xb0, 0xff, 0x0a, 0x00, + 0x6a, 0x00, 0x49, 0x05, 0xb4, 0x08, 0x58, 0x09, 0xba, 0x0b, 0x4d, 0x0e, 0x77, 0x0d, 0xf4, 0x0b, + 0x98, 0x08, 0xc2, 0x08, 0x80, 0x07, 0x33, 0x05, 0xde, 0x04, 0xa8, 0x03, 0x98, 0x00, 0x53, 0xfd, + 0xd3, 0xfb, 0x77, 0xfa, 0x73, 0xfc, 0x5b, 0xfd, 0x2f, 0xfb, 0x23, 0xfa, 0xc1, 0xf6, 0x96, 0xf4, + 0x2a, 0xf2, 0xf8, 0xf2, 0x38, 0xf3, 0x85, 0xf1, 0x03, 0xf3, 0x70, 0xf3, 0xf5, 0xf3, 0x0d, 0xf6, + 0x1b, 0xfa, 0x72, 0xfc, 0xfb, 0xfe, 0x47, 0xff, 0x8b, 0x00, 0x4b, 0x04, 0x40, 0x05, 0xc5, 0x06, + 0xa1, 0x08, 0x18, 0x09, 0xcb, 0x09, 0x1a, 0x06, 0x4c, 0x04, 0x08, 0x05, 0x43, 0x04, 0x2e, 0x04, + 0x2f, 0xff, 0x14, 0xfc, 0x56, 0xf9, 0x2c, 0xf7, 0x48, 0xf7, 0x81, 0xf5, 0x39, 0xf6, 0x74, 0xf7, + 0x0b, 0xf6, 0x3f, 0xf1, 0x51, 0xf0, 0xbc, 0xee, 0x93, 0xeb, 0xf7, 0xee, 0xb6, 0xf2, 0x4a, 0xf4, + 0xf5, 0xf7, 0xf0, 0xf8, 0xe0, 0xf7, 0x8b, 0xf7, 0x56, 0xf9, 0x36, 0xfd, 0x1d, 0x03, 0x43, 0x07, + 0xbb, 0x09, 0x4c, 0x0f, 0x98, 0x16, 0xa0, 0x1c, 0x54, 0x1e, 0xaa, 0x20, 0x74, 0x20, 0x63, 0x1f, + 0x67, 0x1e, 0xc4, 0x1b, 0x7d, 0x19, 0x09, 0x18, 0xe5, 0x15, 0xc4, 0x11, 0x90, 0x0f, 0xb8, 0x0e, + 0xcb, 0x0b, 0xcb, 0x09, 0xde, 0x07, 0x15, 0x05, 0x39, 0xff, 0x19, 0xf9, 0x30, 0xf3, 0xb4, 0xef, + 0xe6, 0xed, 0x63, 0xeb, 0x1f, 0xed, 0xe5, 0xee, 0xd7, 0xee, 0x26, 0xed, 0x4f, 0xea, 0xc6, 0xea, + 0x7d, 0xeb, 0x5b, 0xee, 0xb1, 0xf1, 0x9e, 0xf3, 0xa8, 0xf6, 0x61, 0xf9, 0x21, 0xfb, 0x2d, 0x01, + 0xf8, 0x05, 0xa9, 0x09, 0xb1, 0x0b, 0xce, 0x0c, 0x4e, 0x0c, 0x94, 0x0e, 0x76, 0x0f, 0x6b, 0x10, + 0x1f, 0x12, 0xc0, 0x0e, 0xe4, 0x0c, 0x73, 0x0a, 0x06, 0x04, 0xbf, 0xfc, 0x53, 0xfa, 0x7c, 0xf8, + 0x94, 0xf5, 0x4e, 0xf0, 0xa7, 0xee, 0xd9, 0xef, 0xb3, 0xef, 0x91, 0xf1, 0xa4, 0xf0, 0xdc, 0xf0, + 0x71, 0xf3, 0x6d, 0xf2, 0xd4, 0xf2, 0xa6, 0xf3, 0x98, 0xf3, 0x1c, 0xf7, 0xff, 0xfb, 0x27, 0x00, + 0xea, 0x05, 0xdf, 0x0b, 0x50, 0x10, 0x22, 0x17, 0x34, 0x1f, 0xb5, 0x24, 0xf2, 0x28, 0x41, 0x27, + 0x88, 0x26, 0x21, 0x24, 0x7e, 0x21, 0xeb, 0x1f, 0xde, 0x1b, 0xe8, 0x16, 0x46, 0x0f, 0x90, 0x08, + 0xf2, 0x03, 0xce, 0xfe, 0xb7, 0xfa, 0x8e, 0xf7, 0xc2, 0xf1, 0x04, 0xed, 0x05, 0xea, 0x07, 0xe5, + 0xa9, 0xe2, 0xde, 0xe1, 0x34, 0xdf, 0xf3, 0xdf, 0xd4, 0xe0, 0xba, 0xe0, 0x63, 0xdf, 0x95, 0xdf, + 0xbf, 0xe1, 0xd1, 0xe5, 0x7a, 0xe9, 0x94, 0xed, 0x69, 0xf2, 0x60, 0xf7, 0x85, 0xfa, 0xb7, 0xfd, + 0xcb, 0x04, 0xb0, 0x0d, 0x19, 0x0f, 0xf2, 0x0e, 0xd1, 0x0f, 0xaa, 0x0f, 0x01, 0x10, 0xa0, 0x0f, + 0x24, 0x10, 0x59, 0x10, 0xdb, 0x0e, 0x21, 0x0b, 0x7e, 0x05, 0x42, 0x02, 0xd3, 0xff, 0x23, 0xfe, + 0x07, 0xfc, 0x17, 0xfb, 0x6f, 0xf9, 0x04, 0xfa, 0xe7, 0xfb, 0xcc, 0xfa, 0x22, 0xfd, 0x53, 0xfd, + 0xb9, 0xfd, 0x44, 0x01, 0x5b, 0x01, 0xdf, 0xff, 0xca, 0xff, 0x5d, 0x01, 0x93, 0x04, 0x3e, 0x05, + 0xe3, 0x07, 0x61, 0x0b, 0x75, 0x0d, 0x62, 0x0e, 0x34, 0x10, 0xad, 0x10, 0x22, 0x0f, 0xdc, 0x0b, + 0x5f, 0x08, 0x9b, 0x08, 0x0f, 0x06, 0x30, 0x04, 0xa0, 0x03, 0xa8, 0x01, 0x5b, 0xfe, 0xf7, 0xf7, + 0xe8, 0xf1, 0xa2, 0xee, 0xbe, 0xf0, 0xa9, 0xef, 0x39, 0xf0, 0x03, 0xf0, 0x61, 0xec, 0x91, 0xe8, + 0x5a, 0xe6, 0xec, 0xe5, 0x64, 0xe8, 0x7d, 0xea, 0x4d, 0xec, 0x21, 0xf0, 0x1a, 0xf4, 0x61, 0xf7, + 0xd5, 0xf8, 0x51, 0xfc, 0x2e, 0xff, 0x8e, 0x02, 0xa6, 0x05, 0xb4, 0x08, 0x3c, 0x08, 0x17, 0x07, + 0x09, 0x09, 0xb8, 0x0c, 0xbe, 0x0e, 0x84, 0x0f, 0xfe, 0x11, 0x20, 0x12, 0xbe, 0x13, 0x80, 0x14, + 0x03, 0x12, 0x26, 0x12, 0x80, 0x11, 0x34, 0x0f, 0x4c, 0x0a, 0x1a, 0x06, 0xf8, 0x05, 0x9e, 0x05, + 0x40, 0x03, 0x41, 0x00, 0x13, 0xfd, 0xd2, 0xfa, 0x7c, 0xf9, 0x9e, 0xf8, 0xae, 0xfa, 0x60, 0xfe, + 0xeb, 0xfe, 0x0b, 0x00, 0xf9, 0xff, 0xdf, 0x00, 0x10, 0x01, 0xc2, 0x00, 0x46, 0x02, 0x4d, 0x03, + 0xe4, 0x03, 0x33, 0x06, 0x4c, 0x08, 0xea, 0x08, 0x05, 0x0e, 0x25, 0x13, 0x42, 0x14, 0x96, 0x15, + 0x4b, 0x13, 0xf5, 0x0e, 0x53, 0x0e, 0x3d, 0x0b, 0x25, 0x09, 0x10, 0x06, 0xff, 0x02, 0x54, 0xfe, + 0xc3, 0xfa, 0xbe, 0xf8, 0xfd, 0xf6, 0x16, 0xf5, 0xff, 0xf2, 0x39, 0xef, 0xa8, 0xed, 0x6e, 0xef, + 0xb2, 0xeb, 0xe1, 0xe7, 0x3f, 0xe9, 0xbd, 0xe9, 0x89, 0xe9, 0xf1, 0xeb, 0x6c, 0xea, 0xb2, 0xeb, + 0x57, 0xed, 0x39, 0xef, 0x11, 0xf2, 0x3e, 0xf6, 0xb8, 0xf9, 0x8a, 0xf9, 0xd2, 0xfb, 0xba, 0xfe, + 0xe0, 0x03, 0xbd, 0x07, 0x98, 0x0a, 0x07, 0x0b, 0x24, 0x0c, 0x61, 0x0d, 0x59, 0x0d, 0x08, 0x0e, + 0xe9, 0x09, 0xb9, 0x06, 0xe8, 0x05, 0x83, 0x05, 0xb9, 0x04, 0xc5, 0x01, 0xcf, 0xff, 0x0d, 0x00, + 0x55, 0xfe, 0x93, 0xf9, 0xd3, 0xf7, 0x23, 0xf8, 0x0c, 0xf5, 0xbd, 0xf2, 0xd0, 0xf0, 0x3e, 0xf2, + 0xdb, 0xf3, 0x5a, 0xf5, 0x89, 0xf4, 0xde, 0xf1, 0x23, 0xf3, 0x05, 0xf4, 0x9b, 0xf4, 0x79, 0xf7, + 0x18, 0xfc, 0xba, 0x00, 0x09, 0x02, 0xd8, 0x05, 0x6e, 0x0c, 0xae, 0x14, 0xbe, 0x1b, 0x79, 0x1c, + 0x2f, 0x1d, 0xd8, 0x1b, 0xc1, 0x1a, 0x66, 0x1a, 0x58, 0x18, 0x3a, 0x19, 0xdc, 0x1a, 0xed, 0x19, + 0x28, 0x18, 0xf0, 0x14, 0x38, 0x14, 0xb8, 0x13, 0x0d, 0x10, 0xa9, 0x0c, 0x91, 0x09, 0xfd, 0x04, + 0xbf, 0x00, 0xcf, 0xfa, 0xd0, 0xf4, 0x1f, 0xf2, 0x41, 0xee, 0xd4, 0xec, 0x8e, 0xea, 0xe1, 0xe7, + 0x5f, 0xe6, 0xda, 0xe3, 0x67, 0xe0, 0x46, 0xdd, 0xaf, 0xdf, 0xb3, 0xe3, 0xa9, 0xe3, 0x8a, 0xe3, + 0x43, 0xe9, 0x93, 0xf1, 0xa8, 0xf5, 0xaa, 0xf8, 0xf8, 0xf9, 0x27, 0xfb, 0xf0, 0xfd, 0xf0, 0x00, + 0x05, 0x05, 0x3c, 0x0a, 0xd7, 0x0c, 0x20, 0x0a, 0x66, 0x08, 0xef, 0x04, 0x8a, 0x03, 0x90, 0x04, + 0x11, 0x02, 0xd4, 0xff, 0x84, 0xff, 0x1e, 0xfe, 0x92, 0xfd, 0x31, 0xfc, 0x78, 0xfb, 0x1c, 0xfd, + 0x2a, 0xff, 0x5a, 0x00, 0x91, 0xff, 0x7f, 0xff, 0x15, 0xfe, 0xd6, 0xfd, 0x26, 0xfd, 0x02, 0xfc, + 0x31, 0x00, 0x8d, 0x05, 0x7b, 0x08, 0xef, 0x0a, 0xb0, 0x0f, 0xd5, 0x16, 0x34, 0x1c, 0x23, 0x1f, + 0x96, 0x23, 0x89, 0x23, 0x1e, 0x23, 0xea, 0x24, 0xef, 0x21, 0x13, 0x20, 0xf9, 0x1d, 0x90, 0x18, + 0x61, 0x11, 0x8f, 0x0a, 0x79, 0x07, 0x2f, 0x04, 0x4f, 0xff, 0xc1, 0xfa, 0x75, 0xf4, 0xab, 0xf3, + 0xcf, 0xf1, 0x52, 0xed, 0xff, 0xe9, 0x4e, 0xea, 0x1c, 0xea, 0x81, 0xe7, 0xf2, 0xe9, 0x28, 0xe7, + 0x9a, 0xe5, 0xac, 0xe8, 0x44, 0xe8, 0xc3, 0xe7, 0xe4, 0xec, 0x39, 0xf2, 0x2f, 0xf3, 0x0a, 0xf4, + 0xd8, 0xf7, 0x9c, 0xfb, 0x56, 0x01, 0x09, 0x07, 0xd6, 0x08, 0xdb, 0x09, 0xe8, 0x0b, 0xd3, 0x0a, + 0x3e, 0x08, 0x01, 0x07, 0x31, 0x08, 0xa2, 0x06, 0xdc, 0x01, 0xe2, 0xfb, 0x43, 0xf9, 0xc5, 0xf9, + 0x18, 0xf9, 0x33, 0xf9, 0xd8, 0xf7, 0x10, 0xf9, 0x69, 0xfa, 0xc9, 0xf5, 0xfd, 0xf6, 0x79, 0xfb, + 0x7d, 0xfc, 0xfa, 0xfa, 0x9a, 0xf9, 0xb8, 0xf9, 0x0e, 0xfc, 0xc2, 0xff, 0x09, 0xfe, 0xd4, 0xfa, + 0xc6, 0x01, 0xd1, 0x07, 0x8a, 0x0a, 0x4b, 0x0e, 0xc7, 0x12, 0x6e, 0x13, 0x9f, 0x14, 0x4a, 0x1a, + 0x80, 0x19, 0x20, 0x19, 0x70, 0x17, 0x39, 0x13, 0xec, 0x0e, 0xba, 0x0a, 0x15, 0x0a, 0x34, 0x09, + 0xb7, 0x02, 0xaf, 0xfd, 0x46, 0xfb, 0xde, 0xfa, 0x29, 0xf8, 0xd2, 0xf5, 0x3f, 0xf4, 0xcc, 0xef, + 0x2f, 0xed, 0x55, 0xea, 0xf9, 0xe7, 0x85, 0xe8, 0x8d, 0xeb, 0x93, 0xeb, 0xcc, 0xe9, 0x07, 0xea, + 0x2b, 0xee, 0x88, 0xf2, 0x10, 0xf6, 0x04, 0xf9, 0xe9, 0xfb, 0xe9, 0xfe, 0xab, 0xfe, 0xb4, 0xfd, + 0xfd, 0x00, 0x42, 0x06, 0xa6, 0x0b, 0x97, 0x0e, 0xc6, 0x11, 0xed, 0x12, 0xcc, 0x12, 0x6d, 0x12, + 0xf3, 0x11, 0xde, 0x0f, 0xd1, 0x11, 0x5f, 0x14, 0x61, 0x10, 0x00, 0x0c, 0x8b, 0x08, 0xed, 0x06, + 0xdb, 0x03, 0x2f, 0xfe, 0x5b, 0xfc, 0x0a, 0xf9, 0xcb, 0xf5, 0x5e, 0xf3, 0x15, 0xed, 0x5d, 0xe9, + 0xc2, 0xe9, 0xf7, 0xeb, 0xdf, 0xea, 0x03, 0xec, 0x85, 0xf2, 0x1c, 0xf4, 0xa8, 0xf3, 0xea, 0xf2, + 0xa4, 0xf3, 0x55, 0xf5, 0xf4, 0xf4, 0x21, 0xf7, 0x2d, 0xfa, 0x34, 0x02, 0x6b, 0x09, 0xec, 0x0a, + 0x10, 0x0f, 0x83, 0x13, 0xa3, 0x13, 0x22, 0x14, 0xfa, 0x12, 0x2f, 0x12, 0x23, 0x13, 0x19, 0x13, + 0x74, 0x0f, 0xe5, 0x09, 0xef, 0x05, 0xae, 0x04, 0x90, 0x05, 0x90, 0x03, 0x08, 0x03, 0x59, 0x02, + 0x30, 0xff, 0x87, 0xfa, 0xcf, 0xf9, 0x65, 0xf8, 0xe0, 0xf7, 0xee, 0xfa, 0xdd, 0xf9, 0x95, 0xf8, + 0x25, 0xf7, 0x88, 0xf7, 0x6c, 0xf5, 0x55, 0xf2, 0xe5, 0xf3, 0x1a, 0xf4, 0xb2, 0xf2, 0x62, 0xf3, + 0x9c, 0xf6, 0x4f, 0xfe, 0xf4, 0x04, 0x96, 0x06, 0x03, 0x09, 0x84, 0x0d, 0xa9, 0x11, 0xa9, 0x0e, + 0xc7, 0x0c, 0x32, 0x0c, 0x20, 0x0a, 0x86, 0x07, 0x57, 0x08, 0xea, 0x08, 0x32, 0x05, 0x91, 0x04, + 0x9c, 0x05, 0x19, 0x06, 0xde, 0x07, 0xef, 0x07, 0xe3, 0x05, 0xf5, 0xff, 0x82, 0xfd, 0x50, 0xfd, + 0xc9, 0xfb, 0x3b, 0xfc, 0xa2, 0xfa, 0xad, 0xf6, 0x23, 0xf3, 0x82, 0xf1, 0x8b, 0xef, 0xd0, 0xeb, + 0xe4, 0xed, 0x8c, 0xef, 0xe3, 0xef, 0x4a, 0xf1, 0x2d, 0xf4, 0x31, 0xfa, 0x93, 0xff, 0x3f, 0x06, + 0xcd, 0x08, 0x58, 0x09, 0x17, 0x0d, 0xe5, 0x0c, 0xab, 0x0b, 0x63, 0x0e, 0x54, 0x0f, 0x05, 0x11, + 0xfd, 0x0e, 0xb2, 0x0c, 0x65, 0x0c, 0x78, 0x0d, 0x45, 0x0e, 0x72, 0x0b, 0x1a, 0x0a, 0xc9, 0x0a, + 0xf4, 0x07, 0xb6, 0x02, 0x81, 0xfe, 0x85, 0xfa, 0x21, 0xf9, 0xbe, 0xf6, 0x06, 0xf2, 0x3d, 0xf0, + 0x6d, 0xeb, 0xc8, 0xe6, 0x48, 0xe6, 0x4a, 0xe4, 0x3b, 0xe4, 0x64, 0xe7, 0x82, 0xea, 0xdb, 0xea, + 0x56, 0xec, 0xfc, 0xf0, 0x67, 0xf3, 0xcd, 0xf5, 0xbc, 0xfa, 0x2e, 0xff, 0x6a, 0x03, 0xa5, 0x06, + 0x50, 0x05, 0x28, 0x06, 0xe9, 0x09, 0x91, 0x0c, 0x37, 0x0d, 0x23, 0x0c, 0x88, 0x0e, 0x30, 0x10, + 0xa2, 0x0d, 0x00, 0x0b, 0x3d, 0x08, 0x54, 0x06, 0xb4, 0x06, 0xc0, 0x01, 0x5c, 0xff, 0xd3, 0xfe, + 0xe7, 0xfd, 0x80, 0xff, 0xbc, 0xfd, 0x10, 0xfc, 0x63, 0xfd, 0x37, 0xfc, 0x3f, 0xfa, 0x2d, 0xfd, + 0x88, 0xff, 0x26, 0x01, 0xa9, 0x02, 0x22, 0x01, 0xf3, 0x03, 0x12, 0x08, 0x77, 0x0d, 0x22, 0x14, + 0x65, 0x17, 0x45, 0x1c, 0x4c, 0x1e, 0xea, 0x1e, 0x06, 0x20, 0xcc, 0x1c, 0x8f, 0x1b, 0x9b, 0x1b, + 0xba, 0x17, 0x8a, 0x0e, 0x2a, 0x0a, 0x23, 0x06, 0x3b, 0xfd, 0x99, 0xf6, 0xae, 0xf0, 0x8a, 0xed, + 0x15, 0xeb, 0x62, 0xe7, 0xe9, 0xe6, 0x60, 0xe4, 0x69, 0xe2, 0xd0, 0xe2, 0xc2, 0xe0, 0x72, 0xe0, + 0x9e, 0xe1, 0x2a, 0xe2, 0x06, 0xe1, 0x3d, 0xe1, 0xb9, 0xe3, 0x32, 0xe6, 0x25, 0xe6, 0x38, 0xe8, + 0xa4, 0xeb, 0x90, 0xf0, 0x58, 0xfa, 0xce, 0x02, 0xbc, 0x08, 0xcd, 0x0f, 0xc2, 0x14, 0x7a, 0x17, + 0xc2, 0x1a, 0xea, 0x1c, 0xa1, 0x1e, 0x5a, 0x1f, 0x9b, 0x1c, 0xe7, 0x15, 0x77, 0x11, 0x90, 0x0f, + 0x83, 0x0b, 0x1f, 0x09, 0xa3, 0x08, 0x06, 0x08, 0x25, 0x06, 0x52, 0x03, 0x14, 0x01, 0x93, 0xff, + 0x6a, 0xfe, 0x41, 0xfd, 0x58, 0xf9, 0x9f, 0xf8, 0x1d, 0xfa, 0x63, 0xfb, 0x9e, 0xfb, 0xfc, 0xf8, + 0x28, 0xfa, 0x2e, 0xfd, 0xe4, 0xfd, 0x94, 0xfc, 0x1c, 0xff, 0xde, 0x02, 0x8d, 0x06, 0x41, 0x0b, + 0x47, 0x11, 0x76, 0x15, 0x42, 0x1a, 0x90, 0x1b, 0xc3, 0x19, 0xd6, 0x18, 0x21, 0x17, 0x29, 0x14, + 0x70, 0x0e, 0x15, 0x09, 0xcb, 0x05, 0x55, 0x02, 0x14, 0xfd, 0x4b, 0xf9, 0x46, 0xf7, 0x7a, 0xf6, + 0x02, 0xf4, 0xea, 0xed, 0xaf, 0xea, 0x3f, 0xe6, 0xb2, 0xe4, 0x01, 0xe3, 0x6a, 0xe0, 0x54, 0xe1, + 0xd8, 0xe1, 0xb3, 0xe2, 0xe3, 0xe2, 0x0e, 0xe4, 0x3c, 0xe6, 0xaa, 0xe9, 0xe7, 0xec, 0xfe, 0xeb, + 0x66, 0xed, 0x10, 0xf4, 0xcb, 0xf8, 0x3a, 0xfc, 0x2b, 0x01, 0x5c, 0x07, 0x54, 0x0c, 0xa7, 0x11, + 0x07, 0x13, 0x91, 0x13, 0xdc, 0x15, 0x3c, 0x16, 0xd2, 0x14, 0x80, 0x13, 0xee, 0x13, 0x74, 0x12, + 0x93, 0x0f, 0xe7, 0x0d, 0x9d, 0x0b, 0x72, 0x0a, 0xd0, 0x07, 0xa5, 0x01, 0xb2, 0xfc, 0xe5, 0xf9, + 0xed, 0xf8, 0x58, 0xf6, 0x33, 0xf5, 0xb4, 0xf6, 0x53, 0xf9, 0x43, 0xfc, 0x1d, 0xfa, 0xa8, 0xfa, + 0x3d, 0xfb, 0xb8, 0xfb, 0x14, 0xfe, 0x0c, 0xfc, 0x05, 0xf9, 0x82, 0xfb, 0x45, 0xfe, 0x27, 0xff, + 0x93, 0x02, 0xba, 0x06, 0xfc, 0x08, 0x1b, 0x0d, 0x62, 0x0f, 0x23, 0x11, 0x65, 0x14, 0x78, 0x15, + 0x95, 0x12, 0xe0, 0x0d, 0x76, 0x0d, 0x16, 0x0d, 0xf1, 0x0a, 0x6f, 0x07, 0xb7, 0x03, 0x2a, 0x00, + 0xad, 0xfe, 0xfd, 0xfa, 0x1a, 0xf4, 0x89, 0xf6, 0xc8, 0xf9, 0x3a, 0xf9, 0x07, 0xfa, 0x4b, 0xf9, + 0x3e, 0xfa, 0x92, 0xfb, 0x01, 0xf9, 0x30, 0xf7, 0x69, 0xf5, 0xed, 0xf4, 0x34, 0xf5, 0x66, 0xf0, + 0x49, 0xed, 0x03, 0xed, 0xea, 0xed, 0x42, 0xf1, 0x17, 0xf5, 0x89, 0xf8, 0x87, 0xff, 0x98, 0x00, + 0xb6, 0xfd, 0xd5, 0xfe, 0xd4, 0xff, 0xf8, 0x00, 0x19, 0x03, 0xd9, 0x00, 0x3a, 0xff, 0x80, 0x02, + 0x5d, 0x01, 0x78, 0xfe, 0x99, 0xfc, 0x2d, 0xfc, 0x24, 0xfd, 0xe1, 0xfc, 0x2b, 0xfc, 0x55, 0xfd, + 0x67, 0xfd, 0xe0, 0xfc, 0x6e, 0xfa, 0x93, 0xfb, 0x1e, 0xff, 0x7f, 0xfe, 0x72, 0xfb, 0xd5, 0xf9, + 0xef, 0xf9, 0x97, 0xfb, 0x80, 0xfb, 0x5b, 0xf8, 0x27, 0xf9, 0x87, 0xfd, 0x8c, 0x01, 0x4e, 0x05, + 0x8e, 0x0a, 0x5b, 0x0f, 0xa6, 0x13, 0xed, 0x16, 0x57, 0x16, 0x49, 0x17, 0x66, 0x1b, 0xc9, 0x1e, + 0x52, 0x1d, 0x27, 0x1a, 0x99, 0x18, 0xf0, 0x17, 0x2e, 0x17, 0x60, 0x14, 0x6a, 0x0f, 0xa1, 0x0e, + 0x4e, 0x0d, 0xfe, 0x07, 0x8f, 0x04, 0xe9, 0x01, 0x2d, 0xff, 0x02, 0xfc, 0x4a, 0xf9, 0x15, 0xf5, + 0x96, 0xf2, 0x0d, 0xf1, 0xb7, 0xeb, 0xe1, 0xe5, 0x09, 0xe6, 0x0a, 0xe8, 0x74, 0xe8, 0x9e, 0xe7, + 0xc3, 0xe7, 0x88, 0xe9, 0x4c, 0xec, 0x16, 0xee, 0x51, 0xf2, 0x97, 0xf5, 0xef, 0xf9, 0xae, 0xff, + 0xa5, 0x00, 0x7b, 0x01, 0x6c, 0x04, 0x4a, 0x08, 0xaf, 0x09, 0xbd, 0x0a, 0x50, 0x0b, 0xac, 0x0a, + 0xfb, 0x0a, 0x48, 0x09, 0x74, 0x08, 0x22, 0x09, 0x21, 0x08, 0x8c, 0x04, 0x61, 0x01, 0xe5, 0x00, + 0xf2, 0xff, 0x00, 0xfb, 0x3f, 0xf4, 0xce, 0xf0, 0x47, 0xf0, 0xfc, 0xf3, 0x4b, 0xf6, 0x9b, 0xf4, + 0x1d, 0xf6, 0xf7, 0xfa, 0x73, 0xfc, 0x96, 0xfd, 0x7a, 0xff, 0x14, 0x02, 0x2b, 0x04, 0x8d, 0x04, + 0x72, 0x06, 0xa5, 0x0b, 0x01, 0x12, 0x24, 0x15, 0x87, 0x16, 0xc3, 0x17, 0xb7, 0x1b, 0xe1, 0x21, + 0xa3, 0x20, 0x76, 0x1d, 0xbf, 0x1a, 0x7d, 0x17, 0x44, 0x12, 0x55, 0x09, 0x95, 0x05, 0x1e, 0x04, + 0xc5, 0x00, 0x54, 0xfc, 0xea, 0xf4, 0xf2, 0xee, 0xd5, 0xee, 0xe2, 0xec, 0xfb, 0xe8, 0x27, 0xe7, + 0xd5, 0xe4, 0x35, 0xe4, 0x32, 0xe4, 0xd6, 0xe1, 0x2c, 0xe0, 0x71, 0xe0, 0xe1, 0xe0, 0xb0, 0xe0, + 0x72, 0xe2, 0x39, 0xe5, 0xfd, 0xe8, 0x68, 0xeb, 0xb1, 0xee, 0xe4, 0xf5, 0x3e, 0xfe, 0x33, 0x06, + 0xf1, 0x0b, 0xe0, 0x10, 0x30, 0x17, 0x51, 0x1b, 0x40, 0x1c, 0x3e, 0x1a, 0x08, 0x16, 0xf7, 0x14, + 0xf6, 0x13, 0x51, 0x0f, 0x3d, 0x0d, 0xe0, 0x0c, 0xb9, 0x0a, 0x72, 0x09, 0xd1, 0x05, 0x9d, 0x02, + 0x15, 0x03, 0x47, 0x01, 0x66, 0xfd, 0x8a, 0xfa, 0xfb, 0xf9, 0x4a, 0xf9, 0x58, 0xf6, 0xdd, 0xf3, + 0x80, 0xf4, 0xd3, 0xf5, 0xef, 0xf6, 0x13, 0xf5, 0x10, 0xf2, 0x2f, 0xf2, 0xdb, 0xf5, 0x8b, 0xf7, + 0x58, 0xf8, 0xb1, 0xfd, 0x6e, 0x05, 0x1b, 0x0b, 0x66, 0x0e, 0xa8, 0x10, 0x08, 0x13, 0xf5, 0x15, + 0x1c, 0x15, 0x7a, 0x12, 0xd5, 0x0e, 0x0e, 0x0e, 0xed, 0x0b, 0x92, 0x06, 0xaf, 0x02, 0xaf, 0x01, + 0x62, 0x03, 0x5d, 0xff, 0x83, 0xf9, 0x43, 0xf6, 0x45, 0xf4, 0x53, 0xf4, 0x92, 0xf1, 0x80, 0xed, + 0x5d, 0xed, 0x45, 0xef, 0x9d, 0xf0, 0xd9, 0xee, 0x85, 0xf0, 0xdd, 0xf2, 0x1f, 0xf3, 0x0a, 0xf3, + 0x86, 0xf3, 0x31, 0xf6, 0xb4, 0xfa, 0x9c, 0xfd, 0x59, 0xfe, 0x0d, 0x05, 0x1f, 0x0c, 0xc0, 0x0e, + 0x6f, 0x11, 0x39, 0x13, 0x3e, 0x13, 0xc9, 0x13, 0x67, 0x14, 0x27, 0x13, 0x11, 0x11, 0x61, 0x11, + 0x52, 0x10, 0xf5, 0x0d, 0xbe, 0x0b, 0x75, 0x0b, 0xca, 0x0b, 0xb5, 0x07, 0x90, 0x01, 0xea, 0xfc, + 0x95, 0xfa, 0xe4, 0xf5, 0x14, 0xf3, 0x72, 0xf2, 0xaa, 0xf3, 0x4a, 0xf4, 0x01, 0xf4, 0x81, 0xf3, + 0xd1, 0xf5, 0x07, 0xfb, 0x1f, 0xfe, 0x77, 0xfb, 0xdc, 0xfa, 0xb0, 0xfc, 0x4a, 0xfc, 0x88, 0xfd, + 0xdb, 0xfd, 0xe6, 0xff, 0xc0, 0x04, 0x74, 0x08, 0xf8, 0x08, 0x1c, 0x0b, 0x4d, 0x0d, 0xdd, 0x0e, + 0x71, 0x0e, 0x05, 0x0c, 0x98, 0x0b, 0xcf, 0x0b, 0x96, 0x0b, 0x55, 0x0a, 0x98, 0x05, 0x2a, 0x03, + 0xdd, 0x02, 0xc5, 0xfe, 0x47, 0xfa, 0x33, 0xf7, 0x56, 0xf5, 0x7a, 0xf5, 0xe1, 0xf4, 0x16, 0xf2, + 0xdb, 0xf4, 0x25, 0xf8, 0x70, 0xf8, 0xef, 0xf7, 0xd4, 0xf7, 0x3c, 0xfb, 0x9a, 0xfa, 0x42, 0xf8, + 0x34, 0xf7, 0xe7, 0xf5, 0xc6, 0xf5, 0x58, 0xf6, 0x88, 0xf5, 0x5a, 0xf9, 0x80, 0xfd, 0xd5, 0xfe, + 0x36, 0x00, 0x9e, 0x01, 0x64, 0x02, 0x0b, 0x06, 0x4a, 0x08, 0xaf, 0x06, 0x48, 0x07, 0xe0, 0x07, + 0x0b, 0x07, 0xc0, 0x05, 0x48, 0x03, 0xd4, 0x02, 0x7a, 0x01, 0xac, 0xfe, 0x2c, 0xfe, 0xe4, 0xfc, + 0x22, 0xfd, 0xd6, 0xfb, 0xb3, 0xf9, 0x3e, 0xf8, 0xa6, 0xf9, 0x74, 0xfb, 0x72, 0xfb, 0x37, 0xf9, + 0x09, 0xf7, 0x03, 0xf8, 0x4b, 0xf8, 0x28, 0xf7, 0x37, 0xf5, 0x8b, 0xf6, 0x5f, 0xfa, 0x89, 0xfd, + 0x2b, 0xff, 0x86, 0x02, 0x21, 0x08, 0xf7, 0x0b, 0x90, 0x0f, 0xd5, 0x11, 0x47, 0x16, 0xd8, 0x19, + 0x08, 0x1a, 0xb4, 0x19, 0xc0, 0x18, 0x50, 0x18, 0x2a, 0x16, 0x61, 0x11, 0xfc, 0x0c, 0x26, 0x0d, + 0x22, 0x0d, 0xfd, 0x0b, 0x29, 0x08, 0xc6, 0x04, 0x8b, 0x02, 0xca, 0xff, 0x6d, 0xfd, 0x70, 0xfa, + 0xfa, 0xf5, 0xc7, 0xf2, 0x41, 0xed, 0xb4, 0xe6, 0xba, 0xe1, 0xf2, 0xe1, 0x4e, 0xe3, 0x62, 0xe1, + 0xb1, 0xdf, 0x8f, 0xe1, 0x51, 0xe4, 0x1f, 0xe6, 0x33, 0xe9, 0xa7, 0xec, 0x6a, 0xf1, 0xc9, 0xf6, + 0x62, 0xf9, 0x86, 0xfa, 0xfa, 0xfe, 0x38, 0x02, 0x38, 0x05, 0xa3, 0x06, 0xc0, 0x06, 0xad, 0x08, + 0x83, 0x0b, 0x8b, 0x0c, 0x95, 0x0b, 0x17, 0x0c, 0xde, 0x0d, 0x9d, 0x0f, 0x4d, 0x0f, 0x2b, 0x0f, + 0x06, 0x0d, 0xe8, 0x07, 0x62, 0x05, 0xc1, 0x01, 0x3e, 0x01, 0xab, 0x01, 0xc9, 0xfd, 0xf1, 0xfb, + 0xf4, 0xf9, 0xf3, 0xfa, 0x36, 0xfd, 0x01, 0xfd, 0xe3, 0xfb, 0xfa, 0xfc, 0x6f, 0xfe, 0x2b, 0x00, + 0x3d, 0x02, 0xa7, 0x00, 0x12, 0x07, 0xdc, 0x0c, 0x10, 0x0d, 0x39, 0x10, 0x8b, 0x12, 0xe7, 0x16, + 0x0e, 0x19, 0x39, 0x1a, 0x2a, 0x1a, 0x4e, 0x19, 0x7a, 0x19, 0xbc, 0x18, 0xe3, 0x14, 0x94, 0x11, + 0xfc, 0x0e, 0x3d, 0x0b, 0x6e, 0x04, 0xce, 0xfe, 0x0b, 0xfc, 0xea, 0xf7, 0xd4, 0xf2, 0x66, 0xf1, + 0x0f, 0xf1, 0x2a, 0xef, 0xa9, 0xee, 0x49, 0xeb, 0x1f, 0xe8, 0xf3, 0xe7, 0xda, 0xe4, 0xd6, 0xe2, + 0x9c, 0xe2, 0x90, 0xe3, 0x60, 0xe4, 0x56, 0xe2, 0x13, 0xe4, 0x70, 0xe5, 0x9f, 0xeb, 0x50, 0xf5, + 0xe9, 0xf8, 0xfe, 0xfc, 0x0b, 0x04, 0x0b, 0x08, 0xa1, 0x0e, 0xb2, 0x13, 0x90, 0x14, 0xf1, 0x16, + 0xd8, 0x16, 0xa6, 0x14, 0x49, 0x11, 0xb9, 0x0e, 0x9f, 0x0d, 0x03, 0x0b, 0x30, 0x08, 0xda, 0x04, + 0x70, 0x05, 0x8c, 0x03, 0x82, 0xff, 0x14, 0xfc, 0x2c, 0xfa, 0xdb, 0xfa, 0x9d, 0xf7, 0xfb, 0xf5, + 0x7d, 0xf5, 0x9e, 0xf4, 0x5b, 0xf5, 0xdb, 0xf5, 0x01, 0xf6, 0x9d, 0xf6, 0xe7, 0xf6, 0xec, 0xf4, + 0x8e, 0xf5, 0x46, 0xf8, 0xf5, 0xfc, 0xe6, 0x01, 0x24, 0x04, 0x31, 0x08, 0x11, 0x0e, 0x19, 0x13, + 0x19, 0x16, 0x6d, 0x15, 0x7e, 0x15, 0xe0, 0x15, 0xed, 0x12, 0xcc, 0x0e, 0x24, 0x0b, 0x43, 0x08, + 0x42, 0x06, 0x80, 0x02, 0x03, 0xfe, 0xad, 0xfb, 0xc6, 0xfb, 0x16, 0xfa, 0x6d, 0xf6, 0xa4, 0xf2, + 0x72, 0xf0, 0x9d, 0xf0, 0x0c, 0xf1, 0x57, 0xf0, 0xad, 0xef, 0xc8, 0xef, 0xb8, 0xef, 0xee, 0xee, + 0x0b, 0xf0, 0xe0, 0xf2, 0xd9, 0xf4, 0x17, 0xf6, 0x4e, 0xf6, 0x41, 0xf8, 0xe5, 0xfe, 0x15, 0x03, + 0x9c, 0x06, 0x64, 0x07, 0x67, 0x09, 0x14, 0x0f, 0x23, 0x0e, 0xea, 0x0b, 0x53, 0x0b, 0xcd, 0x0c, + 0xc9, 0x0d, 0x23, 0x0b, 0x7b, 0x09, 0xe7, 0x06, 0xaf, 0x04, 0x01, 0x04, 0x7c, 0x02, 0xb0, 0x00, + 0xe5, 0xfe, 0xa7, 0xfd, 0x18, 0xfa, 0x64, 0xf8, 0x6d, 0xf7, 0x3c, 0xf7, 0x36, 0xf8, 0x77, 0xf7, + 0xa4, 0xf6, 0x55, 0xf6, 0xa4, 0xf8, 0xac, 0xfa, 0xe9, 0xfb, 0x4d, 0xfe, 0x19, 0x01, 0xc5, 0x01, + 0x3e, 0x00, 0x36, 0x02, 0xee, 0x04, 0xd5, 0x06, 0x07, 0x09, 0xe8, 0x07, 0xa7, 0x09, 0x35, 0x0c, + 0x8a, 0x0c, 0xb6, 0x0c, 0xbf, 0x0d, 0x10, 0x11, 0x0a, 0x10, 0xd5, 0x0b, 0xf6, 0x09, 0xc8, 0x08, + 0x25, 0x08, 0x83, 0x05, 0xd3, 0x02, 0xb0, 0x00, 0xaf, 0xfe, 0x96, 0xfb, 0xbf, 0xf8, 0x1d, 0xf7, + 0xf6, 0xf4, 0xef, 0xf4, 0x58, 0xf4, 0x15, 0xf3, 0x45, 0xf4, 0xb6, 0xf4, 0x75, 0xf6, 0x01, 0xf6, + 0xb5, 0xf4, 0x6e, 0xf5, 0x74, 0xf7, 0x5a, 0xf6, 0x92, 0xf2, 0xcd, 0xf2, 0xb0, 0xf5, 0x59, 0xfb, + 0xd7, 0xfe, 0xd0, 0xff, 0x9f, 0x03, 0xe9, 0x08, 0x29, 0x0c, 0x25, 0x0d, 0x52, 0x0e, 0x38, 0x11, + 0x57, 0x12, 0xf4, 0x10, 0x8a, 0x0e, 0x6d, 0x0d, 0xb1, 0x0b, 0x6f, 0x09, 0x98, 0x06, 0xe0, 0x04, + 0x6c, 0x04, 0x9f, 0x02, 0xd1, 0xfe, 0x38, 0xfb, 0xe2, 0xf9, 0xb5, 0xfa, 0x71, 0xfb, 0xfa, 0xf9, + 0xd7, 0xf9, 0x63, 0xf9, 0x04, 0xf7, 0xac, 0xf4, 0x9a, 0xf2, 0xbd, 0xf2, 0x21, 0xf4, 0x2a, 0xf3, + 0x0a, 0xf2, 0x15, 0xf3, 0x05, 0xf6, 0x75, 0xfc, 0xa5, 0x03, 0x1a, 0x06, 0xac, 0x08, 0x9c, 0x0b, + 0x37, 0x0d, 0xc5, 0x0f, 0x30, 0x12, 0x64, 0x12, 0x9b, 0x11, 0x84, 0x0f, 0x7c, 0x0d, 0x82, 0x0d, + 0x2e, 0x0d, 0x56, 0x09, 0x32, 0x05, 0xaa, 0x04, 0xac, 0x07, 0x5a, 0x08, 0x31, 0x04, 0x69, 0x02, + 0x23, 0x02, 0x66, 0x03, 0x59, 0x02, 0x16, 0xfd, 0x45, 0xfa, 0xd3, 0xf7, 0xf6, 0xf4, 0x95, 0xf0, + 0x59, 0xee, 0xf0, 0xee, 0x75, 0xef, 0x18, 0xee, 0x20, 0xeb, 0x48, 0xeb, 0xb7, 0xec, 0xcf, 0xf0, + 0xb3, 0xf4, 0xed, 0xf5, 0x07, 0xf9, 0xec, 0xfc, 0xe2, 0x00, 0x87, 0x02, 0x34, 0x05, 0x70, 0x08, + 0x5d, 0x09, 0x1e, 0x08, 0xc7, 0x04, 0x82, 0x04, 0x62, 0x06, 0x74, 0x06, 0xbd, 0x04, 0xe9, 0x03, + 0xee, 0x06, 0xc7, 0x08, 0x13, 0x07, 0x1d, 0x03, 0x9e, 0x01, 0x48, 0x01, 0x73, 0xfe, 0x04, 0xfc, + 0x43, 0xf9, 0x9f, 0xf7, 0x6a, 0xf7, 0x60, 0xf4, 0xeb, 0xf3, 0x91, 0xf4, 0x52, 0xf4, 0xf4, 0xf4, + 0x41, 0xf4, 0x84, 0xf4, 0xdb, 0xf5, 0x81, 0xf9, 0x0e, 0xfd, 0x72, 0x00, 0xee, 0x03, 0xe0, 0x06, + 0xc5, 0x0a, 0x5a, 0x0c, 0x56, 0x0e, 0x40, 0x11, 0x19, 0x13, 0x8a, 0x11, 0x81, 0x0e, 0xbb, 0x0f, + 0xcc, 0x10, 0xe4, 0x0d, 0x3a, 0x0a, 0xb1, 0x07, 0x79, 0x04, 0xb2, 0x01, 0x56, 0xfe, 0x14, 0xf9, + 0xd4, 0xf7, 0x47, 0xf7, 0x9b, 0xf5, 0xa7, 0xf2, 0x27, 0xf1, 0xeb, 0xf1, 0x2a, 0xf0, 0xda, 0xed, + 0xd7, 0xec, 0x32, 0xed, 0x1a, 0xef, 0x7c, 0xee, 0xc1, 0xeb, 0x53, 0xe9, 0xa1, 0xec, 0x1a, 0xf3, + 0x0e, 0xf7, 0xce, 0xfa, 0x40, 0xfe, 0xf9, 0x02, 0x7f, 0x07, 0x0b, 0x0b, 0x57, 0x0f, 0xfe, 0x13, + 0x72, 0x19, 0x6d, 0x18, 0xc1, 0x15, 0x18, 0x15, 0x4b, 0x14, 0xa5, 0x10, 0x21, 0x0c, 0x74, 0x08, + 0xb4, 0x04, 0x38, 0x02, 0x50, 0x01, 0x4a, 0xff, 0x0a, 0xfc, 0x8c, 0xfb, 0x45, 0xfc, 0x9b, 0xf9, + 0x8e, 0xf7, 0x78, 0xf9, 0xe1, 0xf9, 0xaf, 0xf7, 0x21, 0xf7, 0x6b, 0xf6, 0xfd, 0xf6, 0xdd, 0xf7, + 0xdd, 0xf6, 0x2f, 0xf6, 0x0f, 0xf8, 0x66, 0xfe, 0x35, 0x03, 0x72, 0x06, 0x70, 0x0b, 0x19, 0x10, + 0xd2, 0x15, 0x93, 0x19, 0xa5, 0x1e, 0xea, 0x21, 0xeb, 0x20, 0x15, 0x1d, 0x75, 0x17, 0x34, 0x15, + 0x26, 0x13, 0x22, 0x0e, 0x00, 0x0a, 0x05, 0x06, 0xd4, 0x03, 0x59, 0xfe, 0xf8, 0xfa, 0x36, 0xf7, + 0x0c, 0xf4, 0xed, 0xf3, 0xad, 0xf2, 0x41, 0xf1, 0xcb, 0xed, 0x03, 0xef, 0x16, 0xef, 0xd9, 0xeb, + 0xdc, 0xea, 0x76, 0xea, 0xde, 0xeb, 0xe8, 0xec, 0x42, 0xeb, 0x96, 0xeb, 0x21, 0xed, 0x3e, 0xf1, + 0xa5, 0xf6, 0x44, 0xfb, 0x71, 0x00, 0x41, 0x09, 0xce, 0x0f, 0x43, 0x10, 0xbd, 0x12, 0x1d, 0x16, + 0xc6, 0x17, 0x47, 0x19, 0x40, 0x17, 0x51, 0x15, 0x6c, 0x15, 0x12, 0x15, 0x00, 0x11, 0xf3, 0x0b, + 0x35, 0x08, 0xbb, 0x05, 0x56, 0x04, 0xcc, 0xfe, 0xa6, 0xfb, 0xcd, 0xf9, 0xeb, 0xf9, 0xe0, 0xf6, + 0x35, 0xf1, 0x50, 0xf1, 0x6c, 0xf1, 0x44, 0xf0, 0xc9, 0xed, 0xe3, 0xec, 0x15, 0xef, 0x26, 0xf0, + 0xb8, 0xf0, 0xc1, 0xee, 0xfa, 0xef, 0x7f, 0xf3, 0xe4, 0xf6, 0x04, 0xf9, 0x35, 0xfb, 0x49, 0xff, + 0x2a, 0x02, 0xf9, 0x03, 0x13, 0x05, 0x14, 0x0b, 0x1f, 0x0e, 0x9f, 0x0c, 0x49, 0x0a, 0x72, 0x08, + 0x9a, 0x0a, 0xb6, 0x0b, 0xf0, 0x07, 0xaf, 0x04, 0x57, 0x03, 0xc3, 0x01, 0x16, 0xff, 0x73, 0xfc, + 0xf9, 0xfb, 0xfd, 0xfb, 0x21, 0xfa, 0xca, 0xf5, 0x64, 0xf5, 0x86, 0xf6, 0x54, 0xf5, 0x07, 0xf3, + 0x71, 0xf3, 0xd2, 0xf5, 0x73, 0xf7, 0x4d, 0xf7, 0x65, 0xf5, 0xfe, 0xf3, 0x67, 0xf2, 0xf8, 0xf3, + 0x1b, 0xf2, 0xbc, 0xf3, 0xd3, 0xf9, 0x83, 0xfb, 0x56, 0xfe, 0x3f, 0x00, 0x50, 0x03, 0x95, 0x07, + 0xa4, 0x0b, 0x55, 0x0d, 0xa6, 0x0c, 0x77, 0x0d, 0x42, 0x0e, 0x53, 0x0d, 0x86, 0x0b, 0xbf, 0x08, + 0x0f, 0x06, 0xfd, 0x05, 0x19, 0x07, 0xb9, 0x05, 0xa9, 0x04, 0x19, 0x04, 0x49, 0x02, 0x78, 0x01, + 0x08, 0x01, 0x65, 0x02, 0x17, 0x04, 0xb9, 0x04, 0x95, 0x04, 0xcd, 0x02, 0xc9, 0x01, 0xa4, 0xff, + 0x48, 0xfd, 0x3f, 0xf8, 0x92, 0xf6, 0x15, 0xf8, 0x3e, 0xf9, 0x04, 0xfb, 0xf5, 0xfb, 0x33, 0xfe, + 0x1b, 0x01, 0x4d, 0x02, 0xf9, 0x03, 0xee, 0x05, 0xf8, 0x09, 0xa7, 0x0d, 0x99, 0x0d, 0xe0, 0x09, + 0x16, 0x09, 0x24, 0x09, 0xa2, 0x06, 0xf8, 0x04, 0x4d, 0x02, 0x38, 0x02, 0x64, 0xff, 0xcd, 0xfd, + 0x7c, 0xfe, 0x63, 0xfe, 0x03, 0xff, 0xc7, 0xfd, 0x19, 0xfd, 0x5f, 0xfe, 0x06, 0xff, 0x21, 0xfe, + 0x20, 0xfa, 0xac, 0xf8, 0x2c, 0xf8, 0xd1, 0xf5, 0xa7, 0xf4, 0x28, 0xf2, 0xa7, 0xf4, 0x2a, 0xf6, + 0xc3, 0xf6, 0x63, 0xf8, 0xcd, 0xfc, 0x71, 0x03, 0x3b, 0x05, 0xa2, 0x07, 0x74, 0x0a, 0x4a, 0x0f, + 0xb6, 0x12, 0x0f, 0x11, 0xc1, 0x11, 0x90, 0x10, 0xb8, 0x0e, 0xd6, 0x0c, 0x40, 0x0c, 0x55, 0x0b, + 0x1d, 0x0b, 0x0a, 0x0b, 0xdf, 0x06, 0x40, 0x04, 0x5e, 0x04, 0xfa, 0x03, 0x81, 0x01, 0xd1, 0xfe, + 0x61, 0xfb, 0x16, 0xf8, 0xad, 0xf8, 0x92, 0xf8, 0x9a, 0xf4, 0x60, 0xf2, 0xba, 0xf2, 0x9e, 0xf3, + 0x00, 0xf4, 0x48, 0xf4, 0x00, 0xf3, 0x75, 0xf4, 0xe4, 0xf6, 0x37, 0xf8, 0x26, 0xfb, 0x23, 0xff, + 0x51, 0x04, 0x1e, 0x08, 0x29, 0x0a, 0xd1, 0x0b, 0x18, 0x0d, 0xfb, 0x0d, 0x78, 0x0e, 0xe9, 0x0e, + 0xf1, 0x0c, 0xb2, 0x0b, 0x74, 0x0c, 0xc8, 0x09, 0x19, 0x07, 0xfb, 0x04, 0x2b, 0x01, 0x26, 0xfc, + 0xa2, 0xf8, 0x6c, 0xf6, 0x88, 0xf3, 0xd8, 0xf0, 0x2e, 0xee, 0x79, 0xeb, 0xed, 0xea, 0x25, 0xeb, + 0x99, 0xe9, 0x8a, 0xe9, 0x18, 0xec, 0x14, 0xed, 0xc9, 0xea, 0xbb, 0xea, 0x1b, 0xec, 0xe4, 0xec, + 0x2d, 0xee, 0x79, 0xef, 0x89, 0xf2, 0x62, 0xf9, 0xf2, 0xfe, 0xdb, 0x01, 0x21, 0x05, 0x7f, 0x0a, + 0x8d, 0x10, 0x67, 0x13, 0x02, 0x16, 0x04, 0x19, 0xf9, 0x1a, 0xaf, 0x19, 0x17, 0x16, 0x29, 0x13, + 0x60, 0x11, 0xd0, 0x10, 0xfe, 0x09, 0x08, 0x04, 0x8a, 0x01, 0x22, 0xff, 0x5d, 0xfe, 0x1e, 0xfa, + 0x36, 0xf8, 0xdf, 0xf6, 0x89, 0xf5, 0x8d, 0xf3, 0x78, 0xf1, 0xf7, 0xf1, 0xa1, 0xf2, 0x88, 0xf1, + 0xbe, 0xef, 0x81, 0xee, 0xd0, 0xee, 0xe2, 0xef, 0xeb, 0xf0, 0xb7, 0xf1, 0x1a, 0xf3, 0x2d, 0xf6, + 0x51, 0xfc, 0xbf, 0x02, 0x69, 0x07, 0x27, 0x0d, 0xa1, 0x10, 0xc7, 0x13, 0x6a, 0x17, 0x2a, 0x19, + 0xb0, 0x18, 0x70, 0x17, 0x7c, 0x14, 0x6b, 0x10, 0x5b, 0x0f, 0xf2, 0x0d, 0x1d, 0x09, 0xac, 0x07, + 0x1f, 0x05, 0xc2, 0x02, 0x1e, 0x00, 0x0b, 0xff, 0x68, 0xfe, 0xa5, 0xfa, 0xba, 0xfa, 0xe0, 0xf8, + 0x90, 0xf7, 0xc2, 0xf6, 0x83, 0xf5, 0xd4, 0xf4, 0x02, 0xf4, 0xfa, 0xf3, 0x75, 0xf1, 0x3b, 0xf2, + 0x43, 0xf4, 0x25, 0xf6, 0x58, 0xfa, 0xc0, 0xfe, 0x6e, 0x04, 0x0a, 0x07, 0xe1, 0x09, 0xb6, 0x0e, + 0xee, 0x10, 0x31, 0x13, 0xac, 0x13, 0x23, 0x14, 0x92, 0x14, 0xd5, 0x13, 0xcd, 0x10, 0x96, 0x0b, + 0x02, 0x0b, 0x95, 0x0a, 0xff, 0x07, 0x25, 0x06, 0xc3, 0x03, 0x8e, 0x01, 0xaa, 0xfe, 0x92, 0xfb, + 0x0f, 0xf9, 0xe2, 0xf8, 0xee, 0xf9, 0xc7, 0xf7, 0x58, 0xf4, 0xb3, 0xf2, 0x05, 0xf4, 0x99, 0xf4, + 0xfe, 0xf1, 0xbe, 0xf0, 0x35, 0xf2, 0x6c, 0xf4, 0x9d, 0xf6, 0x58, 0xf8, 0xf3, 0xfa, 0x5a, 0xfe, + 0x6e, 0x01, 0xeb, 0x01, 0x60, 0x04, 0x29, 0x08, 0x9b, 0x09, 0xcb, 0x09, 0xf9, 0x09, 0x4d, 0x0b, + 0x3e, 0x0a, 0x3e, 0x09, 0x5b, 0x09, 0xb9, 0x08, 0x87, 0x07, 0xb0, 0x06, 0xa2, 0x04, 0x12, 0x02, + 0x66, 0x00, 0x69, 0xfd, 0xbb, 0xfb, 0x4e, 0xfb, 0x16, 0xfb, 0x3a, 0xfc, 0x01, 0xfc, 0x0f, 0xfa, + 0x86, 0xf8, 0xe6, 0xf8, 0x08, 0xfa, 0x72, 0xfb, 0x57, 0xfb, 0x4f, 0xfd, 0xb5, 0xfe, 0x9f, 0xfd, + 0xc6, 0xfc, 0x05, 0xfc, 0x06, 0xfc, 0x0b, 0xfc, 0x53, 0xfd, 0x8e, 0xfe, 0x52, 0x01, 0x66, 0x03, + 0xd4, 0x02, 0xb6, 0x02, 0x07, 0x02, 0x03, 0x02, 0xde, 0x02, 0x50, 0x02, 0xaa, 0x01, 0xc0, 0xff, + 0x7a, 0xfd, 0x42, 0xfc, 0x88, 0xfb, 0x74, 0xf9, 0x82, 0xf7, 0x6e, 0xf7, 0x54, 0xf6, 0x3f, 0xf4, + 0xf2, 0xf0, 0xb4, 0xf1, 0xc3, 0xf4, 0x44, 0xf5, 0x12, 0xf5, 0x7b, 0xf4, 0x30, 0xf7, 0x1d, 0xfa, + 0xc9, 0xf9, 0x2a, 0xf9, 0xed, 0xf7, 0xf6, 0xf8, 0xbe, 0xf7, 0xc0, 0xf7, 0x78, 0xf8, 0x78, 0xfa, + 0x33, 0xff, 0x7b, 0xff, 0x75, 0x02, 0x3a, 0x06, 0x88, 0x09, 0xde, 0x0b, 0xc4, 0x0a, 0xd0, 0x0b, + 0xbc, 0x0d, 0xff, 0x0d, 0xbb, 0x0a, 0xe6, 0x06, 0x77, 0x06, 0xa7, 0x04, 0x69, 0x03, 0x63, 0x00, + 0x40, 0xff, 0x7f, 0xff, 0x1b, 0xff, 0x0f, 0xfd, 0xdf, 0xfb, 0xd3, 0xfe, 0xb6, 0xfe, 0x94, 0xfd, + 0x50, 0xfc, 0xc5, 0xfb, 0x1d, 0xfc, 0x83, 0xf9, 0xbd, 0xf8, 0xa1, 0xf8, 0x5a, 0xf7, 0x05, 0xf6, + 0xb5, 0xf5, 0xcb, 0xf6, 0xe1, 0xf9, 0x3a, 0xff, 0x94, 0x02, 0x32, 0x05, 0x64, 0x09, 0xc5, 0x0d, + 0x4a, 0x12, 0x85, 0x14, 0xe2, 0x14, 0x36, 0x16, 0x45, 0x18, 0xf2, 0x18, 0x7c, 0x16, 0x23, 0x14, + 0x23, 0x12, 0xb1, 0x0e, 0xa1, 0x0c, 0x8b, 0x0a, 0xe9, 0x09, 0xca, 0x08, 0x36, 0x07, 0x44, 0x04, + 0x90, 0x02, 0x6e, 0x01, 0xe8, 0xfc, 0x6e, 0xfa, 0x8b, 0xf7, 0x4b, 0xf4, 0x5e, 0xf2, 0x64, 0xf0, + 0x8d, 0xee, 0x13, 0xec, 0xa5, 0xeb, 0xa4, 0xec, 0x24, 0xed, 0x9a, 0xed, 0x6e, 0xed, 0x25, 0xf2, + 0x21, 0xf8, 0x7e, 0xfc, 0xe8, 0xff, 0x5a, 0x03, 0x66, 0x07, 0x6a, 0x0a, 0x24, 0x0c, 0xec, 0x0d, + 0x2a, 0x11, 0x70, 0x12, 0x70, 0x10, 0x2d, 0x0f, 0x33, 0x0f, 0x9f, 0x0f, 0xbd, 0x10, 0x24, 0x0f, + 0x69, 0x0d, 0xc5, 0x0c, 0x10, 0x0b, 0x64, 0x07, 0xc8, 0x03, 0x8c, 0x01, 0x88, 0x00, 0x86, 0xfe, + 0xb8, 0xfb, 0x28, 0xf8, 0x0b, 0xf6, 0x49, 0xf4, 0x77, 0xf1, 0x23, 0xef, 0x0f, 0xef, 0x1d, 0xf1, + 0xab, 0xef, 0x3e, 0xf0, 0x39, 0xf2, 0xd2, 0xf3, 0xff, 0xf6, 0x87, 0xf8, 0xf2, 0xfb, 0xeb, 0xff, + 0x51, 0x03, 0xa9, 0x05, 0x5f, 0x09, 0xb8, 0x0c, 0x9d, 0x0f, 0xe2, 0x11, 0xfe, 0x11, 0x9a, 0x12, + 0x75, 0x12, 0x6e, 0x12, 0xb9, 0x11, 0x7e, 0x0f, 0xe6, 0x0d, 0x18, 0x0b, 0xe0, 0x06, 0xca, 0x01, + 0xf0, 0xfe, 0x2d, 0xff, 0x29, 0xfe, 0x65, 0xfc, 0x3b, 0xf8, 0x79, 0xf5, 0x22, 0xf4, 0x3f, 0xf1, + 0x61, 0xef, 0x50, 0xec, 0x2f, 0xeb, 0xcb, 0xe8, 0x00, 0xe5, 0x37, 0xe4, 0x3c, 0xe4, 0x92, 0xe4, + 0x97, 0xe5, 0x56, 0xe9, 0x49, 0xee, 0xa7, 0xf2, 0x6a, 0xf7, 0xe0, 0xfa, 0xfd, 0xfe, 0xef, 0x00, + 0x07, 0x03, 0xd5, 0x06, 0x03, 0x08, 0x24, 0x06, 0x94, 0x02, 0xde, 0x01, 0x2f, 0x01, 0x32, 0xff, + 0x1f, 0xfd, 0x80, 0xfc, 0x44, 0xfd, 0x61, 0xfc, 0x7f, 0xfa, 0xa2, 0xfa, 0xfe, 0xfb, 0xf7, 0xfc, + 0x0a, 0xfb, 0xad, 0xfa, 0x6f, 0xfb, 0x17, 0xfc, 0x84, 0xfc, 0x5b, 0xfa, 0x2d, 0xfa, 0x5e, 0xf9, + 0x21, 0xf9, 0xc9, 0xf8, 0xa6, 0xf8, 0xa8, 0xfa, 0x4f, 0xfd, 0x39, 0x01, 0x24, 0x06, 0xae, 0x0a, + 0xe1, 0x0f, 0x64, 0x13, 0x4d, 0x14, 0x54, 0x15, 0xba, 0x17, 0x51, 0x18, 0x60, 0x16, 0x37, 0x12, + 0xbe, 0x0e, 0x06, 0x0d, 0x46, 0x0a, 0x68, 0x07, 0x48, 0x07, 0xeb, 0x07, 0x47, 0x05, 0x86, 0x01, + 0xf7, 0xff, 0xe9, 0x00, 0xb8, 0x01, 0x9c, 0x00, 0x47, 0xfe, 0x1a, 0xfc, 0x5a, 0xfb, 0x6c, 0xfb, + 0x9c, 0xfa, 0x53, 0xfa, 0x5f, 0xfb, 0x1c, 0xfc, 0x5f, 0xfc, 0x25, 0xfd, 0x47, 0xfe, 0x2b, 0x01, + 0xc3, 0x05, 0x82, 0x09, 0x8b, 0x0c, 0x18, 0x10, 0x2c, 0x13, 0xe6, 0x13, 0x9b, 0x13, 0xb0, 0x13, + 0x3a, 0x14, 0x50, 0x12, 0x8d, 0x0f, 0x49, 0x0d, 0xf6, 0x0a, 0x7e, 0x07, 0x70, 0x03, 0x41, 0x00, + 0xb9, 0xfe, 0xa0, 0xfc, 0xf6, 0xfa, 0x5a, 0xf9, 0x69, 0xf7, 0x9d, 0xf3, 0x08, 0xf2, 0x50, 0xf3, + 0x3b, 0xf2, 0x80, 0xef, 0xcc, 0xec, 0x57, 0xed, 0x96, 0xee, 0xf8, 0xef, 0xc1, 0xf0, 0xb2, 0xf0, + 0x8f, 0xf0, 0x24, 0xf1, 0x5d, 0xf3, 0xe1, 0xf6, 0x77, 0xfa, 0x36, 0xfd, 0x0e, 0xfe, 0x37, 0x00, + 0xc7, 0x04, 0x95, 0x07, 0x30, 0x0a, 0x23, 0x0c, 0xe7, 0x0d, 0xc0, 0x0e, 0x2e, 0x0f, 0xac, 0x0e, + 0x79, 0x0c, 0x16, 0x0c, 0x37, 0x0a, 0xe0, 0x08, 0x22, 0x07, 0x10, 0x06, 0xee, 0x04, 0xb6, 0x00, + 0xb4, 0xfd, 0xc5, 0xfa, 0x55, 0xfa, 0x61, 0xfb, 0x3c, 0xfa, 0x43, 0xf8, 0xc4, 0xf8, 0x7f, 0xf8, + 0x16, 0xf6, 0xfa, 0xf5, 0xaf, 0xf6, 0x7a, 0xf6, 0x1f, 0xf5, 0xdf, 0xf1, 0xad, 0xf0, 0x34, 0xf2, + 0xe5, 0xf3, 0x8d, 0xf5, 0x6c, 0xf8, 0x31, 0xfd, 0xf1, 0x01, 0x6b, 0x06, 0x43, 0x0a, 0x7b, 0x0d, + 0xa8, 0x0f, 0x9f, 0x10, 0x14, 0x11, 0xf4, 0x10, 0xf2, 0x10, 0xb5, 0x0f, 0x1f, 0x0d, 0x9b, 0x0b, + 0x12, 0x0a, 0x3e, 0x08, 0x49, 0x04, 0x0a, 0x00, 0x92, 0xfd, 0xf7, 0xfb, 0x85, 0xfc, 0x22, 0xfc, + 0x0b, 0xfb, 0x06, 0xf9, 0x39, 0xf6, 0x36, 0xf3, 0x2a, 0xf0, 0x3a, 0xef, 0xe4, 0xed, 0x67, 0xea, + 0xc7, 0xe7, 0xc0, 0xe5, 0x3f, 0xe4, 0x6d, 0xe3, 0x8c, 0xe5, 0xe5, 0xe8, 0xda, 0xec, 0x84, 0xf0, + 0xa4, 0xf2, 0x1e, 0xf7, 0x84, 0xfc, 0x39, 0x01, 0x51, 0x04, 0x9a, 0x06, 0x30, 0x09, 0xe5, 0x09, + 0xaa, 0x09, 0x36, 0x0a, 0x77, 0x0a, 0xef, 0x09, 0xe2, 0x08, 0x9e, 0x09, 0x91, 0x09, 0x6b, 0x0a, + 0x18, 0x0b, 0xba, 0x09, 0xa4, 0x0b, 0xd6, 0x0b, 0x59, 0x0a, 0xd4, 0x09, 0x32, 0x08, 0xe2, 0x06, + 0xca, 0x03, 0x37, 0x00, 0x06, 0xfd, 0xf1, 0xf9, 0x4e, 0xf8, 0xcb, 0xf5, 0x9b, 0xf3, 0xd7, 0xf2, + 0xe6, 0xf3, 0xe6, 0xf6, 0x0e, 0xfa, 0x70, 0xfd, 0xa3, 0x01, 0x98, 0x04, 0xd6, 0x05, 0xa1, 0x09, + 0x5a, 0x0d, 0xc0, 0x0e, 0x7a, 0x0d, 0x5a, 0x0b, 0x77, 0x0a, 0xcd, 0x0b, 0x77, 0x0c, 0xa2, 0x0b, + 0x7f, 0x0b, 0x1d, 0x0c, 0xdb, 0x0b, 0x02, 0x0c, 0xe1, 0x0b, 0x7b, 0x0a, 0x30, 0x0a, 0x1d, 0x09, + 0xcb, 0x07, 0x11, 0x06, 0x05, 0x04, 0x34, 0x01, 0x32, 0xfe, 0x75, 0xfd, 0xd1, 0xfc, 0x56, 0xfb, + 0x00, 0xf9, 0xd0, 0xf6, 0x38, 0xf6, 0x9c, 0xf5, 0x43, 0xf5, 0xba, 0xf5, 0x57, 0xf7, 0x7d, 0xf9, + 0xb4, 0xfc, 0x23, 0xff, 0xb9, 0xff, 0xaa, 0x02, 0xc3, 0x05, 0xfc, 0x06, 0x8a, 0x09, 0xb5, 0x0a, + 0x3a, 0x0a, 0x82, 0x09, 0xda, 0x08, 0x86, 0x08, 0x6b, 0x08, 0x91, 0x06, 0x57, 0x02, 0x24, 0x01, + 0x93, 0x00, 0x5f, 0xff, 0x6a, 0xfe, 0x1b, 0xfd, 0xec, 0xfb, 0xce, 0xfa, 0x3c, 0xfa, 0x6c, 0xf9, + 0x27, 0xf8, 0xe7, 0xf7, 0xa4, 0xf6, 0x6f, 0xf5, 0xb8, 0xf4, 0x0c, 0xf4, 0x96, 0xf3, 0xfe, 0xf3, + 0xb0, 0xf5, 0x5d, 0xf7, 0x90, 0xf9, 0x1c, 0xfb, 0x42, 0xfe, 0xc7, 0x02, 0xc2, 0x05, 0xe9, 0x09, + 0x99, 0x0e, 0x9d, 0x11, 0x42, 0x14, 0x5a, 0x14, 0x0a, 0x13, 0x35, 0x12, 0x84, 0x10, 0xfa, 0x0c, + 0x2d, 0x0a, 0x8d, 0x07, 0xc5, 0x03, 0xfb, 0xff, 0xd5, 0xfb, 0xc7, 0xf9, 0x35, 0xf9, 0x9f, 0xf8, + 0xd0, 0xf7, 0xd2, 0xf6, 0x2a, 0xf7, 0x64, 0xf7, 0xc1, 0xf6, 0x44, 0xf6, 0x99, 0xf4, 0x6c, 0xf3, + 0x18, 0xf2, 0x01, 0xf2, 0x56, 0xf2, 0x08, 0xf3, 0x08, 0xf4, 0xfc, 0xf3, 0x1c, 0xf6, 0x81, 0xfa, + 0xcb, 0xff, 0xd4, 0x03, 0x3b, 0x07, 0x03, 0x0d, 0x0a, 0x11, 0x38, 0x12, 0xee, 0x11, 0x06, 0x12, + 0xd5, 0x10, 0x65, 0x0d, 0x4c, 0x09, 0x52, 0x05, 0x9e, 0x02, 0xfa, 0xfe, 0x8e, 0xfa, 0xf0, 0xf5, + 0x7e, 0xf2, 0x76, 0xf0, 0xc2, 0xee, 0xad, 0xed, 0x6b, 0xec, 0xf2, 0xeb, 0x4a, 0xeb, 0x31, 0xe9, + 0xe8, 0xe8, 0x80, 0xe8, 0x4a, 0xe8, 0xc5, 0xe7, 0x67, 0xe5, 0xb4, 0xe4, 0x51, 0xe6, 0x2b, 0xe8, + 0xd4, 0xe9, 0x68, 0xec, 0xc4, 0xf0, 0x5b, 0xf6, 0xa9, 0xfc, 0x38, 0x02, 0x59, 0x08, 0x41, 0x0e, + 0x3a, 0x11, 0x14, 0x14, 0xe8, 0x15, 0x91, 0x17, 0xd4, 0x17, 0x7e, 0x16, 0x64, 0x16, 0x1d, 0x15, + 0x48, 0x13, 0x7a, 0x11, 0x40, 0x10, 0xa3, 0x0e, 0xbb, 0x0b, 0x87, 0x0a, 0xcb, 0x0a, 0x0d, 0x09, + 0x35, 0x07, 0xd3, 0x04, 0xfe, 0x02, 0x84, 0x01, 0x0a, 0x00, 0x6c, 0xfe, 0x7d, 0xfd, 0xe5, 0xfc, + 0xdf, 0xfa, 0x9b, 0xfa, 0x61, 0xfa, 0x29, 0xfb, 0x84, 0xfc, 0x26, 0xfd, 0x02, 0xfd, 0xd9, 0xfd, + 0x68, 0x00, 0x82, 0x03, 0x58, 0x06, 0x4b, 0x09, 0x81, 0x0c, 0xe6, 0x0e, 0xde, 0x0f, 0x11, 0x11, + 0x0d, 0x13, 0xfd, 0x13, 0xcc, 0x12, 0xbf, 0x10, 0x1f, 0x10, 0x9b, 0x0f, 0x32, 0x0e, 0x64, 0x0b, + 0x65, 0x08, 0x4a, 0x08, 0xb3, 0x07, 0xad, 0x03, 0x56, 0x00, 0xd0, 0xfe, 0x6b, 0xfd, 0x51, 0xfc, + 0x7b, 0xfb, 0xad, 0xf9, 0xbb, 0xf8, 0x82, 0xf7, 0xd4, 0xf4, 0xf2, 0xf2, 0x35, 0xf1, 0x8e, 0xee, + 0x39, 0xec, 0x05, 0xeb, 0x16, 0xea, 0x9b, 0xeb, 0xb9, 0xed, 0xf5, 0xee, 0x2d, 0xf2, 0xc5, 0xf5, + 0x6c, 0xfa, 0x5a, 0xfe, 0xf2, 0xfe, 0x98, 0x00, 0x63, 0x03, 0xfc, 0x04, 0xb7, 0x05, 0x5b, 0x04, + 0x50, 0x04, 0x46, 0x04, 0xc7, 0x03, 0x63, 0x03, 0x5a, 0x02, 0xfc, 0x01, 0xf6, 0x00, 0xcb, 0x00, + 0x36, 0x01, 0xb9, 0x02, 0xda, 0x02, 0xaf, 0x02, 0x40, 0x05, 0x1c, 0x06, 0x08, 0x06, 0x85, 0x04, + 0xc3, 0x02, 0x05, 0x02, 0xc8, 0xff, 0x0f, 0xfd, 0x0a, 0xfc, 0x8f, 0xfb, 0xc3, 0xf9, 0xc6, 0xf8, + 0x68, 0xfa, 0xe8, 0xfb, 0x31, 0xfe, 0x19, 0x01, 0x7e, 0x05, 0x16, 0x09, 0xa7, 0x0a, 0x91, 0x0b, + 0x87, 0x0b, 0x21, 0x0c, 0x91, 0x0b, 0x7a, 0x0a, 0x29, 0x09, 0x9b, 0x07, 0x07, 0x06, 0xa9, 0x03, + 0x65, 0x02, 0xd1, 0x02, 0x38, 0x03, 0x24, 0x02, 0xff, 0x00, 0xcb, 0x01, 0x0d, 0x03, 0x09, 0x04, + 0x00, 0x02, 0x49, 0xff, 0xe3, 0xfd, 0xfc, 0xfb, 0x95, 0xf8, 0xa3, 0xf4, 0x4d, 0xf2, 0x10, 0xf2, + 0xbf, 0xf0, 0x3d, 0xef, 0x5e, 0xee, 0xa2, 0xee, 0xdc, 0xf1, 0x6f, 0xf4, 0xb2, 0xf6, 0x26, 0xfa, + 0x5d, 0xfd, 0x47, 0xfe, 0x15, 0xff, 0x48, 0x00, 0x49, 0x01, 0x4a, 0x01, 0x16, 0x00, 0x5b, 0xff, + 0x8d, 0xfe, 0xe6, 0xfe, 0x06, 0xff, 0xfd, 0xfc, 0x58, 0xfd, 0x2e, 0xfe, 0xa1, 0xfd, 0x2e, 0xfc, + 0x48, 0xfa, 0x7b, 0xf9, 0xb8, 0xf9, 0x83, 0xfa, 0x01, 0xfa, 0x42, 0xf9, 0x2c, 0xf9, 0xc5, 0xf7, + 0x2e, 0xf6, 0x08, 0xf6, 0x5f, 0xf7, 0x9f, 0xf7, 0xd3, 0xf6, 0xfb, 0xf8, 0x6d, 0xfb, 0x7d, 0xfd, + 0x29, 0x00, 0x8c, 0x03, 0x5c, 0x08, 0xb7, 0x0b, 0xf3, 0x0e, 0xb1, 0x10, 0x6b, 0x12, 0xa6, 0x14, + 0x46, 0x15, 0xd9, 0x14, 0x58, 0x15, 0xcc, 0x15, 0x8c, 0x14, 0x72, 0x13, 0x01, 0x13, 0xef, 0x0f, + 0xf0, 0x0b, 0x9c, 0x08, 0x7a, 0x06, 0xe0, 0x03, 0xf4, 0xff, 0x39, 0xfc, 0xff, 0xf8, 0xab, 0xf7, + 0xfc, 0xf5, 0x85, 0xf3, 0x08, 0xf2, 0xe2, 0xef, 0x43, 0xed, 0xd9, 0xeb, 0x7b, 0xeb, 0x1b, 0xec, + 0x88, 0xeb, 0x85, 0xeb, 0xa3, 0xeb, 0x04, 0xed, 0xfd, 0xef, 0xb1, 0xf3, 0x5f, 0xf7, 0xd5, 0xfb, + 0x0a, 0x02, 0xb9, 0x06, 0x60, 0x0a, 0xb1, 0x0c, 0x56, 0x10, 0xd7, 0x14, 0x34, 0x17, 0xe6, 0x17, + 0x87, 0x15, 0xb7, 0x13, 0x89, 0x13, 0xb7, 0x10, 0x4b, 0x0c, 0x30, 0x09, 0x18, 0x07, 0x99, 0x04, + 0x61, 0x02, 0x6d, 0xff, 0xfa, 0xfc, 0x00, 0xfb, 0x6c, 0xf8, 0x40, 0xf8, 0x59, 0xf8, 0x1f, 0xf7, + 0x1e, 0xf5, 0x73, 0xf2, 0xbc, 0xf2, 0x66, 0xf3, 0xac, 0xf3, 0x6e, 0xf3, 0x70, 0xf2, 0x1c, 0xf3, + 0xca, 0xf5, 0x13, 0xf9, 0xf5, 0xfc, 0x00, 0x02, 0xa2, 0x06, 0x26, 0x0b, 0xe6, 0x0f, 0x53, 0x14, + 0x94, 0x18, 0x51, 0x1a, 0x90, 0x1a, 0xf7, 0x1a, 0x52, 0x18, 0x98, 0x15, 0xda, 0x12, 0xa8, 0x10, + 0x7d, 0x0f, 0x67, 0x0d, 0xc6, 0x0a, 0xfc, 0x06, 0x08, 0x05, 0x18, 0x04, 0xf1, 0x01, 0xb1, 0x00, + 0x38, 0x00, 0xf3, 0xfe, 0x12, 0xfd, 0xb4, 0xf9, 0x50, 0xf6, 0x63, 0xf3, 0x70, 0xf0, 0x75, 0xee, + 0x07, 0xef, 0x8e, 0xee, 0x29, 0xed, 0xac, 0xed, 0xbb, 0xef, 0xa5, 0xf2, 0x48, 0xf5, 0xbc, 0xf8, + 0x88, 0xfd, 0xe8, 0x00, 0x71, 0x02, 0x50, 0x04, 0xf7, 0x05, 0x2d, 0x07, 0x9f, 0x06, 0x05, 0x05, + 0x63, 0x03, 0x6a, 0x02, 0xe9, 0x01, 0x3d, 0x01, 0x42, 0xff, 0xf2, 0xfd, 0xbc, 0xfe, 0x4d, 0xfe, + 0x0b, 0xfe, 0x6a, 0xfc, 0x3f, 0xfa, 0x4e, 0xfa, 0xc1, 0xf9, 0xf2, 0xf7, 0xa1, 0xf6, 0x7d, 0xf5, + 0x5d, 0xf4, 0xdc, 0xf1, 0x74, 0xef, 0xe7, 0xef, 0xf4, 0xf0, 0xba, 0xf0, 0xaa, 0xf0, 0x46, 0xf1, + 0x67, 0xf2, 0x06, 0xf2, 0xc0, 0xf2, 0x31, 0xf7, 0x5f, 0xfb, 0x67, 0xfd, 0xc0, 0xfe, 0x0b, 0x00, + 0x62, 0x02, 0x32, 0x04, 0x65, 0x05, 0x3e, 0x06, 0x09, 0x05, 0xc2, 0x04, 0x38, 0x04, 0x01, 0x05, + 0xdb, 0x05, 0x26, 0x07, 0xc1, 0x06, 0xf3, 0x04, 0x2a, 0x05, 0x42, 0x05, 0x1b, 0x06, 0x13, 0x05, + 0x32, 0x04, 0x87, 0x05, 0x97, 0x05, 0x72, 0x05, 0x0c, 0x04, 0x3e, 0x03, 0x6c, 0x04, 0xf6, 0x04, + 0x65, 0x04, 0xcb, 0x02, 0x5a, 0x02, 0x21, 0x02, 0x59, 0x00, 0xa5, 0xff, 0x97, 0x01, 0x6c, 0x04, + 0x38, 0x06, 0x6e, 0x07, 0x0d, 0x08, 0xc4, 0x07, 0xcb, 0x07, 0x65, 0x08, 0x6f, 0x0a, 0xa1, 0x09, + 0xae, 0x07, 0x53, 0x06, 0xbf, 0x04, 0xf1, 0x02, 0x5d, 0x01, 0x60, 0x00, 0xfb, 0xfe, 0xaf, 0xfc, + 0xa2, 0xf9, 0xd8, 0xf7, 0x1d, 0xf7, 0xb7, 0xf7, 0x28, 0xf8, 0x5e, 0xf8, 0x3b, 0xf9, 0x75, 0xfa, + 0x64, 0xfb, 0x47, 0xfc, 0x76, 0xfb, 0xb9, 0xfa, 0xfe, 0xfa, 0x48, 0xf9, 0x1c, 0xf9, 0x63, 0xf8, + 0xab, 0xf7, 0xcb, 0xf9, 0xf8, 0xfb, 0xc7, 0xfe, 0x5f, 0x02, 0x2c, 0x05, 0xcd, 0x07, 0x2d, 0x0a, + 0x6b, 0x0b, 0x22, 0x0d, 0x43, 0x0e, 0x38, 0x0d, 0x19, 0x0c, 0x4e, 0x0b, 0x3c, 0x0a, 0x41, 0x07, + 0xc6, 0x04, 0x17, 0x05, 0x6d, 0x04, 0xcc, 0x02, 0xf3, 0x01, 0x97, 0x00, 0x1a, 0x00, 0xca, 0xff, + 0x41, 0xff, 0xcd, 0xff, 0x3f, 0xff, 0xaf, 0xfd, 0x09, 0xfc, 0x65, 0xfa, 0xc2, 0xf8, 0x69, 0xf7, + 0x31, 0xf5, 0x67, 0xf3, 0x8a, 0xf3, 0x77, 0xf4, 0x45, 0xf5, 0xd1, 0xf5, 0x94, 0xf7, 0x52, 0xfc, + 0xc7, 0x01, 0xb3, 0x06, 0x48, 0x09, 0xed, 0x0b, 0x67, 0x0f, 0xbc, 0x10, 0x32, 0x12, 0xb8, 0x12, + 0x93, 0x11, 0xdb, 0x10, 0x8e, 0x0e, 0xef, 0x0c, 0xb4, 0x0d, 0xa8, 0x0d, 0x1a, 0x0c, 0x51, 0x0b, + 0xc5, 0x09, 0xb6, 0x06, 0x4a, 0x04, 0xad, 0x01, 0x91, 0x01, 0xe7, 0xff, 0x07, 0xfc, 0xf9, 0xf8, + 0x51, 0xf5, 0x06, 0xf2, 0x30, 0xef, 0x6b, 0xed, 0x12, 0xec, 0x0b, 0xea, 0x2e, 0xe9, 0x06, 0xea, + 0xa6, 0xeb, 0xe7, 0xed, 0x80, 0xf0, 0x74, 0xf3, 0xe3, 0xf6, 0xc8, 0xfa, 0xb4, 0xfd, 0x09, 0x02, + 0xc1, 0x04, 0x4d, 0x06, 0xdb, 0x09, 0xc7, 0x0b, 0x0a, 0x0d, 0x2e, 0x0d, 0xeb, 0x0c, 0xc9, 0x0d, + 0x3a, 0x0e, 0x94, 0x0e, 0x31, 0x0e, 0x31, 0x0c, 0x78, 0x09, 0x75, 0x06, 0xaf, 0x03, 0xc2, 0x01, + 0xcf, 0xff, 0x37, 0xfd, 0xa1, 0xfb, 0x14, 0xf9, 0x14, 0xf5, 0x77, 0xef, 0x90, 0xeb, 0x54, 0xeb, + 0xb1, 0xe9, 0x58, 0xe7, 0xd4, 0xe6, 0xb7, 0xe6, 0x18, 0xe7, 0x1c, 0xe9, 0x52, 0xeb, 0x2a, 0xef, + 0xe1, 0xf3, 0x4d, 0xf6, 0x81, 0xf8, 0x57, 0xfd, 0x10, 0x02, 0x92, 0x05, 0x5c, 0x07, 0x57, 0x09, + 0x88, 0x0c, 0x45, 0x0f, 0x20, 0x10, 0xfe, 0x0e, 0x3e, 0x0e, 0x1e, 0x0f, 0xd9, 0x0e, 0x05, 0x0d, + 0x7f, 0x0a, 0x6e, 0x09, 0x82, 0x08, 0xe9, 0x05, 0x9d, 0x04, 0x22, 0x04, 0xf2, 0x02, 0xa4, 0x01, + 0xa8, 0xff, 0xab, 0xfc, 0x6b, 0xfb, 0x69, 0xfa, 0xcf, 0xf7, 0x26, 0xf6, 0xac, 0xf4, 0xb6, 0xf2, + 0x3a, 0xf1, 0x96, 0xf0, 0x9a, 0xf1, 0xf3, 0xf2, 0x12, 0xf6, 0x31, 0xfa, 0x95, 0xfc, 0xc2, 0xff, + 0xdf, 0x03, 0x0f, 0x06, 0x85, 0x08, 0xe8, 0x09, 0x02, 0x0a, 0x15, 0x0a, 0xe1, 0x08, 0x06, 0x07, + 0x2b, 0x05, 0xa5, 0x03, 0xed, 0x02, 0x7a, 0x02, 0xe2, 0x00, 0x0d, 0x01, 0x44, 0x00, 0x95, 0xff, + 0x3e, 0x02, 0xcb, 0x03, 0xf2, 0x03, 0x64, 0x03, 0x2f, 0x02, 0x2a, 0x01, 0x7e, 0x00, 0x57, 0x00, + 0xb0, 0xfe, 0x5c, 0xfc, 0x86, 0xfa, 0x4b, 0xf9, 0x9b, 0xf9, 0xf4, 0xfa, 0x92, 0xfc, 0xc4, 0xfe, + 0x70, 0x03, 0xef, 0x06, 0xe3, 0x08, 0x5a, 0x0b, 0x36, 0x0e, 0xa2, 0x11, 0x74, 0x12, 0xe8, 0x11, + 0x17, 0x12, 0xcd, 0x10, 0x1f, 0x0e, 0xe6, 0x0a, 0x52, 0x08, 0x67, 0x07, 0x50, 0x06, 0xa2, 0x03, + 0xb8, 0x01, 0x59, 0x02, 0x43, 0x02, 0x28, 0x01, 0x50, 0xff, 0xa5, 0xff, 0x46, 0x01, 0xd8, 0x00, + 0x52, 0x00, 0xc2, 0xfd, 0x90, 0xfc, 0x50, 0xfd, 0xb3, 0xfa, 0xb1, 0xf9, 0x25, 0xf9, 0xdf, 0xf9, + 0xb4, 0xfb, 0xe5, 0xfc, 0x1b, 0xfe, 0x19, 0x00, 0x84, 0x02, 0x5e, 0x04, 0x42, 0x07, 0xa2, 0x09, + 0x99, 0x0c, 0xce, 0x0d, 0x86, 0x0d, 0x67, 0x0d, 0x79, 0x0b, 0x42, 0x08, 0x18, 0x05, 0x51, 0x02, + 0x80, 0x00, 0x27, 0xff, 0x3e, 0xfd, 0x76, 0xfb, 0xda, 0xf9, 0x7e, 0xf8, 0x0f, 0xf7, 0xaa, 0xf4, + 0x7b, 0xf3, 0x7d, 0xf3, 0x00, 0xf2, 0x67, 0xf1, 0x5e, 0xf0, 0xc8, 0xee, 0x38, 0xee, 0xab, 0xed, + 0x50, 0xed, 0x14, 0xee, 0x60, 0xee, 0x62, 0xef, 0x84, 0xef, 0x8f, 0xef, 0x5f, 0xf1, 0xd1, 0xf2, + 0x48, 0xf5, 0x12, 0xf9, 0xff, 0xfb, 0x39, 0xff, 0x05, 0x03, 0xf7, 0x05, 0x4e, 0x08, 0x7b, 0x09, + 0x40, 0x0a, 0xd8, 0x0a, 0xc2, 0x0a, 0xd8, 0x09, 0xd2, 0x07, 0xf7, 0x06, 0xb8, 0x06, 0xf6, 0x03, + 0xa2, 0x00, 0x36, 0xff, 0x3c, 0xfe, 0x5f, 0xfd, 0x3b, 0xfc, 0x42, 0xfb, 0x02, 0xfc, 0xbe, 0xfc, + 0x32, 0xfc, 0x36, 0xfb, 0xa3, 0xfb, 0xb9, 0xfc, 0xef, 0xfb, 0x1c, 0xf9, 0x0d, 0xf7, 0x7a, 0xf7, + 0xcc, 0xf7, 0x06, 0xf7, 0x01, 0xf7, 0x2f, 0xf8, 0x3b, 0xfa, 0x9c, 0xfc, 0x94, 0xff, 0x63, 0x02, + 0x6f, 0x06, 0x9c, 0x0b, 0x03, 0x0e, 0x35, 0x11, 0xb5, 0x13, 0x4d, 0x14, 0xb8, 0x14, 0x94, 0x13, + 0xdc, 0x11, 0xf7, 0x10, 0x40, 0x0f, 0xa9, 0x0b, 0x28, 0x09, 0x34, 0x07, 0x6e, 0x05, 0x83, 0x03, + 0xbd, 0x01, 0x9e, 0x01, 0x5a, 0x01, 0x53, 0x00, 0x7a, 0xfe, 0xb2, 0xfb, 0xdd, 0xf9, 0x35, 0xf7, + 0x48, 0xf3, 0xd2, 0xef, 0x19, 0xec, 0x94, 0xe9, 0xf2, 0xe6, 0xb6, 0xe4, 0x8b, 0xe4, 0xf6, 0xe5, + 0xfe, 0xe6, 0x8a, 0xe9, 0x67, 0xee, 0x94, 0xf2, 0x6e, 0xf8, 0x6b, 0xfd, 0x03, 0x00, 0x12, 0x03, + 0x7b, 0x05, 0x4a, 0x08, 0xc2, 0x09, 0xf8, 0x0a, 0x37, 0x0b, 0x52, 0x0b, 0xbe, 0x0c, 0x36, 0x0d, + 0x76, 0x0d, 0xb0, 0x0e, 0x8a, 0x0f, 0x6a, 0x10, 0xc6, 0x10, 0xdd, 0x0f, 0x84, 0x0f, 0xba, 0x0f, + 0x58, 0x0e, 0x12, 0x0c, 0x67, 0x0a, 0xd6, 0x08, 0xd3, 0x06, 0x52, 0x02, 0x4d, 0xfe, 0x33, 0xfb, + 0x47, 0xf9, 0x5b, 0xf7, 0x5a, 0xf6, 0xb4, 0xf6, 0xc7, 0xf7, 0xb2, 0xf9, 0x81, 0xfb, 0xeb, 0xfd, + 0xe0, 0x01, 0x39, 0x06, 0x5d, 0x08, 0xa6, 0x07, 0x01, 0x09, 0x97, 0x0a, 0xe1, 0x0a, 0x3a, 0x0b, + 0xb2, 0x09, 0x81, 0x09, 0x88, 0x0a, 0xc6, 0x0a, 0x5e, 0x0a, 0x2b, 0x0a, 0xa2, 0x09, 0x92, 0x08, + 0x22, 0x07, 0xc1, 0x05, 0xc7, 0x04, 0x95, 0x03, 0xa9, 0x01, 0xb6, 0xff, 0xa0, 0xfe, 0x85, 0xfd, + 0x2e, 0xfa, 0x7f, 0xf5, 0xec, 0xf2, 0x92, 0xf1, 0x6a, 0xf0, 0xac, 0xef, 0xf3, 0xef, 0xfc, 0xf0, + 0x39, 0xf1, 0xbb, 0xf0, 0xcd, 0xf1, 0xa3, 0xf4, 0x55, 0xf8, 0x17, 0xfc, 0x38, 0xfe, 0x6b, 0x00, + 0x66, 0x03, 0x50, 0x05, 0x72, 0x06, 0x80, 0x07, 0xac, 0x07, 0xf9, 0x06, 0xcd, 0x05, 0x18, 0x05, + 0xe3, 0x04, 0xdc, 0x03, 0x16, 0x02, 0xd5, 0xff, 0x1b, 0xfe, 0xa4, 0xfd, 0x17, 0xfd, 0xa5, 0xfd, + 0x12, 0xfe, 0x74, 0xfd, 0xb3, 0xfd, 0xae, 0xfd, 0x31, 0xfd, 0x99, 0xfc, 0xb7, 0xfb, 0x64, 0xfb, + 0x8b, 0xfa, 0x45, 0xfa, 0x7f, 0xf9, 0xfb, 0xf8, 0xab, 0xf9, 0x44, 0xfb, 0x4b, 0xfd, 0x22, 0xff, + 0xf3, 0x01, 0xfa, 0x05, 0x95, 0x09, 0x9f, 0x0a, 0x6d, 0x0b, 0x3d, 0x0b, 0xe6, 0x0a, 0x6d, 0x0a, + 0xb1, 0x08, 0x13, 0x06, 0xc0, 0x03, 0x92, 0x00, 0x24, 0xfd, 0x85, 0xfa, 0xb1, 0xf9, 0x2e, 0xf8, + 0xaa, 0xf5, 0x42, 0xf3, 0x5d, 0xf2, 0xab, 0xf3, 0x48, 0xf4, 0x70, 0xf4, 0x72, 0xf3, 0xe0, 0xf3, + 0x0f, 0xf4, 0x9c, 0xf2, 0x06, 0xf2, 0x70, 0xf1, 0xd7, 0xf0, 0x1e, 0xf0, 0x26, 0xf0, 0xf4, 0xf1, + 0x94, 0xf4, 0xe9, 0xf7, 0x84, 0xfb, 0xfd, 0xff, 0xb0, 0x05, 0x46, 0x0b, 0x74, 0x0e, 0x10, 0x10, + 0x49, 0x13, 0x0b, 0x15, 0xa5, 0x14, 0x0e, 0x14, 0x67, 0x13, 0xa8, 0x11, 0xd0, 0x0d, 0x6b, 0x09, + 0xbf, 0x05, 0x2c, 0x03, 0xd0, 0x01, 0x90, 0xff, 0x29, 0xfd, 0xac, 0xfb, 0x9a, 0xfb, 0xea, 0xfa, + 0xbe, 0xfa, 0x30, 0xfb, 0x86, 0xfa, 0x3e, 0xf9, 0xe9, 0xf6, 0xa7, 0xf4, 0x53, 0xf3, 0x11, 0xf3, + 0x6b, 0xf2, 0xde, 0xf1, 0x75, 0xf3, 0xe2, 0xf5, 0x25, 0xf8, 0xba, 0xfb, 0xde, 0xfe, 0x0b, 0x03, + 0x06, 0x08, 0x0c, 0x0d, 0xd0, 0x10, 0x10, 0x13, 0xef, 0x14, 0x87, 0x16, 0x20, 0x18, 0xc3, 0x19, + 0x99, 0x19, 0x62, 0x17, 0x35, 0x15, 0x93, 0x13, 0x7b, 0x11, 0x91, 0x0f, 0xb0, 0x0e, 0x5b, 0x0d, + 0x01, 0x0b, 0x91, 0x07, 0x80, 0x05, 0x20, 0x04, 0x22, 0x03, 0xf7, 0x01, 0xad, 0x00, 0x7f, 0xfe, + 0xfe, 0xfc, 0x60, 0xfa, 0x85, 0xf7, 0x15, 0xf6, 0xd0, 0xf4, 0xf4, 0xf2, 0xb6, 0xf1, 0xce, 0xf0, + 0xf5, 0xf0, 0x15, 0xf3, 0xd6, 0xf3, 0xb5, 0xf4, 0xb4, 0xf6, 0x2a, 0xf9, 0x95, 0xfb, 0x0a, 0xfe, + 0xa4, 0x00, 0xbf, 0x02, 0x7a, 0x04, 0x2a, 0x05, 0x19, 0x05, 0x9f, 0x05, 0xd4, 0x05, 0xac, 0x04, + 0x0f, 0x03, 0x30, 0x03, 0xfd, 0x03, 0x1e, 0x03, 0x9a, 0x00, 0xee, 0xfe, 0x38, 0xfe, 0xae, 0xfc, + 0xcb, 0xfa, 0x41, 0xfb, 0x45, 0xfd, 0x2c, 0xfe, 0xfe, 0xfc, 0xa2, 0xfa, 0x00, 0xf8, 0x1d, 0xf7, + 0xc2, 0xf6, 0xc7, 0xf4, 0xab, 0xf3, 0x71, 0xf2, 0x61, 0xf1, 0xc0, 0xf0, 0x81, 0xf0, 0xbc, 0xf1, + 0x6a, 0xf4, 0x36, 0xf7, 0x36, 0xf9, 0xbf, 0xfc, 0x18, 0x01, 0x8d, 0x03, 0xcd, 0x05, 0xdd, 0x07, + 0xbd, 0x09, 0xaf, 0x0a, 0x4b, 0x0a, 0x92, 0x09, 0x6e, 0x08, 0x89, 0x08, 0xf3, 0x07, 0xc8, 0x06, + 0xa2, 0x06, 0x94, 0x06, 0x2e, 0x07, 0x0f, 0x07, 0xa6, 0x07, 0x45, 0x09, 0x03, 0x09, 0x0d, 0x08, + 0x43, 0x07, 0xb3, 0x05, 0x69, 0x02, 0xea, 0xff, 0xe9, 0xfd, 0xdb, 0xfb, 0x8a, 0xf9, 0x17, 0xf6, + 0x21, 0xf3, 0x2c, 0xf1, 0x65, 0xf0, 0x1f, 0xf1, 0x05, 0xf3, 0x0c, 0xf5, 0xd9, 0xf6, 0x44, 0xf9, + 0x16, 0xfc, 0x24, 0xff, 0x01, 0x02, 0x95, 0x03, 0x28, 0x04, 0x7c, 0x03, 0x37, 0x02, 0xb9, 0x00, + 0x5f, 0xff, 0x08, 0xff, 0x5d, 0xff, 0xc5, 0xff, 0x45, 0xff, 0x94, 0xff, 0xd6, 0x00, 0x61, 0x01, + 0x0c, 0x02, 0xe7, 0x01, 0xcb, 0x01, 0xbf, 0x02, 0xfd, 0x02, 0x14, 0x01, 0x72, 0xfe, 0xf6, 0xfd, + 0x5c, 0xfd, 0x63, 0xfb, 0xdb, 0xf8, 0xc6, 0xf7, 0x73, 0xf7, 0xe6, 0xf6, 0x3a, 0xf7, 0xcd, 0xf8, + 0x5c, 0xfc, 0x50, 0xff, 0xb1, 0x00, 0xc1, 0x02, 0x9b, 0x04, 0xd2, 0x06, 0xd8, 0x07, 0x2b, 0x07, + 0xe1, 0x06, 0xbd, 0x06, 0xcd, 0x05, 0xe6, 0x04, 0xa2, 0x04, 0x98, 0x04, 0x23, 0x05, 0x25, 0x04, + 0xeb, 0x01, 0x87, 0x01, 0x77, 0x01, 0x3a, 0x00, 0x17, 0xff, 0x69, 0xfd, 0xc2, 0xfc, 0xa0, 0xfc, + 0x4d, 0xfb, 0x25, 0xfa, 0xc3, 0xf8, 0x50, 0xf8, 0x34, 0xf7, 0x6e, 0xf6, 0x00, 0xf8, 0xbf, 0xf8, + 0x86, 0xf8, 0x07, 0xf9, 0x81, 0xfa, 0x8d, 0xfd, 0x58, 0x01, 0x03, 0x05, 0x59, 0x08, 0xe2, 0x0a, + 0x19, 0x0c, 0x07, 0x0e, 0xc2, 0x10, 0x43, 0x13, 0xc4, 0x14, 0xb8, 0x15, 0x9e, 0x15, 0x2c, 0x14, + 0x9d, 0x11, 0xe5, 0x0f, 0x87, 0x0f, 0x21, 0x0e, 0xfd, 0x0a, 0x73, 0x08, 0x4e, 0x06, 0x0e, 0x03, + 0x3b, 0x00, 0x6c, 0xfd, 0x62, 0xfb, 0xe8, 0xf9, 0xb7, 0xf8, 0x13, 0xf7, 0xe5, 0xf5, 0xd8, 0xf4, + 0xf2, 0xf2, 0xfb, 0xf1, 0xfd, 0xf0, 0xc5, 0xef, 0x9f, 0xf0, 0xfb, 0xf1, 0x1a, 0xf3, 0xf1, 0xf3, + 0x78, 0xf6, 0xbd, 0xfa, 0x66, 0xfd, 0xd0, 0xff, 0x3e, 0x03, 0x58, 0x08, 0xac, 0x0c, 0xd7, 0x0e, + 0xbe, 0x0f, 0x08, 0x11, 0xcd, 0x10, 0x98, 0x0e, 0xc9, 0x0c, 0x76, 0x0c, 0x96, 0x0d, 0x38, 0x0c, + 0xc2, 0x07, 0x8d, 0x03, 0x2a, 0x00, 0x0a, 0xfd, 0x24, 0xfb, 0x01, 0xfa, 0x5b, 0xf9, 0x6d, 0xf8, + 0x89, 0xf7, 0x39, 0xf6, 0xd0, 0xf4, 0xc6, 0xf3, 0x6b, 0xf2, 0x42, 0xf0, 0x90, 0xee, 0x66, 0xee, + 0xdd, 0xee, 0xa8, 0xee, 0xdd, 0xee, 0x2f, 0xf0, 0x55, 0xf4, 0x36, 0xf9, 0x16, 0xfd, 0xb4, 0x01, + 0xd4, 0x06, 0x2c, 0x0b, 0x29, 0x0d, 0xf7, 0x0e, 0xac, 0x11, 0x72, 0x12, 0x5d, 0x11, 0x9f, 0x10, + 0x99, 0x0f, 0x29, 0x0e, 0xae, 0x0c, 0x92, 0x0a, 0x76, 0x07, 0xa2, 0x05, 0x28, 0x03, 0x34, 0x01, + 0xc5, 0xff, 0xdc, 0xfe, 0x63, 0xfe, 0xb1, 0xfc, 0xc6, 0xfa, 0xd0, 0xf7, 0x08, 0xf5, 0xd1, 0xf3, + 0x32, 0xf2, 0x5a, 0xef, 0x71, 0xec, 0x22, 0xea, 0x87, 0xe9, 0x75, 0xe9, 0x6d, 0xea, 0x41, 0xec, + 0xca, 0xee, 0x90, 0xf2, 0x43, 0xf6, 0x9d, 0xf8, 0xe5, 0xfa, 0x6d, 0xfd, 0x8b, 0xff, 0x72, 0x02, + 0xa8, 0x04, 0xea, 0x05, 0xce, 0x06, 0x30, 0x06, 0x38, 0x04, 0x0b, 0x03, 0xf3, 0x03, 0xf3, 0x05, + 0x7f, 0x05, 0x53, 0x04, 0x9d, 0x04, 0x67, 0x05, 0x14, 0x05, 0xba, 0x04, 0xe1, 0x04, 0x0f, 0x06, + 0x9e, 0x05, 0x6b, 0x02, 0x67, 0x00, 0x00, 0xff, 0x46, 0xfe, 0xea, 0xfc, 0xc2, 0xfa, 0x2b, 0xfa, + 0x0a, 0xfa, 0xc4, 0xf8, 0xc7, 0xf8, 0xa7, 0xf9, 0x42, 0xfa, 0xed, 0xfb, 0x2b, 0xfd, 0xd9, 0xfd, + 0x53, 0x00, 0xb2, 0x02, 0xdc, 0x03, 0xc5, 0x04, 0xbf, 0x05, 0x56, 0x07, 0xd7, 0x08, 0xfd, 0x07, + 0xe4, 0x06, 0xab, 0x06, 0x6d, 0x08, 0x85, 0x08, 0xb7, 0x06, 0xbf, 0x05, 0x52, 0x05, 0x19, 0x05, + 0xb8, 0x04, 0x16, 0x05, 0x94, 0x06, 0x51, 0x07, 0xe9, 0x06, 0x1e, 0x06, 0x0b, 0x06, 0xab, 0x06, + 0xd1, 0x06, 0xa4, 0x06, 0x8a, 0x05, 0xb3, 0x04, 0x23, 0x03, 0xce, 0x01, 0x68, 0x01, 0x93, 0x01, + 0xc2, 0x01, 0xba, 0x02, 0x86, 0x03, 0x82, 0x02, 0x16, 0x02, 0xaf, 0x03, 0x54, 0x04, 0x5b, 0x04, + 0xf2, 0x04, 0x25, 0x05, 0x5f, 0x05, 0x53, 0x05, 0x3c, 0x03, 0x29, 0x00, 0x37, 0xff, 0x1b, 0xfe, + 0xe5, 0xfc, 0x6a, 0xfb, 0x13, 0xfa, 0xbd, 0xf8, 0x38, 0xf7, 0x3b, 0xf6, 0xc3, 0xf5, 0x36, 0xf6, + 0x2f, 0xf8, 0xc4, 0xf8, 0xdf, 0xf7, 0x1f, 0xf7, 0x14, 0xf7, 0x00, 0xf7, 0xfb, 0xf4, 0x15, 0xf4, + 0x88, 0xf4, 0x7e, 0xf4, 0x14, 0xf4, 0xd4, 0xf4, 0x0a, 0xf6, 0xa5, 0xf8, 0xf8, 0xfa, 0x18, 0xfb, + 0x4d, 0xfd, 0xca, 0x01, 0x25, 0x06, 0x82, 0x09, 0x10, 0x0c, 0x0a, 0x0e, 0x0a, 0x0e, 0xfd, 0x0c, + 0xd1, 0x0b, 0xca, 0x0a, 0x5c, 0x0a, 0xdb, 0x09, 0xa0, 0x08, 0x75, 0x07, 0xe7, 0x07, 0xcc, 0x07, + 0x83, 0x06, 0xee, 0x05, 0x70, 0x06, 0xa1, 0x07, 0x50, 0x08, 0x53, 0x06, 0x3d, 0x04, 0x89, 0x02, + 0x09, 0x02, 0x4b, 0x00, 0x79, 0xfd, 0x3e, 0xfc, 0x57, 0xfb, 0xd3, 0xf9, 0x9d, 0xf8, 0x3c, 0xf9, + 0x8c, 0xfa, 0xf2, 0xfb, 0x4d, 0xfe, 0x42, 0x01, 0x1a, 0x04, 0xd5, 0x06, 0xdd, 0x09, 0xae, 0x0b, + 0x9d, 0x0d, 0xeb, 0x0e, 0x2e, 0x0d, 0x50, 0x0b, 0x68, 0x09, 0x18, 0x08, 0xb6, 0x07, 0xee, 0x06, + 0xd8, 0x04, 0x03, 0x02, 0x47, 0xff, 0x2d, 0xfe, 0xd0, 0xfc, 0xf6, 0xfa, 0x0d, 0xf9, 0x3e, 0xf6, + 0x80, 0xf3, 0x2e, 0xf1, 0x2a, 0xee, 0xb7, 0xeb, 0xd3, 0xea, 0xa9, 0xe8, 0x4f, 0xe7, 0xbd, 0xe5, + 0x5f, 0xe4, 0xbf, 0xe3, 0xc8, 0xe3, 0xc8, 0xe5, 0x41, 0xe8, 0x23, 0xeb, 0x36, 0xef, 0xe4, 0xf2, + 0x27, 0xf6, 0xb2, 0xfa, 0xf6, 0xfe, 0x90, 0x02, 0x43, 0x06, 0xba, 0x09, 0xf1, 0x0c, 0xa4, 0x0e, + 0x6a, 0x0e, 0x3b, 0x0f, 0x9a, 0x10, 0xae, 0x11, 0x05, 0x12, 0xb4, 0x10, 0xd3, 0x0f, 0x69, 0x0f, + 0x02, 0x0e, 0x5a, 0x0c, 0xcf, 0x0a, 0xe0, 0x08, 0xa7, 0x06, 0xde, 0x03, 0x99, 0x00, 0xa6, 0xfe, + 0xd8, 0xfc, 0xe7, 0xf9, 0x9e, 0xf6, 0x02, 0xf5, 0xac, 0xf4, 0xf0, 0xf2, 0x62, 0xf1, 0x0f, 0xf1, + 0x45, 0xf1, 0x06, 0xf3, 0x6e, 0xf5, 0x94, 0xf6, 0x21, 0xf9, 0x3a, 0xfc, 0x68, 0xff, 0xbd, 0x01, + 0xed, 0x04, 0xf4, 0x08, 0x14, 0x0b, 0xde, 0x0b, 0x65, 0x0c, 0x0a, 0x0d, 0xef, 0x0d, 0x60, 0x0e, + 0xeb, 0x0d, 0xff, 0x0c, 0xdb, 0x0b, 0x6b, 0x0a, 0x5a, 0x09, 0xd1, 0x08, 0x6f, 0x08, 0x6f, 0x07, + 0xfb, 0x04, 0x51, 0x03, 0x52, 0x01, 0x49, 0x00, 0x28, 0x00, 0x41, 0xff, 0xf7, 0xfc, 0xb8, 0xf9, + 0x62, 0xf6, 0x99, 0xf3, 0x52, 0xf2, 0xba, 0xf1, 0x31, 0xf1, 0x62, 0xf2, 0xc6, 0xf4, 0x11, 0xf7, + 0x83, 0xf9, 0x2f, 0xfc, 0x7c, 0xff, 0xaa, 0x01, 0x78, 0x04, 0xb3, 0x07, 0xa0, 0x09, 0xa6, 0x0a, + 0xdd, 0x09, 0x45, 0x08, 0xe9, 0x06, 0xd6, 0x05, 0x54, 0x05, 0x60, 0x04, 0xff, 0x02, 0x71, 0x02, + 0x6b, 0x01, 0xd8, 0xff, 0x13, 0x00, 0x9d, 0x00, 0x3f, 0x01, 0x3e, 0x02, 0x29, 0x01, 0x8d, 0x01, + 0x64, 0x02, 0x2a, 0x02, 0x56, 0xff, 0xda, 0xfb, 0xd4, 0xf9, 0x01, 0xf8, 0xad, 0xf7, 0x72, 0xf8, + 0xc4, 0xf9, 0x52, 0xfb, 0x5f, 0xfc, 0x01, 0xfd, 0x7b, 0xfe, 0x63, 0x02, 0x7c, 0x05, 0xa8, 0x06, + 0x7a, 0x08, 0xdf, 0x09, 0xe7, 0x0a, 0xe4, 0x09, 0x16, 0x07, 0x1c, 0x05, 0xcc, 0x03, 0xff, 0x02, + 0x29, 0x02, 0x91, 0x00, 0x4a, 0xff, 0x46, 0xfe, 0x7c, 0xfd, 0xbd, 0xfc, 0x8a, 0xfd, 0x0d, 0xff, + 0xe9, 0xfe, 0xcb, 0xfe, 0x6d, 0xfe, 0x82, 0xfd, 0xc7, 0xfc, 0x2a, 0xfb, 0x8f, 0xf9, 0x5b, 0xf9, + 0x46, 0xf9, 0x9e, 0xf7, 0xa6, 0xf6, 0x53, 0xf7, 0x14, 0xf8, 0x6a, 0xf9, 0x79, 0xfa, 0xee, 0xfb, + 0xd1, 0xfd, 0x43, 0x00, 0xd5, 0x02, 0x2a, 0x04, 0xe1, 0x04, 0x54, 0x05, 0x6d, 0x04, 0xe7, 0x03, + 0x28, 0x03, 0xb1, 0x01, 0xbf, 0xff, 0xc6, 0xfd, 0xde, 0xfb, 0x20, 0xfb, 0xbe, 0xfa, 0x1a, 0xf9, + 0xba, 0xf8, 0xd1, 0xf8, 0xdc, 0xf9, 0x00, 0xfb, 0xed, 0xfa, 0xd1, 0xfa, 0xb6, 0xfa, 0x54, 0xfa, + 0xad, 0xfb, 0x23, 0xfd, 0x9f, 0xfd, 0xf6, 0xfd, 0x32, 0xfe, 0x0c, 0xfe, 0xee, 0xfd, 0xc9, 0xfd, + 0xe5, 0xfe, 0xbd, 0x00, 0x5b, 0x02, 0x58, 0x03, 0x15, 0x04, 0x27, 0x06, 0xed, 0x08, 0x48, 0x0b, + 0x32, 0x0d, 0xb7, 0x0e, 0x69, 0x0f, 0x6d, 0x0f, 0x25, 0x0f, 0xd8, 0x0e, 0x14, 0x0e, 0xea, 0x0c, + 0xda, 0x09, 0x03, 0x07, 0x1f, 0x05, 0x64, 0x03, 0xd9, 0x00, 0xc1, 0xfd, 0xd8, 0xfb, 0x33, 0xfb, + 0x7d, 0xfb, 0x77, 0xfb, 0xcd, 0xf9, 0xdf, 0xf8, 0x97, 0xf8, 0x30, 0xf8, 0xdb, 0xf6, 0x61, 0xf5, + 0xa1, 0xf4, 0x8b, 0xf2, 0x9f, 0xf0, 0x5b, 0xef, 0xec, 0xef, 0xd4, 0xf0, 0xf5, 0xf0, 0x00, 0xf2, + 0x72, 0xf4, 0x20, 0xf8, 0x9a, 0xfb, 0xfc, 0xfe, 0xff, 0x02, 0x15, 0x08, 0xae, 0x0b, 0x10, 0x0d, + 0x4c, 0x0f, 0x2c, 0x11, 0x38, 0x12, 0x52, 0x12, 0x68, 0x10, 0x3a, 0x0e, 0x16, 0x0d, 0xa7, 0x0c, + 0xe3, 0x0b, 0x42, 0x0b, 0x31, 0x0b, 0x85, 0x0a, 0x60, 0x09, 0xa2, 0x08, 0x89, 0x07, 0xdb, 0x06, + 0x47, 0x05, 0x5c, 0x03, 0x45, 0x01, 0x0f, 0xff, 0xab, 0xfc, 0x5f, 0xf8, 0x81, 0xf4, 0xae, 0xf1, + 0x7e, 0xf0, 0x98, 0xf0, 0x21, 0xf1, 0x13, 0xf2, 0xb9, 0xf3, 0xcd, 0xf5, 0x80, 0xf8, 0xb1, 0xfb, + 0x64, 0xfe, 0xf7, 0x01, 0x2d, 0x05, 0x69, 0x07, 0x77, 0x08, 0x1c, 0x08, 0x56, 0x08, 0xa0, 0x08, + 0xab, 0x08, 0x5c, 0x07, 0x6b, 0x06, 0x4b, 0x07, 0x53, 0x07, 0x36, 0x07, 0xed, 0x06, 0x5e, 0x06, + 0x65, 0x05, 0x9c, 0x04, 0x0f, 0x04, 0x48, 0x04, 0x34, 0x04, 0xb0, 0x02, 0x81, 0xff, 0xff, 0xfb, + 0x54, 0xf9, 0xb0, 0xf6, 0x9f, 0xf3, 0x9f, 0xf0, 0xae, 0xee, 0x18, 0xef, 0x8a, 0xf0, 0x46, 0xf1, + 0xe5, 0xf1, 0xf8, 0xf3, 0xf1, 0xf6, 0xf1, 0xf9, 0xb8, 0xfc, 0x2a, 0x00, 0xb5, 0x03, 0x85, 0x04, + 0xa6, 0x04, 0xa4, 0x05, 0x57, 0x07, 0xb2, 0x08, 0xc1, 0x08, 0x4e, 0x08, 0x49, 0x09, 0xaf, 0x09, + 0xfe, 0x07, 0xc6, 0x06, 0xf2, 0x06, 0x49, 0x07, 0xd7, 0x06, 0x44, 0x05, 0x90, 0x04, 0x20, 0x04, + 0x72, 0x03, 0xec, 0x01, 0xa2, 0xff, 0x93, 0xfd, 0xcc, 0xfb, 0xf8, 0xf9, 0xe6, 0xf7, 0xff, 0xf5, + 0xee, 0xf3, 0xb0, 0xf2, 0x82, 0xf1, 0x06, 0xf1, 0x97, 0xf1, 0x33, 0xf3, 0x2b, 0xf4, 0xd3, 0xf4, + 0x67, 0xf6, 0x37, 0xfa, 0x96, 0xfd, 0xbf, 0xfe, 0xf2, 0xff, 0x8a, 0x01, 0xb4, 0x03, 0xb3, 0x04, + 0xab, 0x04, 0x48, 0x04, 0x3b, 0x03, 0x44, 0x02, 0x91, 0x01, 0xbc, 0x00, 0x69, 0x00, 0x43, 0x00, + 0x3d, 0x00, 0xc1, 0xff, 0xf2, 0xfe, 0x09, 0xfe, 0x63, 0xfe, 0xcb, 0xff, 0x22, 0x00, 0xdb, 0xff, + 0x52, 0xff, 0xdd, 0xfe, 0xa0, 0xfd, 0xe1, 0xfc, 0xf6, 0xfb, 0x58, 0xfb, 0x33, 0xfb, 0x0e, 0xfb, + 0x62, 0xfc, 0x3e, 0xfe, 0x33, 0x00, 0x20, 0x02, 0x66, 0x04, 0xed, 0x06, 0x56, 0x0a, 0x0b, 0x0d, + 0x50, 0x0d, 0xff, 0x0c, 0x9e, 0x0c, 0x1e, 0x0c, 0xe4, 0x0a, 0x11, 0x08, 0xc9, 0x04, 0xc4, 0x02, + 0x8c, 0x00, 0x7b, 0xfd, 0x11, 0xfb, 0xc0, 0xfa, 0x28, 0xfb, 0x81, 0xf9, 0x66, 0xf8, 0x09, 0xf9, + 0x35, 0xfa, 0x83, 0xfa, 0xcf, 0xf9, 0x2b, 0xf9, 0x0f, 0xfa, 0xf6, 0xf9, 0x9c, 0xf7, 0xed, 0xf6, + 0xa6, 0xf7, 0xeb, 0xf7, 0x52, 0xf8, 0x57, 0xf9, 0xce, 0xfb, 0x7b, 0xff, 0x80, 0x03, 0xcd, 0x06, + 0x95, 0x09, 0x91, 0x0c, 0x44, 0x0f, 0x24, 0x12, 0xf5, 0x13, 0x23, 0x14, 0xcc, 0x13, 0xbc, 0x12, + 0xfa, 0x0f, 0x71, 0x0c, 0xb3, 0x09, 0xb5, 0x07, 0x12, 0x04, 0x52, 0x00, 0x39, 0xfe, 0x97, 0xfd, + 0x03, 0xfd, 0x5f, 0xfb, 0xdd, 0xf9, 0x2b, 0xf9, 0x31, 0xf9, 0x65, 0xf8, 0xcb, 0xf7, 0x6a, 0xf7, + 0xef, 0xf5, 0x62, 0xf4, 0xbe, 0xf2, 0x95, 0xf1, 0x32, 0xf1, 0x33, 0xf1, 0x7b, 0xf2, 0x6f, 0xf4, + 0x67, 0xf6, 0xee, 0xf7, 0x6a, 0xfa, 0x44, 0xfd, 0x30, 0x00, 0xde, 0x02, 0x28, 0x06, 0x15, 0x0a, + 0x10, 0x0c, 0x39, 0x0d, 0xce, 0x0d, 0x92, 0x0d, 0xec, 0x0c, 0x6d, 0x0b, 0x7b, 0x0a, 0xcc, 0x0a, + 0xeb, 0x0a, 0x65, 0x09, 0x8f, 0x07, 0x85, 0x06, 0x91, 0x05, 0xb9, 0x04, 0x5e, 0x03, 0xf8, 0x01, + 0x5b, 0x01, 0x32, 0x01, 0x08, 0x01, 0xc3, 0xff, 0x9c, 0xfe, 0xa7, 0xfe, 0x2f, 0xfd, 0x01, 0xfb, + 0x28, 0xfa, 0x1c, 0xfa, 0x0c, 0xfa, 0x3a, 0xf9, 0xcc, 0xf8, 0x98, 0xf9, 0xb2, 0xfb, 0x7d, 0xfc, + 0xf5, 0xfc, 0x1a, 0xff, 0x78, 0x02, 0x62, 0x04, 0xe9, 0x04, 0x31, 0x06, 0xcd, 0x07, 0x1f, 0x09, + 0x87, 0x09, 0x8b, 0x08, 0x23, 0x08, 0xee, 0x07, 0x0b, 0x07, 0x86, 0x05, 0x0b, 0x04, 0x0a, 0x02, + 0xf7, 0xff, 0xc7, 0xfe, 0x39, 0xfd, 0xc3, 0xfc, 0xd5, 0xfc, 0x5d, 0xfc, 0xbd, 0xfa, 0x86, 0xf9, + 0x9d, 0xf8, 0x8c, 0xf7, 0x71, 0xf5, 0x54, 0xf2, 0x0b, 0xf0, 0xda, 0xee, 0x01, 0xed, 0x27, 0xeb, + 0xc5, 0xea, 0xd2, 0xea, 0xfa, 0xeb, 0xd7, 0xed, 0x1a, 0xf0, 0x4e, 0xf3, 0x86, 0xf7, 0xd4, 0xfa, + 0x0f, 0xfe, 0x78, 0x01, 0xd8, 0x03, 0xe4, 0x05, 0x03, 0x08, 0xbb, 0x09, 0xa7, 0x09, 0x58, 0x09, + 0xc6, 0x09, 0x38, 0x09, 0x2b, 0x09, 0xec, 0x09, 0x8b, 0x09, 0x60, 0x0a, 0xed, 0x0a, 0x65, 0x0b, + 0x40, 0x0c, 0x9d, 0x0c, 0x4e, 0x0b, 0x5f, 0x09, 0xcc, 0x08, 0xd0, 0x08, 0x89, 0x07, 0xec, 0x04, + 0xa5, 0x01, 0x2f, 0xfe, 0xd3, 0xfa, 0xe4, 0xf8, 0x8b, 0xf7, 0x12, 0xf6, 0x98, 0xf5, 0x99, 0xf5, + 0x56, 0xf6, 0xee, 0xf7, 0x54, 0xfa, 0x39, 0xfd, 0xe0, 0xfe, 0xe8, 0xff, 0x48, 0x01, 0x8f, 0x02, + 0x5b, 0x03, 0x3d, 0x02, 0xdb, 0x00, 0xa7, 0x00, 0xf9, 0x00, 0xf6, 0xff, 0x2f, 0xff, 0x76, 0x00, + 0xc1, 0x01, 0x37, 0x02, 0x6a, 0x01, 0x8d, 0x01, 0xa3, 0x02, 0xd7, 0x03, 0xca, 0x03, 0xf7, 0x01, + 0x7d, 0x01, 0x07, 0x01, 0xb9, 0xff, 0x3b, 0xfe, 0xc4, 0xfc, 0xda, 0xfa, 0xaa, 0xf7, 0xb2, 0xf6, + 0x8f, 0xf7, 0xdc, 0xf8, 0x9d, 0xfa, 0xd6, 0xfb, 0xf8, 0xfb, 0x13, 0xfd, 0xc0, 0xff, 0x7a, 0x02, + 0x92, 0x03, 0x88, 0x04, 0x6d, 0x05, 0x96, 0x06, 0x03, 0x07, 0x01, 0x07, 0xb2, 0x06, 0xd1, 0x05, + 0x8c, 0x05, 0x83, 0x04, 0xa6, 0x03, 0xe8, 0x03, 0x3b, 0x03, 0x16, 0x02, 0x7b, 0x01, 0xba, 0x00, + 0x72, 0xff, 0x36, 0xfe, 0xff, 0xfd, 0x6b, 0xfd, 0x96, 0xfc, 0xde, 0xfb, 0x3b, 0xfb, 0xe0, 0xf9, + 0x73, 0xf9, 0x7c, 0xf8, 0xbe, 0xf6, 0xd9, 0xf6, 0x19, 0xf8, 0x9c, 0xf9, 0xc8, 0xfb, 0x83, 0xfd, + 0x99, 0xfd, 0x58, 0xfe, 0xa5, 0x00, 0xd6, 0x03, 0xd6, 0x06, 0x43, 0x09, 0xfe, 0x0a, 0x61, 0x0c, + 0xb3, 0x0c, 0x61, 0x0d, 0x68, 0x0d, 0x3f, 0x0c, 0x3c, 0x0b, 0xba, 0x09, 0xbb, 0x07, 0x23, 0x06, + 0x7c, 0x04, 0x85, 0x02, 0x09, 0x00, 0xdc, 0xfd, 0x8e, 0xfc, 0xee, 0xfb, 0x5a, 0xfb, 0xc5, 0xf9, + 0xe9, 0xf8, 0x63, 0xf9, 0x53, 0xf9, 0x57, 0xf7, 0x4d, 0xf6, 0x4b, 0xf6, 0x9c, 0xf5, 0x2a, 0xf5, + 0xed, 0xf4, 0xee, 0xf5, 0x1c, 0xf8, 0x48, 0xfa, 0x68, 0xfb, 0x07, 0xfd, 0xc5, 0x00, 0x1b, 0x05, + 0xc2, 0x08, 0x2d, 0x0c, 0x97, 0x0e, 0xd7, 0x0f, 0xf6, 0x0f, 0xe9, 0x0f, 0x41, 0x10, 0xc5, 0x0f, + 0xed, 0x0d, 0x63, 0x0b, 0x57, 0x08, 0xd7, 0x05, 0xaf, 0x03, 0x6d, 0x01, 0x12, 0xfe, 0x6c, 0xfb, + 0x83, 0xf9, 0x55, 0xf8, 0xb8, 0xf7, 0x3a, 0xf7, 0xc0, 0xf6, 0x62, 0xf5, 0x2a, 0xf4, 0xe3, 0xf2, + 0x5a, 0xf2, 0xe5, 0xf1, 0xef, 0xef, 0x89, 0xee, 0xde, 0xee, 0x27, 0xf0, 0x07, 0xf2, 0xd7, 0xf4, + 0xad, 0xf7, 0xca, 0xfa, 0x58, 0xfe, 0x22, 0x01, 0xc4, 0x04, 0xc7, 0x08, 0x45, 0x0c, 0xe3, 0x0d, + 0xbf, 0x0d, 0x74, 0x0d, 0x24, 0x0d, 0x63, 0x0d, 0xfe, 0x0c, 0xef, 0x0b, 0x3d, 0x09, 0x82, 0x06, + 0x21, 0x05, 0x4a, 0x04, 0xce, 0x03, 0x36, 0x03, 0xe3, 0x01, 0xfc, 0x00, 0xb1, 0xff, 0x7d, 0xfe, + 0x58, 0xfd, 0xb2, 0xfb, 0x32, 0xfa, 0xb6, 0xf7, 0xbc, 0xf5, 0x75, 0xf4, 0x47, 0xf3, 0xa6, 0xf1, + 0xba, 0xf0, 0x3a, 0xf1, 0x6b, 0xf2, 0x65, 0xf4, 0x69, 0xf6, 0xbc, 0xf7, 0x1f, 0xfa, 0xdf, 0xfc, + 0x81, 0xff, 0xae, 0x01, 0x00, 0x04, 0x05, 0x06, 0x18, 0x07, 0xe0, 0x06, 0x2a, 0x06, 0xaf, 0x06, + 0x2d, 0x07, 0x99, 0x07, 0x2e, 0x07, 0xd0, 0x06, 0x27, 0x07, 0x7c, 0x07, 0xdb, 0x07, 0xc2, 0x08, + 0x0e, 0x09, 0xc2, 0x08, 0x56, 0x07, 0x36, 0x06, 0x68, 0x06, 0xfb, 0x05, 0x14, 0x05, 0x5a, 0x04, + 0xac, 0x02, 0x40, 0x01, 0x45, 0x00, 0x7d, 0xfe, 0x22, 0xfd, 0xee, 0xfc, 0x76, 0xfc, 0x0c, 0xfc, + 0xc4, 0xfb, 0x68, 0xfb, 0xbe, 0xfb, 0x28, 0xfc, 0xba, 0xfc, 0xb8, 0xfd, 0x68, 0xff, 0xac, 0x00, + 0xf0, 0x00, 0x25, 0x00, 0x51, 0x00, 0x1a, 0x01, 0x36, 0x01, 0x8d, 0x00, 0x4c, 0x00, 0x1d, 0x00, + 0x2a, 0x00, 0x2e, 0xff, 0x2a, 0xfe, 0x94, 0xfe, 0x85, 0xff, 0x67, 0x00, 0xd3, 0xff, 0x98, 0xff, + 0xf2, 0xff, 0x85, 0x00, 0xbe, 0x00, 0x07, 0x01, 0x74, 0x00, 0x44, 0xff, 0x8f, 0xfe, 0x7f, 0xfd, + 0x9c, 0xfc, 0xef, 0xfc, 0xfd, 0xfc, 0xf9, 0xfc, 0x5f, 0xfc, 0xb8, 0xfc, 0xe7, 0xfc, 0x75, 0xfe, + 0xc5, 0xff, 0x5a, 0x00, 0xbd, 0x01, 0x84, 0x03, 0x75, 0x04, 0xfe, 0x04, 0x8e, 0x05, 0xad, 0x05, + 0xb3, 0x05, 0xe8, 0x04, 0xc0, 0x04, 0x85, 0x03, 0xff, 0x02, 0x6f, 0x02, 0x11, 0x02, 0x71, 0x02, + 0x0e, 0x03, 0xcb, 0x03, 0x35, 0x04, 0x45, 0x04, 0xc0, 0x03, 0x43, 0x03, 0x82, 0x02, 0x19, 0x03, + 0xa5, 0x02, 0x15, 0x00, 0xf0, 0xfd, 0x78, 0xfc, 0xfd, 0xf9, 0x33, 0xf9, 0xdd, 0xf9, 0x6c, 0xf9, + 0x8c, 0xf8, 0xa5, 0xf8, 0x4d, 0xfa, 0x14, 0xfc, 0x28, 0xfe, 0x75, 0x00, 0x59, 0x02, 0x94, 0x03, + 0x0b, 0x04, 0x34, 0x04, 0xc1, 0x03, 0x1a, 0x03, 0x60, 0x02, 0x57, 0x01, 0x79, 0x00, 0x14, 0xff, + 0x3a, 0xfe, 0xc3, 0xfd, 0xb9, 0xfc, 0x71, 0xfc, 0x65, 0xfd, 0xbe, 0xfd, 0x63, 0xfd, 0x4c, 0xfc, + 0x7e, 0xfb, 0x62, 0xfb, 0x5e, 0xfa, 0x97, 0xf9, 0x24, 0xf8, 0x17, 0xf7, 0x12, 0xf6, 0x78, 0xf3, + 0xed, 0xf0, 0x5c, 0xf0, 0xdc, 0xf1, 0x3c, 0xf3, 0x4e, 0xf4, 0x19, 0xf6, 0xee, 0xf8, 0x84, 0xfc, + 0x64, 0xff, 0xa8, 0x02, 0xc5, 0x05, 0x62, 0x07, 0x88, 0x08, 0xfe, 0x09, 0x28, 0x0b, 0x3d, 0x0c, + 0xf7, 0x0c, 0x49, 0x0c, 0xf1, 0x0a, 0x3a, 0x0a, 0x53, 0x0a, 0x56, 0x0a, 0x4e, 0x09, 0xf7, 0x07, + 0x48, 0x07, 0x32, 0x06, 0x5b, 0x04, 0x30, 0x02, 0xaa, 0xff, 0x50, 0xfe, 0x62, 0xfc, 0x8a, 0xfa, + 0x24, 0xf9, 0x4e, 0xf7, 0x30, 0xf5, 0xf1, 0xf2, 0x48, 0xf1, 0xcb, 0xf0, 0x46, 0xf2, 0x71, 0xf3, + 0xc6, 0xf4, 0x91, 0xf6, 0xc0, 0xf7, 0xb8, 0xf9, 0xbb, 0xfb, 0x5b, 0xff, 0xb6, 0x03, 0xc3, 0x06, + 0xd7, 0x08, 0x6e, 0x0a, 0xbf, 0x0b, 0x0b, 0x0d, 0xab, 0x0e, 0x06, 0x0f, 0x45, 0x0e, 0xbe, 0x0d, + 0x85, 0x0d, 0xa3, 0x0d, 0xc3, 0x0c, 0xaa, 0x0b, 0x34, 0x0b, 0x95, 0x09, 0x50, 0x07, 0x31, 0x05, + 0xad, 0x03, 0xd3, 0x01, 0x93, 0xff, 0xe3, 0xfc, 0xd2, 0xfa, 0x99, 0xf9, 0x4b, 0xf8, 0x88, 0xf6, + 0x87, 0xf4, 0x89, 0xf3, 0xcd, 0xf3, 0x1e, 0xf4, 0xd2, 0xf3, 0x7b, 0xf4, 0x39, 0xf6, 0x48, 0xf8, + 0x54, 0xfa, 0x14, 0xfd, 0x11, 0x00, 0xec, 0x03, 0x76, 0x07, 0xf9, 0x08, 0xb6, 0x09, 0x66, 0x0b, + 0xee, 0x0d, 0x7e, 0x0e, 0x3c, 0x0d, 0x37, 0x0c, 0x38, 0x0b, 0xc6, 0x09, 0x0c, 0x09, 0x56, 0x08, + 0x5d, 0x07, 0xeb, 0x05, 0x99, 0x04, 0xbc, 0x03, 0xf3, 0x02, 0x40, 0x02, 0x42, 0x01, 0x37, 0xff, + 0xc2, 0xfd, 0xf9, 0xfc, 0x3a, 0xfb, 0x86, 0xf9, 0x96, 0xf7, 0x2e, 0xf5, 0xda, 0xf4, 0x8a, 0xf5, + 0x37, 0xf4, 0x77, 0xf4, 0xe5, 0xf5, 0xeb, 0xf7, 0xc6, 0xfb, 0x4e, 0xff, 0xdf, 0x02, 0x0d, 0x05, + 0x40, 0x06, 0xa0, 0x06, 0x64, 0x08, 0xf1, 0x09, 0x11, 0x09, 0xb4, 0x07, 0x77, 0x05, 0x37, 0x04, + 0xcf, 0x04, 0xc6, 0x03, 0xda, 0x02, 0x7d, 0x02, 0xbc, 0x00, 0x3f, 0xff, 0x3c, 0x02, 0xe3, 0x04, + 0xb7, 0x04, 0x8a, 0x03, 0x42, 0x01, 0x9c, 0xfd, 0x71, 0xfd, 0xc7, 0xfe, 0x32, 0xfe, 0xa9, 0xfc, + 0xcc, 0xf7, 0xbb, 0xf1, 0x1b, 0xf3, 0xbe, 0xf5, 0xe5, 0xf5, 0x74, 0xf5, 0x3c, 0xf5, 0x76, 0xf5, + 0x55, 0xf9, 0xd8, 0xfc, 0x0c, 0xfe, 0x4a, 0xff, 0x1b, 0xff, 0x51, 0xfd, 0x26, 0xfe, 0x8c, 0xff, + 0x04, 0x01, 0x2b, 0x01, 0xb9, 0xfe, 0x00, 0xfc, 0xbd, 0xfb, 0xb4, 0xfc, 0xda, 0xfc, 0x1b, 0xfe, + 0x43, 0xfd, 0xf1, 0xfc, 0xe7, 0xfd, 0x50, 0xfe, 0x89, 0xff, 0xb5, 0x00, 0xd4, 0xff, 0x8a, 0xfe, + 0x74, 0xff, 0xe0, 0xff, 0x92, 0xff, 0x3b, 0xff, 0x94, 0xfc, 0x8d, 0xfa, 0xbe, 0xfb, 0x0d, 0xfc, + 0xa4, 0xfb, 0xfa, 0xfc, 0xa5, 0xfe, 0xaa, 0xfe, 0x33, 0x00, 0x23, 0x02, 0xce, 0x02, 0x6f, 0x04, + 0x03, 0x05, 0xfb, 0x04, 0x50, 0x05, 0x50, 0x05, 0xc3, 0x05, 0xb4, 0x05, 0x2c, 0x03, 0xf7, 0x01, + 0xf6, 0x00, 0xea, 0xff, 0x84, 0xff, 0xf5, 0xfe, 0x2d, 0xfe, 0xd8, 0xfd, 0x1d, 0xfd, 0x73, 0xfc, + 0x01, 0xfd, 0x9f, 0xfd, 0x1f, 0xfd, 0xf2, 0xfd, 0x79, 0xfe, 0xe0, 0xfd, 0x62, 0xfe, 0x96, 0xff, + 0x8a, 0xfe, 0x9a, 0xfd, 0x2a, 0xfc, 0xb2, 0xfb, 0xf5, 0xfb, 0xdc, 0xfc, 0xfe, 0xfd, 0x05, 0xfe, + 0xac, 0xfd, 0xab, 0xfe, 0xed, 0xff, 0x58, 0x02, 0x36, 0x05, 0x33, 0x06, 0x10, 0x05, 0xd7, 0x04, + 0x26, 0x06, 0x88, 0x06, 0x8a, 0x06, 0xbb, 0x05, 0x9c, 0x03, 0xf0, 0x01, 0xe2, 0x00, 0x18, 0x01, + 0x64, 0x01, 0x5f, 0x01, 0x78, 0x00, 0x6c, 0xff, 0x38, 0x00, 0x08, 0x03, 0x57, 0x04, 0x4e, 0x04, + 0x25, 0x03, 0xf1, 0x02, 0xd5, 0x02, 0x16, 0x03, 0xa3, 0x02, 0x12, 0x00, 0xfc, 0xfc, 0xf6, 0xfa, + 0xef, 0xfa, 0x62, 0xfb, 0x8c, 0xfc, 0xf4, 0xfb, 0x03, 0xfb, 0xfa, 0xfb, 0x2d, 0x00, 0x24, 0x05, + 0x48, 0x08, 0x11, 0x09, 0x45, 0x08, 0x88, 0x07, 0x03, 0x09, 0xe6, 0x0a, 0xdb, 0x0a, 0xd5, 0x07, + 0x4c, 0x04, 0x73, 0x01, 0xe2, 0x00, 0x02, 0x02, 0x3f, 0x02, 0x9b, 0x00, 0x2d, 0xff, 0x60, 0xff, + 0x25, 0x01, 0xaf, 0x02, 0x6a, 0x03, 0x9f, 0x01, 0x01, 0xfe, 0x2f, 0xfc, 0x61, 0xfc, 0x4e, 0xfc, + 0x58, 0xfa, 0x26, 0xf8, 0x11, 0xf5, 0x82, 0xf2, 0xf8, 0xf1, 0x20, 0xf3, 0x87, 0xf4, 0x61, 0xf5, + 0x76, 0xf5, 0x44, 0xf7, 0xca, 0xfa, 0x69, 0xff, 0x01, 0x03, 0x0c, 0x04, 0x34, 0x04, 0xe0, 0x05, + 0x3f, 0x08, 0xe3, 0x0a, 0x4c, 0x0b, 0xfa, 0x09, 0xef, 0x07, 0x46, 0x07, 0x7c, 0x06, 0x07, 0x08, + 0xc5, 0x08, 0x03, 0x08, 0x5b, 0x06, 0x32, 0x06, 0x78, 0x06, 0x4a, 0x07, 0x64, 0x07, 0x05, 0x06, + 0x94, 0x02, 0x34, 0x00, 0xb8, 0xff, 0x50, 0xff, 0x40, 0xfc, 0x0b, 0xf9, 0xce, 0xf5, 0x46, 0xf3, + 0x9e, 0xf1, 0xfb, 0xf1, 0x86, 0xf2, 0x8d, 0xf2, 0x4c, 0xf2, 0xe1, 0xf3, 0x1a, 0xf6, 0x42, 0xf9, + 0x04, 0xfc, 0xa2, 0xfe, 0xe2, 0xfe, 0x2c, 0x00, 0x9b, 0x01, 0x35, 0x04, 0x41, 0x05, 0xd2, 0x05, + 0xfe, 0x04, 0x11, 0x04, 0x87, 0x03, 0x47, 0x04, 0x5f, 0x04, 0x33, 0x04, 0x7a, 0x03, 0xab, 0x02, + 0x00, 0x02, 0x55, 0x01, 0xed, 0xff, 0x5b, 0xff, 0xfa, 0xfd, 0x35, 0xfd, 0xa9, 0xfd, 0x8a, 0xfd, + 0x8e, 0xfb, 0x27, 0xfa, 0x77, 0xf8, 0xe4, 0xf6, 0x22, 0xf5, 0x95, 0xf4, 0xf4, 0xf4, 0x82, 0xf5, + 0x4a, 0xf6, 0x41, 0xf7, 0xa9, 0xf8, 0x87, 0xfa, 0x01, 0xfd, 0x25, 0xff, 0x9f, 0x00, 0x21, 0x03, + 0x5e, 0x05, 0x97, 0x06, 0xb8, 0x06, 0xe5, 0x06, 0xc4, 0x07, 0x68, 0x07, 0xbb, 0x06, 0xf2, 0x05, + 0x19, 0x05, 0x25, 0x04, 0x49, 0x03, 0x8c, 0x02, 0x05, 0x02, 0x54, 0x02, 0x22, 0x02, 0x7a, 0x01, + 0xa6, 0x01, 0x30, 0x02, 0xed, 0x02, 0x4d, 0x02, 0xaf, 0x00, 0x7c, 0xff, 0x03, 0xfe, 0xdf, 0xfc, + 0x56, 0xfc, 0x51, 0xfb, 0xab, 0xf9, 0xd2, 0xf8, 0xba, 0xf9, 0xfb, 0xfa, 0x9d, 0xfc, 0x4f, 0xfe, + 0x06, 0x01, 0x30, 0x03, 0xc4, 0x04, 0x57, 0x06, 0x38, 0x07, 0xbb, 0x07, 0xbb, 0x06, 0x4a, 0x05, + 0xb0, 0x03, 0x1a, 0x02, 0xe4, 0x00, 0x89, 0xff, 0x02, 0xfe, 0x17, 0xfd, 0x8e, 0xfc, 0xa4, 0xfc, + 0x50, 0xfe, 0x39, 0x00, 0x6d, 0x00, 0x8e, 0x00, 0x42, 0x01, 0xb8, 0x01, 0x6d, 0x02, 0x5e, 0x02, + 0x59, 0x01, 0x70, 0x00, 0x0c, 0x00, 0x54, 0xff, 0xfe, 0xfd, 0x97, 0xfd, 0x28, 0xfd, 0x68, 0xfd, + 0x3a, 0xfe, 0x8b, 0xff, 0x47, 0x01, 0x4b, 0x03, 0xf0, 0x05, 0x35, 0x07, 0x48, 0x08, 0x18, 0x0a, + 0x10, 0x0b, 0xe3, 0x09, 0x9e, 0x08, 0x56, 0x08, 0xdd, 0x07, 0x96, 0x06, 0x6a, 0x04, 0xcb, 0x01, + 0xbc, 0xff, 0x0f, 0x00, 0xe5, 0xfe, 0x2e, 0xfd, 0x77, 0xfd, 0x57, 0xfe, 0x27, 0xfe, 0x37, 0xfe, + 0x2c, 0xfe, 0x4d, 0xfe, 0x19, 0xfe, 0xe7, 0xfd, 0xfd, 0xfc, 0xd3, 0xfc, 0xea, 0xfd, 0xf3, 0xfd, + 0x29, 0xfe, 0xad, 0xfd, 0x62, 0xfc, 0xf4, 0xfd, 0xf2, 0xff, 0x08, 0x00, 0xe2, 0x00, 0x9b, 0x02, + 0xf9, 0x03, 0x8d, 0x05, 0xbb, 0x07, 0x8f, 0x08, 0x26, 0x09, 0x03, 0x0a, 0x77, 0x09, 0x4c, 0x09, + 0x80, 0x08, 0x1c, 0x07, 0xa7, 0x05, 0x25, 0x04, 0xbd, 0x01, 0x82, 0x00, 0xe1, 0xff, 0x71, 0xfe, + 0x71, 0xfd, 0x06, 0xfd, 0x34, 0xfb, 0x20, 0xfa, 0xe3, 0xf9, 0xe0, 0xf8, 0x60, 0xf8, 0x58, 0xf8, + 0x17, 0xf8, 0x7c, 0xf7, 0xac, 0xf7, 0x64, 0xf7, 0x53, 0xf6, 0xbc, 0xf5, 0x2a, 0xf5, 0x33, 0xf5, + 0xf0, 0xf5, 0xba, 0xf5, 0x38, 0xf7, 0x85, 0xf9, 0xbe, 0xfa, 0xc5, 0xfc, 0x26, 0xff, 0x10, 0x01, + 0x3f, 0x03, 0x5d, 0x04, 0xc4, 0x04, 0xfe, 0x05, 0xb4, 0x05, 0xf6, 0x05, 0x48, 0x07, 0x3d, 0x06, + 0x54, 0x04, 0x2d, 0x04, 0x18, 0x02, 0x45, 0x01, 0x60, 0x01, 0xda, 0xff, 0x24, 0xff, 0x67, 0xff, + 0x0b, 0xfe, 0xd3, 0xfe, 0xbf, 0x00, 0x3f, 0x00, 0xcd, 0xff, 0x7e, 0xff, 0xea, 0xfe, 0x0c, 0xfe, + 0x7a, 0xfc, 0xb8, 0xf9, 0x71, 0xf8, 0xdf, 0xf6, 0x79, 0xf7, 0xbd, 0xf8, 0x26, 0xf9, 0xd7, 0xfa, + 0x39, 0xfb, 0xe2, 0xfd, 0x42, 0x00, 0x68, 0x01, 0x53, 0x03, 0x1f, 0x05, 0x27, 0x06, 0xee, 0x06, + 0xda, 0x07, 0xdd, 0x07, 0x44, 0x08, 0x7b, 0x07, 0x4b, 0x05, 0xed, 0x02, 0x78, 0x02, 0xd6, 0x01, + 0xf1, 0x00, 0x10, 0x01, 0xc6, 0x01, 0x36, 0x01, 0x8c, 0x01, 0x8e, 0x02, 0x45, 0x01, 0xee, 0x00, + 0xa0, 0x01, 0x82, 0x00, 0x86, 0xfd, 0xf3, 0xfb, 0x92, 0xfa, 0x9a, 0xf7, 0x81, 0xf6, 0x2d, 0xf6, + 0xf9, 0xf5, 0x97, 0xf6, 0xd8, 0xf7, 0x4b, 0xf8, 0x58, 0xfa, 0x19, 0xfd, 0x99, 0xfe, 0x80, 0x00, + 0x1b, 0x04, 0x34, 0x05, 0xb1, 0x06, 0x14, 0x07, 0x3c, 0x09, 0x8e, 0x08, 0x79, 0x07, 0x8f, 0x07, + 0x79, 0x06, 0x48, 0x06, 0x71, 0x06, 0x13, 0x06, 0x29, 0x05, 0x31, 0x05, 0x7f, 0x06, 0x3d, 0x07, + 0x6f, 0x06, 0xd4, 0x05, 0x20, 0x05, 0xef, 0x04, 0x3f, 0x03, 0x9d, 0x00, 0x8f, 0xff, 0x64, 0xfe, + 0xe8, 0xfc, 0xf3, 0xfa, 0x20, 0xfb, 0xfa, 0xfb, 0x0d, 0xfc, 0x66, 0xfb, 0x89, 0xfb, 0xe0, 0xfc, + 0xb1, 0xfd, 0x88, 0xfe, 0x14, 0x01, 0x9c, 0x02, 0x60, 0x03, 0x69, 0x05, 0x0a, 0x06, 0xc2, 0x08, + 0x15, 0x07, 0x06, 0x07, 0xc2, 0x05, 0x4a, 0x05, 0x81, 0x05, 0xbd, 0x03, 0x2a, 0x02, 0x9e, 0x00, + 0x05, 0x01, 0x9d, 0xff, 0xee, 0xfd, 0x1f, 0xff, 0xb8, 0xfd, 0x76, 0xfb, 0x79, 0xfb, 0x64, 0xfa, + 0xaf, 0xf9, 0x28, 0xfa, 0xba, 0xf8, 0x16, 0xf8, 0xbc, 0xf8, 0xd5, 0xf8, 0x7d, 0xfa, 0xeb, 0xfa, + 0x98, 0xfa, 0x1a, 0xfb, 0x6a, 0xfc, 0xd8, 0xfc, 0x28, 0xfd, 0xf6, 0xff, 0x6c, 0x01, 0x8f, 0x04, + 0x99, 0x06, 0x8f, 0x09, 0x7a, 0x0b, 0x88, 0x0b, 0xb7, 0x0c, 0xcb, 0x09, 0xee, 0x08, 0xf5, 0x07, + 0xcc, 0x05, 0x59, 0x03, 0x17, 0x00, 0x6a, 0xfd, 0x3d, 0xfa, 0xdb, 0xf8, 0xc6, 0xf8, 0xd8, 0xf6, + 0x5f, 0xf7, 0x01, 0xf6, 0xad, 0xf3, 0xfd, 0xf3, 0x12, 0xf3, 0xf6, 0xf2, 0x85, 0xf3, 0x00, 0xf5, + 0xd3, 0xf5, 0x12, 0xf5, 0xe6, 0xf5, 0xa3, 0xf5, 0x3c, 0xf7, 0xed, 0xf8, 0x83, 0xf8, 0x2b, 0xfa, + 0xc6, 0xfb, 0x8c, 0xfe, 0x9f, 0x02, 0xa3, 0x05, 0xda, 0x0a, 0xcb, 0x0a, 0xe2, 0x0c, 0x6d, 0x0e, + 0x86, 0x0d, 0x27, 0x0f, 0x7b, 0x0d, 0xfe, 0x09, 0x61, 0x06, 0x26, 0x03, 0x5d, 0x02, 0xe8, 0xfe, + 0x1a, 0xfc, 0x4d, 0xfa, 0x40, 0xf9, 0x5d, 0xfb, 0xa5, 0xf9, 0x8f, 0xf7, 0x2e, 0xf6, 0x9d, 0xf5, + 0x4e, 0xf5, 0xb0, 0xf5, 0x3b, 0xf6, 0x25, 0xf7, 0x6a, 0xf7, 0xd4, 0xf5, 0x50, 0xf6, 0xe1, 0xf5, + 0x93, 0xf6, 0xb0, 0xf8, 0x24, 0xf9, 0x71, 0xfc, 0x7c, 0xfe, 0x94, 0x01, 0xf7, 0x06, 0x85, 0x08, + 0x6f, 0x0b, 0x83, 0x0d, 0x14, 0x0c, 0xba, 0x0d, 0xcd, 0x0c, 0x08, 0x0c, 0x1e, 0x0a, 0x99, 0x07, + 0x61, 0x07, 0xf5, 0x04, 0xb6, 0x01, 0x71, 0x01, 0x6f, 0xfe, 0xfe, 0xfd, 0x07, 0xfe, 0xfa, 0xfc, + 0x61, 0xfd, 0xd5, 0xfb, 0x4f, 0xfa, 0x3a, 0xfa, 0x8a, 0xf9, 0x7c, 0xfa, 0xdb, 0xfb, 0x44, 0xf9, + 0x7b, 0xf9, 0xfc, 0xf7, 0x84, 0xf8, 0xf8, 0xf9, 0x5d, 0xf6, 0x3a, 0xf9, 0x21, 0xfa, 0xd4, 0xfa, + 0xfa, 0xff, 0x1a, 0x02, 0x3d, 0x05, 0xa9, 0x08, 0x3d, 0x09, 0x12, 0x0a, 0x8f, 0x0b, 0x98, 0x0b, + 0xe3, 0x0c, 0x15, 0x0a, 0x14, 0x0a, 0xe5, 0x08, 0x6e, 0x06, 0x77, 0x06, 0xbd, 0x03, 0xc9, 0x02, + 0x38, 0x03, 0xa9, 0x01, 0xa7, 0x01, 0x7d, 0xff, 0x1f, 0xff, 0xd4, 0xfe, 0x05, 0xfd, 0x41, 0xfc, + 0x6d, 0xfc, 0x7c, 0xfd, 0x3a, 0xfc, 0x99, 0xfa, 0x96, 0xfa, 0xfc, 0xf9, 0x3a, 0xf9, 0xfa, 0xf9, + 0xbd, 0xf7, 0xeb, 0xf6, 0x3d, 0xf9, 0x2e, 0xfa, 0xf0, 0xfa, 0x0e, 0xfd, 0x1b, 0xfe, 0x3f, 0x00, + 0xf9, 0x02, 0xd4, 0x05, 0xa9, 0x08, 0x7d, 0x08, 0x70, 0x09, 0xba, 0x08, 0x05, 0x08, 0x17, 0x08, + 0x76, 0x06, 0xda, 0x06, 0x20, 0x06, 0xe1, 0x05, 0xb8, 0x04, 0x0f, 0x04, 0xb4, 0x03, 0x80, 0x02, + 0x86, 0x02, 0x86, 0x03, 0xca, 0x05, 0x5d, 0x02, 0xbc, 0x01, 0xfe, 0x03, 0x28, 0x02, 0xa8, 0xfe, + 0x3c, 0x01, 0xf2, 0xff, 0xae, 0xfd, 0xff, 0xfd, 0xb9, 0xfd, 0x01, 0xfb, 0x50, 0xfb, 0x2d, 0xfe, + 0xe9, 0xfe, 0x2a, 0xff, 0xd8, 0x01, 0x31, 0x04, 0xad, 0x05, 0x28, 0x04, 0xe8, 0x04, 0x1a, 0x04, + 0x4a, 0x02, 0x30, 0x01, 0xa1, 0x00, 0x85, 0x00, 0x96, 0xff, 0xd2, 0xfd, 0xdd, 0xfd, 0x17, 0xfb, + 0xe6, 0xf7, 0xa4, 0xf8, 0x54, 0xf9, 0xfa, 0xf7, 0x99, 0xfb, 0x0c, 0xfc, 0x75, 0xfa, 0x7b, 0xfd, + 0xf2, 0xfd, 0x02, 0xfd, 0x8d, 0xfe, 0xa7, 0xfd, 0x00, 0xfc, 0x68, 0xfb, 0x21, 0xfa, 0x8e, 0xf9, + 0xe7, 0xf9, 0x17, 0xfb, 0xf2, 0xfa, 0x1b, 0xfc, 0x5c, 0xfd, 0xa6, 0xfe, 0x11, 0x03, 0x9d, 0x04, + 0x7f, 0x03, 0xa1, 0x00, 0x8a, 0x02, 0x4f, 0x05, 0x99, 0x04, 0xb0, 0x03, 0x76, 0x04, 0xbd, 0x04, + 0x98, 0x05, 0x3f, 0x02, 0xd8, 0x00, 0xda, 0x02, 0xfc, 0x01, 0x52, 0x04, 0x6a, 0x07, 0x18, 0x05, + 0xbb, 0x06, 0x9c, 0x0a, 0x50, 0x08, 0x1e, 0x08, 0x78, 0x08, 0x8c, 0x06, 0x9f, 0x06, 0x4a, 0x04, + 0xcd, 0x05, 0x3f, 0x04, 0xb5, 0x00, 0x5e, 0x02, 0xb1, 0xfe, 0x0d, 0xfe, 0x0b, 0x02, 0xc2, 0x01, + 0xcc, 0x02, 0x5a, 0x04, 0xbe, 0x06, 0x53, 0x06, 0x98, 0x06, 0x5a, 0x0a, 0x09, 0x09, 0xb3, 0x08, + 0xf9, 0x07, 0x4b, 0x06, 0xb4, 0x03, 0x14, 0x02, 0xb2, 0x02, 0x43, 0xff, 0x7a, 0xfd, 0x16, 0x00, + 0x7b, 0xff, 0xe7, 0xfd, 0x8c, 0xff, 0x4f, 0xff, 0x26, 0xfb, 0x95, 0xfd, 0x61, 0xfb, 0xf6, 0xfa, + 0xe1, 0xfc, 0xe6, 0xf9, 0x33, 0xfb, 0x6e, 0xf9, 0xba, 0xf7, 0x6e, 0xf6, 0x8e, 0xf6, 0x89, 0xf6, + 0xc3, 0xf2, 0x37, 0xf4, 0xf2, 0xf5, 0xd8, 0xf7, 0x66, 0xf7, 0x75, 0xf6, 0xaa, 0xf9, 0x6c, 0xfa, + 0x36, 0xfe, 0x54, 0x00, 0xa8, 0x00, 0x6f, 0x01, 0x1f, 0x01, 0x5f, 0x01, 0xeb, 0x01, 0x0c, 0x01, + 0x2b, 0xff, 0x71, 0xff, 0x52, 0xfd, 0xa7, 0xfd, 0x6f, 0x00, 0x02, 0xfc, 0xa2, 0xfa, 0x59, 0xfa, + 0x81, 0xf9, 0xe8, 0xf7, 0xef, 0xf6, 0x97, 0xf9, 0x0c, 0xf8, 0x81, 0xf6, 0x2c, 0xf7, 0xac, 0xf5, + 0x55, 0xf4, 0xf2, 0xf2, 0x51, 0xf4, 0xe2, 0xf3, 0xd0, 0xf1, 0xd8, 0xf1, 0xbe, 0xf1, 0x48, 0xf2, + 0x7a, 0xf3, 0x22, 0xf6, 0xeb, 0xf6, 0x13, 0xf9, 0x00, 0xfe, 0x83, 0x03, 0xb4, 0x04, 0x02, 0x05, + 0x3e, 0x0b, 0x9a, 0x0b, 0xdf, 0x0a, 0xa7, 0x0d, 0x9a, 0x09, 0xc2, 0x09, 0xf4, 0x0c, 0x5f, 0x0c, + 0x89, 0x0c, 0x6a, 0x0d, 0x1b, 0x0c, 0xd6, 0x0b, 0x3b, 0x0e, 0x55, 0x0f, 0x8e, 0x0e, 0x4e, 0x0c, + 0x4f, 0x0f, 0xf9, 0x0e, 0x1a, 0x0f, 0xc3, 0x0e, 0x94, 0x0c, 0x51, 0x0c, 0x23, 0x0e, 0xd5, 0x0e, + 0x79, 0x08, 0xd5, 0x0b, 0xcd, 0x06, 0x73, 0x01, 0xfa, 0x01, 0x11, 0xff, 0xe8, 0xff, 0x5d, 0x00, + 0xe5, 0x00, 0xb3, 0x01, 0x0b, 0xff, 0x24, 0xff, 0xe1, 0x01, 0xaa, 0x00, 0x06, 0xfe, 0xc6, 0xfd, + 0x67, 0xf9, 0x43, 0xf7, 0x6e, 0xf2, 0x1e, 0xed, 0xa0, 0xee, 0x0c, 0xee, 0x45, 0xec, 0xfd, 0xeb, + 0x52, 0xec, 0xe9, 0xec, 0xa5, 0xf1, 0x36, 0xf1, 0x92, 0xf0, 0xd1, 0xf2, 0xdd, 0xf5, 0x2e, 0xf7, + 0xb1, 0xf3, 0x66, 0xf3, 0xc6, 0xf3, 0x5c, 0xf2, 0x80, 0xf4, 0x25, 0xf5, 0x39, 0xf6, 0x64, 0xf6, + 0xf6, 0xfa, 0xd7, 0xfc, 0x4b, 0xfd, 0x36, 0xfe, 0x0a, 0xff, 0x4a, 0x01, 0xee, 0x01, 0xfc, 0x02, + 0x07, 0x06, 0x46, 0x09, 0x7a, 0x0a, 0x83, 0x0c, 0x44, 0x0d, 0xde, 0x0f, 0xab, 0x11, 0xbe, 0x10, + 0x8f, 0x11, 0x86, 0x11, 0xea, 0x11, 0x32, 0x10, 0x77, 0x10, 0xbc, 0x10, 0x3c, 0x10, 0xdf, 0x11, + 0xac, 0x11, 0xc0, 0x12, 0x31, 0x12, 0x0d, 0x10, 0xf2, 0x0e, 0xd7, 0x0c, 0x1f, 0x0d, 0x47, 0x09, + 0x14, 0x04, 0xde, 0x02, 0xae, 0x00, 0x97, 0xfc, 0x84, 0xfb, 0xdc, 0xfd, 0xfa, 0xfe, 0xb4, 0xfd, + 0x58, 0xfb, 0x72, 0xf8, 0xad, 0xf7, 0x7d, 0xf7, 0xa9, 0xf7, 0x96, 0xf8, 0xd0, 0xf8, 0x69, 0xf6, + 0x6d, 0xf4, 0x95, 0xf1, 0x33, 0xf0, 0xa9, 0xf0, 0xf0, 0xf0, 0x39, 0xf3, 0x94, 0xf4, 0x23, 0xf5, + 0x24, 0xf7, 0x40, 0xf8, 0xed, 0xf9, 0xb0, 0xfb, 0x3e, 0xfe, 0xe7, 0x00, 0x81, 0x06, 0xb1, 0x08, + 0x35, 0x08, 0xd0, 0x09, 0xb1, 0x09, 0x36, 0x0c, 0xbb, 0x0b, 0x3a, 0x0b, 0x20, 0x0c, 0x95, 0x0a, + 0x6f, 0x09, 0x62, 0x09, 0x1d, 0x09, 0x12, 0x08, 0x96, 0x06, 0x53, 0x06, 0x34, 0x05, 0x9a, 0x04, + 0x52, 0x05, 0x70, 0x03, 0x39, 0x00, 0x43, 0xfe, 0x2a, 0xfb, 0xa8, 0xf8, 0x10, 0xf5, 0xb1, 0xf3, + 0x02, 0xf2, 0x70, 0xf0, 0x44, 0xf1, 0x86, 0xf1, 0x64, 0xf1, 0x26, 0xf0, 0x0c, 0xf2, 0xaf, 0xf2, + 0x87, 0xf2, 0xfc, 0xf2, 0xca, 0xf4, 0xf4, 0xf7, 0xd6, 0xf7, 0x8f, 0xf7, 0x7d, 0xf9, 0xe5, 0xf8, + 0x8f, 0xf5, 0x13, 0xf7, 0x67, 0xfa, 0x64, 0xfb, 0xef, 0xfa, 0xff, 0xfb, 0x11, 0xfd, 0x91, 0xfb, + 0xdc, 0xfb, 0xb8, 0xfd, 0x34, 0x00, 0xd2, 0x01, 0x58, 0x03, 0x49, 0x06, 0xa9, 0x09, 0x20, 0x0a, + 0xe3, 0x0a, 0x8f, 0x0f, 0xe8, 0x0d, 0x43, 0x0e, 0x25, 0x0f, 0xca, 0x0d, 0x3c, 0x0f, 0x74, 0x0c, + 0x80, 0x09, 0xb6, 0x0a, 0x22, 0x0a, 0x6e, 0x0b, 0x67, 0x0c, 0xdc, 0x09, 0x36, 0x0b, 0x61, 0x09, + 0x97, 0x04, 0x9f, 0x05, 0x01, 0x03, 0x52, 0x02, 0x6f, 0x01, 0xae, 0xfd, 0x71, 0xfb, 0x09, 0xf8, + 0x3e, 0xf6, 0x04, 0xf9, 0xd5, 0xf9, 0xaa, 0xf7, 0x81, 0xf7, 0x4a, 0xf7, 0x73, 0xf6, 0x09, 0xf6, + 0x92, 0xf6, 0xe1, 0xf8, 0x8c, 0xfa, 0x3d, 0xfb, 0x5b, 0xfe, 0xa6, 0xfa, 0x36, 0xf7, 0x47, 0xf8, + 0xe2, 0xf8, 0x4c, 0xfa, 0x66, 0xfb, 0x0b, 0xfe, 0xcb, 0xff, 0x51, 0xfe, 0x04, 0xff, 0x3f, 0x01, + 0x89, 0xfd, 0xac, 0x01, 0x76, 0x06, 0x7a, 0x07, 0x62, 0x09, 0x5e, 0x08, 0x23, 0x0c, 0xfe, 0x0d, + 0x7a, 0x0c, 0xbf, 0x0c, 0x44, 0x0d, 0xc7, 0x0f, 0xe9, 0x0f, 0x88, 0x0e, 0x60, 0x0d, 0x7d, 0x10, + 0x57, 0x10, 0x4f, 0x12, 0x9a, 0x12, 0x8e, 0x10, 0xc7, 0x11, 0xea, 0x11, 0x35, 0x12, 0xf7, 0x10, + 0xb0, 0x0e, 0xa2, 0x0b, 0x40, 0x07, 0x4b, 0x04, 0x7c, 0x03, 0xe6, 0xfc, 0x1b, 0xf9, 0x6d, 0xfb, + 0x4d, 0xf7, 0x64, 0xf9, 0xe4, 0xf7, 0xde, 0xf6, 0x75, 0xf9, 0xf7, 0xf9, 0xf3, 0xfb, 0xd5, 0xfa, + 0xd9, 0xfa, 0x9a, 0xfa, 0x60, 0xfa, 0x8c, 0xfc, 0x54, 0xf9, 0xc0, 0xf9, 0x63, 0xf9, 0x68, 0xfa, + 0xc1, 0xfa, 0x0e, 0xfc, 0xc4, 0xfc, 0xb0, 0xf9, 0xc0, 0xf9, 0x7c, 0xfa, 0xe1, 0xf8, 0x50, 0xf8, + 0x3e, 0xf8, 0x07, 0xfb, 0x02, 0xf9, 0x0a, 0xfc, 0xab, 0xfe, 0x5b, 0xfd, 0x68, 0xff, 0x72, 0x02, + 0x62, 0x04, 0x6f, 0x03, 0xae, 0x03, 0x48, 0x01, 0x89, 0x02, 0x7a, 0x04, 0x92, 0x05, 0x6e, 0x08, + 0x15, 0x06, 0xe0, 0x07, 0xc6, 0x06, 0x41, 0x07, 0x27, 0x0b, 0xf1, 0x06, 0x7f, 0x05, 0xaf, 0x04, + 0x24, 0xff, 0x0a, 0xfe, 0x6f, 0xfa, 0xd7, 0xf4, 0xee, 0xef, 0x7b, 0xec, 0x15, 0xed, 0x77, 0xed, + 0xaa, 0xe9, 0xc1, 0xe5, 0xf1, 0xe4, 0x56, 0xe4, 0x5d, 0xe3, 0x0f, 0xe5, 0x46, 0xe4, 0x7a, 0xe5, + 0xee, 0xe5, 0x41, 0xe6, 0x4f, 0xe6, 0xf8, 0xe5, 0x84, 0xe9, 0x2a, 0xec, 0xb2, 0xf0, 0x31, 0xf6, + 0xde, 0xf4, 0x6b, 0xf6, 0xad, 0xf9, 0x7c, 0xfb, 0x24, 0xfd, 0xbe, 0xff, 0x31, 0x04, 0xd0, 0x05, + 0x2f, 0x09, 0x49, 0x0b, 0x6c, 0x0c, 0x3e, 0x0c, 0x79, 0x0c, 0xcf, 0x0c, 0x7c, 0x0f, 0x39, 0x13, + 0x91, 0x0d, 0x6b, 0x0c, 0x3d, 0x0b, 0xb1, 0x07, 0xce, 0x0b, 0xa4, 0x08, 0x51, 0x0a, 0xbf, 0x0b, + 0x31, 0x0c, 0x60, 0x10, 0x85, 0x0c, 0x92, 0x07, 0x52, 0x05, 0x67, 0x05, 0x13, 0x05, 0x53, 0x03, + 0x26, 0x00, 0x67, 0xfc, 0xea, 0xf9, 0x42, 0xf7, 0x22, 0xf8, 0x42, 0xf8, 0xcc, 0xf6, 0xca, 0xf8, + 0x9d, 0xf8, 0x7e, 0xf7, 0xa2, 0xf8, 0x0e, 0xfa, 0x7a, 0xfa, 0xf2, 0xf7, 0x6d, 0xf9, 0x0b, 0xfd, + 0x54, 0xfc, 0x23, 0xfb, 0x09, 0xfa, 0x17, 0xf8, 0x15, 0xf9, 0x78, 0xfc, 0x08, 0xfe, 0xd5, 0xfe, + 0xf2, 0xfe, 0x8e, 0xfe, 0x44, 0x00, 0x6e, 0x00, 0x8e, 0x02, 0x29, 0x05, 0x27, 0x07, 0x14, 0x0b, + 0x74, 0x0c, 0x10, 0x0c, 0xad, 0x0c, 0xf4, 0x0c, 0xed, 0x0e, 0x3e, 0x0d, 0xb7, 0x0e, 0x1f, 0x11, + 0xe9, 0x0e, 0xbc, 0x10, 0x1c, 0x0f, 0x1d, 0x0c, 0x08, 0x0e, 0x30, 0x0e, 0x98, 0x0c, 0x28, 0x13, + 0x36, 0x11, 0x46, 0x0c, 0x8b, 0x0c, 0x05, 0x09, 0xf1, 0x03, 0x3f, 0x02, 0x6c, 0x01, 0x0c, 0xfe, + 0x81, 0xf8, 0xc1, 0xfc, 0x26, 0xfb, 0x12, 0xfa, 0xc3, 0xf8, 0x25, 0xf7, 0x1e, 0xf8, 0xf5, 0xf7, + 0xb0, 0xfa, 0x11, 0xf9, 0x0d, 0xf9, 0x4d, 0xfa, 0x9f, 0xfa, 0xe3, 0xfd, 0xe1, 0xfc, 0x2a, 0xff, + 0x28, 0x01, 0x01, 0x02, 0xce, 0x03, 0x40, 0x06, 0x61, 0x0a, 0x6a, 0x0b, 0xef, 0x0b, 0x67, 0x0e, + 0xeb, 0x10, 0x32, 0x10, 0x22, 0x11, 0xaf, 0x10, 0xe1, 0x0f, 0x80, 0x10, 0xf3, 0x10, 0xfd, 0x12, + 0x1f, 0x12, 0xca, 0x10, 0xa8, 0x0e, 0x4f, 0x0e, 0x67, 0x0f, 0xc8, 0x0c, 0xe0, 0x0b, 0x9d, 0x0c, + 0x32, 0x0c, 0xe3, 0x0d, 0xae, 0x0d, 0x90, 0x0a, 0x97, 0x0c, 0xcd, 0x0b, 0x75, 0x0b, 0xa7, 0x0c, + 0x6a, 0x0b, 0x43, 0x0b, 0x54, 0x07, 0x03, 0x06, 0x2f, 0x03, 0x94, 0xfd, 0xec, 0xf8, 0x30, 0xf5, + 0x16, 0xf9, 0x16, 0xf3, 0x07, 0xf0, 0xd8, 0xf0, 0x9f, 0xeb, 0x74, 0xe6, 0x9c, 0xe4, 0xa9, 0xe3, + 0xa0, 0xdf, 0x9c, 0xde, 0x4f, 0xe2, 0xf4, 0xde, 0x67, 0xdb, 0x1c, 0xd7, 0xde, 0xd4, 0x7b, 0xd6, + 0x05, 0xda, 0x40, 0xda, 0x29, 0xdb, 0x94, 0xdf, 0xf0, 0xe0, 0x68, 0xe2, 0x1c, 0xe4, 0x36, 0xe8, + 0xb5, 0xeb, 0xc3, 0xee, 0x62, 0xf2, 0x9d, 0xf4, 0x11, 0xfa, 0x6e, 0xfd, 0xf8, 0xfd, 0x86, 0x00, + 0x6b, 0x03, 0xcd, 0x08, 0x52, 0x08, 0x69, 0x08, 0x87, 0x08, 0x36, 0x04, 0x04, 0x05, 0xff, 0x05, + 0x86, 0x06, 0xb2, 0x07, 0x21, 0x06, 0x0f, 0x08, 0x0e, 0x09, 0xa5, 0x06, 0x65, 0x07, 0x68, 0x06, + 0x32, 0x05, 0x2d, 0x07, 0xac, 0x05, 0xce, 0x02, 0x6e, 0xff, 0x28, 0xfd, 0x59, 0xfa, 0x08, 0xf9, + 0x1f, 0xfc, 0x0e, 0xfc, 0x15, 0xfc, 0x70, 0xfb, 0x01, 0xfa, 0x75, 0xf9, 0x5d, 0xf8, 0x77, 0xf5, + 0xd4, 0xfa, 0x3d, 0xfb, 0xf8, 0xf5, 0x14, 0xf7, 0x6c, 0xf5, 0x86, 0xf2, 0x13, 0xf3, 0x7f, 0xf5, + 0xb8, 0xf6, 0x5b, 0xf6, 0x7f, 0xfc, 0xfc, 0xfd, 0xb9, 0xff, 0xbb, 0xfd, 0xf7, 0xfc, 0xd9, 0xfe, + 0x02, 0x00, 0xe0, 0x07, 0xc2, 0x05, 0x60, 0x06, 0xec, 0x0a, 0x03, 0x08, 0xb6, 0x0b, 0xad, 0x0e, + 0xe9, 0x0e, 0x4e, 0x12, 0x1f, 0x13, 0x5f, 0x12, 0xdf, 0x12, 0xea, 0x12, 0x23, 0x13, 0x8c, 0x11, + 0x1c, 0x13, 0x2a, 0x17, 0x60, 0x15, 0xcf, 0x15, 0x89, 0x15, 0x32, 0x10, 0x53, 0x0e, 0x5b, 0x0b, + 0xf0, 0x09, 0x5d, 0x08, 0x38, 0x05, 0xa8, 0x01, 0xc9, 0xff, 0x09, 0xff, 0x72, 0xfe, 0x91, 0xfe, + 0xe4, 0xfd, 0xf4, 0xfe, 0xbb, 0x01, 0xc7, 0x00, 0xbd, 0xff, 0x86, 0xff, 0xa9, 0xfe, 0x2d, 0xfe, + 0xba, 0xff, 0xc1, 0x01, 0xe2, 0x00, 0x70, 0x00, 0x6b, 0x03, 0x85, 0x02, 0x61, 0x03, 0x17, 0x04, + 0x97, 0x01, 0x27, 0x0b, 0xee, 0x08, 0xbb, 0x05, 0x0e, 0x0a, 0x7c, 0x07, 0x34, 0x07, 0x4f, 0x0a, + 0xc9, 0x09, 0x58, 0x0a, 0x3d, 0x0a, 0x1f, 0x0e, 0xbb, 0x0f, 0xbe, 0x0d, 0xd8, 0x0b, 0x16, 0x0a, + 0x81, 0x0a, 0x7d, 0x0e, 0xf3, 0x0b, 0xe6, 0x09, 0x1f, 0x0c, 0xec, 0x0a, 0xc3, 0x0b, 0x54, 0x0d, + 0x79, 0x0e, 0xed, 0x10, 0x3b, 0x10, 0xc4, 0x0f, 0x7f, 0x0c, 0x97, 0x0c, 0xdb, 0x0b, 0xbd, 0x08, + 0xb6, 0x06, 0x7a, 0x04, 0x7b, 0x04, 0x04, 0x02, 0x2f, 0x02, 0xa8, 0xfe, 0x42, 0xf8, 0x50, 0xf6, + 0x71, 0xf3, 0x93, 0xf2, 0x3a, 0xf5, 0x05, 0xf1, 0xcc, 0xf1, 0x2a, 0xf3, 0xb8, 0xee, 0xa4, 0xeb, + 0x1e, 0xe9, 0xa5, 0xe8, 0x5c, 0xee, 0xf6, 0xee, 0x23, 0xf4, 0xee, 0xf3, 0x32, 0xf4, 0x0b, 0xf8, + 0xcc, 0xf3, 0x44, 0xf5, 0xdf, 0xf6, 0x23, 0xf5, 0x17, 0xfd, 0x7d, 0xfb, 0x7d, 0xfd, 0x0e, 0x03, + 0xcf, 0xfb, 0x4a, 0x05, 0xb2, 0x03, 0x03, 0xff, 0x68, 0xfe, 0xd5, 0xf7, 0x33, 0xfa, 0xbc, 0xfa, + 0x9f, 0xfd, 0x3e, 0xfc, 0xf7, 0xf2, 0xc8, 0xf7, 0xda, 0xf8, 0x51, 0xf3, 0x3d, 0xf0, 0xc2, 0xe8, + 0x1a, 0xea, 0x4c, 0xec, 0xe6, 0xee, 0x80, 0xed, 0x95, 0xe8, 0x70, 0xeb, 0x10, 0xe5, 0x85, 0xe3, + 0xb1, 0xe7, 0x16, 0xe8, 0xb5, 0xef, 0xd1, 0xf1, 0x4b, 0xf7, 0x56, 0xf9, 0x28, 0xf9, 0x98, 0xfc, + 0xba, 0xfb, 0x8e, 0xff, 0xf2, 0x03, 0x4a, 0x03, 0xa8, 0x09, 0xe6, 0x06, 0x0e, 0x0d, 0x25, 0x12, + 0xac, 0x0d, 0x6f, 0x11, 0x39, 0x11, 0x12, 0x13, 0xde, 0x19, 0xc8, 0x12, 0xc4, 0x11, 0xe3, 0x0c, + 0x13, 0x09, 0x7e, 0x0d, 0xc7, 0x06, 0x68, 0x08, 0x91, 0x07, 0x1d, 0x04, 0xb1, 0x03, 0xa5, 0x00, + 0xbb, 0x00, 0xfc, 0x00, 0xcd, 0x04, 0x29, 0x05, 0xf9, 0x04, 0xbe, 0x04, 0x42, 0xff, 0xd3, 0xf9, + 0x12, 0xf3, 0x76, 0xf8, 0xd4, 0xfe, 0x43, 0xf7, 0xe6, 0xfa, 0xd4, 0xfb, 0x6c, 0xfb, 0xf8, 0x02, + 0xd2, 0x01, 0xae, 0xfc, 0x05, 0xfc, 0x4a, 0xf8, 0xac, 0xff, 0x4a, 0xf8, 0x6f, 0xef, 0x9b, 0xeb, + 0xd5, 0xe5, 0xaf, 0xe9, 0xf4, 0xe9, 0x9f, 0xe5, 0xf5, 0xe2, 0xa4, 0xe0, 0x11, 0xde, 0x9f, 0xdc, + 0x68, 0xdf, 0x08, 0xe2, 0xb6, 0xe7, 0xb3, 0xe9, 0xdc, 0xeb, 0x17, 0xf1, 0x6a, 0xf0, 0x46, 0xf2, + 0x4b, 0xf4, 0xe1, 0xf7, 0xbb, 0x01, 0x6e, 0x06, 0x62, 0x0d, 0x08, 0x12, 0xb0, 0x13, 0xe1, 0x18, + 0xec, 0x1b, 0xb1, 0x1d, 0x3b, 0x22, 0x02, 0x22, 0x35, 0x27, 0x35, 0x29, 0x96, 0x25, 0x32, 0x24, + 0x86, 0x23, 0x9f, 0x26, 0x35, 0x24, 0xea, 0x23, 0x9f, 0x22, 0x34, 0x1e, 0xec, 0x1d, 0xdb, 0x17, + 0xa7, 0x17, 0xec, 0x16, 0x5e, 0x19, 0xb8, 0x1e, 0x45, 0x19, 0x3f, 0x1e, 0x21, 0x1c, 0xaa, 0x10, + 0x44, 0x0d, 0x5b, 0x0c, 0xc4, 0x10, 0xd5, 0x0a, 0x5b, 0x07, 0xf1, 0x0d, 0x61, 0x09, 0x7d, 0x11, + 0x44, 0x16, 0xed, 0x13, 0xb6, 0x11, 0xee, 0x0b, 0xc4, 0x10, 0x4b, 0x10, 0x6e, 0x0b, 0xe7, 0x05, + 0x5e, 0xfb, 0x98, 0xfb, 0x9f, 0xf7, 0x18, 0xf3, 0xe1, 0xef, 0x07, 0xe6, 0xaf, 0xe4, 0x58, 0xdf, + 0x77, 0xde, 0xee, 0xe3, 0xc2, 0xe5, 0xe3, 0xec, 0xd6, 0xeb, 0x7b, 0xf0, 0xd6, 0xf3, 0xcb, 0xef, + 0x96, 0xf1, 0xe3, 0xee, 0x5f, 0xf4, 0xcc, 0xfa, 0x57, 0xfa, 0xfc, 0x03, 0x92, 0x06, 0x20, 0x0a, + 0x15, 0x0f, 0x71, 0x0e, 0x2b, 0x10, 0x09, 0x0c, 0xc0, 0x0b, 0x66, 0x10, 0x51, 0x08, 0x35, 0x07, + 0x54, 0x03, 0xc1, 0x00, 0x95, 0x01, 0x8d, 0xfb, 0x3c, 0xfc, 0xd2, 0xf4, 0x89, 0xf1, 0x77, 0xec, + 0xf9, 0xe3, 0xb9, 0xe0, 0x30, 0xdf, 0x82, 0xe5, 0x67, 0xe2, 0xa5, 0xe5, 0x25, 0xec, 0x52, 0xe3, + 0x0d, 0xe1, 0x42, 0xe2, 0x37, 0xe3, 0xa8, 0xe9, 0x4e, 0xeb, 0x8a, 0xf1, 0x5f, 0xf6, 0x91, 0xfb, + 0x4d, 0x05, 0x84, 0x08, 0x92, 0x06, 0xfe, 0x05, 0x87, 0x06, 0x4e, 0x0e, 0x1d, 0x0e, 0x0c, 0x0b, + 0x29, 0x05, 0x4a, 0x03, 0x23, 0x05, 0xa7, 0x02, 0x32, 0x01, 0x60, 0xfb, 0x28, 0xf9, 0xc6, 0xf5, + 0xf5, 0xef, 0x06, 0xf2, 0xef, 0xf1, 0xb1, 0xf8, 0x80, 0xf8, 0xf5, 0xf7, 0x62, 0xfc, 0x3a, 0xf9, + 0x5a, 0xf7, 0xde, 0xf3, 0x0a, 0xf2, 0xc4, 0xf8, 0xd9, 0xfa, 0xad, 0x02, 0x59, 0x0a, 0xd7, 0x0b, + 0xa1, 0x0e, 0x64, 0x14, 0x08, 0x16, 0x38, 0x14, 0xdf, 0x10, 0xfd, 0x13, 0x4d, 0x10, 0x00, 0x0d, + 0x09, 0x06, 0x59, 0x00, 0xb8, 0x00, 0x5e, 0xfd, 0xf6, 0xfc, 0xbc, 0xf7, 0x54, 0xf4, 0xb6, 0xf2, + 0x6c, 0xe6, 0x19, 0xe2, 0x7a, 0xdf, 0x08, 0xe4, 0xbf, 0xe4, 0x6e, 0xe1, 0xb7, 0xe7, 0x62, 0xdf, + 0xe3, 0xd7, 0xd7, 0xda, 0x02, 0xd7, 0x3e, 0xdf, 0x20, 0xe3, 0x76, 0xe8, 0x90, 0xf0, 0x5b, 0xf5, + 0xb7, 0xfd, 0xeb, 0x03, 0x87, 0x07, 0x1f, 0x0a, 0xf6, 0x09, 0x17, 0x12, 0xa1, 0x17, 0x69, 0x18, + 0x57, 0x17, 0xaf, 0x14, 0x38, 0x18, 0xd7, 0x17, 0x87, 0x1a, 0xbf, 0x19, 0xe5, 0x11, 0xc6, 0x12, + 0x8f, 0x09, 0xcc, 0x07, 0xd4, 0x0a, 0x89, 0x0c, 0xd7, 0x12, 0xcd, 0x10, 0xc0, 0x13, 0x8e, 0x15, + 0x24, 0x11, 0x97, 0x10, 0x9f, 0x0a, 0x36, 0x0d, 0x35, 0x0f, 0x97, 0x0e, 0xf4, 0x13, 0x92, 0x13, + 0x4d, 0x12, 0x6b, 0x17, 0x89, 0x18, 0x7f, 0x1a, 0x12, 0x1a, 0xc1, 0x18, 0x02, 0x1a, 0xd6, 0x16, + 0x6a, 0x15, 0x11, 0x10, 0x1b, 0x0e, 0x8a, 0x0c, 0x65, 0x09, 0x69, 0x08, 0x39, 0x00, 0xed, 0x00, + 0x6b, 0xf9, 0x98, 0xf1, 0xb3, 0xf3, 0x7b, 0xf2, 0xcb, 0xf8, 0xb4, 0xfa, 0x24, 0xfd, 0xdd, 0xfd, + 0x2d, 0xf7, 0x51, 0xf9, 0x51, 0xf5, 0x07, 0xf6, 0x75, 0xfb, 0x5c, 0xfd, 0xc9, 0x01, 0xb5, 0x06, + 0x35, 0x0b, 0xc1, 0x11, 0xf1, 0x16, 0x01, 0x17, 0x8e, 0x14, 0xe3, 0x13, 0xb1, 0x16, 0x3d, 0x13, + 0xb6, 0x10, 0x78, 0x0b, 0xeb, 0x07, 0x21, 0x07, 0x3a, 0x05, 0x2f, 0x03, 0xc2, 0xf9, 0xca, 0xf6, + 0x7f, 0xf0, 0x80, 0xea, 0x3e, 0xe9, 0x84, 0xe4, 0xaa, 0xe6, 0xed, 0xe4, 0x39, 0xe4, 0xbd, 0xe6, + 0x14, 0xe3, 0x16, 0xe5, 0x61, 0xe2, 0xfd, 0xdf, 0xed, 0xe4, 0x15, 0xe6, 0xc6, 0xee, 0x02, 0xf5, + 0x1d, 0xf7, 0xdb, 0xfc, 0x4e, 0x02, 0x13, 0x07, 0xb3, 0x08, 0xc7, 0x06, 0x98, 0x07, 0x90, 0x07, + 0xb9, 0x0a, 0xc1, 0x09, 0x19, 0x08, 0x81, 0x09, 0x91, 0x08, 0x91, 0x09, 0xd0, 0x05, 0x98, 0x04, + 0xe1, 0x03, 0x94, 0xfb, 0xc6, 0xfb, 0x8c, 0xf7, 0x30, 0xfa, 0x7a, 0x00, 0x66, 0x00, 0x25, 0x04, + 0xbe, 0xfe, 0x36, 0xfd, 0x1e, 0xfd, 0x9e, 0xf7, 0x6f, 0xfb, 0x56, 0xf9, 0x7b, 0xfb, 0x23, 0x00, + 0x95, 0x04, 0x86, 0x0a, 0x7f, 0x0d, 0x37, 0x0f, 0x19, 0x10, 0x47, 0x0e, 0xb7, 0x12, 0xd0, 0x11, + 0x7e, 0x10, 0x1c, 0x0c, 0x84, 0x02, 0x11, 0x00, 0x41, 0xfd, 0x1d, 0xf9, 0x4d, 0xf3, 0x47, 0xeb, + 0x96, 0xe7, 0x9d, 0xdf, 0xb9, 0xdc, 0x8e, 0xd9, 0x99, 0xd8, 0xf6, 0xdc, 0xe8, 0xdc, 0xfb, 0xe1, + 0x8d, 0xe1, 0x80, 0xdf, 0xdb, 0xe0, 0x3f, 0xda, 0x22, 0xdd, 0x42, 0xdf, 0x69, 0xe5, 0x8e, 0xed, + 0x73, 0xf2, 0xd3, 0xf8, 0x96, 0xfe, 0xea, 0x03, 0xdc, 0x0a, 0x7b, 0x0b, 0x6a, 0x0e, 0x33, 0x12, + 0x85, 0x13, 0xe1, 0x18, 0x96, 0x16, 0x50, 0x16, 0x2c, 0x17, 0x82, 0x15, 0xc7, 0x15, 0xcd, 0x11, + 0x18, 0x11, 0xbf, 0x09, 0x92, 0x05, 0xdb, 0xff, 0x7f, 0xfb, 0x97, 0x03, 0x7d, 0x06, 0x90, 0x08, + 0x06, 0x07, 0x9a, 0x02, 0xaa, 0x04, 0x6a, 0xfe, 0x3d, 0xff, 0x81, 0x00, 0x37, 0x02, 0xc1, 0x02, + 0x59, 0x03, 0xf3, 0x08, 0xfe, 0x0a, 0x44, 0x0a, 0xf6, 0x0d, 0x95, 0x0c, 0xc0, 0x10, 0xbf, 0x12, + 0xa0, 0x10, 0x6c, 0x11, 0x99, 0x0b, 0x71, 0x09, 0xde, 0x09, 0xe3, 0x07, 0xe5, 0x05, 0x1a, 0xfd, + 0xe1, 0xf8, 0x42, 0xf3, 0x41, 0xee, 0x62, 0xeb, 0x81, 0xe8, 0x3e, 0xed, 0xd8, 0xf1, 0x32, 0xf4, + 0x28, 0xf7, 0xef, 0xf4, 0xae, 0xf9, 0xe7, 0xf6, 0xc4, 0xf7, 0xfa, 0xfb, 0xc8, 0x00, 0x8d, 0x08, + 0x23, 0x0e, 0x1c, 0x13, 0xaf, 0x17, 0x47, 0x1b, 0x23, 0x23, 0xbf, 0x24, 0xa3, 0x24, 0x16, 0x24, + 0x8c, 0x20, 0x91, 0x23, 0xd1, 0x1f, 0x05, 0x1c, 0x1b, 0x1d, 0x6c, 0x19, 0x03, 0x19, 0x0b, 0x14, + 0x28, 0x0d, 0x77, 0x07, 0x62, 0xff, 0x96, 0xf9, 0x45, 0xf1, 0x24, 0xef, 0x95, 0xf1, 0xca, 0xee, + 0x65, 0xec, 0x22, 0xe4, 0x4d, 0xe2, 0xfc, 0xdd, 0xd7, 0xdb, 0x5f, 0xde, 0xa9, 0xdc, 0x92, 0xdf, + 0x93, 0xe2, 0xe0, 0xe8, 0x4c, 0xef, 0x8e, 0xef, 0xac, 0xf4, 0x13, 0xf9, 0xc6, 0xfc, 0xd2, 0x00, + 0x2f, 0x00, 0xe4, 0x01, 0xdd, 0x01, 0x0d, 0x02, 0xb9, 0x05, 0x27, 0x06, 0x91, 0x09, 0x07, 0x07, + 0xd1, 0x00, 0x49, 0x00, 0xd2, 0xfb, 0x41, 0xfb, 0x93, 0xf9, 0x9a, 0xfa, 0x39, 0x01, 0x42, 0x03, + 0x93, 0x08, 0x31, 0x06, 0xd3, 0x07, 0x35, 0x08, 0x87, 0x04, 0x89, 0x07, 0x50, 0x07, 0x9e, 0x09, + 0x34, 0x0b, 0x81, 0x0d, 0x4a, 0x13, 0x46, 0x14, 0x0f, 0x18, 0x54, 0x1c, 0xd4, 0x1b, 0x53, 0x1a, + 0x0a, 0x16, 0xf1, 0x17, 0xe0, 0x17, 0x35, 0x12, 0xd4, 0x10, 0xbe, 0x08, 0xe2, 0x05, 0xc5, 0x02, + 0x3a, 0xf8, 0x32, 0xf5, 0x99, 0xef, 0x82, 0xea, 0xc1, 0xe3, 0xca, 0xde, 0xa5, 0xe4, 0xb2, 0xe4, + 0x86, 0xe5, 0x0d, 0xe3, 0xb2, 0xdf, 0xc5, 0xe0, 0x76, 0xdb, 0xeb, 0xdc, 0xaa, 0xdb, 0x4e, 0xdb, + 0xe1, 0xde, 0x31, 0xe4, 0x36, 0xee, 0xd5, 0xf2, 0x69, 0xf6, 0x81, 0xfe, 0x71, 0x01, 0x1c, 0x07, + 0x0a, 0x09, 0xc7, 0x07, 0xe8, 0x0a, 0x0f, 0x0a, 0xd3, 0x0b, 0x79, 0x0c, 0x8a, 0x0d, 0x22, 0x0d, + 0xea, 0x04, 0x93, 0x03, 0xfc, 0x00, 0x38, 0xfd, 0x15, 0xfa, 0x6a, 0xf4, 0xad, 0xf6, 0x9e, 0xf9, + 0x93, 0xfc, 0xf4, 0xfd, 0x13, 0xfa, 0xf3, 0xfd, 0x22, 0xfa, 0x92, 0xf7, 0xf0, 0xf9, 0x86, 0xfc, + 0x66, 0xff, 0xe4, 0x00, 0x95, 0x04, 0x5f, 0x06, 0x61, 0x06, 0x55, 0x0c, 0x77, 0x0c, 0xdc, 0x0c, + 0x5a, 0x0b, 0xdd, 0x0a, 0xee, 0x0d, 0x5d, 0x0d, 0x29, 0x0c, 0x0a, 0x09, 0x9e, 0x07, 0x3e, 0x09, + 0xcb, 0x02, 0xfa, 0xfd, 0x99, 0xfc, 0x67, 0xf8, 0x64, 0xf2, 0xb1, 0xea, 0x4a, 0xed, 0xc4, 0xf0, + 0x5d, 0xf2, 0x64, 0xf6, 0x57, 0xf2, 0x4e, 0xf5, 0x1e, 0xf3, 0x9a, 0xf4, 0x6b, 0xf5, 0x80, 0xf4, + 0xc1, 0xf8, 0x37, 0xfd, 0x90, 0x06, 0x69, 0x0d, 0x6a, 0x0d, 0x32, 0x14, 0xfe, 0x18, 0x17, 0x20, + 0xd5, 0x23, 0x7b, 0x21, 0x63, 0x22, 0xa8, 0x20, 0x42, 0x1e, 0x25, 0x1d, 0x7b, 0x1b, 0x4f, 0x1b, + 0x52, 0x13, 0xe3, 0x0e, 0x7a, 0x09, 0x70, 0x01, 0xf8, 0xfe, 0x88, 0xf7, 0xa9, 0xf5, 0x3e, 0xf7, + 0x53, 0xf6, 0x76, 0xfa, 0x2b, 0xf3, 0x7c, 0xf2, 0xdf, 0xed, 0x6b, 0xe7, 0x54, 0xe9, 0x42, 0xe8, + 0xa6, 0xea, 0x8c, 0xeb, 0xc2, 0xec, 0x45, 0xf3, 0xab, 0xf2, 0xd9, 0xf9, 0x9a, 0xfe, 0x58, 0xff, + 0xbf, 0x03, 0xcb, 0x01, 0xe3, 0x01, 0x7b, 0x04, 0x68, 0x03, 0xa0, 0x03, 0xb4, 0x01, 0x12, 0x06, + 0x52, 0x05, 0x7a, 0x00, 0x3e, 0x01, 0xd5, 0xfd, 0xa4, 0xfa, 0x32, 0xf6, 0xfd, 0xf4, 0x2f, 0xfc, + 0x27, 0xfd, 0x1d, 0x04, 0xcd, 0x02, 0x8f, 0x01, 0xee, 0x04, 0x1e, 0x03, 0x77, 0x04, 0xf1, 0x03, + 0x6e, 0x03, 0x96, 0x06, 0xac, 0x06, 0x20, 0x0f, 0x25, 0x11, 0x4d, 0x11, 0x4b, 0x19, 0xfd, 0x1d, + 0xbb, 0x22, 0xcc, 0x20, 0x27, 0x1d, 0xb6, 0x1d, 0x3f, 0x1a, 0x23, 0x19, 0x4d, 0x16, 0xac, 0x13, + 0xf9, 0x0d, 0x3e, 0x04, 0x9f, 0xfb, 0xfd, 0xf5, 0xbc, 0xf0, 0x9a, 0xeb, 0x7d, 0xe4, 0x8f, 0xe5, + 0xe5, 0xe4, 0x91, 0xe8, 0xdd, 0xe8, 0x84, 0xe5, 0x57, 0xe6, 0xc3, 0xe1, 0x74, 0xe2, 0xf9, 0xe4, + 0x51, 0xe5, 0x5d, 0xe8, 0x6e, 0xe8, 0xe2, 0xed, 0xb1, 0xf2, 0x47, 0xf9, 0x19, 0x02, 0x13, 0x07, + 0xca, 0x0d, 0x5a, 0x0d, 0x8d, 0x0c, 0xd9, 0x10, 0x36, 0x12, 0x2d, 0x13, 0xea, 0x13, 0x69, 0x17, + 0x49, 0x18, 0x16, 0x14, 0x27, 0x11, 0xc8, 0x0d, 0x58, 0x09, 0xa3, 0x03, 0xa0, 0xfd, 0x0e, 0xfd, + 0x41, 0xf9, 0x56, 0xfd, 0x45, 0xfd, 0xf2, 0xf5, 0xf0, 0xf8, 0xce, 0xf5, 0xa9, 0xf4, 0xe1, 0xf1, + 0x1e, 0xed, 0xa2, 0xf0, 0xf0, 0xef, 0x98, 0xf5, 0x6c, 0xfa, 0x37, 0xf8, 0xe2, 0xfd, 0x93, 0x00, + 0xa2, 0x05, 0x4c, 0x06, 0x16, 0x03, 0x7f, 0x03, 0x83, 0x01, 0x8a, 0x03, 0x9c, 0x04, 0xf4, 0x01, + 0x34, 0x03, 0xb1, 0xfd, 0x66, 0xf7, 0x3b, 0xf4, 0x8c, 0xf0, 0x42, 0xef, 0x84, 0xe8, 0x87, 0xe8, + 0x24, 0xe7, 0x35, 0xe9, 0x79, 0xf1, 0xb1, 0xee, 0xd0, 0xf1, 0xaf, 0xf1, 0x5b, 0xf1, 0xe3, 0xf5, + 0xe7, 0xf4, 0x02, 0xfa, 0x88, 0xfa, 0x0e, 0xfb, 0x0f, 0x06, 0xe4, 0x09, 0x4d, 0x12, 0x17, 0x18, + 0xe3, 0x1b, 0x0a, 0x22, 0x22, 0x1f, 0x2e, 0x23, 0x5a, 0x25, 0x3c, 0x21, 0xa4, 0x22, 0xa6, 0x20, + 0xcb, 0x1f, 0x00, 0x1d, 0x71, 0x18, 0xa4, 0x15, 0x38, 0x0f, 0xf4, 0x09, 0x16, 0x04, 0x13, 0x00, + 0x2b, 0xff, 0x50, 0xfd, 0x5d, 0x00, 0x98, 0xfa, 0x27, 0xf7, 0x0e, 0xf6, 0xe9, 0xef, 0x19, 0xec, + 0x88, 0xe5, 0xe0, 0xe3, 0x36, 0xe5, 0x11, 0xe5, 0x8d, 0xec, 0x7b, 0xec, 0xaf, 0xf0, 0xa8, 0xf7, + 0xd9, 0xfa, 0x35, 0x01, 0xfb, 0x00, 0x6e, 0xfe, 0x72, 0xfe, 0xe1, 0xfd, 0x2e, 0xff, 0xc6, 0xfe, + 0xa4, 0xff, 0x19, 0xfe, 0x24, 0xfa, 0xb2, 0xf7, 0x28, 0xf7, 0x4a, 0xf5, 0x15, 0xf3, 0xd3, 0xf0, + 0xaa, 0xf0, 0x5f, 0xf1, 0xf1, 0xfa, 0xff, 0xfd, 0xf1, 0xfd, 0x28, 0xff, 0x0b, 0xff, 0x45, 0x00, + 0xc5, 0x00, 0x81, 0x05, 0x8d, 0x07, 0x90, 0x02, 0x7d, 0x09, 0x8b, 0x0c, 0x4c, 0x11, 0x3d, 0x18, + 0x03, 0x1c, 0xbb, 0x22, 0x29, 0x21, 0xfb, 0x20, 0x81, 0x22, 0x13, 0x20, 0x4f, 0x21, 0x5e, 0x20, + 0x62, 0x1f, 0x4e, 0x1d, 0x17, 0x1a, 0x14, 0x14, 0xb2, 0x0b, 0x14, 0x05, 0x29, 0xff, 0xbf, 0xf6, + 0x32, 0xf6, 0xd5, 0xf1, 0xda, 0xf4, 0xd5, 0xf4, 0xe3, 0xf0, 0x24, 0xf1, 0x1b, 0xed, 0x96, 0xeb, + 0x79, 0xe7, 0x87, 0xe3, 0xbc, 0xe7, 0xa3, 0xe4, 0x0a, 0xe8, 0x8c, 0xea, 0x8a, 0xeb, 0xc5, 0xf3, + 0xad, 0xf8, 0x39, 0x03, 0xeb, 0x08, 0x68, 0x07, 0x80, 0x0a, 0x06, 0x09, 0xfd, 0x0b, 0xd4, 0x0e, + 0x1b, 0x10, 0x4a, 0x13, 0x40, 0x0f, 0x2f, 0x0d, 0x45, 0x0a, 0x79, 0x04, 0x04, 0x06, 0x9f, 0x01, + 0xea, 0xff, 0x05, 0xfc, 0x92, 0xfe, 0xca, 0x04, 0x71, 0x02, 0x41, 0x02, 0x85, 0x01, 0x04, 0xff, + 0xe2, 0xfe, 0xb0, 0xfb, 0x5f, 0xfe, 0x2e, 0xf9, 0x67, 0xf7, 0x95, 0xfd, 0x1d, 0xfd, 0x95, 0x03, + 0x4c, 0x06, 0xc2, 0x06, 0xe9, 0x08, 0x11, 0x05, 0x29, 0x04, 0x66, 0x00, 0xba, 0xff, 0x95, 0x01, + 0xef, 0xfe, 0xf0, 0xfe, 0xfb, 0xfd, 0xe4, 0xf9, 0xce, 0xf4, 0x3b, 0xee, 0x82, 0xec, 0x68, 0xe7, + 0xad, 0xe5, 0x2c, 0xe4, 0x9b, 0xe2, 0x63, 0xe6, 0x25, 0xe6, 0x7f, 0xe5, 0x65, 0xe9, 0xb5, 0xe9, + 0x23, 0xe9, 0x4e, 0xe6, 0x80, 0xea, 0x97, 0xed, 0xdf, 0xec, 0x3a, 0xf3, 0xed, 0xf6, 0xbc, 0xfe, + 0x35, 0x07, 0x0a, 0x0f, 0xf5, 0x16, 0x65, 0x17, 0xe4, 0x19, 0xbf, 0x19, 0x50, 0x1a, 0xe2, 0x1b, + 0x59, 0x1b, 0x83, 0x1b, 0x62, 0x18, 0x01, 0x14, 0x3f, 0x0f, 0xa6, 0x09, 0xa9, 0x08, 0x8d, 0x04, + 0xff, 0xff, 0x3e, 0xfc, 0x0e, 0xfa, 0x88, 0xff, 0x3c, 0xff, 0xa7, 0xfc, 0xb5, 0xfc, 0x9e, 0xf7, + 0xe9, 0xf6, 0x78, 0xf3, 0x94, 0xf2, 0x00, 0xf1, 0xac, 0xeb, 0x46, 0xef, 0x35, 0xf0, 0x57, 0xf7, + 0xbe, 0xfd, 0x8b, 0xff, 0xf4, 0x04, 0xd6, 0x03, 0xc5, 0x03, 0xfa, 0x02, 0x4b, 0x02, 0x7e, 0x04, + 0x91, 0x02, 0x6c, 0x03, 0xd7, 0x03, 0xe9, 0x01, 0x27, 0x00, 0x0e, 0xfa, 0x11, 0xf9, 0xac, 0xf6, + 0xc3, 0xf3, 0x87, 0xf4, 0xba, 0xee, 0xf8, 0xf3, 0x40, 0xf7, 0x58, 0xf6, 0xe7, 0xfb, 0x6e, 0xfb, + 0xa2, 0xfa, 0x19, 0xf8, 0xcd, 0xf7, 0x8d, 0xfe, 0x41, 0xfc, 0xce, 0xfe, 0x1f, 0x01, 0x8f, 0x03, + 0x75, 0x0b, 0xb9, 0x0f, 0x28, 0x18, 0x83, 0x1b, 0xb8, 0x1a, 0xaf, 0x1a, 0x1c, 0x17, 0x9e, 0x19, + 0x81, 0x1a, 0x1a, 0x19, 0x8e, 0x18, 0x0d, 0x14, 0x24, 0x10, 0x4b, 0x08, 0xf0, 0x02, 0xd1, 0xff, + 0x8e, 0xf7, 0xb3, 0xf4, 0x01, 0xee, 0x15, 0xef, 0xea, 0xf3, 0x38, 0xf2, 0xf4, 0xf3, 0xd2, 0xf1, + 0x34, 0xf0, 0x0e, 0xf1, 0x25, 0xee, 0x22, 0xf2, 0xc6, 0xee, 0x90, 0xeb, 0x92, 0xef, 0x13, 0xf3, + 0x1f, 0xfb, 0x43, 0xfe, 0x79, 0x03, 0x79, 0x0a, 0x09, 0x0c, 0x07, 0x0f, 0xba, 0x0f, 0x6a, 0x11, + 0x5f, 0x12, 0x9c, 0x13, 0x87, 0x15, 0xef, 0x15, 0x44, 0x17, 0x34, 0x12, 0x0b, 0x0d, 0xd2, 0x0c, + 0x4b, 0x09, 0xc2, 0x09, 0x6a, 0x06, 0x4b, 0x04, 0x11, 0x06, 0xa8, 0x04, 0xa1, 0x05, 0xd9, 0x06, + 0xe6, 0x03, 0x1a, 0x01, 0x97, 0xf9, 0x3b, 0xfc, 0x69, 0xfb, 0xc2, 0xf7, 0xa7, 0xf9, 0xd3, 0xf8, + 0x38, 0xff, 0x70, 0x05, 0xce, 0x09, 0x6d, 0x0f, 0x5d, 0x0e, 0x54, 0x0c, 0x3e, 0x07, 0x4a, 0x05, + 0xc0, 0x03, 0x6c, 0x02, 0x57, 0x02, 0x82, 0xff, 0x82, 0xfc, 0x7b, 0xf7, 0x15, 0xf0, 0xa3, 0xef, + 0x0c, 0xea, 0x19, 0xe8, 0xad, 0xe3, 0xc7, 0xdf, 0x42, 0xe5, 0x77, 0xe5, 0xd7, 0xe4, 0x77, 0xe5, + 0x6f, 0xe3, 0xd2, 0xe7, 0xdf, 0xe4, 0xe1, 0xe8, 0xff, 0xeb, 0x61, 0xe7, 0x44, 0xeb, 0x5d, 0xee, + 0xee, 0xf5, 0x12, 0xff, 0xd6, 0x05, 0x4b, 0x0f, 0x56, 0x11, 0x93, 0x14, 0xb8, 0x16, 0x07, 0x19, + 0xa7, 0x1c, 0x57, 0x1d, 0x55, 0x1f, 0x01, 0x20, 0x3b, 0x1e, 0xc5, 0x1b, 0x87, 0x13, 0x3e, 0x12, + 0x99, 0x0e, 0x2a, 0x0b, 0x90, 0x08, 0x27, 0x01, 0xef, 0x00, 0xb4, 0x00, 0x02, 0x00, 0x87, 0x01, + 0xc0, 0xfc, 0x52, 0xfb, 0x8e, 0xf3, 0xbd, 0xee, 0x21, 0xf0, 0x04, 0xe9, 0x4c, 0xe6, 0xe5, 0xe4, + 0x8e, 0xe6, 0xca, 0xee, 0x6d, 0xf3, 0x97, 0xfb, 0x38, 0xfe, 0xdd, 0xfd, 0xcc, 0xfe, 0x11, 0xfd, + 0xf8, 0xfe, 0x89, 0x00, 0x5e, 0x01, 0x0e, 0x03, 0xc9, 0xfe, 0xaf, 0xfd, 0x30, 0xf8, 0x2b, 0xf6, + 0xe8, 0xf4, 0xc2, 0xf3, 0x58, 0xf3, 0x9d, 0xee, 0x1b, 0xf1, 0x5d, 0xf5, 0x6f, 0xf6, 0xe7, 0xfa, + 0xa6, 0xfa, 0xc1, 0xfd, 0x01, 0xfe, 0x8e, 0xfb, 0x0d, 0x01, 0x14, 0xfe, 0xbb, 0xfc, 0x1a, 0xff, + 0xdc, 0x00, 0xad, 0x08, 0x6d, 0x0b, 0xbd, 0x11, 0xc1, 0x15, 0xe4, 0x16, 0x6d, 0x18, 0xae, 0x16, + 0x6c, 0x17, 0x72, 0x17, 0xf0, 0x16, 0x3c, 0x19, 0x19, 0x18, 0xcb, 0x16, 0xcb, 0x0f, 0xcb, 0x0a, + 0x0b, 0x07, 0x91, 0x01, 0xd5, 0xfe, 0x37, 0xf7, 0xeb, 0xf0, 0xe3, 0xf0, 0x1e, 0xf0, 0x08, 0xf3, + 0xb4, 0xf3, 0x97, 0xf3, 0xdc, 0xef, 0x8a, 0xe8, 0x25, 0xed, 0x51, 0xec, 0x68, 0xe9, 0x0c, 0xea, + 0xe1, 0xe9, 0x7c, 0xf1, 0x28, 0xf6, 0xed, 0xfd, 0x1f, 0x05, 0xaa, 0x05, 0xf8, 0x09, 0x9d, 0x0a, + 0x2e, 0x0b, 0x89, 0x0e, 0x94, 0x0f, 0x0e, 0x12, 0xee, 0x10, 0x87, 0x11, 0xd0, 0x0f, 0x10, 0x0c, + 0x61, 0x0c, 0x99, 0x09, 0x9c, 0x09, 0x7c, 0x07, 0x00, 0x04, 0xed, 0x08, 0xb0, 0x09, 0xce, 0x0a, + 0xe2, 0x0a, 0x2e, 0x09, 0x3a, 0x0b, 0x9d, 0x06, 0x88, 0x08, 0x6c, 0x07, 0x59, 0x03, 0x0a, 0x03, + 0x83, 0x00, 0x26, 0x06, 0x34, 0x0a, 0x7a, 0x0e, 0x3e, 0x15, 0xea, 0x13, 0xa2, 0x13, 0xfc, 0x11, + 0x37, 0x0e, 0x50, 0x0c, 0x8c, 0x08, 0x8e, 0x08, 0x39, 0x08, 0x61, 0x06, 0x80, 0x04, 0xab, 0xfc, + 0x9a, 0xf8, 0xd8, 0xf3, 0x46, 0xf2, 0x04, 0xef, 0x64, 0xe6, 0x10, 0xe5, 0x69, 0xe6, 0xa2, 0xe7, + 0x12, 0xe9, 0xa1, 0xe7, 0x05, 0xe7, 0xc8, 0xe1, 0x3e, 0xe3, 0x02, 0xe7, 0xa9, 0xe4, 0x78, 0xe5, + 0xac, 0xe4, 0x0b, 0xe8, 0xc4, 0xf0, 0x6f, 0xf9, 0x4f, 0x05, 0x48, 0x09, 0xbc, 0x0c, 0xe7, 0x0f, + 0x7d, 0x10, 0xbe, 0x14, 0xa1, 0x16, 0xb5, 0x18, 0xba, 0x19, 0x34, 0x17, 0x00, 0x18, 0xf5, 0x11, + 0xf4, 0x0e, 0x31, 0x0b, 0xdb, 0x07, 0x14, 0x07, 0x50, 0x01, 0xa8, 0xff, 0xfe, 0x00, 0xab, 0x00, + 0xb3, 0x01, 0x83, 0xff, 0xda, 0x01, 0xa5, 0xff, 0x0d, 0xfc, 0x24, 0xfd, 0x19, 0xf7, 0x64, 0xf3, + 0xea, 0xef, 0xc8, 0xee, 0xb2, 0xf2, 0x4d, 0xf5, 0x2f, 0xfe, 0x2e, 0x01, 0x75, 0x02, 0xe1, 0x04, + 0x3c, 0x03, 0x7f, 0x03, 0x7f, 0x01, 0x8d, 0x02, 0xd1, 0x06, 0x69, 0x04, 0xc2, 0x05, 0x7b, 0xfe, + 0xc8, 0xf7, 0x5f, 0xf5, 0xdf, 0xf3, 0xe1, 0xf4, 0x12, 0xf1, 0x7b, 0xec, 0x44, 0xee, 0x07, 0xef, + 0x1e, 0xf4, 0x18, 0xf6, 0x9d, 0xf7, 0x63, 0xf7, 0x88, 0xf2, 0xec, 0xf6, 0x10, 0xf7, 0xb0, 0xf5, + 0x68, 0xf6, 0x2e, 0xf5, 0x72, 0xfc, 0x29, 0x03, 0x73, 0x0c, 0x8b, 0x11, 0xe4, 0x12, 0xd9, 0x15, + 0x22, 0x15, 0xae, 0x15, 0xf8, 0x16, 0xcc, 0x14, 0xba, 0x16, 0xfc, 0x12, 0xe3, 0x11, 0x70, 0x0e, + 0x3c, 0x08, 0x5d, 0x05, 0x68, 0x00, 0xe8, 0xfd, 0x7e, 0xf9, 0x8e, 0xf0, 0x7c, 0xf0, 0x2d, 0xed, + 0x34, 0xec, 0x5c, 0xec, 0xff, 0xec, 0x7a, 0xef, 0x68, 0xeb, 0xf9, 0xeb, 0x91, 0xeb, 0x73, 0xe8, + 0x17, 0xe8, 0xee, 0xe6, 0xec, 0xea, 0x10, 0xf0, 0x90, 0xf8, 0x49, 0xff, 0x2f, 0x00, 0x24, 0x04, + 0x45, 0x07, 0xbb, 0x08, 0xf0, 0x0b, 0xb8, 0x0d, 0x5e, 0x13, 0x95, 0x14, 0xd3, 0x16, 0xfe, 0x16, + 0x5e, 0x12, 0xf7, 0x10, 0x0f, 0x0f, 0xd4, 0x0f, 0xf5, 0x0e, 0xea, 0x07, 0x4d, 0x07, 0x76, 0x07, + 0xbb, 0x0a, 0xe6, 0x0c, 0x0c, 0x0a, 0x18, 0x0a, 0x3a, 0x06, 0x26, 0x05, 0xb5, 0x05, 0x76, 0x02, + 0xdd, 0xff, 0x42, 0xfb, 0xda, 0xfb, 0x70, 0x00, 0xda, 0x06, 0xa0, 0x0e, 0xfc, 0x0f, 0x9f, 0x11, + 0x62, 0x13, 0xca, 0x11, 0x87, 0x12, 0x0e, 0x0f, 0xc2, 0x0e, 0x5a, 0x0a, 0x82, 0x05, 0x2f, 0x06, + 0x82, 0x01, 0x93, 0xfe, 0x05, 0xf9, 0x02, 0xf6, 0x95, 0xf5, 0x09, 0xed, 0xf2, 0xea, 0x16, 0xea, + 0xa0, 0xe9, 0xbb, 0xed, 0xfe, 0xec, 0x3f, 0xef, 0x0b, 0xee, 0xe0, 0xea, 0x7c, 0xec, 0x82, 0xe9, + 0xf6, 0xea, 0x3d, 0xea, 0xbe, 0xea, 0x59, 0xf0, 0xbb, 0xf4, 0x4e, 0xfe, 0xf5, 0x03, 0xda, 0x08, + 0xc1, 0x0e, 0x49, 0x0f, 0x6f, 0x11, 0x13, 0x12, 0xcf, 0x15, 0x26, 0x19, 0xc2, 0x19, 0x7e, 0x1c, + 0x86, 0x17, 0xf8, 0x12, 0x07, 0x11, 0xef, 0x0d, 0xbe, 0x0e, 0x65, 0x09, 0x1d, 0x02, 0xb3, 0x00, + 0x27, 0xff, 0x66, 0x03, 0x0c, 0x02, 0xd8, 0x01, 0xa4, 0x00, 0x1e, 0xfa, 0xcf, 0xfb, 0x60, 0xf9, + 0x17, 0xf5, 0x1d, 0xf1, 0x1b, 0xeb, 0x71, 0xeb, 0x21, 0xee, 0x0f, 0xf5, 0x14, 0xfc, 0x38, 0xfd, + 0x76, 0xff, 0x1c, 0x01, 0x03, 0x01, 0x0a, 0x01, 0x03, 0x01, 0x75, 0x01, 0xae, 0xfd, 0xac, 0xff, + 0x06, 0xfe, 0xfe, 0xf8, 0xb1, 0xf6, 0xae, 0xf2, 0x50, 0xf2, 0xcb, 0xf1, 0x3a, 0xed, 0xc0, 0xee, + 0x64, 0xee, 0xc5, 0xf1, 0x17, 0xf3, 0x6b, 0xf5, 0x6c, 0xfa, 0x6c, 0xf8, 0xf5, 0xf9, 0x59, 0xf9, + 0x93, 0xf9, 0xa3, 0xfb, 0xce, 0xf9, 0xdf, 0xfc, 0xd0, 0x00, 0x17, 0x08, 0x95, 0x0f, 0xa4, 0x12, + 0x92, 0x15, 0x79, 0x17, 0x15, 0x17, 0x3c, 0x17, 0x02, 0x17, 0xfd, 0x18, 0x3f, 0x18, 0x3a, 0x19, + 0x1d, 0x17, 0x06, 0x11, 0xb6, 0x0c, 0xe1, 0x07, 0xed, 0x06, 0xc0, 0x03, 0x9b, 0xf9, 0x73, 0xf4, + 0x8b, 0xef, 0x6d, 0xef, 0xec, 0xec, 0xca, 0xe9, 0x28, 0xeb, 0x91, 0xe6, 0x51, 0xe6, 0x1a, 0xe7, + 0xe3, 0xe2, 0x90, 0xe1, 0xc2, 0xdc, 0x23, 0xdc, 0x33, 0xe0, 0x13, 0xe8, 0x46, 0xf2, 0x87, 0xf5, + 0x2b, 0xf9, 0x8e, 0xfc, 0x17, 0xfd, 0x4a, 0x02, 0x72, 0x03, 0x9e, 0x07, 0xec, 0x07, 0x10, 0x08, + 0x47, 0x0b, 0x29, 0x0a, 0x47, 0x09, 0xc1, 0x06, 0xa7, 0x04, 0x91, 0x07, 0x47, 0x04, 0xd5, 0x03, + 0x3b, 0x02, 0xa4, 0x03, 0x31, 0x08, 0xa4, 0x07, 0xa7, 0x0d, 0xf4, 0x0d, 0x49, 0x0b, 0x99, 0x0c, + 0xbc, 0x08, 0xa0, 0x09, 0xef, 0x05, 0x82, 0x04, 0x6c, 0x06, 0x4a, 0x08, 0x9c, 0x0f, 0x36, 0x13, + 0xff, 0x14, 0x82, 0x19, 0xea, 0x17, 0x52, 0x18, 0xb9, 0x15, 0x34, 0x16, 0x39, 0x16, 0xf0, 0x11, + 0x36, 0x0f, 0x0c, 0x0a, 0x59, 0x03, 0x9b, 0xff, 0xb6, 0xfc, 0xd5, 0xfb, 0xa4, 0xf5, 0x98, 0xee, + 0xaa, 0xea, 0xcd, 0xe8, 0xff, 0xeb, 0xc7, 0xeb, 0xa7, 0xed, 0x4c, 0xee, 0x1d, 0xea, 0x52, 0xeb, + 0xe8, 0xe7, 0x5e, 0xe7, 0x0a, 0xe5, 0x64, 0xe3, 0xdd, 0xe7, 0xc0, 0xed, 0xe2, 0xf7, 0x50, 0x00, + 0xbd, 0x04, 0xe5, 0x0a, 0xab, 0x0d, 0xd8, 0x10, 0x49, 0x13, 0xa2, 0x14, 0x1e, 0x16, 0x62, 0x15, + 0xef, 0x15, 0x16, 0x16, 0x83, 0x12, 0xd4, 0x0f, 0x61, 0x0b, 0x26, 0x0b, 0xa5, 0x09, 0xa7, 0x04, + 0x92, 0x01, 0x31, 0xfe, 0xec, 0xff, 0x2f, 0xff, 0x52, 0x02, 0xc7, 0x04, 0x4d, 0x01, 0x86, 0x01, + 0x67, 0xfd, 0x7d, 0xfc, 0x2d, 0xfa, 0x86, 0xf6, 0x24, 0xf6, 0xf5, 0xf2, 0x55, 0xf6, 0x7e, 0xfc, + 0x8f, 0xfd, 0xd2, 0x01, 0xfe, 0x02, 0x66, 0x04, 0x54, 0x05, 0xe5, 0x05, 0x00, 0x08, 0x27, 0x06, + 0xaa, 0x06, 0x55, 0x05, 0xb8, 0x00, 0xb4, 0xfe, 0x22, 0xfa, 0xca, 0xf8, 0xb4, 0xf6, 0xb8, 0xef, + 0x5c, 0xec, 0xac, 0xea, 0xcf, 0xee, 0x68, 0xf0, 0x21, 0xf1, 0x0a, 0xf5, 0x6f, 0xf4, 0xb4, 0xf7, + 0xe7, 0xf7, 0xc8, 0xf6, 0x2d, 0xf7, 0x4b, 0xf3, 0x0a, 0xf6, 0x6c, 0xf9, 0x6d, 0xff, 0x2e, 0x0a, + 0x75, 0x0d, 0xe8, 0x12, 0xd8, 0x15, 0x91, 0x17, 0x0c, 0x1c, 0x7a, 0x1a, 0x3b, 0x1c, 0x73, 0x1a, + 0x12, 0x17, 0xc4, 0x18, 0x01, 0x16, 0x1c, 0x12, 0x2c, 0x0b, 0xbf, 0x05, 0xcc, 0x05, 0x8f, 0xff, + 0xf6, 0xfa, 0x88, 0xf6, 0x5e, 0xf3, 0xa1, 0xf1, 0x1f, 0xef, 0x1c, 0xf2, 0xfe, 0xef, 0xd5, 0xed, + 0x4b, 0xed, 0xa6, 0xe8, 0x9f, 0xe9, 0xf6, 0xe5, 0xbd, 0xe3, 0xa4, 0xe3, 0x27, 0xe4, 0xf9, 0xeb, + 0x48, 0xf1, 0xc4, 0xf6, 0x49, 0xfb, 0xb4, 0xfb, 0xa5, 0xfe, 0xe1, 0xfd, 0x05, 0x01, 0x50, 0x04, + 0x1c, 0x05, 0xa5, 0x06, 0x23, 0x06, 0xcd, 0x03, 0xc6, 0x03, 0xa4, 0x01, 0x08, 0x02, 0xf6, 0xff, + 0x5e, 0xfb, 0xe4, 0xf9, 0x80, 0xfa, 0x68, 0xfe, 0x31, 0xff, 0x03, 0x03, 0x2b, 0x05, 0xd2, 0x03, + 0xd8, 0x05, 0xf4, 0x02, 0x87, 0x02, 0x37, 0xff, 0x88, 0xfd, 0x48, 0xfe, 0xc7, 0xff, 0x41, 0x07, + 0x88, 0x0d, 0x80, 0x10, 0xf6, 0x13, 0x79, 0x15, 0xae, 0x19, 0x41, 0x18, 0x60, 0x18, 0x8d, 0x19, + 0xd7, 0x14, 0x00, 0x12, 0x8d, 0x0f, 0x40, 0x09, 0x96, 0x04, 0x00, 0xfe, 0x52, 0xfc, 0x9c, 0xfa, + 0x28, 0xf7, 0x95, 0xf3, 0x0d, 0xee, 0x49, 0xee, 0x15, 0xed, 0x13, 0xf0, 0x17, 0xf4, 0x92, 0xf2, + 0x06, 0xf4, 0x24, 0xf0, 0x76, 0xef, 0xc6, 0xed, 0xea, 0xeb, 0x48, 0xed, 0xd4, 0xec, 0x90, 0xf2, + 0x9e, 0xfb, 0xda, 0x01, 0x19, 0x09, 0x77, 0x0a, 0xd3, 0x0e, 0x4e, 0x10, 0xfc, 0x11, 0x40, 0x17, + 0x8d, 0x18, 0x72, 0x1a, 0xe4, 0x1a, 0x77, 0x18, 0x42, 0x18, 0x0f, 0x14, 0xdd, 0x12, 0x08, 0x11, + 0x9b, 0x0a, 0x75, 0x06, 0x8e, 0x01, 0x47, 0x01, 0x23, 0x00, 0x4c, 0xfe, 0x1e, 0x00, 0x48, 0xfd, + 0xb2, 0xfd, 0x74, 0xfc, 0x18, 0xf8, 0x51, 0xf4, 0x1b, 0xf0, 0x3a, 0xf0, 0x21, 0xef, 0x04, 0xf0, + 0xa5, 0xf6, 0xd9, 0xf6, 0xd7, 0xfa, 0x2c, 0xfc, 0x4d, 0xfe, 0xd4, 0x01, 0xed, 0x01, 0x0a, 0x04, + 0x08, 0x02, 0x73, 0xff, 0x92, 0x00, 0xca, 0xff, 0x3e, 0xff, 0xa9, 0xfa, 0x89, 0xf7, 0x34, 0xf8, + 0x98, 0xf5, 0xd8, 0xf3, 0x63, 0xef, 0xa8, 0xed, 0xc6, 0xf0, 0x5a, 0xf1, 0xc1, 0xf7, 0xe4, 0xf9, + 0x03, 0xfb, 0x0c, 0xfc, 0x1d, 0xfa, 0x71, 0xfb, 0x0e, 0xfa, 0x1c, 0xfb, 0xe5, 0xfc, 0xbe, 0xfd, + 0x5f, 0x05, 0x48, 0x0b, 0xf9, 0x11, 0xc5, 0x15, 0x0b, 0x19, 0xa2, 0x1b, 0x4d, 0x1c, 0x0c, 0x20, + 0xb2, 0x21, 0x2a, 0x20, 0xdf, 0x1e, 0x89, 0x1c, 0xa8, 0x1a, 0x7a, 0x16, 0x0d, 0x12, 0x14, 0x10, + 0xcb, 0x09, 0xa1, 0x04, 0x74, 0xff, 0x32, 0xfb, 0xc8, 0xfa, 0x61, 0xf6, 0x36, 0xf6, 0x4f, 0xf4, + 0x76, 0xf1, 0xe6, 0xef, 0x4a, 0xe9, 0xfc, 0xe5, 0xe7, 0xe1, 0xdc, 0xdf, 0x5b, 0xe0, 0x0b, 0xdf, + 0x76, 0xe4, 0x39, 0xe9, 0x98, 0xed, 0x37, 0xf2, 0x4a, 0xf5, 0x83, 0xfa, 0x1b, 0xfb, 0xcd, 0xfc, + 0x66, 0xfd, 0xcc, 0xfb, 0x60, 0xfd, 0xe2, 0xfd, 0x68, 0xfe, 0x49, 0xfe, 0xea, 0xfa, 0x7c, 0xfc, + 0xe0, 0xfc, 0x08, 0xfd, 0x61, 0xfb, 0x51, 0xf7, 0x7f, 0xfa, 0x8a, 0xfa, 0xde, 0xff, 0xf3, 0x05, + 0x2a, 0x06, 0x84, 0x09, 0x9c, 0x06, 0x1e, 0x06, 0x76, 0x06, 0x54, 0x05, 0x6c, 0x06, 0x27, 0x03, + 0xf4, 0x04, 0x1c, 0x0c, 0x38, 0x10, 0x07, 0x14, 0xfd, 0x14, 0x40, 0x17, 0xf3, 0x16, 0x73, 0x17, + 0x81, 0x1a, 0x4e, 0x19, 0xf5, 0x17, 0xc9, 0x14, 0x61, 0x10, 0xa2, 0x0d, 0x17, 0x07, 0xb2, 0x01, + 0xbd, 0xfc, 0xa0, 0xf7, 0x1b, 0xf4, 0xbe, 0xee, 0xdf, 0xed, 0x6a, 0xeb, 0xa1, 0xe9, 0x38, 0xec, + 0xc9, 0xea, 0xe5, 0xed, 0xee, 0xec, 0xb2, 0xe8, 0xb5, 0xe7, 0x76, 0xe4, 0xc9, 0xe5, 0x40, 0xe6, + 0xa4, 0xe7, 0x2e, 0xef, 0x35, 0xf4, 0x6d, 0xfb, 0xe4, 0xff, 0x8e, 0x05, 0x84, 0x0a, 0xb3, 0x0c, + 0x08, 0x0f, 0xe9, 0x0f, 0x28, 0x10, 0x09, 0x12, 0xc7, 0x13, 0xe4, 0x14, 0x92, 0x11, 0x12, 0x0f, + 0x76, 0x0e, 0x2d, 0x0d, 0xa2, 0x0b, 0x6a, 0x06, 0x9c, 0x04, 0x58, 0x03, 0x08, 0x03, 0x43, 0x09, + 0x4d, 0x08, 0x02, 0x09, 0x68, 0x08, 0x21, 0x04, 0x18, 0x03, 0x08, 0x00, 0x25, 0xff, 0x8d, 0xfd, + 0x7d, 0xfa, 0xae, 0xfd, 0xdd, 0xfe, 0xbc, 0x02, 0x69, 0x03, 0x6e, 0x03, 0xec, 0x03, 0x47, 0x03, + 0x20, 0x06, 0x30, 0x07, 0x68, 0x05, 0x54, 0x03, 0x6f, 0x00, 0x83, 0x00, 0xe3, 0xfd, 0xea, 0xfa, + 0xd4, 0xf7, 0xd2, 0xf3, 0xf2, 0xf1, 0xcb, 0xec, 0xa0, 0xe9, 0x9e, 0xe9, 0xcd, 0xe6, 0xc6, 0xeb, + 0xf3, 0xed, 0x0f, 0xf1, 0x60, 0xf4, 0xaf, 0xf1, 0x39, 0xf2, 0xed, 0xef, 0x9f, 0xf0, 0x2c, 0xf5, + 0x96, 0xf4, 0x35, 0xfb, 0x1f, 0x01, 0xe2, 0x07, 0xcc, 0x0d, 0x62, 0x11, 0xd7, 0x17, 0x0c, 0x1a, + 0x22, 0x1c, 0xd6, 0x1e, 0xf9, 0x1c, 0xa8, 0x1c, 0xe5, 0x1b, 0xb3, 0x1b, 0x1b, 0x18, 0x03, 0x13, + 0x84, 0x11, 0x63, 0x0e, 0x6b, 0x0c, 0x7e, 0x07, 0x1d, 0x00, 0x1d, 0xff, 0xa8, 0xfb, 0x93, 0xfd, + 0xf6, 0xfd, 0x10, 0xfc, 0x80, 0xfb, 0xdd, 0xf4, 0xa1, 0xf0, 0x28, 0xee, 0xaa, 0xea, 0x04, 0xec, + 0xca, 0xe7, 0x28, 0xe9, 0x63, 0xed, 0x26, 0xf1, 0x71, 0xf6, 0xdd, 0xf7, 0x87, 0xfb, 0xa9, 0xfd, + 0x8d, 0xff, 0x31, 0x04, 0xe7, 0x03, 0xf8, 0x02, 0x63, 0x02, 0x93, 0x02, 0x93, 0x04, 0x9e, 0x02, + 0x24, 0x00, 0x6a, 0xfe, 0x03, 0xfd, 0x55, 0xfb, 0xf6, 0xf6, 0xc6, 0xf6, 0x51, 0xf4, 0x5d, 0xf5, + 0x4e, 0xf9, 0x8b, 0xfb, 0x4e, 0xff, 0x0a, 0xfe, 0x8d, 0xfb, 0x27, 0xf9, 0x3f, 0xf6, 0x1e, 0xfa, + 0xdc, 0xf8, 0x2b, 0xf9, 0x5a, 0xfe, 0x0a, 0x02, 0x4d, 0x08, 0xa6, 0x0b, 0x72, 0x10, 0x03, 0x14, + 0x8e, 0x14, 0x4a, 0x16, 0x05, 0x15, 0x5f, 0x14, 0x69, 0x13, 0x3a, 0x12, 0xbe, 0x10, 0x07, 0x0b, + 0xec, 0x05, 0x5c, 0x01, 0xee, 0xfd, 0xf2, 0xfa, 0x56, 0xf4, 0x08, 0xf1, 0x20, 0xee, 0x1f, 0xee, + 0x89, 0xf1, 0x65, 0xf1, 0x06, 0xf3, 0xcd, 0xf1, 0xae, 0xee, 0x90, 0xee, 0x2f, 0xeb, 0x6e, 0xec, + 0x2c, 0xeb, 0x02, 0xe9, 0xce, 0xec, 0x34, 0xf0, 0x1e, 0xf8, 0x2c, 0xfc, 0x68, 0x00, 0x56, 0x06, + 0xa2, 0x08, 0x62, 0x0e, 0xbd, 0x11, 0x52, 0x12, 0xdc, 0x12, 0x6b, 0x12, 0x67, 0x16, 0x07, 0x17, + 0xe7, 0x13, 0x6e, 0x11, 0xc0, 0x0d, 0x3b, 0x0c, 0xd4, 0x08, 0x43, 0x06, 0x87, 0x03, 0x37, 0x00, + 0x00, 0x04, 0x1b, 0x05, 0x12, 0x07, 0xa8, 0x07, 0x76, 0x02, 0xbc, 0xff, 0x40, 0xfa, 0x76, 0xf8, + 0x34, 0xf9, 0x3a, 0xf6, 0x87, 0xf8, 0x56, 0xf9, 0xaa, 0xfc, 0x6d, 0xff, 0x0d, 0x00, 0xcc, 0x03, + 0x98, 0x02, 0x0f, 0x03, 0x03, 0x04, 0x52, 0x01, 0x72, 0x01, 0x3a, 0xff, 0x9a, 0xfe, 0xf6, 0xfc, + 0xf5, 0xf8, 0x4c, 0xf7, 0xc2, 0xf5, 0x61, 0xf5, 0xdf, 0xf2, 0xe6, 0xed, 0x58, 0xec, 0x86, 0xe9, + 0x68, 0xec, 0xf3, 0xf0, 0xe8, 0xf3, 0xe9, 0xf6, 0x05, 0xf6, 0x12, 0xf6, 0xc9, 0xf5, 0x1e, 0xf5, + 0x30, 0xf8, 0x52, 0xf6, 0xf3, 0xf7, 0xbe, 0xfb, 0x71, 0x02, 0x51, 0x09, 0x5b, 0x0c, 0xc0, 0x11, + 0x31, 0x14, 0x98, 0x17, 0xc8, 0x1d, 0x6f, 0x1e, 0x46, 0x1e, 0x5a, 0x1c, 0xc4, 0x1c, 0xc3, 0x1d, + 0x69, 0x1a, 0x41, 0x16, 0x46, 0x11, 0x39, 0x0f, 0x19, 0x0c, 0x18, 0x06, 0xd7, 0x02, 0xf3, 0xfc, + 0x47, 0xfc, 0xf2, 0xfd, 0x2c, 0xfe, 0x28, 0xff, 0x74, 0xfb, 0x1c, 0xf5, 0xcc, 0xef, 0xa8, 0xea, + 0xac, 0xeb, 0x20, 0xe9, 0xcc, 0xe8, 0xed, 0xe9, 0x85, 0xec, 0x8c, 0xf1, 0x99, 0xf3, 0xe8, 0xf8, + 0x4d, 0xfc, 0x21, 0xfe, 0x0f, 0x02, 0xab, 0x01, 0xd6, 0x02, 0x6a, 0x01, 0x13, 0x01, 0xc0, 0x02, + 0x08, 0x00, 0x02, 0xff, 0x07, 0xfe, 0x74, 0xfd, 0x6d, 0xfe, 0x43, 0xfa, 0xb4, 0xf9, 0x96, 0xf7, + 0x1d, 0xf8, 0x78, 0xfd, 0xb0, 0x00, 0x14, 0x04, 0xe0, 0x05, 0x04, 0x04, 0x3e, 0x03, 0x35, 0x00, + 0x62, 0x02, 0x65, 0x01, 0x85, 0xff, 0xbc, 0x00, 0xab, 0x02, 0xfa, 0x08, 0xc7, 0x0b, 0x8e, 0x0d, + 0xc3, 0x11, 0x16, 0x13, 0x50, 0x17, 0xf0, 0x16, 0x11, 0x15, 0xc7, 0x12, 0xf9, 0x0f, 0x20, 0x12, + 0xe7, 0x0f, 0xa5, 0x0b, 0x93, 0x05, 0xdb, 0xfd, 0x5e, 0xfb, 0x91, 0xf4, 0x48, 0xef, 0x2d, 0xea, + 0x1d, 0xe5, 0xc9, 0xe7, 0xf9, 0xe9, 0x8f, 0xeb, 0x09, 0xed, 0x74, 0xe8, 0x9d, 0xe6, 0xab, 0xe2, + 0x5e, 0xe3, 0x54, 0xe6, 0x88, 0xe5, 0x22, 0xe7, 0x02, 0xe9, 0xeb, 0xed, 0x78, 0xf3, 0xad, 0xf8, + 0x5f, 0x00, 0xb9, 0x04, 0x57, 0x09, 0xce, 0x0c, 0x29, 0x0f, 0x61, 0x10, 0x76, 0x0f, 0xf7, 0x11, + 0xb2, 0x11, 0xd5, 0x10, 0x7c, 0x11, 0x95, 0x0e, 0x09, 0x0f, 0x37, 0x0c, 0xf2, 0x08, 0x2d, 0x07, + 0xdf, 0x03, 0xd6, 0x05, 0x01, 0x09, 0x23, 0x0b, 0x10, 0x0d, 0xff, 0x09, 0xcf, 0x08, 0xd5, 0x05, + 0x6b, 0x02, 0x73, 0x02, 0xb6, 0xfe, 0x57, 0xfd, 0x41, 0xfe, 0xc3, 0x00, 0x3b, 0x05, 0x43, 0x06, + 0x77, 0x08, 0xa0, 0x08, 0x0e, 0x0a, 0x79, 0x0b, 0xf0, 0x09, 0x7d, 0x08, 0x23, 0x05, 0x52, 0x05, + 0x01, 0x05, 0x5d, 0x02, 0xc8, 0xfe, 0x0e, 0xf8, 0xb1, 0xf6, 0xb7, 0xf3, 0x94, 0xef, 0x58, 0xed, + 0xb1, 0xe6, 0xe1, 0xe5, 0x75, 0xe8, 0xc8, 0xe9, 0xcb, 0xed, 0x15, 0xed, 0x22, 0xec, 0xb1, 0xea, + 0x45, 0xe8, 0xec, 0xeb, 0x83, 0xec, 0x76, 0xed, 0xeb, 0xef, 0xb3, 0xf3, 0x99, 0xfa, 0xcc, 0x00, + 0xd8, 0x08, 0x39, 0x0e, 0x6b, 0x11, 0x9e, 0x15, 0x47, 0x17, 0x46, 0x1a, 0xca, 0x19, 0x3b, 0x19, + 0x83, 0x1a, 0x9d, 0x18, 0x0c, 0x18, 0xa5, 0x13, 0xc5, 0x11, 0x18, 0x11, 0x5b, 0x0b, 0xa1, 0x08, + 0xf2, 0x02, 0x78, 0x00, 0xa2, 0x02, 0xb4, 0x02, 0x21, 0x05, 0xa5, 0x04, 0x70, 0x00, 0xfe, 0xfd, + 0x72, 0xf6, 0x3c, 0xf4, 0x2f, 0xf2, 0x9f, 0xee, 0xe9, 0xed, 0xd9, 0xed, 0xa5, 0xf2, 0x87, 0xf5, + 0x61, 0xf7, 0x26, 0xfc, 0x50, 0xfe, 0xf6, 0x02, 0x91, 0x05, 0x75, 0x06, 0xe8, 0x05, 0xfb, 0x04, + 0x36, 0x07, 0xaa, 0x06, 0x4f, 0x05, 0xbf, 0x01, 0x7e, 0xfe, 0x62, 0xff, 0xe5, 0xfb, 0xad, 0xfa, + 0x82, 0xf6, 0x78, 0xf2, 0x1c, 0xf6, 0xd4, 0xf8, 0xa7, 0xfd, 0xd0, 0x01, 0x17, 0x00, 0x2f, 0xff, + 0x42, 0xfb, 0x12, 0xfb, 0x2d, 0xfd, 0xa8, 0xfd, 0xd4, 0xfe, 0x58, 0xfe, 0xab, 0x01, 0xf9, 0x06, + 0x5a, 0x0a, 0x57, 0x10, 0x89, 0x12, 0xfa, 0x14, 0xc4, 0x16, 0xf0, 0x16, 0xfc, 0x16, 0x76, 0x14, + 0x3d, 0x13, 0xd6, 0x10, 0x72, 0x0f, 0x10, 0x0d, 0xd3, 0x07, 0xf3, 0x05, 0x9d, 0xff, 0xe9, 0xf9, + 0x3f, 0xf4, 0x22, 0xee, 0xa1, 0xed, 0xce, 0xee, 0x1d, 0xf1, 0x7b, 0xf3, 0x8e, 0xf0, 0xc9, 0xef, + 0xd7, 0xea, 0xf4, 0xe7, 0xf9, 0xe8, 0x1e, 0xe8, 0x12, 0xe8, 0x49, 0xe8, 0x47, 0xeb, 0x9c, 0xef, + 0x7a, 0xf0, 0xed, 0xf5, 0x9c, 0xfa, 0x17, 0x01, 0x5e, 0x07, 0xb3, 0x0a, 0xdd, 0x0c, 0x34, 0x0d, + 0xec, 0x0f, 0xb2, 0x10, 0x83, 0x10, 0xa0, 0x11, 0xdb, 0x0c, 0xc3, 0x0d, 0xe5, 0x0b, 0x1b, 0x09, + 0x61, 0x07, 0x6f, 0x01, 0x35, 0x01, 0x41, 0x02, 0x65, 0x05, 0xff, 0x08, 0xa5, 0x06, 0x69, 0x06, + 0x0e, 0x03, 0xbd, 0xff, 0x9c, 0x00, 0x11, 0xfe, 0xae, 0xfd, 0x10, 0xfb, 0xf1, 0xf8, 0x31, 0xfd, + 0xc2, 0xfe, 0x5f, 0x05, 0xbf, 0x08, 0x8a, 0x09, 0x0c, 0x0b, 0x1e, 0x09, 0x0c, 0x0a, 0x10, 0x07, + 0x25, 0x04, 0xd8, 0x04, 0x1a, 0x03, 0xe2, 0x03, 0x6b, 0x00, 0x41, 0xfe, 0x49, 0xfb, 0x13, 0xf6, + 0x73, 0xf3, 0x5e, 0xef, 0xbe, 0xed, 0x98, 0xef, 0x69, 0xf1, 0xcd, 0xf5, 0xc1, 0xf5, 0xbd, 0xf7, + 0x6f, 0xf7, 0x7b, 0xf3, 0x94, 0xf4, 0x0b, 0xf4, 0x92, 0xf4, 0x19, 0xf6, 0x9c, 0xf4, 0x61, 0xf8, + 0x87, 0xfa, 0x44, 0xff, 0x5f, 0x05, 0x7c, 0x08, 0xc2, 0x0d, 0x92, 0x0e, 0xc8, 0x0f, 0x42, 0x11, + 0xf4, 0x0f, 0xa1, 0x12, 0x64, 0x12, 0xf6, 0x12, 0x17, 0x0f, 0x3a, 0x0b, 0x76, 0x09, 0xa3, 0x04, + 0xbc, 0x00, 0x13, 0xfa, 0x2d, 0xf6, 0xce, 0xf5, 0xfc, 0xf5, 0xe8, 0xfa, 0xc3, 0xfb, 0x2c, 0xfb, + 0x8d, 0xfa, 0xf0, 0xf4, 0x3e, 0xf3, 0xe4, 0xf1, 0xca, 0xf0, 0x42, 0xf0, 0xa1, 0xeb, 0xbd, 0xed, + 0xdd, 0xf0, 0xb9, 0xf4, 0x2f, 0xfb, 0x24, 0xfc, 0xe2, 0xfe, 0x19, 0x00, 0xe0, 0x01, 0xec, 0x04, + 0x24, 0x03, 0xdd, 0x04, 0x58, 0x04, 0x03, 0x05, 0x09, 0x05, 0x98, 0x01, 0xc4, 0x01, 0x8a, 0xfe, + 0x94, 0xfd, 0x69, 0xfb, 0x9b, 0xf8, 0x22, 0xfb, 0x40, 0xfc, 0xd7, 0x00, 0xfe, 0x05, 0x72, 0x07, + 0x30, 0x0b, 0x54, 0x09, 0x03, 0x07, 0x96, 0x06, 0xe7, 0x05, 0x0f, 0x08, 0xa1, 0x06, 0xd4, 0x07, + 0x5e, 0x0b, 0x7a, 0x0c, 0xf3, 0x11, 0xcd, 0x13, 0xce, 0x17, 0x65, 0x1a, 0xd9, 0x18, 0xdc, 0x1a, + 0xf7, 0x17, 0x5c, 0x17, 0x46, 0x16, 0xf1, 0x13, 0x1d, 0x13, 0x00, 0x0c, 0x14, 0x0a, 0x46, 0x05, + 0x5b, 0xfd, 0x60, 0xf7, 0x3b, 0xee, 0x75, 0xe9, 0x14, 0xe7, 0x95, 0xe7, 0x69, 0xeb, 0xe4, 0xea, + 0x29, 0xec, 0x6f, 0xe9, 0x64, 0xe5, 0xa3, 0xe4, 0x7f, 0xe3, 0xe3, 0xe4, 0x2e, 0xe3, 0xff, 0xe2, + 0xb0, 0xe6, 0x4f, 0xe9, 0xce, 0xf0, 0x3f, 0xf4, 0xb2, 0xf6, 0xd3, 0xfb, 0xf3, 0xfd, 0x8c, 0x02, + 0x41, 0x04, 0x37, 0x05, 0x87, 0x07, 0x32, 0x08, 0x2c, 0x0c, 0xad, 0x0a, 0xbe, 0x0b, 0x14, 0x0c, + 0xb4, 0x08, 0x26, 0x07, 0xf2, 0x03, 0x56, 0x03, 0x58, 0x04, 0xe0, 0x05, 0xc4, 0x0b, 0x56, 0x0d, + 0x5f, 0x0f, 0xb9, 0x0e, 0x12, 0x0b, 0x62, 0x09, 0xc2, 0x06, 0x0d, 0x07, 0x15, 0x06, 0x91, 0x02, + 0x7f, 0x03, 0xe0, 0x02, 0x57, 0x06, 0x9d, 0x09, 0x4a, 0x0c, 0x65, 0x0f, 0xbe, 0x0d, 0x32, 0x0e, + 0xb2, 0x0b, 0xaa, 0x08, 0x2b, 0x08, 0x2f, 0x05, 0x74, 0x06, 0x7c, 0x02, 0xfa, 0xff, 0xad, 0xfe, + 0x09, 0xf8, 0xb2, 0xf3, 0xe7, 0xed, 0xff, 0xe8, 0x8b, 0xe9, 0xd5, 0xe9, 0x53, 0xef, 0x28, 0xf1, + 0x41, 0xf2, 0x10, 0xf2, 0x0f, 0xee, 0xab, 0xed, 0xc9, 0xec, 0x88, 0xee, 0x8e, 0xf0, 0x4e, 0xee, + 0x99, 0xf0, 0x31, 0xf3, 0x20, 0xf9, 0x51, 0x00, 0x01, 0x04, 0xa5, 0x09, 0x7c, 0x0b, 0x00, 0x0f, + 0x1c, 0x12, 0x2b, 0x10, 0x73, 0x12, 0x4b, 0x11, 0x8f, 0x14, 0x75, 0x14, 0x4c, 0x11, 0x63, 0x11, + 0x0f, 0x0d, 0xdc, 0x09, 0xfc, 0x05, 0x2c, 0x01, 0x62, 0x01, 0x3a, 0xff, 0xcd, 0x02, 0x00, 0x06, + 0x12, 0x06, 0xaa, 0x07, 0x88, 0x04, 0x3b, 0x00, 0x73, 0xfc, 0xaa, 0xf8, 0xf6, 0xf7, 0xc1, 0xf2, + 0xb1, 0xf0, 0x71, 0xef, 0x93, 0xef, 0x2f, 0xf4, 0x94, 0xf7, 0x7d, 0xfb, 0x94, 0xfc, 0x33, 0xfd, + 0x43, 0xff, 0xd9, 0xfd, 0x40, 0x00, 0x3a, 0x00, 0x32, 0x01, 0x66, 0x01, 0x61, 0xfd, 0x23, 0xfc, + 0xf9, 0xf8, 0x0c, 0xf5, 0x54, 0xf2, 0xea, 0xed, 0x57, 0xef, 0xe0, 0xef, 0x3e, 0xf4, 0x0d, 0xfa, + 0x53, 0xfb, 0x80, 0xfe, 0x46, 0xff, 0x61, 0xfe, 0x99, 0xff, 0xc9, 0xff, 0x1c, 0x02, 0x0a, 0x01, + 0x72, 0x00, 0x34, 0x03, 0xb1, 0x06, 0x93, 0x0d, 0xf4, 0x10, 0xd8, 0x13, 0xfe, 0x16, 0x56, 0x18, + 0x80, 0x1b, 0x49, 0x1a, 0xe8, 0x19, 0x4d, 0x18, 0x16, 0x18, 0xec, 0x18, 0xb6, 0x14, 0xad, 0x12, + 0xdb, 0x0e, 0x0d, 0x09, 0xdf, 0x04, 0x72, 0xfd, 0xc5, 0xf9, 0x9d, 0xf5, 0xe9, 0xf2, 0x7e, 0xf5, + 0xbf, 0xf4, 0x95, 0xf6, 0xba, 0xf6, 0xa8, 0xf2, 0x61, 0xf0, 0xa7, 0xec, 0xef, 0xec, 0x67, 0xeb, + 0x63, 0xe9, 0x5a, 0xe9, 0x1f, 0xe9, 0x57, 0xee, 0x7e, 0xf2, 0x38, 0xf6, 0x74, 0xfa, 0xb3, 0xfa, + 0x9f, 0xfd, 0xad, 0xfe, 0xbe, 0x00, 0xbc, 0x02, 0x24, 0x03, 0xc3, 0x06, 0xff, 0x04, 0x0a, 0x05, + 0xe8, 0x05, 0x86, 0x02, 0x27, 0x01, 0xff, 0xfb, 0xb0, 0xf9, 0xb5, 0xf9, 0xee, 0xf9, 0x1d, 0x00, + 0x14, 0x03, 0x7d, 0x05, 0x53, 0x07, 0x1f, 0x05, 0x77, 0x05, 0xf2, 0x03, 0x1b, 0x05, 0x49, 0x06, + 0xa5, 0x02, 0x5c, 0x03, 0x44, 0x03, 0x4f, 0x06, 0xc4, 0x0a, 0xb2, 0x0b, 0xa8, 0x0e, 0xdf, 0x0e, + 0xdd, 0x0f, 0xf3, 0x0f, 0x54, 0x0d, 0x39, 0x0b, 0x87, 0x07, 0x9c, 0x07, 0x2b, 0x05, 0x0e, 0x02, + 0x79, 0x00, 0xe8, 0xfb, 0x55, 0xf9, 0x67, 0xf4, 0xab, 0xef, 0xf9, 0xee, 0x79, 0xec, 0x34, 0xf0, + 0x8c, 0xf4, 0x20, 0xf7, 0xa7, 0xfa, 0xd4, 0xf8, 0x15, 0xf7, 0x86, 0xf3, 0x98, 0xf2, 0x23, 0xf5, + 0x75, 0xf3, 0xbd, 0xf4, 0x56, 0xf5, 0x91, 0xf7, 0x34, 0xfe, 0x14, 0x03, 0xe0, 0x08, 0xa5, 0x0b, + 0x00, 0x0e, 0x52, 0x11, 0x04, 0x12, 0xb1, 0x13, 0xa3, 0x12, 0x8d, 0x14, 0x16, 0x15, 0x38, 0x13, + 0x48, 0x12, 0x5f, 0x0e, 0x9b, 0x0a, 0xcf, 0x05, 0x5b, 0x00, 0x83, 0xfe, 0x01, 0xfb, 0x3c, 0xfc, + 0x43, 0xfe, 0x77, 0xfe, 0x26, 0x00, 0x3b, 0xfe, 0xed, 0xfc, 0x04, 0xfb, 0x3f, 0xf8, 0x45, 0xf9, + 0x9a, 0xf4, 0xa8, 0xf1, 0xb7, 0xef, 0x2a, 0xef, 0xc0, 0xf3, 0xac, 0xf5, 0x22, 0xf8, 0x62, 0xfa, + 0xa2, 0xfb, 0x9d, 0xfd, 0x4d, 0xfc, 0xfd, 0xfc, 0xd1, 0xfb, 0x20, 0xfd, 0xc8, 0xff, 0x97, 0xfe, + 0x0c, 0xfe, 0x45, 0xfb, 0xce, 0xf7, 0x47, 0xf5, 0x90, 0xf0, 0x5b, 0xf0, 0x7e, 0xee, 0xd2, 0xf0, + 0x21, 0xf6, 0x6e, 0xf8, 0x28, 0xfd, 0x71, 0xff, 0x03, 0x00, 0xef, 0xff, 0xae, 0xfd, 0xdc, 0x01, + 0xc8, 0x02, 0x35, 0x02, 0x05, 0x03, 0xbc, 0x02, 0xaf, 0x08, 0x32, 0x0e, 0x7c, 0x12, 0xe0, 0x16, + 0x08, 0x17, 0x4b, 0x1a, 0xee, 0x1a, 0x79, 0x1c, 0xf1, 0x1b, 0x1b, 0x1a, 0x50, 0x1b, 0x60, 0x19, + 0x91, 0x16, 0xb0, 0x13, 0x9d, 0x0e, 0xc6, 0x09, 0xdc, 0x01, 0xdc, 0xfc, 0xd8, 0xf7, 0x64, 0xf4, + 0xec, 0xf4, 0xe1, 0xf2, 0xa4, 0xf2, 0xf5, 0xf1, 0xda, 0xee, 0xe1, 0xee, 0x0a, 0xeb, 0xe7, 0xea, + 0x10, 0xea, 0x60, 0xe6, 0x6c, 0xe6, 0x73, 0xe6, 0xcc, 0xea, 0x09, 0xf0, 0x12, 0xf3, 0x10, 0xf8, + 0xcd, 0xf8, 0xb3, 0xfb, 0x29, 0xfd, 0x46, 0xfe, 0xb5, 0xff, 0x74, 0x00, 0x14, 0x04, 0xed, 0x05, + 0xe8, 0x05, 0x5d, 0x06, 0x83, 0x04, 0xae, 0x03, 0xc5, 0x00, 0x5c, 0xff, 0x95, 0xfe, 0x21, 0xfd, + 0x28, 0x00, 0x0c, 0x04, 0xb6, 0x07, 0x4f, 0x0b, 0x88, 0x0b, 0x58, 0x0b, 0x08, 0x07, 0xd0, 0x05, + 0x60, 0x07, 0x96, 0x05, 0xdd, 0x04, 0xb4, 0x01, 0xf2, 0x02, 0xe8, 0x07, 0xb4, 0x09, 0xb5, 0x0d, + 0xe1, 0x0d, 0x94, 0x0f, 0xdf, 0x10, 0x21, 0x11, 0xb5, 0x11, 0xc5, 0x0e, 0x07, 0x0d, 0xfa, 0x0a, + 0x69, 0x07, 0xf1, 0x04, 0x30, 0x00, 0x85, 0xfc, 0xda, 0xf6, 0x79, 0xf1, 0x2f, 0xef, 0x42, 0xeb, + 0x93, 0xeb, 0xc1, 0xed, 0xfc, 0xee, 0x81, 0xf1, 0x75, 0xf1, 0x24, 0xf3, 0x6e, 0xf1, 0x93, 0xef, + 0x0e, 0xf1, 0xb6, 0xee, 0xdc, 0xee, 0xc9, 0xef, 0xe3, 0xf1, 0x79, 0xf8, 0x3e, 0xfc, 0xaa, 0x02, + 0x94, 0x06, 0x0e, 0x09, 0x11, 0x0d, 0x43, 0x0e, 0x9c, 0x11, 0xc6, 0x11, 0x79, 0x13, 0x42, 0x17, + 0xf5, 0x16, 0x42, 0x17, 0xee, 0x14, 0x51, 0x12, 0x0c, 0x0f, 0xb8, 0x09, 0x1a, 0x08, 0x47, 0x05, + 0xaf, 0x03, 0x16, 0x05, 0x87, 0x05, 0x0a, 0x08, 0x79, 0x07, 0xe8, 0x05, 0x37, 0x03, 0x70, 0xfe, + 0xb2, 0xfe, 0x2f, 0xfc, 0x2c, 0xf9, 0xd9, 0xf5, 0xe9, 0xf0, 0xf8, 0xf2, 0x9a, 0xf4, 0xb7, 0xf6, + 0xc1, 0xf8, 0x6c, 0xf8, 0xc7, 0xfa, 0xd1, 0xfa, 0x5d, 0xfc, 0x46, 0xfb, 0x7f, 0xf9, 0xf0, 0xfb, + 0xf9, 0xfb, 0x12, 0xfc, 0x33, 0xfb, 0x32, 0xf8, 0xa7, 0xf4, 0xc8, 0xee, 0x33, 0xec, 0x94, 0xe9, + 0x3e, 0xe8, 0x71, 0xeb, 0xa6, 0xed, 0xb3, 0xf0, 0xf9, 0xf2, 0x2a, 0xf5, 0x1d, 0xf8, 0x73, 0xf7, + 0xea, 0xf9, 0xf0, 0xfb, 0x29, 0xfc, 0xfc, 0xfd, 0x1e, 0xfe, 0xfe, 0x01, 0xb9, 0x06, 0x2c, 0x0b, + 0xd0, 0x10, 0xac, 0x12, 0xea, 0x15, 0x43, 0x16, 0x72, 0x18, 0x79, 0x19, 0x39, 0x18, 0x91, 0x1a, + 0xa2, 0x1a, 0xd6, 0x19, 0x52, 0x17, 0xc8, 0x12, 0x35, 0x10, 0x24, 0x0b, 0x3f, 0x07, 0x1c, 0x04, + 0xf8, 0xff, 0xf4, 0xfe, 0x3b, 0xfe, 0xbd, 0xfe, 0x9e, 0xfe, 0x17, 0xfc, 0x42, 0xfb, 0x21, 0xf6, + 0xcf, 0xf3, 0xc8, 0xf3, 0x3a, 0xf1, 0x3f, 0xef, 0xe6, 0xeb, 0x21, 0xec, 0x01, 0xf0, 0x4b, 0xf3, + 0x8a, 0xf8, 0x65, 0xf9, 0x28, 0xfc, 0xb5, 0xfd, 0xde, 0xfe, 0x1b, 0x00, 0x45, 0xfe, 0xf2, 0xff, + 0xac, 0x01, 0x3f, 0x01, 0xbc, 0x01, 0xfc, 0xfe, 0x40, 0xfe, 0xda, 0xfa, 0x06, 0xf8, 0x6c, 0xf7, + 0xf0, 0xf4, 0xc8, 0xf5, 0xca, 0xf7, 0xf2, 0xf9, 0xaa, 0xfd, 0x8b, 0xfe, 0x23, 0x02, 0x14, 0x03, + 0xab, 0x01, 0xa4, 0x02, 0x2e, 0x01, 0x44, 0x01, 0xea, 0x00, 0x9f, 0x00, 0xc1, 0x04, 0x7a, 0x07, + 0x44, 0x0c, 0xb1, 0x0d, 0xf7, 0x0f, 0xf9, 0x10, 0x35, 0x10, 0xc8, 0x11, 0x97, 0x10, 0x4d, 0x10, + 0x14, 0x11, 0x88, 0x0e, 0xef, 0x0b, 0x19, 0x06, 0xae, 0x02, 0x00, 0xfe, 0x42, 0xf8, 0x8c, 0xf6, + 0x65, 0xf2, 0x1e, 0xf0, 0x15, 0xf1, 0x3d, 0xf1, 0x49, 0xf4, 0x24, 0xf5, 0xe5, 0xf6, 0xc5, 0xf6, + 0x21, 0xf4, 0x01, 0xf5, 0xfd, 0xf3, 0xd7, 0xf1, 0x29, 0xf1, 0xa1, 0xef, 0xd6, 0xf3, 0x9c, 0xf7, + 0x3e, 0xfd, 0xaf, 0x01, 0x90, 0x04, 0x62, 0x09, 0x18, 0x0c, 0xef, 0x0f, 0x12, 0x11, 0x66, 0x11, + 0xab, 0x14, 0x2f, 0x15, 0x43, 0x16, 0xf5, 0x13, 0x44, 0x12, 0x60, 0x0f, 0xf5, 0x08, 0xb4, 0x05, + 0x0b, 0x02, 0x10, 0xff, 0x12, 0xff, 0x2e, 0xfe, 0xe1, 0xff, 0x76, 0x00, 0xb9, 0x00, 0x1f, 0x02, + 0x71, 0xff, 0x1a, 0xfe, 0xa7, 0xfc, 0xaf, 0xfa, 0x6c, 0xfa, 0x08, 0xf7, 0xf4, 0xf6, 0x09, 0xf7, + 0x67, 0xf8, 0xe9, 0xfa, 0x00, 0xfb, 0x6c, 0xfc, 0x10, 0xfc, 0x75, 0xfd, 0xb5, 0xfd, 0xe3, 0xfb, + 0x8e, 0xfe, 0x53, 0xfe, 0xd7, 0xfe, 0xae, 0xfd, 0x30, 0xfb, 0x05, 0xfb, 0x63, 0xf7, 0xdd, 0xf4, + 0xd9, 0xf1, 0x36, 0xed, 0x92, 0xed, 0x71, 0xee, 0x16, 0xf2, 0x5a, 0xf5, 0xe6, 0xf6, 0x10, 0xfa, + 0x7a, 0xf9, 0xf0, 0xf9, 0x2f, 0xfc, 0x1a, 0xfb, 0x3b, 0xfc, 0xb6, 0xfa, 0x43, 0xfc, 0xbb, 0x00, + 0xab, 0x04, 0x72, 0x0a, 0x3b, 0x0d, 0x7b, 0x11, 0xc3, 0x13, 0xf8, 0x15, 0x6b, 0x18, 0x7a, 0x17, + 0xfa, 0x18, 0x09, 0x19, 0x66, 0x19, 0x46, 0x18, 0xaf, 0x13, 0x01, 0x11, 0x64, 0x0b, 0x03, 0x06, + 0x99, 0x02, 0xbc, 0xfd, 0x0c, 0xfb, 0x82, 0xf8, 0x79, 0xf7, 0x21, 0xf7, 0xbf, 0xf4, 0x7c, 0xf5, + 0xbf, 0xf3, 0x1f, 0xf0, 0x0f, 0xef, 0x4e, 0xec, 0x19, 0xec, 0xf4, 0xea, 0x0f, 0xea, 0x10, 0xec, + 0xe0, 0xed, 0x67, 0xf3, 0xe8, 0xf6, 0x44, 0xfa, 0x00, 0xfd, 0x45, 0xfe, 0x76, 0x00, 0xed, 0xff, + 0x72, 0x01, 0x60, 0x04, 0x0f, 0x06, 0x63, 0x07, 0xf9, 0x04, 0x2e, 0x05, 0x7d, 0x03, 0x60, 0x00, + 0xbf, 0xff, 0x41, 0xfd, 0x8c, 0xfc, 0xe7, 0xfc, 0x7c, 0xfe, 0x56, 0x02, 0xee, 0x02, 0xbf, 0x05, + 0xbb, 0x07, 0x57, 0x06, 0x53, 0x07, 0x81, 0x05, 0x4e, 0x04, 0xdc, 0x02, 0xd6, 0xff, 0x20, 0x02, + 0x56, 0x04, 0x9a, 0x08, 0x7b, 0x0a, 0x2a, 0x0c, 0x8e, 0x0e, 0xd0, 0x0e, 0x8f, 0x10, 0xe1, 0x0f, + 0xca, 0x0e, 0xda, 0x0f, 0x31, 0x0f, 0x84, 0x0e, 0x94, 0x09, 0x68, 0x05, 0x51, 0x00, 0x44, 0xf9, + 0xca, 0xf5, 0xc5, 0xf0, 0x9b, 0xed, 0xd0, 0xeb, 0xd9, 0xe9, 0x7a, 0xeb, 0x08, 0xeb, 0x7d, 0xed, + 0x0d, 0xf1, 0xa8, 0xf0, 0xe3, 0xf1, 0x22, 0xf2, 0x68, 0xf1, 0xa1, 0xf2, 0x9a, 0xf0, 0x2a, 0xf2, + 0xaf, 0xf3, 0xd2, 0xf7, 0xd6, 0xfc, 0x8d, 0xff, 0xb7, 0x03, 0xa8, 0x05, 0xe7, 0x08, 0x3f, 0x0c, + 0x29, 0x0d, 0x23, 0x11, 0x47, 0x13, 0xfd, 0x15, 0x42, 0x15, 0x49, 0x14, 0x77, 0x14, 0x46, 0x11, + 0x21, 0x0f, 0x3b, 0x0c, 0xae, 0x08, 0x5d, 0x07, 0x81, 0x05, 0x9b, 0x07, 0x04, 0x09, 0x4b, 0x09, + 0x52, 0x0b, 0xaf, 0x09, 0x7f, 0x08, 0x14, 0x07, 0x1a, 0x03, 0x90, 0x01, 0x33, 0xfd, 0x5c, 0xfc, + 0x72, 0xfc, 0x2f, 0xfd, 0x20, 0xff, 0x85, 0xfe, 0xad, 0xfe, 0xde, 0xfe, 0x90, 0xfe, 0x0b, 0xff, + 0x33, 0xfd, 0x37, 0xfe, 0x0a, 0xfe, 0x6e, 0xfe, 0x08, 0xfd, 0x8f, 0xf9, 0x75, 0xf8, 0xae, 0xf4, + 0x91, 0xf2, 0x47, 0xf1, 0xb8, 0xed, 0x97, 0xeb, 0x69, 0xe8, 0xb7, 0xe8, 0x8e, 0xea, 0xb5, 0xec, + 0x72, 0xf1, 0xa5, 0xf3, 0x27, 0xf4, 0xae, 0xf5, 0x70, 0xf5, 0xc2, 0xf7, 0xbf, 0xf7, 0x46, 0xf8, + 0xfe, 0xfa, 0x6d, 0xfd, 0x10, 0x03, 0xa5, 0x06, 0x0d, 0x0a, 0x24, 0x0d, 0x30, 0x0e, 0x60, 0x11, + 0xd8, 0x11, 0x0f, 0x14, 0x7d, 0x15, 0x3b, 0x16, 0xe8, 0x16, 0xed, 0x13, 0x5d, 0x12, 0x7e, 0x0f, + 0x44, 0x0b, 0xca, 0x08, 0xff, 0x03, 0x3b, 0x01, 0x8b, 0xfe, 0x3a, 0xfe, 0x30, 0xff, 0x5f, 0xfd, + 0x0b, 0xfe, 0xc8, 0xfc, 0x7a, 0xf9, 0x64, 0xf8, 0x4a, 0xf4, 0x1e, 0xf2, 0x16, 0xf0, 0x23, 0xee, + 0xcc, 0xee, 0x2a, 0xef, 0xe7, 0xf2, 0x6f, 0xf5, 0x8b, 0xf7, 0xf7, 0xfb, 0xf8, 0xfd, 0xc3, 0x01, + 0x8b, 0x02, 0xa4, 0x02, 0xec, 0x03, 0x8b, 0x04, 0xc7, 0x06, 0x8d, 0x04, 0xa1, 0x02, 0x1c, 0x01, + 0x4b, 0xfd, 0x7e, 0xfc, 0x3b, 0xfa, 0x8d, 0xf8, 0xb3, 0xf6, 0x69, 0xf5, 0x65, 0xf7, 0x97, 0xf8, + 0xf6, 0xfb, 0x4f, 0x00, 0xe0, 0x00, 0x15, 0x02, 0x83, 0x01, 0x9d, 0x01, 0xb2, 0x02, 0x26, 0x01, + 0x3c, 0x01, 0x33, 0x01, 0x83, 0x04, 0xa7, 0x08, 0x96, 0x0a, 0x7f, 0x0d, 0x70, 0x0d, 0x28, 0x0f, + 0x1f, 0x10, 0xeb, 0x0e, 0x13, 0x11, 0x39, 0x11, 0xd8, 0x11, 0xda, 0x0f, 0xcc, 0x0b, 0xa7, 0x08, + 0x69, 0x02, 0x30, 0xfe, 0xd6, 0xf8, 0x8d, 0xf3, 0xd6, 0xf0, 0x93, 0xee, 0xde, 0xef, 0xb6, 0xef, + 0x1c, 0xf0, 0xcf, 0xf2, 0x3a, 0xf3, 0x85, 0xf4, 0xc6, 0xf4, 0xb1, 0xf3, 0x2a, 0xf4, 0x87, 0xf2, + 0x67, 0xf2, 0xd9, 0xf2, 0x3f, 0xf5, 0x82, 0xf9, 0xa2, 0xfc, 0x40, 0x01, 0x8c, 0x04, 0x4b, 0x08, + 0x1f, 0x0c, 0xce, 0x0c, 0xe4, 0x0f, 0x20, 0x12, 0x16, 0x15, 0x6a, 0x15, 0x71, 0x12, 0x9b, 0x11, + 0xd3, 0x0d, 0x61, 0x0b, 0xbf, 0x09, 0x96, 0x06, 0x57, 0x04, 0xc1, 0xff, 0xad, 0xfe, 0x9c, 0xfe, + 0xf4, 0xfe, 0xad, 0x02, 0x95, 0x03, 0x72, 0x03, 0xe8, 0x02, 0xe9, 0x00, 0x29, 0x01, 0xe1, 0xfe, + 0xbf, 0xfd, 0x39, 0xfd, 0x33, 0xfe, 0x87, 0x01, 0x08, 0x03, 0xde, 0x03, 0xac, 0x03, 0x29, 0x02, + 0xb7, 0x02, 0xd2, 0x00, 0x1d, 0x02, 0xe1, 0x02, 0xd8, 0x03, 0xfb, 0x04, 0x8e, 0x01, 0xe2, 0x00, + 0x1a, 0xfe, 0x15, 0xfb, 0x0c, 0xfa, 0x74, 0xf6, 0xb1, 0xf5, 0xee, 0xf1, 0x00, 0xf0, 0xe5, 0xf0, + 0xe8, 0xef, 0x14, 0xf2, 0xd1, 0xf4, 0xb5, 0xf5, 0xad, 0xf7, 0xf0, 0xf6, 0xe2, 0xf7, 0x38, 0xf7, + 0x0d, 0xf7, 0xcc, 0xf8, 0xfe, 0xfa, 0x5c, 0xff, 0x77, 0x03, 0x83, 0x07, 0x99, 0x0b, 0x73, 0x0d, + 0x1a, 0x11, 0xcb, 0x11, 0xbd, 0x12, 0x43, 0x14, 0x5c, 0x15, 0xae, 0x17, 0xe6, 0x14, 0x85, 0x12, + 0xe0, 0x0f, 0xdd, 0x0a, 0x03, 0x09, 0xdb, 0x04, 0x80, 0x01, 0x98, 0xfc, 0x79, 0xf7, 0x0c, 0xf6, + 0xb2, 0xf4, 0xa6, 0xf5, 0x81, 0xf7, 0xbe, 0xf5, 0xe5, 0xf4, 0x00, 0xf2, 0x3a, 0xf0, 0xf7, 0xee, + 0xfa, 0xec, 0x06, 0xec, 0xef, 0xeb, 0x4f, 0xee, 0x35, 0xf1, 0x06, 0xf3, 0x1f, 0xf6, 0xc0, 0xf6, + 0x04, 0xfa, 0x9e, 0xfc, 0xd7, 0xfe, 0x6b, 0x01, 0x16, 0x03, 0x2c, 0x06, 0x96, 0x05, 0x74, 0x04, + 0x8d, 0x04, 0x35, 0x02, 0x7a, 0x02, 0xd6, 0x00, 0x4e, 0xff, 0xe5, 0xfd, 0x39, 0xfc, 0x58, 0xfe, + 0x40, 0xff, 0x1a, 0x01, 0x5e, 0x05, 0x28, 0x07, 0xac, 0x09, 0x92, 0x08, 0xaa, 0x07, 0x19, 0x07, + 0x7f, 0x05, 0x12, 0x05, 0xd3, 0x03, 0x65, 0x04, 0xcb, 0x06, 0x7f, 0x08, 0x2f, 0x0b, 0xda, 0x0b, + 0x33, 0x0e, 0x26, 0x0f, 0xc2, 0x0d, 0x0c, 0x0e, 0xcc, 0x0d, 0xe1, 0x0e, 0xaf, 0x0d, 0xe0, 0x09, + 0x9e, 0x07, 0xc0, 0x01, 0x93, 0xfe, 0x68, 0xfa, 0x19, 0xf5, 0xca, 0xf0, 0x96, 0xe9, 0x29, 0xe7, + 0x88, 0xe6, 0x69, 0xe6, 0x7c, 0xea, 0x94, 0xeb, 0xeb, 0xec, 0x65, 0xed, 0x5f, 0xed, 0x85, 0xef, + 0x5c, 0xef, 0x55, 0xef, 0x8e, 0xef, 0x4c, 0xf0, 0x3f, 0xf4, 0xb1, 0xf6, 0x9f, 0xfa, 0x16, 0xfd, + 0x8d, 0xff, 0x16, 0x04, 0x69, 0x06, 0xc0, 0x09, 0x5f, 0x0c, 0x18, 0x10, 0xe8, 0x12, 0xc4, 0x11, + 0x04, 0x13, 0xd3, 0x11, 0x1a, 0x11, 0x84, 0x10, 0x87, 0x0d, 0x73, 0x0d, 0x4c, 0x0a, 0x9d, 0x08, + 0x07, 0x09, 0xd1, 0x07, 0x7e, 0x0a, 0x98, 0x0b, 0x23, 0x0c, 0x56, 0x0c, 0x2f, 0x0a, 0x45, 0x09, + 0xe8, 0x06, 0x00, 0x05, 0xd3, 0x02, 0x78, 0x01, 0xc2, 0x02, 0x9b, 0x03, 0xb5, 0x05, 0x0f, 0x07, + 0x9c, 0x06, 0x39, 0x07, 0x3d, 0x05, 0x7a, 0x03, 0x44, 0x02, 0x25, 0x02, 0xf8, 0x03, 0x67, 0x01, + 0x92, 0xff, 0x92, 0xfc, 0x97, 0xf8, 0xe4, 0xf6, 0xdc, 0xf3, 0xe1, 0xf2, 0x10, 0xef, 0x21, 0xeb, + 0xbf, 0xea, 0xef, 0xe9, 0xca, 0xec, 0xac, 0xef, 0x65, 0xf0, 0x83, 0xf2, 0x97, 0xf2, 0x99, 0xf4, + 0x59, 0xf5, 0x71, 0xf5, 0xc2, 0xf6, 0xb0, 0xf6, 0x56, 0xfa, 0x52, 0xfe, 0x3c, 0x02, 0xc4, 0x06, + 0x10, 0x08, 0xae, 0x0b, 0x0d, 0x0e, 0xf5, 0x0f, 0x01, 0x12, 0xc9, 0x12, 0x3b, 0x16, 0x2b, 0x16, + 0x60, 0x14, 0x29, 0x13, 0x5b, 0x0f, 0x3a, 0x0e, 0x24, 0x0b, 0xa4, 0x08, 0xfd, 0x04, 0xe9, 0xff, + 0x8d, 0xfe, 0xdf, 0xfb, 0xe0, 0xfb, 0x06, 0xfe, 0x8a, 0xfd, 0x5b, 0xfe, 0xe5, 0xfa, 0x73, 0xf7, + 0x2e, 0xf4, 0x7f, 0xf0, 0x64, 0xee, 0x23, 0xec, 0x31, 0xec, 0x8c, 0xee, 0x6c, 0xf0, 0x43, 0xf4, + 0x68, 0xf5, 0xaf, 0xf7, 0x16, 0xfa, 0x5b, 0xfb, 0x0e, 0xfe, 0x45, 0xff, 0x50, 0x02, 0x48, 0x03, + 0xb7, 0x00, 0x5f, 0xff, 0x8e, 0xfb, 0xaa, 0xf9, 0xc6, 0xf8, 0x73, 0xf8, 0x2d, 0xf7, 0xb7, 0xf2, + 0x5b, 0xf1, 0x00, 0xf2, 0x09, 0xf3, 0xdd, 0xf7, 0x9d, 0xfa, 0x39, 0xfe, 0xad, 0xff, 0xe1, 0x00, + 0x5c, 0x03, 0x71, 0x03, 0x9c, 0x04, 0x55, 0x05, 0x39, 0x06, 0x77, 0x0a, 0x07, 0x0d, 0xeb, 0x10, + 0x28, 0x12, 0x14, 0x13, 0xb8, 0x15, 0x60, 0x16, 0x79, 0x17, 0xb3, 0x17, 0x7c, 0x18, 0x29, 0x19, + 0xc1, 0x16, 0x32, 0x15, 0xe2, 0x10, 0x39, 0x0d, 0xc7, 0x09, 0xe5, 0x03, 0xb4, 0xff, 0xa8, 0xf8, + 0xdc, 0xf2, 0x25, 0xef, 0x9c, 0xeb, 0x07, 0xed, 0x87, 0xed, 0xae, 0xee, 0xf6, 0xed, 0xee, 0xeb, + 0xa9, 0xeb, 0xd6, 0xea, 0xc6, 0xeb, 0x19, 0xec, 0x94, 0xeb, 0xc3, 0xee, 0x2f, 0xf1, 0x9a, 0xf5, + 0xad, 0xf8, 0xaf, 0xfa, 0x44, 0xff, 0x17, 0x02, 0x88, 0x04, 0x77, 0x06, 0x4e, 0x09, 0x3d, 0x0e, + 0xe0, 0x0d, 0x01, 0x0e, 0x9a, 0x0c, 0xf1, 0x0a, 0xdb, 0x0a, 0x34, 0x09, 0x66, 0x08, 0x76, 0x04, + 0xa7, 0xff, 0x75, 0xfe, 0x32, 0xfc, 0x17, 0xff, 0x58, 0x01, 0xbf, 0x02, 0x18, 0x04, 0x8d, 0x03, + 0x3a, 0x04, 0xc9, 0x03, 0x8d, 0x03, 0x58, 0x03, 0xeb, 0x00, 0xea, 0x02, 0xe5, 0x04, 0xe4, 0x06, + 0x68, 0x08, 0x6b, 0x07, 0x1d, 0x09, 0x1b, 0x09, 0xb4, 0x08, 0x16, 0x08, 0x29, 0x06, 0xf6, 0x07, + 0xbe, 0x06, 0xbf, 0x05, 0x4c, 0x04, 0x33, 0x01, 0x91, 0xff, 0x52, 0xfc, 0xf5, 0xfa, 0xd8, 0xf8, + 0xbf, 0xf4, 0x61, 0xf4, 0x9c, 0xf2, 0x5a, 0xf3, 0x29, 0xf6, 0x93, 0xf7, 0x3d, 0xf9, 0x90, 0xf7, + 0x3d, 0xf7, 0x38, 0xf7, 0x9b, 0xf6, 0xfc, 0xf7, 0x52, 0xf7, 0x12, 0xf9, 0x1a, 0xfc, 0x53, 0xff, + 0x6d, 0x04, 0xdb, 0x06, 0x4b, 0x0a, 0x59, 0x0d, 0xbc, 0x0e, 0xd9, 0x10, 0x19, 0x11, 0xe1, 0x13, + 0x39, 0x15, 0x24, 0x14, 0x2b, 0x13, 0xbd, 0x0f, 0xde, 0x0d, 0xa7, 0x0b, 0x70, 0x09, 0x22, 0x07, + 0xad, 0x00, 0xc4, 0xfc, 0x44, 0xf9, 0x23, 0xf8, 0xcf, 0xf9, 0x61, 0xf9, 0xa4, 0xfa, 0x78, 0xf9, + 0x98, 0xf8, 0xc5, 0xf7, 0x76, 0xf4, 0x1c, 0xf2, 0xcf, 0xee, 0x03, 0xed, 0x38, 0xed, 0xfc, 0xed, + 0xd4, 0xf0, 0x09, 0xf1, 0xe7, 0xf1, 0x50, 0xf4, 0xe8, 0xf5, 0x03, 0xf9, 0x02, 0xfa, 0x92, 0xfd, + 0xb7, 0x00, 0x60, 0x01, 0x45, 0x02, 0x29, 0x00, 0x85, 0xfe, 0x5f, 0xfd, 0x38, 0xfc, 0xea, 0xfb, + 0x92, 0xf8, 0xe2, 0xf6, 0xcf, 0xf5, 0x37, 0xf5, 0x07, 0xf9, 0xcd, 0xfb, 0xcc, 0xff, 0xee, 0x00, + 0xd5, 0x00, 0x12, 0x02, 0x85, 0x01, 0xc7, 0x02, 0x91, 0x02, 0x93, 0x01, 0x0a, 0x04, 0xe7, 0x05, + 0x58, 0x0a, 0xca, 0x0c, 0x14, 0x0e, 0x3e, 0x11, 0x68, 0x12, 0x81, 0x14, 0xe1, 0x14, 0x38, 0x16, + 0xc3, 0x18, 0x0e, 0x17, 0x9b, 0x15, 0x29, 0x12, 0x8f, 0x0e, 0x09, 0x0c, 0x79, 0x08, 0xfc, 0x05, + 0x14, 0xff, 0x0d, 0xf7, 0x62, 0xf2, 0xee, 0xec, 0xcd, 0xec, 0x95, 0xec, 0x45, 0xed, 0xf1, 0xed, + 0x66, 0xed, 0x97, 0xed, 0x4e, 0xec, 0x6d, 0xec, 0x20, 0xed, 0x4e, 0xeb, 0x5e, 0xed, 0xcb, 0xee, + 0x3f, 0xf2, 0x9f, 0xf5, 0xae, 0xf5, 0x33, 0xf8, 0xfd, 0xf9, 0x1b, 0xfd, 0x5f, 0xff, 0xe2, 0x00, + 0xd1, 0x05, 0xfa, 0x07, 0x74, 0x09, 0xa2, 0x09, 0x3f, 0x09, 0x7d, 0x09, 0xa9, 0x08, 0xd9, 0x08, + 0x59, 0x07, 0x1b, 0x04, 0x96, 0x03, 0x29, 0x01, 0x25, 0x02, 0x55, 0x04, 0xa3, 0x06, 0xe4, 0x08, + 0xff, 0x07, 0xf4, 0x07, 0x47, 0x07, 0x82, 0x06, 0xde, 0x06, 0xd7, 0x04, 0xcf, 0x04, 0x35, 0x05, + 0xad, 0x06, 0x4b, 0x09, 0x71, 0x09, 0x97, 0x0b, 0x47, 0x0d, 0x76, 0x0d, 0x0f, 0x0d, 0x7e, 0x0a, + 0xd8, 0x0a, 0x43, 0x09, 0xdd, 0x06, 0x97, 0x03, 0x82, 0xff, 0x56, 0xfd, 0xad, 0xfa, 0xa5, 0xf8, + 0x1b, 0xf6, 0xf5, 0xef, 0xce, 0xec, 0x6d, 0xe9, 0xae, 0xe9, 0xa5, 0xeb, 0x49, 0xee, 0xde, 0xf1, + 0x5b, 0xf2, 0x10, 0xf3, 0x4b, 0xf4, 0xdc, 0xf3, 0x32, 0xf6, 0x27, 0xf6, 0xb2, 0xf8, 0x74, 0xfb, + 0x26, 0xfe, 0x6d, 0x03, 0x25, 0x05, 0x26, 0x08, 0xe1, 0x0b, 0x8f, 0x0e, 0x59, 0x12, 0x4a, 0x13, + 0x0f, 0x17, 0x1f, 0x19, 0x33, 0x1a, 0xa5, 0x1a, 0x4c, 0x18, 0x05, 0x17, 0x98, 0x14, 0x23, 0x12, + 0xae, 0x10, 0x83, 0x0a, 0xf4, 0x06, 0xb8, 0x01, 0xe9, 0xfd, 0xa0, 0xfd, 0xd6, 0xfd, 0x77, 0xff, + 0x11, 0xfe, 0x64, 0xfc, 0x39, 0xfb, 0x00, 0xf8, 0x02, 0xf8, 0x91, 0xf4, 0xe0, 0xf0, 0xee, 0xef, + 0xed, 0xee, 0x6f, 0xf1, 0xbd, 0xf2, 0x29, 0xf4, 0x9d, 0xf6, 0x86, 0xf7, 0xfa, 0xf9, 0x3a, 0xf9, + 0x9d, 0xfb, 0xfb, 0xfe, 0x56, 0xff, 0x8e, 0xff, 0xf5, 0xfd, 0x0a, 0xfd, 0xc6, 0xfb, 0x1b, 0xf9, + 0x79, 0xf8, 0x71, 0xf3, 0x3a, 0xef, 0xcc, 0xec, 0xcc, 0xea, 0x84, 0xec, 0x4e, 0xee, 0x44, 0xf1, + 0x6b, 0xf4, 0x1a, 0xf6, 0x70, 0xf9, 0x45, 0xfa, 0x87, 0xfc, 0x7a, 0xfe, 0x8d, 0xfe, 0x13, 0x01, + 0xd3, 0x02, 0x9e, 0x06, 0x40, 0x0a, 0x7a, 0x0b, 0xdf, 0x0e, 0x32, 0x11, 0x03, 0x15, 0xb0, 0x16, + 0x6a, 0x17, 0x1a, 0x1a, 0xc3, 0x1a, 0x0c, 0x1c, 0x7d, 0x1a, 0x38, 0x18, 0x5d, 0x16, 0x38, 0x13, + 0x6c, 0x12, 0xc9, 0x0d, 0xdc, 0x07, 0x97, 0x02, 0x01, 0xfc, 0x44, 0xf9, 0x12, 0xf7, 0xad, 0xf6, + 0x99, 0xf6, 0xdb, 0xf3, 0xc9, 0xf2, 0x64, 0xf1, 0x6a, 0xf0, 0x13, 0xf0, 0xba, 0xee, 0x79, 0xee, + 0xe3, 0xee, 0xdb, 0xf1, 0xab, 0xf6, 0xd0, 0xf8, 0x9b, 0xfb, 0x74, 0xfd, 0xc6, 0xff, 0x5e, 0x00, + 0xbb, 0x00, 0x36, 0x03, 0x28, 0x04, 0x26, 0x06, 0xf0, 0x05, 0x1b, 0x05, 0x43, 0x06, 0x29, 0x05, + 0x3e, 0x05, 0x18, 0x03, 0x26, 0xfe, 0x5c, 0xfb, 0x12, 0xf7, 0x79, 0xf6, 0x17, 0xf7, 0xd7, 0xf8, + 0x23, 0xfc, 0xab, 0xfc, 0x62, 0xfe, 0xf4, 0xfe, 0x12, 0xff, 0xc2, 0xff, 0xa8, 0xfe, 0xe3, 0xff, + 0x92, 0x00, 0x47, 0x01, 0xe6, 0x03, 0xb4, 0x03, 0x9d, 0x05, 0x15, 0x07, 0xb6, 0x08, 0x8d, 0x0b, + 0xa5, 0x0a, 0xdc, 0x0b, 0x8f, 0x0b, 0xc7, 0x0a, 0xe8, 0x09, 0x06, 0x06, 0x34, 0x04, 0x12, 0x01, + 0x49, 0x00, 0x67, 0xff, 0x0c, 0xfa, 0x35, 0xf7, 0xd8, 0xf1, 0x59, 0xef, 0x6b, 0xef, 0xfd, 0xef, + 0x98, 0xf3, 0xb6, 0xf3, 0x57, 0xf3, 0x06, 0xf4, 0x45, 0xf3, 0xb9, 0xf4, 0xdd, 0xf3, 0xef, 0xf2, + 0xcf, 0xf3, 0x7b, 0xf5, 0x4d, 0xfa, 0x3c, 0xfe, 0xd1, 0x01, 0xfa, 0x05, 0x2b, 0x09, 0xbf, 0x0d, + 0x1a, 0x0f, 0x3a, 0x12, 0x2a, 0x16, 0x52, 0x18, 0xfc, 0x19, 0xf6, 0x18, 0x9c, 0x19, 0x60, 0x18, + 0x59, 0x15, 0xea, 0x14, 0x6b, 0x0f, 0x08, 0x0b, 0x94, 0x06, 0x20, 0x02, 0xcd, 0x00, 0x18, 0x00, + 0x69, 0x01, 0x78, 0x01, 0x60, 0x00, 0x9b, 0x00, 0x67, 0xfe, 0xd6, 0xfd, 0x56, 0xfc, 0xb0, 0xf9, + 0x52, 0xf7, 0x1e, 0xf4, 0x31, 0xf4, 0x82, 0xf4, 0x7b, 0xf3, 0xb6, 0xf4, 0x6f, 0xf5, 0xd8, 0xf8, + 0x11, 0xfa, 0x0d, 0xfb, 0x46, 0xfc, 0x4f, 0xfd, 0x18, 0x00, 0x27, 0x00, 0x8b, 0x00, 0x97, 0x00, + 0x7a, 0xfe, 0x9e, 0xff, 0x91, 0xfc, 0x14, 0xf9, 0x7b, 0xf4, 0xb1, 0xf0, 0xbe, 0xf0, 0x99, 0xf0, + 0x48, 0xf3, 0x2c, 0xf6, 0xe6, 0xf5, 0x98, 0xf7, 0x4f, 0xf7, 0x14, 0xf9, 0x09, 0xfa, 0xda, 0xf9, + 0xbb, 0xfa, 0x76, 0xfa, 0xed, 0xfc, 0xfa, 0x00, 0x58, 0x03, 0x58, 0x06, 0x13, 0x08, 0x5d, 0x0b, + 0xb9, 0x0c, 0x2d, 0x0e, 0xac, 0x10, 0xda, 0x10, 0xbc, 0x11, 0x94, 0x10, 0x18, 0x0f, 0xca, 0x0e, + 0xff, 0x0a, 0x4b, 0x0a, 0x40, 0x06, 0x2b, 0x01, 0xd9, 0xfc, 0xb1, 0xf6, 0x67, 0xf3, 0x2e, 0xf0, + 0x2f, 0xef, 0x48, 0xf0, 0x75, 0xee, 0xf3, 0xef, 0xdd, 0xef, 0xa8, 0xef, 0xc2, 0xf0, 0xde, 0xef, + 0xdb, 0xf0, 0x52, 0xf1, 0x71, 0xf2, 0x2a, 0xf6, 0x23, 0xf8, 0xfa, 0xfb, 0xef, 0xfd, 0x4f, 0x01, + 0x3f, 0x05, 0x7d, 0x05, 0x9e, 0x07, 0x5d, 0x09, 0x4f, 0x0c, 0x03, 0x0e, 0x65, 0x0d, 0x81, 0x0f, + 0xad, 0x0d, 0x66, 0x0e, 0xe0, 0x0e, 0x9e, 0x0b, 0xed, 0x08, 0x1d, 0x04, 0x6e, 0x01, 0xa4, 0xff, + 0x68, 0xff, 0x16, 0x03, 0x1e, 0x03, 0x07, 0x04, 0x14, 0x04, 0x25, 0x03, 0xd0, 0x03, 0x43, 0x03, + 0x4e, 0x02, 0x2a, 0x01, 0xde, 0x00, 0xd2, 0x03, 0x7b, 0x05, 0xb9, 0x07, 0x1d, 0x09, 0x0a, 0x0a, + 0x7f, 0x0c, 0xf7, 0x0b, 0xd3, 0x0b, 0x72, 0x0c, 0xf5, 0x0b, 0x89, 0x0a, 0xe2, 0x05, 0x4d, 0x04, + 0xa2, 0x00, 0x3f, 0xfd, 0xa9, 0xfb, 0xd5, 0xf6, 0x77, 0xf2, 0x1a, 0xed, 0x17, 0xe9, 0x38, 0xe7, + 0x08, 0xe6, 0x4b, 0xe9, 0x11, 0xeb, 0x1e, 0xed, 0xe4, 0xef, 0x4a, 0xf0, 0xa6, 0xf2, 0xa1, 0xf3, + 0xf0, 0xf3, 0xc4, 0xf4, 0x1c, 0xf5, 0x04, 0xf8, 0xdd, 0xfa, 0x4c, 0xfe, 0xf3, 0x01, 0x2e, 0x05, + 0x8d, 0x0a, 0xc0, 0x0d, 0x01, 0x10, 0xdf, 0x12, 0x55, 0x14, 0x5c, 0x17, 0x22, 0x17, 0x40, 0x18, + 0x4f, 0x18, 0xe3, 0x16, 0x48, 0x18, 0x4f, 0x15, 0x00, 0x12, 0xe4, 0x0c, 0x85, 0x07, 0x2c, 0x05, + 0xeb, 0x02, 0x21, 0x04, 0x30, 0x04, 0x03, 0x03, 0x31, 0x02, 0x82, 0xff, 0x26, 0xff, 0x8e, 0xfd, + 0xd7, 0xfb, 0xc7, 0xfa, 0xdc, 0xf7, 0x44, 0xf7, 0x04, 0xf8, 0x1a, 0xf8, 0x0e, 0xf9, 0x9a, 0xf8, + 0x4d, 0xfb, 0x80, 0xfc, 0x37, 0xfc, 0x8b, 0xfd, 0xc0, 0xfc, 0xd5, 0xfd, 0xda, 0xfc, 0x16, 0xfd, + 0x9f, 0xfe, 0xc3, 0xfc, 0xd4, 0xfd, 0x68, 0xfb, 0x3c, 0xf8, 0x83, 0xf4, 0x96, 0xee, 0xc7, 0xeb, + 0xb6, 0xe9, 0xdf, 0xea, 0xd9, 0xed, 0x65, 0xef, 0xe8, 0xf2, 0x8c, 0xf3, 0x35, 0xf5, 0xbe, 0xf7, + 0x7b, 0xf8, 0x11, 0xfa, 0x63, 0xfb, 0xf7, 0xfc, 0x8b, 0xff, 0x91, 0x01, 0xb6, 0x05, 0x1d, 0x08, + 0xc9, 0x0b, 0x5b, 0x10, 0xdc, 0x11, 0xef, 0x13, 0x2b, 0x15, 0x62, 0x17, 0x91, 0x18, 0x90, 0x17, + 0xd4, 0x18, 0x27, 0x16, 0x02, 0x15, 0x92, 0x13, 0xa9, 0x0f, 0xd8, 0x0a, 0x21, 0x04, 0x66, 0xff, + 0xca, 0xfa, 0x46, 0xf7, 0xa2, 0xf6, 0x72, 0xf3, 0xa5, 0xf1, 0x61, 0xef, 0x8a, 0xed, 0xfb, 0xec, + 0x40, 0xec, 0x61, 0xec, 0xa9, 0xea, 0x7c, 0xe9, 0xef, 0xeb, 0x46, 0xee, 0xfb, 0xf2, 0x32, 0xf6, + 0x19, 0xfa, 0xaf, 0xfe, 0xcb, 0x00, 0x25, 0x03, 0xfe, 0x03, 0xc1, 0x05, 0x2f, 0x08, 0x49, 0x08, + 0x28, 0x0b, 0xe3, 0x0a, 0x49, 0x0b, 0xeb, 0x0a, 0x84, 0x08, 0x84, 0x06, 0x0f, 0x02, 0x06, 0xff, + 0xcf, 0xfc, 0xb4, 0xfa, 0x0e, 0xfd, 0xb6, 0xfd, 0xcd, 0xff, 0x0c, 0x01, 0x7d, 0x00, 0x40, 0x02, + 0x3c, 0x02, 0xc8, 0x01, 0x0c, 0x01, 0x78, 0xff, 0xd8, 0xff, 0x16, 0x00, 0x22, 0x03, 0xab, 0x04, + 0xff, 0x05, 0xab, 0x09, 0xd8, 0x0a, 0xed, 0x0b, 0xea, 0x0c, 0xfc, 0x0c, 0xbf, 0x0e, 0x87, 0x0c, + 0xf4, 0x0c, 0xce, 0x0a, 0x45, 0x07, 0x3c, 0x06, 0x80, 0x02, 0x10, 0xff, 0x1a, 0xfa, 0x0a, 0xf5, + 0x5c, 0xf2, 0xcc, 0xee, 0x92, 0xef, 0x98, 0xef, 0x43, 0xf0, 0xed, 0xf1, 0x30, 0xf1, 0xb5, 0xf2, + 0x82, 0xf3, 0xc1, 0xf3, 0xcd, 0xf3, 0x4d, 0xf2, 0xdc, 0xf3, 0xc0, 0xf5, 0x56, 0xf9, 0x94, 0xfd, + 0xf6, 0xff, 0x88, 0x04, 0x64, 0x08, 0x9d, 0x0a, 0x38, 0x0d, 0xf7, 0x0d, 0x05, 0x11, 0xe3, 0x10, + 0x3b, 0x12, 0xd4, 0x13, 0x12, 0x13, 0x36, 0x14, 0x3f, 0x12, 0xaa, 0x0f, 0xaa, 0x0c, 0xfc, 0x06, + 0x4d, 0x03, 0xe5, 0xfe, 0x2d, 0xfe, 0x24, 0xff, 0x5f, 0xff, 0xa4, 0x00, 0x8e, 0xff, 0xd8, 0xfe, + 0xf4, 0xfe, 0xe2, 0xfd, 0x3c, 0xfd, 0x49, 0xfb, 0x33, 0xfa, 0xa9, 0xf9, 0x63, 0xf9, 0x89, 0xf9, + 0x82, 0xf8, 0x17, 0xf9, 0x17, 0xfb, 0x6f, 0xfb, 0x53, 0xfc, 0x5f, 0xfc, 0x5a, 0xfe, 0xbf, 0xfe, + 0xe7, 0xfe, 0xdf, 0x00, 0x51, 0x00, 0xd7, 0x01, 0x70, 0x02, 0x20, 0x01, 0xd6, 0xff, 0xa5, 0xfa, + 0x4c, 0xf7, 0x3d, 0xf3, 0x78, 0xf1, 0x7d, 0xf2, 0x43, 0xf2, 0x2c, 0xf5, 0x42, 0xf6, 0x1e, 0xf7, + 0xef, 0xf8, 0xb7, 0xf9, 0xe7, 0xfb, 0x07, 0xfb, 0x34, 0xfb, 0x0f, 0xfd, 0x73, 0xff, 0xab, 0x03, + 0x7d, 0x06, 0xbe, 0x09, 0x25, 0x0d, 0x29, 0x0f, 0x23, 0x11, 0xe6, 0x0f, 0x4a, 0x11, 0x61, 0x12, + 0xa5, 0x11, 0xa9, 0x13, 0xd4, 0x11, 0xf1, 0x10, 0xcb, 0x0e, 0xc6, 0x0a, 0xc8, 0x07, 0x43, 0x01, + 0x7b, 0xfc, 0x80, 0xf7, 0x77, 0xf3, 0xab, 0xf3, 0xfa, 0xf1, 0x18, 0xf2, 0x48, 0xf0, 0x8d, 0xed, + 0xaf, 0xed, 0xa2, 0xec, 0x7c, 0xed, 0xf6, 0xec, 0xae, 0xeb, 0x98, 0xeb, 0xa3, 0xeb, 0x7b, 0xee, + 0xf7, 0xf0, 0xe7, 0xf3, 0x54, 0xf9, 0xad, 0xfc, 0x2f, 0x00, 0x22, 0x02, 0x78, 0x03, 0xb0, 0x05, + 0x95, 0x05, 0x49, 0x08, 0x03, 0x09, 0x03, 0x0a, 0xf0, 0x0b, 0xaf, 0x0a, 0x5f, 0x0a, 0x80, 0x07, + 0xee, 0x03, 0x35, 0x02, 0xee, 0xff, 0xbc, 0x01, 0xd1, 0x01, 0x16, 0x03, 0x7a, 0x05, 0x68, 0x04, + 0x6c, 0x05, 0x0c, 0x06, 0x96, 0x06, 0xd4, 0x06, 0x1b, 0x05, 0xf1, 0x04, 0xef, 0x04, 0x27, 0x07, + 0x0b, 0x0a, 0x10, 0x0b, 0x93, 0x0d, 0x37, 0x0f, 0x81, 0x0f, 0x6c, 0x0e, 0x04, 0x0c, 0x21, 0x0c, + 0x72, 0x09, 0xfa, 0x08, 0xe0, 0x07, 0x9d, 0x04, 0x71, 0x02, 0xb4, 0xfd, 0xa0, 0xf9, 0xa9, 0xf4, + 0xde, 0xee, 0xbb, 0xea, 0xf5, 0xe4, 0xd0, 0xe3, 0x72, 0xe3, 0x0d, 0xe4, 0x0c, 0xe7, 0xb2, 0xe7, + 0xf5, 0xe9, 0x81, 0xec, 0x69, 0xee, 0xb3, 0xf0, 0x47, 0xf0, 0x5b, 0xf1, 0x0e, 0xf2, 0xd9, 0xf4, + 0xfd, 0xf8, 0xd8, 0xfb, 0xc7, 0x00, 0x8b, 0x05, 0x58, 0x09, 0xfe, 0x0c, 0x98, 0x0e, 0xce, 0x12, + 0xbe, 0x14, 0x84, 0x17, 0x0c, 0x1a, 0xa7, 0x1a, 0x3b, 0x1c, 0xad, 0x1b, 0xd8, 0x1a, 0xc1, 0x18, + 0x17, 0x14, 0x3d, 0x11, 0xbc, 0x0b, 0xfb, 0x08, 0xe4, 0x06, 0x34, 0x05, 0x60, 0x06, 0x1e, 0x05, + 0x7a, 0x04, 0xf0, 0x03, 0xa1, 0x02, 0xe1, 0x02, 0xde, 0xff, 0x04, 0xfe, 0xa0, 0xfc, 0xa8, 0xfc, + 0x8c, 0xfe, 0x55, 0xfe, 0x9b, 0xfe, 0xcc, 0xff, 0xd0, 0xfe, 0x04, 0xff, 0x88, 0xfc, 0x1f, 0xfd, + 0xa6, 0xfd, 0xde, 0xfd, 0xff, 0xff, 0xf1, 0xfe, 0xfb, 0xfe, 0xe5, 0xfd, 0x2f, 0xfb, 0x52, 0xfa, + 0x8c, 0xf6, 0x6b, 0xf3, 0xaf, 0xee, 0x46, 0xeb, 0xe5, 0xea, 0xc8, 0xe9, 0x11, 0xec, 0x7c, 0xed, + 0xff, 0xed, 0x4a, 0xf1, 0x07, 0xf3, 0x2b, 0xf6, 0xc4, 0xf6, 0x19, 0xf7, 0xc0, 0xf7, 0x42, 0xf8, + 0x96, 0xfb, 0xb1, 0xfe, 0xf2, 0x01, 0xa2, 0x07, 0xb4, 0x0a, 0xad, 0x0e, 0x50, 0x10, 0x7a, 0x12, + 0xa8, 0x14, 0xc0, 0x14, 0x0d, 0x17, 0xc2, 0x17, 0x36, 0x18, 0x15, 0x19, 0x0f, 0x17, 0xf5, 0x14, + 0x41, 0x10, 0x08, 0x0b, 0x67, 0x05, 0x80, 0xff, 0x41, 0xfd, 0xcb, 0xfa, 0xf4, 0xf9, 0x78, 0xf9, + 0xca, 0xf5, 0xd2, 0xf3, 0xbb, 0xf0, 0xf1, 0xef, 0xe6, 0xee, 0xd5, 0xec, 0x3a, 0xec, 0x90, 0xeb, + 0xe3, 0xec, 0xdc, 0xee, 0x85, 0xf0, 0x68, 0xf4, 0x79, 0xf7, 0x89, 0xfb, 0x00, 0xfd, 0xb9, 0xfd, + 0xfa, 0xff, 0xa8, 0x00, 0xa4, 0x02, 0x93, 0x03, 0xca, 0x03, 0x49, 0x05, 0x6f, 0x04, 0x4e, 0x04, + 0xf5, 0x02, 0x86, 0x00, 0x92, 0xfd, 0xf9, 0xf9, 0xcd, 0xf9, 0x65, 0xf9, 0x05, 0xfb, 0xaf, 0xfd, + 0x4d, 0xfe, 0x99, 0x00, 0x9f, 0x01, 0x99, 0x03, 0x39, 0x05, 0xb4, 0x04, 0xc4, 0x04, 0xbc, 0x03, + 0x35, 0x05, 0x7f, 0x07, 0x9e, 0x08, 0xcf, 0x0b, 0x94, 0x0d, 0xe2, 0x0f, 0xf4, 0x10, 0x64, 0x10, + 0x10, 0x11, 0x9f, 0x0f, 0x31, 0x10, 0xb4, 0x10, 0x9f, 0x0f, 0x4b, 0x0f, 0xf1, 0x0b, 0x76, 0x08, + 0x12, 0x04, 0x30, 0xfe, 0x4f, 0xf9, 0x69, 0xf2, 0x8f, 0xee, 0xce, 0xeb, 0x09, 0xe9, 0xc2, 0xe9, + 0xc7, 0xe8, 0xf5, 0xe8, 0xd4, 0xe9, 0x9c, 0xea, 0x5c, 0xed, 0x4f, 0xed, 0x64, 0xed, 0x65, 0xed, + 0xaf, 0xed, 0xcc, 0xf0, 0x09, 0xf3, 0x27, 0xf7, 0x57, 0xfb, 0x0e, 0xff, 0x12, 0x03, 0xef, 0x02, + 0xfc, 0x04, 0x1a, 0x07, 0xcd, 0x09, 0x0d, 0x0e, 0x0e, 0x0f, 0xfd, 0x10, 0xfd, 0x10, 0xd3, 0x0f, + 0x90, 0x0f, 0xb9, 0x0c, 0x2a, 0x0a, 0x57, 0x06, 0x40, 0x03, 0x51, 0x02, 0x08, 0x01, 0x74, 0x02, + 0xbf, 0x02, 0x0e, 0x03, 0xbd, 0x04, 0xe1, 0x04, 0xfe, 0x06, 0x9e, 0x06, 0xa7, 0x04, 0x4c, 0x02, + 0x27, 0x00, 0x22, 0x01, 0x4f, 0x01, 0x4c, 0x02, 0x46, 0x04, 0x59, 0x04, 0x23, 0x05, 0x2d, 0x03, + 0xfa, 0x02, 0xa0, 0x02, 0x03, 0x02, 0xbd, 0x03, 0xe2, 0x03, 0x4d, 0x04, 0x44, 0x04, 0x8a, 0x02, + 0x82, 0x01, 0xe7, 0xfe, 0x2f, 0xfd, 0x53, 0xf9, 0xba, 0xf5, 0xb7, 0xf4, 0xe0, 0xf2, 0x57, 0xf3, + 0x7c, 0xf4, 0x3d, 0xf4, 0x25, 0xf5, 0x69, 0xf5, 0xf6, 0xf7, 0x5c, 0xf9, 0x2a, 0xfa, 0xf3, 0xfa, + 0x25, 0xfb, 0xa9, 0xfd, 0x43, 0x00, 0xc8, 0x02, 0xf4, 0x06, 0xbd, 0x09, 0xad, 0x0d, 0xc0, 0x0d, + 0xa6, 0x0d, 0x19, 0x0e, 0x34, 0x0e, 0x21, 0x10, 0x2a, 0x10, 0x96, 0x0f, 0x67, 0x0f, 0x65, 0x0d, + 0x55, 0x0c, 0x4a, 0x09, 0x34, 0x06, 0xa9, 0x01, 0x42, 0xfb, 0xa3, 0xf7, 0xaa, 0xf4, 0xb4, 0xf3, + 0x56, 0xf4, 0x31, 0xf3, 0xee, 0xf3, 0x49, 0xf2, 0x06, 0xf2, 0x1e, 0xf2, 0x6e, 0xf0, 0xfd, 0xee, + 0xcb, 0xec, 0x7f, 0xed, 0xc3, 0xef, 0x17, 0xf1, 0xc6, 0xf4, 0x91, 0xf6, 0x99, 0xfa, 0x38, 0xfd, + 0x46, 0xfe, 0x33, 0x01, 0x9a, 0x02, 0x2a, 0x05, 0x66, 0x07, 0xea, 0x07, 0x05, 0x0a, 0xcf, 0x08, + 0xb5, 0x08, 0xb9, 0x07, 0xea, 0x05, 0x76, 0x04, 0x1c, 0x00, 0xea, 0xfd, 0x2e, 0xfc, 0x91, 0xfa, + 0xa0, 0xfc, 0x4b, 0xfc, 0x3d, 0xfe, 0xb1, 0xff, 0xb6, 0x00, 0x76, 0x03, 0xbe, 0x03, 0x7b, 0x04, + 0x75, 0x04, 0x6c, 0x04, 0x36, 0x07, 0x18, 0x08, 0x67, 0x0b, 0x0a, 0x0e, 0x1b, 0x11, 0x44, 0x13, + 0x37, 0x12, 0xc4, 0x11, 0x7d, 0x10, 0x99, 0x10, 0x2a, 0x12, 0x45, 0x11, 0x96, 0x11, 0xe9, 0x0e, + 0x38, 0x0b, 0x2c, 0x07, 0x09, 0x01, 0xc1, 0xfb, 0x32, 0xf4, 0xe2, 0xed, 0x16, 0xea, 0xcd, 0xe6, + 0xda, 0xe6, 0xfe, 0xe5, 0x1c, 0xe6, 0xff, 0xe6, 0xaa, 0xe7, 0x5e, 0xea, 0x0a, 0xec, 0xcc, 0xec, + 0xf1, 0xec, 0x45, 0xec, 0x63, 0xee, 0x05, 0xf0, 0x43, 0xf3, 0xbc, 0xf6, 0xe8, 0xfa, 0x8c, 0xff, + 0xb9, 0x01, 0x9a, 0x04, 0x17, 0x07, 0x54, 0x09, 0x4a, 0x0d, 0xb9, 0x0f, 0xbf, 0x12, 0xda, 0x13, + 0xfe, 0x13, 0x21, 0x14, 0x7d, 0x12, 0x4c, 0x11, 0x30, 0x0d, 0x93, 0x08, 0x45, 0x06, 0xb4, 0x03, + 0xb1, 0x03, 0x94, 0x03, 0x22, 0x03, 0xa4, 0x03, 0xe3, 0x02, 0xf8, 0x03, 0xc1, 0x04, 0x45, 0x04, + 0x9b, 0x03, 0x03, 0x01, 0x1a, 0x01, 0x6e, 0x01, 0x94, 0x02, 0x02, 0x05, 0x9c, 0x06, 0xa5, 0x08, + 0x2a, 0x07, 0xed, 0x04, 0x36, 0x03, 0xd2, 0x01, 0xde, 0x02, 0x9c, 0x02, 0xe0, 0x02, 0xd1, 0x02, + 0x7d, 0x00, 0x94, 0xff, 0x7f, 0xfc, 0x6f, 0xfa, 0x75, 0xf7, 0xaf, 0xf2, 0xbf, 0xf0, 0xb2, 0xed, + 0x77, 0xed, 0x45, 0xee, 0xf1, 0xed, 0x5a, 0xf0, 0xee, 0xf0, 0xc5, 0xf2, 0xbe, 0xf5, 0xa9, 0xf6, + 0xe3, 0xf7, 0xe0, 0xf6, 0x86, 0xf8, 0x6e, 0xfb, 0x0f, 0xfe, 0xe8, 0x02, 0xbb, 0x05, 0x91, 0x0a, + 0x8b, 0x0d, 0xc7, 0x0e, 0x2a, 0x11, 0xd1, 0x11, 0xec, 0x14, 0x81, 0x17, 0xab, 0x18, 0x85, 0x1a, + 0x67, 0x19, 0xe5, 0x18, 0xbf, 0x16, 0x37, 0x14, 0x42, 0x11, 0x14, 0x0b, 0x32, 0x06, 0x6a, 0x00, + 0xc8, 0xfb, 0xfb, 0xf9, 0xa4, 0xf7, 0x90, 0xf7, 0x71, 0xf6, 0xb1, 0xf4, 0x1a, 0xf4, 0xbb, 0xf1, + 0x3e, 0xf0, 0xa6, 0xed, 0xb5, 0xeb, 0x0f, 0xec, 0x39, 0xec, 0x34, 0xef, 0xdc, 0xf0, 0x83, 0xf3, + 0xdb, 0xf5, 0xec, 0xf5, 0x19, 0xf7, 0x4a, 0xf8, 0x9e, 0xfa, 0x1c, 0xfe, 0x41, 0x00, 0x75, 0x02, + 0xea, 0x01, 0x03, 0x02, 0xb5, 0x00, 0xc9, 0xfe, 0xa7, 0xfd, 0x70, 0xfa, 0x31, 0xf7, 0xf4, 0xf4, + 0xd5, 0xf3, 0x4c, 0xf5, 0x4c, 0xf6, 0x43, 0xf8, 0x40, 0xfa, 0xb7, 0xfb, 0x04, 0xff, 0x6b, 0x01, + 0xb2, 0x02, 0x9b, 0x02, 0x6c, 0x01, 0x0f, 0x03, 0x91, 0x03, 0xaf, 0x06, 0xed, 0x08, 0x23, 0x0c, + 0xc4, 0x0f, 0x9d, 0x10, 0x41, 0x12, 0xb8, 0x12, 0x12, 0x13, 0xda, 0x14, 0xc6, 0x14, 0x12, 0x16, + 0x6c, 0x15, 0x48, 0x14, 0xff, 0x12, 0x3c, 0x0f, 0xf9, 0x0b, 0xad, 0x05, 0xbf, 0xfe, 0x76, 0xf9, + 0xfc, 0xf3, 0x5b, 0xf2, 0xc5, 0xf0, 0x76, 0xf0, 0x62, 0xf0, 0xda, 0xee, 0x5f, 0xef, 0x84, 0xef, + 0x29, 0xf0, 0x36, 0xf1, 0xdc, 0xef, 0xb3, 0xf1, 0xaf, 0xf2, 0x26, 0xf5, 0x3a, 0xf8, 0xb2, 0xfa, + 0x31, 0xfe, 0x0f, 0xff, 0xd3, 0xff, 0xac, 0x00, 0xd9, 0x00, 0xf6, 0x03, 0x38, 0x05, 0x87, 0x07, + 0x47, 0x08, 0xf9, 0x07, 0x2b, 0x09, 0xca, 0x07, 0x10, 0x07, 0xcd, 0x04, 0xca, 0x00, 0x58, 0xfe, + 0x48, 0xfb, 0x2a, 0xfb, 0x7b, 0xfb, 0xc5, 0xfb, 0xab, 0xfd, 0xe2, 0xfd, 0xd7, 0xfe, 0x8d, 0x01, + 0x50, 0x02, 0x1b, 0x03, 0x67, 0x00, 0xe1, 0xff, 0x94, 0xff, 0xaf, 0x00, 0x29, 0x03, 0xc1, 0x04, + 0xe6, 0x07, 0x62, 0x09, 0x7d, 0x08, 0xe1, 0x07, 0xff, 0x05, 0x97, 0x06, 0x09, 0x07, 0x80, 0x07, + 0x91, 0x08, 0x96, 0x07, 0xa9, 0x06, 0x8d, 0x04, 0x99, 0x02, 0xa5, 0x00, 0x9a, 0xfc, 0x7e, 0xf9, + 0xb8, 0xf5, 0xe8, 0xf3, 0x65, 0xf3, 0xa7, 0xf2, 0xa7, 0xf3, 0x38, 0xf4, 0x90, 0xf4, 0x1e, 0xf6, + 0xa9, 0xf7, 0x0c, 0xfa, 0x85, 0xf9, 0xe0, 0xf9, 0x5e, 0xfb, 0x39, 0xfd, 0xf9, 0x00, 0x27, 0x04, + 0xf4, 0x07, 0xe7, 0x0a, 0xe9, 0x0b, 0x10, 0x0d, 0xd7, 0x0c, 0xe6, 0x0e, 0x50, 0x11, 0xe4, 0x12, + 0xaa, 0x14, 0x21, 0x14, 0xf5, 0x13, 0x0d, 0x12, 0x2e, 0x0f, 0x41, 0x0d, 0xc1, 0x08, 0x83, 0x04, + 0x3b, 0xff, 0x1f, 0xfb, 0x34, 0xf9, 0xdb, 0xf6, 0xab, 0xf6, 0x8f, 0xf6, 0xf2, 0xf5, 0x55, 0xf7, + 0xaf, 0xf6, 0xaa, 0xf5, 0x65, 0xf2, 0x36, 0xef, 0xdb, 0xed, 0xff, 0xec, 0x78, 0xef, 0xe1, 0xf0, + 0xcf, 0xf3, 0x55, 0xf7, 0x05, 0xf8, 0xab, 0xf9, 0x11, 0xfa, 0xe5, 0xfb, 0x92, 0xff, 0x37, 0x02, + 0x03, 0x06, 0xf1, 0x06, 0x95, 0x07, 0x5b, 0x07, 0x15, 0x05, 0xc1, 0x04, 0x9a, 0x01, 0x32, 0xfe, + 0xc9, 0xfa, 0x16, 0xf7, 0xe1, 0xf6, 0x78, 0xf6, 0x70, 0xf7, 0x5e, 0xf9, 0x81, 0xf9, 0x57, 0xfb, + 0xaa, 0xfc, 0x66, 0xfe, 0xbb, 0xff, 0x4b, 0xff, 0x92, 0x00, 0x7a, 0x01, 0x4e, 0x04, 0xff, 0x06, + 0x46, 0x09, 0x55, 0x0c, 0x14, 0x0d, 0x08, 0x0e, 0x6a, 0x0e, 0x86, 0x0e, 0x80, 0x10, 0x94, 0x10, + 0x13, 0x11, 0xdf, 0x0f, 0x86, 0x0d, 0xc0, 0x0c, 0x2a, 0x0a, 0xe9, 0x07, 0x2a, 0x04, 0x15, 0xfe, + 0x48, 0xf8, 0xaf, 0xf1, 0xe9, 0xed, 0xb9, 0xeb, 0x52, 0xea, 0xd7, 0xea, 0xe3, 0xea, 0x2b, 0xeb, + 0x61, 0xec, 0x4c, 0xed, 0xf7, 0xed, 0xe1, 0xec, 0xac, 0xed, 0x58, 0xef, 0xcf, 0xf2, 0xec, 0xf6, + 0x57, 0xfa, 0xfa, 0xfe, 0xff, 0x01, 0xee, 0x03, 0xd1, 0x05, 0xa4, 0x06, 0xad, 0x09, 0x16, 0x0c, + 0x65, 0x0f, 0x2e, 0x12, 0x6f, 0x13, 0xde, 0x14, 0xe2, 0x13, 0xc2, 0x13, 0x8b, 0x12, 0x5c, 0x0e, + 0xcf, 0x0a, 0xc8, 0x05, 0x60, 0x02, 0x7b, 0x00, 0xbb, 0xfe, 0xb8, 0xfe, 0x34, 0xfe, 0xc7, 0xfd, + 0xbf, 0xfd, 0xbc, 0xfd, 0x32, 0xff, 0xd4, 0xfd, 0x8e, 0xfd, 0xfa, 0xfc, 0x45, 0xfd, 0xb9, 0xfe, + 0x56, 0xff, 0x09, 0x02, 0x7c, 0x03, 0xb0, 0x03, 0xd8, 0x03, 0xe9, 0x01, 0xde, 0x01, 0x0a, 0x01, + 0x09, 0x01, 0xba, 0x01, 0x7e, 0x00, 0xb5, 0x00, 0x36, 0xff, 0x12, 0xfd, 0x96, 0xfb, 0x97, 0xf7, + 0x97, 0xf4, 0xf3, 0xef, 0x87, 0xed, 0x6f, 0xed, 0x24, 0xed, 0x3c, 0xef, 0xd2, 0xf0, 0xc7, 0xf1, + 0x5c, 0xf4, 0xb6, 0xf5, 0x43, 0xf8, 0xdd, 0xf7, 0x05, 0xf8, 0xe4, 0xf8, 0x57, 0xfa, 0x41, 0xfe, + 0xfa, 0x00, 0xfe, 0x04, 0xe5, 0x09, 0x8c, 0x0c, 0x5c, 0x0f, 0x17, 0x10, 0x0e, 0x12, 0xab, 0x14, + 0x47, 0x17, 0xa7, 0x1a, 0x79, 0x1b, 0x6c, 0x1c, 0x18, 0x1c, 0xb4, 0x19, 0x9c, 0x18, 0xc8, 0x14, + 0x25, 0x11, 0x52, 0x0c, 0x15, 0x07, 0x63, 0x04, 0x88, 0x01, 0xa5, 0xff, 0xf7, 0xfe, 0xf8, 0xfc, + 0xfd, 0xfc, 0x9e, 0xfb, 0xe7, 0xfb, 0x9f, 0xfa, 0x63, 0xf7, 0x9e, 0xf4, 0x46, 0xf2, 0x95, 0xf2, + 0x18, 0xf3, 0x47, 0xf4, 0x25, 0xf7, 0x5b, 0xf7, 0x65, 0xf7, 0x6a, 0xf6, 0x5c, 0xf6, 0xb6, 0xf7, + 0x14, 0xf9, 0xdc, 0xfb, 0xdc, 0xfc, 0x80, 0xfd, 0xc1, 0xfe, 0x68, 0xfd, 0x6e, 0xfd, 0xaa, 0xfb, + 0x0b, 0xf9, 0x73, 0xf5, 0xe2, 0xf1, 0xc3, 0xf0, 0x9b, 0xf0, 0x65, 0xf1, 0x13, 0xf4, 0x51, 0xf5, + 0xff, 0xf7, 0x4c, 0xfa, 0x12, 0xfd, 0xb7, 0xfe, 0xa5, 0xfd, 0xce, 0xfd, 0x72, 0xfe, 0x40, 0x01, + 0x9d, 0x04, 0x80, 0x07, 0xe7, 0x0b, 0xfc, 0x0d, 0x7a, 0x0f, 0x1a, 0x10, 0x85, 0x10, 0x4a, 0x12, + 0x7a, 0x13, 0xd7, 0x15, 0x9b, 0x16, 0x2d, 0x16, 0xc8, 0x15, 0xe6, 0x12, 0xbb, 0x11, 0x29, 0x0f, + 0x04, 0x0b, 0x8a, 0x06, 0x6e, 0xff, 0xfd, 0xf9, 0x74, 0xf5, 0x86, 0xf1, 0x3d, 0xf0, 0x90, 0xee, + 0x87, 0xee, 0xfc, 0xed, 0x13, 0xee, 0x22, 0xef, 0xb7, 0xed, 0x09, 0xed, 0x28, 0xed, 0x64, 0xef, + 0xee, 0xf2, 0x3b, 0xf5, 0xae, 0xf9, 0x0b, 0xfc, 0x7c, 0xfd, 0x06, 0xff, 0x0f, 0xff, 0xf7, 0x00, + 0x95, 0x02, 0x64, 0x05, 0x51, 0x08, 0x5b, 0x09, 0x99, 0x0b, 0xfa, 0x0a, 0x0b, 0x0b, 0x2e, 0x0b, + 0x5b, 0x09, 0x0a, 0x07, 0x40, 0x02, 0xe6, 0xfe, 0x63, 0xfd, 0x26, 0xfc, 0xba, 0xfd, 0xb2, 0xfe, + 0xcb, 0xff, 0x0f, 0x01, 0x3c, 0x01, 0x7b, 0x02, 0x27, 0x01, 0x0e, 0x00, 0x3c, 0xff, 0xfc, 0xfe, + 0x0c, 0x01, 0x6a, 0x01, 0x94, 0x02, 0xb1, 0x04, 0x7f, 0x05, 0x76, 0x06, 0xab, 0x05, 0x0e, 0x06, + 0x16, 0x06, 0xb1, 0x05, 0xa0, 0x06, 0x55, 0x05, 0xa3, 0x04, 0x89, 0x03, 0x65, 0x01, 0x08, 0x00, + 0x16, 0xfd, 0x05, 0xfa, 0x01, 0xf5, 0x7f, 0xef, 0x1d, 0xed, 0x96, 0xeb, 0x5e, 0xec, 0x0d, 0xee, + 0x32, 0xef, 0x2a, 0xf1, 0xab, 0xf1, 0x60, 0xf4, 0xbe, 0xf5, 0x40, 0xf6, 0x8b, 0xf6, 0x03, 0xf7, + 0x77, 0xfa, 0x91, 0xfd, 0x3c, 0x01, 0xc3, 0x05, 0x5d, 0x08, 0x62, 0x0b, 0x5d, 0x0c, 0x9e, 0x0d, + 0x54, 0x0f, 0x05, 0x11, 0xf1, 0x13, 0xbd, 0x14, 0x81, 0x15, 0xd0, 0x15, 0xc1, 0x14, 0x88, 0x14, + 0xd2, 0x11, 0xe5, 0x0e, 0x0e, 0x0a, 0xca, 0x04, 0xe6, 0x01, 0x1b, 0xff, 0xe6, 0xfd, 0x4f, 0xfd, + 0x3d, 0xfc, 0x59, 0xfc, 0x3d, 0xfb, 0xf4, 0xfb, 0xc4, 0xfb, 0x22, 0xfa, 0x2f, 0xf8, 0xb0, 0xf5, + 0xdb, 0xf5, 0x4c, 0xf6, 0xd7, 0xf6, 0x74, 0xf9, 0xa5, 0xfa, 0x44, 0xfc, 0x88, 0xfc, 0xc2, 0xfc, + 0x83, 0xfd, 0xce, 0xfd, 0x64, 0x00, 0x34, 0x02, 0x14, 0x04, 0x8d, 0x06, 0x7f, 0x06, 0x39, 0x07, + 0xf8, 0x05, 0xe0, 0x03, 0x9e, 0x00, 0x8e, 0xfb, 0x98, 0xf7, 0x9d, 0xf4, 0x4a, 0xf3, 0x19, 0xf4, + 0x81, 0xf3, 0x20, 0xf5, 0x12, 0xf6, 0x01, 0xf8, 0xa9, 0xfa, 0x48, 0xfb, 0x0c, 0xfc, 0xd3, 0xfb, + 0x15, 0xfe, 0x6e, 0x01, 0xe6, 0x02, 0x4e, 0x07, 0x07, 0x0a, 0xc9, 0x0b, 0xd3, 0x0c, 0x98, 0x0c, + 0xdd, 0x0d, 0x2f, 0x0e, 0x2b, 0x10, 0x5d, 0x12, 0x27, 0x12, 0xec, 0x12, 0xae, 0x10, 0xec, 0x0e, + 0xb3, 0x0c, 0x5a, 0x09, 0xc8, 0x05, 0x84, 0xff, 0xd2, 0xf9, 0x93, 0xf5, 0x00, 0xf1, 0x55, 0xef, + 0x09, 0xed, 0x2e, 0xed, 0x50, 0xed, 0x20, 0xed, 0xd3, 0xed, 0xd0, 0xec, 0xba, 0xeb, 0x3f, 0xea, + 0x1b, 0xea, 0x3e, 0xed, 0xb6, 0xef, 0xe6, 0xf3, 0x5e, 0xf8, 0x2e, 0xfc, 0x4f, 0xff, 0x60, 0x00, + 0xc2, 0x02, 0x06, 0x05, 0x70, 0x07, 0x4d, 0x0b, 0x28, 0x0d, 0x09, 0x10, 0xf0, 0x10, 0x5d, 0x11, + 0xc4, 0x11, 0x84, 0x10, 0x51, 0x0f, 0xac, 0x0b, 0xed, 0x06, 0xd8, 0x03, 0x20, 0x01, 0x44, 0x01, + 0x06, 0x01, 0xb0, 0x01, 0x68, 0x02, 0x4a, 0x02, 0x76, 0x03, 0x94, 0x03, 0x02, 0x03, 0x93, 0x01, + 0x80, 0x00, 0x17, 0x02, 0xab, 0x02, 0x19, 0x04, 0xb3, 0x05, 0xfb, 0x05, 0x62, 0x06, 0x7e, 0x05, + 0xe8, 0x04, 0xbf, 0x04, 0x91, 0x04, 0x61, 0x05, 0xa2, 0x03, 0x85, 0x02, 0x59, 0x00, 0x8a, 0xfd, + 0x82, 0xfc, 0xd7, 0xf9, 0x01, 0xf7, 0x09, 0xf3, 0x8b, 0xed, 0x17, 0xea, 0x81, 0xe6, 0x2b, 0xe6, + 0xf3, 0xe6, 0xa8, 0xe8, 0x6a, 0xeb, 0xe3, 0xec, 0x2c, 0xef, 0x73, 0xf0, 0x72, 0xf1, 0x98, 0xf1, + 0x06, 0xf1, 0xa8, 0xf3, 0xce, 0xf6, 0x21, 0xfa, 0xda, 0xfe, 0x67, 0x02, 0x71, 0x06, 0x23, 0x09, + 0xfe, 0x0b, 0xf6, 0x0e, 0xa5, 0x10, 0xa1, 0x14, 0xda, 0x16, 0xf7, 0x18, 0xa2, 0x1b, 0xfe, 0x1b, + 0x3e, 0x1d, 0xb8, 0x1c, 0xe5, 0x1a, 0x0f, 0x18, 0x19, 0x12, 0x87, 0x0d, 0xd7, 0x08, 0x34, 0x06, + 0x4e, 0x05, 0x30, 0x03, 0x7b, 0x02, 0xc7, 0x00, 0xf1, 0xff, 0xb7, 0xff, 0x85, 0xfe, 0x6d, 0xfd, + 0xf8, 0xfa, 0x20, 0xfa, 0xc9, 0xf9, 0x2e, 0xf8, 0xa0, 0xf8, 0x59, 0xf8, 0xde, 0xf8, 0xad, 0xf8, + 0xe5, 0xf7, 0x44, 0xf8, 0x82, 0xf7, 0xcd, 0xf8, 0xe1, 0xf9, 0xb5, 0xfa, 0xed, 0xfc, 0x1b, 0xfd, + 0x51, 0xfe, 0xdf, 0xfe, 0xca, 0xfd, 0xda, 0xfc, 0xfb, 0xf8, 0x18, 0xf5, 0xdc, 0xf1, 0x39, 0xef, + 0x02, 0xf0, 0x7d, 0xf0, 0xf2, 0xf2, 0xe3, 0xf4, 0xa6, 0xf6, 0x28, 0xf9, 0x81, 0xfa, 0x64, 0xfb, + 0xec, 0xfa, 0xb8, 0xfb, 0x81, 0xfe, 0x03, 0x01, 0x70, 0x04, 0x4d, 0x07, 0xc6, 0x0a, 0x4f, 0x0d, + 0x96, 0x0e, 0x42, 0x10, 0xe6, 0x10, 0x9d, 0x12, 0x4b, 0x15, 0x6f, 0x16, 0x19, 0x18, 0x0e, 0x18, + 0x20, 0x17, 0x9e, 0x15, 0xa8, 0x12, 0xb1, 0x0f, 0x5e, 0x0a, 0x34, 0x04, 0x2a, 0xff, 0xc8, 0xf9, + 0x1c, 0xf7, 0x08, 0xf4, 0x32, 0xf2, 0x59, 0xf0, 0xfe, 0xee, 0x5f, 0xef, 0xed, 0xee, 0xbd, 0xee, + 0x5d, 0xed, 0xab, 0xeb, 0x90, 0xec, 0x0e, 0xed, 0x2f, 0xef, 0xf5, 0xf1, 0x2a, 0xf5, 0x9e, 0xf8, + 0x24, 0xfa, 0x45, 0xfc, 0x62, 0xfd, 0xb7, 0xfe, 0x83, 0x01, 0x34, 0x02, 0x9e, 0x04, 0xcf, 0x05, + 0x24, 0x06, 0xef, 0x06, 0x6e, 0x06, 0x57, 0x06, 0x5f, 0x04, 0x70, 0x00, 0x29, 0xfe, 0x0a, 0xfb, + 0x0e, 0xfb, 0x17, 0xfb, 0x3b, 0xfc, 0x3a, 0xfe, 0xea, 0xfe, 0x8a, 0x00, 0x7a, 0x01, 0x42, 0x02, + 0x46, 0x02, 0xc1, 0x00, 0x8e, 0x02, 0x3c, 0x04, 0xad, 0x06, 0x6c, 0x09, 0x4d, 0x0b, 0xa2, 0x0d, + 0x3e, 0x0e, 0xe3, 0x0e, 0x37, 0x0f, 0xde, 0x0e, 0x8f, 0x10, 0x1b, 0x10, 0x20, 0x10, 0x99, 0x0f, + 0x41, 0x0d, 0xd8, 0x0b, 0x48, 0x09, 0x4c, 0x06, 0x9b, 0x02, 0x97, 0xfb, 0xd5, 0xf5, 0x07, 0xef, + 0x4e, 0xeb, 0x1f, 0xe9, 0x74, 0xe7, 0x01, 0xe8, 0x3a, 0xe8, 0x73, 0xe9, 0x3d, 0xeb, 0x5b, 0xec, + 0xa9, 0xed, 0x2b, 0xed, 0xd6, 0xee, 0xfc, 0xf0, 0xf4, 0xf2, 0x38, 0xf6, 0xe6, 0xf8, 0x40, 0xfc, + 0xf3, 0xfe, 0x31, 0x01, 0x0f, 0x04, 0xa5, 0x05, 0xe4, 0x08, 0x74, 0x0b, 0x7e, 0x0d, 0x1b, 0x10, + 0x2d, 0x11, 0x50, 0x12, 0xf0, 0x12, 0x4d, 0x12, 0xeb, 0x11, 0x2f, 0x0e, 0x2c, 0x0a, 0x55, 0x05, + 0x27, 0x02, 0x29, 0x01, 0x73, 0x00, 0x52, 0x01, 0x5e, 0x01, 0x19, 0x01, 0x2e, 0x01, 0x24, 0x00, + 0xab, 0xff, 0x5f, 0xfd, 0x4a, 0xfc, 0xd2, 0xfc, 0x03, 0xfd, 0x27, 0xfe, 0x38, 0xfe, 0x16, 0xff, + 0x00, 0x00, 0xe9, 0xff, 0xa5, 0x00, 0x78, 0x00, 0x5d, 0x01, 0x61, 0x02, 0x88, 0x03, 0x30, 0x05, + 0x36, 0x05, 0xd8, 0x05, 0xe1, 0x06, 0x3c, 0x06, 0xf6, 0x05, 0x03, 0x03, 0x53, 0xff, 0xcd, 0xfa, + 0xc8, 0xf6, 0x41, 0xf5, 0xb8, 0xf3, 0x60, 0xf4, 0x1f, 0xf5, 0xa5, 0xf5, 0x49, 0xf7, 0x8e, 0xf8, + 0x76, 0xfa, 0x78, 0xfa, 0x6d, 0xfa, 0x5a, 0xfc, 0x66, 0xfd, 0x9c, 0xff, 0xd6, 0x01, 0x9b, 0x04, + 0xea, 0x07, 0x7f, 0x09, 0x92, 0x0b, 0xbe, 0x0b, 0x95, 0x0c, 0x06, 0x0e, 0x49, 0x0e, 0x06, 0x10, + 0x1a, 0x11, 0xbe, 0x10, 0xb8, 0x10, 0xea, 0x0e, 0x53, 0x0d, 0x9b, 0x09, 0x94, 0x04, 0xf6, 0xff, + 0x6a, 0xfa, 0x07, 0xf8, 0xfe, 0xf5, 0xe3, 0xf4, 0x1c, 0xf4, 0x13, 0xf2, 0x43, 0xf1, 0xc6, 0xef, + 0x69, 0xef, 0xdc, 0xee, 0x0e, 0xec, 0x27, 0xec, 0x94, 0xec, 0xe5, 0xed, 0x04, 0xf0, 0x49, 0xf2, + 0x4a, 0xf6, 0x38, 0xf9, 0x65, 0xfc, 0x37, 0xff, 0x17, 0x01, 0xac, 0x04, 0xcf, 0x06, 0xee, 0x08, + 0x6b, 0x0b, 0x85, 0x0c, 0x76, 0x0e, 0x0a, 0x0f, 0x7a, 0x0f, 0x09, 0x0f, 0xc1, 0x0b, 0x8c, 0x08, + 0xd5, 0x03, 0x4d, 0x01, 0xbb, 0xff, 0xe3, 0xfe, 0xac, 0xff, 0xba, 0xff, 0xa3, 0x00, 0x38, 0x01, + 0xdb, 0x01, 0xac, 0x02, 0x06, 0x01, 0x3f, 0x01, 0xf6, 0x01, 0xb4, 0x02, 0x4e, 0x04, 0xef, 0x04, + 0x72, 0x06, 0x04, 0x07, 0x5a, 0x07, 0x7c, 0x07, 0xc9, 0x06, 0xc6, 0x07, 0xd4, 0x07, 0xa7, 0x08, + 0xce, 0x09, 0x24, 0x09, 0x3b, 0x08, 0xc9, 0x06, 0x84, 0x04, 0x63, 0x02, 0xf5, 0xfd, 0x60, 0xf9, + 0x1d, 0xf3, 0xa8, 0xee, 0x9b, 0xeb, 0x93, 0xe9, 0x0f, 0xea, 0x3c, 0xea, 0x15, 0xeb, 0x4e, 0xec, + 0x6a, 0xed, 0x03, 0xef, 0x0a, 0xee, 0x87, 0xee, 0x78, 0xef, 0xf3, 0xf0, 0xc7, 0xf3, 0xf4, 0xf5, + 0x01, 0xf9, 0xfb, 0xfb, 0xa3, 0xfe, 0x92, 0x01, 0x1c, 0x03, 0x2b, 0x06, 0xb2, 0x08, 0xd2, 0x0b, + 0x64, 0x0f, 0x14, 0x11, 0x14, 0x13, 0x86, 0x14, 0xbd, 0x14, 0x1f, 0x15, 0x7c, 0x12, 0xc7, 0x0f, + 0xab, 0x0a, 0x16, 0x06, 0x97, 0x03, 0x7a, 0x01, 0xa7, 0x01, 0xeb, 0x01, 0xe6, 0x01, 0x4f, 0x02, + 0x9a, 0x01, 0xf6, 0x01, 0x96, 0x00, 0x2d, 0xff, 0x0d, 0xff, 0xa6, 0xfe, 0x45, 0xff, 0xc2, 0xfe, + 0xbf, 0xfe, 0xb7, 0xff, 0x22, 0xff, 0xaf, 0xff, 0xd8, 0xfe, 0x85, 0xfe, 0xbf, 0xfe, 0x07, 0xfe, + 0xcd, 0xfe, 0x29, 0xff, 0x94, 0xfe, 0xf7, 0xfe, 0xf2, 0xfd, 0xaa, 0xfe, 0x7b, 0xfd, 0x61, 0xfb, + 0x78, 0xf8, 0x90, 0xf4, 0x1a, 0xf3, 0x52, 0xf2, 0x5f, 0xf3, 0xd5, 0xf4, 0x1c, 0xf5, 0x7d, 0xf6, + 0xa9, 0xf6, 0x84, 0xf8, 0xc5, 0xf9, 0x6a, 0xf9, 0x13, 0xfb, 0xbd, 0xfc, 0x05, 0xff, 0xa3, 0x01, + 0x07, 0x04, 0xc9, 0x07, 0x16, 0x0a, 0x80, 0x0d, 0x73, 0x0f, 0xb0, 0x10, 0xb5, 0x12, 0xa0, 0x13, + 0x0a, 0x15, 0x3e, 0x16, 0x9f, 0x16, 0xcb, 0x17, 0x3c, 0x17, 0x18, 0x17, 0xc8, 0x14, 0x64, 0x10, + 0xfa, 0x0a, 0xfe, 0x03, 0xc5, 0xfe, 0xc7, 0xfa, 0xb0, 0xf8, 0x8c, 0xf7, 0x68, 0xf5, 0x54, 0xf4, + 0x93, 0xf2, 0xd6, 0xf1, 0x17, 0xf1, 0x4a, 0xef, 0x7b, 0xee, 0x0c, 0xee, 0x4e, 0xee, 0xfb, 0xee, + 0x2a, 0xef, 0xe7, 0xf0, 0x7e, 0xf2, 0x02, 0xf5, 0xc9, 0xf6, 0x21, 0xf8, 0xab, 0xfa, 0x4f, 0xfc, + 0x50, 0xfe, 0x18, 0x01, 0x71, 0x02, 0x60, 0x04, 0xe4, 0x04, 0x4d, 0x05, 0x58, 0x05, 0xc8, 0x03, + 0xfc, 0x01, 0xf1, 0xfd, 0x23, 0xfb, 0xd0, 0xf9, 0x58, 0xf9, 0xdc, 0xfa, 0xa8, 0xfb, 0x48, 0xfd, + 0x75, 0xfe, 0x9c, 0xff, 0xcc, 0x01, 0x8f, 0x01, 0xba, 0x01, 0x10, 0x02, 0xbd, 0x02, 0x18, 0x05, + 0x47, 0x06, 0xe8, 0x08, 0x15, 0x0b, 0xf1, 0x0c, 0x81, 0x0e, 0x29, 0x0e, 0xe2, 0x0e, 0x43, 0x0f, + 0xd6, 0x0f, 0xce, 0x11, 0xb0, 0x11, 0xc8, 0x11, 0xd2, 0x10, 0x67, 0x0e, 0x4f, 0x0c, 0xe0, 0x07, + 0x9c, 0x03, 0x83, 0xfd, 0x6a, 0xf7, 0xec, 0xf2, 0xbc, 0xee, 0x63, 0xed, 0x4f, 0xec, 0xa6, 0xeb, + 0x5c, 0xec, 0x98, 0xec, 0x62, 0xee, 0x35, 0xef, 0xb6, 0xef, 0xf8, 0xf0, 0x5d, 0xf1, 0x68, 0xf3, + 0x8b, 0xf4, 0x5b, 0xf6, 0x23, 0xf9, 0x58, 0xfb, 0x60, 0xfe, 0xbf, 0xff, 0x55, 0x01, 0x45, 0x03, + 0x93, 0x04, 0xf5, 0x06, 0xd8, 0x08, 0x61, 0x0a, 0x80, 0x0b, 0x50, 0x0b, 0x23, 0x0c, 0x1f, 0x0b, + 0x5c, 0x09, 0x74, 0x06, 0xc9, 0x01, 0xd3, 0xfe, 0xc4, 0xfc, 0xae, 0xfc, 0x57, 0xfd, 0x84, 0xfd, + 0x5a, 0xfe, 0x96, 0xfd, 0xb3, 0xfd, 0x8d, 0xfd, 0x1f, 0xfc, 0x47, 0xfb, 0xbd, 0xfa, 0xce, 0xfb, + 0xf4, 0xfc, 0x78, 0xfe, 0x72, 0x00, 0x20, 0x01, 0xdc, 0x02, 0x2b, 0x03, 0x71, 0x03, 0x51, 0x04, + 0xd0, 0x04, 0x29, 0x06, 0xc9, 0x06, 0xfb, 0x06, 0xd3, 0x07, 0x48, 0x07, 0xea, 0x07, 0x4d, 0x07, + 0xe6, 0x05, 0x86, 0x03, 0x34, 0xff, 0x7f, 0xfb, 0x16, 0xf8, 0xaa, 0xf6, 0x25, 0xf7, 0xd6, 0xf6, + 0x6b, 0xf7, 0x57, 0xf7, 0x03, 0xf8, 0x0c, 0xf9, 0x25, 0xf9, 0xf1, 0xf9, 0x63, 0xfa, 0xea, 0xfb, + 0x9e, 0xfd, 0x79, 0xfe, 0xaa, 0x00, 0xf8, 0x01, 0x7b, 0x04, 0x0e, 0x06, 0x33, 0x07, 0x27, 0x09, + 0x55, 0x0a, 0xa3, 0x0b, 0x84, 0x0d, 0x43, 0x0e, 0x0b, 0x10, 0x1a, 0x10, 0xb8, 0x10, 0xa0, 0x10, + 0xf2, 0x0e, 0x5d, 0x0c, 0x9b, 0x06, 0xa3, 0x01, 0xa5, 0xfd, 0x7d, 0xfa, 0x82, 0xfa, 0x7e, 0xf9, + 0x40, 0xf9, 0xe9, 0xf7, 0x4a, 0xf6, 0x13, 0xf6, 0xe7, 0xf3, 0x09, 0xf2, 0x22, 0xf1, 0xfe, 0xef, + 0xa2, 0xf0, 0xd3, 0xf0, 0xfd, 0xf1, 0xdd, 0xf2, 0xef, 0xf4, 0x73, 0xf7, 0xe0, 0xf8, 0x6b, 0xfb, + 0xd5, 0xfd, 0x46, 0x00, 0xca, 0x03, 0xec, 0x05, 0x06, 0x09, 0x61, 0x0a, 0x44, 0x0b, 0x5b, 0x0c, + 0x51, 0x0b, 0x0e, 0x0a, 0xed, 0x06, 0x1c, 0x03, 0x53, 0x00, 0xfd, 0xfd, 0x03, 0xfe, 0x38, 0xfe, + 0xd7, 0xfe, 0xba, 0xff, 0xd9, 0xff, 0x59, 0x01, 0x56, 0x02, 0xcb, 0x02, 0x54, 0x03, 0xf2, 0x02, + 0xa7, 0x03, 0x21, 0x03, 0x94, 0x03, 0x74, 0x04, 0x00, 0x06, 0x01, 0x08, 0xdb, 0x08, 0xe7, 0x08, + 0x7e, 0x08, 0x9e, 0x07, 0xa4, 0x07, 0x7f, 0x07, 0xad, 0x08, 0xdf, 0x08, 0xb3, 0x07, 0xb3, 0x06, + 0x83, 0x04, 0xc6, 0x01, 0x1c, 0xfd, 0x6d, 0xf7, 0x65, 0xf3, 0xf4, 0xef, 0x1d, 0xef, 0x9c, 0xee, + 0x00, 0xee, 0xf1, 0xed, 0xf8, 0xec, 0x43, 0xed, 0x2c, 0xee, 0xd5, 0xee, 0x69, 0xf0, 0x2f, 0xf1, + 0x4d, 0xf3, 0x54, 0xf5, 0xa5, 0xf7, 0xb1, 0xfa, 0x88, 0xfd, 0x3b, 0x01, 0x99, 0x03, 0x7c, 0x05, + 0xa7, 0x07, 0xf8, 0x08, 0xd9, 0x0b, 0x9d, 0x0d, 0xbb, 0x0f, 0xf9, 0x11, 0xc3, 0x12, 0x11, 0x14, + 0x19, 0x14, 0x77, 0x13, 0xc5, 0x11, 0x7b, 0x0d, 0x79, 0x09, 0xac, 0x04, 0x32, 0x02, 0x6d, 0x01, + 0x38, 0x00, 0x78, 0x00, 0x52, 0xff, 0x45, 0xff, 0xe7, 0xff, 0x1a, 0xff, 0x72, 0xfe, 0xf5, 0xfc, + 0x87, 0xfc, 0x1c, 0xfc, 0x82, 0xfb, 0x33, 0xfc, 0xec, 0xfb, 0xba, 0xfc, 0xed, 0xfc, 0xf3, 0xfb, + 0xb2, 0xfb, 0x8d, 0xfa, 0x8a, 0xfa, 0x00, 0xfb, 0x0f, 0xfb, 0x56, 0xfc, 0xca, 0xfb, 0xd8, 0xfb, + 0x47, 0xfb, 0x67, 0xfa, 0xaf, 0xf9, 0xa5, 0xf6, 0x88, 0xf4, 0x83, 0xf2, 0x95, 0xf1, 0x9f, 0xf2, + 0x52, 0xf3, 0x23, 0xf5, 0xd0, 0xf5, 0x87, 0xf6, 0xdb, 0xf8, 0xc6, 0xf9, 0x44, 0xfb, 0x2d, 0xfc, + 0x46, 0xfd, 0x69, 0xff, 0x49, 0x01, 0x57, 0x04, 0x92, 0x06, 0xc5, 0x09, 0xc9, 0x0c, 0x72, 0x0e, + 0x93, 0x10, 0x04, 0x12, 0x4f, 0x13, 0x8e, 0x15, 0xd9, 0x16, 0x7d, 0x18, 0x76, 0x18, 0x09, 0x18, + 0xb3, 0x17, 0x21, 0x16, 0x5b, 0x14, 0xc0, 0x0f, 0x4a, 0x0a, 0xb2, 0x04, 0x66, 0xff, 0x1f, 0xfd, + 0x3f, 0xfb, 0x83, 0xfa, 0x8a, 0xf9, 0x2a, 0xf8, 0xfb, 0xf7, 0x27, 0xf7, 0x23, 0xf6, 0x7b, 0xf4, + 0xbc, 0xf2, 0x48, 0xf2, 0x16, 0xf1, 0xd1, 0xf0, 0xda, 0xf0, 0x88, 0xf1, 0x46, 0xf3, 0x73, 0xf4, + 0xeb, 0xf5, 0x05, 0xf7, 0x33, 0xf8, 0x37, 0xfa, 0x6f, 0xfb, 0x68, 0xfe, 0x34, 0x00, 0x51, 0x01, + 0xf4, 0x01, 0xf0, 0x01, 0x1d, 0x02, 0x10, 0x00, 0xdf, 0xfc, 0x70, 0xfa, 0xf5, 0xf7, 0xa4, 0xf8, + 0xb9, 0xf9, 0x16, 0xfb, 0x9f, 0xfc, 0x84, 0xfc, 0xa8, 0xfd, 0x9a, 0xfe, 0xa4, 0xff, 0x35, 0x01, + 0xdf, 0x01, 0x8c, 0x03, 0x2d, 0x04, 0xbf, 0x05, 0x7a, 0x07, 0x1f, 0x09, 0x41, 0x0c, 0x2a, 0x0e, + 0x07, 0x10, 0x69, 0x11, 0x3e, 0x11, 0x9f, 0x12, 0x27, 0x12, 0x99, 0x12, 0x0f, 0x13, 0x5d, 0x12, + 0x2a, 0x12, 0x8c, 0x10, 0xec, 0x0e, 0x83, 0x0b, 0x8b, 0x05, 0xe7, 0xff, 0xe3, 0xf8, 0xd0, 0xf4, + 0x8c, 0xf2, 0xe0, 0xf0, 0x20, 0xf0, 0xfa, 0xed, 0x08, 0xed, 0x3a, 0xed, 0x14, 0xed, 0xde, 0xed, + 0xe3, 0xed, 0x73, 0xef, 0xc8, 0xf0, 0x39, 0xf2, 0x22, 0xf4, 0x75, 0xf5, 0x58, 0xf8, 0x36, 0xfb, + 0x7f, 0xfc, 0x58, 0xfe, 0xf9, 0xfe, 0x24, 0x01, 0x14, 0x03, 0x45, 0x05, 0x48, 0x08, 0xf2, 0x09, + 0xa3, 0x0b, 0x94, 0x0c, 0xc5, 0x0c, 0xf0, 0x0c, 0x6c, 0x0a, 0xb5, 0x07, 0x7f, 0x04, 0x33, 0x02, + 0xb8, 0x01, 0x36, 0x01, 0x9e, 0x01, 0xce, 0x00, 0xf7, 0xff, 0xb8, 0x00, 0xaf, 0x00, 0x1d, 0x01, + 0x16, 0x00, 0x6a, 0xff, 0x50, 0xfe, 0x54, 0xfd, 0xef, 0xfd, 0x98, 0xfe, 0xd6, 0xff, 0xbf, 0x01, + 0xda, 0x01, 0x64, 0x02, 0x88, 0x01, 0x42, 0x01, 0x75, 0x01, 0x6f, 0x01, 0xc8, 0x02, 0xcd, 0x02, + 0x33, 0x02, 0x58, 0x01, 0x07, 0x00, 0xb9, 0xfe, 0x56, 0xfb, 0x08, 0xf8, 0x95, 0xf4, 0x9d, 0xf1, + 0xe9, 0xf0, 0xe1, 0xf0, 0x41, 0xf2, 0x47, 0xf3, 0xd0, 0xf3, 0x9e, 0xf5, 0x06, 0xf7, 0x0e, 0xf9, + 0x76, 0xf9, 0x7b, 0xfa, 0xba, 0xfb, 0x1a, 0xfc, 0x7e, 0xfd, 0xdd, 0xfe, 0x13, 0x01, 0x36, 0x04, + 0x2f, 0x06, 0xc9, 0x08, 0xa7, 0x09, 0x21, 0x0b, 0xf8, 0x0c, 0x6e, 0x0d, 0xa9, 0x0f, 0x01, 0x11, + 0xc2, 0x11, 0xed, 0x11, 0x0e, 0x11, 0xe9, 0x10, 0x86, 0x0e, 0x17, 0x0b, 0x7f, 0x07, 0x07, 0x03, + 0xc3, 0x00, 0x12, 0xff, 0x68, 0xfe, 0xa2, 0xfd, 0x83, 0xfb, 0x87, 0xfa, 0x14, 0xf9, 0xa0, 0xf8, + 0x84, 0xf7, 0xcb, 0xf5, 0xff, 0xf4, 0xa0, 0xf3, 0x7f, 0xf3, 0xac, 0xf3, 0x4e, 0xf4, 0x75, 0xf6, + 0x87, 0xf7, 0x08, 0xf9, 0x0e, 0xfa, 0x50, 0xfa, 0x8f, 0xfc, 0xb9, 0xfd, 0x1b, 0x00, 0xc4, 0x02, + 0x64, 0x04, 0x53, 0x06, 0xf1, 0x06, 0xe2, 0x07, 0xc7, 0x07, 0x6c, 0x05, 0x8b, 0x02, 0x54, 0xfe, + 0xd6, 0xfb, 0xb8, 0xfa, 0xbe, 0xfa, 0x1d, 0xfc, 0xf4, 0xfb, 0xa2, 0xfc, 0x1e, 0xfe, 0x9f, 0xff, + 0xcb, 0x00, 0x49, 0x01, 0x85, 0x02, 0xb5, 0x02, 0x5a, 0x03, 0x68, 0x04, 0xb1, 0x04, 0x45, 0x06, + 0xbe, 0x07, 0x63, 0x08, 0x25, 0x09, 0xc7, 0x08, 0xd1, 0x09, 0xb3, 0x09, 0xc9, 0x09, 0x34, 0x0a, + 0xb7, 0x09, 0xee, 0x09, 0xc6, 0x08, 0xfd, 0x07, 0xd7, 0x06, 0xa5, 0x03, 0xf7, 0xff, 0x9a, 0xfa, + 0x81, 0xf6, 0x1f, 0xf4, 0x70, 0xf2, 0xfe, 0xf1, 0x84, 0xf0, 0x2e, 0xef, 0xac, 0xee, 0xf5, 0xee, + 0xbd, 0xef, 0xd8, 0xef, 0xe0, 0xf0, 0x17, 0xf1, 0x02, 0xf2, 0x87, 0xf4, 0xe1, 0xf6, 0xf4, 0xf9, + 0x21, 0xfd, 0xd0, 0xff, 0x70, 0x02, 0x4d, 0x03, 0x75, 0x05, 0xc9, 0x06, 0xb5, 0x08, 0x3f, 0x0b, + 0xdc, 0x0c, 0x77, 0x0e, 0x2e, 0x0f, 0x93, 0x0f, 0xa8, 0x0f, 0x6d, 0x0d, 0x30, 0x0b, 0x5c, 0x07, + 0x1e, 0x04, 0xb5, 0x02, 0x61, 0x01, 0xd3, 0x01, 0xe6, 0x01, 0x78, 0x01, 0x48, 0x02, 0xf6, 0x02, + 0x7a, 0x04, 0x3d, 0x04, 0x4a, 0x04, 0xd2, 0x03, 0x8d, 0x02, 0x1c, 0x02, 0x0f, 0x01, 0xfc, 0x00, + 0x5d, 0x02, 0x78, 0x02, 0x85, 0x03, 0x83, 0x02, 0xcc, 0x01, 0x3a, 0x01, 0x97, 0xff, 0x1d, 0xff, + 0x29, 0xfe, 0xd6, 0xfd, 0xa4, 0xfc, 0x7c, 0xfa, 0x51, 0xf9, 0x63, 0xf6, 0x7b, 0xf3, 0xc6, 0xef, + 0xe4, 0xeb, 0x67, 0xea, 0x36, 0xea, 0xa1, 0xeb, 0x35, 0xed, 0x25, 0xed, 0x92, 0xee, 0xbb, 0xef, + 0xe4, 0xf1, 0x90, 0xf3, 0x14, 0xf5, 0x00, 0xf7, 0x35, 0xf8, 0x50, 0xfa, 0xed, 0xfc, 0xa7, 0xff, + 0xfc, 0x03, 0x5f, 0x07, 0xf3, 0x0a, 0x40, 0x0d, 0xee, 0x0e, 0x92, 0x11, 0x59, 0x13, 0xaf, 0x15, + 0x55, 0x17, 0x4a, 0x18, 0x23, 0x19, 0x8d, 0x18, 0xc3, 0x18, 0x7f, 0x17, 0xd2, 0x14, 0x46, 0x11, + 0x28, 0x0c, 0x1c, 0x08, 0xc9, 0x04, 0x20, 0x02, 0xf9, 0x00, 0x6f, 0xfe, 0x28, 0xfd, 0x44, 0xfc, + 0x6b, 0xfc, 0x1f, 0xfc, 0x1f, 0xfb, 0x0d, 0xfa, 0x64, 0xf8, 0x1b, 0xf7, 0x6d, 0xf6, 0x1b, 0xf5, + 0xd8, 0xf5, 0x37, 0xf6, 0x97, 0xf6, 0x5a, 0xf6, 0x48, 0xf5, 0xee, 0xf5, 0x5e, 0xf6, 0xba, 0xf7, + 0x7a, 0xf9, 0x35, 0xfb, 0xba, 0xfd, 0x6b, 0xfe, 0xf1, 0xff, 0x6b, 0x00, 0x96, 0xff, 0x40, 0xfe, + 0x2d, 0xfb, 0x94, 0xf8, 0x35, 0xf7, 0xcc, 0xf6, 0xd5, 0xf7, 0x9e, 0xf7, 0x1b, 0xf8, 0xfe, 0xf8, + 0xd1, 0xfa, 0xe0, 0xfc, 0xfe, 0xfd, 0x90, 0xff, 0xbb, 0x00, 0x64, 0x01, 0x4d, 0x03, 0x0b, 0x05, + 0x9e, 0x07, 0x0a, 0x0a, 0x74, 0x0c, 0xbf, 0x0e, 0x00, 0x0f, 0x61, 0x10, 0x6d, 0x11, 0x54, 0x12, + 0x8a, 0x13, 0xbd, 0x13, 0x32, 0x14, 0x69, 0x13, 0x6c, 0x12, 0x27, 0x11, 0x16, 0x0e, 0x57, 0x0a, + 0x22, 0x05, 0xd9, 0xff, 0x8d, 0xfb, 0x7c, 0xf7, 0xc6, 0xf5, 0x54, 0xf3, 0x47, 0xf1, 0x65, 0xf0, + 0xf4, 0xef, 0x51, 0xf0, 0x9f, 0xef, 0x8c, 0xef, 0x8c, 0xef, 0x9c, 0xee, 0x83, 0xef, 0x57, 0xf0, + 0x10, 0xf2, 0x00, 0xf5, 0x6a, 0xf7, 0xd1, 0xfa, 0x53, 0xfc, 0xce, 0xfd, 0x97, 0xff, 0xcb, 0x00, + 0xc4, 0x02, 0x75, 0x04, 0xf1, 0x06, 0x53, 0x08, 0xf2, 0x08, 0xfd, 0x09, 0xa2, 0x09, 0x1c, 0x09, + 0x2c, 0x07, 0x17, 0x04, 0xb2, 0x02, 0x7d, 0x01, 0x1b, 0x02, 0x5c, 0x02, 0x9b, 0x01, 0x7d, 0x01, + 0x0c, 0x01, 0xf7, 0x01, 0xe8, 0x01, 0x11, 0x02, 0xe9, 0x02, 0x38, 0x02, 0x3f, 0x02, 0x3f, 0x02, + 0x94, 0x02, 0x5b, 0x04, 0xd8, 0x05, 0xef, 0x07, 0xb0, 0x08, 0xe6, 0x08, 0x02, 0x09, 0x58, 0x08, + 0x67, 0x08, 0xe5, 0x07, 0x58, 0x07, 0x0b, 0x07, 0xc4, 0x05, 0x31, 0x05, 0x58, 0x03, 0xa8, 0x00, + 0xcc, 0xfc, 0x25, 0xf8, 0x5d, 0xf4, 0xdc, 0xf0, 0x46, 0xef, 0x4b, 0xef, 0xac, 0xee, 0xdc, 0xee, + 0x12, 0xef, 0xed, 0xf0, 0x51, 0xf2, 0x34, 0xf3, 0x42, 0xf4, 0x0a, 0xf4, 0x93, 0xf4, 0xc9, 0xf5, + 0xa1, 0xf6, 0xde, 0xf8, 0x14, 0xfb, 0x09, 0xfe, 0xf7, 0xff, 0xb4, 0x00, 0x53, 0x02, 0xa9, 0x03, + 0xc9, 0x05, 0xf5, 0x07, 0xf3, 0x09, 0x99, 0x0c, 0x6b, 0x0d, 0x72, 0x0e, 0xac, 0x0e, 0x1f, 0x0e, + 0x4f, 0x0d, 0x48, 0x0a, 0xce, 0x07, 0x9c, 0x05, 0xb0, 0x03, 0x05, 0x03, 0x1f, 0x01, 0x07, 0x00, + 0xc1, 0xfe, 0x15, 0xff, 0xde, 0xff, 0x65, 0xff, 0x9f, 0xff, 0xc5, 0xfe, 0x16, 0xfd, 0xc1, 0xfc, + 0xc5, 0xfb, 0x58, 0xfc, 0x06, 0xfd, 0x00, 0xfe, 0xdd, 0xfe, 0xe1, 0xfd, 0xef, 0xfd, 0xa4, 0xfd, + 0xf3, 0xfd, 0xf4, 0xfe, 0xb7, 0xff, 0x97, 0x01, 0xf2, 0x01, 0xe6, 0x02, 0x66, 0x03, 0xc2, 0x02, + 0xaa, 0x01, 0xc2, 0xfe, 0xee, 0xfb, 0x91, 0xf9, 0x55, 0xf7, 0x3f, 0xf7, 0x0e, 0xf7, 0x94, 0xf7, + 0x50, 0xf8, 0x48, 0xfa, 0xc9, 0xfc, 0x29, 0xfe, 0x8e, 0xff, 0x6a, 0x00, 0x30, 0x00, 0x24, 0x01, + 0x62, 0x01, 0xe1, 0x02, 0xb2, 0x04, 0x8c, 0x06, 0xed, 0x08, 0xa0, 0x09, 0x36, 0x0a, 0x97, 0x0a, + 0xd7, 0x0a, 0xf1, 0x0b, 0xa4, 0x0b, 0x6b, 0x0c, 0xe7, 0x0b, 0xd1, 0x0a, 0xd5, 0x09, 0xe8, 0x07, + 0x44, 0x06, 0x40, 0x03, 0x91, 0xff, 0x33, 0xfc, 0xd0, 0xf8, 0x9c, 0xf7, 0xfc, 0xf5, 0xfd, 0xf3, + 0x76, 0xf2, 0x8f, 0xf1, 0xad, 0xf1, 0x51, 0xf1, 0xad, 0xf0, 0x35, 0xf1, 0x8b, 0xf0, 0x06, 0xf1, + 0xe6, 0xf1, 0xd9, 0xf3, 0xcf, 0xf6, 0xe7, 0xf9, 0x18, 0xfe, 0x75, 0x00, 0xc8, 0x02, 0xcc, 0x04, + 0x1e, 0x06, 0x23, 0x08, 0x17, 0x09, 0xd8, 0x0a, 0xde, 0x0b, 0x51, 0x0c, 0x35, 0x0d, 0x20, 0x0d, + 0x05, 0x0d, 0x74, 0x0b, 0x3b, 0x08, 0xba, 0x05, 0xa0, 0x02, 0x3f, 0x01, 0xd5, 0x00, 0xca, 0x00, + 0x96, 0x00, 0x5c, 0x00, 0xa5, 0x01, 0x9d, 0x02, 0xe7, 0x02, 0xaa, 0x03, 0xda, 0x02, 0xe6, 0x02, + 0xb7, 0x02, 0x8b, 0x02, 0x33, 0x03, 0x50, 0x03, 0x99, 0x04, 0xdc, 0x04, 0x27, 0x04, 0x47, 0x04, + 0x56, 0x03, 0x92, 0x03, 0xf3, 0x02, 0xb3, 0x02, 0xb5, 0x02, 0x7f, 0x01, 0x22, 0x01, 0x1f, 0x00, + 0x93, 0xfe, 0xe2, 0xfc, 0xc0, 0xf8, 0x45, 0xf5, 0x8f, 0xf1, 0x07, 0xef, 0x3e, 0xee, 0x5c, 0xed, + 0x6f, 0xed, 0x92, 0xed, 0x2d, 0xef, 0xad, 0xf1, 0x33, 0xf3, 0x92, 0xf5, 0xb3, 0xf6, 0x6c, 0xf7, + 0x71, 0xf8, 0x40, 0xf9, 0xdf, 0xfb, 0x67, 0xfe, 0xee, 0x01, 0xf3, 0x04, 0xdc, 0x06, 0xcc, 0x08, + 0x17, 0x0a, 0x10, 0x0c, 0x94, 0x0d, 0x08, 0x0f, 0xce, 0x10, 0x28, 0x11, 0x23, 0x12, 0xd8, 0x11, + 0xb4, 0x10, 0x70, 0x0f, 0x9e, 0x0b, 0xc5, 0x08, 0x5a, 0x05, 0x74, 0x01, 0x41, 0x00, 0xd4, 0xfe, + 0xab, 0xfd, 0x39, 0xfc, 0x8b, 0xfb, 0x42, 0xfc, 0x84, 0xfc, 0xe4, 0xfc, 0x6e, 0xfc, 0x46, 0xfb, + 0x53, 0xfa, 0x3b, 0xf9, 0xe0, 0xf8, 0x98, 0xf8, 0x97, 0xf9, 0xb5, 0xfa, 0xec, 0xfa, 0xab, 0xfb, + 0x57, 0xfb, 0x75, 0xfb, 0xe1, 0xfb, 0x5d, 0xfb, 0x02, 0xfd, 0xbb, 0xfd, 0xda, 0xfd, 0xc1, 0xfe, + 0xae, 0xfe, 0xeb, 0xfe, 0xe5, 0xfd, 0x10, 0xfc, 0x72, 0xfa, 0x13, 0xf8, 0x09, 0xf7, 0xc3, 0xf6, + 0x9b, 0xf6, 0x0e, 0xf6, 0x77, 0xf6, 0x4e, 0xf8, 0x9b, 0xf9, 0x2e, 0xfb, 0x66, 0xfc, 0x04, 0xfd, + 0x40, 0xfe, 0xe6, 0xfe, 0xed, 0x00, 0x7e, 0x03, 0xc4, 0x06, 0xa5, 0x0a, 0xcd, 0x0c, 0xe2, 0x0e, + 0x05, 0x10, 0xa5, 0x10, 0x3c, 0x12, 0xcf, 0x12, 0x15, 0x14, 0x89, 0x14, 0x17, 0x14, 0xe3, 0x13, + 0x34, 0x12, 0xdd, 0x10, 0x5c, 0x0e, 0x8a, 0x0a, 0xc0, 0x06, 0x98, 0x01, 0x5d, 0xfe, 0x6d, 0xfb, + 0x67, 0xf8, 0x4c, 0xf6, 0xdc, 0xf3, 0xdb, 0xf2, 0x54, 0xf2, 0x51, 0xf1, 0xf9, 0xf0, 0x48, 0xef, + 0x32, 0xee, 0xed, 0xec, 0x18, 0xed, 0xfa, 0xed, 0x8e, 0xef, 0xbb, 0xf2, 0xea, 0xf4, 0x1a, 0xf7, + 0xa7, 0xf8, 0x9d, 0xf9, 0x4d, 0xfc, 0xe3, 0xfd, 0xef, 0xff, 0x33, 0x02, 0x3c, 0x03, 0x31, 0x05, + 0x44, 0x06, 0xce, 0x06, 0x9a, 0x07, 0x8b, 0x06, 0xf4, 0x05, 0x10, 0x04, 0xa2, 0x02, 0xdb, 0x01, + 0x29, 0x01, 0xe7, 0x00, 0x4b, 0x00, 0x0d, 0x01, 0x89, 0x02, 0x2a, 0x03, 0x29, 0x04, 0x2b, 0x04, + 0xf4, 0x03, 0xe1, 0x03, 0xa9, 0x03, 0xd7, 0x04, 0x1f, 0x06, 0xa2, 0x07, 0xea, 0x08, 0x70, 0x09, + 0x6f, 0x0a, 0xfb, 0x09, 0xc9, 0x0a, 0x5a, 0x0a, 0x77, 0x0a, 0xc1, 0x0a, 0xc9, 0x09, 0xfd, 0x08, + 0x3f, 0x07, 0xd1, 0x05, 0x9c, 0x04, 0xc8, 0x00, 0x95, 0xfd, 0x26, 0xf9, 0xe7, 0xf4, 0xd1, 0xf2, + 0xe3, 0xf0, 0xf8, 0xef, 0xe2, 0xef, 0xba, 0xf0, 0x3c, 0xf3, 0xc8, 0xf4, 0x72, 0xf6, 0x01, 0xf7, + 0x3b, 0xf7, 0x6f, 0xf7, 0x8f, 0xf7, 0x72, 0xf8, 0x5a, 0xf9, 0x5b, 0xfb, 0xa4, 0xfd, 0x6b, 0xff, + 0x92, 0x01, 0xa6, 0x02, 0x65, 0x04, 0xba, 0x05, 0x7f, 0x06, 0x24, 0x08, 0x1c, 0x09, 0x2f, 0x0a, + 0xc5, 0x0a, 0x60, 0x0a, 0xb9, 0x0a, 0x40, 0x09, 0xef, 0x07, 0x9e, 0x05, 0xcc, 0x02, 0xbd, 0x00, + 0x5c, 0xff, 0xd7, 0xfe, 0x07, 0xfe, 0xcb, 0xfc, 0x0a, 0xfd, 0xd4, 0xfc, 0x55, 0xfd, 0xa7, 0xfd, + 0x87, 0xfc, 0x44, 0xfc, 0x63, 0xfb, 0x87, 0xfb, 0xee, 0xfb, 0xb7, 0xfc, 0xa2, 0xfe, 0x9d, 0xff, + 0x64, 0x00, 0x90, 0x00, 0xd7, 0x00, 0x4a, 0x01, 0x04, 0x01, 0x72, 0x01, 0x48, 0x01, 0x38, 0x01, + 0x6f, 0x01, 0xcc, 0x00, 0xa1, 0x01, 0x6b, 0x01, 0x5d, 0x00, 0xe1, 0xfe, 0x3e, 0xfc, 0x87, 0xfa, + 0x12, 0xf9, 0xb9, 0xf8, 0x94, 0xf8, 0x3f, 0xf8, 0x8b, 0xf9, 0x37, 0xfb, 0xb8, 0xfc, 0x7f, 0xfe, + 0xeb, 0xfe, 0x80, 0xff, 0x21, 0xff, 0x83, 0xff, 0x1a, 0x01, 0xf5, 0x01, 0x42, 0x04, 0x12, 0x06, + 0xa7, 0x07, 0x12, 0x08, 0x1a, 0x08, 0xfb, 0x08, 0xd0, 0x08, 0x5d, 0x09, 0x29, 0x0a, 0x44, 0x0a, + 0xcf, 0x0a, 0x31, 0x0a, 0xae, 0x09, 0xc5, 0x08, 0xfe, 0x06, 0xd2, 0x04, 0x99, 0x00, 0x5e, 0xfd, + 0xcb, 0xfa, 0x68, 0xf8, 0xd5, 0xf6, 0x85, 0xf4, 0x77, 0xf3, 0xba, 0xf3, 0xb5, 0xf3, 0xe9, 0xf3, + 0x9b, 0xf3, 0xaa, 0xf3, 0xe5, 0xf2, 0x2c, 0xf2, 0xc8, 0xf2, 0x87, 0xf3, 0x26, 0xf6, 0xc3, 0xf8, + 0x62, 0xfb, 0xca, 0xfd, 0xc9, 0xfe, 0xfd, 0x00, 0x7e, 0x02, 0x7f, 0x04, 0xbd, 0x06, 0x98, 0x07, + 0x7e, 0x08, 0x61, 0x08, 0x27, 0x08, 0xcc, 0x08, 0xd2, 0x07, 0x73, 0x06, 0xf6, 0x03, 0x42, 0x01, + 0x83, 0xff, 0x9b, 0xfe, 0x90, 0xfe, 0x49, 0xfe, 0x2c, 0xff, 0x5b, 0x01, 0xea, 0x02, 0xc6, 0x04, + 0x59, 0x05, 0x70, 0x05, 0xc1, 0x04, 0x33, 0x04, 0xa4, 0x04, 0xd8, 0x04, 0x10, 0x06, 0x83, 0x07, + 0x13, 0x08, 0xf0, 0x08, 0x47, 0x08, 0x5c, 0x08, 0x65, 0x08, 0xf7, 0x07, 0x4b, 0x08, 0x8c, 0x07, + 0xd6, 0x06, 0x82, 0x05, 0xaa, 0x03, 0x3b, 0x02, 0x8d, 0xff, 0x60, 0xfd, 0x3d, 0xfa, 0x4c, 0xf6, + 0xc7, 0xf2, 0x2d, 0xf0, 0x91, 0xee, 0x19, 0xed, 0x15, 0xec, 0x55, 0xed, 0x58, 0xee, 0x71, 0xf0, + 0x56, 0xf2, 0xaa, 0xf3, 0x20, 0xf5, 0x0d, 0xf6, 0x0c, 0xf8, 0x90, 0xf9, 0x27, 0xfc, 0xa9, 0xff, + 0xe7, 0x02, 0xa8, 0x06, 0xc1, 0x08, 0xcc, 0x0a, 0xc3, 0x0c, 0xd2, 0x0d, 0xd2, 0x0f, 0x0f, 0x11, + 0xac, 0x11, 0x65, 0x12, 0xa9, 0x11, 0x39, 0x12, 0xc3, 0x11, 0x7b, 0x10, 0x3d, 0x0e, 0x7e, 0x0a, + 0x24, 0x07, 0x3f, 0x04, 0x48, 0x02, 0x17, 0x01, 0x50, 0xff, 0xfd, 0xfe, 0xca, 0xfe, 0x40, 0xfe, + 0xb5, 0xfd, 0x9f, 0xfc, 0x8e, 0xfb, 0x85, 0xf9, 0x7f, 0xf8, 0x6e, 0xf8, 0x12, 0xf8, 0x5e, 0xf8, + 0x8a, 0xf8, 0x34, 0xf9, 0x24, 0xf9, 0xb8, 0xf8, 0xf3, 0xf8, 0xd0, 0xf8, 0x28, 0xf9, 0xb8, 0xf9, + 0xd0, 0xf9, 0x60, 0xfa, 0xfd, 0xf9, 0x3a, 0xfb, 0xaa, 0xfb, 0x04, 0xfc, 0xb0, 0xfc, 0x55, 0xfb, + 0xac, 0xf9, 0xa7, 0xf8, 0xc8, 0xf7, 0xcb, 0xf7, 0x51, 0xf7, 0x05, 0xf8, 0xb5, 0xf8, 0x37, 0xfa, + 0xac, 0xfc, 0x84, 0xfd, 0xc8, 0xfe, 0x11, 0x00, 0x0d, 0x01, 0x99, 0x02, 0xd2, 0x03, 0x0f, 0x07, + 0x5e, 0x09, 0x1f, 0x0c, 0xd0, 0x0e, 0x8a, 0x0f, 0x92, 0x10, 0x12, 0x11, 0xc5, 0x11, 0xb0, 0x12, + 0x50, 0x12, 0xe3, 0x12, 0xae, 0x11, 0xd7, 0x10, 0x37, 0x10, 0xf8, 0x0d, 0x77, 0x0b, 0xcc, 0x07, + 0x48, 0x03, 0x97, 0xfe, 0x4d, 0xfb, 0x9c, 0xf9, 0x04, 0xf7, 0x82, 0xf5, 0xc0, 0xf5, 0xbe, 0xf5, + 0x93, 0xf5, 0xf1, 0xf4, 0x10, 0xf4, 0x82, 0xf2, 0xc3, 0xf0, 0x3b, 0xf0, 0xfa, 0xee, 0x9f, 0xef, + 0xed, 0xf0, 0x9d, 0xf2, 0x57, 0xf5, 0x53, 0xf6, 0x65, 0xf8, 0x47, 0xfa, 0xbd, 0xfb, 0xe4, 0xfd, + 0x31, 0xff, 0x2f, 0x01, 0xe6, 0x01, 0x0f, 0x02, 0xf0, 0x02, 0xcb, 0x02, 0x0e, 0x03, 0x56, 0x02, + 0xa7, 0x00, 0x8c, 0xff, 0xa5, 0xfd, 0x55, 0xfd, 0xe8, 0xfc, 0x6f, 0xfc, 0xe3, 0xfd, 0xcb, 0xfe, + 0xb3, 0x00, 0x0e, 0x02, 0x5c, 0x03, 0x0c, 0x04, 0xd7, 0x03, 0xa7, 0x04, 0x87, 0x04, 0x84, 0x05, + 0xb9, 0x07, 0xd2, 0x09, 0x35, 0x0c, 0x33, 0x0d, 0xc2, 0x0d, 0x3d, 0x0e, 0xa1, 0x0d, 0x3f, 0x0e, + 0x9a, 0x0e, 0xec, 0x0d, 0xe2, 0x0c, 0x56, 0x0a, 0xfc, 0x08, 0x2e, 0x07, 0xb1, 0x04, 0x5c, 0x02, + 0x87, 0xfe, 0xb2, 0xfa, 0x03, 0xf7, 0x57, 0xf4, 0xcb, 0xf2, 0xb4, 0xf0, 0x13, 0xf0, 0x2a, 0xf0, + 0x02, 0xf1, 0x0f, 0xf2, 0xd9, 0xf2, 0x41, 0xf4, 0x9b, 0xf4, 0x5d, 0xf5, 0x43, 0xf6, 0x0f, 0xf7, + 0x0b, 0xf9, 0xe9, 0xfa, 0x3e, 0xfd, 0xa7, 0xff, 0x66, 0x01, 0xc3, 0x02, 0xba, 0x03, 0xb3, 0x04, + 0x63, 0x06, 0x6d, 0x08, 0x8b, 0x09, 0xbc, 0x09, 0xa9, 0x0a, 0x64, 0x0b, 0x54, 0x0c, 0xa6, 0x0c, + 0xb2, 0x0b, 0x44, 0x09, 0xed, 0x05, 0xda, 0x03, 0x13, 0x03, 0x3b, 0x01, 0x17, 0x02, 0x2c, 0x02, + 0xc2, 0x01, 0x4a, 0x02, 0x5c, 0x02, 0xc2, 0x01, 0xd9, 0x00, 0xe7, 0x00, 0xff, 0x00, 0x12, 0x00, + 0xd0, 0xff, 0x21, 0x01, 0x2e, 0x02, 0x61, 0x02, 0x16, 0x02, 0xf7, 0x01, 0x48, 0x00, 0x20, 0x00, + 0x45, 0x00, 0x98, 0xfe, 0x50, 0xfe, 0x41, 0xfd, 0xa1, 0xfb, 0xb9, 0xf9, 0x13, 0xf9, 0x8d, 0xf8, + 0xb6, 0xf6, 0x08, 0xf4, 0x8f, 0xf1, 0x9d, 0xef, 0x34, 0xef, 0x31, 0xef, 0xc4, 0xef, 0x92, 0xf1, + 0xc8, 0xf2, 0xa3, 0xf4, 0x48, 0xf6, 0x58, 0xf8, 0x2b, 0xfa, 0x46, 0xfa, 0xcb, 0xfb, 0x68, 0xfb, + 0x8a, 0xfc, 0x36, 0xff, 0x90, 0x01, 0x47, 0x05, 0xb9, 0x08, 0x6e, 0x0a, 0xd5, 0x0a, 0xcd, 0x0a, + 0x69, 0x0b, 0x97, 0x0b, 0x93, 0x0c, 0x5a, 0x0c, 0x12, 0x0b, 0x0b, 0x0b, 0x4d, 0x0a, 0xdd, 0x09, + 0x74, 0x08, 0xb3, 0x05, 0xeb, 0x01, 0xa7, 0xfc, 0x57, 0xfa, 0xf2, 0xf8, 0x77, 0xf6, 0x43, 0xf5, + 0x7a, 0xf4, 0x0b, 0xf4, 0x19, 0xf4, 0x4a, 0xf4, 0x88, 0xf3, 0x7d, 0xf2, 0x53, 0xf3, 0xa8, 0xf1, + 0xb6, 0xf0, 0x53, 0xf2, 0x16, 0xf5, 0x6a, 0xf7, 0x43, 0xfa, 0x34, 0xfc, 0xe3, 0xfd, 0xdf, 0xfe, + 0xc3, 0x00, 0xa1, 0x02, 0x9c, 0x03, 0x56, 0x05, 0xc9, 0x05, 0x83, 0x04, 0x10, 0x05, 0x74, 0x06, + 0x20, 0x05, 0x8d, 0x02, 0xcf, 0x01, 0xa6, 0x00, 0x6a, 0xfe, 0x86, 0xfd, 0xdf, 0xfc, 0xf9, 0xfc, + 0x4f, 0xfe, 0x85, 0x00, 0x4b, 0x02, 0xff, 0x01, 0x1d, 0x04, 0x5e, 0x04, 0xd7, 0x02, 0x4f, 0x03, + 0x6b, 0x05, 0xc3, 0x06, 0x39, 0x08, 0xc5, 0x0b, 0xea, 0x0c, 0x7e, 0x0d, 0xea, 0x0d, 0x85, 0x0c, + 0x50, 0x0c, 0x16, 0x0d, 0x83, 0x0d, 0xcc, 0x0d, 0x10, 0x0d, 0xaa, 0x0c, 0x36, 0x0a, 0x2a, 0x08, + 0xbc, 0x06, 0x8a, 0x05, 0x13, 0x03, 0x9b, 0xff, 0xa1, 0xfb, 0xe3, 0xf8, 0x59, 0xf6, 0xbb, 0xf3, + 0x60, 0xf2, 0xa4, 0xf3, 0x6b, 0xf5, 0xcd, 0xf6, 0xaa, 0xf8, 0x28, 0xf9, 0x19, 0xfb, 0xf8, 0xfa, + 0x11, 0xfc, 0x06, 0xff, 0x2f, 0x01, 0xaf, 0x04, 0x5e, 0x09, 0x6a, 0x0c, 0x00, 0x0f, 0x60, 0x0f, + 0x13, 0x10, 0xa1, 0x10, 0x01, 0x11, 0x7c, 0x13, 0x15, 0x15, 0xe3, 0x13, 0x9f, 0x13, 0xd9, 0x13, + 0x3a, 0x12, 0x4d, 0x10, 0x66, 0x0f, 0x9c, 0x0d, 0x60, 0x08, 0xda, 0x06, 0x4f, 0x05, 0x89, 0x02, + 0xfa, 0x01, 0xad, 0x02, 0xee, 0x03, 0xec, 0x02, 0x6b, 0x05, 0x65, 0x03, 0x9f, 0x00, 0x67, 0x00, + 0x5b, 0xfe, 0x3d, 0xfe, 0xda, 0xfc, 0x6c, 0xfc, 0x22, 0xfd, 0x5c, 0xfe, 0x99, 0xfc, 0x3e, 0xfd, + 0x73, 0xfb, 0x61, 0xfa, 0xba, 0xf8, 0xc5, 0xf8, 0xeb, 0xf6, 0x5d, 0xf6, 0x70, 0xf6, 0x8a, 0xf2, + 0x6b, 0xf3, 0x73, 0xf2, 0x61, 0xf1, 0xa2, 0xee, 0xd5, 0xeb, 0x58, 0xea, 0x15, 0xea, 0x95, 0xea, + 0xf6, 0xe9, 0xf9, 0xeb, 0x3c, 0xed, 0x2c, 0xed, 0xf5, 0xeb, 0xe3, 0xed, 0xf8, 0xef, 0x39, 0xf0, + 0xa7, 0xf1, 0x46, 0xf4, 0x97, 0xf7, 0x93, 0xf8, 0x6d, 0xfb, 0x0d, 0xfd, 0xab, 0x01, 0x61, 0x04, + 0x15, 0x04, 0x4f, 0x08, 0x12, 0x09, 0x0b, 0x09, 0x92, 0x09, 0xd9, 0x08, 0xcd, 0x0d, 0x41, 0x07, + 0x3b, 0x07, 0xb7, 0x0c, 0xa9, 0x06, 0x25, 0x08, 0x4d, 0x05, 0xfb, 0xfc, 0xac, 0xfb, 0xe8, 0xf9, + 0x97, 0xf9, 0x24, 0xfa, 0xd4, 0xf9, 0x79, 0xfb, 0x3c, 0xfc, 0xa6, 0xfb, 0xa2, 0xf8, 0x56, 0xf3, + 0xae, 0xf6, 0xdf, 0xf3, 0xb1, 0xee, 0xca, 0xef, 0x32, 0xf0, 0xca, 0xed, 0x74, 0xf2, 0x48, 0xf7, + 0x81, 0xf5, 0x62, 0xf7, 0x88, 0xfa, 0x04, 0xfc, 0x3f, 0xfe, 0x22, 0x01, 0xf2, 0x00, 0x17, 0x00, + 0x93, 0x01, 0xbb, 0x01, 0x6f, 0x04, 0x2a, 0x05, 0xd6, 0x02, 0x11, 0x06, 0xb5, 0x02, 0xcd, 0x02, + 0xf1, 0x04, 0xd9, 0x05, 0xca, 0x09, 0xf8, 0x04, 0x38, 0x08, 0x28, 0x0b, 0xb2, 0x09, 0x3d, 0x0d, + 0x6d, 0x09, 0x69, 0x03, 0x88, 0x05, 0x88, 0x05, 0x24, 0x08, 0xb9, 0x09, 0xdc, 0x06, 0x60, 0x09, + 0xf9, 0x05, 0xb7, 0x02, 0xee, 0x04, 0x6c, 0x03, 0x9b, 0x02, 0x84, 0x00, 0x2b, 0x01, 0x11, 0x05, + 0xfc, 0x03, 0xac, 0x00, 0xea, 0xff, 0x2c, 0xf7, 0x94, 0xf0, 0x0f, 0xf0, 0x63, 0xee, 0x47, 0xf0, + 0xf2, 0xee, 0x46, 0xeb, 0x6b, 0xec, 0x0e, 0xef, 0x77, 0xf1, 0x13, 0xf3, 0xdb, 0xf5, 0xdb, 0xfa, + 0xd4, 0xfb, 0xc0, 0xfe, 0x48, 0x01, 0xb3, 0x04, 0x91, 0x08, 0x34, 0x0b, 0x43, 0x09, 0xe5, 0x0e, + 0x6b, 0x14, 0xc8, 0x19, 0x83, 0x19, 0x3d, 0x18, 0xfa, 0x19, 0x87, 0x17, 0x1a, 0x1a, 0x7b, 0x1b, + 0xeb, 0x19, 0x49, 0x1e, 0x80, 0x20, 0xed, 0x19, 0x4a, 0x18, 0x6f, 0x1c, 0xb8, 0x18, 0x35, 0x19, + 0x04, 0x1a, 0x2a, 0x14, 0xa4, 0x13, 0xf9, 0x16, 0x87, 0x15, 0xc4, 0x19, 0xbf, 0x14, 0xff, 0x11, + 0x9a, 0x14, 0x2c, 0x0f, 0xa2, 0x0f, 0x08, 0x0e, 0xbc, 0x0c, 0x87, 0x0f, 0x9e, 0x0c, 0x18, 0x0f, + 0x50, 0x0f, 0x85, 0x0a, 0x51, 0x0d, 0x1c, 0x0b, 0xfb, 0x06, 0xc2, 0x04, 0x3e, 0xfe, 0x88, 0xfd, + 0x4a, 0xfc, 0x6b, 0xf3, 0x67, 0xf4, 0xa7, 0xf2, 0x47, 0xe8, 0xa2, 0xe7, 0xf0, 0xe0, 0xbd, 0xe0, + 0x15, 0xe3, 0x3c, 0xdd, 0x20, 0xdd, 0x2b, 0xdf, 0xa2, 0xe0, 0x25, 0xe6, 0xe0, 0xe2, 0x82, 0xe0, + 0xf3, 0xe3, 0x16, 0xe1, 0x5c, 0xe3, 0x59, 0xe7, 0x42, 0xe9, 0x95, 0xeb, 0xdd, 0xe9, 0x4d, 0xef, + 0xd7, 0xf2, 0x22, 0xf3, 0xe7, 0xfa, 0x9c, 0xfb, 0xf4, 0xff, 0xe9, 0x03, 0xeb, 0x01, 0xf8, 0x05, + 0x36, 0x03, 0x7c, 0x01, 0x28, 0x07, 0xdb, 0x06, 0xf0, 0x00, 0x0d, 0x05, 0x51, 0x03, 0x8f, 0xfe, + 0xf5, 0xfe, 0x3a, 0xfd, 0x9f, 0xf7, 0xc2, 0xf8, 0x10, 0xfe, 0xd6, 0xfd, 0x68, 0xf9, 0x81, 0xf9, + 0x4a, 0xf9, 0x64, 0xf6, 0x8b, 0xf9, 0xe2, 0xf6, 0xd0, 0xf5, 0x75, 0xf7, 0x06, 0xfb, 0x08, 0xfa, + 0x27, 0xfc, 0xd5, 0xfa, 0x06, 0xf9, 0x31, 0xf7, 0x8e, 0xf1, 0x58, 0xf8, 0x2d, 0xf4, 0x48, 0xee, + 0xf6, 0xf2, 0x3a, 0xf3, 0x07, 0xf9, 0x2e, 0xfb, 0xd8, 0xf5, 0x9b, 0xf4, 0xd3, 0xf2, 0x30, 0xf1, + 0x7f, 0xf3, 0x70, 0xf0, 0xc5, 0xee, 0xf1, 0xf2, 0x7e, 0xf2, 0xfb, 0xf1, 0xd6, 0xf6, 0x1c, 0xf5, + 0x7d, 0xf8, 0x4b, 0xfb, 0x75, 0xfb, 0xaa, 0xfc, 0xd2, 0xfe, 0xec, 0x06, 0x21, 0x05, 0x22, 0x05, + 0x60, 0x0a, 0x42, 0x0c, 0x24, 0x10, 0x38, 0x12, 0xd3, 0x13, 0xb4, 0x13, 0x0f, 0x13, 0xbf, 0x0e, + 0xe1, 0x0c, 0x0b, 0x0e, 0x59, 0x0d, 0x32, 0x0f, 0x00, 0x0c, 0x0d, 0x09, 0x80, 0x08, 0x4e, 0x02, + 0x62, 0x02, 0xc3, 0x00, 0x88, 0xfe, 0x9f, 0xff, 0x04, 0x03, 0xb3, 0x02, 0xad, 0x00, 0x96, 0xfc, + 0xea, 0xfa, 0x73, 0xfb, 0xaf, 0xf9, 0x1a, 0xfe, 0x88, 0xfa, 0x66, 0xfe, 0x79, 0x02, 0x80, 0x02, + 0xba, 0x04, 0x14, 0x05, 0xdb, 0x0b, 0x19, 0x0f, 0x24, 0x0b, 0x17, 0x0b, 0x40, 0x0e, 0x36, 0x0c, + 0x27, 0x09, 0x50, 0x0c, 0x92, 0x0b, 0x2d, 0x0d, 0x13, 0x13, 0x3b, 0x12, 0x39, 0x0d, 0xaa, 0x0c, + 0xae, 0x0e, 0x76, 0x0d, 0xc2, 0x0d, 0xf6, 0x0d, 0x3b, 0x0f, 0x67, 0x0e, 0x5a, 0x13, 0x5f, 0x13, + 0x92, 0x0f, 0x3b, 0x14, 0x72, 0x14, 0xa4, 0x11, 0x91, 0x12, 0x59, 0x12, 0x67, 0x15, 0x4d, 0x15, + 0x2e, 0x16, 0x08, 0x16, 0xb7, 0x14, 0xf5, 0x1a, 0x47, 0x1a, 0x1a, 0x15, 0x75, 0x13, 0x82, 0x10, + 0x14, 0x11, 0x30, 0x14, 0x9b, 0x12, 0x26, 0x0f, 0xca, 0x0a, 0x68, 0x08, 0x72, 0x0a, 0x3e, 0x06, + 0xa3, 0xff, 0xa0, 0xfe, 0xce, 0xfa, 0x18, 0xf3, 0x59, 0xf7, 0xf1, 0xf6, 0xb2, 0xf3, 0x5b, 0xf4, + 0xd6, 0xf2, 0x68, 0xf3, 0x3a, 0xf2, 0x06, 0xf2, 0x41, 0xef, 0x84, 0xe8, 0xd8, 0xeb, 0xbc, 0xec, + 0x47, 0xe9, 0x58, 0xe9, 0x89, 0xe9, 0x3a, 0xe9, 0x00, 0xe9, 0xe0, 0xe6, 0xf3, 0xe6, 0x9c, 0xe8, + 0xb5, 0xe7, 0x8c, 0xeb, 0xd1, 0xea, 0x61, 0xeb, 0x1e, 0xf4, 0x65, 0xf0, 0xcb, 0xec, 0x7b, 0xec, + 0x09, 0xea, 0x78, 0xec, 0x6b, 0xed, 0x5c, 0xec, 0x2a, 0xe9, 0x74, 0xe8, 0x55, 0xe9, 0x9a, 0xed, + 0x67, 0xed, 0xfb, 0xec, 0xaf, 0xf2, 0x29, 0xee, 0x4d, 0xea, 0x4f, 0xeb, 0x50, 0xec, 0xbf, 0xee, + 0x2d, 0xf0, 0x7f, 0xf0, 0x39, 0xef, 0x0e, 0xf4, 0xd1, 0xfa, 0x4b, 0xfa, 0x67, 0xf8, 0x02, 0xf6, + 0xbd, 0xf7, 0x12, 0xfe, 0x07, 0x00, 0x27, 0x01, 0x5c, 0x02, 0x37, 0x00, 0x0e, 0x00, 0xd8, 0x01, + 0x06, 0x01, 0x4a, 0xfe, 0xfb, 0xfa, 0xcb, 0xf9, 0x2f, 0xfb, 0xc1, 0xff, 0x2c, 0xff, 0x78, 0x03, + 0x9c, 0x02, 0xa6, 0x03, 0xe0, 0x08, 0x7e, 0x0e, 0x2d, 0x0b, 0x8b, 0x08, 0x21, 0x0e, 0x57, 0x11, + 0xdb, 0x11, 0x8e, 0x15, 0xb4, 0x17, 0xae, 0x17, 0xa9, 0x1b, 0x65, 0x1b, 0x5c, 0x1b, 0x6f, 0x1a, + 0xb7, 0x19, 0x17, 0x16, 0x22, 0x18, 0x51, 0x17, 0xcf, 0x15, 0xbf, 0x16, 0x7a, 0x13, 0xd6, 0x10, + 0xa8, 0x0b, 0xf1, 0x06, 0x16, 0x08, 0xc9, 0x03, 0x71, 0x04, 0x35, 0x03, 0x9c, 0xff, 0x78, 0x04, + 0xfe, 0x03, 0x90, 0xfc, 0xe9, 0x00, 0x35, 0xfd, 0xb2, 0xf6, 0x4a, 0xf6, 0x77, 0xf3, 0x78, 0xf7, + 0xb9, 0xf9, 0x67, 0xfb, 0x1f, 0xfa, 0x9e, 0xf8, 0x55, 0x01, 0x91, 0xfe, 0xfa, 0xfa, 0x50, 0xfe, + 0xee, 0xf7, 0x30, 0xf8, 0x5b, 0xfd, 0x35, 0xfc, 0xc1, 0xfb, 0x75, 0xfa, 0x03, 0xfb, 0x37, 0xfa, + 0x38, 0xfd, 0xca, 0x01, 0x34, 0xfd, 0x61, 0xfc, 0x3a, 0x00, 0xc6, 0x02, 0x35, 0x05, 0x52, 0x07, + 0x20, 0x0a, 0xc3, 0x0a, 0xa5, 0x09, 0x97, 0x0d, 0xb0, 0x11, 0xb5, 0x0d, 0xcd, 0x0b, 0xd2, 0x0d, + 0xf8, 0x0e, 0xbb, 0x0e, 0xe9, 0x11, 0x89, 0x11, 0xb6, 0x0d, 0x67, 0x0c, 0x27, 0x0b, 0xbf, 0x0a, + 0x79, 0x06, 0x8d, 0x02, 0x5c, 0x04, 0x9d, 0x01, 0xa1, 0x01, 0x27, 0x0a, 0xe8, 0x06, 0x4a, 0x04, + 0xc4, 0x05, 0x05, 0x00, 0xe8, 0xfa, 0x6b, 0xfd, 0xb6, 0xf8, 0xe9, 0xf2, 0x79, 0xf6, 0x54, 0xf8, + 0x9d, 0xf9, 0x26, 0xf8, 0xdc, 0xf8, 0x61, 0xfa, 0x12, 0xfc, 0x6e, 0xf9, 0x7d, 0xf5, 0x63, 0xf8, + 0x9d, 0xf9, 0x26, 0xf6, 0xa0, 0xf6, 0xb6, 0xf7, 0x60, 0xf7, 0x99, 0xfc, 0x52, 0xff, 0xa3, 0xff, + 0x3a, 0xfe, 0xd4, 0xff, 0x1a, 0x03, 0x45, 0x03, 0x86, 0xfe, 0xdd, 0x01, 0x15, 0x00, 0x89, 0xfa, + 0xf0, 0xfc, 0x5f, 0xfc, 0xf7, 0xf4, 0x23, 0xf4, 0x45, 0xf5, 0xff, 0xf4, 0x7a, 0xf5, 0xb2, 0xf4, + 0xc9, 0xf4, 0x3e, 0xf3, 0xc4, 0xf1, 0x65, 0xf0, 0xd4, 0xf3, 0xcd, 0xf4, 0x30, 0xec, 0x57, 0xeb, + 0x02, 0xec, 0x74, 0xe9, 0xe4, 0xef, 0xe8, 0xf2, 0x9c, 0xec, 0xc7, 0xf0, 0x74, 0xf7, 0x86, 0xf3, + 0x1f, 0xf2, 0x59, 0xf3, 0x91, 0xec, 0xf4, 0xec, 0x6c, 0xef, 0xf7, 0xf1, 0x38, 0xf7, 0x0e, 0xf9, + 0x72, 0xf9, 0xcd, 0xf7, 0x18, 0xf3, 0xd3, 0xf5, 0xe2, 0xf5, 0x5b, 0xf4, 0xa6, 0xf2, 0x45, 0xf1, + 0x99, 0xf5, 0x19, 0xf9, 0xfb, 0xf4, 0x5b, 0xf5, 0x95, 0xf7, 0xed, 0xf8, 0x10, 0xfa, 0x84, 0xfb, + 0x49, 0x03, 0xd0, 0x04, 0x00, 0x04, 0xab, 0x0b, 0xa3, 0x0d, 0x82, 0x14, 0xce, 0x18, 0x4e, 0x18, + 0x8a, 0x19, 0x1f, 0x1b, 0x8c, 0x1c, 0xba, 0x1d, 0x31, 0x20, 0x06, 0x1b, 0xd8, 0x1a, 0xe9, 0x1a, + 0x72, 0x1a, 0xef, 0x1a, 0xa4, 0x17, 0x2f, 0x11, 0xbc, 0x0b, 0x2a, 0x0b, 0xa4, 0x09, 0x6b, 0x08, + 0xb1, 0x09, 0x80, 0x08, 0x1a, 0x03, 0x4a, 0x06, 0xf7, 0x05, 0x66, 0x02, 0x49, 0x06, 0x91, 0xff, + 0x2a, 0xfe, 0x30, 0xff, 0xa4, 0xfd, 0x26, 0x03, 0xd4, 0x02, 0x40, 0x00, 0x28, 0x00, 0x2c, 0xfe, + 0x7b, 0xfc, 0xbf, 0xfb, 0xaf, 0xf9, 0x4a, 0xf9, 0x7c, 0xf9, 0xe4, 0xf6, 0xba, 0xfd, 0x94, 0xfd, + 0x91, 0xfd, 0x99, 0xfb, 0x3b, 0xf9, 0x91, 0xfa, 0x18, 0xfc, 0x47, 0xfc, 0x92, 0xfc, 0x5d, 0xff, + 0xc4, 0x00, 0x76, 0x05, 0x57, 0x06, 0x85, 0x09, 0x0b, 0x0d, 0xef, 0x0e, 0xb0, 0x12, 0x0b, 0x11, + 0x18, 0x10, 0xd1, 0x12, 0x99, 0x12, 0x07, 0x12, 0x7a, 0x15, 0x8f, 0x18, 0xc2, 0x1c, 0x3e, 0x1c, + 0xe5, 0x19, 0x45, 0x1c, 0xc6, 0x19, 0x3c, 0x1b, 0x8c, 0x19, 0x37, 0x13, 0x4d, 0x18, 0x48, 0x15, + 0x46, 0x10, 0xca, 0x11, 0x2f, 0x09, 0x19, 0x01, 0x56, 0x00, 0x57, 0xfc, 0xfe, 0xf9, 0x3b, 0xf9, + 0x08, 0xf6, 0xfe, 0xf9, 0xcd, 0xf9, 0x6c, 0xfb, 0xde, 0xfc, 0xfe, 0xfd, 0x72, 0xfd, 0x50, 0xf8, + 0x48, 0xf5, 0x87, 0xf5, 0x6e, 0xf5, 0x98, 0xf7, 0x60, 0xfa, 0xc0, 0xf6, 0x55, 0xf6, 0xc8, 0xf6, + 0xaf, 0xf8, 0x35, 0xfc, 0x3d, 0xf9, 0x3e, 0xf6, 0x5d, 0xf6, 0x48, 0xf7, 0xe7, 0xf9, 0x64, 0xff, + 0xaa, 0xfd, 0x31, 0x00, 0x27, 0xfe, 0x2b, 0xf8, 0x3d, 0xfe, 0x2b, 0xfe, 0x55, 0xfe, 0xe2, 0xfd, + 0xa0, 0xf8, 0x18, 0xfa, 0x48, 0xfc, 0x24, 0xfb, 0x79, 0xf9, 0x84, 0xf5, 0xab, 0xf3, 0xe7, 0xf0, + 0xf6, 0xec, 0xb0, 0xef, 0xe2, 0xec, 0xaf, 0xeb, 0x48, 0xf0, 0x62, 0xea, 0x9b, 0xef, 0x08, 0xf3, + 0xbb, 0xf0, 0x49, 0xf1, 0x97, 0xf1, 0xc1, 0xee, 0x8c, 0xee, 0xb6, 0xed, 0x22, 0xe9, 0x78, 0xec, + 0x4a, 0xeb, 0xed, 0xea, 0xe9, 0xec, 0x04, 0xed, 0x57, 0xeb, 0xc0, 0xe8, 0xc7, 0xe6, 0xb4, 0xe4, + 0x74, 0xe5, 0xa0, 0xe7, 0x53, 0xeb, 0x8f, 0xea, 0xba, 0xed, 0x25, 0xec, 0xf0, 0xea, 0x30, 0xf0, + 0xf1, 0xee, 0x5b, 0xf2, 0x22, 0xf6, 0xa9, 0xf7, 0xc2, 0xff, 0xca, 0x00, 0x28, 0x02, 0xfd, 0x04, + 0xdf, 0x01, 0x0d, 0x03, 0x85, 0x07, 0xbc, 0x03, 0x3d, 0x06, 0x24, 0x09, 0xa4, 0x03, 0x24, 0x08, + 0x32, 0x0a, 0xe4, 0x0b, 0xdd, 0x0c, 0xe9, 0x0c, 0x20, 0x0a, 0x33, 0x08, 0x41, 0x07, 0x8d, 0x02, + 0xe6, 0x02, 0x1b, 0x05, 0xa4, 0x05, 0xfa, 0x02, 0x82, 0x04, 0x15, 0x03, 0x11, 0x05, 0x81, 0x0a, + 0x27, 0x08, 0x04, 0x05, 0x91, 0x03, 0x77, 0x01, 0x91, 0x02, 0xf0, 0x02, 0xed, 0x03, 0x6f, 0x0a, + 0xda, 0x09, 0xfe, 0x05, 0x17, 0x0c, 0x94, 0x0d, 0xce, 0x10, 0x61, 0x11, 0x06, 0x09, 0x8d, 0x09, + 0x02, 0x0d, 0x6c, 0x0b, 0xb8, 0x0a, 0x6c, 0x04, 0x5f, 0xfd, 0x2e, 0xfc, 0x39, 0xfb, 0x7f, 0xfd, + 0x5b, 0x00, 0x98, 0x02, 0x3f, 0x06, 0x2d, 0x04, 0xa7, 0x09, 0xc7, 0x09, 0x6f, 0x0a, 0x2f, 0x0f, + 0x8d, 0x0e, 0x65, 0x0b, 0xac, 0x0d, 0x81, 0x10, 0x02, 0x13, 0x2b, 0x15, 0xe1, 0x12, 0x27, 0x12, + 0xbe, 0x11, 0xae, 0x15, 0x3a, 0x17, 0x49, 0x14, 0xaf, 0x0d, 0xac, 0x08, 0xd1, 0x05, 0x27, 0x05, + 0xac, 0x09, 0x00, 0x08, 0x85, 0x0a, 0x81, 0x07, 0xcc, 0x00, 0x8a, 0x02, 0xfa, 0x01, 0x4c, 0x02, + 0x8b, 0x00, 0x92, 0xfd, 0x8e, 0xfe, 0x00, 0x00, 0x1e, 0x01, 0xa6, 0x01, 0x5a, 0xfe, 0xb6, 0xfe, + 0x93, 0x00, 0x99, 0xfc, 0xca, 0xfd, 0x13, 0xfe, 0xb0, 0xfa, 0xad, 0xfd, 0x5d, 0xfd, 0xb6, 0x02, + 0x8c, 0x04, 0x08, 0x05, 0xa4, 0x05, 0x12, 0x07, 0x52, 0x07, 0x33, 0x07, 0xfc, 0x08, 0xcb, 0x09, + 0x34, 0x0d, 0xde, 0x0e, 0xa2, 0x0f, 0xb2, 0x0b, 0x3d, 0x0b, 0x62, 0x0d, 0xba, 0x0a, 0x18, 0x0a, + 0x59, 0x0a, 0x29, 0x08, 0xed, 0x05, 0x74, 0x09, 0x45, 0x06, 0x0f, 0x07, 0x7f, 0x04, 0x63, 0xfe, + 0x27, 0x02, 0x8b, 0x00, 0x69, 0xfd, 0xef, 0xfb, 0x42, 0xf8, 0xdf, 0xf9, 0x3f, 0xf9, 0xd4, 0xf8, + 0x40, 0xf7, 0xb1, 0xf3, 0x61, 0xef, 0x77, 0xee, 0x99, 0xea, 0x7e, 0xea, 0x60, 0xec, 0x9f, 0xe6, + 0x58, 0xe7, 0x80, 0xe7, 0x5e, 0xea, 0x91, 0xec, 0xb9, 0xed, 0xce, 0xec, 0xca, 0xeb, 0x82, 0xe9, + 0xb0, 0xe8, 0x0a, 0xe8, 0x9e, 0xe7, 0x89, 0xe8, 0x83, 0xe8, 0x46, 0xea, 0xad, 0xe8, 0xc7, 0xec, + 0x42, 0xf1, 0x3d, 0xf1, 0xc4, 0xec, 0x23, 0xeb, 0x73, 0xee, 0xe3, 0xf1, 0x8e, 0xf6, 0x31, 0xf9, + 0x06, 0xff, 0xa4, 0xfe, 0x44, 0xfb, 0x1f, 0x01, 0x2d, 0x05, 0x66, 0x09, 0xb9, 0x0e, 0xc1, 0x09, + 0xf2, 0x0a, 0x20, 0x0f, 0x11, 0x0d, 0xf1, 0x0c, 0xfa, 0x08, 0x91, 0x01, 0xcb, 0xff, 0xfb, 0xfc, + 0x26, 0xfc, 0x8d, 0xf9, 0x50, 0xf5, 0x56, 0xf5, 0xea, 0xf4, 0xfb, 0xf6, 0xe4, 0xf5, 0x96, 0xf4, + 0x8c, 0xf6, 0xba, 0xf6, 0xa8, 0xf1, 0xd4, 0xf0, 0xe7, 0xf0, 0xda, 0xf2, 0xd2, 0xf5, 0xb6, 0xf3, + 0x3f, 0xf5, 0xc6, 0xf5, 0x9c, 0xf7, 0x8e, 0xfc, 0x18, 0xff, 0xea, 0xfc, 0xba, 0xfc, 0x5c, 0xfb, + 0xdd, 0xf6, 0x22, 0xfc, 0xee, 0xfa, 0xc1, 0xfe, 0x81, 0x01, 0x93, 0xfa, 0x7c, 0xfb, 0xcf, 0xfc, + 0xa0, 0xfc, 0xdb, 0xfd, 0xcb, 0xfe, 0x2f, 0x00, 0x81, 0x03, 0xdf, 0x08, 0x6d, 0x0b, 0xc9, 0x08, + 0xf0, 0x08, 0x79, 0x09, 0xc1, 0x05, 0x48, 0x0b, 0x70, 0x0e, 0x1a, 0x0e, 0x37, 0x13, 0x4a, 0x11, + 0xdb, 0x11, 0x04, 0x15, 0xa4, 0x15, 0x34, 0x16, 0xf1, 0x1b, 0xbb, 0x1a, 0x22, 0x19, 0xf9, 0x18, + 0x29, 0x14, 0x55, 0x16, 0x0e, 0x15, 0x6d, 0x14, 0xce, 0x10, 0xda, 0x0e, 0xe1, 0x0d, 0x35, 0x0c, + 0xf2, 0x08, 0x8b, 0x05, 0x18, 0x02, 0x1b, 0x00, 0x21, 0x02, 0xe9, 0x00, 0x1e, 0x03, 0x8d, 0x01, + 0x77, 0xfd, 0x78, 0x00, 0xe0, 0x00, 0xe7, 0x01, 0xdb, 0x04, 0x5e, 0x02, 0x6b, 0x05, 0x32, 0x06, + 0xfd, 0x04, 0x19, 0x0a, 0x62, 0x09, 0xed, 0x03, 0xdf, 0x06, 0x15, 0x04, 0xbe, 0x01, 0x0c, 0x05, + 0x7b, 0x01, 0x2d, 0x02, 0xd3, 0x04, 0xd4, 0x09, 0x00, 0x0e, 0x21, 0x10, 0xe1, 0x0f, 0xb3, 0x0d, + 0x76, 0x0a, 0x39, 0x0d, 0x8e, 0x0d, 0xb5, 0x0e, 0xa8, 0x11, 0x37, 0x10, 0x3a, 0x10, 0xf0, 0x0d, + 0x18, 0x0f, 0x43, 0x13, 0x16, 0x15, 0x68, 0x11, 0xdd, 0x0d, 0x5a, 0x09, 0x5e, 0x09, 0x02, 0x0b, + 0xa7, 0x06, 0xb2, 0x07, 0x9e, 0x06, 0xc4, 0xff, 0xb8, 0x01, 0x5f, 0x04, 0x65, 0x04, 0xbe, 0x04, + 0xf1, 0xfe, 0xfd, 0xfb, 0x9a, 0xfb, 0x9b, 0xfa, 0x3f, 0xfc, 0xcf, 0xf6, 0xa4, 0xed, 0xcd, 0xea, + 0xaa, 0xe6, 0x4b, 0xe9, 0xfe, 0xe8, 0xcf, 0xe5, 0x0c, 0xe7, 0xe1, 0xe4, 0x47, 0xe5, 0x63, 0xe7, + 0x1a, 0xe7, 0xec, 0xe8, 0x36, 0xec, 0x4c, 0xe7, 0xaf, 0xe5, 0x55, 0xe6, 0xf9, 0xe8, 0x42, 0xed, + 0xf0, 0xef, 0xfb, 0xf3, 0x56, 0xf5, 0xcb, 0xf9, 0x9d, 0xfd, 0x11, 0xff, 0x70, 0xfd, 0x31, 0xfe, + 0x7e, 0xfd, 0xaf, 0xfc, 0x22, 0x02, 0x0c, 0x00, 0x78, 0x05, 0xc5, 0x07, 0x02, 0x02, 0x49, 0xff, + 0x4f, 0xfe, 0x28, 0x01, 0x4c, 0x02, 0x9c, 0xfe, 0xba, 0xfd, 0xf7, 0xfc, 0x29, 0xfd, 0x58, 0x00, + 0x3b, 0xfe, 0xb5, 0xfa, 0xcb, 0xfa, 0x43, 0xf7, 0x6b, 0xf6, 0x58, 0xf5, 0xa9, 0xf3, 0xee, 0xf5, + 0xd6, 0xf2, 0x32, 0xf1, 0x63, 0xf4, 0xb7, 0xf5, 0xa4, 0xf6, 0xa5, 0xfa, 0xa6, 0xf9, 0x11, 0xfa, + 0xfb, 0xf9, 0xe5, 0xf9, 0xf7, 0xfb, 0x0e, 0xf9, 0x76, 0xf9, 0xad, 0xf5, 0x32, 0xf4, 0x5e, 0xf6, + 0xb7, 0xf7, 0x82, 0xf4, 0xd3, 0xf1, 0xa6, 0xee, 0x8e, 0xee, 0x33, 0xf3, 0x8b, 0xf5, 0xa3, 0xf9, + 0x1c, 0xfa, 0xfc, 0xf9, 0x54, 0xfb, 0xad, 0xfa, 0x9b, 0xfe, 0x78, 0x01, 0x87, 0xff, 0x38, 0x05, + 0x5e, 0x08, 0xf2, 0x09, 0xa2, 0x0e, 0x3f, 0x0e, 0x0a, 0x08, 0x73, 0x07, 0xf8, 0x05, 0x4c, 0x08, + 0x23, 0x0b, 0x99, 0x07, 0x1b, 0x05, 0xf9, 0x02, 0xdb, 0x02, 0x8e, 0x07, 0x3f, 0x09, 0xc0, 0x05, + 0x25, 0x05, 0x14, 0x02, 0x15, 0x02, 0x26, 0x00, 0xa8, 0x00, 0x86, 0xff, 0x9b, 0xfc, 0x5a, 0xff, + 0x8e, 0xfd, 0xaa, 0x00, 0xe7, 0x04, 0xff, 0x06, 0xde, 0x05, 0x98, 0x03, 0xe3, 0x01, 0xfb, 0x05, + 0x6f, 0x09, 0x8c, 0x06, 0x00, 0x09, 0x14, 0x0a, 0xff, 0x05, 0xa4, 0x09, 0x34, 0x0d, 0xbc, 0x0d, + 0x16, 0x12, 0x29, 0x0f, 0x5d, 0x0d, 0x54, 0x11, 0x4a, 0x13, 0xc6, 0x16, 0x15, 0x17, 0x3b, 0x13, + 0x8c, 0x10, 0x1e, 0x0d, 0x92, 0x0c, 0x4f, 0x0a, 0x93, 0x0a, 0xee, 0x0b, 0x06, 0x0c, 0xc3, 0x0d, + 0x03, 0x0f, 0x07, 0x0f, 0xf0, 0x0e, 0xff, 0x0e, 0x17, 0x0c, 0xa4, 0x0b, 0xe6, 0x09, 0xc4, 0x09, + 0x9a, 0x0b, 0x25, 0x09, 0x4c, 0x08, 0x50, 0x07, 0x5e, 0x07, 0x86, 0x08, 0xf1, 0x09, 0x33, 0x08, + 0x1c, 0x08, 0xbd, 0x05, 0x9a, 0x02, 0x56, 0x00, 0xcb, 0xfc, 0x96, 0xff, 0x60, 0x02, 0xf2, 0xfd, + 0x6d, 0xf8, 0x71, 0xf7, 0xb8, 0xf9, 0x26, 0xfa, 0xa1, 0xf8, 0x64, 0xf8, 0xcd, 0xf5, 0x04, 0xf6, + 0xf4, 0xf9, 0x06, 0xf6, 0x63, 0xf3, 0xd8, 0xf4, 0x94, 0xf0, 0xd0, 0xef, 0xdf, 0xf0, 0x12, 0xf0, + 0x88, 0xf2, 0x18, 0xf4, 0xdb, 0xf2, 0x32, 0xf5, 0x70, 0xfb, 0xc1, 0xfe, 0xb9, 0x04, 0x8c, 0x04, + 0x78, 0x04, 0x15, 0x05, 0x0e, 0x06, 0xdd, 0x09, 0x31, 0x0b, 0x06, 0x0c, 0x9d, 0x09, 0xc9, 0x08, + 0x6f, 0x08, 0x4d, 0x08, 0x24, 0x05, 0x66, 0x03, 0xd6, 0xfe, 0xfc, 0xfc, 0xe4, 0xfb, 0x95, 0xfa, + 0x31, 0xfd, 0x86, 0xfa, 0xa2, 0xf6, 0x22, 0xf3, 0xe9, 0xf0, 0x67, 0xf1, 0xb1, 0xf3, 0xd8, 0xf1, + 0xa8, 0xf0, 0xdc, 0xf1, 0x3e, 0xef, 0x6b, 0xf2, 0x88, 0xf6, 0xfa, 0xf1, 0xf0, 0xef, 0x49, 0xee, + 0xf3, 0xee, 0xb4, 0xf1, 0xd4, 0xf1, 0xf8, 0xee, 0xe5, 0xeb, 0x59, 0xed, 0x51, 0xf1, 0x27, 0xf2, + 0x2e, 0xf2, 0x6c, 0xf3, 0x84, 0xef, 0xc7, 0xef, 0xbf, 0xee, 0xfa, 0xee, 0x97, 0xee, 0x55, 0xee, + 0xf6, 0xf0, 0x70, 0xf0, 0x46, 0xf4, 0xb7, 0xfb, 0xad, 0x00, 0xd3, 0xff, 0x39, 0xff, 0x95, 0xfe, + 0x36, 0x02, 0x5a, 0x08, 0xc3, 0x08, 0xd5, 0x09, 0x0e, 0x0c, 0x45, 0x0b, 0x09, 0x0d, 0xe7, 0x0c, + 0x21, 0x0e, 0xb4, 0x11, 0x03, 0x11, 0x12, 0x0f, 0x4d, 0x0e, 0x84, 0x0c, 0x91, 0x0c, 0xa1, 0x0b, + 0x72, 0x05, 0xd4, 0xff, 0xae, 0xf9, 0x1a, 0xf7, 0x76, 0xf6, 0x7c, 0xf5, 0xa7, 0xf4, 0xbe, 0xf2, + 0x75, 0xf0, 0x83, 0xf1, 0x44, 0xf2, 0x6d, 0xf2, 0x0d, 0xf5, 0x2a, 0xf4, 0xd5, 0xf3, 0xa5, 0xf2, + 0x0f, 0xf5, 0x25, 0xf8, 0xdb, 0xf8, 0x24, 0xfb, 0x94, 0xfa, 0x8d, 0xfa, 0x6f, 0xfe, 0x39, 0x02, + 0x99, 0x02, 0xb2, 0x05, 0x40, 0x04, 0xc0, 0x00, 0xc3, 0x00, 0x83, 0x01, 0x30, 0x07, 0x08, 0x0c, + 0x64, 0x0c, 0x75, 0x0b, 0x41, 0x0b, 0x69, 0x0d, 0xd8, 0x10, 0x8b, 0x10, 0xe3, 0x11, 0xb9, 0x11, + 0x46, 0x13, 0xfc, 0x18, 0x26, 0x1a, 0x6c, 0x1b, 0xc1, 0x1a, 0x52, 0x17, 0x58, 0x14, 0x80, 0x14, + 0x78, 0x15, 0xfc, 0x15, 0xaa, 0x15, 0x2c, 0x0f, 0x12, 0x0f, 0xf4, 0x10, 0xa1, 0x12, 0x21, 0x16, + 0xed, 0x10, 0xa8, 0x0f, 0x44, 0x0e, 0x14, 0x0e, 0xc6, 0x0f, 0xff, 0x0b, 0x5e, 0x08, 0x33, 0x04, + 0x14, 0x02, 0x72, 0x01, 0x06, 0x01, 0x95, 0xfe, 0xf2, 0xfb, 0x4b, 0xf8, 0xdb, 0xf8, 0x07, 0xf7, + 0x7a, 0xf7, 0x04, 0xfb, 0xfd, 0xf7, 0x27, 0xf4, 0x91, 0xf2, 0x10, 0xf1, 0x7f, 0xf2, 0x40, 0xf6, + 0x10, 0xf3, 0xb4, 0xf1, 0xa8, 0xf3, 0x94, 0xf2, 0x2f, 0xf7, 0xb9, 0xfb, 0x4c, 0xfb, 0xe6, 0xfb, + 0xc5, 0xfa, 0x07, 0xfd, 0xcd, 0xff, 0x69, 0x01, 0xf2, 0xff, 0x23, 0x00, 0x5f, 0x01, 0xb3, 0x03, + 0x44, 0x08, 0x14, 0x0a, 0x38, 0x0c, 0xc9, 0x08, 0xd9, 0x07, 0xac, 0x05, 0x63, 0x06, 0x3c, 0x07, + 0x93, 0x03, 0x2a, 0x04, 0x01, 0x01, 0x92, 0xfe, 0xb7, 0x03, 0xf7, 0x05, 0x5d, 0x03, 0xef, 0x00, + 0xf1, 0xfb, 0x19, 0xfe, 0x12, 0x01, 0x67, 0xfe, 0xda, 0xfc, 0x7d, 0xfd, 0xee, 0xfb, 0xe4, 0xfb, + 0x10, 0xfb, 0x30, 0xfa, 0xf8, 0xfd, 0x2c, 0x01, 0x1d, 0x00, 0xde, 0xff, 0x24, 0xff, 0x1f, 0x00, + 0x53, 0x00, 0xfa, 0xfe, 0xf9, 0xf9, 0x3b, 0xf4, 0x0b, 0xf3, 0xec, 0xf0, 0x92, 0xee, 0x19, 0xed, + 0x0a, 0xeb, 0x3a, 0xea, 0x2c, 0xec, 0x4d, 0xed, 0x00, 0xf0, 0x35, 0xf4, 0x99, 0xf6, 0x6d, 0xf7, + 0x8a, 0xf5, 0x20, 0xf6, 0xb0, 0xf9, 0xf9, 0xfb, 0x25, 0xfe, 0xd6, 0x00, 0x2c, 0xff, 0x13, 0x04, + 0xc1, 0x08, 0x1a, 0x09, 0x3a, 0x0b, 0x3f, 0x09, 0x6b, 0x0a, 0x5c, 0x08, 0x45, 0x06, 0xc7, 0x07, + 0xef, 0x06, 0xc3, 0x06, 0x5e, 0x03, 0x30, 0xff, 0x7e, 0xfe, 0x12, 0xfe, 0x3a, 0xfc, 0x83, 0xfd, + 0x8d, 0xfa, 0xbb, 0xf6, 0x34, 0xf8, 0x0f, 0xf7, 0x2b, 0xf6, 0xd2, 0xf4, 0x8b, 0xf1, 0x1f, 0xed, + 0x12, 0xee, 0x08, 0xf1, 0x31, 0xf3, 0xe8, 0xf4, 0xb3, 0xf1, 0xa4, 0xf0, 0x60, 0xf3, 0xcc, 0xf7, + 0x38, 0xfc, 0x75, 0xfb, 0xd5, 0xfc, 0x40, 0xfc, 0xec, 0xfd, 0xf1, 0xff, 0xa2, 0xff, 0xdf, 0xfe, + 0xc1, 0xfc, 0xf2, 0xfc, 0x2a, 0xff, 0xe9, 0x02, 0x34, 0x05, 0xf0, 0x05, 0x1b, 0x00, 0xf2, 0x00, + 0x65, 0x01, 0x13, 0x02, 0x2a, 0x0a, 0x4f, 0x0b, 0x08, 0x0a, 0xc0, 0x08, 0xc0, 0x07, 0x31, 0x09, + 0x45, 0x0b, 0x9a, 0x0b, 0x9b, 0x0b, 0x59, 0x0c, 0x5c, 0x0b, 0x98, 0x0c, 0xb3, 0x0e, 0x57, 0x0f, + 0x82, 0x0e, 0x33, 0x0c, 0x71, 0x0a, 0xf8, 0x08, 0x51, 0x09, 0xb1, 0x07, 0x32, 0x05, 0x88, 0x01, + 0x32, 0x00, 0xe6, 0x00, 0xda, 0x01, 0x77, 0x03, 0xbd, 0xff, 0x7d, 0xfe, 0x69, 0xfb, 0x5c, 0xfc, + 0x25, 0xfd, 0x11, 0xfc, 0xfd, 0xfc, 0x0a, 0xfb, 0x94, 0xf8, 0xc8, 0xfb, 0x5a, 0xfd, 0x8b, 0xfe, + 0xaf, 0xfe, 0x6d, 0xfc, 0xcc, 0xfe, 0x11, 0x01, 0x6b, 0xfe, 0x8f, 0xfd, 0x54, 0xff, 0x25, 0xff, + 0xef, 0x01, 0x4e, 0x03, 0xa2, 0x05, 0xad, 0x09, 0x0f, 0x0c, 0x8a, 0x0e, 0x2c, 0x0d, 0x5a, 0x0d, + 0xd2, 0x0e, 0xe7, 0x10, 0xdd, 0x12, 0xa7, 0x0e, 0xcf, 0x0a, 0x52, 0x07, 0x32, 0x04, 0xdf, 0x03, + 0xb9, 0x02, 0xd4, 0x01, 0x13, 0x00, 0x46, 0xfe, 0xab, 0xfc, 0xd4, 0xfc, 0x85, 0xfe, 0xc8, 0xff, + 0x93, 0xfe, 0x73, 0xf9, 0x5c, 0xf7, 0x7e, 0xfa, 0x28, 0xfa, 0x85, 0xf9, 0x42, 0xf9, 0xb9, 0xf3, + 0xc0, 0xf7, 0x7d, 0xfc, 0x26, 0xfc, 0x55, 0xfc, 0x98, 0xfa, 0x08, 0xfc, 0xdf, 0xfb, 0xe1, 0xfb, + 0x98, 0xfe, 0x33, 0x00, 0xe0, 0x01, 0x6d, 0xfe, 0xa9, 0xfa, 0xc0, 0xf9, 0x6d, 0xfc, 0x5b, 0xfd, + 0xab, 0xfe, 0x63, 0xfd, 0x90, 0xf9, 0x1c, 0xfb, 0x51, 0xfb, 0x2d, 0xfe, 0x8b, 0xfe, 0xb8, 0xfe, + 0x4e, 0xff, 0x81, 0xff, 0x8b, 0x01, 0x42, 0x02, 0x51, 0x03, 0x6a, 0x00, 0x90, 0x00, 0x85, 0x03, + 0x23, 0x07, 0x37, 0x0e, 0xd0, 0x0f, 0x97, 0x0e, 0x69, 0x0d, 0x49, 0x0e, 0x2f, 0x10, 0xdb, 0x10, + 0x29, 0x0f, 0x32, 0x0c, 0x08, 0x08, 0xc8, 0x06, 0x4e, 0x05, 0x13, 0x05, 0xf3, 0x03, 0xa3, 0xfb, + 0x5f, 0xfb, 0xfb, 0xf8, 0x02, 0xf6, 0x1a, 0xf9, 0x1a, 0xf7, 0x3e, 0xf3, 0xaf, 0xf0, 0xb6, 0xed, + 0xdf, 0xeb, 0x92, 0xed, 0x5d, 0xed, 0xb8, 0xec, 0xb6, 0xee, 0x09, 0xee, 0x77, 0xef, 0x94, 0xf2, + 0x20, 0xf4, 0xfa, 0xf4, 0xc8, 0xf2, 0xc1, 0xf0, 0x14, 0xf1, 0x70, 0xf5, 0x57, 0xf7, 0x71, 0xf5, + 0x64, 0xf4, 0x68, 0xf1, 0xa8, 0xf2, 0x34, 0xf6, 0x97, 0xf9, 0x77, 0xfc, 0x36, 0xfe, 0x51, 0xfe, + 0x80, 0xff, 0xf9, 0x01, 0xd7, 0x01, 0xf3, 0x02, 0x8e, 0x05, 0xc9, 0x02, 0xc0, 0x07, 0x07, 0x0d, + 0x53, 0x0e, 0xde, 0x10, 0xcf, 0x0d, 0x07, 0x0d, 0x03, 0x10, 0x25, 0x0f, 0x9d, 0x10, 0xd7, 0x12, + 0x33, 0x10, 0x50, 0x0e, 0x4b, 0x0d, 0xc7, 0x0c, 0xb6, 0x0c, 0x7c, 0x0e, 0x0d, 0x10, 0x1d, 0x0d, + 0x67, 0x0b, 0xe7, 0x09, 0x6b, 0x07, 0x86, 0x08, 0xdb, 0x05, 0xe2, 0xff, 0x72, 0xfb, 0x97, 0xf7, + 0xf5, 0xf3, 0x45, 0xf2, 0xff, 0xf0, 0xcb, 0xef, 0x27, 0xf0, 0x9a, 0xee, 0xa7, 0xf0, 0x7a, 0xf2, + 0xcc, 0xf3, 0x1a, 0xf4, 0x52, 0xf2, 0x7e, 0xf1, 0x8c, 0xf3, 0xcd, 0xf5, 0x91, 0xf5, 0x89, 0xf7, + 0xc6, 0xf2, 0xe6, 0xf4, 0x0b, 0xfb, 0x05, 0xfe, 0x12, 0x03, 0xf0, 0x04, 0x86, 0x09, 0xff, 0x09, + 0x2a, 0x08, 0x68, 0x0b, 0xf2, 0x0c, 0xf4, 0x0e, 0x9c, 0x10, 0x7b, 0x0e, 0xac, 0x0d, 0x70, 0x0f, + 0xb1, 0x0e, 0x2d, 0x10, 0x30, 0x0f, 0xd7, 0x0c, 0x4f, 0x0d, 0x8a, 0x0c, 0xdd, 0x0c, 0x80, 0x09, + 0xa6, 0x06, 0xcb, 0x03, 0x3b, 0x02, 0x2b, 0x01, 0x93, 0x00, 0x8c, 0x00, 0xbe, 0xfd, 0x42, 0xfb, + 0x3f, 0xf8, 0xb2, 0xf9, 0x4c, 0xfe, 0xe8, 0xfe, 0xc3, 0xfe, 0x96, 0xfc, 0xc2, 0xfc, 0x9f, 0xfe, + 0x0c, 0xfe, 0xfd, 0xfe, 0xee, 0xfe, 0x8c, 0xfc, 0xaa, 0xfd, 0x7f, 0xfd, 0x16, 0xfd, 0xac, 0xfc, + 0xd7, 0xf7, 0xbf, 0xf6, 0xde, 0xf6, 0x9e, 0xf4, 0xc8, 0xf8, 0xa2, 0xfa, 0x5e, 0xf8, 0xeb, 0xf6, + 0xf5, 0xf3, 0xcb, 0xf3, 0x50, 0xf9, 0xef, 0xfc, 0x30, 0x00, 0x96, 0x01, 0xbf, 0x00, 0x3f, 0x03, + 0x42, 0x04, 0x37, 0x09, 0x49, 0x0f, 0xde, 0x0f, 0xc7, 0x10, 0xe8, 0x0f, 0x1c, 0x11, 0x70, 0x12, + 0x9d, 0x11, 0x2c, 0x10, 0x42, 0x0d, 0xbd, 0x0b, 0x75, 0x0c, 0x00, 0x0d, 0xa6, 0x0d, 0xe3, 0x0b, + 0xca, 0x07, 0xdc, 0x04, 0xe6, 0x03, 0x26, 0x02, 0xc5, 0x02, 0xb7, 0x01, 0xc3, 0xf9, 0x28, 0xf9, + 0xab, 0xf7, 0x1c, 0xf8, 0x0e, 0xfb, 0xc3, 0xf7, 0xfe, 0xf5, 0x83, 0xf6, 0x39, 0xf5, 0x85, 0xf5, + 0x2c, 0xf9, 0x1a, 0xf9, 0xf7, 0xf9, 0x25, 0xf9, 0x41, 0xf7, 0xe8, 0xf8, 0xb4, 0xfa, 0x07, 0xff, + 0x34, 0xfe, 0x10, 0xfd, 0x00, 0xfe, 0x44, 0xfc, 0xfc, 0xfd, 0x3f, 0xfc, 0xfe, 0xf6, 0x05, 0xf5, + 0x38, 0xf3, 0xae, 0xf4, 0x05, 0xf7, 0xae, 0xf4, 0x86, 0xf4, 0x1a, 0xf4, 0xf2, 0xf1, 0x17, 0xf5, + 0x4c, 0xf8, 0x9a, 0xfc, 0x65, 0xff, 0xdf, 0xff, 0x36, 0xfd, 0x1e, 0xff, 0xa0, 0x00, 0x96, 0x00, + 0xd0, 0x03, 0x11, 0x00, 0xda, 0x00, 0x84, 0x04, 0x8a, 0x06, 0xc1, 0x07, 0xd0, 0x04, 0x05, 0x06, + 0x30, 0x05, 0x60, 0x04, 0xe7, 0x05, 0x14, 0x05, 0xa3, 0x05, 0x24, 0x03, 0x78, 0xfe, 0xc0, 0xfb, + 0xca, 0xfa, 0xe5, 0xf9, 0x4e, 0xfb, 0x16, 0xfa, 0x6e, 0xf7, 0xe4, 0xf8, 0xca, 0xf7, 0xa0, 0xf9, + 0x31, 0xfb, 0x33, 0xf9, 0x44, 0xf9, 0x3e, 0xf8, 0xef, 0xf6, 0xc4, 0xf7, 0x90, 0xf7, 0xcd, 0xf6, + 0x80, 0xf6, 0xd0, 0xf4, 0x4c, 0xf6, 0xb0, 0xf8, 0x9d, 0xfc, 0x75, 0xfe, 0x65, 0xff, 0x75, 0x03, + 0x8c, 0x05, 0x10, 0x07, 0x91, 0x09, 0x01, 0x0a, 0xce, 0x07, 0x99, 0x08, 0x21, 0x08, 0x92, 0x0a, + 0x7f, 0x0e, 0xd1, 0x0a, 0x9a, 0x0a, 0x02, 0x0a, 0xd0, 0x05, 0x93, 0x07, 0xca, 0x0a, 0xfa, 0x09, + 0xe1, 0x07, 0x8c, 0x03, 0x05, 0x00, 0x01, 0x01, 0xf9, 0x00, 0x81, 0xff, 0x63, 0xff, 0xde, 0xfe, + 0x35, 0xfd, 0x0b, 0xfc, 0xae, 0xfc, 0x25, 0xfe, 0x5f, 0xfc, 0x63, 0xfb, 0x01, 0xf9, 0x7a, 0xf8, + 0xe3, 0xfb, 0xc8, 0xfa, 0x7e, 0xfa, 0xba, 0xf7, 0x48, 0xf5, 0x1b, 0xf9, 0xca, 0xf9, 0x7f, 0xfd, + 0x9c, 0xfe, 0xc0, 0xfc, 0x8d, 0xfb, 0x78, 0xfb, 0xf5, 0xfa, 0x07, 0xfd, 0xe9, 0xff, 0x6d, 0xfc, + 0xff, 0xfa, 0x5c, 0xfb, 0x57, 0xfd, 0x3a, 0x01, 0x86, 0x02, 0xa8, 0x02, 0x7a, 0x05, 0xa3, 0x06, + 0x15, 0x09, 0x32, 0x0e, 0xfe, 0x0f, 0xd7, 0x0f, 0x6e, 0x0e, 0x54, 0x10, 0xa3, 0x13, 0xe9, 0x16, + 0xa7, 0x1b, 0xbd, 0x1a, 0xc0, 0x18, 0x79, 0x18, 0x63, 0x17, 0x6b, 0x1a, 0x98, 0x1a, 0xfd, 0x15, + 0x5a, 0x11, 0x93, 0x0d, 0x02, 0x09, 0xa3, 0x06, 0x8b, 0x02, 0xa6, 0xfe, 0x0a, 0xfd, 0x74, 0xf8, + 0x35, 0xf7, 0x13, 0xf6, 0x79, 0xf6, 0x9d, 0xf7, 0x6c, 0xf5, 0xab, 0xf1, 0x58, 0xf1, 0xfd, 0xf1, + 0x45, 0xf2, 0x1f, 0xf3, 0x2c, 0xf0, 0x2a, 0xf0, 0x26, 0xf3, 0x10, 0xf7, 0x82, 0xf9, 0x70, 0xf9, + 0x98, 0xfb, 0x0a, 0xfd, 0x2d, 0xfc, 0x8e, 0xfc, 0x1e, 0xff, 0x3d, 0x01, 0xb0, 0x00, 0x94, 0xfd, + 0x6b, 0xf9, 0x19, 0xf9, 0x8a, 0xf9, 0x31, 0xfd, 0xcc, 0xfe, 0x8a, 0xff, 0x89, 0x02, 0x73, 0x02, + 0xa7, 0x01, 0x6c, 0x01, 0x54, 0x00, 0xda, 0x02, 0x03, 0x05, 0x67, 0x04, 0x06, 0x06, 0x64, 0x05, + 0x37, 0x04, 0xda, 0x04, 0x67, 0x03, 0xab, 0x02, 0xe7, 0x03, 0xa5, 0x06, 0x45, 0x09, 0x1e, 0x0a, + 0x64, 0x08, 0x16, 0x07, 0xfc, 0x04, 0xdf, 0x05, 0x8c, 0x05, 0x4e, 0x03, 0x66, 0x02, 0x84, 0xfe, + 0xa2, 0xfd, 0xb4, 0xfc, 0xc0, 0xf7, 0x27, 0xf4, 0x56, 0xf2, 0xa2, 0xee, 0xaa, 0xed, 0x4e, 0xf1, + 0x90, 0xf1, 0x81, 0xf0, 0x17, 0xee, 0x76, 0xea, 0xc8, 0xeb, 0x46, 0xed, 0xcd, 0xee, 0xd2, 0xf0, + 0x9b, 0xee, 0x32, 0xef, 0xc7, 0xef, 0x5f, 0xf1, 0xf3, 0xf6, 0xdc, 0xf7, 0x32, 0xf8, 0xb4, 0xf6, + 0x8b, 0xf7, 0x6a, 0xfd, 0x44, 0x00, 0x55, 0x02, 0x95, 0x01, 0x7c, 0xff, 0x7d, 0x01, 0x99, 0x01, + 0x9d, 0x05, 0xcc, 0x09, 0xb5, 0x09, 0x44, 0x08, 0xe0, 0x09, 0xb0, 0x08, 0x8a, 0x0a, 0x96, 0x0e, + 0x0a, 0x0a, 0x39, 0x07, 0x3e, 0x05, 0xe3, 0x05, 0x70, 0x0a, 0x77, 0x0a, 0x7b, 0x07, 0x28, 0x05, + 0xb2, 0x03, 0x50, 0x03, 0xad, 0x06, 0x06, 0x08, 0x54, 0x05, 0x46, 0x02, 0xfa, 0x00, 0xe5, 0xff, + 0xd1, 0xff, 0x82, 0x01, 0x26, 0x01, 0x85, 0xff, 0xda, 0xff, 0xb7, 0xfd, 0x29, 0xfe, 0x3b, 0x00, + 0xa3, 0xfc, 0x20, 0xfa, 0x69, 0xf8, 0x9c, 0xf4, 0x67, 0xf6, 0x3b, 0xf3, 0x73, 0xf0, 0xcb, 0xf0, + 0x1c, 0xed, 0xac, 0xec, 0x37, 0xee, 0xa9, 0xf0, 0xa2, 0xf2, 0x2e, 0xf4, 0xe6, 0xf2, 0x3f, 0xf5, + 0xee, 0xf7, 0xe0, 0xfa, 0x38, 0xff, 0x33, 0x00, 0x11, 0x01, 0x7f, 0x03, 0x38, 0x09, 0x1a, 0x0e, + 0x7c, 0x0f, 0x20, 0x13, 0x60, 0x16, 0xd3, 0x16, 0x19, 0x19, 0x7a, 0x1a, 0xc6, 0x1c, 0x2e, 0x1e, + 0x28, 0x1a, 0xfb, 0x16, 0x78, 0x15, 0xff, 0x13, 0xa5, 0x13, 0x6a, 0x12, 0xee, 0x0e, 0x3d, 0x0f, + 0x46, 0x0f, 0xc3, 0x0b, 0x21, 0x0b, 0x86, 0x08, 0x26, 0x07, 0x70, 0x07, 0x40, 0x02, 0x85, 0x00, + 0xa0, 0xfd, 0x82, 0xfb, 0xe9, 0xfb, 0x31, 0xf8, 0x77, 0xf6, 0xdc, 0xf5, 0xf7, 0xf8, 0xc3, 0xfd, + 0xac, 0xfd, 0x81, 0xfe, 0x28, 0xff, 0x83, 0xfd, 0xad, 0xff, 0x15, 0x00, 0xac, 0xfe, 0x2f, 0xff, + 0x1d, 0xfd, 0xc2, 0xfb, 0x5e, 0xfc, 0xa7, 0xf9, 0x13, 0xf8, 0x6d, 0xf9, 0x3d, 0xf7, 0x8c, 0xf6, + 0x56, 0xfb, 0x17, 0xfe, 0x42, 0xff, 0x3b, 0xfd, 0xb9, 0xfa, 0x15, 0xfa, 0xfc, 0xfb, 0xe1, 0xff, + 0xfa, 0x01, 0x9a, 0x02, 0x41, 0x03, 0xc2, 0x02, 0x67, 0x03, 0xe3, 0x05, 0x82, 0x06, 0xc1, 0x06, + 0xe7, 0x06, 0x88, 0x04, 0xf9, 0x06, 0x3a, 0x07, 0x24, 0x07, 0x20, 0x06, 0xe4, 0x00, 0xaf, 0xff, + 0x8e, 0xfe, 0x21, 0xfe, 0x43, 0x01, 0x53, 0xff, 0xe7, 0xfa, 0x11, 0xf9, 0xf4, 0xf4, 0xfc, 0xf5, + 0xd4, 0xf8, 0x5a, 0xf6, 0x27, 0xf3, 0x9e, 0xf0, 0x22, 0xf2, 0xd0, 0xf4, 0x88, 0xf6, 0xcf, 0xf4, + 0x3e, 0xf3, 0x87, 0xf2, 0xd9, 0xf3, 0xa4, 0xf7, 0x7f, 0xfa, 0xfc, 0xfa, 0xfd, 0xf8, 0xcc, 0xf8, + 0x72, 0xf8, 0xee, 0xf8, 0xc9, 0xfc, 0x50, 0xff, 0x47, 0xff, 0x27, 0x01, 0x15, 0x02, 0xe2, 0x04, + 0x83, 0x08, 0x14, 0x08, 0xad, 0x06, 0x8e, 0x05, 0x9c, 0x03, 0xcb, 0x05, 0xa9, 0x05, 0x89, 0x02, + 0xec, 0x00, 0x96, 0xfd, 0x1a, 0xfc, 0xf1, 0xfc, 0xd9, 0xfc, 0x52, 0xff, 0xd2, 0x00, 0xee, 0xfe, + 0x34, 0xfe, 0x78, 0xfb, 0x0b, 0xfc, 0x95, 0xfc, 0x9e, 0xfb, 0x59, 0xfa, 0xab, 0xf7, 0x90, 0xfa, + 0x73, 0xfd, 0x3a, 0xfd, 0x59, 0xfe, 0xff, 0xfd, 0x73, 0xfd, 0x0b, 0xfe, 0x88, 0xfe, 0x31, 0x00, + 0xfc, 0x01, 0x20, 0x01, 0xf1, 0xfd, 0xfd, 0xfa, 0x5a, 0xf9, 0x42, 0xfa, 0xbc, 0xfb, 0x0b, 0xfb, + 0xaa, 0xfc, 0xcd, 0xfc, 0x1b, 0xfa, 0xe2, 0xfa, 0x4d, 0xfa, 0x7a, 0xfa, 0x2c, 0xfb, 0x24, 0xf7, + 0xf9, 0xf6, 0xbc, 0xf7, 0x58, 0xf9, 0xa5, 0xfb, 0xf1, 0xfc, 0x15, 0xfc, 0x74, 0xfb, 0x63, 0xff, + 0x45, 0x05, 0x73, 0x09, 0xdc, 0x0b, 0xa5, 0x0e, 0x93, 0x0e, 0x95, 0x11, 0xe2, 0x12, 0x97, 0x12, + 0xb9, 0x14, 0xa7, 0x13, 0x5c, 0x12, 0x84, 0x13, 0x5d, 0x11, 0x81, 0x0e, 0x54, 0x0d, 0x21, 0x09, + 0x42, 0x05, 0x64, 0x05, 0x46, 0x07, 0x00, 0x07, 0xf9, 0x03, 0xb9, 0xff, 0x51, 0xfc, 0x0b, 0xfd, + 0x7f, 0xfc, 0xf7, 0xfb, 0xd3, 0xf9, 0x48, 0xf8, 0x49, 0xf8, 0x28, 0xf7, 0x07, 0xf9, 0x5e, 0xfb, + 0xde, 0xfc, 0x71, 0xfd, 0x3e, 0xfc, 0x94, 0xff, 0xb2, 0x00, 0x42, 0x02, 0xa0, 0x02, 0x01, 0xfe, + 0x3e, 0xfc, 0xfc, 0xfc, 0xec, 0xfd, 0x9f, 0x01, 0x20, 0x01, 0xf9, 0xfc, 0x79, 0xfc, 0xa0, 0xfb, + 0x26, 0xfd, 0x1f, 0x02, 0x75, 0x03, 0x9d, 0x01, 0xd1, 0x00, 0x0c, 0x01, 0xfd, 0x04, 0x58, 0x08, + 0xe1, 0x07, 0xf7, 0x07, 0xd7, 0x08, 0x44, 0x0a, 0x8d, 0x0b, 0x2a, 0x10, 0x51, 0x12, 0x3f, 0x10, + 0x9f, 0x0f, 0x48, 0x0d, 0x7b, 0x0d, 0x51, 0x0f, 0x4e, 0x10, 0xd7, 0x0e, 0xbc, 0x0c, 0x08, 0x0b, + 0xfb, 0x08, 0xa4, 0x0a, 0xd2, 0x08, 0x6f, 0x03, 0xea, 0x00, 0x48, 0xfa, 0x1e, 0xf9, 0xfa, 0xf7, + 0x00, 0xf3, 0xa7, 0xf0, 0xe9, 0xeb, 0x18, 0xe7, 0xe2, 0xe6, 0x1f, 0xe7, 0x65, 0xe9, 0x0b, 0xec, + 0x50, 0xec, 0xef, 0xeb, 0x68, 0xea, 0x40, 0xec, 0x96, 0xed, 0xe4, 0xee, 0xe9, 0xee, 0x67, 0xee, + 0xc8, 0xf2, 0x7a, 0xf7, 0x6b, 0xf8, 0x35, 0xf8, 0x6a, 0xfa, 0x44, 0xfb, 0xe9, 0xfd, 0x6d, 0x01, + 0xd5, 0x04, 0xdb, 0x09, 0xcc, 0x0a, 0xdc, 0x09, 0xbf, 0x08, 0xb1, 0x07, 0xdc, 0x07, 0x40, 0x0b, + 0x49, 0x0c, 0xda, 0x0c, 0x66, 0x0e, 0xe6, 0x0c, 0xd0, 0x0d, 0x8e, 0x0e, 0x69, 0x0d, 0xae, 0x0e, + 0x36, 0x0c, 0x58, 0x0a, 0xdb, 0x09, 0x93, 0x07, 0x1b, 0x06, 0x59, 0x03, 0xe0, 0xff, 0xf6, 0xfd, + 0x23, 0xfc, 0x91, 0xff, 0x5a, 0x00, 0xda, 0xff, 0x6f, 0x00, 0xc0, 0xfc, 0x9c, 0xfc, 0xed, 0xfc, + 0x5a, 0xfa, 0x47, 0xf9, 0x38, 0xf8, 0xa6, 0xf6, 0x6f, 0xf6, 0x21, 0xf6, 0xf7, 0xf3, 0x4c, 0xf4, + 0x40, 0xf2, 0x2f, 0xee, 0xb7, 0xed, 0xa4, 0xef, 0xbd, 0xf1, 0x0f, 0xf2, 0x25, 0xf0, 0xad, 0xee, + 0xd1, 0xec, 0xfb, 0xec, 0x39, 0xee, 0x61, 0xee, 0x5a, 0xef, 0xbb, 0xf0, 0x8f, 0xf3, 0x30, 0xf7, + 0xa2, 0xf9, 0x7d, 0xfc, 0x11, 0xff, 0x73, 0xff, 0xf9, 0x02, 0x01, 0x08, 0x71, 0x0c, 0xb3, 0x0f, + 0x6c, 0x0d, 0xac, 0x0a, 0x3b, 0x0d, 0x5d, 0x0d, 0xbd, 0x10, 0x9a, 0x12, 0x90, 0x0f, 0x55, 0x10, + 0xd3, 0x0d, 0x89, 0x0c, 0xaf, 0x0d, 0x84, 0x0c, 0xd8, 0x0a, 0xb6, 0x08, 0xb6, 0x07, 0x11, 0x08, + 0x9c, 0x08, 0x09, 0x06, 0xd2, 0x02, 0x12, 0x00, 0x8a, 0xff, 0x66, 0xff, 0x54, 0x01, 0xde, 0x02, + 0x53, 0x01, 0x7b, 0x00, 0xf3, 0xfe, 0x67, 0xfe, 0x2c, 0x00, 0xbf, 0x02, 0x5b, 0x02, 0x32, 0x02, + 0x8f, 0x01, 0xe5, 0xff, 0xa6, 0x02, 0xe2, 0x02, 0xe9, 0x02, 0x4d, 0x02, 0xe4, 0xfd, 0x13, 0xfd, + 0x5a, 0xfc, 0x4e, 0xf9, 0x7f, 0xf7, 0x20, 0xf5, 0xd5, 0xf2, 0x25, 0xf4, 0x33, 0xf4, 0x4a, 0xf7, + 0x50, 0xfb, 0x0f, 0xfc, 0x08, 0xfd, 0xf5, 0xfc, 0xcd, 0x00, 0xc4, 0x03, 0xd2, 0x04, 0x40, 0x06, + 0x7d, 0x04, 0xdc, 0x05, 0xcf, 0x0a, 0xb6, 0x0c, 0x43, 0x0f, 0x80, 0x11, 0x82, 0x10, 0x52, 0x11, + 0xf9, 0x10, 0x34, 0x11, 0x74, 0x14, 0x53, 0x15, 0x80, 0x12, 0x3b, 0x0e, 0x5e, 0x09, 0xf1, 0x06, + 0xcd, 0x06, 0x36, 0x04, 0xcd, 0x01, 0x82, 0x00, 0xcd, 0xfd, 0x23, 0xfe, 0x04, 0xfd, 0x93, 0xfa, + 0xae, 0xf9, 0xe0, 0xf6, 0x16, 0xf6, 0x39, 0xf6, 0x02, 0xf7, 0x2c, 0xf7, 0x28, 0xf5, 0x05, 0xf3, + 0x13, 0xf0, 0xf5, 0xef, 0x4b, 0xf5, 0xa6, 0xf7, 0x62, 0xf9, 0x11, 0xfb, 0x3a, 0xf9, 0x06, 0xf9, + 0xae, 0xfa, 0xdd, 0xfa, 0xfd, 0xfc, 0xc3, 0xff, 0x9c, 0xff, 0xa7, 0x02, 0xc0, 0x02, 0x54, 0x00, + 0x19, 0x01, 0x6b, 0x00, 0x09, 0x00, 0x94, 0xff, 0x46, 0x01, 0xc5, 0x03, 0xd8, 0x04, 0x84, 0x04, + 0x4d, 0x02, 0x9b, 0x01, 0x97, 0x01, 0x4d, 0x02, 0x44, 0x02, 0x2e, 0x01, 0x03, 0x00, 0xbf, 0xff, + 0xbe, 0x00, 0xbc, 0x00, 0xe8, 0x01, 0x86, 0x02, 0x18, 0x01, 0x43, 0x02, 0x9f, 0x02, 0x74, 0x02, + 0x4a, 0x04, 0x0d, 0x00, 0x8e, 0xfa, 0xbe, 0xfa, 0x5a, 0xf8, 0x34, 0xfa, 0xdb, 0xf9, 0x0f, 0xf8, + 0x30, 0xf8, 0xe6, 0xf6, 0x0c, 0xf7, 0xbd, 0xf7, 0xea, 0xf9, 0xab, 0xf7, 0x77, 0xf5, 0x62, 0xf5, + 0xfa, 0xf6, 0xb8, 0xf9, 0x19, 0xfa, 0x72, 0xf8, 0x31, 0xf6, 0xdf, 0xf5, 0x21, 0xf4, 0xe1, 0xf7, + 0xe9, 0xfd, 0xb8, 0xfe, 0x24, 0x00, 0x4b, 0x00, 0xae, 0xff, 0x4e, 0x02, 0x76, 0x05, 0x3c, 0x07, + 0xc5, 0x08, 0x97, 0x09, 0x7a, 0x08, 0x1d, 0x0b, 0x46, 0x0d, 0x51, 0x0c, 0x14, 0x0b, 0xfe, 0x06, + 0xa3, 0x05, 0xbd, 0x06, 0x3a, 0x05, 0x1d, 0x03, 0x7d, 0xfe, 0xa5, 0xf8, 0x48, 0xf6, 0xa4, 0xf4, + 0xdc, 0xf5, 0x9a, 0xf6, 0x4c, 0xf8, 0xf5, 0xf7, 0xd9, 0xf3, 0x6a, 0xf4, 0x78, 0xf4, 0x76, 0xf4, + 0x51, 0xf5, 0x14, 0xf3, 0x41, 0xf3, 0x71, 0xf6, 0xda, 0xf8, 0xcd, 0xf9, 0x19, 0xfc, 0xe5, 0xfc, + 0x48, 0xfe, 0x67, 0x00, 0x5d, 0x01, 0xba, 0x04, 0xb5, 0x07, 0x17, 0x07, 0xc4, 0x06, 0x1f, 0x04, + 0xde, 0x02, 0x53, 0x04, 0x7d, 0x03, 0x91, 0x01, 0x94, 0x00, 0x08, 0x01, 0x34, 0x03, 0x1f, 0x05, + 0x9a, 0x06, 0xa7, 0x07, 0xe5, 0x08, 0x78, 0x08, 0xc4, 0x08, 0xb6, 0x0a, 0x88, 0x0c, 0xa6, 0x0b, + 0x8c, 0x0a, 0xa0, 0x09, 0x32, 0x08, 0x1a, 0x0c, 0xa3, 0x0d, 0xc7, 0x0e, 0xa5, 0x11, 0x23, 0x11, + 0x5a, 0x11, 0x11, 0x12, 0xbe, 0x10, 0x43, 0x0d, 0x0e, 0x0c, 0xc6, 0x0a, 0xd0, 0x09, 0xc1, 0x08, + 0xcd, 0x06, 0xdc, 0x03, 0x8a, 0x00, 0xdd, 0xfc, 0xa9, 0xf8, 0xe3, 0xf7, 0x66, 0xf7, 0x17, 0xf8, + 0x37, 0xf6, 0x70, 0xf3, 0x57, 0xf1, 0xb1, 0xef, 0x93, 0xef, 0xb5, 0xee, 0x98, 0xef, 0x88, 0xef, + 0xa8, 0xf0, 0x85, 0xf2, 0xea, 0xf1, 0xf2, 0xf3, 0xb7, 0xf5, 0xca, 0xf6, 0x1e, 0xf9, 0xf9, 0xfc, + 0x5e, 0xff, 0x9f, 0x01, 0x52, 0x00, 0x0b, 0xfd, 0xdf, 0xfe, 0x8d, 0xfe, 0x90, 0x01, 0x34, 0x05, + 0x77, 0x05, 0xcb, 0x06, 0x9e, 0x06, 0xcf, 0x06, 0x2e, 0x08, 0x0f, 0x0b, 0x04, 0x0c, 0x22, 0x0c, + 0x63, 0x0d, 0x27, 0x0e, 0x82, 0x0e, 0x6b, 0x0f, 0xa2, 0x0e, 0x37, 0x0d, 0xd0, 0x0c, 0x34, 0x0b, + 0x0f, 0x0b, 0x5c, 0x0c, 0xc8, 0x0c, 0x26, 0x0c, 0x2b, 0x0a, 0x85, 0x08, 0x00, 0x08, 0xe1, 0x08, + 0xe8, 0x06, 0x3f, 0x05, 0xd1, 0x03, 0xfe, 0xfe, 0x8d, 0xff, 0x7a, 0xff, 0x36, 0xfe, 0x82, 0xfd, + 0x1f, 0xf9, 0xc8, 0xf5, 0x69, 0xf5, 0xcf, 0xf3, 0xa4, 0xf2, 0x75, 0xef, 0x80, 0xeb, 0x41, 0xe8, + 0xcd, 0xe5, 0xa7, 0xe6, 0x55, 0xe8, 0xb4, 0xeb, 0x92, 0xec, 0xe2, 0xea, 0x4a, 0xec, 0xf5, 0xec, + 0xd1, 0xed, 0xc7, 0xee, 0x09, 0xee, 0xf5, 0xed, 0x04, 0xf3, 0x49, 0xf9, 0x34, 0xfd, 0x7e, 0x00, + 0xab, 0x01, 0xe7, 0x03, 0xc1, 0x07, 0x9f, 0x0a, 0x7f, 0x0e, 0x21, 0x13, 0x02, 0x14, 0x09, 0x14, + 0x51, 0x11, 0xd4, 0x0e, 0xe6, 0x0f, 0x7e, 0x0f, 0x00, 0x0e, 0x98, 0x0c, 0x9d, 0x0a, 0x8d, 0x0a, + 0x48, 0x0b, 0x8c, 0x08, 0xb8, 0x05, 0x9b, 0x03, 0xa5, 0x02, 0xcd, 0x01, 0x04, 0x00, 0x3c, 0x00, + 0x25, 0xfc, 0x8c, 0xf8, 0x4e, 0xf5, 0xde, 0xf0, 0xb6, 0xf2, 0xca, 0xf2, 0x56, 0xf3, 0x4e, 0xf5, + 0x60, 0xf5, 0xd1, 0xf4, 0xa8, 0xf6, 0xc8, 0xf8, 0x26, 0xf8, 0x6e, 0xf9, 0x52, 0xf7, 0xc5, 0xf6, + 0x97, 0xf8, 0x3e, 0xf7, 0xac, 0xf6, 0xc0, 0xf5, 0xaf, 0xf5, 0xb0, 0xf3, 0xfc, 0xf2, 0xd1, 0xf3, + 0xd5, 0xf5, 0x50, 0xf7, 0x80, 0xf7, 0x2b, 0xf8, 0x0d, 0xf9, 0x95, 0xf9, 0xc8, 0xfa, 0x1a, 0xfd, + 0x89, 0xfe, 0x3d, 0x01, 0x6c, 0x05, 0x6e, 0x06, 0xbc, 0x07, 0x81, 0x0a, 0x0e, 0x0c, 0x2b, 0x0e, + 0x43, 0x12, 0x11, 0x14, 0x8d, 0x19, 0xdb, 0x1a, 0x18, 0x16, 0x0f, 0x15, 0xad, 0x10, 0x63, 0x0f, + 0x6e, 0x0e, 0x53, 0x0d, 0x06, 0x0d, 0x95, 0x0a, 0x4e, 0x09, 0x57, 0x06, 0xad, 0x06, 0xa6, 0x06, + 0x95, 0x03, 0x9f, 0x01, 0xcf, 0xff, 0xcd, 0xfe, 0xe5, 0xff, 0x1a, 0xff, 0xe7, 0xfb, 0x62, 0xfa, + 0x35, 0xf9, 0x1c, 0xf9, 0x72, 0xfc, 0x8d, 0xfd, 0x82, 0xfc, 0xd1, 0xfc, 0xa7, 0xfc, 0x79, 0xfd, + 0x23, 0xff, 0xdd, 0xff, 0xdd, 0x00, 0x0c, 0x01, 0xc9, 0xfe, 0xb8, 0xfe, 0xb0, 0xfe, 0xa7, 0xfd, + 0x95, 0xfe, 0x6b, 0xfd, 0xe7, 0xfb, 0x17, 0xfd, 0xab, 0xfe, 0x44, 0x01, 0xbc, 0x00, 0x24, 0xff, + 0xac, 0xfc, 0x40, 0xfb, 0x2e, 0xfe, 0x9b, 0xff, 0x4e, 0x02, 0xdb, 0x04, 0xeb, 0x01, 0x1f, 0x02, + 0xf6, 0x03, 0xcb, 0x04, 0xe3, 0x06, 0x41, 0x05, 0x09, 0x03, 0xb0, 0x04, 0x1b, 0x06, 0x95, 0x08, + 0x74, 0x0a, 0xef, 0x0a, 0x14, 0x0a, 0x0c, 0x0a, 0xb8, 0x09, 0x2e, 0x08, 0x0b, 0x08, 0xc5, 0x05, + 0x20, 0x04, 0xc7, 0x01, 0x4f, 0xff, 0x95, 0xfe, 0x5f, 0xfd, 0x03, 0xfc, 0x09, 0xf9, 0x2f, 0xf9, + 0x5c, 0xfb, 0x98, 0xfc, 0x9f, 0xfc, 0xd2, 0xfa, 0x0e, 0xfa, 0x1a, 0xfa, 0x45, 0xf9, 0x9e, 0xf8, + 0xc0, 0xfa, 0x9d, 0xf8, 0x56, 0xf6, 0x40, 0xf5, 0x61, 0xf1, 0x00, 0xf3, 0x91, 0xf5, 0x7b, 0xf9, + 0x55, 0xfd, 0xe9, 0xfd, 0x8f, 0xfe, 0x68, 0x00, 0x57, 0x02, 0x59, 0x01, 0xb2, 0xff, 0xbd, 0xfe, + 0x5a, 0x01, 0xf9, 0x02, 0xaf, 0x04, 0x94, 0x03, 0xad, 0x02, 0x49, 0x04, 0xa5, 0x03, 0xa9, 0x04, + 0xf9, 0x03, 0xf2, 0x03, 0x48, 0x04, 0x80, 0x01, 0x61, 0xff, 0x22, 0xfe, 0x49, 0xfc, 0x95, 0xfa, + 0x8f, 0xfa, 0xca, 0xf9, 0x72, 0xf9, 0x13, 0xfa, 0x59, 0xf8, 0x81, 0xf7, 0x4e, 0xf8, 0xe3, 0xf8, + 0xc1, 0xf9, 0xbd, 0xfa, 0x12, 0xf9, 0xd6, 0xfa, 0x8a, 0xfb, 0xd5, 0xf8, 0xad, 0xf6, 0x0a, 0xf3, + 0xdb, 0xf2, 0xf7, 0xf3, 0x1a, 0xf6, 0xaa, 0xf7, 0x77, 0xf8, 0x89, 0xfa, 0x11, 0xfa, 0x48, 0xfb, + 0xe5, 0xfd, 0x6e, 0xfd, 0xa1, 0xfc, 0x86, 0xfc, 0x7c, 0xfc, 0x63, 0x00, 0xad, 0x02, 0x0d, 0x03, + 0x6e, 0x04, 0xe9, 0x04, 0xaa, 0x06, 0x1f, 0x0a, 0x72, 0x0c, 0x2d, 0x0f, 0x02, 0x11, 0x66, 0x11, + 0xb5, 0x11, 0xf6, 0x11, 0x8b, 0x11, 0xea, 0x10, 0xca, 0x10, 0x10, 0x0e, 0xa9, 0x0b, 0x12, 0x0b, + 0x44, 0x09, 0x87, 0x09, 0xe9, 0x08, 0xc5, 0x05, 0x77, 0x04, 0x5c, 0x04, 0xdb, 0x04, 0x5d, 0x02, + 0x18, 0xfe, 0x24, 0xf8, 0xd4, 0xf2, 0x7f, 0xf1, 0xb5, 0xef, 0xd9, 0xf0, 0x9c, 0xf2, 0xfe, 0xf0, + 0x08, 0xf1, 0x29, 0xf2, 0xb8, 0xf3, 0x71, 0xf6, 0xe6, 0xf5, 0xa3, 0xf3, 0x17, 0xf5, 0xdd, 0xf7, + 0xd8, 0xfa, 0x80, 0xfc, 0xdb, 0xfc, 0x8f, 0xfc, 0x94, 0xfe, 0xf6, 0xff, 0xc1, 0xff, 0xb4, 0x01, + 0x38, 0x02, 0x1a, 0x02, 0xe7, 0x02, 0x69, 0x04, 0x96, 0x05, 0x26, 0x07, 0x3f, 0x08, 0xf8, 0x07, + 0x31, 0x0a, 0x57, 0x0b, 0xce, 0x0e, 0x70, 0x10, 0x20, 0x10, 0x3d, 0x11, 0x32, 0x12, 0x6f, 0x12, + 0x72, 0x11, 0xb0, 0x14, 0x1a, 0x15, 0xa9, 0x12, 0x7b, 0x11, 0x72, 0x0c, 0x0d, 0x0b, 0xbf, 0x0a, + 0xa6, 0x09, 0x5a, 0x09, 0x9f, 0x07, 0x70, 0x04, 0xeb, 0x02, 0xb7, 0x02, 0xd1, 0x00, 0xc5, 0xfc, + 0x84, 0xf8, 0x58, 0xf7, 0xd7, 0xf6, 0x61, 0xf6, 0xce, 0xf4, 0x4d, 0xf4, 0x76, 0xf3, 0x3d, 0xf1, + 0xaf, 0xef, 0xe0, 0xee, 0x3c, 0xef, 0x66, 0xf0, 0xc8, 0xf0, 0x4c, 0xf0, 0x80, 0xf1, 0xbd, 0xf1, + 0xf6, 0xf1, 0x58, 0xf4, 0x1e, 0xf5, 0x6f, 0xf5, 0xb3, 0xf6, 0x70, 0xf7, 0x96, 0xf6, 0x0c, 0xf8, + 0x11, 0xfa, 0x04, 0xfc, 0xa0, 0xff, 0x56, 0xff, 0x44, 0x02, 0x64, 0x07, 0x11, 0x07, 0xd6, 0x06, + 0x93, 0x04, 0xd9, 0x03, 0x9b, 0x05, 0x0c, 0x08, 0x93, 0x0a, 0x18, 0x0b, 0xaa, 0x0b, 0x4b, 0x0c, + 0x8d, 0x0c, 0xcc, 0x0e, 0x2f, 0x0e, 0xe8, 0x0c, 0xb7, 0x0c, 0xc9, 0x0a, 0x65, 0x0b, 0xac, 0x0b, + 0xe2, 0x09, 0xb1, 0x07, 0x3c, 0x06, 0x23, 0x04, 0x3c, 0x04, 0x08, 0x04, 0xc4, 0x01, 0xcc, 0x00, + 0x53, 0xfe, 0xbd, 0xfb, 0xb2, 0xfa, 0x13, 0xf8, 0x79, 0xf6, 0x58, 0xf5, 0xe8, 0xf2, 0xc8, 0xf0, + 0x07, 0xf0, 0x3f, 0xee, 0xdf, 0xee, 0x2a, 0xef, 0x67, 0xed, 0x8c, 0xec, 0xcc, 0xec, 0xce, 0xef, + 0xfc, 0xf0, 0x22, 0xef, 0x39, 0xec, 0xf1, 0xe8, 0x9f, 0xe8, 0x1c, 0xe9, 0x66, 0xeb, 0xfd, 0xef, + 0x96, 0xf1, 0xf5, 0xf1, 0x81, 0xf6, 0xf9, 0xf9, 0x6f, 0xff, 0x9c, 0x02, 0xe4, 0x00, 0xd3, 0x02, + 0x3e, 0x06, 0x56, 0x0a, 0xc7, 0x0e, 0x8c, 0x10, 0x2b, 0x10, 0xf7, 0x11, 0xb2, 0x13, 0x03, 0x15, + 0x5f, 0x16, 0x86, 0x15, 0x37, 0x15, 0x51, 0x14, 0xf0, 0x13, 0xdb, 0x12, 0x4b, 0x11, 0x72, 0x10, + 0x09, 0x0d, 0xb0, 0x0a, 0x63, 0x09, 0x6a, 0x09, 0xc4, 0x08, 0xca, 0x06, 0x0c, 0x04, 0xaf, 0x03, + 0x36, 0x03, 0xc7, 0x00, 0x6b, 0x01, 0x97, 0x00, 0xd6, 0xfd, 0xc8, 0xfc, 0x36, 0xf8, 0x3f, 0xf5, + 0x89, 0xf5, 0xd9, 0xf4, 0xc7, 0xf5, 0xc4, 0xf6, 0xaf, 0xf5, 0x64, 0xf7, 0x96, 0xf8, 0x60, 0xf8, + 0xf9, 0xf6, 0xdb, 0xf3, 0xd9, 0xf3, 0x15, 0xf4, 0x0f, 0xf5, 0x40, 0xf6, 0x85, 0xf6, 0x91, 0xf7, + 0x4e, 0xf8, 0xf1, 0xf8, 0x33, 0xfb, 0xc5, 0xfc, 0x42, 0xff, 0xf8, 0x01, 0x54, 0x02, 0xb6, 0x05, + 0x39, 0x07, 0xf8, 0x06, 0xc1, 0x09, 0xae, 0x0b, 0xd8, 0x0c, 0x5e, 0x0f, 0x14, 0x10, 0x5b, 0x0e, + 0xa6, 0x0e, 0x59, 0x0e, 0xf6, 0x0d, 0x63, 0x0f, 0x67, 0x0d, 0x5e, 0x0d, 0x8d, 0x0f, 0xf5, 0x0d, + 0x2f, 0x0b, 0xb8, 0x05, 0x35, 0x01, 0x29, 0xff, 0x8e, 0xfe, 0x27, 0xfe, 0x16, 0xfd, 0xc4, 0xfb, + 0x9b, 0xfa, 0xa3, 0xf8, 0xb3, 0xfa, 0xec, 0xfa, 0x63, 0xf9, 0xab, 0xf9, 0xf2, 0xf7, 0xb9, 0xf8, + 0x41, 0xfb, 0x36, 0xfb, 0xb0, 0xfa, 0x93, 0xfb, 0x29, 0xfa, 0x1c, 0xfc, 0x02, 0xfd, 0x6d, 0xfc, + 0x60, 0xfd, 0x00, 0xfc, 0xc0, 0xfc, 0x82, 0xfe, 0x96, 0xfe, 0x17, 0xff, 0x31, 0xff, 0xc7, 0xfe, + 0xfa, 0xfd, 0x97, 0xfe, 0xec, 0xfe, 0x3b, 0x00, 0x94, 0x02, 0x95, 0x03, 0x19, 0x03, 0xf5, 0x02, + 0x85, 0x04, 0xaa, 0x05, 0xf0, 0x05, 0x81, 0x04, 0x5c, 0x01, 0xe4, 0xff, 0x6a, 0xfe, 0xa4, 0xfd, + 0x60, 0xff, 0x47, 0xff, 0x3a, 0xfe, 0xdc, 0xff, 0x7f, 0xff, 0xd6, 0x01, 0xbf, 0x02, 0xe2, 0xfe, + 0x89, 0xfc, 0xdc, 0xfb, 0x98, 0xfb, 0x4c, 0xfd, 0x27, 0xfe, 0xf7, 0xfb, 0xd8, 0xfa, 0xa8, 0xfa, + 0x74, 0xfb, 0xe6, 0xfb, 0x4b, 0xfb, 0x3d, 0xfb, 0x4e, 0xfa, 0xc1, 0xfb, 0xb9, 0xfa, 0x9a, 0xf9, + 0x02, 0xfb, 0xfa, 0xf9, 0x6c, 0xfa, 0xbc, 0xfa, 0x88, 0xfb, 0xd8, 0xfd, 0x9a, 0xfc, 0x9a, 0xfa, + 0xf3, 0xfb, 0x16, 0xfd, 0x25, 0xfd, 0x0b, 0xff, 0x29, 0x01, 0x96, 0x01, 0x1b, 0x02, 0xda, 0x00, + 0x12, 0xff, 0x2d, 0x00, 0x66, 0x02, 0xd3, 0x04, 0x28, 0x07, 0x5e, 0x06, 0x23, 0x07, 0x7d, 0x08, + 0xeb, 0x0a, 0x96, 0x0b, 0x34, 0x09, 0xb2, 0x07, 0x0e, 0x07, 0x88, 0x07, 0xfb, 0x06, 0x1a, 0x06, + 0xf2, 0x04, 0xbd, 0x03, 0x96, 0x01, 0xf2, 0x00, 0xa1, 0xff, 0x4d, 0xff, 0x86, 0xff, 0xe0, 0xfb, + 0xf2, 0xfb, 0x50, 0xfc, 0xfc, 0xfa, 0x85, 0xfb, 0x73, 0xfa, 0xb1, 0xf8, 0x8a, 0xf8, 0x6c, 0xf8, + 0xb1, 0xf7, 0x94, 0xf7, 0xde, 0xf8, 0x4c, 0xfa, 0x27, 0xfc, 0xce, 0xfb, 0xbc, 0xfb, 0x94, 0xff, + 0x81, 0x01, 0x00, 0x01, 0x23, 0xff, 0x21, 0xfb, 0xa4, 0xf8, 0x11, 0xf9, 0x1e, 0xfa, 0xa6, 0xfb, + 0xef, 0xfb, 0x93, 0xfc, 0x0f, 0xfd, 0x42, 0x00, 0x0f, 0x03, 0x6b, 0x04, 0xdb, 0x05, 0x21, 0x06, + 0x86, 0x07, 0xf8, 0x0a, 0x15, 0x0d, 0x00, 0x0d, 0x65, 0x0d, 0x24, 0x0c, 0xa1, 0x0d, 0xf4, 0x0f, + 0x45, 0x10, 0xf0, 0x11, 0xa4, 0x10, 0x34, 0x0f, 0x64, 0x0f, 0x92, 0x0d, 0x79, 0x0c, 0x3d, 0x0b, + 0x0f, 0x09, 0x56, 0x06, 0xca, 0x03, 0x81, 0x01, 0xed, 0xfd, 0x15, 0xfc, 0x04, 0xfa, 0x12, 0xf7, + 0xc3, 0xf5, 0xf1, 0xf4, 0x8f, 0xf4, 0x83, 0xf3, 0x73, 0xf0, 0xc1, 0xed, 0xd1, 0xeb, 0x61, 0xea, + 0x35, 0xea, 0x0b, 0xec, 0xe1, 0xed, 0xed, 0xec, 0x3c, 0xee, 0x79, 0xf0, 0xf7, 0xf3, 0x4c, 0xf8, + 0xd6, 0xf8, 0xea, 0xf7, 0x84, 0xf9, 0xdb, 0xf9, 0x62, 0xfc, 0x2c, 0x00, 0xed, 0xff, 0x14, 0x01, + 0x66, 0x02, 0x34, 0x05, 0xe6, 0x07, 0x68, 0x08, 0x5a, 0x09, 0x97, 0x09, 0x57, 0x0c, 0x36, 0x0e, + 0x88, 0x0e, 0x05, 0x10, 0x0a, 0x0f, 0x35, 0x0e, 0x95, 0x0e, 0x0a, 0x0f, 0xd5, 0x11, 0x61, 0x12, + 0xcc, 0x10, 0x90, 0x11, 0x77, 0x11, 0x7f, 0x0f, 0xcf, 0x0e, 0x92, 0x0e, 0x47, 0x0d, 0xb3, 0x0b, + 0x06, 0x09, 0x99, 0x03, 0x50, 0x00, 0x58, 0xfd, 0x0d, 0xfb, 0xa4, 0xfb, 0x78, 0xf8, 0xdc, 0xf6, + 0x27, 0xf6, 0x6e, 0xf5, 0x07, 0xf5, 0xaa, 0xf2, 0x30, 0xef, 0x47, 0xee, 0x7c, 0xee, 0x57, 0xee, + 0xb1, 0xee, 0x59, 0xed, 0x72, 0xed, 0x04, 0xec, 0x3a, 0xed, 0xfd, 0xee, 0x42, 0xf0, 0x0c, 0xf3, + 0xfb, 0xf0, 0x23, 0xf0, 0x5e, 0xf2, 0x7a, 0xf2, 0xd9, 0xf4, 0xdb, 0xf6, 0x0b, 0xf7, 0x27, 0xfa, + 0x24, 0xfd, 0x4f, 0xfe, 0x9e, 0xff, 0x00, 0x01, 0x45, 0x03, 0x81, 0x07, 0xb7, 0x09, 0xe3, 0x0a, + 0xfa, 0x0d, 0x7d, 0x10, 0xab, 0x10, 0x7b, 0x10, 0x3a, 0x0e, 0xf7, 0x0b, 0x37, 0x0d, 0xd3, 0x0d, + 0x3a, 0x0d, 0x36, 0x0b, 0xef, 0x09, 0x55, 0x09, 0x59, 0x0a, 0x55, 0x0b, 0x1b, 0x0b, 0xc3, 0x0a, + 0x77, 0x09, 0x97, 0x06, 0x6c, 0x06, 0x54, 0x06, 0x48, 0x04, 0x27, 0x04, 0x7e, 0x00, 0x15, 0xff, + 0xb9, 0x00, 0x64, 0xfe, 0x3c, 0xfe, 0xf1, 0xfc, 0x29, 0xfb, 0x9e, 0xfd, 0x57, 0xfd, 0xca, 0xfc, + 0xb4, 0xfc, 0x77, 0xfa, 0xd2, 0xf9, 0xa6, 0xf8, 0x48, 0xf8, 0x9b, 0xf7, 0xff, 0xf6, 0x69, 0xf7, + 0x40, 0xf6, 0xe4, 0xf5, 0x2b, 0xf6, 0xaf, 0xf6, 0x72, 0xf8, 0x8a, 0xf8, 0x2e, 0xf8, 0x85, 0xf7, + 0x63, 0xf6, 0xc5, 0xf5, 0x53, 0xf8, 0xbc, 0xfb, 0x75, 0xfc, 0x87, 0xfe, 0x00, 0x00, 0x78, 0x02, + 0x0a, 0x07, 0xb1, 0x09, 0x45, 0x09, 0x3c, 0x0b, 0x19, 0x0b, 0x63, 0x0c, 0x42, 0x0f, 0x11, 0x0e, + 0x18, 0x0e, 0x05, 0x0c, 0x98, 0x0c, 0xf8, 0x0d, 0xb2, 0x0c, 0x98, 0x0c, 0xa4, 0x09, 0xa0, 0x07, + 0x9f, 0x06, 0xc6, 0x03, 0x40, 0x03, 0xa0, 0x02, 0x61, 0xff, 0x61, 0xfe, 0x99, 0xfc, 0x91, 0xfc, + 0xef, 0xfc, 0xb3, 0xf9, 0xbd, 0xf9, 0xaf, 0xfa, 0x08, 0xfa, 0x28, 0xfa, 0x7f, 0xfa, 0x16, 0xfb, + 0x4c, 0xfb, 0x42, 0xfb, 0x8c, 0xf9, 0x71, 0xf8, 0xb8, 0xf7, 0xf9, 0xf6, 0x50, 0xf8, 0x59, 0xf7, + 0xb4, 0xf6, 0x1f, 0xf7, 0xad, 0xf8, 0x12, 0xfb, 0x64, 0xfc, 0x95, 0xfa, 0x0d, 0xfa, 0xb7, 0xfb, + 0xa4, 0xfc, 0x8f, 0xff, 0xc1, 0x00, 0x6f, 0x01, 0x46, 0x00, 0x9c, 0x00, 0x29, 0x02, 0xcf, 0x02, + 0x4b, 0x06, 0xcf, 0x05, 0xac, 0x04, 0x89, 0x07, 0x7a, 0x07, 0x0b, 0x08, 0xf0, 0x08, 0x0e, 0x06, + 0x53, 0x06, 0xf5, 0x05, 0x9a, 0x05, 0xb2, 0x06, 0x9a, 0x05, 0xc5, 0x04, 0x2b, 0x05, 0x0d, 0x04, + 0x88, 0x03, 0xaa, 0x03, 0xf1, 0x04, 0x43, 0x04, 0x95, 0x02, 0x4d, 0xff, 0xb9, 0xf9, 0x48, 0xf8, + 0xb3, 0xf8, 0xdb, 0xf7, 0xfd, 0xf6, 0xc9, 0xf5, 0x2b, 0xf5, 0xea, 0xf6, 0xe1, 0xf7, 0xb4, 0xf9, + 0xda, 0xfa, 0x4a, 0xfb, 0xac, 0xfa, 0x49, 0xfa, 0x6f, 0xfb, 0xfa, 0xfb, 0x7b, 0xfd, 0x99, 0xfa, + 0x14, 0xfa, 0x28, 0xfe, 0x66, 0xff, 0x7b, 0x01, 0xfd, 0x02, 0xd2, 0x00, 0x53, 0x03, 0x61, 0x05, + 0x42, 0x06, 0x49, 0x08, 0x2d, 0x07, 0xad, 0x07, 0xda, 0x06, 0x74, 0x06, 0x65, 0x05, 0xca, 0x03, + 0x8e, 0x05, 0xe0, 0x04, 0x56, 0x04, 0x17, 0x04, 0xb3, 0x01, 0x7c, 0x02, 0x31, 0x01, 0x8d, 0xfe, + 0x1d, 0xfe, 0xa3, 0xfc, 0x92, 0xf9, 0xfd, 0xf8, 0x3c, 0xf8, 0xc1, 0xf6, 0x60, 0xf6, 0x5f, 0xf5, + 0x3b, 0xf6, 0xfb, 0xf8, 0xf0, 0xfb, 0xfd, 0xfa, 0x3a, 0xfa, 0xcb, 0xf9, 0xa1, 0xf9, 0xa7, 0xfc, + 0xdb, 0xfd, 0x1c, 0xff, 0x42, 0xff, 0x13, 0xff, 0xcc, 0x00, 0x18, 0x02, 0xf3, 0x02, 0xfc, 0x02, + 0xf5, 0x02, 0x63, 0x03, 0xe1, 0x02, 0xcb, 0x03, 0x0d, 0x05, 0xf5, 0x02, 0xae, 0x02, 0x2c, 0x02, + 0xbb, 0x02, 0x52, 0x06, 0xcc, 0x05, 0xbb, 0x06, 0x10, 0x09, 0x8f, 0x09, 0xf6, 0x0b, 0x57, 0x0d, + 0x81, 0x0e, 0x60, 0x0e, 0xe3, 0x0e, 0xb4, 0x0d, 0x1e, 0x0b, 0x86, 0x0a, 0x18, 0x09, 0x26, 0x0a, + 0x17, 0x0a, 0xe2, 0x06, 0xbd, 0x04, 0xa6, 0x04, 0xd9, 0x03, 0xea, 0x03, 0x64, 0x01, 0x86, 0xfd, + 0xfd, 0xfc, 0xf8, 0xfa, 0x94, 0xf9, 0xca, 0xf7, 0x78, 0xf5, 0x38, 0xf2, 0xf2, 0xef, 0x42, 0xf0, + 0x6b, 0xf0, 0x72, 0xf1, 0x99, 0xf0, 0x1a, 0xed, 0xf6, 0xed, 0x5b, 0xee, 0xea, 0xee, 0xe2, 0xf1, + 0x29, 0xf1, 0xfe, 0xf1, 0x76, 0xf4, 0xde, 0xf5, 0xaa, 0xf7, 0xba, 0xf8, 0x0b, 0xf9, 0xce, 0xfa, + 0x07, 0xfc, 0x46, 0xfe, 0x7b, 0xff, 0x09, 0x01, 0x13, 0x02, 0xe9, 0x01, 0x6a, 0x03, 0xfb, 0x01, + 0xe8, 0x01, 0xaf, 0x03, 0x4a, 0x04, 0xc7, 0x05, 0xb8, 0x05, 0x0a, 0x06, 0x22, 0x08, 0xed, 0x08, + 0xb5, 0x0a, 0x0b, 0x0c, 0xb6, 0x0d, 0xcb, 0x0d, 0x72, 0x0e, 0x5d, 0x10, 0x95, 0x10, 0x22, 0x11, + 0x8b, 0x0f, 0xde, 0x0c, 0x5f, 0x0d, 0x10, 0x0d, 0x7c, 0x0b, 0xe4, 0x0b, 0x71, 0x08, 0xd7, 0x06, + 0xae, 0x06, 0xaa, 0x04, 0x99, 0x04, 0x67, 0x01, 0x09, 0xff, 0x6d, 0xfd, 0xf7, 0xfa, 0x24, 0xf8, + 0x91, 0xf4, 0xf2, 0xf3, 0xd6, 0xf3, 0xc3, 0xf2, 0x16, 0xf3, 0xed, 0xf1, 0x69, 0xf2, 0x5b, 0xf2, + 0x1b, 0xf1, 0xe7, 0xf0, 0xee, 0xf0, 0x8b, 0xef, 0xc4, 0xef, 0xd2, 0xf0, 0x39, 0xf1, 0x93, 0xf2, + 0x10, 0xf2, 0xdf, 0xf2, 0xee, 0xf4, 0x67, 0xf9, 0x9d, 0xfb, 0x71, 0xfd, 0xe1, 0xfe, 0xee, 0xfe, + 0xfa, 0x02, 0xdf, 0x05, 0xd9, 0x08, 0xe6, 0x0a, 0xf0, 0x0a, 0x93, 0x0c, 0x39, 0x0e, 0x94, 0x0f, + 0x6f, 0x10, 0x61, 0x10, 0x15, 0x10, 0xde, 0x0f, 0x32, 0x0f, 0x07, 0x10, 0x72, 0x0f, 0xd8, 0x0e, + 0x4a, 0x0d, 0xc6, 0x0a, 0xb4, 0x0b, 0x4f, 0x0a, 0x8f, 0x08, 0x35, 0x09, 0x66, 0x07, 0xe4, 0x06, + 0x01, 0x06, 0xaf, 0x03, 0x15, 0x02, 0x17, 0x01, 0x59, 0xff, 0xaa, 0xfc, 0x4e, 0xf9, 0x0d, 0xf7, + 0x50, 0xf7, 0x9e, 0xf7, 0xfa, 0xf5, 0xfd, 0xf3, 0x1e, 0xf4, 0xb4, 0xf4, 0x16, 0xf6, 0xd9, 0xf5, + 0x58, 0xf3, 0x98, 0xf3, 0xe4, 0xf3, 0x85, 0xf4, 0xbb, 0xf5, 0x35, 0xf6, 0x12, 0xf6, 0x57, 0xf5, + 0x09, 0xf5, 0x66, 0xf5, 0xd5, 0xf7, 0xf8, 0xfa, 0x7b, 0xf9, 0xf0, 0xfa, 0xf2, 0xfc, 0x2a, 0xfe, + 0xdc, 0x03, 0xb0, 0x04, 0xb7, 0x04, 0x08, 0x07, 0x87, 0x08, 0x08, 0x0b, 0xce, 0x0c, 0x98, 0x0c, + 0x9e, 0x0e, 0x76, 0x10, 0xe5, 0x11, 0x79, 0x13, 0x4c, 0x14, 0xda, 0x13, 0xfd, 0x11, 0x27, 0x10, + 0xd8, 0x0c, 0xf6, 0x09, 0xdf, 0x09, 0xea, 0x07, 0xd8, 0x05, 0xca, 0x03, 0x4b, 0x00, 0xc0, 0xfe, + 0xed, 0xfc, 0x82, 0xfb, 0x1d, 0xfb, 0xf8, 0xfa, 0x54, 0xf9, 0x45, 0xf8, 0xc9, 0xf8, 0xf5, 0xf7, + 0x80, 0xf8, 0xbe, 0xf7, 0xb4, 0xf5, 0x22, 0xf6, 0xcb, 0xf7, 0x60, 0xf7, 0xc3, 0xf9, 0xc5, 0xf8, + 0x05, 0xf7, 0x51, 0xf8, 0x27, 0xf7, 0x99, 0xf8, 0xdb, 0xf8, 0xff, 0xf8, 0x5a, 0xf9, 0xb6, 0xf8, + 0x5b, 0xf8, 0x0a, 0xf6, 0xb8, 0xf6, 0x97, 0xf8, 0x5e, 0xf9, 0x9b, 0xfb, 0x35, 0xfc, 0x30, 0xfd, + 0xd8, 0xfd, 0x0f, 0xfe, 0xc0, 0xfd, 0x97, 0xff, 0x56, 0xfe, 0x11, 0xfe, 0xe0, 0x00, 0x74, 0x01, + 0x08, 0x04, 0x1e, 0x04, 0xe3, 0x02, 0xee, 0x03, 0xc6, 0x06, 0x3d, 0x08, 0x48, 0x08, 0x27, 0x09, + 0x12, 0x08, 0x8c, 0x08, 0x57, 0x09, 0xc8, 0x09, 0xa4, 0x09, 0x4b, 0x08, 0xb0, 0x05, 0xd0, 0x04, + 0x8d, 0x04, 0x97, 0x02, 0x23, 0x01, 0xfc, 0xfe, 0x35, 0xfd, 0xf6, 0xfb, 0x0b, 0xfc, 0xc2, 0xfb, + 0x5a, 0xfa, 0xe4, 0xfa, 0x6a, 0xf8, 0x37, 0xf9, 0x23, 0xfb, 0x87, 0xfa, 0x0f, 0xfd, 0x1f, 0xfd, + 0xc7, 0xfd, 0xe4, 0xff, 0x33, 0x00, 0x1e, 0x00, 0xa7, 0x00, 0xe6, 0xff, 0xd5, 0xfe, 0xb6, 0xfd, + 0xcb, 0xfc, 0xc5, 0xfd, 0xda, 0xfe, 0x1a, 0x00, 0x23, 0x00, 0x10, 0x01, 0x38, 0x02, 0x95, 0x02, + 0xb9, 0x03, 0x07, 0x02, 0x24, 0x01, 0x7f, 0x02, 0x7c, 0x03, 0xe3, 0x03, 0xfb, 0x03, 0xb5, 0x02, + 0x4e, 0x02, 0x0c, 0x02, 0x60, 0x00, 0x36, 0x00, 0x4a, 0x01, 0x5d, 0x00, 0xa9, 0xfe, 0xbb, 0xfd, + 0x3c, 0xfc, 0x6c, 0xfd, 0xd2, 0xfd, 0x1e, 0xfb, 0xc9, 0xfb, 0x91, 0xfc, 0x32, 0xfc, 0x36, 0xfc, + 0xd9, 0xfa, 0x0d, 0xfa, 0xeb, 0xfa, 0xa5, 0xfc, 0x4c, 0xfd, 0x5e, 0xfe, 0x54, 0xfe, 0x47, 0xfe, + 0xfe, 0xfd, 0xbb, 0xfd, 0x22, 0xfd, 0x5b, 0xfe, 0x50, 0xff, 0x05, 0xfe, 0x1d, 0xff, 0x08, 0xfe, + 0x6d, 0xfe, 0xc7, 0xff, 0x32, 0xfe, 0xd8, 0xfe, 0xff, 0x00, 0x92, 0x01, 0x74, 0x02, 0xf2, 0x03, + 0x13, 0x05, 0xe0, 0x06, 0x08, 0x09, 0x42, 0x0a, 0xe6, 0x0a, 0xc8, 0x0b, 0x66, 0x0b, 0x50, 0x0c, + 0x20, 0x0c, 0xdb, 0x0b, 0x02, 0x0e, 0x8a, 0x0e, 0xa4, 0x0d, 0x09, 0x0e, 0x48, 0x0d, 0x7c, 0x0c, + 0xfb, 0x0b, 0x52, 0x09, 0xab, 0x05, 0xef, 0x02, 0xf4, 0x02, 0xba, 0x01, 0xb7, 0x00, 0x32, 0xff, + 0xdc, 0xfb, 0x05, 0xfa, 0xc1, 0xf7, 0x2d, 0xf4, 0x2d, 0xf3, 0x2a, 0xf0, 0x93, 0xed, 0x5c, 0xed, + 0x52, 0xeb, 0xb4, 0xeb, 0xb3, 0xec, 0x7c, 0xeb, 0xbf, 0xea, 0xe8, 0xeb, 0x4b, 0xee, 0x15, 0xf1, + 0x43, 0xf4, 0x87, 0xf5, 0x3c, 0xf7, 0xc7, 0xf9, 0xee, 0xfa, 0x8e, 0xfd, 0xc6, 0xff, 0xd6, 0xfe, + 0x0e, 0xff, 0x88, 0xff, 0x30, 0x02, 0x43, 0x03, 0x0d, 0x04, 0x36, 0x04, 0x52, 0x04, 0x33, 0x05, + 0x79, 0x07, 0xd9, 0x0a, 0xa7, 0x0b, 0x99, 0x0a, 0xc7, 0x0b, 0x12, 0x0d, 0x30, 0x0d, 0x93, 0x0e, + 0xc4, 0x10, 0x07, 0x12, 0x02, 0x14, 0xb1, 0x13, 0x30, 0x12, 0x49, 0x14, 0x70, 0x14, 0x47, 0x13, + 0xd2, 0x10, 0x3d, 0x0d, 0xb0, 0x0a, 0x59, 0x07, 0x1a, 0x05, 0xb2, 0x03, 0x32, 0x01, 0xf4, 0xff, + 0x42, 0xfd, 0xac, 0xfb, 0xea, 0xf8, 0xe6, 0xf2, 0xe3, 0xef, 0xea, 0xee, 0x95, 0xec, 0xdc, 0xee, + 0x56, 0xef, 0x5a, 0xed, 0x96, 0xe9, 0x78, 0xe8, 0xfd, 0xe6, 0x22, 0xe8, 0x1b, 0xeb, 0xbf, 0xef, + 0xa9, 0xee, 0xcb, 0xf7, 0x04, 0xfc, 0xa5, 0x01, 0x10, 0x06, 0xe5, 0x04, 0x3f, 0x05, 0xdf, 0x08, + 0x8a, 0x0a, 0xd6, 0x07, 0x06, 0x07, 0xb2, 0x06, 0x60, 0x04, 0xdd, 0x06, 0x91, 0x04, 0x31, 0x04, + 0x8a, 0x01, 0x8f, 0xfe, 0x48, 0xfc, 0x2b, 0xf4, 0xcd, 0xf8, 0xaf, 0xf4, 0x51, 0xf1, 0x71, 0xed, + 0x0f, 0xe9, 0x08, 0xea, 0xa9, 0xf1, 0xa1, 0xf8, 0xbd, 0xfc, 0x3e, 0x01, 0xc8, 0x04, 0x62, 0x0a, + 0x33, 0x0e, 0x2e, 0x12, 0xed, 0x14, 0x7e, 0x15, 0x81, 0x1c, 0x2d, 0x1e, 0x42, 0x25, 0x51, 0x28, + 0xb0, 0x25, 0xcd, 0x26, 0xcb, 0x21, 0xe0, 0x1f, 0x69, 0x1b, 0x0f, 0x11, 0x35, 0x0b, 0x12, 0x05, + 0x3d, 0x02, 0x02, 0x01, 0x5b, 0xfb, 0xe6, 0xf6, 0x5a, 0xee, 0x85, 0xe9, 0x70, 0xe4, 0xaa, 0xe1, + 0x37, 0xe3, 0x48, 0xe0, 0xe9, 0xdf, 0xb6, 0xe2, 0x03, 0xe0, 0xc5, 0xe6, 0x3c, 0xef, 0xc0, 0xf2, + 0x76, 0xfa, 0x38, 0x00, 0xb1, 0x07, 0xd2, 0x0f, 0x10, 0x10, 0x16, 0x10, 0xaf, 0x10, 0x75, 0x10, + 0xa1, 0x0f, 0x9e, 0x0c, 0xef, 0x08, 0xb9, 0x07, 0x75, 0x03, 0xbd, 0x04, 0xf4, 0x04, 0x7b, 0xff, + 0x83, 0xfe, 0xcb, 0xf3, 0x82, 0xee, 0xe9, 0xe7, 0x54, 0xe6, 0x59, 0xe9, 0x2f, 0xe8, 0x7d, 0xea, + 0xac, 0xeb, 0x8b, 0xeb, 0x73, 0xf3, 0x07, 0xf8, 0xb3, 0xfa, 0x53, 0x00, 0x33, 0x03, 0x4f, 0x09, + 0x3d, 0x0d, 0xbb, 0x10, 0xc4, 0x11, 0x7c, 0x12, 0x20, 0x14, 0xf2, 0x0f, 0xf9, 0x09, 0xde, 0x03, + 0x78, 0xff, 0x58, 0xfa, 0x21, 0xfb, 0x08, 0xf8, 0x10, 0xf4, 0xd0, 0xef, 0x41, 0xe5, 0x3a, 0xe1, + 0xe8, 0xdd, 0xcd, 0xde, 0xf6, 0xdf, 0x4d, 0xe2, 0x22, 0xe5, 0xe1, 0xe6, 0x32, 0xeb, 0xfd, 0xf2, + 0xa1, 0xf7, 0xd5, 0xfc, 0x2e, 0x04, 0x03, 0x0e, 0x74, 0x16, 0x64, 0x1e, 0x44, 0x24, 0xa9, 0x27, + 0xdc, 0x2b, 0x9d, 0x2a, 0x47, 0x29, 0x93, 0x22, 0x52, 0x1f, 0x79, 0x18, 0xe5, 0x16, 0x7c, 0x19, + 0x0c, 0x14, 0xc1, 0x12, 0xb7, 0x0d, 0xc8, 0x05, 0x83, 0xfd, 0x74, 0xf8, 0x32, 0xf5, 0x1c, 0xf1, + 0x8c, 0xec, 0x90, 0xea, 0x3e, 0xe6, 0x7c, 0xe9, 0xdc, 0xeb, 0xad, 0xed, 0xf0, 0xf6, 0x9e, 0xf8, + 0x54, 0x01, 0x60, 0x0c, 0x52, 0x12, 0xb0, 0x15, 0x20, 0x18, 0x83, 0x17, 0xfd, 0x17, 0x77, 0x15, + 0x5e, 0x11, 0x6f, 0x10, 0xf7, 0x0a, 0x44, 0x0c, 0xfb, 0x0c, 0x10, 0x09, 0x67, 0x09, 0xba, 0x01, + 0x3f, 0xf9, 0x9d, 0xf0, 0x3b, 0xec, 0x43, 0xe8, 0x7a, 0xe4, 0xf8, 0xe4, 0xf1, 0xe0, 0x54, 0xde, + 0xbe, 0xe4, 0x02, 0xec, 0xd1, 0xf5, 0xbc, 0xfc, 0xce, 0xfe, 0x99, 0x06, 0xc2, 0x0e, 0x1d, 0x12, + 0x5e, 0x16, 0xb7, 0x1b, 0x6a, 0x1b, 0x6b, 0x1c, 0xab, 0x1a, 0x5f, 0x15, 0x45, 0x11, 0x8c, 0x0c, + 0x18, 0x0e, 0x8f, 0x0b, 0x5b, 0x08, 0xad, 0x03, 0x84, 0xfa, 0x43, 0xf2, 0x2a, 0xe9, 0x63, 0xe3, + 0xe7, 0xe1, 0x7f, 0xe1, 0x9c, 0xe4, 0x30, 0xe1, 0x3f, 0xe1, 0x90, 0xe8, 0x8c, 0xee, 0x1d, 0xf8, + 0x72, 0xff, 0xcf, 0x04, 0xf4, 0x0e, 0xaa, 0x17, 0x86, 0x18, 0x6a, 0x1d, 0xb6, 0x1e, 0xf3, 0x1d, + 0x65, 0x1e, 0x59, 0x18, 0xed, 0x12, 0xb2, 0x09, 0xdf, 0x08, 0x9f, 0x07, 0x83, 0x01, 0xa2, 0x01, + 0xef, 0xf8, 0x58, 0xed, 0xdd, 0xe2, 0x47, 0xda, 0x65, 0xd6, 0x4a, 0xd5, 0x7e, 0xd5, 0x5c, 0xda, + 0xd0, 0xda, 0x61, 0xe2, 0xb7, 0xea, 0x19, 0xf1, 0x70, 0xfb, 0x3f, 0x00, 0xff, 0x09, 0x3c, 0x16, + 0x6f, 0x1d, 0x7d, 0x20, 0x85, 0x24, 0x61, 0x24, 0xb4, 0x24, 0xe5, 0x20, 0x37, 0x1c, 0xe2, 0x18, + 0x4f, 0x0f, 0xf5, 0x0d, 0x1a, 0x09, 0xdf, 0x03, 0x13, 0xff, 0x4b, 0xf1, 0xa6, 0xe6, 0xdc, 0xdb, + 0x94, 0xd3, 0xa3, 0xd0, 0x1f, 0xcd, 0x5f, 0xce, 0x29, 0xcf, 0x34, 0xd2, 0x3c, 0xd7, 0x22, 0xdd, + 0xbf, 0xe5, 0x6c, 0xef, 0x53, 0xf5, 0xba, 0xfb, 0xd8, 0x03, 0x4d, 0x08, 0xf8, 0x10, 0x7b, 0x15, + 0x07, 0x18, 0x67, 0x1b, 0xae, 0x18, 0x58, 0x16, 0x3e, 0x16, 0x02, 0x11, 0xdd, 0x11, 0xe5, 0x0f, + 0xe3, 0x0e, 0x82, 0x09, 0x1d, 0xfe, 0xe7, 0xf4, 0x94, 0xeb, 0x02, 0xe8, 0xfc, 0xe4, 0x08, 0xe4, + 0x98, 0xe9, 0x14, 0xea, 0xa4, 0xf2, 0x0e, 0xfb, 0x65, 0x00, 0x7d, 0x09, 0x2f, 0x10, 0xfb, 0x17, + 0x0d, 0x22, 0x1c, 0x2c, 0x77, 0x31, 0x1a, 0x3a, 0x1f, 0x3b, 0x3b, 0x38, 0xdf, 0x37, 0x1c, 0x2f, + 0xda, 0x2a, 0xb3, 0x23, 0xa8, 0x1c, 0xd5, 0x18, 0xef, 0x10, 0x0c, 0x0c, 0xcb, 0x01, 0x71, 0xf5, + 0xda, 0xe9, 0x18, 0xdd, 0x69, 0xd8, 0x0e, 0xd5, 0x8b, 0xd0, 0x71, 0xcf, 0xa0, 0xca, 0x5c, 0xd0, + 0xac, 0xd4, 0xc4, 0xdc, 0xe1, 0xea, 0xb5, 0xf3, 0xb3, 0xfd, 0x46, 0x0a, 0x38, 0x14, 0xf4, 0x17, + 0xb5, 0x1c, 0xbc, 0x1d, 0x9f, 0x20, 0x9d, 0x20, 0x72, 0x1c, 0x9c, 0x1a, 0x66, 0x13, 0x0f, 0x15, + 0xba, 0x11, 0x7f, 0x0b, 0x26, 0x0c, 0xa7, 0x01, 0xa9, 0xf9, 0xe9, 0xef, 0xc9, 0xe7, 0xf2, 0xe6, + 0x2c, 0xe1, 0x41, 0xe1, 0xcc, 0xdf, 0x99, 0xdf, 0xd9, 0xe4, 0xdc, 0xeb, 0xce, 0xf4, 0x64, 0xfe, + 0x77, 0x02, 0x3d, 0x0a, 0x72, 0x18, 0xb4, 0x20, 0x71, 0x25, 0x71, 0x28, 0x14, 0x2b, 0x75, 0x28, + 0x93, 0x23, 0xde, 0x1e, 0x35, 0x18, 0x20, 0x10, 0xac, 0x0d, 0xf6, 0x06, 0x7f, 0x00, 0x28, 0xf9, + 0x22, 0xeb, 0x4e, 0xe1, 0x72, 0xd5, 0x71, 0xcc, 0xbe, 0xc6, 0xfe, 0xc4, 0xf0, 0xc5, 0xaf, 0xc1, + 0xf0, 0xc5, 0xdd, 0xcb, 0x22, 0xd4, 0x03, 0xde, 0x70, 0xe6, 0x40, 0xf0, 0x97, 0xf9, 0x2f, 0x04, + 0x21, 0x0b, 0x45, 0x15, 0x9b, 0x1a, 0x74, 0x1e, 0xc8, 0x20, 0xb2, 0x1d, 0x14, 0x1c, 0x3d, 0x13, + 0xd8, 0x11, 0x56, 0x13, 0xbd, 0x10, 0x57, 0x10, 0x24, 0x0c, 0xa5, 0x02, 0x93, 0xf9, 0x94, 0xf2, + 0x00, 0xf1, 0x20, 0xec, 0xfe, 0xe8, 0x06, 0xe8, 0x39, 0xe5, 0x5b, 0xe9, 0x7f, 0xec, 0xc5, 0xf1, + 0xa6, 0xfb, 0x86, 0x02, 0x72, 0x09, 0xec, 0x14, 0x73, 0x1b, 0x3e, 0x1f, 0x35, 0x23, 0x1f, 0x22, + 0x9b, 0x22, 0x69, 0x1f, 0xb6, 0x1b, 0xdb, 0x1a, 0x86, 0x12, 0xc1, 0x11, 0x9e, 0x0d, 0x84, 0x08, + 0xae, 0x05, 0x0f, 0xfa, 0x1d, 0xef, 0x8d, 0xe4, 0x73, 0xe0, 0x1f, 0xdd, 0x24, 0xd6, 0xf4, 0xd7, + 0x26, 0xd5, 0xc6, 0xd3, 0xbe, 0xd9, 0xbe, 0xdf, 0xa4, 0xe6, 0xab, 0xf1, 0xf4, 0xf8, 0x47, 0x02, + 0x49, 0x0c, 0x25, 0x0f, 0xa2, 0x16, 0xe5, 0x1c, 0x15, 0x20, 0xb2, 0x21, 0xee, 0x1f, 0x59, 0x1f, + 0xce, 0x19, 0x44, 0x16, 0x33, 0x19, 0x44, 0x16, 0x98, 0x16, 0x1b, 0x13, 0x86, 0x08, 0x55, 0x01, + 0xe1, 0xf4, 0xa2, 0xf1, 0xd7, 0xed, 0x0e, 0xea, 0x51, 0xea, 0x13, 0xe6, 0x4d, 0xe8, 0xc8, 0xec, + 0xc6, 0xf2, 0x97, 0xf7, 0x6e, 0xfd, 0x99, 0x03, 0xba, 0x0b, 0x13, 0x16, 0xcd, 0x1a, 0x71, 0x20, + 0x04, 0x20, 0x5e, 0x22, 0xe6, 0x21, 0xdf, 0x1d, 0xdc, 0x1e, 0x31, 0x14, 0xd9, 0x11, 0xb9, 0x0f, + 0xd7, 0x08, 0x17, 0x08, 0xf8, 0x01, 0x02, 0xf8, 0xa8, 0xed, 0x9c, 0xe3, 0xbb, 0xe1, 0xa1, 0xdd, + 0x6d, 0xdb, 0x3e, 0xda, 0xc6, 0xd2, 0xc2, 0xd3, 0x6c, 0xd9, 0x87, 0xe0, 0xaa, 0xe8, 0xd2, 0xef, + 0x77, 0xf7, 0xf2, 0x02, 0x17, 0x0c, 0x95, 0x11, 0x2e, 0x16, 0xeb, 0x18, 0x14, 0x1e, 0xd2, 0x1e, + 0xdc, 0x1c, 0x53, 0x1b, 0x84, 0x14, 0x2f, 0x16, 0xaa, 0x14, 0xfa, 0x0e, 0x7a, 0x0e, 0x20, 0x06, + 0xe4, 0xfd, 0xbe, 0xf1, 0x2a, 0xec, 0x08, 0xea, 0x88, 0xe6, 0x76, 0xe6, 0x84, 0xe0, 0x3e, 0xdd, + 0xcf, 0xde, 0x52, 0xe2, 0x29, 0xea, 0x37, 0xf4, 0x23, 0xf8, 0x2f, 0x00, 0x8c, 0x09, 0x8d, 0x0f, + 0x17, 0x15, 0x04, 0x18, 0x0e, 0x1d, 0x54, 0x20, 0xf6, 0x1d, 0x02, 0x1e, 0xa7, 0x1a, 0x48, 0x14, + 0x40, 0x10, 0xde, 0x0a, 0xd5, 0x08, 0xc8, 0x06, 0x23, 0x00, 0x1f, 0xf8, 0xb4, 0xec, 0x27, 0xe8, + 0xee, 0xde, 0x7c, 0xd8, 0x14, 0xda, 0x29, 0xd6, 0xc4, 0xd5, 0x02, 0xdc, 0x2a, 0xe3, 0xba, 0xea, + 0xf2, 0xf0, 0xed, 0xf5, 0xe3, 0xff, 0x05, 0x09, 0xb7, 0x12, 0x67, 0x1d, 0xbd, 0x20, 0xf3, 0x24, + 0x9f, 0x22, 0x49, 0x21, 0x83, 0x24, 0xc7, 0x1c, 0xa6, 0x1a, 0x38, 0x1a, 0x59, 0x19, 0x5d, 0x18, + 0xe3, 0x10, 0x30, 0x07, 0x69, 0xfd, 0xfe, 0xf2, 0x41, 0xee, 0xee, 0xe8, 0xef, 0xe5, 0x3c, 0xe3, + 0x76, 0xdb, 0x75, 0xda, 0x16, 0xdd, 0x5e, 0xe1, 0x2b, 0xec, 0x27, 0xf4, 0xda, 0xf8, 0x8e, 0x01, + 0x76, 0x08, 0x0e, 0x10, 0x8a, 0x16, 0x79, 0x17, 0xeb, 0x1a, 0x2e, 0x1a, 0xfa, 0x18, 0xfc, 0x16, + 0x69, 0x12, 0x4c, 0x16, 0xa9, 0x11, 0x35, 0x0d, 0x24, 0x0d, 0x4e, 0x06, 0x72, 0xfe, 0x65, 0xf1, + 0x81, 0xeb, 0x48, 0xe5, 0x21, 0xe0, 0xc6, 0xdc, 0x3e, 0xdb, 0xcc, 0xdb, 0x92, 0xdc, 0x1e, 0xe0, + 0xa3, 0xe4, 0x35, 0xee, 0xeb, 0xf4, 0x15, 0xfe, 0xbd, 0x07, 0xf2, 0x0e, 0x8f, 0x16, 0x0d, 0x1a, + 0xcd, 0x22, 0xd6, 0x27, 0xc0, 0x26, 0x61, 0x29, 0xfd, 0x25, 0x15, 0x22, 0xf8, 0x21, 0x36, 0x1d, + 0x3c, 0x1a, 0x02, 0x16, 0xb4, 0x10, 0x56, 0x08, 0x16, 0xfd, 0x4e, 0xf5, 0x24, 0xea, 0x5e, 0xe7, + 0x3a, 0xe3, 0xff, 0xda, 0xa6, 0xd8, 0x20, 0xdb, 0xbb, 0xde, 0x9e, 0xe2, 0x70, 0xe7, 0x82, 0xeb, + 0x81, 0xf3, 0x50, 0xf8, 0x87, 0xff, 0x8b, 0x0a, 0xf9, 0x0e, 0x6b, 0x17, 0xc0, 0x15, 0xfa, 0x12, + 0xa7, 0x14, 0x51, 0x10, 0xe0, 0x12, 0x7a, 0x13, 0xdf, 0x10, 0xc6, 0x0d, 0xfd, 0x08, 0x12, 0x05, + 0x95, 0xf9, 0x64, 0xf0, 0xb0, 0xee, 0xe4, 0xe9, 0xd4, 0xe9, 0x44, 0xe9, 0xfb, 0xe3, 0x13, 0xe3, + 0xe6, 0xe4, 0x0e, 0xe6, 0x73, 0xee, 0x45, 0xf6, 0xeb, 0xfd, 0x0c, 0x0a, 0x2e, 0x11, 0x49, 0x18, + 0x01, 0x1c, 0xb7, 0x1d, 0xbf, 0x23, 0x12, 0x23, 0x11, 0x21, 0xf7, 0x1e, 0x22, 0x1c, 0xc8, 0x1d, + 0xa1, 0x17, 0x17, 0x14, 0x7b, 0x0f, 0x7f, 0x06, 0xc8, 0xff, 0x45, 0xf2, 0xe6, 0xed, 0x18, 0xe7, + 0x53, 0xdf, 0xe7, 0xd9, 0xcb, 0xd4, 0x37, 0xd1, 0x22, 0xd3, 0xdb, 0xd5, 0xed, 0xd8, 0x4c, 0xe2, + 0x89, 0xe5, 0xf3, 0xec, 0x36, 0xf5, 0xfd, 0xf9, 0x6b, 0x00, 0x82, 0x04, 0x4e, 0x0c, 0x44, 0x11, + 0x44, 0x14, 0x08, 0x15, 0x8a, 0x0f, 0xa5, 0x0b, 0x5d, 0x0d, 0x41, 0x0b, 0xb2, 0x0c, 0x0d, 0x0a, + 0x06, 0x05, 0x76, 0xff, 0x13, 0xf8, 0xfb, 0xf4, 0x13, 0xee, 0x95, 0xe9, 0xda, 0xe6, 0xc4, 0xe3, + 0x92, 0xe3, 0xa2, 0xe8, 0x75, 0xee, 0x7e, 0xf4, 0x19, 0xfa, 0xbc, 0xfe, 0xcd, 0x07, 0x5a, 0x0e, + 0x5a, 0x17, 0x61, 0x1f, 0xfb, 0x21, 0x58, 0x28, 0x60, 0x26, 0x61, 0x27, 0x41, 0x28, 0x79, 0x21, + 0x2c, 0x1d, 0x19, 0x1a, 0xcf, 0x16, 0xed, 0x13, 0x02, 0x0f, 0x0c, 0x08, 0x35, 0xfd, 0x99, 0xf2, + 0x2c, 0xeb, 0xf5, 0xe4, 0xfc, 0xe3, 0x6e, 0xe2, 0x67, 0xdc, 0x6f, 0xda, 0x7d, 0xdd, 0xd6, 0xde, + 0xdc, 0xe4, 0xeb, 0xe8, 0x6d, 0xf0, 0x84, 0xfa, 0x35, 0x01, 0xc4, 0x0b, 0x6a, 0x11, 0x8c, 0x16, + 0xc9, 0x1a, 0x27, 0x18, 0xb4, 0x18, 0x84, 0x16, 0xfa, 0x10, 0x0d, 0x14, 0xc0, 0x10, 0x2b, 0x0e, + 0x1b, 0x0b, 0x02, 0x07, 0xfc, 0xfe, 0x99, 0xf2, 0x3b, 0xef, 0xe2, 0xeb, 0x8f, 0xea, 0x21, 0xe7, + 0xf0, 0xe2, 0x84, 0xe0, 0x75, 0xe3, 0xfe, 0xe7, 0x28, 0xef, 0x3b, 0xf9, 0xc9, 0xfb, 0xd9, 0x05, + 0x07, 0x0e, 0xab, 0x14, 0x09, 0x1d, 0x88, 0x1f, 0x79, 0x26, 0xff, 0x2a, 0x97, 0x2c, 0xeb, 0x2b, + 0xac, 0x27, 0xda, 0x22, 0x60, 0x1d, 0x16, 0x16, 0x94, 0x14, 0x1b, 0x11, 0x57, 0x0d, 0x89, 0x03, + 0xf7, 0xf6, 0x75, 0xef, 0xb4, 0xe6, 0x5e, 0xe2, 0xbe, 0xdd, 0x33, 0xd8, 0x52, 0xd3, 0x68, 0xd5, + 0x13, 0xd9, 0xeb, 0xdc, 0x78, 0xe1, 0xd2, 0xe5, 0xc6, 0xf0, 0xed, 0xf7, 0x26, 0x00, 0xc9, 0x09, + 0xca, 0x0e, 0xc8, 0x13, 0xb9, 0x10, 0x55, 0x13, 0xe0, 0x14, 0x91, 0x10, 0x2f, 0x11, 0xfe, 0x0f, + 0x5b, 0x0e, 0x15, 0x0b, 0xff, 0x07, 0xb1, 0x04, 0x10, 0xfc, 0xda, 0xf2, 0x50, 0xed, 0xb4, 0xe9, + 0x52, 0xea, 0xe2, 0xe8, 0xc0, 0xe3, 0x79, 0xe2, 0xcb, 0xe4, 0x48, 0xe7, 0xbf, 0xf0, 0x81, 0xf7, + 0x94, 0xfd, 0x50, 0x05, 0x8a, 0x0b, 0xc5, 0x15, 0xa3, 0x1a, 0x0a, 0x20, 0xc5, 0x22, 0xd6, 0x1f, + 0xab, 0x1e, 0x23, 0x1a, 0x8a, 0x16, 0xba, 0x17, 0x79, 0x10, 0xb9, 0x0c, 0x1f, 0x09, 0x43, 0x06, + 0x36, 0xfe, 0x36, 0xf4, 0x05, 0xef, 0xfc, 0xe6, 0x65, 0xe1, 0x22, 0xdd, 0xb9, 0xdb, 0x92, 0xd8, + 0x08, 0xd7, 0xe6, 0xd6, 0x2b, 0xdf, 0x87, 0xe7, 0xe4, 0xe9, 0x36, 0xf5, 0xc6, 0xfb, 0x8e, 0x02, + 0xd2, 0x08, 0xef, 0x0b, 0xcf, 0x13, 0xe6, 0x18, 0x0d, 0x1c, 0xf0, 0x1e, 0x3d, 0x1d, 0x6f, 0x19, + 0xaf, 0x16, 0xdb, 0x13, 0x97, 0x12, 0x45, 0x10, 0x4b, 0x0f, 0xd7, 0x09, 0x5b, 0x02, 0x9a, 0xfd, + 0x1c, 0xf5, 0x2d, 0xf2, 0x6d, 0xf0, 0x9e, 0xea, 0xe1, 0xe6, 0x1f, 0xe8, 0xb5, 0xe9, 0xcd, 0xee, + 0xca, 0xf1, 0x57, 0xf4, 0x92, 0xfb, 0xd2, 0xfd, 0x4f, 0x04, 0xd8, 0x0c, 0x7a, 0x11, 0x50, 0x16, + 0xe3, 0x14, 0x60, 0x13, 0x20, 0x0f, 0x53, 0x0a, 0x63, 0x0a, 0xd1, 0x09, 0x04, 0x08, 0x02, 0x04, + 0xbd, 0x00, 0x9a, 0xfd, 0xb4, 0xf5, 0x7a, 0xec, 0xa0, 0xe6, 0x4d, 0xe1, 0x2d, 0xe0, 0xde, 0xe1, + 0x08, 0xe0, 0x06, 0xe1, 0x09, 0xe1, 0x18, 0xe2, 0x16, 0xe9, 0xda, 0xec, 0xc2, 0xf4, 0x5d, 0xff, + 0x6a, 0x05, 0xd4, 0x0b, 0x30, 0x12, 0x0e, 0x1a, 0x20, 0x1e, 0x03, 0x1e, 0x39, 0x1e, 0x0b, 0x1b, + 0xa5, 0x19, 0x5e, 0x1a, 0x5a, 0x16, 0x35, 0x15, 0x11, 0x13, 0x17, 0x12, 0x4a, 0x0c, 0x51, 0x06, + 0x69, 0x02, 0xf4, 0xfb, 0x10, 0xf7, 0x3d, 0xf4, 0x5e, 0xf1, 0x2c, 0xec, 0x57, 0xed, 0xfb, 0xed, + 0x84, 0xf2, 0x76, 0xf6, 0x43, 0xf9, 0xfb, 0x00, 0xf8, 0x04, 0x45, 0x0b, 0x99, 0x0d, 0xc6, 0x10, + 0x18, 0x16, 0xcc, 0x16, 0x42, 0x19, 0x4b, 0x19, 0x3b, 0x13, 0x27, 0x10, 0x05, 0x0e, 0x55, 0x0b, + 0xb1, 0x08, 0x41, 0x04, 0x52, 0x01, 0x28, 0xf9, 0xea, 0xf1, 0x8c, 0xee, 0x6d, 0xeb, 0xbd, 0xe8, + 0xe3, 0xe4, 0x25, 0xe0, 0xf2, 0xde, 0x47, 0xdf, 0x86, 0xe1, 0x30, 0xe7, 0x9f, 0xea, 0x7a, 0xf0, + 0x87, 0xf9, 0x39, 0xff, 0xd3, 0x08, 0xfd, 0x0d, 0x78, 0x12, 0x16, 0x18, 0xdb, 0x18, 0x91, 0x1c, + 0x1b, 0x1a, 0x10, 0x17, 0x1f, 0x15, 0xb3, 0x13, 0x69, 0x13, 0xdf, 0x11, 0x3f, 0x12, 0x26, 0x0f, + 0x3f, 0x09, 0x9c, 0x01, 0x6f, 0xfb, 0x48, 0xf5, 0xab, 0xf4, 0xd4, 0xf5, 0x88, 0xf1, 0xfd, 0xf0, + 0x4b, 0xef, 0xdf, 0xef, 0x48, 0xf4, 0xc8, 0xf5, 0x54, 0xfc, 0xb3, 0x01, 0xe1, 0x06, 0x81, 0x0c, + 0xa4, 0x11, 0x18, 0x16, 0x0e, 0x18, 0x71, 0x16, 0xfe, 0x15, 0x58, 0x11, 0x18, 0x0c, 0xd8, 0x09, + 0xd9, 0x05, 0x8b, 0x01, 0xc1, 0xfb, 0x51, 0xfa, 0xb4, 0xf4, 0xd4, 0xee, 0xf4, 0xea, 0x8f, 0xe6, + 0x29, 0xe3, 0xb4, 0xe1, 0x43, 0xdc, 0x00, 0xd8, 0x30, 0xd9, 0x2f, 0xd9, 0x75, 0xe2, 0x29, 0xea, + 0xf0, 0xed, 0xcb, 0xf4, 0xc1, 0xfb, 0x06, 0x05, 0x75, 0x09, 0x35, 0x0f, 0x55, 0x15, 0x4a, 0x1a, + 0x3f, 0x21, 0x8c, 0x22, 0x06, 0x1f, 0x0c, 0x1e, 0xd6, 0x1a, 0xa1, 0x17, 0x7c, 0x16, 0x7f, 0x15, + 0xf7, 0x14, 0x4a, 0x0d, 0x6a, 0x05, 0xb7, 0xff, 0xfe, 0xf8, 0x3a, 0xf5, 0xdd, 0xf2, 0xe3, 0xec, + 0x04, 0xe9, 0x53, 0xe6, 0x7b, 0xe6, 0x9b, 0xe9, 0x68, 0xe9, 0xa2, 0xec, 0x88, 0xf2, 0x6c, 0xf8, + 0x17, 0x00, 0xc6, 0x03, 0xae, 0x09, 0xf6, 0x0e, 0x15, 0x0e, 0x10, 0x10, 0x94, 0x0d, 0xc3, 0x09, + 0xf0, 0x06, 0x80, 0x06, 0x65, 0x05, 0x1c, 0x03, 0xe4, 0x02, 0xd3, 0x00, 0xaa, 0xfb, 0x30, 0xf3, + 0x65, 0xed, 0x0b, 0xe7, 0xa7, 0xe6, 0x63, 0xe5, 0xba, 0xe1, 0xb6, 0xe2, 0xb9, 0xe1, 0xf8, 0xe4, + 0xbb, 0xea, 0xb2, 0xee, 0xd1, 0xf5, 0x01, 0xfb, 0x63, 0x03, 0x71, 0x0b, 0x71, 0x14, 0xf1, 0x1c, + 0x7a, 0x21, 0xb2, 0x21, 0x23, 0x24, 0x93, 0x22, 0x6f, 0x20, 0x78, 0x20, 0xe2, 0x1d, 0x95, 0x1a, + 0x26, 0x18, 0x7e, 0x17, 0x73, 0x10, 0xf0, 0x09, 0x82, 0x02, 0xe3, 0xfa, 0x80, 0xf5, 0xdd, 0xf3, + 0xb5, 0xee, 0x1e, 0xe9, 0xd0, 0xe4, 0x08, 0xdf, 0x75, 0xe4, 0x4e, 0xe7, 0xbb, 0xea, 0x0b, 0xf1, + 0xdd, 0xf6, 0x0f, 0xfe, 0x5b, 0x00, 0xe4, 0x04, 0xde, 0x08, 0x5b, 0x0b, 0xf6, 0x0f, 0x51, 0x12, + 0xfe, 0x12, 0xc6, 0x11, 0x20, 0x0f, 0xa3, 0x0e, 0xb0, 0x0d, 0xb4, 0x0b, 0x21, 0x0b, 0x7f, 0x05, + 0xd1, 0xfe, 0xab, 0xfa, 0xc1, 0xf3, 0x3f, 0xf1, 0x23, 0xef, 0x37, 0xe9, 0x1c, 0xe8, 0x79, 0xe5, + 0x5a, 0xe5, 0xb9, 0xe9, 0x35, 0xeb, 0xed, 0xee, 0x05, 0xf3, 0x93, 0xf9, 0xd9, 0x00, 0x71, 0x08, + 0x7a, 0x11, 0x2e, 0x16, 0x90, 0x19, 0x82, 0x1c, 0x6b, 0x19, 0x68, 0x17, 0x6c, 0x16, 0xc2, 0x17, + 0xf7, 0x15, 0xe8, 0x12, 0xf1, 0x11, 0x37, 0x10, 0x28, 0x0a, 0xe1, 0x02, 0x24, 0xfc, 0xa6, 0xf3, + 0x44, 0xf3, 0x75, 0xf0, 0x0f, 0xec, 0xb5, 0xe9, 0x12, 0xe5, 0xf8, 0xe5, 0xe2, 0xe9, 0x38, 0xee, + 0xb3, 0xf2, 0xd5, 0xf6, 0x49, 0xfd, 0x4b, 0xff, 0xd6, 0x03, 0xc6, 0x0b, 0xbf, 0x0f, 0x92, 0x12, + 0x24, 0x16, 0x42, 0x14, 0x86, 0x12, 0x55, 0x10, 0x4b, 0x0d, 0x0e, 0x0a, 0x25, 0x06, 0x1c, 0x07, + 0xb3, 0x04, 0x37, 0x00, 0xc7, 0xfa, 0x67, 0xf4, 0x12, 0xf0, 0xd2, 0xf0, 0xdb, 0xeb, 0xf3, 0xe7, + 0xd7, 0xe5, 0x75, 0xe4, 0xd6, 0xea, 0x54, 0xec, 0x4f, 0xf1, 0x45, 0xf7, 0x32, 0xfe, 0x29, 0x07, + 0x1c, 0x0a, 0x5b, 0x0f, 0xf8, 0x14, 0x79, 0x17, 0xce, 0x1a, 0x35, 0x1c, 0xf2, 0x19, 0xdb, 0x17, + 0xb9, 0x16, 0x23, 0x14, 0x3e, 0x11, 0x6f, 0x0e, 0xf0, 0x0b, 0x6c, 0x05, 0x29, 0xfe, 0xd0, 0xf9, + 0x3c, 0xf2, 0x17, 0xef, 0xec, 0xea, 0x91, 0xe5, 0x1d, 0xe4, 0x11, 0xdf, 0x53, 0xde, 0x5f, 0xe1, + 0x9e, 0xe1, 0xb2, 0xe3, 0x30, 0xe7, 0x69, 0xec, 0x60, 0xf2, 0xe5, 0xf7, 0x20, 0x00, 0x03, 0x07, + 0x31, 0x0c, 0x74, 0x0e, 0x3a, 0x0d, 0xc0, 0x0a, 0xa2, 0x06, 0x75, 0x06, 0x7f, 0x05, 0xd3, 0x05, + 0x5a, 0x06, 0x7d, 0x05, 0xf3, 0x00, 0xac, 0xfb, 0xce, 0xf4, 0x82, 0xed, 0x25, 0xef, 0x86, 0xef, + 0xdb, 0xef, 0x8c, 0xef, 0xb4, 0xec, 0x10, 0xef, 0x9f, 0xf2, 0x78, 0xf8, 0x40, 0xfd, 0xee, 0x02, + 0x21, 0x0a, 0xe4, 0x0e, 0x95, 0x17, 0x44, 0x1e, 0x9e, 0x1f, 0x08, 0x22, 0x5a, 0x24, 0xd5, 0x22, + 0x57, 0x1f, 0x7f, 0x1b, 0x2b, 0x19, 0xca, 0x13, 0x4a, 0x0c, 0x7b, 0x08, 0x55, 0x02, 0x73, 0xfb, + 0x34, 0xf7, 0xd2, 0xef, 0x4f, 0xeb, 0xe0, 0xea, 0x39, 0xe4, 0x77, 0xe1, 0xde, 0xdd, 0x62, 0xdb, + 0x30, 0xdf, 0x6f, 0xe1, 0xf3, 0xe6, 0x42, 0xea, 0x57, 0xf2, 0x0b, 0xfc, 0x65, 0xff, 0xa5, 0x06, + 0x20, 0x0c, 0x63, 0x10, 0x41, 0x16, 0xd5, 0x18, 0x43, 0x17, 0xa4, 0x16, 0xf4, 0x15, 0xc6, 0x15, + 0x60, 0x16, 0xa1, 0x14, 0x47, 0x13, 0xdd, 0x0c, 0xa0, 0x06, 0x9b, 0x02, 0x76, 0xfb, 0xc7, 0xf9, + 0x9f, 0xf7, 0x74, 0xf5, 0xde, 0xf3, 0x47, 0xf0, 0x5d, 0xf1, 0xcd, 0xf2, 0xfa, 0xf3, 0x3b, 0xf7, + 0x45, 0xfc, 0xf6, 0x02, 0x11, 0x09, 0x33, 0x0c, 0xf1, 0x12, 0xca, 0x17, 0xe9, 0x1a, 0x30, 0x1c, + 0x59, 0x1b, 0xff, 0x17, 0x1e, 0x13, 0x37, 0x12, 0x47, 0x0d, 0xf5, 0x09, 0xbc, 0x07, 0xb4, 0x06, + 0x1f, 0x01, 0x29, 0xfa, 0x13, 0xf2, 0x7e, 0xeb, 0xfc, 0xe9, 0xc9, 0xe3, 0x44, 0xe0, 0x49, 0xdd, + 0xf0, 0xda, 0x2c, 0xde, 0xcf, 0xe1, 0xb1, 0xe7, 0xd3, 0xeb, 0x09, 0xf1, 0x01, 0xf9, 0x90, 0xff, + 0xc5, 0x07, 0x06, 0x0e, 0x86, 0x12, 0xec, 0x16, 0x59, 0x1a, 0xc5, 0x19, 0xfc, 0x17, 0x13, 0x16, + 0x3a, 0x15, 0xed, 0x10, 0x7e, 0x0e, 0xa3, 0x0f, 0x7d, 0x0a, 0x64, 0x04, 0x88, 0x00, 0x46, 0xf9, + 0x46, 0xf8, 0xbf, 0xf8, 0xee, 0xf2, 0xa7, 0xf1, 0xde, 0xeb, 0x25, 0xe9, 0x0f, 0xec, 0x7b, 0xef, + 0x21, 0xf4, 0x0a, 0xf8, 0xbe, 0x00, 0x3d, 0x07, 0x59, 0x09, 0xa5, 0x0e, 0x4e, 0x11, 0xbd, 0x14, + 0xfe, 0x19, 0x76, 0x1b, 0x9e, 0x19, 0xd7, 0x15, 0x09, 0x12, 0x05, 0x10, 0x63, 0x0e, 0x9b, 0x0b, + 0xf4, 0x0a, 0xa6, 0x03, 0xd6, 0xfe, 0xf0, 0xf8, 0x9f, 0xee, 0x06, 0xeb, 0x85, 0xe6, 0xc8, 0xe3, + 0xef, 0xe1, 0xc1, 0xde, 0x0b, 0xdf, 0x5b, 0xe0, 0x29, 0xe3, 0xf4, 0xe2, 0x02, 0xe4, 0x3c, 0xea, + 0xd9, 0xf0, 0x5b, 0xf8, 0x67, 0x01, 0x89, 0x06, 0x76, 0x0b, 0x8d, 0x0e, 0x75, 0x0f, 0x3d, 0x0d, + 0x31, 0x0c, 0xa3, 0x0d, 0x90, 0x0b, 0x5d, 0x0b, 0xf1, 0x0a, 0x63, 0x0b, 0xb5, 0x06, 0x05, 0x03, + 0x4e, 0xfd, 0xa5, 0xf8, 0xaf, 0xf8, 0xa5, 0xf7, 0x46, 0xf7, 0xcf, 0xf1, 0xfe, 0xee, 0x99, 0xef, + 0x90, 0xf4, 0xec, 0xfa, 0x4b, 0xfc, 0xdc, 0xff, 0x74, 0x05, 0x49, 0x09, 0xe8, 0x0d, 0xf7, 0x11, + 0x06, 0x15, 0xc9, 0x17, 0xbf, 0x1a, 0x96, 0x19, 0x97, 0x16, 0xbd, 0x12, 0xb1, 0x0f, 0x46, 0x0b, + 0xa5, 0x07, 0x33, 0x06, 0xa6, 0x00, 0x7c, 0xfa, 0x30, 0xf4, 0x22, 0xec, 0x8d, 0xea, 0x83, 0xea, + 0x99, 0xe7, 0x2c, 0xe7, 0x0b, 0xe2, 0x6e, 0xe1, 0xae, 0xe2, 0x95, 0xe3, 0xd6, 0xe7, 0xed, 0xeb, + 0xbb, 0xf4, 0x61, 0xfc, 0x40, 0x01, 0xe7, 0x07, 0x64, 0x0b, 0x81, 0x0f, 0xd9, 0x13, 0x3f, 0x16, + 0xe4, 0x16, 0xa0, 0x15, 0xc0, 0x15, 0x29, 0x16, 0x79, 0x14, 0x9a, 0x13, 0x36, 0x14, 0x11, 0x0f, + 0xd7, 0x0d, 0x52, 0x08, 0x7a, 0x01, 0x60, 0x00, 0xdc, 0xfb, 0x41, 0xfa, 0x35, 0xf7, 0xa4, 0xf2, + 0x3d, 0xf1, 0xe7, 0xf1, 0x71, 0xf4, 0xc5, 0xf4, 0x76, 0xf6, 0x55, 0xfa, 0x78, 0xfb, 0x5c, 0xff, + 0x1e, 0x06, 0xc8, 0x0a, 0xed, 0x0f, 0x4b, 0x10, 0xe4, 0x0f, 0x89, 0x0d, 0xcf, 0x09, 0xf7, 0x07, + 0x4a, 0x04, 0xb7, 0x01, 0x11, 0x02, 0xeb, 0x01, 0x3b, 0xfe, 0xbe, 0xfb, 0x0a, 0xf4, 0x7a, 0xef, + 0x0e, 0xf0, 0xd3, 0xef, 0xd0, 0xef, 0xb7, 0xea, 0xf6, 0xe8, 0x81, 0xe8, 0xfd, 0xec, 0x26, 0xf3, + 0xa3, 0xf6, 0xe9, 0xfc, 0xa4, 0x02, 0xe5, 0x07, 0x4a, 0x0e, 0x4d, 0x13, 0x47, 0x16, 0x6b, 0x19, + 0x26, 0x1d, 0x09, 0x1d, 0x9f, 0x1b, 0xb7, 0x19, 0xc1, 0x18, 0x5c, 0x15, 0xfe, 0x0f, 0x23, 0x0e, + 0x18, 0x0a, 0x72, 0x05, 0x68, 0x01, 0xce, 0xfa, 0x88, 0xf7, 0x1b, 0xf4, 0xa3, 0xf0, 0x32, 0xef, + 0x44, 0xeb, 0xcb, 0xe9, 0xc5, 0xe8, 0x24, 0xea, 0xdf, 0xed, 0x98, 0xef, 0x12, 0xf5, 0x84, 0xfa, + 0xb0, 0xfd, 0xa8, 0x01, 0xe0, 0x05, 0x01, 0x0a, 0x96, 0x0f, 0x70, 0x11, 0x10, 0x0d, 0x81, 0x09, + 0xeb, 0x06, 0x2b, 0x08, 0x57, 0x08, 0x40, 0x08, 0x06, 0x07, 0x9e, 0x02, 0xf5, 0x01, 0x20, 0xfb, + 0xed, 0xf4, 0x63, 0xf1, 0x01, 0xee, 0x2b, 0xf0, 0xa5, 0xed, 0x11, 0xeb, 0x98, 0xea, 0x8e, 0xeb, + 0xa1, 0xed, 0xce, 0xee, 0x88, 0xf2, 0x5e, 0xf8, 0x0c, 0xfc, 0xa4, 0x01, 0x20, 0x07, 0xda, 0x0b, + 0xbc, 0x11, 0x97, 0x14, 0xa1, 0x17, 0xb7, 0x15, 0xdd, 0x11, 0xff, 0x10, 0x9d, 0x0d, 0xfe, 0x0a, + 0x5c, 0x0b, 0x44, 0x09, 0x3b, 0x07, 0x38, 0x04, 0x53, 0xfb, 0x44, 0xf7, 0x30, 0xf4, 0xa8, 0xf1, + 0x2f, 0xef, 0x4c, 0xea, 0xaf, 0xe7, 0x20, 0xe6, 0xf5, 0xe8, 0x6b, 0xec, 0x7a, 0xec, 0x83, 0xf1, + 0x5c, 0xf7, 0x48, 0xfd, 0x82, 0x03, 0x80, 0x07, 0x7c, 0x0a, 0xb7, 0x0d, 0x13, 0x10, 0x41, 0x0f, + 0x1c, 0x0d, 0x2a, 0x0b, 0xba, 0x0b, 0xdf, 0x08, 0x15, 0x08, 0x68, 0x08, 0x9e, 0x02, 0xef, 0xfc, + 0x62, 0xf9, 0xaa, 0xf4, 0x25, 0xf4, 0x4d, 0xf4, 0x50, 0xf2, 0x86, 0xf0, 0xab, 0xed, 0x97, 0xeb, + 0x19, 0xeb, 0x13, 0xee, 0x6e, 0xf2, 0x15, 0xf7, 0x7f, 0xff, 0xb4, 0x05, 0x4c, 0x09, 0x61, 0x0e, + 0x55, 0x13, 0x44, 0x18, 0x62, 0x1e, 0x3c, 0x22, 0x27, 0x21, 0xed, 0x1e, 0x07, 0x1b, 0x63, 0x1b, + 0x66, 0x19, 0xb6, 0x18, 0xdb, 0x17, 0x57, 0x13, 0xbb, 0x10, 0xd9, 0x08, 0xf2, 0x01, 0xa9, 0xfb, + 0x44, 0xf7, 0x97, 0xf4, 0xa9, 0xef, 0x69, 0xec, 0x0f, 0xea, 0x96, 0xe8, 0xd4, 0xe8, 0xc6, 0xe7, + 0xb9, 0xe7, 0xad, 0xea, 0x2d, 0xed, 0x46, 0xf2, 0x45, 0xf7, 0x39, 0xfa, 0x4f, 0xfe, 0x89, 0x00, + 0x60, 0x04, 0x40, 0x05, 0x3f, 0x04, 0x04, 0x05, 0x18, 0x02, 0xbf, 0x00, 0x84, 0x02, 0x51, 0x00, + 0x9f, 0xff, 0x98, 0xfc, 0x80, 0xf6, 0x27, 0xf6, 0x7a, 0xf3, 0x25, 0xf5, 0xf2, 0xf4, 0x40, 0xf0, + 0x41, 0xee, 0xca, 0xed, 0xed, 0xf3, 0x54, 0xfa, 0x52, 0xfc, 0x0e, 0x02, 0xb9, 0x07, 0x18, 0x0d, + 0xef, 0x12, 0x36, 0x17, 0xc2, 0x1a, 0x5b, 0x1f, 0x54, 0x23, 0xbc, 0x23, 0xe2, 0x20, 0xce, 0x1c, + 0x08, 0x1b, 0x88, 0x15, 0xaa, 0x14, 0x47, 0x12, 0xb7, 0x0b, 0x6e, 0x07, 0x5b, 0xff, 0x17, 0xf7, + 0xa7, 0xf2, 0x6e, 0xef, 0x62, 0xec, 0x06, 0xeb, 0xeb, 0xe6, 0x87, 0xe2, 0x74, 0xe1, 0xb4, 0xe2, + 0x53, 0xe4, 0x77, 0xe6, 0x96, 0xeb, 0x4a, 0xf1, 0x79, 0xf6, 0x67, 0xfb, 0x54, 0xff, 0x95, 0x03, + 0x02, 0x0a, 0xed, 0x0d, 0xfc, 0x0c, 0x66, 0x0b, 0x0f, 0x0a, 0x9c, 0x0a, 0x7d, 0x07, 0x19, 0x08, + 0x9f, 0x08, 0x2e, 0x07, 0x9b, 0x06, 0xcf, 0x00, 0xac, 0xfb, 0xa9, 0xf7, 0x0a, 0xf7, 0x9a, 0xf5, + 0x18, 0xf4, 0x87, 0xf1, 0x57, 0xef, 0x40, 0xf2, 0x37, 0xf6, 0x79, 0xf7, 0xf5, 0xf9, 0xd7, 0xfd, + 0x58, 0x00, 0x12, 0x06, 0x01, 0x0c, 0xf5, 0x11, 0x1c, 0x17, 0xc5, 0x18, 0x85, 0x19, 0x07, 0x18, + 0x5b, 0x14, 0xd3, 0x11, 0x3d, 0x0d, 0x29, 0x0b, 0x24, 0x0b, 0xef, 0x07, 0x72, 0x05, 0x63, 0xfe, + 0x84, 0xf6, 0xb3, 0xf1, 0x6a, 0xed, 0x55, 0xef, 0xb1, 0xed, 0x9a, 0xe8, 0xef, 0xe4, 0x09, 0xe1, + 0xde, 0xe3, 0xd7, 0xe6, 0x3c, 0xe9, 0x89, 0xf0, 0x42, 0xf6, 0x27, 0xfc, 0x9b, 0x03, 0x4a, 0x08, + 0x25, 0x0b, 0xfa, 0x0e, 0x9a, 0x11, 0x30, 0x13, 0xbb, 0x12, 0x5e, 0x12, 0xf7, 0x11, 0x43, 0x0d, + 0x31, 0x0c, 0x29, 0x08, 0x77, 0x04, 0xff, 0x01, 0xf2, 0xfb, 0x72, 0xf8, 0x9f, 0xf4, 0x7e, 0xf0, + 0x79, 0xef, 0xf0, 0xef, 0xbc, 0xee, 0x1e, 0xed, 0x7d, 0xec, 0xa8, 0xef, 0x9e, 0xf3, 0x0b, 0xf8, + 0x7c, 0xfe, 0x7d, 0x03, 0x43, 0x08, 0x78, 0x0c, 0x2b, 0x11, 0x05, 0x16, 0xee, 0x1b, 0xa5, 0x1e, + 0xe4, 0x1b, 0xde, 0x17, 0xc6, 0x15, 0x4d, 0x14, 0xf8, 0x11, 0x38, 0x12, 0xcf, 0x0d, 0x49, 0x0a, + 0x13, 0x07, 0x93, 0xff, 0x0d, 0xf9, 0x01, 0xf3, 0x6b, 0xf0, 0xd0, 0xed, 0x37, 0xeb, 0xaa, 0xe5, + 0x75, 0xe2, 0x43, 0xe3, 0x10, 0xe5, 0x40, 0xe7, 0x61, 0xeb, 0x44, 0xf0, 0x44, 0xf3, 0x27, 0xf9, + 0x47, 0xfe, 0xa9, 0x02, 0xa9, 0x07, 0xcd, 0x0b, 0xbf, 0x11, 0x96, 0x12, 0xc3, 0x0f, 0xcf, 0x0e, + 0x5c, 0x0b, 0xd6, 0x09, 0x81, 0x09, 0xb7, 0x07, 0x4b, 0x08, 0x03, 0x05, 0x17, 0xff, 0x1b, 0xfa, + 0x96, 0xf7, 0x48, 0xf8, 0x27, 0xf7, 0x5f, 0xf4, 0x4e, 0xf2, 0x29, 0xf0, 0xc7, 0xf2, 0x01, 0xf6, + 0xa4, 0xf7, 0x0e, 0xfd, 0x74, 0x02, 0x88, 0x08, 0x50, 0x0f, 0x03, 0x13, 0xe8, 0x15, 0x9b, 0x1a, + 0xc4, 0x1c, 0xe7, 0x1d, 0x8a, 0x19, 0x9e, 0x16, 0x90, 0x15, 0x5e, 0x10, 0xa2, 0x0e, 0xbf, 0x09, + 0xe1, 0x04, 0x1c, 0xff, 0x8d, 0xf8, 0xa4, 0xf3, 0x0a, 0xee, 0x0e, 0xeb, 0xda, 0xe8, 0xfa, 0xe5, + 0x2b, 0xe3, 0xeb, 0xdf, 0xed, 0xde, 0x7e, 0xe2, 0x78, 0xe5, 0x2a, 0xea, 0x2a, 0xf1, 0xf6, 0xf5, + 0x86, 0xfa, 0x2f, 0xff, 0x71, 0x04, 0x7b, 0x0a, 0x21, 0x12, 0x5b, 0x17, 0xdf, 0x17, 0xfe, 0x15, + 0x8e, 0x14, 0xbe, 0x12, 0xbd, 0x11, 0x15, 0x13, 0x49, 0x11, 0x58, 0x13, 0x7b, 0x10, 0xe5, 0x0a, + 0x05, 0x06, 0xb8, 0xff, 0xae, 0xfd, 0x22, 0xfb, 0x6f, 0xf9, 0x43, 0xf7, 0xa5, 0xf4, 0xd3, 0xf3, + 0xb0, 0xf3, 0x42, 0xf3, 0xb8, 0xf4, 0xbe, 0xf6, 0x09, 0xf9, 0xef, 0xfd, 0x6d, 0x02, 0xc2, 0x04, + 0x40, 0x06, 0xf3, 0x07, 0x48, 0x0b, 0x02, 0x0a, 0xef, 0x07, 0x59, 0x06, 0xb4, 0x01, 0xce, 0x00, + 0x5f, 0x00, 0xa4, 0xfd, 0x11, 0xfc, 0x3b, 0xf6, 0x84, 0xef, 0xfe, 0xea, 0x38, 0xe8, 0xd4, 0xe8, + 0xf1, 0xe8, 0xa5, 0xe6, 0x6c, 0xe3, 0x43, 0xe1, 0xbc, 0xe4, 0x19, 0xe9, 0x74, 0xec, 0xd7, 0xf1, + 0xfd, 0xf7, 0x45, 0xfe, 0xa1, 0x04, 0x74, 0x0a, 0xbd, 0x0e, 0x03, 0x14, 0x6a, 0x18, 0x28, 0x1c, + 0xd1, 0x19, 0xd7, 0x18, 0x1f, 0x18, 0xb8, 0x14, 0xc1, 0x15, 0x7a, 0x13, 0xc6, 0x10, 0x3a, 0x0d, + 0xac, 0x09, 0x8e, 0x03, 0xf5, 0xfe, 0xaa, 0xfc, 0x39, 0xfb, 0x01, 0xfb, 0x08, 0xf9, 0x29, 0xf4, + 0x39, 0xf1, 0xb5, 0xf2, 0x97, 0xf2, 0x6b, 0xf5, 0x3b, 0xfa, 0xc1, 0xfd, 0xb6, 0x02, 0x36, 0x05, + 0xae, 0x06, 0x94, 0x09, 0x13, 0x0d, 0xfa, 0x10, 0x4a, 0x10, 0x48, 0x0d, 0x20, 0x0b, 0x00, 0x07, + 0x73, 0x03, 0x30, 0x01, 0xa2, 0xfe, 0x65, 0xff, 0xa4, 0xfb, 0xb2, 0xf8, 0x16, 0xf4, 0x1a, 0xef, + 0xa7, 0xee, 0x99, 0xed, 0x3a, 0xec, 0x88, 0xe9, 0x00, 0xe6, 0x91, 0xe7, 0xd5, 0xeb, 0xab, 0xec, + 0x0d, 0xf0, 0xad, 0xf2, 0xbc, 0xf5, 0x87, 0xfc, 0x26, 0x02, 0xb9, 0x08, 0x15, 0x0e, 0x13, 0x12, + 0x50, 0x16, 0xea, 0x15, 0xee, 0x15, 0x0c, 0x14, 0x96, 0x10, 0xf1, 0x11, 0x90, 0x10, 0x84, 0x10, + 0x98, 0x10, 0xb7, 0x0b, 0x3f, 0x05, 0x22, 0x00, 0x0b, 0xfd, 0xba, 0xfd, 0xd5, 0xfd, 0x29, 0xfb, + 0x0a, 0xf7, 0x29, 0xf3, 0xa0, 0xf3, 0xf4, 0xf4, 0x44, 0xf6, 0x02, 0xfb, 0x77, 0x00, 0xa7, 0x03, + 0x3c, 0x08, 0xe9, 0x0b, 0x49, 0x0d, 0xe0, 0x0f, 0xf1, 0x12, 0x31, 0x14, 0x29, 0x11, 0xc3, 0x10, + 0xf2, 0x0c, 0x6f, 0x07, 0x09, 0x05, 0xf3, 0x00, 0x8d, 0xfe, 0x9e, 0xfb, 0x8b, 0xf8, 0x25, 0xf2, + 0xb3, 0xed, 0x54, 0xe9, 0x1c, 0xe6, 0xd6, 0xe6, 0x0d, 0xe6, 0xd2, 0xe3, 0xda, 0xe2, 0x38, 0xe5, + 0x66, 0xe8, 0xf4, 0xec, 0x18, 0xf3, 0x43, 0xf9, 0x75, 0xfe, 0x7e, 0x02, 0xb3, 0x07, 0xe1, 0x0d, + 0xcf, 0x13, 0xef, 0x19, 0xbe, 0x1a, 0xe4, 0x19, 0xbd, 0x1a, 0x66, 0x18, 0xff, 0x18, 0xff, 0x19, + 0xec, 0x18, 0xfa, 0x18, 0xc2, 0x14, 0xcb, 0x10, 0x74, 0x0a, 0x44, 0x04, 0x6d, 0x01, 0xff, 0xfd, + 0x4a, 0xfc, 0xa0, 0xf7, 0x66, 0xf1, 0xea, 0xf0, 0x35, 0xf1, 0xe3, 0xef, 0x03, 0xf2, 0x02, 0xf2, + 0x40, 0xf3, 0xb4, 0xf8, 0x31, 0xfb, 0xaf, 0xfe, 0xbc, 0x00, 0x00, 0x03, 0x10, 0x08, 0xc9, 0x06, + 0x86, 0x05, 0x55, 0x02, 0x5b, 0xfe, 0x72, 0xfe, 0x56, 0xfc, 0xd3, 0xfd, 0x7f, 0xfe, 0xe8, 0xfa, + 0x5b, 0xf5, 0x09, 0xef, 0x21, 0xeb, 0xd1, 0xeb, 0x14, 0xec, 0x18, 0xec, 0x61, 0xe9, 0x6d, 0xe5, + 0x55, 0xe7, 0x92, 0xe8, 0xf4, 0xea, 0xe0, 0xef, 0x6e, 0xf5, 0x60, 0xfc, 0x1a, 0x04, 0x28, 0x0a, + 0xd8, 0x0e, 0xc4, 0x14, 0x66, 0x1a, 0xb0, 0x1d, 0x7f, 0x1d, 0xb2, 0x1e, 0xd3, 0x1c, 0x06, 0x1c, + 0x82, 0x19, 0x8c, 0x15, 0x8c, 0x12, 0x75, 0x0e, 0x1a, 0x0b, 0x33, 0x05, 0x78, 0x00, 0x41, 0xfc, + 0xf3, 0xf9, 0x10, 0xf8, 0x7e, 0xf4, 0x86, 0xee, 0x4f, 0xea, 0x95, 0xea, 0xfb, 0xea, 0x62, 0xed, + 0x5e, 0xf2, 0x13, 0xf6, 0xea, 0xf7, 0x3e, 0xfa, 0x13, 0xfe, 0x29, 0x01, 0x1e, 0x07, 0xef, 0x0c, + 0x73, 0x0d, 0xc1, 0x0d, 0x0b, 0x0d, 0x44, 0x0a, 0x5b, 0x0a, 0x3e, 0x09, 0x52, 0x08, 0x4f, 0x0a, + 0x79, 0x09, 0xe3, 0x05, 0x8e, 0x00, 0xe2, 0xfa, 0x25, 0xf7, 0x89, 0xf5, 0xff, 0xf4, 0x44, 0xf3, + 0x17, 0xf0, 0x63, 0xef, 0x81, 0xef, 0xf9, 0xee, 0x66, 0xf1, 0xb4, 0xf2, 0x16, 0xf6, 0xf1, 0xfb, + 0xed, 0xfe, 0x4c, 0x04, 0xa2, 0x06, 0x29, 0x0b, 0x30, 0x11, 0xd3, 0x10, 0x46, 0x12, 0x9f, 0x0f, + 0xec, 0x0c, 0x6d, 0x0c, 0x4b, 0x0b, 0x84, 0x0c, 0x2f, 0x0c, 0x0d, 0x08, 0x09, 0x02, 0x93, 0xfc, + 0x44, 0xf8, 0x8a, 0xf6, 0x98, 0xf4, 0x7d, 0xf2, 0x3d, 0xee, 0xb3, 0xea, 0xd2, 0xeb, 0x0c, 0xec, + 0xb4, 0xee, 0x52, 0xf2, 0x6e, 0xf4, 0x5e, 0xf8, 0xf6, 0xfb, 0x52, 0x00, 0x86, 0x05, 0x8a, 0x08, + 0x80, 0x0e, 0x1b, 0x12, 0x0b, 0x12, 0x0b, 0x12, 0x68, 0x0e, 0xc8, 0x0e, 0x4a, 0x0c, 0x1f, 0x0b, + 0x63, 0x09, 0x75, 0x06, 0x03, 0x05, 0xdb, 0xfe, 0x53, 0xfa, 0x6c, 0xf7, 0x10, 0xf6, 0x50, 0xf6, + 0x76, 0xf6, 0xab, 0xf2, 0xdb, 0xef, 0x35, 0xef, 0x86, 0xef, 0xf4, 0xf2, 0x98, 0xf8, 0x3b, 0xfd, + 0x53, 0x02, 0x70, 0x06, 0x8b, 0x09, 0x9c, 0x0b, 0xe5, 0x10, 0x38, 0x16, 0x61, 0x17, 0xfd, 0x17, + 0xc5, 0x14, 0x66, 0x11, 0xdd, 0x0f, 0x61, 0x0c, 0xd4, 0x0a, 0xd8, 0x0a, 0x9a, 0x08, 0x64, 0x05, + 0xca, 0xff, 0xb2, 0xf9, 0x73, 0xf5, 0x61, 0xf3, 0x68, 0xf2, 0x7b, 0xef, 0x99, 0xea, 0x91, 0xe9, + 0x7a, 0xea, 0xab, 0xe8, 0xee, 0xe7, 0xbb, 0xe7, 0x4d, 0xea, 0xa6, 0xef, 0xf0, 0xf4, 0xde, 0xfa, + 0x14, 0xff, 0x3f, 0x05, 0xaa, 0x09, 0x50, 0x09, 0xe6, 0x0a, 0x2c, 0x08, 0xee, 0x05, 0xa5, 0x05, + 0x78, 0x05, 0x85, 0x06, 0x6b, 0x07, 0x88, 0x04, 0xce, 0xff, 0xa9, 0xfa, 0x59, 0xf7, 0x59, 0xf8, + 0x66, 0xf8, 0x46, 0xf9, 0x4c, 0xf6, 0xba, 0xf3, 0xab, 0xf4, 0xaf, 0xf5, 0xf8, 0xf8, 0xda, 0xfc, + 0x98, 0x02, 0x61, 0x08, 0x84, 0x0c, 0x92, 0x11, 0xb6, 0x14, 0xb5, 0x15, 0x4b, 0x1b, 0x11, 0x1e, + 0xef, 0x1d, 0x5f, 0x1e, 0x33, 0x1a, 0x40, 0x17, 0x25, 0x12, 0x3a, 0x0e, 0x39, 0x0b, 0x42, 0x07, + 0x41, 0x03, 0x19, 0xfc, 0x32, 0xf5, 0x62, 0xf0, 0x3d, 0xec, 0x4e, 0xea, 0x88, 0xe9, 0x17, 0xe4, + 0xda, 0xe0, 0xf8, 0xde, 0x1e, 0xdf, 0xa1, 0xe3, 0x6c, 0xe8, 0x24, 0xef, 0x3d, 0xf5, 0xa8, 0xf8, + 0x4c, 0xfe, 0x77, 0x01, 0xec, 0x06, 0x63, 0x0c, 0x13, 0x0e, 0x09, 0x11, 0x48, 0x10, 0xeb, 0x0e, + 0x41, 0x0e, 0x4e, 0x0e, 0xfb, 0x0e, 0x09, 0x0f, 0xf5, 0x0d, 0xaa, 0x0b, 0x9f, 0x07, 0xfd, 0x02, + 0x4a, 0xff, 0x8b, 0xfd, 0x42, 0xfd, 0x9a, 0xfa, 0xbf, 0xf5, 0x11, 0xf6, 0xda, 0xf7, 0xdd, 0xf6, + 0x8d, 0xf8, 0x35, 0xf9, 0x3e, 0xfb, 0x3c, 0xff, 0xea, 0x02, 0xe4, 0x06, 0x54, 0x09, 0xd2, 0x0d, + 0xb8, 0x10, 0xf9, 0x12, 0xdc, 0x13, 0xe1, 0x0e, 0xf3, 0x09, 0x97, 0x05, 0xec, 0x03, 0xd3, 0x03, + 0xca, 0x04, 0x5f, 0x02, 0xfa, 0xfc, 0x45, 0xf6, 0x75, 0xef, 0x22, 0xed, 0x25, 0xeb, 0x6b, 0xeb, + 0xfc, 0xe7, 0x8d, 0xe3, 0x56, 0xe3, 0x77, 0xe4, 0x09, 0xe7, 0x65, 0xea, 0xba, 0xee, 0xb9, 0xf3, + 0xbe, 0xf9, 0xd1, 0x00, 0x53, 0x05, 0x72, 0x09, 0x1a, 0x11, 0xf2, 0x13, 0x7e, 0x17, 0x2f, 0x19, + 0xc1, 0x17, 0x89, 0x18, 0x9a, 0x14, 0x70, 0x11, 0x7c, 0x0e, 0xa8, 0x0c, 0x34, 0x0b, 0x1c, 0x07, + 0xf2, 0x01, 0xa0, 0xfe, 0xf6, 0xfc, 0x07, 0xfd, 0xcf, 0xfc, 0x20, 0xf8, 0x92, 0xf4, 0x35, 0xf2, + 0xa6, 0xf1, 0x8c, 0xf4, 0x4b, 0xf7, 0x3c, 0xfc, 0x14, 0xff, 0x06, 0x01, 0x43, 0x06, 0xd3, 0x07, + 0x4d, 0x0d, 0x92, 0x12, 0x5e, 0x12, 0x18, 0x14, 0x78, 0x11, 0x76, 0x0e, 0x3f, 0x0d, 0xbc, 0x0a, + 0x56, 0x09, 0xc8, 0x09, 0x2c, 0x09, 0xa8, 0x06, 0xae, 0xff, 0x52, 0xf8, 0xed, 0xf1, 0x5a, 0xee, + 0xa9, 0xef, 0xe7, 0xed, 0xaf, 0xea, 0xb4, 0xe9, 0x61, 0xe8, 0x8e, 0xe6, 0x31, 0xe7, 0x56, 0xe8, + 0x02, 0xec, 0x45, 0xf0, 0x06, 0xf5, 0x80, 0xf9, 0xb1, 0xfd, 0x28, 0x04, 0xe1, 0x07, 0xd6, 0x0a, + 0xcf, 0x0d, 0x1c, 0x0c, 0x50, 0x09, 0x44, 0x07, 0x19, 0x07, 0xb3, 0x07, 0x47, 0x0a, 0x95, 0x08, + 0x92, 0x05, 0x61, 0x01, 0x40, 0xfd, 0xd3, 0xf9, 0x5a, 0xf7, 0x66, 0xf8, 0xd8, 0xf4, 0xdb, 0xf1, + 0x82, 0xf0, 0x0a, 0xf0, 0xa1, 0xf2, 0xa9, 0xf7, 0x5d, 0xfc, 0xc6, 0x00, 0x66, 0x05, 0x65, 0x0a, + 0xf5, 0x0d, 0x7d, 0x10, 0x7f, 0x15, 0xf3, 0x16, 0x95, 0x18, 0x9d, 0x18, 0xd7, 0x16, 0x61, 0x17, + 0x53, 0x13, 0x53, 0x0f, 0x87, 0x0b, 0x7c, 0x07, 0xce, 0x03, 0x11, 0xfe, 0xa9, 0xf6, 0x37, 0xf3, + 0x75, 0xef, 0xc7, 0xee, 0x75, 0xf0, 0xa6, 0xec, 0x62, 0xe9, 0x18, 0xe4, 0x85, 0xe1, 0x53, 0xe3, + 0xf6, 0xe6, 0xc7, 0xed, 0xab, 0xf1, 0x5c, 0xf6, 0x30, 0xfc, 0xd7, 0xfc, 0xb8, 0x04, 0x20, 0x0c, + 0x7c, 0x10, 0xb0, 0x15, 0xf4, 0x15, 0x6a, 0x14, 0x0d, 0x14, 0x2a, 0x11, 0x79, 0x0f, 0x28, 0x10, + 0x28, 0x0f, 0xa1, 0x0e, 0xa7, 0x0a, 0xdb, 0x04, 0xba, 0xff, 0x24, 0xfb, 0x06, 0xfb, 0x34, 0xf9, + 0x59, 0xf5, 0xcb, 0xf4, 0x1c, 0xf2, 0x7b, 0xf0, 0xee, 0xed, 0xa3, 0xec, 0xe1, 0xef, 0xab, 0xf2, + 0x5e, 0xf7, 0xe2, 0xfb, 0x69, 0xfe, 0xde, 0x05, 0xe4, 0x09, 0xe3, 0x0d, 0x20, 0x10, 0xaa, 0x0d, + 0x0e, 0x0b, 0x24, 0x08, 0x09, 0x07, 0xcb, 0x05, 0xde, 0x06, 0xa7, 0x05, 0xa8, 0x02, 0x65, 0xfd, + 0xdb, 0xf7, 0x3f, 0xf5, 0xe4, 0xf3, 0x2a, 0xf4, 0x32, 0xf1, 0xf2, 0xee, 0xa1, 0xec, 0x6f, 0xeb, + 0x21, 0xed, 0x92, 0xef, 0xce, 0xf4, 0x24, 0xfb, 0xd4, 0x01, 0xc5, 0x08, 0x7a, 0x0c, 0x5d, 0x10, + 0x1c, 0x17, 0xd0, 0x1b, 0x24, 0x20, 0x34, 0x21, 0x1b, 0x22, 0xec, 0x21, 0xc3, 0x1e, 0xdb, 0x1b, + 0xf2, 0x18, 0x98, 0x17, 0xb7, 0x13, 0xb8, 0x0c, 0x05, 0x04, 0x23, 0xfd, 0xe1, 0xf6, 0x0d, 0xf4, + 0x72, 0xf3, 0x7e, 0xee, 0x93, 0xea, 0x94, 0xe5, 0x75, 0xe1, 0x5b, 0xe1, 0x93, 0xe2, 0x71, 0xe6, + 0x45, 0xea, 0x88, 0xee, 0xd7, 0xf3, 0x3c, 0xf5, 0x2a, 0xfb, 0x49, 0xff, 0x77, 0x02, 0x0f, 0x07, + 0x4b, 0x08, 0x65, 0x08, 0x2e, 0x09, 0xf3, 0x08, 0x25, 0x0a, 0xb1, 0x0b, 0x9c, 0x0b, 0x55, 0x0c, + 0x63, 0x07, 0x0e, 0x02, 0xfa, 0xfc, 0x74, 0xf7, 0xb3, 0xf6, 0x5c, 0xf4, 0x6a, 0xf0, 0x83, 0xf0, + 0x36, 0xef, 0x5f, 0xed, 0xf8, 0xeb, 0x92, 0xeb, 0xc1, 0xed, 0x80, 0xef, 0x74, 0xf5, 0xa0, 0xfa, + 0x12, 0xfe, 0xd8, 0x05, 0x89, 0x0b, 0x3b, 0x13, 0x10, 0x19, 0x7a, 0x19, 0x2a, 0x18, 0xed, 0x15, + 0xd1, 0x13, 0x26, 0x14, 0x36, 0x15, 0x61, 0x13, 0x34, 0x11, 0x6c, 0x0a, 0xc2, 0x03, 0xcb, 0xfd, + 0x61, 0xfa, 0x02, 0xfa, 0xe2, 0xf5, 0xb4, 0xf1, 0xcb, 0xeb, 0x42, 0xe8, 0x80, 0xe6, 0xc5, 0xe4, + 0xbb, 0xe6, 0xa8, 0xe9, 0x34, 0xee, 0x7c, 0xf5, 0x6e, 0xf8, 0x4e, 0xfc, 0x29, 0x02, 0xd0, 0x05, + 0x8a, 0x0b, 0x49, 0x10, 0xc4, 0x13, 0x48, 0x16, 0x38, 0x15, 0xef, 0x10, 0x5c, 0x0e, 0x6e, 0x0c, + 0xf9, 0x0a, 0x51, 0x08, 0x66, 0x02, 0x45, 0xfc, 0x17, 0xf7, 0xeb, 0xf6, 0xe7, 0xf7, 0x0d, 0xf5, + 0xfa, 0xf1, 0x4b, 0xec, 0x43, 0xe9, 0xfa, 0xe8, 0xd6, 0xe9, 0x6f, 0xee, 0x03, 0xf2, 0x23, 0xf7, + 0x00, 0xfe, 0xd5, 0x02, 0xf8, 0x0a, 0xa4, 0x12, 0xb4, 0x18, 0x2d, 0x1d, 0xea, 0x1f, 0x67, 0x1f, + 0x40, 0x20, 0xed, 0x1e, 0x11, 0x1c, 0x1a, 0x1c, 0xe5, 0x1b, 0x00, 0x1c, 0xb1, 0x16, 0xd9, 0x0f, + 0x45, 0x07, 0xa6, 0xfe, 0xcc, 0xfb, 0x82, 0xf7, 0x72, 0xf1, 0xeb, 0xee, 0x1e, 0xea, 0x56, 0xe5, + 0xcb, 0xe1, 0x00, 0xdf, 0xd0, 0xdf, 0x93, 0xe0, 0xf1, 0xe4, 0xc7, 0xe7, 0x04, 0xeb, 0xb9, 0xf2, + 0xdd, 0xf8, 0x61, 0x00, 0x1e, 0x06, 0x15, 0x08, 0xb2, 0x07, 0x44, 0x07, 0x4b, 0x06, 0xd5, 0x06, + 0x54, 0x08, 0xa6, 0x09, 0xdc, 0x0a, 0x80, 0x07, 0x91, 0x04, 0x46, 0xff, 0x83, 0xfb, 0x49, 0xfc, + 0xc1, 0xf8, 0xcb, 0xf6, 0x5f, 0xf4, 0x54, 0xf2, 0x2b, 0xf1, 0x4b, 0xf0, 0x06, 0xf4, 0xba, 0xf7, + 0x9f, 0xfc, 0x3d, 0x05, 0x12, 0x0a, 0xe8, 0x10, 0x96, 0x16, 0x85, 0x19, 0xef, 0x1d, 0x4d, 0x1f, + 0xd7, 0x20, 0x86, 0x22, 0xeb, 0x20, 0x77, 0x1d, 0x2d, 0x1a, 0xfc, 0x15, 0x2a, 0x13, 0x7f, 0x0e, + 0xc5, 0x06, 0x1a, 0x00, 0x0e, 0xf8, 0x09, 0xf4, 0x11, 0xf3, 0xaa, 0xef, 0x07, 0xeb, 0x95, 0xe3, + 0xa9, 0xdd, 0x94, 0xda, 0x35, 0xd9, 0x09, 0xdc, 0x30, 0xdd, 0xd5, 0xe1, 0x83, 0xe8, 0x77, 0xec, + 0xf4, 0xf3, 0x9a, 0xfb, 0x87, 0x02, 0xad, 0x08, 0xee, 0x0c, 0xa5, 0x0c, 0xee, 0x0d, 0x74, 0x0c, + 0xc3, 0x0a, 0x15, 0x0c, 0x48, 0x0c, 0x49, 0x0d, 0x01, 0x0c, 0x30, 0x08, 0x29, 0x02, 0x19, 0xfb, + 0xd6, 0xf8, 0x8f, 0xf7, 0x59, 0xf5, 0x44, 0xf5, 0xbd, 0xf2, 0xc0, 0xf0, 0x72, 0xee, 0x46, 0xec, + 0x27, 0xee, 0xc7, 0xef, 0xb5, 0xf5, 0x5e, 0xfa, 0xda, 0xfd, 0x3e, 0x04, 0x9f, 0x0a, 0xe4, 0x11, + 0x40, 0x18, 0x72, 0x19, 0xf2, 0x17, 0xe0, 0x17, 0xa7, 0x14, 0x5b, 0x12, 0xcf, 0x10, 0x2b, 0x0f, + 0xfe, 0x0c, 0xa3, 0x07, 0x37, 0x03, 0xd1, 0xfb, 0x83, 0xf7, 0xa2, 0xf5, 0xf2, 0xef, 0xb8, 0xec, + 0x6a, 0xe7, 0x63, 0xe3, 0xcd, 0xe1, 0x39, 0xe0, 0x2f, 0xe3, 0xed, 0xe6, 0x0d, 0xec, 0x4f, 0xf4, + 0xb2, 0xf9, 0x35, 0x00, 0x3a, 0x07, 0x11, 0x0d, 0x03, 0x13, 0xad, 0x16, 0xda, 0x19, 0x22, 0x1d, + 0x7d, 0x1c, 0x5e, 0x1a, 0x3f, 0x18, 0xd5, 0x15, 0x8a, 0x15, 0xa0, 0x11, 0xac, 0x0b, 0x15, 0x06, + 0x8f, 0xfd, 0x81, 0xfa, 0xc1, 0xf9, 0xd1, 0xf6, 0xbd, 0xf3, 0x6a, 0xee, 0xda, 0xea, 0xf7, 0xe8, + 0x4b, 0xe8, 0x69, 0xec, 0xf8, 0xee, 0xcf, 0xf4, 0xc2, 0xfa, 0xfb, 0xfe, 0x3e, 0x05, 0x86, 0x0b, + 0x0f, 0x11, 0x2f, 0x16, 0xee, 0x19, 0x2c, 0x1a, 0x55, 0x1b, 0xbf, 0x17, 0xdb, 0x14, 0xea, 0x14, + 0x85, 0x13, 0x71, 0x14, 0xc9, 0x11, 0xde, 0x0c, 0xd8, 0x06, 0x49, 0xfd, 0x01, 0xf7, 0xc9, 0xf1, + 0x02, 0xec, 0x45, 0xe9, 0x54, 0xe6, 0x36, 0xe4, 0xa1, 0xe1, 0x59, 0xe0, 0xd8, 0xe0, 0xd0, 0xe1, + 0x05, 0xe7, 0x13, 0xec, 0xf7, 0xf0, 0xc4, 0xf7, 0xd3, 0xff, 0x7d, 0x08, 0x1a, 0x11, 0x26, 0x15, + 0x9b, 0x15, 0xee, 0x16, 0xe5, 0x13, 0x23, 0x14, 0x26, 0x15, 0xd8, 0x14, 0x9e, 0x15, 0x32, 0x12, + 0xb9, 0x0e, 0x3c, 0x08, 0x40, 0x04, 0xcb, 0x02, 0x42, 0xff, 0xb0, 0xfc, 0x2f, 0xf7, 0x3e, 0xf2, + 0x6d, 0xef, 0xfa, 0xeb, 0xae, 0xec, 0xa6, 0xed, 0x44, 0xef, 0xb0, 0xf5, 0xdd, 0xfa, 0x53, 0x00, + 0x48, 0x05, 0x48, 0x08, 0xdc, 0x0d, 0xb1, 0x12, 0xe3, 0x15, 0x11, 0x19, 0xaa, 0x18, 0x5c, 0x15, + 0x6d, 0x11, 0xf7, 0x0c, 0x00, 0x0c, 0x5c, 0x09, 0x68, 0x04, 0xed, 0xfd, 0x95, 0xf3, 0x4a, 0xf0, + 0x7d, 0xef, 0xa6, 0xec, 0xbe, 0xea, 0xfd, 0xe4, 0x2b, 0xe1, 0xe0, 0xde, 0x08, 0xdd, 0xda, 0xdf, + 0x36, 0xe0, 0x03, 0xe4, 0x2d, 0xea, 0x93, 0xef, 0x6a, 0xf6, 0x35, 0xff, 0xc6, 0x06, 0x3c, 0x0d, + 0xa5, 0x12, 0x84, 0x14, 0xf7, 0x17, 0xfb, 0x17, 0x81, 0x18, 0x09, 0x19, 0x94, 0x19, 0x6d, 0x1c, + 0x69, 0x1b, 0x50, 0x19, 0x50, 0x15, 0x91, 0x0c, 0x7c, 0x08, 0x1c, 0x05, 0xff, 0xfe, 0xdf, 0xfb, + 0x8e, 0xf7, 0x42, 0xf4, 0x6f, 0xf0, 0xb7, 0xec, 0xca, 0xeb, 0x0e, 0xeb, 0x32, 0xed, 0x9f, 0xef, + 0x9d, 0xf0, 0xe4, 0xf4, 0xf0, 0xf9, 0x57, 0xff, 0x5a, 0x05, 0xc7, 0x07, 0x98, 0x08, 0xe5, 0x08, + 0xba, 0x05, 0x4a, 0x05, 0xd1, 0x03, 0xb3, 0x03, 0x99, 0x05, 0xd9, 0x02, 0x3a, 0x01, 0x26, 0xfb, + 0x3a, 0xf6, 0xf9, 0xf4, 0x6c, 0xf1, 0x3d, 0xef, 0xc2, 0xec, 0x49, 0xe9, 0x66, 0xe6, 0x05, 0xe3, + 0xd4, 0xe4, 0xa7, 0xe7, 0xfb, 0xe9, 0xa7, 0xf1, 0xd6, 0xf8, 0xa1, 0xff, 0x75, 0x06, 0xa7, 0x0a, + 0xd6, 0x10, 0xeb, 0x15, 0x22, 0x19, 0x6e, 0x1e, 0x74, 0x20, 0x3e, 0x20, 0x94, 0x1e, 0x00, 0x1b, + 0x8a, 0x1b, 0x32, 0x1a, 0x0c, 0x17, 0xd1, 0x12, 0x45, 0x0a, 0x40, 0x06, 0xb1, 0x03, 0x6c, 0x01, + 0x2c, 0xfe, 0xd5, 0xf6, 0x88, 0xf1, 0xf9, 0xec, 0x2f, 0xeb, 0x28, 0xec, 0x96, 0xea, 0x6d, 0xec, + 0x32, 0xef, 0xda, 0xf1, 0xe6, 0xf6, 0x90, 0xfd, 0x4e, 0x03, 0x05, 0x09, 0x03, 0x0d, 0xed, 0x0c, + 0x13, 0x0d, 0x27, 0x0b, 0x36, 0x09, 0xd2, 0x07, 0x39, 0x07, 0x99, 0x07, 0x24, 0x08, 0xdb, 0x08, + 0x1a, 0x04, 0x62, 0xfc, 0xd8, 0xf6, 0x20, 0xf4, 0x13, 0xf1, 0x2f, 0xee, 0x97, 0xec, 0xd4, 0xea, + 0x5e, 0xe7, 0x39, 0xe7, 0x17, 0xe7, 0x56, 0xe8, 0xdb, 0xeb, 0x85, 0xed, 0xa6, 0xf1, 0x7a, 0xf6, + 0x82, 0xfc, 0xfd, 0x04, 0xf0, 0x0e, 0x83, 0x14, 0x3e, 0x16, 0x08, 0x19, 0x23, 0x1a, 0xb4, 0x1a, + 0xf2, 0x19, 0xa6, 0x18, 0x12, 0x19, 0xd8, 0x17, 0xed, 0x16, 0xe4, 0x11, 0x9b, 0x0c, 0x6d, 0x07, + 0xcc, 0x03, 0xc9, 0xff, 0x30, 0xf9, 0x63, 0xf4, 0xdc, 0xef, 0xf6, 0xec, 0xb8, 0xec, 0x89, 0xec, + 0xe9, 0xec, 0x13, 0xf0, 0xb8, 0xf2, 0x1e, 0xf7, 0xc7, 0xfc, 0x31, 0x01, 0xb6, 0x05, 0x9e, 0x09, + 0x2d, 0x0b, 0xee, 0x0d, 0xcc, 0x0e, 0x11, 0x0e, 0xb9, 0x0e, 0xeb, 0x0c, 0x20, 0x0b, 0xa4, 0x0a, + 0x31, 0x07, 0xfd, 0x03, 0x51, 0xfe, 0x7a, 0xf8, 0xf4, 0xf5, 0xde, 0xf1, 0x56, 0xee, 0x00, 0xe9, + 0x9b, 0xe5, 0xc8, 0xe1, 0x00, 0xe0, 0x8f, 0xe1, 0x51, 0xe3, 0x20, 0xe7, 0x7c, 0xea, 0x41, 0xed, + 0x8d, 0xf1, 0x46, 0xf9, 0x53, 0x01, 0x6d, 0x0a, 0xe5, 0x11, 0xde, 0x14, 0x0c, 0x18, 0x78, 0x18, + 0xa1, 0x17, 0x0b, 0x1b, 0x95, 0x1d, 0xe2, 0x1c, 0xce, 0x1e, 0xbe, 0x1e, 0xaa, 0x1d, 0x6b, 0x19, + 0x8a, 0x10, 0x6b, 0x0a, 0x9d, 0x03, 0x48, 0xfe, 0xf0, 0xf8, 0x7f, 0xf3, 0x83, 0xef, 0x39, 0xec, + 0x5c, 0xe9, 0x78, 0xe8, 0xb9, 0xe7, 0x41, 0xe6, 0xed, 0xe5, 0x4b, 0xe8, 0x81, 0xea, 0x4b, 0xef, + 0x83, 0xf6, 0x8d, 0xfd, 0xaa, 0x00, 0x1e, 0x03, 0xa9, 0x04, 0xa2, 0x05, 0xb7, 0x09, 0x79, 0x0d, + 0xfc, 0x0c, 0x51, 0x0b, 0x87, 0x0a, 0x53, 0x09, 0x6a, 0x0a, 0x5e, 0x06, 0xa8, 0x02, 0x64, 0x00, + 0x24, 0xfb, 0x5c, 0xf5, 0xfe, 0xef, 0xaa, 0xed, 0xc8, 0xed, 0xaa, 0xee, 0x74, 0xef, 0x85, 0xf2, + 0x59, 0xf4, 0xc2, 0xf6, 0x2d, 0xfb, 0xfa, 0xfc, 0xc3, 0x01, 0x10, 0x07, 0x07, 0x0d, 0x74, 0x13, + 0x5e, 0x15, 0xe8, 0x17, 0x6a, 0x18, 0xff, 0x18, 0x08, 0x1c, 0xb6, 0x1b, 0x93, 0x19, 0x83, 0x15, + 0xb8, 0x10, 0x3e, 0x0e, 0x2f, 0x0b, 0x15, 0x06, 0xea, 0x01, 0x49, 0xfd, 0x5a, 0xf7, 0x01, 0xf1, + 0x17, 0xec, 0x19, 0xeb, 0xe8, 0xea, 0x0b, 0xea, 0x50, 0xe9, 0x9c, 0xe8, 0x22, 0xe8, 0xdc, 0xeb, + 0x70, 0xf0, 0x3d, 0xf5, 0xf4, 0xf8, 0xc3, 0xfc, 0xe0, 0x01, 0xf6, 0x04, 0x69, 0x08, 0xbe, 0x0b, + 0xf9, 0x0e, 0xd2, 0x12, 0xc5, 0x15, 0xe6, 0x16, 0x86, 0x16, 0x36, 0x14, 0xe1, 0x12, 0x2f, 0x11, + 0x2e, 0x0c, 0x25, 0x06, 0x44, 0x03, 0x35, 0x00, 0x63, 0xfc, 0xe2, 0xf8, 0x15, 0xf5, 0xd6, 0xf6, + 0x80, 0xf6, 0x95, 0xf3, 0xd7, 0xf2, 0x3c, 0xf2, 0x35, 0xf3, 0x8d, 0xf6, 0xfc, 0xf9, 0x0b, 0xfd, + 0x76, 0xff, 0x90, 0x02, 0xf6, 0x04, 0xf3, 0x06, 0x07, 0x09, 0xbe, 0x0b, 0xf5, 0x0d, 0xaf, 0x0f, + 0xc5, 0x0d, 0x30, 0x0a, 0x51, 0x09, 0x54, 0x08, 0x2c, 0x08, 0x23, 0x06, 0x40, 0x01, 0xd2, 0xfc, + 0xd2, 0xf6, 0x5e, 0xf1, 0x6a, 0xed, 0x50, 0xea, 0x2e, 0xea, 0x2f, 0xec, 0x9d, 0xec, 0x34, 0xee, + 0x25, 0xf0, 0xcd, 0xf0, 0xb1, 0xf3, 0x91, 0xf5, 0xdd, 0xf8, 0xc9, 0xfd, 0xb0, 0x01, 0xde, 0x05, + 0xad, 0x07, 0x80, 0x09, 0x9f, 0x0c, 0xbe, 0x0d, 0x19, 0x0e, 0xa1, 0x0c, 0x03, 0x0a, 0x4a, 0x0a, + 0x6d, 0x0a, 0x73, 0x0b, 0x28, 0x0b, 0x65, 0x07, 0xff, 0x03, 0x5c, 0xff, 0x55, 0xfc, 0x5a, 0xfb, + 0x8f, 0xf9, 0xef, 0xf7, 0x7e, 0xf7, 0x18, 0xf6, 0xca, 0xf5, 0xff, 0xf8, 0xfa, 0xfa, 0x28, 0xfe, + 0x0d, 0x00, 0xca, 0x01, 0xe6, 0x02, 0xcb, 0x02, 0x2b, 0x05, 0x73, 0x06, 0x4d, 0x09, 0x3f, 0x0a, + 0xe9, 0x0a, 0x2b, 0x0c, 0xdf, 0x0a, 0xe5, 0x07, 0xc2, 0x05, 0x07, 0x04, 0xd1, 0x02, 0x86, 0x01, + 0xbf, 0xff, 0xab, 0xfb, 0xe1, 0xf6, 0xe7, 0xf2, 0x0e, 0xef, 0xd2, 0xec, 0x47, 0xeb, 0xe3, 0xe9, + 0x19, 0xe9, 0xda, 0xe7, 0xa0, 0xe7, 0xc3, 0xea, 0x65, 0xee, 0x5e, 0xf2, 0xce, 0xf5, 0x16, 0xf9, + 0xe4, 0xfb, 0x3f, 0xfe, 0xf6, 0x00, 0xc1, 0x04, 0x55, 0x07, 0x85, 0x09, 0x51, 0x0a, 0xda, 0x09, + 0x23, 0x0b, 0xdb, 0x0a, 0x2c, 0x0c, 0xc4, 0x0c, 0x37, 0x0c, 0xbe, 0x0b, 0xce, 0x09, 0x7e, 0x08, + 0xf0, 0x08, 0x30, 0x07, 0x28, 0x05, 0x83, 0x03, 0x48, 0x02, 0x9f, 0x03, 0x04, 0x03, 0x46, 0x02, + 0x18, 0x04, 0xb2, 0x03, 0x55, 0x03, 0x20, 0x05, 0x88, 0x06, 0xbc, 0x08, 0xdf, 0x08, 0x6b, 0x08, + 0xcd, 0x08, 0xdc, 0x07, 0x41, 0x06, 0x9c, 0x02, 0x39, 0xfe, 0x7c, 0xfc, 0x76, 0xfb, 0x4c, 0xfb, + 0xba, 0xf9, 0x90, 0xf6, 0x1a, 0xf4, 0x7e, 0xf0, 0x67, 0xee, 0x3d, 0xee, 0x08, 0xef, 0x8d, 0xf0, + 0xf7, 0xf1, 0xe5, 0xef, 0xdc, 0xef, 0xc2, 0xf1, 0xcd, 0xf3, 0xad, 0xf9, 0xab, 0xfd, 0x27, 0x00, + 0x69, 0x02, 0xec, 0x03, 0xbb, 0x04, 0x56, 0x05, 0xbd, 0x08, 0xb5, 0x0b, 0x28, 0x0f, 0xa5, 0x11, + 0x32, 0x12, 0xdd, 0x11, 0x12, 0x11, 0xcc, 0x0f, 0xc7, 0x0e, 0xcf, 0x0d, 0x86, 0x0d, 0xd5, 0x0b, + 0xb3, 0x08, 0xcf, 0x05, 0x12, 0x03, 0x8f, 0x01, 0x9a, 0x00, 0xb4, 0xfe, 0xd6, 0xfb, 0x7c, 0xfb, + 0x0e, 0xfd, 0x23, 0xfe, 0xb3, 0xfe, 0xd9, 0xff, 0x8f, 0x00, 0x62, 0x01, 0x5b, 0x01, 0xbe, 0x00, + 0x76, 0x01, 0xab, 0x02, 0x4c, 0x01, 0x4e, 0x01, 0x23, 0x00, 0x16, 0xfd, 0x6f, 0xfc, 0xa5, 0xfb, + 0x1e, 0xfc, 0xc1, 0xfb, 0x59, 0xfa, 0x4d, 0xf8, 0xc9, 0xf5, 0x59, 0xf3, 0xeb, 0xf1, 0xe7, 0xf1, + 0x0f, 0xf2, 0x09, 0xf2, 0xd3, 0xf1, 0x3a, 0xf3, 0x27, 0xf4, 0x0a, 0xf7, 0x56, 0xfa, 0x29, 0xfc, + 0xb5, 0xff, 0x86, 0x03, 0x5d, 0x06, 0x84, 0x08, 0x68, 0x09, 0xb3, 0x0a, 0x38, 0x0c, 0x04, 0x0d, + 0x62, 0x0d, 0x48, 0x0c, 0x03, 0x0b, 0x35, 0x0a, 0x98, 0x09, 0x25, 0x0a, 0x90, 0x0a, 0x0e, 0x0a, + 0xcb, 0x07, 0x51, 0x04, 0xba, 0x00, 0xa2, 0xfd, 0xf0, 0xfc, 0x3a, 0xfd, 0xee, 0xfc, 0x1f, 0xfb, + 0x67, 0xf9, 0x5f, 0xf8, 0x47, 0xfa, 0xc4, 0xfe, 0x3d, 0x00, 0xe0, 0x00, 0x1d, 0x01, 0x32, 0x02, + 0x44, 0x03, 0x70, 0x03, 0xee, 0x03, 0xd4, 0x03, 0xfb, 0x03, 0x12, 0x04, 0xd3, 0x04, 0xfd, 0x03, + 0x1e, 0x02, 0x96, 0x00, 0x31, 0xff, 0x8d, 0xfd, 0xec, 0xfd, 0x0a, 0xfd, 0xc4, 0xfb, 0x1d, 0xfa, + 0xa2, 0xf6, 0xcd, 0xf4, 0xab, 0xf5, 0x0a, 0xf4, 0x15, 0xf2, 0x30, 0xf2, 0x57, 0xf2, 0xb4, 0xf4, + 0x9f, 0xf7, 0xcd, 0xf9, 0xe1, 0xfb, 0x3c, 0xfd, 0xea, 0xfd, 0x05, 0xff, 0x81, 0x00, 0x91, 0x02, + 0xf4, 0x04, 0x37, 0x08, 0x4f, 0x08, 0x2c, 0x06, 0xfb, 0x05, 0x1e, 0x06, 0x9e, 0x07, 0xc7, 0x07, + 0xeb, 0x06, 0x80, 0x05, 0xfb, 0x03, 0x19, 0x01, 0xfc, 0xfe, 0xb8, 0xfd, 0x87, 0xfc, 0x1c, 0xfe, + 0xcf, 0xfd, 0x21, 0xff, 0xa2, 0xff, 0x9a, 0xff, 0xde, 0x00, 0xa9, 0x00, 0x63, 0x01, 0xdb, 0x02, + 0x71, 0x04, 0xb2, 0x04, 0x83, 0x04, 0x9c, 0x03, 0xdf, 0x02, 0x7f, 0x02, 0x9a, 0x00, 0x08, 0xfe, + 0xe6, 0xfc, 0x62, 0xfd, 0x12, 0xfe, 0x11, 0xfe, 0x87, 0xfd, 0x34, 0xfc, 0x90, 0xfa, 0x15, 0xf9, + 0xc9, 0xf6, 0x55, 0xf5, 0x08, 0xf6, 0x73, 0xf6, 0x2b, 0xf7, 0xe8, 0xf6, 0xef, 0xf5, 0x2f, 0xf7, + 0x95, 0xfa, 0x83, 0xfd, 0x38, 0x00, 0x08, 0x02, 0x3a, 0x02, 0x52, 0x03, 0xa9, 0x03, 0x03, 0x05, + 0x21, 0x07, 0xbb, 0x08, 0xa1, 0x09, 0x14, 0x0a, 0xbb, 0x09, 0x41, 0x08, 0xdb, 0x06, 0xf3, 0x05, + 0xde, 0x04, 0xa0, 0x04, 0x5b, 0x05, 0xfc, 0x03, 0x52, 0x02, 0xfa, 0xff, 0x71, 0xfd, 0xb8, 0xfd, + 0x00, 0xfe, 0x84, 0xfc, 0x83, 0xfb, 0x87, 0xfa, 0xfa, 0xf9, 0xb5, 0xfa, 0x18, 0xfb, 0xdf, 0xfb, + 0xcf, 0xfd, 0x1a, 0xff, 0x03, 0x00, 0xf8, 0xff, 0xb9, 0xff, 0xd4, 0x00, 0x4f, 0x01, 0xb5, 0x03, + 0xf2, 0x03, 0x27, 0x02, 0xba, 0x00, 0x35, 0x00, 0xae, 0x00, 0xb3, 0x00, 0x4f, 0x00, 0x31, 0xff, + 0x83, 0xfe, 0xec, 0xfd, 0x3e, 0xfe, 0x41, 0xfd, 0x93, 0xfd, 0xfc, 0xfe, 0x65, 0xff, 0x35, 0x02, + 0xb7, 0x03, 0x8b, 0x04, 0x86, 0x06, 0x5d, 0x07, 0x44, 0x08, 0xde, 0x09, 0x06, 0x0c, 0x48, 0x0d, + 0x91, 0x0e, 0x72, 0x0e, 0x88, 0x0d, 0xb3, 0x0c, 0xcb, 0x0a, 0xd8, 0x07, 0xef, 0x04, 0xa9, 0x02, + 0x39, 0x01, 0xa8, 0x00, 0x70, 0xfe, 0x06, 0xfc, 0x11, 0xfa, 0xd0, 0xf6, 0x7d, 0xf4, 0x10, 0xf3, + 0x9f, 0xf2, 0xab, 0xf3, 0x10, 0xf6, 0x11, 0xf6, 0x65, 0xf4, 0xf4, 0xf3, 0xa4, 0xf5, 0x5b, 0xf9, + 0x7b, 0xfd, 0x45, 0xff, 0xcc, 0xff, 0x03, 0x02, 0xde, 0x01, 0x98, 0x02, 0x40, 0x04, 0xda, 0x05, + 0x6e, 0x08, 0x4b, 0x09, 0xc4, 0x09, 0xf2, 0x08, 0xaf, 0x06, 0xc9, 0x04, 0xfe, 0x02, 0xeb, 0x01, + 0x2f, 0x02, 0x9a, 0x01, 0x1c, 0x00, 0x69, 0xfe, 0xb1, 0xfb, 0x5e, 0xfa, 0xbe, 0xf9, 0xfc, 0xf7, + 0x37, 0xf7, 0xf7, 0xf6, 0x49, 0xf9, 0xff, 0xfb, 0x5f, 0xfd, 0x6a, 0xff, 0x9e, 0x00, 0x98, 0x02, + 0x58, 0x04, 0x1d, 0x04, 0xc4, 0x03, 0x9a, 0x04, 0x1c, 0x04, 0x47, 0x05, 0x91, 0x04, 0xae, 0x01, + 0xde, 0xff, 0x2f, 0xff, 0x01, 0xff, 0x90, 0xfe, 0xf0, 0xfd, 0x53, 0xfc, 0x53, 0xfa, 0x60, 0xf7, + 0x80, 0xf5, 0x01, 0xf4, 0x5d, 0xf4, 0xa8, 0xf3, 0x52, 0xf2, 0xa0, 0xf3, 0x96, 0xf3, 0xe5, 0xf3, + 0x17, 0xf5, 0x04, 0xf6, 0x62, 0xf8, 0x40, 0xfb, 0x39, 0xfe, 0x7a, 0x00, 0x05, 0x02, 0xfb, 0x02, + 0x63, 0x04, 0xef, 0x04, 0x2e, 0x04, 0x2e, 0x03, 0x89, 0x01, 0xb6, 0x00, 0x06, 0x00, 0x31, 0xff, + 0x43, 0xff, 0x2c, 0x00, 0xb9, 0xff, 0x66, 0xfe, 0xa9, 0xfc, 0x3e, 0xfa, 0x9a, 0xf9, 0xf3, 0xfa, + 0xaa, 0xfc, 0x46, 0xfd, 0xea, 0xfc, 0xb2, 0xfc, 0xba, 0xfe, 0xad, 0x01, 0x58, 0x04, 0xdc, 0x05, + 0x63, 0x07, 0x6a, 0x09, 0x2b, 0x0a, 0x4a, 0x0c, 0x57, 0x0d, 0x5e, 0x0e, 0x1f, 0x0f, 0x37, 0x0f, + 0x22, 0x11, 0x6c, 0x10, 0x46, 0x0e, 0x6b, 0x0c, 0xdb, 0x09, 0xb2, 0x07, 0xb1, 0x06, 0xf5, 0x04, + 0xb2, 0x02, 0x12, 0x01, 0x2f, 0xfd, 0x8f, 0xfa, 0x2c, 0xf9, 0xa9, 0xf6, 0xff, 0xf3, 0xd8, 0xf1, + 0x7e, 0xf1, 0xf3, 0xf1, 0xc1, 0xf3, 0x64, 0xf5, 0xcd, 0xf5, 0x1a, 0xf7, 0x76, 0xf8, 0x84, 0xf8, + 0xc7, 0xf9, 0xd5, 0xfa, 0x4e, 0xfc, 0x3a, 0x00, 0x50, 0x01, 0x70, 0x00, 0x64, 0xff, 0xf4, 0xff, + 0x21, 0x02, 0x8e, 0x04, 0xa6, 0x05, 0x0f, 0x06, 0xe6, 0x05, 0x3d, 0x04, 0xee, 0x02, 0x49, 0x01, + 0xf7, 0x01, 0x25, 0x03, 0xc7, 0x04, 0xc8, 0x06, 0xe7, 0x06, 0x45, 0x07, 0x70, 0x07, 0xf9, 0x07, + 0xec, 0x07, 0xfd, 0x08, 0x43, 0x0b, 0x39, 0x0c, 0xb0, 0x0c, 0xcf, 0x0c, 0x4b, 0x0c, 0x7b, 0x0b, + 0xcf, 0x0a, 0xe6, 0x08, 0xc3, 0x07, 0x77, 0x08, 0xd6, 0x07, 0xae, 0x06, 0x04, 0x05, 0xfd, 0x02, + 0x39, 0x01, 0xee, 0xff, 0xe4, 0xfd, 0xd0, 0xf9, 0xe4, 0xf7, 0x6e, 0xf7, 0xf2, 0xf6, 0xa8, 0xf6, + 0xb7, 0xf4, 0xdf, 0xf3, 0xbf, 0xf5, 0x1c, 0xf7, 0xf6, 0xf8, 0x63, 0xfa, 0x06, 0xfb, 0xf1, 0xfb, + 0xa0, 0xfb, 0x9b, 0xfc, 0x4a, 0xfd, 0x7f, 0xfe, 0xae, 0xff, 0x9b, 0x00, 0xde, 0x01, 0x6b, 0x01, + 0x04, 0x01, 0x11, 0x00, 0xe8, 0xfe, 0xb9, 0xfe, 0x02, 0x00, 0x3d, 0x00, 0xa4, 0xff, 0xbb, 0xff, + 0x2f, 0xfe, 0xab, 0xfe, 0xe6, 0xfe, 0x02, 0xfd, 0xca, 0xfb, 0x0c, 0xfa, 0xad, 0xf9, 0x97, 0xf9, + 0xf8, 0xfa, 0xa9, 0xfb, 0xd1, 0xfc, 0xad, 0xfe, 0xee, 0xff, 0x16, 0x00, 0xf6, 0xff, 0x2a, 0x00, + 0x85, 0x01, 0x96, 0x03, 0xba, 0x03, 0xc7, 0x02, 0x66, 0x00, 0x09, 0xff, 0xf0, 0xfd, 0x84, 0xfd, + 0x93, 0xfd, 0x7f, 0xfd, 0x95, 0xfc, 0x9f, 0xfb, 0x2f, 0xfb, 0xb9, 0xf9, 0x38, 0xfa, 0xaa, 0xfa, + 0xd8, 0xfb, 0x97, 0xfd, 0x76, 0xfe, 0x99, 0xfe, 0x01, 0xfe, 0x2d, 0xfe, 0x29, 0xfe, 0x87, 0xff, + 0x58, 0x01, 0x40, 0x02, 0xcc, 0x04, 0x47, 0x06, 0x31, 0x06, 0x10, 0x06, 0x02, 0x05, 0xc8, 0x02, + 0x9b, 0x01, 0xb4, 0x00, 0x43, 0x00, 0x9a, 0x00, 0x01, 0x00, 0x31, 0xff, 0x67, 0xfe, 0x8b, 0xfd, + 0x80, 0xfb, 0x58, 0xf9, 0x97, 0xf8, 0x7f, 0xf8, 0xfe, 0xf9, 0x07, 0xfb, 0xe1, 0xf9, 0x09, 0xf9, + 0x4d, 0xfa, 0x71, 0xfc, 0x1e, 0x00, 0x65, 0x02, 0xb6, 0x03, 0x68, 0x05, 0xec, 0x05, 0xe9, 0x06, + 0xda, 0x06, 0x6d, 0x07, 0x46, 0x09, 0x84, 0x0a, 0x4c, 0x0b, 0x92, 0x0a, 0x68, 0x09, 0x0c, 0x07, + 0xe5, 0x04, 0x00, 0x03, 0x7a, 0x01, 0x45, 0x00, 0x57, 0xff, 0xab, 0xfe, 0x9d, 0xfc, 0x33, 0xfb, + 0x82, 0xf9, 0x74, 0xf8, 0x17, 0xf7, 0x3a, 0xf5, 0xe3, 0xf5, 0x21, 0xf7, 0xd9, 0xf8, 0x4b, 0xf9, + 0x31, 0xfa, 0xb1, 0xfc, 0xf2, 0xff, 0x88, 0x01, 0xe3, 0x01, 0xef, 0x02, 0x0e, 0x04, 0xbb, 0x06, + 0xe0, 0x07, 0x6a, 0x07, 0x52, 0x06, 0xcb, 0x06, 0x6e, 0x07, 0xf5, 0x07, 0x42, 0x08, 0x47, 0x08, + 0xcd, 0x06, 0x1e, 0x05, 0xab, 0x02, 0xe7, 0xff, 0x06, 0x00, 0xb4, 0xff, 0x6b, 0xff, 0x73, 0xff, + 0xf5, 0xfe, 0x7e, 0xfe, 0x2f, 0xfe, 0x98, 0xfe, 0xe3, 0xfe, 0x8f, 0x00, 0x7e, 0x02, 0xea, 0x03, + 0x09, 0x06, 0xdf, 0x06, 0xc5, 0x07, 0x59, 0x08, 0x7d, 0x07, 0xba, 0x05, 0xaf, 0x03, 0xf6, 0x01, + 0x25, 0x01, 0x44, 0x00, 0x37, 0xfe, 0x70, 0xfe, 0x37, 0xfe, 0x09, 0xfd, 0xf8, 0xfa, 0xb8, 0xf7, + 0x1f, 0xf6, 0xe9, 0xf4, 0x24, 0xf5, 0x49, 0xf5, 0x9c, 0xf3, 0x79, 0xf2, 0x36, 0xf2, 0x8d, 0xf3, + 0xd6, 0xf5, 0x4f, 0xf7, 0x57, 0xfa, 0x19, 0xfd, 0xdb, 0xfe, 0x72, 0x01, 0xdd, 0x02, 0x01, 0x05, + 0x6b, 0x07, 0x6b, 0x0a, 0xcc, 0x0d, 0x90, 0x0f, 0xc8, 0x0f, 0x25, 0x0e, 0x48, 0x0d, 0xb5, 0x0b, + 0x5f, 0x0b, 0xae, 0x09, 0xd6, 0x07, 0xe6, 0x06, 0x08, 0x05, 0x08, 0x03, 0x83, 0x00, 0x5b, 0xfe, + 0x88, 0xfa, 0xf9, 0xf7, 0x8d, 0xf5, 0x62, 0xf4, 0x44, 0xf5, 0x09, 0xf5, 0x7d, 0xf4, 0xdc, 0xf4, + 0x7c, 0xf6, 0xb8, 0xf5, 0x4f, 0xf6, 0xdf, 0xf6, 0x1c, 0xf7, 0xba, 0xf9, 0xf0, 0xfb, 0x9e, 0xfb, + 0x66, 0xfb, 0x75, 0xfc, 0x87, 0xfd, 0x0f, 0x00, 0x1e, 0x02, 0x0b, 0x03, 0xa5, 0x01, 0x32, 0x01, + 0xad, 0xff, 0xa1, 0xfc, 0xe4, 0xfb, 0x62, 0xfc, 0x4b, 0xfc, 0x5f, 0xfd, 0x91, 0xfe, 0x38, 0xfd, + 0x35, 0xfc, 0xcd, 0xfc, 0x18, 0xfd, 0xb4, 0xfc, 0x0f, 0xff, 0xf9, 0x00, 0x96, 0x02, 0x68, 0x04, + 0x1f, 0x06, 0x6b, 0x05, 0x48, 0x06, 0xe7, 0x07, 0x66, 0x06, 0xa1, 0x06, 0x51, 0x08, 0xe4, 0x08, + 0x09, 0x08, 0xd4, 0x08, 0x69, 0x08, 0x42, 0x08, 0xf3, 0x06, 0x22, 0x04, 0xf7, 0x01, 0x8c, 0xff, + 0xe9, 0xff, 0x6c, 0xff, 0x50, 0xfd, 0x8e, 0xfb, 0x0d, 0xfa, 0xff, 0xf9, 0xa6, 0xfa, 0xbf, 0xfa, + 0x59, 0xfb, 0x25, 0xfc, 0xc2, 0xfc, 0x2b, 0xfd, 0x04, 0xfc, 0x21, 0xfd, 0x0d, 0xff, 0x2c, 0x00, + 0xce, 0x02, 0x67, 0x04, 0x9c, 0x04, 0xde, 0x04, 0x3e, 0x04, 0x73, 0x03, 0xaa, 0x03, 0xe3, 0x02, + 0xad, 0x02, 0xf6, 0x01, 0xcb, 0x00, 0x9b, 0x00, 0x3b, 0x00, 0x01, 0x00, 0x8d, 0xfd, 0x40, 0xfb, + 0xd8, 0xf9, 0xd8, 0xf9, 0x6e, 0xfa, 0x78, 0xf9, 0x66, 0xfa, 0x2e, 0xfc, 0x09, 0xfe, 0x99, 0xfe, + 0x8a, 0xff, 0x10, 0x01, 0x9e, 0x02, 0x2a, 0x05, 0xce, 0x05, 0x01, 0x06, 0xe1, 0x05, 0xb7, 0x05, + 0x14, 0x05, 0xca, 0x05, 0x79, 0x06, 0x4e, 0x07, 0xc6, 0x07, 0x6e, 0x07, 0x40, 0x06, 0xf5, 0x03, + 0x62, 0x03, 0xba, 0x03, 0x79, 0x03, 0x2e, 0x04, 0xe7, 0x04, 0xf0, 0x02, 0x01, 0x01, 0x93, 0xff, + 0x5b, 0xfe, 0xc4, 0xfd, 0x76, 0xfd, 0x2d, 0xfd, 0x19, 0xfe, 0x29, 0x00, 0x36, 0x01, 0xf4, 0x01, + 0x50, 0x02, 0x62, 0x00, 0xb7, 0xfe, 0x50, 0xfd, 0x33, 0xfd, 0xd3, 0xfd, 0xc0, 0xfc, 0xdd, 0xfb, + 0xb2, 0xfa, 0x9d, 0xfa, 0xac, 0xf8, 0x63, 0xf7, 0x4c, 0xf7, 0x64, 0xf5, 0x5d, 0xf6, 0x04, 0xf8, + 0x52, 0xf7, 0x7c, 0xf6, 0x9d, 0xf6, 0x80, 0xf7, 0x15, 0xfa, 0xae, 0xfc, 0xa0, 0xff, 0x4b, 0x01, + 0xe5, 0x02, 0xab, 0x04, 0x90, 0x04, 0x19, 0x05, 0x35, 0x07, 0x80, 0x09, 0x05, 0x0b, 0x5b, 0x0c, + 0x87, 0x0c, 0x24, 0x0b, 0x46, 0x0a, 0xe8, 0x0a, 0x86, 0x09, 0x6b, 0x07, 0x5d, 0x08, 0x10, 0x07, + 0xf7, 0x04, 0x49, 0x03, 0x5c, 0x00, 0x04, 0xfe, 0x8c, 0xfb, 0x0c, 0xfa, 0x7c, 0xf7, 0x55, 0xf6, + 0x9f, 0xf6, 0x3c, 0xf5, 0x0e, 0xf5, 0x4a, 0xf6, 0x45, 0xf8, 0xe9, 0xf9, 0xfe, 0xf9, 0x27, 0xfb, + 0xf9, 0xfb, 0x3c, 0xfd, 0x6c, 0x00, 0x05, 0x01, 0xf2, 0xfe, 0xb2, 0xfe, 0x54, 0xff, 0xb9, 0x00, + 0x1c, 0x01, 0x38, 0x02, 0x08, 0x03, 0x93, 0x02, 0xbd, 0x01, 0x50, 0xff, 0x0a, 0xfe, 0x82, 0xfd, + 0x0c, 0xfd, 0xe8, 0xfd, 0x69, 0xfe, 0x1d, 0xff, 0x57, 0xfc, 0xa2, 0xfc, 0x21, 0xfe, 0x35, 0xfd, + 0x35, 0xff, 0x19, 0x01, 0xb3, 0x00, 0xde, 0x03, 0x6e, 0x05, 0x5c, 0x07, 0xbf, 0x09, 0x27, 0x07, + 0x44, 0x06, 0xa1, 0x07, 0xf5, 0x06, 0x93, 0x06, 0x26, 0x07, 0x8d, 0x06, 0x1d, 0x05, 0x0a, 0x04, + 0xa5, 0x02, 0xd5, 0x00, 0xc3, 0xfd, 0x3b, 0xfe, 0x17, 0xfd, 0x6d, 0xfa, 0xd4, 0xfa, 0xbd, 0xf8, + 0xc4, 0xf5, 0xd2, 0xf5, 0x69, 0xf5, 0x9d, 0xf4, 0x79, 0xf7, 0x6a, 0xfa, 0x95, 0xfb, 0x35, 0xfc, + 0xba, 0xfc, 0x4a, 0xfd, 0xae, 0xfe, 0x3b, 0x02, 0x47, 0x05, 0xa2, 0x06, 0xa5, 0x08, 0xbb, 0x08, + 0x8a, 0x06, 0x30, 0x0a, 0x61, 0x0b, 0x22, 0x09, 0x37, 0x08, 0x18, 0x06, 0x5a, 0x04, 0xd8, 0x03, + 0x49, 0x04, 0xe2, 0x02, 0xb3, 0xff, 0xcb, 0xfd, 0x2d, 0xfa, 0x60, 0xf9, 0x98, 0xf8, 0x34, 0xf6, + 0xee, 0xf6, 0x97, 0xf7, 0x93, 0xf7, 0x04, 0xf9, 0x3e, 0xfa, 0x50, 0xfc, 0x9f, 0xfb, 0xed, 0xfc, + 0x11, 0xff, 0xad, 0xfe, 0x31, 0x01, 0x4b, 0x02, 0x2d, 0x01, 0x2d, 0x03, 0x9b, 0x03, 0x5a, 0x04, + 0xf2, 0x06, 0xe9, 0x05, 0x03, 0x05, 0x96, 0x03, 0x14, 0x00, 0xac, 0x00, 0x7c, 0x00, 0x78, 0x01, + 0x28, 0x03, 0xd2, 0x00, 0x56, 0x01, 0x65, 0xff, 0x62, 0xfe, 0x3f, 0x00, 0xe6, 0xfd, 0x97, 0x00, + 0xa1, 0x02, 0x28, 0x00, 0xb0, 0x00, 0x97, 0xff, 0x22, 0xff, 0xc6, 0xfe, 0xcb, 0xfc, 0x04, 0xfe, + 0x81, 0xff, 0xe3, 0x01, 0x9c, 0x05, 0xce, 0x06, 0x51, 0x07, 0xf6, 0x05, 0x7d, 0x03, 0xfc, 0x02, + 0xd9, 0x00, 0xf0, 0xff, 0xed, 0x00, 0x5e, 0x02, 0xd5, 0x00, 0x3a, 0xfc, 0x3e, 0xfc, 0xed, 0xf9, + 0x44, 0xf7, 0x4d, 0xf6, 0x3f, 0xf6, 0x3c, 0xf6, 0x9f, 0xfa, 0xa0, 0xfd, 0x8e, 0xfe, 0xbf, 0xfc, + 0x4a, 0xfd, 0xd3, 0xfc, 0xf5, 0xfd, 0xff, 0xff, 0x2b, 0x00, 0x4c, 0xfe, 0x32, 0xfc, 0x20, 0xfd, + 0xd5, 0xfd, 0x3b, 0xfd, 0x5d, 0xfb, 0x0d, 0xfa, 0x85, 0xfa, 0xe5, 0xf9, 0xa2, 0xfa, 0x72, 0xfc, + 0xed, 0xfb, 0x88, 0xfa, 0xa4, 0xfb, 0xe7, 0xfc, 0x0e, 0x01, 0x83, 0x03, 0x53, 0x04, 0x19, 0x04, + 0x9a, 0x03, 0xa7, 0x05, 0xfb, 0x05, 0x6e, 0x07, 0x17, 0x0b, 0x13, 0x0b, 0x2e, 0x10, 0xda, 0x11, + 0x48, 0x12, 0x7a, 0x13, 0x6f, 0x10, 0xe5, 0x10, 0xd2, 0x0e, 0xad, 0x0c, 0x26, 0x0e, 0xca, 0x0c, + 0x12, 0x09, 0xee, 0x05, 0x4c, 0x03, 0x05, 0x02, 0x84, 0x00, 0x05, 0xff, 0xe8, 0xfb, 0x99, 0xf9, + 0xaf, 0xf9, 0x0a, 0xf6, 0x71, 0xf2, 0x86, 0xf0, 0x9d, 0xf0, 0xb9, 0xed, 0xd7, 0xeb, 0x88, 0xed, + 0xde, 0xee, 0x4d, 0xf0, 0x74, 0xf0, 0x86, 0xf0, 0xa1, 0xf3, 0xf6, 0xf7, 0x3e, 0xfd, 0x80, 0xff, + 0x80, 0x00, 0xa1, 0x01, 0xea, 0xff, 0x7f, 0xfe, 0xcd, 0xfa, 0x05, 0xf6, 0x96, 0xf3, 0x4f, 0xf1, + 0xe1, 0xef, 0xe9, 0xed, 0x83, 0xee, 0x44, 0xf1, 0x81, 0xf3, 0x4e, 0xf5, 0xc4, 0xf4, 0x42, 0xf5, + 0x69, 0xfa, 0xd9, 0xfb, 0xf3, 0xfd, 0x7a, 0xff, 0x4e, 0x02, 0x49, 0x06, 0x3c, 0x06, 0xbf, 0x08, + 0xba, 0x0d, 0xa7, 0x11, 0xc1, 0x14, 0x5c, 0x19, 0xb6, 0x1f, 0xf8, 0x21, 0x72, 0x26, 0x8a, 0x29, + 0x72, 0x28, 0x0e, 0x28, 0xf9, 0x24, 0xc9, 0x20, 0xa3, 0x1c, 0x6e, 0x16, 0x44, 0x14, 0xcf, 0x0f, + 0x8f, 0x08, 0x59, 0x04, 0xfb, 0xff, 0x60, 0xfe, 0xbc, 0xfc, 0xed, 0xfb, 0xde, 0xf8, 0xe4, 0xf2, + 0x1e, 0xf3, 0x84, 0xf2, 0x2f, 0xf1, 0xb3, 0xef, 0x9e, 0xf0, 0xd2, 0xf0, 0x76, 0xeb, 0x64, 0xeb, + 0x64, 0xee, 0xb9, 0xef, 0x7b, 0xef, 0x52, 0xf1, 0x0e, 0xf8, 0xa6, 0xfd, 0xba, 0x01, 0xef, 0x03, + 0x74, 0x01, 0x59, 0x03, 0xe7, 0x04, 0x5f, 0x03, 0x8d, 0x01, 0xc9, 0xfb, 0x97, 0xf5, 0x79, 0xf2, + 0xb6, 0xee, 0x09, 0xed, 0xf1, 0xe9, 0xb1, 0xeb, 0x42, 0xee, 0xc6, 0xf2, 0xc9, 0xf6, 0xbb, 0xf7, + 0xaf, 0xfa, 0x1f, 0xfe, 0x3c, 0xfe, 0x86, 0xff, 0x36, 0xff, 0x8f, 0x02, 0x0a, 0x02, 0xdc, 0xff, + 0xc7, 0x02, 0x67, 0x06, 0xa4, 0x06, 0xff, 0x08, 0x8e, 0x0d, 0xb6, 0x12, 0x70, 0x15, 0x51, 0x1a, + 0x4b, 0x19, 0xef, 0x14, 0x29, 0x10, 0xa3, 0x09, 0x80, 0x04, 0x49, 0xfe, 0x26, 0xf9, 0x6a, 0xfa, + 0xb2, 0xf9, 0xf5, 0xf9, 0x02, 0xf9, 0x23, 0xf7, 0x2f, 0xf5, 0x90, 0xf5, 0x55, 0xf5, 0x33, 0xf2, + 0xe5, 0xef, 0x51, 0xf2, 0x72, 0xf0, 0x0c, 0xf1, 0x10, 0xf1, 0x15, 0xf1, 0x81, 0xf1, 0xd2, 0xf1, + 0xaf, 0xf6, 0x5f, 0xfa, 0x5c, 0xfd, 0x05, 0xff, 0x9e, 0x01, 0x53, 0x07, 0x45, 0x09, 0x06, 0x0d, + 0xba, 0x0d, 0x86, 0x0d, 0x98, 0x10, 0x47, 0x0e, 0x5e, 0x0d, 0x05, 0x0b, 0x69, 0x06, 0xb2, 0x06, + 0xf9, 0x05, 0x88, 0x05, 0xcb, 0x04, 0x03, 0x03, 0xb1, 0x02, 0x46, 0x02, 0x5e, 0x01, 0x2d, 0xff, + 0x2d, 0xfc, 0x96, 0xfe, 0x07, 0x00, 0x73, 0x02, 0x74, 0x00, 0x76, 0xff, 0x44, 0xfd, 0x23, 0xf9, + 0x25, 0xf8, 0xb4, 0xfa, 0x49, 0xfc, 0xa9, 0xfd, 0xf7, 0x00, 0x90, 0x06, 0x81, 0x0b, 0x5a, 0x12, + 0x8a, 0x15, 0x17, 0x14, 0xbb, 0x12, 0xd0, 0x0f, 0x32, 0x0b, 0xc5, 0x05, 0x6d, 0xff, 0x5e, 0xfc, + 0x17, 0xfa, 0x6a, 0xf7, 0x44, 0xf7, 0x23, 0xf5, 0x88, 0xf5, 0xc6, 0xf6, 0x0c, 0xf7, 0x97, 0xf5, + 0x44, 0xef, 0xec, 0xed, 0x98, 0xea, 0xea, 0xe9, 0x42, 0xe8, 0xe4, 0xe5, 0x58, 0xe8, 0xe7, 0xe8, + 0x50, 0xea, 0x36, 0xef, 0xc0, 0xf3, 0x4b, 0xf9, 0x51, 0xfe, 0xf3, 0x06, 0xc1, 0x10, 0x22, 0x16, + 0x66, 0x1a, 0xea, 0x1a, 0x25, 0x1b, 0xab, 0x1c, 0x81, 0x1b, 0x20, 0x1a, 0x30, 0x16, 0x26, 0x14, + 0x87, 0x14, 0x86, 0x13, 0x4b, 0x12, 0xec, 0x0e, 0x17, 0x0c, 0x65, 0x08, 0x34, 0x06, 0x17, 0x02, + 0x16, 0xfb, 0x03, 0xf8, 0xd8, 0xf5, 0x6e, 0xf6, 0x26, 0xf6, 0xab, 0xf4, 0x78, 0xf7, 0xef, 0xf6, + 0xa9, 0xf4, 0xc2, 0xf5, 0xf0, 0xf5, 0x7f, 0xf7, 0x37, 0xf7, 0xe8, 0xfb, 0x09, 0x02, 0xc8, 0x05, + 0x0b, 0x0e, 0x93, 0x10, 0x2a, 0x12, 0x61, 0x14, 0xa6, 0x11, 0x3a, 0x10, 0x1d, 0x0b, 0xed, 0x08, + 0x64, 0x07, 0xaf, 0x05, 0xa3, 0x06, 0x07, 0x03, 0x2f, 0x00, 0x5a, 0x00, 0x2c, 0x01, 0xac, 0x01, + 0x4b, 0xff, 0xfc, 0xfe, 0x7a, 0xff, 0xfd, 0xff, 0xe5, 0x01, 0xa8, 0xfe, 0x3d, 0xfe, 0xa9, 0xfd, + 0x1b, 0xfd, 0xc4, 0xff, 0xe1, 0x01, 0x5a, 0x04, 0xd1, 0x04, 0x06, 0x07, 0x20, 0x0c, 0xce, 0x0f, + 0x1e, 0x12, 0xc6, 0x13, 0x4a, 0x11, 0x65, 0x0e, 0x38, 0x0a, 0x63, 0x03, 0x45, 0xfc, 0x5c, 0xf3, + 0x5c, 0xee, 0xe0, 0xea, 0x3e, 0xe9, 0x23, 0xe8, 0xd6, 0xe6, 0x27, 0xe4, 0xa4, 0xe1, 0x2c, 0xe0, + 0x08, 0xdd, 0xd7, 0xd8, 0x5b, 0xd8, 0xdf, 0xd8, 0x3d, 0xde, 0xda, 0xdf, 0x02, 0xe2, 0x82, 0xe4, + 0x0f, 0xe5, 0x4b, 0xe8, 0xcb, 0xec, 0x0d, 0xf2, 0x5e, 0xf6, 0x0f, 0xf8, 0xe0, 0xfe, 0xfe, 0x04, + 0xf6, 0x0b, 0x1b, 0x11, 0xd6, 0x11, 0x57, 0x14, 0xa0, 0x15, 0x73, 0x15, 0x8f, 0x15, 0x51, 0x12, + 0x87, 0x11, 0x72, 0x10, 0x30, 0x0e, 0x96, 0x0c, 0x57, 0x0b, 0x4f, 0x0a, 0xab, 0x08, 0x03, 0x08, + 0x84, 0x06, 0x45, 0x03, 0xe0, 0x02, 0x44, 0x02, 0x37, 0x06, 0x78, 0x04, 0x55, 0x04, 0x32, 0x05, + 0x06, 0x04, 0x58, 0x02, 0xf0, 0xff, 0x21, 0xff, 0x4d, 0xff, 0xa8, 0xfd, 0xd9, 0x01, 0xaa, 0x07, + 0xe9, 0x0b, 0x85, 0x10, 0xb2, 0x0f, 0xc7, 0x0f, 0x82, 0x0f, 0xa0, 0x0b, 0x84, 0x08, 0x1e, 0x00, + 0x66, 0xfb, 0x35, 0xf8, 0x1e, 0xf6, 0x04, 0xf4, 0x9f, 0xf1, 0x3c, 0xf0, 0xca, 0xee, 0x80, 0xf0, + 0xbe, 0xf2, 0x6d, 0xef, 0x7d, 0xee, 0x10, 0xeb, 0x26, 0xeb, 0xe3, 0xeb, 0x35, 0xe9, 0x5d, 0xea, + 0x2a, 0xec, 0x88, 0xeb, 0x56, 0xee, 0x69, 0xf1, 0xba, 0xf5, 0x89, 0xf6, 0x33, 0xfb, 0x32, 0x02, + 0x64, 0x08, 0x85, 0x0f, 0x92, 0x13, 0xb7, 0x13, 0xa4, 0x14, 0xe2, 0x13, 0x05, 0x14, 0xd2, 0x10, + 0x5b, 0x0d, 0x00, 0x0d, 0x0b, 0x0d, 0x44, 0x0d, 0xa5, 0x0d, 0xb7, 0x0a, 0x6d, 0x09, 0x58, 0x07, + 0x67, 0x05, 0xf7, 0x00, 0x83, 0xfd, 0x9b, 0xf9, 0xa2, 0xf8, 0x47, 0xfa, 0xb7, 0xf9, 0x70, 0xf9, + 0xc0, 0xfa, 0x3c, 0xfa, 0x67, 0xf9, 0x2a, 0xf8, 0xc0, 0xf9, 0xf3, 0xf7, 0xeb, 0xf7, 0xf4, 0xfc, + 0x7a, 0xff, 0xb6, 0x03, 0x7e, 0x08, 0xc6, 0x09, 0x7d, 0x0c, 0xda, 0x0c, 0xfa, 0x0c, 0xf4, 0x0b, + 0x9a, 0x07, 0xe7, 0x04, 0xc8, 0x03, 0x8c, 0x02, 0xf2, 0x01, 0x65, 0x00, 0x01, 0x00, 0xd2, 0xfd, + 0x59, 0xff, 0xb0, 0xfe, 0xcc, 0xfd, 0x5a, 0xfc, 0x1c, 0xfd, 0xe9, 0x02, 0x98, 0x03, 0x9f, 0x03, + 0xde, 0x04, 0x03, 0x03, 0xca, 0x01, 0xf3, 0x02, 0x28, 0x07, 0xb6, 0x07, 0xa5, 0x09, 0x31, 0x0f, + 0xf8, 0x13, 0x53, 0x1a, 0x1c, 0x1f, 0xc2, 0x1f, 0x57, 0x20, 0xac, 0x1f, 0x84, 0x1d, 0xbc, 0x18, + 0xae, 0x11, 0xd1, 0x0a, 0xdf, 0x04, 0x4b, 0x01, 0x0d, 0xfd, 0xf8, 0xfa, 0x15, 0xfa, 0x74, 0xf7, + 0x62, 0xf5, 0x52, 0xf1, 0x94, 0xec, 0xae, 0xe5, 0x7b, 0xdf, 0xda, 0xe0, 0xaa, 0xe0, 0x81, 0xde, + 0xa3, 0xe0, 0xb5, 0xe0, 0x75, 0xe0, 0xcd, 0xe1, 0x82, 0xe5, 0xff, 0xea, 0x30, 0xec, 0x90, 0xf1, + 0xda, 0xf9, 0x96, 0x00, 0xc8, 0x08, 0xdb, 0x0b, 0x6f, 0x0e, 0xbc, 0x11, 0x7d, 0x12, 0x93, 0x15, + 0x23, 0x13, 0x19, 0x11, 0x7f, 0x11, 0x80, 0x10, 0xd3, 0x0f, 0x89, 0x0f, 0x17, 0x0e, 0x7a, 0x09, + 0x3d, 0x07, 0xcf, 0x06, 0x23, 0x03, 0xaf, 0x00, 0xa5, 0xfd, 0x51, 0xfc, 0x88, 0xfb, 0x91, 0xf9, + 0xcb, 0xf9, 0x90, 0xfa, 0x5b, 0xf9, 0x14, 0xf8, 0x5e, 0xf7, 0x43, 0xf9, 0x8e, 0xf8, 0x06, 0xf9, + 0xc0, 0xfc, 0xfa, 0x00, 0x51, 0x07, 0x01, 0x0c, 0x19, 0x0f, 0xbf, 0x10, 0x41, 0x0e, 0xa7, 0x0c, + 0xcd, 0x07, 0x60, 0x00, 0x7e, 0xfb, 0xcd, 0xf8, 0x4f, 0xf6, 0x39, 0xf3, 0x7b, 0xf0, 0x26, 0xee, + 0x5f, 0xec, 0xca, 0xec, 0x60, 0xeb, 0x19, 0xeb, 0xf4, 0xe7, 0x65, 0xe7, 0x02, 0xeb, 0x02, 0xeb, + 0x3e, 0xeb, 0x3e, 0xed, 0x3a, 0xee, 0xa5, 0xf0, 0x33, 0xf4, 0xf6, 0xf9, 0x4a, 0xfd, 0xc5, 0x00, + 0x47, 0x07, 0xfe, 0x0c, 0x1a, 0x12, 0x94, 0x18, 0xd7, 0x1b, 0x5e, 0x1c, 0x42, 0x1b, 0xaa, 0x1b, + 0x95, 0x17, 0x27, 0x12, 0x37, 0x0e, 0x29, 0x0a, 0x4f, 0x07, 0x7b, 0x05, 0xd4, 0x03, 0xe0, 0x00, + 0xdb, 0xfb, 0x9b, 0xfb, 0x1a, 0xf6, 0x7d, 0xf4, 0xf6, 0xef, 0x4e, 0xec, 0xad, 0xed, 0xe0, 0xed, + 0xa2, 0xee, 0x12, 0xf0, 0xe8, 0xf1, 0x1e, 0xf3, 0xa6, 0xf1, 0x99, 0xf6, 0xf5, 0xf8, 0x28, 0xf7, + 0xd8, 0xf9, 0x7d, 0xfe, 0xdf, 0x02, 0xc6, 0x08, 0xf3, 0x09, 0x2c, 0x0c, 0x98, 0x0c, 0xb4, 0x0c, + 0xb2, 0x0c, 0x0c, 0x09, 0xdf, 0x04, 0x89, 0x01, 0x4e, 0xfd, 0x47, 0xfb, 0xba, 0xf8, 0x23, 0xf9, + 0x0e, 0xf6, 0xb1, 0xf6, 0x72, 0xf6, 0x68, 0xf6, 0x2d, 0xf6, 0xcb, 0xf4, 0x65, 0xf8, 0xe8, 0xfb, + 0x67, 0xfc, 0xb8, 0x01, 0x97, 0x03, 0x70, 0x03, 0xce, 0x02, 0x3b, 0x04, 0xb9, 0x06, 0xca, 0x07, + 0x78, 0x0b, 0xe1, 0x10, 0xd3, 0x15, 0xf3, 0x1c, 0x46, 0x1f, 0xf8, 0x20, 0x92, 0x21, 0xd5, 0x1f, + 0x04, 0x1e, 0x8d, 0x19, 0x4a, 0x13, 0xb6, 0x0d, 0xb0, 0x08, 0xe4, 0x05, 0x30, 0x02, 0x33, 0x01, + 0xcd, 0xfe, 0x63, 0xff, 0x61, 0xfe, 0x21, 0xfd, 0x96, 0xfb, 0x22, 0xf6, 0xf5, 0xf2, 0x5e, 0xf2, + 0x63, 0xef, 0x3e, 0xee, 0x8e, 0xee, 0xb9, 0xee, 0x92, 0xec, 0xc5, 0xec, 0xc0, 0xf0, 0x64, 0xf1, + 0x89, 0xf2, 0xd4, 0xf6, 0xa2, 0xfa, 0x8f, 0x01, 0x82, 0x07, 0x60, 0x0a, 0x70, 0x0b, 0x41, 0x0d, + 0x9b, 0x0d, 0x6b, 0x0d, 0xf6, 0x09, 0x30, 0x08, 0xf0, 0x08, 0x9a, 0x09, 0xe2, 0x09, 0x0d, 0x0c, + 0xc2, 0x0a, 0xfb, 0x09, 0x1d, 0x0a, 0xfe, 0x07, 0x71, 0x07, 0x99, 0x03, 0x96, 0x00, 0x4d, 0x01, + 0x46, 0x00, 0x51, 0x00, 0x27, 0xff, 0x55, 0xff, 0xe7, 0xfc, 0xe1, 0xf9, 0x5a, 0xfb, 0x0e, 0xfb, + 0xa3, 0xfa, 0x50, 0xfb, 0x4b, 0xfb, 0x50, 0xfe, 0x43, 0x01, 0xeb, 0x04, 0x7e, 0x08, 0xf7, 0x07, + 0x33, 0x08, 0x2c, 0x07, 0x03, 0x03, 0xc9, 0xfe, 0x53, 0xf9, 0xa7, 0xf6, 0x96, 0xf3, 0x32, 0xf2, + 0x40, 0xf1, 0x12, 0xee, 0x29, 0xed, 0x94, 0xe9, 0x9b, 0xe9, 0xb8, 0xe8, 0x61, 0xe5, 0x91, 0xe6, + 0x94, 0xe7, 0xdb, 0xe7, 0x1d, 0xe9, 0x22, 0xe9, 0x91, 0xe9, 0x71, 0xe8, 0x53, 0xec, 0x84, 0xf1, + 0x04, 0xf3, 0x1e, 0xf9, 0x20, 0x00, 0x9a, 0x06, 0x9f, 0x10, 0x7e, 0x17, 0x74, 0x1c, 0x44, 0x20, + 0x30, 0x22, 0x3d, 0x23, 0x5b, 0x20, 0xd7, 0x1c, 0x1c, 0x19, 0xa9, 0x14, 0xf6, 0x10, 0x8c, 0x0d, + 0x28, 0x0c, 0xc7, 0x08, 0xbb, 0x07, 0xf1, 0x02, 0x3c, 0xff, 0xa3, 0xfb, 0x4f, 0xf4, 0x1d, 0xf0, + 0xee, 0xed, 0x3e, 0xea, 0x4a, 0xe8, 0x52, 0xe8, 0xe8, 0xe8, 0x0b, 0xe7, 0x89, 0xe7, 0x51, 0xeb, + 0x87, 0xed, 0x77, 0xef, 0x5d, 0xf3, 0x53, 0xf8, 0x40, 0xff, 0x5a, 0x04, 0x8f, 0x08, 0x55, 0x0a, + 0xab, 0x0b, 0xcd, 0x0c, 0x13, 0x0d, 0xe7, 0x09, 0xa7, 0x06, 0x8b, 0x03, 0xd3, 0x00, 0x5a, 0xff, + 0x3a, 0xff, 0xa2, 0xfb, 0x13, 0xfa, 0x10, 0xf7, 0x33, 0xf6, 0x51, 0xf6, 0xf4, 0xf3, 0xf8, 0xf2, + 0x77, 0xf3, 0x43, 0xf4, 0x5f, 0xf6, 0xbc, 0xf8, 0x23, 0xfd, 0x2c, 0xfc, 0x63, 0xfc, 0xf5, 0xff, + 0x7c, 0x02, 0xd2, 0x04, 0xff, 0x08, 0xf0, 0x0d, 0x22, 0x15, 0xd5, 0x1a, 0x2b, 0x21, 0xef, 0x23, + 0x2b, 0x25, 0x0f, 0x24, 0x75, 0x22, 0x94, 0x1d, 0xb4, 0x17, 0xa6, 0x12, 0x4d, 0x0f, 0xff, 0x08, + 0x2d, 0x06, 0x00, 0x02, 0xc8, 0x00, 0x94, 0xff, 0xe6, 0xfc, 0xde, 0xfd, 0x79, 0xfb, 0x71, 0xf6, + 0x32, 0xf6, 0xc9, 0xf3, 0x4f, 0xf3, 0x83, 0xf2, 0xda, 0xf3, 0x5b, 0xf4, 0x4e, 0xf2, 0x46, 0xf5, + 0x5a, 0xf9, 0x31, 0xfb, 0x0b, 0xff, 0x6b, 0x00, 0x8c, 0x04, 0x29, 0x09, 0x9d, 0x0e, 0x1b, 0x11, + 0x53, 0x10, 0xd0, 0x0f, 0x16, 0x10, 0xf5, 0x0b, 0xbe, 0x08, 0xa5, 0x04, 0x81, 0x02, 0x18, 0x00, + 0x6f, 0x00, 0x44, 0x01, 0x8e, 0x00, 0x41, 0x00, 0x18, 0xfd, 0xad, 0xfc, 0xd0, 0xfc, 0xef, 0xf8, + 0xd7, 0xf8, 0x08, 0xfb, 0xd0, 0xfc, 0x9d, 0xfc, 0xf3, 0xfe, 0x75, 0x00, 0x8e, 0xfe, 0x5b, 0xfe, + 0x56, 0x01, 0x8e, 0x00, 0x9f, 0x01, 0xfc, 0x02, 0x25, 0x05, 0x5f, 0x08, 0x2d, 0x0b, 0x32, 0x0e, + 0xc1, 0x0f, 0x91, 0x0f, 0x9a, 0x10, 0x78, 0x0e, 0x61, 0x0a, 0xcb, 0x04, 0x62, 0x00, 0x66, 0xfa, + 0xcc, 0xf6, 0x12, 0xf5, 0xf5, 0xf2, 0xb7, 0xf1, 0x15, 0xef, 0x74, 0xed, 0xe2, 0xed, 0xc4, 0xeb, + 0x17, 0xeb, 0x1c, 0xeb, 0x31, 0xeb, 0x47, 0xeb, 0x7c, 0xed, 0x32, 0xef, 0x3a, 0xec, 0x73, 0xea, + 0x82, 0xec, 0xc8, 0xee, 0x70, 0xf1, 0x5c, 0xf4, 0xdd, 0xf9, 0x93, 0x00, 0x46, 0x07, 0x96, 0x0d, + 0x22, 0x11, 0x56, 0x13, 0xe8, 0x14, 0x3d, 0x15, 0xd8, 0x12, 0x46, 0x0e, 0xc5, 0x0b, 0x69, 0x08, + 0xde, 0x05, 0xdb, 0x05, 0x10, 0x04, 0x86, 0x04, 0x91, 0x02, 0x5c, 0x00, 0xb0, 0x01, 0x1c, 0xfe, + 0xf7, 0xf9, 0x1c, 0xf7, 0xdb, 0xf3, 0x6e, 0xf0, 0x8c, 0xed, 0x0f, 0xef, 0xf9, 0xec, 0xf9, 0xe8, + 0xfa, 0xea, 0x6d, 0xec, 0x87, 0xed, 0xfe, 0xef, 0x91, 0xf1, 0x0a, 0xf5, 0x3f, 0xf9, 0x9c, 0xff, + 0xf3, 0x02, 0x6d, 0x04, 0x01, 0x06, 0xc8, 0x06, 0x6b, 0x06, 0x34, 0x05, 0xb7, 0x03, 0xb7, 0x03, + 0xef, 0x01, 0xa0, 0x02, 0x90, 0x02, 0xe1, 0x01, 0xdd, 0x02, 0x4e, 0x00, 0xc9, 0x00, 0xbd, 0x00, + 0x0a, 0xfe, 0x90, 0xfd, 0x2d, 0xfd, 0x52, 0xfe, 0x15, 0xfe, 0xd5, 0x01, 0x59, 0x04, 0x61, 0x02, + 0xcd, 0x02, 0x46, 0x05, 0x50, 0x06, 0x9c, 0x07, 0x19, 0x08, 0x94, 0x0a, 0xe1, 0x0e, 0xb1, 0x14, + 0xa4, 0x19, 0x6b, 0x1b, 0x41, 0x1c, 0x3b, 0x1d, 0x17, 0x1b, 0x94, 0x17, 0x88, 0x12, 0x04, 0x0f, + 0x4a, 0x09, 0xa0, 0x05, 0x70, 0x02, 0xa9, 0xff, 0xa4, 0xfc, 0xc1, 0xf7, 0xcd, 0xf5, 0x76, 0xf5, + 0x34, 0xf2, 0xe2, 0xef, 0xfc, 0xee, 0x5d, 0xee, 0xae, 0xeb, 0x4a, 0xeb, 0x9c, 0xeb, 0x4e, 0xe9, + 0xad, 0xe7, 0x2b, 0xea, 0x88, 0xec, 0xff, 0xf0, 0xde, 0xf4, 0xe0, 0xf9, 0x75, 0xff, 0xb7, 0x06, + 0x57, 0x0d, 0x37, 0x12, 0x3e, 0x15, 0x07, 0x18, 0x9a, 0x18, 0x9f, 0x17, 0x70, 0x14, 0x83, 0x12, + 0x9c, 0x0d, 0x10, 0x0c, 0x97, 0x0a, 0x47, 0x0a, 0x42, 0x0b, 0xd7, 0x08, 0xd5, 0x06, 0x7b, 0x06, + 0xe8, 0x02, 0x83, 0xff, 0x62, 0xfc, 0x2b, 0xfb, 0x4f, 0xf8, 0x37, 0xf8, 0x75, 0xfa, 0x1a, 0xf8, + 0x7c, 0xf5, 0x1f, 0xf7, 0xda, 0xf8, 0xf1, 0xfb, 0x2b, 0xfc, 0x2e, 0x00, 0xc0, 0x04, 0x4e, 0x08, + 0xd3, 0x0c, 0x78, 0x0f, 0x1e, 0x10, 0xfd, 0x11, 0x2b, 0x12, 0x6e, 0x11, 0xc0, 0x0c, 0xe3, 0x09, + 0xfe, 0x03, 0x35, 0xff, 0x63, 0xfc, 0xc2, 0xf8, 0x7e, 0xf6, 0x2a, 0xf3, 0x9b, 0xee, 0x2d, 0xee, + 0x44, 0xeb, 0x55, 0xe9, 0x7a, 0xe7, 0x1b, 0xe6, 0x6d, 0xe5, 0x59, 0xe5, 0xc3, 0xe8, 0x67, 0xea, + 0x33, 0xe8, 0xbb, 0xe8, 0x07, 0xea, 0x85, 0xee, 0x8c, 0xf1, 0x55, 0xf6, 0x7b, 0xfc, 0x88, 0x02, + 0x36, 0x0b, 0xea, 0x13, 0xc7, 0x17, 0xf7, 0x1a, 0xa9, 0x1b, 0xaf, 0x1b, 0x51, 0x17, 0x0f, 0x14, + 0x77, 0x11, 0xe4, 0x0c, 0xee, 0x09, 0x46, 0x07, 0xb1, 0x04, 0x33, 0x04, 0x05, 0x01, 0xae, 0x00, + 0x6b, 0xff, 0x5e, 0xfc, 0x27, 0xf9, 0x99, 0xf7, 0x88, 0xf5, 0xfa, 0xf1, 0x02, 0xf2, 0xea, 0xf2, + 0xe7, 0xef, 0xde, 0xef, 0xcd, 0xf2, 0xaa, 0xf5, 0x00, 0xf8, 0xba, 0xf9, 0x79, 0xfb, 0xcf, 0xfe, + 0xf9, 0x02, 0x40, 0x07, 0xd4, 0x07, 0xfb, 0x06, 0x9e, 0x06, 0x49, 0x05, 0xd5, 0x00, 0x52, 0xfe, + 0xa6, 0xfa, 0x23, 0xf6, 0xc2, 0xf4, 0x3d, 0xf3, 0xdd, 0xf2, 0x28, 0xf3, 0xd0, 0xef, 0xca, 0xee, + 0x73, 0xef, 0x24, 0xf0, 0x3f, 0xef, 0xd8, 0xf0, 0x6e, 0xf4, 0xcc, 0xf4, 0x7c, 0xf8, 0x70, 0xfe, + 0x71, 0x00, 0x4b, 0x02, 0x4b, 0x05, 0x08, 0x09, 0x7c, 0x0c, 0x0d, 0x0e, 0x2a, 0x11, 0x1d, 0x13, + 0xd9, 0x16, 0x90, 0x1d, 0x3b, 0x20, 0x9d, 0x22, 0xe5, 0x22, 0x7f, 0x22, 0x18, 0x20, 0x4f, 0x1a, + 0x4b, 0x16, 0x58, 0x0f, 0x75, 0x09, 0x6a, 0x05, 0xa7, 0x01, 0x4c, 0x00, 0x26, 0xfc, 0xa3, 0xf8, + 0x14, 0xf8, 0xdf, 0xf6, 0xd5, 0xf5, 0x36, 0xf4, 0x1f, 0xf4, 0x44, 0xf2, 0xbc, 0xf0, 0x52, 0xf3, + 0x83, 0xf1, 0x31, 0xee, 0x10, 0xed, 0xed, 0xec, 0x9a, 0xef, 0xa5, 0xf0, 0xfb, 0xf3, 0xca, 0xf8, + 0xb5, 0xfc, 0x65, 0x02, 0x23, 0x06, 0x08, 0x09, 0x50, 0x0b, 0x51, 0x0c, 0xbd, 0x0c, 0x3e, 0x09, + 0xc2, 0x07, 0x46, 0x05, 0xd9, 0x03, 0x88, 0x03, 0x06, 0x03, 0x7d, 0x05, 0x3e, 0x07, 0x07, 0x07, + 0xe5, 0x09, 0x6f, 0x0a, 0x6c, 0x09, 0x64, 0x07, 0x15, 0x05, 0x6a, 0x02, 0x7f, 0x00, 0x28, 0x02, + 0x8d, 0x02, 0xef, 0xfe, 0x66, 0xfc, 0xb9, 0xfb, 0x3d, 0xfd, 0x46, 0xfd, 0x40, 0xfd, 0xe7, 0xfd, + 0xda, 0xfe, 0x7a, 0x02, 0x5b, 0x06, 0x10, 0x07, 0xea, 0x06, 0x50, 0x06, 0x12, 0x07, 0x48, 0x05, + 0x35, 0x04, 0x0c, 0x03, 0xde, 0x00, 0x70, 0xfe, 0x91, 0xfc, 0x32, 0xfc, 0x2b, 0xfc, 0x6b, 0xfa, + 0xa3, 0xf9, 0x3f, 0xf8, 0xfa, 0xf7, 0xac, 0xf4, 0xbb, 0xf3, 0xfb, 0xf3, 0x4a, 0xf1, 0x1e, 0xf1, + 0x63, 0xf3, 0x25, 0xf2, 0x9c, 0xf1, 0x3d, 0xf1, 0x2f, 0xf3, 0x3a, 0xf3, 0xfa, 0xf3, 0xa6, 0xf6, + 0xbd, 0xf9, 0x1d, 0xff, 0x4e, 0x07, 0xa0, 0x0c, 0x3e, 0x11, 0x71, 0x13, 0x4e, 0x17, 0x39, 0x16, + 0x9e, 0x14, 0xf7, 0x12, 0x6f, 0x0f, 0x43, 0x0d, 0xd6, 0x0b, 0x55, 0x0b, 0x8b, 0x0b, 0x68, 0x08, + 0x2a, 0x05, 0x30, 0x03, 0xf9, 0x02, 0x59, 0xff, 0x83, 0xfc, 0x41, 0xfb, 0x3d, 0xf7, 0x51, 0xf4, + 0xfe, 0xf3, 0x7f, 0xf0, 0x9c, 0xed, 0xfa, 0xe9, 0xdb, 0xea, 0xfd, 0xec, 0x51, 0xee, 0x16, 0xf2, + 0x88, 0xf5, 0x0a, 0xf9, 0x01, 0x00, 0x30, 0x04, 0x63, 0x08, 0x93, 0x09, 0x82, 0x0c, 0xe1, 0x0b, + 0x33, 0x09, 0xac, 0x07, 0xea, 0x04, 0xaf, 0x01, 0x79, 0xff, 0x69, 0xfd, 0x87, 0xfe, 0x19, 0xfd, + 0x4d, 0xfa, 0x9a, 0xf8, 0xf1, 0xf6, 0x05, 0xf4, 0xbe, 0xf1, 0x6a, 0xf1, 0x93, 0xef, 0x8d, 0xed, + 0x05, 0xf1, 0xde, 0xf1, 0xb1, 0xf1, 0xa6, 0xf2, 0xdb, 0xf5, 0x72, 0xfa, 0xb4, 0xfe, 0x22, 0x03, + 0x51, 0x07, 0x8f, 0x0a, 0x93, 0x11, 0x79, 0x16, 0x2f, 0x1b, 0x4a, 0x1e, 0xda, 0x21, 0x87, 0x23, + 0x5a, 0x21, 0xc0, 0x1e, 0x8c, 0x1a, 0xda, 0x15, 0xa7, 0x11, 0x96, 0x0c, 0xd6, 0x09, 0x28, 0x06, + 0x27, 0x01, 0xc5, 0xfd, 0xec, 0xfb, 0x78, 0xf8, 0xc9, 0xf3, 0x2f, 0xf1, 0x28, 0xee, 0xf1, 0xea, + 0x21, 0xec, 0x08, 0xed, 0x53, 0xec, 0x90, 0xe9, 0x20, 0xe8, 0xf0, 0xe9, 0xd8, 0xeb, 0x53, 0xed, + 0x26, 0xf1, 0x91, 0xf4, 0x7e, 0xfb, 0x94, 0x03, 0xb8, 0x0a, 0x18, 0x0e, 0x24, 0x10, 0xfe, 0x12, + 0x69, 0x11, 0x65, 0x0f, 0x3f, 0x0e, 0x37, 0x0b, 0xff, 0x07, 0xe8, 0x04, 0x0e, 0x05, 0x47, 0x05, + 0x2d, 0x05, 0x70, 0x05, 0x9c, 0x05, 0x4b, 0x06, 0xe0, 0x04, 0x63, 0x04, 0x23, 0x04, 0xd3, 0x00, + 0xa2, 0x00, 0xbf, 0x00, 0x90, 0x00, 0x07, 0x00, 0x91, 0xff, 0xf3, 0x00, 0x0f, 0x02, 0xda, 0x02, + 0x35, 0x04, 0x46, 0x04, 0x46, 0x08, 0x67, 0x0c, 0x75, 0x0f, 0x8d, 0x10, 0x67, 0x0e, 0x67, 0x0e, + 0x6b, 0x0a, 0xb1, 0x05, 0x24, 0x02, 0x19, 0xfd, 0x19, 0xfa, 0xd5, 0xf5, 0xe1, 0xf3, 0x0f, 0xf3, + 0xa5, 0xef, 0x8a, 0xeb, 0xe5, 0xe8, 0x58, 0xe9, 0xe9, 0xe7, 0x04, 0xe7, 0x7f, 0xe8, 0x45, 0xe7, + 0x8d, 0xe7, 0x70, 0xea, 0x49, 0xec, 0x7f, 0xed, 0xd9, 0xed, 0x16, 0xf1, 0xae, 0xf4, 0x33, 0xf7, + 0x8a, 0xfb, 0xa6, 0xfe, 0x0d, 0x03, 0x3b, 0x0a, 0x7c, 0x10, 0x35, 0x16, 0xdc, 0x19, 0x9c, 0x1f, + 0xab, 0x21, 0xa7, 0x20, 0xfe, 0x1f, 0x7a, 0x1c, 0xdf, 0x17, 0xdc, 0x13, 0x05, 0x11, 0xc9, 0x0f, + 0xd8, 0x0d, 0xa8, 0x0a, 0x11, 0x08, 0x11, 0x07, 0xf8, 0x04, 0x32, 0x01, 0xce, 0xff, 0x8f, 0xfd, + 0x6d, 0xf9, 0x20, 0xf9, 0x31, 0xf8, 0xdb, 0xf5, 0x7a, 0xf1, 0xf4, 0xee, 0xb0, 0xef, 0xc7, 0xf0, + 0x84, 0xf2, 0x80, 0xf4, 0x22, 0xf6, 0x76, 0xfa, 0xbd, 0xfe, 0x8e, 0x03, 0xac, 0x05, 0x55, 0x07, + 0xd7, 0x07, 0xc4, 0x05, 0x3d, 0x03, 0x52, 0x00, 0x54, 0xfd, 0x37, 0xfa, 0x61, 0xf6, 0x9a, 0xf6, + 0xd1, 0xf6, 0xfd, 0xf5, 0x23, 0xf5, 0x30, 0xf6, 0x02, 0xf5, 0x15, 0xf2, 0x21, 0xf1, 0x62, 0xef, + 0x88, 0xed, 0x4c, 0xf0, 0x14, 0xf2, 0x08, 0xf4, 0x7a, 0xf3, 0x6c, 0xf4, 0x6e, 0xf7, 0x25, 0xfa, + 0xa1, 0xfd, 0x5a, 0x01, 0xb1, 0x03, 0xc7, 0x09, 0xdf, 0x0f, 0xcd, 0x15, 0x2f, 0x18, 0x95, 0x1a, + 0x92, 0x1c, 0x87, 0x1c, 0xc7, 0x1b, 0x95, 0x19, 0xa3, 0x16, 0x7e, 0x13, 0xcc, 0x0d, 0xf3, 0x0a, + 0x3b, 0x08, 0x1b, 0x06, 0xa6, 0x02, 0xc8, 0xff, 0x90, 0xfe, 0xf9, 0xfa, 0xc9, 0xf8, 0x88, 0xf8, + 0xe8, 0xf4, 0xdb, 0xf2, 0x9e, 0xf1, 0x9b, 0xf2, 0xec, 0xf0, 0xea, 0xee, 0x48, 0xef, 0xad, 0xef, + 0xce, 0xef, 0x8d, 0xf1, 0x82, 0xf1, 0xc8, 0xf5, 0xc7, 0xfb, 0x6c, 0x02, 0x72, 0x06, 0xd6, 0x07, + 0x2a, 0x0b, 0x1e, 0x0b, 0xca, 0x08, 0x98, 0x06, 0x6f, 0x02, 0xdb, 0xff, 0x7c, 0xfc, 0x5a, 0xfc, + 0x54, 0xfd, 0xd9, 0xfc, 0xfb, 0xfa, 0x88, 0xfa, 0x7a, 0xfc, 0x7b, 0xfd, 0x75, 0xfd, 0xf1, 0xfe, + 0xb7, 0xfc, 0xc2, 0xfb, 0x6c, 0xfc, 0x4b, 0xfd, 0x54, 0xfe, 0xf1, 0xfd, 0x94, 0xfe, 0xe3, 0x01, + 0x28, 0x03, 0x95, 0x06, 0xa2, 0x08, 0x14, 0x0b, 0x48, 0x0e, 0x63, 0x12, 0xcd, 0x15, 0x40, 0x17, + 0x0f, 0x19, 0xda, 0x18, 0x2d, 0x15, 0x73, 0x11, 0x4b, 0x0c, 0xdc, 0x07, 0x4e, 0x03, 0xe1, 0xfe, + 0xed, 0xfc, 0x73, 0xfb, 0x9d, 0xf7, 0xc0, 0xf3, 0x42, 0xf1, 0x0b, 0xee, 0xcb, 0xe9, 0x55, 0xe9, + 0x87, 0xe7, 0xd9, 0xe5, 0x58, 0xe6, 0x40, 0xe8, 0x0c, 0xe9, 0x13, 0xe8, 0xbe, 0xe8, 0x7a, 0xec, + 0x25, 0xef, 0xf0, 0xf3, 0xd2, 0xf5, 0xd1, 0xf8, 0xac, 0xfd, 0xd5, 0x03, 0x9e, 0x0a, 0x0f, 0x0f, + 0x9e, 0x13, 0xb7, 0x17, 0x69, 0x19, 0x53, 0x1a, 0x22, 0x19, 0x18, 0x18, 0x1c, 0x15, 0xcf, 0x10, + 0x2d, 0x0e, 0x01, 0x0d, 0xac, 0x0b, 0x11, 0x09, 0x5f, 0x08, 0xae, 0x07, 0x88, 0x03, 0xe2, 0x01, + 0xe8, 0xfe, 0x49, 0xfc, 0xa5, 0xfb, 0xe9, 0xfa, 0xed, 0xfa, 0xb9, 0xf8, 0xca, 0xf5, 0xd6, 0xf4, + 0xc8, 0xf3, 0xf4, 0xf3, 0x34, 0xf4, 0xa4, 0xf5, 0xf3, 0xf8, 0xd6, 0xfd, 0x3e, 0x04, 0x50, 0x07, + 0xfd, 0x08, 0x3d, 0x0b, 0xaf, 0x0a, 0x4e, 0x09, 0xbb, 0x06, 0xf1, 0x03, 0x8e, 0x00, 0x37, 0xfc, + 0xd1, 0xf9, 0x96, 0xf8, 0x55, 0xf8, 0x7d, 0xf7, 0x1f, 0xf7, 0xc4, 0xf8, 0xa8, 0xf7, 0x75, 0xf7, + 0xf6, 0xf7, 0x2b, 0xf6, 0xd5, 0xf4, 0x8a, 0xf4, 0x7e, 0xf6, 0x3a, 0xf8, 0x20, 0xf8, 0xef, 0xfa, + 0x6d, 0xfd, 0x40, 0x00, 0x6d, 0x03, 0x5d, 0x04, 0xcd, 0x07, 0x8b, 0x0c, 0x91, 0x12, 0xc3, 0x16, + 0x07, 0x18, 0xce, 0x19, 0xdb, 0x19, 0xfa, 0x17, 0xae, 0x14, 0xd6, 0x10, 0x63, 0x0d, 0x8d, 0x08, + 0xb8, 0x04, 0x2d, 0x02, 0xaf, 0xff, 0x30, 0xfb, 0xb6, 0xf6, 0x0f, 0xf6, 0x99, 0xf3, 0x66, 0xf0, + 0x04, 0xf0, 0x07, 0xed, 0x18, 0xeb, 0x6c, 0xea, 0xf8, 0xea, 0x19, 0xec, 0xa0, 0xeb, 0x5f, 0xec, + 0xf6, 0xec, 0x15, 0xed, 0xca, 0xef, 0x55, 0xf1, 0xc1, 0xf3, 0x03, 0xf7, 0x6d, 0xfc, 0xa2, 0x01, + 0x6a, 0x05, 0x7e, 0x0a, 0x1c, 0x0e, 0x45, 0x0f, 0x9b, 0x0e, 0xa7, 0x0b, 0xf6, 0x08, 0xa5, 0x05, + 0xb0, 0x02, 0xc3, 0x00, 0xd2, 0x00, 0xe7, 0xff, 0x36, 0xfe, 0x81, 0xfe, 0xca, 0xfe, 0x29, 0xfd, + 0x70, 0xfe, 0x7a, 0xfe, 0xf7, 0xfe, 0x05, 0xff, 0xaa, 0x00, 0xb0, 0x01, 0x2e, 0xff, 0x61, 0xfe, + 0xd3, 0xff, 0x92, 0x00, 0x99, 0x03, 0xbb, 0x04, 0x25, 0x06, 0x9c, 0x08, 0x64, 0x0d, 0x51, 0x11, + 0xdf, 0x13, 0xc0, 0x15, 0x31, 0x17, 0xcc, 0x16, 0x43, 0x14, 0x2e, 0x10, 0x16, 0x0d, 0x74, 0x08, + 0x75, 0x02, 0x5a, 0xfe, 0x07, 0xfc, 0x67, 0xfa, 0xc8, 0xf7, 0x99, 0xf6, 0x2e, 0xf5, 0x3c, 0xf0, + 0x33, 0xee, 0x8c, 0xea, 0x2e, 0xe8, 0x31, 0xe7, 0x1b, 0xe7, 0x70, 0xe8, 0x7a, 0xe8, 0x51, 0xe7, + 0x2c, 0xe8, 0xcd, 0xe8, 0x55, 0xec, 0x3d, 0xee, 0xf5, 0xf0, 0xdd, 0xf4, 0x0b, 0xfa, 0x15, 0x01, + 0x6b, 0x06, 0x3c, 0x0a, 0x70, 0x0f, 0xb9, 0x12, 0xb7, 0x15, 0xda, 0x16, 0x6c, 0x17, 0xf9, 0x16, + 0x6a, 0x14, 0xc1, 0x11, 0x6b, 0x10, 0xa6, 0x0f, 0x03, 0x0e, 0x65, 0x0c, 0x3e, 0x0d, 0xad, 0x0a, + 0xc2, 0x09, 0x85, 0x09, 0xaa, 0x07, 0xbc, 0x05, 0x4c, 0x03, 0x97, 0x02, 0x4d, 0x02, 0x4a, 0xff, + 0x25, 0xff, 0x7e, 0xfd, 0xeb, 0xfc, 0xd8, 0xfb, 0xdf, 0xfa, 0xe4, 0xfa, 0x87, 0xfd, 0x2f, 0x03, + 0x7e, 0x07, 0xdf, 0x09, 0x92, 0x0d, 0x82, 0x0e, 0x3c, 0x0d, 0x10, 0x09, 0xb3, 0x04, 0xfd, 0xff, + 0x89, 0xfb, 0xec, 0xf7, 0x98, 0xf5, 0x86, 0xf4, 0x89, 0xf2, 0xe2, 0xef, 0x31, 0xf0, 0xed, 0xef, + 0xf5, 0xef, 0xeb, 0xef, 0xf0, 0xee, 0xfd, 0xed, 0x58, 0xed, 0xca, 0xed, 0x92, 0xf0, 0x18, 0xf1, + 0x57, 0xf3, 0x58, 0xf5, 0xaf, 0xf8, 0x9e, 0xfc, 0x84, 0x01, 0x39, 0x06, 0xfd, 0x09, 0x28, 0x10, + 0x18, 0x16, 0x13, 0x1a, 0x85, 0x1e, 0xc5, 0x21, 0x1e, 0x23, 0xd4, 0x20, 0x7d, 0x1d, 0x6e, 0x19, + 0x62, 0x15, 0xcb, 0x10, 0xc1, 0x0c, 0x35, 0x0a, 0xae, 0x07, 0x30, 0x02, 0xbc, 0xff, 0x8d, 0xfc, + 0x8b, 0xf7, 0x90, 0xf4, 0xaa, 0xf1, 0x46, 0xef, 0x92, 0xed, 0x57, 0xec, 0xac, 0xec, 0x1b, 0xea, + 0x51, 0xea, 0xab, 0xea, 0x8c, 0xeb, 0x50, 0xee, 0x7c, 0xef, 0x41, 0xf0, 0x59, 0xf2, 0xb3, 0xf6, + 0x12, 0xfc, 0xa6, 0xff, 0xe8, 0x03, 0x15, 0x07, 0x70, 0x09, 0x83, 0x0a, 0x42, 0x09, 0xff, 0x07, + 0x0d, 0x06, 0xf2, 0x01, 0x36, 0xfd, 0x72, 0xfa, 0xd4, 0xfa, 0xa0, 0xf8, 0xce, 0xf8, 0x8e, 0xfa, + 0x68, 0xf9, 0x91, 0xf9, 0x31, 0xfa, 0x4c, 0xfa, 0x03, 0xfb, 0x45, 0xfb, 0xa9, 0xfe, 0xcd, 0xff, + 0x1a, 0x00, 0xd8, 0x00, 0x85, 0x00, 0x05, 0x02, 0x6e, 0x02, 0xda, 0x03, 0x0b, 0x06, 0xa5, 0x09, + 0xac, 0x0f, 0xff, 0x12, 0x29, 0x15, 0x71, 0x17, 0xd2, 0x18, 0xe8, 0x17, 0x72, 0x14, 0x31, 0x11, + 0xa1, 0x0c, 0x2e, 0x07, 0x72, 0x02, 0xb7, 0xfd, 0x59, 0xfb, 0xdd, 0xf8, 0xdd, 0xf7, 0x51, 0xf8, + 0x8c, 0xf6, 0x54, 0xf5, 0xec, 0xf3, 0x46, 0xf2, 0xf0, 0xf0, 0xa8, 0xee, 0xbb, 0xee, 0x6f, 0xef, + 0x0a, 0xef, 0xdc, 0xef, 0x2f, 0xf0, 0x3d, 0xf2, 0xa7, 0xf3, 0xb9, 0xf4, 0x46, 0xf6, 0xb7, 0xf9, + 0x85, 0xff, 0x65, 0x04, 0x4f, 0x08, 0xf4, 0x0a, 0x29, 0x0d, 0x82, 0x0e, 0xbf, 0x0c, 0x99, 0x0b, + 0xb8, 0x0a, 0x94, 0x09, 0x85, 0x07, 0xf8, 0x05, 0x19, 0x06, 0x59, 0x04, 0x08, 0x02, 0xad, 0x02, + 0x60, 0x02, 0x43, 0x02, 0x9f, 0x02, 0xa6, 0x01, 0xe5, 0x00, 0x78, 0xff, 0x32, 0xff, 0x7d, 0x00, + 0x8e, 0xff, 0x29, 0x00, 0x4f, 0xff, 0x59, 0xff, 0xf2, 0xff, 0xec, 0x00, 0xcd, 0x01, 0x2b, 0x02, + 0xf6, 0x04, 0x10, 0x08, 0xc1, 0x09, 0x86, 0x0d, 0xf0, 0x10, 0x44, 0x13, 0xff, 0x11, 0x0c, 0x0f, + 0x1d, 0x0b, 0x8c, 0x06, 0xf4, 0x01, 0x89, 0xfd, 0xe1, 0xfa, 0x2a, 0xfa, 0x97, 0xf6, 0x8a, 0xf5, + 0x58, 0xf4, 0x4b, 0xf2, 0xa0, 0xf0, 0xbe, 0xee, 0xbc, 0xee, 0x61, 0xee, 0x6e, 0xed, 0x5a, 0xef, + 0x0f, 0xee, 0xa4, 0xee, 0x29, 0xef, 0x99, 0xf0, 0x65, 0xf3, 0x8a, 0xf6, 0x2e, 0xfa, 0x7b, 0xfd, + 0x13, 0x03, 0xcc, 0x09, 0x14, 0x0f, 0x48, 0x14, 0xc5, 0x17, 0x72, 0x1b, 0x7d, 0x1c, 0x3d, 0x1b, + 0xb8, 0x19, 0x57, 0x17, 0x2c, 0x13, 0xac, 0x0e, 0xc0, 0x0a, 0x50, 0x09, 0xcb, 0x05, 0xa3, 0x04, + 0xa3, 0x02, 0x3f, 0xff, 0x25, 0xfc, 0x68, 0xf8, 0x1f, 0xf4, 0x8d, 0xf1, 0x21, 0xef, 0x23, 0xef, + 0x7e, 0xee, 0xc5, 0xee, 0x70, 0xee, 0x4e, 0xee, 0xc9, 0xee, 0xde, 0xee, 0x7c, 0xef, 0x01, 0xf1, + 0x50, 0xf3, 0xf2, 0xf7, 0xf1, 0xfb, 0x8d, 0xff, 0xc4, 0x02, 0xd4, 0x06, 0x2c, 0x09, 0xf9, 0x09, + 0xc3, 0x09, 0x27, 0x09, 0xb4, 0x07, 0x7f, 0x04, 0xb9, 0x00, 0xa1, 0xff, 0x92, 0xfc, 0x3b, 0xfb, + 0xc2, 0xfb, 0x51, 0xfb, 0x5a, 0xfa, 0x1b, 0xfb, 0x76, 0xfb, 0x3a, 0xfd, 0x9c, 0xfc, 0x28, 0xfe, + 0xfe, 0xfe, 0xe8, 0xff, 0xaf, 0x00, 0x2c, 0x01, 0x4d, 0x02, 0x2a, 0x03, 0xd3, 0x03, 0x1d, 0x04, + 0x0f, 0x05, 0xce, 0x09, 0x67, 0x0e, 0x60, 0x12, 0xfa, 0x14, 0xf7, 0x16, 0x1a, 0x17, 0xa6, 0x14, + 0x7f, 0x10, 0x1a, 0x0c, 0xc2, 0x06, 0xa6, 0x01, 0xe6, 0xfb, 0xee, 0xf8, 0x17, 0xf5, 0x0d, 0xf2, + 0x8a, 0xf1, 0xc8, 0xf0, 0x55, 0xf0, 0x64, 0xf0, 0x94, 0xee, 0x50, 0xee, 0x25, 0xeb, 0x6f, 0xea, + 0x2d, 0xeb, 0x43, 0xec, 0x19, 0xee, 0xf8, 0xee, 0x5e, 0xf1, 0xe0, 0xf3, 0xdc, 0xf6, 0x18, 0xfb, + 0x9f, 0xfd, 0xf9, 0x01, 0x00, 0x06, 0x0b, 0x0a, 0xda, 0x0d, 0x2c, 0x12, 0x59, 0x16, 0xd8, 0x16, + 0x66, 0x15, 0xdd, 0x13, 0xea, 0x11, 0x8f, 0x10, 0xe5, 0x0d, 0x67, 0x0d, 0x0a, 0x0d, 0x32, 0x0b, + 0x3a, 0x0a, 0xf7, 0x08, 0x85, 0x06, 0x64, 0x04, 0xb6, 0x01, 0xaf, 0x00, 0xde, 0xfe, 0x84, 0xfe, + 0xbf, 0xfe, 0x66, 0xfd, 0x81, 0xfd, 0x2c, 0xfd, 0xb1, 0xfc, 0xfe, 0xfc, 0xf5, 0xfd, 0x29, 0xfe, + 0x45, 0xfd, 0x6c, 0xfe, 0xb0, 0x00, 0x18, 0x03, 0x52, 0x05, 0x7f, 0x07, 0x50, 0x0a, 0x44, 0x0c, + 0x23, 0x0b, 0x7b, 0x09, 0xa9, 0x07, 0x7c, 0x04, 0xc7, 0xfe, 0x28, 0xfa, 0xc1, 0xf7, 0x7b, 0xf5, + 0x3a, 0xf4, 0x66, 0xf3, 0xc0, 0xf2, 0xf8, 0xf1, 0x19, 0xf1, 0x77, 0xf0, 0xb9, 0xef, 0x47, 0xef, + 0x02, 0xf1, 0x0d, 0xf2, 0x1b, 0xf3, 0x88, 0xf3, 0x30, 0xf3, 0x55, 0xf3, 0x91, 0xf3, 0x3a, 0xf5, + 0x75, 0xf7, 0x11, 0xfb, 0x77, 0x01, 0x6c, 0x07, 0xb7, 0x0c, 0x4c, 0x11, 0x76, 0x16, 0xb5, 0x19, + 0x39, 0x1a, 0x30, 0x1a, 0xe5, 0x18, 0x7f, 0x16, 0xee, 0x12, 0xc1, 0x0e, 0x7c, 0x0c, 0x18, 0x09, + 0xd7, 0x07, 0x6f, 0x07, 0xa0, 0x05, 0xd5, 0x03, 0x81, 0x01, 0x4d, 0xff, 0x3b, 0xfd, 0x72, 0xf9, + 0xf2, 0xf6, 0xf1, 0xf3, 0xf6, 0xf2, 0x93, 0xf1, 0x79, 0xf0, 0xe5, 0xf0, 0x28, 0xf0, 0x98, 0xf0, + 0xe4, 0xf0, 0x8c, 0xf0, 0x92, 0xf3, 0xb5, 0xf6, 0x77, 0xfb, 0x1e, 0xff, 0xf7, 0x01, 0xb0, 0x04, + 0x48, 0x04, 0x24, 0x03, 0xba, 0x01, 0x87, 0x00, 0x62, 0xfe, 0x23, 0xfb, 0x49, 0xfa, 0x84, 0xf7, + 0xd3, 0xf5, 0x73, 0xf5, 0xe8, 0xf4, 0xf0, 0xf4, 0x94, 0xf5, 0x18, 0xf5, 0xcc, 0xf5, 0x88, 0xf4, + 0xa7, 0xf5, 0xee, 0xf6, 0xd7, 0xf8, 0x70, 0xfb, 0x47, 0xfd, 0x44, 0xff, 0xd3, 0x00, 0x35, 0x03, + 0x01, 0x06, 0x91, 0x07, 0x01, 0x0b, 0x62, 0x0e, 0xe9, 0x11, 0xe4, 0x15, 0x67, 0x1a, 0x40, 0x1e, + 0xec, 0x1f, 0x35, 0x1e, 0x9c, 0x1b, 0x8a, 0x17, 0x1a, 0x13, 0xf5, 0x0c, 0xa3, 0x08, 0x65, 0x04, + 0x0a, 0x00, 0x87, 0xfc, 0xd4, 0xf9, 0x6a, 0xf6, 0xbf, 0xf3, 0xf7, 0xef, 0x53, 0xee, 0xae, 0xeb, + 0x05, 0xea, 0xd3, 0xe8, 0x2d, 0xe8, 0x5c, 0xe8, 0x73, 0xe8, 0xab, 0xe8, 0xf8, 0xe9, 0x28, 0xec, + 0xc9, 0xef, 0xdb, 0xf1, 0x6e, 0xf5, 0x52, 0xfa, 0x4c, 0x00, 0x46, 0x05, 0x0e, 0x0a, 0x44, 0x0f, + 0xd7, 0x12, 0xe9, 0x12, 0x36, 0x13, 0xed, 0x11, 0x0b, 0x11, 0x03, 0x0d, 0x02, 0x0a, 0x59, 0x08, + 0xbc, 0x06, 0x4c, 0x06, 0x16, 0x06, 0xc5, 0x04, 0x39, 0x04, 0x1f, 0x02, 0x97, 0x00, 0xa2, 0xfd, + 0x85, 0xfc, 0x46, 0xfc, 0x6b, 0xfc, 0xeb, 0xfd, 0x5f, 0xfe, 0x27, 0xfe, 0xd0, 0xfd, 0x67, 0xfd, + 0xa2, 0xfe, 0x4e, 0xfe, 0xcc, 0xff, 0xd0, 0x01, 0x7f, 0x04, 0x0e, 0x07, 0x4e, 0x08, 0x48, 0x0b, + 0x44, 0x0e, 0x27, 0x0e, 0x28, 0x0e, 0x18, 0x0c, 0xd5, 0x0a, 0xcb, 0x05, 0x59, 0x00, 0x27, 0xfc, + 0xe5, 0xf7, 0xf9, 0xf4, 0x19, 0xf4, 0xd8, 0xf2, 0x04, 0xf2, 0xc8, 0xf0, 0x5a, 0xf1, 0x94, 0xf1, + 0xea, 0xf1, 0xcf, 0xf2, 0x18, 0xf3, 0x87, 0xf4, 0x1b, 0xf6, 0xf7, 0xf6, 0x25, 0xf9, 0xb5, 0xf9, + 0xe3, 0xfb, 0x12, 0xfd, 0x83, 0xfe, 0xda, 0x01, 0x6b, 0x07, 0x97, 0x0d, 0xd9, 0x12, 0x50, 0x17, + 0x0a, 0x1b, 0xd1, 0x1a, 0x70, 0x19, 0x5b, 0x16, 0xe8, 0x12, 0x3a, 0x0e, 0x88, 0x09, 0xd0, 0x05, + 0x97, 0x02, 0x53, 0xff, 0x54, 0xfe, 0x7d, 0xfc, 0xf8, 0xfb, 0x7b, 0xfb, 0x94, 0xfa, 0xb4, 0xf9, + 0xd6, 0xf6, 0xfc, 0xf4, 0xbb, 0xf3, 0xb9, 0xf2, 0x7f, 0xf2, 0xfd, 0xf2, 0xd9, 0xf3, 0x53, 0xf4, + 0x7b, 0xf6, 0xae, 0xf8, 0x3b, 0xfa, 0xf7, 0xfb, 0xde, 0xfd, 0x07, 0x00, 0x8e, 0x02, 0x24, 0x05, + 0x33, 0x09, 0xb1, 0x0a, 0x24, 0x0a, 0x46, 0x08, 0xe0, 0x05, 0xb8, 0x03, 0x04, 0x00, 0x05, 0xfe, + 0x08, 0xfd, 0x68, 0xfb, 0xbe, 0xfa, 0xd8, 0xf9, 0x6f, 0xf9, 0x2d, 0xf8, 0x06, 0xf7, 0xf3, 0xf6, + 0xf3, 0xf5, 0x0a, 0xf7, 0x1b, 0xf8, 0x55, 0xf9, 0xb0, 0xfb, 0x80, 0xfd, 0xf9, 0xfe, 0x8e, 0xff, + 0xe6, 0x01, 0x80, 0x04, 0x9c, 0x04, 0xcf, 0x05, 0xb2, 0x07, 0x20, 0x0a, 0x6d, 0x0d, 0x62, 0x10, + 0xa3, 0x14, 0x53, 0x17, 0xa5, 0x17, 0x5a, 0x16, 0x59, 0x14, 0x32, 0x13, 0xfc, 0x0d, 0x32, 0x09, + 0xb8, 0x04, 0x25, 0x00, 0x16, 0xfd, 0x4e, 0xfa, 0x11, 0xf9, 0xc6, 0xf7, 0xc3, 0xf5, 0xd0, 0xf4, + 0x5b, 0xf2, 0xae, 0xf0, 0x7f, 0xef, 0x39, 0xee, 0x49, 0xee, 0x4e, 0xee, 0x47, 0xee, 0x50, 0xed, + 0xad, 0xec, 0xa2, 0xed, 0xbe, 0xed, 0x59, 0xef, 0xb7, 0xf2, 0x3d, 0xf7, 0x41, 0xfc, 0x54, 0x00, + 0xf9, 0x04, 0x06, 0x0a, 0x1a, 0x0d, 0x30, 0x0f, 0x59, 0x0f, 0x6a, 0x10, 0x27, 0x0e, 0xbb, 0x0b, + 0x58, 0x0a, 0x09, 0x09, 0xe3, 0x08, 0x81, 0x0a, 0x19, 0x0b, 0xe4, 0x0b, 0xa7, 0x0b, 0xb2, 0x0b, + 0x92, 0x0a, 0xc2, 0x08, 0x5b, 0x07, 0x0d, 0x05, 0x02, 0x04, 0x6e, 0x03, 0xf2, 0x01, 0x96, 0x01, + 0x07, 0x00, 0xd4, 0xff, 0x32, 0xff, 0x6a, 0xfe, 0x29, 0xfe, 0x91, 0xff, 0xf0, 0x02, 0xc9, 0x05, + 0x38, 0x07, 0x08, 0x0a, 0x03, 0x0a, 0x51, 0x09, 0x6f, 0x07, 0x10, 0x06, 0xd0, 0x02, 0x72, 0xfe, + 0xfc, 0xfa, 0xd6, 0xf6, 0x75, 0xf2, 0x9b, 0xf0, 0x50, 0xee, 0x95, 0xed, 0x84, 0xec, 0x58, 0xec, + 0x82, 0xeb, 0x21, 0xea, 0x79, 0xe9, 0xad, 0xe8, 0x38, 0xe9, 0xde, 0xea, 0x9b, 0xec, 0x2d, 0xef, + 0xa0, 0xf0, 0x21, 0xf3, 0x1e, 0xf6, 0x0d, 0xf9, 0x15, 0xfc, 0x08, 0x00, 0xd0, 0x04, 0x41, 0x0a, + 0x24, 0x10, 0xf9, 0x17, 0x97, 0x1d, 0x69, 0x21, 0x68, 0x21, 0x14, 0x21, 0xdc, 0x1e, 0x37, 0x1a, + 0x59, 0x16, 0xd6, 0x12, 0x23, 0x0f, 0x05, 0x0d, 0xf6, 0x09, 0x54, 0x07, 0xdc, 0x02, 0x0b, 0x00, + 0x03, 0xfc, 0x97, 0xf7, 0x3f, 0xf5, 0xf6, 0xf2, 0x5f, 0xf1, 0x52, 0xf0, 0xbb, 0xee, 0x21, 0xee, + 0x22, 0xed, 0xcb, 0xed, 0x59, 0xef, 0x69, 0xf1, 0xc8, 0xf2, 0x3c, 0xf5, 0x41, 0xf8, 0x85, 0xfc, + 0x48, 0x00, 0x13, 0x06, 0x04, 0x0a, 0x61, 0x0c, 0x2d, 0x0c, 0x7b, 0x0b, 0xda, 0x09, 0x21, 0x06, + 0xa6, 0x02, 0x8c, 0xff, 0xe8, 0xfb, 0xb0, 0xfa, 0x9a, 0xf8, 0x63, 0xf8, 0x5e, 0xf7, 0x85, 0xf6, + 0x08, 0xf5, 0x73, 0xf2, 0xe3, 0xf0, 0xb0, 0xf0, 0x09, 0xf1, 0x7f, 0xf3, 0x6e, 0xf6, 0xfd, 0xfa, + 0xe3, 0xfc, 0x21, 0xff, 0x88, 0x02, 0x21, 0x04, 0x9a, 0x05, 0x24, 0x08, 0xb3, 0x0a, 0xc4, 0x0e, + 0x0d, 0x11, 0xb6, 0x14, 0xbd, 0x18, 0x10, 0x1b, 0x3b, 0x1b, 0x5b, 0x1a, 0xc6, 0x18, 0xaa, 0x14, + 0x93, 0x0e, 0xb5, 0x09, 0x57, 0x03, 0x9d, 0xfe, 0x4f, 0xfa, 0xe1, 0xf7, 0xc9, 0xf4, 0x9c, 0xf2, + 0xb7, 0xf2, 0x57, 0xf1, 0xc0, 0xf0, 0x25, 0xf1, 0xa4, 0xf0, 0xc1, 0xf1, 0x76, 0xf2, 0x7c, 0xf4, + 0x89, 0xf5, 0xfc, 0xf5, 0x9d, 0xf7, 0x5a, 0xf8, 0xb9, 0xf8, 0xa3, 0xf9, 0x33, 0xfb, 0x88, 0xff, + 0x7a, 0x03, 0xae, 0x07, 0x79, 0x0b, 0x74, 0x0e, 0x57, 0x0f, 0xc4, 0x0e, 0x0c, 0x0d, 0x3e, 0x09, + 0x52, 0x05, 0x70, 0x02, 0xff, 0xfd, 0x8b, 0xfb, 0xf5, 0xf9, 0x2c, 0xfa, 0x69, 0xfb, 0x00, 0xfc, + 0x9a, 0xfe, 0xb0, 0xff, 0xf4, 0xff, 0xb6, 0x00, 0xc0, 0x00, 0x37, 0x02, 0xd6, 0x02, 0x97, 0x05, + 0x3d, 0x08, 0x1d, 0x09, 0x57, 0x0b, 0x86, 0x0c, 0xe1, 0x0c, 0xe8, 0x0c, 0x78, 0x0c, 0xf0, 0x0d, + 0x5c, 0x0f, 0xc6, 0x0f, 0x2a, 0x11, 0x0b, 0x12, 0x7f, 0x11, 0xe5, 0x0e, 0x25, 0x0c, 0xf3, 0x07, + 0x41, 0x02, 0x5c, 0xfe, 0xd6, 0xf9, 0xee, 0xf5, 0xe4, 0xf2, 0x3b, 0xf0, 0x6a, 0xee, 0x81, 0xeb, + 0x46, 0xeb, 0x28, 0xeb, 0xfb, 0xe8, 0xbb, 0xe8, 0xfa, 0xe8, 0xbd, 0xea, 0x80, 0xec, 0x45, 0xee, + 0x54, 0xf0, 0xbc, 0xf0, 0xbf, 0xf2, 0x16, 0xf5, 0x3b, 0xf6, 0x3d, 0xf7, 0x6d, 0xf7, 0x3b, 0xf9, + 0x83, 0xfc, 0x46, 0xff, 0x9f, 0x04, 0xdc, 0x09, 0xa9, 0x0e, 0x87, 0x11, 0x75, 0x13, 0x7a, 0x14, + 0xb3, 0x12, 0x12, 0x10, 0x1d, 0x0d, 0xa8, 0x09, 0x11, 0x07, 0x02, 0x05, 0x50, 0x05, 0xd1, 0x03, + 0x10, 0x03, 0x3e, 0x03, 0x4c, 0x01, 0x26, 0x00, 0x1d, 0xff, 0x55, 0xff, 0xc6, 0xff, 0xea, 0xfe, + 0x7f, 0xff, 0xce, 0xfc, 0x7b, 0xfa, 0x5b, 0xf9, 0x4d, 0xf7, 0x62, 0xf5, 0x6d, 0xf4, 0x15, 0xf5, + 0x22, 0xf8, 0x05, 0xf9, 0x26, 0xfb, 0xb1, 0xfd, 0x41, 0x01, 0x02, 0x03, 0xcc, 0x03, 0x73, 0x04, + 0x6d, 0x02, 0x67, 0xff, 0xc0, 0xfd, 0x6c, 0xfb, 0x57, 0xfa, 0x6e, 0xf9, 0x02, 0xfb, 0x39, 0xfb, + 0x64, 0xfc, 0x69, 0xfe, 0x02, 0xfe, 0xc6, 0xfd, 0x7f, 0xfd, 0x2b, 0xfd, 0x47, 0xfe, 0x4b, 0xfe, + 0xf3, 0x00, 0x85, 0x01, 0x8c, 0x02, 0xca, 0x03, 0x03, 0x04, 0x2a, 0x04, 0xca, 0x03, 0xa0, 0x03, + 0x2b, 0x07, 0xdc, 0x09, 0x0a, 0x0d, 0x41, 0x10, 0xb2, 0x13, 0x3a, 0x15, 0x69, 0x15, 0xc7, 0x14, + 0x28, 0x12, 0xae, 0x0d, 0x2c, 0x0b, 0x1d, 0x07, 0xdb, 0x03, 0x0f, 0xff, 0x7c, 0xfc, 0xdb, 0xf9, + 0x72, 0xf6, 0x8c, 0xf5, 0x27, 0xf4, 0x11, 0xf2, 0x20, 0xf1, 0x29, 0xf0, 0xa5, 0xf0, 0xd5, 0xef, + 0xd2, 0xf0, 0xbf, 0xf1, 0x6b, 0xf1, 0xe8, 0xf1, 0xa6, 0xf2, 0x46, 0xf2, 0x03, 0xf3, 0xdd, 0xf2, + 0x4f, 0xf6, 0x06, 0xfa, 0x64, 0xfe, 0x8f, 0x03, 0x45, 0x09, 0x68, 0x0e, 0x63, 0x11, 0x41, 0x12, + 0x53, 0x12, 0x14, 0x0f, 0x23, 0x0d, 0xdd, 0x09, 0x23, 0x08, 0xc6, 0x05, 0xd1, 0x03, 0x23, 0x03, + 0x4a, 0x01, 0xc3, 0x01, 0x1e, 0x02, 0xcc, 0xff, 0x3a, 0xff, 0xd9, 0xfe, 0xc2, 0xff, 0x02, 0xff, + 0x11, 0xff, 0xe0, 0xff, 0x88, 0xff, 0x21, 0x00, 0xa4, 0x01, 0x46, 0x02, 0x2b, 0x03, 0x53, 0x02, + 0x54, 0x04, 0x21, 0x07, 0xbd, 0x09, 0x14, 0x0d, 0x64, 0x11, 0xf1, 0x14, 0xdb, 0x15, 0xfd, 0x14, + 0x4d, 0x13, 0xa5, 0x0e, 0xa4, 0x0a, 0x2a, 0x05, 0x09, 0x01, 0x56, 0xfc, 0xed, 0xf7, 0xc8, 0xf5, + 0x70, 0xf2, 0x59, 0xef, 0x4b, 0xed, 0xbb, 0xe9, 0x1c, 0xe7, 0x9e, 0xe4, 0x5f, 0xe4, 0xc1, 0xe4, + 0xfa, 0xe5, 0xd0, 0xe8, 0x28, 0xea, 0xeb, 0xeb, 0xf5, 0xee, 0x91, 0xf0, 0x3d, 0xf2, 0x2d, 0xf3, + 0x75, 0xf6, 0xe0, 0xfa, 0x3b, 0xff, 0x5d, 0x03, 0x4c, 0x08, 0x62, 0x0e, 0xc4, 0x12, 0x82, 0x15, + 0xf2, 0x17, 0x16, 0x17, 0x32, 0x15, 0xc1, 0x12, 0xb1, 0x0f, 0xdf, 0x0b, 0x60, 0x07, 0x8a, 0x05, + 0x76, 0x03, 0x4a, 0x01, 0xb3, 0x01, 0xdf, 0xff, 0xe9, 0xfd, 0x27, 0xfc, 0x95, 0xfb, 0x58, 0xfc, + 0x5a, 0xfc, 0x44, 0xfe, 0xe9, 0xfe, 0xab, 0xfe, 0xf4, 0xfe, 0xbd, 0xfd, 0xf9, 0xfc, 0xd7, 0xfb, + 0xec, 0xfa, 0x3f, 0xfd, 0x4a, 0x00, 0x3b, 0x03, 0x3d, 0x06, 0x47, 0x09, 0xb4, 0x0a, 0xa7, 0x09, + 0xf6, 0x08, 0x39, 0x05, 0x7e, 0x00, 0xa8, 0xfc, 0x3f, 0xf7, 0x8c, 0xf3, 0x19, 0xef, 0x13, 0xed, + 0x41, 0xec, 0x7c, 0xea, 0xf0, 0xeb, 0xb6, 0xec, 0x6e, 0xed, 0xef, 0xee, 0xc3, 0xef, 0x4e, 0xf2, + 0x75, 0xf3, 0xc9, 0xf6, 0x4d, 0xfb, 0xa6, 0xfe, 0x37, 0x03, 0x54, 0x07, 0x1a, 0x0b, 0xb1, 0x0d, + 0xf8, 0x0e, 0xde, 0x12, 0x14, 0x16, 0xb8, 0x18, 0xe3, 0x1a, 0x26, 0x1e, 0xee, 0x20, 0xe0, 0x20, + 0xd6, 0x1f, 0x30, 0x1d, 0xcb, 0x17, 0xbf, 0x12, 0x65, 0x0d, 0xf9, 0x09, 0xe8, 0x04, 0x18, 0x01, + 0x4d, 0xfe, 0x36, 0xfa, 0x45, 0xf8, 0x13, 0xf6, 0xbe, 0xf2, 0x85, 0xf0, 0xea, 0xee, 0xc0, 0xef, + 0xd3, 0xef, 0xdb, 0xf0, 0xc8, 0xf2, 0x7e, 0xf3, 0x6c, 0xf4, 0x9a, 0xf5, 0xcf, 0xf5, 0x89, 0xf6, + 0x47, 0xf5, 0xf0, 0xf5, 0xb6, 0xf7, 0xf0, 0xf9, 0xd5, 0xfb, 0x03, 0x00, 0x42, 0x04, 0xbe, 0x06, + 0x35, 0x08, 0xb5, 0x08, 0x50, 0x06, 0xa1, 0x04, 0xf4, 0x00, 0xd6, 0xfe, 0x65, 0xfb, 0x46, 0xf9, + 0xcc, 0xf9, 0x6c, 0xf9, 0x7f, 0xf9, 0x55, 0xfb, 0x1a, 0xfc, 0x03, 0xfd, 0xde, 0xfd, 0x9e, 0x00, + 0x10, 0x03, 0x90, 0x04, 0x21, 0x07, 0xae, 0x07, 0x52, 0x07, 0x8d, 0x08, 0x13, 0x08, 0xdf, 0x07, + 0x42, 0x05, 0x11, 0x05, 0xba, 0x05, 0x6f, 0x07, 0x10, 0x08, 0xf8, 0x09, 0xa6, 0x0c, 0xdf, 0x0d, + 0x6d, 0x0d, 0x4f, 0x0d, 0x66, 0x0a, 0x14, 0x07, 0xdd, 0x02, 0xeb, 0xff, 0x72, 0xfd, 0xee, 0xf9, + 0x59, 0xf9, 0xaa, 0xf8, 0x8f, 0xf7, 0x10, 0xf9, 0x3a, 0xf7, 0x16, 0xf6, 0xfc, 0xf3, 0xfe, 0xf3, + 0x00, 0xf4, 0x3a, 0xf3, 0xa0, 0xf4, 0xf6, 0xf5, 0x13, 0xf6, 0x73, 0xf7, 0x71, 0xf6, 0xd6, 0xf6, + 0x56, 0xf6, 0x8b, 0xf5, 0x86, 0xf6, 0xe8, 0xf8, 0x3f, 0xfb, 0xb6, 0xfe, 0xcf, 0x02, 0x25, 0x06, + 0x05, 0x08, 0xa8, 0x0b, 0xe7, 0x0b, 0x8c, 0x0b, 0xee, 0x09, 0xe5, 0x08, 0xc7, 0x07, 0xef, 0x04, + 0x4c, 0x03, 0x58, 0x02, 0x64, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xc3, 0xff, 0x67, 0xfe, 0x8d, 0xfd, + 0x24, 0xfd, 0x8e, 0xfb, 0x7b, 0xfb, 0xd7, 0xfc, 0x85, 0xfc, 0x1c, 0xfd, 0x07, 0xfc, 0x8d, 0xfb, + 0xf7, 0xf9, 0xb1, 0xf7, 0x05, 0xf7, 0x51, 0xf9, 0xe3, 0xfb, 0xe0, 0xfe, 0x89, 0x02, 0x7c, 0x07, + 0xa2, 0x0a, 0x9d, 0x0c, 0x00, 0x0c, 0x9f, 0x09, 0xfd, 0x06, 0xa8, 0x04, 0xa1, 0x03, 0x7a, 0x00, + 0x1a, 0xfe, 0x22, 0xfd, 0xb5, 0xfa, 0xcd, 0xf9, 0x76, 0xf8, 0x35, 0xf7, 0x79, 0xf5, 0x66, 0xf4, + 0x6b, 0xf4, 0x7f, 0xf3, 0x4f, 0xf3, 0x68, 0xf5, 0x33, 0xf5, 0xc2, 0xf5, 0x7d, 0xf7, 0xc3, 0xf9, + 0x13, 0xfd, 0xf1, 0xfd, 0x24, 0x00, 0x83, 0x04, 0xe6, 0x08, 0xe5, 0x0c, 0x62, 0x11, 0x8b, 0x17, + 0x28, 0x1b, 0x94, 0x1e, 0xf0, 0x1f, 0x95, 0x1e, 0x18, 0x1c, 0xff, 0x17, 0x94, 0x14, 0x4d, 0x10, + 0x71, 0x0b, 0x0d, 0x09, 0x7b, 0x05, 0x13, 0x02, 0x1f, 0xfe, 0xe1, 0xf9, 0x49, 0xf6, 0x02, 0xf1, + 0xb8, 0xee, 0x26, 0xed, 0xd1, 0xeb, 0x1a, 0xed, 0x86, 0xec, 0x95, 0xec, 0x00, 0xee, 0x2a, 0xef, + 0x5e, 0xf0, 0xa5, 0xef, 0x3e, 0xf0, 0x11, 0xf3, 0x59, 0xf6, 0xd2, 0xf9, 0xd0, 0xfc, 0x4b, 0x02, + 0x77, 0x07, 0xe0, 0x0a, 0x07, 0x0e, 0x5a, 0x0e, 0x74, 0x0e, 0x9b, 0x0c, 0xc5, 0x0a, 0xe6, 0x07, + 0x6b, 0x03, 0x2f, 0x02, 0x00, 0x00, 0xe7, 0xfd, 0x85, 0xfd, 0x3f, 0xfd, 0x24, 0xfd, 0x3e, 0xfb, + 0x4d, 0xfb, 0xf7, 0xfc, 0xc9, 0xfd, 0xd1, 0xff, 0xc2, 0x01, 0xd0, 0x02, 0x5f, 0x05, 0x03, 0x06, + 0x4c, 0x07, 0x07, 0x07, 0xa9, 0x06, 0x69, 0x07, 0xf1, 0x09, 0x84, 0x0c, 0xa0, 0x0e, 0x3e, 0x12, + 0xca, 0x15, 0x14, 0x16, 0x25, 0x16, 0xa7, 0x13, 0xd9, 0x0f, 0xfa, 0x09, 0x8a, 0x03, 0x4f, 0xfe, + 0x7b, 0xf8, 0xed, 0xf3, 0xfa, 0xef, 0x91, 0xec, 0x59, 0xeb, 0x3b, 0xea, 0x9a, 0xe9, 0x5f, 0xe7, + 0x5d, 0xe6, 0x0c, 0xe7, 0x03, 0xe7, 0xd2, 0xe7, 0xd0, 0xea, 0x2e, 0xed, 0xcc, 0xf1, 0x1c, 0xf5, + 0xeb, 0xf8, 0x37, 0xfb, 0x8c, 0xfc, 0x22, 0xff, 0xbb, 0x02, 0x14, 0x06, 0x92, 0x09, 0xa6, 0x0c, + 0x55, 0x11, 0x05, 0x13, 0x03, 0x15, 0xf9, 0x14, 0xe8, 0x13, 0x0a, 0x11, 0xf0, 0x0d, 0xc6, 0x0c, + 0xb5, 0x09, 0xc9, 0x06, 0xcb, 0x04, 0x33, 0x01, 0x70, 0xff, 0x9b, 0xfd, 0x52, 0xfc, 0x24, 0xfa, + 0x9e, 0xf8, 0x79, 0xf8, 0x88, 0xf8, 0x1c, 0xf8, 0x2d, 0xfa, 0xe6, 0xfa, 0x7f, 0xfd, 0x30, 0xfe, + 0xfe, 0xfe, 0x9d, 0xff, 0x07, 0xff, 0xea, 0xfd, 0x65, 0xfd, 0xc1, 0xfd, 0xcb, 0xfe, 0x50, 0x00, + 0x38, 0x04, 0x40, 0x06, 0xcc, 0x08, 0x90, 0x09, 0x27, 0x08, 0x9f, 0x04, 0xae, 0xff, 0x13, 0xfc, + 0x9f, 0xf8, 0xdc, 0xf3, 0x08, 0xf2, 0xdc, 0xef, 0x9b, 0xef, 0x81, 0xef, 0x6f, 0xef, 0xe8, 0xee, + 0xbe, 0xee, 0xdf, 0xf0, 0xc0, 0xf3, 0x35, 0xf5, 0x20, 0xf8, 0x6c, 0xfa, 0x26, 0xfc, 0x74, 0xfd, + 0x75, 0xff, 0x31, 0x01, 0xc1, 0x01, 0x23, 0x02, 0xa0, 0x04, 0xb9, 0x07, 0x45, 0x0b, 0x0f, 0x0d, + 0xcd, 0x10, 0xd4, 0x13, 0x4b, 0x16, 0x4d, 0x18, 0x68, 0x18, 0x33, 0x17, 0x0a, 0x14, 0x96, 0x10, + 0xbf, 0x0d, 0xa0, 0x08, 0x54, 0x06, 0xd6, 0x04, 0x26, 0x04, 0xb3, 0x03, 0xca, 0x02, 0x44, 0x01, + 0x9d, 0xfe, 0xd0, 0xfb, 0x74, 0xfa, 0x86, 0xf8, 0x6b, 0xf8, 0x7c, 0xf8, 0xb1, 0xf8, 0x8a, 0xf9, + 0xb6, 0xf9, 0xf1, 0xf9, 0xbb, 0xf8, 0xde, 0xf5, 0x82, 0xf4, 0xba, 0xf4, 0x64, 0xf6, 0x0f, 0xf7, + 0x63, 0xf9, 0x59, 0xfc, 0xd2, 0xfe, 0xf6, 0x01, 0x54, 0x03, 0x1c, 0x03, 0x00, 0x02, 0xbc, 0x00, + 0xea, 0xff, 0x80, 0xfc, 0xcc, 0xfa, 0x20, 0xfa, 0x55, 0xf9, 0x99, 0xf9, 0x62, 0xf9, 0xa8, 0xfa, + 0x65, 0xfa, 0x23, 0xfa, 0xc6, 0xfc, 0x27, 0xfe, 0x46, 0xff, 0xc7, 0x01, 0x77, 0x03, 0xef, 0x05, + 0x5e, 0x07, 0x86, 0x08, 0x00, 0x09, 0xe7, 0x07, 0xc1, 0x06, 0x78, 0x07, 0x77, 0x09, 0xb4, 0x09, + 0xa7, 0x0b, 0xd7, 0x0f, 0x95, 0x12, 0xef, 0x15, 0xaf, 0x15, 0xed, 0x14, 0xcc, 0x12, 0x20, 0x0e, + 0x85, 0x0b, 0xd6, 0x06, 0x9d, 0x02, 0x3e, 0xff, 0x17, 0xfb, 0xee, 0xf8, 0x3b, 0xf7, 0xc3, 0xf5, + 0x22, 0xf3, 0x5a, 0xf0, 0x92, 0xee, 0x61, 0xed, 0x92, 0xeb, 0x39, 0xeb, 0x14, 0xeb, 0xfb, 0xeb, + 0x01, 0xed, 0xab, 0xee, 0x6a, 0xf0, 0x3b, 0xf1, 0xbd, 0xf1, 0x5c, 0xf3, 0x4e, 0xf6, 0x10, 0xf9, + 0xee, 0xfc, 0xa4, 0x03, 0x73, 0x08, 0x84, 0x0d, 0xd6, 0x10, 0x03, 0x13, 0x7e, 0x13, 0x31, 0x11, + 0x45, 0x10, 0xf6, 0x0e, 0x32, 0x0c, 0x53, 0x0b, 0x28, 0x09, 0xa5, 0x07, 0x61, 0x05, 0x55, 0x03, + 0xcf, 0x00, 0x68, 0xfd, 0x78, 0xfb, 0x0a, 0xfb, 0x1a, 0xf9, 0x60, 0xf8, 0x7b, 0xf7, 0x27, 0xf8, + 0x65, 0xf9, 0x13, 0xfb, 0x6e, 0xfc, 0xd2, 0xfc, 0x80, 0xfc, 0x7b, 0xfc, 0xaf, 0xfc, 0xbe, 0xfe, + 0xc5, 0xff, 0x29, 0x03, 0xa7, 0x06, 0x63, 0x0a, 0xab, 0x0d, 0x58, 0x0f, 0xae, 0x0f, 0x46, 0x0d, + 0x2d, 0x0a, 0x3e, 0x07, 0x35, 0x02, 0x6f, 0xff, 0xed, 0xfb, 0x48, 0xf9, 0xb5, 0xf6, 0x42, 0xf5, + 0xc6, 0xf3, 0x04, 0xf1, 0x15, 0xef, 0xb7, 0xef, 0x08, 0xef, 0x04, 0xf0, 0x5f, 0xf1, 0xd4, 0xf3, + 0x73, 0xf6, 0x39, 0xf8, 0xb5, 0xf9, 0xa7, 0xfb, 0x42, 0xfc, 0xbe, 0xfd, 0xe3, 0x00, 0xa0, 0x05, + 0xf7, 0x08, 0x07, 0x0e, 0x16, 0x13, 0x71, 0x17, 0xe6, 0x1a, 0x3d, 0x1c, 0x6a, 0x1c, 0x2f, 0x1a, + 0xe8, 0x15, 0xd9, 0x12, 0xd9, 0x0c, 0xfb, 0x07, 0xbd, 0x02, 0x66, 0xff, 0xac, 0xfc, 0x67, 0xfa, + 0xba, 0xf8, 0x26, 0xf6, 0x60, 0xf3, 0x7c, 0xf2, 0xe0, 0xef, 0x1b, 0xef, 0x6b, 0xef, 0x66, 0xf0, + 0x7e, 0xf2, 0xa6, 0xf4, 0x18, 0xf7, 0x48, 0xfa, 0x18, 0xfb, 0x9a, 0xfb, 0x3c, 0xfc, 0x7e, 0xfe, + 0xe6, 0xff, 0x43, 0x02, 0x2b, 0x05, 0x83, 0x07, 0x36, 0x0a, 0xcb, 0x0b, 0xd9, 0x0b, 0x1e, 0x0a, + 0x0b, 0x07, 0xfa, 0x05, 0xb3, 0x02, 0x19, 0xff, 0x7f, 0xfc, 0x5b, 0xfa, 0xa6, 0xf8, 0xef, 0xf6, + 0x3b, 0xf6, 0xdf, 0xf5, 0xeb, 0xf3, 0x54, 0xf4, 0x45, 0xf4, 0xf0, 0xf5, 0xb4, 0xf8, 0xba, 0xfb, + 0x76, 0xff, 0xcf, 0x02, 0x51, 0x05, 0x25, 0x08, 0x4d, 0x09, 0x71, 0x09, 0xf8, 0x08, 0xbc, 0x09, + 0x4b, 0x0a, 0xbb, 0x0a, 0x41, 0x0d, 0x79, 0x0f, 0xf8, 0x11, 0xa6, 0x13, 0x91, 0x13, 0x78, 0x12, + 0x30, 0x0e, 0xeb, 0x09, 0x33, 0x04, 0x67, 0xfe, 0xac, 0xf9, 0x67, 0xf5, 0x5d, 0xf2, 0x8e, 0xef, + 0x02, 0xee, 0x44, 0xed, 0x71, 0xeb, 0x7f, 0xeb, 0x66, 0xec, 0x6c, 0xec, 0xdf, 0xed, 0xca, 0xee, + 0x2d, 0xf0, 0xc6, 0xf1, 0xc5, 0xf3, 0x82, 0xf6, 0x97, 0xf7, 0x4d, 0xf8, 0x95, 0xf8, 0x5a, 0xfa, + 0xf1, 0xfc, 0x49, 0xfe, 0x39, 0x01, 0xb6, 0x04, 0x40, 0x08, 0xe4, 0x0b, 0xec, 0x0d, 0x01, 0x0f, + 0xbf, 0x0d, 0xb5, 0x0b, 0x3a, 0x0a, 0xbc, 0x07, 0x1c, 0x07, 0xa4, 0x06, 0x30, 0x07, 0x08, 0x07, + 0x11, 0x07, 0x3c, 0x08, 0x25, 0x07, 0xed, 0x05, 0x65, 0x05, 0x13, 0x04, 0x0e, 0x04, 0x9c, 0x03, + 0x7b, 0x03, 0x41, 0x04, 0x21, 0x05, 0xd6, 0x05, 0xca, 0x05, 0x70, 0x04, 0xb1, 0x02, 0x18, 0x01, + 0xe7, 0x00, 0x4d, 0xff, 0xda, 0xfe, 0x82, 0xff, 0x74, 0x00, 0xa6, 0x02, 0x4c, 0x04, 0x62, 0x05, + 0x57, 0x04, 0x16, 0x02, 0x38, 0x00, 0x06, 0xfc, 0x11, 0xf9, 0x5e, 0xf6, 0xed, 0xf3, 0xec, 0xf1, + 0xa8, 0xf0, 0x10, 0xf1, 0x90, 0xf0, 0xf8, 0xee, 0xf6, 0xef, 0xd1, 0xef, 0xd0, 0xf0, 0x12, 0xf2, + 0x1c, 0xf4, 0xf6, 0xf6, 0x40, 0xf9, 0x3d, 0xfb, 0xae, 0xfd, 0xa4, 0xfe, 0xdc, 0xfe, 0x95, 0xfe, + 0x8f, 0x00, 0x40, 0x02, 0x68, 0x05, 0x50, 0x0a, 0x26, 0x0f, 0xe4, 0x13, 0x89, 0x17, 0xb4, 0x19, + 0x4e, 0x1a, 0xf2, 0x18, 0x56, 0x18, 0xc0, 0x15, 0xfc, 0x12, 0x17, 0x0f, 0x6c, 0x0b, 0xc4, 0x08, + 0x66, 0x06, 0xa6, 0x04, 0x02, 0x03, 0xb3, 0xff, 0x2f, 0xfe, 0x10, 0xfb, 0xbb, 0xf8, 0x8a, 0xf6, + 0x9f, 0xf4, 0x4a, 0xf3, 0x8d, 0xf2, 0xc4, 0xf2, 0x02, 0xf4, 0xff, 0xf3, 0x1a, 0xf4, 0x5f, 0xf3, + 0x28, 0xf4, 0x4b, 0xf4, 0xc4, 0xf5, 0x9d, 0xf8, 0x8f, 0xfb, 0x8c, 0xff, 0x6a, 0x03, 0x95, 0x06, + 0xd2, 0x08, 0x97, 0x07, 0x04, 0x07, 0x15, 0x05, 0x84, 0x02, 0xaf, 0xff, 0x2b, 0xfd, 0x15, 0xfc, + 0x88, 0xfa, 0x12, 0xf9, 0x78, 0xf8, 0xb1, 0xf5, 0xb4, 0xf4, 0x5c, 0xf3, 0x6b, 0xf3, 0xd3, 0xf3, + 0xd5, 0xf4, 0x9f, 0xf6, 0xdf, 0xf9, 0x7b, 0xfc, 0xd9, 0xff, 0x0f, 0x02, 0xa7, 0x03, 0xf3, 0x03, + 0x1a, 0x05, 0x2c, 0x07, 0xef, 0x08, 0x44, 0x0b, 0xaa, 0x0d, 0xb6, 0x10, 0xc2, 0x14, 0x2e, 0x17, + 0x90, 0x19, 0x76, 0x18, 0x8b, 0x16, 0x61, 0x13, 0xd1, 0x0e, 0x65, 0x0a, 0x6d, 0x05, 0x39, 0x01, + 0x4b, 0xfd, 0x61, 0xf9, 0xbf, 0xf7, 0xea, 0xf4, 0x1e, 0xf3, 0x48, 0xf1, 0xc8, 0xee, 0x2c, 0xed, + 0x77, 0xec, 0xc5, 0xec, 0xdf, 0xed, 0x60, 0xee, 0x15, 0xf0, 0x8a, 0xf1, 0x03, 0xf3, 0x52, 0xf3, + 0xaa, 0xf4, 0xb8, 0xf7, 0x1f, 0xfa, 0xa0, 0xfc, 0x3b, 0x00, 0x75, 0x04, 0x68, 0x09, 0x80, 0x0c, + 0x59, 0x0f, 0xe7, 0x0f, 0x87, 0x0e, 0x0e, 0x0d, 0xdf, 0x09, 0xd1, 0x06, 0xc0, 0x03, 0x82, 0x01, + 0x6f, 0x00, 0xf7, 0xfe, 0x87, 0xff, 0x0a, 0xff, 0xbd, 0xfd, 0xfa, 0xfc, 0x14, 0xfc, 0xeb, 0xfb, + 0xa4, 0xfc, 0x0c, 0xfd, 0x03, 0xfe, 0x97, 0xff, 0x15, 0x02, 0xb5, 0x04, 0xae, 0x07, 0xc2, 0x08, + 0x85, 0x08, 0x3c, 0x09, 0x60, 0x09, 0x8f, 0x09, 0x71, 0x0a, 0x2a, 0x0b, 0x9f, 0x0c, 0x91, 0x0d, + 0x7e, 0x0e, 0x21, 0x0e, 0xbc, 0x0b, 0x94, 0x09, 0x11, 0x06, 0x81, 0x01, 0x18, 0xfd, 0xd1, 0xf8, + 0x1c, 0xf5, 0x60, 0xf1, 0x35, 0xef, 0x3c, 0xee, 0x0c, 0xec, 0x9e, 0xeb, 0xea, 0xea, 0xf6, 0xea, + 0x2d, 0xec, 0x2d, 0xed, 0x66, 0xef, 0xc0, 0xf2, 0x38, 0xf6, 0xa3, 0xf9, 0xb9, 0xfc, 0x02, 0xff, + 0x22, 0xff, 0x96, 0x00, 0x7a, 0x01, 0xea, 0x02, 0xf2, 0x05, 0x66, 0x09, 0xa4, 0x0e, 0xa6, 0x12, + 0xc6, 0x15, 0x81, 0x18, 0xe6, 0x17, 0x95, 0x16, 0x92, 0x13, 0xb1, 0x0f, 0xba, 0x0b, 0x60, 0x07, + 0xce, 0x03, 0x81, 0x00, 0x85, 0xfd, 0x95, 0xfc, 0x32, 0xfa, 0x5b, 0xf9, 0x47, 0xf8, 0x26, 0xf7, + 0x69, 0xf7, 0x44, 0xf7, 0xee, 0xf6, 0x73, 0xf7, 0x18, 0xf7, 0x03, 0xf8, 0xa6, 0xf8, 0x84, 0xf9, + 0xab, 0xf9, 0x2b, 0xfa, 0xc2, 0xfa, 0x22, 0xfb, 0x85, 0xfc, 0xe7, 0xfd, 0x53, 0xff, 0xaf, 0x01, + 0xdf, 0x03, 0x52, 0x06, 0xee, 0x05, 0xc9, 0x04, 0x03, 0x03, 0x8f, 0x00, 0x3b, 0xfe, 0xb9, 0xfb, + 0x4a, 0xfa, 0x09, 0xfa, 0xf5, 0xf8, 0xf5, 0xf9, 0x91, 0xfa, 0x16, 0xfb, 0x58, 0xfb, 0xa5, 0xfa, + 0xd8, 0xf9, 0x91, 0xfa, 0xf8, 0xfa, 0x20, 0xfd, 0xc4, 0xff, 0xb9, 0x02, 0xef, 0x04, 0xd1, 0x06, + 0x5d, 0x07, 0x13, 0x07, 0x20, 0x07, 0x48, 0x07, 0x84, 0x08, 0x08, 0x09, 0x43, 0x0a, 0xd0, 0x0c, + 0x64, 0x0e, 0xbe, 0x10, 0xe5, 0x10, 0x72, 0x10, 0xbe, 0x0e, 0xf6, 0x0b, 0x38, 0x09, 0x3d, 0x05, + 0x69, 0x01, 0xd0, 0xfd, 0xa4, 0xf9, 0x63, 0xf8, 0xcd, 0xf5, 0x5d, 0xf4, 0xb5, 0xf3, 0x70, 0xf2, + 0x98, 0xf1, 0x89, 0xf1, 0x12, 0xf1, 0xc1, 0xf1, 0x72, 0xf1, 0xc4, 0xf2, 0x28, 0xf4, 0x1d, 0xf6, + 0xc4, 0xf6, 0xec, 0xf5, 0x1e, 0xf6, 0x03, 0xf7, 0xf8, 0xf8, 0x02, 0xfb, 0xc3, 0xfc, 0x2b, 0x01, + 0x2a, 0x05, 0xee, 0x09, 0x3f, 0x0c, 0x11, 0x0d, 0xed, 0x0c, 0x88, 0x0b, 0x07, 0x0a, 0x20, 0x08, + 0x1a, 0x06, 0x12, 0x05, 0x97, 0x04, 0xb3, 0x04, 0x44, 0x04, 0x72, 0x04, 0x6b, 0x04, 0x97, 0x03, + 0x04, 0x02, 0x3f, 0x02, 0xb9, 0x00, 0x64, 0x00, 0x99, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x00, 0x00, + 0x79, 0x01, 0x9f, 0x01, 0xe4, 0x01, 0x20, 0x02, 0xa5, 0x01, 0x4f, 0x02, 0x29, 0x03, 0xe3, 0x05, + 0x67, 0x08, 0x58, 0x0b, 0x56, 0x0d, 0xea, 0x0d, 0x51, 0x0d, 0x28, 0x0c, 0x87, 0x09, 0xe4, 0x05, + 0xcb, 0x01, 0x22, 0xfe, 0x68, 0xfa, 0xec, 0xf6, 0x62, 0xf5, 0xaf, 0xf3, 0xce, 0xf1, 0x8e, 0xef, + 0xe0, 0xec, 0x70, 0xec, 0xc3, 0xeb, 0xef, 0xeb, 0x33, 0xed, 0xef, 0xee, 0x69, 0xf1, 0xea, 0xf3, + 0x34, 0xf7, 0x73, 0xf9, 0x84, 0xfa, 0x2a, 0xfb, 0xb1, 0xfd, 0xe7, 0xff, 0x28, 0x02, 0xf2, 0x06, + 0x15, 0x0c, 0x4c, 0x11, 0x77, 0x15, 0x33, 0x18, 0x44, 0x1a, 0x77, 0x19, 0xad, 0x17, 0xb8, 0x15, + 0xe5, 0x11, 0x50, 0x0e, 0x4d, 0x0a, 0xe4, 0x06, 0x84, 0x05, 0x53, 0x02, 0x13, 0x00, 0x62, 0xfe, + 0x6d, 0xfb, 0x8a, 0xf9, 0x17, 0xf8, 0x7b, 0xf6, 0x3e, 0xf5, 0xf7, 0xf4, 0xaa, 0xf4, 0x90, 0xf4, + 0x04, 0xf6, 0x53, 0xf6, 0x42, 0xf6, 0xe8, 0xf6, 0x77, 0xf7, 0x1a, 0xf9, 0xca, 0xfa, 0xa7, 0xfd, + 0xd7, 0x00, 0x9f, 0x02, 0xce, 0x05, 0x81, 0x07, 0xdb, 0x07, 0x86, 0x06, 0xee, 0x03, 0x5c, 0x02, + 0x15, 0xfe, 0xf5, 0xf9, 0x54, 0xf8, 0x34, 0xf5, 0x61, 0xf4, 0xf4, 0xf2, 0x6f, 0xf2, 0x8f, 0xf2, + 0x51, 0xf1, 0xea, 0xf0, 0x3f, 0xf1, 0xce, 0xf1, 0xe1, 0xf2, 0x38, 0xf5, 0x8a, 0xf8, 0x6c, 0xfb, + 0xa6, 0x00, 0x4b, 0x05, 0x5c, 0x07, 0x11, 0x09, 0xfe, 0x0a, 0x51, 0x0d, 0xca, 0x0e, 0xad, 0x10, + 0x2e, 0x13, 0x6b, 0x14, 0xa2, 0x16, 0x94, 0x18, 0xb1, 0x18, 0x2f, 0x17, 0x5c, 0x14, 0x4b, 0x10, + 0xfd, 0x0b, 0x9b, 0x06, 0x51, 0x03, 0xf8, 0xfe, 0x25, 0xfb, 0x96, 0xf8, 0x57, 0xf5, 0x4f, 0xf3, + 0x3a, 0xf1, 0xf1, 0xee, 0x6d, 0xef, 0x0e, 0xed, 0xf2, 0xee, 0x87, 0xf0, 0xfc, 0xf1, 0xbd, 0xf3, + 0x9e, 0xf5, 0x0c, 0xf8, 0x4e, 0xf8, 0xb8, 0xf8, 0xe2, 0xf9, 0xaa, 0xfa, 0x53, 0xfc, 0xa2, 0xfc, + 0xe4, 0x00, 0x3d, 0x04, 0x3a, 0x07, 0x1d, 0x0b, 0xc9, 0x0d, 0x69, 0x0e, 0x73, 0x0d, 0x08, 0x0c, + 0xed, 0x08, 0x38, 0x05, 0x0f, 0x02, 0x85, 0xfe, 0x05, 0xfd, 0x1b, 0xfc, 0x17, 0xfd, 0x00, 0xfd, + 0xaa, 0xfd, 0x4f, 0xfd, 0xfb, 0xfd, 0x93, 0xfe, 0x8f, 0x00, 0x85, 0x01, 0xc9, 0x02, 0xf0, 0x03, + 0xce, 0x04, 0xea, 0x06, 0x29, 0x07, 0xba, 0x07, 0xd4, 0x07, 0xcc, 0x07, 0x90, 0x07, 0xbc, 0x07, + 0x5e, 0x0a, 0x7d, 0x0b, 0x76, 0x0d, 0x04, 0x0f, 0x75, 0x0f, 0x46, 0x0e, 0x03, 0x0c, 0xe7, 0x08, + 0x4d, 0x06, 0x5f, 0x01, 0x1e, 0xff, 0x2f, 0xfc, 0x4d, 0xf9, 0xe8, 0xf7, 0xf9, 0xf6, 0x07, 0xf6, + 0x53, 0xf5, 0x3d, 0xf3, 0x19, 0xf2, 0xa0, 0xf0, 0x11, 0xf1, 0xd1, 0xf0, 0xa0, 0xf0, 0xbe, 0xf2, + 0xda, 0xf1, 0x80, 0xf4, 0x3a, 0xf6, 0xe6, 0xf5, 0x3c, 0xf8, 0xe6, 0xf7, 0x28, 0xf8, 0xca, 0xf9, + 0xda, 0xfb, 0xaa, 0xfe, 0x4b, 0x01, 0xb7, 0x04, 0xe0, 0x09, 0x10, 0x0d, 0xfe, 0x10, 0x3d, 0x11, + 0x18, 0x11, 0x59, 0x0f, 0xe8, 0x0c, 0xf9, 0x09, 0x85, 0x08, 0x4b, 0x09, 0x7b, 0x0a, 0x46, 0x07, + 0x15, 0x07, 0xd0, 0x06, 0x14, 0x05, 0xdd, 0x05, 0x4e, 0x04, 0xb9, 0x00, 0x3f, 0xfd, 0x4d, 0xfc, + 0xac, 0xf8, 0x4f, 0xf9, 0x6c, 0xf8, 0x44, 0xf7, 0x57, 0xf6, 0x58, 0xf3, 0x7b, 0xf1, 0xbe, 0xee, + 0x37, 0xed, 0xe6, 0xec, 0x9e, 0xe9, 0xaa, 0xeb, 0x44, 0xee, 0x5b, 0xf3, 0xc0, 0xef, 0x18, 0xed, + 0xc7, 0xef, 0x8c, 0xed, 0x68, 0xf0, 0xc5, 0xee, 0x30, 0xef, 0xb3, 0xee, 0x7d, 0xf1, 0xf7, 0xf5, + 0x39, 0xf7, 0x74, 0xff, 0x7a, 0x05, 0xd9, 0x03, 0xaa, 0x0b, 0x0b, 0x0b, 0xa5, 0x0e, 0x6f, 0x13, + 0x25, 0x19, 0x42, 0x1f, 0x09, 0x22, 0x92, 0x26, 0x9e, 0x28, 0xda, 0x29, 0xec, 0x2b, 0xd2, 0x2f, + 0x74, 0x2f, 0xca, 0x2c, 0x0f, 0x2a, 0xb3, 0x21, 0x8b, 0x1f, 0x39, 0x1a, 0x4b, 0x12, 0x0b, 0x0d, + 0x64, 0x09, 0xff, 0x06, 0xdc, 0xff, 0xc1, 0xfc, 0xdd, 0xf5, 0xc6, 0xf1, 0xaf, 0xed, 0x80, 0xe7, + 0x75, 0xe2, 0xb1, 0xdb, 0xb3, 0xd7, 0x44, 0xd4, 0xb5, 0xd1, 0x34, 0xd8, 0x72, 0xd7, 0xbe, 0xdc, + 0xd6, 0xde, 0xda, 0xe0, 0x53, 0xe8, 0xa3, 0xeb, 0x59, 0xf5, 0x7a, 0xf8, 0x11, 0xfd, 0xb5, 0x02, + 0xb4, 0x03, 0xf9, 0x04, 0x48, 0x07, 0xce, 0x0c, 0xaf, 0x0e, 0xf0, 0x11, 0x9b, 0x0d, 0x90, 0x08, + 0x23, 0x09, 0x08, 0x05, 0x03, 0x00, 0xc5, 0xfa, 0x5c, 0xfa, 0x29, 0xf7, 0x67, 0xf2, 0xda, 0xef, + 0x23, 0xee, 0xd3, 0xef, 0x0e, 0xef, 0xcf, 0xed, 0x57, 0xeb, 0xc7, 0xe9, 0xc1, 0xee, 0x87, 0xf0, + 0xad, 0xf7, 0x8a, 0xfd, 0x02, 0x01, 0xab, 0x05, 0x16, 0x07, 0x4e, 0x0a, 0xbb, 0x0a, 0x58, 0x0f, + 0x8f, 0x13, 0x40, 0x15, 0x11, 0x1b, 0xfc, 0x1d, 0x06, 0x20, 0xae, 0x1e, 0x70, 0x20, 0xe0, 0x1f, + 0x0a, 0x1f, 0x09, 0x1c, 0x8b, 0x11, 0x98, 0x0a, 0x23, 0x04, 0xab, 0xfe, 0x18, 0xf9, 0x0c, 0xf6, + 0xb7, 0xf3, 0x69, 0xf0, 0xff, 0xeb, 0x76, 0xe8, 0xf9, 0xe7, 0xea, 0xe7, 0xf2, 0xe7, 0xac, 0xec, + 0x20, 0xe9, 0x68, 0xec, 0x78, 0xee, 0xbb, 0xef, 0x1b, 0xf6, 0x5f, 0xfb, 0xa8, 0x00, 0x28, 0x04, + 0xf2, 0x08, 0x36, 0x0a, 0xeb, 0x0d, 0x81, 0x15, 0xaa, 0x1a, 0xf5, 0x1d, 0x89, 0x21, 0xd1, 0x25, + 0xce, 0x21, 0x3c, 0x21, 0xd9, 0x1e, 0x66, 0x1a, 0xbe, 0x1a, 0x60, 0x13, 0x2c, 0x0c, 0xa4, 0x03, + 0x6b, 0xfe, 0xbd, 0xf9, 0x6b, 0xf3, 0xb7, 0xf0, 0x7d, 0xee, 0x7b, 0xef, 0x1f, 0xeb, 0x8d, 0xeb, + 0xe7, 0xee, 0xbb, 0xed, 0x77, 0xf4, 0x57, 0xf3, 0xb6, 0xf1, 0x9f, 0xf2, 0x1a, 0xf0, 0xfb, 0xf1, + 0xb9, 0xf2, 0x4e, 0xf6, 0x5c, 0xf9, 0x2c, 0xff, 0xb8, 0x01, 0x12, 0x04, 0x1b, 0x08, 0xad, 0x0d, + 0x13, 0x12, 0xf9, 0x0f, 0xfd, 0x11, 0x0e, 0x0e, 0xa0, 0x07, 0x24, 0x05, 0x2a, 0xff, 0x55, 0x00, + 0x6d, 0xfe, 0x96, 0xfb, 0x56, 0xf5, 0xa4, 0xf1, 0xd1, 0xf0, 0x57, 0xed, 0x18, 0xed, 0xff, 0xec, + 0xdf, 0xf0, 0xf0, 0xf3, 0xf0, 0xf1, 0x3f, 0xf9, 0x10, 0xf9, 0xb8, 0xfe, 0x95, 0x03, 0xe4, 0x03, + 0x02, 0x07, 0x85, 0x06, 0xf6, 0x08, 0xfc, 0x09, 0x43, 0x0e, 0x10, 0x13, 0xe8, 0x17, 0x2f, 0x1d, + 0xaa, 0x1d, 0x19, 0x1c, 0x44, 0x1b, 0xf1, 0x1c, 0x36, 0x17, 0x63, 0x14, 0xfa, 0x12, 0xb9, 0x0b, + 0x57, 0x09, 0xb2, 0x02, 0xf4, 0xfe, 0xc7, 0xfc, 0x93, 0xfb, 0xcd, 0xf6, 0x5f, 0xee, 0x6f, 0xeb, + 0x50, 0xe7, 0xdb, 0xe6, 0x60, 0xe2, 0x76, 0xe0, 0x35, 0xe5, 0xad, 0xe2, 0x29, 0xe5, 0x41, 0xe4, + 0xbc, 0xe3, 0x6e, 0xe9, 0x78, 0xed, 0x50, 0xf1, 0x85, 0xf2, 0x67, 0xf9, 0x31, 0xfa, 0x28, 0x00, + 0x90, 0x03, 0x56, 0x07, 0xa9, 0x0b, 0xf4, 0x0d, 0x3f, 0x10, 0x57, 0x0b, 0x0a, 0x0c, 0x40, 0x0d, + 0x98, 0x09, 0xff, 0x0b, 0xde, 0x09, 0xab, 0x08, 0xc4, 0x05, 0xaa, 0x03, 0x74, 0x00, 0x49, 0xfd, + 0xd7, 0xff, 0x02, 0xfb, 0x93, 0xf6, 0x56, 0xf0, 0xd8, 0xee, 0xc1, 0xee, 0xf9, 0xe7, 0x27, 0xea, + 0xb1, 0xe8, 0x56, 0xea, 0xb1, 0xed, 0x7a, 0xee, 0x52, 0xf2, 0x9a, 0xf7, 0xe2, 0xfc, 0xa5, 0xfd, + 0xb9, 0x01, 0xf9, 0x00, 0x0f, 0x00, 0xea, 0xff, 0x98, 0xff, 0x7f, 0x03, 0xa3, 0x02, 0x1f, 0x09, + 0xf3, 0x08, 0x0f, 0x08, 0x3f, 0x0e, 0xc4, 0x0d, 0xdf, 0x10, 0x25, 0x11, 0xf2, 0x11, 0xed, 0x10, + 0xa8, 0x0d, 0xff, 0x0a, 0x81, 0x06, 0xac, 0x09, 0xe0, 0x09, 0xb9, 0x07, 0x51, 0x03, 0x7e, 0xfc, + 0x05, 0xff, 0x1d, 0xf8, 0x52, 0xf5, 0x13, 0xf7, 0x6d, 0xf8, 0x8d, 0xfb, 0xcd, 0xff, 0x95, 0x02, + 0xcf, 0x05, 0xeb, 0x0c, 0xd0, 0x0d, 0x17, 0x0f, 0x30, 0x0f, 0x8a, 0x0e, 0xec, 0x0b, 0x69, 0x09, + 0x45, 0x0c, 0x28, 0x09, 0x59, 0x0b, 0x2e, 0x0e, 0xa3, 0x08, 0x9e, 0x07, 0x37, 0x06, 0x5b, 0x07, + 0x17, 0x09, 0xf4, 0x0a, 0x3b, 0x0c, 0xf0, 0x0b, 0x82, 0x0d, 0x2b, 0x09, 0xc6, 0x07, 0xec, 0x06, + 0x52, 0x06, 0x1f, 0x05, 0x48, 0xfc, 0x2e, 0xfb, 0x40, 0xfa, 0x9f, 0xf6, 0x22, 0xf6, 0x02, 0xf7, + 0x13, 0xf7, 0x31, 0xf7, 0xe0, 0xf8, 0x89, 0xf4, 0xb7, 0xf4, 0x1d, 0xf2, 0x8a, 0xf1, 0x95, 0xef, + 0x59, 0xef, 0xce, 0xee, 0x46, 0xea, 0xed, 0xeb, 0xbb, 0xed, 0x1a, 0xeb, 0x31, 0xf1, 0xda, 0xf2, + 0xec, 0xf3, 0x34, 0xf7, 0x9c, 0xfa, 0xe2, 0xfe, 0x23, 0x03, 0xb2, 0x07, 0x97, 0x09, 0x61, 0x0d, + 0x0d, 0x0d, 0x40, 0x0c, 0x5f, 0x0d, 0x0c, 0x10, 0xaa, 0x16, 0x17, 0x16, 0x77, 0x15, 0x0d, 0x17, + 0x0d, 0x16, 0x36, 0x11, 0xcd, 0x0e, 0x0a, 0x0d, 0xc0, 0x08, 0x21, 0x08, 0x29, 0x03, 0x0e, 0xff, + 0xba, 0xfe, 0x1c, 0xff, 0x6a, 0xfe, 0x7b, 0xfa, 0x8f, 0xfa, 0x06, 0xf6, 0x9d, 0xf1, 0xd6, 0xf0, + 0xca, 0xeb, 0x9c, 0xed, 0x98, 0xf3, 0xa6, 0xf4, 0x86, 0xf7, 0x83, 0xf9, 0x9c, 0xfe, 0xd4, 0x00, + 0x70, 0x04, 0xd6, 0x05, 0x9e, 0x07, 0x69, 0x0a, 0x77, 0x0a, 0x95, 0x0a, 0x50, 0x09, 0x1b, 0x0c, + 0x1d, 0x0f, 0x0d, 0x0d, 0x43, 0x09, 0x3c, 0x06, 0x7f, 0x00, 0x17, 0xf9, 0x80, 0xf7, 0xdb, 0xf0, + 0x61, 0xef, 0xd0, 0xef, 0x8a, 0xed, 0x2a, 0xeb, 0xd9, 0xeb, 0x4f, 0xef, 0x8f, 0xef, 0x48, 0xf0, + 0x45, 0xf4, 0x04, 0xf4, 0xbe, 0xf7, 0x5d, 0xfa, 0xd0, 0xfb, 0x37, 0x01, 0x9f, 0x04, 0xd5, 0x07, + 0x91, 0x07, 0x93, 0x09, 0x61, 0x09, 0x28, 0x0a, 0x08, 0x0e, 0xf7, 0x0e, 0x87, 0x14, 0xe4, 0x15, + 0x8e, 0x17, 0xdd, 0x15, 0x7c, 0x11, 0x22, 0x11, 0xb0, 0x0f, 0xde, 0x07, 0x3c, 0x01, 0xb8, 0xfb, + 0x03, 0xf3, 0xcf, 0xed, 0x4a, 0xe7, 0x9e, 0xe0, 0x2b, 0xe0, 0x1d, 0xe0, 0x39, 0xdd, 0x3b, 0xdc, + 0x6c, 0xdf, 0x5d, 0xe4, 0xfc, 0xe4, 0x1e, 0xea, 0x6e, 0xee, 0xed, 0xee, 0xaa, 0xf4, 0x64, 0xf6, + 0x2f, 0xf9, 0xd5, 0xfd, 0xee, 0x02, 0x00, 0x06, 0x9d, 0x0b, 0x3e, 0x10, 0xcb, 0x13, 0x8f, 0x1a, + 0x8b, 0x1e, 0x04, 0x23, 0x3c, 0x27, 0xba, 0x28, 0x78, 0x28, 0x70, 0x21, 0x0e, 0x1b, 0x02, 0x1b, + 0x09, 0x1a, 0xcf, 0x13, 0x51, 0x11, 0x99, 0x0b, 0x0c, 0x06, 0x7d, 0x01, 0xca, 0xf9, 0x19, 0xf3, + 0xec, 0xf1, 0x05, 0xf0, 0xa9, 0xed, 0x77, 0xeb, 0x8b, 0xef, 0xab, 0xef, 0x0f, 0xef, 0x94, 0xf3, + 0x97, 0xef, 0x02, 0xef, 0x18, 0xef, 0x26, 0xed, 0x87, 0xec, 0x8c, 0xef, 0x10, 0xf4, 0xc7, 0xf7, + 0xb5, 0xfd, 0x4b, 0xff, 0x32, 0x03, 0x8c, 0x07, 0x64, 0x09, 0x49, 0x0b, 0x9a, 0x0b, 0x9b, 0x0c, + 0xd6, 0x0a, 0xd9, 0x06, 0xb5, 0x02, 0xa9, 0x03, 0x96, 0x00, 0x1e, 0xfe, 0x8c, 0xfb, 0x62, 0xf6, + 0x2d, 0xf1, 0xfc, 0xeb, 0xd0, 0xe8, 0x67, 0xe8, 0x63, 0xe7, 0x96, 0xe9, 0x91, 0xe8, 0x89, 0xea, + 0xdc, 0xef, 0x0b, 0xef, 0xbb, 0xf3, 0x15, 0xf5, 0xb9, 0xf9, 0xf3, 0xfd, 0xaa, 0x02, 0xd9, 0x06, + 0x01, 0x0a, 0x1e, 0x12, 0xff, 0x16, 0xdf, 0x1c, 0x75, 0x1e, 0xf3, 0x1f, 0x91, 0x21, 0x04, 0x22, + 0x8c, 0x23, 0x40, 0x23, 0x28, 0x25, 0xb7, 0x26, 0xe7, 0x24, 0xa8, 0x1e, 0x95, 0x1a, 0xfd, 0x1a, + 0xe4, 0x14, 0x34, 0x10, 0x5d, 0x0a, 0x49, 0x03, 0x7b, 0xfe, 0x22, 0xf8, 0xe3, 0xf1, 0x11, 0xec, + 0x86, 0xec, 0x6a, 0xea, 0xa9, 0xe3, 0xe7, 0xe5, 0x5d, 0xe2, 0x54, 0xe4, 0x79, 0xe7, 0x08, 0xeb, + 0xdd, 0xee, 0xd4, 0xf2, 0x98, 0xf7, 0xb9, 0xf7, 0x17, 0xfb, 0xfc, 0xfa, 0xec, 0xfe, 0xed, 0x00, + 0x1e, 0x02, 0x5c, 0x05, 0xad, 0x03, 0x6b, 0x06, 0xe1, 0x06, 0x6c, 0x07, 0xd0, 0x07, 0x4e, 0x0a, + 0x4b, 0x08, 0x30, 0x02, 0xff, 0x03, 0x2b, 0x05, 0xdf, 0x05, 0x84, 0x07, 0x15, 0x05, 0x6b, 0x06, + 0xa0, 0x04, 0x53, 0x02, 0x9e, 0xfc, 0x9f, 0xf8, 0x27, 0xfc, 0x54, 0xf8, 0x50, 0xf8, 0x17, 0xfb, + 0x7f, 0xfd, 0xab, 0x00, 0xc7, 0x05, 0x53, 0x09, 0xa3, 0x08, 0x83, 0x0a, 0xf0, 0x04, 0x92, 0x01, + 0x85, 0xfd, 0x2c, 0xfb, 0xc1, 0xfb, 0xec, 0xf9, 0xe9, 0xf9, 0x03, 0xf7, 0x5c, 0xf7, 0x15, 0xf6, + 0x0f, 0xf6, 0xb7, 0xf4, 0x26, 0xf5, 0x3a, 0xfb, 0x2b, 0xf8, 0x07, 0xf7, 0xd3, 0xf7, 0x00, 0xf8, + 0x4d, 0xfb, 0x21, 0xfa, 0xc8, 0xf9, 0x8e, 0xf9, 0x41, 0xf8, 0x5f, 0xf8, 0x87, 0xf3, 0x2b, 0xf8, + 0x4d, 0xfb, 0x6f, 0xfd, 0x9f, 0xff, 0xca, 0x03, 0xdc, 0x06, 0xec, 0x08, 0x6d, 0x0b, 0xe6, 0x08, + 0xb8, 0x09, 0x92, 0x0a, 0xbf, 0x08, 0x49, 0x07, 0x57, 0x05, 0x81, 0x06, 0x68, 0x07, 0x69, 0x08, + 0x28, 0x05, 0x5a, 0x04, 0x44, 0x01, 0x9e, 0x02, 0x77, 0x05, 0x94, 0x03, 0x61, 0x09, 0x9b, 0x0d, + 0x99, 0x0d, 0x96, 0x0d, 0xb1, 0x0a, 0x3a, 0x0b, 0xef, 0x09, 0x29, 0x08, 0xcf, 0x04, 0x00, 0x02, + 0xa6, 0x02, 0xb0, 0xfc, 0x0c, 0xfa, 0xc5, 0xf9, 0x56, 0xf9, 0xca, 0xf5, 0xfe, 0xf2, 0xe1, 0xf1, + 0xec, 0xee, 0xfb, 0xef, 0x80, 0xed, 0xbf, 0xee, 0x2d, 0xef, 0x5d, 0xed, 0x74, 0xee, 0x00, 0xed, + 0x57, 0xee, 0x7c, 0xee, 0xd3, 0xef, 0xc7, 0xf2, 0xa7, 0xf7, 0xbe, 0xfb, 0x5a, 0xfd, 0xa5, 0x04, + 0x4e, 0x06, 0x5c, 0x0a, 0x74, 0x10, 0xa5, 0x13, 0x1a, 0x13, 0x22, 0x0f, 0xab, 0x0f, 0x59, 0x11, + 0xe1, 0x13, 0x49, 0x16, 0x9a, 0x14, 0xd1, 0x17, 0x36, 0x16, 0x22, 0x10, 0x0e, 0x09, 0xc6, 0x05, + 0x38, 0x01, 0xbf, 0xfb, 0x20, 0xf9, 0x80, 0xf2, 0x45, 0xf3, 0x32, 0xf1, 0x28, 0xf2, 0x58, 0xf3, + 0x43, 0xf1, 0xae, 0xf2, 0x78, 0xef, 0xa8, 0xee, 0xe3, 0xed, 0xa8, 0xef, 0xa3, 0xf2, 0xba, 0xf4, + 0xff, 0xf9, 0xaa, 0xfa, 0x6e, 0xfe, 0xd5, 0x01, 0x64, 0x01, 0xcc, 0x03, 0x6e, 0x06, 0x30, 0x0b, + 0xe8, 0x0a, 0xbb, 0x0b, 0xcf, 0x0c, 0x8b, 0x0e, 0x56, 0x13, 0xae, 0x11, 0x10, 0x0f, 0x0c, 0x0c, + 0xd5, 0x07, 0xdd, 0xff, 0xd4, 0xfa, 0x6d, 0xf8, 0xb3, 0xf5, 0xf9, 0xf5, 0x88, 0xf1, 0x2e, 0xf1, + 0x01, 0xf2, 0x74, 0xf1, 0x9e, 0xf2, 0xed, 0xf0, 0x14, 0xf5, 0x4b, 0xf7, 0xf2, 0xf8, 0xa5, 0xf8, + 0xfe, 0xfa, 0x7b, 0x00, 0x98, 0x00, 0x5f, 0x05, 0x43, 0x07, 0xd2, 0x06, 0xd9, 0x09, 0x84, 0x0b, + 0x5c, 0x0e, 0x94, 0x11, 0x40, 0x18, 0x1a, 0x1e, 0xf3, 0x20, 0x6f, 0x23, 0xa3, 0x21, 0x20, 0x21, + 0x6f, 0x20, 0x3b, 0x1c, 0x47, 0x16, 0xfe, 0x13, 0xe9, 0x0d, 0x3c, 0x04, 0xae, 0xfe, 0x83, 0xf9, + 0xc6, 0xf5, 0x19, 0xf0, 0xb0, 0xe9, 0xb9, 0xe4, 0x6a, 0xe2, 0xd8, 0xe1, 0x02, 0xe1, 0x0b, 0xe3, + 0x06, 0xe5, 0x0f, 0xe7, 0x93, 0xe6, 0x6e, 0xe4, 0x08, 0xe8, 0x73, 0xe6, 0xa8, 0xe8, 0xcf, 0xed, + 0xec, 0xef, 0x30, 0xf4, 0x3a, 0xfb, 0x2b, 0x02, 0x24, 0x07, 0x0b, 0x0d, 0xb9, 0x14, 0x25, 0x19, + 0xb5, 0x1b, 0x7d, 0x1a, 0xb0, 0x19, 0xa1, 0x19, 0x5a, 0x1b, 0x05, 0x18, 0x0d, 0x16, 0xcd, 0x18, + 0xe7, 0x14, 0xe6, 0x0f, 0x46, 0x08, 0xf0, 0x01, 0x48, 0xfe, 0xc7, 0xfa, 0xdb, 0xf6, 0xc0, 0xf2, + 0x32, 0xf1, 0xd6, 0xf1, 0x67, 0xf5, 0x58, 0xf5, 0xd1, 0xf5, 0x9b, 0xf6, 0xe6, 0xf1, 0x95, 0xf1, + 0xa6, 0xf1, 0x75, 0xf1, 0x6b, 0xf6, 0xc8, 0xfa, 0xf8, 0xfc, 0x24, 0x00, 0x60, 0x04, 0x67, 0x04, + 0xda, 0x04, 0xd5, 0x06, 0xe5, 0x08, 0x7c, 0x0a, 0x9c, 0x08, 0xa4, 0x07, 0xa2, 0x03, 0x92, 0x03, + 0xb7, 0x02, 0x77, 0xfd, 0x54, 0xfe, 0x03, 0xfa, 0x96, 0xf6, 0x20, 0xf3, 0x2e, 0xee, 0x79, 0xed, + 0xe3, 0xed, 0x61, 0xee, 0xe4, 0xee, 0xda, 0xf0, 0xf1, 0xf3, 0x9b, 0xf5, 0x7f, 0xf7, 0xa9, 0xf7, + 0x43, 0xfd, 0x35, 0x01, 0x12, 0x02, 0x79, 0x05, 0x69, 0x0a, 0x8a, 0x0f, 0x61, 0x14, 0x3c, 0x17, + 0x24, 0x16, 0xce, 0x15, 0x6b, 0x15, 0x98, 0x12, 0xb5, 0x0f, 0xf1, 0x0f, 0xad, 0x0f, 0xce, 0x0e, + 0x0e, 0x10, 0xbe, 0x0a, 0xfe, 0x06, 0xa0, 0x06, 0x41, 0x02, 0xc4, 0xff, 0x98, 0xfd, 0xe1, 0xfb, + 0x21, 0xf9, 0xea, 0xf3, 0x5a, 0xf0, 0x5c, 0xed, 0xd3, 0xec, 0x6f, 0xeb, 0x82, 0xe9, 0xaa, 0xe8, + 0x4a, 0xea, 0x95, 0xec, 0xb8, 0xef, 0x3c, 0xf3, 0x14, 0xfa, 0x3f, 0xfe, 0x71, 0x00, 0x44, 0x03, + 0x57, 0x02, 0xbd, 0x00, 0x47, 0x02, 0x9a, 0x02, 0x76, 0x00, 0x8d, 0x01, 0x0d, 0x03, 0xbb, 0x02, + 0xdc, 0x04, 0x3e, 0x07, 0xe4, 0x07, 0x60, 0x0a, 0x11, 0x09, 0x62, 0x05, 0x1b, 0x05, 0xd6, 0x06, + 0x1b, 0x08, 0xdd, 0x08, 0xba, 0x0b, 0xea, 0x0d, 0x94, 0x0d, 0xfa, 0x09, 0x9f, 0x05, 0x65, 0x02, + 0xef, 0xff, 0x40, 0xfd, 0xe0, 0xfa, 0x59, 0xf9, 0xfb, 0xfa, 0x6d, 0xfd, 0x1e, 0xfd, 0xbd, 0xff, + 0x99, 0x03, 0x3e, 0x02, 0x85, 0x01, 0xc8, 0xff, 0x64, 0xfb, 0xdb, 0xf8, 0x95, 0xf8, 0x26, 0xf6, + 0xe8, 0xf6, 0x20, 0xf9, 0x17, 0xfa, 0x6c, 0xf8, 0xcb, 0xf8, 0xa2, 0xfa, 0xf5, 0xfd, 0x24, 0x03, + 0xa2, 0x03, 0x6b, 0x02, 0x45, 0x05, 0xe3, 0x08, 0x3e, 0x09, 0xd6, 0x08, 0xeb, 0x06, 0x5b, 0x06, + 0xcf, 0x02, 0x68, 0xfd, 0x9f, 0xf9, 0x58, 0xf9, 0x6a, 0xf9, 0x97, 0xf9, 0xec, 0xf8, 0x5d, 0xf7, + 0x1a, 0xf9, 0x31, 0xf8, 0xf2, 0xf5, 0xee, 0xf6, 0x24, 0xf7, 0x47, 0xf6, 0x4b, 0xf6, 0xb4, 0xf5, + 0x62, 0xf5, 0xd0, 0xf6, 0xfd, 0xf9, 0xc9, 0xfc, 0xfd, 0xfd, 0x97, 0x01, 0x97, 0x04, 0xcd, 0x04, + 0x8b, 0x08, 0xe5, 0x08, 0x42, 0x0e, 0x62, 0x16, 0x2b, 0x18, 0x19, 0x1a, 0xd7, 0x1a, 0x2b, 0x1a, + 0x58, 0x19, 0x8c, 0x16, 0xec, 0x14, 0x8f, 0x13, 0xfe, 0x10, 0xf3, 0x0c, 0xdf, 0x09, 0x07, 0x07, + 0x28, 0x03, 0xff, 0xff, 0xe1, 0xf8, 0xb7, 0xf4, 0x63, 0xf1, 0xaa, 0xec, 0xcf, 0xeb, 0x8a, 0xeb, + 0x4b, 0xec, 0x77, 0xec, 0x2a, 0xec, 0x15, 0xea, 0x4c, 0xe7, 0xa0, 0xe7, 0x08, 0xe9, 0x25, 0xe9, + 0x9f, 0xeb, 0xf7, 0xef, 0x7b, 0xf1, 0x07, 0xf6, 0xbf, 0xf9, 0x25, 0xfb, 0xa8, 0x02, 0xf2, 0x07, + 0x1a, 0x09, 0x0c, 0x0b, 0x4e, 0x0c, 0x97, 0x0f, 0xc6, 0x0f, 0xea, 0x12, 0x9d, 0x17, 0xc7, 0x1c, + 0x76, 0x1f, 0xc7, 0x1b, 0x60, 0x18, 0xee, 0x13, 0x5b, 0x12, 0xa6, 0x0d, 0x62, 0x06, 0x7c, 0x02, + 0x77, 0xff, 0x4b, 0xfe, 0x15, 0xfc, 0x95, 0xfc, 0x80, 0xfb, 0x1f, 0xfa, 0x6c, 0xf8, 0x91, 0xf3, + 0x2a, 0xf1, 0x59, 0xf1, 0xa3, 0xf0, 0xd0, 0xef, 0x4d, 0xf1, 0x03, 0xf3, 0x74, 0xf2, 0x9d, 0xf3, + 0xa3, 0xf1, 0x79, 0xf2, 0x1e, 0xf7, 0xa6, 0xfa, 0x1a, 0xff, 0xde, 0x01, 0xdd, 0x05, 0x0f, 0x09, + 0xbf, 0x0b, 0x2b, 0x0e, 0x4e, 0x0f, 0x24, 0x12, 0x92, 0x10, 0xe4, 0x0b, 0x91, 0x05, 0x9d, 0x00, + 0x16, 0xff, 0x62, 0xfd, 0x18, 0xfb, 0xf3, 0xf8, 0x48, 0xf8, 0xc2, 0xf4, 0xab, 0xf3, 0xe5, 0xf3, + 0x75, 0xf4, 0xaf, 0xf4, 0xae, 0xf2, 0x3c, 0xf3, 0x7e, 0xf5, 0x84, 0xf8, 0xda, 0xf9, 0xef, 0xfa, + 0x35, 0xfe, 0x92, 0xfd, 0x78, 0xff, 0x4f, 0x01, 0x28, 0x02, 0xec, 0x06, 0xfe, 0x0b, 0xa6, 0x12, + 0x9b, 0x15, 0xbe, 0x17, 0x3a, 0x19, 0xbf, 0x19, 0xce, 0x18, 0xa1, 0x14, 0x7f, 0x13, 0x73, 0x11, + 0x80, 0x0d, 0xc6, 0x06, 0x1a, 0xfe, 0x51, 0xf8, 0x64, 0xf4, 0x9d, 0xee, 0xfc, 0xe7, 0x58, 0xe7, + 0x94, 0xe3, 0xf6, 0xe0, 0x59, 0xe0, 0x09, 0xe2, 0x31, 0xe7, 0xe4, 0xeb, 0x54, 0xf0, 0x82, 0xef, + 0x16, 0xf1, 0x02, 0xf4, 0xc6, 0xf4, 0xfa, 0xf8, 0x52, 0xfc, 0xb4, 0xff, 0x94, 0x06, 0xeb, 0x0b, + 0x7a, 0x10, 0xe6, 0x14, 0xa2, 0x1b, 0xb6, 0x1e, 0xba, 0x1e, 0xe0, 0x1c, 0x35, 0x1a, 0xfd, 0x19, + 0x6b, 0x14, 0x47, 0x12, 0x05, 0x10, 0xd0, 0x0e, 0xa8, 0x0c, 0x86, 0x07, 0x3e, 0x00, 0xbf, 0xfa, + 0x27, 0xf8, 0x42, 0xf3, 0xe0, 0xef, 0x1f, 0xee, 0xcf, 0xec, 0x60, 0xec, 0x4d, 0xec, 0xc1, 0xef, + 0x74, 0xf2, 0x2a, 0xf8, 0xeb, 0xfa, 0xb4, 0xf9, 0xb3, 0xfc, 0x37, 0xfd, 0x04, 0x00, 0xff, 0x04, + 0x53, 0x08, 0x32, 0x0c, 0x5d, 0x0e, 0x46, 0x0d, 0xf2, 0x0b, 0x64, 0x0c, 0x9c, 0x0b, 0x7a, 0x0b, + 0xa6, 0x09, 0xc4, 0x07, 0xfb, 0x08, 0x79, 0x06, 0x95, 0x04, 0x45, 0x01, 0xb5, 0xfd, 0x0e, 0xfd, + 0xb1, 0xf9, 0x59, 0xf6, 0xe4, 0xf0, 0xe4, 0xef, 0x50, 0xef, 0x9c, 0xee, 0x81, 0xee, 0x49, 0xef, + 0xba, 0xf0, 0xf9, 0xef, 0xa9, 0xf0, 0xbf, 0xf1, 0xa8, 0xf5, 0x8f, 0xfb, 0xfb, 0xfb, 0x07, 0xfe, + 0x4c, 0x01, 0xb6, 0x02, 0x05, 0x07, 0x51, 0x09, 0x07, 0x0c, 0x20, 0x0f, 0x02, 0x0f, 0xb1, 0x0c, + 0xa8, 0x09, 0x32, 0x08, 0xd0, 0x0a, 0xdb, 0x0d, 0xd8, 0x0c, 0xfa, 0x0d, 0xf8, 0x0d, 0x68, 0x0e, + 0x2f, 0x0e, 0x9a, 0x0c, 0x5a, 0x0c, 0x4d, 0x0b, 0xf9, 0x0c, 0x35, 0x0a, 0xb2, 0x05, 0x9d, 0x03, + 0x62, 0xff, 0x21, 0xfa, 0xcd, 0xf4, 0x16, 0xf2, 0x66, 0xed, 0xfe, 0xeb, 0xfa, 0xeb, 0xf9, 0xeb, + 0x4f, 0xf0, 0xa6, 0xf2, 0x22, 0xf3, 0x7b, 0xf3, 0xca, 0xf1, 0x06, 0xf1, 0x40, 0xef, 0x63, 0xee, + 0xbb, 0xee, 0x58, 0xf0, 0xbb, 0xf1, 0x71, 0xf2, 0x1c, 0xf3, 0x3d, 0xf6, 0x9c, 0xfc, 0x09, 0x01, + 0x49, 0x05, 0x1a, 0x08, 0x00, 0x0b, 0xdb, 0x0b, 0xe8, 0x0b, 0x2a, 0x10, 0xcd, 0x12, 0x95, 0x18, + 0x40, 0x1b, 0x5b, 0x18, 0x8d, 0x15, 0x03, 0x13, 0x2c, 0x10, 0xd4, 0x0b, 0xe4, 0x08, 0x69, 0x06, + 0x1d, 0x05, 0xad, 0x04, 0x9d, 0x02, 0x92, 0x02, 0xe0, 0x03, 0xf9, 0x03, 0x7c, 0x01, 0xcc, 0xfd, + 0x82, 0xfb, 0x93, 0xf8, 0x64, 0xf7, 0xa5, 0xf4, 0x78, 0xf3, 0x84, 0xf4, 0xbe, 0xf3, 0x95, 0xf2, + 0xa2, 0xef, 0x6d, 0xf0, 0x99, 0xf3, 0x42, 0xf6, 0x22, 0xf8, 0x0c, 0xfb, 0xa5, 0xfe, 0x45, 0xfe, + 0x9d, 0xff, 0x92, 0xff, 0x66, 0x01, 0xd5, 0x05, 0xb8, 0x05, 0xe0, 0x02, 0x30, 0xff, 0xf8, 0xfe, + 0x6a, 0xff, 0xb6, 0xff, 0xb1, 0x00, 0x0b, 0x01, 0x00, 0x01, 0x4a, 0x02, 0x1a, 0x01, 0xc2, 0xff, + 0xd3, 0x01, 0xd2, 0x00, 0x4e, 0x00, 0xdf, 0xff, 0x37, 0xfe, 0x7d, 0xff, 0xd4, 0xfe, 0x86, 0xfd, + 0x5b, 0xfe, 0xe4, 0xfd, 0x95, 0xff, 0x50, 0xfe, 0x9e, 0xfc, 0xce, 0xfd, 0x97, 0x00, 0xd8, 0x02, + 0x69, 0x04, 0xf7, 0x06, 0xfc, 0x06, 0x1c, 0x08, 0x83, 0x07, 0xb9, 0x07, 0xbb, 0x09, 0x00, 0x0d, + 0xcd, 0x0e, 0xe7, 0x0c, 0xf1, 0x0a, 0x51, 0x0a, 0x81, 0x07, 0xe5, 0x05, 0x2d, 0x04, 0x96, 0xff, + 0x52, 0xfc, 0xb5, 0xf7, 0x63, 0xf3, 0x93, 0xf4, 0x32, 0xf6, 0x5a, 0xf7, 0x26, 0xf8, 0xf6, 0xf4, + 0x61, 0xf5, 0xb4, 0xf3, 0x34, 0xf1, 0x2a, 0xf1, 0xea, 0xef, 0x23, 0xf3, 0x2d, 0xf7, 0x00, 0xf8, + 0xea, 0xf8, 0x92, 0xfb, 0x97, 0xff, 0x30, 0x02, 0x30, 0x05, 0xc8, 0x07, 0xc4, 0x0b, 0xdc, 0x0e, + 0x5b, 0x11, 0x2d, 0x12, 0x5e, 0x14, 0x02, 0x1b, 0x06, 0x1d, 0xa5, 0x1b, 0xee, 0x19, 0x60, 0x15, + 0x24, 0x11, 0x8c, 0x0d, 0xfd, 0x06, 0x88, 0x02, 0x97, 0xfe, 0x89, 0xf7, 0xe2, 0xf2, 0x86, 0xf0, + 0xa6, 0xf0, 0x1c, 0xf3, 0xad, 0xf2, 0x23, 0xf0, 0xe6, 0xee, 0x66, 0xed, 0x6c, 0xee, 0x0f, 0xf0, + 0x8e, 0xf2, 0xcf, 0xf5, 0x86, 0xf7, 0xe3, 0xf7, 0xfe, 0xf7, 0xbc, 0xf9, 0xb4, 0xfd, 0x68, 0x00, + 0x25, 0x04, 0x67, 0x09, 0x70, 0x0d, 0xf7, 0x11, 0xfc, 0x13, 0xd3, 0x11, 0x3d, 0x13, 0x31, 0x13, + 0xc6, 0x10, 0x43, 0x0c, 0xa9, 0x06, 0xfd, 0x00, 0x74, 0xfb, 0x07, 0xf6, 0x60, 0xf1, 0x0a, 0xef, + 0x82, 0xec, 0x6f, 0xe7, 0xfe, 0xe4, 0xf5, 0xe4, 0x9c, 0xe6, 0x15, 0xea, 0xe9, 0xeb, 0xe5, 0xed, + 0xf3, 0xee, 0x86, 0xf0, 0xe5, 0xf3, 0x88, 0xf8, 0xc4, 0xfd, 0x41, 0x03, 0xac, 0x07, 0x11, 0x09, + 0xf2, 0x0a, 0x9e, 0x0f, 0x77, 0x15, 0x79, 0x19, 0xc5, 0x1d, 0x59, 0x1f, 0x61, 0x22, 0xdb, 0x23, + 0x11, 0x20, 0x87, 0x1c, 0x14, 0x1a, 0x51, 0x19, 0xbc, 0x16, 0xfd, 0x11, 0x8f, 0x0d, 0x4b, 0x06, + 0x9b, 0xff, 0xff, 0xf7, 0x95, 0xf0, 0x4d, 0xec, 0x3c, 0xe7, 0xe3, 0xe2, 0x2c, 0xe0, 0x17, 0xdf, + 0x31, 0xe2, 0xb8, 0xe5, 0xa8, 0xe7, 0xe0, 0xe8, 0x10, 0xe9, 0xee, 0xe9, 0x1f, 0xec, 0x6f, 0xed, + 0x45, 0xf0, 0x84, 0xf5, 0xb3, 0xf9, 0xc0, 0xfa, 0xed, 0xfc, 0x43, 0x01, 0x75, 0x06, 0xd4, 0x0b, + 0x77, 0x0e, 0x14, 0x10, 0x92, 0x11, 0x58, 0x11, 0x83, 0x10, 0x25, 0x0e, 0x8f, 0x0f, 0x2f, 0x11, + 0x56, 0x12, 0xb1, 0x12, 0xf8, 0x0e, 0xbd, 0x0c, 0x71, 0x0a, 0xaf, 0x05, 0xa2, 0x03, 0x1c, 0x03, + 0xf8, 0x00, 0x0d, 0xfe, 0xf8, 0xfa, 0x35, 0xf8, 0x22, 0xfa, 0x0f, 0xfa, 0xf6, 0xf9, 0xf0, 0xfa, + 0x6e, 0xfa, 0x2a, 0xfb, 0x58, 0xfa, 0x2e, 0xf9, 0x21, 0xfc, 0x5a, 0xfe, 0x0b, 0xff, 0x8a, 0xfc, + 0x5f, 0xfa, 0x83, 0xf9, 0x67, 0xf9, 0x99, 0xf9, 0x9d, 0xfa, 0xac, 0xfb, 0xa5, 0xfc, 0x8e, 0xfe, + 0x31, 0xfd, 0x2d, 0xfe, 0xb5, 0x00, 0x1f, 0x03, 0xd1, 0x04, 0x0e, 0x03, 0xba, 0x00, 0xc7, 0x00, + 0xc6, 0x00, 0xe6, 0xfe, 0x81, 0xfe, 0xb6, 0xfd, 0x4b, 0xfd, 0x69, 0xfc, 0x3b, 0xf9, 0xb8, 0xfa, + 0x3c, 0xfd, 0xe1, 0xfe, 0x9d, 0x02, 0xcb, 0x03, 0xae, 0x05, 0xb6, 0x06, 0x43, 0x06, 0x09, 0x06, + 0x00, 0x06, 0x85, 0x08, 0x1d, 0x09, 0xe4, 0x06, 0x96, 0x05, 0x2d, 0x04, 0xb0, 0x03, 0xb2, 0x05, + 0xbd, 0x06, 0xad, 0x06, 0x5f, 0x08, 0xa4, 0x08, 0x6d, 0x07, 0xcc, 0x06, 0x4e, 0x07, 0xff, 0x09, + 0x2b, 0x0b, 0xd8, 0x08, 0xd6, 0x05, 0xc8, 0x03, 0x0c, 0x00, 0xe6, 0xfc, 0xf5, 0xf9, 0x5c, 0xf6, + 0x97, 0xf4, 0x72, 0xf0, 0x9e, 0xee, 0x62, 0xf0, 0x01, 0xf2, 0x2f, 0xf6, 0x7c, 0xf8, 0x26, 0xfb, + 0xe5, 0xfb, 0xb2, 0xfa, 0x28, 0xf9, 0x06, 0xf6, 0x8a, 0xf6, 0x1a, 0xf9, 0x63, 0xfa, 0x10, 0xfa, + 0xcc, 0xf9, 0x0a, 0xfa, 0x4c, 0xfb, 0x77, 0xfd, 0x3c, 0xfe, 0x31, 0x01, 0xf0, 0x04, 0x1b, 0x06, + 0xb5, 0x05, 0x91, 0x05, 0x3d, 0x07, 0x46, 0x0a, 0x64, 0x0c, 0xa1, 0x0b, 0xcf, 0x0b, 0x64, 0x0b, + 0x63, 0x09, 0x91, 0x08, 0x7b, 0x07, 0xc8, 0x07, 0x4e, 0x06, 0xbd, 0x03, 0xf3, 0x01, 0x80, 0x02, + 0x28, 0x04, 0xa6, 0x05, 0x12, 0x06, 0x0a, 0x05, 0x49, 0x03, 0xe4, 0x02, 0x82, 0xff, 0x47, 0xfd, + 0xa5, 0xfd, 0xae, 0xff, 0x2c, 0xff, 0xfc, 0xfb, 0xd0, 0xf9, 0x8f, 0xf7, 0x8c, 0xf7, 0xa0, 0xf7, + 0xf2, 0xf8, 0xfd, 0xfb, 0xe4, 0xfe, 0x83, 0x00, 0x08, 0xff, 0x72, 0xfe, 0x8f, 0xfe, 0xfc, 0x00, + 0x19, 0x03, 0x8c, 0x03, 0xa7, 0x04, 0xa8, 0x02, 0x34, 0x01, 0x2a, 0x01, 0xfb, 0xfe, 0x99, 0xff, + 0xa8, 0xfe, 0x2d, 0xfb, 0x49, 0xf8, 0x9f, 0xf7, 0x4f, 0xf6, 0xcc, 0xf7, 0x61, 0xf8, 0x3f, 0xf6, + 0xab, 0xf5, 0xb5, 0xf4, 0xa0, 0xf3, 0x81, 0xf2, 0x67, 0xf5, 0x16, 0xf9, 0x73, 0xf9, 0x03, 0xfb, + 0xf3, 0xfb, 0xaa, 0xfe, 0xab, 0x01, 0xdd, 0x04, 0xfb, 0x06, 0xc4, 0x0a, 0xc1, 0x0e, 0x7f, 0x10, + 0x74, 0x12, 0x5f, 0x12, 0xbe, 0x14, 0xb0, 0x19, 0x89, 0x1a, 0xd2, 0x1d, 0x3f, 0x1e, 0x36, 0x1b, + 0xa2, 0x17, 0xa6, 0x10, 0xb8, 0x09, 0x8e, 0x05, 0xfc, 0xfe, 0xa5, 0xf6, 0xd9, 0xee, 0xd5, 0xe8, + 0x49, 0xe6, 0x7c, 0xe5, 0x57, 0xe4, 0xdc, 0xe2, 0xf1, 0xe0, 0x32, 0xe1, 0x05, 0xde, 0x6d, 0xdc, + 0x5d, 0xe0, 0x97, 0xe3, 0x1f, 0xe6, 0xe6, 0xe7, 0x6b, 0xe9, 0xb8, 0xed, 0x08, 0xf4, 0x79, 0xf8, + 0x24, 0xfd, 0x5d, 0x04, 0xcc, 0x09, 0xa5, 0x11, 0x9f, 0x14, 0x00, 0x17, 0x3b, 0x1c, 0x86, 0x1f, + 0x80, 0x23, 0x5c, 0x25, 0xe3, 0x23, 0xe6, 0x21, 0x0a, 0x1d, 0x4e, 0x17, 0x37, 0x13, 0xc6, 0x10, + 0x98, 0x0c, 0x45, 0x06, 0x4f, 0xff, 0x33, 0xf9, 0xfd, 0xf4, 0xc7, 0xf2, 0xd4, 0xf2, 0xc7, 0xf1, + 0xc7, 0xf1, 0x66, 0xf1, 0x46, 0xee, 0xaf, 0xee, 0x88, 0xf0, 0x8b, 0xf3, 0x73, 0xf5, 0x9d, 0xf5, + 0x89, 0xf5, 0x37, 0xf7, 0x4e, 0xf9, 0xfc, 0xfb, 0x35, 0xfe, 0x6a, 0x00, 0xb4, 0x05, 0x2c, 0x09, + 0x07, 0x0a, 0x22, 0x0c, 0xa8, 0x0d, 0x75, 0x0e, 0xb1, 0x0e, 0x69, 0x0e, 0x27, 0x0c, 0xa8, 0x09, + 0xbe, 0x05, 0x9e, 0x00, 0x37, 0xfe, 0x4c, 0xfd, 0xfc, 0xf8, 0x99, 0xf5, 0x3d, 0xf2, 0x2a, 0xf0, + 0xc4, 0xef, 0x11, 0xf3, 0xe9, 0xf5, 0x93, 0xf7, 0xc5, 0xfa, 0x85, 0xfa, 0xa2, 0xf8, 0xaf, 0xf7, + 0x4e, 0xf9, 0x7d, 0xfd, 0x36, 0x01, 0x07, 0x03, 0xf1, 0x03, 0x94, 0x06, 0xcb, 0x09, 0xed, 0x0b, + 0x87, 0x0d, 0x6c, 0x0f, 0x2a, 0x12, 0xd9, 0x12, 0x7f, 0x10, 0x79, 0x0f, 0x02, 0x10, 0x68, 0x0e, + 0x81, 0x0e, 0x18, 0x0d, 0x6a, 0x0b, 0x68, 0x0b, 0xa9, 0x06, 0xad, 0x01, 0xf1, 0xfd, 0x2f, 0xfa, + 0x6b, 0xf6, 0x1e, 0xf2, 0xe7, 0xee, 0xd5, 0xeb, 0xb9, 0xeb, 0xcc, 0xed, 0x8a, 0xee, 0xa7, 0xf0, + 0xb7, 0xf2, 0x4a, 0xf3, 0xfc, 0xf0, 0x24, 0xf1, 0xfd, 0xf3, 0x06, 0xf8, 0xb3, 0xfd, 0xc0, 0xfe, + 0xa2, 0x00, 0xeb, 0x01, 0x9c, 0x02, 0x23, 0x04, 0xe3, 0x05, 0xec, 0x07, 0x55, 0x0b, 0xd7, 0x0b, + 0x92, 0x0a, 0x8c, 0x0a, 0x2b, 0x0a, 0xb5, 0x0a, 0x59, 0x0b, 0xf8, 0x09, 0xe2, 0x0a, 0xd7, 0x0a, + 0x6d, 0x08, 0x72, 0x06, 0x40, 0x04, 0x27, 0x03, 0x75, 0x00, 0x26, 0xfd, 0x4e, 0xfa, 0x50, 0xf7, + 0x8d, 0xf6, 0x65, 0xf6, 0xfc, 0xf6, 0xec, 0xf8, 0x2f, 0xfd, 0x49, 0xfd, 0x5d, 0xfd, 0x22, 0xfe, + 0xe3, 0xff, 0x3d, 0x05, 0x4b, 0x06, 0x15, 0x06, 0xe6, 0x04, 0x6e, 0x02, 0x1c, 0x02, 0xbb, 0x00, + 0x51, 0xff, 0x01, 0x01, 0x5f, 0x03, 0x8a, 0x02, 0x9f, 0x00, 0xf5, 0xfd, 0x38, 0xfc, 0x16, 0xfd, + 0x66, 0xfd, 0xb0, 0xfc, 0x68, 0xfd, 0xba, 0xfc, 0xb2, 0xf9, 0xac, 0xf5, 0x5a, 0xf4, 0xea, 0xf2, + 0x46, 0xf0, 0x83, 0xee, 0xde, 0xec, 0x92, 0xeb, 0xb8, 0xee, 0xf3, 0xf0, 0xeb, 0xf2, 0x5e, 0xf8, + 0x5f, 0xfc, 0x8a, 0xff, 0x98, 0x01, 0x85, 0x00, 0x0a, 0x03, 0x67, 0x05, 0x1c, 0x08, 0x4d, 0x09, + 0xf8, 0x08, 0xaf, 0x09, 0xa6, 0x0b, 0x83, 0x0c, 0xe0, 0x0b, 0x2d, 0x0d, 0x48, 0x0e, 0x36, 0x0e, + 0xd0, 0x0d, 0x34, 0x0c, 0xfd, 0x0c, 0x88, 0x0f, 0xb5, 0x10, 0x98, 0x11, 0xd5, 0x12, 0x2e, 0x11, + 0x81, 0x0c, 0x6a, 0x07, 0xeb, 0x04, 0x61, 0x01, 0xb1, 0xfe, 0xaa, 0xfa, 0x21, 0xf6, 0x6b, 0xf3, + 0x25, 0xf3, 0x15, 0xf2, 0x1f, 0xf3, 0x68, 0xf4, 0x14, 0xf5, 0xc0, 0xf4, 0x13, 0xf2, 0x2e, 0xef, + 0xc1, 0xed, 0x48, 0xee, 0x3c, 0xee, 0x68, 0xee, 0x00, 0xef, 0x4e, 0xef, 0xf9, 0xf0, 0x86, 0xf0, + 0x64, 0xf2, 0xa4, 0xf6, 0x59, 0xfb, 0x2e, 0x00, 0x8d, 0x03, 0x25, 0x05, 0xf0, 0x08, 0x3d, 0x0d, + 0x96, 0x0f, 0x2b, 0x12, 0xe4, 0x15, 0x29, 0x17, 0x23, 0x17, 0xd9, 0x16, 0x1e, 0x17, 0x64, 0x18, + 0x6c, 0x19, 0xfb, 0x17, 0xe1, 0x12, 0x4a, 0x0e, 0x1d, 0x0b, 0xc2, 0x06, 0xa8, 0x04, 0xc8, 0x02, + 0x4b, 0x01, 0xea, 0xfe, 0xde, 0xf9, 0xa5, 0xf5, 0x93, 0xf4, 0xcf, 0xf2, 0xb6, 0xf1, 0xb4, 0xf0, + 0xcd, 0xee, 0xb2, 0xef, 0x5f, 0xf0, 0x06, 0xef, 0x7c, 0xef, 0x99, 0xf1, 0x18, 0xf5, 0x7e, 0xf9, + 0x1a, 0xfd, 0xf1, 0xfd, 0xad, 0x00, 0x11, 0x04, 0xb4, 0x06, 0xcc, 0x0a, 0x55, 0x0f, 0xa7, 0x12, + 0xac, 0x12, 0x58, 0x12, 0x8f, 0x12, 0xa5, 0x10, 0x57, 0x0f, 0xba, 0x0a, 0x65, 0x04, 0xe0, 0x00, + 0x4f, 0xfd, 0x0d, 0xfb, 0xb4, 0xfa, 0x38, 0xfb, 0x89, 0xfb, 0x0e, 0xf9, 0x9f, 0xf3, 0xf2, 0xef, + 0x88, 0xee, 0x98, 0xee, 0x1c, 0xf1, 0x92, 0xf1, 0x61, 0xf2, 0x92, 0xf4, 0xe2, 0xf6, 0x77, 0xf8, + 0xf8, 0xfa, 0xa5, 0xfc, 0x11, 0x00, 0x70, 0x04, 0xe5, 0x05, 0xe0, 0x08, 0xd2, 0x0b, 0x9c, 0x0d, + 0xed, 0x0f, 0x15, 0x13, 0x74, 0x18, 0x8b, 0x1a, 0x72, 0x18, 0xb6, 0x15, 0x05, 0x11, 0x02, 0x0d, + 0xe9, 0x08, 0xd4, 0x01, 0x63, 0xfb, 0xed, 0xf6, 0xaf, 0xf2, 0xc3, 0xef, 0x57, 0xed, 0xe8, 0xec, + 0x62, 0xee, 0x76, 0xed, 0xd5, 0xea, 0x80, 0xe9, 0x58, 0xe9, 0xc8, 0xec, 0xf4, 0xef, 0xbe, 0xf0, + 0x19, 0xf1, 0xbc, 0xf2, 0x41, 0xf3, 0x67, 0xf4, 0x3b, 0xf6, 0x5d, 0xf9, 0x14, 0xff, 0xde, 0x03, + 0x4f, 0x07, 0x78, 0x0a, 0x33, 0x0e, 0xfe, 0x10, 0x6b, 0x10, 0x64, 0x12, 0xc2, 0x14, 0xc4, 0x14, + 0x07, 0x14, 0x55, 0x10, 0x74, 0x0b, 0xc8, 0x08, 0x74, 0x07, 0xae, 0x04, 0xd9, 0x00, 0xe1, 0xfb, + 0x69, 0xf7, 0xb3, 0xf4, 0xb5, 0xf1, 0x86, 0xf3, 0x5b, 0xf6, 0xad, 0xf6, 0xd6, 0xf6, 0xc6, 0xf5, + 0x25, 0xf6, 0xbf, 0xf8, 0xaf, 0xfa, 0x0c, 0xfb, 0x3c, 0xfb, 0xb8, 0xfd, 0x0d, 0xfe, 0x39, 0xff, + 0x83, 0x01, 0x73, 0x04, 0x8d, 0x07, 0x24, 0x0a, 0xd9, 0x09, 0x2f, 0x0a, 0x37, 0x0b, 0x90, 0x0a, + 0xf9, 0x08, 0x39, 0x09, 0xe2, 0x09, 0x98, 0x08, 0x51, 0x07, 0x90, 0x04, 0x8b, 0xff, 0xfd, 0xfb, + 0x7f, 0xf8, 0xe8, 0xf4, 0xd6, 0xf1, 0x79, 0xef, 0x1b, 0xee, 0xcf, 0xeb, 0x67, 0xeb, 0xe4, 0xee, + 0x03, 0xf3, 0x2b, 0xf6, 0xe9, 0xf5, 0x4d, 0xf5, 0xfe, 0xf4, 0x4c, 0xf8, 0x34, 0xfc, 0x7a, 0xfe, + 0x2c, 0x03, 0xba, 0x07, 0xbe, 0x0b, 0x3f, 0x10, 0x18, 0x12, 0x51, 0x14, 0xe9, 0x16, 0xf3, 0x17, + 0xec, 0x16, 0xc0, 0x16, 0x23, 0x17, 0x36, 0x17, 0x6f, 0x16, 0x6c, 0x17, 0xef, 0x16, 0xc2, 0x14, + 0x1e, 0x12, 0x84, 0x0c, 0x75, 0x07, 0xec, 0x03, 0xc9, 0xfe, 0x4f, 0xf9, 0x05, 0xf3, 0xdd, 0xee, + 0x15, 0xeb, 0xd8, 0xe6, 0xf4, 0xe3, 0x90, 0xe4, 0xe6, 0xe6, 0xac, 0xe8, 0xca, 0xea, 0x22, 0xe9, + 0x0e, 0xe9, 0x16, 0xed, 0x14, 0xf0, 0xe4, 0xf4, 0xe4, 0xf8, 0xd1, 0xfb, 0x26, 0xfe, 0x5e, 0xff, + 0xb9, 0xff, 0xc5, 0x01, 0xa0, 0x05, 0x7d, 0x09, 0xd7, 0x0b, 0xcf, 0x0e, 0xdd, 0x11, 0xe3, 0x11, + 0xf5, 0x10, 0x06, 0x12, 0xd5, 0x11, 0xff, 0x12, 0x90, 0x12, 0xb1, 0x10, 0x8b, 0x10, 0x66, 0x0f, + 0x93, 0x0d, 0x57, 0x0a, 0x08, 0x05, 0x5d, 0x02, 0xa8, 0xfd, 0x4b, 0xf8, 0x76, 0xf6, 0xd6, 0xf6, + 0x6d, 0xf7, 0x78, 0xfa, 0xf2, 0xfa, 0xe0, 0xf9, 0x6a, 0xfa, 0x6b, 0xfa, 0xc9, 0xfa, 0xa2, 0xfa, + 0xa6, 0xfb, 0x30, 0xfc, 0x95, 0xfa, 0xe0, 0xf7, 0x57, 0xf5, 0x5e, 0xf5, 0x15, 0xf8, 0xb5, 0xf9, + 0x8b, 0xf8, 0x6e, 0xf9, 0xc0, 0xfa, 0x06, 0xfa, 0x3a, 0xfb, 0xc8, 0xfc, 0x65, 0xff, 0xd2, 0x02, + 0xc9, 0x03, 0xde, 0x04, 0x5e, 0x04, 0xf7, 0x03, 0x3c, 0x03, 0x8c, 0xff, 0x39, 0xfd, 0xc9, 0xfc, + 0xac, 0xfb, 0xfa, 0xfb, 0x68, 0xfe, 0x75, 0x00, 0x20, 0x04, 0xc4, 0x06, 0x3a, 0x06, 0x5d, 0x03, + 0xe6, 0x00, 0x68, 0x00, 0x3c, 0xfe, 0xac, 0xfd, 0x9f, 0xfc, 0xef, 0xfc, 0x72, 0xfe, 0x68, 0xfd, + 0x15, 0xfb, 0x88, 0xfa, 0xbf, 0xfc, 0xc1, 0xfd, 0x9b, 0xfe, 0x76, 0x00, 0x5f, 0x00, 0x4a, 0x01, + 0xcb, 0x02, 0x67, 0x05, 0xdf, 0x09, 0xbd, 0x0c, 0x21, 0x0e, 0x29, 0x0d, 0x4e, 0x0c, 0xc9, 0x0b, + 0x55, 0x0a, 0x42, 0x08, 0x88, 0x06, 0xda, 0x05, 0xac, 0x03, 0xb8, 0x00, 0x43, 0xfe, 0xb5, 0xfc, + 0x98, 0xfc, 0xa9, 0xfc, 0x43, 0xfa, 0xb2, 0xf6, 0xef, 0xf5, 0x30, 0xf4, 0x2e, 0xf3, 0x4c, 0xf2, + 0xfb, 0xef, 0x58, 0xef, 0x34, 0xee, 0xfe, 0xed, 0x93, 0xec, 0x55, 0xed, 0x99, 0xf0, 0xde, 0xf2, + 0xdd, 0xf6, 0xa5, 0xfb, 0x6d, 0xff, 0x8e, 0x01, 0xa3, 0x03, 0x95, 0x05, 0xfa, 0x09, 0x48, 0x0f, + 0x8b, 0x11, 0x1a, 0x12, 0x51, 0x12, 0x67, 0x14, 0xc2, 0x16, 0xaa, 0x15, 0xeb, 0x15, 0x1e, 0x14, + 0xef, 0x0f, 0xd8, 0x0a, 0xb8, 0x05, 0x61, 0x02, 0xee, 0x01, 0x1a, 0x02, 0x62, 0x00, 0x56, 0xfe, + 0x64, 0xfc, 0x25, 0xfa, 0xea, 0xf8, 0x67, 0xf7, 0x7b, 0xf6, 0xe5, 0xf5, 0x28, 0xf7, 0x54, 0xf8, + 0x58, 0xf7, 0x5f, 0xf8, 0x5d, 0xfa, 0x67, 0xfa, 0xb0, 0xfb, 0x42, 0xfc, 0x8c, 0xfd, 0x17, 0xff, + 0x14, 0xff, 0x2f, 0x00, 0xac, 0x03, 0x64, 0x07, 0x2f, 0x0b, 0x5e, 0x0b, 0xf2, 0x09, 0xf4, 0x09, + 0x19, 0x07, 0x16, 0x04, 0x8c, 0x01, 0xf1, 0xfc, 0x49, 0xf8, 0xcd, 0xf3, 0x7f, 0xf1, 0x3e, 0xf1, + 0x88, 0xf4, 0xbb, 0xf5, 0x69, 0xf5, 0x7b, 0xf4, 0xf1, 0xf2, 0xb3, 0xf2, 0xa3, 0xf3, 0x40, 0xf5, + 0x46, 0xf7, 0xed, 0xfa, 0x2e, 0x00, 0xba, 0x02, 0x5b, 0x04, 0x2c, 0x07, 0xc6, 0x08, 0xea, 0x09, + 0x4c, 0x0c, 0x52, 0x0e, 0xd1, 0x12, 0x5c, 0x15, 0x30, 0x16, 0x26, 0x18, 0x9e, 0x19, 0xfb, 0x1b, + 0xe3, 0x1b, 0xfe, 0x18, 0xc6, 0x16, 0x74, 0x12, 0xa0, 0x0c, 0xfa, 0x05, 0x89, 0x00, 0xd1, 0xfb, + 0xec, 0xf5, 0x1d, 0xef, 0xfd, 0xe7, 0xdb, 0xe4, 0xbe, 0xe5, 0x11, 0xe7, 0xd8, 0xe6, 0xe5, 0xe4, + 0xa8, 0xe4, 0x27, 0xe4, 0x7b, 0xe6, 0x9f, 0xe8, 0xa1, 0xea, 0xc7, 0xed, 0xc8, 0xf0, 0x29, 0xf2, + 0x55, 0xf3, 0x35, 0xf6, 0x41, 0xfa, 0xaa, 0xff, 0x9d, 0x05, 0x32, 0x0c, 0x8e, 0x12, 0xd0, 0x15, + 0x1e, 0x18, 0x97, 0x18, 0x7b, 0x18, 0x6e, 0x1a, 0x20, 0x1b, 0x1c, 0x1a, 0x79, 0x19, 0xb5, 0x18, + 0x1a, 0x16, 0xda, 0x11, 0xc2, 0x0d, 0x9c, 0x08, 0xd5, 0x04, 0x9c, 0xfe, 0x04, 0xf8, 0x31, 0xf3, + 0x51, 0xf2, 0x7e, 0xf2, 0x09, 0xf2, 0xd2, 0xf1, 0x01, 0xf0, 0xbd, 0xee, 0x7e, 0xee, 0x49, 0xef, + 0xc6, 0xf0, 0x8c, 0xf2, 0xa6, 0xf4, 0xd3, 0xf4, 0x47, 0xf6, 0x38, 0xf9, 0xc4, 0xfc, 0x30, 0x00, + 0x28, 0x02, 0x3e, 0x04, 0x3d, 0x06, 0x83, 0x06, 0x8e, 0x06, 0x31, 0x06, 0xbf, 0x07, 0xb7, 0x0b, + 0x9c, 0x0d, 0x4d, 0x0d, 0x43, 0x0d, 0x16, 0x0c, 0x22, 0x09, 0xdb, 0x04, 0xc6, 0x00, 0x6a, 0xfe, + 0x05, 0xfd, 0x37, 0xfa, 0xd7, 0xf6, 0xb6, 0xf5, 0x8c, 0xf6, 0x91, 0xf7, 0x4e, 0xf8, 0xd0, 0xf7, + 0xe9, 0xf6, 0xb3, 0xf5, 0xb1, 0xf5, 0x32, 0xf6, 0x8e, 0xf7, 0xa3, 0xfc, 0x58, 0x00, 0x31, 0x02, + 0xc0, 0x03, 0x98, 0x05, 0x98, 0x08, 0x00, 0x0a, 0xb8, 0x09, 0x98, 0x09, 0x74, 0x09, 0x0b, 0x0a, + 0x2f, 0x0a, 0x26, 0x0a, 0x8a, 0x0b, 0x6f, 0x0d, 0xa3, 0x0d, 0x3d, 0x0d, 0xe9, 0x0c, 0xd0, 0x0a, + 0x70, 0x08, 0x34, 0x05, 0x47, 0x02, 0x1c, 0x00, 0x1f, 0xfe, 0x6b, 0xfa, 0x42, 0xf5, 0x14, 0xf1, + 0x14, 0xef, 0xee, 0xef, 0x0b, 0xf1, 0x8e, 0xf3, 0x88, 0xf4, 0xc5, 0xf5, 0x00, 0xf8, 0x4e, 0xf7, + 0xeb, 0xf7, 0x47, 0xf9, 0x1e, 0xfa, 0xdb, 0xf9, 0xd5, 0xf7, 0xc1, 0xf6, 0x0a, 0xf6, 0x60, 0xf6, + 0x5e, 0xf8, 0x8a, 0xfb, 0xc1, 0xfc, 0x5d, 0xfe, 0x0d, 0x00, 0x1f, 0x00, 0xcc, 0x02, 0x84, 0x05, + 0x0f, 0x06, 0x75, 0x07, 0xdb, 0x08, 0xa3, 0x0a, 0x33, 0x0c, 0x60, 0x0d, 0xf8, 0x0c, 0xc2, 0x0c, + 0x4e, 0x0c, 0x02, 0x09, 0x43, 0x04, 0xa2, 0x01, 0x95, 0x02, 0x9d, 0x04, 0xd4, 0x07, 0x30, 0x0a, + 0xb7, 0x09, 0xdc, 0x0a, 0xee, 0x08, 0x5a, 0x05, 0x85, 0x03, 0xa0, 0x02, 0x58, 0x01, 0xb3, 0xff, + 0x73, 0xfd, 0xb4, 0xfb, 0x9b, 0xf9, 0xc7, 0xf6, 0x1b, 0xf6, 0x63, 0xf5, 0xd4, 0xf4, 0x35, 0xf5, + 0xd9, 0xf1, 0xc8, 0xf0, 0xec, 0xf1, 0x40, 0xf5, 0x35, 0xf8, 0xa9, 0xf9, 0x83, 0xfc, 0xff, 0xfc, + 0x8e, 0xfe, 0x39, 0xff, 0x36, 0xfe, 0x59, 0xfe, 0x1f, 0xfe, 0x57, 0xfd, 0x0e, 0xfc, 0x06, 0xfe, + 0x76, 0x00, 0xa1, 0x03, 0x5a, 0x08, 0x84, 0x08, 0xed, 0x07, 0xbe, 0x07, 0x01, 0x05, 0xbe, 0x03, + 0x25, 0x03, 0x88, 0x05, 0x41, 0x07, 0x3a, 0x08, 0x84, 0x08, 0xc2, 0x08, 0x54, 0x07, 0x1f, 0x07, + 0x27, 0x07, 0x5c, 0x07, 0x2b, 0x09, 0x7d, 0x09, 0x52, 0x07, 0xbe, 0x05, 0xe8, 0x04, 0xd0, 0x05, + 0xb0, 0x05, 0x0e, 0x07, 0x48, 0x07, 0xa1, 0x06, 0x30, 0x06, 0x18, 0x04, 0x29, 0x03, 0x7d, 0x01, + 0xed, 0xfe, 0xa0, 0xfa, 0x0a, 0xf5, 0xc2, 0xf1, 0x48, 0xee, 0xe7, 0xed, 0x66, 0xed, 0x73, 0xeb, + 0x59, 0xeb, 0x0f, 0xeb, 0xed, 0xeb, 0x43, 0xeb, 0xe4, 0xeb, 0x8c, 0xee, 0xc3, 0xf0, 0xee, 0xf1, + 0xba, 0xf1, 0x8b, 0xf2, 0x10, 0xf3, 0x13, 0xf6, 0x65, 0xf9, 0xe2, 0xfc, 0x2b, 0x03, 0x2f, 0x07, + 0xce, 0x07, 0x01, 0x08, 0x8b, 0x0a, 0x91, 0x0d, 0xa8, 0x11, 0x7e, 0x16, 0xdf, 0x19, 0xb5, 0x1c, + 0xa8, 0x1d, 0x83, 0x1d, 0xc0, 0x1b, 0xa5, 0x1a, 0xed, 0x18, 0x92, 0x12, 0x72, 0x0b, 0x4a, 0x05, + 0x50, 0x00, 0xd0, 0xff, 0x7a, 0xff, 0xa0, 0xfc, 0x6b, 0xfa, 0x83, 0xf9, 0x9b, 0xf7, 0xf9, 0xf5, + 0x17, 0xf4, 0xf5, 0xf3, 0x06, 0xf4, 0x28, 0xf3, 0xf7, 0xf3, 0x4d, 0xf4, 0x95, 0xf4, 0x82, 0xf6, + 0xbf, 0xf6, 0x10, 0xf8, 0xfb, 0xf9, 0xe8, 0xfa, 0xee, 0xfa, 0x41, 0xfc, 0x23, 0xff, 0x88, 0x03, + 0x60, 0x08, 0x1a, 0x0d, 0x75, 0x10, 0x46, 0x11, 0x0f, 0x11, 0x6c, 0x0e, 0x8f, 0x0a, 0xdd, 0x08, + 0x8a, 0x06, 0x67, 0x02, 0x50, 0xfe, 0x72, 0xf8, 0x23, 0xf4, 0x3c, 0xf4, 0x74, 0xf4, 0xe9, 0xf3, + 0x89, 0xf3, 0x94, 0xf1, 0x14, 0xf0, 0x0e, 0xee, 0x63, 0xee, 0x66, 0xf0, 0x1a, 0xf1, 0xb5, 0xf3, + 0x0e, 0xf6, 0xaf, 0xf7, 0x51, 0xfb, 0x71, 0xfd, 0xdf, 0xfe, 0x3b, 0x01, 0x11, 0x04, 0x6f, 0x07, + 0x7e, 0x09, 0xfc, 0x0b, 0xa2, 0x0e, 0x6b, 0x11, 0xbc, 0x13, 0x71, 0x15, 0x98, 0x15, 0x08, 0x15, + 0xcf, 0x14, 0x70, 0x11, 0x18, 0x0e, 0x19, 0x0d, 0x25, 0x0a, 0x2d, 0x06, 0x5f, 0x00, 0xd4, 0xf8, + 0x88, 0xf3, 0x9d, 0xf0, 0xca, 0xef, 0x06, 0xf0, 0xcd, 0xf0, 0x3a, 0xf1, 0x78, 0xf0, 0x02, 0xef, + 0x38, 0xef, 0xce, 0xf0, 0xfa, 0xf1, 0x0e, 0xf3, 0x0b, 0xf3, 0xed, 0xf2, 0x3a, 0xf4, 0x65, 0xf7, + 0x49, 0xfa, 0x72, 0xfc, 0x47, 0x01, 0x0c, 0x05, 0x9e, 0x07, 0x1f, 0x09, 0xf9, 0x09, 0xfa, 0x0a, + 0x93, 0x0b, 0x87, 0x0c, 0xbf, 0x0c, 0x86, 0x0e, 0x83, 0x10, 0xce, 0x0e, 0x46, 0x0e, 0x5b, 0x0e, + 0x26, 0x0d, 0x12, 0x0a, 0x0a, 0x06, 0x85, 0x00, 0xf0, 0xfc, 0x2a, 0xfc, 0xe5, 0xfc, 0xe6, 0xfe, + 0xd6, 0x00, 0xff, 0x00, 0x16, 0x00, 0x11, 0xfe, 0x2c, 0xfe, 0xd9, 0xfe, 0x67, 0x00, 0xea, 0x02, + 0x22, 0x03, 0xde, 0x02, 0x1a, 0x03, 0x6a, 0x02, 0x43, 0x01, 0x5a, 0x00, 0xd3, 0xff, 0xfc, 0xfd, + 0x2a, 0xfb, 0x34, 0xf8, 0x10, 0xf7, 0xc9, 0xf6, 0x66, 0xf7, 0x1a, 0xf8, 0x0f, 0xf9, 0x90, 0xfc, + 0x3f, 0xfe, 0x4f, 0xfd, 0x91, 0xfc, 0x63, 0xfb, 0x05, 0xfa, 0xba, 0xf9, 0xe9, 0xf7, 0x79, 0xf5, + 0xa2, 0xf5, 0x75, 0xf6, 0x47, 0xf9, 0xaf, 0xfa, 0x5d, 0xfc, 0x60, 0xff, 0x2c, 0x00, 0xe4, 0x00, + 0xd8, 0x02, 0xa1, 0x04, 0xa5, 0x08, 0x10, 0x0b, 0xac, 0x0c, 0xd8, 0x0c, 0xe1, 0x0c, 0x33, 0x0c, + 0x00, 0x0b, 0xb7, 0x0a, 0x30, 0x0b, 0xf2, 0x0a, 0x0d, 0x09, 0x50, 0x07, 0xb8, 0x05, 0x25, 0x05, + 0xfa, 0x06, 0x7c, 0x06, 0x81, 0x06, 0x04, 0x08, 0x1c, 0x08, 0x5a, 0x07, 0x0f, 0x06, 0xa0, 0x03, + 0xa2, 0x02, 0x31, 0x01, 0x58, 0xfd, 0xeb, 0xf8, 0x38, 0xf5, 0xc1, 0xf2, 0xe8, 0xf1, 0xcb, 0xf0, + 0x7c, 0xf2, 0xba, 0xf4, 0xf7, 0xf5, 0x63, 0xf7, 0x0d, 0xf8, 0x14, 0xf9, 0x2c, 0xf9, 0xa8, 0xf9, + 0xc0, 0xf8, 0x9f, 0xf6, 0xc9, 0xf5, 0x20, 0xf5, 0x34, 0xf6, 0xf5, 0xf6, 0x14, 0xfa, 0x27, 0xfc, + 0x7d, 0xfd, 0x64, 0xfe, 0xde, 0xfc, 0x19, 0xff, 0x6a, 0x02, 0x09, 0x05, 0xb3, 0x07, 0x12, 0x0b, + 0x0c, 0x0d, 0x3c, 0x0d, 0x83, 0x0d, 0x3c, 0x0d, 0x0c, 0x0d, 0x12, 0x0c, 0x30, 0x09, 0xb3, 0x04, + 0x08, 0x01, 0xa2, 0xff, 0x3f, 0xfe, 0xb3, 0xfd, 0x9d, 0xff, 0x37, 0x00, 0x3d, 0x00, 0xd8, 0xfe, + 0x50, 0xfd, 0x15, 0xfb, 0xa9, 0xf9, 0x98, 0xf8, 0x36, 0xf7, 0xbd, 0xf6, 0x7d, 0xf6, 0xc2, 0xf6, + 0x3a, 0xf5, 0xba, 0xf4, 0x12, 0xf5, 0xab, 0xf4, 0x80, 0xf5, 0xaa, 0xf4, 0xc1, 0xf4, 0x75, 0xf7, + 0xe6, 0xfa, 0x96, 0xfd, 0xbf, 0x00, 0x9d, 0x04, 0xa9, 0x06, 0x62, 0x08, 0xcd, 0x08, 0x3c, 0x09, + 0x00, 0x0b, 0xb4, 0x0b, 0xed, 0x0a, 0x3d, 0x07, 0x9d, 0x04, 0x51, 0x04, 0x25, 0x03, 0xce, 0x02, + 0x2d, 0x02, 0x12, 0x02, 0xc5, 0x00, 0x31, 0xfe, 0x14, 0xfc, 0xab, 0xf9, 0x28, 0xf9, 0xc6, 0xf8, + 0x78, 0xf9, 0x62, 0xfa, 0xad, 0xfb, 0xfc, 0xfb, 0x28, 0xfb, 0xe0, 0xfb, 0x57, 0xfc, 0x73, 0xfe, + 0x9c, 0x00, 0x59, 0x02, 0x74, 0x03, 0xba, 0x05, 0x4a, 0x07, 0xd2, 0x08, 0x93, 0x0c, 0x61, 0x0f, + 0x93, 0x12, 0x60, 0x15, 0xc8, 0x16, 0x6a, 0x18, 0x4e, 0x19, 0xa3, 0x19, 0x7f, 0x16, 0xd6, 0x0f, + 0x02, 0x0a, 0xa9, 0x04, 0xe6, 0x00, 0x32, 0xfd, 0x49, 0xfb, 0xef, 0xf9, 0xda, 0xf6, 0x5a, 0xf4, + 0xfe, 0xf0, 0x67, 0xef, 0x83, 0xed, 0x63, 0xec, 0xd1, 0xea, 0x1f, 0xe9, 0x56, 0xe9, 0x77, 0xe8, + 0x62, 0xe8, 0x95, 0xe9, 0x23, 0xec, 0x20, 0xf0, 0xe8, 0xf4, 0x5c, 0xf7, 0x2c, 0xf9, 0x7a, 0xfd, + 0x07, 0x00, 0xc9, 0x03, 0x7c, 0x08, 0x37, 0x0e, 0x63, 0x14, 0xbd, 0x18, 0xf4, 0x1a, 0xae, 0x1b, + 0xcd, 0x1c, 0x9d, 0x1d, 0x33, 0x1a, 0x1d, 0x15, 0xd5, 0x0f, 0x33, 0x0c, 0x58, 0x08, 0x12, 0x06, + 0xfe, 0x04, 0x40, 0x03, 0xd3, 0x01, 0x05, 0xfe, 0x8f, 0xfb, 0x86, 0xf9, 0x50, 0xf9, 0x1a, 0xfa, + 0x60, 0xf8, 0x6d, 0xf8, 0x3e, 0xf8, 0xa8, 0xf7, 0xef, 0xf6, 0x16, 0xf6, 0x0b, 0xf5, 0xb5, 0xf6, + 0xe5, 0xf7, 0x8d, 0xf6, 0xae, 0xf7, 0x0c, 0xf9, 0x9b, 0xfa, 0x12, 0xfe, 0x41, 0x01, 0xc1, 0x05, + 0x91, 0x09, 0xa8, 0x0b, 0x5d, 0x0b, 0x7d, 0x08, 0x95, 0x06, 0x15, 0x05, 0x11, 0x02, 0x5c, 0xfe, + 0xef, 0xfa, 0xd2, 0xf7, 0x5a, 0xf5, 0x3b, 0xf4, 0x89, 0xf3, 0x97, 0xf4, 0x9f, 0xf4, 0x4b, 0xf5, + 0x46, 0xf5, 0x8d, 0xf5, 0x6f, 0xf8, 0x89, 0xf9, 0xd2, 0xfa, 0xc5, 0xfb, 0x74, 0xfd, 0x22, 0xff, + 0x2f, 0x01, 0x9e, 0x03, 0x4b, 0x05, 0x40, 0x09, 0xa2, 0x0a, 0x5b, 0x0b, 0xda, 0x0b, 0xec, 0x0b, + 0xcb, 0x0b, 0x32, 0x0b, 0x6e, 0x0b, 0xef, 0x0b, 0xae, 0x0b, 0xe6, 0x0b, 0xe7, 0x08, 0x0d, 0x06, + 0x8b, 0x04, 0xa0, 0x03, 0x73, 0x01, 0x8f, 0xfc, 0xc9, 0xf7, 0xce, 0xf2, 0x2b, 0xee, 0x15, 0xeb, + 0x4c, 0xea, 0xd3, 0xea, 0xe3, 0xec, 0xd2, 0xee, 0x21, 0xee, 0x0c, 0xef, 0xad, 0xf0, 0x0c, 0xf3, + 0xed, 0xf3, 0x70, 0xf5, 0x70, 0xf7, 0xa6, 0xf9, 0x9b, 0xfc, 0x83, 0xfe, 0x80, 0x01, 0xb7, 0x05, + 0x35, 0x08, 0xef, 0x08, 0x14, 0x09, 0x5b, 0x0a, 0xd2, 0x0a, 0x56, 0x0b, 0xc9, 0x0b, 0x86, 0x0c, + 0xd3, 0x0e, 0xd9, 0x0f, 0x5c, 0x0f, 0xcc, 0x0d, 0x3b, 0x0d, 0x5b, 0x0e, 0x4a, 0x0c, 0x2b, 0x09, + 0x12, 0x05, 0x9f, 0x00, 0xe9, 0xfc, 0xa9, 0xfa, 0x31, 0xfa, 0xac, 0xfa, 0xfe, 0xfb, 0xab, 0xfb, + 0x00, 0xfb, 0x88, 0xfa, 0x60, 0xfb, 0x7d, 0xfb, 0xc9, 0xfc, 0x12, 0xff, 0x0c, 0x00, 0xb2, 0x01, + 0x84, 0x01, 0x28, 0x00, 0xd7, 0xff, 0xb8, 0xff, 0xec, 0xfd, 0x73, 0xfc, 0x42, 0xfb, 0xad, 0xfa, + 0x81, 0xfb, 0x57, 0xfc, 0x1c, 0xfd, 0xf5, 0xfe, 0x58, 0x01, 0x09, 0x04, 0xee, 0x04, 0x33, 0x05, + 0x2b, 0x07, 0x48, 0x07, 0xb4, 0x06, 0xcf, 0x03, 0xae, 0x00, 0xf0, 0xfd, 0xe4, 0xf9, 0x50, 0xf8, + 0xf6, 0xf7, 0xef, 0xf8, 0xf9, 0xf9, 0x56, 0xfa, 0x9a, 0xf9, 0xdc, 0xf9, 0x2f, 0xfb, 0xd2, 0xfb, + 0xd2, 0xfd, 0xb3, 0xfe, 0x9a, 0xff, 0x80, 0x01, 0xf9, 0x00, 0xf5, 0xfe, 0x52, 0xfe, 0x8e, 0xff, + 0x3e, 0x01, 0xa7, 0x01, 0xe0, 0x01, 0x51, 0x02, 0x14, 0x03, 0xe6, 0x03, 0xff, 0x03, 0xe8, 0x05, + 0x79, 0x09, 0x7e, 0x0c, 0xa4, 0x0d, 0xdc, 0x0e, 0xf4, 0x0f, 0xaf, 0x11, 0xfb, 0x0f, 0xbc, 0x0c, + 0xc8, 0x09, 0x49, 0x05, 0x58, 0x02, 0x83, 0xff, 0xcf, 0xfd, 0x1a, 0xfd, 0xd3, 0xfd, 0x8f, 0xfd, + 0x6f, 0xfb, 0xe2, 0xf9, 0x79, 0xf8, 0xe0, 0xf7, 0x9c, 0xf6, 0x9e, 0xf3, 0xe5, 0xf1, 0x3f, 0xf1, + 0x9d, 0xef, 0xba, 0xed, 0x02, 0xee, 0xd8, 0xf0, 0xf9, 0xf2, 0x52, 0xf4, 0x86, 0xf5, 0x93, 0xf6, + 0x65, 0xf8, 0x7c, 0xf9, 0xe6, 0xfb, 0x70, 0xff, 0x8f, 0x04, 0xe2, 0x08, 0xf4, 0x0a, 0x62, 0x0c, + 0x7b, 0x0f, 0xeb, 0x11, 0xd0, 0x12, 0x01, 0x13, 0xc2, 0x11, 0x50, 0x10, 0xd0, 0x0e, 0x08, 0x0d, + 0x70, 0x0b, 0x43, 0x0a, 0x15, 0x0a, 0xaa, 0x07, 0xa8, 0x05, 0xbf, 0x03, 0x64, 0x01, 0x64, 0xff, + 0x14, 0xfd, 0x0b, 0xfa, 0xb2, 0xf8, 0x4b, 0xf7, 0xdf, 0xf3, 0xf9, 0xf0, 0x9a, 0xef, 0xe0, 0xee, + 0x89, 0xee, 0x15, 0xed, 0x83, 0xeb, 0xbe, 0xeb, 0x65, 0xec, 0x10, 0xee, 0xda, 0xef, 0x86, 0xf2, + 0x31, 0xf8, 0xdf, 0xfd, 0x4e, 0x01, 0x6e, 0x03, 0x40, 0x06, 0x27, 0x0a, 0xe0, 0x0c, 0x48, 0x0d, + 0x4a, 0x0d, 0xcd, 0x0b, 0x08, 0x0a, 0x97, 0x07, 0x2e, 0x05, 0x95, 0x04, 0x66, 0x04, 0xf0, 0x02, + 0xf9, 0x01, 0x77, 0x01, 0x51, 0x00, 0x14, 0x00, 0xc4, 0xfe, 0xdc, 0xfc, 0xd1, 0xfc, 0x94, 0xfc, + 0x0a, 0xfd, 0x2d, 0xfd, 0x36, 0xfd, 0xaa, 0xfe, 0x84, 0x00, 0x91, 0x00, 0x53, 0x00, 0x1b, 0x00, + 0x34, 0x01, 0x08, 0x02, 0xe6, 0x02, 0x4a, 0x04, 0x3f, 0x07, 0xb4, 0x0b, 0x95, 0x0d, 0xeb, 0x0e, + 0x94, 0x11, 0x5a, 0x13, 0xe8, 0x13, 0x80, 0x12, 0xc8, 0x0f, 0xbd, 0x0a, 0xff, 0x03, 0x86, 0xfc, + 0x9d, 0xf7, 0x0e, 0xf5, 0x39, 0xf3, 0xb3, 0xf1, 0xfd, 0xef, 0x9a, 0xed, 0xad, 0xec, 0x6c, 0xec, + 0xf5, 0xeb, 0x64, 0xeb, 0x5f, 0xec, 0x32, 0xee, 0x94, 0xef, 0x90, 0xf0, 0x14, 0xf2, 0x9c, 0xf4, + 0x71, 0xf7, 0xff, 0xf9, 0xfd, 0xfc, 0x0b, 0x01, 0x29, 0x05, 0x53, 0x08, 0x1b, 0x0b, 0xe0, 0x0d, + 0xaf, 0x12, 0x16, 0x16, 0x1a, 0x17, 0xf2, 0x17, 0x2e, 0x19, 0x0c, 0x1a, 0x57, 0x18, 0x6c, 0x15, + 0x39, 0x11, 0x99, 0x0c, 0xe4, 0x07, 0x13, 0x02, 0xe0, 0xfd, 0x88, 0xfb, 0x09, 0xfa, 0xf0, 0xf8, + 0xd1, 0xf6, 0x39, 0xf4, 0x4a, 0xf3, 0xf8, 0xf3, 0xf0, 0xf3, 0xc0, 0xf3, 0xb4, 0xf5, 0x00, 0xf7, + 0xc3, 0xf7, 0xa8, 0xf7, 0x1b, 0xf8, 0x47, 0xfa, 0xe6, 0xfb, 0x3a, 0xfd, 0xa2, 0xfe, 0x7a, 0x00, + 0x41, 0x03, 0x44, 0x05, 0x90, 0x05, 0x71, 0x06, 0x1d, 0x09, 0x76, 0x0c, 0xde, 0x0d, 0x89, 0x0d, + 0x81, 0x0d, 0xd9, 0x0d, 0xd1, 0x0c, 0xd1, 0x09, 0xfe, 0x05, 0xe2, 0x01, 0xb6, 0xfd, 0x23, 0xf9, + 0xa4, 0xf5, 0x8b, 0xf3, 0x9f, 0xf2, 0xbd, 0xf1, 0xd8, 0xf0, 0xb4, 0xf0, 0x74, 0xf1, 0x42, 0xf2, + 0x47, 0xf2, 0xbc, 0xf3, 0xb3, 0xf5, 0x17, 0xf8, 0xcc, 0xf9, 0xbd, 0xfa, 0x14, 0xfd, 0xb9, 0x00, + 0x79, 0x04, 0x35, 0x07, 0x55, 0x09, 0x7b, 0x0a, 0x6c, 0x0b, 0x51, 0x0c, 0xa5, 0x0a, 0xec, 0x09, + 0x86, 0x0b, 0x94, 0x0d, 0xb2, 0x0e, 0x23, 0x0f, 0xd8, 0x0f, 0x10, 0x10, 0x78, 0x0f, 0x62, 0x0d, + 0x72, 0x0a, 0x6e, 0x07, 0x47, 0x03, 0xde, 0xfd, 0x43, 0xf9, 0x2f, 0xf6, 0xf4, 0xf3, 0xcc, 0xf1, + 0xcd, 0xee, 0xcb, 0xec, 0x47, 0xed, 0x12, 0xee, 0xe9, 0xed, 0x1f, 0xed, 0xe7, 0xed, 0xfa, 0xef, + 0xde, 0xf1, 0xb5, 0xf2, 0x9b, 0xf3, 0xc6, 0xf6, 0xb1, 0xf9, 0x9e, 0xfc, 0xcc, 0xfd, 0x0d, 0xfe, + 0x86, 0xff, 0x48, 0x00, 0xfa, 0x00, 0x1f, 0x02, 0x45, 0x05, 0xdc, 0x08, 0x36, 0x0a, 0xe0, 0x0b, + 0x1c, 0x0d, 0x41, 0x0f, 0x69, 0x11, 0x4f, 0x11, 0xbd, 0x10, 0x8a, 0x10, 0x6f, 0x0e, 0x0a, 0x0b, + 0x8b, 0x07, 0x45, 0x04, 0xab, 0x02, 0x34, 0x02, 0x91, 0x00, 0x27, 0x00, 0xe7, 0x00, 0xab, 0x01, + 0xae, 0x01, 0xec, 0x00, 0x59, 0x00, 0x38, 0x00, 0xbe, 0xff, 0x2e, 0xfe, 0xce, 0xfc, 0xf6, 0xfa, + 0xa8, 0xf8, 0x9a, 0xf6, 0xaf, 0xf3, 0xb9, 0xf2, 0x2a, 0xf2, 0xe5, 0xf1, 0xfb, 0xf0, 0x3d, 0xf1, + 0x29, 0xf4, 0x04, 0xf7, 0x08, 0xf9, 0x90, 0xfa, 0x0e, 0xfd, 0xa9, 0x00, 0x1e, 0x03, 0xc1, 0x04, + 0x33, 0x05, 0x4e, 0x05, 0xfd, 0x03, 0x23, 0x02, 0x2e, 0x00, 0x5e, 0xff, 0x11, 0x01, 0x7c, 0x02, + 0x1f, 0x04, 0x6c, 0x06, 0x46, 0x08, 0x94, 0x09, 0x24, 0x09, 0x4d, 0x08, 0xf7, 0x07, 0x59, 0x08, + 0x96, 0x07, 0xad, 0x05, 0xc6, 0x04, 0x54, 0x04, 0xc4, 0x03, 0x09, 0x02, 0x6a, 0xff, 0x21, 0xfe, + 0x50, 0xfe, 0xc9, 0xfd, 0x94, 0xfb, 0xab, 0xfa, 0x04, 0xfb, 0xf9, 0xfc, 0x1b, 0xff, 0x7f, 0x00, + 0x49, 0x02, 0xb1, 0x04, 0xf1, 0x06, 0x48, 0x08, 0xd2, 0x08, 0x56, 0x08, 0x22, 0x06, 0x65, 0x03, + 0xfd, 0xff, 0x3a, 0xfe, 0x77, 0xfe, 0x44, 0xfe, 0xaa, 0xfc, 0x79, 0xfb, 0x1e, 0xfb, 0x58, 0xfa, + 0x3e, 0xf9, 0x10, 0xf7, 0x15, 0xf6, 0x16, 0xf7, 0x93, 0xf6, 0x40, 0xf6, 0x3e, 0xf5, 0x12, 0xf5, + 0x8c, 0xf6, 0x47, 0xf7, 0x5b, 0xf7, 0x0c, 0xf9, 0x00, 0xfc, 0x8e, 0xfe, 0xed, 0xff, 0xcd, 0x00, + 0x08, 0x03, 0xbb, 0x05, 0x15, 0x08, 0x87, 0x0a, 0xff, 0x0c, 0x44, 0x10, 0xcf, 0x11, 0xbb, 0x12, + 0x37, 0x14, 0xef, 0x14, 0x03, 0x14, 0x7c, 0x11, 0xc6, 0x0d, 0x42, 0x0b, 0x5e, 0x0a, 0x94, 0x07, + 0xac, 0x03, 0x4f, 0x00, 0xec, 0xfc, 0xe4, 0xfb, 0xc1, 0xf9, 0x03, 0xf7, 0x7b, 0xf6, 0x0c, 0xf5, + 0x46, 0xf4, 0xc9, 0xf2, 0x1e, 0xf1, 0xb7, 0xf1, 0x55, 0xf2, 0xc9, 0xf2, 0xf5, 0xf2, 0xea, 0xf3, + 0x7f, 0xf6, 0xc2, 0xf7, 0xfe, 0xf6, 0xfe, 0xf6, 0x97, 0xf9, 0x2a, 0xfd, 0xdb, 0x00, 0xe3, 0x03, + 0xfa, 0x07, 0xfb, 0x0c, 0x67, 0x0f, 0x9a, 0x10, 0x3c, 0x10, 0x72, 0x0f, 0x41, 0x0e, 0xe5, 0x0a, + 0x86, 0x05, 0x72, 0x00, 0x79, 0xfc, 0xc5, 0xf9, 0x2b, 0xf8, 0x43, 0xf6, 0x25, 0xf5, 0x0a, 0xf5, + 0x94, 0xf4, 0x12, 0xf4, 0x90, 0xf3, 0x90, 0xf4, 0x22, 0xf5, 0xea, 0xf4, 0x2a, 0xf6, 0x79, 0xf8, + 0x36, 0xfc, 0xc9, 0xfe, 0x88, 0xff, 0x27, 0x01, 0xad, 0x03, 0x56, 0x05, 0xc7, 0x05, 0xd3, 0x06, + 0xdc, 0x08, 0xd7, 0x0c, 0x8c, 0x10, 0x30, 0x13, 0x34, 0x16, 0x39, 0x18, 0xfd, 0x19, 0x4a, 0x1a, + 0xea, 0x18, 0x90, 0x16, 0xbf, 0x12, 0x96, 0x0d, 0x0b, 0x07, 0x82, 0x00, 0x12, 0xfb, 0x15, 0xf6, + 0x62, 0xf1, 0x54, 0xed, 0x9d, 0xeb, 0x9d, 0xea, 0x07, 0xe8, 0x9d, 0xe5, 0x54, 0xe5, 0x7b, 0xe6, + 0x73, 0xe7, 0x86, 0xe7, 0xbf, 0xe7, 0xf4, 0xe9, 0x0b, 0xed, 0x4e, 0xef, 0x8b, 0xf1, 0xec, 0xf3, + 0x40, 0xf8, 0x30, 0xfc, 0x9c, 0xff, 0x0c, 0x03, 0x1a, 0x07, 0x77, 0x0b, 0xc0, 0x0e, 0x11, 0x11, + 0x48, 0x13, 0x03, 0x16, 0x37, 0x17, 0x77, 0x18, 0x1e, 0x19, 0xf6, 0x18, 0xef, 0x18, 0xab, 0x14, + 0xec, 0x0f, 0x27, 0x0c, 0x43, 0x08, 0x4c, 0x05, 0x6e, 0x01, 0x81, 0xfe, 0x74, 0xfe, 0x2e, 0xfd, + 0x3e, 0xfb, 0x51, 0xf9, 0x04, 0xf7, 0x65, 0xf6, 0x46, 0xf6, 0x7d, 0xf5, 0x0f, 0xf5, 0xd3, 0xf3, + 0x21, 0xf4, 0x3d, 0xf5, 0xc6, 0xf4, 0x6e, 0xf5, 0x24, 0xf7, 0x50, 0xf8, 0x12, 0xf9, 0x4d, 0xf9, + 0x00, 0xfb, 0xeb, 0xfc, 0x6f, 0xfd, 0xd4, 0xfd, 0x54, 0x00, 0x4d, 0x02, 0xbf, 0x04, 0x4d, 0x06, + 0xef, 0x05, 0x7c, 0x06, 0x7a, 0x05, 0xad, 0x02, 0x13, 0x00, 0x3d, 0xfd, 0x79, 0xfb, 0x15, 0xfb, + 0xc0, 0xfa, 0xcb, 0xfa, 0x1b, 0xfc, 0x8c, 0xfc, 0x41, 0xfc, 0x94, 0xfb, 0xe3, 0xfb, 0x34, 0xfd, + 0xcd, 0xfe, 0x83, 0x00, 0x5f, 0x02, 0x52, 0x04, 0x2a, 0x07, 0x07, 0x08, 0x1c, 0x08, 0x2c, 0x09, + 0xde, 0x0a, 0x61, 0x0a, 0x57, 0x07, 0xee, 0x03, 0x0e, 0x03, 0x9d, 0x03, 0x51, 0x03, 0x44, 0x03, + 0x7b, 0x04, 0x4b, 0x06, 0x56, 0x08, 0xb4, 0x08, 0xf6, 0x08, 0xbd, 0x08, 0x5d, 0x07, 0x00, 0x05, + 0x15, 0x01, 0x2d, 0xfd, 0xf7, 0xfa, 0xb0, 0xf8, 0xbb, 0xf5, 0x72, 0xf3, 0xd4, 0xf2, 0x08, 0xf3, + 0x9a, 0xf3, 0xc5, 0xf3, 0x97, 0xf5, 0x80, 0xf8, 0x96, 0xfa, 0x90, 0xfb, 0xbc, 0xfb, 0x0c, 0xfd, + 0x10, 0xff, 0x12, 0xff, 0x7f, 0xfe, 0x01, 0xfe, 0xad, 0xff, 0xd7, 0x00, 0xdd, 0xff, 0x93, 0xfe, + 0x09, 0xfe, 0x0e, 0xfe, 0x29, 0xff, 0xb8, 0x00, 0x9f, 0x01, 0x20, 0x03, 0xb9, 0x04, 0x8f, 0x05, + 0x8c, 0x07, 0x6f, 0x09, 0x0b, 0x0a, 0xe3, 0x09, 0xec, 0x07, 0x7a, 0x05, 0xfc, 0x04, 0x2e, 0x03, + 0x5c, 0x01, 0x43, 0x00, 0x68, 0x00, 0x0b, 0x02, 0xf3, 0x02, 0x7e, 0x03, 0xe9, 0x03, 0x30, 0x04, + 0x4d, 0x04, 0x0a, 0x03, 0xde, 0x00, 0x02, 0xff, 0x63, 0xfe, 0x9b, 0xfd, 0x0e, 0xfc, 0x04, 0xfb, + 0x10, 0xfb, 0x92, 0xfa, 0xeb, 0xf8, 0x79, 0xf7, 0xb6, 0xf6, 0xd1, 0xf6, 0x31, 0xf8, 0xbb, 0xf9, + 0xf5, 0xfb, 0x80, 0xff, 0xf7, 0x01, 0x9b, 0x02, 0x74, 0x04, 0x1f, 0x06, 0x61, 0x07, 0xb6, 0x06, + 0xb7, 0x03, 0x47, 0x01, 0xd6, 0xff, 0xd0, 0xfe, 0xe4, 0xfd, 0x84, 0xfd, 0xf5, 0xfe, 0x7b, 0x00, + 0xd1, 0x00, 0x49, 0x00, 0xc4, 0xff, 0xb4, 0xfe, 0x9e, 0xfd, 0x6c, 0xfc, 0xd5, 0xfa, 0x33, 0xfb, + 0x95, 0xfc, 0x93, 0xfc, 0xd3, 0xfb, 0x04, 0xfc, 0xf7, 0xfc, 0xbf, 0xfd, 0xb0, 0xfd, 0x94, 0xfd, + 0x94, 0xfe, 0x12, 0x01, 0x8e, 0x03, 0x31, 0x05, 0x7f, 0x07, 0x61, 0x0a, 0xef, 0x0c, 0x95, 0x0e, + 0x48, 0x10, 0x40, 0x12, 0xda, 0x13, 0xcf, 0x13, 0xe5, 0x10, 0x58, 0x0d, 0xb7, 0x09, 0x72, 0x05, + 0x9e, 0x01, 0x49, 0xfe, 0xb4, 0xfa, 0x6a, 0xf7, 0xe4, 0xf2, 0x51, 0xef, 0x0f, 0xed, 0xeb, 0xeb, + 0x76, 0xeb, 0x8d, 0xe9, 0xd7, 0xe8, 0x5a, 0xe9, 0x8e, 0xea, 0xa3, 0xeb, 0xc8, 0xeb, 0x7c, 0xec, + 0x25, 0xef, 0x14, 0xf2, 0x6c, 0xf4, 0x9e, 0xf7, 0xaa, 0xfa, 0xc0, 0xfd, 0x34, 0x01, 0xc3, 0x03, + 0x54, 0x07, 0xfd, 0x0b, 0xa8, 0x0f, 0x12, 0x14, 0x05, 0x18, 0x07, 0x1c, 0x8f, 0x1f, 0xbc, 0x1f, + 0x8c, 0x1e, 0x4f, 0x1c, 0xe6, 0x18, 0xc2, 0x14, 0x67, 0x0f, 0x5f, 0x0b, 0xf4, 0x08, 0x0b, 0x06, + 0x77, 0x02, 0x18, 0xfe, 0x24, 0xfa, 0xb4, 0xf8, 0x6d, 0xf7, 0x7c, 0xf4, 0xa0, 0xf1, 0xb3, 0xef, + 0x3a, 0xef, 0xa0, 0xee, 0x44, 0xed, 0x21, 0xed, 0x91, 0xee, 0x19, 0xf0, 0xb1, 0xf0, 0x9f, 0xf0, + 0x64, 0xf1, 0x84, 0xf3, 0x78, 0xf4, 0xcb, 0xf6, 0xe1, 0xfa, 0x06, 0x00, 0xba, 0x05, 0xc9, 0x09, + 0xb3, 0x0c, 0x18, 0x10, 0xb7, 0x11, 0x6d, 0x11, 0x58, 0x0f, 0x23, 0x0c, 0xbb, 0x09, 0xcf, 0x07, + 0x71, 0x04, 0xe6, 0x01, 0x8f, 0x00, 0x35, 0x00, 0x00, 0xff, 0xde, 0xfc, 0x8d, 0xfb, 0x4d, 0xfb, + 0xf4, 0xfa, 0xb9, 0xfa, 0x04, 0xfa, 0xa8, 0xf9, 0x54, 0xfa, 0x3d, 0xfa, 0xce, 0xf9, 0x41, 0xfb, + 0xb2, 0xfc, 0x81, 0xfd, 0x87, 0xfd, 0x66, 0xfd, 0xa2, 0xfe, 0x19, 0x00, 0x86, 0x02, 0x20, 0x05, + 0x5d, 0x07, 0x76, 0x0b, 0x36, 0x0f, 0x36, 0x11, 0x52, 0x11, 0x0c, 0x12, 0x2a, 0x12, 0xd2, 0x10, + 0x1c, 0x0e, 0xd8, 0x0a, 0x77, 0x07, 0x2c, 0x03, 0xd3, 0xfd, 0x48, 0xf9, 0xe9, 0xf5, 0x21, 0xf4, + 0xc2, 0xf1, 0x15, 0xf0, 0xb7, 0xef, 0xe6, 0xef, 0x82, 0xf0, 0x7a, 0xf0, 0x05, 0xf0, 0x10, 0xf1, + 0xd0, 0xf2, 0xd4, 0xf3, 0x6e, 0xf4, 0x12, 0xf6, 0x1d, 0xf9, 0xe4, 0xfc, 0xe7, 0xfe, 0xf1, 0xff, + 0xfa, 0x01, 0xdf, 0x04, 0xfe, 0x06, 0xa6, 0x08, 0x52, 0x09, 0x54, 0x0a, 0xa9, 0x0b, 0x59, 0x0b, + 0xdb, 0x0b, 0x0c, 0x0e, 0x2d, 0x0f, 0x4a, 0x10, 0x5f, 0x0f, 0x79, 0x0d, 0x39, 0x0b, 0xc9, 0x07, + 0x8b, 0x03, 0xf0, 0xff, 0xe4, 0xfd, 0x41, 0xfd, 0x00, 0xfc, 0x66, 0xfa, 0x3e, 0xfa, 0xbf, 0xfa, + 0x82, 0xfb, 0xd6, 0xfa, 0xc9, 0xf9, 0xa7, 0xfa, 0x64, 0xfc, 0xd3, 0xfd, 0x2b, 0xff, 0x40, 0x00, + 0x95, 0x02, 0x0b, 0x04, 0x8b, 0x03, 0x5a, 0x03, 0xfa, 0x02, 0x41, 0x01, 0xae, 0x00, 0x05, 0x01, + 0xa3, 0x00, 0xea, 0x00, 0x47, 0x01, 0x07, 0x02, 0x60, 0x02, 0x0e, 0x04, 0x4a, 0x05, 0x62, 0x04, + 0xd5, 0x02, 0xbd, 0x00, 0x13, 0xfe, 0x0b, 0xfc, 0x48, 0xf9, 0x3b, 0xf7, 0x4f, 0xf7, 0x6d, 0xf8, + 0x42, 0xf8, 0x88, 0xf8, 0xb1, 0xf7, 0xb8, 0xf8, 0x92, 0xfa, 0x73, 0xfb, 0x69, 0xfd, 0xbd, 0x01, + 0x5e, 0x04, 0x0b, 0x05, 0xcd, 0x05, 0xfe, 0x05, 0xea, 0x06, 0x04, 0x08, 0xdc, 0x07, 0x09, 0x08, + 0x60, 0x07, 0xb2, 0x06, 0x7c, 0x06, 0x0f, 0x06, 0xe4, 0x06, 0xfd, 0x08, 0x22, 0x0b, 0x34, 0x0c, + 0x50, 0x0c, 0x36, 0x0d, 0x1e, 0x0f, 0x45, 0x0f, 0x45, 0x0d, 0x39, 0x0b, 0x08, 0x09, 0xb9, 0x05, + 0x1e, 0x01, 0x8f, 0xfc, 0xe1, 0xf8, 0xa8, 0xf5, 0xca, 0xf2, 0x81, 0xf0, 0xcf, 0xee, 0xf5, 0xf0, + 0xa9, 0xf1, 0x06, 0xf1, 0x16, 0xf1, 0x86, 0xf1, 0x1a, 0xf3, 0xe5, 0xf2, 0xca, 0xf1, 0x24, 0xf1, + 0x59, 0xf1, 0x80, 0xf1, 0xc3, 0xf1, 0x67, 0xf2, 0xc1, 0xf3, 0xf7, 0xf4, 0x2c, 0xf7, 0x0d, 0xf8, + 0xb9, 0xf8, 0xb2, 0xfb, 0x3e, 0xfe, 0xb4, 0x00, 0x41, 0x04, 0x67, 0x08, 0xd1, 0x0c, 0xab, 0x0e, + 0xaf, 0x0e, 0x48, 0x0e, 0xda, 0x0c, 0x75, 0x0b, 0xe9, 0x07, 0xc3, 0x06, 0x23, 0x05, 0xa1, 0x02, + 0x41, 0x02, 0x0b, 0xfd, 0xda, 0xfd, 0xeb, 0xfe, 0xef, 0xfd, 0x3d, 0xfd, 0x1c, 0xf9, 0x75, 0xf6, + 0x75, 0xf4, 0xb4, 0xf2, 0xdc, 0xf1, 0xf3, 0xef, 0xd5, 0xf1, 0xca, 0xf3, 0x2f, 0xf4, 0x09, 0xf3, + 0xf1, 0xf0, 0xd9, 0xee, 0x15, 0xf0, 0x98, 0xf0, 0xc3, 0xf3, 0x28, 0xfa, 0xf1, 0xfc, 0xf7, 0xff, + 0x16, 0x03, 0x1e, 0x06, 0xfa, 0x0b, 0x9d, 0x0f, 0x0a, 0x11, 0x34, 0x13, 0x4b, 0x11, 0x70, 0x11, + 0xb7, 0x0f, 0x62, 0x0e, 0x6e, 0x0f, 0x4b, 0x10, 0x48, 0x11, 0x7f, 0x0e, 0xaf, 0x0d, 0x3f, 0x0e, + 0x6f, 0x0c, 0x1d, 0x08, 0xbf, 0x06, 0x11, 0x04, 0xbb, 0x05, 0x78, 0x06, 0xf3, 0x01, 0x17, 0x04, + 0x6a, 0xff, 0x0a, 0xfd, 0xbc, 0xfd, 0xba, 0xf9, 0x7c, 0xfa, 0xaa, 0xfc, 0x40, 0xfa, 0xcb, 0xfb, + 0x77, 0xfc, 0xed, 0xfb, 0x67, 0x02, 0x28, 0x04, 0x62, 0x09, 0xdb, 0x0e, 0xa1, 0x0e, 0xba, 0x14, + 0x31, 0x16, 0x78, 0x16, 0x96, 0x19, 0x71, 0x15, 0x41, 0x13, 0x1d, 0x0d, 0x20, 0x08, 0xc3, 0x05, + 0xbe, 0x00, 0x51, 0xfc, 0x72, 0xf8, 0x99, 0xf6, 0x53, 0xf6, 0xe0, 0xf3, 0xb6, 0xf2, 0x19, 0xf3, + 0x95, 0xef, 0x69, 0xef, 0x67, 0xef, 0x41, 0xef, 0x29, 0xf2, 0xb3, 0xf0, 0x5e, 0xef, 0x81, 0xf0, + 0xf6, 0xee, 0xb8, 0xf2, 0xda, 0xf4, 0x15, 0xf5, 0x3b, 0xf6, 0xe1, 0xf5, 0x1f, 0xf9, 0xa3, 0xfb, + 0x14, 0x00, 0x9c, 0x06, 0x87, 0x0a, 0x0c, 0x0d, 0xaf, 0x11, 0xc6, 0x11, 0xe9, 0x13, 0xef, 0x12, + 0x8c, 0x0b, 0x7e, 0x09, 0x53, 0x05, 0x9f, 0x03, 0x63, 0x03, 0x1a, 0xfd, 0xb5, 0xf9, 0xe7, 0xf7, + 0xf6, 0xf3, 0x0f, 0xf3, 0xd5, 0xf1, 0x12, 0xf0, 0xd0, 0xf0, 0x95, 0xee, 0xae, 0xeb, 0xb0, 0xee, + 0x55, 0xef, 0x5d, 0xf3, 0xa3, 0xf6, 0xe0, 0xf4, 0x16, 0xf7, 0x41, 0xf7, 0xed, 0xf6, 0x8e, 0xf8, + 0x6c, 0xf8, 0x11, 0xfb, 0xc2, 0xfc, 0x1a, 0x00, 0x41, 0x05, 0xab, 0x08, 0x3a, 0x0a, 0xdc, 0x09, + 0x89, 0x09, 0x30, 0x08, 0x53, 0x07, 0xca, 0x04, 0x42, 0x02, 0xb0, 0xfd, 0xfa, 0xf9, 0x71, 0xf9, + 0xd6, 0xf6, 0x25, 0xf6, 0x8f, 0xf5, 0x00, 0xf4, 0x57, 0xf6, 0xd7, 0xf2, 0xc6, 0xef, 0xce, 0xf1, + 0x52, 0xf3, 0xac, 0xf4, 0x65, 0xf7, 0x17, 0xf8, 0xd4, 0xf8, 0xdc, 0xfa, 0x5b, 0xfe, 0x6f, 0x01, + 0x39, 0xfe, 0xec, 0x06, 0x8e, 0x06, 0x38, 0x08, 0xec, 0x0b, 0xa5, 0x0c, 0x1a, 0x10, 0x80, 0x10, + 0x4e, 0x11, 0xeb, 0x12, 0x64, 0x13, 0x5b, 0x11, 0xb2, 0x12, 0x23, 0x12, 0x0e, 0x0a, 0x56, 0x0b, + 0xfb, 0x04, 0x49, 0xff, 0xbb, 0xfe, 0x21, 0xf7, 0x0e, 0xf3, 0x48, 0xee, 0x7b, 0xec, 0x76, 0xee, + 0x3c, 0xf0, 0x4c, 0xf0, 0x5a, 0xf2, 0x00, 0xf3, 0x4b, 0xf1, 0x56, 0xf5, 0xad, 0xf5, 0xe1, 0xf7, + 0x6a, 0xfc, 0xda, 0xfe, 0xfb, 0x03, 0x75, 0x05, 0x44, 0x06, 0x4b, 0x0c, 0x94, 0x0c, 0xa2, 0x0b, + 0x36, 0x11, 0xd2, 0x13, 0xea, 0x0f, 0xb3, 0x11, 0xf3, 0x14, 0x8b, 0x15, 0xaf, 0x18, 0x7a, 0x1b, + 0x50, 0x1c, 0xda, 0x1b, 0x5b, 0x1d, 0x28, 0x1b, 0xe3, 0x17, 0x0a, 0x14, 0xbf, 0x10, 0x92, 0x0c, + 0x24, 0x07, 0x1b, 0x07, 0x02, 0x08, 0xba, 0x06, 0x43, 0x04, 0x09, 0xff, 0x62, 0xfa, 0xbb, 0xf7, + 0xcc, 0xf9, 0xe7, 0xfc, 0x1c, 0xfb, 0xec, 0xf9, 0x40, 0xfb, 0xf8, 0xfc, 0x2e, 0xfe, 0x0a, 0xfe, + 0x55, 0xfd, 0x5f, 0xfd, 0xd7, 0xfa, 0x60, 0xf7, 0x11, 0xf7, 0xa1, 0xf6, 0x64, 0xf8, 0xc5, 0xfa, + 0x7c, 0xfa, 0x1e, 0xfd, 0xb1, 0x01, 0x31, 0x04, 0xf5, 0x06, 0x9f, 0x06, 0x6d, 0x06, 0x86, 0x05, + 0x7c, 0x02, 0x66, 0x02, 0x77, 0x00, 0x2d, 0x00, 0x35, 0xff, 0x29, 0xfe, 0x70, 0xfc, 0x22, 0xfe, + 0x27, 0x00, 0x93, 0xff, 0xda, 0xfe, 0xe9, 0xfd, 0xd6, 0xfd, 0x6c, 0xfe, 0xd5, 0xff, 0x34, 0x01, + 0xd8, 0xfe, 0x87, 0xfd, 0x8c, 0xfa, 0x16, 0xfb, 0x1f, 0xfa, 0xd1, 0xf9, 0x1a, 0xf9, 0xeb, 0xf9, + 0xb2, 0xf9, 0xf6, 0xf8, 0x7b, 0xfa, 0xe0, 0xf8, 0xdf, 0xf8, 0xc1, 0xfa, 0xe7, 0xff, 0x81, 0x04, + 0x16, 0x06, 0xe6, 0x08, 0x0e, 0x0b, 0xf6, 0x08, 0xaf, 0x05, 0x55, 0x00, 0x4a, 0xfe, 0xea, 0xfe, + 0xbb, 0xfb, 0xd2, 0xf6, 0x81, 0xf5, 0xc8, 0xf3, 0x4a, 0xf4, 0x49, 0xf7, 0xd3, 0xf9, 0x51, 0xf9, + 0xa3, 0xf7, 0x13, 0xf8, 0xf8, 0xf3, 0x9a, 0xf1, 0xd9, 0xf2, 0xdd, 0xf1, 0x9b, 0xf1, 0x42, 0xf2, + 0x1b, 0xf4, 0xb2, 0xf3, 0x5e, 0xf3, 0x9e, 0xf7, 0x89, 0xf5, 0xd1, 0xf3, 0xc9, 0xf7, 0x05, 0xf9, + 0x20, 0xfa, 0xaa, 0x00, 0xa3, 0x04, 0xca, 0x05, 0xff, 0x07, 0x73, 0x0f, 0x1e, 0x16, 0x0b, 0x15, + 0x33, 0x18, 0x14, 0x1a, 0x3b, 0x17, 0x52, 0x17, 0x08, 0x16, 0xff, 0x15, 0x79, 0x13, 0x5e, 0x10, + 0x36, 0x11, 0xb9, 0x0c, 0xb1, 0x08, 0xe1, 0x06, 0xf7, 0x04, 0xa1, 0x01, 0x37, 0x00, 0x11, 0xfd, + 0x06, 0xfc, 0xdc, 0xf9, 0x16, 0xf2, 0xab, 0xf1, 0xf6, 0xeb, 0xea, 0xec, 0x2d, 0xe9, 0xe5, 0xe6, + 0x32, 0xe6, 0xf8, 0xe2, 0xc3, 0xe9, 0xd7, 0xe5, 0xec, 0xe8, 0x10, 0xf0, 0x2e, 0xef, 0x34, 0xf5, + 0x97, 0xf2, 0x89, 0xf6, 0x46, 0x00, 0xa1, 0xfd, 0x0e, 0x02, 0xf6, 0x02, 0x74, 0x02, 0x16, 0x06, + 0x98, 0x07, 0x95, 0x03, 0x47, 0x02, 0x33, 0x00, 0xd9, 0x04, 0xbf, 0x00, 0x73, 0x01, 0xa0, 0x03, + 0x41, 0xfe, 0xa3, 0xf7, 0x42, 0xf7, 0x48, 0xfa, 0xf6, 0xf8, 0x56, 0xf2, 0x58, 0xf5, 0xba, 0xf5, + 0x35, 0xf5, 0xe1, 0xf4, 0xf3, 0xf6, 0x6f, 0xf7, 0x81, 0xf6, 0x25, 0xfb, 0x8f, 0xfe, 0xcf, 0xfc, + 0xc9, 0x04, 0x11, 0x08, 0xe8, 0x07, 0x48, 0x13, 0xdb, 0x14, 0xb8, 0x18, 0x16, 0x1f, 0x4b, 0x1f, + 0x04, 0x21, 0x10, 0x19, 0x90, 0x16, 0xa5, 0x16, 0xa1, 0x0f, 0x06, 0x0d, 0x7c, 0x09, 0xfe, 0x05, + 0x48, 0x05, 0x8c, 0x01, 0x67, 0xfe, 0xf0, 0xfc, 0xc5, 0xf6, 0x4a, 0xf5, 0x73, 0xf5, 0x98, 0xf0, + 0x26, 0xf2, 0x9d, 0xf1, 0xfe, 0xef, 0xe1, 0xf3, 0x20, 0xf6, 0x11, 0xf8, 0x43, 0xfe, 0xaf, 0xfe, + 0xeb, 0xfe, 0x82, 0x07, 0xe3, 0x09, 0xea, 0x0e, 0xaa, 0x13, 0xaf, 0x15, 0x81, 0x1c, 0x52, 0x1b, + 0xd5, 0x24, 0x87, 0x28, 0xe2, 0x25, 0xe3, 0x28, 0x05, 0x28, 0x23, 0x23, 0x12, 0x1c, 0x87, 0x19, + 0xef, 0x13, 0x68, 0x0e, 0x1d, 0x09, 0x89, 0x07, 0x2c, 0x04, 0xb8, 0xfa, 0x01, 0xf6, 0x6d, 0xf0, + 0x90, 0xed, 0x1f, 0xed, 0x97, 0xe9, 0x66, 0xec, 0x54, 0xec, 0xe9, 0xea, 0xfb, 0xe9, 0x27, 0xec, + 0x3a, 0xee, 0x52, 0xf0, 0xe1, 0xf0, 0x7e, 0xf2, 0xcc, 0xf8, 0xbe, 0xf7, 0xd8, 0xf9, 0xfc, 0xfc, + 0xd2, 0x03, 0x67, 0x05, 0x41, 0x03, 0x60, 0x07, 0x7d, 0x0b, 0x75, 0x0b, 0x9f, 0x09, 0x74, 0x0a, + 0xb4, 0x09, 0x05, 0x07, 0x2e, 0x01, 0xc7, 0xfd, 0x7b, 0xfd, 0x40, 0xf4, 0x2a, 0xf2, 0xbc, 0xf2, + 0x1c, 0xed, 0xc6, 0xeb, 0x08, 0xeb, 0x9f, 0xeb, 0x82, 0xe9, 0x60, 0xe8, 0x44, 0xe8, 0x44, 0xe7, + 0xc4, 0xe6, 0x36, 0xe7, 0x54, 0xe9, 0x39, 0xec, 0x33, 0xf0, 0x48, 0xf1, 0xdc, 0xf1, 0xb4, 0xef, + 0x96, 0xf5, 0x67, 0xfa, 0xc8, 0xf6, 0xd5, 0xf6, 0x60, 0xf8, 0xbc, 0xf7, 0x98, 0xfb, 0x0c, 0xfd, + 0x37, 0xfe, 0xef, 0x00, 0xb1, 0x04, 0x4f, 0x04, 0x15, 0x04, 0x49, 0x01, 0x1b, 0xfe, 0x29, 0xfc, + 0xa8, 0xf8, 0xe1, 0xf7, 0x6d, 0xf7, 0xd7, 0xf7, 0x27, 0xf8, 0x2b, 0xfa, 0x07, 0xf9, 0x6d, 0xf9, + 0x29, 0xfb, 0xf3, 0xfe, 0xce, 0xfd, 0xa7, 0xfc, 0xf4, 0xff, 0x5a, 0x01, 0xa0, 0x03, 0xa7, 0x05, + 0xe4, 0x09, 0x5e, 0x0c, 0xdf, 0x0d, 0xde, 0x0d, 0xab, 0x0c, 0xdd, 0x0d, 0x56, 0x0c, 0xcb, 0x0b, + 0x20, 0x10, 0xd5, 0x11, 0xea, 0x10, 0x30, 0x0f, 0x6f, 0x11, 0x90, 0x10, 0xb0, 0x0e, 0xea, 0x12, + 0xe4, 0x12, 0x20, 0x15, 0x16, 0x14, 0xb4, 0x11, 0x52, 0x0b, 0x67, 0x06, 0x38, 0x06, 0xf5, 0x03, + 0x92, 0x03, 0x96, 0x01, 0xfc, 0x02, 0xc2, 0x01, 0x49, 0x00, 0x79, 0x03, 0x4b, 0x04, 0xbf, 0x07, + 0xe2, 0x08, 0x3c, 0x0a, 0x0b, 0x0b, 0xed, 0x06, 0x23, 0x06, 0xfb, 0x03, 0x9f, 0x02, 0x20, 0x00, + 0x93, 0xfe, 0x9f, 0xfc, 0x0c, 0x00, 0x47, 0x02, 0xe1, 0xfe, 0x99, 0x00, 0xdd, 0xff, 0x14, 0x00, + 0x2d, 0xfd, 0x9d, 0x01, 0x16, 0x07, 0x49, 0x07, 0x3d, 0x07, 0x48, 0x04, 0x21, 0x04, 0x01, 0x06, + 0xfb, 0x07, 0xf9, 0x04, 0xb7, 0x07, 0x79, 0x07, 0x34, 0x09, 0xcd, 0x0d, 0x66, 0x0d, 0x12, 0x0e, + 0x9a, 0x0c, 0x76, 0x0c, 0x32, 0x0d, 0x8b, 0x0b, 0xbf, 0x08, 0x86, 0x0d, 0x5a, 0x0f, 0xaf, 0x07, + 0x8b, 0x0b, 0x5a, 0x0c, 0x34, 0x0c, 0x6c, 0x0a, 0x4a, 0x05, 0x4d, 0x04, 0xc4, 0xfc, 0xc5, 0xfb, + 0xd6, 0xf9, 0xd8, 0xf9, 0xe9, 0xf8, 0xc2, 0xf4, 0xe2, 0xf5, 0x07, 0xf9, 0x14, 0xfe, 0x27, 0xfc, + 0x41, 0xfe, 0xb0, 0xfc, 0xcb, 0xfb, 0xf2, 0xf7, 0x0d, 0xf4, 0x2f, 0xf8, 0xfc, 0xf4, 0x3e, 0xf2, + 0x34, 0xf3, 0x99, 0xf4, 0xe0, 0xf6, 0xaf, 0xf5, 0xd7, 0xf0, 0x7b, 0xef, 0xac, 0xec, 0x59, 0xeb, + 0x53, 0xec, 0x1c, 0xea, 0x91, 0xe7, 0x62, 0xe5, 0xd9, 0xe0, 0x41, 0xe4, 0xc4, 0xe3, 0xd2, 0xe0, + 0x6e, 0xe6, 0xc3, 0xe8, 0x06, 0xe7, 0x57, 0xe8, 0x24, 0xed, 0xea, 0xef, 0x7a, 0xf3, 0x0b, 0xf6, + 0x02, 0xf9, 0xd4, 0xfa, 0xbc, 0x01, 0x8c, 0x08, 0xa6, 0x0a, 0xd2, 0x0e, 0x63, 0x12, 0x90, 0x12, + 0x8e, 0x13, 0xc1, 0x13, 0x5d, 0x11, 0x0c, 0x0e, 0x44, 0x0a, 0x65, 0x08, 0x43, 0x03, 0x63, 0xff, + 0x17, 0xfd, 0xa7, 0xf8, 0xff, 0xf4, 0xca, 0xf5, 0xe6, 0xef, 0x68, 0xee, 0xf2, 0xed, 0x2b, 0xe9, + 0x10, 0xe9, 0xd9, 0xe3, 0xfa, 0xe5, 0x54, 0xe9, 0x90, 0xe8, 0xd5, 0xe7, 0xd3, 0xe9, 0xbc, 0xeb, + 0x07, 0xee, 0x04, 0xf4, 0x75, 0xf7, 0x1a, 0xff, 0x04, 0x02, 0xfa, 0x05, 0xfb, 0x0d, 0xef, 0x14, + 0xd7, 0x1c, 0x57, 0x1d, 0xc7, 0x20, 0xc0, 0x20, 0x01, 0x1b, 0xfc, 0x19, 0xf6, 0x17, 0x01, 0x16, + 0x0a, 0x0f, 0xd7, 0x09, 0xcd, 0x04, 0x82, 0x03, 0xd8, 0xff, 0x7a, 0xfb, 0x1d, 0xf9, 0x09, 0xf1, + 0x15, 0xf0, 0xd0, 0xeb, 0x49, 0xea, 0x60, 0xef, 0x44, 0xf0, 0xe9, 0xed, 0x35, 0xec, 0xd0, 0xee, + 0xc9, 0xf0, 0xcc, 0xf5, 0x47, 0xf8, 0x2e, 0xfc, 0xe1, 0xfb, 0x53, 0x01, 0x94, 0x09, 0xee, 0x0b, + 0xb5, 0x10, 0xd3, 0x12, 0xe4, 0x16, 0xbd, 0x1a, 0xb3, 0x1d, 0x1f, 0x1e, 0xc0, 0x1e, 0x46, 0x1e, + 0x6b, 0x18, 0xaf, 0x11, 0x53, 0x0d, 0x2d, 0x0f, 0x73, 0x0d, 0x49, 0x09, 0x91, 0x05, 0x12, 0xfe, + 0xa9, 0xfd, 0x76, 0xf7, 0x84, 0xf4, 0xe1, 0xf2, 0x4e, 0xf1, 0xf9, 0xf2, 0xd2, 0xf1, 0x28, 0xf4, + 0x53, 0xf4, 0xe2, 0xf5, 0x3b, 0xf6, 0x6a, 0xfb, 0xa1, 0xfd, 0x8a, 0xfd, 0x3f, 0x04, 0xa0, 0x06, + 0x40, 0x09, 0x23, 0x0b, 0x89, 0x0f, 0xf5, 0x15, 0x93, 0x18, 0x58, 0x1a, 0x4e, 0x1e, 0x30, 0x1f, + 0x7b, 0x21, 0x17, 0x25, 0x56, 0x25, 0x30, 0x21, 0x9f, 0x1e, 0x58, 0x19, 0xe1, 0x14, 0x36, 0x11, + 0x96, 0x0b, 0x02, 0x09, 0x15, 0x08, 0x51, 0x07, 0x10, 0x01, 0xe5, 0xff, 0xc7, 0x00, 0xb9, 0x00, + 0x98, 0xff, 0xa8, 0xfc, 0x7d, 0xfb, 0xe8, 0xfd, 0x9c, 0xfd, 0x50, 0xfc, 0x14, 0xfd, 0x66, 0xfb, + 0xcc, 0xfa, 0x7a, 0xfb, 0xa0, 0xfd, 0xaa, 0x00, 0x3f, 0x01, 0x0a, 0x01, 0xcb, 0x00, 0x0f, 0x00, + 0xaf, 0xfd, 0x28, 0xfd, 0xe6, 0x00, 0x8d, 0x02, 0xea, 0x03, 0xf9, 0x00, 0xd9, 0xff, 0xbc, 0xff, + 0xc6, 0xfb, 0x25, 0xf9, 0xfc, 0xf2, 0xfe, 0xf2, 0x2d, 0xf3, 0x19, 0xf4, 0xa6, 0xf0, 0xcb, 0xeb, + 0x79, 0xeb, 0x2b, 0xe9, 0xdf, 0xe9, 0x08, 0xea, 0x81, 0xef, 0x05, 0xf0, 0x25, 0xf1, 0x52, 0xf5, + 0x11, 0xf9, 0xa6, 0xff, 0x8c, 0x03, 0x88, 0x08, 0xfa, 0x07, 0x78, 0x08, 0x0c, 0x08, 0x7a, 0x06, + 0x7d, 0x09, 0x66, 0x06, 0x29, 0x04, 0x4d, 0x01, 0xdc, 0x02, 0xc8, 0x05, 0xa4, 0x04, 0xfa, 0x03, + 0xcf, 0x02, 0x06, 0x02, 0x85, 0xfc, 0xff, 0xfa, 0xe8, 0xf9, 0x3a, 0xf6, 0xef, 0xee, 0x54, 0xe9, + 0xf9, 0xe7, 0x60, 0xe5, 0x71, 0xe8, 0x3a, 0xe8, 0xbc, 0xe9, 0x5c, 0xe7, 0xb3, 0xe5, 0x77, 0xeb, + 0x70, 0xf0, 0x18, 0xf3, 0xce, 0xf1, 0x82, 0xf4, 0x8f, 0xf5, 0xb6, 0xf7, 0x3b, 0xf7, 0x4b, 0xfa, + 0x05, 0xfe, 0xf2, 0xfc, 0x84, 0xfc, 0xcb, 0xfd, 0x0f, 0x01, 0x02, 0x04, 0xf6, 0x04, 0x48, 0x02, + 0xed, 0xfe, 0xdb, 0xff, 0xf2, 0xfd, 0x62, 0xff, 0x62, 0x01, 0xf9, 0x01, 0x47, 0x02, 0xa8, 0x01, + 0x89, 0x03, 0x94, 0xff, 0x6a, 0xff, 0x9b, 0xfd, 0x12, 0xfd, 0x78, 0xfb, 0xed, 0xf7, 0x07, 0xfb, + 0x0a, 0xfc, 0x67, 0xfc, 0xa6, 0xfc, 0xb8, 0xfe, 0x0c, 0xff, 0x56, 0x01, 0xd4, 0x02, 0x7b, 0x01, + 0x7f, 0x00, 0xb4, 0xff, 0xd6, 0x01, 0x02, 0x00, 0xe3, 0xfa, 0x56, 0xfb, 0x38, 0xf7, 0x8c, 0xf5, + 0x27, 0xf6, 0x13, 0xf5, 0xed, 0xf8, 0xa9, 0xf8, 0x15, 0xfa, 0x31, 0xf9, 0x52, 0xfd, 0xc0, 0x01, + 0x56, 0x08, 0xdc, 0x0c, 0xff, 0x0c, 0x33, 0x0f, 0xc4, 0x0f, 0xd1, 0x11, 0x39, 0x11, 0x3f, 0x11, + 0x1d, 0x13, 0xc8, 0x13, 0x48, 0x14, 0xbd, 0x16, 0x89, 0x18, 0x1f, 0x16, 0x93, 0x13, 0xfb, 0x11, + 0xa7, 0x0e, 0xd2, 0x08, 0xe9, 0x08, 0x4c, 0x09, 0xa1, 0x05, 0x35, 0x07, 0x18, 0x03, 0x3a, 0x00, + 0x91, 0x02, 0xfb, 0x00, 0xb3, 0xfe, 0xb1, 0xfa, 0x55, 0xfc, 0x53, 0xff, 0x8b, 0x02, 0xa0, 0x00, + 0xcf, 0x02, 0xf7, 0x02, 0x32, 0x02, 0x4a, 0x09, 0xee, 0x0b, 0xc5, 0x14, 0x05, 0x16, 0xe5, 0x19, + 0x71, 0x1b, 0xb4, 0x19, 0x81, 0x1c, 0x9b, 0x1c, 0xe7, 0x1d, 0x18, 0x1b, 0xc6, 0x18, 0xdc, 0x15, + 0x9d, 0x13, 0xfc, 0x11, 0x47, 0x0b, 0xee, 0x05, 0x4a, 0xfe, 0x37, 0xfd, 0x45, 0xfd, 0xff, 0xf8, + 0x7e, 0xf6, 0xee, 0xf1, 0x13, 0xf1, 0x82, 0xed, 0xce, 0xe9, 0x1e, 0xec, 0xaf, 0xef, 0x23, 0xee, + 0x84, 0xec, 0x11, 0xef, 0x1c, 0xef, 0xb0, 0xf2, 0x55, 0xf4, 0x5e, 0xf9, 0x5c, 0xf9, 0x2c, 0xfd, + 0xc1, 0x06, 0x92, 0x0d, 0x1f, 0x13, 0x23, 0x15, 0x10, 0x15, 0x78, 0x14, 0xd6, 0x15, 0x01, 0x11, + 0x02, 0x0f, 0xfc, 0x0c, 0x61, 0x0a, 0x67, 0x06, 0x75, 0xff, 0xcd, 0xfe, 0xe5, 0xff, 0x74, 0xfd, + 0x44, 0xf9, 0x88, 0xf4, 0x9b, 0xf1, 0x4b, 0xec, 0xb7, 0xe9, 0x29, 0xea, 0x73, 0xe7, 0x27, 0xe5, + 0x66, 0xe2, 0xcb, 0xe3, 0x6d, 0xe2, 0x2c, 0xe3, 0x5f, 0xe3, 0xa9, 0xe8, 0x64, 0xec, 0x48, 0xe9, + 0x58, 0xee, 0xc5, 0xf1, 0x37, 0xf5, 0xc4, 0xf9, 0x25, 0xfe, 0x31, 0x03, 0xeb, 0x08, 0x6f, 0x0b, + 0x91, 0x0d, 0x45, 0x0c, 0x7b, 0x09, 0x87, 0x0a, 0x03, 0x0a, 0xb8, 0x05, 0xe3, 0x04, 0x85, 0x01, + 0xa8, 0xfd, 0xea, 0xf8, 0xa2, 0xf5, 0x44, 0xf5, 0xdb, 0xf0, 0x62, 0xf1, 0x74, 0xee, 0x88, 0xee, + 0x2c, 0xef, 0xd1, 0xf2, 0x4c, 0xf4, 0x42, 0xf4, 0xaf, 0xf4, 0x70, 0xf3, 0x9e, 0xf6, 0x0a, 0xf6, + 0x3e, 0xfa, 0xb5, 0xf9, 0x8d, 0xf9, 0x42, 0xfd, 0x18, 0x00, 0x22, 0x03, 0x5b, 0x05, 0x9d, 0x08, + 0xcf, 0x0a, 0x0e, 0x09, 0x0c, 0x08, 0x8c, 0x0a, 0xb9, 0x0b, 0x19, 0x06, 0x61, 0x02, 0xbc, 0xfc, + 0xbe, 0xf7, 0x2f, 0xf4, 0x7c, 0xf0, 0xb9, 0xf0, 0x75, 0xea, 0xc3, 0xe6, 0x7d, 0xe6, 0x99, 0xe8, + 0x32, 0xe6, 0x62, 0xe4, 0x79, 0xe3, 0x8f, 0xe2, 0x40, 0xe3, 0xea, 0xe2, 0x43, 0xec, 0xac, 0xec, + 0x5c, 0xf0, 0xe2, 0xf4, 0x4f, 0xf8, 0x9f, 0xfc, 0xfa, 0x03, 0x15, 0x0e, 0xcf, 0x10, 0xcd, 0x14, + 0xf8, 0x14, 0x9b, 0x14, 0x96, 0x17, 0x63, 0x19, 0xf6, 0x19, 0xb3, 0x19, 0x51, 0x1e, 0x84, 0x20, + 0x2c, 0x20, 0x0e, 0x1f, 0x28, 0x1a, 0x34, 0x19, 0xfc, 0x11, 0x4b, 0x0d, 0x16, 0x0c, 0xfb, 0x09, + 0x2a, 0x05, 0x54, 0xff, 0x11, 0xff, 0xcc, 0xfa, 0xce, 0xfb, 0xac, 0xfb, 0xaa, 0xfe, 0x3d, 0xfd, + 0x94, 0xfc, 0xbc, 0x02, 0xf3, 0x07, 0x0a, 0x0a, 0x15, 0x0a, 0x47, 0x0b, 0xe1, 0x0c, 0xf6, 0x0c, + 0x16, 0x0d, 0xd8, 0x0f, 0x53, 0x10, 0xe1, 0x11, 0x87, 0x11, 0x5f, 0x0f, 0xec, 0x0d, 0xc2, 0x12, + 0x11, 0x18, 0x3e, 0x17, 0xf8, 0x14, 0x90, 0x15, 0x62, 0x13, 0x62, 0x10, 0xab, 0x0d, 0xc8, 0x09, + 0x9f, 0x05, 0xfa, 0xff, 0x02, 0x01, 0x7d, 0xfe, 0x78, 0xfe, 0x54, 0xfb, 0x7f, 0xfb, 0x3c, 0xfa, + 0xe4, 0xf5, 0xd9, 0xf7, 0x91, 0xf8, 0x62, 0xfc, 0x83, 0xfd, 0x35, 0xff, 0xeb, 0x00, 0xcb, 0x03, + 0x37, 0x07, 0xd2, 0x06, 0x2b, 0x05, 0x07, 0x04, 0x0e, 0x06, 0x33, 0x08, 0x4c, 0x04, 0x9a, 0x05, + 0x5d, 0x02, 0xb1, 0xfe, 0x33, 0xfc, 0x1d, 0xfc, 0x16, 0xff, 0x1e, 0xfe, 0xab, 0x00, 0x0f, 0x01, + 0x52, 0x02, 0x61, 0xfd, 0xc0, 0xfe, 0x69, 0x00, 0xd1, 0xfc, 0xf0, 0xf8, 0x8d, 0xf5, 0x9d, 0xf6, + 0x1b, 0xf5, 0x2d, 0xf6, 0xc8, 0xf4, 0x93, 0xf4, 0x06, 0xf4, 0x93, 0xf6, 0x9b, 0xfa, 0x46, 0xfb, + 0x42, 0xfb, 0x0b, 0xfc, 0x61, 0xfa, 0xa6, 0xf5, 0x43, 0xf7, 0x83, 0xf9, 0x86, 0xf4, 0xc6, 0xf3, + 0xfd, 0xf2, 0x03, 0xf2, 0xe5, 0xf2, 0xaa, 0xf4, 0x3b, 0xf5, 0xee, 0xf0, 0x19, 0xf0, 0xdf, 0xef, + 0x90, 0xf6, 0xc7, 0xf8, 0x13, 0xfc, 0xfa, 0xfd, 0x29, 0xff, 0xdb, 0x01, 0xfc, 0xfe, 0x1d, 0x03, + 0xa0, 0x02, 0x82, 0x03, 0x00, 0x05, 0x0e, 0x05, 0x8f, 0x03, 0x1b, 0x06, 0xa7, 0x0a, 0x6c, 0x09, + 0x92, 0x09, 0x50, 0x07, 0x85, 0x04, 0xba, 0x01, 0x64, 0x00, 0xe6, 0xfe, 0x0e, 0xf9, 0x8e, 0xf4, + 0xcd, 0xf3, 0x72, 0xf1, 0x3d, 0xee, 0x14, 0xea, 0x33, 0xeb, 0x64, 0xe8, 0x16, 0xe5, 0x28, 0xe5, + 0xe4, 0xe8, 0x36, 0xe8, 0x67, 0xe6, 0xb6, 0xe9, 0xd6, 0xea, 0x34, 0xef, 0x25, 0xf1, 0x12, 0xf9, + 0x10, 0xfc, 0x7a, 0xfc, 0x4e, 0x02, 0x21, 0x07, 0x71, 0x08, 0x77, 0x09, 0xe0, 0x09, 0xcb, 0x0a, + 0x74, 0x0c, 0xfd, 0x09, 0xf1, 0x07, 0xde, 0x07, 0xa5, 0x05, 0x5b, 0x03, 0x0d, 0x00, 0xe3, 0xfb, + 0xc4, 0xff, 0x67, 0x01, 0x19, 0x02, 0x60, 0x01, 0xa9, 0xff, 0x3a, 0xfc, 0xbf, 0xf9, 0xb5, 0xfa, + 0xe4, 0xf9, 0x9f, 0xf8, 0x86, 0xf7, 0xc4, 0xfa, 0xca, 0xfa, 0x78, 0xfd, 0xeb, 0xfb, 0x0e, 0x01, + 0xe1, 0x05, 0x13, 0x05, 0x0f, 0x0a, 0x21, 0x12, 0xdd, 0x15, 0xb6, 0x15, 0x4d, 0x16, 0xc8, 0x15, + 0x70, 0x16, 0xeb, 0x16, 0x39, 0x16, 0x9e, 0x13, 0xe0, 0x0d, 0xfe, 0x0e, 0x8c, 0x0f, 0x39, 0x0a, + 0x38, 0x09, 0x6e, 0x06, 0xaa, 0x04, 0x00, 0xfe, 0xa4, 0xfc, 0xbc, 0xfd, 0xdf, 0xfb, 0x71, 0xfc, + 0x05, 0xfc, 0x62, 0xfe, 0x83, 0xfa, 0x62, 0xff, 0x68, 0x01, 0xdb, 0x04, 0x80, 0x06, 0x30, 0x04, + 0xe0, 0x07, 0xf3, 0x08, 0x18, 0x0b, 0x37, 0x0a, 0x47, 0x0a, 0x8d, 0x0e, 0xcc, 0x12, 0x10, 0x18, + 0x4d, 0x1e, 0x02, 0x21, 0xd1, 0x20, 0x9c, 0x1c, 0xed, 0x15, 0x64, 0x14, 0x17, 0x14, 0xc6, 0x0e, + 0x4c, 0x0a, 0xe3, 0x05, 0x91, 0x01, 0x7a, 0xfc, 0x10, 0xf9, 0xa4, 0xf8, 0x31, 0xf3, 0x89, 0xec, + 0x3d, 0xec, 0x4c, 0xf0, 0xe9, 0xec, 0x56, 0xed, 0xb7, 0xea, 0x2b, 0xea, 0x3d, 0xe8, 0x31, 0xe5, + 0x3a, 0xeb, 0x8e, 0xec, 0x69, 0xf0, 0x9c, 0xf4, 0x9f, 0xf7, 0x9d, 0xf6, 0x19, 0xfb, 0x6e, 0x04, + 0x44, 0x0a, 0xa5, 0x0f, 0x3b, 0x12, 0x7c, 0x13, 0xd3, 0x14, 0xf8, 0x17, 0x93, 0x19, 0xc6, 0x14, + 0x9e, 0x13, 0x2c, 0x11, 0x93, 0x0d, 0xa5, 0x0c, 0x5f, 0x07, 0x26, 0x07, 0x91, 0x03, 0x57, 0xfd, + 0x2b, 0xf8, 0x31, 0xf6, 0x7b, 0xf3, 0x3e, 0xf0, 0xa4, 0xed, 0x84, 0xeb, 0xce, 0xed, 0x73, 0xed, + 0xff, 0xf0, 0x54, 0xf0, 0xf2, 0xee, 0xf9, 0xf2, 0x14, 0xf7, 0x2a, 0xfa, 0x39, 0xfe, 0x15, 0x01, + 0x5b, 0x04, 0x65, 0x05, 0x2b, 0x05, 0xfa, 0x06, 0xef, 0x06, 0xa3, 0x07, 0x98, 0x0c, 0x65, 0x0e, + 0x96, 0x0b, 0xcd, 0x0d, 0xe0, 0x0e, 0xd5, 0x0d, 0x27, 0x07, 0x31, 0x04, 0xd1, 0xfe, 0xe3, 0xf9, + 0xa2, 0xf6, 0x3f, 0xf3, 0x30, 0xec, 0xbc, 0xe4, 0x5e, 0xe4, 0xdf, 0xe1, 0xf1, 0xe2, 0xc8, 0xdf, + 0x0a, 0xe1, 0x97, 0xe1, 0x00, 0xe0, 0x66, 0xe3, 0xf2, 0xe6, 0xa2, 0xec, 0xb8, 0xef, 0xdd, 0xef, + 0x4d, 0xf2, 0xe9, 0xf7, 0x39, 0xfd, 0x40, 0x00, 0x39, 0x02, 0x32, 0x01, 0xfd, 0x02, 0x4c, 0x05, + 0x25, 0x06, 0x07, 0x09, 0x71, 0x08, 0x55, 0x0a, 0xdc, 0x09, 0x50, 0x0c, 0xc6, 0x0d, 0x42, 0x0d, + 0x5e, 0x0a, 0x45, 0x08, 0x78, 0x07, 0x44, 0x00, 0x98, 0x01, 0x63, 0x02, 0x98, 0x03, 0x9e, 0xfe, + 0x8a, 0xfc, 0x8f, 0xfb, 0xa0, 0xf7, 0xbc, 0xf9, 0xcb, 0xf9, 0xe1, 0xf9, 0xe8, 0xfa, 0x79, 0xfc, + 0x75, 0xff, 0xc5, 0x00, 0xf3, 0x01, 0x16, 0x03, 0xd7, 0x01, 0xda, 0xfd, 0xa8, 0xfe, 0x90, 0x02, + 0xba, 0xff, 0xff, 0xfc, 0x1a, 0xfa, 0x3e, 0xfa, 0x40, 0xfa, 0x2b, 0xfc, 0x65, 0xff, 0x0d, 0x00, + 0x02, 0x01, 0x0e, 0x02, 0x58, 0x05, 0x88, 0x07, 0x29, 0x09, 0xa6, 0x06, 0x5b, 0x07, 0x6a, 0x06, + 0x38, 0x03, 0x94, 0x03, 0x50, 0x05, 0x44, 0x07, 0x58, 0x07, 0xdc, 0x08, 0xa5, 0x06, 0xa6, 0x08, + 0x02, 0x0c, 0xd4, 0x0e, 0xb0, 0x13, 0x8e, 0x16, 0x4c, 0x15, 0x40, 0x12, 0x1f, 0x13, 0x3f, 0x13, + 0x21, 0x0d, 0xc9, 0x09, 0x66, 0x07, 0xa4, 0x07, 0xe2, 0x05, 0x65, 0x02, 0xe2, 0x03, 0xa5, 0x00, + 0xb8, 0xfc, 0x2c, 0xf9, 0x92, 0xfc, 0x3e, 0xff, 0x37, 0x01, 0xbb, 0x01, 0x06, 0x00, 0x00, 0x00, + 0x8f, 0xfb, 0x1d, 0xfd, 0xc9, 0xfc, 0xeb, 0xf8, 0x84, 0xfb, 0xdd, 0xfc, 0xec, 0xfc, 0x76, 0xfc, + 0xcd, 0xfc, 0x78, 0xfd, 0x9f, 0xfd, 0x0a, 0xfe, 0xcf, 0xfb, 0x52, 0xfc, 0xb6, 0xfb, 0x57, 0xfb, + 0x22, 0xfb, 0x3c, 0xf7, 0x91, 0xf8, 0x9b, 0xfa, 0x6d, 0xfd, 0x17, 0xfd, 0x61, 0xfd, 0x57, 0xfb, + 0x1e, 0xfc, 0xf7, 0xfb, 0xe3, 0xfb, 0x0f, 0xf8, 0x9e, 0xf7, 0xf8, 0xf8, 0xe3, 0xf8, 0x62, 0xfe, + 0x17, 0x00, 0x88, 0x06, 0x40, 0x0a, 0x85, 0x0a, 0x63, 0x0c, 0x07, 0x0f, 0xe6, 0x10, 0xdd, 0x0e, + 0xc4, 0x0e, 0xd9, 0x0c, 0x98, 0x0c, 0x35, 0x0f, 0x51, 0x0f, 0xdb, 0x0c, 0xd0, 0x04, 0x4b, 0x04, + 0x9c, 0x04, 0x3b, 0x02, 0xd9, 0x02, 0xab, 0x00, 0x62, 0xff, 0x13, 0xf9, 0xf9, 0xf5, 0xef, 0xf3, + 0x82, 0xf2, 0x73, 0xf0, 0x42, 0xf1, 0x77, 0xf3, 0x3b, 0xef, 0xdd, 0xf0, 0x64, 0xf0, 0xee, 0xf3, + 0x45, 0xf5, 0x64, 0xf6, 0x72, 0xf8, 0xd1, 0xfb, 0xa6, 0x00, 0x6d, 0x03, 0x6e, 0x04, 0x08, 0x06, + 0xcd, 0x07, 0x63, 0x09, 0xa3, 0x0c, 0x52, 0x0e, 0xe6, 0x0d, 0xbd, 0x0b, 0x29, 0x06, 0xab, 0x03, + 0xfa, 0x01, 0x20, 0xfe, 0x3a, 0xfc, 0xff, 0xf7, 0xc3, 0xf3, 0x88, 0xef, 0x64, 0xef, 0x1b, 0xf0, + 0xaf, 0xf0, 0xd7, 0xed, 0x33, 0xed, 0x56, 0xef, 0xd1, 0xec, 0x06, 0xee, 0xd6, 0xed, 0xc6, 0xef, + 0x47, 0xf0, 0x8d, 0xef, 0x2c, 0xf2, 0xf6, 0xf4, 0xb1, 0xf6, 0x0b, 0xfa, 0x72, 0xfe, 0xaf, 0x00, + 0x88, 0x06, 0x0b, 0x0f, 0x78, 0x15, 0x38, 0x19, 0xa5, 0x1c, 0xaa, 0x1a, 0xa0, 0x14, 0x49, 0x13, + 0xb6, 0x15, 0x7c, 0x10, 0x8e, 0x0b, 0x71, 0x06, 0x4b, 0x02, 0x35, 0xff, 0x0d, 0xfc, 0xfd, 0xf9, + 0x49, 0xf8, 0x9c, 0xf5, 0x3c, 0xf1, 0x7d, 0xf0, 0x6a, 0xef, 0x48, 0xf1, 0xd5, 0xee, 0x57, 0xec, + 0xb4, 0xee, 0xeb, 0xed, 0xb1, 0xf0, 0xd2, 0xf3, 0x6d, 0xf5, 0xac, 0xf8, 0x88, 0xfa, 0xb8, 0xfd, + 0x40, 0x02, 0x49, 0x07, 0x4b, 0x0a, 0xb9, 0x0d, 0x12, 0x12, 0x11, 0x16, 0x1e, 0x1a, 0x7f, 0x19, + 0x95, 0x1d, 0x46, 0x1d, 0xb5, 0x17, 0xb4, 0x15, 0x71, 0x14, 0xba, 0x13, 0x08, 0x0f, 0xa8, 0x0e, + 0x1a, 0x0b, 0x91, 0x05, 0xf4, 0x00, 0x16, 0xfe, 0x80, 0xf6, 0xd4, 0xf0, 0xea, 0xee, 0x7e, 0xed, + 0x54, 0xee, 0xde, 0xea, 0x29, 0xeb, 0x5b, 0xea, 0xea, 0xe6, 0x9b, 0xe7, 0x12, 0xeb, 0xdc, 0xef, + 0x7b, 0xf4, 0x65, 0xf6, 0x8b, 0xf4, 0xb1, 0xf7, 0x54, 0xfc, 0xee, 0xff, 0x89, 0x03, 0xe3, 0x02, + 0xc4, 0x07, 0x96, 0x0b, 0x97, 0x0f, 0xf2, 0x11, 0xb1, 0x11, 0x1b, 0x13, 0x21, 0x10, 0x57, 0x0e, + 0x7a, 0x0b, 0x56, 0x0c, 0x4b, 0x09, 0xe2, 0x06, 0x5b, 0x03, 0x7b, 0xfd, 0x26, 0xfe, 0xa6, 0xfb, + 0x65, 0xfd, 0x80, 0xfb, 0x5e, 0xfb, 0x56, 0xfc, 0xf7, 0xf9, 0xae, 0xfd, 0xa4, 0x01, 0x86, 0x00, + 0x3a, 0x00, 0x82, 0x01, 0xfa, 0x03, 0x0a, 0x06, 0xe9, 0x08, 0xd7, 0x0d, 0x7d, 0x10, 0xc9, 0x0c, + 0xdb, 0x0a, 0xae, 0x0b, 0x03, 0x0a, 0x2c, 0x09, 0x11, 0x0a, 0xcf, 0x0a, 0xe7, 0x08, 0x24, 0x09, + 0x22, 0x0a, 0xdd, 0x08, 0x22, 0x02, 0xf3, 0xff, 0x18, 0xfe, 0x78, 0xfb, 0x08, 0xfc, 0xf6, 0xf7, + 0x31, 0xf7, 0x9f, 0xf4, 0x46, 0xf0, 0x21, 0xee, 0xfe, 0xee, 0xf2, 0xf0, 0x5b, 0xf2, 0x00, 0xf5, + 0xcf, 0xf6, 0x3b, 0xf9, 0x18, 0xfc, 0x24, 0x00, 0x77, 0x05, 0x33, 0x0a, 0x90, 0x0c, 0x1b, 0x0b, + 0xa8, 0x0d, 0x22, 0x11, 0x67, 0x0c, 0x8d, 0x09, 0x34, 0x06, 0xf4, 0x05, 0x0c, 0x04, 0x88, 0x01, + 0x9d, 0x04, 0x26, 0x06, 0x57, 0x04, 0xcd, 0x03, 0xa4, 0x05, 0xb4, 0x04, 0x96, 0x05, 0xbe, 0x04, + 0xa8, 0x00, 0xed, 0xfc, 0xa8, 0xf9, 0x3b, 0xfa, 0xae, 0xf9, 0x54, 0xf7, 0x54, 0xf7, 0xf6, 0xf6, + 0xed, 0xf5, 0x43, 0xf6, 0xa4, 0xf9, 0x9e, 0xfb, 0x26, 0xfc, 0x41, 0xfd, 0x7b, 0xfe, 0x89, 0xfd, + 0xd9, 0xf9, 0x82, 0xf9, 0x73, 0xf7, 0x06, 0xf7, 0x95, 0xf5, 0xc6, 0xf5, 0xb8, 0xf7, 0x33, 0xf7, + 0xba, 0xf7, 0x48, 0xf6, 0x59, 0xf6, 0x78, 0xf6, 0xa1, 0xf9, 0xdc, 0xf8, 0x35, 0xfa, 0x56, 0xfb, + 0xde, 0xfa, 0x11, 0xfe, 0x63, 0xfd, 0xf6, 0xff, 0xb7, 0x00, 0x1a, 0x00, 0xb5, 0x02, 0x4e, 0x02, + 0x4c, 0x02, 0x67, 0x02, 0xa0, 0x03, 0xb0, 0x01, 0xe0, 0xfe, 0x1e, 0x00, 0xe9, 0x03, 0xad, 0x04, + 0x9d, 0x00, 0x4a, 0x02, 0xa7, 0x03, 0xc5, 0x03, 0xa9, 0x02, 0x18, 0x03, 0xee, 0x03, 0x2b, 0x01, + 0x14, 0xff, 0x78, 0xfe, 0x0e, 0x01, 0x08, 0xfe, 0x9b, 0xff, 0x07, 0xff, 0x25, 0xfc, 0xca, 0xfc, + 0x3c, 0xfe, 0xc4, 0x03, 0x64, 0x05, 0x5e, 0x09, 0xdb, 0x0a, 0x2a, 0x09, 0x0c, 0x0a, 0x25, 0x09, + 0x20, 0x07, 0x63, 0x05, 0x99, 0x04, 0xaa, 0x02, 0xc5, 0x00, 0xb5, 0x00, 0x41, 0x00, 0x57, 0x00, + 0xbf, 0xfa, 0x64, 0xf7, 0xbd, 0xf5, 0xb5, 0xf4, 0xcf, 0xf4, 0x03, 0xf4, 0x1d, 0xf2, 0x31, 0xee, + 0x1f, 0xed, 0x7d, 0xed, 0x7b, 0xee, 0x71, 0xee, 0xb8, 0xf0, 0x50, 0xf2, 0xef, 0xf1, 0xb7, 0xf2, + 0x0b, 0xf4, 0xe8, 0xf5, 0x9f, 0xf5, 0x45, 0xf6, 0xb0, 0xf8, 0x06, 0xfd, 0x03, 0x01, 0xb1, 0x07, + 0x9b, 0x0c, 0x3a, 0x0e, 0x2a, 0x12, 0x71, 0x16, 0xdd, 0x19, 0xf8, 0x1b, 0x91, 0x1e, 0x72, 0x21, + 0x2b, 0x1d, 0x9f, 0x1a, 0x49, 0x1b, 0xac, 0x17, 0x61, 0x11, 0x3e, 0x0b, 0xc8, 0x09, 0xca, 0x05, + 0x63, 0x03, 0x20, 0x02, 0xb9, 0x01, 0x52, 0xfe, 0xf6, 0xf8, 0xf8, 0xf5, 0x85, 0xf2, 0xae, 0xf3, + 0x9a, 0xf3, 0x2d, 0xf1, 0xbe, 0xf0, 0x7a, 0xee, 0xdb, 0xef, 0xe9, 0xf0, 0x17, 0xf2, 0xaa, 0xf3, + 0x3c, 0xf6, 0x81, 0xfb, 0xb1, 0x00, 0x62, 0x08, 0x54, 0x0d, 0x9d, 0x11, 0xe7, 0x14, 0xfd, 0x16, + 0x10, 0x18, 0xd9, 0x16, 0x97, 0x19, 0x6d, 0x18, 0x03, 0x14, 0x18, 0x0f, 0x3d, 0x0d, 0x5f, 0x0a, + 0x84, 0x06, 0x76, 0x04, 0x9d, 0x03, 0x6e, 0x00, 0xf2, 0xfc, 0x30, 0xfe, 0xb1, 0xf9, 0x92, 0xf6, + 0x1d, 0xf3, 0xa8, 0xf0, 0xa5, 0xf0, 0x0e, 0xed, 0x15, 0xef, 0x78, 0xf0, 0xac, 0xef, 0x95, 0xf0, + 0x88, 0xf3, 0xe3, 0xf5, 0xea, 0xf6, 0x6b, 0xfd, 0xb2, 0xff, 0xc3, 0x01, 0xe3, 0x05, 0xa1, 0x0c, + 0xcb, 0x11, 0x61, 0x10, 0x3c, 0x11, 0x21, 0x10, 0x6c, 0x10, 0x5f, 0x0e, 0x92, 0x0b, 0x22, 0x0a, + 0x04, 0x07, 0x85, 0x02, 0xc3, 0xfc, 0x9d, 0xfb, 0x85, 0xf6, 0x4f, 0xf4, 0xeb, 0xef, 0xa6, 0xeb, + 0x14, 0xeb, 0x52, 0xe9, 0x35, 0xeb, 0x47, 0xec, 0x47, 0xed, 0xb1, 0xed, 0x73, 0xec, 0x4f, 0xee, + 0xdc, 0xf3, 0x9e, 0xf6, 0xae, 0xf6, 0xa4, 0xf9, 0x60, 0xfc, 0x8a, 0xfd, 0x92, 0xfe, 0x4d, 0x03, + 0x8d, 0x0a, 0x1d, 0x0a, 0x68, 0x0c, 0xa2, 0x0f, 0xc4, 0x11, 0xed, 0x11, 0x5e, 0x12, 0xe0, 0x12, + 0xb0, 0x0e, 0x5a, 0x0a, 0x81, 0x08, 0x01, 0x09, 0x55, 0x03, 0xb8, 0x00, 0xa3, 0xfe, 0xa3, 0xf9, + 0x67, 0xf7, 0x0f, 0xf4, 0xeb, 0xf2, 0x23, 0xf3, 0x2d, 0xf0, 0x08, 0xee, 0x5a, 0xee, 0x14, 0xef, + 0xd3, 0xf0, 0xd4, 0xf0, 0x0b, 0xf1, 0x4c, 0xf3, 0x80, 0xf6, 0x89, 0xf9, 0x6e, 0xfd, 0x96, 0x00, + 0x13, 0x06, 0xbb, 0x06, 0x25, 0x06, 0x96, 0x08, 0x7f, 0x08, 0x33, 0x07, 0xdc, 0x05, 0xfe, 0x06, + 0xe5, 0x07, 0xc1, 0x08, 0x3c, 0x08, 0xec, 0x09, 0xef, 0x05, 0x7c, 0x03, 0x5f, 0x04, 0xff, 0x00, + 0x91, 0x00, 0xb1, 0xff, 0xc4, 0xfd, 0xa0, 0xf9, 0xa6, 0xf3, 0x03, 0xf3, 0x71, 0xf1, 0xfb, 0xef, + 0xc1, 0xef, 0xaa, 0xf1, 0x3e, 0xf4, 0xd4, 0xf4, 0x66, 0xf9, 0xbe, 0xfb, 0x85, 0xfe, 0x5c, 0xfe, + 0xb9, 0x02, 0x35, 0x06, 0x93, 0x04, 0x5c, 0x08, 0x5f, 0x08, 0xde, 0x06, 0xbb, 0x03, 0x76, 0x03, + 0xbe, 0x04, 0xa5, 0x06, 0x5f, 0x09, 0x16, 0x0c, 0xa8, 0x0e, 0x9c, 0x0e, 0x0c, 0x10, 0x56, 0x0d, + 0x14, 0x0c, 0xbe, 0x09, 0x02, 0x06, 0x51, 0x05, 0x57, 0x01, 0x28, 0xff, 0xee, 0xfe, 0xfa, 0xfc, + 0x08, 0xfc, 0x48, 0xfb, 0xfc, 0xf9, 0x19, 0xfa, 0xa0, 0xfd, 0x84, 0xfe, 0x6d, 0xff, 0x8a, 0xfe, + 0xe1, 0x02, 0xd1, 0x05, 0x98, 0x02, 0x40, 0x04, 0xa4, 0x05, 0x59, 0x08, 0x12, 0x07, 0x29, 0x08, + 0x76, 0x0a, 0x2a, 0x0b, 0x86, 0x09, 0xca, 0x06, 0x88, 0x07, 0x12, 0x05, 0x68, 0x09, 0xe2, 0x0b, + 0x34, 0x0c, 0xb6, 0x0d, 0xe4, 0x0d, 0xfd, 0x10, 0xc1, 0x0f, 0x1a, 0x10, 0xce, 0x11, 0x6a, 0x0e, + 0x38, 0x0d, 0x56, 0x0d, 0xb2, 0x0b, 0x9e, 0x07, 0xce, 0x03, 0xbe, 0x00, 0x3b, 0xfe, 0x13, 0xfc, + 0x5d, 0xfb, 0xc8, 0xfe, 0xe0, 0xfc, 0xf4, 0xf9, 0x94, 0xf6, 0x6c, 0xf4, 0xda, 0xf2, 0xfc, 0xf0, + 0x0b, 0xf1, 0xc4, 0xef, 0x03, 0xec, 0x5b, 0xea, 0x68, 0xec, 0x03, 0xeb, 0x6f, 0xec, 0x21, 0xec, + 0xf4, 0xeb, 0x8c, 0xee, 0x5a, 0xef, 0xd0, 0xf2, 0xf4, 0xf6, 0xe4, 0xf9, 0x0c, 0xfd, 0x98, 0xfd, + 0x86, 0xfe, 0x6b, 0x03, 0x4e, 0x07, 0x4b, 0x06, 0x39, 0x06, 0xb4, 0x09, 0x19, 0x0b, 0x9c, 0x0b, + 0x4e, 0x0b, 0xb9, 0x0e, 0xac, 0x0c, 0xa2, 0x09, 0x3a, 0x0a, 0x6d, 0x0a, 0x02, 0x09, 0x7c, 0x04, + 0x36, 0x04, 0x43, 0x03, 0x7a, 0xff, 0x14, 0xfd, 0x55, 0xff, 0x17, 0xfd, 0xd2, 0xfb, 0xc2, 0xfc, + 0x9f, 0xfa, 0xaa, 0xfa, 0xb3, 0xf9, 0x68, 0xf7, 0xfb, 0xf6, 0xf4, 0xf4, 0x2b, 0xf6, 0x76, 0xf8, + 0x10, 0xfb, 0xba, 0xfc, 0x19, 0xfd, 0x14, 0xff, 0x47, 0x00, 0xf3, 0x02, 0xbc, 0x04, 0x42, 0x08, + 0x98, 0x06, 0xc1, 0x07, 0xde, 0x06, 0xec, 0x03, 0xc4, 0x03, 0x27, 0x02, 0xbe, 0x00, 0xd7, 0xfa, + 0xf3, 0xf8, 0xdf, 0xf6, 0x6c, 0xf5, 0x0a, 0xf6, 0xa9, 0xf7, 0xb8, 0xf6, 0x8b, 0xf3, 0x5e, 0xf6, + 0xc0, 0xf5, 0xfa, 0xf3, 0x1b, 0xf3, 0xc0, 0xf1, 0xa5, 0xf2, 0x01, 0xf0, 0x0b, 0xf0, 0x52, 0xf1, + 0x41, 0xf0, 0x18, 0xf0, 0xce, 0xf2, 0xae, 0xf7, 0xf7, 0xfa, 0x50, 0x02, 0xed, 0x09, 0x69, 0x0e, + 0x22, 0x0e, 0xdb, 0x10, 0xf3, 0x14, 0xd3, 0x14, 0xd4, 0x14, 0x06, 0x14, 0x56, 0x15, 0x0d, 0x12, + 0x63, 0x0e, 0xf9, 0x09, 0x1e, 0x09, 0xec, 0x06, 0xf1, 0x02, 0x5f, 0x01, 0x8d, 0xfd, 0x0b, 0xfe, + 0x19, 0xfb, 0x27, 0xf7, 0x15, 0xf3, 0x8a, 0xef, 0x4f, 0xf0, 0x06, 0xf0, 0xb5, 0xf2, 0x9e, 0xf3, + 0x60, 0xf2, 0xe9, 0xf3, 0xb7, 0xf5, 0xa7, 0xf8, 0xa0, 0xf8, 0xbf, 0xfa, 0x29, 0xfe, 0xa2, 0x00, + 0x82, 0x02, 0xdc, 0x06, 0x53, 0x11, 0x8b, 0x13, 0x42, 0x14, 0x7d, 0x16, 0x12, 0x18, 0xb6, 0x17, + 0xe6, 0x15, 0x58, 0x15, 0x8c, 0x12, 0x65, 0x0d, 0x32, 0x08, 0x70, 0x06, 0xd6, 0x01, 0x50, 0xfd, + 0x36, 0xfa, 0xf8, 0xf7, 0xfb, 0xf5, 0x7f, 0xf5, 0xa2, 0xf5, 0x36, 0xf7, 0x34, 0xf7, 0x5b, 0xf6, + 0x6a, 0xf4, 0xc7, 0xf3, 0x72, 0xf7, 0x2f, 0xfc, 0x55, 0xfe, 0xed, 0xff, 0x64, 0x02, 0xfb, 0x03, + 0x30, 0x06, 0xab, 0x08, 0x33, 0x0e, 0x85, 0x12, 0x02, 0x17, 0x6b, 0x19, 0x8e, 0x1b, 0xa1, 0x1b, + 0xb8, 0x16, 0xc0, 0x14, 0x41, 0x12, 0xbc, 0x10, 0xc3, 0x0b, 0x78, 0x09, 0x19, 0x05, 0xc9, 0xfe, + 0x67, 0xfb, 0x50, 0xf5, 0xf1, 0xf1, 0x3b, 0xf0, 0x12, 0xee, 0xa4, 0xec, 0xbb, 0xe8, 0x58, 0xe9, + 0x56, 0xe9, 0x2a, 0xe8, 0x03, 0xe8, 0xbf, 0xe9, 0x09, 0xed, 0x6e, 0xee, 0x0f, 0xf3, 0x4d, 0xf5, + 0x3b, 0xfa, 0x31, 0xfc, 0x68, 0x00, 0x38, 0x04, 0x4a, 0x03, 0xee, 0x03, 0x9f, 0x06, 0xa8, 0x08, + 0xaf, 0x06, 0x36, 0x08, 0xf6, 0x09, 0xd4, 0x0c, 0xe4, 0x0d, 0x9f, 0x0f, 0xfe, 0x0e, 0x68, 0x0c, + 0x1b, 0x0d, 0x41, 0x0b, 0x69, 0x0a, 0x6c, 0x07, 0xf6, 0x01, 0xd4, 0xfd, 0xeb, 0xf8, 0xc4, 0xf4, + 0x95, 0xf2, 0x98, 0xf2, 0x88, 0xf1, 0x57, 0xf2, 0x01, 0xf3, 0xbc, 0xf0, 0x06, 0xf3, 0x99, 0xf3, + 0x28, 0xf6, 0xbc, 0xf5, 0x79, 0xf6, 0x6e, 0xfa, 0x9f, 0xfb, 0xd8, 0xfc, 0x2b, 0xfc, 0x7b, 0xfd, + 0xa8, 0xfc, 0xee, 0xfc, 0xfe, 0xfc, 0x6e, 0xff, 0x56, 0x02, 0x2f, 0x05, 0x24, 0x07, 0xdf, 0x04, + 0xbf, 0x07, 0x46, 0x0b, 0xf1, 0x0b, 0x03, 0x0b, 0x4e, 0x09, 0x18, 0x09, 0x99, 0x07, 0x0d, 0x07, + 0xaf, 0x07, 0x7b, 0x05, 0x8d, 0x01, 0x55, 0x00, 0x6a, 0x00, 0x35, 0xfd, 0xad, 0xfa, 0xa4, 0xf9, + 0xbe, 0xfa, 0x71, 0xfa, 0xac, 0xf8, 0xa3, 0xfb, 0x7b, 0xfc, 0x7f, 0xfb, 0xc6, 0xf9, 0xa0, 0xf9, + 0x00, 0xfb, 0x46, 0xfc, 0x75, 0xfb, 0x09, 0xfb, 0xf8, 0xf9, 0x8d, 0xf5, 0xde, 0xf5, 0x5c, 0xf6, + 0x42, 0xf8, 0xaa, 0xfb, 0x06, 0xfd, 0x1f, 0xff, 0xca, 0xfe, 0x31, 0xfd, 0x27, 0xff, 0x42, 0x00, + 0xc2, 0x01, 0x2f, 0x00, 0x68, 0xfd, 0x8a, 0xfd, 0xe0, 0xfe, 0x1a, 0xfd, 0x93, 0xf9, 0x4c, 0xfa, + 0x51, 0xfb, 0xbe, 0xfa, 0xf0, 0xfa, 0xa6, 0x00, 0x10, 0x03, 0x3c, 0x03, 0x8e, 0x04, 0x82, 0x06, + 0x50, 0x08, 0xf4, 0x06, 0xc2, 0x05, 0x4b, 0x06, 0x70, 0x07, 0x7f, 0x04, 0x2a, 0x07, 0xf8, 0x07, + 0x53, 0x05, 0xcd, 0x05, 0xe0, 0x03, 0xe8, 0x03, 0xc3, 0x04, 0xa3, 0x05, 0xee, 0x07, 0xc6, 0x09, + 0xe2, 0x0b, 0xad, 0x0b, 0x4b, 0x0c, 0x41, 0x0b, 0x00, 0x0a, 0xfc, 0x09, 0x45, 0x0a, 0x77, 0x0b, + 0x1a, 0x09, 0xca, 0x0a, 0xcb, 0x07, 0xfd, 0x06, 0xe1, 0x06, 0x15, 0x04, 0x65, 0x04, 0xdb, 0x04, + 0x65, 0x06, 0xe5, 0x02, 0x5e, 0xfe, 0x92, 0xfa, 0xa7, 0xf8, 0x68, 0xf7, 0x13, 0xf9, 0x28, 0xf8, + 0xd8, 0xf5, 0x34, 0xf8, 0xdf, 0xf8, 0x8d, 0xf7, 0x4c, 0xf5, 0xc2, 0xf3, 0xb0, 0xf2, 0xa6, 0xf0, + 0x7c, 0xf0, 0x4a, 0xf3, 0x1c, 0xf6, 0x40, 0xf6, 0x9c, 0xf8, 0xe9, 0xfa, 0x64, 0xfd, 0x63, 0x02, + 0xe3, 0x06, 0x57, 0x0c, 0x8e, 0x0b, 0x35, 0x0b, 0x46, 0x0d, 0xdc, 0x0d, 0x4e, 0x0d, 0x3a, 0x0a, + 0x6b, 0x0a, 0x99, 0x07, 0xd2, 0x04, 0xbf, 0x00, 0x97, 0x01, 0xed, 0x02, 0x4a, 0x03, 0x7d, 0x03, + 0x5e, 0xff, 0x2e, 0xff, 0x14, 0xfe, 0x6d, 0xfd, 0x65, 0xfd, 0x0c, 0xfa, 0xa1, 0xfa, 0xc8, 0xf9, + 0x74, 0xf9, 0x8d, 0xfb, 0xca, 0xf9, 0xcd, 0xf8, 0x5a, 0xfb, 0x30, 0x00, 0x2e, 0x04, 0xe3, 0x05, + 0x9d, 0x06, 0xcb, 0x07, 0x1a, 0x08, 0x78, 0x06, 0xa5, 0x09, 0x88, 0x0c, 0x7e, 0x0c, 0x7f, 0x0b, + 0x2c, 0x09, 0x41, 0x05, 0x0e, 0x02, 0xb4, 0xff, 0xf3, 0xfb, 0x2e, 0xf8, 0x4d, 0xf4, 0xa3, 0xf2, + 0x6b, 0xf0, 0xa7, 0xee, 0xb5, 0xec, 0xc0, 0xeb, 0x51, 0xec, 0xc0, 0xeb, 0x2b, 0xed, 0xf3, 0xee, + 0xe9, 0xef, 0x0a, 0xf3, 0xc8, 0xf4, 0x84, 0xf4, 0xe0, 0xf4, 0xdc, 0xf8, 0xdd, 0xfb, 0xd7, 0xfc, + 0xd1, 0xfe, 0x3e, 0x02, 0xca, 0x06, 0x78, 0x0a, 0x3b, 0x12, 0xdd, 0x17, 0x70, 0x1c, 0x90, 0x1e, + 0xa3, 0x1e, 0x4c, 0x20, 0x97, 0x1d, 0x33, 0x1a, 0x0f, 0x17, 0x77, 0x13, 0x72, 0x0d, 0xee, 0x08, + 0x20, 0x04, 0x65, 0xfe, 0x62, 0xfa, 0x01, 0xf6, 0x78, 0xf3, 0xf4, 0xf1, 0x39, 0xf0, 0x30, 0xed, + 0x25, 0xea, 0xcd, 0xe9, 0x54, 0xe8, 0xda, 0xe6, 0x24, 0xe6, 0x44, 0xe8, 0x27, 0xea, 0x2e, 0xea, + 0x22, 0xec, 0xd6, 0xed, 0x56, 0xf0, 0x08, 0xf0, 0x1c, 0xf5, 0x79, 0xfb, 0x43, 0x00, 0x85, 0x03, + 0x55, 0x06, 0xf7, 0x0b, 0x09, 0x0c, 0xb0, 0x0b, 0xb8, 0x0c, 0x28, 0x0e, 0x64, 0x0d, 0x0a, 0x0f, + 0x7e, 0x0e, 0x9d, 0x09, 0x37, 0x09, 0x9c, 0x07, 0x84, 0x06, 0xdd, 0x03, 0x3f, 0xff, 0xbe, 0xfb, + 0xce, 0xf8, 0x26, 0xf8, 0x5b, 0xf7, 0x57, 0xf8, 0xa2, 0xf8, 0xd3, 0xf7, 0x0f, 0xf8, 0x4f, 0xf8, + 0xa2, 0xfa, 0xd5, 0xfe, 0xe2, 0x02, 0xb6, 0x03, 0x5b, 0x05, 0x22, 0x06, 0xe7, 0x07, 0x49, 0x09, + 0x9a, 0x08, 0x01, 0x0b, 0x28, 0x0d, 0xed, 0x0e, 0x63, 0x0e, 0x7c, 0x0f, 0x0b, 0x0f, 0x97, 0x10, + 0x24, 0x12, 0x82, 0x0d, 0xed, 0x0c, 0x96, 0x0d, 0xb2, 0x0c, 0x82, 0x08, 0xa2, 0x03, 0xc7, 0x00, + 0x02, 0xfb, 0xdc, 0xf7, 0x8f, 0xf7, 0xc2, 0xf6, 0xd7, 0xf4, 0xb1, 0xf3, 0xd1, 0xf5, 0x88, 0xf6, + 0x26, 0xf5, 0x2f, 0xf5, 0x52, 0xf7, 0xcd, 0xf7, 0x8f, 0xf6, 0x26, 0xf9, 0xda, 0xfc, 0xc0, 0xff, + 0xc4, 0xfe, 0x63, 0xfd, 0x38, 0xfd, 0x66, 0xfd, 0xcb, 0xfd, 0xdc, 0xfd, 0xaa, 0xff, 0x0e, 0x01, + 0x19, 0x02, 0xaf, 0x03, 0x7e, 0x05, 0xaa, 0x06, 0x2f, 0x07, 0xb4, 0x07, 0xa7, 0x07, 0x9b, 0x07, + 0x68, 0x06, 0xf0, 0x04, 0x45, 0x05, 0xe6, 0x03, 0x43, 0x00, 0x5a, 0xfc, 0x1e, 0xfc, 0xba, 0xfc, + 0xc6, 0xfb, 0xa0, 0xfa, 0xc4, 0xfb, 0x60, 0xfb, 0x2c, 0xf9, 0x34, 0xfd, 0xcd, 0xfe, 0x65, 0xff, + 0xdb, 0x00, 0x2c, 0x03, 0x27, 0x05, 0xdd, 0x04, 0x46, 0x04, 0xdc, 0x01, 0x9f, 0x00, 0xed, 0xfc, + 0x3f, 0xfc, 0xa2, 0xfe, 0x9e, 0xff, 0xa3, 0x01, 0xde, 0x01, 0x95, 0x02, 0xb3, 0x02, 0xc1, 0x05, + 0x33, 0x07, 0xd3, 0x06, 0x49, 0x09, 0x4f, 0x09, 0xa2, 0x08, 0xe3, 0x05, 0x92, 0x03, 0x3c, 0x01, + 0xc4, 0xfe, 0x57, 0xfe, 0x88, 0xfb, 0x62, 0xfb, 0x00, 0xfa, 0x02, 0xfb, 0xcf, 0xfc, 0x21, 0xff, + 0x8f, 0x00, 0x14, 0x01, 0x3f, 0x03, 0xb0, 0x02, 0x72, 0x00, 0x8d, 0xfe, 0xc7, 0xfe, 0x76, 0xfd, + 0xcf, 0xfe, 0x43, 0xff, 0xd1, 0xfb, 0x7e, 0xfb, 0x86, 0xfb, 0x6c, 0xfd, 0x20, 0xfe, 0x2f, 0xff, + 0x7e, 0xff, 0xfd, 0xfc, 0x7e, 0xfc, 0xed, 0xfc, 0x80, 0xfd, 0x5c, 0xfb, 0x24, 0xfb, 0x3f, 0xfb, + 0xbd, 0xf8, 0x98, 0xf8, 0x2e, 0xfa, 0x5f, 0xfc, 0x70, 0xfa, 0x39, 0xf8, 0x36, 0xf7, 0xfb, 0xf8, + 0xca, 0xfa, 0x09, 0xfa, 0xcc, 0xfa, 0xd3, 0xfa, 0x16, 0xfa, 0x8c, 0xf8, 0x3f, 0xf9, 0x77, 0xf9, + 0x25, 0xfb, 0x6b, 0xfe, 0x0f, 0xfe, 0x5e, 0xff, 0x95, 0x00, 0xc4, 0x00, 0x71, 0x00, 0xd3, 0xfd, + 0x57, 0xfc, 0x3f, 0xfb, 0x91, 0xfb, 0x59, 0xff, 0x1e, 0x03, 0x57, 0x03, 0xc8, 0x05, 0x17, 0x0a, + 0x22, 0x0d, 0xaa, 0x0e, 0xec, 0x0e, 0x75, 0x10, 0x96, 0x10, 0xd3, 0x0d, 0xfd, 0x0b, 0x68, 0x0b, + 0x2c, 0x0c, 0x0e, 0x0a, 0xb3, 0x06, 0x58, 0x03, 0x0a, 0x01, 0x04, 0x01, 0x31, 0xfe, 0x84, 0xfa, + 0x50, 0xf8, 0xe5, 0xf7, 0x0d, 0xf4, 0xfb, 0xf0, 0x62, 0xf0, 0x9c, 0xed, 0xbb, 0xed, 0x35, 0xed, + 0x2e, 0xee, 0x5d, 0xef, 0xc5, 0xed, 0x34, 0xee, 0x4e, 0xf0, 0x53, 0xf1, 0x66, 0xf2, 0x04, 0xf7, + 0xa8, 0xfc, 0x91, 0x00, 0xcc, 0x02, 0xa5, 0x06, 0x5b, 0x0b, 0xbd, 0x0c, 0x39, 0x12, 0x6e, 0x17, + 0xa5, 0x1b, 0x7d, 0x1e, 0x99, 0x1d, 0x28, 0x1d, 0xbb, 0x1c, 0xa0, 0x18, 0x89, 0x12, 0x88, 0x0e, + 0x80, 0x08, 0x56, 0x05, 0xdd, 0x02, 0x87, 0x00, 0x95, 0xff, 0xe4, 0xfb, 0x19, 0xfa, 0x0f, 0xf7, + 0x69, 0xf7, 0x0f, 0xf8, 0x43, 0xf6, 0x59, 0xf7, 0xa1, 0xf7, 0x74, 0xf7, 0xb9, 0xf4, 0xaa, 0xf3, + 0x6b, 0xf3, 0x7f, 0xf5, 0x18, 0xf8, 0x45, 0xfa, 0xf2, 0xfe, 0x5e, 0xfe, 0x40, 0x02, 0x3f, 0x06, + 0x22, 0x08, 0x0e, 0x0c, 0x2e, 0x0d, 0xd2, 0x0e, 0xab, 0x0e, 0xe0, 0x0b, 0xd6, 0x09, 0x76, 0x08, + 0x01, 0x03, 0xf2, 0xff, 0x3a, 0xfe, 0x27, 0xf9, 0x05, 0xf7, 0x8d, 0xf6, 0x52, 0xf7, 0x69, 0xf6, + 0x1b, 0xf5, 0x9d, 0xf4, 0xab, 0xf2, 0x16, 0xf2, 0x1e, 0xf2, 0x83, 0xf3, 0xca, 0xf5, 0x48, 0xf8, + 0x9f, 0xf8, 0x30, 0xfa, 0xdb, 0xfa, 0xcf, 0xfc, 0x8a, 0x00, 0xb3, 0x00, 0x76, 0x02, 0xdc, 0x05, + 0xbb, 0x0a, 0xf1, 0x0f, 0x51, 0x12, 0x96, 0x13, 0x09, 0x16, 0xa6, 0x17, 0xc6, 0x16, 0x1a, 0x18, + 0x03, 0x17, 0xe1, 0x15, 0xfc, 0x15, 0xfd, 0x10, 0xde, 0x0d, 0x81, 0x0b, 0x15, 0x09, 0x62, 0x06, + 0xea, 0x01, 0x86, 0x00, 0x94, 0xfb, 0x32, 0xf6, 0xb7, 0xf6, 0x89, 0xf6, 0x48, 0xf3, 0xe8, 0xf0, + 0xe2, 0xf0, 0xd3, 0xf1, 0x20, 0xf2, 0xfc, 0xf0, 0x69, 0xf3, 0xe1, 0xf3, 0x03, 0xf1, 0x0f, 0xf0, + 0x3a, 0xf0, 0x06, 0xf3, 0x8f, 0xf4, 0x6b, 0xf4, 0xe1, 0xf5, 0xca, 0xf6, 0x4c, 0xfa, 0x69, 0xfd, + 0xf7, 0xfd, 0x18, 0xff, 0x70, 0x01, 0x5b, 0x01, 0x47, 0x03, 0xeb, 0x03, 0x84, 0x01, 0xe8, 0x01, + 0x7e, 0xff, 0xda, 0xfd, 0xba, 0xfb, 0x43, 0xf7, 0x47, 0xf6, 0xe5, 0xf6, 0x7e, 0xf6, 0x62, 0xf5, + 0x4e, 0xf6, 0x54, 0xf8, 0x00, 0xfa, 0xc5, 0xf8, 0x12, 0xfa, 0x35, 0xfd, 0x2e, 0xfc, 0xa0, 0xff, + 0x35, 0x03, 0x5f, 0x05, 0x25, 0x07, 0xdb, 0x07, 0x4a, 0x09, 0x9f, 0x09, 0x45, 0x0b, 0xa0, 0x0c, + 0xa5, 0x0b, 0x86, 0x09, 0xbb, 0x0a, 0xe9, 0x0a, 0xfa, 0x0a, 0x66, 0x0c, 0x46, 0x0b, 0xe1, 0x0a, + 0xf5, 0x06, 0xca, 0x06, 0x58, 0x07, 0x77, 0x03, 0xff, 0x00, 0xd8, 0xfe, 0x7f, 0xfc, 0x19, 0xf8, + 0x0b, 0xf5, 0x85, 0xf2, 0xc5, 0xf1, 0x4c, 0xf0, 0x9a, 0xef, 0x58, 0xf2, 0xea, 0xf1, 0x38, 0xf3, + 0x12, 0xf4, 0xda, 0xf6, 0xd4, 0xfb, 0x7d, 0xfe, 0x53, 0x02, 0xf8, 0x04, 0xab, 0x05, 0x41, 0x04, + 0x3d, 0x02, 0x83, 0xfe, 0x0d, 0xff, 0x79, 0x02, 0x04, 0x02, 0xb4, 0x03, 0xdb, 0x05, 0x18, 0x09, + 0x6a, 0x0b, 0x03, 0x0c, 0x6e, 0x0e, 0x71, 0x0d, 0x9a, 0x0c, 0xcf, 0x0c, 0xf3, 0x0b, 0xcd, 0x09, + 0xd0, 0x06, 0x07, 0x04, 0x09, 0x00, 0x2f, 0xfb, 0x90, 0xfb, 0x42, 0xfe, 0xef, 0xfb, 0x37, 0xfb, + 0x54, 0xfb, 0x50, 0xfc, 0xd2, 0xfe, 0xe9, 0xff, 0x16, 0xff, 0xb2, 0xff, 0x17, 0xff, 0x68, 0xfd, + 0x25, 0xfe, 0x6c, 0xfd, 0x16, 0xfd, 0x94, 0xfe, 0x4f, 0xfd, 0x0a, 0xfd, 0x6d, 0xfe, 0x54, 0x00, + 0x6d, 0x01, 0x1d, 0x01, 0xca, 0x02, 0xed, 0x02, 0x57, 0x03, 0xb0, 0x04, 0x89, 0x07, 0x21, 0x09, + 0x6a, 0x09, 0x1c, 0x0b, 0x22, 0x0c, 0x59, 0x0d, 0xde, 0x0b, 0xe1, 0x0b, 0x11, 0x0a, 0x87, 0x04, + 0xbb, 0x00, 0x4e, 0xfd, 0x1b, 0xfe, 0x92, 0xff, 0x42, 0xff, 0xf9, 0xfe, 0x08, 0xfc, 0x8c, 0xfb, + 0x8c, 0xfb, 0x0c, 0xfa, 0xb7, 0xf8, 0x0f, 0xfb, 0x7f, 0xfb, 0x25, 0xf9, 0x00, 0xf9, 0xdf, 0xf6, + 0xd9, 0xf4, 0x4f, 0xf3, 0xa8, 0xf4, 0x59, 0xf6, 0x3d, 0xf6, 0x33, 0xf7, 0x5d, 0xfa, 0xdf, 0xfc, + 0x2c, 0xfd, 0x3b, 0xff, 0x24, 0x03, 0x20, 0x07, 0x56, 0x07, 0x1d, 0x08, 0xfd, 0x09, 0xb7, 0x08, + 0xd4, 0x08, 0xd2, 0x08, 0xd8, 0x08, 0xfe, 0x08, 0xc5, 0x08, 0x68, 0x07, 0x1f, 0x07, 0x7c, 0x06, + 0xca, 0x03, 0x3b, 0x02, 0xb8, 0xfe, 0xfa, 0xfc, 0xee, 0xfa, 0x86, 0xf8, 0x04, 0xf9, 0x9b, 0xf7, + 0xd4, 0xf6, 0x84, 0xf3, 0x41, 0xf4, 0xf5, 0xf6, 0x1e, 0xf5, 0xde, 0xf2, 0xc9, 0xf1, 0xf6, 0xf2, + 0xc1, 0xf2, 0x95, 0xf4, 0x8b, 0xf6, 0x6c, 0xfa, 0xc8, 0xfc, 0x65, 0xfd, 0xfc, 0x01, 0xbf, 0x03, + 0x40, 0x06, 0x42, 0x09, 0xb1, 0x0a, 0xfa, 0x0c, 0xbf, 0x0f, 0xc2, 0x0f, 0xe3, 0x0c, 0x26, 0x0a, + 0xaf, 0x06, 0x23, 0x04, 0xf2, 0xfe, 0xb6, 0xfb, 0xdc, 0xfb, 0x8f, 0xf8, 0x06, 0xf5, 0xaf, 0xf2, + 0x6f, 0xf2, 0x55, 0xf2, 0xcd, 0xf0, 0xd5, 0xf1, 0xb2, 0xf1, 0xcb, 0xef, 0x3b, 0xef, 0xab, 0xef, + 0x7b, 0xee, 0xe3, 0xee, 0x33, 0xf0, 0x01, 0xf2, 0x8e, 0xf3, 0xf6, 0xf4, 0xe3, 0xfa, 0xcb, 0xff, + 0x7a, 0x03, 0xad, 0x07, 0x84, 0x0b, 0x84, 0x11, 0x2e, 0x17, 0xfa, 0x18, 0x43, 0x1a, 0x52, 0x1b, + 0x7e, 0x1a, 0x9e, 0x19, 0x3e, 0x16, 0x6c, 0x11, 0xc4, 0x0e, 0xdd, 0x0a, 0xcc, 0x06, 0xea, 0x05, + 0x3b, 0x06, 0x19, 0x06, 0x79, 0x03, 0x8e, 0x02, 0x5a, 0x00, 0x72, 0xfb, 0xcd, 0xf9, 0x8b, 0xfc, + 0xe4, 0xfb, 0x67, 0xfb, 0xcf, 0xfc, 0x70, 0xfc, 0x52, 0xfd, 0x64, 0xfb, 0x3a, 0xfd, 0x71, 0xff, + 0xb1, 0xfd, 0xf1, 0xfd, 0xe2, 0xfd, 0xcf, 0xff, 0x82, 0x02, 0x03, 0x04, 0xe1, 0x04, 0x56, 0x04, + 0xf8, 0x04, 0x7b, 0x06, 0x4a, 0x06, 0xe2, 0x02, 0xd0, 0x02, 0xf3, 0x00, 0x20, 0xfd, 0x65, 0xfb, + 0x0d, 0xf7, 0x18, 0xf6, 0x23, 0xf4, 0x8a, 0xf1, 0xaa, 0xf0, 0x0e, 0xef, 0xea, 0xee, 0x95, 0xf0, + 0xd7, 0xf1, 0x13, 0xf2, 0xac, 0xf4, 0xaa, 0xf7, 0xeb, 0xfa, 0xbf, 0xfc, 0x14, 0xff, 0x6a, 0x02, + 0x0a, 0x02, 0x59, 0x02, 0xe9, 0x03, 0xed, 0x04, 0x4b, 0x07, 0x77, 0x0a, 0xab, 0x0d, 0x45, 0x12, + 0x32, 0x15, 0x42, 0x18, 0x47, 0x19, 0x93, 0x15, 0xcd, 0x16, 0xd0, 0x16, 0x85, 0x14, 0x51, 0x15, + 0xa6, 0x14, 0x8e, 0x12, 0xe5, 0x0b, 0x5d, 0x07, 0x69, 0x06, 0x46, 0x03, 0x00, 0xfe, 0x41, 0xfb, + 0x66, 0xfa, 0x56, 0xf7, 0xed, 0xf4, 0xfd, 0xf0, 0x1c, 0xf1, 0x40, 0xf0, 0x6b, 0xed, 0xca, 0xee, + 0x54, 0xee, 0xa9, 0xef, 0xa8, 0xef, 0xd5, 0xee, 0xa9, 0xf0, 0x11, 0xf3, 0x94, 0xf5, 0x39, 0xf8, + 0xc7, 0xfa, 0xf7, 0xfb, 0x4d, 0xfc, 0x7b, 0xfb, 0xdc, 0xfc, 0x5e, 0x01, 0x03, 0x03, 0xb1, 0x04, + 0x06, 0x07, 0x34, 0x09, 0xa9, 0x0b, 0x79, 0x0b, 0x4a, 0x0d, 0xf5, 0x0d, 0xb2, 0x09, 0xb0, 0x06, + 0x13, 0x04, 0x9b, 0xff, 0x98, 0xfb, 0x5f, 0xf8, 0x54, 0xf7, 0x23, 0xf5, 0x94, 0xf3, 0xbc, 0xf6, + 0xff, 0xf6, 0x6a, 0xf6, 0x15, 0xf8, 0x8c, 0xf8, 0x12, 0xfb, 0x23, 0x00, 0x95, 0x02, 0xb4, 0x03, + 0xa7, 0x03, 0x81, 0x02, 0x81, 0x02, 0xbd, 0x00, 0x1c, 0xff, 0xb9, 0x00, 0xbe, 0x01, 0x56, 0x02, + 0x2d, 0x03, 0x4d, 0x05, 0xa7, 0x07, 0x3b, 0x07, 0x97, 0x08, 0xda, 0x08, 0x69, 0x06, 0x53, 0x04, + 0x40, 0x04, 0xe2, 0x02, 0x8e, 0xff, 0xd1, 0xfb, 0x19, 0xf9, 0x82, 0xfa, 0x5a, 0xf8, 0xb9, 0xf7, + 0xec, 0xf7, 0x20, 0xf5, 0x5f, 0xf4, 0x96, 0xf2, 0x86, 0xf2, 0x9c, 0xf5, 0xf0, 0xf8, 0xeb, 0xfa, + 0x77, 0xfa, 0x1c, 0xfb, 0x60, 0xfe, 0x68, 0x00, 0xb4, 0xfe, 0x60, 0xff, 0x97, 0xff, 0x1b, 0xfe, + 0x89, 0xfd, 0x6a, 0xfc, 0xfb, 0xfd, 0x52, 0xfe, 0xef, 0x00, 0x9f, 0x03, 0x9e, 0x03, 0xf3, 0x04, + 0xe3, 0x07, 0xfa, 0x09, 0xf2, 0x09, 0x89, 0x0b, 0xcf, 0x0d, 0xac, 0x10, 0x1e, 0x0f, 0xa0, 0x0d, + 0x2e, 0x0d, 0x31, 0x0a, 0x69, 0x08, 0xf5, 0x07, 0x73, 0x08, 0x4d, 0x08, 0x30, 0x08, 0xbb, 0x07, + 0x48, 0x08, 0x91, 0x07, 0xf4, 0x06, 0x3c, 0x06, 0x75, 0x02, 0x7d, 0x00, 0x50, 0xff, 0x1c, 0xfd, + 0xc0, 0xfa, 0x7b, 0xf7, 0x30, 0xf6, 0x01, 0xf3, 0x50, 0xf1, 0xa9, 0xf2, 0x76, 0xf3, 0x60, 0xf2, + 0x1b, 0xf3, 0x0d, 0xf5, 0x09, 0xf7, 0x95, 0xfa, 0x8a, 0xfc, 0xda, 0x00, 0x4e, 0x03, 0x38, 0x04, + 0xd4, 0x06, 0xce, 0x06, 0xf7, 0x07, 0x96, 0x07, 0xe7, 0x05, 0xd4, 0x03, 0xe1, 0x03, 0x2f, 0x05, + 0x56, 0x04, 0x6c, 0x04, 0x3b, 0x05, 0x7c, 0x04, 0x7d, 0x00, 0xc2, 0xfd, 0xd6, 0xfe, 0xcc, 0xfd, + 0xe9, 0xfb, 0xd7, 0xfa, 0xc8, 0xfb, 0x12, 0xfd, 0x4c, 0xfb, 0x9c, 0xfb, 0xe6, 0xfc, 0x1a, 0xfb, + 0x90, 0xf8, 0x34, 0xf9, 0x18, 0xfa, 0x3d, 0xfa, 0x85, 0xfb, 0xa5, 0xfd, 0x1f, 0xff, 0xfb, 0xfe, + 0x60, 0x01, 0xd8, 0x04, 0x48, 0x07, 0x5f, 0x09, 0x74, 0x0a, 0x01, 0x0c, 0x7d, 0x0d, 0x37, 0x0c, + 0x39, 0x0a, 0xeb, 0x08, 0xcc, 0x07, 0xac, 0x05, 0x1f, 0x01, 0x6d, 0xfd, 0x10, 0xfc, 0x70, 0xfa, + 0x03, 0xf8, 0x8d, 0xf7, 0x95, 0xf9, 0xcc, 0xfb, 0x50, 0xfb, 0xd5, 0xfc, 0xe3, 0xfd, 0x9e, 0xfc, + 0x63, 0xfa, 0x7c, 0xfb, 0x16, 0xfc, 0x09, 0xfa, 0x3d, 0xf9, 0x17, 0xf8, 0x9e, 0xfa, 0x71, 0xfc, + 0x3f, 0x00, 0xc0, 0x03, 0xe9, 0x04, 0x18, 0x07, 0x14, 0x08, 0x99, 0x08, 0x1e, 0x09, 0xe6, 0x0b, + 0xac, 0x0d, 0x01, 0x0c, 0x56, 0x09, 0xaa, 0x07, 0x6c, 0x07, 0x3e, 0x02, 0x94, 0xfe, 0x86, 0xfc, + 0xd3, 0xf9, 0x03, 0xf8, 0xab, 0xf4, 0x91, 0xf3, 0x4c, 0xf1, 0x74, 0xef, 0x81, 0xed, 0x5c, 0xeb, + 0x66, 0xea, 0x4c, 0xeb, 0xd7, 0xed, 0x26, 0xee, 0xac, 0xee, 0xe0, 0xee, 0xa0, 0xf1, 0x39, 0xf3, + 0x56, 0xf5, 0x14, 0xf7, 0xcc, 0xf7, 0x27, 0xfa, 0xab, 0xfd, 0xa4, 0x00, 0x6f, 0x03, 0xaf, 0x08, + 0x2d, 0x0d, 0x76, 0x12, 0x74, 0x16, 0xe9, 0x19, 0xdc, 0x1d, 0x1c, 0x1c, 0x71, 0x19, 0x94, 0x18, + 0x4b, 0x15, 0x61, 0x11, 0x34, 0x0e, 0x8e, 0x0b, 0x66, 0x06, 0x9b, 0x02, 0x62, 0x01, 0x19, 0x01, + 0x1b, 0xfe, 0x0b, 0xfc, 0x22, 0xfc, 0xfc, 0xfa, 0xea, 0xfa, 0xbb, 0xf8, 0x7c, 0xfa, 0x59, 0xfb, + 0x44, 0xfa, 0xe9, 0xfa, 0xc0, 0xf9, 0x8c, 0xf9, 0x9e, 0xf9, 0x6e, 0xf9, 0xcc, 0xf8, 0x1a, 0xfb, + 0xde, 0xfe, 0x60, 0x02, 0x6f, 0x05, 0x8f, 0x07, 0x76, 0x09, 0x75, 0x08, 0x72, 0x06, 0x36, 0x08, + 0x99, 0x09, 0x76, 0x09, 0x36, 0x07, 0x48, 0x04, 0xaa, 0x02, 0x25, 0x00, 0x73, 0xfe, 0xca, 0xfd, + 0x7e, 0xfb, 0xcd, 0xf7, 0xd5, 0xf6, 0x7f, 0xf4, 0x3f, 0xf2, 0xcf, 0xf0, 0xc6, 0xf0, 0xd5, 0xf1, + 0x4b, 0xf0, 0x6d, 0xf2, 0xa5, 0xf5, 0x8d, 0xf7, 0x83, 0xfa, 0xd8, 0xfb, 0x65, 0xfc, 0xa1, 0xff, + 0xdd, 0x01, 0x6a, 0x02, 0xe6, 0x03, 0x66, 0x06, 0xff, 0x08, 0xc1, 0x08, 0xdc, 0x07, 0x9c, 0x0a, + 0x98, 0x0d, 0x24, 0x0e, 0x39, 0x0e, 0x4d, 0x10, 0xf4, 0x13, 0x9b, 0x13, 0x06, 0x13, 0x73, 0x12, + 0xb5, 0x0f, 0xe5, 0x09, 0xf1, 0x06, 0xf2, 0x04, 0xd3, 0x01, 0xc3, 0xfd, 0x07, 0xf9, 0xe5, 0xf9, + 0x52, 0xf8, 0xc4, 0xf7, 0x39, 0xf7, 0x43, 0xf6, 0xc0, 0xf4, 0x7c, 0xf3, 0x10, 0xf3, 0xce, 0xf2, + 0x17, 0xf5, 0x27, 0xf5, 0x65, 0xf4, 0x1a, 0xf3, 0x24, 0xf3, 0xeb, 0xf4, 0x1e, 0xf3, 0x90, 0xf3, + 0xf9, 0xf4, 0xf5, 0xf5, 0xf2, 0xf7, 0x91, 0xf8, 0x24, 0xfc, 0x3c, 0xfe, 0x1d, 0x00, 0x36, 0x03, + 0x51, 0x04, 0xab, 0x04, 0x8c, 0x06, 0x40, 0x07, 0x3c, 0x05, 0x35, 0x04, 0x90, 0x02, 0x93, 0x03, + 0xac, 0x02, 0x54, 0x03, 0xc4, 0x03, 0x33, 0x02, 0x90, 0x01, 0x66, 0x03, 0xd4, 0x04, 0x91, 0x04, + 0xa0, 0x05, 0x60, 0x07, 0x92, 0x0a, 0x49, 0x0b, 0x11, 0x0c, 0xf1, 0x0d, 0x74, 0x0c, 0x71, 0x09, + 0x95, 0x07, 0xfd, 0x05, 0x67, 0x03, 0xda, 0x00, 0x13, 0x00, 0x2f, 0xff, 0xfe, 0xfc, 0x8b, 0xfc, + 0x7e, 0xfe, 0x06, 0xfd, 0x93, 0xfb, 0xdc, 0xfb, 0x38, 0xfc, 0x0a, 0xff, 0xfb, 0xfc, 0x1b, 0xfc, + 0x79, 0xfb, 0x56, 0xfa, 0x84, 0xf9, 0xce, 0xf5, 0xf5, 0xf3, 0xc1, 0xf3, 0xc7, 0xf2, 0xfb, 0xf0, + 0x54, 0xf0, 0x9e, 0xf2, 0xa8, 0xf5, 0x2d, 0xf7, 0xcd, 0xf9, 0x11, 0xfd, 0xe7, 0xfc, 0xd0, 0xfb, + 0x79, 0xfd, 0xe6, 0xfd, 0xe0, 0xfd, 0x9d, 0xfc, 0x42, 0xfb, 0x9b, 0xfb, 0x70, 0xfa, 0xbf, 0xfb, + 0xb7, 0xfe, 0x4d, 0x00, 0x44, 0x00, 0x00, 0x03, 0x74, 0x05, 0xad, 0x06, 0x0d, 0x08, 0x33, 0x0b, + 0x2a, 0x0e, 0x89, 0x0d, 0xa3, 0x0e, 0xe9, 0x0f, 0x8e, 0x0f, 0xc2, 0x0f, 0x5d, 0x0f, 0x5d, 0x0e, + 0xe9, 0x0d, 0xf0, 0x0c, 0x89, 0x0b, 0x7c, 0x0a, 0x4f, 0x09, 0xc4, 0x08, 0x29, 0x06, 0x7c, 0x01, + 0xc1, 0xfe, 0xdb, 0xfc, 0xf2, 0xfb, 0x28, 0xfa, 0xc6, 0xf8, 0x05, 0xfa, 0x25, 0xf9, 0x83, 0xf9, + 0x68, 0xf9, 0xd3, 0xf7, 0xb1, 0xf4, 0x6c, 0xf4, 0x55, 0xf5, 0x70, 0xf6, 0xf9, 0xf6, 0x20, 0xf7, + 0x0a, 0xfb, 0x45, 0xfd, 0xe2, 0x01, 0x15, 0x05, 0xba, 0x07, 0x4d, 0x0b, 0xec, 0x0d, 0x7a, 0x0d, + 0xd8, 0x0a, 0xf4, 0x0a, 0xe2, 0x09, 0x93, 0x06, 0x7e, 0x02, 0x0e, 0x01, 0x21, 0x01, 0x4e, 0xfd, + 0x25, 0xfa, 0xa9, 0xf8, 0x53, 0xf8, 0x8c, 0xf7, 0xa2, 0xf5, 0x3a, 0xf7, 0x4a, 0xf7, 0x50, 0xf7, + 0x05, 0xf7, 0x2c, 0xf7, 0x4a, 0xf6, 0xdd, 0xf5, 0x73, 0xf7, 0x99, 0xf8, 0xef, 0xf8, 0xd0, 0xf7, + 0x65, 0xfb, 0x99, 0xfd, 0xa3, 0x00, 0x31, 0x03, 0xd8, 0x03, 0x1d, 0x06, 0x0b, 0x08, 0x0f, 0x0a, + 0xd5, 0x0b, 0xec, 0x0d, 0xdb, 0x0f, 0xa3, 0x10, 0x72, 0x10, 0xc3, 0x10, 0x37, 0x10, 0xf4, 0x0c, + 0x6c, 0x08, 0xf3, 0x04, 0xcd, 0x01, 0xb9, 0xfd, 0x54, 0xfa, 0xd8, 0xf9, 0x78, 0xf8, 0x2d, 0xf6, + 0x60, 0xf5, 0x2f, 0xf6, 0x06, 0xf6, 0x95, 0xf6, 0xe4, 0xf7, 0xcb, 0xf7, 0x79, 0xf9, 0x19, 0xf8, + 0x89, 0xf7, 0xce, 0xf6, 0x80, 0xf6, 0x1d, 0xf8, 0x82, 0xf8, 0x0e, 0xf9, 0xa1, 0xfa, 0x5f, 0xfe, + 0x51, 0x00, 0xea, 0x00, 0xe1, 0x04, 0x0e, 0x0a, 0x70, 0x0e, 0x85, 0x11, 0x8c, 0x14, 0x32, 0x15, + 0xc0, 0x12, 0x1f, 0x11, 0x50, 0x0f, 0x3b, 0x0e, 0xf9, 0x0a, 0x58, 0x08, 0xe9, 0x05, 0xdd, 0x01, + 0x76, 0xff, 0xd2, 0xfc, 0xa8, 0xfb, 0x19, 0xf9, 0x20, 0xf7, 0x9f, 0xf4, 0x9b, 0xf3, 0xb0, 0xf2, + 0x7c, 0xf1, 0xd8, 0xf0, 0x2a, 0xef, 0x60, 0xef, 0x29, 0xef, 0x75, 0xee, 0xe1, 0xee, 0x6e, 0xf0, + 0x4c, 0xf1, 0x7d, 0xf2, 0x53, 0xf6, 0xad, 0xf9, 0x21, 0xfd, 0xaa, 0x01, 0x8a, 0x06, 0x67, 0x09, + 0x3e, 0x0a, 0xd1, 0x0c, 0x2d, 0x0f, 0x6d, 0x11, 0xfa, 0x10, 0x36, 0x10, 0x6e, 0x10, 0xf1, 0x0d, + 0x23, 0x0c, 0x83, 0x0a, 0x96, 0x08, 0xca, 0x04, 0xf4, 0x02, 0x57, 0x01, 0x81, 0xff, 0xe6, 0xfc, + 0x3d, 0xfa, 0x78, 0xfb, 0x42, 0xfb, 0x52, 0xfc, 0x0c, 0xfc, 0xe9, 0xfb, 0x25, 0xfc, 0x3a, 0xfc, + 0xbe, 0xfc, 0x02, 0xfb, 0xa3, 0xfb, 0x69, 0xfd, 0x43, 0xfe, 0x55, 0xfe, 0x17, 0xff, 0xe9, 0x01, + 0x37, 0x02, 0x17, 0x02, 0xed, 0x01, 0xb7, 0x02, 0xff, 0x04, 0x14, 0x05, 0x36, 0x05, 0xa6, 0x03, + 0xab, 0x02, 0xa6, 0x01, 0xd5, 0x00, 0x7a, 0xfd, 0x5c, 0xfa, 0x77, 0xf8, 0x88, 0xf6, 0xdb, 0xf4, + 0xb2, 0xf2, 0xf7, 0xf2, 0x81, 0xf3, 0x2e, 0xf6, 0x76, 0xf7, 0xce, 0xf6, 0xe0, 0xf8, 0xbf, 0xfc, + 0x52, 0x00, 0x48, 0x01, 0x40, 0x03, 0xc3, 0x06, 0xdc, 0x08, 0xac, 0x08, 0x40, 0x08, 0xd5, 0x09, + 0x3b, 0x0a, 0x2f, 0x09, 0xae, 0x09, 0xee, 0x0a, 0x6b, 0x0a, 0xb6, 0x08, 0xbe, 0x09, 0xc6, 0x0a, + 0x87, 0x0b, 0xeb, 0x0a, 0x07, 0x0c, 0xd9, 0x0b, 0xef, 0x08, 0xd2, 0x06, 0x7a, 0x04, 0x2c, 0x04, + 0xc9, 0x01, 0x30, 0xff, 0xe5, 0xfc, 0xb6, 0xfa, 0x67, 0xf9, 0xed, 0xf6, 0x0f, 0xf5, 0x75, 0xf3, + 0xf0, 0xf2, 0x35, 0xf2, 0x64, 0xf2, 0x47, 0xf4, 0xbf, 0xf5, 0x45, 0xf7, 0x0c, 0xf8, 0xfd, 0xf9, + 0x74, 0xfa, 0x36, 0xf9, 0x97, 0xf8, 0x65, 0xf7, 0x92, 0xf6, 0xe7, 0xf4, 0x2c, 0xf5, 0x11, 0xf6, + 0x4c, 0xf7, 0xd3, 0xf9, 0x7a, 0xfb, 0x1e, 0xfe, 0xe3, 0xff, 0x11, 0x03, 0x68, 0x05, 0xc7, 0x07, + 0xf4, 0x09, 0x24, 0x0b, 0x5b, 0x0b, 0xb6, 0x08, 0xb2, 0x07, 0xdd, 0x06, 0x10, 0x05, 0xb9, 0x03, + 0x41, 0x04, 0x6d, 0x04, 0x83, 0x03, 0x58, 0x03, 0x90, 0x03, 0xd3, 0x04, 0xef, 0x04, 0x26, 0x06, + 0x69, 0x08, 0xd5, 0x06, 0x3c, 0x04, 0x77, 0x02, 0x86, 0x01, 0xba, 0x00, 0x25, 0xff, 0x3a, 0xff, + 0xe1, 0xff, 0x03, 0x00, 0xbe, 0xff, 0xf4, 0xff, 0x4a, 0x00, 0x18, 0x01, 0x60, 0x00, 0x95, 0x01, + 0x62, 0x03, 0x54, 0x04, 0x0d, 0x06, 0x7d, 0x05, 0x23, 0x06, 0xb1, 0x05, 0x68, 0x04, 0x6f, 0x03, + 0x44, 0x03, 0x6c, 0x02, 0xba, 0xfd, 0xaa, 0xfa, 0xc2, 0xf8, 0x22, 0xf6, 0x89, 0xf4, 0x5b, 0xf4, + 0x39, 0xf5, 0xc8, 0xf3, 0x74, 0xf2, 0x47, 0xf1, 0x94, 0xf1, 0xed, 0xf2, 0x3c, 0xf3, 0xaf, 0xf4, + 0x32, 0xf4, 0x61, 0xf3, 0xb5, 0xf2, 0xd7, 0xf3, 0xd7, 0xf2, 0x84, 0xf2, 0xd0, 0xf4, 0x21, 0xf7, + 0x28, 0xfb, 0xdd, 0xfc, 0x73, 0x00, 0x67, 0x04, 0xe1, 0x07, 0xa6, 0x0c, 0x1f, 0x0f, 0x64, 0x11, + 0xfa, 0x13, 0xc3, 0x15, 0x77, 0x15, 0x08, 0x14, 0x59, 0x14, 0x2f, 0x15, 0xff, 0x13, 0xbc, 0x12, + 0x18, 0x11, 0x86, 0x0e, 0x52, 0x0c, 0x47, 0x08, 0x00, 0x04, 0xe6, 0x01, 0xad, 0xfe, 0x2f, 0xfe, + 0x23, 0xfd, 0x73, 0xfb, 0xd0, 0xf9, 0xc0, 0xf8, 0xa5, 0xf7, 0x39, 0xf6, 0x5d, 0xf4, 0xa3, 0xf2, + 0x3b, 0xf3, 0xd2, 0xf1, 0xb5, 0xf0, 0x34, 0xef, 0x18, 0xf0, 0x1a, 0xf4, 0xe2, 0xf5, 0x3c, 0xf7, + 0xc6, 0xf9, 0xd9, 0xfd, 0xdc, 0x00, 0x42, 0x03, 0x4e, 0x06, 0x6d, 0x09, 0x0a, 0x0b, 0xb0, 0x0a, + 0xc8, 0x0b, 0x50, 0x0b, 0xb7, 0x08, 0x20, 0x06, 0xf1, 0x03, 0x1b, 0x04, 0x93, 0x01, 0xe3, 0xff, + 0x6a, 0x00, 0xe3, 0xfe, 0x01, 0xfe, 0x20, 0xfe, 0x18, 0xfe, 0xa0, 0xfe, 0xbd, 0xfe, 0x37, 0xfd, + 0x05, 0xfe, 0xfe, 0xfc, 0x51, 0xfc, 0x5b, 0xfc, 0x9f, 0xfb, 0x83, 0xfc, 0xd0, 0xfb, 0xc3, 0xfb, + 0xf0, 0xfc, 0xe7, 0xfc, 0x45, 0xfe, 0x85, 0xff, 0xc0, 0x01, 0x55, 0x05, 0x3b, 0x08, 0x7e, 0x09, + 0xce, 0x0b, 0x5c, 0x0d, 0xfd, 0x0b, 0x2f, 0x0b, 0x6e, 0x08, 0xc3, 0x06, 0xfc, 0x05, 0x79, 0x02, + 0xc7, 0xff, 0xb8, 0xfd, 0x83, 0xfc, 0x55, 0xfb, 0xf4, 0xfa, 0xd2, 0xf9, 0xbc, 0xf9, 0xa9, 0xf9, + 0xb5, 0xf9, 0x97, 0xf9, 0x58, 0xfa, 0xc5, 0xfc, 0xd1, 0xfb, 0xa8, 0xfb, 0xb2, 0xfb, 0x6c, 0xf9, + 0xb9, 0xf8, 0xfc, 0xf8, 0x8c, 0xfa, 0x7a, 0xfc, 0x2d, 0xfc, 0xf4, 0xfd, 0x52, 0x01, 0x5d, 0x03, + 0xbb, 0x05, 0x21, 0x0a, 0x5f, 0x0c, 0xbf, 0x0d, 0x8a, 0x0c, 0x89, 0x0c, 0x57, 0x0d, 0xd8, 0x0a, + 0x81, 0x08, 0x2f, 0x06, 0x54, 0x04, 0x24, 0x01, 0x84, 0xff, 0x4d, 0xfd, 0xd3, 0xfa, 0x19, 0xf7, + 0xd4, 0xf3, 0x40, 0xf4, 0x9a, 0xf3, 0x3d, 0xf4, 0x22, 0xf5, 0xe4, 0xf5, 0x0f, 0xf7, 0x47, 0xf7, + 0xf6, 0xf7, 0x02, 0xfa, 0xd9, 0xfb, 0x7d, 0xfc, 0x24, 0xfc, 0x1c, 0xfe, 0xcc, 0xff, 0x3b, 0x01, + 0x33, 0x02, 0x58, 0x05, 0x42, 0x07, 0x41, 0x09, 0x6a, 0x0b, 0xdb, 0x0c, 0x34, 0x0f, 0xbb, 0x0e, + 0x03, 0x10, 0xa1, 0x10, 0x58, 0x0f, 0x4f, 0x0d, 0xfc, 0x0b, 0xe7, 0x08, 0x98, 0x04, 0xe4, 0xff, + 0x2a, 0xfc, 0xec, 0xfa, 0x5f, 0xf8, 0x51, 0xf6, 0xf5, 0xf4, 0x37, 0xf3, 0x1d, 0xf3, 0x00, 0xf4, + 0x1e, 0xf4, 0x16, 0xf4, 0xa1, 0xf5, 0xb2, 0xf6, 0x5c, 0xf7, 0xc1, 0xf8, 0x89, 0xf9, 0xfd, 0xfb, + 0x3f, 0xfc, 0x22, 0xfd, 0x73, 0xff, 0x96, 0x00, 0xb5, 0x01, 0xa2, 0x00, 0x83, 0x00, 0x0d, 0x00, + 0x74, 0x01, 0x3b, 0x03, 0x31, 0x04, 0x74, 0x05, 0xb3, 0x05, 0x6d, 0x05, 0x14, 0x05, 0x84, 0x03, + 0x35, 0x01, 0x02, 0x01, 0x08, 0x00, 0xf8, 0xfd, 0x51, 0xfc, 0x21, 0xf9, 0x09, 0xf8, 0x58, 0xf8, + 0x5d, 0xf7, 0x26, 0xf7, 0x2a, 0xf8, 0x89, 0xfa, 0x6d, 0xfb, 0xd7, 0xfc, 0xbf, 0xff, 0x96, 0x02, + 0x30, 0x03, 0x14, 0x04, 0x4b, 0x06, 0x9c, 0x05, 0x73, 0x03, 0x16, 0x01, 0xb1, 0x00, 0x9e, 0x00, + 0xe1, 0x00, 0xf2, 0x01, 0x4a, 0x04, 0x1f, 0x06, 0xc0, 0x06, 0x10, 0x09, 0x1f, 0x0b, 0x3d, 0x0d, + 0x5a, 0x0d, 0x43, 0x0d, 0x5a, 0x0e, 0x05, 0x0d, 0x78, 0x0c, 0xe7, 0x0b, 0x55, 0x09, 0x28, 0x07, + 0xb4, 0x05, 0x68, 0x03, 0x30, 0x01, 0x3e, 0x01, 0x78, 0xfe, 0x12, 0xfa, 0x76, 0xf8, 0xbf, 0xf7, + 0x36, 0xf7, 0x10, 0xf6, 0xca, 0xf6, 0x11, 0xf6, 0x0b, 0xf5, 0x62, 0xf1, 0x30, 0xef, 0x00, 0xef, + 0x94, 0xee, 0x78, 0xee, 0x89, 0xed, 0xba, 0xec, 0x3b, 0xec, 0x0d, 0xef, 0xbe, 0xf0, 0xef, 0xf1, + 0x6f, 0xf5, 0x44, 0xf8, 0x95, 0xfd, 0x25, 0x02, 0xea, 0x06, 0xec, 0x0a, 0x3f, 0x0d, 0x36, 0x0f, + 0x00, 0x11, 0x8a, 0x11, 0x97, 0x0f, 0x7f, 0x11, 0x39, 0x11, 0x1e, 0x0d, 0xad, 0x0b, 0xa4, 0x0b, + 0xfb, 0x0b, 0x35, 0x0b, 0x18, 0x0b, 0x70, 0x0b, 0x08, 0x0a, 0x12, 0x04, 0x7c, 0x06, 0x4d, 0x06, + 0x4f, 0x02, 0x61, 0x02, 0x76, 0x00, 0x64, 0x00, 0x0b, 0xff, 0xa2, 0xff, 0xdf, 0xfe, 0xfb, 0xfe, + 0xb7, 0xfd, 0x9e, 0xfd, 0x01, 0xfd, 0x44, 0xfb, 0xea, 0xfd, 0xc5, 0xfd, 0xe1, 0xfc, 0xc6, 0xfe, + 0xf2, 0xfd, 0xf4, 0xff, 0xa0, 0x00, 0xec, 0x00, 0x13, 0x01, 0x6f, 0xfe, 0x85, 0xfc, 0x0c, 0xfc, + 0xc0, 0xfc, 0xcc, 0xfb, 0x54, 0xfa, 0xc9, 0xfb, 0x31, 0xf9, 0x82, 0xf7, 0x97, 0xf9, 0x59, 0xf9, + 0xe4, 0xfa, 0x49, 0xfb, 0xca, 0xfd, 0xed, 0xfc, 0xb6, 0xfc, 0x9f, 0x01, 0xa2, 0xff, 0x00, 0xfe, + 0xdf, 0xfb, 0x0c, 0xfa, 0xd4, 0xf9, 0x14, 0xfb, 0x4a, 0xfb, 0xee, 0xf7, 0x30, 0xf9, 0x61, 0xfa, + 0xb4, 0xfe, 0xe1, 0x00, 0x5c, 0x01, 0xbd, 0x04, 0x75, 0x06, 0x24, 0x07, 0xc5, 0x06, 0x35, 0x09, + 0x3f, 0x0e, 0x6f, 0x10, 0x5a, 0x0f, 0x07, 0x0d, 0x19, 0x0c, 0x99, 0x0a, 0x9b, 0x0a, 0x3d, 0x08, + 0x00, 0x02, 0x3f, 0xff, 0x6c, 0xfd, 0xc3, 0xfc, 0x31, 0xfd, 0x12, 0xfc, 0x39, 0xfc, 0x14, 0xf9, + 0xec, 0xf8, 0xab, 0xf8, 0xd7, 0xf5, 0x13, 0xf5, 0xdc, 0xf4, 0xfa, 0xf3, 0x93, 0xf1, 0x7b, 0xf0, + 0xf3, 0xf2, 0xaf, 0xf4, 0xea, 0xf4, 0xae, 0xf3, 0xe8, 0xf6, 0xbb, 0xfa, 0x2d, 0xfc, 0x14, 0x01, + 0x49, 0x04, 0x12, 0x05, 0x05, 0x07, 0x15, 0x09, 0x09, 0x0c, 0x80, 0x0b, 0x79, 0x09, 0xd6, 0x08, + 0x54, 0x06, 0x9a, 0x02, 0xe9, 0xff, 0xdf, 0xff, 0xc3, 0xfd, 0x75, 0xfc, 0xd3, 0xfa, 0x08, 0xf7, + 0xf3, 0xf7, 0xac, 0xf8, 0x98, 0xf8, 0x41, 0xf7, 0xb7, 0xf7, 0x41, 0xfa, 0x3c, 0xfd, 0x48, 0xff, + 0xcf, 0x00, 0xe2, 0x02, 0x5a, 0x00, 0x2b, 0x02, 0xce, 0x06, 0xf2, 0x07, 0xf0, 0x07, 0x2c, 0x08, + 0xf1, 0x0b, 0xb3, 0x0d, 0x5a, 0x0e, 0xb5, 0x11, 0x19, 0x15, 0x86, 0x15, 0x1c, 0x16, 0x73, 0x16, + 0x4d, 0x14, 0x97, 0x12, 0x89, 0x12, 0xb6, 0x0e, 0x9b, 0x08, 0xc9, 0x03, 0x6c, 0x01, 0xe4, 0xfe, + 0x1c, 0xfb, 0xb3, 0xf6, 0xaf, 0xf3, 0x7d, 0xf0, 0xde, 0xef, 0xe1, 0xf1, 0xe2, 0xf1, 0x7e, 0xf1, + 0xc4, 0xf1, 0xc4, 0xf1, 0x8c, 0xf0, 0x0b, 0xf0, 0xb9, 0xf0, 0xa4, 0xf2, 0xc5, 0xf2, 0x57, 0xf2, + 0xf5, 0xf3, 0xec, 0xf5, 0x14, 0xf9, 0xb8, 0xfc, 0x33, 0xff, 0xc6, 0x01, 0x5b, 0x07, 0x2a, 0x0b, + 0xbe, 0x0b, 0x2a, 0x0d, 0x3e, 0x0d, 0x01, 0x0e, 0x63, 0x10, 0xd9, 0x10, 0xa1, 0x12, 0xee, 0x0f, + 0x79, 0x0c, 0x37, 0x0b, 0x8d, 0x07, 0xfa, 0x03, 0x4b, 0x02, 0x68, 0x01, 0xa6, 0xff, 0x02, 0xfd, + 0x35, 0xfa, 0x7e, 0xfa, 0x61, 0xfc, 0x16, 0xfd, 0x66, 0xfd, 0x68, 0xfe, 0xd5, 0xfd, 0x3e, 0xfd, + 0xb4, 0xfc, 0xef, 0xfc, 0x49, 0xfc, 0xec, 0xfa, 0x46, 0xfa, 0x65, 0xfa, 0xd8, 0xf9, 0x39, 0xfa, + 0x0b, 0xfb, 0x02, 0xfa, 0x80, 0xfb, 0x3f, 0xfd, 0x4d, 0x00, 0xba, 0x03, 0xe2, 0x05, 0xbd, 0x06, + 0x60, 0x06, 0x65, 0x07, 0x15, 0x05, 0x83, 0x04, 0x1c, 0x03, 0x70, 0x00, 0xad, 0xff, 0x85, 0xfd, + 0xa9, 0xfb, 0x29, 0xfb, 0x98, 0xfb, 0xbd, 0xfb, 0x0f, 0xfc, 0xfa, 0xfb, 0x1d, 0xfc, 0xdc, 0xfa, + 0xac, 0xf9, 0xd7, 0xfb, 0xab, 0xfb, 0x8d, 0xfb, 0x46, 0xfc, 0xc1, 0xfc, 0xee, 0xfd, 0x18, 0xfe, + 0x48, 0xfd, 0x4c, 0xfb, 0x53, 0xfa, 0x0a, 0xfa, 0xa4, 0xfb, 0x2f, 0xfc, 0x8f, 0xfc, 0x22, 0xfd, + 0x68, 0xfb, 0xa1, 0xfc, 0x39, 0xfe, 0xef, 0xfe, 0x71, 0xfe, 0x92, 0xfe, 0x93, 0x00, 0x6d, 0xff, + 0x41, 0xfe, 0xee, 0xfc, 0x7b, 0xfd, 0x88, 0xfa, 0x12, 0xf9, 0x1a, 0xfa, 0x44, 0xf9, 0x50, 0xf8, + 0x3c, 0xf7, 0xae, 0xf9, 0x2d, 0xfb, 0x98, 0xfc, 0x75, 0x00, 0xac, 0x02, 0xc1, 0x04, 0xc4, 0x03, + 0x76, 0x02, 0x8a, 0x00, 0x8a, 0xfe, 0xc2, 0xfe, 0x53, 0xfd, 0xfe, 0xfb, 0x96, 0xfa, 0xc3, 0xfb, + 0xc6, 0xfd, 0xf9, 0x01, 0x4a, 0x05, 0xf2, 0x06, 0xe7, 0x07, 0x71, 0x07, 0x11, 0x0a, 0x5f, 0x0b, + 0x12, 0x0b, 0xa7, 0x0c, 0xdf, 0x0d, 0x53, 0x0b, 0x06, 0x0a, 0xfd, 0x09, 0xfe, 0x08, 0xfb, 0x05, + 0x07, 0x02, 0x88, 0x00, 0x66, 0xff, 0xe4, 0xfe, 0xc4, 0xfe, 0x71, 0xfc, 0x6f, 0xfb, 0x9a, 0xfc, + 0x3b, 0xfd, 0x88, 0xfc, 0x6b, 0xfb, 0x26, 0xfb, 0xfc, 0xfa, 0xf0, 0xf9, 0x6c, 0xf7, 0xc8, 0xf8, + 0xa8, 0xf8, 0xfd, 0xf6, 0xc1, 0xf7, 0x46, 0xf7, 0xdb, 0xf7, 0xd4, 0xf8, 0x49, 0xfc, 0x5f, 0xff, + 0x4d, 0x01, 0x04, 0x03, 0x92, 0x06, 0x8d, 0x0b, 0xf0, 0x0c, 0x12, 0x0e, 0x6e, 0x0e, 0xd3, 0x0d, + 0x29, 0x0c, 0x40, 0x0b, 0xca, 0x0b, 0xa5, 0x0a, 0x44, 0x0a, 0x8a, 0x07, 0x3b, 0x06, 0xef, 0x06, + 0x10, 0x07, 0xb7, 0x07, 0xcb, 0x05, 0x10, 0x05, 0x6f, 0x03, 0x82, 0x03, 0x70, 0x04, 0xa6, 0x05, + 0x6c, 0x05, 0x8e, 0x02, 0x9d, 0x03, 0x3c, 0x03, 0xe8, 0x02, 0x08, 0x00, 0x46, 0xff, 0xf5, 0xff, + 0x38, 0xff, 0x86, 0xff, 0xc6, 0x00, 0x54, 0x03, 0x7f, 0x02, 0x5b, 0x03, 0xc3, 0x04, 0xe0, 0x04, + 0xde, 0x04, 0x25, 0x04, 0x15, 0x05, 0xde, 0x02, 0xcf, 0xff, 0x13, 0xfe, 0xe6, 0xfc, 0x09, 0xfc, + 0x54, 0xf9, 0x61, 0xf7, 0x3f, 0xf3, 0xb9, 0xf0, 0x65, 0xf0, 0x9d, 0xf0, 0xf3, 0xf0, 0xb3, 0xf1, + 0x3c, 0xf3, 0x1a, 0xf3, 0x23, 0xf3, 0x68, 0xf3, 0x4c, 0xf3, 0x6f, 0xf1, 0xe9, 0xf1, 0x25, 0xf3, + 0x87, 0xf3, 0xe6, 0xf5, 0x2f, 0xf7, 0x66, 0xf9, 0x07, 0xfb, 0xaa, 0xfd, 0x97, 0x02, 0x2a, 0x07, + 0xbd, 0x09, 0x6b, 0x0b, 0x7a, 0x0e, 0x94, 0x10, 0x46, 0x13, 0x0f, 0x17, 0xb2, 0x17, 0x13, 0x19, + 0xa9, 0x19, 0xda, 0x19, 0x88, 0x16, 0x34, 0x13, 0x0f, 0x11, 0x36, 0x0c, 0x85, 0x08, 0x39, 0x04, + 0xf3, 0x01, 0x64, 0xfe, 0xa3, 0xfb, 0xa6, 0xfa, 0xb3, 0xf7, 0xc9, 0xf4, 0x5d, 0xf1, 0xe3, 0xf1, + 0x10, 0xf1, 0x4d, 0xee, 0x43, 0xed, 0x21, 0xeb, 0x83, 0xe9, 0xb3, 0xe6, 0x72, 0xe6, 0x8a, 0xe7, + 0xf9, 0xe7, 0xde, 0xe9, 0xea, 0xea, 0xe8, 0xee, 0xe1, 0xf3, 0x69, 0xf9, 0xe3, 0xfe, 0x56, 0x03, + 0x73, 0x07, 0x3c, 0x0b, 0x4a, 0x0c, 0x29, 0x0b, 0x41, 0x0b, 0x1f, 0x09, 0x3d, 0x09, 0x1a, 0x08, + 0x1f, 0x06, 0xa4, 0x04, 0x8b, 0x02, 0xed, 0x01, 0xa8, 0x00, 0x2c, 0xff, 0x0a, 0xfd, 0x1b, 0xfe, + 0xa1, 0xfd, 0xb2, 0xfc, 0x4d, 0xfd, 0xef, 0xfc, 0x5f, 0xff, 0x43, 0xff, 0xe1, 0x00, 0xeb, 0x02, + 0x5b, 0x03, 0xb2, 0x03, 0x4c, 0x03, 0x0c, 0x05, 0x4a, 0x05, 0xf2, 0x07, 0x70, 0x09, 0xe1, 0x09, + 0x20, 0x0b, 0xbc, 0x0b, 0xf9, 0x0d, 0xa6, 0x0b, 0xa8, 0x0b, 0x71, 0x0a, 0xeb, 0x08, 0x98, 0x08, + 0x47, 0x07, 0xed, 0x06, 0xaa, 0x01, 0x3c, 0xff, 0xf5, 0xfc, 0x98, 0xfa, 0x87, 0xf7, 0x01, 0xf5, + 0x4c, 0xf4, 0xd3, 0xf3, 0xb3, 0xf2, 0x1a, 0xf3, 0x0c, 0xf7, 0x5a, 0xf8, 0xae, 0xf9, 0xad, 0xfb, + 0x6e, 0xfb, 0xbc, 0xfb, 0x48, 0xfa, 0xd4, 0xf9, 0x88, 0xfa, 0x8b, 0xf9, 0x4b, 0xf8, 0xe9, 0xf8, + 0x37, 0xfb, 0x2c, 0xfd, 0x18, 0x00, 0x95, 0xff, 0xd0, 0x00, 0xed, 0x02, 0xaa, 0x03, 0xc5, 0x05, + 0x26, 0x07, 0xd3, 0x09, 0xbf, 0x07, 0x0e, 0x07, 0x6d, 0x08, 0x83, 0x08, 0x0a, 0x07, 0xcc, 0x06, + 0xf6, 0x06, 0x02, 0x05, 0x27, 0x04, 0x1f, 0x04, 0x4e, 0x04, 0x31, 0x03, 0x94, 0x00, 0xf9, 0x01, + 0x53, 0x02, 0xad, 0x01, 0x54, 0x01, 0x41, 0x00, 0x03, 0x01, 0x7e, 0x00, 0x10, 0x02, 0x83, 0x01, + 0x28, 0x01, 0x5e, 0x00, 0x31, 0xff, 0xb4, 0xfc, 0xf7, 0xfa, 0xf2, 0xfa, 0x59, 0xfa, 0xed, 0xfb, + 0x14, 0xfb, 0x61, 0xfd, 0x9f, 0x00, 0x6e, 0x03, 0x76, 0x07, 0xd2, 0x08, 0x88, 0x09, 0x4e, 0x08, + 0x72, 0x08, 0xd1, 0x08, 0xc0, 0x07, 0xf4, 0x05, 0x64, 0x03, 0x0d, 0x01, 0x52, 0xfd, 0x0f, 0xfc, + 0x55, 0xfa, 0xb9, 0xf8, 0x8b, 0xf9, 0x45, 0xf7, 0xd0, 0xf7, 0xdd, 0xf7, 0x70, 0xfb, 0x94, 0xfc, + 0xb8, 0xfb, 0xd3, 0xfc, 0xbb, 0xfe, 0xba, 0xff, 0x90, 0xfe, 0x37, 0x00, 0xb9, 0xfe, 0xc5, 0xfe, + 0xe8, 0xfe, 0x4b, 0x00, 0xf7, 0x02, 0x65, 0x02, 0xf4, 0x04, 0x38, 0x07, 0xab, 0x07, 0x9f, 0x07, + 0x5d, 0x08, 0x9a, 0x09, 0xa7, 0x09, 0x9c, 0x08, 0x8d, 0x06, 0x8b, 0x06, 0xaa, 0x04, 0xcc, 0x01, + 0x60, 0xff, 0x61, 0xfc, 0x02, 0xf9, 0xa4, 0xf5, 0xe0, 0xf5, 0x42, 0xf4, 0xeb, 0xf4, 0xee, 0xf5, + 0x09, 0xf6, 0x48, 0xf8, 0x56, 0xf9, 0x2a, 0xfb, 0x64, 0xfa, 0x36, 0xfb, 0x3e, 0xf9, 0x06, 0xf9, + 0x4c, 0xf9, 0xa0, 0xf9, 0xd1, 0xfb, 0x86, 0xf9, 0x43, 0xfa, 0xa7, 0xfc, 0x3b, 0xfe, 0x8a, 0xff, + 0xf6, 0x00, 0x7d, 0x03, 0xf9, 0x03, 0x9f, 0x05, 0x29, 0x08, 0xc0, 0x0a, 0xd1, 0x0b, 0xce, 0x0b, + 0x3d, 0x0d, 0x13, 0x0b, 0x19, 0x0b, 0x5b, 0x0a, 0x67, 0x08, 0x56, 0x07, 0x3c, 0x04, 0xf0, 0x02, + 0x08, 0x01, 0xf3, 0xff, 0x58, 0xff, 0x47, 0xff, 0x9b, 0xfd, 0xe1, 0xfa, 0xa4, 0xf9, 0xb8, 0xf8, + 0xd5, 0xf7, 0xaf, 0xf6, 0x47, 0xf6, 0xc7, 0xf3, 0xab, 0xf1, 0xcc, 0xef, 0x44, 0xee, 0xe1, 0xeb, + 0x2a, 0xea, 0xc3, 0xea, 0xef, 0xeb, 0x01, 0xee, 0xca, 0xf1, 0xf6, 0xf5, 0xae, 0xfa, 0x9b, 0xfd, + 0x54, 0x02, 0x8f, 0x06, 0x9b, 0x0a, 0xcc, 0x0c, 0x81, 0x0c, 0x97, 0x0e, 0x9a, 0x0e, 0x32, 0x11, + 0x8f, 0x10, 0x9d, 0x10, 0x50, 0x11, 0xde, 0x10, 0xd0, 0x0e, 0x8a, 0x0b, 0x11, 0x0b, 0xad, 0x07, + 0x58, 0x05, 0x58, 0x02, 0x36, 0x01, 0x51, 0x00, 0xd3, 0xfd, 0x5e, 0xfe, 0x01, 0xfd, 0x7b, 0xfb, + 0x5d, 0xf9, 0xbe, 0xf8, 0x0c, 0xfa, 0xe3, 0xf8, 0x08, 0xf9, 0x06, 0xf9, 0x30, 0xf9, 0x65, 0xf8, + 0x70, 0xf8, 0x61, 0xfa, 0xa0, 0xfb, 0x3f, 0xfe, 0x31, 0xfe, 0x04, 0x00, 0x6a, 0x01, 0xe8, 0x04, + 0x43, 0x06, 0x33, 0x07, 0xfa, 0x06, 0x65, 0x06, 0x5a, 0x06, 0xba, 0x01, 0xda, 0xfe, 0xc6, 0xfa, + 0x68, 0xf8, 0x5d, 0xf6, 0x68, 0xf5, 0x57, 0xf6, 0x2f, 0xf6, 0xae, 0xf7, 0x76, 0xf9, 0x28, 0xfa, + 0x21, 0xfa, 0xa1, 0xf9, 0xf2, 0xfa, 0x29, 0xfb, 0x97, 0xfb, 0x5b, 0xfa, 0xda, 0xfa, 0x8d, 0xfc, + 0x08, 0xfd, 0xa6, 0xff, 0x8f, 0x00, 0x3b, 0x03, 0x9a, 0x05, 0x34, 0x08, 0x7c, 0x09, 0xb8, 0x0c, + 0xc5, 0x10, 0xd8, 0x11, 0xd6, 0x13, 0x46, 0x15, 0x16, 0x16, 0xe1, 0x13, 0x28, 0x13, 0xb3, 0x11, + 0x32, 0x0f, 0xab, 0x0c, 0xe6, 0x0a, 0x2b, 0x0a, 0xb3, 0x06, 0x5c, 0x02, 0xd7, 0x00, 0xcc, 0xff, + 0x10, 0xfe, 0x41, 0xfc, 0x37, 0xfb, 0x33, 0xfa, 0xee, 0xf9, 0xfa, 0xf8, 0xf9, 0xf8, 0xb7, 0xf9, + 0xf3, 0xf7, 0x3b, 0xf8, 0x22, 0xf6, 0xaf, 0xf4, 0x21, 0xf3, 0x35, 0xf1, 0x33, 0xf1, 0x55, 0xf1, + 0x6f, 0xf2, 0x15, 0xf4, 0x6a, 0xf8, 0x78, 0xfb, 0xf5, 0xfe, 0x63, 0x01, 0x7b, 0x01, 0x29, 0x03, + 0x71, 0x03, 0x0c, 0x04, 0x53, 0x04, 0x43, 0x04, 0xb7, 0x02, 0x99, 0xff, 0x05, 0xff, 0xa7, 0xfd, + 0x7d, 0xfb, 0x94, 0xfa, 0xa3, 0xfa, 0x6d, 0xfa, 0x35, 0xf9, 0x41, 0xfb, 0xc0, 0xfc, 0x7c, 0xff, + 0x35, 0x00, 0x6c, 0x01, 0xc4, 0x02, 0x46, 0x03, 0x7a, 0x04, 0xf5, 0x03, 0x38, 0x04, 0x4d, 0x04, + 0xd0, 0x06, 0x5b, 0x08, 0x80, 0x09, 0xa8, 0x0a, 0xe4, 0x0c, 0xa1, 0x0d, 0x45, 0x0d, 0x6f, 0x0e, + 0x20, 0x0d, 0x08, 0x0e, 0x10, 0x0d, 0x5e, 0x0b, 0x7a, 0x0b, 0xff, 0x09, 0x14, 0x09, 0x6d, 0x08, + 0x0c, 0x06, 0xe4, 0x01, 0xec, 0xfd, 0x17, 0xfb, 0xa7, 0xf7, 0xf1, 0xf5, 0xba, 0xf2, 0x47, 0xf2, + 0xf1, 0xf1, 0x9a, 0xf0, 0x22, 0xf1, 0x05, 0xf0, 0xf1, 0xf1, 0x34, 0xf1, 0x22, 0xf1, 0x3d, 0xf1, + 0xd6, 0xf3, 0xd0, 0xf5, 0xe4, 0xf5, 0x27, 0xf6, 0xca, 0xf7, 0xca, 0xf9, 0x68, 0xf9, 0xc1, 0xfb, + 0x39, 0xfe, 0x38, 0xff, 0x0e, 0x00, 0xc2, 0x02, 0x2a, 0x06, 0x1e, 0x08, 0xb4, 0x0a, 0xa1, 0x0e, + 0x84, 0x0f, 0x19, 0x0f, 0xb7, 0x0e, 0x70, 0x0e, 0x51, 0x0e, 0x4a, 0x0d, 0xb0, 0x0a, 0x4e, 0x09, + 0x2a, 0x08, 0xfe, 0x04, 0xf3, 0x02, 0xb8, 0xff, 0xce, 0xfe, 0xb7, 0xfc, 0xd2, 0xfb, 0x6e, 0xfb, + 0x9c, 0xfb, 0x97, 0xfc, 0x7a, 0xfc, 0xba, 0xfb, 0x89, 0xfb, 0x0c, 0xfc, 0x2f, 0xfa, 0x7f, 0xf8, + 0xfd, 0xf5, 0x91, 0xf3, 0x43, 0xf2, 0xc1, 0xf1, 0x6e, 0xf3, 0xbf, 0xf6, 0xed, 0xf7, 0x88, 0xfc, + 0x04, 0x00, 0x98, 0x02, 0xba, 0x04, 0x0c, 0x06, 0x73, 0x07, 0x5a, 0x08, 0xcd, 0x09, 0xdf, 0x09, + 0x3e, 0x0a, 0xce, 0x08, 0x6e, 0x08, 0x2d, 0x05, 0x60, 0x02, 0x58, 0x02, 0xeb, 0x00, 0x88, 0xff, + 0xd8, 0xfd, 0xd5, 0xfc, 0x4d, 0xfc, 0x12, 0xfd, 0xe3, 0xfe, 0x0f, 0x01, 0x1f, 0x01, 0x50, 0x00, + 0x84, 0xff, 0x57, 0xff, 0xc7, 0xfe, 0xf5, 0xfd, 0xbf, 0xfe, 0x95, 0xff, 0x5a, 0xfe, 0xda, 0xfe, + 0x62, 0xfe, 0xb0, 0xfe, 0x0b, 0xff, 0x8a, 0xfe, 0x66, 0x00, 0x7e, 0x01, 0xa8, 0x03, 0x5d, 0x05, + 0x2e, 0x08, 0x26, 0x08, 0x75, 0x08, 0xf0, 0x08, 0x7e, 0x08, 0x84, 0x08, 0x4c, 0x05, 0xc3, 0x02, + 0xc5, 0xff, 0x1c, 0xfe, 0x73, 0xfe, 0x47, 0xfe, 0x90, 0xff, 0x8c, 0x02, 0x82, 0x03, 0x58, 0x03, + 0xe4, 0x03, 0xea, 0x02, 0xe8, 0x01, 0x9f, 0x00, 0x4a, 0xff, 0x6e, 0xfe, 0x40, 0xfc, 0xb0, 0xfa, + 0x7f, 0xfa, 0x0c, 0xf8, 0xec, 0xf5, 0x03, 0xf6, 0x07, 0xf8, 0xae, 0xf8, 0x82, 0xfa, 0xbb, 0xfb, + 0x7d, 0xfd, 0x15, 0xff, 0xb7, 0x00, 0x0d, 0x02, 0x15, 0x03, 0xda, 0x04, 0xb4, 0x04, 0x89, 0x05, + 0x30, 0x04, 0xc4, 0x04, 0x79, 0x06, 0x5b, 0x07, 0x2c, 0x07, 0x87, 0x06, 0x2b, 0x05, 0x1a, 0x03, + 0xb6, 0x00, 0x3f, 0xfe, 0x52, 0xfc, 0x3f, 0xfa, 0x4c, 0xf9, 0x54, 0xfa, 0xbb, 0xf9, 0x38, 0xf8, + 0xae, 0xf9, 0x7a, 0xf8, 0xa8, 0xf7, 0x12, 0xf5, 0x87, 0xf2, 0xdf, 0xf1, 0x32, 0xf0, 0x3d, 0xef, + 0xc9, 0xee, 0x98, 0xf1, 0x9b, 0xf4, 0xf9, 0xf8, 0xfb, 0xfb, 0xfa, 0xff, 0x46, 0x04, 0xc8, 0x06, + 0x2d, 0x08, 0x07, 0x0b, 0x85, 0x0e, 0x6a, 0x10, 0x32, 0x10, 0x97, 0x11, 0x4a, 0x11, 0xcf, 0x0d, + 0x36, 0x0b, 0x33, 0x09, 0x1c, 0x07, 0xfc, 0x03, 0x04, 0x02, 0xab, 0x00, 0x0c, 0x00, 0x11, 0xfe, + 0xf5, 0xfd, 0x8d, 0xfe, 0x43, 0xff, 0x8c, 0xfe, 0xf5, 0xfd, 0x3f, 0xfd, 0xff, 0xfb, 0x00, 0xfc, + 0x92, 0xfb, 0x18, 0xfd, 0xf9, 0xfd, 0xa4, 0xfe, 0x4c, 0xfe, 0x78, 0xfe, 0x58, 0xff, 0x9e, 0xff, + 0x3b, 0x00, 0x78, 0x00, 0x00, 0x02, 0x8b, 0x03, 0x47, 0x04, 0x41, 0x05, 0x90, 0x05, 0x2c, 0x05, + 0x48, 0x03, 0xff, 0xff, 0x26, 0xfe, 0x0e, 0xfa, 0x8b, 0xf6, 0xae, 0xf3, 0x1e, 0xf1, 0xc7, 0xed, + 0xf7, 0xec, 0x36, 0xed, 0xad, 0xed, 0xaa, 0xee, 0x2c, 0xef, 0x1a, 0xf0, 0x4e, 0xf0, 0x04, 0xf2, + 0x7f, 0xf4, 0x4c, 0xf7, 0xff, 0xf8, 0xc5, 0xfb, 0x8f, 0xfc, 0x2e, 0xfc, 0x94, 0xfd, 0x68, 0xff, + 0xad, 0x00, 0x03, 0x02, 0x43, 0x05, 0x87, 0x08, 0x86, 0x0b, 0x61, 0x0e, 0xc8, 0x12, 0xa9, 0x15, + 0xde, 0x16, 0x9b, 0x17, 0xd5, 0x17, 0x6e, 0x17, 0xb5, 0x15, 0x55, 0x13, 0xb0, 0x10, 0x5c, 0x0f, + 0x2e, 0x0d, 0x8b, 0x0b, 0xc8, 0x09, 0xd9, 0x06, 0x2c, 0x03, 0x6f, 0x00, 0xa9, 0xfd, 0x40, 0xfc, + 0xd8, 0xfb, 0x32, 0xfb, 0x07, 0xfb, 0xcd, 0xf9, 0x13, 0xf7, 0xdf, 0xf5, 0x8a, 0xf4, 0x39, 0xf3, + 0x7b, 0xf1, 0x77, 0xee, 0x0b, 0xed, 0xd5, 0xec, 0x98, 0xed, 0x10, 0xee, 0x82, 0xf1, 0xfa, 0xf4, + 0x88, 0xf8, 0xc4, 0xfc, 0x16, 0x00, 0xa0, 0x02, 0x26, 0x03, 0xc6, 0x04, 0xb5, 0x07, 0x8e, 0x09, + 0x6d, 0x0a, 0x72, 0x0d, 0x04, 0x0e, 0x14, 0x0c, 0x1c, 0x0a, 0xfc, 0x07, 0xe0, 0x06, 0xe3, 0x05, + 0x45, 0x04, 0x1d, 0x02, 0xed, 0x01, 0x25, 0x01, 0x93, 0x00, 0xd5, 0xff, 0x2c, 0xff, 0xd2, 0xff, + 0x77, 0x00, 0x7a, 0xff, 0xc8, 0xff, 0xf7, 0xff, 0xcb, 0x00, 0xd1, 0x00, 0xb7, 0x01, 0xad, 0x02, + 0x48, 0x03, 0x55, 0x03, 0x2f, 0x03, 0x8c, 0x03, 0x39, 0x02, 0x2a, 0x02, 0xb2, 0x02, 0xa9, 0x05, + 0xdf, 0x06, 0x63, 0x07, 0xac, 0x08, 0x89, 0x09, 0x14, 0x09, 0x10, 0x07, 0x76, 0x04, 0x86, 0x01, + 0x42, 0xff, 0x31, 0xfc, 0xf0, 0xf8, 0xad, 0xf6, 0x1f, 0xf6, 0x24, 0xf4, 0x72, 0xf3, 0x98, 0xf4, + 0x16, 0xf6, 0x04, 0xf6, 0x27, 0xf5, 0x00, 0xf6, 0x76, 0xf7, 0x14, 0xf8, 0x75, 0xf9, 0x39, 0xfc, + 0xfa, 0xfc, 0xf4, 0xfb, 0xbf, 0xfa, 0xa3, 0xfa, 0x8c, 0xfa, 0x6d, 0xfb, 0x76, 0xfc, 0xe0, 0xfe, + 0xf3, 0xff, 0x29, 0x01, 0x16, 0x03, 0xa8, 0x04, 0x3a, 0x06, 0xc1, 0x06, 0x12, 0x07, 0x8a, 0x08, + 0xfd, 0x08, 0xaf, 0x08, 0x89, 0x09, 0xc9, 0x09, 0xfa, 0x09, 0x45, 0x09, 0x62, 0x08, 0x77, 0x07, + 0x3b, 0x07, 0x82, 0x04, 0x10, 0x02, 0x76, 0x00, 0xd9, 0x00, 0xc1, 0x02, 0x1e, 0x03, 0x67, 0x05, + 0x63, 0x06, 0x25, 0x06, 0x29, 0x05, 0x66, 0x03, 0xf7, 0x00, 0x75, 0xfd, 0x51, 0xfa, 0xc4, 0xf6, + 0x12, 0xf4, 0xf7, 0xf1, 0x74, 0xf1, 0x5d, 0xf2, 0x1b, 0xf3, 0xa5, 0xf4, 0x55, 0xf7, 0x06, 0xf9, + 0x3c, 0xfb, 0xfa, 0xfd, 0x8d, 0xff, 0xd2, 0xff, 0x38, 0x02, 0x15, 0x03, 0x91, 0x02, 0xb0, 0x01, + 0xde, 0x00, 0x50, 0xff, 0xa6, 0xfd, 0x38, 0xfc, 0xc7, 0xfb, 0x76, 0xfd, 0x2c, 0xfd, 0x01, 0xff, + 0xb2, 0xff, 0x4f, 0x00, 0x5a, 0x01, 0xad, 0x00, 0x89, 0x00, 0xd5, 0xff, 0x72, 0xfe, 0xf2, 0xfd, + 0x59, 0xfe, 0x71, 0xfd, 0x4d, 0xfe, 0x1c, 0xff, 0xca, 0xfe, 0x5d, 0xff, 0xeb, 0xfe, 0xf2, 0xfe, + 0xf8, 0xff, 0x9c, 0xff, 0x4b, 0x00, 0xc5, 0x02, 0x70, 0x05, 0x7a, 0x07, 0xd4, 0x08, 0x97, 0x09, + 0xb6, 0x0a, 0x9f, 0x0b, 0x86, 0x09, 0x23, 0x08, 0x07, 0x07, 0xc8, 0x05, 0x99, 0x02, 0x15, 0x01, + 0xe3, 0xff, 0xc0, 0xfd, 0x7d, 0xfc, 0xed, 0xfb, 0x5c, 0xfc, 0x44, 0xfb, 0xb2, 0xf9, 0x81, 0xf9, + 0x8e, 0xf9, 0xe1, 0xf8, 0x53, 0xf9, 0x21, 0xfa, 0x45, 0xfb, 0xb1, 0xfb, 0x9b, 0xfa, 0x92, 0xf9, + 0xc5, 0xf9, 0xc2, 0xf9, 0x6e, 0xfb, 0x71, 0xfd, 0xb0, 0xff, 0x4b, 0x03, 0x8b, 0x04, 0xb7, 0x06, + 0xed, 0x08, 0xc1, 0x0a, 0x04, 0x0c, 0x15, 0x0d, 0xeb, 0x0c, 0x74, 0x0d, 0xdb, 0x0d, 0xe9, 0x0c, + 0x5b, 0x0d, 0xaa, 0x0b, 0x91, 0x09, 0xb3, 0x06, 0x74, 0x03, 0xca, 0x00, 0x9a, 0xfc, 0xf7, 0xf8, + 0xe4, 0xf7, 0x2c, 0xf6, 0xdb, 0xf4, 0x7a, 0xf4, 0x9f, 0xf4, 0x8a, 0xf4, 0x38, 0xf4, 0x56, 0xf2, + 0xdc, 0xf0, 0xc9, 0xef, 0xba, 0xee, 0x15, 0xee, 0x4d, 0xed, 0x2b, 0xef, 0x83, 0xf0, 0x1c, 0xf2, + 0x90, 0xf4, 0xaa, 0xf9, 0x56, 0xfd, 0xa6, 0xff, 0xb2, 0x02, 0xdb, 0x06, 0xb4, 0x0a, 0xc7, 0x0c, + 0x15, 0x11, 0xc0, 0x13, 0xe4, 0x15, 0x38, 0x16, 0x83, 0x14, 0x7d, 0x13, 0xcf, 0x10, 0x88, 0x0d, + 0x6e, 0x0a, 0x2f, 0x08, 0x5f, 0x06, 0x89, 0x04, 0xbd, 0x03, 0x2d, 0x03, 0x0f, 0x02, 0x6d, 0x00, + 0x49, 0x00, 0x1a, 0x00, 0x0b, 0x00, 0x12, 0x00, 0x23, 0xfe, 0x3e, 0xff, 0xde, 0xfd, 0x2d, 0xfc, + 0x42, 0xfb, 0x2c, 0xfa, 0x6c, 0xfa, 0x52, 0xfa, 0xf8, 0xf8, 0x1a, 0xf9, 0x9e, 0xfb, 0xac, 0xfc, + 0x8b, 0xff, 0x57, 0x02, 0x9e, 0x04, 0x47, 0x07, 0x94, 0x08, 0x9b, 0x08, 0xda, 0x06, 0x69, 0x04, + 0x92, 0x02, 0xb4, 0x00, 0xe3, 0xfd, 0x62, 0xfc, 0x80, 0xfb, 0xc0, 0xf9, 0xc4, 0xf8, 0x73, 0xf8, + 0xca, 0xf7, 0x37, 0xf8, 0xdb, 0xf8, 0x5c, 0xf9, 0x17, 0xf9, 0x84, 0xfa, 0x00, 0xfb, 0x46, 0xfb, + 0x80, 0xfb, 0xcd, 0xfa, 0x9f, 0xfb, 0xfd, 0xfa, 0x5c, 0xfa, 0xec, 0xfa, 0xdd, 0xfc, 0x54, 0xfe, + 0x05, 0x01, 0x8c, 0x03, 0x03, 0x06, 0x7d, 0x09, 0xaa, 0x0a, 0x58, 0x0c, 0x97, 0x0d, 0xf8, 0x0c, + 0x87, 0x0d, 0x50, 0x0d, 0x92, 0x0d, 0xfe, 0x0d, 0x65, 0x0d, 0xc2, 0x0d, 0xbb, 0x0c, 0x6b, 0x0a, + 0x4d, 0x07, 0xb4, 0x04, 0xad, 0x00, 0x82, 0xfe, 0x63, 0xfc, 0xfa, 0xf9, 0x78, 0xfa, 0xcf, 0xf8, + 0x1e, 0xf8, 0xa5, 0xf7, 0xd8, 0xf7, 0x2d, 0xf7, 0x83, 0xf5, 0x45, 0xf3, 0x3e, 0xf2, 0x16, 0xf1, + 0xa1, 0xee, 0x1b, 0xef, 0xb7, 0xef, 0xe2, 0xef, 0xdd, 0xf0, 0xef, 0xf2, 0x7d, 0xf5, 0xea, 0xf6, + 0x5a, 0xfa, 0xa1, 0xfd, 0xdc, 0xff, 0xf0, 0x01, 0xfe, 0x02, 0x84, 0x05, 0xb0, 0x06, 0xc2, 0x06, + 0x49, 0x05, 0x21, 0x04, 0x49, 0x03, 0x33, 0x02, 0x2f, 0x01, 0xe3, 0xff, 0xed, 0x00, 0xf3, 0xff, + 0xbb, 0x00, 0x69, 0x01, 0xc0, 0x02, 0x37, 0x04, 0xee, 0x03, 0xbf, 0x03, 0x68, 0x04, 0x11, 0x06, + 0xd7, 0x06, 0x16, 0x09, 0x50, 0x0a, 0xb1, 0x0b, 0x39, 0x0c, 0xbc, 0x0a, 0x05, 0x0b, 0x35, 0x0a, + 0xf0, 0x07, 0xcf, 0x06, 0xc6, 0x05, 0x69, 0x05, 0x98, 0x04, 0xf8, 0x04, 0x7e, 0x04, 0x6d, 0x04, + 0xc5, 0x03, 0x42, 0x03, 0x42, 0x02, 0x0f, 0x01, 0xc0, 0x00, 0x11, 0xfc, 0xc2, 0xf9, 0x56, 0xf7, + 0x17, 0xf4, 0x30, 0xf1, 0x1f, 0xef, 0xa5, 0xee, 0x51, 0xed, 0x05, 0xed, 0x6a, 0xed, 0x5b, 0xef, + 0x5d, 0xf1, 0x5d, 0xf3, 0xd1, 0xf5, 0x5f, 0xf8, 0x09, 0xfb, 0x2b, 0xfc, 0x00, 0xfc, 0x9f, 0xfb, + 0xf9, 0xf9, 0x51, 0xf9, 0xe3, 0xf9, 0xfa, 0xfb, 0x63, 0xfd, 0x4c, 0xff, 0x09, 0x02, 0x65, 0x04, + 0xfd, 0x06, 0x09, 0x08, 0x88, 0x0a, 0xfb, 0x0b, 0x16, 0x0d, 0x66, 0x0d, 0xc4, 0x0e, 0xea, 0x0f, + 0xd9, 0x10, 0x5b, 0x11, 0xd4, 0x0f, 0x4a, 0x0f, 0x34, 0x0e, 0x55, 0x0b, 0x45, 0x09, 0x37, 0x08, + 0xa4, 0x06, 0x43, 0x05, 0xd3, 0x04, 0x5f, 0x03, 0x23, 0x03, 0x56, 0x02, 0x09, 0x01, 0x7f, 0x00, + 0x38, 0xfd, 0x34, 0xfb, 0x98, 0xf8, 0x3d, 0xf5, 0xc7, 0xf2, 0x5c, 0xf0, 0xaa, 0xef, 0x68, 0xef, + 0x54, 0xf1, 0xa6, 0xf1, 0x9c, 0xf3, 0x63, 0xf5, 0x01, 0xf8, 0xc2, 0xfb, 0xf2, 0xfd, 0x4a, 0x02, + 0xb1, 0x04, 0x1c, 0x07, 0xb3, 0x08, 0xc6, 0x09, 0xfa, 0x09, 0x98, 0x09, 0xb7, 0x08, 0xe4, 0x06, + 0xcc, 0x06, 0x3e, 0x05, 0xb5, 0x03, 0xc0, 0x02, 0xd9, 0x00, 0xb5, 0xff, 0x08, 0xfe, 0x19, 0xfd, + 0x6c, 0xfb, 0xd0, 0xfa, 0x33, 0xfa, 0x80, 0xf9, 0x01, 0xf9, 0x0e, 0xf8, 0x48, 0xf9, 0xe2, 0xf9, + 0x10, 0xfa, 0xef, 0xf8, 0x8b, 0xf8, 0xd9, 0xf7, 0x45, 0xf8, 0x4b, 0xf9, 0x8e, 0xf9, 0x0d, 0xfd, + 0x48, 0xff, 0xdc, 0x01, 0x0c, 0x04, 0xd2, 0x06, 0x47, 0x0a, 0x4a, 0x0b, 0x27, 0x0b, 0xe3, 0x0b, + 0xab, 0x0c, 0x21, 0x0b, 0x3d, 0x0a, 0x1d, 0x09, 0x93, 0x06, 0x4e, 0x05, 0xf6, 0x02, 0x1b, 0x01, + 0x14, 0x00, 0x7a, 0xfd, 0xeb, 0xfb, 0x0a, 0xfb, 0x9c, 0xfa, 0xad, 0xf9, 0xd8, 0xf9, 0x19, 0xfa, + 0xa3, 0xfa, 0xa6, 0xf9, 0x67, 0xf8, 0xfe, 0xf7, 0x13, 0xf7, 0xa7, 0xf7, 0x38, 0xf7, 0xf6, 0xf7, + 0x10, 0xf9, 0x31, 0xf9, 0x40, 0xfa, 0x48, 0xfb, 0xf9, 0xfc, 0x53, 0xff, 0xe0, 0x00, 0x3c, 0x02, + 0x74, 0x04, 0x8d, 0x06, 0x4e, 0x07, 0x74, 0x09, 0x78, 0x0b, 0xc0, 0x0d, 0xdc, 0x0e, 0x64, 0x0e, + 0x42, 0x0d, 0x35, 0x09, 0x76, 0x06, 0x60, 0x03, 0x66, 0x01, 0x50, 0x00, 0x41, 0xff, 0x16, 0xff, + 0x8d, 0xfe, 0x81, 0xfe, 0x4f, 0xfd, 0xb8, 0xfc, 0x39, 0xfc, 0x85, 0xfc, 0x1e, 0xfb, 0xc2, 0xf8, + 0x95, 0xf7, 0x3e, 0xf5, 0xb4, 0xf2, 0x94, 0xf0, 0x61, 0xf0, 0x56, 0xf2, 0x31, 0xf3, 0x44, 0xf5, + 0xc0, 0xf8, 0xba, 0xfc, 0xba, 0xff, 0x41, 0x03, 0x1c, 0x06, 0x29, 0x0a, 0x97, 0x0d, 0x84, 0x0d, + 0xdb, 0x0e, 0x3d, 0x0d, 0x29, 0x0b, 0x5d, 0x09, 0xcb, 0x07, 0x00, 0x07, 0x3b, 0x05, 0x1d, 0x04, + 0x1e, 0x03, 0x31, 0x03, 0x31, 0x01, 0x76, 0x00, 0x8b, 0xff, 0xb8, 0xfe, 0x2e, 0xff, 0x2f, 0xfe, + 0xa5, 0xfe, 0xdd, 0xfe, 0x55, 0xff, 0xad, 0xfe, 0xb8, 0xfe, 0x22, 0xff, 0x96, 0xfe, 0x16, 0xfe, + 0xfc, 0xfc, 0x8b, 0xfd, 0xdf, 0xfd, 0xef, 0xfe, 0x80, 0x01, 0x02, 0x03, 0xe3, 0x04, 0x87, 0x05, + 0x55, 0x07, 0xf1, 0x06, 0x01, 0x07, 0x2e, 0x08, 0x4b, 0x07, 0xbe, 0x06, 0xae, 0x04, 0xcc, 0x01, + 0x07, 0xff, 0x63, 0xfc, 0xd6, 0xf8, 0x87, 0xf6, 0x4f, 0xf4, 0x45, 0xf3, 0x3b, 0xf3, 0x22, 0xf2, + 0x84, 0xf3, 0x7c, 0xf4, 0x8f, 0xf5, 0x52, 0xf8, 0x9b, 0xfa, 0x22, 0xfd, 0xf9, 0xfe, 0x4f, 0xfe, + 0xc5, 0xfd, 0xc2, 0xfe, 0x95, 0xff, 0xf2, 0x01, 0x96, 0x04, 0x4f, 0x06, 0xeb, 0x09, 0x9a, 0x0b, + 0xef, 0x0c, 0x2b, 0x0f, 0x8b, 0x0f, 0xb7, 0x10, 0x74, 0x11, 0xfa, 0x11, 0xd7, 0x10, 0x43, 0x10, + 0x2b, 0x0f, 0xe2, 0x0d, 0xa0, 0x0c, 0x56, 0x0a, 0xd6, 0x07, 0x40, 0x05, 0x44, 0x03, 0x62, 0xff, + 0xe6, 0xfb, 0x44, 0xfa, 0xe5, 0xf7, 0x1a, 0xf6, 0x4d, 0xf4, 0x6f, 0xf3, 0x4e, 0xf3, 0x3b, 0xf1, + 0xa2, 0xf0, 0x11, 0xf1, 0x3f, 0xf1, 0x85, 0xf1, 0x7a, 0xf1, 0x88, 0xf0, 0x89, 0xf0, 0x6b, 0xf0, + 0x17, 0xf0, 0x4c, 0xf1, 0x8e, 0xf0, 0xf6, 0xf1, 0xa3, 0xf3, 0x8d, 0xf6, 0x57, 0xfa, 0x6c, 0xfc, + 0x9c, 0xff, 0x98, 0x03, 0xcd, 0x06, 0x58, 0x08, 0x4f, 0x09, 0x70, 0x09, 0xaa, 0x09, 0x87, 0x08, + 0x2d, 0x07, 0x7c, 0x07, 0xea, 0x06, 0x4d, 0x06, 0xce, 0x04, 0xe7, 0x02, 0xb7, 0x02, 0xcf, 0x01, + 0x18, 0x01, 0x09, 0x02, 0x91, 0x03, 0xef, 0x03, 0x93, 0x04, 0x84, 0x04, 0x2a, 0x05, 0x75, 0x06, + 0x76, 0x05, 0xb4, 0x05, 0x15, 0x04, 0x51, 0x02, 0xaa, 0x00, 0x9d, 0xfe, 0x9f, 0xfd, 0x18, 0xfd, + 0x50, 0xfd, 0x35, 0xfe, 0xb3, 0x00, 0x7f, 0x02, 0x7b, 0x03, 0x8e, 0x03, 0xbb, 0x04, 0x6c, 0x05, + 0x2f, 0x05, 0x58, 0x06, 0x50, 0x06, 0x0e, 0x05, 0x82, 0x02, 0x23, 0xff, 0xed, 0xfc, 0x9f, 0xfa, + 0x90, 0xf8, 0xd0, 0xf6, 0x92, 0xf6, 0x1c, 0xf7, 0x3e, 0xf7, 0x15, 0xf7, 0xa4, 0xf7, 0x73, 0xf8, + 0x37, 0xf8, 0x08, 0xf9, 0x04, 0xf8, 0xee, 0xf6, 0x5b, 0xf6, 0x92, 0xf4, 0x9c, 0xf4, 0x77, 0xf4, + 0x65, 0xf4, 0xfa, 0xf5, 0x6c, 0xf8, 0xb4, 0xf9, 0x51, 0xfb, 0xfa, 0xfb, 0xb5, 0xfd, 0x21, 0x01, + 0x30, 0x03, 0xbb, 0x05, 0xce, 0x08, 0xb2, 0x0a, 0xf3, 0x0c, 0xa0, 0x0e, 0x73, 0x10, 0x6e, 0x12, + 0x0d, 0x12, 0x7c, 0x11, 0x7b, 0x10, 0x88, 0x0e, 0x24, 0x0d, 0x77, 0x0c, 0xd6, 0x0a, 0x40, 0x0a, + 0xa3, 0x09, 0xea, 0x08, 0xd6, 0x07, 0x2f, 0x06, 0x10, 0x04, 0xef, 0x01, 0xf9, 0x00, 0x7c, 0xff, + 0x64, 0xfd, 0x06, 0xfb, 0x03, 0xf8, 0x44, 0xf5, 0xa4, 0xf2, 0xde, 0xef, 0x78, 0xef, 0x8b, 0xf0, + 0x04, 0xf2, 0x99, 0xf4, 0x4c, 0xf7, 0xdf, 0xf8, 0x51, 0xfb, 0x42, 0xfd, 0x43, 0xff, 0x20, 0x02, + 0xea, 0x02, 0xe9, 0x03, 0x7d, 0x03, 0x45, 0x03, 0x3a, 0x03, 0x2e, 0x03, 0x18, 0x03, 0xf6, 0x03, + 0xa1, 0x04, 0x3f, 0x04, 0x8f, 0x04, 0x1e, 0x02, 0x72, 0x00, 0xd0, 0xff, 0x56, 0xff, 0x9a, 0x00, + 0x23, 0x01, 0x8c, 0x01, 0x79, 0x02, 0x57, 0x03, 0xa9, 0x03, 0xd1, 0x02, 0x6c, 0x02, 0x09, 0x03, + 0x0e, 0x03, 0xb2, 0x01, 0x0d, 0x01, 0x6d, 0x01, 0x92, 0x01, 0x0d, 0x01, 0x4f, 0x01, 0xc0, 0x02, + 0xd6, 0x03, 0xf4, 0x04, 0x04, 0x06, 0x9d, 0x07, 0xf6, 0x08, 0x8d, 0x09, 0x9b, 0x09, 0x64, 0x09, + 0x0f, 0x09, 0x76, 0x06, 0xa5, 0x03, 0x1f, 0x00, 0x26, 0xfc, 0xcc, 0xf8, 0xe4, 0xf6, 0x81, 0xf6, + 0xde, 0xf5, 0xfc, 0xf4, 0xb7, 0xf4, 0xe8, 0xf5, 0x29, 0xf7, 0xf1, 0xf7, 0x1e, 0xf8, 0xb2, 0xf8, + 0x6b, 0xf8, 0x12, 0xf7, 0xb1, 0xf6, 0x09, 0xf7, 0x09, 0xf8, 0x71, 0xf8, 0xc9, 0xf8, 0x8b, 0xfa, + 0x33, 0xfc, 0x22, 0xfd, 0x5c, 0xfe, 0x31, 0x00, 0x81, 0x02, 0x2c, 0x05, 0x89, 0x07, 0x34, 0x0a, + 0x04, 0x0c, 0xf5, 0x0c, 0x91, 0x0d, 0xd5, 0x0c, 0x7c, 0x0b, 0xcb, 0x0a, 0x73, 0x09, 0x65, 0x07, + 0x51, 0x05, 0x49, 0x02, 0x62, 0xff, 0xd8, 0xfd, 0x42, 0xfc, 0xab, 0xfa, 0xc7, 0xf8, 0x6f, 0xf7, + 0xe2, 0xf6, 0x2a, 0xf6, 0x15, 0xf5, 0x8c, 0xf5, 0x95, 0xf5, 0xf6, 0xf4, 0xae, 0xf4, 0x4a, 0xf3, + 0x70, 0xf3, 0x0e, 0xf3, 0x41, 0xf2, 0x90, 0xf2, 0x86, 0xf4, 0x60, 0xf8, 0xdb, 0xfc, 0xc4, 0x00, + 0xd9, 0x04, 0x1b, 0x09, 0x1d, 0x0c, 0xa7, 0x0e, 0xd5, 0x10, 0x3e, 0x11, 0x0f, 0x11, 0x60, 0x10, + 0xee, 0x0e, 0xcb, 0x0c, 0xf5, 0x0a, 0x53, 0x08, 0x9d, 0x05, 0xda, 0x03, 0x4d, 0x00, 0x17, 0xfd, + 0xc5, 0xfb, 0x53, 0xfa, 0xf7, 0xf8, 0xa2, 0xf8, 0x44, 0xf8, 0x5d, 0xf8, 0x4f, 0xf8, 0x01, 0xf8, + 0xa7, 0xf8, 0xf7, 0xf7, 0x09, 0xf7, 0x1b, 0xf7, 0x12, 0xf7, 0x0f, 0xf7, 0x57, 0xf8, 0xea, 0xf8, + 0xff, 0xf9, 0x77, 0xfc, 0x5f, 0xfe, 0xc0, 0x00, 0x43, 0x02, 0x5b, 0x03, 0x9c, 0x04, 0x23, 0x05, + 0xa8, 0x06, 0x76, 0x08, 0x67, 0x08, 0x2b, 0x09, 0x03, 0x09, 0x58, 0x07, 0xbd, 0x04, 0x15, 0x02, + 0x61, 0xff, 0xf1, 0xfc, 0x17, 0xfb, 0x4c, 0xfa, 0xe0, 0xfa, 0x91, 0xfb, 0x63, 0xfb, 0x34, 0xfb, + 0xe4, 0xfb, 0xcc, 0xfc, 0x7e, 0xfd, 0x7d, 0xfe, 0xbf, 0xff, 0x3c, 0x00, 0x87, 0x00, 0x40, 0x00, + 0xf1, 0x00, 0xe7, 0x01, 0xf9, 0x02, 0x68, 0x04, 0xc5, 0x04, 0xd9, 0x04, 0xb2, 0x04, 0x4b, 0x05, + 0xfb, 0x05, 0x87, 0x07, 0x1b, 0x08, 0x30, 0x09, 0xf8, 0x0a, 0xc2, 0x0c, 0x29, 0x0e, 0xfd, 0x0c, + 0x10, 0x0d, 0x0e, 0x0d, 0x49, 0x0b, 0x6f, 0x09, 0xe3, 0x08, 0x6a, 0x07, 0x52, 0x05, 0x8e, 0x02, + 0x71, 0xff, 0x4e, 0xfe, 0xf1, 0xfc, 0xeb, 0xfb, 0xb2, 0xfb, 0xc2, 0xfa, 0x25, 0xfb, 0xc3, 0xfa, + 0x04, 0xfb, 0xbe, 0xfa, 0x34, 0xf9, 0xf5, 0xf6, 0x23, 0xf4, 0x51, 0xf1, 0x54, 0xee, 0x07, 0xed, + 0x63, 0xec, 0x68, 0xee, 0x13, 0xf0, 0xfe, 0xf1, 0xec, 0xf5, 0x19, 0xf9, 0x60, 0xfc, 0x2c, 0xfe, + 0x2b, 0x00, 0x5a, 0x02, 0xe1, 0x03, 0x6a, 0x04, 0x2c, 0x05, 0x6a, 0x06, 0x5c, 0x06, 0x2f, 0x06, + 0xf4, 0x05, 0x01, 0x07, 0xf2, 0x06, 0xe2, 0x05, 0x84, 0x05, 0x59, 0x04, 0x47, 0x04, 0x28, 0x05, + 0x3d, 0x06, 0x67, 0x07, 0x88, 0x08, 0xa5, 0x09, 0x8c, 0x09, 0xe9, 0x08, 0x89, 0x07, 0x17, 0x06, + 0x13, 0x04, 0x1d, 0x03, 0xc2, 0x01, 0x42, 0x00, 0xd4, 0xff, 0x4d, 0xfe, 0x42, 0xfe, 0xeb, 0xfc, + 0xcc, 0xfb, 0xa7, 0xfd, 0x9c, 0xfe, 0xca, 0xff, 0x16, 0x01, 0x8c, 0x01, 0xee, 0x01, 0x0b, 0x02, + 0x74, 0x00, 0x49, 0xff, 0xf5, 0xfd, 0x88, 0xfa, 0xb2, 0xf7, 0x5a, 0xf4, 0xfd, 0xf1, 0xdf, 0xf1, + 0x8e, 0xf1, 0x98, 0xf2, 0x11, 0xf4, 0xc7, 0xf5, 0x95, 0xf7, 0xc5, 0xf8, 0x2c, 0xf9, 0xbb, 0xf9, + 0xe6, 0xf9, 0xb7, 0xf9, 0x13, 0xfb, 0x43, 0xfb, 0xed, 0xfb, 0x9c, 0xfc, 0xd9, 0xfd, 0xa9, 0xfe, + 0xf1, 0xfe, 0x97, 0x00, 0x45, 0x02, 0xf2, 0x03, 0x0a, 0x05, 0xd4, 0x06, 0x75, 0x09, 0x32, 0x0a, + 0xea, 0x0a, 0x1b, 0x0c, 0xfa, 0x0c, 0x0b, 0x0d, 0xb9, 0x0d, 0x88, 0x0d, 0x08, 0x0d, 0x1e, 0x0d, + 0x26, 0x0b, 0xb6, 0x0a, 0x8f, 0x09, 0x08, 0x08, 0x7e, 0x06, 0x7a, 0x03, 0x2c, 0x01, 0x8f, 0xfe, + 0xb3, 0xfc, 0xf5, 0xfa, 0xdb, 0xfa, 0x86, 0xf9, 0xa9, 0xf8, 0x43, 0xf8, 0x68, 0xf7, 0x02, 0xf7, + 0x25, 0xf4, 0x71, 0xf2, 0x2f, 0xf1, 0xbe, 0xee, 0xfa, 0xed, 0x38, 0xef, 0xcf, 0xf1, 0x96, 0xf4, + 0x50, 0xf7, 0x82, 0xf9, 0xde, 0xfc, 0xee, 0xff, 0xf0, 0x01, 0xa1, 0x04, 0xf7, 0x05, 0xf0, 0x07, + 0xf3, 0x08, 0xa8, 0x0a, 0xb0, 0x0b, 0x8d, 0x0b, 0x83, 0x0b, 0x03, 0x0a, 0xef, 0x07, 0x94, 0x05, + 0xa9, 0x03, 0xec, 0x01, 0x6f, 0x01, 0x52, 0x00, 0xcd, 0xfe, 0x7f, 0xfe, 0xd7, 0xfe, 0x1a, 0x00, + 0x1a, 0xff, 0xb7, 0xfe, 0xf4, 0xfe, 0x22, 0xfe, 0x63, 0xfd, 0x58, 0xfc, 0x70, 0xfc, 0x76, 0xfc, + 0x9f, 0xfc, 0x25, 0xfd, 0x56, 0xfe, 0xec, 0xff, 0x0b, 0x01, 0xde, 0x02, 0xe7, 0x03, 0x66, 0x06, + 0x48, 0x09, 0x07, 0x0c, 0x5e, 0x0f, 0x3e, 0x11, 0x53, 0x12, 0x8c, 0x11, 0x3d, 0x10, 0xd9, 0x0d, + 0x1f, 0x0a, 0x3a, 0x06, 0xe9, 0x02, 0x11, 0x00, 0x67, 0xfd, 0xad, 0xfb, 0xa6, 0xf9, 0xd8, 0xf8, + 0xb2, 0xf7, 0x65, 0xf5, 0x4b, 0xf5, 0x2b, 0xf5, 0x3f, 0xf5, 0xd2, 0xf4, 0x65, 0xf4, 0xb4, 0xf4, + 0x93, 0xf4, 0x3f, 0xf4, 0x2c, 0xf4, 0x2b, 0xf5, 0x0f, 0xf5, 0x8e, 0xf5, 0x27, 0xf6, 0x36, 0xf7, + 0x23, 0xfa, 0xcc, 0xfc, 0x16, 0x00, 0xeb, 0x02, 0xe7, 0x06, 0xbb, 0x09, 0xbb, 0x0b, 0xa3, 0x0d, + 0xb5, 0x0d, 0x45, 0x0e, 0x3e, 0x0d, 0x36, 0x0d, 0x6d, 0x0c, 0x61, 0x0b, 0x7c, 0x0a, 0x22, 0x09, + 0x4c, 0x07, 0xf8, 0x03, 0x30, 0x02, 0xff, 0xff, 0xa3, 0xfe, 0x79, 0xfd, 0xda, 0xfb, 0x16, 0xfd, + 0x31, 0xfd, 0x90, 0xfc, 0x87, 0xfb, 0x40, 0xfa, 0x70, 0xf8, 0x7d, 0xf6, 0xa9, 0xf4, 0xe1, 0xf2, + 0x20, 0xf3, 0xa5, 0xf2, 0x4d, 0xf4, 0x9f, 0xf6, 0x1d, 0xf9, 0x01, 0xfd, 0xb3, 0xff, 0x01, 0x02, + 0x46, 0x03, 0xe7, 0x04, 0x46, 0x05, 0x63, 0x06, 0xc2, 0x06, 0x75, 0x06, 0x85, 0x06, 0x7c, 0x06, + 0xa1, 0x07, 0x3d, 0x06, 0xdb, 0x04, 0x1d, 0x04, 0x5e, 0x02, 0x4d, 0x00, 0x21, 0xff, 0x24, 0x00, + 0xe4, 0xff, 0xfe, 0xff, 0x73, 0xff, 0xc5, 0xfe, 0xd9, 0xff, 0x94, 0xff, 0x17, 0x00, 0xd1, 0xff, + 0xe8, 0xff, 0x2e, 0xff, 0x26, 0xff, 0x46, 0xff, 0xd9, 0xfe, 0x25, 0xff, 0xdb, 0xfd, 0x50, 0xfd, + 0x7f, 0xfc, 0x8c, 0xfb, 0x9a, 0xfb, 0x98, 0xfc, 0x88, 0xfd, 0x5f, 0xfe, 0xf4, 0xff, 0x72, 0x01, + 0x33, 0x03, 0x4d, 0x03, 0x80, 0x01, 0xe2, 0xff, 0x7d, 0xfd, 0x09, 0xfb, 0x40, 0xf8, 0xe6, 0xf6, + 0x88, 0xf6, 0x95, 0xf5, 0x1d, 0xf5, 0xb4, 0xf5, 0x8d, 0xf7, 0x68, 0xf8, 0x32, 0xfa, 0x8c, 0xfb, + 0x89, 0xfc, 0x1f, 0xfe, 0x76, 0xff, 0xc0, 0x01, 0x3c, 0x03, 0xc2, 0x04, 0x8c, 0x05, 0x34, 0x06, + 0x58, 0x06, 0xae, 0x05, 0x33, 0x05, 0xe6, 0x04, 0x02, 0x06, 0xf0, 0x06, 0x57, 0x08, 0x8f, 0x09, + 0x98, 0x0a, 0xc4, 0x0b, 0xcf, 0x0a, 0x64, 0x0b, 0x08, 0x0c, 0x72, 0x0c, 0x89, 0x0c, 0x84, 0x0b, + 0xb6, 0x0a, 0x0c, 0x09, 0x92, 0x07, 0xeb, 0x04, 0xfd, 0x02, 0x6f, 0x00, 0x23, 0xfd, 0x87, 0xfa, + 0xe0, 0xf7, 0xbc, 0xf6, 0xb5, 0xf5, 0x41, 0xf6, 0x0c, 0xf7, 0x77, 0xf8, 0xcd, 0xf9, 0xdf, 0xf9, + 0x90, 0xf9, 0x4e, 0xf7, 0x4a, 0xf5, 0x6d, 0xf2, 0xfd, 0xf0, 0x34, 0xf1, 0x1b, 0xf2, 0xdc, 0xf3, + 0x0c, 0xf6, 0xb4, 0xf9, 0xaa, 0xfb, 0x72, 0xfe, 0xad, 0x01, 0xf0, 0x04, 0x7e, 0x07, 0x14, 0x08, + 0x65, 0x0a, 0x8a, 0x0b, 0xd5, 0x0b, 0x1e, 0x0b, 0xa3, 0x0a, 0x17, 0x0a, 0x10, 0x09, 0xfe, 0x07, + 0x05, 0x05, 0x7d, 0x04, 0x65, 0x03, 0x7b, 0x02, 0x26, 0x03, 0x77, 0x03, 0xa8, 0x04, 0xa5, 0x04, + 0xa3, 0x04, 0x9f, 0x03, 0x7b, 0x02, 0x5d, 0x01, 0xc3, 0x00, 0x34, 0x00, 0xca, 0xfe, 0x94, 0xfd, + 0xb0, 0xfc, 0x66, 0xfd, 0xf4, 0xfc, 0xa4, 0xfb, 0xa2, 0xfb, 0x0d, 0xfc, 0x40, 0xfc, 0xf2, 0xfb, + 0xd7, 0xfd, 0x07, 0x00, 0x46, 0x02, 0xdf, 0x03, 0xa5, 0x04, 0xc6, 0x05, 0x5b, 0x05, 0x30, 0x04, + 0xe8, 0x01, 0x8a, 0xff, 0xda, 0xfc, 0x49, 0xfb, 0x0c, 0xfb, 0xc6, 0xf9, 0xd2, 0xf9, 0xf5, 0xf8, + 0xe0, 0xf7, 0x68, 0xf7, 0xc1, 0xf6, 0x93, 0xf6, 0x2b, 0xf7, 0x82, 0xf7, 0x01, 0xf7, 0x20, 0xf7, + 0xf1, 0xf6, 0xce, 0xf7, 0xf0, 0xf8, 0x1e, 0xf8, 0x20, 0xf9, 0x0f, 0xf9, 0x98, 0xf8, 0xec, 0xf8, + 0x8b, 0xf9, 0xfb, 0xfb, 0x84, 0xfe, 0xa1, 0x00, 0x44, 0x03, 0xc6, 0x06, 0x5a, 0x09, 0x55, 0x0c, + 0x78, 0x0e, 0x60, 0x0f, 0x8e, 0x11, 0xb0, 0x12, 0x53, 0x14, 0x96, 0x15, 0xf7, 0x15, 0x0b, 0x15, + 0x50, 0x13, 0x1f, 0x11, 0xca, 0x0d, 0x5f, 0x0a, 0xaf, 0x06, 0xef, 0x03, 0x0c, 0x01, 0xe0, 0xfe, + 0x63, 0xfd, 0x2e, 0xfc, 0xb5, 0xfb, 0xf7, 0xf8, 0x6c, 0xf6, 0xa1, 0xf3, 0x43, 0xf0, 0x48, 0xed, + 0xb9, 0xe9, 0x94, 0xe8, 0xaa, 0xe8, 0x72, 0xe9, 0x68, 0xea, 0xf5, 0xec, 0xc5, 0xef, 0xe1, 0xf1, + 0xa0, 0xf4, 0x09, 0xf7, 0xa5, 0xfa, 0xb1, 0xfd, 0xa2, 0x00, 0x1b, 0x03, 0x0e, 0x05, 0x5e, 0x07, + 0x65, 0x08, 0x35, 0x09, 0x09, 0x09, 0xe7, 0x07, 0xec, 0x05, 0xd4, 0x03, 0x74, 0x02, 0xd5, 0x01, + 0x0b, 0x02, 0x90, 0x02, 0xb7, 0x03, 0xa1, 0x03, 0xdb, 0x03, 0xcf, 0x03, 0xd4, 0x03, 0x13, 0x04, + 0x9e, 0x03, 0x1d, 0x04, 0xec, 0x04, 0xb6, 0x04, 0xb2, 0x03, 0xe6, 0x02, 0x49, 0x02, 0xd4, 0x01, + 0xd9, 0x01, 0x89, 0x01, 0xd2, 0x02, 0xad, 0x03, 0x32, 0x04, 0xba, 0x05, 0x8b, 0x07, 0xbe, 0x09, + 0xf9, 0x0a, 0xce, 0x0b, 0x5a, 0x0b, 0x79, 0x09, 0x9f, 0x06, 0x20, 0x03, 0xf8, 0xff, 0x11, 0xfd, + 0x6c, 0xfa, 0x34, 0xf8, 0x29, 0xf8, 0xa4, 0xf7, 0xed, 0xf5, 0x17, 0xf5, 0x09, 0xf5, 0x28, 0xf6, + 0x98, 0xf6, 0xb4, 0xf7, 0xdd, 0xf9, 0x58, 0xfb, 0x67, 0xfc, 0x79, 0xfc, 0x7e, 0xfc, 0xb7, 0xfd, + 0x42, 0xfe, 0x3b, 0xfe, 0x51, 0xfe, 0x43, 0xfe, 0x8d, 0xfe, 0xff, 0xff, 0x32, 0x01, 0x27, 0x03, + 0xb1, 0x04, 0x63, 0x05, 0xe3, 0x06, 0x49, 0x07, 0x9b, 0x06, 0x89, 0x07, 0x32, 0x08, 0x3a, 0x08, + 0x71, 0x08, 0x2b, 0x08, 0x8a, 0x08, 0xb6, 0x08, 0xf2, 0x06, 0x16, 0x05, 0x78, 0x02, 0x8b, 0x00, + 0xc7, 0xfe, 0xd3, 0xfc, 0x2c, 0xfc, 0x94, 0xfb, 0x5b, 0xfb, 0x68, 0xfb, 0xce, 0xfc, 0xc2, 0xfd, + 0xeb, 0xfd, 0x06, 0xfe, 0x6b, 0xfc, 0x7c, 0xfa, 0xe2, 0xf7, 0x7a, 0xf6, 0x5b, 0xf6, 0xec, 0xf6, + 0x2f, 0xf8, 0x12, 0xf9, 0xf6, 0xfa, 0x32, 0xfc, 0x89, 0xfd, 0xc2, 0xff, 0x23, 0x01, 0xa2, 0x03, + 0xaa, 0x05, 0x8f, 0x06, 0xea, 0x07, 0x86, 0x08, 0x62, 0x07, 0xf0, 0x06, 0x64, 0x06, 0xa1, 0x05, + 0x03, 0x05, 0x20, 0x03, 0x99, 0x01, 0x54, 0x00, 0xd5, 0xff, 0xdd, 0xfe, 0x43, 0xfe, 0xcc, 0xfe, + 0xcc, 0xfe, 0xf0, 0xfd, 0x9b, 0xfc, 0x67, 0xfc, 0xed, 0xfb, 0x22, 0xfc, 0xf6, 0xfb, 0x82, 0xfb, + 0x6d, 0xfc, 0xbe, 0xfc, 0x8f, 0xfc, 0xbc, 0xfb, 0xb2, 0xfa, 0x7a, 0xfa, 0xb5, 0xfa, 0x92, 0xfb, + 0x03, 0xfd, 0xb5, 0xfe, 0xb6, 0x00, 0xd5, 0x03, 0xe5, 0x05, 0x67, 0x07, 0xf1, 0x08, 0x41, 0x0a, + 0x6f, 0x0a, 0x3c, 0x08, 0xed, 0x05, 0x68, 0x04, 0x3c, 0x02, 0x35, 0x00, 0x29, 0xfe, 0xb5, 0xfc, + 0x71, 0xfb, 0x14, 0xfa, 0xe3, 0xf8, 0x4b, 0xf8, 0x53, 0xf8, 0xa2, 0xf8, 0xeb, 0xf8, 0x29, 0xfa, + 0x37, 0xfb, 0x8a, 0xfb, 0xb3, 0xfb, 0xdc, 0xfb, 0x3e, 0xfb, 0x31, 0xfa, 0x8c, 0xf9, 0x4d, 0xf9, + 0xce, 0xf9, 0xd7, 0xf9, 0x72, 0xfa, 0x40, 0xfd, 0xc6, 0xff, 0x16, 0x02, 0x09, 0x04, 0xee, 0x05, + 0x0b, 0x08, 0x88, 0x09, 0xf2, 0x0a, 0xb4, 0x0c, 0x6b, 0x0e, 0x98, 0x0f, 0xfe, 0x0f, 0xc4, 0x0f, + 0x59, 0x0f, 0x5b, 0x0d, 0x71, 0x0a, 0xdf, 0x07, 0xd9, 0x04, 0xcb, 0x01, 0x42, 0x00, 0x83, 0xfe, + 0x9d, 0xfd, 0x2e, 0xfd, 0xd6, 0xfb, 0x8f, 0xfb, 0x49, 0xfb, 0xd0, 0xf9, 0xfd, 0xf7, 0x03, 0xf5, + 0x58, 0xf2, 0x27, 0xef, 0x03, 0xed, 0xae, 0xec, 0xbf, 0xed, 0xc5, 0xef, 0xe2, 0xf0, 0x32, 0xf3, + 0xac, 0xf5, 0xe0, 0xf7, 0xcd, 0xfa, 0x3a, 0xfd, 0xab, 0xff, 0x91, 0x02, 0xf9, 0x04, 0x28, 0x07, + 0x00, 0x09, 0x38, 0x0a, 0x40, 0x0b, 0x7e, 0x0b, 0x04, 0x0b, 0x25, 0x0a, 0xdc, 0x08, 0xfd, 0x08, + 0x85, 0x09, 0x9d, 0x09, 0xa5, 0x09, 0x1e, 0x0a, 0xa9, 0x0a, 0xf6, 0x09, 0x25, 0x09, 0x41, 0x08, + 0x5c, 0x07, 0x43, 0x07, 0x00, 0x06, 0x74, 0x05, 0x50, 0x06, 0x85, 0x05, 0xbe, 0x03, 0xf0, 0x01, + 0xe5, 0xff, 0xb7, 0xfe, 0x82, 0xfc, 0x5c, 0xfb, 0x05, 0xfc, 0x83, 0xfc, 0x52, 0xfd, 0x1d, 0xfe, + 0xcc, 0xfe, 0xa1, 0xff, 0xe1, 0xff, 0x11, 0xff, 0x13, 0xfd, 0xda, 0xfa, 0x50, 0xf8, 0x95, 0xf5, + 0x1e, 0xf3, 0xfc, 0xf1, 0x1f, 0xf2, 0x81, 0xf2, 0x9a, 0xf3, 0x5f, 0xf4, 0x4b, 0xf5, 0x50, 0xf6, + 0x0a, 0xf7, 0xbd, 0xf7, 0x77, 0xf8, 0xa4, 0xfa, 0xa9, 0xfd, 0xfb, 0xff, 0x26, 0x02, 0x1b, 0x03, + 0x1c, 0x05, 0xe8, 0x06, 0xc5, 0x07, 0x12, 0x08, 0x8b, 0x08, 0x5f, 0x09, 0xd8, 0x09, 0x30, 0x0a, + 0xd7, 0x0a, 0x0f, 0x0c, 0xe8, 0x0c, 0x9b, 0x0c, 0x51, 0x0b, 0x1a, 0x0a, 0x7b, 0x08, 0x53, 0x06, + 0xef, 0x04, 0xc4, 0x03, 0x69, 0x03, 0x90, 0x03, 0xff, 0x03, 0xa5, 0x02, 0xa7, 0xff, 0x11, 0xfd, + 0x44, 0xfa, 0xf7, 0xf8, 0x60, 0xf7, 0xce, 0xf5, 0xaf, 0xf6, 0xcc, 0xf8, 0x6d, 0xfa, 0x84, 0xfb, + 0x43, 0xfd, 0xeb, 0xfe, 0x0b, 0x00, 0xb2, 0xff, 0x13, 0xff, 0x10, 0xff, 0x18, 0xfe, 0xf9, 0xfd, + 0xa9, 0xfd, 0xdb, 0xfd, 0xc8, 0xfe, 0xdc, 0xfe, 0x03, 0xff, 0xfa, 0xfe, 0x3e, 0xff, 0x28, 0xff, + 0xd0, 0xfe, 0xe0, 0xfe, 0x0c, 0xff, 0x90, 0xfd, 0xed, 0xfc, 0x56, 0xfc, 0x3e, 0xfa, 0x0f, 0xf9, + 0x96, 0xf7, 0x88, 0xf6, 0xbd, 0xf5, 0x58, 0xf5, 0xa4, 0xf5, 0xf1, 0xf6, 0x92, 0xf8, 0xf6, 0xf9, + 0xa5, 0xfb, 0x5a, 0xfd, 0x25, 0xff, 0x42, 0x01, 0x81, 0x03, 0x33, 0x06, 0xa6, 0x07, 0x9c, 0x08, + 0x4f, 0x0a, 0x01, 0x0c, 0x04, 0x0d, 0x2a, 0x0c, 0xfa, 0x0a, 0x70, 0x09, 0xfe, 0x07, 0x65, 0x07, + 0xdb, 0x06, 0x09, 0x07, 0x99, 0x07, 0x7a, 0x07, 0xad, 0x07, 0xd2, 0x07, 0x2a, 0x07, 0x55, 0x06, + 0x9a, 0x04, 0xe1, 0x01, 0x26, 0x00, 0x01, 0xfc, 0x19, 0xf9, 0xf5, 0xf7, 0xd4, 0xf5, 0x7d, 0xf4, + 0xbb, 0xf3, 0x8c, 0xf3, 0xed, 0xf3, 0xae, 0xf4, 0xb0, 0xf4, 0x48, 0xf5, 0x58, 0xf7, 0x06, 0xf9, + 0xf8, 0xfa, 0x78, 0xfc, 0xdd, 0xfe, 0x5d, 0x00, 0x5a, 0x00, 0x89, 0x00, 0xf9, 0x00, 0xcb, 0x00, + 0xfe, 0xff, 0x3b, 0xff, 0x82, 0xff, 0xbb, 0x00, 0x3e, 0x01, 0xc2, 0x01, 0x46, 0x01, 0x45, 0x00, + 0x18, 0x00, 0x8e, 0xff, 0x7f, 0x00, 0x47, 0x01, 0x53, 0x02, 0x5a, 0x04, 0xfd, 0x05, 0x49, 0x08, + 0xfe, 0x08, 0x7a, 0x0a, 0x67, 0x0b, 0xb8, 0x0a, 0x13, 0x09, 0x08, 0x08, 0x0c, 0x07, 0xb8, 0x05, + 0x91, 0x05, 0x20, 0x04, 0xc3, 0x03, 0x67, 0x03, 0x99, 0x02, 0x88, 0x02, 0x95, 0x01, 0x0c, 0x01, + 0xd8, 0xff, 0xe5, 0xfd, 0xdc, 0xfc, 0xe7, 0xfb, 0x97, 0xfa, 0x67, 0xfa, 0x16, 0xfa, 0x97, 0xf8, + 0x0f, 0xf8, 0xcd, 0xf7, 0x3d, 0xf8, 0x03, 0xf8, 0x36, 0xf7, 0x03, 0xf8, 0x6f, 0xf9, 0xf7, 0xfa, + 0xaa, 0xfb, 0x79, 0xfc, 0x1d, 0xfd, 0x77, 0xfe, 0x26, 0xff, 0x9b, 0xff, 0xfa, 0x00, 0x1b, 0x02, + 0xa4, 0x03, 0x3a, 0x04, 0xbd, 0x04, 0xf4, 0x05, 0x6d, 0x06, 0xdc, 0x06, 0x32, 0x06, 0x7c, 0x05, + 0xe4, 0x05, 0xc3, 0x05, 0xf4, 0x05, 0x04, 0x06, 0x57, 0x05, 0x29, 0x05, 0xc6, 0x04, 0x11, 0x03, + 0x6e, 0x01, 0xdd, 0xfe, 0x84, 0xfc, 0xf0, 0xfa, 0xce, 0xf8, 0x75, 0xf8, 0xe3, 0xf8, 0x15, 0xfa, + 0x14, 0xfb, 0x3c, 0xfb, 0x7b, 0xfc, 0x2f, 0xfd, 0xb8, 0xfd, 0xce, 0xfd, 0x41, 0xfd, 0x01, 0xfc, + 0x07, 0xfb, 0x7f, 0xfa, 0x0c, 0xfa, 0xaf, 0xfa, 0x60, 0xfa, 0x56, 0xfa, 0xfe, 0xfb, 0xb1, 0xfd, + 0xa1, 0xff, 0xfb, 0x00, 0xf4, 0x02, 0x2f, 0x05, 0x4b, 0x06, 0xee, 0x06, 0x4c, 0x08, 0x26, 0x08, + 0xc7, 0x07, 0x2b, 0x07, 0xdb, 0x04, 0x62, 0x04, 0x54, 0x02, 0xda, 0x00, 0x82, 0x00, 0xf1, 0xff, + 0xae, 0xff, 0x93, 0xfe, 0x92, 0xfe, 0x24, 0xfe, 0xd1, 0xfd, 0x24, 0xfd, 0x51, 0xfd, 0x84, 0xfe, + 0x38, 0xff, 0xf2, 0xff, 0x7c, 0x00, 0x37, 0x02, 0x24, 0x03, 0xa7, 0x03, 0x22, 0x03, 0xf5, 0x01, + 0x05, 0x02, 0x62, 0x00, 0x05, 0xff, 0x52, 0xfe, 0x5a, 0xfe, 0x1b, 0xff, 0x4b, 0xff, 0x95, 0xff, + 0xd8, 0xfe, 0xe9, 0xfe, 0x7e, 0xfe, 0xc6, 0xfe, 0xb3, 0xfd, 0x64, 0xfc, 0x0f, 0xfc, 0x0a, 0xfb, + 0xef, 0xfa, 0x12, 0xfa, 0x50, 0xf9, 0x74, 0xf9, 0xd6, 0xf9, 0x02, 0xfa, 0x61, 0xfa, 0x7c, 0xfb, + 0xaa, 0xfc, 0x5c, 0xfe, 0xb5, 0xfe, 0xd8, 0xff, 0xa4, 0x01, 0x4a, 0x02, 0x87, 0x03, 0x37, 0x04, + 0x2a, 0x05, 0xbf, 0x05, 0x70, 0x05, 0x8b, 0x05, 0x29, 0x06, 0x66, 0x06, 0x02, 0x07, 0xe8, 0x07, + 0x30, 0x07, 0x62, 0x06, 0x74, 0x04, 0xba, 0x03, 0xbc, 0x03, 0x74, 0x02, 0x1c, 0x02, 0x75, 0x02, + 0xe4, 0x03, 0xb0, 0x03, 0x82, 0x03, 0x7c, 0x03, 0x09, 0x03, 0xdd, 0x02, 0xb6, 0x01, 0xf6, 0x00, + 0xff, 0x00, 0x76, 0x00, 0xf5, 0xff, 0x9d, 0xff, 0xc4, 0xff, 0xf2, 0xff, 0xf0, 0x00, 0x07, 0x01, + 0x3f, 0x01, 0xf7, 0x01, 0xad, 0x00, 0xbf, 0xff, 0xe1, 0xfe, 0x3c, 0xfd, 0xfb, 0xfb, 0x71, 0xfb, + 0x95, 0xf9, 0xe0, 0xf7, 0x7f, 0xf6, 0x8f, 0xf5, 0xa3, 0xf5, 0x1d, 0xf5, 0xef, 0xf5, 0x1b, 0xf7, + 0xde, 0xf8, 0x9b, 0xfa, 0xbb, 0xfb, 0x03, 0xfd, 0xb1, 0xfd, 0xa8, 0xfe, 0x5a, 0xff, 0x94, 0xff, + 0x9f, 0xff, 0x37, 0xff, 0xc7, 0xff, 0xf4, 0xff, 0x6e, 0x01, 0x57, 0x02, 0xb8, 0x02, 0xa9, 0x03, + 0xc6, 0x03, 0x0f, 0x05, 0xd3, 0x05, 0x76, 0x07, 0xe4, 0x08, 0x99, 0x0a, 0xbb, 0x0b, 0x9a, 0x0c, + 0xb3, 0x0d, 0x5c, 0x0d, 0xd2, 0x0c, 0x95, 0x0a, 0x92, 0x09, 0xf8, 0x07, 0x5d, 0x05, 0xc2, 0x03, + 0x9f, 0x02, 0x3e, 0x01, 0xac, 0xff, 0xcc, 0xfe, 0xfa, 0xfd, 0xe0, 0xfd, 0x38, 0xfd, 0xe4, 0xfb, + 0xe9, 0xfa, 0x33, 0xf9, 0xcf, 0xf7, 0xda, 0xf5, 0xe6, 0xf4, 0x70, 0xf4, 0x41, 0xf3, 0x5a, 0xf2, + 0x06, 0xf1, 0x92, 0xf1, 0x66, 0xf1, 0xb7, 0xf1, 0xd4, 0xf2, 0xb7, 0xf4, 0xe8, 0xf6, 0x13, 0xf9, + 0x35, 0xfb, 0x5e, 0xfb, 0xb4, 0xfc, 0x7c, 0xfd, 0x21, 0xff, 0xc4, 0x00, 0x3e, 0x01, 0x97, 0x02, + 0xf3, 0x03, 0xa0, 0x05, 0x90, 0x06, 0x64, 0x07, 0xe4, 0x08, 0xfc, 0x09, 0xc4, 0x09, 0x6a, 0x09, + 0xbe, 0x09, 0x4b, 0x09, 0xa3, 0x09, 0x47, 0x09, 0x69, 0x08, 0xb1, 0x08, 0x44, 0x08, 0xb7, 0x07, + 0xc2, 0x06, 0x8d, 0x05, 0xa0, 0x04, 0xeb, 0x02, 0xef, 0x00, 0xc3, 0xff, 0x33, 0xff, 0x3c, 0xfe, + 0x32, 0xfe, 0x9a, 0xfd, 0x9d, 0xfc, 0xc9, 0xfb, 0x92, 0xfb, 0x1b, 0xfc, 0xfc, 0xfa, 0xae, 0xf9, + 0xa3, 0xf8, 0xc1, 0xf8, 0xd4, 0xf8, 0x2a, 0xf8, 0x43, 0xf7, 0x5f, 0xf6, 0xd4, 0xf6, 0xa6, 0xf6, + 0xfa, 0xf6, 0xe9, 0xf8, 0x09, 0xfb, 0x23, 0xfd, 0x55, 0xfe, 0xcb, 0xff, 0x19, 0x01, 0x87, 0x02, + 0x2e, 0x03, 0x0c, 0x03, 0x01, 0x04, 0xa4, 0x03, 0x47, 0x03, 0x13, 0x03, 0x7c, 0x02, 0x08, 0x02, + 0x04, 0x02, 0x04, 0x02, 0xe9, 0x01, 0x4a, 0x01, 0xa3, 0xff, 0x49, 0xff, 0x54, 0xfe, 0x48, 0xfd, + 0xae, 0xfd, 0xe1, 0xfe, 0x6a, 0x00, 0x78, 0x01, 0x10, 0x03, 0x2b, 0x04, 0x4f, 0x04, 0x4c, 0x04, + 0x60, 0x04, 0x3f, 0x04, 0x1d, 0x03, 0x1d, 0x03, 0x7d, 0x02, 0xe5, 0x02, 0x51, 0x03, 0xc3, 0x02, + 0x0f, 0x03, 0x9b, 0x03, 0x92, 0x05, 0x3b, 0x06, 0x25, 0x07, 0x04, 0x07, 0x48, 0x06, 0x26, 0x05, + 0xff, 0x03, 0xfd, 0x02, 0x3d, 0x01, 0xab, 0xff, 0x28, 0xfd, 0xfd, 0xfb, 0xda, 0xfa, 0xb1, 0xf9, + 0xc5, 0xf9, 0xf0, 0xf9, 0xc1, 0xfa, 0x4d, 0xfb, 0xb0, 0xfb, 0xce, 0xfb, 0x14, 0xfc, 0x7b, 0xfc, + 0xae, 0xfc, 0x45, 0xfd, 0x67, 0xfd, 0x15, 0xfe, 0x55, 0xfe, 0xa5, 0xfe, 0x51, 0xff, 0x02, 0x00, + 0x77, 0x01, 0x12, 0x01, 0x8f, 0x01, 0x31, 0x02, 0x0e, 0x02, 0xf4, 0x01, 0xbd, 0x02, 0x80, 0x03, + 0x99, 0x04, 0xa6, 0x05, 0x09, 0x06, 0x1c, 0x06, 0xc7, 0x04, 0x55, 0x04, 0xbb, 0x03, 0x67, 0x02, + 0x79, 0x01, 0xd3, 0x00, 0xc5, 0x00, 0x6a, 0x00, 0xb2, 0xff, 0xae, 0xff, 0xc8, 0xff, 0x20, 0x00, + 0xc2, 0x00, 0xd3, 0x01, 0x88, 0x02, 0xd5, 0x02, 0xd3, 0x01, 0x0d, 0x00, 0x74, 0xff, 0x44, 0xfe, + 0x27, 0xfd, 0x5a, 0xfc, 0x99, 0xfb, 0x92, 0xfb, 0xa1, 0xfa, 0x4c, 0xfa, 0xe5, 0xfa, 0x1a, 0xfc, + 0x86, 0xfd, 0xf5, 0xfe, 0x06, 0x00, 0x0d, 0x00, 0x00, 0xff, 0x74, 0xfe, 0xa1, 0xfe, 0x5f, 0xfe, + 0x61, 0xfd, 0xb1, 0xfc, 0x29, 0xfd, 0xfb, 0xfd, 0x7c, 0xfd, 0x7a, 0xfd, 0xdf, 0xfd, 0x62, 0xfe, + 0x18, 0xff, 0x65, 0xff, 0x77, 0x00, 0x9f, 0x01, 0x94, 0x02, 0x0a, 0x03, 0x09, 0x04, 0x1b, 0x05, + 0x0f, 0x07, 0x27, 0x08, 0x13, 0x08, 0x25, 0x09, 0xa5, 0x08, 0x72, 0x07, 0x9d, 0x06, 0x81, 0x05, + 0x5d, 0x04, 0x91, 0x03, 0x84, 0x02, 0xc1, 0x00, 0x79, 0xff, 0xb4, 0xfd, 0x10, 0xfd, 0x59, 0xfc, + 0xfc, 0xfa, 0xdf, 0xf9, 0xce, 0xf8, 0x6e, 0xf8, 0x80, 0xf7, 0x33, 0xf6, 0x41, 0xf5, 0x54, 0xf4, + 0xa5, 0xf3, 0x45, 0xf3, 0x75, 0xf3, 0x22, 0xf3, 0x5f, 0xf4, 0x5c, 0xf5, 0x06, 0xf7, 0x6a, 0xf9, + 0x36, 0xfb, 0xc0, 0xfc, 0x94, 0xfd, 0xca, 0xff, 0x82, 0x01, 0xc7, 0x03, 0x6b, 0x05, 0x26, 0x07, + 0x13, 0x09, 0xa3, 0x09, 0x07, 0x0a, 0xf7, 0x0a, 0x2d, 0x0b, 0x54, 0x0a, 0xe5, 0x09, 0x6d, 0x09, + 0xaa, 0x08, 0xc7, 0x07, 0xd0, 0x06, 0x9b, 0x06, 0xcb, 0x05, 0x20, 0x05, 0xb9, 0x04, 0x45, 0x04, + 0xc4, 0x03, 0xa5, 0x02, 0x35, 0x01, 0x4f, 0xff, 0xec, 0xfd, 0x5f, 0xfc, 0x3b, 0xfb, 0xce, 0xfa, + 0x5c, 0xfa, 0x25, 0xfa, 0x35, 0xf9, 0x31, 0xf9, 0x28, 0xfa, 0x01, 0xfb, 0xc3, 0xfb, 0x4f, 0xfc, + 0xd7, 0xfc, 0x48, 0xfd, 0xb4, 0xfd, 0x81, 0xfd, 0xb2, 0xfc, 0xc5, 0xfb, 0x24, 0xfb, 0xd5, 0xfa, + 0xea, 0xfa, 0xe8, 0xfa, 0x72, 0xfb, 0xfb, 0xfc, 0xdf, 0xfe, 0x77, 0x00, 0x59, 0x02, 0xad, 0x03, + 0x3a, 0x04, 0xb3, 0x04, 0xe2, 0x04, 0x0a, 0x05, 0x10, 0x05, 0x39, 0x05, 0xbc, 0x04, 0xce, 0x03, + 0x22, 0x03, 0xff, 0x02, 0xc8, 0x02, 0x5f, 0x02, 0x58, 0x02, 0x18, 0x02, 0xba, 0x01, 0xa1, 0x01, + 0x73, 0x02, 0x54, 0x03, 0xc6, 0x03, 0x28, 0x05, 0x5b, 0x06, 0x58, 0x06, 0x20, 0x06, 0x70, 0x06, + 0xfd, 0x05, 0x59, 0x04, 0xb8, 0x02, 0xa3, 0x01, 0xd9, 0x01, 0x96, 0x01, 0xca, 0x00, 0x5c, 0xff, + 0x59, 0xfe, 0xc2, 0xfd, 0x1f, 0xfd, 0xe0, 0xfd, 0xed, 0xfe, 0xa1, 0xff, 0x26, 0xff, 0x92, 0xfe, + 0x85, 0xfd, 0x30, 0xfd, 0x8e, 0xfc, 0xd8, 0xfa, 0x32, 0xfa, 0x29, 0xf9, 0x3f, 0xf8, 0xd5, 0xf7, + 0xce, 0xf7, 0xf4, 0xf7, 0xb3, 0xf8, 0xdc, 0xf9, 0x3a, 0xfb, 0x37, 0xfc, 0x12, 0xfc, 0x30, 0xfc, + 0x74, 0xfc, 0xea, 0xfb, 0x51, 0xfb, 0x31, 0xfc, 0xd9, 0xfd, 0xbe, 0xfe, 0x84, 0xff, 0x69, 0x00, + 0xfd, 0x00, 0x95, 0x01, 0x11, 0x02, 0x76, 0x02, 0xe6, 0x02, 0xef, 0x03, 0x70, 0x04, 0xd0, 0x04, + 0x09, 0x05, 0xfe, 0x05, 0xce, 0x06, 0x00, 0x07, 0xfd, 0x07, 0xba, 0x08, 0x3f, 0x09, 0x6a, 0x09, + 0x52, 0x09, 0x06, 0x09, 0xa0, 0x08, 0x01, 0x08, 0xe4, 0x07, 0x19, 0x07, 0xde, 0x04, 0x36, 0x03, + 0x37, 0x02, 0x66, 0x01, 0x97, 0x00, 0x9a, 0xff, 0xc2, 0xfe, 0x53, 0xfe, 0xb6, 0xfc, 0xe8, 0xfa, + 0xfd, 0xf8, 0x8f, 0xf7, 0x18, 0xf6, 0x5e, 0xf4, 0xc0, 0xf2, 0x3e, 0xf2, 0x78, 0xf2, 0x07, 0xf3, + 0xd4, 0xf3, 0x6d, 0xf5, 0xd4, 0xf7, 0xef, 0xf8, 0x6d, 0xf9, 0xb6, 0xfa, 0xdd, 0xfb, 0x04, 0xfc, + 0x95, 0xfc, 0x76, 0xfd, 0xb6, 0xfe, 0x79, 0xff, 0x73, 0x00, 0xbd, 0x00, 0x44, 0x00, 0x09, 0x00, + 0xf0, 0xff, 0x93, 0x00, 0x99, 0x00, 0x65, 0x01, 0x10, 0x03, 0x41, 0x04, 0x2c, 0x05, 0x94, 0x06, + 0xd7, 0x07, 0x22, 0x09, 0x5a, 0x0a, 0xec, 0x0a, 0x26, 0x0b, 0x4b, 0x0b, 0xd1, 0x0a, 0x6d, 0x09, + 0xe7, 0x07, 0xc7, 0x06, 0x0c, 0x06, 0xc2, 0x04, 0xb2, 0x03, 0xf2, 0x02, 0x25, 0x02, 0xaf, 0x01, + 0x80, 0x01, 0x5e, 0x01, 0x6e, 0x01, 0x3e, 0x01, 0xb7, 0x00, 0xde, 0xff, 0xf4, 0xfd, 0x56, 0xfb, + 0x66, 0xf9, 0xd0, 0xf7, 0xfc, 0xf5, 0x79, 0xf4, 0xa3, 0xf3, 0x77, 0xf4, 0x3f, 0xf5, 0x81, 0xf6, + 0x9a, 0xf7, 0x94, 0xf8, 0xa5, 0xf9, 0x3a, 0xfb, 0x9f, 0xfc, 0x1c, 0xfe, 0x00, 0x00, 0x68, 0x01, + 0x96, 0x02, 0x55, 0x03, 0x0f, 0x05, 0x32, 0x06, 0x43, 0x06, 0xff, 0x06, 0x64, 0x07, 0xfa, 0x06, + 0xd8, 0x06, 0x77, 0x07, 0x7a, 0x07, 0x6d, 0x07, 0x39, 0x07, 0x2e, 0x07, 0xed, 0x06, 0x14, 0x06, + 0x6b, 0x05, 0xbc, 0x04, 0x7b, 0x03, 0x7a, 0x01, 0x0b, 0x00, 0x52, 0xff, 0xc1, 0xfe, 0x28, 0xfe, + 0x90, 0xfd, 0xc7, 0xfc, 0x01, 0xfc, 0x88, 0xfb, 0xfb, 0xfa, 0x7b, 0xfb, 0x38, 0xfc, 0x7b, 0xfc, + 0x04, 0xfd, 0xe4, 0xfc, 0x83, 0xfd, 0x8e, 0xfd, 0x8e, 0xfc, 0x23, 0xfc, 0x10, 0xfc, 0xa7, 0xfb, + 0xd5, 0xfb, 0x8e, 0xfc, 0xb4, 0xfd, 0x2c, 0xff, 0xe1, 0xff, 0x14, 0x02, 0xb5, 0x03, 0xb9, 0x03, + 0x01, 0x04, 0x14, 0x04, 0x33, 0x04, 0x3c, 0x03, 0x83, 0x02, 0xd5, 0x01, 0xa3, 0x01, 0xe4, 0x00, + 0xba, 0xff, 0xf0, 0xfe, 0x4c, 0xfe, 0x16, 0xfe, 0xbf, 0xfc, 0x0e, 0xfb, 0x92, 0xfa, 0x7a, 0xfa, + 0xe5, 0xfa, 0xb4, 0xfa, 0x84, 0xfb, 0x1c, 0xfd, 0xf5, 0xfd, 0x8d, 0xfe, 0xff, 0xff, 0xef, 0x00, + 0xa0, 0x01, 0x6e, 0x02, 0x94, 0x02, 0x57, 0x03, 0x47, 0x03, 0xac, 0x03, 0xc7, 0x03, 0x2a, 0x03, + 0x40, 0x02, 0xf9, 0x00, 0x03, 0x01, 0x3b, 0x01, 0x0f, 0x01, 0x5d, 0x01, 0x09, 0x02, 0x1c, 0x02, + 0x80, 0x02, 0xc9, 0x01, 0x51, 0x00, 0x23, 0xff, 0xb2, 0xfd, 0xac, 0xfb, 0x4b, 0xfa, 0x38, 0xf9, + 0x9b, 0xf8, 0xb3, 0xf7, 0xc3, 0xf6, 0xa2, 0xf7, 0x4b, 0xf8, 0x9e, 0xf8, 0x8e, 0xf9, 0xc6, 0xfa, + 0x7e, 0xfb, 0xf4, 0xfb, 0xfa, 0xfc, 0xcb, 0xfe, 0xeb, 0xff, 0xf5, 0x00, 0xc6, 0x02, 0x49, 0x03, + 0x68, 0x03, 0x52, 0x03, 0x14, 0x03, 0x7f, 0x02, 0x96, 0x01, 0x1f, 0x01, 0xda, 0x01, 0xbf, 0x02, + 0x28, 0x03, 0x27, 0x03, 0xe4, 0x02, 0xd5, 0x02, 0x0f, 0x03, 0xc7, 0x02, 0x4d, 0x03, 0x1a, 0x04, + 0x67, 0x04, 0x34, 0x04, 0x29, 0x03, 0x33, 0x03, 0x20, 0x03, 0x60, 0x02, 0x7d, 0x01, 0xab, 0x00, + 0x3c, 0x00, 0x2d, 0x00, 0x90, 0x00, 0xe8, 0x00, 0xfb, 0x00, 0xf2, 0x00, 0x4c, 0x01, 0xf4, 0x00, + 0xde, 0xff, 0xb2, 0xfe, 0xf7, 0xfc, 0x56, 0xfb, 0xa5, 0xf8, 0x9f, 0xf6, 0xcc, 0xf6, 0xed, 0xf6, + 0x87, 0xf7, 0xfe, 0xf8, 0xb9, 0xf9, 0x38, 0xfa, 0x70, 0xfb, 0xd6, 0xfb, 0xf5, 0xfc, 0xe0, 0xfd, + 0xb0, 0xfe, 0x0c, 0x00, 0xaf, 0xff, 0x6d, 0x00, 0x14, 0x01, 0xe6, 0x00, 0x7f, 0x01, 0xb6, 0x02, + 0x6f, 0x03, 0xd3, 0x03, 0x99, 0x04, 0xbb, 0x05, 0x4c, 0x07, 0x2f, 0x08, 0x01, 0x0a, 0x66, 0x0b, + 0xcc, 0x0b, 0x69, 0x0c, 0xf4, 0x0b, 0x37, 0x0c, 0x0c, 0x0c, 0xdf, 0x0a, 0xff, 0x09, 0x31, 0x09, + 0x22, 0x08, 0x68, 0x06, 0xab, 0x04, 0x2b, 0x03, 0xdf, 0x01, 0xe6, 0xff, 0x30, 0xfe, 0x19, 0xfd, + 0x7a, 0xfc, 0xd8, 0xfc, 0x96, 0xfb, 0x0f, 0xfb, 0x25, 0xfb, 0x4c, 0xfa, 0xef, 0xf9, 0x01, 0xf9, + 0x21, 0xf8, 0x55, 0xf6, 0xfd, 0xf4, 0x2b, 0xf4, 0xf5, 0xf4, 0x0b, 0xf5, 0x65, 0xf6, 0xcc, 0xf7, + 0xda, 0xf8, 0x1b, 0xfa, 0x68, 0xfa, 0xcd, 0xfb, 0xf1, 0xfc, 0xf8, 0xfd, 0x89, 0xff, 0x87, 0x01, + 0x5c, 0x03, 0x92, 0x05, 0x12, 0x07, 0x24, 0x07, 0xcc, 0x07, 0x3b, 0x08, 0x49, 0x08, 0x61, 0x08, + 0x35, 0x08, 0x34, 0x08, 0x15, 0x07, 0x0b, 0x06, 0x9f, 0x05, 0x21, 0x05, 0xf1, 0x04, 0x93, 0x05, + 0x65, 0x05, 0x4e, 0x05, 0xaf, 0x04, 0x8b, 0x03, 0x98, 0x03, 0xf4, 0x02, 0x66, 0x02, 0xe7, 0x01, + 0x0e, 0x01, 0x05, 0x00, 0xfd, 0xfd, 0x1f, 0xfd, 0x2d, 0xfb, 0xc3, 0xf9, 0x1b, 0xfa, 0x88, 0xfa, + 0x35, 0xfc, 0x53, 0xfd, 0xb3, 0xfd, 0x60, 0xfe, 0xb1, 0xfd, 0x55, 0xfe, 0x65, 0xfd, 0x8b, 0xfb, + 0x09, 0xfd, 0x1a, 0xfe, 0x2a, 0xfd, 0x30, 0xfc, 0x41, 0xfc, 0x01, 0x00, 0x4c, 0x00, 0x8c, 0xff, + 0xd1, 0xfe, 0x03, 0xfe, 0x54, 0xff, 0x4e, 0x01, 0x6c, 0x01, 0xa2, 0x01, 0x2c, 0xff, 0x74, 0x00, + 0x2a, 0x01, 0x95, 0xff, 0xc6, 0xfd, 0x4f, 0xfb, 0x6c, 0xfa, 0x0a, 0xf8, 0xfe, 0xf6, 0xdd, 0xf6, + 0x25, 0xf6, 0xab, 0xf5, 0x02, 0xf7, 0x7f, 0xf8, 0x7d, 0xf8, 0x13, 0xfc, 0xbc, 0xfb, 0xe9, 0xfc, + 0x8b, 0xff, 0x09, 0xff, 0x64, 0x02, 0xe1, 0x03, 0xf1, 0x01, 0x30, 0x04, 0xb5, 0x04, 0xf3, 0x01, + 0x9b, 0x02, 0xca, 0x03, 0xa9, 0x02, 0x5f, 0x04, 0x49, 0x05, 0xdb, 0x06, 0x21, 0x08, 0x95, 0x08, + 0x35, 0x0c, 0x96, 0x0b, 0x18, 0x0a, 0xde, 0x09, 0xdc, 0x06, 0x11, 0x07, 0xb9, 0x05, 0x01, 0x01, + 0x6a, 0xff, 0x9d, 0xfe, 0x91, 0xfa, 0x91, 0xfc, 0x93, 0xfc, 0xfa, 0xfa, 0x90, 0xfb, 0x66, 0xfb, + 0x68, 0xf9, 0x29, 0xfa, 0x1c, 0xfa, 0x4e, 0xfb, 0x46, 0xfd, 0xec, 0xfc, 0x1c, 0x00, 0x38, 0xff, + 0x02, 0xff, 0x7e, 0x04, 0xe3, 0x01, 0x1a, 0x02, 0x55, 0x03, 0x47, 0xff, 0xfc, 0x03, 0xb5, 0x03, + 0x4e, 0x01, 0x27, 0x06, 0x53, 0x02, 0x6e, 0x00, 0x60, 0x03, 0xc0, 0x02, 0x92, 0x03, 0x8b, 0x02, + 0x88, 0x01, 0x53, 0x03, 0xc8, 0x02, 0x88, 0x04, 0x0e, 0x05, 0x36, 0x06, 0x74, 0x04, 0xa3, 0x00, + 0xb8, 0xfe, 0xd3, 0xfe, 0x64, 0x00, 0xe3, 0xfe, 0x0c, 0xff, 0x33, 0xfd, 0x94, 0xfc, 0x92, 0xfd, + 0x43, 0xfc, 0x80, 0xfd, 0xa9, 0xfb, 0xa6, 0xfa, 0x09, 0xfb, 0x8f, 0xfc, 0x78, 0xfd, 0x63, 0xfc, + 0x52, 0xfc, 0xa4, 0xfd, 0x24, 0xfe, 0x15, 0x00, 0xae, 0x00, 0x6a, 0x00, 0xb0, 0xfe, 0xec, 0xfc, + 0x4a, 0xfc, 0x6b, 0xfd, 0xb8, 0xfe, 0x92, 0xfc, 0xe7, 0xfc, 0xc8, 0xfb, 0x24, 0xfc, 0x8f, 0xfc, + 0x71, 0xfa, 0x0d, 0xf9, 0x34, 0xfb, 0x45, 0xfd, 0x78, 0xfd, 0xf7, 0xff, 0xfa, 0xfe, 0xb3, 0xff, + 0x4a, 0x00, 0x3c, 0x01, 0x2c, 0x04, 0xd1, 0x02, 0x63, 0x03, 0x12, 0x06, 0xa0, 0x04, 0xf3, 0x05, + 0x79, 0x06, 0xec, 0x04, 0x5f, 0x07, 0x69, 0x06, 0xd4, 0x03, 0x30, 0x06, 0xe0, 0x01, 0xce, 0xfe, + 0x9c, 0xff, 0xe2, 0xfb, 0x8b, 0xfd, 0xf6, 0xfe, 0xa0, 0xfc, 0x45, 0xfd, 0x06, 0xfd, 0xf4, 0xf9, + 0x18, 0xfa, 0x53, 0xf9, 0x86, 0xf7, 0x0b, 0xf8, 0x32, 0xf5, 0xe5, 0xf3, 0x7e, 0xf5, 0x27, 0xf6, + 0x70, 0xf8, 0x58, 0xf9, 0xc0, 0xf9, 0xa0, 0xfb, 0x91, 0xfd, 0xae, 0xff, 0x4a, 0x04, 0x66, 0x05, + 0x9d, 0x01, 0xe0, 0x07, 0x31, 0x08, 0x50, 0x08, 0xf6, 0x0a, 0x26, 0x07, 0xe4, 0x08, 0xcd, 0x07, + 0xdc, 0x04, 0x2e, 0x07, 0x68, 0x06, 0x62, 0x04, 0x5a, 0x04, 0xe6, 0x05, 0xe3, 0x00, 0x8b, 0x04, + 0x83, 0x03, 0xb9, 0x02, 0x87, 0x03, 0x9a, 0xff, 0xe5, 0x01, 0x32, 0x02, 0x5b, 0x02, 0xbf, 0x02, + 0x58, 0x01, 0x07, 0x00, 0x9b, 0x01, 0x4e, 0x02, 0xc4, 0xfe, 0x81, 0x00, 0x88, 0x00, 0x67, 0x02, + 0xdf, 0x03, 0x29, 0x04, 0x88, 0x07, 0xee, 0x05, 0xc4, 0x07, 0x86, 0x08, 0x36, 0x05, 0x8c, 0x06, + 0x48, 0x06, 0x05, 0x04, 0x93, 0x01, 0x12, 0x03, 0x4b, 0x02, 0xed, 0x01, 0x9b, 0x02, 0x4c, 0x01, + 0xef, 0xff, 0xf1, 0xff, 0x60, 0x02, 0x4d, 0x01, 0xcc, 0xfe, 0x46, 0xfc, 0x4a, 0xfd, 0x1f, 0xfd, + 0x53, 0xf9, 0x26, 0xf9, 0x14, 0xf7, 0xd1, 0xf6, 0xcd, 0xf6, 0x13, 0xf5, 0x22, 0xf4, 0xfd, 0xf2, + 0xe7, 0xf3, 0x2c, 0xf6, 0x7c, 0xf7, 0x7e, 0xf7, 0xf1, 0xf8, 0xe3, 0xf8, 0xb6, 0xf8, 0xae, 0xf9, + 0xab, 0xf8, 0x9b, 0xfb, 0xd5, 0xfc, 0x44, 0xfd, 0x7b, 0xfe, 0xce, 0xfe, 0x80, 0x00, 0x19, 0x03, + 0xf8, 0x02, 0x30, 0x00, 0x8c, 0x01, 0x0f, 0x02, 0xec, 0x04, 0xd5, 0x06, 0xb0, 0x05, 0xe3, 0x07, + 0x35, 0x08, 0xb9, 0x09, 0xb2, 0x08, 0xf8, 0x08, 0x2e, 0x08, 0x98, 0x07, 0x68, 0x05, 0xac, 0x03, + 0x5d, 0x05, 0xdb, 0x04, 0x92, 0x04, 0x4b, 0x05, 0x1b, 0x04, 0xf0, 0x00, 0x49, 0xff, 0x9c, 0x02, + 0x96, 0xfe, 0xec, 0xfa, 0x9e, 0xfb, 0x22, 0xfd, 0xce, 0xfc, 0x04, 0xfe, 0xd6, 0xfd, 0x70, 0xfb, + 0xf3, 0xfc, 0xfd, 0xfd, 0xd4, 0xfd, 0xfb, 0xfd, 0xaf, 0xfa, 0x34, 0xfc, 0x4a, 0xfc, 0x4e, 0xfd, + 0xd7, 0xfe, 0x09, 0xfd, 0x70, 0xfc, 0x8f, 0xfc, 0x0c, 0xfc, 0xb0, 0xfc, 0x00, 0x00, 0x6b, 0xfe, + 0x31, 0xfe, 0xa2, 0xff, 0xa6, 0xfe, 0x83, 0x01, 0x7e, 0x02, 0x86, 0x00, 0x5f, 0xff, 0xa2, 0xfc, + 0xa5, 0xfa, 0xf6, 0xf9, 0x12, 0xf8, 0x5d, 0xf8, 0xbb, 0xf8, 0xb4, 0xf6, 0xae, 0xf8, 0xff, 0xfb, + 0x39, 0xfa, 0xe9, 0xfa, 0x9f, 0xf9, 0x20, 0xf9, 0x1c, 0xfa, 0x2f, 0xf9, 0x6b, 0xf9, 0x8e, 0xf9, + 0x2f, 0xf8, 0xe3, 0xf9, 0x59, 0xfa, 0x3c, 0xfb, 0x7f, 0xfd, 0x1e, 0xfd, 0xa3, 0xfe, 0x24, 0x00, + 0x99, 0x01, 0x69, 0x06, 0x86, 0x07, 0x49, 0x07, 0x97, 0x09, 0xa0, 0x09, 0x8b, 0x07, 0xc7, 0x08, + 0x94, 0x08, 0x56, 0x05, 0xdf, 0x03, 0xa9, 0x04, 0xe8, 0x06, 0x3b, 0x06, 0x3d, 0x05, 0x64, 0x05, + 0xd6, 0x05, 0x44, 0x06, 0x17, 0x08, 0x7e, 0x09, 0xe0, 0x09, 0x0c, 0x09, 0xf0, 0x08, 0x9e, 0x09, + 0xb9, 0x09, 0xd1, 0x08, 0x1b, 0x07, 0x49, 0x04, 0x98, 0x03, 0x65, 0x03, 0x9e, 0x00, 0x2f, 0xfe, + 0x9c, 0xfe, 0x77, 0xfd, 0x8f, 0xfd, 0x67, 0xff, 0x4e, 0xff, 0xdc, 0xfd, 0x11, 0xfc, 0x78, 0xfa, + 0x3a, 0xfa, 0x9e, 0xf9, 0x66, 0xf8, 0xe1, 0xf7, 0x38, 0xf8, 0xe1, 0xf6, 0x95, 0xf7, 0xd4, 0xf8, + 0x7a, 0xfa, 0x50, 0xfb, 0xd2, 0xfb, 0xcd, 0xfb, 0x41, 0xff, 0x38, 0x00, 0x01, 0x03, 0x13, 0x04, + 0xbe, 0x04, 0x5b, 0x06, 0xef, 0x04, 0xf3, 0x07, 0xea, 0x08, 0x06, 0x0b, 0x56, 0x0d, 0xa7, 0x08, + 0x90, 0x0a, 0xf8, 0x0d, 0x49, 0x0a, 0x69, 0x10, 0x1f, 0x0f, 0x50, 0x0c, 0x0f, 0x0e, 0x7c, 0x0d, + 0x81, 0x0e, 0xbb, 0x0d, 0xa1, 0x0a, 0x91, 0x0c, 0x49, 0x0a, 0x2b, 0x0b, 0x9d, 0x0a, 0xbc, 0x07, + 0x60, 0x05, 0xa9, 0x04, 0x7e, 0x05, 0xee, 0x03, 0x3f, 0xfc, 0xf1, 0xf9, 0x61, 0xfa, 0x27, 0xf8, + 0xfb, 0xf9, 0x91, 0xf7, 0x94, 0xf4, 0x89, 0xf4, 0xf8, 0xf4, 0xb4, 0xf4, 0x14, 0xf5, 0xe9, 0xf4, + 0x19, 0xf6, 0xcc, 0xf5, 0xb5, 0xf5, 0xf6, 0xf8, 0xde, 0xfa, 0xce, 0xf8, 0x47, 0xfa, 0xf1, 0xf8, + 0x92, 0xf7, 0xfa, 0xf8, 0xf0, 0xf9, 0xf9, 0xf9, 0x0c, 0xfa, 0x27, 0xfa, 0xcb, 0xf9, 0x0c, 0xf9, + 0xa9, 0xf7, 0xb8, 0xf6, 0x8a, 0xf4, 0xe3, 0xf1, 0xd7, 0xf3, 0x35, 0xf3, 0xf4, 0xf1, 0xf5, 0xf0, + 0xd7, 0xf0, 0xee, 0xef, 0xb5, 0xee, 0xae, 0xef, 0xf3, 0xf1, 0x70, 0xf2, 0x31, 0xf1, 0x08, 0xf6, + 0xf9, 0xf8, 0x5b, 0xfd, 0x39, 0x03, 0x28, 0x04, 0xd4, 0x06, 0x9c, 0x07, 0xca, 0x06, 0xee, 0x08, + 0xc8, 0x08, 0x0d, 0x08, 0x0e, 0x09, 0xeb, 0x07, 0xe8, 0x05, 0x0d, 0x07, 0x4b, 0x07, 0x33, 0x04, + 0xb5, 0xff, 0x2b, 0x00, 0xb5, 0x00, 0xc5, 0x02, 0xc6, 0x04, 0x76, 0x04, 0xd6, 0x03, 0xa3, 0x01, + 0x82, 0x02, 0x6a, 0xfe, 0x3f, 0xfa, 0x0f, 0xf9, 0x36, 0xf7, 0x43, 0xfa, 0xdb, 0xfb, 0xbd, 0xfb, + 0xe9, 0xfe, 0xe3, 0xfe, 0x1b, 0xfe, 0x3e, 0x02, 0x56, 0x00, 0x25, 0x00, 0xb9, 0xfe, 0x36, 0xff, + 0xee, 0xfd, 0xe0, 0xff, 0xe8, 0xff, 0x63, 0xff, 0x69, 0xfb, 0xc4, 0xfa, 0x77, 0xf7, 0x98, 0xf2, + 0xce, 0xf2, 0x25, 0xf2, 0x15, 0xf1, 0xce, 0xed, 0xf8, 0xed, 0xab, 0xf1, 0x30, 0xef, 0xeb, 0xf1, + 0xeb, 0xf2, 0xd2, 0xf7, 0x7b, 0xfb, 0xac, 0xf9, 0xf8, 0xfc, 0xe9, 0xfb, 0x25, 0x00, 0xb9, 0x04, + 0x4d, 0x07, 0x31, 0x0b, 0x4b, 0x0b, 0x19, 0x12, 0x20, 0x14, 0xf1, 0x11, 0x05, 0x14, 0x03, 0x15, + 0x99, 0x1c, 0xbf, 0x1d, 0x51, 0x1b, 0x5c, 0x20, 0xef, 0x1e, 0x54, 0x21, 0xfd, 0x25, 0x20, 0x25, + 0x6b, 0x24, 0x2c, 0x21, 0x7d, 0x21, 0xb4, 0x1d, 0x0c, 0x18, 0xa5, 0x16, 0x5a, 0x13, 0xc2, 0x12, + 0x3a, 0x0f, 0x8d, 0x0c, 0xd3, 0x07, 0xb5, 0x04, 0xbe, 0x02, 0x3a, 0x02, 0x97, 0xfe, 0xaa, 0xfb, + 0xc8, 0xf8, 0xef, 0xf3, 0x57, 0xee, 0x2f, 0xed, 0x1e, 0xee, 0x53, 0xeb, 0xc4, 0xea, 0x05, 0xe8, + 0x78, 0xe4, 0x21, 0xe3, 0xac, 0xe4, 0x31, 0xe8, 0x5d, 0xe9, 0x4d, 0xed, 0x2e, 0xee, 0x40, 0xf2, + 0x8a, 0xf6, 0xeb, 0xf5, 0x25, 0xf9, 0xed, 0xfd, 0x8d, 0xff, 0x3a, 0x03, 0x95, 0x03, 0x9c, 0x02, + 0xb5, 0x05, 0xd6, 0x07, 0xbb, 0x0a, 0xbd, 0x08, 0x60, 0x09, 0x5c, 0x0c, 0x90, 0x08, 0x83, 0x0b, + 0xb2, 0x0f, 0x06, 0x10, 0xe8, 0x12, 0x2f, 0x17, 0xd2, 0x14, 0xdf, 0x0e, 0x1a, 0x0d, 0xfc, 0x0e, + 0xc2, 0x0b, 0x61, 0x0a, 0xea, 0x02, 0x65, 0x01, 0x8e, 0xfa, 0xd7, 0xf1, 0xf7, 0xf3, 0x5d, 0xf0, + 0x17, 0xf2, 0x2d, 0xf1, 0xe0, 0xf1, 0x0c, 0xf7, 0xc9, 0xf6, 0x75, 0xf8, 0xcf, 0xfc, 0x67, 0xff, + 0x2d, 0x02, 0x9f, 0x03, 0xbe, 0x04, 0x0d, 0x02, 0x90, 0xff, 0xd7, 0x02, 0x2f, 0x04, 0x18, 0x07, + 0xea, 0x05, 0x3b, 0x05, 0x2e, 0x08, 0x79, 0x09, 0x38, 0x0f, 0x65, 0x12, 0xad, 0x10, 0x82, 0x14, + 0x26, 0x12, 0x9d, 0x0f, 0x1a, 0x14, 0xf1, 0x17, 0x1b, 0x18, 0x4e, 0x17, 0x18, 0x17, 0x7c, 0x10, + 0x28, 0x09, 0x0e, 0x06, 0xad, 0x01, 0x24, 0xff, 0x6e, 0xf9, 0xdc, 0xf6, 0x1b, 0xf5, 0x58, 0xec, + 0x3f, 0xe7, 0xba, 0xdf, 0x93, 0xda, 0xe4, 0xd7, 0x80, 0xd6, 0xa1, 0xd7, 0x35, 0xd6, 0xa2, 0xd3, + 0x82, 0xd5, 0xf6, 0xd8, 0x3b, 0xdc, 0x44, 0xe2, 0xcb, 0xe5, 0x12, 0xea, 0x95, 0xea, 0xed, 0xe9, + 0x64, 0xef, 0x64, 0xf4, 0x63, 0xf5, 0x8b, 0xf5, 0x8c, 0xf8, 0x45, 0xf8, 0x5e, 0xfb, 0xbe, 0x00, + 0x1e, 0x00, 0x38, 0x02, 0x8a, 0x05, 0xc4, 0x04, 0x50, 0x08, 0x4c, 0x0b, 0x10, 0x0f, 0xf7, 0x12, + 0x08, 0x1b, 0xb9, 0x20, 0x4b, 0x1c, 0x55, 0x17, 0x9e, 0x13, 0xb2, 0x13, 0xa3, 0x0e, 0xcb, 0x09, + 0xd8, 0x07, 0xc9, 0x00, 0x2f, 0xf8, 0xdc, 0xee, 0x29, 0xe9, 0xcd, 0xe6, 0x72, 0xe4, 0x22, 0xe1, + 0x6c, 0xe2, 0x68, 0xdf, 0x50, 0xde, 0x25, 0xe1, 0x9d, 0xe6, 0x97, 0xea, 0xaa, 0xea, 0xfd, 0xed, + 0xaf, 0xf1, 0xfb, 0xf0, 0x39, 0xf0, 0x77, 0xf4, 0x13, 0xf9, 0xf6, 0xf8, 0xb5, 0xfa, 0x6c, 0xfb, + 0x20, 0xfc, 0x8b, 0x01, 0x02, 0x05, 0xd1, 0x08, 0xf5, 0x0d, 0xbd, 0x10, 0xda, 0x10, 0x66, 0x11, + 0x82, 0x17, 0xf4, 0x19, 0x18, 0x20, 0x30, 0x29, 0xc6, 0x2c, 0xe6, 0x29, 0x8f, 0x21, 0xd3, 0x20, + 0x13, 0x1e, 0x50, 0x16, 0x64, 0x13, 0x3d, 0x0e, 0xa4, 0x08, 0xbe, 0x02, 0x76, 0xfb, 0x35, 0xf4, + 0xf3, 0xf2, 0xd7, 0xec, 0x0c, 0xeb, 0x3d, 0xed, 0x8c, 0xeb, 0xaf, 0xea, 0x3f, 0xed, 0x44, 0xf0, + 0x3d, 0xf2, 0xa3, 0xf3, 0x50, 0xf8, 0x6b, 0xfb, 0xc9, 0xf8, 0x8d, 0xf7, 0xa9, 0xfa, 0xa5, 0xfd, + 0x41, 0xfe, 0x8a, 0x00, 0xbb, 0xfe, 0x3d, 0xfd, 0xb2, 0x00, 0x4f, 0x02, 0x3f, 0x07, 0xc3, 0x0a, + 0xdb, 0x0b, 0x7e, 0x0a, 0xdc, 0x0c, 0xe5, 0x0f, 0x45, 0x13, 0x97, 0x1a, 0xf1, 0x1e, 0x4d, 0x22, + 0xff, 0x20, 0x3f, 0x1e, 0x69, 0x1f, 0x03, 0x1d, 0xd4, 0x17, 0xab, 0x15, 0xa8, 0x10, 0xa2, 0x0b, + 0xde, 0x03, 0x9e, 0xf8, 0xde, 0xf3, 0x17, 0xef, 0xe7, 0xec, 0x00, 0xee, 0x5c, 0xee, 0x89, 0xee, + 0x44, 0xf1, 0x4a, 0xf5, 0x39, 0xfb, 0xf9, 0x00, 0xe8, 0x05, 0xfa, 0x0c, 0x8c, 0x10, 0x3b, 0x0f, + 0xcd, 0x11, 0x68, 0x16, 0x43, 0x18, 0xfe, 0x1b, 0xc7, 0x1c, 0x3e, 0x1c, 0x3d, 0x1a, 0xe7, 0x18, + 0xe6, 0x1a, 0x83, 0x1b, 0x1d, 0x1c, 0x97, 0x19, 0xae, 0x19, 0x9e, 0x18, 0xd6, 0x15, 0x61, 0x18, + 0x3a, 0x18, 0x36, 0x1c, 0x2b, 0x1e, 0xb2, 0x17, 0x06, 0x0f, 0x2c, 0x0a, 0x41, 0x03, 0x7d, 0xfb, + 0x87, 0xf6, 0xb7, 0xee, 0x8b, 0xe9, 0xad, 0xe1, 0x8b, 0xd7, 0x56, 0xd1, 0x78, 0xcd, 0xc6, 0xc9, + 0x5a, 0xca, 0xbc, 0xcb, 0x79, 0xcc, 0x26, 0xcd, 0x1c, 0xd3, 0x70, 0xda, 0xeb, 0xdc, 0x38, 0xe0, + 0x97, 0xe7, 0x32, 0xeb, 0x71, 0xec, 0x71, 0xf0, 0xc0, 0xf2, 0x1a, 0xf8, 0x09, 0xfb, 0xb9, 0xfb, + 0x7c, 0xfc, 0x59, 0xfc, 0xd5, 0xfe, 0x44, 0x02, 0x77, 0x08, 0xe2, 0x09, 0x57, 0x0b, 0x85, 0x0c, + 0xda, 0x0c, 0x9a, 0x10, 0xa3, 0x13, 0xe0, 0x1a, 0x9f, 0x20, 0xae, 0x24, 0x6d, 0x21, 0x7d, 0x1d, + 0xb1, 0x19, 0xcd, 0x14, 0xf9, 0x10, 0x9e, 0x08, 0x42, 0x01, 0x60, 0xfc, 0xe8, 0xf3, 0xa5, 0xe7, + 0x98, 0xe0, 0xe8, 0xda, 0x91, 0xd4, 0x06, 0xd5, 0xda, 0xd4, 0xd7, 0xd4, 0xb3, 0xd3, 0x76, 0xd5, + 0xc8, 0xda, 0x1a, 0xdc, 0x61, 0xe1, 0x13, 0xe9, 0xab, 0xea, 0x79, 0xeb, 0xf7, 0xec, 0x58, 0xf0, + 0xce, 0xf4, 0x55, 0xf7, 0x7b, 0xf8, 0xc9, 0xf8, 0xdb, 0xf8, 0x42, 0xf9, 0x12, 0xfe, 0x31, 0x01, + 0xc2, 0x03, 0x30, 0x05, 0x43, 0x05, 0x6a, 0x07, 0xec, 0x08, 0xd4, 0x0c, 0x73, 0x12, 0x81, 0x18, + 0x22, 0x1b, 0x26, 0x1c, 0x7d, 0x19, 0xa0, 0x16, 0x8c, 0x13, 0x2f, 0x0f, 0x6e, 0x09, 0x26, 0x04, + 0xe5, 0x03, 0xb6, 0xfd, 0x8d, 0xf3, 0x89, 0xed, 0xfa, 0xe9, 0x70, 0xe4, 0x68, 0xe2, 0x9d, 0xe4, + 0x35, 0xe3, 0x70, 0xe2, 0xe0, 0xe6, 0x34, 0xed, 0x41, 0xef, 0x99, 0xf5, 0xfd, 0xfb, 0x4c, 0xfe, + 0x58, 0x00, 0xe6, 0x01, 0x75, 0x05, 0x70, 0x0c, 0xc8, 0x0b, 0x01, 0x0c, 0x56, 0x0d, 0x69, 0x0a, + 0x59, 0x0c, 0x0b, 0x11, 0x65, 0x15, 0x7f, 0x18, 0x30, 0x1a, 0x76, 0x1f, 0x9b, 0x22, 0x7c, 0x26, + 0x98, 0x28, 0x18, 0x31, 0x8a, 0x39, 0xa2, 0x3d, 0x9e, 0x3d, 0x4b, 0x39, 0xa8, 0x35, 0x28, 0x33, + 0x83, 0x2d, 0x86, 0x27, 0xd3, 0x1f, 0x7c, 0x18, 0x95, 0x0d, 0x5c, 0x02, 0x61, 0xfb, 0xa0, 0xf5, + 0xa5, 0xee, 0xae, 0xeb, 0xab, 0xea, 0xb9, 0xe5, 0xe0, 0xe2, 0x1d, 0xe6, 0xf0, 0xea, 0x5f, 0xee, + 0xf3, 0xee, 0x88, 0xf3, 0xbc, 0xf6, 0xc8, 0xf6, 0x84, 0xf5, 0x67, 0xf7, 0xfd, 0xfa, 0x40, 0xf7, + 0x1d, 0xfb, 0x23, 0xf9, 0xfd, 0xf3, 0x96, 0xf5, 0xdd, 0xf8, 0x52, 0xff, 0xde, 0x03, 0x59, 0x06, + 0x8a, 0x0a, 0xde, 0x0d, 0xd0, 0x0c, 0x80, 0x0e, 0x2d, 0x16, 0x79, 0x1b, 0x38, 0x1f, 0xbe, 0x21, + 0xf2, 0x1c, 0xc4, 0x1a, 0xe6, 0x19, 0x03, 0x16, 0x95, 0x12, 0x86, 0x0e, 0x7f, 0x0b, 0x25, 0x08, + 0xcb, 0x02, 0xc4, 0xfd, 0x77, 0xf7, 0x25, 0xef, 0x70, 0xee, 0x1e, 0xed, 0x26, 0xe9, 0xb7, 0xe7, + 0x9d, 0xea, 0xc7, 0xec, 0xa1, 0xed, 0x83, 0xf1, 0x18, 0xf5, 0x4f, 0xf8, 0x6c, 0xf6, 0xc0, 0xf5, + 0x73, 0xf9, 0xfa, 0xf8, 0x55, 0xf8, 0x27, 0xf7, 0x0d, 0xf7, 0x88, 0xf4, 0x3d, 0xf3, 0xbb, 0xf6, + 0xac, 0xfb, 0x55, 0xfe, 0xdf, 0xfc, 0x5a, 0x00, 0xab, 0x00, 0x11, 0xfd, 0xbd, 0xfe, 0x03, 0x02, + 0xfe, 0x04, 0x62, 0x06, 0xf5, 0x07, 0x86, 0x06, 0xd0, 0x04, 0x0a, 0x04, 0x29, 0x01, 0x13, 0xfd, + 0x73, 0xf9, 0xf7, 0xf4, 0xe1, 0xeb, 0x1c, 0xe2, 0x46, 0xdf, 0xab, 0xd8, 0x8b, 0xd3, 0x39, 0xd4, + 0x45, 0xd3, 0x7f, 0xd1, 0xcb, 0xd4, 0x66, 0xdb, 0x0c, 0xe1, 0xf5, 0xea, 0x74, 0xf1, 0x69, 0xfa, + 0xa1, 0xfe, 0xa8, 0xfb, 0x5a, 0x00, 0x70, 0x03, 0xd4, 0x07, 0x23, 0x0a, 0x25, 0x0c, 0xb5, 0x0c, + 0x51, 0x0b, 0xfd, 0x0a, 0xda, 0x0d, 0x75, 0x12, 0x38, 0x13, 0xec, 0x13, 0x1d, 0x17, 0x36, 0x15, + 0xf5, 0x0e, 0x2b, 0x0e, 0xaa, 0x11, 0x9d, 0x14, 0x79, 0x17, 0x48, 0x17, 0xb2, 0x14, 0x9c, 0x13, + 0x3a, 0x12, 0xc3, 0x0d, 0xda, 0x06, 0xe2, 0x01, 0x8f, 0xf9, 0x58, 0xf1, 0x3f, 0xe9, 0x11, 0xe0, + 0x81, 0xdb, 0xf2, 0xd6, 0xf1, 0xd5, 0xcf, 0xd4, 0x0e, 0xd3, 0x59, 0xd6, 0x28, 0xd8, 0x3f, 0xdf, + 0x15, 0xe1, 0x4c, 0xe2, 0xc7, 0xeb, 0x35, 0xed, 0x51, 0xef, 0x8a, 0xf3, 0xef, 0xf5, 0x90, 0xfa, + 0xb6, 0x00, 0xe7, 0x04, 0xc9, 0x07, 0x19, 0x09, 0x59, 0x0c, 0x8d, 0x12, 0xff, 0x16, 0xfb, 0x16, + 0xd1, 0x19, 0xac, 0x1d, 0xff, 0x1c, 0x8a, 0x1c, 0x8b, 0x1d, 0xd0, 0x22, 0x19, 0x28, 0x8a, 0x2c, + 0x26, 0x2e, 0xfd, 0x2b, 0x38, 0x2b, 0x1d, 0x2a, 0x68, 0x27, 0xad, 0x21, 0x7b, 0x1b, 0xf9, 0x12, + 0x92, 0x0d, 0x4c, 0x05, 0x1a, 0xfd, 0xf2, 0xf6, 0xed, 0xf1, 0x46, 0xf1, 0xaf, 0xec, 0x94, 0xe8, + 0x48, 0xe5, 0x91, 0xe4, 0x3a, 0xe7, 0x20, 0xe7, 0x39, 0xe9, 0xec, 0xec, 0x0c, 0xef, 0x1a, 0xef, + 0xed, 0xf1, 0x9d, 0xf3, 0x23, 0xf8, 0x74, 0xfa, 0x19, 0xfd, 0x05, 0xff, 0xfe, 0xfb, 0x56, 0xfa, + 0x7f, 0xfe, 0xe2, 0x02, 0x29, 0x04, 0xfc, 0x06, 0x06, 0x0b, 0x8e, 0x0e, 0x32, 0x10, 0xb5, 0x11, + 0xd3, 0x19, 0x5f, 0x20, 0xf5, 0x27, 0xf4, 0x2c, 0xd9, 0x2a, 0x3c, 0x2c, 0x11, 0x2b, 0xa8, 0x26, + 0xb4, 0x25, 0xeb, 0x21, 0x77, 0x1d, 0xbb, 0x16, 0x4e, 0x10, 0x6a, 0x0a, 0xc5, 0x02, 0x93, 0xfe, + 0xcd, 0xf8, 0xc1, 0xf6, 0x0b, 0xf0, 0x56, 0xeb, 0xdb, 0xea, 0x7a, 0xe9, 0x07, 0xec, 0x04, 0xed, + 0xd4, 0xf1, 0x3f, 0xf3, 0xb7, 0xf3, 0x98, 0xf5, 0x7d, 0xf5, 0x92, 0xf8, 0xfa, 0xf6, 0x9f, 0xf6, + 0xd3, 0xf8, 0x88, 0xf4, 0x26, 0xf0, 0xfc, 0xf2, 0x76, 0xf5, 0x05, 0xf7, 0xda, 0xfa, 0x2a, 0xff, + 0x36, 0x01, 0xf9, 0xfe, 0x39, 0x00, 0xa5, 0x03, 0xa8, 0x04, 0xef, 0x08, 0xd4, 0x07, 0xb9, 0x06, + 0x3f, 0x09, 0x98, 0x06, 0xf4, 0x04, 0x20, 0x05, 0xc3, 0x02, 0x30, 0xff, 0xdc, 0xfc, 0x40, 0xf9, + 0xf5, 0xf4, 0x53, 0xf4, 0x37, 0xed, 0x91, 0xe9, 0xac, 0xe6, 0x51, 0xe1, 0x80, 0xe1, 0x51, 0xe3, + 0xa6, 0xe5, 0x55, 0xe9, 0x3a, 0xed, 0xef, 0xf2, 0x7f, 0xf7, 0x4a, 0xf8, 0x2e, 0xfa, 0x50, 0xfc, + 0x3d, 0xff, 0x37, 0x00, 0xba, 0x01, 0xbf, 0x03, 0xd2, 0xfe, 0xb0, 0xff, 0xeb, 0x02, 0x3c, 0x04, + 0x5c, 0x08, 0x1f, 0x0a, 0xeb, 0x0d, 0x71, 0x0e, 0x5b, 0x09, 0x27, 0x08, 0x89, 0x0a, 0x59, 0x0d, + 0x84, 0x0e, 0xdd, 0x0e, 0x54, 0x0f, 0x55, 0x0e, 0x51, 0x0e, 0x2d, 0x0e, 0xef, 0x0c, 0xd1, 0x09, + 0x4d, 0x04, 0x1e, 0x01, 0x3a, 0xf7, 0x9c, 0xef, 0x27, 0xe7, 0x15, 0xe0, 0x88, 0xdf, 0x38, 0xda, + 0x2d, 0xd6, 0xfb, 0xd5, 0x10, 0xd7, 0x24, 0xda, 0x8a, 0xdd, 0x55, 0xe2, 0xbe, 0xea, 0x1b, 0xf1, + 0xe3, 0xf3, 0x40, 0xf6, 0x21, 0xf9, 0x9b, 0xfb, 0x6d, 0xfd, 0x69, 0x03, 0xfb, 0x06, 0xdc, 0x05, + 0x87, 0x06, 0x27, 0x0b, 0x9f, 0x0e, 0x1b, 0x0e, 0x22, 0x10, 0xea, 0x14, 0x46, 0x16, 0x3b, 0x13, + 0x3a, 0x11, 0xab, 0x12, 0x43, 0x15, 0x02, 0x18, 0xa8, 0x19, 0x6e, 0x1a, 0x37, 0x1c, 0xa0, 0x1a, + 0x82, 0x1a, 0x89, 0x1a, 0x9a, 0x13, 0x42, 0x0f, 0xb0, 0x09, 0x22, 0x01, 0x1b, 0xfa, 0x2e, 0xf3, + 0x6c, 0xee, 0x90, 0xeb, 0xeb, 0xe7, 0x51, 0xe4, 0xe7, 0xe3, 0x83, 0xe4, 0xb7, 0xe6, 0x5d, 0xea, + 0xed, 0xec, 0xa2, 0xf1, 0x20, 0xf4, 0xf0, 0xf5, 0x97, 0xf7, 0x2b, 0xfb, 0x2f, 0xfd, 0x19, 0x01, + 0x82, 0x08, 0xf6, 0x0a, 0xe0, 0x0a, 0xf5, 0x0a, 0x88, 0x10, 0x88, 0x14, 0x66, 0x15, 0xa0, 0x1a, + 0x8a, 0x1b, 0x01, 0x1c, 0x6e, 0x19, 0x72, 0x17, 0x3c, 0x1c, 0x3e, 0x1b, 0x1b, 0x1e, 0xb0, 0x1f, + 0x1d, 0x21, 0x99, 0x20, 0x71, 0x1d, 0x94, 0x1f, 0xe6, 0x1a, 0x58, 0x17, 0xd3, 0x11, 0xe4, 0x0a, + 0xcb, 0x05, 0x56, 0xfd, 0x70, 0xf6, 0x09, 0xf2, 0xd6, 0xec, 0x82, 0xe8, 0xbd, 0xe5, 0x84, 0xe3, + 0xb5, 0xdf, 0x90, 0xdf, 0x90, 0xe1, 0xa2, 0xe0, 0x8f, 0xe4, 0x5e, 0xe8, 0x08, 0xe7, 0x4c, 0xeb, + 0x7e, 0xed, 0xb7, 0xee, 0x95, 0xf4, 0xc8, 0xf8, 0x93, 0xfb, 0x6a, 0xf9, 0x5a, 0xf9, 0x73, 0xfb, + 0x87, 0xfb, 0xb2, 0xfd, 0xb6, 0x00, 0x83, 0x04, 0x20, 0x07, 0x55, 0x06, 0x2d, 0x08, 0xaf, 0x0c, + 0xd5, 0x10, 0x55, 0x15, 0x54, 0x1c, 0x8f, 0x21, 0x18, 0x23, 0x3b, 0x25, 0xb6, 0x25, 0x09, 0x25, + 0x31, 0x23, 0xd3, 0x20, 0xdf, 0x1d, 0x74, 0x18, 0x7f, 0x0f, 0x59, 0x0a, 0xba, 0x05, 0x6e, 0xff, + 0x87, 0xfb, 0x2f, 0xf4, 0xa3, 0xee, 0xb1, 0xea, 0xbd, 0xe7, 0x77, 0xe6, 0xf9, 0xe3, 0x72, 0xe6, + 0x11, 0xe6, 0xea, 0xe5, 0xb6, 0xe7, 0x97, 0xe6, 0x28, 0xe9, 0x8b, 0xea, 0xb5, 0xec, 0x5d, 0xee, + 0x2c, 0xec, 0x16, 0xeb, 0x2c, 0xeb, 0x40, 0xeb, 0x17, 0xea, 0x79, 0xec, 0x0d, 0xf2, 0xf1, 0xf4, + 0xc8, 0xf6, 0x93, 0xf6, 0xee, 0xfa, 0x5a, 0xfd, 0xd8, 0xff, 0x99, 0x05, 0x2e, 0x06, 0x5b, 0x07, + 0xef, 0x09, 0x46, 0x09, 0x68, 0x0b, 0x97, 0x0a, 0x6a, 0x08, 0x3c, 0x07, 0x19, 0x01, 0x35, 0xfc, + 0xb0, 0xfa, 0x82, 0xf9, 0xd5, 0xf7, 0xe1, 0xf4, 0x88, 0xf1, 0xad, 0xec, 0xe2, 0xea, 0x6a, 0xec, + 0x76, 0xee, 0x9c, 0xf0, 0xc0, 0xf5, 0xea, 0xfa, 0x16, 0xfe, 0x88, 0x01, 0x63, 0x04, 0x0f, 0x05, + 0xa0, 0x09, 0x77, 0x0e, 0x3f, 0x0e, 0x2a, 0x0e, 0xcc, 0x0b, 0xa9, 0x0b, 0x3c, 0x0c, 0xe4, 0x0a, + 0x67, 0x0e, 0x42, 0x10, 0xbe, 0x12, 0x16, 0x0f, 0x7f, 0x0c, 0x2c, 0x0e, 0xe9, 0x09, 0xec, 0x09, + 0x87, 0x0a, 0x00, 0x08, 0x5a, 0x07, 0xdb, 0x04, 0x3c, 0x03, 0xbb, 0x04, 0xab, 0x01, 0x75, 0xfe, + 0xd9, 0xfd, 0x45, 0xf7, 0x5c, 0xf0, 0xee, 0xeb, 0x9e, 0xe5, 0x36, 0xe0, 0xd4, 0xdc, 0x1f, 0xd9, + 0x69, 0xd5, 0x2e, 0xd6, 0x5b, 0xd7, 0x52, 0xd9, 0x9e, 0xde, 0xfb, 0xe5, 0x4b, 0xee, 0xe8, 0xf3, + 0x4e, 0xfb, 0x33, 0x01, 0xa4, 0x02, 0x87, 0x09, 0x01, 0x0e, 0xca, 0x12, 0x5c, 0x14, 0x6c, 0x13, + 0x1d, 0x18, 0xfc, 0x18, 0xa5, 0x1a, 0xbf, 0x1e, 0xd4, 0x22, 0xe4, 0x24, 0xee, 0x22, 0xe1, 0x21, + 0x53, 0x22, 0x83, 0x20, 0x17, 0x21, 0x52, 0x22, 0x47, 0x23, 0x1b, 0x23, 0xeb, 0x1f, 0x36, 0x21, + 0x2a, 0x22, 0xf6, 0x1e, 0x47, 0x1d, 0xd1, 0x19, 0xa5, 0x11, 0x35, 0x08, 0x1a, 0x01, 0x5e, 0xf8, + 0x36, 0xf3, 0xae, 0xee, 0x7e, 0xe6, 0xe7, 0xe3, 0xdb, 0xe0, 0x74, 0xdf, 0xf6, 0xe0, 0x4b, 0xe0, + 0x64, 0xe4, 0x33, 0xe6, 0xfa, 0xe7, 0xf1, 0xeb, 0xf3, 0xea, 0x17, 0xec, 0x9c, 0xee, 0x2b, 0xf3, + 0x7a, 0xf6, 0x5a, 0xf8, 0x08, 0xf9, 0xf2, 0xfb, 0x9c, 0xfe, 0x5e, 0xff, 0xe1, 0x05, 0xac, 0x0b, + 0x0b, 0x0f, 0x87, 0x0e, 0xdd, 0x0e, 0x64, 0x11, 0x71, 0x11, 0xae, 0x15, 0xac, 0x19, 0x1b, 0x1c, + 0x7b, 0x1c, 0xbf, 0x1d, 0xf6, 0x1f, 0xf0, 0x20, 0xc4, 0x1f, 0x20, 0x1d, 0xb3, 0x1a, 0x37, 0x12, + 0xa6, 0x0a, 0x45, 0x05, 0xdd, 0xfe, 0x8c, 0xfa, 0xf3, 0xf4, 0x2e, 0xef, 0x1f, 0xec, 0x54, 0xe7, + 0xe3, 0xe5, 0x5c, 0xe5, 0xe7, 0xe4, 0x38, 0xe8, 0xec, 0xe7, 0xe6, 0xeb, 0xc9, 0xec, 0x29, 0xea, + 0xcb, 0xea, 0xf6, 0xed, 0x13, 0xf3, 0xee, 0xf5, 0xe1, 0xf6, 0x0f, 0xf6, 0xfb, 0xf6, 0xae, 0xf5, + 0xcb, 0xf4, 0x06, 0xfa, 0x79, 0xfc, 0x85, 0xfc, 0xaa, 0xfd, 0x6c, 0xfd, 0x91, 0x00, 0x95, 0x00, + 0x4e, 0x01, 0x9d, 0x07, 0x74, 0x0a, 0x45, 0x0c, 0xac, 0x0e, 0x35, 0x12, 0xb5, 0x14, 0x61, 0x11, + 0xd2, 0x12, 0x43, 0x12, 0xe7, 0x0c, 0xcc, 0x09, 0x65, 0x04, 0x06, 0xff, 0xc5, 0xfb, 0xb2, 0xf7, + 0xbb, 0xf4, 0x8b, 0xf1, 0x4f, 0xee, 0xeb, 0xea, 0x5b, 0xe8, 0xcc, 0xe9, 0x7c, 0xea, 0x1e, 0xed, + 0xbb, 0xee, 0x78, 0xf0, 0x20, 0xf0, 0x2d, 0xf0, 0xc3, 0xf3, 0xf1, 0xf6, 0xef, 0xf9, 0x84, 0xfa, + 0x72, 0xfa, 0xd8, 0xfa, 0x2c, 0xf9, 0xb5, 0xf9, 0x3a, 0xfc, 0x89, 0xfc, 0xa2, 0xfe, 0x89, 0xff, + 0x66, 0xff, 0x06, 0x04, 0x6c, 0x03, 0x63, 0x05, 0xc3, 0x0b, 0x0d, 0x0d, 0xfe, 0x0d, 0xb0, 0x0e, + 0x41, 0x0f, 0xa8, 0x0f, 0x54, 0x0f, 0xa1, 0x11, 0x19, 0x10, 0x74, 0x0b, 0xee, 0x05, 0xc6, 0x00, + 0x4f, 0xfe, 0x7c, 0xfb, 0x95, 0xfa, 0x43, 0xf8, 0xbd, 0xf4, 0x26, 0xf1, 0x9d, 0xed, 0x5d, 0xee, + 0xbc, 0xed, 0x70, 0xf0, 0x73, 0xf3, 0xfa, 0xf6, 0xf0, 0xf9, 0xd9, 0xfa, 0xf4, 0xfc, 0x50, 0x00, + 0xd8, 0x03, 0xac, 0x06, 0x66, 0x09, 0x65, 0x09, 0xaf, 0x09, 0x26, 0x07, 0x80, 0x06, 0xda, 0x08, + 0xef, 0x09, 0xfb, 0x0d, 0x58, 0x0d, 0x8f, 0x0e, 0x9f, 0x0e, 0xf7, 0x0c, 0x3e, 0x10, 0x27, 0x12, + 0x87, 0x12, 0xfe, 0x10, 0xf6, 0x10, 0x33, 0x0f, 0xb1, 0x0d, 0x15, 0x0e, 0x24, 0x0d, 0xed, 0x0c, + 0x71, 0x08, 0xa6, 0x02, 0x72, 0xff, 0x27, 0xf9, 0xeb, 0xf5, 0x82, 0xf1, 0x58, 0xec, 0x17, 0xe9, + 0x5f, 0xe4, 0x4f, 0xe3, 0x51, 0xe3, 0x92, 0xe3, 0x09, 0xe6, 0xc6, 0xeb, 0x11, 0xf2, 0x8a, 0xf6, + 0x81, 0xfb, 0x73, 0xff, 0xff, 0x04, 0xf3, 0x0a, 0xee, 0x0d, 0x86, 0x10, 0x80, 0x12, 0x9f, 0x12, + 0x1d, 0x12, 0x70, 0x12, 0xeb, 0x14, 0x8d, 0x18, 0x9d, 0x1a, 0xe3, 0x1a, 0x1e, 0x1b, 0xba, 0x1b, + 0x7a, 0x18, 0x51, 0x16, 0x7b, 0x18, 0x43, 0x16, 0xd7, 0x13, 0x48, 0x12, 0x6f, 0x0f, 0x3b, 0x0e, + 0xbf, 0x0c, 0xb3, 0x0a, 0xc9, 0x0a, 0xc9, 0x06, 0x0e, 0x01, 0xa0, 0xf9, 0x29, 0xf3, 0x63, 0xee, + 0xe7, 0xe7, 0x86, 0xe2, 0x2f, 0xde, 0xff, 0xd7, 0xcd, 0xd4, 0x44, 0xd4, 0xf6, 0xd4, 0x49, 0xd9, + 0x2a, 0xdd, 0x4a, 0xe1, 0xf7, 0xe4, 0x83, 0xe7, 0x7c, 0xe8, 0x5b, 0xeb, 0x16, 0xf0, 0x90, 0xf2, + 0xc3, 0xf7, 0xa3, 0xf8, 0xb7, 0xf9, 0xae, 0xfc, 0xb7, 0xfc, 0x44, 0x02, 0x66, 0x08, 0xf5, 0x0c, + 0xe4, 0x10, 0x1b, 0x13, 0xf5, 0x14, 0xe4, 0x12, 0xd4, 0x14, 0xfe, 0x19, 0x9e, 0x1a, 0xcb, 0x1c, + 0xb9, 0x1c, 0xc7, 0x1c, 0x6e, 0x1f, 0x93, 0x1f, 0x0c, 0x22, 0x92, 0x21, 0xa3, 0x1c, 0x5b, 0x15, + 0x45, 0x0e, 0x79, 0x07, 0x50, 0x00, 0xe2, 0xfa, 0x65, 0xf4, 0xcb, 0xef, 0x34, 0xe9, 0x08, 0xe4, + 0x6f, 0xe2, 0x2d, 0xe0, 0xd6, 0xdf, 0xca, 0xe0, 0xc7, 0xe2, 0x7d, 0xe4, 0xcb, 0xe3, 0x38, 0xe2, + 0xf1, 0xe2, 0x2e, 0xe3, 0x47, 0xe5, 0x7b, 0xea, 0xc5, 0xeb, 0x12, 0xef, 0xf3, 0xee, 0x8a, 0xed, + 0x77, 0xf2, 0x69, 0xf5, 0x7d, 0xf7, 0xd7, 0xf9, 0x1a, 0xfc, 0xe1, 0xfd, 0x57, 0xfd, 0x90, 0x00, + 0x61, 0x05, 0x39, 0x08, 0x40, 0x0a, 0xac, 0x0d, 0x54, 0x11, 0x25, 0x15, 0x9d, 0x19, 0x66, 0x1b, + 0xd5, 0x1d, 0x60, 0x1b, 0x13, 0x17, 0x2f, 0x14, 0xc9, 0x10, 0x3c, 0x0c, 0x34, 0x08, 0x59, 0x05, + 0x53, 0x02, 0xb2, 0xfd, 0xf1, 0xfa, 0xce, 0xf9, 0x60, 0xf6, 0x8d, 0xf6, 0x88, 0xf8, 0x95, 0xf9, + 0x10, 0xfc, 0x05, 0xfa, 0x94, 0xf9, 0x1c, 0xfc, 0x82, 0xfc, 0x7b, 0xff, 0x91, 0x01, 0x29, 0x03, + 0x6b, 0x03, 0x11, 0x00, 0xfe, 0xfe, 0x7c, 0x01, 0x99, 0x02, 0xe6, 0x01, 0xc7, 0x02, 0x73, 0x02, + 0x50, 0x01, 0xde, 0x00, 0x27, 0x01, 0x80, 0x05, 0x8c, 0x06, 0xad, 0x06, 0x07, 0x09, 0x68, 0x07, + 0xf6, 0x07, 0x6c, 0x06, 0xc0, 0x06, 0xf5, 0x09, 0x63, 0x07, 0xfb, 0x02, 0x73, 0x00, 0x99, 0xfa, + 0x20, 0xf6, 0x1c, 0xf5, 0xff, 0xf3, 0x83, 0xf4, 0xd5, 0xf1, 0x0f, 0xf0, 0x88, 0xee, 0x4e, 0xed, + 0x44, 0xef, 0x85, 0xf2, 0xe8, 0xf7, 0x1b, 0xfa, 0x0d, 0xfc, 0x5a, 0xff, 0xf5, 0x01, 0x66, 0x04, + 0x7b, 0x08, 0xe0, 0x0c, 0x58, 0x0e, 0x02, 0x10, 0xe4, 0x0d, 0x17, 0x0d, 0x24, 0x10, 0xa6, 0x0e, + 0x37, 0x0f, 0xf9, 0x11, 0x6f, 0x11, 0x35, 0x11, 0xcd, 0x0f, 0xf7, 0x10, 0x7d, 0x13, 0x6c, 0x12, + 0xda, 0x12, 0x18, 0x13, 0x54, 0x10, 0x4a, 0x0f, 0x3a, 0x0e, 0x81, 0x0d, 0x76, 0x0e, 0x7f, 0x09, + 0x7f, 0x05, 0xc3, 0x02, 0xe6, 0xfb, 0x28, 0xf7, 0x30, 0xf3, 0xef, 0xef, 0x2b, 0xeb, 0xbe, 0xe3, + 0xbb, 0xdf, 0x46, 0xdd, 0x4b, 0xda, 0xcc, 0xd9, 0x52, 0xdd, 0x50, 0xe0, 0x3a, 0xe2, 0x32, 0xe6, + 0x94, 0xe9, 0x5f, 0xee, 0x45, 0xf3, 0xc6, 0xf7, 0x16, 0xfe, 0xda, 0x01, 0xe7, 0x04, 0xa5, 0x04, + 0x3f, 0x06, 0x7a, 0x0a, 0x1f, 0x0b, 0xec, 0x0f, 0xdb, 0x12, 0xd6, 0x15, 0x82, 0x17, 0x1c, 0x16, + 0x58, 0x18, 0x54, 0x1a, 0xdb, 0x19, 0x93, 0x1a, 0x74, 0x19, 0xbf, 0x16, 0x03, 0x16, 0x40, 0x14, + 0x94, 0x13, 0x7d, 0x14, 0x7e, 0x11, 0x25, 0x0e, 0x2c, 0x0a, 0x0d, 0x03, 0x65, 0xfd, 0x0d, 0xf9, + 0x31, 0xf4, 0x4b, 0xf0, 0x26, 0xe9, 0xe4, 0xe3, 0x06, 0xe0, 0x16, 0xdb, 0xe5, 0xdb, 0x34, 0xdf, + 0xd6, 0xe1, 0x47, 0xe5, 0xea, 0xe8, 0x79, 0xeb, 0x93, 0xed, 0xc7, 0xef, 0x23, 0xf3, 0xed, 0xf6, + 0x51, 0xfa, 0x44, 0xfc, 0x6a, 0xfb, 0x13, 0xfc, 0xe6, 0xfd, 0xbe, 0xff, 0xa1, 0x03, 0x3e, 0x09, + 0x4b, 0x0c, 0x7d, 0x0e, 0xf6, 0x0e, 0x79, 0x0f, 0xf1, 0x11, 0x4f, 0x13, 0x38, 0x15, 0xc0, 0x14, + 0xc5, 0x14, 0x49, 0x14, 0x80, 0x13, 0xd8, 0x16, 0x89, 0x19, 0x11, 0x19, 0xfa, 0x16, 0x87, 0x13, + 0x60, 0x0c, 0x34, 0x07, 0xd7, 0x02, 0x1d, 0xfd, 0x32, 0xfa, 0x9a, 0xf2, 0xb9, 0xed, 0x7e, 0xe9, + 0xaf, 0xe4, 0x09, 0xe6, 0xe2, 0xe6, 0x2c, 0xe8, 0x54, 0xea, 0xa0, 0xeb, 0x48, 0xed, 0x1e, 0xee, + 0x25, 0xee, 0xe4, 0xed, 0x66, 0xf1, 0xba, 0xf3, 0xb6, 0xf4, 0xe8, 0xf5, 0x52, 0xf6, 0x0b, 0xf9, + 0xfc, 0xfa, 0x5d, 0xfe, 0xac, 0x01, 0x23, 0x03, 0x47, 0x04, 0x08, 0x04, 0x0a, 0x05, 0x65, 0x08, + 0xcc, 0x0a, 0x04, 0x0c, 0x7c, 0x0e, 0x0b, 0x0f, 0xd8, 0x10, 0x15, 0x15, 0xf9, 0x19, 0xc6, 0x1e, + 0xdb, 0x1e, 0xe0, 0x1d, 0xa3, 0x1b, 0xd6, 0x16, 0x2e, 0x11, 0xd3, 0x0b, 0xfd, 0x09, 0x21, 0x06, + 0x5f, 0x00, 0xce, 0xfc, 0xcc, 0xf8, 0xa6, 0xf4, 0xe0, 0xf2, 0x34, 0xf2, 0x84, 0xf2, 0xb2, 0xf3, + 0x6f, 0xf3, 0x42, 0xf2, 0x30, 0xf3, 0x00, 0xf1, 0xba, 0xf0, 0xe0, 0xf3, 0x78, 0xf6, 0x11, 0xf8, + 0x3e, 0xf6, 0x78, 0xf6, 0xda, 0xf7, 0xf5, 0xf7, 0x54, 0xf9, 0x37, 0xfc, 0x2f, 0xfd, 0xaf, 0xfc, + 0xe7, 0xfb, 0x3a, 0xfb, 0xc1, 0xfe, 0x63, 0x01, 0x9c, 0x02, 0xe9, 0x05, 0xa7, 0x07, 0xbe, 0x08, + 0x5d, 0x09, 0xe4, 0x0b, 0xc4, 0x0e, 0x07, 0x0f, 0xa9, 0x0d, 0xd9, 0x0c, 0x83, 0x09, 0x1b, 0x04, + 0x2a, 0x01, 0xf2, 0xfe, 0xf3, 0xfc, 0xed, 0xfa, 0x86, 0xf9, 0x2a, 0xf7, 0xc3, 0xf4, 0x47, 0xf4, + 0x43, 0xf5, 0xdb, 0xf6, 0x61, 0xf9, 0x49, 0xfb, 0xd3, 0xfd, 0x61, 0x01, 0xe5, 0x01, 0x9c, 0x04, + 0x28, 0x0a, 0x20, 0x0e, 0xa1, 0x0f, 0x5d, 0x0e, 0x5e, 0x0e, 0xfe, 0x0d, 0xda, 0x0b, 0x71, 0x0d, + 0x63, 0x0e, 0x35, 0x0d, 0x9a, 0x0b, 0xd6, 0x08, 0xe6, 0x07, 0x93, 0x08, 0xbf, 0x08, 0xb8, 0x08, + 0x2d, 0x09, 0xd0, 0x06, 0x96, 0x03, 0x2c, 0x03, 0x7b, 0x02, 0x7d, 0x03, 0x1f, 0x02, 0x4b, 0xfe, + 0x90, 0xfd, 0xe2, 0xf7, 0x0e, 0xf2, 0x9c, 0xf0, 0x74, 0xee, 0x55, 0xec, 0xcd, 0xe8, 0x96, 0xe5, + 0xbe, 0xe1, 0xfe, 0xdc, 0xa6, 0xdb, 0x1f, 0xdc, 0x34, 0xdf, 0x99, 0xe1, 0x96, 0xe4, 0xde, 0xe8, + 0x32, 0xed, 0xd0, 0xef, 0xbd, 0xf4, 0x7d, 0xfd, 0xed, 0x02, 0x81, 0x06, 0x32, 0x09, 0x17, 0x0b, + 0x3f, 0x0d, 0x11, 0x0e, 0x84, 0x11, 0xf6, 0x14, 0x3c, 0x17, 0x20, 0x19, 0xe6, 0x19, 0xd3, 0x1b, + 0x11, 0x1d, 0x5e, 0x1d, 0x36, 0x1e, 0x4a, 0x1f, 0xde, 0x1c, 0xf5, 0x1a, 0xa8, 0x1a, 0x83, 0x19, + 0xf8, 0x19, 0xa1, 0x17, 0x84, 0x15, 0x91, 0x14, 0xc4, 0x0d, 0xee, 0x06, 0xc4, 0x01, 0x35, 0xfc, + 0x0f, 0xf8, 0x50, 0xf2, 0x7f, 0xeb, 0x5e, 0xe5, 0x49, 0xde, 0x6f, 0xd8, 0x7e, 0xd8, 0x74, 0xd8, + 0x88, 0xd8, 0x3a, 0xdb, 0xe9, 0xdd, 0xe3, 0xe0, 0xe2, 0xe0, 0x79, 0xe3, 0xb1, 0xe8, 0xaf, 0xeb, + 0x05, 0xee, 0xb2, 0xef, 0xc8, 0xf1, 0x31, 0xf4, 0x9e, 0xf5, 0x30, 0xf8, 0xf7, 0xfc, 0x11, 0x01, + 0x01, 0x06, 0xcd, 0x08, 0x05, 0x0b, 0x1b, 0x0f, 0x8f, 0x10, 0x7f, 0x14, 0x10, 0x17, 0x04, 0x17, + 0xdb, 0x17, 0x2a, 0x18, 0xd2, 0x19, 0x7f, 0x1c, 0xfe, 0x1e, 0x69, 0x20, 0xd2, 0x1f, 0x2e, 0x1b, + 0x0c, 0x16, 0x56, 0x12, 0x97, 0x0c, 0xf2, 0x09, 0x22, 0x05, 0x21, 0xfe, 0xd4, 0xf8, 0x0a, 0xf1, + 0xa3, 0xed, 0x77, 0xec, 0x73, 0xea, 0xf9, 0xea, 0xed, 0xeb, 0x1b, 0xee, 0x57, 0xf0, 0xa3, 0xee, + 0xa6, 0xef, 0x42, 0xf3, 0xf2, 0xf2, 0x47, 0xf4, 0xc5, 0xf5, 0xbe, 0xf4, 0x12, 0xf4, 0x46, 0xf4, + 0x18, 0xf7, 0x24, 0xfa, 0xf5, 0xfb, 0x75, 0xfd, 0x27, 0xfd, 0x2a, 0xfd, 0x64, 0xfd, 0x72, 0xff, + 0xcf, 0x01, 0xc9, 0x03, 0x67, 0x03, 0x63, 0x02, 0x47, 0x03, 0x9c, 0x06, 0x73, 0x0b, 0xb3, 0x0e, + 0xfc, 0x11, 0x9b, 0x13, 0xca, 0x10, 0x9e, 0x0f, 0xfc, 0x0c, 0x00, 0x0a, 0x28, 0x09, 0x7f, 0x05, + 0xe0, 0x01, 0xf0, 0xfe, 0x6b, 0xfa, 0xd6, 0xf7, 0x48, 0xf7, 0x40, 0xf6, 0x60, 0xf7, 0x8a, 0xf8, + 0x36, 0xfa, 0x69, 0xfc, 0xd8, 0xf9, 0x90, 0xfa, 0x14, 0xfd, 0x62, 0xfd, 0x14, 0x00, 0x4d, 0x00, + 0xfc, 0xff, 0x95, 0x00, 0x20, 0x00, 0x3f, 0x01, 0xd0, 0x03, 0xd0, 0x04, 0x70, 0x05, 0x27, 0x05, + 0x6b, 0x03, 0xc8, 0x03, 0x97, 0x04, 0xcf, 0x04, 0xec, 0x06, 0x8c, 0x07, 0xa3, 0x07, 0x92, 0x09, + 0x68, 0x0b, 0x4a, 0x0e, 0x1b, 0x10, 0x82, 0x11, 0x1e, 0x11, 0x06, 0x0e, 0xcb, 0x09, 0xda, 0x03, + 0x44, 0x01, 0x9d, 0xfe, 0xb9, 0xfa, 0x1e, 0xf8, 0x88, 0xf4, 0x55, 0xf0, 0xb6, 0xed, 0x6d, 0xed, + 0xfc, 0xec, 0xc0, 0xed, 0x5c, 0xef, 0x5b, 0xf1, 0xa5, 0xf3, 0x81, 0xf2, 0xc4, 0xf4, 0x98, 0xf8, + 0x9d, 0xfb, 0x8d, 0xff, 0x02, 0x01, 0xe6, 0x02, 0x8a, 0x05, 0xb4, 0x04, 0xcc, 0x05, 0x79, 0x08, + 0xbb, 0x09, 0xc8, 0x0b, 0xdd, 0x0a, 0xb1, 0x09, 0xee, 0x09, 0xb2, 0x09, 0xdc, 0x0b, 0xa6, 0x0d, + 0xe2, 0x0c, 0x52, 0x0c, 0xbc, 0x0b, 0xbf, 0x0b, 0x3d, 0x0c, 0xa8, 0x0d, 0xfd, 0x0c, 0x35, 0x0c, + 0x5e, 0x09, 0x30, 0x03, 0x8e, 0xfe, 0x19, 0xfb, 0x25, 0xf9, 0x0b, 0xf6, 0x57, 0xf2, 0x33, 0xee, + 0xd4, 0xe8, 0x1b, 0xe5, 0x8f, 0xe2, 0xd7, 0xe0, 0xd7, 0xdf, 0x38, 0xe2, 0x37, 0xe6, 0x6a, 0xe8, + 0xb4, 0xe9, 0x46, 0xed, 0x66, 0xf3, 0x66, 0xf8, 0x10, 0xff, 0xc8, 0x02, 0x97, 0x05, 0x70, 0x08, + 0x68, 0x07, 0xe1, 0x0a, 0xe0, 0x0d, 0x24, 0x0f, 0xc3, 0x11, 0x7c, 0x11, 0xcc, 0x12, 0x47, 0x13, + 0x35, 0x14, 0x74, 0x17, 0x85, 0x19, 0xc9, 0x17, 0x5f, 0x14, 0xdb, 0x13, 0x7b, 0x12, 0x23, 0x12, + 0x27, 0x12, 0x79, 0x10, 0xac, 0x0f, 0xb6, 0x0b, 0xc5, 0x06, 0x2e, 0x02, 0x7c, 0xfd, 0xf3, 0xf9, + 0x34, 0xf6, 0x3a, 0xf2, 0xfb, 0xed, 0xea, 0xe6, 0x62, 0xe0, 0x29, 0xde, 0x64, 0xda, 0x9d, 0xd8, + 0x06, 0xda, 0xeb, 0xdc, 0x6d, 0xe0, 0x02, 0xe1, 0xda, 0xe3, 0x2d, 0xe8, 0x6b, 0xed, 0x3d, 0xf1, + 0x42, 0xf4, 0x11, 0xf7, 0x44, 0xf8, 0xf7, 0xf9, 0xa8, 0xfc, 0x7d, 0xff, 0xf3, 0x02, 0x8a, 0x06, + 0x8e, 0x09, 0x5d, 0x0d, 0x20, 0x10, 0xa0, 0x11, 0x80, 0x16, 0x76, 0x1a, 0x28, 0x1b, 0x05, 0x1d, + 0x1b, 0x1e, 0x46, 0x1e, 0x21, 0x20, 0x52, 0x22, 0xd7, 0x24, 0x9c, 0x26, 0xfd, 0x24, 0x5c, 0x21, + 0x8f, 0x1c, 0x1a, 0x17, 0xd1, 0x12, 0x65, 0x0e, 0x32, 0x09, 0x31, 0x02, 0xf5, 0xf8, 0x15, 0xf2, + 0x0c, 0xee, 0xc5, 0xe8, 0xb9, 0xe5, 0x8b, 0xe5, 0x52, 0xe5, 0x84, 0xe5, 0x0d, 0xe5, 0x7f, 0xe5, + 0x02, 0xe8, 0x8f, 0xe8, 0x60, 0xe9, 0xec, 0xea, 0xfe, 0xeb, 0xa2, 0xec, 0x13, 0xed, 0x48, 0xee, + 0xbe, 0xf1, 0x45, 0xf4, 0xb9, 0xf7, 0xb8, 0xfb, 0xda, 0xfc, 0xf8, 0xfc, 0x49, 0xfe, 0x68, 0x02, + 0xc5, 0x04, 0x15, 0x06, 0xbd, 0x07, 0xc5, 0x07, 0x0e, 0x09, 0x5f, 0x0b, 0x07, 0x10, 0xce, 0x15, + 0x22, 0x19, 0x86, 0x1a, 0x89, 0x19, 0xc7, 0x17, 0x11, 0x16, 0xee, 0x14, 0xab, 0x13, 0x2a, 0x11, + 0x46, 0x0c, 0x0f, 0x07, 0x76, 0x03, 0xf8, 0x00, 0x27, 0xfc, 0x8d, 0xfa, 0xd2, 0xfc, 0xec, 0xfc, + 0x20, 0xff, 0x31, 0xfe, 0xaf, 0xfd, 0x3a, 0x00, 0x55, 0xff, 0xec, 0x00, 0x46, 0x02, 0xfd, 0x00, + 0x3e, 0x00, 0x2d, 0xfd, 0xba, 0xfc, 0x08, 0xfd, 0x3a, 0xfd, 0x4b, 0xfe, 0x27, 0xfe, 0x0d, 0xfd, + 0x9e, 0xf9, 0xf0, 0xf9, 0x72, 0xfb, 0xc4, 0xfb, 0x02, 0xfb, 0xc4, 0xf9, 0x63, 0xfa, 0x27, 0xfa, + 0xf4, 0xfb, 0x1b, 0xff, 0x26, 0x01, 0x25, 0x03, 0x61, 0x03, 0xcc, 0x01, 0x13, 0xff, 0x86, 0xfc, + 0x92, 0xf9, 0x45, 0xf8, 0xea, 0xf5, 0xc1, 0xf2, 0xc3, 0xef, 0x60, 0xed, 0x63, 0xec, 0x5d, 0xe9, + 0x9d, 0xea, 0xf5, 0xec, 0x88, 0xef, 0x55, 0xf4, 0x33, 0xf5, 0xd5, 0xf7, 0x18, 0xfb, 0x5b, 0xfe, + 0x6b, 0x03, 0x6c, 0x06, 0xdc, 0x08, 0x5d, 0x0b, 0xd1, 0x0c, 0x5e, 0x0e, 0xac, 0x10, 0x25, 0x12, + 0x08, 0x14, 0x8c, 0x15, 0xed, 0x13, 0xd0, 0x11, 0x59, 0x11, 0xcf, 0x11, 0x95, 0x12, 0x79, 0x12, + 0x76, 0x11, 0x60, 0x10, 0x0a, 0x0f, 0x3b, 0x0f, 0xdf, 0x10, 0x5a, 0x11, 0x19, 0x12, 0x35, 0x10, + 0xb6, 0x0b, 0x42, 0x05, 0x8d, 0xfd, 0x17, 0xfa, 0x50, 0xf6, 0x71, 0xf2, 0xa2, 0xec, 0xc1, 0xe6, + 0x6c, 0xe2, 0x53, 0xdd, 0xed, 0xd8, 0x72, 0xd6, 0x3e, 0xd6, 0x1e, 0xd7, 0x53, 0xd8, 0xcc, 0xd9, + 0x6e, 0xdb, 0xb9, 0xde, 0x7a, 0xe2, 0xcd, 0xe7, 0x72, 0xed, 0xf3, 0xf1, 0xad, 0xf7, 0x9f, 0xfa, + 0xca, 0xfe, 0xbb, 0x03, 0xbd, 0x06, 0x6f, 0x0c, 0xb2, 0x10, 0xa1, 0x11, 0x98, 0x13, 0x3e, 0x15, + 0xec, 0x18, 0x94, 0x1d, 0xe0, 0x1e, 0x88, 0x20, 0x02, 0x21, 0xa3, 0x1f, 0xc6, 0x20, 0x52, 0x21, + 0xf6, 0x21, 0x32, 0x23, 0x16, 0x21, 0x82, 0x1d, 0x26, 0x18, 0x81, 0x12, 0xe0, 0x0d, 0xaa, 0x0a, + 0xa2, 0x06, 0x9e, 0x00, 0x2a, 0xfb, 0x40, 0xf5, 0x03, 0xef, 0x88, 0xe8, 0x08, 0xe4, 0x87, 0xe2, + 0xec, 0xe1, 0x22, 0xe3, 0x28, 0xe3, 0xf6, 0xe3, 0xcb, 0xe7, 0x3a, 0xea, 0x44, 0xee, 0x58, 0xf2, + 0x48, 0xf4, 0x6e, 0xf6, 0xcc, 0xf5, 0x67, 0xf7, 0xd1, 0xf9, 0x4f, 0xfa, 0xd5, 0xfd, 0xaa, 0xff, + 0x1b, 0x00, 0xac, 0x01, 0x1b, 0x03, 0x5a, 0x07, 0xb6, 0x0b, 0xf7, 0x0c, 0x08, 0x0f, 0x4f, 0x10, + 0xcc, 0x10, 0xd5, 0x11, 0x92, 0x12, 0x50, 0x15, 0xf2, 0x17, 0x25, 0x19, 0xdc, 0x18, 0x9c, 0x17, + 0x3a, 0x14, 0xa0, 0x11, 0x21, 0x11, 0x08, 0x0e, 0xff, 0x0a, 0xee, 0x05, 0x40, 0xff, 0xc8, 0xfa, + 0xf3, 0xf2, 0xdc, 0xee, 0xd7, 0xed, 0x84, 0xec, 0x3e, 0xed, 0xc9, 0xec, 0x87, 0xed, 0xce, 0xee, + 0x28, 0xf1, 0xa4, 0xf3, 0x2b, 0xf5, 0x16, 0xf7, 0x64, 0xf7, 0x7e, 0xf6, 0x75, 0xf7, 0x13, 0xf8, + 0xd8, 0xf8, 0xb0, 0xfb, 0x7a, 0xfe, 0xba, 0xff, 0xaf, 0xff, 0xa2, 0xff, 0x55, 0x02, 0x8f, 0x04, + 0x2d, 0x06, 0xdf, 0x07, 0x5f, 0x08, 0x4d, 0x07, 0xea, 0x07, 0xc0, 0x09, 0xb9, 0x0c, 0x7e, 0x11, + 0xf4, 0x13, 0x5a, 0x15, 0xf0, 0x13, 0xee, 0x0f, 0x34, 0x0f, 0xd6, 0x0d, 0xd0, 0x0b, 0xfd, 0x07, + 0x0c, 0x02, 0x21, 0xfe, 0x22, 0xf9, 0x14, 0xf3, 0x37, 0xf0, 0x4a, 0xef, 0xba, 0xee, 0xae, 0xef, + 0x54, 0xf0, 0x37, 0xf1, 0x50, 0xf3, 0x35, 0xf3, 0xf8, 0xf4, 0xc4, 0xf6, 0x0e, 0xf7, 0xa5, 0xf7, + 0x09, 0xf8, 0x9a, 0xf8, 0xeb, 0xf8, 0x37, 0xfa, 0x17, 0xfd, 0x97, 0x00, 0x08, 0x01, 0xab, 0xff, + 0x3b, 0x00, 0x85, 0x01, 0xed, 0x03, 0xd5, 0x03, 0x25, 0x04, 0x53, 0x04, 0xb0, 0x02, 0x4c, 0x03, + 0x8e, 0x04, 0xd6, 0x08, 0x35, 0x0c, 0x82, 0x0d, 0x66, 0x0f, 0x0b, 0x0c, 0x14, 0x09, 0x48, 0x07, + 0x6b, 0x05, 0x03, 0x04, 0xdc, 0xff, 0xf7, 0xfb, 0xc5, 0xf8, 0x52, 0xf4, 0xec, 0xee, 0x8f, 0xec, + 0x50, 0xed, 0x9d, 0xee, 0xee, 0xf0, 0xcd, 0xf2, 0x03, 0xf5, 0xf4, 0xf7, 0xf3, 0xf9, 0x95, 0xfd, + 0x97, 0x01, 0xc4, 0x03, 0x3e, 0x06, 0xb7, 0x07, 0x7f, 0x08, 0x42, 0x09, 0x02, 0x0a, 0x5f, 0x0d, + 0xa2, 0x0f, 0x5e, 0x0e, 0x86, 0x0d, 0x9e, 0x0b, 0x8e, 0x0b, 0x06, 0x0c, 0x2e, 0x0b, 0xc7, 0x0a, + 0xdc, 0x09, 0x98, 0x08, 0x9d, 0x06, 0x53, 0x06, 0xf8, 0x07, 0x2e, 0x08, 0xe7, 0x09, 0x55, 0x0a, + 0x5e, 0x06, 0xde, 0x01, 0x55, 0xfe, 0xbe, 0xfb, 0xa6, 0xf8, 0x93, 0xf4, 0x56, 0xf1, 0x44, 0xee, + 0xc2, 0xe9, 0xd8, 0xe3, 0xf3, 0xe0, 0xbd, 0xdf, 0x56, 0xdf, 0x8e, 0xe0, 0x79, 0xe1, 0x49, 0xe3, + 0x38, 0xe5, 0x5e, 0xe7, 0x3e, 0xec, 0x2e, 0xf1, 0x7f, 0xf4, 0x7d, 0xf9, 0x81, 0xfd, 0xcf, 0x01, + 0x80, 0x05, 0x68, 0x09, 0x27, 0x10, 0x25, 0x14, 0xda, 0x15, 0xb8, 0x16, 0x39, 0x17, 0x35, 0x19, + 0x2a, 0x1c, 0xe4, 0x1e, 0x5f, 0x20, 0x04, 0x21, 0xd9, 0x1f, 0x99, 0x1f, 0xd4, 0x20, 0x8e, 0x20, + 0x70, 0x22, 0xb3, 0x23, 0x96, 0x21, 0x78, 0x1d, 0x2b, 0x16, 0x52, 0x10, 0x7f, 0x0c, 0x08, 0x07, + 0x2b, 0x01, 0xa2, 0xfb, 0xd1, 0xf5, 0xba, 0xee, 0x0a, 0xe7, 0x32, 0xe1, 0xf1, 0xdc, 0xf4, 0xd9, + 0x34, 0xd8, 0x09, 0xd8, 0xd3, 0xd7, 0x6f, 0xd7, 0xe8, 0xd8, 0xab, 0xdc, 0xfe, 0xdf, 0xd6, 0xe3, + 0x16, 0xe7, 0x8a, 0xea, 0xbb, 0xed, 0x52, 0xef, 0xdb, 0xf2, 0x5c, 0xf7, 0x19, 0xfc, 0x32, 0xfe, + 0x9f, 0xff, 0x75, 0x01, 0x88, 0x03, 0xc0, 0x08, 0xf1, 0x0b, 0x59, 0x0f, 0xc5, 0x12, 0x5a, 0x13, + 0x68, 0x15, 0xde, 0x16, 0xe0, 0x18, 0x82, 0x1c, 0x88, 0x1f, 0x80, 0x21, 0x80, 0x20, 0x87, 0x1d, + 0x18, 0x1b, 0x8c, 0x19, 0x56, 0x17, 0xe2, 0x14, 0x98, 0x11, 0xa0, 0x0c, 0xfa, 0x06, 0x2e, 0xff, + 0x03, 0xf9, 0x2c, 0xf5, 0xf6, 0xf1, 0xd1, 0xef, 0x2b, 0xef, 0xcc, 0xee, 0x68, 0xee, 0x29, 0xf0, + 0x45, 0xf1, 0xcc, 0xf3, 0x53, 0xf5, 0x2e, 0xf6, 0xb5, 0xf7, 0xef, 0xf5, 0xc2, 0xf4, 0x13, 0xf5, + 0xb5, 0xf5, 0x1e, 0xf7, 0x3f, 0xf7, 0x59, 0xf7, 0xa8, 0xf6, 0xb3, 0xf7, 0xe7, 0xf9, 0xf1, 0xfa, + 0x32, 0xfd, 0x60, 0xfe, 0x9a, 0xfd, 0xe2, 0xfd, 0x49, 0xfd, 0x3b, 0xfe, 0xb1, 0x01, 0x56, 0x05, + 0x2b, 0x08, 0x14, 0x08, 0x42, 0x07, 0x36, 0x08, 0x67, 0x09, 0xd0, 0x09, 0x75, 0x0a, 0xe5, 0x09, + 0xc3, 0x07, 0x64, 0x04, 0xfc, 0xfe, 0x2b, 0xfb, 0x9f, 0xf9, 0xfb, 0xf7, 0xa9, 0xf7, 0xf6, 0xf8, + 0x48, 0xf9, 0x0f, 0xfb, 0xaf, 0xfb, 0xad, 0xfe, 0x95, 0x01, 0x2e, 0x02, 0x1d, 0x04, 0x9f, 0x04, + 0x01, 0x04, 0x02, 0x03, 0x2e, 0x03, 0x69, 0x05, 0x5e, 0x07, 0xf4, 0x07, 0x6a, 0x06, 0x18, 0x05, + 0x00, 0x05, 0xa5, 0x05, 0xf8, 0x06, 0xfa, 0x07, 0x3b, 0x08, 0x33, 0x06, 0x90, 0x04, 0x9d, 0x03, + 0x66, 0x03, 0x90, 0x05, 0x9e, 0x08, 0x58, 0x0b, 0xb7, 0x0b, 0xe2, 0x08, 0x09, 0x07, 0x52, 0x05, + 0x86, 0x01, 0xc8, 0xfe, 0xdb, 0xf9, 0x6d, 0xf5, 0x28, 0xf1, 0x2e, 0xea, 0x3b, 0xe6, 0xa7, 0xe3, + 0x75, 0xe1, 0xa1, 0xe3, 0x5d, 0xe5, 0x8c, 0xe7, 0x67, 0xea, 0xbd, 0xeb, 0x63, 0xef, 0x9d, 0xf2, + 0xc9, 0xf5, 0x16, 0xf9, 0xf1, 0xfc, 0x3d, 0x00, 0xc7, 0x01, 0x36, 0x04, 0x56, 0x08, 0x56, 0x0c, + 0x28, 0x0e, 0x9b, 0x0e, 0x81, 0x0f, 0x5f, 0x0f, 0xc1, 0x10, 0xde, 0x11, 0x7b, 0x11, 0xe8, 0x10, + 0xa0, 0x0f, 0x69, 0x0e, 0x24, 0x0f, 0x81, 0x0f, 0xce, 0x11, 0x95, 0x14, 0x00, 0x16, 0xd8, 0x15, + 0xa3, 0x12, 0x04, 0x10, 0x4d, 0x0e, 0x46, 0x0a, 0xab, 0x07, 0xea, 0x02, 0x9d, 0xfe, 0xf4, 0xf8, + 0x38, 0xf1, 0x1e, 0xee, 0x5e, 0xe9, 0x96, 0xe6, 0x60, 0xe6, 0xe0, 0xe5, 0x31, 0xe7, 0x8b, 0xe7, + 0x0b, 0xe8, 0xd0, 0xea, 0x4f, 0xed, 0x70, 0xef, 0xe4, 0xf1, 0x3f, 0xf4, 0x0b, 0xf5, 0x5f, 0xf6, + 0x65, 0xf8, 0x59, 0xfc, 0x1c, 0x01, 0x8c, 0x02, 0xe4, 0x04, 0x9a, 0x05, 0x87, 0x05, 0x2d, 0x07, + 0x57, 0x09, 0xbb, 0x0b, 0x80, 0x0d, 0x5e, 0x0d, 0x81, 0x0d, 0x34, 0x0d, 0xa0, 0x0c, 0x4d, 0x0f, + 0x73, 0x12, 0x68, 0x14, 0xb9, 0x13, 0x6b, 0x10, 0xbb, 0x0e, 0xff, 0x0b, 0xe7, 0x08, 0x66, 0x06, + 0xfa, 0x03, 0x96, 0x01, 0x9e, 0xfc, 0xf9, 0xf6, 0xa7, 0xf2, 0x67, 0xee, 0x78, 0xea, 0x66, 0xe8, + 0x42, 0xe8, 0x2c, 0xe8, 0xc2, 0xe7, 0xfa, 0xe7, 0x91, 0xea, 0x39, 0xed, 0xd0, 0xef, 0x71, 0xf3, + 0xe0, 0xf6, 0x01, 0xfa, 0xff, 0xfb, 0xd6, 0xfe, 0xcf, 0x03, 0x9a, 0x06, 0x7b, 0x06, 0xf9, 0x06, + 0x50, 0x07, 0x19, 0x07, 0xd0, 0x08, 0x5b, 0x09, 0xf6, 0x0b, 0x07, 0x0d, 0x94, 0x0c, 0xbd, 0x0e, + 0x24, 0x0f, 0x4c, 0x11, 0xce, 0x14, 0xe2, 0x18, 0xb7, 0x1c, 0x46, 0x1d, 0xd3, 0x1c, 0xef, 0x1a, + 0xc0, 0x19, 0x79, 0x16, 0xf0, 0x13, 0xcc, 0x11, 0xbb, 0x0d, 0xc3, 0x08, 0xef, 0x01, 0x33, 0xfc, + 0xa3, 0xf6, 0xb4, 0xf0, 0xe6, 0xed, 0x48, 0xeb, 0x0a, 0xe9, 0xb1, 0xe7, 0x5d, 0xe7, 0xd6, 0xe8, + 0x4e, 0xea, 0x03, 0xec, 0xc4, 0xed, 0x4a, 0xf0, 0x82, 0xf2, 0x0b, 0xf3, 0xd7, 0xf4, 0xa7, 0xf7, + 0x78, 0xf8, 0xf5, 0xf8, 0x6c, 0xf9, 0x63, 0xf8, 0xe9, 0xf8, 0xa8, 0xf9, 0x71, 0xfb, 0xeb, 0xfd, + 0x7f, 0xfe, 0x24, 0xff, 0x08, 0xff, 0xf1, 0xfd, 0xb2, 0xfc, 0xfa, 0xfe, 0xe6, 0x03, 0xed, 0x07, + 0x0d, 0x0a, 0xcb, 0x09, 0x02, 0x0b, 0x66, 0x0b, 0x49, 0x0b, 0xb6, 0x0d, 0x2f, 0x0e, 0x38, 0x0d, + 0x76, 0x0a, 0x71, 0x06, 0x4d, 0x03, 0x84, 0xff, 0x8b, 0xfc, 0x93, 0xfb, 0x86, 0xfb, 0xdf, 0xfb, + 0xcb, 0xfc, 0x4b, 0xfe, 0x1a, 0x01, 0xf5, 0x02, 0x82, 0x04, 0x45, 0x07, 0xd4, 0x09, 0xcb, 0x0a, + 0xf7, 0x08, 0x49, 0x08, 0x3a, 0x08, 0xac, 0x06, 0xee, 0x05, 0x4b, 0x04, 0x39, 0x02, 0x24, 0xff, + 0x7d, 0xfc, 0xee, 0xfb, 0x6d, 0xfb, 0xd9, 0xfa, 0x16, 0xf9, 0x58, 0xf7, 0x95, 0xf4, 0x64, 0xf2, + 0xb0, 0xf3, 0xea, 0xf6, 0x47, 0xfa, 0xa8, 0xfb, 0x6a, 0xfc, 0xc6, 0xfe, 0xb7, 0xff, 0xf2, 0xff, + 0x41, 0x01, 0xf2, 0x00, 0x76, 0xff, 0x74, 0xfc, 0x00, 0xf9, 0x8e, 0xf6, 0xe5, 0xf2, 0x14, 0xef, + 0x47, 0xed, 0xf5, 0xec, 0xe0, 0xed, 0x37, 0xf0, 0x34, 0xf3, 0x67, 0xf7, 0x4f, 0xfb, 0x41, 0xfe, + 0xfe, 0x01, 0x3b, 0x06, 0x45, 0x08, 0x55, 0x0a, 0x72, 0x0d, 0xe5, 0x10, 0xff, 0x13, 0x02, 0x15, + 0x3e, 0x15, 0x0e, 0x15, 0xd5, 0x13, 0x52, 0x13, 0x39, 0x13, 0x3d, 0x14, 0x34, 0x13, 0x19, 0x11, + 0x2c, 0x0e, 0xdb, 0x0a, 0x81, 0x08, 0x34, 0x08, 0xe8, 0x0a, 0xdb, 0x0c, 0x7a, 0x0d, 0x48, 0x0d, + 0xd4, 0x0b, 0x76, 0x09, 0x88, 0x05, 0xd1, 0x02, 0x9e, 0xff, 0x1b, 0xfb, 0xfb, 0xf5, 0xb7, 0xef, + 0x64, 0xea, 0xef, 0xe3, 0xf9, 0xde, 0xd6, 0xdc, 0x94, 0xdb, 0xbd, 0xdb, 0x3b, 0xdc, 0x73, 0xdd, + 0x54, 0xdf, 0x1e, 0xe1, 0xab, 0xe3, 0x6b, 0xe8, 0x08, 0xed, 0x81, 0xf0, 0x9e, 0xf4, 0xa0, 0xf8, + 0x95, 0xfe, 0x2b, 0x04, 0x50, 0x08, 0xea, 0x0d, 0x9d, 0x10, 0xbe, 0x11, 0x37, 0x13, 0x34, 0x15, + 0x3a, 0x16, 0x32, 0x17, 0xe0, 0x17, 0xde, 0x17, 0xc8, 0x17, 0xb6, 0x16, 0x16, 0x18, 0x83, 0x1c, + 0x54, 0x1f, 0x65, 0x21, 0xe9, 0x21, 0xaa, 0x21, 0xee, 0x1f, 0xf5, 0x1b, 0xe4, 0x18, 0x07, 0x15, + 0x61, 0x0f, 0x6a, 0x09, 0xc4, 0x03, 0xae, 0xfd, 0x3c, 0xf7, 0x84, 0xf0, 0xcf, 0xeb, 0x4e, 0xe8, + 0x2c, 0xe5, 0xf9, 0xe2, 0xa9, 0xe1, 0x46, 0xe2, 0x79, 0xe1, 0x4d, 0xe2, 0x7b, 0xe5, 0x4b, 0xe8, + 0xbe, 0xea, 0x2b, 0xeb, 0x76, 0xed, 0x74, 0xf0, 0x93, 0xf2, 0xa5, 0xf4, 0xc4, 0xf5, 0xb7, 0xf5, + 0x5c, 0xf4, 0xd0, 0xf4, 0x90, 0xf5, 0xc4, 0xf7, 0x67, 0xfa, 0xe9, 0xfa, 0x80, 0xfc, 0xd2, 0xfc, + 0x0a, 0xfd, 0xcd, 0x00, 0xf5, 0x05, 0x66, 0x0a, 0xeb, 0x0d, 0xa2, 0x10, 0xd6, 0x12, 0x94, 0x14, + 0x20, 0x14, 0x87, 0x14, 0x5c, 0x15, 0xee, 0x13, 0x2e, 0x12, 0x71, 0x0f, 0x0f, 0x0c, 0x52, 0x07, + 0xe9, 0x01, 0xd0, 0xfd, 0xdd, 0xfa, 0x7e, 0xf7, 0x40, 0xf5, 0x96, 0xf4, 0x06, 0xf4, 0x0c, 0xf4, + 0x81, 0xf5, 0xf2, 0xf7, 0xaf, 0xfa, 0xcd, 0xfb, 0xda, 0xfc, 0x75, 0xfe, 0xf7, 0x00, 0xe9, 0x01, + 0xa7, 0x01, 0xbe, 0x01, 0x44, 0x00, 0xb7, 0xfe, 0x52, 0xfd, 0x78, 0xfc, 0xb6, 0xfc, 0xa5, 0xfc, + 0x9e, 0xfc, 0xcf, 0xfd, 0x44, 0xfd, 0x71, 0xfc, 0x9f, 0xfd, 0xe7, 0xff, 0x03, 0x03, 0x97, 0x06, + 0x36, 0x09, 0x48, 0x0b, 0x8d, 0x0a, 0x71, 0x08, 0xc9, 0x08, 0xcf, 0x08, 0x1f, 0x08, 0x31, 0x07, + 0x9b, 0x04, 0xdd, 0x00, 0xec, 0xfc, 0xea, 0xf7, 0x53, 0xf5, 0xb8, 0xf3, 0x1c, 0xf1, 0x13, 0xf1, + 0xe1, 0xf1, 0xe3, 0xf2, 0xa4, 0xf4, 0xa7, 0xf6, 0x6c, 0xfa, 0x33, 0xfd, 0x76, 0xff, 0xf2, 0x01, + 0x97, 0x04, 0xd4, 0x06, 0x3f, 0x07, 0xd3, 0x07, 0xd8, 0x08, 0x22, 0x08, 0x92, 0x07, 0x7b, 0x06, + 0xe6, 0x05, 0xd9, 0x05, 0x15, 0x05, 0x60, 0x05, 0x2b, 0x05, 0x1f, 0x03, 0xdc, 0xff, 0x94, 0xff, + 0x51, 0x01, 0x35, 0x03, 0xa2, 0x05, 0x12, 0x07, 0x4b, 0x09, 0xc6, 0x08, 0xa2, 0x07, 0xcf, 0x08, + 0x8f, 0x08, 0xce, 0x06, 0xd3, 0x03, 0xee, 0xff, 0x58, 0xfc, 0xb8, 0xf7, 0xa5, 0xf2, 0xd8, 0xef, + 0xb1, 0xec, 0x75, 0xea, 0x30, 0xeb, 0x77, 0xec, 0x1c, 0xf0, 0xd1, 0xf2, 0x46, 0xf6, 0xa6, 0xfb, + 0xd6, 0x00, 0x19, 0x04, 0xe6, 0x06, 0x3b, 0x09, 0xad, 0x0a, 0x9e, 0x0c, 0x74, 0x0e, 0xdf, 0x0f, + 0xad, 0x10, 0x22, 0x0f, 0xae, 0x0d, 0x8d, 0x0c, 0xf0, 0x0b, 0xc5, 0x0b, 0x61, 0x0b, 0x92, 0x0a, + 0xef, 0x06, 0xa0, 0x03, 0x0f, 0x02, 0x73, 0x02, 0x11, 0x04, 0x50, 0x05, 0xc6, 0x06, 0x6e, 0x08, + 0x63, 0x08, 0x18, 0x07, 0x86, 0x07, 0xb7, 0x05, 0x91, 0x03, 0xc2, 0x00, 0x84, 0xfc, 0xed, 0xf8, + 0x45, 0xf2, 0xb5, 0xec, 0xdb, 0xe7, 0xfc, 0xe2, 0x5f, 0xe0, 0x62, 0xdf, 0x17, 0xe1, 0x3f, 0xe2, + 0x3d, 0xe3, 0x16, 0xe5, 0x24, 0xe9, 0x23, 0xed, 0xdd, 0xef, 0x90, 0xf3, 0x58, 0xf6, 0x7f, 0xf9, + 0xd9, 0xfc, 0x30, 0xff, 0xe8, 0x03, 0xc0, 0x06, 0x11, 0x08, 0x98, 0x0a, 0x1c, 0x0c, 0xe4, 0x0d, + 0x9d, 0x10, 0x6e, 0x13, 0x42, 0x15, 0x76, 0x15, 0xd3, 0x14, 0xa5, 0x15, 0x72, 0x17, 0x17, 0x1a, + 0xf4, 0x1c, 0xa4, 0x1f, 0x6c, 0x21, 0xfa, 0x1f, 0xa9, 0x1d, 0xc9, 0x1a, 0x40, 0x17, 0x33, 0x12, + 0xe0, 0x0b, 0x72, 0x06, 0x11, 0xff, 0x1e, 0xf7, 0x03, 0xf0, 0x26, 0xea, 0xac, 0xe4, 0x44, 0xe0, + 0x7b, 0xde, 0x05, 0xdd, 0xb1, 0xdc, 0x71, 0xdb, 0x41, 0xdc, 0x25, 0xdf, 0x22, 0xe1, 0xca, 0xe3, + 0x01, 0xe7, 0xbe, 0xe9, 0x7f, 0xed, 0x29, 0xf1, 0x50, 0xf5, 0x96, 0xfa, 0x8f, 0xfd, 0x2a, 0xff, + 0x63, 0x00, 0x8d, 0x01, 0xe4, 0x02, 0xec, 0x03, 0x95, 0x05, 0x1b, 0x07, 0xa6, 0x06, 0x76, 0x06, + 0x82, 0x08, 0xf8, 0x0b, 0x1a, 0x10, 0x0b, 0x15, 0x6e, 0x19, 0x31, 0x1d, 0x25, 0x1f, 0x39, 0x1f, + 0xe9, 0x1f, 0xae, 0x1f, 0xe5, 0x1c, 0x5f, 0x1a, 0x67, 0x17, 0x8e, 0x13, 0x99, 0x0e, 0xa1, 0x08, + 0x51, 0x03, 0xa4, 0xfe, 0xdf, 0xfa, 0x06, 0xf8, 0x1d, 0xf6, 0x6a, 0xf4, 0x99, 0xf1, 0x97, 0xf1, + 0x47, 0xf3, 0x2c, 0xf4, 0x84, 0xf6, 0xcd, 0xf6, 0x33, 0xf7, 0x62, 0xf8, 0xa9, 0xf8, 0x35, 0xfa, + 0x65, 0xfb, 0xeb, 0xfa, 0x44, 0xf9, 0x4d, 0xf7, 0x6d, 0xf5, 0x52, 0xf4, 0xb7, 0xf4, 0x07, 0xf5, + 0x57, 0xf5, 0x1f, 0xf5, 0xc3, 0xf4, 0x1c, 0xf6, 0xa9, 0xf7, 0x09, 0xf9, 0x6e, 0xfc, 0xcb, 0xff, + 0xe9, 0x03, 0x49, 0x06, 0xb3, 0x06, 0x45, 0x08, 0x82, 0x07, 0x75, 0x07, 0xc5, 0x07, 0x02, 0x08, + 0x2a, 0x07, 0xa1, 0x04, 0x48, 0x02, 0x16, 0xff, 0x05, 0xfc, 0xe5, 0xf9, 0xaa, 0xf8, 0x29, 0xfa, + 0xfd, 0xf9, 0x0f, 0xfa, 0xf3, 0xfc, 0x24, 0x00, 0xae, 0x03, 0x88, 0x06, 0x29, 0x09, 0x18, 0x0c, + 0xae, 0x0e, 0x75, 0x0f, 0x71, 0x10, 0xf4, 0x10, 0x11, 0x0f, 0xf4, 0x0d, 0xd4, 0x0b, 0x3f, 0x09, + 0x54, 0x07, 0xe9, 0x05, 0x57, 0x05, 0x33, 0x05, 0x66, 0x03, 0x53, 0x01, 0x09, 0x01, 0x8b, 0xff, + 0xaa, 0xff, 0x1c, 0x01, 0xb2, 0x02, 0xc6, 0x05, 0xbb, 0x04, 0x5f, 0x03, 0x45, 0x02, 0x0a, 0x01, + 0x07, 0x00, 0xb3, 0xfe, 0x0d, 0xfc, 0x4b, 0xf7, 0x5d, 0xf2, 0xbf, 0xed, 0x76, 0xe9, 0x83, 0xe5, + 0xf2, 0xe0, 0x94, 0xde, 0xe4, 0xdd, 0x5a, 0xdd, 0x42, 0xde, 0x0d, 0xe1, 0xdc, 0xe5, 0x0b, 0xeb, + 0x6a, 0xef, 0x72, 0xf4, 0x96, 0xf9, 0xb2, 0xfd, 0x9a, 0x01, 0xa5, 0x05, 0x14, 0x0a, 0x4d, 0x0d, + 0xba, 0x0f, 0xb3, 0x11, 0x0e, 0x12, 0xcc, 0x12, 0x5f, 0x13, 0x47, 0x15, 0xee, 0x16, 0x15, 0x16, + 0x4f, 0x15, 0x28, 0x13, 0x39, 0x12, 0xdd, 0x11, 0x31, 0x12, 0x64, 0x14, 0x9d, 0x15, 0x97, 0x15, + 0xf8, 0x13, 0x7a, 0x13, 0x4b, 0x11, 0xfd, 0x0d, 0xf0, 0x0a, 0x33, 0x06, 0x1c, 0x01, 0x23, 0xfb, + 0x1b, 0xf4, 0xbb, 0xee, 0xbd, 0xe8, 0x5d, 0xe3, 0x94, 0xe0, 0xdd, 0xde, 0xe7, 0xde, 0xa2, 0xdf, + 0xfd, 0xe0, 0x26, 0xe4, 0x57, 0xe7, 0xbb, 0xea, 0xd4, 0xee, 0xf8, 0xf1, 0x3e, 0xf4, 0x2c, 0xf6, + 0x05, 0xf9, 0xb3, 0xfb, 0x46, 0xfe, 0xa5, 0x00, 0x37, 0x02, 0xc9, 0x03, 0x2b, 0x05, 0x44, 0x07, + 0xa1, 0x0a, 0x71, 0x0c, 0x2e, 0x0e, 0x87, 0x0e, 0x00, 0x0f, 0xe0, 0x0f, 0x92, 0x10, 0xd8, 0x13, + 0x4a, 0x17, 0x24, 0x1a, 0xd1, 0x1b, 0x0c, 0x1d, 0xf9, 0x1d, 0xef, 0x1c, 0x68, 0x1b, 0x1e, 0x19, + 0xec, 0x14, 0x2f, 0x10, 0xb6, 0x09, 0xdb, 0x03, 0x0d, 0xfe, 0x54, 0xf6, 0x6f, 0xf0, 0xe1, 0xeb, + 0x00, 0xe9, 0x15, 0xe7, 0x84, 0xe4, 0x72, 0xe4, 0x04, 0xe6, 0xbb, 0xe6, 0x8b, 0xe8, 0x66, 0xeb, + 0xd3, 0xed, 0x53, 0xef, 0xe7, 0xf0, 0x89, 0xf3, 0xeb, 0xf6, 0x7a, 0xfa, 0xc3, 0xfc, 0x1e, 0xfe, + 0xf9, 0xfe, 0x66, 0xfe, 0xc9, 0x00, 0x15, 0x03, 0xe0, 0x04, 0xd9, 0x05, 0xdc, 0x04, 0xfe, 0x05, + 0x05, 0x06, 0x79, 0x07, 0xb4, 0x0b, 0x60, 0x10, 0x68, 0x15, 0xac, 0x17, 0x0d, 0x19, 0xe2, 0x19, + 0x4e, 0x19, 0xd7, 0x18, 0x67, 0x16, 0x3e, 0x13, 0xf3, 0x0e, 0x26, 0x0a, 0xa8, 0x05, 0x34, 0x00, + 0x94, 0xfa, 0x86, 0xf5, 0x67, 0xf2, 0xe4, 0xf0, 0x19, 0xef, 0x33, 0xec, 0x1a, 0xeb, 0x09, 0xec, + 0x5a, 0xec, 0xe1, 0xed, 0x95, 0xf0, 0x5c, 0xf2, 0x12, 0xf4, 0x2e, 0xf6, 0x42, 0xf8, 0xeb, 0xfb, + 0x97, 0xfe, 0x52, 0x00, 0xfa, 0x01, 0x5f, 0x00, 0xf8, 0xff, 0xf7, 0xff, 0xcb, 0xff, 0xf6, 0xff, + 0xc5, 0xfe, 0xf1, 0xfd, 0x07, 0xff, 0x60, 0xff, 0xc0, 0xff, 0x9f, 0x02, 0x7c, 0x05, 0x07, 0x08, + 0x23, 0x0b, 0x86, 0x0c, 0x3b, 0x0d, 0x12, 0x0d, 0x77, 0x0b, 0x14, 0x0a, 0xdf, 0x07, 0xfc, 0x04, + 0xbf, 0x02, 0x99, 0x00, 0x9d, 0xfd, 0x34, 0xfa, 0xb1, 0xf6, 0xe4, 0xf4, 0x1d, 0xf4, 0xa7, 0xf2, + 0xed, 0xf1, 0xa4, 0xf2, 0x3c, 0xf5, 0x4b, 0xf7, 0x99, 0xfa, 0xb7, 0xfe, 0xe4, 0xff, 0x6e, 0x02, + 0x63, 0x04, 0xda, 0x06, 0xaf, 0x09, 0x5c, 0x09, 0x31, 0x0a, 0x5a, 0x08, 0xbb, 0x05, 0xac, 0x03, + 0x40, 0x02, 0x59, 0x02, 0x9f, 0x01, 0x85, 0x00, 0x10, 0x00, 0x8a, 0xff, 0x9d, 0xfd, 0x83, 0xfc, + 0x67, 0xfe, 0x57, 0xff, 0x5a, 0x01, 0x82, 0x03, 0xdd, 0x03, 0xf2, 0x04, 0xca, 0x03, 0xde, 0x02, + 0x02, 0x04, 0x2b, 0x03, 0x97, 0x01, 0x9b, 0xff, 0x18, 0xfc, 0xe8, 0xf8, 0x2e, 0xf4, 0xbd, 0xef, + 0x5e, 0xed, 0x11, 0xeb, 0xb3, 0xe8, 0xcb, 0xe6, 0x88, 0xe7, 0x72, 0xe9, 0x3d, 0xec, 0xd0, 0xf1, + 0x69, 0xf7, 0x2f, 0xfc, 0x46, 0x00, 0xc2, 0x03, 0xd5, 0x07, 0x8a, 0x0b, 0xe6, 0x0e, 0x79, 0x11, + 0x1d, 0x13, 0x9e, 0x13, 0x70, 0x13, 0xcb, 0x13, 0x07, 0x15, 0x8e, 0x15, 0xd1, 0x15, 0x3c, 0x16, + 0x8a, 0x16, 0x73, 0x14, 0xf7, 0x12, 0xf9, 0x12, 0x9f, 0x12, 0xf9, 0x13, 0x30, 0x14, 0x79, 0x13, + 0x7d, 0x12, 0x20, 0x10, 0x49, 0x0e, 0xc9, 0x0b, 0x4a, 0x07, 0xce, 0x02, 0x1f, 0xfd, 0x73, 0xf7, + 0xd6, 0xf1, 0x9f, 0xea, 0xa5, 0xe4, 0xe8, 0xdf, 0x78, 0xdb, 0xc1, 0xd7, 0x9d, 0xd5, 0x00, 0xd6, + 0x86, 0xd7, 0x4d, 0xda, 0x63, 0xdd, 0x35, 0xe1, 0x0b, 0xe5, 0xf1, 0xe8, 0x92, 0xed, 0xb0, 0xf1, + 0xd9, 0xf5, 0x33, 0xfa, 0x5c, 0xfe, 0x25, 0x02, 0x5c, 0x04, 0xeb, 0x06, 0x22, 0x0a, 0x3a, 0x0d, + 0x8b, 0x0f, 0x10, 0x11, 0x63, 0x14, 0x53, 0x16, 0xca, 0x15, 0xcb, 0x16, 0x3c, 0x18, 0x5e, 0x1b, + 0xfc, 0x1e, 0x0a, 0x21, 0x04, 0x23, 0x4c, 0x23, 0x76, 0x22, 0x78, 0x22, 0x23, 0x21, 0xdf, 0x1d, + 0xb8, 0x18, 0xa6, 0x12, 0xb7, 0x0c, 0xcb, 0x05, 0x38, 0xfe, 0x0e, 0xf7, 0xe3, 0xf1, 0xe5, 0xec, + 0xe3, 0xe7, 0x00, 0xe5, 0xcb, 0xe2, 0x13, 0xe3, 0x38, 0xe3, 0xa5, 0xe4, 0x52, 0xe7, 0x4c, 0xe8, + 0xb7, 0xea, 0xdb, 0xeb, 0xc9, 0xec, 0xd5, 0xee, 0x9c, 0xf0, 0xed, 0xf3, 0x76, 0xf6, 0x50, 0xf7, + 0x42, 0xf7, 0xd3, 0xf7, 0x5a, 0xf9, 0xe0, 0xf9, 0xbd, 0xfb, 0x56, 0xfd, 0x9e, 0xfd, 0xbc, 0xfc, + 0xac, 0xfc, 0x0e, 0xfe, 0x62, 0x01, 0x75, 0x05, 0x5e, 0x09, 0xda, 0x0d, 0x92, 0x10, 0x71, 0x13, + 0xed, 0x15, 0x30, 0x17, 0x7a, 0x17, 0x26, 0x15, 0xec, 0x12, 0x92, 0x10, 0x78, 0x0d, 0x3d, 0x08, + 0xe1, 0x02, 0x20, 0xff, 0x8e, 0xfa, 0xd7, 0xf7, 0x66, 0xf5, 0xe5, 0xf3, 0x65, 0xf3, 0x87, 0xf2, + 0x46, 0xf4, 0x80, 0xf6, 0x23, 0xf8, 0x47, 0xfa, 0x0e, 0xfb, 0xef, 0xfc, 0xfc, 0xfe, 0xa2, 0x00, + 0xee, 0x02, 0x29, 0x04, 0x1a, 0x04, 0x16, 0x03, 0xd2, 0x02, 0x36, 0x03, 0xdc, 0x02, 0x63, 0x02, + 0xb9, 0x01, 0xc6, 0x00, 0x94, 0xff, 0x44, 0xff, 0x31, 0x01, 0x16, 0x03, 0x13, 0x05, 0x8c, 0x07, + 0xc3, 0x08, 0x2b, 0x0a, 0xbe, 0x0a, 0xb5, 0x0a, 0xb2, 0x09, 0x03, 0x07, 0x57, 0x03, 0xe5, 0xfe, + 0x65, 0xfc, 0x3e, 0xf8, 0xb7, 0xf3, 0x37, 0xf1, 0x4b, 0xee, 0xeb, 0xec, 0x27, 0xeb, 0x39, 0xea, + 0x3f, 0xea, 0xe9, 0xea, 0xd4, 0xec, 0xe8, 0xf0, 0x5e, 0xf5, 0x46, 0xf9, 0xc7, 0xfd, 0x46, 0x01, + 0xbc, 0x04, 0xfc, 0x08, 0xfe, 0x0c, 0xc9, 0x11, 0x7c, 0x14, 0xfb, 0x13, 0x7d, 0x13, 0x3e, 0x13, + 0xcf, 0x11, 0x94, 0x0f, 0x23, 0x0e, 0x27, 0x0d, 0x7a, 0x0c, 0x2a, 0x0a, 0x7c, 0x08, 0x56, 0x08, + 0x69, 0x08, 0x9f, 0x09, 0x17, 0x0b, 0xd3, 0x0c, 0x63, 0x0d, 0x84, 0x0c, 0xc0, 0x0b, 0x17, 0x0a, + 0xbc, 0x07, 0x27, 0x04, 0xc9, 0x01, 0xf0, 0xff, 0x30, 0xfb, 0x18, 0xf6, 0xd5, 0xf1, 0x7c, 0xee, + 0xdc, 0xea, 0xb2, 0xe6, 0xa6, 0xe4, 0xcf, 0xe3, 0x16, 0xe3, 0xba, 0xe3, 0xd1, 0xe5, 0xe5, 0xe9, + 0x01, 0xee, 0x0d, 0xf3, 0xca, 0xf7, 0x48, 0xfb, 0x16, 0xff, 0xb9, 0x02, 0x76, 0x07, 0x5f, 0x0a, + 0xc3, 0x0a, 0xd7, 0x0b, 0x2f, 0x0c, 0x67, 0x0c, 0x84, 0x0d, 0x3a, 0x0d, 0x3a, 0x0e, 0x05, 0x0f, + 0xcc, 0x0d, 0x67, 0x0d, 0x25, 0x0d, 0x17, 0x0d, 0xce, 0x0d, 0x6e, 0x0e, 0xdf, 0x0e, 0xb4, 0x0e, + 0x9e, 0x0e, 0xa2, 0x0d, 0xa5, 0x0d, 0x30, 0x0c, 0xa5, 0x08, 0xb1, 0x06, 0x2c, 0x03, 0x4c, 0xfe, + 0x7f, 0xf8, 0x5d, 0xf2, 0xd8, 0xed, 0x4c, 0xe8, 0x68, 0xe3, 0x46, 0xdf, 0x93, 0xdb, 0x2e, 0xdb, + 0x4f, 0xdc, 0xaa, 0xdf, 0x32, 0xe4, 0x5c, 0xe8, 0x8d, 0xec, 0x86, 0xf0, 0x7b, 0xf4, 0xbe, 0xf7, + 0xc3, 0xfb, 0x92, 0xff, 0xe3, 0x01, 0x94, 0x02, 0x86, 0x03, 0x3c, 0x05, 0x03, 0x07, 0x4c, 0x08, + 0xce, 0x09, 0x8c, 0x0c, 0x76, 0x0e, 0xd9, 0x0f, 0x52, 0x11, 0x73, 0x12, 0xca, 0x13, 0x9a, 0x15, + 0x65, 0x18, 0xc7, 0x1a, 0xb1, 0x1c, 0xa0, 0x1c, 0xe6, 0x1c, 0xd3, 0x1c, 0x07, 0x1a, 0xf5, 0x16, + 0x9e, 0x13, 0xa6, 0x0e, 0x4c, 0x08, 0xf2, 0x00, 0x0d, 0xfa, 0x7d, 0xf3, 0x71, 0xec, 0x65, 0xe6, + 0xf5, 0xe1, 0x72, 0xdd, 0xbc, 0xda, 0x27, 0xda, 0x27, 0xdb, 0x3a, 0xdd, 0x73, 0xdf, 0xdd, 0xe2, + 0xaa, 0xe6, 0xd3, 0xe9, 0xf0, 0xeb, 0x85, 0xef, 0x14, 0xf4, 0x73, 0xf7, 0xe7, 0xfa, 0xf1, 0xfd, + 0x55, 0x01, 0x0c, 0x03, 0xaa, 0x03, 0xb1, 0x05, 0x7c, 0x07, 0x40, 0x09, 0xbd, 0x08, 0xda, 0x08, + 0x54, 0x09, 0xe8, 0x09, 0x8c, 0x0c, 0x1d, 0x0f, 0x02, 0x13, 0x43, 0x15, 0xc6, 0x16, 0x11, 0x1a, + 0x81, 0x1b, 0xbe, 0x1b, 0x2e, 0x1a, 0x91, 0x17, 0x2a, 0x15, 0x26, 0x10, 0x1c, 0x0b, 0x01, 0x07, + 0xfd, 0x02, 0xa3, 0xfd, 0xdf, 0xf8, 0x14, 0xf5, 0xb8, 0xf2, 0x5f, 0xf2, 0x78, 0xf1, 0x08, 0xf2, + 0xb6, 0xf3, 0xef, 0xf4, 0x1f, 0xf7, 0x5a, 0xf9, 0x47, 0xf9, 0x3d, 0xfa, 0xd1, 0xfb, 0xed, 0xfc, + 0xde, 0xfe, 0x27, 0xff, 0x3f, 0xff, 0x3c, 0xff, 0x29, 0xfe, 0x9c, 0xfd, 0xcb, 0xfc, 0xf0, 0xfc, + 0xb5, 0xfc, 0xa1, 0xfa, 0xdc, 0xf8, 0x2b, 0xf8, 0xd7, 0xf8, 0xfc, 0xfa, 0x8f, 0xfd, 0x61, 0x00, + 0x9d, 0x02, 0x21, 0x05, 0x6b, 0x08, 0xaa, 0x0a, 0xbb, 0x0b, 0x28, 0x0b, 0x16, 0x0a, 0xa4, 0x08, + 0xf4, 0x04, 0x1f, 0x01, 0xc0, 0xfd, 0xd7, 0xf9, 0x76, 0xf6, 0x90, 0xf3, 0x83, 0xf1, 0x74, 0xf0, + 0xc6, 0xef, 0x03, 0xf0, 0x76, 0xf2, 0xfb, 0xf5, 0xfb, 0xf8, 0x31, 0xfe, 0x11, 0x02, 0x09, 0x04, + 0x3a, 0x07, 0x0e, 0x0a, 0x13, 0x0e, 0x72, 0x11, 0x24, 0x12, 0x84, 0x13, 0xc8, 0x13, 0xb2, 0x12, + 0xd1, 0x11, 0x01, 0x10, 0x76, 0x0e, 0x16, 0x0d, 0xcb, 0x0a, 0xd6, 0x08, 0xc3, 0x07, 0x8b, 0x06, + 0x16, 0x06, 0xd6, 0x06, 0x72, 0x07, 0xbe, 0x07, 0xe9, 0x07, 0xdf, 0x07, 0xe2, 0x06, 0xa2, 0x03, + 0x06, 0x00, 0x6d, 0xfc, 0x0a, 0xf9, 0x86, 0xf4, 0x0e, 0xf0, 0x55, 0xec, 0xd8, 0xe7, 0x09, 0xe4, + 0x70, 0xe0, 0xce, 0xdd, 0xfd, 0xdb, 0x53, 0xda, 0xd4, 0xd9, 0xff, 0xdb, 0x8b, 0xde, 0x16, 0xe2, + 0x0d, 0xe8, 0x46, 0xed, 0x8c, 0xf2, 0x08, 0xf8, 0x23, 0xfe, 0x4a, 0x05, 0xd0, 0x0a, 0x42, 0x0f, + 0xdf, 0x12, 0x8f, 0x15, 0xc3, 0x16, 0xd4, 0x17, 0x45, 0x18, 0xab, 0x18, 0x46, 0x19, 0xa9, 0x17, + 0x47, 0x17, 0x51, 0x17, 0xfe, 0x16, 0x6e, 0x18, 0x49, 0x19, 0x4b, 0x1a, 0xa9, 0x1a, 0xd0, 0x19, + 0x7b, 0x19, 0x1d, 0x19, 0xc0, 0x16, 0xf4, 0x12, 0x8b, 0x0f, 0x39, 0x0b, 0x05, 0x06, 0xef, 0xff, + 0x3d, 0xfa, 0x1f, 0xf5, 0xf2, 0xee, 0x35, 0xe9, 0xa8, 0xe3, 0x6b, 0xdf, 0x46, 0xdb, 0xb1, 0xd8, + 0xc9, 0xd8, 0xb7, 0xd9, 0x54, 0xdd, 0x80, 0xe1, 0x31, 0xe5, 0x2d, 0xe8, 0xd2, 0xea, 0xcf, 0xee, + 0x8f, 0xf2, 0x29, 0xf6, 0x80, 0xf8, 0x02, 0xfb, 0xba, 0xfc, 0xbf, 0xfd, 0x61, 0xff, 0xa4, 0x00, + 0x3b, 0x03, 0x51, 0x05, 0xf5, 0x06, 0x5c, 0x09, 0xcb, 0x0a, 0x9a, 0x0c, 0x72, 0x0f, 0xe9, 0x11, + 0x9e, 0x14, 0x58, 0x17, 0xc7, 0x19, 0xea, 0x1c, 0x95, 0x1e, 0xcf, 0x1e, 0xe4, 0x1e, 0xe0, 0x1d, + 0x0f, 0x1c, 0xf9, 0x17, 0xbc, 0x12, 0xa6, 0x0d, 0xb0, 0x07, 0xc6, 0x00, 0x14, 0xfa, 0x64, 0xf4, + 0x72, 0xee, 0x01, 0xea, 0x6c, 0xe7, 0xd5, 0xe6, 0xc6, 0xe7, 0x53, 0xe9, 0xd2, 0xec, 0x2d, 0xef, + 0x32, 0xf1, 0x41, 0xf3, 0xdc, 0xf5, 0xe2, 0xf8, 0xba, 0xf9, 0x08, 0xfb, 0xb0, 0xfc, 0x79, 0xfe, + 0xec, 0xff, 0x7e, 0x00, 0xed, 0x00, 0xb4, 0x01, 0x1c, 0x02, 0x93, 0x02, 0x1f, 0x04, 0xcc, 0x04, + 0xc9, 0x04, 0xd1, 0x05, 0xed, 0x06, 0x15, 0x09, 0xeb, 0x0a, 0x05, 0x0d, 0xd3, 0x0f, 0x21, 0x11, + 0x0a, 0x12, 0x58, 0x12, 0xdb, 0x11, 0xa8, 0x10, 0x4e, 0x0d, 0x9a, 0x08, 0xe8, 0x04, 0xc0, 0x00, + 0xad, 0xfb, 0x6f, 0xf7, 0xff, 0xf2, 0xa7, 0xee, 0xce, 0xeb, 0x6a, 0xe9, 0xa5, 0xe9, 0x5d, 0xea, + 0x98, 0xeb, 0xf9, 0xee, 0xa2, 0xf1, 0x65, 0xf3, 0x95, 0xf5, 0x8c, 0xf8, 0xb2, 0xfb, 0x76, 0xfe, + 0x45, 0x01, 0x9f, 0x03, 0xe2, 0x05, 0xd6, 0x06, 0xab, 0x06, 0x1c, 0x07, 0xde, 0x06, 0x5c, 0x06, + 0x21, 0x05, 0xe0, 0x03, 0x47, 0x02, 0x1a, 0x01, 0xb5, 0x01, 0x85, 0x03, 0xef, 0x05, 0x67, 0x07, + 0x1f, 0x09, 0xe9, 0x0a, 0x18, 0x0c, 0x97, 0x0c, 0x4f, 0x0c, 0x55, 0x0b, 0x22, 0x09, 0xf8, 0x04, + 0xa9, 0xff, 0x0c, 0xfc, 0x83, 0xf7, 0xc7, 0xf2, 0xaa, 0xef, 0x19, 0xec, 0x6d, 0xea, 0x87, 0xe9, + 0x66, 0xe9, 0xa7, 0xea, 0x43, 0xec, 0xc0, 0xef, 0x96, 0xf4, 0x36, 0xf9, 0xb6, 0xfc, 0xcb, 0xff, + 0x40, 0x03, 0xf9, 0x05, 0x16, 0x09, 0xbd, 0x0b, 0xb6, 0x0e, 0x56, 0x10, 0x2a, 0x10, 0x06, 0x10, + 0x7e, 0x0e, 0x75, 0x0d, 0x1c, 0x0c, 0xa3, 0x0a, 0xaa, 0x08, 0xba, 0x06, 0xaf, 0x04, 0x6e, 0x04, + 0x0e, 0x05, 0x79, 0x04, 0x0e, 0x05, 0x43, 0x06, 0xfb, 0x07, 0x74, 0x09, 0xef, 0x09, 0x6f, 0x09, + 0xeb, 0x07, 0xc6, 0x05, 0x85, 0x01, 0x25, 0xfe, 0x74, 0xfb, 0x6a, 0xf7, 0x2c, 0xf3, 0xc6, 0xee, + 0xae, 0xea, 0xc2, 0xe6, 0x27, 0xe4, 0x86, 0xe2, 0x6c, 0xe2, 0xc7, 0xe2, 0xb4, 0xe4, 0x41, 0xe9, + 0x8c, 0xec, 0xa3, 0xef, 0x93, 0xf3, 0xf8, 0xf7, 0x2a, 0xfd, 0xdc, 0x01, 0x38, 0x06, 0x80, 0x0a, + 0x44, 0x0e, 0x27, 0x10, 0xf1, 0x11, 0xb6, 0x13, 0xea, 0x14, 0x1a, 0x16, 0x03, 0x16, 0x90, 0x16, + 0x4a, 0x16, 0xf4, 0x15, 0xe9, 0x16, 0x7b, 0x17, 0x49, 0x18, 0xb6, 0x18, 0xe5, 0x18, 0x6c, 0x18, + 0xe1, 0x17, 0xf3, 0x15, 0x0f, 0x13, 0xc5, 0x10, 0x6b, 0x0c, 0x67, 0x07, 0xbc, 0x01, 0xf9, 0xfb, + 0x2f, 0xf6, 0xf0, 0xef, 0xff, 0xea, 0xb5, 0xe5, 0x4c, 0xe1, 0x11, 0xdd, 0x07, 0xd9, 0x46, 0xd7, + 0x0d, 0xd6, 0xff, 0xd7, 0x1a, 0xdc, 0xe5, 0xdf, 0x88, 0xe4, 0x38, 0xe8, 0x06, 0xed, 0x3f, 0xf2, + 0xfb, 0xf6, 0x45, 0xfc, 0x29, 0x01, 0x76, 0x04, 0xc5, 0x06, 0x79, 0x08, 0xcf, 0x08, 0x9f, 0x09, + 0x98, 0x0a, 0x2e, 0x0b, 0x96, 0x0c, 0xf2, 0x0d, 0x65, 0x0f, 0x95, 0x12, 0x29, 0x15, 0x50, 0x17, + 0x5d, 0x1a, 0xa4, 0x1c, 0x1a, 0x1f, 0x4b, 0x21, 0x86, 0x21, 0x7e, 0x21, 0x7d, 0x20, 0xec, 0x1d, + 0x4e, 0x1a, 0xd6, 0x15, 0x4a, 0x11, 0xad, 0x0b, 0x38, 0x05, 0x48, 0xff, 0xc4, 0xf8, 0x86, 0xf2, + 0x5e, 0xed, 0xb6, 0xe8, 0xaa, 0xe4, 0x03, 0xe2, 0x12, 0xe2, 0x94, 0xe3, 0x44, 0xe5, 0x9c, 0xe6, + 0x0a, 0xe8, 0x77, 0xea, 0x84, 0xec, 0xbb, 0xed, 0xa5, 0xef, 0xc4, 0xf1, 0x03, 0xf3, 0x97, 0xf4, + 0xcc, 0xf5, 0x1f, 0xf7, 0x81, 0xf8, 0x6f, 0xf9, 0xbd, 0xfa, 0x1a, 0xfc, 0xbe, 0xfc, 0xf0, 0xfd, + 0x5b, 0x00, 0xe9, 0x01, 0x8f, 0x03, 0x6e, 0x05, 0xd7, 0x06, 0x0a, 0x0a, 0x3e, 0x0c, 0x59, 0x0e, + 0x7d, 0x11, 0x61, 0x13, 0xf9, 0x13, 0x40, 0x13, 0x6c, 0x11, 0x48, 0x0f, 0x3c, 0x0c, 0x17, 0x08, + 0x4c, 0x04, 0x1e, 0x00, 0x16, 0xfb, 0x8a, 0xf7, 0x53, 0xf4, 0x71, 0xf2, 0x24, 0xf2, 0x3a, 0xf3, + 0x00, 0xf7, 0x81, 0xf9, 0x52, 0xfb, 0x14, 0xfd, 0x38, 0xff, 0x64, 0x01, 0xa3, 0x02, 0x45, 0x04, + 0x68, 0x06, 0xd0, 0x07, 0x05, 0x08, 0xb1, 0x07, 0xf6, 0x06, 0x6d, 0x06, 0xea, 0x05, 0xac, 0x05, + 0x2f, 0x05, 0x9b, 0x03, 0x00, 0x02, 0xb7, 0x00, 0x06, 0x00, 0x53, 0x00, 0xb9, 0x00, 0x3a, 0x02, + 0xd0, 0x03, 0x6b, 0x04, 0xe1, 0x04, 0x38, 0x05, 0x0b, 0x05, 0x30, 0x04, 0x92, 0x02, 0x9b, 0xfe, + 0x20, 0xfb, 0xb6, 0xf6, 0xd7, 0xf0, 0x20, 0xed, 0x72, 0xe8, 0x29, 0xe5, 0x6b, 0xe3, 0x1a, 0xe1, + 0xff, 0xe0, 0xb6, 0xe1, 0x00, 0xe4, 0x69, 0xe8, 0x27, 0xed, 0x45, 0xf1, 0xab, 0xf6, 0xee, 0xfb, + 0x7a, 0x00, 0x2c, 0x05, 0x80, 0x09, 0x5a, 0x0e, 0xe2, 0x11, 0x4b, 0x15, 0xef, 0x17, 0xc6, 0x18, + 0xd4, 0x18, 0xce, 0x17, 0x1b, 0x17, 0x5c, 0x15, 0x3f, 0x13, 0xed, 0x11, 0xd8, 0x10, 0xff, 0x10, + 0x0d, 0x10, 0xa3, 0x0f, 0x1d, 0x10, 0xf7, 0x0f, 0xd7, 0x0f, 0xfb, 0x0f, 0x3a, 0x10, 0x64, 0x0e, + 0x22, 0x0b, 0xd8, 0x06, 0x58, 0x01, 0x62, 0xfc, 0x14, 0xf7, 0x9d, 0xf2, 0x01, 0xef, 0x60, 0xea, + 0x74, 0xe6, 0xe8, 0xe2, 0xa9, 0xdf, 0x86, 0xde, 0xa3, 0xdd, 0x88, 0xde, 0x6a, 0xe2, 0x98, 0xe4, + 0x89, 0xe7, 0x2c, 0xeb, 0x47, 0xee, 0x23, 0xf2, 0xee, 0xf5, 0x74, 0xfa, 0x1b, 0x00, 0xcb, 0x04, + 0x2b, 0x08, 0xb0, 0x0b, 0x22, 0x0d, 0x76, 0x0e, 0xd4, 0x10, 0x09, 0x12, 0xe8, 0x12, 0xc8, 0x12, + 0x63, 0x12, 0x69, 0x13, 0x2e, 0x14, 0xb0, 0x14, 0xcc, 0x15, 0x5d, 0x17, 0x39, 0x18, 0x97, 0x18, + 0x77, 0x19, 0xc5, 0x19, 0x74, 0x19, 0x6f, 0x17, 0x30, 0x14, 0x9f, 0x10, 0x3d, 0x0c, 0x4f, 0x07, + 0x64, 0x01, 0x29, 0xfb, 0x7a, 0xf4, 0xf7, 0xee, 0x49, 0xea, 0x0f, 0xe5, 0xf5, 0xe0, 0x65, 0xdd, + 0x02, 0xdc, 0xaa, 0xdd, 0x8b, 0xdf, 0x2c, 0xe2, 0x82, 0xe5, 0x16, 0xe9, 0xf1, 0xec, 0xef, 0xef, + 0x75, 0xf3, 0x5f, 0xf8, 0xb8, 0xfb, 0x71, 0xff, 0x74, 0x02, 0xe1, 0x02, 0xb4, 0x04, 0x1f, 0x06, + 0xa2, 0x06, 0x24, 0x08, 0x38, 0x08, 0x6c, 0x09, 0x42, 0x0c, 0xfc, 0x0d, 0x3f, 0x10, 0x70, 0x12, + 0x9f, 0x14, 0x5c, 0x16, 0x26, 0x18, 0xe0, 0x19, 0xab, 0x1a, 0xba, 0x1a, 0x3f, 0x19, 0x0f, 0x17, + 0x60, 0x13, 0xfd, 0x0e, 0x79, 0x0a, 0x67, 0x05, 0xb9, 0xff, 0xa9, 0xf9, 0x3f, 0xf4, 0x51, 0xef, + 0xd9, 0xe9, 0x0e, 0xe5, 0xc8, 0xe1, 0xba, 0xe0, 0xc4, 0xe1, 0xd8, 0xe2, 0xa4, 0xe4, 0x49, 0xe7, + 0x1d, 0xea, 0xf3, 0xed, 0xab, 0xf1, 0xc9, 0xf5, 0x0d, 0xfa, 0xde, 0xfb, 0x35, 0xff, 0xbb, 0x01, + 0x94, 0x02, 0x10, 0x04, 0xa1, 0x04, 0x80, 0x05, 0x01, 0x06, 0x46, 0x05, 0xfe, 0x05, 0x54, 0x07, + 0x8d, 0x08, 0x45, 0x0a, 0xe2, 0x0b, 0x04, 0x0d, 0x8d, 0x0e, 0x53, 0x0f, 0x70, 0x10, 0x5d, 0x12, + 0xb6, 0x12, 0x45, 0x13, 0xe4, 0x12, 0xd6, 0x10, 0x86, 0x0e, 0x43, 0x0b, 0x17, 0x07, 0xa4, 0x03, + 0xee, 0xff, 0xaf, 0xfb, 0xd3, 0xf7, 0xcb, 0xf3, 0xab, 0xef, 0xc3, 0xec, 0xcb, 0xeb, 0x04, 0xed, + 0x5d, 0xee, 0x7b, 0xf0, 0xbc, 0xf2, 0x7a, 0xf4, 0x80, 0xf6, 0xc0, 0xf7, 0x7d, 0xf9, 0xb3, 0xfb, + 0x98, 0xfd, 0xf8, 0xff, 0x55, 0x01, 0xa9, 0x01, 0xad, 0x01, 0x3f, 0x01, 0x4d, 0x01, 0xc0, 0x01, + 0x31, 0x01, 0x12, 0x01, 0x77, 0x01, 0x91, 0x00, 0x97, 0x00, 0xad, 0x00, 0x78, 0x01, 0x27, 0x03, + 0x87, 0x04, 0xfe, 0x06, 0x53, 0x09, 0xe6, 0x0a, 0x80, 0x0b, 0x33, 0x0b, 0xae, 0x09, 0x63, 0x08, + 0xc6, 0x05, 0xe7, 0x01, 0x2c, 0xfe, 0xbe, 0xf8, 0x0e, 0xf4, 0x16, 0xf0, 0xbc, 0xeb, 0xf9, 0xe8, + 0x18, 0xe7, 0x41, 0xe8, 0x59, 0xeb, 0x96, 0xee, 0xc5, 0xf1, 0x0f, 0xf6, 0x52, 0xfa, 0xa6, 0xfd, + 0x75, 0x02, 0x29, 0x06, 0xfe, 0x09, 0xad, 0x0d, 0xfe, 0x0f, 0x95, 0x12, 0x1b, 0x14, 0x98, 0x15, + 0x63, 0x16, 0xad, 0x16, 0x51, 0x16, 0x05, 0x14, 0x01, 0x13, 0x6d, 0x11, 0xed, 0x0f, 0x6c, 0x0f, + 0x7d, 0x0e, 0x87, 0x0e, 0xb0, 0x0d, 0x2e, 0x0c, 0xca, 0x0b, 0xba, 0x0b, 0x9b, 0x0b, 0xd9, 0x0a, + 0x7e, 0x08, 0x6b, 0x04, 0x99, 0xff, 0x89, 0xfa, 0xf4, 0xf4, 0x91, 0xef, 0x4f, 0xea, 0x4a, 0xe6, + 0xa8, 0xe2, 0x37, 0xde, 0x0b, 0xda, 0xbe, 0xd7, 0x8a, 0xd7, 0xd8, 0xd8, 0x64, 0xda, 0x39, 0xdd, + 0xaf, 0xe1, 0x7a, 0xe5, 0xa5, 0xe9, 0x5e, 0xee, 0xe9, 0xf2, 0x8c, 0xf8, 0xdd, 0xfd, 0x34, 0x04, + 0xe0, 0x0a, 0x8d, 0x0e, 0x3c, 0x11, 0x33, 0x14, 0x3b, 0x16, 0x1f, 0x17, 0xa9, 0x17, 0x5f, 0x18, + 0x65, 0x19, 0xe3, 0x19, 0x59, 0x1a, 0x40, 0x1b, 0x14, 0x1d, 0x8e, 0x1d, 0x42, 0x1d, 0xc0, 0x1d, + 0xa2, 0x1d, 0x3a, 0x1d, 0x63, 0x1b, 0x9f, 0x18, 0xe6, 0x14, 0xe6, 0x0f, 0x8e, 0x0a, 0xc4, 0x04, + 0xa9, 0xfe, 0x63, 0xf8, 0x28, 0xf2, 0x2a, 0xed, 0xae, 0xe7, 0x51, 0xe3, 0x5c, 0xdf, 0x82, 0xdc, + 0x7b, 0xdc, 0x2f, 0xdc, 0x8a, 0xdd, 0xf3, 0xdf, 0x04, 0xe2, 0x04, 0xe5, 0x3e, 0xe8, 0x70, 0xeb, + 0x71, 0xef, 0x8d, 0xf3, 0x8c, 0xf7, 0xb2, 0xfb, 0x5e, 0xfe, 0x3f, 0x00, 0xca, 0x02, 0xcb, 0x03, + 0x6d, 0x04, 0x8d, 0x04, 0xda, 0x04, 0x1f, 0x06, 0x20, 0x07, 0x4b, 0x09, 0xf8, 0x0b, 0x8a, 0x0e, + 0x2e, 0x11, 0x34, 0x14, 0x2c, 0x17, 0x25, 0x1a, 0xb7, 0x1c, 0x00, 0x1e, 0x11, 0x1f, 0x4e, 0x1e, + 0x86, 0x1b, 0x3c, 0x18, 0x68, 0x14, 0xe7, 0x0f, 0x3e, 0x0a, 0x1f, 0x05, 0x61, 0xff, 0xc9, 0xf8, + 0xc3, 0xf2, 0x7b, 0xed, 0x4b, 0xea, 0x16, 0xe8, 0x5c, 0xe7, 0x67, 0xe7, 0x55, 0xe8, 0x49, 0xe9, + 0xaa, 0xea, 0xe6, 0xec, 0xf8, 0xee, 0x22, 0xf2, 0xe7, 0xf4, 0x72, 0xf7, 0x40, 0xfa, 0x8e, 0xfa, + 0x1a, 0xfb, 0xc4, 0xfc, 0x87, 0xfd, 0x57, 0xfe, 0xbd, 0xfe, 0x1f, 0xff, 0x5a, 0x00, 0xd9, 0x00, + 0xce, 0x01, 0x28, 0x04, 0xa9, 0x05, 0x16, 0x07, 0x14, 0x08, 0x69, 0x08, 0xc5, 0x09, 0xf2, 0x09, + 0x57, 0x0a, 0x62, 0x0a, 0x72, 0x09, 0x94, 0x08, 0xd6, 0x06, 0xbf, 0x04, 0xb5, 0x01, 0x49, 0xfe, + 0x0c, 0xfb, 0x5a, 0xf8, 0xc7, 0xf4, 0x69, 0xf0, 0x09, 0xee, 0x65, 0xec, 0xce, 0xeb, 0xdf, 0xec, + 0x6a, 0xee, 0xaf, 0xf1, 0xe7, 0xf4, 0xe1, 0xf7, 0x7a, 0xfb, 0x82, 0xfe, 0xb8, 0x01, 0xc0, 0x04, + 0x8c, 0x07, 0xdf, 0x0a, 0x0f, 0x0c, 0x2d, 0x0d, 0x13, 0x0e, 0x6a, 0x0d, 0x3b, 0x0d, 0x50, 0x0b, + 0xaa, 0x0a, 0x5d, 0x0b, 0x26, 0x0a, 0xa5, 0x0a, 0xec, 0x0a, 0x69, 0x0a, 0xbc, 0x0a, 0x54, 0x0a, + 0x5c, 0x0a, 0x06, 0x0c, 0x8a, 0x0d, 0x12, 0x0e, 0xb1, 0x0e, 0x91, 0x0d, 0x69, 0x0b, 0xe4, 0x08, + 0xd5, 0x04, 0x1a, 0x01, 0x18, 0xfd, 0x87, 0xf8, 0x6b, 0xf4, 0xc6, 0xee, 0xb4, 0xe9, 0xe3, 0xe5, + 0x87, 0xe3, 0xac, 0xe3, 0x28, 0xe5, 0x20, 0xe7, 0x54, 0xea, 0x6c, 0xed, 0x82, 0xf0, 0x38, 0xf4, + 0xb3, 0xf7, 0x8c, 0xfb, 0xa4, 0xff, 0xd3, 0x03, 0xcc, 0x07, 0x84, 0x0a, 0xfd, 0x0c, 0x16, 0x0f, + 0x9b, 0x10, 0xb8, 0x11, 0x97, 0x11, 0x10, 0x11, 0xb7, 0x10, 0x30, 0x0f, 0x9a, 0x0e, 0x7a, 0x0e, + 0x70, 0x0e, 0x87, 0x0e, 0x3c, 0x0e, 0xd6, 0x0d, 0x38, 0x0e, 0x3d, 0x0e, 0x20, 0x0f, 0xb6, 0x0f, + 0xd1, 0x0d, 0x19, 0x0c, 0xe4, 0x08, 0x1e, 0x04, 0xbe, 0xff, 0x5e, 0xf9, 0xbb, 0xf4, 0xfc, 0xf0, + 0x1b, 0xeb, 0xf5, 0xe6, 0xfc, 0xe2, 0xa5, 0xe0, 0x2c, 0xe0, 0xe5, 0xe0, 0x9f, 0xe2, 0x80, 0xe5, + 0x8d, 0xe8, 0x27, 0xeb, 0x24, 0xef, 0xa1, 0xf2, 0xc8, 0xf5, 0xa5, 0xf9, 0xae, 0xfd, 0x65, 0x02, + 0xf1, 0x05, 0x12, 0x09, 0x1e, 0x0d, 0x1e, 0x10, 0x3d, 0x12, 0x91, 0x13, 0x58, 0x14, 0x99, 0x15, + 0xcd, 0x15, 0xca, 0x15, 0x34, 0x17, 0xf8, 0x17, 0xb4, 0x18, 0x2e, 0x18, 0xca, 0x17, 0x07, 0x18, + 0x2d, 0x17, 0x7d, 0x17, 0x60, 0x16, 0xb6, 0x13, 0xc4, 0x10, 0x6b, 0x0c, 0xf6, 0x07, 0x5b, 0x02, + 0xf4, 0xfb, 0x93, 0xf6, 0xae, 0xf0, 0x7c, 0xea, 0x96, 0xe4, 0x47, 0xdf, 0xef, 0xda, 0xcc, 0xd8, + 0x3c, 0xd7, 0x68, 0xd7, 0x0c, 0xd9, 0x55, 0xda, 0xb8, 0xdc, 0x03, 0xe0, 0xcd, 0xe3, 0x86, 0xe8, + 0x38, 0xed, 0x50, 0xf2, 0x46, 0xf8, 0xc0, 0xfc, 0x34, 0x00, 0x4e, 0x04, 0xb5, 0x06, 0x95, 0x08, + 0x5f, 0x09, 0xc5, 0x09, 0x74, 0x0a, 0xe5, 0x09, 0xbd, 0x0a, 0xa0, 0x0c, 0x19, 0x0f, 0x4a, 0x11, + 0xdf, 0x12, 0xd8, 0x14, 0xf0, 0x16, 0x06, 0x19, 0xb0, 0x1a, 0x29, 0x1c, 0x31, 0x1c, 0x50, 0x1a, + 0xbf, 0x17, 0xa3, 0x14, 0x66, 0x10, 0x14, 0x0c, 0x41, 0x08, 0x62, 0x03, 0xba, 0xfd, 0x53, 0xf8, + 0xd7, 0xf2, 0x3d, 0xee, 0x29, 0xeb, 0xf3, 0xe8, 0xbf, 0xe7, 0xdf, 0xe7, 0x90, 0xe7, 0x9c, 0xe7, + 0x2c, 0xe8, 0x55, 0xe9, 0x84, 0xeb, 0x8d, 0xed, 0xfb, 0xf0, 0x65, 0xf4, 0x26, 0xf6, 0x48, 0xf8, + 0x0f, 0xfa, 0xbc, 0xfa, 0x96, 0xfb, 0x1f, 0xfc, 0xb3, 0xfc, 0x49, 0xfd, 0x7b, 0xfd, 0xe9, 0xfd, + 0x06, 0x00, 0x5f, 0x02, 0x14, 0x04, 0x97, 0x06, 0xa5, 0x08, 0xca, 0x0a, 0xed, 0x0c, 0x40, 0x0f, + 0x74, 0x11, 0xf2, 0x11, 0x67, 0x12, 0x6c, 0x12, 0x8c, 0x11, 0x81, 0x0f, 0x43, 0x0c, 0x35, 0x0a, + 0x7b, 0x07, 0x36, 0x03, 0x36, 0xff, 0x03, 0xfb, 0xf5, 0xf7, 0xa6, 0xf5, 0xdb, 0xf3, 0x38, 0xf4, + 0x62, 0xf5, 0x29, 0xf6, 0xa4, 0xf7, 0xcf, 0xf9, 0x14, 0xfc, 0x6c, 0xfe, 0x98, 0x00, 0xa0, 0x03, + 0xf9, 0x05, 0x73, 0x07, 0xab, 0x08, 0x1b, 0x0a, 0x2e, 0x0b, 0x29, 0x0b, 0x51, 0x0a, 0xa8, 0x09, + 0x31, 0x09, 0x53, 0x08, 0x8a, 0x07, 0xe7, 0x07, 0xca, 0x07, 0x9c, 0x07, 0xda, 0x06, 0x78, 0x05, + 0xdc, 0x04, 0x40, 0x04, 0xea, 0x04, 0xb8, 0x05, 0xfa, 0x04, 0x4d, 0x04, 0x77, 0x03, 0x66, 0x01, + 0x81, 0xfe, 0x03, 0xfb, 0xdf, 0xf7, 0xfb, 0xf4, 0x29, 0xf1, 0x65, 0xec, 0x82, 0xe7, 0xb3, 0xe3, + 0x22, 0xe1, 0xa9, 0xe0, 0xe7, 0xe1, 0xec, 0xe3, 0x3d, 0xe7, 0x5d, 0xeb, 0xba, 0xef, 0x7c, 0xf4, + 0x11, 0xf9, 0xc4, 0xfe, 0x7f, 0x04, 0xbc, 0x09, 0x5f, 0x0e, 0x15, 0x12, 0x9d, 0x15, 0xd4, 0x17, + 0x0b, 0x1a, 0xab, 0x1a, 0xd9, 0x1a, 0xc8, 0x1a, 0x43, 0x19, 0x95, 0x18, 0xdb, 0x17, 0x62, 0x17, + 0x32, 0x17, 0x69, 0x16, 0x16, 0x15, 0x99, 0x13, 0x90, 0x12, 0xfc, 0x11, 0xd2, 0x11, 0x4c, 0x10, + 0x78, 0x0e, 0xfa, 0x0b, 0xbd, 0x07, 0x24, 0x03, 0x95, 0xfd, 0x76, 0xf8, 0x76, 0xf3, 0x64, 0xed, + 0x83, 0xe7, 0x91, 0xe2, 0xf1, 0xdd, 0x81, 0xda, 0x1a, 0xd9, 0xa0, 0xd8, 0x9b, 0xd9, 0xf5, 0xda, + 0xb5, 0xdc, 0xe6, 0xdf, 0xa0, 0xe2, 0xab, 0xe5, 0x41, 0xe9, 0x42, 0xed, 0x20, 0xf2, 0xe9, 0xf6, + 0xcc, 0xfb, 0x5c, 0x00, 0x8f, 0x04, 0x61, 0x08, 0xb8, 0x0b, 0x98, 0x0e, 0x45, 0x10, 0x8e, 0x11, + 0x4e, 0x12, 0xad, 0x13, 0x2e, 0x15, 0x27, 0x16, 0x77, 0x17, 0xa3, 0x18, 0x74, 0x19, 0xa5, 0x19, + 0xc6, 0x1a, 0xe2, 0x1b, 0xaa, 0x1b, 0xe0, 0x1a, 0xa8, 0x19, 0x3e, 0x16, 0x29, 0x12, 0x49, 0x0d, + 0xe7, 0x07, 0xe5, 0x02, 0x33, 0xfc, 0x48, 0xf5, 0x48, 0xef, 0x94, 0xe9, 0x63, 0xe5, 0x02, 0xe2, + 0x4c, 0xe0, 0x9c, 0xe0, 0x15, 0xe0, 0xb0, 0xe0, 0x18, 0xe2, 0x27, 0xe4, 0x0d, 0xe7, 0x4c, 0xea, + 0x32, 0xee, 0x31, 0xf2, 0xd9, 0xf5, 0xea, 0xf8, 0xa1, 0xfc, 0xe9, 0xff, 0x51, 0x02, 0x69, 0x04, + 0xc8, 0x05, 0xcc, 0x06, 0xeb, 0x06, 0x31, 0x06, 0x15, 0x07, 0xc0, 0x08, 0xeb, 0x09, 0xda, 0x0a, + 0xa7, 0x0b, 0x3e, 0x0d, 0xc5, 0x0e, 0x9b, 0x10, 0x50, 0x13, 0x82, 0x14, 0x6b, 0x15, 0xc6, 0x15, + 0x83, 0x14, 0x71, 0x12, 0xe1, 0x0e, 0x94, 0x0b, 0x7e, 0x08, 0xeb, 0x03, 0xd3, 0xfe, 0x5b, 0xf9, + 0xeb, 0xf3, 0x8f, 0xef, 0xeb, 0xeb, 0x93, 0xe9, 0xd5, 0xe8, 0xf8, 0xe8, 0xa6, 0xe9, 0xc2, 0xea, + 0x8f, 0xeb, 0x14, 0xed, 0xe8, 0xef, 0x1b, 0xf3, 0x50, 0xf7, 0xb8, 0xfa, 0xfb, 0xfd, 0xa0, 0x01, + 0x4f, 0x03, 0xb5, 0x04, 0xa2, 0x05, 0xbe, 0x05, 0x23, 0x06, 0xc0, 0x05, 0x8a, 0x05, 0x17, 0x06, + 0xd9, 0x06, 0x23, 0x08, 0x91, 0x09, 0x38, 0x0a, 0x4e, 0x0b, 0xba, 0x0c, 0x57, 0x0e, 0x37, 0x10, + 0x37, 0x10, 0xfe, 0x0f, 0x8f, 0x0f, 0x1b, 0x0e, 0xd8, 0x0b, 0x72, 0x08, 0x50, 0x06, 0x22, 0x04, + 0x8f, 0x00, 0xf3, 0xfc, 0x9b, 0xf9, 0x31, 0xf6, 0x18, 0xf3, 0x6b, 0xf1, 0x65, 0xf0, 0x1e, 0xf0, + 0x1b, 0xf0, 0xb1, 0xf0, 0x75, 0xf2, 0xa4, 0xf3, 0x27, 0xf6, 0x2e, 0xf8, 0xe3, 0xfa, 0xc2, 0xfe, + 0xe4, 0x00, 0xb3, 0x03, 0x4c, 0x06, 0xf9, 0x07, 0x89, 0x09, 0x05, 0x0a, 0x0f, 0x0a, 0x14, 0x09, + 0x30, 0x07, 0xb7, 0x05, 0x12, 0x05, 0x98, 0x04, 0x96, 0x04, 0x29, 0x05, 0x54, 0x05, 0x6f, 0x05, + 0xf2, 0x04, 0x69, 0x05, 0x04, 0x07, 0xef, 0x07, 0xac, 0x08, 0x67, 0x09, 0xd6, 0x08, 0x0c, 0x07, + 0x34, 0x04, 0x61, 0x01, 0xbb, 0xfe, 0xed, 0xfa, 0xaa, 0xf6, 0x86, 0xf2, 0x1c, 0xed, 0x74, 0xe8, + 0x40, 0xe5, 0xa6, 0xe3, 0xcb, 0xe3, 0x30, 0xe4, 0x5b, 0xe6, 0x02, 0xe9, 0x6e, 0xec, 0xb7, 0xf0, + 0x60, 0xf5, 0x8d, 0xfa, 0xc5, 0xff, 0x70, 0x04, 0xe9, 0x08, 0xe3, 0x0c, 0x19, 0x10, 0x66, 0x13, + 0x94, 0x15, 0x2f, 0x17, 0x36, 0x18, 0xaf, 0x17, 0x4d, 0x17, 0x19, 0x17, 0x4a, 0x16, 0xba, 0x15, + 0xe0, 0x14, 0x62, 0x13, 0x00, 0x12, 0x35, 0x10, 0x9a, 0x0e, 0x79, 0x0d, 0x2e, 0x0b, 0xf7, 0x09, + 0xc6, 0x08, 0xf4, 0x05, 0x4f, 0x03, 0x1b, 0xff, 0x01, 0xfb, 0xf1, 0xf6, 0x57, 0xf1, 0x48, 0xec, + 0xff, 0xe6, 0x51, 0xe1, 0xc0, 0xdc, 0x7c, 0xd9, 0x8a, 0xd7, 0x30, 0xd7, 0xe3, 0xd7, 0x21, 0xda, + 0xd5, 0xdc, 0x1a, 0xe0, 0x81, 0xe4, 0x98, 0xe9, 0xa6, 0xee, 0x80, 0xf3, 0x5b, 0xf8, 0xa9, 0xfd, + 0x8e, 0x02, 0x8b, 0x06, 0x87, 0x0a, 0x59, 0x0e, 0x9e, 0x11, 0xf1, 0x13, 0x8d, 0x15, 0xd9, 0x16, + 0x1a, 0x18, 0xf3, 0x18, 0x93, 0x1a, 0xd2, 0x1b, 0x53, 0x1c, 0xf3, 0x1c, 0xee, 0x1c, 0xd0, 0x1d, + 0xbf, 0x1e, 0x46, 0x1e, 0x8e, 0x1e, 0xd5, 0x1d, 0x97, 0x1b, 0xf5, 0x17, 0xe8, 0x12, 0xb2, 0x0e, + 0xfe, 0x09, 0x3d, 0x04, 0xe2, 0xfd, 0x0c, 0xf7, 0x08, 0xf0, 0x82, 0xe9, 0xa6, 0xe4, 0x86, 0xe0, + 0xd8, 0xdd, 0x25, 0xdc, 0x62, 0xdb, 0x57, 0xdb, 0x39, 0xdb, 0x51, 0xdc, 0x3e, 0xde, 0x36, 0xe1, + 0x4b, 0xe5, 0x73, 0xe9, 0x14, 0xee, 0x00, 0xf3, 0x1c, 0xf7, 0xec, 0xfa, 0x99, 0xfe, 0x3d, 0x02, + 0x00, 0x05, 0xaa, 0x06, 0x29, 0x07, 0x0e, 0x07, 0x57, 0x07, 0x88, 0x08, 0xbe, 0x09, 0x1c, 0x0b, + 0xd8, 0x0c, 0x32, 0x0e, 0x5e, 0x10, 0x1e, 0x13, 0x9d, 0x15, 0x6e, 0x18, 0xad, 0x1a, 0xec, 0x1b, + 0xe7, 0x1b, 0x71, 0x1a, 0x0b, 0x18, 0x5a, 0x15, 0xed, 0x11, 0x99, 0x0d, 0xc7, 0x08, 0x2b, 0x03, + 0x54, 0xfe, 0xfc, 0xf9, 0x30, 0xf6, 0xcd, 0xf3, 0xad, 0xf1, 0xd6, 0xf0, 0x14, 0xf1, 0x73, 0xf1, + 0x7f, 0xf2, 0x83, 0xf3, 0xb9, 0xf4, 0x0c, 0xf7, 0x5a, 0xf9, 0xcc, 0xfb, 0xf2, 0xfd, 0xe6, 0xff, + 0xc6, 0x01, 0x4a, 0x03, 0x05, 0x04, 0x95, 0x03, 0xfa, 0x02, 0x08, 0x02, 0x0c, 0x01, 0xb2, 0x00, + 0xa4, 0x00, 0xec, 0x00, 0xf7, 0x00, 0xb0, 0x00, 0x2e, 0x01, 0xcf, 0x01, 0x33, 0x03, 0x87, 0x04, + 0xba, 0x05, 0xa3, 0x06, 0x55, 0x06, 0xae, 0x05, 0xe3, 0x03, 0x32, 0x02, 0x66, 0x00, 0x03, 0xfe, + 0xa3, 0xfb, 0xac, 0xf8, 0x19, 0xf5, 0x4f, 0xf1, 0x21, 0xee, 0x76, 0xec, 0x5a, 0xeb, 0x4e, 0xeb, + 0x8f, 0xec, 0x6a, 0xee, 0x37, 0xf0, 0x10, 0xf3, 0xa5, 0xf6, 0x77, 0xfa, 0x19, 0xff, 0x2e, 0x03, + 0x5b, 0x07, 0x6e, 0x0b, 0xb3, 0x0d, 0xec, 0x0f, 0x83, 0x12, 0x43, 0x14, 0x91, 0x14, 0xb9, 0x13, + 0xcf, 0x11, 0x03, 0x10, 0x5b, 0x0e, 0xd8, 0x0c, 0x5d, 0x0c, 0x72, 0x0b, 0xf2, 0x0a, 0x29, 0x0a, + 0x82, 0x09, 0x3b, 0x09, 0xed, 0x07, 0x6e, 0x07, 0x77, 0x07, 0xc0, 0x06, 0xe5, 0x04, 0x5b, 0x02, + 0xd6, 0xff, 0x98, 0xfc, 0xef, 0xf8, 0x15, 0xf5, 0x70, 0xf1, 0xc0, 0xed, 0x2f, 0xe9, 0xed, 0xe4, + 0xe9, 0xe1, 0x89, 0xdf, 0x46, 0xde, 0x30, 0xde, 0xdf, 0xde, 0x32, 0xe0, 0xb0, 0xe2, 0x77, 0xe6, + 0xe3, 0xea, 0xea, 0xef, 0x52, 0xf5, 0xf2, 0xfa, 0xf9, 0x00, 0xad, 0x05, 0xdf, 0x09, 0x42, 0x0e, + 0xec, 0x11, 0xc0, 0x14, 0xf8, 0x15, 0x87, 0x16, 0xa1, 0x16, 0x29, 0x16, 0x32, 0x16, 0xbf, 0x15, + 0x52, 0x15, 0x1b, 0x15, 0xa9, 0x14, 0x83, 0x14, 0x8f, 0x14, 0xde, 0x13, 0x6d, 0x13, 0x7d, 0x13, + 0x35, 0x12, 0x46, 0x10, 0xc1, 0x0d, 0x76, 0x0a, 0xb4, 0x06, 0x8f, 0x02, 0x76, 0xfd, 0x24, 0xf8, + 0xa5, 0xf1, 0x05, 0xeb, 0xad, 0xe5, 0xde, 0xe0, 0xac, 0xdd, 0xb6, 0xdb, 0x6c, 0xdb, 0xee, 0xdb, + 0x71, 0xdc, 0xa6, 0xde, 0x70, 0xe2, 0x62, 0xe6, 0xcf, 0xea, 0x96, 0xef, 0x77, 0xf4, 0x04, 0xf9, + 0xf2, 0xfc, 0x0b, 0x01, 0xf7, 0x04, 0xab, 0x08, 0xfe, 0x0b, 0xcd, 0x0e, 0x06, 0x11, 0x5d, 0x12, + 0x4b, 0x13, 0x4d, 0x14, 0xc4, 0x15, 0x17, 0x16, 0x79, 0x16, 0xdd, 0x16, 0x15, 0x17, 0x62, 0x17, + 0xc5, 0x16, 0x1f, 0x17, 0xcb, 0x17, 0x0e, 0x17, 0x29, 0x16, 0x50, 0x14, 0x26, 0x11, 0xfe, 0x0d, + 0xce, 0x09, 0xb6, 0x05, 0x4b, 0x01, 0x04, 0xfb, 0x9a, 0xf4, 0xb5, 0xee, 0x80, 0xe9, 0x2c, 0xe5, + 0x55, 0xe2, 0x1c, 0xe1, 0xeb, 0xe0, 0xcc, 0xe0, 0x3e, 0xe2, 0xbb, 0xe4, 0x30, 0xe7, 0x7f, 0xea, + 0x70, 0xee, 0xf0, 0xf2, 0x79, 0xf7, 0x9f, 0xfb, 0x6a, 0xff, 0x58, 0x03, 0x4d, 0x06, 0xbc, 0x08, + 0x2b, 0x0b, 0x80, 0x0c, 0x37, 0x0d, 0xdc, 0x0c, 0xc5, 0x0c, 0x23, 0x0d, 0xd8, 0x0c, 0x82, 0x0d, + 0x42, 0x0e, 0xfb, 0x0e, 0x46, 0x10, 0xed, 0x10, 0xde, 0x12, 0x20, 0x15, 0x27, 0x16, 0xc4, 0x16, + 0xe9, 0x15, 0x5e, 0x14, 0x4f, 0x12, 0x5f, 0x0f, 0x31, 0x0c, 0x7b, 0x08, 0x62, 0x03, 0x10, 0xfe, + 0xc5, 0xf8, 0xe6, 0xf3, 0x28, 0xf0, 0xcc, 0xec, 0x75, 0xea, 0x9f, 0xe8, 0x30, 0xe7, 0x1b, 0xe7, + 0x20, 0xe8, 0xb7, 0xe8, 0x4e, 0xea, 0x02, 0xed, 0x76, 0xef, 0xb5, 0xf2, 0xa3, 0xf5, 0x95, 0xf8, + 0xf8, 0xfb, 0xe7, 0xfe, 0xd5, 0x01, 0xa3, 0x03, 0xdb, 0x03, 0x8b, 0x03, 0xac, 0x02, 0x84, 0x02, + 0x13, 0x02, 0xb8, 0x01, 0xa5, 0x02, 0x57, 0x03, 0x0b, 0x04, 0xdc, 0x04, 0x46, 0x06, 0xbb, 0x08, + 0xc4, 0x0a, 0xf6, 0x0b, 0xdf, 0x0c, 0x8d, 0x0c, 0x6b, 0x0b, 0xf7, 0x09, 0xba, 0x07, 0x97, 0x05, + 0x7a, 0x02, 0x87, 0xfe, 0x09, 0xfb, 0xe2, 0xf7, 0x9c, 0xf4, 0xe1, 0xf1, 0xb4, 0xf0, 0x16, 0xf0, + 0x9c, 0xf0, 0x13, 0xf1, 0xd0, 0xf2, 0x71, 0xf5, 0x3c, 0xf7, 0x63, 0xfa, 0xda, 0xfd, 0xc6, 0x01, + 0x62, 0x05, 0xcf, 0x07, 0x26, 0x0a, 0x2a, 0x0c, 0xcc, 0x0d, 0x9d, 0x0f, 0xa8, 0x10, 0x2b, 0x10, + 0xce, 0x0e, 0xbd, 0x0c, 0xe4, 0x0a, 0x40, 0x09, 0x2b, 0x07, 0xda, 0x05, 0xd6, 0x04, 0xd2, 0x03, + 0xfa, 0x02, 0x2f, 0x02, 0xce, 0x01, 0xf3, 0x01, 0xab, 0x01, 0xfb, 0x00, 0x27, 0x00, 0x4f, 0xff, + 0x99, 0xfd, 0x0c, 0xfb, 0xc6, 0xf8, 0x16, 0xf6, 0x4f, 0xf2, 0x84, 0xee, 0x95, 0xea, 0xe4, 0xe6, + 0xb3, 0xe3, 0xfe, 0xe0, 0x2f, 0xe0, 0xfb, 0xdf, 0x22, 0xe0, 0xd7, 0xe1, 0x92, 0xe4, 0x4f, 0xe8, + 0x1f, 0xed, 0xc6, 0xf2, 0x03, 0xf9, 0x7a, 0xff, 0x24, 0x05, 0x0e, 0x0a, 0x0a, 0x0f, 0xbb, 0x13, + 0xdd, 0x17, 0x01, 0x1b, 0xf6, 0x1c, 0xcf, 0x1d, 0x5f, 0x1d, 0xfc, 0x1c, 0xa7, 0x1c, 0x75, 0x1b, + 0x10, 0x1b, 0x79, 0x1a, 0x93, 0x19, 0x3c, 0x19, 0xb5, 0x17, 0xb7, 0x16, 0x4e, 0x16, 0xac, 0x14, + 0xec, 0x12, 0x0f, 0x10, 0xdc, 0x0c, 0x07, 0x09, 0x4e, 0x04, 0x29, 0x00, 0xe9, 0xfb, 0xa8, 0xf6, + 0x1b, 0xf1, 0x47, 0xeb, 0xb2, 0xe5, 0x7d, 0xe0, 0xa4, 0xdc, 0x57, 0xda, 0x98, 0xd8, 0xc3, 0xd7, + 0x04, 0xd8, 0x7a, 0xd9, 0x01, 0xdc, 0x3b, 0xdf, 0xe7, 0xe3, 0x07, 0xe9, 0x0f, 0xee, 0xd7, 0xf2, + 0x61, 0xf7, 0xec, 0xfb, 0x10, 0x00, 0x79, 0x04, 0x3b, 0x08, 0x11, 0x0b, 0x9e, 0x0d, 0x27, 0x0f, + 0x29, 0x11, 0x9c, 0x12, 0x3e, 0x13, 0xc7, 0x14, 0x23, 0x16, 0x7c, 0x17, 0xb4, 0x18, 0xc6, 0x19, + 0x8b, 0x1b, 0x06, 0x1d, 0xa0, 0x1d, 0x3a, 0x1e, 0x05, 0x1e, 0xb8, 0x1c, 0x2b, 0x1a, 0x13, 0x17, + 0xb2, 0x13, 0x34, 0x0f, 0xd8, 0x09, 0x92, 0x03, 0xf3, 0xfc, 0x1b, 0xf6, 0x66, 0xef, 0x3e, 0xea, + 0x47, 0xe6, 0x30, 0xe3, 0x9d, 0xe0, 0xa6, 0xdf, 0x3e, 0xe0, 0x7e, 0xe0, 0x44, 0xe2, 0x3a, 0xe5, + 0x15, 0xe9, 0xa4, 0xec, 0xc6, 0xef, 0x6c, 0xf3, 0xbd, 0xf6, 0x58, 0xfa, 0x9a, 0xfd, 0x12, 0x01, + 0xe5, 0x03, 0xa0, 0x05, 0xbb, 0x06, 0x8a, 0x07, 0xe5, 0x07, 0x91, 0x07, 0xc3, 0x07, 0x00, 0x08, + 0x56, 0x08, 0x9d, 0x08, 0x5a, 0x08, 0x5e, 0x09, 0x4d, 0x0b, 0xa9, 0x0c, 0x50, 0x0e, 0xef, 0x0f, + 0x59, 0x10, 0xe0, 0x0f, 0x12, 0x0f, 0x89, 0x0d, 0xf0, 0x0b, 0xbb, 0x08, 0xff, 0x04, 0x0d, 0x01, + 0x58, 0xfc, 0x34, 0xf8, 0xae, 0xf4, 0x2d, 0xf2, 0x2a, 0xf0, 0x84, 0xee, 0x20, 0xee, 0xe9, 0xee, + 0x6a, 0xf0, 0x4b, 0xf2, 0xeb, 0xf4, 0xbe, 0xf7, 0x89, 0xfa, 0x2f, 0xfd, 0xbc, 0xff, 0x04, 0x02, + 0xf2, 0x03, 0xe3, 0x05, 0x2b, 0x08, 0x15, 0x09, 0x2e, 0x09, 0x09, 0x09, 0x25, 0x08, 0x84, 0x06, + 0x14, 0x05, 0x9a, 0x04, 0x80, 0x04, 0x92, 0x04, 0x7e, 0x04, 0xcd, 0x04, 0xc3, 0x05, 0x4d, 0x07, + 0xc5, 0x08, 0x8a, 0x0a, 0x2e, 0x0b, 0x85, 0x0a, 0x5c, 0x09, 0x93, 0x07, 0x95, 0x05, 0xd9, 0x02, + 0x12, 0xff, 0x7f, 0xfb, 0x86, 0xf7, 0x14, 0xf3, 0xda, 0xef, 0xa1, 0xed, 0xc1, 0xeb, 0x37, 0xea, + 0x50, 0xe9, 0x8e, 0xe9, 0x63, 0xea, 0xc9, 0xeb, 0xc4, 0xed, 0x43, 0xf1, 0x34, 0xf5, 0x01, 0xf9, + 0x68, 0xfd, 0x41, 0x01, 0xe3, 0x04, 0xad, 0x07, 0x23, 0x0b, 0x85, 0x0e, 0x79, 0x10, 0xa5, 0x11, + 0xc1, 0x11, 0x55, 0x11, 0xc7, 0x0f, 0xff, 0x0d, 0xeb, 0x0c, 0x13, 0x0c, 0x3b, 0x0b, 0x98, 0x0a, + 0x04, 0x0a, 0x55, 0x0a, 0xdf, 0x0a, 0x14, 0x0b, 0x95, 0x0b, 0x2d, 0x0b, 0xea, 0x09, 0x77, 0x08, + 0xc4, 0x06, 0xc9, 0x04, 0xc3, 0x01, 0x15, 0xfe, 0x66, 0xfa, 0x83, 0xf6, 0x2c, 0xf2, 0xe8, 0xed, + 0x71, 0xea, 0xbc, 0xe7, 0xa7, 0xe5, 0xe0, 0xe3, 0xdd, 0xe3, 0xeb, 0xe4, 0x94, 0xe5, 0xb3, 0xe7, + 0x1e, 0xeb, 0x04, 0xf0, 0xb9, 0xf5, 0x91, 0xfa, 0x3c, 0xff, 0xa1, 0x03, 0x72, 0x07, 0x99, 0x0b, + 0xdb, 0x0f, 0xcf, 0x12, 0x44, 0x15, 0x7a, 0x16, 0x9d, 0x16, 0x92, 0x16, 0xf8, 0x15, 0x6a, 0x15, + 0xc7, 0x14, 0xd9, 0x13, 0x00, 0x13, 0x2f, 0x12, 0xc6, 0x11, 0x91, 0x11, 0x54, 0x11, 0x96, 0x10, + 0x6c, 0x0f, 0xb5, 0x0d, 0x4f, 0x0b, 0xa2, 0x08, 0xef, 0x04, 0xa3, 0x01, 0x6e, 0xfd, 0x73, 0xf8, + 0x7e, 0xf3, 0xca, 0xed, 0x63, 0xe8, 0x53, 0xe3, 0x2f, 0xdf, 0x34, 0xdc, 0xdc, 0xd9, 0x04, 0xd9, + 0x1f, 0xd9, 0x1d, 0xda, 0xb5, 0xdc, 0x8f, 0xe0, 0x90, 0xe5, 0x22, 0xeb, 0x72, 0xf0, 0xa3, 0xf5, + 0x20, 0xfa, 0xaa, 0xfe, 0xaf, 0x03, 0xd7, 0x07, 0x50, 0x0b, 0x48, 0x0e, 0x51, 0x10, 0xeb, 0x11, + 0x59, 0x13, 0x18, 0x14, 0x55, 0x15, 0x0a, 0x17, 0xc3, 0x17, 0x8b, 0x18, 0x83, 0x19, 0x36, 0x1a, + 0x4f, 0x1b, 0x11, 0x1c, 0xb8, 0x1c, 0xef, 0x1c, 0xcf, 0x1b, 0x14, 0x1a, 0x41, 0x17, 0x9e, 0x13, + 0xf3, 0x0f, 0x7f, 0x0b, 0xe7, 0x06, 0x6f, 0x01, 0x0b, 0xfb, 0x84, 0xf4, 0x8b, 0xee, 0xa6, 0xe9, + 0x28, 0xe5, 0x00, 0xe1, 0x50, 0xde, 0xe5, 0xdc, 0xdf, 0xdb, 0xc6, 0xdb, 0xa7, 0xdd, 0xb8, 0xe0, + 0xdf, 0xe3, 0x5b, 0xe7, 0xe7, 0xea, 0xa5, 0xee, 0xe4, 0xf1, 0xc9, 0xf5, 0xc7, 0xf9, 0x1b, 0xfd, + 0x2b, 0x00, 0xa4, 0x02, 0xf0, 0x04, 0x82, 0x06, 0x9a, 0x06, 0x49, 0x07, 0x0b, 0x08, 0xa6, 0x08, + 0xb9, 0x09, 0x73, 0x0a, 0xce, 0x0b, 0x95, 0x0d, 0xf1, 0x0e, 0x10, 0x11, 0x5b, 0x13, 0xdf, 0x14, + 0x19, 0x16, 0x1a, 0x16, 0x93, 0x15, 0x7d, 0x14, 0x60, 0x12, 0xa1, 0x0f, 0x3a, 0x0c, 0x8c, 0x07, + 0x08, 0x02, 0xcf, 0xfd, 0x19, 0xfa, 0xb5, 0xf6, 0x58, 0xf3, 0xe2, 0xf0, 0xaf, 0xef, 0xcc, 0xee, + 0xdf, 0xee, 0x6b, 0xf0, 0xd1, 0xf2, 0x47, 0xf5, 0x81, 0xf7, 0x4a, 0xf9, 0x02, 0xfb, 0x1b, 0xfc, + 0xe7, 0xfd, 0xfd, 0xff, 0xae, 0x01, 0x01, 0x03, 0x81, 0x03, 0xf6, 0x03, 0x3d, 0x03, 0x7e, 0x01, + 0xcf, 0x00, 0x45, 0x00, 0x9a, 0xff, 0x0d, 0xff, 0x40, 0xfe, 0x77, 0xfe, 0xbc, 0xfe, 0xda, 0xff, + 0x7e, 0x01, 0x6c, 0x03, 0xc7, 0x04, 0x7c, 0x05, 0x7e, 0x05, 0x9b, 0x04, 0xed, 0x03, 0x22, 0x02, + 0x49, 0x00, 0xcc, 0xfd, 0xc9, 0xf9, 0xb5, 0xf6, 0x11, 0xf4, 0x06, 0xf2, 0xb0, 0xf0, 0x70, 0xef, + 0x22, 0xef, 0xbc, 0xef, 0xa9, 0xf0, 0xbd, 0xf2, 0x1a, 0xf6, 0xc3, 0xf9, 0xc6, 0xfd, 0xef, 0x01, + 0x39, 0x06, 0xa0, 0x09, 0x54, 0x0c, 0x57, 0x0f, 0x0f, 0x12, 0x57, 0x14, 0xd4, 0x15, 0xde, 0x16, + 0x27, 0x17, 0xb4, 0x15, 0x74, 0x13, 0xed, 0x11, 0x31, 0x10, 0x3b, 0x0e, 0x90, 0x0c, 0x55, 0x0b, + 0x3d, 0x0a, 0x6b, 0x09, 0x26, 0x09, 0xb1, 0x09, 0xfa, 0x09, 0x11, 0x09, 0xaa, 0x07, 0xeb, 0x05, + 0xb8, 0x03, 0x1b, 0x01, 0xd8, 0xfd, 0x7d, 0xfa, 0x8c, 0xf6, 0x6a, 0xf1, 0xcf, 0xec, 0xb9, 0xe8, + 0x5d, 0xe5, 0x6d, 0xe2, 0x66, 0xdf, 0xad, 0xdd, 0xd1, 0xdc, 0x38, 0xdc, 0xd6, 0xdc, 0x7e, 0xde, + 0xc4, 0xe1, 0x05, 0xe6, 0x14, 0xeb, 0xf2, 0xf0, 0x79, 0xf6, 0x8e, 0xfb, 0xf9, 0x00, 0xb8, 0x06, + 0xdb, 0x0b, 0x64, 0x10, 0xb0, 0x14, 0xa1, 0x17, 0x05, 0x19, 0x35, 0x19, 0x9c, 0x19, 0x43, 0x1a, + 0xfb, 0x19, 0xb5, 0x19, 0x35, 0x19, 0xda, 0x18, 0xb9, 0x18, 0xe9, 0x18, 0x6c, 0x19, 0x37, 0x19, + 0x51, 0x18, 0xf3, 0x16, 0x9a, 0x14, 0xb3, 0x11, 0x06, 0x0e, 0x17, 0x0a, 0xdb, 0x05, 0xaa, 0x00, + 0xa6, 0xfa, 0xd0, 0xf4, 0x2f, 0xef, 0x3c, 0xea, 0x9d, 0xe5, 0x70, 0xe1, 0xa1, 0xde, 0x90, 0xdc, + 0x6e, 0xdb, 0x79, 0xdb, 0xb7, 0xdc, 0x5e, 0xdf, 0x5d, 0xe3, 0x42, 0xe8, 0xcd, 0xec, 0x09, 0xf1, + 0xa0, 0xf4, 0x8f, 0xf8, 0xc6, 0xfc, 0x37, 0x00, 0xff, 0x03, 0xba, 0x06, 0xca, 0x08, 0xf6, 0x09, + 0x2a, 0x0a, 0x9b, 0x0b, 0x96, 0x0c, 0x71, 0x0d, 0x5e, 0x0e, 0x2d, 0x0f, 0xe6, 0x0f, 0xad, 0x10, + 0x34, 0x12, 0xb5, 0x13, 0xcb, 0x14, 0xaa, 0x15, 0x7f, 0x16, 0xae, 0x16, 0xac, 0x15, 0xb1, 0x13, + 0x53, 0x11, 0x67, 0x0e, 0x72, 0x0a, 0xef, 0x05, 0xf0, 0x00, 0xbd, 0xfb, 0x89, 0xf6, 0x86, 0xf1, + 0x2d, 0xed, 0x77, 0xe9, 0x10, 0xe6, 0xd9, 0xe3, 0x9f, 0xe2, 0x98, 0xe2, 0x0e, 0xe4, 0x3b, 0xe7, + 0xac, 0xea, 0xe9, 0xed, 0x44, 0xf1, 0xff, 0xf3, 0xc0, 0xf7, 0x5f, 0xfb, 0x6c, 0xfe, 0x8c, 0x01, + 0x17, 0x04, 0x26, 0x06, 0xf9, 0x06, 0x99, 0x07, 0x92, 0x08, 0x06, 0x09, 0x33, 0x09, 0x4d, 0x09, + 0xf2, 0x09, 0x1e, 0x0a, 0x7a, 0x0a, 0x18, 0x0b, 0x37, 0x0c, 0x9b, 0x0d, 0x8d, 0x0e, 0x84, 0x0f, + 0x38, 0x10, 0xce, 0x0f, 0xfb, 0x0e, 0xd8, 0x0d, 0x08, 0x0c, 0xd7, 0x09, 0x8c, 0x06, 0x55, 0x02, + 0x45, 0xfe, 0x4c, 0xfa, 0xed, 0xf6, 0xda, 0xf3, 0xf1, 0xf0, 0xb6, 0xee, 0xb5, 0xec, 0x2f, 0xeb, + 0xe3, 0xea, 0x73, 0xec, 0x06, 0xef, 0x03, 0xf2, 0x24, 0xf5, 0x05, 0xf8, 0x62, 0xfa, 0x95, 0xfc, + 0xdf, 0xfe, 0x2f, 0x01, 0x6b, 0x03, 0x49, 0x05, 0xc4, 0x06, 0xb5, 0x07, 0x2a, 0x07, 0xc4, 0x06, + 0x41, 0x06, 0x55, 0x05, 0xdb, 0x04, 0x53, 0x04, 0x5b, 0x04, 0x84, 0x04, 0xf5, 0x04, 0xdf, 0x05, + 0x74, 0x07, 0x11, 0x09, 0x57, 0x0a, 0x5e, 0x0b, 0x42, 0x0b, 0xc4, 0x0a, 0xec, 0x09, 0x2a, 0x08, + 0x7d, 0x05, 0x5b, 0x01, 0xf9, 0xfc, 0x80, 0xf8, 0xcd, 0xf4, 0x22, 0xf2, 0xba, 0xef, 0xb2, 0xed, + 0x95, 0xec, 0x51, 0xec, 0xe7, 0xeb, 0x4c, 0xed, 0x35, 0xf0, 0xd3, 0xf3, 0x44, 0xf8, 0x23, 0xfc, + 0xfd, 0xff, 0x84, 0x03, 0xf2, 0x06, 0x5e, 0x0a, 0xd3, 0x0c, 0x79, 0x0f, 0xdb, 0x11, 0x99, 0x13, + 0x1f, 0x14, 0x37, 0x13, 0x7e, 0x12, 0x0a, 0x11, 0x33, 0x0f, 0x4f, 0x0d, 0x58, 0x0b, 0x3c, 0x09, + 0x1e, 0x07, 0x65, 0x05, 0xc7, 0x04, 0x97, 0x04, 0x35, 0x04, 0x56, 0x04, 0xe6, 0x03, 0xa8, 0x02, + 0xcb, 0x00, 0xf6, 0xfe, 0x02, 0xfd, 0x7a, 0xfa, 0xd1, 0xf6, 0xd5, 0xf2, 0x9c, 0xef, 0xe2, 0xeb, + 0xe1, 0xe8, 0xbe, 0xe6, 0x95, 0xe4, 0x84, 0xe3, 0xaf, 0xe2, 0x6c, 0xe2, 0xaa, 0xe3, 0x92, 0xe5, + 0xf5, 0xe8, 0x3a, 0xed, 0x2c, 0xf2, 0x4a, 0xf7, 0xe5, 0xfb, 0xd0, 0x00, 0xfe, 0x05, 0x6c, 0x0a, + 0x93, 0x0e, 0xc4, 0x12, 0x40, 0x16, 0xad, 0x18, 0xd0, 0x19, 0xea, 0x1a, 0x7c, 0x1b, 0x2d, 0x1b, + 0xff, 0x1a, 0xb3, 0x1a, 0xe9, 0x19, 0xca, 0x18, 0x10, 0x18, 0x1c, 0x18, 0x3b, 0x18, 0x04, 0x18, + 0x6c, 0x17, 0x52, 0x16, 0xf4, 0x13, 0x0e, 0x11, 0xbf, 0x0d, 0xcb, 0x09, 0x38, 0x05, 0x26, 0xff, + 0x26, 0xf9, 0x12, 0xf3, 0xde, 0xec, 0xe4, 0xe7, 0xf1, 0xe2, 0x96, 0xde, 0xfe, 0xda, 0xa1, 0xd7, + 0x2c, 0xd5, 0x21, 0xd4, 0x14, 0xd4, 0x39, 0xd6, 0x06, 0xda, 0x68, 0xde, 0x8d, 0xe3, 0x71, 0xe8, + 0x78, 0xed, 0xa4, 0xf2, 0x91, 0xf7, 0x18, 0xfd, 0x68, 0x02, 0x81, 0x06, 0x93, 0x09, 0xa6, 0x0b, + 0x61, 0x0d, 0xf1, 0x0e, 0x3e, 0x10, 0x9c, 0x11, 0x46, 0x13, 0x46, 0x14, 0x12, 0x15, 0x52, 0x16, + 0x20, 0x18, 0xfd, 0x19, 0x43, 0x1b, 0xc0, 0x1c, 0x77, 0x1d, 0xf1, 0x1c, 0x3b, 0x1c, 0xcf, 0x1a, + 0x6a, 0x18, 0xa4, 0x14, 0xe8, 0x0f, 0xf0, 0x0a, 0x33, 0x05, 0xf6, 0xff, 0x1a, 0xfb, 0xfd, 0xf5, + 0x85, 0xf1, 0x39, 0xed, 0xac, 0xe9, 0x93, 0xe6, 0x5f, 0xe4, 0x56, 0xe3, 0x28, 0xe4, 0x7f, 0xe6, + 0x08, 0xe9, 0xdf, 0xeb, 0x68, 0xee, 0x67, 0xf1, 0x40, 0xf4, 0x76, 0xf6, 0xc3, 0xf9, 0xba, 0xfc, + 0xec, 0xfe, 0x96, 0x00, 0xf0, 0x00, 0xc0, 0x01, 0x72, 0x02, 0x8d, 0x02, 0xfe, 0x02, 0x6b, 0x03, + 0x37, 0x03, 0x80, 0x03, 0xeb, 0x03, 0xa4, 0x04, 0x6f, 0x05, 0x19, 0x06, 0xc6, 0x07, 0x81, 0x09, + 0x9a, 0x0a, 0x16, 0x0b, 0xa0, 0x0b, 0xd1, 0x0b, 0xa9, 0x0a, 0x0a, 0x09, 0x95, 0x06, 0x8d, 0x03, + 0x97, 0x00, 0x40, 0xfd, 0x76, 0xfa, 0xdb, 0xf7, 0xdd, 0xf5, 0xfe, 0xf3, 0x12, 0xf2, 0xbe, 0xf0, + 0x90, 0xf0, 0x50, 0xf2, 0x38, 0xf5, 0x99, 0xf8, 0xd2, 0xfb, 0xb9, 0xfe, 0x95, 0x01, 0x3e, 0x04, + 0x9b, 0x06, 0xe7, 0x08, 0x99, 0x0a, 0xbe, 0x0b, 0x84, 0x0c, 0x06, 0x0c, 0xb7, 0x0b, 0x4b, 0x0b, + 0x3b, 0x0a, 0x58, 0x09, 0xdf, 0x07, 0x8c, 0x06, 0x80, 0x05, 0x7b, 0x04, 0x5d, 0x04, 0x4b, 0x04, + 0x96, 0x04, 0x14, 0x05, 0xde, 0x05, 0xd5, 0x05, 0x82, 0x05, 0xcc, 0x04, 0x40, 0x03, 0xcb, 0x01, + 0x8a, 0xff, 0xf8, 0xfb, 0xb2, 0xf7, 0x56, 0xf3, 0xb2, 0xef, 0x92, 0xec, 0x23, 0xea, 0x49, 0xe8, + 0x05, 0xe7, 0xd9, 0xe5, 0x2b, 0xe5, 0xd1, 0xe5, 0x4d, 0xe8, 0x20, 0xec, 0xa4, 0xf0, 0x75, 0xf5, + 0x35, 0xfa, 0xbc, 0xfe, 0xc9, 0x02, 0xef, 0x06, 0xe8, 0x0a, 0xea, 0x0d, 0x2b, 0x11, 0x7e, 0x13, + 0xe8, 0x14, 0xdd, 0x15, 0x8d, 0x15, 0x01, 0x15, 0x54, 0x14, 0x68, 0x13, 0x1c, 0x12, 0x84, 0x10, + 0x34, 0x0f, 0x20, 0x0e, 0x61, 0x0d, 0x01, 0x0d, 0x4b, 0x0d, 0x4c, 0x0d, 0xa6, 0x0c, 0x06, 0x0c, + 0x85, 0x0a, 0xa6, 0x08, 0xd4, 0x05, 0xc8, 0x01, 0x74, 0xfd, 0x5a, 0xf8, 0x54, 0xf3, 0x21, 0xef, + 0x9f, 0xeb, 0x69, 0xe8, 0x63, 0xe5, 0x05, 0xe3, 0x1f, 0xe1, 0xfe, 0xdf, 0x0f, 0xe0, 0xcf, 0xe1, + 0x6d, 0xe4, 0xb3, 0xe7, 0x58, 0xeb, 0x76, 0xef, 0xed, 0xf3, 0x5a, 0xf8, 0xd8, 0xfc, 0x4e, 0x01, + 0xe5, 0x05, 0x7f, 0x0a, 0xc8, 0x0d, 0x16, 0x10, 0x37, 0x12, 0x97, 0x13, 0x5b, 0x14, 0xe9, 0x14, + 0x78, 0x15, 0x43, 0x15, 0x6c, 0x14, 0x50, 0x13, 0xa7, 0x12, 0x24, 0x12, 0xff, 0x11, 0xba, 0x12, + 0xfa, 0x12, 0xc3, 0x12, 0x4d, 0x11, 0x7a, 0x0f, 0xd6, 0x0d, 0x35, 0x0b, 0x5c, 0x07, 0xea, 0x02, + 0xc7, 0xfd, 0x73, 0xf8, 0x21, 0xf3, 0x78, 0xee, 0x8e, 0xea, 0x29, 0xe7, 0x62, 0xe4, 0xa5, 0xe1, + 0x0e, 0xdf, 0xab, 0xdd, 0x3b, 0xde, 0x10, 0xe0, 0x38, 0xe3, 0xed, 0xe6, 0x2c, 0xeb, 0x8b, 0xef, + 0x01, 0xf4, 0x20, 0xf8, 0x11, 0xfc, 0x66, 0x00, 0x89, 0x04, 0xbb, 0x07, 0xd3, 0x09, 0x99, 0x0b, + 0xd0, 0x0c, 0x88, 0x0d, 0x93, 0x0e, 0x7b, 0x0f, 0x73, 0x10, 0x0c, 0x11, 0x19, 0x12, 0x85, 0x13, + 0x66, 0x14, 0xfe, 0x15, 0x80, 0x17, 0x7f, 0x18, 0x35, 0x19, 0x88, 0x19, 0x34, 0x19, 0x28, 0x18, + 0x0d, 0x16, 0xad, 0x12, 0x28, 0x0e, 0xba, 0x08, 0x1d, 0x03, 0xcb, 0xfd, 0x09, 0xf9, 0x02, 0xf4, + 0x56, 0xef, 0x41, 0xeb, 0x50, 0xe7, 0x7d, 0xe3, 0x4c, 0xe0, 0xe7, 0xde, 0xf9, 0xde, 0x15, 0xe0, + 0xc7, 0xe2, 0xfa, 0xe5, 0xb8, 0xe9, 0x3e, 0xed, 0x8f, 0xf0, 0x09, 0xf5, 0x26, 0xf9, 0x12, 0xfd, + 0x49, 0x00, 0xce, 0x02, 0xbc, 0x04, 0xd6, 0x05, 0x06, 0x07, 0x47, 0x08, 0xe9, 0x09, 0x44, 0x0a, + 0x4b, 0x0a, 0x35, 0x0b, 0xba, 0x0b, 0xa7, 0x0c, 0xf3, 0x0d, 0x3d, 0x0f, 0x35, 0x10, 0xc4, 0x10, + 0x70, 0x11, 0xda, 0x11, 0xe8, 0x11, 0xdb, 0x10, 0x12, 0x0f, 0x5e, 0x0c, 0x2f, 0x09, 0x67, 0x05, + 0xde, 0x01, 0xbc, 0xfe, 0x86, 0xfb, 0xb2, 0xf8, 0x63, 0xf6, 0x83, 0xf4, 0x3b, 0xf2, 0x5d, 0xf0, + 0x0f, 0xf0, 0xd9, 0xf0, 0xd2, 0xf2, 0x53, 0xf5, 0x3d, 0xf8, 0x4e, 0xfb, 0xbd, 0xfd, 0x8f, 0xff, + 0x91, 0x01, 0xca, 0x03, 0x58, 0x05, 0x49, 0x06, 0x8a, 0x06, 0x1f, 0x06, 0x95, 0x05, 0xd2, 0x04, + 0x33, 0x04, 0xaa, 0x03, 0x9d, 0x02, 0x9c, 0x01, 0x78, 0x00, 0x91, 0xff, 0xb7, 0xfe, 0x87, 0xfe, + 0x05, 0xff, 0x20, 0x00, 0x29, 0x01, 0xf5, 0x01, 0xf0, 0x02, 0x21, 0x03, 0x0f, 0x03, 0x2c, 0x02, + 0xbe, 0x00, 0x92, 0xfe, 0x71, 0xfb, 0xfe, 0xf7, 0x9a, 0xf4, 0x59, 0xf1, 0xd7, 0xee, 0x8b, 0xed, + 0x0e, 0xec, 0x9d, 0xea, 0x35, 0xea, 0xc9, 0xea, 0x47, 0xed, 0xa0, 0xf0, 0x9b, 0xf4, 0x58, 0xf9, + 0xfe, 0xfd, 0x84, 0x02, 0x9f, 0x06, 0x06, 0x0b, 0x94, 0x0e, 0x5f, 0x11, 0xf1, 0x13, 0x27, 0x15, + 0x26, 0x16, 0xcb, 0x16, 0xb9, 0x16, 0xd3, 0x16, 0xf5, 0x15, 0x36, 0x14, 0xc9, 0x12, 0x50, 0x11, + 0x6b, 0x0f, 0x83, 0x0d, 0x09, 0x0c, 0xf9, 0x0a, 0x19, 0x0a, 0xb7, 0x08, 0xc6, 0x07, 0xd1, 0x06, + 0x55, 0x05, 0x64, 0x03, 0xe7, 0x00, 0x54, 0xfd, 0xdb, 0xf8, 0xe4, 0xf3, 0x3f, 0xef, 0xe9, 0xea, + 0xa9, 0xe6, 0xf4, 0xe3, 0xe2, 0xe1, 0x38, 0xdf, 0x2b, 0xdd, 0x62, 0xdb, 0x47, 0xdb, 0xb4, 0xdc, + 0xd9, 0xde, 0x86, 0xe2, 0x5b, 0xe6, 0xe5, 0xea, 0x4e, 0xef, 0xb2, 0xf3, 0xf1, 0xf8, 0xd6, 0xfd, + 0x0a, 0x03, 0xd2, 0x07, 0xf7, 0x0b, 0x8d, 0x0f, 0xe3, 0x11, 0xc8, 0x13, 0xd8, 0x15, 0x7c, 0x17, + 0x88, 0x18, 0x98, 0x19, 0xc6, 0x19, 0x9f, 0x19, 0x50, 0x19, 0xc2, 0x18, 0x31, 0x19, 0xe3, 0x19, + 0x52, 0x1a, 0x95, 0x1a, 0x4b, 0x1a, 0x32, 0x19, 0x32, 0x17, 0x13, 0x14, 0xef, 0x0f, 0xe2, 0x0a, + 0x86, 0x04, 0x98, 0xfe, 0xad, 0xf8, 0xb5, 0xf2, 0xfb, 0xed, 0x44, 0xe9, 0x42, 0xe5, 0x01, 0xe2, + 0xcb, 0xde, 0x03, 0xdd, 0x45, 0xdc, 0xf2, 0xdc, 0x16, 0xdf, 0x8d, 0xe1, 0xfa, 0xe4, 0x13, 0xe9, + 0xf6, 0xec, 0x01, 0xf1, 0x3d, 0xf5, 0x60, 0xf9, 0x9a, 0xfd, 0x2a, 0x01, 0x12, 0x04, 0x36, 0x06, + 0x71, 0x07, 0x9b, 0x08, 0xd5, 0x09, 0x90, 0x0a, 0x1e, 0x0b, 0x99, 0x0b, 0xf2, 0x0b, 0x60, 0x0c, + 0x29, 0x0d, 0xa9, 0x0e, 0xa7, 0x10, 0x16, 0x12, 0x8a, 0x13, 0xab, 0x14, 0xaf, 0x15, 0x36, 0x16, + 0x69, 0x15, 0x25, 0x14, 0x1d, 0x11, 0xda, 0x0c, 0x83, 0x08, 0xcc, 0x03, 0x9e, 0xff, 0xfd, 0xfb, + 0xad, 0xf8, 0x5c, 0xf5, 0xa3, 0xf1, 0x70, 0xee, 0xe4, 0xeb, 0x81, 0xea, 0x21, 0xea, 0x68, 0xeb, + 0x1e, 0xed, 0xa1, 0xef, 0x7b, 0xf2, 0xfa, 0xf4, 0x35, 0xf8, 0xea, 0xfa, 0xb7, 0xfd, 0x5d, 0x00, + 0x5c, 0x02, 0xb6, 0x03, 0xa3, 0x04, 0x05, 0x05, 0xb3, 0x05, 0x29, 0x06, 0x8e, 0x06, 0x0d, 0x07, + 0x56, 0x07, 0x79, 0x07, 0x66, 0x07, 0xfa, 0x07, 0x59, 0x09, 0x78, 0x0a, 0x00, 0x0b, 0xc0, 0x0b, + 0x6d, 0x0c, 0x33, 0x0d, 0x03, 0x0d, 0x57, 0x0c, 0x10, 0x0b, 0x7b, 0x08, 0x4f, 0x05, 0xce, 0x01, + 0x6b, 0xfe, 0xbf, 0xfa, 0xa6, 0xf7, 0x18, 0xf5, 0xd9, 0xf2, 0x80, 0xf0, 0xc3, 0xed, 0x55, 0xec, + 0x50, 0xeb, 0x26, 0xeb, 0xc0, 0xec, 0x20, 0xef, 0xed, 0xf2, 0xad, 0xf6, 0xb8, 0xf9, 0x90, 0xfd, + 0x12, 0x01, 0x55, 0x04, 0x99, 0x07, 0x13, 0x0a, 0x9e, 0x0b, 0x1a, 0x0c, 0xbf, 0x0b, 0xe5, 0x0b, + 0x9c, 0x0b, 0x05, 0x0b, 0x52, 0x0a, 0x8b, 0x09, 0xdb, 0x08, 0x2e, 0x07, 0x28, 0x06, 0x11, 0x06, + 0x0f, 0x06, 0x10, 0x06, 0x73, 0x06, 0x7f, 0x07, 0x27, 0x08, 0xfe, 0x07, 0x79, 0x07, 0x47, 0x06, + 0x1d, 0x04, 0x3c, 0x01, 0x2c, 0xfe, 0x8d, 0xfa, 0xed, 0xf6, 0x76, 0xf3, 0x81, 0xf0, 0x68, 0xee, + 0x21, 0xec, 0x0a, 0xea, 0x11, 0xe9, 0xe0, 0xe8, 0x58, 0xea, 0x03, 0xed, 0x66, 0xf0, 0x90, 0xf4, + 0x90, 0xf8, 0x7c, 0xfc, 0xe7, 0x00, 0xff, 0x04, 0xbc, 0x08, 0x72, 0x0c, 0xfa, 0x0e, 0x59, 0x10, + 0xe5, 0x10, 0x33, 0x11, 0x9c, 0x11, 0x67, 0x11, 0x16, 0x11, 0x3b, 0x10, 0xd4, 0x0e, 0x59, 0x0d, + 0x44, 0x0b, 0x5e, 0x09, 0x38, 0x08, 0x75, 0x07, 0xd8, 0x06, 0xa6, 0x06, 0x8d, 0x06, 0x5e, 0x06, + 0x29, 0x06, 0xbf, 0x05, 0xa6, 0x04, 0x3a, 0x02, 0x1f, 0xff, 0x40, 0xfb, 0xb4, 0xf6, 0xf9, 0xf1, + 0xe9, 0xed, 0x22, 0xeb, 0x7b, 0xe8, 0xc1, 0xe5, 0x6d, 0xe3, 0x9d, 0xe1, 0xed, 0xe0, 0xc8, 0xe1, + 0x42, 0xe4, 0xc0, 0xe7, 0xc7, 0xeb, 0xd5, 0xef, 0xfb, 0xf3, 0xb8, 0xf8, 0xdc, 0xfc, 0x40, 0x01, + 0xb6, 0x05, 0x85, 0x09, 0xdf, 0x0c, 0x80, 0x0f, 0x1d, 0x12, 0x28, 0x14, 0x74, 0x15, 0x8c, 0x16, + 0xae, 0x17, 0x77, 0x18, 0xce, 0x18, 0x62, 0x18, 0xc4, 0x17, 0x73, 0x17, 0xc2, 0x16, 0x29, 0x16, + 0x0f, 0x16, 0x0f, 0x16, 0xcf, 0x15, 0xa2, 0x14, 0x3e, 0x13, 0xd9, 0x10, 0x33, 0x0d, 0x73, 0x08, + 0xc9, 0x02, 0xee, 0xfc, 0xaa, 0xf6, 0x10, 0xf1, 0x4e, 0xec, 0xcb, 0xe7, 0xb3, 0xe3, 0xa2, 0xdf, + 0x75, 0xdc, 0x2d, 0xda, 0xf9, 0xd8, 0xa7, 0xd9, 0x41, 0xdb, 0xb5, 0xdd, 0x1c, 0xe1, 0xf1, 0xe4, + 0x74, 0xe9, 0x27, 0xee, 0x25, 0xf3, 0x28, 0xf8, 0xc4, 0xfc, 0xe5, 0x00, 0xa2, 0x04, 0x7c, 0x07, + 0xb7, 0x09, 0x67, 0x0b, 0xdc, 0x0c, 0x38, 0x0e, 0x07, 0x0f, 0xb2, 0x0f, 0xcc, 0x0f, 0x36, 0x10, + 0x6f, 0x11, 0xcb, 0x12, 0xf7, 0x14, 0xd9, 0x16, 0x95, 0x18, 0x3f, 0x1a, 0x5c, 0x1b, 0xa7, 0x1b, + 0x1a, 0x1b, 0x5e, 0x19, 0x1c, 0x16, 0xa9, 0x11, 0x69, 0x0c, 0xf8, 0x06, 0xe9, 0x01, 0xa6, 0xfd, + 0x34, 0xf9, 0x08, 0xf5, 0x08, 0xf1, 0x29, 0xed, 0x3b, 0xea, 0xf5, 0xe7, 0x17, 0xe7, 0x39, 0xe7, + 0xd0, 0xe7, 0x5c, 0xe9, 0x6d, 0xeb, 0xe1, 0xed, 0x8b, 0xf0, 0x8e, 0xf3, 0xe5, 0xf6, 0xe6, 0xf9, + 0x13, 0xfc, 0xb3, 0xfd, 0xba, 0xfe, 0x77, 0xff, 0x2f, 0x00, 0xd7, 0x00, 0x41, 0x01, 0x95, 0x01, + 0x8d, 0x01, 0x18, 0x01, 0xd9, 0x00, 0x4b, 0x01, 0x43, 0x02, 0x85, 0x03, 0x31, 0x05, 0x71, 0x06, + 0xd3, 0x07, 0x48, 0x09, 0x93, 0x0a, 0x55, 0x0b, 0xd0, 0x0a, 0xa0, 0x09, 0xa0, 0x07, 0xf4, 0x04, + 0xf8, 0x01, 0x0f, 0xff, 0x89, 0xfc, 0x7b, 0xfa, 0xa6, 0xf8, 0xb9, 0xf6, 0x42, 0xf5, 0xdb, 0xf3, + 0x34, 0xf3, 0xb5, 0xf3, 0x26, 0xf5, 0x68, 0xf7, 0x38, 0xfa, 0x39, 0xfd, 0x75, 0x00, 0x84, 0x03, + 0x2f, 0x06, 0xd5, 0x08, 0x16, 0x0b, 0x67, 0x0c, 0x17, 0x0d, 0xe1, 0x0c, 0x30, 0x0c, 0x81, 0x0b, + 0x12, 0x0a, 0x0f, 0x09, 0x2a, 0x08, 0xdc, 0x06, 0xa1, 0x05, 0x0c, 0x04, 0x63, 0x03, 0xbc, 0x02, + 0x3e, 0x02, 0x21, 0x02, 0x72, 0x02, 0x12, 0x03, 0x43, 0x03, 0x9d, 0x03, 0x41, 0x03, 0x09, 0x02, + 0xf3, 0xff, 0x34, 0xfd, 0x10, 0xfa, 0x84, 0xf6, 0x0e, 0xf3, 0xd1, 0xef, 0x00, 0xed, 0x04, 0xea, + 0x30, 0xe7, 0x2c, 0xe5, 0x6b, 0xe3, 0x88, 0xe2, 0xaf, 0xe3, 0xfe, 0xe5, 0x57, 0xe9, 0xa5, 0xed, + 0x40, 0xf2, 0x43, 0xf7, 0xfb, 0xfc, 0x6b, 0x02, 0x31, 0x08, 0x74, 0x0d, 0x41, 0x11, 0x47, 0x14, + 0x13, 0x16, 0x6e, 0x17, 0x21, 0x18, 0x6b, 0x18, 0xe5, 0x18, 0xb2, 0x18, 0xd0, 0x17, 0x59, 0x16, + 0xab, 0x14, 0x64, 0x13, 0x30, 0x12, 0xfb, 0x10, 0x40, 0x10, 0x4e, 0x0f, 0x55, 0x0e, 0x6d, 0x0d, + 0x37, 0x0c, 0x05, 0x0b, 0xe1, 0x08, 0xaa, 0x05, 0xb7, 0x01, 0x08, 0xfd, 0xbb, 0xf7, 0xe5, 0xf2, + 0xf1, 0xee, 0x3c, 0xeb, 0xd5, 0xe7, 0x1e, 0xe5, 0xa1, 0xe2, 0x6e, 0xe0, 0x19, 0xdf, 0xe3, 0xdf, + 0x9c, 0xe1, 0xf3, 0xe3, 0x41, 0xe7, 0xa0, 0xea, 0xd3, 0xee, 0x76, 0xf2, 0x6e, 0xf6, 0xf9, 0xfa, + 0xf1, 0xfe, 0x91, 0x02, 0x64, 0x05, 0x30, 0x08, 0x8d, 0x0a, 0x8f, 0x0c, 0x29, 0x0e, 0x2e, 0x10, + 0x6b, 0x11, 0xe4, 0x11, 0xad, 0x12, 0xa4, 0x12, 0xc9, 0x12, 0x0a, 0x13, 0xfa, 0x12, 0x7b, 0x13, + 0x39, 0x14, 0x22, 0x15, 0x1e, 0x16, 0xbd, 0x16, 0xd1, 0x16, 0xe0, 0x15, 0xbe, 0x13, 0xbe, 0x10, + 0x8d, 0x0c, 0xfa, 0x06, 0x64, 0x01, 0xcc, 0xfb, 0x9d, 0xf6, 0xb0, 0xf1, 0xe7, 0xec, 0x07, 0xe9, + 0xfd, 0xe4, 0x2a, 0xe2, 0x08, 0xe1, 0xf7, 0xe0, 0xf2, 0xe1, 0xac, 0xe3, 0x62, 0xe6, 0x93, 0xe9, + 0x2b, 0xed, 0xc1, 0xf0, 0xe0, 0xf4, 0xdf, 0xf8, 0x11, 0xfc, 0x16, 0xff, 0xd8, 0x01, 0x6e, 0x04, + 0x4f, 0x06, 0xd2, 0x07, 0x5e, 0x09, 0x4a, 0x0a, 0x00, 0x0b, 0x91, 0x0b, 0x7c, 0x0b, 0x41, 0x0c, + 0xc0, 0x0c, 0x6c, 0x0d, 0xf2, 0x0e, 0x19, 0x10, 0x5b, 0x11, 0xaf, 0x12, 0xb8, 0x13, 0xa7, 0x14, + 0xbf, 0x14, 0xb2, 0x13, 0xa5, 0x11, 0xdd, 0x0d, 0x5e, 0x09, 0xb2, 0x04, 0xf9, 0xff, 0x1c, 0xfc, + 0xfd, 0xf7, 0xee, 0xf3, 0x51, 0xf0, 0x7b, 0xec, 0x91, 0xe9, 0xf8, 0xe7, 0x3a, 0xe7, 0x68, 0xe7, + 0x67, 0xe8, 0x0b, 0xea, 0x0b, 0xec, 0x70, 0xee, 0x7e, 0xf1, 0x2a, 0xf5, 0xb5, 0xf8, 0xe7, 0xfb, + 0xdd, 0xfe, 0x11, 0x01, 0x3a, 0x02, 0xf6, 0x02, 0xa4, 0x03, 0x87, 0x04, 0x38, 0x05, 0x94, 0x05, + 0xa5, 0x05, 0x31, 0x05, 0x2d, 0x05, 0x83, 0x05, 0xae, 0x06, 0x8a, 0x08, 0x18, 0x0a, 0xdb, 0x0b, + 0x79, 0x0d, 0x97, 0x0e, 0xa0, 0x0f, 0xb0, 0x0f, 0x9f, 0x0e, 0xb3, 0x0c, 0x67, 0x09, 0x01, 0x06, + 0x77, 0x02, 0xf0, 0xfe, 0xe2, 0xfb, 0xed, 0xf8, 0x76, 0xf6, 0x28, 0xf4, 0xcd, 0xf1, 0x6d, 0xf0, + 0x36, 0xf0, 0xf6, 0xef, 0xee, 0xf0, 0x50, 0xf2, 0x53, 0xf4, 0x33, 0xf7, 0x16, 0xfa, 0xec, 0xfc, + 0x5c, 0x00, 0x67, 0x03, 0xa5, 0x05, 0xb2, 0x07, 0x0f, 0x09, 0xeb, 0x09, 0xf1, 0x09, 0xa3, 0x09, + 0x08, 0x09, 0x1e, 0x08, 0xc0, 0x06, 0x0d, 0x05, 0x98, 0x03, 0x6b, 0x02, 0x5c, 0x01, 0xdf, 0x00, + 0xa2, 0x00, 0x8e, 0x00, 0xee, 0x00, 0x8f, 0x01, 0xc8, 0x02, 0x08, 0x04, 0x90, 0x04, 0x83, 0x04, + 0x63, 0x03, 0x39, 0x01, 0xc4, 0xfe, 0xfb, 0xfb, 0xb2, 0xf8, 0x3d, 0xf6, 0xb9, 0xf3, 0xeb, 0xf0, + 0xc1, 0xee, 0x40, 0xec, 0x91, 0xea, 0x06, 0xea, 0x68, 0xea, 0x91, 0xec, 0x3b, 0xef, 0xaa, 0xf2, + 0xe7, 0xf6, 0xe0, 0xfa, 0x23, 0xff, 0xd9, 0x03, 0x78, 0x08, 0x92, 0x0c, 0x11, 0x10, 0x8a, 0x12, + 0xca, 0x13, 0xba, 0x14, 0x89, 0x15, 0xfd, 0x15, 0x90, 0x16, 0x66, 0x16, 0xb2, 0x15, 0xa5, 0x14, + 0x4e, 0x13, 0x3e, 0x12, 0x02, 0x11, 0x3d, 0x10, 0x93, 0x0f, 0x99, 0x0e, 0xbd, 0x0d, 0xaf, 0x0c, + 0x97, 0x0b, 0x24, 0x0a, 0x51, 0x08, 0x8f, 0x05, 0xdb, 0x01, 0x71, 0xfd, 0x9c, 0xf8, 0x97, 0xf3, + 0xdf, 0xee, 0x73, 0xea, 0xba, 0xe6, 0x6d, 0xe3, 0xfd, 0xdf, 0x36, 0xdd, 0x3b, 0xdb, 0xbe, 0xda, + 0xc2, 0xdb, 0xb9, 0xdd, 0x2b, 0xe1, 0x44, 0xe5, 0x80, 0xe9, 0x8a, 0xee, 0x32, 0xf4, 0x7f, 0xf9, + 0x29, 0xfe, 0xc5, 0x02, 0xc7, 0x06, 0x2b, 0x0a, 0xf8, 0x0c, 0x9d, 0x0f, 0xf5, 0x11, 0xf1, 0x13, + 0x4e, 0x15, 0x27, 0x16, 0xd5, 0x16, 0x7b, 0x17, 0xfe, 0x17, 0x8b, 0x18, 0x0f, 0x19, 0x5a, 0x19, + 0x66, 0x19, 0x9d, 0x19, 0x00, 0x1a, 0xfd, 0x19, 0x7d, 0x19, 0x2e, 0x18, 0x9b, 0x15, 0xa0, 0x11, + 0xbe, 0x0c, 0x88, 0x07, 0x3c, 0x02, 0xb4, 0xfc, 0x6e, 0xf7, 0x6b, 0xf2, 0xb3, 0xed, 0xe6, 0xe8, + 0xe5, 0xe4, 0x28, 0xe2, 0x8f, 0xe0, 0x06, 0xe0, 0x51, 0xe0, 0x88, 0xe1, 0xf2, 0xe2, 0xe9, 0xe4, + 0xd7, 0xe7, 0x54, 0xeb, 0x14, 0xef, 0x9f, 0xf2, 0xb3, 0xf5, 0x9e, 0xf8, 0x15, 0xfb, 0x4a, 0xfd, + 0x9e, 0xff, 0x16, 0x02, 0xca, 0x03, 0x02, 0x05, 0xd8, 0x05, 0x3f, 0x06, 0x5b, 0x06, 0x79, 0x06, + 0x30, 0x07, 0x63, 0x08, 0x4b, 0x0a, 0x1c, 0x0c, 0x32, 0x0e, 0xa4, 0x10, 0xd7, 0x12, 0x20, 0x15, + 0x72, 0x16, 0xfb, 0x16, 0x9a, 0x16, 0x5d, 0x14, 0x54, 0x11, 0xcd, 0x0c, 0x61, 0x08, 0x61, 0x04, + 0x22, 0x00, 0x64, 0xfc, 0x1f, 0xf8, 0x81, 0xf4, 0x45, 0xf1, 0xe9, 0xee, 0x03, 0xee, 0xde, 0xed, + 0xc3, 0xee, 0xe6, 0xef, 0x25, 0xf1, 0xd3, 0xf2, 0x2f, 0xf5, 0x7b, 0xf7, 0xdc, 0xf9, 0x0f, 0xfc, + 0xbb, 0xfd, 0x41, 0xff, 0x7a, 0x00, 0xb2, 0x01, 0x78, 0x02, 0x25, 0x03, 0x95, 0x03, 0xf6, 0x03, + 0x2b, 0x04, 0xb6, 0x03, 0xa9, 0x03, 0xed, 0x03, 0x49, 0x04, 0xe7, 0x04, 0xef, 0x05, 0x02, 0x07, + 0xde, 0x07, 0x0a, 0x09, 0x0d, 0x0a, 0x3c, 0x0a, 0x89, 0x09, 0x8c, 0x07, 0xd3, 0x04, 0xfe, 0x01, + 0x87, 0xfe, 0x65, 0xfb, 0xb7, 0xf8, 0xcf, 0xf5, 0x4c, 0xf3, 0xb2, 0xf0, 0x7c, 0xee, 0x82, 0xed, + 0xe5, 0xec, 0x80, 0xed, 0x11, 0xef, 0xd3, 0xf0, 0x34, 0xf3, 0x27, 0xf6, 0xd2, 0xf9, 0xef, 0xfd, + 0xff, 0x01, 0xb2, 0x05, 0x8a, 0x09, 0x99, 0x0c, 0x73, 0x0e, 0xcc, 0x0f, 0x85, 0x10, 0x3f, 0x11, + 0x11, 0x11, 0x21, 0x10, 0xfe, 0x0e, 0x1d, 0x0d, 0x4c, 0x0b, 0xc0, 0x09, 0xab, 0x08, 0x88, 0x08, + 0x30, 0x08, 0x25, 0x08, 0x37, 0x08, 0x11, 0x08, 0x34, 0x08, 0x99, 0x08, 0x6e, 0x08, 0x46, 0x07, + 0xf1, 0x04, 0xd8, 0x01, 0xae, 0xfe, 0xba, 0xfa, 0x47, 0xf7, 0xde, 0xf3, 0xbc, 0xf0, 0x6a, 0xee, + 0x78, 0xeb, 0xda, 0xe8, 0xff, 0xe6, 0xad, 0xe5, 0x62, 0xe5, 0xaa, 0xe6, 0x92, 0xe8, 0x73, 0xeb, + 0x95, 0xee, 0x37, 0xf2, 0xb0, 0xf6, 0xe1, 0xfa, 0x49, 0xff, 0x39, 0x04, 0x49, 0x08, 0xc6, 0x0b, + 0x66, 0x0e, 0x3a, 0x10, 0xfe, 0x11, 0x03, 0x13, 0x5a, 0x13, 0x5e, 0x13, 0xce, 0x12, 0xa9, 0x11, + 0x7b, 0x10, 0x68, 0x0f, 0x4f, 0x0e, 0x78, 0x0d, 0x52, 0x0d, 0x03, 0x0d, 0x8d, 0x0c, 0x3c, 0x0c, + 0x12, 0x0c, 0x28, 0x0b, 0xd1, 0x09, 0xec, 0x07, 0x44, 0x05, 0x36, 0x02, 0xf4, 0xfd, 0xc0, 0xf9, + 0xcc, 0xf5, 0x85, 0xf1, 0xe1, 0xed, 0x3e, 0xea, 0x0d, 0xe7, 0xb9, 0xe4, 0xf0, 0xe2, 0xb2, 0xe2, + 0x8f, 0xe3, 0x1f, 0xe5, 0xa2, 0xe7, 0x8d, 0xea, 0x24, 0xee, 0x2e, 0xf2, 0x02, 0xf6, 0x73, 0xfa, + 0x47, 0xfe, 0xf6, 0x00, 0x81, 0x03, 0xc8, 0x05, 0x67, 0x08, 0xba, 0x0a, 0xaf, 0x0c, 0x44, 0x0e, + 0xbd, 0x0f, 0x52, 0x10, 0xc9, 0x10, 0x8d, 0x11, 0x6e, 0x12, 0x80, 0x13, 0x1b, 0x14, 0x94, 0x14, + 0xef, 0x14, 0xcf, 0x14, 0xfc, 0x14, 0x5e, 0x15, 0xfa, 0x14, 0xf0, 0x13, 0x1a, 0x12, 0x24, 0x0f, + 0x75, 0x0b, 0x76, 0x06, 0x7e, 0x01, 0xe8, 0xfc, 0x94, 0xf7, 0xbc, 0xf2, 0xfd, 0xec, 0x02, 0xe8, + 0xa8, 0xe3, 0x67, 0xdf, 0xa2, 0xdd, 0xc6, 0xdc, 0x1e, 0xdd, 0xda, 0xde, 0x71, 0xe0, 0x26, 0xe3, + 0x20, 0xe7, 0xd9, 0xea, 0x93, 0xef, 0xa0, 0xf4, 0xf0, 0xf8, 0xb5, 0xfc, 0xd4, 0xff, 0xf2, 0x02, + 0x1e, 0x06, 0x81, 0x08, 0x8c, 0x0a, 0x2a, 0x0c, 0x67, 0x0d, 0x24, 0x0e, 0x76, 0x0e, 0xa2, 0x0e, + 0xfe, 0x0e, 0x72, 0x0f, 0x78, 0x10, 0x65, 0x11, 0x3d, 0x12, 0x93, 0x13, 0xb4, 0x14, 0x76, 0x15, + 0xa3, 0x15, 0xd2, 0x14, 0x1c, 0x13, 0x4e, 0x11, 0x1c, 0x0e, 0x5b, 0x0a, 0x4d, 0x06, 0x22, 0x02, + 0x53, 0xfe, 0xe6, 0xf9, 0x2e, 0xf6, 0xe0, 0xf2, 0x9f, 0xef, 0xed, 0xed, 0x29, 0xed, 0xc9, 0xec, + 0x66, 0xed, 0x3d, 0xee, 0x65, 0xef, 0x34, 0xf1, 0xd0, 0xf2, 0xc4, 0xf4, 0xd2, 0xf6, 0xaa, 0xf8, + 0x48, 0xfa, 0xa3, 0xfb, 0x31, 0xfd, 0xc4, 0xfe, 0xdf, 0xff, 0xa2, 0x00, 0x05, 0x01, 0xec, 0x00, + 0xe3, 0x00, 0x9c, 0x00, 0x8a, 0x00, 0xc8, 0x00, 0x43, 0x01, 0x7c, 0x02, 0xf1, 0x03, 0x79, 0x05, + 0x4b, 0x07, 0x7a, 0x09, 0x83, 0x0b, 0x04, 0x0d, 0xb0, 0x0d, 0xe4, 0x0c, 0x97, 0x0b, 0x02, 0x09, + 0xb0, 0x05, 0xc3, 0x02, 0xe9, 0xff, 0xd1, 0xfc, 0xc7, 0xf9, 0xb0, 0xf6, 0x37, 0xf4, 0x5b, 0xf2, + 0xff, 0xf1, 0x13, 0xf3, 0x27, 0xf4, 0xc3, 0xf5, 0x7f, 0xf7, 0xb4, 0xf9, 0xad, 0xfc, 0x5a, 0xff, + 0x44, 0x02, 0x68, 0x05, 0x2c, 0x08, 0x1a, 0x0a, 0xb1, 0x0b, 0x50, 0x0d, 0x51, 0x0e, 0x15, 0x0f, + 0x9a, 0x0f, 0x2e, 0x0f, 0xd7, 0x0d, 0x19, 0x0c, 0xdb, 0x09, 0x3b, 0x08, 0x9c, 0x06, 0x34, 0x05, + 0xe1, 0x04, 0x4d, 0x04, 0xa6, 0x03, 0x25, 0x03, 0xed, 0x02, 0xc7, 0x02, 0x57, 0x02, 0x45, 0x01, + 0xad, 0xff, 0x61, 0xfd, 0x0d, 0xfa, 0xdc, 0xf6, 0xeb, 0xf3, 0xd6, 0xf0, 0x12, 0xee, 0x20, 0xeb, + 0x93, 0xe8, 0x6e, 0xe6, 0xaa, 0xe4, 0xb0, 0xe3, 0x00, 0xe4, 0xe4, 0xe4, 0x01, 0xe7, 0xc1, 0xe9, + 0x4f, 0xed, 0x90, 0xf1, 0xe9, 0xf5, 0xb3, 0xfa, 0xf9, 0xff, 0x3c, 0x05, 0x98, 0x09, 0x15, 0x0e, + 0xd7, 0x11, 0xb0, 0x14, 0xe3, 0x16, 0x67, 0x18, 0x32, 0x19, 0x71, 0x19, 0xeb, 0x18, 0xfd, 0x17, + 0x15, 0x17, 0xf3, 0x15, 0x71, 0x15, 0x09, 0x15, 0x34, 0x14, 0x89, 0x13, 0xad, 0x12, 0x0c, 0x12, + 0x17, 0x11, 0x89, 0x0f, 0xdd, 0x0c, 0xd6, 0x09, 0x5c, 0x06, 0x1d, 0x02, 0xd4, 0xfd, 0x26, 0xf9, + 0xd4, 0xf4, 0xba, 0xf0, 0x37, 0xec, 0x0a, 0xe8, 0x25, 0xe4, 0xee, 0xe0, 0xfa, 0xde, 0x5d, 0xde, + 0x7e, 0xde, 0x59, 0xdf, 0x55, 0xe1, 0xf8, 0xe3, 0x4a, 0xe7, 0x78, 0xea, 0x8c, 0xee, 0x31, 0xf3, + 0x7a, 0xf7, 0x28, 0xfb, 0x32, 0xfe, 0x29, 0x01, 0xdb, 0x03, 0x2d, 0x06, 0x60, 0x08, 0x84, 0x0a, + 0xfa, 0x0b, 0x92, 0x0c, 0x49, 0x0d, 0xe9, 0x0d, 0xc4, 0x0e, 0x20, 0x10, 0x70, 0x11, 0x7f, 0x12, + 0x28, 0x13, 0xe4, 0x13, 0xdb, 0x14, 0x9c, 0x15, 0x17, 0x16, 0xde, 0x15, 0x1b, 0x15, 0x47, 0x13, + 0x69, 0x10, 0xe0, 0x0c, 0x04, 0x09, 0x0d, 0x05, 0x84, 0x00, 0x8b, 0xfb, 0xb0, 0xf6, 0x83, 0xf1, + 0xbb, 0xec, 0x69, 0xe9, 0xcc, 0xe6, 0x9e, 0xe5, 0x4e, 0xe5, 0xd9, 0xe5, 0xd3, 0xe6, 0x5a, 0xe8, + 0x5d, 0xea, 0xff, 0xec, 0x5c, 0xf0, 0x83, 0xf3, 0x5a, 0xf6, 0xce, 0xf8, 0x5d, 0xfb, 0xf1, 0xfd, + 0x9b, 0x00, 0x09, 0x03, 0xf6, 0x04, 0x4e, 0x06, 0x72, 0x07, 0x50, 0x08, 0x3c, 0x09, 0xcc, 0x09, + 0x63, 0x0a, 0x7c, 0x0b, 0x6d, 0x0c, 0x56, 0x0d, 0x56, 0x0e, 0xbb, 0x0f, 0xcd, 0x10, 0x44, 0x11, + 0x8b, 0x11, 0x25, 0x11, 0x57, 0x10, 0x6d, 0x0e, 0x2b, 0x0c, 0x39, 0x09, 0x77, 0x05, 0xdb, 0x01, + 0xe7, 0xfd, 0x03, 0xfa, 0x1a, 0xf6, 0x14, 0xf2, 0x46, 0xef, 0x82, 0xed, 0x33, 0xec, 0x25, 0xec, + 0xc8, 0xec, 0xf2, 0xed, 0x7c, 0xef, 0x41, 0xf1, 0xf1, 0xf3, 0x01, 0xf7, 0x75, 0xf9, 0xa9, 0xfb, + 0x0b, 0xfe, 0x68, 0x00, 0xa2, 0x02, 0x9e, 0x04, 0x2c, 0x06, 0x39, 0x07, 0x98, 0x07, 0x8c, 0x07, + 0x73, 0x07, 0x06, 0x07, 0xda, 0x06, 0xe4, 0x06, 0x2d, 0x07, 0xc1, 0x07, 0x11, 0x08, 0xa7, 0x08, + 0xb3, 0x09, 0x76, 0x0a, 0x43, 0x0b, 0xd1, 0x0b, 0xca, 0x0b, 0x01, 0x0b, 0xe4, 0x08, 0x3e, 0x06, + 0x85, 0x03, 0x53, 0x00, 0x55, 0xfd, 0x7e, 0xfa, 0x4e, 0xf7, 0x44, 0xf4, 0xdd, 0xf1, 0x29, 0xf0, + 0xb2, 0xef, 0x0f, 0xf0, 0x45, 0xf1, 0xff, 0xf2, 0xe0, 0xf4, 0x03, 0xf7, 0xe2, 0xf8, 0x7e, 0xfb, + 0x92, 0xfe, 0x3d, 0x01, 0xb1, 0x03, 0xee, 0x05, 0xf6, 0x07, 0xca, 0x09, 0x0d, 0x0b, 0x3e, 0x0c, + 0xfb, 0x0c, 0xe1, 0x0c, 0x31, 0x0c, 0xc9, 0x0a, 0xd9, 0x08, 0x1a, 0x07, 0x7d, 0x05, 0xe6, 0x04, + 0xcd, 0x04, 0x21, 0x04, 0x62, 0x04, 0xc6, 0x04, 0x47, 0x05, 0xe7, 0x05, 0x38, 0x06, 0x40, 0x06, + 0xa6, 0x05, 0x0b, 0x04, 0xd6, 0x01, 0x14, 0xff, 0x12, 0xfc, 0x18, 0xf9, 0xdd, 0xf5, 0xb0, 0xf2, + 0xa6, 0xef, 0xa8, 0xec, 0xda, 0xea, 0xf9, 0xe9, 0x98, 0xe9, 0xfc, 0xe9, 0x58, 0xeb, 0x44, 0xed, + 0xa2, 0xef, 0x7e, 0xf2, 0xda, 0xf5, 0xe3, 0xf9, 0x7e, 0xfd, 0x4a, 0x01, 0xee, 0x04, 0xb2, 0x08, + 0x61, 0x0c, 0x43, 0x0f, 0x44, 0x12, 0x15, 0x14, 0xec, 0x14, 0x5d, 0x15, 0x27, 0x15, 0x8d, 0x14, + 0xbf, 0x13, 0x2d, 0x13, 0xa8, 0x12, 0x22, 0x12, 0x22, 0x11, 0x36, 0x10, 0xbc, 0x0f, 0xcc, 0x0e, + 0xa0, 0x0d, 0x13, 0x0c, 0x07, 0x0a, 0x37, 0x07, 0x79, 0x03, 0xb6, 0xff, 0x86, 0xfb, 0x01, 0xf7, + 0x31, 0xf3, 0xb7, 0xee, 0x9c, 0xea, 0xd5, 0xe6, 0x84, 0xe2, 0xd3, 0xdf, 0x5a, 0xde, 0x4f, 0xdd, + 0xb1, 0xdd, 0xd4, 0xde, 0xc8, 0xe0, 0x65, 0xe3, 0x69, 0xe6, 0x77, 0xea, 0x49, 0xef, 0x13, 0xf4, + 0xcd, 0xf8, 0x51, 0xfd, 0x7b, 0x01, 0x1e, 0x05, 0x6a, 0x08, 0xa5, 0x0b, 0x01, 0x0e, 0x09, 0x10, + 0x68, 0x11, 0xf7, 0x11, 0x60, 0x12, 0xc1, 0x12, 0xa5, 0x13, 0xfa, 0x14, 0x80, 0x16, 0xba, 0x17, + 0x7d, 0x18, 0x4e, 0x19, 0xcf, 0x19, 0xfc, 0x19, 0xb9, 0x19, 0x39, 0x19, 0x9c, 0x17, 0xe3, 0x14, + 0xd0, 0x11, 0xb3, 0x0d, 0x68, 0x09, 0x2d, 0x05, 0x84, 0x00, 0xac, 0xfb, 0x64, 0xf6, 0x0f, 0xf1, + 0xc9, 0xec, 0x82, 0xe8, 0x2a, 0xe5, 0x6c, 0xe3, 0x69, 0xe2, 0x7f, 0xe2, 0xf0, 0xe2, 0x11, 0xe4, + 0xb8, 0xe5, 0x4f, 0xe8, 0x09, 0xeb, 0xfb, 0xed, 0x03, 0xf1, 0x10, 0xf4, 0xf1, 0xf6, 0x79, 0xf9, + 0x72, 0xfc, 0xee, 0xfe, 0xa2, 0x00, 0x51, 0x02, 0x8b, 0x03, 0x54, 0x04, 0x2b, 0x05, 0x79, 0x06, + 0xc0, 0x07, 0xed, 0x08, 0xfe, 0x09, 0x61, 0x0b, 0x1f, 0x0d, 0xca, 0x0e, 0x95, 0x10, 0xcd, 0x11, + 0xdd, 0x12, 0x42, 0x13, 0xe2, 0x12, 0xa9, 0x12, 0x11, 0x11, 0x1a, 0x0f, 0xc1, 0x0c, 0x91, 0x09, + 0x15, 0x06, 0xd5, 0x01, 0xe8, 0xfd, 0x7e, 0xfa, 0xb6, 0xf7, 0x62, 0xf5, 0x3b, 0xf4, 0xc0, 0xf3, + 0xc6, 0xf3, 0x09, 0xf4, 0xe4, 0xf4, 0x3d, 0xf6, 0x09, 0xf8, 0xb9, 0xf9, 0x1f, 0xfb, 0x47, 0xfc, + 0x45, 0xfd, 0x68, 0xfe, 0x47, 0xff, 0xca, 0x00, 0xfc, 0x01, 0x27, 0x02, 0xad, 0x02, 0x8b, 0x02, + 0xce, 0x01, 0x92, 0x01, 0x56, 0x01, 0xba, 0x01, 0x25, 0x02, 0x46, 0x02, 0xf4, 0x02, 0xb6, 0x03, + 0x40, 0x04, 0xe9, 0x04, 0xa3, 0x05, 0x7e, 0x06, 0xcc, 0x06, 0xe9, 0x05, 0x94, 0x04, 0x64, 0x02, + 0x7c, 0xff, 0x8c, 0xfc, 0xfb, 0xf9, 0xd4, 0xf6, 0x91, 0xf3, 0x19, 0xf0, 0xfa, 0xec, 0x77, 0xeb, + 0x78, 0xea, 0xef, 0xea, 0xab, 0xec, 0x86, 0xee, 0x61, 0xf1, 0x7f, 0xf4, 0x13, 0xf8, 0xa5, 0xfb, + 0xc3, 0xff, 0xc3, 0x03, 0xcf, 0x05, 0x31, 0x09, 0xd1, 0x0c, 0xa0, 0x0e, 0x70, 0x11, 0x2f, 0x14, + 0xb6, 0x14, 0x83, 0x15, 0xe1, 0x14, 0x3a, 0x14, 0x52, 0x12, 0x24, 0x10, 0x46, 0x0e, 0x18, 0x0d, + 0x36, 0x0b, 0x3a, 0x0a, 0xba, 0x08, 0x9b, 0x07, 0x4f, 0x07, 0x72, 0x05, 0x35, 0x05, 0x98, 0x03, + 0xd6, 0x01, 0x79, 0xff, 0x22, 0xfc, 0xe8, 0xf7, 0x5a, 0xf5, 0x10, 0xf2, 0xcc, 0xed, 0x29, 0xeb, + 0x0e, 0xe8, 0x0d, 0xe6, 0x4c, 0xe4, 0x69, 0xe3, 0x76, 0xe3, 0x0f, 0xe4, 0x6a, 0xe5, 0xa6, 0xe6, + 0xbd, 0xe9, 0xdb, 0xeb, 0x54, 0xef, 0x7f, 0xf3, 0x76, 0xf7, 0xf3, 0xfa, 0x21, 0xfe, 0x15, 0x03, + 0xe9, 0x05, 0xd3, 0x09, 0x7c, 0x0d, 0x3b, 0x10, 0x10, 0x12, 0xb2, 0x12, 0xb8, 0x12, 0x19, 0x12, + 0x43, 0x12, 0x96, 0x12, 0xb3, 0x13, 0xdb, 0x13, 0x8e, 0x12, 0x26, 0x12, 0x9f, 0x13, 0xc6, 0x13, + 0x8b, 0x14, 0x13, 0x15, 0xc4, 0x13, 0xd2, 0x11, 0xbf, 0x0e, 0x43, 0x0b, 0x37, 0x07, 0x38, 0x03, + 0xc5, 0xff, 0xce, 0xf9, 0xce, 0xf5, 0x21, 0xf1, 0x22, 0xeb, 0x6f, 0xe8, 0xfc, 0xe5, 0x96, 0xe3, + 0xb9, 0xe4, 0xae, 0xe7, 0x3c, 0xe7, 0xb5, 0xe8, 0xf5, 0xeb, 0xfb, 0xed, 0x00, 0xf1, 0x24, 0xf5, + 0xf4, 0xf8, 0x63, 0xfc, 0x8d, 0x00, 0x13, 0x04, 0x36, 0x06, 0xcc, 0x09, 0x69, 0x0c, 0xab, 0x0d, + 0xcc, 0x0f, 0x84, 0x11, 0x79, 0x11, 0xe7, 0x11, 0xbe, 0x12, 0xdf, 0x10, 0xdc, 0x11, 0x5a, 0x13, + 0x45, 0x14, 0x90, 0x15, 0xb3, 0x15, 0x61, 0x17, 0x69, 0x16, 0xcc, 0x14, 0x2a, 0x13, 0xc8, 0x12, + 0x0c, 0x11, 0x43, 0x02, 0xa8, 0x06, 0x3e, 0x05, 0x86, 0xfa, 0x09, 0xfd, 0x6d, 0xf7, 0x7b, 0xec, + 0x92, 0xed, 0xe6, 0xeb, 0x52, 0xe8, 0x7e, 0xe8, 0x1d, 0xe2, 0xb2, 0xe3, 0xfc, 0xea, 0x49, 0xe4, + 0xc1, 0xe9, 0xfc, 0xec, 0x7f, 0xef, 0x0c, 0xec, 0xa7, 0xea, 0xd6, 0xf3, 0xb3, 0xf4, 0x58, 0xf9, + 0xc9, 0xff, 0x39, 0xfd, 0x89, 0xfe, 0x48, 0x03, 0x2e, 0x04, 0xac, 0x03, 0x9d, 0x01, 0x61, 0x01, + 0x7d, 0x02, 0x97, 0x02, 0xb1, 0x02, 0xa2, 0x03, 0x29, 0x09, 0xf7, 0x04, 0xd9, 0x02, 0x95, 0x09, + 0x2e, 0x08, 0x7a, 0x08, 0x67, 0x0a, 0xb4, 0x0a, 0x86, 0x06, 0x8d, 0x01, 0x0e, 0x0a, 0x28, 0x08, + 0xc3, 0xfc, 0x53, 0xfb, 0x39, 0xf5, 0x4b, 0xed, 0x5b, 0xf0, 0x0e, 0xee, 0x0f, 0xf0, 0x83, 0xed, + 0x1b, 0xe9, 0x6e, 0xee, 0x65, 0xee, 0xc9, 0xef, 0x69, 0xf4, 0x18, 0xf8, 0x35, 0xfc, 0xc7, 0xfa, + 0x48, 0x01, 0x67, 0x07, 0x17, 0x07, 0xac, 0x08, 0x19, 0x07, 0x80, 0x04, 0xb6, 0x07, 0xfe, 0x08, + 0x76, 0x0c, 0x90, 0x0a, 0x91, 0x06, 0x41, 0x08, 0x2f, 0x05, 0xbe, 0x04, 0x9e, 0x07, 0xee, 0x0b, + 0x75, 0x0f, 0x67, 0x0e, 0x22, 0x11, 0x54, 0x15, 0x1f, 0x14, 0xe9, 0x16, 0x2c, 0x18, 0x10, 0x11, + 0x1b, 0x0b, 0xf6, 0x0b, 0xb2, 0x08, 0x99, 0x05, 0xcc, 0x01, 0x8a, 0xfa, 0x5e, 0xf5, 0xce, 0xf2, + 0x3f, 0xf6, 0x53, 0xf6, 0xd2, 0xf6, 0x29, 0xf7, 0x5c, 0xf6, 0x67, 0xfa, 0xe3, 0xfe, 0x7a, 0x04, + 0x48, 0x0b, 0xd2, 0x0c, 0x1b, 0x0a, 0x79, 0x0b, 0x00, 0x0f, 0x4f, 0x10, 0x82, 0x11, 0x39, 0x14, + 0xed, 0x11, 0x07, 0x0f, 0xa1, 0x0d, 0xb6, 0x10, 0x39, 0x0d, 0x5b, 0x0b, 0x0a, 0x09, 0x6b, 0x02, + 0xfa, 0x05, 0x76, 0x09, 0x2a, 0x09, 0xa7, 0x07, 0x69, 0x03, 0xa2, 0x00, 0x4b, 0x00, 0x51, 0x00, + 0x80, 0xff, 0x10, 0xfb, 0xca, 0xf6, 0x09, 0xf2, 0xec, 0xee, 0xd2, 0xee, 0x50, 0xea, 0x99, 0xe6, + 0x16, 0xe2, 0xea, 0xda, 0xe5, 0xda, 0xbd, 0xde, 0x89, 0xdf, 0x38, 0xdf, 0xfb, 0xe0, 0x05, 0xe2, + 0x1d, 0xe2, 0x84, 0xe5, 0x27, 0xe9, 0xa3, 0xeb, 0x96, 0xee, 0x6e, 0xf2, 0xe8, 0xf5, 0x3a, 0xfa, + 0x6c, 0xff, 0x37, 0x02, 0x87, 0x05, 0x5c, 0x0a, 0xe7, 0x0e, 0x47, 0x13, 0x0b, 0x15, 0xf8, 0x14, + 0xa6, 0x16, 0x02, 0x17, 0xb9, 0x13, 0x27, 0x13, 0x90, 0x10, 0xed, 0x0f, 0xcc, 0x11, 0xea, 0x14, + 0xac, 0x15, 0xa0, 0x11, 0xbf, 0x0e, 0xd8, 0x0c, 0xc9, 0x09, 0xb2, 0x09, 0xb5, 0x06, 0x83, 0x00, + 0x81, 0xfc, 0xd6, 0xf5, 0x7e, 0xf1, 0x41, 0xef, 0x06, 0xea, 0x30, 0xe6, 0xe7, 0xe2, 0x4b, 0xe1, + 0xf5, 0xe2, 0x1a, 0xe5, 0x6e, 0xe6, 0x69, 0xe4, 0x4c, 0xe4, 0x17, 0xe9, 0x16, 0xed, 0x26, 0xf0, + 0xb0, 0xf8, 0x5c, 0xf8, 0x0a, 0xfb, 0x5c, 0x00, 0xb0, 0x03, 0x51, 0x0c, 0xcb, 0x0c, 0x29, 0x0e, + 0x3f, 0x10, 0xcf, 0x0f, 0x3e, 0x10, 0x89, 0x11, 0x15, 0x12, 0xc1, 0x10, 0xb4, 0x14, 0x5f, 0x12, + 0x50, 0x10, 0x91, 0x16, 0x25, 0x16, 0xb3, 0x18, 0x3c, 0x15, 0xc9, 0x14, 0x78, 0x17, 0x73, 0x16, + 0x06, 0x16, 0x1e, 0x12, 0xfc, 0x09, 0x3b, 0x07, 0x47, 0x08, 0x10, 0x01, 0x14, 0xf9, 0x8d, 0xf4, + 0xe5, 0xee, 0x85, 0xed, 0xa1, 0xea, 0x7b, 0xec, 0x78, 0xeb, 0x54, 0xe6, 0x06, 0xe9, 0x21, 0xe9, + 0x29, 0xeb, 0x74, 0xed, 0x51, 0xf2, 0xaa, 0xf4, 0x46, 0xf3, 0x80, 0xf9, 0x50, 0xfc, 0xbc, 0xfc, + 0xf8, 0xfd, 0x4f, 0xff, 0xb8, 0xff, 0xd6, 0x01, 0xfc, 0x06, 0xad, 0x07, 0x7f, 0x07, 0xb5, 0x05, + 0x75, 0x08, 0x12, 0x08, 0x98, 0x07, 0x02, 0x0b, 0xf0, 0x0c, 0xb5, 0x12, 0x13, 0x16, 0xea, 0x16, + 0xa7, 0x14, 0x91, 0x13, 0x04, 0x11, 0x1e, 0x0d, 0xde, 0x0e, 0xdc, 0x0c, 0x6d, 0x0c, 0xe3, 0x0a, + 0x0e, 0x07, 0xf1, 0x02, 0xc9, 0xfe, 0xa6, 0x00, 0x91, 0xfb, 0x77, 0xfc, 0xa5, 0xfc, 0x58, 0xfb, + 0xf3, 0xfa, 0x3f, 0xfa, 0x1c, 0xfb, 0xb6, 0xf7, 0xca, 0xfa, 0xa0, 0xff, 0x9b, 0x03, 0xaf, 0x01, + 0xb6, 0x03, 0x1b, 0x04, 0xed, 0x04, 0xab, 0x07, 0x88, 0x05, 0xc1, 0x08, 0x64, 0x08, 0x5d, 0x06, + 0x8b, 0x06, 0x2b, 0x01, 0xac, 0x01, 0x03, 0xff, 0x3b, 0xfe, 0xf6, 0xff, 0xc5, 0xfd, 0xec, 0xfe, + 0x4d, 0x00, 0xc8, 0x00, 0x32, 0x00, 0x9a, 0x02, 0x45, 0x01, 0x5e, 0x04, 0xa5, 0x05, 0x18, 0x04, + 0xa4, 0x06, 0xb3, 0x04, 0x9a, 0x02, 0x1e, 0x00, 0x07, 0xfd, 0xa1, 0xf8, 0x64, 0xf5, 0xb1, 0xf1, + 0xaf, 0xf4, 0x71, 0xfa, 0x27, 0xf9, 0x79, 0xf7, 0x90, 0xf7, 0xfb, 0xf5, 0x35, 0xfa, 0x38, 0xfb, + 0x06, 0xfd, 0x3a, 0x00, 0x5b, 0x01, 0xbb, 0xfd, 0xbe, 0xff, 0xc6, 0xff, 0x0d, 0xfd, 0xdf, 0x02, + 0xe9, 0x01, 0x34, 0x02, 0xd3, 0x03, 0x6f, 0x06, 0x0e, 0x05, 0x07, 0x03, 0xde, 0xff, 0xd8, 0xfb, + 0x27, 0xfb, 0x89, 0xfb, 0x4f, 0xfc, 0x16, 0xf9, 0x01, 0xfa, 0x58, 0xfb, 0xa0, 0xf8, 0x87, 0xf7, + 0xb6, 0xf8, 0x3f, 0xf8, 0x17, 0xf7, 0x27, 0xf4, 0x11, 0xf1, 0x37, 0xed, 0x3a, 0xea, 0xe8, 0xe4, + 0x2b, 0xe0, 0x98, 0xdc, 0xb8, 0xdc, 0x1f, 0xdc, 0x87, 0xd7, 0xe3, 0xd5, 0xc7, 0xd3, 0x4a, 0xd7, + 0x1a, 0xd8, 0x94, 0xda, 0x1d, 0xe0, 0xb9, 0xe4, 0x3f, 0xea, 0x3b, 0xf0, 0x55, 0xf7, 0xd1, 0xf9, + 0x16, 0xfe, 0xea, 0x04, 0xad, 0x0a, 0xac, 0x0e, 0x51, 0x14, 0x8f, 0x1a, 0x25, 0x1b, 0xd0, 0x19, + 0x0e, 0x1b, 0x42, 0x1e, 0x04, 0x1f, 0x41, 0x1f, 0x3a, 0x1f, 0x94, 0x1c, 0x7a, 0x1c, 0x46, 0x1f, + 0xf2, 0x20, 0x35, 0x1e, 0xc5, 0x1c, 0x1a, 0x1b, 0x3a, 0x13, 0x9b, 0x10, 0xe8, 0x0d, 0x98, 0x0a, + 0x07, 0x03, 0xdb, 0xfe, 0xda, 0xfc, 0x98, 0xf4, 0x72, 0xf3, 0x41, 0xf4, 0xbd, 0xf1, 0x07, 0xef, + 0xf2, 0xf0, 0xf5, 0xf1, 0x6f, 0xf1, 0x2f, 0xf2, 0x58, 0xf2, 0xef, 0xf2, 0x92, 0xf2, 0x24, 0xfc, + 0xe0, 0xfe, 0xec, 0xff, 0x2f, 0x05, 0x3e, 0x07, 0x44, 0x0a, 0xfb, 0x0b, 0xf8, 0x0c, 0x03, 0x12, + 0xcf, 0x0f, 0x76, 0x16, 0x78, 0x15, 0xc7, 0x0f, 0x8a, 0x10, 0xc3, 0x0b, 0x8a, 0x0b, 0x1b, 0x0d, + 0xaf, 0x11, 0xda, 0x13, 0x4f, 0x14, 0xe7, 0x16, 0x1d, 0x1c, 0xed, 0x1a, 0xd8, 0x1f, 0x9d, 0x20, + 0x08, 0x1e, 0x11, 0x1d, 0x22, 0x19, 0xbe, 0x17, 0x03, 0x14, 0x86, 0x0e, 0x6e, 0x09, 0x65, 0x03, + 0x82, 0xff, 0x95, 0xfe, 0xd5, 0xfe, 0xf0, 0xfd, 0x0e, 0xfa, 0x21, 0xf6, 0x97, 0xf1, 0xa3, 0xf3, + 0x5e, 0xf5, 0x2d, 0xf6, 0xfd, 0xfa, 0xc3, 0xf9, 0x47, 0xf8, 0x11, 0xfa, 0x93, 0xfa, 0xef, 0xfa, + 0x35, 0xff, 0xac, 0xfe, 0x7f, 0x02, 0xe1, 0x05, 0x37, 0x08, 0xb8, 0x0a, 0x44, 0x0b, 0x3d, 0x0a, + 0xe8, 0x08, 0x5d, 0x07, 0x23, 0x0a, 0xbb, 0x08, 0x69, 0x03, 0x77, 0x02, 0x99, 0x02, 0xa8, 0x04, + 0xe8, 0xfe, 0x89, 0xfd, 0xb7, 0xff, 0xb2, 0xff, 0xe3, 0xff, 0x24, 0xfd, 0xbc, 0xf8, 0xfe, 0xf4, + 0x5a, 0xf0, 0x7e, 0xea, 0x80, 0xe3, 0xfa, 0xe3, 0xc3, 0xdc, 0xa1, 0xd3, 0xc6, 0xd5, 0x0c, 0xd2, + 0x5b, 0xd4, 0x18, 0xd2, 0xaf, 0xd4, 0xe8, 0xd8, 0x6e, 0xd7, 0x3c, 0xdd, 0x21, 0xe3, 0x16, 0xe6, + 0x83, 0xe6, 0x74, 0xea, 0x58, 0xec, 0xac, 0xeb, 0x25, 0xef, 0xed, 0xf3, 0x2e, 0xf2, 0xbe, 0xf1, + 0xdb, 0xf3, 0xe4, 0xf1, 0x4c, 0xf1, 0x9d, 0xf5, 0x17, 0xf6, 0x01, 0xf6, 0xee, 0xf5, 0x66, 0xfa, + 0xce, 0xfc, 0x8c, 0x00, 0x3e, 0x05, 0x63, 0x05, 0x74, 0x06, 0xc3, 0x05, 0x79, 0x06, 0x74, 0x04, + 0xf4, 0x02, 0x64, 0x04, 0x1b, 0xfe, 0x6b, 0xfd, 0xbc, 0x00, 0x26, 0xff, 0xf6, 0xfc, 0x3e, 0xfb, + 0xbd, 0xfa, 0x71, 0xfc, 0xbb, 0xfb, 0x58, 0xfc, 0x95, 0xfc, 0xad, 0xfc, 0x37, 0x01, 0x4e, 0x04, + 0x60, 0x0b, 0xad, 0x10, 0xc2, 0x10, 0x6e, 0x13, 0x9f, 0x17, 0x7b, 0x1b, 0x84, 0x1b, 0xaf, 0x1b, + 0x5a, 0x21, 0x95, 0x20, 0x27, 0x1c, 0x39, 0x1e, 0xef, 0x1d, 0x0a, 0x15, 0x8f, 0x12, 0x9d, 0x10, + 0x02, 0x0d, 0x15, 0x0e, 0x9d, 0x0c, 0x14, 0x0c, 0xa7, 0x09, 0x7b, 0x0a, 0x71, 0x0c, 0x6f, 0x0d, + 0x1a, 0x0b, 0xcc, 0x0c, 0xbf, 0x0b, 0x00, 0x0a, 0xa5, 0x0a, 0x3a, 0x06, 0x8d, 0xff, 0x57, 0xf9, + 0x83, 0xf6, 0x18, 0xf4, 0x6b, 0xf1, 0x27, 0xf2, 0xae, 0xf3, 0x3b, 0xef, 0x09, 0xf1, 0x11, 0xef, + 0x5e, 0xed, 0x48, 0xf2, 0xc0, 0xf1, 0x36, 0xf4, 0x51, 0xfa, 0x65, 0xfa, 0x1f, 0xfd, 0x8d, 0x00, + 0x7c, 0xff, 0x8a, 0x05, 0x74, 0x04, 0x8e, 0x0b, 0xa2, 0x11, 0x0f, 0x14, 0x24, 0x19, 0x1e, 0x19, + 0x4d, 0x16, 0x1f, 0x15, 0xb6, 0x16, 0x24, 0x18, 0x71, 0x17, 0xa7, 0x17, 0xdf, 0x18, 0xed, 0x17, + 0x8a, 0x18, 0xf9, 0x1c, 0xb8, 0x19, 0x04, 0x12, 0x8a, 0x14, 0xc7, 0x13, 0xe6, 0x0e, 0x1f, 0x09, + 0x07, 0x04, 0x8f, 0xfc, 0xcc, 0xf3, 0xbf, 0xed, 0x96, 0xed, 0xb2, 0xe7, 0xf8, 0xe0, 0xb6, 0xdf, + 0xe9, 0xda, 0xe7, 0xdb, 0xd7, 0xdd, 0xc0, 0xdd, 0x01, 0xe0, 0x70, 0xe1, 0x6b, 0xe8, 0xa2, 0xf2, + 0xd1, 0xf6, 0x27, 0xfe, 0x2a, 0x02, 0x2d, 0x07, 0x42, 0x12, 0xe2, 0x14, 0x29, 0x18, 0xa2, 0x1a, + 0x0c, 0x1a, 0x5b, 0x1c, 0x93, 0x1a, 0x18, 0x18, 0xaa, 0x1a, 0x11, 0x19, 0x59, 0x18, 0x1e, 0x15, + 0xe9, 0x13, 0xe5, 0x15, 0xbb, 0x15, 0x8d, 0x14, 0xd4, 0x16, 0xae, 0x17, 0xf3, 0x0f, 0x5b, 0x0f, + 0x92, 0x0d, 0xc1, 0x08, 0x1e, 0x04, 0x6d, 0x00, 0xf4, 0xfc, 0x10, 0xf6, 0xe0, 0xf1, 0xb5, 0xf0, + 0xe7, 0xe9, 0xc8, 0xe3, 0x1d, 0xe6, 0x00, 0xe6, 0xc0, 0xe3, 0xc5, 0xe0, 0x90, 0xde, 0x84, 0xde, + 0x4d, 0xdb, 0xdb, 0xdf, 0x3e, 0xe3, 0xe3, 0xe1, 0x7f, 0xe5, 0x72, 0xea, 0x40, 0xec, 0x7c, 0xf0, + 0xed, 0xef, 0x9f, 0xf2, 0x7d, 0xf3, 0x39, 0xf2, 0x15, 0xf7, 0x4e, 0xf6, 0x46, 0xf2, 0xbe, 0xf0, + 0x57, 0xeb, 0xc7, 0xec, 0x40, 0xf3, 0x84, 0xf4, 0xf5, 0xf5, 0xa7, 0xf8, 0xf1, 0xfc, 0x8a, 0x01, + 0x97, 0x04, 0x71, 0x04, 0x3c, 0x06, 0x81, 0x07, 0x4a, 0x09, 0xa7, 0x09, 0x7b, 0x07, 0x33, 0x04, + 0x28, 0xfe, 0x37, 0xfa, 0x6f, 0xf9, 0xa0, 0xf6, 0x1d, 0xf4, 0xd9, 0xf4, 0x21, 0xf3, 0x1b, 0xf1, + 0x57, 0xee, 0xd6, 0xef, 0xe6, 0xf2, 0x3e, 0xf1, 0x07, 0xf4, 0xef, 0xf9, 0xbc, 0xf7, 0x6f, 0xf8, + 0x49, 0xfb, 0x38, 0xfb, 0x98, 0xfe, 0x60, 0xfe, 0x6c, 0x02, 0x0b, 0x07, 0x91, 0x07, 0x92, 0x07, + 0x53, 0x09, 0x6c, 0x05, 0x86, 0x08, 0x13, 0x08, 0x42, 0x08, 0xf9, 0x09, 0x3a, 0x0a, 0xc5, 0x09, + 0x0f, 0x08, 0xec, 0x0b, 0x95, 0x0e, 0x9b, 0x0d, 0xab, 0x0d, 0x71, 0x0f, 0xd0, 0x10, 0x89, 0x13, + 0x08, 0x11, 0x17, 0x0d, 0xda, 0x06, 0x31, 0x00, 0x2f, 0xfb, 0x78, 0xf9, 0xfa, 0xf4, 0x4d, 0xef, + 0x89, 0xec, 0xeb, 0xe8, 0xd2, 0xe9, 0xa3, 0xea, 0xfa, 0xe9, 0x7b, 0xec, 0x57, 0xef, 0x6c, 0xf3, + 0x0d, 0xfd, 0xd8, 0x01, 0x21, 0x05, 0xdd, 0x09, 0xd0, 0x0c, 0x7d, 0x11, 0x7f, 0x15, 0xb0, 0x1a, + 0x4f, 0x1d, 0xd7, 0x1d, 0x92, 0x21, 0xea, 0x20, 0xf8, 0x1c, 0x39, 0x1d, 0xb6, 0x1b, 0x48, 0x1a, + 0x8a, 0x19, 0x10, 0x18, 0x5a, 0x18, 0xe0, 0x18, 0x24, 0x14, 0x57, 0x13, 0x6e, 0x10, 0x50, 0x0e, + 0x61, 0x0d, 0x9c, 0x09, 0x05, 0x06, 0xd8, 0x03, 0x26, 0x02, 0x9a, 0xfc, 0xae, 0xf9, 0xa7, 0xf6, + 0x36, 0xf3, 0x99, 0xf1, 0xc2, 0xef, 0x05, 0xf0, 0xcc, 0xee, 0x51, 0xf0, 0x88, 0xf0, 0x1a, 0xee, + 0x15, 0xee, 0xe3, 0xef, 0xd9, 0xf5, 0xbe, 0xf9, 0x76, 0xfa, 0x7c, 0xfd, 0xd3, 0x02, 0xf7, 0x07, + 0x3d, 0x0d, 0xbf, 0x0e, 0xc5, 0x10, 0x7e, 0x13, 0xe8, 0x11, 0x04, 0x13, 0xab, 0x16, 0x19, 0x12, + 0xd0, 0x0e, 0x9e, 0x0b, 0xac, 0x08, 0x80, 0x08, 0xec, 0x08, 0x7f, 0x09, 0xd9, 0x09, 0x9a, 0x0b, + 0xfa, 0x0e, 0x5c, 0x11, 0xf0, 0x0e, 0x37, 0x0f, 0x14, 0x0e, 0x7a, 0x0f, 0x7a, 0x0e, 0x21, 0x0b, + 0x04, 0x08, 0x0e, 0xfe, 0x06, 0xf7, 0x27, 0xf0, 0x08, 0xea, 0xb5, 0xe6, 0x24, 0xe6, 0x89, 0xe3, + 0x0a, 0xe1, 0x43, 0xe0, 0x8e, 0xdd, 0xb7, 0xdc, 0xa0, 0xdd, 0xaa, 0xda, 0x3d, 0xde, 0xc8, 0xe2, + 0x0f, 0xe6, 0x5f, 0xe7, 0x5a, 0xe7, 0xc4, 0xea, 0xdb, 0xed, 0xb1, 0xf2, 0xba, 0xf7, 0x9a, 0xfc, + 0xc9, 0xff, 0x9d, 0x01, 0x1c, 0xfd, 0xc7, 0xfd, 0x65, 0xff, 0xcf, 0x00, 0x02, 0x03, 0x38, 0x03, + 0x78, 0x05, 0xc3, 0x06, 0x99, 0x07, 0xaf, 0x0c, 0x50, 0x0e, 0xdb, 0x0b, 0x06, 0x0e, 0x85, 0x10, + 0x20, 0x11, 0x10, 0x0f, 0xa0, 0x0b, 0x00, 0x07, 0x34, 0x00, 0x8d, 0xf9, 0xac, 0xf9, 0x6c, 0xf5, + 0xa9, 0xf0, 0x7b, 0xea, 0x18, 0xe6, 0xb6, 0xe4, 0xd4, 0xe1, 0x01, 0xe2, 0x35, 0xe1, 0x18, 0xe5, + 0x89, 0xe5, 0xb2, 0xe9, 0xa0, 0xec, 0xf0, 0xee, 0x3b, 0xf4, 0x51, 0xf5, 0x2f, 0xfc, 0x24, 0x03, + 0x4c, 0x06, 0x0d, 0x0a, 0x94, 0x0a, 0x27, 0x0b, 0x76, 0x0c, 0x5b, 0x0c, 0xa4, 0x0e, 0xd4, 0x0e, + 0x56, 0x0e, 0x10, 0x10, 0x87, 0x0f, 0x00, 0x0f, 0xe0, 0x11, 0x5c, 0x0f, 0x54, 0x11, 0xbc, 0x12, + 0x30, 0x11, 0xad, 0x11, 0xd2, 0x0f, 0x2b, 0x0e, 0x0f, 0x0c, 0x87, 0x0a, 0xcb, 0x09, 0xde, 0x05, + 0x57, 0x00, 0x7b, 0xff, 0xba, 0xfb, 0xb6, 0xf6, 0xd2, 0xf8, 0x27, 0xf9, 0x73, 0xf7, 0xb3, 0xf5, + 0x38, 0xf5, 0x20, 0xf2, 0x5a, 0xf0, 0x6d, 0xf5, 0xf6, 0xf7, 0x94, 0xfa, 0x86, 0xfa, 0xd6, 0xfd, + 0x03, 0x02, 0x8d, 0x04, 0xc1, 0x05, 0xc1, 0x05, 0x31, 0x0b, 0x30, 0x0a, 0x02, 0x0a, 0x9b, 0x0a, + 0x6a, 0x03, 0x88, 0x01, 0x91, 0xfc, 0xbb, 0xf6, 0x05, 0xf8, 0x34, 0xf9, 0x38, 0xfa, 0xea, 0xfd, + 0x08, 0xfe, 0x5c, 0x00, 0xd9, 0x04, 0x87, 0x05, 0x1b, 0x09, 0xa7, 0x09, 0x05, 0x0c, 0xf2, 0x0f, + 0xec, 0x0f, 0x76, 0x0f, 0xc1, 0x08, 0xdd, 0x04, 0xb3, 0x03, 0x1e, 0x00, 0x55, 0xfd, 0x86, 0xfc, + 0x90, 0xfb, 0x5a, 0xfb, 0x7d, 0xf8, 0xbf, 0xf6, 0x3d, 0xf9, 0x22, 0xf8, 0x93, 0xf6, 0x95, 0xfc, + 0xc2, 0xfe, 0x26, 0x01, 0x69, 0x04, 0x58, 0x05, 0x74, 0x05, 0x8e, 0x09, 0x4e, 0x0d, 0x87, 0x10, + 0x21, 0x15, 0x9e, 0x15, 0xfb, 0x1a, 0x64, 0x17, 0x33, 0x16, 0x36, 0x18, 0xca, 0x16, 0x74, 0x16, + 0x00, 0x13, 0x4c, 0x13, 0xd6, 0x12, 0x82, 0x10, 0x32, 0x13, 0xdc, 0x0f, 0xd3, 0x0b, 0x71, 0x0c, + 0x3d, 0x0b, 0x09, 0x0c, 0x58, 0x0c, 0x1c, 0x07, 0x22, 0x05, 0x24, 0x00, 0x0b, 0xf5, 0x6c, 0xef, + 0x13, 0xe9, 0x4b, 0xe5, 0xcc, 0xe1, 0x23, 0xdc, 0xb0, 0xd9, 0xd3, 0xd7, 0x0b, 0xd9, 0x4d, 0xd8, + 0xa4, 0xd9, 0x54, 0xdc, 0xa7, 0xe1, 0xeb, 0xe5, 0x11, 0xe9, 0x64, 0xec, 0xc0, 0xf0, 0x5e, 0xf6, + 0xa0, 0xfa, 0xb6, 0x01, 0x5d, 0x07, 0xe4, 0x07, 0x0d, 0x0d, 0x32, 0x10, 0x6d, 0x0e, 0x94, 0x0e, + 0xc8, 0x11, 0x92, 0x10, 0x09, 0x11, 0x20, 0x11, 0x45, 0x0f, 0x09, 0x13, 0x5e, 0x0d, 0x6e, 0x0f, + 0x98, 0x12, 0x76, 0x11, 0xa9, 0x11, 0xf7, 0x0e, 0xe4, 0x0d, 0xd3, 0x09, 0x1b, 0x07, 0x48, 0x06, + 0xa2, 0x02, 0xe5, 0xfe, 0x73, 0xfb, 0x9b, 0xf4, 0x54, 0xf0, 0x47, 0xee, 0xab, 0xea, 0xcb, 0xe9, + 0x1d, 0xe6, 0xa9, 0xe5, 0x26, 0xe6, 0x4b, 0xe4, 0xb8, 0xe6, 0x04, 0xe8, 0x30, 0xe9, 0xd9, 0xeb, + 0xd2, 0xf0, 0xe9, 0xf5, 0x0c, 0xfa, 0x14, 0xff, 0x1e, 0x02, 0x75, 0x07, 0xc1, 0x07, 0xad, 0x09, + 0x60, 0x0c, 0x9a, 0x0a, 0xbe, 0x09, 0x55, 0x08, 0x16, 0x06, 0x71, 0x02, 0x03, 0x02, 0xc1, 0x03, + 0xba, 0x05, 0x91, 0x06, 0x46, 0x0a, 0xfa, 0x0e, 0x13, 0x0d, 0x8a, 0x10, 0x89, 0x11, 0xb1, 0x12, + 0x19, 0x15, 0x6e, 0x13, 0x03, 0x15, 0xc4, 0x0c, 0x1c, 0x05, 0xaa, 0x02, 0xf1, 0xfd, 0x1a, 0xfa, + 0xbc, 0xf5, 0x4f, 0xf4, 0xad, 0xf3, 0xec, 0xee, 0xa8, 0xeb, 0xef, 0xe9, 0xe8, 0xe7, 0xd1, 0xe7, + 0x6d, 0xe7, 0xa9, 0xe7, 0x0f, 0xea, 0xa4, 0xe8, 0x90, 0xe8, 0xab, 0xe6, 0x13, 0xe8, 0x59, 0xed, + 0x4c, 0xf4, 0x13, 0xfa, 0xe7, 0xfb, 0x78, 0xfe, 0x40, 0xfc, 0x39, 0xfd, 0x7a, 0x00, 0x17, 0x00, + 0x8a, 0x00, 0x5f, 0x02, 0xa4, 0x06, 0xba, 0x06, 0x0e, 0x06, 0x90, 0x0a, 0xf9, 0x0c, 0x37, 0x0c, + 0x5d, 0x0d, 0x86, 0x11, 0xa5, 0x13, 0xe6, 0x13, 0x1d, 0x11, 0x98, 0x11, 0x37, 0x0f, 0x1a, 0x07, + 0x56, 0x06, 0x55, 0x00, 0x85, 0xfe, 0x09, 0xfc, 0xa6, 0xf7, 0x5c, 0xf5, 0xf9, 0xef, 0x7f, 0xf0, + 0xc6, 0xee, 0x6d, 0xef, 0x01, 0xf2, 0x77, 0xf4, 0xa9, 0xf9, 0x8e, 0xfb, 0xbb, 0xfd, 0x7f, 0x03, + 0x45, 0x07, 0x00, 0x0b, 0x90, 0x0f, 0x0d, 0x12, 0x5c, 0x15, 0xae, 0x18, 0x09, 0x18, 0x1c, 0x16, + 0x8a, 0x13, 0xda, 0x13, 0x40, 0x12, 0xca, 0x10, 0x44, 0x0d, 0xae, 0x0a, 0xd6, 0x0d, 0xe8, 0x09, + 0x9a, 0x09, 0xc0, 0x08, 0x2b, 0x07, 0xbc, 0x08, 0xde, 0x07, 0xb9, 0x04, 0x87, 0x02, 0xaf, 0x03, + 0x1e, 0x04, 0xbb, 0x01, 0x2b, 0xfc, 0x19, 0xf8, 0xb6, 0xf4, 0xb1, 0xf0, 0x5c, 0xef, 0xab, 0xee, + 0x48, 0xee, 0x60, 0xea, 0x9c, 0xeb, 0x2b, 0xed, 0x0d, 0xe9, 0x30, 0xee, 0x86, 0xef, 0xec, 0xf0, + 0x6b, 0xf5, 0xb3, 0xf8, 0x86, 0xfd, 0x4a, 0x00, 0x59, 0x03, 0x69, 0x04, 0x33, 0x0a, 0x0b, 0x0d, + 0xf8, 0x0b, 0x7a, 0x0e, 0xbe, 0x0e, 0x7a, 0x0c, 0xb8, 0x0c, 0x0a, 0x0b, 0xb3, 0x07, 0xeb, 0x07, + 0x4c, 0x05, 0x3f, 0x07, 0x10, 0x0a, 0xd9, 0x0b, 0x8e, 0x0e, 0x1b, 0x0d, 0x61, 0x0d, 0x3d, 0x0d, + 0xa4, 0x0d, 0x4f, 0x0d, 0x96, 0x0a, 0x6d, 0x0c, 0x9c, 0x08, 0x7b, 0x04, 0x6c, 0x01, 0xe9, 0xfa, + 0x2d, 0xf6, 0x99, 0xf3, 0x9a, 0xf2, 0xe4, 0xf0, 0x52, 0xee, 0x63, 0xeb, 0xfa, 0xeb, 0xaf, 0xea, + 0xe3, 0xe9, 0xdd, 0xeb, 0x45, 0xec, 0xf3, 0xee, 0x90, 0xf0, 0x75, 0xf3, 0x65, 0xf2, 0x82, 0xf4, + 0xbd, 0xfb, 0x04, 0x00, 0x53, 0x06, 0x08, 0x0a, 0xd9, 0x0b, 0x2e, 0x0d, 0x80, 0x0e, 0x15, 0x12, + 0x79, 0x12, 0xd0, 0x12, 0x03, 0x12, 0x19, 0x13, 0x4d, 0x14, 0xc1, 0x10, 0x9c, 0x0f, 0x14, 0x12, + 0xb3, 0x10, 0x3d, 0x11, 0x1e, 0x13, 0xc8, 0x12, 0xae, 0x16, 0x29, 0x12, 0x93, 0x0e, 0x6e, 0x0d, + 0x6b, 0x05, 0xf0, 0xff, 0x96, 0xf8, 0x35, 0xf4, 0xf0, 0xec, 0x69, 0xe7, 0x3f, 0xe2, 0xf3, 0xd8, + 0x41, 0xd5, 0x5d, 0xd3, 0x71, 0xd3, 0x3d, 0xd6, 0xee, 0xd8, 0xe2, 0xd8, 0xf8, 0xda, 0x87, 0xde, + 0x38, 0xe1, 0xb6, 0xe5, 0xe7, 0xe8, 0x56, 0xef, 0x7a, 0xf7, 0x9d, 0xfb, 0x21, 0x02, 0x2e, 0x05, + 0x9d, 0x05, 0x15, 0x04, 0xb4, 0x07, 0x9e, 0x09, 0x10, 0x0a, 0xd5, 0x0a, 0x2d, 0x08, 0x9d, 0x0a, + 0x8a, 0x0a, 0x02, 0x0b, 0x8e, 0x0c, 0x9b, 0x0c, 0x35, 0x0f, 0x33, 0x10, 0xbb, 0x0e, 0x19, 0x0e, + 0xb4, 0x0c, 0x15, 0x0e, 0xc0, 0x0e, 0x27, 0x08, 0x0a, 0x05, 0x89, 0x01, 0x91, 0xff, 0xee, 0xfd, + 0xaa, 0xf9, 0x57, 0xfa, 0xda, 0xf7, 0x34, 0xf5, 0x61, 0xf5, 0xa3, 0xf1, 0x1f, 0xf3, 0xb6, 0xf2, + 0xbc, 0xf3, 0xf4, 0xf4, 0x1a, 0xf6, 0xdb, 0xf8, 0x48, 0xfb, 0xc0, 0xfc, 0x9f, 0xfc, 0x35, 0x03, + 0x4a, 0x07, 0xba, 0x09, 0xa2, 0x0b, 0x36, 0x09, 0x94, 0x08, 0x3b, 0x0a, 0x8f, 0x09, 0x88, 0x05, + 0xca, 0x03, 0x40, 0x04, 0xf3, 0x05, 0x25, 0x07, 0xdf, 0x08, 0xcf, 0x0c, 0x71, 0x0b, 0x00, 0x0d, + 0x62, 0x10, 0x02, 0x11, 0x32, 0x14, 0x95, 0x13, 0x98, 0x14, 0x72, 0x13, 0x04, 0x10, 0x73, 0x0d, + 0x49, 0x07, 0x76, 0x03, 0xc4, 0x00, 0xf3, 0xfd, 0xcf, 0xfe, 0xba, 0xfc, 0x33, 0xf6, 0x8f, 0xf7, + 0x14, 0xf4, 0x6a, 0xf2, 0x4a, 0xf2, 0xb0, 0xf1, 0x32, 0xf5, 0xf1, 0xf4, 0xf6, 0xf4, 0xd0, 0xf4, + 0xf2, 0xf5, 0xe8, 0xf8, 0x04, 0xfd, 0xc5, 0x02, 0x6b, 0x05, 0xcb, 0x08, 0x16, 0x0a, 0x6c, 0x09, + 0x76, 0x09, 0x6d, 0x09, 0x51, 0x08, 0xed, 0x04, 0x63, 0x06, 0x7a, 0x06, 0x2c, 0x04, 0x01, 0x06, + 0xd3, 0x06, 0x38, 0x05, 0xef, 0x05, 0x84, 0x08, 0x66, 0x09, 0xed, 0x0b, 0xc7, 0x09, 0x90, 0x0a, + 0xc2, 0x0c, 0x8b, 0x07, 0xff, 0x05, 0xb8, 0x00, 0x3a, 0xfc, 0x3f, 0xfa, 0x57, 0xf7, 0x56, 0xf3, + 0x47, 0xee, 0x7d, 0xea, 0x91, 0xe9, 0x90, 0xe8, 0xc6, 0xeb, 0x98, 0xed, 0x90, 0xed, 0xc1, 0xf1, + 0x85, 0xf3, 0x93, 0xf6, 0x6c, 0xfd, 0x47, 0xfe, 0x04, 0x04, 0xda, 0x0b, 0xe1, 0x0f, 0x1e, 0x14, + 0xb9, 0x14, 0xe9, 0x15, 0xd1, 0x15, 0x7c, 0x16, 0x21, 0x17, 0x24, 0x1a, 0x27, 0x19, 0x7e, 0x13, + 0xd8, 0x13, 0xd0, 0x0f, 0xf2, 0x0d, 0x30, 0x0e, 0x0f, 0x0d, 0xda, 0x0a, 0x23, 0x0a, 0x0f, 0x08, + 0xde, 0x03, 0x22, 0x01, 0xb4, 0xff, 0x7f, 0xfc, 0x43, 0xf8, 0x44, 0xf5, 0xc1, 0xef, 0x79, 0xeb, + 0x59, 0xe7, 0xa5, 0xe2, 0xb8, 0xe0, 0xc6, 0xdc, 0xe0, 0xd9, 0x95, 0xdd, 0x28, 0xd9, 0xaa, 0xd9, + 0x76, 0xdd, 0xbf, 0xdc, 0xae, 0xde, 0x42, 0xe3, 0x12, 0xe5, 0x8e, 0xe8, 0xbd, 0xec, 0xb4, 0xee, + 0x17, 0xf5, 0x40, 0xfb, 0x00, 0x02, 0xa8, 0x03, 0x15, 0x05, 0x17, 0x06, 0xb0, 0x05, 0xa7, 0x08, + 0x30, 0x06, 0x0e, 0x04, 0xaa, 0x04, 0xb0, 0x06, 0x7d, 0x08, 0xb2, 0x08, 0x96, 0x0a, 0x25, 0x0c, + 0x69, 0x0e, 0x78, 0x0f, 0x39, 0x11, 0xba, 0x14, 0xb3, 0x12, 0xf3, 0x14, 0x72, 0x14, 0xc6, 0x10, + 0xb8, 0x0d, 0x3f, 0x09, 0x2b, 0x05, 0xab, 0x00, 0xbf, 0xfd, 0xc2, 0xfb, 0x70, 0xf8, 0x7d, 0xf1, + 0x9a, 0xed, 0x3b, 0xe8, 0x6d, 0xe7, 0x77, 0xe9, 0x39, 0xe8, 0x28, 0xe8, 0x78, 0xe8, 0x4d, 0xe9, + 0xba, 0xe9, 0x4c, 0xea, 0x85, 0xef, 0xa3, 0xf5, 0xde, 0xf8, 0x75, 0xff, 0x49, 0x05, 0xc4, 0x07, + 0xc1, 0x0a, 0x36, 0x0c, 0x97, 0x0d, 0x6d, 0x0f, 0x4a, 0x10, 0xc4, 0x13, 0xc3, 0x13, 0xe1, 0x12, + 0x79, 0x11, 0x4e, 0x12, 0x6e, 0x14, 0xf6, 0x13, 0xbb, 0x16, 0x71, 0x18, 0x6f, 0x1b, 0xd1, 0x1a, + 0x61, 0x1a, 0xa5, 0x1b, 0x05, 0x18, 0x9f, 0x12, 0x82, 0x0a, 0x2c, 0x07, 0xab, 0x02, 0x44, 0xfe, + 0x04, 0xfb, 0x78, 0xf4, 0xc3, 0xed, 0xb0, 0xeb, 0x55, 0xe9, 0xf3, 0xe8, 0xf3, 0xea, 0xf7, 0xeb, + 0x79, 0xec, 0x12, 0xee, 0x92, 0xef, 0xa7, 0xf1, 0xb5, 0xf1, 0x21, 0xf4, 0x93, 0xf8, 0x37, 0xfb, + 0xec, 0x01, 0x1e, 0x07, 0x3f, 0x08, 0x1c, 0x07, 0xe8, 0x06, 0x88, 0x07, 0xa9, 0x09, 0x10, 0x0a, + 0x75, 0x09, 0xec, 0x08, 0x61, 0x07, 0x75, 0x09, 0xff, 0x09, 0xe4, 0x0a, 0x52, 0x0b, 0xaf, 0x0d, + 0x84, 0x0d, 0x13, 0x0d, 0xca, 0x0e, 0x8e, 0x0e, 0x4e, 0x0e, 0xe0, 0x0b, 0xee, 0x08, 0xdc, 0x07, + 0x54, 0x06, 0x46, 0x03, 0xf6, 0xff, 0x66, 0xfe, 0x45, 0xfc, 0x1a, 0xf9, 0x34, 0xfc, 0xc2, 0xf8, + 0x49, 0xf7, 0x88, 0xf6, 0x72, 0xf6, 0xa5, 0xf7, 0xcd, 0xf8, 0xad, 0xf7, 0xf4, 0xf9, 0x09, 0xff, + 0xee, 0x00, 0xbf, 0x06, 0x7f, 0x0a, 0xdd, 0x0c, 0x38, 0x0e, 0xd4, 0x0e, 0xcf, 0x0e, 0xee, 0x0f, + 0xf8, 0x0f, 0xb4, 0x0c, 0x4d, 0x08, 0x11, 0x05, 0x5b, 0x02, 0x96, 0xff, 0x87, 0xff, 0x14, 0x00, + 0x57, 0xff, 0xe3, 0xfe, 0xc0, 0xff, 0xc7, 0x00, 0x00, 0x01, 0x11, 0x00, 0x12, 0x03, 0x43, 0x01, + 0x8a, 0xff, 0xfe, 0xfe, 0xbc, 0xfc, 0x05, 0xf8, 0xcb, 0xf4, 0x00, 0xf2, 0x5c, 0xee, 0x5d, 0xf0, + 0xae, 0xeb, 0xba, 0xe8, 0x97, 0xe5, 0x82, 0xe2, 0x18, 0xe4, 0x5b, 0xe5, 0xae, 0xe5, 0xbd, 0xe6, + 0x8e, 0xe7, 0x83, 0xe8, 0x76, 0xe9, 0x98, 0xec, 0xd2, 0xf1, 0x4a, 0xf7, 0xb4, 0xfc, 0xdc, 0x00, + 0x12, 0x04, 0x0b, 0x07, 0xb6, 0x06, 0xa5, 0x05, 0x98, 0x08, 0x3f, 0x09, 0x86, 0x0c, 0xbd, 0x0f, + 0xce, 0x0c, 0x45, 0x0a, 0x63, 0x0b, 0x60, 0x0b, 0x91, 0x0b, 0xc4, 0x0d, 0x5a, 0x0d, 0xc5, 0x0f, + 0xb0, 0x0f, 0xf2, 0x0e, 0xe9, 0x0b, 0x43, 0x08, 0xfa, 0x04, 0x0b, 0x01, 0x27, 0xfe, 0xa7, 0xf9, + 0x07, 0xf7, 0xf1, 0xf0, 0xe5, 0xe9, 0x22, 0xe5, 0xa3, 0xe2, 0x3d, 0xe0, 0xeb, 0xde, 0x5c, 0xe2, + 0x75, 0xe3, 0x98, 0xe4, 0x32, 0xe9, 0xf5, 0xe8, 0x07, 0xed, 0xfa, 0xf0, 0x12, 0xf4, 0x93, 0xfc, + 0x5d, 0x01, 0xaa, 0x06, 0xd8, 0x0d, 0xe9, 0x11, 0x07, 0x13, 0x82, 0x14, 0x65, 0x15, 0xcb, 0x19, + 0x29, 0x1c, 0x2f, 0x1a, 0xc1, 0x1a, 0xad, 0x19, 0x43, 0x19, 0xe3, 0x17, 0x26, 0x18, 0xc9, 0x16, + 0x23, 0x15, 0x1b, 0x14, 0x9c, 0x14, 0x0b, 0x14, 0x90, 0x14, 0x32, 0x13, 0xf3, 0x0e, 0xdb, 0x0c, + 0xc7, 0x08, 0xfe, 0x04, 0x88, 0x01, 0xc4, 0xfb, 0xf5, 0xf7, 0x99, 0xf4, 0xae, 0xf0, 0x76, 0xf0, + 0x0c, 0xeb, 0xaf, 0xe4, 0x78, 0xe4, 0x46, 0xe6, 0x6f, 0xe4, 0x23, 0xe7, 0x30, 0xe6, 0xb0, 0xe4, + 0xa1, 0xe8, 0x64, 0xea, 0x29, 0xf0, 0xa3, 0xf2, 0x9e, 0xf9, 0xc2, 0xff, 0xc4, 0x01, 0x2e, 0x05, + 0x17, 0x06, 0x8e, 0x05, 0x0d, 0x07, 0xca, 0x05, 0xfe, 0x05, 0x0d, 0x08, 0x14, 0x07, 0x14, 0x07, + 0xb9, 0x08, 0x7e, 0x0b, 0xf2, 0x0d, 0x6b, 0x0f, 0x2c, 0x12, 0x5f, 0x16, 0x58, 0x15, 0x49, 0x18, + 0x3f, 0x19, 0x4b, 0x19, 0x83, 0x17, 0x9a, 0x15, 0xab, 0x12, 0x30, 0x0f, 0x1d, 0x0a, 0xe9, 0x05, + 0x52, 0x05, 0xc7, 0x00, 0xcb, 0xfe, 0x6d, 0xf9, 0x23, 0xf6, 0x97, 0xf6, 0x25, 0xf6, 0x3f, 0xf3, + 0x3d, 0xf2, 0xbe, 0xf1, 0x32, 0xf1, 0x26, 0xf3, 0x02, 0xf5, 0x99, 0xf7, 0x4e, 0xf7, 0x90, 0xf8, + 0x9a, 0xfe, 0xbe, 0x00, 0x6c, 0x03, 0xa1, 0x05, 0x01, 0x03, 0x73, 0x05, 0xf1, 0x04, 0x56, 0x08, + 0xcd, 0x09, 0x3f, 0x06, 0x53, 0x05, 0x63, 0x05, 0x5d, 0x06, 0xab, 0x07, 0x1d, 0x07, 0x97, 0x06, + 0x36, 0x0a, 0x01, 0x0c, 0xb3, 0x0e, 0xae, 0x0e, 0x27, 0x0d, 0x6a, 0x0a, 0xfa, 0x06, 0xdd, 0x04, + 0x03, 0x01, 0x1b, 0xfc, 0x40, 0xf8, 0xfb, 0xf3, 0x36, 0xed, 0xc0, 0xe9, 0x5d, 0xe8, 0x1f, 0xe6, + 0x97, 0xe6, 0x84, 0xe7, 0xc2, 0xe9, 0x9a, 0xeb, 0xac, 0xea, 0xad, 0xec, 0x60, 0xec, 0x52, 0xee, + 0xd4, 0xf4, 0xbe, 0xf8, 0x82, 0xfd, 0xb9, 0x04, 0x98, 0x08, 0xf0, 0x08, 0x8d, 0x0a, 0x60, 0x08, + 0x21, 0x0b, 0x6b, 0x0e, 0xe8, 0x0e, 0xf5, 0x0d, 0x67, 0x07, 0xcc, 0x05, 0x8d, 0x04, 0xc6, 0x03, + 0x9a, 0x03, 0x80, 0x02, 0xbb, 0x02, 0x87, 0x02, 0x5b, 0x02, 0xf0, 0x03, 0x85, 0x00, 0x75, 0xfe, + 0xbc, 0xfd, 0xbd, 0xfb, 0xe1, 0xfc, 0x00, 0xfc, 0x8c, 0xf7, 0xc5, 0xf4, 0xbc, 0xf2, 0xde, 0xee, + 0x8f, 0xf0, 0x06, 0xf0, 0x45, 0xec, 0x22, 0xec, 0x4d, 0xef, 0xf2, 0xef, 0x41, 0xf1, 0x60, 0xf0, + 0xa2, 0xf1, 0x9e, 0xf6, 0x34, 0xf9, 0x0a, 0xff, 0xbc, 0x02, 0x0e, 0x09, 0xbc, 0x0c, 0xad, 0x11, + 0xf8, 0x14, 0xce, 0x15, 0xa1, 0x15, 0x73, 0x14, 0xa1, 0x12, 0xa3, 0x11, 0x1c, 0x12, 0xe0, 0x0f, + 0xda, 0x0e, 0x70, 0x0e, 0xdf, 0x0c, 0x42, 0x0e, 0xed, 0x0d, 0xca, 0x0d, 0x45, 0x10, 0x51, 0x0e, + 0x25, 0x12, 0x69, 0x10, 0xb2, 0x0c, 0x11, 0x09, 0xe2, 0x05, 0x22, 0x02, 0xce, 0xfd, 0x64, 0xfa, + 0xd0, 0xf3, 0xd7, 0xf0, 0x07, 0xee, 0xdd, 0xe9, 0x57, 0xe3, 0xc5, 0xdf, 0x11, 0xde, 0x0f, 0xe0, + 0x1b, 0xe1, 0xab, 0xe0, 0xab, 0xe0, 0x7e, 0xe1, 0xbe, 0xe1, 0x07, 0xe3, 0xfe, 0xe7, 0x7c, 0xeb, + 0xbf, 0xef, 0x87, 0xf6, 0x26, 0xfc, 0x85, 0x01, 0xf7, 0x03, 0x00, 0x03, 0x9e, 0x07, 0x1f, 0x0a, + 0x6d, 0x0d, 0x69, 0x11, 0x05, 0x14, 0x9b, 0x12, 0x55, 0x13, 0x2b, 0x16, 0xe9, 0x16, 0xf5, 0x17, + 0xa7, 0x16, 0x5e, 0x18, 0x68, 0x19, 0x36, 0x1c, 0x68, 0x1b, 0xe9, 0x19, 0x72, 0x19, 0xa9, 0x16, + 0x2f, 0x15, 0x43, 0x11, 0x85, 0x0c, 0xa9, 0x08, 0x97, 0x01, 0x9a, 0xfb, 0xcc, 0xf7, 0xac, 0xf2, + 0xdc, 0xec, 0xab, 0xe9, 0xf4, 0xe8, 0x26, 0xe7, 0x3c, 0xe8, 0x26, 0xe8, 0x45, 0xe8, 0x17, 0xe9, + 0x1a, 0xea, 0x97, 0xee, 0x31, 0xf2, 0x44, 0xf4, 0x92, 0xf9, 0xe6, 0x00, 0x94, 0x04, 0x6e, 0x08, + 0x3a, 0x09, 0x1e, 0x0b, 0xfe, 0x0d, 0x31, 0x10, 0xe0, 0x11, 0xb1, 0x10, 0x21, 0x10, 0x3a, 0x0e, + 0x0a, 0x0f, 0x70, 0x0e, 0x65, 0x0c, 0x08, 0x0d, 0x3f, 0x0f, 0xd4, 0x10, 0x3c, 0x11, 0x98, 0x10, + 0x5a, 0x0f, 0x1b, 0x0e, 0x27, 0x0c, 0x5d, 0x0a, 0x61, 0x09, 0xb4, 0x04, 0x0b, 0x00, 0xfa, 0xfb, + 0x1e, 0xf7, 0x08, 0xf6, 0xee, 0xf2, 0x57, 0xef, 0x20, 0xed, 0x2b, 0xef, 0x94, 0xee, 0xb0, 0xee, + 0x74, 0xee, 0xe6, 0xea, 0x0e, 0xeb, 0x52, 0xed, 0x13, 0xf2, 0xf2, 0xf3, 0x18, 0xf7, 0x2c, 0xfb, + 0x9f, 0xfe, 0x4f, 0xff, 0x62, 0x01, 0xa4, 0x00, 0x61, 0x00, 0x60, 0x00, 0x2e, 0xff, 0x8a, 0xff, + 0xe5, 0xfd, 0xa4, 0xfb, 0x66, 0xfb, 0x6d, 0xfc, 0x64, 0xff, 0x04, 0x01, 0xaf, 0x03, 0xeb, 0x07, + 0xca, 0x07, 0x2a, 0x0b, 0x89, 0x0c, 0x55, 0x0d, 0x54, 0x0b, 0x91, 0x0b, 0x8e, 0x0b, 0x70, 0x0a, + 0x55, 0x08, 0xa1, 0x02, 0xec, 0x01, 0x09, 0xff, 0xd1, 0xfc, 0x4e, 0xf9, 0xd6, 0xf6, 0x86, 0xf5, + 0x8d, 0xf5, 0xa8, 0xf4, 0x20, 0xf3, 0x9c, 0xf2, 0xd5, 0xf2, 0x06, 0xf2, 0x20, 0xf3, 0x35, 0xf5, + 0x44, 0xf6, 0xa8, 0xf8, 0x44, 0xfe, 0xc5, 0x03, 0x3a, 0x06, 0x37, 0x0a, 0xf1, 0x09, 0xd4, 0x0a, + 0xe9, 0x0a, 0xe9, 0x0c, 0xeb, 0x10, 0x34, 0x11, 0x77, 0x0d, 0x0e, 0x0c, 0x2c, 0x09, 0x30, 0x07, + 0xbc, 0x06, 0xf9, 0x03, 0xf7, 0x04, 0x8e, 0x05, 0x44, 0x07, 0xc4, 0x06, 0x23, 0x05, 0xd2, 0x02, + 0xe4, 0x00, 0xd2, 0xff, 0xc7, 0xfc, 0x3e, 0xfa, 0x15, 0xf8, 0x1c, 0xf4, 0x7c, 0xee, 0x49, 0xe9, + 0x6c, 0xe6, 0x21, 0xe2, 0x13, 0xe0, 0xc6, 0xe0, 0x33, 0xe2, 0x2a, 0xe6, 0xb5, 0xe4, 0xd5, 0xe6, + 0x27, 0xe8, 0xdb, 0xe7, 0xaa, 0xec, 0x09, 0xf2, 0xe5, 0xf6, 0xe5, 0xfc, 0x42, 0x05, 0xe8, 0x08, + 0x59, 0x0d, 0xe4, 0x0e, 0x7a, 0x0e, 0x00, 0x11, 0x2f, 0x14, 0xcd, 0x15, 0x39, 0x15, 0x91, 0x14, + 0xcd, 0x14, 0xdd, 0x13, 0x89, 0x12, 0xc9, 0x11, 0x25, 0x12, 0x39, 0x13, 0xaf, 0x12, 0xf2, 0x13, + 0x4e, 0x13, 0x2b, 0x10, 0x8c, 0x0f, 0x69, 0x0c, 0xf9, 0x07, 0x08, 0x07, 0x4c, 0x03, 0x12, 0xff, + 0xa7, 0xfc, 0x05, 0xf6, 0x82, 0xf3, 0x89, 0xf2, 0xee, 0xee, 0x4c, 0xea, 0x1f, 0xeb, 0xa8, 0xe9, + 0xdb, 0xe9, 0x06, 0xea, 0x93, 0xe9, 0x6e, 0xeb, 0x38, 0xec, 0xa6, 0xf0, 0x9b, 0xf3, 0x2e, 0xf8, + 0xff, 0xfc, 0xba, 0x02, 0xb4, 0x08, 0x8b, 0x0b, 0xd6, 0x0c, 0x39, 0x0f, 0xee, 0x0f, 0xb6, 0x10, + 0x7d, 0x11, 0x30, 0x11, 0x67, 0x10, 0xfd, 0x10, 0x41, 0x10, 0xd4, 0x10, 0x26, 0x12, 0x47, 0x12, + 0xe8, 0x14, 0x97, 0x14, 0x7e, 0x16, 0x92, 0x17, 0xb4, 0x16, 0x00, 0x15, 0xa8, 0x14, 0x26, 0x12, + 0x69, 0x10, 0x22, 0x0f, 0xd1, 0x09, 0x79, 0x04, 0xf9, 0xfe, 0xa3, 0xfc, 0x6c, 0xf7, 0x5d, 0xf3, + 0x1a, 0xf0, 0xbe, 0xec, 0xa3, 0xe9, 0x8b, 0xe7, 0xd7, 0xe4, 0x97, 0xe4, 0xa7, 0xe2, 0xfa, 0xdf, + 0x05, 0xe1, 0xb6, 0xe2, 0xad, 0xe3, 0x48, 0xe8, 0x80, 0xed, 0x74, 0xf0, 0xa1, 0xf4, 0xa6, 0xf6, + 0xac, 0xfb, 0xef, 0xfc, 0x47, 0xff, 0xdf, 0x02, 0xcb, 0x06, 0x56, 0x08, 0xc6, 0x07, 0x8b, 0x09, + 0x2b, 0x0a, 0x06, 0x0b, 0x89, 0x0b, 0xb4, 0x0d, 0x88, 0x0f, 0x09, 0x13, 0xd1, 0x13, 0x08, 0x14, + 0x05, 0x15, 0x73, 0x15, 0xea, 0x14, 0x67, 0x14, 0xb7, 0x12, 0x02, 0x10, 0xbe, 0x0b, 0x04, 0x05, + 0x1f, 0x00, 0xb8, 0xfa, 0x41, 0xf4, 0x7f, 0xf1, 0x68, 0xf0, 0x5b, 0xee, 0x3f, 0xef, 0xb3, 0xee, + 0x40, 0xf0, 0xf2, 0xee, 0xba, 0xed, 0x93, 0xf0, 0x5d, 0xf3, 0xe7, 0xf6, 0x7c, 0xf9, 0x34, 0xfe, + 0x4a, 0x01, 0x28, 0x04, 0xe5, 0x04, 0xdb, 0x04, 0x67, 0x04, 0x1f, 0x06, 0x04, 0x09, 0xd7, 0x08, + 0xee, 0x07, 0xbf, 0x05, 0x45, 0x03, 0x04, 0x01, 0x29, 0xfd, 0x59, 0xfe, 0x47, 0x01, 0x65, 0x02, + 0x7b, 0x03, 0xeb, 0x02, 0x59, 0x03, 0xe0, 0x02, 0x9a, 0x01, 0x7f, 0xff, 0xf6, 0xfe, 0xa6, 0xfd, + 0x38, 0xfb, 0x16, 0xfa, 0x1b, 0xf5, 0xb1, 0xf1, 0x95, 0xef, 0xfd, 0xed, 0x7c, 0xec, 0x60, 0xed, + 0x2f, 0xed, 0x02, 0xef, 0xcc, 0xef, 0x70, 0xef, 0x4e, 0xed, 0x74, 0xec, 0xfd, 0xef, 0xb7, 0xf0, + 0x7a, 0xf4, 0x74, 0xf9, 0xc2, 0xff, 0x76, 0x04, 0x0f, 0x07, 0x0e, 0x0a, 0x5f, 0x0c, 0x0c, 0x0c, + 0xb4, 0x0c, 0x85, 0x0c, 0x78, 0x0c, 0x59, 0x0c, 0xf6, 0x0a, 0x21, 0x09, 0x92, 0x08, 0xf5, 0x06, + 0xac, 0x06, 0x66, 0x0a, 0x59, 0x09, 0x0c, 0x0b, 0xbd, 0x0b, 0x4b, 0x0c, 0x44, 0x0a, 0x94, 0x08, + 0x55, 0x08, 0x69, 0x06, 0xa8, 0x06, 0xea, 0x03, 0x42, 0x00, 0x82, 0xfd, 0x0d, 0xfb, 0x54, 0xf8, + 0x66, 0xf7, 0xbe, 0xf4, 0x83, 0xf2, 0x26, 0xf0, 0xda, 0xef, 0x73, 0xee, 0x14, 0xf0, 0x13, 0xf1, + 0xa1, 0xf0, 0xf0, 0xf1, 0x9a, 0xf2, 0x40, 0xf5, 0x97, 0xfa, 0xc0, 0xff, 0x9a, 0x04, 0xa2, 0x09, + 0x6b, 0x0d, 0x27, 0x12, 0x66, 0x12, 0x1d, 0x14, 0xe9, 0x15, 0xdc, 0x18, 0xbf, 0x19, 0x88, 0x19, + 0x74, 0x19, 0xca, 0x16, 0xcc, 0x15, 0x09, 0x16, 0x6d, 0x15, 0xd7, 0x14, 0x3c, 0x16, 0xb6, 0x15, + 0x6c, 0x16, 0x14, 0x16, 0x29, 0x14, 0x9b, 0x12, 0x34, 0x0f, 0x23, 0x0a, 0xad, 0x07, 0x37, 0x03, + 0xc0, 0xfc, 0x34, 0xf6, 0xf4, 0xef, 0xf9, 0xe8, 0xda, 0xe2, 0xb4, 0xe1, 0xf6, 0xde, 0x7a, 0xdf, + 0x68, 0xde, 0x4e, 0xdf, 0xca, 0xe0, 0x0a, 0xe0, 0xd1, 0xe0, 0xb6, 0xe4, 0x60, 0xe9, 0x01, 0xed, + 0xe1, 0xf2, 0xb2, 0xf8, 0x47, 0xfe, 0x95, 0x02, 0xc9, 0x04, 0xe5, 0x04, 0x03, 0x09, 0x96, 0x0c, + 0x92, 0x0e, 0xd1, 0x11, 0xa5, 0x11, 0x08, 0x11, 0x1d, 0x10, 0xd5, 0x0e, 0xa2, 0x10, 0xf3, 0x12, + 0x9f, 0x14, 0x8d, 0x15, 0x1b, 0x15, 0x99, 0x13, 0xa3, 0x11, 0xb0, 0x11, 0x40, 0x0f, 0xde, 0x0d, + 0x93, 0x0d, 0xa5, 0x0b, 0xf6, 0x09, 0x4a, 0x04, 0xdc, 0xfd, 0x57, 0xfa, 0xdf, 0xf9, 0x2c, 0xf6, + 0xce, 0xf4, 0x47, 0xf2, 0x26, 0xef, 0x4d, 0xed, 0xce, 0xeb, 0xce, 0xe8, 0xab, 0xe6, 0x2e, 0xe7, + 0x47, 0xe8, 0xa0, 0xe9, 0xc6, 0xec, 0x73, 0xf1, 0xb2, 0xf5, 0x6a, 0xf8, 0x2f, 0xf9, 0x61, 0xfd, + 0x1c, 0x00, 0x9e, 0x01, 0xe6, 0x02, 0xbf, 0x03, 0x5c, 0x04, 0xd7, 0x03, 0x0f, 0x03, 0xcc, 0x02, + 0x40, 0x02, 0xa2, 0x02, 0xee, 0x04, 0xf1, 0x06, 0xeb, 0x09, 0x75, 0x0a, 0x35, 0x0d, 0x5e, 0x0c, + 0xaf, 0x0c, 0x1a, 0x0c, 0x16, 0x0b, 0x15, 0x0d, 0x76, 0x0c, 0x3e, 0x08, 0x2e, 0x03, 0xe4, 0xff, + 0x50, 0xfc, 0xdb, 0xf7, 0x68, 0xf4, 0x1e, 0xf2, 0x41, 0xee, 0x89, 0xed, 0xba, 0xeb, 0x38, 0xec, + 0x3e, 0xec, 0xcc, 0xe9, 0xcf, 0xe6, 0xa5, 0xe7, 0x2f, 0xe9, 0xd8, 0xeb, 0xa1, 0xf0, 0xe7, 0xf3, + 0xd9, 0xf6, 0xa6, 0xf8, 0xbd, 0xfc, 0x46, 0xfd, 0x67, 0xfd, 0x92, 0xff, 0x9e, 0x02, 0x0a, 0x05, + 0xbc, 0x05, 0xb7, 0x05, 0x09, 0x05, 0x2b, 0x03, 0xfa, 0x02, 0x9f, 0x04, 0x16, 0x06, 0xd2, 0x09, + 0x4b, 0x0b, 0x8b, 0x0d, 0x85, 0x0e, 0x56, 0x0f, 0x3b, 0x10, 0x8e, 0x10, 0x51, 0x10, 0x8a, 0x0f, + 0xbb, 0x0d, 0x18, 0x0b, 0x78, 0x06, 0x4a, 0x02, 0x6f, 0xfc, 0x1c, 0xf8, 0xcb, 0xf6, 0x54, 0xf3, + 0x01, 0xf4, 0xfb, 0xf3, 0xae, 0xf5, 0xf4, 0xf6, 0x6a, 0xf6, 0xe1, 0xf6, 0x44, 0xf8, 0xf8, 0xf9, + 0xb5, 0xfc, 0x95, 0x00, 0x1a, 0x05, 0x04, 0x0a, 0x0a, 0x0e, 0x22, 0x11, 0x19, 0x11, 0x3e, 0x11, + 0x4f, 0x13, 0x64, 0x16, 0x4c, 0x17, 0x82, 0x17, 0x9a, 0x15, 0xc3, 0x12, 0x15, 0x0e, 0x5f, 0x0b, + 0x5a, 0x0b, 0x7d, 0x0a, 0x7e, 0x0a, 0x9b, 0x09, 0x26, 0x08, 0x45, 0x06, 0xac, 0x04, 0xed, 0x01, + 0x5d, 0xff, 0xb0, 0xfc, 0xf7, 0xfa, 0x07, 0xfa, 0x2f, 0xf7, 0xbd, 0xf1, 0x1c, 0xee, 0xf3, 0xec, + 0xc0, 0xea, 0xaa, 0xeb, 0xde, 0xe9, 0xb0, 0xea, 0xd8, 0xeb, 0xf8, 0xeb, 0xa5, 0xea, 0x2e, 0xe9, + 0x62, 0xea, 0xcd, 0xeb, 0xda, 0xed, 0x70, 0xf2, 0x6c, 0xf7, 0xcd, 0xfd, 0x8c, 0x02, 0x3c, 0x05, + 0xa0, 0x0a, 0x40, 0x0d, 0xa7, 0x0f, 0x5e, 0x12, 0x17, 0x12, 0xa4, 0x11, 0x2d, 0x11, 0xd3, 0x0f, + 0x49, 0x0f, 0x41, 0x0d, 0xe2, 0x0b, 0x0b, 0x0f, 0x55, 0x11, 0x85, 0x12, 0x6e, 0x12, 0x03, 0x14, + 0xb7, 0x12, 0x9b, 0x11, 0xc8, 0x11, 0xf1, 0x10, 0xe9, 0x0f, 0xfb, 0x0f, 0xaa, 0x0a, 0x07, 0x03, + 0x48, 0xff, 0xac, 0xfb, 0xc8, 0xf8, 0x9c, 0xf4, 0x37, 0xf0, 0x1c, 0xeb, 0xa4, 0xe7, 0x5b, 0xe4, + 0x23, 0xe3, 0x60, 0xe3, 0x58, 0xe2, 0xa7, 0xe0, 0x31, 0xe1, 0x3d, 0xe1, 0xf5, 0xe4, 0x85, 0xe8, + 0x86, 0xec, 0x81, 0xf2, 0xd5, 0xf5, 0x70, 0xfb, 0xd1, 0xfe, 0x72, 0x01, 0x3f, 0x04, 0x46, 0x07, + 0xfc, 0x0a, 0xbd, 0x0d, 0xeb, 0x0e, 0x59, 0x0f, 0x9d, 0x0d, 0x38, 0x0e, 0xce, 0x0e, 0x87, 0x0d, + 0xe5, 0x10, 0xe9, 0x12, 0x5a, 0x13, 0x34, 0x13, 0x9a, 0x12, 0x85, 0x11, 0x3a, 0x11, 0x6b, 0x0e, + 0x82, 0x0d, 0x06, 0x0e, 0xd9, 0x0a, 0x69, 0x05, 0xb8, 0xff, 0xf0, 0xf7, 0x34, 0xf1, 0x5a, 0xee, + 0xa8, 0xeb, 0x2f, 0xea, 0xa8, 0xe8, 0x29, 0xe8, 0xfc, 0xe5, 0x31, 0xe4, 0x95, 0xe1, 0xba, 0xe1, + 0x47, 0xe3, 0x0b, 0xe5, 0x29, 0xe8, 0x58, 0xec, 0x34, 0xf1, 0x09, 0xf4, 0xfa, 0xf6, 0xb3, 0xf6, + 0x1b, 0xf8, 0x03, 0xfd, 0xc5, 0x00, 0x94, 0x05, 0x0f, 0x08, 0x20, 0x07, 0x54, 0x07, 0x2b, 0x06, + 0x1b, 0x06, 0x20, 0x08, 0x8c, 0x0a, 0xc6, 0x0d, 0x8e, 0x0f, 0xe7, 0x0f, 0x65, 0x0f, 0xa7, 0x0f, + 0x7a, 0x0f, 0x41, 0x0f, 0x15, 0x0f, 0x69, 0x10, 0x73, 0x10, 0x07, 0x0f, 0xdd, 0x0b, 0x22, 0x08, + 0x04, 0x06, 0x88, 0x03, 0x15, 0x01, 0x41, 0xff, 0x89, 0xfd, 0xde, 0xfa, 0xf9, 0xfb, 0x84, 0xfa, + 0x1d, 0xf8, 0x71, 0xf7, 0x4e, 0xf7, 0x23, 0xf7, 0x1d, 0xf8, 0xc1, 0xfb, 0x02, 0x00, 0xc2, 0x03, + 0xad, 0x06, 0x57, 0x09, 0xef, 0x0a, 0x6d, 0x0b, 0x81, 0x0c, 0x49, 0x0c, 0x47, 0x0b, 0x29, 0x0b, + 0xa7, 0x08, 0xe1, 0x07, 0x42, 0x05, 0xaa, 0x01, 0xdd, 0x00, 0x36, 0x01, 0xf5, 0x03, 0x3a, 0x04, + 0x56, 0x06, 0x1f, 0x08, 0x1e, 0x08, 0x72, 0x07, 0x1d, 0x07, 0x39, 0x07, 0x9b, 0x09, 0x6d, 0x07, + 0x93, 0x02, 0x67, 0x00, 0xbf, 0xfd, 0xf9, 0xfa, 0xb8, 0xf7, 0xd3, 0xf4, 0x45, 0xf2, 0x84, 0xf0, + 0xcf, 0xef, 0x2a, 0xf0, 0xa4, 0xef, 0x16, 0xef, 0x9d, 0xee, 0x17, 0xee, 0x94, 0xed, 0x85, 0xee, + 0x9e, 0xef, 0x56, 0xf3, 0x09, 0xf7, 0xc1, 0xf8, 0x6b, 0xfd, 0xb5, 0x00, 0x94, 0x03, 0x21, 0x05, + 0x0b, 0x08, 0x00, 0x0a, 0xa4, 0x0c, 0x3a, 0x0e, 0xdd, 0x0d, 0x0b, 0x0d, 0xf8, 0x0c, 0x09, 0x0d, + 0x25, 0x0b, 0x8e, 0x0b, 0x57, 0x0c, 0xed, 0x0b, 0x14, 0x0c, 0x1b, 0x0b, 0x82, 0x0a, 0x34, 0x0b, + 0x22, 0x09, 0xdc, 0x07, 0xda, 0x05, 0x64, 0x03, 0x8a, 0x00, 0xe6, 0xfc, 0x8e, 0xf7, 0xe9, 0xf2, + 0x2c, 0xef, 0xb5, 0xeb, 0x25, 0xea, 0x6c, 0xe9, 0xf9, 0xe9, 0x89, 0xe9, 0x8d, 0xea, 0xd6, 0xe9, + 0xca, 0xea, 0x8a, 0xec, 0x26, 0xee, 0x66, 0xf1, 0xbd, 0xf5, 0x71, 0xfb, 0x6a, 0x01, 0x15, 0x07, + 0x2d, 0x08, 0x43, 0x0a, 0x7d, 0x0d, 0xe3, 0x11, 0xa6, 0x15, 0xd0, 0x16, 0xa0, 0x16, 0x43, 0x16, + 0x1c, 0x13, 0x73, 0x0f, 0xbd, 0x0d, 0x11, 0x0e, 0x0a, 0x0f, 0x26, 0x11, 0x1e, 0x10, 0xa0, 0x0d, + 0xc6, 0x0c, 0x1a, 0x0a, 0x7c, 0x08, 0x86, 0x06, 0x91, 0x06, 0xa4, 0x05, 0xa1, 0x02, 0xce, 0xfd, + 0x8c, 0xf7, 0x83, 0xf3, 0xdb, 0xee, 0x80, 0xeb, 0x5b, 0xea, 0x77, 0xe8, 0x16, 0xe7, 0x20, 0xe7, + 0xd3, 0xe3, 0x89, 0xe0, 0x75, 0xde, 0x17, 0xde, 0x6d, 0xdf, 0x44, 0xe2, 0x2a, 0xe6, 0x7e, 0xea, + 0x25, 0xf0, 0xf4, 0xf4, 0xe1, 0xf8, 0x73, 0xfd, 0x4e, 0x01, 0xb2, 0x05, 0x21, 0x09, 0x55, 0x0a, + 0xd2, 0x0b, 0xee, 0x0b, 0xcf, 0x0b, 0xdf, 0x0b, 0x81, 0x0c, 0x3b, 0x0c, 0x7f, 0x0f, 0x57, 0x13, + 0xd6, 0x14, 0xf0, 0x17, 0xff, 0x18, 0x7c, 0x18, 0x94, 0x18, 0xa3, 0x19, 0x6b, 0x18, 0x7d, 0x18, + 0xbf, 0x17, 0xc0, 0x11, 0x4e, 0x0e, 0x53, 0x0d, 0x50, 0x09, 0xaf, 0x05, 0x06, 0x01, 0xff, 0xfb, + 0x62, 0xf8, 0x62, 0xf5, 0x09, 0xf4, 0x40, 0xf2, 0x5b, 0xf0, 0x26, 0xed, 0x4d, 0xeb, 0xc7, 0xe8, + 0x33, 0xe7, 0x1f, 0xe7, 0x90, 0xe8, 0x28, 0xec, 0x40, 0xef, 0xf8, 0xf1, 0x5d, 0xf4, 0x70, 0xf7, + 0x70, 0xf8, 0x58, 0xfb, 0xe2, 0xfe, 0x9d, 0x03, 0xaf, 0x06, 0x7a, 0x08, 0xfe, 0x08, 0x06, 0x09, + 0xb7, 0x09, 0x43, 0x08, 0xa7, 0x08, 0xeb, 0x0b, 0x6b, 0x0e, 0xb0, 0x0f, 0x99, 0x10, 0x08, 0x10, + 0x0b, 0x10, 0xd6, 0x10, 0xcb, 0x10, 0xfa, 0x11, 0x13, 0x12, 0x48, 0x0f, 0x95, 0x0e, 0x2c, 0x0a, + 0x8f, 0x03, 0x02, 0xfe, 0x4b, 0xfa, 0xe9, 0xf7, 0x45, 0xf4, 0x07, 0xf4, 0xd4, 0xf1, 0xa2, 0xf0, + 0x89, 0xef, 0x58, 0xee, 0x0b, 0xee, 0x2e, 0xee, 0x1c, 0xf0, 0xaf, 0xf2, 0xca, 0xf5, 0xca, 0xf9, + 0x77, 0xfe, 0xe9, 0xff, 0x92, 0xff, 0x4e, 0x00, 0xe5, 0x03, 0x0b, 0x06, 0x23, 0x07, 0xa5, 0x06, + 0x92, 0x05, 0xe0, 0x04, 0x51, 0x03, 0x26, 0x01, 0x21, 0x01, 0x0d, 0x01, 0x4e, 0x03, 0x02, 0x03, + 0xfd, 0x01, 0xec, 0x02, 0x64, 0x01, 0x5b, 0x02, 0x91, 0x02, 0xe9, 0x03, 0x44, 0x04, 0x74, 0x03, + 0xe9, 0x01, 0x05, 0x00, 0xfb, 0xfd, 0x1a, 0xfc, 0x4c, 0xfa, 0x24, 0xf8, 0x17, 0xf7, 0x89, 0xf5, + 0xd2, 0xf6, 0x94, 0xf7, 0x60, 0xf5, 0xfa, 0xf3, 0xb8, 0xf4, 0xbc, 0xf6, 0x61, 0xf7, 0x5d, 0xf8, + 0x65, 0xfc, 0xcb, 0xff, 0xd8, 0x03, 0x65, 0x06, 0xf6, 0x08, 0x12, 0x0c, 0x6e, 0x0f, 0x4d, 0x13, + 0x86, 0x13, 0x4c, 0x14, 0xae, 0x13, 0x9f, 0x11, 0x35, 0x10, 0xbf, 0x0e, 0xdc, 0x0b, 0x89, 0x0b, + 0x43, 0x0b, 0xc0, 0x0a, 0x47, 0x0b, 0x34, 0x0b, 0x87, 0x0a, 0x9a, 0x07, 0xb8, 0x06, 0x84, 0x05, + 0x14, 0x05, 0x57, 0x05, 0x4a, 0x00, 0x4b, 0xfb, 0xac, 0xf7, 0x63, 0xf3, 0x4b, 0xf0, 0x28, 0xec, + 0x12, 0xe9, 0x4d, 0xe7, 0xa4, 0xe6, 0x51, 0xe6, 0xf5, 0xe5, 0xa6, 0xe4, 0xcc, 0xe3, 0x5c, 0xe4, + 0x0f, 0xe3, 0x49, 0xe4, 0x98, 0xe4, 0x8e, 0xe6, 0xcf, 0xea, 0x97, 0xee, 0x24, 0xf3, 0xed, 0xf6, + 0x51, 0xfc, 0xd9, 0xfe, 0x83, 0x04, 0x3a, 0x0a, 0x3b, 0x0d, 0x8d, 0x11, 0xe7, 0x13, 0xe1, 0x13, + 0xec, 0x14, 0x90, 0x15, 0x06, 0x14, 0x91, 0x12, 0x38, 0x15, 0x25, 0x17, 0x43, 0x17, 0x6d, 0x18, + 0x1f, 0x17, 0xa1, 0x16, 0xd0, 0x16, 0xd3, 0x15, 0xaa, 0x16, 0x11, 0x15, 0x73, 0x11, 0x65, 0x10, + 0x61, 0x0b, 0x7f, 0x05, 0x92, 0xfe, 0x6e, 0xf7, 0x13, 0xf3, 0x1c, 0xef, 0xe8, 0xed, 0x9a, 0xea, + 0x6b, 0xe9, 0xfe, 0xe6, 0x0d, 0xe4, 0x25, 0xe3, 0x8b, 0xe3, 0x3f, 0xe5, 0x03, 0xe8, 0xc1, 0xeb, + 0x18, 0xf0, 0xb1, 0xf6, 0xe3, 0xf9, 0xc3, 0xfb, 0x90, 0xfe, 0x3f, 0x02, 0xb6, 0x07, 0xda, 0x0b, + 0xa8, 0x0d, 0xa4, 0x0e, 0x02, 0x0f, 0x92, 0x0e, 0x2a, 0x0c, 0xfa, 0x0c, 0x3d, 0x0c, 0x0d, 0x0f, + 0x65, 0x12, 0xd6, 0x11, 0x5c, 0x11, 0x12, 0x0f, 0xad, 0x0d, 0x21, 0x0d, 0x78, 0x0d, 0xe7, 0x0c, + 0x5c, 0x0b, 0xc1, 0x08, 0xac, 0x06, 0xc2, 0x02, 0x18, 0xff, 0xba, 0xfb, 0xd2, 0xf8, 0x3f, 0xf7, + 0xf8, 0xf3, 0xef, 0xf4, 0xaa, 0xf5, 0x63, 0xf1, 0x9c, 0xed, 0xdc, 0xea, 0xd0, 0xe9, 0x92, 0xe9, + 0x4d, 0xe8, 0x48, 0xe9, 0x32, 0xeb, 0x3c, 0xef, 0x72, 0xf1, 0x10, 0xf4, 0xc3, 0xf6, 0x44, 0xf9, + 0xf6, 0xfc, 0x2b, 0xfe, 0xe0, 0xff, 0x2e, 0x00, 0x42, 0x00, 0xe2, 0xff, 0x98, 0x01, 0x6b, 0x01, + 0x7e, 0x01, 0xf1, 0x03, 0xa9, 0x05, 0x52, 0x07, 0xe1, 0x09, 0x52, 0x0c, 0x3b, 0x0d, 0x80, 0x0e, + 0x08, 0x0f, 0xf0, 0x0e, 0x2f, 0x12, 0x85, 0x11, 0x31, 0x0d, 0x15, 0x0d, 0x91, 0x0c, 0x29, 0x0b, + 0x23, 0x08, 0x41, 0x04, 0x00, 0x01, 0x92, 0xfe, 0xf7, 0xfc, 0x60, 0xfb, 0x36, 0xf8, 0x5f, 0xf6, + 0x2c, 0xf6, 0xa4, 0xf3, 0x66, 0xf2, 0x7d, 0xf0, 0xa8, 0xf0, 0x64, 0xf1, 0x26, 0xf4, 0x16, 0xf8, + 0x34, 0xfa, 0xb3, 0xfe, 0x68, 0x00, 0xcc, 0x02, 0xd2, 0x05, 0xa2, 0x07, 0x20, 0x0a, 0x6f, 0x0b, + 0xae, 0x0b, 0x8a, 0x0b, 0x58, 0x0b, 0x5b, 0x09, 0xf8, 0x05, 0xa4, 0x05, 0x54, 0x06, 0x09, 0x07, + 0x44, 0x07, 0x7b, 0x06, 0x0e, 0x05, 0xd2, 0x05, 0xe0, 0x06, 0x2d, 0x08, 0xa8, 0x09, 0xc7, 0x07, + 0x52, 0x07, 0xd5, 0x04, 0x87, 0x01, 0x90, 0xfd, 0x26, 0xf8, 0x65, 0xf5, 0x3f, 0xf2, 0x47, 0xf1, + 0x9c, 0xf0, 0x9e, 0xef, 0x7c, 0xed, 0x57, 0xec, 0xe3, 0xeb, 0x23, 0xed, 0xd0, 0xee, 0x6b, 0xf1, + 0xad, 0xf3, 0x1f, 0xf6, 0xa6, 0xfb, 0xdb, 0xfd, 0xcf, 0xfe, 0x33, 0x00, 0x5d, 0x03, 0x47, 0x08, + 0xf2, 0x0a, 0x2b, 0x0d, 0x55, 0x0e, 0xb0, 0x0d, 0x29, 0x0e, 0xa2, 0x0c, 0x4c, 0x0d, 0x62, 0x0c, + 0x5a, 0x0d, 0xa6, 0x0e, 0xed, 0x0c, 0x6a, 0x0c, 0x09, 0x09, 0xcc, 0x06, 0xc1, 0x05, 0x6e, 0x05, + 0x37, 0x04, 0xb4, 0x03, 0xa3, 0x01, 0x1d, 0xff, 0x59, 0xfc, 0x94, 0xf8, 0x47, 0xf5, 0x4b, 0xf2, + 0x2d, 0xf0, 0x26, 0xee, 0x8e, 0xee, 0x28, 0xf0, 0x03, 0xef, 0x71, 0xec, 0xc5, 0xea, 0xc7, 0xea, + 0x8a, 0xec, 0xde, 0xec, 0x37, 0xef, 0xa8, 0xf1, 0x44, 0xf5, 0xaa, 0xf9, 0xd4, 0xfe, 0xe9, 0x01, + 0x7c, 0x05, 0x95, 0x0b, 0xe0, 0x0f, 0x32, 0x13, 0xb5, 0x15, 0xe9, 0x16, 0x49, 0x15, 0xab, 0x16, + 0xda, 0x14, 0x43, 0x12, 0x43, 0x11, 0xf7, 0x0f, 0xc6, 0x10, 0x50, 0x11, 0xfb, 0x11, 0xfc, 0x11, + 0x11, 0x11, 0xdc, 0x0f, 0x94, 0x0d, 0xfc, 0x0e, 0xb5, 0x0f, 0xf9, 0x0b, 0xa8, 0x08, 0x9d, 0x04, + 0x8b, 0x01, 0x39, 0xfc, 0xf4, 0xf6, 0x58, 0xf2, 0xd3, 0xef, 0x00, 0xed, 0xe6, 0xea, 0xcc, 0xe8, + 0x1a, 0xe5, 0x02, 0xe4, 0xa5, 0xe0, 0xbd, 0xdd, 0xcf, 0xdb, 0x60, 0xdb, 0x81, 0xdb, 0xf5, 0xde, + 0x59, 0xe3, 0x22, 0xe6, 0xa0, 0xeb, 0xec, 0xef, 0x08, 0xf4, 0x05, 0xfa, 0x0a, 0xfe, 0x12, 0x02, + 0x5b, 0x07, 0x42, 0x09, 0x17, 0x0a, 0xeb, 0x0d, 0xda, 0x0f, 0x6d, 0x0e, 0x8d, 0x0e, 0xbd, 0x10, + 0x33, 0x13, 0xfd, 0x15, 0x71, 0x18, 0x0f, 0x17, 0x5c, 0x18, 0x5b, 0x19, 0xd9, 0x19, 0x28, 0x1b, + 0xff, 0x17, 0x8f, 0x17, 0x5d, 0x16, 0xfe, 0x12, 0xe8, 0x0e, 0x50, 0x09, 0xac, 0x03, 0x01, 0xff, + 0x6d, 0xfc, 0xbf, 0xf9, 0xa0, 0xf8, 0x9b, 0xf6, 0x68, 0xf3, 0xa6, 0xf0, 0x3d, 0xef, 0x11, 0xee, + 0xb4, 0xee, 0x71, 0xef, 0xaf, 0xef, 0x6e, 0xf2, 0x13, 0xf6, 0x6a, 0xf7, 0x48, 0xf8, 0x00, 0xfa, + 0x4d, 0xfc, 0x96, 0xfe, 0x69, 0x01, 0xfb, 0x02, 0x84, 0x03, 0x95, 0x04, 0xda, 0x02, 0x47, 0x03, + 0x8a, 0x02, 0x2e, 0x03, 0xa4, 0x05, 0x65, 0x06, 0x20, 0x06, 0x88, 0x05, 0xf5, 0x04, 0xb9, 0x03, + 0x02, 0x05, 0x9c, 0x05, 0x2e, 0x07, 0xb2, 0x06, 0x1d, 0x06, 0xf6, 0x04, 0xb5, 0x02, 0x37, 0x01, + 0x4a, 0xff, 0x11, 0xfe, 0x67, 0xfc, 0xff, 0xfb, 0xd2, 0xfd, 0x31, 0xfc, 0x9b, 0xf7, 0x77, 0xf4, + 0x72, 0xf2, 0x57, 0xf2, 0x10, 0xf2, 0xea, 0xf2, 0xfd, 0xf2, 0x29, 0xf5, 0xc8, 0xf6, 0x30, 0xfa, + 0x88, 0xfd, 0x6e, 0x00, 0xd3, 0x04, 0x89, 0x08, 0x59, 0x0a, 0xb1, 0x0a, 0x68, 0x0a, 0x4d, 0x08, + 0x3e, 0x08, 0x3d, 0x07, 0x94, 0x06, 0x87, 0x05, 0xee, 0x04, 0x52, 0x04, 0x62, 0x03, 0x1a, 0x04, + 0x44, 0x04, 0x89, 0x04, 0xb4, 0x04, 0x3b, 0x03, 0xdc, 0x04, 0xa0, 0x07, 0xd3, 0x06, 0xfe, 0x04, + 0xed, 0x03, 0x52, 0x02, 0x6d, 0xff, 0xb6, 0xfd, 0x83, 0xfa, 0xab, 0xf8, 0x47, 0xf6, 0x90, 0xf5, + 0xcd, 0xf4, 0xaa, 0xf2, 0xbf, 0xf2, 0x86, 0xf0, 0x76, 0xef, 0xdc, 0xee, 0xa4, 0xef, 0x2b, 0xef, + 0xb5, 0xf1, 0x8c, 0xf5, 0x8f, 0xf8, 0xfb, 0xfb, 0xb2, 0xfe, 0x7d, 0x01, 0x8d, 0x05, 0xb3, 0x08, + 0xf4, 0x0b, 0x43, 0x10, 0xb4, 0x12, 0x61, 0x12, 0x78, 0x12, 0x5c, 0x13, 0xfc, 0x11, 0x61, 0x10, + 0x3a, 0x10, 0x3e, 0x11, 0x31, 0x12, 0x5c, 0x11, 0x41, 0x0e, 0x49, 0x0d, 0x28, 0x0c, 0xeb, 0x0b, + 0x9a, 0x0c, 0x2a, 0x0a, 0x37, 0x09, 0x4b, 0x06, 0x99, 0x02, 0x49, 0xfd, 0x7b, 0xf7, 0x39, 0xf1, + 0x9e, 0xec, 0x41, 0xea, 0xcd, 0xe7, 0x94, 0xe7, 0xa9, 0xe5, 0xd8, 0xe3, 0x24, 0xe2, 0xa8, 0xe0, + 0xcb, 0xe0, 0x18, 0xe4, 0xca, 0xe6, 0x13, 0xe7, 0xf3, 0xe9, 0x1d, 0xef, 0x42, 0xf3, 0x27, 0xf7, + 0x32, 0xfa, 0xd2, 0xfd, 0x5a, 0x02, 0xcc, 0x07, 0x6e, 0x0b, 0x1a, 0x0e, 0x6e, 0x10, 0x2a, 0x11, + 0x4a, 0x13, 0xec, 0x12, 0x7a, 0x12, 0x58, 0x13, 0x0f, 0x13, 0x6e, 0x12, 0x0c, 0x12, 0xbf, 0x10, + 0x72, 0x0f, 0x24, 0x0f, 0xbe, 0x0d, 0x16, 0x0e, 0x8e, 0x0e, 0x14, 0x0e, 0xbe, 0x0c, 0x8b, 0x0b, + 0xbe, 0x07, 0xf2, 0x03, 0x67, 0x01, 0xda, 0xfc, 0x12, 0xfa, 0xbc, 0xf9, 0xce, 0xf7, 0x25, 0xf5, + 0x7e, 0xf1, 0x42, 0xee, 0x7e, 0xec, 0xa6, 0xea, 0xe0, 0xe9, 0xc2, 0xe8, 0x1f, 0xea, 0x49, 0xeb, + 0xc8, 0xef, 0x83, 0xf3, 0x89, 0xf6, 0x5e, 0xfb, 0x39, 0x00, 0xee, 0x03, 0x50, 0x07, 0x43, 0x0b, + 0x2f, 0x0b, 0xf9, 0x0b, 0xbe, 0x0b, 0xf6, 0x0a, 0x1d, 0x0b, 0x6a, 0x0b, 0xb6, 0x0a, 0xed, 0x0a, + 0x73, 0x0c, 0x25, 0x0e, 0x3e, 0x10, 0x19, 0x11, 0xb4, 0x0f, 0x3c, 0x11, 0x58, 0x14, 0xa3, 0x14, + 0x55, 0x12, 0x81, 0x0e, 0x26, 0x0b, 0x79, 0x07, 0x26, 0x04, 0x70, 0x00, 0x2a, 0xfe, 0x79, 0xfa, + 0xcf, 0xf7, 0x1e, 0xf6, 0xd3, 0xf3, 0xe3, 0xf1, 0x13, 0xf0, 0xa5, 0xed, 0x02, 0xea, 0xdc, 0xe9, + 0x8c, 0xe6, 0x30, 0xe5, 0x3c, 0xe7, 0xce, 0xe7, 0x38, 0xea, 0x99, 0xed, 0xe9, 0xf0, 0xa0, 0xf4, + 0x61, 0xf7, 0xfb, 0xf8, 0x77, 0xfb, 0xba, 0xfe, 0xc1, 0xfe, 0x22, 0x00, 0xd1, 0x03, 0x5d, 0x04, + 0x16, 0x04, 0xf0, 0x04, 0x3d, 0x06, 0xb5, 0x07, 0x8f, 0x0a, 0x15, 0x0b, 0x21, 0x0c, 0x50, 0x0d, + 0x40, 0x0e, 0x29, 0x10, 0x47, 0x11, 0x56, 0x12, 0xed, 0x11, 0x98, 0x11, 0x1c, 0x0f, 0x0f, 0x0d, + 0x48, 0x09, 0x91, 0x04, 0x8b, 0x02, 0x41, 0x00, 0x0a, 0xff, 0x4b, 0xfe, 0x11, 0xfb, 0x46, 0xf7, + 0xf5, 0xf4, 0x4e, 0xf2, 0x61, 0xf3, 0x2d, 0xf5, 0x55, 0xf4, 0x2e, 0xf4, 0xe4, 0xf6, 0xda, 0xfa, + 0x13, 0xfd, 0xf1, 0xfd, 0x98, 0x00, 0xcf, 0x02, 0xe3, 0x06, 0x0a, 0x0a, 0xbd, 0x0a, 0xc9, 0x0b, + 0x3b, 0x0a, 0xa7, 0x09, 0xd2, 0x07, 0xec, 0x06, 0x21, 0x07, 0x1a, 0x07, 0x77, 0x05, 0x07, 0x03, + 0xb6, 0x00, 0x36, 0xfd, 0x13, 0xfc, 0x03, 0xfc, 0x6e, 0xfc, 0x3f, 0xfd, 0x13, 0xfe, 0x04, 0xfe, + 0x49, 0xfd, 0x53, 0xfa, 0xc8, 0xf7, 0x0f, 0xf7, 0x8f, 0xf5, 0x26, 0xf4, 0xd3, 0xf3, 0x07, 0xf4, + 0x35, 0xf4, 0xc4, 0xf1, 0x66, 0xef, 0xca, 0xed, 0x6c, 0xed, 0x7a, 0xef, 0xdb, 0xef, 0xae, 0xf1, + 0x7b, 0xf3, 0x0f, 0xf7, 0x79, 0xfb, 0xcf, 0xfe, 0x39, 0x02, 0x64, 0x07, 0x7b, 0x0a, 0xf6, 0x0b, + 0xcc, 0x0e, 0xba, 0x0e, 0x2f, 0x0f, 0xad, 0x0e, 0x71, 0x0e, 0xd0, 0x0e, 0x93, 0x0d, 0x28, 0x0d, + 0xfe, 0x0c, 0x0f, 0x0d, 0x6d, 0x0e, 0x37, 0x0f, 0x1d, 0x0f, 0x5d, 0x0c, 0x38, 0x0b, 0x3a, 0x0c, + 0x5c, 0x0d, 0x1a, 0x0c, 0x03, 0x09, 0xa6, 0x06, 0x8e, 0x02, 0x45, 0xff, 0xc5, 0xfa, 0xce, 0xf6, + 0xa1, 0xf2, 0x2f, 0xf0, 0xa4, 0xee, 0x08, 0xed, 0xa8, 0xeb, 0x03, 0xeb, 0x20, 0xe9, 0xba, 0xe5, + 0x36, 0xe6, 0x77, 0xe4, 0x8d, 0xe4, 0x4e, 0xe7, 0xda, 0xe8, 0x4f, 0xec, 0x00, 0xf1, 0x61, 0xf5, + 0x2a, 0xfa, 0xa3, 0xfe, 0xde, 0x02, 0xff, 0x07, 0xce, 0x0d, 0xb2, 0x10, 0xe9, 0x11, 0xc3, 0x14, + 0xf1, 0x16, 0xc0, 0x16, 0x7f, 0x16, 0x46, 0x16, 0xc6, 0x15, 0x94, 0x16, 0x62, 0x15, 0x4d, 0x15, + 0x10, 0x15, 0x0f, 0x14, 0x54, 0x15, 0xfb, 0x14, 0x34, 0x14, 0x31, 0x13, 0xc2, 0x11, 0x3c, 0x0e, + 0x44, 0x0b, 0x4a, 0x06, 0x31, 0xff, 0xde, 0xfa, 0xc9, 0xf6, 0x69, 0xf3, 0x0c, 0xf1, 0x0a, 0xed, + 0xb8, 0xe9, 0xe0, 0xe6, 0x3f, 0xe3, 0xd6, 0xe2, 0xc8, 0xe3, 0xa8, 0xe1, 0xd4, 0xdf, 0x63, 0xe1, + 0x0d, 0xe5, 0x74, 0xe8, 0xab, 0xeb, 0x56, 0xef, 0xef, 0xf1, 0xdf, 0xf6, 0x36, 0xfa, 0x6e, 0xfd, + 0x74, 0x02, 0xc8, 0x03, 0x18, 0x06, 0xe0, 0x07, 0xba, 0x08, 0x1c, 0x0a, 0x0f, 0x0c, 0x01, 0x0c, + 0xd9, 0x0c, 0x73, 0x0d, 0x52, 0x0c, 0x3f, 0x0d, 0xed, 0x0d, 0xb2, 0x0f, 0xe3, 0x11, 0xba, 0x13, + 0x85, 0x14, 0x06, 0x14, 0xb2, 0x11, 0xe0, 0x0d, 0x33, 0x0c, 0x78, 0x0a, 0x23, 0x06, 0xfe, 0x03, + 0x93, 0x02, 0x61, 0x01, 0xba, 0xfe, 0xdc, 0xfb, 0xae, 0xf8, 0x63, 0xf6, 0xc7, 0xf6, 0x1a, 0xf5, + 0x0a, 0xf5, 0x7e, 0xf4, 0x39, 0xf5, 0x85, 0xf7, 0x4e, 0xf8, 0x93, 0xf9, 0x40, 0xfe, 0xd1, 0x01, + 0xc6, 0x03, 0xf6, 0x06, 0x33, 0x06, 0x46, 0x05, 0xe1, 0x03, 0x3e, 0x03, 0x6a, 0x02, 0x0c, 0x01, + 0xdd, 0x00, 0x77, 0x00, 0x7f, 0x01, 0xf1, 0x01, 0x40, 0x02, 0x2a, 0x04, 0x95, 0x03, 0x64, 0x03, + 0x71, 0x05, 0x84, 0x08, 0xfc, 0x09, 0xec, 0x08, 0x37, 0x06, 0x62, 0x03, 0xf7, 0x01, 0x2c, 0xff, + 0x58, 0xfe, 0x1d, 0xfc, 0xde, 0xfa, 0x64, 0xfa, 0x3f, 0xf9, 0xb9, 0xf7, 0x6b, 0xf6, 0x89, 0xf5, + 0x66, 0xf1, 0x70, 0xef, 0x37, 0xee, 0x82, 0xeb, 0x53, 0xeb, 0xc6, 0xeb, 0xdd, 0xec, 0xa1, 0xef, + 0xbe, 0xf3, 0xb0, 0xf7, 0x92, 0xfb, 0x43, 0xff, 0x94, 0x02, 0x7a, 0x06, 0x9f, 0x08, 0xe4, 0x08, + 0xbd, 0x0a, 0xf0, 0x0c, 0xb4, 0x0c, 0xfd, 0x0b, 0xb9, 0x0b, 0x34, 0x0a, 0x6c, 0x0b, 0xeb, 0x0a, + 0x29, 0x0a, 0xa4, 0x08, 0xa2, 0x07, 0x41, 0x08, 0x5f, 0x08, 0xf7, 0x08, 0xa4, 0x08, 0x09, 0x0a, + 0x5e, 0x09, 0x4b, 0x07, 0xe5, 0x03, 0x12, 0xff, 0x12, 0xfc, 0xaf, 0xf9, 0x91, 0xf6, 0x26, 0xf5, + 0x9d, 0xf3, 0x4f, 0xf1, 0xd6, 0xef, 0x35, 0xed, 0x81, 0xeb, 0xbf, 0xed, 0x85, 0xee, 0xae, 0xee, + 0xf9, 0xf0, 0xd5, 0xf4, 0xe3, 0xf9, 0x8c, 0xfc, 0x29, 0xff, 0xcc, 0x01, 0x96, 0x04, 0x88, 0x08, + 0x4e, 0x0b, 0x37, 0x0e, 0x5a, 0x0f, 0x63, 0x10, 0x00, 0x10, 0x9d, 0x0f, 0x86, 0x0f, 0x23, 0x10, + 0xbe, 0x0f, 0x4c, 0x0e, 0x8d, 0x0d, 0x1d, 0x0b, 0x87, 0x08, 0x96, 0x07, 0x2a, 0x07, 0xd2, 0x06, + 0x01, 0x07, 0xa1, 0x06, 0xa8, 0x05, 0xa8, 0x03, 0xed, 0xff, 0xa4, 0xfd, 0x82, 0xfa, 0xf0, 0xf5, + 0x4e, 0xf3, 0x49, 0xf0, 0x45, 0xef, 0x25, 0xed, 0x31, 0xea, 0xf6, 0xe7, 0x6d, 0xe6, 0x2d, 0xe6, + 0xfb, 0xe4, 0x5a, 0xe6, 0x2f, 0xe7, 0x14, 0xe9, 0xb2, 0xeb, 0xb6, 0xee, 0x83, 0xf2, 0xf6, 0xf7, + 0xe9, 0xfd, 0xf7, 0x00, 0xd7, 0x04, 0x2a, 0x07, 0x11, 0x09, 0xe0, 0x0b, 0xa1, 0x0d, 0x7c, 0x0f, + 0xbf, 0x10, 0x6a, 0x11, 0x81, 0x13, 0x83, 0x14, 0xd0, 0x13, 0x03, 0x14, 0x35, 0x15, 0x72, 0x14, + 0x74, 0x14, 0x5b, 0x14, 0xb1, 0x15, 0x3f, 0x17, 0x50, 0x16, 0xa2, 0x13, 0x9e, 0x10, 0xb8, 0x0e, + 0xf6, 0x0b, 0xc7, 0x09, 0xd5, 0x05, 0xed, 0x02, 0x8d, 0x00, 0xa4, 0xfc, 0x40, 0xf9, 0x30, 0xf6, + 0x1e, 0xf4, 0x33, 0xef, 0xbc, 0xec, 0x7d, 0xea, 0x63, 0xe6, 0xf1, 0xe4, 0x58, 0xe4, 0xf8, 0xe3, + 0x4f, 0xe5, 0xc5, 0xe7, 0x7f, 0xea, 0xbe, 0xef, 0x44, 0xf5, 0x93, 0xf8, 0xc2, 0xfd, 0x03, 0x02, + 0x6c, 0x04, 0xc3, 0x05, 0xd2, 0x07, 0xd5, 0x0a, 0x5f, 0x0c, 0x05, 0x0e, 0x80, 0x0d, 0x54, 0x0e, + 0x08, 0x0e, 0xcc, 0x0d, 0xb9, 0x0e, 0x0d, 0x0f, 0x9d, 0x10, 0xe9, 0x12, 0x84, 0x13, 0xa5, 0x14, + 0x3e, 0x17, 0x2a, 0x15, 0xd1, 0x12, 0x1f, 0x10, 0xcf, 0x0a, 0x79, 0x06, 0xd9, 0x03, 0xc2, 0xff, + 0xb6, 0xfb, 0x76, 0xf9, 0xaa, 0xf5, 0x21, 0xf2, 0x71, 0xf0, 0xfa, 0xec, 0x4a, 0xed, 0xc3, 0xec, + 0xc6, 0xe9, 0x99, 0xe9, 0xd0, 0xea, 0xf0, 0xed, 0x1b, 0xf0, 0x40, 0xf2, 0xd8, 0xf2, 0x61, 0xf5, + 0x4c, 0xf8, 0xa9, 0xf9, 0x5e, 0xfb, 0x19, 0xfd, 0x42, 0xfe, 0x03, 0xff, 0xcc, 0xfe, 0x17, 0xfd, + 0xaa, 0xfe, 0xe4, 0xff, 0x50, 0x00, 0xa1, 0x00, 0xc1, 0xfe, 0x62, 0xfd, 0x62, 0xfd, 0x6b, 0xfd, + 0x4c, 0xff, 0x54, 0x01, 0xa0, 0x03, 0x8c, 0x04, 0x53, 0x05, 0x24, 0x04, 0x79, 0x03, 0x7c, 0x04, + 0x0b, 0x03, 0xd8, 0x01, 0xfc, 0x00, 0x84, 0x01, 0x47, 0x02, 0x64, 0x02, 0x44, 0x00, 0xf2, 0xfc, + 0x9b, 0xfb, 0x3e, 0xfa, 0x2d, 0xf9, 0xf0, 0xf8, 0x1e, 0xfa, 0xbc, 0xfa, 0xd5, 0xfb, 0x2f, 0xfd, + 0x39, 0xff, 0xa1, 0x03, 0x6a, 0x06, 0x1d, 0x0b, 0x2c, 0x0e, 0x0d, 0x0d, 0x9d, 0x0d, 0x76, 0x0e, + 0x07, 0x0e, 0x00, 0x0d, 0x7d, 0x0b, 0xdc, 0x0a, 0xb5, 0x0a, 0x2c, 0x0a, 0x84, 0x08, 0xbd, 0x07, + 0x32, 0x06, 0x05, 0x04, 0xa3, 0x02, 0xf8, 0x03, 0x98, 0x04, 0x45, 0x04, 0xcc, 0x01, 0xb8, 0xfe, + 0x5c, 0xfd, 0x52, 0xfa, 0xea, 0xf8, 0x12, 0xf8, 0x00, 0xf7, 0xc6, 0xf5, 0x50, 0xf4, 0x48, 0xf2, + 0xca, 0xf0, 0x0b, 0xf0, 0x28, 0xee, 0x19, 0xed, 0xc9, 0xeb, 0x6a, 0xe8, 0xff, 0xe6, 0x04, 0xe8, + 0xed, 0xe8, 0xc5, 0xeb, 0x37, 0xf0, 0x04, 0xf5, 0xcf, 0xf9, 0x10, 0xfe, 0x37, 0x02, 0x0f, 0x06, + 0xba, 0x08, 0xaa, 0x0a, 0x0f, 0x0c, 0x71, 0x0e, 0x3f, 0x11, 0x94, 0x12, 0x2c, 0x14, 0x71, 0x12, + 0xdb, 0x12, 0x0d, 0x14, 0x27, 0x13, 0x25, 0x13, 0x63, 0x13, 0x19, 0x13, 0x84, 0x14, 0xf9, 0x13, + 0x49, 0x13, 0x9f, 0x14, 0xed, 0x12, 0x38, 0x12, 0xfa, 0x10, 0x04, 0x0c, 0xdf, 0x07, 0x71, 0x04, + 0xcd, 0xff, 0x10, 0xfc, 0xe1, 0xf7, 0x50, 0xf3, 0x14, 0xf0, 0x45, 0xee, 0xf5, 0xea, 0x21, 0xe9, + 0xf0, 0xe8, 0x6b, 0xe8, 0x54, 0xe9, 0xe1, 0xea, 0xe0, 0xed, 0x6e, 0xf0, 0x56, 0xf3, 0x21, 0xf4, + 0xb3, 0xf7, 0x44, 0xfc, 0x0e, 0xff, 0x5f, 0x02, 0xf6, 0x04, 0x12, 0x07, 0x07, 0x09, 0x66, 0x0a, + 0x87, 0x0b, 0xee, 0x0d, 0xaa, 0x0f, 0x9e, 0x10, 0xe4, 0x10, 0x3f, 0x0d, 0x49, 0x0a, 0xfe, 0x09, + 0x96, 0x08, 0x9c, 0x08, 0xc7, 0x08, 0x02, 0x09, 0x5d, 0x09, 0x8f, 0x08, 0xc0, 0x06, 0x2a, 0x06, + 0x0e, 0x05, 0x99, 0x03, 0x93, 0x02, 0xe2, 0xff, 0x6d, 0xfe, 0x24, 0xfd, 0xed, 0xfa, 0x76, 0xf7, + 0x01, 0xf4, 0xfb, 0xf1, 0xaa, 0xef, 0x8e, 0xed, 0xba, 0xec, 0xda, 0xeb, 0x68, 0xeb, 0x21, 0xed, + 0xfb, 0xed, 0x65, 0xef, 0xfe, 0xf2, 0x1e, 0xf6, 0xaa, 0xf8, 0xe3, 0xfb, 0xb2, 0xfd, 0x0c, 0x00, + 0x6e, 0x01, 0xcf, 0x01, 0x9a, 0x02, 0xb6, 0x02, 0xbe, 0x03, 0x7b, 0x05, 0xa6, 0x05, 0xb9, 0x04, + 0x18, 0x05, 0x81, 0x04, 0xd5, 0x04, 0xc1, 0x04, 0x6f, 0x05, 0x71, 0x08, 0xee, 0x09, 0x32, 0x0b, + 0x8a, 0x0a, 0x1b, 0x0a, 0xda, 0x08, 0x78, 0x06, 0xe8, 0x05, 0x3a, 0x05, 0x63, 0x03, 0x39, 0x02, + 0x13, 0xff, 0x79, 0xfb, 0xb3, 0xf9, 0xe3, 0xf6, 0xd1, 0xf4, 0xfe, 0xf3, 0x2f, 0xf0, 0x9f, 0xec, + 0x29, 0xed, 0x48, 0xec, 0x0d, 0xed, 0x0a, 0xef, 0x30, 0xf0, 0x28, 0xf3, 0xff, 0xf7, 0x64, 0xfa, + 0xf1, 0xfe, 0xa7, 0x03, 0x49, 0x06, 0x04, 0x07, 0xd3, 0x06, 0x48, 0x09, 0xb7, 0x0a, 0x02, 0x0b, + 0x68, 0x0a, 0xb2, 0x09, 0xc1, 0x07, 0x03, 0x08, 0xb8, 0x07, 0x9c, 0x07, 0x04, 0x08, 0x87, 0x08, + 0x54, 0x09, 0xf1, 0x08, 0x4e, 0x0a, 0xd4, 0x0a, 0x73, 0x09, 0x05, 0x09, 0x46, 0x07, 0xc2, 0x03, + 0x50, 0x03, 0x5b, 0x00, 0x44, 0xfd, 0xb2, 0xfb, 0xf6, 0xf8, 0xe0, 0xf7, 0xf3, 0xf7, 0x88, 0xf5, + 0x6d, 0xf4, 0xc7, 0xf3, 0xb9, 0xf2, 0xfe, 0xf2, 0xd9, 0xf1, 0x05, 0xf4, 0x3f, 0xf7, 0x44, 0xf9, + 0xcb, 0xf9, 0x68, 0xfb, 0xe8, 0xfd, 0x89, 0x01, 0xe5, 0x03, 0xfb, 0x06, 0x0b, 0x0a, 0x3c, 0x0a, + 0xc3, 0x0b, 0x59, 0x0c, 0x73, 0x0c, 0x53, 0x0e, 0x48, 0x0e, 0x04, 0x0e, 0x3e, 0x0d, 0x63, 0x09, + 0x68, 0x08, 0xb1, 0x06, 0xff, 0x05, 0xd1, 0x05, 0xae, 0x04, 0xc5, 0x03, 0x05, 0x06, 0x7e, 0x06, + 0xe3, 0x03, 0x1b, 0x05, 0xbb, 0x03, 0xfd, 0x01, 0x0d, 0x00, 0x73, 0xfe, 0x21, 0xff, 0xa1, 0xfc, + 0x83, 0xf8, 0xcc, 0xf4, 0x37, 0xf1, 0x57, 0xf0, 0xfe, 0xef, 0x79, 0xef, 0x8e, 0xef, 0x5b, 0xee, + 0x69, 0xef, 0x0d, 0xf1, 0xf8, 0xf3, 0x2e, 0xf8, 0x4f, 0xfd, 0x72, 0x01, 0x54, 0x05, 0x6e, 0x09, + 0x6c, 0x0b, 0xd9, 0x0d, 0xa8, 0x0c, 0xfe, 0x0a, 0x75, 0x0c, 0x48, 0x0c, 0x7d, 0x0d, 0xe5, 0x0e, + 0x39, 0x0c, 0x58, 0x0b, 0x9c, 0x0a, 0xea, 0x09, 0x4b, 0x0a, 0x5b, 0x0a, 0x14, 0x0a, 0xa5, 0x0a, + 0xb1, 0x08, 0x5e, 0x06, 0xd1, 0x04, 0x32, 0x02, 0x82, 0xff, 0x66, 0xfd, 0x00, 0xfc, 0xe7, 0xf8, + 0x48, 0xf8, 0xdd, 0xf4, 0xc3, 0xef, 0x7a, 0xec, 0xab, 0xea, 0xa3, 0xe6, 0xca, 0xe4, 0xa3, 0xe2, + 0xf6, 0xde, 0x04, 0xde, 0xc3, 0xdc, 0x70, 0xde, 0xda, 0xe0, 0x1f, 0xe2, 0x0a, 0xe5, 0x54, 0xea, + 0x58, 0xee, 0x41, 0xf3, 0x22, 0xf9, 0xaa, 0xfd, 0xf0, 0xff, 0x79, 0x01, 0x3e, 0x03, 0x4e, 0x07, + 0x12, 0x0a, 0x52, 0x0c, 0xf4, 0x0f, 0x78, 0x10, 0x8b, 0x10, 0x7d, 0x11, 0xff, 0x11, 0xf9, 0x12, + 0x6d, 0x15, 0xa8, 0x15, 0xda, 0x15, 0x4c, 0x16, 0x0b, 0x16, 0x66, 0x17, 0x55, 0x18, 0x83, 0x16, + 0x20, 0x15, 0xd2, 0x11, 0x67, 0x0e, 0x17, 0x0b, 0x34, 0x06, 0xba, 0x03, 0xec, 0xfe, 0x42, 0xfd, + 0x55, 0xf8, 0x26, 0xf4, 0x56, 0xf2, 0xe4, 0xf0, 0xb3, 0xef, 0x5a, 0xed, 0x1f, 0xee, 0x60, 0xee, + 0x0e, 0xf0, 0x37, 0xf1, 0x1c, 0xf3, 0x70, 0xf5, 0xcd, 0xf8, 0x83, 0xfc, 0x9c, 0xff, 0x08, 0x02, + 0xf6, 0x04, 0x51, 0x07, 0x9c, 0x07, 0x8b, 0x07, 0x80, 0x09, 0xeb, 0x0a, 0x1b, 0x0b, 0xe0, 0x0a, + 0x41, 0x09, 0x41, 0x06, 0xbe, 0x04, 0x8c, 0x04, 0x5f, 0x03, 0x54, 0x04, 0x9a, 0x04, 0xe7, 0x06, + 0x43, 0x09, 0x34, 0x0a, 0x1c, 0x0a, 0x3c, 0x0b, 0x9c, 0x09, 0xd8, 0x07, 0xf8, 0x06, 0x9e, 0x04, + 0x86, 0x06, 0x13, 0x03, 0xf4, 0xfe, 0xaa, 0xfb, 0x4c, 0xf9, 0x08, 0xf7, 0xe5, 0xf5, 0xa6, 0xf5, + 0x8a, 0xf5, 0x04, 0xf7, 0x94, 0xf7, 0xa8, 0xf8, 0x7f, 0xf9, 0x55, 0xfb, 0xaf, 0xfe, 0xe1, 0x02, + 0xdb, 0x04, 0x25, 0x05, 0x74, 0x05, 0xa4, 0x05, 0x1b, 0x05, 0xb2, 0x04, 0x8e, 0x04, 0xe8, 0x04, + 0x59, 0x05, 0xd7, 0x03, 0x4d, 0x02, 0x87, 0x02, 0x47, 0x02, 0x54, 0x01, 0x12, 0x02, 0x07, 0x02, + 0x73, 0x04, 0x29, 0x06, 0x5d, 0x04, 0x3e, 0x03, 0x11, 0x02, 0x58, 0x00, 0x6d, 0x01, 0x3f, 0x00, + 0xfb, 0xfe, 0xc0, 0xfe, 0xa7, 0xfc, 0xc4, 0xfa, 0xb3, 0xf6, 0x29, 0xf6, 0x67, 0xf4, 0xb5, 0xf3, + 0xf1, 0xf1, 0x99, 0xee, 0x67, 0xed, 0xc3, 0xec, 0x1d, 0xeb, 0xb7, 0xec, 0xd2, 0xee, 0xdd, 0xed, + 0x50, 0xf3, 0x51, 0xf8, 0xf9, 0xfb, 0x7f, 0x00, 0xb0, 0x02, 0x52, 0x05, 0xc1, 0x08, 0x96, 0x09, + 0x92, 0x0c, 0x03, 0x0f, 0xee, 0x0d, 0xf3, 0x0d, 0xfd, 0x0c, 0x66, 0x0b, 0x44, 0x0b, 0xd0, 0x09, + 0xf4, 0x07, 0xa8, 0x08, 0xf6, 0x07, 0xcf, 0x07, 0x86, 0x08, 0x72, 0x06, 0xff, 0x04, 0x4c, 0x04, + 0xdd, 0x01, 0xfa, 0x01, 0xfd, 0xfe, 0x8b, 0xfc, 0xa6, 0xf9, 0x84, 0xf6, 0xa4, 0xf5, 0x08, 0xf2, + 0xcf, 0xf1, 0xc5, 0xed, 0xdc, 0xea, 0xbe, 0xe8, 0xad, 0xe7, 0xed, 0xe7, 0x72, 0xe7, 0x77, 0xe8, + 0x66, 0xea, 0xd7, 0xed, 0x1b, 0xef, 0xdf, 0xf2, 0x73, 0xf6, 0xa1, 0xfb, 0x49, 0x00, 0x1c, 0x03, + 0x67, 0x06, 0x4a, 0x09, 0x1c, 0x0c, 0xab, 0x0e, 0x97, 0x0f, 0x53, 0x10, 0x59, 0x12, 0xd9, 0x11, + 0x4f, 0x10, 0x09, 0x10, 0x92, 0x0d, 0xc2, 0x0c, 0x06, 0x0d, 0xf0, 0x0c, 0x93, 0x0d, 0x20, 0x0f, + 0xba, 0x0f, 0xc9, 0x11, 0x5a, 0x11, 0x68, 0x0f, 0xb8, 0x10, 0xfa, 0x10, 0x1b, 0x10, 0x10, 0x0e, + 0x9a, 0x0a, 0x75, 0x0a, 0x76, 0x06, 0xc0, 0x01, 0x85, 0xfc, 0x52, 0xfa, 0xac, 0xf6, 0x65, 0xf5, + 0xdf, 0xf3, 0x48, 0xf0, 0xd6, 0xf1, 0xf9, 0xf2, 0xbd, 0xf2, 0xc7, 0xf4, 0x72, 0xf7, 0x11, 0xf9, + 0x10, 0xfe, 0xcb, 0x02, 0x01, 0x05, 0x16, 0x05, 0x30, 0x05, 0x3b, 0x07, 0x5e, 0x09, 0x9e, 0x08, + 0x4e, 0x09, 0xda, 0x0b, 0x16, 0x0b, 0x0d, 0x0c, 0x34, 0x0b, 0x9d, 0x0b, 0xca, 0x0d, 0x0c, 0x0c, + 0x12, 0x0b, 0x49, 0x0b, 0xff, 0x0b, 0x10, 0x0b, 0x0e, 0x09, 0xc1, 0x07, 0x26, 0x04, 0x62, 0x03, + 0x90, 0x01, 0x32, 0x00, 0xe9, 0xfe, 0x4a, 0xfc, 0xa7, 0xf9, 0xa9, 0xf5, 0xaa, 0xf6, 0x52, 0xf1, + 0xca, 0xef, 0x61, 0xef, 0xbb, 0xea, 0x72, 0xe7, 0x87, 0xe5, 0xe1, 0xe3, 0xd7, 0xe4, 0x89, 0xe5, + 0x2e, 0xe6, 0xf7, 0xe7, 0x55, 0xeb, 0x5a, 0xef, 0x2b, 0xf2, 0xa3, 0xf6, 0xb9, 0xf8, 0xb9, 0xfa, + 0xe8, 0xfd, 0xa8, 0xff, 0x02, 0x03, 0xd9, 0x04, 0xbc, 0x05, 0xf0, 0x04, 0x69, 0x07, 0xfe, 0x08, + 0x35, 0x07, 0x78, 0x06, 0x63, 0x07, 0xe8, 0x07, 0x03, 0x07, 0x27, 0x09, 0x59, 0x0a, 0x56, 0x0a, + 0xc9, 0x0d, 0x94, 0x0f, 0x59, 0x10, 0xbf, 0x0f, 0xbe, 0x0e, 0xc5, 0x0a, 0x2d, 0x08, 0x42, 0x07, + 0x08, 0x04, 0x88, 0x01, 0x26, 0xfd, 0xf6, 0xf9, 0x2d, 0xf6, 0xe1, 0xf4, 0xf1, 0xf3, 0xdd, 0xf2, + 0xfd, 0xef, 0xf3, 0xee, 0x9c, 0xf0, 0x06, 0xf1, 0xa8, 0xf1, 0x4e, 0xf2, 0xf0, 0xf6, 0xb0, 0xf8, + 0xba, 0xfa, 0xc8, 0xfd, 0x7b, 0xff, 0xec, 0x03, 0xcb, 0x04, 0x0d, 0x05, 0xc3, 0x06, 0x2f, 0x07, + 0x52, 0x07, 0x26, 0x09, 0x9c, 0x08, 0x30, 0x04, 0x22, 0x01, 0x6c, 0x00, 0x0b, 0x00, 0xa2, 0x01, + 0x68, 0x02, 0xfc, 0x03, 0x2c, 0x06, 0xa5, 0x05, 0x7c, 0x05, 0x4a, 0x08, 0xbc, 0x07, 0x24, 0x07, + 0x85, 0x05, 0xbf, 0x03, 0xb7, 0x03, 0x8c, 0x02, 0xeb, 0xff, 0x4b, 0xfb, 0x7b, 0xfa, 0x3e, 0xf8, + 0x69, 0xf7, 0x75, 0xf6, 0xae, 0xf5, 0x31, 0xf5, 0x8c, 0xf4, 0x6d, 0xf6, 0x8c, 0xf7, 0xee, 0xf9, + 0x35, 0xfb, 0x6b, 0xff, 0x90, 0x03, 0x6d, 0x04, 0x32, 0x04, 0x4c, 0x04, 0x36, 0x05, 0xd7, 0x05, + 0xc4, 0x05, 0x1d, 0x06, 0x0b, 0x07, 0xfb, 0x06, 0xe5, 0x05, 0x21, 0x05, 0x61, 0x05, 0x87, 0x03, + 0xdb, 0x03, 0xe5, 0x02, 0x57, 0x02, 0xa3, 0x04, 0x02, 0x03, 0xda, 0x02, 0xb6, 0x01, 0x6b, 0xfd, + 0xb6, 0xfd, 0xfa, 0xfb, 0x92, 0xfb, 0xe7, 0xfb, 0x12, 0xfd, 0x40, 0xfb, 0x4a, 0xfa, 0x32, 0xfa, + 0x05, 0xf7, 0x17, 0xf7, 0xac, 0xf6, 0xe7, 0xf4, 0xd1, 0xf1, 0x3f, 0xef, 0x30, 0xed, 0x60, 0xec, + 0x0c, 0xed, 0x56, 0xed, 0x34, 0xef, 0x12, 0xf3, 0x81, 0xf8, 0x6d, 0xfd, 0x01, 0x03, 0xe4, 0x06, + 0x44, 0x0a, 0x60, 0x0b, 0x92, 0x0d, 0x6e, 0x10, 0x1c, 0x12, 0xfa, 0x12, 0x64, 0x12, 0xd1, 0x12, + 0x3e, 0x11, 0x12, 0x11, 0x76, 0x0e, 0x4f, 0x0d, 0xa9, 0x0e, 0x93, 0x0d, 0xe6, 0x0e, 0xa0, 0x0d, + 0x8f, 0x0d, 0xf1, 0x0c, 0x58, 0x0c, 0x6a, 0x0d, 0x35, 0x09, 0xab, 0x08, 0x94, 0x04, 0x0c, 0x01, + 0xe3, 0xff, 0x95, 0xfa, 0x00, 0xf8, 0x9b, 0xf5, 0x42, 0xf2, 0x1a, 0xed, 0x96, 0xeb, 0xb7, 0xe8, + 0x0f, 0xe5, 0xd5, 0xe3, 0x78, 0xe2, 0xc9, 0xe3, 0x40, 0xe5, 0xad, 0xe8, 0x5a, 0xeb, 0x6c, 0xee, + 0x3b, 0xf2, 0xc5, 0xf6, 0xfc, 0xf8, 0xc7, 0xfd, 0x6f, 0x01, 0xb2, 0x04, 0x04, 0x08, 0xec, 0x08, + 0x03, 0x0a, 0xe3, 0x0b, 0x59, 0x0e, 0xc0, 0x10, 0x37, 0x10, 0x1d, 0x10, 0xca, 0x0f, 0x95, 0x0e, + 0x18, 0x0d, 0x88, 0x0e, 0x7a, 0x0f, 0x25, 0x11, 0x13, 0x12, 0xb8, 0x10, 0x2c, 0x14, 0xe3, 0x12, + 0x35, 0x11, 0x1f, 0x10, 0xbd, 0x0c, 0x81, 0x0a, 0xcc, 0x08, 0x43, 0x06, 0x50, 0x02, 0x21, 0xfe, + 0x1f, 0xfb, 0x32, 0xf9, 0x32, 0xf6, 0xa6, 0xf3, 0x70, 0xf1, 0x72, 0xf2, 0x30, 0xf2, 0x82, 0xf1, + 0x6f, 0xf2, 0x78, 0xf3, 0x67, 0xf6, 0x9d, 0xfa, 0x6b, 0xfc, 0xa4, 0xfb, 0xce, 0xfc, 0x59, 0xfd, + 0x4a, 0xfe, 0x93, 0xfe, 0x78, 0xfe, 0x99, 0x01, 0xcd, 0x01, 0x78, 0x01, 0x53, 0x03, 0xa6, 0x02, + 0x0d, 0x02, 0x77, 0x03, 0xc8, 0x01, 0x64, 0x01, 0x18, 0x04, 0xbc, 0x03, 0x8a, 0x04, 0x15, 0x04, + 0x70, 0x03, 0x48, 0x03, 0x90, 0x03, 0xdf, 0x04, 0x6c, 0x05, 0xe3, 0x04, 0xa2, 0x04, 0xb5, 0x03, + 0xba, 0x01, 0x75, 0x00, 0xe6, 0xfd, 0x22, 0xfc, 0x67, 0xfb, 0x01, 0xf6, 0x95, 0xf4, 0xef, 0xf0, + 0xb9, 0xed, 0xd5, 0xee, 0x3b, 0xee, 0x5e, 0xf0, 0x78, 0xf2, 0xd1, 0xf5, 0xc4, 0xf9, 0xd5, 0xfd, + 0xe6, 0xff, 0x68, 0x02, 0x51, 0x04, 0xca, 0x06, 0x23, 0x09, 0xcf, 0x0a, 0x26, 0x0d, 0x50, 0x0d, + 0xbf, 0x0c, 0xa4, 0x0c, 0x8d, 0x0c, 0x00, 0x0a, 0x64, 0x08, 0xd9, 0x07, 0x51, 0x08, 0xfd, 0x07, + 0x49, 0x06, 0x37, 0x08, 0x67, 0x07, 0xe4, 0x07, 0x6a, 0x09, 0x2c, 0x07, 0x97, 0x08, 0x41, 0x05, + 0xdb, 0x03, 0xcf, 0x00, 0xe2, 0xfc, 0xcf, 0xfa, 0x16, 0xf7, 0x07, 0xf6, 0x7d, 0xf3, 0x2f, 0xf3, + 0xf6, 0xf0, 0x58, 0xf1, 0x3a, 0xf0, 0x2a, 0xed, 0x9e, 0xed, 0xfb, 0xed, 0xe6, 0xf0, 0x4a, 0xf4, + 0x3f, 0xf4, 0x8e, 0xf6, 0x35, 0xf8, 0xa3, 0xfa, 0x7e, 0xfd, 0x66, 0x00, 0xd9, 0x04, 0x79, 0x04, + 0x21, 0x04, 0x90, 0x07, 0x7c, 0x07, 0xee, 0x07, 0x7f, 0x08, 0xc0, 0x07, 0xf8, 0x06, 0x25, 0x07, + 0xd1, 0x05, 0x51, 0x05, 0xae, 0x05, 0xcf, 0x03, 0x46, 0x06, 0x16, 0x07, 0xea, 0x07, 0xdd, 0x0a, + 0x3c, 0x0b, 0xe6, 0x0a, 0x8d, 0x09, 0xf0, 0x06, 0xbd, 0x04, 0x7a, 0x03, 0x59, 0x02, 0xdf, 0xff, + 0xc9, 0xfd, 0xae, 0xfa, 0xac, 0xf7, 0xb6, 0xf4, 0x85, 0xf1, 0xe4, 0xef, 0x0c, 0xef, 0x99, 0xed, + 0xdc, 0xec, 0x12, 0xee, 0xca, 0xef, 0x3d, 0xef, 0x1f, 0xf2, 0x62, 0xf4, 0x4f, 0xf5, 0x15, 0xfa, + 0x78, 0xfb, 0xdc, 0xfe, 0xca, 0xff, 0x20, 0x00, 0xcc, 0x02, 0xfb, 0x01, 0x53, 0x04, 0x76, 0x06, + 0x79, 0x06, 0xb5, 0x06, 0x31, 0x08, 0xd5, 0x06, 0x4a, 0x04, 0xaf, 0x05, 0x96, 0x06, 0x75, 0x08, + 0x80, 0x08, 0xa6, 0x06, 0x2c, 0x08, 0xe9, 0x08, 0xdb, 0x0a, 0x99, 0x09, 0xc4, 0x0a, 0x7d, 0x0a, + 0x7e, 0x07, 0x41, 0x06, 0xda, 0x04, 0xd7, 0x01, 0x9b, 0x00, 0x0b, 0xff, 0x0f, 0xfc, 0x31, 0xf9, + 0xde, 0xf4, 0xc4, 0xf1, 0xb1, 0xee, 0x62, 0xec, 0x51, 0xec, 0x68, 0xee, 0x7c, 0xf1, 0x36, 0xf3, + 0xc7, 0xf6, 0xd6, 0xf9, 0x7d, 0xfd, 0xad, 0xff, 0x99, 0x02, 0x78, 0x06, 0xa7, 0x08, 0x83, 0x0b, + 0x98, 0x09, 0xdb, 0x0a, 0xfb, 0x0b, 0x5e, 0x0b, 0x0d, 0x0b, 0x0d, 0x0d, 0xbf, 0x0f, 0xa3, 0x10, + 0x1f, 0x11, 0x4b, 0x12, 0x85, 0x13, 0x9f, 0x11, 0xfb, 0x12, 0x9e, 0x15, 0x24, 0x16, 0xd7, 0x16, + 0xf5, 0x14, 0xe1, 0x11, 0x56, 0x0e, 0x55, 0x0a, 0x8c, 0x06, 0x65, 0x04, 0x9a, 0x01, 0xb4, 0xfc, + 0xa5, 0xf9, 0x4a, 0xf6, 0xc1, 0xf3, 0x6c, 0xef, 0x6e, 0xeb, 0x57, 0xe8, 0xa2, 0xe7, 0x7f, 0xe9, + 0x7d, 0xea, 0x1e, 0xea, 0x85, 0xe8, 0x47, 0xeb, 0x20, 0xed, 0xfc, 0xed, 0xe5, 0xf0, 0xa8, 0xf5, + 0x88, 0xf8, 0xd9, 0xf9, 0x95, 0xf9, 0x94, 0xf9, 0x75, 0xfa, 0x6b, 0xfe, 0x5f, 0x00, 0xb7, 0x00, + 0x94, 0x01, 0x6c, 0xff, 0xc6, 0xfe, 0xcc, 0x00, 0xb5, 0x01, 0xeb, 0x01, 0x59, 0x02, 0x71, 0x04, + 0xc2, 0x06, 0xb9, 0x09, 0xa0, 0x0b, 0xe0, 0x0c, 0x9c, 0x0e, 0x1e, 0x0b, 0xdf, 0x0b, 0x6d, 0x0d, + 0x57, 0x0c, 0x2a, 0x09, 0x32, 0x06, 0xb3, 0x05, 0x0f, 0x03, 0xc0, 0x01, 0x92, 0x00, 0x8a, 0xfe, + 0x5e, 0xfc, 0x21, 0xfb, 0xed, 0xfa, 0x45, 0xfb, 0x8f, 0xfa, 0x9d, 0xfb, 0xb3, 0xfd, 0xc9, 0xff, + 0xeb, 0x00, 0x44, 0x01, 0x03, 0x04, 0x01, 0x06, 0x69, 0x04, 0x23, 0x04, 0x53, 0x04, 0xa2, 0x03, + 0xb5, 0x02, 0x78, 0x04, 0x68, 0x03, 0xd4, 0x04, 0xd0, 0x01, 0x01, 0xff, 0x00, 0x02, 0xee, 0x00, + 0x87, 0x01, 0xa4, 0xff, 0x45, 0xff, 0x0e, 0x00, 0x8e, 0x00, 0xbc, 0x01, 0x1a, 0x01, 0xfb, 0x00, + 0xe6, 0xfe, 0x4e, 0xff, 0x80, 0x00, 0xce, 0xfe, 0x74, 0xfb, 0x34, 0xf8, 0x42, 0xf8, 0x58, 0xf5, + 0x62, 0xf2, 0x93, 0xf0, 0xc6, 0xec, 0x72, 0xea, 0x29, 0xea, 0x8b, 0xea, 0x85, 0xec, 0x3b, 0xed, + 0x7f, 0xef, 0xce, 0xf3, 0x5a, 0xf6, 0x2d, 0xfa, 0xf1, 0xfc, 0x9b, 0x00, 0x62, 0x02, 0x39, 0x04, + 0xb1, 0x05, 0x3f, 0x06, 0x78, 0x06, 0xf4, 0x05, 0x6e, 0x07, 0x3b, 0x08, 0x61, 0x09, 0xef, 0x08, + 0xf3, 0x09, 0x26, 0x0c, 0x75, 0x0a, 0xc2, 0x0b, 0xc1, 0x0a, 0x7b, 0x09, 0x1f, 0x0c, 0x56, 0x0d, + 0x9f, 0x0e, 0xa5, 0x0d, 0xfb, 0x0a, 0x0d, 0x08, 0x87, 0x05, 0xd2, 0x02, 0x06, 0x01, 0x4a, 0xfe, + 0x83, 0xfb, 0xec, 0xf9, 0xa1, 0xf8, 0xa8, 0xf7, 0xb6, 0xf5, 0xec, 0xf0, 0x09, 0xed, 0xa0, 0xef, + 0x63, 0xf1, 0xdd, 0xf1, 0x55, 0xf1, 0x71, 0xf2, 0x87, 0xf5, 0xd5, 0xf5, 0xa1, 0xf7, 0xbe, 0xfa, + 0xb5, 0xff, 0x78, 0x03, 0x1b, 0x05, 0x82, 0x08, 0xf3, 0x07, 0xe2, 0x07, 0xa5, 0x09, 0xb5, 0x0c, + 0xb6, 0x0d, 0x83, 0x0e, 0xdf, 0x0c, 0x26, 0x0c, 0x64, 0x0c, 0x56, 0x0a, 0x94, 0x0a, 0x2e, 0x0b, + 0x9c, 0x0a, 0xd9, 0x0b, 0x0b, 0x0e, 0xa5, 0x0f, 0x3c, 0x10, 0x05, 0x0f, 0xe7, 0x0b, 0xad, 0x0a, + 0x22, 0x0a, 0x7a, 0x09, 0x5a, 0x06, 0x77, 0x01, 0x53, 0xfd, 0x21, 0xfa, 0xce, 0xf8, 0xed, 0xf4, + 0xf2, 0xf0, 0xe5, 0xed, 0x65, 0xed, 0xf7, 0xeb, 0xcc, 0xea, 0xb2, 0xe8, 0xad, 0xe9, 0x39, 0xed, + 0x68, 0xed, 0x3b, 0xf0, 0x9d, 0xf2, 0xd8, 0xf4, 0x8d, 0xf6, 0x1d, 0xf8, 0x6f, 0xf9, 0x03, 0xfc, + 0x7f, 0xfc, 0x81, 0xff, 0xb4, 0x03, 0xb5, 0x03, 0x36, 0x05, 0x45, 0x05, 0x3a, 0x05, 0xe8, 0x07, + 0x83, 0x0a, 0x68, 0x0d, 0xcc, 0x0d, 0x43, 0x0e, 0xd3, 0x0e, 0xea, 0x10, 0x59, 0x13, 0x85, 0x13, + 0x9c, 0x13, 0xc4, 0x12, 0x17, 0x13, 0x1d, 0x11, 0x85, 0x10, 0x12, 0x0c, 0x4e, 0x07, 0xbc, 0x05, + 0x65, 0x03, 0x4a, 0x01, 0x0d, 0xfd, 0x91, 0xf7, 0x57, 0xf4, 0x28, 0xf1, 0x15, 0xef, 0x6e, 0xee, + 0xe1, 0xed, 0x39, 0xef, 0xd2, 0xf0, 0xcd, 0xf1, 0x67, 0xf4, 0x4e, 0xf6, 0x04, 0xf8, 0x22, 0xfa, + 0x47, 0xfb, 0x45, 0xfc, 0xc7, 0xfc, 0x92, 0xfb, 0x90, 0xfa, 0xe0, 0xfb, 0x5e, 0xfb, 0x05, 0xfe, + 0xcd, 0xfc, 0x78, 0xfd, 0xa0, 0xff, 0x24, 0xff, 0x4b, 0x02, 0x80, 0x00, 0x4f, 0x00, 0x6d, 0x03, + 0x61, 0x05, 0x7e, 0x06, 0x8a, 0x07, 0x79, 0x06, 0x84, 0x04, 0x96, 0x03, 0xa4, 0x02, 0x3d, 0x03, + 0xdc, 0x01, 0xac, 0xfe, 0x30, 0xfe, 0xda, 0xfc, 0x2c, 0xfc, 0x39, 0xf9, 0xfd, 0xf5, 0x28, 0xf4, + 0x29, 0xf4, 0xca, 0xf3, 0x5a, 0xf4, 0x16, 0xf3, 0x9a, 0xf3, 0xee, 0xf3, 0x82, 0xf4, 0x47, 0xf6, + 0x77, 0xf6, 0xe2, 0xfb, 0x53, 0xff, 0x17, 0x01, 0x09, 0x03, 0xe7, 0x02, 0xe3, 0x01, 0xc6, 0x03, + 0x4a, 0x07, 0xcb, 0x07, 0x93, 0x09, 0x9d, 0x07, 0x73, 0x05, 0x35, 0x06, 0x80, 0x04, 0xaa, 0x04, + 0x4c, 0x03, 0x5f, 0x03, 0x7c, 0x05, 0x2b, 0x06, 0xc8, 0x09, 0x85, 0x0b, 0x3e, 0x0b, 0xc3, 0x09, + 0x96, 0x07, 0xc2, 0x08, 0xc7, 0x0a, 0x32, 0x08, 0x73, 0x04, 0x2b, 0x01, 0xe6, 0xff, 0xb1, 0xfe, + 0x3c, 0xfc, 0xf0, 0xf8, 0xa8, 0xf7, 0x1c, 0xf7, 0xda, 0xf6, 0x80, 0xf7, 0xce, 0xf5, 0x9f, 0xf7, + 0xe4, 0xf9, 0x07, 0xfb, 0x63, 0xfd, 0xad, 0xfe, 0xff, 0x02, 0x19, 0x05, 0xfb, 0x05, 0x96, 0x06, + 0x83, 0x06, 0x04, 0x07, 0x4c, 0x07, 0x28, 0x0a, 0x09, 0x0a, 0x8e, 0x09, 0x61, 0x08, 0x39, 0x08, + 0xe8, 0x08, 0xd5, 0x09, 0x91, 0x0a, 0x08, 0x09, 0x59, 0x09, 0x71, 0x08, 0xca, 0x08, 0xd9, 0x0a, + 0x93, 0x0a, 0xa3, 0x08, 0x18, 0x08, 0x78, 0x07, 0x56, 0x07, 0x1e, 0x07, 0xe3, 0x01, 0xef, 0xfd, + 0xf8, 0xfb, 0x41, 0xfa, 0xca, 0xf9, 0x3b, 0xf6, 0x06, 0xf2, 0x16, 0xed, 0x93, 0xeb, 0xce, 0xe9, + 0xae, 0xe9, 0x75, 0xe9, 0xe3, 0xea, 0xaf, 0xed, 0x31, 0xef, 0x5d, 0xf1, 0xee, 0xf3, 0xeb, 0xf8, + 0xc0, 0xfa, 0xb8, 0xfc, 0x78, 0x00, 0x04, 0x03, 0xe1, 0x03, 0xc3, 0x04, 0xcc, 0x06, 0x35, 0x08, + 0xdc, 0x09, 0x3a, 0x09, 0xfd, 0x0a, 0x31, 0x0e, 0x94, 0x0e, 0x68, 0x0f, 0xc5, 0x0e, 0xba, 0x0d, + 0x78, 0x0d, 0xdc, 0x0f, 0x17, 0x11, 0xc9, 0x11, 0xc8, 0x10, 0xe2, 0x0d, 0xe0, 0x0c, 0x07, 0x0b, + 0xa0, 0x09, 0x16, 0x06, 0xb7, 0x02, 0x71, 0x00, 0xc5, 0xfe, 0xf4, 0xfc, 0x8f, 0xf9, 0x25, 0xf5, + 0xf7, 0xf0, 0xe1, 0xee, 0x4c, 0xee, 0x17, 0xec, 0xb3, 0xea, 0x3c, 0xeb, 0x6d, 0xeb, 0x55, 0xeb, + 0xfc, 0xeb, 0x6a, 0xed, 0x07, 0xf2, 0x6c, 0xf5, 0xfa, 0xf7, 0x4f, 0xfb, 0x49, 0xfd, 0xa3, 0xfc, + 0x7d, 0xfe, 0x8f, 0x02, 0xcb, 0x03, 0x24, 0x06, 0xba, 0x04, 0xaf, 0x04, 0x7e, 0x05, 0x12, 0x05, + 0xba, 0x05, 0x30, 0x06, 0xbf, 0x06, 0xae, 0x07, 0x62, 0x0a, 0x14, 0x0d, 0x85, 0x0e, 0x5d, 0x0f, + 0x6a, 0x0e, 0x5a, 0x0d, 0xd9, 0x0d, 0xc0, 0x0e, 0xfa, 0x0c, 0x39, 0x08, 0x8d, 0x04, 0x1a, 0x02, + 0x24, 0x00, 0x7c, 0xfc, 0x98, 0xf7, 0x57, 0xf5, 0xe9, 0xf4, 0x8c, 0xf3, 0x51, 0xf2, 0x32, 0xef, + 0x2d, 0xef, 0xc6, 0xee, 0xec, 0xee, 0x43, 0xf0, 0x72, 0xf1, 0x8c, 0xf4, 0x87, 0xf4, 0x08, 0xf7, + 0x4b, 0xf6, 0x72, 0xf6, 0xbd, 0xf6, 0x1a, 0xf9, 0x6c, 0xfc, 0xd7, 0xfc, 0xf2, 0xfd, 0x54, 0xfe, + 0xed, 0xff, 0x51, 0x00, 0x07, 0x01, 0x06, 0x04, 0x79, 0x04, 0x9d, 0x05, 0xe4, 0x05, 0xad, 0x08, + 0x19, 0x0b, 0x25, 0x0c, 0x51, 0x0c, 0x76, 0x0c, 0xca, 0x0d, 0x58, 0x0e, 0xd8, 0x0f, 0x2c, 0x0e, + 0x72, 0x0a, 0x8f, 0x08, 0x9d, 0x09, 0xaf, 0x09, 0xf5, 0x06, 0xf7, 0x01, 0x24, 0xfe, 0x7f, 0xfc, + 0x1e, 0xf9, 0x3e, 0xf7, 0x78, 0xf5, 0xdb, 0xf5, 0x97, 0xf7, 0xd2, 0xf6, 0xf4, 0xf7, 0x17, 0xfa, + 0x35, 0xfd, 0x20, 0xfe, 0xde, 0x00, 0xd4, 0x03, 0xc2, 0x04, 0xe4, 0x05, 0x46, 0x05, 0x38, 0x06, + 0xc2, 0x05, 0x5f, 0x06, 0xb5, 0x05, 0xaa, 0x05, 0xfe, 0x06, 0x6f, 0x07, 0x98, 0x07, 0x58, 0x06, + 0x10, 0x04, 0x40, 0x03, 0x93, 0x04, 0x90, 0x05, 0x16, 0x06, 0x4c, 0x06, 0x44, 0x04, 0x12, 0x03, + 0xdd, 0x01, 0x59, 0x01, 0x34, 0x00, 0x62, 0xfd, 0x73, 0xfc, 0xc1, 0xfc, 0x25, 0xfb, 0x22, 0xf8, + 0x0e, 0xf5, 0x6c, 0xf2, 0x62, 0xf1, 0x01, 0xf0, 0x8c, 0xf0, 0x34, 0xf0, 0xa0, 0xf0, 0x48, 0xf1, + 0xc3, 0xf1, 0x38, 0xf3, 0x61, 0xf3, 0x8e, 0xf6, 0x3c, 0xfb, 0x86, 0xfe, 0x45, 0x00, 0xc4, 0x02, + 0x94, 0x01, 0xad, 0x02, 0x53, 0x06, 0x9a, 0x07, 0x9d, 0x09, 0x43, 0x09, 0x1e, 0x07, 0xc0, 0x06, + 0xe8, 0x06, 0xab, 0x06, 0x37, 0x06, 0x08, 0x06, 0x70, 0x06, 0x5d, 0x08, 0xa2, 0x08, 0xda, 0x0b, + 0xab, 0x0c, 0x96, 0x0b, 0xfe, 0x0a, 0xad, 0x0a, 0xe5, 0x0b, 0x10, 0x0a, 0xd8, 0x05, 0x52, 0x02, + 0x80, 0x00, 0x39, 0xfe, 0xb3, 0xfb, 0x81, 0xf7, 0xe7, 0xf5, 0xeb, 0xf3, 0x9e, 0xf0, 0xe7, 0xf0, + 0xab, 0xee, 0xd0, 0xed, 0x1d, 0xef, 0xae, 0xef, 0x53, 0xf1, 0x12, 0xf2, 0x7a, 0xf4, 0x1b, 0xf7, + 0xb8, 0xf9, 0xc0, 0xf9, 0xde, 0xfb, 0x83, 0xfc, 0x1f, 0xff, 0x76, 0x03, 0xea, 0x03, 0x1c, 0x06, + 0xfa, 0x04, 0xf0, 0x06, 0x2b, 0x08, 0xea, 0x08, 0x32, 0x0b, 0x1b, 0x0b, 0xfe, 0x0a, 0x6c, 0x0b, + 0xe2, 0x0b, 0x1d, 0x0c, 0x47, 0x0d, 0x9c, 0x0b, 0xda, 0x09, 0x75, 0x0a, 0xa7, 0x09, 0x76, 0x0b, + 0xde, 0x09, 0x01, 0x05, 0x4a, 0x03, 0x5c, 0x01, 0x2e, 0x00, 0xf7, 0xfd, 0xa8, 0xf8, 0x0b, 0xf4, + 0x38, 0xf1, 0x37, 0xed, 0x4b, 0xeb, 0x2c, 0xe8, 0x3c, 0xe7, 0x67, 0xe7, 0xa5, 0xe6, 0x6f, 0xe7, + 0x68, 0xe8, 0xbc, 0xec, 0x6f, 0xf0, 0x29, 0xf2, 0xc6, 0xf4, 0x05, 0xf8, 0x53, 0xf9, 0xe8, 0xfb, + 0x46, 0xff, 0x2a, 0x01, 0x57, 0x04, 0x6d, 0x04, 0x9a, 0x05, 0xa9, 0x08, 0x50, 0x09, 0xef, 0x0b, + 0x5c, 0x0d, 0xc3, 0x0d, 0x05, 0x0e, 0xb4, 0x0f, 0x30, 0x13, 0x91, 0x15, 0x6e, 0x15, 0xfe, 0x14, + 0x05, 0x15, 0x79, 0x15, 0x41, 0x15, 0x01, 0x13, 0x9c, 0x10, 0x16, 0x0f, 0x95, 0x0d, 0x3f, 0x0b, + 0x44, 0x09, 0x20, 0x04, 0xd8, 0x00, 0x18, 0xfd, 0xbb, 0xf9, 0xae, 0xf8, 0x97, 0xf5, 0xe3, 0xf5, + 0x5f, 0xf5, 0x23, 0xf3, 0xc4, 0xf2, 0x5c, 0xf1, 0x01, 0xf3, 0x78, 0xf5, 0x9c, 0xf7, 0x84, 0xf9, + 0x74, 0xfb, 0x29, 0xfa, 0x91, 0xfa, 0x63, 0xfc, 0xa6, 0xfd, 0xa5, 0xff, 0x27, 0xfe, 0x75, 0xfe, + 0xb8, 0xfe, 0x44, 0xfe, 0x29, 0xfe, 0x44, 0xfe, 0xfd, 0xfd, 0x54, 0xfe, 0x09, 0x00, 0x10, 0x03, + 0xd5, 0x05, 0x1c, 0x06, 0x38, 0x07, 0x49, 0x07, 0xea, 0x07, 0xbf, 0x09, 0xb7, 0x09, 0xe9, 0x08, + 0xd4, 0x06, 0x0f, 0x06, 0xaa, 0x05, 0x89, 0x03, 0xb1, 0xff, 0x23, 0xfd, 0xde, 0xfb, 0x4e, 0xfa, + 0x27, 0xfb, 0x21, 0xf8, 0xce, 0xf6, 0x37, 0xf6, 0x92, 0xf4, 0xf6, 0xf4, 0x64, 0xf5, 0xc5, 0xf6, + 0x27, 0xf8, 0x1e, 0xf9, 0x8a, 0xf9, 0x15, 0xfa, 0x35, 0xfa, 0x8d, 0xfd, 0xc0, 0x00, 0x75, 0x01, + 0x7c, 0x03, 0x9a, 0x02, 0x56, 0x04, 0x5a, 0x05, 0xe5, 0x04, 0x0c, 0x06, 0xf6, 0x05, 0x2a, 0x06, + 0xe7, 0x05, 0x50, 0x06, 0x08, 0x07, 0xc2, 0x07, 0xc7, 0x05, 0x35, 0x06, 0x74, 0x07, 0x94, 0x07, + 0xa7, 0x09, 0x64, 0x08, 0xc9, 0x05, 0x43, 0x03, 0xde, 0x02, 0x08, 0x04, 0x36, 0x03, 0xf0, 0xff, + 0xff, 0xfb, 0x99, 0xf8, 0xed, 0xf4, 0xfe, 0xf2, 0x3f, 0xf1, 0x73, 0xf0, 0xdc, 0xf0, 0x4f, 0xf1, + 0x8e, 0xf2, 0xff, 0xf2, 0xb1, 0xf6, 0x14, 0xfa, 0xaf, 0xfc, 0xc3, 0xff, 0x2b, 0x02, 0x5f, 0x02, + 0xad, 0x05, 0x0f, 0x07, 0xd3, 0x06, 0x03, 0x09, 0xa4, 0x07, 0x20, 0x08, 0x47, 0x08, 0x2b, 0x08, + 0xc7, 0x09, 0xa6, 0x09, 0x80, 0x08, 0xeb, 0x07, 0x38, 0x08, 0x25, 0x0a, 0x39, 0x0a, 0x3b, 0x09, + 0x5e, 0x08, 0x86, 0x07, 0x19, 0x07, 0xfa, 0x05, 0x9c, 0x04, 0xa0, 0x02, 0xa7, 0x00, 0x8d, 0xff, + 0xe6, 0xfd, 0x41, 0xfa, 0x19, 0xf6, 0x77, 0xf4, 0x8f, 0xf1, 0x16, 0xef, 0x81, 0xee, 0x07, 0xec, + 0x78, 0xec, 0xf7, 0xea, 0xe7, 0xea, 0x8f, 0xeb, 0xd4, 0xeb, 0xac, 0xed, 0xe4, 0xf0, 0x4f, 0xf4, + 0x0a, 0xf6, 0xa7, 0xf9, 0xa6, 0xfa, 0x96, 0xfc, 0x51, 0x00, 0x73, 0x03, 0x75, 0x07, 0x07, 0x09, + 0x0a, 0x0b, 0x7c, 0x0a, 0xad, 0x0a, 0xf1, 0x0c, 0x51, 0x0c, 0xb3, 0x0c, 0xe9, 0x0c, 0x18, 0x0e, + 0x0d, 0x10, 0xf0, 0x10, 0x48, 0x11, 0xa4, 0x12, 0x1a, 0x12, 0xdf, 0x12, 0xeb, 0x12, 0x1b, 0x11, + 0xde, 0x0f, 0x22, 0x0e, 0xa1, 0x0c, 0xa1, 0x0a, 0x9d, 0x08, 0x75, 0x04, 0x94, 0x00, 0x02, 0xfe, + 0xbb, 0xfa, 0x80, 0xf9, 0xeb, 0xf6, 0x62, 0xf4, 0xc8, 0xf1, 0xd6, 0xf0, 0xe2, 0xef, 0x6f, 0xed, + 0x97, 0xee, 0xb0, 0xef, 0x25, 0xf2, 0x59, 0xf2, 0x24, 0xf3, 0xe3, 0xf3, 0x82, 0xf5, 0xb2, 0xf8, + 0x9e, 0xfa, 0x0e, 0xfd, 0x5f, 0xfd, 0x20, 0x00, 0x9c, 0x01, 0x6a, 0x02, 0x3b, 0x03, 0x2e, 0x04, + 0x8b, 0x04, 0x7f, 0x05, 0x4b, 0x07, 0xf6, 0x08, 0xbd, 0x0a, 0x22, 0x0b, 0xb3, 0x0a, 0x99, 0x0a, + 0x46, 0x0c, 0x05, 0x0e, 0x10, 0x0e, 0x4b, 0x0d, 0x2a, 0x0b, 0x70, 0x0a, 0x93, 0x08, 0x2a, 0x07, + 0x11, 0x05, 0xe2, 0xff, 0x3f, 0xfc, 0x16, 0xf8, 0x25, 0xf5, 0xa5, 0xf1, 0x0d, 0xef, 0x88, 0xed, + 0x83, 0xed, 0xb2, 0xec, 0x64, 0xeb, 0x9d, 0xec, 0x59, 0xf0, 0x36, 0xf3, 0xd1, 0xf3, 0x1b, 0xf5, + 0xd7, 0xf5, 0x2e, 0xf8, 0x44, 0xfb, 0xf8, 0xfc, 0xd5, 0xfe, 0x0d, 0xff, 0xe6, 0xfe, 0x75, 0x00, + 0x4b, 0x02, 0xb4, 0x03, 0xaa, 0x05, 0x93, 0x05, 0xca, 0x04, 0x29, 0x06, 0xdb, 0x07, 0xee, 0x09, + 0x9c, 0x0a, 0x44, 0x0b, 0xf1, 0x0b, 0xdd, 0x0c, 0xc3, 0x0c, 0x50, 0x0c, 0xce, 0x0a, 0x27, 0x0a, + 0x35, 0x0a, 0x2e, 0x09, 0x5f, 0x08, 0x66, 0x07, 0x49, 0x05, 0x31, 0x02, 0x11, 0xff, 0x43, 0xfd, + 0x7f, 0xfb, 0xb2, 0xfa, 0x2f, 0xfa, 0x3e, 0xf9, 0x25, 0xf7, 0x1f, 0xf6, 0xbe, 0xf5, 0x75, 0xf7, + 0x49, 0xfa, 0x85, 0xfa, 0xc8, 0xfc, 0x54, 0xfc, 0x9e, 0xfd, 0xf3, 0xff, 0x2b, 0x01, 0x07, 0x04, + 0x91, 0x04, 0x20, 0x05, 0x76, 0x04, 0xdc, 0x04, 0x30, 0x04, 0x8a, 0x03, 0x3f, 0x02, 0xa1, 0x00, + 0xf0, 0x01, 0x7d, 0x03, 0xf3, 0x03, 0xbd, 0x02, 0xc1, 0x02, 0x61, 0x04, 0x66, 0x04, 0xbf, 0x04, + 0x2d, 0x04, 0x29, 0x04, 0xc9, 0x03, 0x59, 0x02, 0xda, 0x00, 0x6a, 0x00, 0x58, 0xfd, 0x1e, 0xfb, + 0x9c, 0xf9, 0x01, 0xf7, 0x0f, 0xf7, 0x69, 0xf5, 0x76, 0xf3, 0x88, 0xf1, 0xd2, 0xf1, 0x42, 0xf0, + 0xcc, 0xf0, 0x11, 0xf3, 0x76, 0xf4, 0x82, 0xf7, 0x0d, 0xf8, 0xcc, 0xf9, 0x11, 0xfa, 0xfe, 0xfc, + 0x9f, 0x01, 0x69, 0x03, 0x43, 0x06, 0x72, 0x07, 0x4d, 0x09, 0x7e, 0x0b, 0x10, 0x0c, 0x2b, 0x0c, + 0xd2, 0x0b, 0x2b, 0x0b, 0x08, 0x0b, 0x58, 0x0c, 0x0f, 0x0d, 0x3a, 0x0e, 0x0c, 0x0d, 0x6f, 0x0b, + 0xc2, 0x0c, 0x0b, 0x0d, 0x59, 0x0c, 0xfe, 0x0c, 0x65, 0x0b, 0xe3, 0x08, 0x67, 0x07, 0x09, 0x06, + 0x93, 0x05, 0x97, 0x02, 0xa6, 0xfe, 0x7a, 0xfa, 0x78, 0xf5, 0xec, 0xf2, 0x5c, 0xef, 0xee, 0xec, + 0x2a, 0xeb, 0xc3, 0xea, 0x0f, 0xea, 0x00, 0xe8, 0x87, 0xe9, 0xda, 0xed, 0x67, 0xf2, 0x56, 0xf3, + 0x92, 0xf5, 0x06, 0xf6, 0x6f, 0xf8, 0x0a, 0xfd, 0xd2, 0xfd, 0x23, 0x00, 0xdc, 0x02, 0x7a, 0x03, + 0x9a, 0x05, 0x58, 0x07, 0x12, 0x09, 0x9c, 0x0a, 0x0c, 0x0a, 0xd6, 0x0a, 0x37, 0x0c, 0x51, 0x0d, + 0x41, 0x0e, 0x00, 0x0e, 0x3e, 0x0d, 0x1d, 0x0d, 0x59, 0x0c, 0x4f, 0x0b, 0xa1, 0x0a, 0xad, 0x08, + 0x2d, 0x07, 0x55, 0x06, 0x7b, 0x04, 0xd7, 0x03, 0x2c, 0x00, 0x12, 0xfe, 0x01, 0xfc, 0x01, 0xf7, + 0x30, 0xf5, 0x45, 0xf2, 0x20, 0xf0, 0x1f, 0xee, 0x90, 0xec, 0xb2, 0xea, 0xb5, 0xe9, 0xab, 0xe7, + 0x41, 0xe9, 0xa5, 0xeb, 0x82, 0xeb, 0xcd, 0xed, 0x71, 0xee, 0x48, 0xf1, 0xe5, 0xf3, 0xfa, 0xf5, + 0xcd, 0xf9, 0xaa, 0xfc, 0x13, 0xff, 0xfb, 0x00, 0x06, 0x03, 0x05, 0x04, 0x55, 0x05, 0x1a, 0x04, + 0xdb, 0x04, 0xfd, 0x07, 0x01, 0x09, 0x60, 0x0b, 0x90, 0x0b, 0xe0, 0x0e, 0x40, 0x12, 0x53, 0x13, + 0xe6, 0x14, 0xa2, 0x14, 0x36, 0x14, 0x4f, 0x15, 0x66, 0x15, 0x1d, 0x14, 0x99, 0x13, 0xe3, 0x10, + 0xbb, 0x0d, 0xe2, 0x0a, 0x9a, 0x06, 0x80, 0x04, 0xa0, 0x01, 0x12, 0xff, 0x24, 0xfc, 0x13, 0xf9, + 0xcd, 0xf7, 0xd3, 0xf5, 0xa4, 0xf3, 0xfc, 0xf4, 0x4e, 0xf6, 0xd8, 0xf5, 0xfd, 0xf6, 0x0f, 0xf6, + 0xb9, 0xf7, 0xf6, 0xf8, 0x28, 0xfa, 0xf0, 0xfc, 0x25, 0xfd, 0x45, 0xfe, 0x1c, 0x00, 0x99, 0x00, + 0xb3, 0x00, 0x69, 0x00, 0xe2, 0xff, 0x85, 0x00, 0x12, 0x02, 0xe3, 0x02, 0xdf, 0x03, 0x52, 0x03, + 0x4e, 0x03, 0x17, 0x05, 0xaf, 0x04, 0x5a, 0x06, 0x7b, 0x07, 0x39, 0x07, 0xe9, 0x07, 0x0c, 0x07, + 0x84, 0x05, 0xd8, 0x04, 0x79, 0x04, 0x80, 0x03, 0x5e, 0x00, 0x6a, 0xfd, 0x7b, 0xfb, 0x82, 0xf7, + 0x9a, 0xf5, 0xb1, 0xf3, 0x32, 0xf3, 0x67, 0xf2, 0x7e, 0xf0, 0xf8, 0xef, 0xb4, 0xf3, 0x49, 0xf7, + 0xef, 0xf7, 0xc6, 0xf8, 0xa9, 0xf7, 0x27, 0xfa, 0xf9, 0xfc, 0x96, 0xfe, 0x8e, 0x02, 0xbd, 0x03, + 0x7e, 0x04, 0x20, 0x06, 0xae, 0x07, 0x8f, 0x08, 0x1e, 0x09, 0xb2, 0x09, 0x83, 0x09, 0x47, 0x09, + 0x7e, 0x0a, 0xac, 0x0a, 0x55, 0x0a, 0x85, 0x0a, 0x32, 0x0a, 0x8d, 0x09, 0xd8, 0x08, 0x3e, 0x08, + 0xb6, 0x06, 0xf3, 0x05, 0xb4, 0x04, 0x9d, 0x03, 0x16, 0x03, 0xa9, 0x00, 0x78, 0x00, 0xee, 0xfd, + 0xed, 0xfa, 0xa6, 0xf9, 0x04, 0xf6, 0x8b, 0xf4, 0x73, 0xf3, 0xd7, 0xf2, 0x93, 0xf0, 0xfa, 0xee, + 0x91, 0xee, 0x38, 0xf0, 0x49, 0xf3, 0x25, 0xf4, 0xa0, 0xf6, 0x65, 0xf7, 0x83, 0xfa, 0x02, 0xfd, + 0x5a, 0xff, 0x54, 0x02, 0x2b, 0x04, 0x09, 0x06, 0x81, 0x07, 0x23, 0x09, 0x80, 0x09, 0x95, 0x07, + 0xcd, 0x05, 0x56, 0x05, 0xf8, 0x04, 0x8b, 0x06, 0x23, 0x07, 0x97, 0x05, 0x99, 0x06, 0x43, 0x08, + 0xe8, 0x08, 0x88, 0x08, 0xcb, 0x07, 0xe1, 0x07, 0xe4, 0x07, 0x1f, 0x08, 0x47, 0x05, 0xf6, 0x04, + 0x79, 0x02, 0xc4, 0xff, 0x1c, 0xfd, 0xbb, 0xf8, 0xc6, 0xf6, 0x41, 0xf4, 0xe6, 0xf2, 0x3c, 0xf0, + 0x6f, 0xee, 0xd1, 0xec, 0x21, 0xea, 0x32, 0xea, 0xcc, 0xeb, 0x6a, 0xed, 0xc9, 0xee, 0x09, 0xf1, + 0xb5, 0xf0, 0x2a, 0xf2, 0x5f, 0xf5, 0xc7, 0xf7, 0x28, 0xfb, 0x5a, 0xfd, 0x3f, 0x00, 0x17, 0x04, + 0x4e, 0x07, 0x8b, 0x09, 0x68, 0x0a, 0xf9, 0x09, 0xb3, 0x0b, 0x26, 0x0e, 0x25, 0x10, 0x67, 0x11, + 0xa6, 0x11, 0x21, 0x12, 0x27, 0x13, 0x2a, 0x14, 0x84, 0x13, 0x6f, 0x13, 0x6d, 0x14, 0x92, 0x13, + 0x5f, 0x11, 0xe5, 0x0f, 0xdd, 0x0e, 0x7f, 0x0d, 0x4f, 0x0b, 0x44, 0x08, 0xfc, 0x03, 0xb8, 0xff, + 0x6a, 0xfb, 0x63, 0xf8, 0x40, 0xf5, 0xa6, 0xf2, 0x24, 0xf0, 0x00, 0xed, 0xa1, 0xea, 0x29, 0xed, + 0x88, 0xef, 0x1b, 0xf0, 0x58, 0xf1, 0x71, 0xf0, 0x27, 0xf2, 0x94, 0xf4, 0xf4, 0xf7, 0x9d, 0xf9, + 0xea, 0xfa, 0xa1, 0xfc, 0x67, 0xfe, 0xb5, 0x00, 0x99, 0x02, 0xf7, 0x03, 0x6c, 0x04, 0x57, 0x05, + 0xdb, 0x06, 0x77, 0x08, 0xa9, 0x08, 0x10, 0x09, 0xe5, 0x09, 0x5e, 0x0a, 0xe9, 0x0a, 0x7b, 0x0b, + 0x7b, 0x0b, 0x4e, 0x0c, 0xe6, 0x0b, 0x02, 0x0b, 0x97, 0x0a, 0x91, 0x0a, 0x46, 0x09, 0xda, 0x07, + 0x22, 0x06, 0x57, 0x04, 0xf8, 0x00, 0xa1, 0xfd, 0x2c, 0xfb, 0x17, 0xf8, 0x49, 0xf6, 0xa2, 0xf2, + 0x2d, 0xf1, 0xf7, 0xee, 0x12, 0xef, 0xa0, 0xf0, 0x5f, 0xef, 0x64, 0xf0, 0x60, 0xf0, 0x6b, 0xf2, + 0xf2, 0xf3, 0x39, 0xf6, 0x13, 0xf8, 0x5a, 0xf9, 0x75, 0xfc, 0x40, 0xfe, 0xdf, 0x00, 0x46, 0x01, + 0x2e, 0x00, 0x8b, 0xff, 0x13, 0xff, 0x81, 0x00, 0x21, 0x02, 0x72, 0x02, 0x30, 0x02, 0xaf, 0x03, + 0x48, 0x06, 0xb8, 0x08, 0x02, 0x0a, 0x17, 0x0b, 0x3d, 0x0b, 0x07, 0x0c, 0xf4, 0x0d, 0x27, 0x0d, + 0x18, 0x0d, 0x40, 0x0c, 0x84, 0x0a, 0x96, 0x08, 0x03, 0x06, 0x02, 0x04, 0x17, 0x02, 0x4c, 0x01, + 0xbb, 0xfe, 0x6a, 0xfd, 0x8b, 0xfa, 0xfc, 0xf8, 0xb0, 0xf7, 0xa6, 0xf6, 0x82, 0xf8, 0x3f, 0xf8, + 0x4e, 0xf9, 0xc5, 0xf9, 0xb1, 0xf9, 0x58, 0xfa, 0x14, 0xfb, 0x09, 0xfd, 0x52, 0xfe, 0x75, 0xff, + 0x5f, 0x02, 0x43, 0x05, 0x82, 0x06, 0x51, 0x05, 0x0f, 0x04, 0x21, 0x04, 0xda, 0x05, 0xdd, 0x06, + 0xe2, 0x05, 0x45, 0x06, 0x33, 0x05, 0x99, 0x05, 0xa5, 0x05, 0x48, 0x03, 0xbc, 0x03, 0x68, 0x04, + 0x47, 0x04, 0x94, 0x04, 0xef, 0x02, 0x94, 0x01, 0x5a, 0x00, 0x9e, 0xff, 0x67, 0xfd, 0xe8, 0xfa, + 0xf9, 0xf8, 0x2b, 0xf6, 0x4e, 0xf3, 0x06, 0xf1, 0x81, 0xef, 0x4a, 0xed, 0x31, 0xec, 0x64, 0xea, + 0xa5, 0xeb, 0x4a, 0xef, 0x11, 0xf1, 0xda, 0xf3, 0x6e, 0xf4, 0x14, 0xf5, 0x13, 0xf9, 0x73, 0xfc, + 0x4c, 0xff, 0x70, 0x03, 0xe4, 0x04, 0x99, 0x07, 0x75, 0x0b, 0x44, 0x0c, 0x1f, 0x0d, 0xa8, 0x0d, + 0x60, 0x0f, 0xa8, 0x0f, 0xb9, 0x0f, 0x8e, 0x0f, 0xb4, 0x0e, 0x27, 0x0f, 0xc8, 0x0f, 0xf3, 0x0f, + 0x85, 0x0e, 0x7f, 0x0e, 0x28, 0x0e, 0xf5, 0x0c, 0x2c, 0x0c, 0x0c, 0x0a, 0x83, 0x09, 0xe6, 0x07, + 0x2a, 0x06, 0x3d, 0x05, 0x68, 0x02, 0x6c, 0xff, 0xfc, 0xfb, 0x26, 0xf8, 0xd5, 0xf5, 0xe6, 0xf4, + 0x09, 0xf1, 0x1a, 0xef, 0x07, 0xed, 0x5c, 0xec, 0xf2, 0xec, 0xbf, 0xec, 0xeb, 0xee, 0xa0, 0xef, + 0x8c, 0xf1, 0x23, 0xf4, 0x0b, 0xf7, 0x62, 0xf8, 0x23, 0xfa, 0x37, 0xfc, 0x51, 0xff, 0x03, 0x03, + 0x60, 0x04, 0x1c, 0x05, 0x87, 0x04, 0x7c, 0x05, 0x7a, 0x06, 0xa2, 0x06, 0xd3, 0x08, 0xb2, 0x08, + 0x68, 0x08, 0x68, 0x0a, 0xe4, 0x0b, 0x59, 0x0c, 0x9d, 0x0c, 0x48, 0x0d, 0x8c, 0x0d, 0x72, 0x0e, + 0xed, 0x0c, 0xe7, 0x0b, 0xbf, 0x0a, 0xd5, 0x08, 0x04, 0x07, 0x42, 0x04, 0xdf, 0x00, 0x5a, 0xfe, + 0x2d, 0xfc, 0xdd, 0xf9, 0x9d, 0xf7, 0x9d, 0xf3, 0xd6, 0xf0, 0x3f, 0xee, 0xad, 0xed, 0xf4, 0xed, + 0xb0, 0xec, 0xd7, 0xed, 0x93, 0xed, 0xc2, 0xec, 0xb0, 0xed, 0x3d, 0xef, 0xaa, 0xf1, 0xc5, 0xf3, + 0x23, 0xf6, 0xeb, 0xf9, 0xef, 0xfd, 0x6e, 0x00, 0x72, 0x02, 0xfd, 0x02, 0xe3, 0x03, 0xbd, 0x06, + 0x8a, 0x08, 0x83, 0x09, 0xcc, 0x0a, 0x03, 0x0b, 0xd5, 0x0c, 0x95, 0x0d, 0xc9, 0x0d, 0xd3, 0x0e, + 0x28, 0x10, 0xa7, 0x12, 0xdf, 0x12, 0xda, 0x11, 0xb8, 0x11, 0xb5, 0x10, 0x62, 0x10, 0xfc, 0x0e, + 0xd0, 0x0c, 0xff, 0x08, 0x5d, 0x05, 0xde, 0x02, 0x7f, 0xff, 0xd7, 0xfb, 0x34, 0xf7, 0x04, 0xf5, + 0xf6, 0xf0, 0xeb, 0xef, 0x78, 0xf1, 0x51, 0xf1, 0x2b, 0xf3, 0xb4, 0xf2, 0x69, 0xf2, 0x59, 0xf4, + 0xc3, 0xf6, 0xea, 0xf7, 0x78, 0xf9, 0x5e, 0xfa, 0x5e, 0xfd, 0xe8, 0xff, 0x57, 0x00, 0xdf, 0x00, + 0x79, 0x00, 0x1c, 0x01, 0x3b, 0x02, 0x29, 0x03, 0x1e, 0x03, 0xbe, 0x02, 0xfb, 0x02, 0x55, 0x03, + 0x1d, 0x03, 0x86, 0x02, 0xc9, 0x03, 0x39, 0x04, 0x13, 0x05, 0xd6, 0x04, 0xd6, 0x03, 0x26, 0x05, + 0xec, 0x03, 0xa3, 0x03, 0x1a, 0x03, 0x08, 0x02, 0xff, 0x00, 0x9b, 0xfe, 0xea, 0xfc, 0xc7, 0xfb, + 0xe0, 0xf9, 0xcf, 0xf6, 0xd1, 0xf5, 0x89, 0xf4, 0xea, 0xf3, 0x99, 0xf4, 0x62, 0xf4, 0x94, 0xf4, + 0x9a, 0xf4, 0x1f, 0xf6, 0x8d, 0xf8, 0xbf, 0xfa, 0xe0, 0xfb, 0x21, 0xfc, 0x9e, 0xfd, 0x1e, 0x02, + 0xc4, 0x04, 0x16, 0x06, 0x5b, 0x07, 0x55, 0x06, 0xf9, 0x06, 0xf6, 0x06, 0xd8, 0x06, 0xa3, 0x07, + 0xc2, 0x06, 0x6b, 0x06, 0xed, 0x07, 0x4a, 0x09, 0xbd, 0x09, 0x83, 0x0a, 0xfd, 0x09, 0xa9, 0x09, + 0x80, 0x0a, 0xd6, 0x09, 0xe9, 0x09, 0xf8, 0x08, 0x6f, 0x08, 0x79, 0x06, 0x86, 0x03, 0x0e, 0x01, + 0x1c, 0xfe, 0x60, 0xfd, 0xdb, 0xfb, 0x82, 0xf9, 0x94, 0xf6, 0x60, 0xf4, 0xb6, 0xf1, 0xac, 0xf0, + 0xe4, 0xef, 0x48, 0xf0, 0xc9, 0xf1, 0x45, 0xf2, 0x08, 0xf4, 0x20, 0xf5, 0x6c, 0xf6, 0xba, 0xf7, + 0xf8, 0xf9, 0x40, 0xfc, 0x76, 0x00, 0xde, 0x04, 0x63, 0x07, 0xaa, 0x08, 0x48, 0x08, 0xed, 0x08, + 0x8b, 0x0a, 0x13, 0x0c, 0x49, 0x0c, 0x37, 0x0b, 0x14, 0x0b, 0xd8, 0x0a, 0x7d, 0x0a, 0x80, 0x09, + 0x6d, 0x08, 0xc8, 0x08, 0x14, 0x0a, 0x02, 0x0a, 0xda, 0x09, 0x1f, 0x08, 0x78, 0x05, 0x30, 0x05, + 0x7a, 0x03, 0x04, 0x01, 0x48, 0xfe, 0xb8, 0xfb, 0xcd, 0xf8, 0x8f, 0xf5, 0x00, 0xf1, 0xda, 0xec, + 0x14, 0xeb, 0x71, 0xe8, 0xf5, 0xe7, 0xf6, 0xe7, 0xf4, 0xe8, 0x1f, 0xea, 0xb1, 0xea, 0xf8, 0xeb, + 0x8f, 0xed, 0x94, 0xf1, 0x85, 0xf3, 0x26, 0xf6, 0xe5, 0xf9, 0x21, 0xfd, 0x11, 0x01, 0xe2, 0x03, + 0xcb, 0x04, 0x25, 0x06, 0x65, 0x09, 0x21, 0x0c, 0xf3, 0x0d, 0xd4, 0x0e, 0xf5, 0x0e, 0xc5, 0x0f, + 0x33, 0x11, 0x36, 0x12, 0xe7, 0x12, 0xfd, 0x12, 0x6c, 0x13, 0xd1, 0x13, 0x04, 0x13, 0x8a, 0x12, + 0xa2, 0x11, 0xb7, 0x0f, 0x2e, 0x0f, 0xd4, 0x0d, 0x39, 0x0c, 0xe8, 0x09, 0x3d, 0x07, 0xb4, 0x04, + 0x88, 0x00, 0xb8, 0xfd, 0x49, 0xfa, 0x6e, 0xf7, 0x08, 0xf4, 0x01, 0xf2, 0x3c, 0xf0, 0xde, 0xee, + 0x17, 0xee, 0x45, 0xed, 0x52, 0xee, 0x8e, 0xef, 0x60, 0xf1, 0x2e, 0xf1, 0xbb, 0xf0, 0xe9, 0xf2, + 0x76, 0xf6, 0xd7, 0xf9, 0x22, 0xfc, 0xa1, 0xfc, 0x4f, 0xfd, 0x7c, 0xfe, 0x0b, 0xff, 0x2c, 0x00, + 0xd4, 0x00, 0x09, 0x02, 0x9a, 0x02, 0x00, 0x03, 0x20, 0x05, 0x35, 0x06, 0x67, 0x07, 0x62, 0x08, + 0xcd, 0x09, 0xe6, 0x0b, 0xac, 0x0c, 0x35, 0x0d, 0x15, 0x0d, 0x39, 0x0e, 0x2f, 0x0d, 0x07, 0x0c, + 0x4c, 0x09, 0xb4, 0x06, 0x25, 0x06, 0xe1, 0x03, 0xf9, 0x01, 0x0a, 0xff, 0x77, 0xfb, 0x9a, 0xf7, + 0x93, 0xf5, 0x1f, 0xf4, 0x2f, 0xf3, 0xf4, 0xf2, 0xf7, 0xf1, 0x8c, 0xf2, 0x3c, 0xf2, 0x7b, 0xf2, + 0xd1, 0xf2, 0x52, 0xf3, 0x14, 0xf5, 0x78, 0xf8, 0x88, 0xfc, 0xb6, 0xff, 0x63, 0x01, 0xab, 0x02, + 0x38, 0x03, 0xd4, 0x03, 0x97, 0x05, 0x55, 0x05, 0xf2, 0x05, 0xc0, 0x06, 0x0a, 0x07, 0x24, 0x08, + 0xb1, 0x07, 0xee, 0x06, 0x91, 0x07, 0x40, 0x09, 0x58, 0x0b, 0xbf, 0x0b, 0x23, 0x0b, 0x63, 0x0a, + 0x95, 0x0a, 0x18, 0x0a, 0x94, 0x08, 0x2c, 0x06, 0xd8, 0x03, 0x3c, 0x02, 0x92, 0xff, 0x1d, 0xfc, + 0x5c, 0xf8, 0x51, 0xf6, 0x76, 0xf3, 0xbb, 0xf1, 0x49, 0xf1, 0x40, 0xf2, 0x92, 0xf2, 0xd2, 0xf3, + 0xd1, 0xf4, 0x73, 0xf5, 0x9e, 0xf8, 0x91, 0xf9, 0x85, 0xfa, 0xa3, 0xfc, 0x4c, 0xff, 0x7d, 0x02, + 0x84, 0x04, 0x17, 0x04, 0x82, 0x04, 0x86, 0x05, 0x68, 0x06, 0x0d, 0x08, 0x42, 0x08, 0x68, 0x07, + 0x25, 0x07, 0x54, 0x06, 0x75, 0x06, 0xab, 0x05, 0x37, 0x05, 0x2e, 0x05, 0x16, 0x05, 0x40, 0x05, + 0x9c, 0x03, 0x11, 0x02, 0xf6, 0x00, 0xd5, 0x00, 0x7c, 0x00, 0xea, 0xff, 0xa5, 0xfd, 0x52, 0xfd, + 0x3b, 0xfb, 0x3a, 0xf8, 0xd8, 0xf6, 0xaf, 0xf3, 0x38, 0xf2, 0xb5, 0xf0, 0x95, 0xef, 0x23, 0xef, + 0x32, 0xef, 0x50, 0xee, 0x4b, 0xed, 0x27, 0xef, 0xab, 0xf1, 0x0c, 0xf5, 0x3f, 0xf6, 0x35, 0xf7, + 0x56, 0xf9, 0x13, 0xfd, 0x24, 0x02, 0x27, 0x05, 0x53, 0x07, 0x9e, 0x09, 0xd1, 0x0a, 0xcb, 0x0b, + 0xd9, 0x0c, 0x55, 0x0d, 0x4d, 0x0e, 0x24, 0x0e, 0x18, 0x0e, 0x1e, 0x0f, 0x45, 0x0f, 0x2d, 0x10, + 0xad, 0x10, 0x21, 0x10, 0x9f, 0x10, 0x03, 0x11, 0x0f, 0x10, 0x6c, 0x0f, 0x8c, 0x0f, 0xb1, 0x0e, + 0x9f, 0x0c, 0xa3, 0x08, 0xd4, 0x05, 0x1c, 0x03, 0xd5, 0x00, 0x03, 0xff, 0xe8, 0xfa, 0xef, 0xf7, + 0xe5, 0xf2, 0x2a, 0xf0, 0x37, 0xef, 0xc5, 0xed, 0x7e, 0xed, 0xcd, 0xec, 0x4c, 0xed, 0x41, 0xef, + 0xcf, 0xef, 0x7a, 0xef, 0xbf, 0xf0, 0x0b, 0xf3, 0x94, 0xf6, 0x31, 0xfb, 0xf3, 0xfe, 0x46, 0x01, + 0x75, 0x03, 0x0b, 0x04, 0x01, 0x06, 0x36, 0x08, 0xe1, 0x09, 0x68, 0x0b, 0xb9, 0x0b, 0x70, 0x0c, + 0x55, 0x0d, 0xb4, 0x0c, 0x85, 0x0c, 0x25, 0x0c, 0x49, 0x0d, 0x2c, 0x0f, 0x07, 0x10, 0xac, 0x0f, + 0xed, 0x0d, 0xf2, 0x0c, 0x38, 0x0c, 0x31, 0x0a, 0x33, 0x07, 0xca, 0x05, 0x64, 0x03, 0x91, 0x00, + 0x6a, 0xfc, 0x23, 0xf7, 0xe9, 0xf4, 0xaf, 0xf0, 0x6e, 0xee, 0xf6, 0xec, 0x97, 0xeb, 0xc1, 0xea, + 0xb9, 0xea, 0xc0, 0xea, 0x50, 0xeb, 0xbb, 0xec, 0x5d, 0xed, 0x6b, 0xee, 0x96, 0xef, 0xf1, 0xf3, + 0x72, 0xf7, 0x92, 0xfa, 0x66, 0xfc, 0xbc, 0xfc, 0x48, 0xff, 0xf3, 0x01, 0x83, 0x04, 0x0b, 0x06, + 0x13, 0x07, 0x14, 0x07, 0x48, 0x08, 0x31, 0x0a, 0xeb, 0x0a, 0x10, 0x0c, 0xc9, 0x0b, 0x5e, 0x0d, + 0xe6, 0x0e, 0x1b, 0x0e, 0x35, 0x0e, 0x84, 0x0d, 0x38, 0x0e, 0xb4, 0x0e, 0x32, 0x0e, 0xd2, 0x0c, + 0xd4, 0x0c, 0xe1, 0x0a, 0xf0, 0x07, 0x65, 0x05, 0x62, 0x02, 0xd7, 0x00, 0xc3, 0xfc, 0x4a, 0xfa, + 0x4a, 0xf8, 0x7c, 0xf5, 0x86, 0xf3, 0x08, 0xf2, 0x4e, 0xf2, 0x65, 0xf3, 0x40, 0xf4, 0x3c, 0xf4, + 0xd2, 0xf3, 0xb7, 0xf3, 0x2b, 0xf6, 0x2c, 0xf9, 0x07, 0xfb, 0x2f, 0xfc, 0xa3, 0xfc, 0xeb, 0xfd, + 0x97, 0xfe, 0xf1, 0xfd, 0x58, 0xfe, 0x3e, 0xfe, 0x34, 0xfe, 0x2f, 0xfe, 0x81, 0xfe, 0x2b, 0xff, + 0xd6, 0xff, 0x0c, 0x00, 0xc8, 0x00, 0x6e, 0x02, 0x8c, 0x03, 0x31, 0x04, 0xe9, 0x04, 0x35, 0x06, + 0x05, 0x07, 0xfa, 0x06, 0xa0, 0x05, 0x65, 0x04, 0x3a, 0x02, 0x6d, 0x01, 0x08, 0x00, 0x16, 0xfe, + 0xc9, 0xfc, 0x30, 0xf8, 0xc7, 0xf6, 0x8c, 0xf6, 0x35, 0xf5, 0x52, 0xf5, 0x09, 0xf5, 0xa7, 0xf5, + 0xe3, 0xf6, 0x2b, 0xf7, 0x87, 0xf6, 0x2f, 0xf7, 0xc1, 0xf8, 0x3b, 0xfc, 0x1b, 0x00, 0x4e, 0x03, + 0x3d, 0x06, 0xbd, 0x08, 0x9a, 0x0a, 0x94, 0x0b, 0x71, 0x0c, 0xe5, 0x0d, 0x6f, 0x0e, 0x9c, 0x0e, + 0x2d, 0x0f, 0x17, 0x0f, 0x2f, 0x0f, 0xd8, 0x0d, 0x14, 0x0c, 0x69, 0x0c, 0x00, 0x0d, 0xe6, 0x0d, + 0x63, 0x0d, 0x7b, 0x0b, 0x54, 0x0a, 0x21, 0x09, 0xbd, 0x07, 0x95, 0x05, 0x16, 0x04, 0xf5, 0x00, + 0x05, 0xff, 0xd1, 0xfb, 0x05, 0xf7, 0xb0, 0xf4, 0xe2, 0xf0, 0x82, 0xef, 0x93, 0xed, 0x64, 0xec, + 0x4b, 0xec, 0xc8, 0xec, 0x12, 0xee, 0xb7, 0xef, 0xe2, 0xf0, 0x5d, 0xf2, 0xd2, 0xf3, 0x8a, 0xf5, + 0x73, 0xfa, 0x58, 0xfe, 0x34, 0x02, 0x53, 0x04, 0x34, 0x05, 0x69, 0x07, 0xfb, 0x08, 0xf5, 0x0a, + 0xb2, 0x0d, 0x33, 0x0e, 0x37, 0x0d, 0x8c, 0x0d, 0xda, 0x0d, 0x69, 0x0d, 0xe1, 0x0c, 0x65, 0x0b, + 0x93, 0x0c, 0x98, 0x0c, 0x39, 0x0b, 0x26, 0x0a, 0x7a, 0x08, 0x20, 0x08, 0xdf, 0x06, 0x44, 0x06, + 0xa9, 0x04, 0xc5, 0x03, 0x9f, 0x02, 0x8f, 0xff, 0x8a, 0xfc, 0x6c, 0xf9, 0xa5, 0xf6, 0xc0, 0xf2, + 0x0d, 0xf1, 0x77, 0xee, 0x6d, 0xec, 0x0c, 0xeb, 0x72, 0xe8, 0x34, 0xe8, 0x7a, 0xe9, 0x9d, 0xea, + 0xdc, 0xeb, 0x56, 0xec, 0xf5, 0xec, 0x26, 0xf0, 0x88, 0xf3, 0xcd, 0xf7, 0x18, 0xfb, 0x94, 0xfd, + 0xaf, 0x00, 0x16, 0x02, 0xf4, 0x02, 0x96, 0x04, 0x3a, 0x05, 0xc4, 0x06, 0xbe, 0x07, 0xdd, 0x08, + 0x3b, 0x0a, 0x2e, 0x0b, 0xd4, 0x0c, 0x59, 0x0e, 0x91, 0x0e, 0x80, 0x0f, 0xbe, 0x10, 0x16, 0x11, + 0x7f, 0x12, 0xe2, 0x12, 0x2f, 0x12, 0x41, 0x10, 0x71, 0x0d, 0xbd, 0x0a, 0xd8, 0x08, 0xad, 0x06, + 0x7c, 0x04, 0x25, 0x01, 0x34, 0xfc, 0xf4, 0xf8, 0xf1, 0xf5, 0x2c, 0xf4, 0x95, 0xf1, 0x5f, 0xf0, + 0x1f, 0xf0, 0x76, 0xf0, 0x81, 0xf0, 0xcb, 0xee, 0x68, 0xed, 0x84, 0xed, 0xcb, 0xef, 0x1e, 0xf2, + 0xc3, 0xf5, 0x5a, 0xf8, 0xa8, 0xfa, 0x3c, 0xfd, 0xba, 0xfd, 0x2c, 0xff, 0x1e, 0x01, 0x77, 0x02, + 0x15, 0x04, 0xcb, 0x04, 0x92, 0x05, 0x94, 0x06, 0xc3, 0x05, 0xbd, 0x05, 0x76, 0x06, 0xcc, 0x06, + 0x24, 0x09, 0x4e, 0x0a, 0x65, 0x0a, 0xe2, 0x09, 0x85, 0x09, 0xb9, 0x09, 0xf3, 0x08, 0xec, 0x08, + 0xe6, 0x07, 0x24, 0x07, 0x86, 0x04, 0x50, 0x00, 0x0e, 0xfd, 0x1b, 0xfa, 0xa3, 0xf8, 0x44, 0xf6, + 0xec, 0xf4, 0x4d, 0xf2, 0x71, 0xf1, 0x44, 0xf2, 0x59, 0xf2, 0x1f, 0xf3, 0xb8, 0xf2, 0x34, 0xf3, + 0x50, 0xf4, 0x03, 0xf7, 0x9f, 0xfa, 0x22, 0xfe, 0x28, 0x00, 0x87, 0x01, 0xdf, 0x02, 0x24, 0x04, + 0x66, 0x06, 0x70, 0x08, 0x34, 0x09, 0xcd, 0x08, 0xdd, 0x08, 0x77, 0x09, 0x2e, 0x0a, 0xa3, 0x0a, + 0x8c, 0x0a, 0x4d, 0x0a, 0x6d, 0x0a, 0x89, 0x0a, 0xaa, 0x09, 0xa1, 0x09, 0x26, 0x0a, 0xdc, 0x09, + 0x18, 0x0b, 0xf8, 0x09, 0xf5, 0x09, 0xf9, 0x09, 0x1d, 0x09, 0x6d, 0x07, 0x6f, 0x04, 0x37, 0x02, + 0x0a, 0xff, 0x66, 0xfd, 0xd9, 0xfa, 0xf6, 0xf8, 0x99, 0xf6, 0x8a, 0xf5, 0xe7, 0xf5, 0xea, 0xf5, + 0x6d, 0xf6, 0x58, 0xf6, 0x67, 0xf6, 0xd7, 0xf6, 0xae, 0xf7, 0x75, 0xfa, 0x75, 0xfd, 0xf5, 0xfe, + 0xd6, 0x00, 0x83, 0x01, 0x5b, 0x02, 0x11, 0x02, 0xb5, 0x01, 0x4e, 0x02, 0xed, 0x01, 0x1c, 0x02, + 0x71, 0x02, 0x4e, 0x02, 0x45, 0x02, 0xa0, 0x02, 0xbe, 0x02, 0x62, 0x02, 0x53, 0x03, 0x55, 0x03, + 0xe7, 0x03, 0x84, 0x04, 0x10, 0x04, 0x5f, 0x04, 0xc1, 0x03, 0x1b, 0x03, 0x59, 0x01, 0xb3, 0x00, + 0xc0, 0xff, 0x9c, 0xfd, 0x11, 0xfc, 0xab, 0xf9, 0xd7, 0xf6, 0xa3, 0xf5, 0xc0, 0xf4, 0x46, 0xf3, + 0xc3, 0xf3, 0x56, 0xf4, 0xa5, 0xf5, 0x2f, 0xf6, 0x6f, 0xf4, 0x7b, 0xf3, 0xb0, 0xf3, 0x13, 0xf5, + 0x9c, 0xf7, 0xae, 0xfa, 0x4a, 0xfd, 0x45, 0x01, 0xda, 0x04, 0x89, 0x06, 0xf5, 0x07, 0xe6, 0x08, + 0xaf, 0x0a, 0x3b, 0x0b, 0x07, 0x0c, 0x94, 0x0c, 0x57, 0x0c, 0xa3, 0x0c, 0x8b, 0x0b, 0xca, 0x0a, + 0xb1, 0x0a, 0x31, 0x0b, 0x02, 0x0c, 0x55, 0x0c, 0x15, 0x0b, 0xba, 0x09, 0x33, 0x09, 0xb8, 0x07, + 0x61, 0x07, 0x25, 0x06, 0x75, 0x05, 0x30, 0x04, 0x26, 0x01, 0x0c, 0xfe, 0x83, 0xfb, 0x31, 0xf9, + 0x30, 0xf6, 0xbc, 0xf3, 0x4f, 0xf0, 0xf1, 0xef, 0x8f, 0xf0, 0x88, 0xf1, 0xa5, 0xf1, 0x69, 0xf0, + 0x70, 0xf0, 0xa6, 0xf0, 0xb9, 0xf2, 0x25, 0xf5, 0x14, 0xf8, 0x23, 0xfa, 0x7d, 0xfb, 0xa9, 0xfc, + 0xc0, 0xfd, 0x8d, 0xff, 0x38, 0x01, 0x9b, 0x02, 0x51, 0x02, 0x6a, 0x02, 0x54, 0x03, 0x0a, 0x03, + 0xc6, 0x03, 0x29, 0x04, 0xeb, 0x04, 0x4b, 0x06, 0xf9, 0x05, 0xaf, 0x05, 0x12, 0x06, 0x7f, 0x05, + 0x57, 0x06, 0x78, 0x07, 0x1b, 0x07, 0x9f, 0x07, 0xad, 0x07, 0xf8, 0x08, 0x01, 0x08, 0x1e, 0x06, + 0x56, 0x05, 0xc6, 0x03, 0x33, 0x03, 0xa8, 0x01, 0x1e, 0xff, 0x80, 0xfc, 0x4b, 0xfb, 0xbe, 0xf9, + 0x0c, 0xf9, 0x16, 0xf9, 0xfb, 0xf7, 0xcc, 0xf7, 0x45, 0xf7, 0x8e, 0xf6, 0x8b, 0xf7, 0x96, 0xf8, + 0xe1, 0xfa, 0x9e, 0xfc, 0xea, 0xfc, 0x81, 0xfe, 0x08, 0xfe, 0xfa, 0xfc, 0x7b, 0xfc, 0xd2, 0xfb, + 0x98, 0xfc, 0x8c, 0xfc, 0x7d, 0xfc, 0xe6, 0xfc, 0x36, 0xfe, 0xde, 0xff, 0xaa, 0x00, 0xbe, 0x01, + 0x6e, 0x03, 0x2e, 0x05, 0x24, 0x06, 0x55, 0x08, 0xcb, 0x09, 0x2f, 0x0a, 0x78, 0x0a, 0x3a, 0x09, + 0xed, 0x0a, 0x5d, 0x0b, 0x73, 0x0a, 0x93, 0x0a, 0xa8, 0x08, 0x2c, 0x07, 0xb1, 0x05, 0x50, 0x04, + 0x0c, 0x03, 0x95, 0x02, 0xe5, 0x01, 0x4e, 0x02, 0xa7, 0x01, 0x6a, 0xff, 0x83, 0xfd, 0xf7, 0xfb, + 0x12, 0xfc, 0xce, 0xfc, 0xaf, 0xfd, 0x86, 0xfe, 0x00, 0x00, 0x02, 0x01, 0x60, 0x01, 0x80, 0x00, + 0x90, 0xff, 0xe5, 0xff, 0x72, 0xff, 0xa4, 0xff, 0xfc, 0xfd, 0xaa, 0xfc, 0x83, 0xfc, 0xf8, 0xfa, + 0xfb, 0xfa, 0x19, 0xfa, 0x70, 0xfa, 0x18, 0xfc, 0x73, 0xfc, 0x60, 0xfb, 0x6c, 0xfb, 0xe2, 0xfb, + 0xbe, 0xfb, 0xe2, 0xfc, 0x17, 0xfd, 0xe4, 0xfe, 0xeb, 0xfe, 0x3a, 0xfd, 0xbc, 0xfb, 0x48, 0xfa, + 0x9c, 0xfa, 0x82, 0xfa, 0xcf, 0xf9, 0xe3, 0xf8, 0x9b, 0xf8, 0x51, 0xfa, 0xe5, 0xfc, 0x27, 0xfd, + 0x73, 0xfd, 0x11, 0xfd, 0x42, 0xfd, 0x54, 0xff, 0xcc, 0x00, 0x91, 0x03, 0xa8, 0x05, 0x79, 0x06, + 0xf1, 0x06, 0x49, 0x07, 0xc7, 0x06, 0xcf, 0x06, 0x55, 0x07, 0x56, 0x06, 0x11, 0x06, 0xb4, 0x04, + 0x2c, 0x04, 0xb9, 0x04, 0x8b, 0x04, 0x81, 0x04, 0x02, 0x04, 0xac, 0x03, 0x12, 0x03, 0x12, 0x02, + 0xd5, 0x01, 0x94, 0x01, 0x1b, 0x01, 0x5c, 0x00, 0x90, 0xff, 0x56, 0x00, 0xae, 0x02, 0xcb, 0x01, + 0x48, 0x00, 0xa1, 0xff, 0x3f, 0xfe, 0xf3, 0xfd, 0x03, 0xfd, 0x01, 0xfb, 0xa9, 0xf9, 0x52, 0xf9, + 0xa3, 0xf9, 0xce, 0xfa, 0xb2, 0xfa, 0xdf, 0xfa, 0x07, 0xfb, 0x9b, 0xfa, 0x96, 0xfa, 0x67, 0xfa, + 0x34, 0xfc, 0x8c, 0xfd, 0x3c, 0xfe, 0x7c, 0xff, 0x31, 0x00, 0xea, 0x00, 0x7f, 0x00, 0xe5, 0xff, + 0xfc, 0xff, 0x1e, 0x00, 0x10, 0x00, 0xf2, 0xff, 0x9e, 0xff, 0x45, 0x00, 0x37, 0x01, 0x42, 0x01, + 0x85, 0x01, 0x94, 0x02, 0xc8, 0x02, 0x3d, 0x03, 0xfd, 0x04, 0xdb, 0x04, 0x64, 0x05, 0x49, 0x05, + 0xbf, 0x04, 0x32, 0x06, 0x8e, 0x04, 0x38, 0x03, 0xf3, 0x01, 0x28, 0x01, 0x51, 0x00, 0xb3, 0xfe, + 0x51, 0xfd, 0x3a, 0xfb, 0xa2, 0xfa, 0xfc, 0xfa, 0xab, 0xfb, 0xee, 0xfa, 0xb1, 0xf9, 0xd1, 0xf7, + 0x35, 0xf6, 0xe7, 0xf5, 0xa1, 0xf5, 0x06, 0xf7, 0x2a, 0xf8, 0xed, 0xf9, 0xe8, 0xfc, 0xeb, 0xfe, + 0x12, 0xff, 0xc1, 0xff, 0xda, 0x00, 0x4c, 0x02, 0xbf, 0x03, 0xd8, 0x03, 0x9a, 0x04, 0x1c, 0x05, + 0xff, 0x05, 0xdb, 0x05, 0xe5, 0x05, 0x45, 0x07, 0xcf, 0x08, 0x7d, 0x0a, 0x6c, 0x0a, 0xa9, 0x0a, + 0xdb, 0x0a, 0xb4, 0x0a, 0x03, 0x0b, 0xee, 0x0a, 0x40, 0x0c, 0x44, 0x0b, 0xd6, 0x09, 0x84, 0x07, + 0x19, 0x05, 0x89, 0x04, 0x35, 0x02, 0xf2, 0xff, 0xb2, 0xfc, 0xbc, 0xfa, 0x91, 0xfb, 0x4a, 0xfc, + 0xaf, 0xfb, 0x5b, 0xfa, 0x99, 0xf8, 0x15, 0xf8, 0x3f, 0xf8, 0x6b, 0xf8, 0x7f, 0xf9, 0xe9, 0xf9, + 0xf5, 0xf9, 0xe3, 0xfa, 0x00, 0xfb, 0xa2, 0xf9, 0x8d, 0xf9, 0x21, 0xfa, 0x71, 0xfa, 0x90, 0xfa, + 0xa0, 0xf9, 0x19, 0xfa, 0xd8, 0xfa, 0x05, 0xfc, 0xf8, 0xfc, 0x47, 0xfd, 0x1b, 0xff, 0x34, 0xff, + 0xb0, 0xff, 0x21, 0x00, 0xbe, 0x00, 0xf1, 0x01, 0x5b, 0x02, 0x29, 0x03, 0x65, 0x04, 0x93, 0x07, + 0x05, 0x08, 0x2c, 0x07, 0x7f, 0x06, 0x2b, 0x06, 0xd2, 0x06, 0x94, 0x06, 0x5c, 0x05, 0xfa, 0x02, + 0x20, 0x02, 0xc5, 0x02, 0x84, 0x02, 0x73, 0x01, 0x8b, 0x00, 0x2e, 0xff, 0xb7, 0xfe, 0x4f, 0xfd, + 0x13, 0xfc, 0x30, 0xfc, 0xeb, 0xfb, 0x1b, 0xfd, 0xa0, 0xfd, 0x3b, 0xfe, 0xfd, 0xfd, 0x94, 0xfc, + 0x41, 0xfb, 0xfc, 0xfa, 0xb0, 0xfa, 0x2b, 0xfa, 0x4b, 0xfa, 0x33, 0xf9, 0xc0, 0xf9, 0xe0, 0xfa, + 0x2d, 0xfb, 0xf1, 0xfb, 0x8f, 0xfc, 0xaf, 0xfd, 0x2f, 0xff, 0xf3, 0x00, 0x05, 0x02, 0x75, 0x02, + 0x1e, 0x03, 0x29, 0x04, 0xd7, 0x05, 0x54, 0x06, 0x61, 0x05, 0xa5, 0x04, 0x8a, 0x05, 0xdb, 0x04, + 0x33, 0x04, 0xbe, 0x02, 0x13, 0x01, 0x7a, 0x01, 0x89, 0x02, 0xc2, 0x03, 0xd9, 0x03, 0xb9, 0x03, + 0xcd, 0x01, 0x99, 0x00, 0x87, 0xff, 0x31, 0xff, 0x1e, 0x00, 0xf5, 0xff, 0x34, 0x01, 0xc3, 0x02, + 0xe0, 0x03, 0xa8, 0x03, 0x79, 0x02, 0x77, 0x02, 0x78, 0x02, 0xef, 0x02, 0x5b, 0x02, 0x2f, 0x01, + 0xa6, 0x00, 0x1d, 0x00, 0x0f, 0xff, 0xbe, 0xfe, 0x6a, 0xfe, 0xbc, 0xfd, 0xc5, 0xfe, 0x24, 0xfe, + 0xc4, 0xfd, 0x88, 0xfd, 0xb2, 0xfc, 0x94, 0xfc, 0xc4, 0xfc, 0x85, 0xfd, 0x73, 0xfd, 0x9e, 0xfc, + 0x02, 0xfa, 0x1a, 0xf9, 0x8d, 0xf8, 0x9b, 0xf7, 0x53, 0xf6, 0xf9, 0xf3, 0x93, 0xf3, 0x92, 0xf4, + 0x15, 0xf7, 0x23, 0xf8, 0x53, 0xf8, 0x8b, 0xf8, 0x97, 0xf8, 0xcc, 0xf9, 0xd4, 0xfa, 0x76, 0xfc, + 0x4c, 0xfe, 0xaa, 0x00, 0xec, 0x02, 0x86, 0x04, 0x45, 0x04, 0x3b, 0x04, 0x9b, 0x05, 0x70, 0x06, + 0x80, 0x06, 0xe0, 0x06, 0xea, 0x06, 0xdf, 0x07, 0xd8, 0x09, 0xa6, 0x09, 0xec, 0x09, 0x57, 0x0a, + 0x7b, 0x0a, 0x25, 0x0a, 0x42, 0x09, 0x91, 0x09, 0x91, 0x08, 0xae, 0x07, 0xd7, 0x06, 0x45, 0x06, + 0x9c, 0x08, 0x4a, 0x09, 0xdf, 0x07, 0x24, 0x06, 0x2e, 0x05, 0x21, 0x04, 0x5a, 0x03, 0xf5, 0x00, + 0xc4, 0xfd, 0x31, 0xfc, 0x92, 0xfb, 0xc9, 0xfb, 0x35, 0xfb, 0x6f, 0xf9, 0x40, 0xf8, 0x76, 0xf7, + 0x8a, 0xf6, 0xd6, 0xf5, 0x3c, 0xf5, 0xd0, 0xf5, 0x8c, 0xf6, 0x48, 0xf7, 0xa1, 0xf8, 0xc6, 0xf8, + 0x5d, 0xf9, 0x55, 0xf9, 0xb1, 0xf9, 0x0c, 0xfa, 0xd7, 0xf9, 0xab, 0xfa, 0xc5, 0xfa, 0x68, 0xfb, + 0xbb, 0xfc, 0x1d, 0xfe, 0xd5, 0xfe, 0xaa, 0x00, 0x51, 0x02, 0xda, 0x02, 0x01, 0x05, 0x8c, 0x05, + 0xff, 0x05, 0xa6, 0x07, 0xe9, 0x08, 0x06, 0x0b, 0x1f, 0x0b, 0xd3, 0x09, 0x2e, 0x08, 0xf6, 0x07, + 0xe3, 0x07, 0x47, 0x07, 0x41, 0x05, 0xda, 0x02, 0xed, 0x01, 0xc7, 0x01, 0x4c, 0x02, 0x38, 0x02, + 0xca, 0x01, 0xb5, 0xff, 0x43, 0xfd, 0x4f, 0xfb, 0xe8, 0xf9, 0xaa, 0xf9, 0xb7, 0xf9, 0xff, 0xf9, + 0xd9, 0xfa, 0x7d, 0xfd, 0x1d, 0xfd, 0x16, 0xfd, 0xc2, 0xfd, 0x72, 0xfd, 0x86, 0xfe, 0x34, 0xfe, + 0x4a, 0xfe, 0x6f, 0xfe, 0xbe, 0xfe, 0x19, 0xff, 0x42, 0xff, 0x4b, 0xff, 0xdf, 0xff, 0xe1, 0x01, + 0xc2, 0x02, 0xc7, 0x03, 0xca, 0x03, 0xae, 0x03, 0x5d, 0x04, 0x07, 0x05, 0x4f, 0x07, 0xa7, 0x07, + 0x9d, 0x07, 0x04, 0x07, 0x87, 0x05, 0xc6, 0x04, 0xdc, 0x03, 0xc1, 0x01, 0xa4, 0xff, 0xf5, 0xfd, + 0xe3, 0xfd, 0x9e, 0xff, 0x28, 0x00, 0x77, 0x00, 0x75, 0xff, 0x6a, 0xfe, 0xc6, 0xfe, 0xa7, 0xfe, + 0x74, 0xfe, 0x6b, 0xff, 0x3d, 0x00, 0x14, 0x01, 0xfb, 0x01, 0x6a, 0x00, 0x2c, 0xff, 0xf6, 0xfe, + 0xb9, 0xfe, 0x49, 0xfe, 0x17, 0xfd, 0x6a, 0xfc, 0x55, 0xfc, 0x34, 0xfc, 0x66, 0xfc, 0xfc, 0xfb, + 0xbb, 0xfb, 0x5e, 0xfc, 0xa3, 0xfb, 0x5f, 0xfb, 0x2b, 0xfb, 0xe7, 0xf9, 0x6f, 0xfa, 0x28, 0xfa, + 0x9f, 0xfa, 0x7b, 0xfd, 0x64, 0xff, 0x97, 0xff, 0x77, 0xff, 0xcf, 0xff, 0x3b, 0x00, 0x1b, 0x01, + 0x50, 0x00, 0xc2, 0xfe, 0x37, 0xfe, 0xc7, 0xfe, 0x48, 0x00, 0x63, 0x00, 0x2c, 0x00, 0xa7, 0xff, + 0x17, 0xff, 0xf0, 0xfe, 0x5b, 0xfe, 0x08, 0xfe, 0x39, 0xfe, 0xa7, 0xff, 0x5c, 0x01, 0x0a, 0x02, + 0x2e, 0x02, 0x40, 0x03, 0xa0, 0x02, 0x33, 0x02, 0xbb, 0x01, 0x67, 0x00, 0x8f, 0x00, 0xde, 0x00, + 0x38, 0x00, 0x5d, 0x00, 0x5c, 0x01, 0xf2, 0x00, 0x42, 0x02, 0xdd, 0x02, 0x21, 0x03, 0xc4, 0x04, + 0xea, 0x03, 0xd8, 0x04, 0x17, 0x05, 0x5b, 0x05, 0x27, 0x07, 0x00, 0x07, 0x21, 0x06, 0x96, 0x03, + 0x15, 0x03, 0x7b, 0x02, 0xd8, 0x00, 0x7d, 0xfe, 0x1f, 0xfc, 0x74, 0xfa, 0x7b, 0xfa, 0x82, 0xfb, + 0x7d, 0xfb, 0x84, 0xfc, 0x56, 0xfb, 0x31, 0xfa, 0x2b, 0xf9, 0xf1, 0xf7, 0x03, 0xf8, 0xf7, 0xf8, + 0xb0, 0xf9, 0xbc, 0xfb, 0x10, 0xfe, 0x5b, 0xfe, 0x30, 0x00, 0x39, 0x01, 0xb6, 0x01, 0x24, 0x03, + 0x9d, 0x03, 0xc6, 0x03, 0xb6, 0x03, 0x9d, 0x04, 0xdd, 0x04, 0xd2, 0x04, 0x75, 0x04, 0x3c, 0x04, + 0x8f, 0x04, 0x25, 0x05, 0x72, 0x05, 0x1f, 0x04, 0x52, 0x04, 0x10, 0x04, 0x0f, 0x04, 0x85, 0x05, + 0xbe, 0x04, 0x99, 0x04, 0x8c, 0x03, 0xe5, 0x01, 0x24, 0x01, 0x9d, 0xfe, 0xbe, 0xfc, 0xe5, 0xfa, + 0x20, 0xf8, 0x3d, 0xf7, 0xca, 0xf7, 0x7b, 0xf8, 0x7a, 0xf8, 0xb2, 0xf7, 0xf8, 0xf6, 0xb2, 0xf6, + 0x7a, 0xf6, 0x59, 0xf6, 0x40, 0xf7, 0xfb, 0xf8, 0x3d, 0xfb, 0xda, 0xfc, 0x13, 0xfd, 0x76, 0xfd, + 0xa8, 0xfd, 0xef, 0xfe, 0x67, 0xff, 0xe4, 0xff, 0xb7, 0x00, 0x25, 0x01, 0x1e, 0x03, 0xb8, 0x04, + 0xd0, 0x04, 0xa7, 0x05, 0x5b, 0x07, 0x0a, 0x08, 0x76, 0x08, 0xf6, 0x08, 0x33, 0x08, 0x2d, 0x08, + 0x16, 0x08, 0x40, 0x08, 0x0e, 0x0a, 0xf2, 0x0b, 0xe4, 0x0c, 0x38, 0x0c, 0xed, 0x0b, 0x5c, 0x0b, + 0x1f, 0x0a, 0x9f, 0x08, 0x58, 0x06, 0xb8, 0x03, 0xf8, 0x02, 0xd0, 0x02, 0x8d, 0x02, 0xa6, 0x01, + 0xe3, 0xfe, 0x52, 0xfe, 0x93, 0xfc, 0x84, 0xfa, 0x37, 0xf9, 0x8f, 0xf8, 0x46, 0xf9, 0x0f, 0xf9, + 0xf6, 0xf8, 0x28, 0xf8, 0x99, 0xf7, 0xa6, 0xf7, 0xdb, 0xf6, 0x1c, 0xf6, 0x84, 0xf4, 0x67, 0xf4, + 0xe2, 0xf3, 0xe9, 0xf3, 0x31, 0xf4, 0x06, 0xf5, 0xf8, 0xf4, 0xa1, 0xf6, 0xad, 0xf8, 0xc7, 0xf9, + 0xe7, 0xfb, 0xc8, 0xfc, 0xb1, 0xfd, 0x12, 0xff, 0x7f, 0x02, 0x46, 0x05, 0xf3, 0x06, 0x84, 0x07, + 0x3c, 0x06, 0x19, 0x06, 0x11, 0x06, 0x56, 0x06, 0x6b, 0x05, 0x64, 0x03, 0x23, 0x02, 0x80, 0x02, + 0x7b, 0x03, 0x97, 0x03, 0x5b, 0x04, 0x5e, 0x03, 0x49, 0x03, 0xe7, 0x01, 0x3b, 0xff, 0x91, 0xfe, + 0x26, 0xfe, 0x2b, 0xfe, 0x8c, 0xfe, 0x92, 0xff, 0x6d, 0x00, 0x6e, 0x01, 0xb5, 0x02, 0x14, 0x03, + 0xc8, 0x02, 0xe2, 0x02, 0x98, 0x02, 0xf9, 0x02, 0x4d, 0x03, 0x30, 0x03, 0xfa, 0x02, 0xe6, 0x01, + 0x33, 0x01, 0x8f, 0x01, 0xd1, 0x02, 0xdf, 0x02, 0xf2, 0x01, 0x17, 0x01, 0xcd, 0x00, 0x77, 0x01, + 0xa2, 0x02, 0x7e, 0x02, 0x39, 0x02, 0x6b, 0x02, 0xe8, 0x01, 0xdc, 0xff, 0xd5, 0xfd, 0x2b, 0xfc, + 0x14, 0xfa, 0x1e, 0xf8, 0xf8, 0xf7, 0xe9, 0xf8, 0xf1, 0xf9, 0x06, 0xfb, 0x15, 0xfb, 0xb0, 0xfa, + 0x46, 0xfa, 0x4e, 0xfa, 0xf5, 0xf9, 0x6a, 0xfb, 0x92, 0xfd, 0x7f, 0xff, 0xdb, 0x00, 0x7d, 0x01, + 0x2f, 0x01, 0x19, 0x01, 0xc0, 0x02, 0x8d, 0x02, 0xf6, 0x02, 0x04, 0x02, 0x6d, 0x01, 0x4c, 0x02, + 0x84, 0x02, 0xb6, 0x02, 0xfe, 0x01, 0x8a, 0x03, 0x48, 0x04, 0x76, 0x04, 0x26, 0x04, 0x2a, 0x02, + 0x69, 0x02, 0x73, 0x02, 0x37, 0x02, 0x21, 0x03, 0xcb, 0x04, 0x50, 0x05, 0x95, 0x05, 0x8d, 0x05, + 0xd8, 0x04, 0x93, 0x04, 0xa0, 0x03, 0x39, 0x02, 0x67, 0x00, 0xa7, 0xff, 0xb3, 0xff, 0xc3, 0xff, + 0x70, 0xfe, 0x91, 0xfc, 0xe2, 0xfb, 0x6f, 0xfa, 0x30, 0xf9, 0xbe, 0xf7, 0x62, 0xf7, 0x0d, 0xf8, + 0x7c, 0xf9, 0x5b, 0xfa, 0x1c, 0xfa, 0x9b, 0xfb, 0x0f, 0xfc, 0x82, 0xfc, 0x2b, 0xfc, 0x1d, 0xfb, + 0x8a, 0xfa, 0x4f, 0xfb, 0x91, 0xfc, 0xd5, 0xfc, 0xce, 0xfd, 0x24, 0xfe, 0xf9, 0xff, 0x66, 0x02, + 0xfa, 0x03, 0x59, 0x05, 0x6b, 0x05, 0x8c, 0x05, 0x65, 0x06, 0xc8, 0x07, 0x54, 0x09, 0xa8, 0x0a, + 0x46, 0x0a, 0x2f, 0x09, 0x91, 0x08, 0x9f, 0x07, 0x57, 0x06, 0xad, 0x03, 0x09, 0x01, 0x22, 0xff, + 0x42, 0xfe, 0x30, 0xfe, 0xbf, 0xfd, 0xaf, 0xfd, 0x6b, 0xfd, 0xc4, 0xfc, 0xad, 0xfa, 0x0d, 0xf9, + 0xed, 0xf7, 0x98, 0xf8, 0xf5, 0xf8, 0xb3, 0xf8, 0x37, 0xfa, 0xb4, 0xfa, 0x1d, 0xfc, 0xa9, 0xfd, + 0x33, 0xfe, 0x80, 0xfe, 0x68, 0xff, 0x83, 0xff, 0x8a, 0xff, 0xa4, 0x00, 0x26, 0x01, 0x4c, 0x01, + 0x3f, 0x00, 0xe5, 0xff, 0x22, 0xff, 0x5a, 0xff, 0xde, 0xff, 0x6b, 0xfe, 0x7d, 0xfd, 0xea, 0xfd, + 0x76, 0xfe, 0x7a, 0xff, 0x17, 0x00, 0xe4, 0xff, 0x74, 0x00, 0xad, 0x00, 0x3f, 0x00, 0x1d, 0xff, + 0x9e, 0xfc, 0x8b, 0xfb, 0x43, 0xfa, 0x2c, 0xf9, 0x7d, 0xf9, 0x39, 0xfa, 0x42, 0xfb, 0x2a, 0xfc, + 0xc6, 0xfc, 0x60, 0xfc, 0x07, 0xfb, 0x87, 0xfa, 0xfc, 0xfb, 0x27, 0xfd, 0x4a, 0xff, 0xc3, 0x00, + 0x57, 0x01, 0x5c, 0x01, 0xf3, 0x00, 0xdf, 0x00, 0xe7, 0x00, 0x19, 0x01, 0x6b, 0x00, 0xc9, 0x00, + 0x16, 0x01, 0x35, 0x02, 0xf8, 0x01, 0x31, 0x00, 0x21, 0x02, 0x2e, 0x03, 0xdd, 0x03, 0x68, 0x04, + 0x15, 0x03, 0x0b, 0x03, 0x60, 0x03, 0xc9, 0x03, 0x00, 0x05, 0x18, 0x07, 0x2a, 0x08, 0x9d, 0x09, + 0xe6, 0x09, 0xb9, 0x09, 0xfa, 0x09, 0x48, 0x08, 0xfb, 0x06, 0x51, 0x05, 0x94, 0x04, 0xbc, 0x04, + 0x92, 0x04, 0x0d, 0x04, 0x8d, 0x02, 0x69, 0x01, 0x88, 0x00, 0x6f, 0xfe, 0xfe, 0xfc, 0x19, 0xfd, + 0xd3, 0xfc, 0xe8, 0xfd, 0x01, 0xfe, 0x25, 0xfd, 0xa1, 0xfd, 0x80, 0xfe, 0x39, 0xff, 0x91, 0xfe, + 0x0d, 0xfd, 0x7b, 0xfb, 0x1f, 0xfc, 0x95, 0xfc, 0x72, 0xfc, 0xc8, 0xfc, 0x08, 0xfc, 0xa6, 0xfd, + 0x19, 0xff, 0x39, 0x00, 0xd0, 0x00, 0x64, 0x00, 0x0f, 0x01, 0xa9, 0x01, 0xb3, 0x03, 0xb4, 0x05, + 0x3b, 0x06, 0x4d, 0x06, 0x4b, 0x05, 0x11, 0x04, 0xa4, 0x03, 0x50, 0x03, 0x98, 0x02, 0xd2, 0x00, + 0xa9, 0xfe, 0x56, 0xfe, 0xc9, 0xfe, 0x42, 0xfe, 0xce, 0xfe, 0x45, 0xff, 0xdd, 0xfe, 0x92, 0xfe, + 0x35, 0xfc, 0x2b, 0xfa, 0x60, 0xfa, 0x21, 0xfa, 0xce, 0xfa, 0xea, 0xfb, 0x83, 0xfd, 0x8e, 0xff, + 0xfa, 0x00, 0xa3, 0x02, 0xa6, 0x02, 0x09, 0x03, 0x18, 0x03, 0xb3, 0x03, 0xad, 0x04, 0xb5, 0x05, + 0xfc, 0x05, 0x0f, 0x05, 0xa4, 0x04, 0x58, 0x04, 0xa1, 0x05, 0xff, 0x05, 0x77, 0x04, 0xb1, 0x03, + 0x42, 0x03, 0x3a, 0x03, 0x3c, 0x04, 0x18, 0x04, 0x97, 0x03, 0x80, 0x04, 0x9f, 0x04, 0x06, 0x04, + 0x6b, 0x02, 0xc4, 0xff, 0xfd, 0xfd, 0xe5, 0xfb, 0x9f, 0xfa, 0xe1, 0xf9, 0xb8, 0xf9, 0xd0, 0xf9, + 0x7f, 0xfa, 0xe2, 0xfa, 0xbb, 0xf9, 0xe0, 0xf8, 0x6f, 0xf8, 0xfe, 0xf8, 0xc4, 0xf9, 0x69, 0xfb, + 0xa7, 0xfc, 0xce, 0xfd, 0x6e, 0xfe, 0x3c, 0xfd, 0x60, 0xfd, 0xd3, 0xfd, 0x27, 0xfd, 0xb3, 0xfc, + 0x5e, 0xfc, 0x3b, 0xfc, 0xb7, 0xfd, 0x29, 0xfe, 0x73, 0xfd, 0x34, 0xfe, 0x44, 0xff, 0xc0, 0x00, + 0xda, 0x00, 0x67, 0xff, 0x9c, 0xfe, 0x0a, 0xff, 0x9c, 0xff, 0xe2, 0xff, 0x93, 0x01, 0x77, 0x02, + 0x04, 0x04, 0x31, 0x05, 0x27, 0x05, 0x2d, 0x05, 0x5b, 0x04, 0x46, 0x03, 0xa8, 0x01, 0xb4, 0x01, + 0x5b, 0x01, 0xf5, 0x00, 0xd4, 0x00, 0xdb, 0xff, 0xfb, 0xfe, 0x8c, 0xfd, 0xf6, 0xfb, 0xe0, 0xfa, + 0x5c, 0xfa, 0x9b, 0xf9, 0xb9, 0xfa, 0x7d, 0xfb, 0xfc, 0xfa, 0xd3, 0xfb, 0xa3, 0xfc, 0x1b, 0xfe, + 0x46, 0xfe, 0x7f, 0xfd, 0x70, 0xfc, 0xb7, 0xfc, 0x44, 0xfd, 0xdc, 0xfd, 0x35, 0xfd, 0x44, 0xfd, + 0xc4, 0xfe, 0x26, 0x00, 0x9f, 0x02, 0x9e, 0x03, 0xb1, 0x03, 0x2a, 0x04, 0x7a, 0x04, 0x08, 0x06, + 0xa3, 0x07, 0x33, 0x09, 0x7b, 0x0a, 0x31, 0x0a, 0x03, 0x09, 0x7b, 0x08, 0xf7, 0x07, 0xd2, 0x06, + 0xcf, 0x04, 0xfa, 0x01, 0x43, 0x01, 0xfe, 0x00, 0x47, 0x00, 0x59, 0x00, 0xbc, 0x00, 0xb6, 0x00, + 0x35, 0x00, 0x46, 0xfe, 0x24, 0xfc, 0xb7, 0xfb, 0x3e, 0xfb, 0x86, 0xfb, 0x25, 0xfc, 0xa3, 0xfc, + 0x4f, 0xfd, 0x0f, 0xff, 0x7b, 0x00, 0x10, 0x00, 0xce, 0x00, 0x5c, 0x00, 0x76, 0x00, 0x8c, 0x01, + 0xe1, 0x02, 0x83, 0x03, 0xc6, 0x02, 0x80, 0x02, 0xa9, 0x01, 0x44, 0x02, 0x52, 0x01, 0x7f, 0x00, + 0x23, 0x00, 0x53, 0xff, 0x39, 0x00, 0x20, 0x00, 0x8b, 0x00, 0x43, 0x01, 0xb6, 0x00, 0xc3, 0x01, + 0x90, 0x02, 0x3b, 0x02, 0x0b, 0xfe, 0xfc, 0xfa, 0x7e, 0xfb, 0xed, 0xf8, 0xb6, 0xf8, 0x04, 0xfa, + 0x50, 0xf9, 0xa5, 0xfa, 0x12, 0xfc, 0xa6, 0xfc, 0xb2, 0xfb, 0x83, 0xf9, 0x36, 0xfa, 0x45, 0xfc, + 0x11, 0xfe, 0x50, 0xff, 0x9a, 0x00, 0x1c, 0x01, 0x8a, 0x00, 0x7b, 0xfe, 0xcd, 0xff, 0x2b, 0x00, + 0x3b, 0xfe, 0x41, 0x00, 0x18, 0xff, 0x2c, 0x00, 0x8a, 0x02, 0x10, 0x00, 0xd1, 0x00, 0xaf, 0x02, + 0x31, 0x03, 0x8f, 0x03, 0x0f, 0x02, 0x8c, 0x00, 0x8e, 0x01, 0x2e, 0x01, 0xcb, 0x01, 0x8e, 0x01, + 0x4e, 0x01, 0x67, 0x04, 0x08, 0x06, 0xba, 0x05, 0xfb, 0x05, 0x4a, 0x05, 0xa7, 0x01, 0x11, 0x02, + 0x58, 0x05, 0x5a, 0x02, 0x1a, 0x01, 0x93, 0x00, 0x33, 0xff, 0x45, 0xfd, 0x31, 0xfc, 0xa0, 0xfa, + 0x61, 0xf9, 0x14, 0xfa, 0xcf, 0xfa, 0x2a, 0xf9, 0x0c, 0xf8, 0x27, 0xf9, 0xce, 0xf8, 0x8f, 0xfb, + 0x90, 0xfb, 0xa5, 0xfa, 0x34, 0xfd, 0x79, 0xfb, 0xdf, 0xfd, 0xb8, 0xfe, 0xb1, 0xfb, 0x1d, 0xfa, + 0xe6, 0xf8, 0xcc, 0xfb, 0xb0, 0xfe, 0x8a, 0x00, 0xf6, 0x01, 0x84, 0x02, 0x54, 0x04, 0xbd, 0x04, + 0x57, 0x03, 0xeb, 0x04, 0x05, 0x05, 0xa0, 0x02, 0x21, 0x03, 0x4a, 0x03, 0xcf, 0x04, 0xe5, 0x08, + 0x61, 0x07, 0x94, 0x06, 0x01, 0x03, 0xc0, 0x01, 0x0b, 0x01, 0xe5, 0xfd, 0x12, 0xfe, 0xaf, 0x00, + 0xd5, 0xfe, 0x5e, 0xfe, 0xaa, 0xfc, 0x2f, 0xfb, 0x02, 0xfc, 0xb7, 0xf9, 0x2c, 0xf7, 0xa4, 0xf4, + 0x74, 0xf8, 0x90, 0xfb, 0xf0, 0xfa, 0x2d, 0xfa, 0x77, 0xfa, 0x8e, 0xf8, 0x54, 0xf6, 0x62, 0xf7, + 0xfc, 0xfa, 0xd5, 0xfa, 0xb5, 0xfa, 0x0d, 0xfc, 0x8d, 0xfe, 0xdf, 0xff, 0xd5, 0xfd, 0x27, 0xff, + 0xae, 0x01, 0xc7, 0x04, 0xe7, 0x07, 0xa5, 0x08, 0xdf, 0x09, 0x4a, 0x10, 0x8d, 0x13, 0x2c, 0x13, + 0xc6, 0x15, 0x87, 0x1a, 0x05, 0x1c, 0x56, 0x1a, 0x5c, 0x19, 0x92, 0x18, 0x41, 0x18, 0xa3, 0x18, + 0xb0, 0x16, 0xaa, 0x14, 0x3e, 0x18, 0xf8, 0x17, 0xe7, 0x11, 0x02, 0x0e, 0x37, 0x0b, 0xee, 0x09, + 0x7b, 0x06, 0x99, 0x03, 0x15, 0x00, 0x3d, 0xfe, 0x22, 0xfd, 0xec, 0xfa, 0xb1, 0xf8, 0x22, 0xf7, + 0xd6, 0xf2, 0x8f, 0xef, 0x27, 0xee, 0xea, 0xe7, 0x15, 0xe7, 0xdf, 0xe5, 0x99, 0xe2, 0xe7, 0xe3, + 0xbb, 0xdf, 0xa7, 0xdd, 0x03, 0xe0, 0xa1, 0xe0, 0x2a, 0xe1, 0x2c, 0xe2, 0x0f, 0xe3, 0x7c, 0xe4, + 0x36, 0xe8, 0x08, 0xed, 0xb8, 0xf0, 0xea, 0xf4, 0xe2, 0xf8, 0x5d, 0xfb, 0x20, 0xfe, 0xbe, 0xff, + 0xa6, 0xfe, 0xae, 0x00, 0x9c, 0x01, 0x1b, 0x00, 0x1b, 0x01, 0x73, 0x04, 0xe8, 0x04, 0xb0, 0x04, + 0x6a, 0x04, 0xa9, 0x05, 0xfd, 0x09, 0x13, 0x0d, 0x7a, 0x0b, 0x21, 0x0d, 0x51, 0x0f, 0x03, 0x0e, + 0x66, 0x0f, 0x3d, 0x12, 0x7c, 0x10, 0xef, 0x09, 0x8a, 0x04, 0xc1, 0x01, 0xc5, 0xfc, 0x08, 0xfa, + 0x1d, 0xf7, 0xc3, 0xf7, 0x39, 0xf8, 0x73, 0xf6, 0x53, 0xf5, 0x08, 0xf8, 0xf6, 0xf9, 0xa1, 0xfb, + 0xc2, 0xfe, 0x90, 0x02, 0xe6, 0x07, 0xff, 0x0b, 0x87, 0x0f, 0x99, 0x12, 0x0d, 0x15, 0x33, 0x16, + 0x8d, 0x19, 0x40, 0x1b, 0x60, 0x17, 0x59, 0x10, 0x45, 0x15, 0xaa, 0x16, 0x17, 0x12, 0x98, 0x12, + 0x4e, 0x12, 0xdc, 0x10, 0xf2, 0x10, 0xcd, 0x12, 0x62, 0x11, 0x7c, 0x13, 0x5f, 0x13, 0xc7, 0x11, + 0x72, 0x12, 0xb1, 0x10, 0xd6, 0x0e, 0xdd, 0x0c, 0x33, 0x0c, 0xd1, 0x0b, 0xdd, 0x03, 0x95, 0xfe, + 0x90, 0xf8, 0x20, 0xf1, 0xd4, 0xeb, 0x73, 0xe6, 0x4d, 0xe4, 0xc9, 0xe1, 0xa7, 0xde, 0x15, 0xdc, + 0xea, 0xda, 0xf6, 0xdb, 0x14, 0xdc, 0x41, 0xe0, 0x12, 0xe3, 0x2b, 0xe8, 0xac, 0xed, 0x5e, 0xef, + 0x30, 0xf5, 0x7a, 0xf7, 0xff, 0xfa, 0x1b, 0xfd, 0xce, 0xfd, 0xab, 0xf8, 0x2d, 0xf5, 0x11, 0xfb, + 0xa9, 0xfa, 0x12, 0xf6, 0xca, 0xf7, 0x36, 0xfb, 0xe9, 0xfc, 0xc9, 0x00, 0x4e, 0x03, 0xce, 0x07, + 0x4f, 0x0e, 0x9a, 0x0f, 0x45, 0x12, 0xd2, 0x13, 0x51, 0x15, 0x8c, 0x14, 0x46, 0x15, 0xc4, 0x15, + 0x90, 0x11, 0xb3, 0x0b, 0x05, 0x02, 0xe5, 0xfc, 0x1a, 0xf7, 0xde, 0xf1, 0x34, 0xf0, 0xbe, 0xed, + 0x12, 0xec, 0x17, 0xe9, 0x28, 0xe8, 0x3e, 0xea, 0x5c, 0xec, 0x37, 0xee, 0xa4, 0xf1, 0x18, 0xf5, + 0x07, 0xf9, 0x21, 0xff, 0x69, 0x03, 0x5e, 0x07, 0x34, 0x0a, 0x90, 0x0c, 0xf7, 0x12, 0x79, 0x12, + 0x3c, 0x0e, 0xf7, 0x0b, 0x33, 0x0e, 0x82, 0x0b, 0xfc, 0x08, 0x82, 0x09, 0x87, 0x09, 0xb9, 0x09, + 0xf3, 0x06, 0x16, 0x06, 0x83, 0x0a, 0x52, 0x0e, 0xa8, 0x0f, 0x3c, 0x0e, 0xf1, 0x10, 0xb8, 0x10, + 0xb3, 0x0c, 0xe7, 0x0c, 0x6b, 0x0e, 0xe3, 0x08, 0xa2, 0x00, 0x10, 0xf8, 0xf3, 0xf0, 0x41, 0xeb, + 0x7b, 0xe4, 0x2f, 0xdf, 0x12, 0xdc, 0x62, 0xd8, 0x43, 0xd4, 0x06, 0xd5, 0x93, 0xd8, 0x02, 0xd9, + 0xe6, 0xdd, 0xcf, 0xe3, 0xeb, 0xea, 0x8a, 0xf2, 0xa2, 0xf5, 0x58, 0xfb, 0x15, 0x00, 0xe2, 0x00, + 0x79, 0x05, 0x6e, 0x0a, 0x87, 0x09, 0xfe, 0x03, 0xca, 0x04, 0xc5, 0x05, 0xfb, 0x05, 0x72, 0x04, + 0x02, 0x04, 0xd8, 0x07, 0x82, 0x08, 0xca, 0x07, 0xaf, 0x08, 0xf3, 0x0b, 0xfd, 0x0e, 0x3b, 0x0f, + 0x26, 0x0f, 0x1a, 0x10, 0x4c, 0x13, 0x2f, 0x11, 0x75, 0x13, 0xcf, 0x14, 0xd2, 0x11, 0x3a, 0x0d, + 0x65, 0x09, 0x34, 0x04, 0xf5, 0xfc, 0xf9, 0xf9, 0xc0, 0xf5, 0xb0, 0xf5, 0x18, 0xf1, 0x48, 0xed, + 0x43, 0xee, 0x77, 0xec, 0x78, 0xf2, 0xc6, 0xf5, 0x5d, 0xfb, 0x76, 0x00, 0xbd, 0x03, 0xb1, 0x08, + 0xcb, 0x0d, 0x1b, 0x13, 0x07, 0x14, 0x1d, 0x18, 0xb2, 0x1a, 0x24, 0x15, 0xf0, 0x10, 0xcd, 0x0f, + 0x90, 0x0f, 0xa3, 0x0c, 0xd3, 0x08, 0x70, 0x07, 0x72, 0x09, 0x29, 0x09, 0xf6, 0x09, 0xb6, 0x0a, + 0x80, 0x10, 0xc1, 0x13, 0xc8, 0x15, 0xfc, 0x16, 0x63, 0x16, 0x6d, 0x15, 0xc1, 0x14, 0xd9, 0x10, + 0x5d, 0x0f, 0x21, 0x0b, 0x60, 0x02, 0x8a, 0xfc, 0x58, 0xf8, 0x2c, 0xf3, 0x72, 0xeb, 0xf1, 0xe7, + 0x91, 0xe5, 0x29, 0xdf, 0x9d, 0xdb, 0x2c, 0xda, 0x44, 0xdd, 0x22, 0xdf, 0x38, 0xe0, 0xe7, 0xe5, + 0x08, 0xea, 0x40, 0xef, 0x3c, 0xf7, 0xc6, 0xfc, 0xff, 0x01, 0xd7, 0x09, 0x5e, 0x10, 0x67, 0x13, + 0xe0, 0x11, 0xef, 0x10, 0x77, 0x10, 0xf0, 0x10, 0x59, 0x0f, 0x6d, 0x0c, 0xe7, 0x0d, 0x80, 0x0f, + 0xc2, 0x11, 0x57, 0x10, 0x11, 0x11, 0x9b, 0x16, 0x45, 0x18, 0x40, 0x1a, 0x84, 0x1b, 0x31, 0x1c, + 0x80, 0x1c, 0xd4, 0x17, 0xd6, 0x18, 0xb1, 0x1a, 0xf2, 0x14, 0xb5, 0x0d, 0xde, 0x05, 0xff, 0xfe, + 0xe9, 0xf5, 0xea, 0xed, 0x18, 0xe7, 0xc8, 0xe0, 0xde, 0xdb, 0x62, 0xd7, 0xc5, 0xd3, 0x0f, 0xd4, + 0x0e, 0xd4, 0xd4, 0xd6, 0x2b, 0xdc, 0x1e, 0xe2, 0x75, 0xe4, 0x57, 0xea, 0x8c, 0xf1, 0x8b, 0xf3, + 0x89, 0xf7, 0x8c, 0xfc, 0x63, 0xfe, 0x07, 0xfb, 0x54, 0xf4, 0x34, 0xf4, 0x29, 0xf4, 0x16, 0xf5, + 0x72, 0xf4, 0xac, 0xf3, 0x8a, 0xf8, 0xc1, 0xf9, 0xfe, 0xf9, 0x93, 0xfe, 0xab, 0x02, 0xe1, 0x02, + 0x68, 0x04, 0x6e, 0x07, 0x93, 0x09, 0x5f, 0x08, 0x1d, 0x06, 0xa2, 0x0a, 0x25, 0x0c, 0x91, 0x0b, + 0xbe, 0x07, 0x79, 0x05, 0x3c, 0xff, 0xea, 0xf8, 0x51, 0xf2, 0xfe, 0xec, 0xb4, 0xeb, 0x51, 0xe7, + 0xe8, 0xe2, 0x3d, 0xe2, 0x92, 0xe1, 0x9c, 0xe3, 0x2a, 0xe7, 0xcf, 0xed, 0x80, 0xf6, 0x1c, 0xf8, + 0x5e, 0x00, 0xce, 0x06, 0xdc, 0x06, 0x46, 0x0b, 0xf5, 0x0d, 0xd0, 0x0e, 0xac, 0x08, 0xdb, 0x01, + 0xf2, 0x04, 0x46, 0x07, 0xd2, 0x03, 0x0c, 0x01, 0x7b, 0x01, 0x36, 0x04, 0x0c, 0x04, 0xca, 0x05, + 0x03, 0x09, 0x68, 0x07, 0x38, 0x0b, 0xd3, 0x0c, 0x91, 0x0d, 0xed, 0x12, 0x50, 0x12, 0x46, 0x14, + 0x8b, 0x16, 0x06, 0x19, 0x5b, 0x15, 0xf0, 0x0e, 0x77, 0x09, 0xd5, 0x03, 0xd8, 0xfc, 0x95, 0xf6, + 0x8c, 0xf4, 0x14, 0xf2, 0xb4, 0xec, 0xba, 0xea, 0xc9, 0xe9, 0xa2, 0xed, 0xf3, 0xf1, 0xa9, 0xf4, + 0xb1, 0xfa, 0xa8, 0xfd, 0x99, 0x01, 0x9d, 0x09, 0xdf, 0x0b, 0xdf, 0x0e, 0x7f, 0x14, 0x69, 0x1b, + 0xf5, 0x1c, 0xd6, 0x1b, 0x24, 0x1a, 0x06, 0x1b, 0x0a, 0x1c, 0x65, 0x19, 0xc1, 0x15, 0x08, 0x18, + 0xfe, 0x17, 0x90, 0x14, 0x5e, 0x12, 0xb1, 0x0f, 0xd5, 0x0f, 0x22, 0x12, 0xfe, 0x14, 0x52, 0x19, + 0xc7, 0x19, 0x99, 0x17, 0xb5, 0x16, 0xca, 0x17, 0xaf, 0x15, 0xa3, 0x11, 0x10, 0x0a, 0xd5, 0x02, + 0xf6, 0xfa, 0xd5, 0xef, 0x39, 0xe7, 0x42, 0xe2, 0x11, 0xdf, 0xcd, 0xda, 0x3f, 0xd6, 0x9d, 0xd4, + 0xf2, 0xd7, 0x5d, 0xd8, 0xfc, 0xdb, 0x28, 0xe0, 0x88, 0xe1, 0xe1, 0xe8, 0x4c, 0xef, 0x5b, 0xf2, + 0x7f, 0xf8, 0x7b, 0xfe, 0xe6, 0x02, 0x5a, 0x08, 0x4c, 0x06, 0x1a, 0x05, 0xcc, 0x07, 0x57, 0x0a, + 0x08, 0x09, 0xc0, 0x07, 0x66, 0x0a, 0x23, 0x0a, 0x29, 0x0a, 0x88, 0x09, 0xeb, 0x0a, 0x55, 0x0d, + 0x3d, 0x0f, 0x4e, 0x13, 0xd6, 0x18, 0xd6, 0x19, 0xe6, 0x16, 0x1a, 0x17, 0x2f, 0x18, 0x6c, 0x16, + 0x3b, 0x14, 0x21, 0x0e, 0x97, 0x09, 0x78, 0x04, 0xbc, 0xfc, 0x36, 0xf7, 0x4f, 0xf2, 0x14, 0xef, + 0x97, 0xeb, 0x68, 0xe2, 0x6a, 0xe2, 0x77, 0xe1, 0x3b, 0xe0, 0x8c, 0xe2, 0x60, 0xe2, 0xda, 0xe2, + 0xf0, 0xe6, 0x28, 0xed, 0x82, 0xf2, 0xe2, 0xf7, 0xa9, 0xfb, 0x1b, 0x03, 0x3d, 0x07, 0xcd, 0x03, + 0x63, 0x01, 0x28, 0x01, 0x07, 0xff, 0x79, 0xfc, 0xcb, 0xfb, 0xe5, 0xfb, 0xe8, 0xff, 0xdf, 0xfd, + 0x00, 0xff, 0x42, 0x04, 0xba, 0x07, 0x53, 0x0c, 0x0a, 0x11, 0x9f, 0x16, 0xb6, 0x16, 0x79, 0x15, + 0xe5, 0x17, 0x65, 0x18, 0x7a, 0x1a, 0x96, 0x16, 0xa3, 0x0f, 0x7c, 0x0b, 0x2a, 0x07, 0x11, 0x01, + 0xa0, 0xfb, 0x01, 0xf6, 0xd2, 0xf3, 0x19, 0xec, 0xa9, 0xe4, 0x31, 0xe1, 0x77, 0xdd, 0xb6, 0xdc, + 0x07, 0xdd, 0x6a, 0xdb, 0x04, 0xdf, 0x64, 0xe5, 0x29, 0xe9, 0xcf, 0xee, 0x45, 0xf0, 0xae, 0xf3, + 0xa8, 0xfb, 0xb9, 0x00, 0xc8, 0xff, 0xfe, 0xfd, 0x9b, 0xfd, 0x0f, 0xfa, 0x37, 0xf9, 0x8d, 0xf7, + 0x4c, 0xfc, 0x1e, 0xff, 0x33, 0xfe, 0x06, 0x01, 0xc1, 0x01, 0x3b, 0x04, 0x20, 0x08, 0xe2, 0x09, + 0x22, 0x0e, 0xc8, 0x0e, 0x7d, 0x0e, 0x11, 0x11, 0x5a, 0x14, 0x80, 0x15, 0x4a, 0x13, 0x8d, 0x11, + 0xac, 0x10, 0xff, 0x0c, 0x87, 0x08, 0x09, 0x02, 0x1f, 0xfd, 0xb8, 0xf9, 0xec, 0xf3, 0x46, 0xef, + 0x3a, 0xec, 0xa3, 0xea, 0x4c, 0xed, 0x67, 0xf0, 0xbd, 0xf2, 0x05, 0xf8, 0x75, 0xfd, 0x5b, 0x02, + 0x38, 0x07, 0xad, 0x09, 0xd3, 0x0d, 0x85, 0x15, 0xac, 0x15, 0x41, 0x11, 0x25, 0x0e, 0x47, 0x0b, + 0x02, 0x0d, 0xdb, 0x0a, 0x55, 0x0b, 0xf3, 0x0d, 0xe7, 0x0c, 0x46, 0x0a, 0xab, 0x08, 0x28, 0x09, + 0x82, 0x08, 0xe4, 0x07, 0x61, 0x07, 0x71, 0x09, 0xfa, 0x06, 0xc8, 0x04, 0x09, 0x07, 0x1b, 0x08, + 0xfe, 0x09, 0xce, 0x09, 0xce, 0x07, 0x0a, 0x08, 0x29, 0x04, 0xd4, 0xf9, 0x8f, 0xf2, 0xe9, 0xed, + 0xac, 0xe8, 0x4d, 0xe4, 0xf6, 0xe1, 0x27, 0xdd, 0xa9, 0xdb, 0x8a, 0xde, 0x81, 0xe0, 0x5b, 0xe3, + 0x95, 0xe9, 0xf6, 0xee, 0x9c, 0xf4, 0x97, 0xfa, 0x65, 0xfb, 0xed, 0x00, 0x0f, 0x09, 0x69, 0x0a, + 0x6e, 0x0b, 0xfd, 0x0a, 0x39, 0x0c, 0x7d, 0x0d, 0x29, 0x0a, 0x55, 0x0a, 0x72, 0x0c, 0xd3, 0x0b, + 0x1e, 0x0a, 0x92, 0x0a, 0x12, 0x0a, 0x4d, 0x08, 0x6e, 0x07, 0xb9, 0x0a, 0xb7, 0x0e, 0xb0, 0x0f, + 0x92, 0x0f, 0x92, 0x12, 0x4d, 0x15, 0xec, 0x15, 0x47, 0x13, 0xf5, 0x0f, 0x4f, 0x0e, 0x38, 0x08, + 0xbe, 0x00, 0xf1, 0xfa, 0xf7, 0xf3, 0x00, 0xf0, 0x98, 0xec, 0x8a, 0xe7, 0x70, 0xe4, 0x07, 0xe2, + 0x0b, 0xe4, 0xdf, 0xe6, 0x93, 0xe6, 0x22, 0xe7, 0x2c, 0xe9, 0xaf, 0xef, 0x3e, 0xf1, 0xdb, 0xf2, + 0x17, 0xfb, 0x24, 0x02, 0x08, 0x08, 0xc7, 0x0b, 0x8a, 0x0c, 0x88, 0x0f, 0x86, 0x10, 0xe7, 0x0e, + 0x9e, 0x0f, 0x7e, 0x12, 0x77, 0x11, 0xa7, 0x10, 0x0b, 0x10, 0x10, 0x10, 0xba, 0x0d, 0x14, 0x0d, + 0xfb, 0x11, 0x8f, 0x17, 0x27, 0x16, 0xbb, 0x17, 0xdb, 0x18, 0x0d, 0x1a, 0xbc, 0x1a, 0x54, 0x16, + 0x18, 0x13, 0x94, 0x0f, 0xfb, 0x07, 0x50, 0xff, 0x51, 0xf8, 0xc0, 0xf1, 0x17, 0xee, 0x26, 0xea, + 0x77, 0xe4, 0xc5, 0xdd, 0x93, 0xd9, 0x63, 0xdb, 0x2c, 0xdb, 0xf4, 0xdb, 0x45, 0xdd, 0xb1, 0xdf, + 0x87, 0xe4, 0xfa, 0xe6, 0xb8, 0xe9, 0x46, 0xf2, 0x20, 0xfa, 0x02, 0xff, 0x4b, 0x01, 0x78, 0x03, + 0xd5, 0x05, 0x3a, 0x05, 0xc8, 0x03, 0x2c, 0x05, 0xca, 0x05, 0xf4, 0x06, 0x73, 0x07, 0x2f, 0x08, + 0x2f, 0x09, 0x4a, 0x09, 0x81, 0x09, 0x5a, 0x0f, 0x58, 0x14, 0x66, 0x14, 0x87, 0x15, 0xb3, 0x16, + 0xd7, 0x18, 0x81, 0x1a, 0x64, 0x19, 0x14, 0x1b, 0xf6, 0x19, 0x8a, 0x14, 0xec, 0x10, 0x45, 0x0a, + 0x43, 0x05, 0x64, 0x01, 0x2f, 0xfd, 0xcd, 0xf7, 0xf9, 0xf0, 0xa0, 0xee, 0x72, 0xeb, 0xfc, 0xe9, + 0xeb, 0xe6, 0xce, 0xe4, 0x43, 0xe8, 0x72, 0xed, 0x5c, 0xef, 0x96, 0xf2, 0x68, 0xf9, 0xa2, 0xfd, + 0x41, 0x00, 0xeb, 0x01, 0x98, 0x02, 0x29, 0x04, 0x5d, 0x00, 0xb1, 0xfa, 0x77, 0xfa, 0xd6, 0xf9, + 0xe0, 0xf8, 0x3b, 0xf8, 0xfd, 0xf8, 0x87, 0xfa, 0x72, 0xf8, 0xe5, 0xfb, 0x7a, 0x01, 0x90, 0x04, + 0x1a, 0x05, 0xd3, 0x04, 0x36, 0x06, 0x3a, 0x0b, 0x88, 0x0c, 0x58, 0x0b, 0x8d, 0x0d, 0x84, 0x0b, + 0x7c, 0x07, 0x5c, 0x05, 0xa9, 0x02, 0x1a, 0xff, 0xc5, 0xfc, 0xc2, 0xf9, 0x64, 0xf4, 0x8e, 0xee, + 0xec, 0xe9, 0x74, 0xea, 0x02, 0xea, 0xed, 0xe7, 0x06, 0xe8, 0x19, 0xec, 0xde, 0xf0, 0x1a, 0xf2, + 0xe9, 0xf4, 0xcb, 0xf9, 0xaf, 0x01, 0x59, 0x07, 0x29, 0x09, 0x46, 0x0b, 0x57, 0x0b, 0x3d, 0x06, + 0x87, 0x03, 0x1a, 0x04, 0xa0, 0x04, 0x3c, 0x07, 0xdd, 0x06, 0xa1, 0x07, 0x13, 0x07, 0x67, 0x02, + 0xd1, 0x01, 0x2f, 0x06, 0x09, 0x08, 0xd3, 0x06, 0xa7, 0x04, 0x40, 0x06, 0x67, 0x09, 0x58, 0x08, + 0x82, 0x08, 0xb3, 0x08, 0xd4, 0x08, 0xff, 0x07, 0xc3, 0x04, 0x81, 0xfe, 0x23, 0xf9, 0xc9, 0xf4, + 0xc1, 0xee, 0xb9, 0xea, 0xaf, 0xe4, 0xe1, 0xe0, 0x5a, 0xe3, 0x11, 0xe4, 0x73, 0xe4, 0x57, 0xe7, + 0x2d, 0xee, 0x57, 0xf4, 0xc3, 0xf7, 0xd9, 0xfc, 0xca, 0x04, 0xaf, 0x0b, 0xfc, 0x11, 0x0e, 0x14, + 0xa8, 0x16, 0xc2, 0x16, 0x41, 0x16, 0x4c, 0x16, 0xd4, 0x16, 0xc1, 0x19, 0xcb, 0x19, 0x22, 0x19, + 0x6f, 0x1b, 0x9b, 0x19, 0xfa, 0x14, 0x7f, 0x14, 0x52, 0x14, 0x7e, 0x13, 0xc0, 0x11, 0xac, 0x0e, + 0x4c, 0x11, 0x88, 0x14, 0xdf, 0x13, 0x2a, 0x14, 0x2a, 0x15, 0xe2, 0x11, 0x63, 0x10, 0x10, 0x0c, + 0x16, 0x05, 0x8f, 0xff, 0xa3, 0xf8, 0xa1, 0xf3, 0x86, 0xee, 0x15, 0xe7, 0xc4, 0xe2, 0x38, 0xe1, + 0x35, 0xe0, 0xf1, 0xde, 0xd1, 0xe1, 0x1e, 0xe6, 0xac, 0xea, 0xfb, 0xea, 0xe7, 0xec, 0x49, 0xf2, + 0x1c, 0xf8, 0x12, 0xfc, 0x98, 0x00, 0xa2, 0x05, 0x6a, 0x07, 0xbd, 0x05, 0x15, 0x06, 0x05, 0x07, + 0x71, 0x08, 0x2b, 0x09, 0xb4, 0x08, 0x68, 0x0b, 0x41, 0x0a, 0x55, 0x08, 0x27, 0x08, 0xd4, 0x0a, + 0xe2, 0x0e, 0xcc, 0x0c, 0x72, 0x0d, 0x2d, 0x12, 0x8d, 0x14, 0xb2, 0x14, 0x58, 0x17, 0x23, 0x17, + 0x02, 0x15, 0xff, 0x11, 0x0f, 0x0a, 0x11, 0x05, 0x9d, 0xfe, 0x53, 0xf7, 0x05, 0xf6, 0xbb, 0xf1, + 0x3c, 0xea, 0x55, 0xe6, 0x20, 0xe4, 0xca, 0xe1, 0x0f, 0xe0, 0x71, 0xdf, 0xda, 0xe2, 0x30, 0xe4, + 0x69, 0xe2, 0xf7, 0xe2, 0x1b, 0xe8, 0x9c, 0xee, 0x4e, 0xf4, 0x66, 0xf8, 0xdd, 0xfd, 0xd3, 0x01, + 0x58, 0x01, 0x9e, 0x01, 0xaa, 0x03, 0x39, 0x03, 0x44, 0x02, 0x2b, 0x03, 0x73, 0x05, 0x9c, 0x04, + 0x78, 0x01, 0x01, 0x01, 0x38, 0x04, 0xe3, 0x08, 0xfb, 0x08, 0xb6, 0x0a, 0xb4, 0x10, 0xd9, 0x11, + 0x6e, 0x13, 0x79, 0x13, 0xe8, 0x12, 0xdc, 0x14, 0x6d, 0x11, 0x85, 0x0d, 0x0e, 0x09, 0x16, 0x02, + 0x83, 0xfd, 0xac, 0xfb, 0xfe, 0xf4, 0xad, 0xed, 0x72, 0xea, 0xb4, 0xe7, 0xee, 0xe6, 0xd8, 0xe3, + 0x6c, 0xe2, 0xfe, 0xe4, 0x2b, 0xe5, 0xcd, 0xe4, 0x65, 0xe8, 0xe2, 0xed, 0xbe, 0xf4, 0x5f, 0xfa, + 0x61, 0xfd, 0x54, 0x01, 0x42, 0x02, 0x17, 0x02, 0xb2, 0x02, 0xe3, 0x02, 0x42, 0x02, 0x91, 0x01, + 0xde, 0x01, 0x94, 0x04, 0xec, 0x02, 0x79, 0xff, 0x45, 0x00, 0xaa, 0x04, 0xb4, 0x07, 0x43, 0x06, + 0x91, 0x07, 0xd6, 0x09, 0xc7, 0x09, 0xf7, 0x0b, 0x6a, 0x0c, 0x53, 0x0e, 0xd8, 0x10, 0xe2, 0x0e, + 0xd8, 0x0c, 0x4b, 0x0a, 0x3a, 0x05, 0xdc, 0x03, 0xae, 0x02, 0xd1, 0xfe, 0xb8, 0xf9, 0x9a, 0xf5, + 0xd7, 0xf4, 0x66, 0xf2, 0x6b, 0xee, 0x91, 0xf0, 0xbd, 0xf4, 0x57, 0xf6, 0x93, 0xf8, 0x47, 0xfb, + 0x4d, 0xff, 0xbc, 0x05, 0x19, 0x09, 0x42, 0x0e, 0x08, 0x15, 0xe2, 0x14, 0xe3, 0x12, 0x1b, 0x11, + 0x98, 0x0d, 0xb2, 0x0b, 0x9b, 0x09, 0x8e, 0x0a, 0xf3, 0x0c, 0x4a, 0x0b, 0x9c, 0x07, 0x02, 0x07, + 0x92, 0x0a, 0x88, 0x0b, 0xa6, 0x0a, 0x3b, 0x0c, 0x28, 0x0d, 0x79, 0x0e, 0x96, 0x0e, 0x04, 0x0f, + 0xef, 0x0f, 0x34, 0x0f, 0xa7, 0x0b, 0x31, 0x0a, 0x55, 0x07, 0x5e, 0x02, 0x34, 0x01, 0xbe, 0xfe, + 0x73, 0xf8, 0xc5, 0xf2, 0xfc, 0xeb, 0xf8, 0xe9, 0x78, 0xe7, 0x92, 0xe4, 0x4e, 0xe6, 0xda, 0xe8, + 0x2a, 0xeb, 0xd1, 0xeb, 0xbf, 0xee, 0x42, 0xf5, 0xa9, 0xfa, 0xdc, 0xfe, 0x20, 0x06, 0x47, 0x0c, + 0xf6, 0x0c, 0x20, 0x0e, 0xf5, 0x0c, 0x46, 0x0d, 0xb2, 0x0c, 0x25, 0x0b, 0x40, 0x0d, 0x16, 0x10, + 0x2f, 0x0e, 0x6c, 0x0b, 0x19, 0x0b, 0xc9, 0x0b, 0x74, 0x0c, 0x6e, 0x09, 0x55, 0x07, 0x8a, 0x07, + 0xab, 0x06, 0x1b, 0x07, 0x9d, 0x07, 0x4c, 0x09, 0xe3, 0x08, 0xfe, 0x06, 0xfc, 0x04, 0x2d, 0x00, + 0x73, 0xfa, 0xc4, 0xf6, 0x82, 0xf2, 0x9f, 0xeb, 0x38, 0xe4, 0x61, 0xdf, 0x1c, 0xdd, 0x25, 0xd9, + 0x24, 0xd6, 0x4f, 0xd9, 0xd4, 0xdb, 0x29, 0xe0, 0xda, 0xe3, 0xfc, 0xe5, 0xf0, 0xec, 0x54, 0xf1, + 0xb3, 0xf5, 0x7b, 0xfc, 0x6b, 0x01, 0x9c, 0x03, 0xeb, 0x03, 0xeb, 0x05, 0x11, 0x07, 0xad, 0x07, + 0xcb, 0x08, 0x33, 0x0c, 0x8b, 0x0f, 0x44, 0x0c, 0xf4, 0x0a, 0xb3, 0x0a, 0xf5, 0x0c, 0x4e, 0x0e, + 0x4d, 0x0b, 0xf6, 0x0a, 0x8d, 0x0b, 0x7a, 0x0c, 0x1b, 0x0d, 0x7f, 0x0d, 0xed, 0x0f, 0x8f, 0x11, + 0xb9, 0x10, 0x11, 0x10, 0xfa, 0x0a, 0xc1, 0x04, 0xad, 0xff, 0xe9, 0xf9, 0xaa, 0xf3, 0x7c, 0xed, + 0xbb, 0xe9, 0x04, 0xe7, 0x48, 0xe2, 0x85, 0xde, 0x21, 0xdf, 0xf5, 0xe1, 0x3f, 0xe5, 0x54, 0xe6, + 0xb0, 0xe7, 0x1b, 0xea, 0xd3, 0xec, 0xe8, 0xf0, 0x16, 0xf7, 0x0f, 0xfb, 0x54, 0xfe, 0xdd, 0xff, + 0x0c, 0x00, 0x48, 0x02, 0x07, 0x02, 0x94, 0x01, 0x57, 0x04, 0x16, 0x05, 0x73, 0x03, 0xa6, 0x01, + 0xe3, 0x02, 0x22, 0x05, 0xf2, 0x06, 0x09, 0x07, 0x50, 0x09, 0x9e, 0x0c, 0xe1, 0x0f, 0xbc, 0x13, + 0xb1, 0x15, 0xe0, 0x18, 0x94, 0x1a, 0x3e, 0x1a, 0xd9, 0x18, 0xb8, 0x14, 0xec, 0x10, 0xc8, 0x0d, + 0x79, 0x0b, 0x11, 0x07, 0xbb, 0x01, 0x14, 0xfd, 0x81, 0xfa, 0x7a, 0xf6, 0xaa, 0xf4, 0xd8, 0xf4, + 0x0a, 0xf6, 0x0a, 0xf5, 0x78, 0xf2, 0x96, 0xf2, 0xf8, 0xf3, 0x6b, 0xf6, 0xe3, 0xfa, 0x6e, 0x01, + 0x5a, 0x06, 0x82, 0x08, 0xde, 0x09, 0x63, 0x0a, 0x9a, 0x0b, 0xbc, 0x08, 0x99, 0x07, 0xb3, 0x08, + 0x24, 0x08, 0x63, 0x07, 0xdd, 0x03, 0xfa, 0x00, 0xb6, 0x02, 0xbd, 0x02, 0xef, 0x02, 0xf6, 0x05, + 0x7f, 0x09, 0xe5, 0x09, 0x5c, 0x0a, 0xbb, 0x0b, 0xda, 0x0b, 0xe5, 0x0c, 0x75, 0x0d, 0x3b, 0x0c, + 0xae, 0x08, 0x0a, 0x05, 0x89, 0x02, 0xe3, 0xff, 0x05, 0xfd, 0x79, 0xf8, 0xf4, 0xf4, 0x52, 0xf2, + 0x4c, 0xee, 0x6b, 0xeb, 0xf4, 0xeb, 0x23, 0xee, 0xcf, 0xf0, 0x7e, 0xf1, 0x55, 0xf4, 0xbd, 0xf8, + 0x17, 0xfa, 0x44, 0xff, 0xaf, 0x05, 0x32, 0x0b, 0x0a, 0x0e, 0x8b, 0x0e, 0x55, 0x11, 0x21, 0x0f, + 0xdb, 0x0b, 0xc6, 0x09, 0xdc, 0x09, 0x38, 0x0a, 0xa3, 0x07, 0xb5, 0x04, 0xf0, 0x03, 0x8f, 0x05, + 0xd7, 0x04, 0x8c, 0x02, 0x0a, 0x02, 0x01, 0x02, 0xc8, 0x01, 0x4e, 0x00, 0x84, 0x00, 0xe4, 0x01, + 0x46, 0x02, 0x7c, 0x02, 0xdb, 0x00, 0xcb, 0xfd, 0x4f, 0xfa, 0x40, 0xf9, 0x98, 0xf7, 0x5d, 0xf3, + 0x34, 0xf0, 0x30, 0xec, 0xac, 0xe8, 0xaa, 0xe3, 0xbf, 0xe0, 0xce, 0xe0, 0x4d, 0xe3, 0xcc, 0xe6, + 0xc1, 0xe7, 0x48, 0xec, 0x26, 0xef, 0x80, 0xf3, 0xaa, 0xf9, 0x59, 0x00, 0xdd, 0x07, 0x3e, 0x0a, + 0xf1, 0x0b, 0x0c, 0x0f, 0x44, 0x0e, 0xc7, 0x0b, 0x12, 0x0d, 0xf9, 0x0d, 0x3f, 0x0e, 0x4d, 0x0c, + 0x04, 0x0a, 0x0a, 0x0a, 0x0f, 0x0b, 0x75, 0x0b, 0x6d, 0x0a, 0x6f, 0x0b, 0xdd, 0x0a, 0x6a, 0x09, + 0x59, 0x08, 0x92, 0x07, 0x33, 0x09, 0xc3, 0x0a, 0xa1, 0x0b, 0xba, 0x09, 0x42, 0x06, 0xde, 0x02, + 0x9a, 0xff, 0x78, 0xfe, 0xeb, 0xf9, 0x5d, 0xf4, 0x55, 0xf0, 0x22, 0xeb, 0x0d, 0xe5, 0xd5, 0xe0, + 0x14, 0xe1, 0x1a, 0xe2, 0xa3, 0xe1, 0x2c, 0xe4, 0x12, 0xe7, 0x13, 0xea, 0x66, 0xed, 0x50, 0xf1, + 0x41, 0xf7, 0x7e, 0xfd, 0xdd, 0x00, 0x38, 0x04, 0xf8, 0x07, 0xb4, 0x07, 0x01, 0x07, 0x20, 0x08, + 0x0a, 0x0b, 0xd0, 0x0e, 0x83, 0x0e, 0x30, 0x0e, 0xe1, 0x0f, 0x69, 0x0f, 0xa1, 0x0e, 0x2d, 0x10, + 0x6c, 0x10, 0x6d, 0x11, 0x6e, 0x11, 0x1e, 0x11, 0x1e, 0x12, 0xb7, 0x12, 0x7d, 0x14, 0xe8, 0x15, + 0x1e, 0x15, 0xfc, 0x12, 0xea, 0x0f, 0x7e, 0x0c, 0x76, 0x08, 0xab, 0x01, 0x3f, 0xfa, 0xf7, 0xf4, + 0x9f, 0xef, 0x7c, 0xea, 0x00, 0xe6, 0x27, 0xe6, 0x3e, 0xe6, 0x2d, 0xe6, 0xa5, 0xe8, 0x47, 0xec, + 0x58, 0xee, 0x66, 0xef, 0x5f, 0xf2, 0x63, 0xf9, 0xc1, 0xfd, 0xfc, 0xff, 0x0e, 0x03, 0x9a, 0x04, + 0x3b, 0x04, 0x6b, 0x04, 0xe1, 0x05, 0x05, 0x09, 0x8a, 0x0c, 0x70, 0x0a, 0xd1, 0x07, 0x0b, 0x09, + 0x60, 0x08, 0xd4, 0x08, 0x63, 0x08, 0x62, 0x08, 0x1a, 0x09, 0xc5, 0x08, 0x8d, 0x0a, 0xa7, 0x0c, + 0x6e, 0x0d, 0x59, 0x12, 0x52, 0x15, 0x9f, 0x13, 0x9a, 0x12, 0x59, 0x0f, 0xf5, 0x0c, 0x64, 0x0a, + 0x5e, 0x06, 0x87, 0x02, 0x35, 0xfe, 0x72, 0xfa, 0x66, 0xf3, 0xa5, 0xef, 0x0c, 0xee, 0x9d, 0xee, + 0xcf, 0xef, 0xaa, 0xf0, 0x2f, 0xf2, 0xc5, 0xef, 0xc5, 0xee, 0x7a, 0xf0, 0x8a, 0xf4, 0xf8, 0xf8, + 0x72, 0xfb, 0x0d, 0x00, 0xef, 0x01, 0xf3, 0x00, 0x20, 0x00, 0x32, 0x00, 0xe8, 0x01, 0x3a, 0x01, + 0x1e, 0xff, 0x6a, 0xfe, 0x62, 0xfd, 0x6d, 0xfc, 0x27, 0xfc, 0xd5, 0xfa, 0x80, 0xfc, 0x2f, 0xff, + 0x16, 0x00, 0x64, 0x03, 0x11, 0x05, 0xd5, 0x06, 0x8d, 0x0b, 0x81, 0x0d, 0xb4, 0x0c, 0xe8, 0x0a, + 0x66, 0x08, 0x03, 0x07, 0x91, 0x05, 0xc9, 0x01, 0x94, 0x00, 0x93, 0xfe, 0xe8, 0xf9, 0x36, 0xf7, + 0x98, 0xf4, 0xc6, 0xf3, 0xbf, 0xf3, 0x39, 0xf2, 0x89, 0xf2, 0xc9, 0xf4, 0x1a, 0xf5, 0xe6, 0xf5, + 0x2a, 0xf9, 0x41, 0xfd, 0x14, 0x02, 0x3e, 0x05, 0xef, 0x09, 0x59, 0x0d, 0x50, 0x0d, 0x5e, 0x0d, + 0x8f, 0x0c, 0xcf, 0x0c, 0x41, 0x0a, 0x48, 0x06, 0x97, 0x05, 0x89, 0x03, 0x00, 0x02, 0xcb, 0x00, + 0x5a, 0x00, 0x93, 0x01, 0xab, 0x01, 0xa0, 0x02, 0xd7, 0x01, 0xbc, 0x00, 0xb9, 0x01, 0x4d, 0x03, + 0x6f, 0x04, 0x47, 0x03, 0x30, 0x02, 0x2c, 0xfe, 0xd6, 0xfc, 0x76, 0xfa, 0x79, 0xf6, 0x74, 0xf5, + 0x4a, 0xf2, 0x9b, 0xee, 0x2b, 0xe9, 0x51, 0xe4, 0xeb, 0xe3, 0xe8, 0xe2, 0x71, 0xe2, 0xdc, 0xe6, + 0x7e, 0xe9, 0xe8, 0xea, 0xf5, 0xee, 0xa7, 0xf2, 0x3e, 0xfa, 0x44, 0x02, 0xb1, 0x07, 0xe1, 0x0c, + 0xa9, 0x10, 0x3e, 0x10, 0xbc, 0x0f, 0x67, 0x12, 0xc8, 0x14, 0x64, 0x15, 0xc1, 0x14, 0x5a, 0x14, + 0x5f, 0x14, 0x8a, 0x13, 0x5c, 0x13, 0xb7, 0x12, 0x19, 0x13, 0x91, 0x12, 0x0a, 0x12, 0xe5, 0x0f, + 0x3a, 0x0c, 0x20, 0x0b, 0x78, 0x0c, 0xeb, 0x0c, 0xfa, 0x0c, 0x43, 0x0b, 0xa9, 0x08, 0x76, 0x06, + 0x98, 0x03, 0x02, 0x00, 0x24, 0xfd, 0x9f, 0xf8, 0x63, 0xf4, 0x5a, 0xee, 0x1f, 0xe9, 0x54, 0xe7, + 0xff, 0xe3, 0xa8, 0xe2, 0x21, 0xe5, 0x59, 0xe6, 0x0d, 0xe7, 0x3f, 0xe9, 0x9e, 0xed, 0xb6, 0xf2, + 0xf5, 0xf6, 0x22, 0xfb, 0x2e, 0x00, 0x88, 0x02, 0x18, 0x03, 0xe2, 0x02, 0xa6, 0x03, 0x56, 0x06, + 0x53, 0x07, 0xf2, 0x05, 0x22, 0x07, 0x16, 0x09, 0x6d, 0x08, 0xa3, 0x09, 0xea, 0x09, 0xfb, 0x09, + 0x1e, 0x0c, 0xf3, 0x0c, 0xf3, 0x0d, 0xfb, 0x0c, 0xd6, 0x0e, 0x7a, 0x12, 0x2c, 0x15, 0x7e, 0x15, + 0x52, 0x13, 0x18, 0x12, 0x8d, 0x10, 0xf6, 0x0d, 0x9b, 0x0b, 0x42, 0x07, 0xac, 0x02, 0x83, 0xfc, + 0x40, 0xf4, 0x5c, 0xef, 0x92, 0xeb, 0x44, 0xe8, 0xa8, 0xe6, 0x82, 0xe6, 0x2e, 0xe7, 0x46, 0xe7, + 0xe4, 0xe7, 0x08, 0xe9, 0x56, 0xec, 0x5d, 0xef, 0x2e, 0xf3, 0xc3, 0xf8, 0x46, 0xfb, 0x87, 0xfa, + 0x3e, 0xfa, 0x37, 0xfb, 0xe9, 0xfd, 0x17, 0xff, 0x84, 0xff, 0x26, 0x02, 0x4a, 0x02, 0x34, 0x02, + 0xbe, 0x01, 0x35, 0x01, 0x4d, 0x03, 0x17, 0x04, 0x03, 0x05, 0xde, 0x04, 0x22, 0x05, 0x7e, 0x06, + 0x88, 0x0a, 0x02, 0x0f, 0x92, 0x10, 0x53, 0x12, 0xc2, 0x11, 0x13, 0x10, 0x30, 0x0d, 0xe2, 0x0a, + 0x07, 0x09, 0x29, 0x06, 0x8b, 0x01, 0x72, 0xfb, 0xa6, 0xf7, 0xcf, 0xf3, 0x2d, 0xf1, 0x0e, 0xf0, + 0x68, 0xf1, 0xad, 0xf4, 0xed, 0xf4, 0x68, 0xf5, 0x73, 0xf6, 0x7a, 0xf8, 0xd5, 0xfb, 0x01, 0xff, + 0xbb, 0x03, 0x42, 0x05, 0xd1, 0x04, 0x55, 0x04, 0xb7, 0x05, 0xe8, 0x07, 0x09, 0x06, 0x4e, 0x06, + 0xb7, 0x05, 0xa1, 0x04, 0xf0, 0x03, 0xd0, 0x02, 0xd2, 0x01, 0xe7, 0x00, 0x8f, 0x00, 0x5f, 0x00, + 0xd0, 0xff, 0xcf, 0xff, 0x4e, 0x01, 0x83, 0x04, 0xbf, 0x07, 0x2a, 0x09, 0xc8, 0x08, 0x2c, 0x08, + 0xbf, 0x07, 0x6f, 0x05, 0x97, 0x02, 0x47, 0x02, 0xbf, 0xff, 0x18, 0xfb, 0x77, 0xf7, 0xb3, 0xf4, + 0xfc, 0xf2, 0x8e, 0xf1, 0x87, 0xf1, 0x19, 0xf2, 0x93, 0xf3, 0xbf, 0xf3, 0x0e, 0xf4, 0x01, 0xf7, + 0x92, 0xf9, 0x20, 0xfd, 0x12, 0x01, 0x41, 0x06, 0x53, 0x0a, 0xc8, 0x09, 0x9e, 0x09, 0xcf, 0x0c, + 0xc5, 0x0d, 0x4f, 0x0d, 0xeb, 0x0a, 0xf0, 0x09, 0x72, 0x07, 0x0c, 0x05, 0x31, 0x03, 0x9f, 0x01, + 0xf5, 0x01, 0xa8, 0x02, 0xc9, 0x03, 0x47, 0x03, 0x62, 0x02, 0xc8, 0x02, 0xca, 0x05, 0x57, 0x09, + 0x9d, 0x09, 0x66, 0x09, 0xe9, 0x07, 0x6f, 0x05, 0xc3, 0x01, 0xd7, 0xfe, 0xe1, 0xfc, 0x49, 0xfb, + 0x20, 0xf8, 0xd4, 0xf3, 0x09, 0xf1, 0x6f, 0xed, 0x98, 0xea, 0xde, 0xe8, 0x8a, 0xe8, 0x1f, 0xe9, + 0x26, 0xe9, 0xd2, 0xea, 0xa3, 0xec, 0x1e, 0xef, 0xdf, 0xf2, 0x87, 0xf8, 0x4c, 0x00, 0x58, 0x06, + 0xb0, 0x06, 0x84, 0x08, 0x21, 0x0b, 0x54, 0x0c, 0x3d, 0x0d, 0xc6, 0x0c, 0xa1, 0x0d, 0xf0, 0x0d, + 0x15, 0x0d, 0xba, 0x0c, 0x8d, 0x0b, 0x22, 0x0c, 0x4f, 0x0d, 0x84, 0x0e, 0xc1, 0x0d, 0x54, 0x0b, + 0x23, 0x0b, 0xa1, 0x0b, 0xa6, 0x0c, 0x22, 0x0c, 0x25, 0x0b, 0x57, 0x0a, 0x31, 0x07, 0x68, 0x03, + 0xf8, 0x00, 0x50, 0xff, 0x3c, 0xfc, 0x8f, 0xf6, 0x54, 0xf1, 0x0b, 0xec, 0x8b, 0xe6, 0x7a, 0xe3, + 0x71, 0xe0, 0x63, 0xe0, 0x90, 0xe1, 0x99, 0xe0, 0x51, 0xe2, 0xf0, 0xe4, 0x9d, 0xe8, 0xbd, 0xee, + 0xe1, 0xf4, 0x7b, 0xfc, 0xaa, 0xff, 0x91, 0x00, 0xcb, 0x01, 0x5e, 0x04, 0x3d, 0x06, 0xfa, 0x06, + 0x90, 0x08, 0xe3, 0x09, 0x5e, 0x0b, 0xdd, 0x0b, 0xa4, 0x0d, 0x6a, 0x0f, 0x3d, 0x10, 0xfa, 0x10, + 0x03, 0x11, 0x8d, 0x10, 0x36, 0x0f, 0x6e, 0x0e, 0x50, 0x11, 0x9a, 0x13, 0x54, 0x14, 0xa4, 0x15, + 0xf4, 0x15, 0xe3, 0x13, 0xb6, 0x10, 0x4f, 0x0f, 0x0d, 0x0e, 0x1f, 0x0b, 0x65, 0x05, 0x92, 0xff, + 0x1d, 0xfa, 0x3a, 0xf4, 0x19, 0xef, 0xaa, 0xea, 0x49, 0xea, 0xb9, 0xe9, 0xdf, 0xe8, 0xbc, 0xe9, + 0xa5, 0xea, 0x41, 0xec, 0x65, 0xee, 0x4b, 0xf2, 0x99, 0xf8, 0x46, 0xfc, 0x23, 0xfc, 0x5b, 0xfd, + 0x01, 0xff, 0x4f, 0xff, 0x1a, 0x00, 0x3f, 0xff, 0xeb, 0x00, 0xf4, 0x01, 0x03, 0x02, 0x0f, 0x02, + 0x85, 0x02, 0x00, 0x03, 0xd4, 0x04, 0x46, 0x06, 0xf9, 0x05, 0x67, 0x06, 0xf0, 0x06, 0x50, 0x0b, + 0x15, 0x0f, 0x38, 0x11, 0xcd, 0x14, 0x6a, 0x16, 0x31, 0x16, 0x5a, 0x13, 0xca, 0x11, 0x56, 0x10, + 0x80, 0x0d, 0xc6, 0x0a, 0xf2, 0x05, 0x5a, 0x01, 0x8d, 0xfc, 0xa6, 0xf7, 0x00, 0xf5, 0x42, 0xf2, + 0xf9, 0xf1, 0xba, 0xf0, 0xb3, 0xf1, 0x72, 0xf2, 0xe1, 0xf1, 0x7e, 0xf2, 0x0a, 0xf5, 0x63, 0xfa, + 0xb6, 0xfb, 0x2e, 0xfb, 0xbe, 0xfc, 0x2b, 0xfd, 0x7b, 0xfe, 0x01, 0xff, 0xb0, 0xfd, 0x8e, 0xfe, + 0x9e, 0xff, 0xd1, 0xfe, 0xfd, 0xfe, 0x73, 0xfd, 0x5f, 0xfd, 0xd3, 0xfe, 0x8e, 0xfe, 0xb7, 0xfd, + 0xa0, 0xfb, 0xc1, 0xfb, 0x90, 0xff, 0xc5, 0x02, 0x08, 0x05, 0x47, 0x08, 0x4f, 0x0a, 0xf3, 0x08, + 0x8d, 0x06, 0x10, 0x05, 0x38, 0x04, 0x78, 0x02, 0xa0, 0xff, 0xf2, 0xfa, 0x4b, 0xf6, 0xd2, 0xf1, + 0xf7, 0xef, 0x35, 0xef, 0x76, 0xef, 0xe0, 0xef, 0x28, 0xf0, 0x7a, 0xf1, 0xd3, 0xf3, 0x5b, 0xf5, + 0xa7, 0xf8, 0x07, 0xfe, 0xde, 0x03, 0xac, 0x07, 0x7c, 0x08, 0xf1, 0x09, 0x96, 0x0b, 0x1a, 0x0d, + 0x75, 0x0d, 0x95, 0x0d, 0xab, 0x0e, 0xc4, 0x0c, 0xd1, 0x0b, 0x92, 0x09, 0x9e, 0x06, 0x0b, 0x06, + 0xcb, 0x04, 0x61, 0x04, 0x7d, 0x03, 0xbc, 0x00, 0x21, 0xff, 0xfe, 0x00, 0x97, 0x01, 0x8e, 0x02, + 0x35, 0x05, 0xd2, 0x05, 0xcb, 0x04, 0x2f, 0x02, 0xbd, 0xff, 0x4a, 0xfe, 0x9d, 0xfb, 0xaa, 0xf6, + 0xa2, 0xf4, 0x3f, 0xf1, 0xcb, 0xed, 0x25, 0xeb, 0x13, 0xe8, 0xa8, 0xe7, 0x19, 0xe7, 0xb9, 0xe6, + 0xc0, 0xe7, 0xd1, 0xe9, 0xa0, 0xeb, 0x92, 0xed, 0xa1, 0xf2, 0x25, 0xf9, 0x64, 0xff, 0xa0, 0x03, + 0x39, 0x06, 0x15, 0x0a, 0xd5, 0x0b, 0xd9, 0x0c, 0x07, 0x0e, 0xf9, 0x0f, 0x69, 0x10, 0x89, 0x0f, + 0x46, 0x0f, 0xe4, 0x0e, 0xe7, 0x0e, 0x24, 0x10, 0x67, 0x11, 0x31, 0x11, 0xd4, 0x0f, 0x4a, 0x10, + 0x17, 0x12, 0x78, 0x13, 0xfb, 0x14, 0x6b, 0x16, 0xb7, 0x15, 0xfc, 0x13, 0xed, 0x0e, 0x7b, 0x0b, + 0xd6, 0x09, 0x20, 0x06, 0xae, 0x03, 0x63, 0xff, 0xa7, 0xfa, 0x7c, 0xf5, 0xd8, 0xef, 0xcb, 0xeb, + 0x9f, 0xe9, 0x49, 0xe7, 0x04, 0xe5, 0xb4, 0xe6, 0x45, 0xe5, 0xd0, 0xe4, 0x72, 0xe6, 0x57, 0xea, + 0x32, 0xf1, 0xab, 0xf6, 0xad, 0xf9, 0xae, 0xfc, 0x98, 0x00, 0x65, 0x01, 0xe4, 0x01, 0x5d, 0x03, + 0xb4, 0x04, 0xe8, 0x06, 0x38, 0x07, 0xc2, 0x07, 0x1d, 0x09, 0x61, 0x0a, 0xa1, 0x0d, 0xf4, 0x0f, + 0x18, 0x0f, 0x58, 0x0d, 0xb0, 0x0d, 0x32, 0x10, 0xce, 0x10, 0xbd, 0x12, 0xcf, 0x14, 0x47, 0x17, + 0x95, 0x16, 0xee, 0x12, 0xa8, 0x11, 0xaa, 0x0f, 0xf2, 0x0d, 0x55, 0x0b, 0xfa, 0x05, 0xf4, 0xff, + 0xd0, 0xf9, 0x41, 0xf3, 0x65, 0xee, 0x8b, 0xeb, 0x27, 0xe7, 0x5b, 0xe5, 0xe9, 0xe5, 0x3f, 0xe6, + 0x07, 0xe6, 0x20, 0xe8, 0xb5, 0xec, 0xff, 0xf2, 0xad, 0xf6, 0x8f, 0xf8, 0x03, 0xfb, 0xdd, 0xfb, + 0x5a, 0xfd, 0x13, 0xfd, 0x50, 0xfc, 0xa1, 0xfe, 0x88, 0xff, 0x36, 0x00, 0xc8, 0x00, 0x42, 0x01, + 0x8c, 0x01, 0x3e, 0x04, 0xd3, 0x05, 0xda, 0x03, 0x9e, 0x02, 0x31, 0x02, 0xbb, 0x03, 0x72, 0x05, + 0xdf, 0x05, 0x67, 0x09, 0x8d, 0x0c, 0xe1, 0x0d, 0xfc, 0x0d, 0xd4, 0x0d, 0x9d, 0x0c, 0xd9, 0x0a, + 0x62, 0x08, 0x93, 0x05, 0x9d, 0x03, 0x0c, 0xff, 0x48, 0xfa, 0x37, 0xf7, 0x76, 0xf3, 0xce, 0xf0, + 0x5e, 0xef, 0x24, 0xf0, 0xc4, 0xf0, 0x89, 0xf1, 0xbb, 0xf1, 0x0d, 0xf5, 0xcf, 0xf9, 0x12, 0xfc, + 0x2a, 0xfe, 0x45, 0xff, 0x56, 0x00, 0x78, 0x00, 0x37, 0x00, 0xe0, 0x00, 0xfc, 0x01, 0x2a, 0x01, + 0x60, 0x00, 0xd3, 0xff, 0x56, 0xfe, 0x55, 0xff, 0xf8, 0x00, 0xe6, 0x01, 0xdf, 0x00, 0xb6, 0xff, + 0x18, 0xfe, 0xa2, 0xff, 0x95, 0x01, 0x3e, 0x03, 0x7b, 0x08, 0xf9, 0x0b, 0x4f, 0x0c, 0x1b, 0x0c, + 0xf0, 0x0a, 0xca, 0x09, 0x68, 0x07, 0x98, 0x05, 0xc2, 0x04, 0xc4, 0x01, 0x2e, 0xfc, 0x5e, 0xf7, + 0x07, 0xf5, 0xab, 0xf3, 0x36, 0xf2, 0x15, 0xf2, 0x19, 0xf3, 0x5e, 0xf3, 0xc9, 0xf2, 0x02, 0xf4, + 0xce, 0xf7, 0xfd, 0xfb, 0x6b, 0x00, 0x37, 0x03, 0x5f, 0x06, 0x5d, 0x09, 0xce, 0x09, 0xe0, 0x09, + 0x23, 0x0c, 0x8a, 0x0d, 0xc0, 0x0e, 0xee, 0x0f, 0x6b, 0x0f, 0xb8, 0x0d, 0x6d, 0x0c, 0x29, 0x0d, + 0xb6, 0x0b, 0x3a, 0x09, 0xfe, 0x05, 0xb4, 0x04, 0x13, 0x05, 0x7b, 0x04, 0x39, 0x06, 0xdb, 0x07, + 0x97, 0x0a, 0x2a, 0x0b, 0xf4, 0x08, 0xf0, 0x06, 0xc3, 0x05, 0x25, 0x03, 0x6f, 0xff, 0x26, 0xfd, + 0xef, 0xf7, 0x0f, 0xf2, 0xbe, 0xee, 0x49, 0xeb, 0xdf, 0xe8, 0xf5, 0xe6, 0x42, 0xe6, 0xff, 0xe6, + 0x26, 0xe7, 0x72, 0xe7, 0xc8, 0xe9, 0x4d, 0xee, 0xa2, 0xf3, 0x38, 0xf8, 0x1a, 0xfc, 0xa5, 0x00, + 0xfb, 0x05, 0x96, 0x08, 0x3c, 0x0a, 0xe5, 0x0b, 0x82, 0x0e, 0xc4, 0x10, 0xee, 0x11, 0x2f, 0x11, + 0xd4, 0x0f, 0xa5, 0x10, 0x72, 0x12, 0x30, 0x13, 0x3b, 0x11, 0x3b, 0x0f, 0x51, 0x0e, 0x74, 0x0e, + 0xa1, 0x0d, 0x4d, 0x0d, 0xd5, 0x0f, 0x0e, 0x11, 0x1d, 0x11, 0xd9, 0x0e, 0x03, 0x0c, 0x35, 0x08, + 0xaf, 0x04, 0x57, 0x01, 0x21, 0xfe, 0x64, 0xfb, 0x44, 0xf6, 0x46, 0xf2, 0x2e, 0xee, 0xe7, 0xe9, + 0xaa, 0xe5, 0x0f, 0xe3, 0xca, 0xe3, 0xa8, 0xe1, 0xb2, 0xe0, 0x7d, 0xe0, 0xf3, 0xe1, 0xd2, 0xe6, + 0xe6, 0xea, 0x25, 0xef, 0xed, 0xf3, 0x0c, 0xf8, 0x18, 0xfb, 0xd2, 0xfb, 0x6b, 0xfd, 0x6b, 0xff, + 0xc4, 0x01, 0xaf, 0x02, 0x6a, 0x01, 0x3c, 0x01, 0xd7, 0x01, 0xa0, 0x05, 0x92, 0x08, 0x2f, 0x09, + 0x74, 0x09, 0x7d, 0x09, 0xf5, 0x0a, 0x4e, 0x0c, 0xa5, 0x0e, 0xf6, 0x11, 0x85, 0x15, 0x76, 0x16, + 0xb5, 0x15, 0x28, 0x14, 0x28, 0x12, 0x3f, 0x0f, 0xb0, 0x0d, 0x57, 0x0d, 0xd1, 0x09, 0xc9, 0x04, + 0x12, 0x00, 0x5d, 0xfb, 0xe1, 0xf6, 0xc9, 0xf1, 0x66, 0xed, 0x9b, 0xeb, 0xc7, 0xe9, 0xf6, 0xe6, + 0x1a, 0xe6, 0x88, 0xe7, 0xbf, 0xea, 0xc6, 0xed, 0x42, 0xf1, 0x91, 0xf5, 0xd5, 0xf8, 0xb9, 0xfa, + 0xac, 0xfb, 0xff, 0xfb, 0x07, 0xfd, 0x79, 0xfe, 0x7a, 0xff, 0x1e, 0xff, 0x80, 0xff, 0x67, 0x00, + 0x11, 0x03, 0xcb, 0x05, 0xe9, 0x05, 0xf3, 0x04, 0x2e, 0x04, 0x94, 0x04, 0x7c, 0x05, 0x89, 0x06, + 0xf2, 0x08, 0x7e, 0x0b, 0x75, 0x0d, 0x5c, 0x0e, 0x99, 0x0f, 0x87, 0x10, 0x69, 0x0f, 0xb4, 0x0e, + 0xb5, 0x0d, 0x83, 0x0a, 0x31, 0x06, 0xab, 0x02, 0xb9, 0xfe, 0x52, 0xfb, 0x18, 0xf7, 0x63, 0xf4, + 0x9c, 0xf3, 0x38, 0xf2, 0x8f, 0xf1, 0x81, 0xf2, 0x5f, 0xf5, 0x84, 0xf9, 0xc7, 0xfd, 0x3a, 0x00, + 0x37, 0x04, 0x08, 0x06, 0x8a, 0x05, 0xe4, 0x04, 0xb7, 0x03, 0x4c, 0x05, 0xfb, 0x06, 0xba, 0x07, + 0xfe, 0x05, 0xb7, 0x03, 0x67, 0x04, 0x17, 0x06, 0xc1, 0x06, 0x74, 0x05, 0xd9, 0x03, 0x76, 0x02, + 0x92, 0x00, 0xf8, 0xfe, 0xd7, 0xfd, 0x45, 0xff, 0xa9, 0x02, 0x28, 0x04, 0x53, 0x05, 0xdf, 0x06, + 0x13, 0x06, 0x8d, 0x04, 0x8e, 0x02, 0xaa, 0x01, 0x45, 0x00, 0xd2, 0xfd, 0x64, 0xfb, 0x67, 0xf7, + 0xe2, 0xf2, 0x06, 0xef, 0x23, 0xee, 0xf1, 0xef, 0x4a, 0xef, 0x35, 0xef, 0x0e, 0xf0, 0x9d, 0xf2, + 0x0b, 0xf7, 0x84, 0xf9, 0xeb, 0xfd, 0xaf, 0x02, 0xc0, 0x05, 0x57, 0x08, 0xa3, 0x08, 0x3a, 0x09, + 0x91, 0x0b, 0xcd, 0x0d, 0x3c, 0x0d, 0xd8, 0x0c, 0x00, 0x0b, 0x87, 0x0a, 0x0f, 0x0d, 0xff, 0x0c, + 0xc9, 0x0a, 0x39, 0x08, 0x3b, 0x06, 0xb9, 0x04, 0xcf, 0x03, 0x3d, 0x04, 0x93, 0x05, 0xc2, 0x08, + 0x7d, 0x09, 0xf6, 0x09, 0xd1, 0x09, 0xcc, 0x07, 0xc8, 0x05, 0x13, 0x04, 0xc0, 0x02, 0x94, 0xff, + 0xac, 0xf9, 0xb4, 0xf5, 0x69, 0xf1, 0x95, 0xed, 0x5a, 0xe9, 0xfd, 0xe7, 0x90, 0xe8, 0x99, 0xe6, + 0x4b, 0xe4, 0xd5, 0xe3, 0x46, 0xe6, 0xcd, 0xe8, 0x69, 0xeb, 0x5e, 0xef, 0x4f, 0xf3, 0xaa, 0xf7, + 0xd8, 0xfb, 0x0d, 0xfe, 0x7b, 0x00, 0xec, 0x03, 0xa3, 0x06, 0x3b, 0x0a, 0x31, 0x0b, 0xd6, 0x0a, + 0xbf, 0x0b, 0xf0, 0x0d, 0xf9, 0x0e, 0x51, 0x0f, 0xaf, 0x0d, 0xe2, 0x0b, 0x96, 0x0c, 0xd9, 0x0a, + 0x80, 0x0a, 0x06, 0x0d, 0x63, 0x0e, 0xa1, 0x10, 0x35, 0x12, 0x13, 0x12, 0x88, 0x0f, 0x86, 0x0c, + 0x4d, 0x09, 0x80, 0x06, 0xf3, 0x02, 0x1c, 0xfd, 0xe5, 0xf8, 0xcc, 0xf4, 0xb6, 0xef, 0x50, 0xec, + 0x8a, 0xe9, 0x83, 0xe8, 0xbe, 0xe7, 0x43, 0xe5, 0x69, 0xe5, 0x67, 0xe6, 0x04, 0xe8, 0xd1, 0xeb, + 0x6c, 0xf0, 0xe2, 0xf4, 0x65, 0xf9, 0xa3, 0xfd, 0x0b, 0x00, 0xe3, 0x01, 0xf2, 0x03, 0xa7, 0x06, + 0xca, 0x08, 0x0b, 0x09, 0x12, 0x08, 0x19, 0x08, 0xcc, 0x09, 0x51, 0x0b, 0x07, 0x0c, 0x1e, 0x0c, + 0x11, 0x0d, 0x6a, 0x0d, 0x96, 0x0c, 0xa5, 0x0d, 0x3f, 0x0f, 0x86, 0x11, 0x5c, 0x14, 0xca, 0x15, + 0xc3, 0x16, 0x17, 0x16, 0x7d, 0x13, 0x20, 0x12, 0x34, 0x11, 0xd0, 0x0e, 0xf4, 0x0c, 0xea, 0x0a, + 0x05, 0x06, 0xe2, 0x00, 0x55, 0xfc, 0x15, 0xf8, 0x0b, 0xf6, 0x69, 0xf1, 0xc1, 0xec, 0x32, 0xec, + 0xe0, 0xeb, 0x35, 0xec, 0xdb, 0xed, 0xd2, 0xef, 0xdc, 0xf3, 0xb1, 0xf6, 0x09, 0xf8, 0x1b, 0xf9, + 0x38, 0xf9, 0x22, 0xfa, 0xd6, 0xfb, 0x53, 0xfb, 0x47, 0xf9, 0xa8, 0xf7, 0x78, 0xf7, 0xaa, 0xf8, + 0xe1, 0xfa, 0x84, 0xfb, 0xcd, 0xfc, 0xf2, 0xfd, 0x4f, 0xfc, 0x80, 0xfb, 0xfd, 0xfc, 0x4f, 0xff, + 0xb8, 0x03, 0xf2, 0x05, 0x50, 0x07, 0x0b, 0x09, 0x3f, 0x09, 0x4a, 0x0a, 0x60, 0x0b, 0x7c, 0x0c, + 0x21, 0x0c, 0x11, 0x0b, 0xb7, 0x09, 0xa4, 0x06, 0x7d, 0x03, 0x8d, 0xfe, 0xd8, 0xfc, 0xc7, 0xfb, + 0xf8, 0xf7, 0xca, 0xf5, 0x54, 0xf5, 0xc7, 0xf5, 0xba, 0xf6, 0x0f, 0xf8, 0xb8, 0xfa, 0xf0, 0xfe, + 0xde, 0x02, 0x7f, 0x05, 0x8c, 0x06, 0xcb, 0x05, 0x68, 0x06, 0x16, 0x07, 0x73, 0x07, 0xb0, 0x06, + 0xd5, 0x04, 0x58, 0x03, 0x05, 0x05, 0xba, 0x04, 0x42, 0x03, 0x61, 0x02, 0xc4, 0x00, 0xa2, 0xfe, + 0x1f, 0xfd, 0xae, 0xfb, 0xf1, 0xfb, 0xfe, 0xfc, 0x38, 0xfe, 0xfd, 0xff, 0x61, 0x01, 0x4a, 0x02, + 0xa7, 0x03, 0x30, 0x04, 0xd1, 0x03, 0x7d, 0x02, 0x15, 0x00, 0x79, 0xfe, 0xb3, 0xfc, 0xfe, 0xf7, + 0x10, 0xf3, 0x85, 0xf0, 0x95, 0xef, 0xad, 0xed, 0xd8, 0xec, 0xa8, 0xed, 0x0a, 0xf0, 0x42, 0xf2, + 0x93, 0xf5, 0xa3, 0xfa, 0xae, 0xfe, 0x61, 0x02, 0x51, 0x06, 0xb9, 0x07, 0x06, 0x09, 0xba, 0x0a, + 0xcc, 0x0d, 0x2a, 0x0f, 0x7d, 0x0f, 0x3f, 0x0d, 0xa7, 0x0b, 0xc5, 0x0d, 0xa8, 0x0d, 0x4f, 0x0d, + 0x06, 0x0c, 0x33, 0x08, 0xa4, 0x04, 0x15, 0x00, 0x6a, 0xfd, 0x36, 0xfc, 0x0c, 0xfc, 0x1c, 0xfd, + 0x1c, 0xff, 0xd2, 0x00, 0x85, 0x00, 0x62, 0x00, 0x7e, 0x00, 0xb8, 0x00, 0x5e, 0x00, 0x55, 0xfe, + 0x89, 0xfd, 0x6d, 0xfb, 0x8f, 0xf6, 0x6d, 0xf1, 0xb5, 0xee, 0xcb, 0xed, 0x18, 0xec, 0xf6, 0xe9, + 0xb7, 0xea, 0xa5, 0xeb, 0x1a, 0xec, 0x02, 0xef, 0x75, 0xf2, 0xa2, 0xf7, 0x63, 0xfc, 0x1f, 0x00, + 0xba, 0x03, 0xca, 0x06, 0x5d, 0x0a, 0x00, 0x0e, 0xe8, 0x10, 0x47, 0x11, 0x5a, 0x10, 0xbb, 0x10, + 0x04, 0x12, 0x6f, 0x12, 0x46, 0x12, 0x51, 0x11, 0x0a, 0x10, 0xd5, 0x0d, 0x00, 0x0b, 0x41, 0x0a, + 0x20, 0x0b, 0x53, 0x0c, 0x6d, 0x0e, 0x29, 0x10, 0x80, 0x11, 0x8e, 0x12, 0x9d, 0x11, 0x0c, 0x10, + 0xf3, 0x0e, 0x17, 0x0c, 0x0b, 0x09, 0x6b, 0x07, 0x13, 0x03, 0xff, 0xfc, 0xe5, 0xf7, 0x1a, 0xf4, + 0xc1, 0xf0, 0x18, 0xec, 0xb9, 0xe7, 0x00, 0xe7, 0xfb, 0xe5, 0xed, 0xe4, 0xdd, 0xe4, 0x3b, 0xe6, + 0x90, 0xe9, 0x37, 0xec, 0x52, 0xef, 0xc8, 0xf2, 0xc4, 0xf5, 0x35, 0xf9, 0x96, 0xfc, 0xa4, 0xff, + 0xb4, 0x00, 0xdb, 0x00, 0xfc, 0x01, 0xb7, 0x03, 0xa0, 0x03, 0xb0, 0x02, 0x27, 0x03, 0x89, 0x03, + 0x36, 0x02, 0xd6, 0x01, 0x91, 0x01, 0xa1, 0x02, 0x22, 0x04, 0xfc, 0x05, 0x66, 0x09, 0x60, 0x0c, + 0x2e, 0x0e, 0x32, 0x0f, 0x67, 0x0f, 0xc0, 0x0f, 0x1c, 0x0e, 0xd9, 0x0c, 0x52, 0x0c, 0x02, 0x0a, + 0xc8, 0x04, 0x58, 0xff, 0xbb, 0xfc, 0x6c, 0xfa, 0xb7, 0xf5, 0x56, 0xf2, 0x15, 0xf0, 0x9f, 0xee, + 0x8c, 0xed, 0x4c, 0xee, 0xa2, 0xf0, 0x85, 0xf3, 0x93, 0xf6, 0xe5, 0xf9, 0x9d, 0xfc, 0x8e, 0xfe, + 0x0d, 0x00, 0xb1, 0x03, 0x26, 0x06, 0x13, 0x06, 0x40, 0x04, 0x05, 0x03, 0xe6, 0x03, 0xcc, 0x02, + 0x2d, 0x02, 0xd8, 0x02, 0xc1, 0x02, 0xfe, 0x01, 0x18, 0x00, 0x6e, 0xfe, 0x41, 0xfd, 0x3d, 0xfd, + 0xc1, 0xfe, 0xe3, 0x01, 0xdb, 0x03, 0x8a, 0x04, 0x50, 0x05, 0xa9, 0x06, 0x62, 0x08, 0xd5, 0x07, + 0x39, 0x08, 0x68, 0x0a, 0xe3, 0x09, 0x0d, 0x07, 0x61, 0x02, 0x9e, 0xff, 0x4a, 0xfc, 0x40, 0xf8, + 0x76, 0xf4, 0x59, 0xf2, 0x90, 0xf1, 0xbf, 0xf0, 0xc7, 0xf1, 0x25, 0xf4, 0x51, 0xf6, 0xdc, 0xf9, + 0xf5, 0xfd, 0xf1, 0x01, 0x8f, 0x03, 0xee, 0x04, 0x34, 0x07, 0x90, 0x07, 0x72, 0x06, 0x83, 0x04, + 0xd6, 0x02, 0x67, 0x02, 0x36, 0x01, 0xc7, 0x00, 0xcb, 0x00, 0xe1, 0x00, 0x51, 0xff, 0x62, 0xfd, + 0xa7, 0xfc, 0x47, 0xfc, 0x10, 0xfc, 0x15, 0xfe, 0x03, 0x00, 0x58, 0x01, 0xe1, 0x01, 0x11, 0x03, + 0x5c, 0x05, 0x89, 0x06, 0xea, 0x06, 0x72, 0x07, 0x90, 0x08, 0xdb, 0x06, 0xbe, 0x03, 0xd7, 0x00, + 0xb8, 0xfc, 0xd9, 0xf9, 0x98, 0xf5, 0x7e, 0xf2, 0xc4, 0xf1, 0x90, 0xf0, 0x3d, 0xf0, 0xca, 0xf0, + 0x56, 0xf3, 0x09, 0xf7, 0xdb, 0xfa, 0x9c, 0xff, 0x1e, 0x03, 0x54, 0x05, 0x62, 0x07, 0x7d, 0x0a, + 0xed, 0x0c, 0x52, 0x0d, 0xe8, 0x0d, 0x31, 0x0f, 0x96, 0x0f, 0x23, 0x0e, 0xa8, 0x0d, 0x23, 0x0e, + 0xa3, 0x0d, 0x33, 0x0b, 0x2c, 0x08, 0x16, 0x05, 0x94, 0x02, 0x03, 0x01, 0x14, 0x00, 0x65, 0x01, + 0x07, 0x03, 0x69, 0x03, 0xe7, 0x04, 0xcc, 0x05, 0x9f, 0x05, 0x5e, 0x04, 0x47, 0x04, 0x0c, 0x04, + 0x75, 0x01, 0x45, 0xfd, 0x06, 0xf8, 0x28, 0xf3, 0x58, 0xee, 0x02, 0xe9, 0xb9, 0xe6, 0x3f, 0xe6, + 0x76, 0xe5, 0xbe, 0xe5, 0xb6, 0xe6, 0x3d, 0xea, 0xfa, 0xee, 0x96, 0xf2, 0x5b, 0xf7, 0x82, 0xfa, + 0x62, 0xfc, 0x93, 0xff, 0x3a, 0x04, 0x4c, 0x08, 0xe4, 0x09, 0x0f, 0x0b, 0x95, 0x0c, 0x05, 0x0e, + 0x9b, 0x0e, 0xbd, 0x0e, 0x87, 0x10, 0x56, 0x10, 0x0e, 0x0e, 0xf2, 0x0b, 0x0a, 0x09, 0xf0, 0x06, + 0x04, 0x06, 0x5b, 0x06, 0x47, 0x08, 0xfb, 0x08, 0xf0, 0x09, 0xd9, 0x0b, 0xbb, 0x0d, 0x03, 0x0e, + 0x25, 0x0c, 0xae, 0x0a, 0x3e, 0x0a, 0xda, 0x07, 0x28, 0x04, 0x2b, 0xfe, 0x17, 0xf9, 0x34, 0xf3, + 0xa6, 0xed, 0xf1, 0xe9, 0x76, 0xe7, 0x59, 0xe6, 0xea, 0xe4, 0x17, 0xe5, 0x7b, 0xe6, 0x71, 0xe8, + 0x61, 0xec, 0x2a, 0xf0, 0xf4, 0xf2, 0xff, 0xf4, 0x76, 0xf8, 0xd7, 0xfc, 0x9c, 0x00, 0x3b, 0x02, + 0x58, 0x02, 0xa1, 0x03, 0x82, 0x04, 0x6c, 0x04, 0x62, 0x05, 0x87, 0x05, 0xb4, 0x05, 0x5b, 0x05, + 0x9e, 0x04, 0x2b, 0x04, 0xda, 0x04, 0x5f, 0x05, 0x5c, 0x08, 0x7e, 0x0c, 0xc2, 0x0e, 0xbc, 0x10, + 0x39, 0x14, 0x03, 0x16, 0xf7, 0x15, 0x47, 0x15, 0x68, 0x14, 0x50, 0x14, 0x46, 0x13, 0x7e, 0x0f, + 0xe4, 0x0a, 0x9e, 0x05, 0x7a, 0x00, 0x9a, 0xfb, 0x8d, 0xf7, 0xdf, 0xf4, 0x67, 0xf1, 0x77, 0xed, + 0xc1, 0xeb, 0x59, 0xeb, 0x65, 0xeb, 0x06, 0xed, 0x9c, 0xef, 0x1c, 0xf1, 0xc5, 0xf2, 0x2f, 0xf5, + 0x78, 0xf9, 0x58, 0xfc, 0x42, 0xfd, 0x60, 0xfe, 0xcf, 0xff, 0x7f, 0x00, 0x3c, 0xff, 0x59, 0xfe, + 0x4c, 0xfd, 0x5f, 0xfd, 0xaf, 0xfc, 0xa1, 0xfb, 0xde, 0xfc, 0xd3, 0xfb, 0xd3, 0xfb, 0x3a, 0xfd, + 0x35, 0x00, 0xc7, 0x03, 0x29, 0x06, 0x72, 0x09, 0xf1, 0x0a, 0x68, 0x0b, 0x58, 0x0b, 0x01, 0x0c, + 0x55, 0x0e, 0x5a, 0x0d, 0x46, 0x0b, 0xb5, 0x08, 0x22, 0x05, 0xc8, 0x01, 0xc5, 0xfd, 0x8e, 0xfa, + 0xfa, 0xf8, 0x60, 0xf6, 0xfc, 0xf3, 0x05, 0xf4, 0xfc, 0xf5, 0x22, 0xf9, 0x43, 0xfc, 0xa7, 0xff, + 0x73, 0x02, 0xd9, 0x04, 0xd5, 0x07, 0x1f, 0x0c, 0x81, 0x0e, 0x6c, 0x0d, 0x7d, 0x0d, 0xdb, 0x0c, + 0xd9, 0x0a, 0x26, 0x09, 0x8f, 0x06, 0x30, 0x06, 0xc7, 0x05, 0x0a, 0x03, 0xa5, 0x01, 0x30, 0x00, + 0x8c, 0xfd, 0x46, 0xfb, 0x0e, 0xfb, 0x3b, 0xfc, 0x0e, 0xfd, 0x4a, 0xfd, 0x6c, 0xfe, 0x38, 0xff, + 0x56, 0xff, 0xa1, 0xff, 0xb0, 0x00, 0xc4, 0x02, 0xc5, 0x02, 0x76, 0x01, 0x1d, 0xff, 0xec, 0xfb, + 0x7a, 0xf7, 0xa9, 0xf1, 0xff, 0xed, 0xb6, 0xeb, 0x23, 0xe9, 0xa1, 0xe8, 0x5a, 0xe9, 0x4c, 0xeb, + 0x72, 0xee, 0x0b, 0xf3, 0x64, 0xf8, 0x4d, 0xfd, 0x7a, 0x00, 0x94, 0x03, 0x80, 0x08, 0x39, 0x0b, + 0xb9, 0x0b, 0xb2, 0x0c, 0x3c, 0x0d, 0xb1, 0x0d, 0x14, 0x0c, 0x9b, 0x0a, 0x19, 0x0b, 0x18, 0x0b, + 0x86, 0x0a, 0xd8, 0x0a, 0x76, 0x09, 0x11, 0x07, 0xc2, 0x04, 0xc8, 0x04, 0x20, 0x06, 0xb9, 0x05, + 0x01, 0x06, 0xe3, 0x07, 0xbe, 0x08, 0x58, 0x08, 0x6b, 0x07, 0xdb, 0x07, 0xb7, 0x08, 0xf7, 0x07, + 0xb4, 0x04, 0xd5, 0x01, 0xfc, 0xfd, 0xc2, 0xf7, 0x39, 0xf2, 0x26, 0xed, 0xa0, 0xe9, 0x03, 0xe7, + 0xee, 0xe4, 0x90, 0xe4, 0xf1, 0xe4, 0xc0, 0xe6, 0xd0, 0xe9, 0xc7, 0xee, 0x90, 0xf2, 0x80, 0xf4, + 0x5c, 0xf8, 0x1b, 0xfd, 0x8c, 0xff, 0x58, 0x02, 0xaa, 0x04, 0x5a, 0x07, 0x2c, 0x0a, 0x2d, 0x0a, + 0x80, 0x0a, 0x1f, 0x0c, 0xcc, 0x0c, 0xfd, 0x0c, 0x67, 0x0d, 0x11, 0x0d, 0x60, 0x0a, 0xf1, 0x08, + 0x9c, 0x09, 0xb8, 0x0b, 0xd2, 0x0c, 0xd4, 0x0d, 0xe3, 0x10, 0xf7, 0x11, 0x4b, 0x12, 0x5f, 0x12, + 0x11, 0x12, 0x1c, 0x12, 0x65, 0x0f, 0xf2, 0x0b, 0xfe, 0x07, 0x67, 0x02, 0x91, 0xfb, 0xfd, 0xf4, + 0x72, 0xef, 0x9b, 0xeb, 0x14, 0xe8, 0x64, 0xe5, 0xdf, 0xe4, 0x02, 0xe5, 0x2d, 0xe7, 0xc0, 0xea, + 0xfa, 0xed, 0x93, 0xf0, 0xc2, 0xf1, 0x2e, 0xf4, 0x1b, 0xf8, 0x13, 0xfb, 0x9d, 0xfd, 0x8a, 0x00, + 0x77, 0x03, 0xfc, 0x03, 0xb9, 0x03, 0x0f, 0x05, 0x52, 0x06, 0xde, 0x06, 0x56, 0x06, 0x5d, 0x06, + 0x6e, 0x05, 0x81, 0x03, 0x1f, 0x02, 0x50, 0x03, 0x59, 0x05, 0x5c, 0x06, 0xae, 0x08, 0x29, 0x0c, + 0x67, 0x0e, 0x59, 0x10, 0x08, 0x11, 0xa1, 0x11, 0x8c, 0x12, 0x16, 0x11, 0x88, 0x10, 0x87, 0x0f, + 0xe1, 0x0a, 0x19, 0x05, 0xdb, 0xfe, 0x3d, 0xfa, 0x69, 0xf7, 0x6d, 0xf4, 0xc5, 0xf1, 0xa7, 0xef, + 0xb6, 0xee, 0x6e, 0xee, 0x89, 0xf0, 0x96, 0xf3, 0x34, 0xf5, 0xb4, 0xf6, 0x50, 0xf8, 0xda, 0xfb, + 0xd3, 0xfd, 0x3e, 0xff, 0x38, 0x01, 0x72, 0x02, 0x78, 0x02, 0xfa, 0x00, 0x05, 0x01, 0x4d, 0x01, + 0xf8, 0xff, 0xdc, 0xfe, 0xc2, 0xfe, 0x4e, 0xfe, 0xeb, 0xfc, 0xce, 0xfc, 0x71, 0xfe, 0x36, 0x00, + 0xcf, 0x01, 0x3a, 0x04, 0x8d, 0x07, 0x1e, 0x0a, 0xac, 0x0a, 0x7c, 0x09, 0x7a, 0x0a, 0x71, 0x0b, + 0x2f, 0x0b, 0x62, 0x0b, 0x55, 0x0a, 0xa1, 0x07, 0xbc, 0x03, 0xa2, 0xff, 0x09, 0xfc, 0xf2, 0xf8, + 0xd6, 0xf5, 0x2c, 0xf3, 0x6e, 0xf0, 0x73, 0xee, 0x15, 0xef, 0x5e, 0xf1, 0x43, 0xf4, 0xc1, 0xf5, + 0x92, 0xf6, 0x5f, 0xf9, 0x53, 0xfe, 0xfc, 0x01, 0x27, 0x04, 0x15, 0x06, 0xfd, 0x07, 0xbc, 0x08, + 0x52, 0x07, 0x38, 0x06, 0x4c, 0x05, 0x25, 0x03, 0x39, 0x02, 0xb4, 0x01, 0xd0, 0x00, 0xf5, 0xfe, + 0xa8, 0xfd, 0x38, 0xfe, 0xd9, 0xfe, 0xf5, 0xff, 0xee, 0x01, 0x5c, 0x04, 0xf3, 0x05, 0xb0, 0x04, + 0xf6, 0x03, 0xda, 0x04, 0xb2, 0x05, 0x49, 0x06, 0x21, 0x06, 0x66, 0x04, 0xfc, 0x01, 0x5b, 0xfe, + 0x3e, 0xfa, 0xcf, 0xf6, 0x0c, 0xf3, 0x8f, 0xef, 0x31, 0xed, 0x3a, 0xeb, 0xaf, 0xea, 0xb3, 0xec, + 0x83, 0xf0, 0xbf, 0xf4, 0x8e, 0xf8, 0x64, 0xfb, 0x0a, 0x00, 0xf9, 0x04, 0x7e, 0x08, 0x14, 0x0b, + 0xa3, 0x0c, 0x9b, 0x0e, 0xd1, 0x0e, 0x64, 0x0e, 0xc7, 0x0e, 0xfc, 0x0d, 0x50, 0x0d, 0x7f, 0x0c, + 0x2c, 0x0c, 0xa9, 0x0c, 0x6b, 0x0a, 0x04, 0x08, 0x0d, 0x07, 0xd4, 0x05, 0x0d, 0x04, 0xcc, 0x03, + 0x49, 0x04, 0x97, 0x04, 0x41, 0x03, 0x29, 0x02, 0x74, 0x03, 0x49, 0x04, 0xef, 0x03, 0xd4, 0x03, + 0x3b, 0x04, 0x7c, 0x01, 0x06, 0xfd, 0x3d, 0xf8, 0x13, 0xf3, 0x89, 0xed, 0x62, 0xe8, 0x14, 0xe5, + 0xe4, 0xe2, 0x20, 0xe2, 0x1e, 0xe3, 0x67, 0xe5, 0x0f, 0xea, 0x11, 0xee, 0x85, 0xf1, 0x95, 0xf5, + 0x7b, 0xfa, 0x3e, 0xfd, 0x71, 0xff, 0x95, 0x02, 0x84, 0x05, 0x6c, 0x07, 0xf6, 0x07, 0xd0, 0x09, + 0x1b, 0x0b, 0xb4, 0x0b, 0x54, 0x0d, 0x09, 0x0f, 0x6e, 0x0f, 0x61, 0x0f, 0xe0, 0x0d, 0x36, 0x0d, + 0xfd, 0x0e, 0xea, 0x0e, 0x7a, 0x0f, 0x69, 0x12, 0xf1, 0x12, 0xb5, 0x11, 0x0a, 0x12, 0x26, 0x13, + 0xf1, 0x13, 0xa9, 0x13, 0x81, 0x12, 0x08, 0x10, 0xbf, 0x0b, 0xa9, 0x05, 0x35, 0xff, 0xb1, 0xf9, + 0x9a, 0xf2, 0xe5, 0xec, 0x9f, 0xe7, 0xb5, 0xe2, 0x1b, 0xe0, 0x49, 0xde, 0xa9, 0xdf, 0x9f, 0xe1, + 0xd4, 0xe3, 0xe9, 0xe5, 0xee, 0xe8, 0xd9, 0xec, 0x80, 0xee, 0xf2, 0xf0, 0x01, 0xf5, 0x5a, 0xf9, + 0x40, 0xfc, 0xac, 0xfe, 0xdd, 0xff, 0x34, 0x01, 0xa6, 0x02, 0xa6, 0x03, 0x39, 0x05, 0x4d, 0x06, + 0x3d, 0x05, 0xe2, 0x04, 0xfc, 0x05, 0x99, 0x06, 0xcd, 0x07, 0x38, 0x0a, 0x7a, 0x0e, 0x77, 0x11, + 0xa0, 0x12, 0x2e, 0x14, 0x63, 0x16, 0x79, 0x17, 0xe2, 0x16, 0x7d, 0x15, 0xd6, 0x13, 0xc3, 0x10, + 0xa2, 0x0c, 0x0e, 0x08, 0x07, 0x02, 0x83, 0xfc, 0xfe, 0xf7, 0x92, 0xf4, 0x63, 0xf1, 0x7d, 0xee, + 0x54, 0xed, 0xa3, 0xee, 0x9d, 0xf0, 0x6d, 0xf1, 0xe0, 0xf2, 0x43, 0xf5, 0x9b, 0xf7, 0x18, 0xf8, + 0x8f, 0xf9, 0x42, 0xfd, 0x96, 0x00, 0x3a, 0x02, 0xf3, 0x02, 0xd8, 0x03, 0x4f, 0x04, 0x9a, 0x04, + 0x40, 0x04, 0x61, 0x04, 0x15, 0x03, 0x81, 0x00, 0xab, 0xff, 0xa5, 0xff, 0x55, 0xff, 0x58, 0xfe, + 0xcd, 0xfe, 0xcf, 0x01, 0xa3, 0x03, 0x35, 0x04, 0xf1, 0x05, 0x43, 0x07, 0xe4, 0x07, 0xe6, 0x07, + 0x69, 0x08, 0x6b, 0x09, 0xee, 0x07, 0x56, 0x05, 0x46, 0x02, 0xc9, 0xfe, 0xf9, 0xfa, 0xc0, 0xf7, + 0x49, 0xf5, 0x62, 0xf2, 0x6f, 0xef, 0xc8, 0xed, 0x65, 0xef, 0xb2, 0xf2, 0x74, 0xf5, 0xcd, 0xf8, + 0x66, 0xfc, 0xe2, 0xfe, 0x5a, 0x01, 0x84, 0x04, 0xfe, 0x08, 0x26, 0x0c, 0xdb, 0x0c, 0x87, 0x0d, + 0xdb, 0x0c, 0x10, 0x0c, 0xe2, 0x0a, 0x51, 0x09, 0xee, 0x08, 0xb8, 0x07, 0xa9, 0x05, 0x21, 0x04, + 0x62, 0x03, 0xdb, 0x02, 0x82, 0x01, 0x32, 0x02, 0x9b, 0x04, 0x3a, 0x05, 0xc0, 0x05, 0x8c, 0x05, + 0xd7, 0x04, 0xea, 0x04, 0x5a, 0x04, 0xdd, 0x04, 0xa8, 0x04, 0x71, 0x02, 0xa6, 0xff, 0x0e, 0xfd, + 0x0f, 0xf9, 0xb2, 0xf4, 0x2c, 0xf1, 0x42, 0xed, 0x4b, 0xe9, 0x6b, 0xe5, 0x91, 0xe3, 0xed, 0xe4, + 0x86, 0xe6, 0x36, 0xe9, 0xbd, 0xec, 0x18, 0xf1, 0xef, 0xf5, 0xde, 0xf9, 0x4f, 0xff, 0xad, 0x04, + 0x2c, 0x08, 0xf6, 0x0a, 0xaf, 0x0d, 0xec, 0x0e, 0x5f, 0x0f, 0x22, 0x0f, 0x44, 0x0e, 0xdb, 0x0e, + 0xc3, 0x0d, 0xa1, 0x0c, 0x05, 0x0d, 0x61, 0x0c, 0x2f, 0x0b, 0xb8, 0x09, 0xad, 0x09, 0x15, 0x0b, + 0x69, 0x0b, 0x9d, 0x0a, 0xac, 0x09, 0xb4, 0x09, 0x22, 0x09, 0x27, 0x08, 0x64, 0x07, 0xd1, 0x05, + 0xcf, 0x02, 0x92, 0x00, 0x18, 0xfd, 0x2b, 0xf8, 0xb3, 0xf3, 0x89, 0xee, 0x45, 0xea, 0x75, 0xe5, + 0x78, 0xe0, 0x83, 0xdf, 0x7d, 0xe1, 0x5e, 0xe3, 0x84, 0xe6, 0xc5, 0xea, 0x79, 0xef, 0x0f, 0xf4, + 0x21, 0xf7, 0x03, 0xfb, 0x96, 0xff, 0xf5, 0x02, 0x13, 0x06, 0x45, 0x08, 0xfa, 0x09, 0x60, 0x0b, + 0x51, 0x0c, 0xac, 0x0d, 0x24, 0x0f, 0x2c, 0x10, 0xd4, 0x10, 0xd5, 0x11, 0x0d, 0x11, 0xd2, 0x0e, + 0xe0, 0x0c, 0x47, 0x0c, 0x7b, 0x0e, 0xc8, 0x0e, 0xa2, 0x0e, 0x35, 0x0f, 0xae, 0x0f, 0x5e, 0x11, + 0x9d, 0x11, 0x15, 0x12, 0x33, 0x12, 0x8b, 0x10, 0xb5, 0x0d, 0x1e, 0x09, 0x7a, 0x03, 0xa6, 0xfc, + 0x23, 0xf6, 0x7c, 0xf0, 0x07, 0xea, 0xf7, 0xe4, 0xf0, 0xe2, 0x8e, 0xe2, 0xef, 0xe3, 0x1b, 0xe6, + 0x59, 0xe9, 0xf7, 0xed, 0xb3, 0xf0, 0xba, 0xf2, 0x33, 0xf6, 0xe9, 0xf8, 0xe5, 0xfb, 0x0c, 0xff, + 0xa4, 0x00, 0xda, 0x01, 0x52, 0x03, 0xb1, 0x03, 0xec, 0x04, 0xf5, 0x06, 0x89, 0x07, 0x16, 0x08, + 0x43, 0x08, 0x3a, 0x07, 0x87, 0x06, 0x78, 0x05, 0xd4, 0x06, 0x7f, 0x09, 0xd5, 0x0a, 0x72, 0x0c, + 0x0e, 0x0e, 0xa2, 0x0f, 0xe3, 0x11, 0x37, 0x13, 0xb3, 0x13, 0x34, 0x13, 0x53, 0x11, 0xa7, 0x0f, + 0xc6, 0x0c, 0x81, 0x08, 0x9e, 0x02, 0x5a, 0xfc, 0xcc, 0xf7, 0x04, 0xf2, 0x0f, 0xed, 0x4b, 0xea, + 0x12, 0xe9, 0x81, 0xe8, 0x48, 0xe9, 0xa4, 0xeb, 0x3a, 0xee, 0x0b, 0xf0, 0x82, 0xf1, 0x39, 0xf4, + 0x53, 0xf7, 0xe8, 0xfa, 0xdd, 0xfd, 0x00, 0x00, 0x4d, 0x02, 0x36, 0x02, 0x19, 0x02, 0xca, 0x03, + 0x47, 0x04, 0x72, 0x03, 0x03, 0x03, 0x79, 0x01, 0x94, 0x00, 0x99, 0xff, 0xf9, 0xfd, 0x42, 0xff, + 0x44, 0x01, 0x26, 0x03, 0x5d, 0x05, 0xf6, 0x06, 0x0b, 0x09, 0xae, 0x0a, 0xcb, 0x0a, 0xfd, 0x0a, + 0x21, 0x0a, 0x6a, 0x08, 0xd8, 0x06, 0x93, 0x04, 0x61, 0x00, 0x15, 0xfc, 0x5a, 0xf8, 0x55, 0xf5, + 0x2d, 0xf2, 0x4c, 0xee, 0x14, 0xed, 0x9c, 0xec, 0x8f, 0xec, 0x01, 0xef, 0x94, 0xf2, 0x73, 0xf6, + 0x02, 0xf9, 0xdf, 0xfa, 0x99, 0xfd, 0x40, 0x01, 0x56, 0x05, 0xc4, 0x08, 0x3a, 0x0b, 0xfa, 0x0c, + 0x38, 0x0d, 0x59, 0x0d, 0x30, 0x0e, 0xd0, 0x0c, 0xfd, 0x0a, 0xf4, 0x08, 0x8c, 0x07, 0xfb, 0x05, + 0x7a, 0x02, 0xc5, 0xff, 0xa7, 0xfe, 0x7c, 0xfe, 0x3d, 0xff, 0x97, 0x00, 0x85, 0x01, 0xed, 0x02, + 0xcd, 0x03, 0x0c, 0x03, 0xe8, 0x02, 0xe3, 0x02, 0x71, 0x02, 0xe8, 0x01, 0xe2, 0xff, 0xe8, 0xfc, + 0xe6, 0xf8, 0x2f, 0xf5, 0xda, 0xf1, 0xca, 0xec, 0x3e, 0xe8, 0x93, 0xe6, 0xce, 0xe5, 0xb8, 0xe5, + 0x4d, 0xe8, 0x0d, 0xec, 0xcc, 0xf0, 0xeb, 0xf4, 0x4f, 0xf8, 0x9b, 0xfd, 0x00, 0x03, 0xbb, 0x08, + 0x8d, 0x0c, 0x73, 0x0f, 0x3d, 0x11, 0x27, 0x11, 0xb9, 0x12, 0x85, 0x13, 0x94, 0x13, 0x4d, 0x12, + 0x9c, 0x11, 0x47, 0x12, 0xfb, 0x10, 0x4d, 0x0f, 0x3e, 0x0e, 0xa4, 0x0e, 0x13, 0x0f, 0xba, 0x0f, + 0xeb, 0x0f, 0x0e, 0x10, 0x46, 0x0f, 0x93, 0x0d, 0xa6, 0x0c, 0x92, 0x0b, 0x11, 0x0a, 0xcf, 0x08, + 0xfb, 0x06, 0xd5, 0x03, 0x4a, 0x00, 0x4b, 0xfb, 0xeb, 0xf6, 0x9f, 0xf2, 0x9f, 0xeb, 0xc1, 0xe5, + 0x92, 0xe1, 0x44, 0xde, 0x46, 0xdc, 0x4d, 0xdc, 0x3f, 0xdf, 0xb0, 0xe2, 0xbe, 0xe5, 0x48, 0xea, + 0xc5, 0xef, 0x4f, 0xf5, 0xe4, 0xf9, 0x53, 0xfe, 0x40, 0x02, 0xd4, 0x04, 0x68, 0x06, 0x5c, 0x08, + 0x40, 0x0a, 0xcf, 0x0a, 0xfc, 0x0a, 0x71, 0x0b, 0x9c, 0x0d, 0xcb, 0x0e, 0x1b, 0x0e, 0x7e, 0x0d, + 0xc2, 0x0d, 0xbd, 0x0e, 0x1d, 0x10, 0xf4, 0x11, 0xec, 0x12, 0x70, 0x13, 0x23, 0x13, 0x90, 0x13, + 0x20, 0x13, 0xcd, 0x11, 0xba, 0x10, 0xf6, 0x0e, 0xb2, 0x0c, 0x58, 0x08, 0x3a, 0x03, 0x02, 0xff, + 0xcb, 0xf8, 0x38, 0xf1, 0xc2, 0xea, 0x8e, 0xe5, 0x59, 0xe2, 0xe6, 0xe0, 0xa0, 0xe0, 0x1c, 0xe3, + 0x8b, 0xe6, 0x44, 0xe9, 0xa2, 0xec, 0x7a, 0xf0, 0xc0, 0xf3, 0xd3, 0xf6, 0x39, 0xfa, 0xb3, 0xfd, + 0x59, 0xff, 0x1f, 0x00, 0x43, 0x02, 0xdb, 0x03, 0x58, 0x04, 0x1e, 0x05, 0xb5, 0x06, 0xed, 0x07, + 0x40, 0x08, 0x65, 0x06, 0x5e, 0x04, 0x39, 0x03, 0x41, 0x03, 0x25, 0x04, 0xfa, 0x04, 0x89, 0x07, + 0x13, 0x09, 0x33, 0x0b, 0x29, 0x0e, 0xb3, 0x0f, 0xed, 0x10, 0x60, 0x11, 0x85, 0x11, 0xfe, 0x0f, + 0xd5, 0x0c, 0x16, 0x09, 0x17, 0x05, 0x3e, 0xff, 0x67, 0xf8, 0xd1, 0xf2, 0xf7, 0xee, 0x72, 0xec, + 0x95, 0xea, 0x0e, 0xeb, 0x3c, 0xed, 0x9c, 0xf0, 0x4f, 0xf3, 0xb0, 0xf5, 0x90, 0xf8, 0xaa, 0xfa, + 0x22, 0xfd, 0x8e, 0xff, 0x25, 0x02, 0xee, 0x02, 0xda, 0x02, 0x11, 0x04, 0xb6, 0x04, 0x12, 0x05, + 0x01, 0x05, 0xeb, 0x05, 0x86, 0x06, 0x7b, 0x04, 0xeb, 0x02, 0x46, 0x01, 0x82, 0x00, 0x04, 0x01, + 0x75, 0x01, 0xa1, 0x02, 0xaa, 0x04, 0x9f, 0x06, 0x26, 0x08, 0xf9, 0x09, 0xc1, 0x0a, 0xa5, 0x0a, + 0x9d, 0x0a, 0x59, 0x0a, 0xdf, 0x08, 0xa7, 0x05, 0xae, 0x02, 0xc0, 0xff, 0x25, 0xfb, 0x0e, 0xf6, + 0x1b, 0xf2, 0x67, 0xef, 0xd3, 0xec, 0x5a, 0xea, 0xa5, 0xe9, 0xff, 0xeb, 0xe7, 0xee, 0xdc, 0xf1, + 0x5f, 0xf5, 0x0f, 0xf9, 0x0f, 0xfd, 0x7f, 0x00, 0xe3, 0x04, 0xe6, 0x08, 0x46, 0x0b, 0xf7, 0x0c, + 0xfd, 0x0e, 0x37, 0x10, 0x4a, 0x10, 0xa6, 0x0e, 0xc4, 0x0d, 0xe5, 0x0c, 0x41, 0x0a, 0x2f, 0x08, + 0x11, 0x06, 0xa9, 0x04, 0x45, 0x04, 0xae, 0x03, 0xf6, 0x04, 0x11, 0x06, 0xa6, 0x06, 0x75, 0x08, + 0x19, 0x09, 0x87, 0x08, 0x78, 0x07, 0x43, 0x06, 0xad, 0x04, 0x55, 0x02, 0xc5, 0xfe, 0x25, 0xfb, + 0xe6, 0xf8, 0xf2, 0xf4, 0x96, 0xf0, 0x3d, 0xec, 0x90, 0xe8, 0x2e, 0xe6, 0x8a, 0xe3, 0xd4, 0xe3, + 0x71, 0xe6, 0x28, 0xe9, 0x45, 0xec, 0x06, 0xf0, 0xd7, 0xf3, 0xc5, 0xf7, 0x36, 0xfd, 0x65, 0x03, + 0xb5, 0x08, 0x93, 0x0b, 0xa4, 0x0d, 0xd0, 0x0f, 0x5a, 0x12, 0x7e, 0x12, 0x96, 0x11, 0x5f, 0x12, + 0x00, 0x12, 0xc4, 0x10, 0x38, 0x0e, 0x81, 0x0b, 0x18, 0x0a, 0xce, 0x08, 0x42, 0x08, 0xe5, 0x08, + 0x9c, 0x09, 0x78, 0x09, 0x9b, 0x0a, 0xc8, 0x0a, 0xec, 0x08, 0xb1, 0x07, 0xf8, 0x06, 0x90, 0x06, + 0x42, 0x04, 0x56, 0x00, 0x38, 0xfd, 0x7c, 0xf9, 0xab, 0xf4, 0x5a, 0xef, 0x5f, 0xe9, 0x81, 0xe5, + 0xbc, 0xe1, 0xb7, 0xdd, 0x4a, 0xdd, 0x1d, 0xdf, 0x70, 0xe1, 0xd0, 0xe4, 0xc6, 0xe8, 0xa4, 0xed, + 0x7c, 0xf2, 0x3b, 0xf7, 0x58, 0xfd, 0xf6, 0x01, 0xe2, 0x03, 0x93, 0x05, 0x61, 0x08, 0xe1, 0x09, + 0xb1, 0x0a, 0x29, 0x0b, 0x7c, 0x0c, 0xb0, 0x0e, 0x3d, 0x0f, 0x88, 0x0f, 0x97, 0x0f, 0x34, 0x10, + 0x6f, 0x10, 0xb5, 0x10, 0x30, 0x12, 0x43, 0x13, 0x2a, 0x14, 0xe1, 0x14, 0x24, 0x15, 0x83, 0x14, + 0x5d, 0x13, 0xa2, 0x12, 0x97, 0x12, 0x45, 0x10, 0x38, 0x0d, 0x03, 0x0b, 0xe4, 0x06, 0x34, 0x02, + 0xd8, 0xfb, 0xa4, 0xf4, 0x06, 0xef, 0x38, 0xe8, 0x5b, 0xe2, 0xb8, 0xdf, 0xc5, 0xde, 0x64, 0xdf, + 0xc4, 0xe0, 0x97, 0xe3, 0xdb, 0xe7, 0xfb, 0xeb, 0xd8, 0xef, 0x93, 0xf4, 0xec, 0xf8, 0x09, 0xfb, + 0xb3, 0xfd, 0x5d, 0x00, 0xea, 0x01, 0x80, 0x02, 0x1f, 0x02, 0xc5, 0x03, 0x23, 0x05, 0xd1, 0x05, + 0xab, 0x06, 0xbc, 0x06, 0x8a, 0x06, 0x6b, 0x06, 0xc9, 0x06, 0x15, 0x09, 0x4e, 0x0a, 0x70, 0x0b, + 0xab, 0x0d, 0x27, 0x0f, 0xac, 0x10, 0x41, 0x11, 0xf9, 0x12, 0x08, 0x13, 0x56, 0x11, 0x97, 0x0f, + 0x15, 0x0d, 0xce, 0x0a, 0x78, 0x07, 0x14, 0x02, 0x54, 0xfc, 0x1c, 0xf7, 0x17, 0xf1, 0xf1, 0xec, + 0x1c, 0xec, 0x17, 0xec, 0xba, 0xed, 0x9a, 0xef, 0x73, 0xf2, 0x7a, 0xf6, 0x76, 0xf8, 0x5a, 0xfb, + 0x04, 0xff, 0x6d, 0x01, 0x9d, 0x02, 0x1c, 0x04, 0x2c, 0x05, 0x72, 0x06, 0x90, 0x05, 0x69, 0x04, + 0x55, 0x06, 0x2b, 0x07, 0x52, 0x06, 0x57, 0x05, 0xd5, 0x02, 0xea, 0x00, 0xa9, 0xfe, 0x64, 0xfd, + 0xcf, 0xfd, 0x9b, 0xfd, 0xcf, 0xfe, 0x7b, 0x01, 0x11, 0x04, 0xb8, 0x04, 0x06, 0x06, 0xc2, 0x07, + 0x26, 0x08, 0x98, 0x07, 0xc1, 0x05, 0x71, 0x03, 0x13, 0x01, 0x19, 0xfd, 0x3e, 0xf7, 0xdb, 0xf2, + 0x89, 0xef, 0x7e, 0xec, 0x06, 0xea, 0x83, 0xe9, 0x71, 0xea, 0x3c, 0xec, 0x83, 0xef, 0xd2, 0xf3, + 0xda, 0xf7, 0x96, 0xfa, 0xda, 0xfe, 0x90, 0x03, 0x66, 0x06, 0x95, 0x08, 0xb6, 0x09, 0x06, 0x0c, + 0x01, 0x0e, 0xa6, 0x0d, 0x24, 0x0e, 0x47, 0x0f, 0x0d, 0x10, 0x25, 0x0f, 0x46, 0x0c, 0x2e, 0x0a, + 0x46, 0x08, 0x4d, 0x06, 0x44, 0x05, 0x7d, 0x04, 0x41, 0x03, 0x68, 0x03, 0x58, 0x05, 0x80, 0x05, + 0x8c, 0x05, 0x8c, 0x05, 0x90, 0x05, 0x68, 0x05, 0x3f, 0x03, 0x4c, 0x00, 0xf1, 0xfd, 0xf8, 0xfa, + 0xca, 0xf6, 0x8f, 0xf2, 0x0a, 0xee, 0x37, 0xea, 0x9c, 0xe5, 0xd3, 0xe1, 0x5c, 0xdf, 0xc1, 0xde, + 0x91, 0xdf, 0xba, 0xe1, 0x89, 0xe5, 0xfe, 0xe8, 0x3e, 0xed, 0x62, 0xf2, 0xf3, 0xf7, 0x11, 0xfe, + 0x9b, 0x02, 0x85, 0x06, 0x47, 0x0b, 0x60, 0x0e, 0x16, 0x0f, 0x37, 0x10, 0x78, 0x11, 0x57, 0x12, + 0x70, 0x12, 0x73, 0x11, 0xfc, 0x10, 0x7f, 0x0f, 0xd2, 0x0d, 0x91, 0x0d, 0x74, 0x0e, 0x9d, 0x0e, + 0x0f, 0x10, 0x90, 0x11, 0x55, 0x12, 0x47, 0x12, 0xca, 0x10, 0x18, 0x10, 0x2e, 0x0e, 0x97, 0x0a, + 0x88, 0x07, 0x60, 0x04, 0xa7, 0x00, 0xbe, 0xfc, 0xfe, 0xf7, 0x0f, 0xf4, 0x5c, 0xef, 0x8d, 0xe9, + 0xf3, 0xe5, 0x85, 0xe3, 0xc6, 0xe2, 0xd6, 0xe2, 0x53, 0xe4, 0xd7, 0xe6, 0xb8, 0xe9, 0x43, 0xed, + 0xa9, 0xf1, 0x3a, 0xf7, 0xeb, 0xfc, 0x60, 0x00, 0x49, 0x04, 0x49, 0x08, 0x7b, 0x0a, 0xa3, 0x0b, + 0xfb, 0x0b, 0xdf, 0x0d, 0xba, 0x0e, 0xa7, 0x0e, 0xb8, 0x0e, 0x69, 0x0e, 0x3a, 0x0d, 0xdb, 0x0b, + 0xc9, 0x0b, 0x59, 0x0b, 0x95, 0x0b, 0x20, 0x0d, 0xae, 0x0e, 0x9e, 0x10, 0xb4, 0x10, 0xcb, 0x0f, + 0xe5, 0x10, 0x3f, 0x10, 0xb7, 0x0e, 0x51, 0x0d, 0x57, 0x0b, 0x75, 0x08, 0xa0, 0x04, 0x17, 0x00, + 0xf9, 0xfa, 0xc9, 0xf5, 0x12, 0xef, 0x1c, 0xea, 0x00, 0xe6, 0x29, 0xe3, 0x20, 0xe3, 0xb8, 0xe3, + 0x83, 0xe6, 0xad, 0xe8, 0x7f, 0xeb, 0x7a, 0xf0, 0x1f, 0xf6, 0x3c, 0xfa, 0x48, 0xfc, 0x01, 0xff, + 0x97, 0x01, 0x0e, 0x03, 0x4e, 0x03, 0xcd, 0x03, 0x43, 0x05, 0x10, 0x07, 0x74, 0x08, 0xae, 0x08, + 0x88, 0x09, 0x9b, 0x08, 0xa5, 0x08, 0xe3, 0x08, 0x0e, 0x09, 0x0e, 0x09, 0x4c, 0x0a, 0x71, 0x0c, + 0x97, 0x0b, 0x5d, 0x0c, 0x00, 0x0d, 0xa1, 0x10, 0x02, 0x11, 0x02, 0x11, 0xb6, 0x0e, 0xf4, 0x0c, + 0x78, 0x0a, 0x4e, 0x06, 0xed, 0x03, 0x7c, 0xfe, 0x2a, 0xfa, 0xff, 0xf3, 0x11, 0xee, 0x0c, 0xe7, + 0xd6, 0xe1, 0x85, 0xe0, 0x47, 0xe1, 0x3d, 0xe3, 0xc1, 0xe5, 0x01, 0xe9, 0x63, 0xed, 0xfe, 0xf0, + 0xa8, 0xf4, 0xc1, 0xf7, 0xd8, 0xfc, 0x44, 0x00, 0x29, 0x02, 0x87, 0x03, 0x62, 0x01, 0x99, 0x03, + 0x2d, 0x04, 0xf0, 0x04, 0x59, 0x05, 0x64, 0x06, 0x75, 0x06, 0x51, 0x07, 0x9d, 0x08, 0x9b, 0x07, + 0x1e, 0x09, 0xb0, 0x0a, 0x0b, 0x0c, 0xa3, 0x0f, 0x25, 0x10, 0x10, 0x14, 0x9e, 0x16, 0xba, 0x16, + 0xdf, 0x14, 0xcf, 0x13, 0x5f, 0x12, 0xf6, 0x0e, 0x9b, 0x0e, 0x17, 0x09, 0x2e, 0x05, 0xf6, 0xfe, + 0x0d, 0xf8, 0x5c, 0xf3, 0x44, 0xed, 0x6a, 0xea, 0xd8, 0xe8, 0x47, 0xea, 0x22, 0xec, 0x78, 0xed, + 0xe1, 0xf1, 0x42, 0xf4, 0xd0, 0xf8, 0x41, 0xfb, 0xce, 0xff, 0xba, 0x03, 0x6f, 0x05, 0x26, 0x08, + 0x78, 0x06, 0xfd, 0x06, 0x21, 0x07, 0xcb, 0x08, 0xef, 0x07, 0xde, 0x07, 0x2f, 0x07, 0x41, 0x04, + 0xa3, 0x03, 0x19, 0x01, 0x6c, 0x00, 0x61, 0x00, 0x3a, 0xfe, 0xc7, 0x00, 0x99, 0x00, 0x1e, 0x03, + 0xfd, 0x04, 0x50, 0x08, 0x67, 0x08, 0x27, 0x08, 0xd4, 0x07, 0x8c, 0x04, 0x70, 0x03, 0x9b, 0xfe, + 0x10, 0xfb, 0x1a, 0xf6, 0x57, 0xf0, 0x61, 0xeb, 0x76, 0xe5, 0x91, 0xe1, 0x32, 0xde, 0xbf, 0xdd, + 0xfd, 0xdf, 0x0e, 0xe2, 0x08, 0xe7, 0x8b, 0xea, 0x5b, 0xef, 0xce, 0xf2, 0xaa, 0xf7, 0xa7, 0xfc, + 0x24, 0x01, 0xa9, 0x07, 0xfc, 0x09, 0xe4, 0x0c, 0xdd, 0x0d, 0xe1, 0x10, 0xe9, 0x12, 0x93, 0x14, + 0x1c, 0x16, 0xfb, 0x14, 0xb3, 0x16, 0x38, 0x16, 0xdc, 0x14, 0x0f, 0x16, 0x73, 0x13, 0xbc, 0x14, + 0x21, 0x15, 0x79, 0x16, 0x65, 0x16, 0xae, 0x19, 0x1e, 0x1a, 0xb1, 0x18, 0xb1, 0x17, 0xa7, 0x12, + 0x86, 0x10, 0x73, 0x0c, 0x00, 0x07, 0xa0, 0x02, 0x92, 0xfc, 0xd2, 0xf6, 0xba, 0xee, 0x72, 0xe7, + 0x4d, 0xe0, 0xe3, 0xd9, 0x9a, 0xd8, 0x9f, 0xd6, 0xb1, 0xd7, 0xef, 0xd7, 0xb1, 0xdb, 0xfa, 0xde, + 0x0b, 0xe2, 0xfe, 0xe6, 0x6b, 0xea, 0x0d, 0xf2, 0xcc, 0xf7, 0xeb, 0xfc, 0x7b, 0xfe, 0x00, 0x00, + 0xba, 0x02, 0x4a, 0x03, 0x41, 0x05, 0x2a, 0x05, 0x2e, 0x06, 0x4f, 0x08, 0xb7, 0x08, 0x22, 0x0b, + 0x20, 0x0c, 0xf2, 0x0e, 0xd3, 0x0f, 0x09, 0x14, 0xd9, 0x14, 0xda, 0x17, 0x67, 0x1c, 0xeb, 0x1d, + 0x5b, 0x1f, 0xad, 0x1c, 0xe5, 0x19, 0x96, 0x18, 0x18, 0x15, 0x28, 0x12, 0xce, 0x0e, 0x86, 0x0b, + 0x2b, 0x06, 0xcd, 0xff, 0xd8, 0xf8, 0x8f, 0xf0, 0x9e, 0xeb, 0x42, 0xe7, 0x1e, 0xe7, 0x3a, 0xe5, + 0x7f, 0xe6, 0x2b, 0xe7, 0xee, 0xe7, 0xcd, 0xeb, 0xa5, 0xee, 0x28, 0xf3, 0x65, 0xf7, 0x97, 0xfc, + 0xb4, 0xff, 0xe0, 0x00, 0x15, 0x02, 0xe5, 0x00, 0xe9, 0x02, 0x22, 0x02, 0xa1, 0x01, 0x12, 0x03, + 0x64, 0x02, 0xb8, 0x03, 0xe6, 0x02, 0x49, 0x04, 0xfa, 0x02, 0x9f, 0x05, 0x15, 0x07, 0x2e, 0x07, + 0xcf, 0x0a, 0x56, 0x0c, 0x67, 0x0f, 0x0f, 0x11, 0x03, 0x11, 0xc1, 0x10, 0x4f, 0x10, 0x5b, 0x0f, + 0x0c, 0x0c, 0xf3, 0x0a, 0x8a, 0x06, 0x00, 0x01, 0x80, 0xfc, 0xbd, 0xf4, 0xfc, 0xef, 0x3d, 0xe9, + 0xc0, 0xe7, 0xb5, 0xe5, 0xcd, 0xe5, 0x6b, 0xe7, 0x00, 0xe9, 0x98, 0xec, 0xb7, 0xef, 0xa2, 0xf4, + 0x3a, 0xf7, 0x18, 0xfb, 0xca, 0xfe, 0xcc, 0xff, 0x5a, 0x02, 0x2d, 0x00, 0x75, 0x01, 0xcb, 0x01, + 0xf8, 0x01, 0x8c, 0x03, 0x6a, 0x03, 0x68, 0x05, 0x18, 0x05, 0x8b, 0x07, 0x8c, 0x07, 0x7d, 0x08, + 0x7c, 0x09, 0x3d, 0x08, 0x4e, 0x09, 0x1d, 0x0a, 0x9a, 0x0c, 0x22, 0x10, 0xc8, 0x11, 0x7f, 0x11, + 0x30, 0x10, 0x63, 0x10, 0x0a, 0x0d, 0x7e, 0x0c, 0xaf, 0x0a, 0x14, 0x06, 0x08, 0x02, 0x96, 0xfa, + 0x7e, 0xf4, 0xdd, 0xeb, 0x67, 0xe7, 0x49, 0xe3, 0x0a, 0xe2, 0x22, 0xe3, 0x9c, 0xe4, 0xbf, 0xe7, + 0xd9, 0xe9, 0x84, 0xee, 0x47, 0xf2, 0x98, 0xf6, 0x90, 0xfd, 0x14, 0x01, 0xe5, 0x06, 0x91, 0x06, + 0xd6, 0x06, 0xac, 0x07, 0x57, 0x07, 0xb3, 0x07, 0x9f, 0x08, 0xeb, 0x0a, 0x64, 0x0a, 0x29, 0x0c, + 0x6e, 0x0b, 0xc2, 0x0a, 0xa6, 0x0b, 0x4d, 0x0a, 0x9f, 0x0a, 0xf5, 0x09, 0x68, 0x0a, 0xbb, 0x0c, + 0xd1, 0x0e, 0xaf, 0x0f, 0x9b, 0x0c, 0xb3, 0x0b, 0x99, 0x09, 0xd1, 0x07, 0x2a, 0x06, 0xa0, 0x02, + 0x47, 0xff, 0x5d, 0xf9, 0x56, 0xf4, 0xd8, 0xec, 0x47, 0xe7, 0xbb, 0xe2, 0x1f, 0xe0, 0x1f, 0xdf, + 0x00, 0xdf, 0x69, 0xe1, 0x51, 0xe3, 0x5d, 0xe6, 0xa1, 0xea, 0x05, 0xed, 0xef, 0xf1, 0xc9, 0xf5, + 0x66, 0xfc, 0x68, 0x00, 0x1b, 0x03, 0x56, 0x05, 0xb2, 0x07, 0x96, 0x09, 0xb0, 0x0a, 0xb9, 0x0d, + 0xaf, 0x0e, 0x96, 0x10, 0x08, 0x12, 0xa2, 0x11, 0x9b, 0x12, 0x30, 0x12, 0x70, 0x12, 0xf0, 0x11, + 0x61, 0x11, 0x13, 0x13, 0x97, 0x15, 0x4f, 0x1a, 0x74, 0x1a, 0x8d, 0x1a, 0xb8, 0x18, 0xb2, 0x16, + 0xe1, 0x13, 0x4d, 0x10, 0xec, 0x0c, 0x08, 0x06, 0x44, 0x01, 0x43, 0xfa, 0x45, 0xf3, 0x22, 0xed, + 0x4c, 0xe6, 0x35, 0xe2, 0x93, 0xdf, 0x88, 0xe0, 0xda, 0xe0, 0x8e, 0xe1, 0x18, 0xe4, 0x4a, 0xe4, + 0xdb, 0xe8, 0x73, 0xea, 0xd0, 0xef, 0xd7, 0xf4, 0x0f, 0xf9, 0x96, 0xfb, 0xdc, 0xfd, 0xbf, 0x00, + 0x46, 0x01, 0xcf, 0x04, 0x11, 0x07, 0x5b, 0x07, 0x35, 0x09, 0x62, 0x0a, 0x8f, 0x0c, 0xc0, 0x0d, + 0x4e, 0x0f, 0xb6, 0x10, 0x17, 0x11, 0x3a, 0x12, 0x5f, 0x12, 0x12, 0x17, 0x7b, 0x19, 0x94, 0x1b, + 0x95, 0x1b, 0x72, 0x1a, 0x09, 0x19, 0x04, 0x16, 0x03, 0x15, 0xde, 0x10, 0x1c, 0x0d, 0x1f, 0x08, + 0x99, 0x01, 0xe5, 0xfc, 0xb3, 0xf5, 0x74, 0xef, 0xa5, 0xe8, 0x56, 0xe5, 0x4f, 0xe3, 0x2c, 0xe1, + 0xae, 0xe1, 0x8c, 0xe0, 0x4b, 0xe3, 0xf8, 0xe3, 0x11, 0xe7, 0xcc, 0xeb, 0xba, 0xf0, 0xbd, 0xf4, + 0xfe, 0xf6, 0x16, 0xfa, 0x3c, 0xfa, 0x3d, 0xfb, 0xd5, 0xfc, 0x6a, 0xfd, 0xc3, 0xfe, 0x40, 0xff, + 0xa9, 0x01, 0xe8, 0x02, 0x84, 0x04, 0x8f, 0x06, 0x0a, 0x08, 0x72, 0x0a, 0x45, 0x09, 0x47, 0x0d, + 0xdd, 0x0f, 0xe7, 0x12, 0x22, 0x14, 0x3b, 0x14, 0xf2, 0x13, 0xd2, 0x11, 0xed, 0x11, 0x8f, 0x10, + 0xe7, 0x0e, 0x39, 0x0d, 0xc8, 0x08, 0xb0, 0x04, 0x90, 0xfe, 0xab, 0xf9, 0xe5, 0xf2, 0xbe, 0xee, + 0x59, 0xec, 0xfb, 0xe9, 0x4e, 0xe9, 0x83, 0xe7, 0xe8, 0xe8, 0xe1, 0xe8, 0xe8, 0xea, 0xa8, 0xee, + 0xe0, 0xf3, 0xce, 0xf8, 0x01, 0xfb, 0x86, 0xfe, 0xec, 0xff, 0x0a, 0x00, 0xaa, 0x00, 0xa8, 0x00, + 0x9a, 0x01, 0x68, 0x01, 0xb2, 0x02, 0x01, 0x03, 0x37, 0x03, 0x72, 0x03, 0x76, 0x03, 0xed, 0x05, + 0x73, 0x04, 0xac, 0x04, 0x27, 0x05, 0x92, 0x08, 0x9d, 0x0a, 0xd3, 0x0b, 0x99, 0x0d, 0x4e, 0x0d, + 0xcd, 0x0d, 0x76, 0x0d, 0xb4, 0x0c, 0x39, 0x0c, 0x5e, 0x09, 0xb6, 0x06, 0x25, 0x01, 0x0e, 0xfd, + 0xa0, 0xf6, 0xc6, 0xf0, 0x49, 0xec, 0x48, 0xe9, 0xe5, 0xe9, 0xab, 0xe8, 0xeb, 0xea, 0x4d, 0xed, + 0x9d, 0xef, 0x3b, 0xf2, 0xb1, 0xf5, 0x18, 0xfc, 0x63, 0xff, 0xc8, 0x03, 0x93, 0x07, 0x9e, 0x08, + 0xbd, 0x09, 0x9b, 0x09, 0x81, 0x0b, 0x89, 0x0b, 0xb2, 0x0c, 0x58, 0x0d, 0xa9, 0x0e, 0x7f, 0x10, + 0x8f, 0x0f, 0x27, 0x11, 0x57, 0x10, 0xf1, 0x0e, 0x08, 0x0c, 0xf7, 0x0a, 0x2a, 0x0c, 0xc1, 0x0c, + 0xdb, 0x0e, 0x75, 0x0e, 0xe8, 0x0c, 0x81, 0x0b, 0x27, 0x09, 0x20, 0x09, 0xcc, 0x06, 0xfc, 0x04, + 0x9c, 0xff, 0x5a, 0xfb, 0xc1, 0xf5, 0x4c, 0xee, 0xd7, 0xe7, 0x50, 0xe1, 0xd8, 0xde, 0x24, 0xdd, + 0x7c, 0xdc, 0x3f, 0xdd, 0x15, 0xdf, 0xf7, 0xe1, 0xea, 0xe3, 0xde, 0xe8, 0x17, 0xee, 0xca, 0xf2, + 0x1f, 0xf9, 0x07, 0xfe, 0xe6, 0x01, 0x3f, 0x03, 0xf6, 0x06, 0xe4, 0x08, 0x4f, 0x0b, 0xe4, 0x0c, + 0x3e, 0x0e, 0x2a, 0x12, 0x30, 0x13, 0xf3, 0x14, 0xd2, 0x16, 0x7e, 0x18, 0xf3, 0x17, 0xd8, 0x16, + 0xa1, 0x17, 0x9a, 0x17, 0xbd, 0x19, 0x3f, 0x1b, 0x84, 0x1b, 0x4d, 0x1b, 0xb0, 0x18, 0x33, 0x17, + 0x1d, 0x14, 0x3d, 0x13, 0x09, 0x0e, 0x0f, 0x09, 0xd1, 0x03, 0x1a, 0xfd, 0xe1, 0xf6, 0x41, 0xee, + 0x4d, 0xe8, 0xed, 0xe3, 0xc4, 0xe0, 0x41, 0xde, 0xaa, 0xdd, 0x6b, 0xde, 0x21, 0xdd, 0xcd, 0xde, + 0xcc, 0xe1, 0x6e, 0xe5, 0xf8, 0xe9, 0x90, 0xed, 0x20, 0xf3, 0x36, 0xf5, 0x72, 0xf8, 0x66, 0xfa, + 0x77, 0xfd, 0x82, 0x00, 0xfd, 0x00, 0x60, 0x03, 0x0d, 0x05, 0x12, 0x06, 0xd2, 0x06, 0x57, 0x09, + 0xfd, 0x0a, 0x51, 0x0a, 0x9b, 0x0b, 0xf3, 0x0b, 0x9e, 0x0f, 0xcd, 0x12, 0x20, 0x15, 0x28, 0x18, + 0x9e, 0x18, 0x2c, 0x1a, 0x31, 0x18, 0xb2, 0x18, 0xa6, 0x17, 0xa3, 0x14, 0x86, 0x10, 0xca, 0x0a, + 0x5c, 0x06, 0x82, 0xff, 0x24, 0xf9, 0x34, 0xf3, 0xfc, 0xee, 0xeb, 0xeb, 0xc2, 0xe8, 0xc1, 0xe9, + 0x8c, 0xe8, 0x20, 0xe7, 0xc8, 0xe6, 0xa3, 0xe8, 0xbf, 0xec, 0xbe, 0xee, 0x36, 0xf4, 0xb6, 0xf6, + 0x5a, 0xf9, 0x07, 0xfb, 0xe0, 0xfc, 0x89, 0xff, 0x29, 0x01, 0x59, 0x02, 0x4d, 0x03, 0xd2, 0x04, + 0xfd, 0x04, 0xe0, 0x05, 0x2a, 0x09, 0xc2, 0x08, 0xac, 0x09, 0x69, 0x08, 0x2c, 0x09, 0xcd, 0x0b, + 0xe5, 0x0d, 0xce, 0x10, 0x90, 0x11, 0xfa, 0x12, 0x6a, 0x11, 0x11, 0x11, 0x19, 0x11, 0x76, 0x10, + 0x1c, 0x0f, 0xc5, 0x0b, 0xca, 0x08, 0x5a, 0x04, 0xc9, 0xfe, 0x91, 0xf7, 0xb7, 0xf1, 0x49, 0xee, + 0xee, 0xe9, 0x36, 0xe8, 0xe6, 0xe7, 0xe7, 0xe6, 0x06, 0xe6, 0xf9, 0xe5, 0x88, 0xe9, 0xa5, 0xec, + 0xe5, 0xf1, 0x8c, 0xf6, 0x93, 0xfb, 0x0d, 0xfe, 0x6e, 0xff, 0x85, 0x01, 0xa8, 0x02, 0xc5, 0x02, + 0xd6, 0x01, 0xe8, 0x02, 0xfa, 0x03, 0xa8, 0x03, 0xa7, 0x05, 0xf0, 0x05, 0x84, 0x07, 0x91, 0x07, + 0xa7, 0x07, 0x32, 0x08, 0xb0, 0x09, 0xe3, 0x0b, 0xa2, 0x0c, 0xbb, 0x0e, 0x3e, 0x0e, 0x51, 0x0d, + 0x5d, 0x0c, 0x15, 0x0c, 0x3f, 0x0c, 0x60, 0x09, 0x85, 0x07, 0xf5, 0x04, 0xd5, 0x01, 0x80, 0xfc, + 0xc9, 0xf4, 0xad, 0xf0, 0x94, 0xeb, 0x24, 0xe8, 0x27, 0xe6, 0x4c, 0xe6, 0x08, 0xe6, 0x38, 0xe5, + 0x72, 0xe7, 0x85, 0xe9, 0xad, 0xee, 0xcf, 0xf2, 0x7d, 0xf8, 0x54, 0xfe, 0x2e, 0x01, 0x66, 0x04, + 0x0a, 0x07, 0xd5, 0x09, 0x21, 0x0a, 0x9d, 0x09, 0xc3, 0x0b, 0x57, 0x0b, 0xfc, 0x0c, 0x49, 0x0d, + 0xd7, 0x0e, 0x0f, 0x0f, 0x4f, 0x0e, 0x2d, 0x0d, 0xd1, 0x0b, 0x2b, 0x0d, 0x76, 0x0c, 0xeb, 0x0d, + 0xb3, 0x0e, 0x60, 0x0e, 0xf0, 0x0d, 0xe2, 0x0b, 0x4e, 0x0c, 0x31, 0x0b, 0x0e, 0x09, 0x22, 0x06, + 0xe9, 0x02, 0x56, 0xff, 0x8f, 0xf7, 0x7a, 0xf1, 0x49, 0xeb, 0x2f, 0xe6, 0xd6, 0xe1, 0xcd, 0xe0, + 0x3e, 0xe1, 0x5b, 0xe0, 0xc8, 0xe1, 0xb9, 0xe2, 0xd2, 0xe6, 0x21, 0xeb, 0x0c, 0xef, 0x05, 0xf5, + 0x66, 0xf9, 0x5e, 0xfd, 0xbb, 0xff, 0x24, 0x03, 0x03, 0x06, 0xe5, 0x07, 0x53, 0x0b, 0x9d, 0x0c, + 0x1a, 0x0f, 0x0a, 0x10, 0xf6, 0x12, 0x11, 0x15, 0x78, 0x16, 0x3a, 0x17, 0x84, 0x15, 0x79, 0x16, + 0xf4, 0x15, 0xe9, 0x15, 0xc6, 0x16, 0xd5, 0x17, 0xac, 0x18, 0xe6, 0x16, 0x6d, 0x16, 0x73, 0x15, + 0xa8, 0x14, 0x89, 0x12, 0x78, 0x0e, 0x6f, 0x0b, 0xdd, 0x04, 0xf3, 0xfd, 0xc1, 0xf5, 0x90, 0xef, + 0x0c, 0xe8, 0xeb, 0xe1, 0x10, 0xe0, 0x4e, 0xdd, 0xcb, 0xdb, 0x85, 0xda, 0xdd, 0xda, 0xe6, 0xdd, + 0x65, 0xe0, 0xbe, 0xe4, 0x34, 0xe9, 0x67, 0xee, 0xea, 0xf1, 0x81, 0xf5, 0x75, 0xf9, 0xf9, 0xfb, + 0xd2, 0xfe, 0x7c, 0x00, 0xbc, 0x03, 0xb0, 0x04, 0xf4, 0x06, 0xdb, 0x08, 0xc0, 0x0a, 0x94, 0x0d, + 0x37, 0x0d, 0x04, 0x0e, 0xa8, 0x0f, 0x10, 0x11, 0x9e, 0x12, 0xc6, 0x14, 0x62, 0x17, 0x16, 0x18, + 0x5e, 0x18, 0x4a, 0x18, 0xd9, 0x18, 0xee, 0x18, 0x19, 0x16, 0xa6, 0x14, 0xe0, 0x11, 0xad, 0x0d, + 0x4e, 0x06, 0x9e, 0x00, 0x40, 0xfa, 0xa1, 0xf3, 0x8c, 0xef, 0xaa, 0xeb, 0xd4, 0xe9, 0xe6, 0xe7, + 0x37, 0xe5, 0x71, 0xe4, 0x04, 0xe4, 0xa4, 0xe5, 0xaa, 0xe7, 0xe5, 0xec, 0x99, 0xef, 0xb4, 0xf1, + 0x8e, 0xf5, 0x92, 0xf7, 0xcd, 0xfa, 0x23, 0xfc, 0x6e, 0xfe, 0x94, 0xff, 0x72, 0x00, 0xe0, 0x01, + 0xd8, 0x01, 0x84, 0x04, 0x5b, 0x05, 0xc6, 0x04, 0xfd, 0x04, 0x34, 0x05, 0x79, 0x06, 0x15, 0x08, + 0xd4, 0x0b, 0x88, 0x0e, 0x5a, 0x10, 0xc1, 0x10, 0xd2, 0x10, 0xfd, 0x12, 0xf5, 0x11, 0x60, 0x11, + 0xaa, 0x0f, 0x83, 0x0e, 0x9c, 0x0a, 0x55, 0x05, 0xb1, 0x00, 0x60, 0xfa, 0xfc, 0xf4, 0x1a, 0xf1, + 0x89, 0xee, 0xe3, 0xed, 0x45, 0xec, 0x04, 0xec, 0xc5, 0xea, 0x98, 0xeb, 0x71, 0xec, 0xda, 0xef, + 0x8e, 0xf4, 0x19, 0xf8, 0xf2, 0xfb, 0x52, 0xfe, 0x0f, 0x02, 0xe0, 0x03, 0x07, 0x06, 0xa0, 0x07, + 0x09, 0x08, 0x77, 0x08, 0x0f, 0x08, 0x11, 0x09, 0x96, 0x0a, 0xfc, 0x0a, 0xc1, 0x09, 0x57, 0x09, + 0x2f, 0x09, 0x0d, 0x08, 0x6f, 0x09, 0x21, 0x0a, 0xe4, 0x0b, 0xe1, 0x0c, 0x30, 0x0b, 0xc7, 0x0b, + 0xb8, 0x0b, 0xa7, 0x0b, 0xfe, 0x09, 0x63, 0x09, 0xcf, 0x07, 0x00, 0x04, 0x66, 0x00, 0x27, 0xfb, + 0x3d, 0xf6, 0xdc, 0xef, 0xd6, 0xea, 0x25, 0xe8, 0xec, 0xe5, 0xf5, 0xe4, 0xe2, 0xe2, 0x85, 0xe4, + 0xb5, 0xe5, 0xa5, 0xe8, 0x93, 0xed, 0xff, 0xf1, 0xdd, 0xf7, 0x17, 0xfc, 0x65, 0x01, 0x38, 0x05, + 0xdc, 0x08, 0x88, 0x0c, 0x0b, 0x0d, 0xac, 0x0e, 0x8a, 0x0e, 0xc3, 0x0e, 0x25, 0x10, 0x44, 0x12, + 0x4c, 0x13, 0xee, 0x11, 0x4d, 0x13, 0x88, 0x12, 0x08, 0x13, 0xd8, 0x12, 0x6f, 0x12, 0x99, 0x13, + 0x5a, 0x12, 0x3c, 0x11, 0x2d, 0x10, 0x79, 0x0f, 0x58, 0x0d, 0x21, 0x0b, 0xf9, 0x09, 0x6a, 0x07, + 0xc4, 0x04, 0xda, 0xff, 0xf6, 0xfa, 0x01, 0xf4, 0x33, 0xed, 0x68, 0xe8, 0x8f, 0xe3, 0x24, 0xe2, + 0xae, 0xde, 0x23, 0xdd, 0x53, 0xdc, 0x67, 0xdc, 0x1c, 0xdf, 0x40, 0xe3, 0x2d, 0xe9, 0x37, 0xed, + 0x25, 0xf2, 0x67, 0xf6, 0x83, 0xfa, 0xbd, 0xfe, 0x63, 0x01, 0x64, 0x04, 0xd4, 0x06, 0xe1, 0x08, + 0xc7, 0x09, 0xf3, 0x0b, 0xe4, 0x0e, 0x08, 0x0f, 0xdb, 0x10, 0x65, 0x10, 0x91, 0x11, 0x15, 0x12, + 0x32, 0x12, 0xcb, 0x13, 0x4f, 0x14, 0xf5, 0x13, 0xda, 0x12, 0x4a, 0x14, 0x46, 0x14, 0x19, 0x13, + 0x18, 0x13, 0x0a, 0x11, 0xe7, 0x0f, 0xa2, 0x0b, 0xe4, 0x05, 0xb1, 0xff, 0x01, 0xf8, 0xbe, 0xf1, + 0x87, 0xea, 0x9f, 0xe6, 0xed, 0xe2, 0xc5, 0xdf, 0x33, 0xde, 0xb1, 0xdc, 0x87, 0xdc, 0x4b, 0xde, + 0x79, 0xe2, 0x0b, 0xe6, 0x0c, 0xea, 0xa9, 0xed, 0xbe, 0xf0, 0xec, 0xf4, 0x8f, 0xf7, 0xfb, 0xfa, + 0x30, 0xfe, 0x36, 0x01, 0x68, 0x03, 0xc2, 0x04, 0x6a, 0x08, 0x4c, 0x0a, 0x35, 0x0c, 0x14, 0x0d, + 0x84, 0x0d, 0xcc, 0x0d, 0x0f, 0x0e, 0x83, 0x0e, 0x67, 0x10, 0x2e, 0x12, 0x62, 0x12, 0x55, 0x13, + 0x1a, 0x15, 0x5f, 0x15, 0x8b, 0x15, 0x11, 0x15, 0xd1, 0x15, 0xbe, 0x14, 0x97, 0x11, 0x45, 0x0d, + 0xfe, 0x06, 0xba, 0x00, 0xbd, 0xf9, 0xd6, 0xf3, 0xc7, 0xee, 0x6e, 0xeb, 0x43, 0xe8, 0xe7, 0xe5, + 0x8d, 0xe4, 0xb4, 0xe2, 0x57, 0xe4, 0x0f, 0xe6, 0x70, 0xe8, 0x54, 0xec, 0xf8, 0xee, 0x1d, 0xf3, + 0x4f, 0xf6, 0x9d, 0xf9, 0x36, 0xfc, 0x87, 0xfe, 0x31, 0x01, 0x76, 0x01, 0xcb, 0x03, 0x1e, 0x05, + 0xe4, 0x06, 0x84, 0x07, 0x06, 0x08, 0xcb, 0x08, 0xbc, 0x08, 0x24, 0x09, 0x5e, 0x09, 0xd9, 0x0b, + 0xa3, 0x0d, 0x41, 0x0e, 0xf2, 0x10, 0x17, 0x11, 0x73, 0x12, 0xba, 0x11, 0xe1, 0x11, 0xf9, 0x11, + 0xac, 0x10, 0x74, 0x0f, 0xb8, 0x0b, 0x4e, 0x08, 0x2b, 0x02, 0xb4, 0xfc, 0xd9, 0xf7, 0xb7, 0xf3, + 0xda, 0xf0, 0x02, 0xee, 0xaa, 0xed, 0x32, 0xeb, 0x1c, 0xea, 0x07, 0xeb, 0xb5, 0xeb, 0x6f, 0xef, + 0x82, 0xf2, 0xda, 0xf5, 0x94, 0xf9, 0x5d, 0xfd, 0x44, 0x00, 0x4e, 0x03, 0x6e, 0x06, 0x3e, 0x07, + 0x7b, 0x08, 0x7d, 0x08, 0xb0, 0x09, 0x16, 0x0a, 0xd0, 0x09, 0xbb, 0x09, 0x8b, 0x08, 0xa9, 0x08, + 0xde, 0x06, 0x33, 0x07, 0x5c, 0x09, 0x91, 0x09, 0x9f, 0x0a, 0xf3, 0x0a, 0x26, 0x0c, 0x7e, 0x0b, + 0x54, 0x0b, 0x59, 0x0b, 0xc2, 0x0a, 0x1f, 0x0a, 0x51, 0x07, 0x67, 0x04, 0x69, 0xff, 0xe3, 0xfa, + 0xb8, 0xf5, 0xac, 0xf0, 0x69, 0xed, 0x75, 0xe9, 0x9a, 0xe8, 0x72, 0xe6, 0x2f, 0xe4, 0x1b, 0xe4, + 0xb3, 0xe4, 0x2f, 0xe8, 0x2a, 0xec, 0xf8, 0xf0, 0xa6, 0xf4, 0xa4, 0xf9, 0xa1, 0xfd, 0xf6, 0x00, + 0x06, 0x06, 0x45, 0x09, 0xcb, 0x0c, 0x3a, 0x0e, 0x39, 0x0f, 0xac, 0x10, 0x00, 0x11, 0x85, 0x12, + 0x17, 0x12, 0xfc, 0x11, 0x7d, 0x11, 0x31, 0x10, 0x33, 0x11, 0x25, 0x11, 0x42, 0x10, 0xdf, 0x0e, + 0xd6, 0x0e, 0xd3, 0x0d, 0x25, 0x0d, 0xd5, 0x0b, 0xf8, 0x09, 0xbc, 0x09, 0x4b, 0x07, 0xc5, 0x04, + 0x7e, 0x01, 0x0d, 0xfd, 0xf1, 0xf7, 0xeb, 0xf1, 0x50, 0xec, 0x13, 0xe6, 0x40, 0xe2, 0xcc, 0xdf, + 0x70, 0xdc, 0x28, 0xda, 0x39, 0xd9, 0x6d, 0xda, 0xb3, 0xdc, 0xde, 0xe1, 0xea, 0xe5, 0x0c, 0xeb, + 0xc6, 0xf0, 0x1c, 0xf5, 0x11, 0xfa, 0x46, 0xfe, 0x51, 0x02, 0xfd, 0x04, 0x15, 0x07, 0xd3, 0x09, + 0xf1, 0x0b, 0x11, 0x0f, 0x7d, 0x10, 0x6d, 0x12, 0x55, 0x13, 0x16, 0x14, 0x4f, 0x15, 0x05, 0x17, + 0x5f, 0x19, 0x6b, 0x18, 0x78, 0x19, 0x5d, 0x19, 0xc3, 0x18, 0x15, 0x19, 0x0a, 0x17, 0x2c, 0x17, + 0xe8, 0x15, 0xc9, 0x14, 0x8f, 0x13, 0x61, 0x10, 0x6b, 0x0c, 0x99, 0x05, 0x61, 0xff, 0x43, 0xf8, + 0xb0, 0xf1, 0xec, 0xec, 0x7a, 0xe8, 0x10, 0xe5, 0xe8, 0xdf, 0x6f, 0xdd, 0xd8, 0xdb, 0xa0, 0xdd, + 0xff, 0xe0, 0xd4, 0xe3, 0x54, 0xe8, 0x00, 0xec, 0xf2, 0xef, 0xd5, 0xf3, 0x77, 0xf7, 0xc7, 0xfa, + 0xb3, 0xfc, 0x79, 0xff, 0x4b, 0x01, 0x8d, 0x04, 0xbe, 0x06, 0x25, 0x08, 0x37, 0x0a, 0xb3, 0x0a, + 0x39, 0x0b, 0x5b, 0x0b, 0x86, 0x0d, 0x5e, 0x0e, 0x43, 0x0f, 0xb7, 0x10, 0x4f, 0x11, 0x4a, 0x13, + 0x39, 0x14, 0xb9, 0x14, 0x59, 0x15, 0x06, 0x16, 0x57, 0x16, 0x04, 0x16, 0x3c, 0x14, 0x91, 0x0f, + 0xfe, 0x0a, 0xd9, 0x04, 0x1d, 0xfe, 0x77, 0xf8, 0x69, 0xf3, 0x85, 0xf0, 0x79, 0xec, 0x3f, 0xea, + 0xa3, 0xe7, 0x2d, 0xe7, 0xf9, 0xe8, 0x7f, 0xea, 0xec, 0xec, 0x06, 0xef, 0x28, 0xf2, 0x1e, 0xf4, + 0x65, 0xf7, 0x8e, 0xfa, 0xd6, 0xfb, 0x12, 0xff, 0x7d, 0x00, 0x50, 0x03, 0x20, 0x05, 0x78, 0x06, + 0x2b, 0x08, 0x90, 0x08, 0xea, 0x08, 0xcc, 0x07, 0x8a, 0x08, 0xb3, 0x08, 0x9d, 0x08, 0x9b, 0x08, + 0x86, 0x08, 0x7b, 0x0a, 0x60, 0x0b, 0xb0, 0x0c, 0x63, 0x0d, 0xab, 0x0d, 0x3b, 0x0e, 0xe4, 0x0d, + 0x97, 0x0d, 0x74, 0x0a, 0x6d, 0x07, 0x69, 0x03, 0x1a, 0xfe, 0x0c, 0xf9, 0x4d, 0xf3, 0x34, 0xf0, + 0x77, 0xec, 0xc7, 0xe9, 0x3f, 0xe7, 0x55, 0xe5, 0xf3, 0xe5, 0x66, 0xe7, 0xbe, 0xe9, 0xf6, 0xeb, + 0xcc, 0xef, 0x2b, 0xf3, 0xbc, 0xf6, 0x4e, 0xfb, 0x2f, 0xfe, 0x2b, 0x02, 0x6e, 0x04, 0x20, 0x07, + 0x42, 0x09, 0x59, 0x0a, 0x48, 0x0b, 0x98, 0x0b, 0x3d, 0x0c, 0x7d, 0x0a, 0x83, 0x0a, 0x98, 0x0a, + 0x52, 0x0a, 0x98, 0x0a, 0xcc, 0x09, 0x81, 0x0a, 0x65, 0x0b, 0x79, 0x0c, 0x5f, 0x0c, 0x0b, 0x0c, + 0x06, 0x0c, 0x86, 0x0a, 0x43, 0x0b, 0x10, 0x0a, 0xfa, 0x07, 0xae, 0x04, 0xbb, 0x00, 0x52, 0xfc, + 0x5c, 0xf6, 0x3f, 0xf2, 0x36, 0xee, 0x71, 0xeb, 0xc4, 0xe8, 0x35, 0xe5, 0xb4, 0xe2, 0xb6, 0xe1, + 0xf8, 0xe2, 0x6d, 0xe4, 0x0e, 0xe8, 0x25, 0xec, 0xd8, 0xef, 0x71, 0xf5, 0x16, 0xf9, 0x97, 0xfd, + 0x77, 0x01, 0xf1, 0x04, 0xdf, 0x08, 0xb5, 0x0b, 0x10, 0x0e, 0x2b, 0x0f, 0xbe, 0x10, 0x00, 0x11, + 0x64, 0x10, 0x3a, 0x10, 0xf2, 0x0f, 0xcd, 0x10, 0x09, 0x11, 0xd2, 0x11, 0xf7, 0x11, 0xa9, 0x11, + 0xfc, 0x11, 0x3f, 0x11, 0xe7, 0x10, 0x91, 0x0f, 0xac, 0x0f, 0x4d, 0x0f, 0x6f, 0x0d, 0x65, 0x0a, + 0x10, 0x06, 0xee, 0x01, 0xa3, 0xfc, 0x60, 0xf7, 0x56, 0xf2, 0x97, 0xed, 0x01, 0xea, 0x68, 0xe6, + 0xd9, 0xe2, 0x92, 0xdf, 0xc2, 0xde, 0xda, 0xde, 0x10, 0xe1, 0x4c, 0xe5, 0x8e, 0xe8, 0x44, 0xed, + 0x08, 0xf2, 0xda, 0xf6, 0x3a, 0xfb, 0xb6, 0xfe, 0x15, 0x02, 0x66, 0x06, 0x34, 0x0a, 0x97, 0x0b, + 0x9c, 0x0e, 0x7d, 0x10, 0x15, 0x12, 0x1c, 0x13, 0xee, 0x12, 0x61, 0x14, 0xef, 0x14, 0x64, 0x16, + 0x82, 0x16, 0x36, 0x16, 0x14, 0x17, 0x9e, 0x16, 0x6a, 0x17, 0x8d, 0x16, 0xdf, 0x15, 0x03, 0x15, + 0x9f, 0x14, 0x3c, 0x13, 0x7d, 0x10, 0x73, 0x0e, 0xd9, 0x09, 0xf9, 0x04, 0xb3, 0xfe, 0x6a, 0xf7, + 0x66, 0xf1, 0xf6, 0xeb, 0xa1, 0xe7, 0xbc, 0xe1, 0xf3, 0xdd, 0x82, 0xdb, 0x05, 0xda, 0x07, 0xdc, + 0xe8, 0xdd, 0x24, 0xe1, 0xe3, 0xe4, 0x1a, 0xe9, 0x61, 0xed, 0x1f, 0xf1, 0xae, 0xf4, 0x3e, 0xf7, + 0x4f, 0xfb, 0xef, 0xfc, 0x83, 0xff, 0xaf, 0x02, 0x9f, 0x04, 0x2a, 0x07, 0x76, 0x07, 0xfd, 0x08, + 0xf4, 0x0a, 0x4c, 0x0c, 0xcf, 0x0d, 0x72, 0x0e, 0xa5, 0x0f, 0xb1, 0x10, 0x67, 0x12, 0x0a, 0x13, + 0x2c, 0x14, 0x8b, 0x14, 0x05, 0x15, 0x2e, 0x16, 0x82, 0x15, 0x75, 0x15, 0x47, 0x14, 0x3b, 0x11, + 0xcb, 0x0c, 0xdb, 0x06, 0x42, 0x01, 0x9c, 0xfb, 0xce, 0xf7, 0x95, 0xf2, 0x55, 0xed, 0x1c, 0xe9, + 0xe4, 0xe5, 0x2f, 0xe5, 0x8c, 0xe5, 0x9f, 0xe7, 0x61, 0xe9, 0x1d, 0xec, 0x84, 0xee, 0x81, 0xf1, + 0xe1, 0xf4, 0x3a, 0xf6, 0x2d, 0xf9, 0x40, 0xfb, 0x94, 0xfc, 0xe3, 0xfe, 0xff, 0x00, 0x25, 0x03, + 0xae, 0x03, 0x1f, 0x04, 0x20, 0x04, 0xb1, 0x04, 0x7b, 0x05, 0x9d, 0x05, 0x44, 0x06, 0x30, 0x06, + 0x77, 0x07, 0x19, 0x08, 0x8f, 0x09, 0xeb, 0x0a, 0xe2, 0x0a, 0xbd, 0x0d, 0x12, 0x0f, 0x1d, 0x0f, + 0xd4, 0x0e, 0xfc, 0x0c, 0x4c, 0x0a, 0x18, 0x06, 0x53, 0x01, 0xf6, 0xfb, 0xd8, 0xf8, 0x1e, 0xf5, + 0x4e, 0xf1, 0x1a, 0xee, 0x7b, 0xea, 0x85, 0xe9, 0x47, 0xe9, 0xbc, 0xeb, 0x39, 0xee, 0x97, 0xf0, + 0xbe, 0xf3, 0x96, 0xf6, 0xd1, 0xfa, 0xf9, 0xfc, 0x1f, 0xff, 0x5d, 0x02, 0xa5, 0x05, 0x00, 0x09, + 0x45, 0x0b, 0xd7, 0x0d, 0xdc, 0x0e, 0x02, 0x0f, 0xc8, 0x0d, 0x34, 0x0d, 0x1a, 0x0d, 0x54, 0x0c, + 0x76, 0x0c, 0xae, 0x0a, 0x1a, 0x09, 0xd3, 0x08, 0x45, 0x09, 0x83, 0x0a, 0x10, 0x0a, 0xd9, 0x0a, + 0x9a, 0x0b, 0xeb, 0x0b, 0x2a, 0x0b, 0xd6, 0x09, 0xd4, 0x07, 0x2f, 0x04, 0xd7, 0x00, 0x0a, 0xfb, + 0x20, 0xf7, 0xd8, 0xf2, 0xa9, 0xee, 0x1b, 0xec, 0x93, 0xe7, 0x9e, 0xe4, 0x35, 0xe2, 0x2e, 0xe2, + 0xcf, 0xe3, 0x90, 0xe5, 0x67, 0xe8, 0x42, 0xeb, 0x82, 0xf0, 0x85, 0xf5, 0x7c, 0xf9, 0x3a, 0xfd, + 0x21, 0x01, 0xa9, 0x05, 0x86, 0x08, 0xcc, 0x0c, 0x43, 0x0f, 0x1b, 0x11, 0x29, 0x12, 0xb6, 0x11, + 0x45, 0x12, 0xfe, 0x11, 0x7a, 0x12, 0x5c, 0x12, 0xc0, 0x11, 0x6a, 0x11, 0xa7, 0x11, 0x73, 0x13, + 0xee, 0x12, 0x1c, 0x12, 0x6f, 0x11, 0xf4, 0x10, 0x2d, 0x10, 0xa4, 0x0e, 0xe0, 0x0d, 0xb3, 0x0a, + 0xd3, 0x07, 0xe6, 0x02, 0xf0, 0xfc, 0x4c, 0xf8, 0x14, 0xf3, 0xe5, 0xee, 0x78, 0xea, 0x06, 0xe6, + 0x60, 0xe1, 0x95, 0xdd, 0xcc, 0xdb, 0x6d, 0xdb, 0x74, 0xdc, 0x2f, 0xde, 0x2a, 0xe2, 0x84, 0xe6, + 0xea, 0xea, 0x87, 0xef, 0x36, 0xf3, 0x8f, 0xf7, 0xb3, 0xfa, 0xbb, 0xfe, 0x73, 0x02, 0xec, 0x05, + 0x9f, 0x08, 0x9c, 0x09, 0x0a, 0x0b, 0xe9, 0x0b, 0x2b, 0x0d, 0x15, 0x0e, 0x9b, 0x0f, 0xee, 0x10, + 0x58, 0x11, 0x41, 0x13, 0x70, 0x14, 0x6b, 0x15, 0x1c, 0x15, 0xd0, 0x15, 0x4c, 0x17, 0x1a, 0x17, + 0xe1, 0x16, 0x33, 0x15, 0xb4, 0x13, 0x9d, 0x10, 0x60, 0x0c, 0x40, 0x08, 0x46, 0x03, 0x7c, 0xfe, + 0x86, 0xf8, 0x67, 0xf3, 0xa6, 0xed, 0x77, 0xe8, 0xa8, 0xe4, 0x3b, 0xe1, 0x05, 0xe1, 0xdd, 0xe0, + 0x0a, 0xe2, 0x00, 0xe5, 0xb5, 0xe8, 0xeb, 0xec, 0x65, 0xef, 0x99, 0xf3, 0x84, 0xf6, 0xe6, 0xf9, + 0xb1, 0xfd, 0x76, 0x00, 0x82, 0x03, 0x55, 0x05, 0xe8, 0x06, 0x74, 0x07, 0xe6, 0x08, 0x0f, 0x0a, + 0x5e, 0x0b, 0x1d, 0x0d, 0x24, 0x0c, 0x67, 0x0c, 0x36, 0x0d, 0xc9, 0x0e, 0x01, 0x0f, 0x16, 0x0f, + 0x14, 0x11, 0x83, 0x11, 0xe8, 0x12, 0xc0, 0x12, 0x6a, 0x12, 0x2d, 0x12, 0x91, 0x10, 0xcd, 0x0d, + 0xca, 0x09, 0xe2, 0x05, 0xad, 0x00, 0x7c, 0xfc, 0x0f, 0xf8, 0x55, 0xf2, 0x38, 0xed, 0x97, 0xe8, + 0x21, 0xe7, 0x93, 0xe6, 0xb7, 0xe6, 0x1e, 0xe8, 0xd1, 0xea, 0x00, 0xef, 0x46, 0xf1, 0x53, 0xf4, + 0x2b, 0xf7, 0x11, 0xfa, 0x73, 0xfc, 0xaf, 0xfe, 0x5d, 0x01, 0x38, 0x03, 0x25, 0x05, 0xf0, 0x05, + 0x04, 0x07, 0x92, 0x07, 0xfc, 0x07, 0x26, 0x0a, 0x49, 0x0a, 0x6c, 0x0a, 0xec, 0x09, 0x91, 0x0a, + 0xff, 0x0b, 0xec, 0x0b, 0xc3, 0x0c, 0xf6, 0x0c, 0x95, 0x0e, 0xc1, 0x0f, 0x18, 0x10, 0x51, 0x10, + 0x52, 0x10, 0x59, 0x0f, 0xf3, 0x0b, 0xac, 0x08, 0xb4, 0x03, 0x26, 0xff, 0xcb, 0xfb, 0x82, 0xf7, + 0x54, 0xf3, 0xc4, 0xed, 0xd7, 0xe9, 0xb9, 0xe7, 0x2e, 0xe7, 0x7a, 0xe7, 0xf4, 0xe8, 0xbf, 0xec, + 0xd3, 0xef, 0x25, 0xf3, 0x60, 0xf6, 0x5f, 0xf9, 0xe4, 0xfb, 0xe1, 0xfd, 0x02, 0x01, 0xf5, 0x03, + 0xd7, 0x07, 0x23, 0x0a, 0x34, 0x0b, 0xfc, 0x0b, 0xa8, 0x0a, 0xe4, 0x0a, 0x13, 0x0b, 0x05, 0x0b, + 0x55, 0x09, 0x47, 0x08, 0x91, 0x08, 0xbb, 0x07, 0x71, 0x07, 0x7d, 0x07, 0x6e, 0x08, 0x03, 0x09, + 0x5f, 0x0a, 0xaf, 0x0a, 0xb7, 0x0a, 0xbb, 0x0a, 0x9c, 0x07, 0x74, 0x04, 0x7c, 0x00, 0xaa, 0xfb, + 0xee, 0xf7, 0x42, 0xf3, 0xc3, 0xef, 0xc9, 0xeb, 0xc5, 0xe7, 0x9a, 0xe4, 0x5b, 0xe3, 0x31, 0xe3, + 0x1d, 0xe3, 0xa5, 0xe5, 0x89, 0xe8, 0x3f, 0xec, 0x30, 0xf0, 0x3d, 0xf4, 0x9f, 0xf8, 0x6a, 0xfb, + 0x29, 0xff, 0xfd, 0x02, 0xea, 0x07, 0x2c, 0x0c, 0x34, 0x0f, 0x10, 0x12, 0x52, 0x12, 0x32, 0x13, + 0xa4, 0x13, 0xcc, 0x14, 0xa3, 0x14, 0x8e, 0x12, 0x77, 0x11, 0xac, 0x10, 0x01, 0x11, 0x66, 0x10, + 0xe7, 0x10, 0xf2, 0x10, 0x6e, 0x10, 0x66, 0x10, 0xed, 0x0e, 0xb9, 0x0e, 0xa9, 0x0c, 0x57, 0x09, + 0x32, 0x06, 0x08, 0x01, 0x50, 0xfc, 0x17, 0xf7, 0xe5, 0xf2, 0x75, 0xee, 0xac, 0xe9, 0x2d, 0xe4, + 0x00, 0xe0, 0xb9, 0xde, 0x8b, 0xdc, 0xcd, 0xdb, 0xae, 0xdc, 0x57, 0xdf, 0xf9, 0xe2, 0x4b, 0xe6, + 0x60, 0xeb, 0xf3, 0xef, 0x7f, 0xf4, 0x51, 0xf8, 0xa7, 0xfc, 0x64, 0x01, 0x79, 0x05, 0x87, 0x09, + 0xad, 0x0b, 0xad, 0x0d, 0x2b, 0x0e, 0x1c, 0x10, 0x85, 0x12, 0xed, 0x12, 0x27, 0x13, 0x1c, 0x13, + 0xc4, 0x14, 0x41, 0x16, 0x40, 0x17, 0xc9, 0x17, 0xe0, 0x17, 0x57, 0x19, 0xe0, 0x18, 0xe0, 0x18, + 0x5b, 0x18, 0xc6, 0x16, 0xee, 0x14, 0xb4, 0x11, 0xb5, 0x0d, 0x9f, 0x08, 0x82, 0x04, 0x88, 0xff, + 0x16, 0xfb, 0xd8, 0xf4, 0xa7, 0xed, 0x91, 0xe9, 0x10, 0xe5, 0x20, 0xe1, 0x4b, 0xde, 0x1c, 0xdd, + 0xf4, 0xde, 0x15, 0xe1, 0x10, 0xe4, 0x91, 0xe7, 0xa1, 0xeb, 0x55, 0xee, 0x9c, 0xf1, 0xad, 0xf5, + 0x2f, 0xf9, 0x34, 0xfd, 0x0d, 0x00, 0x0a, 0x03, 0x5a, 0x03, 0x9c, 0x03, 0x0b, 0x06, 0x06, 0x08, + 0x91, 0x09, 0x7b, 0x09, 0x8e, 0x0a, 0xf7, 0x0b, 0x26, 0x0d, 0x06, 0x0e, 0x4f, 0x0e, 0xf6, 0x0f, + 0xee, 0x10, 0x72, 0x12, 0x8b, 0x13, 0x38, 0x14, 0xfa, 0x13, 0x59, 0x12, 0xd6, 0x10, 0x03, 0x0e, + 0x54, 0x0b, 0x90, 0x07, 0x0b, 0x04, 0xe2, 0x00, 0xd6, 0xfa, 0x96, 0xf5, 0x5e, 0xf1, 0x86, 0xed, + 0x35, 0xea, 0xc6, 0xe7, 0x82, 0xe8, 0x0e, 0xea, 0xd4, 0xec, 0x9c, 0xef, 0x00, 0xf3, 0x2f, 0xf5, + 0x22, 0xf7, 0xd6, 0xf9, 0x8f, 0xfc, 0xce, 0x00, 0xd9, 0x02, 0x24, 0x05, 0xdf, 0x06, 0x4f, 0x06, + 0xbe, 0x06, 0xd8, 0x07, 0x10, 0x09, 0x4f, 0x09, 0xda, 0x08, 0x63, 0x08, 0xf8, 0x07, 0x8b, 0x07, + 0x79, 0x06, 0x22, 0x07, 0x27, 0x07, 0x37, 0x07, 0x15, 0x08, 0xef, 0x08, 0x20, 0x0a, 0x99, 0x09, + 0x5b, 0x09, 0x72, 0x07, 0x75, 0x05, 0x4b, 0x02, 0xf2, 0xfd, 0x34, 0xfb, 0x7d, 0xf7, 0x7e, 0xf2, + 0xaf, 0xed, 0xf7, 0xe9, 0x3a, 0xe7, 0x78, 0xe4, 0xb4, 0xe3, 0xa9, 0xe4, 0xcc, 0xe7, 0x98, 0xea, + 0x98, 0xee, 0x7e, 0xf3, 0xea, 0xf6, 0xf4, 0xfa, 0xa8, 0xfd, 0x48, 0x01, 0x48, 0x04, 0x05, 0x07, + 0xde, 0x0a, 0xfb, 0x0c, 0x23, 0x0e, 0xbb, 0x0e, 0xe7, 0x0f, 0x85, 0x10, 0x61, 0x10, 0x84, 0x0f, + 0x72, 0x0e, 0xf6, 0x0e, 0x68, 0x0d, 0xa1, 0x0c, 0x39, 0x0c, 0xbe, 0x0b, 0x15, 0x0c, 0xe5, 0x0b, + 0xb6, 0x0c, 0xa4, 0x0c, 0x9e, 0x0c, 0xdc, 0x0b, 0x1f, 0x0a, 0x2c, 0x07, 0x9c, 0x02, 0x2e, 0xff, + 0x82, 0xfb, 0xc4, 0xf7, 0xf4, 0xf1, 0x43, 0xed, 0xfc, 0xe9, 0xce, 0xe5, 0x20, 0xe3, 0xac, 0xe0, + 0xbc, 0xe1, 0x9b, 0xe3, 0xe3, 0xe5, 0xa6, 0xe9, 0x16, 0xed, 0x98, 0xf1, 0x9d, 0xf4, 0x84, 0xf8, + 0xa4, 0xfc, 0x02, 0x00, 0xca, 0x04, 0xe7, 0x09, 0x82, 0x0d, 0x87, 0x0e, 0x76, 0x10, 0x2c, 0x12, + 0xa4, 0x13, 0x6d, 0x14, 0x53, 0x13, 0xad, 0x13, 0xe1, 0x12, 0x33, 0x12, 0x71, 0x11, 0x1f, 0x11, + 0xd3, 0x11, 0x12, 0x12, 0x8b, 0x12, 0x5a, 0x12, 0x8a, 0x12, 0x3e, 0x11, 0xa4, 0x0f, 0xc7, 0x0d, + 0x28, 0x09, 0x4f, 0x04, 0x45, 0xff, 0x91, 0xfb, 0x8b, 0xf6, 0x14, 0xf0, 0x33, 0xeb, 0x91, 0xe6, + 0xa9, 0xe3, 0xf4, 0xdf, 0xfa, 0xdd, 0x36, 0xde, 0x01, 0xdf, 0x5b, 0xe1, 0xc5, 0xe3, 0x95, 0xe7, + 0x85, 0xea, 0x71, 0xee, 0x3e, 0xf2, 0x66, 0xf6, 0x26, 0xfb, 0xf2, 0xff, 0x80, 0x05, 0x87, 0x08, + 0x25, 0x0a, 0xd9, 0x0b, 0xfa, 0x0d, 0x68, 0x10, 0xc6, 0x10, 0x68, 0x11, 0x62, 0x11, 0x04, 0x11, + 0x05, 0x11, 0x20, 0x11, 0x2a, 0x12, 0xb9, 0x12, 0x8f, 0x13, 0x42, 0x14, 0x6a, 0x15, 0xf2, 0x15, + 0xec, 0x14, 0x0e, 0x14, 0xa3, 0x11, 0x6f, 0x0e, 0xba, 0x09, 0x01, 0x06, 0x35, 0x03, 0x77, 0xfe, + 0xff, 0xf8, 0x65, 0xf3, 0x8b, 0xee, 0x7c, 0xe9, 0x33, 0xe5, 0x1d, 0xe2, 0x24, 0xe0, 0xf4, 0xdf, + 0x4f, 0xe0, 0xfd, 0xe2, 0xdd, 0xe5, 0xd8, 0xe8, 0x46, 0xec, 0x87, 0xef, 0xa8, 0xf3, 0x0e, 0xf7, + 0xb7, 0xfb, 0xd3, 0xff, 0x7c, 0x02, 0x63, 0x04, 0x45, 0x05, 0xcf, 0x06, 0x26, 0x08, 0x15, 0x09, + 0xb6, 0x09, 0xf2, 0x0a, 0xb8, 0x0b, 0x47, 0x0c, 0xba, 0x0d, 0xbb, 0x0e, 0xc5, 0x0f, 0x0c, 0x10, + 0xd9, 0x10, 0x83, 0x12, 0xb8, 0x12, 0xfd, 0x12, 0x9c, 0x12, 0xcf, 0x11, 0x14, 0x0f, 0xc6, 0x0b, + 0xba, 0x09, 0x9b, 0x06, 0x56, 0x03, 0x1a, 0xfe, 0xe5, 0xf9, 0xe2, 0xf5, 0x59, 0xf1, 0x96, 0xec, + 0x59, 0xe8, 0x94, 0xe6, 0xcd, 0xe4, 0x3e, 0xe6, 0x2b, 0xe9, 0xc2, 0xeb, 0xe8, 0xee, 0x5c, 0xf1, + 0x6a, 0xf4, 0xc0, 0xf6, 0xc6, 0xf9, 0xbd, 0xfd, 0x48, 0x01, 0xb8, 0x03, 0x0c, 0x04, 0x24, 0x05, + 0x2d, 0x06, 0x6e, 0x07, 0xa4, 0x07, 0x9f, 0x07, 0xc0, 0x08, 0x21, 0x09, 0xf2, 0x09, 0x50, 0x09, + 0xdb, 0x09, 0x9b, 0x0a, 0x5a, 0x0a, 0xb1, 0x0b, 0x8d, 0x0c, 0x9d, 0x0d, 0xe1, 0x0d, 0x6c, 0x0e, + 0xc5, 0x0d, 0x30, 0x0b, 0x10, 0x09, 0x00, 0x07, 0x16, 0x05, 0xff, 0x00, 0x7b, 0xfc, 0x3f, 0xf8, + 0x66, 0xf4, 0xf4, 0xf0, 0x87, 0xec, 0x33, 0xea, 0xec, 0xe8, 0x14, 0xe9, 0x7a, 0xeb, 0x57, 0xee, + 0x4b, 0xf2, 0x5e, 0xf5, 0x3b, 0xf9, 0x7d, 0xfc, 0x46, 0xff, 0xde, 0x02, 0xd0, 0x06, 0x84, 0x0a, + 0x26, 0x0c, 0xbc, 0x0d, 0x9d, 0x0e, 0x90, 0x10, 0xdd, 0x11, 0x35, 0x11, 0x83, 0x11, 0x5e, 0x10, + 0xa1, 0x0f, 0x06, 0x0e, 0x48, 0x0c, 0x84, 0x0b, 0xc1, 0x09, 0xbc, 0x08, 0xfa, 0x07, 0x70, 0x08, + 0xed, 0x07, 0x77, 0x07, 0x33, 0x08, 0x24, 0x07, 0xf5, 0x04, 0x72, 0x01, 0x6c, 0xff, 0xc9, 0xfb, + 0x77, 0xf7, 0xb2, 0xf2, 0xf2, 0xed, 0x77, 0xea, 0xc9, 0xe5, 0x70, 0xe2, 0x5e, 0xe0, 0xeb, 0xde, + 0x8e, 0xdf, 0x82, 0xe1, 0xc0, 0xe4, 0x0d, 0xe8, 0x02, 0xec, 0xab, 0xef, 0x1b, 0xf4, 0x40, 0xf8, + 0x01, 0xfb, 0x05, 0x00, 0x75, 0x04, 0x27, 0x08, 0xf3, 0x0a, 0x50, 0x0d, 0xc5, 0x10, 0x6a, 0x13, + 0x68, 0x15, 0x71, 0x16, 0xd3, 0x16, 0x09, 0x17, 0x7e, 0x16, 0x1b, 0x15, 0xda, 0x13, 0x47, 0x13, + 0x38, 0x13, 0xba, 0x13, 0xd5, 0x13, 0x7b, 0x13, 0x24, 0x13, 0xb0, 0x12, 0x8b, 0x11, 0xec, 0x0d, + 0xf2, 0x09, 0x25, 0x06, 0xdf, 0x01, 0xb0, 0xfc, 0x97, 0xf6, 0xf0, 0xf1, 0x6d, 0xed, 0xba, 0xe7, + 0x00, 0xe3, 0x8b, 0xdf, 0xc4, 0xdc, 0x2b, 0xdb, 0x15, 0xdd, 0x17, 0xdf, 0x68, 0xe2, 0x88, 0xe5, + 0x19, 0xe9, 0x69, 0xed, 0x69, 0xef, 0x09, 0xf4, 0x78, 0xf8, 0x4e, 0xfd, 0x0a, 0x01, 0xdf, 0x02, + 0x4d, 0x06, 0x3c, 0x08, 0x3f, 0x0a, 0x44, 0x0c, 0xea, 0x0d, 0xd5, 0x0e, 0x8c, 0x0f, 0x3d, 0x10, + 0x69, 0x0f, 0xb5, 0x10, 0xe2, 0x10, 0x31, 0x11, 0xd9, 0x12, 0x03, 0x13, 0xce, 0x13, 0x42, 0x14, + 0x9a, 0x14, 0x02, 0x14, 0x2b, 0x10, 0xdc, 0x0b, 0xb8, 0x08, 0x0d, 0x05, 0xd8, 0xff, 0x58, 0xfc, + 0x19, 0xf9, 0x3d, 0xf5, 0x8c, 0xf1, 0xea, 0xed, 0x80, 0xeb, 0x49, 0xe8, 0x75, 0xe7, 0x8a, 0xe7, + 0x23, 0xe8, 0xbe, 0xe9, 0xcf, 0xeb, 0x52, 0xef, 0xfc, 0xf0, 0x2b, 0xf3, 0x62, 0xf7, 0x09, 0xfc, + 0xde, 0x00, 0xb3, 0x02, 0x97, 0x04, 0x9b, 0x06, 0xb4, 0x07, 0x7e, 0x08, 0x22, 0x08, 0x7b, 0x08, + 0x03, 0x09, 0xbe, 0x09, 0x90, 0x09, 0x16, 0x0a, 0x2d, 0x0a, 0x1b, 0x0a, 0x05, 0x0b, 0x90, 0x0b, + 0xa1, 0x0b, 0x43, 0x0b, 0xc0, 0x0b, 0x39, 0x0c, 0x96, 0x0a, 0xc6, 0x07, 0x28, 0x05, 0x8c, 0x03, + 0x63, 0x00, 0x6e, 0xfe, 0x70, 0xfb, 0xbd, 0xf9, 0xbd, 0xf7, 0xa0, 0xf4, 0x56, 0xf3, 0xe6, 0xf0, + 0x66, 0xef, 0xc8, 0xee, 0xbf, 0xee, 0xed, 0xef, 0xdd, 0xf1, 0x79, 0xf5, 0x53, 0xf8, 0x5c, 0xfb, + 0x6a, 0xfe, 0x53, 0x01, 0x4b, 0x05, 0x78, 0x07, 0x70, 0x09, 0x15, 0x0a, 0xd2, 0x0a, 0x00, 0x0b, + 0x6f, 0x0a, 0x28, 0x0a, 0x47, 0x09, 0x34, 0x09, 0x5a, 0x08, 0x52, 0x08, 0x48, 0x08, 0x27, 0x07, + 0x65, 0x06, 0xa7, 0x06, 0x59, 0x06, 0x04, 0x05, 0x21, 0x04, 0xb0, 0x03, 0x22, 0x03, 0x0c, 0x02, + 0x9f, 0xff, 0x1e, 0xfe, 0xc1, 0xfb, 0xd7, 0xf9, 0x16, 0xf8, 0x90, 0xf6, 0x27, 0xf5, 0xed, 0xf2, + 0x6b, 0xf1, 0xd3, 0xef, 0x12, 0xee, 0x5f, 0xec, 0x2f, 0xec, 0xd8, 0xed, 0x1d, 0xf0, 0x04, 0xf4, + 0x48, 0xf7, 0x8c, 0xfa, 0x13, 0xfe, 0x8f, 0x00, 0xbe, 0x04, 0xb8, 0x07, 0x2f, 0x0a, 0x72, 0x0b, + 0x12, 0x0c, 0xdd, 0x0c, 0xc5, 0x0c, 0xab, 0x0d, 0xc8, 0x0d, 0x30, 0x0e, 0x21, 0x0d, 0xf6, 0x0b, + 0xa6, 0x0b, 0x68, 0x0a, 0xcf, 0x08, 0x14, 0x07, 0x3a, 0x06, 0xa9, 0x05, 0x53, 0x04, 0x57, 0x03, + 0xfe, 0x02, 0xb2, 0x02, 0x94, 0x00, 0x33, 0xff, 0x0a, 0xfd, 0xfd, 0xfa, 0x29, 0xf9, 0x57, 0xf7, + 0xf9, 0xf5, 0x45, 0xf3, 0xa6, 0xf0, 0x37, 0xef, 0xdb, 0xee, 0x3f, 0xee, 0xc8, 0xed, 0xa2, 0xef, + 0x3c, 0xf1, 0x93, 0xf4, 0x48, 0xf8, 0x02, 0xfb, 0xf6, 0xfd, 0x65, 0xff, 0xcf, 0x01, 0x73, 0x04, + 0x9f, 0x06, 0xb0, 0x08, 0xa6, 0x09, 0x5e, 0x0a, 0xb4, 0x0b, 0xfe, 0x0c, 0x42, 0x0d, 0x49, 0x0e, + 0x01, 0x0f, 0x12, 0x0f, 0xab, 0x0f, 0x56, 0x0f, 0x47, 0x0e, 0xe9, 0x0b, 0x19, 0x0a, 0xf4, 0x08, + 0xe3, 0x06, 0xb7, 0x05, 0xec, 0x04, 0x44, 0x05, 0xf6, 0x04, 0x96, 0x03, 0xd4, 0x01, 0x4a, 0x00, + 0xa2, 0xfe, 0x69, 0xfc, 0xb7, 0xfa, 0xab, 0xf8, 0x42, 0xf6, 0xf2, 0xf3, 0xb1, 0xf1, 0xe2, 0xef, + 0x68, 0xee, 0x34, 0xee, 0x4b, 0xee, 0x52, 0xef, 0x52, 0xf1, 0xb0, 0xf3, 0x73, 0xf6, 0xdc, 0xf7, + 0xe6, 0xf8, 0x4e, 0xfa, 0x2e, 0xfc, 0xa9, 0xfd, 0xfe, 0xfe, 0xf4, 0xff, 0xeb, 0x00, 0x2c, 0x03, + 0x5c, 0x04, 0xc5, 0x05, 0x1b, 0x07, 0xe5, 0x07, 0x42, 0x09, 0xca, 0x09, 0xcd, 0x0a, 0x31, 0x0a, + 0xdd, 0x08, 0x05, 0x09, 0x77, 0x09, 0x8f, 0x09, 0xcc, 0x08, 0x44, 0x09, 0x50, 0x09, 0x80, 0x09, + 0x1b, 0x09, 0x23, 0x08, 0x9f, 0x07, 0x21, 0x06, 0xc2, 0x04, 0x36, 0x03, 0x6e, 0x01, 0x6e, 0xff, + 0x8c, 0xfd, 0x99, 0xfc, 0x15, 0xfb, 0xbf, 0xf9, 0x1e, 0xf8, 0xd7, 0xf6, 0xb0, 0xf6, 0x33, 0xf6, + 0x0e, 0xf7, 0x34, 0xf7, 0x1b, 0xf7, 0x07, 0xf7, 0x26, 0xf7, 0x08, 0xf8, 0x9a, 0xf8, 0xc3, 0xf9, + 0x3a, 0xfb, 0xa0, 0xfc, 0xed, 0xfd, 0x1b, 0xff, 0x10, 0x00, 0xf4, 0xff, 0x26, 0x00, 0xc3, 0xff, + 0xcf, 0xff, 0xb8, 0x00, 0x2f, 0x00, 0x6a, 0xff, 0x49, 0xff, 0x2a, 0x00, 0x23, 0x00, 0xf5, 0xff, + 0xa5, 0x00, 0x34, 0x02, 0x6c, 0x03, 0x03, 0x03, 0x25, 0x03, 0x34, 0x02, 0x57, 0x01, 0xef, 0x00, + 0xd5, 0x00, 0xb6, 0x00, 0x0a, 0x00, 0xf3, 0xff, 0x82, 0xff, 0x9c, 0xff, 0xaa, 0xff, 0x93, 0xff, + 0x3c, 0x00, 0x32, 0x00, 0xcd, 0x00, 0x49, 0x01, 0x32, 0x02, 0x21, 0x02, 0x21, 0x02, 0x66, 0x02, + 0xad, 0x02, 0x65, 0x03, 0xb5, 0x03, 0xa2, 0x04, 0x6f, 0x05, 0x87, 0x05, 0x8d, 0x05, 0xb2, 0x04, + 0xb0, 0x04, 0x59, 0x03, 0x0c, 0x02, 0x92, 0x01, 0x68, 0x00, 0x1e, 0xff, 0x51, 0xfd, 0xa3, 0xfc, + 0x65, 0xfc, 0xba, 0xfb, 0xee, 0xfa, 0xd7, 0xfa, 0xe4, 0xfb, 0x62, 0xfb, 0xe1, 0xfa, 0x8b, 0xfa, + 0x2f, 0xfa, 0x45, 0xfa, 0x5e, 0xfa, 0x73, 0xfb, 0xce, 0xfb, 0xa6, 0xfb, 0x97, 0xfb, 0x4c, 0xfb, + 0x05, 0xfb, 0x32, 0xfb, 0xe0, 0xfb, 0x04, 0xfc, 0x82, 0xfc, 0x42, 0xfd, 0xdc, 0xfe, 0x51, 0x00, + 0x4c, 0x01, 0x43, 0x02, 0x5d, 0x03, 0x1d, 0x05, 0x84, 0x06, 0x6b, 0x07, 0xbb, 0x08, 0xeb, 0x09, + 0x76, 0x0a, 0x28, 0x0a, 0x41, 0x0a, 0xe8, 0x09, 0x66, 0x09, 0x37, 0x09, 0x6f, 0x09, 0x36, 0x09, + 0xf8, 0x07, 0x00, 0x07, 0x3b, 0x06, 0x6f, 0x05, 0x4d, 0x03, 0x96, 0x01, 0x94, 0x01, 0xdf, 0x00, + 0x56, 0xff, 0xed, 0xfd, 0xea, 0xfc, 0x50, 0xfc, 0x9e, 0xfb, 0x4e, 0xfb, 0xbf, 0xfa, 0x8c, 0xfa, + 0xc4, 0xf9, 0xce, 0xf8, 0x71, 0xf8, 0xce, 0xf6, 0x44, 0xf6, 0x33, 0xf5, 0xae, 0xf4, 0x3c, 0xf4, + 0x62, 0xf4, 0x2a, 0xf6, 0x1e, 0xf7, 0xb9, 0xf7, 0x3c, 0xf8, 0x0e, 0xf9, 0x72, 0xfa, 0x86, 0xfb, + 0xd3, 0xfc, 0xf5, 0xfd, 0xea, 0xff, 0xf5, 0x00, 0x89, 0x02, 0x74, 0x04, 0x8c, 0x05, 0xbd, 0x06, + 0x20, 0x07, 0xa8, 0x08, 0x76, 0x09, 0xc4, 0x09, 0x1c, 0x0a, 0xf0, 0x09, 0x74, 0x09, 0x24, 0x08, + 0x25, 0x07, 0x2d, 0x07, 0x28, 0x07, 0xf7, 0x06, 0x41, 0x06, 0xb8, 0x05, 0x4b, 0x05, 0x37, 0x05, + 0xba, 0x04, 0xc9, 0x03, 0x6f, 0x02, 0x97, 0x00, 0x3d, 0xff, 0x27, 0xfd, 0x72, 0xfb, 0xcf, 0xf9, + 0x46, 0xf8, 0x87, 0xf7, 0x96, 0xf6, 0x8b, 0xf6, 0xb2, 0xf7, 0x87, 0xf8, 0xc9, 0xf8, 0xc2, 0xf8, + 0xcf, 0xf8, 0xc9, 0xf8, 0xa5, 0xf8, 0xae, 0xf8, 0x6c, 0xfa, 0x84, 0xfb, 0x83, 0xfc, 0x98, 0xfe, + 0x73, 0x00, 0xe6, 0x01, 0x8b, 0x02, 0x85, 0x03, 0xc4, 0x04, 0xe8, 0x05, 0xde, 0x05, 0x87, 0x05, + 0x30, 0x05, 0x29, 0x04, 0xb0, 0x02, 0xdc, 0x01, 0x55, 0x02, 0xbc, 0x02, 0xbb, 0x02, 0x5f, 0x03, + 0x40, 0x03, 0x3f, 0x04, 0x00, 0x05, 0xc2, 0x05, 0x07, 0x06, 0xdd, 0x04, 0x1f, 0x04, 0xaa, 0x02, + 0x72, 0x01, 0xb2, 0xff, 0xfa, 0xfd, 0x0f, 0xfd, 0xb4, 0xfb, 0xf7, 0xfa, 0x88, 0xfa, 0xf6, 0xfa, + 0xfb, 0xfa, 0x22, 0xfa, 0x9d, 0xf9, 0x10, 0xf9, 0x8c, 0xf9, 0xab, 0xf8, 0x9f, 0xf8, 0xc9, 0xf9, + 0x34, 0xfa, 0x41, 0xfb, 0xb8, 0xfc, 0x66, 0xfe, 0x64, 0xff, 0x0e, 0x00, 0xd3, 0x00, 0x0d, 0x02, + 0x53, 0x02, 0xdf, 0x01, 0x4b, 0x02, 0x27, 0x02, 0x94, 0x01, 0x41, 0x01, 0xa2, 0x01, 0x33, 0x03, + 0x6d, 0x03, 0x96, 0x03, 0x95, 0x03, 0x36, 0x04, 0x25, 0x05, 0xfd, 0x05, 0xf8, 0x06, 0xdf, 0x06, + 0x6d, 0x06, 0x73, 0x06, 0x16, 0x06, 0x3d, 0x05, 0x34, 0x04, 0xde, 0x03, 0xb5, 0x02, 0xbc, 0x01, + 0xcb, 0x00, 0xb7, 0x00, 0x96, 0x00, 0x25, 0x00, 0x28, 0xff, 0x93, 0xfd, 0x68, 0xfd, 0x7d, 0xfd, + 0x45, 0xfd, 0xc0, 0xfd, 0xc8, 0xfe, 0x09, 0x00, 0x36, 0x01, 0x8b, 0x02, 0x1f, 0x03, 0x04, 0x03, + 0x66, 0x02, 0xf3, 0x01, 0x90, 0x01, 0x02, 0x00, 0x1d, 0xff, 0x34, 0xfe, 0x2b, 0xfd, 0xb0, 0xfb, + 0x3d, 0xfa, 0xb8, 0xfa, 0xe6, 0xfa, 0x85, 0xfb, 0x1c, 0xfc, 0x5c, 0xfc, 0x5d, 0xfc, 0x97, 0xfc, + 0x27, 0xfd, 0x53, 0xfd, 0x55, 0xfd, 0x41, 0xfd, 0x6f, 0xfd, 0xdd, 0xfd, 0x43, 0xfd, 0xdc, 0xfc, + 0xd5, 0xfc, 0xdf, 0xfc, 0x85, 0xfc, 0x68, 0xfc, 0x65, 0xfd, 0x0b, 0xfe, 0xca, 0xfe, 0xf4, 0xfe, + 0x7b, 0xff, 0x2e, 0x00, 0x42, 0x00, 0x72, 0x00, 0x67, 0x01, 0x85, 0x03, 0x78, 0x05, 0x73, 0x07, + 0x27, 0x09, 0x15, 0x0a, 0x0a, 0x0a, 0x1b, 0x09, 0x13, 0x09, 0x3e, 0x09, 0x58, 0x08, 0x54, 0x07, + 0x1e, 0x06, 0xf4, 0x04, 0xed, 0x02, 0x0e, 0x01, 0xb7, 0xff, 0xd8, 0xfe, 0x29, 0xfe, 0xac, 0xfd, + 0xe2, 0xfc, 0x4f, 0xfb, 0x2f, 0xfb, 0xea, 0xfa, 0x51, 0xfb, 0x33, 0xfb, 0x00, 0xfb, 0x54, 0xfb, + 0xb1, 0xfa, 0x1a, 0xfa, 0x7a, 0xf8, 0x8b, 0xf7, 0x15, 0xf6, 0x20, 0xf5, 0x95, 0xf4, 0x65, 0xf4, + 0x5c, 0xf5, 0xad, 0xf5, 0x7f, 0xf6, 0x5e, 0xf7, 0x8f, 0xf8, 0x8a, 0xf9, 0xca, 0xfa, 0xef, 0xfc, + 0xf7, 0xfe, 0x9a, 0x00, 0x75, 0x02, 0xd3, 0x03, 0x8d, 0x05, 0x2c, 0x06, 0xda, 0x06, 0xaa, 0x07, + 0x91, 0x08, 0x41, 0x09, 0x20, 0x09, 0x39, 0x0a, 0x0c, 0x0a, 0xe5, 0x09, 0xd0, 0x09, 0x0a, 0x09, + 0x61, 0x08, 0xde, 0x07, 0xac, 0x07, 0x5f, 0x06, 0x73, 0x05, 0x02, 0x05, 0xaf, 0x05, 0x8d, 0x06, + 0xb2, 0x05, 0x27, 0x05, 0x33, 0x04, 0xc6, 0x02, 0x9c, 0x00, 0x87, 0xfe, 0x54, 0xfc, 0x03, 0xfa, + 0xc2, 0xf7, 0x25, 0xf5, 0xc2, 0xf3, 0x2b, 0xf3, 0xe2, 0xf2, 0xd9, 0xf2, 0xad, 0xf2, 0x08, 0xf3, + 0x87, 0xf3, 0x23, 0xf4, 0x19, 0xf5, 0x09, 0xf6, 0x19, 0xf8, 0x0d, 0xfa, 0xa8, 0xfc, 0xe3, 0xfd, + 0xed, 0xfe, 0x8b, 0x00, 0xfe, 0x01, 0xa2, 0x02, 0xaf, 0x02, 0x27, 0x04, 0x66, 0x05, 0x45, 0x06, + 0xa1, 0x05, 0x4a, 0x05, 0x4f, 0x05, 0x90, 0x05, 0x55, 0x06, 0xad, 0x06, 0x4d, 0x07, 0x7f, 0x07, + 0x61, 0x08, 0x6e, 0x09, 0x60, 0x0a, 0x50, 0x0b, 0xd7, 0x0b, 0x71, 0x0b, 0xde, 0x09, 0x67, 0x08, + 0xb0, 0x06, 0xde, 0x04, 0xec, 0x02, 0xa0, 0x00, 0x7b, 0xff, 0x09, 0xff, 0xae, 0xfe, 0x43, 0xfe, + 0xbf, 0xfd, 0x7e, 0xfd, 0xeb, 0xfc, 0x87, 0xfb, 0x00, 0xfb, 0xe0, 0xfa, 0x16, 0xfb, 0x3e, 0xfb, + 0x02, 0xfc, 0x01, 0xfd, 0xf5, 0xfd, 0x08, 0xfe, 0x56, 0xfe, 0x43, 0xff, 0x75, 0xff, 0xbd, 0xff, + 0x94, 0xff, 0x3a, 0xff, 0x84, 0xfe, 0x45, 0xfd, 0x28, 0xfc, 0x8d, 0xfa, 0xc6, 0xfa, 0x3f, 0xfb, + 0xf6, 0xfb, 0x2f, 0xfc, 0x33, 0xfc, 0x8c, 0xfd, 0x87, 0xff, 0x3a, 0x01, 0x1c, 0x02, 0xf5, 0x02, + 0xfb, 0x02, 0xc9, 0x02, 0x1e, 0x02, 0xb9, 0x00, 0x9a, 0xff, 0x81, 0xfe, 0x3f, 0xfd, 0xca, 0xfc, + 0x7e, 0xfd, 0xb9, 0xfe, 0x44, 0xff, 0xc1, 0xff, 0xc2, 0xff, 0x6a, 0xff, 0xaa, 0xff, 0x1e, 0x00, + 0x09, 0x01, 0xf2, 0x00, 0x4e, 0x02, 0x7b, 0x03, 0xe9, 0x04, 0x8e, 0x05, 0xec, 0x04, 0xb2, 0x05, + 0x92, 0x05, 0xd1, 0x04, 0x20, 0x04, 0x63, 0x03, 0xd9, 0x02, 0x70, 0x01, 0xf6, 0xff, 0x68, 0xfe, + 0xef, 0xfd, 0xd4, 0xfd, 0x37, 0xfe, 0x5c, 0xfe, 0xaa, 0xfd, 0x62, 0xfd, 0x1c, 0xfd, 0xb4, 0xfd, + 0x6b, 0xfe, 0xfd, 0xfe, 0x35, 0xff, 0x3b, 0xfe, 0xe2, 0xfd, 0x8d, 0xfd, 0xf8, 0xfc, 0x72, 0xfc, + 0x2c, 0xfb, 0x67, 0xfa, 0x0f, 0xfa, 0x87, 0xfa, 0x43, 0xfa, 0xcf, 0xf9, 0x63, 0xfa, 0x80, 0xfa, + 0xb0, 0xfa, 0x8b, 0xfa, 0xfc, 0xfb, 0x29, 0xfd, 0x5b, 0xfe, 0xe6, 0xff, 0x22, 0x02, 0x75, 0x05, + 0x39, 0x07, 0x5b, 0x08, 0x07, 0x09, 0x03, 0x09, 0xa8, 0x08, 0x19, 0x08, 0x51, 0x07, 0x98, 0x06, + 0x5e, 0x06, 0x2e, 0x05, 0x63, 0x04, 0x2f, 0x03, 0xa8, 0x02, 0xc8, 0x02, 0x72, 0x02, 0xc1, 0x01, + 0xa1, 0x00, 0xca, 0x00, 0xc7, 0x00, 0x12, 0x00, 0x4e, 0xff, 0xcd, 0xfe, 0x01, 0xfe, 0xff, 0xfc, + 0xd2, 0xfb, 0x0d, 0xfb, 0x4b, 0xfa, 0xf2, 0xf8, 0x8d, 0xf7, 0x12, 0xf7, 0x49, 0xf7, 0xb5, 0xf7, + 0x15, 0xf8, 0x78, 0xf8, 0x0e, 0xf9, 0x4e, 0xf9, 0x38, 0xfa, 0xce, 0xfa, 0x98, 0xfb, 0xb0, 0xfc, + 0x97, 0xfe, 0xdc, 0x01, 0xcb, 0x03, 0xfe, 0x04, 0xde, 0x05, 0x2d, 0x07, 0xbf, 0x07, 0x23, 0x08, + 0x27, 0x09, 0x7d, 0x09, 0xe2, 0x09, 0xfd, 0x08, 0x9f, 0x08, 0x01, 0x08, 0x44, 0x07, 0x6d, 0x07, + 0xce, 0x06, 0x41, 0x06, 0x65, 0x05, 0xbd, 0x04, 0x0c, 0x04, 0xce, 0x03, 0x04, 0x04, 0x83, 0x04, + 0x15, 0x05, 0xa1, 0x04, 0x8f, 0x03, 0x8c, 0x02, 0xda, 0x00, 0xdf, 0xfe, 0x70, 0xfb, 0x41, 0xf9, + 0x13, 0xf8, 0xd1, 0xf6, 0xe8, 0xf5, 0xd8, 0xf4, 0x63, 0xf5, 0x0d, 0xf5, 0xf4, 0xf4, 0x82, 0xf5, + 0xcd, 0xf6, 0x3f, 0xf8, 0xb0, 0xf8, 0x1a, 0xfa, 0x00, 0xfc, 0x81, 0xfd, 0x34, 0xfe, 0xf7, 0xfe, + 0x0b, 0x00, 0x8d, 0x00, 0xb3, 0x01, 0x3f, 0x02, 0xfd, 0x02, 0x5a, 0x03, 0x4e, 0x04, 0x2b, 0x05, + 0xf6, 0x04, 0xc3, 0x04, 0x2d, 0x05, 0xdd, 0x05, 0xbb, 0x05, 0x31, 0x05, 0x70, 0x04, 0x81, 0x04, + 0xc0, 0x04, 0x33, 0x05, 0x2c, 0x06, 0xfa, 0x06, 0x8f, 0x07, 0x8f, 0x07, 0x30, 0x06, 0x82, 0x05, + 0xd6, 0x03, 0x86, 0x01, 0x95, 0xff, 0xef, 0xfd, 0x8d, 0xfc, 0x54, 0xfb, 0xb3, 0xfa, 0x73, 0xfa, + 0xef, 0xf9, 0xdb, 0xf8, 0x69, 0xf8, 0xba, 0xf8, 0x22, 0xf8, 0x34, 0xf8, 0xcf, 0xf8, 0xfc, 0xf9, + 0xd7, 0xfa, 0x61, 0xfb, 0x49, 0xfc, 0x8d, 0xfc, 0xfc, 0xfc, 0x49, 0xfd, 0x88, 0xfd, 0xd6, 0xfd, + 0xe7, 0xfd, 0x79, 0xfe, 0xd0, 0xfe, 0x3f, 0xfe, 0xc3, 0xfd, 0x3d, 0xfe, 0x77, 0xfe, 0xc9, 0xfe, + 0x75, 0xff, 0x8f, 0xff, 0xe4, 0xff, 0x93, 0x00, 0xef, 0x01, 0xaf, 0x03, 0xa5, 0x04, 0x45, 0x05, + 0x0e, 0x05, 0xee, 0x04, 0xa8, 0x04, 0x8d, 0x03, 0x69, 0x02, 0xb0, 0x01, 0x04, 0x01, 0x73, 0x00, + 0xbb, 0x00, 0x42, 0x01, 0xb1, 0x02, 0x7a, 0x03, 0x13, 0x03, 0xb6, 0x03, 0xa8, 0x03, 0x58, 0x03, + 0x1a, 0x03, 0x82, 0x03, 0x9a, 0x04, 0x45, 0x05, 0xcd, 0x05, 0xea, 0x05, 0x0a, 0x06, 0x90, 0x05, + 0x74, 0x05, 0xca, 0x04, 0xf0, 0x03, 0x02, 0x03, 0xb9, 0x01, 0x60, 0x00, 0xff, 0xfd, 0xb6, 0xfb, + 0xdf, 0xfa, 0xd9, 0xf9, 0x01, 0xf9, 0x20, 0xf8, 0xe7, 0xf7, 0xf0, 0xf7, 0x0a, 0xf8, 0x9e, 0xf8, + 0x7e, 0xf9, 0xec, 0xfa, 0x2d, 0xfb, 0xfd, 0xfa, 0x9a, 0xfa, 0xd8, 0xfa, 0x47, 0xfa, 0xc8, 0xf8, + 0x67, 0xf8, 0xe4, 0xf7, 0xdf, 0xf8, 0xfc, 0xf9, 0x28, 0xfb, 0xce, 0xfc, 0x3a, 0xfd, 0x39, 0xfe, + 0xc5, 0xfe, 0x7b, 0xff, 0x10, 0x00, 0x25, 0x01, 0x93, 0x02, 0x1f, 0x04, 0xcf, 0x05, 0x75, 0x07, + 0xae, 0x09, 0x9c, 0x0a, 0x75, 0x0b, 0x10, 0x0c, 0x4f, 0x0c, 0x6d, 0x0c, 0xdd, 0x0b, 0x40, 0x0b, + 0x52, 0x0a, 0x33, 0x09, 0x55, 0x08, 0xe8, 0x07, 0x7a, 0x07, 0x97, 0x06, 0xaa, 0x05, 0x2f, 0x04, + 0xfa, 0x02, 0x4a, 0x02, 0xa0, 0x01, 0xa2, 0x01, 0x10, 0x01, 0x0d, 0x00, 0xab, 0xfe, 0x60, 0xfd, + 0x4b, 0xfc, 0x33, 0xfa, 0xeb, 0xf8, 0xaa, 0xf7, 0x65, 0xf6, 0x94, 0xf5, 0xfb, 0xf4, 0x01, 0xf5, + 0xfd, 0xf4, 0x83, 0xf4, 0xfe, 0xf3, 0x8f, 0xf4, 0x33, 0xf5, 0xfe, 0xf5, 0xdf, 0xf6, 0x4b, 0xf8, + 0xe3, 0xfa, 0x0f, 0xfd, 0xe2, 0xff, 0x69, 0x01, 0xd0, 0x02, 0x30, 0x04, 0xb8, 0x04, 0x41, 0x05, + 0x9b, 0x05, 0x23, 0x06, 0xac, 0x06, 0x93, 0x06, 0xe2, 0x05, 0xf8, 0x05, 0xe7, 0x06, 0x24, 0x07, + 0x56, 0x07, 0xe9, 0x06, 0x66, 0x06, 0x11, 0x06, 0x2c, 0x05, 0xbb, 0x04, 0x18, 0x05, 0x38, 0x05, + 0x9f, 0x04, 0x16, 0x04, 0xb6, 0x03, 0xbe, 0x02, 0xf1, 0x00, 0xc3, 0xfe, 0xe7, 0xfc, 0x0e, 0xfb, + 0x7d, 0xf9, 0xd8, 0xf8, 0x04, 0xf8, 0x88, 0xf7, 0x81, 0xf6, 0x14, 0xf6, 0x12, 0xf6, 0xaf, 0xf5, + 0x42, 0xf6, 0xf0, 0xf6, 0x58, 0xf8, 0x81, 0xf9, 0x15, 0xfb, 0xd3, 0xfc, 0xe9, 0xfd, 0x7e, 0xfe, + 0xe4, 0xfe, 0xb9, 0xff, 0x69, 0x00, 0xdd, 0x00, 0x9e, 0x01, 0xdd, 0x01, 0x08, 0x02, 0x08, 0x02, + 0xa4, 0x02, 0x2a, 0x03, 0x5e, 0x03, 0xab, 0x03, 0x0c, 0x03, 0x05, 0x03, 0x7c, 0x02, 0x62, 0x02, + 0x30, 0x03, 0xba, 0x03, 0xb1, 0x04, 0x11, 0x05, 0xfc, 0x05, 0x7e, 0x06, 0x58, 0x06, 0x79, 0x05, + 0x0b, 0x04, 0x03, 0x03, 0x7b, 0x01, 0x59, 0x00, 0x9b, 0xff, 0x46, 0xff, 0xb3, 0xfe, 0x03, 0xfe, + 0x26, 0xfe, 0xa4, 0xfd, 0xef, 0xfc, 0x62, 0xfc, 0xc3, 0xfc, 0x11, 0xfd, 0x66, 0xfd, 0x43, 0xfe, + 0xd6, 0xfe, 0xe1, 0xfe, 0x85, 0xfe, 0xb2, 0xfe, 0x9e, 0xfe, 0x7d, 0xfe, 0xa0, 0xfe, 0xba, 0xfe, + 0xf7, 0xfe, 0x61, 0xfe, 0x26, 0xfe, 0xf9, 0xfd, 0x23, 0xfe, 0x43, 0xfe, 0xc0, 0xfd, 0xd5, 0xfd, + 0xc9, 0xfd, 0x65, 0xfd, 0x59, 0xfd, 0xa9, 0xfd, 0x1c, 0xff, 0x35, 0x00, 0x49, 0x01, 0xf1, 0x01, + 0x35, 0x02, 0xf2, 0x01, 0xe6, 0x00, 0x0f, 0x00, 0x26, 0xff, 0x8d, 0xfe, 0x07, 0xfe, 0x0f, 0xfe, + 0x1f, 0xfe, 0xeb, 0xfd, 0x59, 0xfe, 0x0e, 0xff, 0x69, 0xff, 0x78, 0xff, 0xb3, 0xff, 0x5f, 0x00, + 0xe6, 0x00, 0x42, 0x01, 0xdd, 0x01, 0x15, 0x03, 0x8b, 0x03, 0xb7, 0x03, 0xb6, 0x04, 0x37, 0x05, + 0x0e, 0x05, 0xb8, 0x04, 0x1f, 0x05, 0x60, 0x04, 0x7d, 0x03, 0xc3, 0x02, 0xbc, 0x01, 0x0c, 0x01, + 0x58, 0x00, 0x2b, 0xff, 0x37, 0xfe, 0x46, 0xfd, 0x97, 0xfc, 0x3f, 0xfc, 0x86, 0xfc, 0x7b, 0xfd, + 0x4c, 0xfe, 0x68, 0xfe, 0x6c, 0xff, 0x83, 0xff, 0x4b, 0xfe, 0x5a, 0xfe, 0x84, 0xfd, 0xa3, 0xfc, + 0x7f, 0xfb, 0x30, 0xfb, 0x6e, 0xfb, 0xf4, 0xfb, 0x38, 0xfc, 0x00, 0xfd, 0xc5, 0xfd, 0x02, 0xfe, + 0x6f, 0xfe, 0x27, 0xff, 0xa0, 0xff, 0x7a, 0x00, 0x03, 0x01, 0x21, 0x02, 0x63, 0x03, 0x09, 0x04, + 0x6b, 0x05, 0xd9, 0x06, 0xfa, 0x07, 0x55, 0x08, 0x5b, 0x09, 0xbe, 0x09, 0xed, 0x08, 0x0d, 0x08, + 0x74, 0x06, 0xf7, 0x04, 0x20, 0x04, 0x46, 0x03, 0x93, 0x02, 0x66, 0x01, 0x11, 0x00, 0x39, 0xfe, + 0xe3, 0xfd, 0xa1, 0xfd, 0xe0, 0xfd, 0xf9, 0xfd, 0xbc, 0xfd, 0xe3, 0xfd, 0xea, 0xfc, 0xac, 0xfb, + 0x72, 0xfa, 0xc7, 0xf9, 0x85, 0xf8, 0xbc, 0xf7, 0x39, 0xf7, 0x1f, 0xf7, 0xa2, 0xf7, 0xa3, 0xf7, + 0x6e, 0xf8, 0xa9, 0xf8, 0x79, 0xf8, 0x25, 0xf9, 0xca, 0xf9, 0x43, 0xfb, 0xff, 0xfb, 0xfa, 0xfc, + 0xcd, 0xfe, 0x10, 0x00, 0x92, 0x01, 0x98, 0x03, 0x4f, 0x05, 0xcd, 0x05, 0xe2, 0x06, 0xd3, 0x07, + 0x38, 0x08, 0xbe, 0x08, 0x1a, 0x09, 0xe3, 0x08, 0x7a, 0x08, 0x03, 0x09, 0x52, 0x09, 0x29, 0x09, + 0xd1, 0x09, 0x62, 0x09, 0x4b, 0x08, 0xc8, 0x07, 0x99, 0x07, 0x4b, 0x07, 0xf0, 0x06, 0xfb, 0x06, + 0x99, 0x06, 0xd4, 0x05, 0xcf, 0x04, 0xef, 0x03, 0x02, 0x02, 0x2e, 0x00, 0x7b, 0xfe, 0x8d, 0xfc, + 0x9b, 0xfb, 0xdc, 0xf9, 0x58, 0xf8, 0x4b, 0xf7, 0xb5, 0xf5, 0x12, 0xf4, 0xe2, 0xf2, 0xa7, 0xf2, + 0x33, 0xf2, 0xd6, 0xf2, 0xff, 0xf3, 0x02, 0xf5, 0x7f, 0xf6, 0x1f, 0xf8, 0x43, 0xf9, 0x3f, 0xfa, + 0xdb, 0xfb, 0x8a, 0xfc, 0x42, 0xfd, 0xcf, 0xfe, 0x6b, 0xfe, 0x7a, 0xfe, 0x93, 0xfe, 0xca, 0xfe, + 0xf9, 0xff, 0xfc, 0x00, 0x0e, 0x02, 0x9b, 0x02, 0x85, 0x02, 0xca, 0x01, 0xc1, 0x01, 0xac, 0x02, + 0x38, 0x03, 0xd0, 0x03, 0xa5, 0x04, 0x13, 0x06, 0xa5, 0x06, 0x85, 0x06, 0xd0, 0x06, 0xed, 0x06, + 0x18, 0x06, 0xa7, 0x04, 0x07, 0x04, 0x3e, 0x03, 0xc4, 0x01, 0xd3, 0x01, 0xaf, 0x01, 0xa9, 0x00, + 0x52, 0x00, 0x6f, 0x00, 0x7d, 0x00, 0x91, 0x00, 0x73, 0x00, 0x62, 0x00, 0xa2, 0x00, 0xa2, 0x00, + 0x67, 0x01, 0x73, 0x01, 0x37, 0x01, 0x36, 0x01, 0xfd, 0xff, 0x24, 0x00, 0xe5, 0x00, 0x97, 0x00, + 0x7d, 0xff, 0x0b, 0xff, 0x90, 0xff, 0xa1, 0xff, 0xcd, 0xff, 0x68, 0xff, 0x39, 0xff, 0x41, 0xfe, + 0x0c, 0xfd, 0x20, 0xfd, 0x58, 0xfd, 0x2e, 0xfe, 0xa6, 0xfe, 0x7f, 0xff, 0x8f, 0x01, 0xb2, 0x02, + 0x32, 0x03, 0x8a, 0x03, 0x74, 0x03, 0x7d, 0x02, 0x18, 0x02, 0xb5, 0x01, 0xf8, 0x00, 0x7f, 0x00, + 0xdb, 0xff, 0xad, 0xff, 0x61, 0xff, 0x7f, 0xff, 0xde, 0xff, 0x18, 0x00, 0x06, 0x01, 0x17, 0x01, + 0xf1, 0x01, 0xa8, 0x02, 0xfd, 0x02, 0xb3, 0x03, 0xf9, 0x03, 0x84, 0x04, 0xf1, 0x04, 0x63, 0x05, + 0x97, 0x05, 0x9e, 0x05, 0xc3, 0x04, 0xb4, 0x03, 0x68, 0x02, 0x55, 0x01, 0xb0, 0x00, 0xd5, 0xff, + 0xf8, 0xfe, 0xb8, 0xfd, 0xf2, 0xfb, 0x38, 0xfa, 0x30, 0xf9, 0xe8, 0xf8, 0x59, 0xf8, 0x05, 0xf8, + 0xe3, 0xf8, 0xaa, 0xf9, 0xa9, 0xf9, 0x4c, 0xf9, 0xf6, 0xf8, 0x84, 0xf7, 0xbd, 0xf6, 0x12, 0xf6, + 0x32, 0xf5, 0xb0, 0xf4, 0x5c, 0xf4, 0xbf, 0xf4, 0x2e, 0xf5, 0x1c, 0xf6, 0x13, 0xf7, 0xd8, 0xf7, + 0x38, 0xf9, 0x3f, 0xfa, 0xff, 0xfa, 0x6a, 0xfc, 0x47, 0xfe, 0x4b, 0xff, 0xfe, 0x00, 0x7e, 0x03, + 0x8b, 0x04, 0x1b, 0x06, 0x8d, 0x07, 0x41, 0x09, 0x30, 0x0a, 0x75, 0x0a, 0xe6, 0x0a, 0xd7, 0x0a, + 0xf4, 0x0a, 0x38, 0x0a, 0x47, 0x09, 0xe2, 0x08, 0x47, 0x08, 0xff, 0x06, 0xae, 0x05, 0xb8, 0x04, + 0x52, 0x04, 0x7f, 0x03, 0x18, 0x03, 0x3c, 0x03, 0x81, 0x03, 0x36, 0x03, 0xb0, 0x02, 0x58, 0x01, + 0x35, 0xff, 0x13, 0xfd, 0x3d, 0xfb, 0x61, 0xfa, 0x3b, 0xf9, 0x48, 0xf8, 0x3a, 0xf8, 0x2c, 0xf8, + 0xbb, 0xf7, 0x1a, 0xf7, 0xc0, 0xf7, 0xbb, 0xf7, 0xaa, 0xf7, 0x69, 0xf8, 0x10, 0xf9, 0xcb, 0xf9, + 0x87, 0xfa, 0xfc, 0xfb, 0x6f, 0xfd, 0xee, 0xfe, 0x96, 0x00, 0x03, 0x02, 0x52, 0x03, 0x4c, 0x04, + 0x87, 0x04, 0x37, 0x04, 0x21, 0x04, 0x9a, 0x03, 0x18, 0x03, 0xbc, 0x03, 0x3d, 0x04, 0x14, 0x04, + 0x71, 0x03, 0x37, 0x03, 0x70, 0x03, 0x69, 0x03, 0xce, 0x03, 0x0e, 0x04, 0xa9, 0x04, 0x16, 0x05, + 0x20, 0x05, 0xbf, 0x04, 0xe8, 0x03, 0xbc, 0x02, 0x42, 0x01, 0xe0, 0xff, 0xb9, 0xfe, 0xab, 0xfd, + 0x78, 0xfc, 0xc3, 0xfb, 0x40, 0xfb, 0x03, 0xfa, 0xba, 0xf9, 0xd1, 0xf9, 0x72, 0xf9, 0x23, 0xf9, + 0x9e, 0xf9, 0x78, 0xfa, 0xd4, 0xfa, 0x58, 0xfc, 0x39, 0xfe, 0xe1, 0xff, 0x0c, 0x01, 0x1e, 0x02, + 0x5d, 0x03, 0x8f, 0x04, 0x97, 0x05, 0xe9, 0x05, 0x62, 0x06, 0xbd, 0x06, 0xdb, 0x06, 0x65, 0x07, + 0x3d, 0x08, 0x74, 0x09, 0xc7, 0x09, 0x81, 0x09, 0x21, 0x09, 0xe5, 0x08, 0x1b, 0x09, 0xec, 0x08, + 0x38, 0x09, 0x99, 0x09, 0xcf, 0x09, 0xe2, 0x09, 0xfe, 0x09, 0x13, 0x0a, 0x15, 0x09, 0xf7, 0x07, + 0xe7, 0x06, 0xbc, 0x05, 0x87, 0x04, 0xe8, 0x03, 0x58, 0x03, 0xb6, 0x01, 0x41, 0x00, 0x00, 0xff, + 0x52, 0xfe, 0xb1, 0xfd, 0xb1, 0xfc, 0x8e, 0xfc, 0xe4, 0xfc, 0x56, 0xfd, 0x24, 0xfd, 0x6e, 0xfd, + 0x52, 0xfe, 0x35, 0xfe, 0x73, 0xfe, 0xb5, 0xfe, 0x74, 0xfe, 0x30, 0xfe, 0x74, 0xfd, 0xb1, 0xfc, + 0x25, 0xfb, 0x53, 0xfa, 0x54, 0xfa, 0xb1, 0xfa, 0x00, 0xfb, 0x15, 0xfb, 0x8b, 0xfa, 0xc8, 0xf9, + 0xdc, 0xf9, 0x64, 0xf9, 0xb4, 0xf8, 0xf2, 0xf8, 0x8c, 0xf9, 0xc4, 0xf9, 0x05, 0xfb, 0xa4, 0xfb, + 0xc4, 0xfb, 0xcd, 0xfb, 0xfa, 0xfa, 0x6a, 0xfb, 0x6d, 0xfb, 0xa0, 0xfa, 0x56, 0xfb, 0xe1, 0xfa, + 0x25, 0xfa, 0x8a, 0xfa, 0x19, 0xfb, 0xe2, 0xfb, 0x5b, 0xfc, 0x34, 0xfd, 0x9f, 0xfe, 0xe8, 0xfe, + 0x81, 0x00, 0xfe, 0x01, 0x33, 0x03, 0x72, 0x03, 0x8a, 0x03, 0x90, 0x04, 0x64, 0x04, 0xd3, 0x04, + 0x82, 0x04, 0xd6, 0x03, 0xc2, 0x03, 0x23, 0x03, 0x18, 0x02, 0xdd, 0x01, 0xf9, 0x01, 0x80, 0x01, + 0x58, 0x01, 0xd5, 0xff, 0x61, 0xfe, 0x81, 0xfd, 0x32, 0xfc, 0xbc, 0xfb, 0x7e, 0xfb, 0x69, 0xfa, + 0x6e, 0xfb, 0xa6, 0xfc, 0x62, 0xfc, 0xbe, 0xfc, 0x47, 0xfc, 0xb5, 0xfa, 0x24, 0xfa, 0x31, 0xf9, + 0xc5, 0xf8, 0x37, 0xf9, 0x53, 0xf9, 0xff, 0xf8, 0xc6, 0xf9, 0x37, 0xfa, 0x0d, 0xfb, 0x40, 0xfc, + 0x9c, 0xfc, 0xf2, 0xfd, 0x8a, 0xfe, 0xcd, 0xff, 0xb9, 0x01, 0x4c, 0x02, 0x6a, 0x04, 0x75, 0x05, + 0x26, 0x06, 0x89, 0x09, 0xf9, 0x0a, 0x25, 0x0c, 0x69, 0x0d, 0x23, 0x0d, 0x23, 0x0c, 0x1a, 0x0c, + 0xef, 0x0a, 0xb2, 0x0a, 0x87, 0x0a, 0x6d, 0x07, 0xea, 0x05, 0x65, 0x06, 0xdf, 0x04, 0xcf, 0x02, + 0x70, 0x02, 0xa3, 0x01, 0x17, 0x00, 0x7a, 0xfe, 0x2e, 0xfe, 0xbf, 0xfd, 0xa6, 0xfc, 0xe5, 0xf9, + 0xf4, 0xf6, 0xee, 0xf4, 0x83, 0xf2, 0x7f, 0xf0, 0x5c, 0xef, 0xa7, 0xee, 0xd3, 0xed, 0x38, 0xed, + 0xbc, 0xec, 0x21, 0xed, 0x24, 0xed, 0x71, 0xed, 0x3d, 0xef, 0xc1, 0xf0, 0xd2, 0xf2, 0xa4, 0xf4, + 0x23, 0xf6, 0x88, 0xf7, 0xcb, 0xf8, 0x87, 0xf9, 0x3c, 0xfb, 0xbc, 0xfc, 0x06, 0xfd, 0x37, 0xff, + 0xae, 0x00, 0xe3, 0x00, 0x51, 0x01, 0xa4, 0x01, 0xa4, 0x02, 0x52, 0x03, 0x58, 0x04, 0x68, 0x05, + 0x5b, 0x06, 0xbe, 0x05, 0xcd, 0x03, 0x83, 0x03, 0xd7, 0x04, 0x68, 0x05, 0x4f, 0x07, 0xd5, 0x09, + 0xb3, 0x0a, 0x32, 0x0b, 0xd3, 0x0b, 0xa2, 0x0b, 0xce, 0x0a, 0x7a, 0x09, 0x62, 0x08, 0x26, 0x08, + 0xc4, 0x07, 0xd4, 0x07, 0x71, 0x07, 0x7e, 0x07, 0xfa, 0x06, 0x89, 0x06, 0x43, 0x07, 0xc5, 0x07, + 0xc1, 0x06, 0xd9, 0x06, 0x1a, 0x08, 0xa3, 0x07, 0x40, 0x08, 0xb9, 0x08, 0x38, 0x0a, 0xe5, 0x0b, + 0xec, 0x0c, 0x57, 0x0e, 0xbd, 0x0d, 0xaf, 0x0d, 0x7b, 0x0d, 0xee, 0x0b, 0x04, 0x0b, 0x22, 0x0b, + 0xa6, 0x0a, 0x52, 0x09, 0xa4, 0x09, 0xe3, 0x09, 0xe5, 0x08, 0xc9, 0x08, 0x7c, 0x09, 0xc4, 0x08, + 0xa5, 0x07, 0x6c, 0x07, 0x40, 0x08, 0x13, 0x07, 0x8f, 0x05, 0xc5, 0x04, 0xf1, 0x01, 0xf7, 0xff, + 0x44, 0xff, 0x94, 0xfe, 0xe6, 0xfd, 0xa7, 0xfd, 0x11, 0xfc, 0x14, 0xfb, 0x2f, 0xfb, 0x3f, 0xf9, + 0x45, 0xf8, 0x34, 0xf8, 0x87, 0xf6, 0xc6, 0xf5, 0xf9, 0xf6, 0x18, 0xf7, 0xc0, 0xf7, 0x87, 0xf9, + 0x36, 0xfb, 0x63, 0xfb, 0x28, 0xfd, 0x6d, 0xfd, 0xed, 0xfc, 0x65, 0xfd, 0x93, 0xfc, 0xf6, 0xfb, + 0x47, 0xf9, 0xe0, 0xf8, 0x70, 0xf9, 0x6e, 0xf9, 0x29, 0xfa, 0x66, 0xf9, 0x7c, 0xf9, 0xc4, 0xf9, + 0x67, 0xf9, 0x57, 0xfa, 0x0b, 0xfa, 0x17, 0xfa, 0x37, 0xfb, 0xab, 0xfb, 0x8b, 0xfc, 0x44, 0xfe, + 0x3f, 0xfe, 0x3b, 0xfd, 0xbd, 0xfd, 0x2a, 0xfe, 0x59, 0xfc, 0x77, 0xfc, 0xf2, 0xfe, 0x2e, 0xff, + 0x9e, 0xfe, 0x78, 0x00, 0xc2, 0xfe, 0xaf, 0xfd, 0x9a, 0x00, 0xf8, 0x01, 0x95, 0x03, 0x2f, 0x06, + 0x98, 0x06, 0x0a, 0x08, 0xe4, 0x07, 0x65, 0x08, 0x9f, 0x08, 0x84, 0x08, 0x57, 0x09, 0x78, 0x06, + 0xb4, 0x05, 0x94, 0x04, 0x66, 0x03, 0x7a, 0x01, 0xfe, 0xfe, 0x12, 0xff, 0x64, 0xfc, 0xc0, 0xf9, + 0xff, 0xf9, 0x3b, 0xf7, 0x23, 0xf4, 0x85, 0xf1, 0x97, 0xf0, 0xcb, 0xed, 0x8a, 0xeb, 0x6a, 0xec, + 0xa9, 0xea, 0x5b, 0xea, 0x17, 0xec, 0x15, 0xea, 0xf8, 0xe7, 0x61, 0xe8, 0xcf, 0xe8, 0x90, 0xe7, + 0x3e, 0xe7, 0xf2, 0xe7, 0x3d, 0xe7, 0x49, 0xe7, 0x93, 0xe9, 0x90, 0xea, 0x91, 0xe9, 0xe5, 0xeb, + 0x99, 0xee, 0x4d, 0xf1, 0x6c, 0xf1, 0xf0, 0xf2, 0x08, 0xf5, 0x12, 0xf6, 0xb0, 0xf8, 0xf4, 0xfc, + 0x01, 0xfe, 0x8f, 0x01, 0x3c, 0x04, 0x16, 0x06, 0xc7, 0x0a, 0x98, 0x0b, 0xbc, 0x0c, 0x40, 0x0d, + 0x99, 0x0f, 0xd1, 0x0f, 0xce, 0x0e, 0xe0, 0x11, 0x55, 0x11, 0xa5, 0x10, 0x9d, 0x11, 0x58, 0x11, + 0xfc, 0x11, 0x27, 0x11, 0x5f, 0x14, 0x29, 0x15, 0x52, 0x13, 0xbc, 0x16, 0xa9, 0x15, 0x65, 0x14, + 0x85, 0x13, 0x02, 0x11, 0x03, 0x12, 0x23, 0x09, 0xdc, 0x0d, 0x86, 0x0f, 0x1f, 0x07, 0xc4, 0x0b, + 0x92, 0x0a, 0xe6, 0x03, 0x49, 0x06, 0x56, 0x09, 0x46, 0x08, 0x7d, 0x09, 0x33, 0x07, 0x40, 0x09, + 0xfd, 0x0f, 0xf1, 0x08, 0x38, 0x0f, 0xa6, 0x11, 0x2a, 0x10, 0x3b, 0x12, 0x66, 0x0e, 0x90, 0x11, + 0x95, 0x0f, 0xa0, 0x0c, 0x93, 0x10, 0xb9, 0x10, 0xe1, 0x0d, 0xa5, 0x0f, 0xaa, 0x0f, 0x38, 0x0d, + 0xc2, 0x0c, 0x5b, 0x09, 0x8a, 0x09, 0x46, 0x07, 0xdf, 0x06, 0x1a, 0x08, 0xc5, 0x09, 0x19, 0x0b, + 0x04, 0x06, 0x11, 0x07, 0xd6, 0x09, 0xde, 0x03, 0x31, 0x00, 0xf3, 0x05, 0x58, 0xfe, 0xbf, 0xfc, + 0x14, 0x08, 0x65, 0x07, 0x91, 0x01, 0xed, 0x02, 0x82, 0xfe, 0x15, 0xfe, 0x90, 0xfc, 0x0c, 0xf6, + 0xee, 0xf2, 0xeb, 0xee, 0x5a, 0xf4, 0x9e, 0xef, 0x39, 0xef, 0xf5, 0xf2, 0x82, 0xee, 0x03, 0xef, + 0xc6, 0xee, 0xe2, 0xe3, 0x5c, 0xe2, 0xfe, 0xdf, 0x34, 0xda, 0x25, 0xe1, 0x8a, 0xd7, 0x78, 0xd4, + 0x26, 0xd8, 0xd0, 0xd6, 0x6f, 0xdd, 0xbd, 0xdd, 0xae, 0xdf, 0xa8, 0xe3, 0xce, 0xe2, 0x07, 0xe7, + 0x99, 0xe9, 0x72, 0xf2, 0xd4, 0xf9, 0xbd, 0xf9, 0x4b, 0x03, 0x2a, 0x0b, 0xae, 0x11, 0xcb, 0x1c, + 0x69, 0x1e, 0xfe, 0x26, 0x7c, 0x27, 0xa0, 0x2e, 0x85, 0x3c, 0x44, 0x35, 0x17, 0x36, 0x41, 0x34, + 0xa6, 0x2e, 0x90, 0x2b, 0x9b, 0x24, 0x9e, 0x1a, 0x67, 0x16, 0xee, 0x0e, 0xff, 0x09, 0x85, 0x06, + 0xc7, 0x02, 0x49, 0x08, 0x03, 0x0a, 0xa0, 0x09, 0xa5, 0x07, 0x92, 0x01, 0x9d, 0xfe, 0xeb, 0xfa, + 0xde, 0xf4, 0xc7, 0xf0, 0xe4, 0xe8, 0xbf, 0xe4, 0xa1, 0xdf, 0x2a, 0xdb, 0xfe, 0xd7, 0x35, 0xda, + 0xa8, 0xdc, 0x47, 0xd8, 0xab, 0xe2, 0x31, 0xe6, 0x6d, 0xe7, 0xff, 0xec, 0xbc, 0xea, 0x6a, 0xf2, + 0x4b, 0xf4, 0xfa, 0xef, 0x83, 0xef, 0x55, 0xea, 0xa8, 0xe6, 0xf7, 0xe3, 0xe4, 0xd9, 0xb8, 0xd9, + 0xe0, 0xd3, 0xa1, 0xce, 0x62, 0xce, 0xca, 0xc7, 0x40, 0xc8, 0x22, 0xca, 0x41, 0xd0, 0xa7, 0xd4, + 0xd9, 0xd3, 0xa1, 0xd9, 0xad, 0xde, 0xab, 0xe0, 0x19, 0xe6, 0x01, 0xe7, 0x90, 0xea, 0x20, 0xed, + 0xa2, 0xed, 0xf3, 0xef, 0x5a, 0xf2, 0x2c, 0xf7, 0xdc, 0xfe, 0x39, 0x06, 0x20, 0x0b, 0x1b, 0x0f, + 0xba, 0x13, 0xa2, 0x16, 0x57, 0x1c, 0x2a, 0x21, 0xaf, 0x25, 0x71, 0x22, 0x24, 0x1f, 0xea, 0x1c, + 0x97, 0x21, 0x75, 0x27, 0xb3, 0x25, 0x0a, 0x20, 0x0b, 0x18, 0x70, 0x1e, 0x08, 0x1b, 0xf0, 0x1f, + 0x40, 0x1e, 0x32, 0x16, 0xee, 0x1a, 0x4e, 0x16, 0x4d, 0x19, 0xac, 0x1c, 0x25, 0x16, 0xa3, 0x17, + 0xc1, 0x14, 0xee, 0x13, 0xa7, 0x19, 0x25, 0x18, 0x35, 0x19, 0x51, 0x11, 0xe9, 0x15, 0x03, 0x1c, + 0xfd, 0x20, 0x1d, 0x24, 0x89, 0x22, 0xa7, 0x27, 0xc1, 0x29, 0x3c, 0x27, 0x9e, 0x20, 0xc0, 0x22, + 0x78, 0x25, 0xda, 0x27, 0x72, 0x28, 0x26, 0x22, 0xb8, 0x23, 0xc2, 0x22, 0x68, 0x25, 0x50, 0x22, + 0x74, 0x1b, 0xed, 0x1d, 0x55, 0x14, 0x04, 0x10, 0x12, 0x0e, 0x10, 0x05, 0x67, 0x02, 0x66, 0xfd, + 0xa2, 0xfe, 0x59, 0xfa, 0x65, 0xf1, 0xf7, 0xf6, 0xa0, 0xf2, 0xf4, 0xee, 0xb5, 0xf0, 0xf0, 0xf1, + 0xfc, 0xec, 0xf8, 0xe8, 0x31, 0xea, 0x42, 0xea, 0x43, 0xeb, 0xdd, 0xec, 0x6e, 0xed, 0x09, 0xed, + 0x3e, 0xf1, 0x1b, 0xf3, 0x38, 0xf9, 0x6e, 0xff, 0x58, 0x05, 0x5e, 0x0a, 0x60, 0x07, 0xf2, 0x0c, + 0x58, 0x0c, 0xb0, 0x0b, 0x4f, 0x0b, 0xe3, 0x06, 0x38, 0x07, 0xc8, 0x07, 0x2e, 0x00, 0xe9, 0xf8, + 0xd3, 0xf4, 0xf6, 0xf6, 0x9c, 0xf6, 0x0c, 0xf7, 0x7e, 0xfa, 0x05, 0xf7, 0x77, 0xfa, 0xe9, 0xff, + 0x5f, 0xfe, 0xda, 0xfa, 0x0a, 0xf7, 0x7b, 0xf4, 0xa4, 0xf1, 0xc7, 0xec, 0xa1, 0xeb, 0x58, 0xea, + 0x16, 0xe9, 0x7e, 0xea, 0xd0, 0xe8, 0x2f, 0xef, 0xda, 0xf2, 0x08, 0xf2, 0x0f, 0xf2, 0x99, 0xf0, + 0x6e, 0xf8, 0xac, 0xfa, 0x4a, 0xfa, 0x6a, 0xf6, 0xfc, 0xf3, 0x59, 0xf6, 0xf3, 0xf3, 0x47, 0xf0, + 0x05, 0xee, 0x9c, 0xe9, 0xf0, 0xe3, 0xa6, 0xdc, 0x90, 0xda, 0x33, 0xde, 0x8e, 0xd9, 0x67, 0xe0, + 0xc5, 0xe3, 0x46, 0xe1, 0x0b, 0xe6, 0x8b, 0xe8, 0x39, 0xe5, 0xbd, 0xe3, 0xe0, 0xe1, 0xbf, 0xdf, + 0x6f, 0xde, 0x20, 0xdd, 0x07, 0xe2, 0xad, 0xe1, 0xf0, 0xe5, 0x5d, 0xe9, 0x83, 0xee, 0x14, 0xfa, + 0x3a, 0xfe, 0x40, 0x01, 0xac, 0x03, 0xda, 0x07, 0x8f, 0x0e, 0xaf, 0x11, 0xbf, 0x0e, 0xbb, 0x07, + 0x24, 0x06, 0x52, 0x05, 0x5d, 0x00, 0x1c, 0x01, 0xd2, 0xff, 0xda, 0x01, 0x81, 0xff, 0x85, 0xfa, + 0x35, 0xfd, 0xa6, 0xf9, 0x4f, 0xf7, 0xc7, 0xfb, 0x7a, 0xf9, 0x79, 0xf4, 0x39, 0xf7, 0x9a, 0xf5, + 0x33, 0xf1, 0x4f, 0xf1, 0x8e, 0xf0, 0xc5, 0xf3, 0x79, 0xf3, 0x7a, 0xf5, 0x07, 0xf9, 0xcf, 0xf7, + 0x47, 0xfc, 0xff, 0x00, 0xd0, 0x06, 0xe3, 0x0b, 0xf8, 0x14, 0xc9, 0x17, 0xf2, 0x16, 0x4a, 0x1d, + 0x5b, 0x1f, 0xab, 0x20, 0xbc, 0x22, 0xb0, 0x1e, 0x33, 0x21, 0xdc, 0x22, 0xa2, 0x21, 0x3b, 0x1e, + 0xfb, 0x16, 0x7b, 0x17, 0xb0, 0x11, 0xe7, 0x0b, 0x89, 0x08, 0x56, 0x03, 0x2f, 0x04, 0x9f, 0x05, + 0x65, 0x00, 0x38, 0x01, 0xa0, 0x05, 0x5f, 0x07, 0x94, 0x0c, 0x35, 0x0f, 0x58, 0x13, 0x02, 0x16, + 0x33, 0x17, 0x7e, 0x1b, 0x71, 0x1b, 0x91, 0x1d, 0xf2, 0x1f, 0x03, 0x24, 0xa6, 0x27, 0x40, 0x29, + 0x9d, 0x2b, 0x5c, 0x2a, 0x4b, 0x29, 0x3b, 0x28, 0xdd, 0x2a, 0x09, 0x30, 0xf5, 0x2d, 0x8a, 0x29, + 0xe7, 0x26, 0x48, 0x20, 0x23, 0x1c, 0x54, 0x11, 0xba, 0x0b, 0x50, 0x04, 0x8d, 0xf8, 0xbb, 0xf2, + 0xb7, 0xec, 0xcd, 0xe7, 0x0d, 0xe3, 0x90, 0xe0, 0xcd, 0xdd, 0xe7, 0xde, 0x2b, 0xe2, 0x69, 0xe7, + 0x04, 0xe5, 0x5f, 0xe6, 0x9a, 0xea, 0xd5, 0xea, 0x40, 0xef, 0x73, 0xf0, 0x30, 0xf1, 0x6e, 0xfb, + 0xdb, 0xfe, 0x0d, 0x00, 0xd8, 0x06, 0x6c, 0x08, 0x14, 0x10, 0x06, 0x12, 0x7d, 0x14, 0x74, 0x14, + 0xb8, 0x15, 0x05, 0x1b, 0x76, 0x19, 0xf2, 0x16, 0x3b, 0x1a, 0xa2, 0x19, 0x1c, 0x15, 0x57, 0x0d, + 0x3d, 0x09, 0x68, 0x02, 0xde, 0xfc, 0x4a, 0xf9, 0x0e, 0xf5, 0x8d, 0xeb, 0x74, 0xeb, 0xc4, 0xee, + 0xb2, 0xec, 0xb4, 0xed, 0x1c, 0xf1, 0xe6, 0xf4, 0xd9, 0xf6, 0x08, 0xfa, 0x31, 0xf7, 0x90, 0xf9, + 0xe4, 0xf2, 0x77, 0xef, 0xac, 0xef, 0xcf, 0xea, 0xec, 0xeb, 0x44, 0xec, 0xb1, 0xef, 0x1f, 0xf9, + 0x24, 0xf6, 0x91, 0xf9, 0xbd, 0xfc, 0x25, 0xfb, 0x24, 0x01, 0xbc, 0xff, 0x5f, 0xfc, 0xe8, 0xf8, + 0xe9, 0xf2, 0x9f, 0xef, 0x93, 0xee, 0x86, 0xe7, 0x3e, 0xe7, 0xfe, 0xe5, 0xa5, 0xe3, 0xeb, 0xe5, + 0x86, 0xde, 0xcd, 0xdd, 0x75, 0xdd, 0x0c, 0xdf, 0x30, 0xdf, 0x5a, 0xdf, 0x66, 0xe7, 0x93, 0xe9, + 0x32, 0xea, 0x32, 0xe9, 0x73, 0xea, 0xdd, 0xec, 0x7d, 0xea, 0xf5, 0xec, 0xbb, 0xed, 0x41, 0xf1, + 0xa7, 0xf3, 0x8d, 0xf0, 0xd6, 0xf5, 0xaf, 0xf8, 0x54, 0xfb, 0x3c, 0x00, 0x47, 0xfd, 0xe7, 0xfd, + 0x5d, 0x00, 0x0d, 0x01, 0xa5, 0x05, 0x31, 0x06, 0x2c, 0x06, 0x7f, 0x07, 0x74, 0x04, 0x7b, 0x08, + 0x7b, 0x0a, 0x36, 0x03, 0xff, 0x06, 0x61, 0x02, 0x44, 0x00, 0x52, 0x01, 0xa8, 0xfe, 0x01, 0x03, + 0x2c, 0xfe, 0x48, 0xfd, 0xa1, 0xfd, 0x39, 0xfc, 0xcd, 0xfe, 0x52, 0xfe, 0x71, 0xfe, 0xe3, 0x01, + 0x2b, 0x03, 0x93, 0x02, 0xfa, 0x03, 0x8b, 0x05, 0xd7, 0x04, 0xa7, 0x03, 0x9d, 0x04, 0x09, 0x06, + 0x1c, 0x0b, 0xa0, 0x0a, 0x46, 0x0d, 0xc7, 0x10, 0xdf, 0x15, 0x86, 0x17, 0xa1, 0x17, 0xf9, 0x16, + 0xed, 0x1b, 0x95, 0x1d, 0xbf, 0x18, 0xeb, 0x1b, 0xb1, 0x18, 0xed, 0x14, 0x59, 0x16, 0x8d, 0x15, + 0x4e, 0x16, 0x72, 0x13, 0xce, 0x11, 0x36, 0x0e, 0x64, 0x0b, 0xb1, 0x0b, 0x4f, 0x07, 0xdc, 0x0a, + 0x22, 0x0b, 0x3b, 0x09, 0x41, 0x07, 0xeb, 0x02, 0x43, 0x04, 0x8e, 0x01, 0x2c, 0xfe, 0x42, 0xfe, + 0x83, 0xf7, 0xa4, 0xf4, 0x06, 0xf3, 0xbe, 0xf5, 0x2d, 0xfb, 0x74, 0xfc, 0xf6, 0xf9, 0x49, 0xfb, + 0xe2, 0xfc, 0x65, 0x03, 0xce, 0x06, 0xa3, 0x05, 0x97, 0x0f, 0x2b, 0x0c, 0xe9, 0x09, 0x73, 0x0d, + 0x9f, 0x08, 0xfa, 0x06, 0xf3, 0x02, 0x35, 0x01, 0x1a, 0xfb, 0xba, 0xf4, 0x2b, 0xf5, 0xb7, 0xf8, + 0x02, 0xfb, 0x05, 0xfd, 0xdf, 0xff, 0xa1, 0x04, 0xce, 0x08, 0x53, 0x0c, 0x5c, 0x0e, 0x60, 0x0d, + 0x18, 0x09, 0xc4, 0x04, 0x87, 0x04, 0xb7, 0x01, 0xcf, 0x02, 0x83, 0x04, 0xdd, 0x02, 0x3b, 0x04, + 0x49, 0x0d, 0x6a, 0x10, 0xe1, 0x15, 0x45, 0x14, 0x5c, 0x16, 0x9c, 0x1a, 0xa3, 0x16, 0xaa, 0x1d, + 0x7c, 0x1d, 0xe4, 0x1a, 0xd1, 0x18, 0xf7, 0x10, 0x41, 0x0d, 0xd7, 0x06, 0x37, 0x02, 0xda, 0xff, + 0x38, 0xfd, 0x60, 0xf8, 0xfe, 0xf6, 0xb5, 0xef, 0xd9, 0xeb, 0xc6, 0xe9, 0xc7, 0xe3, 0x31, 0xe4, + 0x80, 0xe1, 0x07, 0xe1, 0xc8, 0xde, 0xc4, 0xdc, 0x30, 0xda, 0x91, 0xd9, 0x5a, 0xdb, 0xa2, 0xde, + 0xd3, 0xe2, 0xcd, 0xe7, 0xe5, 0xe7, 0xbe, 0xed, 0x2e, 0xf6, 0x20, 0xfd, 0xc3, 0xff, 0x5a, 0x01, + 0xb5, 0x0c, 0xbb, 0x0e, 0x9b, 0x0d, 0x85, 0x11, 0x70, 0x13, 0x46, 0x14, 0xe0, 0x10, 0xcc, 0x12, + 0x0c, 0x12, 0x64, 0x0f, 0x11, 0x0f, 0x01, 0x09, 0x57, 0x05, 0xb9, 0x01, 0x1d, 0xf9, 0x9f, 0xf4, + 0xb6, 0xee, 0x2d, 0xe8, 0x4d, 0xe7, 0x3b, 0xe4, 0xef, 0xe5, 0x5f, 0xe5, 0xff, 0xe0, 0x9f, 0xdf, + 0xc3, 0xdf, 0x84, 0xde, 0x82, 0xde, 0x6e, 0xdc, 0x44, 0xdd, 0x5f, 0xdf, 0x0d, 0xdd, 0x7a, 0xe5, + 0x98, 0xeb, 0xf7, 0xf2, 0xeb, 0xf8, 0x8b, 0xfa, 0x4d, 0x02, 0xd3, 0x03, 0x33, 0x05, 0x5d, 0x0a, + 0x8e, 0x0d, 0xdc, 0x0c, 0x0d, 0x0c, 0x97, 0x0d, 0x25, 0x0c, 0xb4, 0x07, 0x82, 0x09, 0x3a, 0x06, + 0x5f, 0x06, 0x18, 0x01, 0xd2, 0xfc, 0xee, 0xf9, 0x69, 0xf5, 0x1c, 0xf9, 0xff, 0xf7, 0x37, 0xfc, + 0xc2, 0xfc, 0x50, 0xfe, 0x23, 0x01, 0x05, 0x03, 0xf9, 0x05, 0x46, 0x0d, 0x01, 0x0e, 0x35, 0x0e, + 0x22, 0x12, 0x9a, 0x0e, 0x64, 0x11, 0x1b, 0x11, 0x06, 0x11, 0xb3, 0x11, 0x26, 0x0b, 0x89, 0x0c, + 0x83, 0x11, 0x1c, 0x13, 0x31, 0x16, 0xa7, 0x18, 0xd4, 0x17, 0x95, 0x1a, 0xc6, 0x1b, 0x9b, 0x1a, + 0xdc, 0x13, 0x0c, 0x0a, 0x4f, 0x05, 0x7f, 0xfa, 0x16, 0xf4, 0xce, 0xee, 0xea, 0xea, 0x6e, 0xe5, + 0x36, 0xe1, 0x43, 0xdf, 0x22, 0xdf, 0xbf, 0xe3, 0xce, 0xe5, 0xcb, 0xe8, 0x4d, 0xec, 0x60, 0xe9, + 0x32, 0xec, 0x4f, 0xf0, 0x99, 0xf0, 0x70, 0xf4, 0xc4, 0xef, 0x38, 0xf0, 0xfb, 0xf0, 0xe2, 0xf0, + 0x53, 0xfa, 0xa9, 0xff, 0xb4, 0x01, 0x58, 0x07, 0x0a, 0x0c, 0x02, 0x0e, 0x32, 0x11, 0xd3, 0x14, + 0xef, 0x17, 0x09, 0x15, 0xf2, 0x16, 0x7a, 0x16, 0x30, 0x12, 0x0e, 0x12, 0x41, 0x10, 0xc7, 0x0f, + 0x1d, 0x10, 0x49, 0x12, 0x7d, 0x10, 0xa0, 0x0f, 0x50, 0x0e, 0x4a, 0x0f, 0xe7, 0x0e, 0x5a, 0x10, + 0xdb, 0x11, 0x12, 0x13, 0x11, 0x15, 0x41, 0x12, 0x36, 0x12, 0x1f, 0x0e, 0xff, 0x0b, 0x93, 0x0a, + 0x9d, 0x07, 0x7f, 0x09, 0xda, 0x07, 0xb3, 0x08, 0x4d, 0x0d, 0xb0, 0x0e, 0x2f, 0x0e, 0x18, 0x0f, + 0xe9, 0x0c, 0xe9, 0x0a, 0xba, 0x05, 0x1d, 0x09, 0x5b, 0x07, 0x53, 0x03, 0xf7, 0x02, 0xf5, 0xfd, + 0x51, 0xfc, 0x4b, 0xf8, 0x64, 0xf6, 0x91, 0xf3, 0xa9, 0xf1, 0xce, 0xed, 0x66, 0xec, 0xc3, 0xe9, + 0x0e, 0xea, 0xcb, 0xed, 0xc9, 0xef, 0x5c, 0xf5, 0xf2, 0xf7, 0xe2, 0xfb, 0x20, 0xfd, 0x31, 0xff, + 0x5a, 0x00, 0xa3, 0xff, 0x17, 0x02, 0x5a, 0xff, 0x32, 0x01, 0x36, 0x02, 0x73, 0xfe, 0xff, 0xff, + 0x7f, 0x03, 0x61, 0x05, 0x04, 0x07, 0xae, 0x07, 0xd4, 0x05, 0x13, 0x04, 0xa4, 0x04, 0xc5, 0x08, + 0x64, 0x08, 0xa4, 0x06, 0xbf, 0x06, 0xa3, 0x03, 0x99, 0x02, 0x7f, 0x00, 0x35, 0x00, 0x0d, 0xff, + 0x20, 0xfa, 0x1c, 0xf8, 0xf9, 0xf3, 0x5c, 0xf3, 0xdb, 0xf2, 0xef, 0xea, 0x84, 0xe8, 0xb3, 0xe0, + 0x44, 0xe2, 0x11, 0xe8, 0x30, 0xea, 0x8d, 0xec, 0xb4, 0xea, 0x67, 0xec, 0xa5, 0xef, 0x70, 0xf3, + 0x7a, 0xf6, 0x40, 0xf6, 0xcb, 0xf1, 0xc3, 0xf3, 0x11, 0xf5, 0xf2, 0xf4, 0xce, 0xf5, 0x3b, 0xfd, + 0x05, 0x02, 0x34, 0x02, 0xc9, 0x06, 0xb3, 0x0b, 0xc9, 0x12, 0x6f, 0x17, 0x9c, 0x1b, 0xcb, 0x1b, + 0x1d, 0x1c, 0x2b, 0x1b, 0x68, 0x19, 0xc0, 0x19, 0x8c, 0x18, 0xed, 0x11, 0x3e, 0x08, 0x04, 0x08, + 0x9c, 0x01, 0xb1, 0xfd, 0x02, 0xfd, 0x83, 0xfa, 0x61, 0xfc, 0x8a, 0xfa, 0xfc, 0xf8, 0xd1, 0xf9, + 0x20, 0xf5, 0x7b, 0xf3, 0x18, 0xef, 0x71, 0xea, 0x22, 0xeb, 0x90, 0xe3, 0xa9, 0xe0, 0x36, 0xe5, + 0x4f, 0xe8, 0x70, 0xec, 0x35, 0xf0, 0x17, 0xf8, 0x1e, 0xfb, 0x61, 0xfd, 0xa9, 0x03, 0x4f, 0x0b, + 0xa1, 0x0e, 0x6b, 0x0e, 0xe2, 0x0f, 0x23, 0x11, 0xf0, 0x13, 0x96, 0x10, 0x18, 0x0b, 0xcb, 0x08, + 0xb3, 0x07, 0xde, 0x03, 0x82, 0x01, 0x56, 0xff, 0xec, 0xfd, 0x00, 0xfc, 0x6b, 0xfb, 0x8a, 0xfc, + 0xf6, 0xf9, 0xcf, 0xf7, 0xed, 0xf8, 0x73, 0xf4, 0x35, 0xf3, 0x13, 0xf3, 0x44, 0xee, 0xc3, 0xee, + 0x28, 0xee, 0xb1, 0xeb, 0xaa, 0xec, 0x61, 0xeb, 0x89, 0xef, 0x70, 0xf2, 0x6d, 0xf2, 0x32, 0xf9, + 0x8d, 0xfa, 0x87, 0xfc, 0x8b, 0x04, 0x72, 0x07, 0x92, 0x0f, 0x08, 0x14, 0x06, 0x15, 0x99, 0x17, + 0xcf, 0x16, 0xbd, 0x15, 0xe2, 0x10, 0x0f, 0x10, 0x4e, 0x0d, 0x81, 0x0b, 0x69, 0x09, 0x67, 0x06, + 0xe2, 0x04, 0xc4, 0x00, 0x85, 0xfe, 0x81, 0xfc, 0x5f, 0xfd, 0xec, 0xfd, 0xee, 0xfc, 0xff, 0xfa, + 0x3f, 0xfa, 0xb5, 0xfa, 0x93, 0xf9, 0xde, 0xf9, 0xc9, 0xf8, 0xe7, 0xf8, 0xaa, 0xf7, 0x2a, 0xff, + 0xcb, 0x04, 0x21, 0x05, 0x35, 0x09, 0xc8, 0x0e, 0xe4, 0x14, 0xd9, 0x1b, 0x7f, 0x19, 0x59, 0x1b, + 0xc2, 0x1c, 0x4f, 0x1a, 0x7e, 0x1e, 0x59, 0x20, 0x5c, 0x24, 0xfe, 0x22, 0x08, 0x1e, 0x6d, 0x20, + 0x95, 0x20, 0xa6, 0x1c, 0xe0, 0x1a, 0x2d, 0x14, 0x4e, 0x0f, 0xde, 0x07, 0x2d, 0xfe, 0x1f, 0xf9, + 0xbc, 0xf6, 0x89, 0xf6, 0xe5, 0xf3, 0x3d, 0xef, 0x70, 0xef, 0x1c, 0xf0, 0x7a, 0xee, 0x5a, 0xf0, + 0xbe, 0xef, 0xc2, 0xea, 0x0a, 0xe9, 0x53, 0xec, 0x8f, 0xee, 0xe5, 0xef, 0x49, 0xf0, 0x0b, 0xf0, + 0xdb, 0xf0, 0xcc, 0xee, 0x73, 0xf1, 0xce, 0xf6, 0xe6, 0xfa, 0x45, 0xfe, 0x41, 0xfd, 0xa8, 0xff, + 0xc8, 0x02, 0xd3, 0xfe, 0x80, 0xfc, 0xd2, 0xf9, 0xe4, 0xf6, 0x0e, 0xf6, 0x17, 0xef, 0xf5, 0xea, + 0xa5, 0xeb, 0x47, 0xe9, 0x6d, 0xed, 0x4a, 0xee, 0x41, 0xf0, 0x07, 0xf7, 0x20, 0xf9, 0x39, 0xfe, + 0xe0, 0x04, 0xa3, 0x07, 0x7d, 0x09, 0xb4, 0x0b, 0x4a, 0x0e, 0x30, 0x13, 0x9b, 0x0f, 0x63, 0x10, + 0x60, 0x10, 0xa9, 0x0f, 0xd5, 0x13, 0xf1, 0x14, 0x71, 0x17, 0x46, 0x19, 0x38, 0x1a, 0x21, 0x1c, + 0xe3, 0x1e, 0xc6, 0x1d, 0x6f, 0x1a, 0x54, 0x17, 0xe3, 0x12, 0xc0, 0x0e, 0xd5, 0x07, 0xb4, 0xfd, + 0x89, 0xfa, 0x76, 0xf5, 0x39, 0xef, 0xca, 0xec, 0x5b, 0xe7, 0xce, 0xe5, 0x5b, 0xe0, 0x2b, 0xd9, + 0x23, 0xdb, 0x55, 0xdd, 0x35, 0xde, 0xf0, 0xe1, 0x23, 0xe2, 0x2a, 0xe4, 0x8c, 0xe6, 0x76, 0xe8, + 0xb7, 0xec, 0xbc, 0xeb, 0x8c, 0xec, 0xc2, 0xee, 0x56, 0xef, 0xdc, 0xf2, 0xbe, 0xf5, 0x85, 0xfb, + 0x76, 0x02, 0xee, 0x03, 0x67, 0x05, 0x29, 0x09, 0x79, 0x0d, 0xc8, 0x12, 0x4a, 0x10, 0x3c, 0x13, + 0x87, 0x14, 0x35, 0x11, 0xf0, 0x0f, 0x3b, 0x0e, 0xd6, 0x0b, 0xf4, 0x04, 0xce, 0x00, 0x6f, 0xfd, + 0x09, 0xff, 0xdf, 0xff, 0xe0, 0xfa, 0x7a, 0xf7, 0x87, 0xf8, 0xe7, 0xfa, 0x03, 0xfd, 0x72, 0xfb, + 0x4c, 0xf9, 0x69, 0xf5, 0x7c, 0xf0, 0x11, 0xf3, 0x50, 0xef, 0x38, 0xed, 0x25, 0xf0, 0x49, 0xf1, + 0xb6, 0xf3, 0xd6, 0xf5, 0x56, 0xfb, 0x41, 0x00, 0x28, 0x02, 0x0d, 0x01, 0x62, 0x01, 0xf8, 0x01, + 0x42, 0x05, 0xc1, 0x06, 0xbd, 0x07, 0xa5, 0x0a, 0x85, 0x09, 0xdd, 0x08, 0x2b, 0x07, 0x22, 0x09, + 0x29, 0x0b, 0x5c, 0x08, 0x54, 0x08, 0x1d, 0x05, 0xc7, 0x02, 0x5e, 0x04, 0x8b, 0x04, 0x3e, 0x01, + 0xc7, 0xfe, 0x62, 0xfd, 0xec, 0xfe, 0x86, 0xfe, 0xd2, 0x00, 0xd3, 0x02, 0x7a, 0x04, 0x62, 0x07, + 0x7b, 0x07, 0xf1, 0x09, 0xbc, 0x09, 0xb2, 0x08, 0x14, 0x05, 0x4f, 0x04, 0x70, 0x06, 0x58, 0x06, + 0x21, 0x04, 0x4d, 0x07, 0x83, 0x07, 0x83, 0x0b, 0x3e, 0x0f, 0x3f, 0x11, 0x0d, 0x15, 0x51, 0x17, + 0x27, 0x1c, 0xde, 0x1d, 0xe1, 0x1b, 0x9d, 0x18, 0x3d, 0x17, 0x66, 0x15, 0x94, 0x13, 0x9d, 0x0d, + 0xa7, 0x0a, 0x56, 0x07, 0xc5, 0xff, 0xaf, 0xfb, 0xee, 0xf5, 0xb8, 0xf8, 0xb4, 0xf9, 0x39, 0xfa, + 0xa6, 0xf9, 0xb4, 0xf6, 0xc8, 0xf5, 0x3d, 0xf2, 0x2f, 0xee, 0xaa, 0xea, 0x76, 0xe9, 0x1d, 0xe8, + 0x71, 0xe4, 0xca, 0xe1, 0x1f, 0xe2, 0xc8, 0xe4, 0x7b, 0xeb, 0x89, 0xed, 0xce, 0xed, 0x2d, 0xf4, + 0xb5, 0xf7, 0xaf, 0xfa, 0x18, 0xfe, 0x02, 0x04, 0x04, 0x0a, 0xbd, 0x0b, 0x1c, 0x0e, 0x02, 0x12, + 0xb6, 0x12, 0x3a, 0x13, 0x64, 0x11, 0xad, 0x0c, 0xc2, 0x0e, 0x90, 0x09, 0x94, 0x07, 0xb7, 0x05, + 0x00, 0x06, 0xe9, 0x06, 0xe2, 0x03, 0xf4, 0x05, 0x0b, 0x02, 0xb7, 0xff, 0x5c, 0x02, 0xf5, 0x01, + 0xad, 0xfc, 0x5a, 0xf8, 0xf9, 0xf6, 0x4c, 0xf6, 0xd1, 0xf4, 0xd6, 0xf2, 0x2c, 0xf1, 0x46, 0xf2, + 0xc0, 0xf3, 0x4e, 0xf5, 0x17, 0xfb, 0x60, 0xff, 0xbe, 0x04, 0xbe, 0x06, 0x52, 0x09, 0xc0, 0x10, + 0x31, 0x12, 0xe3, 0x0d, 0x3c, 0x0c, 0x19, 0x07, 0x33, 0x03, 0x70, 0x02, 0xfc, 0xfc, 0x3b, 0xfd, + 0x7f, 0xfb, 0x2a, 0xfa, 0x27, 0xfb, 0x23, 0xf9, 0x56, 0xfb, 0xbd, 0xfb, 0x58, 0xfb, 0xf9, 0xfb, + 0x02, 0xf9, 0x15, 0xf6, 0xc1, 0xf8, 0xab, 0xf7, 0x6a, 0xf7, 0xcf, 0xf5, 0x1e, 0xf6, 0x07, 0xf7, + 0x6e, 0xf6, 0x69, 0xf9, 0xc2, 0xf9, 0x6f, 0xfe, 0x52, 0x00, 0xf5, 0x01, 0xb5, 0x02, 0x97, 0x06, + 0x17, 0x09, 0x27, 0x06, 0x84, 0x04, 0xb9, 0x04, 0x10, 0x06, 0x39, 0x05, 0x5a, 0x03, 0xce, 0xff, + 0xd6, 0xff, 0x66, 0xfd, 0xb1, 0xfb, 0x6b, 0xf8, 0x0b, 0xf6, 0xc6, 0xf3, 0x57, 0xec, 0x6f, 0xe8, + 0x78, 0xe4, 0x31, 0xe1, 0xcf, 0xe3, 0xe9, 0xe5, 0xda, 0xe4, 0x13, 0xe8, 0xf4, 0xe8, 0xad, 0xeb, + 0x3e, 0xee, 0x21, 0xef, 0x60, 0xf5, 0x73, 0xf8, 0x99, 0xfc, 0xe7, 0xff, 0xc8, 0x00, 0x9b, 0x08, + 0xe4, 0x0e, 0x71, 0x0f, 0x0d, 0x13, 0xac, 0x18, 0xb3, 0x1b, 0x24, 0x1a, 0xaf, 0x1c, 0x80, 0x25, + 0xbb, 0x29, 0x64, 0x2c, 0x33, 0x2b, 0x97, 0x29, 0x67, 0x29, 0x26, 0x23, 0xe3, 0x1b, 0x08, 0x16, + 0x89, 0x14, 0xd2, 0x0b, 0xf3, 0x03, 0x86, 0xfe, 0x65, 0xf9, 0xf2, 0xf7, 0xa8, 0xf7, 0x7a, 0xf5, + 0x7a, 0xf2, 0x55, 0xef, 0x75, 0xf0, 0xca, 0xf1, 0x4d, 0xee, 0xfe, 0xed, 0x9e, 0xec, 0x53, 0xee, + 0x8a, 0xf0, 0x39, 0xf0, 0x9c, 0xf2, 0x98, 0xf8, 0x82, 0xf9, 0xb1, 0xf9, 0xfe, 0xf8, 0xe5, 0xff, + 0x2a, 0x06, 0x87, 0x06, 0x0e, 0x0d, 0x18, 0x0e, 0x04, 0x11, 0xad, 0x10, 0x47, 0x0d, 0xaf, 0x0d, + 0x53, 0x0c, 0xc4, 0x09, 0x05, 0x06, 0xb6, 0x01, 0xeb, 0xfd, 0xf7, 0xfc, 0xcc, 0xf7, 0x66, 0xf4, + 0xbd, 0xf0, 0x0b, 0xee, 0x52, 0xf1, 0xcc, 0xf3, 0x6d, 0xf6, 0x96, 0xf9, 0x13, 0xfd, 0xa9, 0xfd, + 0xe2, 0x00, 0x6e, 0x03, 0x14, 0x04, 0xaa, 0x05, 0x6d, 0x02, 0x2b, 0xff, 0xa9, 0xfc, 0xc7, 0xfd, + 0xc4, 0x02, 0xd7, 0x04, 0xb4, 0x06, 0x40, 0x0c, 0x54, 0x0e, 0xdd, 0x12, 0xe6, 0x13, 0x00, 0x14, + 0x65, 0x18, 0x91, 0x15, 0x3d, 0x10, 0xf5, 0x0b, 0x1c, 0x0a, 0xd6, 0x06, 0xe9, 0xfe, 0xbe, 0xf9, + 0xc2, 0xf9, 0x7d, 0xf6, 0x81, 0xf4, 0x05, 0xf0, 0xaf, 0xec, 0x7a, 0xef, 0x7c, 0xf0, 0x7f, 0xf0, + 0x0f, 0xf2, 0x68, 0xf2, 0xa5, 0xf1, 0xe6, 0xee, 0x93, 0xeb, 0xdb, 0xea, 0x5a, 0xe9, 0x73, 0xec, + 0x9c, 0xf0, 0x69, 0xee, 0x5d, 0xf0, 0x91, 0xf7, 0x11, 0xfc, 0xb0, 0xfc, 0x85, 0xff, 0x9e, 0x02, + 0x95, 0x04, 0x98, 0x07, 0x17, 0x06, 0x7a, 0x0a, 0x2b, 0x10, 0xeb, 0x11, 0x9c, 0x13, 0xac, 0x14, + 0xe0, 0x19, 0x64, 0x1a, 0x88, 0x16, 0xa8, 0x18, 0xf3, 0x17, 0xbc, 0x16, 0x5f, 0x16, 0x91, 0x12, + 0x27, 0x0f, 0xd5, 0x0b, 0xa2, 0x0c, 0xd1, 0x0a, 0x6d, 0x07, 0x8f, 0x04, 0xc4, 0x00, 0x50, 0xfd, + 0xaa, 0xfd, 0x4d, 0xfc, 0x86, 0xfa, 0x78, 0xfa, 0x85, 0xf5, 0x26, 0xf3, 0xe6, 0xef, 0xec, 0xee, + 0x99, 0xec, 0xc2, 0xe9, 0x09, 0xe9, 0x38, 0xe8, 0xf3, 0xe8, 0x92, 0xe9, 0xa3, 0xeb, 0xf6, 0xef, + 0x2b, 0xf3, 0xfb, 0xf3, 0x38, 0xf3, 0x47, 0xf2, 0x52, 0xf4, 0x75, 0xf5, 0xcb, 0xf3, 0x9f, 0xf2, + 0x62, 0xf2, 0x7a, 0xf5, 0x05, 0xf7, 0x4d, 0xf6, 0x07, 0xf7, 0x25, 0xf8, 0x67, 0xfb, 0xaf, 0xf9, + 0x18, 0xfb, 0x7a, 0x01, 0xa8, 0x05, 0x7e, 0x09, 0x2b, 0x09, 0x69, 0x0b, 0x6a, 0x0c, 0x19, 0x0d, + 0x15, 0x0e, 0xb5, 0x0b, 0x57, 0x0b, 0xf9, 0x0c, 0xa8, 0x0d, 0x40, 0x0e, 0x22, 0x0e, 0xfd, 0x0d, + 0xf6, 0x10, 0xd1, 0x10, 0x74, 0x0c, 0xc9, 0x0e, 0x5e, 0x13, 0x04, 0x18, 0xb2, 0x17, 0x5f, 0x17, + 0x7e, 0x17, 0x93, 0x15, 0x05, 0x14, 0x13, 0x0f, 0x52, 0x0c, 0x20, 0x0a, 0x08, 0x02, 0x82, 0xf7, + 0x7d, 0xf0, 0xcf, 0xee, 0x9b, 0xf1, 0x5e, 0xf0, 0x02, 0xf1, 0x47, 0xf3, 0x64, 0xf4, 0xc9, 0xf5, + 0x37, 0xf5, 0x42, 0xf3, 0x25, 0xf1, 0x68, 0xf1, 0x0e, 0xef, 0xc2, 0xea, 0x6c, 0xea, 0x28, 0xea, + 0x27, 0xea, 0x2f, 0xec, 0x78, 0xed, 0x25, 0xf3, 0x60, 0xf8, 0xcb, 0xfa, 0xbd, 0xff, 0x31, 0x05, + 0xe5, 0x0c, 0x76, 0x0f, 0xed, 0x10, 0x02, 0x15, 0x54, 0x15, 0x6b, 0x11, 0xf1, 0x0d, 0x34, 0x0a, + 0x9c, 0x06, 0x8b, 0x06, 0xe3, 0x04, 0x50, 0x01, 0x9b, 0xfd, 0xb5, 0xfd, 0x8f, 0xfe, 0x0f, 0xfb, + 0xe0, 0xf8, 0xff, 0xf4, 0x57, 0xf6, 0x18, 0xf5, 0x7b, 0xf0, 0x3d, 0xef, 0x19, 0xee, 0xf6, 0xf0, + 0xf6, 0xef, 0x6e, 0xef, 0xbf, 0xf3, 0x06, 0xf6, 0x03, 0xf9, 0x88, 0xfa, 0x22, 0xfd, 0xef, 0x04, + 0xa8, 0x09, 0xe0, 0x0b, 0x85, 0x0e, 0xb6, 0x14, 0xc8, 0x18, 0x0c, 0x1c, 0x6c, 0x1a, 0x39, 0x17, + 0x8c, 0x14, 0xad, 0x15, 0x13, 0x17, 0x2c, 0x14, 0xc5, 0x11, 0x08, 0x0e, 0xb8, 0x0d, 0x30, 0x07, + 0x43, 0x00, 0xcd, 0xfd, 0x47, 0xfc, 0x30, 0xf9, 0xdf, 0xf3, 0x45, 0xf3, 0x40, 0xf2, 0x34, 0xf3, + 0x2f, 0xf3, 0x39, 0xf2, 0xb6, 0xf3, 0x2e, 0xf5, 0x3c, 0xf4, 0xb0, 0xf5, 0xdc, 0xf6, 0xab, 0xf6, + 0xef, 0xf9, 0xd6, 0xf9, 0x28, 0xfd, 0x14, 0x03, 0xf4, 0x06, 0xfb, 0x0a, 0x14, 0x0b, 0x24, 0x0d, + 0x7b, 0x0f, 0x28, 0x10, 0x72, 0x12, 0x8f, 0x14, 0x85, 0x15, 0xa0, 0x14, 0x7f, 0x0f, 0x88, 0x0a, + 0x3f, 0x07, 0xd7, 0x04, 0x2e, 0x02, 0x11, 0xfa, 0x25, 0xf4, 0x60, 0xf2, 0x55, 0xf1, 0xed, 0xed, + 0x14, 0xed, 0x2d, 0xec, 0xe0, 0xec, 0xc7, 0xea, 0xf3, 0xe6, 0x40, 0xe4, 0x1f, 0xe8, 0x37, 0xed, + 0xa4, 0xee, 0x3b, 0xee, 0xc6, 0xed, 0x27, 0xf4, 0x1b, 0xf8, 0x3d, 0xfa, 0x56, 0xfc, 0x6d, 0xfe, + 0x47, 0x00, 0x5b, 0xfe, 0x56, 0xff, 0xb1, 0x07, 0xfb, 0x0e, 0xac, 0x12, 0x2d, 0x18, 0xf3, 0x1b, + 0xf9, 0x20, 0x34, 0x23, 0x3f, 0x22, 0x39, 0x20, 0x23, 0x1a, 0xc6, 0x16, 0x0b, 0x13, 0xcd, 0x0b, + 0x9e, 0x05, 0x3b, 0x01, 0x78, 0xfe, 0x4f, 0xfc, 0x95, 0xf8, 0xc0, 0xf7, 0xba, 0xf8, 0x0c, 0xfc, + 0xfb, 0xfa, 0x59, 0xf8, 0xe0, 0xf9, 0x03, 0xf9, 0xea, 0xf8, 0x6f, 0xf5, 0x90, 0xf1, 0x1b, 0xf0, + 0x14, 0xee, 0x50, 0xea, 0x41, 0xea, 0x02, 0xef, 0x60, 0xf2, 0xfa, 0xf5, 0x2d, 0xf8, 0xf9, 0xfe, + 0x4d, 0x02, 0x72, 0x05, 0xa4, 0x03, 0x07, 0x04, 0xeb, 0x04, 0xe8, 0x02, 0xd3, 0x02, 0x33, 0xfd, + 0x2d, 0xfb, 0x79, 0xfb, 0xec, 0xfb, 0xca, 0xf9, 0x76, 0xf8, 0xa3, 0xf9, 0xfb, 0xfa, 0xf7, 0xfb, + 0x30, 0xfe, 0xe5, 0x00, 0xe1, 0x02, 0x83, 0x06, 0x50, 0x07, 0xe1, 0x07, 0xed, 0x09, 0x3b, 0x0a, + 0x18, 0x0a, 0x0e, 0x05, 0xce, 0x03, 0x0c, 0x07, 0xb1, 0x08, 0xb6, 0x09, 0x9f, 0x07, 0xf3, 0x09, + 0xc9, 0x0d, 0x88, 0x09, 0xd9, 0x06, 0x94, 0x06, 0x02, 0x09, 0xdc, 0x07, 0x5e, 0x03, 0xda, 0x00, + 0x3b, 0x00, 0x1e, 0x00, 0x3e, 0xfc, 0xbf, 0xf6, 0xaf, 0xf2, 0x65, 0xf3, 0xc9, 0xf1, 0xf8, 0xeb, + 0x30, 0xe8, 0x81, 0xe5, 0x6a, 0xe4, 0x12, 0xe6, 0x06, 0xe9, 0x21, 0xea, 0x34, 0xef, 0xb8, 0xf1, + 0x10, 0xf1, 0x52, 0xee, 0xe9, 0xed, 0xb4, 0xf1, 0x10, 0xf6, 0x15, 0xf8, 0xf6, 0xf8, 0x2a, 0xfc, + 0x0f, 0xfe, 0x61, 0xfe, 0xcc, 0xfc, 0x42, 0x02, 0xbb, 0x05, 0xc1, 0x07, 0x83, 0x0a, 0x0d, 0x0e, + 0xf5, 0x12, 0xbe, 0x15, 0xd6, 0x18, 0x78, 0x1d, 0xd5, 0x1d, 0xc9, 0x1d, 0x5b, 0x1d, 0x33, 0x1b, + 0xac, 0x1d, 0x05, 0x1f, 0xc9, 0x1b, 0x24, 0x17, 0x9c, 0x14, 0xd0, 0x14, 0x03, 0x13, 0xd0, 0x11, + 0xa7, 0x0a, 0x46, 0x05, 0x4b, 0x02, 0x88, 0xfe, 0xec, 0xfc, 0x2e, 0xfc, 0x02, 0xfc, 0xc7, 0xfb, + 0xd6, 0xfb, 0x2f, 0xf9, 0x83, 0xfa, 0x24, 0xfc, 0xf2, 0xfc, 0x07, 0xf9, 0x40, 0xf3, 0x40, 0xf3, + 0x60, 0xf3, 0x97, 0xf3, 0xc2, 0xf1, 0x28, 0xf3, 0xc1, 0xf6, 0x0d, 0xf9, 0x2e, 0xfb, 0x84, 0xfc, + 0x8f, 0x00, 0x41, 0x06, 0xd2, 0x06, 0x46, 0x04, 0xcd, 0x03, 0xe4, 0x05, 0x35, 0x04, 0x4c, 0xfd, + 0xda, 0xf7, 0xac, 0xf2, 0x85, 0xef, 0x7e, 0xed, 0x6c, 0xec, 0x67, 0xee, 0x15, 0xf3, 0x19, 0xf5, + 0x33, 0xf9, 0xdc, 0xf9, 0x62, 0xfb, 0xe1, 0xfb, 0x51, 0xfc, 0xcb, 0xfd, 0xa4, 0xfa, 0xf4, 0xfa, + 0xde, 0xfb, 0xc4, 0xfa, 0x26, 0xfc, 0x8d, 0x00, 0x1c, 0x05, 0x69, 0x07, 0x20, 0x08, 0xbe, 0x0b, + 0x18, 0x12, 0xf7, 0x15, 0x5f, 0x19, 0x9c, 0x1a, 0xab, 0x1c, 0xdc, 0x21, 0x4a, 0x1f, 0x1d, 0x1a, + 0x8a, 0x17, 0x99, 0x15, 0x4c, 0x0f, 0xdd, 0x08, 0x4a, 0x02, 0xe0, 0xfe, 0x6c, 0xff, 0x52, 0xfb, + 0x6d, 0xf8, 0x5f, 0xf8, 0x42, 0xf7, 0x97, 0xf4, 0x54, 0xf1, 0xfb, 0xec, 0xae, 0xea, 0xee, 0xe7, + 0xec, 0xe5, 0xb6, 0xe3, 0xe1, 0xe1, 0x8d, 0xe4, 0x56, 0xe4, 0x4c, 0xe3, 0xc2, 0xe3, 0xaf, 0xe7, + 0x3b, 0xec, 0xdb, 0xee, 0x85, 0xf0, 0x92, 0xf5, 0xeb, 0xf9, 0x04, 0x02, 0x84, 0x08, 0xa1, 0x0b, + 0x10, 0x13, 0xf2, 0x18, 0xa5, 0x18, 0xc2, 0x15, 0xbc, 0x13, 0x3c, 0x15, 0xde, 0x16, 0x80, 0x14, + 0x18, 0x0f, 0xac, 0x0b, 0xe0, 0x0a, 0x25, 0x06, 0x2c, 0x00, 0x86, 0xfd, 0x09, 0xfd, 0xb4, 0xfb, + 0xa9, 0xf9, 0xe5, 0xf6, 0xa6, 0xf4, 0x99, 0xf4, 0x58, 0xf3, 0x8c, 0xee, 0x62, 0xeb, 0x1f, 0xeb, + 0xa5, 0xeb, 0x45, 0xec, 0x19, 0xec, 0x50, 0xec, 0xc3, 0xee, 0xb3, 0xf1, 0x8e, 0xf7, 0xa6, 0xfb, + 0x02, 0x01, 0x53, 0x06, 0xf8, 0x05, 0x2c, 0x03, 0x0e, 0x03, 0xb1, 0x06, 0xd0, 0x08, 0x1d, 0x08, + 0x4d, 0x08, 0x84, 0x0a, 0xba, 0x09, 0xa0, 0x09, 0x15, 0x07, 0x3a, 0x06, 0xc4, 0x06, 0x6c, 0xff, + 0x72, 0xfc, 0xea, 0xf9, 0xe2, 0xfa, 0x59, 0xfb, 0xd9, 0xf9, 0x00, 0xf9, 0x88, 0xf8, 0x35, 0xfb, + 0x33, 0xfe, 0x18, 0x00, 0xa5, 0x02, 0xf2, 0x05, 0x6b, 0x08, 0xf7, 0x08, 0x5f, 0x0a, 0xb5, 0x0d, + 0x8c, 0x0f, 0xaa, 0x0d, 0x95, 0x0a, 0x26, 0x09, 0x63, 0x09, 0xfa, 0x0c, 0x2b, 0x0e, 0x4d, 0x0e, + 0xc7, 0x13, 0x5e, 0x19, 0x0b, 0x18, 0x26, 0x15, 0xc2, 0x10, 0x2e, 0x0e, 0x32, 0x0d, 0x09, 0x07, + 0x31, 0xfe, 0x76, 0xf9, 0xce, 0xf4, 0xda, 0xf1, 0x2b, 0xef, 0x54, 0xed, 0xa8, 0xf0, 0xc0, 0xf3, + 0xf1, 0xf4, 0x48, 0xf4, 0x13, 0xf3, 0x6d, 0xf6, 0xb8, 0xf7, 0xc3, 0xf6, 0x11, 0xfb, 0x28, 0xfd, + 0x68, 0xfe, 0xe5, 0xfd, 0x40, 0xfd, 0x77, 0xfe, 0x4e, 0xfe, 0x2b, 0xff, 0x18, 0x02, 0x84, 0x06, + 0xf0, 0x0a, 0x30, 0x10, 0x58, 0x12, 0xb4, 0x14, 0xd1, 0x16, 0xbc, 0x18, 0xb8, 0x19, 0xba, 0x17, + 0x1d, 0x12, 0xd0, 0x0e, 0x63, 0x0c, 0xd9, 0x05, 0x9b, 0x00, 0xb6, 0xfc, 0xc3, 0xfb, 0x60, 0xf7, + 0x38, 0xf4, 0xa4, 0xf1, 0x37, 0xf1, 0x45, 0xf2, 0x88, 0xf0, 0x98, 0xed, 0x13, 0xf0, 0x2a, 0xf4, + 0xf2, 0xf1, 0x29, 0xf2, 0x44, 0xf3, 0xfd, 0xf4, 0xff, 0xf5, 0xe2, 0xf1, 0x77, 0xf1, 0x4a, 0xf4, + 0xfc, 0xf7, 0x96, 0xfb, 0x2f, 0xfd, 0x3b, 0xfe, 0xed, 0x02, 0x22, 0x06, 0x9a, 0x07, 0x44, 0x09, + 0x15, 0x0b, 0x3f, 0x0e, 0x7f, 0x0e, 0xd1, 0x0d, 0x98, 0x0c, 0x36, 0x0d, 0x93, 0x0c, 0xe4, 0x05, + 0xf2, 0xff, 0xb1, 0xfd, 0x2c, 0xfd, 0x87, 0xfc, 0x6a, 0xf9, 0xca, 0xf6, 0x84, 0xf8, 0x3a, 0xfd, + 0xdc, 0xff, 0xbd, 0xff, 0x20, 0x01, 0x19, 0x01, 0x6a, 0xff, 0x19, 0xfb, 0x62, 0xf8, 0x5f, 0xfb, + 0xaa, 0xfd, 0xc2, 0xfc, 0x22, 0xfc, 0x32, 0xfe, 0xf3, 0x00, 0x9e, 0x04, 0x38, 0x06, 0x7e, 0x07, + 0xb6, 0x07, 0x23, 0x08, 0x93, 0x05, 0x25, 0x05, 0xb7, 0x07, 0x22, 0x09, 0x22, 0x08, 0x33, 0x03, + 0xbf, 0xff, 0xd9, 0xff, 0x11, 0x00, 0xf6, 0xfc, 0x69, 0xf9, 0xb5, 0xf5, 0x93, 0xf3, 0x11, 0xf4, + 0xc6, 0xf1, 0x84, 0xef, 0xe2, 0xec, 0xda, 0xec, 0xbc, 0xe9, 0xbe, 0xe4, 0xb0, 0xe3, 0x7d, 0xe3, + 0x3d, 0xe4, 0x58, 0xe5, 0x71, 0xe8, 0x64, 0xed, 0xf0, 0xf0, 0x06, 0xf0, 0x21, 0xf1, 0x32, 0xf2, + 0x5e, 0xf5, 0xcc, 0xf6, 0xfb, 0xf6, 0x6f, 0xf8, 0x57, 0xfd, 0x17, 0x03, 0xb3, 0x05, 0xaa, 0x0b, + 0xd2, 0x11, 0xa7, 0x1b, 0xf2, 0x21, 0x85, 0x21, 0x74, 0x22, 0xe4, 0x25, 0x6a, 0x28, 0xcb, 0x26, + 0x4e, 0x25, 0xaf, 0x21, 0x2d, 0x1f, 0x78, 0x1d, 0xf7, 0x17, 0xd3, 0x10, 0x54, 0x0c, 0xca, 0x0a, + 0x3d, 0x0a, 0xd5, 0x08, 0x16, 0x09, 0xb1, 0x08, 0x8e, 0x06, 0x3a, 0x00, 0xbf, 0xfa, 0xf4, 0xfa, + 0x0c, 0xfa, 0xfd, 0xf6, 0x1a, 0xf1, 0x84, 0xeb, 0xfc, 0xea, 0xe3, 0xea, 0xbd, 0xe9, 0x28, 0xeb, + 0x59, 0xef, 0xde, 0xf3, 0xc6, 0xf5, 0xd1, 0xf7, 0x09, 0xfb, 0xe4, 0xff, 0xcb, 0x01, 0xcb, 0x01, + 0x89, 0x04, 0xde, 0x05, 0x7a, 0x06, 0xf3, 0x06, 0xc9, 0x04, 0xf0, 0x02, 0xa0, 0xff, 0xe3, 0xfd, + 0x6a, 0xfc, 0x5c, 0xfc, 0x6f, 0xfe, 0x20, 0x00, 0x11, 0x01, 0xeb, 0xff, 0xd3, 0xff, 0xa4, 0x00, + 0x46, 0x02, 0xd3, 0xff, 0x0b, 0xff, 0x7c, 0x02, 0xe7, 0x02, 0x7d, 0x03, 0xfe, 0x02, 0x6d, 0x02, + 0x26, 0x03, 0xc9, 0x02, 0x36, 0x00, 0x27, 0x01, 0x0f, 0x04, 0xa4, 0x06, 0x6b, 0x05, 0x01, 0x06, + 0xfb, 0x0a, 0x44, 0x12, 0x8a, 0x15, 0x8e, 0x13, 0x55, 0x12, 0x91, 0x0f, 0x5e, 0x0c, 0x26, 0x06, + 0xd5, 0x00, 0x92, 0xfc, 0x25, 0xfa, 0x8c, 0xf8, 0xe5, 0xf2, 0x10, 0xf0, 0xa7, 0xf2, 0x10, 0xf5, + 0x17, 0xf6, 0x22, 0xf4, 0x4a, 0xf0, 0xd6, 0xee, 0xae, 0xec, 0xac, 0xe9, 0x18, 0xe9, 0x3e, 0xe8, + 0x22, 0xe9, 0xc7, 0xe9, 0x1c, 0xe9, 0xed, 0xea, 0x37, 0xef, 0x32, 0xf2, 0xe2, 0xf4, 0x31, 0xf8, + 0x3a, 0xfe, 0x4d, 0x06, 0x93, 0x09, 0x60, 0x09, 0x8f, 0x0b, 0x1c, 0x10, 0x15, 0x13, 0xed, 0x10, + 0x53, 0x11, 0xe4, 0x13, 0x82, 0x15, 0x52, 0x16, 0x39, 0x14, 0xc5, 0x12, 0xd2, 0x11, 0x83, 0x0f, + 0x6d, 0x0a, 0xf4, 0x05, 0x4e, 0x02, 0xfb, 0xfd, 0x99, 0xfa, 0xbb, 0xf6, 0xa8, 0xf5, 0xf5, 0xf4, + 0xfd, 0xf3, 0x18, 0xf3, 0xf8, 0xf3, 0xfa, 0xf5, 0xf6, 0xf7, 0xb5, 0xf8, 0x1b, 0xf7, 0x28, 0xf7, + 0x53, 0xf9, 0x6b, 0xfc, 0xb1, 0xfb, 0x8f, 0xfb, 0x36, 0x00, 0x8c, 0x03, 0xfd, 0x03, 0xd1, 0x00, + 0x77, 0x01, 0xc8, 0x06, 0x19, 0x0a, 0x3a, 0x0c, 0x71, 0x0d, 0x18, 0x0f, 0x16, 0x0e, 0x2a, 0x0a, + 0x94, 0x04, 0x67, 0x01, 0x00, 0xff, 0x30, 0xfa, 0x21, 0xf3, 0xfb, 0xec, 0xd1, 0xe9, 0x22, 0xea, + 0x1b, 0xec, 0x0c, 0xeb, 0x5d, 0xeb, 0x62, 0xef, 0xf5, 0xef, 0xcb, 0xef, 0x0c, 0xf3, 0x32, 0xf4, + 0x7e, 0xf8, 0xa2, 0xfc, 0x02, 0xfd, 0xc3, 0xfe, 0x58, 0x02, 0x5c, 0x06, 0x43, 0x07, 0xf5, 0x06, + 0x99, 0x07, 0x89, 0x0b, 0xe6, 0x0d, 0xd4, 0x0f, 0xf7, 0x13, 0xc3, 0x18, 0xea, 0x1b, 0xbb, 0x1b, + 0x9e, 0x18, 0x8a, 0x18, 0xcd, 0x17, 0x09, 0x14, 0xa4, 0x0e, 0xf4, 0x08, 0xb4, 0x07, 0xa9, 0x03, + 0x7f, 0xfe, 0x22, 0xf9, 0x62, 0xf5, 0x83, 0xf4, 0xe9, 0xf3, 0x8f, 0xf1, 0x6c, 0xf2, 0x6a, 0xf1, + 0x2c, 0xef, 0x94, 0xef, 0x96, 0xf1, 0xc0, 0xf4, 0x9f, 0xf8, 0x37, 0xfa, 0x3e, 0xf9, 0x45, 0xf8, + 0x4f, 0xf5, 0xae, 0xf6, 0x4b, 0xf6, 0x2a, 0xf7, 0xf0, 0xfb, 0x98, 0xff, 0x0c, 0x04, 0x42, 0x05, + 0xf6, 0x0b, 0x15, 0x15, 0x8e, 0x19, 0x5c, 0x1a, 0xce, 0x18, 0xb1, 0x18, 0xd1, 0x18, 0x53, 0x17, + 0x7b, 0x11, 0x83, 0x0d, 0xc3, 0x0b, 0xe4, 0x07, 0xe3, 0x04, 0x3f, 0x00, 0x85, 0xfd, 0x3b, 0xfd, + 0x26, 0xfa, 0x41, 0xf9, 0x2f, 0xfc, 0x79, 0xfd, 0x9b, 0xfb, 0x12, 0xf6, 0x47, 0xf0, 0x59, 0xee, + 0x1e, 0xed, 0xfc, 0xeb, 0x12, 0xe8, 0x1c, 0xe7, 0x0b, 0xe9, 0x77, 0xea, 0x15, 0xeb, 0xdb, 0xec, + 0x5c, 0xf0, 0x02, 0xf5, 0x1f, 0xf7, 0x3e, 0xf7, 0xbd, 0xf9, 0x4b, 0xfc, 0x88, 0xfe, 0xe7, 0x00, + 0x76, 0x00, 0x23, 0x03, 0xa1, 0x07, 0xd1, 0x09, 0x34, 0x0a, 0x2c, 0x08, 0x92, 0x08, 0x2c, 0x09, + 0x36, 0x08, 0xd9, 0x04, 0x9e, 0x04, 0x3c, 0x08, 0xcc, 0x06, 0x4b, 0x07, 0xcc, 0x08, 0x84, 0x09, + 0xe9, 0x06, 0x81, 0x02, 0x39, 0x01, 0xde, 0x02, 0x1b, 0x08, 0x6c, 0x0a, 0x9b, 0x0a, 0x96, 0x0a, + 0xaa, 0x09, 0xe2, 0x07, 0x8a, 0x06, 0x3d, 0x05, 0x91, 0x05, 0x5a, 0x03, 0xb2, 0xff, 0x82, 0xfc, + 0xf0, 0xfb, 0x02, 0x01, 0xa7, 0x04, 0x42, 0x05, 0x04, 0x04, 0xb2, 0x04, 0x9a, 0x06, 0x2a, 0x07, + 0x8a, 0x02, 0xc3, 0xfe, 0x1f, 0xfd, 0x5d, 0xfb, 0xef, 0xf7, 0xbe, 0xf2, 0xf3, 0xf3, 0x18, 0xf5, + 0x46, 0xf4, 0x0a, 0xf2, 0xe9, 0xf1, 0x34, 0xf2, 0x01, 0xf4, 0x65, 0xf3, 0x08, 0xf2, 0xad, 0xf4, + 0x72, 0xf6, 0xe3, 0xf7, 0xd8, 0xf6, 0x68, 0xf6, 0xb4, 0xf6, 0x1f, 0xf7, 0x4f, 0xf6, 0xbf, 0xf5, + 0xb8, 0xf9, 0xf2, 0xfe, 0x1f, 0x01, 0xa1, 0x01, 0xaf, 0x03, 0x2f, 0x08, 0xca, 0x0c, 0x6f, 0x11, + 0xc8, 0x11, 0xa6, 0x13, 0x18, 0x17, 0x1c, 0x19, 0xc8, 0x1a, 0xf1, 0x19, 0x11, 0x19, 0x6b, 0x19, + 0x65, 0x14, 0x7e, 0x0c, 0x41, 0x08, 0x52, 0x03, 0x9f, 0x00, 0xaa, 0xfe, 0xce, 0xfc, 0x2d, 0xfe, + 0x02, 0xfe, 0x52, 0xfc, 0xa6, 0xfa, 0x84, 0xfa, 0xc4, 0xfc, 0xee, 0xfa, 0x19, 0xf7, 0x56, 0xf3, + 0x58, 0xf1, 0xa0, 0xef, 0x39, 0xec, 0x4f, 0xeb, 0x14, 0xec, 0xdb, 0xef, 0x77, 0xf0, 0xd7, 0xf3, + 0xbc, 0xf6, 0x32, 0xfb, 0x9d, 0x00, 0x23, 0x05, 0x13, 0x0a, 0xf9, 0x0b, 0x73, 0x0d, 0xe7, 0x0b, + 0xea, 0x09, 0xc1, 0x04, 0x9c, 0x02, 0x68, 0x01, 0x9a, 0xfd, 0x08, 0xfa, 0x4d, 0xf9, 0x42, 0xfb, + 0x71, 0xfd, 0xc2, 0xfd, 0x42, 0xff, 0x41, 0x01, 0x17, 0x01, 0x8e, 0x00, 0x41, 0xfc, 0x66, 0xfb, + 0xb2, 0xfc, 0x9e, 0xfc, 0x3c, 0xfd, 0x40, 0xfe, 0x87, 0x03, 0x97, 0x06, 0x6a, 0x06, 0x2d, 0x07, + 0x28, 0x0a, 0x5c, 0x0d, 0x32, 0x0e, 0xd2, 0x0d, 0xc2, 0x0f, 0x72, 0x13, 0x1f, 0x18, 0x77, 0x19, + 0x21, 0x18, 0xd7, 0x16, 0x62, 0x13, 0x2c, 0x11, 0x46, 0x0c, 0x88, 0x08, 0x23, 0x08, 0x93, 0x06, + 0x0c, 0x02, 0xf1, 0xfa, 0x33, 0xf5, 0xa4, 0xf0, 0x25, 0xf0, 0x4c, 0xed, 0xdb, 0xe8, 0x32, 0xe5, + 0x81, 0xe0, 0x38, 0xdd, 0x47, 0xda, 0x29, 0xdb, 0x92, 0xdc, 0xfc, 0xde, 0x77, 0xdf, 0x8e, 0xde, + 0x67, 0xe4, 0x2e, 0xe7, 0x4d, 0xe6, 0xdf, 0xe7, 0x6c, 0xed, 0x1f, 0xf4, 0xb6, 0xf6, 0x96, 0xfb, + 0x8c, 0x00, 0x06, 0x07, 0x24, 0x0d, 0xdc, 0x0f, 0x3d, 0x13, 0x0d, 0x18, 0xa9, 0x1c, 0x67, 0x20, + 0x3c, 0x22, 0x51, 0x22, 0xf0, 0x21, 0x74, 0x20, 0x4b, 0x1c, 0x68, 0x17, 0x7b, 0x12, 0xdb, 0x0e, + 0xef, 0x09, 0x45, 0x06, 0x24, 0x05, 0x00, 0x05, 0xa9, 0x05, 0xbc, 0x00, 0xd1, 0xfa, 0xd8, 0xf6, + 0xdf, 0xf7, 0x2b, 0xf7, 0x22, 0xf4, 0xa2, 0xf1, 0x07, 0xf3, 0xdb, 0xf5, 0xa3, 0xf4, 0xd8, 0xf5, + 0x13, 0xf8, 0x97, 0xfb, 0xab, 0xf9, 0x9f, 0xf8, 0xad, 0xf6, 0xbd, 0xf8, 0x35, 0xfe, 0x9e, 0xff, + 0x45, 0x03, 0xcf, 0x05, 0x2d, 0x0a, 0x27, 0x10, 0xea, 0x0f, 0x8f, 0x0f, 0xa3, 0x0f, 0xf7, 0x0c, + 0x73, 0x09, 0xfe, 0x01, 0x4c, 0xfe, 0xef, 0xfb, 0x66, 0xf9, 0xa3, 0xf8, 0x5b, 0xf8, 0x74, 0xf9, + 0xad, 0xfc, 0x7d, 0xfc, 0x21, 0xfc, 0x07, 0xfc, 0x21, 0x00, 0xf0, 0x06, 0x17, 0x07, 0x19, 0x07, + 0xd3, 0x06, 0x3e, 0x05, 0xe5, 0x01, 0xb0, 0xfd, 0x36, 0xfb, 0xab, 0xfa, 0xf5, 0xf9, 0x72, 0xf7, + 0xb6, 0xf7, 0x86, 0xfe, 0xae, 0x04, 0xce, 0x07, 0x58, 0x09, 0x25, 0x09, 0x42, 0x0c, 0x04, 0x0c, + 0xee, 0x06, 0xfe, 0x02, 0x2d, 0xff, 0x7f, 0xfb, 0xc8, 0xf8, 0x09, 0xf5, 0x6d, 0xf3, 0x10, 0xf2, + 0x3c, 0xf2, 0x39, 0xf4, 0xdf, 0xf4, 0x98, 0xf6, 0xca, 0xf7, 0x39, 0xf9, 0x08, 0xfa, 0x0b, 0xf9, + 0x31, 0xfd, 0x46, 0x00, 0xd8, 0xfd, 0x9d, 0xfb, 0xe8, 0xfa, 0x86, 0xfa, 0x44, 0xf8, 0x50, 0xf8, + 0xb7, 0xfb, 0xfa, 0xff, 0xcf, 0x01, 0xa6, 0x00, 0x49, 0xff, 0x8d, 0x04, 0x8f, 0x09, 0xee, 0x0b, + 0xd1, 0x0b, 0xbc, 0x09, 0x16, 0x0b, 0xdd, 0x0b, 0xab, 0x0d, 0xa6, 0x0d, 0x05, 0x0d, 0x87, 0x0e, + 0x93, 0x0b, 0x01, 0x0b, 0x21, 0x09, 0x96, 0x06, 0xfc, 0x03, 0x08, 0x01, 0x3c, 0x00, 0xa6, 0x00, + 0xac, 0x02, 0xcc, 0x02, 0x2b, 0x00, 0xbe, 0xfc, 0x62, 0xfd, 0xfa, 0xfc, 0xae, 0xfa, 0xd4, 0xfa, + 0x08, 0xfa, 0x2d, 0xfb, 0x0b, 0xfb, 0xad, 0xf8, 0x4f, 0xf8, 0xf5, 0xf7, 0x3c, 0xfa, 0x65, 0xf8, + 0xb3, 0xf7, 0xd9, 0xf6, 0x80, 0xf7, 0xa8, 0xfc, 0x2a, 0xfe, 0x44, 0x01, 0x33, 0x04, 0xce, 0x04, + 0xb7, 0x03, 0x53, 0x02, 0xee, 0x01, 0xc8, 0x01, 0xdc, 0xfd, 0x42, 0xfa, 0xf0, 0xf8, 0xf0, 0xf8, + 0xc4, 0xf9, 0x53, 0xfa, 0x85, 0xfc, 0x81, 0xfc, 0x8b, 0xfe, 0xa4, 0xfc, 0xab, 0xf8, 0xd0, 0xf7, + 0xab, 0xf9, 0x7d, 0xfb, 0x43, 0xfd, 0xab, 0xfe, 0xa7, 0x01, 0x53, 0x05, 0xcd, 0x06, 0x8d, 0x07, + 0xff, 0x05, 0x86, 0x06, 0x78, 0x04, 0x43, 0xff, 0x1b, 0xfd, 0x7c, 0xfd, 0xce, 0xff, 0xed, 0x02, + 0x48, 0x01, 0xf5, 0x03, 0xa9, 0x08, 0x20, 0x0a, 0xa4, 0x0a, 0x8b, 0x08, 0xf8, 0x09, 0x66, 0x0c, + 0xc8, 0x09, 0xf8, 0x04, 0xa3, 0xfe, 0xf0, 0xf9, 0x53, 0xf6, 0xc9, 0xf2, 0x6c, 0xf0, 0x8d, 0xee, + 0xcd, 0xef, 0x05, 0xf1, 0xc5, 0xf1, 0xcc, 0xf2, 0xed, 0xf6, 0x39, 0xf9, 0x1e, 0xf8, 0xfa, 0xf9, + 0xec, 0xfa, 0xfb, 0xf9, 0xad, 0xf7, 0x3f, 0xf4, 0x74, 0xf3, 0xf0, 0xf6, 0x6e, 0xf9, 0x2f, 0xfc, + 0xac, 0xfd, 0x69, 0x01, 0xb2, 0x09, 0x5d, 0x0f, 0xa7, 0x13, 0x56, 0x17, 0x20, 0x1a, 0xef, 0x20, + 0x9d, 0x23, 0xe5, 0x23, 0xed, 0x25, 0xce, 0x24, 0x2e, 0x22, 0x04, 0x1c, 0x40, 0x15, 0x97, 0x0f, + 0x1f, 0x0c, 0x8b, 0x08, 0x42, 0x07, 0xb6, 0x05, 0x1c, 0x07, 0x3b, 0x04, 0xc1, 0xfd, 0x5a, 0xfc, + 0x32, 0xf8, 0x03, 0xf4, 0x47, 0xee, 0x54, 0xe8, 0x6f, 0xe5, 0x73, 0xe4, 0xd9, 0xe2, 0x44, 0xe0, + 0xa0, 0xe0, 0x2c, 0xe0, 0x38, 0xe4, 0x45, 0xe7, 0xbd, 0xe7, 0x2d, 0xe9, 0x49, 0xed, 0x2d, 0xf2, + 0x18, 0xf6, 0xe1, 0xf9, 0x8f, 0x00, 0x6b, 0x07, 0xb6, 0x09, 0xc7, 0x0a, 0xaa, 0x0a, 0x24, 0x0b, + 0x59, 0x0b, 0x71, 0x09, 0xf6, 0x08, 0xd8, 0x08, 0x07, 0x08, 0x08, 0x07, 0x04, 0x05, 0xc3, 0x06, + 0x0b, 0x0a, 0x82, 0x08, 0x4b, 0x05, 0xa9, 0x01, 0x58, 0x02, 0x62, 0x04, 0x6f, 0x04, 0x6b, 0x05, + 0xb3, 0x04, 0xd8, 0x04, 0xd2, 0x04, 0xf9, 0x02, 0xcc, 0x03, 0xdc, 0x03, 0x60, 0x02, 0xf8, 0x01, + 0x24, 0x01, 0xfa, 0x03, 0x7b, 0x09, 0xcb, 0x0d, 0x1b, 0x0f, 0xb0, 0x0f, 0x1b, 0x0f, 0x51, 0x0f, + 0x33, 0x0e, 0x82, 0x0c, 0x5d, 0x0b, 0xda, 0x09, 0x87, 0x07, 0xb9, 0x05, 0xd7, 0x01, 0x3a, 0xff, + 0xfc, 0xfd, 0x82, 0xfb, 0x8a, 0xf7, 0x3f, 0xf4, 0xfc, 0xf2, 0x84, 0xf1, 0x05, 0xed, 0x3b, 0xea, + 0x6f, 0xeb, 0x3b, 0xe9, 0x87, 0xe8, 0x65, 0xe9, 0x0c, 0xeb, 0x24, 0xec, 0xd3, 0xe9, 0xbf, 0xea, + 0x5f, 0xef, 0xc2, 0xf1, 0xe1, 0xf4, 0x9e, 0xf3, 0x31, 0xf3, 0x43, 0xf5, 0x5f, 0xf5, 0x99, 0xf8, + 0x7a, 0xfa, 0xe2, 0xfb, 0x7d, 0x00, 0xff, 0x07, 0x57, 0x0d, 0xc2, 0x12, 0xcf, 0x15, 0xd2, 0x16, + 0x71, 0x19, 0x75, 0x17, 0x5c, 0x15, 0xe6, 0x0f, 0x6b, 0x0b, 0x6b, 0x05, 0x2b, 0xff, 0xf7, 0xfe, + 0x66, 0x02, 0x5d, 0x03, 0x59, 0x01, 0x6d, 0x01, 0xd4, 0x01, 0x55, 0x02, 0x3f, 0x01, 0x46, 0xff, + 0xb3, 0x01, 0x43, 0x01, 0xa4, 0xff, 0x9b, 0xff, 0xe4, 0xfd, 0xac, 0xfd, 0x9f, 0xfc, 0x2d, 0xf9, + 0x75, 0xf5, 0xcc, 0xf3, 0xf1, 0xf6, 0xf1, 0xfb, 0x78, 0xfd, 0x9c, 0x00, 0xaf, 0x03, 0x50, 0x06, + 0x67, 0x0a, 0x7c, 0x0a, 0x22, 0x09, 0xe6, 0x06, 0xe9, 0x01, 0xc4, 0xfe, 0xad, 0xfb, 0x4f, 0xf9, + 0xf6, 0xf8, 0x22, 0xf6, 0x47, 0xf3, 0xa6, 0xf4, 0x14, 0xf9, 0x8d, 0xfc, 0xa1, 0xfb, 0xa6, 0xfa, + 0x5d, 0xfb, 0xd9, 0xfc, 0x6f, 0xfd, 0x17, 0xff, 0x47, 0x03, 0xdf, 0x06, 0x80, 0x07, 0xa5, 0x06, + 0x21, 0x06, 0x10, 0x08, 0x2d, 0x09, 0xef, 0x08, 0xba, 0x07, 0xb9, 0x08, 0xe7, 0x0a, 0x60, 0x0c, + 0x35, 0x0e, 0x58, 0x0f, 0xf5, 0x0f, 0xd8, 0x0f, 0xf6, 0x0d, 0x9d, 0x0d, 0x9f, 0x0e, 0x19, 0x0c, + 0x0b, 0x0c, 0x04, 0x09, 0xea, 0x02, 0x8e, 0xfe, 0xa7, 0xfa, 0x88, 0xf7, 0x2b, 0xf2, 0xfb, 0xee, + 0xc6, 0xef, 0x2a, 0xf0, 0xdd, 0xef, 0x3a, 0xf1, 0xb7, 0xf3, 0xb7, 0xf4, 0xd4, 0xf3, 0x4a, 0xf1, + 0x1c, 0xf1, 0x12, 0xf0, 0xd0, 0xef, 0x54, 0xee, 0x3a, 0xee, 0x9c, 0xf1, 0xfe, 0xf3, 0x9d, 0xf6, + 0x33, 0xf9, 0x3c, 0xfc, 0x9b, 0x00, 0x2f, 0x04, 0x43, 0x06, 0x43, 0x07, 0x4e, 0x09, 0x16, 0x0c, + 0xfd, 0x0d, 0xfb, 0x10, 0x93, 0x12, 0x81, 0x13, 0x89, 0x15, 0xb9, 0x16, 0xfb, 0x14, 0xe4, 0x11, + 0xcc, 0x10, 0xca, 0x0d, 0x7e, 0x09, 0xa3, 0x08, 0xaf, 0x07, 0x2f, 0x07, 0xab, 0x05, 0xee, 0x00, + 0x14, 0xfd, 0x45, 0xf8, 0x66, 0xf3, 0xb6, 0xf1, 0x73, 0xf2, 0xed, 0xf3, 0xd9, 0xf5, 0x57, 0xf4, + 0x5e, 0xf3, 0xe8, 0xf4, 0x3b, 0xf5, 0x2b, 0xf6, 0xdd, 0xf2, 0x6c, 0xf1, 0x5b, 0xf1, 0xd9, 0xf0, + 0x42, 0xf2, 0x12, 0xf5, 0x85, 0xfa, 0x14, 0xff, 0x90, 0x03, 0x3f, 0x09, 0xda, 0x0c, 0xfd, 0x0e, + 0x34, 0x0f, 0xe2, 0x0f, 0x03, 0x0f, 0xe1, 0x0d, 0x3b, 0x0d, 0x80, 0x0a, 0x4e, 0x07, 0xbf, 0x04, + 0xbe, 0x02, 0xd2, 0xff, 0xc7, 0xfc, 0x3b, 0xfc, 0x77, 0xfe, 0x26, 0xff, 0xae, 0xfe, 0x0c, 0xfe, + 0x0e, 0xfe, 0xb6, 0x00, 0xa1, 0x00, 0xda, 0xfc, 0xcf, 0xfa, 0x42, 0xf8, 0x81, 0xf5, 0x50, 0xf3, + 0x6b, 0xef, 0x82, 0xef, 0x45, 0xf1, 0xe0, 0xf2, 0xd8, 0xf3, 0xa8, 0xf7, 0x69, 0xfd, 0x91, 0xff, + 0x07, 0x02, 0x57, 0x04, 0xa8, 0x05, 0x1d, 0x06, 0xf9, 0x07, 0x01, 0x09, 0x72, 0x07, 0xbf, 0x05, + 0x4d, 0x03, 0x4b, 0xfe, 0x87, 0xfa, 0x02, 0xf9, 0xf8, 0xf9, 0x0c, 0xfa, 0xba, 0xf9, 0xe8, 0xfa, + 0xcc, 0xfb, 0x38, 0xfc, 0xa3, 0xfc, 0x57, 0xfa, 0x4f, 0xf9, 0x51, 0xf9, 0x3d, 0xf6, 0x7c, 0xf5, + 0x69, 0xf5, 0x7c, 0xf6, 0x15, 0xf9, 0xf9, 0xf9, 0x72, 0xfa, 0x7d, 0xfb, 0x95, 0xfd, 0x1a, 0x00, + 0x1f, 0x01, 0x56, 0x02, 0x53, 0x07, 0xf7, 0x0b, 0xcb, 0x11, 0x40, 0x19, 0x47, 0x1d, 0xda, 0x20, + 0xea, 0x21, 0x1b, 0x20, 0xda, 0x1c, 0x75, 0x1b, 0x43, 0x18, 0x71, 0x12, 0x04, 0x0c, 0x39, 0x08, + 0xda, 0x07, 0x88, 0x06, 0x5a, 0x06, 0xbf, 0x06, 0x72, 0x04, 0x11, 0x02, 0xbe, 0xfc, 0x55, 0xf7, + 0xc7, 0xf4, 0xbf, 0xf1, 0x3b, 0xf0, 0x72, 0xed, 0x6b, 0xe9, 0x6d, 0xe8, 0x31, 0xea, 0x04, 0xeb, + 0xb9, 0xe8, 0x4d, 0xe8, 0xc2, 0xeb, 0x04, 0xef, 0x0f, 0xf1, 0xcd, 0xf3, 0xb6, 0xf6, 0x22, 0xfa, + 0x99, 0xfd, 0xcd, 0xfd, 0x29, 0xfe, 0xb0, 0xfd, 0xc3, 0xfd, 0xc5, 0xfe, 0x88, 0xff, 0xe3, 0x02, + 0x70, 0x04, 0xb3, 0x02, 0x94, 0x01, 0xee, 0x00, 0x8c, 0x01, 0x6e, 0x01, 0x60, 0x00, 0xc3, 0xfe, + 0x8e, 0xfe, 0xbd, 0xfd, 0x20, 0xfd, 0xef, 0xfd, 0x78, 0x00, 0x29, 0x04, 0xad, 0x07, 0x04, 0x0a, + 0xb9, 0x0b, 0x3b, 0x0d, 0xe3, 0x0f, 0x0e, 0x11, 0x6b, 0x0e, 0xe0, 0x0e, 0x97, 0x10, 0x7d, 0x11, + 0x0d, 0x12, 0xbf, 0x10, 0xbb, 0x0e, 0x0e, 0x0c, 0x8f, 0x0c, 0x2c, 0x10, 0xb4, 0x10, 0x1b, 0x12, + 0x1a, 0x13, 0xa4, 0x10, 0x4e, 0x0f, 0x00, 0x0e, 0xe2, 0x08, 0xe8, 0x01, 0x2d, 0xfa, 0x87, 0xf2, + 0x1a, 0xef, 0x97, 0xea, 0x3c, 0xe9, 0x7e, 0xe8, 0x4e, 0xe8, 0xea, 0xe9, 0x81, 0xe8, 0x02, 0xea, + 0xea, 0xec, 0x90, 0xed, 0x66, 0xed, 0xc8, 0xec, 0x4e, 0xec, 0x64, 0xee, 0xb5, 0xf2, 0xc8, 0xf5, + 0x07, 0xf8, 0xf3, 0xf8, 0xcc, 0xfa, 0xff, 0xfc, 0x49, 0xfe, 0x24, 0x03, 0xb8, 0x06, 0x2c, 0x09, + 0xc8, 0x0f, 0xde, 0x13, 0xf5, 0x17, 0x64, 0x1d, 0x87, 0x1e, 0xa2, 0x1d, 0x04, 0x1c, 0xfe, 0x19, + 0x5c, 0x19, 0xe7, 0x13, 0x40, 0x0d, 0x4d, 0x09, 0xc1, 0x05, 0xa1, 0x03, 0x54, 0x01, 0x4d, 0xfe, + 0xc9, 0xfd, 0x51, 0xfb, 0x75, 0xf5, 0x74, 0xf2, 0x63, 0xf0, 0x83, 0xf1, 0xd9, 0xf3, 0xf4, 0xf3, + 0x37, 0xf3, 0xc2, 0xf1, 0xb3, 0xf0, 0x7b, 0xef, 0x83, 0xec, 0x7e, 0xec, 0xf6, 0xec, 0x32, 0xed, + 0x50, 0xef, 0xa6, 0xf1, 0xd5, 0xf3, 0x37, 0xf8, 0x31, 0xfe, 0xd1, 0x02, 0xe3, 0x06, 0x1c, 0x09, + 0x6d, 0x09, 0x55, 0x07, 0x4b, 0x05, 0x52, 0x05, 0x00, 0x05, 0x14, 0x02, 0x88, 0xfe, 0xeb, 0xfc, + 0x19, 0xfe, 0x14, 0xfd, 0x81, 0xfa, 0xba, 0xfb, 0x4f, 0xfe, 0x7f, 0x00, 0x08, 0x01, 0xdb, 0x00, + 0x5f, 0x03, 0x73, 0x05, 0x22, 0x04, 0x9d, 0x01, 0x03, 0xfe, 0x30, 0xfd, 0x74, 0xff, 0xef, 0xff, + 0x09, 0x01, 0x22, 0x03, 0x82, 0x04, 0x50, 0x06, 0xd7, 0x08, 0x9b, 0x09, 0xae, 0x09, 0x79, 0x09, + 0x8b, 0x09, 0x60, 0x09, 0x56, 0x07, 0x36, 0x09, 0x50, 0x0a, 0xe5, 0x09, 0x76, 0x09, 0xf6, 0x08, + 0xe3, 0x09, 0xfe, 0x07, 0x5b, 0x05, 0x38, 0x02, 0x6e, 0xff, 0x29, 0xfd, 0x0e, 0xfa, 0x9c, 0xf9, + 0x48, 0xfb, 0xb2, 0xfb, 0x1a, 0xf9, 0x62, 0xf6, 0x0e, 0xf2, 0x9c, 0xef, 0x06, 0xf2, 0x17, 0xf1, + 0xc8, 0xf0, 0xb2, 0xf0, 0x72, 0xf0, 0xc6, 0xf1, 0x59, 0xf2, 0x3c, 0xf3, 0x7f, 0xf2, 0x2f, 0xf1, + 0x0d, 0xf1, 0x22, 0xf1, 0xff, 0xf0, 0x4f, 0xf4, 0x59, 0xf8, 0xf6, 0xfc, 0x99, 0x01, 0x83, 0x06, + 0xa3, 0x0c, 0x65, 0x0f, 0xe2, 0x10, 0xac, 0x12, 0xaa, 0x12, 0x71, 0x11, 0x79, 0x10, 0xa9, 0x0e, + 0x5b, 0x0e, 0x4a, 0x0e, 0xd1, 0x0a, 0x4c, 0x08, 0x2e, 0x08, 0xf2, 0x05, 0x06, 0x06, 0x6f, 0x03, + 0xd1, 0x02, 0x55, 0x05, 0xb4, 0x05, 0x12, 0x07, 0x2a, 0x06, 0x21, 0x03, 0xb9, 0xff, 0xd8, 0xfa, + 0x92, 0xf6, 0x2d, 0xf4, 0x74, 0xf1, 0x76, 0xf0, 0x99, 0xf2, 0x54, 0xf4, 0xd8, 0xf6, 0x10, 0xf9, + 0x43, 0xfb, 0x15, 0x00, 0xbf, 0x01, 0x2e, 0x03, 0x4a, 0x03, 0xe8, 0x02, 0xb7, 0x05, 0x77, 0x08, + 0xf0, 0x0b, 0xf8, 0x0c, 0xbd, 0x0b, 0xd3, 0x09, 0x0d, 0x08, 0xea, 0x04, 0x37, 0x01, 0x36, 0xff, + 0xd8, 0xff, 0x98, 0x01, 0x07, 0x02, 0x2a, 0x00, 0x5b, 0x02, 0xcf, 0x06, 0xeb, 0x08, 0x8d, 0x0b, + 0xe2, 0x0a, 0x94, 0x0a, 0xcf, 0x08, 0xe5, 0x03, 0x3b, 0x00, 0xac, 0xfc, 0x5a, 0xf9, 0xa4, 0xf6, + 0x01, 0xf7, 0x07, 0xf9, 0x6e, 0xf7, 0x18, 0xf6, 0x69, 0xf6, 0x8e, 0xf7, 0x79, 0xfa, 0xa1, 0xfd, + 0x62, 0xff, 0x7e, 0x01, 0x78, 0x04, 0x2b, 0x02, 0xa3, 0xff, 0x97, 0xfb, 0x82, 0xf7, 0x6b, 0xf6, + 0x96, 0xf5, 0x72, 0xf7, 0xe6, 0xf5, 0xdb, 0xf5, 0x32, 0xf7, 0x42, 0xf9, 0xb5, 0xfb, 0x79, 0xf9, + 0x90, 0xfa, 0x5b, 0xfb, 0x09, 0xfa, 0xfb, 0xf8, 0xff, 0xf7, 0xe5, 0xf9, 0x5a, 0xfb, 0x82, 0xf9, + 0x44, 0xfa, 0x21, 0xfd, 0xf8, 0xfd, 0x94, 0xff, 0xe0, 0xff, 0x01, 0x01, 0x66, 0x01, 0x45, 0x01, + 0x36, 0x03, 0x40, 0x05, 0xa5, 0x08, 0xd7, 0x0c, 0x8c, 0x0d, 0x3a, 0x0c, 0xa2, 0x0b, 0xa2, 0x0d, + 0xf2, 0x11, 0x30, 0x14, 0xc1, 0x14, 0x9f, 0x13, 0x26, 0x13, 0x80, 0x14, 0x40, 0x12, 0x07, 0x0e, + 0x3c, 0x0a, 0xb8, 0x05, 0x64, 0x03, 0x89, 0xfd, 0x0a, 0xf9, 0x42, 0xf8, 0xac, 0xf7, 0xf6, 0xf7, + 0xb9, 0xf5, 0x9c, 0xf6, 0x6b, 0xf7, 0x42, 0xf5, 0xab, 0xf3, 0xf8, 0xf0, 0xa1, 0xee, 0x73, 0xec, + 0x28, 0xec, 0xd6, 0xec, 0x7f, 0xed, 0x03, 0xee, 0x6f, 0xed, 0x7b, 0xee, 0x26, 0xf0, 0xaa, 0xf3, + 0x8e, 0xf6, 0xe9, 0xf7, 0xfa, 0xfa, 0xd2, 0xfe, 0x4a, 0x02, 0x06, 0x05, 0x43, 0x07, 0xee, 0x08, + 0x71, 0x0a, 0x07, 0x0a, 0x79, 0x09, 0xdc, 0x08, 0x33, 0x07, 0xa3, 0x06, 0xde, 0x07, 0xc2, 0x07, + 0xfc, 0x08, 0x2c, 0x0a, 0xdd, 0x0b, 0x17, 0x0c, 0x51, 0x0a, 0xe6, 0x0a, 0xc6, 0x0a, 0xec, 0x0a, + 0xe5, 0x09, 0xde, 0x09, 0x62, 0x08, 0x5e, 0x07, 0x55, 0x05, 0xac, 0x01, 0xfe, 0xfd, 0xe8, 0xfa, + 0xa1, 0xf8, 0x39, 0xf6, 0x2a, 0xf7, 0xc9, 0xf8, 0x53, 0xf9, 0x2f, 0xfa, 0x7e, 0xfb, 0x42, 0xfd, + 0x6a, 0xff, 0xed, 0x00, 0x5e, 0x00, 0xfe, 0xff, 0x8c, 0xfe, 0x2e, 0xfe, 0xdb, 0xfe, 0x7c, 0xfd, + 0xb7, 0xfb, 0x79, 0xfa, 0x8b, 0xfc, 0x8f, 0xfe, 0x67, 0xfe, 0x0c, 0xfe, 0x1f, 0xfe, 0x12, 0xfd, + 0x37, 0xfe, 0xc6, 0x00, 0x2c, 0x02, 0x27, 0x04, 0xef, 0x02, 0xce, 0x00, 0x25, 0xfd, 0x1d, 0xf8, + 0x75, 0xf6, 0x64, 0xf4, 0x91, 0xf4, 0xfa, 0xf7, 0xca, 0xf9, 0x72, 0xfb, 0x4d, 0xfe, 0x14, 0x02, + 0x47, 0x05, 0x24, 0x08, 0x30, 0x09, 0x15, 0x0a, 0x0a, 0x0b, 0xe4, 0x0a, 0x7f, 0x0c, 0x5e, 0x0c, + 0x9a, 0x0c, 0xa7, 0x0c, 0xb5, 0x0f, 0xc5, 0x13, 0x01, 0x15, 0x7a, 0x14, 0x1f, 0x13, 0xb2, 0x11, + 0x97, 0x10, 0x8f, 0x10, 0x53, 0x0f, 0xd0, 0x0d, 0xe5, 0x0b, 0x32, 0x09, 0xaa, 0x04, 0x1e, 0xfe, + 0x24, 0xf9, 0x7d, 0xf6, 0x57, 0xf3, 0xca, 0xf2, 0x83, 0xf1, 0xbe, 0xed, 0x04, 0xee, 0xe3, 0xec, + 0x49, 0xec, 0x68, 0xeb, 0x93, 0xe8, 0x54, 0xe8, 0xe9, 0xe5, 0xae, 0xe3, 0xaf, 0xe3, 0x08, 0xe6, + 0xa4, 0xe8, 0xc4, 0xe9, 0xcc, 0xec, 0x9e, 0xf2, 0x7a, 0xf7, 0x5c, 0xfa, 0x1e, 0xfc, 0x11, 0xfe, + 0x9b, 0x01, 0x1e, 0x05, 0xfd, 0x07, 0x27, 0x09, 0x2e, 0x0a, 0xb2, 0x0b, 0x5e, 0x0d, 0xf0, 0x0d, + 0x7f, 0x0d, 0x6f, 0x0e, 0x35, 0x0f, 0x92, 0x11, 0x0f, 0x13, 0x91, 0x11, 0xd1, 0x0e, 0x38, 0x0e, + 0x76, 0x0d, 0x7f, 0x0b, 0xf7, 0x07, 0x09, 0x03, 0x92, 0xff, 0x48, 0xfd, 0x8c, 0xfb, 0x3b, 0xfa, + 0xde, 0xf8, 0x6c, 0xf9, 0xdd, 0xf9, 0xae, 0xfc, 0xff, 0xfc, 0x13, 0xfa, 0xe3, 0xf8, 0xfa, 0xf6, + 0x81, 0xf8, 0x5e, 0xfa, 0x19, 0xfc, 0xa6, 0xfe, 0x00, 0x01, 0x38, 0x03, 0x9e, 0x03, 0x3d, 0x01, + 0xf2, 0xff, 0x96, 0xff, 0x8f, 0xfe, 0xce, 0xfe, 0x6f, 0xff, 0x3b, 0xff, 0x8a, 0xfd, 0x21, 0xfd, + 0x13, 0xff, 0xe5, 0xff, 0x3d, 0x00, 0x54, 0xff, 0xcd, 0xfc, 0x42, 0xfa, 0x08, 0xf8, 0xe4, 0xf6, + 0x7f, 0xf5, 0x2b, 0xf4, 0x87, 0xf3, 0xfc, 0xf6, 0x7f, 0xfb, 0xd3, 0xfb, 0x9f, 0xfa, 0x39, 0xfc, + 0xb2, 0xff, 0x50, 0x03, 0x5f, 0x07, 0x00, 0x09, 0x7b, 0x0b, 0xc2, 0x0c, 0x6e, 0x0d, 0xf6, 0x0b, + 0xb9, 0x08, 0xe9, 0x06, 0xd3, 0x04, 0x46, 0x04, 0xac, 0x05, 0xf8, 0x05, 0xeb, 0x05, 0x7b, 0x06, + 0x91, 0x08, 0xef, 0x08, 0xbd, 0x06, 0x73, 0x06, 0x69, 0x04, 0x1c, 0x00, 0x97, 0xfd, 0xd3, 0xfa, + 0x63, 0xf8, 0x43, 0xf7, 0x44, 0xf4, 0xb7, 0xf4, 0xb2, 0xf6, 0x0c, 0xf8, 0xd1, 0xf9, 0x45, 0xfb, + 0x72, 0xfc, 0xba, 0xfc, 0xf4, 0xfc, 0x95, 0xfe, 0xa5, 0xff, 0xa7, 0x01, 0x75, 0x04, 0x11, 0x05, + 0xcb, 0x02, 0xb3, 0xff, 0x23, 0xff, 0xa6, 0x00, 0x9e, 0x04, 0x23, 0x08, 0xfd, 0x08, 0x82, 0x0a, + 0xf7, 0x0b, 0x6a, 0x0e, 0xc2, 0x0e, 0xc3, 0x0c, 0xd0, 0x0b, 0xbe, 0x09, 0xc3, 0x07, 0x86, 0x07, + 0xf0, 0x07, 0x45, 0x07, 0xda, 0x05, 0x48, 0x04, 0x3f, 0x05, 0x5e, 0x06, 0xd8, 0x04, 0x1e, 0x03, + 0x78, 0xff, 0x5d, 0xfe, 0x1f, 0xfd, 0x1c, 0xfd, 0xa2, 0xfd, 0x07, 0xfc, 0xaa, 0xfc, 0xe8, 0xfb, + 0x79, 0xfa, 0x10, 0xf9, 0xab, 0xf7, 0x57, 0xf7, 0x8b, 0xf8, 0xd5, 0xf9, 0x65, 0xfa, 0xf7, 0xf9, + 0x00, 0xfc, 0xbb, 0xfe, 0x6f, 0xff, 0x08, 0xff, 0x8f, 0xfd, 0x11, 0xfd, 0xd9, 0xfb, 0x14, 0xfa, + 0x94, 0xfa, 0x3d, 0xfa, 0x6e, 0xfa, 0x66, 0xfa, 0x7c, 0xfc, 0xb1, 0xfe, 0x02, 0xfe, 0x60, 0xfd, + 0xf4, 0xfb, 0xb7, 0xfb, 0xa8, 0xfb, 0x77, 0xfc, 0xc8, 0xfd, 0xa9, 0xfe, 0xe7, 0xff, 0x7d, 0x01, + 0xc8, 0x01, 0x5e, 0x00, 0xd9, 0xff, 0x3e, 0xff, 0x37, 0x01, 0xd3, 0x03, 0xee, 0x04, 0xba, 0x05, + 0xc9, 0x04, 0xab, 0x05, 0xae, 0x06, 0x69, 0x07, 0x28, 0x09, 0x0d, 0x08, 0x47, 0x06, 0xf3, 0x03, + 0x25, 0x02, 0x90, 0x01, 0x08, 0xfe, 0xd6, 0xfb, 0xa9, 0xfc, 0x69, 0xfd, 0x41, 0xfe, 0xa9, 0xfb, + 0x6d, 0xf8, 0xac, 0xf6, 0xc3, 0xf5, 0x34, 0xf7, 0x98, 0xf7, 0x0c, 0xf9, 0x61, 0xf9, 0x8b, 0xf9, + 0x42, 0xf8, 0xde, 0xf4, 0x98, 0xf2, 0x16, 0xf2, 0x21, 0xf2, 0x00, 0xf3, 0xa6, 0xf5, 0xf4, 0xf6, + 0x74, 0xf8, 0xc4, 0xfa, 0x99, 0xfd, 0x4e, 0xff, 0x8e, 0x01, 0x75, 0x02, 0x14, 0x01, 0xf5, 0xff, + 0x9e, 0xff, 0x53, 0x01, 0x01, 0x03, 0x67, 0x02, 0x82, 0x03, 0xa4, 0x07, 0x41, 0x0b, 0x52, 0x0e, + 0xef, 0x0f, 0x0c, 0x10, 0xa1, 0x11, 0x3c, 0x12, 0x7c, 0x13, 0xb6, 0x12, 0xa1, 0x11, 0x68, 0x11, + 0x2b, 0x10, 0x86, 0x0e, 0xaf, 0x08, 0xcb, 0x03, 0x0a, 0x01, 0x6f, 0xff, 0x2a, 0x00, 0x5a, 0xfe, + 0x70, 0xfb, 0x74, 0xfa, 0x46, 0xfa, 0x64, 0xfa, 0x90, 0xf9, 0x9e, 0xf7, 0x42, 0xf4, 0x3a, 0xf0, + 0xc1, 0xed, 0xc2, 0xec, 0x33, 0xec, 0x7b, 0xeb, 0xd6, 0xeb, 0x91, 0xee, 0x43, 0xf2, 0xfd, 0xf3, + 0x50, 0xf7, 0x94, 0xf8, 0x37, 0xf9, 0x9c, 0xfa, 0x39, 0xfc, 0x16, 0xff, 0x90, 0xff, 0xf3, 0x00, + 0x43, 0x02, 0x00, 0x03, 0x6a, 0x02, 0x2c, 0x01, 0xeb, 0x00, 0x27, 0x01, 0xed, 0x02, 0xe8, 0x04, + 0x96, 0x04, 0xa7, 0x03, 0xc0, 0x05, 0x67, 0x08, 0x40, 0x0a, 0xee, 0x09, 0xce, 0x08, 0xb8, 0x08, + 0x1a, 0x08, 0x32, 0x09, 0x8d, 0x09, 0x18, 0x0a, 0x51, 0x0a, 0x5a, 0x0a, 0x93, 0x0c, 0xb3, 0x0d, + 0xc4, 0x0d, 0x7b, 0x0d, 0xe5, 0x0b, 0x7d, 0x0b, 0x52, 0x0c, 0x5c, 0x0b, 0xbd, 0x0b, 0x9e, 0x0c, + 0x29, 0x0d, 0x98, 0x0c, 0xe3, 0x09, 0xff, 0x05, 0xaf, 0x01, 0xb5, 0xfe, 0x62, 0xfc, 0x24, 0xfb, + 0x5a, 0xf9, 0x3c, 0xf7, 0x9f, 0xf6, 0x4a, 0xf7, 0xc9, 0xf6, 0xe6, 0xf6, 0x21, 0xf7, 0xfa, 0xf5, + 0x29, 0xf4, 0xac, 0xf2, 0xe4, 0xf2, 0x05, 0xf2, 0xe6, 0xf0, 0xf4, 0xf0, 0x4d, 0xf3, 0xd5, 0xf6, + 0xe5, 0xf7, 0xa8, 0xf7, 0x89, 0xf7, 0x81, 0xf7, 0x10, 0xfa, 0xf0, 0xfc, 0x06, 0xff, 0x37, 0x00, + 0xa8, 0x01, 0xf0, 0x02, 0x01, 0x03, 0x47, 0x01, 0x99, 0x00, 0xf1, 0xff, 0x9b, 0x00, 0x5f, 0x03, + 0xaa, 0x04, 0xd6, 0x06, 0x66, 0x07, 0xdd, 0x07, 0x15, 0x09, 0xd7, 0x08, 0x7c, 0x09, 0x0d, 0x07, + 0x65, 0x03, 0xf0, 0xff, 0xec, 0xfc, 0x32, 0xfc, 0x32, 0xfb, 0xac, 0xfa, 0x54, 0xfb, 0xdc, 0xfd, + 0x90, 0x00, 0xae, 0x01, 0x0b, 0x01, 0xe4, 0xff, 0x4d, 0xff, 0x7f, 0xff, 0x0d, 0xff, 0x33, 0xfe, + 0x5e, 0x00, 0xce, 0x01, 0xf5, 0x00, 0xf2, 0xfd, 0x1c, 0xfb, 0x1a, 0xfa, 0x8e, 0xf9, 0x74, 0xfb, + 0xa9, 0xfc, 0x78, 0xfc, 0xc7, 0xfb, 0x81, 0xfc, 0x05, 0xfe, 0xe4, 0xfe, 0xba, 0xfe, 0xb2, 0xfd, + 0x3c, 0xfb, 0xfc, 0xf7, 0x6e, 0xf7, 0x9b, 0xf8, 0x10, 0xf9, 0x20, 0xf9, 0xb9, 0xf9, 0xda, 0xfd, + 0xc8, 0x00, 0x36, 0x03, 0xb0, 0x04, 0x05, 0x05, 0x75, 0x06, 0xd1, 0x07, 0x90, 0x0b, 0x4d, 0x0e, + 0x44, 0x10, 0x4f, 0x11, 0xec, 0x0f, 0x7d, 0x0f, 0x1b, 0x0e, 0x73, 0x0b, 0xd2, 0x09, 0xeb, 0x09, + 0x6b, 0x0a, 0xb0, 0x08, 0x6a, 0x06, 0xca, 0x05, 0x74, 0x06, 0x0e, 0x07, 0xbc, 0x05, 0xe4, 0x02, + 0x75, 0xff, 0x5e, 0xfb, 0x5a, 0xf7, 0xf2, 0xf4, 0x36, 0xf2, 0x3c, 0xf0, 0xde, 0xef, 0x4c, 0xf0, + 0x42, 0xf1, 0xd6, 0xf1, 0xcc, 0xf2, 0xcf, 0xf2, 0x3b, 0xf2, 0x06, 0xf3, 0x02, 0xf5, 0x83, 0xf7, + 0x8b, 0xf9, 0xb6, 0xfb, 0xe0, 0xfd, 0x58, 0xff, 0x2d, 0x00, 0xdc, 0xff, 0xee, 0xfe, 0xbd, 0xfe, + 0x61, 0x00, 0x80, 0x02, 0xcb, 0x03, 0x87, 0x03, 0x67, 0x05, 0xbd, 0x06, 0x0d, 0x08, 0x9b, 0x09, + 0xf7, 0x08, 0x25, 0x08, 0xd6, 0x05, 0xfc, 0x04, 0xbc, 0x06, 0xd5, 0x06, 0x8f, 0x05, 0x18, 0x06, + 0x78, 0x07, 0x8b, 0x08, 0xe8, 0x07, 0x10, 0x05, 0x17, 0x03, 0x99, 0x02, 0x9e, 0x02, 0x40, 0x03, + 0x32, 0x02, 0x49, 0x02, 0x02, 0x03, 0x25, 0x02, 0xa6, 0x00, 0xc5, 0xfe, 0x33, 0xfc, 0x11, 0xfb, + 0x63, 0xfc, 0x16, 0xfd, 0x8e, 0xfd, 0x03, 0xfe, 0xfb, 0xff, 0xc0, 0x01, 0x82, 0x01, 0x44, 0x02, + 0x8e, 0x02, 0xf2, 0xff, 0x0b, 0xfc, 0xce, 0xf9, 0xb9, 0xf9, 0x42, 0xfa, 0xe0, 0xf9, 0xe3, 0xf9, + 0x67, 0xfb, 0xb2, 0xfd, 0x06, 0x00, 0x28, 0x00, 0xd1, 0xfe, 0x6b, 0xfe, 0x89, 0xfe, 0x3e, 0x00, + 0xe4, 0xff, 0x5b, 0x00, 0x39, 0x02, 0xd1, 0x02, 0x92, 0x02, 0xdf, 0x00, 0x3e, 0xff, 0x01, 0xff, + 0xb4, 0x00, 0x7e, 0x02, 0x8a, 0x04, 0x47, 0x05, 0x7b, 0x06, 0xe6, 0x07, 0x16, 0x08, 0x53, 0x09, + 0x17, 0x09, 0x17, 0x06, 0x6a, 0x03, 0x50, 0x00, 0xf6, 0xfd, 0xff, 0xfd, 0x6d, 0xfc, 0xf2, 0xf9, + 0x76, 0xfa, 0xf5, 0xfb, 0xc3, 0xfd, 0x51, 0xfd, 0xcf, 0xfa, 0xc5, 0xf8, 0xbb, 0xf6, 0xce, 0xf5, + 0x57, 0xf5, 0xd3, 0xf5, 0x21, 0xf7, 0xcc, 0xf6, 0x81, 0xf5, 0xd9, 0xf4, 0xb5, 0xf3, 0xda, 0xf1, + 0xdb, 0xf2, 0xa6, 0xf5, 0x91, 0xf7, 0x50, 0xf9, 0x0d, 0xfc, 0xca, 0xfe, 0xd6, 0x00, 0xb0, 0x03, + 0xf4, 0x05, 0xb1, 0x06, 0xce, 0x04, 0x39, 0x02, 0xcb, 0x01, 0x7e, 0x02, 0x34, 0x03, 0x67, 0x03, + 0x60, 0x04, 0xcc, 0x06, 0x4f, 0x09, 0xff, 0x0a, 0xba, 0x0b, 0x4a, 0x0c, 0xd8, 0x0b, 0xf9, 0x0b, + 0xda, 0x0d, 0x0f, 0x10, 0x5c, 0x10, 0xdd, 0x0f, 0xb4, 0x0f, 0xcd, 0x0e, 0xe2, 0x0b, 0x1f, 0x07, + 0x80, 0x03, 0xc8, 0x01, 0xe7, 0x00, 0xd0, 0xff, 0xf7, 0xfd, 0x74, 0xfd, 0x1b, 0xfc, 0x64, 0xfc, + 0xf3, 0xfc, 0xa1, 0xfa, 0x80, 0xf8, 0x52, 0xf5, 0x82, 0xf3, 0x88, 0xf2, 0xb0, 0xf0, 0x22, 0xf1, + 0x57, 0xf1, 0x0b, 0xf2, 0x3a, 0xf4, 0x63, 0xf5, 0x95, 0xf6, 0x27, 0xf7, 0x22, 0xf8, 0x98, 0xf8, + 0xcc, 0xfa, 0x6e, 0xfd, 0x7a, 0xff, 0xcd, 0x00, 0x4c, 0x01, 0x7c, 0x00, 0xec, 0xff, 0x9c, 0xfd, + 0x48, 0xfb, 0x43, 0xfb, 0xd5, 0xfb, 0xb9, 0xfc, 0xe9, 0xfc, 0x79, 0xfd, 0x8d, 0xfe, 0x49, 0x00, + 0xf3, 0x01, 0xe8, 0x02, 0x77, 0x02, 0xfb, 0x00, 0xeb, 0xff, 0x77, 0xfe, 0xc3, 0x00, 0x3c, 0x03, + 0x5c, 0x03, 0x1b, 0x06, 0x92, 0x0a, 0x65, 0x0d, 0xc3, 0x0e, 0xb3, 0x0e, 0x45, 0x0e, 0xca, 0x0d, + 0x40, 0x0e, 0x5e, 0x0e, 0x42, 0x0e, 0xfd, 0x0d, 0xff, 0x0d, 0xa6, 0x0d, 0x7b, 0x0a, 0xac, 0x06, + 0xc0, 0x02, 0x20, 0x01, 0xf9, 0xff, 0x3a, 0xfd, 0xad, 0xf9, 0x75, 0xf8, 0x06, 0xf8, 0x5c, 0xf6, + 0x38, 0xf5, 0x93, 0xf4, 0x11, 0xf4, 0x96, 0xf1, 0xac, 0xef, 0xfe, 0xee, 0xd4, 0xef, 0x00, 0xf2, + 0x52, 0xf2, 0xca, 0xf2, 0x89, 0xf5, 0xa0, 0xf8, 0xd5, 0xfb, 0xf0, 0xfd, 0x43, 0xfe, 0xc6, 0xfd, + 0x1d, 0xfe, 0x32, 0x01, 0x49, 0x04, 0x12, 0x06, 0x3c, 0x08, 0xf6, 0x09, 0xaa, 0x09, 0xe0, 0x08, + 0xe0, 0x08, 0x75, 0x09, 0x8f, 0x0a, 0x21, 0x0c, 0xfd, 0x0c, 0x05, 0x0f, 0x98, 0x0f, 0xc4, 0x0f, + 0x45, 0x10, 0xf5, 0x0f, 0x6c, 0x0e, 0x57, 0x0b, 0x51, 0x06, 0xe0, 0x01, 0x26, 0xfe, 0x65, 0xfc, + 0x32, 0xfa, 0xd0, 0xf7, 0x05, 0xf8, 0x79, 0xf9, 0xee, 0xfa, 0xdd, 0xfa, 0x15, 0xfa, 0x9b, 0xf9, + 0xc4, 0xf8, 0x44, 0xf7, 0x37, 0xf7, 0x54, 0xf7, 0xfc, 0xf7, 0x55, 0xfa, 0x9c, 0xf9, 0x14, 0xf8, + 0x91, 0xf7, 0x2b, 0xf6, 0x6d, 0xf7, 0xe9, 0xf8, 0xfc, 0xf9, 0x02, 0xfc, 0x6e, 0xfc, 0x1c, 0xfd, + 0x8f, 0xff, 0x87, 0x01, 0x09, 0x03, 0x83, 0x02, 0x3d, 0x00, 0xf9, 0xfd, 0x0f, 0xfe, 0x6f, 0xfd, + 0xa5, 0xfe, 0xfd, 0xfd, 0x7e, 0xfd, 0xeb, 0x00, 0x74, 0x01, 0x22, 0x02, 0x2d, 0x03, 0x3c, 0x03, + 0x0e, 0x03, 0x4e, 0x02, 0x66, 0x04, 0x1b, 0x07, 0xe7, 0x08, 0x8c, 0x0a, 0x07, 0x0a, 0x68, 0x08, + 0xc7, 0x07, 0x20, 0x06, 0x57, 0x05, 0xb8, 0x06, 0xd0, 0x06, 0xfb, 0x06, 0x4d, 0x06, 0x78, 0x06, + 0x21, 0x08, 0xb4, 0x08, 0x3c, 0x08, 0x0b, 0x07, 0xb2, 0x03, 0x97, 0x00, 0x1b, 0xfd, 0x5a, 0xf9, + 0x85, 0xf7, 0xd1, 0xf4, 0xba, 0xf2, 0xa4, 0xf3, 0x04, 0xf5, 0x53, 0xf6, 0xe5, 0xf6, 0x76, 0xf6, + 0xc0, 0xf5, 0x6e, 0xf6, 0x0b, 0xf8, 0x93, 0xfa, 0xa1, 0xfc, 0x86, 0xfd, 0x37, 0xff, 0xc6, 0xff, + 0x4a, 0xff, 0x3b, 0xff, 0x48, 0xfe, 0xe5, 0xfe, 0xca, 0xff, 0xb9, 0xff, 0x7e, 0x00, 0x79, 0x02, + 0xd7, 0x03, 0xab, 0x04, 0x05, 0x05, 0x1a, 0x06, 0x1e, 0x05, 0xe8, 0x02, 0xa9, 0x01, 0xb0, 0x00, + 0xbe, 0x01, 0xca, 0x01, 0xb6, 0x00, 0x03, 0x01, 0xe9, 0x01, 0x9a, 0x02, 0x94, 0x03, 0x89, 0x02, + 0x89, 0x00, 0xa4, 0xfe, 0xc6, 0xfe, 0x6b, 0xff, 0xf3, 0xff, 0xb2, 0xff, 0xa9, 0xff, 0xc7, 0xff, + 0x54, 0xff, 0x25, 0xfe, 0xf1, 0xfb, 0x75, 0xfb, 0x88, 0xfc, 0xdd, 0xfc, 0x5b, 0xfc, 0xde, 0xfc, + 0xb0, 0xfe, 0xe9, 0xff, 0x9b, 0x00, 0x85, 0x00, 0xc7, 0x00, 0x05, 0xff, 0x89, 0xfc, 0x02, 0xfc, + 0xdb, 0xfb, 0x84, 0xfb, 0x34, 0xfb, 0x58, 0xfc, 0xdc, 0xfe, 0xea, 0x01, 0x93, 0x05, 0x43, 0x06, + 0x71, 0x06, 0x4e, 0x06, 0xb3, 0x05, 0x5c, 0x07, 0x78, 0x08, 0x73, 0x08, 0x71, 0x0a, 0x74, 0x0b, + 0x5d, 0x0a, 0x3b, 0x08, 0xab, 0x05, 0x56, 0x04, 0xb9, 0x03, 0x00, 0x05, 0xdd, 0x05, 0x2e, 0x05, + 0xa3, 0x04, 0x2e, 0x05, 0x6a, 0x05, 0x17, 0x06, 0xe6, 0x06, 0x7f, 0x05, 0x74, 0x01, 0x31, 0xfe, + 0x86, 0xfd, 0xed, 0xfd, 0xb9, 0xfb, 0xde, 0xf9, 0x38, 0xfa, 0x9b, 0xfb, 0x45, 0xfc, 0x15, 0xfc, + 0xe1, 0xfa, 0xc2, 0xf9, 0x2f, 0xf8, 0x7d, 0xf6, 0x66, 0xf5, 0xc5, 0xf4, 0x43, 0xf5, 0x7b, 0xf5, + 0x01, 0xf3, 0x44, 0xf1, 0xa5, 0xef, 0x03, 0xee, 0xed, 0xed, 0x21, 0xee, 0x59, 0xf0, 0xbe, 0xf2, + 0xf3, 0xf4, 0x70, 0xf7, 0x87, 0xfa, 0xf5, 0xfc, 0x74, 0xff, 0x2b, 0x00, 0x43, 0xff, 0xc7, 0xfd, + 0x98, 0xfd, 0xb4, 0xfe, 0x13, 0xfe, 0xef, 0xfd, 0x8e, 0x00, 0x89, 0x03, 0x84, 0x06, 0x56, 0x09, + 0x8d, 0x0a, 0xaf, 0x0a, 0xb3, 0x0a, 0xce, 0x0b, 0x97, 0x0d, 0x04, 0x0f, 0x5c, 0x10, 0xa9, 0x11, + 0x16, 0x11, 0xd2, 0x0e, 0x0e, 0x0d, 0x9d, 0x09, 0x62, 0x07, 0x88, 0x06, 0xf4, 0x05, 0xed, 0x04, + 0xa4, 0x02, 0xd4, 0x00, 0x33, 0x01, 0xeb, 0x01, 0xc6, 0x02, 0x32, 0x02, 0x62, 0xff, 0xb1, 0xfc, + 0xdf, 0xfa, 0xc5, 0xfa, 0xe6, 0xfa, 0x94, 0xf9, 0x1c, 0xfa, 0x69, 0xfb, 0x3f, 0xfc, 0x38, 0xfd, + 0xa6, 0xfd, 0x00, 0xfd, 0xd9, 0xfa, 0xe1, 0xfa, 0x22, 0xfd, 0x72, 0xff, 0x8e, 0x00, 0x24, 0x01, + 0x79, 0x01, 0x0e, 0x02, 0xf3, 0x01, 0x11, 0x01, 0xe4, 0x00, 0x70, 0x01, 0xbd, 0x01, 0x51, 0x02, + 0x46, 0x02, 0x44, 0x03, 0xb3, 0x04, 0x81, 0x05, 0x57, 0x05, 0xc0, 0x04, 0x37, 0x03, 0xce, 0x00, + 0x32, 0xfe, 0x60, 0xfd, 0x3d, 0xfc, 0x2f, 0xfa, 0xd6, 0xf9, 0x3b, 0xfc, 0xa8, 0xfe, 0x61, 0x01, + 0x24, 0x03, 0x55, 0x03, 0x6f, 0x02, 0x73, 0x01, 0x2a, 0x02, 0xed, 0x03, 0xa2, 0x04, 0x07, 0x05, + 0xaf, 0x06, 0x0c, 0x07, 0xf3, 0x05, 0xdf, 0x02, 0x01, 0x01, 0xa0, 0xff, 0x86, 0xff, 0xbb, 0xfe, + 0x1e, 0xfc, 0x3b, 0xfb, 0x55, 0xfa, 0x14, 0xf9, 0x58, 0xf7, 0x70, 0xf6, 0xd5, 0xf5, 0x0d, 0xf3, + 0xfc, 0xef, 0xbe, 0xee, 0xb3, 0xef, 0x74, 0xf0, 0x7b, 0xf0, 0xd6, 0xf0, 0xda, 0xf2, 0x5f, 0xf5, + 0x2f, 0xf7, 0x7c, 0xf8, 0x84, 0xfa, 0xda, 0xfb, 0x6c, 0xfd, 0xc7, 0xff, 0x47, 0x02, 0x96, 0x04, + 0x17, 0x07, 0xe6, 0x08, 0x56, 0x0a, 0x16, 0x09, 0x19, 0x07, 0x2d, 0x07, 0xf8, 0x06, 0x71, 0x07, + 0x8d, 0x08, 0xff, 0x0a, 0xb5, 0x0d, 0xf3, 0x0e, 0x49, 0x0f, 0x6b, 0x0f, 0x76, 0x0f, 0x7a, 0x0c, + 0xe1, 0x07, 0x8b, 0x03, 0xea, 0x00, 0x64, 0xff, 0xb5, 0xfc, 0xc7, 0xfb, 0xea, 0xf9, 0xc2, 0xfb, + 0x17, 0xfe, 0x20, 0xfe, 0xbb, 0xfe, 0x33, 0xfe, 0x40, 0xfe, 0xdb, 0xfe, 0xad, 0xfe, 0xa1, 0xfe, + 0x79, 0xff, 0x25, 0x00, 0x62, 0xfe, 0x93, 0xfc, 0x25, 0xf8, 0x90, 0xf6, 0x93, 0xf6, 0x83, 0xf6, + 0x7e, 0xf8, 0x44, 0xf7, 0xad, 0xf6, 0xd1, 0xf6, 0xf2, 0xf7, 0xfe, 0xfa, 0x63, 0xfb, 0x31, 0xfa, + 0xeb, 0xf8, 0x5e, 0xf7, 0x29, 0xf7, 0x69, 0xf9, 0xbb, 0xfa, 0x37, 0xfa, 0x5c, 0xfb, 0x5c, 0xfe, + 0xaf, 0x01, 0x79, 0x03, 0x48, 0x03, 0x5c, 0x03, 0x9f, 0x01, 0xd3, 0x02, 0x5e, 0x05, 0x33, 0x07, + 0x2d, 0x0b, 0x25, 0x0d, 0x4d, 0x0c, 0xc0, 0x0c, 0xac, 0x0b, 0x7d, 0x09, 0xb7, 0x08, 0x27, 0x09, + 0x6c, 0x0a, 0x99, 0x0a, 0x44, 0x0a, 0xbe, 0x0a, 0x66, 0x0c, 0xc8, 0x0b, 0x49, 0x0a, 0x70, 0x08, + 0x3b, 0x05, 0x47, 0x03, 0x42, 0x01, 0x90, 0xff, 0x3e, 0xf9, 0x6a, 0xf5, 0xf4, 0xf3, 0x3b, 0xf4, + 0x86, 0xf6, 0xb1, 0xf6, 0xb4, 0xf3, 0xf9, 0xf2, 0x4f, 0xf2, 0xe5, 0xf2, 0x37, 0xf4, 0xf6, 0xf6, + 0xc5, 0xf8, 0x57, 0xfa, 0x37, 0xfe, 0x3b, 0x00, 0x08, 0x01, 0x1a, 0xff, 0x05, 0x00, 0x8b, 0x01, + 0x31, 0x04, 0x0b, 0x05, 0x16, 0x07, 0x2c, 0x0a, 0x42, 0x0c, 0x07, 0x0d, 0xe6, 0x0e, 0x2d, 0x0f, + 0x65, 0x10, 0x73, 0x0f, 0xad, 0x0d, 0xea, 0x0d, 0xe7, 0x0d, 0x63, 0x0c, 0x1c, 0x0d, 0xee, 0x0d, + 0x27, 0x0d, 0x80, 0x0d, 0x18, 0x0d, 0x92, 0x0a, 0xcd, 0x07, 0x0f, 0x07, 0x0f, 0x05, 0xca, 0x02, + 0x00, 0xfe, 0x82, 0xfd, 0xab, 0xfc, 0x15, 0xfd, 0x60, 0xfb, 0xe9, 0xf6, 0x01, 0xf4, 0xf3, 0xf2, + 0x1e, 0xf2, 0x4b, 0xf1, 0x31, 0xf1, 0x72, 0xf2, 0x11, 0xf2, 0xed, 0xf3, 0x26, 0xf7, 0xac, 0xf6, + 0xee, 0xf4, 0x5e, 0xf2, 0x39, 0xf1, 0x69, 0xec, 0x9b, 0xec, 0x39, 0xef, 0xaa, 0xf0, 0x3d, 0xf1, + 0x6a, 0xf3, 0x68, 0xf5, 0x5f, 0xf8, 0x46, 0xfb, 0x15, 0xfe, 0x2e, 0x00, 0xf2, 0x03, 0xd0, 0x04, + 0xa6, 0x05, 0x17, 0x07, 0x57, 0x08, 0x63, 0x09, 0x23, 0x08, 0x6f, 0x06, 0x40, 0x02, 0x67, 0x01, + 0x23, 0x02, 0xe1, 0x02, 0x00, 0x01, 0x73, 0xfe, 0x4d, 0xfe, 0x3f, 0xff, 0xa5, 0x00, 0xda, 0x01, + 0x96, 0x02, 0x9d, 0x03, 0xae, 0x00, 0xd9, 0xfd, 0xd1, 0xfd, 0xae, 0xfe, 0xf8, 0xfe, 0x3d, 0xfe, + 0xe4, 0xff, 0x3a, 0x02, 0x45, 0x03, 0x86, 0x02, 0x19, 0x03, 0x2d, 0x01, 0x74, 0xff, 0xda, 0xfe, + 0x55, 0x01, 0x03, 0x02, 0xf5, 0x03, 0x92, 0x04, 0xca, 0x03, 0x81, 0x01, 0xfd, 0xff, 0xd4, 0xfe, + 0x03, 0x00, 0x1a, 0x00, 0x94, 0xff, 0xc2, 0xff, 0x94, 0x01, 0xe1, 0x01, 0xca, 0x01, 0x30, 0x03, + 0xa1, 0x01, 0xae, 0xff, 0xd0, 0xfd, 0xd8, 0xfc, 0x92, 0xfc, 0xbd, 0xfa, 0xf7, 0xf7, 0x0a, 0xf7, + 0x9f, 0xf8, 0x74, 0xfb, 0x2e, 0xfd, 0x9c, 0xff, 0x0a, 0x01, 0x46, 0x01, 0xaa, 0xff, 0x6f, 0xff, + 0xb6, 0x00, 0x98, 0x02, 0x4c, 0x05, 0x07, 0x06, 0xa1, 0x08, 0x87, 0x08, 0x8a, 0x07, 0xf5, 0x06, + 0x2c, 0x05, 0x5a, 0x01, 0xbe, 0x00, 0x67, 0x02, 0x3f, 0x04, 0xe3, 0x03, 0xdc, 0x03, 0x19, 0x02, + 0x78, 0x03, 0x3f, 0x03, 0xfc, 0x03, 0x09, 0x04, 0x09, 0x03, 0x12, 0x02, 0x59, 0x01, 0xfb, 0x00, + 0x4f, 0x00, 0x2f, 0x02, 0x64, 0x03, 0x9c, 0x01, 0x0c, 0x01, 0x0a, 0x02, 0xca, 0x00, 0xd1, 0xff, + 0xe8, 0xfe, 0xda, 0xfe, 0x22, 0x00, 0x7c, 0x00, 0x72, 0x01, 0xb1, 0x02, 0x56, 0x01, 0xe2, 0x00, + 0x13, 0x00, 0x3e, 0xff, 0x73, 0xff, 0xe7, 0x01, 0xbe, 0x03, 0x8b, 0x04, 0xc2, 0x05, 0x20, 0x06, + 0xaf, 0x06, 0xee, 0x06, 0x6b, 0x07, 0xbc, 0x02, 0x87, 0xfe, 0x39, 0xfc, 0x66, 0xfc, 0xc4, 0xfd, + 0xee, 0xff, 0x32, 0xff, 0x31, 0x01, 0xf4, 0x02, 0x40, 0x06, 0xdc, 0x08, 0x10, 0x0b, 0x7f, 0x09, + 0x78, 0x08, 0x01, 0x09, 0xfc, 0x07, 0x8d, 0x09, 0x4d, 0x0b, 0xe4, 0x09, 0xcc, 0x06, 0x74, 0x02, + 0xee, 0xff, 0x11, 0xfe, 0xad, 0xfc, 0xe0, 0xf9, 0x7c, 0xf4, 0x6d, 0xf3, 0xab, 0xf0, 0xec, 0xf0, + 0xc2, 0xef, 0x72, 0xed, 0x66, 0xec, 0x9c, 0xea, 0x7e, 0xe6, 0x59, 0xe3, 0x57, 0xe4, 0xc2, 0xe5, + 0x7c, 0xe5, 0x99, 0xe6, 0x2a, 0xe9, 0xf1, 0xeb, 0x16, 0xee, 0x3c, 0xf1, 0x03, 0xf3, 0xef, 0xf2, + 0xbd, 0xf5, 0x6f, 0xf9, 0xce, 0x00, 0x61, 0x05, 0x61, 0x08, 0xb7, 0x0a, 0x58, 0x0c, 0x6e, 0x0c, + 0x2c, 0x0e, 0xe7, 0x10, 0x05, 0x12, 0x0c, 0x12, 0x84, 0x12, 0xbc, 0x13, 0x51, 0x16, 0xb2, 0x17, + 0x8a, 0x16, 0x7e, 0x15, 0xfa, 0x14, 0x30, 0x14, 0x07, 0x10, 0x97, 0x0b, 0xf4, 0x05, 0x25, 0x01, + 0x10, 0xfe, 0x8a, 0xfc, 0x26, 0xfc, 0x3a, 0xfd, 0xfe, 0xfb, 0x1c, 0xfe, 0x80, 0xfd, 0xf7, 0xf9, + 0x37, 0xf8, 0xaa, 0xf8, 0x57, 0xf8, 0xa3, 0xf7, 0x29, 0xf9, 0x15, 0xfb, 0x08, 0xfb, 0x79, 0xfa, + 0xa9, 0xf8, 0x47, 0xf7, 0xcf, 0xf5, 0xcd, 0xf2, 0xba, 0xf4, 0x05, 0xf8, 0xf1, 0xf9, 0x5a, 0xf8, + 0xd9, 0xf9, 0x4f, 0xfa, 0x6d, 0xfb, 0x3b, 0xff, 0x78, 0x00, 0x28, 0x00, 0xcb, 0xff, 0xe5, 0xfe, + 0x7e, 0xff, 0xdd, 0xff, 0xb7, 0x00, 0xe1, 0xff, 0xee, 0xff, 0x73, 0x00, 0xc2, 0x00, 0x74, 0x01, + 0x0c, 0x00, 0x4a, 0xff, 0x74, 0xfd, 0xd0, 0xff, 0xe3, 0x00, 0x3b, 0x03, 0x98, 0x03, 0x17, 0x03, + 0x52, 0x04, 0x5f, 0x04, 0x0f, 0x01, 0x97, 0x01, 0x60, 0x02, 0x7d, 0x03, 0x85, 0x04, 0x44, 0x06, + 0x33, 0x07, 0x35, 0x08, 0xc1, 0x09, 0xec, 0x09, 0xcf, 0x07, 0x88, 0x02, 0xe4, 0xfe, 0x35, 0xff, + 0x82, 0x00, 0xb8, 0xfe, 0x98, 0xff, 0x27, 0x01, 0x12, 0x01, 0xc5, 0x00, 0x24, 0x03, 0xc7, 0x04, + 0xc7, 0x03, 0xca, 0x01, 0xe3, 0xff, 0x7c, 0x00, 0xd8, 0x01, 0x61, 0x02, 0xd1, 0x02, 0x5f, 0x02, + 0x39, 0x00, 0x76, 0xff, 0x45, 0xff, 0xd1, 0xff, 0xa9, 0xfd, 0x8d, 0xfd, 0x0a, 0xfe, 0x7c, 0xfe, + 0xc1, 0xfd, 0x9a, 0xfe, 0x15, 0xff, 0xad, 0x01, 0x4b, 0x01, 0xca, 0xfe, 0x31, 0xfd, 0x34, 0xfd, + 0xf5, 0xfb, 0xc8, 0xfc, 0x94, 0xfc, 0x3b, 0xfd, 0x02, 0xfe, 0x62, 0xff, 0xa1, 0x02, 0xeb, 0x02, + 0x1e, 0x00, 0xba, 0xfd, 0x10, 0xff, 0x07, 0x01, 0x53, 0x01, 0xb9, 0x03, 0x76, 0x04, 0xf7, 0x02, + 0x8c, 0x03, 0x41, 0x03, 0x4a, 0x03, 0x49, 0x02, 0xe6, 0x01, 0x7b, 0x01, 0xd7, 0x01, 0x77, 0x02, + 0xa1, 0x02, 0x40, 0x03, 0xf5, 0x01, 0xae, 0x00, 0x84, 0x00, 0x3d, 0xff, 0xeb, 0xfa, 0x7e, 0xf5, + 0x97, 0xf2, 0xf9, 0xf2, 0x7c, 0xf1, 0xee, 0xf1, 0xc9, 0xf2, 0x07, 0xf6, 0xfc, 0xf7, 0x3e, 0xf9, + 0x9a, 0xf8, 0x58, 0xf9, 0xeb, 0xf8, 0xf2, 0xf9, 0xb8, 0xfc, 0x09, 0xfe, 0x54, 0xff, 0xb7, 0x00, + 0x35, 0x02, 0x7b, 0x02, 0xce, 0x00, 0xb3, 0xfe, 0x97, 0xfe, 0x66, 0x00, 0x38, 0x02, 0x99, 0x03, + 0xcf, 0x05, 0x1e, 0x06, 0xc0, 0x04, 0x51, 0x06, 0x3e, 0x0a, 0x94, 0x0b, 0xf3, 0x0b, 0xe0, 0x09, + 0x99, 0x09, 0x7d, 0x08, 0x3d, 0x07, 0x80, 0x07, 0x48, 0x07, 0x0a, 0x07, 0x04, 0x07, 0xad, 0x08, + 0xac, 0x07, 0x5a, 0x05, 0x06, 0x03, 0x8d, 0x00, 0x81, 0x00, 0x24, 0xff, 0xc2, 0xfd, 0x41, 0xff, + 0x22, 0xff, 0x75, 0xfd, 0xd5, 0xf8, 0x6a, 0xf7, 0x18, 0xf4, 0x2f, 0xf2, 0x34, 0xf3, 0xd0, 0xf4, + 0x20, 0xf5, 0xb5, 0xf4, 0xf4, 0xf5, 0x61, 0xf8, 0xea, 0xfa, 0xe3, 0xfa, 0x12, 0xf8, 0xfe, 0xf6, + 0xa2, 0xf6, 0x98, 0xf8, 0x27, 0xfb, 0x9c, 0xfd, 0x79, 0x00, 0xee, 0x01, 0x17, 0x06, 0xe9, 0x09, + 0xfd, 0x0e, 0xe8, 0x10, 0x59, 0x11, 0x4d, 0x11, 0x76, 0x11, 0xba, 0x12, 0x8f, 0x15, 0x54, 0x15, + 0x0a, 0x13, 0x9c, 0x11, 0x7d, 0x10, 0xf7, 0x0e, 0x9f, 0x0c, 0x8d, 0x09, 0x7b, 0x06, 0x1f, 0x05, + 0xd6, 0x01, 0x46, 0xfe, 0x86, 0xfc, 0x4d, 0xfc, 0x73, 0xfb, 0x02, 0xfc, 0x7b, 0xf8, 0x25, 0xf4, + 0x4a, 0xf1, 0xc6, 0xf1, 0x6a, 0xf1, 0x52, 0xef, 0x85, 0xee, 0x10, 0xf0, 0xca, 0xf3, 0xa8, 0xf5, + 0x5a, 0xf6, 0x17, 0xf6, 0xbf, 0xf4, 0x40, 0xf4, 0x5d, 0xf7, 0x3c, 0xfc, 0x37, 0xff, 0x37, 0x00, + 0x6f, 0x02, 0x98, 0x03, 0xa6, 0x04, 0xc8, 0x04, 0x60, 0x06, 0xa7, 0x05, 0xee, 0x06, 0xbc, 0x07, + 0xf0, 0x09, 0x81, 0x0c, 0x95, 0x0b, 0xa0, 0x09, 0x8f, 0x0a, 0x8f, 0x0b, 0x2e, 0x0a, 0x73, 0x06, + 0x3d, 0x02, 0x9b, 0xff, 0x75, 0xfd, 0xa7, 0xfb, 0x4a, 0xfa, 0xef, 0xfb, 0x87, 0xfc, 0x27, 0xfe, + 0x0d, 0x01, 0x57, 0x01, 0xd7, 0xff, 0xc7, 0xff, 0x4d, 0x00, 0x46, 0x01, 0x4f, 0x01, 0xfb, 0x00, + 0xfb, 0x01, 0x24, 0x05, 0x91, 0x05, 0xcd, 0x02, 0xfa, 0x00, 0xba, 0xfe, 0xa0, 0xfd, 0x5b, 0xff, + 0x0c, 0x01, 0x6c, 0xfe, 0x39, 0xfd, 0xa7, 0xfd, 0x67, 0xfd, 0x09, 0xfe, 0x2f, 0x00, 0xc8, 0xfe, + 0x8b, 0xfb, 0xb4, 0xf8, 0x0c, 0xf8, 0xde, 0xf6, 0xb4, 0xf6, 0x8d, 0xf4, 0x65, 0xf4, 0xa0, 0xf5, + 0xa9, 0xf7, 0x20, 0xf8, 0xd9, 0xf6, 0x86, 0xf5, 0x34, 0xf5, 0x01, 0xf7, 0x98, 0xf7, 0x51, 0xf9, + 0xa6, 0xfb, 0x6b, 0xfd, 0xad, 0xfe, 0x09, 0xff, 0x26, 0xfd, 0x64, 0xfb, 0xbe, 0xfc, 0xd7, 0xfd, + 0x13, 0xff, 0x3f, 0x01, 0x11, 0x01, 0xc5, 0x02, 0x4e, 0x05, 0x03, 0x07, 0xda, 0x07, 0x9e, 0x06, + 0x56, 0x04, 0x5a, 0x01, 0xa5, 0x02, 0x0e, 0x02, 0xcf, 0x00, 0x73, 0x00, 0xe3, 0x00, 0x10, 0x02, + 0xf0, 0x04, 0x7d, 0x08, 0xfa, 0x09, 0xaa, 0x08, 0x01, 0x08, 0x23, 0x08, 0x0c, 0x0a, 0xdc, 0x08, + 0x0d, 0x09, 0x12, 0x09, 0x28, 0x09, 0x42, 0x08, 0x10, 0x07, 0xd8, 0x04, 0xc1, 0x00, 0x71, 0xff, + 0xc7, 0xfe, 0x0a, 0xfd, 0x2d, 0xfb, 0x89, 0xfa, 0x25, 0xfa, 0xbc, 0xfa, 0x28, 0xfd, 0x6e, 0xfb, + 0x9f, 0xf8, 0x20, 0xf8, 0x02, 0xf8, 0x54, 0xf9, 0xd3, 0xf8, 0xbb, 0xf8, 0x94, 0xf9, 0x93, 0xfc, + 0x9b, 0xfe, 0x2f, 0x00, 0x8b, 0xff, 0x1f, 0xfe, 0xa0, 0xfe, 0x5e, 0x00, 0x77, 0x02, 0x1a, 0x04, + 0xba, 0x06, 0x54, 0x08, 0xad, 0x09, 0x0b, 0x0b, 0x51, 0x0b, 0x30, 0x0b, 0x4f, 0x0b, 0x88, 0x0b, + 0xd7, 0x0c, 0xcd, 0x0d, 0xab, 0x0e, 0x9e, 0x0c, 0xbf, 0x0b, 0xc0, 0x0b, 0x40, 0x0d, 0xe8, 0x0c, + 0x04, 0x09, 0x80, 0x03, 0xbe, 0xff, 0x75, 0xfe, 0x96, 0xfa, 0x1b, 0xf6, 0xe8, 0xf4, 0x80, 0xf5, + 0x20, 0xf6, 0x5c, 0xf7, 0x21, 0xf7, 0x62, 0xf5, 0x5a, 0xf2, 0xf9, 0xf0, 0x24, 0xf1, 0xb6, 0xf0, + 0x04, 0xef, 0xc4, 0xf0, 0xa7, 0xf2, 0xca, 0xf3, 0x9b, 0xf3, 0xea, 0xf1, 0xf2, 0xf0, 0xca, 0xf1, + 0x18, 0xf5, 0x09, 0xf7, 0x1f, 0xf9, 0x66, 0xfb, 0x8e, 0xfc, 0x53, 0xfe, 0xc8, 0x02, 0x7b, 0x06, + 0xb4, 0x08, 0x35, 0x09, 0x44, 0x0a, 0xb7, 0x0a, 0xd5, 0x0b, 0xf4, 0x0b, 0x9e, 0x0b, 0x16, 0x0b, + 0xf1, 0x0c, 0x2a, 0x0f, 0x3e, 0x0f, 0x1b, 0x0e, 0x26, 0x0c, 0x95, 0x0a, 0xf5, 0x09, 0xf9, 0x08, + 0xf9, 0x06, 0x09, 0x06, 0x3c, 0x05, 0xbd, 0x04, 0xea, 0x02, 0x92, 0x00, 0x23, 0xfc, 0xc0, 0xf8, + 0xd9, 0xf7, 0x6a, 0xf9, 0x24, 0xf8, 0x40, 0xf6, 0xe4, 0xf6, 0x1d, 0xf8, 0x77, 0xf8, 0x36, 0xfa, + 0xcc, 0xf9, 0x0e, 0xf8, 0xde, 0xf4, 0x7b, 0xf4, 0x3e, 0xf4, 0xaf, 0xf3, 0x3b, 0xf4, 0x27, 0xf5, + 0x10, 0xf8, 0x6a, 0xfb, 0x15, 0xff, 0xb9, 0x01, 0xe3, 0x02, 0x41, 0x03, 0x80, 0x04, 0x1c, 0x06, + 0xf0, 0x07, 0xc2, 0x08, 0xc4, 0x08, 0x60, 0x0a, 0x97, 0x0b, 0x1d, 0x09, 0xa9, 0x05, 0x3d, 0x03, + 0x90, 0x02, 0x10, 0x01, 0x3a, 0xfe, 0xf1, 0xfb, 0x66, 0xfa, 0xfa, 0xf9, 0x68, 0xf9, 0x9d, 0xfb, + 0xe0, 0xfa, 0xf1, 0xf8, 0xfa, 0xf6, 0x15, 0xf8, 0x0d, 0xf9, 0x74, 0xf8, 0x3c, 0xf7, 0x7e, 0xf7, + 0x69, 0xf9, 0x1e, 0xfc, 0x35, 0xfe, 0xb0, 0xff, 0x32, 0xff, 0xd2, 0xfd, 0xe8, 0xfe, 0x08, 0x03, + 0x12, 0x04, 0x40, 0x04, 0x27, 0x06, 0x9c, 0x07, 0x6a, 0x09, 0x15, 0x0a, 0x05, 0x0b, 0x81, 0x09, + 0x40, 0x08, 0x44, 0x08, 0x29, 0x08, 0xa5, 0x08, 0xde, 0x06, 0x69, 0x04, 0x04, 0x05, 0x74, 0x06, + 0x32, 0x06, 0x2f, 0x03, 0x09, 0x00, 0x6c, 0xfd, 0x9a, 0xfb, 0x79, 0xf8, 0x5b, 0xf6, 0xc9, 0xf6, + 0x11, 0xf7, 0x31, 0xfa, 0xe4, 0xfd, 0x97, 0xff, 0xa4, 0xfe, 0x78, 0xff, 0x67, 0x01, 0x7c, 0x02, + 0x9f, 0x02, 0x2b, 0x03, 0x3d, 0x04, 0x12, 0x07, 0x0c, 0x09, 0xea, 0x08, 0x5a, 0x06, 0xe1, 0x04, + 0xb2, 0x03, 0x87, 0x05, 0xa9, 0x06, 0x29, 0x06, 0x8c, 0x04, 0x7d, 0x03, 0x1a, 0x03, 0xff, 0x02, + 0x54, 0x04, 0x78, 0x05, 0x6e, 0x03, 0xe2, 0xff, 0xe4, 0xff, 0x7f, 0x00, 0xb7, 0xfe, 0xe0, 0xfb, + 0x69, 0xfa, 0xbe, 0xfb, 0xe9, 0xfc, 0x3d, 0xfc, 0x76, 0xfc, 0x41, 0xfa, 0x01, 0xf9, 0x8c, 0xf7, + 0x94, 0xf6, 0x88, 0xf6, 0x48, 0xf6, 0xd6, 0xf6, 0x2a, 0xf8, 0x88, 0xfa, 0x1e, 0xf8, 0x9b, 0xf4, + 0x62, 0xf3, 0xfd, 0xf4, 0x9c, 0xf4, 0xe3, 0xf4, 0x60, 0xf6, 0x74, 0xf7, 0x54, 0xf9, 0x94, 0xfc, + 0x94, 0xfe, 0xd9, 0xff, 0x6e, 0xfe, 0x3d, 0xfd, 0xda, 0xfd, 0x77, 0xfe, 0x9d, 0xfd, 0x48, 0xfc, + 0xbe, 0xfc, 0x0c, 0xff, 0xa0, 0x02, 0x5e, 0x06, 0xac, 0x09, 0x1b, 0x0b, 0x2e, 0x0b, 0xf5, 0x0c, + 0xd1, 0x0f, 0x1f, 0x10, 0x67, 0x0f, 0xe3, 0x0e, 0xd9, 0x10, 0xdd, 0x10, 0x96, 0x0f, 0x17, 0x0e, + 0x8a, 0x0a, 0xec, 0x07, 0xf9, 0x06, 0x43, 0x04, 0x5a, 0x01, 0x87, 0xfe, 0xeb, 0xfb, 0xad, 0xfa, + 0x12, 0xfb, 0xfd, 0xf9, 0x43, 0xf7, 0x50, 0xf6, 0xb4, 0xf4, 0x1c, 0xf3, 0x6d, 0xf1, 0xd6, 0xef, + 0x3a, 0xee, 0xd8, 0xee, 0xd1, 0xf0, 0xdb, 0xf2, 0x1e, 0xf3, 0x8d, 0xf2, 0x57, 0xf2, 0x0c, 0xf4, + 0xd1, 0xf5, 0xb9, 0xf7, 0xee, 0xf9, 0xf4, 0xfb, 0xbc, 0xff, 0x34, 0x04, 0x2b, 0x07, 0x4e, 0x08, + 0x76, 0x08, 0xee, 0x08, 0x75, 0x0b, 0x30, 0x0e, 0x2c, 0x0f, 0x16, 0x0e, 0x02, 0x0f, 0x6f, 0x10, + 0x25, 0x12, 0x70, 0x11, 0xc9, 0x10, 0x0f, 0x0e, 0x1e, 0x0b, 0x4b, 0x09, 0x5a, 0x06, 0x18, 0x03, + 0xa8, 0xff, 0x0d, 0xfe, 0x32, 0xff, 0x14, 0xff, 0x1d, 0xff, 0xc4, 0xfe, 0xe2, 0xfc, 0x7d, 0xfb, + 0x46, 0xfa, 0x36, 0xfa, 0xcf, 0xf7, 0x6f, 0xf8, 0xbf, 0xf9, 0xbf, 0xfa, 0x50, 0xfb, 0x63, 0xf9, + 0x8a, 0xf7, 0x23, 0xf7, 0x33, 0xf9, 0xc7, 0xf9, 0x0f, 0xfa, 0x64, 0xfa, 0x9c, 0xf9, 0xa3, 0xfa, + 0xc3, 0xfc, 0xe8, 0xff, 0xe5, 0x01, 0x66, 0x01, 0xbd, 0x01, 0x81, 0x02, 0xfd, 0x03, 0x26, 0x03, + 0x5c, 0x02, 0x3c, 0x02, 0x25, 0x05, 0x8c, 0x08, 0xf3, 0x09, 0xce, 0x09, 0xfe, 0x08, 0x57, 0x07, + 0xc5, 0x06, 0xce, 0x05, 0x4d, 0x05, 0xa5, 0x03, 0x7a, 0x03, 0xd5, 0x05, 0xef, 0x05, 0x23, 0x04, + 0x1b, 0x02, 0xd1, 0xff, 0x40, 0xff, 0xd1, 0xff, 0x5b, 0x00, 0x38, 0x00, 0x58, 0x00, 0x50, 0x02, + 0x7f, 0x02, 0x66, 0x03, 0xfb, 0x04, 0x46, 0x04, 0x91, 0x02, 0x1f, 0x01, 0x7a, 0x01, 0x39, 0xff, + 0x25, 0xfc, 0x30, 0xfb, 0x6f, 0xfb, 0xa8, 0xfd, 0xaf, 0xff, 0xf2, 0x01, 0x87, 0x02, 0xf2, 0x02, + 0xb2, 0x04, 0x32, 0x04, 0xf4, 0x03, 0xbe, 0x02, 0x04, 0x02, 0x30, 0x02, 0x65, 0x03, 0xd3, 0x01, + 0x12, 0xfe, 0xa3, 0xfa, 0xcd, 0xf8, 0xe6, 0xf6, 0x4d, 0xf5, 0x92, 0xf3, 0x1a, 0xf2, 0xe3, 0xf0, + 0x79, 0xf2, 0x51, 0xf3, 0x3f, 0xf4, 0x06, 0xf5, 0xe1, 0xf3, 0x09, 0xf4, 0xe9, 0xf4, 0xf7, 0xf5, + 0xe8, 0xf4, 0xf1, 0xf4, 0x12, 0xf7, 0xe8, 0xf9, 0x9a, 0xfc, 0x33, 0xfe, 0xa1, 0xfe, 0x20, 0xff, + 0xeb, 0xff, 0xfa, 0x02, 0x24, 0x05, 0x2b, 0x06, 0xa4, 0x07, 0x0c, 0x0a, 0xea, 0x0b, 0x57, 0x0d, + 0x18, 0x0e, 0x68, 0x0c, 0xa7, 0x0a, 0x3b, 0x0b, 0x53, 0x0b, 0x94, 0x09, 0xaf, 0x08, 0x5a, 0x07, + 0xe6, 0x07, 0x20, 0x08, 0x62, 0x07, 0xf9, 0x05, 0x1d, 0x04, 0x59, 0x01, 0xd1, 0xfe, 0xa5, 0xfb, + 0x15, 0xf8, 0xc4, 0xf4, 0xc8, 0xf3, 0x15, 0xf4, 0xca, 0xf5, 0x33, 0xf7, 0x6b, 0xf7, 0x59, 0xf7, + 0x53, 0xf8, 0xe3, 0xf8, 0x7a, 0xf8, 0xe4, 0xf8, 0x9b, 0xf9, 0x6d, 0xfb, 0xa1, 0xfe, 0x43, 0x01, + 0xe3, 0x01, 0x08, 0x01, 0xb9, 0xff, 0xd8, 0x00, 0x6e, 0x02, 0x24, 0x03, 0x0a, 0x02, 0xf3, 0x01, + 0x6f, 0x02, 0xe2, 0x03, 0xf4, 0x05, 0xd4, 0x06, 0xa0, 0x07, 0x1f, 0x07, 0x5a, 0x07, 0x00, 0x09, + 0x37, 0x08, 0x98, 0x06, 0x06, 0x06, 0x4c, 0x07, 0x5d, 0x08, 0xe7, 0x07, 0x89, 0x09, 0x28, 0x08, + 0x01, 0x06, 0x8d, 0x04, 0x51, 0x03, 0x46, 0x01, 0x60, 0x00, 0xdc, 0xff, 0x51, 0xff, 0x4a, 0xff, + 0xc1, 0xfd, 0x79, 0xfa, 0xa4, 0xf7, 0xe3, 0xf6, 0xdf, 0xf5, 0xa5, 0xf4, 0x1f, 0xf4, 0x86, 0xf4, + 0x28, 0xf4, 0x45, 0xf5, 0x3a, 0xf6, 0x9d, 0xf7, 0x2d, 0xf7, 0xc0, 0xf6, 0x58, 0xf6, 0xea, 0xf6, + 0x6d, 0xf6, 0x0c, 0xf5, 0x54, 0xf4, 0x1d, 0xf6, 0xd7, 0xf9, 0x00, 0xfe, 0x9e, 0x01, 0xe2, 0x04, + 0xbf, 0x07, 0x78, 0x0a, 0xe8, 0x0c, 0xde, 0x0d, 0x97, 0x0e, 0x7c, 0x0f, 0xaf, 0x11, 0xdf, 0x13, + 0xc3, 0x13, 0x2b, 0x13, 0xda, 0x10, 0x24, 0x0d, 0x8d, 0x0c, 0xcd, 0x0a, 0x54, 0x08, 0x02, 0x07, + 0x0c, 0x06, 0xd5, 0x04, 0x46, 0x02, 0x14, 0x01, 0x8d, 0xff, 0x8d, 0xfd, 0x36, 0xfc, 0x5e, 0xfa, + 0x60, 0xf8, 0xfc, 0xf5, 0x26, 0xf4, 0x2a, 0xf3, 0xad, 0xf3, 0xca, 0xf5, 0x02, 0xf6, 0x33, 0xf6, + 0x6a, 0xf5, 0xfc, 0xf6, 0x66, 0xf7, 0xae, 0xf7, 0x87, 0xf9, 0xb1, 0xf9, 0x28, 0xfa, 0x29, 0xfd, + 0xb3, 0xff, 0xaf, 0x00, 0xda, 0xff, 0xce, 0xff, 0xab, 0x00, 0xac, 0x02, 0xaa, 0x02, 0x57, 0x02, + 0xc6, 0x02, 0xdb, 0x03, 0x8f, 0x05, 0x09, 0x06, 0x3a, 0x08, 0x38, 0x07, 0x87, 0x04, 0x98, 0x03, + 0x01, 0x01, 0x62, 0xfd, 0x28, 0xfb, 0x4b, 0xf9, 0x5b, 0xf9, 0x30, 0xfa, 0x5c, 0xfa, 0x01, 0xfb, + 0x2e, 0xfb, 0xc5, 0xfb, 0xe2, 0xfb, 0xd2, 0xfb, 0xd4, 0xfb, 0x5f, 0xfd, 0xec, 0xfe, 0x09, 0x01, + 0x74, 0x02, 0xe6, 0x02, 0x7a, 0x01, 0xa5, 0x00, 0xe3, 0x00, 0x26, 0x02, 0xd1, 0x01, 0x70, 0x01, + 0x85, 0x00, 0xac, 0x00, 0x68, 0x02, 0x0c, 0x03, 0xc5, 0x02, 0x45, 0x03, 0x5c, 0x03, 0x75, 0x04, + 0x26, 0x04, 0x9e, 0x02, 0x53, 0x01, 0x45, 0x00, 0x19, 0x00, 0x32, 0x01, 0x2f, 0x03, 0xe2, 0x03, + 0x53, 0x03, 0x36, 0x02, 0xcd, 0x00, 0x16, 0xfe, 0x6c, 0xfc, 0x8e, 0xfc, 0x48, 0xfc, 0x31, 0xfd, + 0x3c, 0xfe, 0x93, 0xfe, 0x76, 0xff, 0x9b, 0xfd, 0xde, 0xfc, 0x31, 0xfd, 0xb9, 0xfd, 0x4f, 0xfe, + 0x4f, 0xfe, 0x1f, 0x00, 0xb8, 0x01, 0xde, 0x02, 0xdb, 0x03, 0xa0, 0x04, 0x61, 0x04, 0xd2, 0x03, + 0x78, 0x03, 0x15, 0x03, 0x45, 0x00, 0x10, 0xff, 0x8c, 0xff, 0xf0, 0x01, 0xc9, 0x03, 0x28, 0x05, + 0xe4, 0x06, 0x4c, 0x09, 0xa0, 0x0c, 0x6e, 0x0d, 0x6e, 0x0c, 0xdf, 0x0c, 0x2d, 0x0c, 0x97, 0x0a, + 0x1b, 0x0b, 0xdf, 0x0a, 0x08, 0x09, 0x84, 0x05, 0x63, 0x02, 0x4e, 0xff, 0x66, 0xfb, 0xe4, 0xf8, + 0x61, 0xf8, 0xae, 0xf6, 0x3d, 0xf6, 0xa6, 0xf4, 0x56, 0xf3, 0x8b, 0xf3, 0xd4, 0xf2, 0xf1, 0xf0, + 0x73, 0xef, 0x5d, 0xee, 0x79, 0xed, 0x6c, 0xec, 0x19, 0xec, 0xce, 0xed, 0x0c, 0xef, 0xaf, 0xf1, + 0xa7, 0xf4, 0x74, 0xf6, 0xdc, 0xf8, 0x6b, 0xfb, 0xef, 0xfd, 0xf5, 0xff, 0x3c, 0x01, 0xad, 0x04, + 0x67, 0x08, 0xa3, 0x0c, 0x81, 0x0e, 0x29, 0x0f, 0x2a, 0x0f, 0x40, 0x0f, 0x80, 0x0f, 0x38, 0x0e, + 0x4d, 0x0e, 0x6e, 0x0e, 0x02, 0x0f, 0x02, 0x10, 0xd4, 0x0f, 0x9d, 0x0f, 0xd3, 0x0e, 0xcc, 0x0d, + 0xcd, 0x0b, 0x6b, 0x07, 0x07, 0x04, 0xbc, 0xff, 0xb8, 0xfc, 0x0c, 0xfa, 0x57, 0xf8, 0x69, 0xf7, + 0x76, 0xf6, 0xa8, 0xf5, 0x71, 0xf5, 0xa4, 0xf4, 0x01, 0xf3, 0x7d, 0xf2, 0x08, 0xf3, 0xe7, 0xf2, + 0x40, 0xf4, 0x5f, 0xf5, 0x59, 0xf6, 0x01, 0xf7, 0x1a, 0xf6, 0xf9, 0xf5, 0xc3, 0xf6, 0x81, 0xf8, + 0x78, 0xf7, 0xc1, 0xf6, 0x37, 0xf8, 0x1c, 0xfa, 0xa8, 0xfb, 0x93, 0xfd, 0x43, 0xff, 0x7a, 0x01, + 0x82, 0x03, 0x5b, 0x04, 0x81, 0x05, 0x83, 0x05, 0x69, 0x04, 0xb4, 0x04, 0xd2, 0x06, 0x6c, 0x08, + 0xfd, 0x09, 0x5d, 0x0b, 0x87, 0x0a, 0x8e, 0x08, 0x01, 0x06, 0xf7, 0x02, 0xbb, 0x02, 0x61, 0x02, + 0x36, 0x03, 0x12, 0x03, 0x5c, 0x03, 0x69, 0x02, 0xbd, 0xff, 0xf5, 0xfd, 0x1a, 0xfc, 0x2d, 0xfb, + 0x91, 0xfa, 0x9d, 0xfa, 0x76, 0xfb, 0x05, 0xfc, 0x58, 0xfc, 0x0f, 0xfc, 0x86, 0xfc, 0x75, 0xfc, + 0xf4, 0xfc, 0x89, 0xfd, 0x15, 0xfc, 0x1d, 0xfa, 0xda, 0xf7, 0xc5, 0xf7, 0x6f, 0xf8, 0xac, 0xf9, + 0x73, 0xfb, 0x6d, 0xfd, 0xc2, 0x01, 0x51, 0x04, 0x3a, 0x05, 0x07, 0x06, 0x41, 0x06, 0x19, 0x06, + 0x9a, 0x06, 0x23, 0x08, 0xed, 0x08, 0x91, 0x09, 0xfc, 0x09, 0x5f, 0x07, 0xee, 0x04, 0xe8, 0x02, + 0xa0, 0x01, 0xf4, 0x00, 0x66, 0x01, 0x17, 0x02, 0xcb, 0x01, 0x9a, 0x01, 0xbb, 0x02, 0x2f, 0x03, + 0x17, 0x03, 0xa3, 0x01, 0x04, 0x00, 0x51, 0xfe, 0x78, 0xfd, 0xa2, 0xfd, 0x85, 0xfe, 0x95, 0xff, + 0xfa, 0x00, 0xa7, 0x01, 0x15, 0x02, 0xda, 0x03, 0x8c, 0x05, 0x91, 0x05, 0xca, 0x04, 0x3d, 0x05, + 0xc5, 0x05, 0x9c, 0x07, 0x3c, 0x09, 0xf9, 0x08, 0xe0, 0x07, 0x45, 0x07, 0x0a, 0x06, 0x5d, 0x04, + 0x12, 0x03, 0x43, 0x01, 0xe4, 0xff, 0x88, 0x00, 0x9d, 0x00, 0xc1, 0xff, 0x53, 0x00, 0xb1, 0x01, + 0x80, 0x01, 0x4d, 0xff, 0xb8, 0xfc, 0xf6, 0xf8, 0x5a, 0xf6, 0x58, 0xf4, 0xba, 0xf2, 0x6a, 0xf1, + 0x42, 0xf1, 0x13, 0xf2, 0xfe, 0xf3, 0x7c, 0xf5, 0xde, 0xf6, 0x4d, 0xf7, 0x97, 0xf8, 0x91, 0xf9, + 0x02, 0xfc, 0x00, 0xfe, 0x2f, 0xff, 0x7b, 0x01, 0x55, 0x02, 0x28, 0x02, 0x42, 0x02, 0xeb, 0x02, + 0x5a, 0x02, 0xdc, 0x00, 0x97, 0x00, 0x6f, 0x01, 0x83, 0x03, 0xde, 0x04, 0x71, 0x04, 0x77, 0x05, + 0xa3, 0x06, 0xd8, 0x07, 0xf4, 0x07, 0x41, 0x08, 0x3a, 0x07, 0xfa, 0x05, 0xf1, 0x05, 0xb2, 0x05, + 0x40, 0x06, 0x35, 0x07, 0xe5, 0x07, 0x9f, 0x07, 0xbe, 0x06, 0xa2, 0x03, 0x92, 0xff, 0x40, 0xfe, + 0x5a, 0xfe, 0x85, 0xfe, 0xfa, 0xfd, 0x0a, 0xfd, 0xe6, 0xfd, 0x6d, 0xfd, 0x64, 0xfb, 0xfc, 0xf8, + 0xcb, 0xf7, 0x1d, 0xf6, 0x98, 0xf5, 0x7a, 0xf6, 0xe7, 0xf6, 0xc5, 0xf6, 0xa7, 0xf6, 0x65, 0xf7, + 0x81, 0xf8, 0x98, 0xfa, 0x9d, 0xfb, 0xbc, 0xfb, 0x52, 0xfa, 0x3b, 0xf9, 0x99, 0xf9, 0x44, 0xfb, + 0xaa, 0xfc, 0x95, 0xfe, 0x4a, 0x01, 0xb9, 0x05, 0x1a, 0x09, 0x4a, 0x0c, 0x3c, 0x0c, 0xfc, 0x0b, + 0x79, 0x0c, 0xc5, 0x0c, 0xd8, 0x0d, 0xab, 0x0e, 0x05, 0x10, 0x72, 0x0f, 0xf1, 0x0c, 0xb3, 0x09, + 0xd1, 0x05, 0x15, 0x03, 0x4e, 0x01, 0x05, 0x01, 0x85, 0x00, 0x9f, 0xfe, 0x82, 0xfc, 0xd0, 0xfa, + 0x0b, 0xfa, 0xf1, 0xf7, 0x1a, 0xf6, 0x06, 0xf3, 0x5c, 0xf0, 0x02, 0xef, 0xd2, 0xed, 0xf3, 0xed, + 0x66, 0xed, 0x6a, 0xed, 0xdb, 0xee, 0x38, 0xf1, 0x80, 0xf4, 0x87, 0xf7, 0xcd, 0xf8, 0xad, 0xf8, + 0xb4, 0xf9, 0x5b, 0xfc, 0xf9, 0xfe, 0x63, 0x01, 0x2f, 0x03, 0x36, 0x06, 0xe2, 0x07, 0xd8, 0x08, + 0x9a, 0x09, 0x0a, 0x0a, 0xce, 0x09, 0x0e, 0x0b, 0x91, 0x0c, 0xa7, 0x0d, 0xbd, 0x0e, 0x4b, 0x10, + 0x77, 0x12, 0xb1, 0x13, 0x58, 0x13, 0x4d, 0x10, 0x01, 0x0c, 0x27, 0x09, 0x67, 0x06, 0x5a, 0x03, + 0xac, 0x00, 0x69, 0xff, 0xfa, 0xfe, 0x66, 0xfe, 0xaa, 0xfe, 0x79, 0xfe, 0x46, 0xfd, 0x5a, 0xfc, + 0x5e, 0xfd, 0x9b, 0xfe, 0x73, 0xff, 0x18, 0x00, 0x2d, 0x00, 0x98, 0x00, 0xc7, 0xff, 0x26, 0xff, + 0xf9, 0xfe, 0xc1, 0xfd, 0x3d, 0xfb, 0x59, 0xf9, 0x51, 0xfa, 0x4d, 0xfc, 0x4a, 0xfb, 0x2b, 0xfb, + 0xee, 0xfb, 0xd0, 0xfd, 0x7e, 0xff, 0x58, 0x00, 0xb2, 0xff, 0xb4, 0xfe, 0xb9, 0xfd, 0xf5, 0xfc, + 0x5a, 0xfc, 0x02, 0xfc, 0xb1, 0xfc, 0xc5, 0xfe, 0xb8, 0xff, 0x2c, 0x00, 0x5f, 0xfe, 0x39, 0xfb, + 0xce, 0xfa, 0x9f, 0xfb, 0x70, 0xfc, 0x76, 0xfc, 0x73, 0xfd, 0x0c, 0xff, 0x6a, 0xff, 0x8e, 0xff, + 0x67, 0xfe, 0x3f, 0xfc, 0xe5, 0xfa, 0xa6, 0xfa, 0x22, 0xfb, 0x36, 0xfc, 0x5f, 0xfd, 0x4b, 0xfd, + 0x56, 0xfe, 0x7c, 0xff, 0xc6, 0x01, 0x09, 0x04, 0xbd, 0x03, 0x2a, 0x02, 0x84, 0x00, 0xc9, 0x00, + 0x36, 0x00, 0xc6, 0xff, 0x72, 0x00, 0x68, 0x01, 0xf9, 0x02, 0xf5, 0x05, 0x23, 0x07, 0xe1, 0x06, + 0xc1, 0x05, 0xb7, 0x04, 0xc2, 0x04, 0xff, 0x04, 0x2f, 0x04, 0xd0, 0x04, 0xd5, 0x05, 0xfb, 0x04, + 0xb5, 0x02, 0x0c, 0xff, 0xa3, 0xfb, 0xda, 0xf9, 0xb0, 0xf9, 0x5e, 0xf9, 0xea, 0xf8, 0x42, 0xf7, + 0x59, 0xf6, 0xdb, 0xf6, 0x94, 0xf7, 0x6d, 0xf7, 0x9d, 0xf5, 0x0c, 0xf5, 0x8d, 0xf5, 0x50, 0xf6, + 0x10, 0xf8, 0x1f, 0xf8, 0x23, 0xf9, 0x6f, 0xfa, 0xb3, 0xfc, 0xb9, 0x00, 0xc2, 0x04, 0xea, 0x05, + 0xf7, 0x03, 0x9e, 0x04, 0x61, 0x05, 0x74, 0x06, 0x96, 0x07, 0xab, 0x09, 0x56, 0x0b, 0x1e, 0x0c, + 0xed, 0x0c, 0x95, 0x0b, 0x1b, 0x0a, 0x04, 0x09, 0xcc, 0x07, 0xc7, 0x08, 0x73, 0x08, 0x5a, 0x08, + 0xb3, 0x08, 0x22, 0x09, 0x4c, 0x09, 0x22, 0x08, 0x8e, 0x05, 0x8b, 0x01, 0x76, 0xfe, 0x26, 0xfb, + 0xc2, 0xf8, 0x62, 0xf6, 0x99, 0xf3, 0x5e, 0xf2, 0x84, 0xf2, 0x62, 0xf3, 0x6c, 0xf4, 0x35, 0xf4, + 0x5a, 0xf4, 0xbd, 0xf4, 0x0c, 0xf6, 0x20, 0xf8, 0x95, 0xf8, 0x59, 0xf8, 0x2a, 0xf9, 0x49, 0xf9, + 0xd3, 0xfa, 0x21, 0xfc, 0x44, 0xfb, 0xde, 0xfa, 0x7b, 0xfb, 0x62, 0xfd, 0x66, 0xff, 0x38, 0x01, + 0xaf, 0x02, 0xf0, 0x03, 0xde, 0x06, 0xb7, 0x0a, 0x93, 0x0c, 0x06, 0x0d, 0xc9, 0x0c, 0x52, 0x0c, + 0xe9, 0x0b, 0xc9, 0x0a, 0xb9, 0x09, 0x19, 0x0b, 0xe3, 0x0c, 0x4e, 0x0e, 0xc3, 0x0e, 0x96, 0x0c, + 0xb6, 0x09, 0x2c, 0x07, 0x35, 0x07, 0x1b, 0x07, 0xc5, 0x06, 0xcd, 0x05, 0x88, 0x05, 0xb3, 0x05, + 0x6c, 0x04, 0x0d, 0x01, 0x91, 0xfd, 0x2d, 0xfa, 0xc9, 0xf7, 0x8c, 0xf6, 0xbe, 0xf7, 0x25, 0xf7, + 0xc7, 0xf5, 0x94, 0xf4, 0x4c, 0xf4, 0x11, 0xf7, 0x67, 0xf9, 0x3a, 0xf9, 0x94, 0xf8, 0xdd, 0xf7, + 0x7b, 0xf7, 0x77, 0xf7, 0xfc, 0xf6, 0x68, 0xf6, 0x98, 0xf6, 0x42, 0xf9, 0x3b, 0xfd, 0x50, 0x00, + 0xda, 0x01, 0xac, 0x02, 0xe3, 0x03, 0xa5, 0x05, 0x75, 0x06, 0x5a, 0x07, 0x79, 0x09, 0xf1, 0x0a, + 0xf8, 0x0b, 0x8d, 0x0b, 0xb6, 0x08, 0xd2, 0x05, 0x88, 0x03, 0xba, 0x02, 0x3b, 0x02, 0xcc, 0x00, + 0x14, 0xff, 0xda, 0xfd, 0x2c, 0xfe, 0xba, 0xfd, 0xe6, 0xfc, 0x8c, 0xfa, 0xd7, 0xf7, 0x13, 0xf6, + 0x49, 0xf6, 0xf2, 0xf6, 0x6f, 0xf6, 0x9a, 0xf5, 0x41, 0xf5, 0x76, 0xf6, 0xb7, 0xf9, 0x53, 0xfc, + 0xf4, 0xfd, 0x76, 0xfd, 0x26, 0xfc, 0xa7, 0xfc, 0x92, 0xfe, 0xa3, 0xff, 0x74, 0x00, 0xe9, 0x01, + 0xd5, 0x03, 0xbc, 0x05, 0x84, 0x05, 0x58, 0x05, 0x84, 0x04, 0xe8, 0x03, 0x63, 0x04, 0x69, 0x04, + 0x9c, 0x04, 0xa4, 0x04, 0x66, 0x05, 0xd0, 0x06, 0x24, 0x07, 0x77, 0x05, 0xd8, 0x02, 0xc7, 0x00, + 0x2b, 0xff, 0xca, 0xfd, 0x6a, 0xfb, 0x7e, 0xf9, 0x15, 0xf9, 0xcf, 0xf8, 0x53, 0xfa, 0xdf, 0xfb, + 0x71, 0xfd, 0x14, 0xfd, 0x7b, 0xfd, 0x36, 0xff, 0x0c, 0x01, 0xc7, 0x01, 0x25, 0x01, 0x74, 0x01, + 0xcb, 0x02, 0x4c, 0x04, 0xdc, 0x04, 0x20, 0x03, 0xa4, 0x01, 0x72, 0x00, 0x74, 0x01, 0x5f, 0x03, + 0x3b, 0x04, 0x4e, 0x04, 0x4f, 0x04, 0x2a, 0x06, 0x83, 0x07, 0xfe, 0x07, 0xae, 0x07, 0x4d, 0x06, + 0x99, 0x04, 0xf7, 0x02, 0x1b, 0x01, 0x78, 0xff, 0xc2, 0xfe, 0x2c, 0xff, 0x81, 0x00, 0xcd, 0x00, + 0x10, 0x00, 0xa0, 0xfe, 0xa8, 0xfb, 0x5b, 0xfb, 0xda, 0xfb, 0x5c, 0xfb, 0xe3, 0xfa, 0x91, 0xfa, + 0x1b, 0xfb, 0x78, 0xfb, 0x1c, 0xfb, 0x1b, 0xf8, 0x4c, 0xf5, 0x27, 0xf4, 0xe0, 0xf4, 0xc1, 0xf6, + 0xf7, 0xf7, 0xf8, 0xf7, 0x80, 0xf7, 0xef, 0xf8, 0x0f, 0xfc, 0x99, 0xff, 0x76, 0x02, 0x05, 0x03, + 0x5a, 0x03, 0xbd, 0x03, 0x00, 0x04, 0x95, 0x02, 0x12, 0x01, 0xb4, 0x01, 0x66, 0x03, 0x98, 0x06, + 0xf8, 0x08, 0x02, 0x0b, 0xf9, 0x0a, 0xb1, 0x0a, 0x77, 0x0b, 0x08, 0x0c, 0xe0, 0x0b, 0xce, 0x0c, + 0xd6, 0x0e, 0x13, 0x10, 0x00, 0x0e, 0xfb, 0x0a, 0xd7, 0x06, 0x40, 0x03, 0xfb, 0x00, 0x28, 0xff, + 0x7d, 0xfd, 0xa3, 0xfb, 0x14, 0xfa, 0xb6, 0xf8, 0xb4, 0xf8, 0x0d, 0xf8, 0x46, 0xf6, 0xed, 0xf3, + 0x01, 0xf3, 0x2e, 0xf3, 0xd5, 0xf4, 0x9f, 0xf4, 0x20, 0xf3, 0x66, 0xf2, 0x76, 0xf3, 0xd0, 0xf5, + 0xed, 0xf8, 0xd6, 0xfa, 0xb1, 0xfa, 0xea, 0xfa, 0x3e, 0xfc, 0x72, 0xfe, 0xec, 0xff, 0x3c, 0x01, + 0x3f, 0x03, 0x1f, 0x06, 0xe2, 0x08, 0x64, 0x0a, 0x9a, 0x0a, 0xb5, 0x0a, 0x57, 0x0a, 0xeb, 0x0a, + 0xa6, 0x0a, 0xc5, 0x09, 0x73, 0x09, 0x92, 0x0a, 0x62, 0x0b, 0xb7, 0x0b, 0x97, 0x0a, 0x15, 0x08, + 0x37, 0x05, 0x0c, 0x03, 0xb4, 0x00, 0x13, 0xfe, 0xd3, 0xfa, 0xa3, 0xf8, 0x53, 0xf8, 0x58, 0xf8, + 0x51, 0xf8, 0xd8, 0xf7, 0x16, 0xf7, 0xe2, 0xf5, 0xb1, 0xf5, 0xfd, 0xf6, 0x57, 0xf7, 0x3f, 0xf5, + 0xda, 0xf4, 0xb3, 0xf5, 0xa3, 0xf6, 0xd5, 0xf7, 0x1f, 0xf7, 0x15, 0xf6, 0xdb, 0xf5, 0x58, 0xf7, + 0xde, 0xf9, 0xdb, 0xfb, 0xb8, 0xfc, 0x9e, 0xfd, 0x2a, 0xff, 0x62, 0x02, 0xe6, 0x04, 0x46, 0x06, + 0x7e, 0x06, 0xdb, 0x06, 0x19, 0x07, 0x47, 0x07, 0xf5, 0x05, 0xc2, 0x06, 0x07, 0x08, 0xcb, 0x09, + 0x05, 0x0b, 0x0e, 0x0c, 0xf5, 0x0b, 0x69, 0x0a, 0x28, 0x0a, 0x0d, 0x0a, 0x58, 0x09, 0xa1, 0x07, + 0x69, 0x06, 0x6f, 0x07, 0x05, 0x08, 0x39, 0x07, 0x62, 0x04, 0x62, 0x00, 0x7c, 0xfd, 0x05, 0xfc, + 0x8a, 0xfd, 0x54, 0xfd, 0xf0, 0xfb, 0x7f, 0xfb, 0x34, 0xfc, 0x8b, 0xfd, 0x59, 0xff, 0x51, 0x00, + 0x45, 0x00, 0x34, 0x00, 0x45, 0xff, 0x84, 0xfe, 0x9f, 0xfc, 0x35, 0xfa, 0x47, 0xf9, 0x6b, 0xf9, + 0x18, 0xfb, 0x4e, 0xfd, 0x3f, 0xff, 0xa0, 0x00, 0xc9, 0x00, 0xe2, 0x01, 0x64, 0x02, 0xb4, 0x02, + 0x90, 0x03, 0xf7, 0x04, 0xdc, 0x05, 0x10, 0x06, 0xb2, 0x03, 0xa0, 0xff, 0x6a, 0xfc, 0x67, 0xfa, + 0xd6, 0xf9, 0x73, 0xf9, 0x93, 0xf8, 0x65, 0xf8, 0xb7, 0xf8, 0x35, 0xf9, 0x72, 0xf9, 0xc3, 0xf9, + 0xb2, 0xf8, 0xd9, 0xf7, 0x94, 0xf9, 0x1c, 0xfc, 0xc2, 0xfb, 0x14, 0xf9, 0xbb, 0xf8, 0x4e, 0xf9, + 0x3a, 0xfb, 0x0c, 0xff, 0x94, 0x01, 0xec, 0x02, 0x26, 0x03, 0x52, 0x03, 0x4d, 0x05, 0x63, 0x06, + 0xe8, 0x06, 0xa5, 0x08, 0x86, 0x0b, 0x02, 0x0e, 0x46, 0x0e, 0xa9, 0x0d, 0x8b, 0x0c, 0x47, 0x0b, + 0x00, 0x09, 0x69, 0x07, 0xc4, 0x05, 0x3b, 0x05, 0xc6, 0x04, 0x56, 0x04, 0x27, 0x04, 0x6d, 0x02, + 0xa8, 0x00, 0xe7, 0xfe, 0x7e, 0xfc, 0xf7, 0xfa, 0x9b, 0xf8, 0x91, 0xf5, 0xf4, 0xf3, 0x14, 0xf3, + 0x98, 0xf2, 0x26, 0xf3, 0xf3, 0xf3, 0x35, 0xf3, 0xc2, 0xf2, 0xe9, 0xf3, 0xd5, 0xf6, 0x10, 0xf8, + 0x64, 0xf8, 0xd1, 0xf9, 0xe1, 0xfb, 0xca, 0xfd, 0xb0, 0xff, 0xf7, 0xff, 0xaa, 0xff, 0x0e, 0x00, + 0xaa, 0x01, 0x1d, 0x04, 0x54, 0x05, 0x88, 0x05, 0xf1, 0x05, 0x8c, 0x06, 0xa1, 0x08, 0xe0, 0x09, + 0x65, 0x0a, 0x0c, 0x0b, 0xce, 0x09, 0xa8, 0x08, 0xd1, 0x06, 0x46, 0x04, 0x38, 0x03, 0x69, 0x03, + 0xa1, 0x04, 0xa5, 0x05, 0xeb, 0x04, 0x97, 0x04, 0x76, 0x03, 0x9e, 0x01, 0x2b, 0x00, 0x8c, 0xfe, + 0x4c, 0xfc, 0x83, 0xfb, 0x94, 0xfb, 0xd3, 0xfb, 0x45, 0xfc, 0xe0, 0xf9, 0xa7, 0xf6, 0x1e, 0xf4, + 0x29, 0xf4, 0x31, 0xf5, 0x94, 0xf5, 0x6b, 0xf5, 0x89, 0xf5, 0x79, 0xf5, 0xb0, 0xf6, 0xc7, 0xf8, + 0xcc, 0xfa, 0xbb, 0xfb, 0xb7, 0xfc, 0x57, 0xfd, 0x64, 0xfe, 0xb9, 0xfd, 0xd0, 0xfc, 0x54, 0xfd, + 0xf3, 0xfd, 0xcc, 0xff, 0xbf, 0x01, 0xb2, 0x04, 0xd7, 0x07, 0x73, 0x09, 0x3a, 0x0b, 0xd0, 0x0c, + 0xb2, 0x0d, 0x74, 0x0e, 0x6d, 0x0f, 0x94, 0x11, 0x3b, 0x12, 0x9f, 0x10, 0x05, 0x0e, 0xda, 0x0a, + 0xc1, 0x07, 0x0b, 0x06, 0x5f, 0x04, 0x94, 0x02, 0xde, 0x01, 0x46, 0x01, 0xcb, 0x01, 0x07, 0x02, + 0x29, 0x00, 0xa8, 0xfd, 0x68, 0xfc, 0x4c, 0xfc, 0xc0, 0xfc, 0x10, 0xfb, 0x3b, 0xf8, 0xd8, 0xf5, + 0x5e, 0xf5, 0x64, 0xf5, 0x97, 0xf6, 0xab, 0xf7, 0x0c, 0xf9, 0x3c, 0xf9, 0x08, 0xfa, 0xe3, 0xfa, + 0x9c, 0xfb, 0xda, 0xfc, 0x16, 0xfe, 0xf2, 0xff, 0x7a, 0x02, 0x32, 0x04, 0xa4, 0x04, 0xf0, 0x04, + 0x17, 0x04, 0x1a, 0x03, 0xb0, 0x02, 0xe9, 0x01, 0xbb, 0x02, 0x56, 0x04, 0xf3, 0x05, 0xaa, 0x06, + 0x04, 0x06, 0x09, 0x06, 0xf8, 0x04, 0x7b, 0x04, 0x35, 0x04, 0xaa, 0x02, 0x5d, 0x00, 0x42, 0xfd, + 0x4c, 0xfb, 0x90, 0xfa, 0x74, 0xfa, 0x48, 0xf9, 0xa6, 0xf8, 0xce, 0xf8, 0x10, 0xf9, 0x1c, 0xfa, + 0x94, 0xfa, 0x59, 0xf9, 0xb5, 0xf8, 0x8a, 0xf9, 0xcd, 0xfb, 0x12, 0xfd, 0x20, 0xfd, 0xea, 0xfb, + 0xc9, 0xfb, 0x3e, 0xfc, 0xc9, 0xfc, 0x53, 0xfd, 0x8e, 0xfd, 0x32, 0xfe, 0x1a, 0xff, 0x61, 0x00, + 0xc2, 0x01, 0xb9, 0x02, 0x37, 0x04, 0x8d, 0x04, 0x68, 0x04, 0x1a, 0x04, 0xb8, 0x02, 0x51, 0x02, + 0xa8, 0x02, 0x55, 0x03, 0x74, 0x03, 0x7c, 0x03, 0xc7, 0x03, 0xfd, 0x02, 0x7d, 0x01, 0x7c, 0x00, + 0xe7, 0xfe, 0x94, 0xfd, 0x23, 0xfd, 0xc9, 0xfd, 0x0e, 0x00, 0xde, 0x00, 0x23, 0xff, 0x90, 0xfc, + 0xbd, 0xfa, 0x58, 0xfa, 0x67, 0xfb, 0xe5, 0xfc, 0x8e, 0xfd, 0x4f, 0xfd, 0x0c, 0xfe, 0x72, 0xfe, + 0xe4, 0xff, 0x05, 0x01, 0xb4, 0x02, 0x55, 0x04, 0x3e, 0x05, 0x61, 0x05, 0x51, 0x04, 0x8d, 0x02, + 0x73, 0x00, 0x9e, 0x00, 0xc6, 0x01, 0x8b, 0x02, 0x81, 0x04, 0xbe, 0x06, 0xdf, 0x07, 0x25, 0x08, + 0x01, 0x08, 0x0f, 0x07, 0x27, 0x06, 0xc3, 0x06, 0x07, 0x07, 0x4f, 0x07, 0x7f, 0x05, 0x11, 0x02, + 0x1b, 0xfe, 0xc8, 0xfa, 0x74, 0xf8, 0x59, 0xf6, 0x2e, 0xf5, 0x25, 0xf5, 0x25, 0xf5, 0x3a, 0xf6, + 0x5b, 0xf6, 0xa3, 0xf5, 0xd7, 0xf4, 0x12, 0xf4, 0x03, 0xf5, 0x3a, 0xf6, 0x9a, 0xf6, 0xcd, 0xf4, + 0x01, 0xf4, 0x8e, 0xf5, 0xbc, 0xf6, 0x9a, 0xf8, 0x1c, 0xfb, 0xd8, 0xfd, 0xe6, 0x00, 0xdf, 0x02, + 0x43, 0x05, 0xa4, 0x07, 0x66, 0x09, 0x5d, 0x0a, 0x87, 0x0c, 0x23, 0x0f, 0x9d, 0x10, 0xad, 0x11, + 0xce, 0x11, 0x32, 0x11, 0x8a, 0x0f, 0xc0, 0x0d, 0xfe, 0x0b, 0x18, 0x0b, 0x5c, 0x0a, 0xa9, 0x0a, + 0xf6, 0x0a, 0x77, 0x0a, 0x2c, 0x09, 0x30, 0x08, 0x95, 0x06, 0xfe, 0x04, 0x17, 0x03, 0xba, 0xff, + 0x83, 0xfb, 0x39, 0xf9, 0x08, 0xf8, 0xd0, 0xf6, 0x79, 0xf4, 0x74, 0xf3, 0x0f, 0xf3, 0xaa, 0xf3, + 0x62, 0xf5, 0xf6, 0xf5, 0x7b, 0xf6, 0x26, 0xf7, 0xe9, 0xf8, 0x6b, 0xfa, 0x3a, 0xfb, 0xb4, 0xfb, + 0xed, 0xfa, 0x84, 0xfa, 0x37, 0xfa, 0x79, 0xfa, 0xd4, 0xfa, 0xc7, 0xfa, 0x63, 0xfc, 0x29, 0xfe, + 0xda, 0xff, 0xb8, 0x01, 0x3d, 0x03, 0x3c, 0x05, 0x7c, 0x06, 0xff, 0x06, 0xe0, 0x06, 0x41, 0x07, + 0xf7, 0x06, 0xe9, 0x06, 0xa9, 0x07, 0x11, 0x08, 0xa6, 0x07, 0x6d, 0x07, 0x0e, 0x08, 0x69, 0x07, + 0xad, 0x05, 0xe5, 0x04, 0xbe, 0x02, 0xb8, 0x00, 0xd0, 0xff, 0x39, 0x01, 0x69, 0x02, 0x41, 0x01, + 0x2f, 0xff, 0xb8, 0xfc, 0x19, 0xfb, 0x49, 0xfa, 0xa7, 0xf9, 0x12, 0xf8, 0xac, 0xf6, 0x7b, 0xf6, + 0x0c, 0xf6, 0xd9, 0xf5, 0xf3, 0xf5, 0x89, 0xf6, 0xd2, 0xf7, 0x2c, 0xf9, 0x09, 0xfa, 0x8e, 0xf9, + 0x8f, 0xf8, 0x3b, 0xf8, 0xcb, 0xf8, 0x1e, 0xf9, 0x85, 0xfa, 0x2e, 0xfc, 0xb3, 0xfe, 0x11, 0x01, + 0x13, 0x02, 0x4d, 0x03, 0x55, 0x03, 0x13, 0x04, 0x4b, 0x05, 0x42, 0x07, 0xad, 0x09, 0x2b, 0x0a, + 0x48, 0x09, 0x50, 0x07, 0x66, 0x04, 0x6f, 0x02, 0x2c, 0x01, 0x6b, 0x01, 0x27, 0x01, 0x0d, 0x02, + 0xa6, 0x02, 0xbe, 0x02, 0x86, 0x01, 0xd9, 0xff, 0xc9, 0xff, 0x6d, 0xff, 0xe9, 0xff, 0xb6, 0xff, + 0x96, 0xfd, 0x7b, 0xfb, 0x91, 0xfa, 0x72, 0xfa, 0x80, 0xfa, 0x64, 0xfb, 0x78, 0xfd, 0x72, 0xff, + 0x3b, 0x01, 0x27, 0x02, 0x8c, 0x02, 0x8d, 0x02, 0xe3, 0x02, 0xae, 0x03, 0x24, 0x05, 0x04, 0x07, + 0xa7, 0x07, 0x95, 0x07, 0x1f, 0x07, 0x48, 0x05, 0xc7, 0x03, 0x24, 0x02, 0xa6, 0x01, 0xbe, 0x02, + 0x73, 0x03, 0x8d, 0x03, 0xcd, 0x02, 0x3c, 0x02, 0x37, 0x01, 0x18, 0x00, 0x93, 0xff, 0xd7, 0xfd, + 0x1a, 0xfa, 0x15, 0xf7, 0x4c, 0xf5, 0xed, 0xf4, 0xcf, 0xf4, 0xaf, 0xf3, 0xf3, 0xf2, 0x0c, 0xf4, + 0x39, 0xf5, 0x75, 0xf6, 0x1c, 0xf8, 0x7e, 0xf9, 0x35, 0xfb, 0x46, 0xfd, 0x62, 0xff, 0x4f, 0x01, + 0x51, 0x02, 0xe8, 0x02, 0x6f, 0x03, 0x8c, 0x03, 0xf7, 0x03, 0xfa, 0x03, 0x4f, 0x05, 0xf7, 0x05, + 0xec, 0x06, 0x1f, 0x08, 0x72, 0x09, 0x39, 0x0b, 0x2b, 0x0d, 0xd3, 0x0d, 0xac, 0x0d, 0x39, 0x0d, + 0xe6, 0x0b, 0xd7, 0x09, 0x09, 0x09, 0x9d, 0x07, 0x5f, 0x06, 0x19, 0x05, 0xbf, 0x03, 0x29, 0x03, + 0x98, 0x01, 0x8f, 0x00, 0x2c, 0xfe, 0x4e, 0xfb, 0x16, 0xfa, 0xb9, 0xf9, 0xff, 0xfa, 0x06, 0xfc, + 0x6a, 0xfb, 0x31, 0xfa, 0x93, 0xf8, 0xc5, 0xf7, 0x1e, 0xf7, 0x7c, 0xf6, 0x64, 0xf5, 0x61, 0xf5, + 0x3e, 0xf6, 0xed, 0xf6, 0x4b, 0xf8, 0x19, 0xf9, 0x1e, 0xfb, 0xa8, 0xfd, 0xcb, 0xff, 0xec, 0x00, + 0xac, 0x01, 0xa3, 0x02, 0x87, 0x02, 0x6a, 0x02, 0x86, 0x03, 0x7d, 0x03, 0xac, 0x04, 0xa3, 0x06, + 0x55, 0x08, 0xce, 0x08, 0x2a, 0x09, 0x10, 0x09, 0x34, 0x09, 0x83, 0x09, 0x08, 0x09, 0x6b, 0x09, + 0x9d, 0x09, 0xeb, 0x08, 0xba, 0x06, 0x98, 0x03, 0xee, 0x00, 0x60, 0xfe, 0xaf, 0xfb, 0xd2, 0xfa, + 0xcc, 0xfa, 0x5e, 0xfa, 0xe6, 0xf9, 0x31, 0xf8, 0xdc, 0xf6, 0x39, 0xf6, 0x98, 0xf5, 0x33, 0xf6, + 0x14, 0xf5, 0x80, 0xf3, 0xd4, 0xf2, 0x13, 0xf3, 0x14, 0xf4, 0x23, 0xf4, 0x62, 0xf5, 0x18, 0xf7, + 0xc2, 0xf9, 0x63, 0xfc, 0xbc, 0xfd, 0x87, 0xfe, 0x1c, 0xff, 0xc3, 0xff, 0x50, 0x00, 0x9d, 0x02, + 0x90, 0x05, 0xa3, 0x07, 0xd3, 0x09, 0x99, 0x09, 0x3a, 0x09, 0x8b, 0x07, 0xc2, 0x06, 0x99, 0x07, + 0xc0, 0x08, 0x11, 0x0a, 0x9f, 0x0a, 0x27, 0x0b, 0x75, 0x0a, 0xdd, 0x09, 0xeb, 0x09, 0x6d, 0x09, + 0x06, 0x08, 0xb1, 0x05, 0x25, 0x03, 0x93, 0x00, 0xcb, 0xfe, 0x22, 0xfd, 0x6c, 0xfa, 0xe2, 0xf9, + 0xce, 0xf9, 0x83, 0xfa, 0x8c, 0xfb, 0x3b, 0xfb, 0x1d, 0xfb, 0x99, 0xfb, 0x01, 0xfc, 0x69, 0xfc, + 0xf5, 0xfc, 0x47, 0xfd, 0x60, 0xfd, 0xbc, 0xfc, 0xd9, 0xfb, 0x4b, 0xfa, 0x7e, 0xf9, 0xad, 0xf9, + 0x92, 0xfa, 0xda, 0xfb, 0xfe, 0xfc, 0x8c, 0xfe, 0xb6, 0x00, 0x9e, 0x02, 0xc5, 0x03, 0x97, 0x04, + 0xa7, 0x04, 0xaa, 0x03, 0x8b, 0x03, 0x97, 0x02, 0x8c, 0x01, 0x0f, 0x02, 0xc7, 0x01, 0xf0, 0x01, + 0xd8, 0x02, 0x06, 0x04, 0xef, 0x03, 0x0e, 0x02, 0xc0, 0x00, 0x72, 0x00, 0xf0, 0x00, 0xf9, 0x01, + 0x18, 0x03, 0x6e, 0x03, 0x84, 0x02, 0x17, 0x02, 0xe5, 0x00, 0x91, 0xff, 0xf7, 0xfd, 0x58, 0xfc, + 0x01, 0xfc, 0x0f, 0xfc, 0xba, 0xfb, 0xcf, 0xfa, 0x8c, 0xfa, 0x30, 0xfc, 0xb2, 0xfd, 0xb6, 0xff, + 0xf4, 0x00, 0x50, 0x01, 0xb9, 0x01, 0xb4, 0x00, 0x47, 0x00, 0xa0, 0xff, 0xbc, 0xff, 0x55, 0x00, + 0x0d, 0x01, 0x18, 0x02, 0xa6, 0x02, 0x32, 0x02, 0xa1, 0x01, 0xb3, 0x01, 0xc0, 0x02, 0x1f, 0x03, + 0x60, 0x04, 0xd3, 0x05, 0xf9, 0x05, 0xb4, 0x04, 0xca, 0x02, 0xb4, 0x00, 0x76, 0xfd, 0xe4, 0xfa, + 0x09, 0xfa, 0xf0, 0xf9, 0xb5, 0xf9, 0xb8, 0xf9, 0x02, 0xf9, 0x98, 0xf8, 0x95, 0xf9, 0xa8, 0xfa, + 0xe7, 0xfa, 0xd2, 0xfa, 0x0f, 0xfa, 0x24, 0xfa, 0xb2, 0xfa, 0xc1, 0xfb, 0x33, 0xfc, 0xb9, 0xfc, + 0x13, 0xff, 0x04, 0x02, 0xa7, 0x04, 0xe5, 0x05, 0x7c, 0x06, 0x80, 0x07, 0x0f, 0x08, 0x4e, 0x08, + 0xb3, 0x08, 0x76, 0x09, 0x65, 0x0b, 0xdb, 0x0c, 0xf3, 0x0c, 0xb9, 0x0b, 0x65, 0x09, 0x2b, 0x07, + 0xfe, 0x05, 0xdb, 0x05, 0x71, 0x05, 0x70, 0x04, 0x7e, 0x03, 0xd5, 0x01, 0x99, 0x00, 0xa2, 0xff, + 0x66, 0xfe, 0x73, 0xfc, 0xcf, 0xf8, 0x77, 0xf6, 0xd2, 0xf3, 0x67, 0xf2, 0xed, 0xf0, 0x7f, 0xef, + 0xa8, 0xee, 0xdf, 0xee, 0x71, 0xf0, 0x49, 0xf1, 0xd6, 0xf1, 0x92, 0xf2, 0x98, 0xf3, 0x72, 0xf5, + 0xc0, 0xf5, 0xe2, 0xf6, 0x47, 0xf8, 0x7b, 0xfa, 0xb4, 0xfc, 0xd3, 0xfd, 0xad, 0xfd, 0x13, 0xfd, + 0x85, 0xfe, 0xb7, 0x00, 0x04, 0x03, 0x87, 0x05, 0x83, 0x07, 0xde, 0x09, 0x5e, 0x0c, 0x43, 0x0e, + 0x03, 0x0f, 0x63, 0x0e, 0x65, 0x0e, 0xbd, 0x0d, 0x40, 0x0d, 0x7d, 0x0c, 0x75, 0x0b, 0x27, 0x0a, + 0x32, 0x09, 0x6d, 0x09, 0x1f, 0x0a, 0x14, 0x0a, 0x56, 0x08, 0xfd, 0x05, 0xb5, 0x04, 0x4d, 0x04, + 0x45, 0x03, 0x78, 0x02, 0x3f, 0x01, 0xa3, 0x00, 0x8e, 0xff, 0x03, 0xfe, 0x33, 0xfc, 0xa9, 0xf9, + 0x7b, 0xf6, 0xba, 0xf5, 0x69, 0xf6, 0x52, 0xf6, 0xb4, 0xf5, 0x54, 0xf6, 0x3b, 0xf7, 0xe2, 0xf8, + 0xf2, 0xfa, 0x76, 0xfb, 0x41, 0xfc, 0x04, 0xfd, 0x0a, 0xfd, 0x9e, 0xfb, 0x09, 0xfb, 0xbc, 0xfa, + 0xd1, 0xfa, 0xe5, 0xfc, 0x1e, 0xff, 0x86, 0x00, 0x1f, 0x01, 0x79, 0x01, 0xac, 0x02, 0xd2, 0x03, + 0xa5, 0x05, 0xdd, 0x06, 0x86, 0x08, 0xef, 0x09, 0x72, 0x0a, 0x4e, 0x0a, 0x31, 0x08, 0x74, 0x05, + 0x12, 0x02, 0xc7, 0x00, 0x5e, 0x01, 0x32, 0x01, 0xeb, 0xff, 0x19, 0xfe, 0x3d, 0xfd, 0x88, 0xfd, + 0xa8, 0xfd, 0xfd, 0xfd, 0x09, 0xfd, 0xce, 0xfb, 0x59, 0xfb, 0xea, 0xfa, 0xe8, 0xf9, 0xcb, 0xf8, + 0x1e, 0xf8, 0xb3, 0xf8, 0x96, 0xfa, 0x76, 0xfc, 0x37, 0xfd, 0xa2, 0xfd, 0xca, 0xfd, 0xda, 0xfd, + 0x3f, 0xfe, 0xc8, 0xfe, 0x6f, 0x00, 0x58, 0x03, 0x77, 0x06, 0xed, 0x07, 0x8d, 0x07, 0xfa, 0x05, + 0x58, 0x04, 0x8e, 0x03, 0x0b, 0x04, 0x2e, 0x04, 0x3f, 0x04, 0x73, 0x03, 0xee, 0x02, 0x30, 0x03, + 0xfe, 0x03, 0x52, 0x04, 0x16, 0x03, 0x26, 0x01, 0xa9, 0xff, 0xac, 0xfe, 0x83, 0xfd, 0x6d, 0xfc, + 0x6e, 0xfa, 0x04, 0xf9, 0xa0, 0xf9, 0x92, 0xfa, 0x28, 0xfb, 0x83, 0xfb, 0xc6, 0xfa, 0xd2, 0xfb, + 0x90, 0xfd, 0xcc, 0xfd, 0x37, 0xfd, 0x51, 0xfd, 0x04, 0xff, 0x92, 0x00, 0x6c, 0x01, 0xd0, 0x00, + 0xd2, 0xff, 0xba, 0xff, 0x56, 0x00, 0xb4, 0x01, 0xaf, 0x02, 0x23, 0x03, 0xbf, 0x04, 0x7c, 0x06, + 0x67, 0x07, 0xfc, 0x06, 0xa5, 0x06, 0x4b, 0x05, 0xd2, 0x03, 0xf2, 0x02, 0x45, 0x01, 0xc8, 0xff, + 0xd7, 0xfe, 0x44, 0xfe, 0xe5, 0xfe, 0x0b, 0x00, 0xa8, 0x00, 0x20, 0xff, 0x4f, 0xfd, 0x59, 0xfc, + 0xe4, 0xfb, 0x3b, 0xfb, 0xc6, 0xf9, 0xf9, 0xf8, 0xb8, 0xf8, 0xc2, 0xf9, 0x54, 0xfa, 0x3d, 0xfa, + 0xc0, 0xf8, 0x79, 0xf6, 0x4c, 0xf6, 0x5e, 0xf7, 0x8a, 0xf8, 0x10, 0xf9, 0x75, 0xf9, 0xce, 0xfb, + 0x81, 0xfe, 0xf8, 0x00, 0xd4, 0x02, 0x68, 0x04, 0x83, 0x05, 0x65, 0x06, 0xdd, 0x06, 0x38, 0x06, + 0x09, 0x05, 0xd0, 0x04, 0xdc, 0x05, 0xae, 0x06, 0x29, 0x08, 0x7a, 0x08, 0x66, 0x08, 0x81, 0x08, + 0xc3, 0x09, 0x44, 0x0a, 0xc5, 0x09, 0x7c, 0x09, 0xf8, 0x09, 0x31, 0x0a, 0x0d, 0x09, 0xc9, 0x06, + 0x8a, 0x03, 0x2e, 0xfe, 0x68, 0xfb, 0x53, 0xfa, 0x40, 0xf9, 0x3e, 0xf8, 0x93, 0xf6, 0x9e, 0xf6, + 0x24, 0xf7, 0x55, 0xf8, 0x9c, 0xf8, 0x50, 0xf8, 0xed, 0xf7, 0x37, 0xf8, 0x98, 0xf8, 0xc7, 0xf7, + 0x3c, 0xf7, 0x48, 0xf6, 0x1a, 0xf7, 0x75, 0xf9, 0x6f, 0xfc, 0x0c, 0xff, 0x21, 0x00, 0x3e, 0x01, + 0x39, 0x02, 0x2c, 0x03, 0x36, 0x04, 0x16, 0x05, 0x0c, 0x08, 0x3e, 0x0b, 0x82, 0x0d, 0xfe, 0x0d, + 0x83, 0x0d, 0xb1, 0x0b, 0xb6, 0x09, 0x6f, 0x09, 0x22, 0x0a, 0x7f, 0x09, 0xdb, 0x07, 0x92, 0x06, + 0xf9, 0x05, 0x78, 0x05, 0x3d, 0x05, 0xdd, 0x03, 0xd2, 0x01, 0x4c, 0x00, 0x22, 0xff, 0x5d, 0xfd, + 0x95, 0xfa, 0xab, 0xf7, 0x75, 0xf5, 0xec, 0xf4, 0xb1, 0xf4, 0x00, 0xf5, 0x71, 0xf4, 0x40, 0xf3, + 0xa0, 0xf3, 0x60, 0xf4, 0xeb, 0xf3, 0x33, 0xf3, 0xbe, 0xf3, 0x09, 0xf6, 0xee, 0xf8, 0x2b, 0xfb, + 0xa1, 0xfb, 0xfb, 0xfa, 0xaa, 0xfa, 0xf5, 0xfb, 0x8b, 0xfd, 0xca, 0xfe, 0x9f, 0xff, 0xdc, 0x00, + 0x61, 0x03, 0x60, 0x05, 0x44, 0x07, 0xdc, 0x07, 0xf4, 0x07, 0xe2, 0x07, 0xed, 0x07, 0x0b, 0x08, + 0xe6, 0x07, 0x17, 0x07, 0xfb, 0x06, 0xce, 0x07, 0x7e, 0x09, 0xe3, 0x0a, 0xcf, 0x0a, 0x07, 0x09, + 0x94, 0x07, 0x4e, 0x07, 0x2a, 0x07, 0x6b, 0x05, 0xfc, 0x02, 0x35, 0x02, 0x81, 0x02, 0x6f, 0x02, + 0xaa, 0x01, 0xfb, 0xff, 0x34, 0xfd, 0xe8, 0xfb, 0x24, 0xfc, 0x54, 0xfc, 0x0e, 0xfb, 0x74, 0xfa, + 0x02, 0xfb, 0xb3, 0xfb, 0xd2, 0xfc, 0x82, 0xfd, 0x2f, 0xfd, 0x44, 0xfd, 0xa5, 0xfd, 0x64, 0xfc, + 0x7a, 0xfa, 0x1a, 0xf9, 0x97, 0xf8, 0x8a, 0xf9, 0x50, 0xfb, 0x3c, 0xfd, 0xce, 0xfd, 0xd3, 0xfd, + 0xa7, 0xfe, 0x1e, 0x00, 0xfe, 0x01, 0xe5, 0x01, 0x6b, 0x01, 0xea, 0x01, 0x2b, 0x03, 0x36, 0x04, + 0x17, 0x04, 0x35, 0x02, 0x61, 0xff, 0x3a, 0xfd, 0x29, 0xfc, 0x77, 0xfc, 0x70, 0xfc, 0x4f, 0xfb, + 0xb4, 0xfb, 0x6d, 0xfd, 0xd9, 0xfe, 0x23, 0x00, 0xaf, 0x00, 0x54, 0x00, 0x1c, 0x00, 0x85, 0x00, + 0xd4, 0xff, 0x7d, 0xfe, 0xb6, 0xfc, 0x7b, 0xfc, 0x61, 0xfd, 0x90, 0xff, 0x86, 0x01, 0x57, 0x02, + 0x9b, 0x03, 0xf2, 0x04, 0xe9, 0x05, 0x4d, 0x06, 0x26, 0x06, 0xd2, 0x07, 0x84, 0x0a, 0x79, 0x0c, + 0x32, 0x0d, 0xe4, 0x0b, 0x24, 0x09, 0xac, 0x06, 0x96, 0x05, 0xf2, 0x04, 0xb9, 0x03, 0xa0, 0x01, + 0x73, 0x00, 0x67, 0x00, 0x38, 0x01, 0x88, 0x01, 0xff, 0xff, 0xc4, 0xfe, 0xd2, 0xfd, 0x38, 0xfd, + 0x3e, 0xfc, 0xa2, 0xf9, 0x77, 0xf6, 0x8a, 0xf3, 0xd0, 0xf2, 0xb7, 0xf2, 0x2d, 0xf3, 0x20, 0xf4, + 0x4c, 0xf4, 0x38, 0xf5, 0x05, 0xf6, 0x12, 0xf7, 0xf9, 0xf6, 0xf1, 0xf7, 0x83, 0xfa, 0xc1, 0xfd, + 0xf2, 0x00, 0xbf, 0x02, 0x3b, 0x03, 0x29, 0x03, 0x08, 0x03, 0xf4, 0x03, 0x78, 0x05, 0x69, 0x06, + 0x81, 0x07, 0x7c, 0x09, 0x00, 0x0b, 0x45, 0x0c, 0x0a, 0x0c, 0x74, 0x0b, 0x76, 0x0b, 0x2d, 0x0b, + 0x66, 0x0b, 0x7d, 0x09, 0x3a, 0x07, 0xa4, 0x05, 0xd8, 0x04, 0xae, 0x04, 0xea, 0x04, 0xe0, 0x03, + 0xb8, 0x01, 0xbe, 0xff, 0x08, 0xfe, 0x5a, 0xfc, 0x55, 0xf9, 0x05, 0xf6, 0xba, 0xf4, 0x3b, 0xf5, + 0x76, 0xf6, 0x6a, 0xf6, 0x98, 0xf5, 0xf0, 0xf3, 0xaa, 0xf2, 0xc2, 0xf2, 0xca, 0xf2, 0xea, 0xf2, + 0x9b, 0xf2, 0x22, 0xf3, 0xac, 0xf4, 0x94, 0xf6, 0x45, 0xf8, 0x4b, 0xfa, 0x1e, 0xfd, 0xfc, 0xfe, + 0x90, 0xff, 0xb7, 0xff, 0x5f, 0xff, 0x10, 0x00, 0x87, 0x01, 0xa9, 0x03, 0x1a, 0x06, 0xb2, 0x07, + 0xa1, 0x08, 0x26, 0x09, 0x26, 0x0a, 0xa5, 0x0b, 0xd7, 0x0b, 0xd7, 0x0a, 0xd5, 0x0a, 0x5b, 0x0b, + 0xdf, 0x0b, 0x76, 0x0b, 0x99, 0x09, 0xb3, 0x06, 0xe6, 0x03, 0x60, 0x02, 0xd7, 0x01, 0x93, 0x00, + 0xc5, 0xfe, 0x7c, 0xfd, 0x53, 0xfd, 0xb4, 0xfd, 0x87, 0xfd, 0x12, 0xfd, 0x4d, 0xfc, 0xee, 0xfb, + 0x03, 0xfb, 0x7e, 0xf9, 0xbe, 0xf7, 0xaf, 0xf5, 0x85, 0xf4, 0x85, 0xf5, 0xcb, 0xf7, 0x85, 0xfa, + 0x58, 0xfc, 0x67, 0xfe, 0xa0, 0xff, 0x93, 0x00, 0x7b, 0x01, 0x64, 0x01, 0x07, 0x02, 0x17, 0x04, + 0x88, 0x06, 0xce, 0x07, 0x49, 0x07, 0x4b, 0x06, 0x2d, 0x05, 0x14, 0x04, 0xc8, 0x03, 0x4c, 0x03, + 0xb9, 0x01, 0x61, 0x01, 0x5e, 0x02, 0x1f, 0x03, 0xe2, 0x03, 0x93, 0x03, 0x64, 0x03, 0xc3, 0x02, + 0x66, 0x02, 0x53, 0x01, 0xa0, 0xff, 0x06, 0xfd, 0x08, 0xfa, 0x54, 0xf8, 0x74, 0xf7, 0x86, 0xf7, + 0xeb, 0xf7, 0x4f, 0xf8, 0x9b, 0xf8, 0x26, 0xf9, 0xf0, 0xf9, 0x88, 0xf9, 0xdc, 0xf9, 0x13, 0xfb, + 0x59, 0xfd, 0xb7, 0xff, 0x15, 0x01, 0xb6, 0x01, 0x16, 0x01, 0x81, 0x00, 0x72, 0xff, 0xf9, 0xff, + 0xef, 0xff, 0x8c, 0xff, 0x2d, 0x01, 0xeb, 0x02, 0x41, 0x05, 0xc8, 0x05, 0xd4, 0x05, 0x68, 0x06, + 0xd1, 0x06, 0x48, 0x07, 0xc7, 0x06, 0xfa, 0x04, 0xb9, 0x03, 0x13, 0x03, 0x58, 0x03, 0xef, 0x02, + 0x09, 0x03, 0xea, 0x02, 0x44, 0x03, 0x68, 0x03, 0xe3, 0x02, 0x5f, 0x01, 0xe2, 0xfe, 0xc5, 0xfd, + 0xc4, 0xfe, 0x21, 0x00, 0x63, 0x00, 0xe7, 0x00, 0xac, 0x00, 0x28, 0xff, 0x12, 0xfe, 0x68, 0xfd, + 0x25, 0xfd, 0x92, 0xfc, 0xbd, 0xfc, 0xc1, 0xfd, 0x33, 0xfe, 0x71, 0xff, 0x31, 0x00, 0x46, 0x01, + 0xae, 0x02, 0x16, 0x03, 0xd2, 0x02, 0x2c, 0x02, 0x6b, 0x01, 0x37, 0x01, 0x90, 0x01, 0x5a, 0x02, + 0x56, 0x03, 0xd9, 0x02, 0xb9, 0x02, 0x3e, 0x03, 0x54, 0x03, 0x9e, 0x02, 0xab, 0x00, 0x8b, 0xff, + 0x8f, 0xff, 0x68, 0x00, 0xbb, 0x01, 0xbe, 0x00, 0x7e, 0xff, 0xb4, 0xfd, 0x67, 0xfb, 0x10, 0xfa, + 0xd8, 0xf9, 0xb3, 0xf8, 0x4f, 0xf7, 0xa7, 0xf7, 0xc7, 0xf7, 0x51, 0xf7, 0xb2, 0xf7, 0xb9, 0xf8, + 0x62, 0xf9, 0x25, 0xf9, 0x09, 0xf9, 0xb7, 0xf7, 0x2c, 0xf6, 0x2d, 0xf6, 0xf0, 0xf6, 0x94, 0xf8, + 0x3c, 0xfb, 0xa5, 0xfe, 0x57, 0x01, 0x8b, 0x03, 0xe7, 0x04, 0xab, 0x05, 0x7c, 0x06, 0x38, 0x07, + 0x6c, 0x09, 0x03, 0x0c, 0x01, 0x0e, 0xc0, 0x0e, 0xd5, 0x0d, 0xb2, 0x0c, 0xbf, 0x0b, 0x2b, 0x0b, + 0xc8, 0x0a, 0x80, 0x09, 0xf6, 0x08, 0xe0, 0x08, 0x04, 0x09, 0x14, 0x09, 0xb1, 0x07, 0x59, 0x06, + 0x1a, 0x06, 0x16, 0x05, 0x83, 0x03, 0xfe, 0x00, 0x03, 0xfd, 0xb3, 0xf8, 0x81, 0xf5, 0x91, 0xf3, + 0x33, 0xf3, 0x16, 0xf4, 0x34, 0xf5, 0xe3, 0xf5, 0x0f, 0xf6, 0xcd, 0xf6, 0x77, 0xf7, 0x35, 0xf7, + 0xe9, 0xf7, 0xc4, 0xf9, 0xc5, 0xfb, 0x63, 0xfd, 0x18, 0xfe, 0xbd, 0xfe, 0x75, 0xfe, 0x2f, 0xfe, + 0x8a, 0xfe, 0xf0, 0xfe, 0x6a, 0xff, 0xa0, 0x01, 0xcf, 0x03, 0xe0, 0x05, 0x24, 0x07, 0xe0, 0x07, + 0x37, 0x09, 0x40, 0x0a, 0x34, 0x0a, 0x0d, 0x09, 0x6a, 0x07, 0x0e, 0x06, 0x60, 0x05, 0x14, 0x04, + 0xa1, 0x03, 0xa2, 0x03, 0x15, 0x03, 0xec, 0x02, 0xab, 0x02, 0x59, 0x02, 0x46, 0x01, 0x0f, 0xff, + 0xe3, 0xfd, 0x30, 0xfd, 0x86, 0xfd, 0xc7, 0xfd, 0xd8, 0xfd, 0xba, 0xfd, 0x90, 0xfc, 0xad, 0xfa, + 0xb4, 0xf8, 0xe4, 0xf7, 0xcf, 0xf6, 0xed, 0xf5, 0xbb, 0xf5, 0x4b, 0xf6, 0xa8, 0xf7, 0x2c, 0xf9, + 0xb6, 0xfb, 0xfb, 0xfd, 0x27, 0xff, 0x23, 0x00, 0x40, 0x00, 0x27, 0x00, 0x70, 0x00, 0x40, 0x01, + 0xbe, 0x01, 0xf8, 0x01, 0x0b, 0x02, 0xb0, 0x02, 0x86, 0x03, 0x35, 0x04, 0xa6, 0x04, 0x8d, 0x03, + 0x03, 0x03, 0xef, 0x03, 0x04, 0x05, 0x1f, 0x06, 0x06, 0x06, 0xbd, 0x05, 0x6d, 0x05, 0xe6, 0x03, + 0x25, 0x02, 0xc9, 0x00, 0x55, 0xff, 0x3c, 0xfe, 0xe3, 0xfd, 0xf0, 0xfc, 0x70, 0xfc, 0x57, 0xfc, + 0xab, 0xfc, 0x4b, 0xfd, 0x41, 0xfd, 0xa9, 0xfc, 0x40, 0xfb, 0x2d, 0xfa, 0xc9, 0xf9, 0x7d, 0xf9, + 0xad, 0xf9, 0x48, 0xfb, 0x11, 0xfd, 0x77, 0xff, 0x76, 0x01, 0x6f, 0x02, 0xdd, 0x02, 0xd5, 0x02, + 0x00, 0x02, 0x56, 0x02, 0x62, 0x03, 0xbc, 0x04, 0x2e, 0x05, 0x54, 0x05, 0xe5, 0x05, 0x26, 0x05, + 0xbf, 0x03, 0x21, 0x03, 0x14, 0x02, 0x2c, 0x01, 0x6b, 0x01, 0xa1, 0x01, 0x43, 0x01, 0xae, 0xff, + 0xf0, 0xfd, 0x91, 0xfd, 0xdc, 0xfd, 0x38, 0xfd, 0xc1, 0xfb, 0x18, 0xf9, 0x50, 0xf6, 0xf0, 0xf3, + 0xc2, 0xf1, 0x2b, 0xf1, 0x61, 0xf1, 0x38, 0xf3, 0x62, 0xf5, 0x88, 0xf6, 0x3e, 0xf7, 0x6b, 0xf7, + 0xaf, 0xf7, 0x86, 0xf8, 0xc2, 0xf9, 0xc9, 0xfb, 0x66, 0xfe, 0xa6, 0x00, 0xb2, 0x01, 0x88, 0x02, + 0xf8, 0x01, 0x84, 0x01, 0x74, 0x02, 0xbb, 0x03, 0xa4, 0x05, 0x31, 0x08, 0x38, 0x0a, 0x8b, 0x0b, + 0x0b, 0x0c, 0x3d, 0x0d, 0x7a, 0x0e, 0x96, 0x0e, 0xe2, 0x0d, 0xe4, 0x0b, 0xb9, 0x09, 0x3a, 0x08, + 0x3f, 0x06, 0x33, 0x04, 0xe7, 0x02, 0xe5, 0x02, 0x39, 0x04, 0xa1, 0x04, 0x6e, 0x04, 0x60, 0x03, + 0x64, 0x01, 0x5d, 0xff, 0x70, 0xfe, 0xef, 0xfd, 0x30, 0xfd, 0x83, 0xfc, 0x5c, 0xfc, 0x95, 0xfb, + 0x19, 0xfa, 0xca, 0xf8, 0xf4, 0xf6, 0xf3, 0xf5, 0x2c, 0xf6, 0x48, 0xf6, 0xa7, 0xf6, 0xed, 0xf7, + 0xdd, 0xf8, 0xbd, 0xfa, 0xab, 0xfd, 0xa3, 0x00, 0x3a, 0x01, 0xea, 0x01, 0x38, 0x02, 0x16, 0x02, + 0x98, 0x02, 0x1b, 0x03, 0x7c, 0x03, 0xfc, 0x03, 0xaa, 0x04, 0x81, 0x05, 0xda, 0x05, 0x27, 0x06, + 0xca, 0x05, 0x30, 0x05, 0x96, 0x05, 0x4a, 0x06, 0x54, 0x07, 0x02, 0x07, 0xb7, 0x06, 0x5d, 0x06, + 0xd9, 0x04, 0x54, 0x02, 0x06, 0x00, 0x8a, 0xfe, 0x02, 0xfd, 0x50, 0xfb, 0xbf, 0xf9, 0x85, 0xf8, + 0xab, 0xf7, 0x54, 0xf8, 0x2a, 0xfa, 0x45, 0xfb, 0x79, 0xfb, 0x20, 0xfb, 0x5b, 0xfa, 0x74, 0xf9, + 0x8e, 0xf8, 0x1a, 0xf9, 0x0f, 0xfa, 0x39, 0xfb, 0x5b, 0xfd, 0x84, 0xff, 0xdb, 0x00, 0x3e, 0x02, + 0xea, 0x02, 0x53, 0x03, 0x20, 0x04, 0x9d, 0x05, 0x80, 0x07, 0x5e, 0x08, 0xa8, 0x08, 0x2a, 0x09, + 0x58, 0x09, 0xc5, 0x08, 0xdf, 0x06, 0x95, 0x05, 0x48, 0x05, 0xde, 0x05, 0xc4, 0x05, 0x23, 0x05, + 0xd0, 0x04, 0x4c, 0x03, 0xdc, 0x02, 0x8d, 0x03, 0x1b, 0x03, 0x2c, 0x01, 0x3e, 0xff, 0x49, 0xfd, + 0x8b, 0xfa, 0xd3, 0xf8, 0x7c, 0xf7, 0xc7, 0xf6, 0xee, 0xf7, 0xc1, 0xf9, 0xc1, 0xfa, 0xe9, 0xfa, + 0xeb, 0xfa, 0xda, 0xfa, 0x1c, 0xfa, 0x05, 0xfa, 0x68, 0xfa, 0x30, 0xfb, 0xb5, 0xfc, 0x0d, 0xff, + 0x9a, 0x00, 0x66, 0x00, 0x30, 0x00, 0xaf, 0x00, 0x55, 0x01, 0xd5, 0x02, 0xea, 0x04, 0x9c, 0x06, + 0x52, 0x07, 0xfc, 0x07, 0x56, 0x08, 0xf5, 0x08, 0x0e, 0x0a, 0x70, 0x09, 0xdd, 0x07, 0x76, 0x06, + 0x22, 0x05, 0xd0, 0x03, 0x7a, 0x02, 0xdf, 0x00, 0xbe, 0xff, 0x8e, 0x00, 0xa2, 0x02, 0x39, 0x03, + 0xf9, 0x02, 0x91, 0x01, 0xd5, 0xff, 0x8c, 0xfe, 0x04, 0xfe, 0xda, 0xfd, 0x83, 0xfd, 0x9d, 0xfd, + 0x9c, 0xfd, 0xca, 0xfb, 0xbf, 0xf9, 0xec, 0xf7, 0x40, 0xf7, 0x76, 0xf6, 0x7c, 0xf6, 0x8e, 0xf7, + 0xf9, 0xf6, 0xca, 0xf8, 0x37, 0xfa, 0x43, 0xfc, 0xed, 0xfe, 0xec, 0xfe, 0xac, 0xff, 0xeb, 0xfe, + 0x7e, 0xfe, 0x56, 0x01, 0x34, 0xff, 0x7f, 0x00, 0x5e, 0xfa, 0x1e, 0xfa, 0xd3, 0x01, 0xca, 0xff, + 0xf5, 0x01, 0x31, 0x05, 0x29, 0xfe, 0x2e, 0x01, 0x1f, 0x05, 0xfc, 0x03, 0x17, 0x07, 0x81, 0x02, + 0x5d, 0x02, 0x23, 0x08, 0x28, 0x00, 0xe1, 0x01, 0x72, 0xff, 0x0c, 0xf9, 0xbe, 0xfb, 0x4e, 0xf5, + 0xf2, 0xf6, 0x78, 0xf7, 0x97, 0xf5, 0xaf, 0xf8, 0x35, 0xf9, 0x0d, 0xf9, 0xae, 0xfb, 0x4f, 0xfb, + 0x78, 0xfa, 0xc3, 0xf8, 0xd2, 0xf6, 0x91, 0xf8, 0x2a, 0xfa, 0x54, 0xfc, 0xc2, 0xfd, 0x58, 0xff, + 0xce, 0x02, 0x86, 0x00, 0x3d, 0x03, 0x63, 0x04, 0x33, 0x03, 0xb3, 0x06, 0x30, 0x08, 0x27, 0x09, + 0xe3, 0x08, 0x9d, 0x0e, 0x0f, 0x10, 0x65, 0x0a, 0xa8, 0x08, 0x80, 0x07, 0xee, 0x01, 0xaa, 0x05, + 0xd1, 0x04, 0xf0, 0xfe, 0x72, 0xfe, 0x2e, 0xfc, 0x42, 0xfc, 0x86, 0xfe, 0x23, 0xfc, 0xc8, 0xfa, + 0x9d, 0xfb, 0x06, 0xf9, 0x94, 0xf6, 0xeb, 0xf5, 0xb0, 0xf8, 0xae, 0xf7, 0xce, 0xf8, 0xdb, 0xfa, + 0x16, 0xf6, 0x78, 0xf7, 0x0f, 0xfc, 0x01, 0xf9, 0x63, 0xfb, 0xa6, 0xfc, 0x61, 0xf9, 0x13, 0xff, + 0x29, 0x00, 0x9d, 0xff, 0x06, 0x05, 0xc9, 0x02, 0x15, 0x01, 0x38, 0x06, 0x79, 0x06, 0x7d, 0x0a, + 0x12, 0x0c, 0x36, 0x0e, 0x25, 0x11, 0x16, 0x10, 0xf1, 0x11, 0xf2, 0x11, 0x08, 0x11, 0x5b, 0x0f, + 0xc1, 0x0c, 0xb2, 0x0a, 0x5d, 0x08, 0x8d, 0x07, 0xa0, 0x04, 0xef, 0x03, 0x66, 0x04, 0x4f, 0x02, + 0xfd, 0x03, 0x96, 0x03, 0x0c, 0x03, 0x5b, 0x05, 0x6b, 0x02, 0x3c, 0xff, 0x47, 0xfd, 0xd2, 0xfa, + 0x47, 0xfc, 0xcb, 0xfc, 0x82, 0xfb, 0x96, 0xfa, 0xa7, 0xf6, 0x10, 0xf6, 0xc4, 0xf8, 0xd1, 0xf4, + 0x9f, 0xf3, 0x1e, 0xf5, 0x46, 0xf4, 0x44, 0xf9, 0x64, 0xfd, 0xc4, 0xfc, 0x21, 0x00, 0x08, 0x00, + 0x51, 0x02, 0x0b, 0x05, 0x78, 0x03, 0xbd, 0x02, 0x4e, 0x02, 0xa2, 0x01, 0xdc, 0x02, 0x68, 0x03, + 0xc6, 0x03, 0x8c, 0x05, 0xaf, 0x05, 0xea, 0x05, 0x74, 0x06, 0x1d, 0x06, 0x28, 0x04, 0xdd, 0x05, + 0x33, 0x07, 0xe9, 0x06, 0xa1, 0x08, 0xd4, 0x05, 0x33, 0x03, 0x83, 0x01, 0xf0, 0xfe, 0x12, 0xff, + 0x65, 0xfd, 0x39, 0xfa, 0xcd, 0xf7, 0xf8, 0xf8, 0xc1, 0xf8, 0x02, 0xf8, 0x44, 0xfa, 0xf6, 0xf8, + 0xe1, 0xf8, 0x33, 0xfa, 0xe8, 0xf9, 0x17, 0xf8, 0xa2, 0xf7, 0x19, 0xf5, 0x79, 0xf4, 0xd2, 0xf6, + 0xbe, 0xf5, 0x44, 0xf8, 0x98, 0xfa, 0x96, 0xfc, 0x02, 0xff, 0x6d, 0xff, 0x17, 0xff, 0x52, 0x01, + 0xff, 0x01, 0x50, 0x04, 0x72, 0x03, 0x4a, 0x01, 0x44, 0x00, 0x03, 0xfe, 0x8b, 0xfe, 0xb4, 0xff, + 0x11, 0xff, 0x31, 0xfd, 0x5b, 0xfc, 0x03, 0xfc, 0xc7, 0xf9, 0x37, 0xfe, 0x8c, 0xff, 0xd4, 0xfd, + 0x3b, 0x03, 0xf9, 0xfc, 0x6d, 0x00, 0x9c, 0xfe, 0x00, 0xf8, 0x4a, 0xf7, 0xf0, 0xf4, 0xc9, 0xf8, + 0x35, 0xfd, 0xce, 0xff, 0x3f, 0x04, 0x06, 0xfe, 0xae, 0xfd, 0x9b, 0x00, 0x8a, 0x03, 0x1a, 0xff, + 0x4e, 0xfc, 0xf1, 0xfe, 0xdf, 0x02, 0xe8, 0x08, 0x46, 0x0d, 0x82, 0x08, 0x10, 0x07, 0x28, 0x09, + 0x19, 0x0a, 0xb8, 0x06, 0x3d, 0x04, 0x9d, 0x04, 0xcf, 0x07, 0xdf, 0x07, 0xfe, 0x07, 0xc8, 0x09, + 0x5a, 0x04, 0x1c, 0x01, 0x02, 0xff, 0xf0, 0xfc, 0x57, 0xf9, 0x65, 0xf7, 0xaf, 0xf9, 0x07, 0xfd, + 0x9d, 0xfe, 0xcc, 0x01, 0x13, 0x01, 0x81, 0x00, 0x1a, 0x01, 0x31, 0x01, 0xd4, 0x01, 0xc7, 0xff, + 0xfb, 0xfd, 0xeb, 0x01, 0x66, 0x09, 0x7c, 0x0d, 0x8a, 0x12, 0x0c, 0x10, 0x0d, 0x0d, 0xd8, 0x11, + 0x8e, 0x12, 0x09, 0x11, 0x2a, 0x12, 0x0a, 0x0f, 0xcf, 0x0f, 0xde, 0x13, 0x0d, 0x14, 0x97, 0x12, + 0xe5, 0x0d, 0xd0, 0x05, 0xac, 0x02, 0xc3, 0x02, 0x89, 0xfd, 0x65, 0xf8, 0xff, 0xf5, 0x56, 0xf7, + 0xf7, 0xfa, 0x84, 0xf8, 0xa1, 0xf3, 0xcb, 0xec, 0x94, 0xea, 0x0b, 0xeb, 0x82, 0xed, 0x37, 0xea, + 0x59, 0xe8, 0x46, 0xe8, 0xd5, 0xe9, 0xae, 0xef, 0x10, 0xf2, 0xea, 0xf1, 0xcd, 0xef, 0x19, 0xef, + 0xdd, 0xf1, 0xd7, 0xf2, 0xce, 0xf3, 0xa7, 0xf7, 0x1b, 0xfb, 0x44, 0xfd, 0xcb, 0xfd, 0x41, 0xfc, + 0x22, 0xfd, 0xc1, 0xf7, 0xf4, 0xef, 0xbc, 0xed, 0x44, 0xea, 0x6a, 0xe5, 0xfb, 0xe4, 0x24, 0xe8, + 0x09, 0xec, 0xab, 0xee, 0xc7, 0xf1, 0x34, 0xf4, 0xfa, 0xf5, 0x27, 0xf6, 0x16, 0xfc, 0x04, 0xfb, + 0x34, 0xfa, 0x81, 0x02, 0x59, 0x05, 0xa4, 0x0b, 0x05, 0x11, 0xe5, 0x0f, 0x2e, 0x10, 0xb4, 0x0f, + 0x01, 0x11, 0x54, 0x15, 0x35, 0x19, 0x55, 0x19, 0xe4, 0x1b, 0x06, 0x1c, 0xb0, 0x19, 0x39, 0x1b, + 0xb9, 0x17, 0x4a, 0x10, 0x18, 0x0b, 0x3b, 0x04, 0x71, 0xff, 0xaa, 0xfc, 0x12, 0xf8, 0x3a, 0xfb, + 0xc1, 0xfe, 0xdd, 0xfc, 0x44, 0xfc, 0x37, 0xf6, 0x2f, 0xf5, 0x2b, 0xf4, 0x80, 0xf2, 0x8b, 0xf2, + 0x3f, 0xf1, 0x26, 0xf3, 0x66, 0xf7, 0x3d, 0xff, 0x61, 0x09, 0xe2, 0x0a, 0xee, 0x0a, 0xc8, 0x0d, + 0x0f, 0x13, 0x7f, 0x16, 0xbf, 0x1b, 0x48, 0x21, 0x83, 0x1e, 0xdb, 0x1d, 0xf9, 0x1e, 0xaf, 0x1b, + 0x44, 0x19, 0x92, 0x11, 0x47, 0x0b, 0xbc, 0x05, 0x1e, 0xfe, 0x52, 0xfe, 0x3e, 0xfb, 0x43, 0xf8, + 0xbd, 0xfb, 0xef, 0xfa, 0x55, 0xfa, 0xbf, 0xf6, 0x84, 0xf4, 0x8d, 0xf0, 0xdc, 0xeb, 0x26, 0xeb, + 0x73, 0xe9, 0x07, 0xed, 0xd0, 0xed, 0x14, 0xef, 0xb9, 0xf7, 0x0a, 0xf8, 0xfd, 0xfb, 0x0d, 0xfe, + 0x8d, 0xfc, 0xdb, 0xfe, 0x51, 0x02, 0xcd, 0x0a, 0x04, 0x0a, 0xeb, 0x0a, 0x16, 0x0c, 0x61, 0x06, + 0x22, 0x0a, 0x9b, 0x06, 0xe6, 0xfc, 0xd9, 0xf8, 0x73, 0xf3, 0x3c, 0xf4, 0x1c, 0xf1, 0x69, 0xee, + 0xaf, 0xf6, 0xa9, 0xf9, 0x07, 0xfb, 0x88, 0xfa, 0x3b, 0xf7, 0x48, 0xf6, 0x77, 0xf1, 0xf2, 0xf6, + 0xc9, 0xf7, 0x5e, 0xf7, 0x23, 0xfb, 0x50, 0xfe, 0xdf, 0x0a, 0xd9, 0x0c, 0x47, 0x12, 0x6f, 0x12, + 0xd1, 0x11, 0x1e, 0x14, 0x4a, 0x1a, 0x01, 0x20, 0xe8, 0x21, 0x11, 0x24, 0xae, 0x24, 0xbc, 0x1e, + 0xde, 0x1e, 0x20, 0x20, 0x59, 0x13, 0x5c, 0x0e, 0xc8, 0x05, 0x52, 0x02, 0x7e, 0x04, 0xbe, 0xff, + 0x12, 0x01, 0xfa, 0x03, 0x8c, 0x02, 0x83, 0x07, 0xb6, 0x02, 0x57, 0x00, 0x95, 0xfb, 0x66, 0xfa, + 0x5f, 0xfd, 0x7c, 0xfc, 0x42, 0xff, 0x0f, 0x03, 0x1b, 0x04, 0x45, 0x06, 0x4d, 0x0b, 0x1f, 0x0a, + 0x36, 0x06, 0xa6, 0x05, 0xd4, 0x03, 0x73, 0x0b, 0x6b, 0x10, 0x38, 0x0b, 0x64, 0x0e, 0x16, 0x0a, + 0xdb, 0x04, 0xa1, 0x02, 0xf4, 0xf8, 0xb9, 0xef, 0xd4, 0xe3, 0x3c, 0xdd, 0xeb, 0xdb, 0x94, 0xd3, + 0x20, 0xd3, 0x72, 0xd7, 0x18, 0xd5, 0xc4, 0xd3, 0x1f, 0xce, 0x1b, 0xcb, 0xa6, 0xc6, 0x1d, 0xc3, + 0x7d, 0xc7, 0xad, 0xc7, 0xee, 0xca, 0xeb, 0xd1, 0x2a, 0xd7, 0xfd, 0xdf, 0x0a, 0xe9, 0x09, 0xf0, + 0x71, 0xf3, 0xdf, 0xf9, 0x1b, 0xfe, 0x4c, 0x07, 0x03, 0x15, 0x36, 0x16, 0x2c, 0x1d, 0x95, 0x20, + 0x44, 0x1f, 0x49, 0x25, 0x1b, 0x22, 0x23, 0x1e, 0x84, 0x19, 0xa0, 0x13, 0xce, 0x16, 0x02, 0x14, + 0xe8, 0x11, 0x73, 0x13, 0x21, 0x0f, 0x76, 0x11, 0x77, 0x0c, 0xa1, 0x08, 0xdb, 0x01, 0xa8, 0xf9, + 0xce, 0xfa, 0x42, 0xf8, 0xb7, 0xf9, 0x81, 0xfc, 0x87, 0xfe, 0x18, 0x01, 0xd4, 0x04, 0xd6, 0x08, + 0x50, 0x06, 0xbc, 0x07, 0x66, 0x08, 0x1d, 0x08, 0x38, 0x13, 0xe6, 0x13, 0xd7, 0x15, 0x26, 0x1c, + 0x07, 0x14, 0x70, 0x14, 0xe5, 0x11, 0x1f, 0x08, 0xe2, 0x02, 0xf7, 0xf7, 0x48, 0xf5, 0xa4, 0xf2, + 0xe1, 0xef, 0xd0, 0xf2, 0xeb, 0xed, 0x1f, 0xf0, 0x40, 0xee, 0x3c, 0xe6, 0xb5, 0xe4, 0xb5, 0xdf, + 0xb0, 0xdf, 0x45, 0xe0, 0x10, 0xe2, 0x3e, 0xe8, 0x9a, 0xe8, 0x41, 0xf0, 0x35, 0xf7, 0xfd, 0xfb, + 0x1b, 0x01, 0x1d, 0x02, 0xea, 0x08, 0x83, 0x09, 0x53, 0x10, 0x36, 0x18, 0xe5, 0x18, 0x56, 0x1d, + 0xff, 0x1a, 0xbf, 0x16, 0xd7, 0x15, 0xe6, 0x0d, 0x7c, 0x06, 0x66, 0xfc, 0x11, 0xf6, 0x6c, 0xf6, + 0xae, 0xf2, 0xd8, 0xf4, 0x38, 0xf3, 0x39, 0xf3, 0x2a, 0xf4, 0xea, 0xf0, 0xbc, 0xef, 0xac, 0xe9, + 0x28, 0xea, 0x28, 0xed, 0xa5, 0xeb, 0x73, 0xf4, 0x4b, 0xf7, 0x59, 0xff, 0x67, 0x07, 0x95, 0x0d, + 0x8d, 0x14, 0x44, 0x13, 0x6b, 0x13, 0xcb, 0x12, 0x62, 0x16, 0xce, 0x1b, 0xbb, 0x1d, 0x33, 0x22, + 0xeb, 0x1f, 0x66, 0x1e, 0xdd, 0x1e, 0x39, 0x16, 0xb6, 0x13, 0xd9, 0x09, 0x2d, 0xfe, 0x6f, 0xfd, + 0xb3, 0xfa, 0x64, 0xf8, 0x52, 0xf7, 0xbc, 0xf6, 0x17, 0xf8, 0xb1, 0xf6, 0x8a, 0xf5, 0x3d, 0xf5, + 0xda, 0xf5, 0x55, 0xf8, 0x05, 0xf6, 0xd9, 0xfa, 0x7e, 0x01, 0x27, 0x05, 0xe0, 0x08, 0xa4, 0x0d, + 0x4b, 0x16, 0x9f, 0x12, 0xba, 0x11, 0x18, 0x16, 0xc5, 0x17, 0x73, 0x21, 0x0e, 0x25, 0x04, 0x26, + 0xff, 0x29, 0xca, 0x23, 0x1a, 0x22, 0x88, 0x1a, 0xf5, 0x10, 0x87, 0x0a, 0x11, 0xff, 0xbe, 0xfc, + 0x4a, 0xf7, 0xce, 0xf4, 0x43, 0xf7, 0x3f, 0xf4, 0x37, 0xf5, 0x11, 0xf2, 0xb8, 0xed, 0x86, 0xe7, + 0x3d, 0xdf, 0x40, 0xde, 0x82, 0xd7, 0x9a, 0xda, 0x77, 0xdc, 0xb6, 0xdc, 0x13, 0xe5, 0x88, 0xea, + 0xdf, 0xf1, 0x91, 0xf2, 0x20, 0xf2, 0x4d, 0xf7, 0xcb, 0xf3, 0xfe, 0xfc, 0xd6, 0x05, 0xf3, 0x06, + 0x2d, 0x0b, 0x2c, 0x06, 0xce, 0x09, 0xda, 0x0c, 0xc4, 0x08, 0xee, 0x07, 0x0e, 0x02, 0x10, 0x01, + 0x9a, 0x01, 0xd5, 0x00, 0x23, 0x02, 0xc4, 0x03, 0xa5, 0x02, 0xe0, 0x02, 0x06, 0x02, 0x31, 0x00, + 0x8f, 0xfb, 0x7e, 0xfa, 0x75, 0xf5, 0xa0, 0xf2, 0x3a, 0xf7, 0x97, 0xf9, 0x19, 0xfc, 0x81, 0xfc, + 0x1e, 0xff, 0x13, 0xff, 0xba, 0xfb, 0xf2, 0xfe, 0xe0, 0xfe, 0x39, 0x02, 0x5f, 0x0a, 0xdb, 0x0b, + 0x07, 0x13, 0x58, 0x14, 0xb9, 0x11, 0xe6, 0x12, 0x3c, 0x0b, 0xb3, 0x06, 0x29, 0x01, 0x81, 0xfa, + 0x66, 0xf8, 0xdc, 0xf2, 0x2d, 0xf4, 0x41, 0xf2, 0xa7, 0xf1, 0x78, 0xf6, 0xa0, 0xf5, 0x5b, 0xf3, + 0x5b, 0xed, 0x13, 0xec, 0x10, 0xea, 0x0c, 0xec, 0x42, 0xf2, 0xe7, 0xf1, 0xd1, 0xf6, 0x30, 0xf8, + 0x72, 0xff, 0x0b, 0x06, 0xd5, 0x05, 0xfd, 0x0c, 0x47, 0x0e, 0x54, 0x10, 0x1e, 0x18, 0xef, 0x1a, + 0x25, 0x22, 0xd9, 0x20, 0xa7, 0x19, 0x99, 0x19, 0x6c, 0x13, 0x6d, 0x0f, 0x32, 0x05, 0x49, 0xf9, + 0x34, 0xf5, 0x79, 0xed, 0x39, 0xea, 0x18, 0xeb, 0x24, 0xe9, 0x39, 0xe9, 0x91, 0xe3, 0x50, 0xdd, + 0xbc, 0xd7, 0x88, 0xd6, 0xcb, 0xd5, 0x91, 0xd3, 0xc0, 0xd7, 0x90, 0xdb, 0xd3, 0xe1, 0x95, 0xe5, + 0x97, 0xec, 0x16, 0xf9, 0xe1, 0xf8, 0x70, 0xfb, 0xc3, 0x00, 0xf4, 0x00, 0x9c, 0x0c, 0xf0, 0x14, + 0x69, 0x1b, 0x86, 0x22, 0xc3, 0x1f, 0x70, 0x24, 0x55, 0x22, 0x03, 0x21, 0xf3, 0x1f, 0x86, 0x14, + 0x8d, 0x0e, 0x08, 0x07, 0x11, 0x03, 0x6a, 0x04, 0xf7, 0xfe, 0xf3, 0xff, 0x41, 0xfd, 0xc7, 0xf9, + 0x9f, 0xf9, 0x63, 0xf5, 0x30, 0xf7, 0xfc, 0xf5, 0xa1, 0xf7, 0xf7, 0xf9, 0x21, 0xfe, 0x6c, 0x02, + 0xa7, 0x04, 0x2e, 0x0b, 0x60, 0x0b, 0x91, 0x0c, 0x59, 0x10, 0x1b, 0x0e, 0x45, 0x16, 0x5e, 0x18, + 0xd1, 0x1b, 0x48, 0x21, 0xa3, 0x1b, 0xaa, 0x1c, 0x4d, 0x1b, 0xdb, 0x12, 0x33, 0x0d, 0x90, 0x02, + 0x36, 0xfc, 0x9d, 0xfa, 0xe5, 0xf5, 0x29, 0xf8, 0xdc, 0xf8, 0xfa, 0xf6, 0xb6, 0xf7, 0x85, 0xf5, + 0x0a, 0xf5, 0x10, 0xf2, 0x9e, 0xf1, 0x4a, 0xee, 0xae, 0xec, 0x98, 0xf2, 0xb7, 0xf5, 0x0c, 0xf8, + 0xbd, 0xfa, 0x76, 0xff, 0xee, 0x02, 0x5c, 0x04, 0x65, 0x08, 0x54, 0x04, 0x03, 0x07, 0x2d, 0x0c, + 0x08, 0x10, 0x82, 0x18, 0xc9, 0x16, 0x1a, 0x17, 0xe4, 0x16, 0x35, 0x10, 0x26, 0x11, 0x09, 0x0b, + 0x0c, 0x06, 0x8f, 0x05, 0xa9, 0xfd, 0x48, 0xfe, 0x99, 0xfd, 0x89, 0xfb, 0xcc, 0xfc, 0x8f, 0xfb, + 0x35, 0xfd, 0x1d, 0xf6, 0x0c, 0xf5, 0xa3, 0xf3, 0x9c, 0xf2, 0x5f, 0xf5, 0xaf, 0xf5, 0x22, 0xfa, + 0x06, 0xfb, 0x53, 0x00, 0x1e, 0x06, 0x2f, 0x04, 0xf0, 0x06, 0xa8, 0x05, 0x63, 0x06, 0xa8, 0x08, + 0xbc, 0x09, 0xf5, 0x12, 0x1d, 0x12, 0x66, 0x0f, 0x1f, 0x10, 0xc4, 0x08, 0x34, 0x09, 0x00, 0x02, + 0x3e, 0xf8, 0x07, 0xf4, 0xee, 0xeb, 0x81, 0xe9, 0x2b, 0xea, 0x0e, 0xe9, 0xf0, 0xea, 0xe5, 0xe8, + 0x9e, 0xe8, 0xaa, 0xe7, 0x45, 0xe6, 0xfa, 0xe6, 0xc4, 0xe4, 0xcb, 0xe6, 0xb4, 0xeb, 0xd7, 0xed, + 0x5c, 0xf0, 0x55, 0xf3, 0xb6, 0xfc, 0x19, 0x00, 0x02, 0x04, 0x2b, 0x08, 0x34, 0x0a, 0x5e, 0x16, + 0x07, 0x1f, 0xcb, 0x28, 0xd3, 0x2f, 0x48, 0x2d, 0x4c, 0x2d, 0x53, 0x28, 0xe2, 0x27, 0x8d, 0x24, + 0x8b, 0x1b, 0x37, 0x16, 0x3e, 0x0b, 0x5a, 0x04, 0xa4, 0x04, 0xab, 0xfe, 0x3f, 0xfd, 0x3e, 0xf8, + 0x5d, 0xf3, 0x73, 0xec, 0xb2, 0xe3, 0x10, 0xe0, 0x6d, 0xd9, 0xc4, 0xd3, 0x3b, 0xd2, 0xb9, 0xd3, + 0xf4, 0xd7, 0xe5, 0xdb, 0x02, 0xe3, 0x18, 0xe5, 0xd6, 0xe7, 0xb2, 0xea, 0xdf, 0xe9, 0xf1, 0xef, + 0x69, 0xf3, 0xd5, 0xf8, 0x5f, 0xff, 0xe9, 0xfc, 0x7c, 0xff, 0xb7, 0xfe, 0x3e, 0xff, 0x7f, 0xfe, + 0xcf, 0xf8, 0xdd, 0xf3, 0x3b, 0xf0, 0x68, 0xee, 0x13, 0xf0, 0x32, 0xf0, 0x17, 0xf1, 0xd9, 0xef, + 0xc7, 0xf1, 0x07, 0xf3, 0x73, 0xf1, 0x32, 0xf5, 0x6b, 0xf3, 0x6c, 0xf2, 0x30, 0xf7, 0x18, 0xfb, + 0xa2, 0x01, 0xee, 0x02, 0x15, 0x06, 0x28, 0x0a, 0x06, 0x0d, 0x22, 0x11, 0x91, 0x0f, 0xe9, 0x13, + 0x3e, 0x17, 0xce, 0x1a, 0xbc, 0x24, 0xcf, 0x24, 0x63, 0x25, 0x8a, 0x24, 0x9b, 0x1e, 0xbd, 0x1b, + 0x9b, 0x13, 0xc4, 0x0e, 0x24, 0x07, 0xf8, 0xfd, 0x55, 0xfd, 0x1a, 0xf9, 0x7d, 0xfa, 0xbf, 0xfa, + 0x72, 0xfb, 0xe0, 0xfc, 0x3d, 0xf6, 0xeb, 0xf6, 0xbf, 0xf3, 0x45, 0xf3, 0xe9, 0xf5, 0x53, 0xf6, + 0x3d, 0xfb, 0xd8, 0xfc, 0x08, 0x00, 0x6d, 0x07, 0x29, 0x0a, 0x20, 0x10, 0xf7, 0x11, 0x79, 0x11, + 0xbd, 0x13, 0x36, 0x16, 0x66, 0x1e, 0xc0, 0x1f, 0x00, 0x1d, 0x5a, 0x1a, 0xbc, 0x12, 0x0f, 0x11, + 0x3b, 0x0c, 0xa1, 0x04, 0x19, 0xff, 0x3b, 0xf8, 0x7f, 0xf5, 0xcd, 0xf6, 0xfa, 0xf8, 0x43, 0xf9, + 0x09, 0xf7, 0x4f, 0xf8, 0xc4, 0xf3, 0x4f, 0xf1, 0x88, 0xf2, 0x33, 0xef, 0x82, 0xee, 0x25, 0xf0, + 0x0d, 0xf4, 0xf8, 0xf5, 0xd6, 0xf7, 0x76, 0x02, 0x95, 0x05, 0xd5, 0x06, 0x73, 0x08, 0xac, 0x05, + 0xfa, 0x0b, 0xb3, 0x10, 0x42, 0x18, 0xaf, 0x1e, 0xd3, 0x1e, 0x35, 0x21, 0xa6, 0x1e, 0x5e, 0x1f, + 0x8f, 0x1f, 0x78, 0x1a, 0x07, 0x13, 0x0d, 0x09, 0xd0, 0x02, 0x68, 0x00, 0xf5, 0xfe, 0x99, 0xfe, + 0x2e, 0xf9, 0x1c, 0xf8, 0xe2, 0xf3, 0x90, 0xf1, 0xd8, 0xf0, 0xac, 0xeb, 0xb0, 0xe7, 0x25, 0xe5, + 0x93, 0xe8, 0x34, 0xeb, 0x8f, 0xeb, 0x00, 0xf3, 0x3f, 0xf3, 0xe3, 0xf6, 0x70, 0xfb, 0x9b, 0xfa, + 0x52, 0x01, 0x44, 0x05, 0x59, 0x0c, 0x01, 0x16, 0x7d, 0x18, 0xc5, 0x19, 0x56, 0x18, 0x61, 0x17, + 0x18, 0x15, 0x42, 0x10, 0xa5, 0x0a, 0x63, 0x06, 0x52, 0x01, 0x5c, 0x00, 0x8f, 0xff, 0xc0, 0xfe, + 0x04, 0xfc, 0xb8, 0xfe, 0xbe, 0xfa, 0x9f, 0xf5, 0xfa, 0xf5, 0xe3, 0xef, 0x45, 0xea, 0x51, 0xe9, + 0x82, 0xe9, 0x2c, 0xec, 0x99, 0xeb, 0xae, 0xf0, 0x45, 0xf3, 0x7c, 0xf5, 0x9a, 0xfb, 0x14, 0xf8, + 0x63, 0xfa, 0x40, 0xfc, 0xcd, 0xfd, 0xd5, 0x08, 0x50, 0x0a, 0xc2, 0x0c, 0x77, 0x0c, 0x17, 0x07, + 0x3f, 0x08, 0x61, 0x05, 0xc5, 0x00, 0x56, 0xfb, 0x93, 0xf1, 0x3e, 0xf0, 0x59, 0xee, 0x6e, 0xee, + 0x08, 0xed, 0x9d, 0xee, 0x4b, 0xed, 0x91, 0xe8, 0x50, 0xe8, 0x49, 0xe5, 0xbc, 0xe4, 0x55, 0xe6, + 0xa1, 0xe7, 0x2d, 0xf0, 0x6e, 0xf3, 0x29, 0xf8, 0xb8, 0xff, 0x54, 0x03, 0xf4, 0x09, 0x36, 0x0c, + 0xdf, 0x0d, 0xe9, 0x0f, 0xc5, 0x0f, 0x67, 0x19, 0x39, 0x1c, 0x7d, 0x1a, 0x84, 0x1a, 0x96, 0x14, + 0x14, 0x11, 0x6a, 0x0e, 0xcc, 0x06, 0x3a, 0xff, 0xb6, 0xf4, 0x34, 0xef, 0x35, 0xeb, 0xfd, 0xe8, + 0x75, 0xe8, 0x00, 0xe9, 0x3a, 0xe7, 0x76, 0xe5, 0x24, 0xe4, 0xb7, 0xe3, 0xfb, 0xe2, 0x67, 0xe2, + 0x59, 0xe3, 0xa9, 0xe8, 0xa3, 0xea, 0x72, 0xed, 0x78, 0xf6, 0xb0, 0xf9, 0x16, 0x00, 0x36, 0x04, + 0xd9, 0x05, 0x53, 0x0c, 0x7f, 0x0f, 0x8b, 0x1b, 0xb4, 0x23, 0x93, 0x26, 0x02, 0x2a, 0x98, 0x26, + 0xc6, 0x25, 0xe8, 0x24, 0xbe, 0x21, 0xf6, 0x1c, 0x55, 0x13, 0x35, 0x0e, 0x83, 0x0c, 0xf4, 0x0e, + 0x35, 0x11, 0xe0, 0x0e, 0xe9, 0x0c, 0x9f, 0x07, 0xfa, 0x03, 0x8f, 0x01, 0x63, 0xfd, 0x96, 0xf7, + 0x84, 0xf1, 0x72, 0xf5, 0x6a, 0xf4, 0xae, 0xf3, 0x74, 0xfb, 0x7c, 0xfb, 0x54, 0xff, 0x8f, 0x01, + 0xb9, 0xff, 0xad, 0x01, 0x5a, 0x00, 0xd0, 0x05, 0x90, 0x0b, 0x1c, 0x0b, 0xde, 0x0d, 0x81, 0x0b, + 0xa1, 0x0a, 0x4b, 0x0c, 0x69, 0x08, 0x17, 0x05, 0x1d, 0x00, 0x32, 0xfc, 0x97, 0xfa, 0x60, 0xf9, + 0x9b, 0xfb, 0x1a, 0xfa, 0x09, 0xfb, 0xeb, 0xfa, 0x7f, 0xf8, 0x27, 0xfb, 0xe5, 0xfa, 0xa9, 0xf5, + 0x3e, 0xf3, 0x8f, 0xf5, 0xd7, 0xf7, 0x42, 0xf7, 0x93, 0xfc, 0xf4, 0xfc, 0x57, 0xfe, 0x71, 0x03, + 0x13, 0x01, 0xb4, 0x03, 0x79, 0x04, 0x6f, 0x07, 0xac, 0x12, 0x5a, 0x17, 0xd9, 0x1d, 0x6f, 0x1f, + 0x8c, 0x1c, 0x37, 0x1d, 0x0b, 0x18, 0x83, 0x16, 0xb8, 0x11, 0x51, 0x08, 0x85, 0x06, 0x0b, 0x04, + 0x19, 0x04, 0xbd, 0x01, 0x3b, 0x03, 0x66, 0x02, 0x3a, 0xfe, 0x0a, 0xfd, 0x93, 0xf8, 0xc6, 0xf3, + 0x2d, 0xf0, 0x43, 0xef, 0x04, 0xf0, 0xb3, 0xee, 0x0a, 0xf1, 0x72, 0xf2, 0xd5, 0xf5, 0xe9, 0xfb, + 0x14, 0xfe, 0x1c, 0x00, 0xcd, 0xff, 0x98, 0x00, 0x04, 0x08, 0x88, 0x0b, 0xb4, 0x0f, 0x50, 0x0d, + 0x38, 0x07, 0x46, 0x05, 0x3e, 0x01, 0x75, 0xff, 0x6c, 0xfa, 0x6e, 0xf0, 0x1f, 0xeb, 0x0e, 0xe7, + 0xac, 0xe6, 0x47, 0xe7, 0x8d, 0xe8, 0xea, 0xe7, 0xa2, 0xe4, 0x13, 0xe2, 0x7d, 0xe1, 0x99, 0xe0, + 0xef, 0xde, 0x76, 0xde, 0xd2, 0xe3, 0xaf, 0xe6, 0x21, 0xec, 0xa5, 0xf4, 0x4a, 0xfa, 0x24, 0x01, + 0xd9, 0x02, 0xb4, 0x05, 0x45, 0x09, 0x0d, 0x0b, 0x3a, 0x16, 0x41, 0x1c, 0xde, 0x1f, 0x08, 0x22, + 0x93, 0x20, 0x92, 0x21, 0x4c, 0x20, 0xaf, 0x1f, 0x12, 0x1b, 0x40, 0x0d, 0xfd, 0x06, 0x45, 0xff, + 0xd4, 0xfc, 0x2b, 0xfc, 0x9a, 0xf6, 0x0a, 0xf3, 0xd7, 0xee, 0x85, 0xed, 0x0b, 0xec, 0x7c, 0xe8, + 0x1b, 0xe6, 0x70, 0xe0, 0x0c, 0xe2, 0xfa, 0xe2, 0xc9, 0xe4, 0x8f, 0xe9, 0xe9, 0xea, 0x2b, 0xef, + 0x74, 0xf2, 0x90, 0xf5, 0xe5, 0xf9, 0xa0, 0xf9, 0xda, 0x01, 0xf7, 0x08, 0x5d, 0x0d, 0xb1, 0x10, + 0x14, 0x10, 0x11, 0x10, 0x73, 0x0f, 0xc5, 0x0b, 0xf7, 0x09, 0x44, 0x03, 0x6c, 0x00, 0xdd, 0xfc, + 0x79, 0xfd, 0xc9, 0x01, 0x8a, 0x02, 0x76, 0x06, 0xa2, 0x06, 0x62, 0x03, 0x89, 0x05, 0x6e, 0x05, + 0xa3, 0x02, 0x29, 0xff, 0xca, 0x00, 0x80, 0x02, 0xdc, 0x02, 0x43, 0x06, 0x4c, 0x07, 0x19, 0x0a, + 0x10, 0x0e, 0x42, 0x0d, 0x4a, 0x0d, 0xb4, 0x09, 0x51, 0x0b, 0x4f, 0x0f, 0x0a, 0x11, 0xec, 0x13, + 0xed, 0x11, 0x0a, 0x0e, 0xf8, 0x0c, 0x38, 0x0a, 0xb5, 0x08, 0xf2, 0x00, 0xf2, 0xfb, 0x70, 0xf5, + 0xf3, 0xf3, 0x4d, 0xf6, 0x04, 0xf3, 0x57, 0xf5, 0x70, 0xf4, 0x17, 0xf2, 0x18, 0xf2, 0x37, 0xf0, + 0x7d, 0xef, 0xfb, 0xec, 0x4e, 0xee, 0x5d, 0xf1, 0x16, 0xf2, 0xa9, 0xf6, 0x45, 0xfa, 0xc6, 0xff, + 0x56, 0x05, 0x94, 0x08, 0xca, 0x0c, 0x6c, 0x0a, 0x82, 0x0b, 0x52, 0x10, 0x7f, 0x15, 0x23, 0x1b, + 0x2b, 0x1c, 0x3e, 0x1b, 0x50, 0x1a, 0x92, 0x15, 0xbc, 0x15, 0x94, 0x10, 0x95, 0x09, 0xc1, 0x02, + 0x9c, 0xfd, 0xb8, 0xfd, 0x52, 0xfb, 0x2b, 0xfc, 0xeb, 0xfa, 0x0f, 0xf6, 0xce, 0xf5, 0x23, 0xf3, + 0x47, 0xf1, 0x19, 0xef, 0xaa, 0xeb, 0x6d, 0xee, 0x37, 0xed, 0xc1, 0xee, 0xaf, 0xf2, 0x0c, 0xf4, + 0xcd, 0xfb, 0x29, 0xfe, 0x92, 0xff, 0x6a, 0x01, 0x54, 0x04, 0x7a, 0x0c, 0xff, 0x12, 0xbf, 0x19, + 0x4a, 0x1d, 0x0b, 0x1c, 0x2e, 0x1c, 0xe5, 0x17, 0xbd, 0x19, 0xd1, 0x17, 0xf4, 0x0e, 0x58, 0x08, + 0xba, 0x01, 0x05, 0x02, 0xa6, 0x00, 0x2b, 0xfe, 0x4b, 0xfe, 0x55, 0xf9, 0x82, 0xf6, 0xd9, 0xf2, + 0x78, 0xef, 0xa6, 0xeb, 0x02, 0xe3, 0xba, 0xe3, 0xae, 0xe2, 0x57, 0xe4, 0xdc, 0xea, 0xfd, 0xee, + 0xdd, 0xf5, 0x28, 0xf9, 0xb2, 0xfb, 0x53, 0xfd, 0xaf, 0xfd, 0x5d, 0x03, 0x63, 0x0a, 0xd0, 0x0e, + 0x2d, 0x11, 0x34, 0x11, 0xd6, 0x10, 0xfe, 0x0f, 0x6c, 0x0f, 0x41, 0x0d, 0x1c, 0x07, 0x94, 0x02, + 0xc4, 0xfb, 0x61, 0xf9, 0x2f, 0xf8, 0xb0, 0xf6, 0x4c, 0xf6, 0x96, 0xf2, 0x1b, 0xf1, 0xc2, 0xf0, + 0x21, 0xf1, 0xf6, 0xf0, 0xf1, 0xea, 0x69, 0xeb, 0xf2, 0xeb, 0xf4, 0xec, 0x41, 0xf2, 0x40, 0xf3, + 0x18, 0xf6, 0x27, 0xf9, 0x58, 0xfb, 0xbd, 0xfe, 0xaa, 0xfd, 0xb9, 0x00, 0xd6, 0x06, 0x29, 0x0c, + 0x84, 0x11, 0xfd, 0x12, 0x45, 0x14, 0x61, 0x13, 0xe3, 0x11, 0x04, 0x11, 0x24, 0x0b, 0xd7, 0x05, + 0x5f, 0xfe, 0xf8, 0xfd, 0x39, 0xfd, 0x9f, 0xfa, 0xe6, 0xff, 0x53, 0x00, 0xaa, 0x00, 0x57, 0x00, + 0xe7, 0xfb, 0xc9, 0xfb, 0x15, 0xf8, 0x0b, 0xf9, 0x31, 0xfb, 0x94, 0xfa, 0xbb, 0xfe, 0xe6, 0xfe, + 0xd2, 0x01, 0x84, 0x06, 0x0b, 0x09, 0xa5, 0x0d, 0xfc, 0x0a, 0x70, 0x0a, 0x5a, 0x0e, 0x70, 0x0f, + 0x31, 0x14, 0x99, 0x14, 0xc2, 0x0f, 0xe2, 0x0b, 0x8e, 0x06, 0x99, 0x05, 0xe1, 0x00, 0x37, 0xfb, + 0x71, 0xf2, 0xc9, 0xec, 0x85, 0xeb, 0x3f, 0xea, 0x1c, 0xed, 0x35, 0xed, 0xb1, 0xe9, 0xed, 0xe7, + 0x05, 0xe4, 0x27, 0xe5, 0x6c, 0xe3, 0x4a, 0xe1, 0x02, 0xe6, 0xe7, 0xe5, 0x1f, 0xe9, 0x57, 0xee, + 0x24, 0xf3, 0x8b, 0xfc, 0xe8, 0xfe, 0x6e, 0x03, 0xaf, 0x04, 0xe6, 0x05, 0x81, 0x0d, 0x95, 0x13, + 0x1a, 0x19, 0x70, 0x1e, 0xed, 0x21, 0xc1, 0x25, 0x51, 0x26, 0x3e, 0x2a, 0x80, 0x29, 0x2f, 0x23, + 0x22, 0x1b, 0x67, 0x15, 0x51, 0x13, 0x38, 0x11, 0xde, 0x0f, 0x07, 0x0d, 0x9d, 0x07, 0x24, 0x05, + 0x20, 0x00, 0xf0, 0xfe, 0x8b, 0xf9, 0xee, 0xf2, 0xba, 0xf0, 0x4a, 0xeb, 0x07, 0xec, 0x74, 0xeb, + 0x08, 0xea, 0xc6, 0xed, 0x97, 0xed, 0x3e, 0xf0, 0x66, 0xf0, 0x2e, 0xf1, 0x45, 0xf6, 0xf4, 0xfb, + 0x98, 0x00, 0x0b, 0x06, 0xf1, 0x08, 0xb2, 0x0a, 0x46, 0x09, 0xab, 0x08, 0x49, 0x06, 0xc3, 0x03, + 0x70, 0xff, 0x87, 0xfb, 0xb0, 0xfc, 0x19, 0xfd, 0xfb, 0xfd, 0x12, 0x00, 0x9e, 0xfe, 0x96, 0xfd, + 0x82, 0xfb, 0x45, 0xfe, 0xb9, 0xfd, 0x82, 0xf7, 0x1a, 0xf8, 0xa0, 0xf5, 0x09, 0xf6, 0xa7, 0xfa, + 0xd8, 0xfb, 0xee, 0x02, 0x98, 0x06, 0x67, 0x0a, 0x43, 0x0d, 0x4d, 0x0a, 0x81, 0x0c, 0x28, 0x0f, + 0x09, 0x12, 0x7b, 0x18, 0xc0, 0x18, 0x68, 0x1a, 0x06, 0x19, 0x1f, 0x17, 0xb4, 0x15, 0xb9, 0x0f, + 0x93, 0x0b, 0x37, 0x04, 0xcf, 0xff, 0x17, 0xfd, 0xda, 0xf8, 0xee, 0xf8, 0xc2, 0xf5, 0x4f, 0xf4, + 0xdb, 0xf0, 0x2b, 0xed, 0x59, 0xec, 0x70, 0xe8, 0x60, 0xe9, 0xdb, 0xe8, 0xd6, 0xe7, 0x3a, 0xed, + 0xf2, 0xee, 0xa0, 0xf4, 0xc4, 0xf8, 0xed, 0xfb, 0x56, 0x03, 0xbe, 0x02, 0xe0, 0x02, 0x8c, 0x06, + 0xf9, 0x09, 0xfc, 0x10, 0x43, 0x12, 0x60, 0x12, 0x88, 0x10, 0x18, 0x0c, 0xa7, 0x0b, 0x22, 0x0a, + 0x98, 0x04, 0x4e, 0xfc, 0xed, 0xf6, 0x05, 0xf3, 0xec, 0xef, 0x50, 0xf1, 0x86, 0xf2, 0xbd, 0xf2, + 0xe9, 0xf2, 0xe5, 0xf1, 0x4c, 0xf2, 0x2f, 0xf1, 0xa1, 0xf0, 0x68, 0xf2, 0x68, 0xf2, 0x98, 0xf6, + 0x87, 0xf8, 0x93, 0xfe, 0x1e, 0x05, 0xce, 0x08, 0xad, 0x0c, 0xa2, 0x0b, 0x18, 0x0e, 0x25, 0x13, + 0xd7, 0x15, 0x45, 0x1c, 0xc1, 0x1e, 0x5b, 0x1f, 0xb3, 0x1d, 0x49, 0x18, 0xf1, 0x17, 0x49, 0x16, + 0x06, 0x11, 0x40, 0x09, 0x45, 0x02, 0x50, 0xfd, 0x7e, 0xf9, 0x99, 0xf9, 0x46, 0xf9, 0x37, 0xf7, + 0x64, 0xf3, 0x4d, 0xed, 0x62, 0xec, 0xe3, 0xe7, 0x8f, 0xe2, 0x38, 0xe0, 0xe8, 0xdc, 0x81, 0xdf, + 0x89, 0xdf, 0x09, 0xe4, 0x71, 0xea, 0xcf, 0xeb, 0xae, 0xf1, 0xfd, 0xf2, 0xe6, 0xf3, 0xdf, 0xf8, + 0xef, 0xfc, 0x1b, 0x02, 0xfd, 0x04, 0xc2, 0x07, 0xea, 0x0a, 0xfc, 0x0a, 0x74, 0x0f, 0x16, 0x0f, + 0x05, 0x0d, 0x2f, 0x0b, 0x43, 0x05, 0x44, 0x03, 0x0c, 0x03, 0xd7, 0x03, 0xb7, 0x06, 0x17, 0x05, + 0x2f, 0x05, 0x1c, 0x03, 0x4e, 0x04, 0xe5, 0x03, 0x9c, 0xff, 0x3a, 0xfe, 0x02, 0xfa, 0xee, 0xf9, + 0xda, 0xfa, 0xf0, 0xf9, 0xfc, 0xfc, 0xcd, 0xfb, 0x6b, 0xfe, 0x55, 0x00, 0x8c, 0xfd, 0x9f, 0x00, + 0x99, 0x01, 0x35, 0x04, 0xb3, 0x08, 0x07, 0x0a, 0xd4, 0x0f, 0x45, 0x0f, 0xf4, 0x0e, 0xe9, 0x0c, + 0x67, 0x09, 0x43, 0x07, 0xe8, 0xff, 0xe2, 0xfc, 0x17, 0xfc, 0x3b, 0xf9, 0x33, 0xfb, 0xfc, 0xfc, + 0x45, 0xfd, 0x2e, 0xfb, 0x2c, 0xf9, 0x43, 0xf7, 0x4e, 0xf4, 0x66, 0xf5, 0xa5, 0xf4, 0x67, 0xf3, + 0xcf, 0xf5, 0x95, 0xf6, 0x7d, 0xfa, 0xb1, 0xfd, 0xec, 0x04, 0xa5, 0x0c, 0x60, 0x0e, 0xaf, 0x10, + 0xbe, 0x11, 0x14, 0x14, 0x98, 0x1a, 0x72, 0x1d, 0x8a, 0x1f, 0x77, 0x1c, 0xac, 0x1a, 0x10, 0x18, + 0x37, 0x14, 0xec, 0x10, 0xc0, 0x08, 0x95, 0x00, 0x8a, 0xfb, 0x29, 0xf7, 0x0b, 0xf7, 0x22, 0xf6, + 0xf6, 0xf2, 0xef, 0xed, 0xad, 0xe9, 0x5f, 0xe6, 0x20, 0xe3, 0x1e, 0xe3, 0xe3, 0xe2, 0x4c, 0xe0, + 0xc1, 0xe1, 0x2a, 0xe3, 0x81, 0xea, 0x9c, 0xf1, 0x15, 0xf7, 0xeb, 0xfb, 0x46, 0xfd, 0xd0, 0x00, + 0xdc, 0x03, 0xd9, 0x07, 0xfb, 0x10, 0x07, 0x14, 0x0d, 0x1b, 0x54, 0x1e, 0xa7, 0x1d, 0x09, 0x20, + 0xea, 0x20, 0xee, 0x20, 0x02, 0x1b, 0x66, 0x14, 0x5e, 0x10, 0xe5, 0x09, 0x08, 0x09, 0x92, 0x06, + 0xd1, 0x02, 0x94, 0x01, 0x5a, 0xfd, 0xd8, 0xfd, 0x56, 0xfc, 0x63, 0xf9, 0xcf, 0xf6, 0x9d, 0xf0, + 0xbe, 0xf1, 0x5c, 0xf1, 0x4f, 0xf3, 0x0d, 0xf7, 0x0e, 0xf9, 0x6b, 0xfc, 0xb6, 0xfc, 0xdb, 0xfd, + 0x3d, 0x00, 0xf5, 0x01, 0x8e, 0x07, 0x0f, 0x09, 0x69, 0x0c, 0x01, 0x0f, 0xa6, 0x0b, 0x4f, 0x0b, + 0xa6, 0x06, 0x0d, 0x02, 0x22, 0xfe, 0x1d, 0xf7, 0xa3, 0xf5, 0x61, 0xf2, 0x69, 0xf1, 0x7a, 0xf3, + 0x46, 0xf3, 0xc8, 0xf3, 0xd0, 0xf0, 0x99, 0xf1, 0xef, 0xf2, 0xd9, 0xef, 0x98, 0xee, 0x75, 0xeb, + 0x70, 0xeb, 0x27, 0xed, 0xed, 0xef, 0xfb, 0xf4, 0xdd, 0xf6, 0x76, 0xfa, 0x34, 0xff, 0x4d, 0xfe, + 0x6f, 0x00, 0x34, 0x01, 0x77, 0x03, 0xf3, 0x05, 0x97, 0x09, 0x85, 0x0d, 0x1f, 0x0c, 0x48, 0x0d, + 0x5d, 0x0c, 0xa2, 0x0b, 0x37, 0x0c, 0x55, 0x07, 0x8e, 0x03, 0xa1, 0xfe, 0x96, 0xfc, 0x79, 0xfd, + 0x5e, 0xfd, 0xdf, 0xff, 0x93, 0xfe, 0x11, 0xfc, 0x0b, 0xfb, 0x22, 0xf8, 0x84, 0xf8, 0x95, 0xf6, + 0x0a, 0xf5, 0xb2, 0xf5, 0x4b, 0xf7, 0x7c, 0xfa, 0x02, 0xfb, 0x76, 0xfd, 0x5a, 0x02, 0x00, 0x02, + 0x69, 0x02, 0xa1, 0x02, 0x5c, 0x05, 0x1b, 0x08, 0xda, 0x09, 0x8f, 0x0c, 0x44, 0x0b, 0x23, 0x0b, + 0x9c, 0x07, 0x56, 0x05, 0x29, 0x05, 0x4c, 0xfd, 0xdf, 0xf6, 0x71, 0xf1, 0xfe, 0xec, 0x62, 0xee, + 0xae, 0xef, 0x9c, 0xf1, 0xd4, 0xef, 0x28, 0xee, 0xbe, 0xee, 0x57, 0xec, 0xef, 0xee, 0x33, 0xf0, + 0x82, 0xed, 0x3f, 0xf0, 0x62, 0xf1, 0x27, 0xf6, 0x0b, 0xfb, 0x0d, 0x00, 0x3e, 0x07, 0x57, 0x09, + 0x6f, 0x0e, 0x69, 0x13, 0x76, 0x16, 0x69, 0x1d, 0xf4, 0x21, 0x67, 0x28, 0x7d, 0x2a, 0x79, 0x29, + 0x62, 0x28, 0x45, 0x27, 0xfe, 0x27, 0x67, 0x21, 0x7c, 0x19, 0xe5, 0x12, 0xd9, 0x0a, 0xf9, 0x09, + 0x50, 0x07, 0x82, 0x05, 0x64, 0x01, 0x18, 0xf9, 0x8c, 0xf6, 0x90, 0xf0, 0xe5, 0xeb, 0x4d, 0xe9, + 0x44, 0xe2, 0xe1, 0xe0, 0xd6, 0xde, 0x9f, 0xe0, 0x36, 0xe5, 0x82, 0xe7, 0xc3, 0xeb, 0xc8, 0xee, + 0x04, 0xf1, 0x36, 0xf4, 0xd8, 0xf6, 0xe6, 0xfb, 0x8b, 0xfe, 0xa7, 0x03, 0x49, 0x09, 0x58, 0x0b, + 0x48, 0x0d, 0x4a, 0x0d, 0x04, 0x0c, 0xfa, 0x08, 0x3b, 0x05, 0xdf, 0x02, 0x14, 0xff, 0x85, 0xff, + 0x81, 0x00, 0x04, 0x01, 0x94, 0x00, 0xf2, 0xfd, 0x61, 0x00, 0x23, 0x02, 0x08, 0x04, 0x42, 0x06, + 0x8d, 0x01, 0xde, 0x01, 0xdb, 0x02, 0x10, 0x03, 0x36, 0x06, 0x42, 0x07, 0x75, 0x09, 0xa8, 0x0d, + 0x8d, 0x0e, 0x52, 0x10, 0x0f, 0x0f, 0xe7, 0x0f, 0x2c, 0x11, 0x08, 0x14, 0x6a, 0x18, 0x66, 0x18, + 0x65, 0x16, 0x56, 0x11, 0xa4, 0x0d, 0x77, 0x09, 0xfe, 0x01, 0x62, 0xfd, 0x98, 0xf5, 0xfc, 0xf1, + 0xf0, 0xef, 0x8f, 0xef, 0xda, 0xf2, 0x35, 0xf0, 0xff, 0xee, 0x4c, 0xed, 0xea, 0xe9, 0x1c, 0xec, + 0x2b, 0xea, 0x96, 0xe9, 0xc4, 0xe9, 0x66, 0xeb, 0xc2, 0xf0, 0x75, 0xf1, 0x0e, 0xf5, 0x4c, 0xfd, + 0x36, 0xff, 0x09, 0x03, 0xd0, 0x03, 0x6d, 0x06, 0xca, 0x09, 0x62, 0x0d, 0x77, 0x11, 0xd3, 0x10, + 0x92, 0x0f, 0x1e, 0x0c, 0x9b, 0x09, 0xc1, 0x09, 0x82, 0x06, 0x59, 0x01, 0xf0, 0xf9, 0x3c, 0xf6, + 0xa7, 0xf5, 0x20, 0xf5, 0x78, 0xf7, 0x31, 0xf5, 0x94, 0xf2, 0x8f, 0xf2, 0x90, 0xef, 0x07, 0xf2, + 0xc6, 0xf0, 0xcf, 0xed, 0xb2, 0xed, 0x75, 0xec, 0x6e, 0xf1, 0xce, 0xf5, 0x4f, 0xf8, 0xf9, 0xfe, + 0xf4, 0xfe, 0x08, 0x00, 0x05, 0x01, 0x58, 0x02, 0xa5, 0x06, 0x6d, 0x09, 0x4d, 0x0f, 0x2c, 0x14, + 0x56, 0x14, 0x5c, 0x13, 0x61, 0x13, 0x4d, 0x16, 0xb7, 0x13, 0xe8, 0x0e, 0xac, 0x08, 0x4e, 0x01, + 0x80, 0xfe, 0x87, 0xfc, 0xc1, 0xfc, 0xe7, 0xf9, 0x89, 0xf5, 0xcb, 0xf4, 0xe3, 0xf0, 0x68, 0xf1, + 0x81, 0xef, 0x23, 0xeb, 0x1a, 0xea, 0x97, 0xe8, 0x72, 0xeb, 0xc6, 0xec, 0x4b, 0xed, 0x25, 0xf2, + 0x36, 0xf3, 0x93, 0xf7, 0x8a, 0xfd, 0xaf, 0x00, 0xb4, 0x05, 0x3f, 0x0a, 0x87, 0x0f, 0x6d, 0x15, + 0xbb, 0x18, 0x9d, 0x1a, 0x5b, 0x19, 0x0d, 0x18, 0xee, 0x15, 0x80, 0x12, 0xeb, 0x0e, 0x1f, 0x0a, + 0x52, 0x08, 0xa1, 0x07, 0x48, 0x0a, 0x11, 0x09, 0x8b, 0x03, 0x23, 0x04, 0x68, 0x00, 0x32, 0xfe, + 0xe0, 0xfb, 0x14, 0xf6, 0xc3, 0xf4, 0xd3, 0xf1, 0xc5, 0xf1, 0xfe, 0xf4, 0x47, 0xf4, 0xf5, 0xf7, + 0xb6, 0xfb, 0x63, 0xfe, 0x39, 0x01, 0xca, 0xff, 0x64, 0x01, 0xf9, 0x00, 0x4e, 0x04, 0x82, 0x0a, + 0x45, 0x0b, 0xa5, 0x0c, 0x8b, 0x0a, 0xce, 0x09, 0x99, 0x09, 0x20, 0x07, 0x85, 0x04, 0xd0, 0xfd, + 0x92, 0xfa, 0x98, 0xf9, 0x87, 0xfa, 0x17, 0xfd, 0x32, 0xfb, 0xce, 0xfa, 0xe7, 0xf6, 0x21, 0xf6, + 0xeb, 0xf9, 0x3f, 0xf8, 0x26, 0xf9, 0x29, 0xf9, 0xa1, 0xfa, 0x9c, 0x00, 0x65, 0x00, 0xce, 0x03, + 0xf4, 0x08, 0x76, 0x0c, 0xa6, 0x11, 0x9c, 0x11, 0x69, 0x13, 0x20, 0x14, 0x5e, 0x15, 0x0f, 0x19, + 0x51, 0x1a, 0x8b, 0x19, 0x0d, 0x15, 0xda, 0x10, 0xc7, 0x0e, 0x62, 0x08, 0xe9, 0x00, 0xf1, 0xf8, + 0xfc, 0xf1, 0xe7, 0xed, 0x46, 0xed, 0x6d, 0xee, 0xe2, 0xeb, 0x2a, 0xea, 0x9c, 0xe8, 0xb6, 0xe5, + 0x06, 0xe8, 0x4f, 0xe8, 0x1d, 0xe7, 0x38, 0xe6, 0x4d, 0xe6, 0xdf, 0xea, 0xd3, 0xed, 0x92, 0xf3, + 0x6b, 0xfa, 0x84, 0xfc, 0x05, 0x01, 0xd8, 0x02, 0x71, 0x06, 0x65, 0x0a, 0xe0, 0x0e, 0xad, 0x16, + 0x03, 0x1b, 0xfe, 0x1b, 0x02, 0x1a, 0xc4, 0x16, 0x4d, 0x18, 0xc3, 0x17, 0x9f, 0x15, 0x9a, 0x10, + 0xe4, 0x0a, 0x63, 0x08, 0x49, 0x07, 0x19, 0x09, 0x8e, 0x06, 0x40, 0x02, 0xb6, 0xff, 0xd9, 0xfb, + 0x54, 0xfc, 0xa4, 0xf8, 0x83, 0xf4, 0xc9, 0xf0, 0x0a, 0xec, 0x6c, 0xee, 0x3d, 0xef, 0x4a, 0xf0, + 0x1b, 0xf3, 0x75, 0xf3, 0x1b, 0xf6, 0xd1, 0xf5, 0x19, 0xf6, 0x51, 0xf7, 0x13, 0xf7, 0xe0, 0xf9, + 0x28, 0xfd, 0xa7, 0x00, 0xbd, 0x02, 0x38, 0x01, 0x06, 0x02, 0x33, 0xff, 0x13, 0xfd, 0x1f, 0xfb, + 0x63, 0xf5, 0xbd, 0xf3, 0x4c, 0xf3, 0xbb, 0xf5, 0xd1, 0xf6, 0x94, 0xf4, 0x0a, 0xf7, 0x69, 0xf6, + 0x32, 0xf8, 0x23, 0xfa, 0x2b, 0xf8, 0x0c, 0xf8, 0x27, 0xf7, 0xd6, 0xf8, 0x74, 0xfb, 0xb3, 0xfb, + 0x96, 0xfe, 0x28, 0xff, 0x7a, 0x03, 0x0f, 0x07, 0xff, 0x07, 0x68, 0x0b, 0xee, 0x0b, 0x09, 0x11, + 0x15, 0x17, 0x63, 0x19, 0x30, 0x1c, 0xbc, 0x17, 0x94, 0x16, 0xdb, 0x15, 0xad, 0x13, 0x73, 0x11, + 0x63, 0x0a, 0xa1, 0x04, 0x1c, 0x01, 0xec, 0x00, 0x98, 0x03, 0x45, 0x01, 0xc2, 0x00, 0x89, 0xfc, + 0xfe, 0xf7, 0x3a, 0xf6, 0xe1, 0xf3, 0xbe, 0xf2, 0xba, 0xef, 0x99, 0xee, 0x44, 0xf2, 0x47, 0xf1, + 0xd8, 0xf2, 0x1d, 0xf7, 0x95, 0xfb, 0x09, 0xff, 0xaf, 0x01, 0x18, 0x04, 0x08, 0x04, 0x55, 0x07, + 0x31, 0x0b, 0xe2, 0x0c, 0x4c, 0x0f, 0x74, 0x0c, 0x05, 0x0a, 0x05, 0x09, 0x05, 0x07, 0x46, 0x03, + 0xc7, 0xfb, 0xa6, 0xf5, 0xd0, 0xf2, 0xe6, 0xf1, 0x66, 0xf4, 0x7b, 0xf3, 0xd7, 0xf1, 0xba, 0xee, + 0x50, 0xeb, 0x09, 0xed, 0x2f, 0xee, 0xac, 0xee, 0x9f, 0xee, 0xb2, 0xee, 0xc7, 0xf3, 0x5b, 0xf7, + 0xa1, 0xfd, 0xd0, 0x03, 0x93, 0x08, 0x41, 0x0d, 0x03, 0x0f, 0x4a, 0x13, 0x21, 0x15, 0x25, 0x18, + 0x9f, 0x1d, 0xa2, 0x21, 0xf3, 0x25, 0x0b, 0x23, 0x5c, 0x21, 0x6a, 0x23, 0x6d, 0x20, 0xfc, 0x1c, + 0x4f, 0x15, 0xa5, 0x0c, 0xa2, 0x05, 0x0f, 0x00, 0x02, 0x01, 0xbf, 0xfb, 0x3c, 0xf7, 0x95, 0xf4, + 0x25, 0xee, 0xef, 0xed, 0x85, 0xec, 0x7d, 0xe9, 0xf2, 0xe6, 0x8f, 0xe2, 0x3c, 0xe4, 0xf1, 0xe3, + 0x3d, 0xe5, 0xbe, 0xe8, 0x6d, 0xea, 0xd1, 0xee, 0x0f, 0xf2, 0xa3, 0xf5, 0xa6, 0xf7, 0x93, 0xfa, + 0xc1, 0x00, 0x1b, 0x05, 0xd3, 0x0c, 0x89, 0x10, 0xcb, 0x0e, 0xf1, 0x0d, 0x5b, 0x09, 0xf4, 0x07, + 0xad, 0x06, 0xa4, 0x02, 0x2f, 0x02, 0xe9, 0x00, 0x2e, 0x05, 0x6c, 0x07, 0x4a, 0x05, 0x1b, 0x06, + 0x8c, 0x03, 0xf3, 0x02, 0x8f, 0x04, 0x96, 0x02, 0xdc, 0x01, 0xfd, 0xfd, 0xa6, 0xfc, 0x58, 0xfe, + 0x55, 0xfe, 0x76, 0x00, 0x97, 0x02, 0x65, 0x06, 0xc4, 0x07, 0x53, 0x06, 0x1b, 0x06, 0xa2, 0x03, + 0x78, 0x04, 0xfc, 0x06, 0x35, 0x09, 0xac, 0x09, 0x5c, 0x06, 0x40, 0x06, 0x87, 0x03, 0x59, 0x03, + 0x64, 0x02, 0xb4, 0xfb, 0xb9, 0xf7, 0x30, 0xf3, 0xeb, 0xf2, 0x5c, 0xf4, 0xeb, 0xf3, 0xbf, 0xf5, + 0xd2, 0xf2, 0x15, 0xf0, 0xb9, 0xf0, 0x47, 0xef, 0xe7, 0xef, 0x1e, 0xef, 0xed, 0xee, 0x37, 0xf3, + 0x81, 0xf5, 0x44, 0xf8, 0xe1, 0xfa, 0x6f, 0xff, 0x08, 0x03, 0x29, 0x06, 0x4f, 0x09, 0x3f, 0x0a, + 0xab, 0x0e, 0x59, 0x12, 0x67, 0x17, 0x00, 0x1c, 0xc0, 0x19, 0xde, 0x17, 0xb0, 0x14, 0x58, 0x13, + 0x44, 0x11, 0xd4, 0x0a, 0x4b, 0x05, 0xf8, 0xfd, 0xaf, 0xfa, 0x28, 0xfd, 0x11, 0xfa, 0xbd, 0xf9, + 0x2a, 0xf8, 0xe1, 0xf3, 0x2a, 0xf3, 0xd0, 0xf0, 0x52, 0xf0, 0xcd, 0xec, 0x32, 0xe8, 0x6a, 0xea, + 0xd7, 0xe9, 0xf2, 0xec, 0x34, 0xf2, 0x16, 0xf6, 0xb5, 0xf9, 0x61, 0xfb, 0xdb, 0xff, 0xce, 0x02, + 0x8e, 0x07, 0x3f, 0x0e, 0x96, 0x12, 0xd9, 0x17, 0xca, 0x16, 0x6e, 0x15, 0xef, 0x15, 0x3a, 0x16, + 0x45, 0x17, 0x13, 0x11, 0xd0, 0x0b, 0xc0, 0x06, 0x93, 0x01, 0xdf, 0x04, 0x3a, 0x03, 0xb1, 0x01, + 0x7f, 0xff, 0x92, 0xf8, 0x3c, 0xf6, 0x4c, 0xf3, 0xd2, 0xf0, 0x46, 0xef, 0x87, 0xea, 0x7b, 0xec, + 0x77, 0xed, 0xf5, 0xee, 0x8f, 0xf2, 0x5f, 0xf5, 0x90, 0xf8, 0xda, 0xfa, 0x50, 0xfe, 0x0e, 0x01, + 0x69, 0x02, 0xd2, 0x04, 0x2a, 0x07, 0xba, 0x0c, 0xef, 0x0f, 0x0d, 0x10, 0x01, 0x11, 0xf4, 0x0e, + 0xf9, 0x0b, 0x90, 0x08, 0x95, 0x03, 0x23, 0xfd, 0x85, 0xf7, 0xb3, 0xf9, 0x89, 0xf8, 0xf8, 0xf6, + 0x6d, 0xf7, 0xd4, 0xf4, 0xd0, 0xf4, 0xf0, 0xf5, 0xc2, 0xf5, 0x5e, 0xf6, 0x6c, 0xf3, 0x54, 0xf4, + 0x3a, 0xf4, 0x00, 0xf4, 0xe1, 0xf6, 0xa1, 0xf7, 0x76, 0xfb, 0x2b, 0x00, 0xb1, 0x01, 0xaa, 0x03, + 0xa2, 0x03, 0xa4, 0x06, 0x71, 0x09, 0xf4, 0x0e, 0x07, 0x12, 0x05, 0x12, 0xd5, 0x11, 0xf4, 0x0d, + 0xc7, 0x0c, 0xdb, 0x09, 0xd1, 0x04, 0x3c, 0x01, 0x59, 0xfb, 0x74, 0xfd, 0xa4, 0xff, 0x5e, 0x01, + 0x39, 0x05, 0x06, 0x02, 0x8b, 0xfe, 0xa3, 0xfc, 0x83, 0xfb, 0xc8, 0xfe, 0x68, 0xfc, 0x9c, 0xfb, + 0x69, 0xfd, 0x8a, 0xfd, 0xec, 0xfd, 0xd7, 0xfe, 0x4a, 0x04, 0xcc, 0x07, 0x0d, 0x09, 0x32, 0x0b, + 0x4b, 0x09, 0xca, 0x09, 0x67, 0x0a, 0xde, 0x0c, 0xe3, 0x0e, 0xaf, 0x0c, 0x0a, 0x0a, 0x9b, 0x05, + 0xc8, 0x03, 0x4e, 0x01, 0xc9, 0xfa, 0x6d, 0xf5, 0x6a, 0xee, 0xce, 0xec, 0xf8, 0xed, 0x74, 0xec, + 0x93, 0xee, 0x1e, 0xec, 0xf9, 0xe8, 0x91, 0xea, 0x72, 0xe9, 0x65, 0xec, 0xb4, 0xeb, 0x5c, 0xe9, + 0x44, 0xeb, 0xdc, 0xeb, 0x6b, 0xf2, 0x59, 0xf9, 0x10, 0xff, 0xad, 0x03, 0xa8, 0x03, 0x16, 0x07, + 0x88, 0x09, 0x1a, 0x0d, 0x5d, 0x12, 0x1c, 0x18, 0x3e, 0x1f, 0x0b, 0x21, 0xce, 0x21, 0x8a, 0x22, + 0xed, 0x21, 0x0b, 0x22, 0x40, 0x1e, 0x5b, 0x1a, 0x7f, 0x13, 0x97, 0x0d, 0x85, 0x0d, 0x2e, 0x0a, + 0x32, 0x07, 0xa0, 0x03, 0xce, 0xfe, 0x0b, 0xfc, 0x26, 0xf8, 0xe9, 0xf6, 0x1b, 0xf2, 0x20, 0xec, + 0xc9, 0xe9, 0x35, 0xe6, 0xce, 0xe4, 0x59, 0xe5, 0xd8, 0xe6, 0x25, 0xe9, 0x73, 0xea, 0x3b, 0xee, + 0xd3, 0xef, 0x4f, 0xf2, 0xa5, 0xf7, 0x7e, 0xfb, 0x15, 0x02, 0x97, 0x07, 0x4c, 0x09, 0x08, 0x09, + 0xfb, 0x06, 0xd9, 0x06, 0x53, 0x04, 0x09, 0x03, 0xf6, 0xfe, 0x33, 0xfa, 0x90, 0xfc, 0xdb, 0xfd, + 0xb6, 0xff, 0xfe, 0x00, 0xb0, 0xff, 0xa8, 0xff, 0x3e, 0xfd, 0xdf, 0xfc, 0xa1, 0xfc, 0x16, 0xf9, + 0x91, 0xf9, 0x82, 0xf9, 0x20, 0xfb, 0xf4, 0xfe, 0x8d, 0x01, 0x23, 0x07, 0xfd, 0x08, 0x71, 0x0a, + 0x91, 0x0c, 0xc5, 0x0c, 0xe0, 0x0f, 0xf7, 0x10, 0x1f, 0x15, 0x9c, 0x16, 0xa6, 0x14, 0xf4, 0x14, + 0x9a, 0x11, 0x4d, 0x10, 0x2b, 0x0e, 0x2b, 0x0a, 0x6a, 0x04, 0x13, 0xfb, 0x2f, 0xf7, 0xac, 0xf3, + 0x36, 0xf2, 0x6f, 0xf3, 0x5b, 0xf0, 0x6c, 0xec, 0xd2, 0xe8, 0x2e, 0xe7, 0x9d, 0xe8, 0xca, 0xe6, + 0x69, 0xe8, 0x75, 0xe9, 0xf3, 0xea, 0xd4, 0xed, 0x6a, 0xee, 0x90, 0xf3, 0x84, 0xf9, 0x0b, 0xfe, + 0xa4, 0x02, 0x6b, 0x04, 0x3e, 0x08, 0x53, 0x0a, 0x4a, 0x0e, 0xcf, 0x12, 0xb0, 0x13, 0x92, 0x13, + 0x5f, 0x12, 0xac, 0x11, 0xb7, 0x0f, 0xa5, 0x0a, 0x25, 0x04, 0xc5, 0xfb, 0x8d, 0xf7, 0x75, 0xf8, + 0xf8, 0xf7, 0xba, 0xf9, 0xc1, 0xfa, 0x33, 0xf9, 0x56, 0xf7, 0xd5, 0xf5, 0x96, 0xf7, 0x0a, 0xf7, + 0xdc, 0xf5, 0x50, 0xf5, 0x56, 0xf5, 0xbc, 0xf7, 0x64, 0xfb, 0x13, 0x02, 0x0c, 0x06, 0x95, 0x07, + 0xec, 0x0b, 0x45, 0x0d, 0x84, 0x10, 0x0a, 0x13, 0x12, 0x16, 0x7f, 0x1a, 0x73, 0x19, 0xee, 0x18, + 0xf5, 0x17, 0xfd, 0x15, 0xae, 0x16, 0xbd, 0x11, 0xc3, 0x0c, 0x0c, 0x06, 0xac, 0x00, 0xe6, 0xff, + 0x84, 0xfe, 0x94, 0xfe, 0xf4, 0xfb, 0x99, 0xf8, 0xca, 0xf5, 0x04, 0xf2, 0x6a, 0xf1, 0xba, 0xed, + 0xa5, 0xeb, 0x01, 0xe9, 0xa5, 0xe6, 0xde, 0xe7, 0x07, 0xe8, 0x5b, 0xec, 0x1e, 0xf1, 0x60, 0xf2, + 0xd0, 0xf5, 0xe2, 0xf4, 0x42, 0xf6, 0x7c, 0xf8, 0x11, 0xfa, 0x3c, 0x00, 0x01, 0x05, 0x0b, 0x0a, + 0xf8, 0x0e, 0xfa, 0x0e, 0x4f, 0x0e, 0x0d, 0x0a, 0x95, 0x08, 0x51, 0x04, 0x5d, 0xff, 0x37, 0x01, + 0xc8, 0x01, 0x38, 0x02, 0x4d, 0x02, 0x8b, 0x01, 0x60, 0x02, 0x92, 0x01, 0x0a, 0x03, 0xe7, 0x02, + 0xcb, 0x00, 0xaf, 0xff, 0x04, 0xfd, 0x1a, 0xfc, 0x92, 0xfb, 0x9f, 0xfb, 0xb3, 0xfd, 0xb1, 0xfd, + 0x16, 0x00, 0x39, 0xff, 0x55, 0xfe, 0x3a, 0x00, 0x2c, 0x00, 0xfd, 0x04, 0xfb, 0x07, 0x5a, 0x09, + 0x7a, 0x0b, 0x71, 0x08, 0x74, 0x08, 0xef, 0x05, 0x7d, 0x03, 0x14, 0x01, 0xa4, 0xfa, 0x88, 0xf8, + 0xc1, 0xf7, 0xac, 0xf8, 0x0b, 0xfd, 0xbe, 0xfd, 0xa7, 0xfd, 0x7f, 0xfa, 0x58, 0xf8, 0x26, 0xf9, + 0x29, 0xf8, 0x05, 0xf8, 0x2c, 0xf8, 0xac, 0xfa, 0x90, 0xfb, 0xf8, 0xfd, 0xdb, 0x04, 0xb1, 0x08, + 0x3e, 0x0c, 0x5a, 0x0c, 0xec, 0x0b, 0x9d, 0x0d, 0xce, 0x0d, 0xec, 0x12, 0x00, 0x16, 0x23, 0x16, + 0x47, 0x17, 0x7c, 0x13, 0xa1, 0x12, 0x5f, 0x10, 0x76, 0x0a, 0x17, 0x05, 0xe4, 0xfb, 0x84, 0xf5, + 0xf4, 0xf2, 0x1b, 0xef, 0x65, 0xef, 0xda, 0xec, 0x29, 0xea, 0x15, 0xe8, 0x9f, 0xe6, 0x26, 0xe7, + 0x9c, 0xe6, 0xa5, 0xe6, 0xf4, 0xe4, 0x50, 0xe6, 0x55, 0xea, 0x3d, 0xee, 0x9e, 0xf5, 0xfe, 0xf7, + 0x97, 0xfa, 0x2e, 0xfd, 0x85, 0xfd, 0x0a, 0x03, 0xfb, 0x04, 0xfc, 0x08, 0xc3, 0x0f, 0x18, 0x11, + 0x22, 0x15, 0xe3, 0x15, 0x5d, 0x18, 0x10, 0x1a, 0x1b, 0x16, 0xa9, 0x14, 0xb2, 0x0c, 0x14, 0x06, + 0x06, 0x05, 0x6d, 0x02, 0xe1, 0x03, 0xd0, 0x01, 0xee, 0x01, 0x69, 0x01, 0x12, 0xfd, 0x08, 0xfd, + 0xd2, 0xfa, 0xa5, 0xf8, 0x38, 0xf7, 0x04, 0xf7, 0xb5, 0xf7, 0xca, 0xf6, 0x52, 0xfa, 0x26, 0xfb, + 0xfc, 0xfb, 0x53, 0xff, 0x90, 0xfd, 0x7d, 0xff, 0x09, 0x01, 0x57, 0x02, 0x03, 0x07, 0x06, 0x08, + 0xe6, 0x0b, 0x70, 0x0c, 0xb7, 0x09, 0x95, 0x09, 0x33, 0x04, 0xd6, 0x01, 0x3c, 0xfd, 0x87, 0xf6, + 0x38, 0xf7, 0x3d, 0xf7, 0xf3, 0xf9, 0x9d, 0xfb, 0x27, 0xfb, 0xe8, 0xfc, 0x38, 0xfb, 0x9b, 0xfb, + 0x9c, 0xfc, 0x18, 0xfc, 0xc7, 0xfb, 0x41, 0xfb, 0xd7, 0xfc, 0x88, 0xfd, 0x84, 0xff, 0x37, 0x03, + 0x7e, 0x05, 0xec, 0x08, 0xc2, 0x07, 0x03, 0x08, 0x09, 0x08, 0x10, 0x06, 0xcc, 0x0a, 0x16, 0x0c, + 0xbf, 0x0d, 0xcf, 0x10, 0xa8, 0x10, 0xe4, 0x11, 0x17, 0x0f, 0x17, 0x0d, 0x5f, 0x08, 0xca, 0xff, + 0x4c, 0xfd, 0xb2, 0xfa, 0x9a, 0xfb, 0xa0, 0xfe, 0xcc, 0xfd, 0xe0, 0xfc, 0xe3, 0xf8, 0x84, 0xf7, + 0x97, 0xf7, 0xf9, 0xf6, 0xa2, 0xf7, 0x05, 0xf7, 0x7c, 0xf8, 0xa1, 0xf7, 0x19, 0xf7, 0x0a, 0xf9, + 0x14, 0xfa, 0xff, 0xfd, 0x05, 0xfd, 0x18, 0xfd, 0x19, 0xfe, 0x73, 0xfd, 0x29, 0x02, 0x86, 0x04, + 0x3b, 0x07, 0x45, 0x09, 0xee, 0x06, 0x8d, 0x07, 0x31, 0x04, 0xa9, 0xff, 0x15, 0xfc, 0x24, 0xf3, + 0xf8, 0xee, 0x00, 0xed, 0xde, 0xeb, 0xea, 0xee, 0xaa, 0xee, 0x81, 0xf0, 0x07, 0xf0, 0x73, 0xef, + 0xf0, 0xf1, 0x8b, 0xf2, 0xa1, 0xf3, 0x0a, 0xf2, 0x06, 0xf4, 0xeb, 0xf6, 0x49, 0xf9, 0x21, 0x02, + 0x85, 0x06, 0xc6, 0x0a, 0x93, 0x0e, 0x62, 0x10, 0xbf, 0x14, 0x70, 0x16, 0x9d, 0x1b, 0x2f, 0x21, + 0x9b, 0x23, 0x09, 0x27, 0x9b, 0x24, 0xd6, 0x23, 0xd7, 0x22, 0xbc, 0x1e, 0x77, 0x1b, 0xd5, 0x11, + 0x56, 0x0b, 0x77, 0x07, 0x73, 0x02, 0xfe, 0x02, 0xd0, 0xfd, 0xf4, 0xf9, 0x00, 0xf5, 0xba, 0xee, + 0x1e, 0xec, 0x9d, 0xe7, 0xa1, 0xe4, 0x5c, 0xe1, 0x09, 0xdf, 0x35, 0xdf, 0xb6, 0xde, 0x69, 0xe3, + 0x60, 0xe6, 0x14, 0xe9, 0x05, 0xec, 0xc4, 0xeb, 0x48, 0xee, 0x7a, 0xf0, 0x70, 0xf2, 0x4f, 0xf7, + 0x0b, 0xfb, 0xd6, 0x00, 0x21, 0x04, 0x73, 0x07, 0x16, 0x09, 0xcb, 0x06, 0x4b, 0x06, 0x8e, 0x02, + 0xcc, 0xfc, 0x32, 0xfb, 0x7f, 0xfa, 0x58, 0xfc, 0x6c, 0xfc, 0x7c, 0xfe, 0x90, 0x01, 0x3f, 0x02, + 0x48, 0x05, 0x92, 0x06, 0x23, 0x06, 0xcd, 0x06, 0xa8, 0x05, 0x33, 0x07, 0x56, 0x07, 0x2b, 0x09, + 0x83, 0x0a, 0x88, 0x0a, 0x50, 0x0d, 0x66, 0x0c, 0xbf, 0x0c, 0x1c, 0x0d, 0x5d, 0x0c, 0xc0, 0x0f, + 0xcc, 0x10, 0x58, 0x13, 0xf2, 0x12, 0xf0, 0x0f, 0x95, 0x0d, 0x5a, 0x08, 0x94, 0x05, 0xf7, 0xff, + 0x48, 0xf8, 0x7a, 0xf4, 0xac, 0xef, 0x12, 0xf1, 0x26, 0xf3, 0x4d, 0xf5, 0x65, 0xf7, 0x69, 0xf3, + 0x91, 0xf1, 0x57, 0xf0, 0x48, 0xf0, 0x01, 0xf2, 0xa1, 0xf0, 0x35, 0xf4, 0x86, 0xf4, 0x62, 0xf5, + 0x9d, 0xf9, 0x09, 0xfd, 0x0c, 0x03, 0x29, 0x04, 0x61, 0x05, 0xb1, 0x07, 0x15, 0x07, 0xe3, 0x0a, + 0x11, 0x0d, 0x0c, 0x0f, 0xd5, 0x0f, 0x4a, 0x10, 0x2f, 0x12, 0x50, 0x11, 0x47, 0x10, 0xb2, 0x0c, + 0x78, 0x04, 0xed, 0xff, 0x7f, 0xfb, 0x01, 0xfa, 0x9c, 0xfb, 0xf3, 0xfb, 0xcc, 0xfc, 0x62, 0xf9, + 0x66, 0xf8, 0x84, 0xf8, 0x0f, 0xf6, 0x96, 0xf7, 0xf5, 0xf4, 0x31, 0xf5, 0x9e, 0xf6, 0x80, 0xf7, + 0x69, 0xfc, 0xc8, 0xfd, 0x8e, 0xfe, 0x1a, 0xff, 0xbe, 0xfd, 0x71, 0x00, 0xdb, 0x00, 0x0d, 0x03, + 0x8b, 0x07, 0x76, 0x0a, 0xbf, 0x0d, 0xad, 0x0e, 0xde, 0x10, 0xff, 0x11, 0xbd, 0x0f, 0x1e, 0x0e, + 0xeb, 0x07, 0x93, 0x03, 0x43, 0xff, 0x0a, 0xfd, 0x90, 0xfd, 0x8f, 0xfa, 0x6a, 0xfa, 0xc1, 0xf8, + 0x11, 0xf6, 0x67, 0xf4, 0xfe, 0xf2, 0xbb, 0xf2, 0xb8, 0xef, 0xf9, 0xef, 0xd7, 0xef, 0xd3, 0xed, + 0xa8, 0xf1, 0xea, 0xf3, 0x83, 0xf6, 0x12, 0xfb, 0x53, 0xfc, 0x11, 0xff, 0xcd, 0x00, 0x07, 0x04, + 0x9c, 0x07, 0xf0, 0x0a, 0xcc, 0x10, 0x44, 0x14, 0xe6, 0x15, 0xb9, 0x14, 0x3b, 0x12, 0x5e, 0x10, + 0x5e, 0x0b, 0xc1, 0x06, 0x03, 0x03, 0x98, 0x01, 0xcf, 0x02, 0x02, 0x02, 0x8e, 0x02, 0x8f, 0x00, + 0xf5, 0xfd, 0xeb, 0xfb, 0x3d, 0xf8, 0xa2, 0xf7, 0xae, 0xf5, 0xd1, 0xf3, 0xb5, 0xf4, 0x13, 0xf3, + 0xaa, 0xf5, 0x8b, 0xf8, 0xe1, 0xfa, 0x86, 0xff, 0x09, 0xfe, 0x97, 0xff, 0x35, 0x00, 0xf1, 0xff, + 0xd4, 0x03, 0x44, 0x05, 0x1b, 0x08, 0x2b, 0x09, 0x56, 0x09, 0x57, 0x0a, 0x46, 0x08, 0x35, 0x08, + 0xdd, 0x04, 0xee, 0xfe, 0x0f, 0xfa, 0xdf, 0xf5, 0xeb, 0xf5, 0x95, 0xf5, 0x25, 0xf8, 0x81, 0xf9, + 0xbb, 0xf6, 0xf4, 0xf6, 0x20, 0xf6, 0xaf, 0xf7, 0x86, 0xf9, 0xa5, 0xf9, 0xf5, 0xfc, 0x78, 0xfc, + 0xeb, 0xff, 0xca, 0x03, 0x42, 0x05, 0xe9, 0x0a, 0x27, 0x0b, 0x9a, 0x0b, 0x7f, 0x0d, 0xc3, 0x0d, + 0xa0, 0x10, 0x94, 0x12, 0xe9, 0x14, 0xe3, 0x15, 0x4c, 0x14, 0xfe, 0x12, 0x32, 0x0f, 0x11, 0x0a, + 0xc2, 0x04, 0xf7, 0xfb, 0xc6, 0xf4, 0xcd, 0xee, 0x6f, 0xec, 0x7b, 0xeb, 0x75, 0xec, 0xbc, 0xed, + 0x5a, 0xec, 0xde, 0xeb, 0x9a, 0xea, 0x1f, 0xea, 0x9e, 0xeb, 0x8d, 0xea, 0x2f, 0xed, 0xf7, 0xee, + 0xcd, 0xf1, 0x76, 0xf7, 0x6f, 0xfb, 0x96, 0x00, 0xee, 0x02, 0x6b, 0x05, 0xdc, 0x0a, 0xf9, 0x0b, + 0xf3, 0x10, 0xfb, 0x15, 0xfc, 0x18, 0xce, 0x1b, 0x57, 0x1b, 0xf9, 0x1b, 0x86, 0x1c, 0xc0, 0x1b, + 0x32, 0x1b, 0x05, 0x16, 0xe8, 0x11, 0x61, 0x0c, 0xdb, 0x08, 0x57, 0x07, 0x08, 0x07, 0x1a, 0x07, + 0x49, 0x03, 0x53, 0x00, 0x63, 0xfb, 0xfd, 0xf6, 0x10, 0xf6, 0x27, 0xf1, 0xca, 0xf0, 0xdb, 0xee, + 0x64, 0xed, 0xcf, 0xf0, 0x7c, 0xf0, 0x70, 0xf2, 0x52, 0xf3, 0xf3, 0xf0, 0x2b, 0xf2, 0xde, 0xf0, + 0x18, 0xf2, 0xc8, 0xf3, 0x6e, 0xf5, 0x9e, 0xf9, 0x7d, 0xfc, 0xd4, 0x00, 0xca, 0x02, 0x4e, 0x01, + 0x41, 0x01, 0xfa, 0xfd, 0x8e, 0xfa, 0x9e, 0xf6, 0x16, 0xf6, 0xdf, 0xf7, 0x3b, 0xf8, 0xb8, 0xf9, + 0x90, 0xfa, 0x28, 0xfb, 0x41, 0xfb, 0x9a, 0xfb, 0xbb, 0xfd, 0x58, 0xfd, 0x73, 0xfe, 0x98, 0xff, + 0x3c, 0xfe, 0x20, 0x00, 0x4f, 0x00, 0x0e, 0x01, 0x1d, 0x05, 0x97, 0x05, 0x21, 0x09, 0x3a, 0x0a, + 0xcb, 0x0b, 0x8d, 0x0f, 0x9c, 0x10, 0x47, 0x14, 0xdc, 0x16, 0x2a, 0x17, 0x90, 0x17, 0xfd, 0x13, + 0xa8, 0x12, 0x5c, 0x0e, 0xc7, 0x08, 0x1b, 0x04, 0xb6, 0xfe, 0x71, 0xfd, 0x96, 0xfd, 0x6b, 0xff, + 0x5e, 0x00, 0x09, 0xfd, 0x55, 0xf8, 0xe5, 0xf2, 0x9e, 0xf1, 0x67, 0xef, 0xc2, 0xed, 0x80, 0xee, + 0xe9, 0xec, 0x3c, 0xee, 0x7c, 0xef, 0xd3, 0xf1, 0xbb, 0xf7, 0xab, 0xf8, 0x1a, 0xfb, 0x08, 0xfd, + 0xc1, 0xfd, 0x1c, 0x00, 0x9f, 0x02, 0x7a, 0x06, 0xa9, 0x08, 0x50, 0x09, 0x5a, 0x0b, 0x8b, 0x09, + 0xa6, 0x08, 0x65, 0x07, 0xd9, 0x02, 0x6d, 0xfd, 0xb5, 0xf8, 0x6f, 0xf6, 0x30, 0xf5, 0x1b, 0xf6, + 0x13, 0xf6, 0x95, 0xf4, 0x5c, 0xf4, 0xb9, 0xf3, 0x67, 0xf4, 0x41, 0xf5, 0x14, 0xf6, 0x6f, 0xf8, + 0x60, 0xf7, 0x1c, 0xfa, 0x2d, 0xff, 0xad, 0x02, 0x85, 0x08, 0xa5, 0x09, 0x5a, 0x0b, 0xd4, 0x0d, + 0xe0, 0x0e, 0x8e, 0x12, 0x63, 0x15, 0x3f, 0x19, 0x13, 0x1d, 0xc6, 0x1c, 0xd0, 0x1e, 0x6b, 0x1d, + 0xc6, 0x1a, 0xbd, 0x18, 0xd2, 0x11, 0x35, 0x0c, 0x16, 0x04, 0x2f, 0xff, 0x1d, 0xfc, 0x5c, 0xf9, + 0x93, 0xf8, 0xd3, 0xf5, 0x5a, 0xf4, 0x25, 0xf0, 0x94, 0xed, 0xad, 0xec, 0x3d, 0xe8, 0x01, 0xe8, + 0x9e, 0xe7, 0x81, 0xe7, 0x35, 0xea, 0x38, 0xeb, 0xaa, 0xee, 0x49, 0xf0, 0x8e, 0xf1, 0xea, 0xf4, + 0xf1, 0xf5, 0x1a, 0xfa, 0x9b, 0xfd, 0xa5, 0x01, 0x62, 0x07, 0x0e, 0x0a, 0x28, 0x0e, 0x4e, 0x0e, + 0xa3, 0x0c, 0xa5, 0x0d, 0xbf, 0x0a, 0xb4, 0x08, 0x6d, 0x06, 0xe1, 0x04, 0x29, 0x05, 0xb6, 0x05, + 0xb2, 0x07, 0xff, 0x08, 0x72, 0x09, 0x61, 0x08, 0x26, 0x06, 0x53, 0x05, 0xb9, 0x03, 0xac, 0x02, + 0x26, 0x02, 0x15, 0x01, 0x76, 0x02, 0x13, 0x03, 0xc2, 0x04, 0x21, 0x07, 0x9b, 0x05, 0xc3, 0x05, + 0x50, 0x04, 0xad, 0x02, 0x32, 0x02, 0x06, 0x02, 0x68, 0x03, 0xb3, 0x02, 0x8d, 0x02, 0xf6, 0x02, + 0xc2, 0x00, 0x47, 0x01, 0x7b, 0xfe, 0x2c, 0xfb, 0x89, 0xf5, 0xc9, 0xef, 0x96, 0xee, 0x6f, 0xed, + 0x03, 0xf0, 0x02, 0xf3, 0x87, 0xf2, 0x97, 0xf0, 0x56, 0xee, 0x80, 0xef, 0xec, 0xee, 0x00, 0xf0, + 0xbf, 0xf2, 0x5d, 0xf3, 0xa1, 0xf6, 0x66, 0xf8, 0x72, 0xfa, 0x1c, 0xfe, 0xcd, 0xff, 0xe8, 0x03, + 0x79, 0x05, 0x8e, 0x09, 0x46, 0x0d, 0xe9, 0x0f, 0xdb, 0x13, 0xb3, 0x15, 0xae, 0x17, 0x58, 0x19, + 0x7c, 0x17, 0x13, 0x17, 0x88, 0x13, 0x9a, 0x0e, 0xfc, 0x07, 0x4d, 0x00, 0x8c, 0xfc, 0x4b, 0xf9, + 0xfe, 0xf8, 0x57, 0xfa, 0x55, 0xf9, 0x78, 0xf8, 0x10, 0xf4, 0x3c, 0xf1, 0xfd, 0xee, 0xe5, 0xec, + 0x08, 0xed, 0x0c, 0xec, 0xbe, 0xec, 0xa9, 0xee, 0x21, 0xf1, 0x32, 0xf6, 0x02, 0xf8, 0xc1, 0xfa, + 0x74, 0xfe, 0xca, 0x00, 0xba, 0x03, 0x80, 0x07, 0xbc, 0x0c, 0x09, 0x11, 0xdc, 0x12, 0x1d, 0x16, + 0x6c, 0x14, 0xbf, 0x14, 0x5d, 0x14, 0x15, 0x11, 0x4f, 0x0e, 0xc0, 0x07, 0x2b, 0x04, 0x86, 0x01, + 0xad, 0x00, 0x4f, 0x02, 0x64, 0xff, 0xac, 0xfc, 0x91, 0xf8, 0x3f, 0xf5, 0x7e, 0xf4, 0x40, 0xf2, + 0xe1, 0xf2, 0xc1, 0xf2, 0x77, 0xf1, 0xa7, 0xf3, 0x20, 0xf5, 0xd2, 0xf8, 0xe9, 0xfb, 0xc6, 0xfd, + 0xae, 0xfe, 0xe9, 0xff, 0xe9, 0x01, 0x13, 0x03, 0xe2, 0x05, 0x32, 0x09, 0x22, 0x0c, 0x69, 0x11, + 0xdc, 0x12, 0xc0, 0x12, 0x6d, 0x11, 0xc8, 0x0d, 0x8f, 0x09, 0x7f, 0x02, 0x2b, 0xfd, 0x54, 0xfa, + 0x18, 0xf8, 0xbf, 0xf7, 0xe7, 0xf6, 0xf7, 0xf6, 0x64, 0xf5, 0x50, 0xf4, 0xd6, 0xf5, 0xa6, 0xf5, + 0xc0, 0xf5, 0xa8, 0xf6, 0xfa, 0xf5, 0xa0, 0xf7, 0x5a, 0xf9, 0x7c, 0xfb, 0xd5, 0xfd, 0x68, 0xff, + 0x1e, 0x01, 0x23, 0x02, 0x39, 0x03, 0x0d, 0x05, 0xc1, 0x07, 0x7c, 0x0b, 0xb3, 0x0d, 0x1f, 0x11, + 0xb3, 0x10, 0xcf, 0x0e, 0x21, 0x0e, 0xa8, 0x0a, 0x70, 0x08, 0x3e, 0x04, 0xb7, 0x00, 0x2e, 0xff, + 0x36, 0xfd, 0x31, 0x00, 0x07, 0x02, 0x17, 0x03, 0x35, 0x02, 0xe8, 0xfd, 0x83, 0xfd, 0x51, 0xfb, + 0x3a, 0xfa, 0x32, 0xfb, 0x87, 0xf9, 0x3e, 0xfc, 0xea, 0xfc, 0xb7, 0xfe, 0xba, 0x02, 0xf4, 0x03, + 0x8d, 0x05, 0x7e, 0x05, 0xb7, 0x05, 0x95, 0x04, 0x54, 0x04, 0xae, 0x06, 0x4a, 0x07, 0x35, 0x08, + 0x8a, 0x08, 0xcb, 0x06, 0xd0, 0x05, 0x8c, 0x03, 0x64, 0x02, 0xcd, 0xfc, 0xe3, 0xf5, 0x25, 0xf2, + 0x0b, 0xed, 0x02, 0xed, 0xba, 0xee, 0xb2, 0xee, 0x5d, 0xef, 0xde, 0xec, 0x43, 0xec, 0x1a, 0xec, + 0xa0, 0xeb, 0xa4, 0xee, 0x75, 0xee, 0x1f, 0xf0, 0xc0, 0xf4, 0x04, 0xf8, 0x21, 0xfd, 0x88, 0xff, + 0x1f, 0x01, 0x3a, 0x03, 0x35, 0x05, 0xbd, 0x08, 0xf5, 0x0c, 0x93, 0x12, 0x24, 0x18, 0xfb, 0x1a, + 0x2f, 0x1e, 0x8b, 0x1e, 0x77, 0x1f, 0xea, 0x1e, 0xa3, 0x1d, 0xd6, 0x1a, 0x3b, 0x14, 0x1a, 0x0f, + 0x69, 0x09, 0xf7, 0x06, 0x8b, 0x06, 0x4e, 0x04, 0x20, 0x04, 0x5f, 0xff, 0x14, 0xfb, 0x83, 0xf8, + 0xae, 0xf2, 0xa2, 0xef, 0x07, 0xec, 0x71, 0xe9, 0xae, 0xe8, 0xfa, 0xe6, 0xb6, 0xe8, 0x4f, 0xe9, + 0x72, 0xe9, 0x0e, 0xeb, 0xdd, 0xec, 0xe6, 0xee, 0x6b, 0xf1, 0xe4, 0xf4, 0xf1, 0xf8, 0x2b, 0xfd, + 0x70, 0x03, 0x0a, 0x06, 0x4c, 0x07, 0xfb, 0x06, 0x26, 0x07, 0xd2, 0x05, 0x28, 0x02, 0x00, 0x00, + 0xdc, 0xfc, 0x6d, 0xfd, 0x79, 0x00, 0x3c, 0x01, 0x22, 0x03, 0x45, 0x01, 0xe0, 0xfe, 0xb3, 0xfe, + 0x92, 0xfc, 0xcb, 0xfd, 0x19, 0xff, 0x0e, 0xff, 0x80, 0x02, 0xe6, 0x02, 0x67, 0x05, 0x73, 0x08, + 0xe1, 0x09, 0x03, 0x0c, 0x58, 0x0c, 0xd8, 0x0c, 0xd3, 0x0c, 0xe2, 0x0c, 0xcd, 0x0e, 0xca, 0x0e, + 0x1e, 0x11, 0xc8, 0x11, 0xa5, 0x11, 0x4c, 0x11, 0x30, 0x0f, 0x0f, 0x0d, 0xff, 0x06, 0xf3, 0xff, + 0x0c, 0xfa, 0x18, 0xf5, 0x35, 0xf4, 0x76, 0xf3, 0xc5, 0xf4, 0x00, 0xf2, 0xc8, 0xec, 0x44, 0xed, + 0xdc, 0xea, 0x67, 0xea, 0x45, 0xec, 0x40, 0xeb, 0xa2, 0xee, 0x9e, 0xef, 0x07, 0xf2, 0x7a, 0xf5, + 0x3a, 0xf7, 0xd6, 0xfa, 0x3c, 0xfd, 0xe4, 0xff, 0xf4, 0x02, 0x3c, 0x04, 0xa5, 0x07, 0x26, 0x0b, + 0x26, 0x0f, 0x69, 0x11, 0x1d, 0x12, 0xe2, 0x10, 0x18, 0x0f, 0xe2, 0x0c, 0x63, 0x07, 0xdb, 0x01, + 0xaf, 0xfd, 0x9c, 0xf9, 0xaa, 0xf9, 0x9c, 0xfa, 0x56, 0xfc, 0x0d, 0xfd, 0xff, 0xfa, 0xf1, 0xf9, + 0xd8, 0xf7, 0x37, 0xf7, 0x24, 0xf9, 0x15, 0xf8, 0xbc, 0xf9, 0xa3, 0xfa, 0x72, 0xfc, 0x99, 0x01, + 0x63, 0x04, 0x04, 0x07, 0x82, 0x09, 0xce, 0x0a, 0x1b, 0x0c, 0xaf, 0x0b, 0x6b, 0x0e, 0x57, 0x11, + 0xde, 0x11, 0x6b, 0x13, 0x8f, 0x12, 0x2f, 0x10, 0x70, 0x0e, 0xc5, 0x0d, 0xc5, 0x0a, 0x96, 0x05, + 0x0a, 0x01, 0xce, 0xfa, 0x46, 0xf9, 0x88, 0xf8, 0x66, 0xf8, 0xa9, 0xf8, 0x68, 0xf4, 0x3b, 0xf2, + 0x82, 0xef, 0xfe, 0xeb, 0x9c, 0xec, 0xe6, 0xe9, 0x5e, 0xe9, 0x5d, 0xea, 0x8a, 0xeb, 0x9e, 0xef, + 0x4a, 0xf1, 0x3a, 0xf4, 0x38, 0xf6, 0x64, 0xf6, 0xff, 0xf8, 0x7f, 0xf9, 0x66, 0xfd, 0x5f, 0x02, + 0x9b, 0x06, 0xe3, 0x0c, 0x85, 0x10, 0xd4, 0x12, 0x0d, 0x13, 0xa7, 0x13, 0xa7, 0x12, 0xb6, 0x0e, + 0xc1, 0x0a, 0xa3, 0x05, 0x9e, 0x04, 0xa3, 0x03, 0xb3, 0x02, 0x5e, 0x04, 0x1d, 0x03, 0xa4, 0x01, + 0x39, 0x02, 0xbc, 0x00, 0x7d, 0x00, 0x1f, 0xfe, 0xd4, 0xfc, 0xc5, 0xfc, 0x39, 0xfa, 0x3b, 0xfb, + 0xb3, 0xfb, 0x82, 0xfa, 0x5a, 0xfb, 0xde, 0xfa, 0xa1, 0xfb, 0x1d, 0xfc, 0x32, 0xfd, 0x2e, 0x00, + 0xec, 0x00, 0x3c, 0x05, 0x0f, 0x07, 0x98, 0x06, 0xc0, 0x06, 0x33, 0x05, 0x85, 0x03, 0x33, 0x00, + 0x94, 0xfc, 0x11, 0xf8, 0xc1, 0xf4, 0xd3, 0xf4, 0x5b, 0xf6, 0x62, 0xfa, 0xe6, 0xfa, 0xa5, 0xf8, + 0xe1, 0xf7, 0xf0, 0xf3, 0xe7, 0xf2, 0xb7, 0xf2, 0x24, 0xf3, 0xba, 0xf7, 0x6c, 0xf9, 0xa6, 0xfc, + 0x15, 0x00, 0x55, 0x03, 0x9b, 0x07, 0x0f, 0x0a, 0x19, 0x0d, 0xf2, 0x0d, 0xea, 0x0d, 0x02, 0x11, + 0x1f, 0x13, 0x6d, 0x15, 0x52, 0x16, 0xa5, 0x16, 0x25, 0x16, 0xae, 0x14, 0xeb, 0x14, 0xdf, 0x11, + 0xd0, 0x0a, 0x4e, 0x03, 0x0d, 0xfc, 0x45, 0xf7, 0x2a, 0xf4, 0x1e, 0xf4, 0x65, 0xf2, 0x5a, 0xee, + 0xdf, 0xeb, 0x22, 0xe8, 0xf8, 0xe6, 0x12, 0xe8, 0xab, 0xe7, 0x10, 0xe9, 0x1d, 0xe9, 0xac, 0xec, + 0x8a, 0xf1, 0xa6, 0xf4, 0x18, 0xf9, 0xb3, 0xfb, 0x21, 0xfe, 0x87, 0x01, 0xeb, 0x02, 0x4c, 0x08, + 0xb2, 0x0c, 0x6b, 0x11, 0xe3, 0x15, 0x0d, 0x17, 0x2e, 0x19, 0xf2, 0x18, 0xc3, 0x19, 0xe9, 0x18, + 0xd2, 0x13, 0xb3, 0x0e, 0x90, 0x08, 0xbe, 0x06, 0xe7, 0x05, 0xa6, 0x05, 0xed, 0x06, 0x42, 0x04, + 0x0a, 0x02, 0xea, 0xfe, 0xf0, 0xfa, 0x49, 0xf9, 0x9e, 0xf5, 0xde, 0xf4, 0xc3, 0xf3, 0xcd, 0xf2, + 0xd4, 0xf3, 0x48, 0xf4, 0x8d, 0xf6, 0xc4, 0xf7, 0x9d, 0xf9, 0x6d, 0xfc, 0x4b, 0xfb, 0x1b, 0xfe, + 0x17, 0x00, 0x9b, 0x01, 0x1c, 0x06, 0x71, 0x08, 0x26, 0x09, 0x8b, 0x07, 0x18, 0x07, 0x29, 0x06, + 0x19, 0x02, 0x00, 0xff, 0x1f, 0xfa, 0x21, 0xf8, 0x33, 0xf8, 0x4b, 0xf9, 0x16, 0xfb, 0xe4, 0xfa, + 0x25, 0xfa, 0x9f, 0xf9, 0x80, 0xf7, 0x42, 0xf8, 0x78, 0xf7, 0xbe, 0xf6, 0xac, 0xf7, 0x63, 0xf8, + 0x44, 0xfa, 0x22, 0xfd, 0x14, 0x00, 0x8a, 0x02, 0xea, 0x03, 0xf3, 0x05, 0xa3, 0x04, 0xbc, 0x04, + 0x40, 0x06, 0x36, 0x08, 0x1c, 0x0d, 0x21, 0x0f, 0xee, 0x10, 0x54, 0x12, 0xdc, 0x11, 0x3b, 0x12, + 0x84, 0x0f, 0xce, 0x0b, 0x2c, 0x06, 0x6e, 0x01, 0x6d, 0xff, 0xb3, 0xfd, 0xa9, 0xff, 0x01, 0x00, + 0xcb, 0xfc, 0x7f, 0xfc, 0x08, 0xfa, 0x69, 0xf8, 0x3b, 0xf6, 0xa6, 0xf5, 0x1c, 0xf6, 0x67, 0xf4, + 0x19, 0xf5, 0xed, 0xf4, 0xa5, 0xf5, 0x22, 0xf7, 0xb1, 0xf7, 0x0a, 0xfa, 0xbf, 0xf9, 0x16, 0xfb, + 0xe2, 0xfd, 0xcf, 0xff, 0xb7, 0x04, 0xb3, 0x06, 0x48, 0x08, 0x95, 0x09, 0xd6, 0x07, 0x39, 0x08, + 0xab, 0x05, 0xe1, 0x01, 0xb9, 0xfc, 0x1f, 0xf6, 0x3f, 0xf4, 0x49, 0xf3, 0x92, 0xf4, 0x10, 0xf7, + 0x32, 0xf6, 0x26, 0xf6, 0x62, 0xf3, 0x61, 0xf2, 0x29, 0xf2, 0xe4, 0xf0, 0xdf, 0xf1, 0xe5, 0xf2, + 0xbe, 0xf5, 0x76, 0xfa, 0xba, 0xfe, 0x42, 0x03, 0x48, 0x06, 0x38, 0x0a, 0xbc, 0x0c, 0x15, 0x0d, + 0xde, 0x10, 0xe6, 0x14, 0x89, 0x19, 0x76, 0x1c, 0xf1, 0x1c, 0xe6, 0x1d, 0x1b, 0x1b, 0x77, 0x1c, + 0xcd, 0x1c, 0x2e, 0x18, 0x91, 0x13, 0x04, 0x0c, 0x33, 0x07, 0x00, 0x03, 0x8d, 0xff, 0xd2, 0xff, + 0xd8, 0xfb, 0x6a, 0xf8, 0x6c, 0xf4, 0xc4, 0xee, 0x84, 0xeb, 0x50, 0xe8, 0x54, 0xe6, 0x73, 0xe4, + 0xaa, 0xe3, 0xb9, 0xe4, 0x22, 0xe6, 0xb1, 0xe9, 0x91, 0xec, 0x21, 0xee, 0x7b, 0xf0, 0x32, 0xf1, + 0x26, 0xf4, 0xe5, 0xf6, 0xae, 0xfa, 0xbc, 0xff, 0x64, 0x04, 0xfd, 0x08, 0xf5, 0x09, 0xac, 0x0c, + 0x4b, 0x0e, 0x53, 0x0c, 0x68, 0x09, 0x1f, 0x03, 0x8b, 0x00, 0x96, 0x00, 0x3f, 0x00, 0x59, 0x03, + 0xc5, 0x04, 0xe5, 0x04, 0x59, 0x06, 0x2e, 0x06, 0xcb, 0x06, 0x09, 0x06, 0xb9, 0x05, 0xdd, 0x06, + 0x69, 0x06, 0x45, 0x06, 0x2c, 0x07, 0x98, 0x07, 0xb4, 0x07, 0x5f, 0x09, 0x6c, 0x0b, 0x30, 0x0a, + 0x8a, 0x0a, 0x06, 0x0b, 0xaa, 0x0b, 0xff, 0x0d, 0x33, 0x0e, 0x81, 0x0e, 0x37, 0x0c, 0xa9, 0x09, + 0x96, 0x07, 0xd6, 0x01, 0x2d, 0xfe, 0x98, 0xf8, 0xd8, 0xf2, 0x39, 0xf0, 0x7d, 0xed, 0x22, 0xf0, + 0x08, 0xf2, 0xfe, 0xf1, 0x2b, 0xf3, 0x5d, 0xef, 0x58, 0xee, 0x06, 0xed, 0x9a, 0xec, 0x70, 0xef, + 0x4c, 0xf0, 0x22, 0xf2, 0x48, 0xf4, 0x1b, 0xf7, 0x2d, 0xfb, 0x97, 0xfe, 0x1b, 0x03, 0x73, 0x04, + 0xcc, 0x04, 0x5c, 0x05, 0x67, 0x07, 0xc3, 0x0b, 0x64, 0x0d, 0x78, 0x10, 0x23, 0x12, 0x42, 0x11, + 0x77, 0x13, 0x1c, 0x13, 0x2d, 0x11, 0x55, 0x0b, 0x0a, 0x04, 0x4e, 0x00, 0xed, 0xfb, 0x7e, 0xfb, + 0xd5, 0xfc, 0xfd, 0xf9, 0x90, 0xf9, 0x58, 0xf6, 0xa8, 0xf4, 0x4e, 0xf4, 0x67, 0xf3, 0x47, 0xf4, + 0x7d, 0xf3, 0xe3, 0xf2, 0x32, 0xf5, 0x88, 0xf6, 0x12, 0xf9, 0x8a, 0xfb, 0xce, 0xfc, 0x42, 0xfd, + 0x3e, 0xfd, 0x13, 0xff, 0x97, 0x02, 0x92, 0x07, 0x1e, 0x0b, 0xc4, 0x0c, 0x79, 0x0e, 0x51, 0x0e, + 0x94, 0x10, 0xb9, 0x10, 0x17, 0x0f, 0xec, 0x0b, 0x91, 0x05, 0x53, 0x02, 0x8f, 0xfe, 0x42, 0xfc, + 0x0e, 0xfe, 0x67, 0xfc, 0x33, 0xfc, 0x75, 0xf9, 0xaf, 0xf6, 0x37, 0xf5, 0x09, 0xf1, 0xc9, 0xee, + 0xa1, 0xed, 0x63, 0xec, 0xbf, 0xed, 0x21, 0xef, 0xf6, 0xf2, 0xf9, 0xf5, 0xb6, 0xf8, 0x29, 0xfc, + 0x69, 0xfd, 0x99, 0xff, 0xf1, 0x02, 0xf7, 0x06, 0xbb, 0x0a, 0x6e, 0x0f, 0x00, 0x13, 0x41, 0x12, + 0x08, 0x14, 0xa9, 0x14, 0x3d, 0x14, 0x0c, 0x12, 0x4c, 0x0c, 0x63, 0x09, 0x81, 0x06, 0xf2, 0x03, + 0xb7, 0x04, 0x4d, 0x02, 0xa8, 0x01, 0x05, 0x00, 0x70, 0xfb, 0x4d, 0xf9, 0xaa, 0xf5, 0xcb, 0xf3, + 0xc6, 0xf3, 0xb3, 0xf2, 0x63, 0xf3, 0xd7, 0xf2, 0xae, 0xf4, 0x22, 0xf7, 0x2c, 0xf9, 0xe5, 0xfb, + 0xf5, 0xfb, 0x65, 0xfc, 0x57, 0xfd, 0x13, 0xff, 0xe5, 0x02, 0x2f, 0x05, 0x75, 0x07, 0xef, 0x08, + 0x62, 0x0a, 0x28, 0x0b, 0xc8, 0x0a, 0x25, 0x0a, 0xee, 0x04, 0xd2, 0xff, 0xea, 0xfb, 0x4b, 0xf7, + 0x07, 0xf9, 0xb6, 0xfa, 0xd9, 0xfb, 0x7d, 0xfd, 0xb8, 0xfb, 0x6b, 0xfc, 0xa0, 0xfa, 0x96, 0xf9, + 0x67, 0xfc, 0x2e, 0xfc, 0xac, 0xfd, 0x7e, 0xfe, 0x6d, 0xff, 0x6c, 0x01, 0xee, 0x02, 0xae, 0x06, + 0xb0, 0x08, 0xd2, 0x09, 0x88, 0x0b, 0xde, 0x0d, 0x5b, 0x11, 0x7d, 0x13, 0x19, 0x15, 0xb4, 0x14, + 0x91, 0x13, 0xde, 0x12, 0x73, 0x10, 0xb9, 0x0c, 0x40, 0x06, 0x8d, 0xfe, 0x54, 0xf9, 0xa8, 0xf4, + 0xe2, 0xf3, 0x4c, 0xf3, 0xa1, 0xf2, 0xcd, 0xf3, 0xc1, 0xf0, 0x2a, 0xef, 0x1b, 0xed, 0x75, 0xeb, + 0xff, 0xec, 0xac, 0xec, 0xa0, 0xed, 0xbd, 0xef, 0xef, 0xf1, 0x9c, 0xf6, 0x3a, 0xfa, 0x53, 0xfe, + 0xba, 0x01, 0x09, 0x03, 0x6a, 0x05, 0x30, 0x08, 0x2f, 0x0d, 0xe7, 0x10, 0x5b, 0x13, 0xca, 0x15, + 0x0f, 0x17, 0x21, 0x19, 0x50, 0x1a, 0x55, 0x1b, 0x53, 0x18, 0x0e, 0x13, 0x74, 0x0f, 0x8d, 0x09, + 0x42, 0x07, 0x0f, 0x07, 0xb2, 0x04, 0x92, 0x03, 0xdc, 0xff, 0xaf, 0xfc, 0x55, 0xf9, 0x1f, 0xf5, + 0x7d, 0xf3, 0x0b, 0xf0, 0x3e, 0xee, 0x4d, 0xed, 0x36, 0xeb, 0xd4, 0xec, 0x58, 0xed, 0xa3, 0xee, + 0xa2, 0xee, 0x1d, 0xed, 0xa5, 0xed, 0x5e, 0xed, 0x21, 0xf0, 0xf4, 0xf3, 0x77, 0xf7, 0xc9, 0xfa, + 0x62, 0xfc, 0x15, 0x00, 0xa6, 0x02, 0xd5, 0x03, 0xf5, 0x02, 0x0f, 0xff, 0xac, 0xfc, 0xe3, 0xfa, + 0xd7, 0xf9, 0xcf, 0xfa, 0x22, 0xfb, 0xf7, 0xfc, 0x70, 0xfd, 0xae, 0xfd, 0xcf, 0xfe, 0x2b, 0xfe, + 0xee, 0xfd, 0x7e, 0xfe, 0x5a, 0xfe, 0x84, 0xfe, 0x48, 0xfd, 0x1e, 0x00, 0xd5, 0x01, 0x24, 0x04, + 0x59, 0x08, 0x79, 0x08, 0xb7, 0x09, 0x09, 0x0b, 0x76, 0x0c, 0xa3, 0x0f, 0x34, 0x12, 0xb3, 0x14, + 0x9d, 0x14, 0xcd, 0x14, 0x29, 0x14, 0x2a, 0x12, 0xe9, 0x0f, 0xae, 0x0b, 0x3c, 0x07, 0xac, 0x02, + 0x82, 0xfe, 0x72, 0xfe, 0x4c, 0xfd, 0xd8, 0xfd, 0xed, 0xfd, 0x56, 0xfa, 0xa0, 0xf7, 0x29, 0xf3, + 0x4d, 0xf0, 0xf2, 0xee, 0x83, 0xee, 0xb5, 0xef, 0x84, 0xee, 0x22, 0xf0, 0xf9, 0xf1, 0x50, 0xf5, + 0x0d, 0xfa, 0xa5, 0xfb, 0xef, 0xfc, 0x82, 0xfd, 0x7c, 0xff, 0x21, 0x04, 0x61, 0x06, 0x2c, 0x09, + 0x0e, 0x0a, 0x43, 0x0a, 0xbe, 0x0b, 0xd1, 0x0c, 0xd0, 0x0d, 0x94, 0x0a, 0x24, 0x05, 0x1d, 0x00, + 0x1d, 0xfb, 0xfb, 0xf8, 0xca, 0xf7, 0xa7, 0xf8, 0x5d, 0xf9, 0xcd, 0xf8, 0xfd, 0xf8, 0x3d, 0xf7, + 0xbf, 0xf6, 0xc2, 0xf8, 0x5c, 0xf8, 0x73, 0xf9, 0xd3, 0xfa, 0xc8, 0xfd, 0xe9, 0x00, 0xa2, 0x03, + 0x46, 0x07, 0x5b, 0x08, 0x50, 0x09, 0x73, 0x0b, 0x5a, 0x0d, 0xcd, 0x12, 0x14, 0x16, 0x75, 0x18, + 0x2a, 0x19, 0x5e, 0x18, 0x22, 0x19, 0xfc, 0x17, 0xc0, 0x16, 0xd3, 0x13, 0xde, 0x0b, 0xf0, 0x05, + 0x15, 0xff, 0xbc, 0xfb, 0xd6, 0xf9, 0xa4, 0xf7, 0xe4, 0xf6, 0xbe, 0xf4, 0xec, 0xf2, 0x9b, 0xef, + 0xe8, 0xeb, 0x53, 0xea, 0xd7, 0xe7, 0x9a, 0xe7, 0xac, 0xe6, 0x7e, 0xe6, 0x54, 0xe9, 0x09, 0xeb, + 0x83, 0xee, 0x63, 0xf1, 0xf6, 0xf2, 0xc1, 0xf5, 0x79, 0xf7, 0xfc, 0xfc, 0x2c, 0x00, 0x03, 0x04, + 0x74, 0x08, 0x13, 0x0a, 0x48, 0x0d, 0x1f, 0x10, 0x1a, 0x12, 0xc4, 0x12, 0x6e, 0x10, 0x46, 0x0e, + 0x44, 0x0b, 0x73, 0x09, 0xfe, 0x09, 0xde, 0x09, 0x3e, 0x0a, 0x07, 0x0a, 0xb2, 0x07, 0x94, 0x05, + 0x24, 0x03, 0x7c, 0x01, 0xd4, 0xff, 0x7f, 0xff, 0xfe, 0xfe, 0x05, 0xfd, 0xab, 0xfd, 0xea, 0xfd, + 0x29, 0xff, 0x6c, 0x00, 0x87, 0xff, 0x1d, 0xff, 0xcc, 0xfc, 0x07, 0xfc, 0xbc, 0xfc, 0x53, 0xfe, + 0x2d, 0x00, 0x6f, 0xff, 0xbb, 0x00, 0x17, 0x02, 0x1c, 0x02, 0xca, 0x02, 0xc0, 0xfe, 0x15, 0xfb, + 0xf0, 0xf6, 0xf9, 0xf1, 0x88, 0xf1, 0x65, 0xf1, 0xa0, 0xf2, 0xcb, 0xf3, 0x91, 0xf2, 0x9d, 0xf2, + 0x60, 0xf1, 0xac, 0xf0, 0xea, 0xf0, 0x98, 0xf2, 0x2b, 0xf3, 0xcd, 0xf1, 0xca, 0xf3, 0x51, 0xf4, + 0x22, 0xf7, 0xa7, 0xfc, 0x92, 0xff, 0xbc, 0x03, 0xbb, 0x05, 0x3c, 0x09, 0xa0, 0x0d, 0xf6, 0x10, + 0xcb, 0x15, 0x36, 0x17, 0x25, 0x18, 0x7d, 0x19, 0x43, 0x18, 0x25, 0x18, 0xdd, 0x14, 0x8e, 0x0f, + 0x25, 0x0a, 0xb6, 0x04, 0x8f, 0x02, 0xb3, 0xff, 0x40, 0xfe, 0x7c, 0xfe, 0xf6, 0xfb, 0x27, 0xf9, + 0xf2, 0xf4, 0x1c, 0xf1, 0xd2, 0xee, 0x74, 0xec, 0xdd, 0xea, 0x01, 0xea, 0xfa, 0xea, 0x75, 0xec, + 0x1e, 0xef, 0xb0, 0xf3, 0x22, 0xf7, 0xcc, 0xf9, 0x7e, 0xfb, 0x01, 0xfe, 0x6b, 0x03, 0x84, 0x07, + 0x75, 0x0c, 0x2d, 0x0f, 0x99, 0x10, 0x81, 0x13, 0x09, 0x14, 0x07, 0x17, 0x50, 0x17, 0xfa, 0x12, + 0x3e, 0x10, 0x50, 0x0b, 0xa0, 0x07, 0x86, 0x05, 0x47, 0x03, 0x6c, 0x01, 0xaa, 0xff, 0x5b, 0xfe, + 0x3e, 0xfc, 0xa4, 0xf9, 0x4e, 0xf8, 0xdd, 0xf5, 0x75, 0xf4, 0x21, 0xf3, 0x57, 0xf2, 0xb7, 0xf3, + 0xfc, 0xf5, 0xe2, 0xf8, 0xb4, 0xf9, 0x96, 0xfa, 0x26, 0xfb, 0xb7, 0xfb, 0xc2, 0xfe, 0x7f, 0x01, + 0x51, 0x06, 0xa6, 0x09, 0xa2, 0x0b, 0xd7, 0x0e, 0x8a, 0x0f, 0x00, 0x11, 0xd3, 0x10, 0xf8, 0x0c, + 0x60, 0x09, 0x9f, 0x03, 0xe8, 0xff, 0x19, 0xfe, 0xd0, 0xfb, 0x92, 0xfb, 0x3c, 0xfb, 0xea, 0xfa, + 0x59, 0xfb, 0x42, 0xfa, 0xed, 0xf8, 0x2e, 0xf8, 0x80, 0xf8, 0x10, 0xf8, 0x6c, 0xf7, 0x86, 0xf8, + 0x57, 0xf9, 0x1e, 0xfb, 0x51, 0xfd, 0x62, 0xff, 0x66, 0x00, 0x22, 0x00, 0x3b, 0x03, 0xe6, 0x04, + 0x7a, 0x07, 0xfb, 0x0a, 0xaf, 0x0a, 0x03, 0x0c, 0xf4, 0x0b, 0x49, 0x0c, 0xa0, 0x0d, 0xae, 0x0a, + 0xca, 0x09, 0x9a, 0x05, 0x9a, 0x00, 0x3f, 0x00, 0x38, 0xff, 0x2d, 0x00, 0xd9, 0x01, 0xe7, 0x00, + 0x9e, 0xff, 0xe0, 0xfb, 0x1c, 0xfa, 0x15, 0xf8, 0x29, 0xf8, 0x27, 0xf9, 0x18, 0xf8, 0x9d, 0xf8, + 0x2b, 0xf9, 0x45, 0xfb, 0x7e, 0xfd, 0xff, 0xfd, 0x6e, 0xff, 0xe7, 0xfd, 0x98, 0xfd, 0x3c, 0xfe, + 0x47, 0xff, 0x13, 0x02, 0x6e, 0x02, 0xd1, 0x02, 0x03, 0x03, 0x21, 0x03, 0x0e, 0x06, 0x29, 0x04, + 0x48, 0x01, 0x05, 0xfd, 0x35, 0xf7, 0x22, 0xf4, 0x0d, 0xf1, 0x7f, 0xf1, 0xdb, 0xf3, 0x08, 0xf3, + 0xb4, 0xf3, 0x94, 0xf2, 0xa5, 0xf0, 0x58, 0xf1, 0x48, 0xf2, 0x5c, 0xf2, 0x99, 0xf2, 0xc8, 0xf3, + 0x99, 0xf5, 0x61, 0xf7, 0x2b, 0xfb, 0x59, 0xfe, 0xba, 0x00, 0xe8, 0x02, 0xab, 0x06, 0xef, 0x0a, + 0x2c, 0x0f, 0x7c, 0x14, 0xeb, 0x16, 0x9a, 0x18, 0x92, 0x1b, 0xb5, 0x1b, 0x23, 0x1e, 0x97, 0x1d, + 0x22, 0x1a, 0xbc, 0x15, 0x19, 0x0f, 0xd6, 0x0b, 0xb5, 0x08, 0x0b, 0x06, 0x53, 0x05, 0xcb, 0x02, + 0xfe, 0x00, 0x26, 0xfd, 0x3c, 0xf9, 0x91, 0xf5, 0x8f, 0xf0, 0x95, 0xed, 0xf2, 0xe9, 0x00, 0xe7, + 0xa0, 0xe6, 0x55, 0xe6, 0xf3, 0xe7, 0xba, 0xe8, 0x6c, 0xea, 0x34, 0xeb, 0xcf, 0xec, 0x33, 0xf0, + 0x8b, 0xf2, 0x53, 0xf7, 0x11, 0xfc, 0xa1, 0x00, 0xb1, 0x04, 0xc2, 0x05, 0xf9, 0x09, 0x43, 0x0b, + 0x60, 0x0a, 0x49, 0x0a, 0x48, 0x07, 0xd4, 0x05, 0xb0, 0x04, 0xf2, 0x03, 0x00, 0x05, 0x7a, 0x04, + 0x4a, 0x05, 0xca, 0x04, 0x54, 0x03, 0x78, 0x03, 0x54, 0x02, 0xc7, 0x02, 0xe5, 0x02, 0xc9, 0x01, + 0x5b, 0x02, 0xef, 0x02, 0x98, 0x05, 0x10, 0x08, 0x5f, 0x09, 0x7b, 0x0a, 0x39, 0x09, 0xbb, 0x08, + 0xdf, 0x08, 0xe7, 0x0a, 0x2d, 0x0d, 0x6e, 0x0d, 0x94, 0x0f, 0x77, 0x0f, 0x96, 0x0f, 0xb7, 0x0f, + 0x45, 0x0c, 0xb3, 0x09, 0xfa, 0x02, 0x55, 0xfb, 0x00, 0xf7, 0x6d, 0xf3, 0xe6, 0xf2, 0x84, 0xf1, + 0x36, 0xf0, 0xd2, 0xef, 0xda, 0xed, 0x16, 0xed, 0xa5, 0xeb, 0xb5, 0xec, 0xbd, 0xed, 0xf8, 0xeb, + 0x47, 0xed, 0xba, 0xee, 0x27, 0xf1, 0xcf, 0xf4, 0x4d, 0xf8, 0xf8, 0xfb, 0x96, 0xfd, 0x4c, 0x00, + 0xf8, 0x03, 0x14, 0x08, 0x8a, 0x0d, 0x46, 0x11, 0xf7, 0x12, 0x4f, 0x13, 0x71, 0x13, 0x37, 0x14, + 0x17, 0x13, 0x0e, 0x12, 0x23, 0x0e, 0xf7, 0x08, 0xbb, 0x05, 0x0c, 0x02, 0xfa, 0x00, 0xf0, 0x01, + 0x44, 0x02, 0x63, 0x01, 0x7e, 0xfe, 0x98, 0xfc, 0x99, 0xf9, 0x70, 0xf7, 0x96, 0xf6, 0x1e, 0xf5, + 0xb7, 0xf5, 0xaa, 0xf6, 0x94, 0xf8, 0x80, 0xfc, 0xa4, 0xfe, 0x85, 0x00, 0x13, 0x01, 0xca, 0x01, + 0x85, 0x03, 0x12, 0x05, 0x44, 0x08, 0x46, 0x0a, 0xb9, 0x0b, 0x17, 0x0c, 0x6a, 0x0b, 0xba, 0x0d, + 0x01, 0x0e, 0xf9, 0x0c, 0xfd, 0x09, 0xdd, 0x04, 0x95, 0x00, 0x57, 0xfb, 0x9b, 0xf9, 0xfb, 0xf8, + 0xb7, 0xf6, 0x20, 0xf7, 0xdf, 0xf4, 0x2b, 0xf3, 0xcb, 0xf0, 0xe5, 0xed, 0xff, 0xec, 0x82, 0xea, + 0x13, 0xea, 0x7a, 0xea, 0x39, 0xeb, 0x8d, 0xee, 0x17, 0xef, 0xa5, 0xf0, 0xc8, 0xf1, 0x4e, 0xf3, + 0x8e, 0xf6, 0xdd, 0xf8, 0xd5, 0xfe, 0x2d, 0x04, 0x49, 0x08, 0xb7, 0x0d, 0x2b, 0x10, 0x8a, 0x13, + 0xe1, 0x15, 0x1e, 0x16, 0x54, 0x15, 0xcc, 0x11, 0xed, 0x0e, 0x40, 0x0c, 0xcd, 0x09, 0x91, 0x09, + 0x27, 0x09, 0x40, 0x0a, 0x0f, 0x09, 0xb3, 0x07, 0xee, 0x05, 0x55, 0x02, 0x59, 0x00, 0x18, 0xfd, + 0x1f, 0xfa, 0x89, 0xf9, 0x4c, 0xf7, 0x27, 0xf7, 0x55, 0xf7, 0xcb, 0xf7, 0x9f, 0xf8, 0x8c, 0xf7, + 0x43, 0xf8, 0x50, 0xf9, 0x5f, 0xfa, 0x3f, 0xfd, 0x34, 0xff, 0x23, 0x02, 0xef, 0x02, 0x69, 0x04, + 0x5d, 0x06, 0x69, 0x05, 0x0e, 0x05, 0xa9, 0x02, 0xcf, 0xfd, 0x83, 0xfb, 0x87, 0xfa, 0xf1, 0xfb, + 0x6e, 0xfc, 0x86, 0xfd, 0xdf, 0xfc, 0xe1, 0xfa, 0x32, 0xfa, 0x66, 0xf8, 0xd9, 0xf8, 0xe4, 0xf9, + 0x18, 0xfa, 0x66, 0xfb, 0x89, 0xfb, 0xd6, 0xfe, 0x7a, 0x01, 0xf6, 0x03, 0x44, 0x07, 0xa4, 0x07, + 0x28, 0x08, 0x56, 0x08, 0x67, 0x09, 0x36, 0x0d, 0xeb, 0x0e, 0x2a, 0x11, 0xe5, 0x11, 0x32, 0x12, + 0x82, 0x13, 0x3e, 0x13, 0x08, 0x12, 0xe0, 0x0d, 0xf0, 0x06, 0x0f, 0x00, 0xf5, 0xf9, 0xe7, 0xf6, + 0x40, 0xf5, 0xae, 0xf4, 0x6c, 0xf2, 0x12, 0xf0, 0x1b, 0xee, 0x87, 0xeb, 0x8e, 0xeb, 0x0f, 0xeb, + 0x35, 0xe9, 0xc5, 0xea, 0x49, 0xeb, 0x9d, 0xed, 0x4a, 0xf1, 0x62, 0xf4, 0x70, 0xf8, 0xf2, 0xf9, + 0x2f, 0xfc, 0x63, 0xff, 0x34, 0x02, 0x3e, 0x08, 0x9b, 0x0c, 0x61, 0x10, 0x78, 0x13, 0xad, 0x14, + 0x1d, 0x17, 0xdf, 0x17, 0x2d, 0x18, 0x72, 0x16, 0xbd, 0x11, 0xd5, 0x0e, 0xbc, 0x0b, 0x06, 0x0a, + 0x8e, 0x09, 0xab, 0x08, 0x3f, 0x08, 0x0d, 0x06, 0xad, 0x04, 0xcd, 0x01, 0xa9, 0xfd, 0x24, 0xfb, + 0x64, 0xf7, 0x44, 0xf5, 0x47, 0xf3, 0xa1, 0xf3, 0x88, 0xf5, 0xa7, 0xf5, 0x4c, 0xf7, 0xde, 0xf6, + 0xb5, 0xf6, 0x44, 0xf8, 0x25, 0xf7, 0x45, 0xf9, 0xcd, 0xfb, 0xbe, 0xfe, 0xab, 0x01, 0x5e, 0x01, + 0x04, 0x03, 0x5a, 0x04, 0x8a, 0x03, 0x93, 0x03, 0xa3, 0x01, 0xf7, 0xfe, 0x58, 0xfc, 0x97, 0xfa, + 0x7e, 0xfa, 0x9c, 0xfa, 0xf2, 0xfb, 0xeb, 0xfc, 0x19, 0xfd, 0x74, 0xfc, 0x64, 0xfb, 0x2c, 0xfb, + 0xa0, 0xf9, 0xb8, 0xf9, 0x4e, 0xfa, 0xfc, 0xfa, 0xa6, 0xfd, 0x21, 0xff, 0x1e, 0x01, 0x50, 0x02, + 0xe5, 0x01, 0x41, 0x02, 0xe5, 0x01, 0x2a, 0x04, 0xc3, 0x06, 0xcc, 0x08, 0xbb, 0x0c, 0x1b, 0x0e, + 0x4b, 0x0f, 0xa9, 0x10, 0x40, 0x10, 0x43, 0x10, 0xb5, 0x0c, 0xfe, 0x06, 0x4c, 0x02, 0x7c, 0xfe, + 0x67, 0xfd, 0x8d, 0xfc, 0xe9, 0xfc, 0x72, 0xfc, 0x59, 0xfb, 0xf2, 0xf9, 0xdd, 0xf7, 0xaa, 0xf7, + 0xe0, 0xf5, 0x13, 0xf4, 0x9e, 0xf2, 0x8d, 0xf1, 0xd7, 0xf2, 0x88, 0xf2, 0xb1, 0xf4, 0x88, 0xf6, + 0xd6, 0xf5, 0xfe, 0xf7, 0xcd, 0xf8, 0x01, 0xfb, 0xf3, 0xfe, 0x4c, 0x02, 0x95, 0x06, 0x1b, 0x07, + 0x51, 0x08, 0x27, 0x0a, 0xd1, 0x09, 0xf8, 0x0a, 0xf7, 0x08, 0x08, 0x04, 0xdd, 0xff, 0x89, 0xfb, + 0x08, 0xfa, 0x58, 0xfa, 0x41, 0xfc, 0x67, 0xfc, 0x80, 0xfa, 0x3a, 0xf9, 0x22, 0xf7, 0xa3, 0xf5, + 0xcf, 0xf4, 0x37, 0xf4, 0xe6, 0xf5, 0xfe, 0xf6, 0x47, 0xfa, 0x0d, 0xfe, 0x42, 0x01, 0xb1, 0x05, + 0x8e, 0x07, 0xca, 0x09, 0x71, 0x0b, 0xd2, 0x0c, 0x55, 0x11, 0xb1, 0x13, 0x5b, 0x17, 0x24, 0x19, + 0x74, 0x19, 0x9d, 0x1b, 0xac, 0x1b, 0x19, 0x1c, 0xd8, 0x1a, 0x96, 0x15, 0xfd, 0x0f, 0x69, 0x08, + 0x97, 0x03, 0xdf, 0x00, 0x1c, 0xfd, 0x61, 0xfa, 0x57, 0xf7, 0x39, 0xf4, 0x52, 0xf0, 0x85, 0xec, + 0x35, 0xea, 0x6a, 0xe6, 0x25, 0xe4, 0x77, 0xe2, 0xf6, 0xe2, 0x67, 0xe4, 0x2f, 0xe6, 0xde, 0xe8, + 0x61, 0xe9, 0xac, 0xeb, 0x02, 0xee, 0xae, 0xee, 0xe8, 0xf2, 0x3a, 0xf7, 0x82, 0xfd, 0x2d, 0x03, + 0xb0, 0x06, 0xc9, 0x0a, 0x3b, 0x0d, 0x49, 0x0f, 0x3c, 0x10, 0x4f, 0x0e, 0xe3, 0x0c, 0x68, 0x0a, + 0xb5, 0x08, 0x3f, 0x08, 0xee, 0x08, 0x68, 0x0a, 0x27, 0x0b, 0xf7, 0x0b, 0xb9, 0x0b, 0x6e, 0x0a, + 0x2b, 0x09, 0xce, 0x06, 0xb9, 0x05, 0x73, 0x04, 0xd2, 0x03, 0xaf, 0x03, 0x54, 0x04, 0xff, 0x05, + 0x5a, 0x06, 0x51, 0x06, 0x2f, 0x06, 0x8c, 0x04, 0x9f, 0x04, 0xc6, 0x03, 0x19, 0x05, 0x6d, 0x07, + 0xa7, 0x06, 0x4f, 0x06, 0x70, 0x05, 0x0f, 0x03, 0x69, 0x02, 0x73, 0xff, 0x9b, 0xfb, 0x34, 0xf6, + 0x2c, 0xf3, 0xe2, 0xf2, 0xe5, 0xf1, 0x2b, 0xf3, 0x2b, 0xf3, 0xbf, 0xf2, 0x7c, 0xf2, 0x84, 0xf0, + 0xdc, 0xf0, 0x00, 0xf0, 0x62, 0xf0, 0xf9, 0xf0, 0x19, 0xf1, 0x23, 0xf4, 0x16, 0xf7, 0x8b, 0xfa, + 0xd0, 0xfd, 0x14, 0xff, 0xc8, 0x00, 0x38, 0x00, 0xfb, 0x01, 0xd7, 0x04, 0x09, 0x08, 0x09, 0x0d, + 0xd8, 0x0e, 0xd8, 0x10, 0xe6, 0x12, 0xed, 0x13, 0x91, 0x16, 0xfe, 0x14, 0xbe, 0x11, 0x5b, 0x0c, + 0x25, 0x06, 0xeb, 0x02, 0x8f, 0x00, 0x1f, 0x00, 0xc5, 0xff, 0xcf, 0xfd, 0x6f, 0xfc, 0x02, 0xfa, + 0x39, 0xf9, 0x64, 0xf7, 0x38, 0xf4, 0xf6, 0xf2, 0x4b, 0xf2, 0xcc, 0xf2, 0x39, 0xf3, 0x5c, 0xf4, + 0x93, 0xf6, 0x33, 0xf6, 0x94, 0xf6, 0x45, 0xf7, 0xac, 0xf8, 0xd7, 0xfb, 0xc1, 0xff, 0x75, 0x04, + 0xb9, 0x06, 0x62, 0x08, 0xc6, 0x0a, 0xd1, 0x0b, 0xfe, 0x0d, 0x30, 0x0e, 0x21, 0x0c, 0xc3, 0x08, + 0x70, 0x04, 0xf9, 0x01, 0x2a, 0x00, 0x7d, 0x00, 0xe1, 0x00, 0x7b, 0xff, 0x22, 0xff, 0xe4, 0xfc, + 0xd6, 0xf9, 0x06, 0xf7, 0xc1, 0xf3, 0xc8, 0xf1, 0x0f, 0xf0, 0x30, 0xf1, 0x9a, 0xf3, 0x6e, 0xf5, + 0x14, 0xf8, 0x21, 0xf9, 0x51, 0xfb, 0xbf, 0xfc, 0x2c, 0xfd, 0x99, 0xfe, 0x4e, 0x01, 0xd2, 0x06, + 0x6e, 0x0a, 0x9f, 0x0c, 0x00, 0x0f, 0x1c, 0x10, 0xc7, 0x11, 0x2e, 0x12, 0x13, 0x12, 0x2c, 0x10, + 0x50, 0x0b, 0x38, 0x08, 0x7c, 0x05, 0xdb, 0x03, 0x30, 0x03, 0xc1, 0x01, 0xd5, 0x01, 0x08, 0xff, + 0x64, 0xfc, 0x84, 0xfa, 0xb9, 0xf6, 0x8c, 0xf5, 0x6d, 0xf4, 0xe1, 0xf3, 0xd3, 0xf4, 0x7c, 0xf5, + 0xda, 0xf7, 0x3f, 0xf9, 0x77, 0xfa, 0x6f, 0xfb, 0x5d, 0xfa, 0x5e, 0xfb, 0x53, 0xfc, 0x12, 0xfe, + 0x45, 0x02, 0x3a, 0x05, 0x18, 0x08, 0x30, 0x09, 0xe2, 0x09, 0x29, 0x0b, 0x6e, 0x09, 0x5a, 0x06, + 0xae, 0x00, 0xe7, 0xfc, 0x72, 0xfb, 0x2e, 0xfb, 0x10, 0xfd, 0xc0, 0xfc, 0xb6, 0xfd, 0x0f, 0xfe, + 0x26, 0xfd, 0x1c, 0xfe, 0xf5, 0xfc, 0x95, 0xfc, 0x63, 0xfc, 0x64, 0xfb, 0xfe, 0xfc, 0x7d, 0xfd, + 0xcb, 0xff, 0x79, 0x02, 0x3b, 0x03, 0xbd, 0x04, 0x26, 0x05, 0x15, 0x06, 0xb5, 0x06, 0x4f, 0x09, + 0x14, 0x0d, 0xdd, 0x0d, 0xfe, 0x0d, 0x0e, 0x0e, 0x2a, 0x0d, 0x7f, 0x0c, 0xea, 0x09, 0x3a, 0x06, + 0xc5, 0xff, 0x13, 0xfa, 0x11, 0xf6, 0x58, 0xf3, 0xb4, 0xf3, 0x60, 0xf3, 0x62, 0xf2, 0x65, 0xf1, + 0xd1, 0xef, 0x92, 0xef, 0xcd, 0xed, 0xab, 0xec, 0xad, 0xec, 0x4e, 0xec, 0x16, 0xef, 0x90, 0xf2, + 0x4b, 0xf6, 0x57, 0xfb, 0x71, 0xfe, 0x1e, 0x01, 0xd8, 0x01, 0x03, 0x03, 0xc8, 0x05, 0x37, 0x09, + 0x33, 0x0e, 0x53, 0x12, 0x2d, 0x15, 0xe8, 0x17, 0xfa, 0x19, 0x5d, 0x1c, 0x5b, 0x1d, 0xbc, 0x1c, + 0x1c, 0x18, 0x89, 0x12, 0x04, 0x0e, 0x41, 0x0a, 0x75, 0x08, 0xda, 0x05, 0xcb, 0x03, 0xe3, 0x02, + 0x02, 0xff, 0xfb, 0xfc, 0x96, 0xfa, 0x6e, 0xf6, 0x16, 0xf3, 0xed, 0xee, 0xfd, 0xed, 0x59, 0xed, + 0x7e, 0xed, 0x5b, 0xef, 0xd7, 0xed, 0xdb, 0xed, 0xaf, 0xed, 0x9e, 0xec, 0x85, 0xec, 0x82, 0xee, + 0xdf, 0xf3, 0xb6, 0xf8, 0x2d, 0xfc, 0x62, 0xff, 0xee, 0x00, 0xc0, 0x03, 0x71, 0x05, 0x0d, 0x06, + 0x32, 0x05, 0x4c, 0x03, 0x38, 0x01, 0x74, 0xfe, 0x7a, 0xfe, 0xc0, 0xff, 0x61, 0x00, 0x65, 0x03, + 0xde, 0x03, 0x10, 0x04, 0x2d, 0x03, 0xb7, 0x00, 0x07, 0x00, 0x39, 0xfe, 0xe8, 0xfd, 0xf6, 0xff, + 0x94, 0x00, 0xe2, 0x03, 0xae, 0x05, 0x53, 0x07, 0xf0, 0x08, 0x38, 0x08, 0xb0, 0x08, 0xcd, 0x08, + 0x73, 0x0a, 0x6f, 0x0e, 0x09, 0x10, 0xbe, 0x11, 0xce, 0x11, 0xe8, 0x10, 0x26, 0x10, 0x6b, 0x0f, + 0x7b, 0x0d, 0x97, 0x07, 0xbf, 0x02, 0x23, 0xff, 0xf5, 0xfc, 0x33, 0xfc, 0x09, 0xfa, 0x28, 0xfa, + 0x80, 0xf7, 0x5b, 0xf4, 0x3c, 0xf2, 0xba, 0xee, 0x51, 0xed, 0xdf, 0xeb, 0x1c, 0xeb, 0x98, 0xec, + 0x70, 0xed, 0x88, 0xf0, 0x4b, 0xf3, 0x49, 0xf6, 0xde, 0xf8, 0x45, 0xf9, 0x33, 0xfa, 0x2b, 0xfc, + 0xed, 0xfe, 0x31, 0x03, 0x94, 0x06, 0x5d, 0x09, 0x85, 0x0b, 0xdd, 0x0d, 0xec, 0x10, 0x31, 0x12, + 0x0a, 0x11, 0xa9, 0x0c, 0x67, 0x07, 0x11, 0x02, 0x24, 0xff, 0x27, 0xff, 0x11, 0xff, 0xf9, 0xff, + 0xb6, 0xfe, 0x8c, 0xfd, 0xef, 0xfd, 0x79, 0xfc, 0xab, 0xfa, 0x51, 0xf9, 0x08, 0xf8, 0x92, 0xf9, + 0x2b, 0xfa, 0x50, 0xfc, 0x37, 0xff, 0x38, 0x00, 0xb9, 0x01, 0x43, 0x02, 0xd0, 0x03, 0x83, 0x05, + 0x79, 0x07, 0x31, 0x0c, 0x9b, 0x0e, 0x10, 0x10, 0x9c, 0x11, 0x02, 0x12, 0x9e, 0x12, 0x2e, 0x12, + 0xdc, 0x10, 0x13, 0x0c, 0xd9, 0x05, 0x5f, 0x01, 0x6e, 0xfd, 0x88, 0xfc, 0xdd, 0xfa, 0x6c, 0xf9, + 0x93, 0xf8, 0x4c, 0xf6, 0xc6, 0xf4, 0x47, 0xf1, 0xa3, 0xee, 0x9e, 0xec, 0x8b, 0xe8, 0xf1, 0xe7, + 0xd6, 0xe7, 0x71, 0xe9, 0x6c, 0xec, 0x3f, 0xee, 0xe5, 0xf1, 0x62, 0xf3, 0x48, 0xf4, 0x65, 0xf5, + 0x0b, 0xf6, 0x65, 0xfa, 0x8b, 0xff, 0x16, 0x04, 0xa3, 0x08, 0x64, 0x0b, 0xa4, 0x0e, 0x3d, 0x11, + 0x44, 0x13, 0xc6, 0x13, 0xfd, 0x11, 0x9b, 0x0f, 0x91, 0x0d, 0xdf, 0x0c, 0x72, 0x0c, 0x85, 0x0c, + 0xde, 0x0d, 0x99, 0x0c, 0x42, 0x0b, 0x14, 0x0a, 0x6b, 0x07, 0xf8, 0x04, 0xc3, 0x01, 0x0c, 0x00, + 0x45, 0xfe, 0xc8, 0xfc, 0x0f, 0xfe, 0x2c, 0xfe, 0x07, 0xff, 0x96, 0xfe, 0xbe, 0xfb, 0x74, 0xf9, + 0xf0, 0xf6, 0xdf, 0xf6, 0x62, 0xf9, 0x8e, 0xfb, 0x86, 0xfe, 0x3a, 0xff, 0x98, 0xff, 0xc7, 0x00, + 0x13, 0x01, 0x17, 0x00, 0xa6, 0xfc, 0x01, 0xf9, 0x78, 0xf5, 0xfa, 0xf3, 0x7f, 0xf4, 0x5a, 0xf4, + 0xec, 0xf5, 0xa9, 0xf6, 0xa8, 0xf7, 0xe9, 0xf7, 0x46, 0xf7, 0x5d, 0xf7, 0xe5, 0xf5, 0x23, 0xf5, + 0x16, 0xf5, 0x68, 0xf5, 0xf0, 0xf8, 0xd1, 0xfb, 0x68, 0xff, 0x7b, 0x02, 0x2e, 0x04, 0x05, 0x06, + 0x95, 0x06, 0x3a, 0x09, 0xfd, 0x0d, 0x01, 0x11, 0xad, 0x13, 0xd0, 0x14, 0xf5, 0x15, 0x33, 0x16, + 0x82, 0x15, 0x76, 0x14, 0x62, 0x10, 0x9b, 0x0b, 0x6a, 0x06, 0x24, 0x02, 0xea, 0xff, 0x09, 0xfe, + 0x98, 0xfd, 0x6c, 0xfb, 0x21, 0xf9, 0x52, 0xf7, 0xcc, 0xf3, 0x3e, 0xf0, 0xab, 0xec, 0x00, 0xea, + 0xf9, 0xe9, 0xdc, 0xea, 0xd4, 0xed, 0x67, 0xf0, 0xb3, 0xf3, 0xf7, 0xf6, 0x5d, 0xf7, 0x9b, 0xf8, + 0x7d, 0xfa, 0xcb, 0xfc, 0xbd, 0x01, 0xe2, 0x05, 0x29, 0x0a, 0x6c, 0x0c, 0xc7, 0x0e, 0x66, 0x12, + 0x01, 0x15, 0x15, 0x17, 0x92, 0x15, 0x52, 0x11, 0x90, 0x0c, 0xbb, 0x07, 0x61, 0x05, 0x3b, 0x03, + 0x70, 0x02, 0x6a, 0x02, 0x59, 0x01, 0xb0, 0x00, 0xc5, 0xfe, 0x7f, 0xfc, 0xec, 0xf9, 0x59, 0xf6, + 0x54, 0xf5, 0x5d, 0xf3, 0x29, 0xf4, 0x90, 0xf6, 0xdf, 0xf7, 0xa1, 0xf8, 0x75, 0xf8, 0xfa, 0xf8, + 0x8d, 0xf8, 0xa5, 0xf8, 0x95, 0xfc, 0x3b, 0x00, 0xce, 0x03, 0x67, 0x06, 0xe8, 0x07, 0x4e, 0x09, + 0x17, 0x0a, 0x85, 0x0a, 0xe8, 0x08, 0x6a, 0x05, 0x96, 0x01, 0x89, 0xfc, 0xa1, 0xfa, 0x5f, 0xfa, + 0x51, 0xfa, 0x6b, 0xfb, 0x0f, 0xfc, 0xf9, 0xfc, 0x81, 0xfc, 0x25, 0xfb, 0x69, 0xfa, 0xa2, 0xf8, + 0x32, 0xf8, 0x11, 0xf8, 0x1a, 0xf9, 0x8d, 0xfa, 0xa9, 0xfc, 0x03, 0x00, 0x2d, 0x02, 0x03, 0x03, + 0x6f, 0x03, 0xb1, 0x02, 0x22, 0x04, 0x3e, 0x06, 0x8a, 0x08, 0x43, 0x0b, 0x62, 0x0c, 0xad, 0x0d, + 0xbf, 0x0d, 0x8a, 0x0e, 0x4a, 0x0f, 0xe9, 0x0b, 0x07, 0x08, 0x5e, 0x03, 0x55, 0x01, 0xcc, 0x00, + 0x09, 0x00, 0xd2, 0x01, 0x07, 0x01, 0x5c, 0xff, 0x25, 0xfe, 0xcb, 0xfb, 0xb6, 0xfa, 0xbe, 0xf8, + 0x17, 0xf8, 0x39, 0xf7, 0x47, 0xf6, 0xea, 0xf7, 0x7f, 0xf9, 0x4e, 0xfc, 0x46, 0xfe, 0xa1, 0xfe, + 0x70, 0xfe, 0x5a, 0xfc, 0x46, 0xfc, 0x44, 0xfd, 0x84, 0xff, 0x5b, 0x02, 0x07, 0x03, 0xd9, 0x04, + 0xd8, 0x06, 0x19, 0x08, 0x1f, 0x08, 0x2a, 0x05, 0xf4, 0x01, 0x36, 0xfc, 0x40, 0xf8, 0xfe, 0xf6, + 0x8b, 0xf5, 0x45, 0xf6, 0x17, 0xf6, 0xb5, 0xf5, 0x5f, 0xf6, 0x36, 0xf6, 0xe8, 0xf5, 0x6c, 0xf4, + 0xe3, 0xf2, 0x74, 0xf2, 0x3f, 0xf2, 0xf0, 0xf3, 0xc4, 0xf6, 0x23, 0xfa, 0x50, 0xfd, 0x62, 0xff, + 0x11, 0x02, 0x90, 0x03, 0xeb, 0x05, 0xad, 0x0a, 0x4a, 0x0f, 0x5f, 0x13, 0xbd, 0x15, 0xb0, 0x18, + 0xce, 0x1a, 0xab, 0x1b, 0x12, 0x1d, 0x74, 0x1a, 0x66, 0x16, 0xd6, 0x11, 0x82, 0x0c, 0xb8, 0x09, + 0x9c, 0x06, 0xf1, 0x04, 0x75, 0x03, 0x10, 0x01, 0x4d, 0xff, 0x0b, 0xfb, 0x10, 0xf7, 0xb0, 0xf2, + 0xa7, 0xec, 0x43, 0xe8, 0x88, 0xe4, 0xf0, 0xe3, 0x97, 0xe4, 0x45, 0xe6, 0x93, 0xe8, 0x79, 0xe9, + 0xaa, 0xea, 0xd9, 0xea, 0x2d, 0xeb, 0x2b, 0xee, 0xae, 0xf2, 0xfd, 0xf8, 0x66, 0xfd, 0x2d, 0x01, + 0xa9, 0x04, 0xb3, 0x07, 0x9c, 0x0b, 0x13, 0x0d, 0x80, 0x0d, 0x70, 0x0c, 0x49, 0x09, 0x3e, 0x08, + 0xf7, 0x06, 0xe4, 0x06, 0x8c, 0x08, 0xca, 0x08, 0xee, 0x09, 0x92, 0x0a, 0x4a, 0x0a, 0x2e, 0x09, + 0x92, 0x06, 0xaf, 0x05, 0xf2, 0x03, 0x71, 0x02, 0x5b, 0x03, 0x1c, 0x05, 0x52, 0x07, 0x42, 0x08, + 0x7b, 0x07, 0xa3, 0x05, 0xe9, 0x02, 0xc1, 0x02, 0x03, 0x04, 0x23, 0x06, 0xec, 0x07, 0x05, 0x09, + 0xa9, 0x09, 0xe7, 0x08, 0x4f, 0x09, 0x41, 0x08, 0xc2, 0x04, 0x76, 0x00, 0x02, 0xf9, 0x4a, 0xf4, + 0xf8, 0xf1, 0x3e, 0xf0, 0xc4, 0xf0, 0x74, 0xf0, 0xdc, 0xf0, 0x66, 0xf0, 0x11, 0xef, 0x15, 0xef, + 0xcd, 0xed, 0xdf, 0xec, 0xb7, 0xec, 0x9f, 0xec, 0x3a, 0xee, 0xf1, 0xf0, 0xa0, 0xf4, 0xd9, 0xf8, + 0x1b, 0xfc, 0xd9, 0xfe, 0x2e, 0x00, 0xd5, 0x02, 0x47, 0x06, 0xb5, 0x0a, 0xdc, 0x0d, 0xba, 0x0f, + 0x85, 0x12, 0x9b, 0x13, 0x81, 0x15, 0x71, 0x16, 0x27, 0x15, 0xfa, 0x12, 0xac, 0x0d, 0x90, 0x0a, + 0xe1, 0x07, 0x65, 0x05, 0x38, 0x06, 0x1a, 0x06, 0x1c, 0x05, 0x3d, 0x04, 0x12, 0x02, 0xd5, 0xff, + 0x11, 0xfc, 0x8c, 0xf9, 0x12, 0xf8, 0x00, 0xf7, 0xbf, 0xf7, 0x6a, 0xf9, 0x3e, 0xfb, 0x9b, 0xfd, + 0x2f, 0xfe, 0x14, 0xfe, 0xba, 0xfd, 0xad, 0xfd, 0x3c, 0xfe, 0x7a, 0x00, 0x4b, 0x03, 0xbc, 0x04, + 0xa5, 0x06, 0x37, 0x08, 0x2d, 0x0a, 0xa4, 0x0c, 0xb3, 0x0b, 0x14, 0x0a, 0xe0, 0x05, 0x28, 0x01, + 0x87, 0xfe, 0xaa, 0xfb, 0x36, 0xfb, 0xcc, 0xfa, 0xd7, 0xf9, 0x5f, 0xfa, 0xa1, 0xf8, 0x0b, 0xf8, + 0x8e, 0xf6, 0x04, 0xf4, 0x88, 0xf2, 0x8b, 0xef, 0x97, 0xee, 0x7d, 0xef, 0x31, 0xf1, 0x81, 0xf3, + 0x4d, 0xf4, 0xb1, 0xf6, 0xa2, 0xf7, 0x23, 0xf8, 0x82, 0xfa, 0xc1, 0xfe, 0xac, 0x03, 0x4a, 0x07, + 0x4e, 0x0b, 0x6d, 0x0e, 0xe6, 0x10, 0xe1, 0x13, 0xa1, 0x13, 0xf2, 0x12, 0x0f, 0x10, 0x16, 0x0c, + 0x3d, 0x0a, 0xe9, 0x07, 0x5d, 0x07, 0x43, 0x07, 0x7a, 0x06, 0x4c, 0x07, 0x2a, 0x06, 0xe4, 0x04, + 0x34, 0x03, 0xbc, 0xff, 0x43, 0xfc, 0x95, 0xf8, 0x62, 0xf6, 0xb9, 0xf5, 0xa9, 0xf5, 0x18, 0xf8, + 0xcb, 0xf9, 0xf3, 0xf9, 0x69, 0xf9, 0xe9, 0xf7, 0x62, 0xf7, 0x9e, 0xf8, 0x27, 0xfb, 0x19, 0xfe, + 0xec, 0x00, 0xdc, 0x02, 0x8f, 0x03, 0x92, 0x05, 0x82, 0x06, 0x68, 0x06, 0x7a, 0x04, 0x81, 0x00, + 0x2c, 0xfe, 0x2b, 0xfc, 0xd7, 0xfa, 0xe4, 0xfb, 0xb2, 0xfb, 0xfc, 0xfb, 0x39, 0xfb, 0x0e, 0xfb, + 0x79, 0xfb, 0x11, 0xfa, 0x47, 0xfa, 0xec, 0xf9, 0x0f, 0xf9, 0x24, 0xfa, 0x06, 0xfc, 0xe7, 0xff, + 0x98, 0x03, 0xc8, 0x06, 0x87, 0x08, 0x57, 0x07, 0x60, 0x07, 0xf1, 0x07, 0x48, 0x0a, 0x1f, 0x0d, + 0xb3, 0x0e, 0x54, 0x10, 0x1a, 0x11, 0x5c, 0x13, 0x9f, 0x12, 0xd6, 0x10, 0x48, 0x0e, 0x6e, 0x07, + 0x3e, 0x01, 0x97, 0xfb, 0x64, 0xf7, 0x9b, 0xf5, 0x72, 0xf3, 0x14, 0xf3, 0xb6, 0xf1, 0x8c, 0xf0, + 0x43, 0xf0, 0xdb, 0xed, 0x48, 0xec, 0xad, 0xea, 0x90, 0xe9, 0xb6, 0xea, 0x94, 0xec, 0xd3, 0xef, + 0x82, 0xf3, 0xaa, 0xf5, 0x56, 0xf8, 0xfc, 0xf9, 0x05, 0xfc, 0x95, 0xff, 0x33, 0x04, 0x2c, 0x09, + 0x44, 0x0c, 0xe2, 0x0f, 0x3b, 0x12, 0x4f, 0x14, 0xf1, 0x16, 0x19, 0x18, 0xeb, 0x17, 0x89, 0x14, + 0xec, 0x10, 0x07, 0x0e, 0xbf, 0x0a, 0xcf, 0x09, 0xdc, 0x08, 0x2b, 0x08, 0x03, 0x08, 0xdc, 0x05, + 0xfe, 0x03, 0x28, 0x00, 0x13, 0xfc, 0x9f, 0xf8, 0x0b, 0xf4, 0x4e, 0xf2, 0xb1, 0xf1, 0x4b, 0xf2, + 0x66, 0xf4, 0x8d, 0xf4, 0x04, 0xf5, 0xa5, 0xf4, 0xf8, 0xf3, 0xc4, 0xf3, 0x41, 0xf4, 0x5a, 0xf7, + 0xff, 0xf9, 0x5d, 0xfc, 0x7e, 0xfe, 0xe0, 0x00, 0xa5, 0x03, 0xb6, 0x04, 0x8f, 0x05, 0x2f, 0x04, + 0x79, 0x01, 0x25, 0xff, 0xdf, 0xfc, 0xca, 0xfc, 0x5f, 0xfd, 0x6f, 0xfe, 0xe9, 0xff, 0x7d, 0x00, + 0xf0, 0x01, 0x77, 0x01, 0x8c, 0x00, 0x01, 0x00, 0x7b, 0xfe, 0x3f, 0xfd, 0xe1, 0xfc, 0xc2, 0xfd, + 0x63, 0x00, 0xc9, 0x01, 0x28, 0x03, 0x72, 0x03, 0xf4, 0x01, 0xfd, 0x01, 0x59, 0x03, 0xeb, 0x05, + 0x71, 0x08, 0x46, 0x0b, 0xbd, 0x0d, 0x7d, 0x0e, 0xa7, 0x10, 0xa2, 0x11, 0x18, 0x11, 0x9c, 0x0e, + 0x6b, 0x09, 0x6c, 0x04, 0x5a, 0x00, 0x01, 0xfe, 0x14, 0xfd, 0x00, 0xfc, 0x53, 0xfc, 0x70, 0xfa, + 0xb4, 0xf8, 0x7a, 0xf7, 0xe6, 0xf5, 0x12, 0xf4, 0x96, 0xf0, 0x4f, 0xee, 0x5e, 0xec, 0x1b, 0xeb, + 0x81, 0xed, 0x87, 0xef, 0x8b, 0xf2, 0x6a, 0xf5, 0xcd, 0xf5, 0x4e, 0xf7, 0xac, 0xf8, 0xa4, 0xfb, + 0x5c, 0xff, 0xa2, 0x02, 0x94, 0x06, 0xd0, 0x08, 0xf0, 0x0b, 0x81, 0x0d, 0x0a, 0x0e, 0x9d, 0x0d, + 0x65, 0x0a, 0x9e, 0x07, 0xb3, 0x04, 0xd3, 0x01, 0x7a, 0x01, 0x52, 0x01, 0x44, 0x01, 0x9e, 0xff, + 0xb2, 0xfe, 0x1c, 0xfe, 0x2e, 0xfc, 0xe5, 0xfa, 0xa8, 0xf9, 0x71, 0xf8, 0x61, 0xf8, 0x59, 0xf9, + 0x14, 0xfc, 0x4a, 0xff, 0x4d, 0x02, 0xcc, 0x04, 0x3e, 0x05, 0xef, 0x05, 0x5d, 0x06, 0xe7, 0x07, + 0x67, 0x0b, 0xe8, 0x0d, 0xe7, 0x10, 0xdc, 0x12, 0x2f, 0x15, 0xa3, 0x17, 0x2b, 0x18, 0xe2, 0x17, + 0xac, 0x14, 0x84, 0x0e, 0x02, 0x09, 0x25, 0x03, 0x28, 0xff, 0x04, 0xfc, 0xbc, 0xf9, 0x3d, 0xf8, + 0x27, 0xf6, 0x7e, 0xf4, 0xed, 0xf1, 0x45, 0xef, 0x0e, 0xec, 0xff, 0xe7, 0x65, 0xe5, 0x5c, 0xe4, + 0x2b, 0xe6, 0x3d, 0xe8, 0x22, 0xea, 0x9d, 0xec, 0xe4, 0xed, 0x32, 0xef, 0x82, 0xf0, 0xa3, 0xf3, + 0xa3, 0xf8, 0xcb, 0xfc, 0x10, 0x02, 0x02, 0x06, 0x64, 0x09, 0x9c, 0x0c, 0x6b, 0x0e, 0x07, 0x10, + 0xa1, 0x0f, 0xe6, 0x0d, 0xa5, 0x0c, 0x7d, 0x0a, 0x25, 0x0a, 0x3d, 0x0a, 0xe1, 0x0a, 0xfa, 0x0b, + 0x34, 0x0d, 0x85, 0x0e, 0xe5, 0x0d, 0xd6, 0x0c, 0x65, 0x0a, 0xe4, 0x06, 0xc3, 0x04, 0x9e, 0x02, + 0x05, 0x02, 0x69, 0x03, 0xbe, 0x04, 0x4c, 0x05, 0x04, 0x04, 0xbb, 0x02, 0x11, 0x01, 0x3e, 0xff, + 0xa7, 0xff, 0xa1, 0xff, 0xdf, 0x00, 0xa2, 0x01, 0x00, 0x01, 0x9e, 0x01, 0x6d, 0x01, 0x63, 0x01, + 0xd7, 0xff, 0xb5, 0xfb, 0x48, 0xf8, 0xf0, 0xf3, 0x75, 0xf1, 0x94, 0xf1, 0xe0, 0xf1, 0x1c, 0xf3, + 0x2f, 0xf3, 0x56, 0xf3, 0x9e, 0xf3, 0x29, 0xf3, 0x79, 0xf3, 0x8f, 0xf3, 0x6c, 0xf3, 0xff, 0xf2, + 0x5a, 0xf4, 0xc4, 0xf7, 0xd9, 0xfa, 0xea, 0xfe, 0xbc, 0x01, 0xb4, 0x02, 0xd3, 0x03, 0x41, 0x04, + 0x29, 0x07, 0xda, 0x09, 0x30, 0x0d, 0x98, 0x10, 0x04, 0x12, 0x5c, 0x15, 0x46, 0x17, 0x09, 0x18, + 0x08, 0x18, 0x67, 0x14, 0x7c, 0x0f, 0x35, 0x0a, 0x3a, 0x05, 0x0a, 0x03, 0x36, 0x01, 0x5f, 0x00, + 0x58, 0xff, 0x28, 0xfd, 0xab, 0xfb, 0xcf, 0xf9, 0x97, 0xf7, 0xdb, 0xf4, 0xe2, 0xf1, 0x1d, 0xef, + 0x71, 0xed, 0xa9, 0xed, 0xdc, 0xee, 0xc0, 0xf0, 0xee, 0xf1, 0x88, 0xf2, 0x45, 0xf3, 0xea, 0xf3, + 0xb5, 0xf6, 0x7c, 0xf9, 0xb5, 0xfc, 0xd2, 0x00, 0x87, 0x03, 0xea, 0x06, 0xd3, 0x09, 0x6c, 0x0c, + 0x20, 0x0e, 0x69, 0x0c, 0x0b, 0x0a, 0x90, 0x07, 0x3f, 0x04, 0x26, 0x03, 0xa0, 0x02, 0x05, 0x03, + 0xcd, 0x02, 0x38, 0x01, 0x20, 0x00, 0xc6, 0xfd, 0x9b, 0xfb, 0x58, 0xf9, 0x83, 0xf6, 0x38, 0xf4, + 0x0b, 0xf3, 0x0b, 0xf4, 0x5d, 0xf5, 0xbc, 0xf7, 0xfa, 0xf9, 0x45, 0xfb, 0xb7, 0xfc, 0x3a, 0xfc, + 0xdb, 0xfc, 0x02, 0xff, 0x98, 0x01, 0xa5, 0x05, 0xb5, 0x07, 0xad, 0x0b, 0xd0, 0x0e, 0x03, 0x0f, + 0x90, 0x10, 0xb8, 0x0f, 0x44, 0x0d, 0xb5, 0x0a, 0x03, 0x06, 0x1c, 0x03, 0xd5, 0x00, 0x6a, 0xff, + 0xc9, 0xfe, 0xb6, 0xfd, 0xca, 0xfd, 0x29, 0xfd, 0x25, 0xfc, 0x0a, 0xfb, 0x91, 0xf8, 0xe8, 0xf5, + 0x4f, 0xf3, 0xcd, 0xf2, 0x84, 0xf4, 0x8d, 0xf6, 0xa5, 0xf8, 0xfe, 0xf9, 0x10, 0xfa, 0xee, 0xf8, + 0xe8, 0xf8, 0xdc, 0xfa, 0xda, 0xfc, 0xde, 0x00, 0xb0, 0x04, 0x26, 0x07, 0xd8, 0x09, 0x3d, 0x0b, + 0x8b, 0x0c, 0xf8, 0x0b, 0x08, 0x09, 0x93, 0x06, 0x75, 0x02, 0xff, 0xff, 0x98, 0xff, 0xea, 0xfe, + 0xbb, 0xff, 0xae, 0xff, 0x75, 0xff, 0xce, 0xff, 0xc8, 0xff, 0xee, 0xff, 0x0d, 0xfe, 0x0d, 0xfc, + 0x20, 0xfa, 0x44, 0xf8, 0x42, 0xf9, 0xea, 0xfb, 0xab, 0xfe, 0xd0, 0x00, 0xf1, 0x01, 0x26, 0x02, + 0x0c, 0x02, 0x47, 0x03, 0x79, 0x04, 0x4f, 0x07, 0x02, 0x09, 0xf0, 0x09, 0xd9, 0x0b, 0x00, 0x0c, + 0x70, 0x0c, 0xab, 0x0b, 0xbe, 0x08, 0xda, 0x05, 0x08, 0x01, 0x95, 0xfc, 0x97, 0xf9, 0xcf, 0xf8, + 0xfa, 0xf8, 0x0c, 0xf8, 0x3c, 0xf7, 0x29, 0xf7, 0xf1, 0xf5, 0x9f, 0xf4, 0x53, 0xf3, 0x3d, 0xf2, + 0x1b, 0xf1, 0x48, 0xf1, 0x03, 0xf4, 0x41, 0xf7, 0x7c, 0xfa, 0x3f, 0xfd, 0x9d, 0xfe, 0x1f, 0xff, + 0x95, 0xff, 0xa5, 0x01, 0xbe, 0x03, 0xee, 0x07, 0x6c, 0x0c, 0x6d, 0x0f, 0x9d, 0x13, 0xbd, 0x16, + 0xa4, 0x19, 0x63, 0x1c, 0x30, 0x1c, 0x68, 0x1a, 0xa2, 0x15, 0x5b, 0x10, 0x6a, 0x0c, 0x39, 0x08, + 0x32, 0x07, 0x3c, 0x06, 0x0f, 0x04, 0x7c, 0x02, 0x8b, 0xff, 0x30, 0xfd, 0x19, 0xfa, 0x0e, 0xf6, + 0x33, 0xf2, 0x22, 0xee, 0x81, 0xec, 0xb4, 0xeb, 0x76, 0xeb, 0xff, 0xeb, 0xda, 0xeb, 0xc7, 0xeb, + 0xe4, 0xea, 0xb3, 0xeb, 0x4a, 0xed, 0xaf, 0xef, 0xd1, 0xf3, 0xfe, 0xf6, 0x64, 0xfb, 0x27, 0xff, + 0xaa, 0x01, 0x2e, 0x05, 0xbc, 0x05, 0x87, 0x05, 0xea, 0x04, 0x7c, 0x02, 0x6e, 0x01, 0x68, 0x01, + 0x16, 0x03, 0xe3, 0x04, 0x09, 0x06, 0xbe, 0x07, 0xf3, 0x07, 0x0f, 0x08, 0xaf, 0x07, 0x6b, 0x05, + 0xd6, 0x03, 0x75, 0x02, 0x00, 0x02, 0xa9, 0x03, 0x57, 0x05, 0x4e, 0x07, 0x40, 0x08, 0x88, 0x08, + 0x27, 0x08, 0x3c, 0x07, 0xbb, 0x06, 0xff, 0x06, 0x74, 0x08, 0xa8, 0x09, 0x08, 0x0b, 0x6d, 0x0c, + 0x92, 0x0c, 0x0c, 0x0d, 0xa5, 0x0b, 0xc6, 0x08, 0x04, 0x05, 0xd8, 0xff, 0xbd, 0xfb, 0x8a, 0xf8, + 0xb9, 0xf6, 0x0d, 0xf6, 0xac, 0xf4, 0x52, 0xf3, 0x93, 0xf1, 0x28, 0xf0, 0xbe, 0xef, 0xd5, 0xee, + 0x15, 0xee, 0xd9, 0xeb, 0xad, 0xea, 0x31, 0xec, 0x76, 0xee, 0x50, 0xf2, 0x4a, 0xf6, 0x71, 0xf9, + 0xe5, 0xfa, 0xda, 0xfb, 0x69, 0xfd, 0xc9, 0xfe, 0x2a, 0x02, 0xce, 0x05, 0xbc, 0x09, 0x02, 0x0e, + 0x90, 0x10, 0x1f, 0x13, 0x54, 0x13, 0xdb, 0x11, 0x5a, 0x0f, 0x28, 0x0a, 0x50, 0x06, 0x66, 0x03, + 0x9a, 0x02, 0xe1, 0x02, 0x0e, 0x02, 0xac, 0x01, 0xeb, 0x00, 0xc2, 0x00, 0xe9, 0x00, 0x53, 0xff, + 0x0c, 0xfe, 0x0d, 0xfc, 0x71, 0xf9, 0x2e, 0xf9, 0x31, 0xfa, 0xab, 0xfc, 0x7f, 0xfe, 0x70, 0xff, + 0xd7, 0xff, 0x2d, 0xff, 0xdc, 0xff, 0x89, 0x00, 0x3e, 0x02, 0xd0, 0x04, 0xa9, 0x06, 0xb1, 0x08, + 0xc5, 0x09, 0xd8, 0x0a, 0xdc, 0x0b, 0x77, 0x0a, 0x86, 0x08, 0x11, 0x05, 0xe9, 0x00, 0x15, 0xfd, + 0x23, 0xfa, 0x17, 0xfa, 0xb5, 0xf9, 0xce, 0xf8, 0x99, 0xf8, 0x3f, 0xf7, 0x67, 0xf6, 0x8b, 0xf4, + 0x70, 0xf2, 0x02, 0xf0, 0x35, 0xed, 0xe6, 0xed, 0x2e, 0xef, 0xd9, 0xf1, 0x71, 0xf5, 0x72, 0xf7, + 0x2c, 0xf9, 0x01, 0xf9, 0x32, 0xf9, 0x05, 0xfa, 0x21, 0xfc, 0x6a, 0x00, 0x6c, 0x04, 0xdf, 0x08, + 0x06, 0x0d, 0x5a, 0x0f, 0x95, 0x11, 0x0b, 0x13, 0x66, 0x13, 0x1e, 0x12, 0x1d, 0x10, 0x29, 0x0d, + 0xc3, 0x0a, 0x36, 0x0a, 0xba, 0x09, 0xe9, 0x09, 0x17, 0x0a, 0xe3, 0x09, 0x7a, 0x09, 0x53, 0x08, + 0x1a, 0x06, 0xda, 0x02, 0x14, 0xff, 0x61, 0xfc, 0x5d, 0xfb, 0x66, 0xfb, 0xce, 0xfb, 0x85, 0xfb, + 0x9f, 0xfa, 0x5b, 0xf8, 0x94, 0xf6, 0x92, 0xf5, 0x62, 0xf5, 0xd8, 0xf6, 0x30, 0xf9, 0x91, 0xfb, + 0x62, 0xfd, 0x66, 0xfe, 0x7d, 0x00, 0x23, 0x01, 0x49, 0x00, 0x18, 0xfe, 0xf2, 0xfa, 0x75, 0xf7, + 0xd1, 0xf4, 0xd3, 0xf4, 0xc6, 0xf5, 0x64, 0xf7, 0xca, 0xf8, 0xbe, 0xf8, 0x9c, 0xf9, 0xdc, 0xf9, + 0x99, 0xf9, 0xd0, 0xf8, 0xa8, 0xf6, 0x2d, 0xf6, 0x14, 0xf7, 0x3c, 0xf9, 0x54, 0xfd, 0xf9, 0xff, + 0x51, 0x03, 0xce, 0x05, 0x13, 0x07, 0x0e, 0x09, 0x7c, 0x0a, 0x65, 0x0d, 0xd4, 0x0f, 0x08, 0x12, + 0xcb, 0x14, 0x07, 0x16, 0xd2, 0x17, 0xf1, 0x17, 0x6a, 0x16, 0x8b, 0x13, 0x81, 0x0e, 0x4d, 0x09, + 0x91, 0x04, 0x0f, 0x02, 0xae, 0x00, 0x49, 0xfe, 0x12, 0xfc, 0x71, 0xf9, 0x27, 0xf7, 0x82, 0xf4, + 0xb6, 0xf1, 0x00, 0xf0, 0x31, 0xed, 0xfa, 0xea, 0xe0, 0xea, 0xd7, 0xeb, 0x99, 0xee, 0x03, 0xf1, + 0x7b, 0xf3, 0x0b, 0xf5, 0xb5, 0xf5, 0xdc, 0xf7, 0x45, 0xf9, 0x7d, 0xfb, 0xdb, 0xff, 0x5b, 0x03, + 0xff, 0x07, 0xbe, 0x0c, 0xdb, 0x10, 0xf8, 0x14, 0xbd, 0x16, 0xe1, 0x16, 0x55, 0x14, 0x97, 0x0f, + 0x66, 0x0b, 0x17, 0x08, 0xfd, 0x06, 0x53, 0x07, 0xe0, 0x06, 0x67, 0x05, 0x10, 0x04, 0xfc, 0x02, + 0x54, 0x01, 0x97, 0xff, 0xfe, 0xfc, 0xb3, 0xf9, 0x8d, 0xf7, 0xfd, 0xf5, 0x17, 0xf6, 0xc9, 0xf6, + 0xd5, 0xf7, 0xb6, 0xf8, 0xb3, 0xf7, 0xa3, 0xf7, 0x51, 0xf7, 0x16, 0xf8, 0x9a, 0xfa, 0x29, 0xfd, + 0x71, 0x00, 0x0e, 0x03, 0xb8, 0x04, 0x34, 0x06, 0x79, 0x06, 0x20, 0x05, 0x3e, 0x03, 0xbb, 0x00, + 0x91, 0xfd, 0x4d, 0xfb, 0x35, 0xfb, 0x93, 0xfb, 0x2a, 0xfc, 0xd3, 0xfc, 0xf2, 0xfd, 0xea, 0xfe, + 0x4a, 0xff, 0x60, 0xff, 0xc5, 0xfd, 0xa1, 0xfb, 0x41, 0xfa, 0xac, 0xf9, 0x46, 0xfc, 0xc6, 0xfe, + 0x9d, 0x01, 0xb3, 0x03, 0xa3, 0x03, 0xad, 0x03, 0x50, 0x02, 0x58, 0x01, 0xaa, 0x02, 0x4e, 0x04, + 0x3a, 0x07, 0x7a, 0x0a, 0xe4, 0x0b, 0xbb, 0x0d, 0x6b, 0x0e, 0xe5, 0x0d, 0x1b, 0x0c, 0x28, 0x09, + 0x11, 0x06, 0xf3, 0x02, 0x03, 0x01, 0x3b, 0x00, 0xf7, 0xff, 0x96, 0xff, 0x8a, 0xfe, 0xdf, 0xfd, + 0xcc, 0xfc, 0xe6, 0xfb, 0xe6, 0xfa, 0xca, 0xf7, 0xad, 0xf5, 0x7a, 0xf4, 0xa2, 0xf4, 0x36, 0xf6, + 0xee, 0xf7, 0x8c, 0xfa, 0xa3, 0xfa, 0x27, 0xfa, 0x0d, 0xfa, 0x1a, 0xf9, 0xa2, 0xfa, 0x08, 0xfc, + 0x85, 0xfe, 0x09, 0x02, 0x7e, 0x03, 0x1c, 0x06, 0x9f, 0x07, 0x75, 0x07, 0xa5, 0x06, 0x78, 0x03, + 0x96, 0xff, 0xff, 0xfb, 0xf8, 0xf9, 0xd7, 0xf9, 0x2c, 0xfa, 0x69, 0xfa, 0x10, 0xfb, 0xf2, 0xfb, + 0xbc, 0xfc, 0xcd, 0xfc, 0xed, 0xfb, 0x02, 0xfa, 0xf1, 0xf7, 0x27, 0xf6, 0xea, 0xf6, 0xbc, 0xf9, + 0x2f, 0xfc, 0xf1, 0xfe, 0x51, 0x00, 0x0a, 0x01, 0x5f, 0x02, 0x4b, 0x03, 0xa3, 0x05, 0xb1, 0x08, + 0x9b, 0x0b, 0xd7, 0x0e, 0xd2, 0x10, 0xd8, 0x12, 0x24, 0x15, 0xd0, 0x15, 0x15, 0x15, 0x7d, 0x12, + 0x17, 0x0e, 0x5f, 0x09, 0x03, 0x05, 0xd3, 0x02, 0xdd, 0x01, 0x6c, 0x00, 0xc4, 0xfe, 0x07, 0xfd, + 0x91, 0xfa, 0x58, 0xf7, 0xae, 0xf4, 0xc5, 0xf0, 0x96, 0xec, 0xe2, 0xe9, 0x1e, 0xe9, 0xef, 0xe9, + 0xa0, 0xea, 0x05, 0xed, 0x53, 0xee, 0xc0, 0xee, 0x92, 0xef, 0x66, 0xef, 0x13, 0xf1, 0x2a, 0xf4, + 0x01, 0xf7, 0x8f, 0xfb, 0xb7, 0xff, 0x4e, 0x04, 0x71, 0x08, 0x6f, 0x0b, 0xb6, 0x0d, 0x7b, 0x0d, + 0x4a, 0x0c, 0xc3, 0x09, 0xdb, 0x06, 0x50, 0x06, 0xac, 0x06, 0x06, 0x08, 0x1b, 0x09, 0x7e, 0x0a, + 0xfc, 0x0b, 0x76, 0x0c, 0xa3, 0x0c, 0x64, 0x0b, 0xa3, 0x09, 0x84, 0x07, 0x8e, 0x05, 0xda, 0x05, + 0xee, 0x05, 0x24, 0x07, 0xab, 0x07, 0x40, 0x06, 0x14, 0x05, 0xdc, 0x02, 0xc8, 0x00, 0x5d, 0x00, + 0x94, 0x00, 0x98, 0x02, 0xdc, 0x03, 0x02, 0x04, 0xe1, 0x04, 0xa5, 0x04, 0x1c, 0x03, 0xb6, 0xff, + 0x69, 0xfb, 0x0c, 0xf7, 0x2e, 0xf2, 0x5b, 0xef, 0x90, 0xee, 0xc7, 0xee, 0x81, 0xef, 0x4d, 0xef, + 0xc2, 0xef, 0x6f, 0xf0, 0xdc, 0xf0, 0x69, 0xf1, 0xb3, 0xf0, 0xf4, 0xef, 0x4c, 0xef, 0x1c, 0xf0, + 0xa0, 0xf2, 0xc8, 0xf6, 0x8a, 0xfb, 0x2c, 0xff, 0x84, 0x02, 0x2c, 0x04, 0x3f, 0x05, 0xd3, 0x07, + 0x37, 0x09, 0x2f, 0x0c, 0xf3, 0x0f, 0x0a, 0x13, 0x3c, 0x16, 0x2d, 0x18, 0xd5, 0x18, 0xc2, 0x17, + 0x9a, 0x14, 0xc1, 0x10, 0x46, 0x0c, 0xe0, 0x09, 0x99, 0x08, 0x8c, 0x07, 0x7f, 0x06, 0x7b, 0x04, + 0x3f, 0x03, 0xdc, 0x01, 0xa3, 0xff, 0xda, 0xfd, 0x49, 0xfb, 0x66, 0xf8, 0x97, 0xf5, 0xc0, 0xf4, + 0x77, 0xf5, 0xc7, 0xf6, 0x1f, 0xf9, 0xef, 0xf9, 0xae, 0xf9, 0xb8, 0xf8, 0xc1, 0xf7, 0x0a, 0xf8, + 0xfc, 0xf8, 0xc0, 0xfb, 0x71, 0xfe, 0x29, 0x01, 0xc9, 0x04, 0x8c, 0x07, 0x29, 0x0a, 0x80, 0x0b, + 0x37, 0x0a, 0x80, 0x07, 0x77, 0x03, 0xf9, 0xff, 0xbf, 0xfd, 0x7a, 0xfc, 0xca, 0xfc, 0x73, 0xfc, + 0x23, 0xfc, 0xa2, 0xfc, 0x51, 0xfc, 0x08, 0xfc, 0x5c, 0xfa, 0x67, 0xf7, 0x81, 0xf4, 0xb4, 0xf2, + 0x38, 0xf3, 0x84, 0xf4, 0x23, 0xf7, 0x8d, 0xf9, 0xcd, 0xfa, 0xa9, 0xfb, 0x5b, 0xfb, 0xfe, 0xfc, + 0x91, 0xff, 0xbc, 0x02, 0xbf, 0x06, 0x0b, 0x0a, 0x69, 0x0d, 0x0c, 0x10, 0x31, 0x12, 0xd1, 0x12, + 0x08, 0x11, 0x3a, 0x0f, 0x94, 0x0b, 0xca, 0x07, 0xcc, 0x05, 0x95, 0x04, 0xf7, 0x03, 0x16, 0x03, + 0xa9, 0x02, 0xc5, 0x02, 0x87, 0x01, 0x25, 0x00, 0xf4, 0xfd, 0xde, 0xfa, 0xa8, 0xf7, 0xf6, 0xf4, + 0x42, 0xf4, 0x4b, 0xf5, 0x49, 0xf7, 0x00, 0xf9, 0xa8, 0xf9, 0xd8, 0xf9, 0xc5, 0xf8, 0x8e, 0xf7, + 0xa6, 0xf7, 0x36, 0xf9, 0xab, 0xfb, 0x4e, 0xfe, 0xea, 0x00, 0xee, 0x02, 0x67, 0x05, 0x64, 0x07, + 0x1c, 0x07, 0xbb, 0x05, 0x57, 0x03, 0xcd, 0xff, 0xe6, 0xfc, 0x2f, 0xfb, 0x62, 0xfb, 0x48, 0xfc, + 0x98, 0xfc, 0xb0, 0xfd, 0xd0, 0xfd, 0x18, 0xfe, 0x3a, 0xfe, 0xb3, 0xfd, 0xee, 0xfc, 0x26, 0xfc, + 0x54, 0xfc, 0xae, 0xfd, 0x47, 0x00, 0xdd, 0x03, 0x5f, 0x06, 0x0f, 0x08, 0x1c, 0x08, 0x9b, 0x07, + 0xf4, 0x07, 0x2c, 0x08, 0xf4, 0x09, 0xdb, 0x0b, 0x6f, 0x0d, 0xeb, 0x0e, 0x58, 0x10, 0xe4, 0x10, + 0xa1, 0x0e, 0x12, 0x0b, 0xc1, 0x05, 0x47, 0xff, 0x93, 0xfa, 0x32, 0xf7, 0x8a, 0xf5, 0xcd, 0xf4, + 0x1c, 0xf3, 0x9a, 0xf2, 0x23, 0xf2, 0xe0, 0xf1, 0x66, 0xf1, 0x1e, 0xf0, 0x63, 0xef, 0x9e, 0xed, + 0x8e, 0xec, 0xc1, 0xed, 0x14, 0xf0, 0xdf, 0xf3, 0x12, 0xf7, 0xd5, 0xf9, 0x70, 0xfb, 0x27, 0xfd, + 0x9b, 0xff, 0x85, 0x01, 0x78, 0x04, 0x6d, 0x07, 0x99, 0x0a, 0xde, 0x0d, 0x40, 0x11, 0xb6, 0x14, + 0x3b, 0x16, 0xb8, 0x15, 0x51, 0x13, 0xa1, 0x0f, 0xaf, 0x0c, 0x53, 0x0a, 0x7e, 0x09, 0xba, 0x09, + 0x93, 0x08, 0xf3, 0x07, 0x9c, 0x06, 0x68, 0x04, 0xf1, 0x02, 0xeb, 0xff, 0x23, 0xfc, 0x15, 0xf8, + 0x42, 0xf5, 0x83, 0xf4, 0x1e, 0xf4, 0x52, 0xf5, 0xf4, 0xf6, 0xec, 0xf6, 0x3f, 0xf6, 0x52, 0xf4, + 0xc2, 0xf2, 0xf5, 0xf2, 0xe5, 0xf3, 0xa4, 0xf5, 0x5e, 0xf8, 0x93, 0xfb, 0xa1, 0xfe, 0xb2, 0x01, + 0xc3, 0x03, 0xbd, 0x03, 0xab, 0x02, 0x56, 0x00, 0x96, 0xfe, 0xe2, 0xfc, 0x44, 0xfc, 0x31, 0xfd, + 0x63, 0xfd, 0xd4, 0xfe, 0xeb, 0x00, 0x94, 0x02, 0x79, 0x04, 0x47, 0x05, 0x49, 0x05, 0xd2, 0x03, + 0x59, 0x01, 0x29, 0x00, 0x5f, 0x00, 0x37, 0x02, 0xcc, 0x04, 0xeb, 0x05, 0xa7, 0x06, 0x10, 0x06, + 0xa1, 0x04, 0xf7, 0x03, 0x7e, 0x04, 0x8e, 0x06, 0xfb, 0x08, 0xc3, 0x0a, 0x12, 0x0c, 0x83, 0x0d, + 0x49, 0x0e, 0x1a, 0x0d, 0xa5, 0x0a, 0x9b, 0x06, 0x0f, 0x02, 0xef, 0xfd, 0xd5, 0xfa, 0xbe, 0xf9, + 0xa7, 0xf8, 0x0d, 0xf8, 0x03, 0xf8, 0xb9, 0xf6, 0x1d, 0xf6, 0xb1, 0xf4, 0xbf, 0xf2, 0xb8, 0xf0, + 0x9d, 0xed, 0xfc, 0xeb, 0xdd, 0xeb, 0x96, 0xed, 0xa7, 0xf1, 0x76, 0xf4, 0xc7, 0xf7, 0x56, 0xf9, + 0x79, 0xf9, 0x6d, 0xfb, 0xb4, 0xfd, 0x59, 0x00, 0x88, 0x03, 0xc2, 0x06, 0xac, 0x09, 0xdd, 0x0c, + 0x95, 0x0f, 0x3f, 0x10, 0x45, 0x10, 0x2f, 0x0e, 0xe0, 0x0a, 0x78, 0x07, 0xac, 0x04, 0x09, 0x04, + 0x4e, 0x03, 0x28, 0x02, 0xfd, 0x01, 0x55, 0x01, 0x64, 0x01, 0x97, 0x00, 0x48, 0xff, 0x10, 0xfe, + 0xd8, 0xfb, 0xcf, 0xfa, 0xe8, 0xfa, 0x3a, 0xfc, 0x99, 0xff, 0x78, 0x02, 0x4c, 0x04, 0xa6, 0x04, + 0x63, 0x04, 0xd3, 0x04, 0x05, 0x05, 0x15, 0x06, 0x3c, 0x08, 0xd7, 0x09, 0x8b, 0x0b, 0x1b, 0x0e, + 0xac, 0x10, 0xf7, 0x11, 0x69, 0x11, 0x16, 0x0e, 0x77, 0x09, 0x45, 0x04, 0x1a, 0xff, 0x9e, 0xfb, + 0xb6, 0xf9, 0xee, 0xf7, 0xf4, 0xf6, 0x1a, 0xf5, 0x0c, 0xf4, 0x39, 0xf3, 0x0a, 0xf1, 0xff, 0xee, + 0xfe, 0xeb, 0xc6, 0xe9, 0x0b, 0xe9, 0x40, 0xe9, 0x85, 0xeb, 0x03, 0xee, 0xd6, 0xf0, 0x42, 0xf3, + 0x66, 0xf4, 0x2a, 0xf6, 0xa9, 0xf8, 0x90, 0xfb, 0xf7, 0xfe, 0xe2, 0x01, 0x75, 0x05, 0x42, 0x09, + 0xf0, 0x0c, 0x0b, 0x10, 0x60, 0x11, 0x33, 0x11, 0x1c, 0x0f, 0xbc, 0x0c, 0xa0, 0x0a, 0xbf, 0x09, + 0x38, 0x0a, 0x37, 0x0a, 0x46, 0x0b, 0xa2, 0x0b, 0xdf, 0x0b, 0x0a, 0x0c, 0xcf, 0x0a, 0x02, 0x0a, + 0x29, 0x07, 0xbf, 0x03, 0xb9, 0x01, 0xfa, 0xff, 0xeb, 0x00, 0x76, 0x02, 0x05, 0x03, 0x72, 0x03, + 0x32, 0x02, 0xc9, 0xff, 0x4e, 0xfd, 0xb9, 0xfb, 0x6d, 0xfb, 0x91, 0xfb, 0x8c, 0xfc, 0x7b, 0xfd, + 0x5b, 0xfe, 0x63, 0xff, 0xf1, 0xff, 0x44, 0xfe, 0xbf, 0xfa, 0x8e, 0xf7, 0x72, 0xf4, 0x0d, 0xf2, + 0x80, 0xf1, 0x18, 0xf1, 0x96, 0xf1, 0x4f, 0xf2, 0xcc, 0xf2, 0xa8, 0xf3, 0x62, 0xf4, 0xbd, 0xf5, + 0x4d, 0xf6, 0x12, 0xf6, 0x9e, 0xf5, 0x47, 0xf5, 0x72, 0xf7, 0x64, 0xfb, 0x3a, 0xff, 0x4c, 0x03, + 0xf0, 0x05, 0x19, 0x07, 0x74, 0x08, 0xd2, 0x09, 0x9d, 0x0b, 0x45, 0x0e, 0xeb, 0x10, 0x86, 0x13, + 0x6c, 0x16, 0xb2, 0x18, 0xe3, 0x18, 0xe4, 0x17, 0x2b, 0x15, 0x43, 0x10, 0xae, 0x0a, 0x34, 0x06, + 0xca, 0x03, 0x9c, 0x01, 0x97, 0xff, 0x85, 0xfd, 0xc6, 0xfb, 0x44, 0xfb, 0xd3, 0xf9, 0xc7, 0xf7, + 0x1d, 0xf5, 0xc5, 0xf1, 0x3d, 0xee, 0xf2, 0xea, 0x82, 0xea, 0xbb, 0xec, 0x7e, 0xee, 0x4b, 0xf1, + 0x93, 0xf2, 0xaa, 0xf2, 0x81, 0xf3, 0xa3, 0xf4, 0x28, 0xf7, 0x45, 0xfa, 0xee, 0xfc, 0xfa, 0xff, + 0x86, 0x03, 0x7f, 0x07, 0xdb, 0x0a, 0x4c, 0x0c, 0x4d, 0x0c, 0xf7, 0x0a, 0x69, 0x09, 0x30, 0x07, + 0x9a, 0x05, 0xb5, 0x04, 0x13, 0x04, 0x2c, 0x04, 0x71, 0x03, 0xe9, 0x02, 0x40, 0x02, 0x60, 0x01, + 0x94, 0xff, 0xe3, 0xfb, 0x48, 0xf9, 0xf2, 0xf7, 0x80, 0xf7, 0x1e, 0xf9, 0x3c, 0xfb, 0xb6, 0xfd, + 0xf7, 0xfe, 0xff, 0xfe, 0xe4, 0xfe, 0xbc, 0xfe, 0x6d, 0xff, 0xef, 0x00, 0x6e, 0x02, 0x04, 0x05, + 0x66, 0x07, 0x2d, 0x0a, 0xe0, 0x0c, 0xbb, 0x0d, 0x28, 0x0d, 0x4d, 0x0a, 0xf2, 0x06, 0x2c, 0x03, + 0x92, 0xff, 0x5c, 0xfd, 0x2d, 0xfc, 0xdb, 0xfb, 0xca, 0xfb, 0xc0, 0xfc, 0x88, 0xfd, 0x72, 0xfd, + 0x1c, 0xfd, 0xe4, 0xfb, 0xf8, 0xf9, 0xee, 0xf7, 0x70, 0xf6, 0x3e, 0xf7, 0x08, 0xf9, 0x67, 0xfb, + 0x91, 0xfc, 0xf9, 0xfc, 0x00, 0xfd, 0xfb, 0xfc, 0xce, 0xfd, 0x5d, 0xff, 0x6f, 0x01, 0x88, 0x03, + 0xd2, 0x04, 0xa4, 0x06, 0xcd, 0x08, 0x0a, 0x0a, 0x28, 0x0a, 0x17, 0x08, 0x17, 0x05, 0xa5, 0x01, + 0x79, 0xfe, 0x22, 0xfd, 0x97, 0xfc, 0x15, 0xfd, 0x2d, 0xfe, 0xab, 0xfe, 0xae, 0xfe, 0xe9, 0xfe, + 0xcb, 0xfe, 0x0f, 0xfe, 0x7d, 0xfc, 0x59, 0xfa, 0x7e, 0xf8, 0xbf, 0xf8, 0xaf, 0xfa, 0x64, 0xfd, + 0x68, 0x00, 0x26, 0x02, 0xc2, 0x02, 0xb8, 0x02, 0x3c, 0x03, 0x4e, 0x04, 0x96, 0x04, 0xcf, 0x05, + 0x02, 0x07, 0xf1, 0x08, 0xdb, 0x0a, 0xa4, 0x0b, 0xf1, 0x0b, 0x95, 0x09, 0x6e, 0x05, 0xb6, 0x00, + 0xef, 0xfb, 0x36, 0xfa, 0xa1, 0xf9, 0x93, 0xf8, 0x1f, 0xf8, 0x93, 0xf7, 0x65, 0xf7, 0x4e, 0xf7, + 0x21, 0xf7, 0x51, 0xf7, 0xaf, 0xf6, 0x31, 0xf6, 0xe9, 0xf4, 0x2a, 0xf5, 0x44, 0xf7, 0x2a, 0xfa, + 0x8c, 0xfd, 0x6b, 0xff, 0x0e, 0x01, 0x7e, 0x02, 0xca, 0x03, 0x9d, 0x05, 0x80, 0x07, 0x10, 0x0a, + 0x5d, 0x0c, 0xa9, 0x0f, 0x25, 0x14, 0xb5, 0x17, 0x7b, 0x19, 0x1a, 0x19, 0xa5, 0x16, 0x76, 0x13, + 0xd9, 0x0e, 0x45, 0x0b, 0x54, 0x08, 0xce, 0x05, 0x3d, 0x04, 0xe8, 0x01, 0xd1, 0xff, 0xb6, 0xfe, + 0x92, 0xfc, 0x20, 0xfa, 0xe7, 0xf6, 0x85, 0xf2, 0x67, 0xee, 0x81, 0xeb, 0x3a, 0xea, 0x38, 0xea, + 0xae, 0xeb, 0x47, 0xed, 0x44, 0xee, 0x73, 0xee, 0xc8, 0xee, 0x44, 0xf0, 0x1c, 0xf2, 0x09, 0xf5, + 0x7b, 0xf8, 0xd2, 0xfb, 0x21, 0x00, 0x34, 0x04, 0x08, 0x07, 0x40, 0x08, 0x43, 0x07, 0xa6, 0x06, + 0x52, 0x05, 0x62, 0x04, 0x47, 0x04, 0x2e, 0x04, 0xc2, 0x04, 0x46, 0x05, 0x09, 0x06, 0x16, 0x07, + 0x90, 0x07, 0x47, 0x08, 0xb2, 0x07, 0x3c, 0x06, 0x34, 0x04, 0x16, 0x02, 0x8c, 0x01, 0x6c, 0x03, + 0x60, 0x06, 0xf6, 0x07, 0xab, 0x08, 0x8e, 0x08, 0x3b, 0x07, 0x34, 0x06, 0x68, 0x05, 0x86, 0x05, + 0x88, 0x06, 0x0d, 0x07, 0x29, 0x08, 0x16, 0x09, 0xc0, 0x09, 0x09, 0x0a, 0xd7, 0x06, 0x79, 0x03, + 0x42, 0xff, 0x3b, 0xfa, 0xf9, 0xf6, 0xff, 0xf3, 0x50, 0xf2, 0x36, 0xf1, 0x73, 0xf0, 0x4a, 0xf0, + 0x0e, 0xf0, 0x72, 0xf0, 0x6a, 0xf0, 0xf8, 0xee, 0xe7, 0xed, 0x69, 0xec, 0x99, 0xec, 0x06, 0xef, + 0x9f, 0xf2, 0x69, 0xf7, 0xf4, 0xfa, 0x27, 0xfd, 0x98, 0xfe, 0xde, 0x00, 0x28, 0x04, 0x39, 0x07, + 0xd4, 0x0a, 0x1c, 0x0d, 0x0d, 0x10, 0x09, 0x13, 0xbc, 0x14, 0xf9, 0x15, 0x22, 0x15, 0xd9, 0x12, + 0x03, 0x0f, 0xa9, 0x09, 0xd8, 0x06, 0xc9, 0x04, 0xc2, 0x02, 0xf6, 0x01, 0x54, 0x01, 0x28, 0x01, + 0xca, 0x00, 0x57, 0x00, 0xcf, 0xff, 0x0e, 0xfe, 0x6b, 0xfb, 0x41, 0xf8, 0x26, 0xf6, 0x1c, 0xf6, + 0x7a, 0xf7, 0x95, 0xf9, 0x6b, 0xfb, 0xff, 0xfb, 0xf5, 0xfb, 0xaf, 0xfc, 0xa2, 0xfd, 0x7b, 0xfe, + 0x6e, 0xff, 0xf7, 0xff, 0x43, 0x01, 0x02, 0x03, 0x10, 0x05, 0x96, 0x07, 0xb8, 0x07, 0x44, 0x06, + 0xd5, 0x03, 0x2c, 0x00, 0x52, 0xfd, 0x8e, 0xfb, 0x3c, 0xfa, 0xea, 0xf9, 0xcb, 0xf9, 0xba, 0xf9, + 0xc3, 0xf9, 0x29, 0xf9, 0x54, 0xf8, 0xab, 0xf6, 0xdb, 0xf4, 0xa4, 0xf3, 0x0b, 0xf3, 0x2f, 0xf3, + 0xe3, 0xf4, 0x74, 0xf7, 0xe3, 0xf9, 0xbc, 0xfb, 0x88, 0xfc, 0x65, 0xfd, 0x79, 0xfe, 0x1e, 0x00, + 0xb3, 0x02, 0xf8, 0x04, 0x60, 0x07, 0x71, 0x0b, 0x53, 0x0f, 0xf7, 0x12, 0xf1, 0x14, 0x67, 0x14, + 0xb0, 0x13, 0x54, 0x10, 0x58, 0x0d, 0x8d, 0x0a, 0x48, 0x08, 0xe3, 0x07, 0x9f, 0x06, 0x69, 0x06, + 0x81, 0x06, 0xe7, 0x05, 0xbd, 0x05, 0x63, 0x04, 0xa8, 0x02, 0x0a, 0x00, 0xe1, 0xfb, 0xf8, 0xf8, + 0xc0, 0xf7, 0xa6, 0xf7, 0x07, 0xf8, 0x29, 0xf8, 0x00, 0xf8, 0x46, 0xf7, 0x47, 0xf6, 0x2a, 0xf5, + 0x52, 0xf5, 0x9f, 0xf6, 0xdb, 0xf7, 0xa3, 0xf9, 0xbc, 0xfb, 0x78, 0xfe, 0xad, 0x00, 0xdf, 0xff, + 0xb8, 0xfe, 0x2c, 0xfc, 0x55, 0xf9, 0x30, 0xf8, 0x86, 0xf7, 0x3e, 0xf8, 0x0c, 0xf9, 0x93, 0xf9, + 0x70, 0xfa, 0x4b, 0xfa, 0x30, 0xfb, 0x1f, 0xfc, 0xae, 0xfb, 0xa9, 0xfb, 0x44, 0xfa, 0x59, 0xf9, + 0x62, 0xfa, 0xc5, 0xfc, 0xf8, 0x00, 0xdd, 0x04, 0x42, 0x07, 0xc2, 0x08, 0xe9, 0x09, 0x32, 0x0b, + 0xe1, 0x0c, 0x6e, 0x0e, 0xca, 0x0f, 0xa4, 0x11, 0x65, 0x13, 0xc3, 0x14, 0x5d, 0x16, 0x6a, 0x15, + 0xef, 0x12, 0x9e, 0x0e, 0xea, 0x08, 0x3d, 0x04, 0x58, 0x00, 0x9d, 0xfd, 0x78, 0xfa, 0xc9, 0xf7, + 0xd5, 0xf5, 0x2a, 0xf4, 0x3c, 0xf3, 0x74, 0xf2, 0x5e, 0xf1, 0x70, 0xef, 0xb3, 0xec, 0x02, 0xeb, + 0x20, 0xeb, 0xb9, 0xec, 0xe7, 0xef, 0x78, 0xf3, 0x02, 0xf6, 0x75, 0xf7, 0xf5, 0xf8, 0xa2, 0xfa, + 0x10, 0xfd, 0x49, 0x00, 0x2b, 0x03, 0xc5, 0x06, 0xb4, 0x0a, 0xba, 0x0e, 0xcf, 0x12, 0x5a, 0x14, + 0x72, 0x14, 0xf7, 0x12, 0x15, 0x10, 0x92, 0x0d, 0xc6, 0x0a, 0x97, 0x08, 0x23, 0x07, 0xea, 0x05, + 0x0a, 0x05, 0x25, 0x04, 0x88, 0x03, 0xf4, 0x02, 0x3f, 0x01, 0x29, 0xff, 0x9d, 0xfb, 0x63, 0xf8, + 0xbe, 0xf6, 0xd6, 0xf5, 0x51, 0xf6, 0x88, 0xf7, 0xe8, 0xf8, 0x27, 0xf9, 0xcc, 0xf8, 0x50, 0xf9, + 0x60, 0xf9, 0x99, 0xfa, 0xeb, 0xfb, 0x1f, 0xfd, 0x5d, 0xff, 0x41, 0x01, 0x90, 0x03, 0x13, 0x05, + 0xcc, 0x04, 0x61, 0x04, 0x97, 0x01, 0xd1, 0xfe, 0x44, 0xfc, 0x6b, 0xfa, 0xbd, 0xfa, 0x84, 0xfa, + 0x64, 0xfb, 0xa1, 0xfc, 0x41, 0xfd, 0xa5, 0xfe, 0xaa, 0xfe, 0x9f, 0xfe, 0xea, 0xfd, 0xf8, 0xfc, + 0x1b, 0xfd, 0xe8, 0xfd, 0x55, 0x00, 0x43, 0x03, 0xf7, 0x04, 0xc1, 0x05, 0x68, 0x06, 0xaf, 0x05, + 0xeb, 0x04, 0x24, 0x05, 0x54, 0x06, 0xa5, 0x07, 0xc9, 0x08, 0x38, 0x0a, 0x06, 0x0c, 0x96, 0x0e, + 0x7b, 0x0e, 0x36, 0x0d, 0xa7, 0x0a, 0x08, 0x07, 0xdc, 0x02, 0xc3, 0xff, 0x91, 0xfe, 0x44, 0xfd, + 0x77, 0xfc, 0x21, 0xfc, 0x45, 0xfb, 0xe3, 0xfa, 0x8b, 0xfa, 0x15, 0xfa, 0x3a, 0xf9, 0xf8, 0xf6, + 0xca, 0xf4, 0x39, 0xf3, 0x6b, 0xf3, 0x47, 0xf5, 0x88, 0xf7, 0x29, 0xf9, 0x54, 0xfa, 0x0e, 0xfb, + 0x45, 0xfc, 0xfa, 0xfd, 0x75, 0xff, 0x1e, 0x01, 0x0b, 0x03, 0x43, 0x05, 0xc3, 0x07, 0x81, 0x0a, + 0x8e, 0x0b, 0x8c, 0x0b, 0x23, 0x09, 0x7e, 0x04, 0xae, 0x00, 0x4c, 0xfe, 0xf7, 0xfc, 0xbb, 0xfc, + 0xb0, 0xfc, 0x84, 0xfc, 0xad, 0xfb, 0xf1, 0xfb, 0xc6, 0xfb, 0x99, 0xfb, 0x1b, 0xfb, 0x0f, 0xf9, + 0x19, 0xf8, 0xf8, 0xf6, 0x80, 0xf7, 0xf6, 0xf9, 0x8b, 0xfc, 0x23, 0xff, 0x5d, 0x00, 0xe7, 0x01, + 0xa7, 0x03, 0x66, 0x05, 0xa0, 0x07, 0x48, 0x09, 0x00, 0x0b, 0x6f, 0x0c, 0x09, 0x0e, 0x12, 0x11, + 0x4f, 0x12, 0x34, 0x12, 0x4a, 0x10, 0xe7, 0x0c, 0x81, 0x09, 0x6b, 0x05, 0xc7, 0x02, 0x18, 0x01, + 0x8a, 0xfe, 0x65, 0xfc, 0xcd, 0xf9, 0x6e, 0xf7, 0x4a, 0xf6, 0x07, 0xf5, 0x25, 0xf3, 0xa1, 0xef, + 0xf2, 0xec, 0x73, 0xeb, 0xa4, 0xe9, 0xac, 0xea, 0x15, 0xed, 0xa5, 0xef, 0xb0, 0xf1, 0x1f, 0xf3, + 0x9e, 0xf4, 0xf3, 0xf5, 0x07, 0xf8, 0xa8, 0xfa, 0x1c, 0xfe, 0x8d, 0x02, 0x04, 0x06, 0x07, 0x0b, + 0x9e, 0x0e, 0xbf, 0x0f, 0x2b, 0x11, 0xc2, 0x0f, 0xaa, 0x0d, 0x4d, 0x08, 0xee, 0x07, 0x84, 0x07, + 0xd2, 0x05, 0xa0, 0x07, 0xf0, 0x09, 0xe6, 0x09, 0x0b, 0x0a, 0x22, 0x0b, 0x03, 0x0b, 0x05, 0x0b, + 0xe9, 0x07, 0x2c, 0x06, 0x5e, 0x06, 0x03, 0x04, 0x9f, 0x04, 0x63, 0x06, 0x94, 0x05, 0x8a, 0x05, + 0x0f, 0x06, 0x47, 0x03, 0x75, 0x01, 0xbd, 0x00, 0x5a, 0x01, 0x5a, 0x00, 0x14, 0x00, 0xf1, 0x00, + 0xb8, 0xff, 0xd3, 0xfd, 0x57, 0xfd, 0xd6, 0xfa, 0x5a, 0xf6, 0xf8, 0xf4, 0x85, 0xf0, 0x82, 0xed, + 0xbc, 0xed, 0x8d, 0xed, 0x97, 0xec, 0x10, 0xef, 0xa5, 0xef, 0x51, 0xee, 0x41, 0xee, 0xc3, 0xef, + 0x83, 0xef, 0x58, 0xee, 0x1d, 0xf1, 0x34, 0xf2, 0xbd, 0xf5, 0xd2, 0xfb, 0x5e, 0xff, 0x7c, 0x00, + 0x05, 0x03, 0x6d, 0x05, 0x56, 0x05, 0x9e, 0x06, 0xce, 0x0b, 0x98, 0x0d, 0x90, 0x0d, 0x3f, 0x10, + 0x34, 0x14, 0x32, 0x14, 0x6c, 0x17, 0x00, 0x17, 0xa1, 0x14, 0x75, 0x0e, 0xbc, 0x08, 0xf8, 0x06, + 0xf7, 0x03, 0xfc, 0x00, 0x6c, 0x00, 0x30, 0xff, 0xa1, 0xfc, 0x96, 0xfb, 0xc4, 0xfc, 0xe7, 0xfa, + 0x96, 0xf8, 0xff, 0xf6, 0xc8, 0xf1, 0x53, 0xf1, 0x13, 0xf2, 0x72, 0xf3, 0x80, 0xf7, 0x66, 0xf6, + 0xa1, 0xf5, 0xd5, 0xf6, 0x3f, 0xf6, 0x6c, 0xf7, 0x1e, 0xfb, 0x3f, 0xfe, 0x82, 0xfe, 0x69, 0x00, + 0x44, 0x04, 0x27, 0x06, 0x60, 0x0a, 0xe4, 0x0c, 0xbf, 0x08, 0xcf, 0x06, 0xfa, 0x03, 0x84, 0xff, + 0xf2, 0xff, 0x41, 0x01, 0x89, 0x00, 0xf0, 0xfe, 0xe0, 0xff, 0x14, 0x00, 0xf5, 0xfe, 0x95, 0xfe, + 0x53, 0xfd, 0x29, 0xf8, 0x69, 0xf4, 0x64, 0xf3, 0xca, 0xf3, 0x45, 0xf6, 0x21, 0xfa, 0x6e, 0xfc, + 0x45, 0xf9, 0x82, 0xfa, 0xc5, 0xfe, 0x00, 0x00, 0x34, 0x04, 0x8a, 0x08, 0x0c, 0x09, 0xe6, 0x08, + 0x09, 0x0c, 0xf0, 0x0f, 0x44, 0x11, 0x86, 0x12, 0x80, 0x12, 0x36, 0x0d, 0x43, 0x08, 0x0b, 0x08, + 0x15, 0x04, 0xf7, 0x01, 0x83, 0x03, 0xbe, 0x01, 0x88, 0xfe, 0x20, 0xfe, 0x3d, 0xfe, 0x2d, 0xfd, + 0x26, 0xfb, 0x68, 0xf9, 0x03, 0xf8, 0x4e, 0xf5, 0xc1, 0xf7, 0xcd, 0xf3, 0x84, 0xf8, 0xeb, 0xfa, + 0x8a, 0xf9, 0x4b, 0xfe, 0x89, 0xfe, 0xeb, 0xfc, 0x49, 0xff, 0xf8, 0xfe, 0x1d, 0x02, 0x87, 0x04, + 0xb7, 0x03, 0x4f, 0x0b, 0x7e, 0x0e, 0x5e, 0x10, 0xdf, 0x13, 0xaa, 0x10, 0x19, 0x0c, 0xd4, 0x09, + 0x1b, 0x04, 0x07, 0x05, 0x4e, 0x08, 0x6a, 0x06, 0x47, 0x07, 0xea, 0x08, 0x45, 0x06, 0x47, 0x07, + 0x14, 0x09, 0xf8, 0x07, 0xa6, 0x04, 0x73, 0x02, 0x2b, 0x05, 0xe4, 0x05, 0xab, 0x07, 0x41, 0x0b, + 0xb9, 0x0b, 0x96, 0x0a, 0xa0, 0x0b, 0xf8, 0x09, 0xab, 0x0b, 0xe7, 0x0c, 0x23, 0x0d, 0x18, 0x0e, + 0xc2, 0x0c, 0x3f, 0x0c, 0xef, 0x0e, 0xe8, 0x0f, 0x3f, 0x0d, 0x6b, 0x0b, 0x76, 0x02, 0x05, 0xf9, + 0x6e, 0xfa, 0x11, 0xf5, 0x08, 0xef, 0xea, 0xf0, 0xe6, 0xed, 0x72, 0xea, 0x08, 0xe9, 0x1e, 0xe6, + 0x83, 0xe7, 0xe7, 0xe7, 0x8a, 0xe7, 0xc0, 0xe5, 0x68, 0xe5, 0x68, 0xe9, 0x9f, 0xef, 0xbb, 0xf1, + 0x6f, 0xf4, 0x8e, 0xf3, 0xf7, 0xf2, 0xd9, 0xf8, 0x62, 0xf9, 0xe6, 0xf9, 0xab, 0xfc, 0xa5, 0xfd, + 0x23, 0xff, 0x57, 0x00, 0x9b, 0x03, 0x11, 0x09, 0x70, 0x0c, 0xa4, 0x0a, 0x6b, 0x08, 0x4c, 0x03, + 0x8e, 0x02, 0xc3, 0x02, 0xc0, 0x03, 0xd8, 0x03, 0x65, 0xfc, 0xa8, 0xf9, 0x97, 0xfa, 0x80, 0xfa, + 0xd8, 0xf8, 0x12, 0xf7, 0x9b, 0xf1, 0x70, 0xec, 0xc8, 0xed, 0x1a, 0xec, 0x58, 0xed, 0xa7, 0xf0, + 0x61, 0xf0, 0xfe, 0xf0, 0x04, 0xf1, 0x32, 0xf3, 0xce, 0xf4, 0x33, 0xf5, 0x9e, 0xf8, 0x3d, 0xf6, + 0xfa, 0xf5, 0xec, 0xfc, 0xf5, 0xfd, 0x94, 0x01, 0xb6, 0x06, 0x9a, 0x05, 0xa5, 0x03, 0xe6, 0xff, + 0x59, 0xfd, 0xb4, 0xfc, 0x59, 0xfc, 0x8f, 0xfe, 0x8c, 0x01, 0x0f, 0x03, 0x57, 0x02, 0x18, 0x02, + 0x67, 0x07, 0x96, 0x06, 0x71, 0x06, 0xe9, 0x06, 0x4d, 0x05, 0x88, 0x04, 0xc6, 0x08, 0x57, 0x09, + 0x4f, 0x0a, 0xb0, 0x0b, 0xb6, 0x0a, 0xf2, 0x09, 0xae, 0x09, 0x8c, 0x0c, 0xcf, 0x07, 0xa0, 0x07, + 0xbf, 0x08, 0x6b, 0x05, 0x82, 0x09, 0x09, 0x0e, 0xc6, 0x09, 0x00, 0x09, 0x19, 0x07, 0xb0, 0x01, + 0xbf, 0x01, 0x4d, 0xfe, 0x7b, 0xfa, 0x07, 0xf9, 0x0b, 0xf7, 0x44, 0xf5, 0x8f, 0xf4, 0x38, 0xf2, + 0xd7, 0xf3, 0x24, 0xf4, 0xbe, 0xf3, 0xbe, 0xf1, 0xbc, 0xed, 0xea, 0xee, 0x1c, 0xf1, 0xe4, 0xf2, + 0xed, 0xf8, 0x0d, 0xfa, 0x4a, 0xfa, 0x30, 0xff, 0xb1, 0x00, 0x53, 0x03, 0xc9, 0x05, 0x00, 0x05, + 0x4d, 0x06, 0xbe, 0x08, 0xa9, 0x0c, 0xc9, 0x0f, 0x68, 0x11, 0x8b, 0x15, 0x2d, 0x14, 0xdd, 0x10, + 0xbf, 0x0e, 0x41, 0x0d, 0x10, 0x0c, 0x96, 0x09, 0x81, 0x06, 0x6f, 0x05, 0x3c, 0x05, 0xaf, 0x05, + 0x1b, 0x05, 0x67, 0x05, 0xab, 0x02, 0xb8, 0x02, 0xa3, 0xff, 0x71, 0x00, 0x54, 0x04, 0x5e, 0x02, + 0x32, 0x04, 0x60, 0x05, 0x55, 0x07, 0x2a, 0x09, 0x14, 0x0c, 0xb1, 0x07, 0xcb, 0x0a, 0xbb, 0x0b, + 0x8d, 0x06, 0x16, 0x0f, 0xa9, 0x0e, 0xde, 0x10, 0x26, 0x12, 0xc2, 0x0c, 0x17, 0x0f, 0x0e, 0x0c, + 0xb7, 0x08, 0x6e, 0x09, 0x63, 0x06, 0x04, 0x02, 0xf8, 0xfa, 0x4d, 0xff, 0x68, 0x02, 0x31, 0xfe, + 0xd9, 0xfa, 0xa6, 0xfb, 0xf7, 0xf8, 0x5b, 0xf6, 0xf2, 0xf9, 0x1b, 0xf7, 0x6f, 0xf2, 0xc2, 0xf7, + 0x57, 0xfa, 0xd5, 0xff, 0xb1, 0xfe, 0xb5, 0xfe, 0xd0, 0xff, 0x40, 0xfd, 0xee, 0x00, 0xe9, 0x05, + 0x94, 0x06, 0x06, 0x08, 0x5a, 0x0d, 0x9b, 0x0f, 0x04, 0x0e, 0x06, 0x13, 0xcf, 0x15, 0xeb, 0x11, + 0x78, 0x0f, 0x56, 0x0a, 0x78, 0x0a, 0x19, 0x06, 0xb4, 0x04, 0x14, 0x05, 0xa0, 0x01, 0x19, 0x01, + 0xd5, 0x02, 0xf2, 0x00, 0xe2, 0x01, 0x74, 0x00, 0xc1, 0xfb, 0xe4, 0xfa, 0xbb, 0xf8, 0x55, 0xf4, + 0x89, 0xf5, 0x26, 0xf8, 0x82, 0xf9, 0x95, 0xf8, 0x51, 0xf3, 0x41, 0xf3, 0x85, 0xee, 0x8f, 0xec, + 0xc5, 0xef, 0xc4, 0xea, 0x4d, 0xe9, 0x1e, 0xec, 0x89, 0xed, 0xa3, 0xed, 0x1b, 0xee, 0x85, 0xed, + 0xcb, 0xeb, 0xd9, 0xe9, 0xe8, 0xe9, 0xa6, 0xe7, 0x07, 0xe5, 0x3a, 0xe3, 0xfd, 0xe6, 0xab, 0xeb, + 0x6e, 0xea, 0x32, 0xec, 0x74, 0xef, 0xd2, 0xf0, 0x14, 0xf0, 0x98, 0xf2, 0x8b, 0xf4, 0x79, 0xf3, + 0xb3, 0xf8, 0x03, 0xff, 0xbc, 0xff, 0xe9, 0x01, 0x68, 0x05, 0x1f, 0x09, 0x89, 0x0a, 0xf3, 0x0f, + 0x70, 0x16, 0x36, 0x19, 0x8f, 0x1a, 0x86, 0x1b, 0x3f, 0x1c, 0x97, 0x1f, 0xa3, 0x21, 0x3b, 0x23, + 0xb5, 0x20, 0x4b, 0x18, 0xcf, 0x13, 0x68, 0x0f, 0x13, 0x0c, 0xfa, 0x08, 0xdd, 0x05, 0xd5, 0x04, + 0xd2, 0xfe, 0x73, 0xfb, 0xef, 0xfd, 0xc2, 0xf8, 0x67, 0xf4, 0x41, 0xf4, 0x6d, 0xef, 0x16, 0xed, + 0xb9, 0xec, 0x42, 0xed, 0x27, 0xee, 0x0e, 0xee, 0xed, 0xee, 0x41, 0xf4, 0xdc, 0xf5, 0x1c, 0xf5, + 0xc1, 0xf3, 0x55, 0xf2, 0x64, 0xee, 0xac, 0xf1, 0xaa, 0xf5, 0xe7, 0xf2, 0x11, 0xf5, 0x5c, 0xf5, + 0x69, 0xf4, 0x0d, 0xf2, 0x01, 0xf2, 0x5c, 0xef, 0x44, 0xec, 0x78, 0xec, 0x39, 0xe8, 0xc5, 0xe8, + 0x1a, 0xea, 0x7e, 0xe8, 0x08, 0xe7, 0xf6, 0xe6, 0xc8, 0xe6, 0xf2, 0xe5, 0x44, 0xe7, 0xf4, 0xe7, + 0xbb, 0xe6, 0x6a, 0xe7, 0x1a, 0xf1, 0xf8, 0xf7, 0xda, 0xf9, 0x7e, 0x00, 0x2f, 0x01, 0xe9, 0x01, + 0x9d, 0x05, 0x71, 0x06, 0xa8, 0x0a, 0x3f, 0x0e, 0x3d, 0x11, 0x73, 0x16, 0xd5, 0x18, 0xc5, 0x1c, + 0xb0, 0x1d, 0x68, 0x1a, 0x2a, 0x18, 0x1b, 0x15, 0xe4, 0x15, 0x87, 0x16, 0xbd, 0x13, 0x97, 0x15, + 0x51, 0x16, 0xc0, 0x14, 0x8f, 0x1a, 0x8c, 0x1d, 0xc1, 0x1d, 0x24, 0x1e, 0x03, 0x21, 0x44, 0x1e, + 0x82, 0x19, 0x83, 0x1e, 0xfe, 0x1d, 0x83, 0x1a, 0xd3, 0x1c, 0xf0, 0x23, 0xae, 0x24, 0x65, 0x1f, + 0x39, 0x1d, 0x00, 0x1a, 0xd8, 0x16, 0xee, 0x17, 0x8e, 0x19, 0xfb, 0x17, 0x48, 0x15, 0x1c, 0x11, + 0x8a, 0x10, 0x2c, 0x0d, 0x5b, 0x07, 0x16, 0x08, 0x90, 0x00, 0xe2, 0x00, 0x23, 0xff, 0x2c, 0x01, + 0x37, 0x01, 0x0f, 0xfe, 0x99, 0x00, 0xab, 0x00, 0x7f, 0x03, 0xeb, 0x02, 0x2f, 0x00, 0xd3, 0xfc, + 0x91, 0xf9, 0xa7, 0xf9, 0xb3, 0x03, 0xef, 0x00, 0xf9, 0x02, 0xd0, 0x04, 0x7f, 0x02, 0xfb, 0x00, + 0xd8, 0xff, 0x78, 0x00, 0x0c, 0xfd, 0x91, 0xfc, 0x63, 0xfc, 0x24, 0xfe, 0x3a, 0xfe, 0xa0, 0xff, + 0xa7, 0xff, 0xe5, 0x00, 0x87, 0xfb, 0x5c, 0xf7, 0x1f, 0xf8, 0x0b, 0xf5, 0x17, 0xf3, 0x1f, 0xf2, + 0xab, 0xee, 0x2d, 0xea, 0xb2, 0xeb, 0xa9, 0xec, 0x9c, 0xf0, 0x2c, 0xf0, 0x27, 0xea, 0x4f, 0xeb, + 0xf7, 0xed, 0x12, 0xef, 0xdf, 0xf5, 0xda, 0xf9, 0x62, 0xf9, 0xe5, 0xf8, 0xa1, 0xfc, 0xbf, 0xfc, + 0xd4, 0xfb, 0x3f, 0xf8, 0x89, 0xfb, 0xfe, 0xfd, 0x7f, 0xff, 0x04, 0x07, 0xad, 0x05, 0xe4, 0x06, + 0xa7, 0x08, 0xf8, 0x08, 0xfd, 0x0c, 0x55, 0x0a, 0x5f, 0x05, 0x4a, 0x04, 0xe2, 0xfd, 0xe7, 0xfb, + 0x9d, 0xf9, 0x93, 0xf5, 0xed, 0xf2, 0x27, 0xf4, 0x1e, 0xf5, 0x8c, 0xf2, 0xc3, 0xec, 0xac, 0xeb, + 0x28, 0xea, 0x2a, 0xe4, 0x1c, 0xe5, 0xf5, 0xe5, 0x9d, 0xe7, 0x78, 0xe5, 0xb7, 0xe4, 0x8c, 0xe6, + 0x03, 0xe6, 0x1f, 0xe9, 0x68, 0xeb, 0x86, 0xee, 0x88, 0xed, 0xb5, 0xef, 0xb9, 0xf1, 0xdc, 0xf0, + 0xc3, 0xf4, 0xae, 0xf7, 0x1e, 0xf8, 0x64, 0xf6, 0xa9, 0xf0, 0x6f, 0xed, 0xf4, 0xeb, 0x5a, 0xeb, + 0xa9, 0xee, 0x43, 0xef, 0x27, 0xef, 0x22, 0xf1, 0xa1, 0xf0, 0x7f, 0xf2, 0xc9, 0xf0, 0xb2, 0xef, + 0x02, 0xf1, 0xf6, 0xee, 0xc8, 0xf2, 0xc7, 0xf5, 0x96, 0xf5, 0xd6, 0xf9, 0x70, 0xfa, 0xf2, 0xfd, + 0x91, 0x01, 0xd2, 0xfe, 0xe5, 0x02, 0x0c, 0x02, 0x2e, 0x00, 0xb7, 0x03, 0xdc, 0x05, 0x81, 0x05, + 0x12, 0x05, 0x66, 0x0a, 0x41, 0x0a, 0x6d, 0x08, 0x63, 0x05, 0x41, 0x01, 0x9a, 0x00, 0xee, 0xff, + 0xe9, 0xff, 0x6b, 0x02, 0x26, 0x03, 0xc2, 0x06, 0x23, 0x08, 0x6c, 0x08, 0x7b, 0x0c, 0x77, 0x0c, + 0x93, 0x11, 0xdb, 0x12, 0xbe, 0x12, 0x51, 0x1a, 0x08, 0x1b, 0xc2, 0x1a, 0xe0, 0x1e, 0x4c, 0x20, + 0x62, 0x22, 0xf3, 0x24, 0xc8, 0x26, 0x57, 0x28, 0xd9, 0x26, 0x09, 0x27, 0x8a, 0x29, 0xad, 0x28, + 0xaf, 0x2a, 0x8e, 0x2b, 0x92, 0x2b, 0x27, 0x27, 0x47, 0x20, 0xe2, 0x1b, 0xd1, 0x17, 0x5b, 0x12, + 0xf1, 0x0e, 0x7f, 0x0f, 0xa5, 0x0c, 0x18, 0x07, 0x6c, 0x08, 0x5b, 0x07, 0xcc, 0x02, 0xd8, 0x02, + 0x56, 0x00, 0xe7, 0xff, 0x29, 0x00, 0x30, 0x01, 0x8a, 0x02, 0xc3, 0x00, 0x42, 0x03, 0x51, 0x07, + 0x64, 0x07, 0x46, 0x05, 0x9e, 0x03, 0x0f, 0x00, 0xb7, 0xfe, 0x9e, 0xfc, 0x88, 0x00, 0xcf, 0x03, + 0x65, 0xff, 0xd2, 0x01, 0x63, 0x03, 0x88, 0x01, 0x51, 0xff, 0xaf, 0xfd, 0x5a, 0xfe, 0x23, 0xf8, + 0xb0, 0xf7, 0xd8, 0xf5, 0xcf, 0xef, 0xb2, 0xee, 0xcf, 0xeb, 0x60, 0xec, 0x1d, 0xf1, 0x77, 0xef, + 0x1e, 0xed, 0x6b, 0xed, 0xb2, 0xea, 0x25, 0xea, 0xf9, 0xef, 0x66, 0xf4, 0x8a, 0xf3, 0x46, 0xf6, + 0xb4, 0xf6, 0x38, 0xf3, 0xfb, 0xf2, 0x55, 0xf4, 0xe2, 0xf6, 0xc5, 0xf8, 0xcb, 0xfb, 0xbd, 0x01, + 0x74, 0x05, 0xff, 0x0b, 0xa3, 0x12, 0x50, 0x0f, 0x32, 0x0f, 0x70, 0x0e, 0xb5, 0x0b, 0xf8, 0x0b, + 0x51, 0x0a, 0xe7, 0x0b, 0x4d, 0x0d, 0xbd, 0x09, 0x45, 0x0b, 0x2a, 0x0d, 0x77, 0x0d, 0xd3, 0x0d, + 0x9e, 0x0a, 0xfa, 0x0b, 0xd8, 0x07, 0x49, 0x07, 0xe9, 0x07, 0x0e, 0x04, 0x36, 0x03, 0x6e, 0x04, + 0xc6, 0x04, 0xb4, 0x02, 0x5b, 0x03, 0xab, 0x02, 0x6e, 0x01, 0x22, 0x00, 0x64, 0xfd, 0x06, 0xfe, + 0xff, 0xf9, 0xe4, 0xf4, 0x6e, 0xf2, 0x0a, 0xef, 0xd6, 0xec, 0x7f, 0xe8, 0x42, 0xe2, 0xac, 0xe0, + 0xc6, 0xdc, 0xbc, 0xd8, 0xb7, 0xda, 0x58, 0xdb, 0x72, 0xdc, 0x02, 0xe1, 0x3e, 0xdf, 0x39, 0xdc, + 0x6e, 0xdc, 0xe7, 0xd9, 0xf0, 0xd8, 0x0d, 0xd8, 0xde, 0xda, 0xa5, 0xe2, 0x36, 0xe4, 0xfe, 0xeb, + 0x56, 0xf0, 0x8c, 0xf0, 0xbb, 0xf2, 0xb5, 0xf3, 0x39, 0xf6, 0x10, 0xf7, 0x1c, 0xfb, 0x59, 0xfe, + 0xc9, 0xfd, 0x6b, 0xfe, 0x6a, 0x00, 0x7b, 0x02, 0x52, 0x05, 0x48, 0x04, 0x45, 0x00, 0x5e, 0xfe, + 0x76, 0xf9, 0x93, 0xf5, 0x3c, 0xf4, 0x5b, 0xf2, 0x2d, 0xf0, 0x5b, 0xf2, 0x93, 0xf1, 0xb7, 0xf0, + 0xaa, 0xf2, 0xd3, 0xf1, 0x00, 0xf5, 0xd1, 0xf8, 0xf7, 0xfa, 0x19, 0x00, 0x6a, 0x04, 0xe0, 0x05, + 0xf0, 0x08, 0xcc, 0x08, 0xf5, 0x07, 0x6b, 0x0b, 0xa2, 0x0c, 0x80, 0x0f, 0xcc, 0x0f, 0x78, 0x11, + 0x86, 0x16, 0x5e, 0x15, 0x89, 0x1b, 0xad, 0x1f, 0x20, 0x1d, 0x16, 0x1c, 0x6f, 0x18, 0x28, 0x18, + 0x81, 0x12, 0xd0, 0x0d, 0xbb, 0x0e, 0x14, 0x0c, 0x8c, 0x0a, 0x55, 0x0c, 0x47, 0x0e, 0x6b, 0x0f, + 0xe4, 0x10, 0xed, 0x10, 0x93, 0x11, 0x57, 0x10, 0x5e, 0x0f, 0xb1, 0x11, 0x7d, 0x13, 0x95, 0x11, + 0x42, 0x10, 0x62, 0x0f, 0x1b, 0x0e, 0x29, 0x0e, 0xc0, 0x0b, 0xd1, 0x0b, 0x8c, 0x0c, 0x39, 0x0b, + 0xe7, 0x0d, 0xd2, 0x0d, 0x31, 0x0f, 0xc8, 0x14, 0x84, 0x13, 0x07, 0x10, 0xab, 0x0c, 0x99, 0x07, + 0xce, 0x06, 0x53, 0x06, 0x5e, 0x04, 0x1a, 0x06, 0x08, 0x03, 0x9f, 0x02, 0x09, 0x03, 0x81, 0x02, + 0x8a, 0x02, 0x3b, 0x02, 0x07, 0x03, 0xa5, 0xfe, 0x9e, 0xff, 0xbd, 0x01, 0xf5, 0x00, 0xaa, 0xff, + 0xe9, 0x01, 0x5a, 0x02, 0x8c, 0x02, 0xba, 0x02, 0x21, 0x01, 0x2d, 0x02, 0x36, 0xfe, 0x3a, 0xfb, + 0xde, 0xfb, 0x71, 0xfc, 0x7b, 0xfd, 0x34, 0x01, 0x3f, 0xff, 0xe7, 0xfb, 0x4a, 0xfc, 0xc9, 0xf9, + 0xc7, 0xf6, 0x9c, 0xf6, 0x70, 0xf4, 0xef, 0xf5, 0x01, 0xfa, 0x7a, 0xf9, 0xf1, 0xfb, 0x20, 0xfd, + 0xfa, 0xfb, 0x98, 0xfd, 0x18, 0xfe, 0x44, 0x00, 0xc7, 0xfe, 0xc4, 0xff, 0xc7, 0x04, 0xdc, 0x03, + 0x80, 0x07, 0x89, 0x0b, 0x9b, 0x09, 0x30, 0x09, 0xed, 0x09, 0x92, 0x0a, 0x28, 0x0b, 0xea, 0x0d, + 0x0a, 0x12, 0xa1, 0x12, 0x09, 0x10, 0x6d, 0x0f, 0x96, 0x0d, 0x02, 0x0e, 0x6c, 0x0d, 0x23, 0x09, + 0x86, 0x06, 0xf4, 0x00, 0x21, 0xfb, 0x4b, 0xfb, 0xf9, 0xf6, 0x8d, 0xf2, 0x14, 0xf2, 0xba, 0xf0, + 0x4f, 0xed, 0xb3, 0xec, 0x4a, 0xea, 0x7b, 0xe6, 0xf9, 0xe3, 0x50, 0xe1, 0x52, 0xe2, 0x47, 0xe5, + 0xb4, 0xe9, 0x4d, 0xf0, 0x3d, 0xf1, 0x8a, 0xf1, 0x4d, 0xf4, 0x4d, 0xf3, 0xa8, 0xf7, 0x9b, 0xf8, + 0x43, 0xf6, 0xe1, 0xfa, 0x67, 0xfc, 0x6f, 0xfe, 0x8c, 0xff, 0x27, 0xfd, 0x42, 0xfb, 0x3e, 0xf8, + 0x2d, 0xf9, 0x13, 0xf2, 0x48, 0xed, 0xff, 0xee, 0x50, 0xe9, 0xa6, 0xe2, 0x92, 0xe1, 0xd4, 0xdf, + 0x4e, 0xde, 0x9e, 0xde, 0xd5, 0xdc, 0x13, 0xdd, 0x9a, 0xdd, 0x1b, 0xdb, 0x69, 0xdf, 0x29, 0xe8, + 0xf6, 0xea, 0x8c, 0xef, 0x12, 0xf1, 0x7a, 0xf2, 0x7e, 0xf5, 0x11, 0xf7, 0x40, 0xf9, 0xe6, 0xfa, + 0x35, 0xff, 0x2b, 0x04, 0xdb, 0x0b, 0x0e, 0x0e, 0xfd, 0x19, 0x9f, 0x1d, 0xef, 0x1c, 0xda, 0x20, + 0xe4, 0x1d, 0x90, 0x1b, 0x78, 0x19, 0xbe, 0x16, 0x7e, 0x14, 0xcb, 0x0f, 0x0f, 0x0f, 0x4f, 0x10, + 0x1e, 0x0f, 0x3a, 0x0f, 0x61, 0x10, 0xfb, 0x0f, 0xe2, 0x0e, 0xc3, 0x0d, 0xc5, 0x0c, 0xd5, 0x11, + 0x4b, 0x10, 0xb6, 0x12, 0xfd, 0x11, 0x91, 0x10, 0x7a, 0x13, 0xda, 0x13, 0x91, 0x15, 0x81, 0x13, + 0x17, 0x11, 0xd9, 0x10, 0x54, 0x10, 0xb9, 0x0d, 0x81, 0x0e, 0x01, 0x0a, 0xfa, 0x04, 0xf6, 0x01, + 0xc8, 0xfc, 0x28, 0xf9, 0x81, 0xf6, 0xde, 0xf2, 0x77, 0xf2, 0x80, 0xf3, 0x99, 0xf1, 0x40, 0xf4, + 0xdc, 0xf2, 0x66, 0xec, 0xc9, 0xea, 0x65, 0xea, 0xde, 0xe8, 0x59, 0xe6, 0xbe, 0xe2, 0x21, 0xe9, + 0x8b, 0xe8, 0x95, 0xf0, 0x36, 0xfb, 0x1a, 0xfc, 0xe5, 0xff, 0x9f, 0x02, 0xa5, 0x03, 0x15, 0x03, + 0x73, 0x05, 0xbd, 0x06, 0x94, 0x07, 0x9e, 0x04, 0xbb, 0x06, 0xba, 0x08, 0xbd, 0x09, 0x7e, 0x0e, + 0x06, 0x0c, 0x82, 0x0d, 0x61, 0x0a, 0xc6, 0x06, 0x5f, 0x08, 0x3f, 0x08, 0x3c, 0x06, 0x38, 0x06, + 0x6b, 0x04, 0x00, 0x00, 0x6d, 0x00, 0x29, 0xff, 0x35, 0xfc, 0x2e, 0xfc, 0xfa, 0xf9, 0xc2, 0xfd, + 0xdf, 0x01, 0x68, 0x00, 0x0e, 0x09, 0xa2, 0x09, 0xf6, 0x08, 0x9c, 0x0c, 0xa2, 0x0d, 0x8c, 0x0f, + 0x70, 0x0f, 0x27, 0x0d, 0xa1, 0x11, 0x5a, 0x15, 0x24, 0x16, 0x3e, 0x1a, 0xb6, 0x16, 0x3c, 0x11, + 0x52, 0x10, 0x2f, 0x10, 0x99, 0x0b, 0xf2, 0x05, 0x5f, 0x06, 0x12, 0x04, 0xbb, 0xfd, 0xc7, 0xfd, + 0x0e, 0xfe, 0x8f, 0xfa, 0x49, 0xfa, 0x6b, 0xf7, 0x50, 0xf5, 0xe0, 0xf2, 0x7f, 0xee, 0x46, 0xef, + 0xbd, 0xee, 0xa9, 0xec, 0xe2, 0xf3, 0x91, 0xf3, 0x87, 0xf4, 0xf0, 0xf8, 0x99, 0xf9, 0x45, 0xf9, + 0xcd, 0xfb, 0x1d, 0xfb, 0x6c, 0xfa, 0x48, 0xfe, 0x6f, 0xfe, 0x58, 0x06, 0xdd, 0x08, 0x9b, 0x07, + 0x90, 0x06, 0x20, 0x04, 0x37, 0x04, 0xd4, 0x00, 0x4d, 0xfe, 0x72, 0x00, 0xa2, 0xfc, 0xe7, 0xf9, + 0x67, 0xfa, 0x59, 0xf8, 0xbf, 0xf6, 0xdb, 0xf4, 0x48, 0xf2, 0xdd, 0xef, 0x90, 0xed, 0xb0, 0xee, + 0x57, 0xf7, 0x0a, 0xf5, 0x94, 0xf9, 0x51, 0xfb, 0x71, 0xf7, 0x31, 0xfb, 0x04, 0xff, 0xb1, 0x03, + 0x6e, 0x01, 0xf4, 0xff, 0x45, 0x00, 0x2d, 0xff, 0x84, 0xfe, 0x20, 0x04, 0xe8, 0x03, 0xd7, 0x00, + 0x00, 0x01, 0x7d, 0xff, 0x06, 0xfb, 0xf5, 0xf7, 0xc6, 0xf7, 0x97, 0xf4, 0xa7, 0xf3, 0x80, 0xf1, + 0x56, 0xf4, 0x66, 0xf6, 0x73, 0xf5, 0xd4, 0xf6, 0x0c, 0xf5, 0x4d, 0xf7, 0xb0, 0xf7, 0x2d, 0xf4, + 0xe6, 0xfa, 0xb5, 0xfc, 0x53, 0x02, 0x97, 0x0a, 0xe8, 0x0d, 0x3f, 0x10, 0xc4, 0x13, 0x37, 0x17, + 0x41, 0x17, 0x1a, 0x18, 0xf2, 0x1a, 0xb4, 0x1b, 0x3b, 0x16, 0xdb, 0x15, 0xad, 0x15, 0x19, 0x15, + 0xe2, 0x14, 0x59, 0x0f, 0x74, 0x0d, 0x79, 0x08, 0xbe, 0x02, 0x5f, 0x05, 0xfc, 0x01, 0x72, 0xfd, + 0x4b, 0xfd, 0xd7, 0xf8, 0xd6, 0xf2, 0xea, 0xf0, 0xa7, 0xef, 0xcd, 0xeb, 0xcb, 0xe8, 0x85, 0xe4, + 0xa6, 0xe5, 0xba, 0xe8, 0x22, 0xea, 0xc2, 0xf3, 0x1a, 0xf6, 0xec, 0xf6, 0xa8, 0xfd, 0xaa, 0x01, + 0x3c, 0x00, 0xd9, 0x00, 0x35, 0xfe, 0x4e, 0xfd, 0x81, 0xfe, 0x86, 0xff, 0x75, 0x02, 0xa7, 0x03, + 0x42, 0x04, 0xf2, 0x01, 0x04, 0x02, 0x0d, 0x01, 0x1c, 0xfd, 0xec, 0xfc, 0x2b, 0xfe, 0xfa, 0xf8, + 0x57, 0xf7, 0xb2, 0xf7, 0x26, 0xf4, 0x33, 0xf4, 0x04, 0xf4, 0x7a, 0xf5, 0x27, 0xf5, 0x31, 0xf3, + 0x17, 0xf4, 0x7b, 0xf7, 0x71, 0xf8, 0xdc, 0xfe, 0xef, 0x00, 0xe8, 0x01, 0x13, 0x04, 0x73, 0x04, + 0xc6, 0x03, 0x8e, 0x04, 0x10, 0x08, 0xa2, 0x08, 0x55, 0x0c, 0x0f, 0x0c, 0x4d, 0x14, 0xc7, 0x19, + 0xda, 0x17, 0x72, 0x16, 0x81, 0x14, 0x3e, 0x11, 0x38, 0x0d, 0x09, 0x0b, 0x8d, 0x0a, 0x81, 0x06, + 0x92, 0x04, 0x12, 0x05, 0xe8, 0x03, 0x8b, 0x05, 0xcb, 0x09, 0xb9, 0x05, 0xac, 0x04, 0x1a, 0x02, + 0x65, 0xfe, 0x10, 0x03, 0x31, 0x01, 0x13, 0x02, 0x2c, 0x02, 0x5d, 0x01, 0x5e, 0x03, 0x80, 0x06, + 0xfc, 0x0c, 0x53, 0x0e, 0x3d, 0x0d, 0x18, 0x0d, 0x2f, 0x0d, 0x64, 0x0b, 0x8b, 0x0e, 0x9f, 0x0e, + 0x5c, 0x0a, 0x8f, 0x06, 0x27, 0x05, 0x40, 0xff, 0xa1, 0xfa, 0xe1, 0xf5, 0x7a, 0xf2, 0xc3, 0xf1, + 0x83, 0xed, 0xa2, 0xee, 0x93, 0xef, 0x7b, 0xed, 0xd9, 0xec, 0xc4, 0xeb, 0xac, 0xe8, 0xb6, 0xe6, + 0x03, 0xe2, 0x2c, 0xe6, 0xd6, 0xe8, 0x1a, 0xee, 0xf2, 0xf8, 0x37, 0xfd, 0x95, 0xfd, 0x20, 0x02, + 0x2a, 0x04, 0x75, 0x04, 0x96, 0x08, 0xe1, 0x0a, 0x9f, 0x0d, 0xd6, 0x0a, 0x5a, 0x0a, 0x66, 0x0d, + 0xd1, 0x0c, 0x9e, 0x0f, 0xc1, 0x0e, 0x8c, 0x0e, 0x7d, 0x0a, 0xda, 0x04, 0xba, 0x03, 0x99, 0x00, + 0x6f, 0xfb, 0xcf, 0xf8, 0x72, 0xf5, 0xf8, 0xf1, 0x9f, 0xf2, 0x1b, 0xf1, 0x42, 0xee, 0xdc, 0xef, + 0xd9, 0xec, 0xa4, 0xec, 0x32, 0xf2, 0x90, 0xf2, 0xa0, 0xfb, 0x98, 0x01, 0xec, 0xff, 0x37, 0x04, + 0x31, 0x0a, 0x9a, 0x0d, 0xe3, 0x0e, 0x3e, 0x0f, 0x51, 0x11, 0xf0, 0x12, 0xc6, 0x11, 0x49, 0x15, + 0x17, 0x17, 0x55, 0x15, 0xbb, 0x15, 0x88, 0x12, 0xa8, 0x0d, 0xcb, 0x06, 0x32, 0x04, 0xfe, 0x04, + 0x9b, 0xff, 0x55, 0xfe, 0x5d, 0xff, 0x62, 0xf9, 0x99, 0xf5, 0x65, 0xf3, 0x88, 0xf1, 0x52, 0xf2, + 0xf0, 0xed, 0xea, 0xeb, 0x16, 0xec, 0xd9, 0xe9, 0xcb, 0xf0, 0x9e, 0xf2, 0xf5, 0xf3, 0x16, 0xf7, + 0xd7, 0xf9, 0xd5, 0xf8, 0x13, 0xfb, 0x8a, 0xfd, 0xdb, 0xfb, 0x21, 0xfe, 0xcd, 0xfa, 0xfe, 0xfd, + 0x3b, 0x03, 0x62, 0x06, 0xc2, 0x06, 0x01, 0x06, 0xb6, 0x03, 0x29, 0x01, 0x12, 0xfd, 0xab, 0xfe, + 0x55, 0xfd, 0xbf, 0xfa, 0xdc, 0xfc, 0xcb, 0xfb, 0x99, 0xfb, 0x42, 0xfe, 0xba, 0xfb, 0xff, 0xfa, + 0x0a, 0xfa, 0xfc, 0xf5, 0x18, 0xfc, 0xbc, 0xfb, 0x03, 0xfd, 0x15, 0xff, 0x9a, 0xfd, 0x1d, 0xfe, + 0xad, 0x01, 0xed, 0x06, 0x83, 0x05, 0xfa, 0x04, 0xa2, 0x06, 0xae, 0x06, 0xf6, 0x02, 0x68, 0x08, + 0x4d, 0x0c, 0x93, 0x0a, 0xc8, 0x08, 0xdf, 0x05, 0x5a, 0x01, 0x68, 0xfe, 0x68, 0xfb, 0x84, 0xf9, + 0xef, 0xf6, 0xd1, 0xf4, 0x10, 0xf7, 0x70, 0xf6, 0x8b, 0xf4, 0x20, 0xf8, 0x3e, 0xf7, 0xdb, 0xf7, + 0xa5, 0xfa, 0xfb, 0xf5, 0x17, 0xf6, 0x26, 0xf8, 0x68, 0xfa, 0x75, 0xff, 0xa5, 0x04, 0xca, 0x08, + 0x62, 0x0d, 0xc3, 0x0f, 0x2c, 0x13, 0xab, 0x15, 0xea, 0x18, 0x4d, 0x1d, 0x8c, 0x1b, 0xa0, 0x1b, + 0xf5, 0x1d, 0xd0, 0x1e, 0xd0, 0x1e, 0x92, 0x1d, 0x8a, 0x1d, 0x50, 0x1b, 0x41, 0x14, 0x47, 0x14, + 0xd5, 0x12, 0xbe, 0x0b, 0x3b, 0x09, 0x37, 0x04, 0xb3, 0xfd, 0x61, 0xfb, 0xe2, 0xf8, 0x88, 0xf2, + 0x77, 0xef, 0xe1, 0xe8, 0xc0, 0xe6, 0x10, 0xe6, 0xf5, 0xe3, 0x2e, 0xec, 0x65, 0xf2, 0xed, 0xf3, + 0x4d, 0xf6, 0xe5, 0xfa, 0x14, 0xf9, 0x32, 0xf9, 0xab, 0xfb, 0xe0, 0xfa, 0xb9, 0xfa, 0xa2, 0xfa, + 0xc6, 0xfc, 0xb2, 0xfd, 0x8a, 0x01, 0x6c, 0x03, 0x97, 0x01, 0x43, 0x01, 0x51, 0xfe, 0x9b, 0xfa, + 0xd9, 0xfc, 0xda, 0xf9, 0xf3, 0xf5, 0xa4, 0xf2, 0xb9, 0xed, 0x53, 0xec, 0xa0, 0xe9, 0x4e, 0xea, + 0xec, 0xec, 0xc7, 0xea, 0xe2, 0xea, 0x0a, 0xed, 0xd6, 0xeb, 0xdc, 0xf3, 0xa9, 0xfa, 0xdf, 0xfe, + 0x6b, 0x00, 0x66, 0x03, 0x6b, 0x06, 0xb1, 0x08, 0x23, 0x0b, 0xed, 0x0c, 0x2c, 0x11, 0xe1, 0x0f, + 0x25, 0x13, 0xe2, 0x17, 0xe7, 0x18, 0xe2, 0x19, 0x4d, 0x1c, 0x8a, 0x1a, 0x25, 0x15, 0xba, 0x11, + 0x1c, 0x11, 0xab, 0x0c, 0x1f, 0x09, 0xf2, 0x09, 0x13, 0x09, 0xf5, 0x07, 0xe0, 0x0b, 0xd3, 0x07, + 0x7f, 0x03, 0x0b, 0x02, 0x8c, 0xfd, 0xbb, 0xfe, 0x5a, 0xfe, 0xf8, 0xff, 0xe8, 0xfd, 0x25, 0xfd, + 0xac, 0xfd, 0xab, 0xff, 0xc7, 0x04, 0x1d, 0x07, 0x54, 0x07, 0x44, 0x08, 0x1e, 0x08, 0xcd, 0x03, + 0xde, 0x02, 0x7c, 0x01, 0x13, 0x01, 0xf5, 0xfc, 0x0b, 0xfa, 0xa3, 0xf4, 0x68, 0xf1, 0x46, 0xed, + 0xb8, 0xeb, 0x67, 0xe9, 0x20, 0xe5, 0xc7, 0xe6, 0xa9, 0xe9, 0x00, 0xea, 0x43, 0xea, 0xb9, 0xea, + 0x05, 0xea, 0x6b, 0xea, 0x82, 0xe7, 0x20, 0xe8, 0x1d, 0xe9, 0x80, 0xeb, 0x8f, 0xf2, 0x96, 0xf7, + 0x0b, 0xfa, 0xb6, 0xff, 0x1e, 0x06, 0xdd, 0x05, 0xd8, 0x06, 0xa8, 0x09, 0x27, 0x0d, 0x39, 0x0d, + 0x6b, 0x0c, 0x70, 0x0e, 0x23, 0x10, 0x59, 0x11, 0xf6, 0x11, 0x5d, 0x10, 0x3f, 0x0e, 0x89, 0x09, + 0x02, 0x08, 0x65, 0x06, 0xf2, 0x01, 0x23, 0x01, 0x03, 0xfe, 0x1a, 0xf9, 0x30, 0xf9, 0x11, 0xf9, + 0x16, 0xf6, 0xe4, 0xf6, 0xa7, 0xf4, 0x99, 0xf2, 0x0e, 0xf4, 0x0c, 0xf4, 0x26, 0xf5, 0x5c, 0xf9, + 0x36, 0xfb, 0xd9, 0xfc, 0xa9, 0x02, 0xee, 0x04, 0x2c, 0x07, 0x4e, 0x0b, 0xb3, 0x0c, 0x92, 0x0d, + 0x3a, 0x0c, 0x2f, 0x0f, 0x2f, 0x13, 0xfb, 0x14, 0xb0, 0x17, 0xfd, 0x16, 0x78, 0x14, 0x79, 0x0f, + 0xf2, 0x0c, 0x95, 0x0e, 0x93, 0x0c, 0x22, 0x0b, 0xc4, 0x08, 0x28, 0x03, 0x73, 0xfd, 0x2d, 0xfc, + 0xf6, 0xf9, 0x7a, 0xf9, 0xf4, 0xf5, 0xc0, 0xf2, 0x66, 0xf1, 0x5e, 0xeb, 0x74, 0xee, 0xbb, 0xf2, + 0x66, 0xf6, 0x0b, 0xf8, 0xa9, 0xfb, 0x7e, 0xfa, 0x3b, 0xfa, 0x26, 0xfb, 0x02, 0xfa, 0xa8, 0xfa, + 0x0e, 0xfa, 0x78, 0xfa, 0x8c, 0xfd, 0x90, 0x01, 0x31, 0x03, 0x23, 0x05, 0xb5, 0x04, 0xbc, 0x04, + 0x1a, 0x01, 0x6d, 0x00, 0x0d, 0x01, 0x9e, 0xfc, 0x31, 0xfc, 0x43, 0xf9, 0xac, 0xf6, 0x8a, 0xf9, + 0x3c, 0xf8, 0xc7, 0xf4, 0x38, 0xf4, 0xa5, 0xf2, 0xd4, 0xf5, 0x00, 0xf6, 0xc7, 0xf6, 0x14, 0xf9, + 0x7b, 0xfc, 0x62, 0xfc, 0x52, 0xff, 0xde, 0x04, 0x4c, 0x07, 0x98, 0x08, 0xe2, 0x0a, 0x92, 0x0c, + 0x40, 0x0b, 0x53, 0x0d, 0xed, 0x0f, 0xbe, 0x0e, 0xac, 0x0d, 0x3d, 0x0d, 0xfc, 0x08, 0x63, 0x06, + 0x80, 0x01, 0x17, 0x00, 0x0b, 0xfe, 0xf6, 0xf8, 0x3b, 0xf8, 0xfa, 0xf8, 0x71, 0xf8, 0x70, 0xfb, + 0xe1, 0xfb, 0x2b, 0xf9, 0x54, 0xfb, 0x2a, 0xf9, 0x24, 0xf6, 0x45, 0xf6, 0xfc, 0xf6, 0x65, 0xf9, + 0x82, 0xfd, 0x62, 0x00, 0x8f, 0x06, 0xf9, 0x0b, 0x9c, 0x0e, 0xdc, 0x0f, 0xd6, 0x10, 0x85, 0x16, + 0x50, 0x19, 0xf5, 0x18, 0x72, 0x17, 0x8d, 0x16, 0x13, 0x14, 0x77, 0x13, 0x89, 0x11, 0xd7, 0x10, + 0x9a, 0x0b, 0x43, 0x0a, 0xcd, 0x09, 0xc0, 0x03, 0x70, 0x01, 0xd5, 0x00, 0x3f, 0xfd, 0x17, 0xfb, + 0x6e, 0xfa, 0xb6, 0xf5, 0x30, 0xf4, 0x59, 0xf0, 0xf6, 0xed, 0x62, 0xec, 0x17, 0xe9, 0x17, 0xec, + 0x5d, 0xf2, 0x87, 0xf4, 0xd7, 0xf4, 0xc9, 0xfa, 0x36, 0xfc, 0xe0, 0xfc, 0x2d, 0xff, 0x53, 0x00, + 0xfb, 0xfe, 0x01, 0xfd, 0x37, 0xfe, 0x54, 0xfe, 0x33, 0x01, 0x69, 0x06, 0x4c, 0x05, 0xe9, 0x02, + 0x37, 0x00, 0xb5, 0xfb, 0x46, 0xfc, 0x50, 0xfc, 0xd6, 0xf9, 0xe0, 0xf7, 0x84, 0xf3, 0x9e, 0xf0, + 0x9b, 0xee, 0x03, 0xed, 0x41, 0xf0, 0x43, 0xee, 0xec, 0xed, 0x6b, 0xf0, 0x1e, 0xee, 0x2f, 0xf0, + 0x67, 0xf4, 0xb8, 0xf6, 0x40, 0xf8, 0xfb, 0xfc, 0x87, 0xfe, 0x70, 0xfe, 0x5f, 0xff, 0xfc, 0x02, + 0x92, 0x06, 0x25, 0x06, 0xee, 0x06, 0xec, 0x0a, 0xe9, 0x0e, 0x43, 0x12, 0xc2, 0x15, 0xf5, 0x16, + 0x6b, 0x17, 0x9e, 0x14, 0xb8, 0x14, 0x7a, 0x12, 0xdb, 0x0e, 0xfb, 0x10, 0xe9, 0x0e, 0xf9, 0x0a, + 0x30, 0x0d, 0x72, 0x0c, 0xf9, 0x08, 0x9c, 0x05, 0x9b, 0x03, 0xfe, 0x02, 0x19, 0x00, 0xb6, 0xff, + 0xf8, 0xfd, 0x4f, 0xfe, 0xd5, 0xfd, 0x9b, 0xff, 0x7a, 0x01, 0x9e, 0x04, 0x27, 0x05, 0xe6, 0x04, + 0xb7, 0x05, 0x28, 0x02, 0x63, 0x01, 0x4e, 0x00, 0xd4, 0xff, 0x24, 0xff, 0xb6, 0xfc, 0x43, 0xf9, + 0x9a, 0xf7, 0xd1, 0xf2, 0x4a, 0xf0, 0xda, 0xee, 0x63, 0xeb, 0x2c, 0xea, 0xdf, 0xea, 0x02, 0xea, + 0x4b, 0xe9, 0xd3, 0xe9, 0x20, 0xe7, 0x2e, 0xe6, 0xa9, 0xe4, 0xc6, 0xe5, 0x3a, 0xe5, 0x74, 0xe3, + 0xa8, 0xe7, 0x40, 0xed, 0xed, 0xf0, 0x07, 0xf8, 0x38, 0x01, 0x7b, 0x04, 0x12, 0x05, 0xcd, 0x08, + 0x66, 0x0d, 0xce, 0x0f, 0xc7, 0x12, 0xa5, 0x14, 0xfc, 0x14, 0xf1, 0x13, 0xaa, 0x14, 0x24, 0x14, + 0x43, 0x14, 0x72, 0x10, 0x2d, 0x0e, 0x0e, 0x0d, 0xf2, 0x08, 0xa5, 0x05, 0xfe, 0x02, 0xbc, 0xfe, + 0xbd, 0xff, 0xb2, 0xff, 0xbe, 0xfb, 0xcb, 0xfa, 0xbe, 0xf8, 0xc4, 0xf7, 0xa6, 0xf4, 0x17, 0xf3, + 0xe1, 0xf1, 0xd8, 0xf5, 0x17, 0xfa, 0x6a, 0xf9, 0x42, 0xfe, 0x50, 0x02, 0x25, 0x06, 0x1f, 0x0a, + 0x02, 0x0e, 0x7e, 0x0f, 0xf4, 0x0e, 0x6e, 0x11, 0x30, 0x13, 0xa2, 0x13, 0xe9, 0x15, 0x59, 0x16, + 0xb4, 0x13, 0x2d, 0x0e, 0x65, 0x0a, 0xd5, 0x0b, 0x93, 0x0b, 0x68, 0x09, 0xdc, 0x07, 0x9e, 0x05, + 0xe5, 0x01, 0xc7, 0x01, 0x8e, 0x00, 0x97, 0x00, 0x92, 0xfe, 0xf0, 0xfd, 0x2b, 0xfd, 0xbb, 0xf9, + 0xee, 0xf8, 0x24, 0xfc, 0x94, 0xfe, 0x74, 0xfe, 0x89, 0x02, 0x88, 0x04, 0x1a, 0x03, 0x8e, 0x02, + 0x72, 0x02, 0x81, 0x01, 0xdf, 0x00, 0xa7, 0xff, 0x81, 0xfe, 0xe8, 0x01, 0xac, 0x03, 0xed, 0x05, + 0xe7, 0x05, 0x9f, 0x06, 0x4c, 0x04, 0x1c, 0x01, 0x75, 0xff, 0xca, 0xfb, 0x51, 0xfa, 0xcf, 0xf9, + 0xd0, 0xf6, 0x68, 0xf6, 0xc0, 0xf6, 0x5f, 0xf6, 0xce, 0xf4, 0x2d, 0xf4, 0x68, 0xf5, 0x37, 0xf6, + 0x6b, 0xf6, 0x80, 0xf7, 0x08, 0xfb, 0xdc, 0xf8, 0xc8, 0xf8, 0x74, 0xfb, 0x04, 0xfd, 0x4d, 0xfc, + 0x37, 0xff, 0xa2, 0x02, 0x6c, 0x01, 0x0d, 0x01, 0xe9, 0x02, 0x4b, 0x04, 0x48, 0x06, 0xba, 0x07, + 0xef, 0x05, 0x60, 0x04, 0xbd, 0x02, 0x97, 0x01, 0xdc, 0xff, 0x08, 0xfc, 0x40, 0xf9, 0xf7, 0xfb, + 0x36, 0xfc, 0xc1, 0xfb, 0x34, 0xfe, 0x09, 0xfc, 0x6d, 0xfc, 0x80, 0xfc, 0x44, 0xfc, 0xd8, 0xf9, + 0x83, 0xf8, 0xed, 0xf6, 0x3c, 0xf8, 0x7d, 0xf9, 0x09, 0xfe, 0xdd, 0x04, 0x59, 0x08, 0x83, 0x09, + 0x2d, 0x09, 0x7e, 0x0b, 0xcd, 0x0f, 0xaa, 0x10, 0x75, 0x10, 0xc1, 0x10, 0xc1, 0x0d, 0xe6, 0x0b, + 0xe4, 0x0a, 0x8e, 0x0b, 0x68, 0x09, 0x87, 0x06, 0x32, 0x06, 0x72, 0x03, 0xa4, 0x00, 0xe9, 0x00, + 0xf0, 0xfc, 0xa4, 0xf9, 0xd6, 0xf8, 0x95, 0xf5, 0x7d, 0xf1, 0x24, 0xed, 0x91, 0xea, 0x59, 0xe6, + 0x4c, 0xe3, 0xf1, 0xdf, 0xbf, 0xe3, 0x94, 0xe8, 0x51, 0xe8, 0xeb, 0xed, 0x37, 0xf1, 0xa9, 0xf4, + 0xe3, 0xf8, 0xaa, 0xfd, 0x51, 0xfe, 0x1b, 0xfc, 0x88, 0xff, 0xda, 0x02, 0xc5, 0x03, 0x14, 0x07, + 0xd3, 0x08, 0xad, 0x07, 0x71, 0x05, 0x02, 0x04, 0x34, 0x02, 0xe1, 0x03, 0xa6, 0x01, 0xe0, 0xfe, + 0xca, 0xfc, 0x4b, 0xf9, 0x89, 0xf9, 0x0d, 0xf7, 0xae, 0xf7, 0xd5, 0xf6, 0x50, 0xf5, 0x43, 0xf6, + 0x1a, 0xf5, 0xe9, 0xf1, 0x9a, 0xf3, 0xac, 0xf6, 0xe1, 0xf6, 0x10, 0xfa, 0x3a, 0xfd, 0x64, 0xff, + 0xaa, 0x00, 0xfc, 0x03, 0x68, 0x06, 0x9a, 0x08, 0x12, 0x0a, 0x8a, 0x0c, 0xc7, 0x0f, 0x81, 0x10, + 0x8c, 0x13, 0x38, 0x15, 0x4a, 0x16, 0x27, 0x14, 0xf4, 0x12, 0x2d, 0x12, 0x48, 0x0e, 0x22, 0x0e, + 0xde, 0x0e, 0x22, 0x0b, 0x47, 0x0c, 0x47, 0x0e, 0xf8, 0x0d, 0xb2, 0x0c, 0x53, 0x0c, 0x0c, 0x0c, + 0x43, 0x0a, 0xcd, 0x07, 0x6d, 0x07, 0x31, 0x0b, 0x17, 0x09, 0xec, 0x08, 0x71, 0x09, 0x82, 0x0a, + 0x28, 0x0c, 0xcb, 0x0b, 0xc1, 0x0d, 0xbc, 0x0c, 0xf2, 0x0a, 0x24, 0x09, 0x54, 0x06, 0xb2, 0x06, + 0x6e, 0x05, 0x59, 0x02, 0x9e, 0x00, 0x7d, 0xfc, 0x00, 0xf9, 0x7f, 0xf5, 0x98, 0xf1, 0x99, 0xeb, + 0x99, 0xeb, 0x03, 0xec, 0xb0, 0xea, 0x81, 0xeb, 0xc6, 0xe9, 0x36, 0xe9, 0xe3, 0xe8, 0x35, 0xea, + 0x77, 0xea, 0x2e, 0xea, 0xfe, 0xe9, 0x8c, 0xee, 0x46, 0xf0, 0xae, 0xf2, 0x96, 0xf9, 0xbe, 0xfe, + 0x16, 0x00, 0x4f, 0x00, 0x50, 0x03, 0xe3, 0x06, 0xda, 0x09, 0x6c, 0x0c, 0x1a, 0x0e, 0x82, 0x0d, + 0xda, 0x0d, 0xc8, 0x0d, 0x75, 0x0f, 0xa7, 0x0f, 0xeb, 0x0e, 0x4f, 0x0e, 0xae, 0x0b, 0x93, 0x07, + 0xa8, 0x08, 0xd4, 0x06, 0x28, 0x05, 0xa1, 0x05, 0x90, 0x02, 0x3b, 0x01, 0x67, 0xff, 0x6a, 0xfe, + 0x04, 0xfa, 0x7a, 0xf7, 0x3a, 0xf3, 0x85, 0xf2, 0x48, 0xf5, 0x17, 0xf4, 0x1f, 0xf6, 0x8e, 0xf9, + 0x21, 0xfe, 0x40, 0x00, 0xd1, 0x04, 0x53, 0x06, 0x88, 0x04, 0x62, 0x05, 0xd9, 0x06, 0xab, 0x07, + 0x2c, 0x08, 0xe9, 0x07, 0xff, 0x06, 0x65, 0x04, 0x89, 0x02, 0xd2, 0x01, 0x49, 0x03, 0x5e, 0x00, + 0x2e, 0x00, 0x6f, 0x00, 0x49, 0xfc, 0x8f, 0xfb, 0x12, 0xfa, 0x6f, 0xf8, 0xdb, 0xf4, 0x54, 0xf2, + 0x3d, 0xf1, 0xfc, 0xef, 0x1b, 0xed, 0x5d, 0xec, 0xf3, 0xed, 0xfd, 0xee, 0xfb, 0xf1, 0xcc, 0xf6, + 0x6e, 0xf9, 0xef, 0xf9, 0x84, 0xfc, 0x73, 0xfd, 0x2e, 0xfd, 0xdb, 0xfc, 0x15, 0xfe, 0xba, 0x00, + 0xeb, 0x02, 0x3b, 0x04, 0x18, 0x06, 0x4f, 0x08, 0x98, 0x07, 0x04, 0x07, 0xac, 0x05, 0x33, 0x03, + 0xcb, 0x01, 0x7d, 0x01, 0x48, 0xfd, 0xf2, 0xfa, 0x77, 0xfa, 0xc7, 0xfb, 0xa1, 0xfb, 0x1d, 0xfb, + 0xfe, 0xf9, 0xb3, 0xf9, 0x84, 0xf7, 0x67, 0xf6, 0x37, 0xfb, 0x87, 0xfa, 0xd3, 0xf8, 0x70, 0xf8, + 0x9a, 0xf9, 0x92, 0xfb, 0xe3, 0xfc, 0xf7, 0x00, 0xed, 0x00, 0xf5, 0x01, 0x37, 0x05, 0x0c, 0x06, + 0x31, 0x08, 0x2a, 0x09, 0x04, 0x09, 0xe1, 0x07, 0x49, 0x05, 0xd0, 0x03, 0x04, 0x01, 0x75, 0xff, + 0x81, 0xfa, 0x9c, 0xf9, 0x34, 0xf9, 0x5b, 0xf8, 0x5c, 0xfb, 0x9b, 0xfc, 0x47, 0xfd, 0x4c, 0xfd, + 0x7a, 0x01, 0x6a, 0x02, 0x15, 0x01, 0x5a, 0xff, 0x45, 0x01, 0x8c, 0x04, 0xca, 0x06, 0x90, 0x0b, + 0xcd, 0x10, 0xf2, 0x13, 0x11, 0x15, 0x4d, 0x15, 0xaa, 0x18, 0x4a, 0x1b, 0x50, 0x1c, 0xb5, 0x1c, + 0xb0, 0x1a, 0x24, 0x17, 0xc8, 0x14, 0xfb, 0x14, 0xfc, 0x13, 0x7d, 0x11, 0xd0, 0x0f, 0x5f, 0x0d, + 0x9d, 0x07, 0x65, 0x07, 0x48, 0x04, 0xb7, 0xff, 0xb5, 0xfd, 0x81, 0xfa, 0x46, 0xf7, 0x05, 0xf3, + 0x2e, 0xf2, 0xae, 0xec, 0x75, 0xe9, 0xfb, 0xe4, 0x8d, 0xe5, 0x6b, 0xe9, 0x3b, 0xea, 0x2f, 0xec, + 0x5d, 0xef, 0xed, 0xf2, 0x03, 0xf4, 0x97, 0xf7, 0x66, 0xf9, 0xb3, 0xf8, 0x12, 0xfa, 0x0e, 0xfc, + 0x3e, 0xfd, 0x87, 0xfe, 0xd9, 0xff, 0x19, 0x02, 0x26, 0x01, 0xf8, 0x01, 0xd9, 0x01, 0x56, 0x04, + 0x80, 0x03, 0xf0, 0x01, 0x61, 0x03, 0xd0, 0x00, 0x68, 0x00, 0x1d, 0x00, 0xca, 0xfe, 0xe9, 0xfd, + 0x28, 0xfc, 0x79, 0xfa, 0x6f, 0xfa, 0x70, 0xf8, 0xca, 0xf6, 0x10, 0xf8, 0xe0, 0xf7, 0x21, 0xf7, + 0x3d, 0xfa, 0x70, 0xfe, 0x45, 0xff, 0x6b, 0x01, 0x71, 0x03, 0x41, 0x04, 0x14, 0x04, 0x63, 0x04, + 0xd9, 0x05, 0xbb, 0x07, 0x28, 0x08, 0xb0, 0x09, 0xb8, 0x0a, 0xe0, 0x0a, 0x8f, 0x0b, 0x87, 0x0b, + 0x72, 0x08, 0xaf, 0x07, 0x3e, 0x0a, 0x93, 0x08, 0xe0, 0x05, 0xf1, 0x05, 0xfd, 0x06, 0x11, 0x06, + 0x0a, 0x05, 0xd4, 0x01, 0x45, 0x00, 0x8f, 0xfd, 0xb4, 0xfa, 0x47, 0xfd, 0x1e, 0xfd, 0x17, 0xfb, + 0x01, 0xfc, 0xa3, 0xfc, 0xbe, 0xfd, 0x7f, 0xff, 0xb5, 0x02, 0x6d, 0x04, 0xc2, 0x03, 0xdd, 0x03, + 0x26, 0x03, 0x1b, 0x05, 0x8c, 0x05, 0x69, 0x04, 0x46, 0x03, 0xca, 0x00, 0xd8, 0xfd, 0x63, 0xfa, + 0x39, 0xf9, 0xa7, 0xf2, 0xe3, 0xf0, 0x3f, 0xef, 0x3d, 0xec, 0xbe, 0xeb, 0xd9, 0xeb, 0xf5, 0xeb, + 0xae, 0xe9, 0xce, 0xeb, 0x9f, 0xec, 0x2c, 0xec, 0x8c, 0xea, 0xa5, 0xeb, 0x21, 0xee, 0x09, 0xef, + 0xb5, 0xf1, 0xbb, 0xf6, 0x96, 0xfa, 0x43, 0xfc, 0xd7, 0xfd, 0x49, 0x01, 0x26, 0x05, 0x03, 0x09, + 0x5c, 0x0d, 0x69, 0x0e, 0x34, 0x0e, 0x6c, 0x0e, 0x62, 0x0f, 0xb1, 0x0f, 0xc1, 0x0e, 0x75, 0x0c, + 0xb6, 0x0a, 0x19, 0x07, 0xca, 0x06, 0xb3, 0x05, 0x95, 0x01, 0x6d, 0x00, 0x97, 0x00, 0x3c, 0x00, + 0x56, 0xfe, 0x2c, 0xff, 0xb9, 0xfe, 0x1b, 0xfe, 0x41, 0xf9, 0x7a, 0xf7, 0x09, 0xf9, 0x3f, 0xfb, + 0xe5, 0xfc, 0xfb, 0xff, 0xd3, 0x04, 0x18, 0x07, 0x1a, 0x0b, 0x07, 0x0f, 0x05, 0x0f, 0x9d, 0x10, + 0x0d, 0x12, 0xe8, 0x12, 0xc8, 0x12, 0x8c, 0x10, 0x4d, 0x11, 0x78, 0x0f, 0x22, 0x0e, 0x8a, 0x0b, + 0x51, 0x0d, 0x87, 0x0b, 0x7c, 0x08, 0x6b, 0x09, 0xfe, 0x05, 0x2c, 0x03, 0x55, 0x02, 0x98, 0xff, + 0x21, 0xfb, 0x2b, 0xf9, 0xee, 0xf6, 0x21, 0xf5, 0x3b, 0xf2, 0xaf, 0xf1, 0x29, 0xf2, 0x5c, 0xf3, + 0xb5, 0xf3, 0x6b, 0xf6, 0x38, 0xfa, 0xb5, 0xfb, 0xb4, 0xfc, 0xb7, 0xfc, 0x2e, 0xfc, 0x0e, 0xfa, + 0xa1, 0xfa, 0xfa, 0xf9, 0x63, 0xfb, 0xb6, 0xfb, 0xb4, 0xfd, 0x84, 0xff, 0xea, 0xfe, 0x31, 0x00, + 0x0f, 0x03, 0xde, 0x02, 0x0e, 0x02, 0xd4, 0x03, 0xd3, 0x01, 0xdc, 0xff, 0x18, 0x00, 0xe1, 0x01, + 0xab, 0x02, 0xe2, 0x01, 0xd0, 0xff, 0xe3, 0xff, 0xca, 0xff, 0x62, 0xfd, 0x73, 0xff, 0xc4, 0x00, + 0xd5, 0xfd, 0x25, 0xfd, 0x99, 0xfd, 0x18, 0xfe, 0x60, 0xfe, 0xc2, 0x00, 0x31, 0x02, 0xd8, 0x02, + 0x3f, 0x04, 0x3a, 0x03, 0x34, 0x04, 0x4e, 0x05, 0x5b, 0x05, 0x13, 0x03, 0x2d, 0x01, 0xda, 0xff, + 0x87, 0xfe, 0x24, 0xfe, 0x2b, 0xf9, 0xf4, 0xf7, 0x29, 0xf7, 0x47, 0xf6, 0x2c, 0xf7, 0xd5, 0xf9, + 0xc7, 0xfb, 0x6a, 0xfb, 0x6a, 0xfc, 0x07, 0xfd, 0x4e, 0xfb, 0xf3, 0xf9, 0x78, 0xfa, 0x7e, 0xfb, + 0x2e, 0xfb, 0xf2, 0xfb, 0xcc, 0x00, 0x03, 0x05, 0x5a, 0x07, 0x9b, 0x09, 0xba, 0x0d, 0x57, 0x11, + 0x17, 0x14, 0x6b, 0x16, 0x9c, 0x17, 0x32, 0x17, 0x5d, 0x16, 0xd5, 0x15, 0x15, 0x15, 0x0b, 0x14, + 0x3a, 0x11, 0x65, 0x10, 0xf8, 0x0c, 0x4f, 0x0b, 0x06, 0x0a, 0x85, 0x05, 0xd1, 0x01, 0xd9, 0xff, + 0x0f, 0xfd, 0xb0, 0xf8, 0x60, 0xf6, 0x8c, 0xf2, 0x31, 0xf0, 0xd4, 0xea, 0x9e, 0xe7, 0x8b, 0xe5, + 0xf6, 0xe6, 0x30, 0xe8, 0xfd, 0xe9, 0x90, 0xec, 0xb5, 0xec, 0x85, 0xef, 0xcb, 0xf2, 0x08, 0xf4, + 0x92, 0xf5, 0x0a, 0xf8, 0xc5, 0xf9, 0x63, 0xfc, 0xfc, 0xfd, 0xbb, 0x00, 0x0b, 0x02, 0x81, 0x01, + 0x18, 0x00, 0x75, 0x02, 0x79, 0x02, 0x84, 0x00, 0x0e, 0x02, 0xf6, 0xff, 0x01, 0xfc, 0xb6, 0xfc, + 0xcd, 0xfd, 0x5c, 0xfb, 0x2d, 0xf9, 0x3a, 0xf8, 0x97, 0xf8, 0xd6, 0xf8, 0xde, 0xf8, 0xe4, 0xf8, + 0x50, 0xfa, 0xd0, 0xf9, 0xe7, 0xfb, 0xf6, 0xff, 0xef, 0x03, 0xbb, 0x06, 0xcf, 0x09, 0x11, 0x0c, + 0xf1, 0x0a, 0x62, 0x0c, 0x6f, 0x0c, 0xd3, 0x0d, 0xa2, 0x0d, 0xbb, 0x0d, 0x06, 0x0e, 0xf9, 0x0d, + 0xd3, 0x0c, 0x5f, 0x0e, 0x16, 0x0e, 0x6d, 0x0d, 0xae, 0x0d, 0x6c, 0x0b, 0xb6, 0x08, 0x25, 0x08, + 0x75, 0x09, 0x0a, 0x08, 0x8b, 0x06, 0x95, 0x02, 0xe4, 0x00, 0x46, 0xff, 0xd3, 0xfb, 0x77, 0xfb, + 0x30, 0xfd, 0xcf, 0xfb, 0x8a, 0xfb, 0xb3, 0xfd, 0x44, 0xfe, 0xf9, 0xfe, 0xb5, 0x00, 0x7e, 0x01, + 0xfa, 0x00, 0x69, 0x01, 0xbd, 0x00, 0x1e, 0x00, 0x3c, 0xff, 0x5a, 0xff, 0x8b, 0xfe, 0x69, 0xfc, + 0x03, 0xf9, 0x3c, 0xf7, 0xc6, 0xf8, 0xd2, 0xf4, 0x0f, 0xf3, 0xfa, 0xf1, 0x5a, 0xf0, 0xd2, 0xef, + 0xf8, 0xf1, 0x13, 0xf4, 0xf5, 0xf2, 0xdf, 0xf2, 0x2f, 0xf4, 0x8d, 0xf4, 0x24, 0xf4, 0x4e, 0xf4, + 0x6f, 0xf6, 0xe4, 0xf7, 0x87, 0xf7, 0xd1, 0xf9, 0xe9, 0xfd, 0x19, 0xff, 0xfb, 0x00, 0x04, 0x04, + 0x89, 0x07, 0x3c, 0x0b, 0x54, 0x0d, 0x55, 0x0d, 0x71, 0x0d, 0x9e, 0x0e, 0x10, 0x0e, 0x34, 0x0c, + 0x02, 0x0a, 0xaa, 0x07, 0xa1, 0x06, 0xa8, 0x03, 0x88, 0x02, 0xd7, 0x01, 0x28, 0x00, 0xed, 0xfd, + 0x4e, 0xfe, 0xa7, 0xfe, 0x49, 0xfe, 0x95, 0xfd, 0xb5, 0xfd, 0x87, 0xfd, 0x6e, 0xf8, 0x1e, 0xf5, + 0xf9, 0xf2, 0xfd, 0xf2, 0x34, 0xf2, 0xc4, 0xf4, 0xc6, 0xf8, 0x9f, 0xf9, 0x95, 0xfb, 0x3f, 0x00, + 0xbc, 0x03, 0x18, 0x08, 0xc8, 0x0b, 0xfc, 0x0b, 0xa6, 0x0d, 0xa0, 0x0e, 0xbd, 0x0f, 0x7e, 0x10, + 0x30, 0x10, 0x16, 0x0d, 0x37, 0x0e, 0xab, 0x0e, 0xd7, 0x0c, 0x27, 0x0e, 0x06, 0x0e, 0xe8, 0x09, + 0xea, 0x07, 0x58, 0x08, 0xcf, 0x04, 0xd1, 0x01, 0x56, 0xfe, 0xbf, 0xfb, 0x57, 0xf9, 0x72, 0xf8, + 0x6a, 0xf6, 0xb7, 0xf5, 0x15, 0xf5, 0xf2, 0xf5, 0x7e, 0xf7, 0xfd, 0xf8, 0xb3, 0xf9, 0x31, 0xfb, + 0xff, 0xfb, 0x3b, 0xf9, 0x66, 0xf8, 0xd7, 0xf7, 0x26, 0xf9, 0x6a, 0xfa, 0x4f, 0xfc, 0x7f, 0xfd, + 0x69, 0xfd, 0xda, 0xfc, 0xbb, 0xff, 0x77, 0x00, 0xd1, 0xfe, 0xe4, 0xff, 0xe5, 0xfe, 0x01, 0xfc, + 0x85, 0xfa, 0xcd, 0xfb, 0x76, 0xfc, 0x54, 0xfb, 0x9a, 0xf8, 0x3f, 0xf8, 0xec, 0xf9, 0x47, 0xfa, + 0x60, 0xf9, 0xfe, 0xfb, 0x5a, 0xfc, 0x57, 0xfc, 0x9c, 0xff, 0x97, 0x00, 0x2e, 0x00, 0xa2, 0x02, + 0x2e, 0x04, 0xd0, 0x04, 0x0a, 0x07, 0x02, 0x08, 0x7b, 0x08, 0xfe, 0x07, 0xb9, 0x09, 0x95, 0x07, + 0x70, 0x06, 0x30, 0x03, 0xfb, 0x00, 0xd7, 0x01, 0x45, 0xff, 0x73, 0xfd, 0xc2, 0xfa, 0x28, 0xf8, + 0x80, 0xf5, 0xe5, 0xf7, 0x6a, 0xfa, 0x0d, 0xfa, 0x3f, 0xf9, 0x2f, 0xf9, 0x45, 0xf9, 0xda, 0xf7, + 0xc4, 0xf6, 0x16, 0xf8, 0x83, 0xf9, 0x4f, 0xf9, 0x04, 0xfc, 0x44, 0x00, 0xf2, 0x02, 0xba, 0x05, + 0x34, 0x0a, 0x8e, 0x0c, 0xe8, 0x0e, 0xc3, 0x11, 0xcf, 0x12, 0x15, 0x11, 0xca, 0x10, 0xba, 0x10, + 0x00, 0x0f, 0xaf, 0x0c, 0x48, 0x09, 0x68, 0x07, 0x3a, 0x06, 0x9e, 0x05, 0x8e, 0x05, 0xcd, 0x04, + 0x5e, 0x01, 0xe9, 0x00, 0x8b, 0x00, 0x0e, 0xff, 0x27, 0xfd, 0x0d, 0xfb, 0xf1, 0xf9, 0xd5, 0xf5, + 0xaa, 0xf0, 0x3e, 0xed, 0x8a, 0xee, 0xb6, 0xee, 0xac, 0xef, 0x57, 0xf1, 0xbf, 0xf0, 0x72, 0xf1, + 0xd0, 0xf3, 0xec, 0xf5, 0x33, 0xf9, 0x61, 0xfc, 0x98, 0xfc, 0xde, 0xfb, 0x3a, 0xfe, 0x4b, 0x00, + 0x5c, 0x01, 0x5c, 0x01, 0x8b, 0xfd, 0xa9, 0xfe, 0x83, 0xff, 0x5d, 0xfe, 0xf3, 0xfe, 0x3b, 0x00, + 0x56, 0xfd, 0xe8, 0xfb, 0xc8, 0xfe, 0xf7, 0xfe, 0x7a, 0xfd, 0x6f, 0xfc, 0x5a, 0xfb, 0x41, 0xf9, + 0x7d, 0xf8, 0x6a, 0xf8, 0x45, 0xf9, 0x97, 0xf7, 0x1b, 0xf7, 0x16, 0xf8, 0x30, 0xfb, 0x93, 0xfd, + 0x50, 0x00, 0xf9, 0x03, 0x18, 0x05, 0xef, 0x06, 0x15, 0x08, 0x63, 0x09, 0xd0, 0x0a, 0x1b, 0x0e, + 0x73, 0x0e, 0x05, 0x10, 0xba, 0x0e, 0x69, 0x10, 0x9d, 0x12, 0x71, 0x11, 0x43, 0x12, 0x5c, 0x12, + 0x22, 0x11, 0x8c, 0x10, 0x39, 0x11, 0x91, 0x10, 0x1e, 0x0f, 0x1b, 0x0a, 0xc0, 0x06, 0x29, 0x06, + 0xa8, 0x04, 0x34, 0x03, 0x6f, 0x02, 0x45, 0x00, 0xb7, 0xfe, 0x55, 0x00, 0x82, 0x01, 0xed, 0xff, + 0x99, 0xff, 0x93, 0x00, 0x8c, 0xff, 0xd1, 0xff, 0xd4, 0x00, 0xea, 0xff, 0x1e, 0xfe, 0x65, 0x00, + 0xca, 0xff, 0x41, 0x00, 0xa5, 0xfd, 0x78, 0xfc, 0xe2, 0xfd, 0x75, 0xfa, 0x97, 0xf7, 0x40, 0xf7, + 0x2e, 0xf5, 0x7e, 0xf0, 0xca, 0xf0, 0xf3, 0xf0, 0x9d, 0xf1, 0x29, 0xf1, 0xc9, 0xef, 0x9b, 0xef, + 0x8e, 0xef, 0x84, 0xf0, 0x14, 0xf2, 0x6b, 0xf4, 0x0d, 0xf6, 0xfd, 0xf5, 0xaf, 0xf9, 0x47, 0xfd, + 0x52, 0xff, 0xee, 0x03, 0x38, 0x07, 0x6a, 0x09, 0x42, 0x0c, 0x7e, 0x0f, 0x1d, 0x10, 0xb3, 0x12, + 0x94, 0x13, 0x2e, 0x13, 0x38, 0x11, 0xbc, 0x0c, 0x43, 0x0a, 0x65, 0x07, 0x49, 0x06, 0x37, 0x06, + 0x86, 0x04, 0x18, 0x00, 0x51, 0xff, 0xa7, 0xfe, 0x1e, 0xff, 0x75, 0xfd, 0x0d, 0xfc, 0xbb, 0xfc, + 0x91, 0xfa, 0xec, 0xf4, 0x7c, 0xf0, 0x76, 0xef, 0x1d, 0xee, 0x9c, 0xef, 0x78, 0xf2, 0xe9, 0xf3, + 0x24, 0xf5, 0x0b, 0xfa, 0xf9, 0xfd, 0xec, 0xff, 0x9b, 0x04, 0xee, 0x06, 0x20, 0x06, 0x1b, 0x08, + 0x71, 0x08, 0x87, 0x08, 0x66, 0x0a, 0x6c, 0x05, 0x9e, 0x03, 0xf9, 0x03, 0xce, 0x03, 0x7e, 0x05, + 0xe6, 0x07, 0x6f, 0x06, 0x90, 0x03, 0x3b, 0x05, 0x1e, 0x07, 0x22, 0x06, 0x5d, 0x04, 0x82, 0x02, + 0xd3, 0xff, 0x48, 0xfd, 0x82, 0xfc, 0xe5, 0xfc, 0x06, 0xfd, 0x02, 0xfd, 0xf0, 0xfb, 0x8a, 0xfd, + 0x5f, 0xfd, 0xaf, 0xfe, 0x36, 0xff, 0x72, 0xfd, 0x03, 0xfd, 0x49, 0xfd, 0xe0, 0xfc, 0xeb, 0xfb, + 0x01, 0xfd, 0xec, 0xfc, 0xce, 0xfd, 0xec, 0xfb, 0x09, 0xfc, 0x99, 0xfd, 0x55, 0xfb, 0x11, 0xfb, + 0x81, 0xfb, 0xa7, 0xf9, 0x07, 0xf8, 0x0a, 0xf9, 0xf4, 0xf9, 0xa8, 0xfa, 0xb0, 0xf9, 0xa2, 0xfa, + 0x27, 0xfb, 0x24, 0xfb, 0xb0, 0xfa, 0x41, 0xfb, 0x13, 0xfc, 0x87, 0xfb, 0x4f, 0xfb, 0xd7, 0xfd, + 0x50, 0xfd, 0xca, 0xfc, 0x60, 0xfd, 0xb4, 0xfc, 0x70, 0xfe, 0x58, 0x01, 0xc0, 0x02, 0x97, 0x02, + 0x44, 0x05, 0x35, 0x05, 0x75, 0x07, 0xa0, 0x06, 0x62, 0x05, 0x6f, 0x07, 0x7a, 0x06, 0xa0, 0x04, + 0x3d, 0x03, 0x26, 0x03, 0x5c, 0x00, 0xa5, 0x00, 0xe9, 0x01, 0x72, 0x03, 0xfa, 0x03, 0x07, 0x03, + 0x16, 0x01, 0xe7, 0xfe, 0xee, 0xfe, 0xd9, 0xff, 0x22, 0x01, 0x59, 0x01, 0x95, 0xff, 0xa3, 0x01, + 0x16, 0x04, 0xf1, 0x03, 0xf6, 0x07, 0x9f, 0x0a, 0x8e, 0x0b, 0xcb, 0x0d, 0x18, 0x10, 0xa6, 0x0e, + 0xc4, 0x0f, 0x41, 0x10, 0x6e, 0x10, 0xb0, 0x0e, 0x15, 0x0c, 0x93, 0x0b, 0x78, 0x09, 0xe9, 0x06, + 0x88, 0x06, 0xb9, 0x06, 0x31, 0x04, 0x16, 0x02, 0xfd, 0xff, 0x4c, 0xff, 0x58, 0xfd, 0x01, 0xfb, + 0xbb, 0xf7, 0xff, 0xf4, 0x41, 0xf0, 0x0e, 0xed, 0x0e, 0xed, 0x6a, 0xec, 0xe8, 0xec, 0x69, 0xee, + 0xfa, 0xef, 0xa4, 0xf0, 0x6d, 0xf4, 0x90, 0xf7, 0x69, 0xf9, 0x4d, 0xfd, 0xfd, 0xff, 0x92, 0xff, + 0x3e, 0x02, 0x25, 0x04, 0x54, 0x05, 0x81, 0x08, 0xa6, 0x05, 0x46, 0x03, 0xf8, 0x01, 0xdf, 0x00, + 0x5d, 0x01, 0x86, 0x04, 0x1d, 0x03, 0xf0, 0xfe, 0x34, 0xff, 0xc2, 0x00, 0x1e, 0x00, 0x9b, 0xfe, + 0xdc, 0xfc, 0x27, 0xfa, 0xa9, 0xf6, 0x4c, 0xf6, 0x09, 0xf6, 0xfb, 0xf4, 0x0c, 0xf4, 0x28, 0xf3, + 0x6e, 0xf4, 0x3d, 0xf5, 0x92, 0xfa, 0x93, 0xff, 0x01, 0x02, 0xb5, 0x02, 0x72, 0x03, 0x05, 0x05, + 0x10, 0x06, 0x96, 0x08, 0x8a, 0x07, 0xbe, 0x08, 0xc7, 0x08, 0xee, 0x07, 0x91, 0x08, 0xd1, 0x06, + 0x54, 0x06, 0x4f, 0x08, 0x0f, 0x09, 0xba, 0x08, 0x67, 0x09, 0x40, 0x0a, 0xa4, 0x0b, 0x57, 0x09, + 0x7d, 0x07, 0x1e, 0x08, 0x39, 0x07, 0x48, 0x05, 0xb4, 0x04, 0x2f, 0x04, 0xb5, 0x03, 0xf7, 0x03, + 0xcd, 0x05, 0xc4, 0x05, 0xda, 0x05, 0x08, 0x05, 0xa5, 0x02, 0x6f, 0x00, 0x38, 0x02, 0x74, 0x03, + 0x2e, 0x01, 0x34, 0x01, 0x46, 0xff, 0xb2, 0x00, 0x0f, 0xff, 0xdb, 0xfb, 0x06, 0xfb, 0x62, 0xf9, + 0xa7, 0xf5, 0x72, 0xf4, 0xd7, 0xf3, 0xf0, 0xed, 0x7c, 0xec, 0xb2, 0xec, 0x4e, 0xec, 0x7e, 0xed, + 0x63, 0xee, 0x6f, 0xee, 0x2c, 0xee, 0x63, 0xee, 0xe2, 0xef, 0x5d, 0xf1, 0xa1, 0xf3, 0xb9, 0xf2, + 0x99, 0xf2, 0x68, 0xf6, 0x65, 0xf7, 0x49, 0xfa, 0x61, 0xfd, 0x84, 0xfe, 0x71, 0x00, 0x3b, 0x05, + 0x94, 0x07, 0xad, 0x0a, 0xd3, 0x0c, 0xc6, 0x0e, 0xf4, 0x0f, 0xd4, 0x0d, 0x40, 0x0c, 0x16, 0x0c, + 0x09, 0x09, 0x58, 0x08, 0x7e, 0x09, 0xda, 0x07, 0x0a, 0x07, 0xfb, 0x05, 0x8e, 0x06, 0x26, 0x07, + 0x92, 0x06, 0xac, 0x04, 0xc7, 0x02, 0x73, 0xfd, 0xb3, 0xf9, 0xdc, 0xf8, 0x2c, 0xf7, 0x90, 0xf5, + 0xee, 0xf5, 0xc4, 0xf6, 0x14, 0xf7, 0x71, 0xfa, 0x75, 0xfd, 0xf7, 0xfd, 0xcf, 0x00, 0xb5, 0x05, + 0xc1, 0x03, 0x66, 0x04, 0x7c, 0x06, 0x00, 0x06, 0xe8, 0x08, 0x1d, 0x07, 0x79, 0x04, 0xeb, 0x05, + 0x3b, 0x06, 0xdd, 0x05, 0xd9, 0x08, 0x4a, 0x09, 0x60, 0x07, 0xa9, 0x05, 0x0d, 0x06, 0x29, 0x07, + 0x46, 0x06, 0xe0, 0x02, 0xc5, 0xff, 0x1e, 0xfa, 0x71, 0xf8, 0x62, 0xf8, 0xdd, 0xf8, 0x0e, 0xf9, + 0xa2, 0xf7, 0xc2, 0xf9, 0x4f, 0xfa, 0xdf, 0xfb, 0xf1, 0xfe, 0xff, 0x00, 0x80, 0x00, 0x53, 0x01, + 0xa8, 0x01, 0x69, 0x01, 0x23, 0x04, 0xa1, 0x03, 0x57, 0x05, 0x89, 0x05, 0x66, 0x04, 0xf2, 0x04, + 0xd8, 0x01, 0x7b, 0xfe, 0xeb, 0xff, 0x51, 0x00, 0xbd, 0xfe, 0x46, 0xfd, 0xa9, 0xfc, 0x43, 0xfe, + 0x93, 0xfc, 0xf1, 0xfa, 0x2b, 0xfb, 0xd6, 0xf9, 0xd1, 0xf8, 0x26, 0xf9, 0xd7, 0xf7, 0x79, 0xf7, + 0xc1, 0xf6, 0x79, 0xf7, 0xb3, 0xf8, 0xc3, 0xf8, 0xba, 0xf9, 0x40, 0xfb, 0xe5, 0xfa, 0x06, 0xfe, + 0xdc, 0xff, 0x6a, 0x00, 0xaa, 0x02, 0x1c, 0x01, 0xc3, 0x02, 0x22, 0x04, 0xdc, 0x02, 0x49, 0x02, + 0xe7, 0x01, 0x8e, 0xfe, 0x34, 0xfd, 0x3d, 0xfe, 0x33, 0xfc, 0xbc, 0xfa, 0x72, 0xfb, 0xd5, 0xfd, + 0xd8, 0xff, 0x6e, 0x01, 0xd4, 0x01, 0x30, 0x01, 0x21, 0x01, 0x9d, 0x02, 0xd4, 0x02, 0x54, 0x06, + 0xc7, 0x05, 0xc2, 0x05, 0x5a, 0x09, 0xd5, 0x09, 0xe1, 0x0c, 0x00, 0x10, 0xb6, 0x0f, 0xbc, 0x0e, + 0xea, 0x11, 0x5e, 0x12, 0xee, 0x13, 0x9e, 0x13, 0x40, 0x13, 0x90, 0x13, 0x93, 0x10, 0x95, 0x0d, + 0x8d, 0x0b, 0x28, 0x06, 0x57, 0x04, 0xcd, 0x03, 0x71, 0x01, 0x84, 0xff, 0x5e, 0xfc, 0xcb, 0xfb, + 0x9c, 0xfa, 0x18, 0xf8, 0xaa, 0xf5, 0x08, 0xf5, 0x4b, 0xf3, 0x11, 0xef, 0x12, 0xed, 0x0f, 0xed, + 0x25, 0xec, 0x10, 0xeb, 0x07, 0xec, 0xba, 0xeb, 0x96, 0xed, 0xfd, 0xf0, 0xcf, 0xf0, 0xc2, 0xf1, + 0xee, 0xf5, 0xf0, 0xf5, 0xff, 0xf7, 0xbb, 0xf9, 0x23, 0xfb, 0x38, 0x00, 0xda, 0x00, 0x48, 0xff, + 0x0d, 0x00, 0x8b, 0x00, 0xb4, 0x00, 0x9f, 0x03, 0xdb, 0x05, 0x74, 0x05, 0x09, 0x04, 0xbf, 0x04, + 0x19, 0x07, 0x80, 0x08, 0xdf, 0x07, 0x77, 0x06, 0xd7, 0x00, 0x8b, 0xfd, 0x47, 0xfb, 0x28, 0xfc, + 0x1e, 0xfc, 0x86, 0xf9, 0xc3, 0xf9, 0xe6, 0xf8, 0xbb, 0xfa, 0x9e, 0xfe, 0xb6, 0x00, 0x1c, 0x01, + 0xcd, 0x02, 0x31, 0x03, 0xd5, 0x02, 0x25, 0x04, 0xdf, 0x03, 0x1c, 0x05, 0x54, 0x05, 0x50, 0x04, + 0x9b, 0x04, 0x58, 0x05, 0x58, 0x04, 0xdb, 0x05, 0x78, 0x07, 0x65, 0x09, 0x01, 0x09, 0x1e, 0x08, + 0xb3, 0x09, 0x3b, 0x09, 0x4a, 0x07, 0x84, 0x05, 0xb9, 0x03, 0x92, 0x00, 0xb3, 0xfe, 0xd7, 0xfe, + 0x59, 0xfe, 0xfb, 0xfc, 0x0f, 0xfe, 0x2a, 0x00, 0x16, 0x01, 0xef, 0x01, 0xb0, 0x02, 0x49, 0x01, + 0x97, 0x02, 0xa4, 0x03, 0x61, 0x03, 0x36, 0x05, 0xb5, 0x04, 0x37, 0x06, 0xf0, 0x06, 0xac, 0x05, + 0xac, 0x04, 0xc4, 0x04, 0x4a, 0x01, 0x54, 0xfc, 0xaf, 0xfb, 0x89, 0xf9, 0x7a, 0xf6, 0x25, 0xf5, + 0x84, 0xf4, 0xef, 0xf2, 0xad, 0xf3, 0x23, 0xf4, 0x15, 0xf2, 0x79, 0xf1, 0x0f, 0xf2, 0x3a, 0xf1, + 0x34, 0xf3, 0xba, 0xf2, 0x56, 0xf1, 0x99, 0xf3, 0xa6, 0xf4, 0xa3, 0xf5, 0xd5, 0xf8, 0x33, 0xfc, + 0x10, 0xfe, 0xaf, 0x01, 0xae, 0x05, 0x16, 0x0a, 0x67, 0x0c, 0x61, 0x0d, 0xac, 0x0f, 0xaa, 0x10, + 0x49, 0x0e, 0x0a, 0x0e, 0x19, 0x0a, 0x58, 0x05, 0x5e, 0x04, 0x0c, 0x04, 0x22, 0x02, 0x04, 0x00, + 0xda, 0x00, 0x21, 0x01, 0x7c, 0x02, 0xd9, 0x00, 0x16, 0x01, 0x63, 0x01, 0xad, 0xfe, 0x59, 0xfc, + 0xac, 0xfb, 0xa1, 0xfa, 0xfe, 0xf9, 0xdb, 0xfb, 0xf4, 0xfb, 0x16, 0xfe, 0xb4, 0x02, 0xa2, 0x04, + 0x9c, 0x03, 0xd5, 0x06, 0x44, 0x07, 0x5a, 0x08, 0x46, 0x0a, 0x79, 0x0a, 0xc4, 0x0b, 0x21, 0x0c, + 0x66, 0x0a, 0xfe, 0x07, 0x5d, 0x07, 0x6a, 0x05, 0xab, 0x05, 0x4c, 0x07, 0xb5, 0x06, 0x04, 0x05, + 0xeb, 0x02, 0x83, 0x03, 0x85, 0x04, 0x1f, 0x02, 0x79, 0x00, 0xe3, 0xfd, 0x48, 0xfa, 0xd5, 0xf6, + 0xdb, 0xf7, 0xad, 0xf9, 0xc5, 0xf8, 0xd3, 0xf8, 0xc0, 0xf7, 0x74, 0xf7, 0x03, 0xf9, 0xb1, 0xfc, + 0xd1, 0xfb, 0xce, 0xf9, 0xae, 0xf9, 0x5c, 0xf9, 0xc8, 0xfa, 0x19, 0xfb, 0x7e, 0xfc, 0x0a, 0xfe, + 0xa9, 0xfd, 0x28, 0xfe, 0x6c, 0xfd, 0xd2, 0xfa, 0x0a, 0xfc, 0x4d, 0xfd, 0xe0, 0xfd, 0x58, 0xfd, + 0xe9, 0xfd, 0xca, 0x00, 0xb3, 0x02, 0x22, 0x02, 0x52, 0x02, 0xd7, 0x01, 0x6d, 0xff, 0x6d, 0xfc, + 0xf6, 0xfa, 0xd9, 0xfa, 0xf7, 0xfa, 0x61, 0xfa, 0x94, 0xfa, 0xad, 0xfc, 0x08, 0xfd, 0xa4, 0xfd, + 0x94, 0xfa, 0x66, 0xfa, 0x5c, 0xfc, 0x35, 0xfc, 0xca, 0xfe, 0xfa, 0xfe, 0xee, 0xfe, 0x5c, 0x00, + 0xcd, 0xff, 0xfa, 0xfc, 0x7e, 0xfd, 0x60, 0xfd, 0x0f, 0xfb, 0xb3, 0xfb, 0x39, 0xfc, 0x64, 0xfc, + 0xa0, 0xfc, 0xaf, 0xfd, 0x83, 0xfe, 0x8f, 0xff, 0x02, 0x01, 0x81, 0x01, 0x38, 0xff, 0x3e, 0xff, + 0x84, 0xfe, 0x9b, 0xff, 0x14, 0x00, 0xcb, 0xfe, 0xb9, 0x00, 0x54, 0x02, 0xa2, 0x02, 0xb9, 0x04, + 0x8e, 0x07, 0xe3, 0x07, 0x02, 0x0d, 0xd0, 0x0f, 0xc3, 0x11, 0x7c, 0x14, 0x3a, 0x14, 0x03, 0x15, + 0xfc, 0x15, 0xcd, 0x12, 0xb5, 0x12, 0x7b, 0x10, 0x01, 0x0b, 0x8c, 0x07, 0x09, 0x06, 0x87, 0x05, + 0xbe, 0x05, 0x91, 0x04, 0xae, 0x02, 0xd5, 0x01, 0xcf, 0xfe, 0x15, 0xfc, 0x86, 0xfa, 0x92, 0xf7, + 0x70, 0xf3, 0x85, 0xf1, 0x60, 0xef, 0x83, 0xec, 0xa4, 0xeb, 0x91, 0xeb, 0x8c, 0xea, 0x33, 0xec, + 0xf4, 0xee, 0x06, 0xef, 0x92, 0xf3, 0x18, 0xf6, 0xd0, 0xf8, 0x35, 0xfc, 0xdb, 0xfc, 0xeb, 0xfe, + 0xcb, 0x00, 0xaa, 0xfe, 0x9c, 0xfd, 0x68, 0xfe, 0x22, 0xfc, 0xec, 0xfb, 0x00, 0xfe, 0xf5, 0xff, + 0x37, 0x01, 0x0d, 0x01, 0x4f, 0x02, 0xda, 0x05, 0xcc, 0x05, 0x95, 0x05, 0xea, 0x03, 0xe0, 0x02, + 0x8c, 0xff, 0xf2, 0xfd, 0xcc, 0xfe, 0xd6, 0xfd, 0x6c, 0xfe, 0x99, 0xfe, 0x1f, 0xff, 0xa9, 0x00, + 0x47, 0x06, 0xfa, 0x08, 0x0a, 0x0b, 0x17, 0x0c, 0x25, 0x0a, 0xf4, 0x0a, 0x39, 0x0b, 0xc3, 0x0a, + 0x67, 0x09, 0x57, 0x07, 0x7e, 0x05, 0x88, 0x05, 0x98, 0x03, 0x2d, 0x04, 0xed, 0x05, 0xa0, 0x08, + 0x5a, 0x0a, 0x7d, 0x09, 0xf4, 0x0a, 0x91, 0x0c, 0x5e, 0x0a, 0xce, 0x06, 0xa1, 0x04, 0x5b, 0x03, + 0x82, 0x01, 0xae, 0x00, 0x89, 0x01, 0xd8, 0x01, 0x33, 0x01, 0x50, 0x02, 0x57, 0x03, 0x76, 0x03, + 0xb1, 0x06, 0x15, 0x05, 0xd3, 0x02, 0xf2, 0x01, 0x11, 0x00, 0xdd, 0x00, 0xc8, 0xff, 0xb0, 0xfd, + 0x14, 0xfc, 0x92, 0xfa, 0xb3, 0xf7, 0x89, 0xf7, 0x1d, 0xf8, 0xe3, 0xf5, 0x7c, 0xf5, 0x41, 0xf6, + 0xc8, 0xf5, 0x21, 0xf6, 0x38, 0xf7, 0x43, 0xf7, 0xa6, 0xf5, 0x55, 0xf6, 0x71, 0xf7, 0x82, 0xf7, + 0x4d, 0xf9, 0x73, 0xf7, 0x3f, 0xf7, 0x88, 0xf7, 0x64, 0xf7, 0xde, 0xf8, 0xd0, 0xfa, 0x44, 0xfb, + 0xd3, 0xfc, 0xb1, 0xfe, 0x7d, 0xfe, 0xbb, 0x00, 0x79, 0x02, 0x71, 0x05, 0xfb, 0x07, 0xa9, 0x06, + 0x6f, 0x06, 0x3d, 0x07, 0x47, 0x04, 0x85, 0x02, 0xb2, 0x01, 0x31, 0xff, 0xa4, 0xfc, 0x4c, 0xfd, + 0xdf, 0xfe, 0x99, 0xff, 0xa1, 0x01, 0x76, 0x01, 0xed, 0x00, 0xb5, 0xff, 0x50, 0xff, 0x48, 0x00, + 0xbf, 0x00, 0x47, 0xfd, 0xec, 0xfb, 0xc1, 0xfa, 0x6a, 0xf8, 0x1b, 0xf9, 0x18, 0xfa, 0xc9, 0xf9, + 0x1b, 0xfc, 0xc6, 0xff, 0x20, 0xff, 0x00, 0x02, 0xe8, 0x03, 0x9e, 0x05, 0x33, 0x07, 0x9c, 0x06, + 0x42, 0x07, 0x71, 0x07, 0x61, 0x06, 0x4b, 0x05, 0x5d, 0x06, 0x3a, 0x06, 0x2a, 0x06, 0x47, 0x07, + 0x99, 0x07, 0x75, 0x08, 0xe2, 0x07, 0x0c, 0x07, 0x8f, 0x07, 0xb6, 0x07, 0x88, 0x06, 0x08, 0x04, + 0x7a, 0x02, 0x61, 0xfd, 0x27, 0xfb, 0x83, 0xfc, 0xab, 0xfb, 0x64, 0xfb, 0x52, 0xfb, 0xad, 0xfa, + 0x73, 0xf9, 0x40, 0xfa, 0x9f, 0xf9, 0x52, 0xfa, 0x8b, 0xfa, 0xa2, 0xf9, 0xd8, 0xf9, 0x29, 0xfa, + 0x4d, 0xfb, 0x31, 0xfb, 0xcc, 0xf8, 0x9b, 0xf7, 0x0b, 0xf9, 0x16, 0xf9, 0x6f, 0xf8, 0xaf, 0xf8, + 0x7f, 0xfa, 0x44, 0xfb, 0xd4, 0xfa, 0xff, 0xfb, 0x7e, 0xfe, 0x8b, 0xfe, 0x07, 0xfe, 0x89, 0xfd, + 0xf2, 0xfd, 0xb7, 0xfe, 0x24, 0xff, 0x7b, 0x00, 0x61, 0x01, 0x34, 0x02, 0xc1, 0x02, 0xaf, 0x03, + 0x24, 0x04, 0x88, 0x07, 0xfe, 0x07, 0x12, 0x08, 0x2a, 0x08, 0x5d, 0x06, 0x17, 0x06, 0xff, 0x05, + 0xf0, 0x04, 0xe4, 0x02, 0x9d, 0x02, 0x51, 0x00, 0x80, 0xff, 0x87, 0x00, 0x25, 0xff, 0x2e, 0xfd, + 0x6e, 0xfe, 0x6e, 0xff, 0x8f, 0xff, 0xb2, 0x00, 0x4d, 0x01, 0x01, 0x01, 0x1c, 0x01, 0xc9, 0x00, + 0x28, 0x01, 0x2a, 0x02, 0xd0, 0x01, 0xa7, 0x03, 0xa4, 0x03, 0xcf, 0x03, 0x4e, 0x06, 0x4c, 0x08, + 0x5c, 0x08, 0xc5, 0x08, 0xcc, 0x0a, 0xe7, 0x0a, 0xff, 0x0b, 0xdd, 0x0c, 0x1a, 0x0d, 0xd9, 0x0d, + 0x42, 0x0c, 0x68, 0x0a, 0x29, 0x0a, 0x88, 0x08, 0x69, 0x06, 0x92, 0x05, 0x38, 0x03, 0xfc, 0xfe, + 0xb8, 0xfe, 0xf7, 0xfe, 0xee, 0xfe, 0x1e, 0x00, 0xde, 0xff, 0x51, 0xff, 0x25, 0xfe, 0x89, 0xfb, + 0x98, 0xfa, 0x99, 0xfc, 0xbf, 0xfa, 0x90, 0xf8, 0xe0, 0xf6, 0x2a, 0xf4, 0x35, 0xf3, 0xca, 0xf2, + 0x97, 0xf0, 0xa1, 0xf0, 0x92, 0xf3, 0xc4, 0xf2, 0x25, 0xf3, 0x64, 0xf3, 0x7c, 0xf4, 0x4c, 0xf6, + 0xf6, 0xf5, 0xb4, 0xf5, 0xc3, 0xf7, 0x52, 0xf8, 0x52, 0xf6, 0xcb, 0xf6, 0x29, 0xf6, 0xe6, 0xf4, + 0x1e, 0xf7, 0x5b, 0xf9, 0x1d, 0xfc, 0xf7, 0xfe, 0xd1, 0x00, 0xfa, 0x02, 0xa1, 0x04, 0x37, 0x06, + 0x67, 0x06, 0x81, 0x07, 0x27, 0x05, 0x84, 0x02, 0x1a, 0x02, 0x69, 0x00, 0xd4, 0xff, 0xc5, 0xfe, + 0x57, 0xfe, 0xf1, 0xfc, 0xbf, 0xfe, 0xe5, 0xff, 0x84, 0x01, 0xe4, 0x02, 0x8a, 0x03, 0x1e, 0x04, + 0xef, 0x03, 0x34, 0x05, 0xa0, 0x05, 0x6f, 0x04, 0xfb, 0x01, 0x6b, 0x01, 0xc3, 0x01, 0x9e, 0x02, + 0xd1, 0x03, 0x5c, 0x06, 0x83, 0x07, 0x2b, 0x07, 0xd7, 0x07, 0x29, 0x0a, 0xbd, 0x0a, 0x5f, 0x09, + 0xa5, 0x07, 0xc5, 0x06, 0x98, 0x05, 0x48, 0x04, 0x65, 0x04, 0x6e, 0x04, 0x14, 0x03, 0xc5, 0x01, + 0x9f, 0x02, 0xab, 0x02, 0xc4, 0x04, 0x18, 0x04, 0x80, 0x01, 0xed, 0xff, 0xed, 0xfd, 0x3a, 0xfd, + 0x96, 0xfd, 0x74, 0xfd, 0x16, 0xfd, 0x26, 0xfd, 0xd3, 0xfa, 0xf5, 0xf8, 0x8d, 0xf9, 0xa5, 0xf9, + 0x7b, 0xf7, 0x9c, 0xf7, 0xf2, 0xf7, 0xde, 0xf7, 0x1c, 0xf8, 0x16, 0xf8, 0x67, 0xf6, 0x2b, 0xf6, + 0x97, 0xf6, 0x62, 0xf7, 0xe7, 0xf8, 0x91, 0xf8, 0xf3, 0xf9, 0xe7, 0xf9, 0x21, 0xf9, 0x0f, 0xfa, + 0xd7, 0xfc, 0xb4, 0xfd, 0x4e, 0xfe, 0xd7, 0xff, 0x8f, 0x00, 0x19, 0x03, 0x30, 0x06, 0x20, 0x08, + 0x65, 0x0a, 0xae, 0x0a, 0x70, 0x09, 0x22, 0x0a, 0x97, 0x09, 0xfc, 0x07, 0xe8, 0x07, 0xcc, 0x06, + 0xe0, 0x02, 0x02, 0x01, 0x16, 0x01, 0x36, 0x01, 0x2c, 0x01, 0x02, 0x02, 0x0f, 0x03, 0x5f, 0x03, + 0xac, 0x02, 0xba, 0x00, 0x90, 0x01, 0x10, 0x00, 0xf3, 0xfe, 0x53, 0xfe, 0x98, 0xfc, 0x22, 0xfd, + 0xb3, 0xfe, 0x4d, 0xfe, 0x8e, 0xfe, 0x30, 0x01, 0xe7, 0x01, 0xe4, 0x02, 0xcb, 0x03, 0x49, 0x05, + 0xd2, 0x06, 0x86, 0x06, 0xf4, 0x04, 0x24, 0x05, 0x95, 0x05, 0xb8, 0x02, 0xa7, 0x02, 0x90, 0x02, + 0x57, 0x00, 0x12, 0x01, 0xcc, 0x02, 0x93, 0x04, 0xd0, 0x05, 0x5a, 0x06, 0x57, 0x07, 0x5f, 0x08, + 0x3b, 0x08, 0xc4, 0x06, 0x99, 0x07, 0xf1, 0x06, 0xdc, 0x04, 0x02, 0x04, 0x1f, 0x02, 0x12, 0x00, + 0x7c, 0xff, 0x6b, 0xff, 0xa8, 0xfc, 0x6d, 0xfc, 0x8d, 0xfb, 0x6f, 0xfb, 0x50, 0xfa, 0x77, 0xf8, + 0x3f, 0xf8, 0x00, 0xf8, 0xc1, 0xf7, 0xaa, 0xf7, 0xad, 0xf6, 0xda, 0xf4, 0x89, 0xf3, 0xdd, 0xf2, + 0x0a, 0xf2, 0xb3, 0xf0, 0x05, 0xf2, 0x85, 0xf2, 0xfa, 0xf2, 0x0a, 0xf4, 0xf9, 0xf7, 0x88, 0xfb, + 0xae, 0xfc, 0xae, 0xfc, 0x68, 0xfd, 0xb6, 0xfd, 0x3e, 0xfe, 0x27, 0x00, 0xbd, 0x00, 0x95, 0xff, + 0x50, 0xfe, 0xca, 0xfe, 0xbb, 0xfd, 0x4d, 0x00, 0xf5, 0x01, 0x72, 0x01, 0xf2, 0x00, 0x6f, 0x00, + 0x3f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x9c, 0xff, 0xef, 0x00, 0xfe, 0xff, 0x69, 0xfe, 0xc9, 0xfd, + 0xa3, 0xfe, 0x01, 0xfd, 0x87, 0xfd, 0xaf, 0xff, 0x6e, 0x00, 0x60, 0x01, 0x86, 0x03, 0xa9, 0x03, + 0xc4, 0x04, 0x83, 0x04, 0xf1, 0x04, 0x3e, 0x07, 0x49, 0x05, 0xc3, 0x04, 0xf4, 0x04, 0xe7, 0x03, + 0x0f, 0x03, 0x66, 0x05, 0x31, 0x06, 0x4e, 0x06, 0x27, 0x08, 0x68, 0x07, 0x0b, 0x07, 0x00, 0x08, + 0x98, 0x07, 0xdd, 0x07, 0xb7, 0x07, 0x88, 0x07, 0x03, 0x09, 0x7e, 0x08, 0x93, 0x06, 0x0c, 0x06, + 0x75, 0x05, 0x02, 0x03, 0x39, 0x01, 0xee, 0x00, 0x98, 0x00, 0x7c, 0xff, 0x3f, 0x00, 0xc3, 0x00, + 0x5a, 0x00, 0x21, 0xff, 0x7f, 0xfc, 0x06, 0xfc, 0x4d, 0xfa, 0xbf, 0xf8, 0x9d, 0xf8, 0xd3, 0xf6, + 0xaa, 0xf4, 0xe5, 0xf4, 0xb4, 0xf4, 0x42, 0xf5, 0xc3, 0xf7, 0xfc, 0xf7, 0x36, 0xf8, 0xfc, 0xf8, + 0xcc, 0xf9, 0x55, 0xfc, 0x86, 0xfd, 0x45, 0xfc, 0x69, 0xfc, 0xc4, 0xfd, 0x30, 0xfc, 0x69, 0xfc, + 0xe8, 0xfd, 0xb8, 0xfc, 0xc4, 0xfb, 0x73, 0xfc, 0x04, 0xfe, 0x8e, 0xff, 0xa9, 0x00, 0x74, 0x01, + 0xb3, 0x02, 0x32, 0x04, 0xac, 0x04, 0xb9, 0x05, 0x9b, 0x05, 0xc7, 0x03, 0x37, 0x02, 0x76, 0x00, + 0x44, 0xfe, 0x20, 0xff, 0x3c, 0x01, 0xc5, 0x00, 0xea, 0x02, 0xe6, 0x03, 0x4f, 0x05, 0x76, 0x06, + 0x5c, 0x06, 0x90, 0x06, 0x41, 0x07, 0x0d, 0x08, 0xa0, 0x08, 0x0b, 0x08, 0x94, 0x06, 0xe5, 0x04, + 0x45, 0x04, 0xfd, 0x03, 0x07, 0x02, 0x82, 0x02, 0xca, 0x03, 0xab, 0x04, 0x10, 0x05, 0x1f, 0x07, + 0xb2, 0x09, 0xd2, 0x0a, 0x94, 0x0a, 0x34, 0x0a, 0x06, 0x09, 0xfe, 0x07, 0xc8, 0x07, 0x4e, 0x08, + 0x20, 0x07, 0x91, 0x04, 0xd1, 0x04, 0x05, 0x03, 0x77, 0x03, 0x5d, 0x04, 0x79, 0x03, 0x93, 0x02, + 0x90, 0x00, 0xcb, 0xfe, 0x5a, 0xfe, 0x6c, 0xfd, 0xed, 0xfa, 0xb8, 0xfa, 0x6e, 0xfa, 0xb0, 0xf9, + 0x0b, 0xf8, 0xc9, 0xf6, 0x35, 0xf4, 0xc1, 0xf1, 0x19, 0xf1, 0x8b, 0xf1, 0x71, 0xf1, 0xe8, 0xf3, + 0x68, 0xf4, 0xe7, 0xf5, 0x64, 0xf7, 0xf6, 0xf6, 0x8d, 0xf9, 0x61, 0xf9, 0x05, 0xf9, 0xed, 0xf9, + 0xc8, 0xf8, 0x1a, 0xf8, 0x9d, 0xfa, 0x5a, 0xfa, 0x56, 0xfa, 0x1f, 0xfd, 0xcb, 0xfd, 0x88, 0xfd, + 0x1a, 0xff, 0x93, 0xfe, 0x53, 0x00, 0x16, 0x01, 0xce, 0x00, 0x2d, 0x02, 0xa5, 0x02, 0xc5, 0x01, + 0xcc, 0x00, 0xbb, 0x00, 0x02, 0xff, 0x0d, 0xfe, 0x4f, 0xfe, 0x09, 0x00, 0x97, 0xff, 0x84, 0xff, + 0x47, 0x01, 0xc5, 0x02, 0x3a, 0x05, 0xd4, 0x04, 0xe0, 0x05, 0x4d, 0x06, 0x3f, 0x04, 0x26, 0x00, + 0x9e, 0xfd, 0x37, 0xfb, 0xf1, 0xfc, 0x4b, 0xfe, 0x4f, 0x01, 0xe8, 0x05, 0xcd, 0x07, 0x39, 0x07, + 0x71, 0x03, 0x04, 0x04, 0x7e, 0x05, 0x6a, 0x05, 0xdf, 0x04, 0x7d, 0x03, 0xa1, 0x08, 0xe4, 0x08, + 0x17, 0x08, 0x8d, 0x07, 0xbc, 0x04, 0x54, 0x07, 0xc7, 0x06, 0x5c, 0x07, 0x08, 0x06, 0xaa, 0x08, + 0x06, 0x07, 0x4b, 0x04, 0x4e, 0x03, 0x2d, 0xfb, 0x7f, 0xfa, 0xf2, 0xf8, 0x36, 0xf1, 0xcb, 0xf0, + 0xad, 0xee, 0x9f, 0xf1, 0xdf, 0xed, 0x18, 0xe8, 0x8a, 0xe7, 0x0c, 0xe6, 0x32, 0xea, 0x7b, 0xf0, + 0xb1, 0xf1, 0x71, 0xf8, 0x25, 0xf8, 0xd4, 0xfc, 0x66, 0xff, 0x4c, 0x00, 0xbd, 0x05, 0x68, 0x09, + 0x97, 0x09, 0xb2, 0x0d, 0x89, 0x12, 0x54, 0x16, 0xac, 0x17, 0x26, 0x16, 0x78, 0x1a, 0xe9, 0x18, + 0x61, 0x1a, 0xb2, 0x1a, 0xa4, 0x19, 0xae, 0x14, 0x12, 0x12, 0x14, 0x0f, 0xa9, 0x09, 0x8c, 0x01, + 0xd1, 0xfa, 0x00, 0xf6, 0x8e, 0xef, 0x5f, 0xf0, 0xbb, 0xf2, 0x7a, 0xf5, 0xf3, 0xf6, 0x10, 0xf5, + 0x85, 0xf7, 0x59, 0xf6, 0x4d, 0xf4, 0x1d, 0xf6, 0x51, 0xf9, 0x1b, 0xf9, 0x68, 0xfe, 0x8e, 0xff, + 0x4c, 0xff, 0x22, 0xff, 0x8a, 0x00, 0xc2, 0x03, 0x0f, 0x01, 0xd0, 0x01, 0x10, 0x04, 0x9f, 0x02, + 0xca, 0x00, 0xf6, 0xfd, 0xb2, 0xff, 0x3d, 0xff, 0x7d, 0xf3, 0xaf, 0xf1, 0x1c, 0xe8, 0x30, 0xe4, + 0x2f, 0xea, 0xc9, 0xeb, 0xd5, 0xee, 0x4e, 0xef, 0x24, 0xf2, 0x13, 0xf5, 0x8b, 0xf5, 0x77, 0xf9, + 0x78, 0xfd, 0x3c, 0x02, 0x8b, 0x03, 0xd8, 0x04, 0xd9, 0x08, 0x49, 0x08, 0x5f, 0x0a, 0x8c, 0x0f, + 0x44, 0x10, 0xaf, 0x10, 0x25, 0x11, 0xb4, 0x14, 0xef, 0x0d, 0x0a, 0x0b, 0x88, 0x08, 0x3b, 0x06, + 0x8a, 0x02, 0x4e, 0xf7, 0x32, 0xf4, 0xe9, 0xeb, 0x76, 0xea, 0xa7, 0xee, 0xb2, 0xee, 0x24, 0xf2, + 0x92, 0xf1, 0xd8, 0xf4, 0xe1, 0xf4, 0x66, 0xf1, 0x68, 0xf6, 0x8a, 0xf9, 0xc8, 0xfd, 0xf9, 0x04, + 0x12, 0x09, 0x34, 0x0f, 0x56, 0x13, 0xff, 0x15, 0x24, 0x1d, 0xba, 0x22, 0x86, 0x22, 0x8f, 0x2a, + 0x0c, 0x2b, 0xa8, 0x25, 0xc8, 0x25, 0x86, 0x20, 0x61, 0x1d, 0xa3, 0x11, 0x63, 0x08, 0xc8, 0x01, + 0xf0, 0xf7, 0xe0, 0xf7, 0xb6, 0xf7, 0x64, 0xf6, 0x2f, 0xf4, 0xae, 0xf2, 0x2c, 0xf3, 0x4c, 0xf1, + 0x0c, 0xee, 0xb8, 0xee, 0xc9, 0xee, 0xbc, 0xed, 0x16, 0xf4, 0x9c, 0xf6, 0x17, 0xf9, 0x84, 0xfc, + 0x63, 0xff, 0x9c, 0x03, 0x13, 0x06, 0x8f, 0x07, 0x77, 0x0e, 0x7c, 0x0e, 0x07, 0x11, 0x69, 0x0f, + 0x2c, 0x11, 0x08, 0x0f, 0x84, 0x01, 0xbc, 0xfd, 0x44, 0xf1, 0x6d, 0xeb, 0x38, 0xf1, 0x17, 0xef, + 0xe6, 0xf5, 0x4b, 0xf1, 0x0d, 0xf2, 0x03, 0xf7, 0xdb, 0xf0, 0x51, 0xf3, 0x8f, 0xf3, 0xf8, 0xf6, + 0x3f, 0xfa, 0x3b, 0xfb, 0x10, 0x00, 0x13, 0x02, 0xc5, 0x04, 0xd2, 0x04, 0x1c, 0x09, 0x01, 0x0c, + 0xda, 0x10, 0xae, 0x17, 0xf5, 0x13, 0x22, 0x17, 0x5c, 0x13, 0x39, 0x13, 0x38, 0x0f, 0xb8, 0x02, + 0x00, 0xfe, 0xb4, 0xf1, 0xc8, 0xec, 0xac, 0xee, 0xfa, 0xec, 0xc2, 0xf0, 0xe4, 0xea, 0x94, 0xea, + 0x37, 0xe9, 0x17, 0xe7, 0x55, 0xe9, 0xc6, 0xec, 0x61, 0xf2, 0x25, 0xf4, 0xc6, 0xf9, 0xa0, 0xfb, + 0xb8, 0xfc, 0xe4, 0x00, 0xa9, 0x00, 0xf5, 0x03, 0x3f, 0x03, 0x99, 0x07, 0xb2, 0x0a, 0x9b, 0x07, + 0x5b, 0x0a, 0x3b, 0x09, 0xbb, 0x0a, 0x23, 0x04, 0x34, 0xfa, 0xb4, 0xf6, 0x3f, 0xed, 0xc8, 0xec, + 0xe3, 0xee, 0x86, 0xf1, 0xc2, 0xf1, 0x55, 0xef, 0x63, 0xf2, 0x73, 0xee, 0x7f, 0xed, 0x9e, 0xf0, + 0xa6, 0xf4, 0x6d, 0xfb, 0x37, 0xfe, 0xf3, 0x03, 0xbe, 0x08, 0x23, 0x0c, 0x37, 0x10, 0x3f, 0x12, + 0xac, 0x15, 0x0e, 0x16, 0x6a, 0x1c, 0xe9, 0x19, 0x78, 0x18, 0xf4, 0x14, 0x28, 0x13, 0x7a, 0x12, + 0xb3, 0x06, 0x3d, 0xff, 0xc2, 0xf3, 0x30, 0xec, 0x85, 0xee, 0x24, 0xee, 0xe3, 0xf4, 0x5a, 0xf0, + 0x5e, 0xef, 0xb4, 0xf2, 0xc6, 0xeb, 0x81, 0xee, 0xf4, 0xf0, 0xa1, 0xf3, 0x8a, 0xf8, 0x96, 0xfc, + 0x96, 0x01, 0x60, 0x06, 0x77, 0x0b, 0x91, 0x0d, 0xb1, 0x13, 0x9e, 0x15, 0x2b, 0x1b, 0xaf, 0x21, + 0x6e, 0x20, 0x9a, 0x20, 0xe0, 0x1d, 0xec, 0x1c, 0x5f, 0x18, 0x2b, 0x0b, 0x2f, 0x04, 0x08, 0xf9, + 0x43, 0xf6, 0x3a, 0xf7, 0x7c, 0xf7, 0xd3, 0xfa, 0x3e, 0xf5, 0x60, 0xf7, 0x51, 0xf7, 0xa8, 0xf6, + 0x4f, 0xf7, 0x4b, 0xfa, 0xef, 0xfe, 0x02, 0x01, 0x17, 0x06, 0xb2, 0x08, 0xe2, 0x0a, 0xea, 0x0e, + 0x3f, 0x11, 0x95, 0x17, 0x18, 0x16, 0xe3, 0x1a, 0x2c, 0x20, 0x36, 0x1d, 0x1f, 0x1a, 0xa2, 0x14, + 0x12, 0x14, 0xfe, 0x09, 0x58, 0xfd, 0x2e, 0xf4, 0x65, 0xe5, 0x44, 0xe4, 0xbe, 0xe1, 0x73, 0xe4, + 0xaf, 0xe6, 0xa1, 0xe4, 0xb0, 0xe8, 0xec, 0xe6, 0xa9, 0xe6, 0xa6, 0xe7, 0x95, 0xea, 0x5b, 0xef, + 0xce, 0xf1, 0x84, 0xf8, 0x9f, 0xfc, 0xc1, 0x00, 0xe8, 0x04, 0x76, 0x0a, 0x1b, 0x0a, 0x4a, 0x0b, + 0x28, 0x12, 0xdb, 0x13, 0xc1, 0x16, 0x41, 0x11, 0x31, 0x10, 0x7b, 0x11, 0x72, 0x04, 0x3f, 0xfd, + 0x69, 0xf2, 0x02, 0xea, 0x87, 0xea, 0x63, 0xe9, 0xd6, 0xee, 0xb9, 0xea, 0xb9, 0xea, 0xa0, 0xec, + 0xc7, 0xe9, 0xbd, 0xec, 0x99, 0xf0, 0x84, 0xf4, 0xfa, 0xf7, 0x67, 0xfd, 0x14, 0x02, 0x91, 0x08, + 0xe5, 0x0d, 0xd0, 0x11, 0xdc, 0x16, 0x11, 0x13, 0x66, 0x18, 0x8f, 0x1b, 0x7a, 0x18, 0xcc, 0x17, + 0x42, 0x12, 0xc3, 0x10, 0x9a, 0x0c, 0xc4, 0x00, 0x4f, 0xf8, 0x24, 0xec, 0x0c, 0xe9, 0x76, 0xe6, + 0x05, 0xe8, 0x16, 0xeb, 0xdd, 0xe5, 0x50, 0xe8, 0x44, 0xe7, 0x9c, 0xe5, 0xec, 0xe2, 0xcc, 0xe5, + 0x21, 0xeb, 0xc9, 0xee, 0xcb, 0xf6, 0xaa, 0xfc, 0x3e, 0x03, 0xd3, 0x06, 0xd4, 0x0c, 0xe1, 0x13, + 0x37, 0x14, 0xd4, 0x18, 0xe9, 0x1d, 0xf0, 0x1f, 0x3a, 0x1c, 0x1a, 0x18, 0xf1, 0x1a, 0x06, 0x13, + 0xf4, 0x07, 0x1b, 0x00, 0xfd, 0xf9, 0x22, 0xf9, 0xbf, 0xf6, 0x31, 0xfd, 0xa1, 0xfb, 0x8f, 0xf9, + 0x06, 0xfb, 0xd6, 0xf8, 0xc0, 0xf7, 0xce, 0xf7, 0x99, 0xf7, 0xb7, 0xf8, 0x5c, 0xfb, 0xc8, 0xfe, + 0xbd, 0x01, 0x79, 0x06, 0x34, 0x08, 0x02, 0x0d, 0x33, 0x0e, 0x7a, 0x11, 0xea, 0x14, 0xe5, 0x16, + 0x91, 0x1a, 0x47, 0x12, 0x89, 0x11, 0xf2, 0x12, 0x5c, 0x05, 0x8b, 0xfe, 0x9f, 0xf2, 0xa4, 0xe8, + 0x5a, 0xe9, 0x2c, 0xe8, 0xd5, 0xed, 0x44, 0xeb, 0xd6, 0xe7, 0x35, 0xeb, 0x1c, 0xe8, 0x58, 0xe7, + 0xe5, 0xe9, 0xe2, 0xee, 0x12, 0xf3, 0x78, 0xf7, 0x89, 0xfb, 0x7c, 0x06, 0x4c, 0x08, 0x90, 0x0b, + 0x8e, 0x13, 0x65, 0x10, 0xc1, 0x17, 0xf9, 0x1d, 0x3a, 0x21, 0x87, 0x23, 0x04, 0x1f, 0x0a, 0x1f, + 0x3a, 0x1b, 0x44, 0x11, 0xb0, 0x0c, 0xd6, 0xff, 0xb4, 0xfb, 0x01, 0xf7, 0x88, 0xf7, 0x9f, 0xf7, + 0x74, 0xf3, 0x8d, 0xf4, 0x4a, 0xf3, 0x8f, 0xf1, 0xee, 0xed, 0x88, 0xf1, 0xc9, 0xf3, 0x4a, 0xf5, + 0xbc, 0xf8, 0x00, 0xfb, 0x73, 0xff, 0x99, 0x03, 0x9b, 0x09, 0x00, 0x0d, 0xa1, 0x0d, 0x04, 0x0e, + 0xbe, 0x0e, 0x14, 0x13, 0xa1, 0x0f, 0x05, 0x0d, 0x9e, 0x10, 0xa9, 0x0c, 0x9c, 0x06, 0x87, 0xfb, + 0x15, 0xf5, 0x25, 0xf2, 0x91, 0xed, 0xcb, 0xf1, 0xff, 0xed, 0x2f, 0xeb, 0x79, 0xee, 0x65, 0xeb, + 0x92, 0xeb, 0x4b, 0xeb, 0xdf, 0xeb, 0x54, 0xf1, 0xa3, 0xf2, 0x86, 0xf6, 0xed, 0xfe, 0x1d, 0x04, + 0x7d, 0x07, 0xc6, 0x0d, 0x4f, 0x0f, 0xf1, 0x11, 0x3f, 0x15, 0x88, 0x19, 0x2b, 0x1d, 0xc0, 0x18, + 0x82, 0x18, 0x06, 0x1a, 0x7c, 0x11, 0x57, 0x0d, 0x74, 0xff, 0xb4, 0xf8, 0xe6, 0xf6, 0x46, 0xf4, + 0xbd, 0xfa, 0x59, 0xf6, 0xce, 0xf4, 0x37, 0xf9, 0x88, 0xf4, 0x33, 0xf0, 0x5d, 0xf1, 0x3a, 0xf1, + 0x48, 0xf5, 0x5e, 0xf7, 0xf1, 0xf8, 0xe4, 0x03, 0x5a, 0x05, 0x07, 0x07, 0xf9, 0x0d, 0x05, 0x0b, + 0x34, 0x0e, 0x6f, 0x0f, 0x40, 0x11, 0x20, 0x15, 0x0b, 0x11, 0x57, 0x11, 0xfe, 0x0d, 0x0b, 0x03, + 0xc7, 0xf8, 0xe5, 0xec, 0xa2, 0xe6, 0xfa, 0xe3, 0xa9, 0xe4, 0x3f, 0xe7, 0x59, 0xe5, 0x0c, 0xe4, + 0xc4, 0xe7, 0x2f, 0xe7, 0x5a, 0xe3, 0xf1, 0xe7, 0xb4, 0xe8, 0xad, 0xea, 0x04, 0xef, 0xab, 0xf2, + 0xda, 0xf7, 0x2a, 0xfb, 0xcd, 0x00, 0x63, 0x02, 0x93, 0x05, 0xb0, 0x07, 0x16, 0x0d, 0xd2, 0x12, + 0x56, 0x13, 0x7e, 0x12, 0x13, 0x14, 0xc1, 0x0e, 0x69, 0x08, 0x66, 0xff, 0xa3, 0xf7, 0x56, 0xf2, + 0x53, 0xf1, 0x61, 0xf4, 0x7f, 0xf0, 0x08, 0xf0, 0xb6, 0xf0, 0x17, 0xf0, 0x08, 0xf0, 0x39, 0xef, + 0x8d, 0xf0, 0x78, 0xf6, 0xbe, 0xf7, 0xfe, 0xf9, 0x58, 0xff, 0x81, 0x01, 0x1a, 0x05, 0xdd, 0x08, + 0xc3, 0x08, 0x7c, 0x0f, 0xbe, 0x11, 0x18, 0x16, 0xcb, 0x1d, 0x37, 0x19, 0xc4, 0x1a, 0x7e, 0x19, + 0xaa, 0x14, 0x2e, 0x0e, 0x0a, 0x02, 0x0b, 0xfd, 0xa2, 0xf8, 0xa6, 0xf7, 0xf9, 0xfc, 0x0f, 0xf9, + 0x43, 0xf5, 0x4f, 0xf7, 0x57, 0xf6, 0xad, 0xf3, 0x24, 0xf6, 0xe3, 0xf6, 0xe6, 0xfd, 0xf1, 0x02, + 0x70, 0x03, 0x4b, 0x0e, 0xe1, 0x0e, 0x28, 0x15, 0x17, 0x1b, 0x3e, 0x1b, 0xfe, 0x1e, 0xfb, 0x21, + 0xcf, 0x23, 0x8c, 0x24, 0x91, 0x1f, 0x6c, 0x1f, 0x60, 0x1c, 0x52, 0x15, 0x9b, 0x0c, 0xdd, 0x00, + 0x8e, 0xfc, 0xd8, 0xf7, 0x65, 0xf6, 0x8f, 0xf7, 0x29, 0xf3, 0x6d, 0xed, 0x2f, 0xf0, 0xa2, 0xee, + 0x20, 0xeb, 0x8e, 0xeb, 0xfc, 0xe9, 0xf5, 0xea, 0x54, 0xec, 0x7f, 0xef, 0x92, 0xf4, 0x1c, 0xf9, + 0xd8, 0xff, 0x4a, 0x03, 0x18, 0x06, 0xe1, 0x08, 0x9c, 0x0b, 0x26, 0x11, 0x2b, 0x0f, 0x53, 0x0b, + 0x24, 0x0d, 0xb1, 0x0a, 0xa8, 0x06, 0x5e, 0xfd, 0x9a, 0xf7, 0x29, 0xf3, 0x91, 0xef, 0xaf, 0xf3, + 0xd4, 0xf2, 0x05, 0xf0, 0x7b, 0xef, 0xc1, 0xef, 0xe1, 0xee, 0x52, 0xef, 0x1c, 0xf0, 0xd0, 0xee, + 0xd4, 0xf0, 0x79, 0xf2, 0x40, 0xf8, 0xbf, 0xfa, 0x1c, 0x04, 0x98, 0x0a, 0xa8, 0x0a, 0x7d, 0x0e, + 0xfa, 0x0f, 0x5c, 0x15, 0x38, 0x1c, 0x75, 0x18, 0xc7, 0x1b, 0x1c, 0x1c, 0xc0, 0x16, 0xa2, 0x0f, + 0xdb, 0x03, 0x6e, 0xfd, 0x03, 0xf4, 0x00, 0xf1, 0x78, 0xf4, 0xf3, 0xf5, 0x38, 0xf1, 0x26, 0xf2, + 0x75, 0xf2, 0x06, 0xf1, 0xc0, 0xf0, 0x62, 0xee, 0xce, 0xf3, 0x8b, 0xf5, 0x07, 0xf8, 0xb3, 0xff, + 0x87, 0x02, 0xf8, 0x09, 0xe8, 0x0b, 0x05, 0x0b, 0x2d, 0x0d, 0xf9, 0x0f, 0xed, 0x14, 0x6f, 0x19, + 0x1c, 0x17, 0xb8, 0x17, 0x60, 0x17, 0xa1, 0x11, 0xea, 0x0a, 0xa1, 0x01, 0x12, 0xfa, 0xf8, 0xf4, + 0xe9, 0xf2, 0x89, 0xf3, 0xa8, 0xf2, 0x07, 0xef, 0xdc, 0xee, 0x99, 0xed, 0xca, 0xeb, 0x9c, 0xec, + 0x62, 0xed, 0xb1, 0xf2, 0x41, 0xf3, 0x3c, 0xf9, 0x73, 0xfa, 0xa8, 0xfd, 0x38, 0x04, 0xec, 0x04, + 0x88, 0x06, 0xf4, 0x07, 0xef, 0x0a, 0xba, 0x11, 0x7a, 0x13, 0x37, 0x11, 0x64, 0x11, 0x0d, 0x11, + 0x64, 0x0b, 0x01, 0xff, 0x0a, 0xfc, 0x98, 0xf5, 0xe3, 0xf0, 0x99, 0xf2, 0xca, 0xf2, 0x4f, 0xed, + 0x19, 0xec, 0x4e, 0xeb, 0x98, 0xe6, 0x79, 0xe7, 0xbd, 0xe4, 0x44, 0xe9, 0xb4, 0xec, 0x53, 0xec, + 0x45, 0xf3, 0x54, 0xf6, 0xf5, 0xfe, 0x9a, 0x03, 0x97, 0x06, 0xa0, 0x09, 0x6e, 0x08, 0x69, 0x10, + 0x0d, 0x18, 0xa1, 0x17, 0xc7, 0x19, 0xed, 0x17, 0xbe, 0x14, 0xfd, 0x0e, 0xc5, 0x05, 0x96, 0xfe, + 0xb6, 0xfa, 0xe1, 0xf7, 0xb5, 0xf9, 0xe5, 0xf9, 0x97, 0xf4, 0xfa, 0xf6, 0xae, 0xf7, 0xc0, 0xf4, + 0x8a, 0xf7, 0x83, 0xf6, 0xa3, 0xfb, 0x3d, 0xfc, 0x96, 0xfd, 0xea, 0x01, 0xb3, 0x04, 0xd9, 0x0a, + 0x84, 0x0f, 0x48, 0x15, 0xe3, 0x15, 0x61, 0x16, 0xfc, 0x1a, 0xb4, 0x1e, 0xc2, 0x1a, 0xf7, 0x18, + 0xf9, 0x16, 0xf6, 0x11, 0x2f, 0x08, 0xb0, 0xfe, 0x68, 0xf5, 0xb1, 0xef, 0xbe, 0xec, 0x73, 0xeb, + 0x9f, 0xe9, 0x7f, 0xe4, 0x3e, 0xe6, 0x21, 0xe7, 0x54, 0xe5, 0xa4, 0xe5, 0x5e, 0xe7, 0xc2, 0xe9, + 0xe6, 0xe8, 0x94, 0xef, 0x07, 0xf0, 0x48, 0xf3, 0x05, 0xfa, 0x37, 0xfd, 0x16, 0x03, 0xd2, 0x04, + 0xfa, 0x07, 0xfa, 0x10, 0x98, 0x14, 0xad, 0x15, 0x42, 0x15, 0xca, 0x15, 0xbd, 0x12, 0x13, 0x0a, + 0x41, 0x05, 0x6f, 0xff, 0xc4, 0xf9, 0x16, 0xfb, 0x18, 0xfa, 0xd5, 0xf5, 0x85, 0xf8, 0x6c, 0xfa, + 0x34, 0xfa, 0x28, 0xfd, 0xe5, 0xf8, 0xa0, 0xfc, 0xfa, 0xfc, 0x05, 0xfd, 0x7f, 0x05, 0x8e, 0x07, + 0x6e, 0x0e, 0x75, 0x11, 0xed, 0x14, 0xab, 0x16, 0xf2, 0x13, 0xf8, 0x15, 0xbf, 0x1c, 0x91, 0x1d, + 0xcc, 0x1d, 0x76, 0x1e, 0x44, 0x1d, 0x92, 0x16, 0x87, 0x0b, 0xf6, 0x00, 0x1d, 0xf9, 0xe5, 0xf2, + 0x5a, 0xf4, 0x31, 0xf5, 0x43, 0xef, 0x55, 0xf0, 0x27, 0xef, 0xe3, 0xec, 0x45, 0xed, 0xed, 0xea, + 0x26, 0xf0, 0xd4, 0xf0, 0x70, 0xf4, 0xa5, 0xf9, 0xbd, 0xfd, 0x93, 0x03, 0xb2, 0x08, 0x3b, 0x0c, + 0x7c, 0x0c, 0x62, 0x0f, 0x1e, 0x12, 0x90, 0x14, 0x99, 0x15, 0xb2, 0x13, 0xce, 0x13, 0xb5, 0x0f, + 0xe0, 0x07, 0x14, 0xff, 0xd8, 0xf6, 0xb5, 0xf2, 0x29, 0xf2, 0xe8, 0xf4, 0x71, 0xf3, 0x34, 0xed, + 0x68, 0xee, 0xf2, 0xed, 0xd2, 0xec, 0xad, 0xea, 0x61, 0xed, 0xc7, 0xef, 0xcc, 0xee, 0x75, 0xf5, + 0xc2, 0xf6, 0x1f, 0xfe, 0xc2, 0x00, 0x7e, 0x02, 0x8a, 0x07, 0x4f, 0x06, 0xc5, 0x09, 0xba, 0x10, + 0x18, 0x13, 0xf0, 0x12, 0xf5, 0x0f, 0x14, 0x0f, 0x60, 0x0a, 0x8a, 0xff, 0xb6, 0xf7, 0x4b, 0xf2, + 0x07, 0xec, 0x32, 0xee, 0xbb, 0xf1, 0x33, 0xed, 0x52, 0xef, 0x45, 0xef, 0x28, 0xee, 0x89, 0xef, + 0xeb, 0xec, 0xed, 0xf2, 0x16, 0xf1, 0x85, 0xf4, 0xb5, 0xf9, 0xe3, 0xf9, 0x06, 0x04, 0xd3, 0x07, + 0x16, 0x0a, 0x68, 0x0e, 0x35, 0x0d, 0x82, 0x12, 0xfa, 0x19, 0xf5, 0x1a, 0x60, 0x1a, 0x92, 0x1b, + 0x24, 0x18, 0x4f, 0x14, 0x2a, 0x0d, 0x15, 0x04, 0xe9, 0xfd, 0x79, 0xf7, 0xc0, 0xf7, 0x2f, 0xf8, + 0x7e, 0xf2, 0xcf, 0xf2, 0x5e, 0xf3, 0x17, 0xf6, 0xa8, 0xf6, 0x09, 0xf7, 0x7e, 0xfd, 0x05, 0xfd, + 0x59, 0xff, 0x3c, 0x02, 0x0b, 0x06, 0x30, 0x0a, 0xa9, 0x0d, 0x3b, 0x0f, 0xc5, 0x0d, 0xc3, 0x0e, + 0x34, 0x12, 0xfc, 0x16, 0x2a, 0x17, 0x68, 0x11, 0x8f, 0x11, 0x0c, 0x0c, 0x3c, 0x05, 0x36, 0xfd, + 0xd8, 0xf3, 0xe1, 0xec, 0x19, 0xea, 0x2a, 0xea, 0x07, 0xe6, 0xde, 0xdf, 0x62, 0xde, 0xf6, 0xdd, + 0xfb, 0xe0, 0xa2, 0xe0, 0xcd, 0xe5, 0x2b, 0xe8, 0xf8, 0xea, 0xdb, 0xf1, 0x3c, 0xf2, 0x45, 0xf7, + 0x4e, 0xfb, 0x6d, 0x01, 0x97, 0x06, 0xca, 0x05, 0xfb, 0x08, 0x27, 0x0b, 0x53, 0x0e, 0x84, 0x10, + 0x7c, 0x0f, 0x7f, 0x13, 0x06, 0x15, 0x7d, 0x0d, 0x44, 0x07, 0x48, 0x03, 0x6a, 0xf6, 0x56, 0xf7, + 0xa0, 0xfa, 0xa1, 0xf6, 0xbf, 0xfa, 0xa6, 0xf9, 0x0b, 0xfc, 0xb0, 0xfc, 0xf9, 0xf7, 0x66, 0xfb, + 0x19, 0xf9, 0x6b, 0xfc, 0xc7, 0xfe, 0x45, 0x00, 0x58, 0x09, 0xa9, 0x0e, 0xe0, 0x11, 0xf0, 0x11, + 0xcf, 0x0c, 0x96, 0x0d, 0x24, 0x14, 0x4f, 0x15, 0x11, 0x16, 0x7e, 0x17, 0xcf, 0x12, 0x7a, 0x0e, + 0xa5, 0x05, 0x82, 0xfd, 0xc0, 0xf7, 0x7e, 0xf0, 0x9a, 0xf1, 0xb3, 0xf2, 0xd3, 0xef, 0x47, 0xf2, + 0xb4, 0xf0, 0xba, 0xf4, 0x1a, 0xf3, 0x54, 0xf5, 0x6d, 0xf8, 0xe1, 0xfa, 0x13, 0xff, 0x7b, 0x01, + 0x5f, 0x05, 0x72, 0x0a, 0xf1, 0x0f, 0x34, 0x14, 0x89, 0x14, 0xd0, 0x17, 0x77, 0x1a, 0x1d, 0x21, + 0xbf, 0x22, 0x9c, 0x1e, 0x38, 0x21, 0x48, 0x1b, 0xa3, 0x12, 0x8a, 0x07, 0x35, 0xfe, 0xd6, 0xf7, + 0xe6, 0xf3, 0x70, 0xf5, 0x84, 0xf3, 0xb0, 0xee, 0x1b, 0xec, 0x84, 0xeb, 0x12, 0xec, 0x2e, 0xe7, + 0x1f, 0xed, 0xb0, 0xec, 0xc0, 0xef, 0xf4, 0xf2, 0x0d, 0xf1, 0xc6, 0xf5, 0xdf, 0xf6, 0x33, 0xfa, + 0x51, 0xfc, 0x9a, 0xfc, 0x8d, 0xff, 0x20, 0x03, 0xb7, 0x08, 0xff, 0x0a, 0xe1, 0x0a, 0x30, 0x0c, + 0x5a, 0x0b, 0xdf, 0x05, 0x67, 0xfe, 0xca, 0xf9, 0x6b, 0xef, 0xdc, 0xf0, 0x18, 0xf2, 0x96, 0xed, + 0x51, 0xf2, 0xf9, 0xef, 0xb9, 0xf4, 0x1c, 0xf4, 0xea, 0xf2, 0x45, 0xf8, 0x91, 0xf6, 0xf1, 0xfa, + 0x82, 0xfd, 0x12, 0xfe, 0x8d, 0x05, 0xce, 0x08, 0xd6, 0x0d, 0x1b, 0x10, 0x4e, 0x0d, 0x54, 0x0d, + 0xd4, 0x12, 0x5b, 0x15, 0xed, 0x15, 0x61, 0x17, 0xd0, 0x17, 0xc1, 0x17, 0x62, 0x0e, 0xf4, 0x07, + 0x70, 0x01, 0x21, 0xf9, 0xe4, 0xfa, 0x5a, 0xfa, 0x83, 0xf4, 0x73, 0xf4, 0x81, 0xf0, 0x4c, 0xf4, + 0xf1, 0xef, 0xb0, 0xf1, 0x75, 0xf3, 0xfe, 0xf5, 0xc2, 0xf9, 0xaf, 0xfa, 0xf6, 0xfd, 0x22, 0xff, + 0x08, 0x03, 0xa3, 0x07, 0xc6, 0x08, 0xf6, 0x0b, 0x9d, 0x0d, 0xd5, 0x10, 0x29, 0x13, 0x11, 0x11, + 0x74, 0x10, 0x42, 0x0d, 0x96, 0x09, 0x25, 0x00, 0x72, 0xfa, 0xf1, 0xf4, 0xe3, 0xf2, 0x58, 0xf5, + 0x2a, 0xf1, 0x9b, 0xed, 0xba, 0xe9, 0x03, 0xec, 0x85, 0xec, 0x90, 0xea, 0xf1, 0xef, 0x38, 0xee, + 0x4e, 0xf0, 0x78, 0xf0, 0xc8, 0xf1, 0x19, 0xf9, 0x8f, 0xfc, 0x02, 0x04, 0x9d, 0x08, 0xa9, 0x08, + 0x15, 0x07, 0x69, 0x0a, 0xff, 0x0f, 0x27, 0x11, 0x1f, 0x12, 0xc1, 0x12, 0xa1, 0x15, 0x03, 0x11, + 0x11, 0x09, 0xce, 0x02, 0x8a, 0xf7, 0x8c, 0xf6, 0xa7, 0xf7, 0x3e, 0xf5, 0xf0, 0xf8, 0x25, 0xf6, + 0xad, 0xf9, 0xf0, 0xf5, 0xc4, 0xf4, 0x5e, 0xf7, 0xa1, 0xf3, 0xab, 0xf4, 0x23, 0xf6, 0x84, 0xf4, + 0x61, 0xf9, 0x0d, 0xfe, 0x22, 0x01, 0x60, 0x03, 0xd7, 0x02, 0x27, 0x01, 0xf4, 0x07, 0x29, 0x0b, + 0xa8, 0x0a, 0x11, 0x0e, 0x59, 0x0f, 0x9f, 0x0f, 0xe0, 0x09, 0x3b, 0x04, 0x06, 0xfd, 0x97, 0xf4, + 0xa8, 0xf6, 0x28, 0xf5, 0xf2, 0xf4, 0x38, 0xf5, 0xf6, 0xf3, 0x09, 0xfa, 0xd9, 0xf5, 0x9b, 0xf8, + 0x60, 0xfa, 0x44, 0xff, 0x26, 0x05, 0x2f, 0x08, 0xd5, 0x0e, 0xaa, 0x0e, 0x36, 0x12, 0x2e, 0x14, + 0x35, 0x13, 0xe8, 0x15, 0xe2, 0x15, 0x0a, 0x1c, 0x86, 0x1f, 0xef, 0x1f, 0x2a, 0x21, 0x96, 0x1f, + 0x6d, 0x19, 0x3d, 0x0e, 0x4b, 0x07, 0x3f, 0xfd, 0xbe, 0xf9, 0x1c, 0xfa, 0x17, 0xf5, 0x9d, 0xf1, + 0x09, 0xe9, 0xbc, 0xe9, 0xbb, 0xe5, 0x14, 0xe3, 0x48, 0xe8, 0xaa, 0xe5, 0xa2, 0xea, 0xd8, 0xeb, + 0xca, 0xec, 0xc1, 0xf0, 0x7b, 0xf2, 0x47, 0xf9, 0x95, 0xfc, 0x5b, 0xfc, 0x27, 0xfc, 0x6d, 0xff, + 0xc7, 0x03, 0x78, 0x06, 0x73, 0x08, 0x7a, 0x09, 0x49, 0x0e, 0x27, 0x0b, 0xee, 0x05, 0xaa, 0x03, + 0x7f, 0xf8, 0x21, 0xf7, 0x60, 0xf8, 0x2c, 0xf8, 0xa4, 0xf9, 0x74, 0xf6, 0x6d, 0xfa, 0xdc, 0xf8, + 0xc9, 0xf9, 0xda, 0xfc, 0x3b, 0xfd, 0x2c, 0x00, 0x6b, 0x00, 0xda, 0xff, 0x81, 0x04, 0xdd, 0x08, + 0x3a, 0x0e, 0x82, 0x11, 0xae, 0x11, 0x54, 0x0f, 0x79, 0x17, 0x85, 0x18, 0xf5, 0x18, 0x1f, 0x1b, + 0x00, 0x19, 0x34, 0x17, 0xb3, 0x0f, 0x91, 0x09, 0x3b, 0x02, 0x9a, 0xf9, 0x07, 0xfc, 0xe3, 0xf8, + 0xcd, 0xf6, 0x7a, 0xf2, 0x7c, 0xf0, 0xdf, 0xf2, 0x70, 0xef, 0xd9, 0xf2, 0x92, 0xf1, 0x97, 0xf5, + 0xec, 0xf8, 0xa7, 0xfa, 0xc0, 0xfd, 0x62, 0xfe, 0x46, 0x03, 0xaf, 0x06, 0xad, 0x09, 0x6f, 0x0d, + 0x58, 0x0e, 0xb1, 0x12, 0x75, 0x15, 0x23, 0x15, 0xbd, 0x15, 0x1f, 0x17, 0xc3, 0x10, 0xc9, 0x07, + 0x91, 0x01, 0x36, 0xf6, 0xdd, 0xf1, 0x1d, 0xee, 0xa8, 0xec, 0xde, 0xea, 0x8b, 0xe4, 0xcc, 0xe8, + 0xd4, 0xe6, 0xd1, 0xe4, 0x98, 0xe7, 0x90, 0xe5, 0x8c, 0xe7, 0x14, 0xe9, 0x0a, 0xeb, 0xca, 0xee, + 0x33, 0xf2, 0xfc, 0xf9, 0x50, 0xfd, 0xb1, 0xfd, 0xce, 0xfd, 0x32, 0x02, 0xf5, 0x05, 0x5d, 0x08, + 0x67, 0x09, 0xb8, 0x0b, 0x42, 0x10, 0x92, 0x0d, 0x30, 0x0a, 0x50, 0x05, 0xd2, 0xf7, 0x8f, 0xf6, + 0x4a, 0xf3, 0xf6, 0xf1, 0xaa, 0xf1, 0x74, 0xee, 0x37, 0xf1, 0xad, 0xf0, 0x7c, 0xf2, 0xd0, 0xf4, + 0x72, 0xf6, 0xe8, 0xf6, 0x4e, 0xf7, 0x0e, 0xf9, 0x2d, 0xfc, 0x85, 0x03, 0x39, 0x09, 0x7a, 0x0c, + 0xd6, 0x0d, 0x2d, 0x09, 0xaa, 0x0f, 0x2c, 0x11, 0x53, 0x14, 0xa5, 0x17, 0xaf, 0x19, 0xa1, 0x1c, + 0x98, 0x15, 0x80, 0x0f, 0x8e, 0x06, 0x09, 0xfe, 0xa2, 0xff, 0x32, 0x00, 0x2e, 0x00, 0x68, 0xfb, + 0xa9, 0xfb, 0x15, 0xf9, 0xb5, 0xf4, 0x7d, 0xf5, 0x11, 0xf4, 0x35, 0xfb, 0x94, 0xff, 0x90, 0x04, + 0x73, 0x09, 0xe9, 0x08, 0xe5, 0x0c, 0xb7, 0x0f, 0xe9, 0x11, 0x51, 0x12, 0xdc, 0x13, 0x99, 0x17, + 0xb3, 0x19, 0xf3, 0x1a, 0x0e, 0x1b, 0xe7, 0x19, 0xd7, 0x13, 0xd9, 0x0b, 0x96, 0x03, 0xd5, 0xf7, + 0x39, 0xf4, 0xa5, 0xef, 0x8a, 0xf0, 0xda, 0xec, 0xe5, 0xe5, 0x33, 0xe9, 0x45, 0xe5, 0x05, 0xe4, + 0xf7, 0xe6, 0x66, 0xe4, 0x8c, 0xe7, 0x5e, 0xe9, 0x24, 0xea, 0xa9, 0xef, 0x7e, 0xf3, 0xa2, 0xfa, + 0x95, 0xff, 0x2a, 0x02, 0x60, 0x01, 0xe5, 0x04, 0x2b, 0x0b, 0xd5, 0x0f, 0xe9, 0x10, 0x79, 0x12, + 0x26, 0x16, 0x7c, 0x13, 0x5f, 0x11, 0x38, 0x0d, 0xac, 0x02, 0xfc, 0x01, 0x87, 0xfe, 0x94, 0xff, + 0xe0, 0xfc, 0x8d, 0xfa, 0x8f, 0xfc, 0x9f, 0xfa, 0xa8, 0xfb, 0x6b, 0xff, 0x54, 0x01, 0xcf, 0x01, + 0x0b, 0x02, 0xd6, 0x01, 0x7a, 0x00, 0x8e, 0x04, 0xf2, 0x06, 0x72, 0x09, 0x2f, 0x0b, 0x5f, 0x08, + 0x30, 0x0c, 0xdd, 0x0c, 0xfd, 0x0e, 0xd3, 0x0e, 0xfb, 0x0f, 0x61, 0x10, 0xeb, 0x09, 0x14, 0x05, + 0x96, 0xfb, 0x39, 0xf3, 0xa3, 0xf2, 0x52, 0xf1, 0x44, 0xee, 0x1a, 0xeb, 0x35, 0xec, 0x11, 0xec, + 0x65, 0xeb, 0xbd, 0xeb, 0xf8, 0xec, 0x7b, 0xf4, 0x56, 0xf8, 0x0b, 0xfe, 0xea, 0x02, 0x92, 0x03, + 0x8d, 0x07, 0x71, 0x0b, 0x5a, 0x0f, 0x25, 0x11, 0xea, 0x10, 0xb1, 0x12, 0xe3, 0x15, 0xc4, 0x17, + 0x5f, 0x1a, 0xf0, 0x1d, 0x17, 0x1b, 0xfe, 0x14, 0x79, 0x0e, 0xf0, 0x02, 0xaa, 0xfd, 0x44, 0xf8, + 0xb2, 0xf8, 0x8f, 0xf3, 0xd4, 0xed, 0x92, 0xef, 0xb7, 0xeb, 0xa1, 0xea, 0x4a, 0xed, 0x1d, 0xec, + 0x16, 0xef, 0x4e, 0xf0, 0x3f, 0xf1, 0x33, 0xf2, 0x32, 0xf4, 0x70, 0xfa, 0x19, 0xff, 0x94, 0x00, + 0x86, 0xfe, 0xe7, 0xff, 0x24, 0x01, 0x52, 0x03, 0x26, 0x01, 0x2d, 0x02, 0x24, 0x07, 0x36, 0x05, + 0xab, 0x04, 0x76, 0xff, 0x49, 0xf6, 0x83, 0xf2, 0xef, 0xee, 0xab, 0xf0, 0x84, 0xed, 0x0f, 0xee, + 0x2d, 0xef, 0xfc, 0xef, 0xf9, 0xf1, 0xa0, 0xf3, 0x29, 0xf5, 0x31, 0xf6, 0xa8, 0xf8, 0x34, 0xfa, + 0xf1, 0xfc, 0x1b, 0x03, 0xb6, 0x05, 0xfb, 0x0a, 0xab, 0x0b, 0xfb, 0x07, 0x36, 0x0c, 0x88, 0x0f, + 0x18, 0x13, 0x59, 0x15, 0x9f, 0x18, 0xd5, 0x17, 0x04, 0x12, 0x5e, 0x0b, 0x6d, 0x01, 0x58, 0xfb, + 0x1f, 0xfa, 0x40, 0xfe, 0xcf, 0xfc, 0x87, 0xf9, 0x68, 0xfa, 0xe5, 0xf9, 0xc7, 0xf8, 0x42, 0xf9, + 0x40, 0xf8, 0xad, 0xfb, 0x8f, 0xfe, 0xfc, 0x03, 0x9d, 0x06, 0x26, 0x06, 0x62, 0x09, 0x5d, 0x0c, + 0x9d, 0x0f, 0x22, 0x10, 0x05, 0x0f, 0x9d, 0x10, 0x00, 0x13, 0x79, 0x12, 0xae, 0x14, 0x9e, 0x17, + 0x32, 0x14, 0xf1, 0x0d, 0x77, 0x05, 0x28, 0xfa, 0x43, 0xf3, 0xca, 0xec, 0x95, 0xef, 0xa2, 0xee, + 0x80, 0xea, 0x8a, 0xea, 0x26, 0xe9, 0xea, 0xe8, 0x6c, 0xe9, 0x2d, 0xe9, 0xc2, 0xed, 0xda, 0xf0, + 0x32, 0xf3, 0x12, 0xf4, 0x20, 0xf5, 0x68, 0xfa, 0x02, 0xff, 0xc1, 0x00, 0x1b, 0x02, 0xaa, 0x05, + 0x58, 0x0a, 0x1d, 0x0d, 0x7d, 0x0a, 0x68, 0x0b, 0x5f, 0x0f, 0x0d, 0x0d, 0xf7, 0x0e, 0x00, 0x0c, + 0x09, 0x04, 0x5f, 0xff, 0x33, 0xfe, 0xb2, 0xfd, 0x94, 0xfa, 0x27, 0xfa, 0x08, 0xf8, 0x6b, 0xf7, + 0x76, 0xf9, 0x06, 0xfc, 0x39, 0xff, 0x00, 0x01, 0x77, 0x00, 0x1c, 0x01, 0xcf, 0x01, 0x41, 0x04, + 0xbe, 0x06, 0x95, 0x0a, 0x34, 0x0a, 0x69, 0x07, 0x55, 0x07, 0xfa, 0x08, 0x0a, 0x0b, 0xa0, 0x0b, + 0x52, 0x0f, 0x49, 0x10, 0xf3, 0x0c, 0x6f, 0x06, 0xd3, 0xff, 0x71, 0xf9, 0x97, 0xf5, 0xb9, 0xf8, + 0xac, 0xf7, 0xd0, 0xf4, 0x4a, 0xf4, 0xe0, 0xf2, 0x2b, 0xf2, 0x6d, 0xf2, 0x62, 0xf2, 0xf6, 0xf6, + 0xc9, 0xfa, 0xde, 0xfe, 0x87, 0x02, 0x9e, 0x04, 0x9f, 0x07, 0x2f, 0x0d, 0x60, 0x11, 0x36, 0x12, + 0x9a, 0x10, 0xf5, 0x10, 0x38, 0x12, 0x39, 0x11, 0x35, 0x14, 0x61, 0x17, 0x73, 0x14, 0x86, 0x12, + 0x47, 0x0b, 0x5e, 0x02, 0xd2, 0xfa, 0x2f, 0xf4, 0xcc, 0xf4, 0x70, 0xf1, 0xbe, 0xec, 0x0a, 0xec, + 0x75, 0xeb, 0x37, 0xe9, 0xf8, 0xe8, 0x40, 0xe9, 0x82, 0xea, 0x98, 0xeb, 0x48, 0xeb, 0x68, 0xea, + 0xd2, 0xec, 0xdd, 0xf0, 0xbb, 0xf6, 0xce, 0xf9, 0xef, 0xfa, 0x5e, 0xfa, 0x0f, 0xfe, 0xc3, 0x01, + 0x5c, 0x00, 0x06, 0x02, 0x88, 0x05, 0xaf, 0x06, 0x66, 0x08, 0xa6, 0x04, 0xe1, 0xfd, 0xb9, 0xf7, + 0xf7, 0xf6, 0xc0, 0xf7, 0xb4, 0xf7, 0xa8, 0xf8, 0xe7, 0xf8, 0xf3, 0xfa, 0xf1, 0xf9, 0xf2, 0xfb, + 0x4b, 0xff, 0x94, 0x00, 0xfd, 0x02, 0x76, 0x05, 0xb2, 0x06, 0x0f, 0x08, 0x93, 0x09, 0xe9, 0x0c, + 0x19, 0x0e, 0x9c, 0x0a, 0x6b, 0x0b, 0x28, 0x0e, 0x0a, 0x10, 0x36, 0x12, 0xf7, 0x15, 0x01, 0x16, + 0x5f, 0x15, 0xcb, 0x0e, 0x46, 0x08, 0xaf, 0xfe, 0x9e, 0xf9, 0x2e, 0xfb, 0x2f, 0xf9, 0xf1, 0xf5, + 0xf6, 0xf5, 0x22, 0xf5, 0xc5, 0xf4, 0xd5, 0xf3, 0xbb, 0xf0, 0xe9, 0xf4, 0x8a, 0xf8, 0x6a, 0xfd, + 0x5e, 0x01, 0xbd, 0x02, 0xb3, 0x04, 0xdf, 0x08, 0xfa, 0x0b, 0x5a, 0x0e, 0x4c, 0x0b, 0x56, 0x0a, + 0xf1, 0x0c, 0x14, 0x0e, 0x37, 0x12, 0x67, 0x16, 0x43, 0x16, 0x45, 0x13, 0x60, 0x0b, 0xcc, 0x03, + 0x9a, 0xfc, 0x1a, 0xf8, 0xc8, 0xfa, 0x9c, 0xf7, 0xfd, 0xf1, 0x01, 0xf0, 0x03, 0xed, 0x6d, 0xea, + 0x95, 0xeb, 0xfe, 0xed, 0x05, 0xf2, 0x38, 0xf4, 0x46, 0xf5, 0x41, 0xf6, 0x1f, 0xf5, 0x0d, 0xf8, + 0xe4, 0xfd, 0xf8, 0x00, 0xeb, 0x03, 0x06, 0x05, 0x7a, 0x07, 0xba, 0x09, 0xa6, 0x07, 0x8f, 0x08, + 0x30, 0x0a, 0x1c, 0x0c, 0x90, 0x0a, 0x96, 0x08, 0x67, 0x01, 0xab, 0xf9, 0x82, 0xf8, 0xfb, 0xf7, + 0x26, 0xf7, 0x59, 0xf5, 0x88, 0xf3, 0xfb, 0xf2, 0x78, 0xf2, 0x99, 0xf3, 0x5c, 0xf4, 0xb6, 0xf5, + 0xed, 0xf7, 0x4c, 0xf9, 0x9b, 0xfb, 0x47, 0xfd, 0x63, 0xfe, 0x2f, 0x01, 0xc9, 0x05, 0xbe, 0x03, + 0x4b, 0x05, 0x46, 0x0a, 0x9f, 0x0b, 0xe6, 0x0e, 0x03, 0x12, 0x31, 0x13, 0x3f, 0x13, 0xc5, 0x0d, + 0x77, 0x09, 0x48, 0x00, 0xca, 0xfb, 0xdd, 0xfb, 0x9b, 0xfb, 0x33, 0xf9, 0x61, 0xf8, 0x6a, 0xfa, + 0x54, 0xfc, 0xc4, 0xfc, 0x75, 0xfc, 0x75, 0xfe, 0x22, 0xff, 0x55, 0x03, 0xa3, 0x06, 0xca, 0x06, + 0x10, 0x0a, 0x54, 0x0f, 0x56, 0x12, 0xd4, 0x16, 0x0c, 0x14, 0x95, 0x13, 0xed, 0x16, 0x13, 0x14, + 0xb0, 0x16, 0x6d, 0x19, 0x17, 0x1a, 0x52, 0x17, 0x58, 0x10, 0x63, 0x07, 0x49, 0xfc, 0xd6, 0xf4, + 0x23, 0xf2, 0xf8, 0xee, 0xe3, 0xe9, 0x36, 0xe6, 0x54, 0xe3, 0xa7, 0xe1, 0x63, 0xe1, 0x14, 0xe2, + 0x0c, 0xe5, 0x06, 0xe8, 0x3b, 0xe8, 0xe1, 0xe9, 0x5c, 0xe9, 0x5d, 0xed, 0x0c, 0xf3, 0x01, 0xf7, + 0x4c, 0xfa, 0x41, 0xfa, 0x6f, 0xfe, 0x54, 0x01, 0x05, 0x01, 0xb3, 0x02, 0x7a, 0x07, 0xc3, 0x0c, + 0x8d, 0x0c, 0x73, 0x0d, 0x1d, 0x06, 0xe8, 0xfd, 0x0c, 0xfd, 0x57, 0xfe, 0x30, 0xfe, 0x5c, 0xfd, + 0x82, 0xfb, 0x62, 0xf9, 0x79, 0xf8, 0xa5, 0xf9, 0x4f, 0xfb, 0x0a, 0xfe, 0x7a, 0x01, 0x65, 0x04, + 0x54, 0x06, 0xe4, 0x09, 0xe8, 0x0b, 0x93, 0x10, 0x94, 0x13, 0xe7, 0x0e, 0x1e, 0x0e, 0x2f, 0x0f, + 0x3b, 0x0d, 0xdb, 0x0f, 0x71, 0x11, 0x0d, 0x14, 0xe9, 0x14, 0x9c, 0x0e, 0xd1, 0x09, 0xb3, 0xff, + 0xf2, 0xf8, 0x95, 0xf6, 0x4e, 0xf6, 0x15, 0xf4, 0xa3, 0xf2, 0x88, 0xf0, 0x9f, 0xf0, 0x7f, 0xee, + 0x26, 0xeb, 0x7f, 0xeb, 0xf0, 0xed, 0x80, 0xf3, 0x2e, 0xf8, 0xda, 0xfa, 0x06, 0xff, 0x58, 0x04, + 0xd3, 0x08, 0x18, 0x0e, 0x8b, 0x0b, 0x23, 0x0e, 0x02, 0x12, 0xd7, 0x10, 0xe8, 0x14, 0x39, 0x17, + 0x29, 0x18, 0xbb, 0x14, 0xf9, 0x10, 0x6b, 0x0b, 0x2e, 0x03, 0xf7, 0xfd, 0xe9, 0xfc, 0x81, 0xfb, + 0x67, 0xf6, 0x5c, 0xf3, 0xe9, 0xef, 0xa9, 0xed, 0x01, 0xee, 0xbd, 0xed, 0x44, 0xf1, 0x97, 0xf2, + 0x95, 0xf3, 0x75, 0xf4, 0x58, 0xf2, 0x38, 0xf5, 0x79, 0xf8, 0x05, 0xfd, 0x0c, 0x00, 0xfc, 0xfe, + 0x22, 0x03, 0x53, 0x05, 0x28, 0x07, 0xfe, 0x06, 0x1f, 0x09, 0xae, 0x0b, 0xf3, 0x09, 0x84, 0x09, + 0x37, 0x00, 0x62, 0xf9, 0xa0, 0xf5, 0x05, 0xf6, 0x8d, 0xf6, 0xe3, 0xf4, 0xa8, 0xf2, 0xc6, 0xf1, + 0xa8, 0xf1, 0xdd, 0xf1, 0x4e, 0xf4, 0x30, 0xf8, 0xd7, 0xfb, 0x34, 0xff, 0x01, 0xff, 0x28, 0x00, + 0xa2, 0x00, 0xe9, 0x03, 0x8d, 0x09, 0xe6, 0x07, 0x8d, 0x08, 0x2b, 0x0b, 0x0c, 0x0a, 0xe5, 0x0c, + 0x0b, 0x0f, 0xc0, 0x13, 0x45, 0x15, 0xff, 0x13, 0xf2, 0x11, 0x12, 0x07, 0x66, 0x00, 0x81, 0xfd, + 0xd1, 0xfb, 0xaa, 0xf9, 0x83, 0xf8, 0x78, 0xf8, 0xa2, 0xfa, 0x61, 0xfa, 0x98, 0xf7, 0xb5, 0xf9, + 0x36, 0xfc, 0xd8, 0x00, 0x29, 0x05, 0x1a, 0x06, 0x44, 0x08, 0x61, 0x0b, 0xec, 0x0e, 0xbe, 0x13, + 0x88, 0x10, 0x15, 0x10, 0x9b, 0x0e, 0xb7, 0x0d, 0x6d, 0x0f, 0x54, 0x0f, 0x6c, 0x12, 0xab, 0x0f, + 0x6b, 0x0c, 0x33, 0x05, 0x71, 0xfd, 0x35, 0xf7, 0x26, 0xf5, 0x46, 0xf3, 0x7e, 0xed, 0xf2, 0xea, + 0xca, 0xe7, 0xe9, 0xe5, 0x17, 0xe6, 0x05, 0xe7, 0xfe, 0xea, 0x3d, 0xec, 0x79, 0xed, 0xf6, 0xef, + 0xf9, 0xf1, 0xe2, 0xf4, 0xcd, 0xf8, 0x85, 0xff, 0xb5, 0x01, 0x18, 0x01, 0x43, 0x04, 0x4e, 0x05, + 0x67, 0x07, 0x1a, 0x07, 0x26, 0x0a, 0xf7, 0x0c, 0x7e, 0x0d, 0x4b, 0x0c, 0xd0, 0x04, 0xfe, 0xfd, + 0x72, 0xfa, 0xc5, 0xfb, 0xc2, 0xfc, 0x41, 0xfb, 0x82, 0xfa, 0x33, 0xfa, 0x3e, 0xf9, 0x6a, 0xf9, + 0x8e, 0xfa, 0xbd, 0xfb, 0xd7, 0xfe, 0x40, 0x01, 0x53, 0x01, 0x2f, 0x05, 0xd4, 0x05, 0x96, 0x07, + 0x4d, 0x0d, 0x62, 0x0b, 0xb5, 0x0a, 0x52, 0x0b, 0xb1, 0x09, 0x38, 0x0b, 0xcb, 0x0a, 0x5a, 0x0f, + 0x87, 0x0f, 0x93, 0x0d, 0x5f, 0x09, 0x31, 0xfe, 0xe1, 0xf6, 0x28, 0xf3, 0x04, 0xf3, 0x6e, 0xf2, + 0x71, 0xf2, 0x30, 0xf2, 0xff, 0xf4, 0xca, 0xf3, 0xc1, 0xf0, 0xfd, 0xf3, 0x8c, 0xf5, 0x22, 0xfb, + 0xe8, 0x01, 0xda, 0x02, 0x7f, 0x05, 0xb8, 0x07, 0xa7, 0x0c, 0xf6, 0x11, 0xe1, 0x10, 0x8e, 0x13, + 0xc4, 0x13, 0xa6, 0x16, 0xe0, 0x15, 0x8f, 0x16, 0x52, 0x19, 0x52, 0x17, 0x0c, 0x15, 0x0a, 0x0e, + 0x93, 0x05, 0x7c, 0xfd, 0xee, 0xfa, 0xae, 0xf8, 0x9f, 0xf4, 0x49, 0xf1, 0xa4, 0xeb, 0x9d, 0xe9, + 0xc3, 0xe7, 0xf6, 0xe6, 0x16, 0xe9, 0x16, 0xea, 0x58, 0xed, 0xa1, 0xed, 0x59, 0xee, 0x17, 0xef, + 0x5b, 0xf1, 0x6c, 0xf6, 0x67, 0xf7, 0xe8, 0xf7, 0xc5, 0xf9, 0x87, 0xfb, 0x8b, 0xfe, 0x07, 0xfc, + 0xc3, 0xff, 0x02, 0x02, 0x28, 0x04, 0xeb, 0x04, 0x8a, 0xff, 0x64, 0xf9, 0x1e, 0xf6, 0x2c, 0xf8, + 0x9c, 0xf9, 0x5f, 0xf7, 0xf9, 0xf4, 0xd3, 0xf3, 0x96, 0xf3, 0x6d, 0xf4, 0xe3, 0xf6, 0xf1, 0xf9, + 0xd0, 0xfd, 0x31, 0x01, 0x3c, 0x01, 0x6c, 0x05, 0x4b, 0x07, 0x1c, 0x0c, 0xd9, 0x13, 0xf1, 0x11, + 0xba, 0x12, 0x76, 0x11, 0x5a, 0x10, 0x3e, 0x10, 0xf7, 0x10, 0x77, 0x16, 0x45, 0x17, 0x3a, 0x17, + 0x70, 0x14, 0xc7, 0x0c, 0x2a, 0x06, 0x75, 0x01, 0x7c, 0x00, 0xc4, 0xfe, 0xc5, 0xfd, 0x0d, 0xfb, + 0x89, 0xfb, 0x0b, 0xfa, 0xf8, 0xf5, 0xb0, 0xf5, 0x29, 0xf5, 0xd0, 0xfa, 0xb6, 0xfd, 0xb4, 0xfd, + 0x88, 0x00, 0x6b, 0x01, 0x59, 0x06, 0x25, 0x0b, 0xbe, 0x09, 0x01, 0x0c, 0x36, 0x0b, 0xaa, 0x0c, + 0x83, 0x0a, 0xc1, 0x0c, 0x42, 0x0f, 0x4d, 0x0f, 0xa3, 0x0d, 0x99, 0x09, 0x29, 0x03, 0xbc, 0xf9, + 0x37, 0xf6, 0x2e, 0xf5, 0x0e, 0xf3, 0xc3, 0xf0, 0xe9, 0xee, 0xed, 0xec, 0x94, 0xeb, 0x69, 0xeb, + 0x01, 0xec, 0xb6, 0xec, 0x30, 0xf0, 0x0d, 0xf1, 0x32, 0xf3, 0x9c, 0xf4, 0xfd, 0xf5, 0xbf, 0xfb, + 0x17, 0xfc, 0x30, 0xfe, 0xdb, 0xff, 0x56, 0x03, 0x1a, 0x06, 0xfb, 0x04, 0x71, 0x0a, 0x42, 0x0d, + 0x8e, 0x10, 0x28, 0x12, 0xd8, 0x0b, 0xbf, 0x04, 0x10, 0x00, 0x5c, 0xfe, 0x95, 0xff, 0x8e, 0xfe, + 0x72, 0xfb, 0x6a, 0xfa, 0xc9, 0xfa, 0x51, 0xf9, 0x5c, 0xfa, 0xdf, 0xfa, 0x1b, 0xfe, 0x80, 0xff, + 0x78, 0xfe, 0xf2, 0x00, 0x88, 0xff, 0x63, 0x02, 0x61, 0x06, 0xfa, 0x03, 0x6e, 0x04, 0x71, 0x01, + 0xa7, 0x02, 0xe8, 0x01, 0x4c, 0x04, 0x57, 0x0b, 0xaf, 0x0d, 0x36, 0x0e, 0xb3, 0x0b, 0x10, 0x05, + 0x57, 0xfc, 0x29, 0xfa, 0xab, 0xf9, 0x45, 0xf9, 0x2b, 0xfa, 0x42, 0xf7, 0xc0, 0xf8, 0x9b, 0xf7, + 0x19, 0xf4, 0x70, 0xf5, 0xcc, 0xf7, 0xa5, 0xfe, 0x26, 0x03, 0x95, 0x04, 0x10, 0x06, 0xf0, 0x05, + 0xd9, 0x0b, 0x6c, 0x0f, 0xae, 0x0f, 0x96, 0x10, 0x69, 0x0f, 0x97, 0x10, 0x16, 0x0f, 0xef, 0x10, + 0x24, 0x12, 0x97, 0x14, 0xc9, 0x12, 0x29, 0x0e, 0x16, 0x07, 0x2c, 0xfe, 0x64, 0xfb, 0x18, 0xfa, + 0xbe, 0xf7, 0x71, 0xf4, 0x1a, 0xf0, 0x92, 0xed, 0x03, 0xea, 0xf0, 0xe8, 0xc9, 0xe7, 0xef, 0xe7, + 0xe6, 0xea, 0x6e, 0xeb, 0x0b, 0xee, 0xf9, 0xee, 0x35, 0xef, 0x44, 0xf5, 0xbf, 0xf5, 0x79, 0xf8, + 0xa9, 0xf9, 0x96, 0xfe, 0xe0, 0xff, 0xe5, 0xfc, 0x24, 0x00, 0x73, 0x00, 0x88, 0x04, 0x32, 0x07, + 0x40, 0x03, 0x95, 0xfd, 0x03, 0xfa, 0x4f, 0xf9, 0xc1, 0xfb, 0x83, 0xfa, 0x1e, 0xf8, 0x77, 0xf9, + 0x39, 0xfa, 0x11, 0xfa, 0xc7, 0xfc, 0xc9, 0xfc, 0x9b, 0xff, 0xa0, 0x01, 0x1b, 0x01, 0x2c, 0x05, + 0x62, 0x04, 0xbe, 0x08, 0xf3, 0x0c, 0xac, 0x0e, 0xb8, 0x10, 0x19, 0x0e, 0xf5, 0x0f, 0x52, 0x0e, + 0x62, 0x0f, 0x85, 0x12, 0x3f, 0x13, 0x6e, 0x14, 0xeb, 0x11, 0x87, 0x0a, 0xb9, 0x01, 0x35, 0xfc, + 0x19, 0xf9, 0xf4, 0xf7, 0x49, 0xf8, 0x99, 0xf5, 0xf2, 0xf6, 0x8d, 0xf4, 0x70, 0xf1, 0xde, 0xf1, + 0xa3, 0xf3, 0x8a, 0xf7, 0xb3, 0xfa, 0xb8, 0xfc, 0xf9, 0xfd, 0xce, 0xfd, 0x73, 0x04, 0xb9, 0x09, + 0x75, 0x0c, 0xd1, 0x0c, 0x8c, 0x0c, 0x15, 0x0e, 0x7e, 0x0d, 0xa1, 0x10, 0x6b, 0x12, 0xf5, 0x16, + 0x1f, 0x16, 0x16, 0x13, 0x9c, 0x0b, 0x7b, 0x01, 0x9e, 0xfc, 0x6e, 0xfa, 0xdb, 0xf8, 0x5d, 0xf6, + 0x65, 0xf3, 0x5d, 0xf0, 0xf5, 0xec, 0x1e, 0xec, 0x19, 0xeb, 0xda, 0xeb, 0x9c, 0xef, 0xa0, 0xf0, + 0xce, 0xf3, 0xe4, 0xf3, 0xff, 0xf5, 0x23, 0xfb, 0x8d, 0xfc, 0xab, 0x00, 0xa3, 0xff, 0x07, 0x03, + 0x1f, 0x04, 0x06, 0x02, 0xf9, 0x03, 0x61, 0x07, 0x1f, 0x0c, 0xc5, 0x0e, 0xf4, 0x0b, 0x62, 0x04, + 0x8c, 0xff, 0x56, 0xfd, 0x5b, 0xfd, 0xf8, 0xfb, 0x52, 0xf8, 0xa3, 0xf8, 0x96, 0xf6, 0x98, 0xf5, + 0x4e, 0xf5, 0x0f, 0xf4, 0xef, 0xf7, 0x61, 0xf9, 0x2c, 0xfc, 0xf2, 0x01, 0x54, 0x01, 0x04, 0x07, + 0xe6, 0x0a, 0x58, 0x0c, 0xe1, 0x0c, 0x03, 0x0b, 0x6f, 0x0d, 0xb4, 0x0c, 0x4f, 0x0e, 0xf6, 0x10, + 0x87, 0x13, 0x62, 0x14, 0x8d, 0x12, 0x88, 0x0d, 0xe9, 0x06, 0xfa, 0x02, 0x50, 0x00, 0x67, 0xff, + 0x4a, 0xfe, 0xc6, 0xfb, 0x0b, 0xfc, 0x3f, 0xf8, 0x65, 0xf5, 0x8e, 0xf3, 0xc9, 0xf2, 0x56, 0xf7, + 0x2f, 0xfb, 0xe3, 0xfc, 0x09, 0xfe, 0xf1, 0xfe, 0xae, 0x04, 0xbf, 0x08, 0xa9, 0x0b, 0x5d, 0x0a, + 0x47, 0x0b, 0x52, 0x0c, 0xdc, 0x0a, 0xfd, 0x0c, 0x3c, 0x0e, 0x43, 0x12, 0xa5, 0x11, 0xee, 0x0d, + 0x9d, 0x06, 0xef, 0xfb, 0xf1, 0xf5, 0xac, 0xf3, 0xab, 0xf3, 0x79, 0xf0, 0x57, 0xed, 0x70, 0xeb, + 0xe6, 0xe6, 0xbe, 0xe4, 0x44, 0xe4, 0x47, 0xe5, 0x06, 0xea, 0x46, 0xeb, 0x1c, 0xed, 0xf3, 0xec, + 0xa9, 0xed, 0xa4, 0xf0, 0x6d, 0xf3, 0x20, 0xf9, 0xf8, 0xfa, 0xb4, 0x01, 0x92, 0x02, 0x24, 0x00, + 0xd0, 0x02, 0x52, 0x06, 0xbd, 0x0b, 0xc5, 0x10, 0xea, 0x0e, 0x52, 0x08, 0x3e, 0x03, 0xd8, 0xfe, + 0xba, 0xfe, 0x2b, 0xff, 0x2d, 0xfd, 0x4c, 0xfc, 0xef, 0xfa, 0x55, 0xfc, 0x38, 0xfd, 0x2f, 0xfd, + 0x8f, 0x02, 0x2b, 0x04, 0x4c, 0x07, 0x0e, 0x0a, 0xbe, 0x07, 0x51, 0x0b, 0xbb, 0x0c, 0xe8, 0x0e, + 0xe9, 0x0e, 0x8a, 0x0c, 0x02, 0x0e, 0x2e, 0x0d, 0xb8, 0x0d, 0x11, 0x10, 0xfa, 0x11, 0x0e, 0x13, + 0x20, 0x11, 0x88, 0x0d, 0x01, 0x05, 0xff, 0xfc, 0x42, 0xf8, 0x75, 0xf6, 0x0a, 0xf4, 0x37, 0xf1, + 0xea, 0xef, 0xe3, 0xed, 0x33, 0xed, 0x23, 0xeb, 0x50, 0xec, 0xa0, 0xf1, 0xf1, 0xf5, 0xd8, 0xf8, + 0x61, 0xfa, 0x8d, 0xfc, 0x80, 0x02, 0xa6, 0x07, 0xe1, 0x0b, 0x23, 0x0c, 0x76, 0x0d, 0xfb, 0x0d, + 0xb6, 0x0d, 0xb3, 0x0f, 0x40, 0x10, 0xe7, 0x14, 0x7a, 0x17, 0x1d, 0x16, 0x19, 0x11, 0x69, 0x08, + 0x82, 0x01, 0x01, 0xff, 0xe7, 0xfd, 0x55, 0xfa, 0x60, 0xf7, 0x74, 0xf3, 0xef, 0xef, 0xb3, 0xec, + 0x70, 0xea, 0x73, 0xeb, 0x0d, 0xee, 0xf5, 0xee, 0x75, 0xf1, 0x35, 0xf2, 0xaf, 0xf5, 0xda, 0xf7, + 0x84, 0xfb, 0x8e, 0xff, 0x35, 0x01, 0x7f, 0x05, 0xc0, 0x05, 0xae, 0x02, 0x3e, 0x01, 0xf3, 0x03, + 0x67, 0x07, 0x49, 0x0b, 0x87, 0x0a, 0x83, 0x03, 0xc1, 0xfe, 0xc0, 0xf8, 0x7c, 0xf9, 0x6e, 0xfa, + 0x92, 0xf8, 0x11, 0xf9, 0x79, 0xf6, 0xbb, 0xf5, 0x7e, 0xf3, 0x3b, 0xf2, 0x11, 0xf7, 0x02, 0xfa, + 0xe4, 0xfd, 0xda, 0x01, 0x6f, 0x02, 0x3e, 0x06, 0x53, 0x08, 0x63, 0x0c, 0x72, 0x0e, 0x7a, 0x0f, + 0x24, 0x12, 0x5c, 0x13, 0x6a, 0x13, 0xc9, 0x14, 0xdf, 0x15, 0xb2, 0x17, 0xa0, 0x19, 0xa0, 0x15, + 0xef, 0x0e, 0x8d, 0x07, 0x3b, 0x00, 0xfe, 0xfd, 0xbe, 0xfc, 0xbb, 0xfa, 0x50, 0xfa, 0x06, 0xf7, + 0x98, 0xf2, 0x3c, 0xee, 0x73, 0xee, 0x6f, 0xf2, 0x04, 0xf5, 0x84, 0xf8, 0x1f, 0xf9, 0xc7, 0xfa, + 0xf7, 0xfd, 0xbb, 0x02, 0x2b, 0x07, 0x37, 0x06, 0xd3, 0x06, 0x4f, 0x08, 0x48, 0x09, 0x74, 0x0a, + 0xec, 0x0a, 0x3c, 0x0e, 0x11, 0x10, 0x9e, 0x0f, 0x5b, 0x0b, 0x92, 0x04, 0x53, 0xfe, 0xd7, 0xfa, + 0xe1, 0xf8, 0xe3, 0xf3, 0x70, 0xef, 0xe3, 0xe9, 0x9e, 0xe5, 0x84, 0xe2, 0x7f, 0xe1, 0x67, 0xe3, + 0x0d, 0xe6, 0x0c, 0xe9, 0x80, 0xeb, 0x8c, 0xeb, 0xc2, 0xee, 0xac, 0xf0, 0x37, 0xf6, 0xe9, 0xfb, + 0x7c, 0xff, 0x3f, 0x03, 0x26, 0x05, 0x84, 0x04, 0x74, 0x03, 0x20, 0x07, 0xbb, 0x0b, 0x73, 0x12, + 0x8f, 0x13, 0x1b, 0x11, 0xed, 0x0c, 0xe8, 0x07, 0xc3, 0x08, 0xdc, 0x06, 0x26, 0x04, 0xef, 0x01, + 0x31, 0xfd, 0x70, 0xfa, 0xe5, 0xf6, 0xeb, 0xf2, 0xfd, 0xf5, 0xee, 0xf7, 0xd1, 0xfb, 0x6b, 0x00, + 0x39, 0x00, 0xdb, 0x00, 0xea, 0x03, 0xbb, 0x07, 0x6b, 0x08, 0x72, 0x09, 0x04, 0x0b, 0x93, 0x0b, + 0x08, 0x0a, 0x83, 0x09, 0x82, 0x09, 0xa9, 0x0c, 0x0d, 0x10, 0x8a, 0x0f, 0xda, 0x0c, 0xc8, 0x07, + 0xeb, 0x00, 0x86, 0xfe, 0x37, 0xfc, 0x87, 0xfa, 0x1f, 0xfb, 0x71, 0xf8, 0x23, 0xf5, 0x7e, 0xf1, + 0xed, 0xee, 0x22, 0xf1, 0x33, 0xf4, 0xc7, 0xf7, 0xe7, 0xf8, 0xdf, 0xfb, 0x71, 0x00, 0x6a, 0x06, + 0x33, 0x0c, 0x6a, 0x0d, 0x17, 0x0f, 0xf5, 0x10, 0x19, 0x12, 0x2e, 0x11, 0x46, 0x12, 0x68, 0x15, + 0x18, 0x18, 0x93, 0x19, 0x2f, 0x16, 0x38, 0x10, 0x47, 0x08, 0x84, 0x02, 0x99, 0xff, 0x15, 0xfb, + 0x8b, 0xf6, 0x7f, 0xf1, 0xb0, 0xec, 0xf8, 0xe7, 0x1c, 0xe5, 0x1e, 0xe5, 0xe5, 0xe4, 0x13, 0xe7, + 0x9b, 0xe8, 0x7e, 0xe7, 0xfc, 0xe8, 0x45, 0xe9, 0x9a, 0xec, 0xf7, 0xf1, 0x00, 0xf6, 0xcd, 0xf9, + 0x0d, 0xfe, 0x80, 0xfd, 0x90, 0xfd, 0xc8, 0x02, 0x10, 0x08, 0x87, 0x0f, 0x71, 0x12, 0x47, 0x10, + 0x78, 0x0c, 0x33, 0x07, 0x96, 0x06, 0x67, 0x05, 0x3e, 0x04, 0x64, 0x02, 0xd7, 0xfd, 0x3f, 0xfc, + 0xb3, 0xfa, 0xee, 0xf7, 0xed, 0xfa, 0xc7, 0xfc, 0x05, 0x01, 0x67, 0x04, 0x5a, 0x04, 0x7d, 0x06, + 0x81, 0x08, 0xfb, 0x0a, 0x64, 0x0b, 0x4b, 0x0b, 0xbe, 0x0b, 0x25, 0x0d, 0xe5, 0x0b, 0x41, 0x0d, + 0xde, 0x0e, 0x29, 0x11, 0x94, 0x14, 0xb2, 0x13, 0x61, 0x10, 0xd4, 0x09, 0xe7, 0x00, 0x24, 0xfe, + 0x2e, 0xfb, 0x7b, 0xf8, 0xf7, 0xf6, 0x8c, 0xf2, 0x9b, 0xee, 0x95, 0xe9, 0x59, 0xe7, 0x59, 0xe8, + 0x22, 0xec, 0x62, 0xef, 0xd4, 0xf0, 0xd0, 0xf3, 0x91, 0xf6, 0x61, 0xfc, 0x3d, 0x00, 0xb6, 0x02, + 0xbf, 0x05, 0x6f, 0x08, 0x11, 0x0b, 0xa6, 0x0a, 0xfa, 0x09, 0xe9, 0x0a, 0x28, 0x0e, 0x2d, 0x12, + 0xcb, 0x11, 0x1a, 0x0f, 0x51, 0x09, 0x2b, 0x05, 0x30, 0x02, 0x80, 0xfe, 0x40, 0xfa, 0xa3, 0xf6, + 0x47, 0xf2, 0x02, 0xef, 0x96, 0xec, 0x5d, 0xea, 0xbf, 0xea, 0x25, 0xec, 0x37, 0xee, 0x39, 0xef, + 0x9b, 0xf1, 0xe2, 0xf3, 0x75, 0xf8, 0xc3, 0xfc, 0x47, 0x00, 0xa7, 0x04, 0xfa, 0x08, 0x90, 0x08, + 0xae, 0x07, 0x0f, 0x08, 0x00, 0x0a, 0xfc, 0x0d, 0x60, 0x0f, 0x39, 0x0e, 0x84, 0x09, 0xa1, 0x03, + 0x87, 0x02, 0x72, 0x02, 0x2a, 0x00, 0xbf, 0xfd, 0x19, 0xfa, 0x84, 0xf6, 0x87, 0xf3, 0x40, 0xef, + 0xb2, 0xf0, 0xea, 0xf3, 0xb1, 0xf6, 0xd5, 0xf6, 0xca, 0xf5, 0xbf, 0xf8, 0xcb, 0xfe, 0x94, 0x02, + 0x51, 0x04, 0x12, 0x07, 0x7e, 0x08, 0x54, 0x0b, 0xf5, 0x0b, 0xee, 0x0d, 0xd1, 0x0d, 0x63, 0x0f, + 0x1e, 0x15, 0x59, 0x17, 0xa5, 0x15, 0xef, 0x11, 0x37, 0x08, 0xd2, 0x01, 0x01, 0xff, 0x7a, 0xfd, + 0x55, 0xfd, 0xc1, 0xfb, 0xa6, 0xf7, 0x82, 0xf4, 0x70, 0xf2, 0x27, 0xf4, 0x88, 0xf6, 0xba, 0xf9, + 0xe5, 0xfb, 0xf3, 0xfd, 0xfd, 0x00, 0x68, 0x05, 0xa0, 0x09, 0xda, 0x0d, 0xc4, 0x0e, 0xaa, 0x0f, + 0xd6, 0x10, 0x20, 0x10, 0x95, 0x11, 0x58, 0x15, 0x0b, 0x17, 0x34, 0x18, 0xaa, 0x16, 0x06, 0x13, + 0x36, 0x0e, 0xfa, 0x07, 0x36, 0x02, 0xf6, 0xfb, 0x06, 0xf6, 0x53, 0xef, 0x5c, 0xea, 0x3f, 0xe5, + 0xd2, 0xe1, 0x4e, 0xde, 0x73, 0xdc, 0x33, 0xdd, 0xfd, 0xde, 0x9c, 0xe0, 0x7d, 0xe3, 0x4b, 0xe6, + 0xdc, 0xeb, 0xe2, 0xf0, 0x4f, 0xf5, 0x66, 0xf8, 0x6a, 0xf9, 0x03, 0xfc, 0x70, 0xfe, 0x0c, 0x02, + 0xd6, 0x07, 0x91, 0x0d, 0x13, 0x11, 0x9d, 0x12, 0x2e, 0x13, 0xd3, 0x12, 0x23, 0x12, 0x98, 0x11, + 0xa8, 0x0e, 0x5f, 0x0a, 0x45, 0x06, 0xd6, 0x01, 0x1c, 0xfe, 0x09, 0xfa, 0xcb, 0xf7, 0xf2, 0xf7, + 0x6e, 0xf8, 0xcd, 0xfa, 0x0c, 0xfd, 0x5b, 0xfe, 0x84, 0xfd, 0x9c, 0x00, 0x7d, 0x04, 0x1c, 0x06, + 0xb7, 0x08, 0xf2, 0x08, 0xb5, 0x08, 0x50, 0x0a, 0x67, 0x0a, 0x87, 0x0d, 0x6e, 0x10, 0x83, 0x11, + 0x8e, 0x10, 0x6b, 0x0f, 0x1c, 0x0c, 0x95, 0x06, 0x61, 0x04, 0x1b, 0x01, 0xff, 0xfd, 0xdc, 0xfa, + 0x07, 0xf5, 0x6c, 0xf2, 0x31, 0xf1, 0xed, 0xf0, 0x60, 0xf2, 0x41, 0xf1, 0xc0, 0xf0, 0x94, 0xf0, + 0x6d, 0xf2, 0x83, 0xf3, 0xaf, 0xf7, 0xd8, 0xfb, 0xfc, 0xff, 0x18, 0x04, 0xce, 0x06, 0xe2, 0x08, + 0xb2, 0x08, 0xf4, 0x0c, 0xde, 0x0f, 0xe4, 0x10, 0x74, 0x12, 0x94, 0x11, 0xe7, 0x11, 0x48, 0x11, + 0x38, 0x0e, 0x23, 0x0c, 0x11, 0x06, 0x6e, 0x02, 0x05, 0xfd, 0xaf, 0xf6, 0x7d, 0xf3, 0x77, 0xf1, + 0x87, 0xf2, 0x93, 0xf2, 0x2a, 0xf1, 0x72, 0xef, 0x15, 0xed, 0xb7, 0xe9, 0xdf, 0xe7, 0xe1, 0xe8, + 0x9d, 0xeb, 0x22, 0xf0, 0xc3, 0xf4, 0xb4, 0xf7, 0xf2, 0xf9, 0x2d, 0xfb, 0x84, 0x00, 0x2d, 0x05, + 0xf8, 0x07, 0xd1, 0x08, 0x04, 0x09, 0xe0, 0x0a, 0x04, 0x0d, 0x0a, 0x0d, 0xfa, 0x0a, 0xd6, 0x05, + 0xb2, 0x01, 0xa0, 0xfe, 0xa2, 0xfc, 0x27, 0xfb, 0x1b, 0xfb, 0x87, 0xfd, 0x62, 0xfe, 0xa4, 0xfd, + 0x24, 0xfc, 0x0b, 0xfc, 0xbf, 0xfc, 0x60, 0xfd, 0x1a, 0xfd, 0xb6, 0xfb, 0x75, 0xfc, 0x2a, 0xfe, + 0x28, 0x00, 0xfe, 0x01, 0x14, 0x04, 0x5f, 0x08, 0xbd, 0x0a, 0x46, 0x0e, 0x38, 0x0f, 0xb0, 0x0e, + 0xaf, 0x0c, 0xcf, 0x0a, 0xde, 0x0c, 0x18, 0x0d, 0xbc, 0x0a, 0x44, 0x07, 0x06, 0x02, 0xa3, 0xfd, + 0x0e, 0xfb, 0xe0, 0xfb, 0x5d, 0xfe, 0x6b, 0xfe, 0x4f, 0xfc, 0xff, 0xf9, 0x7a, 0xf9, 0xd6, 0xf9, + 0x11, 0xfc, 0x65, 0xfb, 0x88, 0xfd, 0xc0, 0xff, 0x66, 0x00, 0x80, 0x02, 0x77, 0xff, 0xb5, 0x00, + 0x62, 0x02, 0x75, 0x03, 0x3c, 0x07, 0xb0, 0x06, 0x4b, 0x06, 0x48, 0x05, 0xdf, 0x03, 0x71, 0x06, + 0x9c, 0x04, 0x6d, 0x02, 0xdd, 0xfe, 0xb7, 0xf9, 0xb7, 0xf6, 0xa2, 0xf2, 0xe2, 0xf0, 0x8a, 0xf2, + 0x85, 0xf3, 0x21, 0xf2, 0x8c, 0xf1, 0xae, 0xee, 0x2c, 0xee, 0xa7, 0xf0, 0xe8, 0xef, 0x71, 0xf3, + 0x9f, 0xf7, 0x6e, 0xf9, 0x54, 0xfc, 0x59, 0xfd, 0xb1, 0x00, 0xa4, 0x04, 0x2c, 0x06, 0x09, 0x07, + 0x79, 0x07, 0xb9, 0x07, 0xe5, 0x08, 0x9c, 0x0b, 0x72, 0x0e, 0xe5, 0x0e, 0x54, 0x0e, 0x4a, 0x0b, + 0x77, 0x07, 0x00, 0x04, 0xea, 0x02, 0xe8, 0x02, 0x32, 0x03, 0x2b, 0x02, 0xd2, 0xfe, 0xe6, 0xfd, + 0xeb, 0xfc, 0xad, 0xfc, 0x13, 0xfe, 0x8a, 0xfb, 0x42, 0xfa, 0x7d, 0xf9, 0x1c, 0xf9, 0x43, 0xfa, + 0xf8, 0xfb, 0x45, 0xfd, 0x18, 0xff, 0xca, 0x00, 0xb8, 0xff, 0xc0, 0xff, 0x71, 0xfe, 0x62, 0xfe, + 0x67, 0x00, 0x25, 0x02, 0x8c, 0x03, 0xa7, 0x03, 0x0f, 0x01, 0xc1, 0xfe, 0xfe, 0xfc, 0x13, 0xff, + 0x5b, 0x02, 0xca, 0x03, 0xd2, 0x04, 0x9d, 0x04, 0xdc, 0x03, 0x2c, 0x03, 0x42, 0x04, 0xcd, 0x04, + 0xc4, 0x06, 0xf5, 0x05, 0x90, 0x06, 0xf1, 0x08, 0x20, 0x07, 0xcd, 0x09, 0x87, 0x0b, 0x93, 0x0b, + 0x9d, 0x0c, 0x88, 0x0b, 0x33, 0x0b, 0x7e, 0x0b, 0x1e, 0x0c, 0x5a, 0x0c, 0x6c, 0x09, 0xc2, 0x06, + 0x28, 0x02, 0x1d, 0xfd, 0x37, 0xf9, 0xcb, 0xf5, 0xa3, 0xf4, 0x78, 0xf5, 0xd3, 0xf5, 0x06, 0xf5, + 0x66, 0xf4, 0xf7, 0xef, 0x4d, 0xed, 0x90, 0xed, 0x44, 0xed, 0xa9, 0xf0, 0xf5, 0xef, 0x95, 0xef, + 0xcc, 0xf0, 0x03, 0xf0, 0x59, 0xf3, 0xbc, 0xf6, 0x53, 0xfa, 0xdb, 0xfc, 0xd3, 0xfd, 0x5d, 0x00, + 0x92, 0x02, 0x2f, 0x05, 0x1e, 0x07, 0x26, 0x08, 0xcd, 0x08, 0xaf, 0x07, 0xbd, 0x06, 0xec, 0x03, + 0x6d, 0x03, 0xc6, 0x03, 0x8f, 0x03, 0x29, 0x04, 0x87, 0x04, 0xba, 0x06, 0x91, 0x05, 0xc9, 0x05, + 0xf5, 0x06, 0x58, 0x05, 0xb7, 0x05, 0xbb, 0x05, 0x41, 0x06, 0x55, 0x05, 0x2b, 0x05, 0x4b, 0x04, + 0xdd, 0x04, 0x5d, 0x07, 0x68, 0x06, 0xf3, 0x06, 0x29, 0x05, 0xa7, 0x04, 0xf3, 0x06, 0x7d, 0x07, + 0xfa, 0x08, 0x04, 0x08, 0xae, 0x04, 0xbf, 0x02, 0xe3, 0x00, 0x90, 0x01, 0xae, 0x02, 0xb4, 0x01, + 0x64, 0xff, 0x6f, 0xfc, 0x97, 0xfa, 0x89, 0xf9, 0x75, 0xfa, 0x5c, 0xfa, 0xe0, 0xfb, 0x71, 0xfa, + 0xa8, 0xfa, 0x5f, 0xfb, 0x58, 0xfa, 0x12, 0xfd, 0x60, 0xfe, 0xb1, 0xff, 0x1f, 0x00, 0xc3, 0xfe, + 0x70, 0xfe, 0x97, 0xfe, 0x44, 0xff, 0x80, 0x01, 0xa6, 0x00, 0x98, 0x00, 0x2d, 0x00, 0x8c, 0xfc, + 0xe0, 0xf9, 0xd1, 0xf8, 0xe0, 0xf8, 0x29, 0xfb, 0x7e, 0xfc, 0xf8, 0xfa, 0xe4, 0xfa, 0x11, 0xf7, + 0x9b, 0xf3, 0xe4, 0xf4, 0xb8, 0xf4, 0x2b, 0xf6, 0x3e, 0xf8, 0xf2, 0xf9, 0xb2, 0xfa, 0x3e, 0xfb, + 0x88, 0xfd, 0x0c, 0x00, 0xc1, 0x02, 0xf5, 0x03, 0x5d, 0x04, 0x9c, 0x05, 0x7f, 0x05, 0x96, 0x04, + 0x0e, 0x04, 0x4e, 0x05, 0xa5, 0x05, 0x11, 0x05, 0xbe, 0x04, 0xd3, 0x02, 0x06, 0x03, 0xa7, 0x03, + 0x27, 0x04, 0x1c, 0x04, 0xc5, 0x02, 0x7c, 0x03, 0x0c, 0x03, 0xe8, 0x02, 0x29, 0x01, 0xb0, 0xfe, + 0x70, 0xfc, 0x97, 0xfa, 0xb8, 0xfb, 0xb4, 0xfa, 0xe6, 0xfb, 0x4e, 0xfc, 0x76, 0xfd, 0xb7, 0xfe, + 0xc1, 0xfe, 0xef, 0xff, 0xe5, 0xfd, 0xbd, 0xfd, 0x87, 0xff, 0xb0, 0x00, 0xcf, 0x02, 0x0f, 0x02, + 0x09, 0x00, 0x95, 0xff, 0xdb, 0xfd, 0x33, 0xff, 0xa5, 0x03, 0x27, 0x06, 0x9e, 0x06, 0xa1, 0x07, + 0xc1, 0x06, 0xf0, 0x06, 0x0c, 0x09, 0xe2, 0x08, 0x0c, 0x0b, 0xc4, 0x0a, 0x7c, 0x0b, 0x1e, 0x0c, + 0x0b, 0x0b, 0x16, 0x0b, 0xc5, 0x09, 0x46, 0x09, 0xf1, 0x07, 0x5d, 0x06, 0x96, 0x05, 0x05, 0x04, + 0x03, 0x04, 0x42, 0x04, 0x00, 0x03, 0xfa, 0x01, 0x1e, 0xff, 0x69, 0xfb, 0x03, 0xf8, 0x2a, 0xf4, + 0x05, 0xf1, 0x1b, 0xf2, 0x08, 0xf4, 0x32, 0xf2, 0x1c, 0xf2, 0x13, 0xef, 0x66, 0xed, 0xeb, 0xef, + 0x50, 0xf1, 0x4a, 0xf4, 0x56, 0xf6, 0x9f, 0xf8, 0x84, 0xf8, 0x69, 0xf9, 0xb8, 0xfb, 0x7d, 0xfc, + 0x03, 0xfe, 0x88, 0xfd, 0x8a, 0xfd, 0x10, 0xfe, 0x8c, 0xfd, 0x72, 0xfe, 0x88, 0x00, 0xc6, 0x02, + 0x8a, 0x02, 0xf2, 0x02, 0x68, 0x03, 0xd8, 0x01, 0x3c, 0x02, 0xba, 0x02, 0x74, 0x04, 0xe8, 0x04, + 0x88, 0x04, 0x05, 0x05, 0xd9, 0x04, 0xce, 0x05, 0x87, 0x06, 0x86, 0x07, 0x34, 0x07, 0x85, 0x07, + 0xb4, 0x08, 0x88, 0x07, 0x06, 0x08, 0x25, 0x07, 0x3f, 0x06, 0x44, 0x07, 0x4b, 0x06, 0xfc, 0x05, + 0xeb, 0x03, 0x11, 0x01, 0x53, 0x00, 0x9e, 0xff, 0xdf, 0xfe, 0xd3, 0xfc, 0x6b, 0xfa, 0xda, 0xf9, + 0x38, 0xf7, 0xdf, 0xf5, 0x78, 0xf7, 0x29, 0xf9, 0xa4, 0xfa, 0x3b, 0xfc, 0xe1, 0xfc, 0xb4, 0xfd, + 0x5c, 0xff, 0xd3, 0xfe, 0xad, 0x00, 0x00, 0x00, 0x65, 0x01, 0x82, 0x03, 0x77, 0x03, 0x63, 0x06, + 0x3c, 0x08, 0xd8, 0x08, 0xe6, 0x07, 0x76, 0x06, 0x1f, 0x08, 0x0e, 0x08, 0xd9, 0x07, 0x52, 0x08, + 0x3c, 0x06, 0x77, 0x03, 0xb3, 0xff, 0x55, 0xfc, 0x77, 0xf8, 0x20, 0xf6, 0x2a, 0xf4, 0x30, 0xf5, + 0x07, 0xf7, 0x64, 0xf6, 0x07, 0xf8, 0x6c, 0xf6, 0x11, 0xf5, 0x8b, 0xf5, 0xde, 0xf6, 0xe6, 0xf8, + 0x37, 0xfa, 0xc5, 0xf9, 0x9c, 0xf8, 0x1a, 0xf9, 0xc1, 0xf9, 0x8d, 0xfc, 0x08, 0x00, 0x27, 0x01, + 0xb0, 0x02, 0x43, 0x02, 0x26, 0x02, 0xd1, 0x01, 0x35, 0x01, 0x7b, 0x03, 0xf6, 0x02, 0x27, 0x01, + 0x4b, 0xff, 0xe2, 0xfb, 0x7d, 0xf9, 0xa7, 0xf9, 0xb8, 0xfa, 0x89, 0xfa, 0x61, 0xfc, 0xce, 0xfe, + 0x5b, 0xff, 0x44, 0x00, 0xa9, 0x00, 0xa4, 0x01, 0x41, 0x01, 0xd7, 0x02, 0xca, 0x04, 0x8d, 0x05, + 0xf5, 0x05, 0x52, 0x04, 0x52, 0x05, 0x12, 0x07, 0x2f, 0x07, 0x56, 0x08, 0x54, 0x07, 0xb5, 0x05, + 0x56, 0x07, 0x1e, 0x08, 0xa2, 0x08, 0x5c, 0x09, 0xe1, 0x07, 0xa2, 0x06, 0xa9, 0x04, 0x68, 0x02, + 0x37, 0x03, 0x57, 0x04, 0x80, 0x03, 0xfa, 0x03, 0xa3, 0x02, 0x64, 0x02, 0xed, 0x02, 0xcb, 0x02, + 0x3c, 0x03, 0x85, 0x01, 0x96, 0x03, 0xfc, 0x04, 0xea, 0x05, 0x60, 0x07, 0xbc, 0x06, 0x9c, 0x07, + 0x5d, 0x06, 0x45, 0x03, 0x21, 0x02, 0x99, 0x01, 0x5e, 0x00, 0xea, 0xfe, 0x52, 0xfd, 0xf7, 0xfa, + 0xdd, 0xf8, 0xbb, 0xf6, 0xb5, 0xf3, 0x49, 0xf1, 0xce, 0xf0, 0xad, 0xf1, 0x9f, 0xf2, 0xed, 0xf2, + 0xec, 0xf2, 0xbe, 0xf1, 0x8e, 0xef, 0x1c, 0xee, 0xf8, 0xef, 0x8c, 0xf0, 0x83, 0xf0, 0xbf, 0xf3, + 0x9d, 0xf5, 0xec, 0xf6, 0x83, 0xf8, 0x14, 0xfb, 0x26, 0xfe, 0xa7, 0x00, 0xff, 0x02, 0x5e, 0x03, + 0x05, 0x05, 0xc0, 0x05, 0xd5, 0x03, 0x07, 0x06, 0xed, 0x05, 0x01, 0x05, 0x8c, 0x05, 0xe8, 0x03, + 0xed, 0x03, 0x4d, 0x05, 0xda, 0x06, 0xdf, 0x07, 0xd8, 0x08, 0xbd, 0x09, 0xaf, 0x0a, 0x0e, 0x0b, + 0x4e, 0x0a, 0x6b, 0x09, 0x07, 0x07, 0xfa, 0x05, 0x0e, 0x06, 0x06, 0x05, 0xb2, 0x04, 0x24, 0x02, + 0x11, 0x03, 0x5b, 0x04, 0x1a, 0x03, 0x57, 0x04, 0x14, 0x02, 0xa8, 0xfe, 0x91, 0xfd, 0xa8, 0xfc, + 0x09, 0xfd, 0x59, 0xfe, 0x91, 0xfc, 0xd0, 0xfa, 0x46, 0xf9, 0x8c, 0xf6, 0x77, 0xf7, 0x89, 0xf9, + 0x0b, 0xfa, 0x14, 0xfd, 0x0d, 0xfe, 0xb2, 0xfe, 0xf3, 0xfe, 0xc8, 0xff, 0xee, 0x01, 0x19, 0x02, + 0x99, 0x03, 0x7b, 0x04, 0xa9, 0x04, 0x72, 0x05, 0x75, 0x05, 0x98, 0x05, 0xec, 0x04, 0x31, 0x03, + 0x23, 0x04, 0x4c, 0x05, 0xcb, 0x04, 0xd2, 0x04, 0xe6, 0x03, 0xc8, 0x02, 0x62, 0x02, 0xf3, 0x00, + 0x04, 0xff, 0xa7, 0xfd, 0x16, 0xfa, 0x7f, 0xf9, 0x45, 0xfa, 0xb0, 0xf9, 0x27, 0xf9, 0xa4, 0xf8, + 0xb9, 0xf6, 0xad, 0xf6, 0xcd, 0xf9, 0x66, 0xfb, 0xe8, 0xfc, 0x11, 0xfe, 0x2c, 0xff, 0x60, 0x00, + 0xc6, 0x00, 0x57, 0x01, 0x5e, 0x01, 0x3e, 0x00, 0x53, 0x00, 0x18, 0xff, 0x6c, 0xfe, 0x13, 0xff, + 0xfc, 0xff, 0x2b, 0x02, 0x6f, 0x02, 0x78, 0x01, 0xfa, 0x01, 0xd7, 0x00, 0x93, 0xfe, 0x95, 0xfe, + 0xb8, 0xff, 0xf3, 0xff, 0x39, 0x00, 0x18, 0x00, 0xd7, 0x00, 0x8b, 0x00, 0xf6, 0x00, 0x6b, 0x01, + 0x69, 0x00, 0x0d, 0x02, 0xce, 0x02, 0x05, 0x03, 0x01, 0x04, 0x0e, 0x03, 0x40, 0x04, 0x61, 0x05, + 0x1a, 0x05, 0x24, 0x05, 0x40, 0x03, 0xde, 0x00, 0xb6, 0xff, 0xe3, 0xff, 0x34, 0x00, 0x63, 0x00, + 0xe8, 0xff, 0x25, 0x00, 0xc1, 0xff, 0xe4, 0xfc, 0x4c, 0xfd, 0xbe, 0xfe, 0x2c, 0x01, 0x68, 0x04, + 0x82, 0x05, 0x80, 0x08, 0x10, 0x08, 0xec, 0x06, 0x0a, 0x07, 0x7f, 0x06, 0x52, 0x07, 0x26, 0x08, + 0x2d, 0x07, 0x1e, 0x07, 0xd5, 0x07, 0xc2, 0x07, 0x64, 0x06, 0x63, 0x05, 0x91, 0x05, 0xef, 0x05, + 0x80, 0x05, 0x40, 0x04, 0x47, 0x02, 0x2a, 0xff, 0x11, 0xfb, 0x11, 0xf8, 0xac, 0xf5, 0xfc, 0xf1, + 0x24, 0xee, 0x09, 0xef, 0x27, 0xf0, 0x01, 0xf1, 0x27, 0xf2, 0xfb, 0xf1, 0x33, 0xf1, 0xc5, 0xf0, + 0x8f, 0xf1, 0xc3, 0xf2, 0xfc, 0xf4, 0xd1, 0xf6, 0x07, 0xf8, 0xb2, 0xf9, 0x07, 0xfa, 0x70, 0xfb, + 0x2b, 0xfd, 0x45, 0xff, 0x69, 0x02, 0xf5, 0x02, 0xb5, 0x03, 0x4f, 0x05, 0xed, 0x05, 0x08, 0x08, + 0xb1, 0x08, 0x03, 0x07, 0x3c, 0x05, 0xa1, 0x03, 0xf3, 0x00, 0x21, 0x00, 0x82, 0x01, 0xd7, 0x01, + 0x69, 0x01, 0x9b, 0x02, 0x7d, 0x04, 0xb3, 0x03, 0xa2, 0x04, 0x0a, 0x04, 0xef, 0x02, 0x76, 0x04, + 0xae, 0x04, 0x5e, 0x04, 0x32, 0x05, 0x61, 0x03, 0xae, 0x03, 0x6f, 0x05, 0x5c, 0x04, 0x03, 0x04, + 0x09, 0x04, 0xf2, 0x00, 0x75, 0xff, 0xae, 0xff, 0xb7, 0xff, 0xfe, 0xff, 0x87, 0xff, 0xa6, 0xff, + 0xa1, 0xfe, 0xad, 0xfc, 0xc5, 0xfb, 0x4b, 0xfb, 0xbd, 0xfc, 0x92, 0xfd, 0x42, 0xfd, 0x82, 0xfd, + 0xbd, 0xfc, 0xc1, 0xfd, 0x8d, 0xff, 0x66, 0x00, 0x6d, 0x02, 0x55, 0x04, 0x4e, 0x05, 0x31, 0x07, + 0x3e, 0x08, 0x51, 0x08, 0x47, 0x09, 0x9a, 0x08, 0x45, 0x08, 0x39, 0x09, 0x8b, 0x08, 0xbb, 0x06, + 0xe2, 0x04, 0x6d, 0x03, 0xe9, 0x01, 0x84, 0x00, 0x6a, 0xff, 0x04, 0xfd, 0x26, 0xfa, 0xfd, 0xf9, + 0x24, 0xfa, 0xe3, 0xf9, 0x63, 0xf9, 0xf8, 0xf7, 0x87, 0xf4, 0x39, 0xf2, 0x28, 0xf1, 0xee, 0xf0, + 0x6e, 0xf0, 0x32, 0xf1, 0x15, 0xf5, 0xcf, 0xf7, 0xc4, 0xf8, 0xa1, 0xfa, 0x43, 0xfc, 0x6e, 0xfe, + 0xc3, 0x00, 0x5f, 0x01, 0x4e, 0x02, 0x90, 0x03, 0xe5, 0x02, 0x94, 0x03, 0x91, 0x04, 0x9b, 0x03, + 0x33, 0x03, 0x16, 0x02, 0x57, 0x00, 0xa0, 0x00, 0x65, 0x01, 0xa4, 0x01, 0x10, 0x02, 0x91, 0x03, + 0x2d, 0x05, 0x85, 0x05, 0xb4, 0x06, 0x7a, 0x05, 0x26, 0x04, 0x2f, 0x04, 0xf2, 0x02, 0xd3, 0x02, + 0xa3, 0x02, 0x19, 0x01, 0x7a, 0x02, 0x40, 0x05, 0x8c, 0x05, 0xaa, 0x05, 0xea, 0x05, 0x2d, 0x04, + 0xc7, 0x02, 0x5b, 0x02, 0x46, 0x03, 0x2d, 0x04, 0x8f, 0x03, 0x4a, 0x03, 0x36, 0x01, 0xf1, 0xfd, + 0xde, 0xfc, 0x23, 0xfc, 0xfd, 0xfc, 0xe2, 0xfd, 0x92, 0xfe, 0x26, 0xfe, 0x5a, 0xfd, 0x71, 0xfd, + 0x51, 0xff, 0xcf, 0x00, 0x69, 0x01, 0x16, 0x02, 0xd6, 0x02, 0xcc, 0x02, 0x70, 0x02, 0xd8, 0x01, + 0x01, 0x01, 0x34, 0xff, 0x5c, 0xff, 0xc7, 0x00, 0xfb, 0x01, 0x0f, 0x02, 0xad, 0x00, 0x75, 0x00, + 0x2b, 0x00, 0x5b, 0xff, 0x70, 0xfd, 0xee, 0xfa, 0xdb, 0xf7, 0x9d, 0xf6, 0x2f, 0xf7, 0x65, 0xf7, + 0x86, 0xf7, 0x8a, 0xf7, 0x4c, 0xf5, 0xdf, 0xf3, 0x24, 0xf4, 0x15, 0xf5, 0xaf, 0xf6, 0x3f, 0xf8, + 0xb1, 0xfb, 0x1e, 0xff, 0xce, 0x00, 0x51, 0x01, 0xda, 0x01, 0x78, 0x02, 0xb8, 0x02, 0xe0, 0x02, + 0x89, 0x03, 0x5d, 0x04, 0x8a, 0x04, 0x5e, 0x06, 0xe6, 0x06, 0x56, 0x06, 0x34, 0x06, 0xf5, 0x04, + 0x45, 0x03, 0xa9, 0x01, 0x0d, 0x00, 0xfe, 0xff, 0x66, 0xfe, 0xcc, 0xfe, 0xd5, 0xff, 0xbb, 0xff, + 0x6b, 0xff, 0xd9, 0xfe, 0xc9, 0xfd, 0x0f, 0xfe, 0xdb, 0xfe, 0xa4, 0xfe, 0x0a, 0xff, 0xcd, 0xfe, + 0xaf, 0xff, 0xf6, 0x01, 0xb9, 0x02, 0xdb, 0x02, 0xcb, 0x02, 0x8d, 0x01, 0x8c, 0x00, 0x70, 0xff, + 0x16, 0x00, 0x8a, 0xff, 0xce, 0xfe, 0xef, 0xff, 0x15, 0x00, 0x53, 0xff, 0xfb, 0xfe, 0x3d, 0xff, + 0xe8, 0x00, 0x11, 0x03, 0xdd, 0x03, 0x30, 0x04, 0x1a, 0x05, 0xdb, 0x04, 0xfa, 0x05, 0x85, 0x07, + 0x8a, 0x07, 0x5c, 0x08, 0x12, 0x09, 0xa8, 0x08, 0xbd, 0x08, 0x44, 0x09, 0xcc, 0x09, 0xbd, 0x09, + 0x66, 0x0b, 0x34, 0x0c, 0x0f, 0x0d, 0x9d, 0x0c, 0x62, 0x0a, 0xe1, 0x08, 0x02, 0x06, 0x0d, 0x02, + 0x52, 0xfe, 0x8b, 0xf9, 0x31, 0xf4, 0x7f, 0xf1, 0x1d, 0xf3, 0xb2, 0xf2, 0x06, 0xf3, 0xa3, 0xf3, + 0xf8, 0xf1, 0x14, 0xf1, 0x21, 0xf0, 0x6f, 0xef, 0xb4, 0xf0, 0x01, 0xf2, 0x58, 0xf3, 0xe2, 0xf5, + 0x53, 0xf6, 0x59, 0xf7, 0x8b, 0xf8, 0xb9, 0xf9, 0x45, 0xfc, 0xb7, 0xfe, 0x20, 0x00, 0x5c, 0x01, + 0x26, 0x02, 0x43, 0x04, 0x3d, 0x06, 0x80, 0x06, 0xe1, 0x06, 0xb7, 0x05, 0x95, 0x04, 0x35, 0x02, + 0x75, 0x00, 0xe2, 0x00, 0x9f, 0xfe, 0xf5, 0xfe, 0xa7, 0x01, 0xa1, 0x03, 0x35, 0x05, 0x24, 0x05, + 0x51, 0x04, 0x1e, 0x05, 0xd5, 0x05, 0xd3, 0x04, 0x72, 0x05, 0x2f, 0x06, 0x12, 0x06, 0x16, 0x08, + 0x0e, 0x08, 0xba, 0x07, 0xb9, 0x07, 0xbc, 0x05, 0xbe, 0x03, 0x86, 0x02, 0xc3, 0x02, 0xc7, 0x01, + 0x2f, 0x00, 0xdd, 0x00, 0x04, 0x00, 0xf6, 0xfe, 0xc5, 0xfd, 0xf8, 0xfc, 0x6b, 0xfc, 0xb3, 0xfc, + 0x63, 0xfb, 0xc8, 0xf9, 0x25, 0xf9, 0x89, 0xf7, 0x2a, 0xf9, 0xfc, 0xf9, 0xdc, 0xfa, 0x81, 0xfc, + 0xa1, 0xfd, 0x75, 0xff, 0x02, 0x01, 0x96, 0x01, 0xd0, 0x01, 0xf8, 0x01, 0x6b, 0x02, 0x53, 0x03, + 0x88, 0x04, 0x01, 0x04, 0x61, 0x03, 0xf2, 0x02, 0xee, 0x01, 0x6b, 0x01, 0x78, 0xff, 0x5d, 0xfd, + 0xc0, 0xf9, 0x7e, 0xf7, 0xa1, 0xf9, 0xcb, 0xf9, 0x3a, 0xfa, 0x52, 0xfa, 0x4c, 0xf8, 0x1e, 0xf6, + 0xc3, 0xf3, 0x7e, 0xf2, 0xb8, 0xf2, 0x7c, 0xf3, 0x5d, 0xf6, 0xf0, 0xf9, 0x9e, 0xfb, 0x88, 0xfd, + 0x5c, 0xff, 0xac, 0x00, 0xff, 0x03, 0x64, 0x05, 0xc5, 0x05, 0x00, 0x07, 0x1e, 0x06, 0xe2, 0x06, + 0xfa, 0x07, 0xde, 0x06, 0xa6, 0x07, 0x59, 0x06, 0x17, 0x05, 0xee, 0x02, 0xe2, 0x01, 0xe3, 0x01, + 0x27, 0x00, 0xce, 0x00, 0x87, 0x01, 0xd0, 0x01, 0x40, 0x02, 0x9c, 0x01, 0xd3, 0xff, 0x94, 0xff, + 0xe8, 0xfe, 0x94, 0xfc, 0x43, 0xfc, 0xb6, 0xfa, 0xaf, 0xf9, 0x84, 0xfc, 0xcf, 0xfd, 0xd5, 0xff, + 0x03, 0x01, 0xdc, 0x01, 0xe8, 0x01, 0x42, 0x01, 0x6b, 0x01, 0xd7, 0x01, 0x31, 0x01, 0x34, 0x01, + 0xae, 0x01, 0xab, 0x00, 0x60, 0xff, 0xa2, 0xff, 0xe9, 0xfe, 0x39, 0x00, 0xd3, 0x00, 0x1d, 0x00, + 0x06, 0x01, 0x88, 0x00, 0xe9, 0x02, 0x51, 0x04, 0x88, 0x04, 0x59, 0x05, 0xb6, 0x05, 0x3d, 0x06, + 0x10, 0x05, 0x67, 0x04, 0xb0, 0x03, 0xc0, 0x01, 0x95, 0x00, 0x9d, 0x01, 0x9a, 0x02, 0x7c, 0x03, + 0xc8, 0x03, 0x8b, 0x03, 0x26, 0x04, 0x5d, 0x04, 0xa9, 0x01, 0x55, 0xff, 0x4a, 0xfc, 0xc9, 0xf9, + 0xaf, 0xfa, 0x16, 0xf9, 0x54, 0xf9, 0xed, 0xf8, 0xda, 0xf6, 0xf0, 0xf4, 0x5d, 0xf3, 0x74, 0xf3, + 0x05, 0xf4, 0xf2, 0xf4, 0x50, 0xf7, 0x6f, 0xf9, 0x3e, 0xfb, 0xc1, 0xfc, 0x16, 0xfe, 0xdd, 0xfe, + 0xe6, 0x00, 0x7a, 0x01, 0x3c, 0x02, 0xaa, 0x02, 0xcb, 0x00, 0xc2, 0x02, 0xbb, 0x04, 0xbe, 0x05, + 0xf7, 0x07, 0xb1, 0x07, 0xd3, 0x08, 0xbb, 0x07, 0x52, 0x06, 0x8f, 0x05, 0xd2, 0x03, 0x44, 0x04, + 0x67, 0x05, 0x2a, 0x06, 0x03, 0x06, 0x62, 0x05, 0xe2, 0x03, 0x03, 0x03, 0x46, 0x03, 0x5c, 0x02, + 0x14, 0x02, 0xd2, 0xff, 0xb4, 0xfe, 0x30, 0xff, 0x25, 0x00, 0x48, 0x02, 0x83, 0x02, 0xc0, 0x02, + 0xd5, 0x02, 0xfc, 0x00, 0x9f, 0xff, 0x86, 0xff, 0x04, 0xfe, 0xcd, 0xfd, 0x75, 0xfe, 0x27, 0xfd, + 0x5c, 0xfd, 0xaa, 0xfe, 0xd9, 0xfd, 0x85, 0x00, 0xe8, 0x01, 0xa3, 0x01, 0x5b, 0x03, 0x50, 0x03, + 0x82, 0x03, 0xd7, 0x04, 0xe0, 0x04, 0x52, 0x05, 0x73, 0x06, 0x18, 0x08, 0xce, 0x07, 0xe8, 0x08, + 0x58, 0x09, 0x08, 0x08, 0xc1, 0x08, 0x80, 0x0a, 0x0d, 0x0b, 0xe0, 0x0b, 0x85, 0x0c, 0x79, 0x0b, + 0x69, 0x0b, 0x80, 0x09, 0x11, 0x05, 0xb7, 0x01, 0xde, 0xfb, 0x1e, 0xf8, 0xfe, 0xf8, 0x58, 0xf9, + 0x4d, 0xfa, 0x7c, 0xfa, 0x44, 0xfa, 0x6a, 0xf9, 0x00, 0xf8, 0xd2, 0xf6, 0xdd, 0xf5, 0xea, 0xf5, + 0xb7, 0xf5, 0x56, 0xf6, 0x27, 0xf7, 0x10, 0xf8, 0x3c, 0xf8, 0x71, 0xf8, 0x47, 0xfb, 0x4b, 0xfc, + 0xfc, 0xfd, 0x2d, 0xff, 0x9e, 0xfe, 0x20, 0x01, 0xdd, 0x01, 0x49, 0x02, 0x85, 0x03, 0x45, 0x02, + 0xb6, 0x01, 0x8c, 0xff, 0x89, 0xfd, 0x1c, 0xfc, 0x9a, 0xfa, 0xf6, 0xf8, 0xe9, 0xf9, 0x4b, 0xfb, + 0xf1, 0xfb, 0xbe, 0xfc, 0x5f, 0xfc, 0x3a, 0xfd, 0x54, 0xfe, 0xa0, 0xfd, 0x35, 0xfe, 0x9a, 0xfd, + 0xdf, 0xfc, 0x2c, 0xfd, 0xe5, 0xfd, 0x15, 0xff, 0xb3, 0xff, 0x28, 0x01, 0x0e, 0x01, 0x51, 0x00, + 0x33, 0x00, 0xa4, 0xff, 0x3b, 0xff, 0x4b, 0xff, 0x88, 0x00, 0xaf, 0xff, 0xf0, 0xff, 0x28, 0x00, + 0x67, 0xfe, 0x51, 0xff, 0x12, 0xff, 0xa5, 0xfd, 0x28, 0xfd, 0x5a, 0xfa, 0x1b, 0xf9, 0x21, 0xf9, + 0x0f, 0xfa, 0xc1, 0xfb, 0x61, 0xfc, 0xcc, 0xfe, 0xe7, 0x00, 0x40, 0x02, 0x55, 0x02, 0xf8, 0x01, + 0x3c, 0x02, 0x77, 0x03, 0x4d, 0x04, 0x09, 0x04, 0x05, 0x05, 0x07, 0x04, 0xad, 0x03, 0x9c, 0x03, + 0x77, 0x01, 0x3d, 0x00, 0xae, 0xfc, 0x67, 0xfa, 0xa0, 0xfa, 0x44, 0xfb, 0xe1, 0xfb, 0xcc, 0xfa, + 0xd1, 0xfa, 0xc7, 0xf9, 0xa9, 0xf7, 0xed, 0xf6, 0x4a, 0xf6, 0xba, 0xf5, 0x93, 0xf5, 0xc8, 0xf6, + 0x1b, 0xf8, 0x4a, 0xfb, 0x3a, 0xfe, 0xca, 0xff, 0xd5, 0x03, 0xa7, 0x05, 0x42, 0x07, 0x0f, 0x09, + 0x9e, 0x08, 0xd1, 0x09, 0x27, 0x0b, 0x51, 0x0d, 0x82, 0x0e, 0x2d, 0x0e, 0xdf, 0x0c, 0xf5, 0x0b, + 0x05, 0x0b, 0xba, 0x09, 0xf8, 0x07, 0xaa, 0x06, 0x77, 0x06, 0x93, 0x05, 0x52, 0x05, 0x8c, 0x04, + 0x97, 0x01, 0xc2, 0x00, 0x6a, 0x00, 0xae, 0xfd, 0x6a, 0xfd, 0x3e, 0xf9, 0x5c, 0xf6, 0x73, 0xf6, + 0x92, 0xf5, 0xe8, 0xf6, 0x2a, 0xf9, 0xaf, 0xfa, 0x18, 0xfb, 0x78, 0xfb, 0xed, 0xfa, 0x0e, 0xfc, + 0x37, 0xfc, 0xd8, 0xfb, 0x7a, 0xfd, 0x63, 0xfc, 0x84, 0xfc, 0x21, 0xfd, 0xdc, 0xfc, 0xe4, 0xfd, + 0xe6, 0xfe, 0x47, 0x00, 0x54, 0x01, 0x10, 0x02, 0xf6, 0x01, 0x5c, 0x01, 0x88, 0x00, 0x8e, 0x02, + 0x0f, 0x05, 0x41, 0x06, 0xeb, 0x07, 0x20, 0x07, 0xb9, 0x06, 0x86, 0x07, 0x7e, 0x03, 0x03, 0x03, + 0x8e, 0x04, 0x5d, 0x02, 0xdd, 0x04, 0x21, 0x04, 0xd6, 0x06, 0x1e, 0x0a, 0xd0, 0x06, 0xc0, 0x06, + 0xc8, 0x04, 0x06, 0x01, 0x6d, 0xff, 0x85, 0xfb, 0x86, 0xfa, 0x98, 0xfc, 0x6c, 0xfd, 0x54, 0xfa, + 0x6a, 0xfb, 0xca, 0xf9, 0x2c, 0xf8, 0x74, 0xf9, 0x86, 0xf7, 0xb3, 0xf6, 0xc9, 0xf7, 0xed, 0xf5, + 0xfc, 0xf9, 0x9c, 0xfd, 0x2f, 0xff, 0x70, 0xfe, 0x20, 0x00, 0x8d, 0xff, 0x7c, 0xfe, 0x5f, 0xf8, + 0x28, 0xf8, 0xa1, 0xf9, 0x3f, 0xf6, 0x29, 0xfb, 0x2f, 0xfc, 0xdd, 0xfc, 0xb9, 0x00, 0x24, 0xfe, + 0x60, 0xfc, 0x33, 0xfd, 0x40, 0x00, 0x34, 0x00, 0xda, 0x02, 0x30, 0x05, 0x01, 0x08, 0xfd, 0x09, + 0xca, 0x0b, 0x20, 0x11, 0xc7, 0x12, 0x2c, 0x16, 0xc9, 0x17, 0xf6, 0x17, 0xf7, 0x1b, 0x58, 0x1b, + 0xd5, 0x1c, 0x0f, 0x26, 0x36, 0x25, 0x62, 0x22, 0x5a, 0x20, 0xc8, 0x1b, 0xeb, 0x1b, 0xc3, 0x15, + 0x9b, 0x0d, 0x0a, 0x07, 0x2f, 0xfe, 0x38, 0xff, 0xc8, 0xfe, 0x7c, 0xf9, 0x88, 0xf9, 0x8c, 0xf8, + 0x93, 0xf5, 0xe0, 0xf4, 0xd0, 0xf4, 0xcf, 0xef, 0x0c, 0xef, 0xb6, 0xef, 0x3c, 0xee, 0xc7, 0xee, + 0xb7, 0xec, 0xd1, 0xeb, 0xd0, 0xeb, 0xd5, 0xeb, 0xcc, 0xed, 0x7a, 0xf1, 0x64, 0xf3, 0x60, 0xf6, + 0x85, 0xf9, 0x75, 0xfe, 0x5a, 0x06, 0xf9, 0x05, 0x2e, 0x04, 0x66, 0x00, 0xbc, 0xfa, 0x21, 0xf6, + 0x57, 0xed, 0xd9, 0xe6, 0x63, 0xde, 0xd7, 0xd9, 0xb2, 0xda, 0x46, 0xd8, 0xf1, 0xd7, 0x02, 0xdb, + 0x9c, 0xdb, 0xcc, 0xdd, 0x3c, 0xe3, 0x32, 0xe3, 0xf0, 0xe2, 0x8b, 0xe7, 0x8d, 0xea, 0x7a, 0xee, + 0x07, 0xf1, 0x0f, 0xf1, 0x65, 0xf5, 0x77, 0xf7, 0x34, 0xfb, 0x06, 0x04, 0xc2, 0x06, 0x60, 0x0b, + 0x76, 0x11, 0x4c, 0x16, 0xbd, 0x1e, 0x75, 0x21, 0x48, 0x1d, 0x89, 0x1b, 0x13, 0x18, 0xdb, 0x14, + 0x67, 0x12, 0x1a, 0x0f, 0x33, 0x0a, 0xc9, 0x0a, 0xeb, 0x0b, 0xf6, 0x0b, 0x9d, 0x0d, 0x71, 0x0c, + 0xcf, 0x0b, 0xc8, 0x0a, 0x6b, 0x0a, 0x9d, 0x0b, 0x42, 0x08, 0x38, 0x07, 0x69, 0x07, 0xbd, 0x06, + 0xff, 0x06, 0x76, 0x07, 0x58, 0x08, 0x0f, 0x0b, 0x37, 0x0c, 0x6b, 0x13, 0x1f, 0x17, 0xd8, 0x16, + 0xbf, 0x18, 0x04, 0x18, 0xc9, 0x1a, 0x00, 0x1d, 0x76, 0x17, 0x8b, 0x13, 0x51, 0x10, 0x39, 0x0b, + 0x33, 0x03, 0xa0, 0xfd, 0x1c, 0xf5, 0x0c, 0xef, 0x9b, 0xee, 0x4c, 0xeb, 0x90, 0xea, 0x61, 0xeb, + 0x6b, 0xe9, 0xdd, 0xe7, 0xb9, 0xe7, 0xe9, 0xea, 0x7a, 0xea, 0x25, 0xea, 0x4e, 0xeb, 0xcd, 0xed, + 0x98, 0xee, 0xfa, 0xed, 0x36, 0xef, 0x37, 0xf0, 0x80, 0xf0, 0xd9, 0xf6, 0x49, 0xfc, 0xa7, 0xff, + 0xda, 0x06, 0xd7, 0x0c, 0x2e, 0x12, 0x00, 0x19, 0xd7, 0x15, 0x27, 0x12, 0x76, 0x0f, 0xb1, 0x0b, + 0x82, 0x06, 0xb5, 0x00, 0xf7, 0xfc, 0x8e, 0xfa, 0xb6, 0xfb, 0xae, 0xfd, 0x19, 0xfd, 0x82, 0xfe, + 0xf3, 0xfe, 0xf2, 0xfd, 0x25, 0xfe, 0x3f, 0xff, 0xe9, 0xff, 0xc3, 0xfe, 0xb1, 0xfc, 0x03, 0xfc, + 0x8c, 0xfd, 0xdc, 0xfc, 0x04, 0xff, 0xf4, 0x03, 0xc1, 0x04, 0x70, 0x0b, 0xda, 0x13, 0x1a, 0x18, + 0x6a, 0x1f, 0xc7, 0x23, 0x75, 0x27, 0xff, 0x2d, 0xbc, 0x2b, 0x20, 0x26, 0xb1, 0x1f, 0xa2, 0x18, + 0xb0, 0x10, 0xb0, 0x0a, 0xe1, 0x03, 0x39, 0xfd, 0x5f, 0xfa, 0x68, 0xf8, 0x3d, 0xf6, 0x38, 0xf3, + 0xb4, 0xf0, 0x58, 0xed, 0x7b, 0xe8, 0x29, 0xe7, 0xa6, 0xe3, 0xc4, 0xdf, 0x51, 0xdf, 0x07, 0xe0, + 0x8f, 0xe1, 0x20, 0xe3, 0x4b, 0xe3, 0x82, 0xe7, 0x07, 0xec, 0xb1, 0xf0, 0x40, 0xf9, 0x81, 0xfd, + 0x50, 0x04, 0x6f, 0x0c, 0x85, 0x10, 0xb8, 0x18, 0x02, 0x1d, 0x71, 0x1b, 0x07, 0x17, 0x22, 0x14, + 0x92, 0x0e, 0x48, 0x09, 0x0c, 0x05, 0x82, 0xff, 0x48, 0xfb, 0x00, 0xf9, 0x2c, 0xf7, 0xbb, 0xf3, + 0x45, 0xf1, 0x99, 0xed, 0xe8, 0xe6, 0x0e, 0xe3, 0xb0, 0xdf, 0x39, 0xdc, 0x2e, 0xd9, 0xf1, 0xd6, + 0x5b, 0xd9, 0xfc, 0xda, 0x52, 0xdb, 0x38, 0xdf, 0x9c, 0xe2, 0x03, 0xe5, 0x73, 0xec, 0x88, 0xf2, + 0x01, 0xf8, 0x18, 0x01, 0x37, 0x07, 0xd2, 0x10, 0x9d, 0x18, 0xd2, 0x1a, 0xa2, 0x1a, 0x34, 0x18, + 0xa8, 0x16, 0x3c, 0x12, 0x01, 0x10, 0xb5, 0x0c, 0xc7, 0x0a, 0xd8, 0x0b, 0x61, 0x0b, 0x82, 0x0a, + 0xb9, 0x0a, 0x6a, 0x09, 0xe1, 0x05, 0x81, 0x03, 0x1f, 0x02, 0x3b, 0x00, 0x55, 0x00, 0xe2, 0xff, + 0xe5, 0x00, 0xae, 0x03, 0x4d, 0x04, 0x0d, 0x05, 0x83, 0x07, 0x1a, 0x07, 0xb4, 0x0a, 0x97, 0x10, + 0x23, 0x14, 0xd8, 0x18, 0xa7, 0x1c, 0xc6, 0x1f, 0xa5, 0x24, 0x70, 0x25, 0x2a, 0x22, 0xd9, 0x1d, + 0x16, 0x1a, 0x36, 0x13, 0xe1, 0x0b, 0xfb, 0x03, 0xfc, 0xfd, 0xe6, 0xfa, 0x9f, 0xf8, 0xeb, 0xf5, + 0x4c, 0xf3, 0x1c, 0xf0, 0x85, 0xec, 0x0d, 0xe8, 0x6e, 0xe5, 0xcd, 0xe2, 0x1e, 0xe2, 0x11, 0xe1, + 0xaf, 0xe1, 0x4a, 0xe5, 0xd8, 0xe7, 0xd5, 0xe9, 0x4f, 0xee, 0x23, 0xf0, 0xe5, 0xf2, 0x00, 0xfb, + 0xb5, 0x00, 0xf0, 0x07, 0x14, 0x10, 0x33, 0x16, 0x8d, 0x1f, 0x55, 0x25, 0x55, 0x23, 0x70, 0x1d, + 0x62, 0x18, 0xf3, 0x10, 0x8d, 0x0a, 0xc6, 0x03, 0x61, 0xfd, 0x8d, 0xf9, 0x8a, 0xf7, 0xdb, 0xf5, + 0xb4, 0xf4, 0x71, 0xf4, 0x01, 0xf2, 0x0d, 0xee, 0x23, 0xec, 0x7f, 0xea, 0x3b, 0xeb, 0xed, 0xe9, + 0x1b, 0xeb, 0xf8, 0xef, 0xed, 0xf0, 0x29, 0xf1, 0x1b, 0xf5, 0xff, 0xf7, 0x77, 0xfa, 0x0f, 0x01, + 0xdb, 0x06, 0x19, 0x0c, 0x5b, 0x14, 0x77, 0x1a, 0x37, 0x21, 0xc6, 0x26, 0xa4, 0x27, 0xdb, 0x22, + 0x3f, 0x1e, 0x0d, 0x18, 0xb3, 0x10, 0x20, 0x0b, 0x9c, 0x05, 0x86, 0x01, 0x2c, 0x00, 0xf8, 0xfe, + 0xe5, 0xfc, 0x3b, 0xfa, 0x0c, 0xf7, 0x56, 0xf1, 0x15, 0xed, 0x26, 0xeb, 0xe6, 0xe9, 0x85, 0xe8, + 0x07, 0xe8, 0xe7, 0xea, 0x5e, 0xee, 0x75, 0xee, 0xf3, 0xf1, 0xec, 0xf5, 0xc2, 0xf5, 0x93, 0xfb, + 0x42, 0x01, 0x43, 0x03, 0x8c, 0x0a, 0x48, 0x10, 0xe9, 0x15, 0x74, 0x1d, 0x6e, 0x20, 0xd8, 0x1c, + 0x08, 0x1a, 0xfd, 0x15, 0x35, 0x10, 0x75, 0x0a, 0x2a, 0x03, 0x83, 0xfd, 0xd2, 0xfb, 0x61, 0xf9, + 0x84, 0xf6, 0x5e, 0xf4, 0xd9, 0xf2, 0x15, 0xf0, 0x22, 0xed, 0x6f, 0xeb, 0x9b, 0xe9, 0x2a, 0xe9, + 0x1f, 0xe7, 0x7a, 0xe8, 0x69, 0xec, 0xed, 0xec, 0x0f, 0xed, 0x63, 0xee, 0xe6, 0xec, 0x2b, 0xef, + 0x5d, 0xf3, 0x17, 0xf6, 0x41, 0xfd, 0xcc, 0x02, 0x06, 0x08, 0x72, 0x0f, 0x6c, 0x14, 0x5d, 0x13, + 0x1c, 0x10, 0x63, 0x0c, 0xe5, 0x07, 0xdd, 0x02, 0x57, 0xfe, 0x22, 0xfb, 0x85, 0xf9, 0xae, 0xfa, + 0xa2, 0xfa, 0xcc, 0xf9, 0xbb, 0xfa, 0xc0, 0xfa, 0xc0, 0xf8, 0xdc, 0xf7, 0x0c, 0xf6, 0x4e, 0xf6, + 0x33, 0xf5, 0xaf, 0xf5, 0xbb, 0xf9, 0xde, 0xfa, 0xef, 0xfa, 0x09, 0xff, 0x00, 0x01, 0x46, 0x01, + 0x91, 0x06, 0x49, 0x0b, 0x40, 0x0f, 0xc0, 0x15, 0x4c, 0x1b, 0x65, 0x21, 0x42, 0x27, 0x0f, 0x25, + 0x8f, 0x20, 0x94, 0x1b, 0x92, 0x16, 0x52, 0x12, 0xed, 0x0b, 0x84, 0x05, 0x77, 0x01, 0x5f, 0xfe, + 0x12, 0xfc, 0x80, 0xf9, 0x51, 0xf7, 0x36, 0xf6, 0x4f, 0xf3, 0x7f, 0xf0, 0xec, 0xed, 0x58, 0xeb, + 0x0e, 0xe9, 0xbb, 0xe8, 0x2c, 0xec, 0x3f, 0xef, 0xfa, 0xee, 0xdc, 0xf1, 0x68, 0xf4, 0x32, 0xf5, + 0x29, 0xfb, 0xae, 0x00, 0x92, 0x05, 0xf1, 0x0c, 0x2f, 0x13, 0x84, 0x1a, 0x89, 0x22, 0x35, 0x26, + 0x98, 0x25, 0xb6, 0x22, 0x72, 0x1f, 0x61, 0x1a, 0xec, 0x14, 0xf8, 0x0e, 0xa6, 0x09, 0xe3, 0x07, + 0x65, 0x05, 0x2e, 0x03, 0x00, 0x00, 0x8a, 0xfd, 0x09, 0xf8, 0xe9, 0xf1, 0x8c, 0xed, 0x5b, 0xea, + 0xd1, 0xe7, 0x4c, 0xe4, 0x32, 0xe5, 0x0e, 0xe7, 0xbf, 0xe4, 0x0a, 0xe6, 0xd3, 0xe6, 0xcf, 0xe7, + 0x3e, 0xec, 0x54, 0xf1, 0xe2, 0xf5, 0x06, 0xfc, 0xd5, 0x03, 0x24, 0x0b, 0xd0, 0x12, 0xf8, 0x18, + 0x0b, 0x18, 0x34, 0x15, 0x46, 0x14, 0x95, 0x12, 0x81, 0x0d, 0x18, 0x08, 0xc7, 0x02, 0xba, 0x00, + 0x67, 0x00, 0x50, 0xfe, 0xe5, 0xfc, 0x86, 0xfa, 0xf6, 0xf6, 0x8b, 0xf4, 0xa8, 0xf0, 0x43, 0xef, + 0xd5, 0xef, 0x64, 0xed, 0x40, 0xef, 0x01, 0xf5, 0x75, 0xf5, 0xfe, 0xf6, 0x24, 0xfa, 0x10, 0xfb, + 0x71, 0xfd, 0x37, 0x02, 0x69, 0x06, 0xec, 0x0b, 0x79, 0x11, 0x83, 0x16, 0xb0, 0x1c, 0xda, 0x21, + 0x9e, 0x22, 0x23, 0x21, 0x9b, 0x1e, 0xf9, 0x1a, 0xaa, 0x14, 0xf3, 0x0d, 0x55, 0x06, 0x5a, 0x01, + 0xb7, 0xff, 0xfc, 0xfc, 0x35, 0xf9, 0xc1, 0xf4, 0xda, 0xf0, 0x84, 0xed, 0x00, 0xeb, 0x19, 0xe8, + 0xcc, 0xe6, 0xcb, 0xe4, 0x81, 0xe4, 0x52, 0xe9, 0x34, 0xeb, 0xe8, 0xec, 0x47, 0xf0, 0xec, 0xf0, + 0x23, 0xf4, 0xef, 0xf7, 0xc8, 0xfc, 0xec, 0x00, 0x57, 0x06, 0x00, 0x0d, 0x41, 0x13, 0xf7, 0x1a, + 0x93, 0x1d, 0xd1, 0x1a, 0xd8, 0x15, 0x02, 0x11, 0x57, 0x0a, 0x91, 0x04, 0x1a, 0xfe, 0x1e, 0xf8, + 0x92, 0xf6, 0x18, 0xf3, 0xdd, 0xef, 0x8b, 0xed, 0xbf, 0xeb, 0x53, 0xeb, 0x75, 0xea, 0x19, 0xe8, + 0x7b, 0xe9, 0x4a, 0xe9, 0x6a, 0xe8, 0x1f, 0xee, 0xc5, 0xf1, 0x75, 0xf2, 0x2c, 0xf6, 0xb9, 0xf9, + 0x0d, 0xfd, 0xbe, 0x01, 0xdf, 0x07, 0xfb, 0x0c, 0x8c, 0x12, 0x15, 0x1a, 0x88, 0x20, 0xd9, 0x27, + 0x98, 0x2c, 0xbd, 0x2a, 0xa0, 0x25, 0xa7, 0x21, 0x0d, 0x1c, 0x59, 0x16, 0x08, 0x0f, 0x53, 0x09, + 0xfd, 0x06, 0x69, 0x03, 0x5a, 0x01, 0x0e, 0xff, 0x68, 0xfb, 0xdb, 0xf7, 0xc5, 0xf3, 0x8a, 0xef, + 0xe2, 0xec, 0xe6, 0xea, 0xed, 0xe7, 0xd1, 0xe8, 0x2d, 0xeb, 0xd0, 0xea, 0xe9, 0xeb, 0x6d, 0xee, + 0x5d, 0xf1, 0xbb, 0xf3, 0x2e, 0xf7, 0xd5, 0xfa, 0xd6, 0xfd, 0x1a, 0x04, 0x03, 0x0a, 0x8d, 0x11, + 0x20, 0x18, 0x7f, 0x18, 0x40, 0x16, 0x67, 0x15, 0xf0, 0x13, 0x27, 0x10, 0xeb, 0x0a, 0xe2, 0x04, + 0x63, 0x02, 0x04, 0x01, 0xd9, 0xfe, 0x99, 0xfd, 0xf8, 0xfb, 0xa3, 0xfa, 0xaf, 0xf9, 0xc2, 0xf5, + 0x66, 0xf4, 0x3b, 0xf4, 0x8e, 0xf1, 0x6b, 0xf1, 0x28, 0xf5, 0x5c, 0xf6, 0x60, 0xf7, 0x10, 0xf8, + 0x21, 0xf6, 0x1f, 0xf5, 0x2f, 0xf6, 0x90, 0xf9, 0xcf, 0xfc, 0xf4, 0x02, 0x55, 0x08, 0xae, 0x0d, + 0xd9, 0x14, 0xcb, 0x16, 0x0a, 0x15, 0x2c, 0x12, 0xb1, 0x0f, 0xaf, 0x0b, 0x74, 0x07, 0x90, 0x00, + 0x1f, 0xfd, 0x38, 0xfb, 0xc1, 0xf9, 0x4a, 0xf9, 0x27, 0xf7, 0x06, 0xf6, 0xed, 0xf5, 0xd7, 0xf2, + 0xa8, 0xef, 0x28, 0xef, 0x1e, 0xec, 0xfb, 0xea, 0xc7, 0xee, 0x74, 0xef, 0x39, 0xf0, 0x47, 0xf1, + 0x42, 0xf3, 0xbb, 0xf5, 0xa8, 0xf7, 0x23, 0xfd, 0x7e, 0x00, 0x14, 0x07, 0x7c, 0x0e, 0xa9, 0x14, + 0x49, 0x1c, 0x01, 0x21, 0x64, 0x21, 0x11, 0x1f, 0xda, 0x1c, 0x1a, 0x19, 0x12, 0x14, 0xd3, 0x0c, + 0x4d, 0x07, 0x59, 0x03, 0x19, 0x00, 0xfc, 0xfd, 0x30, 0xfa, 0x1c, 0xf7, 0x3b, 0xf5, 0x10, 0xf2, + 0x85, 0xee, 0x75, 0xec, 0x43, 0xea, 0xf9, 0xe6, 0xc0, 0xe7, 0x38, 0xea, 0x90, 0xea, 0xe6, 0xeb, + 0x12, 0xed, 0x2a, 0xee, 0x4f, 0xf1, 0xed, 0xf6, 0x35, 0xfa, 0xf6, 0xff, 0x89, 0x06, 0xe3, 0x0c, + 0xfd, 0x15, 0x0d, 0x1e, 0x42, 0x21, 0x6c, 0x21, 0x45, 0x1f, 0x6e, 0x1b, 0xe6, 0x17, 0xa5, 0x10, + 0x6f, 0x0b, 0x09, 0x08, 0x50, 0x05, 0x45, 0x04, 0xf6, 0x01, 0x2a, 0xff, 0x50, 0xfd, 0x3e, 0xf9, + 0x28, 0xf3, 0xd9, 0xef, 0x63, 0xed, 0x2f, 0xea, 0x1c, 0xeb, 0x9f, 0xec, 0x31, 0xeb, 0xb8, 0xeb, + 0x41, 0xed, 0xf2, 0xef, 0x1b, 0xf3, 0xdd, 0xf7, 0xf8, 0xfb, 0xa5, 0x00, 0xca, 0x08, 0xf6, 0x0e, + 0x7e, 0x17, 0xc3, 0x1f, 0x83, 0x22, 0x6b, 0x21, 0x1a, 0x1f, 0x97, 0x1c, 0xd3, 0x18, 0x38, 0x12, + 0x3c, 0x0b, 0x55, 0x07, 0x2a, 0x04, 0x56, 0x01, 0x15, 0xff, 0x73, 0xfb, 0x0f, 0xf9, 0xab, 0xf5, + 0x7e, 0xf1, 0x96, 0xee, 0x4b, 0xed, 0x35, 0xeb, 0x6a, 0xe9, 0x83, 0xeb, 0xcf, 0xec, 0xd1, 0xed, + 0x97, 0xef, 0x73, 0xf1, 0x73, 0xf1, 0x19, 0xf4, 0xce, 0xf7, 0xe7, 0xfa, 0xba, 0x01, 0x92, 0x07, + 0x91, 0x0e, 0x09, 0x16, 0x7a, 0x19, 0xdf, 0x1a, 0xa8, 0x19, 0x41, 0x17, 0x65, 0x15, 0x33, 0x10, + 0x29, 0x09, 0xa3, 0x05, 0x63, 0x01, 0xda, 0xfe, 0x72, 0xfc, 0x3c, 0xf9, 0xd3, 0xf7, 0xe4, 0xf6, + 0x9f, 0xf5, 0x66, 0xf2, 0x15, 0xf1, 0x45, 0xef, 0x39, 0xed, 0x9b, 0xef, 0xe3, 0xf0, 0xfe, 0xf2, + 0x64, 0xf5, 0x55, 0xf7, 0x1e, 0xf8, 0x2e, 0xfa, 0x09, 0xfd, 0x6e, 0xfe, 0x03, 0x04, 0x3d, 0x09, + 0xac, 0x0f, 0xe1, 0x16, 0x4c, 0x1c, 0xe0, 0x1e, 0x04, 0x1b, 0x4d, 0x16, 0x6d, 0x11, 0x07, 0x0b, + 0xb6, 0x02, 0xbc, 0xfc, 0x2c, 0xf7, 0x8b, 0xf3, 0x37, 0xf0, 0x90, 0xec, 0xeb, 0xea, 0x11, 0xea, + 0x34, 0xe9, 0x54, 0xe6, 0x46, 0xe6, 0x46, 0xe6, 0x92, 0xe4, 0xa6, 0xe6, 0xdb, 0xea, 0xf9, 0xec, + 0x89, 0xee, 0x59, 0xf1, 0xe3, 0xf3, 0xc7, 0xf6, 0x47, 0xfc, 0xf3, 0xff, 0x92, 0x05, 0xfd, 0x0c, + 0x68, 0x14, 0x1a, 0x1c, 0x26, 0x23, 0x83, 0x26, 0x01, 0x25, 0x94, 0x22, 0x17, 0x20, 0x5f, 0x1c, + 0xb7, 0x15, 0x5b, 0x10, 0x47, 0x0c, 0x73, 0x08, 0x74, 0x06, 0x8d, 0x04, 0x6e, 0x02, 0xf8, 0x00, + 0x1f, 0xfe, 0x59, 0xf8, 0xf9, 0xf3, 0xe5, 0xf1, 0xed, 0xed, 0x0b, 0xed, 0xbe, 0xed, 0x5c, 0xec, + 0xa9, 0xec, 0xd7, 0xed, 0x00, 0xef, 0x39, 0xf0, 0x7e, 0xf3, 0xdc, 0xf5, 0x35, 0xf9, 0xf1, 0xfd, + 0xda, 0x02, 0x89, 0x09, 0x2f, 0x0f, 0xea, 0x13, 0xd7, 0x14, 0x28, 0x14, 0xca, 0x13, 0xb3, 0x12, + 0x3e, 0x0d, 0x56, 0x07, 0xcd, 0x02, 0x58, 0x00, 0x5e, 0xff, 0x65, 0xfe, 0xb2, 0xfd, 0x99, 0xfd, + 0x96, 0xfd, 0xc3, 0xfb, 0xc2, 0xf8, 0xf8, 0xf8, 0x7e, 0xf7, 0x8f, 0xf7, 0x97, 0xfa, 0x92, 0xfb, + 0x14, 0xfd, 0x64, 0xfd, 0x1f, 0xfd, 0xc5, 0xfc, 0xe5, 0xfd, 0xd7, 0xfe, 0xcd, 0x00, 0x43, 0x05, + 0x76, 0x09, 0xb6, 0x0e, 0x3c, 0x14, 0xba, 0x19, 0xe6, 0x1b, 0xfc, 0x19, 0x29, 0x17, 0x21, 0x14, + 0xf7, 0x0e, 0xe3, 0x07, 0x3b, 0x03, 0x13, 0x00, 0x50, 0xfd, 0xc4, 0xfb, 0xb3, 0xfa, 0xe8, 0xf8, + 0x10, 0xf9, 0xd0, 0xf6, 0xfe, 0xf1, 0xfa, 0xf1, 0xec, 0xee, 0x8d, 0xec, 0x15, 0xee, 0xdf, 0xec, + 0xc4, 0xed, 0x29, 0xed, 0x3a, 0xee, 0x6e, 0xef, 0xae, 0xf1, 0x07, 0xf4, 0x4b, 0xf6, 0x95, 0xfa, + 0x7e, 0xff, 0xdd, 0x06, 0x81, 0x0d, 0x41, 0x14, 0x0d, 0x18, 0xa1, 0x17, 0x7a, 0x15, 0x5c, 0x14, + 0xaf, 0x11, 0x34, 0x0b, 0x5a, 0x06, 0xc7, 0x02, 0x4d, 0xff, 0x0b, 0xfd, 0xe3, 0xfa, 0xb4, 0xf7, + 0x0a, 0xf7, 0x54, 0xf7, 0x98, 0xf3, 0x97, 0xf2, 0xa7, 0xf1, 0xb4, 0xef, 0xae, 0xef, 0x3d, 0xef, + 0x2d, 0xf0, 0xe0, 0xef, 0xb5, 0xf0, 0x45, 0xf1, 0xc3, 0xf2, 0x4f, 0xf6, 0xbb, 0xf8, 0xbb, 0xfa, + 0x13, 0xff, 0xb3, 0x05, 0x50, 0x0c, 0x7b, 0x14, 0xe9, 0x1a, 0xf3, 0x1c, 0xb9, 0x1b, 0x64, 0x19, + 0x43, 0x17, 0x94, 0x10, 0x8d, 0x0a, 0x86, 0x06, 0xa2, 0x02, 0x26, 0x00, 0xfc, 0xfd, 0x00, 0xfb, + 0x69, 0xf9, 0xda, 0xf8, 0x6a, 0xf3, 0x6d, 0xef, 0x8e, 0xec, 0x70, 0xe7, 0xd4, 0xe5, 0xc3, 0xe4, + 0x69, 0xe4, 0x38, 0xe4, 0x1d, 0xe5, 0x4e, 0xe7, 0x3b, 0xe9, 0x18, 0xed, 0xb4, 0xef, 0xf5, 0xf2, + 0x9b, 0xf9, 0x73, 0x01, 0x41, 0x09, 0x86, 0x12, 0xea, 0x19, 0xc9, 0x1c, 0xbf, 0x1c, 0x6a, 0x1c, + 0xa1, 0x1c, 0x6b, 0x18, 0x11, 0x13, 0xe0, 0x0e, 0x4a, 0x0b, 0x68, 0x08, 0x44, 0x07, 0x41, 0x05, + 0x65, 0x03, 0xcb, 0x02, 0xcd, 0xfe, 0x1c, 0xfa, 0xd2, 0xf7, 0x4a, 0xf3, 0xf2, 0xf1, 0x17, 0xf2, + 0x37, 0xf3, 0xff, 0xf3, 0x06, 0xf4, 0xde, 0xf5, 0x8d, 0xf4, 0x51, 0xf5, 0x40, 0xf7, 0x86, 0xf8, + 0xfa, 0xfb, 0x95, 0x01, 0xb0, 0x07, 0xb3, 0x0d, 0x03, 0x14, 0x25, 0x17, 0xfc, 0x17, 0x25, 0x16, + 0xc6, 0x15, 0xec, 0x12, 0x51, 0x0c, 0x29, 0x08, 0x1f, 0x04, 0x1c, 0x01, 0x76, 0xff, 0x5f, 0xfc, + 0x2c, 0xf9, 0x6b, 0xf9, 0x41, 0xf9, 0x77, 0xf6, 0x29, 0xf5, 0x61, 0xf2, 0xe3, 0xf1, 0x93, 0xf2, + 0xa0, 0xf3, 0xab, 0xf6, 0x1a, 0xf8, 0xf2, 0xf9, 0xff, 0xfa, 0xa6, 0xfd, 0x82, 0x00, 0xef, 0x02, + 0x30, 0x07, 0xf9, 0x0c, 0x3b, 0x13, 0xb0, 0x19, 0xf3, 0x1f, 0xfc, 0x23, 0xdb, 0x25, 0x11, 0x22, + 0xaf, 0x1f, 0x32, 0x1c, 0x3e, 0x13, 0x52, 0x0c, 0x04, 0x05, 0x4c, 0xff, 0x83, 0xfa, 0x9d, 0xf5, + 0x00, 0xf2, 0x50, 0xf1, 0xa4, 0xf0, 0xcd, 0xec, 0x8a, 0xea, 0xb3, 0xe6, 0x2d, 0xe5, 0xce, 0xe5, + 0x85, 0xe6, 0xf9, 0xe8, 0x6e, 0xe8, 0x62, 0xea, 0xe3, 0xeb, 0x50, 0xee, 0x31, 0xf3, 0x95, 0xf6, + 0x1f, 0xfa, 0xcb, 0xfe, 0x38, 0x05, 0x61, 0x0c, 0x2d, 0x14, 0x58, 0x1b, 0x11, 0x1f, 0xa2, 0x1d, + 0x1c, 0x1d, 0xdd, 0x1b, 0x95, 0x15, 0x59, 0x0f, 0x64, 0x0a, 0x89, 0x06, 0xaf, 0x04, 0x08, 0x04, + 0xe0, 0x01, 0xa1, 0x00, 0x99, 0xff, 0xc7, 0xfa, 0x99, 0xf6, 0xa6, 0xf2, 0xc3, 0xef, 0x60, 0xee, + 0x81, 0xed, 0x3f, 0xee, 0x8b, 0xec, 0xb2, 0xed, 0x0d, 0xef, 0x9a, 0xef, 0xe3, 0xf2, 0x3b, 0xf4, + 0x45, 0xf6, 0x20, 0xf9, 0xd6, 0xfd, 0x03, 0x04, 0x07, 0x09, 0x9b, 0x0d, 0xed, 0x11, 0x70, 0x12, + 0x80, 0x11, 0x30, 0x12, 0x00, 0x0e, 0x01, 0x07, 0xe9, 0x01, 0x64, 0xfd, 0xfa, 0xfa, 0x4d, 0xf9, + 0xf4, 0xf6, 0x08, 0xf5, 0xf9, 0xf5, 0x36, 0xf5, 0xf2, 0xf2, 0xa2, 0xf1, 0x5d, 0xef, 0x43, 0xef, + 0x72, 0xef, 0xaf, 0xf1, 0xd6, 0xf2, 0x36, 0xf4, 0x77, 0xf5, 0x3d, 0xf5, 0x8e, 0xf7, 0x7c, 0xf9, + 0x9b, 0xfb, 0xa6, 0xfe, 0xef, 0x02, 0x90, 0x08, 0x07, 0x0f, 0x23, 0x16, 0x0f, 0x1c, 0x96, 0x1d, + 0x78, 0x1b, 0xf1, 0x1b, 0x69, 0x18, 0x30, 0x12, 0xa8, 0x0d, 0x8b, 0x09, 0x9c, 0x07, 0x2d, 0x05, + 0xe0, 0x02, 0x79, 0x00, 0xdb, 0xff, 0x11, 0x00, 0x1d, 0xfd, 0x9b, 0xfa, 0x88, 0xf6, 0x31, 0xf4, + 0x7e, 0xf2, 0xf5, 0xf2, 0x44, 0xf2, 0xba, 0xf1, 0xb4, 0xf3, 0xf3, 0xf3, 0xa8, 0xf6, 0xc9, 0xf8, + 0x8b, 0xf9, 0x7a, 0xfb, 0xfa, 0xfd, 0xe8, 0x03, 0x74, 0x0a, 0xdc, 0x0f, 0x78, 0x15, 0x67, 0x18, + 0x7e, 0x15, 0xc4, 0x14, 0xaa, 0x12, 0x12, 0x0d, 0x9f, 0x07, 0xeb, 0x01, 0xeb, 0xfd, 0x91, 0xfa, + 0x95, 0xf8, 0x01, 0xf5, 0xbc, 0xf3, 0xba, 0xf4, 0xea, 0xf2, 0x95, 0xf1, 0xb2, 0xee, 0xb2, 0xee, + 0x56, 0xee, 0x92, 0xef, 0xe2, 0xf1, 0x9f, 0xf2, 0xa6, 0xf5, 0x51, 0xf6, 0x2c, 0xf9, 0x97, 0xfc, + 0x05, 0xff, 0x29, 0x02, 0xad, 0x04, 0x21, 0x0b, 0x7d, 0x12, 0x89, 0x18, 0x22, 0x20, 0x2d, 0x25, + 0xd9, 0x24, 0x98, 0x24, 0xa1, 0x23, 0xe6, 0x1e, 0x9f, 0x18, 0x98, 0x11, 0xd5, 0x0c, 0x51, 0x09, + 0x33, 0x05, 0x1a, 0x01, 0xe5, 0xfd, 0x93, 0xfc, 0xb0, 0xf9, 0x05, 0xf6, 0x4e, 0xf1, 0x3b, 0xed, + 0xde, 0xe9, 0x2d, 0xe8, 0x14, 0xe8, 0x2d, 0xe6, 0xdd, 0xe5, 0xe2, 0xe5, 0x55, 0xe6, 0xdc, 0xe8, + 0xb1, 0xea, 0x15, 0xed, 0x39, 0xf0, 0xff, 0xf4, 0xa8, 0xfb, 0xe7, 0x01, 0x0a, 0x09, 0xa3, 0x0f, + 0xda, 0x10, 0x51, 0x11, 0xc9, 0x13, 0xac, 0x11, 0xff, 0x0d, 0x25, 0x09, 0x90, 0x04, 0x9d, 0x01, + 0x5a, 0x00, 0xe7, 0xff, 0x07, 0xfe, 0x78, 0xff, 0xb7, 0xff, 0x85, 0xfd, 0x52, 0xfb, 0x7e, 0xf7, + 0xe9, 0xf5, 0x1e, 0xf6, 0xee, 0xf7, 0xbc, 0xf8, 0x6c, 0xf9, 0x4d, 0xfa, 0x3b, 0xf9, 0x46, 0xfa, + 0x5d, 0xfa, 0x92, 0xfb, 0x41, 0xfc, 0x85, 0xfd, 0x3d, 0x03, 0xc6, 0x07, 0x1b, 0x0c, 0x92, 0x11, + 0xe1, 0x13, 0x42, 0x13, 0xfb, 0x13, 0xe3, 0x11, 0x99, 0x0c, 0x63, 0x06, 0x39, 0x01, 0xf8, 0xfd, + 0xde, 0xfa, 0x47, 0xf8, 0x8c, 0xf4, 0xe0, 0xf3, 0x6f, 0xf4, 0x6d, 0xf3, 0x0f, 0xf2, 0xe2, 0xee, + 0x01, 0xee, 0x7c, 0xec, 0x51, 0xed, 0xe7, 0xed, 0x92, 0xef, 0xd5, 0xf0, 0xe8, 0xf0, 0x74, 0xf4, + 0x28, 0xf6, 0x0a, 0xf9, 0x20, 0xfc, 0x5c, 0xfe, 0x03, 0x04, 0x10, 0x0a, 0x25, 0x10, 0x29, 0x18, + 0x5d, 0x1d, 0x06, 0x1d, 0xf8, 0x1c, 0xda, 0x1c, 0xf1, 0x18, 0xa8, 0x12, 0x70, 0x0c, 0x04, 0x08, + 0xe7, 0x04, 0x51, 0x02, 0x49, 0xfe, 0x75, 0xfc, 0xff, 0xfc, 0xda, 0xfa, 0xee, 0xf8, 0xcf, 0xf4, + 0xbb, 0xf1, 0xfd, 0xef, 0xb9, 0xf0, 0xff, 0xf0, 0x22, 0xf0, 0x2c, 0xf0, 0x42, 0xef, 0x08, 0xf1, + 0x72, 0xf3, 0x5e, 0xf6, 0x9c, 0xf8, 0x76, 0xf9, 0x3c, 0xfe, 0xe2, 0x04, 0x66, 0x0a, 0xe8, 0x11, + 0x8b, 0x18, 0xc8, 0x19, 0x31, 0x1b, 0x6f, 0x1b, 0x20, 0x18, 0x33, 0x13, 0x80, 0x0d, 0x12, 0x09, + 0x88, 0x05, 0x3f, 0x04, 0x2d, 0x02, 0x3f, 0xff, 0xe9, 0xfe, 0x06, 0xfd, 0xdf, 0xfa, 0xe2, 0xf6, + 0xe4, 0xf3, 0xdc, 0xf1, 0x2c, 0xf0, 0x03, 0xf0, 0xa6, 0xef, 0x7c, 0xf0, 0xa3, 0xf1, 0xb4, 0xf2, + 0x00, 0xf5, 0xbc, 0xf7, 0x2c, 0xfa, 0x75, 0xfb, 0x04, 0xff, 0xee, 0x05, 0x7a, 0x0b, 0x07, 0x12, + 0xfd, 0x18, 0x93, 0x1b, 0x7e, 0x1c, 0x09, 0x1e, 0x86, 0x1d, 0x21, 0x19, 0xf9, 0x12, 0x27, 0x0d, + 0xe1, 0x08, 0xbe, 0x05, 0x36, 0x02, 0x3a, 0xfd, 0x35, 0xfc, 0x07, 0xfb, 0xc3, 0xf9, 0xda, 0xf6, + 0xae, 0xf2, 0x57, 0xef, 0x81, 0xed, 0xf4, 0xed, 0xed, 0xed, 0x1f, 0xee, 0xb8, 0xed, 0xa9, 0xec, + 0xd2, 0xed, 0xd6, 0xee, 0xb5, 0xf0, 0x2b, 0xf2, 0x6c, 0xf4, 0x8a, 0xf9, 0x8d, 0xfe, 0x86, 0x04, + 0xda, 0x0b, 0xc5, 0x10, 0x8d, 0x11, 0xf3, 0x12, 0xdb, 0x12, 0x1b, 0x0f, 0x74, 0x0a, 0xc7, 0x05, + 0x49, 0x02, 0x49, 0x00, 0xeb, 0xfd, 0x60, 0xfb, 0xc4, 0xfb, 0xe2, 0xfb, 0x3c, 0xfd, 0x80, 0xfc, + 0x5c, 0xf9, 0x54, 0xf6, 0x99, 0xf4, 0xd5, 0xf4, 0x32, 0xf5, 0x76, 0xf6, 0x9c, 0xf7, 0x58, 0xf8, + 0x09, 0xfb, 0xd5, 0xfc, 0xa3, 0xff, 0x2d, 0x01, 0x71, 0x01, 0xf8, 0x04, 0x90, 0x0a, 0x75, 0x0f, + 0xb1, 0x15, 0x86, 0x1a, 0x23, 0x19, 0x83, 0x18, 0xa5, 0x17, 0x17, 0x14, 0x2c, 0x0e, 0xc2, 0x06, + 0x0a, 0x00, 0x15, 0xfb, 0xe5, 0xf7, 0x16, 0xf3, 0x66, 0xf0, 0x41, 0xef, 0xdf, 0xed, 0x7b, 0xec, + 0xad, 0xe8, 0x86, 0xe6, 0xbc, 0xe5, 0xef, 0xe5, 0xf4, 0xe6, 0x19, 0xe8, 0x0b, 0xea, 0xe3, 0xea, + 0x69, 0xed, 0x35, 0xf1, 0x2c, 0xf4, 0x3f, 0xf8, 0xd7, 0xfa, 0x0b, 0xff, 0xcb, 0x06, 0xe4, 0x0b, + 0x2e, 0x13, 0xb9, 0x1b, 0x67, 0x1f, 0x92, 0x21, 0xe4, 0x23, 0xda, 0x23, 0x34, 0x1f, 0x01, 0x19, + 0xe9, 0x12, 0xae, 0x0e, 0xc8, 0x0c, 0xf1, 0x08, 0xe5, 0x05, 0xa7, 0x03, 0xce, 0x01, 0xc2, 0x00, + 0xff, 0xfc, 0x62, 0xf9, 0x13, 0xf5, 0xf8, 0xf1, 0x86, 0xf0, 0xbc, 0xef, 0x82, 0xef, 0x36, 0xee, + 0x14, 0xee, 0xc6, 0xee, 0x93, 0xf0, 0xfe, 0xf3, 0x59, 0xf5, 0xff, 0xf6, 0x7a, 0xfc, 0x41, 0x01, + 0x4b, 0x06, 0xba, 0x0d, 0x92, 0x11, 0x57, 0x12, 0xad, 0x14, 0x83, 0x14, 0x73, 0x11, 0x85, 0x0d, + 0x05, 0x08, 0x3b, 0x03, 0x42, 0x00, 0xe0, 0xfd, 0x4d, 0xfb, 0xb7, 0xfa, 0x69, 0xfb, 0x3d, 0xfb, + 0x27, 0xf9, 0x35, 0xf6, 0x00, 0xf3, 0x4d, 0xf2, 0x35, 0xf3, 0xbf, 0xf3, 0x75, 0xf5, 0x2a, 0xf7, + 0xbc, 0xf7, 0x62, 0xf9, 0x59, 0xfb, 0xef, 0xfd, 0x91, 0xff, 0xad, 0xff, 0xd9, 0x02, 0x98, 0x07, + 0xe9, 0x0b, 0x4c, 0x13, 0x2b, 0x19, 0x57, 0x1a, 0x54, 0x1b, 0xe4, 0x1b, 0xef, 0x18, 0xf6, 0x13, + 0xd5, 0x0d, 0xb7, 0x07, 0x47, 0x04, 0x17, 0x01, 0xb9, 0xfc, 0xd4, 0xf9, 0x09, 0xf7, 0xac, 0xf6, + 0x36, 0xf5, 0x17, 0xf3, 0x53, 0xf0, 0xcf, 0xed, 0x4b, 0xed, 0xbe, 0xec, 0x93, 0xed, 0x8b, 0xee, + 0x0f, 0xee, 0x81, 0xef, 0x16, 0xf1, 0x1f, 0xf3, 0xed, 0xf5, 0xb9, 0xf6, 0x94, 0xf9, 0xe1, 0xfe, + 0x09, 0x03, 0x03, 0x0a, 0x8f, 0x10, 0x28, 0x12, 0x7b, 0x13, 0x6e, 0x14, 0x01, 0x13, 0x3f, 0x0f, + 0xb9, 0x09, 0xff, 0x03, 0xe2, 0xff, 0xa2, 0xfc, 0xa4, 0xf8, 0x45, 0xf7, 0x59, 0xf5, 0xd2, 0xf5, + 0x01, 0xf6, 0x8a, 0xf4, 0xcd, 0xf2, 0x96, 0xf0, 0xdf, 0xf0, 0x96, 0xf1, 0x97, 0xf2, 0xd3, 0xf4, + 0x06, 0xf6, 0xc7, 0xf7, 0x33, 0xfa, 0xa3, 0xfc, 0x23, 0x00, 0x98, 0x01, 0xb5, 0x02, 0xb4, 0x07, + 0x4d, 0x0b, 0xcc, 0x10, 0xb0, 0x18, 0x59, 0x1c, 0x9e, 0x1d, 0x53, 0x1e, 0xa7, 0x1d, 0x4c, 0x1a, + 0x53, 0x14, 0x1b, 0x0d, 0x53, 0x07, 0x34, 0x04, 0x7f, 0x00, 0x26, 0xfd, 0x09, 0xf9, 0x4d, 0xf7, + 0xd0, 0xf5, 0xa6, 0xf2, 0x2e, 0xef, 0x21, 0xeb, 0xb2, 0xe8, 0x0c, 0xe7, 0x03, 0xe7, 0x06, 0xe8, + 0xf7, 0xe7, 0xda, 0xe8, 0xe6, 0xe9, 0xbc, 0xeb, 0x10, 0xef, 0x31, 0xf1, 0x86, 0xf2, 0x53, 0xf8, + 0xf1, 0xfd, 0x18, 0x03, 0xd6, 0x0b, 0x9d, 0x12, 0x6b, 0x15, 0x03, 0x19, 0x9a, 0x1b, 0x17, 0x1c, + 0x7a, 0x19, 0x73, 0x14, 0x9b, 0x0f, 0x83, 0x0c, 0x2b, 0x09, 0x1c, 0x07, 0x3d, 0x05, 0x47, 0x04, + 0x42, 0x04, 0x34, 0x03, 0x19, 0x01, 0x79, 0xfd, 0x4c, 0xfb, 0x6d, 0xfa, 0xb0, 0xf9, 0xef, 0xfa, + 0xd0, 0xfa, 0x62, 0xf9, 0xa6, 0xf8, 0x1b, 0xf7, 0x2b, 0xf8, 0x36, 0xfa, 0x52, 0xf9, 0x87, 0xfb, + 0xbd, 0xfe, 0xee, 0x01, 0xa9, 0x08, 0xb5, 0x0e, 0x5f, 0x11, 0x00, 0x13, 0xe7, 0x13, 0xe1, 0x12, + 0x60, 0x0f, 0x90, 0x0a, 0x53, 0x04, 0x78, 0x00, 0x45, 0xfd, 0xb8, 0xf9, 0x86, 0xf7, 0x69, 0xf5, + 0x04, 0xf6, 0xd7, 0xf5, 0xd3, 0xf4, 0xd3, 0xf1, 0x86, 0xef, 0xa3, 0xef, 0x90, 0xee, 0x16, 0xf0, + 0x8b, 0xf1, 0xf1, 0xf1, 0x4c, 0xf4, 0x90, 0xf5, 0x0c, 0xf9, 0xde, 0xfd, 0xcf, 0xfe, 0x4e, 0x00, + 0xed, 0x04, 0xc3, 0x08, 0x72, 0x0f, 0xbc, 0x17, 0xc8, 0x1b, 0xb3, 0x1d, 0xbc, 0x1e, 0xe8, 0x1e, + 0xfb, 0x1b, 0xf4, 0x16, 0x49, 0x0f, 0x7f, 0x08, 0xfe, 0x03, 0x61, 0xff, 0x1d, 0xfc, 0x98, 0xf8, + 0x3b, 0xf6, 0xeb, 0xf3, 0xed, 0xf1, 0x25, 0xef, 0x62, 0xec, 0xb9, 0xeb, 0x37, 0xea, 0xd0, 0xea, + 0x52, 0xec, 0x88, 0xec, 0xc3, 0xed, 0xc5, 0xee, 0xf4, 0xef, 0x1c, 0xf3, 0xe2, 0xf4, 0x84, 0xf6, + 0xb4, 0xfb, 0xe1, 0xff, 0x65, 0x05, 0x9a, 0x0d, 0xd5, 0x13, 0xad, 0x17, 0x34, 0x1a, 0x57, 0x1c, + 0xe7, 0x1a, 0xe7, 0x15, 0x36, 0x0f, 0xe4, 0x09, 0x6e, 0x06, 0x6c, 0x03, 0xf1, 0x00, 0x26, 0xfd, + 0x2d, 0xfb, 0xfe, 0xf9, 0xc7, 0xf9, 0x91, 0xf8, 0x47, 0xf5, 0xd4, 0xf3, 0x8b, 0xf1, 0x0d, 0xf1, + 0x2d, 0xf2, 0x1b, 0xf2, 0xf3, 0xf2, 0x4b, 0xf3, 0x12, 0xf4, 0xcc, 0xf7, 0x98, 0xfa, 0xc1, 0xfb, + 0xda, 0xfe, 0x38, 0x02, 0x75, 0x06, 0xa0, 0x0d, 0xc6, 0x14, 0x9d, 0x17, 0xe5, 0x18, 0x08, 0x19, + 0xb2, 0x17, 0x0c, 0x15, 0x2a, 0x10, 0xb6, 0x09, 0x72, 0x04, 0x77, 0x00, 0x73, 0xfd, 0x4e, 0xfa, + 0x92, 0xf8, 0x94, 0xf7, 0x01, 0xf7, 0x71, 0xf5, 0x1c, 0xf2, 0xc6, 0xef, 0xd8, 0xee, 0x2a, 0xee, + 0xed, 0xef, 0x1d, 0xf1, 0xad, 0xf1, 0xdf, 0xf2, 0x94, 0xf2, 0x9e, 0xf5, 0x2b, 0xf8, 0xdf, 0xf7, + 0x1a, 0xfa, 0xde, 0xfc, 0x5b, 0x00, 0x7d, 0x06, 0xbe, 0x0d, 0xa5, 0x12, 0xf6, 0x14, 0xbf, 0x16, + 0x3c, 0x18, 0x7e, 0x17, 0x44, 0x14, 0x26, 0x0e, 0xb4, 0x09, 0xd8, 0x05, 0x9d, 0x02, 0x68, 0x00, + 0x07, 0xfe, 0xbe, 0xfd, 0xc8, 0xfd, 0xaa, 0xfd, 0xe3, 0xfb, 0x22, 0xfa, 0x4f, 0xf9, 0x30, 0xf7, + 0xa1, 0xf7, 0x75, 0xf8, 0x98, 0xf8, 0xca, 0xf9, 0xad, 0xf8, 0x99, 0xf9, 0xae, 0xfc, 0x07, 0xfd, + 0xe1, 0xfd, 0x87, 0x00, 0x40, 0x03, 0x43, 0x08, 0x80, 0x0f, 0x39, 0x14, 0x0c, 0x16, 0x3f, 0x16, + 0x70, 0x16, 0x5e, 0x14, 0x21, 0x10, 0x35, 0x09, 0x3f, 0x02, 0x5f, 0xfd, 0x17, 0xf9, 0x18, 0xf6, + 0x45, 0xf3, 0xf6, 0xf0, 0x56, 0xf0, 0xd6, 0xf0, 0xcb, 0xee, 0x7b, 0xec, 0x43, 0xeb, 0xa6, 0xe9, + 0x99, 0xea, 0x96, 0xec, 0x85, 0xee, 0x05, 0xf1, 0xe4, 0xf1, 0x11, 0xf3, 0x8b, 0xf7, 0xec, 0xfa, + 0xb0, 0xfd, 0xbc, 0x01, 0x50, 0x05, 0x5b, 0x0a, 0xe7, 0x11, 0xf2, 0x18, 0xc5, 0x1d, 0xb3, 0x20, + 0x19, 0x23, 0x30, 0x23, 0x56, 0x21, 0x26, 0x1b, 0xc3, 0x14, 0x56, 0x0f, 0x02, 0x0b, 0x73, 0x07, + 0x6e, 0x03, 0xa1, 0xff, 0xfd, 0xfb, 0xc9, 0xf9, 0x26, 0xf6, 0xf0, 0xf1, 0x8f, 0xee, 0xb4, 0xea, + 0xa9, 0xe8, 0xe1, 0xe8, 0x2a, 0xe8, 0x71, 0xe8, 0x45, 0xe8, 0x21, 0xe7, 0xf1, 0xe9, 0x84, 0xec, + 0xe9, 0xed, 0x53, 0xf0, 0x79, 0xf3, 0x60, 0xf7, 0x32, 0xfd, 0x82, 0x05, 0xbe, 0x0a, 0x79, 0x0d, + 0x66, 0x10, 0x68, 0x11, 0x66, 0x11, 0x58, 0x0e, 0xc1, 0x08, 0xf9, 0x03, 0x5d, 0x00, 0x9c, 0xfd, + 0xdc, 0xfb, 0xfc, 0xf9, 0xb4, 0xf8, 0x01, 0xf9, 0x80, 0xf9, 0x9a, 0xf8, 0x51, 0xf7, 0xd7, 0xf6, + 0xcb, 0xf5, 0xd2, 0xf7, 0xe6, 0xf9, 0xaf, 0xfa, 0x41, 0xfc, 0x9f, 0xfb, 0xc8, 0xfd, 0x94, 0x01, + 0xe9, 0x02, 0xe2, 0x04, 0xc9, 0x06, 0x67, 0x09, 0x4d, 0x0d, 0xdb, 0x13, 0x1e, 0x19, 0x09, 0x1b, + 0x39, 0x1c, 0xb8, 0x1b, 0x21, 0x1a, 0x50, 0x16, 0xe2, 0x0e, 0x49, 0x08, 0x4d, 0x03, 0x18, 0xff, + 0x7d, 0xfc, 0xa2, 0xf9, 0x8a, 0xf6, 0xf6, 0xf4, 0xed, 0xf3, 0x90, 0xf1, 0x7b, 0xef, 0x06, 0xee, + 0x0c, 0xec, 0x51, 0xec, 0x05, 0xee, 0x58, 0xef, 0x35, 0xf1, 0x1f, 0xf2, 0x14, 0xf4, 0x73, 0xf8, + 0x2d, 0xfb, 0xba, 0xfc, 0xac, 0xfe, 0x3a, 0x01, 0xd5, 0x04, 0xfb, 0x0b, 0x0e, 0x13, 0x62, 0x16, + 0x9c, 0x17, 0xfd, 0x17, 0x21, 0x18, 0x6b, 0x16, 0x51, 0x11, 0x97, 0x0b, 0xc1, 0x05, 0x78, 0x01, + 0x95, 0xfe, 0xc4, 0xfb, 0xcc, 0xf8, 0x0a, 0xf7, 0x57, 0xf7, 0x7f, 0xf6, 0xc3, 0xf5, 0x02, 0xf5, + 0xb0, 0xf3, 0x4a, 0xf3, 0xae, 0xf4, 0x95, 0xf6, 0xeb, 0xf8, 0x2b, 0xfa, 0x5c, 0xf9, 0xaa, 0xfb, + 0x11, 0xfd, 0xfd, 0xfd, 0xbf, 0xff, 0x7b, 0x01, 0x5a, 0x04, 0xc5, 0x09, 0x9a, 0x10, 0xd0, 0x14, + 0xbe, 0x17, 0x3a, 0x19, 0x30, 0x19, 0x65, 0x18, 0xbe, 0x12, 0xc0, 0x0c, 0xff, 0x06, 0x31, 0x02, + 0x4e, 0xff, 0x15, 0xfc, 0x61, 0xf8, 0x72, 0xf5, 0x2a, 0xf5, 0xb1, 0xf4, 0x2f, 0xf3, 0x65, 0xf1, + 0x9a, 0xee, 0x45, 0xec, 0xa9, 0xec, 0x1b, 0xed, 0x99, 0xee, 0xc6, 0xef, 0xb2, 0xed, 0xd9, 0xef, + 0x3e, 0xf3, 0x64, 0xf5, 0xed, 0xf7, 0x35, 0xfa, 0x03, 0xfd, 0x30, 0x02, 0x6f, 0x0a, 0xea, 0x10, + 0x50, 0x14, 0x4b, 0x16, 0x3d, 0x17, 0xd7, 0x17, 0xcc, 0x15, 0x1a, 0x12, 0x2a, 0x0d, 0x77, 0x08, + 0x2f, 0x05, 0xe4, 0x02, 0x28, 0x01, 0x75, 0xff, 0xda, 0xfe, 0x46, 0xfd, 0x02, 0xfb, 0xe1, 0xf7, + 0x2f, 0xf5, 0xfa, 0xf1, 0x8f, 0xf1, 0xbd, 0xf2, 0x7a, 0xf3, 0x7f, 0xf4, 0x70, 0xf2, 0xe7, 0xf1, + 0x7c, 0xf3, 0x55, 0xf3, 0x80, 0xf3, 0x2b, 0xf4, 0xed, 0xf4, 0x20, 0xf8, 0x91, 0xfe, 0x85, 0x04, + 0x96, 0x08, 0x4e, 0x0b, 0xcb, 0x0c, 0x81, 0x0f, 0x65, 0x0f, 0x02, 0x0c, 0xf6, 0x06, 0x1f, 0x02, + 0x53, 0xfe, 0x44, 0xfc, 0x94, 0xfb, 0x86, 0xf9, 0xfd, 0xf7, 0xfd, 0xf7, 0xe5, 0xf6, 0xc9, 0xf6, + 0xd2, 0xf6, 0x8f, 0xf5, 0x8b, 0xf5, 0xe6, 0xf6, 0xd1, 0xf7, 0xdb, 0xf9, 0x28, 0xfa, 0x95, 0xf9, + 0x36, 0xfd, 0x6b, 0xff, 0xde, 0x00, 0x43, 0x03, 0xe7, 0x04, 0xf8, 0x07, 0xc0, 0x0d, 0xf3, 0x14, + 0xa2, 0x19, 0x82, 0x1c, 0x53, 0x1d, 0x1f, 0x1e, 0xe2, 0x1c, 0x3b, 0x18, 0xee, 0x11, 0xf2, 0x0a, + 0xda, 0x05, 0xd3, 0x01, 0xc4, 0xfe, 0x97, 0xfb, 0x16, 0xf8, 0x10, 0xf7, 0x5b, 0xf5, 0x9f, 0xf2, + 0xab, 0xf0, 0x71, 0xed, 0xae, 0xea, 0xbb, 0xeb, 0xb8, 0xec, 0x02, 0xef, 0x15, 0xf0, 0xa0, 0xee, + 0x22, 0xf1, 0xec, 0xf3, 0xcb, 0xf6, 0xe7, 0xf9, 0x4e, 0xfc, 0x94, 0xff, 0x35, 0x04, 0xf7, 0x0b, + 0x65, 0x13, 0x79, 0x19, 0x98, 0x1c, 0xd7, 0x1e, 0x7d, 0x20, 0xe4, 0x1d, 0xff, 0x19, 0x38, 0x14, + 0x1f, 0x0f, 0x78, 0x0b, 0xc2, 0x08, 0xa1, 0x05, 0xfe, 0x00, 0x50, 0xff, 0x8e, 0xfd, 0xa5, 0xfa, + 0xa1, 0xf8, 0x9f, 0xf5, 0xf6, 0xf1, 0x12, 0xf1, 0x57, 0xf0, 0xa4, 0xf0, 0xc2, 0xf1, 0xb5, 0xef, + 0xb2, 0xf0, 0x39, 0xf3, 0xd6, 0xf4, 0xae, 0xf6, 0x8f, 0xf7, 0xce, 0xf8, 0xc2, 0xfc, 0x4f, 0x04, + 0xea, 0x0b, 0xbd, 0x11, 0x33, 0x14, 0xd0, 0x15, 0x82, 0x16, 0x65, 0x14, 0xf5, 0x10, 0xae, 0x0a, + 0x73, 0x05, 0xf5, 0x00, 0xa3, 0xfd, 0x99, 0xfb, 0xd6, 0xf8, 0x4b, 0xf7, 0xc2, 0xf6, 0x23, 0xf6, + 0x42, 0xf5, 0x2e, 0xf4, 0xd9, 0xf1, 0xdd, 0xf0, 0x76, 0xf1, 0xc8, 0xf2, 0x5a, 0xf5, 0x03, 0xf5, + 0x83, 0xf5, 0x34, 0xf8, 0x26, 0xfa, 0x47, 0xfc, 0x6d, 0xfe, 0xa9, 0x00, 0xd3, 0x03, 0x58, 0x09, + 0x0c, 0x10, 0x6a, 0x15, 0x1f, 0x18, 0xa5, 0x19, 0x48, 0x1b, 0x1e, 0x1a, 0x7c, 0x16, 0xc7, 0x10, + 0x4d, 0x0a, 0xaa, 0x04, 0x7e, 0x00, 0x70, 0xfe, 0x15, 0xfb, 0x53, 0xf8, 0x41, 0xf7, 0xe3, 0xf4, + 0x30, 0xf3, 0xae, 0xf1, 0x57, 0xee, 0xd1, 0xec, 0x8e, 0xec, 0xc6, 0xec, 0xca, 0xef, 0xac, 0xf0, + 0x11, 0xf1, 0xd9, 0xf3, 0xd2, 0xf5, 0xf1, 0xf7, 0x12, 0xf9, 0xc6, 0xf9, 0xcc, 0xfb, 0xb9, 0x00, + 0x1b, 0x08, 0xa9, 0x0d, 0x1d, 0x11, 0x74, 0x11, 0x40, 0x12, 0x11, 0x12, 0x10, 0x0f, 0x3c, 0x0a, + 0xd9, 0x03, 0x2c, 0xfe, 0x1f, 0xf9, 0x6d, 0xf6, 0x3c, 0xf4, 0x7e, 0xf1, 0x89, 0xf1, 0x19, 0xf1, + 0xb6, 0xf0, 0x48, 0xf1, 0x36, 0xf0, 0x59, 0xef, 0x77, 0xf0, 0x19, 0xf2, 0x79, 0xf6, 0xe6, 0xf8, + 0xb9, 0xf8, 0x7d, 0xfb, 0x01, 0xfe, 0x80, 0x00, 0x59, 0x03, 0x19, 0x06, 0xa5, 0x08, 0x63, 0x0c, + 0x5a, 0x12, 0x37, 0x18, 0x75, 0x1d, 0xda, 0x1f, 0x55, 0x21, 0xeb, 0x21, 0xa3, 0x1f, 0x3c, 0x1a, + 0x03, 0x13, 0x66, 0x0c, 0x08, 0x06, 0x8e, 0x02, 0x4c, 0xff, 0x01, 0xfb, 0x92, 0xf9, 0x01, 0xf8, + 0x28, 0xf6, 0x9b, 0xf4, 0xc6, 0xf1, 0xe4, 0xed, 0xb0, 0xec, 0xef, 0xeb, 0x2e, 0xed, 0x02, 0xef, + 0x26, 0xed, 0x63, 0xed, 0xa4, 0xef, 0xf5, 0xf1, 0x8e, 0xf4, 0x7b, 0xf6, 0x69, 0xf7, 0xcb, 0xf9, + 0x74, 0xff, 0x40, 0x06, 0x8b, 0x0c, 0xf5, 0x0f, 0x51, 0x12, 0xf4, 0x13, 0xdf, 0x13, 0xfb, 0x11, + 0x8c, 0x0e, 0xa6, 0x0a, 0x76, 0x06, 0x5c, 0x04, 0x74, 0x03, 0xd6, 0x01, 0x72, 0x01, 0x1a, 0x02, + 0xa7, 0x01, 0xd6, 0x00, 0xf4, 0xff, 0x90, 0xfd, 0x95, 0xfc, 0x25, 0xfc, 0x5a, 0xfd, 0x06, 0xff, + 0xbd, 0xfd, 0x41, 0xfd, 0xd7, 0xfd, 0x8a, 0xfe, 0xae, 0xfe, 0xbc, 0xfd, 0xe4, 0xfc, 0x47, 0xfc, + 0x72, 0xff, 0x14, 0x04, 0xc1, 0x08, 0x07, 0x0c, 0xfa, 0x0d, 0x20, 0x10, 0x81, 0x10, 0x69, 0x0e, + 0x1f, 0x09, 0x94, 0x02, 0x6a, 0xfc, 0xac, 0xf8, 0x7c, 0xf7, 0xda, 0xf5, 0xa6, 0xf3, 0x31, 0xf3, + 0xeb, 0xf1, 0x0a, 0xf1, 0x70, 0xf1, 0x47, 0xf0, 0xd1, 0xef, 0x0c, 0xef, 0x42, 0xef, 0x8c, 0xf1, + 0x62, 0xf2, 0x31, 0xf2, 0xfb, 0xf3, 0x56, 0xf6, 0xf0, 0xf7, 0x30, 0xfa, 0x3d, 0xfc, 0xb5, 0xfd, + 0xa9, 0x02, 0x90, 0x09, 0x7e, 0x10, 0x8f, 0x15, 0x6f, 0x18, 0xba, 0x1a, 0x88, 0x1b, 0x56, 0x1a, + 0x94, 0x16, 0x93, 0x11, 0x25, 0x0c, 0x86, 0x07, 0x9c, 0x04, 0x41, 0x01, 0x46, 0xfe, 0xc6, 0xfc, + 0x41, 0xfb, 0x04, 0xfa, 0x47, 0xf8, 0xf7, 0xf4, 0x26, 0xf1, 0x3c, 0xee, 0xe0, 0xec, 0x2a, 0xee, + 0x02, 0xef, 0xdc, 0xee, 0xcb, 0xef, 0x65, 0xf1, 0xbe, 0xf3, 0x61, 0xf5, 0x2e, 0xf7, 0x24, 0xf8, + 0x05, 0xfb, 0x6e, 0x00, 0xe3, 0x06, 0x8d, 0x0d, 0x71, 0x11, 0x31, 0x15, 0xf9, 0x17, 0x0e, 0x18, + 0xfe, 0x15, 0x23, 0x12, 0x6b, 0x0c, 0x1e, 0x07, 0x46, 0x03, 0xe8, 0xff, 0x6a, 0xfc, 0x1c, 0xfa, + 0x9e, 0xf8, 0x19, 0xf7, 0x0d, 0xf5, 0x3b, 0xf2, 0x8e, 0xef, 0x88, 0xed, 0xdb, 0xeb, 0xb7, 0xed, + 0x5f, 0xee, 0x89, 0xee, 0x60, 0xf0, 0x17, 0xf3, 0x97, 0xf6, 0xf7, 0xf8, 0x65, 0xfb, 0xc6, 0xfc, + 0xee, 0xfe, 0x29, 0x05, 0x2f, 0x0c, 0xbf, 0x13, 0xb2, 0x19, 0x84, 0x1d, 0xf6, 0x1f, 0xb2, 0x20, + 0x90, 0x1e, 0x1e, 0x1a, 0x3e, 0x14, 0xc5, 0x0d, 0xd3, 0x08, 0x00, 0x05, 0x06, 0x02, 0x67, 0x00, + 0xd9, 0xfe, 0x23, 0xfd, 0x43, 0xfc, 0xd3, 0xf9, 0x07, 0xf7, 0x9d, 0xf4, 0xf0, 0xf1, 0x1f, 0xf3, + 0xd5, 0xf4, 0x9b, 0xf4, 0x6c, 0xf5, 0x1b, 0xf6, 0xd0, 0xf7, 0x11, 0xf9, 0x4e, 0xfa, 0xdc, 0xfb, + 0x2f, 0xfd, 0x52, 0x00, 0xc8, 0x04, 0x43, 0x09, 0x5c, 0x0d, 0x75, 0x10, 0xaf, 0x12, 0x78, 0x14, + 0x73, 0x13, 0x2a, 0x0f, 0x10, 0x0a, 0xe4, 0x03, 0x8b, 0xfe, 0x13, 0xfc, 0x72, 0xf9, 0x89, 0xf6, + 0xaf, 0xf5, 0xce, 0xf3, 0x0f, 0xf2, 0x20, 0xf2, 0xbd, 0xf0, 0xcf, 0xf0, 0xc7, 0xf0, 0x80, 0xf1, + 0xf7, 0xf4, 0x80, 0xf7, 0x0e, 0xfa, 0x88, 0xfd, 0x51, 0x00, 0xf1, 0x02, 0x18, 0x05, 0x05, 0x06, + 0xe8, 0x05, 0xda, 0x07, 0x20, 0x0b, 0xff, 0x0e, 0xf4, 0x12, 0x50, 0x15, 0xa8, 0x16, 0x5e, 0x17, + 0x43, 0x16, 0xcf, 0x11, 0x4b, 0x0c, 0x6f, 0x05, 0x40, 0xfe, 0x07, 0xf9, 0x49, 0xf5, 0x27, 0xf1, + 0x7e, 0xef, 0xbe, 0xee, 0xdc, 0xec, 0xf4, 0xec, 0x3a, 0xeb, 0x70, 0xea, 0x38, 0xeb, 0x6d, 0xeb, + 0x34, 0xef, 0xa9, 0xf2, 0x85, 0xf4, 0x1a, 0xf8, 0x27, 0xfb, 0xc8, 0xfd, 0x58, 0x00, 0x94, 0x02, + 0x65, 0x03, 0x03, 0x06, 0x54, 0x0a, 0xa0, 0x0f, 0xe0, 0x15, 0x1a, 0x1a, 0x74, 0x1d, 0xd3, 0x1f, + 0xdc, 0x1f, 0x6e, 0x1d, 0x2c, 0x19, 0x37, 0x13, 0x27, 0x0d, 0x14, 0x08, 0xfe, 0x03, 0xbe, 0xff, + 0x44, 0xfc, 0x8c, 0xfa, 0x9f, 0xf8, 0x3c, 0xf7, 0x74, 0xf5, 0xe8, 0xf2, 0xcb, 0xf1, 0x10, 0xf0, + 0xc2, 0xf0, 0xd8, 0xf1, 0xac, 0xf1, 0xee, 0xf1, 0x5c, 0xf3, 0x0e, 0xf5, 0x71, 0xf5, 0x7f, 0xf6, + 0x04, 0xf5, 0x7a, 0xf4, 0x0a, 0xf6, 0xcb, 0xf9, 0x47, 0xff, 0x67, 0x03, 0x93, 0x06, 0x13, 0x08, + 0x16, 0x09, 0x78, 0x07, 0x06, 0x05, 0xba, 0x01, 0x9f, 0xfd, 0x78, 0xfa, 0xdd, 0xf7, 0xc1, 0xf5, + 0x21, 0xf5, 0xb9, 0xf5, 0xe5, 0xf5, 0x2c, 0xf6, 0x1a, 0xf6, 0x94, 0xf5, 0x97, 0xf6, 0xf5, 0xf6, + 0xe1, 0xf9, 0x4d, 0xfe, 0xf7, 0xff, 0xc3, 0x01, 0x00, 0x04, 0xc8, 0x05, 0x71, 0x06, 0xa7, 0x06, + 0x82, 0x05, 0xcf, 0x04, 0x20, 0x06, 0xb9, 0x08, 0xaa, 0x0c, 0x4d, 0x10, 0x31, 0x13, 0xc1, 0x15, + 0x47, 0x18, 0x5e, 0x18, 0x5f, 0x15, 0x3f, 0x10, 0x41, 0x0a, 0x38, 0x04, 0xc2, 0xff, 0x3c, 0xfc, + 0x35, 0xf9, 0xfa, 0xf7, 0x67, 0xf6, 0xae, 0xf5, 0xed, 0xf5, 0xeb, 0xf4, 0x27, 0xf5, 0xf5, 0xf3, + 0xaf, 0xf3, 0xa1, 0xf6, 0x00, 0xf8, 0x7e, 0xf9, 0xde, 0xfa, 0x81, 0xfb, 0x3c, 0xfb, 0x68, 0xfb, + 0xcc, 0xfa, 0xc5, 0xf9, 0x00, 0xfc, 0x2e, 0xff, 0x39, 0x04, 0xfe, 0x08, 0x21, 0x0c, 0xe9, 0x0e, + 0x5a, 0x11, 0xb4, 0x11, 0x0e, 0x0f, 0x2e, 0x0b, 0x08, 0x06, 0x12, 0x01, 0x06, 0xfe, 0x5c, 0xfb, + 0x22, 0xf9, 0x94, 0xf8, 0xf9, 0xf8, 0x4a, 0xf9, 0xdb, 0xf9, 0x2a, 0xf8, 0x50, 0xf7, 0x21, 0xf7, + 0x52, 0xf6, 0x24, 0xf9, 0xb1, 0xfb, 0x42, 0xfd, 0x2d, 0xff, 0x01, 0x01, 0x4e, 0x02, 0x93, 0x03, + 0x44, 0x04, 0xad, 0x02, 0x29, 0x03, 0xc2, 0x04, 0xd9, 0x07, 0x98, 0x0c, 0x5c, 0x10, 0x90, 0x13, + 0x1d, 0x16, 0x77, 0x17, 0x1c, 0x16, 0x43, 0x13, 0x20, 0x0e, 0x36, 0x07, 0x97, 0x02, 0x33, 0xfe, + 0xf9, 0xf9, 0xe7, 0xf6, 0x16, 0xf5, 0x66, 0xf3, 0x3e, 0xf2, 0xc7, 0xef, 0x9f, 0xed, 0x32, 0xec, + 0xa8, 0xea, 0x54, 0xec, 0x21, 0xee, 0x7d, 0xee, 0x49, 0xef, 0xc2, 0xf1, 0x2f, 0xf4, 0x0b, 0xf6, + 0xe1, 0xf7, 0x03, 0xf7, 0xd8, 0xf7, 0xb5, 0xfa, 0xea, 0xff, 0x00, 0x07, 0xb4, 0x0d, 0x4d, 0x13, + 0x74, 0x17, 0x2b, 0x1b, 0xe2, 0x1b, 0x71, 0x1a, 0xec, 0x16, 0xba, 0x11, 0xf1, 0x0c, 0x00, 0x09, + 0x2f, 0x05, 0xbe, 0x02, 0x79, 0x01, 0x89, 0xff, 0x9d, 0xfe, 0xfa, 0xfc, 0x4a, 0xfa, 0x00, 0xf9, + 0xa3, 0xf6, 0x67, 0xf6, 0x8e, 0xf7, 0x27, 0xf7, 0x64, 0xf6, 0xdd, 0xf6, 0xa4, 0xf8, 0x56, 0xf9, + 0xb0, 0xfa, 0xb2, 0xf9, 0x60, 0xf8, 0x78, 0xf9, 0xde, 0xfb, 0xe2, 0xff, 0xea, 0x03, 0x72, 0x07, + 0x6a, 0x0b, 0xb6, 0x0e, 0x6d, 0x0f, 0xa8, 0x0d, 0xeb, 0x08, 0x08, 0x03, 0x7e, 0xfd, 0xd6, 0xf9, + 0x75, 0xf6, 0x3d, 0xf3, 0xa7, 0xf1, 0x3a, 0xf0, 0xcc, 0xef, 0x91, 0xef, 0x89, 0xee, 0x31, 0xee, + 0x08, 0xed, 0xe5, 0xed, 0x3d, 0xf1, 0xe9, 0xf4, 0x59, 0xf8, 0xd8, 0xfb, 0x76, 0xff, 0xd3, 0x01, + 0x91, 0x04, 0xa3, 0x05, 0xc1, 0x05, 0xa9, 0x07, 0x44, 0x0b, 0x16, 0x10, 0x44, 0x15, 0x4e, 0x19, + 0x07, 0x1c, 0xe6, 0x1e, 0xe8, 0x1f, 0xe4, 0x1d, 0x8d, 0x19, 0xfb, 0x12, 0x46, 0x0c, 0xfb, 0x05, + 0xa1, 0xff, 0x94, 0xf9, 0xf1, 0xf4, 0x8d, 0xf2, 0x40, 0xf1, 0x68, 0xf0, 0xa2, 0xee, 0x45, 0xed, + 0x2b, 0xec, 0x01, 0xeb, 0xd9, 0xec, 0x92, 0xef, 0x9f, 0xf1, 0x33, 0xf4, 0x8c, 0xf7, 0x1a, 0xfa, + 0xa9, 0xfc, 0x40, 0xfe, 0x9f, 0xfd, 0xb8, 0xfe, 0xaa, 0x01, 0x26, 0x06, 0xae, 0x0b, 0x69, 0x10, + 0x1e, 0x14, 0xac, 0x17, 0x71, 0x19, 0xc2, 0x18, 0x1e, 0x16, 0xb8, 0x10, 0x4c, 0x0a, 0x4c, 0x05, + 0xb2, 0x00, 0x51, 0xfc, 0x33, 0xf9, 0x8c, 0xf6, 0xde, 0xf5, 0x5d, 0xf6, 0xdb, 0xf4, 0xd4, 0xf3, + 0xaf, 0xf2, 0xe2, 0xf1, 0xe9, 0xf3, 0x02, 0xf6, 0x4b, 0xf8, 0x8c, 0xf9, 0x2e, 0xfc, 0xb3, 0xfe, + 0xc6, 0x00, 0xdb, 0x02, 0x5d, 0x01, 0x1e, 0x01, 0xd2, 0x01, 0xd0, 0x03, 0x02, 0x08, 0x7f, 0x0b, + 0x37, 0x0e, 0xc0, 0x10, 0x59, 0x12, 0x2f, 0x12, 0xd4, 0x10, 0xcf, 0x0c, 0x24, 0x07, 0x9e, 0x01, + 0xa8, 0xfc, 0xbe, 0xf7, 0xf5, 0xf4, 0xff, 0xf3, 0x76, 0xf3, 0xb1, 0xf3, 0xab, 0xf2, 0x89, 0xf1, + 0x78, 0xf1, 0x93, 0xf0, 0xf6, 0xf1, 0x77, 0xf5, 0xaf, 0xf7, 0xaa, 0xf8, 0x7e, 0xfa, 0xc0, 0xfc, + 0x95, 0xfe, 0xb2, 0x00, 0x7e, 0xff, 0xbe, 0xfd, 0x1e, 0xfe, 0xcf, 0xff, 0xcc, 0x02, 0xba, 0x06, + 0xb7, 0x09, 0x8d, 0x0d, 0x3f, 0x12, 0x5e, 0x14, 0x5a, 0x14, 0x0a, 0x11, 0x48, 0x0c, 0xc8, 0x06, + 0xc1, 0x02, 0xd6, 0xfe, 0xbb, 0xfb, 0x74, 0xfa, 0x1e, 0xf9, 0x91, 0xf9, 0x90, 0xf9, 0x91, 0xf8, + 0xe8, 0xf8, 0xc4, 0xf7, 0x32, 0xf7, 0x1c, 0xf9, 0x23, 0xfb, 0xea, 0xfa, 0x43, 0xfb, 0xa8, 0xfc, + 0x98, 0xfc, 0x7d, 0xfd, 0xed, 0xfc, 0x11, 0xfc, 0x5a, 0xfc, 0x70, 0xfd, 0x06, 0x00, 0x7e, 0x03, + 0x86, 0x06, 0x34, 0x09, 0xc5, 0x0c, 0xa8, 0x0e, 0x00, 0x0e, 0x56, 0x0b, 0x8c, 0x06, 0x7e, 0x01, + 0xec, 0xfd, 0xe2, 0xf9, 0x7e, 0xf6, 0x25, 0xf4, 0xe9, 0xf2, 0x67, 0xf3, 0x35, 0xf4, 0x7c, 0xf3, + 0x9b, 0xf2, 0x00, 0xf1, 0xe5, 0xef, 0xea, 0xf0, 0xe1, 0xf3, 0x84, 0xf5, 0xbe, 0xf6, 0xc9, 0xf9, + 0xa6, 0xfc, 0xda, 0xff, 0x40, 0x02, 0x7d, 0x01, 0x44, 0x02, 0x29, 0x04, 0xec, 0x06, 0xd2, 0x0b, + 0xe9, 0x10, 0xfe, 0x15, 0x7f, 0x1a, 0xcb, 0x1d, 0xf9, 0x1d, 0x5b, 0x1e, 0x13, 0x1c, 0x53, 0x17, + 0x62, 0x12, 0xe0, 0x0d, 0xa7, 0x08, 0x31, 0x03, 0x40, 0xff, 0x1c, 0xfc, 0x82, 0xfb, 0xd8, 0xf7, + 0x6e, 0xf5, 0xa9, 0xf2, 0x8d, 0xf0, 0x60, 0xef, 0x4b, 0xee, 0x43, 0xee, 0x8e, 0xed, 0x49, 0xf0, + 0x82, 0xf1, 0x1d, 0xf3, 0x04, 0xf4, 0xda, 0xf3, 0x8f, 0xf3, 0xf2, 0xf3, 0xa6, 0xf6, 0x2b, 0xfb, + 0x41, 0x02, 0xbe, 0x07, 0x64, 0x0d, 0xb1, 0x11, 0x68, 0x14, 0xb0, 0x15, 0x09, 0x14, 0x6f, 0x10, + 0x93, 0x0c, 0xc9, 0x08, 0x94, 0x03, 0x0f, 0x01, 0x01, 0xff, 0xa8, 0xfe, 0xee, 0xfe, 0x04, 0xfd, + 0x9a, 0xfb, 0x04, 0xfb, 0x6d, 0xf9, 0x54, 0xf8, 0x1f, 0xf8, 0xe6, 0xf8, 0x02, 0xfa, 0x41, 0xfb, + 0xd3, 0xfc, 0xca, 0xfd, 0x03, 0x00, 0x66, 0x00, 0xe2, 0xfe, 0xa7, 0xfe, 0x0f, 0x01, 0x56, 0x04, + 0x24, 0x08, 0x40, 0x0b, 0x00, 0x0e, 0x62, 0x12, 0x9d, 0x13, 0x39, 0x13, 0xe5, 0x10, 0xda, 0x0c, + 0x31, 0x08, 0x69, 0x03, 0x38, 0xfd, 0x58, 0xf8, 0x7a, 0xf5, 0x84, 0xf2, 0xb7, 0xf1, 0x16, 0xef, + 0xd5, 0xed, 0x89, 0xed, 0xf5, 0xeb, 0xc5, 0xea, 0x19, 0xeb, 0xf6, 0xed, 0x11, 0xf0, 0x40, 0xf3, + 0x8f, 0xf5, 0x2d, 0xf7, 0x58, 0xfa, 0xf1, 0xfc, 0x77, 0xfd, 0xa3, 0xfe, 0xde, 0x00, 0xb3, 0x03, + 0xe0, 0x07, 0x93, 0x0b, 0x1f, 0x10, 0x55, 0x15, 0x3b, 0x19, 0x35, 0x1a, 0x45, 0x19, 0x42, 0x16, + 0x1c, 0x11, 0x79, 0x0b, 0xee, 0x03, 0x33, 0xff, 0xb1, 0xfb, 0xfc, 0xf8, 0xdc, 0xf7, 0x9d, 0xf7, + 0xa8, 0xf6, 0x55, 0xf6, 0x09, 0xf5, 0x70, 0xf3, 0xc1, 0xf3, 0xca, 0xf5, 0xc4, 0xf7, 0x70, 0xf8, + 0x8c, 0xfa, 0x3f, 0xfb, 0x44, 0xfd, 0x02, 0xff, 0x87, 0xfe, 0x4f, 0xff, 0x4c, 0x01, 0x6e, 0x03, + 0x23, 0x06, 0x56, 0x09, 0xe9, 0x0b, 0x12, 0x10, 0xe4, 0x11, 0x67, 0x12, 0x7d, 0x12, 0xe3, 0x10, + 0xe5, 0x0b, 0xbe, 0x05, 0x7e, 0x00, 0x00, 0xfb, 0x9b, 0xf8, 0x46, 0xf5, 0xd5, 0xf2, 0xb0, 0xf2, + 0x93, 0xf1, 0x4a, 0xf1, 0x86, 0xef, 0x11, 0xee, 0x27, 0xee, 0x59, 0xf0, 0xe3, 0xf2, 0xd4, 0xf4, + 0x6e, 0xf8, 0x7a, 0xfb, 0x5c, 0xfe, 0x27, 0x01, 0x20, 0x02, 0x15, 0x03, 0x93, 0x04, 0x9b, 0x05, + 0xd0, 0x08, 0x94, 0x0d, 0xaa, 0x11, 0xb0, 0x15, 0x60, 0x18, 0x1a, 0x19, 0x0d, 0x1a, 0x4e, 0x19, + 0x69, 0x15, 0xaf, 0x10, 0x73, 0x0b, 0xe4, 0x06, 0x0e, 0x03, 0x18, 0xff, 0x00, 0xfc, 0xce, 0xfa, + 0x1b, 0xf9, 0xf5, 0xf7, 0x5b, 0xf6, 0x5c, 0xf5, 0x49, 0xf5, 0x2d, 0xf6, 0x61, 0xf7, 0x6e, 0xf6, + 0x4a, 0xf8, 0x27, 0xfa, 0xda, 0xfa, 0x49, 0xfc, 0x0d, 0xfd, 0x1b, 0xfc, 0xd4, 0xfa, 0x01, 0xfa, + 0xfe, 0xf9, 0xb2, 0xfd, 0x58, 0x01, 0x15, 0x05, 0xf5, 0x08, 0x91, 0x0b, 0x15, 0x0e, 0x9a, 0x0e, + 0x1e, 0x0c, 0xc8, 0x07, 0xa3, 0x03, 0x11, 0xff, 0x54, 0xfb, 0x4e, 0xf8, 0x93, 0xf5, 0x01, 0xf6, + 0x9f, 0xf5, 0x6a, 0xf5, 0x39, 0xf5, 0x8a, 0xf5, 0x58, 0xf6, 0xa9, 0xf6, 0x4a, 0xf8, 0xd7, 0xf9, + 0x79, 0xfc, 0xf6, 0xfe, 0x7c, 0xff, 0xc3, 0x00, 0xf3, 0x02, 0x85, 0x03, 0x62, 0x03, 0xe6, 0x02, + 0xdc, 0x03, 0xa7, 0x07, 0xd6, 0x0a, 0x5a, 0x0d, 0xf0, 0x0f, 0x10, 0x12, 0x64, 0x13, 0x00, 0x13, + 0x00, 0x0f, 0x14, 0x0a, 0x12, 0x06, 0x8f, 0x01, 0x33, 0xfd, 0x86, 0xf8, 0x46, 0xf4, 0x12, 0xf3, + 0x78, 0xf2, 0x7c, 0xf0, 0xe2, 0xef, 0x0d, 0xef, 0xd0, 0xed, 0x8d, 0xec, 0x3f, 0xed, 0x90, 0xee, + 0xa6, 0xf0, 0x2c, 0xf4, 0xab, 0xf4, 0x76, 0xf6, 0x65, 0xf9, 0xce, 0xfa, 0x19, 0xfb, 0xeb, 0xfb, + 0xb1, 0xfc, 0x75, 0x00, 0xe5, 0x04, 0x43, 0x08, 0x58, 0x0d, 0xd7, 0x11, 0x86, 0x15, 0xc5, 0x17, + 0x6d, 0x18, 0x9f, 0x16, 0x8c, 0x13, 0xb3, 0x0e, 0x71, 0x09, 0x88, 0x05, 0x68, 0x01, 0xb6, 0xfe, + 0x70, 0xfd, 0xdc, 0xfa, 0x7e, 0xf9, 0xf5, 0xf7, 0x9c, 0xf5, 0xfb, 0xf2, 0xa5, 0xf2, 0x9d, 0xf3, + 0x4d, 0xf4, 0xe3, 0xf5, 0x0b, 0xf6, 0x7c, 0xf6, 0x73, 0xf8, 0x3f, 0xf8, 0x1f, 0xf7, 0x90, 0xf6, + 0x53, 0xf7, 0x62, 0xfa, 0x98, 0xfe, 0x5e, 0x01, 0x7f, 0x05, 0x2a, 0x0a, 0x9f, 0x0c, 0xeb, 0x0e, + 0x78, 0x0f, 0x98, 0x0d, 0x10, 0x0b, 0x40, 0x06, 0x84, 0x00, 0x24, 0xfc, 0xbf, 0xf8, 0x9d, 0xf6, + 0xd6, 0xf5, 0x0f, 0xf4, 0xbb, 0xf3, 0x5b, 0xf3, 0x95, 0xf2, 0x8d, 0xf0, 0x6a, 0xf0, 0x39, 0xf2, + 0x03, 0xf3, 0x67, 0xf5, 0x70, 0xf7, 0x8b, 0xf9, 0xfe, 0xfc, 0xa6, 0xff, 0x30, 0x00, 0x88, 0x01, + 0x85, 0x02, 0xe0, 0x04, 0xba, 0x09, 0x01, 0x0d, 0xef, 0x11, 0xc6, 0x16, 0xe7, 0x19, 0x22, 0x1c, + 0x40, 0x1d, 0x40, 0x1c, 0x38, 0x19, 0x02, 0x15, 0xc1, 0x0e, 0x79, 0x0a, 0xeb, 0x05, 0x93, 0x00, + 0x92, 0xfd, 0x85, 0xfa, 0xd3, 0xf7, 0xbc, 0xf4, 0x23, 0xf2, 0xee, 0xef, 0xff, 0xee, 0xfd, 0xf0, + 0x32, 0xf2, 0x59, 0xf3, 0xeb, 0xf5, 0x79, 0xf6, 0x25, 0xf8, 0xa8, 0xfa, 0x8f, 0xfb, 0xd9, 0xfc, + 0x6b, 0xfd, 0xe9, 0xfd, 0xad, 0x00, 0x31, 0x04, 0xf9, 0x07, 0x9b, 0x0c, 0x92, 0x10, 0x04, 0x13, + 0x33, 0x15, 0xbd, 0x14, 0x6b, 0x11, 0xa0, 0x0c, 0x4a, 0x06, 0x16, 0x01, 0x75, 0xfc, 0x01, 0xf7, + 0xa9, 0xf4, 0xdc, 0xf3, 0x8f, 0xf3, 0x9f, 0xf2, 0xf8, 0xf1, 0x7a, 0xf1, 0x1a, 0xf1, 0xef, 0xf2, + 0x40, 0xf4, 0x35, 0xf6, 0x1a, 0xfa, 0xcb, 0xfc, 0x9b, 0xfe, 0x56, 0x01, 0xa3, 0x03, 0x69, 0x05, + 0x24, 0x07, 0xdb, 0x06, 0x4f, 0x09, 0x37, 0x0d, 0xa3, 0x10, 0xa0, 0x14, 0x6f, 0x17, 0x9a, 0x18, + 0x01, 0x1a, 0xc4, 0x19, 0xb7, 0x15, 0xfd, 0x10, 0x0d, 0x0b, 0xd4, 0x05, 0xd7, 0x00, 0x16, 0xfb, + 0x73, 0xf6, 0xfa, 0xf3, 0xfc, 0xf1, 0xa5, 0xef, 0xa5, 0xed, 0xd1, 0xeb, 0x46, 0xea, 0x07, 0xea, + 0x1b, 0xeb, 0x50, 0xec, 0xcd, 0xef, 0x23, 0xf3, 0x58, 0xf5, 0x68, 0xf8, 0x0d, 0xfb, 0x3a, 0xfd, + 0x68, 0xfe, 0x57, 0xfe, 0xfd, 0xff, 0xcd, 0x03, 0x22, 0x07, 0x98, 0x0a, 0x3f, 0x0e, 0x53, 0x11, + 0xd8, 0x13, 0x7d, 0x15, 0x81, 0x14, 0x79, 0x12, 0xb8, 0x0f, 0xfb, 0x0a, 0x10, 0x07, 0x39, 0x02, + 0xf6, 0xfe, 0x95, 0xfd, 0x8e, 0xfb, 0x44, 0xfa, 0x44, 0xf9, 0xc5, 0xf9, 0xba, 0xf8, 0x42, 0xf8, + 0x50, 0xf9, 0x37, 0xfa, 0x10, 0xfd, 0xf4, 0xfe, 0x1d, 0xff, 0x8c, 0x00, 0xa2, 0x02, 0xc1, 0x01, + 0x4d, 0x00, 0xdc, 0xfc, 0xba, 0xfb, 0x21, 0xfe, 0x88, 0xff, 0xe0, 0x01, 0x21, 0x04, 0xf5, 0x06, + 0xda, 0x08, 0x1a, 0x0b, 0x38, 0x0a, 0xbc, 0x07, 0xe4, 0x04, 0x1f, 0xff, 0x44, 0xfa, 0x4b, 0xf5, + 0x78, 0xf1, 0xfc, 0xef, 0xbf, 0xee, 0xef, 0xed, 0x42, 0xed, 0xdd, 0xed, 0xdc, 0xed, 0x10, 0xee, + 0x98, 0xef, 0x32, 0xf1, 0xf9, 0xf3, 0x35, 0xf7, 0x1b, 0xf9, 0x27, 0xfb, 0xd9, 0xfd, 0x95, 0xff, + 0xd3, 0x00, 0xda, 0x00, 0xff, 0x00, 0xeb, 0x03, 0xd8, 0x06, 0xa4, 0x09, 0xa9, 0x0d, 0xde, 0x11, + 0x1a, 0x15, 0xe6, 0x17, 0x13, 0x18, 0x3c, 0x16, 0xf4, 0x13, 0xda, 0x0e, 0x39, 0x0a, 0x94, 0x06, + 0x37, 0x02, 0xba, 0xfe, 0x88, 0xfc, 0x17, 0xfb, 0x3f, 0xf9, 0xb5, 0xf8, 0xc5, 0xf5, 0xba, 0xf2, + 0x95, 0xf2, 0xd6, 0xf2, 0x0c, 0xf4, 0x25, 0xf6, 0xc0, 0xf6, 0x78, 0xf6, 0x98, 0xf8, 0x55, 0xf9, + 0x11, 0xfa, 0x88, 0xfa, 0xba, 0xf9, 0x78, 0xfb, 0x70, 0xfd, 0x88, 0x00, 0x75, 0x04, 0xf1, 0x08, + 0x33, 0x0c, 0x43, 0x0f, 0xe8, 0x11, 0x5c, 0x12, 0xc8, 0x11, 0x02, 0x0e, 0x37, 0x09, 0xa8, 0x05, + 0xdb, 0x00, 0xe2, 0xfc, 0x81, 0xfa, 0x01, 0xf9, 0xb2, 0xf7, 0x77, 0xf6, 0x78, 0xf5, 0x38, 0xf3, + 0x00, 0xf3, 0xda, 0xf3, 0x1a, 0xf4, 0xfa, 0xf5, 0x97, 0xf7, 0x64, 0xf9, 0xae, 0xfb, 0x83, 0xfd, + 0x78, 0xfe, 0x92, 0xff, 0xc6, 0xff, 0xd5, 0x00, 0xbe, 0x03, 0xae, 0x06, 0x83, 0x0a, 0xa1, 0x0f, + 0x6c, 0x13, 0x77, 0x16, 0xe4, 0x19, 0x9d, 0x19, 0xa5, 0x17, 0xb6, 0x13, 0xe4, 0x0d, 0xdc, 0x09, + 0x8a, 0x04, 0x17, 0x00, 0x7b, 0xfc, 0x1a, 0xfa, 0x25, 0xf8, 0xe1, 0xf5, 0x44, 0xf4, 0x93, 0xf1, + 0x89, 0xf0, 0x1e, 0xf0, 0x78, 0xef, 0xea, 0xef, 0x00, 0xf2, 0xc0, 0xf3, 0x41, 0xf5, 0xd2, 0xf7, + 0x5a, 0xf9, 0x28, 0xfb, 0x40, 0xfb, 0x8f, 0xfb, 0x2f, 0xfe, 0xf6, 0x01, 0x73, 0x05, 0x02, 0x0a, + 0xaa, 0x0e, 0xfc, 0x11, 0x7b, 0x15, 0xf9, 0x16, 0x06, 0x16, 0x8e, 0x14, 0x42, 0x10, 0xe4, 0x0b, + 0xe2, 0x07, 0x2d, 0x03, 0x70, 0xff, 0x1d, 0xfd, 0x08, 0xfb, 0x0d, 0xf9, 0xe5, 0xf7, 0xc8, 0xf5, + 0x44, 0xf5, 0xb0, 0xf5, 0xaf, 0xf4, 0xd1, 0xf6, 0xe6, 0xf9, 0xe1, 0xfb, 0x03, 0xfd, 0x62, 0xff, + 0xa5, 0x01, 0x2e, 0x03, 0x5b, 0x02, 0x36, 0x00, 0xcf, 0x00, 0xcb, 0x02, 0x4e, 0x06, 0x5c, 0x09, + 0xc0, 0x0c, 0x73, 0x0f, 0x74, 0x12, 0xde, 0x13, 0xb3, 0x11, 0xe0, 0x0e, 0xd0, 0x08, 0x4b, 0x03, + 0x4a, 0xfd, 0x1a, 0xf6, 0x00, 0xf1, 0x44, 0xee, 0xe3, 0xec, 0x11, 0xeb, 0x2a, 0xeb, 0xa9, 0xea, + 0xbd, 0xe9, 0xb9, 0xea, 0xa9, 0xeb, 0xab, 0xed, 0x89, 0xf0, 0x7a, 0xf2, 0x8b, 0xf4, 0xa5, 0xf7, + 0x7e, 0xfa, 0x7f, 0xfd, 0x62, 0xff, 0x70, 0x00, 0xda, 0x02, 0xa1, 0x06, 0x85, 0x0a, 0x9b, 0x0d, + 0xe9, 0x11, 0x3e, 0x15, 0x0c, 0x18, 0x21, 0x1a, 0x6d, 0x19, 0x59, 0x18, 0x22, 0x14, 0xf4, 0x0e, + 0x81, 0x0a, 0x91, 0x04, 0xf3, 0xff, 0x63, 0xfc, 0x6a, 0xf9, 0x6c, 0xf7, 0x3b, 0xf6, 0x40, 0xf4, + 0xb1, 0xf0, 0x57, 0xef, 0x90, 0xee, 0x6c, 0xef, 0xaa, 0xf1, 0x96, 0xf3, 0xaf, 0xf4, 0xe7, 0xf6, + 0x84, 0xf9, 0x4b, 0xfa, 0xe1, 0xfa, 0xcd, 0xf9, 0x1b, 0xfa, 0xa7, 0xfc, 0x73, 0xfe, 0xf3, 0xff, + 0xcf, 0x03, 0x04, 0x07, 0xcc, 0x09, 0xba, 0x0c, 0x75, 0x0c, 0x77, 0x0c, 0x51, 0x0a, 0x1f, 0x06, + 0x49, 0x03, 0x49, 0xff, 0x2a, 0xfb, 0xfe, 0xf7, 0xd8, 0xf6, 0x8e, 0xf5, 0x53, 0xf5, 0xd2, 0xf5, + 0xee, 0xf4, 0xe5, 0xf4, 0x71, 0xf5, 0x77, 0xf7, 0x2d, 0xfa, 0xc4, 0xfc, 0xfd, 0xfe, 0xcf, 0x00, + 0xc0, 0x03, 0x5c, 0x05, 0xf9, 0x06, 0xde, 0x06, 0xdb, 0x05, 0x2f, 0x07, 0xc6, 0x08, 0x21, 0x0a, + 0xfb, 0x0d, 0x66, 0x10, 0x90, 0x12, 0xe3, 0x15, 0x6a, 0x16, 0x95, 0x15, 0x34, 0x13, 0xbc, 0x0d, + 0xaa, 0x08, 0x2a, 0x03, 0x0b, 0xfe, 0x69, 0xfa, 0xe9, 0xf7, 0xad, 0xf5, 0xc8, 0xf3, 0xc2, 0xf2, + 0xde, 0xf0, 0x57, 0xef, 0xe7, 0xef, 0x26, 0xf1, 0xa8, 0xf1, 0x32, 0xf3, 0xe6, 0xf4, 0x67, 0xf6, + 0xe3, 0xf8, 0xce, 0xfa, 0xa7, 0xfd, 0x29, 0xfe, 0xd3, 0xfc, 0x71, 0xfd, 0xd4, 0xff, 0xb5, 0x01, + 0x68, 0x04, 0x85, 0x08, 0xff, 0x0a, 0xef, 0x0e, 0xfe, 0x11, 0x99, 0x12, 0xd1, 0x12, 0xea, 0x0e, + 0x57, 0x0c, 0xf7, 0x09, 0x4e, 0x05, 0x8f, 0x01, 0x74, 0xff, 0x1c, 0xfe, 0x1c, 0xfd, 0x04, 0xfd, + 0x2c, 0xfc, 0x5d, 0xfa, 0x99, 0xf9, 0x18, 0xfa, 0xb3, 0xfa, 0xb9, 0xfb, 0x0a, 0xfe, 0x2e, 0xff, + 0x4f, 0x00, 0x65, 0x01, 0xdc, 0x02, 0x1f, 0x04, 0x58, 0x02, 0x44, 0x01, 0xd0, 0x02, 0x7c, 0x04, + 0xba, 0x06, 0x58, 0x0a, 0x90, 0x0c, 0x77, 0x0f, 0xba, 0x11, 0x56, 0x12, 0xf5, 0x11, 0xcf, 0x0e, + 0xa2, 0x0b, 0x5b, 0x07, 0x0e, 0x02, 0xe3, 0xfb, 0xe6, 0xf7, 0xac, 0xf4, 0x15, 0xf1, 0xc3, 0xef, + 0x85, 0xee, 0xc0, 0xec, 0xe0, 0xea, 0x35, 0xeb, 0xdd, 0xeb, 0x82, 0xec, 0x1b, 0xef, 0x82, 0xef, + 0x8b, 0xf1, 0xdb, 0xf2, 0x92, 0xf4, 0x9b, 0xf7, 0x9c, 0xf7, 0x84, 0xf7, 0x26, 0xfa, 0x67, 0xfe, + 0x9e, 0x01, 0x50, 0x05, 0x2b, 0x0a, 0x43, 0x0e, 0x69, 0x13, 0xf4, 0x14, 0x63, 0x16, 0xf1, 0x15, + 0x7d, 0x12, 0x9a, 0x10, 0x74, 0x0c, 0x9c, 0x07, 0x76, 0x03, 0x12, 0x00, 0xd5, 0xfd, 0x50, 0xfc, + 0xfa, 0xfb, 0x5b, 0xf9, 0x6d, 0xf6, 0x86, 0xf4, 0x77, 0xf2, 0x80, 0xf2, 0x09, 0xf3, 0xa0, 0xf3, + 0xda, 0xf4, 0x30, 0xf6, 0xe7, 0xf7, 0xb5, 0xf9, 0x6a, 0xf9, 0xff, 0xf7, 0x98, 0xf8, 0x82, 0xfb, + 0x85, 0xfd, 0xb0, 0xff, 0x63, 0x03, 0x73, 0x06, 0x10, 0x0a, 0x1b, 0x0c, 0x8d, 0x0d, 0x5a, 0x0d, + 0x36, 0x0a, 0x95, 0x07, 0x31, 0x04, 0x3e, 0xff, 0x59, 0xfb, 0x1f, 0xf9, 0x87, 0xf6, 0xf1, 0xf4, + 0x8e, 0xf3, 0x34, 0xf2, 0xa6, 0xf0, 0x72, 0xef, 0x97, 0xf0, 0x88, 0xf2, 0x6d, 0xf5, 0x55, 0xf8, + 0xa6, 0xfa, 0xf7, 0xfd, 0x4c, 0x01, 0x36, 0x04, 0xb0, 0x05, 0x02, 0x06, 0x57, 0x06, 0xdb, 0x08, + 0x34, 0x0b, 0xa9, 0x0d, 0x89, 0x11, 0xe1, 0x14, 0x7d, 0x18, 0x29, 0x1b, 0xfd, 0x1b, 0x75, 0x1c, + 0xcc, 0x19, 0x4e, 0x13, 0x98, 0x0e, 0x3b, 0x08, 0x52, 0x01, 0x9d, 0xfc, 0x7e, 0xf8, 0x7e, 0xf5, + 0x2e, 0xf4, 0x59, 0xf2, 0x04, 0xf0, 0xf5, 0xed, 0x7a, 0xed, 0x9b, 0xee, 0x6f, 0xef, 0xa7, 0xf0, + 0xd7, 0xf2, 0x43, 0xf4, 0x17, 0xf6, 0x49, 0xf8, 0x65, 0xfa, 0xbf, 0xfb, 0xef, 0xfb, 0xa4, 0xfe, + 0x42, 0x01, 0xbc, 0x03, 0x51, 0x08, 0xef, 0x0a, 0x98, 0x0e, 0x20, 0x12, 0x58, 0x13, 0xb3, 0x14, + 0x34, 0x13, 0xec, 0x0e, 0x9a, 0x0b, 0xf8, 0x07, 0xe1, 0x01, 0xf9, 0xfd, 0xad, 0xfb, 0x52, 0xf8, + 0x1e, 0xf8, 0x10, 0xf7, 0xe4, 0xf4, 0x80, 0xf4, 0xda, 0xf3, 0x44, 0xf4, 0xe2, 0xf5, 0x21, 0xf7, + 0x6d, 0xf9, 0x7a, 0xfb, 0xbe, 0xfc, 0xd5, 0xff, 0x45, 0x02, 0xb2, 0x02, 0xd9, 0x01, 0x45, 0x01, + 0x17, 0x03, 0xd8, 0x04, 0x41, 0x07, 0x24, 0x0b, 0xb8, 0x0d, 0x7d, 0x11, 0x4b, 0x13, 0x4b, 0x13, + 0x3b, 0x13, 0xe6, 0x0f, 0x41, 0x0c, 0xea, 0x08, 0x35, 0x03, 0xb9, 0xfe, 0x4f, 0xfb, 0x7d, 0xf8, + 0x5e, 0xf7, 0x92, 0xf6, 0x68, 0xf5, 0xa5, 0xf4, 0x77, 0xf3, 0xd3, 0xf3, 0x5b, 0xf4, 0x98, 0xf6, + 0x19, 0xf8, 0x1e, 0xfa, 0xaf, 0xfb, 0xef, 0xfd, 0x50, 0x00, 0x35, 0x01, 0x21, 0x00, 0xa5, 0xfe, + 0xbb, 0x00, 0xdf, 0x03, 0x81, 0x05, 0x24, 0x09, 0xba, 0x0b, 0xeb, 0x0e, 0xe2, 0x11, 0xae, 0x12, + 0x9a, 0x13, 0x2b, 0x11, 0x19, 0x0e, 0x53, 0x0b, 0x65, 0x07, 0x7f, 0x01, 0x92, 0xfe, 0x97, 0xf9, + 0xe3, 0xf6, 0x2d, 0xf6, 0x12, 0xf4, 0xcb, 0xf4, 0x23, 0xf4, 0x0d, 0xf3, 0x22, 0xf2, 0x7e, 0xf1, + 0xcf, 0xf0, 0xd1, 0xf1, 0x8f, 0xf2, 0x8c, 0xf3, 0x97, 0xf5, 0x33, 0xf7, 0x4c, 0xf5, 0x3b, 0xf2, + 0xa7, 0xf2, 0x50, 0xf3, 0x27, 0xf4, 0x5b, 0xf7, 0x7b, 0xfa, 0x29, 0xfe, 0x91, 0x00, 0xe7, 0x01, + 0xe7, 0x04, 0x21, 0x04, 0x3b, 0x03, 0xd0, 0xff, 0xa5, 0xfe, 0x75, 0xfa, 0x57, 0xf7, 0xa8, 0xf6, + 0x06, 0xf4, 0xc9, 0xf4, 0x74, 0xf4, 0x1b, 0xf3, 0x2e, 0xf5, 0x62, 0xf5, 0x30, 0xf8, 0x5e, 0xfa, + 0x35, 0xfd, 0x16, 0xff, 0xd2, 0x00, 0xd4, 0x04, 0x0e, 0x07, 0x38, 0x0b, 0xbd, 0x0b, 0xb2, 0x0b, + 0x81, 0x0d, 0xe4, 0x0e, 0x0d, 0x10, 0x0d, 0x14, 0x0a, 0x17, 0xe1, 0x19, 0x63, 0x1d, 0x4a, 0x1f, + 0xc4, 0x21, 0xd4, 0x20, 0xf3, 0x1b, 0x1e, 0x17, 0x94, 0x11, 0xa7, 0x0a, 0x46, 0x03, 0xc6, 0xff, + 0x66, 0xfb, 0xb0, 0xf7, 0x71, 0xf5, 0x9a, 0xef, 0xe2, 0xee, 0x3f, 0xeb, 0x4d, 0xe9, 0xe5, 0xe8, + 0x93, 0xe9, 0x44, 0xea, 0x58, 0xeb, 0xc4, 0xeb, 0x2e, 0xec, 0x50, 0xee, 0xdf, 0xef, 0x5f, 0xf0, + 0x52, 0xf3, 0xb1, 0xf5, 0x03, 0xfb, 0x47, 0xff, 0x5a, 0x03, 0x0c, 0x08, 0xd1, 0x0b, 0x06, 0x10, + 0xf6, 0x13, 0xc3, 0x17, 0xad, 0x15, 0x82, 0x14, 0x14, 0x0f, 0x58, 0x09, 0x05, 0x07, 0x15, 0x02, + 0x52, 0x00, 0x75, 0xfe, 0xc0, 0xfd, 0xc1, 0xfd, 0xd9, 0xf7, 0x8b, 0xf5, 0x6c, 0xf2, 0xb2, 0xf1, + 0x64, 0xf3, 0x9b, 0xf3, 0xbc, 0xf6, 0xe1, 0xf8, 0x71, 0xfa, 0xff, 0xfb, 0xaf, 0xfc, 0x63, 0xfd, + 0xe8, 0xfe, 0xd7, 0xfe, 0x20, 0x01, 0x35, 0x04, 0x58, 0x06, 0x89, 0x09, 0x2d, 0x0d, 0xc7, 0x10, + 0xb4, 0x13, 0xe0, 0x13, 0x22, 0x14, 0x17, 0x10, 0x40, 0x0e, 0x76, 0x0d, 0x73, 0x07, 0x0e, 0x05, + 0x6c, 0x04, 0x66, 0xfe, 0xfa, 0xfc, 0x39, 0xfb, 0xa8, 0xf7, 0xe3, 0xf8, 0x38, 0xf4, 0xe5, 0xf0, + 0x08, 0xf2, 0xdb, 0xf3, 0xec, 0xf5, 0x5b, 0xfa, 0x2b, 0xfa, 0x74, 0xfe, 0x5e, 0x01, 0x7c, 0x00, + 0xe4, 0xfb, 0xf1, 0xf7, 0xd6, 0xf9, 0x56, 0xf9, 0xa3, 0xfb, 0xcc, 0x00, 0x93, 0x05, 0xd0, 0x09, + 0xbf, 0x0b, 0xb6, 0x08, 0x7a, 0x0d, 0x5b, 0x09, 0x04, 0x07, 0xbb, 0x06, 0x4d, 0x00, 0x33, 0xfe, + 0x28, 0xfd, 0x4f, 0xf9, 0xd1, 0xf8, 0x53, 0xf8, 0xa4, 0xfb, 0x3f, 0xfc, 0xb0, 0xfe, 0xa1, 0x00, + 0x35, 0x06, 0x40, 0x0b, 0xf6, 0x10, 0x42, 0x12, 0x59, 0x14, 0x17, 0x1a, 0xed, 0x1f, 0x4e, 0x1f, + 0x57, 0x20, 0x50, 0x23, 0x26, 0x1e, 0x1c, 0x1e, 0x97, 0x1b, 0x64, 0x17, 0x9a, 0x18, 0x3e, 0x16, + 0x5b, 0x10, 0x1c, 0x10, 0x0b, 0x0a, 0x5f, 0x04, 0xd6, 0xfb, 0x2c, 0xf4, 0x38, 0xee, 0xf3, 0xe7, + 0x4b, 0xe7, 0x70, 0xe1, 0x77, 0xd9, 0x51, 0xd7, 0xe0, 0xd0, 0x02, 0xd0, 0xdb, 0xce, 0x7a, 0xce, + 0xd8, 0xd3, 0x7b, 0xd7, 0x02, 0xda, 0x82, 0xdf, 0x3a, 0xe5, 0x27, 0xec, 0x18, 0xf3, 0x5f, 0xf7, + 0x9d, 0xfc, 0x2e, 0x04, 0xd8, 0x06, 0xbe, 0x07, 0x78, 0x0c, 0x89, 0x11, 0xbf, 0x14, 0x7f, 0x15, + 0xd5, 0x12, 0x42, 0x10, 0xc2, 0x12, 0x75, 0x0d, 0x3f, 0x0a, 0x15, 0x04, 0x97, 0xff, 0x59, 0xfe, + 0xea, 0xf6, 0xa0, 0xf2, 0x1d, 0xeb, 0x20, 0xeb, 0x63, 0xeb, 0x6f, 0xe5, 0x3c, 0xe2, 0xfd, 0xdd, + 0x1e, 0xdf, 0x7c, 0xdf, 0xcb, 0xe2, 0xbb, 0xea, 0x44, 0xf2, 0x06, 0xf6, 0x0b, 0xf8, 0xcb, 0xfa, + 0x79, 0xfd, 0xdc, 0x00, 0x57, 0x03, 0x79, 0x05, 0x1c, 0x0b, 0xcc, 0x10, 0x02, 0x15, 0x27, 0x18, + 0x0c, 0x1b, 0xc0, 0x1e, 0x7b, 0x21, 0x8b, 0x24, 0xbb, 0x1d, 0x77, 0x1b, 0xa6, 0x17, 0x1f, 0x12, + 0x54, 0x0e, 0x37, 0x07, 0xe5, 0x06, 0x29, 0x05, 0xd5, 0x04, 0xa1, 0x02, 0xdb, 0xfe, 0x30, 0x00, + 0xf4, 0xfe, 0x67, 0x00, 0xe4, 0xfd, 0x3d, 0xfe, 0x4d, 0xff, 0xef, 0xfd, 0xdf, 0xfc, 0x78, 0x00, + 0x9e, 0x01, 0x23, 0x01, 0x90, 0x00, 0x6d, 0xff, 0x46, 0x00, 0x0d, 0x07, 0x00, 0x0a, 0x48, 0x0c, + 0x73, 0x10, 0x4c, 0x13, 0xdb, 0x13, 0x23, 0x13, 0xbe, 0x12, 0x8b, 0x0d, 0xe5, 0x0e, 0x3e, 0x06, + 0x2d, 0xfe, 0x03, 0xf8, 0xd4, 0xf0, 0xc0, 0xee, 0x09, 0xe9, 0x41, 0xe5, 0xd2, 0xe7, 0x2d, 0xe9, + 0x2e, 0xe9, 0xdf, 0xe9, 0xe9, 0xea, 0xe2, 0xed, 0xfb, 0xf2, 0xc6, 0xf4, 0x69, 0xf4, 0x8e, 0xf6, + 0x77, 0xfb, 0xd1, 0xfb, 0x0a, 0xfb, 0x03, 0xfe, 0x29, 0x01, 0x5c, 0x08, 0xe8, 0x0b, 0x8b, 0x0e, + 0xa4, 0x13, 0xfb, 0x1d, 0x66, 0x22, 0xbe, 0x23, 0x55, 0x26, 0xe7, 0x25, 0x98, 0x20, 0x8c, 0x1e, + 0x55, 0x16, 0xbd, 0x15, 0x46, 0x14, 0x8d, 0x0d, 0xe9, 0x06, 0xce, 0xfe, 0x92, 0xfb, 0x77, 0xf8, + 0x05, 0xf3, 0xfd, 0xee, 0xd0, 0xef, 0xd9, 0xef, 0x29, 0xf0, 0xfd, 0xee, 0xd8, 0xec, 0x62, 0xf0, + 0xb2, 0xf2, 0x26, 0xf4, 0xdd, 0xf3, 0x35, 0xf4, 0x7b, 0xf7, 0xb6, 0xf7, 0x3e, 0xfb, 0xa0, 0xff, + 0x09, 0x07, 0x7f, 0x0d, 0xe1, 0x11, 0xec, 0x14, 0x2e, 0x16, 0x21, 0x19, 0xec, 0x15, 0xf7, 0x10, + 0x7b, 0x0f, 0x7a, 0x08, 0x12, 0x07, 0x49, 0x01, 0x9c, 0xfb, 0xd7, 0xfa, 0x64, 0xf9, 0x62, 0xf6, + 0xf7, 0xeb, 0x3b, 0xe6, 0x62, 0xe2, 0x06, 0xe0, 0x28, 0xde, 0x0f, 0xde, 0xfb, 0xde, 0x4a, 0xe1, + 0x0b, 0xe6, 0x2e, 0xe5, 0xf8, 0xe5, 0x4c, 0xe8, 0xd4, 0xed, 0x6d, 0xf1, 0xea, 0xf2, 0x21, 0xf8, + 0x9a, 0xfc, 0x7a, 0x00, 0x62, 0x03, 0x14, 0x06, 0x4a, 0x0b, 0x50, 0x10, 0xb6, 0x0f, 0x5d, 0x0c, + 0xa2, 0x0c, 0xa4, 0x0e, 0xa7, 0x09, 0x73, 0x08, 0x78, 0x04, 0xb6, 0x03, 0x1f, 0x05, 0x52, 0xff, + 0xb4, 0xfc, 0xa1, 0xf9, 0xc8, 0xf8, 0x1e, 0xf8, 0xec, 0xf2, 0x67, 0xef, 0x26, 0xf0, 0x6b, 0xef, + 0x1a, 0xef, 0xbc, 0xef, 0xde, 0xee, 0xb5, 0xf2, 0x23, 0xf2, 0x64, 0xf4, 0xeb, 0xf6, 0x23, 0xfc, + 0x81, 0x04, 0x1c, 0x08, 0x48, 0x0a, 0xfd, 0x0c, 0x92, 0x0f, 0x52, 0x10, 0xc1, 0x10, 0x90, 0x0d, + 0x9a, 0x0c, 0x3c, 0x0d, 0x03, 0x0a, 0x69, 0x04, 0x88, 0x07, 0x1d, 0x08, 0x5a, 0x09, 0x7a, 0x0c, + 0x95, 0x0b, 0xe5, 0x0c, 0xa1, 0x10, 0x99, 0x0e, 0x58, 0x0d, 0xc6, 0x10, 0x5b, 0x13, 0x6b, 0x13, + 0x6f, 0x11, 0xc3, 0x0f, 0xfb, 0x0d, 0xf9, 0x0a, 0xf1, 0x05, 0x92, 0x01, 0xb8, 0x04, 0x1d, 0x05, + 0xf5, 0x08, 0x97, 0x0a, 0x51, 0x07, 0xf4, 0x0b, 0xb5, 0x0d, 0x37, 0x0b, 0xac, 0x06, 0x0c, 0x03, + 0xfa, 0xfc, 0x5d, 0xf8, 0x22, 0xf3, 0xd6, 0xed, 0x43, 0xee, 0x28, 0xf1, 0x71, 0xeb, 0x74, 0xea, + 0xd7, 0xec, 0x05, 0xee, 0xe4, 0xf0, 0xb6, 0xf1, 0x7c, 0xf2, 0x33, 0xf6, 0x58, 0xfb, 0xf0, 0xf8, + 0x9b, 0xfb, 0x17, 0xfe, 0x07, 0x03, 0x1d, 0x04, 0x80, 0x00, 0x09, 0x01, 0x15, 0x00, 0x6d, 0x02, + 0xbb, 0x01, 0x46, 0x02, 0x13, 0x04, 0xb7, 0x09, 0xd5, 0x11, 0x74, 0x10, 0x9c, 0x0f, 0x07, 0x10, + 0xb2, 0x0e, 0xc5, 0x0b, 0xed, 0x07, 0x5c, 0x05, 0xd5, 0x02, 0x65, 0x00, 0x68, 0xfe, 0xd6, 0xf9, + 0x65, 0xfd, 0x18, 0xfe, 0xdb, 0xf8, 0x7a, 0xf8, 0x68, 0xfa, 0x91, 0xff, 0x6f, 0x03, 0x6d, 0x03, + 0x5e, 0x04, 0x8b, 0x07, 0x1a, 0x07, 0x03, 0x07, 0x17, 0x05, 0xcc, 0x04, 0x1f, 0x09, 0x2b, 0x07, + 0xd9, 0x03, 0x85, 0x00, 0xed, 0x00, 0x33, 0x00, 0x2a, 0xfe, 0xcb, 0xfb, 0xff, 0xfa, 0x98, 0xfb, + 0x55, 0xfc, 0xb9, 0xf8, 0x54, 0xf5, 0x3f, 0xf5, 0x2b, 0xf3, 0x78, 0xf3, 0xd1, 0xf3, 0x0b, 0xf4, + 0xc0, 0xf3, 0x05, 0xf5, 0x0e, 0xf2, 0x14, 0xef, 0x94, 0xf5, 0x20, 0xf8, 0xf4, 0xf9, 0x3d, 0xfb, + 0x5a, 0xfc, 0x05, 0x03, 0xdf, 0x07, 0x6f, 0x07, 0x2f, 0x07, 0x44, 0x07, 0x2d, 0x09, 0xcf, 0x09, + 0x7b, 0x0a, 0x38, 0x0e, 0x1e, 0x11, 0xea, 0x13, 0x10, 0x11, 0x1c, 0x10, 0xe1, 0x0e, 0xe4, 0x0a, + 0x3b, 0x04, 0x96, 0xfd, 0x8b, 0xf7, 0xb8, 0xf3, 0x6e, 0xf2, 0x87, 0xea, 0x70, 0xe8, 0x67, 0xe7, + 0x44, 0xe8, 0x54, 0xe8, 0xf7, 0xe7, 0xad, 0xe6, 0xa0, 0xe9, 0x8e, 0xee, 0x3e, 0xea, 0xaa, 0xec, + 0x77, 0xf1, 0x25, 0xf5, 0x41, 0xfb, 0xd3, 0xfc, 0x68, 0xfe, 0x78, 0x03, 0x39, 0x05, 0xa1, 0x07, + 0x57, 0x0b, 0xeb, 0x0f, 0xa2, 0x16, 0xcc, 0x16, 0xf9, 0x17, 0x97, 0x1b, 0x39, 0x1e, 0xe9, 0x1b, + 0x18, 0x17, 0xb3, 0x10, 0x79, 0x0a, 0x9c, 0x05, 0x2b, 0x01, 0x7d, 0xfa, 0x52, 0xf2, 0x32, 0xf3, + 0xf3, 0xf1, 0xcc, 0xef, 0x75, 0xee, 0x4d, 0xef, 0x7f, 0xee, 0x59, 0xef, 0x68, 0xf0, 0x34, 0xef, + 0x19, 0xf2, 0x73, 0xf4, 0xf4, 0xf1, 0x30, 0xf4, 0xa6, 0xf9, 0x2a, 0xfc, 0x7e, 0xff, 0x3e, 0x01, + 0xa9, 0x06, 0x40, 0x0d, 0x18, 0x14, 0xb7, 0x18, 0x83, 0x1f, 0x7e, 0x25, 0x0f, 0x28, 0x49, 0x28, + 0xa6, 0x23, 0x45, 0x20, 0x12, 0x1f, 0x56, 0x1a, 0xc6, 0x10, 0xd5, 0x08, 0x0c, 0x02, 0xc5, 0xfb, + 0xfc, 0xf8, 0x2d, 0xef, 0x8f, 0xe8, 0xfc, 0xe7, 0xd9, 0xe4, 0xcf, 0xe2, 0x4b, 0xe2, 0x9f, 0xe6, + 0x09, 0xe5, 0x57, 0xe8, 0x60, 0xe9, 0x3d, 0xea, 0xfd, 0xef, 0x8d, 0xf1, 0xc5, 0xf0, 0xde, 0xf2, + 0x76, 0xf7, 0xf4, 0xfc, 0x9f, 0x00, 0x8f, 0x02, 0xb5, 0x07, 0x80, 0x0e, 0x63, 0x15, 0x00, 0x19, + 0x24, 0x1b, 0xf3, 0x1b, 0x4e, 0x1e, 0x0d, 0x1b, 0x97, 0x15, 0x26, 0x13, 0x91, 0x12, 0x38, 0x11, + 0x3c, 0x0d, 0x63, 0x09, 0x89, 0x04, 0xd0, 0x01, 0x52, 0xfb, 0x08, 0xf4, 0x15, 0xf1, 0x27, 0xf4, + 0x4b, 0xf4, 0xb0, 0xf1, 0xad, 0xf3, 0x77, 0xf3, 0x29, 0xf6, 0xe1, 0xf7, 0xdd, 0xf3, 0xe3, 0xf4, + 0x1f, 0xf9, 0x85, 0xfa, 0x7a, 0xfb, 0xd8, 0xfe, 0x0e, 0x01, 0x37, 0x07, 0x75, 0x08, 0x77, 0x08, + 0xbe, 0x0b, 0x4d, 0x0c, 0x93, 0x0d, 0xa1, 0x09, 0x98, 0x04, 0x4e, 0x04, 0x3b, 0x02, 0x60, 0xff, + 0x21, 0xfa, 0x36, 0xfa, 0x22, 0xfc, 0x5b, 0xfb, 0xe2, 0xfc, 0xc0, 0xf9, 0x16, 0xf8, 0x86, 0xf7, + 0xcc, 0xf7, 0xb9, 0xf2, 0xdb, 0xf2, 0x5c, 0xfa, 0xf1, 0xf8, 0x90, 0xfc, 0xe7, 0xfc, 0x57, 0xfc, + 0xcd, 0x01, 0x89, 0x03, 0xa4, 0x03, 0x07, 0x08, 0x67, 0x0c, 0x92, 0x0d, 0x9b, 0x0e, 0xb7, 0x0c, + 0x2f, 0x0c, 0x8e, 0x0d, 0xa7, 0x07, 0x0f, 0x04, 0x5a, 0x02, 0x76, 0x00, 0x8b, 0x00, 0x3f, 0xfc, + 0x93, 0xfa, 0x08, 0xfa, 0xf7, 0xf9, 0xaf, 0xf9, 0x1b, 0xf4, 0xea, 0xf5, 0xf0, 0xf5, 0x20, 0xf7, + 0x47, 0xf8, 0x2c, 0xf3, 0xe2, 0xf1, 0xf8, 0xf1, 0xa0, 0xf2, 0x82, 0xef, 0x38, 0xf0, 0xf1, 0xf2, + 0xe2, 0xf3, 0x85, 0xf6, 0x28, 0xf6, 0xe5, 0xfa, 0x27, 0x02, 0x4d, 0x06, 0xa9, 0x09, 0x90, 0x0c, + 0x51, 0x0f, 0x61, 0x10, 0x76, 0x0d, 0x13, 0x09, 0x64, 0x07, 0xc6, 0x06, 0xc5, 0x03, 0xe2, 0xff, + 0xa8, 0xfe, 0xd9, 0x00, 0x1f, 0x01, 0x39, 0x00, 0xf9, 0xff, 0x08, 0x01, 0x12, 0x05, 0x59, 0x05, + 0xd2, 0x05, 0xed, 0x05, 0x14, 0x07, 0xab, 0x09, 0xbc, 0x09, 0x5f, 0x07, 0xd9, 0x05, 0x40, 0x06, + 0x9c, 0x01, 0x0c, 0xfd, 0xe4, 0xfa, 0x90, 0xfc, 0xb3, 0xfc, 0x8a, 0xfd, 0xe5, 0xfb, 0x00, 0xfe, + 0x3e, 0x03, 0x26, 0x02, 0xa7, 0x00, 0x7a, 0x00, 0xf4, 0xff, 0xd9, 0xfd, 0x09, 0xf9, 0x0d, 0xf6, + 0x93, 0xf6, 0x1a, 0xf7, 0x68, 0xf7, 0xdb, 0xf5, 0x49, 0xf6, 0x84, 0xf6, 0x8d, 0xf9, 0x5f, 0xf9, + 0x13, 0xfb, 0x01, 0x00, 0x5b, 0x00, 0x04, 0x02, 0xa6, 0x02, 0xf3, 0x02, 0xce, 0x02, 0xe9, 0x03, + 0xf3, 0x02, 0x14, 0xff, 0x72, 0x00, 0xc0, 0x01, 0x82, 0x00, 0xae, 0xfe, 0xf4, 0xfe, 0x3d, 0x00, + 0x94, 0x01, 0x57, 0x03, 0x61, 0x00, 0x9b, 0x02, 0xf3, 0x01, 0xb5, 0xfe, 0xd7, 0xfc, 0x46, 0xf9, + 0x4d, 0xf9, 0xef, 0xf8, 0xe8, 0xf5, 0x4d, 0xf5, 0x44, 0xf8, 0x5e, 0xfb, 0x65, 0xfd, 0x79, 0xfc, + 0xf7, 0xfc, 0xb9, 0x00, 0x95, 0x04, 0xe6, 0x06, 0x08, 0x0b, 0xb5, 0x0e, 0x88, 0x13, 0xb2, 0x12, + 0xbb, 0x10, 0x5f, 0x10, 0xd6, 0x12, 0x81, 0x16, 0x47, 0x16, 0xef, 0x13, 0xb2, 0x15, 0x46, 0x17, + 0x3f, 0x13, 0xf6, 0x0f, 0x76, 0x09, 0x91, 0x04, 0xf9, 0x04, 0x3c, 0xfe, 0x24, 0xf9, 0xc5, 0xf8, + 0x7d, 0xf5, 0x65, 0xf2, 0xf1, 0xef, 0xcc, 0xed, 0xdf, 0xed, 0x6c, 0xed, 0x06, 0xeb, 0x34, 0xe7, + 0x59, 0xe8, 0x14, 0xee, 0xce, 0xec, 0xce, 0xea, 0x32, 0xec, 0xb9, 0xf0, 0xbf, 0xf5, 0x29, 0xfa, + 0xc6, 0xfd, 0x00, 0x05, 0x73, 0x09, 0xd0, 0x0b, 0x30, 0x11, 0xb3, 0x13, 0x90, 0x1c, 0xa3, 0x23, + 0x3a, 0x23, 0x4b, 0x23, 0xb2, 0x25, 0xf1, 0x20, 0x7d, 0x1b, 0x7d, 0x15, 0x44, 0x0b, 0x69, 0x06, + 0x80, 0x02, 0xd9, 0xfb, 0xcc, 0xf6, 0x9a, 0xf3, 0x4a, 0xf1, 0x25, 0xed, 0x0c, 0xe7, 0xe0, 0xe6, + 0x58, 0xe7, 0x03, 0xe8, 0xb5, 0xe6, 0xc5, 0xe3, 0x28, 0xe5, 0x2e, 0xe8, 0x40, 0xeb, 0xc9, 0xeb, + 0xd5, 0xed, 0x8d, 0xf3, 0x48, 0xf7, 0xa5, 0xf8, 0x8d, 0xff, 0xaf, 0x05, 0xe9, 0x0a, 0x65, 0x10, + 0xd5, 0x12, 0x67, 0x13, 0x3f, 0x18, 0x89, 0x1c, 0xeb, 0x1a, 0x18, 0x18, 0x8d, 0x13, 0x7b, 0x0f, + 0x14, 0x0b, 0x3d, 0x03, 0xb6, 0xfe, 0x34, 0xfc, 0x68, 0xfb, 0xd7, 0xf6, 0x08, 0xf3, 0x0b, 0xf3, + 0x6b, 0xf4, 0x36, 0xf6, 0x6b, 0xf5, 0x73, 0xf6, 0xe0, 0xf9, 0x0b, 0xfc, 0x1c, 0xfc, 0xfb, 0xfa, + 0xbc, 0xfb, 0x3d, 0xfd, 0x1b, 0xff, 0x74, 0xff, 0x45, 0x00, 0xeb, 0x06, 0x75, 0x0a, 0xb8, 0x0d, + 0x29, 0x11, 0xba, 0x12, 0x27, 0x17, 0x85, 0x16, 0xad, 0x12, 0xe3, 0x0c, 0x5c, 0x0c, 0x96, 0x0a, + 0xb1, 0x02, 0x25, 0xfe, 0xff, 0xf6, 0xd6, 0xf2, 0xfc, 0xed, 0x19, 0xe9, 0x38, 0xe6, 0xef, 0xe7, + 0x3f, 0xe6, 0x8f, 0xe3, 0xb9, 0xe4, 0x70, 0xe6, 0x2d, 0xeb, 0xc9, 0xee, 0xa7, 0xf0, 0xb2, 0xf5, + 0xa1, 0xf8, 0x27, 0xfa, 0x7c, 0xfc, 0x1d, 0xfc, 0x4e, 0xff, 0xab, 0x04, 0x6c, 0x08, 0xe7, 0x07, + 0x6e, 0x0b, 0x62, 0x0f, 0xb5, 0x0f, 0xec, 0x0e, 0xc6, 0x0e, 0xda, 0x0f, 0x5b, 0x10, 0xa3, 0x10, + 0x97, 0x0b, 0xd3, 0x06, 0x45, 0x08, 0x09, 0x06, 0xcd, 0x02, 0x2c, 0x02, 0xb2, 0xff, 0xb3, 0xfe, + 0x2f, 0xfc, 0x27, 0xf8, 0xf5, 0xf6, 0x35, 0xf5, 0x41, 0xf4, 0x05, 0xf4, 0x66, 0xf2, 0xbc, 0xf5, + 0x8b, 0xfa, 0xe6, 0xfb, 0xb7, 0xfb, 0xf3, 0xfc, 0xce, 0xfe, 0x24, 0x02, 0xff, 0x04, 0xb8, 0x06, + 0x33, 0x0a, 0x01, 0x0f, 0x08, 0x11, 0xaf, 0x0e, 0x12, 0x0e, 0xec, 0x0f, 0x31, 0x0d, 0xea, 0x09, + 0x77, 0x09, 0x36, 0x07, 0x82, 0x08, 0x63, 0x08, 0xd9, 0x03, 0x30, 0x01, 0x61, 0x00, 0x2e, 0x00, + 0xe8, 0xff, 0x84, 0xff, 0x32, 0xfe, 0x89, 0xff, 0x6c, 0xfc, 0x99, 0xf8, 0x8b, 0xf5, 0xda, 0xf5, + 0xa8, 0xf7, 0xa7, 0xf3, 0x80, 0xf2, 0x9d, 0xf3, 0x30, 0xf6, 0x91, 0xf9, 0x45, 0xf9, 0x31, 0xfc, + 0xc0, 0x00, 0x9d, 0x02, 0x45, 0x02, 0x95, 0x03, 0x2a, 0x06, 0x0a, 0x0a, 0x08, 0x09, 0xc4, 0x03, + 0x88, 0x03, 0x74, 0x03, 0x75, 0x02, 0xbe, 0x03, 0xab, 0x02, 0x90, 0x04, 0xc6, 0x07, 0xf6, 0x06, + 0xa0, 0x04, 0x49, 0x03, 0x5f, 0x06, 0xb5, 0x06, 0xf5, 0x05, 0x0a, 0x03, 0x89, 0x03, 0xc7, 0x03, + 0x95, 0xff, 0x39, 0xf9, 0xdb, 0xf2, 0xab, 0xf2, 0xcd, 0xf1, 0x15, 0xf0, 0xd9, 0xef, 0xea, 0xf2, + 0xe5, 0xf6, 0x8c, 0xf8, 0x70, 0xf9, 0x45, 0xfd, 0x38, 0xfe, 0x1a, 0x01, 0x67, 0xff, 0xed, 0xfb, + 0xda, 0xfb, 0xc9, 0xfc, 0xb6, 0xfb, 0x5a, 0xf7, 0xae, 0xf6, 0xac, 0xf6, 0xd6, 0xf9, 0x48, 0xfd, + 0x05, 0xff, 0xa5, 0x02, 0xc5, 0x06, 0x17, 0x0a, 0xa2, 0x09, 0x83, 0x0d, 0x5e, 0x11, 0xdb, 0x15, + 0xf2, 0x17, 0x29, 0x16, 0xd7, 0x16, 0x49, 0x16, 0x38, 0x13, 0xd9, 0x0f, 0x29, 0x0d, 0xf6, 0x0c, + 0x80, 0x0d, 0x6e, 0x0d, 0x58, 0x0a, 0xb9, 0x08, 0x75, 0x09, 0x94, 0x04, 0xac, 0x01, 0x10, 0xff, + 0xb8, 0xfb, 0xc5, 0xfa, 0xda, 0xf4, 0xe1, 0xed, 0xc8, 0xea, 0x3f, 0xeb, 0x85, 0xe7, 0x78, 0xe3, + 0x6e, 0xe3, 0xc0, 0xe2, 0x8b, 0xe5, 0xdf, 0xe6, 0x13, 0xe6, 0x36, 0xea, 0x54, 0xef, 0x0d, 0xf0, + 0xf7, 0xf2, 0x5a, 0xf6, 0xeb, 0xf9, 0x67, 0xff, 0x57, 0x00, 0xd0, 0x01, 0xdb, 0x05, 0xda, 0x0a, + 0xcc, 0x0c, 0x8c, 0x0e, 0x1d, 0x0e, 0xb5, 0x0f, 0x51, 0x10, 0x39, 0x0e, 0x9d, 0x0b, 0x01, 0x0a, + 0x7d, 0x09, 0x0a, 0x06, 0x0d, 0x02, 0xd5, 0xfe, 0x74, 0xfd, 0x2d, 0xfd, 0xc3, 0xf7, 0x8a, 0xf0, + 0xd8, 0xef, 0x82, 0xf0, 0x63, 0xef, 0x18, 0xee, 0x06, 0xef, 0xdd, 0xee, 0x4b, 0xf1, 0x47, 0xf2, + 0x62, 0xf2, 0x8d, 0xfa, 0x49, 0xfd, 0x6e, 0x00, 0xfe, 0x00, 0xc3, 0x01, 0x67, 0x07, 0xb5, 0x0a, + 0x78, 0x0e, 0x37, 0x10, 0x82, 0x12, 0x83, 0x12, 0x88, 0x13, 0x18, 0x11, 0x27, 0x0e, 0x0b, 0x0d, + 0xa7, 0x07, 0x6e, 0x03, 0xe8, 0xfd, 0xf4, 0xfb, 0x70, 0xfb, 0x12, 0xf9, 0xb3, 0xf7, 0x04, 0xf5, + 0xed, 0xf4, 0x21, 0xf6, 0xdc, 0xf3, 0xc5, 0xf1, 0x1c, 0xf3, 0x14, 0xf5, 0xae, 0xf6, 0xc0, 0xf8, + 0xa1, 0xfa, 0xbe, 0xfc, 0x51, 0xff, 0x74, 0xfc, 0x74, 0xfe, 0xbc, 0x02, 0xe7, 0x08, 0x2b, 0x0f, + 0xa9, 0x10, 0x65, 0x14, 0xc2, 0x18, 0xe6, 0x1c, 0x16, 0x1e, 0x53, 0x1d, 0x98, 0x1c, 0xe5, 0x1b, + 0x90, 0x16, 0x3f, 0x0f, 0x51, 0x08, 0xf9, 0x02, 0x31, 0xfd, 0x58, 0xf4, 0x8c, 0xee, 0xb4, 0xed, + 0x37, 0xed, 0xa1, 0xee, 0x5a, 0xec, 0x68, 0xe9, 0x03, 0xed, 0xfc, 0xee, 0x17, 0xee, 0x46, 0xf0, + 0xd9, 0xf3, 0x19, 0xf8, 0xbf, 0xfa, 0x7b, 0xfb, 0x53, 0xfb, 0x1f, 0xfe, 0xa9, 0x01, 0xc6, 0x02, + 0xe7, 0x05, 0x98, 0x0a, 0x8b, 0x12, 0xc3, 0x15, 0x13, 0x16, 0x79, 0x14, 0xbe, 0x14, 0x54, 0x14, + 0x89, 0x12, 0x22, 0x0f, 0x8a, 0x0d, 0x24, 0x0a, 0x05, 0x05, 0x28, 0xfe, 0xf8, 0xf7, 0x67, 0xf5, + 0x3d, 0xf1, 0x47, 0xed, 0xca, 0xea, 0x5d, 0xea, 0xa3, 0xeb, 0x27, 0xee, 0x3c, 0xee, 0xb7, 0xef, + 0xf0, 0xf3, 0x63, 0xf8, 0x3f, 0xfb, 0xa0, 0xfc, 0x81, 0x00, 0x2b, 0x02, 0x0a, 0x06, 0x73, 0x07, + 0xc6, 0x08, 0x68, 0x0f, 0xfb, 0x14, 0xb3, 0x16, 0x1d, 0x19, 0xa5, 0x1c, 0x4f, 0x1f, 0x2c, 0x21, + 0x0e, 0x1d, 0x2b, 0x19, 0xa9, 0x17, 0xd4, 0x14, 0xe2, 0x0f, 0x2a, 0x0c, 0xb3, 0x0a, 0x5f, 0x06, + 0x23, 0x00, 0x6f, 0xf8, 0x5d, 0xf2, 0x1a, 0xf0, 0x2b, 0xed, 0x28, 0xeb, 0x85, 0xe7, 0xdb, 0xe5, + 0xdb, 0xe6, 0xbe, 0xe8, 0xc4, 0xe9, 0x1c, 0xe9, 0xd4, 0xec, 0x08, 0xee, 0x4d, 0xed, 0x09, 0xef, + 0x19, 0xf1, 0x5b, 0xf5, 0x39, 0xfa, 0xbe, 0xfa, 0x8f, 0xfa, 0xeb, 0xff, 0x5d, 0x03, 0x30, 0x04, + 0xd7, 0x05, 0x2b, 0x06, 0xae, 0x09, 0x05, 0x09, 0x80, 0x09, 0xc4, 0x09, 0x17, 0x0a, 0xf0, 0x0c, + 0x42, 0x0b, 0x7e, 0x0a, 0xd8, 0x0a, 0xfe, 0x0a, 0x06, 0x0a, 0x61, 0x04, 0x1d, 0x01, 0x45, 0xff, + 0x9b, 0xfe, 0xd1, 0xfc, 0xea, 0xfa, 0x7b, 0xf7, 0x5b, 0xf5, 0xd6, 0xf4, 0xb3, 0xf0, 0x11, 0xf1, + 0xd9, 0xf5, 0xb7, 0xf5, 0xd5, 0xf7, 0x2b, 0xf8, 0xa1, 0xf9, 0xe1, 0xfd, 0xc7, 0xfd, 0xf1, 0xfc, + 0xab, 0xfc, 0x97, 0xfc, 0x26, 0xfc, 0xc5, 0xfb, 0x59, 0xf9, 0xc1, 0xf9, 0x3e, 0xfa, 0x6a, 0xfa, + 0x3d, 0xfc, 0xdd, 0xfc, 0x4f, 0x00, 0xa0, 0x02, 0x87, 0x02, 0x9b, 0x03, 0x65, 0x04, 0x10, 0x08, + 0x5b, 0x0a, 0xb3, 0x07, 0x84, 0x08, 0xb6, 0x08, 0x59, 0x06, 0x7b, 0x04, 0x67, 0x00, 0xa5, 0xff, + 0x90, 0x02, 0xd3, 0x03, 0x17, 0x04, 0x20, 0x09, 0x7c, 0x0d, 0x9c, 0x0e, 0xf4, 0x0e, 0xef, 0x0a, + 0x26, 0x09, 0x29, 0x0a, 0x0b, 0x09, 0x6e, 0x05, 0x66, 0x02, 0xee, 0xff, 0x68, 0xfd, 0xe4, 0xf9, + 0x37, 0xf7, 0x6d, 0xf5, 0xe6, 0xf8, 0x88, 0xf9, 0x68, 0xf7, 0xe4, 0xf6, 0x3d, 0xf7, 0x58, 0xf8, + 0xfa, 0xf7, 0x73, 0xf6, 0x75, 0xf8, 0xcd, 0xfd, 0x40, 0xfc, 0x98, 0xfa, 0x09, 0xfa, 0x92, 0xf7, + 0xe1, 0xf8, 0x72, 0xf9, 0x3f, 0xf9, 0x31, 0xfd, 0x82, 0x01, 0x1c, 0x05, 0xf6, 0x05, 0x1c, 0x08, + 0xfb, 0x0a, 0x2a, 0x0b, 0x7b, 0x0a, 0x28, 0x06, 0xe7, 0x02, 0x87, 0x02, 0x3d, 0x01, 0xda, 0xff, + 0x27, 0xfc, 0xcd, 0xfa, 0x4d, 0xf8, 0x86, 0xf4, 0xe8, 0xf2, 0x44, 0xf4, 0xf1, 0xf8, 0xa6, 0xf9, + 0x21, 0xfb, 0x09, 0xfd, 0x3c, 0x01, 0xfa, 0x05, 0xb2, 0x07, 0xe0, 0x08, 0x47, 0x0a, 0x15, 0x0e, + 0x96, 0x0e, 0xb6, 0x0e, 0xc2, 0x0f, 0xcd, 0x0f, 0x0c, 0x10, 0x05, 0x0f, 0x54, 0x0d, 0x42, 0x0d, + 0x6d, 0x0f, 0x24, 0x0f, 0x64, 0x0a, 0x5a, 0x07, 0x14, 0x05, 0xb1, 0x04, 0x2f, 0x02, 0xb6, 0xfc, + 0x11, 0xfc, 0xec, 0xf9, 0x93, 0xf8, 0xd0, 0xf5, 0xcf, 0xf2, 0x2e, 0xf3, 0x38, 0xf2, 0xf7, 0xf0, + 0x15, 0xf1, 0x3a, 0xf4, 0x0a, 0xfa, 0x9e, 0xfe, 0x7c, 0xff, 0x6b, 0xff, 0x0b, 0x00, 0x9e, 0x02, + 0x40, 0x05, 0xfd, 0x07, 0x97, 0x0a, 0xd3, 0x0e, 0xea, 0x10, 0xd9, 0x10, 0xa3, 0x0f, 0x26, 0x0e, + 0x71, 0x0d, 0x15, 0x09, 0xee, 0x02, 0x63, 0xff, 0x1b, 0xfd, 0xa0, 0xf8, 0x39, 0xf3, 0x83, 0xef, + 0x63, 0xed, 0x90, 0xee, 0xe4, 0xec, 0x1d, 0xec, 0x57, 0xec, 0x44, 0xee, 0xf9, 0xee, 0x00, 0xee, + 0x8c, 0xef, 0x6f, 0xf4, 0x21, 0xf8, 0x99, 0xfa, 0xce, 0xfc, 0x58, 0x00, 0x4e, 0x05, 0x97, 0x07, + 0x46, 0x0a, 0x6f, 0x0b, 0xfa, 0x0d, 0xfc, 0x12, 0x7c, 0x14, 0x3d, 0x16, 0x45, 0x1a, 0x85, 0x1a, + 0xda, 0x16, 0xb6, 0x11, 0xb6, 0x0b, 0x27, 0x07, 0x1f, 0x02, 0x60, 0xfa, 0xa3, 0xf3, 0xb8, 0xee, + 0x49, 0xeb, 0x0e, 0xe8, 0xde, 0xe4, 0x2b, 0xe3, 0x53, 0xe4, 0xbe, 0xe4, 0x0d, 0xe5, 0x47, 0xe5, + 0x90, 0xe5, 0x68, 0xe8, 0xc7, 0xeb, 0xdf, 0xee, 0xf0, 0xf2, 0x5a, 0xf8, 0x95, 0xfc, 0x4c, 0xfe, + 0xa6, 0xfd, 0xfc, 0x02, 0x07, 0x08, 0x24, 0x0d, 0xf2, 0x14, 0x0e, 0x19, 0xf9, 0x1f, 0x6b, 0x25, + 0x10, 0x25, 0x7a, 0x25, 0x57, 0x27, 0x14, 0x27, 0x0d, 0x23, 0x85, 0x1e, 0x8b, 0x17, 0x0b, 0x13, + 0x9f, 0x0f, 0x8e, 0x08, 0x61, 0x01, 0xce, 0xfa, 0x18, 0xf6, 0x57, 0xf3, 0x4f, 0xf0, 0xa3, 0xee, + 0x6a, 0xed, 0x14, 0xef, 0xa5, 0xec, 0xff, 0xeb, 0x69, 0xed, 0x35, 0xef, 0xbd, 0xf0, 0xda, 0xee, + 0x80, 0xee, 0x72, 0xef, 0x7a, 0xf3, 0xd0, 0xf2, 0xdc, 0xf3, 0xa7, 0xf7, 0x5a, 0xfa, 0x14, 0x00, + 0x5b, 0x02, 0x31, 0x06, 0xd7, 0x0a, 0xbe, 0x0b, 0xaf, 0x0a, 0x45, 0x09, 0x89, 0x0a, 0x99, 0x0b, + 0xa1, 0x0b, 0x21, 0x09, 0x5a, 0x05, 0xc6, 0x04, 0xe1, 0x02, 0x7b, 0xff, 0x30, 0xfb, 0x62, 0xf8, + 0x9e, 0xf7, 0x29, 0xf6, 0x8f, 0xf5, 0x0e, 0xf7, 0xfa, 0xfb, 0xce, 0xfe, 0x25, 0xfd, 0x6d, 0xfa, + 0xbe, 0xf9, 0x4b, 0xfc, 0xfd, 0xfd, 0xad, 0xfd, 0xc4, 0xff, 0x0a, 0x04, 0xcf, 0x06, 0x89, 0x07, + 0x72, 0x08, 0x02, 0x09, 0x00, 0x0c, 0xb1, 0x0e, 0x6a, 0x0d, 0x15, 0x0d, 0xff, 0x0c, 0xb9, 0x09, + 0x1d, 0x06, 0x73, 0x03, 0x06, 0x03, 0x28, 0x05, 0x68, 0x05, 0xe3, 0x02, 0x91, 0xfe, 0xed, 0xfc, + 0xbc, 0xf9, 0xd2, 0xf6, 0xe0, 0xf5, 0xb4, 0xf5, 0xfa, 0xf7, 0xab, 0xf8, 0x86, 0xf7, 0x50, 0xf8, + 0xb0, 0xf9, 0x64, 0xfb, 0xc2, 0xfc, 0x3f, 0xfd, 0x02, 0xff, 0x39, 0x03, 0x1c, 0x07, 0xe5, 0x08, + 0x05, 0x0b, 0xa0, 0x0b, 0xbf, 0x0b, 0x62, 0x0a, 0xed, 0x07, 0xd7, 0x05, 0xb4, 0x05, 0x44, 0x06, + 0xb7, 0x02, 0x12, 0x01, 0x4d, 0x02, 0x98, 0x01, 0x9a, 0x01, 0x77, 0x00, 0xa0, 0xff, 0x2f, 0x01, + 0xb3, 0x02, 0x04, 0xff, 0x39, 0xfc, 0x7e, 0xfb, 0xfe, 0xf9, 0xc5, 0xf8, 0xc0, 0xf6, 0xd3, 0xf5, + 0x65, 0xf7, 0x3c, 0xf5, 0x41, 0xf4, 0x17, 0xf5, 0x14, 0xf7, 0x52, 0xfd, 0x6f, 0xff, 0x9d, 0x01, + 0xbc, 0x03, 0x4f, 0x06, 0x22, 0x08, 0xad, 0x06, 0x14, 0x06, 0x24, 0x04, 0xda, 0x01, 0x08, 0xfe, + 0xe2, 0xf9, 0x1d, 0xf8, 0xd3, 0xf8, 0x7d, 0xf8, 0x1d, 0xf5, 0x2c, 0xf4, 0x51, 0xf4, 0xe0, 0xf4, + 0xd3, 0xf5, 0x91, 0xf3, 0x00, 0xf6, 0xe6, 0xf8, 0x56, 0xfb, 0x9e, 0xfc, 0xbd, 0xfc, 0xd5, 0xfe, + 0x10, 0xfe, 0xd3, 0xfb, 0x7a, 0xfa, 0x25, 0xfc, 0xc1, 0xfc, 0x57, 0xfe, 0xe3, 0xfe, 0x32, 0xfe, + 0xcd, 0x04, 0x71, 0x08, 0x8a, 0x0b, 0x0f, 0x0d, 0x49, 0x0c, 0x52, 0x0c, 0xef, 0x09, 0xd8, 0x07, + 0xe2, 0x07, 0x67, 0x08, 0xdd, 0x07, 0x32, 0x06, 0x93, 0x02, 0xb6, 0x01, 0xe4, 0x02, 0xb2, 0x01, + 0x18, 0x02, 0x9f, 0x02, 0x5f, 0x03, 0xa2, 0x04, 0x5b, 0x05, 0x37, 0x07, 0x4d, 0x09, 0xd6, 0x0a, + 0x23, 0x0b, 0x58, 0x08, 0x52, 0x06, 0xbf, 0x05, 0x51, 0x04, 0x18, 0x02, 0x3c, 0x00, 0x23, 0xff, + 0x30, 0xff, 0x8d, 0xff, 0x29, 0xfd, 0x2d, 0xfb, 0xf5, 0xfa, 0x00, 0xfc, 0x51, 0xfa, 0x33, 0xf6, + 0xed, 0xf2, 0x08, 0xf0, 0x89, 0xec, 0xfe, 0xe9, 0x1d, 0xeb, 0x37, 0xec, 0x78, 0xee, 0xf9, 0xed, + 0x2a, 0xec, 0xfc, 0xeb, 0xaa, 0xee, 0x0b, 0xf3, 0x4e, 0xf6, 0x68, 0xfc, 0x23, 0x02, 0xd7, 0x07, + 0x3d, 0x0c, 0x75, 0x0d, 0x21, 0x10, 0xd9, 0x14, 0x3e, 0x18, 0x05, 0x19, 0x95, 0x19, 0x16, 0x1b, + 0x0e, 0x1d, 0x72, 0x1b, 0xe4, 0x15, 0x69, 0x12, 0xb0, 0x0f, 0xcb, 0x0a, 0x7c, 0x05, 0x73, 0xff, + 0xc4, 0xfd, 0xe2, 0xfa, 0x19, 0xf6, 0x3b, 0xf1, 0x03, 0xef, 0x31, 0xee, 0xc0, 0xea, 0x80, 0xe9, + 0x45, 0xe8, 0xf6, 0xe8, 0x34, 0xea, 0xb7, 0xe8, 0x33, 0xe8, 0xcf, 0xe9, 0x4c, 0xee, 0x1e, 0xf2, + 0x04, 0xf8, 0xbd, 0xfc, 0x8e, 0xff, 0xbc, 0x04, 0xf9, 0x06, 0x02, 0x09, 0x91, 0x0f, 0xe7, 0x16, + 0x6d, 0x1c, 0x43, 0x1f, 0x4e, 0x20, 0x2b, 0x21, 0x63, 0x20, 0x7e, 0x1d, 0x60, 0x17, 0x2d, 0x13, + 0xc6, 0x0e, 0x18, 0x09, 0x56, 0x03, 0xd4, 0xfe, 0xc2, 0xfc, 0xcf, 0xfa, 0x2c, 0xf8, 0x0e, 0xf4, + 0x76, 0xf3, 0x02, 0xf2, 0x7c, 0xef, 0x5f, 0xf0, 0x37, 0xee, 0xc3, 0xef, 0x96, 0xf4, 0x92, 0xf5, + 0xb9, 0xf4, 0x19, 0xf5, 0xe4, 0xf5, 0x25, 0xf7, 0x2d, 0xfb, 0xc8, 0xfd, 0x71, 0x01, 0xde, 0x04, + 0x0c, 0x05, 0x09, 0x07, 0x0b, 0x0a, 0xdb, 0x0e, 0x86, 0x13, 0x3a, 0x12, 0xda, 0x0f, 0xa1, 0x0c, + 0x63, 0x08, 0xe9, 0x03, 0xc2, 0xff, 0x09, 0xfc, 0x83, 0xf8, 0xa5, 0xf6, 0x67, 0xf3, 0x78, 0xef, + 0x9f, 0xee, 0x0a, 0xf0, 0x3f, 0xee, 0x45, 0xed, 0x17, 0xee, 0x31, 0xef, 0xf9, 0xf1, 0x6a, 0xf3, + 0xdd, 0xf3, 0x9b, 0xf6, 0x8c, 0xf8, 0x58, 0xf8, 0x9f, 0xf8, 0x33, 0xf9, 0x0e, 0xfd, 0xd4, 0xff, + 0x16, 0x02, 0x50, 0x07, 0x29, 0x0d, 0x18, 0x11, 0xe3, 0x12, 0x44, 0x14, 0xc2, 0x15, 0xdc, 0x18, + 0x09, 0x1a, 0xd2, 0x16, 0x3d, 0x12, 0xfc, 0x0e, 0x7d, 0x0b, 0x16, 0x08, 0x8f, 0x04, 0xc8, 0x01, + 0x99, 0xfe, 0x90, 0xfb, 0xb8, 0xf6, 0xd1, 0xf2, 0x5a, 0xf5, 0xea, 0xf6, 0x0a, 0xf8, 0xac, 0xf9, + 0xc3, 0xfa, 0xda, 0xfc, 0xa3, 0xfc, 0xb1, 0xfb, 0xfc, 0xfb, 0x6e, 0xff, 0x6b, 0x00, 0x76, 0x01, + 0x7b, 0x03, 0x94, 0x04, 0x46, 0x07, 0x53, 0x08, 0x6e, 0x09, 0xbd, 0x0a, 0x61, 0x0b, 0xf4, 0x0b, + 0x5f, 0x0a, 0xc4, 0x07, 0x9f, 0x04, 0x9f, 0x04, 0x0f, 0x04, 0xee, 0x01, 0x29, 0x00, 0x22, 0xfd, + 0xb6, 0xfa, 0xea, 0xf6, 0xa5, 0xf3, 0x9f, 0xf0, 0x59, 0xee, 0x81, 0xec, 0x0f, 0xe7, 0x2e, 0xe6, + 0x30, 0xe9, 0xbb, 0xec, 0x5b, 0xef, 0xa8, 0xf1, 0xd5, 0xf3, 0x5b, 0xf5, 0x51, 0xf8, 0xd1, 0xfa, + 0x2e, 0xff, 0x73, 0x05, 0x16, 0x0b, 0x5c, 0x0f, 0xa2, 0x10, 0xf7, 0x11, 0x96, 0x12, 0x9b, 0x12, + 0xcd, 0x11, 0x7f, 0x10, 0xf0, 0x0f, 0x80, 0x0f, 0x21, 0x0d, 0x9e, 0x08, 0x05, 0x06, 0x18, 0x06, + 0x01, 0x04, 0x94, 0x01, 0x8f, 0xfe, 0x40, 0xfc, 0xca, 0xf8, 0x2a, 0xf4, 0x4e, 0xf1, 0x28, 0xef, + 0xbf, 0xef, 0xb9, 0xee, 0xe1, 0xeb, 0xea, 0xe9, 0xbe, 0xea, 0x0f, 0xee, 0x7d, 0xf0, 0x6d, 0xf3, + 0x5d, 0xf5, 0x89, 0xf7, 0x5a, 0xfa, 0x5b, 0xfd, 0x03, 0x01, 0xbc, 0x06, 0x37, 0x0b, 0x23, 0x0b, + 0x8c, 0x09, 0x6a, 0x08, 0x2d, 0x08, 0x55, 0x08, 0xbe, 0x07, 0x97, 0x07, 0x3a, 0x0a, 0x52, 0x0c, + 0xb8, 0x0b, 0x99, 0x0a, 0xe3, 0x0a, 0x0c, 0x0d, 0x8d, 0x0e, 0x2d, 0x0f, 0xff, 0x0e, 0x83, 0x0f, + 0x11, 0x0f, 0x56, 0x0d, 0xa5, 0x0a, 0x9c, 0x06, 0xb8, 0x04, 0x25, 0x03, 0x76, 0xfe, 0xca, 0xfc, + 0x04, 0xfd, 0xaa, 0xfd, 0xe7, 0xff, 0x76, 0x00, 0x6b, 0x00, 0xda, 0x00, 0xfb, 0xff, 0x32, 0xfd, + 0x34, 0xfd, 0x65, 0xfc, 0xcf, 0xf9, 0x66, 0xf6, 0xaf, 0xf0, 0x85, 0xed, 0x6d, 0xeb, 0x1e, 0xeb, + 0x8c, 0xec, 0x0f, 0xed, 0x8a, 0xef, 0xe5, 0xf1, 0xda, 0xf2, 0x32, 0xf4, 0x6f, 0xf7, 0x0c, 0xfd, + 0x52, 0x02, 0xea, 0x06, 0x9d, 0x0a, 0x2c, 0x0c, 0x13, 0x0d, 0x0b, 0x0d, 0x5e, 0x0b, 0x38, 0x0a, + 0xd2, 0x0c, 0x19, 0x0c, 0xf8, 0x08, 0xa9, 0x09, 0x5d, 0x08, 0x81, 0x09, 0x39, 0x09, 0xc8, 0x07, + 0x2a, 0x07, 0xba, 0x05, 0x8a, 0x02, 0x1f, 0xfd, 0xce, 0xfa, 0xfa, 0xf8, 0x03, 0xf9, 0x41, 0xf8, + 0x86, 0xf5, 0xae, 0xf3, 0xe6, 0xf1, 0x17, 0xf2, 0xf4, 0xf2, 0x1c, 0xf4, 0xcd, 0xf6, 0x99, 0xf8, + 0x62, 0xfb, 0xa3, 0xfc, 0x78, 0x00, 0x80, 0x06, 0x12, 0x09, 0x6a, 0x0c, 0xe5, 0x0d, 0x60, 0x0e, + 0xf3, 0x0f, 0xf8, 0x10, 0x2f, 0x10, 0x3f, 0x11, 0xc3, 0x13, 0xa4, 0x11, 0xcc, 0x0f, 0x18, 0x0d, + 0x29, 0x0a, 0x0e, 0x09, 0x42, 0x06, 0xf8, 0x03, 0x35, 0x01, 0xf3, 0xfd, 0xe2, 0xf9, 0xb3, 0xf5, + 0x82, 0xf3, 0xec, 0xf1, 0xb4, 0xf1, 0x4b, 0xf1, 0x0b, 0xf0, 0x57, 0xee, 0xb1, 0xed, 0xe3, 0xed, + 0x58, 0xef, 0x2f, 0xf2, 0xb9, 0xf5, 0x07, 0xfa, 0x12, 0xfc, 0x66, 0xfc, 0xa4, 0x00, 0xab, 0x05, + 0xe2, 0x09, 0x50, 0x0d, 0x88, 0x0e, 0x6f, 0x0f, 0x3a, 0x12, 0x5e, 0x12, 0xb1, 0x11, 0x21, 0x12, + 0x8f, 0x0f, 0x92, 0x0b, 0x28, 0x06, 0xb5, 0x00, 0xe1, 0xfc, 0x87, 0xfb, 0x28, 0xf9, 0xa0, 0xf7, + 0x4e, 0xf7, 0xe9, 0xf4, 0x74, 0xf2, 0xec, 0xee, 0x2c, 0xed, 0xaa, 0xed, 0x4c, 0xee, 0x8e, 0xee, + 0x54, 0xee, 0xfe, 0xee, 0xe4, 0xee, 0x32, 0xf0, 0xf1, 0xef, 0x68, 0xf0, 0xf7, 0xf4, 0xdf, 0xf7, + 0xd6, 0xf9, 0xaf, 0xfb, 0x20, 0xff, 0xbe, 0x03, 0x41, 0x09, 0xdb, 0x0d, 0x45, 0x10, 0xd0, 0x12, + 0xde, 0x13, 0x63, 0x12, 0x30, 0x10, 0x6d, 0x0d, 0x4a, 0x0a, 0x9f, 0x04, 0x22, 0xff, 0xff, 0xf9, + 0xb2, 0xf7, 0x2d, 0xf8, 0x15, 0xf7, 0xfa, 0xf6, 0x0e, 0xf7, 0xea, 0xf7, 0xe7, 0xf7, 0x5c, 0xf7, + 0xc8, 0xf9, 0xae, 0xfd, 0xae, 0x01, 0x99, 0x04, 0x20, 0x07, 0x9d, 0x06, 0xc7, 0x06, 0x89, 0x07, + 0xb0, 0x07, 0x70, 0x0a, 0xa8, 0x0e, 0xe0, 0x11, 0x1a, 0x14, 0xe4, 0x14, 0x7e, 0x16, 0x1b, 0x16, + 0x97, 0x17, 0x2f, 0x19, 0xb4, 0x16, 0x07, 0x14, 0x96, 0x0f, 0x27, 0x09, 0x9c, 0x02, 0xb4, 0xfd, + 0xb8, 0xf8, 0x14, 0xf4, 0x43, 0xee, 0x39, 0xe8, 0xe4, 0xe5, 0xcb, 0xe3, 0xa3, 0xe3, 0x5f, 0xe3, + 0xca, 0xe2, 0x1b, 0xe4, 0xde, 0xe3, 0xda, 0xe4, 0x69, 0xe8, 0xbc, 0xeb, 0x90, 0xef, 0x06, 0xf3, + 0x5e, 0xf5, 0xfc, 0xf7, 0xea, 0xfb, 0xfb, 0xff, 0x32, 0x04, 0x03, 0x09, 0xed, 0x0e, 0x10, 0x15, + 0x6f, 0x17, 0x9c, 0x18, 0xe8, 0x19, 0x41, 0x1a, 0xb5, 0x1c, 0x7c, 0x1c, 0x2c, 0x1a, 0xfa, 0x18, + 0x5a, 0x16, 0x23, 0x11, 0x22, 0x0b, 0xfc, 0x06, 0x5f, 0x03, 0x2b, 0xff, 0x30, 0xf9, 0x3d, 0xf4, + 0x3d, 0xf1, 0x84, 0xf0, 0x18, 0xf0, 0x18, 0xf0, 0xa4, 0xf1, 0x84, 0xf1, 0x79, 0xf0, 0x9a, 0xf0, + 0x1a, 0xf2, 0x28, 0xf4, 0xb3, 0xf6, 0x1b, 0xf8, 0xee, 0xf9, 0x41, 0xfc, 0xfe, 0xfe, 0x24, 0x02, + 0xf3, 0x03, 0x57, 0x05, 0x34, 0x08, 0xdc, 0x09, 0x94, 0x09, 0x2e, 0x09, 0x43, 0x09, 0x27, 0x0a, + 0x58, 0x0c, 0x32, 0x0d, 0xf8, 0x0c, 0xaa, 0x0d, 0x8b, 0x0b, 0x98, 0x08, 0x36, 0x06, 0x64, 0x05, + 0x15, 0x04, 0x84, 0x01, 0xa7, 0xff, 0x2c, 0xfc, 0xb4, 0xfa, 0xa3, 0xf8, 0x54, 0xf7, 0xa9, 0xf8, + 0x91, 0xf9, 0xf0, 0xfa, 0x79, 0xfa, 0xe9, 0xfa, 0xf3, 0xfb, 0x0e, 0xfe, 0xac, 0x00, 0x4f, 0x03, + 0x3d, 0x05, 0xd6, 0x04, 0x64, 0x05, 0x6b, 0x04, 0x40, 0x01, 0x6c, 0xff, 0x63, 0xfe, 0x46, 0xfc, + 0xa4, 0xfa, 0x5f, 0xfa, 0x34, 0xf9, 0x84, 0xf8, 0xfe, 0xf9, 0x81, 0xf9, 0x0f, 0xfb, 0xe3, 0xfb, + 0xbc, 0xfa, 0x31, 0xfb, 0x91, 0xfa, 0x83, 0xfb, 0x8c, 0xfc, 0x9d, 0xfc, 0x80, 0xfa, 0xce, 0xf7, + 0x09, 0xf6, 0xc7, 0xf5, 0x7a, 0xf7, 0xa9, 0xf8, 0x64, 0xfb, 0x1f, 0xff, 0x3b, 0xff, 0xae, 0xfe, + 0x61, 0xfe, 0x35, 0xff, 0xd1, 0x00, 0x74, 0x01, 0x49, 0x00, 0xf3, 0xfd, 0xa5, 0xfc, 0x7d, 0xfa, + 0x68, 0xf7, 0xe6, 0xf6, 0x59, 0xf7, 0x3e, 0xf7, 0x0a, 0xf8, 0x10, 0xf9, 0x98, 0xf9, 0x5b, 0xfd, + 0x98, 0x00, 0x82, 0x02, 0xa9, 0x05, 0x90, 0x08, 0x11, 0x0c, 0x80, 0x0e, 0xcc, 0x0e, 0x1b, 0x0f, + 0xc1, 0x0f, 0x1d, 0x0f, 0xaa, 0x0c, 0x9e, 0x0b, 0x8d, 0x0b, 0x28, 0x0d, 0x87, 0x0e, 0x3a, 0x10, + 0x17, 0x13, 0xad, 0x13, 0x3a, 0x10, 0xe9, 0x0c, 0x2b, 0x0b, 0xa4, 0x08, 0x0f, 0x06, 0x98, 0x03, + 0x9b, 0x00, 0xd3, 0xfc, 0x16, 0xfa, 0xfb, 0xf4, 0xf1, 0xf0, 0x22, 0xf0, 0xee, 0xee, 0xf9, 0xee, + 0x5d, 0xf0, 0xcd, 0xef, 0x06, 0xf1, 0x93, 0xf3, 0xf7, 0xf5, 0x4d, 0xf9, 0xe8, 0xfb, 0x55, 0xff, + 0x0e, 0x02, 0x26, 0x03, 0x47, 0x03, 0xbb, 0x04, 0x8e, 0x04, 0x2d, 0x04, 0xc5, 0x03, 0xa1, 0x02, + 0x6e, 0x03, 0xd6, 0x02, 0x44, 0x02, 0x4c, 0x02, 0x07, 0x03, 0x02, 0x02, 0x48, 0xff, 0xa3, 0xfe, + 0x01, 0xfd, 0x7a, 0xfc, 0x0e, 0xfd, 0x38, 0xfe, 0xbc, 0xfd, 0x00, 0xfc, 0xcd, 0xfb, 0x7e, 0xfa, + 0xed, 0xf9, 0x68, 0xfa, 0x1d, 0xfb, 0x71, 0xfe, 0x4b, 0x00, 0x21, 0x01, 0x65, 0x01, 0x22, 0x02, + 0x71, 0x03, 0x6d, 0x05, 0x91, 0x07, 0x55, 0x09, 0x02, 0x0b, 0x8e, 0x0a, 0xf6, 0x0a, 0x40, 0x0b, + 0x8e, 0x0a, 0x98, 0x0a, 0x2f, 0x08, 0x9a, 0x05, 0x42, 0x02, 0x47, 0xff, 0x62, 0xfb, 0x56, 0xf8, + 0x11, 0xf7, 0x10, 0xf5, 0x50, 0xf4, 0x42, 0xf2, 0xfc, 0xef, 0x51, 0xef, 0x32, 0xf0, 0x36, 0xf1, + 0x7a, 0xf1, 0x3a, 0xf3, 0x03, 0xf6, 0x44, 0xf7, 0xd6, 0xf9, 0xfc, 0xfc, 0x84, 0x00, 0xdd, 0x03, + 0xa3, 0x04, 0x6d, 0x06, 0xcf, 0x08, 0x41, 0x0c, 0x7e, 0x0f, 0x91, 0x13, 0x62, 0x18, 0x02, 0x1c, + 0xdc, 0x1d, 0x76, 0x1d, 0xfd, 0x1c, 0x9e, 0x1b, 0xab, 0x19, 0xb6, 0x15, 0x63, 0x0f, 0x19, 0x09, + 0xc7, 0x02, 0x93, 0xfd, 0x9f, 0xf7, 0xa1, 0xf3, 0x8a, 0xf1, 0xb6, 0xee, 0x87, 0xeb, 0x09, 0xe9, + 0x74, 0xe7, 0x30, 0xe6, 0xb6, 0xe5, 0xbe, 0xe4, 0x8a, 0xe4, 0xac, 0xe7, 0x8f, 0xe9, 0xe9, 0xe9, + 0x7d, 0xeb, 0x6a, 0xec, 0x08, 0xef, 0xe1, 0xf1, 0x29, 0xf5, 0x08, 0xf9, 0x1b, 0xfe, 0xd1, 0x03, + 0x4e, 0x09, 0x25, 0x0f, 0xe0, 0x13, 0x95, 0x16, 0x8d, 0x18, 0xda, 0x18, 0xe9, 0x16, 0x49, 0x15, + 0xde, 0x12, 0x44, 0x10, 0x6b, 0x0b, 0xdb, 0x05, 0x0c, 0x00, 0xc2, 0xf9, 0x15, 0xf5, 0x12, 0xf2, + 0xc4, 0xf1, 0xae, 0xf0, 0xde, 0xef, 0x07, 0xf0, 0x8d, 0xef, 0x99, 0xef, 0xdd, 0xf1, 0x99, 0xf3, + 0xc7, 0xf5, 0x7c, 0xf9, 0xa7, 0xfb, 0x96, 0xfc, 0x77, 0xfe, 0x3e, 0xfe, 0xb2, 0x00, 0x25, 0x05, + 0x55, 0x08, 0xa0, 0x0c, 0xb7, 0x0f, 0x87, 0x12, 0x7d, 0x13, 0x79, 0x14, 0x6e, 0x15, 0x65, 0x15, + 0xc0, 0x15, 0x93, 0x13, 0x11, 0x12, 0x31, 0x10, 0x01, 0x0e, 0x8e, 0x0a, 0x09, 0x04, 0xf3, 0xff, + 0x9f, 0xfb, 0x64, 0xf8, 0xbd, 0xf4, 0x6f, 0xf3, 0x5d, 0xf4, 0xd4, 0xf3, 0xe0, 0xf4, 0x79, 0xf3, + 0xa0, 0xf1, 0x0f, 0xf2, 0xb6, 0xf3, 0xb9, 0xf4, 0x78, 0xf6, 0x23, 0xf9, 0xd5, 0xfa, 0xf2, 0xfd, + 0x2b, 0xff, 0x3c, 0x00, 0xee, 0x03, 0x77, 0x05, 0x87, 0x07, 0x86, 0x08, 0x21, 0x09, 0xab, 0x09, + 0x1a, 0x08, 0xba, 0x07, 0x2c, 0x08, 0xad, 0x09, 0xd6, 0x09, 0xbe, 0x08, 0xd2, 0x07, 0x2e, 0x06, + 0x00, 0x05, 0x22, 0x03, 0x2d, 0x00, 0xbc, 0xfd, 0xa0, 0xfc, 0x65, 0xfa, 0x24, 0xfa, 0x1c, 0xfc, + 0x8d, 0xfc, 0x38, 0xfc, 0xc6, 0xfc, 0x32, 0xfb, 0x1a, 0xfa, 0xbe, 0xfb, 0xf5, 0xfb, 0xb9, 0xfd, + 0xf8, 0xff, 0x65, 0x00, 0x59, 0x01, 0x42, 0x01, 0xad, 0xff, 0xf9, 0xfe, 0xbe, 0xfd, 0x01, 0xfc, + 0x51, 0xfa, 0x5a, 0xf9, 0x6f, 0xf9, 0xf7, 0xf8, 0x46, 0xf8, 0x79, 0xf8, 0x09, 0xfa, 0xbc, 0xfb, + 0x87, 0xfd, 0xbb, 0xff, 0xdc, 0xff, 0x7b, 0xff, 0x42, 0x00, 0x66, 0x00, 0xbc, 0x00, 0x21, 0x02, + 0xc9, 0x01, 0xe4, 0xff, 0x52, 0xfe, 0x51, 0xfe, 0xf2, 0xfe, 0x7d, 0x00, 0x27, 0x03, 0x45, 0x04, + 0xa3, 0x07, 0xce, 0x0b, 0xff, 0x0d, 0xe6, 0x0f, 0xe8, 0x10, 0xf8, 0x10, 0x49, 0x11, 0xc1, 0x0f, + 0x13, 0x0d, 0x67, 0x0a, 0x70, 0x08, 0x47, 0x06, 0xbe, 0x04, 0xf7, 0x02, 0x97, 0x00, 0x61, 0xfe, + 0x57, 0xfc, 0xac, 0xfb, 0x23, 0xfc, 0xc7, 0xfc, 0xc7, 0xfd, 0x3d, 0xfe, 0x24, 0xfd, 0x81, 0xfc, + 0x41, 0xfd, 0x87, 0xfb, 0xcf, 0xf9, 0x3c, 0xf9, 0xec, 0xf6, 0xc3, 0xf3, 0xfe, 0xf0, 0x7b, 0xf0, + 0x57, 0xf1, 0xbe, 0xf4, 0xae, 0xf6, 0x84, 0xf7, 0x4f, 0xf9, 0x5b, 0xf9, 0x80, 0xf9, 0x5c, 0xf8, + 0xdc, 0xf7, 0x97, 0xf8, 0xda, 0xf8, 0x15, 0xfa, 0x50, 0xfb, 0x18, 0xfb, 0x30, 0xfb, 0x6d, 0xfa, + 0x29, 0xfa, 0xda, 0xf9, 0x39, 0xfb, 0xdd, 0xfc, 0x5b, 0xfe, 0xe8, 0x00, 0x16, 0x04, 0x81, 0x08, + 0x46, 0x0b, 0x96, 0x0c, 0xf4, 0x0b, 0x86, 0x0e, 0x67, 0x0e, 0x01, 0x0e, 0xff, 0x0c, 0x94, 0x0b, + 0xdb, 0x0b, 0x9c, 0x08, 0xd1, 0x07, 0xa6, 0x07, 0xab, 0x07, 0xd6, 0x09, 0x57, 0x08, 0x3e, 0x06, + 0x14, 0x04, 0xa1, 0x00, 0x4e, 0xfe, 0x0c, 0xfc, 0x8f, 0xfa, 0x40, 0xfa, 0x50, 0xf9, 0xd8, 0xf7, + 0xd7, 0xf4, 0xc7, 0xf2, 0x83, 0xf2, 0xb0, 0xf1, 0x3a, 0xf1, 0x76, 0xf1, 0x1a, 0xf4, 0xc1, 0xf7, + 0xe4, 0xf9, 0x5b, 0xfc, 0x5d, 0xff, 0x0b, 0x02, 0x87, 0x05, 0x87, 0x07, 0x43, 0x09, 0x26, 0x0c, + 0xaf, 0x0e, 0xef, 0x0f, 0x05, 0x10, 0x79, 0x10, 0x4b, 0x0e, 0xca, 0x0a, 0xb9, 0x07, 0x6f, 0x03, + 0x86, 0x00, 0x58, 0xff, 0xec, 0xfc, 0xdd, 0xfa, 0x26, 0xf9, 0xdd, 0xf6, 0x7d, 0xf5, 0x6b, 0xf3, + 0xda, 0xf2, 0xe3, 0xf3, 0x13, 0xf6, 0x10, 0xf6, 0x87, 0xf3, 0x55, 0xf3, 0xad, 0xf2, 0x3b, 0xf3, + 0x84, 0xf5, 0x12, 0xf7, 0x4c, 0xfa, 0x06, 0xfc, 0x95, 0xfb, 0xa7, 0xfe, 0x42, 0x01, 0x0f, 0x05, + 0xdc, 0x09, 0xb3, 0x0e, 0x67, 0x12, 0xe6, 0x15, 0xb0, 0x18, 0x88, 0x17, 0x8c, 0x16, 0x6e, 0x13, + 0xd8, 0x0e, 0x2c, 0x0b, 0xd9, 0x05, 0xf2, 0x00, 0xd1, 0xfe, 0xb3, 0xfd, 0x27, 0xfa, 0xc4, 0xf6, + 0xc6, 0xf2, 0xc3, 0xef, 0x8b, 0xee, 0x7e, 0xec, 0xd5, 0xeb, 0x45, 0xed, 0x1e, 0xef, 0xdf, 0xef, + 0x0f, 0xf1, 0x22, 0xf3, 0x36, 0xf5, 0xe6, 0xf7, 0x2c, 0xfa, 0x7e, 0xfb, 0x56, 0xfe, 0x8d, 0xfe, + 0x00, 0x01, 0xbb, 0x04, 0x32, 0x09, 0xdc, 0x0f, 0x38, 0x15, 0xd5, 0x19, 0xab, 0x1a, 0x4b, 0x1c, + 0x74, 0x1c, 0x9a, 0x19, 0x78, 0x17, 0x9e, 0x13, 0x3d, 0x10, 0x97, 0x0d, 0x40, 0x08, 0x27, 0x03, + 0x5e, 0x00, 0x7d, 0xfd, 0xb3, 0xfa, 0x2c, 0xf9, 0x6c, 0xf7, 0x58, 0xf6, 0x38, 0xf5, 0xd7, 0xf3, + 0x91, 0xf4, 0xdc, 0xf5, 0xb8, 0xf6, 0x38, 0xf6, 0x5f, 0xf5, 0x55, 0xf4, 0xcf, 0xf3, 0xbc, 0xf4, + 0x36, 0xf3, 0x5c, 0xf5, 0xcf, 0xf7, 0x49, 0xf9, 0xf3, 0xfb, 0xc3, 0xfd, 0x89, 0x00, 0xc5, 0x04, + 0xcb, 0x07, 0xa8, 0x07, 0xed, 0x06, 0xc6, 0x06, 0x83, 0x04, 0x11, 0x03, 0x64, 0x02, 0x99, 0x00, + 0xb6, 0xfe, 0x1a, 0xfb, 0x68, 0xf6, 0x2c, 0xf4, 0x00, 0xf2, 0xbb, 0xf1, 0x08, 0xf3, 0x1f, 0xf4, + 0x00, 0xf7, 0x74, 0xfa, 0x72, 0xfe, 0xbd, 0xff, 0x87, 0x00, 0x3a, 0x02, 0xba, 0x04, 0x24, 0x06, + 0x77, 0x07, 0xc3, 0x07, 0x0d, 0x0a, 0x6a, 0x0b, 0x15, 0x0b, 0x48, 0x0c, 0x2e, 0x0d, 0xa7, 0x0c, + 0xbc, 0x0a, 0xcf, 0x08, 0x30, 0x07, 0xaf, 0x07, 0x8f, 0x07, 0xaf, 0x06, 0x97, 0x05, 0xf4, 0x03, + 0x27, 0x01, 0x6b, 0xff, 0xc1, 0xfd, 0x76, 0xfb, 0xd9, 0xf9, 0x9d, 0xf5, 0x94, 0xf1, 0x79, 0xee, + 0xad, 0xed, 0xf4, 0xef, 0x54, 0xf2, 0x39, 0xf4, 0x0a, 0xf5, 0x5b, 0xf6, 0x03, 0xf8, 0x67, 0xf8, + 0x9d, 0xf9, 0x7e, 0xfc, 0xec, 0x00, 0x70, 0x05, 0xb1, 0x08, 0x24, 0x0c, 0xa9, 0x0e, 0x3f, 0x0f, + 0x32, 0x0e, 0x2b, 0x0e, 0x6e, 0x0d, 0x43, 0x0c, 0x99, 0x0a, 0xd0, 0x08, 0x5a, 0x09, 0x5f, 0x0a, + 0x61, 0x0b, 0x27, 0x0a, 0x37, 0x09, 0xf4, 0x08, 0x64, 0x07, 0x18, 0x07, 0xf9, 0x04, 0x6a, 0x03, + 0xba, 0x01, 0x86, 0xfe, 0x9f, 0xfa, 0xef, 0xf7, 0x36, 0xf8, 0x19, 0xf8, 0x95, 0xf8, 0xf5, 0xf7, + 0x58, 0xf6, 0x64, 0xf6, 0x45, 0xf6, 0xf8, 0xf5, 0x17, 0xf8, 0x4d, 0xfa, 0x47, 0xfd, 0xe4, 0xfe, + 0x33, 0xfe, 0xb0, 0xfd, 0x24, 0xfc, 0x5d, 0xf9, 0x2b, 0xf7, 0x0f, 0xf7, 0x7d, 0xf7, 0xec, 0xf8, + 0x2b, 0xf9, 0x1d, 0xf8, 0x4d, 0xf8, 0x6f, 0xfa, 0x3e, 0xfd, 0xdf, 0xff, 0xab, 0x03, 0x35, 0x05, + 0x2b, 0x06, 0x0c, 0x07, 0x58, 0x07, 0x49, 0x08, 0x25, 0x08, 0x0d, 0x06, 0xce, 0x02, 0xaa, 0x00, + 0x10, 0xff, 0x81, 0xfd, 0x1c, 0xfe, 0xb3, 0xff, 0xa8, 0x00, 0x53, 0x03, 0x70, 0x04, 0x5f, 0x05, + 0x13, 0x07, 0x95, 0x07, 0x26, 0x08, 0xf0, 0x06, 0x4e, 0x05, 0xd2, 0x02, 0x1a, 0x01, 0x09, 0xff, + 0x31, 0xfd, 0x6a, 0xfb, 0x05, 0xfa, 0x9f, 0xf9, 0xf8, 0xf8, 0xba, 0xf6, 0x4d, 0xf7, 0x5c, 0xf9, + 0x5c, 0xfb, 0xc7, 0xff, 0xc3, 0x03, 0xeb, 0x06, 0xa8, 0x09, 0x6f, 0x0a, 0x23, 0x09, 0x15, 0x0a, + 0x45, 0x0a, 0xf3, 0x07, 0x75, 0x05, 0xfc, 0x02, 0xa4, 0x01, 0x4e, 0x02, 0xc0, 0x03, 0xf2, 0x02, + 0xbf, 0x02, 0x9d, 0x01, 0x4e, 0xff, 0x2e, 0xfd, 0x1f, 0xfa, 0xf0, 0xf8, 0x9d, 0xf8, 0x62, 0xf6, + 0x3d, 0xf4, 0xec, 0xf2, 0xb9, 0xf1, 0x67, 0xf1, 0x87, 0xf0, 0x1f, 0xf0, 0x87, 0xef, 0xbb, 0xef, + 0x0e, 0xef, 0x2b, 0xee, 0x62, 0xf2, 0x25, 0xf7, 0xf5, 0xfb, 0xa1, 0x01, 0x24, 0x06, 0xc6, 0x09, + 0xf6, 0x0c, 0x62, 0x0e, 0x08, 0x0f, 0xcd, 0x12, 0xb0, 0x15, 0x15, 0x17, 0x78, 0x17, 0x4e, 0x16, + 0x8f, 0x14, 0x02, 0x13, 0x39, 0x11, 0x2d, 0x0e, 0xd7, 0x0c, 0xe7, 0x09, 0x4e, 0x06, 0x9d, 0x02, + 0x01, 0xfe, 0x6d, 0xfb, 0xb2, 0xf8, 0x25, 0xf4, 0x9a, 0xf1, 0x0a, 0xf0, 0x16, 0xee, 0x6e, 0xeb, + 0x0e, 0xea, 0x12, 0xe8, 0x49, 0xe8, 0xa3, 0xea, 0x19, 0xeb, 0x44, 0xee, 0x61, 0xf1, 0x07, 0xf5, + 0x5b, 0xf9, 0x77, 0xfd, 0x54, 0x01, 0x82, 0x05, 0xc4, 0x09, 0xf0, 0x0c, 0x66, 0x10, 0x78, 0x13, + 0xeb, 0x16, 0x49, 0x17, 0x36, 0x15, 0x66, 0x11, 0xa6, 0x0c, 0x3a, 0x0a, 0x9b, 0x07, 0xa3, 0x05, + 0x90, 0x05, 0x18, 0x05, 0x1d, 0x03, 0x05, 0x00, 0x48, 0xfd, 0xde, 0xfc, 0xf2, 0xfc, 0x1e, 0xfd, + 0x41, 0xfd, 0x50, 0xfd, 0xc4, 0xfc, 0x9e, 0xfc, 0xa0, 0xfc, 0x2a, 0xfc, 0x68, 0xfd, 0xb4, 0xfd, + 0x33, 0xfd, 0x1a, 0xfd, 0xe4, 0xfc, 0xfb, 0xfd, 0x09, 0x01, 0xff, 0x03, 0x3c, 0x06, 0x1c, 0x0a, + 0x0b, 0x0d, 0x10, 0x0e, 0x98, 0x0d, 0x31, 0x0d, 0x95, 0x0a, 0xa1, 0x06, 0xcd, 0x00, 0xdf, 0xf9, + 0x22, 0xf6, 0x96, 0xf2, 0xae, 0xef, 0x81, 0xed, 0x50, 0xec, 0x85, 0xeb, 0x67, 0xea, 0xff, 0xe7, + 0x77, 0xe7, 0x5c, 0xe9, 0x3f, 0xeb, 0x55, 0xef, 0x86, 0xf3, 0x68, 0xf7, 0xbe, 0xfa, 0x1e, 0xfc, + 0x19, 0xfe, 0x83, 0xff, 0x3d, 0x02, 0x82, 0x04, 0x9d, 0x04, 0x40, 0x06, 0x51, 0x08, 0x8d, 0x0b, + 0x20, 0x0f, 0x8e, 0x12, 0x2a, 0x15, 0x6b, 0x16, 0x4e, 0x17, 0x2c, 0x15, 0x15, 0x13, 0xf2, 0x11, + 0x38, 0x0f, 0xc7, 0x0b, 0xcd, 0x05, 0xbc, 0x00, 0x3c, 0xfd, 0x16, 0xfa, 0xc6, 0xf7, 0xd2, 0xf5, + 0x1d, 0xf4, 0x7d, 0xf2, 0xff, 0xf1, 0xfc, 0xf0, 0x9e, 0xf0, 0x72, 0xf3, 0x88, 0xf5, 0x41, 0xf7, + 0x31, 0xf9, 0x83, 0xf9, 0x60, 0xfa, 0x1c, 0xfb, 0x95, 0xfb, 0x7f, 0xfc, 0xd9, 0x00, 0x57, 0x04, + 0xc0, 0x06, 0x38, 0x09, 0x2f, 0x09, 0x19, 0x0b, 0x1d, 0x0c, 0xe2, 0x0d, 0x94, 0x0f, 0x8e, 0x10, + 0xea, 0x10, 0x91, 0x0e, 0x4d, 0x0d, 0xb5, 0x0a, 0x7c, 0x08, 0x4b, 0x06, 0x5b, 0x02, 0x74, 0xfe, + 0x80, 0xfa, 0xc0, 0xf6, 0x38, 0xf3, 0x21, 0xf1, 0x61, 0xf0, 0xf3, 0xf0, 0xb4, 0xf3, 0x4b, 0xf4, + 0x27, 0xf5, 0xee, 0xf7, 0x4c, 0xf8, 0x45, 0xf9, 0x80, 0xfa, 0x3d, 0xfc, 0x3b, 0xff, 0x44, 0x01, + 0x7b, 0x01, 0xed, 0x03, 0x50, 0x07, 0xcd, 0x07, 0xce, 0x06, 0xe5, 0x04, 0x06, 0x03, 0x03, 0x03, + 0x46, 0x04, 0x70, 0x05, 0x91, 0x07, 0x87, 0x09, 0xdf, 0x08, 0x7f, 0x07, 0x82, 0x06, 0xc0, 0x05, + 0x3c, 0x06, 0xbe, 0x05, 0xbe, 0x01, 0x06, 0xfe, 0xcc, 0xfa, 0x43, 0xf8, 0xa8, 0xf7, 0x03, 0xf6, + 0x57, 0xf5, 0x34, 0xf6, 0x5c, 0xf5, 0x9d, 0xf3, 0x48, 0xf4, 0x0e, 0xf5, 0x48, 0xf6, 0xa5, 0xf8, + 0x3e, 0xfb, 0xd6, 0xfe, 0x99, 0x02, 0xb3, 0x04, 0x93, 0x04, 0x79, 0x04, 0x99, 0x03, 0x8a, 0x02, + 0x47, 0x00, 0x13, 0xff, 0xb4, 0xfc, 0xe2, 0xfc, 0x7e, 0xfe, 0xb2, 0xff, 0xd2, 0x02, 0xfe, 0x04, + 0x09, 0x07, 0x47, 0x08, 0x6c, 0x08, 0x9a, 0x09, 0xa6, 0x0c, 0x1e, 0x0e, 0xca, 0x0d, 0x37, 0x0d, + 0x6c, 0x0a, 0x73, 0x08, 0x65, 0x07, 0x2c, 0x06, 0xf6, 0x05, 0x9b, 0x06, 0xe0, 0x05, 0xed, 0x04, + 0xbd, 0x05, 0xad, 0x05, 0xb7, 0x04, 0x84, 0x04, 0xb7, 0x02, 0x9a, 0x00, 0x2b, 0xff, 0x3e, 0xfb, + 0x61, 0xf7, 0xe0, 0xf3, 0x96, 0xf0, 0x12, 0xef, 0x46, 0xed, 0x3a, 0xeb, 0x2e, 0xeb, 0x77, 0xec, + 0x74, 0xec, 0xa2, 0xed, 0xd2, 0xef, 0xa1, 0xf2, 0x5c, 0xf6, 0x91, 0xf8, 0x98, 0xfa, 0xd4, 0xfe, + 0x66, 0x03, 0xc1, 0x05, 0x7d, 0x06, 0x37, 0x05, 0xa9, 0x04, 0x86, 0x04, 0x1d, 0x04, 0xe1, 0x04, + 0x69, 0x07, 0x8c, 0x0a, 0x36, 0x0c, 0xdb, 0x0b, 0xe4, 0x0b, 0xf4, 0x0a, 0x30, 0x0b, 0xed, 0x09, + 0x0a, 0x08, 0x43, 0x07, 0x2b, 0x06, 0x7c, 0x03, 0xaf, 0xfe, 0xb5, 0xfb, 0xc1, 0xf8, 0x01, 0xf7, + 0xba, 0xf5, 0x69, 0xf2, 0xd6, 0xf0, 0x64, 0xf0, 0x01, 0xf0, 0x1d, 0xf1, 0xff, 0xf4, 0x61, 0xf9, + 0x7f, 0xfd, 0x88, 0x00, 0x43, 0x02, 0x2d, 0x04, 0x64, 0x05, 0xa4, 0x06, 0x41, 0x07, 0xbf, 0x05, + 0xa5, 0x04, 0x32, 0x05, 0xa4, 0x04, 0x6e, 0x04, 0x97, 0x05, 0xe5, 0x04, 0x9d, 0x02, 0x48, 0x00, + 0x24, 0xfe, 0x3c, 0xfd, 0x7c, 0xfd, 0xf9, 0xfc, 0xd4, 0xfc, 0xfe, 0xfc, 0x6b, 0xfd, 0x4f, 0xfd, + 0xd7, 0xfc, 0xec, 0xfd, 0x99, 0xfe, 0xe1, 0xfd, 0x84, 0xfd, 0x60, 0xfc, 0x6f, 0xfc, 0xc7, 0xfd, + 0x3a, 0xff, 0xbd, 0x01, 0x5c, 0x04, 0x0a, 0x08, 0x11, 0x0b, 0x14, 0x0d, 0x7a, 0x0e, 0x71, 0x10, + 0x75, 0x12, 0x0b, 0x13, 0xa0, 0x13, 0x8b, 0x12, 0x11, 0x11, 0x27, 0x0f, 0x8d, 0x0a, 0x3b, 0x05, + 0x29, 0x02, 0x39, 0xff, 0xac, 0xfb, 0x63, 0xf8, 0x1d, 0xf5, 0x38, 0xf3, 0x61, 0xf2, 0x32, 0xf0, + 0xac, 0xee, 0xa7, 0xee, 0x01, 0xee, 0xb9, 0xed, 0x76, 0xed, 0x46, 0xee, 0x13, 0xf0, 0x98, 0xf2, + 0x70, 0xf4, 0x91, 0xf4, 0x7d, 0xf6, 0x62, 0xf8, 0x2c, 0xfb, 0x90, 0xfe, 0xee, 0x01, 0x96, 0x07, + 0xff, 0x0b, 0x31, 0x0f, 0x75, 0x11, 0x9c, 0x13, 0xcf, 0x15, 0x2e, 0x16, 0x7a, 0x14, 0xf6, 0x10, + 0x75, 0x0d, 0x01, 0x09, 0xf5, 0x02, 0x5f, 0xfe, 0xef, 0xfa, 0xef, 0xf8, 0xdd, 0xf7, 0x27, 0xf7, + 0xd5, 0xf6, 0x5c, 0xf6, 0x6d, 0xf6, 0x03, 0xf5, 0xd1, 0xf4, 0x8d, 0xf6, 0x54, 0xf7, 0x90, 0xf8, + 0x54, 0xfa, 0x5e, 0xfb, 0x13, 0xfd, 0x24, 0x00, 0x87, 0x00, 0x81, 0x00, 0x84, 0x02, 0xf0, 0x03, + 0x1a, 0x07, 0x6c, 0x0a, 0xa3, 0x0e, 0xfe, 0x13, 0xfa, 0x16, 0xcb, 0x17, 0x0d, 0x18, 0x88, 0x17, + 0x7e, 0x16, 0x9c, 0x15, 0x6a, 0x12, 0x41, 0x0d, 0x70, 0x09, 0xa1, 0x03, 0x72, 0xfd, 0x44, 0xf9, + 0xf2, 0xf5, 0xba, 0xf3, 0x40, 0xf1, 0xf3, 0xed, 0x7e, 0xea, 0x4a, 0xe9, 0x78, 0xe8, 0xee, 0xe7, + 0x7f, 0xe8, 0xcc, 0xeb, 0x5e, 0xef, 0x16, 0xf2, 0xf9, 0xf3, 0x04, 0xf5, 0xed, 0xf7, 0x31, 0xfa, + 0x93, 0xfb, 0xd9, 0xfc, 0x6d, 0xfe, 0xfc, 0x00, 0x7c, 0x04, 0x3b, 0x07, 0x3e, 0x09, 0xe0, 0x0c, + 0x16, 0x0e, 0xda, 0x0e, 0x54, 0x0f, 0xc4, 0x0f, 0x53, 0x11, 0x59, 0x12, 0x9c, 0x10, 0x96, 0x0c, + 0xae, 0x0a, 0x9e, 0x07, 0xf7, 0x03, 0x15, 0x01, 0xbe, 0xfd, 0xc6, 0xfb, 0xe9, 0xf9, 0xeb, 0xf6, + 0x31, 0xf5, 0x02, 0xf5, 0x6b, 0xf4, 0xf7, 0xf2, 0xd4, 0xf2, 0x53, 0xf3, 0x4f, 0xf4, 0x69, 0xf5, + 0xdf, 0xf4, 0xa8, 0xf5, 0x05, 0xf7, 0x94, 0xf8, 0x43, 0xfa, 0xd5, 0xfb, 0xc9, 0xfc, 0xb1, 0xfc, + 0xfa, 0xfb, 0xc9, 0xfa, 0xe5, 0xfb, 0xb3, 0xfd, 0xfc, 0xff, 0xcf, 0x01, 0xda, 0x01, 0x65, 0x03, + 0xaa, 0x05, 0x86, 0x07, 0xcc, 0x06, 0xb6, 0x05, 0x1b, 0x05, 0x5d, 0x02, 0xc7, 0x00, 0xc8, 0xff, + 0x9c, 0xff, 0x55, 0x01, 0xfb, 0x01, 0xec, 0x01, 0x07, 0x03, 0x62, 0x05, 0x6f, 0x06, 0xb2, 0x06, + 0x1c, 0x08, 0xca, 0x09, 0x36, 0x0c, 0x1c, 0x0e, 0x28, 0x0e, 0xbd, 0x0d, 0x23, 0x0d, 0x56, 0x0c, + 0x39, 0x0a, 0x29, 0x07, 0x44, 0x04, 0x1e, 0x01, 0xfc, 0xfc, 0xc6, 0xf9, 0x4b, 0xf9, 0x67, 0xfa, + 0xe5, 0xfb, 0x44, 0xfd, 0x64, 0xfc, 0x96, 0xfb, 0xe4, 0xfc, 0xe6, 0xfc, 0xb2, 0xfb, 0xcf, 0xfa, + 0xd6, 0xf9, 0x55, 0xf8, 0x45, 0xf7, 0x6f, 0xf5, 0x35, 0xf5, 0x60, 0xf5, 0x5b, 0xf4, 0x74, 0xf4, + 0x31, 0xf5, 0xd7, 0xf7, 0x41, 0xfb, 0x2d, 0xfe, 0xd2, 0x00, 0x4e, 0x03, 0xdd, 0x05, 0xf6, 0x06, + 0xd6, 0x06, 0x9b, 0x06, 0x69, 0x06, 0x6f, 0x05, 0x38, 0x04, 0x1d, 0x01, 0x8a, 0xfe, 0x41, 0xfd, + 0xda, 0xfa, 0xad, 0xf8, 0x54, 0xf9, 0x6a, 0xfb, 0x0c, 0xfd, 0x52, 0xfe, 0xa4, 0xfe, 0x32, 0x00, + 0xe5, 0x02, 0x13, 0x05, 0xf0, 0x05, 0x3f, 0x07, 0x71, 0x08, 0x09, 0x08, 0x03, 0x06, 0x3d, 0x04, + 0x9b, 0x03, 0x53, 0x04, 0x59, 0x04, 0x46, 0x04, 0xb4, 0x04, 0xaa, 0x05, 0xa0, 0x06, 0x6c, 0x06, + 0x1b, 0x05, 0x05, 0x03, 0x5c, 0x03, 0xe9, 0x01, 0x82, 0xff, 0xb1, 0xfe, 0x5f, 0xfd, 0x3c, 0xfd, + 0xe0, 0xfa, 0xb3, 0xf8, 0xf4, 0xf7, 0x03, 0xf8, 0x90, 0xf7, 0xe9, 0xf6, 0xd5, 0xf7, 0xe3, 0xf9, + 0x7a, 0xfd, 0x67, 0x00, 0x5a, 0x02, 0x89, 0x04, 0xf2, 0x06, 0x9e, 0x08, 0xf2, 0x09, 0xcb, 0x0a, + 0xae, 0x0a, 0x9e, 0x09, 0x4d, 0x08, 0xe7, 0x05, 0x05, 0x05, 0x02, 0x06, 0x22, 0x06, 0x1c, 0x05, + 0xee, 0x03, 0xb6, 0x02, 0xfe, 0xff, 0xd4, 0xfd, 0xb3, 0xfa, 0xf0, 0xf8, 0xcd, 0xf9, 0x4d, 0xf8, + 0xf3, 0xf6, 0x8f, 0xf5, 0x5a, 0xf5, 0x94, 0xf5, 0x81, 0xf4, 0xec, 0xf2, 0x62, 0xf2, 0x76, 0xf3, + 0x34, 0xf4, 0xf3, 0xf5, 0xa9, 0xf8, 0x57, 0xfb, 0x8d, 0xff, 0x2e, 0x03, 0x52, 0x05, 0x2b, 0x08, + 0x99, 0x0b, 0x6a, 0x0d, 0xe1, 0x0e, 0x75, 0x0f, 0xa6, 0x0f, 0xa0, 0x0e, 0x7f, 0x0b, 0x44, 0x07, + 0x61, 0x04, 0xfd, 0x01, 0x5b, 0xfe, 0xdd, 0xf9, 0xb4, 0xf5, 0xf0, 0xf2, 0xd4, 0xf0, 0x52, 0xee, + 0xc5, 0xec, 0x22, 0xee, 0xf4, 0xee, 0xdd, 0xef, 0x31, 0xf0, 0x20, 0xf0, 0x09, 0xf1, 0xc3, 0xf3, + 0x09, 0xf5, 0x0f, 0xf5, 0x3c, 0xf7, 0x99, 0xf9, 0x3b, 0xfb, 0x73, 0xfd, 0x7f, 0x00, 0x67, 0x03, + 0xe3, 0x08, 0x0b, 0x0d, 0x4d, 0x10, 0x17, 0x16, 0xa0, 0x1b, 0xc4, 0x1f, 0xba, 0x21, 0x64, 0x22, + 0xb4, 0x22, 0x95, 0x20, 0xe0, 0x1b, 0x28, 0x17, 0xc1, 0x12, 0x07, 0x0e, 0x67, 0x09, 0x3e, 0x05, + 0x24, 0x00, 0x76, 0xfb, 0xf3, 0xf8, 0x5a, 0xf5, 0x33, 0xf3, 0xe1, 0xf0, 0x71, 0xee, 0xff, 0xec, + 0x02, 0xeb, 0x35, 0xe9, 0x88, 0xea, 0x34, 0xec, 0xda, 0xec, 0x06, 0xee, 0xa0, 0xee, 0x19, 0xf0, + 0x88, 0xf0, 0xa7, 0xf1, 0x9d, 0xf3, 0x2c, 0xf8, 0x8d, 0xfd, 0x6b, 0x01, 0x19, 0x07, 0x43, 0x0b, + 0x8b, 0x0d, 0xec, 0x0f, 0x53, 0x10, 0x00, 0x10, 0x31, 0x0f, 0x23, 0x0e, 0xd1, 0x0b, 0xae, 0x08, + 0x88, 0x06, 0xbf, 0x03, 0x8f, 0x01, 0xfc, 0xff, 0xdb, 0xfd, 0xa7, 0xfd, 0xea, 0xfd, 0x74, 0xfc, + 0xd3, 0xfa, 0x8c, 0xfb, 0x23, 0xfd, 0xa0, 0xfe, 0xe0, 0xfe, 0x30, 0xfe, 0xad, 0xff, 0xdc, 0x00, + 0x47, 0x01, 0xd7, 0x00, 0xac, 0x00, 0xfc, 0x01, 0x3a, 0x02, 0x34, 0x02, 0xd8, 0x02, 0x4c, 0x06, + 0x05, 0x0a, 0x2f, 0x0b, 0x41, 0x0b, 0xad, 0x0b, 0xe3, 0x0b, 0x61, 0x0b, 0x26, 0x09, 0x22, 0x07, + 0xc0, 0x04, 0xd1, 0x01, 0x45, 0xfe, 0x69, 0xfa, 0x25, 0xf8, 0x4d, 0xf5, 0x03, 0xf2, 0x14, 0xef, + 0x32, 0xed, 0xa5, 0xed, 0x24, 0xef, 0xe8, 0xef, 0xf1, 0xf0, 0xd5, 0xf2, 0xbf, 0xf4, 0x72, 0xf8, + 0x44, 0xfa, 0x7f, 0xfc, 0xd8, 0xfe, 0x57, 0x01, 0xb0, 0x03, 0x65, 0x05, 0x03, 0x07, 0xa3, 0x06, + 0x11, 0x06, 0xa3, 0x04, 0x01, 0x04, 0xe4, 0x04, 0xbd, 0x05, 0x3c, 0x05, 0x1c, 0x04, 0x9a, 0x03, + 0x6a, 0x04, 0x17, 0x05, 0xd8, 0x04, 0x95, 0x04, 0x40, 0x04, 0xda, 0x02, 0xb2, 0xff, 0xc2, 0xfc, + 0x84, 0xfa, 0xf9, 0xf8, 0xca, 0xf7, 0x1e, 0xf6, 0xe4, 0xf5, 0xa4, 0xf6, 0x25, 0xf7, 0x5a, 0xf7, + 0xc1, 0xf6, 0x3c, 0xf6, 0x33, 0xf8, 0xbf, 0xfa, 0x93, 0xfd, 0x3a, 0x00, 0x94, 0x03, 0xed, 0x05, + 0x3f, 0x06, 0x1b, 0x06, 0x17, 0x06, 0x06, 0x06, 0x5a, 0x04, 0x28, 0x01, 0xd6, 0xfd, 0xca, 0xfd, + 0x23, 0xff, 0x63, 0xff, 0xd6, 0xff, 0xb4, 0x00, 0x9e, 0x01, 0x67, 0x02, 0x72, 0x02, 0xc7, 0x01, + 0xb1, 0x01, 0x6c, 0x01, 0x16, 0xff, 0xe6, 0xfd, 0xd7, 0xfc, 0xf4, 0xfc, 0xe6, 0xfd, 0xaf, 0xfc, + 0x8d, 0xfc, 0x14, 0xfd, 0x0d, 0xfe, 0x5d, 0xff, 0x46, 0x00, 0xbe, 0x02, 0xbd, 0x05, 0x94, 0x09, + 0x3c, 0x0a, 0xbe, 0x0b, 0xfc, 0x0d, 0x87, 0x0c, 0x73, 0x0b, 0x8d, 0x09, 0xad, 0x07, 0x4c, 0x07, + 0x76, 0x06, 0xab, 0x03, 0x04, 0x02, 0x52, 0x02, 0x86, 0x02, 0x83, 0x03, 0x9e, 0x04, 0xbe, 0x06, + 0x15, 0x07, 0x9c, 0x06, 0x52, 0x07, 0x47, 0x07, 0x77, 0x07, 0x1d, 0x06, 0x44, 0x03, 0xd6, 0xff, + 0xc1, 0xfd, 0xcf, 0xfc, 0x5d, 0xfa, 0xcf, 0xf7, 0xf0, 0xf6, 0x68, 0xf5, 0xa8, 0xf5, 0x44, 0xf7, + 0x4f, 0xf7, 0x7d, 0xf8, 0x5f, 0xfa, 0xf8, 0xfa, 0x0f, 0xfa, 0xa2, 0xf8, 0xf1, 0xf7, 0xf5, 0xf7, + 0x49, 0xf8, 0x4b, 0xf7, 0x92, 0xf6, 0x29, 0xf6, 0xc1, 0xf4, 0xb6, 0xf2, 0x76, 0xf1, 0x46, 0xf2, + 0xd5, 0xf4, 0x6a, 0xf7, 0x9e, 0xfa, 0x63, 0xfe, 0x06, 0x03, 0x66, 0x07, 0xf4, 0x08, 0x61, 0x0b, + 0xbb, 0x0d, 0x04, 0x0f, 0x6c, 0x0f, 0xa4, 0x0d, 0x90, 0x0c, 0x04, 0x0d, 0x2c, 0x0c, 0x9a, 0x0b, + 0xc4, 0x0a, 0xa0, 0x09, 0x98, 0x08, 0x6d, 0x06, 0xe4, 0x02, 0x29, 0x00, 0x01, 0xfe, 0xfe, 0xf9, + 0xa8, 0xf6, 0x34, 0xf5, 0xec, 0xf2, 0x0e, 0xf2, 0xf0, 0xf1, 0x33, 0xf0, 0x7d, 0xef, 0xea, 0xee, + 0xa5, 0xed, 0xf8, 0xeb, 0x4a, 0xeb, 0xac, 0xec, 0x20, 0xf0, 0x58, 0xf4, 0x8f, 0xf6, 0x57, 0xfb, + 0x06, 0x00, 0x99, 0x01, 0xd5, 0x04, 0xd0, 0x06, 0x97, 0x0b, 0xf5, 0x10, 0x85, 0x13, 0xef, 0x14, + 0xe5, 0x16, 0x10, 0x17, 0x3c, 0x15, 0xf5, 0x13, 0x71, 0x11, 0xf2, 0x0f, 0x16, 0x0e, 0xd0, 0x0a, + 0x20, 0x06, 0xe4, 0x04, 0xea, 0x03, 0xb9, 0xff, 0x14, 0xfe, 0x1a, 0xfc, 0x37, 0xf8, 0x0b, 0xf7, + 0x6f, 0xf7, 0x43, 0xf3, 0x56, 0xf1, 0x87, 0xef, 0x52, 0xee, 0x1c, 0xed, 0xc2, 0xeb, 0x3c, 0xef, + 0x83, 0xf1, 0xd2, 0xf3, 0xc1, 0xf5, 0x8a, 0xf7, 0x42, 0xfc, 0x8e, 0xfe, 0xfa, 0x03, 0xd1, 0x07, + 0xee, 0x09, 0xcf, 0x0c, 0xcd, 0x0c, 0x30, 0x0a, 0x41, 0x0a, 0xc1, 0x08, 0xd2, 0x03, 0xab, 0x01, + 0xc7, 0xff, 0x15, 0xfe, 0xcb, 0xfc, 0x5d, 0xfc, 0x8c, 0xf9, 0x0e, 0xf7, 0x0d, 0xf9, 0x4c, 0xf9, + 0x88, 0xf9, 0x0c, 0xf9, 0xf2, 0xf9, 0x1f, 0xfc, 0x57, 0xfb, 0x49, 0xff, 0xb1, 0x02, 0xc6, 0x02, + 0x6e, 0x03, 0xf2, 0x03, 0x96, 0x04, 0x81, 0x04, 0x8a, 0x0a, 0xdb, 0x0b, 0x01, 0x0c, 0x12, 0x14, + 0x1a, 0x1a, 0xd1, 0x1a, 0xb2, 0x1f, 0xa0, 0x26, 0xae, 0x23, 0xd2, 0x24, 0xe3, 0x24, 0x5b, 0x1d, + 0x3a, 0x1a, 0xfc, 0x19, 0x1d, 0x13, 0x73, 0x0d, 0x00, 0x0c, 0x5e, 0x07, 0xce, 0x04, 0xb0, 0x01, + 0xb4, 0x00, 0xa8, 0xfb, 0x9d, 0xf9, 0xeb, 0xf8, 0x46, 0xf6, 0x5d, 0xf7, 0x82, 0xfb, 0x16, 0x00, + 0xa5, 0xfc, 0xeb, 0xfa, 0xca, 0xfa, 0x5c, 0xfd, 0x7f, 0xfc, 0xfc, 0xfc, 0xa1, 0xff, 0x9c, 0xfc, + 0x38, 0xfe, 0x12, 0x00, 0x94, 0x00, 0x4b, 0x02, 0x47, 0x07, 0x7a, 0x05, 0xf9, 0x02, 0x91, 0xff, + 0xcb, 0xfd, 0x5a, 0xfd, 0xc8, 0xfa, 0xb0, 0xf7, 0xfa, 0xf2, 0xd0, 0xf0, 0xff, 0xed, 0x31, 0xed, + 0x46, 0xec, 0xc4, 0xeb, 0xda, 0xe9, 0x0d, 0xe5, 0xdd, 0xe3, 0x03, 0xe4, 0xd4, 0xe6, 0xc7, 0xea, + 0xa2, 0xec, 0x7d, 0xee, 0xe1, 0xf0, 0x56, 0xf2, 0xe3, 0xf3, 0xcc, 0xf7, 0x81, 0xfb, 0x46, 0xfe, + 0x88, 0x00, 0x67, 0x01, 0xdd, 0x00, 0x4e, 0x04, 0x43, 0x06, 0x15, 0x04, 0x48, 0x05, 0x36, 0x04, + 0xb4, 0x03, 0xc9, 0x04, 0x52, 0x06, 0x7e, 0x04, 0xab, 0x04, 0x31, 0x04, 0x39, 0xff, 0xc3, 0xfc, + 0xb9, 0xfa, 0x50, 0xf9, 0x2d, 0xf3, 0x2b, 0xf2, 0xea, 0xe7, 0x6d, 0xe7, 0xc5, 0xec, 0xa7, 0xea, + 0x35, 0xf1, 0x08, 0xf0, 0xef, 0xed, 0x6f, 0xed, 0x76, 0xf0, 0x73, 0xf3, 0xa9, 0xf6, 0x9a, 0xfb, + 0xe4, 0xfc, 0x5e, 0x02, 0x2d, 0x03, 0x57, 0x08, 0x21, 0x0a, 0x29, 0x0b, 0x78, 0x03, 0x89, 0xfc, + 0x1a, 0xff, 0xe2, 0xfd, 0xeb, 0x01, 0xd1, 0x05, 0x2b, 0x08, 0x2f, 0x08, 0xb7, 0x09, 0x08, 0x0f, + 0x29, 0x10, 0x3e, 0x11, 0xe2, 0x11, 0xab, 0x0d, 0x18, 0x0a, 0x79, 0x05, 0x35, 0x07, 0x6f, 0x06, + 0xec, 0x04, 0x29, 0x00, 0x89, 0x00, 0xe7, 0xfe, 0x4e, 0xfc, 0x0a, 0xfe, 0x38, 0xff, 0x08, 0xfd, + 0x15, 0xfa, 0xb3, 0x02, 0x4d, 0x05, 0x00, 0x03, 0x8f, 0x02, 0x75, 0xff, 0xcc, 0xfa, 0xc8, 0xff, + 0x70, 0x00, 0x3d, 0xfa, 0xc2, 0xfb, 0x0b, 0xf8, 0x68, 0xf6, 0x5a, 0xf8, 0x55, 0xf8, 0x74, 0xfb, + 0xc6, 0xfd, 0x8e, 0x00, 0x57, 0x02, 0x7d, 0x05, 0xe3, 0x0c, 0xa0, 0x10, 0xff, 0x0d, 0x20, 0x10, + 0x84, 0x10, 0xf5, 0x0d, 0x8d, 0x11, 0x88, 0x10, 0xf8, 0x0b, 0x57, 0x0e, 0x40, 0x0b, 0x92, 0x07, + 0x68, 0x0b, 0x53, 0x0a, 0x8e, 0x0a, 0x14, 0x0e, 0x05, 0x0d, 0x84, 0x0f, 0x0e, 0x12, 0x44, 0x12, + 0xf5, 0x0f, 0xfc, 0x0b, 0x0f, 0x0b, 0x65, 0x05, 0x15, 0x03, 0x0d, 0x03, 0xcf, 0x00, 0x09, 0x02, + 0xdf, 0x00, 0x87, 0xfc, 0x6e, 0xfb, 0xb7, 0xfb, 0x02, 0xfd, 0x72, 0x05, 0xb0, 0x03, 0x57, 0x06, + 0x01, 0x09, 0xa2, 0x07, 0x7d, 0x0f, 0x62, 0x10, 0xd6, 0x0f, 0xb2, 0x10, 0x4a, 0x0b, 0x5c, 0x0b, + 0x17, 0x0d, 0x1d, 0x0e, 0x00, 0x12, 0x31, 0x0f, 0xbd, 0x0a, 0xfe, 0x09, 0x13, 0x0b, 0xad, 0x0d, + 0x9f, 0x09, 0x97, 0x06, 0xa8, 0x04, 0x1d, 0x05, 0xa0, 0x05, 0x41, 0x04, 0x18, 0x06, 0x65, 0x03, + 0x17, 0x00, 0x37, 0xfc, 0x6e, 0xf6, 0x99, 0xf6, 0xee, 0xf3, 0x13, 0xec, 0x2c, 0xe9, 0xc4, 0xe7, + 0x11, 0xea, 0xd3, 0xed, 0x4d, 0xed, 0xa7, 0xf0, 0x73, 0xf3, 0xde, 0xf1, 0x73, 0xf4, 0x92, 0xf6, + 0xfe, 0xf4, 0xb7, 0xf7, 0x6f, 0xf7, 0x9b, 0xf1, 0xf3, 0xf1, 0x6f, 0xf2, 0xdf, 0xef, 0x31, 0xed, + 0xa0, 0xe6, 0x55, 0xe4, 0x7a, 0xde, 0x10, 0xdf, 0x8f, 0xe0, 0xb8, 0xda, 0xa3, 0xdd, 0x42, 0xe0, + 0xde, 0xda, 0x7c, 0xda, 0x08, 0xdf, 0xe6, 0xde, 0x55, 0xe0, 0xc9, 0xde, 0xb5, 0xdd, 0x66, 0xdb, + 0xb4, 0xda, 0x43, 0xde, 0x21, 0xe1, 0x2a, 0xe6, 0xb0, 0xeb, 0xc4, 0xf1, 0x6d, 0xf5, 0x4a, 0xf8, + 0x75, 0xff, 0x7b, 0x05, 0xcf, 0x07, 0xbe, 0x0a, 0x3c, 0x10, 0xf5, 0x13, 0x64, 0x19, 0x15, 0x1a, + 0xe3, 0x14, 0x1f, 0x0f, 0xaa, 0x0f, 0x7c, 0x10, 0xb8, 0x0d, 0x73, 0x0c, 0x2c, 0x0c, 0xf0, 0x08, + 0x72, 0x08, 0xe7, 0x0a, 0x2e, 0x09, 0x93, 0x08, 0xd1, 0x0a, 0xe2, 0x06, 0x5f, 0x08, 0xcb, 0x0d, + 0xd2, 0x11, 0x59, 0x12, 0x34, 0x0b, 0x1c, 0x0f, 0xda, 0x0c, 0x24, 0x0f, 0xdf, 0x12, 0xb3, 0x14, + 0x5f, 0x16, 0x35, 0x19, 0x01, 0x20, 0xa3, 0x23, 0x89, 0x28, 0x3c, 0x2b, 0xbb, 0x2c, 0x01, 0x2f, + 0x71, 0x29, 0x75, 0x29, 0x49, 0x23, 0x34, 0x1b, 0xbe, 0x15, 0x55, 0x0a, 0xb7, 0x07, 0x74, 0x04, + 0xbc, 0x01, 0xd0, 0x00, 0x7b, 0xfc, 0x61, 0xf8, 0x15, 0xf4, 0x09, 0xf2, 0xb0, 0xed, 0xf6, 0xe8, + 0x83, 0xe5, 0xb2, 0xe6, 0xa9, 0xe6, 0x8f, 0xea, 0xa9, 0xf0, 0xbd, 0xec, 0x44, 0xec, 0xc9, 0xf1, + 0x91, 0xf6, 0xcb, 0xf7, 0xaf, 0xf5, 0x0f, 0x01, 0xf4, 0x00, 0xf1, 0xfe, 0xb8, 0x07, 0x3d, 0x09, + 0x82, 0x0d, 0x94, 0x0f, 0xd2, 0x11, 0xc0, 0x0d, 0xc4, 0x0d, 0xdd, 0x10, 0xb5, 0x0e, 0x8e, 0x0a, + 0x0a, 0x06, 0x78, 0x05, 0x61, 0xfe, 0xe4, 0xf8, 0x6d, 0xf5, 0xeb, 0xed, 0x11, 0xe9, 0x09, 0xe5, + 0x83, 0xe2, 0x3a, 0xdf, 0x33, 0xe4, 0x6e, 0xe8, 0x7a, 0xe9, 0x53, 0xea, 0xed, 0xe6, 0x60, 0xec, + 0xfb, 0xeb, 0xfc, 0xee, 0xfa, 0xf3, 0x2d, 0xf7, 0x03, 0xfa, 0x80, 0xfd, 0xcd, 0x01, 0x48, 0x05, + 0xaf, 0x0d, 0xb9, 0x11, 0x68, 0x13, 0x17, 0x14, 0x5f, 0x17, 0x5b, 0x1c, 0x02, 0x1b, 0x42, 0x1a, + 0xe0, 0x1a, 0x76, 0x19, 0xeb, 0x18, 0x83, 0x18, 0x2a, 0x16, 0x3e, 0x14, 0xae, 0x0f, 0x43, 0x07, + 0x19, 0x02, 0xd2, 0x00, 0xec, 0xfe, 0xa4, 0xfd, 0x5b, 0xfa, 0x6f, 0xfb, 0xaa, 0xf9, 0xe2, 0xf7, + 0xc7, 0xfb, 0x0e, 0xfa, 0xbc, 0xf9, 0x9b, 0xfb, 0x32, 0xff, 0xe3, 0xff, 0x31, 0x01, 0x31, 0x04, + 0x78, 0x00, 0x49, 0xfb, 0x82, 0xfc, 0xb9, 0xf9, 0xf7, 0xf6, 0x70, 0xf7, 0x7e, 0xf3, 0x74, 0xf5, + 0x0d, 0xf6, 0x00, 0xfb, 0xcd, 0xfc, 0xf9, 0xf7, 0x16, 0xf9, 0x38, 0xf9, 0xde, 0xf2, 0xd3, 0xf0, + 0xdc, 0xee, 0xb3, 0xec, 0xf6, 0xeb, 0x73, 0xe6, 0x5b, 0xe4, 0x85, 0xe3, 0x3e, 0xe2, 0x43, 0xe5, + 0xef, 0xe5, 0x9a, 0xe3, 0x61, 0xe7, 0x27, 0xec, 0xed, 0xeb, 0xd5, 0xef, 0xae, 0xf5, 0x16, 0xf5, + 0x9a, 0xfc, 0x95, 0xff, 0xc3, 0xf9, 0x43, 0xf9, 0x0b, 0xf8, 0x53, 0xf3, 0x3a, 0xef, 0x06, 0xee, + 0xb0, 0xee, 0x32, 0xf0, 0xf2, 0xf3, 0xf7, 0xf9, 0x96, 0xfa, 0xb6, 0xfe, 0xd5, 0xff, 0xa0, 0xff, + 0xcf, 0xfe, 0xeb, 0xfe, 0x6d, 0x03, 0xfc, 0x02, 0x89, 0x01, 0x19, 0x03, 0x24, 0x02, 0x76, 0x02, + 0x64, 0x05, 0x76, 0x04, 0x5b, 0x09, 0xbb, 0x0b, 0x30, 0x0f, 0xa1, 0x13, 0x95, 0x1a, 0xf5, 0x1f, + 0xdd, 0x21, 0x95, 0x22, 0x5f, 0x22, 0xbf, 0x22, 0x14, 0x20, 0xae, 0x1f, 0xac, 0x1d, 0x44, 0x19, + 0x0b, 0x18, 0x19, 0x13, 0xdf, 0x0f, 0x5f, 0x12, 0xd5, 0x13, 0x6e, 0x11, 0xb4, 0x0f, 0x9c, 0x0c, + 0xfc, 0x0b, 0x46, 0x0b, 0xe6, 0x09, 0xbe, 0x0d, 0x78, 0x0b, 0xec, 0x07, 0xd7, 0x0d, 0xbf, 0x0a, + 0x20, 0x0a, 0x31, 0x0b, 0x3a, 0x09, 0xfa, 0x08, 0x1d, 0x04, 0x48, 0x09, 0x20, 0x0a, 0x0d, 0x09, + 0x48, 0x0e, 0x49, 0x11, 0xa9, 0x10, 0xdb, 0x0e, 0xa1, 0x0d, 0xcc, 0x0d, 0xa9, 0x04, 0x8c, 0x06, + 0x4f, 0x05, 0x4a, 0xfd, 0x05, 0xfe, 0x0b, 0xfa, 0x1e, 0xf9, 0x6b, 0xf7, 0xc2, 0xf4, 0x8e, 0xf5, + 0xd2, 0xf2, 0xad, 0xf0, 0x7d, 0xf3, 0x80, 0xf2, 0x58, 0xf8, 0x0a, 0xfc, 0x2f, 0xf9, 0x20, 0xf9, + 0x1d, 0xfc, 0x53, 0xfd, 0xcb, 0xfd, 0x5c, 0xfa, 0xf5, 0xfb, 0x21, 0xfe, 0x4e, 0xfd, 0xfa, 0xfe, + 0xca, 0xfd, 0xa8, 0x00, 0x65, 0xfd, 0x25, 0xfe, 0x70, 0xfa, 0x55, 0xf3, 0x6b, 0xf1, 0x80, 0xf0, + 0x5c, 0xf2, 0xe2, 0xef, 0xaa, 0xec, 0x36, 0xf4, 0xed, 0xf5, 0xe5, 0xf5, 0x92, 0xfa, 0x56, 0xf9, + 0xb3, 0xf8, 0xe3, 0xf9, 0x12, 0xf8, 0x7d, 0xfa, 0x3f, 0xfb, 0x50, 0xfa, 0x89, 0xfc, 0x66, 0xff, + 0x67, 0x04, 0x31, 0x09, 0xe8, 0x0c, 0xcb, 0x12, 0x86, 0x16, 0x6e, 0x1a, 0x16, 0x1c, 0xdc, 0x1e, + 0x14, 0x20, 0x54, 0x1e, 0xbe, 0x1f, 0xf9, 0x18, 0xb2, 0x10, 0x19, 0x06, 0x4c, 0x01, 0xd4, 0xfb, + 0x3b, 0xf6, 0x45, 0xf4, 0xf4, 0xee, 0xe3, 0xee, 0x8e, 0xf0, 0xb2, 0xed, 0x5e, 0xef, 0x89, 0xed, + 0xe1, 0xe7, 0x55, 0xe3, 0x00, 0xde, 0x89, 0xdd, 0x09, 0xde, 0x33, 0xda, 0x1f, 0xd9, 0x15, 0xdb, + 0xa5, 0xde, 0x68, 0xe6, 0xb9, 0xe8, 0xbf, 0xee, 0xa0, 0xf2, 0xae, 0xf5, 0x2c, 0xfe, 0x7f, 0x02, + 0x7e, 0x04, 0xa6, 0x07, 0x04, 0x0a, 0x78, 0x07, 0x0a, 0x06, 0x83, 0x05, 0x71, 0x03, 0x15, 0x01, + 0xa4, 0xfd, 0xed, 0xf9, 0x27, 0xf4, 0x21, 0xf1, 0x72, 0xef, 0xf0, 0xef, 0xa7, 0xee, 0x19, 0xeb, + 0x7e, 0xe6, 0xa2, 0xe3, 0x49, 0xe4, 0x67, 0xe3, 0xef, 0xe5, 0x48, 0xe8, 0x79, 0xe5, 0x33, 0xea, + 0x20, 0xec, 0xc1, 0xeb, 0xe4, 0xea, 0xf7, 0xea, 0xdd, 0xf2, 0x7d, 0xf8, 0x70, 0xfd, 0x10, 0x04, + 0x98, 0x0e, 0x7e, 0x19, 0x53, 0x22, 0x79, 0x28, 0x51, 0x29, 0x7a, 0x29, 0xe6, 0x28, 0x9d, 0x26, + 0xe0, 0x23, 0x34, 0x24, 0xe7, 0x1e, 0x77, 0x17, 0x26, 0x12, 0xeb, 0x0d, 0x48, 0x10, 0xf1, 0x10, + 0x28, 0x0c, 0xf1, 0x08, 0x58, 0x04, 0xec, 0x02, 0x5f, 0x02, 0xbb, 0x02, 0x71, 0x02, 0x8e, 0x01, + 0xe6, 0x04, 0x20, 0x08, 0xb8, 0x09, 0x95, 0x09, 0x81, 0x0b, 0x3d, 0x0e, 0x5c, 0x0d, 0x8e, 0x0f, + 0x84, 0x13, 0x7a, 0x14, 0xb6, 0x19, 0x1a, 0x1c, 0xb6, 0x1f, 0xfe, 0x1f, 0xd9, 0x1b, 0xce, 0x1d, + 0xaf, 0x1b, 0x7b, 0x19, 0x89, 0x15, 0x35, 0x11, 0x84, 0x0f, 0x7c, 0x0e, 0xa0, 0x0b, 0x33, 0x06, + 0x12, 0xff, 0x4e, 0xf9, 0xe6, 0xf3, 0xd2, 0xef, 0x04, 0xeb, 0xc8, 0xe8, 0x36, 0xe6, 0xab, 0xe6, + 0xd6, 0xe4, 0x18, 0xe4, 0x49, 0xe6, 0x47, 0xe8, 0xd6, 0xea, 0xf3, 0xec, 0x71, 0xf2, 0x58, 0xf4, + 0x9f, 0xf8, 0x41, 0xfa, 0x63, 0xf8, 0x29, 0xfe, 0xfc, 0x02, 0x04, 0x02, 0x1d, 0x01, 0xe6, 0xfd, + 0xf8, 0xfa, 0xff, 0xfc, 0x1a, 0xfc, 0xca, 0xfb, 0xf7, 0xfd, 0x7a, 0xff, 0x1e, 0xff, 0x01, 0x01, + 0x9c, 0x01, 0x69, 0xff, 0x4a, 0xfc, 0xfa, 0xf7, 0x06, 0xf5, 0x4e, 0xf6, 0x1f, 0xf4, 0xf5, 0xf4, + 0xdf, 0xf6, 0x51, 0xf8, 0x1f, 0xfd, 0x1e, 0xff, 0xb8, 0x04, 0x94, 0x0c, 0xd4, 0x11, 0x5f, 0x16, + 0x7d, 0x1a, 0xf2, 0x1b, 0x12, 0x1d, 0x3c, 0x21, 0x1e, 0x23, 0x69, 0x21, 0xf3, 0x1b, 0xe9, 0x15, + 0xbc, 0x16, 0xca, 0x16, 0x98, 0x14, 0x91, 0x11, 0x70, 0x12, 0x85, 0x15, 0x3f, 0x16, 0xbc, 0x16, + 0x71, 0x13, 0x68, 0x11, 0x42, 0x0a, 0x2a, 0x03, 0xb4, 0xfd, 0xf9, 0xfa, 0x09, 0xfa, 0x86, 0xf1, + 0x93, 0xeb, 0x14, 0xe9, 0xaf, 0xe4, 0x44, 0xe4, 0x8a, 0xe4, 0xd6, 0xe3, 0x53, 0xe3, 0x8f, 0xe3, + 0x1c, 0xe3, 0x42, 0xe6, 0x47, 0xeb, 0x3f, 0xf1, 0x24, 0xf7, 0xc8, 0xfa, 0x34, 0xfa, 0xce, 0xf7, + 0x08, 0xf8, 0x3d, 0xf4, 0xdc, 0xf2, 0xbd, 0xee, 0xcc, 0xe9, 0x5c, 0xe8, 0x9e, 0xe6, 0x63, 0xe9, + 0x6d, 0xeb, 0xe5, 0xec, 0xb9, 0xed, 0x6f, 0xed, 0xdb, 0xee, 0x2d, 0xf0, 0xba, 0xf0, 0x42, 0xee, + 0xc7, 0xed, 0x48, 0xed, 0x0a, 0xf0, 0x8d, 0xf1, 0x9f, 0xed, 0xe5, 0xec, 0xac, 0xef, 0xf5, 0xef, + 0xbc, 0xee, 0x60, 0xf2, 0xc6, 0xf4, 0x5f, 0xf8, 0x94, 0xfd, 0xb9, 0xfd, 0xeb, 0xfe, 0x16, 0xfc, + 0x4b, 0xfa, 0xa8, 0xfb, 0xc9, 0xfa, 0xde, 0xfa, 0x48, 0xfc, 0xb3, 0xfc, 0xb1, 0xfd, 0xbf, 0xfc, + 0xa2, 0xfd, 0x60, 0xff, 0xa6, 0x00, 0xef, 0x00, 0xcc, 0x02, 0xc3, 0x04, 0xc9, 0x07, 0x06, 0x06, + 0x8d, 0x07, 0xc0, 0x09, 0xda, 0x09, 0x1c, 0x0c, 0x17, 0x0d, 0x10, 0x0f, 0x07, 0x12, 0x0d, 0x17, + 0x68, 0x18, 0x88, 0x19, 0xb4, 0x1c, 0xe8, 0x1b, 0xe7, 0x1c, 0x38, 0x20, 0x90, 0x1e, 0x5c, 0x1a, + 0xd3, 0x15, 0xdb, 0x11, 0x7c, 0x0d, 0xa1, 0x0a, 0xd6, 0x06, 0xd6, 0x03, 0xb9, 0x03, 0xe5, 0x01, + 0x09, 0x02, 0x3d, 0x01, 0xf7, 0xfa, 0x34, 0xf6, 0xc5, 0xf2, 0x8f, 0xed, 0xa6, 0xec, 0xf5, 0xea, + 0x04, 0xec, 0xf2, 0xf4, 0xe4, 0xf8, 0x88, 0xfe, 0x06, 0x04, 0x9b, 0x06, 0xa1, 0x0b, 0x25, 0x0f, + 0x5f, 0x11, 0x33, 0x16, 0xb5, 0x14, 0x9d, 0x10, 0xa0, 0x0f, 0x06, 0x0d, 0x10, 0x0b, 0x62, 0x09, + 0x57, 0x03, 0x69, 0x01, 0x0a, 0x00, 0xce, 0xfd, 0xea, 0xf8, 0xed, 0xf7, 0x3b, 0xf8, 0x64, 0xf7, + 0xff, 0xf8, 0xc4, 0xf7, 0x8f, 0xf7, 0x35, 0xf5, 0xb1, 0xf3, 0x85, 0xf0, 0x99, 0xee, 0x1c, 0xf0, + 0xd1, 0xed, 0x98, 0xef, 0x9a, 0xf1, 0x81, 0xf1, 0x2f, 0xf6, 0x4d, 0xfa, 0xd7, 0xff, 0x99, 0x05, + 0x3d, 0x0b, 0x82, 0x12, 0xdc, 0x18, 0xce, 0x1c, 0xe2, 0x21, 0x17, 0x28, 0x7e, 0x2c, 0xb5, 0x2c, + 0x5a, 0x27, 0xc4, 0x23, 0xe0, 0x1e, 0xb4, 0x19, 0x70, 0x14, 0xda, 0x0b, 0x19, 0x0a, 0x04, 0x0a, + 0x04, 0x09, 0x98, 0x09, 0x8e, 0x07, 0x28, 0x06, 0xba, 0x05, 0x2f, 0x02, 0x12, 0x01, 0x49, 0x01, + 0xcd, 0xfe, 0xb8, 0xfd, 0xb3, 0xfa, 0x82, 0xf7, 0xe9, 0xf8, 0x8c, 0xf8, 0x81, 0xf8, 0x2d, 0xfb, + 0x3b, 0xff, 0x8d, 0x01, 0xbd, 0x05, 0xdb, 0x06, 0x64, 0x08, 0xe2, 0x0c, 0xd1, 0x0d, 0x86, 0x0f, + 0x10, 0x0b, 0xf4, 0x07, 0xa8, 0x07, 0x80, 0x01, 0x41, 0xfd, 0x1b, 0xf9, 0x5e, 0xf6, 0xe0, 0xf5, + 0x4d, 0xf5, 0xbe, 0xf5, 0x72, 0xf2, 0x86, 0xf0, 0x7e, 0xee, 0xc8, 0xea, 0x56, 0xea, 0xc9, 0xea, + 0x48, 0xe8, 0xd7, 0xe6, 0x17, 0xe7, 0x6f, 0xe3, 0xf4, 0xe3, 0x6e, 0xe4, 0xc4, 0xe2, 0x39, 0xe4, + 0x45, 0xe6, 0x52, 0xea, 0xab, 0xea, 0xe5, 0xec, 0x0d, 0xf4, 0x7f, 0xf9, 0x08, 0x01, 0xae, 0x07, + 0x16, 0x0a, 0xaa, 0x09, 0xa1, 0x07, 0x71, 0x03, 0xe5, 0xff, 0xa1, 0xfc, 0x44, 0xfa, 0x91, 0xf8, + 0x1b, 0xf5, 0xf0, 0xf1, 0xd9, 0xf0, 0xb3, 0xed, 0x03, 0xeb, 0xf4, 0xe9, 0x96, 0xe5, 0x8e, 0xe5, + 0x82, 0xe4, 0xe9, 0xe2, 0x3e, 0xe6, 0x02, 0xe8, 0x27, 0xec, 0x8d, 0xf1, 0x04, 0xf5, 0x8d, 0xfc, + 0x03, 0x03, 0x0c, 0x09, 0x9a, 0x0d, 0x2f, 0x0f, 0x05, 0x11, 0x13, 0x15, 0x70, 0x18, 0xa5, 0x18, + 0xc4, 0x19, 0xbd, 0x19, 0xa3, 0x1a, 0x2e, 0x1d, 0xf4, 0x1f, 0x9e, 0x1f, 0x27, 0x1e, 0x0a, 0x20, + 0x4e, 0x1d, 0xb2, 0x1c, 0xae, 0x1b, 0x0d, 0x17, 0xdb, 0x10, 0x39, 0x08, 0xcf, 0x00, 0xf1, 0xfa, + 0x5b, 0xf4, 0x3f, 0xef, 0x65, 0xeb, 0x5c, 0xe9, 0x86, 0xe6, 0x8e, 0xe6, 0x38, 0xe7, 0x9b, 0xe9, + 0x68, 0xeb, 0x76, 0xec, 0x87, 0xef, 0xbd, 0xf2, 0x0f, 0xf7, 0x0c, 0xfc, 0x84, 0xfe, 0x92, 0x02, + 0x94, 0x05, 0x4f, 0x03, 0xa7, 0x02, 0x9e, 0x01, 0x6b, 0xff, 0x37, 0xff, 0xd3, 0xfc, 0xe6, 0xfb, + 0xbc, 0xfb, 0x33, 0xfd, 0x93, 0xfd, 0x07, 0xfb, 0x27, 0xfc, 0xf3, 0xfd, 0xe5, 0xfb, 0xf9, 0xf9, + 0x0c, 0xf8, 0x9f, 0xf4, 0xd1, 0xf2, 0xbc, 0xf2, 0xcb, 0xf0, 0x81, 0xf1, 0x27, 0xf2, 0xdf, 0xf1, + 0x4a, 0xf5, 0xcc, 0xfa, 0x60, 0xfe, 0xbb, 0x01, 0x41, 0x06, 0x91, 0x08, 0x31, 0x0d, 0x12, 0x10, + 0x39, 0x12, 0xbb, 0x11, 0xd4, 0x0c, 0xfe, 0x0a, 0xdf, 0x09, 0x50, 0x07, 0xd9, 0x03, 0x31, 0x03, + 0x67, 0x04, 0xd6, 0x06, 0x9c, 0x0c, 0x09, 0x0f, 0xcf, 0x12, 0x95, 0x17, 0xe5, 0x16, 0x16, 0x14, + 0x2f, 0x14, 0x6a, 0x14, 0x37, 0x15, 0x7e, 0x14, 0xd2, 0x0f, 0x76, 0x0c, 0xda, 0x0a, 0x43, 0x08, + 0xf5, 0x09, 0x3d, 0x0b, 0x54, 0x0e, 0xf4, 0x0f, 0x30, 0x12, 0x7e, 0x13, 0xe5, 0x13, 0x04, 0x18, + 0x96, 0x1a, 0x61, 0x1b, 0x8e, 0x18, 0xa0, 0x14, 0xbd, 0x10, 0xb7, 0x0b, 0xe6, 0x06, 0x5f, 0x01, + 0xa7, 0xfd, 0x69, 0xfc, 0x6a, 0xfa, 0xbb, 0xf8, 0x95, 0xf7, 0x51, 0xf7, 0xfa, 0xf7, 0x14, 0xf7, + 0x60, 0xf7, 0xfd, 0xf7, 0xe8, 0xf7, 0xa1, 0xf9, 0x4d, 0xfb, 0x44, 0xfb, 0x3d, 0xfe, 0x42, 0xfe, + 0x2c, 0xff, 0x95, 0x03, 0x7b, 0x05, 0x13, 0x05, 0x06, 0x04, 0x77, 0x01, 0x09, 0x00, 0x52, 0x00, + 0x9e, 0xfd, 0x67, 0xfb, 0x6f, 0xfa, 0x57, 0xf8, 0x56, 0xf6, 0x96, 0xf5, 0xa9, 0xf2, 0xaa, 0xf0, + 0x4a, 0xf2, 0x90, 0xf1, 0x3b, 0xf0, 0x44, 0xef, 0x7e, 0xec, 0x4b, 0xeb, 0xe1, 0xe7, 0xc8, 0xe3, + 0x9f, 0xe1, 0xd7, 0xe2, 0xbf, 0xe4, 0x29, 0xe5, 0xa8, 0xe8, 0xe6, 0xe9, 0x8f, 0xec, 0x45, 0xee, + 0xc9, 0xf0, 0x99, 0xf6, 0x37, 0xfa, 0x02, 0x00, 0xa6, 0x03, 0x20, 0x05, 0xd9, 0x08, 0x56, 0x0c, + 0x98, 0x0e, 0x1c, 0x12, 0xdd, 0x13, 0x46, 0x12, 0xac, 0x10, 0xf0, 0x0c, 0x73, 0x0a, 0xb1, 0x08, + 0xc3, 0x05, 0x18, 0x07, 0x30, 0x07, 0xd7, 0x05, 0x00, 0x05, 0xb4, 0x03, 0x0d, 0x04, 0x78, 0x02, + 0x96, 0x00, 0xdb, 0xfd, 0x9a, 0xf9, 0x94, 0xf6, 0x75, 0xf5, 0xde, 0xf6, 0x42, 0xf8, 0x26, 0xfa, + 0x25, 0xfd, 0xb1, 0x02, 0x89, 0x07, 0x52, 0x09, 0xfc, 0x0a, 0x57, 0x0c, 0x10, 0x0c, 0x30, 0x0d, + 0x64, 0x0c, 0x0f, 0x0a, 0x14, 0x07, 0xd7, 0xff, 0xa9, 0xfa, 0x2f, 0xf5, 0x61, 0xf0, 0x58, 0xed, + 0x68, 0xe9, 0x76, 0xe8, 0x5c, 0xe7, 0xaa, 0xe6, 0xbc, 0xe6, 0x9c, 0xe6, 0xe7, 0xe8, 0x69, 0xe8, + 0x1a, 0xe7, 0xbd, 0xe7, 0x29, 0xe8, 0x09, 0xe8, 0x12, 0xe9, 0x0c, 0xe7, 0x18, 0xe5, 0x61, 0xe6, + 0x36, 0xe5, 0x8b, 0xe9, 0x94, 0xef, 0x7d, 0xf5, 0x30, 0xfe, 0xe5, 0x03, 0xe2, 0x0a, 0x14, 0x11, + 0x48, 0x15, 0xc3, 0x1a, 0xef, 0x1e, 0x6e, 0x1e, 0xf5, 0x1a, 0x30, 0x17, 0x77, 0x11, 0xc4, 0x0a, + 0x90, 0x04, 0x55, 0xfe, 0xa6, 0xfd, 0x38, 0xfc, 0xce, 0xf9, 0x3b, 0xf8, 0x56, 0xf8, 0x51, 0xfa, + 0x61, 0xfa, 0x7d, 0xf9, 0xaa, 0xf9, 0x46, 0xfa, 0xa7, 0xfc, 0xca, 0xfe, 0x63, 0xfe, 0x2d, 0x02, + 0x29, 0x03, 0x6d, 0x06, 0xae, 0x0c, 0xaf, 0x0f, 0x8b, 0x14, 0x6e, 0x1a, 0xb1, 0x1e, 0x2f, 0x22, + 0x92, 0x26, 0x71, 0x29, 0xab, 0x2a, 0x67, 0x2b, 0xad, 0x29, 0x81, 0x27, 0x81, 0x28, 0x64, 0x27, + 0x3d, 0x22, 0xf5, 0x1f, 0xb2, 0x1e, 0xca, 0x19, 0x35, 0x17, 0x0c, 0x13, 0xc1, 0x0e, 0xb5, 0x09, + 0x98, 0x02, 0xf4, 0xfc, 0x92, 0xf8, 0x31, 0xf6, 0xd6, 0xf3, 0x64, 0xf3, 0x08, 0xf2, 0x60, 0xf2, + 0x20, 0xf2, 0x8e, 0xf0, 0x86, 0xf3, 0x03, 0xf4, 0xcc, 0xf4, 0x1b, 0xf8, 0xc4, 0xf7, 0xa0, 0xf8, + 0x42, 0xfb, 0x69, 0xfe, 0x10, 0x03, 0x2d, 0x08, 0xbe, 0x0b, 0x67, 0x0d, 0x01, 0x0d, 0x74, 0x0a, + 0x2f, 0x08, 0x0a, 0x05, 0x3b, 0x04, 0xe2, 0x02, 0x71, 0x00, 0x7d, 0xfb, 0xc7, 0xf6, 0x5e, 0xf6, + 0x64, 0xf1, 0x41, 0xed, 0xa8, 0xeb, 0xd0, 0xe8, 0xb5, 0xe6, 0xe2, 0xe4, 0x35, 0xe2, 0x99, 0xe1, + 0xb6, 0xe1, 0xac, 0xe2, 0x98, 0xe6, 0x8f, 0xeb, 0x48, 0xf0, 0x4d, 0xf5, 0x82, 0xf9, 0x09, 0xfc, + 0x83, 0xfe, 0xac, 0x01, 0x31, 0x03, 0xd5, 0x03, 0x42, 0x03, 0x1a, 0x02, 0xdb, 0x01, 0xfd, 0x02, + 0xee, 0x04, 0xfc, 0x06, 0x19, 0x0a, 0x34, 0x0c, 0xdc, 0x0d, 0x13, 0x11, 0x16, 0x11, 0xa4, 0x12, + 0x49, 0x11, 0x93, 0x0c, 0x0a, 0x0a, 0x87, 0x07, 0xf8, 0x03, 0xaf, 0x00, 0x32, 0xfd, 0x30, 0xfa, + 0x86, 0xf7, 0x60, 0xf3, 0xce, 0xf4, 0x33, 0xf8, 0x3d, 0xfb, 0xe7, 0xff, 0x56, 0x02, 0xd9, 0x05, + 0x5b, 0x09, 0xc1, 0x0c, 0x0f, 0x10, 0xe6, 0x10, 0xb8, 0x11, 0x05, 0x0e, 0xd5, 0x07, 0x2c, 0x02, + 0x0b, 0xfc, 0x70, 0xf7, 0xb1, 0xf3, 0x6a, 0xf3, 0x2c, 0xf3, 0xa6, 0xf2, 0x87, 0xf3, 0x81, 0xf4, + 0xf0, 0xf3, 0x5d, 0xf3, 0x09, 0xf3, 0x94, 0xf1, 0xba, 0xf0, 0x52, 0xf0, 0xd1, 0xee, 0x33, 0xec, + 0x63, 0xec, 0xe6, 0xeb, 0x6d, 0xec, 0x36, 0xf0, 0x5e, 0xf3, 0x54, 0xf6, 0xfb, 0xfa, 0x76, 0xfe, + 0x33, 0x01, 0x05, 0x03, 0xbe, 0x05, 0x4d, 0x07, 0x73, 0x06, 0xdc, 0x05, 0xca, 0x01, 0x59, 0x00, + 0x1f, 0x00, 0x99, 0xfd, 0xb0, 0xfa, 0x0e, 0xf9, 0xb4, 0xf6, 0xe8, 0xf5, 0xf1, 0xf4, 0x26, 0xf6, + 0x18, 0xf8, 0x9a, 0xf7, 0x7b, 0xf8, 0x0d, 0xf7, 0x42, 0xf7, 0xba, 0xf7, 0x95, 0xf9, 0x09, 0xfb, + 0x36, 0xfb, 0x68, 0xfb, 0x52, 0xfa, 0x05, 0xfb, 0xa9, 0xfb, 0x48, 0xfc, 0x01, 0x00, 0x88, 0x02, + 0xff, 0x04, 0x3f, 0x08, 0x06, 0x0b, 0x0b, 0x0e, 0xb6, 0x11, 0x71, 0x14, 0x6e, 0x13, 0xdf, 0x13, + 0x03, 0x13, 0x47, 0x11, 0x10, 0x10, 0xdf, 0x0f, 0xff, 0x0f, 0xad, 0x0e, 0xfc, 0x0d, 0x80, 0x0b, + 0x75, 0x0b, 0x6a, 0x0a, 0x06, 0x0a, 0xe6, 0x0a, 0x8f, 0x0b, 0x1e, 0x0e, 0x88, 0x0f, 0x4f, 0x0f, + 0xa7, 0x11, 0x78, 0x11, 0x5d, 0x11, 0x1e, 0x13, 0x7d, 0x14, 0xdb, 0x13, 0xcf, 0x14, 0xb2, 0x15, + 0x52, 0x12, 0xda, 0x0d, 0x22, 0x0c, 0x76, 0x09, 0x1a, 0x06, 0x0d, 0x03, 0xb8, 0xfd, 0xbd, 0xfa, + 0xe5, 0xf7, 0xbe, 0xf4, 0x21, 0xf2, 0xc4, 0xef, 0xf0, 0xef, 0xe9, 0xef, 0x9f, 0xf1, 0x23, 0xf1, + 0x91, 0xf1, 0xa1, 0xf0, 0x60, 0xed, 0xf3, 0xea, 0x40, 0xe9, 0xfc, 0xe8, 0x0a, 0xeb, 0x87, 0xeb, + 0xf0, 0xeb, 0xf9, 0xee, 0xbb, 0xee, 0xcc, 0xee, 0x6f, 0xf2, 0x7a, 0xf6, 0x06, 0xfc, 0x55, 0x02, + 0x30, 0x06, 0x65, 0x0a, 0x8a, 0x0c, 0x60, 0x0f, 0x37, 0x10, 0x03, 0x11, 0x0d, 0x10, 0xf7, 0x0b, + 0x41, 0x08, 0x7f, 0x01, 0x77, 0xfd, 0x51, 0xfa, 0x0f, 0xf7, 0x50, 0xf7, 0x7b, 0xf8, 0x29, 0xf9, + 0xd4, 0xf9, 0x1b, 0xfc, 0x7d, 0xfb, 0xf6, 0xfa, 0x46, 0xfc, 0xf9, 0xfb, 0x84, 0xfa, 0xfd, 0xf8, + 0x83, 0xf6, 0x86, 0xf6, 0xe5, 0xf6, 0x59, 0xf8, 0x97, 0xfe, 0x02, 0x06, 0x38, 0x0c, 0x2a, 0x14, + 0xcc, 0x19, 0x93, 0x1d, 0xf1, 0x20, 0xad, 0x23, 0x29, 0x25, 0xd3, 0x23, 0xc9, 0x21, 0x10, 0x1c, + 0x4f, 0x16, 0xa6, 0x12, 0x29, 0x0d, 0x5d, 0x08, 0x74, 0x06, 0x10, 0x03, 0x09, 0x00, 0x04, 0xfd, + 0xaa, 0xf9, 0x96, 0xf6, 0x99, 0xf1, 0x98, 0xee, 0x7a, 0xeb, 0x63, 0xe8, 0x56, 0xe7, 0x03, 0xe6, + 0x27, 0xe5, 0xb2, 0xe5, 0xdd, 0xe5, 0x48, 0xe4, 0x1d, 0xe4, 0x90, 0xe6, 0x6c, 0xe7, 0xbe, 0xeb, + 0x11, 0xf1, 0x0b, 0xf5, 0x11, 0xfb, 0xae, 0x01, 0x28, 0x08, 0xc6, 0x0c, 0xaa, 0x12, 0x7f, 0x14, + 0xf8, 0x12, 0xc1, 0x10, 0xb8, 0x0d, 0xac, 0x09, 0x57, 0x04, 0x4e, 0xff, 0x8c, 0xfb, 0x16, 0xf8, + 0xaf, 0xf1, 0x2e, 0xee, 0x40, 0xeb, 0xcb, 0xe7, 0x8b, 0xe8, 0x09, 0xe9, 0x8a, 0xe7, 0x13, 0xe8, + 0xf7, 0xe6, 0xda, 0xe6, 0x39, 0xe8, 0xfb, 0xe9, 0x35, 0xed, 0xc4, 0xee, 0x85, 0xf1, 0xdc, 0xf4, + 0x18, 0xf8, 0x1b, 0xfb, 0xa1, 0xfd, 0x18, 0x00, 0x73, 0x04, 0xc5, 0x07, 0xff, 0x0a, 0x71, 0x0b, + 0x4e, 0x0b, 0x27, 0x0c, 0x45, 0x0c, 0x27, 0x0d, 0xd1, 0x0c, 0x9e, 0x0d, 0x30, 0x0f, 0x8c, 0x10, + 0x1b, 0x0f, 0x83, 0x0d, 0x09, 0x0e, 0x9f, 0x0b, 0x2e, 0x08, 0xba, 0x05, 0x57, 0x03, 0x32, 0x03, + 0x32, 0x02, 0x69, 0x02, 0xb2, 0x04, 0x6c, 0x04, 0x7f, 0x04, 0x69, 0x06, 0x94, 0x07, 0xd3, 0x0a, + 0x24, 0x10, 0xfd, 0x12, 0xc0, 0x15, 0xc2, 0x16, 0xbe, 0x17, 0x7f, 0x17, 0xa7, 0x17, 0x35, 0x18, + 0xea, 0x14, 0x7e, 0x13, 0xb4, 0x11, 0x6b, 0x0e, 0xae, 0x0a, 0xb4, 0x05, 0xfb, 0x02, 0x1a, 0x03, + 0xa3, 0x01, 0xc3, 0x00, 0x60, 0xff, 0x04, 0xfc, 0x00, 0xf8, 0xde, 0xf4, 0x1e, 0xf0, 0x45, 0xed, + 0x5b, 0xea, 0xb2, 0xe6, 0x1e, 0xe5, 0x10, 0xe5, 0x18, 0xe4, 0x1c, 0xe4, 0x40, 0xe7, 0x6c, 0xeb, + 0x35, 0xf1, 0x1a, 0xf6, 0xe2, 0xfa, 0x73, 0xfe, 0x3f, 0x01, 0xe3, 0x05, 0x07, 0x05, 0x8c, 0x03, + 0x21, 0x01, 0xae, 0xfd, 0x78, 0xfc, 0x15, 0xfc, 0x60, 0xfc, 0x05, 0xfd, 0x23, 0xfe, 0x8d, 0x02, + 0xb8, 0x04, 0xd7, 0x05, 0x77, 0x09, 0x41, 0x09, 0xca, 0x06, 0x7b, 0x05, 0x84, 0x02, 0x14, 0x00, + 0x99, 0xfd, 0x42, 0xfa, 0x88, 0xf8, 0x7c, 0xf6, 0xf2, 0xf3, 0x9f, 0xf1, 0xa7, 0xf1, 0x2f, 0xf4, + 0xac, 0xf7, 0xb0, 0xfb, 0x91, 0xfe, 0x9f, 0x02, 0xc3, 0x06, 0xf9, 0x0a, 0xd7, 0x0f, 0x37, 0x15, + 0xab, 0x17, 0xff, 0x16, 0xb0, 0x16, 0x85, 0x13, 0xe9, 0x10, 0x22, 0x0e, 0xd0, 0x0a, 0xff, 0x09, + 0xd1, 0x0b, 0x65, 0x0b, 0xa0, 0x0b, 0x61, 0x0c, 0xa7, 0x09, 0x2d, 0x09, 0x05, 0x0b, 0xe4, 0x0a, + 0xde, 0x0b, 0xb0, 0x09, 0xab, 0x09, 0x28, 0x09, 0x44, 0x06, 0xbf, 0x04, 0xda, 0x02, 0x19, 0x03, + 0x4e, 0x03, 0x1c, 0x04, 0xf5, 0x03, 0x7d, 0x01, 0xf7, 0x00, 0xa0, 0x01, 0x62, 0x02, 0x18, 0x03, + 0x24, 0x02, 0xee, 0xff, 0x36, 0xfe, 0xb4, 0xfb, 0xfa, 0xf9, 0x5f, 0xf7, 0x00, 0xf4, 0x87, 0xf2, + 0x97, 0xf2, 0x1b, 0xef, 0x2c, 0xed, 0x76, 0xec, 0x64, 0xeb, 0x1d, 0xeb, 0xee, 0xec, 0x0c, 0xed, + 0xb5, 0xee, 0x86, 0xf0, 0xfa, 0xf0, 0xc7, 0xf3, 0x8c, 0xf4, 0xc8, 0xf3, 0x84, 0xf4, 0x40, 0xf5, + 0x92, 0xf6, 0xb8, 0xf9, 0x63, 0xfb, 0x63, 0xfd, 0xb7, 0xfe, 0xae, 0xff, 0xfb, 0x01, 0x0c, 0x04, + 0x9a, 0x05, 0xb2, 0x02, 0x6f, 0x00, 0x3f, 0xfe, 0xb8, 0xf9, 0x19, 0xf8, 0xcc, 0xf3, 0xbe, 0xf0, + 0x91, 0xf3, 0x13, 0xf4, 0x5f, 0xf4, 0x39, 0xf5, 0x89, 0xf6, 0x34, 0xf5, 0xfa, 0xf5, 0xf3, 0xf7, + 0x3a, 0xf8, 0x4f, 0xf9, 0x35, 0xfa, 0x97, 0xfd, 0xa9, 0x01, 0x97, 0x05, 0x11, 0x0a, 0xd9, 0x0e, + 0x88, 0x14, 0xa6, 0x1a, 0x14, 0x20, 0x37, 0x24, 0xe2, 0x25, 0xff, 0x25, 0x72, 0x25, 0xc6, 0x23, + 0x24, 0x1f, 0x43, 0x19, 0xbd, 0x11, 0x33, 0x0d, 0xf4, 0x09, 0xb3, 0x05, 0x09, 0x03, 0x6d, 0x00, + 0xc7, 0xff, 0x52, 0xff, 0x8b, 0xfc, 0x21, 0xfc, 0x72, 0xfb, 0xc2, 0xf8, 0x0c, 0xf7, 0x47, 0xf2, + 0x39, 0xed, 0x43, 0xea, 0x5b, 0xe6, 0xa9, 0xe5, 0x80, 0xe6, 0xc7, 0xe7, 0xe2, 0xe8, 0x96, 0xea, + 0xc8, 0xed, 0x4a, 0xf1, 0xa5, 0xf6, 0x50, 0xfa, 0xc3, 0xfd, 0x6f, 0x02, 0x4d, 0x06, 0xa0, 0x0a, + 0x82, 0x0d, 0xd8, 0x0e, 0xe4, 0x0c, 0x46, 0x0b, 0x36, 0x09, 0x25, 0x05, 0x4a, 0x01, 0xff, 0xfb, + 0xed, 0xf8, 0xba, 0xf8, 0x1c, 0xf7, 0x0e, 0xf6, 0x4e, 0xf6, 0xa9, 0xf4, 0x53, 0xf3, 0x85, 0xf6, + 0x0b, 0xf8, 0xf1, 0xf7, 0x55, 0xf7, 0xbd, 0xf5, 0x5e, 0xf6, 0xe6, 0xf3, 0xec, 0xf3, 0x2b, 0xf3, + 0xb0, 0xf3, 0xd5, 0xf8, 0xf0, 0xfd, 0x53, 0x03, 0xc8, 0x08, 0x6c, 0x0c, 0x99, 0x0f, 0x6b, 0x12, + 0x11, 0x15, 0xde, 0x15, 0xae, 0x14, 0xdc, 0x14, 0x41, 0x13, 0x53, 0x0f, 0x4a, 0x0c, 0x22, 0x08, + 0x26, 0x05, 0x80, 0x05, 0xf8, 0x04, 0xdc, 0x03, 0xd7, 0x02, 0x60, 0x02, 0x45, 0xff, 0xbe, 0xfd, + 0xec, 0xfc, 0xf0, 0xfb, 0x27, 0xfc, 0x7a, 0xfb, 0xfa, 0xfe, 0x8c, 0x01, 0x80, 0x01, 0x65, 0x02, + 0x25, 0x02, 0x6d, 0x02, 0x86, 0x05, 0x7c, 0x09, 0x1c, 0x0d, 0xaf, 0x10, 0x18, 0x15, 0x62, 0x19, + 0xdf, 0x1c, 0x0d, 0x21, 0x29, 0x23, 0xb6, 0x22, 0xf9, 0x22, 0x0b, 0x20, 0x5a, 0x1b, 0x24, 0x16, + 0xfe, 0x0d, 0x55, 0x0a, 0x29, 0x06, 0xa7, 0x01, 0x44, 0xfd, 0x94, 0xf7, 0x36, 0xf2, 0xd0, 0xee, + 0x1b, 0xec, 0x4b, 0xe9, 0xb6, 0xe6, 0x2f, 0xe3, 0xc4, 0xe1, 0xbb, 0xe1, 0xc7, 0xe1, 0x8c, 0xe2, + 0xe4, 0xe4, 0x0c, 0xe9, 0xe7, 0xed, 0x89, 0xf2, 0x5c, 0xf6, 0xa5, 0xf9, 0x62, 0xfb, 0x52, 0xfd, + 0x7a, 0x00, 0xb4, 0x00, 0x64, 0x00, 0xca, 0xfe, 0x7c, 0xfd, 0x6d, 0xfd, 0x3a, 0xfc, 0x34, 0xfc, + 0x9a, 0xfa, 0xdc, 0xfb, 0x21, 0xff, 0x47, 0xfe, 0x99, 0xfe, 0x56, 0xff, 0x53, 0xfc, 0x0e, 0xfa, + 0xee, 0xf6, 0x9b, 0xf3, 0x9b, 0xf0, 0x21, 0xed, 0x8e, 0xea, 0x40, 0xea, 0x98, 0xe9, 0x5b, 0xeb, + 0x0c, 0xed, 0x6f, 0xf0, 0x47, 0xf5, 0xda, 0xfa, 0xb0, 0x00, 0x47, 0x04, 0xe1, 0x08, 0xd9, 0x0c, + 0xe2, 0x0f, 0xd6, 0x13, 0xde, 0x14, 0xad, 0x12, 0xd4, 0x11, 0xbb, 0x11, 0x97, 0x10, 0x5e, 0x10, + 0x75, 0x0e, 0x86, 0x0d, 0x44, 0x0f, 0x84, 0x10, 0x10, 0x10, 0xca, 0x0f, 0x96, 0x0e, 0x4b, 0x0c, + 0x00, 0x0c, 0x45, 0x0a, 0xee, 0x07, 0x3d, 0x05, 0x14, 0x00, 0x36, 0xff, 0xe9, 0xfa, 0x5b, 0xf8, + 0x8a, 0xf7, 0x36, 0xf5, 0xb5, 0xf5, 0x36, 0xf6, 0x17, 0xf8, 0xca, 0xf8, 0x91, 0xf8, 0xc5, 0xfa, + 0xdf, 0xfb, 0x00, 0xfd, 0xd5, 0xfd, 0xca, 0xfc, 0xfb, 0xfa, 0xe4, 0xf8, 0x78, 0xf6, 0x6f, 0xf4, + 0xa1, 0xf1, 0x00, 0xef, 0x92, 0xf1, 0x69, 0xf2, 0x01, 0xf4, 0xb4, 0xf7, 0x84, 0xfa, 0x32, 0xfc, + 0x38, 0xfe, 0xaa, 0xff, 0xed, 0xff, 0xb7, 0x00, 0x03, 0x00, 0xac, 0xff, 0x10, 0x00, 0xf3, 0xfd, + 0xe8, 0xfa, 0xe6, 0xf7, 0x05, 0xf5, 0x6d, 0xf4, 0x4f, 0xf6, 0x60, 0xf8, 0xfb, 0xfa, 0x52, 0xfe, + 0x06, 0x02, 0x2c, 0x04, 0x3f, 0x06, 0x86, 0x08, 0xcb, 0x07, 0x2f, 0x09, 0xf2, 0x08, 0xed, 0x05, + 0xb5, 0x03, 0x62, 0xfd, 0xd3, 0xfa, 0x73, 0xf9, 0xe0, 0xf7, 0xd4, 0xf8, 0x6a, 0xf9, 0xbf, 0xfa, + 0x48, 0xfd, 0x8b, 0x00, 0xb9, 0x02, 0x3c, 0x03, 0x47, 0x03, 0x8b, 0x03, 0xda, 0x05, 0x09, 0x08, + 0x20, 0x0a, 0x5c, 0x0b, 0x53, 0x0d, 0x1a, 0x10, 0xc5, 0x12, 0x5f, 0x16, 0x60, 0x18, 0x28, 0x1b, + 0x6e, 0x1c, 0x35, 0x1d, 0xe3, 0x1c, 0x4c, 0x1b, 0x74, 0x19, 0xab, 0x15, 0x00, 0x13, 0xdc, 0x10, + 0xe2, 0x0e, 0x27, 0x0d, 0xcc, 0x0b, 0x54, 0x0c, 0x54, 0x0a, 0x5b, 0x07, 0xbd, 0x05, 0x0c, 0x01, + 0x6b, 0xfd, 0xc9, 0xf9, 0x20, 0xf5, 0x28, 0xf3, 0x8b, 0xf1, 0xc7, 0xef, 0x0e, 0xf0, 0xaf, 0xf0, + 0xe1, 0xf1, 0xfc, 0xf1, 0x7a, 0xf3, 0x87, 0xf6, 0xa2, 0xf8, 0xa4, 0xfc, 0xc9, 0xfd, 0x56, 0xfe, + 0xfc, 0xff, 0x03, 0x00, 0xd6, 0x01, 0x30, 0x03, 0xb3, 0x02, 0x80, 0x00, 0x83, 0xff, 0x1b, 0xfe, + 0x90, 0xfa, 0x4d, 0xf6, 0xa3, 0xf2, 0xd5, 0xf1, 0xbe, 0xf1, 0x8b, 0xf1, 0x20, 0xf1, 0x72, 0xf0, + 0x7f, 0xef, 0x21, 0xee, 0xe9, 0xed, 0xe7, 0xec, 0x47, 0xed, 0x8d, 0xec, 0x7d, 0xed, 0xcc, 0xee, + 0xe0, 0xee, 0x1f, 0xf2, 0x40, 0xf5, 0xc3, 0xf9, 0x84, 0xff, 0x6a, 0x05, 0xf9, 0x0a, 0xb2, 0x0e, + 0xb2, 0x12, 0xcd, 0x14, 0xe5, 0x14, 0x7a, 0x14, 0xb7, 0x11, 0xd4, 0x0d, 0x58, 0x0a, 0xf0, 0x05, + 0x60, 0x02, 0x6e, 0xfe, 0x3d, 0xf9, 0x67, 0xf8, 0x9c, 0xf8, 0xeb, 0xf7, 0x52, 0xf8, 0x96, 0xf8, + 0xdd, 0xf8, 0x54, 0xf9, 0x60, 0xfa, 0xe2, 0xf9, 0xcf, 0xf9, 0x76, 0xf9, 0xfb, 0xf7, 0x9c, 0xf8, + 0x92, 0xf9, 0x23, 0xfa, 0xe7, 0xfa, 0x3a, 0xfc, 0x03, 0xfe, 0x27, 0x02, 0xc9, 0x07, 0x7a, 0x0c, + 0x31, 0x11, 0x34, 0x16, 0x02, 0x1a, 0x2f, 0x1c, 0xd1, 0x1e, 0xab, 0x1e, 0x18, 0x1d, 0x53, 0x1a, + 0x1c, 0x15, 0xb4, 0x0f, 0x5c, 0x07, 0xdf, 0x00, 0x35, 0xfd, 0x40, 0xf7, 0x5e, 0xf3, 0x1c, 0xf1, + 0x31, 0xee, 0xb9, 0xed, 0xb5, 0xed, 0x52, 0xed, 0xe4, 0xed, 0x88, 0xec, 0x23, 0xeb, 0x74, 0xeb, + 0xdc, 0xeb, 0xca, 0xeb, 0x42, 0xeb, 0xb6, 0xeb, 0x89, 0xed, 0x35, 0xef, 0x42, 0xf3, 0x5a, 0xf7, + 0x79, 0xfd, 0xa9, 0x02, 0x6b, 0x07, 0x4a, 0x0c, 0xe7, 0x0d, 0xa2, 0x0e, 0x7c, 0x0d, 0x45, 0x0b, + 0xbe, 0x09, 0xfc, 0x07, 0xa4, 0x05, 0x48, 0x02, 0xf3, 0x01, 0xf3, 0x00, 0xca, 0xfd, 0xf5, 0xfd, + 0xfc, 0xfb, 0x57, 0xf9, 0x25, 0xf8, 0x96, 0xf5, 0x35, 0xf3, 0x02, 0xf1, 0x5b, 0xee, 0x06, 0xed, + 0xe0, 0xec, 0x89, 0xed, 0x4c, 0xef, 0x52, 0xf1, 0xb9, 0xf5, 0x1f, 0xfa, 0x67, 0xfe, 0xbf, 0x02, + 0xfe, 0x05, 0x11, 0x0b, 0xe0, 0x0e, 0x67, 0x12, 0xbc, 0x17, 0x6c, 0x1b, 0x20, 0x1e, 0x75, 0x21, + 0x7e, 0x23, 0x43, 0x25, 0x86, 0x24, 0xf8, 0x22, 0xcc, 0x22, 0x2b, 0x23, 0x4f, 0x22, 0x6d, 0x20, + 0x18, 0x1d, 0xa3, 0x18, 0xf0, 0x12, 0x40, 0x0e, 0xd7, 0x08, 0x08, 0x06, 0xff, 0x01, 0x23, 0xfe, + 0x14, 0xfd, 0x60, 0xf9, 0x62, 0xf7, 0xc8, 0xf5, 0x39, 0xf5, 0xd1, 0xf6, 0x08, 0xf8, 0x4f, 0xfa, + 0x52, 0xfb, 0x8e, 0xfd, 0xc7, 0xfd, 0xa1, 0xfb, 0x85, 0xfb, 0x07, 0xfb, 0x8d, 0xf8, 0x30, 0xf7, + 0x6c, 0xf6, 0x1e, 0xf7, 0xd6, 0xf6, 0xf1, 0xf3, 0xd6, 0xf2, 0x6f, 0xf4, 0xaa, 0xf4, 0x4e, 0xf6, + 0x0b, 0xf9, 0xda, 0xf9, 0x84, 0xfa, 0x3d, 0xfa, 0x17, 0xf9, 0x52, 0xf7, 0x39, 0xf6, 0x52, 0xf4, + 0x61, 0xf2, 0x33, 0xf2, 0x04, 0xf1, 0x46, 0xef, 0x92, 0xef, 0xff, 0xee, 0xeb, 0xef, 0xf4, 0xf2, + 0xe9, 0xf6, 0xed, 0xfb, 0xcd, 0x00, 0x8d, 0x05, 0x22, 0x08, 0x4f, 0x0a, 0x7c, 0x0a, 0x65, 0x09, + 0x4d, 0x08, 0xf5, 0x04, 0xf7, 0x01, 0xb8, 0xfd, 0x7f, 0xf9, 0x15, 0xfa, 0xc6, 0xf9, 0x0d, 0xf9, + 0x60, 0xfa, 0xa9, 0xfa, 0xc9, 0xfc, 0x3b, 0xff, 0xa8, 0x00, 0x7f, 0x01, 0xef, 0x01, 0x00, 0x01, + 0xd2, 0xfe, 0x2c, 0xfd, 0x9a, 0xfc, 0x19, 0xfc, 0x62, 0xfb, 0x27, 0xfc, 0x7a, 0xfd, 0x3f, 0x00, + 0xfa, 0x02, 0x3a, 0x06, 0x0f, 0x09, 0x28, 0x0a, 0x05, 0x0d, 0xac, 0x0f, 0x8e, 0x0e, 0x01, 0x0e, + 0x67, 0x0b, 0x0d, 0x08, 0xfa, 0x05, 0x12, 0x03, 0xe5, 0xff, 0x69, 0xfe, 0xc1, 0xff, 0x4e, 0xfe, + 0xaa, 0xfd, 0xac, 0xfe, 0x30, 0xfe, 0x36, 0xff, 0x5e, 0xff, 0x31, 0xff, 0x85, 0xff, 0xf1, 0xfd, + 0x96, 0xfd, 0x3b, 0xfd, 0xad, 0xfc, 0x60, 0xfb, 0xc0, 0xf8, 0xf1, 0xf8, 0x9f, 0xf8, 0x68, 0xf8, + 0x48, 0xf9, 0x96, 0xf8, 0xda, 0xf9, 0x73, 0xfa, 0x6d, 0xfa, 0x73, 0xfc, 0xec, 0xfd, 0xed, 0xfd, + 0x5f, 0xfe, 0x46, 0xfe, 0x64, 0xfe, 0xa9, 0xfc, 0x91, 0xfa, 0x85, 0xf9, 0x7d, 0xf8, 0xc7, 0xf6, + 0x70, 0xf6, 0xf2, 0xf5, 0x82, 0xf5, 0x49, 0xf4, 0xf7, 0xf3, 0x53, 0xf4, 0x98, 0xf5, 0xa4, 0xf7, + 0x79, 0xf8, 0xb5, 0xfa, 0xc8, 0xfc, 0x67, 0xfd, 0x48, 0xff, 0xb0, 0x01, 0x58, 0x04, 0xb4, 0x07, + 0x51, 0x0a, 0x77, 0x0c, 0xd5, 0x0e, 0x06, 0x11, 0x78, 0x10, 0x14, 0x0f, 0x0f, 0x0e, 0x1d, 0x0b, + 0x32, 0x09, 0x16, 0x07, 0xee, 0x05, 0x33, 0x06, 0xc9, 0x03, 0x93, 0x01, 0xce, 0x02, 0xb3, 0x03, + 0xf2, 0x04, 0x27, 0x07, 0x82, 0x07, 0xb7, 0x06, 0x4a, 0x05, 0x5d, 0x05, 0x42, 0x03, 0x9a, 0x01, + 0x5c, 0x01, 0xef, 0x01, 0x37, 0x04, 0x59, 0x07, 0x8d, 0x08, 0xac, 0x0a, 0x50, 0x0c, 0xe3, 0x0d, + 0x5f, 0x10, 0xd1, 0x12, 0xe4, 0x17, 0x13, 0x1b, 0x5b, 0x1c, 0x85, 0x1c, 0xd1, 0x1b, 0xe1, 0x19, + 0x2f, 0x17, 0x05, 0x14, 0xd6, 0x0f, 0x48, 0x0b, 0x88, 0x05, 0x42, 0xfe, 0x0b, 0xf9, 0x57, 0xf5, + 0x1f, 0xf0, 0x78, 0xed, 0xa2, 0xeb, 0x97, 0xea, 0x85, 0xeb, 0xd5, 0xeb, 0xfb, 0xeb, 0xcb, 0xeb, + 0x6c, 0xea, 0x63, 0xe9, 0x76, 0xe8, 0x03, 0xe8, 0x04, 0xe9, 0xa2, 0xea, 0x17, 0xed, 0xbe, 0xef, + 0xe6, 0xf5, 0x7c, 0xfb, 0xe5, 0x01, 0x97, 0x08, 0x9f, 0x0c, 0x2d, 0x11, 0x2b, 0x16, 0x0b, 0x16, + 0x33, 0x15, 0x67, 0x11, 0xd0, 0x0b, 0x5b, 0x06, 0x81, 0x00, 0xad, 0xfa, 0x93, 0xf5, 0xad, 0xf3, + 0xba, 0xf2, 0xfb, 0xf0, 0xb6, 0xef, 0x7e, 0xed, 0x3c, 0xed, 0xa4, 0xed, 0xf3, 0xeb, 0xd1, 0xeb, + 0xdf, 0xeb, 0x7f, 0xeb, 0x89, 0xea, 0x45, 0xe9, 0xda, 0xe8, 0x3c, 0xe9, 0x10, 0xeb, 0x17, 0xee, + 0x68, 0xf2, 0xac, 0xf7, 0xfb, 0xfd, 0x48, 0x04, 0xd4, 0x09, 0x95, 0x0d, 0x5a, 0x12, 0x54, 0x17, + 0x06, 0x1a, 0x68, 0x1d, 0x66, 0x1f, 0xac, 0x20, 0xd2, 0x1f, 0xa9, 0x1c, 0xd4, 0x19, 0xe7, 0x17, + 0x44, 0x15, 0x97, 0x13, 0xe0, 0x10, 0x2c, 0x0e, 0x6c, 0x0a, 0x34, 0x06, 0x51, 0x02, 0x5e, 0xff, + 0x14, 0xff, 0x1a, 0xfd, 0x01, 0xfd, 0x92, 0xfd, 0x5e, 0xfd, 0x5c, 0xfd, 0x7a, 0xfc, 0xa8, 0xfb, + 0x1d, 0xfc, 0xd8, 0xfb, 0x83, 0xfb, 0x73, 0xfb, 0x54, 0xfc, 0xdc, 0xfc, 0x46, 0xfd, 0x14, 0xff, + 0xa0, 0xfe, 0xed, 0xfe, 0xa5, 0xff, 0x25, 0xff, 0x04, 0x00, 0xe2, 0xfe, 0x82, 0xfb, 0x1b, 0xfa, + 0xde, 0xf8, 0xb6, 0xf6, 0x8b, 0xf6, 0x1c, 0xf5, 0x86, 0xf3, 0xd4, 0xf1, 0x79, 0xf0, 0x7b, 0xef, + 0xb8, 0xed, 0x5b, 0xec, 0xc6, 0xea, 0x0f, 0xe9, 0x25, 0xea, 0x10, 0xea, 0x38, 0xeb, 0x01, 0xed, + 0x4a, 0xee, 0xe3, 0xf0, 0x9a, 0xf2, 0x16, 0xf6, 0x2f, 0xfc, 0x1a, 0x00, 0x4e, 0x03, 0xf4, 0x07, + 0x83, 0x0a, 0xed, 0x0b, 0x3e, 0x0d, 0x44, 0x0e, 0x44, 0x0e, 0x08, 0x10, 0x55, 0x0f, 0xf9, 0x0d, + 0x86, 0x0e, 0xfe, 0x0c, 0xb4, 0x0c, 0x49, 0x0d, 0x71, 0x0c, 0x95, 0x0b, 0x58, 0x0b, 0x2e, 0x0a, + 0x5c, 0x07, 0xf9, 0x03, 0x55, 0x00, 0xf0, 0xfc, 0x72, 0xfa, 0x6d, 0xf9, 0xee, 0xf7, 0xa1, 0xf7, + 0x6a, 0xf8, 0xab, 0xfb, 0x0f, 0xfe, 0x44, 0x01, 0xdf, 0x06, 0x60, 0x0b, 0x16, 0x0d, 0xa4, 0x10, + 0xdc, 0x12, 0xc7, 0x12, 0x2b, 0x11, 0xf1, 0x0c, 0xe3, 0x09, 0x58, 0x07, 0xc9, 0x04, 0x77, 0x03, + 0x66, 0x03, 0x83, 0x05, 0x10, 0x06, 0x59, 0x06, 0xa4, 0x06, 0xd8, 0x05, 0xcd, 0x06, 0xd4, 0x05, + 0x8d, 0x04, 0x8c, 0x02, 0xe4, 0xff, 0x51, 0xfd, 0xe2, 0xf9, 0x11, 0xf6, 0x70, 0xf2, 0xa3, 0xf0, + 0x7e, 0xef, 0xaa, 0xef, 0xce, 0xf1, 0xa1, 0xf3, 0x5e, 0xf7, 0xc1, 0xfa, 0x73, 0xfc, 0x10, 0xff, + 0xd0, 0x02, 0x89, 0x05, 0x6e, 0x07, 0x53, 0x07, 0x40, 0x07, 0xda, 0x06, 0x4a, 0x03, 0x4f, 0xff, + 0x1f, 0xfc, 0x0c, 0xf9, 0x6e, 0xf9, 0x9f, 0xfa, 0x6a, 0xfb, 0x2d, 0xfc, 0xcd, 0xfc, 0x80, 0xfc, + 0xc1, 0xfa, 0x23, 0xfb, 0x8e, 0xfc, 0x69, 0xfc, 0x84, 0xfd, 0x0d, 0xfd, 0x7d, 0xfb, 0x60, 0xfa, + 0x05, 0xf9, 0xff, 0xf8, 0x52, 0xfa, 0x28, 0xfb, 0x65, 0xfc, 0x27, 0xfe, 0xfe, 0xfe, 0xc6, 0xfe, + 0xc4, 0xfe, 0x98, 0xfd, 0x9e, 0xfc, 0x95, 0xfc, 0x21, 0xfc, 0xa4, 0xfd, 0xc8, 0xfd, 0x5e, 0xfa, + 0xc1, 0xf8, 0x29, 0xf9, 0xcf, 0xf8, 0xcf, 0xf9, 0x6b, 0xfb, 0x37, 0xfd, 0x94, 0xfd, 0x0c, 0xff, + 0x14, 0x01, 0x56, 0x03, 0x1c, 0x06, 0xda, 0x08, 0x36, 0x0a, 0xa2, 0x0d, 0x54, 0x10, 0xf9, 0x11, + 0xdf, 0x13, 0x28, 0x14, 0x7e, 0x14, 0xd9, 0x12, 0x79, 0x12, 0x09, 0x14, 0x5d, 0x13, 0x93, 0x12, + 0x46, 0x13, 0xa5, 0x11, 0x33, 0x0f, 0xd9, 0x0b, 0xa9, 0x08, 0x30, 0x05, 0x7e, 0x02, 0x9e, 0xfe, + 0x12, 0xfa, 0x44, 0xf7, 0x0c, 0xf4, 0x07, 0xf1, 0x91, 0xee, 0xb3, 0xec, 0xc5, 0xeb, 0xc8, 0xeb, + 0x87, 0xeb, 0x9b, 0xec, 0xec, 0xed, 0xbb, 0xee, 0x74, 0xef, 0xd8, 0xf0, 0xf4, 0xf1, 0xba, 0xf2, + 0xa1, 0xf4, 0x4f, 0xf5, 0xba, 0xf9, 0x2c, 0xff, 0xab, 0x01, 0xb1, 0x05, 0xa6, 0x09, 0x89, 0x0a, + 0xfa, 0x0c, 0x41, 0x0d, 0x3c, 0x0c, 0xc5, 0x0a, 0xce, 0x05, 0x32, 0x01, 0x00, 0xfc, 0x6c, 0xf6, + 0x48, 0xf2, 0x79, 0xef, 0xfe, 0xef, 0xcf, 0xf0, 0xe8, 0xf2, 0x99, 0xf4, 0x7b, 0xf3, 0xa6, 0xf4, + 0x71, 0xf5, 0x72, 0xf4, 0x8d, 0xf4, 0x27, 0xf3, 0xee, 0xf0, 0x11, 0xf0, 0x09, 0xef, 0x4d, 0xee, + 0x88, 0xef, 0xde, 0xf1, 0xde, 0xf6, 0x9d, 0xfc, 0x83, 0x01, 0x57, 0x08, 0x26, 0x0e, 0xbd, 0x12, + 0x92, 0x16, 0xe8, 0x18, 0xdd, 0x1a, 0xcc, 0x1c, 0x03, 0x1c, 0xe9, 0x19, 0x35, 0x1a, 0x76, 0x18, + 0xc4, 0x13, 0xc6, 0x10, 0x1e, 0x0e, 0xb8, 0x0c, 0xfa, 0x0b, 0xa1, 0x0a, 0x45, 0x09, 0x25, 0x07, + 0x62, 0x06, 0xf1, 0x03, 0x03, 0x02, 0x04, 0x01, 0xe2, 0xfe, 0x3b, 0xff, 0x00, 0x00, 0xe8, 0xfe, + 0x5f, 0xfe, 0x23, 0xfc, 0x13, 0xfb, 0xbd, 0xfc, 0xc8, 0xfd, 0x41, 0x00, 0xc5, 0x04, 0x62, 0x08, + 0x5d, 0x0a, 0xb6, 0x0c, 0x07, 0x0e, 0xfd, 0x0d, 0x1c, 0x0e, 0x3f, 0x0d, 0x39, 0x0c, 0x94, 0x0a, + 0xb1, 0x06, 0xd5, 0x00, 0x40, 0xfc, 0x3f, 0xf8, 0xb8, 0xf5, 0x28, 0xf3, 0x4e, 0xf1, 0xea, 0xef, + 0xfb, 0xee, 0x04, 0xee, 0x95, 0xed, 0xc4, 0xec, 0xf9, 0xec, 0xbb, 0xec, 0x6a, 0xed, 0xf1, 0xed, + 0xb0, 0xee, 0xdb, 0xef, 0xda, 0xef, 0x84, 0xf1, 0xe3, 0xf1, 0xe6, 0xf2, 0x9e, 0xf7, 0xb2, 0xfb, + 0x46, 0x00, 0xd7, 0x06, 0x58, 0x0b, 0xc5, 0x0e, 0x28, 0x0f, 0xb8, 0x0e, 0x3e, 0x0f, 0x15, 0x11, + 0x62, 0x10, 0xb9, 0x0c, 0xa8, 0x0a, 0x4a, 0x08, 0x0e, 0x05, 0x4c, 0x02, 0x71, 0xff, 0xaa, 0xfc, + 0x24, 0xfb, 0x30, 0xf9, 0xee, 0xf6, 0x55, 0xf5, 0xa9, 0xf4, 0x34, 0xf3, 0xab, 0xf2, 0xe7, 0xf3, + 0xe0, 0xf3, 0x45, 0xf5, 0xc2, 0xf6, 0x02, 0xfa, 0xd3, 0xfd, 0xff, 0x00, 0x8f, 0x04, 0xe0, 0x08, + 0x39, 0x0a, 0x7c, 0x0c, 0x2b, 0x10, 0xac, 0x11, 0x58, 0x13, 0x87, 0x13, 0x13, 0x12, 0x60, 0x11, + 0x62, 0x0e, 0x49, 0x0b, 0xbf, 0x08, 0x62, 0x08, 0x28, 0x09, 0x43, 0x09, 0xcf, 0x09, 0x83, 0x07, + 0x60, 0x05, 0xdd, 0x02, 0x05, 0xff, 0xe1, 0xfc, 0x68, 0xfa, 0xb2, 0xf7, 0x1a, 0xf5, 0xef, 0xf1, + 0xba, 0xee, 0xa6, 0xeb, 0xf2, 0xe9, 0x72, 0xea, 0xf7, 0xed, 0x4b, 0xf1, 0x48, 0xf5, 0x7e, 0xf9, + 0x13, 0xfc, 0x20, 0xff, 0xad, 0x01, 0xa2, 0x03, 0x57, 0x05, 0x83, 0x05, 0x39, 0x04, 0xd3, 0x04, + 0xe5, 0x05, 0x54, 0x04, 0x8b, 0x03, 0x62, 0x02, 0x4c, 0x01, 0x34, 0x03, 0xa8, 0x05, 0x1d, 0x07, + 0x14, 0x08, 0x94, 0x08, 0xb9, 0x06, 0x90, 0x03, 0x07, 0x02, 0xad, 0xfe, 0xcc, 0xfb, 0x75, 0xfb, + 0x12, 0xf9, 0xf2, 0xf5, 0x79, 0xf2, 0xdb, 0xef, 0x9f, 0xef, 0x1b, 0xef, 0x88, 0xef, 0xbe, 0xf1, + 0xb9, 0xf4, 0x04, 0xf8, 0xa3, 0xf9, 0x4a, 0xfa, 0x7f, 0xfa, 0x5a, 0xfa, 0xaf, 0xf9, 0xb6, 0xf8, + 0xee, 0xf8, 0xae, 0xf7, 0x86, 0xf5, 0x41, 0xf5, 0x97, 0xf5, 0xb2, 0xf7, 0x69, 0xfa, 0xc8, 0xfd, + 0x82, 0x00, 0xfd, 0x02, 0x07, 0x06, 0xa2, 0x09, 0xbe, 0x0b, 0xaf, 0x0d, 0xec, 0x0e, 0x3e, 0x10, + 0x24, 0x10, 0xba, 0x0f, 0x33, 0x10, 0x4c, 0x0e, 0x3e, 0x0e, 0x25, 0x0e, 0xef, 0x0a, 0xef, 0x0a, + 0x2a, 0x0b, 0x92, 0x0a, 0x05, 0x0d, 0xa3, 0x0f, 0xd2, 0x11, 0x4d, 0x12, 0xa9, 0x10, 0x58, 0x0e, + 0xc8, 0x0d, 0x66, 0x0c, 0xe4, 0x08, 0x46, 0x04, 0x08, 0x00, 0xf9, 0xfb, 0x5e, 0xf8, 0x09, 0xf5, + 0x22, 0xf3, 0xab, 0xf3, 0x41, 0xf5, 0x48, 0xf6, 0x7c, 0xf7, 0x80, 0xf8, 0xc2, 0xf8, 0xe4, 0xfa, + 0x80, 0xfc, 0x0a, 0xfc, 0xa3, 0xfc, 0xa5, 0xfc, 0x5a, 0xfc, 0xc3, 0xfd, 0xf1, 0xfe, 0xab, 0xff, + 0x4d, 0x02, 0xea, 0x03, 0xc2, 0x04, 0x6b, 0x06, 0x5f, 0x07, 0xcb, 0x08, 0x2a, 0x06, 0x0a, 0x03, + 0x64, 0x02, 0x86, 0xfd, 0xa0, 0xf8, 0x3a, 0xf5, 0x8d, 0xf2, 0x8c, 0xf2, 0xf5, 0xf2, 0x82, 0xf4, + 0xc2, 0xf3, 0x08, 0xf3, 0x1c, 0xf3, 0xb5, 0xf1, 0xbd, 0xf1, 0xd0, 0xf2, 0x68, 0xf3, 0xe1, 0xf4, + 0x52, 0xf6, 0x85, 0xf6, 0xa1, 0xf7, 0x97, 0xf9, 0x27, 0xfc, 0x25, 0x01, 0x6f, 0x05, 0x44, 0x09, + 0xfd, 0x0d, 0x05, 0x10, 0x7b, 0x10, 0xc5, 0x11, 0x2f, 0x12, 0x79, 0x12, 0x6d, 0x11, 0x33, 0x0e, + 0x6c, 0x0c, 0x13, 0x0d, 0xeb, 0x09, 0xc8, 0x06, 0xe7, 0x04, 0x87, 0x02, 0xa3, 0x02, 0xb5, 0x02, + 0x0b, 0x03, 0x38, 0x02, 0x8c, 0x01, 0x4e, 0x01, 0xb1, 0xfd, 0x78, 0xfb, 0x62, 0xf9, 0xe8, 0xf7, + 0xd0, 0xf9, 0x01, 0xfb, 0xb8, 0xfd, 0xde, 0xfe, 0xbc, 0xfd, 0x45, 0xff, 0x02, 0x01, 0xc7, 0x02, + 0xf9, 0x06, 0x39, 0x0b, 0xca, 0x0d, 0x5a, 0x0f, 0x33, 0x10, 0xef, 0x0f, 0x83, 0x0d, 0xfe, 0x0a, + 0x93, 0x08, 0xcf, 0x04, 0x78, 0x00, 0xd9, 0xfa, 0x1b, 0xf5, 0xeb, 0xef, 0x5c, 0xee, 0x8f, 0xec, + 0x71, 0xeb, 0x81, 0xec, 0xe6, 0xed, 0xa2, 0xee, 0x1b, 0xf1, 0xc3, 0xf2, 0xbb, 0xf2, 0x93, 0xf2, + 0x6f, 0xf3, 0x46, 0xf3, 0x94, 0xf2, 0xf4, 0xf2, 0xb2, 0xf2, 0xe1, 0xf3, 0x55, 0xf8, 0x72, 0xf9, + 0xef, 0xfb, 0x60, 0x00, 0x60, 0x03, 0x8e, 0x07, 0x48, 0x0c, 0x25, 0x11, 0xe5, 0x13, 0xa8, 0x13, + 0x0c, 0x11, 0x91, 0x0e, 0x00, 0x0d, 0xcd, 0x09, 0x37, 0x05, 0x34, 0x01, 0x6d, 0xfc, 0xee, 0xf8, + 0x88, 0xf6, 0x26, 0xf3, 0x8d, 0xf0, 0xfc, 0xef, 0x6e, 0xef, 0xb2, 0xef, 0xe1, 0xf0, 0x1f, 0xf1, + 0x22, 0xf2, 0x7c, 0xf3, 0xa1, 0xf4, 0x73, 0xf5, 0x6d, 0xf5, 0x5d, 0xf6, 0x9d, 0xf8, 0xa5, 0xfa, + 0x95, 0xfd, 0x84, 0x01, 0x07, 0x06, 0x45, 0x0a, 0x32, 0x0f, 0xf2, 0x13, 0x21, 0x19, 0x71, 0x1d, + 0x57, 0x1e, 0x15, 0x1f, 0x14, 0x1e, 0x1d, 0x1b, 0xfb, 0x16, 0x8c, 0x11, 0xfe, 0x0d, 0x87, 0x0b, + 0x47, 0x0a, 0x30, 0x08, 0xa5, 0x03, 0x83, 0x00, 0xcc, 0xfc, 0xe4, 0xf8, 0xa4, 0xf6, 0x3a, 0xf3, + 0x3c, 0xf2, 0x38, 0xf2, 0xdc, 0xf0, 0x02, 0xef, 0x6e, 0xed, 0x58, 0xec, 0x91, 0xee, 0xc5, 0xf0, + 0xe5, 0xf2, 0x40, 0xf6, 0xa5, 0xf9, 0xe5, 0xfb, 0xbb, 0xfe, 0x68, 0x02, 0xe8, 0x06, 0xba, 0x0a, + 0xc5, 0x0b, 0x4d, 0x0c, 0xa6, 0x0f, 0x7b, 0x11, 0xee, 0x10, 0x02, 0x11, 0xf1, 0x0f, 0xf9, 0x0f, + 0x32, 0x10, 0x3d, 0x10, 0xac, 0x0f, 0x0a, 0x0e, 0xbe, 0x0b, 0x81, 0x06, 0x7c, 0x01, 0x98, 0xfc, + 0x27, 0xf7, 0x82, 0xf4, 0x5f, 0xf2, 0x24, 0xf1, 0xc4, 0xf0, 0x68, 0xee, 0x8b, 0xed, 0x0a, 0xee, + 0xe2, 0xee, 0xef, 0xf1, 0xf5, 0xf4, 0xac, 0xf7, 0x78, 0xf9, 0x69, 0xfa, 0xca, 0xfb, 0xf4, 0xfb, + 0xdb, 0xfa, 0x71, 0xfa, 0x45, 0xfb, 0xb8, 0xfc, 0x6c, 0xfc, 0x98, 0xfb, 0x03, 0xfb, 0x59, 0xfb, + 0x0b, 0xfe, 0xe0, 0x00, 0x11, 0x03, 0x7e, 0x05, 0x3f, 0x06, 0x6e, 0x06, 0x76, 0x06, 0xb3, 0x05, + 0xaa, 0x04, 0xef, 0x04, 0x81, 0x04, 0x2b, 0x03, 0xcc, 0x02, 0x55, 0x01, 0x05, 0x00, 0x60, 0x02, + 0x94, 0x02, 0x2b, 0x02, 0xa6, 0x04, 0xa7, 0x05, 0xfb, 0x07, 0xbb, 0x0b, 0xcf, 0x0e, 0xf1, 0x11, + 0xb4, 0x12, 0x54, 0x10, 0x48, 0x0e, 0x01, 0x0d, 0x56, 0x0b, 0x27, 0x08, 0x19, 0x05, 0xdb, 0x01, + 0x22, 0x00, 0xe3, 0xfe, 0x2d, 0xfe, 0xab, 0xfd, 0x2c, 0xfe, 0x84, 0xfe, 0xc3, 0xff, 0x3a, 0x01, + 0x5f, 0x00, 0xc9, 0xff, 0xc9, 0xfd, 0x86, 0xfb, 0x44, 0xf9, 0xb5, 0xf5, 0x7e, 0xf2, 0x99, 0xf0, + 0x89, 0xef, 0x99, 0xef, 0xaa, 0xf0, 0xe3, 0xf2, 0x3f, 0xf4, 0xb2, 0xf6, 0xd2, 0xf9, 0x25, 0xfd, + 0x80, 0x00, 0x02, 0x00, 0x48, 0x00, 0x5a, 0x00, 0x3f, 0xfd, 0x5e, 0xf9, 0x73, 0xf5, 0xc4, 0xf1, + 0x9f, 0xf0, 0xe3, 0xf1, 0x22, 0xf5, 0xcc, 0xf6, 0x30, 0xf8, 0x92, 0xf9, 0x29, 0xfa, 0x4d, 0xfc, + 0x47, 0xfd, 0x0b, 0xff, 0xa4, 0x01, 0x7a, 0x02, 0x29, 0x02, 0x66, 0x01, 0x11, 0xff, 0xfb, 0xff, + 0x55, 0x01, 0x02, 0x02, 0xe4, 0x03, 0x0a, 0x05, 0x6d, 0x05, 0x72, 0x06, 0x08, 0x07, 0xae, 0x07, + 0x1b, 0x09, 0xc7, 0x09, 0x58, 0x08, 0x02, 0x09, 0xa6, 0x0a, 0x83, 0x09, 0x1c, 0x09, 0x10, 0x07, + 0x76, 0x05, 0x30, 0x05, 0x2b, 0x04, 0x44, 0x03, 0xf8, 0x01, 0x49, 0x02, 0xcb, 0x01, 0x8a, 0x00, + 0x23, 0x00, 0x53, 0xfe, 0x70, 0xfe, 0x49, 0x00, 0xde, 0x01, 0xda, 0x04, 0x21, 0x05, 0x07, 0x05, + 0x8a, 0x05, 0xa8, 0x04, 0x48, 0x05, 0x99, 0x06, 0x60, 0x07, 0x99, 0x07, 0xea, 0x06, 0xc9, 0x06, + 0x8d, 0x06, 0x6b, 0x04, 0x83, 0x01, 0x39, 0xff, 0xf8, 0xfd, 0x47, 0xfc, 0xa7, 0xf9, 0xf2, 0xf6, + 0xca, 0xf4, 0xe6, 0xf4, 0x8d, 0xf5, 0x39, 0xf6, 0xf4, 0xf7, 0xa9, 0xf9, 0x16, 0xfa, 0x9a, 0xfb, + 0xfd, 0xfb, 0x80, 0xfb, 0xb5, 0xfc, 0x76, 0xfe, 0x5d, 0xff, 0x15, 0x00, 0xdc, 0x01, 0x1c, 0x02, + 0x67, 0x05, 0xeb, 0x08, 0x22, 0x0a, 0x4e, 0x0d, 0x34, 0x0f, 0x49, 0x10, 0xaa, 0x11, 0x4c, 0x12, + 0x94, 0x13, 0xb2, 0x12, 0x3a, 0x0e, 0x2c, 0x09, 0x1f, 0x05, 0xd2, 0x01, 0xfe, 0xfc, 0x71, 0xf8, + 0x25, 0xf4, 0xba, 0xf0, 0xdd, 0xee, 0xd0, 0xed, 0xbb, 0xeb, 0x39, 0xeb, 0x3d, 0xeb, 0x2d, 0xeb, + 0x2c, 0xec, 0xce, 0xeb, 0x7a, 0xec, 0x72, 0xec, 0xe6, 0xec, 0xaf, 0xee, 0x37, 0xf0, 0x67, 0xf1, + 0x62, 0xf4, 0xc4, 0xf6, 0xa8, 0xfa, 0x0c, 0xff, 0x3d, 0x04, 0x64, 0x09, 0xf7, 0x0e, 0xf3, 0x13, + 0xec, 0x17, 0x5d, 0x1c, 0x88, 0x1d, 0x0b, 0x1d, 0x76, 0x1d, 0x50, 0x1b, 0x95, 0x16, 0xb1, 0x10, + 0xb8, 0x09, 0x14, 0x05, 0x07, 0x02, 0x13, 0x01, 0xc7, 0xff, 0xeb, 0xfe, 0xbb, 0xfe, 0x10, 0xfd, + 0x8d, 0xfd, 0xd1, 0xfc, 0xfc, 0xfb, 0x08, 0xfc, 0x50, 0xfb, 0xc2, 0xf9, 0xbb, 0xf7, 0xe5, 0xf2, + 0xda, 0xf0, 0xc4, 0xf0, 0xe0, 0xf0, 0x2c, 0xf3, 0xd7, 0xf6, 0x3f, 0xfa, 0x44, 0xfd, 0x90, 0x00, + 0x46, 0x04, 0x66, 0x08, 0xb8, 0x0b, 0x75, 0x0c, 0xd6, 0x0c, 0xaf, 0x0e, 0xa0, 0x0d, 0xe8, 0x0b, + 0x6c, 0x09, 0x31, 0x06, 0x4d, 0x04, 0xa0, 0x02, 0xa0, 0x01, 0xdc, 0xff, 0x86, 0xfd, 0xa5, 0xfb, + 0x7d, 0xf9, 0xb9, 0xf6, 0xc8, 0xf3, 0x64, 0xf1, 0x9d, 0xf0, 0x7e, 0xf0, 0x63, 0xf1, 0x29, 0xf1, + 0xb6, 0xf0, 0x59, 0xf1, 0x07, 0xf1, 0x19, 0xf2, 0x16, 0xf4, 0xb6, 0xf5, 0x60, 0xf8, 0xb3, 0xfa, + 0xe6, 0xfc, 0x32, 0x00, 0x22, 0x02, 0xe7, 0x02, 0x9f, 0x03, 0xab, 0x05, 0x5c, 0x07, 0x24, 0x08, + 0x67, 0x08, 0x95, 0x06, 0xc2, 0x05, 0xfc, 0x06, 0x23, 0x06, 0x13, 0x06, 0x0c, 0x06, 0x4a, 0x03, + 0xa2, 0x02, 0x3d, 0x01, 0xaa, 0xfe, 0xd2, 0xfd, 0x4a, 0xfd, 0xb6, 0xfc, 0x6a, 0xfc, 0x09, 0xfd, + 0x25, 0xfc, 0x33, 0xfd, 0x23, 0x00, 0x0c, 0x01, 0x39, 0x02, 0xf2, 0x03, 0x6e, 0x04, 0xa6, 0x05, + 0x86, 0x06, 0x09, 0x09, 0xfd, 0x0c, 0xe7, 0x0d, 0xc7, 0x0c, 0x01, 0x0d, 0x93, 0x0d, 0x02, 0x0d, + 0xdc, 0x0b, 0x15, 0x0a, 0x5f, 0x09, 0x13, 0x09, 0x85, 0x09, 0xe5, 0x07, 0x4e, 0x06, 0x77, 0x04, + 0x09, 0x03, 0xd0, 0x02, 0x9a, 0x00, 0x4d, 0xfe, 0xaa, 0xfb, 0xe7, 0xf8, 0xe0, 0xf6, 0x35, 0xf4, + 0xf3, 0xf0, 0x74, 0xf0, 0xec, 0xef, 0x9b, 0xf0, 0xa7, 0xf2, 0xa4, 0xf5, 0x23, 0xf9, 0xcc, 0xfc, + 0x2e, 0x00, 0xf6, 0x02, 0xad, 0x05, 0x4c, 0x08, 0x82, 0x04, 0x56, 0x02, 0xdd, 0x01, 0x59, 0x00, + 0xbc, 0xfc, 0xfb, 0xf8, 0x39, 0xf6, 0xa7, 0xf6, 0x9e, 0xf6, 0x99, 0xf9, 0x87, 0xfb, 0xe2, 0xfd, + 0xc1, 0xfe, 0xd7, 0xff, 0x29, 0x00, 0xa3, 0x00, 0xc4, 0xff, 0x80, 0xff, 0xf5, 0xfe, 0x40, 0xfd, + 0x76, 0xfa, 0x7c, 0xf7, 0x5b, 0xf7, 0xe9, 0xf5, 0x31, 0xf8, 0x10, 0xf8, 0x02, 0xf9, 0x2d, 0xff, + 0xcc, 0xff, 0x45, 0x02, 0x9e, 0x05, 0xf2, 0x07, 0xbd, 0x08, 0x64, 0x08, 0x79, 0x09, 0x77, 0x09, + 0xa4, 0x07, 0x5a, 0x05, 0xe8, 0x03, 0x9c, 0x04, 0xb2, 0x03, 0xc4, 0x04, 0x3a, 0x05, 0xac, 0x06, + 0x46, 0x07, 0xc8, 0x08, 0x32, 0x0a, 0x5c, 0x0a, 0x63, 0x09, 0x65, 0x09, 0x8f, 0x08, 0x33, 0x0a, + 0x6a, 0x09, 0x93, 0x06, 0x9d, 0x03, 0x6f, 0x00, 0x3e, 0xfe, 0xef, 0xfb, 0x0a, 0xfb, 0x9f, 0xfa, + 0xd6, 0xf9, 0x5a, 0xf8, 0x98, 0xf8, 0xfd, 0xf9, 0x87, 0xf8, 0x17, 0xf6, 0xf9, 0xf5, 0x48, 0xf5, + 0x1d, 0xf4, 0x8f, 0xf2, 0xdb, 0xef, 0x70, 0xee, 0x13, 0xee, 0x62, 0xed, 0x93, 0xee, 0x10, 0xf2, + 0x5f, 0xf4, 0xd6, 0xf7, 0x7d, 0xfc, 0x9c, 0xfd, 0x91, 0xff, 0x9c, 0x04, 0x03, 0x06, 0x82, 0x0a, + 0x90, 0x0c, 0xd6, 0x0d, 0x5a, 0x0f, 0x6d, 0x11, 0x68, 0x11, 0xc2, 0x11, 0xc4, 0x12, 0x8b, 0x11, + 0x22, 0x11, 0xce, 0x0e, 0x52, 0x0c, 0x7e, 0x0d, 0x89, 0x0b, 0x0d, 0x08, 0xd9, 0x04, 0x0d, 0x02, + 0x81, 0xff, 0x88, 0xfd, 0x8d, 0xfa, 0x39, 0xf8, 0xc1, 0xf6, 0x61, 0xf6, 0x89, 0xf4, 0xca, 0xf2, + 0x2b, 0xf0, 0x60, 0xee, 0x28, 0xee, 0xa7, 0xed, 0x05, 0xed, 0x29, 0xee, 0x45, 0xef, 0x59, 0xf1, + 0x04, 0xf4, 0xeb, 0xf4, 0x19, 0xf7, 0x0f, 0xfa, 0xc7, 0xfc, 0xaa, 0xff, 0xc7, 0x02, 0xdd, 0x05, + 0x37, 0x09, 0x5d, 0x0c, 0xca, 0x0d, 0x01, 0x10, 0x52, 0x13, 0x6e, 0x12, 0x04, 0x10, 0x58, 0x0f, + 0x8f, 0x0b, 0x9b, 0x08, 0x63, 0x03, 0x7e, 0xff, 0x90, 0xfc, 0xb6, 0xfa, 0xee, 0xfa, 0xb9, 0xfb, + 0x56, 0xfd, 0x2e, 0xfe, 0xfb, 0xfe, 0x52, 0xff, 0x20, 0xff, 0xb8, 0xfe, 0x5f, 0xfe, 0x06, 0xfe, + 0xd9, 0xfe, 0xd4, 0xfd, 0x5b, 0xfc, 0x9e, 0xfc, 0x75, 0xfd, 0x4e, 0xff, 0x46, 0x03, 0x58, 0x07, + 0x13, 0x0b, 0xe1, 0x0d, 0x6e, 0x10, 0xef, 0x12, 0x53, 0x15, 0x1c, 0x15, 0x6f, 0x12, 0x3e, 0x10, + 0xca, 0x0d, 0xae, 0x09, 0x77, 0x05, 0xb4, 0x00, 0xe5, 0xfc, 0x1f, 0xfa, 0x90, 0xf7, 0x19, 0xf6, + 0xd5, 0xf4, 0x69, 0xf3, 0xf9, 0xf2, 0x31, 0xf2, 0xba, 0xf0, 0x4b, 0xf0, 0xd3, 0xef, 0xca, 0xee, + 0x21, 0xee, 0x86, 0xed, 0x38, 0xec, 0x12, 0xed, 0x67, 0xee, 0xb2, 0xef, 0xd8, 0xf2, 0xc5, 0xf5, + 0x5d, 0xf9, 0xa5, 0xfd, 0xcf, 0x00, 0xa7, 0x04, 0x90, 0x09, 0x78, 0x0c, 0x84, 0x0d, 0x80, 0x0d, + 0xbb, 0x0d, 0x34, 0x0d, 0x70, 0x0b, 0x29, 0x09, 0x8f, 0x04, 0xdb, 0x01, 0xe5, 0x00, 0x7a, 0xfe, + 0xec, 0xfd, 0x0f, 0xfd, 0x89, 0xfc, 0x43, 0xfe, 0x13, 0xff, 0x1d, 0x00, 0x6a, 0x00, 0x72, 0x01, + 0xae, 0x03, 0x28, 0x05, 0x13, 0x05, 0x15, 0x05, 0x83, 0x04, 0xd7, 0x03, 0xeb, 0x03, 0xea, 0x04, + 0xab, 0x06, 0x95, 0x08, 0x36, 0x09, 0xca, 0x09, 0x7f, 0x0c, 0x65, 0x0f, 0xf9, 0x0f, 0x6e, 0x10, + 0xd7, 0x10, 0x7e, 0x10, 0x5e, 0x0f, 0xfe, 0x0b, 0x3b, 0x08, 0x3e, 0x05, 0xc1, 0x02, 0x11, 0xff, + 0x65, 0xfc, 0x27, 0xfa, 0xa2, 0xf7, 0x89, 0xf5, 0xde, 0xf3, 0xbf, 0xf1, 0xf6, 0xef, 0xc9, 0xef, + 0xce, 0xee, 0x7a, 0xef, 0xe9, 0xee, 0x54, 0xed, 0x49, 0xf1, 0xd6, 0xf4, 0x8d, 0xef, 0xb0, 0xf4, + 0x13, 0xfa, 0x8a, 0xfc, 0x70, 0xfe, 0xf0, 0x00, 0xd2, 0x05, 0xc7, 0x06, 0xc8, 0x03, 0xfe, 0x06, + 0xf7, 0x06, 0xde, 0x06, 0x04, 0x06, 0xf2, 0x04, 0xcf, 0x06, 0xab, 0x03, 0x50, 0x00, 0x73, 0x03, + 0xc3, 0x03, 0x0d, 0x04, 0x3d, 0x03, 0xae, 0x02, 0xda, 0x04, 0x41, 0x01, 0x00, 0xfc, 0x89, 0xfb, + 0x5b, 0xf7, 0x08, 0xf7, 0xbc, 0xf5, 0x56, 0xf2, 0x62, 0xf5, 0x59, 0xf4, 0x0e, 0xf2, 0x69, 0xf5, + 0x74, 0xf6, 0x0b, 0xfc, 0x0f, 0xfd, 0x2a, 0xff, 0xd3, 0x02, 0x38, 0x04, 0xdc, 0x04, 0x9a, 0x06, + 0x58, 0x05, 0xb4, 0x08, 0x8d, 0x07, 0x79, 0x06, 0x7b, 0x09, 0xe2, 0x07, 0xc3, 0x06, 0xa8, 0x08, + 0x83, 0x07, 0x5d, 0x09, 0x3b, 0x09, 0x33, 0x09, 0x2f, 0x0c, 0x2b, 0x0c, 0x06, 0x09, 0x7a, 0x08, + 0xc6, 0x05, 0xd3, 0x03, 0x62, 0x00, 0xbe, 0xfc, 0x8b, 0xfc, 0x73, 0xfb, 0xd3, 0xf7, 0x1a, 0xf8, + 0x57, 0xf9, 0x2e, 0xf8, 0x80, 0xf7, 0x5f, 0xf9, 0xc1, 0xfc, 0x87, 0x00, 0x28, 0x01, 0x7b, 0x02, + 0xe4, 0x02, 0x88, 0xff, 0xe3, 0xfa, 0xed, 0xf8, 0xd7, 0xf8, 0x1a, 0xf7, 0x37, 0xf3, 0xc3, 0xf4, + 0x99, 0xf5, 0xc4, 0xf5, 0x85, 0xf5, 0x65, 0xf8, 0x06, 0xff, 0x5c, 0x02, 0x67, 0x02, 0xc6, 0x04, + 0x2b, 0x06, 0x15, 0x06, 0x94, 0x05, 0x8a, 0x04, 0x66, 0x05, 0x3a, 0x05, 0x8f, 0x01, 0x2e, 0x02, + 0x1d, 0x03, 0xc2, 0x01, 0x1c, 0x02, 0xd7, 0x02, 0xe8, 0x04, 0x8d, 0x06, 0x39, 0x06, 0x44, 0x07, + 0xe1, 0x06, 0xbd, 0x04, 0xfa, 0x03, 0x50, 0x04, 0x19, 0x04, 0xac, 0x01, 0x92, 0xfd, 0x21, 0xfc, + 0x3d, 0xfa, 0xae, 0xf8, 0x28, 0xf9, 0xca, 0xf9, 0xbb, 0xfb, 0xf4, 0xfd, 0xf5, 0xfb, 0x60, 0xfd, + 0x92, 0xfe, 0x48, 0xfe, 0xcf, 0x01, 0xa1, 0x03, 0x2f, 0x05, 0x57, 0x07, 0x5c, 0x06, 0x61, 0x05, + 0x91, 0x04, 0x11, 0x03, 0xf4, 0x02, 0x6a, 0x03, 0xa8, 0x04, 0xbc, 0x05, 0x9d, 0x05, 0x46, 0x05, + 0x7f, 0x03, 0x3c, 0x01, 0xd2, 0xff, 0xc3, 0xfe, 0x99, 0xfe, 0x4d, 0xfd, 0x9e, 0xfa, 0xf3, 0xf8, + 0xf8, 0xf6, 0x5b, 0xf5, 0x10, 0xf5, 0x10, 0xf6, 0xca, 0xf8, 0x5c, 0xfc, 0x30, 0xfd, 0x12, 0xff, + 0x7c, 0xfd, 0x7b, 0xfd, 0xfb, 0xfe, 0x15, 0x01, 0xf8, 0x02, 0xbf, 0x06, 0xe3, 0x08, 0xb3, 0x06, + 0x97, 0x08, 0xa1, 0x0a, 0x85, 0x0b, 0xb1, 0x0c, 0x45, 0x10, 0x81, 0x0f, 0xab, 0x0e, 0x6b, 0x0f, + 0x34, 0x0c, 0xb8, 0x07, 0x83, 0x05, 0x9d, 0x03, 0x19, 0x01, 0x88, 0xff, 0x9c, 0xfc, 0x82, 0xfa, + 0x6a, 0xf9, 0x6e, 0xf9, 0x11, 0xf7, 0xc6, 0xf6, 0xda, 0xf6, 0xa8, 0xf6, 0x5a, 0xf4, 0x7c, 0xf3, + 0xc8, 0xf3, 0xfc, 0xef, 0x80, 0xf0, 0x97, 0xf1, 0x27, 0xf1, 0xa2, 0xf1, 0x3d, 0xf3, 0xfc, 0xf3, + 0x24, 0xf4, 0x57, 0xf7, 0xee, 0xfa, 0x1e, 0xfe, 0x99, 0x02, 0x49, 0x04, 0x4b, 0x05, 0x1d, 0x09, + 0xba, 0x09, 0xf5, 0x07, 0xfd, 0x05, 0x24, 0x05, 0x87, 0x04, 0xd3, 0x00, 0xf3, 0xfb, 0x61, 0xf9, + 0x85, 0xf7, 0xe8, 0xf4, 0x03, 0xf5, 0x00, 0xf6, 0x82, 0xf7, 0x9c, 0xfa, 0xad, 0xfc, 0x85, 0xfd, + 0x1b, 0xff, 0x17, 0xff, 0xb5, 0x00, 0x82, 0x02, 0x8f, 0x03, 0xbd, 0x02, 0x87, 0x01, 0x63, 0x02, + 0x55, 0x02, 0x28, 0x04, 0x20, 0x06, 0xfc, 0x09, 0x36, 0x0e, 0xa0, 0x10, 0xb4, 0x12, 0x61, 0x16, + 0x48, 0x19, 0x0e, 0x19, 0x51, 0x18, 0x8a, 0x16, 0x06, 0x14, 0x45, 0x0f, 0x76, 0x09, 0x32, 0x04, + 0x73, 0x00, 0x65, 0xfc, 0xd5, 0xf8, 0x24, 0xf5, 0xdc, 0xf2, 0x8a, 0xf0, 0x38, 0xef, 0x24, 0xee, + 0x20, 0xed, 0x8f, 0xec, 0x4e, 0xeb, 0x58, 0xec, 0x25, 0xed, 0xb4, 0xeb, 0xe8, 0xea, 0x2c, 0xeb, + 0x42, 0xec, 0xdd, 0xee, 0x34, 0xf2, 0xb8, 0xf5, 0xc0, 0xfa, 0xf5, 0xfd, 0x45, 0x00, 0x95, 0x05, + 0x18, 0x0b, 0xee, 0x0d, 0xcf, 0x0e, 0xfc, 0x0f, 0x38, 0x10, 0xd3, 0x0e, 0xcf, 0x0d, 0x55, 0x0b, + 0xd3, 0x08, 0xf3, 0x06, 0xb8, 0x03, 0x37, 0x02, 0xe7, 0xff, 0xd0, 0xfd, 0xb1, 0xfc, 0xcb, 0xfa, + 0x8f, 0xf9, 0xbe, 0xf7, 0x1c, 0xf6, 0x3a, 0xf7, 0x63, 0xf8, 0xfa, 0xf7, 0xa9, 0xf8, 0x9e, 0xfa, + 0x1b, 0xfb, 0xbf, 0xfb, 0x07, 0xfd, 0xbf, 0xfe, 0xe6, 0x01, 0x68, 0x03, 0x77, 0x03, 0x90, 0x05, + 0x70, 0x08, 0xfe, 0x08, 0x72, 0x09, 0x22, 0x0b, 0x87, 0x0c, 0x5a, 0x0d, 0xac, 0x0d, 0x2a, 0x0c, + 0x4d, 0x0a, 0x79, 0x09, 0x91, 0x08, 0x6b, 0x07, 0x49, 0x07, 0xcf, 0x05, 0x02, 0x05, 0x2c, 0x04, + 0xe2, 0x02, 0xf6, 0x00, 0x74, 0xfe, 0x6a, 0xfd, 0xfb, 0xfc, 0x4d, 0xfb, 0x21, 0xf9, 0x8d, 0xf8, + 0xe9, 0xf7, 0x5a, 0xf7, 0xce, 0xf8, 0x8b, 0xfa, 0xb1, 0xfc, 0x6f, 0xff, 0x4d, 0x00, 0xae, 0x01, + 0x55, 0x04, 0x5b, 0x06, 0x01, 0x07, 0x26, 0x07, 0xb1, 0x07, 0xcb, 0x06, 0x01, 0x05, 0x49, 0x03, + 0x34, 0x01, 0x77, 0x00, 0xca, 0x00, 0xf7, 0x01, 0x8d, 0x03, 0xb2, 0x04, 0xc1, 0x06, 0xc7, 0x08, + 0x9e, 0x08, 0x08, 0x08, 0x99, 0x06, 0xb4, 0x04, 0x2c, 0x03, 0x43, 0x00, 0x88, 0xfc, 0x6a, 0xf9, + 0x5b, 0xf7, 0x66, 0xf5, 0x6d, 0xf4, 0x03, 0xf5, 0x64, 0xf7, 0x64, 0xfa, 0xc3, 0xfb, 0x3f, 0xfb, + 0x02, 0xfc, 0xf6, 0xfc, 0xe0, 0xfc, 0x5b, 0xfc, 0x79, 0xfb, 0xc7, 0xfa, 0xb1, 0xfa, 0x38, 0xfa, + 0x14, 0xf8, 0x85, 0xf8, 0x70, 0xf9, 0x1e, 0xfa, 0x19, 0xfc, 0x78, 0xfd, 0xe4, 0xfe, 0x32, 0x01, + 0xc6, 0x01, 0xb3, 0x01, 0x42, 0x01, 0x05, 0x01, 0xc9, 0x01, 0x1b, 0x02, 0x38, 0x02, 0xfc, 0x00, + 0xd0, 0xff, 0x01, 0xff, 0x69, 0xfe, 0xb3, 0xfd, 0x87, 0xfe, 0xe5, 0xff, 0x47, 0x01, 0x43, 0x01, + 0x6b, 0x02, 0x6b, 0x05, 0x7a, 0x06, 0xdf, 0x07, 0x39, 0x08, 0x0f, 0x08, 0xec, 0x07, 0xfc, 0x06, + 0xcb, 0x03, 0x0a, 0x01, 0xd1, 0xfe, 0xed, 0xfc, 0x72, 0xfb, 0x9d, 0xfa, 0xb9, 0xfb, 0x4e, 0xfd, + 0x71, 0xfe, 0xfa, 0xfe, 0x42, 0x00, 0x71, 0x00, 0xd3, 0x01, 0xe5, 0x03, 0x1e, 0x05, 0xb3, 0x04, + 0xc6, 0x03, 0xac, 0x02, 0x2c, 0x01, 0xb0, 0x00, 0x19, 0x00, 0xaf, 0x00, 0x31, 0x02, 0xc1, 0x01, + 0x99, 0x00, 0xd3, 0x01, 0x16, 0x03, 0x19, 0x03, 0xb9, 0x01, 0x02, 0x02, 0x5d, 0x01, 0x4f, 0x00, + 0xd3, 0xfd, 0x8f, 0xfa, 0x86, 0xf8, 0xd9, 0xf6, 0x97, 0xf5, 0x8a, 0xf5, 0x9a, 0xf5, 0x57, 0xf6, + 0x4e, 0xf8, 0x20, 0xf9, 0xe9, 0xfa, 0x45, 0xfb, 0x2f, 0xfb, 0xac, 0xfc, 0xa7, 0xfd, 0xa0, 0xfd, + 0x66, 0xfd, 0x7b, 0xfd, 0x5b, 0xfe, 0xbf, 0xfe, 0xdd, 0xff, 0x0f, 0x01, 0xbd, 0x03, 0x8c, 0x05, + 0x3d, 0x04, 0x05, 0x05, 0xdf, 0x04, 0x1d, 0x03, 0x22, 0x01, 0xd6, 0xfe, 0x19, 0xfd, 0x6f, 0xfb, + 0x38, 0xf8, 0x2e, 0xf4, 0xd0, 0xf0, 0xdc, 0xef, 0xab, 0xef, 0x35, 0xf0, 0xd3, 0xf0, 0x60, 0xf2, + 0x7f, 0xf5, 0x19, 0xf7, 0x5e, 0xf9, 0x93, 0xfb, 0xf0, 0xfc, 0xd7, 0xff, 0x73, 0x03, 0x81, 0x05, + 0xbc, 0x06, 0xb6, 0x09, 0x45, 0x0c, 0x2e, 0x0e, 0x39, 0x11, 0x11, 0x14, 0x24, 0x18, 0x22, 0x1b, + 0xfd, 0x1a, 0x5a, 0x1b, 0x29, 0x1b, 0x56, 0x19, 0xc8, 0x16, 0x6f, 0x13, 0x3a, 0x11, 0x35, 0x0f, + 0xdf, 0x0c, 0x1c, 0x08, 0x44, 0x03, 0xd8, 0x00, 0xb0, 0xfe, 0x18, 0xfd, 0xa4, 0xfb, 0xf0, 0xf9, + 0xfe, 0xf9, 0x8f, 0xf9, 0x60, 0xf8, 0xdd, 0xf7, 0xc3, 0xf5, 0x17, 0xf6, 0x9f, 0xf7, 0x8c, 0xf7, + 0x1d, 0xf7, 0x6c, 0xf6, 0xc4, 0xf6, 0xe6, 0xf7, 0xbf, 0xf8, 0xd7, 0xfa, 0xc5, 0xfd, 0x2c, 0x02, + 0x7b, 0x04, 0x8e, 0x05, 0x2b, 0x08, 0x98, 0x0a, 0xb1, 0x0b, 0x9d, 0x0b, 0x4a, 0x0a, 0x12, 0x08, + 0x3f, 0x05, 0x12, 0x01, 0xa5, 0xfc, 0x70, 0xf9, 0x19, 0xf6, 0x49, 0xf3, 0x7b, 0xf2, 0xef, 0xf1, + 0x74, 0xf3, 0xa4, 0xf4, 0x85, 0xf6, 0x34, 0xf8, 0x44, 0xf7, 0x4b, 0xf7, 0xaa, 0xf8, 0x1c, 0xfa, + 0x1a, 0xf9, 0x19, 0xf9, 0x4d, 0xf9, 0xb8, 0xf8, 0x04, 0xfa, 0xcc, 0xfb, 0xa3, 0xfe, 0x01, 0x03, + 0x80, 0x06, 0xec, 0x08, 0xd9, 0x0b, 0x9f, 0x0e, 0x6b, 0x10, 0x70, 0x10, 0x47, 0x11, 0xa8, 0x10, + 0xd3, 0x10, 0x97, 0x0e, 0x47, 0x0b, 0x92, 0x09, 0x36, 0x06, 0xd9, 0x03, 0xa2, 0x01, 0x65, 0xfe, + 0xc8, 0xfc, 0xa7, 0xfb, 0x74, 0xf9, 0x71, 0xf7, 0xb4, 0xf4, 0xbd, 0xf2, 0x32, 0xf1, 0x28, 0xf0, + 0xd9, 0xed, 0xe4, 0xeb, 0x69, 0xeb, 0xac, 0xea, 0x46, 0xea, 0x95, 0xea, 0xd1, 0xec, 0x44, 0xf0, + 0x02, 0xf3, 0x88, 0xf3, 0x6a, 0xf7, 0x47, 0xfc, 0x8d, 0xff, 0x3f, 0x03, 0x33, 0x05, 0xc6, 0x06, + 0xb6, 0x08, 0x5c, 0x0a, 0xa8, 0x0a, 0xec, 0x09, 0x12, 0x09, 0x18, 0x09, 0x7f, 0x08, 0x2a, 0x08, + 0x89, 0x07, 0x23, 0x08, 0x1f, 0x08, 0xd1, 0x06, 0x12, 0x06, 0xb8, 0x03, 0x79, 0x03, 0xa5, 0x02, + 0xb6, 0x00, 0xbc, 0xff, 0xa8, 0xfe, 0xdb, 0xfd, 0xe0, 0xfd, 0x24, 0xfe, 0x1e, 0xff, 0x8b, 0x00, + 0x65, 0x02, 0xae, 0x02, 0xb6, 0x02, 0xcf, 0x03, 0x9f, 0x04, 0x8a, 0x04, 0x0e, 0x05, 0x47, 0x05, + 0x3b, 0x05, 0xcf, 0x05, 0xe7, 0x03, 0x38, 0x02, 0x10, 0x00, 0xa9, 0xfe, 0x93, 0xff, 0x5b, 0xff, + 0x97, 0xfd, 0xf8, 0xfd, 0x3b, 0xfe, 0xcb, 0xfc, 0xa9, 0xfb, 0x17, 0xfa, 0xce, 0xf7, 0x29, 0xf6, + 0x52, 0xf5, 0x3d, 0xf3, 0x30, 0xf1, 0xff, 0xf0, 0x20, 0xf1, 0xd7, 0xf1, 0x4c, 0xf3, 0xb1, 0xf5, + 0xa6, 0xf9, 0xb7, 0xfc, 0x10, 0xff, 0xbf, 0x01, 0x7d, 0x03, 0xc1, 0x05, 0x1f, 0x08, 0x5a, 0x08, + 0x84, 0x08, 0xb4, 0x09, 0x37, 0x09, 0x12, 0x08, 0x8f, 0x07, 0xc3, 0x07, 0xae, 0x07, 0x29, 0x08, + 0x93, 0x08, 0xd5, 0x09, 0x0a, 0x0c, 0x29, 0x0d, 0x02, 0x0e, 0x78, 0x0e, 0xee, 0x0d, 0xd7, 0x0c, + 0x65, 0x0b, 0x83, 0x08, 0x0f, 0x06, 0x5b, 0x03, 0xda, 0x00, 0xa1, 0xfe, 0xf2, 0xfc, 0xd7, 0xfb, + 0x61, 0xfd, 0x1e, 0xfe, 0x24, 0xfe, 0x94, 0xfe, 0x2b, 0x00, 0xcc, 0x00, 0xdc, 0xfe, 0xf4, 0xfd, + 0x40, 0xfc, 0xdd, 0xfc, 0x08, 0xfb, 0x2c, 0xf9, 0x90, 0xf7, 0x87, 0xf7, 0x96, 0xf6, 0xe7, 0xf7, + 0x4c, 0xf9, 0xaa, 0xfb, 0x73, 0xfd, 0x7f, 0x00, 0xc5, 0x01, 0xda, 0x03, 0xce, 0x03, 0x26, 0x03, + 0x53, 0x04, 0xe9, 0x04, 0xb5, 0x02, 0xef, 0x01, 0x23, 0x01, 0xdc, 0x00, 0x1e, 0xff, 0x56, 0xfd, + 0x8d, 0xfe, 0x50, 0xff, 0x5a, 0x00, 0xee, 0xfe, 0x7a, 0xff, 0x57, 0x00, 0xc3, 0x01, 0xd0, 0x00, + 0xa1, 0xff, 0x51, 0x00, 0x38, 0x00, 0xa2, 0xfc, 0x8a, 0xfa, 0xe1, 0xf9, 0xec, 0xf8, 0x2b, 0xf8, + 0xc2, 0xf6, 0x89, 0xf6, 0x57, 0xf8, 0xe3, 0xf8, 0x90, 0xf9, 0x36, 0xfc, 0xfe, 0xfe, 0xeb, 0xff, + 0xbf, 0x01, 0x64, 0x04, 0x5e, 0x05, 0x45, 0x05, 0xe1, 0x05, 0x28, 0x07, 0xa0, 0x07, 0xc4, 0x07, + 0x0e, 0x08, 0xc1, 0x0a, 0x73, 0x0b, 0xf7, 0x08, 0x11, 0x08, 0x8c, 0x09, 0x82, 0x0a, 0xb0, 0x09, + 0xed, 0x07, 0xa0, 0x06, 0x43, 0x07, 0xa2, 0x04, 0x1e, 0x01, 0x0e, 0x00, 0xa0, 0xfe, 0xbf, 0xfc, + 0x67, 0xfb, 0x82, 0xfb, 0xa8, 0xfc, 0xa7, 0xfd, 0xd2, 0xfc, 0x17, 0xfe, 0x7c, 0xfe, 0x52, 0xfe, + 0xcf, 0xfe, 0x17, 0x00, 0x7e, 0x01, 0xc7, 0x00, 0x63, 0xff, 0xaa, 0xff, 0x83, 0x00, 0x91, 0x01, + 0xc6, 0x01, 0x6b, 0x05, 0x8b, 0x08, 0xb1, 0x08, 0x8f, 0x07, 0x3b, 0x07, 0xa5, 0x06, 0x32, 0x05, + 0x58, 0x02, 0xfa, 0xfd, 0x10, 0xfc, 0x55, 0xf8, 0x3e, 0xf4, 0x2c, 0xf0, 0xf3, 0xec, 0xdf, 0xea, + 0xef, 0xe9, 0xb6, 0xe7, 0x7f, 0xe6, 0xd3, 0xe7, 0x3f, 0xe8, 0x28, 0xe8, 0x7a, 0xe9, 0xa5, 0xea, + 0x74, 0xeb, 0xe6, 0xec, 0x61, 0xee, 0xbf, 0xef, 0x76, 0xf1, 0x5d, 0xf3, 0x0c, 0xf5, 0xe5, 0xf8, + 0x69, 0xfd, 0xd4, 0x00, 0xa0, 0x05, 0x2a, 0x09, 0x6d, 0x0c, 0x8d, 0x0f, 0xd6, 0x11, 0x2e, 0x13, + 0x7a, 0x13, 0xcd, 0x11, 0xb4, 0x0f, 0xed, 0x0f, 0x32, 0x0d, 0x45, 0x0a, 0xdc, 0x07, 0x38, 0x05, + 0xd8, 0x04, 0x27, 0x03, 0x7e, 0x02, 0x5d, 0x02, 0x50, 0x02, 0xb5, 0x03, 0xca, 0x04, 0x7b, 0x05, + 0x39, 0x04, 0x02, 0x05, 0x08, 0x04, 0x9d, 0x01, 0x21, 0x01, 0x09, 0x01, 0x1d, 0x01, 0x2d, 0x01, + 0xf8, 0x00, 0x94, 0x01, 0xd9, 0x06, 0x01, 0x09, 0xf3, 0x08, 0x5a, 0x0b, 0x4c, 0x0d, 0xda, 0x0c, + 0x88, 0x0d, 0xf3, 0x0d, 0xed, 0x0c, 0xbc, 0x0a, 0x0e, 0x09, 0xc9, 0x05, 0x3d, 0x02, 0x2e, 0xfe, + 0xb9, 0xfc, 0x80, 0xfb, 0x48, 0xf8, 0x9f, 0xf7, 0x8d, 0xf6, 0x7f, 0xf5, 0x4a, 0xf7, 0x44, 0xf7, + 0x22, 0xf7, 0xe4, 0xf9, 0x49, 0xfc, 0xe5, 0xfb, 0xa4, 0xfb, 0xe7, 0xfc, 0x67, 0xfd, 0xc5, 0xfc, + 0x4a, 0xfd, 0x5e, 0xff, 0x9e, 0x01, 0xc7, 0x02, 0x6a, 0x04, 0xbf, 0x06, 0x98, 0x09, 0x49, 0x0b, + 0x94, 0x0c, 0x57, 0x0e, 0xdc, 0x0e, 0xba, 0x0e, 0x92, 0x0e, 0xb6, 0x0d, 0x5a, 0x0b, 0x5d, 0x08, + 0x62, 0x07, 0xb4, 0x07, 0x0f, 0x05, 0xc3, 0x01, 0xe7, 0xff, 0xce, 0xfd, 0x0f, 0xfc, 0x84, 0xfa, + 0x2a, 0xfa, 0x29, 0xf8, 0x50, 0xf6, 0xee, 0xf4, 0x13, 0xf4, 0x57, 0xf3, 0x2e, 0xf2, 0xca, 0xf1, + 0x6a, 0xf0, 0x89, 0xef, 0x87, 0xf0, 0x14, 0xf2, 0x3a, 0xf4, 0xbd, 0xf5, 0x79, 0xf8, 0x89, 0xfa, + 0xe0, 0xfb, 0xf8, 0xfe, 0x37, 0xff, 0xf3, 0x01, 0x49, 0x04, 0x74, 0x01, 0xa6, 0x02, 0xb5, 0x03, + 0xb6, 0x02, 0xec, 0x03, 0x61, 0x04, 0x94, 0x04, 0x39, 0x03, 0xe4, 0x01, 0x0d, 0x03, 0x0c, 0x03, + 0xcf, 0x00, 0x34, 0xff, 0x2b, 0xfc, 0xf3, 0xfb, 0x9e, 0xfa, 0x48, 0xf8, 0xd3, 0xf8, 0x24, 0xf6, + 0x2a, 0xf5, 0x25, 0xf4, 0x8b, 0xf6, 0xd6, 0xf8, 0xce, 0xf7, 0x4d, 0xf5, 0xfb, 0xf6, 0x48, 0xf9, + 0xc3, 0xfb, 0xad, 0xfb, 0x5f, 0xfc, 0x9d, 0xfb, 0xa4, 0xfb, 0xb4, 0xfa, 0xc7, 0xfa, 0x0e, 0xfa, + 0x90, 0xfb, 0xa2, 0xfd, 0xed, 0xff, 0x23, 0x00, 0x58, 0x00, 0xb5, 0x01, 0xf2, 0x02, 0x3b, 0x05, + 0xf7, 0x02, 0x03, 0x04, 0xe3, 0x03, 0x1a, 0x06, 0x9f, 0x01, 0x06, 0xff, 0x1d, 0xfc, 0x61, 0xfc, + 0xdb, 0xf9, 0xf4, 0xfa, 0xec, 0xfc, 0x72, 0x03, 0xcd, 0x02, 0x45, 0x05, 0x9f, 0x03, 0x39, 0x08, + 0x7a, 0x09, 0xd9, 0x09, 0x09, 0x0b, 0x2c, 0x0d, 0x70, 0x0a, 0xa5, 0x0c, 0x79, 0x09, 0x61, 0x09, + 0xf1, 0x06, 0x9f, 0x06, 0xb7, 0x06, 0x7d, 0x06, 0x35, 0x06, 0x7a, 0x08, 0xa8, 0x09, 0x1f, 0x0c, + 0xe7, 0x0a, 0x03, 0x09, 0xd0, 0x0b, 0x43, 0x0e, 0x8b, 0x0c, 0xf2, 0x0c, 0x9d, 0x0c, 0x58, 0x09, + 0xfa, 0x03, 0xbd, 0x02, 0x8f, 0xfe, 0xe7, 0xff, 0xbe, 0x00, 0x9f, 0x01, 0xd5, 0xff, 0x04, 0x05, + 0x7c, 0x01, 0xe9, 0x02, 0xc5, 0xfe, 0xbe, 0xff, 0xd5, 0xfc, 0x51, 0xfe, 0x38, 0xfc, 0x74, 0xfd, + 0xc8, 0xf4, 0xe3, 0xf2, 0xf6, 0xf1, 0x89, 0xf2, 0x04, 0xf0, 0xa9, 0xf1, 0x9b, 0xf1, 0x95, 0xf7, + 0x57, 0xf7, 0x53, 0xf8, 0x9f, 0xf7, 0xf0, 0xfb, 0x37, 0xfb, 0x1b, 0xfc, 0x00, 0xfd, 0xd7, 0x00, + 0x8e, 0x02, 0x22, 0x02, 0x72, 0x00, 0xa0, 0x00, 0x63, 0x00, 0x2d, 0x00, 0x29, 0x00, 0xaf, 0x03, + 0x1d, 0x03, 0x6b, 0x04, 0xde, 0x03, 0x2e, 0x03, 0xf7, 0x01, 0x62, 0xff, 0xbf, 0xfd, 0x9c, 0xff, + 0xfb, 0xfd, 0x02, 0xfc, 0x23, 0xf9, 0xeb, 0xfa, 0xf4, 0xf8, 0xd1, 0xf7, 0x09, 0xf7, 0x67, 0xfb, + 0x80, 0xfc, 0xb3, 0xfc, 0x60, 0xfe, 0x5e, 0x02, 0xf3, 0x01, 0xdf, 0x00, 0xff, 0x00, 0xfb, 0x02, + 0x84, 0x04, 0xc1, 0x06, 0x4d, 0x06, 0x1f, 0x08, 0xbe, 0x07, 0xd0, 0x04, 0xd2, 0x04, 0x03, 0x08, + 0x2e, 0x08, 0x2a, 0x06, 0xe0, 0x05, 0x57, 0x05, 0xb6, 0x02, 0xe6, 0xfe, 0xe9, 0xfd, 0x91, 0xfc, + 0x6f, 0xfa, 0x1e, 0xf8, 0x4a, 0xf7, 0x3a, 0xf9, 0x1d, 0xf9, 0x78, 0xf7, 0x63, 0xf8, 0xe3, 0xfa, + 0x7d, 0xfb, 0x68, 0xfa, 0x4c, 0xfa, 0x60, 0xfe, 0x38, 0x01, 0xb2, 0x00, 0x4e, 0x01, 0xe3, 0x04, + 0x75, 0x04, 0xf0, 0x04, 0xed, 0x06, 0x56, 0x07, 0x5d, 0x09, 0x0b, 0x0c, 0x43, 0x0c, 0x33, 0x0d, + 0x23, 0x0f, 0x3b, 0x0f, 0x1d, 0x0c, 0x91, 0x0b, 0x7b, 0x0b, 0x27, 0x07, 0xa8, 0x03, 0x3f, 0xfd, + 0x44, 0xfa, 0xfe, 0xf3, 0x15, 0xf1, 0x0a, 0xf0, 0x6a, 0xef, 0xb7, 0xec, 0xcd, 0xed, 0x20, 0xee, + 0x99, 0xee, 0x24, 0xeb, 0x8d, 0xec, 0x3e, 0xeb, 0x68, 0xee, 0x88, 0xed, 0x56, 0xee, 0x44, 0xee, + 0x3d, 0xf1, 0x8d, 0xf1, 0x62, 0xf1, 0x32, 0xf1, 0x1a, 0xf4, 0x3a, 0xf7, 0xd8, 0xfd, 0xf0, 0x00, + 0xd3, 0x05, 0x6d, 0x07, 0x4e, 0x09, 0xa8, 0x0a, 0x07, 0x0e, 0xb9, 0x0c, 0x9a, 0x0f, 0x75, 0x0d, + 0x30, 0x0d, 0x3d, 0x0a, 0x92, 0x05, 0x88, 0x04, 0xb4, 0x03, 0x7a, 0xff, 0x5d, 0xfe, 0xf7, 0xfd, + 0x5d, 0x03, 0x30, 0x02, 0x46, 0x00, 0x2c, 0xfe, 0x58, 0xff, 0x6b, 0xff, 0x05, 0x01, 0x14, 0x01, + 0x35, 0xff, 0xf7, 0xfc, 0x26, 0x00, 0x49, 0xfb, 0xc1, 0xfd, 0x3f, 0xff, 0x72, 0x02, 0x50, 0x02, + 0xff, 0x08, 0x4b, 0x0a, 0x99, 0x0b, 0x93, 0x12, 0xdd, 0x15, 0x84, 0x14, 0x43, 0x16, 0x42, 0x13, + 0x97, 0x11, 0x5a, 0x0f, 0x39, 0x14, 0xe2, 0x15, 0x70, 0x13, 0x56, 0x0c, 0xd5, 0x07, 0x9f, 0x06, + 0x38, 0x04, 0x06, 0x09, 0xd3, 0x0d, 0x66, 0x0b, 0x70, 0x06, 0x5f, 0x01, 0x4f, 0xfe, 0xf5, 0xff, + 0xf1, 0x04, 0x22, 0x05, 0x8f, 0x04, 0xcd, 0x01, 0x41, 0xf9, 0x51, 0xf7, 0x1b, 0xfd, 0xe0, 0x00, + 0x3c, 0x03, 0x36, 0x05, 0x35, 0x02, 0xd0, 0xfe, 0x11, 0x02, 0xae, 0x06, 0xbf, 0x09, 0xae, 0x0b, + 0x17, 0x0b, 0x12, 0x04, 0xf3, 0xfe, 0xdc, 0xff, 0x96, 0x04, 0xe1, 0x05, 0x8f, 0x05, 0x0e, 0x05, + 0x11, 0xff, 0x89, 0xfb, 0x48, 0xfa, 0xce, 0xfb, 0x8a, 0xfa, 0x37, 0xfa, 0x42, 0xfb, 0x56, 0xf4, + 0x45, 0xec, 0xcd, 0xea, 0x66, 0xed, 0xe4, 0xf2, 0x67, 0xf2, 0x9f, 0xf2, 0x68, 0xef, 0x1d, 0xee, + 0x0a, 0xee, 0x64, 0xf4, 0x2c, 0xfa, 0xdf, 0xfc, 0xc1, 0xf9, 0x51, 0xf7, 0x91, 0xf3, 0xa6, 0xf5, + 0xfe, 0xf8, 0x37, 0xfd, 0xe4, 0xfb, 0x2d, 0xfa, 0x13, 0xf4, 0x60, 0xf4, 0xcf, 0xf6, 0x44, 0xfd, + 0x2d, 0x04, 0xba, 0x02, 0xf8, 0xfd, 0x63, 0xf8, 0x4c, 0xf6, 0x76, 0xfc, 0x39, 0x03, 0x5a, 0x06, + 0x67, 0x05, 0xd1, 0x01, 0xa3, 0xfb, 0x1b, 0xfb, 0x53, 0xfa, 0x37, 0xfd, 0xff, 0x03, 0x04, 0x06, + 0x12, 0x04, 0xf4, 0x05, 0x23, 0x07, 0x47, 0x09, 0x80, 0x0a, 0xd5, 0x0c, 0x6c, 0x09, 0xac, 0x07, + 0x14, 0x02, 0x44, 0x00, 0x7d, 0x00, 0xd8, 0x01, 0xe8, 0x02, 0xde, 0xff, 0x87, 0xfa, 0x3c, 0xf9, + 0x09, 0xfa, 0xfb, 0xfe, 0xe7, 0x02, 0x55, 0x02, 0x01, 0xfd, 0x4d, 0xf8, 0xaa, 0xf4, 0x19, 0xf4, + 0x61, 0xf5, 0xd5, 0xf9, 0x3f, 0xfb, 0x29, 0xf7, 0xca, 0xed, 0x24, 0xe8, 0xe5, 0xe9, 0x0a, 0xef, + 0x24, 0xf5, 0x97, 0xf9, 0x66, 0xf8, 0xa8, 0xf2, 0x73, 0xf2, 0x7c, 0xf6, 0xe8, 0xfd, 0x98, 0x00, + 0x16, 0xfe, 0x12, 0xfc, 0x01, 0xf9, 0xfd, 0xf6, 0xd6, 0xf9, 0x9e, 0xfe, 0x8d, 0xff, 0x43, 0xff, + 0xb0, 0xfd, 0x99, 0xfe, 0x36, 0x02, 0x29, 0x07, 0x32, 0x0c, 0xe5, 0x0f, 0xe4, 0x0f, 0xdd, 0x0d, + 0x95, 0x0b, 0x44, 0x0a, 0x2e, 0x0c, 0xcc, 0x10, 0x8d, 0x10, 0x6a, 0x0c, 0xc0, 0x07, 0x89, 0x02, + 0x91, 0x00, 0x99, 0x02, 0x5f, 0x05, 0xfb, 0x06, 0xa3, 0x06, 0x78, 0x03, 0x30, 0x00, 0xff, 0xfc, + 0x85, 0xfd, 0x29, 0xfe, 0x17, 0xfe, 0xb6, 0xfb, 0xf7, 0xf9, 0x92, 0xf6, 0x7d, 0xf6, 0xc6, 0xf6, + 0xfb, 0xf9, 0xe5, 0xfc, 0x5c, 0xff, 0x58, 0xfd, 0x24, 0xfc, 0x13, 0xff, 0xb3, 0x06, 0x27, 0x0d, + 0x43, 0x0f, 0x69, 0x0f, 0xf4, 0x0d, 0x5b, 0x0c, 0x2a, 0x0e, 0x27, 0x11, 0xee, 0x14, 0x2c, 0x19, + 0x7d, 0x18, 0xef, 0x16, 0x7d, 0x16, 0x43, 0x14, 0xc7, 0x13, 0x19, 0x15, 0x92, 0x14, 0x4e, 0x11, + 0x10, 0x0a, 0x8a, 0x03, 0xe3, 0x03, 0x87, 0x03, 0x1a, 0x02, 0xea, 0xfe, 0x6c, 0xfc, 0xfa, 0xf9, + 0xe0, 0xf5, 0x6b, 0xf6, 0x01, 0xf8, 0x3e, 0xfa, 0x71, 0xfb, 0x5a, 0xf8, 0xf4, 0xf6, 0xc4, 0xf6, + 0x2b, 0xfa, 0x6b, 0xfc, 0x1a, 0xff, 0x86, 0x00, 0xc7, 0xfe, 0x27, 0xff, 0x75, 0xfd, 0x7e, 0x00, + 0x94, 0x06, 0x9f, 0x08, 0xed, 0x0f, 0x67, 0x0e, 0x81, 0x08, 0xd1, 0x07, 0x7f, 0x0a, 0xd7, 0x0b, + 0x4b, 0x08, 0xfb, 0x07, 0x7e, 0x07, 0xbc, 0x00, 0xcd, 0xfa, 0xe3, 0xfa, 0x63, 0xfc, 0x2a, 0xfd, + 0x17, 0xf8, 0xde, 0xf4, 0x91, 0xf6, 0x0b, 0xf5, 0x51, 0xf6, 0xdf, 0xf7, 0x73, 0xf8, 0x22, 0xfb, + 0xb8, 0xf5, 0x7a, 0xf4, 0x6d, 0xf8, 0x61, 0xf5, 0x87, 0xf9, 0xda, 0xfb, 0x88, 0xf8, 0x77, 0xf8, + 0x16, 0xf4, 0x13, 0xf6, 0xe5, 0xfc, 0xe2, 0xfd, 0x57, 0x03, 0xb4, 0x05, 0xe4, 0x06, 0x50, 0x05, + 0xd3, 0xff, 0xb3, 0xff, 0xb4, 0x00, 0xd4, 0xfe, 0x1c, 0xfe, 0xa5, 0xfb, 0xd7, 0xf7, 0xce, 0xf3, + 0x95, 0xf0, 0xf8, 0xf2, 0xbd, 0xf7, 0x88, 0xf6, 0xcb, 0xf5, 0x3b, 0xf6, 0xd2, 0xf4, 0xfa, 0xf7, + 0x9d, 0xf6, 0xe4, 0xf6, 0x27, 0xf6, 0x7f, 0xf0, 0xa9, 0xf2, 0x2d, 0xf6, 0xd1, 0xf4, 0x00, 0xf5, + 0xd4, 0xf4, 0x28, 0xf7, 0x6a, 0xf7, 0x30, 0xf7, 0xe1, 0xfd, 0x62, 0x05, 0x58, 0x08, 0xa6, 0x06, + 0xcf, 0x03, 0x93, 0x06, 0x15, 0x04, 0xa5, 0x00, 0x77, 0x02, 0xc0, 0x02, 0x3d, 0x03, 0xaf, 0x00, + 0x35, 0xfd, 0xa9, 0xfd, 0x7c, 0xfb, 0x16, 0xfb, 0x8d, 0xfe, 0xdc, 0xfd, 0x62, 0xfe, 0x32, 0xfc, + 0x44, 0xfa, 0x81, 0xfb, 0x82, 0xfb, 0x02, 0xfe, 0x41, 0xff, 0x8b, 0xfe, 0x4a, 0xfb, 0xb0, 0xf7, + 0xcd, 0xf8, 0xa4, 0xfd, 0xd5, 0xfe, 0x2e, 0x03, 0x83, 0x04, 0x4a, 0x05, 0xdc, 0x05, 0xb9, 0x07, + 0x5d, 0x0b, 0xfd, 0x0b, 0x76, 0x08, 0x46, 0x0b, 0xbd, 0x09, 0xe2, 0x06, 0x0c, 0x03, 0x2f, 0x02, + 0xa6, 0x05, 0xf1, 0x03, 0x00, 0x01, 0x44, 0x00, 0x9f, 0xfd, 0x7d, 0xfd, 0x04, 0xfb, 0xb9, 0xfb, + 0x08, 0xfc, 0x05, 0xf8, 0x49, 0xfb, 0xf1, 0xfc, 0xf8, 0xfa, 0x19, 0xfd, 0xea, 0xfb, 0xe1, 0xfa, + 0x59, 0xfd, 0xcd, 0xfd, 0x52, 0x02, 0x35, 0x07, 0x28, 0x0b, 0xe0, 0x0d, 0xe8, 0x0c, 0x99, 0x0e, + 0x5a, 0x10, 0x19, 0x12, 0xda, 0x13, 0xd1, 0x12, 0x8b, 0x13, 0x1d, 0x15, 0x7f, 0x13, 0x26, 0x12, + 0x60, 0x0d, 0xa9, 0x0d, 0x0f, 0x11, 0x35, 0x12, 0xe5, 0x12, 0xb3, 0x0f, 0xd0, 0x0b, 0x7e, 0x07, + 0x1a, 0x03, 0x88, 0x02, 0xe9, 0x01, 0x1b, 0x01, 0xaf, 0xfe, 0x7f, 0xfc, 0x2f, 0xfc, 0x74, 0xf9, + 0x70, 0xf7, 0xa8, 0xf7, 0x10, 0xfb, 0x31, 0xfe, 0x24, 0xfe, 0x06, 0xff, 0x84, 0x00, 0x5d, 0x02, + 0x33, 0x02, 0x02, 0x00, 0x44, 0xff, 0xf3, 0xfc, 0x29, 0xfe, 0x03, 0xfd, 0x89, 0xfc, 0xa3, 0xfd, + 0xa4, 0xfc, 0x03, 0xfb, 0x37, 0xfd, 0xc7, 0xfe, 0x59, 0x01, 0x5b, 0x03, 0xb9, 0x03, 0xa1, 0x02, + 0x6c, 0x01, 0x44, 0x03, 0xcd, 0x04, 0xa3, 0x03, 0x90, 0x02, 0x91, 0x03, 0x12, 0x02, 0x12, 0xfe, + 0x7a, 0xfa, 0xd5, 0xf9, 0x06, 0xfc, 0x45, 0xfc, 0xaf, 0xfa, 0x4d, 0xfa, 0x44, 0xfc, 0x61, 0xfd, + 0xf8, 0xfc, 0x28, 0xfb, 0x50, 0xfa, 0xed, 0xf8, 0xe6, 0xf6, 0x3a, 0xf5, 0x9a, 0xf4, 0x17, 0xf1, + 0x1c, 0xf1, 0xe7, 0xf2, 0xf9, 0xf5, 0xf6, 0xf6, 0xc3, 0xf6, 0xa7, 0xf7, 0xe7, 0xfa, 0x66, 0xfd, + 0x73, 0xff, 0x8a, 0xff, 0xea, 0x00, 0x2d, 0x00, 0x21, 0xff, 0xae, 0xfe, 0xce, 0x00, 0xec, 0xff, + 0xff, 0xfc, 0x52, 0xfa, 0xbe, 0xfa, 0x16, 0xfd, 0x3b, 0xfd, 0x33, 0xfd, 0x78, 0xfd, 0x45, 0xfe, + 0xf9, 0xfd, 0xc3, 0xfc, 0xad, 0xfc, 0xf7, 0xfc, 0xda, 0xfa, 0x48, 0xf8, 0x39, 0xf5, 0x21, 0xf4, + 0xdf, 0xf2, 0xd1, 0xf3, 0x50, 0xf6, 0x6e, 0xf6, 0x2c, 0xf7, 0x77, 0xf7, 0x3e, 0xf7, 0xf9, 0xf8, + 0x19, 0xfc, 0x28, 0x00, 0x1e, 0x03, 0x44, 0x03, 0x1b, 0x05, 0xb2, 0x04, 0x76, 0x04, 0x2f, 0x05, + 0x37, 0x05, 0x03, 0x05, 0x78, 0x06, 0x18, 0x06, 0x6e, 0x07, 0xeb, 0x06, 0xa4, 0x05, 0x05, 0x06, + 0x87, 0x05, 0x2e, 0x05, 0x68, 0x05, 0x10, 0x04, 0x36, 0x01, 0x58, 0xfe, 0xf4, 0xfe, 0x9e, 0xff, + 0xcb, 0xfd, 0xf9, 0xfa, 0x50, 0xf7, 0x65, 0xf7, 0xa9, 0xf5, 0xeb, 0xf4, 0x8f, 0xf6, 0x30, 0xf8, + 0x68, 0xf6, 0xa0, 0xf5, 0x07, 0xf5, 0xc8, 0xf6, 0x89, 0xf9, 0x2c, 0xfc, 0x88, 0xfe, 0x1f, 0x00, + 0x1a, 0x00, 0xdb, 0xfe, 0x42, 0xff, 0x3a, 0x02, 0x03, 0x06, 0xae, 0x07, 0x00, 0x09, 0x1c, 0x0c, + 0xe6, 0x0f, 0xbf, 0x10, 0x63, 0x0f, 0xda, 0x0c, 0x00, 0x0b, 0x6c, 0x09, 0xa2, 0x09, 0x50, 0x08, + 0xee, 0x06, 0xc7, 0x05, 0x34, 0x04, 0x6c, 0x03, 0xe5, 0x02, 0x86, 0x02, 0x75, 0x02, 0xc9, 0x04, + 0x8f, 0x07, 0xb7, 0x06, 0xbd, 0x05, 0xe7, 0x03, 0x6b, 0x01, 0xaa, 0x03, 0x34, 0x04, 0xc0, 0x05, + 0x7f, 0x04, 0x5e, 0x01, 0xdd, 0x02, 0x22, 0x05, 0x89, 0x05, 0xe5, 0x05, 0xb4, 0x05, 0xee, 0x08, + 0x7f, 0x0b, 0xec, 0x0a, 0x9f, 0x0a, 0xd6, 0x08, 0xe1, 0x05, 0x77, 0x04, 0x43, 0x03, 0x83, 0x00, + 0x2e, 0xfd, 0xd6, 0xfa, 0x92, 0xfb, 0x79, 0xfb, 0x76, 0xfa, 0xf6, 0xfa, 0xfc, 0xfb, 0x7c, 0xfd, + 0x34, 0xfe, 0x51, 0xfe, 0x8f, 0x00, 0xe3, 0x00, 0x4e, 0x01, 0xa6, 0x02, 0x0e, 0x02, 0x38, 0x04, + 0x1f, 0x08, 0x64, 0x06, 0x71, 0x05, 0x60, 0x06, 0x49, 0x09, 0xdf, 0x0c, 0x97, 0x0c, 0xe3, 0x0e, + 0xb7, 0x10, 0x19, 0x13, 0xa8, 0x12, 0xcb, 0x11, 0x7e, 0x10, 0xba, 0x0e, 0x95, 0x0c, 0xff, 0x09, + 0x1b, 0x05, 0xb9, 0x00, 0x05, 0xfb, 0x59, 0xf6, 0x25, 0xf5, 0xf7, 0xf4, 0x42, 0xf4, 0x27, 0xf4, + 0xf5, 0xf1, 0x73, 0xef, 0x0c, 0xef, 0x21, 0xed, 0xf7, 0xee, 0x37, 0xf1, 0x8a, 0xf0, 0x1f, 0xf0, + 0x47, 0xee, 0xfd, 0xec, 0x11, 0xec, 0xeb, 0xec, 0x09, 0xf0, 0x19, 0xf3, 0x63, 0xf6, 0x43, 0xfa, + 0x45, 0xfe, 0xc1, 0x00, 0xe4, 0x02, 0xde, 0x05, 0x3d, 0x07, 0x53, 0x08, 0xc7, 0x08, 0xd1, 0x08, + 0xa9, 0x06, 0x6e, 0x03, 0x1c, 0x00, 0xd4, 0xfe, 0xfc, 0xff, 0xa3, 0x00, 0xf8, 0xfd, 0x7f, 0xfb, + 0x9b, 0xf9, 0x90, 0xf8, 0x43, 0xf5, 0xf9, 0xf2, 0x37, 0xf0, 0x1a, 0xf0, 0xf7, 0xf0, 0xc5, 0xf1, + 0xa2, 0xf1, 0xa5, 0xee, 0x52, 0xe9, 0x67, 0xe8, 0x06, 0xec, 0x0b, 0xef, 0x67, 0xf1, 0x4c, 0xf1, + 0xa5, 0xf3, 0xa1, 0xf8, 0x51, 0xfa, 0xb0, 0xfa, 0x5b, 0xfb, 0x23, 0xfd, 0xc8, 0x00, 0x4c, 0x03, + 0xab, 0x03, 0xdb, 0x02, 0x9f, 0x01, 0x6f, 0x00, 0xe3, 0x02, 0x2c, 0x05, 0xd2, 0x05, 0x94, 0x05, + 0x05, 0x05, 0x03, 0x06, 0x1a, 0x06, 0x35, 0x04, 0xb6, 0x02, 0xb7, 0x03, 0xfb, 0x04, 0xab, 0x02, + 0xd1, 0x01, 0x51, 0x02, 0x56, 0x00, 0xc5, 0xff, 0xd5, 0xfe, 0x81, 0xff, 0xba, 0x00, 0x31, 0x03, + 0xec, 0x03, 0xe5, 0x05, 0xb2, 0x07, 0x57, 0x08, 0xb4, 0x07, 0xb9, 0x06, 0x64, 0x07, 0x4d, 0x06, + 0xeb, 0x04, 0xa1, 0x04, 0xef, 0x05, 0x7d, 0x06, 0x35, 0x07, 0x30, 0x08, 0xc9, 0x08, 0x09, 0x08, + 0x80, 0x09, 0x5f, 0x0b, 0x29, 0x0d, 0x8a, 0x0c, 0xa0, 0x0c, 0x8c, 0x0b, 0x63, 0x09, 0x14, 0x06, + 0x33, 0x06, 0xef, 0x06, 0x48, 0x04, 0x7d, 0x01, 0xa5, 0x00, 0x3a, 0x04, 0xf4, 0x06, 0x76, 0x04, + 0x79, 0x04, 0x76, 0x05, 0xe2, 0x06, 0xab, 0x08, 0xfa, 0x05, 0xde, 0x04, 0xbf, 0x03, 0xfb, 0x00, + 0x5f, 0xfd, 0xfa, 0xfa, 0x0c, 0xfa, 0x57, 0xf9, 0x7e, 0xf9, 0x93, 0xfa, 0x72, 0xfc, 0x35, 0xfd, + 0xa1, 0xfd, 0x25, 0x00, 0x14, 0x03, 0xf9, 0x03, 0x9b, 0x03, 0x9f, 0x03, 0x8b, 0x05, 0x86, 0x06, + 0x2d, 0x07, 0x39, 0x07, 0x8d, 0x06, 0xea, 0x02, 0x23, 0x02, 0x25, 0x05, 0xc5, 0x06, 0x29, 0x07, + 0x79, 0x06, 0x3b, 0x05, 0x34, 0x07, 0x88, 0x08, 0x5b, 0x08, 0x74, 0x07, 0x2d, 0x05, 0xcd, 0x03, + 0xf2, 0x05, 0x1e, 0x05, 0x16, 0x02, 0x84, 0xfe, 0x74, 0xfc, 0x50, 0xfd, 0x4b, 0xfd, 0xf6, 0xfc, + 0x4d, 0xfb, 0x5b, 0xfc, 0x4c, 0xfe, 0x4a, 0xff, 0xc9, 0xfe, 0xc5, 0xfd, 0xd0, 0xfc, 0x7f, 0xfd, + 0x7f, 0xfd, 0x13, 0xfd, 0x30, 0xfb, 0x3b, 0xf8, 0x98, 0xf7, 0x1e, 0xf9, 0x37, 0xf8, 0x3b, 0xf7, + 0xc6, 0xf6, 0x8f, 0xf7, 0x0f, 0xfc, 0x0a, 0xfd, 0x3f, 0xfc, 0x87, 0xf9, 0x01, 0xf8, 0x49, 0xf8, + 0x42, 0xf9, 0x48, 0xfa, 0xae, 0xf9, 0x81, 0xf7, 0x61, 0xf4, 0x8c, 0xf3, 0xef, 0xf5, 0x74, 0xf7, + 0x62, 0xf7, 0x35, 0xfa, 0xc0, 0xfd, 0x63, 0xfe, 0x8d, 0xff, 0xdd, 0x00, 0x2b, 0x02, 0xae, 0x04, + 0x4d, 0x04, 0x70, 0x05, 0xfc, 0x06, 0x58, 0x05, 0x87, 0x04, 0xb5, 0x03, 0x32, 0x02, 0x59, 0x03, + 0x1d, 0x04, 0x77, 0x04, 0xf5, 0x03, 0xff, 0x02, 0x38, 0x02, 0x69, 0xff, 0x46, 0xfb, 0xb9, 0xfa, + 0xe1, 0xf8, 0x94, 0xf7, 0x85, 0xf5, 0xf2, 0xf2, 0x7a, 0xf3, 0x33, 0xf3, 0x88, 0xf3, 0x38, 0xf2, + 0x08, 0xf0, 0xf2, 0xef, 0x7c, 0xf1, 0x35, 0xf2, 0x6f, 0xf2, 0x49, 0xf3, 0xec, 0xf2, 0x44, 0xf3, + 0x04, 0xf5, 0x7a, 0xf6, 0xf7, 0xfa, 0x43, 0xfc, 0x7e, 0xfc, 0x36, 0xfe, 0x73, 0x01, 0x36, 0x05, + 0x63, 0x06, 0xc6, 0x06, 0xf4, 0x08, 0x3d, 0x0c, 0xfb, 0x0d, 0xa3, 0x0d, 0x54, 0x0d, 0x8d, 0x0a, + 0x69, 0x09, 0x67, 0x08, 0xcd, 0x03, 0xdf, 0xff, 0xbe, 0xfc, 0x9e, 0xfa, 0xc6, 0xfa, 0x44, 0xfc, + 0xef, 0xf9, 0xfc, 0xf7, 0xe5, 0xf7, 0x65, 0xf8, 0xe5, 0xf9, 0x33, 0xfa, 0xb2, 0xf9, 0x55, 0xfa, + 0x12, 0xfc, 0xe2, 0xfd, 0x0d, 0xff, 0x07, 0xfe, 0x3b, 0xfd, 0x84, 0xfd, 0x0d, 0x00, 0x1c, 0x05, + 0x13, 0x0b, 0x86, 0x0c, 0xfc, 0x0d, 0x47, 0x11, 0x65, 0x14, 0xaf, 0x13, 0x37, 0x13, 0x50, 0x14, + 0xf0, 0x14, 0x4a, 0x15, 0xfe, 0x11, 0x81, 0x0d, 0xb0, 0x0a, 0x3c, 0x08, 0xbd, 0x06, 0x01, 0x05, + 0xef, 0x03, 0x6e, 0x02, 0xa6, 0x02, 0x9a, 0x01, 0xf7, 0xff, 0x18, 0xff, 0x05, 0xfd, 0x20, 0xfd, + 0xa4, 0xfe, 0xaf, 0xff, 0x12, 0x00, 0xf6, 0xfe, 0xaf, 0xfc, 0x9f, 0xfc, 0x17, 0xfd, 0x41, 0xfe, + 0x3e, 0x01, 0xf0, 0x02, 0xfe, 0x05, 0xfb, 0x0a, 0x9e, 0x0d, 0x56, 0x0e, 0xa6, 0x0d, 0xca, 0x0d, + 0xe8, 0x0e, 0xbf, 0x0e, 0x40, 0x0f, 0x8c, 0x0e, 0x82, 0x0c, 0xeb, 0x09, 0xcc, 0x07, 0xbc, 0x05, + 0x21, 0x04, 0x72, 0x01, 0x3a, 0x00, 0xc7, 0x00, 0xe4, 0x00, 0x47, 0xff, 0x7b, 0xfc, 0x44, 0xfb, + 0x4c, 0xfc, 0x5e, 0xfd, 0x4a, 0xfc, 0x53, 0xf9, 0x50, 0xf7, 0xe7, 0xf4, 0xb3, 0xf2, 0x50, 0xf1, + 0xc4, 0xf0, 0x3d, 0xf1, 0x02, 0xf1, 0xf5, 0xf2, 0x5f, 0xf5, 0x7c, 0xf7, 0xdd, 0xf8, 0x8d, 0xf8, + 0x5c, 0xf9, 0x63, 0xfa, 0x8a, 0xfb, 0x95, 0xfc, 0xbe, 0xfb, 0x72, 0xfc, 0x50, 0xfc, 0x78, 0xfc, + 0xc4, 0xfc, 0x51, 0xfb, 0x7c, 0xfb, 0xf7, 0xfb, 0xf8, 0xfe, 0xc0, 0x01, 0x19, 0x02, 0xca, 0x00, + 0xd0, 0xff, 0xf7, 0xff, 0x06, 0x01, 0x80, 0x01, 0xcc, 0x00, 0x1c, 0xfe, 0xbd, 0xfc, 0xb6, 0xfd, + 0xbe, 0xff, 0x68, 0xff, 0x6d, 0xfe, 0xdb, 0xfe, 0x3f, 0x00, 0xce, 0x02, 0x8b, 0x03, 0x87, 0x01, + 0x48, 0xff, 0xe2, 0xfd, 0xa9, 0xfe, 0x91, 0xfe, 0x24, 0xfc, 0x9e, 0xfa, 0x1c, 0xfa, 0xe1, 0xfa, + 0xc3, 0xfa, 0x59, 0xf7, 0x3e, 0xf5, 0x9f, 0xf6, 0x17, 0xf8, 0xfb, 0xf8, 0xb6, 0xf7, 0xb9, 0xf6, + 0xbc, 0xf6, 0xe6, 0xf6, 0x5a, 0xf5, 0x84, 0xf4, 0x41, 0xf4, 0x98, 0xf3, 0x15, 0xf4, 0xa5, 0xf4, + 0x25, 0xf7, 0xae, 0xf9, 0x73, 0xfa, 0xc0, 0xfc, 0x1d, 0x00, 0x3e, 0x03, 0x6d, 0x05, 0xe8, 0x05, + 0x33, 0x07, 0xa7, 0x08, 0xe3, 0x0a, 0x84, 0x0a, 0x49, 0x09, 0x70, 0x08, 0x7d, 0x08, 0x55, 0x09, + 0xc7, 0x08, 0x43, 0x09, 0x53, 0x09, 0x09, 0x0a, 0xa5, 0x0a, 0x94, 0x0a, 0x43, 0x0b, 0x62, 0x0a, + 0x43, 0x09, 0x26, 0x09, 0xbe, 0x08, 0x88, 0x06, 0x59, 0x03, 0x86, 0x00, 0xf2, 0xfb, 0x67, 0xfa, + 0x22, 0xfa, 0x3f, 0xf9, 0xca, 0xf7, 0x83, 0xf8, 0x5f, 0xfb, 0x45, 0xff, 0x5b, 0xff, 0x24, 0xfd, + 0xee, 0xfb, 0x89, 0xfb, 0x8e, 0xfc, 0x54, 0xfe, 0x44, 0xfe, 0x51, 0xfc, 0x18, 0xfb, 0x09, 0xfa, + 0xbd, 0xfa, 0x5d, 0xfb, 0xec, 0xfa, 0x43, 0xfd, 0x16, 0x02, 0x78, 0x05, 0x70, 0x08, 0x64, 0x09, + 0x77, 0x09, 0xc7, 0x0a, 0xa9, 0x0b, 0xc6, 0x0c, 0x23, 0x0d, 0x99, 0x0d, 0xf0, 0x0a, 0x3c, 0x08, + 0xc5, 0x07, 0x06, 0x08, 0x41, 0x08, 0x4c, 0x08, 0x13, 0x08, 0x5d, 0x09, 0x20, 0x09, 0x9f, 0x07, + 0x1c, 0x05, 0x5e, 0x02, 0x91, 0xff, 0xbd, 0xfe, 0xff, 0xfd, 0x4d, 0xfc, 0xc9, 0xfa, 0xc5, 0xf9, + 0x85, 0xf8, 0xdb, 0xf8, 0x5f, 0xf7, 0x71, 0xf5, 0xb2, 0xf5, 0x16, 0xf9, 0x97, 0xfd, 0x88, 0x00, + 0x82, 0x00, 0x13, 0x01, 0x69, 0x04, 0xef, 0x06, 0xbd, 0x07, 0x59, 0x07, 0xc8, 0x05, 0xf8, 0x05, + 0x99, 0x07, 0x37, 0x08, 0x53, 0x08, 0xb2, 0x06, 0x31, 0x06, 0x2c, 0x07, 0x5f, 0x07, 0x67, 0x06, + 0x52, 0x05, 0x92, 0x03, 0x10, 0x01, 0xf3, 0xff, 0x20, 0xfd, 0x1e, 0xfa, 0xe7, 0xf7, 0xc2, 0xf6, + 0x41, 0xf6, 0xfe, 0xf4, 0x69, 0xf2, 0xea, 0xf0, 0x0e, 0xf1, 0x9c, 0xf3, 0xfd, 0xf4, 0x7a, 0xf4, + 0xd3, 0xf3, 0xa9, 0xf5, 0x63, 0xf9, 0xb8, 0xfb, 0xe5, 0xfb, 0x60, 0xfe, 0xe9, 0xff, 0xdd, 0xfe, + 0xe0, 0xff, 0x49, 0x02, 0xa2, 0x04, 0xfa, 0x05, 0x0f, 0x07, 0x40, 0x09, 0x05, 0x0c, 0x83, 0x0b, + 0x44, 0x0a, 0x9b, 0x08, 0x73, 0x06, 0x24, 0x05, 0x2c, 0x04, 0xde, 0x00, 0xcb, 0xfc, 0xca, 0xf9, + 0x53, 0xf8, 0xbd, 0xf7, 0x7e, 0xf6, 0x21, 0xf5, 0x34, 0xf5, 0x09, 0xf6, 0x34, 0xf6, 0x3e, 0xf5, + 0x4d, 0xf2, 0x63, 0xf0, 0xea, 0xf1, 0x5b, 0xf2, 0xcc, 0xf1, 0x28, 0xf2, 0x15, 0xf1, 0x11, 0xf1, + 0x8c, 0xf1, 0xbf, 0xf3, 0xfe, 0xf7, 0x06, 0xfb, 0x45, 0xfd, 0x23, 0x00, 0x35, 0x02, 0x0c, 0x06, + 0xa5, 0x07, 0xa8, 0x07, 0x72, 0x07, 0x93, 0x07, 0x14, 0x0a, 0x3e, 0x0b, 0x3d, 0x09, 0x1f, 0x05, + 0xc6, 0x01, 0xbd, 0xff, 0xf3, 0xff, 0x09, 0xff, 0xf1, 0xff, 0xa5, 0x01, 0x4b, 0x03, 0xa4, 0x04, + 0xd3, 0x04, 0xc4, 0x04, 0xf3, 0x04, 0xeb, 0x03, 0xff, 0x01, 0xeb, 0x01, 0x1d, 0x02, 0x8a, 0x00, + 0x04, 0xff, 0x11, 0xfe, 0xbf, 0xfd, 0x55, 0xfd, 0x19, 0xfe, 0x18, 0xff, 0x1c, 0x02, 0xa5, 0x05, + 0x1d, 0x06, 0xde, 0x05, 0x4c, 0x04, 0x4f, 0x04, 0xa2, 0x04, 0xc6, 0x01, 0xe3, 0xfe, 0x88, 0xfc, + 0x5a, 0xfa, 0xe4, 0xf8, 0xc6, 0xf6, 0x2b, 0xf4, 0x7c, 0xf2, 0xc1, 0xf4, 0x03, 0xf9, 0xb7, 0xfd, + 0x0f, 0x00, 0x1c, 0x01, 0xb9, 0x02, 0xed, 0x02, 0x73, 0x03, 0x64, 0x02, 0x6d, 0x02, 0x42, 0x03, + 0x99, 0x03, 0xd1, 0x04, 0x36, 0x06, 0xfb, 0x05, 0xaf, 0x06, 0x80, 0x08, 0xa5, 0x0c, 0x24, 0x10, + 0xfc, 0x11, 0xff, 0x12, 0xac, 0x13, 0x9e, 0x12, 0x08, 0x10, 0x68, 0x0d, 0x0e, 0x09, 0x28, 0x05, + 0x17, 0x03, 0x4c, 0x00, 0xc4, 0xfe, 0xae, 0xfa, 0xad, 0xf6, 0x01, 0xf6, 0x34, 0xf6, 0x89, 0xf8, + 0x5b, 0xf9, 0x3a, 0xfa, 0x82, 0xfc, 0xd5, 0xfd, 0xa2, 0xff, 0xbd, 0xff, 0x0c, 0xff, 0x30, 0xfe, + 0xe0, 0xfc, 0xa3, 0xfc, 0x12, 0xfd, 0x85, 0xff, 0x17, 0x01, 0x87, 0x03, 0xb7, 0x07, 0x1e, 0x09, + 0xfd, 0x08, 0xe1, 0x08, 0x1e, 0x0a, 0x6f, 0x0a, 0x6c, 0x09, 0xfd, 0x07, 0xa5, 0x07, 0xfc, 0x06, + 0x1c, 0x05, 0x1d, 0x02, 0x72, 0xff, 0x17, 0xfe, 0x39, 0xfd, 0x6a, 0xfb, 0xd3, 0xfa, 0x00, 0xfa, + 0x5f, 0xfa, 0xc5, 0xfb, 0xad, 0xfc, 0x69, 0xfd, 0x4e, 0xfe, 0x51, 0xfe, 0x09, 0xfe, 0x22, 0xfe, + 0xb1, 0xfc, 0xf2, 0xfa, 0x48, 0xfa, 0x6f, 0xfa, 0x88, 0xfb, 0xec, 0xfd, 0x97, 0xff, 0xb0, 0x01, + 0x50, 0x04, 0xb7, 0x05, 0xcc, 0x05, 0xb3, 0x04, 0x16, 0x04, 0x43, 0x04, 0xe7, 0x02, 0x61, 0x00, + 0x14, 0xff, 0xa2, 0xfd, 0xdc, 0xfc, 0x6c, 0xfc, 0x49, 0xfa, 0x31, 0xf8, 0x21, 0xf9, 0x7f, 0xfb, + 0x18, 0xfd, 0x67, 0xfc, 0x9f, 0xfb, 0x89, 0xfb, 0x2c, 0xfc, 0x2b, 0xfc, 0x05, 0xfc, 0x54, 0xfb, + 0x85, 0xfb, 0x90, 0xfa, 0x26, 0xf9, 0x59, 0xf8, 0x02, 0xf8, 0xd5, 0xf9, 0x7f, 0xfb, 0xa8, 0xfc, + 0x3f, 0xff, 0x3c, 0xff, 0x1f, 0xff, 0x71, 0xff, 0xf7, 0xfe, 0xf3, 0xfe, 0x73, 0xfe, 0x9d, 0xfd, + 0x1c, 0xfd, 0xd3, 0xfc, 0xb1, 0xfb, 0xe7, 0xfb, 0x38, 0xfb, 0x89, 0xf8, 0x4b, 0xf9, 0xd6, 0xfb, + 0xb3, 0xfe, 0x80, 0x00, 0x55, 0xff, 0x9d, 0xff, 0x5d, 0x01, 0x95, 0x03, 0x86, 0x04, 0x4b, 0x04, + 0x1a, 0x04, 0x06, 0x04, 0x62, 0x05, 0x1f, 0x06, 0xef, 0x06, 0xa4, 0x06, 0x7f, 0x05, 0xbc, 0x04, + 0x3b, 0x06, 0xfb, 0x06, 0xcb, 0x07, 0x6a, 0x07, 0x30, 0x05, 0x1f, 0x04, 0x46, 0x02, 0x50, 0xff, + 0x74, 0xfd, 0xd9, 0xfb, 0x4b, 0xfa, 0x6b, 0xf8, 0xe9, 0xf5, 0x32, 0xf3, 0xd9, 0xf1, 0xcf, 0xf0, + 0xc1, 0xef, 0x99, 0xf0, 0xb6, 0xf1, 0x23, 0xf4, 0x10, 0xf7, 0x15, 0xf9, 0x2c, 0xf9, 0xb7, 0xf9, + 0x34, 0xfc, 0x36, 0xfd, 0x58, 0xfe, 0xf6, 0xff, 0x07, 0x01, 0x12, 0x05, 0xbb, 0x07, 0xc6, 0x09, + 0x2e, 0x0c, 0x9b, 0x0e, 0x41, 0x11, 0x7e, 0x12, 0x29, 0x13, 0x5b, 0x12, 0xa2, 0x10, 0x9a, 0x0f, + 0xd4, 0x0d, 0xc1, 0x0b, 0xe2, 0x08, 0x18, 0x07, 0x93, 0x07, 0x78, 0x06, 0xca, 0x04, 0x7e, 0x03, + 0xef, 0x01, 0xee, 0xff, 0xf6, 0xfd, 0xf6, 0xfa, 0xa2, 0xf9, 0x4d, 0xfa, 0x45, 0xfa, 0xea, 0xfa, + 0xc4, 0xfa, 0xd9, 0xf9, 0x91, 0xf8, 0xa0, 0xf6, 0x38, 0xf5, 0xd3, 0xf5, 0x64, 0xf7, 0x04, 0xfa, + 0xf2, 0xfc, 0x28, 0xff, 0x2f, 0x00, 0xb4, 0xff, 0x47, 0xff, 0x69, 0x01, 0x46, 0x03, 0x41, 0x04, + 0x66, 0x03, 0x79, 0x02, 0x78, 0x01, 0xce, 0x00, 0x2c, 0x01, 0xb6, 0xff, 0xd5, 0xfe, 0x81, 0x01, + 0xef, 0x03, 0x05, 0x05, 0x55, 0x06, 0x3e, 0x06, 0xc5, 0x05, 0x94, 0x06, 0xb4, 0x06, 0x93, 0x07, + 0xe7, 0x08, 0x21, 0x09, 0x87, 0x09, 0x38, 0x07, 0xe0, 0x05, 0x48, 0x05, 0x6d, 0x05, 0x0b, 0x06, + 0x6a, 0x06, 0xfc, 0x08, 0x4d, 0x09, 0xba, 0x09, 0x86, 0x08, 0x6d, 0x06, 0x81, 0x05, 0x9c, 0x03, + 0x2f, 0x02, 0xc4, 0x01, 0x81, 0x00, 0xa9, 0x00, 0x27, 0x01, 0xb1, 0xff, 0x73, 0xfc, 0xff, 0xfa, + 0xeb, 0xfb, 0xb0, 0xfe, 0x5a, 0xff, 0xef, 0xfe, 0x4c, 0xff, 0x5c, 0x00, 0x3e, 0x01, 0x2d, 0x00, + 0xee, 0xfe, 0x74, 0xff, 0xf7, 0xfe, 0x55, 0xfd, 0xb0, 0xfb, 0x03, 0xfb, 0x09, 0xfb, 0x9a, 0xfc, + 0xb1, 0xfd, 0xa4, 0xfe, 0xf2, 0xff, 0xce, 0x00, 0x8a, 0x02, 0x61, 0x02, 0x31, 0x01, 0x7e, 0xfe, + 0x4e, 0xfc, 0xaf, 0xfb, 0xca, 0xfb, 0x75, 0xfc, 0xcb, 0xfb, 0x23, 0xfa, 0x1a, 0xf8, 0x0f, 0xf7, + 0xda, 0xf6, 0x86, 0xf6, 0xef, 0xf4, 0x9e, 0xf4, 0x4b, 0xf5, 0xd5, 0xf6, 0x73, 0xf8, 0x45, 0xf9, + 0x8b, 0xf8, 0x01, 0xf8, 0x33, 0xf7, 0x7d, 0xf6, 0x72, 0xf5, 0x78, 0xf4, 0x34, 0xf5, 0xe4, 0xf5, + 0x95, 0xf6, 0x3c, 0xf9, 0x59, 0xfa, 0x93, 0xfc, 0x73, 0xfe, 0xa8, 0x00, 0xf1, 0x01, 0x10, 0x01, + 0xa9, 0x00, 0xc6, 0xff, 0x97, 0xfe, 0xec, 0xfd, 0x06, 0xfe, 0x73, 0xfe, 0x21, 0xfe, 0xae, 0xfd, + 0xa0, 0xfd, 0x0c, 0xfd, 0xd1, 0xfc, 0x15, 0xfc, 0xaf, 0xfa, 0xa1, 0xfa, 0x34, 0xfd, 0xb8, 0xfe, + 0xf4, 0xfe, 0x90, 0xfe, 0x56, 0xfd, 0xf5, 0xfc, 0xbd, 0xfc, 0x7b, 0xfb, 0xcb, 0xfa, 0xb0, 0xfb, + 0x59, 0xfc, 0x9c, 0xff, 0x8c, 0x02, 0x7b, 0x03, 0x6b, 0x04, 0x25, 0x05, 0xaf, 0x06, 0xf1, 0x07, + 0xdc, 0x08, 0xc2, 0x07, 0x97, 0x06, 0x55, 0x05, 0x43, 0x04, 0x69, 0x05, 0xc3, 0x04, 0xf8, 0x04, + 0xf1, 0x05, 0x83, 0x07, 0x26, 0x08, 0xa8, 0x07, 0x6a, 0x08, 0x7b, 0x07, 0xda, 0x06, 0xef, 0x06, + 0x32, 0x06, 0x24, 0x06, 0xe7, 0x05, 0x74, 0x05, 0x06, 0x04, 0xff, 0x00, 0x44, 0xff, 0x4d, 0xfe, + 0xe4, 0xfe, 0x67, 0xff, 0xff, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x9d, 0x00, 0xbf, 0xff, 0x30, 0xfd, + 0xfc, 0xfa, 0xd4, 0xf9, 0x78, 0xf9, 0x87, 0xfa, 0xc2, 0xfa, 0x46, 0xfa, 0x8d, 0xf9, 0xee, 0xf7, + 0x97, 0xf8, 0x97, 0xfa, 0x70, 0xfc, 0xbd, 0xfe, 0x65, 0x00, 0xf5, 0x01, 0x03, 0x05, 0xf8, 0x06, + 0x4e, 0x06, 0x00, 0x07, 0xbd, 0x09, 0xe4, 0x0a, 0x06, 0x0c, 0xde, 0x0a, 0xbc, 0x0a, 0x4a, 0x0b, + 0xa7, 0x0b, 0x6e, 0x0c, 0x23, 0x0d, 0x95, 0x0d, 0x00, 0x0e, 0x83, 0x0e, 0xa5, 0x0d, 0x26, 0x0c, + 0x9d, 0x0a, 0x17, 0x08, 0x89, 0x05, 0xad, 0x02, 0x65, 0x00, 0x1a, 0xfe, 0x8f, 0xfc, 0x7b, 0xfa, + 0xc4, 0xf8, 0x85, 0xf8, 0xb7, 0xf7, 0x0e, 0xf7, 0xd4, 0xf7, 0x35, 0xf8, 0x66, 0xf9, 0xff, 0xfb, + 0xce, 0xfc, 0xdd, 0xfb, 0xe9, 0xfb, 0x2c, 0xfd, 0xb5, 0xfc, 0x70, 0xfc, 0xb8, 0xfc, 0x8d, 0xfd, + 0x32, 0xff, 0x91, 0x00, 0x21, 0x03, 0xc6, 0x04, 0xb0, 0x04, 0x64, 0x06, 0x02, 0x08, 0x40, 0x07, + 0x8d, 0x07, 0xe8, 0x07, 0x24, 0x06, 0x77, 0x04, 0xb0, 0x02, 0x5b, 0x00, 0x4e, 0xff, 0xd0, 0xfd, + 0x5f, 0xfb, 0x32, 0xfa, 0x6c, 0xf9, 0xb9, 0xf9, 0x46, 0xfa, 0xc4, 0xf9, 0x32, 0xf9, 0xa1, 0xf8, + 0x53, 0xf9, 0x21, 0xfa, 0x7d, 0xfa, 0x5a, 0xfa, 0x01, 0xfa, 0xa6, 0xf8, 0x0d, 0xf7, 0x80, 0xf6, + 0x8c, 0xf7, 0xe2, 0xf8, 0x4a, 0xfb, 0xb4, 0xfc, 0x51, 0xfc, 0xf2, 0xfb, 0x35, 0xfc, 0x6e, 0xfd, + 0x25, 0xfd, 0xc3, 0xfd, 0x39, 0xfd, 0xef, 0xfc, 0x41, 0xfd, 0x76, 0xfc, 0x27, 0xfb, 0x5c, 0xf9, + 0xa6, 0xf8, 0xd5, 0xf9, 0xdc, 0xf9, 0x28, 0xf9, 0x25, 0xf8, 0x17, 0xf7, 0x13, 0xf7, 0x33, 0xf8, + 0xdd, 0xf8, 0x19, 0xf8, 0xd9, 0xf8, 0x0c, 0xfa, 0x7f, 0xfb, 0xa3, 0xfb, 0x67, 0xf9, 0x96, 0xf7, + 0x4d, 0xf8, 0x3e, 0xfa, 0x03, 0xfd, 0x0a, 0xff, 0xe5, 0xff, 0xb7, 0x01, 0x25, 0x03, 0x72, 0x03, + 0x0d, 0x03, 0xfa, 0x01, 0xcc, 0x00, 0x2b, 0x01, 0x7e, 0x01, 0x3a, 0x01, 0x4d, 0x00, 0xb3, 0xff, + 0x9a, 0xfe, 0x5a, 0xfe, 0xd2, 0xfd, 0x24, 0xff, 0x4e, 0x01, 0x5e, 0x02, 0xc8, 0x02, 0xa4, 0x03, + 0x49, 0x05, 0x93, 0x05, 0x8d, 0x04, 0xfe, 0x04, 0xa1, 0x05, 0xe0, 0x05, 0x54, 0x05, 0x2f, 0x04, + 0x2e, 0x03, 0xe8, 0x02, 0xb2, 0x02, 0x4f, 0x03, 0x81, 0x04, 0x3e, 0x06, 0xa7, 0x07, 0x3a, 0x08, + 0x68, 0x07, 0x4a, 0x06, 0xb2, 0x04, 0xc9, 0x02, 0x47, 0x01, 0x1b, 0x00, 0x14, 0x00, 0x43, 0xff, + 0x1b, 0xfe, 0x20, 0xfd, 0xc7, 0xfc, 0xf9, 0xfb, 0x4a, 0xfb, 0xca, 0xfb, 0xbc, 0xfb, 0x05, 0xfd, + 0x72, 0xff, 0x50, 0x00, 0x4f, 0x00, 0x96, 0x00, 0x66, 0x01, 0xbe, 0x01, 0x39, 0x01, 0x0b, 0x02, + 0x16, 0x03, 0xa0, 0x05, 0x8d, 0x08, 0x21, 0x0a, 0x67, 0x0b, 0x7e, 0x0d, 0x70, 0x0f, 0x22, 0x11, + 0xac, 0x11, 0x8f, 0x11, 0xc3, 0x11, 0xd7, 0x10, 0xb0, 0x0f, 0x77, 0x0e, 0x6a, 0x0c, 0x15, 0x0b, + 0xb0, 0x0a, 0xb9, 0x09, 0xe8, 0x07, 0x0e, 0x07, 0x01, 0x05, 0x4d, 0x03, 0xa8, 0x01, 0x0a, 0x00, + 0x28, 0x01, 0x29, 0x01, 0x92, 0xff, 0x2f, 0xfe, 0x13, 0xfd, 0x6c, 0xfb, 0xb6, 0xf8, 0x55, 0xf5, + 0x9d, 0xf1, 0x0e, 0xf1, 0x14, 0xf2, 0xc3, 0xf4, 0x92, 0xf6, 0xc7, 0xf6, 0xb9, 0xf7, 0xe5, 0xf9, + 0xcc, 0xfb, 0x00, 0xfe, 0xa9, 0xfe, 0xa5, 0xff, 0x9a, 0x00, 0xca, 0x01, 0x64, 0x02, 0xbf, 0x02, + 0x40, 0x03, 0xcf, 0x02, 0xd3, 0x03, 0xae, 0x04, 0x5d, 0x05, 0x5a, 0x06, 0x95, 0x06, 0xab, 0x07, + 0x9d, 0x07, 0xb8, 0x07, 0xeb, 0x06, 0x3a, 0x06, 0xda, 0x06, 0xa5, 0x06, 0xc7, 0x04, 0x67, 0x02, + 0x1d, 0xff, 0x2d, 0xfd, 0x9d, 0xfc, 0x6f, 0xfc, 0x1c, 0xfc, 0x55, 0xfb, 0x8f, 0xfb, 0xd2, 0xfb, + 0x3e, 0xfb, 0xd0, 0xf9, 0xe9, 0xf7, 0x68, 0xf5, 0xf4, 0xf3, 0xa4, 0xf4, 0xb5, 0xf4, 0xe2, 0xf3, + 0xab, 0xf3, 0x10, 0xf3, 0xce, 0xf1, 0xb5, 0xf1, 0xa5, 0xf2, 0x77, 0xf5, 0x04, 0xf7, 0x6e, 0xf8, + 0x13, 0xfa, 0x72, 0xfb, 0x30, 0xfc, 0xbd, 0xfb, 0x91, 0xfc, 0x45, 0xfd, 0x69, 0xfd, 0x41, 0xfe, + 0x57, 0xfe, 0x9b, 0xfe, 0xa4, 0xff, 0xfd, 0x00, 0x07, 0x02, 0x75, 0x03, 0xe3, 0x04, 0x66, 0x06, + 0x70, 0x07, 0xb8, 0x06, 0x27, 0x06, 0x9f, 0x04, 0xab, 0x02, 0x66, 0x03, 0x4d, 0x02, 0xe8, 0x00, + 0xa3, 0xfe, 0xd5, 0xfc, 0x47, 0xfc, 0xfe, 0xfa, 0x74, 0xfb, 0x11, 0xfa, 0x6d, 0xf9, 0xf8, 0xfa, + 0x28, 0xfc, 0x3c, 0xfe, 0x62, 0xff, 0x49, 0xfe, 0x13, 0xfe, 0x54, 0xfe, 0xd2, 0xfe, 0xc9, 0xff, + 0x17, 0xfe, 0xcb, 0xfd, 0x5b, 0xff, 0x8f, 0x00, 0x96, 0x02, 0x0d, 0x03, 0x6c, 0x03, 0x56, 0x04, + 0xfe, 0x05, 0xf7, 0x06, 0x15, 0x06, 0x56, 0x05, 0x05, 0x04, 0xa0, 0x02, 0x4c, 0x00, 0xde, 0xfd, + 0x31, 0xfc, 0x47, 0xfb, 0x39, 0xfa, 0x58, 0xf9, 0xfb, 0xf9, 0x89, 0xfa, 0x15, 0xfa, 0xd6, 0xf9, + 0x03, 0xfa, 0x3a, 0xfb, 0xe9, 0xfc, 0x00, 0xfe, 0xe3, 0xfe, 0x2a, 0xff, 0xba, 0x00, 0x78, 0x01, + 0x51, 0x01, 0x24, 0xff, 0xe0, 0xff, 0x52, 0x02, 0x79, 0x04, 0xb7, 0x06, 0x42, 0x07, 0x5c, 0x07, + 0x13, 0x09, 0xee, 0x08, 0x73, 0x09, 0x45, 0x09, 0x53, 0x08, 0x9a, 0x08, 0xce, 0x08, 0x42, 0x08, + 0x9f, 0x05, 0xb9, 0x03, 0x21, 0x02, 0x42, 0x01, 0x14, 0x01, 0xa9, 0x00, 0x0d, 0x01, 0x39, 0x01, + 0x22, 0x01, 0x0b, 0x01, 0x29, 0x01, 0x45, 0x01, 0xaa, 0x01, 0x18, 0x03, 0x69, 0x03, 0xfc, 0x02, + 0xe2, 0x01, 0x1d, 0xff, 0x9f, 0xfd, 0x0d, 0xfe, 0xe9, 0xfe, 0xb8, 0x00, 0xa6, 0x01, 0x3d, 0x02, + 0x2f, 0x04, 0xf6, 0x04, 0xf2, 0x04, 0x8a, 0x03, 0x17, 0x01, 0x41, 0x00, 0xd1, 0x00, 0x5c, 0x01, + 0xc3, 0x01, 0x60, 0x01, 0x69, 0x01, 0x07, 0x00, 0xb5, 0xfe, 0xe5, 0xfe, 0x11, 0xff, 0x01, 0x00, + 0x55, 0x01, 0xc2, 0x02, 0x99, 0x03, 0x89, 0x04, 0xdc, 0x03, 0xe2, 0x03, 0x9f, 0x04, 0x9f, 0x04, + 0xd8, 0x05, 0x75, 0x04, 0x7a, 0x03, 0xb0, 0x03, 0x0d, 0x03, 0x84, 0x03, 0x57, 0x03, 0xd6, 0x03, + 0xae, 0x04, 0xcf, 0x05, 0x8b, 0x06, 0x73, 0x04, 0x8e, 0x01, 0x56, 0xfe, 0x2e, 0xfd, 0xd0, 0xfb, + 0x14, 0xfa, 0x6a, 0xf9, 0xe1, 0xf8, 0x75, 0xf8, 0xbe, 0xf7, 0x55, 0xf7, 0x75, 0xf5, 0x71, 0xf3, + 0x71, 0xf3, 0x90, 0xf4, 0xf7, 0xf5, 0xb6, 0xf6, 0x81, 0xf6, 0x9a, 0xf5, 0x04, 0xf6, 0x22, 0xf7, + 0x5e, 0xf8, 0x42, 0xf8, 0x2c, 0xf8, 0xf6, 0xf9, 0xd6, 0xfb, 0x11, 0xff, 0xa6, 0x00, 0x65, 0x02, + 0x18, 0x05, 0xa9, 0x07, 0xb1, 0x0a, 0xa5, 0x0b, 0xe2, 0x0b, 0x62, 0x0c, 0x4f, 0x0b, 0xdc, 0x0a, + 0x47, 0x09, 0x08, 0x08, 0xab, 0x07, 0x04, 0x06, 0x83, 0x04, 0x68, 0x03, 0xa3, 0x01, 0x1e, 0xff, + 0xc5, 0xfe, 0x44, 0xfd, 0x8a, 0xfc, 0xea, 0xfc, 0x75, 0xfc, 0xef, 0xfb, 0x8b, 0xf9, 0xce, 0xf8, + 0x5f, 0xf8, 0x22, 0xf6, 0xa6, 0xf3, 0x41, 0xf2, 0x81, 0xf3, 0x67, 0xf5, 0x00, 0xf7, 0x1d, 0xf8, + 0x90, 0xf9, 0xc6, 0xfb, 0x58, 0xfd, 0xc2, 0xfd, 0xb3, 0xfe, 0xbc, 0xfe, 0x96, 0xff, 0x40, 0x01, + 0x00, 0x02, 0x00, 0x01, 0x81, 0xff, 0x1e, 0xff, 0x70, 0xff, 0xd9, 0xff, 0x77, 0xff, 0x26, 0x00, + 0xb1, 0x00, 0x35, 0x01, 0x16, 0x01, 0x18, 0x01, 0xcc, 0x01, 0xa1, 0x01, 0xdd, 0x01, 0x11, 0x03, + 0xcc, 0x03, 0xaf, 0x01, 0xbe, 0xfe, 0x16, 0xfc, 0x04, 0xfc, 0xef, 0xfb, 0x2d, 0xfc, 0x05, 0xfe, + 0x22, 0xfe, 0xa6, 0xff, 0x95, 0x01, 0x27, 0x02, 0x0d, 0x01, 0xe4, 0xfe, 0x95, 0xfe, 0xd2, 0xff, + 0x10, 0x01, 0x65, 0x00, 0x2e, 0x00, 0x3f, 0x00, 0xbd, 0xfe, 0x08, 0xfe, 0x3d, 0xfe, 0x87, 0xff, + 0x4d, 0x00, 0x5d, 0x00, 0x55, 0x02, 0x8e, 0x03, 0x63, 0x04, 0xbb, 0x03, 0x1e, 0x03, 0x06, 0x05, + 0xd5, 0x04, 0xf1, 0x04, 0x8f, 0x04, 0xd4, 0x03, 0xe0, 0x01, 0x60, 0xff, 0xa9, 0xff, 0x4e, 0x00, + 0x62, 0xff, 0xc7, 0xfe, 0x89, 0x00, 0xed, 0x02, 0x23, 0x01, 0x59, 0xff, 0xc5, 0xfe, 0xe7, 0xfe, + 0xca, 0xfe, 0x5a, 0xfd, 0x80, 0xfd, 0xe2, 0xfd, 0x42, 0xfd, 0x5b, 0xfd, 0xc9, 0xfe, 0xca, 0xfe, + 0x41, 0xfd, 0x5d, 0xfe, 0xf6, 0x00, 0xa4, 0x03, 0x83, 0x04, 0x32, 0x04, 0x4f, 0x05, 0x45, 0x06, + 0x09, 0x05, 0x2c, 0x05, 0xf9, 0x05, 0xf9, 0x04, 0x8f, 0x04, 0x3c, 0x05, 0x94, 0x06, 0x6e, 0x07, + 0x4c, 0x06, 0xe2, 0x05, 0xe5, 0x07, 0x43, 0x09, 0x18, 0x08, 0x7f, 0x07, 0x69, 0x06, 0xd3, 0x05, + 0x56, 0x04, 0x49, 0x01, 0xd6, 0xff, 0xf0, 0xfe, 0xdc, 0xfd, 0x15, 0xfd, 0x2d, 0xfd, 0xd4, 0xfc, + 0x51, 0xfc, 0xe7, 0xfb, 0xaa, 0xfb, 0xac, 0xfb, 0xac, 0xfc, 0xe0, 0xfd, 0xdc, 0xfd, 0x02, 0xfe, + 0xba, 0xfe, 0x73, 0xfe, 0x11, 0xfd, 0x19, 0xfa, 0xd3, 0xf8, 0x8b, 0xf9, 0x65, 0xfa, 0xd1, 0xfb, + 0x44, 0xfd, 0x16, 0xfe, 0xaa, 0xfe, 0x52, 0x00, 0xa2, 0x00, 0x96, 0x00, 0xe8, 0xff, 0x9b, 0xff, + 0x63, 0x01, 0x6e, 0x01, 0x3a, 0x00, 0x05, 0xff, 0x40, 0xfe, 0xb0, 0xfe, 0xab, 0xff, 0x3b, 0xff, + 0xcc, 0xff, 0x71, 0x01, 0x61, 0x03, 0xed, 0x03, 0x01, 0x05, 0xf3, 0x05, 0xd6, 0x05, 0x7c, 0x06, + 0xac, 0x06, 0x71, 0x07, 0x51, 0x06, 0x14, 0x04, 0x88, 0x01, 0xa2, 0xff, 0x7e, 0xfe, 0xe5, 0xfd, + 0x1b, 0xfe, 0x30, 0xfe, 0x4e, 0xff, 0xe8, 0x00, 0x06, 0x01, 0x54, 0xff, 0xc9, 0xfb, 0x1f, 0xfa, + 0xba, 0xf9, 0x16, 0xf9, 0xc2, 0xf8, 0x0b, 0xf7, 0x13, 0xf7, 0x41, 0xf5, 0x53, 0xf3, 0x12, 0xf3, + 0x7e, 0xf2, 0x44, 0xf4, 0xc8, 0xf6, 0x31, 0xf9, 0x88, 0xfb, 0xc2, 0xfc, 0x20, 0xfe, 0x1b, 0xff, + 0x77, 0x01, 0x2e, 0x02, 0x07, 0x03, 0x8b, 0x04, 0x11, 0x05, 0x04, 0x05, 0x0f, 0x04, 0x25, 0x05, + 0x67, 0x06, 0xc4, 0x05, 0x6e, 0x06, 0xd3, 0x07, 0x69, 0x09, 0x51, 0x08, 0xd3, 0x05, 0x28, 0x03, + 0x87, 0x01, 0xd5, 0x00, 0xfc, 0xfe, 0x47, 0xfd, 0xe4, 0xfb, 0x1a, 0xfb, 0x6f, 0xf9, 0x54, 0xf8, + 0xb7, 0xf5, 0xa6, 0xf3, 0x52, 0xf3, 0xf5, 0xf3, 0x9e, 0xf6, 0xbb, 0xf6, 0x77, 0xf7, 0x72, 0xf8, + 0x79, 0xf9, 0x74, 0xfa, 0x63, 0xfa, 0xd3, 0xfa, 0xdc, 0xfa, 0x09, 0xfb, 0x08, 0xfd, 0x9c, 0xfe, + 0xd3, 0x00, 0x34, 0x01, 0x51, 0x02, 0x7d, 0x04, 0xf5, 0x06, 0xa9, 0x07, 0x21, 0x08, 0xee, 0x08, + 0x0b, 0x08, 0x3c, 0x07, 0x3a, 0x05, 0x60, 0x04, 0x73, 0x04, 0xd5, 0x03, 0x08, 0x04, 0x5c, 0x03, + 0x6e, 0x02, 0x80, 0x01, 0x1a, 0x00, 0xee, 0xff, 0xf6, 0xff, 0x7a, 0x00, 0x3c, 0x01, 0xf2, 0x00, + 0xe2, 0x01, 0x8d, 0x02, 0x2b, 0x02, 0xbe, 0x01, 0x27, 0x00, 0xe2, 0xfe, 0x61, 0xfe, 0x79, 0xff, + 0x4b, 0x01, 0xad, 0x02, 0x36, 0x03, 0x25, 0x04, 0xcf, 0x05, 0x67, 0x06, 0x76, 0x06, 0xf1, 0x05, + 0xc9, 0x06, 0x29, 0x07, 0xd6, 0x06, 0xbe, 0x05, 0xe0, 0x03, 0xab, 0x02, 0x31, 0x02, 0xac, 0x01, + 0xa1, 0x01, 0x22, 0x02, 0x13, 0x02, 0x6d, 0x02, 0x45, 0x02, 0x8f, 0x01, 0xab, 0x00, 0x69, 0xff, + 0xbd, 0xff, 0x39, 0x00, 0x5d, 0xff, 0x6c, 0xff, 0x74, 0xfd, 0x39, 0xfb, 0x94, 0xfa, 0x5e, 0xfa, + 0xb9, 0xfa, 0x98, 0xfb, 0x1a, 0xfd, 0x54, 0xfe, 0x5c, 0x01, 0x0e, 0x03, 0xeb, 0x02, 0x7f, 0x02, + 0xda, 0x01, 0x43, 0x02, 0x7e, 0x02, 0xc0, 0x02, 0x78, 0x02, 0xb9, 0x02, 0xe4, 0x02, 0xbb, 0x01, + 0x1c, 0x01, 0xaa, 0x00, 0x62, 0x01, 0x95, 0x02, 0x75, 0x03, 0x38, 0x05, 0xef, 0x05, 0x57, 0x06, + 0xe9, 0x06, 0x63, 0x06, 0xd8, 0x05, 0xa2, 0x04, 0x74, 0x04, 0xfc, 0x03, 0x99, 0x01, 0x73, 0x00, + 0x8d, 0xff, 0x19, 0xff, 0x26, 0xff, 0x7f, 0xfe, 0x4d, 0xff, 0x4f, 0x01, 0x23, 0x01, 0xf3, 0xff, + 0x2c, 0xfe, 0x94, 0xfd, 0x19, 0xfd, 0xe6, 0xfb, 0x95, 0xfa, 0xf1, 0xf9, 0x39, 0xfa, 0x03, 0xfa, + 0xa1, 0xf9, 0x53, 0xf8, 0x93, 0xf6, 0xce, 0xf6, 0xb0, 0xf7, 0x7e, 0xf9, 0x95, 0xfb, 0xd0, 0xfc, + 0x0d, 0xfd, 0xba, 0xfd, 0x73, 0xfe, 0x9d, 0xfe, 0x00, 0xff, 0xfc, 0xfe, 0xe5, 0xfe, 0x5d, 0xff, + 0x44, 0xff, 0x3f, 0x00, 0xff, 0x00, 0x4d, 0x01, 0xc4, 0x02, 0x0e, 0x04, 0x9b, 0x05, 0xff, 0x05, + 0x9b, 0x06, 0xee, 0x06, 0x4d, 0x06, 0xdf, 0x05, 0x62, 0x04, 0x37, 0x04, 0x16, 0x04, 0x95, 0x03, + 0x95, 0x02, 0x02, 0x01, 0xc3, 0xff, 0x59, 0xff, 0xa9, 0xfe, 0xd8, 0xfe, 0x71, 0xfe, 0x18, 0xfe, + 0x04, 0xfd, 0x1e, 0xfd, 0x75, 0xfd, 0x05, 0xfc, 0x74, 0xfb, 0x0a, 0xfa, 0x23, 0xf7, 0xe5, 0xf5, + 0x54, 0xf5, 0x74, 0xf5, 0x38, 0xf6, 0x2f, 0xf6, 0xfb, 0xf6, 0x27, 0xf8, 0x42, 0xf8, 0xd1, 0xf7, + 0xcf, 0xf7, 0xd9, 0xf7, 0x39, 0xf9, 0xc4, 0xfb, 0x3b, 0xfc, 0x3b, 0xfc, 0x2f, 0xfd, 0x45, 0xfd, + 0x53, 0xfe, 0xa8, 0xff, 0x47, 0x01, 0x62, 0x03, 0xff, 0x04, 0x56, 0x06, 0x50, 0x07, 0x08, 0x08, + 0xea, 0x07, 0xf6, 0x08, 0x3f, 0x0a, 0x16, 0x0a, 0x26, 0x09, 0xf5, 0x07, 0x70, 0x06, 0x43, 0x03, + 0xf8, 0x00, 0x32, 0x00, 0xe3, 0xfe, 0xcd, 0xfe, 0xb8, 0xfe, 0xd9, 0xff, 0x7c, 0x00, 0x86, 0xfe, + 0xe1, 0xfc, 0x03, 0xfa, 0x12, 0xf9, 0x0e, 0xf9, 0xe8, 0xf8, 0x8f, 0xf8, 0x91, 0xf8, 0xbd, 0xf8, + 0xcd, 0xf7, 0x05, 0xf7, 0x04, 0xf7, 0xf0, 0xf7, 0x5e, 0xfa, 0x54, 0xfd, 0x71, 0xff, 0x94, 0x00, + 0x8f, 0x02, 0x31, 0x04, 0x8d, 0x05, 0x9d, 0x05, 0x64, 0x05, 0x76, 0x06, 0xf7, 0x05, 0x11, 0x05, + 0x43, 0x04, 0xbb, 0x03, 0x3e, 0x03, 0xd6, 0x02, 0x7c, 0x02, 0xd9, 0x02, 0x98, 0x04, 0x7a, 0x05, + 0x0f, 0x06, 0xa2, 0x04, 0x8b, 0x02, 0x39, 0x01, 0x20, 0xff, 0x35, 0xfd, 0xb6, 0xfc, 0x91, 0xfd, + 0x9e, 0xfe, 0x66, 0xfe, 0x94, 0xfd, 0xc1, 0xfb, 0x3a, 0xfb, 0x8d, 0xfc, 0xaa, 0xfe, 0x03, 0x01, + 0x45, 0x02, 0x4d, 0x03, 0x48, 0x04, 0x13, 0x05, 0x3e, 0x05, 0x84, 0x05, 0x40, 0x06, 0xed, 0x04, + 0xcb, 0x04, 0xd9, 0x04, 0x33, 0x05, 0xb2, 0x05, 0x76, 0x05, 0xce, 0x06, 0x54, 0x07, 0x8a, 0x07, + 0xca, 0x07, 0x2c, 0x08, 0x1c, 0x08, 0xf8, 0x06, 0xdd, 0x05, 0x5b, 0x03, 0x50, 0x01, 0xd1, 0x00, + 0xee, 0xff, 0x80, 0xff, 0x9d, 0xfe, 0xb0, 0xfc, 0xe7, 0xfb, 0x37, 0xfb, 0xea, 0xfa, 0x0b, 0xfb, + 0x9d, 0xfb, 0xdf, 0xfd, 0x9c, 0xff, 0x96, 0xff, 0x9b, 0xff, 0x7a, 0xff, 0x52, 0xff, 0x3a, 0xfe, + 0x67, 0xfd, 0x06, 0xfe, 0xb2, 0xfe, 0xb0, 0xff, 0x62, 0x00, 0x74, 0x01, 0x79, 0x02, 0xd0, 0x02, + 0x48, 0x03, 0xa3, 0x02, 0xcb, 0x02, 0xcc, 0x03, 0x78, 0x04, 0x21, 0x05, 0x71, 0x04, 0x3f, 0x04, + 0x4f, 0x03, 0xce, 0x02, 0x77, 0x02, 0xeb, 0x01, 0x21, 0x02, 0xa3, 0x02, 0x60, 0x03, 0xb6, 0x02, + 0xfb, 0x01, 0xf9, 0x00, 0xb4, 0x00, 0x7e, 0x01, 0x02, 0x01, 0xea, 0x00, 0x3c, 0x00, 0xb5, 0xfe, + 0xd8, 0xfc, 0x43, 0xfb, 0xb7, 0xf9, 0xbc, 0xf8, 0xde, 0xf8, 0x33, 0xf9, 0x62, 0xfa, 0x68, 0xfb, + 0x17, 0xfb, 0xbb, 0xfa, 0x83, 0xf9, 0xfd, 0xf8, 0x50, 0xf9, 0xeb, 0xf7, 0x5d, 0xf8, 0xb6, 0xf9, + 0x39, 0xfa, 0x41, 0xfa, 0x74, 0xf9, 0xf5, 0xf8, 0x1f, 0xf9, 0xdf, 0xf9, 0x46, 0xfc, 0x96, 0xfe, + 0xf1, 0xff, 0x7d, 0x01, 0x22, 0x02, 0xc6, 0x02, 0x71, 0x02, 0x19, 0x02, 0x7b, 0x03, 0x48, 0x04, + 0xfb, 0x03, 0x12, 0x03, 0x08, 0x02, 0x7a, 0x01, 0x92, 0x01, 0x2b, 0x02, 0x2e, 0x03, 0x09, 0x05, + 0xbf, 0x05, 0x43, 0x04, 0x2f, 0x03, 0xc8, 0x01, 0xcc, 0x00, 0xa1, 0xff, 0x16, 0xfe, 0xaa, 0xfc, + 0xb3, 0xfb, 0x8c, 0xfb, 0xd4, 0xfa, 0xdd, 0xf9, 0x50, 0xf7, 0xdb, 0xf5, 0xd6, 0xf7, 0x90, 0xf8, + 0xb9, 0xf9, 0xb2, 0xfa, 0x66, 0xfb, 0xe8, 0xfc, 0x8e, 0xfc, 0x74, 0xfb, 0x84, 0xfb, 0xc6, 0xfb, + 0x5b, 0xfb, 0xb4, 0xfa, 0xcb, 0xfa, 0x19, 0xfb, 0x2c, 0xfc, 0x19, 0xfd, 0x0d, 0xfe, 0x4b, 0xff, + 0x25, 0x01, 0x15, 0x03, 0x10, 0x04, 0x96, 0x05, 0xf4, 0x05, 0xec, 0x05, 0xda, 0x05, 0x3d, 0x05, + 0xdb, 0x05, 0x8c, 0x05, 0x7c, 0x05, 0xa7, 0x05, 0x10, 0x05, 0x58, 0x04, 0x02, 0x05, 0xb9, 0x04, + 0x6d, 0x03, 0xc6, 0x02, 0xf9, 0x02, 0xe2, 0x04, 0x3a, 0x05, 0x64, 0x05, 0xdd, 0x04, 0x0f, 0x03, + 0xa3, 0x00, 0x89, 0xfd, 0x39, 0xfc, 0xbc, 0xfa, 0x0b, 0xfb, 0x85, 0xfb, 0x53, 0xfb, 0xa5, 0xfa, + 0xd8, 0xfa, 0xd5, 0xfa, 0x8b, 0xfb, 0xe6, 0xfb, 0xcd, 0xfc, 0x35, 0xfe, 0x0f, 0xff, 0x3e, 0xff, + 0x32, 0x00, 0xc4, 0xff, 0x90, 0x00, 0x66, 0x02, 0x53, 0x01, 0xd1, 0x02, 0x78, 0x04, 0xda, 0x05, + 0x4c, 0x06, 0x7d, 0x06, 0x35, 0x07, 0x97, 0x07, 0xe3, 0x08, 0x4e, 0x09, 0xe2, 0x08, 0x7f, 0x08, + 0x37, 0x07, 0xfd, 0x04, 0xa9, 0x02, 0xe6, 0xff, 0x6b, 0xfd, 0x96, 0xfd, 0x0f, 0xfe, 0x64, 0xfe, + 0xdb, 0xfe, 0x20, 0xff, 0xc0, 0xfe, 0xf2, 0xfd, 0x23, 0xfd, 0x79, 0xfc, 0xcd, 0xfc, 0x18, 0xfd, + 0xae, 0xfd, 0x63, 0xfe, 0x7b, 0xfe, 0xd1, 0xfe, 0x9e, 0xff, 0x31, 0x00, 0x43, 0x01, 0xb6, 0x02, + 0x4d, 0x04, 0x78, 0x05, 0x13, 0x07, 0xc3, 0x07, 0x4c, 0x08, 0x1a, 0x07, 0x08, 0x06, 0xed, 0x06, + 0x27, 0x07, 0x26, 0x06, 0xc4, 0x04, 0x44, 0x02, 0xe0, 0x00, 0x6d, 0xff, 0x3f, 0xfe, 0x9f, 0xfd, + 0xf8, 0xfd, 0x0a, 0xfe, 0xac, 0xfc, 0x2a, 0xfb, 0xe1, 0xf9, 0x85, 0xf9, 0x67, 0xf8, 0x4d, 0xf7, + 0xeb, 0xf6, 0x28, 0xf7, 0xf8, 0xf7, 0xe3, 0xf8, 0xdd, 0xf8, 0x2f, 0xf8, 0xe3, 0xf7, 0xcc, 0xf8, + 0x88, 0xfa, 0x7b, 0xfc, 0x90, 0xfe, 0x56, 0x00, 0x90, 0x02, 0xc1, 0x03, 0x72, 0x03, 0xe2, 0x02, + 0x24, 0x03, 0x41, 0x03, 0x08, 0x03, 0xa1, 0x02, 0x04, 0x01, 0x49, 0x01, 0xfa, 0x01, 0xb2, 0x01, + 0xb9, 0x01, 0xe3, 0x01, 0xd8, 0x02, 0x6a, 0x04, 0xe7, 0x04, 0x35, 0x04, 0xb7, 0x03, 0x98, 0x01, + 0xe4, 0xff, 0x66, 0xff, 0x7f, 0xff, 0x0a, 0x00, 0x16, 0xff, 0x2b, 0xfe, 0xf1, 0xfd, 0x26, 0xfe, + 0x1b, 0xfe, 0x7f, 0xfd, 0x2a, 0xfe, 0x84, 0xfe, 0x24, 0x00, 0xd2, 0x00, 0xcc, 0x00, 0x90, 0xff, + 0x17, 0xfe, 0x06, 0xfd, 0x26, 0xfb, 0xc3, 0xf9, 0xa6, 0xf8, 0x7d, 0xf9, 0x06, 0xfb, 0x30, 0xfb, + 0x80, 0xfb, 0xad, 0xfb, 0x80, 0xfc, 0xc1, 0xfc, 0x58, 0xfd, 0x2f, 0xfe, 0xe1, 0xfe, 0x5d, 0x00, + 0x6e, 0x00, 0x92, 0x00, 0xb1, 0x00, 0x0d, 0x01, 0x81, 0x01, 0x77, 0x01, 0xd3, 0x01, 0x8d, 0x02, + 0x7b, 0x03, 0x4d, 0x04, 0x56, 0x04, 0x2e, 0x04, 0xf8, 0x04, 0x79, 0x06, 0x71, 0x07, 0x24, 0x07, + 0xc8, 0x06, 0x58, 0x06, 0x4f, 0x05, 0xd5, 0x02, 0x4c, 0xff, 0x6c, 0xfd, 0xfb, 0xfc, 0xec, 0xfc, + 0x27, 0xfd, 0xdc, 0xfc, 0x9d, 0xfc, 0xa8, 0xfc, 0x13, 0xfc, 0x7b, 0xfb, 0x89, 0xfa, 0x10, 0xfb, + 0x11, 0xfb, 0xef, 0xfb, 0xbc, 0xfb, 0x30, 0xfc, 0x65, 0xfb, 0x9d, 0xfb, 0xdf, 0xfb, 0x2b, 0xfd, + 0x40, 0xfe, 0xa7, 0xfe, 0xef, 0xff, 0xde, 0x01, 0x48, 0x03, 0xbe, 0x03, 0x08, 0x05, 0x6b, 0x05, + 0x40, 0x06, 0x79, 0x07, 0x4a, 0x07, 0xbd, 0x05, 0x9a, 0x04, 0xc8, 0x03, 0x2d, 0x04, 0x1d, 0x04, + 0x0c, 0x04, 0xe5, 0x03, 0x4a, 0x04, 0xa0, 0x04, 0xf4, 0x03, 0xa4, 0x02, 0x77, 0x01, 0xfc, 0x00, + 0xcf, 0xff, 0x32, 0xff, 0x26, 0xff, 0xfb, 0xfe, 0x49, 0xfe, 0xdd, 0xfc, 0x9a, 0xfb, 0x93, 0xfa, + 0xc0, 0xfa, 0x4c, 0xfb, 0x46, 0xfb, 0x5c, 0xfc, 0x47, 0xfc, 0x98, 0xfd, 0x72, 0xfe, 0xce, 0xfd, + 0xe1, 0xfd, 0x60, 0xfe, 0x8f, 0xff, 0x33, 0xff, 0x41, 0xfe, 0x30, 0xfd, 0xe7, 0xfd, 0x54, 0xff, + 0x92, 0x00, 0x32, 0x01, 0x96, 0x01, 0x36, 0x03, 0x5a, 0x04, 0x60, 0x05, 0x6f, 0x05, 0x65, 0x04, + 0x5a, 0x03, 0x72, 0x03, 0x5e, 0x03, 0x7b, 0x04, 0xf2, 0x03, 0xd1, 0x02, 0xf4, 0x02, 0x38, 0x02, + 0x45, 0x01, 0x61, 0x01, 0xc5, 0x00, 0x25, 0x01, 0x53, 0x02, 0x63, 0x00, 0x13, 0x04, 0xe9, 0x00, + 0xbd, 0xfd, 0x81, 0xfd, 0xad, 0xfc, 0x67, 0xfb, 0xeb, 0xfb, 0x21, 0xfc, 0xd5, 0xfa, 0x02, 0xfa, + 0x06, 0xfa, 0x2a, 0xfb, 0x21, 0xfb, 0x2f, 0xfb, 0x1f, 0xfd, 0xa1, 0xff, 0x3f, 0x00, 0xda, 0x01, + 0x84, 0x01, 0x11, 0x02, 0x5d, 0x03, 0x4f, 0x03, 0xcb, 0x04, 0x62, 0x05, 0xbc, 0x06, 0xc0, 0x05, + 0x7b, 0x06, 0x8d, 0x06, 0x21, 0x05, 0xea, 0x06, 0x3f, 0x07, 0xbb, 0x07, 0xeb, 0x08, 0xf5, 0x09, + 0xce, 0x07, 0x8e, 0x05, 0x2c, 0x05, 0x5b, 0x02, 0xa8, 0xfe, 0xb5, 0xfc, 0xaf, 0xfa, 0xd8, 0xf9, + 0x57, 0xf8, 0xba, 0xf8, 0x34, 0xf8, 0xb5, 0xf7, 0xe0, 0xf8, 0xe8, 0xf8, 0x23, 0xf9, 0xdc, 0xf9, + 0x53, 0xfa, 0xa4, 0xfa, 0x6b, 0xfc, 0x08, 0xfd, 0x05, 0xfe, 0xb1, 0xff, 0xbd, 0xff, 0x9b, 0xfe, + 0xf5, 0xfe, 0x16, 0x00, 0x81, 0x01, 0xcd, 0x03, 0xb5, 0x04, 0x5a, 0x04, 0x89, 0x05, 0x36, 0x08, + 0x61, 0x07, 0xfb, 0x05, 0xf3, 0x06, 0x4e, 0x05, 0xc8, 0x03, 0x4a, 0x03, 0x39, 0x00, 0x84, 0xfd, + 0xb1, 0xfd, 0xa8, 0xfd, 0x6b, 0xfc, 0x88, 0xfb, 0x63, 0xf9, 0xda, 0xf8, 0x64, 0xf8, 0x02, 0xf8, + 0x3c, 0xf8, 0x0e, 0xf9, 0xb5, 0xf9, 0x97, 0xf9, 0x02, 0xfb, 0x1d, 0xfa, 0x1d, 0xfb, 0x29, 0xfc, + 0x40, 0xfa, 0x1d, 0xfb, 0xb3, 0xfc, 0x03, 0xfd, 0x59, 0xfe, 0xe9, 0xff, 0xa9, 0x00, 0x32, 0x00, + 0x6f, 0x02, 0x85, 0x02, 0x2c, 0x04, 0xc2, 0x04, 0x66, 0x03, 0x58, 0x02, 0x1a, 0x00, 0x72, 0xff, + 0xd5, 0xfc, 0x11, 0xfe, 0x7a, 0xff, 0x46, 0xff, 0xc5, 0x00, 0x51, 0x00, 0x2a, 0xfe, 0xe7, 0xfe, + 0x79, 0x00, 0xf7, 0xfd, 0x28, 0xfe, 0x25, 0x00, 0x5a, 0xff, 0xe4, 0xfe, 0x2c, 0x00, 0x43, 0xff, + 0xd1, 0xfe, 0x92, 0xfe, 0x68, 0xfd, 0xf2, 0xfd, 0xdc, 0xfe, 0x59, 0xff, 0xc9, 0xff, 0xf2, 0xff, + 0x5a, 0xff, 0x51, 0xff, 0xa4, 0x00, 0x01, 0x01, 0x6f, 0xfd, 0x51, 0xfc, 0xdb, 0xfc, 0xd6, 0xfb, + 0x36, 0xfd, 0x82, 0xfe, 0x69, 0xfd, 0x9f, 0xfd, 0x3a, 0xff, 0x9b, 0xff, 0xea, 0xfe, 0x32, 0xff, + 0x44, 0x00, 0x53, 0xff, 0x3e, 0xff, 0x56, 0x01, 0xbe, 0x02, 0x71, 0x03, 0xc4, 0x03, 0xd1, 0x02, + 0x42, 0x03, 0x53, 0x04, 0x58, 0x05, 0x4a, 0x05, 0x7f, 0x05, 0xe1, 0x05, 0x2c, 0x07, 0xa8, 0x08, + 0xa2, 0x07, 0xb9, 0x06, 0x8c, 0x06, 0x2a, 0x04, 0xd6, 0x01, 0x95, 0x00, 0xe0, 0xff, 0x6e, 0xfe, + 0x18, 0xff, 0x85, 0xfe, 0x8c, 0xfb, 0x7a, 0xfb, 0x4d, 0xfc, 0x22, 0xfc, 0x39, 0xfd, 0x6a, 0xfd, + 0x7d, 0xfc, 0x7b, 0xfd, 0xf3, 0xfe, 0x0d, 0xfe, 0xe2, 0xfd, 0x68, 0xfe, 0xd6, 0xfd, 0xe2, 0xfd, + 0x63, 0xff, 0x5b, 0x00, 0x51, 0x02, 0x52, 0x03, 0x47, 0x02, 0x91, 0x03, 0x63, 0x07, 0x8d, 0x08, + 0x28, 0x09, 0x32, 0x0b, 0x4c, 0x0b, 0x85, 0x0b, 0x2f, 0x0d, 0x5c, 0x0b, 0x82, 0x07, 0xaf, 0x04, + 0x80, 0x02, 0x14, 0x00, 0x95, 0xff, 0x80, 0xff, 0x7b, 0xff, 0xe0, 0xff, 0x7a, 0xfe, 0x66, 0xfe, + 0xa5, 0xfd, 0xc1, 0xfc, 0xb0, 0xfc, 0x59, 0xfd, 0x98, 0xfd, 0xa8, 0xfe, 0x29, 0xff, 0xc7, 0xfe, + 0x30, 0xfe, 0xf8, 0xfc, 0x1b, 0xfd, 0xf5, 0xfc, 0x1c, 0xfe, 0x0b, 0xfe, 0x04, 0x01, 0x29, 0x04, + 0x6d, 0x04, 0xfa, 0x04, 0x65, 0x04, 0x20, 0x04, 0x59, 0x07, 0xa5, 0x07, 0x1c, 0x05, 0xf5, 0x04, + 0x51, 0x04, 0x91, 0x04, 0xfa, 0x02, 0x21, 0x00, 0xce, 0xff, 0xb2, 0xff, 0x8e, 0xfe, 0x84, 0xfe, + 0xd7, 0xff, 0x56, 0xff, 0x30, 0xff, 0x7e, 0xfd, 0x4e, 0xfc, 0x1f, 0xfc, 0x82, 0xfc, 0xae, 0xfc, + 0xfb, 0xfa, 0x1c, 0xfa, 0xda, 0xf9, 0x24, 0xfa, 0x40, 0xf8, 0xb6, 0xf7, 0x11, 0xfa, 0xea, 0xf8, + 0x1b, 0xf9, 0x49, 0xfa, 0x1a, 0xf9, 0x84, 0xf9, 0x6a, 0xfa, 0x35, 0xfa, 0xa6, 0xf8, 0x01, 0xf8, + 0xad, 0xf8, 0x06, 0xf8, 0x26, 0xf7, 0xb4, 0xf5, 0x28, 0xf7, 0x7d, 0xf8, 0xe4, 0xf9, 0x34, 0xfa, + 0x90, 0xf9, 0xd7, 0xf9, 0xeb, 0xf9, 0x97, 0xfa, 0xc0, 0xfb, 0xa9, 0xfc, 0x57, 0xfd, 0x7b, 0xff, + 0x29, 0x00, 0x44, 0x00, 0x1f, 0x00, 0x80, 0xff, 0x99, 0xff, 0x53, 0xff, 0x3f, 0x00, 0x31, 0x01, + 0x4f, 0x03, 0x0b, 0x05, 0x9a, 0x03, 0x17, 0x02, 0x06, 0x02, 0x28, 0x02, 0x4e, 0x01, 0xd7, 0xfe, + 0x0c, 0xfd, 0xb2, 0xfc, 0x92, 0xfc, 0x96, 0xfb, 0x10, 0xfc, 0x7a, 0xfe, 0x2e, 0xfe, 0xaf, 0xfe, + 0x03, 0xff, 0x88, 0xfe, 0x8f, 0x00, 0xe5, 0x01, 0xb5, 0x01, 0x5f, 0x02, 0xdc, 0x02, 0x1c, 0x03, + 0x4c, 0x05, 0x71, 0x05, 0xa1, 0x05, 0xe6, 0x05, 0x76, 0x06, 0x72, 0x08, 0xb5, 0x09, 0xcf, 0x0a, + 0x66, 0x0c, 0x9d, 0x10, 0xea, 0x09, 0x3b, 0x09, 0x69, 0x0c, 0x13, 0x0a, 0x06, 0x09, 0x5b, 0x09, + 0xcb, 0x04, 0xe2, 0x02, 0x6e, 0x02, 0xf9, 0x02, 0xc2, 0x02, 0x03, 0x01, 0x9d, 0x00, 0x5f, 0x01, + 0xa6, 0x03, 0x20, 0x02, 0x18, 0x01, 0x71, 0x02, 0xac, 0x02, 0xc4, 0x00, 0xe5, 0xff, 0xc5, 0x00, + 0x47, 0x02, 0x74, 0x02, 0x35, 0x02, 0x5a, 0x00, 0x39, 0x01, 0x87, 0x01, 0x4c, 0x01, 0x42, 0x02, + 0x62, 0x00, 0x93, 0x03, 0xd5, 0x05, 0xac, 0x03, 0xc2, 0x03, 0x6f, 0x03, 0x36, 0x03, 0xd5, 0x00, + 0x56, 0xff, 0xae, 0xff, 0x0f, 0x00, 0x46, 0xff, 0x54, 0xff, 0x17, 0xfd, 0x9b, 0xfc, 0x8f, 0xfd, + 0x40, 0xff, 0x4d, 0x01, 0x75, 0x03, 0x08, 0x02, 0x1d, 0x00, 0xa5, 0x01, 0xfe, 0x01, 0xb5, 0x01, + 0x1b, 0x02, 0xea, 0x03, 0x15, 0x01, 0x14, 0xff, 0x23, 0x01, 0xa7, 0xfe, 0x19, 0xfe, 0x0b, 0xff, + 0xbd, 0xff, 0xbc, 0x02, 0x5b, 0x03, 0x7b, 0x03, 0xf5, 0x00, 0x18, 0x01, 0xb5, 0xff, 0xba, 0xfc, + 0x0c, 0xfd, 0x74, 0xfd, 0x10, 0xfc, 0x51, 0xfb, 0xf3, 0xf7, 0x34, 0xf5, 0xfa, 0xf3, 0x3e, 0xf5, + 0x3a, 0xf6, 0x7a, 0xf8, 0x72, 0xf6, 0xab, 0xf3, 0x8d, 0xf7, 0x9d, 0xf8, 0xc0, 0xf9, 0x84, 0xfa, + 0x6b, 0xfe, 0xa9, 0x02, 0x10, 0xff, 0x34, 0x01, 0xb6, 0x01, 0x18, 0x01, 0xdc, 0x00, 0x06, 0x00, + 0x82, 0x02, 0x89, 0x03, 0x50, 0x04, 0x3c, 0x06, 0x3d, 0x03, 0x46, 0xff, 0xab, 0x00, 0x30, 0x01, + 0x01, 0xff, 0xd9, 0xfe, 0xe3, 0xfe, 0x31, 0xfc, 0xb6, 0xf9, 0x83, 0xf9, 0x11, 0xf8, 0x90, 0xf6, + 0xe1, 0xf7, 0x1f, 0xf8, 0xee, 0xf8, 0xbd, 0xf7, 0xbf, 0xf8, 0x7a, 0xfa, 0xfa, 0xf9, 0xd1, 0xfa, + 0x97, 0xf9, 0x21, 0xfc, 0x29, 0xff, 0x5d, 0x00, 0x8e, 0x00, 0xc2, 0x00, 0x3b, 0x02, 0x4e, 0x03, + 0x4d, 0x05, 0x82, 0x07, 0x04, 0x08, 0xc3, 0x08, 0x5c, 0x0a, 0x57, 0x08, 0x92, 0x06, 0xe4, 0x05, + 0x19, 0x05, 0x25, 0x05, 0xa2, 0x03, 0xb3, 0x00, 0x8c, 0xff, 0x5a, 0xff, 0xa7, 0xfb, 0x05, 0xfb, + 0x48, 0xfc, 0x01, 0xfa, 0x9c, 0xf9, 0xe8, 0xf9, 0x77, 0xf9, 0x1a, 0xfa, 0x9e, 0xfa, 0x90, 0xf9, + 0x95, 0xf7, 0x1c, 0xf9, 0x98, 0xfa, 0xcc, 0xf8, 0xdb, 0xf9, 0xda, 0xf7, 0xc1, 0xf8, 0xd0, 0xf9, + 0x0f, 0xfc, 0x57, 0x00, 0xc3, 0x00, 0x41, 0x04, 0x14, 0x07, 0x63, 0x05, 0xa2, 0x04, 0x6f, 0x05, + 0x13, 0x05, 0x11, 0x04, 0x62, 0x04, 0x91, 0x04, 0xa1, 0x02, 0x4c, 0x02, 0xd4, 0x01, 0x0c, 0x04, + 0xa2, 0x05, 0x18, 0x06, 0x97, 0x06, 0x58, 0x03, 0xcf, 0x01, 0x6c, 0x01, 0xf6, 0x00, 0x04, 0x04, + 0x5d, 0x04, 0xed, 0x02, 0x91, 0x03, 0x47, 0x04, 0xe0, 0x01, 0x33, 0xfd, 0x67, 0xfb, 0x0e, 0xfc, + 0x87, 0xfc, 0x4f, 0xfc, 0x49, 0xff, 0xee, 0xff, 0xcc, 0x00, 0x85, 0x01, 0xc0, 0xff, 0x2c, 0x00, + 0xd9, 0x02, 0xd7, 0x05, 0x09, 0x05, 0xb1, 0x03, 0x7c, 0x03, 0x46, 0x04, 0x85, 0x05, 0x51, 0x06, + 0x7f, 0x04, 0x0f, 0x05, 0x85, 0x07, 0xd0, 0x06, 0xb2, 0x02, 0xac, 0x02, 0x33, 0x09, 0x74, 0x0d, + 0x8a, 0x0a, 0x18, 0x0b, 0x24, 0x0c, 0xb8, 0x0d, 0x22, 0x0d, 0xf1, 0x08, 0xb4, 0x09, 0x3b, 0x08, + 0x57, 0x0a, 0x0b, 0x0b, 0xe0, 0x07, 0x50, 0x07, 0x55, 0x05, 0xa6, 0x04, 0xaa, 0xff, 0xbc, 0xf8, + 0x7d, 0xf5, 0x90, 0xf3, 0xc6, 0xee, 0xb5, 0xea, 0x3b, 0xeb, 0xd7, 0xec, 0xd0, 0xed, 0xb4, 0xec, + 0x6f, 0xec, 0x3f, 0xec, 0x38, 0xed, 0x2c, 0xed, 0x44, 0xed, 0x06, 0xef, 0xff, 0xf1, 0xd0, 0xf7, + 0xad, 0xfd, 0xa7, 0x01, 0x90, 0x05, 0xdd, 0x09, 0x62, 0x0f, 0xf0, 0x11, 0x60, 0x11, 0x1a, 0x10, + 0x96, 0x11, 0x25, 0x16, 0x61, 0x1b, 0xae, 0x1d, 0xcc, 0x1d, 0x3b, 0x1c, 0x1f, 0x1a, 0xde, 0x17, + 0x9f, 0x14, 0x39, 0x10, 0x10, 0x10, 0x3e, 0x10, 0xc1, 0x0b, 0x1d, 0x0b, 0x9e, 0x07, 0xa4, 0x04, + 0x84, 0x02, 0x20, 0xf9, 0x89, 0xf9, 0x24, 0xf9, 0xd9, 0xf5, 0x39, 0xf6, 0x5a, 0xf6, 0xe2, 0xf3, + 0xd1, 0xf0, 0x38, 0xef, 0x4b, 0xed, 0xab, 0xe8, 0xd3, 0xe4, 0xa4, 0xe4, 0xdd, 0xe3, 0xf8, 0xe0, + 0x36, 0xe1, 0xe8, 0xe2, 0xc7, 0xe2, 0x00, 0xe5, 0xab, 0xe5, 0x7a, 0xe5, 0xc5, 0xe5, 0x59, 0xe6, + 0xaf, 0xe8, 0x69, 0xeb, 0x7f, 0xee, 0xbc, 0xef, 0x01, 0xf2, 0x7f, 0xf1, 0xc7, 0xf3, 0x21, 0xf5, + 0x45, 0xf3, 0x29, 0xf6, 0xb9, 0xf8, 0x6f, 0xfb, 0x59, 0xfa, 0x7c, 0xfb, 0x95, 0xfb, 0xe4, 0xfc, + 0x89, 0xfd, 0x1d, 0xff, 0x5c, 0x01, 0xbb, 0x06, 0x1a, 0x0d, 0x24, 0x12, 0x19, 0x15, 0x1f, 0x1a, + 0x3b, 0x1e, 0x2e, 0x1d, 0x86, 0x1b, 0x62, 0x1b, 0x5a, 0x1e, 0xfa, 0x1c, 0x64, 0x1a, 0x43, 0x12, + 0xea, 0x0f, 0x58, 0x07, 0x8a, 0xff, 0xc0, 0xfb, 0xb2, 0xf8, 0x26, 0xf7, 0xc8, 0xef, 0x71, 0xf0, + 0x8e, 0xf1, 0x61, 0xf1, 0x2a, 0xf0, 0xaa, 0xf4, 0x0f, 0xf3, 0x9f, 0xf1, 0xdf, 0xf3, 0x3b, 0xf5, + 0xca, 0xf7, 0x53, 0xfe, 0x96, 0x04, 0xdf, 0x03, 0x93, 0x08, 0x0f, 0x10, 0xc4, 0x10, 0xa0, 0x0d, + 0x31, 0x11, 0x04, 0x15, 0xdb, 0x17, 0x84, 0x19, 0x60, 0x1a, 0xf8, 0x19, 0xc0, 0x18, 0xf0, 0x17, + 0x5c, 0x12, 0x5d, 0x10, 0x25, 0x13, 0xda, 0x17, 0x55, 0x1a, 0xdd, 0x1e, 0x8a, 0x1f, 0x15, 0x1b, + 0x84, 0x17, 0xfb, 0x11, 0x33, 0x0d, 0x47, 0x08, 0xb0, 0x03, 0xb2, 0x00, 0x9f, 0x00, 0xe4, 0xff, + 0x50, 0xfe, 0x56, 0xf7, 0x61, 0xf4, 0x11, 0xf1, 0x81, 0xec, 0x69, 0xec, 0xa5, 0xeb, 0x6c, 0xe9, + 0xed, 0xe7, 0x9f, 0xeb, 0xf6, 0xec, 0xb7, 0xec, 0x18, 0xea, 0xf9, 0xe9, 0x7d, 0xe8, 0xc9, 0xe9, + 0xec, 0xed, 0xc8, 0xf3, 0x89, 0xf9, 0x4e, 0xff, 0xe6, 0x02, 0x9c, 0x05, 0xe6, 0x06, 0x6f, 0x06, + 0x8d, 0x05, 0x1b, 0x06, 0xc9, 0x08, 0xe3, 0x08, 0x5d, 0x08, 0x5d, 0x06, 0xf8, 0x04, 0x1b, 0x05, + 0x02, 0x05, 0xc3, 0x03, 0x90, 0x03, 0x15, 0x08, 0x71, 0x0f, 0x62, 0x16, 0xd9, 0x17, 0x9f, 0x19, + 0x64, 0x18, 0x57, 0x15, 0x25, 0x11, 0x57, 0x0f, 0xc9, 0x0f, 0x46, 0x10, 0xf9, 0x0f, 0x10, 0x0e, + 0x43, 0x0b, 0xd0, 0x04, 0xda, 0xff, 0x34, 0xfd, 0xf8, 0xf7, 0x8e, 0xf1, 0xa5, 0xee, 0xb4, 0xee, + 0x9e, 0xec, 0x69, 0xea, 0x6f, 0xe9, 0x77, 0xe6, 0x78, 0xe0, 0x47, 0xdb, 0xb5, 0xda, 0xfb, 0xd9, + 0xa6, 0xdb, 0x18, 0xe0, 0x36, 0xe5, 0xf6, 0xe7, 0x2b, 0xec, 0x0b, 0xf3, 0x74, 0xf6, 0xcb, 0xf4, + 0xd6, 0xf2, 0x79, 0xf6, 0x7d, 0xf9, 0xdd, 0xfa, 0x07, 0xfd, 0xa8, 0xfc, 0xbe, 0xfe, 0xb4, 0x00, + 0x7b, 0xfe, 0xa5, 0xfd, 0x67, 0xfe, 0x4d, 0x01, 0x3a, 0x05, 0x47, 0x0a, 0x2a, 0x0e, 0xa8, 0x0e, + 0x0d, 0x0d, 0x09, 0x09, 0x9d, 0x05, 0x59, 0x02, 0x8c, 0x01, 0x8f, 0x01, 0xd1, 0x02, 0x07, 0x04, + 0x4e, 0x01, 0x79, 0xfd, 0xfa, 0xfa, 0x9a, 0xf7, 0x66, 0xf4, 0x4e, 0xf4, 0x2d, 0xf4, 0x86, 0xf2, + 0xfd, 0xf0, 0x43, 0xf2, 0x29, 0xf3, 0xbe, 0xf4, 0x67, 0xf2, 0xbf, 0xf1, 0x55, 0xf2, 0x39, 0xf4, + 0x41, 0xf8, 0xce, 0xfb, 0x1b, 0x00, 0x03, 0x05, 0x9a, 0x0a, 0xcb, 0x0d, 0x6e, 0x0e, 0xcc, 0x0b, + 0x82, 0x09, 0xfc, 0x07, 0x67, 0x07, 0xd4, 0x07, 0xc2, 0x07, 0x5f, 0x08, 0xed, 0x07, 0x49, 0x08, + 0xe2, 0x07, 0x22, 0x07, 0xdc, 0x07, 0x8d, 0x0c, 0xd4, 0x13, 0x27, 0x1a, 0x30, 0x21, 0x9c, 0x26, + 0x0a, 0x25, 0x65, 0x20, 0x37, 0x1c, 0xd0, 0x19, 0xb7, 0x17, 0xe7, 0x14, 0xec, 0x13, 0x14, 0x14, + 0x24, 0x0f, 0x05, 0x09, 0xfb, 0x01, 0x24, 0xfd, 0x50, 0xf9, 0x61, 0xf4, 0xb9, 0xf1, 0x2e, 0xef, + 0x82, 0xeb, 0xf6, 0xea, 0x97, 0xee, 0xa0, 0xed, 0x20, 0xea, 0x77, 0xe7, 0x5d, 0xe6, 0x31, 0xe5, + 0xc6, 0xe4, 0xca, 0xe7, 0xe0, 0xeb, 0x7a, 0xee, 0xcf, 0xf2, 0x62, 0xf9, 0x08, 0xfb, 0x6b, 0xf9, + 0x9d, 0xfa, 0x1b, 0xfd, 0xb6, 0xff, 0x0b, 0x03, 0x24, 0x06, 0x55, 0x07, 0xd2, 0x08, 0x63, 0x09, + 0xa0, 0x08, 0x9d, 0x06, 0x62, 0x07, 0x59, 0x0a, 0x58, 0x0e, 0xc9, 0x13, 0x40, 0x18, 0xec, 0x1a, + 0x4f, 0x1a, 0x03, 0x17, 0x88, 0x11, 0x1c, 0x0e, 0xbb, 0x0c, 0xe9, 0x0a, 0xf3, 0x09, 0x29, 0x08, + 0xc0, 0x04, 0x74, 0x01, 0x57, 0xfd, 0xe0, 0xf7, 0x4b, 0xf2, 0x8e, 0xee, 0xe0, 0xed, 0xd2, 0xeb, + 0xe2, 0xe7, 0x24, 0xe8, 0x3b, 0xe9, 0x5e, 0xea, 0x21, 0xe8, 0xad, 0xe4, 0xb1, 0xe2, 0xcd, 0xe2, + 0xa2, 0xe6, 0xa5, 0xeb, 0x86, 0xf0, 0x70, 0xf4, 0xf8, 0xfb, 0xa8, 0x02, 0xec, 0x05, 0x03, 0x07, + 0xe9, 0x06, 0x10, 0x08, 0xe5, 0x09, 0x45, 0x0c, 0x5a, 0x0c, 0x7e, 0x0d, 0x58, 0x0f, 0x62, 0x0f, + 0xfd, 0x0e, 0x56, 0x0e, 0x99, 0x0e, 0x5f, 0x11, 0x01, 0x15, 0x0f, 0x1a, 0x8c, 0x1e, 0x79, 0x23, + 0xd2, 0x25, 0xc7, 0x21, 0x12, 0x1e, 0xde, 0x1b, 0x65, 0x19, 0x49, 0x17, 0x5a, 0x14, 0xb5, 0x13, + 0xd2, 0x0f, 0x51, 0x0a, 0xc7, 0x05, 0xc6, 0xfe, 0x86, 0xf6, 0x28, 0xf1, 0x3b, 0xee, 0xb5, 0xe9, + 0x1c, 0xe6, 0x82, 0xe4, 0xda, 0xe5, 0x9c, 0xe4, 0x0a, 0xe2, 0xae, 0xdf, 0x97, 0xdc, 0x86, 0xdb, + 0xb9, 0xdc, 0x1e, 0xe1, 0xb8, 0xe5, 0xd3, 0xea, 0x15, 0xf1, 0xb1, 0xf7, 0x97, 0xfd, 0xfc, 0xff, + 0xd4, 0x02, 0xcb, 0x06, 0x96, 0x09, 0x80, 0x0a, 0x56, 0x0c, 0xb6, 0x0e, 0x52, 0x0f, 0xbb, 0x0f, + 0x2c, 0x10, 0x0a, 0x0f, 0x5a, 0x0d, 0xd0, 0x0c, 0x49, 0x0f, 0xfe, 0x12, 0x91, 0x17, 0xb9, 0x1c, + 0x17, 0x1d, 0xca, 0x19, 0xca, 0x14, 0x41, 0x11, 0x7a, 0x0c, 0x74, 0x08, 0x18, 0x06, 0x3d, 0x05, + 0xf3, 0x03, 0x0b, 0x00, 0xdf, 0xfb, 0x00, 0xf7, 0x8d, 0xf2, 0x67, 0xef, 0x36, 0xed, 0x0d, 0xec, + 0xdc, 0xe9, 0x2c, 0xea, 0xd2, 0xec, 0xfa, 0xed, 0x8e, 0xed, 0xcd, 0xeb, 0x65, 0xea, 0x3e, 0xea, + 0xa9, 0xeb, 0x17, 0xef, 0x5b, 0xf2, 0x81, 0xf5, 0xe0, 0xf9, 0x83, 0xff, 0xaa, 0x04, 0xb0, 0x06, + 0x6d, 0x06, 0xc4, 0x07, 0xb2, 0x08, 0x3d, 0x09, 0x50, 0x0a, 0xff, 0x0b, 0x21, 0x0e, 0xf2, 0x0e, + 0x12, 0x0e, 0x0a, 0x0b, 0x2f, 0x09, 0x68, 0x09, 0x3f, 0x0b, 0x79, 0x0f, 0xe1, 0x13, 0x5a, 0x1a, + 0xe6, 0x1d, 0x94, 0x1a, 0xd3, 0x17, 0xf1, 0x14, 0xc7, 0x10, 0x3f, 0x0d, 0x35, 0x0c, 0xc2, 0x09, + 0x99, 0x07, 0x0e, 0x03, 0x75, 0xfd, 0x26, 0xf7, 0xb3, 0xee, 0xe3, 0xe9, 0xfc, 0xe7, 0x30, 0xe4, + 0xee, 0xde, 0xc9, 0xdb, 0x5a, 0xdb, 0x2e, 0xdb, 0xc4, 0xd8, 0xf3, 0xd4, 0x84, 0xd2, 0x42, 0xd0, + 0x77, 0xd0, 0x6f, 0xd3, 0x9e, 0xd6, 0x59, 0xd9, 0x92, 0xdf, 0x83, 0xe6, 0x55, 0xeb, 0x14, 0xef, + 0xfe, 0xf2, 0x2e, 0xf7, 0x74, 0xf9, 0x66, 0xfa, 0x48, 0xfd, 0x4c, 0x01, 0xe3, 0x03, 0x93, 0x06, + 0x9e, 0x07, 0xc5, 0x07, 0x75, 0x08, 0x73, 0x0a, 0x75, 0x0e, 0x32, 0x13, 0x8c, 0x19, 0x30, 0x22, + 0x0f, 0x26, 0xdf, 0x23, 0xf9, 0x20, 0x3b, 0x1e, 0x54, 0x1a, 0x6d, 0x18, 0x8d, 0x17, 0x8b, 0x16, + 0x89, 0x14, 0x50, 0x11, 0xab, 0x0e, 0x19, 0x0a, 0x5b, 0x03, 0x5a, 0xff, 0xdb, 0xfd, 0xee, 0xfb, + 0xdb, 0xf8, 0x68, 0xf5, 0xef, 0xf4, 0xb2, 0xf6, 0xfa, 0xf4, 0xd9, 0xf2, 0x7a, 0xf2, 0x86, 0xf0, + 0x78, 0xef, 0x54, 0xf2, 0x48, 0xf5, 0xaf, 0xf7, 0xe8, 0xfa, 0x33, 0x01, 0xb1, 0x06, 0xdf, 0x07, + 0x21, 0x08, 0xed, 0x08, 0xf6, 0x08, 0xf1, 0x07, 0xfe, 0x07, 0xc2, 0x08, 0x05, 0x0a, 0x63, 0x0a, + 0x44, 0x08, 0x4c, 0x05, 0x0d, 0x02, 0x40, 0x01, 0xc4, 0x01, 0xa2, 0x04, 0xa0, 0x0a, 0x21, 0x11, + 0xa4, 0x15, 0x42, 0x17, 0xe6, 0x16, 0x91, 0x15, 0x9a, 0x14, 0xf4, 0x12, 0x7f, 0x12, 0x00, 0x12, + 0x22, 0x11, 0x40, 0x0f, 0x28, 0x0d, 0x87, 0x09, 0x72, 0x03, 0x3a, 0xff, 0x18, 0xfd, 0x81, 0xfa, + 0xee, 0xf5, 0x60, 0xf3, 0x1d, 0xf4, 0x00, 0xf3, 0x0d, 0xf1, 0x37, 0xf0, 0x99, 0xed, 0x4b, 0xe9, + 0x55, 0xe8, 0xa0, 0xe8, 0x23, 0xe9, 0xb3, 0xea, 0x23, 0xef, 0xe3, 0xf3, 0xc7, 0xf6, 0xd8, 0xf8, + 0xb6, 0xfa, 0xf2, 0xfb, 0x3d, 0xfc, 0xc1, 0xfc, 0x58, 0xfc, 0xfc, 0xfc, 0x00, 0xfe, 0x38, 0xff, + 0xf6, 0xfe, 0x61, 0xfd, 0xc5, 0xfc, 0x92, 0xfd, 0x51, 0xff, 0xb6, 0x00, 0xca, 0x05, 0x25, 0x0e, + 0x8e, 0x13, 0x91, 0x14, 0xb8, 0x13, 0x8d, 0x12, 0x5a, 0x10, 0x3b, 0x0e, 0x9a, 0x0e, 0x0d, 0x0f, + 0xaf, 0x0e, 0x87, 0x0f, 0xc6, 0x0e, 0xca, 0x0b, 0xe5, 0x06, 0x79, 0x02, 0xe9, 0x01, 0xed, 0x00, + 0x1b, 0xfe, 0x5f, 0xfd, 0xbc, 0xfe, 0x19, 0xff, 0xdc, 0xfd, 0x4c, 0xfb, 0x03, 0xf8, 0x06, 0xf4, + 0xe0, 0xf0, 0xf8, 0xf0, 0xda, 0xf1, 0x13, 0xf2, 0xc4, 0xf3, 0x2f, 0xf7, 0xb4, 0xf8, 0x36, 0xf9, + 0x20, 0xfa, 0xdd, 0xfb, 0x0d, 0xfc, 0xb8, 0xf9, 0x3f, 0xf9, 0xc0, 0xf9, 0x62, 0xfb, 0x80, 0xfc, + 0x5f, 0xfc, 0x3a, 0xfb, 0x78, 0xf8, 0x38, 0xf8, 0xb0, 0xf8, 0xd3, 0xf9, 0xd9, 0xfe, 0xf3, 0x06, + 0xac, 0x0d, 0x0d, 0x10, 0xe8, 0x11, 0xbc, 0x12, 0xb1, 0x11, 0xd2, 0x0f, 0x0a, 0x0f, 0xec, 0x0e, + 0xea, 0x0d, 0x7b, 0x0c, 0x1a, 0x0b, 0xb4, 0x07, 0x27, 0x01, 0xba, 0xfb, 0x21, 0xf9, 0xf1, 0xf5, + 0xdc, 0xf3, 0xf4, 0xf1, 0x6b, 0xef, 0x84, 0xee, 0xb8, 0xed, 0x90, 0xec, 0x9a, 0xe9, 0xe8, 0xe5, + 0xaf, 0xe3, 0x9e, 0xe3, 0x39, 0xe4, 0x58, 0xe6, 0x95, 0xea, 0xcd, 0xee, 0xe2, 0xf2, 0x4d, 0xf6, + 0xbf, 0xf9, 0xa7, 0xfd, 0x55, 0x00, 0xef, 0x00, 0x09, 0x01, 0x09, 0x01, 0xdd, 0x01, 0x32, 0x04, + 0xe8, 0x04, 0xe9, 0x02, 0x1c, 0x03, 0xf3, 0x03, 0xf1, 0x03, 0xbf, 0x04, 0xfc, 0x07, 0x40, 0x0e, + 0x3e, 0x13, 0x10, 0x16, 0x99, 0x15, 0x41, 0x13, 0x27, 0x10, 0x04, 0x0d, 0x40, 0x0b, 0xcb, 0x09, + 0xb4, 0x08, 0xc9, 0x07, 0x99, 0x07, 0x25, 0x04, 0x80, 0xfe, 0x9e, 0xf9, 0xcf, 0xf6, 0x7a, 0xf5, + 0x50, 0xf2, 0x5e, 0xf1, 0xa4, 0xf1, 0x85, 0xf1, 0x0f, 0xf3, 0xae, 0xf3, 0xe6, 0xf2, 0x69, 0xf1, + 0x2d, 0xf1, 0x5c, 0xf2, 0x27, 0xf3, 0x60, 0xf5, 0xa1, 0xfa, 0x2d, 0x01, 0x29, 0x05, 0x4a, 0x08, + 0xdd, 0x0b, 0x4d, 0x10, 0x76, 0x12, 0x71, 0x11, 0xa4, 0x10, 0x60, 0x0f, 0x89, 0x0e, 0x74, 0x0f, + 0x22, 0x0f, 0x0c, 0x0c, 0xb2, 0x08, 0xfd, 0x05, 0x9d, 0x03, 0xdc, 0x01, 0xf1, 0x03, 0xf7, 0x09, + 0xd1, 0x10, 0x8a, 0x14, 0xe2, 0x16, 0xf6, 0x17, 0xd5, 0x15, 0xa2, 0x13, 0xdc, 0x11, 0x48, 0x10, + 0x9d, 0x0e, 0xb1, 0x0e, 0x36, 0x0d, 0xa6, 0x09, 0x7e, 0x05, 0xef, 0xff, 0x9c, 0xfc, 0xe1, 0xf8, + 0x86, 0xf5, 0x4e, 0xf4, 0x50, 0xf2, 0x10, 0xf2, 0x56, 0xf1, 0x1d, 0xf0, 0x1d, 0xee, 0xf1, 0xeb, + 0x7b, 0xea, 0x89, 0xe9, 0x9b, 0xe9, 0x11, 0xec, 0xaa, 0xf1, 0xaa, 0xf6, 0x87, 0xfa, 0x47, 0xfe, + 0x2c, 0x02, 0x7a, 0x05, 0x05, 0x09, 0xaa, 0x0b, 0xa0, 0x0c, 0x2d, 0x0d, 0x2c, 0x0f, 0x85, 0x11, + 0xec, 0x11, 0x40, 0x10, 0x10, 0x0f, 0x34, 0x0e, 0x40, 0x0c, 0xd0, 0x0c, 0x24, 0x0e, 0xb8, 0x11, + 0x45, 0x16, 0x43, 0x18, 0xdc, 0x18, 0xaa, 0x16, 0x66, 0x12, 0x95, 0x0e, 0x01, 0x0b, 0x73, 0x07, + 0x10, 0x05, 0x9d, 0x02, 0x7d, 0x00, 0x17, 0xfd, 0xc2, 0xf6, 0x5e, 0xf1, 0x3d, 0xed, 0xc3, 0xe9, + 0xbf, 0xe7, 0xb9, 0xe5, 0x52, 0xe4, 0xf5, 0xe3, 0xda, 0xe4, 0xab, 0xe4, 0x5d, 0xe2, 0x79, 0xdf, + 0x4f, 0xde, 0xf0, 0xde, 0x13, 0xdf, 0x8c, 0xe0, 0x83, 0xe4, 0x48, 0xea, 0xfa, 0xee, 0xa2, 0xf2, + 0x5a, 0xf6, 0xc1, 0xfa, 0xbf, 0xfe, 0xf0, 0x01, 0x84, 0x03, 0x22, 0x03, 0xc6, 0x04, 0x46, 0x07, + 0x7c, 0x08, 0x7c, 0x07, 0x31, 0x06, 0x97, 0x04, 0x90, 0x02, 0xa6, 0x01, 0x44, 0x03, 0x74, 0x07, + 0xf8, 0x0b, 0x83, 0x10, 0x1d, 0x12, 0x8a, 0x11, 0xa2, 0x10, 0x9b, 0x0e, 0x5b, 0x0b, 0x56, 0x08, + 0x0c, 0x06, 0x4f, 0x03, 0x39, 0x01, 0xb7, 0xfd, 0xa6, 0xf8, 0x9c, 0xf4, 0x22, 0xf1, 0x9c, 0xee, + 0x4d, 0xeb, 0x67, 0xe9, 0xb9, 0xe9, 0x3d, 0xe9, 0xcb, 0xe8, 0x73, 0xe8, 0xbb, 0xe6, 0xea, 0xe4, + 0xfc, 0xe3, 0x30, 0xe2, 0xff, 0xe1, 0x20, 0xe4, 0x2b, 0xe7, 0x18, 0xec, 0x1e, 0xf2, 0x6f, 0xf6, + 0xa6, 0xfa, 0x7f, 0xff, 0x97, 0x04, 0xdb, 0x08, 0xdf, 0x0a, 0x51, 0x0c, 0x53, 0x0f, 0xc6, 0x10, + 0x88, 0x11, 0x25, 0x12, 0xc2, 0x11, 0x9d, 0x11, 0x7a, 0x10, 0xbd, 0x0f, 0x16, 0x12, 0x8c, 0x15, + 0xb4, 0x19, 0xea, 0x1d, 0x23, 0x20, 0x12, 0x20, 0x88, 0x1e, 0xae, 0x1b, 0x23, 0x18, 0x82, 0x14, + 0xee, 0x11, 0xb5, 0x10, 0xb7, 0x0e, 0xdb, 0x0b, 0x52, 0x08, 0xa8, 0x03, 0x10, 0xff, 0xa3, 0xfb, + 0x33, 0xf8, 0xa9, 0xf4, 0x60, 0xf3, 0xd0, 0xf3, 0xf0, 0xf5, 0x9a, 0xf7, 0x81, 0xf6, 0xc1, 0xf5, + 0xad, 0xf4, 0x54, 0xf3, 0xdb, 0xf2, 0x02, 0xf2, 0x72, 0xf4, 0xc2, 0xf9, 0x29, 0xfe, 0x04, 0x02, + 0x78, 0x05, 0xcd, 0x07, 0x74, 0x0b, 0x5d, 0x0e, 0x88, 0x0e, 0xec, 0x0d, 0xe4, 0x0d, 0xb9, 0x0e, + 0x9c, 0x0e, 0x93, 0x0d, 0xbd, 0x0b, 0x24, 0x0a, 0x97, 0x07, 0x78, 0x05, 0x13, 0x06, 0xdc, 0x08, + 0x28, 0x0e, 0x14, 0x13, 0x70, 0x16, 0xef, 0x17, 0x12, 0x18, 0xbb, 0x16, 0x54, 0x15, 0xba, 0x13, + 0x62, 0x11, 0xf9, 0x0f, 0x4e, 0x0f, 0x10, 0x0e, 0xd8, 0x09, 0x42, 0x04, 0x04, 0x00, 0x9e, 0xfc, + 0x99, 0xf8, 0xf7, 0xf4, 0x65, 0xf2, 0x9c, 0xf1, 0xc1, 0xf0, 0x06, 0xef, 0x1c, 0xed, 0xcf, 0xe9, + 0x4e, 0xe7, 0x81, 0xe6, 0x0d, 0xe5, 0x29, 0xe4, 0x9f, 0xe5, 0xe0, 0xe9, 0x6c, 0xee, 0xae, 0xf1, + 0x04, 0xf4, 0x90, 0xf6, 0xdc, 0xf9, 0xc9, 0xfc, 0x37, 0xfe, 0x9c, 0xfe, 0x1d, 0x00, 0x80, 0x01, + 0x22, 0x01, 0x23, 0x00, 0x25, 0xff, 0x3b, 0xfd, 0xec, 0xfa, 0x56, 0xf9, 0xb8, 0xf9, 0x9b, 0xfd, + 0xe9, 0x02, 0x42, 0x08, 0x39, 0x0c, 0x61, 0x0f, 0xc7, 0x10, 0x71, 0x0f, 0x8e, 0x0d, 0x16, 0x0c, + 0x46, 0x0a, 0xab, 0x08, 0x03, 0x08, 0x17, 0x07, 0x31, 0x04, 0x1c, 0x00, 0xb1, 0xfc, 0x55, 0xf9, + 0xb5, 0xf6, 0x3c, 0xf4, 0x5e, 0xf2, 0x4a, 0xf2, 0xa8, 0xf3, 0x0a, 0xf5, 0xe2, 0xf3, 0xbf, 0xf2, + 0x86, 0xf1, 0x73, 0xef, 0x48, 0xed, 0x7c, 0xec, 0x1e, 0xed, 0xc5, 0xee, 0xb7, 0xf1, 0xe5, 0xf4, + 0xaa, 0xf7, 0xa8, 0xf9, 0xd3, 0xfc, 0xec, 0x00, 0x49, 0x02, 0xcf, 0x02, 0xeb, 0x01, 0x23, 0x01, + 0x85, 0x01, 0x45, 0x01, 0x90, 0xff, 0x41, 0xfd, 0x17, 0xfb, 0xcb, 0xf8, 0xf8, 0xf8, 0x62, 0xfb, + 0x18, 0xff, 0x60, 0x04, 0x13, 0x09, 0x57, 0x0c, 0x47, 0x0e, 0x36, 0x0f, 0x36, 0x10, 0x18, 0x11, + 0x54, 0x11, 0xd1, 0x11, 0x01, 0x12, 0x40, 0x11, 0x42, 0x0f, 0xc4, 0x0b, 0x4b, 0x08, 0x85, 0x05, + 0x95, 0x02, 0xfc, 0xff, 0x4f, 0xfd, 0x61, 0xfb, 0x66, 0xfb, 0xeb, 0xf9, 0xa5, 0xf7, 0x6e, 0xf5, + 0x42, 0xf3, 0xc3, 0xf0, 0x86, 0xed, 0x15, 0xeb, 0x85, 0xea, 0xaf, 0xec, 0x64, 0xef, 0x16, 0xf3, + 0x4e, 0xf5, 0x38, 0xf7, 0x9a, 0xfb, 0xa5, 0xfe, 0x53, 0x00, 0x1f, 0x01, 0xe8, 0x02, 0xba, 0x05, + 0xee, 0x07, 0xd8, 0x08, 0xac, 0x08, 0xef, 0x08, 0x0c, 0x08, 0x22, 0x06, 0x4f, 0x05, 0x66, 0x07, + 0xa9, 0x0c, 0x25, 0x11, 0xcb, 0x14, 0xac, 0x17, 0xb2, 0x17, 0x94, 0x16, 0x58, 0x14, 0x3a, 0x12, + 0x32, 0x0f, 0x4a, 0x0d, 0x5c, 0x0d, 0x57, 0x0b, 0x10, 0x07, 0x78, 0x02, 0xac, 0xfe, 0x4d, 0xfb, + 0x9a, 0xf8, 0xcf, 0xf5, 0xa1, 0xf2, 0xa9, 0xf1, 0xc7, 0xf2, 0xa9, 0xf2, 0xf4, 0xf1, 0xe7, 0xf0, + 0x5a, 0xf0, 0x19, 0xef, 0x45, 0xed, 0x22, 0xec, 0x21, 0xec, 0x82, 0xed, 0xf4, 0xf0, 0x3e, 0xf5, + 0x5c, 0xf8, 0x87, 0xfc, 0x45, 0x01, 0xfa, 0x05, 0xd7, 0x08, 0xa1, 0x09, 0xb5, 0x09, 0x09, 0x0a, + 0x10, 0x0a, 0x31, 0x09, 0xcb, 0x08, 0x2a, 0x06, 0x12, 0x03, 0xe7, 0x00, 0x00, 0xff, 0x82, 0xff, + 0xc5, 0x01, 0x19, 0x06, 0x5c, 0x0a, 0x1f, 0x0d, 0x6e, 0x0e, 0xf7, 0x0e, 0xf8, 0x0e, 0x4f, 0x0e, + 0x8c, 0x0d, 0xe0, 0x0c, 0xd9, 0x0c, 0x20, 0x0b, 0x08, 0x09, 0xe6, 0x05, 0xb2, 0x00, 0x69, 0xfc, + 0x60, 0xf9, 0x33, 0xf6, 0x27, 0xf4, 0x56, 0xf2, 0x20, 0xf2, 0x61, 0xf3, 0xaa, 0xf3, 0xfe, 0xf2, + 0xf0, 0xf1, 0xef, 0xf0, 0x25, 0xf0, 0x3a, 0xef, 0xe1, 0xed, 0x21, 0xef, 0xe5, 0xf3, 0x83, 0xf7, + 0x6c, 0xfb, 0xed, 0xfe, 0xe5, 0x01, 0x72, 0x06, 0x61, 0x09, 0x77, 0x0a, 0x53, 0x0c, 0x82, 0x0e, + 0x5a, 0x10, 0x11, 0x11, 0x8d, 0x0f, 0x97, 0x0d, 0x2d, 0x0b, 0x56, 0x07, 0x5a, 0x04, 0x45, 0x03, + 0x8a, 0x04, 0x6b, 0x08, 0x12, 0x0d, 0x16, 0x10, 0x51, 0x11, 0xac, 0x10, 0xf6, 0x0f, 0x8e, 0x0e, + 0xd7, 0x0a, 0x5c, 0x08, 0x17, 0x07, 0x5b, 0x05, 0x7f, 0x02, 0xea, 0xfd, 0xd8, 0xf9, 0xbe, 0xf6, + 0x1f, 0xf3, 0x35, 0xef, 0xf4, 0xeb, 0xe2, 0xe9, 0x82, 0xe9, 0x7f, 0xea, 0xaf, 0xea, 0x28, 0xea, + 0x9e, 0xe9, 0xe7, 0xe8, 0x2b, 0xe7, 0xa7, 0xe5, 0xcd, 0xe5, 0x08, 0xe8, 0x64, 0xeb, 0xd7, 0xef, + 0x5a, 0xf3, 0xe9, 0xf6, 0x0a, 0xfd, 0x37, 0x02, 0xea, 0x04, 0xd2, 0x07, 0x10, 0x0b, 0xb3, 0x0c, + 0x8c, 0x0d, 0xb9, 0x0e, 0xf4, 0x0e, 0x37, 0x0f, 0xd6, 0x0d, 0x1c, 0x0c, 0xbe, 0x09, 0xe6, 0x07, + 0xa5, 0x09, 0xbc, 0x0c, 0xe1, 0x0f, 0xc0, 0x12, 0xd4, 0x14, 0x02, 0x15, 0xf5, 0x13, 0x81, 0x11, + 0xd3, 0x0e, 0xa9, 0x0c, 0xf2, 0x0a, 0xb1, 0x09, 0x33, 0x08, 0x28, 0x04, 0x01, 0xfe, 0xab, 0xf8, + 0x9b, 0xf3, 0xb1, 0xee, 0x5d, 0xeb, 0xdd, 0xe9, 0x60, 0xe9, 0x1c, 0xe9, 0x24, 0xe8, 0xb4, 0xe6, + 0x27, 0xe5, 0x3c, 0xe3, 0x38, 0xe1, 0xff, 0xde, 0xd7, 0xdd, 0xaf, 0xde, 0x42, 0xe2, 0xa3, 0xe6, + 0xf6, 0xe9, 0x1e, 0xee, 0x09, 0xf4, 0x0f, 0xfa, 0x5f, 0xff, 0x15, 0x04, 0x0b, 0x08, 0x41, 0x0c, + 0xfc, 0x0e, 0x45, 0x11, 0x8e, 0x13, 0x11, 0x14, 0x50, 0x14, 0xef, 0x12, 0x8f, 0x10, 0x08, 0x0f, + 0x68, 0x0f, 0xfb, 0x11, 0x38, 0x16, 0x90, 0x19, 0x9b, 0x1a, 0x04, 0x1b, 0x56, 0x1a, 0xc2, 0x17, + 0x17, 0x14, 0x17, 0x10, 0x2e, 0x0d, 0x30, 0x0b, 0xd3, 0x07, 0x2a, 0x03, 0xd4, 0xfd, 0x5d, 0xf9, + 0x39, 0xf6, 0xa0, 0xf2, 0x7d, 0xef, 0x1a, 0xee, 0x71, 0xee, 0x76, 0xef, 0x58, 0xf0, 0x59, 0xf1, + 0xf9, 0xf1, 0x79, 0xf2, 0x9b, 0xf3, 0x96, 0xf3, 0x0a, 0xf3, 0x26, 0xf4, 0x98, 0xf7, 0xc1, 0xfa, + 0x4a, 0xfc, 0x8e, 0xff, 0x0a, 0x04, 0x32, 0x09, 0x2e, 0x0d, 0x0f, 0x0f, 0x98, 0x10, 0x90, 0x11, + 0xfc, 0x12, 0x34, 0x14, 0x9d, 0x13, 0x39, 0x12, 0x05, 0x11, 0xeb, 0x0e, 0x1e, 0x0b, 0x5c, 0x08, + 0xe3, 0x07, 0xcd, 0x09, 0xb4, 0x0c, 0x5c, 0x0f, 0x54, 0x12, 0x74, 0x13, 0x84, 0x13, 0xe2, 0x12, + 0x43, 0x11, 0x8b, 0x0f, 0xbc, 0x0e, 0xb3, 0x0f, 0x19, 0x0f, 0x2d, 0x0c, 0xbf, 0x07, 0xfc, 0x02, + 0x7b, 0xfe, 0x91, 0xf9, 0xf8, 0xf5, 0x4b, 0xf3, 0x3f, 0xf1, 0xf6, 0xef, 0x85, 0xee, 0x30, 0xee, + 0x63, 0xed, 0x31, 0xec, 0x86, 0xea, 0xee, 0xe6, 0xe7, 0xe3, 0x46, 0xe3, 0xbc, 0xe4, 0x5e, 0xe7, + 0xc8, 0xe9, 0xae, 0xec, 0x96, 0xf1, 0x6e, 0xf5, 0x39, 0xf8, 0x3e, 0xfb, 0x1a, 0xfd, 0xc8, 0xfe, + 0x01, 0x01, 0x96, 0x02, 0xab, 0x03, 0x66, 0x04, 0x6d, 0x04, 0x1e, 0x02, 0x90, 0xff, 0xcb, 0xfd, + 0x73, 0xfe, 0x86, 0x01, 0x14, 0x06, 0xf6, 0x0b, 0xe1, 0x10, 0xd1, 0x14, 0xc6, 0x16, 0x48, 0x17, + 0xac, 0x16, 0x6d, 0x15, 0xff, 0x13, 0x75, 0x12, 0x60, 0x11, 0x0d, 0x0e, 0x6d, 0x09, 0xa2, 0x05, + 0xc2, 0x01, 0x57, 0xfd, 0x61, 0xf8, 0xcf, 0xf4, 0x82, 0xf2, 0xaf, 0xf0, 0xc6, 0xf0, 0x72, 0xf0, + 0xc3, 0xef, 0x9d, 0xef, 0x73, 0xee, 0x01, 0xec, 0x14, 0xe9, 0x1d, 0xe8, 0x48, 0xe9, 0xb8, 0xeb, + 0xa5, 0xed, 0xf2, 0xef, 0x6c, 0xf3, 0x08, 0xf7, 0x17, 0xfb, 0x61, 0xfd, 0xcb, 0xfe, 0x87, 0x01, + 0x5d, 0x04, 0x4a, 0x06, 0xa4, 0x06, 0xb3, 0x05, 0xcc, 0x04, 0x6b, 0x03, 0x8a, 0x00, 0x15, 0xff, + 0x4f, 0xff, 0x84, 0x00, 0xc2, 0x03, 0xdb, 0x07, 0x81, 0x0b, 0xce, 0x0e, 0xdf, 0x10, 0x97, 0x12, + 0x51, 0x13, 0xef, 0x12, 0xb8, 0x12, 0x37, 0x14, 0xcd, 0x14, 0x04, 0x13, 0x21, 0x10, 0x5a, 0x0c, + 0x0c, 0x09, 0xc1, 0x03, 0x05, 0xfe, 0x59, 0xfa, 0x04, 0xf8, 0x53, 0xf7, 0x02, 0xf7, 0x22, 0xf6, + 0x30, 0xf5, 0x32, 0xf4, 0x3a, 0xf2, 0xb8, 0xee, 0xdd, 0xe9, 0x44, 0xe8, 0x12, 0xea, 0xee, 0xea, + 0x5d, 0xec, 0x9d, 0xee, 0xb2, 0xf1, 0xcd, 0xf5, 0xb0, 0xf9, 0x93, 0xfc, 0x6d, 0xff, 0x3e, 0x02, + 0x43, 0x05, 0xa6, 0x07, 0xb7, 0x08, 0xff, 0x08, 0xb0, 0x09, 0xeb, 0x08, 0x71, 0x06, 0x99, 0x04, + 0xff, 0x02, 0xf9, 0x03, 0x78, 0x06, 0xd7, 0x09, 0x5d, 0x0e, 0x8f, 0x11, 0xf7, 0x12, 0x0e, 0x14, + 0xbd, 0x13, 0x4b, 0x12, 0x19, 0x11, 0x5e, 0x10, 0x15, 0x0f, 0x3f, 0x0d, 0xa6, 0x09, 0xd6, 0x06, + 0xcf, 0x03, 0xaf, 0xff, 0x56, 0xfb, 0x53, 0xf8, 0x55, 0xf6, 0x9a, 0xf5, 0x37, 0xf5, 0x78, 0xf4, + 0xa3, 0xf4, 0x69, 0xf4, 0xb2, 0xf3, 0xe0, 0xf1, 0x0e, 0xef, 0x2b, 0xee, 0x5f, 0xee, 0x26, 0xef, + 0x41, 0xf0, 0x29, 0xf1, 0x33, 0xf3, 0x96, 0xf6, 0x30, 0xfa, 0x8d, 0xfd, 0x53, 0x00, 0x4e, 0x02, + 0xe1, 0x04, 0x39, 0x07, 0xc6, 0x07, 0x39, 0x08, 0x84, 0x07, 0xdf, 0x05, 0x3e, 0x04, 0x68, 0x01, + 0x2f, 0xff, 0x81, 0xfe, 0xf6, 0xff, 0x28, 0x04, 0xf0, 0x07, 0xfe, 0x0a, 0xbc, 0x0d, 0xc8, 0x0f, + 0x88, 0x10, 0x8a, 0x10, 0x3c, 0x10, 0xa8, 0x10, 0x23, 0x12, 0x7a, 0x11, 0xf5, 0x0e, 0x57, 0x0c, + 0xa6, 0x08, 0xae, 0x03, 0x8f, 0xfe, 0x54, 0xfa, 0xf5, 0xf7, 0x43, 0xf7, 0xc6, 0xf6, 0x50, 0xf5, + 0x22, 0xf4, 0xa9, 0xf4, 0xaf, 0xf4, 0xe4, 0xf1, 0x15, 0xee, 0x05, 0xec, 0xe7, 0xeb, 0xb9, 0xec, + 0xf4, 0xed, 0xe7, 0xef, 0x33, 0xf3, 0x7c, 0xf7, 0x41, 0xfc, 0x7f, 0x00, 0xf2, 0x02, 0xc3, 0x04, + 0x18, 0x07, 0xdc, 0x08, 0x7a, 0x0a, 0x50, 0x0b, 0x5e, 0x0c, 0x9d, 0x0c, 0xe4, 0x09, 0x2c, 0x06, + 0x2c, 0x04, 0x38, 0x03, 0xce, 0x03, 0x9b, 0x06, 0x61, 0x0a, 0x40, 0x0e, 0x53, 0x10, 0x41, 0x11, + 0x3b, 0x11, 0xe2, 0x0e, 0x6c, 0x0d, 0x47, 0x0d, 0x69, 0x0b, 0x33, 0x08, 0x23, 0x04, 0x06, 0x00, + 0x0b, 0xfc, 0xe5, 0xf6, 0xe6, 0xf1, 0xeb, 0xed, 0xac, 0xeb, 0x61, 0xea, 0xd6, 0xe9, 0x1a, 0xea, + 0x6b, 0xe9, 0x80, 0xea, 0xbe, 0xeb, 0x6a, 0xec, 0x1a, 0xec, 0x52, 0xea, 0xb0, 0xeb, 0xdf, 0xed, + 0xed, 0xef, 0x8a, 0xf3, 0x98, 0xf7, 0x62, 0xfb, 0xa2, 0x00, 0x4c, 0x05, 0x26, 0x08, 0x68, 0x0a, + 0x2b, 0x0c, 0x02, 0x0f, 0x07, 0x10, 0xae, 0x10, 0x38, 0x11, 0x75, 0x0e, 0x1b, 0x0b, 0xb9, 0x07, + 0xc0, 0x02, 0xae, 0xff, 0x6a, 0x00, 0x26, 0x02, 0x46, 0x05, 0x72, 0x08, 0xc1, 0x0a, 0x9c, 0x0b, + 0x3d, 0x0b, 0x4f, 0x0a, 0x77, 0x09, 0x65, 0x09, 0x9a, 0x09, 0x53, 0x08, 0x57, 0x05, 0x40, 0x02, + 0x16, 0xff, 0xc0, 0xfa, 0xcd, 0xf5, 0x84, 0xf0, 0x22, 0xec, 0x22, 0xea, 0x10, 0xe9, 0xb8, 0xe7, + 0x01, 0xe7, 0xed, 0xe6, 0x32, 0xe8, 0x62, 0xe7, 0xb2, 0xe5, 0x96, 0xe4, 0x99, 0xe3, 0xe6, 0xe4, + 0xbe, 0xe7, 0x5e, 0xeb, 0x1d, 0xf0, 0x0d, 0xf5, 0x7c, 0xfa, 0x93, 0xff, 0xdd, 0x03, 0x67, 0x08, + 0x74, 0x0e, 0x8c, 0x12, 0x84, 0x15, 0x1a, 0x19, 0x8e, 0x1b, 0x4d, 0x1c, 0xb7, 0x1b, 0xe4, 0x18, + 0x58, 0x16, 0x78, 0x14, 0x4f, 0x13, 0x2b, 0x15, 0x3e, 0x17, 0xea, 0x18, 0x85, 0x1a, 0x76, 0x1b, + 0xa0, 0x1a, 0xf4, 0x17, 0x84, 0x15, 0x25, 0x14, 0x58, 0x12, 0x07, 0x0e, 0x01, 0x0a, 0xb2, 0x06, + 0xdc, 0x01, 0xef, 0xfc, 0x63, 0xf7, 0xf4, 0xf0, 0xd0, 0xec, 0xfd, 0xea, 0x0f, 0xea, 0x17, 0xe9, + 0x21, 0xe8, 0x9b, 0xe8, 0xd2, 0xe9, 0x0e, 0xea, 0x1e, 0xe9, 0x5a, 0xe9, 0xa1, 0xea, 0x04, 0xed, + 0xa2, 0xef, 0xe7, 0xf2, 0x02, 0xf7, 0xbc, 0xfa, 0xb7, 0xfe, 0x99, 0x02, 0x11, 0x06, 0x9e, 0x0a, + 0x5b, 0x0e, 0xd6, 0x11, 0x42, 0x14, 0x06, 0x16, 0x22, 0x18, 0x6c, 0x18, 0xac, 0x16, 0xc3, 0x13, + 0xf8, 0x0f, 0x71, 0x0c, 0xbe, 0x0b, 0xec, 0x0c, 0x5e, 0x0e, 0x06, 0x11, 0x85, 0x12, 0xb2, 0x12, + 0x9f, 0x12, 0x7a, 0x11, 0xb8, 0x0f, 0x5a, 0x0e, 0x8d, 0x0c, 0x45, 0x0a, 0x32, 0x08, 0xcd, 0x05, + 0x8b, 0x03, 0x64, 0xff, 0x45, 0xf9, 0x45, 0xf3, 0xc2, 0xed, 0x4c, 0xea, 0x19, 0xe9, 0xcd, 0xe8, + 0x6d, 0xe8, 0x65, 0xe8, 0x0c, 0xe8, 0x75, 0xe6, 0x0c, 0xe5, 0xd3, 0xe3, 0xb7, 0xe3, 0x05, 0xe4, + 0xa8, 0xe4, 0xa1, 0xe7, 0x91, 0xea, 0x52, 0xee, 0xc7, 0xf2, 0xaa, 0xf6, 0xa6, 0xfa, 0x84, 0xfe, + 0xf2, 0x01, 0xca, 0x04, 0x5b, 0x07, 0xf5, 0x08, 0xbc, 0x0a, 0x3a, 0x0c, 0x59, 0x0d, 0x93, 0x0d, + 0x10, 0x0b, 0xbb, 0x07, 0xfe, 0x05, 0x58, 0x06, 0x10, 0x09, 0xe9, 0x0b, 0x1d, 0x0f, 0x05, 0x13, + 0x3f, 0x15, 0x94, 0x14, 0x71, 0x13, 0x9f, 0x13, 0x4c, 0x13, 0x5b, 0x12, 0xfb, 0x0f, 0x79, 0x0c, + 0xa2, 0x08, 0x14, 0x03, 0x74, 0xfd, 0x6f, 0xf7, 0x57, 0xf1, 0x62, 0xee, 0x0e, 0xed, 0x4f, 0xeb, + 0x0b, 0xea, 0xca, 0xe9, 0xb8, 0xe9, 0x44, 0xe9, 0xb4, 0xe7, 0x4c, 0xe7, 0x82, 0xe7, 0x0d, 0xe8, + 0xb8, 0xe9, 0x2d, 0xeb, 0x27, 0xed, 0xf8, 0xef, 0xdb, 0xf3, 0xa1, 0xf7, 0xa8, 0xfa, 0x19, 0xfe, + 0x2e, 0x01, 0x88, 0x03, 0x75, 0x05, 0x8e, 0x07, 0x13, 0x0a, 0xe3, 0x0b, 0xcc, 0x0c, 0x0b, 0x0b, + 0x69, 0x08, 0x21, 0x06, 0xdb, 0x04, 0x6b, 0x05, 0x34, 0x08, 0xb4, 0x0c, 0x0c, 0x11, 0xe1, 0x14, + 0x0c, 0x17, 0x31, 0x17, 0x01, 0x17, 0x69, 0x17, 0xde, 0x18, 0x00, 0x19, 0x27, 0x19, 0x1c, 0x19, + 0x1f, 0x17, 0x9e, 0x13, 0x07, 0x0e, 0xbc, 0x07, 0x29, 0x02, 0x6f, 0xfd, 0x47, 0xf9, 0x49, 0xf6, + 0xbc, 0xf4, 0xe9, 0xf3, 0x51, 0xf2, 0x05, 0xf0, 0xb8, 0xed, 0x4e, 0xeb, 0xfa, 0xe8, 0x09, 0xe7, + 0xd6, 0xe5, 0xf5, 0xe5, 0xff, 0xe7, 0xd0, 0xea, 0x1b, 0xee, 0x2f, 0xf2, 0xae, 0xf5, 0x2a, 0xf9, + 0xb5, 0xfc, 0xcb, 0xff, 0x1d, 0x03, 0x4f, 0x06, 0xab, 0x09, 0xe0, 0x0b, 0x41, 0x0c, 0x63, 0x0c, + 0x54, 0x0b, 0xe8, 0x08, 0x7f, 0x07, 0x4c, 0x08, 0x35, 0x0a, 0x19, 0x0d, 0x09, 0x11, 0x2d, 0x14, + 0x23, 0x16, 0x55, 0x16, 0xb9, 0x15, 0xa0, 0x15, 0x08, 0x15, 0xc2, 0x14, 0x7a, 0x13, 0xd6, 0x10, + 0xac, 0x0d, 0xae, 0x09, 0xa2, 0x04, 0x95, 0xfe, 0xfe, 0xf8, 0x9c, 0xf4, 0x6c, 0xf1, 0xf6, 0xee, + 0x8f, 0xed, 0xa6, 0xee, 0x75, 0xef, 0x1c, 0xef, 0x10, 0xee, 0x82, 0xec, 0x8c, 0xea, 0xcf, 0xe9, + 0xc2, 0xea, 0x25, 0xeb, 0xe0, 0xeb, 0x15, 0xee, 0xfe, 0xf0, 0xda, 0xf3, 0x7e, 0xf6, 0xf8, 0xf8, + 0x29, 0xfc, 0xab, 0xff, 0xa5, 0x02, 0xe8, 0x04, 0x62, 0x07, 0x3f, 0x09, 0x33, 0x09, 0x34, 0x07, + 0xc7, 0x03, 0xbc, 0x00, 0x6f, 0xfe, 0xb9, 0xfd, 0x9c, 0xfe, 0x52, 0x00, 0x5a, 0x02, 0x4a, 0x05, + 0x25, 0x07, 0x41, 0x07, 0x08, 0x08, 0x79, 0x08, 0x0a, 0x0a, 0x3e, 0x0b, 0x3c, 0x0b, 0x76, 0x0b, + 0x1c, 0x0c, 0x1f, 0x0c, 0x82, 0x09, 0xad, 0x05, 0x35, 0x01, 0x87, 0xfd, 0x09, 0xfa, 0xe8, 0xf6, + 0x3d, 0xf5, 0x8c, 0xf5, 0x90, 0xf6, 0xec, 0xf5, 0xc8, 0xf3, 0xed, 0xf1, 0x95, 0xf0, 0x39, 0xef, + 0x40, 0xee, 0x7a, 0xee, 0xb3, 0xef, 0x48, 0xf1, 0xa1, 0xf3, 0x48, 0xf6, 0x69, 0xf8, 0xe7, 0xfa, + 0x2b, 0xfe, 0x18, 0x01, 0x76, 0x03, 0x52, 0x06, 0x40, 0x08, 0x2d, 0x0a, 0xb1, 0x0b, 0xcc, 0x0b, + 0xd9, 0x0b, 0x9d, 0x0a, 0xbb, 0x08, 0xd4, 0x07, 0x4f, 0x08, 0x26, 0x0a, 0x6e, 0x0d, 0x07, 0x11, + 0xa7, 0x13, 0x53, 0x16, 0x94, 0x17, 0x9d, 0x17, 0x8a, 0x17, 0x8e, 0x16, 0xeb, 0x14, 0xcc, 0x12, + 0x85, 0x0f, 0x79, 0x0c, 0x47, 0x08, 0xe8, 0x01, 0x41, 0xfc, 0x77, 0xf7, 0x85, 0xf2, 0x2a, 0xef, + 0x53, 0xed, 0x10, 0xed, 0x00, 0xed, 0x4c, 0xec, 0x67, 0xeb, 0x7b, 0xea, 0x9c, 0xe9, 0xdf, 0xe8, + 0xc7, 0xe9, 0xa3, 0xeb, 0xc5, 0xed, 0x3b, 0xf0, 0x22, 0xf3, 0x1f, 0xf7, 0xd1, 0xfa, 0x6a, 0xfe, + 0x30, 0x02, 0x85, 0x05, 0xec, 0x08, 0xc0, 0x0b, 0x23, 0x0e, 0x43, 0x10, 0x21, 0x11, 0xff, 0x10, + 0x72, 0x0f, 0xe1, 0x0c, 0xe4, 0x09, 0x1d, 0x08, 0x6e, 0x07, 0x57, 0x08, 0x1b, 0x0a, 0x95, 0x0c, + 0x8a, 0x0e, 0x72, 0x0e, 0xf0, 0x0d, 0x7a, 0x0d, 0x52, 0x0c, 0xb6, 0x0b, 0x08, 0x0b, 0xd6, 0x09, + 0x9e, 0x08, 0x41, 0x07, 0xb2, 0x03, 0x32, 0xfe, 0x5c, 0xf8, 0xbd, 0xf2, 0x41, 0xee, 0xdf, 0xe9, + 0xee, 0xe6, 0x2d, 0xe7, 0x40, 0xe8, 0x9f, 0xe8, 0x17, 0xe9, 0x1d, 0xe9, 0x14, 0xe9, 0x91, 0xe9, + 0xeb, 0xe9, 0x17, 0xeb, 0xa5, 0xec, 0x1a, 0xef, 0x14, 0xf3, 0x23, 0xf7, 0x05, 0xfb, 0xdb, 0xfe, + 0x1b, 0x02, 0xa1, 0x05, 0x02, 0x09, 0xfa, 0x0b, 0x30, 0x0e, 0xd6, 0x10, 0xe2, 0x12, 0x50, 0x13, + 0xdb, 0x11, 0x0b, 0x0f, 0x73, 0x0c, 0x7a, 0x09, 0x01, 0x07, 0x6e, 0x06, 0xad, 0x07, 0x16, 0x0a, + 0x39, 0x0b, 0x02, 0x0b, 0x08, 0x0b, 0x38, 0x0b, 0xd4, 0x0a, 0x84, 0x0a, 0x56, 0x09, 0xa4, 0x07, + 0x9c, 0x06, 0x0e, 0x04, 0x1e, 0x00, 0x97, 0xfb, 0x72, 0xf6, 0x49, 0xf2, 0x51, 0xee, 0x9b, 0xea, + 0xce, 0xe8, 0xc1, 0xe8, 0xcb, 0xe9, 0xd8, 0xea, 0x88, 0xeb, 0x5b, 0xeb, 0xde, 0xeb, 0x5b, 0xec, + 0x34, 0xed, 0x81, 0xee, 0x53, 0xf0, 0xb8, 0xf3, 0x7b, 0xf7, 0xb4, 0xfb, 0x02, 0x00, 0x5f, 0x03, + 0xc9, 0x06, 0x24, 0x0a, 0x3d, 0x0d, 0xfd, 0x10, 0x91, 0x14, 0xc0, 0x16, 0x9d, 0x18, 0x77, 0x18, + 0x9b, 0x16, 0x40, 0x14, 0xed, 0x10, 0x5a, 0x0e, 0x6a, 0x0c, 0x47, 0x0c, 0xb9, 0x0d, 0x30, 0x0f, + 0x21, 0x10, 0x25, 0x10, 0x27, 0x0f, 0x82, 0x0e, 0x20, 0x0e, 0x45, 0x0d, 0x8a, 0x0c, 0x26, 0x0c, + 0xf5, 0x0a, 0x83, 0x09, 0x3b, 0x08, 0x92, 0x04, 0x92, 0x00, 0x5c, 0xfc, 0xc1, 0xf7, 0x4a, 0xf3, + 0x02, 0xf0, 0x6b, 0xed, 0x57, 0xec, 0x0c, 0xec, 0xb0, 0xeb, 0x74, 0xeb, 0xda, 0xe9, 0x1b, 0xe8, + 0x2e, 0xe7, 0x61, 0xe6, 0x6c, 0xe6, 0xa4, 0xe7, 0x91, 0xea, 0x6e, 0xee, 0xe1, 0xf1, 0xfd, 0xf4, + 0x2e, 0xf8, 0xe6, 0xfb, 0x5f, 0x00, 0xc1, 0x04, 0x2a, 0x09, 0xf1, 0x0c, 0x9c, 0x0f, 0x4d, 0x11, + 0x74, 0x11, 0xd6, 0x0f, 0xde, 0x0d, 0xac, 0x0c, 0x45, 0x0b, 0xbc, 0x0b, 0xa0, 0x0d, 0x9d, 0x0f, + 0xc4, 0x11, 0x0d, 0x13, 0x5b, 0x13, 0x66, 0x14, 0x78, 0x15, 0x1f, 0x15, 0x22, 0x14, 0x75, 0x11, + 0x86, 0x0e, 0x96, 0x0b, 0xd6, 0x07, 0x36, 0x03, 0xf3, 0xfd, 0xca, 0xf8, 0x69, 0xf3, 0x7e, 0xee, + 0xce, 0xea, 0x54, 0xe8, 0x5e, 0xe7, 0xa5, 0xe6, 0x97, 0xe6, 0x77, 0xe6, 0x0e, 0xe6, 0xac, 0xe6, + 0xc8, 0xe6, 0x03, 0xe7, 0xc5, 0xe8, 0xe0, 0xeb, 0x24, 0xef, 0x8b, 0xf2, 0x30, 0xf6, 0xf4, 0xf9, + 0x1e, 0xfe, 0x17, 0x01, 0x81, 0x03, 0x8e, 0x06, 0x5e, 0x0a, 0x8a, 0x0d, 0x3b, 0x0f, 0x76, 0x10, + 0x05, 0x11, 0x70, 0x10, 0xd0, 0x0e, 0xea, 0x0c, 0x17, 0x0b, 0x31, 0x0a, 0xca, 0x0b, 0x0f, 0x0e, + 0x6f, 0x0f, 0xce, 0x10, 0x65, 0x11, 0xee, 0x11, 0x89, 0x12, 0xb4, 0x12, 0xf0, 0x11, 0x6b, 0x11, + 0xdf, 0x11, 0x5f, 0x11, 0xb7, 0x0f, 0xb9, 0x0c, 0xec, 0x08, 0xd5, 0x04, 0x41, 0xff, 0xf9, 0xf8, + 0x6a, 0xf4, 0x32, 0xf1, 0xa6, 0xee, 0x7f, 0xed, 0xaf, 0xec, 0x5d, 0xec, 0x4c, 0xeb, 0xce, 0xe9, + 0xbf, 0xe8, 0xd5, 0xe7, 0x6d, 0xe7, 0x12, 0xe8, 0xba, 0xe9, 0xb8, 0xeb, 0x74, 0xee, 0xcd, 0xf1, + 0x3a, 0xf5, 0x81, 0xf8, 0x32, 0xfb, 0x8f, 0xfe, 0x57, 0x01, 0xd8, 0x03, 0x56, 0x06, 0xe7, 0x07, + 0xb1, 0x08, 0x7e, 0x08, 0x86, 0x07, 0xaa, 0x06, 0xae, 0x05, 0xa7, 0x05, 0xe9, 0x07, 0x2c, 0x0b, + 0x51, 0x0e, 0x80, 0x11, 0x1a, 0x13, 0x04, 0x14, 0xca, 0x15, 0x76, 0x16, 0x35, 0x16, 0x63, 0x15, + 0x38, 0x14, 0x1d, 0x13, 0xb8, 0x10, 0x14, 0x0d, 0x73, 0x08, 0xad, 0x02, 0x23, 0xfd, 0x70, 0xf8, + 0xd5, 0xf3, 0x79, 0xf0, 0x95, 0xee, 0x6e, 0xec, 0xb3, 0xea, 0xc5, 0xe9, 0x40, 0xe8, 0xbd, 0xe6, + 0xd0, 0xe5, 0x33, 0xe5, 0x99, 0xe4, 0x9f, 0xe4, 0xe5, 0xe5, 0xa2, 0xe8, 0xe5, 0xeb, 0xe4, 0xef, + 0xf6, 0xf3, 0xa4, 0xf6, 0xe6, 0xf8, 0x5a, 0xfb, 0xa8, 0xfe, 0x4f, 0x02, 0xbe, 0x05, 0x54, 0x08, + 0x5e, 0x09, 0xe4, 0x09, 0x55, 0x09, 0x94, 0x07, 0xf7, 0x04, 0x4e, 0x04, 0xdc, 0x05, 0x31, 0x08, + 0x49, 0x0b, 0x2c, 0x0d, 0x6a, 0x0e, 0xc7, 0x0e, 0x6c, 0x0f, 0x3e, 0x10, 0xad, 0x10, 0x17, 0x12, + 0x8a, 0x13, 0x76, 0x14, 0xac, 0x13, 0x29, 0x12, 0x0c, 0x10, 0x56, 0x0c, 0x7c, 0x07, 0x98, 0x02, + 0xa2, 0xfe, 0x7d, 0xfb, 0xe7, 0xf7, 0x79, 0xf5, 0xfc, 0xf3, 0x08, 0xf3, 0xc2, 0xf2, 0x14, 0xf2, + 0xf1, 0xf0, 0x29, 0xef, 0xaf, 0xee, 0x7f, 0xee, 0x57, 0xee, 0x83, 0xef, 0x4e, 0xf1, 0x37, 0xf4, + 0xca, 0xf6, 0x1a, 0xf9, 0x32, 0xfb, 0x79, 0xfd, 0xa7, 0x00, 0xd4, 0x03, 0x69, 0x06, 0x9f, 0x08, + 0xbe, 0x09, 0xf1, 0x09, 0x82, 0x09, 0x90, 0x07, 0xe2, 0x05, 0x6f, 0x06, 0x9a, 0x07, 0xa9, 0x09, + 0x79, 0x0c, 0xcb, 0x0e, 0x50, 0x10, 0xb0, 0x10, 0x8f, 0x11, 0x5b, 0x12, 0xfe, 0x12, 0x27, 0x13, + 0x0a, 0x13, 0xd8, 0x11, 0x35, 0x10, 0xd8, 0x0e, 0x94, 0x0b, 0xf3, 0x07, 0x4f, 0x03, 0x7e, 0xfd, + 0x7e, 0xf8, 0x9d, 0xf4, 0x0a, 0xf2, 0xd7, 0xef, 0x0f, 0xee, 0x93, 0xed, 0x00, 0xed, 0x3b, 0xec, + 0x46, 0xeb, 0x0a, 0xeb, 0xe6, 0xea, 0x75, 0xeb, 0xe5, 0xed, 0x61, 0xf0, 0x95, 0xf3, 0xdc, 0xf6, + 0xdd, 0xf9, 0x21, 0xfc, 0x0c, 0xfe, 0xf8, 0xff, 0xba, 0x01, 0xd3, 0x04, 0x0e, 0x08, 0x60, 0x0a, + 0xbb, 0x0b, 0xfa, 0x0b, 0x20, 0x0b, 0x27, 0x09, 0x39, 0x07, 0x7b, 0x05, 0xb8, 0x04, 0x65, 0x05, + 0xfd, 0x06, 0x28, 0x09, 0x5f, 0x0a, 0x57, 0x0b, 0x19, 0x0c, 0x42, 0x0c, 0x31, 0x0c, 0xf2, 0x0b, + 0x61, 0x0b, 0x0d, 0x0b, 0x8b, 0x09, 0xe5, 0x06, 0x67, 0x04, 0x17, 0x01, 0xb5, 0xfc, 0x99, 0xf7, + 0x26, 0xf2, 0xed, 0xed, 0x2c, 0xeb, 0x8c, 0xe9, 0xf0, 0xe7, 0xc3, 0xe6, 0x67, 0xe7, 0xc3, 0xe7, + 0x5d, 0xe7, 0xfe, 0xe5, 0xf5, 0xe5, 0x3b, 0xe7, 0x7e, 0xe8, 0x91, 0xe9, 0x21, 0xec, 0x59, 0xf0, + 0x6c, 0xf4, 0xf5, 0xf7, 0x96, 0xfb, 0x04, 0xff, 0xc3, 0x02, 0x04, 0x06, 0xab, 0x08, 0xdc, 0x0b, + 0x0d, 0x0e, 0x26, 0x0f, 0xdd, 0x0e, 0x3d, 0x0d, 0x02, 0x0b, 0xd9, 0x09, 0x71, 0x09, 0x32, 0x09, + 0xbe, 0x09, 0xc0, 0x0a, 0x69, 0x0c, 0xbf, 0x0d, 0x13, 0x0e, 0x1c, 0x0e, 0x4d, 0x0e, 0x8d, 0x0e, + 0x44, 0x0e, 0x88, 0x0d, 0xb2, 0x0b, 0x27, 0x0a, 0x4f, 0x08, 0x53, 0x05, 0x18, 0x01, 0xf1, 0xfb, + 0xd0, 0xf7, 0x63, 0xf5, 0x51, 0xf3, 0x1f, 0xf2, 0xae, 0xf1, 0xbc, 0xf1, 0xb6, 0xf2, 0xe1, 0xf2, + 0x5c, 0xf2, 0xac, 0xf2, 0x8a, 0xf4, 0xdb, 0xf6, 0x40, 0xf8, 0x93, 0xfa, 0x95, 0xfd, 0x91, 0x01, + 0x8e, 0x05, 0x2c, 0x08, 0x8a, 0x0a, 0x9a, 0x0d, 0xc9, 0x0f, 0xb8, 0x10, 0xb0, 0x12, 0x47, 0x14, + 0x20, 0x15, 0x75, 0x14, 0x15, 0x12, 0x9d, 0x0f, 0x68, 0x0c, 0x76, 0x09, 0xa0, 0x06, 0x9f, 0x04, + 0x68, 0x03, 0xa9, 0x02, 0x6a, 0x02, 0xf2, 0x01, 0xe7, 0x00, 0xda, 0xff, 0xad, 0xfe, 0xf5, 0xfe, + 0xd5, 0xff, 0xf9, 0xff, 0x46, 0x00, 0x08, 0x00, 0x21, 0xff, 0x0f, 0xfe, 0xe1, 0xfb, 0xf8, 0xf8, + 0xf9, 0xf5, 0x48, 0xf3, 0x4a, 0xf2, 0xb1, 0xf1, 0x95, 0xf0, 0xf9, 0xef, 0x4b, 0xf0, 0x6e, 0xf0, + 0xd8, 0xef, 0x00, 0xef, 0x83, 0xee, 0xe5, 0xee, 0x03, 0xf0, 0xa7, 0xf1, 0x1d, 0xf4, 0x7e, 0xf6, + 0x0e, 0xfa, 0xe3, 0xfd, 0x45, 0x01, 0x4c, 0x05, 0x95, 0x08, 0x27, 0x0c, 0x82, 0x10, 0x56, 0x14, + 0x9d, 0x17, 0xc5, 0x18, 0x0c, 0x18, 0x51, 0x16, 0xbd, 0x13, 0xc6, 0x11, 0x7c, 0x10, 0x4b, 0x10, + 0x40, 0x10, 0x9a, 0x10, 0x2d, 0x10, 0xc1, 0x0f, 0xce, 0x0f, 0x5a, 0x0e, 0xe3, 0x0c, 0x42, 0x0c, + 0x63, 0x0c, 0xd8, 0x0b, 0x00, 0x0a, 0xd9, 0x07, 0xfe, 0x05, 0x0b, 0x03, 0x3e, 0xfe, 0xf0, 0xf8, + 0xdb, 0xf3, 0xc2, 0xee, 0x97, 0xeb, 0x88, 0xe8, 0xc2, 0xe5, 0xa2, 0xe4, 0x16, 0xe4, 0xf1, 0xe3, + 0x38, 0xe3, 0x6c, 0xe3, 0xea, 0xe3, 0x32, 0xe4, 0x5e, 0xe4, 0xe9, 0xe5, 0xc4, 0xe8, 0xe7, 0xeb, + 0x21, 0xf0, 0xa7, 0xf3, 0x36, 0xf7, 0xb7, 0xfb, 0xd1, 0x00, 0xdc, 0x05, 0xac, 0x0a, 0xf5, 0x0e, + 0x90, 0x12, 0xca, 0x14, 0x6e, 0x14, 0xeb, 0x12, 0x87, 0x10, 0x84, 0x0e, 0x1d, 0x0d, 0x7f, 0x0b, + 0x7c, 0x0b, 0x9c, 0x0b, 0x05, 0x0b, 0x28, 0x0b, 0x5a, 0x0a, 0x25, 0x09, 0xef, 0x08, 0x0e, 0x09, + 0x3d, 0x09, 0xcf, 0x08, 0x0b, 0x08, 0x15, 0x07, 0x94, 0x05, 0xd8, 0x02, 0x11, 0x00, 0x51, 0xfc, + 0xa8, 0xf8, 0x65, 0xf5, 0xd6, 0xf2, 0x6f, 0xf1, 0xbb, 0xf0, 0xe4, 0xef, 0xd8, 0xef, 0x95, 0xef, + 0x5c, 0xef, 0x2c, 0xef, 0x3a, 0xef, 0x7a, 0xef, 0xaa, 0xef, 0x0a, 0xf1, 0x15, 0xf3, 0x89, 0xf6, + 0x49, 0xf9, 0xe7, 0xfb, 0xc2, 0xfe, 0x5a, 0x01, 0x07, 0x05, 0x84, 0x08, 0x7b, 0x0c, 0xc7, 0x0f, + 0x4a, 0x12, 0x10, 0x14, 0x98, 0x13, 0x05, 0x12, 0xdd, 0x0f, 0xf5, 0x0d, 0x23, 0x0c, 0x4d, 0x0b, + 0xf2, 0x0b, 0xe0, 0x0b, 0x06, 0x0c, 0x5a, 0x0c, 0x08, 0x0d, 0x29, 0x0d, 0x1a, 0x0c, 0x12, 0x0c, + 0xe6, 0x0c, 0xa7, 0x0c, 0xa8, 0x0b, 0x66, 0x0a, 0x20, 0x08, 0xdf, 0x05, 0xb8, 0x02, 0x96, 0xfe, + 0x50, 0xfa, 0xb1, 0xf5, 0x43, 0xf2, 0x70, 0xef, 0xb6, 0xec, 0x26, 0xeb, 0x96, 0xea, 0x8e, 0xea, + 0x3c, 0xe9, 0x74, 0xe8, 0x12, 0xe8, 0x66, 0xe7, 0x7b, 0xe7, 0x6b, 0xe7, 0x8c, 0xe8, 0xc7, 0xea, + 0xca, 0xed, 0xb0, 0xf0, 0x23, 0xf3, 0xb5, 0xf5, 0xc9, 0xf8, 0xba, 0xfc, 0x2a, 0x00, 0x97, 0x03, + 0xf6, 0x06, 0xcf, 0x09, 0x10, 0x0b, 0x57, 0x0a, 0xfe, 0x08, 0x4e, 0x07, 0x35, 0x06, 0x88, 0x06, + 0x08, 0x07, 0x33, 0x07, 0x89, 0x07, 0xec, 0x08, 0x37, 0x0a, 0x05, 0x0b, 0x00, 0x0c, 0xce, 0x0c, + 0x43, 0x0e, 0xad, 0x0f, 0xf2, 0x10, 0x0c, 0x11, 0x30, 0x11, 0x5e, 0x10, 0x24, 0x0e, 0xe2, 0x0a, + 0x68, 0x07, 0x62, 0x04, 0xbf, 0x01, 0x6c, 0xff, 0x4e, 0xfd, 0xd2, 0xfb, 0xec, 0xf9, 0xb5, 0xf7, + 0x18, 0xf5, 0x36, 0xf2, 0x5b, 0xf0, 0x22, 0xee, 0x34, 0xec, 0xae, 0xeb, 0xa2, 0xec, 0x54, 0xee, + 0x9d, 0xf0, 0xe6, 0xf2, 0x2c, 0xf5, 0xb3, 0xf7, 0x92, 0xfa, 0x9a, 0xfd, 0xe6, 0x00, 0xcd, 0x04, + 0x0d, 0x09, 0x35, 0x0c, 0x48, 0x0d, 0x62, 0x0d, 0xac, 0x0c, 0x5b, 0x0b, 0x75, 0x09, 0x9d, 0x08, + 0x87, 0x09, 0x21, 0x0a, 0x2d, 0x0b, 0xb0, 0x0c, 0x2c, 0x0e, 0x2e, 0x0f, 0x4e, 0x0f, 0x43, 0x0f, + 0xc8, 0x0f, 0x80, 0x10, 0xd9, 0x10, 0x91, 0x11, 0xcc, 0x10, 0x0e, 0x0e, 0x1e, 0x0b, 0x42, 0x07, + 0xac, 0x02, 0xc5, 0xfd, 0x77, 0xf8, 0xaf, 0xf4, 0xa5, 0xf1, 0x62, 0xef, 0x35, 0xee, 0x43, 0xec, + 0x9e, 0xea, 0x82, 0xea, 0xe1, 0xea, 0x28, 0xea, 0xd5, 0xe9, 0x6f, 0xea, 0xb4, 0xeb, 0xe3, 0xed, + 0x46, 0xf0, 0xcb, 0xf3, 0x6c, 0xf7, 0xb2, 0xfa, 0xca, 0xfe, 0x39, 0x03, 0x51, 0x07, 0x82, 0x0b, + 0x3e, 0x0f, 0x5e, 0x12, 0xbb, 0x13, 0x94, 0x12, 0xd9, 0x10, 0xbb, 0x0d, 0xeb, 0x0a, 0xae, 0x09, + 0xb5, 0x08, 0xfc, 0x07, 0x99, 0x07, 0x5b, 0x07, 0xf1, 0x06, 0x19, 0x06, 0x98, 0x04, 0xbe, 0x03, + 0xe8, 0x03, 0x55, 0x04, 0x65, 0x05, 0x5a, 0x05, 0xa0, 0x04, 0x1b, 0x04, 0xea, 0x01, 0xdc, 0xfe, + 0xd2, 0xfb, 0x40, 0xf9, 0x74, 0xf7, 0xe5, 0xf5, 0xd8, 0xf3, 0xb6, 0xf2, 0x81, 0xf2, 0x67, 0xf1, + 0x6d, 0xf0, 0x8f, 0xef, 0x97, 0xef, 0xae, 0xef, 0xf3, 0xee, 0xff, 0xee, 0x05, 0xf0, 0xaa, 0xf1, + 0xca, 0xf4, 0xa4, 0xf7, 0x31, 0xfa, 0x8d, 0xfc, 0x03, 0xff, 0x78, 0x01, 0xca, 0x03, 0xa7, 0x05, + 0x2a, 0x08, 0xe9, 0x0a, 0x33, 0x0c, 0x50, 0x0c, 0x83, 0x0a, 0x5d, 0x07, 0xe0, 0x04, 0x41, 0x03, + 0x33, 0x02, 0x19, 0x02, 0x4e, 0x02, 0xf6, 0x02, 0x5f, 0x04, 0x66, 0x04, 0xc4, 0x04, 0xaa, 0x05, + 0x6d, 0x05, 0xf5, 0x05, 0x69, 0x06, 0x56, 0x07, 0x33, 0x07, 0x07, 0x06, 0xb4, 0x03, 0x2b, 0x01, + 0xec, 0xfd, 0x64, 0xfa, 0x10, 0xf8, 0x10, 0xf5, 0xc8, 0xf2, 0x95, 0xf1, 0x7d, 0xf0, 0xad, 0xef, + 0xc1, 0xee, 0xc5, 0xee, 0xcf, 0xef, 0xe6, 0xef, 0x15, 0xf0, 0xa6, 0xf0, 0x0a, 0xf2, 0x20, 0xf4, + 0xf2, 0xf6, 0x48, 0xfa, 0x2b, 0xfe, 0xd2, 0x01, 0x74, 0x05, 0xac, 0x09, 0x6b, 0x0d, 0x7c, 0x11, + 0xd7, 0x15, 0x55, 0x18, 0x11, 0x1a, 0x91, 0x1a, 0x73, 0x19, 0x76, 0x16, 0x19, 0x12, 0x73, 0x0f, + 0x0a, 0x0e, 0xaa, 0x0c, 0x76, 0x0b, 0x9c, 0x0a, 0xa2, 0x09, 0xbe, 0x08, 0xab, 0x07, 0x28, 0x06, + 0x41, 0x05, 0xb5, 0x04, 0xed, 0x04, 0x9c, 0x05, 0x7c, 0x05, 0x90, 0x04, 0xae, 0x03, 0xde, 0x01, + 0x72, 0xfe, 0x74, 0xfb, 0xdc, 0xf8, 0x09, 0xf7, 0x55, 0xf5, 0x65, 0xf3, 0xc6, 0xf2, 0x0e, 0xf2, + 0xd0, 0xf0, 0xe0, 0xef, 0x50, 0xef, 0x1a, 0xef, 0x4f, 0xef, 0xda, 0xef, 0xd4, 0xf0, 0x30, 0xf3, + 0x87, 0xf5, 0xb2, 0xf8, 0xfe, 0xfb, 0xfe, 0xfe, 0x04, 0x02, 0xd1, 0x04, 0xef, 0x07, 0x43, 0x0b, + 0xea, 0x0e, 0x61, 0x12, 0x81, 0x14, 0xcf, 0x15, 0x57, 0x15, 0xbd, 0x12, 0x0a, 0x0f, 0x52, 0x0c, + 0x12, 0x0a, 0xaa, 0x07, 0x2f, 0x06, 0x45, 0x05, 0x81, 0x04, 0x84, 0x03, 0x37, 0x02, 0x4c, 0x02, + 0x7d, 0x01, 0x61, 0x00, 0x5f, 0x00, 0xca, 0x00, 0x79, 0x01, 0x4d, 0x01, 0xcb, 0xff, 0x2d, 0xfd, + 0x2c, 0xfa, 0xc6, 0xf6, 0x0a, 0xf4, 0x08, 0xf1, 0x1a, 0xee, 0xbc, 0xec, 0x89, 0xeb, 0xe8, 0xe9, + 0x8f, 0xe8, 0x29, 0xe8, 0x47, 0xe8, 0xbe, 0xe8, 0xbf, 0xe8, 0x9f, 0xe8, 0x91, 0xe9, 0x5d, 0xeb, + 0x51, 0xee, 0xab, 0xf1, 0x41, 0xf5, 0xf1, 0xf9, 0x50, 0xff, 0x76, 0x04, 0xf4, 0x08, 0xae, 0x0d, + 0x80, 0x12, 0xc0, 0x15, 0x47, 0x18, 0x0f, 0x1a, 0x34, 0x1a, 0xb3, 0x18, 0x6a, 0x16, 0x48, 0x14, + 0x80, 0x12, 0xe3, 0x10, 0xc3, 0x0f, 0xdc, 0x0f, 0x4c, 0x0f, 0x74, 0x0d, 0x0b, 0x0c, 0x84, 0x0a, + 0x7a, 0x08, 0xce, 0x06, 0x69, 0x05, 0xc3, 0x04, 0x05, 0x05, 0x54, 0x04, 0xd0, 0x02, 0x06, 0x01, + 0xf5, 0xfd, 0x53, 0xfa, 0x48, 0xf7, 0xca, 0xf3, 0x7a, 0xf1, 0xbf, 0xef, 0x9e, 0xee, 0xeb, 0xed, + 0x6d, 0xec, 0xff, 0xea, 0xc2, 0xe9, 0xd6, 0xe8, 0x26, 0xe8, 0xa2, 0xe8, 0x4c, 0xe9, 0x89, 0xea, + 0xa7, 0xec, 0x85, 0xef, 0xd4, 0xf2, 0xc5, 0xf5, 0xc7, 0xf8, 0x33, 0xfc, 0x51, 0x00, 0x74, 0x04, + 0xf1, 0x08, 0x71, 0x0c, 0xa6, 0x0f, 0xf0, 0x12, 0x14, 0x14, 0xcd, 0x13, 0x1e, 0x12, 0x20, 0x10, + 0x7e, 0x0f, 0x96, 0x0e, 0xd6, 0x0d, 0x43, 0x0e, 0x66, 0x0e, 0x12, 0x0f, 0xd0, 0x0f, 0xf0, 0x0f, + 0xb5, 0x0f, 0x23, 0x0f, 0x69, 0x0e, 0x37, 0x0e, 0x6c, 0x0d, 0x22, 0x0c, 0x35, 0x0b, 0x99, 0x08, + 0x65, 0x04, 0x3e, 0x00, 0x1a, 0xfc, 0x3e, 0xf8, 0x8d, 0xf4, 0x9f, 0xf1, 0x42, 0xef, 0xce, 0xec, + 0xdc, 0xea, 0x8a, 0xe9, 0x86, 0xe8, 0x6b, 0xe7, 0x6a, 0xe7, 0x4d, 0xe7, 0x62, 0xe7, 0xf7, 0xe7, + 0x36, 0xe9, 0x8e, 0xeb, 0xce, 0xed, 0xad, 0xf0, 0x78, 0xf4, 0x47, 0xf8, 0x2e, 0xfc, 0xd7, 0x00, + 0x6f, 0x05, 0x75, 0x09, 0x59, 0x0c, 0xaf, 0x0e, 0x41, 0x10, 0x38, 0x10, 0x61, 0x0f, 0x6e, 0x0e, + 0xc8, 0x0c, 0x90, 0x0b, 0xd2, 0x0b, 0xeb, 0x0b, 0xfa, 0x0b, 0x52, 0x0c, 0xb5, 0x0b, 0x6c, 0x0b, + 0x02, 0x0b, 0xac, 0x09, 0x51, 0x09, 0x57, 0x09, 0xda, 0x09, 0x86, 0x0a, 0x7c, 0x0a, 0x9a, 0x09, + 0xb8, 0x07, 0x62, 0x05, 0x9b, 0x02, 0x00, 0xff, 0xa5, 0xfb, 0xa7, 0xf9, 0x3b, 0xf8, 0x5e, 0xf6, + 0x2c, 0xf4, 0x7e, 0xf2, 0xcb, 0xf0, 0xdd, 0xee, 0x17, 0xed, 0x0c, 0xec, 0xa1, 0xeb, 0xcb, 0xeb, + 0xb7, 0xec, 0xd2, 0xed, 0x9f, 0xef, 0x2b, 0xf2, 0x65, 0xf5, 0xb1, 0xf7, 0x5f, 0xfa, 0xaa, 0xfd, + 0x06, 0x01, 0xa6, 0x04, 0x48, 0x07, 0x4b, 0x0a, 0x89, 0x0c, 0x4b, 0x0d, 0x55, 0x0d, 0xff, 0x0b, + 0xc4, 0x0a, 0x29, 0x0a, 0xe4, 0x09, 0xf7, 0x09, 0x17, 0x0b, 0xa1, 0x0c, 0xc7, 0x0e, 0xaa, 0x10, + 0xe6, 0x11, 0x0c, 0x13, 0xd2, 0x13, 0xfc, 0x13, 0x0e, 0x14, 0xb7, 0x13, 0x13, 0x13, 0xb2, 0x11, + 0xbd, 0x0e, 0xb6, 0x0a, 0xe8, 0x06, 0x74, 0x02, 0x5b, 0xfe, 0x4d, 0xfb, 0x1d, 0xf8, 0x3d, 0xf5, + 0x06, 0xf2, 0x12, 0xef, 0x0f, 0xed, 0xc4, 0xea, 0x90, 0xe8, 0x15, 0xe7, 0x8a, 0xe5, 0x84, 0xe4, + 0xb9, 0xe4, 0x68, 0xe6, 0xdb, 0xe8, 0xfe, 0xeb, 0x56, 0xef, 0x37, 0xf3, 0xbe, 0xf7, 0xca, 0xfc, + 0xcd, 0x01, 0x26, 0x06, 0x5a, 0x0a, 0x28, 0x0d, 0xa2, 0x0e, 0x1c, 0x0f, 0xdd, 0x0e, 0xef, 0x0d, + 0x87, 0x0c, 0x2d, 0x0b, 0xb1, 0x0a, 0xce, 0x0a, 0xce, 0x0a, 0xf5, 0x0a, 0x60, 0x0a, 0xb0, 0x08, + 0x04, 0x08, 0x7a, 0x07, 0xfb, 0x06, 0x3f, 0x07, 0xb0, 0x06, 0xb9, 0x06, 0x1d, 0x07, 0xed, 0x05, + 0xe9, 0x03, 0x05, 0x02, 0x28, 0xff, 0x5e, 0xfb, 0xb1, 0xf7, 0xaa, 0xf4, 0x43, 0xf3, 0xc8, 0xf1, + 0x2e, 0xf0, 0x0d, 0xef, 0x23, 0xee, 0xcb, 0xec, 0x0c, 0xec, 0x6f, 0xeb, 0xea, 0xea, 0xe0, 0xeb, + 0xce, 0xec, 0x9b, 0xee, 0xda, 0xf0, 0x64, 0xf3, 0x61, 0xf6, 0xba, 0xf8, 0xc8, 0xfb, 0xae, 0xff, + 0x30, 0x03, 0xae, 0x06, 0x88, 0x09, 0x03, 0x0c, 0xd1, 0x0d, 0x01, 0x0e, 0x37, 0x0d, 0xbe, 0x0b, + 0xe3, 0x09, 0x54, 0x08, 0x6e, 0x07, 0x18, 0x06, 0xeb, 0x04, 0xac, 0x04, 0xb8, 0x04, 0x94, 0x05, + 0x4c, 0x06, 0xa8, 0x06, 0x80, 0x07, 0x06, 0x08, 0x02, 0x08, 0xd1, 0x07, 0xa6, 0x07, 0x8b, 0x07, + 0x1d, 0x07, 0xa1, 0x05, 0x7a, 0x03, 0x50, 0x01, 0x1b, 0xff, 0xff, 0xfd, 0x79, 0xfc, 0x13, 0xfa, + 0x56, 0xf8, 0xbc, 0xf6, 0xf7, 0xf5, 0xd6, 0xf4, 0x12, 0xf4, 0xa7, 0xf3, 0x83, 0xf3, 0x08, 0xf4, + 0x5e, 0xf4, 0xf5, 0xf4, 0x84, 0xf6, 0x81, 0xf8, 0x55, 0xfa, 0x7c, 0xfc, 0xc4, 0xff, 0xe1, 0x03, + 0xbe, 0x07, 0x48, 0x0b, 0x0b, 0x0e, 0x44, 0x10, 0xfa, 0x10, 0x31, 0x10, 0x27, 0x0f, 0x7a, 0x0d, + 0xd3, 0x0b, 0x2f, 0x0a, 0x77, 0x08, 0xdc, 0x07, 0xba, 0x07, 0x4f, 0x07, 0x1a, 0x07, 0xa5, 0x06, + 0x0d, 0x06, 0xdf, 0x05, 0x5d, 0x05, 0x0a, 0x05, 0x15, 0x05, 0x5a, 0x05, 0x5c, 0x05, 0x0c, 0x05, + 0x1f, 0x04, 0x89, 0x02, 0x57, 0x00, 0xb0, 0xfd, 0x4b, 0xfb, 0x2e, 0xf9, 0x6c, 0xf7, 0xdf, 0xf6, + 0x68, 0xf6, 0x6c, 0xf5, 0x9e, 0xf4, 0xb2, 0xf3, 0xe8, 0xf2, 0x96, 0xf1, 0x60, 0xf0, 0x5f, 0xf0, + 0xf6, 0xf0, 0x63, 0xf1, 0xea, 0xf2, 0xc1, 0xf4, 0xa6, 0xf6, 0xb5, 0xf9, 0xf2, 0xfc, 0xc8, 0x00, + 0x2c, 0x04, 0x29, 0x07, 0x34, 0x0b, 0x56, 0x0e, 0x91, 0x10, 0xe8, 0x11, 0xde, 0x11, 0x29, 0x11, + 0x69, 0x0f, 0x54, 0x0d, 0x7f, 0x0b, 0xb5, 0x09, 0xb3, 0x07, 0x67, 0x06, 0x0e, 0x06, 0x43, 0x06, + 0xec, 0x06, 0x21, 0x07, 0x3b, 0x07, 0x70, 0x07, 0x04, 0x07, 0x26, 0x06, 0xa4, 0x05, 0x25, 0x04, + 0xb1, 0x02, 0xd3, 0x00, 0x00, 0xfe, 0x30, 0xfb, 0x5d, 0xf8, 0x0d, 0xf6, 0xc7, 0xf3, 0x8a, 0xf1, + 0xde, 0xee, 0x91, 0xec, 0x9d, 0xea, 0xef, 0xe8, 0x28, 0xe8, 0x7e, 0xe7, 0x70, 0xe7, 0x49, 0xe8, + 0x5c, 0xe9, 0x32, 0xeb, 0x37, 0xed, 0x46, 0xf0, 0x05, 0xf4, 0x78, 0xf7, 0xe8, 0xfb, 0xaa, 0x00, + 0xc7, 0x05, 0x5d, 0x0a, 0xc1, 0x0e, 0x77, 0x12, 0x5b, 0x15, 0x28, 0x17, 0xb4, 0x16, 0xa9, 0x15, + 0xf4, 0x13, 0x65, 0x12, 0xef, 0x10, 0x93, 0x0e, 0x69, 0x0d, 0x02, 0x0c, 0x72, 0x0a, 0xf1, 0x08, + 0x54, 0x06, 0x16, 0x04, 0x66, 0x02, 0x0e, 0x01, 0x40, 0x00, 0xfb, 0xff, 0x75, 0xff, 0x07, 0xff, + 0x65, 0xfe, 0xfe, 0xfc, 0x80, 0xfb, 0x88, 0xf9, 0x85, 0xf7, 0xd4, 0xf5, 0x71, 0xf4, 0x37, 0xf3, + 0x95, 0xf3, 0xc6, 0xf3, 0x0d, 0xf3, 0x62, 0xf3, 0x68, 0xf3, 0x0f, 0xf3, 0xd3, 0xf2, 0x41, 0xf2, + 0x47, 0xf2, 0xe5, 0xf2, 0xc7, 0xf4, 0xb5, 0xf7, 0x40, 0xfa, 0xfa, 0xfc, 0xbd, 0x00, 0x64, 0x04, + 0xa9, 0x07, 0x43, 0x0b, 0x31, 0x0e, 0x22, 0x11, 0xdc, 0x13, 0xfd, 0x14, 0x02, 0x15, 0x67, 0x13, + 0x7e, 0x11, 0xc8, 0x0f, 0x94, 0x0d, 0xe8, 0x0b, 0x19, 0x0b, 0x62, 0x0a, 0x68, 0x09, 0x72, 0x09, + 0x46, 0x09, 0xbf, 0x09, 0x20, 0x0a, 0xd9, 0x09, 0x41, 0x0a, 0xfc, 0x09, 0x66, 0x09, 0x83, 0x08, + 0x96, 0x06, 0x45, 0x05, 0x1b, 0x03, 0x9e, 0xff, 0x96, 0xfc, 0x9a, 0xf9, 0x02, 0xf7, 0xb7, 0xf4, + 0xb1, 0xf2, 0x13, 0xf0, 0xbd, 0xed, 0xee, 0xeb, 0xa8, 0xea, 0x4a, 0xe9, 0x4d, 0xe8, 0x72, 0xe7, + 0x60, 0xe6, 0x2f, 0xe6, 0x7e, 0xe6, 0xb4, 0xe7, 0x7e, 0xe9, 0xd7, 0xeb, 0x14, 0xee, 0x11, 0xf1, + 0xf7, 0xf5, 0xf4, 0xfa, 0x9e, 0xff, 0xfc, 0x03, 0x2d, 0x08, 0x5a, 0x0b, 0xa3, 0x0c, 0x35, 0x0e, + 0xe6, 0x0d, 0x4b, 0x0d, 0x6c, 0x0d, 0xac, 0x0d, 0x8e, 0x0d, 0xa7, 0x0d, 0x3a, 0x0e, 0xb1, 0x0d, + 0x81, 0x0d, 0x47, 0x0d, 0x89, 0x0c, 0x29, 0x0c, 0xb5, 0x0b, 0x88, 0x0b, 0xeb, 0x0a, 0xee, 0x09, + 0x07, 0x09, 0x39, 0x07, 0x70, 0x04, 0x6f, 0x01, 0x19, 0xfe, 0x7c, 0xfa, 0x98, 0xf7, 0x09, 0xf5, + 0xc1, 0xf2, 0x61, 0xf1, 0x26, 0xf0, 0x3a, 0xef, 0x5c, 0xee, 0x64, 0xed, 0x1f, 0xed, 0x15, 0xec, + 0x44, 0xeb, 0x2d, 0xeb, 0xe0, 0xec, 0x31, 0xef, 0x33, 0xf1, 0x7d, 0xf3, 0x7e, 0xf6, 0xaf, 0xfa, + 0x7b, 0xfe, 0x36, 0x02, 0x32, 0x06, 0xa1, 0x09, 0x53, 0x0d, 0x18, 0x10, 0x92, 0x11, 0x20, 0x12, + 0x2a, 0x12, 0xb4, 0x11, 0x2b, 0x11, 0x63, 0x10, 0xb5, 0x0f, 0x13, 0x10, 0x88, 0x0f, 0x59, 0x0f, + 0xba, 0x0f, 0x51, 0x10, 0xd2, 0x11, 0xd5, 0x11, 0x8c, 0x11, 0x5c, 0x11, 0xa2, 0x10, 0xe9, 0x0f, + 0xe4, 0x0e, 0xd3, 0x0c, 0xdc, 0x09, 0x3d, 0x07, 0x25, 0x04, 0x14, 0x01, 0xd4, 0xfd, 0x97, 0xfa, + 0x6b, 0xf8, 0x9e, 0xf5, 0xba, 0xf2, 0xd5, 0xef, 0x46, 0xed, 0x41, 0xeb, 0xa4, 0xe9, 0x99, 0xe8, + 0x88, 0xe7, 0x6c, 0xe7, 0xe8, 0xe7, 0xb9, 0xe8, 0x13, 0xea, 0xd5, 0xeb, 0xb4, 0xee, 0x04, 0xf2, + 0x7a, 0xf6, 0x14, 0xfb, 0x83, 0xff, 0x3f, 0x04, 0xe4, 0x07, 0xe1, 0x0a, 0x50, 0x0d, 0x9a, 0x0e, + 0xa4, 0x0e, 0xa2, 0x0d, 0x42, 0x0c, 0x68, 0x0b, 0x84, 0x0a, 0x0d, 0x0a, 0x42, 0x0a, 0x61, 0x0a, + 0xbe, 0x0a, 0x40, 0x0b, 0x0d, 0x0b, 0x45, 0x0a, 0x04, 0x0a, 0xc2, 0x09, 0xa4, 0x09, 0x99, 0x09, + 0x9d, 0x08, 0xf3, 0x07, 0x4c, 0x06, 0x51, 0x03, 0x57, 0x00, 0x35, 0xfc, 0x22, 0xf9, 0x21, 0xf7, + 0xa6, 0xf4, 0xa3, 0xf2, 0xce, 0xf1, 0xa4, 0xf0, 0x0d, 0xef, 0xba, 0xed, 0x9b, 0xec, 0x6c, 0xeb, + 0x42, 0xea, 0x26, 0xe9, 0x34, 0xe9, 0x21, 0xea, 0x3b, 0xeb, 0x8f, 0xed, 0x66, 0xf0, 0xbe, 0xf2, + 0x78, 0xf6, 0x1e, 0xfa, 0x9d, 0xfd, 0x22, 0x01, 0x9a, 0x04, 0xf7, 0x07, 0x94, 0x09, 0x87, 0x0a, + 0x4e, 0x0b, 0xb5, 0x0a, 0xdd, 0x09, 0x16, 0x09, 0x21, 0x08, 0x86, 0x07, 0x94, 0x06, 0x9d, 0x06, + 0x6f, 0x07, 0x8c, 0x07, 0xb6, 0x08, 0xc5, 0x09, 0x75, 0x0a, 0x69, 0x0b, 0xc3, 0x0c, 0xbe, 0x0d, + 0xd9, 0x0d, 0x06, 0x0d, 0xe2, 0x0b, 0x5b, 0x0a, 0x94, 0x08, 0x2b, 0x06, 0x1f, 0x03, 0x42, 0x01, + 0xbf, 0xfe, 0xca, 0xfb, 0x6a, 0xf9, 0x5d, 0xf7, 0x09, 0xf5, 0x64, 0xf2, 0xed, 0xf0, 0xe7, 0xef, + 0x29, 0xee, 0xb4, 0xed, 0xf6, 0xed, 0xfe, 0xed, 0xd1, 0xee, 0xf7, 0xef, 0x24, 0xf2, 0xd0, 0xf4, + 0xb9, 0xf7, 0x12, 0xfb, 0xe0, 0xfe, 0x9f, 0x03, 0x4e, 0x08, 0x06, 0x0c, 0xf9, 0x0d, 0x22, 0x0f, + 0xa6, 0x0f, 0xa9, 0x0e, 0xfc, 0x0c, 0x22, 0x0b, 0x81, 0x0a, 0x62, 0x0a, 0xbc, 0x09, 0x12, 0x09, + 0x38, 0x09, 0x90, 0x09, 0x74, 0x09, 0xf6, 0x08, 0x52, 0x08, 0x36, 0x08, 0x06, 0x08, 0xb4, 0x07, + 0x2a, 0x07, 0x78, 0x05, 0x5d, 0x04, 0x0d, 0x03, 0xf0, 0x00, 0xf3, 0xfe, 0xe0, 0xfc, 0x55, 0xfb, + 0x1f, 0xfa, 0x82, 0xf8, 0xea, 0xf7, 0xf2, 0xf7, 0xac, 0xf7, 0xa0, 0xf7, 0x84, 0xf7, 0xb1, 0xf7, + 0x3c, 0xf7, 0xf0, 0xf5, 0x08, 0xf6, 0xbf, 0xf6, 0x57, 0xf7, 0xe5, 0xf8, 0x5e, 0xfb, 0x6f, 0xfd, + 0xf9, 0xff, 0xe3, 0x02, 0x4d, 0x06, 0xca, 0x09, 0x00, 0x0d, 0xb9, 0x0e, 0x81, 0x0f, 0xe6, 0x0f, + 0xda, 0x0f, 0xb1, 0x0e, 0xe3, 0x0c, 0xe8, 0x0b, 0x52, 0x0a, 0x4f, 0x08, 0x7a, 0x06, 0x85, 0x04, + 0xc1, 0x03, 0xa0, 0x03, 0x93, 0x03, 0x6a, 0x04, 0x14, 0x05, 0x13, 0x05, 0xee, 0x04, 0x39, 0x05, + 0xa7, 0x04, 0xc4, 0x03, 0x35, 0x02, 0x6d, 0x00, 0x7f, 0xfe, 0x37, 0xfc, 0x91, 0xf9, 0x28, 0xf7, + 0xaf, 0xf4, 0x40, 0xf2, 0x70, 0xf1, 0x19, 0xf0, 0x5b, 0xee, 0x00, 0xed, 0xcf, 0xeb, 0x34, 0xeb, + 0x65, 0xea, 0x66, 0xe9, 0xab, 0xe9, 0x8f, 0xea, 0x69, 0xeb, 0xf9, 0xec, 0xd3, 0xee, 0x15, 0xf1, + 0x36, 0xf4, 0x5e, 0xf8, 0x47, 0xfd, 0x43, 0x02, 0xf7, 0x06, 0x1f, 0x0b, 0x7f, 0x0e, 0x47, 0x10, + 0x6d, 0x11, 0x50, 0x11, 0x54, 0x10, 0xbd, 0x0e, 0xeb, 0x0d, 0x65, 0x0d, 0x97, 0x0c, 0x59, 0x0b, + 0x1c, 0x0b, 0x82, 0x0b, 0xb8, 0x0a, 0x6b, 0x0a, 0x8e, 0x09, 0x34, 0x09, 0xf9, 0x07, 0xd7, 0x06, + 0xfa, 0x06, 0xe3, 0x05, 0x78, 0x04, 0x52, 0x03, 0x2d, 0x01, 0x4f, 0xfe, 0x8e, 0xfb, 0xcd, 0xf9, + 0xa4, 0xf7, 0x06, 0xf6, 0x25, 0xf5, 0xdc, 0xf4, 0xa2, 0xf4, 0xfc, 0xf3, 0xb3, 0xf3, 0x2b, 0xf3, + 0x0c, 0xf3, 0x2f, 0xf3, 0x29, 0xf3, 0x4e, 0xf3, 0x61, 0xf4, 0x48, 0xf6, 0xd4, 0xf8, 0xe4, 0xfb, + 0x8f, 0xfe, 0x58, 0x01, 0x88, 0x05, 0xe3, 0x09, 0x5f, 0x0d, 0xd5, 0x0f, 0x01, 0x12, 0x27, 0x13, + 0x6b, 0x13, 0xeb, 0x12, 0x85, 0x10, 0x9d, 0x0d, 0x78, 0x0b, 0x5b, 0x09, 0x72, 0x06, 0xd8, 0x03, + 0x47, 0x01, 0x97, 0x00, 0x28, 0x00, 0x16, 0xff, 0xba, 0xfe, 0x4b, 0xff, 0xe6, 0xff, 0x6e, 0x00, + 0x14, 0x01, 0x60, 0x01, 0xcb, 0x00, 0x1a, 0xff, 0xc6, 0xfc, 0x74, 0xfb, 0xc3, 0xf9, 0x5f, 0xf8, + 0x1d, 0xf7, 0x18, 0xf5, 0x3c, 0xf4, 0x5f, 0xf3, 0xb6, 0xf1, 0x85, 0xf0, 0x8b, 0xef, 0x9f, 0xee, + 0x17, 0xee, 0x84, 0xed, 0xbc, 0xec, 0xa3, 0xec, 0xd4, 0xec, 0x48, 0xed, 0x9a, 0xee, 0x68, 0xf0, + 0xb7, 0xf2, 0xe0, 0xf5, 0xf5, 0xf9, 0xf3, 0xfe, 0xc0, 0x03, 0x55, 0x08, 0xf7, 0x0c, 0x2c, 0x10, + 0x44, 0x12, 0x65, 0x13, 0xf1, 0x12, 0x3c, 0x11, 0xe5, 0x0f, 0xa2, 0x0f, 0x4d, 0x0f, 0x03, 0x0f, + 0xb7, 0x0e, 0x1d, 0x0f, 0xf8, 0x0e, 0xb6, 0x0e, 0xdd, 0x0e, 0x39, 0x0e, 0x58, 0x0d, 0xa4, 0x0c, + 0x8f, 0x0b, 0xd4, 0x0a, 0x88, 0x09, 0xb1, 0x06, 0xd7, 0x03, 0x58, 0x01, 0xb6, 0xfe, 0xe4, 0xfb, + 0x44, 0xf9, 0x96, 0xf6, 0x70, 0xf4, 0x8b, 0xf2, 0x1e, 0xf1, 0x47, 0xf0, 0xd2, 0xef, 0x55, 0xee, + 0x91, 0xed, 0xd8, 0xec, 0xc7, 0xeb, 0x3c, 0xeb, 0x41, 0xeb, 0xe3, 0xeb, 0xc5, 0xed, 0x22, 0xf1, + 0xcf, 0xf3, 0x50, 0xf6, 0x8c, 0xf9, 0x70, 0xfd, 0xfa, 0x01, 0xd0, 0x05, 0xd4, 0x09, 0xbb, 0x0d, + 0x74, 0x10, 0xd0, 0x11, 0xeb, 0x11, 0x31, 0x12, 0x18, 0x12, 0x70, 0x12, 0x03, 0x12, 0x49, 0x11, + 0x29, 0x11, 0x97, 0x10, 0xc8, 0x10, 0x33, 0x11, 0x50, 0x11, 0x0a, 0x12, 0x8b, 0x12, 0xa4, 0x12, + 0x1f, 0x12, 0x8f, 0x11, 0x8a, 0x10, 0x01, 0x0e, 0xf2, 0x09, 0x54, 0x06, 0xa5, 0x03, 0x0d, 0x00, + 0x91, 0xfc, 0xe0, 0xf8, 0x4a, 0xf5, 0xb8, 0xf2, 0x05, 0xf1, 0x80, 0xef, 0xa9, 0xed, 0xfe, 0xeb, + 0xcf, 0xea, 0x2d, 0xea, 0x38, 0xe9, 0x7c, 0xe8, 0x0f, 0xe9, 0x7e, 0xe9, 0x12, 0xeb, 0x68, 0xed, + 0xb9, 0xef, 0x8e, 0xf2, 0x65, 0xf6, 0x44, 0xfb, 0x4d, 0x00, 0x76, 0x05, 0x8e, 0x09, 0x03, 0x0e, + 0xcf, 0x10, 0xd0, 0x12, 0x5f, 0x13, 0x46, 0x13, 0xf8, 0x12, 0x4e, 0x11, 0x37, 0x10, 0x76, 0x0f, + 0x37, 0x0f, 0x2d, 0x0e, 0x58, 0x0d, 0xd6, 0x0c, 0x7a, 0x0c, 0x18, 0x0c, 0x5b, 0x0b, 0x3b, 0x0a, + 0xc9, 0x08, 0x4a, 0x07, 0x7d, 0x06, 0xc5, 0x04, 0xd8, 0x01, 0x4d, 0xff, 0xba, 0xfc, 0x59, 0xf9, + 0x05, 0xf6, 0x1d, 0xf3, 0x3c, 0xf0, 0x5f, 0xee, 0xcd, 0xec, 0x8b, 0xeb, 0x05, 0xeb, 0x01, 0xea, + 0xf0, 0xe8, 0xd9, 0xe8, 0xd4, 0xe8, 0x37, 0xe8, 0x4b, 0xe8, 0x2e, 0xe9, 0x0e, 0xea, 0x16, 0xec, + 0x6e, 0xee, 0xc7, 0xf0, 0x73, 0xf3, 0xff, 0xf6, 0xc3, 0xfb, 0x3c, 0x00, 0x68, 0x03, 0x5b, 0x06, + 0x56, 0x09, 0xfb, 0x0a, 0x61, 0x0b, 0xf3, 0x0a, 0xc1, 0x09, 0x1b, 0x08, 0x8b, 0x06, 0xda, 0x04, + 0x0e, 0x04, 0x46, 0x03, 0x76, 0x03, 0xea, 0x04, 0x02, 0x06, 0x5d, 0x06, 0xec, 0x07, 0x54, 0x09, + 0xb3, 0x0a, 0xd5, 0x0b, 0x80, 0x0c, 0xe7, 0x0c, 0x7d, 0x0c, 0xe8, 0x0a, 0x21, 0x09, 0xf1, 0x06, + 0x2b, 0x05, 0xdc, 0x02, 0x00, 0x00, 0x59, 0xfd, 0xee, 0xfa, 0xa7, 0xf9, 0x78, 0xf7, 0xd2, 0xf4, + 0xeb, 0xf1, 0xf3, 0xef, 0xc0, 0xee, 0xc6, 0xec, 0x1d, 0xeb, 0x90, 0xea, 0x01, 0xea, 0x83, 0xea, + 0x02, 0xec, 0xbf, 0xed, 0xa6, 0xf0, 0x29, 0xf4, 0x52, 0xf8, 0x83, 0xfd, 0xcf, 0x01, 0xd7, 0x05, + 0x8a, 0x09, 0x04, 0x0c, 0x68, 0x0e, 0xc9, 0x0e, 0x12, 0x0f, 0x09, 0x0f, 0x04, 0x0e, 0xc2, 0x0d, + 0x58, 0x0e, 0x63, 0x0f, 0xb7, 0x0f, 0x84, 0x10, 0x31, 0x11, 0xd1, 0x11, 0x44, 0x12, 0x2d, 0x12, + 0xf4, 0x11, 0xb1, 0x11, 0xf0, 0x11, 0xe1, 0x10, 0xae, 0x0e, 0xef, 0x0b, 0x7a, 0x09, 0x90, 0x06, + 0x9c, 0x03, 0x58, 0x01, 0x77, 0xff, 0x89, 0xfd, 0x77, 0xfb, 0x9e, 0xf9, 0x67, 0xf8, 0xb4, 0xf6, + 0xc2, 0xf5, 0x31, 0xf5, 0xbf, 0xf4, 0x4a, 0xf4, 0x61, 0xf3, 0xca, 0xf3, 0x86, 0xf4, 0xcf, 0xf4, + 0x65, 0xf6, 0xc4, 0xf8, 0xea, 0xfa, 0x18, 0xfd, 0x4e, 0x00, 0x4e, 0x04, 0xaa, 0x07, 0x56, 0x0a, + 0xa5, 0x0d, 0xd2, 0x0e, 0xd6, 0x0f, 0x53, 0x0f, 0x2f, 0x0e, 0x52, 0x0c, 0xa8, 0x09, 0xd2, 0x07, + 0x0d, 0x06, 0x77, 0x04, 0xca, 0x02, 0xda, 0x00, 0xf1, 0x00, 0x7e, 0x01, 0x40, 0x01, 0xd5, 0x01, + 0xc6, 0x01, 0x41, 0x02, 0x85, 0x02, 0x19, 0x02, 0x57, 0x01, 0xb9, 0xff, 0x50, 0xfd, 0x47, 0xfb, + 0x99, 0xf9, 0x9b, 0xf7, 0x13, 0xf6, 0xa7, 0xf4, 0x1e, 0xf3, 0xd2, 0xf1, 0x3d, 0xf1, 0xfe, 0xf0, + 0xa4, 0xf0, 0xfe, 0xef, 0x52, 0xef, 0xd1, 0xee, 0xd3, 0xed, 0xb4, 0xed, 0x33, 0xee, 0xc6, 0xee, + 0x68, 0xf0, 0x73, 0xf2, 0xd6, 0xf4, 0x17, 0xf8, 0x48, 0xfb, 0x8c, 0xff, 0xf7, 0x02, 0x91, 0x05, + 0x91, 0x09, 0xa3, 0x0b, 0xaa, 0x0c, 0xf0, 0x0c, 0xa2, 0x0c, 0x56, 0x0c, 0xfb, 0x0a, 0x68, 0x09, + 0xf1, 0x08, 0xb2, 0x08, 0x9a, 0x07, 0xa8, 0x06, 0x6c, 0x06, 0xd1, 0x06, 0x8c, 0x06, 0xf5, 0x06, + 0x97, 0x06, 0x02, 0x06, 0x97, 0x05, 0x21, 0x05, 0x0d, 0x05, 0xf2, 0x03, 0xce, 0x01, 0x2a, 0x00, + 0xe1, 0xfd, 0x36, 0xfc, 0x1f, 0xfa, 0x6b, 0xf7, 0xb2, 0xf6, 0x40, 0xf6, 0xc9, 0xf5, 0xe8, 0xf4, + 0xa2, 0xf4, 0xe2, 0xf4, 0x9b, 0xf4, 0xb0, 0xf4, 0xfa, 0xf4, 0x82, 0xf5, 0xf4, 0xf5, 0x54, 0xf6, + 0x5d, 0xf7, 0x3d, 0xf9, 0x1e, 0xfb, 0x11, 0xfe, 0x78, 0x01, 0xfe, 0x04, 0x3d, 0x09, 0xc5, 0x0c, + 0xbd, 0x0f, 0x8f, 0x11, 0xed, 0x11, 0xda, 0x11, 0x72, 0x11, 0x84, 0x10, 0x95, 0x0d, 0x24, 0x0b, + 0x35, 0x09, 0xf9, 0x06, 0xc8, 0x05, 0x22, 0x04, 0xb9, 0x03, 0xbd, 0x04, 0x3a, 0x04, 0x2e, 0x04, + 0xfd, 0x04, 0xff, 0x05, 0x1c, 0x06, 0xa4, 0x05, 0xb5, 0x05, 0x72, 0x05, 0x34, 0x04, 0x2d, 0x02, + 0xbd, 0xff, 0xb4, 0xfd, 0x16, 0xfb, 0x56, 0xf8, 0x0e, 0xf7, 0x38, 0xf5, 0xae, 0xf3, 0x41, 0xf2, + 0xb0, 0xf0, 0xb5, 0xef, 0xfc, 0xed, 0xed, 0xec, 0x78, 0xec, 0x52, 0xec, 0x56, 0xed, 0xfa, 0xec, + 0xfc, 0xec, 0x12, 0xef, 0xe5, 0xf0, 0xfd, 0xf2, 0x53, 0xf6, 0x24, 0xfb, 0x6d, 0x00, 0x49, 0x04, + 0x6a, 0x07, 0xed, 0x0a, 0xef, 0x0c, 0xa0, 0x0e, 0xe5, 0x0f, 0x82, 0x10, 0x5c, 0x10, 0x13, 0x0f, + 0xb1, 0x0d, 0x6f, 0x0c, 0xa9, 0x0b, 0x76, 0x0a, 0xbd, 0x09, 0xa1, 0x09, 0x01, 0x09, 0x5a, 0x08, + 0xbf, 0x07, 0x1e, 0x07, 0xe5, 0x06, 0xd5, 0x05, 0xd5, 0x04, 0xfb, 0x03, 0x40, 0x01, 0x97, 0xfe, + 0x04, 0xfc, 0x4f, 0xf9, 0x35, 0xf7, 0xa9, 0xf4, 0x4b, 0xf3, 0x23, 0xf2, 0xd6, 0xf0, 0xbd, 0xef, + 0x5c, 0xef, 0xb5, 0xef, 0xf0, 0xee, 0x4e, 0xee, 0xc9, 0xee, 0x04, 0xef, 0x57, 0xf0, 0x1e, 0xf2, + 0x98, 0xf3, 0x0e, 0xf6, 0x5c, 0xf8, 0x85, 0xfb, 0x88, 0xff, 0xcd, 0x03, 0x31, 0x08, 0x9e, 0x0c, + 0x5c, 0x10, 0x8f, 0x13, 0xdc, 0x15, 0xcd, 0x17, 0x12, 0x18, 0x75, 0x18, 0x25, 0x18, 0x54, 0x15, + 0xe7, 0x12, 0x2f, 0x11, 0xd9, 0x0f, 0x04, 0x0e, 0x2e, 0x0c, 0x1d, 0x0c, 0xa0, 0x0c, 0x5a, 0x0b, + 0x5e, 0x0a, 0xb6, 0x0a, 0x07, 0x0b, 0x37, 0x0a, 0x6c, 0x09, 0x4f, 0x08, 0x4a, 0x06, 0x91, 0x03, + 0x9a, 0x00, 0xcc, 0xfd, 0xab, 0xfa, 0xd9, 0xf7, 0x68, 0xf5, 0x64, 0xf3, 0x28, 0xf1, 0x0e, 0xef, + 0x1b, 0xed, 0x34, 0xec, 0x6b, 0xeb, 0xa5, 0xe9, 0x80, 0xe9, 0x40, 0xe8, 0xcd, 0xe7, 0x62, 0xe8, + 0x32, 0xe8, 0xa1, 0xe9, 0x1f, 0xeb, 0x5f, 0xed, 0xe9, 0xf0, 0xba, 0xf4, 0xa9, 0xf8, 0xb1, 0xfd, + 0x94, 0x02, 0xfc, 0x06, 0xf6, 0x09, 0xda, 0x0c, 0xce, 0x0e, 0x34, 0x10, 0xf4, 0x11, 0x38, 0x12, + 0x0c, 0x13, 0xa7, 0x12, 0x1f, 0x12, 0x8c, 0x11, 0x69, 0x10, 0x67, 0x10, 0x50, 0x10, 0x41, 0x0f, + 0x14, 0x0f, 0x91, 0x0e, 0x50, 0x0e, 0x6a, 0x0d, 0x05, 0x0b, 0x8c, 0x09, 0x08, 0x08, 0x68, 0x04, + 0x3f, 0x00, 0x77, 0xfc, 0x3d, 0xf8, 0x1b, 0xf4, 0x1e, 0xf0, 0xa7, 0xed, 0xab, 0xeb, 0x3f, 0xea, + 0x14, 0xe9, 0x3b, 0xe8, 0x83, 0xe7, 0x81, 0xe6, 0x2d, 0xe6, 0x45, 0xe6, 0x67, 0xe6, 0x8e, 0xe7, + 0x58, 0xe9, 0x6c, 0xeb, 0x56, 0xed, 0xab, 0xef, 0x97, 0xf3, 0xfb, 0xf7, 0xd0, 0xfc, 0xcd, 0x01, + 0xe9, 0x05, 0x55, 0x0a, 0xf8, 0x0c, 0x76, 0x0f, 0x1a, 0x11, 0xf4, 0x10, 0x6b, 0x11, 0xcc, 0x10, + 0xb7, 0x0f, 0x6b, 0x0e, 0xec, 0x0c, 0xcf, 0x0b, 0xcf, 0x0a, 0x58, 0x0a, 0x84, 0x0a, 0xbe, 0x0a, + 0x74, 0x0b, 0xe5, 0x0b, 0xd1, 0x0c, 0x12, 0x0d, 0x48, 0x0c, 0x33, 0x0c, 0x6e, 0x0b, 0x6b, 0x0a, + 0x1b, 0x09, 0x41, 0x07, 0xde, 0x04, 0xdd, 0x01, 0xd7, 0xfe, 0x08, 0xfd, 0x67, 0xfa, 0x15, 0xf8, + 0x0e, 0xf6, 0xe6, 0xf3, 0x60, 0xf2, 0x5c, 0xf0, 0x91, 0xee, 0xe5, 0xed, 0x42, 0xed, 0x53, 0xed, + 0x80, 0xed, 0x73, 0xed, 0x05, 0xee, 0x79, 0xee, 0x43, 0xf0, 0x79, 0xf3, 0x01, 0xf7, 0x7f, 0xfb, + 0x9b, 0x00, 0x56, 0x04, 0xe9, 0x06, 0x32, 0x09, 0xce, 0x0b, 0x6b, 0x0d, 0x62, 0x0e, 0xf3, 0x0e, + 0x72, 0x0f, 0x6f, 0x0f, 0x42, 0x0e, 0xfa, 0x0d, 0x1b, 0x0e, 0x7a, 0x0e, 0xfa, 0x0f, 0xf7, 0x0f, + 0xe9, 0x10, 0xc9, 0x11, 0x03, 0x12, 0x74, 0x12, 0x9d, 0x12, 0x8d, 0x11, 0x59, 0x10, 0x65, 0x0e, + 0x29, 0x0c, 0x57, 0x08, 0x3c, 0x05, 0x54, 0x03, 0x1c, 0xfe, 0x6d, 0xfb, 0x7a, 0xf9, 0xd2, 0xf7, + 0x59, 0xf6, 0xe9, 0xf2, 0x8f, 0xf1, 0xd0, 0xef, 0xeb, 0xec, 0xe0, 0xec, 0x83, 0xec, 0xeb, 0xea, + 0xbb, 0xeb, 0x9f, 0xed, 0x3b, 0xed, 0x19, 0xee, 0x5e, 0xf0, 0x5a, 0xf3, 0xc2, 0xf6, 0x8b, 0xfa, + 0x94, 0xff, 0x4b, 0x02, 0xcf, 0x05, 0xb0, 0x09, 0xba, 0x0a, 0x99, 0x0b, 0x79, 0x0d, 0x9f, 0x0e, + 0xe1, 0x0d, 0x62, 0x0e, 0x03, 0x0e, 0x18, 0x0b, 0x41, 0x09, 0xf2, 0x08, 0x54, 0x08, 0x1b, 0x07, + 0x6a, 0x08, 0x8b, 0x08, 0x4f, 0x07, 0x13, 0x08, 0x29, 0x09, 0x0c, 0x09, 0x31, 0x08, 0x0e, 0x06, + 0xf6, 0x04, 0x8f, 0x03, 0x00, 0x01, 0x06, 0xfe, 0x49, 0xfa, 0x20, 0xf8, 0x5e, 0xf6, 0x69, 0xf4, + 0x71, 0xf2, 0x12, 0xf1, 0x94, 0xef, 0x68, 0xee, 0x79, 0xee, 0x44, 0xee, 0xa7, 0xed, 0x69, 0xec, + 0x6c, 0xec, 0x99, 0xec, 0x78, 0xec, 0xfd, 0xec, 0x7d, 0xf0, 0xa1, 0xf2, 0xa4, 0xf4, 0xd7, 0xf7, + 0x67, 0xfb, 0xbc, 0xff, 0xd0, 0x03, 0x2f, 0x05, 0xa5, 0x06, 0xf7, 0x07, 0xe6, 0x07, 0x99, 0x08, + 0xe9, 0x08, 0x98, 0x09, 0xbd, 0x08, 0x41, 0x07, 0x14, 0x06, 0x73, 0x05, 0xbe, 0x04, 0x47, 0x05, + 0x24, 0x05, 0xaf, 0x04, 0x94, 0x05, 0x3e, 0x07, 0x8a, 0x07, 0xc7, 0x06, 0x12, 0x06, 0x79, 0x04, + 0x42, 0x02, 0x10, 0x01, 0x23, 0x00, 0x03, 0xfe, 0xd7, 0xfa, 0xa2, 0xf8, 0x72, 0xf8, 0x1e, 0xf8, + 0xd8, 0xf8, 0x5d, 0xf9, 0x76, 0xf8, 0x9f, 0xf8, 0x75, 0xf8, 0x7f, 0xf8, 0x14, 0xf8, 0xce, 0xf7, + 0x88, 0xf8, 0xc4, 0xf8, 0xbc, 0xf9, 0xac, 0xfa, 0xb6, 0xfb, 0x83, 0xfd, 0x41, 0x00, 0x91, 0x03, + 0xd5, 0x06, 0x2d, 0x0a, 0xd4, 0x0c, 0x95, 0x0e, 0x6f, 0x0f, 0x1a, 0x10, 0xdc, 0x0f, 0x4b, 0x0e, + 0x11, 0x0d, 0x5d, 0x0c, 0x2a, 0x09, 0xbc, 0x05, 0xd7, 0x03, 0xff, 0x02, 0x6e, 0x02, 0xcf, 0x00, + 0x3f, 0x00, 0x80, 0x01, 0xe2, 0x02, 0x09, 0x04, 0xa2, 0x05, 0xa3, 0x06, 0xe9, 0x06, 0xec, 0x05, + 0x58, 0x05, 0xb2, 0x05, 0x4c, 0x05, 0xb3, 0x03, 0x15, 0x02, 0xe1, 0xff, 0xa9, 0xfd, 0x29, 0xfc, + 0x38, 0xfb, 0x49, 0xfa, 0xb4, 0xf8, 0x24, 0xf8, 0x4c, 0xf7, 0x0e, 0xf6, 0x55, 0xf5, 0x87, 0xf4, + 0x62, 0xf3, 0x42, 0xf3, 0x49, 0xf3, 0xde, 0xf2, 0xb6, 0xf2, 0xd8, 0xf3, 0xc9, 0xf5, 0xc5, 0xf7, + 0x13, 0xfb, 0xc3, 0xff, 0xbe, 0x03, 0x9f, 0x05, 0x2d, 0x07, 0x9d, 0x08, 0x09, 0x09, 0xb3, 0x09, + 0x77, 0x0a, 0xff, 0x0a, 0x0a, 0x0b, 0x95, 0x09, 0x9c, 0x08, 0x3d, 0x08, 0xc2, 0x07, 0x3f, 0x07, + 0xfb, 0x06, 0x9c, 0x07, 0xce, 0x07, 0xce, 0x07, 0xe4, 0x07, 0xac, 0x08, 0x9c, 0x08, 0xff, 0x05, + 0x7f, 0x04, 0x4d, 0x03, 0xb2, 0x00, 0xc8, 0xfd, 0x6d, 0xfa, 0x92, 0xf7, 0x06, 0xf6, 0xf5, 0xf3, + 0x8f, 0xf1, 0x93, 0xf0, 0x81, 0xef, 0xac, 0xee, 0x7c, 0xee, 0x7e, 0xed, 0xf7, 0xec, 0xf2, 0xec, + 0x44, 0xed, 0x14, 0xef, 0xaa, 0xf1, 0x48, 0xf4, 0x04, 0xf6, 0x1a, 0xf8, 0xb4, 0xfb, 0x75, 0x00, + 0x6f, 0x05, 0xbc, 0x09, 0x27, 0x0d, 0xe3, 0x10, 0x2a, 0x14, 0x90, 0x15, 0x0b, 0x17, 0x5f, 0x17, + 0xd8, 0x16, 0x27, 0x16, 0x67, 0x15, 0x10, 0x13, 0xe5, 0x0f, 0xc2, 0x0d, 0xeb, 0x0b, 0x28, 0x0a, + 0x5c, 0x08, 0x44, 0x08, 0x8e, 0x08, 0x45, 0x07, 0x9d, 0x06, 0x86, 0x06, 0x2c, 0x06, 0xba, 0x04, + 0x33, 0x03, 0x2e, 0x02, 0x8f, 0xff, 0xce, 0xfc, 0x2c, 0xfa, 0x24, 0xf7, 0xb8, 0xf4, 0xcb, 0xf2, + 0x8d, 0xf1, 0x5f, 0xf0, 0xa2, 0xef, 0xf6, 0xee, 0xc6, 0xee, 0xec, 0xef, 0xf5, 0xef, 0xe3, 0xef, + 0xed, 0xef, 0xdf, 0xef, 0xa5, 0xf0, 0x93, 0xf1, 0x87, 0xf1, 0x00, 0xf3, 0xcf, 0xf5, 0x94, 0xf9, + 0xad, 0xfd, 0x44, 0x01, 0x7f, 0x05, 0x87, 0x09, 0xb1, 0x0c, 0xb4, 0x0e, 0xcd, 0x0f, 0x4f, 0x10, + 0xe6, 0x10, 0x25, 0x11, 0xc4, 0x10, 0xca, 0x0f, 0x12, 0x0e, 0x0d, 0x0c, 0x3d, 0x0a, 0x42, 0x08, + 0x1a, 0x07, 0xd3, 0x06, 0x53, 0x06, 0xec, 0x05, 0x8a, 0x05, 0x36, 0x05, 0xad, 0x04, 0x65, 0x03, + 0x8b, 0x00, 0x7e, 0xfe, 0xfb, 0xfc, 0x7d, 0xfa, 0xe4, 0xf7, 0x2a, 0xf5, 0xdd, 0xf2, 0xb7, 0xf0, + 0xde, 0xee, 0xd1, 0xed, 0xbf, 0xec, 0x5c, 0xeb, 0x74, 0xea, 0x5b, 0xea, 0xbf, 0xe9, 0xfd, 0xe8, + 0x94, 0xe9, 0x23, 0xea, 0xcd, 0xea, 0xbc, 0xec, 0x7e, 0xee, 0x9d, 0xf0, 0xdf, 0xf2, 0x79, 0xf6, + 0xaa, 0xfa, 0x6a, 0xfe, 0xe3, 0x02, 0x17, 0x06, 0x3d, 0x0a, 0x62, 0x0e, 0x2b, 0x11, 0xcd, 0x12, + 0xe6, 0x13, 0x3b, 0x14, 0x4e, 0x14, 0x66, 0x13, 0xa7, 0x11, 0x5a, 0x10, 0x92, 0x0f, 0x1e, 0x0f, + 0x8a, 0x0e, 0x9d, 0x0d, 0x61, 0x0d, 0xa7, 0x0d, 0xbb, 0x0d, 0xfe, 0x0d, 0x8a, 0x0d, 0xf1, 0x0c, + 0x68, 0x0b, 0x6e, 0x09, 0x88, 0x07, 0xe1, 0x05, 0xb3, 0x03, 0xcf, 0x00, 0xce, 0xfd, 0x62, 0xfa, + 0x95, 0xf7, 0xca, 0xf4, 0xb2, 0xf2, 0xa8, 0xf0, 0xd7, 0xee, 0xa1, 0xed, 0x9f, 0xec, 0x2f, 0xeb, + 0xde, 0xe9, 0xfa, 0xe8, 0x93, 0xe8, 0x8e, 0xe9, 0xeb, 0xe9, 0x45, 0xea, 0xfc, 0xeb, 0x32, 0xee, + 0x14, 0xf2, 0xb1, 0xf6, 0x2d, 0xfb, 0xaf, 0xff, 0x54, 0x03, 0xe7, 0x06, 0x21, 0x09, 0x99, 0x0a, + 0xf1, 0x0c, 0xda, 0x0e, 0x37, 0x10, 0xd8, 0x10, 0xc6, 0x11, 0x76, 0x11, 0xd0, 0x10, 0xe2, 0x10, + 0x0a, 0x10, 0x4e, 0x10, 0x71, 0x11, 0x14, 0x11, 0xf7, 0x10, 0x76, 0x11, 0x75, 0x11, 0x75, 0x11, + 0xa2, 0x0f, 0x21, 0x0d, 0x56, 0x0b, 0xe3, 0x08, 0x64, 0x05, 0x69, 0x01, 0xc0, 0xfd, 0xa1, 0xfa, + 0x16, 0xf8, 0xcb, 0xf5, 0x95, 0xf3, 0xce, 0xf1, 0xe4, 0xf0, 0x9c, 0xef, 0xbf, 0xee, 0x8a, 0xed, + 0x40, 0xed, 0x23, 0xed, 0x8f, 0xed, 0x2d, 0xef, 0x7c, 0xf1, 0x3f, 0xf3, 0x6c, 0xf4, 0xee, 0xf6, + 0x71, 0xfa, 0x6d, 0xfe, 0x3e, 0x02, 0x76, 0x06, 0xbc, 0x09, 0xda, 0x0c, 0xfb, 0x0e, 0x88, 0x10, + 0xd0, 0x11, 0x8e, 0x12, 0xae, 0x12, 0x05, 0x12, 0xa9, 0x10, 0xed, 0x0e, 0x85, 0x0c, 0xa8, 0x09, + 0x42, 0x08, 0x6d, 0x07, 0xb1, 0x07, 0xd8, 0x07, 0x5c, 0x08, 0x21, 0x09, 0xda, 0x08, 0x8d, 0x09, + 0x3c, 0x09, 0xdf, 0x08, 0xed, 0x07, 0x2c, 0x06, 0xc7, 0x04, 0x1c, 0x02, 0x3f, 0xff, 0x86, 0xfc, + 0x86, 0xf9, 0x83, 0xf7, 0x9a, 0xf5, 0x75, 0xf3, 0x4d, 0xf1, 0x97, 0xef, 0x9d, 0xef, 0xc3, 0xee, + 0x0a, 0xed, 0xdd, 0xeb, 0x00, 0xeb, 0xc7, 0xe9, 0x18, 0xe9, 0x7f, 0xe8, 0xb1, 0xe8, 0x00, 0xea, + 0x3e, 0xec, 0xde, 0xef, 0x07, 0xf3, 0x25, 0xf6, 0x83, 0xf9, 0x1f, 0xfd, 0x41, 0xff, 0xfa, 0x00, + 0xdf, 0x02, 0x24, 0x04, 0x38, 0x05, 0xfb, 0x05, 0xc3, 0x06, 0xb6, 0x07, 0xb8, 0x07, 0xac, 0x07, + 0x1f, 0x08, 0xf9, 0x07, 0x09, 0x09, 0xec, 0x09, 0x23, 0x0a, 0xc5, 0x0a, 0x7c, 0x0b, 0x36, 0x0c, + 0xc4, 0x0c, 0x10, 0x0c, 0xf2, 0x0a, 0xd4, 0x09, 0x32, 0x08, 0x55, 0x06, 0x9b, 0x03, 0x07, 0x01, + 0x04, 0xfe, 0x7f, 0xfc, 0xf3, 0xfa, 0x47, 0xf9, 0x92, 0xf8, 0xc6, 0xf6, 0x28, 0xf6, 0x60, 0xf5, + 0x27, 0xf4, 0xe4, 0xf3, 0xae, 0xf3, 0xbf, 0xf3, 0xb8, 0xf3, 0xf7, 0xf3, 0xb2, 0xf5, 0xc1, 0xf6, + 0x25, 0xf8, 0xeb, 0xfa, 0xd4, 0xfd, 0x06, 0x01, 0xd3, 0x03, 0xb6, 0x06, 0x4b, 0x09, 0x77, 0x0b, + 0xa8, 0x0c, 0x7c, 0x0d, 0x9d, 0x0d, 0x66, 0x0d, 0x5b, 0x0c, 0x00, 0x0b, 0x07, 0x09, 0xe7, 0x06, + 0x28, 0x05, 0x80, 0x04, 0xb6, 0x04, 0x42, 0x04, 0xd4, 0x04, 0xb8, 0x05, 0x0d, 0x07, 0xbe, 0x07, + 0x2f, 0x08, 0xf8, 0x07, 0xd4, 0x06, 0x07, 0x06, 0x89, 0x05, 0x3e, 0x05, 0x8f, 0x03, 0x5d, 0x02, + 0x7d, 0x00, 0x23, 0xfe, 0x88, 0xfc, 0x7b, 0xfb, 0xd5, 0xfa, 0xb9, 0xf9, 0xd8, 0xf8, 0x07, 0xf9, + 0x1e, 0xf8, 0xcf, 0xf6, 0x43, 0xf6, 0x9c, 0xf4, 0x42, 0xf4, 0x76, 0xf4, 0x2f, 0xf5, 0x1c, 0xf5, + 0x12, 0xf5, 0x2b, 0xf7, 0x50, 0xf9, 0x40, 0xfc, 0x1b, 0xfe, 0x53, 0x00, 0xca, 0x02, 0x5d, 0x03, + 0x28, 0x04, 0xda, 0x04, 0x20, 0x05, 0xc0, 0x05, 0xa6, 0x05, 0xb4, 0x05, 0xed, 0x05, 0x88, 0x04, + 0x70, 0x03, 0xd4, 0x02, 0xb3, 0x02, 0xc6, 0x02, 0x22, 0x03, 0xc4, 0x03, 0x26, 0x05, 0x72, 0x06, + 0xf4, 0x06, 0xe2, 0x06, 0x3e, 0x06, 0x23, 0x05, 0xd9, 0x03, 0x09, 0x02, 0x6d, 0xff, 0xe6, 0xfc, + 0xf8, 0xf9, 0xc7, 0xf7, 0x08, 0xf6, 0x61, 0xf4, 0x40, 0xf3, 0x54, 0xf2, 0x63, 0xf1, 0xfe, 0xf0, + 0xb6, 0xf0, 0x1f, 0xf0, 0xeb, 0xef, 0x23, 0xf0, 0x5f, 0xf1, 0xfc, 0xf2, 0x09, 0xf5, 0xcd, 0xf7, + 0x3a, 0xfa, 0xc4, 0xfc, 0x24, 0x00, 0x0b, 0x04, 0xc2, 0x08, 0xda, 0x0b, 0x0a, 0x0f, 0x99, 0x11, + 0xdf, 0x12, 0x8e, 0x14, 0xde, 0x14, 0xb3, 0x14, 0x63, 0x13, 0xcd, 0x12, 0x8e, 0x11, 0x94, 0x0e, + 0x1e, 0x0c, 0x7c, 0x09, 0x02, 0x09, 0xf4, 0x08, 0x0a, 0x08, 0x5d, 0x08, 0x96, 0x08, 0xb0, 0x08, + 0x9d, 0x08, 0xc4, 0x07, 0xf2, 0x06, 0xf7, 0x05, 0xf2, 0x03, 0x49, 0x02, 0x2d, 0x00, 0xf4, 0xfd, + 0x9d, 0xfb, 0x15, 0xf9, 0x57, 0xf7, 0x95, 0xf5, 0x4d, 0xf4, 0xe1, 0xf3, 0xca, 0xf2, 0xf2, 0xf2, + 0x30, 0xf3, 0xf8, 0xf2, 0x04, 0xf3, 0x5e, 0xf3, 0x4b, 0xf3, 0x76, 0xf3, 0xb8, 0xf3, 0x74, 0xf4, + 0x68, 0xf6, 0x27, 0xf8, 0x77, 0xfb, 0x4e, 0xff, 0x00, 0x03, 0x70, 0x05, 0xdb, 0x07, 0x02, 0x0a, + 0x4c, 0x0b, 0x4d, 0x0c, 0x4a, 0x0c, 0x7c, 0x0c, 0xe7, 0x0c, 0x75, 0x0c, 0x1d, 0x0c, 0xa1, 0x0b, + 0xf3, 0x09, 0x38, 0x08, 0x3e, 0x06, 0xf1, 0x04, 0xdd, 0x03, 0x1d, 0x03, 0xd5, 0x02, 0xa7, 0x02, + 0x65, 0x02, 0xbb, 0x01, 0xab, 0x01, 0x5a, 0x00, 0xf0, 0xfd, 0x4b, 0xfc, 0x56, 0xfa, 0x7f, 0xf8, + 0x12, 0xf6, 0xd0, 0xf2, 0x30, 0xf1, 0x76, 0xef, 0xa1, 0xed, 0x87, 0xed, 0xe3, 0xec, 0x7a, 0xec, + 0x9e, 0xec, 0xad, 0xec, 0xd9, 0xec, 0x5f, 0xed, 0xfa, 0xed, 0xf2, 0xee, 0x59, 0xf0, 0x5f, 0xf2, + 0x1b, 0xf5, 0x8d, 0xf7, 0xdd, 0xfa, 0xbe, 0xfe, 0xd4, 0x02, 0x0f, 0x06, 0x8e, 0x09, 0x1b, 0x0d, + 0x2c, 0x10, 0x3e, 0x12, 0x97, 0x13, 0x22, 0x14, 0xd7, 0x13, 0xcf, 0x12, 0x8f, 0x11, 0x3e, 0x10, + 0xa9, 0x0d, 0xb9, 0x0b, 0x0d, 0x0a, 0x6c, 0x09, 0xee, 0x08, 0x48, 0x08, 0xde, 0x07, 0xed, 0x07, + 0x0d, 0x08, 0x14, 0x08, 0xee, 0x06, 0x91, 0x05, 0x1e, 0x04, 0x12, 0x02, 0x5a, 0x00, 0x99, 0xfe, + 0x53, 0xfd, 0x54, 0xfb, 0xea, 0xf8, 0x99, 0xf6, 0x15, 0xf4, 0xea, 0xf2, 0xc0, 0xf1, 0xaf, 0xf0, + 0x8e, 0xef, 0xd6, 0xee, 0xbb, 0xee, 0xa0, 0xed, 0xff, 0xec, 0x96, 0xec, 0xd0, 0xec, 0x11, 0xee, + 0x0c, 0xef, 0x41, 0xf0, 0x7f, 0xf2, 0x4f, 0xf5, 0x65, 0xf9, 0x56, 0xfd, 0xac, 0x00, 0x4c, 0x04, + 0xde, 0x07, 0xf5, 0x0a, 0x85, 0x0d, 0x27, 0x0f, 0xb7, 0x10, 0x48, 0x12, 0xe6, 0x12, 0x18, 0x14, + 0x1b, 0x14, 0x3d, 0x13, 0x4e, 0x12, 0xf7, 0x11, 0x2a, 0x11, 0x69, 0x10, 0x3e, 0x10, 0xc3, 0x10, + 0x2b, 0x11, 0xa6, 0x10, 0x1a, 0x10, 0xa2, 0x0e, 0x45, 0x0c, 0x77, 0x09, 0x89, 0x06, 0xe1, 0x02, + 0x7f, 0xff, 0xea, 0xfb, 0x2e, 0xf8, 0x52, 0xf5, 0xd1, 0xf2, 0xf1, 0xf0, 0xa4, 0xef, 0x16, 0xee, + 0x7d, 0xed, 0x84, 0xed, 0xc7, 0xec, 0x1a, 0xec, 0xa0, 0xeb, 0x3a, 0xec, 0xf1, 0xec, 0xdc, 0xee, + 0xfe, 0xf1, 0xa5, 0xf4, 0xef, 0xf7, 0x1a, 0xfb, 0x6f, 0xff, 0xbc, 0x03, 0xc1, 0x07, 0xd2, 0x0b, + 0x6e, 0x0e, 0x19, 0x11, 0x27, 0x13, 0xe5, 0x13, 0x4b, 0x14, 0xed, 0x13, 0xd9, 0x13, 0xbe, 0x13, + 0x47, 0x12, 0xb4, 0x10, 0x30, 0x0e, 0x21, 0x0c, 0x0b, 0x0b, 0x37, 0x0a, 0x44, 0x09, 0xdf, 0x08, + 0x93, 0x08, 0x85, 0x07, 0xa0, 0x06, 0x6e, 0x05, 0x7f, 0x03, 0x78, 0x01, 0xd6, 0xff, 0xba, 0xfd, + 0xbc, 0xfb, 0x1e, 0xf9, 0xaa, 0xf6, 0x10, 0xf4, 0xc9, 0xf1, 0x6d, 0xef, 0x2b, 0xee, 0xbc, 0xed, + 0x03, 0xed, 0xee, 0xec, 0x98, 0xec, 0x5b, 0xec, 0x3b, 0xec, 0x88, 0xec, 0x16, 0xec, 0x63, 0xec, + 0x22, 0xed, 0x80, 0xee, 0x0b, 0xf0, 0x11, 0xf2, 0x1e, 0xf5, 0x2f, 0xf9, 0x06, 0xfc, 0xcb, 0xfd, + 0x13, 0x00, 0x0a, 0x02, 0xfa, 0x03, 0xad, 0x04, 0xb9, 0x05, 0x9e, 0x06, 0x22, 0x07, 0x19, 0x08, + 0x94, 0x08, 0x03, 0x09, 0x34, 0x08, 0xab, 0x07, 0x5f, 0x07, 0x08, 0x07, 0x64, 0x08, 0x45, 0x09, + 0x6d, 0x0a, 0xe0, 0x0b, 0x5b, 0x0c, 0x0f, 0x0d, 0x95, 0x0c, 0x37, 0x0b, 0x25, 0x0a, 0x66, 0x08, + 0x40, 0x06, 0x03, 0x04, 0x8c, 0x01, 0x92, 0xfe, 0x93, 0xfc, 0x59, 0xfa, 0x66, 0xf8, 0x07, 0xf7, + 0x50, 0xf5, 0x04, 0xf4, 0x5e, 0xf3, 0x6d, 0xf2, 0xea, 0xf0, 0xe0, 0xef, 0xb4, 0xee, 0xd4, 0xee, + 0xd3, 0xee, 0x6b, 0xef, 0xa3, 0xf1, 0xfa, 0xf3, 0xa7, 0xf6, 0xde, 0xf9, 0xb0, 0xfc, 0xad, 0xff, + 0x55, 0x02, 0x06, 0x05, 0x34, 0x08, 0x9a, 0x09, 0x54, 0x0b, 0xd8, 0x0c, 0x62, 0x0d, 0x8c, 0x0d, + 0xa9, 0x0d, 0xe7, 0x0c, 0x67, 0x0c, 0x4a, 0x0b, 0xdd, 0x0a, 0x6a, 0x0b, 0x26, 0x0b, 0xc8, 0x0b, + 0x39, 0x0c, 0x3d, 0x0d, 0xc6, 0x0d, 0xc6, 0x0d, 0x40, 0x0d, 0x31, 0x0c, 0xed, 0x0a, 0x62, 0x09, + 0x4f, 0x08, 0xea, 0x06, 0x33, 0x05, 0x91, 0x03, 0xff, 0x00, 0x73, 0xfe, 0xe1, 0xfb, 0xab, 0xf9, + 0x98, 0xf8, 0xc8, 0xf6, 0xef, 0xf5, 0xb5, 0xf5, 0x43, 0xf4, 0x20, 0xf3, 0xf3, 0xf1, 0xf6, 0xf0, + 0x66, 0xf0, 0x94, 0xf0, 0xf7, 0xf0, 0xa8, 0xf1, 0x10, 0xf3, 0x65, 0xf5, 0x18, 0xf8, 0x60, 0xfa, + 0x6d, 0xfc, 0xa7, 0xfe, 0xff, 0x00, 0xe0, 0x02, 0x3a, 0x04, 0x37, 0x05, 0x15, 0x06, 0xf2, 0x06, + 0xb5, 0x07, 0xde, 0x07, 0xd4, 0x07, 0x2f, 0x07, 0x1d, 0x07, 0xaa, 0x06, 0xf0, 0x05, 0x12, 0x06, + 0x62, 0x06, 0x5a, 0x07, 0xcc, 0x07, 0xc5, 0x07, 0x53, 0x07, 0xa2, 0x06, 0xc0, 0x04, 0xba, 0x02, + 0x5a, 0x00, 0x7e, 0xfe, 0xdf, 0xfc, 0x94, 0xfa, 0x40, 0xf9, 0xac, 0xf7, 0xa1, 0xf6, 0x67, 0xf5, + 0xd8, 0xf4, 0x74, 0xf4, 0x0b, 0xf4, 0xd6, 0xf4, 0xca, 0xf4, 0x6b, 0xf4, 0x08, 0xf4, 0x47, 0xf4, + 0xa5, 0xf5, 0x0d, 0xf7, 0x88, 0xf9, 0xab, 0xfc, 0x58, 0xff, 0xc9, 0x02, 0x85, 0x05, 0x4c, 0x08, + 0x98, 0x0a, 0x15, 0x0c, 0x93, 0x0d, 0xdf, 0x0e, 0x47, 0x0f, 0x30, 0x0f, 0x3a, 0x0f, 0xde, 0x0e, + 0x77, 0x0e, 0x94, 0x0d, 0x48, 0x0c, 0x5c, 0x0a, 0xf9, 0x07, 0x14, 0x06, 0x6d, 0x05, 0x97, 0x05, + 0x3c, 0x05, 0xf5, 0x05, 0xae, 0x06, 0xcf, 0x06, 0xa0, 0x06, 0xd6, 0x05, 0x82, 0x04, 0x78, 0x03, + 0x6e, 0x02, 0x2f, 0x01, 0xa8, 0xff, 0x49, 0xfe, 0xf0, 0xfc, 0x2a, 0xfb, 0x25, 0xf9, 0x32, 0xf7, + 0x85, 0xf6, 0xe0, 0xf5, 0x31, 0xf5, 0x81, 0xf5, 0xa0, 0xf5, 0xb1, 0xf5, 0xfa, 0xf5, 0x6b, 0xf5, + 0x2c, 0xf5, 0x42, 0xf5, 0x80, 0xf5, 0xab, 0xf6, 0xc6, 0xf7, 0x02, 0xfa, 0xa5, 0xfc, 0x12, 0xff, + 0xef, 0x00, 0x73, 0x02, 0x47, 0x04, 0x66, 0x05, 0x45, 0x06, 0xf7, 0x06, 0x93, 0x06, 0xef, 0x06, + 0x0a, 0x07, 0x43, 0x06, 0x38, 0x06, 0x53, 0x05, 0x75, 0x04, 0xa0, 0x03, 0xc6, 0x02, 0xd9, 0x02, + 0xff, 0x02, 0x10, 0x03, 0xdd, 0x03, 0xa4, 0x04, 0x3d, 0x04, 0xb1, 0x03, 0x9e, 0x02, 0x29, 0x01, + 0x76, 0xff, 0xae, 0xfd, 0xab, 0xfb, 0xe3, 0xf9, 0x9a, 0xf7, 0x54, 0xf5, 0xf0, 0xf3, 0x6c, 0xf2, + 0xf1, 0xf0, 0xe0, 0xef, 0xce, 0xee, 0x59, 0xee, 0xcd, 0xee, 0x6e, 0xee, 0x8b, 0xee, 0xb2, 0xee, + 0xfd, 0xef, 0x67, 0xf1, 0xa4, 0xf2, 0x3b, 0xf5, 0xa3, 0xf8, 0xb1, 0xfc, 0x41, 0x00, 0xaa, 0x03, + 0x69, 0x06, 0x37, 0x09, 0x6e, 0x0b, 0xbd, 0x0d, 0x0b, 0x0f, 0xf4, 0x0f, 0x71, 0x11, 0xd8, 0x11, + 0x6b, 0x11, 0xf2, 0x0f, 0x1c, 0x0f, 0x87, 0x0d, 0x5c, 0x0b, 0x6e, 0x09, 0x81, 0x07, 0x86, 0x06, + 0x66, 0x05, 0x4c, 0x04, 0x03, 0x04, 0x09, 0x03, 0xf4, 0x02, 0x1f, 0x02, 0xa5, 0x00, 0x76, 0xff, + 0x9f, 0xfd, 0x67, 0xfc, 0xf5, 0xfa, 0xd8, 0xf9, 0x75, 0xf8, 0xc4, 0xf6, 0x27, 0xf5, 0xe7, 0xf3, + 0x9c, 0xf2, 0xd8, 0xf1, 0x93, 0xf1, 0xae, 0xf1, 0xb4, 0xf2, 0xe4, 0xf2, 0xf6, 0xf2, 0x99, 0xf2, + 0x1c, 0xf3, 0xad, 0xf3, 0x0e, 0xf4, 0x41, 0xf5, 0x3b, 0xf7, 0xce, 0xf9, 0x1a, 0xfd, 0x7c, 0x00, + 0x0c, 0x04, 0xe5, 0x06, 0x35, 0x09, 0xe4, 0x0b, 0x27, 0x0d, 0xd2, 0x0e, 0xb5, 0x0f, 0xd2, 0x0f, + 0x93, 0x10, 0xdc, 0x10, 0x69, 0x10, 0xe7, 0x0f, 0x39, 0x0f, 0x44, 0x0e, 0x5f, 0x0d, 0xf3, 0x0b, + 0x8b, 0x0b, 0xe6, 0x0a, 0x14, 0x0b, 0xee, 0x0a, 0x42, 0x0a, 0x71, 0x09, 0x42, 0x08, 0x1c, 0x07, + 0x56, 0x04, 0x2d, 0x02, 0xc7, 0xff, 0x2a, 0xfd, 0x14, 0xfb, 0xad, 0xf8, 0xc8, 0xf6, 0xb5, 0xf4, + 0x32, 0xf2, 0x37, 0xf1, 0xd3, 0xef, 0xdb, 0xee, 0x62, 0xef, 0x35, 0xef, 0x29, 0xef, 0xf3, 0xee, + 0x5f, 0xef, 0x89, 0xf0, 0xec, 0xf1, 0x1b, 0xf4, 0x54, 0xf7, 0xa6, 0xfa, 0x81, 0xfe, 0x5d, 0x02, + 0xe6, 0x05, 0x00, 0x09, 0xc4, 0x0b, 0xb9, 0x0e, 0x38, 0x11, 0x88, 0x13, 0xb4, 0x14, 0x88, 0x15, + 0x31, 0x16, 0xf3, 0x15, 0x48, 0x15, 0xd5, 0x14, 0x75, 0x13, 0xd8, 0x11, 0x9b, 0x0f, 0x5f, 0x0d, + 0x49, 0x0c, 0xd7, 0x0a, 0xcd, 0x09, 0x95, 0x08, 0x6d, 0x07, 0x3d, 0x06, 0xcc, 0x04, 0xb9, 0x02, + 0x3e, 0x00, 0x33, 0xfe, 0xbc, 0xfb, 0x27, 0xf9, 0xb4, 0xf6, 0xa2, 0xf4, 0x67, 0xf2, 0xf2, 0xf0, + 0xc0, 0xee, 0xa7, 0xec, 0xec, 0xeb, 0x21, 0xeb, 0xf3, 0xea, 0x0f, 0xeb, 0x5d, 0xeb, 0xc6, 0xeb, + 0xdb, 0xeb, 0x92, 0xec, 0xd8, 0xec, 0x41, 0xed, 0xc2, 0xee, 0xf0, 0xf0, 0x4b, 0xf4, 0xd0, 0xf6, + 0xcf, 0xf9, 0x53, 0xfd, 0xaf, 0xff, 0xf6, 0x01, 0xe3, 0x03, 0x4a, 0x05, 0xcd, 0x06, 0xdd, 0x07, + 0x54, 0x08, 0x2f, 0x09, 0xbe, 0x09, 0x70, 0x0a, 0xfe, 0x0a, 0x43, 0x0b, 0x1f, 0x0b, 0xd8, 0x0a, + 0x67, 0x0b, 0xb2, 0x0b, 0x07, 0x0c, 0x7e, 0x0c, 0xe9, 0x0c, 0xf6, 0x0c, 0xa9, 0x0b, 0x11, 0x0a, + 0x6d, 0x08, 0xe0, 0x05, 0xdf, 0x03, 0xa1, 0x01, 0x45, 0xff, 0xee, 0xfc, 0x0e, 0xfa, 0x03, 0xf8, + 0x90, 0xf5, 0x7a, 0xf3, 0x22, 0xf2, 0xc9, 0xf0, 0xcd, 0xef, 0xa1, 0xef, 0x3d, 0xef, 0xea, 0xee, + 0xe2, 0xee, 0x23, 0xef, 0xd8, 0xef, 0xbc, 0xef, 0x20, 0xf1, 0x5c, 0xf3, 0xa5, 0xf6, 0x08, 0xfa, + 0xbc, 0xfc, 0x97, 0xff, 0x36, 0x02, 0xe0, 0x04, 0xa7, 0x06, 0x4f, 0x08, 0x8e, 0x0a, 0x04, 0x0c, + 0x65, 0x0d, 0x4b, 0x0e, 0x6e, 0x0e, 0x95, 0x0e, 0xc9, 0x0d, 0x95, 0x0d, 0x20, 0x0d, 0xf5, 0x0b, + 0xb0, 0x0b, 0x01, 0x0c, 0x46, 0x0c, 0x12, 0x0d, 0xbe, 0x0d, 0x64, 0x0e, 0xa2, 0x0e, 0xfc, 0x0d, + 0xd9, 0x0c, 0x50, 0x0b, 0xab, 0x09, 0x2b, 0x08, 0x60, 0x06, 0x15, 0x04, 0x50, 0x01, 0x4f, 0xff, + 0x9b, 0xfd, 0xfe, 0xfa, 0x9b, 0xf8, 0x21, 0xf7, 0xe7, 0xf5, 0x22, 0xf5, 0xcc, 0xf3, 0x8f, 0xf2, + 0x1a, 0xf1, 0xcc, 0xef, 0x19, 0xef, 0x1e, 0xee, 0x4c, 0xee, 0x51, 0xef, 0xa1, 0xf1, 0x26, 0xf4, + 0x1e, 0xf6, 0xa9, 0xf8, 0x96, 0xfb, 0x4b, 0xfd, 0xef, 0xfe, 0x55, 0x00, 0xfc, 0x01, 0xd2, 0x03, + 0x87, 0x04, 0x22, 0x06, 0xe0, 0x06, 0x93, 0x07, 0xe8, 0x07, 0x96, 0x08, 0x10, 0x09, 0xf7, 0x08, + 0x21, 0x09, 0x6d, 0x09, 0xc0, 0x09, 0x56, 0x0a, 0x25, 0x0a, 0x55, 0x0a, 0x8b, 0x0a, 0x98, 0x09, + 0xb3, 0x08, 0xe5, 0x06, 0xa5, 0x05, 0xa0, 0x03, 0xf7, 0x00, 0x24, 0xff, 0x35, 0xfd, 0x4a, 0xfb, + 0x84, 0xf9, 0x39, 0xf7, 0xc5, 0xf4, 0x58, 0xf3, 0xd9, 0xf1, 0xfd, 0xf0, 0x8e, 0xf0, 0x6b, 0xf0, + 0x74, 0xf0, 0x4b, 0xf0, 0x79, 0xf0, 0xee, 0xf0, 0x20, 0xf2, 0xdd, 0xf3, 0x3e, 0xf6, 0x68, 0xf9, + 0xb6, 0xfc, 0x12, 0x00, 0xfa, 0x02, 0xef, 0x04, 0x83, 0x07, 0x62, 0x09, 0x3c, 0x0b, 0xe6, 0x0c, + 0x42, 0x0d, 0xa9, 0x0d, 0xa6, 0x0d, 0xc0, 0x0d, 0x68, 0x0d, 0xa3, 0x0c, 0xd0, 0x0b, 0xe4, 0x0a, + 0x2e, 0x09, 0x5a, 0x08, 0xfb, 0x07, 0xc9, 0x07, 0x82, 0x07, 0x80, 0x07, 0x70, 0x07, 0x51, 0x06, + 0xc2, 0x05, 0x8e, 0x04, 0x53, 0x03, 0x52, 0x02, 0x97, 0x00, 0x40, 0xff, 0xd4, 0xfd, 0xc7, 0xfc, + 0x5b, 0xfc, 0x06, 0xfb, 0xff, 0xf9, 0x38, 0xf9, 0x0e, 0xf9, 0xf7, 0xf8, 0x10, 0xf9, 0xf6, 0xf9, + 0x06, 0xfa, 0xed, 0xf9, 0x1f, 0xfa, 0x9f, 0xf9, 0x02, 0xf9, 0x52, 0xf9, 0x6d, 0xfa, 0xd1, 0xfc, + 0x97, 0xfe, 0xb4, 0xff, 0x61, 0x01, 0x92, 0x02, 0x29, 0x03, 0x4f, 0x03, 0x6d, 0x03, 0xbc, 0x03, + 0xfc, 0x03, 0x6a, 0x03, 0xb0, 0x02, 0x81, 0x02, 0x6c, 0x02, 0x35, 0x02, 0x34, 0x02, 0xa9, 0x01, + 0x30, 0x01, 0xca, 0x01, 0x7e, 0x01, 0x09, 0x02, 0xa4, 0x02, 0x32, 0x03, 0x34, 0x04, 0x35, 0x04, + 0xad, 0x03, 0x7b, 0x02, 0x19, 0x01, 0x40, 0x00, 0xed, 0xfe, 0xd4, 0xfc, 0xce, 0xfb, 0x1b, 0xfa, + 0xac, 0xf8, 0x28, 0xf7, 0x34, 0xf5, 0xaf, 0xf3, 0x24, 0xf3, 0x9f, 0xf2, 0xf2, 0xf1, 0xbf, 0xf1, + 0xee, 0xf1, 0x36, 0xf2, 0x3c, 0xf2, 0x9b, 0xf2, 0x32, 0xf3, 0x56, 0xf4, 0x0a, 0xf6, 0x6b, 0xf9, + 0x4f, 0xfc, 0x21, 0xff, 0x17, 0x02, 0x52, 0x04, 0xb0, 0x06, 0xfa, 0x07, 0xb1, 0x09, 0x91, 0x0b, + 0x5e, 0x0c, 0xf7, 0x0c, 0x47, 0x0d, 0x95, 0x0c, 0x05, 0x0c, 0xcc, 0x0a, 0x89, 0x09, 0xdb, 0x08, + 0x67, 0x07, 0x3c, 0x06, 0x28, 0x05, 0x95, 0x04, 0x83, 0x04, 0x2a, 0x04, 0x66, 0x04, 0xea, 0x03, + 0xf0, 0x02, 0x25, 0x02, 0x42, 0x00, 0x3d, 0xff, 0x05, 0xfe, 0x03, 0xfc, 0xea, 0xfa, 0x05, 0xf9, + 0x09, 0xf8, 0x9f, 0xf7, 0x1f, 0xf6, 0xa1, 0xf4, 0x2e, 0xf4, 0xaf, 0xf3, 0x3f, 0xf3, 0x95, 0xf3, + 0xd2, 0xf3, 0xd0, 0xf3, 0xf4, 0xf3, 0x74, 0xf4, 0x1c, 0xf5, 0x50, 0xf6, 0x35, 0xf8, 0x21, 0xfb, + 0x35, 0xfe, 0xa1, 0x01, 0xc2, 0x04, 0x4e, 0x07, 0xe6, 0x09, 0xf2, 0x0b, 0xe8, 0x0c, 0xd6, 0x0d, + 0x2b, 0x0e, 0xb2, 0x0e, 0x21, 0x0f, 0xc8, 0x0e, 0xb4, 0x0e, 0x86, 0x0d, 0x12, 0x0d, 0x46, 0x0c, + 0x0b, 0x0b, 0x4e, 0x0a, 0xf3, 0x08, 0x14, 0x08, 0x1b, 0x07, 0xc9, 0x05, 0x48, 0x05, 0xbf, 0x04, + 0x54, 0x03, 0xf3, 0x01, 0x75, 0x00, 0xff, 0xfe, 0x72, 0xfd, 0x38, 0xfb, 0x1a, 0xf9, 0x53, 0xf7, + 0xf0, 0xf5, 0xaf, 0xf4, 0x8d, 0xf3, 0x69, 0xf2, 0xe1, 0xf1, 0x49, 0xf2, 0x35, 0xf2, 0x6e, 0xf2, + 0xd0, 0xf3, 0xd0, 0xf4, 0x5e, 0xf5, 0xf0, 0xf5, 0x9b, 0xf6, 0x6d, 0xf8, 0x74, 0xfa, 0x12, 0xfd, + 0x89, 0x00, 0x18, 0x04, 0xd0, 0x07, 0xd9, 0x0a, 0x06, 0x0d, 0x4d, 0x0f, 0x03, 0x11, 0x91, 0x12, + 0xe8, 0x13, 0xec, 0x13, 0xbf, 0x13, 0xe8, 0x12, 0x1b, 0x12, 0xcb, 0x10, 0x44, 0x0f, 0x8b, 0x0d, + 0xcb, 0x0b, 0x8a, 0x0a, 0x56, 0x08, 0x31, 0x06, 0xd5, 0x04, 0x8a, 0x03, 0xb0, 0x02, 0x6f, 0x01, + 0x8d, 0xff, 0xe5, 0xfd, 0x6b, 0xfc, 0xc2, 0xfb, 0x0c, 0xfa, 0xf0, 0xf7, 0x3c, 0xf6, 0xe5, 0xf4, + 0xca, 0xf3, 0x87, 0xf2, 0xe9, 0xf1, 0x5e, 0xf1, 0xa9, 0xf0, 0x29, 0xf0, 0xfb, 0xef, 0x90, 0xef, + 0xa9, 0xef, 0x5a, 0xf0, 0x7e, 0xf0, 0x50, 0xf0, 0xc0, 0xf0, 0x34, 0xf1, 0xf9, 0xf1, 0x47, 0xf3, + 0x65, 0xf5, 0x14, 0xf8, 0xe4, 0xfa, 0x4e, 0xfd, 0xa4, 0xff, 0x10, 0x02, 0x4f, 0x03, 0xd3, 0x04, + 0x23, 0x06, 0x25, 0x07, 0x0d, 0x08, 0x20, 0x08, 0xbf, 0x08, 0x99, 0x09, 0xec, 0x09, 0xe4, 0x09, + 0x5d, 0x0a, 0xa1, 0x0a, 0xf1, 0x0a, 0xd0, 0x0a, 0xeb, 0x0a, 0xad, 0x0a, 0xc0, 0x0a, 0xf7, 0x0a, + 0x42, 0x0a, 0x03, 0x09, 0x62, 0x07, 0xd2, 0x05, 0x71, 0x03, 0x3a, 0x01, 0xb3, 0xfe, 0x1e, 0xfc, + 0xd6, 0xf9, 0xc6, 0xf7, 0xf4, 0xf5, 0x55, 0xf4, 0x0e, 0xf2, 0xef, 0xf0, 0x1c, 0xf0, 0x7e, 0xee, + 0xf1, 0xed, 0x7c, 0xed, 0x00, 0xee, 0x39, 0xee, 0x25, 0xee, 0x81, 0xee, 0x91, 0xef, 0x40, 0xf1, + 0x16, 0xf4, 0x41, 0xf7, 0x22, 0xfb, 0x36, 0xff, 0xf0, 0x01, 0xdf, 0x04, 0x63, 0x07, 0x57, 0x09, + 0x8a, 0x0b, 0x6b, 0x0d, 0x14, 0x0f, 0x29, 0x10, 0xf4, 0x10, 0x93, 0x11, 0x83, 0x11, 0x2b, 0x11, + 0xe6, 0x10, 0x08, 0x11, 0xf3, 0x10, 0xb6, 0x0f, 0x3d, 0x0f, 0xad, 0x0e, 0x47, 0x0e, 0xf6, 0x0d, + 0x30, 0x0d, 0x3e, 0x0c, 0xf8, 0x0a, 0x84, 0x09, 0x77, 0x07, 0x80, 0x05, 0x38, 0x03, 0x21, 0x01, + 0xfd, 0xfe, 0x3b, 0xfd, 0xf5, 0xfa, 0xdb, 0xf9, 0x4b, 0xf8, 0x17, 0xf6, 0xd1, 0xf4, 0xaf, 0xf3, + 0x16, 0xf3, 0x71, 0xf2, 0x87, 0xf2, 0xd5, 0xf1, 0x0a, 0xf1, 0x47, 0xf1, 0x0c, 0xf2, 0xf9, 0xf2, + 0x87, 0xf4, 0x8b, 0xf6, 0xb0, 0xf9, 0xfe, 0xfb, 0x90, 0xfd, 0x53, 0xff, 0xa8, 0x00, 0x61, 0x02, + 0x0e, 0x03, 0x6f, 0x03, 0x34, 0x04, 0xe9, 0x04, 0x33, 0x05, 0x8d, 0x05, 0x68, 0x05, 0x79, 0x05, + 0x0c, 0x06, 0x67, 0x06, 0xfb, 0x06, 0x46, 0x07, 0xa8, 0x07, 0xd2, 0x07, 0x51, 0x08, 0xb8, 0x08, + 0xa4, 0x08, 0x4e, 0x08, 0xa6, 0x07, 0xb0, 0x06, 0x9d, 0x05, 0xbc, 0x03, 0x8d, 0x01, 0x46, 0xff, + 0xff, 0xfc, 0x67, 0xfb, 0x2f, 0xf9, 0x2f, 0xf8, 0xe9, 0xf6, 0x17, 0xf5, 0x10, 0xf4, 0xef, 0xf2, + 0xc4, 0xf1, 0x55, 0xf1, 0x32, 0xf1, 0xec, 0xf0, 0x6a, 0xf0, 0x7e, 0xf0, 0x5b, 0xf1, 0x1c, 0xf2, + 0x27, 0xf4, 0x8f, 0xf6, 0xd0, 0xf9, 0x55, 0xfd, 0x45, 0x00, 0x0e, 0x03, 0x62, 0x05, 0xc7, 0x07, + 0xf2, 0x09, 0x80, 0x0b, 0xd9, 0x0c, 0x3a, 0x0d, 0x6e, 0x0d, 0x13, 0x0e, 0xde, 0x0d, 0xef, 0x0d, + 0x8d, 0x0d, 0x55, 0x0d, 0x80, 0x0d, 0xb2, 0x0c, 0xde, 0x0b, 0x4f, 0x0b, 0x57, 0x0b, 0x81, 0x0b, + 0x2c, 0x0b, 0x4d, 0x0a, 0x7e, 0x09, 0xd8, 0x08, 0x35, 0x08, 0x59, 0x06, 0x13, 0x04, 0x8c, 0x02, + 0xdc, 0x00, 0x09, 0xff, 0x3f, 0xfd, 0x0d, 0xfc, 0x42, 0xfb, 0xe7, 0xf9, 0x8b, 0xf8, 0x3b, 0xf7, + 0xef, 0xf5, 0x5e, 0xf5, 0x01, 0xf5, 0xe3, 0xf4, 0x75, 0xf4, 0x5f, 0xf4, 0xce, 0xf4, 0x74, 0xf4, + 0x12, 0xf5, 0xea, 0xf5, 0x84, 0xf7, 0x25, 0xfa, 0xc9, 0xfb, 0x21, 0xfd, 0xa4, 0xfe, 0xb3, 0xff, + 0xab, 0x00, 0x29, 0x01, 0x9e, 0x01, 0x3b, 0x02, 0x0a, 0x02, 0x69, 0x02, 0x8a, 0x02, 0x56, 0x02, + 0x4b, 0x02, 0xbe, 0x02, 0x9f, 0x03, 0xe1, 0x03, 0x53, 0x04, 0xfe, 0x04, 0x85, 0x05, 0x5a, 0x06, + 0x9f, 0x06, 0x6f, 0x06, 0xc4, 0x05, 0xc4, 0x04, 0xfb, 0x03, 0x26, 0x02, 0xec, 0x00, 0x95, 0xff, + 0xcc, 0xfd, 0x7a, 0xfc, 0x07, 0xfb, 0x0b, 0xfa, 0xb0, 0xf9, 0x77, 0xf8, 0x3a, 0xf7, 0x9d, 0xf6, + 0xd3, 0xf5, 0x6a, 0xf5, 0xcf, 0xf4, 0xd9, 0xf4, 0x6a, 0xf5, 0x3c, 0xf5, 0x67, 0xf5, 0x16, 0xf6, + 0xd8, 0xf6, 0x1e, 0xf8, 0x7b, 0xfa, 0x6e, 0xfd, 0x39, 0x00, 0xee, 0x02, 0x17, 0x05, 0x3a, 0x06, + 0x92, 0x07, 0x7d, 0x07, 0xac, 0x07, 0x84, 0x08, 0x5c, 0x08, 0xa3, 0x08, 0x6a, 0x08, 0xb2, 0x07, + 0x2a, 0x07, 0x52, 0x06, 0x2e, 0x06, 0x0c, 0x06, 0x1e, 0x05, 0xc3, 0x04, 0x1b, 0x04, 0xda, 0x03, + 0x6f, 0x03, 0x3e, 0x03, 0x15, 0x03, 0x02, 0x02, 0xa2, 0x01, 0x80, 0x00, 0xfb, 0xfe, 0xa5, 0xfd, + 0x08, 0xfc, 0xbe, 0xfa, 0xa6, 0xf9, 0x92, 0xf8, 0x53, 0xf8, 0xc5, 0xf7, 0xfe, 0xf6, 0x23, 0xf6, + 0xc5, 0xf5, 0x67, 0xf6, 0x28, 0xf6, 0xb4, 0xf6, 0xd7, 0xf6, 0xaf, 0xf6, 0x87, 0xf7, 0x0c, 0xf8, + 0x34, 0xf9, 0xff, 0xfa, 0x07, 0xfd, 0x33, 0x00, 0x3a, 0x03, 0x1a, 0x05, 0xb0, 0x06, 0x33, 0x08, + 0xcf, 0x09, 0x60, 0x0a, 0x07, 0x0a, 0x0e, 0x0a, 0x56, 0x0a, 0x12, 0x0a, 0x82, 0x09, 0xae, 0x08, + 0xee, 0x07, 0x30, 0x07, 0x06, 0x07, 0x1c, 0x07, 0x83, 0x06, 0xc4, 0x06, 0xd2, 0x06, 0x42, 0x07, + 0x48, 0x07, 0xc3, 0x06, 0x84, 0x06, 0xb3, 0x05, 0xb6, 0x04, 0x61, 0x03, 0x65, 0x01, 0xd7, 0xff, + 0x47, 0xfe, 0x74, 0xfc, 0x54, 0xfb, 0xcd, 0xf9, 0x72, 0xf9, 0xf9, 0xf8, 0xa5, 0xf7, 0x4c, 0xf6, + 0x56, 0xf5, 0x8b, 0xf5, 0x73, 0xf5, 0x9a, 0xf5, 0x2f, 0xf6, 0xe3, 0xf6, 0x93, 0xf7, 0x86, 0xf8, + 0x06, 0xfa, 0x04, 0xfc, 0x4d, 0xfe, 0xe6, 0x01, 0xf3, 0x04, 0xff, 0x07, 0x9d, 0x0a, 0x87, 0x0c, + 0xe4, 0x0e, 0x37, 0x10, 0xcb, 0x10, 0xfe, 0x10, 0x93, 0x10, 0xea, 0x0f, 0xe9, 0x0e, 0xaa, 0x0d, + 0x8b, 0x0c, 0xcd, 0x0a, 0x55, 0x09, 0x0c, 0x08, 0x42, 0x06, 0xa1, 0x04, 0xac, 0x02, 0x98, 0x01, + 0x76, 0x00, 0x3e, 0xff, 0xe6, 0xfd, 0xb5, 0xfc, 0x6a, 0xfb, 0x43, 0xfa, 0xed, 0xf8, 0x8f, 0xf7, + 0x38, 0xf6, 0x83, 0xf4, 0xd7, 0xf3, 0xb9, 0xf2, 0x1a, 0xf2, 0x27, 0xf2, 0xfb, 0xf1, 0x0c, 0xf2, + 0xfb, 0xf1, 0x5c, 0xf2, 0x8d, 0xf2, 0x9b, 0xf2, 0x73, 0xf3, 0x03, 0xf4, 0x7e, 0xf4, 0xa4, 0xf5, + 0x63, 0xf6, 0xf2, 0xf7, 0x76, 0xf9, 0x74, 0xfb, 0x22, 0xfe, 0xdf, 0x00, 0x4e, 0x03, 0x95, 0x04, + 0x21, 0x06, 0x59, 0x07, 0xc5, 0x07, 0xc6, 0x07, 0x7d, 0x07, 0x75, 0x07, 0x76, 0x07, 0x36, 0x07, + 0x5f, 0x07, 0xa8, 0x06, 0x87, 0x06, 0xe9, 0x06, 0xc6, 0x06, 0xd9, 0x06, 0xa8, 0x06, 0xfd, 0x06, + 0x61, 0x07, 0xe3, 0x06, 0x69, 0x06, 0x92, 0x05, 0x9d, 0x03, 0xb0, 0x01, 0x81, 0xff, 0xa1, 0xfd, + 0x1f, 0xfc, 0x36, 0xfa, 0xbd, 0xf8, 0x5d, 0xf7, 0x0e, 0xf6, 0x6f, 0xf5, 0x9e, 0xf4, 0x55, 0xf3, + 0x79, 0xf2, 0xb1, 0xf1, 0x03, 0xf1, 0x14, 0xf0, 0x10, 0xf0, 0x15, 0xf0, 0xb9, 0xf0, 0xa0, 0xf1, + 0x22, 0xf2, 0x9b, 0xf3, 0x6c, 0xf5, 0x14, 0xf8, 0xb2, 0xfb, 0xa9, 0xfe, 0x23, 0x02, 0xb2, 0x05, + 0x3f, 0x08, 0x0a, 0x0b, 0x78, 0x0c, 0xa6, 0x0d, 0xe2, 0x0e, 0xce, 0x0f, 0x03, 0x11, 0x78, 0x11, + 0xec, 0x11, 0xbb, 0x11, 0x5c, 0x11, 0xf5, 0x10, 0x64, 0x10, 0x76, 0x10, 0x27, 0x10, 0x9b, 0x0f, + 0xdb, 0x0e, 0xa1, 0x0d, 0x1b, 0x0d, 0x3a, 0x0c, 0x5b, 0x0a, 0xd5, 0x08, 0x82, 0x06, 0xb2, 0x04, + 0x49, 0x02, 0x2d, 0xff, 0x55, 0xfc, 0xeb, 0xf9, 0x37, 0xf8, 0x68, 0xf6, 0xb5, 0xf4, 0x64, 0xf3, + 0xfd, 0xf1, 0x05, 0xf1, 0xa5, 0xf0, 0x82, 0xef, 0x21, 0xef, 0x5e, 0xef, 0x72, 0xef, 0xcc, 0xef, + 0x47, 0xf0, 0x57, 0xf1, 0x58, 0xf3, 0xa5, 0xf5, 0x80, 0xf8, 0xa1, 0xfb, 0xba, 0xfe, 0x93, 0x01, + 0xe8, 0x03, 0xed, 0x05, 0xc2, 0x06, 0x7b, 0x07, 0xf1, 0x07, 0x41, 0x08, 0x4e, 0x09, 0x99, 0x09, + 0xb7, 0x09, 0xd7, 0x09, 0x23, 0x09, 0x58, 0x09, 0xee, 0x09, 0x38, 0x0a, 0x03, 0x0b, 0x2c, 0x0b, + 0xdd, 0x0b, 0xb9, 0x0b, 0xa3, 0x0a, 0xdd, 0x09, 0x19, 0x08, 0x34, 0x06, 0x43, 0x04, 0x25, 0x02, + 0xda, 0xff, 0x61, 0xfd, 0x4a, 0xfb, 0x4d, 0xf9, 0x8b, 0xf7, 0x18, 0xf6, 0xee, 0xf4, 0xbf, 0xf3, + 0xa8, 0xf1, 0x5f, 0xf0, 0xa8, 0xef, 0xd2, 0xee, 0xcb, 0xee, 0xc4, 0xee, 0x37, 0xef, 0x04, 0xf0, + 0xd5, 0xf0, 0x28, 0xf2, 0xb7, 0xf3, 0x93, 0xf5, 0xa4, 0xf8, 0x9e, 0xfb, 0xc1, 0xfe, 0xfd, 0x01, + 0x7d, 0x04, 0x7e, 0x07, 0xcd, 0x09, 0x4f, 0x0b, 0x23, 0x0c, 0xd8, 0x0c, 0x1f, 0x0d, 0x1f, 0x0d, + 0x15, 0x0d, 0xd9, 0x0c, 0x79, 0x0c, 0x7a, 0x0c, 0xae, 0x0c, 0xe3, 0x0c, 0x23, 0x0d, 0xaf, 0x0c, + 0x0d, 0x0d, 0xe8, 0x0c, 0x62, 0x0c, 0x37, 0x0c, 0x6a, 0x0b, 0x53, 0x0a, 0x0f, 0x09, 0x71, 0x07, + 0xb9, 0x05, 0x9b, 0x03, 0x26, 0x01, 0x79, 0xff, 0xb8, 0xfd, 0x62, 0xfc, 0xcd, 0xfa, 0x5f, 0xf9, + 0x7b, 0xf8, 0x4f, 0xf7, 0xeb, 0xf6, 0xf4, 0xf5, 0xbd, 0xf4, 0xe3, 0xf3, 0x40, 0xf3, 0xd9, 0xf2, + 0x64, 0xf2, 0x7a, 0xf2, 0x45, 0xf3, 0x48, 0xf4, 0x09, 0xf6, 0xac, 0xf7, 0x20, 0xfa, 0x7a, 0xfc, + 0xad, 0xfd, 0x64, 0xff, 0x5f, 0x00, 0x30, 0x01, 0xa3, 0x01, 0x9d, 0x01, 0xeb, 0x01, 0x2c, 0x02, + 0xa6, 0x02, 0xf7, 0x03, 0x9a, 0x04, 0x12, 0x05, 0x20, 0x06, 0x06, 0x07, 0x5c, 0x08, 0x13, 0x09, + 0xad, 0x09, 0xb6, 0x0a, 0x73, 0x0b, 0x04, 0x0c, 0xcb, 0x0b, 0x88, 0x0a, 0x15, 0x09, 0x79, 0x07, + 0xcb, 0x05, 0xd0, 0x03, 0xf8, 0x01, 0x73, 0x00, 0xf2, 0xfe, 0x5f, 0xfd, 0x0c, 0xfb, 0x4a, 0xf9, + 0x02, 0xf8, 0xeb, 0xf5, 0x3f, 0xf4, 0xb9, 0xf2, 0x14, 0xf1, 0x0b, 0xf0, 0x08, 0xef, 0x1f, 0xef, + 0x59, 0xef, 0x87, 0xef, 0xa7, 0xf0, 0xb3, 0xf1, 0x3a, 0xf3, 0x73, 0xf5, 0xf6, 0xf7, 0x21, 0xfb, + 0xec, 0xfd, 0xe6, 0x00, 0x70, 0x03, 0x2e, 0x05, 0x1d, 0x06, 0x3c, 0x06, 0xe8, 0x06, 0x7d, 0x07, + 0xf0, 0x07, 0x9f, 0x08, 0x61, 0x08, 0x17, 0x08, 0x4a, 0x07, 0x94, 0x06, 0xf0, 0x06, 0xf4, 0x06, + 0xbf, 0x06, 0xcb, 0x06, 0x7a, 0x06, 0xee, 0x05, 0x44, 0x05, 0x37, 0x04, 0xd1, 0x02, 0x19, 0x01, + 0x26, 0x00, 0xfe, 0xfe, 0x89, 0xfd, 0x1b, 0xfc, 0xe9, 0xfa, 0x28, 0xfa, 0x47, 0xf9, 0x46, 0xf8, + 0x08, 0xf8, 0xfc, 0xf7, 0xf9, 0xf7, 0x79, 0xf8, 0x65, 0xf8, 0x09, 0xf8, 0x2f, 0xf8, 0xbb, 0xf8, + 0x34, 0xf9, 0x7a, 0xf9, 0x44, 0xfa, 0x5c, 0xfb, 0x1b, 0xfd, 0x71, 0xff, 0x2f, 0x01, 0xf2, 0x03, + 0x4e, 0x06, 0xca, 0x07, 0xfa, 0x08, 0xef, 0x08, 0x8b, 0x08, 0xd3, 0x07, 0xe3, 0x06, 0xb0, 0x06, + 0x0d, 0x06, 0xc0, 0x05, 0x85, 0x05, 0xd5, 0x04, 0x56, 0x04, 0xe4, 0x03, 0x61, 0x04, 0xf3, 0x04, + 0x32, 0x05, 0xb9, 0x05, 0x23, 0x06, 0x67, 0x06, 0xcb, 0x05, 0xd5, 0x04, 0xf9, 0x03, 0xd5, 0x02, + 0x13, 0x02, 0xd0, 0x00, 0xb4, 0xff, 0x65, 0xfe, 0xfc, 0xfc, 0x7f, 0xfc, 0xaf, 0xfb, 0xe6, 0xfa, + 0xcc, 0xfa, 0x75, 0xfa, 0xb7, 0xf9, 0x5c, 0xf9, 0x14, 0xf9, 0x25, 0xf9, 0x5b, 0xf9, 0xcf, 0xf9, + 0xfd, 0xfa, 0xbf, 0xfb, 0x79, 0xfc, 0x9f, 0xfd, 0x09, 0xff, 0x18, 0x01, 0x65, 0x03, 0xb9, 0x05, + 0x14, 0x08, 0xf5, 0x09, 0xcd, 0x0b, 0xf8, 0x0c, 0xd7, 0x0d, 0x68, 0x0d, 0xc7, 0x0c, 0x7d, 0x0c, + 0x5c, 0x0b, 0x67, 0x0a, 0x02, 0x09, 0x2c, 0x07, 0x38, 0x06, 0x5d, 0x05, 0x74, 0x04, 0x55, 0x04, + 0x87, 0x03, 0x20, 0x03, 0xb3, 0x02, 0xee, 0x01, 0x5a, 0x01, 0x66, 0x00, 0xc1, 0xff, 0x94, 0xfe, + 0x5c, 0xfd, 0x04, 0xfc, 0x5c, 0xfa, 0xd1, 0xf8, 0x35, 0xf7, 0x88, 0xf6, 0x17, 0xf6, 0x2d, 0xf5, + 0xe7, 0xf4, 0x8f, 0xf4, 0x9f, 0xf4, 0x82, 0xf4, 0x90, 0xf4, 0x90, 0xf4, 0x12, 0xf4, 0xae, 0xf4, + 0x1d, 0xf5, 0x94, 0xf5, 0x9c, 0xf6, 0xbb, 0xf7, 0x5b, 0xf9, 0xbe, 0xfb, 0x06, 0xfe, 0x25, 0x00, + 0xcb, 0x02, 0x9a, 0x04, 0xf3, 0x05, 0x85, 0x06, 0x05, 0x07, 0xf3, 0x06, 0x9b, 0x06, 0x14, 0x06, + 0x72, 0x05, 0x2b, 0x05, 0x16, 0x05, 0x9e, 0x04, 0x05, 0x04, 0x83, 0x03, 0x65, 0x03, 0x82, 0x03, + 0xf3, 0x02, 0x7e, 0x02, 0x36, 0x02, 0x70, 0x02, 0xb0, 0x02, 0x1f, 0x02, 0x18, 0x01, 0x66, 0xff, + 0xde, 0xfd, 0x57, 0xfc, 0x3e, 0xfa, 0xb2, 0xf8, 0xaf, 0xf7, 0xef, 0xf6, 0x8a, 0xf6, 0x1d, 0xf5, + 0xf7, 0xf3, 0xdf, 0xf3, 0x54, 0xf3, 0x0e, 0xf3, 0x89, 0xf2, 0x6e, 0xf2, 0x57, 0xf2, 0x78, 0xf2, + 0xd9, 0xf2, 0x81, 0xf3, 0xc1, 0xf4, 0x19, 0xf6, 0x1c, 0xf8, 0xa3, 0xfa, 0xdd, 0xfc, 0xde, 0xff, + 0x26, 0x03, 0x45, 0x06, 0x6e, 0x09, 0xc1, 0x0b, 0x8d, 0x0e, 0xed, 0x0f, 0x0e, 0x10, 0x88, 0x10, + 0x87, 0x10, 0x78, 0x10, 0x73, 0x10, 0x28, 0x10, 0x55, 0x0f, 0x71, 0x0e, 0xb5, 0x0d, 0x82, 0x0d, + 0x0b, 0x0d, 0x84, 0x0c, 0xa3, 0x0b, 0xae, 0x0a, 0x8a, 0x09, 0xe6, 0x07, 0x31, 0x06, 0x55, 0x04, + 0x01, 0x02, 0x0b, 0x00, 0xfe, 0xfd, 0x05, 0xfc, 0x0b, 0xfa, 0x44, 0xf8, 0x2b, 0xf7, 0x84, 0xf5, + 0x59, 0xf4, 0x9a, 0xf3, 0x2c, 0xf3, 0x5b, 0xf3, 0x99, 0xf3, 0xd5, 0xf3, 0xdd, 0xf3, 0x8b, 0xf3, + 0xe6, 0xf3, 0xcc, 0xf4, 0x1a, 0xf5, 0x36, 0xf6, 0x40, 0xf7, 0x03, 0xf9, 0x82, 0xfb, 0x4d, 0xfd, + 0xb5, 0xff, 0x64, 0x02, 0x0e, 0x05, 0xbc, 0x06, 0x09, 0x08, 0xf0, 0x08, 0x9b, 0x08, 0x7e, 0x08, + 0x08, 0x08, 0x2a, 0x08, 0x7d, 0x08, 0x8a, 0x08, 0xe2, 0x08, 0x79, 0x08, 0x2c, 0x08, 0x2a, 0x08, + 0xa2, 0x08, 0x10, 0x09, 0xc6, 0x08, 0x6f, 0x09, 0xdd, 0x09, 0x32, 0x09, 0x17, 0x08, 0x75, 0x06, + 0x66, 0x04, 0x7c, 0x02, 0x2e, 0x00, 0xfd, 0xfd, 0xd3, 0xfb, 0x55, 0xf9, 0xb7, 0xf7, 0x22, 0xf6, + 0x17, 0xf4, 0xdf, 0xf2, 0x42, 0xf2, 0x9d, 0xf1, 0x97, 0xf0, 0xac, 0xef, 0x0a, 0xef, 0x80, 0xee, + 0x9e, 0xee, 0x3e, 0xef, 0x4e, 0xf0, 0xd7, 0xf1, 0x6c, 0xf3, 0xb6, 0xf5, 0x35, 0xf8, 0xec, 0xfa, + 0x3f, 0xfe, 0x77, 0x01, 0xc8, 0x04, 0xc5, 0x07, 0x02, 0x0a, 0xb0, 0x0c, 0x4c, 0x0e, 0xa8, 0x0e, + 0x80, 0x0f, 0xcb, 0x0f, 0x13, 0x10, 0xc1, 0x0f, 0x1c, 0x0f, 0x97, 0x0e, 0x39, 0x0e, 0x9d, 0x0e, + 0xe3, 0x0e, 0x39, 0x0f, 0x21, 0x0f, 0xf4, 0x0e, 0xbf, 0x0e, 0x4e, 0x0d, 0xed, 0x0b, 0x84, 0x0a, + 0xb5, 0x08, 0x19, 0x07, 0x83, 0x04, 0x24, 0x02, 0x22, 0x00, 0x08, 0xfe, 0x1e, 0xfc, 0x1a, 0xfa, + 0x94, 0xf8, 0xff, 0xf6, 0x80, 0xf5, 0x8d, 0xf4, 0x8c, 0xf3, 0x99, 0xf2, 0x4a, 0xf2, 0xaf, 0xf1, + 0x19, 0xf1, 0x1f, 0xf1, 0xb7, 0xf1, 0x90, 0xf2, 0x45, 0xf3, 0x2c, 0xf4, 0x15, 0xf6, 0x90, 0xf8, + 0xd1, 0xfa, 0x53, 0xfd, 0x89, 0xff, 0x63, 0x01, 0x68, 0x02, 0xa3, 0x03, 0x44, 0x04, 0x65, 0x04, + 0xd9, 0x04, 0xf7, 0x04, 0x7d, 0x05, 0x9e, 0x05, 0xde, 0x05, 0x51, 0x06, 0xae, 0x06, 0x44, 0x07, + 0x77, 0x08, 0x51, 0x09, 0x0f, 0x0a, 0x3c, 0x0a, 0x7c, 0x0a, 0x53, 0x0b, 0xfc, 0x0a, 0xb8, 0x0a, + 0xd3, 0x09, 0x98, 0x08, 0xfb, 0x06, 0x3d, 0x04, 0x32, 0x02, 0xf8, 0xff, 0xfa, 0xfd, 0x94, 0xfc, + 0xb9, 0xfa, 0x16, 0xf9, 0x33, 0xf7, 0x2e, 0xf6, 0xe3, 0xf4, 0x42, 0xf3, 0x13, 0xf2, 0x71, 0xf0, + 0x91, 0xef, 0xa6, 0xee, 0x25, 0xee, 0x64, 0xee, 0xc3, 0xee, 0x2e, 0xf0, 0xd3, 0xf1, 0xab, 0xf3, + 0xe0, 0xf5, 0x71, 0xf8, 0x48, 0xfb, 0x7e, 0xfe, 0xf8, 0x00, 0x2e, 0x03, 0x52, 0x05, 0x87, 0x06, + 0xf0, 0x06, 0x28, 0x07, 0xd3, 0x07, 0x0b, 0x08, 0xef, 0x07, 0xde, 0x07, 0x99, 0x07, 0xa3, 0x07, + 0x10, 0x08, 0x1a, 0x08, 0x4d, 0x08, 0x01, 0x08, 0x0f, 0x08, 0x2a, 0x08, 0x75, 0x07, 0xda, 0x06, + 0xa3, 0x05, 0x19, 0x04, 0x9e, 0x02, 0x80, 0x00, 0x09, 0xff, 0xca, 0xfd, 0x42, 0xfc, 0x89, 0xfb, + 0xfd, 0xf9, 0x90, 0xf8, 0x44, 0xf7, 0xdf, 0xf5, 0x82, 0xf5, 0x69, 0xf5, 0xc8, 0xf5, 0x3a, 0xf6, + 0xf7, 0xf5, 0xf8, 0xf5, 0xe0, 0xf5, 0x11, 0xf6, 0x51, 0xf6, 0x22, 0xf7, 0xc2, 0xf8, 0x85, 0xfa, + 0xfb, 0xfc, 0xd0, 0xfe, 0xd4, 0x00, 0x5d, 0x03, 0x1a, 0x05, 0xe3, 0x06, 0xc3, 0x07, 0xcf, 0x07, + 0xa2, 0x07, 0x49, 0x07, 0x05, 0x07, 0x7b, 0x06, 0x1f, 0x06, 0x13, 0x06, 0xcd, 0x05, 0xc8, 0x05, + 0xea, 0x05, 0xb9, 0x05, 0x48, 0x06, 0xea, 0x06, 0x9a, 0x07, 0x4b, 0x08, 0x58, 0x08, 0x27, 0x08, + 0x77, 0x07, 0xd8, 0x05, 0x96, 0x04, 0x25, 0x03, 0x99, 0x01, 0xaf, 0x00, 0x82, 0xff, 0x8b, 0xfe, + 0xd5, 0xfd, 0xca, 0xfd, 0x20, 0xfd, 0xbb, 0xfc, 0x1d, 0xfd, 0xf3, 0xfc, 0x00, 0xfd, 0x8f, 0xfc, + 0x96, 0xfb, 0x50, 0xfb, 0x4d, 0xfb, 0xbd, 0xfb, 0xcd, 0xfc, 0x77, 0xfd, 0xc1, 0xfe, 0xa1, 0x00, + 0xec, 0x01, 0xa7, 0x03, 0x5f, 0x05, 0x19, 0x07, 0x9d, 0x08, 0xb7, 0x09, 0x61, 0x0a, 0x4c, 0x0a, + 0x57, 0x0a, 0xa5, 0x09, 0x1d, 0x09, 0x5d, 0x08, 0xe1, 0x06, 0xf2, 0x05, 0x6e, 0x04, 0xa3, 0x03, + 0x30, 0x03, 0x6f, 0x02, 0xb7, 0x02, 0x02, 0x03, 0x56, 0x03, 0x91, 0x03, 0x33, 0x03, 0x40, 0x02, + 0x5a, 0x01, 0x6c, 0x00, 0x71, 0xff, 0xf5, 0xfd, 0x56, 0xfc, 0x61, 0xfb, 0x05, 0xfa, 0xe9, 0xf8, + 0x24, 0xf8, 0x42, 0xf7, 0x80, 0xf6, 0x3d, 0xf6, 0x37, 0xf6, 0x6d, 0xf6, 0x6c, 0xf6, 0xcb, 0xf6, + 0x12, 0xf7, 0x63, 0xf7, 0xba, 0xf7, 0x48, 0xf8, 0x81, 0xf9, 0x10, 0xfa, 0xe2, 0xfa, 0xaa, 0xfb, + 0xed, 0xfc, 0xc3, 0xfe, 0xf6, 0xff, 0x6b, 0x01, 0x09, 0x03, 0xc1, 0x03, 0xcd, 0x04, 0xc7, 0x04, + 0xf9, 0x03, 0x52, 0x03, 0x39, 0x02, 0xe8, 0x01, 0x25, 0x01, 0x07, 0x00, 0xeb, 0xff, 0xa1, 0xff, + 0xdc, 0xff, 0x40, 0x00, 0xf2, 0x00, 0xcb, 0x01, 0xfb, 0x01, 0xa6, 0x02, 0x08, 0x03, 0x15, 0x03, + 0x37, 0x03, 0xec, 0x02, 0x4b, 0x02, 0x9b, 0x00, 0x94, 0xfe, 0x76, 0xfc, 0x8a, 0xfa, 0x47, 0xf9, + 0xda, 0xf7, 0x3f, 0xf7, 0xbc, 0xf6, 0xe1, 0xf5, 0x51, 0xf5, 0xd1, 0xf4, 0x84, 0xf4, 0x30, 0xf4, + 0x98, 0xf3, 0x8e, 0xf3, 0xaa, 0xf3, 0xf8, 0xf3, 0xe0, 0xf4, 0xf5, 0xf5, 0x83, 0xf7, 0x74, 0xf9, + 0x51, 0xfc, 0x25, 0xff, 0xbd, 0x01, 0x55, 0x04, 0x40, 0x07, 0x7b, 0x09, 0x82, 0x0b, 0x30, 0x0d, + 0x5a, 0x0e, 0x27, 0x0f, 0xfe, 0x0e, 0x0c, 0x0f, 0x10, 0x0e, 0x23, 0x0d, 0x4c, 0x0c, 0x2d, 0x0b, + 0x5c, 0x0a, 0x6e, 0x09, 0xa6, 0x08, 0x8e, 0x08, 0x78, 0x07, 0xd4, 0x06, 0xa4, 0x06, 0x83, 0x05, + 0xdb, 0x04, 0x36, 0x03, 0x58, 0x01, 0xf0, 0xff, 0xb0, 0xfd, 0xa6, 0xfb, 0x0a, 0xfa, 0xe9, 0xf8, + 0x12, 0xf8, 0x50, 0xf7, 0x2c, 0xf7, 0xe3, 0xf5, 0x28, 0xf5, 0xde, 0xf4, 0xbe, 0xf4, 0x36, 0xf5, + 0xdc, 0xf5, 0x27, 0xf7, 0x9f, 0xf7, 0x86, 0xf8, 0x80, 0xf9, 0xb7, 0xf9, 0xf6, 0xfa, 0x76, 0xfc, + 0x46, 0xfe, 0x99, 0x00, 0xe1, 0x02, 0xe6, 0x04, 0x49, 0x07, 0x38, 0x09, 0x0b, 0x0b, 0xf4, 0x0b, + 0xe6, 0x0b, 0x05, 0x0c, 0x5a, 0x0b, 0x78, 0x0a, 0x9c, 0x09, 0x49, 0x08, 0x75, 0x07, 0x9a, 0x06, + 0x77, 0x06, 0xeb, 0x05, 0x02, 0x05, 0x52, 0x05, 0x0e, 0x05, 0xe3, 0x04, 0xc7, 0x04, 0xb5, 0x04, + 0xff, 0x03, 0xbb, 0x02, 0xfa, 0x00, 0x18, 0xff, 0xbc, 0xfc, 0x8f, 0xfa, 0x0a, 0xf9, 0x7c, 0xf7, + 0x71, 0xf6, 0x0f, 0xf5, 0xe5, 0xf4, 0x76, 0xf4, 0x2f, 0xf3, 0x34, 0xf3, 0xcf, 0xf2, 0xe4, 0xf2, + 0x32, 0xf3, 0xc3, 0xf2, 0xaf, 0xf2, 0xff, 0xf2, 0xdf, 0xf3, 0xd7, 0xf4, 0x51, 0xf6, 0x2c, 0xf8, + 0x64, 0xfa, 0x5b, 0xfd, 0xb7, 0xff, 0x0f, 0x02, 0x55, 0x04, 0x94, 0x06, 0x31, 0x09, 0xcd, 0x0a, + 0x09, 0x0c, 0x7f, 0x0d, 0x81, 0x0e, 0x6b, 0x0f, 0x74, 0x0f, 0xca, 0x0e, 0x32, 0x0e, 0xdf, 0x0d, + 0xa7, 0x0d, 0x5f, 0x0d, 0xa6, 0x0c, 0x6e, 0x0c, 0x82, 0x0c, 0x6c, 0x0c, 0xc5, 0x0c, 0x9d, 0x0c, + 0x04, 0x0c, 0x06, 0x0b, 0xe7, 0x08, 0xc4, 0x06, 0xac, 0x04, 0x23, 0x02, 0x89, 0xff, 0x16, 0xfd, + 0x0d, 0xfb, 0xb6, 0xf8, 0xd8, 0xf6, 0xf1, 0xf4, 0x45, 0xf3, 0x4f, 0xf2, 0x7d, 0xf1, 0x56, 0xf1, + 0x73, 0xf1, 0x39, 0xf1, 0x93, 0xf1, 0x6f, 0xf1, 0xce, 0xf1, 0xfd, 0xf2, 0x91, 0xf3, 0x05, 0xf5, + 0x58, 0xf6, 0xe1, 0xf7, 0x61, 0xfa, 0x6f, 0xfc, 0xfe, 0xfe, 0xa9, 0x01, 0xe6, 0x03, 0x58, 0x06, + 0x54, 0x07, 0xf2, 0x07, 0x31, 0x08, 0x65, 0x08, 0xca, 0x08, 0xc7, 0x08, 0xa4, 0x08, 0x71, 0x08, + 0xae, 0x08, 0x21, 0x09, 0x98, 0x09, 0x0c, 0x0a, 0x83, 0x0a, 0x6e, 0x0b, 0xd0, 0x0b, 0x89, 0x0b, + 0x6b, 0x0b, 0xa0, 0x0a, 0xad, 0x09, 0x78, 0x08, 0xaa, 0x06, 0x24, 0x04, 0x8c, 0x01, 0xbc, 0xfe, + 0x68, 0xfc, 0xdd, 0xf9, 0xa3, 0xf7, 0x20, 0xf6, 0x26, 0xf4, 0x8f, 0xf2, 0x83, 0xf1, 0x0b, 0xf0, + 0x0f, 0xef, 0x65, 0xee, 0x47, 0xed, 0xe4, 0xec, 0x5f, 0xed, 0xa5, 0xed, 0xee, 0xed, 0xee, 0xee, + 0x74, 0xf0, 0xc3, 0xf2, 0x69, 0xf5, 0xdb, 0xf7, 0xa2, 0xfa, 0x33, 0xfd, 0x25, 0x00, 0x03, 0x03, + 0x1c, 0x05, 0xd6, 0x06, 0x42, 0x08, 0x1f, 0x09, 0x1b, 0x0a, 0x67, 0x0a, 0xba, 0x09, 0xba, 0x09, + 0xa6, 0x08, 0xec, 0x07, 0xf3, 0x07, 0x8f, 0x07, 0xb5, 0x07, 0xb6, 0x07, 0xbc, 0x07, 0xcb, 0x07, + 0x7a, 0x07, 0xe8, 0x06, 0xa1, 0x05, 0x08, 0x04, 0xf4, 0x01, 0x5d, 0x00, 0x39, 0xfe, 0xe3, 0xfb, + 0x05, 0xfa, 0x15, 0xf8, 0x2c, 0xf7, 0x9f, 0xf6, 0xad, 0xf5, 0xd9, 0xf4, 0xac, 0xf4, 0x56, 0xf4, + 0x2b, 0xf4, 0x31, 0xf4, 0x13, 0xf5, 0x1f, 0xf6, 0x7d, 0xf6, 0x0a, 0xf7, 0xf0, 0xf6, 0x50, 0xf7, + 0xc4, 0xf8, 0x45, 0xfa, 0x29, 0xfc, 0xc0, 0xfe, 0x1a, 0x01, 0x26, 0x03, 0x48, 0x05, 0x62, 0x07, + 0x7b, 0x08, 0x64, 0x09, 0x1d, 0x0a, 0xd8, 0x09, 0xdb, 0x09, 0x88, 0x09, 0xae, 0x08, 0x37, 0x08, + 0xcd, 0x07, 0xe6, 0x07, 0x2d, 0x08, 0x90, 0x08, 0xfd, 0x08, 0x45, 0x09, 0xf5, 0x09, 0x0b, 0x0b, + 0x8f, 0x0b, 0xe1, 0x0b, 0x78, 0x0b, 0xb9, 0x0a, 0x14, 0x0a, 0xaf, 0x08, 0x49, 0x07, 0x22, 0x05, + 0x0f, 0x03, 0x8d, 0x02, 0x4a, 0x00, 0xe1, 0xff, 0x6a, 0xff, 0xa8, 0xfe, 0x67, 0xfd, 0x7d, 0xfc, + 0xbe, 0xfc, 0xbd, 0xfb, 0x4e, 0xfb, 0x5d, 0xfa, 0xb3, 0xf9, 0xca, 0xf9, 0x2d, 0xf9, 0x35, 0xf9, + 0xb3, 0xfa, 0xdc, 0xfb, 0x58, 0xfd, 0x39, 0xff, 0xec, 0x00, 0x50, 0x02, 0x57, 0x03, 0x8e, 0x04, + 0xf0, 0x05, 0xa7, 0x05, 0x64, 0x06, 0x10, 0x07, 0xf6, 0x07, 0x3b, 0x08, 0xe8, 0x06, 0x17, 0x06, + 0xe1, 0x05, 0xef, 0x04, 0xda, 0x04, 0x8d, 0x04, 0xd6, 0x03, 0xaa, 0x03, 0xa6, 0x03, 0x25, 0x03, + 0xae, 0x03, 0x3f, 0x04, 0x53, 0x03, 0x06, 0x02, 0x19, 0x00, 0xdb, 0xfe, 0xff, 0xfd, 0x06, 0xfc, + 0x10, 0xfa, 0x2b, 0xf9, 0x9d, 0xf7, 0x00, 0xf7, 0x48, 0xf6, 0x00, 0xf5, 0x9b, 0xf4, 0xaa, 0xf3, + 0x68, 0xf3, 0x27, 0xf4, 0xdf, 0xf3, 0x62, 0xf4, 0xf2, 0xf4, 0xe2, 0xf4, 0x53, 0xf6, 0x00, 0xf7, + 0x55, 0xf7, 0xae, 0xf8, 0xc5, 0xf9, 0x0a, 0xfb, 0x1d, 0xfc, 0x46, 0xfd, 0x3e, 0xfe, 0x26, 0x00, + 0x37, 0x01, 0x1c, 0x01, 0x8c, 0x01, 0xc1, 0x00, 0x48, 0x00, 0x76, 0xff, 0x6e, 0xff, 0xec, 0xff, + 0x43, 0xff, 0xf7, 0xfe, 0xb6, 0xff, 0x78, 0xff, 0x3a, 0x00, 0x10, 0x00, 0xb1, 0x00, 0x2d, 0x02, + 0x69, 0x03, 0x4a, 0x04, 0xa4, 0x04, 0x41, 0x04, 0x79, 0x03, 0x31, 0x03, 0x9b, 0x02, 0xa8, 0x00, + 0x83, 0xff, 0x3e, 0xfe, 0x02, 0xfd, 0xae, 0xfb, 0x1a, 0xfb, 0xf1, 0xfb, 0x4a, 0xfb, 0xbc, 0xfa, + 0x40, 0xfb, 0x84, 0xfb, 0x3f, 0xfb, 0xbe, 0xfa, 0xc3, 0xfa, 0x48, 0xfb, 0x15, 0xfc, 0xfb, 0xfb, + 0x3e, 0xfe, 0xc1, 0x00, 0x0c, 0x01, 0x54, 0x03, 0x72, 0x05, 0x93, 0x06, 0x90, 0x08, 0xc0, 0x09, + 0x19, 0x0c, 0x96, 0x0c, 0xed, 0x0c, 0xb3, 0x0d, 0xcb, 0x0c, 0x20, 0x0c, 0x2f, 0x0b, 0xe8, 0x0b, + 0xe6, 0x0a, 0xd9, 0x09, 0x52, 0x09, 0x11, 0x08, 0x2c, 0x07, 0xb4, 0x05, 0xb2, 0x05, 0x4a, 0x06, + 0x34, 0x06, 0x13, 0x07, 0xc1, 0x06, 0x24, 0x06, 0xe3, 0x03, 0xbe, 0x02, 0xf1, 0x02, 0xab, 0x01, + 0x63, 0xff, 0xde, 0xfd, 0x33, 0xfd, 0x4d, 0xfb, 0x6b, 0xfa, 0x96, 0xfa, 0x5b, 0xf9, 0x90, 0xf8, + 0x03, 0xf8, 0x17, 0xf9, 0x07, 0xf8, 0xa3, 0xf7, 0x66, 0xf9, 0xcf, 0xfa, 0xaf, 0xfc, 0xf1, 0xfc, + 0x9a, 0xfd, 0x82, 0xfe, 0xf0, 0xfe, 0xc7, 0xff, 0x71, 0x02, 0xdd, 0x05, 0xf4, 0x07, 0x23, 0x09, + 0x23, 0x0b, 0x84, 0x0b, 0xbf, 0x0a, 0xd3, 0x09, 0xf7, 0x08, 0xfd, 0x08, 0x16, 0x07, 0x44, 0x06, + 0x3c, 0x05, 0x7a, 0x02, 0x3f, 0x02, 0xc9, 0x01, 0x41, 0x01, 0x1d, 0x01, 0x4f, 0xff, 0xf7, 0xfd, + 0x80, 0xfe, 0x48, 0xfe, 0xf3, 0xfc, 0x26, 0xfd, 0x8e, 0xfc, 0xea, 0xf9, 0x5b, 0xf8, 0x80, 0xf6, + 0xcc, 0xf5, 0xba, 0xf4, 0x62, 0xf3, 0xb5, 0xf3, 0x11, 0xf3, 0xbc, 0xf4, 0xb8, 0xed, 0xb3, 0xec, + 0x98, 0xf0, 0x9d, 0xeb, 0x0b, 0xee, 0xa0, 0xf0, 0x14, 0xee, 0xc4, 0xed, 0x3f, 0xf0, 0x00, 0xf3, + 0x04, 0xf3, 0x5c, 0xf4, 0x0a, 0xf8, 0x50, 0xfc, 0xe8, 0xfb, 0x21, 0x00, 0x82, 0x00, 0x05, 0x02, + 0xf0, 0x03, 0x1a, 0x01, 0x3d, 0x07, 0x28, 0x06, 0x82, 0x07, 0x03, 0x09, 0x0e, 0x0c, 0xd3, 0x09, + 0x79, 0x0a, 0x05, 0x0b, 0x63, 0x0a, 0x2d, 0x05, 0x32, 0x05, 0x26, 0x06, 0xa3, 0x03, 0x6e, 0x03, + 0x35, 0x03, 0xdd, 0x05, 0x3d, 0x04, 0x69, 0x02, 0x88, 0x00, 0x1d, 0x02, 0x58, 0xfc, 0x28, 0xfe, + 0x34, 0xfc, 0xd5, 0xfb, 0x78, 0xf6, 0x4f, 0xfa, 0xe0, 0xf8, 0xc8, 0xf5, 0xc9, 0xf5, 0x49, 0xf5, + 0x71, 0xf3, 0x62, 0xf1, 0x70, 0xf3, 0x3e, 0xf1, 0x5f, 0xf4, 0xeb, 0xf4, 0xc5, 0xf4, 0x9e, 0xf4, + 0x22, 0xfb, 0xb9, 0xf8, 0x99, 0xfc, 0xbd, 0x01, 0xa9, 0x00, 0x10, 0x05, 0x36, 0x0a, 0xca, 0x0b, + 0x42, 0x0c, 0x03, 0x11, 0x87, 0x0f, 0x5a, 0x11, 0x90, 0x11, 0x5a, 0x15, 0x60, 0x11, 0xea, 0x12, + 0x77, 0x12, 0x19, 0x10, 0x69, 0x0f, 0xf4, 0x11, 0x71, 0x15, 0x3e, 0x14, 0x51, 0x15, 0x47, 0x13, + 0xc9, 0x13, 0xcb, 0x13, 0xd5, 0x15, 0x7d, 0x13, 0x3f, 0x14, 0x15, 0x11, 0x95, 0x0e, 0x35, 0x0c, + 0x2b, 0x0c, 0xf8, 0x05, 0xdc, 0x03, 0x5b, 0x01, 0x99, 0xfd, 0xcf, 0xf9, 0x3f, 0xf8, 0xb4, 0xf5, + 0xbe, 0xf3, 0xdb, 0xf2, 0xbb, 0xf2, 0x1f, 0xf1, 0x0a, 0xf1, 0x8a, 0xf2, 0x6c, 0xf0, 0x1f, 0xef, + 0x34, 0xf0, 0xae, 0xf2, 0xc0, 0xf2, 0x26, 0xf4, 0x4c, 0xf4, 0xd9, 0xf6, 0x6e, 0xf8, 0xd7, 0xfb, + 0xd6, 0xfc, 0x08, 0x00, 0x1c, 0x02, 0x2d, 0x04, 0x43, 0x05, 0x11, 0x07, 0x9c, 0x07, 0xdc, 0x07, + 0x4c, 0x07, 0x16, 0x06, 0xbd, 0x06, 0x15, 0x05, 0xfb, 0x05, 0x9e, 0x04, 0xfa, 0x04, 0x8d, 0x00, + 0x76, 0x01, 0x11, 0x00, 0x43, 0x01, 0xb7, 0xfe, 0x03, 0xfe, 0x01, 0xfc, 0x16, 0xf9, 0xac, 0xf7, + 0x73, 0xf8, 0xc0, 0xf5, 0x80, 0xf1, 0xdf, 0xf1, 0xfa, 0xed, 0x5e, 0xec, 0x71, 0xec, 0xd6, 0xed, + 0x47, 0xeb, 0x51, 0xeb, 0xfa, 0xea, 0x41, 0xe8, 0x5b, 0xe9, 0x01, 0xed, 0xe7, 0xed, 0x90, 0xef, + 0xfe, 0xf3, 0x7d, 0xf1, 0x82, 0xf3, 0x51, 0xf9, 0xaa, 0xf8, 0xd4, 0xfb, 0xf1, 0x00, 0xc5, 0x00, + 0xd7, 0x01, 0x0b, 0x06, 0x6b, 0x06, 0xc6, 0x08, 0x48, 0x0c, 0x06, 0x0a, 0xb2, 0x08, 0x3a, 0x0b, + 0xe0, 0x09, 0x55, 0x0a, 0xdf, 0x0c, 0x00, 0x0a, 0xd1, 0x07, 0xe6, 0x0a, 0x02, 0x0b, 0x5a, 0x0c, + 0x17, 0x0d, 0x50, 0x0e, 0x13, 0x0a, 0xe2, 0x0b, 0x70, 0x0d, 0xf3, 0x0a, 0x37, 0x0c, 0x8f, 0x0e, + 0xfb, 0x08, 0x64, 0x06, 0x08, 0x08, 0xa6, 0x03, 0x96, 0x03, 0xf7, 0x04, 0x5c, 0x02, 0x00, 0x00, + 0xb7, 0x02, 0x84, 0xff, 0x9d, 0xff, 0x6f, 0x02, 0x12, 0xff, 0x5e, 0xfb, 0xde, 0xfd, 0x98, 0xfc, + 0xd9, 0xfb, 0x4a, 0xff, 0x6c, 0xff, 0xd1, 0xfb, 0x17, 0xff, 0xeb, 0x00, 0x2c, 0xff, 0x4d, 0x03, + 0x34, 0x06, 0x01, 0x05, 0xd6, 0x05, 0x9a, 0x08, 0x54, 0x08, 0x28, 0x0a, 0xd0, 0x0a, 0x87, 0x06, + 0x90, 0x06, 0x4e, 0x08, 0xea, 0x06, 0xf0, 0x07, 0xca, 0x09, 0x8f, 0x04, 0x7d, 0x03, 0x24, 0x05, + 0x0b, 0x04, 0xc5, 0x04, 0x06, 0x08, 0x2c, 0x07, 0x20, 0x07, 0x8a, 0x05, 0x20, 0x03, 0x78, 0x03, + 0x4f, 0x02, 0xd4, 0x00, 0x63, 0xfc, 0x66, 0xfa, 0xa1, 0xf6, 0x4d, 0xf4, 0x9c, 0xf5, 0x84, 0xf6, + 0x32, 0xf4, 0xfa, 0xf0, 0x58, 0xf0, 0x5a, 0xef, 0x3d, 0xf0, 0xbc, 0xf2, 0xc5, 0xf2, 0xef, 0xf2, + 0x92, 0xf1, 0x13, 0xf3, 0x8d, 0xf4, 0x9f, 0xf6, 0xa1, 0xf6, 0xcc, 0xf9, 0x3e, 0xf7, 0x09, 0xf7, + 0x42, 0xfb, 0x91, 0xfc, 0xde, 0xff, 0x98, 0xfe, 0xcb, 0xff, 0x1c, 0xfe, 0xea, 0xfd, 0xe6, 0xff, + 0xe2, 0xfe, 0xa7, 0x00, 0xf9, 0x01, 0x6a, 0x01, 0xfe, 0xff, 0xa1, 0xfe, 0xea, 0x01, 0x82, 0x04, + 0x48, 0x04, 0x84, 0x01, 0x0e, 0x04, 0xce, 0x04, 0xeb, 0x05, 0x3c, 0x07, 0x35, 0x08, 0x27, 0x06, + 0x5e, 0x02, 0x91, 0x04, 0x13, 0x01, 0xda, 0x00, 0xa9, 0xff, 0x51, 0xff, 0x96, 0xfd, 0xe0, 0xfa, + 0x73, 0xf9, 0xf1, 0xfc, 0xd9, 0xfb, 0x63, 0xfb, 0x5b, 0xfa, 0x2d, 0xf7, 0x94, 0xf7, 0x1e, 0xfa, + 0x48, 0xf8, 0x59, 0xf8, 0xdd, 0xf7, 0x1b, 0xf9, 0x94, 0xfa, 0xf5, 0xfa, 0xbd, 0xfc, 0x14, 0xfe, + 0x28, 0x01, 0x91, 0x03, 0x48, 0x03, 0xaa, 0x02, 0x0d, 0x05, 0x0d, 0x06, 0xbf, 0x04, 0x2d, 0x04, + 0x36, 0x01, 0xce, 0xff, 0xe8, 0x01, 0x8b, 0x02, 0xee, 0x00, 0x62, 0xff, 0x2f, 0xff, 0x3a, 0xfd, + 0xcd, 0xfe, 0x7c, 0xfd, 0x8e, 0xff, 0x16, 0x00, 0x15, 0xfe, 0xd5, 0xfe, 0xe9, 0xff, 0x51, 0xfe, + 0x04, 0xfc, 0xfc, 0xf8, 0x02, 0xfb, 0x9a, 0xf8, 0x95, 0xf7, 0xdd, 0xf8, 0x70, 0xf7, 0x22, 0xf6, + 0x4e, 0xf7, 0x9c, 0xf8, 0xd1, 0xf8, 0x6a, 0xfc, 0xcb, 0xf9, 0x9f, 0xfc, 0xfa, 0xfd, 0x46, 0xff, + 0xfa, 0x01, 0xb3, 0x02, 0xc2, 0x03, 0x97, 0x0a, 0xed, 0x09, 0xf2, 0x0a, 0xf5, 0x0b, 0xc4, 0x0f, + 0xb3, 0x0f, 0x80, 0x13, 0x89, 0x13, 0xe2, 0x15, 0x3a, 0x15, 0xca, 0x15, 0x4e, 0x15, 0x2a, 0x15, + 0xf6, 0x14, 0x1e, 0x13, 0x77, 0x11, 0x46, 0x10, 0x05, 0x10, 0xb8, 0x0e, 0xc8, 0x0c, 0xef, 0x0c, + 0xad, 0x0b, 0xa9, 0x0b, 0x47, 0x0c, 0x35, 0x0b, 0x3b, 0x0f, 0xd0, 0x0c, 0x4f, 0x0a, 0x88, 0x0a, + 0x5e, 0x09, 0x9d, 0x08, 0x73, 0x05, 0x63, 0x02, 0x48, 0x02, 0xd6, 0xff, 0x07, 0xff, 0x91, 0xfd, + 0xf0, 0xfc, 0x8d, 0xfd, 0x6c, 0xfc, 0xee, 0xfa, 0xec, 0xf9, 0x68, 0xf9, 0xb8, 0xf5, 0xc3, 0xf7, + 0xa0, 0xf8, 0x44, 0xf5, 0x1c, 0xf3, 0x28, 0xf6, 0x29, 0xf6, 0xfa, 0xf7, 0xb2, 0xf9, 0xe1, 0xf7, + 0xff, 0xfb, 0x1f, 0xfb, 0x11, 0xfd, 0x11, 0x00, 0xb3, 0xfd, 0x8c, 0x01, 0x9c, 0xfe, 0xe8, 0xfd, + 0x8d, 0xfe, 0x57, 0xf9, 0x08, 0xfc, 0x62, 0xfa, 0xba, 0xf9, 0x84, 0xfa, 0x55, 0xfe, 0x6d, 0xfc, + 0x93, 0xfa, 0xce, 0xf9, 0x0e, 0xfb, 0x72, 0xfb, 0xc1, 0xfb, 0xa0, 0xfb, 0x4a, 0xfc, 0xe3, 0xfb, + 0x43, 0xfa, 0x35, 0xfa, 0x8f, 0xf7, 0xeb, 0xf4, 0xf4, 0xf4, 0x49, 0xf4, 0x99, 0xf2, 0x1a, 0xf3, + 0x4a, 0xf2, 0x1c, 0xf5, 0xa9, 0xf0, 0xde, 0xf3, 0x11, 0xf6, 0x90, 0xf3, 0x59, 0xf4, 0x56, 0xf5, + 0x20, 0xf7, 0x9a, 0xf8, 0x03, 0xfb, 0x53, 0xfd, 0x52, 0xfd, 0x85, 0xfe, 0x26, 0x00, 0x85, 0x03, + 0xeb, 0x05, 0x2c, 0x09, 0xdf, 0x0c, 0xd2, 0x0b, 0x92, 0x0b, 0x4b, 0x0d, 0xfc, 0x0f, 0x83, 0x0c, + 0x85, 0x0c, 0x6e, 0x0b, 0x7c, 0x0c, 0xf8, 0x0b, 0xde, 0x09, 0xbb, 0x0c, 0xc8, 0x07, 0x6d, 0x04, + 0x5c, 0x06, 0xee, 0x03, 0xd6, 0x04, 0xd0, 0xff, 0xd8, 0x01, 0xf9, 0xfe, 0xdd, 0xfa, 0x68, 0xfa, + 0xcc, 0xf7, 0xd9, 0xf5, 0xd9, 0xf3, 0x92, 0xef, 0xc5, 0xed, 0x2b, 0xeb, 0xdf, 0xe9, 0xd7, 0xea, + 0x60, 0xe8, 0x5a, 0xe6, 0x03, 0xe5, 0xf9, 0xe4, 0xcf, 0xe3, 0x0d, 0xe3, 0x19, 0xe4, 0x70, 0xe4, + 0x00, 0xe5, 0x18, 0xe6, 0x35, 0xe8, 0x1b, 0xec, 0x0b, 0xf0, 0xbb, 0xef, 0xf3, 0xf4, 0x3a, 0xf7, + 0xa6, 0xfd, 0xcb, 0x01, 0x07, 0x05, 0x8c, 0x09, 0x9a, 0x0b, 0x56, 0x0f, 0x95, 0x0f, 0xf0, 0x11, + 0xd9, 0x12, 0xb4, 0x13, 0x0b, 0x13, 0x17, 0x14, 0x3b, 0x18, 0xe8, 0x14, 0x4a, 0x16, 0xc8, 0x16, + 0x0e, 0x17, 0x33, 0x18, 0x48, 0x17, 0x7b, 0x16, 0xc9, 0x14, 0x53, 0x16, 0x0e, 0x16, 0x3f, 0x18, + 0x77, 0x16, 0x04, 0x11, 0xd3, 0x0f, 0x1b, 0x0b, 0x86, 0x0c, 0x4b, 0x0a, 0x23, 0x03, 0xe4, 0x00, + 0x96, 0xfd, 0xdc, 0x00, 0xc5, 0xfd, 0x29, 0xfa, 0x18, 0xf9, 0xb5, 0xf6, 0x7c, 0xf5, 0xd3, 0xf7, + 0x58, 0xf8, 0x93, 0xf6, 0x51, 0xf8, 0x43, 0xf9, 0x92, 0xfc, 0x39, 0xfc, 0xc5, 0xfb, 0xed, 0xfe, + 0x04, 0x02, 0xf1, 0x01, 0x35, 0x04, 0xcd, 0x04, 0x03, 0x06, 0xd1, 0x08, 0xae, 0x07, 0x8e, 0x06, + 0xb0, 0x09, 0xac, 0x07, 0x0b, 0x05, 0xf7, 0x07, 0x21, 0x06, 0xad, 0x08, 0xbf, 0x04, 0xec, 0x01, + 0x8a, 0x03, 0x05, 0x04, 0xd2, 0x03, 0xd0, 0x03, 0xaf, 0x03, 0xd1, 0x03, 0x2f, 0x03, 0x22, 0x03, + 0x6e, 0x05, 0x05, 0x04, 0x70, 0xff, 0x85, 0xff, 0x14, 0xff, 0x2e, 0xfd, 0x91, 0xf9, 0xc9, 0xf8, + 0x89, 0xf9, 0x27, 0xfb, 0x2d, 0xfe, 0xc3, 0xf9, 0x47, 0xf7, 0x13, 0xf6, 0x0e, 0xf7, 0xc4, 0xf9, + 0x8c, 0xf6, 0xd3, 0xfa, 0xef, 0xf8, 0x9f, 0xf9, 0x87, 0xff, 0xcd, 0xff, 0x0c, 0x01, 0xf3, 0xfd, + 0x52, 0x00, 0xf1, 0x05, 0xca, 0x05, 0xba, 0x05, 0xee, 0x07, 0xf7, 0x07, 0x16, 0x09, 0xbc, 0x09, + 0xc4, 0x0b, 0x32, 0x0c, 0x54, 0x0a, 0x3f, 0x0b, 0x1c, 0x0b, 0xf9, 0x0a, 0x0d, 0x0c, 0xf8, 0x0a, + 0xe4, 0x08, 0xb1, 0x07, 0x76, 0x05, 0x1a, 0x06, 0xd4, 0x05, 0xc4, 0x06, 0x18, 0x05, 0xd3, 0x02, + 0x8d, 0x04, 0x58, 0x02, 0x7b, 0xfe, 0xac, 0xfa, 0x3f, 0xfb, 0x26, 0xf9, 0x20, 0xf4, 0x69, 0xf0, + 0x2e, 0xee, 0x1b, 0xee, 0x6a, 0xf0, 0xc0, 0xed, 0x49, 0xec, 0xc8, 0xea, 0x27, 0xea, 0xd9, 0xe9, + 0x84, 0xec, 0xe6, 0xeb, 0x10, 0xec, 0xe9, 0xeb, 0x26, 0xec, 0xc8, 0xed, 0xa5, 0xec, 0xfe, 0xec, + 0x17, 0xed, 0x2f, 0xf0, 0x9b, 0xf2, 0x49, 0xf5, 0xb7, 0xf8, 0x5c, 0xf8, 0xc6, 0xfb, 0xc3, 0xf9, + 0x29, 0xfb, 0x40, 0xff, 0x5b, 0xfc, 0x19, 0x00, 0x34, 0x00, 0xe1, 0x01, 0xb8, 0x03, 0xf2, 0xff, + 0xa7, 0xfe, 0x38, 0xff, 0xb3, 0xfe, 0x56, 0x01, 0x98, 0x02, 0xc8, 0x02, 0x10, 0x03, 0xe3, 0x05, + 0xd5, 0x07, 0x66, 0x07, 0x62, 0x07, 0xf8, 0x03, 0x12, 0x03, 0xe7, 0x01, 0x0a, 0x02, 0x72, 0x01, + 0x8d, 0x02, 0x99, 0xfd, 0x49, 0xff, 0x7c, 0xfd, 0x75, 0xfd, 0xa4, 0x00, 0xbe, 0xfe, 0x87, 0xff, + 0x65, 0xff, 0x66, 0xff, 0xa2, 0x00, 0xcd, 0x01, 0x65, 0x05, 0xb8, 0x06, 0x37, 0x06, 0xb7, 0x05, + 0xc1, 0x08, 0xf5, 0x0d, 0xc9, 0x0e, 0x3b, 0x12, 0x87, 0x14, 0xbc, 0x17, 0x14, 0x17, 0xda, 0x17, + 0xf7, 0x19, 0xd2, 0x1a, 0xad, 0x17, 0x4a, 0x14, 0x7d, 0x16, 0xfe, 0x12, 0x95, 0x15, 0x37, 0x17, + 0x6d, 0x15, 0x7f, 0x14, 0xee, 0x10, 0xc2, 0x13, 0x90, 0x10, 0x5d, 0x13, 0x4e, 0x10, 0xb0, 0x0d, + 0x47, 0x0e, 0x6f, 0x0b, 0x96, 0x09, 0x9b, 0x03, 0xbc, 0xff, 0xd3, 0xfe, 0x3a, 0xfa, 0x31, 0xf1, + 0x67, 0xf3, 0x1f, 0xf1, 0x8a, 0xed, 0xc2, 0xe8, 0xf0, 0xe6, 0x4e, 0xe5, 0x2c, 0xe3, 0xd2, 0xe2, + 0x8c, 0xe6, 0x5c, 0xea, 0x92, 0xe9, 0x72, 0xee, 0x2b, 0xef, 0xa4, 0xf2, 0x5b, 0xf1, 0xbe, 0xf4, + 0x25, 0xf6, 0x4a, 0xfd, 0x6b, 0xfd, 0x4c, 0xff, 0x78, 0x03, 0x3e, 0x05, 0x65, 0x0a, 0xe6, 0x07, + 0xa2, 0x0a, 0xf2, 0x0e, 0x48, 0x0f, 0x94, 0x0c, 0x06, 0x11, 0x7d, 0x0d, 0xfb, 0x08, 0xf4, 0x05, + 0xf8, 0xff, 0xc8, 0x00, 0x03, 0xff, 0x3a, 0xfa, 0x20, 0xfc, 0x90, 0xfd, 0xf6, 0xfc, 0x89, 0xfd, + 0xc3, 0xfd, 0x2c, 0xff, 0xea, 0x00, 0x15, 0x01, 0x80, 0xfe, 0xaa, 0x02, 0xe2, 0xff, 0xe7, 0xfa, + 0x9d, 0xfc, 0x49, 0xfa, 0x01, 0xff, 0xad, 0x00, 0x76, 0xfd, 0xe9, 0xfd, 0xc6, 0xf9, 0xa0, 0xf7, + 0x9d, 0xf8, 0x9d, 0xf7, 0x53, 0xf8, 0xfa, 0xf7, 0x1f, 0xf8, 0x71, 0xfa, 0xdb, 0xf8, 0x9d, 0xf8, + 0x2b, 0xf7, 0xa7, 0xf9, 0x1a, 0xf9, 0x00, 0xf7, 0x96, 0xf3, 0x0d, 0xf2, 0xae, 0xf3, 0xfa, 0xf1, + 0xf6, 0xf0, 0x4d, 0xef, 0x1b, 0xf1, 0xd2, 0xee, 0xa2, 0xf1, 0xb6, 0xf2, 0x25, 0xf4, 0x82, 0xf6, + 0x10, 0xf7, 0x7c, 0xf8, 0x72, 0xf8, 0x90, 0xf8, 0x94, 0xf8, 0x1c, 0xf9, 0x85, 0xf9, 0x0d, 0xf5, + 0x99, 0xf7, 0x51, 0xf7, 0x1f, 0xf8, 0xf1, 0xf6, 0xee, 0xf5, 0x28, 0xf8, 0xb6, 0xf7, 0x80, 0xf4, + 0x92, 0xf2, 0xbb, 0xf4, 0xfa, 0xf0, 0xc2, 0xf2, 0x41, 0xef, 0x49, 0xed, 0x9c, 0xee, 0x5b, 0xee, + 0xdd, 0xf2, 0x79, 0xf2, 0x8d, 0xf3, 0x4d, 0xf6, 0xbb, 0xf7, 0xb5, 0xfc, 0x53, 0x01, 0x0b, 0x07, + 0xd9, 0x05, 0xc3, 0x08, 0x6d, 0x11, 0x16, 0x16, 0xfe, 0x1a, 0xec, 0x18, 0x67, 0x1a, 0xb5, 0x18, + 0x48, 0x16, 0x05, 0x18, 0x56, 0x1b, 0x46, 0x19, 0x9f, 0x19, 0x61, 0x1d, 0xd7, 0x1b, 0xfe, 0x19, + 0x2f, 0x1a, 0x49, 0x18, 0x5d, 0x16, 0x09, 0x13, 0x8d, 0x0f, 0x6a, 0x0b, 0xde, 0x09, 0xe8, 0x07, + 0x17, 0x09, 0xa8, 0x09, 0x2a, 0x04, 0x94, 0x06, 0x54, 0x05, 0x36, 0x04, 0x23, 0x09, 0x87, 0x09, + 0x6b, 0x08, 0x64, 0x08, 0x0d, 0x06, 0xd5, 0x05, 0x2d, 0x04, 0x69, 0xff, 0xd8, 0xfb, 0xe7, 0xf7, + 0xc9, 0xf4, 0x9f, 0xf7, 0x57, 0xf8, 0x17, 0xfb, 0xd1, 0xfe, 0xa3, 0x00, 0x10, 0x04, 0xba, 0x06, + 0x0f, 0x08, 0x48, 0x09, 0xd3, 0x0c, 0x12, 0x0d, 0xa4, 0x0d, 0xaa, 0x0d, 0x3a, 0x0c, 0x00, 0x10, + 0xbc, 0x0f, 0xdd, 0x10, 0x46, 0x16, 0x44, 0x16, 0x5b, 0x17, 0x94, 0x19, 0xe0, 0x1c, 0x9f, 0x1f, + 0xdc, 0x20, 0x68, 0x1d, 0xd2, 0x1a, 0xbe, 0x1a, 0xf1, 0x19, 0x96, 0x14, 0x5b, 0x12, 0x34, 0x0c, + 0xbf, 0x07, 0x1d, 0x07, 0x5a, 0x03, 0xdd, 0x03, 0x46, 0xff, 0xba, 0xfc, 0x58, 0xfa, 0x4b, 0xf8, + 0x29, 0xf1, 0xf8, 0xed, 0x0c, 0xe8, 0xdf, 0xe4, 0x31, 0xe3, 0xc0, 0xdd, 0xbe, 0xdb, 0x18, 0xd7, + 0x30, 0xd7, 0xf9, 0xd7, 0x7e, 0xd9, 0xe0, 0xdb, 0x10, 0xde, 0x03, 0xdf, 0xaa, 0xe1, 0x10, 0xe8, + 0xb9, 0xed, 0x1f, 0xf1, 0x12, 0xf5, 0x5a, 0xf6, 0x5b, 0xfb, 0x9c, 0xfb, 0x10, 0xfa, 0x03, 0xf9, + 0xbd, 0xf8, 0x9c, 0xf8, 0xd2, 0xf7, 0x72, 0xfb, 0xeb, 0xf8, 0x19, 0xfe, 0x07, 0xff, 0x02, 0xfd, + 0x66, 0xfd, 0xe1, 0xfb, 0x17, 0xf9, 0x89, 0xf6, 0x16, 0xfa, 0x22, 0xf5, 0xb2, 0xf7, 0x8e, 0xf8, + 0x07, 0xf5, 0x2a, 0xf7, 0x97, 0xf3, 0x10, 0xf9, 0xb1, 0xfb, 0x89, 0xf9, 0x10, 0xfb, 0x84, 0xff, + 0xbf, 0xfd, 0x6c, 0xfe, 0xa7, 0xfe, 0x8c, 0xff, 0xeb, 0x01, 0x8d, 0xff, 0x0a, 0xfc, 0xc8, 0xf7, + 0x83, 0xf3, 0x9e, 0xf4, 0x86, 0xf7, 0xb4, 0xf6, 0xa3, 0xf9, 0x70, 0xf9, 0x8c, 0xfa, 0x70, 0xfb, + 0x37, 0xfd, 0xb7, 0xf9, 0x15, 0xfc, 0xe6, 0xfb, 0x37, 0xfd, 0x4e, 0x00, 0x30, 0xfd, 0x99, 0x01, + 0x18, 0x04, 0x12, 0x03, 0x01, 0x04, 0xd4, 0x08, 0x56, 0x0b, 0x33, 0x0e, 0x9b, 0x0f, 0x66, 0x0d, + 0xd3, 0x10, 0x2b, 0x14, 0x09, 0x15, 0x00, 0x16, 0xfc, 0x15, 0x8f, 0x16, 0xf1, 0x14, 0x10, 0x14, + 0x61, 0x11, 0xfe, 0x10, 0xc6, 0x0e, 0xbf, 0x0b, 0x05, 0x0c, 0x01, 0x09, 0x22, 0x05, 0xae, 0x02, + 0xfc, 0xfe, 0x40, 0xfb, 0x60, 0xf4, 0x02, 0xf1, 0x6b, 0xf0, 0x10, 0xef, 0x88, 0xee, 0x7f, 0xeb, + 0x08, 0xeb, 0x95, 0xe9, 0x41, 0xe9, 0x39, 0xeb, 0xbc, 0xed, 0x0b, 0xf0, 0xb3, 0xf1, 0xe2, 0xf2, + 0xec, 0xf9, 0xd7, 0xfa, 0x74, 0xff, 0xe9, 0x06, 0x39, 0x0d, 0x51, 0x13, 0x57, 0x12, 0x00, 0x12, + 0x18, 0x12, 0x3e, 0x15, 0xff, 0x12, 0x0c, 0x15, 0xf0, 0x14, 0x2c, 0x14, 0xc4, 0x16, 0x14, 0x15, + 0xc5, 0x13, 0xef, 0x11, 0x69, 0x0f, 0x5a, 0x0a, 0x4c, 0x0a, 0x33, 0x08, 0x91, 0x04, 0x8f, 0x08, + 0xa3, 0x06, 0xb7, 0x06, 0x8d, 0x04, 0x4a, 0x02, 0xcf, 0x04, 0xcf, 0x06, 0x54, 0x05, 0x7b, 0x03, + 0x49, 0x04, 0x68, 0x03, 0xf8, 0x05, 0xf8, 0x04, 0x85, 0x06, 0x22, 0x08, 0xcb, 0x04, 0xa9, 0x01, + 0x1d, 0xfe, 0xa7, 0xfe, 0xa7, 0xff, 0x87, 0xfc, 0x79, 0xfb, 0xea, 0xfb, 0xda, 0xfb, 0xdd, 0xf7, + 0x69, 0xfd, 0x38, 0xfc, 0xb7, 0xf9, 0xf8, 0xfb, 0xa1, 0xfb, 0xff, 0x00, 0x0d, 0xfe, 0x4e, 0xfe, + 0xb8, 0x01, 0xfe, 0x02, 0xbe, 0x01, 0x48, 0x01, 0xa6, 0x01, 0x35, 0x02, 0x0b, 0x04, 0xc8, 0x05, + 0x99, 0x04, 0xb3, 0x05, 0xce, 0x06, 0xca, 0x08, 0xb3, 0x0a, 0x92, 0x0e, 0x91, 0x0e, 0x98, 0x0b, + 0xaa, 0x08, 0xd5, 0x05, 0x18, 0x06, 0x39, 0x00, 0xb1, 0xff, 0x20, 0xfe, 0xcb, 0xfb, 0x08, 0xf9, + 0x77, 0xf7, 0x15, 0xf5, 0xcd, 0xef, 0x1c, 0xec, 0xf2, 0xe9, 0x6f, 0xe8, 0x18, 0xe6, 0x67, 0xe3, + 0x01, 0xe3, 0x0a, 0xe2, 0xfb, 0xe1, 0x2d, 0xe1, 0x7b, 0xe1, 0x3e, 0xe6, 0x26, 0xe8, 0xce, 0xe7, + 0x78, 0xea, 0x04, 0xf0, 0x3e, 0xf1, 0xf1, 0xf6, 0x59, 0xfc, 0xe4, 0x01, 0x95, 0x05, 0x0e, 0x03, + 0x9e, 0x02, 0x60, 0x03, 0x51, 0x05, 0xed, 0x01, 0xca, 0xff, 0x0d, 0x01, 0x9b, 0xff, 0x5f, 0x03, + 0xdc, 0x02, 0xb8, 0x00, 0x6b, 0x00, 0x92, 0xfd, 0x18, 0xfb, 0xc1, 0xfe, 0x33, 0xfc, 0x30, 0xfd, + 0xef, 0xfd, 0xb4, 0xfb, 0x7e, 0xfe, 0x0f, 0xfb, 0x5f, 0xfb, 0xb1, 0xfc, 0xce, 0xfe, 0x98, 0xfd, + 0x19, 0x02, 0xe1, 0x02, 0xb0, 0x02, 0xa2, 0x03, 0x6c, 0x03, 0xc8, 0x08, 0x83, 0x0c, 0xaf, 0x0a, + 0x27, 0x06, 0xa3, 0x01, 0x6f, 0xff, 0x12, 0x01, 0x7d, 0xfd, 0xb3, 0xfc, 0x98, 0xff, 0x11, 0xfe, + 0x9c, 0xfe, 0x54, 0x02, 0xd4, 0xfd, 0xff, 0xff, 0x51, 0xff, 0x1a, 0x00, 0x8f, 0xff, 0x76, 0xfb, + 0x07, 0xfb, 0xa6, 0xfc, 0xaa, 0xfe, 0x9d, 0xfb, 0xcf, 0xfc, 0x27, 0xfc, 0x58, 0xfe, 0xcc, 0x00, + 0x91, 0x01, 0xfd, 0x03, 0x2f, 0x06, 0x75, 0x09, 0xba, 0x09, 0xb2, 0x0e, 0x61, 0x10, 0x8e, 0x10, + 0x00, 0x12, 0xa8, 0x0e, 0x13, 0x10, 0x16, 0x0b, 0x4c, 0x09, 0x72, 0x08, 0x15, 0x07, 0x55, 0x08, + 0x7b, 0x07, 0x86, 0x08, 0xbd, 0x04, 0x24, 0x00, 0x4a, 0xfe, 0x2a, 0xfb, 0x1d, 0xfb, 0x9d, 0xf9, + 0x6f, 0xf6, 0xe5, 0xf4, 0xc2, 0xf2, 0x20, 0xf6, 0xd6, 0xf5, 0x55, 0xf5, 0x54, 0xf7, 0x06, 0xfb, + 0x9c, 0xfb, 0x10, 0x02, 0xab, 0x06, 0xff, 0x09, 0x7e, 0x0e, 0xd5, 0x13, 0x43, 0x1c, 0xe5, 0x1b, + 0x1d, 0x1c, 0x60, 0x1a, 0x95, 0x19, 0x26, 0x19, 0x37, 0x16, 0x77, 0x17, 0x14, 0x15, 0x96, 0x16, + 0x48, 0x18, 0x69, 0x15, 0x3a, 0x13, 0xad, 0x10, 0x39, 0x0d, 0xaa, 0x09, 0x9a, 0x07, 0x76, 0x01, + 0x8a, 0xff, 0xb6, 0xfc, 0x41, 0xfb, 0x7e, 0xfa, 0xa7, 0xf6, 0xd5, 0xf6, 0x9d, 0xf7, 0x8c, 0xf7, + 0x64, 0xf6, 0xe5, 0xf6, 0x81, 0xf8, 0x9c, 0xf7, 0x6e, 0xf8, 0xdf, 0xf7, 0x7e, 0xfa, 0xe9, 0xfd, + 0xb3, 0xf9, 0x8d, 0xfa, 0xfb, 0xf4, 0x2f, 0xf4, 0x83, 0xf5, 0xcc, 0xf2, 0x97, 0xf4, 0x5d, 0xf8, + 0x12, 0xf8, 0x55, 0xfd, 0xa6, 0xfd, 0x11, 0xfc, 0x3a, 0xff, 0x35, 0xff, 0x5d, 0x03, 0xb9, 0x01, + 0x73, 0x00, 0xa4, 0xfe, 0x67, 0x01, 0x7a, 0x02, 0x3c, 0x03, 0x00, 0x04, 0xb2, 0x01, 0xed, 0x03, + 0x8b, 0x06, 0x0f, 0x07, 0x63, 0x07, 0xd1, 0x08, 0x6b, 0x08, 0x97, 0x08, 0x60, 0x0a, 0x87, 0x0a, + 0xa3, 0x0b, 0x81, 0x08, 0x23, 0x05, 0x90, 0x02, 0xf0, 0xfc, 0xf5, 0xf9, 0x1e, 0xf8, 0x27, 0xf9, + 0xe4, 0xf7, 0x4e, 0xf6, 0xdb, 0xf2, 0x46, 0xed, 0x01, 0xea, 0x98, 0xe5, 0xed, 0xe2, 0x30, 0xe1, + 0xa7, 0xdd, 0xb4, 0xdb, 0x88, 0xdb, 0xb0, 0xda, 0x22, 0xdc, 0xf1, 0xdc, 0x46, 0xdc, 0xbf, 0xe1, + 0x75, 0xe1, 0x4b, 0xe5, 0xcb, 0xea, 0x60, 0xed, 0x92, 0xf3, 0xda, 0xf5, 0x90, 0xfe, 0xd0, 0x01, + 0xca, 0x03, 0xb8, 0x07, 0xbd, 0x07, 0x3e, 0x09, 0xed, 0x07, 0xf4, 0x06, 0x60, 0x07, 0x77, 0x04, + 0x53, 0x09, 0xd5, 0x09, 0x76, 0x07, 0xa4, 0x05, 0x4a, 0x05, 0xbb, 0x02, 0xed, 0x00, 0x6d, 0x00, + 0x28, 0xfe, 0xa8, 0xfe, 0x9f, 0xfb, 0x84, 0xfe, 0x25, 0xfe, 0xc5, 0xfc, 0x16, 0xfa, 0x4f, 0xfb, + 0x7b, 0xfb, 0x51, 0xfb, 0x27, 0xff, 0x32, 0xfe, 0xde, 0xfe, 0x5e, 0x00, 0xf3, 0xfe, 0x01, 0x04, + 0x3f, 0x04, 0xc4, 0x04, 0x94, 0x05, 0xee, 0x00, 0x61, 0x02, 0x16, 0x00, 0xa0, 0xfe, 0x4a, 0x01, + 0xa1, 0x05, 0x73, 0x05, 0x8f, 0x08, 0x30, 0x07, 0xe3, 0x08, 0xc9, 0x0a, 0x1e, 0x0b, 0xa3, 0x0d, + 0x5b, 0x0a, 0xaa, 0x09, 0x8a, 0x09, 0xb3, 0x0c, 0xf3, 0x0d, 0xe5, 0x0d, 0xfb, 0x0f, 0x27, 0x0c, + 0x7e, 0x0f, 0x3b, 0x11, 0xc7, 0x10, 0x41, 0x13, 0xf1, 0x13, 0x1f, 0x16, 0x4d, 0x19, 0x2c, 0x19, + 0x09, 0x1a, 0x38, 0x1c, 0xe7, 0x1a, 0xda, 0x19, 0xaa, 0x15, 0xc5, 0x12, 0x6f, 0x0d, 0x91, 0x0a, + 0x1f, 0x0a, 0xbd, 0x07, 0x39, 0x06, 0xef, 0x01, 0xb4, 0xfd, 0xa5, 0xfa, 0x45, 0xf6, 0x21, 0xf4, + 0xa1, 0xf2, 0x6f, 0xef, 0x9c, 0xed, 0x2c, 0xea, 0x0c, 0xeb, 0x1f, 0xeb, 0x52, 0xe7, 0x97, 0xe7, + 0xce, 0xea, 0x2b, 0xeb, 0xb0, 0xef, 0x4b, 0xf0, 0xe3, 0xf4, 0xb0, 0xf8, 0x2f, 0xfe, 0x69, 0x06, + 0x73, 0x09, 0xc5, 0x0d, 0xc4, 0x0e, 0xa1, 0x0f, 0x47, 0x0e, 0x98, 0x0b, 0xd3, 0x0a, 0xc5, 0x09, + 0x20, 0x0b, 0x22, 0x0d, 0x10, 0x0c, 0x68, 0x08, 0x2a, 0x07, 0x5c, 0x05, 0xa6, 0x04, 0x2a, 0x04, + 0xbd, 0xff, 0x9c, 0xff, 0x11, 0xfd, 0x82, 0xfd, 0xc9, 0xfb, 0x37, 0xfb, 0x5b, 0xf8, 0x03, 0xf4, + 0xfa, 0xf5, 0x07, 0xf4, 0xb6, 0xf5, 0xf8, 0xf5, 0xf2, 0xf1, 0x7b, 0xf5, 0xc4, 0xf5, 0xc9, 0xf5, + 0xd3, 0xf9, 0xc2, 0xf8, 0xf3, 0xfc, 0xaf, 0xf8, 0x3b, 0xf6, 0x15, 0xf6, 0x0c, 0xf3, 0xb7, 0xf0, + 0xf9, 0xf3, 0x82, 0xf5, 0xd9, 0xf6, 0xa5, 0xf9, 0x48, 0xf9, 0xb8, 0xfc, 0xbd, 0xfc, 0xaa, 0x00, + 0xeb, 0x01, 0x51, 0x02, 0x2d, 0x01, 0xe4, 0x01, 0x30, 0x06, 0x0a, 0x04, 0xc6, 0x06, 0x4d, 0x03, + 0xbc, 0xff, 0x93, 0x04, 0xc6, 0x04, 0x2f, 0x05, 0x23, 0x05, 0x12, 0x06, 0x3b, 0x09, 0x15, 0x0c, + 0x27, 0x0d, 0xb0, 0x0e, 0x20, 0x10, 0x69, 0x0e, 0x41, 0x0d, 0x71, 0x09, 0xf3, 0x04, 0x08, 0x01, + 0x08, 0x00, 0x73, 0x01, 0xa9, 0xfe, 0x58, 0xff, 0x30, 0xfb, 0xe0, 0xf9, 0x46, 0xf9, 0x10, 0xf4, + 0xdb, 0xf3, 0xbe, 0xed, 0x05, 0xee, 0xcd, 0xea, 0x02, 0xe9, 0x64, 0xeb, 0xdf, 0xe9, 0xc4, 0xe7, + 0xe4, 0xe7, 0xf7, 0xe7, 0x3a, 0xec, 0xe5, 0xee, 0x40, 0xf0, 0x71, 0xf6, 0x83, 0xf9, 0x61, 0x01, + 0xe1, 0x04, 0xfa, 0x09, 0xbd, 0x0c, 0x7e, 0x0d, 0x52, 0x0e, 0x76, 0x0c, 0xde, 0x0a, 0x69, 0x08, + 0xb0, 0x04, 0xab, 0x06, 0x3f, 0x09, 0x81, 0x08, 0xba, 0x07, 0x67, 0x08, 0x78, 0x08, 0xd5, 0x07, + 0xb6, 0x07, 0x7d, 0x06, 0x9c, 0x04, 0x4b, 0x03, 0xfb, 0x03, 0x60, 0x03, 0xcc, 0x05, 0x2b, 0x01, + 0xa6, 0xff, 0x9f, 0x00, 0x77, 0x01, 0x66, 0x04, 0x03, 0x03, 0x10, 0x02, 0xbf, 0x05, 0x7c, 0x06, + 0x03, 0x08, 0xe4, 0x09, 0xbc, 0x09, 0x4e, 0x0b, 0x12, 0x07, 0xd2, 0x03, 0x6f, 0x02, 0xa3, 0xfc, + 0x33, 0xfd, 0xcb, 0xfe, 0x05, 0xfe, 0x54, 0x00, 0x13, 0xff, 0x97, 0x00, 0xd6, 0xff, 0x43, 0x00, + 0xb6, 0xff, 0xb1, 0xfe, 0x33, 0xff, 0x84, 0xf9, 0x16, 0xfb, 0xb6, 0xfa, 0x91, 0xf9, 0x0d, 0xfe, + 0xfd, 0xf7, 0x8c, 0xf8, 0x1c, 0xfd, 0xe2, 0xfd, 0xa6, 0xfe, 0x24, 0xff, 0x05, 0x03, 0x9e, 0x05, + 0x74, 0x08, 0xd0, 0x0a, 0xe8, 0x0e, 0x9b, 0x0f, 0x8d, 0x0f, 0x3a, 0x0e, 0xac, 0x0b, 0x67, 0x07, + 0x61, 0x03, 0x11, 0x04, 0xd1, 0x03, 0xce, 0x03, 0xe1, 0x03, 0xb0, 0x00, 0x29, 0x01, 0xe6, 0xfc, + 0x03, 0xfb, 0x98, 0xf8, 0x3c, 0xf5, 0xdc, 0xf6, 0x7c, 0xf1, 0xa1, 0xf1, 0xf3, 0xf2, 0x54, 0xf2, + 0x41, 0xef, 0xb8, 0xf0, 0xf8, 0xf1, 0xcc, 0xf6, 0x09, 0xf9, 0x8c, 0xfa, 0xa7, 0xfe, 0xfe, 0x01, + 0xf0, 0x08, 0xf7, 0x0c, 0x89, 0x11, 0xec, 0x13, 0x85, 0x14, 0xb7, 0x15, 0x95, 0x10, 0x24, 0x10, + 0xeb, 0x0c, 0x9d, 0x09, 0x91, 0x0c, 0x2b, 0x0c, 0x98, 0x0c, 0x95, 0x09, 0x03, 0x09, 0xc0, 0x07, + 0x0d, 0x04, 0xd7, 0x01, 0x9f, 0xfe, 0x15, 0xfc, 0x88, 0xfb, 0x32, 0xf8, 0x6e, 0xf8, 0x87, 0xf8, + 0x8a, 0xf4, 0x35, 0xf4, 0xf5, 0xf2, 0xe1, 0xf2, 0x20, 0xf2, 0xad, 0xf0, 0xfb, 0xf1, 0x4a, 0xf4, + 0x2f, 0xf3, 0x53, 0xf5, 0x3a, 0xf6, 0x98, 0xf9, 0xaf, 0xfa, 0x17, 0xf9, 0x3e, 0xfa, 0xf5, 0xf8, + 0xc6, 0xf4, 0xaa, 0xf6, 0x89, 0xf8, 0x90, 0xfa, 0xd0, 0xfc, 0x4a, 0x00, 0xee, 0x02, 0x44, 0x03, + 0x58, 0x06, 0x20, 0x05, 0x0b, 0x07, 0xff, 0x05, 0x9a, 0x03, 0xef, 0x06, 0x64, 0x05, 0x00, 0x08, + 0x88, 0x09, 0x26, 0x05, 0x22, 0x05, 0xcc, 0x07, 0xf7, 0x06, 0x5f, 0x05, 0xd0, 0x03, 0xe8, 0x04, + 0xd2, 0x08, 0x25, 0x08, 0xaf, 0x09, 0x95, 0x09, 0x6e, 0x0c, 0x89, 0x0b, 0x39, 0x08, 0xe4, 0x05, + 0x84, 0x00, 0x77, 0xfe, 0xae, 0xfd, 0x12, 0xfd, 0x9c, 0xfc, 0x58, 0xf9, 0x86, 0xf8, 0xc9, 0xf7, + 0xd4, 0xf2, 0x3a, 0xf2, 0x22, 0xec, 0x86, 0xed, 0x73, 0xeb, 0x58, 0xe7, 0x91, 0xe7, 0x43, 0xe9, + 0xcc, 0xe8, 0x37, 0xe8, 0x1e, 0xea, 0x1f, 0xea, 0x70, 0xec, 0x37, 0xec, 0xa1, 0xf0, 0xb2, 0xf2, + 0x5c, 0xf8, 0x2f, 0xfe, 0xa4, 0x02, 0xab, 0x06, 0x7f, 0x07, 0x2e, 0x0c, 0x7f, 0x0c, 0x92, 0x09, + 0xd9, 0x08, 0x21, 0x03, 0xd9, 0x02, 0x43, 0x03, 0x6f, 0x04, 0x6f, 0x05, 0x88, 0x02, 0xeb, 0x03, + 0x6b, 0x02, 0x92, 0x01, 0xdd, 0x00, 0xa2, 0x00, 0x1f, 0x00, 0x24, 0x00, 0x6e, 0xff, 0x87, 0xff, + 0xc3, 0xff, 0x90, 0xfc, 0x4d, 0xfd, 0x98, 0xfc, 0x56, 0xfd, 0x8c, 0xfc, 0xea, 0xf8, 0xc8, 0xfb, + 0x81, 0xfc, 0xaa, 0x00, 0x80, 0x00, 0x1f, 0x01, 0xe5, 0x06, 0xd8, 0x07, 0x30, 0x07, 0x23, 0x06, + 0xcd, 0x04, 0xaa, 0x01, 0x53, 0x02, 0x04, 0x05, 0x99, 0x06, 0x58, 0x08, 0xdb, 0x0b, 0x5f, 0x0b, + 0xac, 0x0e, 0xba, 0x0e, 0x91, 0x0e, 0xf2, 0x11, 0xf7, 0x0e, 0x2f, 0x0f, 0x87, 0x10, 0x5d, 0x0f, + 0x81, 0x12, 0x1e, 0x12, 0x48, 0x0f, 0x00, 0x10, 0x58, 0x10, 0x7b, 0x0f, 0xdf, 0x0e, 0x8d, 0x0e, + 0x6a, 0x10, 0x9b, 0x12, 0x7f, 0x13, 0x96, 0x13, 0xc9, 0x13, 0xe6, 0x16, 0x1a, 0x16, 0xcc, 0x14, + 0xb1, 0x0d, 0x03, 0x08, 0xd7, 0x02, 0x6e, 0xfe, 0x97, 0xfd, 0x41, 0xfc, 0x95, 0xf9, 0x55, 0xf8, + 0x74, 0xf5, 0xa0, 0xf2, 0x1c, 0xf1, 0x84, 0xec, 0xe1, 0xec, 0x96, 0xea, 0xe9, 0xe6, 0xbe, 0xe8, + 0xfa, 0xe9, 0x78, 0xe8, 0x1d, 0xe9, 0x7b, 0xe8, 0x8b, 0xeb, 0xf0, 0xeb, 0xc5, 0xee, 0x3e, 0xf1, + 0x4a, 0xf6, 0xcc, 0xfe, 0x43, 0x02, 0xf9, 0x08, 0x28, 0x0b, 0x4e, 0x0f, 0xf1, 0x12, 0xa4, 0x10, + 0xed, 0x10, 0x4f, 0x0d, 0xed, 0x08, 0x21, 0x08, 0x1f, 0x06, 0x2d, 0x08, 0xb5, 0x05, 0x11, 0x05, + 0xa7, 0x05, 0x67, 0x04, 0xb3, 0x02, 0xce, 0x00, 0x1b, 0xff, 0x5e, 0xfc, 0xba, 0xfa, 0x73, 0xf8, + 0xfb, 0xf6, 0xed, 0xf4, 0x02, 0xf3, 0xc8, 0xf0, 0xf7, 0xed, 0xc8, 0xee, 0x29, 0xed, 0xda, 0xec, + 0x91, 0xed, 0x9b, 0xee, 0x11, 0xf2, 0x93, 0xf0, 0xd1, 0xf2, 0x37, 0xf5, 0xa7, 0xf7, 0x73, 0xf7, + 0x3f, 0xf7, 0xc9, 0xf4, 0x68, 0xf1, 0xb5, 0xf1, 0xa0, 0xf3, 0xa4, 0xf5, 0xf6, 0xf7, 0x35, 0xfb, + 0xce, 0xfb, 0x90, 0xff, 0xf1, 0x01, 0x00, 0x04, 0x65, 0x07, 0xfb, 0x02, 0xf0, 0x04, 0x27, 0x04, + 0xc4, 0x03, 0x18, 0x07, 0xaf, 0x04, 0x20, 0x04, 0x28, 0x03, 0x4a, 0x05, 0xb8, 0x04, 0x1a, 0x03, + 0x72, 0x04, 0x85, 0x07, 0x23, 0x0a, 0xb7, 0x0a, 0x93, 0x0b, 0x58, 0x10, 0xb2, 0x10, 0x86, 0x11, + 0x4c, 0x0e, 0x05, 0x08, 0x77, 0x06, 0x22, 0x02, 0x6b, 0x01, 0x4a, 0x01, 0x72, 0x00, 0x08, 0xff, + 0xf9, 0xff, 0xb2, 0xfc, 0x90, 0xfb, 0xc4, 0xf8, 0xe0, 0xf5, 0x42, 0xf4, 0xc3, 0xf0, 0x80, 0xec, + 0x7b, 0xeb, 0x68, 0xea, 0x7a, 0xea, 0x19, 0xeb, 0xe7, 0xea, 0xd9, 0xec, 0x96, 0xee, 0x5a, 0xf3, + 0xe9, 0xf3, 0xd2, 0xf9, 0xe3, 0xfe, 0x39, 0x05, 0x6f, 0x09, 0xe4, 0x09, 0xa4, 0x10, 0x65, 0x12, + 0x42, 0x11, 0x07, 0x11, 0x28, 0x0e, 0xe1, 0x0a, 0x4f, 0x0a, 0x37, 0x0a, 0x89, 0x0c, 0xae, 0x0c, + 0x5c, 0x0c, 0xb4, 0x0e, 0x1e, 0x0e, 0x83, 0x0e, 0x3a, 0x0d, 0x5b, 0x0c, 0x0b, 0x0b, 0x2e, 0x09, + 0x63, 0x09, 0x88, 0x07, 0x85, 0x07, 0x1d, 0x06, 0xc1, 0x03, 0xa8, 0x04, 0x18, 0x04, 0x63, 0x02, + 0xc2, 0x02, 0x34, 0x02, 0xa5, 0x04, 0xa1, 0x02, 0x20, 0x02, 0x5a, 0x02, 0x28, 0x04, 0xf6, 0x04, + 0xe0, 0x01, 0xe5, 0x00, 0xb3, 0xfc, 0xc3, 0xfa, 0xce, 0xf9, 0x61, 0xf9, 0x58, 0xf8, 0x01, 0xfb, + 0x82, 0xfc, 0xbc, 0xfc, 0x8d, 0xff, 0xab, 0xff, 0x5c, 0x01, 0xe2, 0xfe, 0x53, 0xfc, 0x24, 0xfe, + 0x66, 0xfa, 0xa9, 0xfb, 0xe5, 0xfd, 0xa3, 0xfe, 0xfd, 0xfd, 0x36, 0xfd, 0xa6, 0xff, 0x9c, 0xff, + 0x3e, 0x01, 0x71, 0x01, 0x3d, 0x05, 0x31, 0x08, 0x4b, 0x07, 0x19, 0x08, 0x8b, 0x0b, 0xe2, 0x0d, + 0x8d, 0x0f, 0x62, 0x0d, 0xc4, 0x09, 0x22, 0x08, 0xb8, 0x04, 0xca, 0x01, 0x65, 0x02, 0xe3, 0xff, + 0x7e, 0x00, 0x5e, 0xff, 0x4a, 0xfe, 0x32, 0xfe, 0x6c, 0xf9, 0xbe, 0xf7, 0xc1, 0xf5, 0xab, 0xf4, + 0x79, 0xf1, 0x4d, 0xf1, 0x62, 0xf0, 0x1c, 0xf0, 0xb7, 0xf0, 0x85, 0xf1, 0xd4, 0xf1, 0x6c, 0xf3, + 0x36, 0xf4, 0x08, 0xf7, 0x69, 0xfb, 0x0e, 0xfe, 0xe3, 0x04, 0x4b, 0x05, 0x06, 0x08, 0x63, 0x0d, + 0x56, 0x0d, 0x29, 0x0c, 0x97, 0x0b, 0x55, 0x09, 0xc2, 0x07, 0xfa, 0x05, 0x08, 0x04, 0x55, 0x04, + 0xd9, 0x03, 0x80, 0x02, 0x7d, 0x02, 0x90, 0x02, 0x55, 0x01, 0x4e, 0xfe, 0xd3, 0xfd, 0x3d, 0xfc, + 0x73, 0xfb, 0xb0, 0xf7, 0x93, 0xf5, 0xf8, 0xf6, 0x05, 0xf5, 0xcb, 0xf2, 0xff, 0xf1, 0x74, 0xf2, + 0x50, 0xf2, 0x9b, 0xf0, 0x0b, 0xf1, 0x5f, 0xf3, 0xfb, 0xf2, 0xc2, 0xf2, 0x35, 0xf5, 0x52, 0xf9, + 0x5d, 0xfb, 0x4e, 0xfc, 0x69, 0xfb, 0x37, 0xfb, 0x56, 0xf9, 0x7e, 0xfa, 0xe3, 0xf9, 0x07, 0xfb, + 0x29, 0xfe, 0x6e, 0xfe, 0x1e, 0x02, 0x65, 0x03, 0xa0, 0x05, 0x74, 0x07, 0x8d, 0x05, 0xa0, 0x07, + 0x70, 0x08, 0xb5, 0x06, 0xd1, 0x06, 0x02, 0x07, 0xfe, 0x07, 0xcf, 0x06, 0x6d, 0x08, 0x87, 0x05, + 0x33, 0x05, 0xd4, 0x05, 0xed, 0x04, 0x76, 0x08, 0x95, 0x09, 0x27, 0x09, 0x30, 0x0b, 0xe1, 0x0d, + 0x9b, 0x10, 0x3c, 0x11, 0x47, 0x0d, 0x1c, 0x0b, 0x80, 0x09, 0x67, 0x05, 0x0c, 0x02, 0x8f, 0x01, + 0x62, 0xff, 0x0b, 0xff, 0x59, 0xfc, 0x49, 0xfd, 0x6e, 0xfa, 0xe5, 0xf6, 0xe7, 0xf4, 0x28, 0xf5, + 0x5d, 0xf3, 0xa1, 0xef, 0x83, 0xef, 0x83, 0xed, 0x4e, 0xef, 0x98, 0xee, 0x6d, 0xee, 0x6c, 0xef, + 0x9e, 0xf1, 0x24, 0xf2, 0xe3, 0xf4, 0xde, 0xf9, 0x9c, 0xfc, 0x8a, 0x03, 0xfc, 0x02, 0x84, 0x06, + 0xa2, 0x0c, 0x19, 0x0c, 0xd9, 0x0c, 0x03, 0x0c, 0xd6, 0x0a, 0x76, 0x07, 0x9f, 0x03, 0xc3, 0x01, + 0x77, 0x00, 0xf0, 0xff, 0xce, 0xff, 0xef, 0x01, 0x84, 0x03, 0xe7, 0x00, 0xca, 0x01, 0x61, 0x01, + 0xda, 0x01, 0x92, 0x03, 0x89, 0xff, 0xe9, 0xfe, 0xb7, 0xfd, 0x5e, 0xfe, 0x6a, 0xfd, 0x07, 0xfb, + 0xd0, 0xfa, 0x07, 0xfb, 0x73, 0xfa, 0x47, 0xfd, 0x2b, 0xff, 0xb2, 0x00, 0x85, 0x01, 0xeb, 0x04, + 0xdf, 0x07, 0xa0, 0x09, 0x1f, 0x0a, 0x2f, 0x08, 0x4b, 0x08, 0x88, 0x06, 0xf7, 0x05, 0x85, 0x03, + 0x45, 0x06, 0xd5, 0x06, 0x73, 0x08, 0x01, 0x0c, 0x81, 0x0d, 0xdb, 0x0f, 0x98, 0x0f, 0xbc, 0x0f, + 0x73, 0x10, 0x21, 0x0f, 0xa1, 0x0b, 0xa9, 0x0a, 0x7b, 0x0c, 0x02, 0x0b, 0x15, 0x09, 0xbe, 0x08, + 0x2f, 0x07, 0x62, 0x06, 0x65, 0x06, 0xea, 0x06, 0xc4, 0x09, 0x24, 0x0a, 0xc1, 0x08, 0x8f, 0x0a, + 0x95, 0x0a, 0xc2, 0x0d, 0x49, 0x0c, 0xc2, 0x07, 0x21, 0x05, 0xb7, 0x00, 0xe0, 0xfb, 0x96, 0xf7, + 0x81, 0xf5, 0x5d, 0xf4, 0xcf, 0xf1, 0xa8, 0xf1, 0x65, 0xf1, 0x85, 0xef, 0xe4, 0xec, 0x2f, 0xeb, + 0xda, 0xed, 0x07, 0xeb, 0xaa, 0xeb, 0xab, 0xe8, 0xcd, 0xe6, 0x02, 0xea, 0x9d, 0xea, 0x46, 0xeb, + 0x81, 0xec, 0xaa, 0xef, 0x40, 0xf2, 0x37, 0xf8, 0x59, 0xfb, 0x82, 0x00, 0x4d, 0x07, 0x73, 0x08, + 0x16, 0x0e, 0xf7, 0x11, 0x1e, 0x12, 0x7f, 0x11, 0xc5, 0x10, 0x05, 0x0f, 0x4f, 0x0a, 0xdf, 0x07, + 0x37, 0x05, 0xe0, 0x04, 0xf5, 0x03, 0x57, 0x03, 0x7c, 0x05, 0x5f, 0x03, 0xa7, 0x01, 0x83, 0x01, + 0x87, 0xff, 0xf8, 0xfe, 0x05, 0xfb, 0x9f, 0xf5, 0xa5, 0xf3, 0x82, 0xf2, 0xb1, 0xef, 0x13, 0xef, + 0x4e, 0xec, 0x98, 0xec, 0x84, 0xec, 0x86, 0xeb, 0xbe, 0xee, 0xed, 0xee, 0xa8, 0xef, 0x89, 0xee, + 0x2b, 0xf3, 0xd2, 0xf5, 0xc2, 0xf8, 0xde, 0xf9, 0x3c, 0xf9, 0x7e, 0xf9, 0xf5, 0xf8, 0x19, 0xf8, + 0x57, 0xf8, 0xcc, 0xfa, 0x1e, 0xfd, 0xb4, 0x01, 0x46, 0x04, 0xb2, 0x07, 0x65, 0x09, 0x28, 0x0a, + 0x17, 0x0a, 0xf7, 0x0b, 0x01, 0x0d, 0x4c, 0x09, 0x60, 0x08, 0x5d, 0x0a, 0xc9, 0x09, 0x64, 0x09, + 0xf5, 0x06, 0x00, 0x06, 0x07, 0x07, 0x20, 0x08, 0x90, 0x09, 0x6a, 0x0c, 0xe1, 0x0c, 0xfc, 0x0d, + 0x0d, 0x0f, 0x37, 0x10, 0x9c, 0x12, 0xb3, 0x0f, 0x34, 0x0f, 0x43, 0x0d, 0x82, 0x0a, 0xe1, 0x06, + 0xab, 0x03, 0x90, 0x02, 0xc0, 0x01, 0xd8, 0x01, 0x5d, 0x01, 0x9f, 0x00, 0xde, 0xfd, 0xb3, 0xf9, + 0xa6, 0xfa, 0xbd, 0xf8, 0x4f, 0xf4, 0x33, 0xf2, 0x4f, 0xef, 0x7f, 0xee, 0xcb, 0xf0, 0xb8, 0xf1, + 0x12, 0xf0, 0xcd, 0xf1, 0x73, 0xf3, 0xa2, 0xf7, 0x49, 0xfc, 0x3d, 0xfe, 0xe2, 0x03, 0x20, 0x06, + 0x20, 0x08, 0x8f, 0x0c, 0x46, 0x10, 0xbb, 0x10, 0x9e, 0x10, 0x08, 0x12, 0x76, 0x0e, 0x20, 0x0d, + 0x12, 0x09, 0xe1, 0x06, 0x02, 0x08, 0xd4, 0x06, 0x0b, 0x09, 0xf4, 0x0a, 0x02, 0x0a, 0x53, 0x0a, + 0x7b, 0x08, 0x41, 0x09, 0xbf, 0x0b, 0x76, 0x08, 0xfa, 0x03, 0xb3, 0x02, 0x00, 0x03, 0xe1, 0x01, + 0x83, 0x00, 0xe8, 0xfb, 0xeb, 0xfc, 0xf0, 0xfa, 0xba, 0xfa, 0x9b, 0xf9, 0xf9, 0xf8, 0xf7, 0xf7, + 0xd3, 0xf8, 0x92, 0xfb, 0x60, 0xf9, 0xdd, 0xfa, 0x5d, 0xf8, 0xe7, 0xf7, 0x47, 0xf6, 0x2f, 0xf5, + 0x34, 0xf3, 0xe3, 0xf0, 0x3d, 0xf2, 0x2d, 0xf4, 0x3b, 0xf7, 0x00, 0xf8, 0xc9, 0xf9, 0xe2, 0xfa, + 0x3b, 0xfc, 0xda, 0xfd, 0xbf, 0xfd, 0x0c, 0xfe, 0xed, 0xfb, 0x39, 0xfd, 0x7b, 0xff, 0x97, 0xff, + 0x81, 0x00, 0xe7, 0xfd, 0x29, 0xfe, 0x48, 0xff, 0xcb, 0x00, 0xbc, 0x03, 0x36, 0x03, 0xae, 0x03, + 0xd1, 0x04, 0x78, 0x05, 0xb2, 0x09, 0x4e, 0x0b, 0x08, 0x0b, 0x1e, 0x09, 0xa6, 0x07, 0x1f, 0x06, + 0xcb, 0x01, 0xf3, 0xfd, 0x0d, 0xfb, 0x0f, 0xfa, 0x8e, 0xf9, 0xc9, 0xf7, 0x4a, 0xf9, 0x87, 0xf5, + 0x53, 0xf2, 0xe0, 0xf4, 0xa8, 0xf3, 0xda, 0xf2, 0xc1, 0xef, 0x63, 0xed, 0x55, 0xee, 0x98, 0xf1, + 0xb9, 0xf0, 0x8d, 0xef, 0x41, 0xf1, 0x86, 0xf3, 0x51, 0xf8, 0xe8, 0xfa, 0x7d, 0xfd, 0x1e, 0x02, + 0x98, 0x06, 0xcf, 0x09, 0x40, 0x0d, 0x09, 0x10, 0xfa, 0x0f, 0x4a, 0x12, 0x8f, 0x10, 0x1a, 0x0f, + 0x77, 0x0d, 0x03, 0x08, 0xa2, 0x05, 0x2f, 0x05, 0x17, 0x05, 0x4e, 0x07, 0x58, 0x07, 0xa0, 0x04, + 0x1b, 0x06, 0x3c, 0x03, 0xf4, 0x02, 0x51, 0x03, 0xee, 0xff, 0xf0, 0xfb, 0x84, 0xfa, 0x04, 0xfb, + 0x0e, 0xfb, 0x2a, 0xf8, 0x67, 0xf5, 0xe4, 0xf4, 0x49, 0xf6, 0x91, 0xf7, 0xa9, 0xf7, 0x6d, 0xf8, + 0xfd, 0xf6, 0x48, 0xfc, 0x7b, 0xfc, 0xab, 0xff, 0xf5, 0x01, 0xe3, 0x00, 0x49, 0x02, 0xaa, 0x00, + 0x92, 0x01, 0x06, 0xfe, 0x33, 0xfc, 0x04, 0xfd, 0x23, 0xfe, 0x34, 0x00, 0x8d, 0x03, 0x4c, 0x06, + 0xcc, 0x05, 0x3c, 0x07, 0x0f, 0x09, 0x60, 0x0a, 0x1c, 0x0a, 0x24, 0x07, 0x51, 0x08, 0x7f, 0x08, + 0x45, 0x09, 0x7f, 0x06, 0xba, 0x03, 0x7d, 0x04, 0x32, 0x04, 0xd3, 0x07, 0x8d, 0x08, 0x7a, 0x08, + 0x1d, 0x0b, 0x3c, 0x0d, 0x23, 0x0e, 0xbb, 0x10, 0x4a, 0x13, 0x02, 0x11, 0x7d, 0x0f, 0x13, 0x0e, + 0xd6, 0x0c, 0x1e, 0x08, 0x27, 0x03, 0xe9, 0xff, 0xa1, 0xfe, 0x56, 0xfe, 0x4c, 0xfc, 0x69, 0xfc, + 0xcc, 0xf8, 0xa3, 0xf8, 0xa2, 0xf7, 0xd0, 0xf4, 0x76, 0xf4, 0x6a, 0xf0, 0x14, 0xed, 0x9b, 0xec, + 0x92, 0xed, 0x11, 0xed, 0xc1, 0xea, 0x4d, 0xeb, 0x6f, 0xed, 0xff, 0xf0, 0xff, 0xf2, 0x55, 0xf4, + 0x41, 0xf9, 0xf4, 0xfb, 0x1c, 0xfe, 0x29, 0x03, 0x07, 0x05, 0x39, 0x06, 0xa1, 0x07, 0xe1, 0x04, + 0x64, 0x05, 0xaa, 0x01, 0xed, 0xfd, 0x2e, 0xfc, 0x2a, 0xfa, 0x67, 0xfa, 0x84, 0xff, 0xb0, 0x00, + 0xb1, 0x00, 0xe1, 0x01, 0x20, 0x01, 0x4e, 0x04, 0x53, 0x04, 0x96, 0x01, 0xa8, 0xfd, 0xa3, 0xfd, + 0xc2, 0xfc, 0xb6, 0xfb, 0xeb, 0xf8, 0x52, 0xf7, 0xf0, 0xf8, 0x43, 0xfa, 0xdb, 0xf9, 0x19, 0xfb, + 0x05, 0xfb, 0x7e, 0xfe, 0x35, 0x02, 0xae, 0x01, 0x0f, 0x06, 0x00, 0x06, 0xa9, 0x06, 0xcc, 0x06, + 0x35, 0x08, 0x9a, 0x08, 0x81, 0x05, 0xe8, 0x02, 0x87, 0x04, 0x47, 0x07, 0xfe, 0x06, 0x92, 0x0a, + 0xfa, 0x0c, 0x3f, 0x0e, 0x91, 0x0d, 0xa1, 0x0d, 0xc1, 0x0d, 0x24, 0x0b, 0x16, 0x09, 0x36, 0x06, + 0x4e, 0x06, 0x03, 0x07, 0x03, 0x03, 0x9f, 0x01, 0xfe, 0xff, 0x39, 0x01, 0xdc, 0x03, 0x2d, 0x03, + 0xb9, 0x03, 0x06, 0x04, 0xf4, 0x04, 0x88, 0x04, 0xf1, 0x06, 0x67, 0x08, 0xbb, 0x05, 0x40, 0x05, + 0xa4, 0x02, 0xc5, 0x00, 0x94, 0xfc, 0xaf, 0xf9, 0x72, 0xf5, 0xf0, 0xf5, 0x25, 0xf6, 0xc3, 0xf7, + 0x96, 0xf8, 0xbe, 0xf6, 0x9c, 0xfa, 0x20, 0xfa, 0xae, 0xfa, 0x37, 0xf9, 0x1d, 0xf7, 0xc2, 0xf6, + 0xf1, 0xf6, 0xd6, 0xf8, 0xd5, 0xf6, 0xbe, 0xf6, 0x80, 0xf8, 0x16, 0xfc, 0xab, 0xfe, 0xfe, 0xfe, + 0xad, 0x02, 0xac, 0x07, 0x42, 0x09, 0x51, 0x0a, 0x02, 0x0d, 0xfa, 0x0b, 0xc8, 0x0c, 0x88, 0x0d, + 0x5a, 0x0b, 0x5b, 0x0c, 0x4b, 0x07, 0xd0, 0x01, 0x78, 0xff, 0x1b, 0xfd, 0xad, 0xfd, 0x85, 0xfe, + 0x90, 0xfe, 0x4f, 0xff, 0xec, 0xfd, 0x9d, 0xfc, 0x8e, 0xfb, 0xb5, 0xfb, 0xc2, 0xf6, 0x97, 0xf2, + 0x18, 0xf2, 0x73, 0xf2, 0x58, 0xf3, 0x9b, 0xf0, 0xd7, 0xf0, 0x9c, 0xf3, 0x2c, 0xf4, 0xbd, 0xf5, + 0xa2, 0xf5, 0x93, 0xf4, 0x5f, 0xf9, 0x89, 0xf9, 0xb3, 0xfb, 0xab, 0xfe, 0x07, 0x00, 0xac, 0x02, + 0xcf, 0x03, 0x1b, 0x04, 0x21, 0x04, 0xef, 0x01, 0xe9, 0xfd, 0x9e, 0xfe, 0x60, 0x00, 0xeb, 0x01, + 0x5a, 0x03, 0xf7, 0x04, 0xdf, 0x05, 0xd7, 0x06, 0x1e, 0x08, 0x2d, 0x06, 0xc7, 0x05, 0x60, 0x04, + 0x6c, 0x03, 0x15, 0x04, 0x27, 0x03, 0xfa, 0xff, 0xd0, 0xfe, 0xdb, 0xfe, 0x89, 0x00, 0x2f, 0x01, + 0x70, 0x00, 0x3b, 0x02, 0xb2, 0x03, 0xec, 0x04, 0x7d, 0x05, 0x7d, 0x07, 0xc4, 0x06, 0xf1, 0x05, + 0x06, 0x07, 0xb7, 0x08, 0x15, 0x07, 0x94, 0x03, 0xda, 0xff, 0xf3, 0xfe, 0x73, 0xfe, 0x87, 0xfc, + 0xc5, 0xfe, 0x94, 0xfb, 0x58, 0xfc, 0x83, 0xfc, 0xb7, 0xfb, 0x73, 0xfc, 0x4c, 0xfa, 0xc3, 0xf8, + 0x6b, 0xf5, 0x5b, 0xf7, 0x49, 0xf9, 0xf1, 0xf6, 0xef, 0xf6, 0xf5, 0xf6, 0x2f, 0xfa, 0xc7, 0xfb, + 0xbd, 0xfb, 0x95, 0xfe, 0xca, 0x00, 0x1f, 0x03, 0x82, 0x05, 0x71, 0x07, 0x71, 0x06, 0x4a, 0x0a, + 0x77, 0x0a, 0x98, 0x0a, 0xc6, 0x0b, 0x3b, 0x07, 0x0d, 0x03, 0x87, 0xfe, 0x19, 0xfe, 0x3a, 0x00, + 0xed, 0x01, 0xad, 0x01, 0xf0, 0x02, 0x91, 0x05, 0xb7, 0x05, 0xcb, 0x07, 0xf2, 0x07, 0xfe, 0x04, + 0x91, 0x03, 0x5e, 0x02, 0x0f, 0x03, 0x2f, 0x01, 0x71, 0xfe, 0xed, 0xfe, 0x5b, 0xff, 0xbd, 0xfd, + 0x37, 0xff, 0x7b, 0xfd, 0x9b, 0xfc, 0x62, 0x00, 0x08, 0xff, 0x00, 0x01, 0x2d, 0x01, 0x2d, 0x01, + 0xb9, 0x02, 0xde, 0x03, 0xe9, 0x04, 0x6d, 0x02, 0x0f, 0xff, 0x58, 0xfb, 0x1c, 0xfa, 0xd9, 0xf9, + 0x0f, 0xf9, 0x0d, 0xfb, 0x55, 0xfc, 0x65, 0xfb, 0xf3, 0xfd, 0xfd, 0xfe, 0xac, 0xfe, 0x2e, 0xfe, + 0x05, 0xfb, 0x5f, 0xfb, 0xf8, 0xfb, 0x7b, 0xfb, 0x10, 0xf9, 0x69, 0xf8, 0x43, 0xf8, 0xf2, 0xfa, + 0xe8, 0xfc, 0xec, 0xfc, 0x29, 0xfe, 0x43, 0x00, 0xf9, 0x02, 0x24, 0x04, 0x5a, 0x08, 0xda, 0x09, + 0xd4, 0x0a, 0x51, 0x0b, 0xca, 0x0b, 0xe1, 0x0a, 0xf2, 0x05, 0xfe, 0x00, 0x63, 0xff, 0x53, 0xfe, + 0xcb, 0xff, 0xcf, 0xfe, 0x4a, 0xfd, 0x1b, 0x00, 0x6a, 0x00, 0xbc, 0x01, 0x19, 0x01, 0xdc, 0x00, + 0x63, 0xfe, 0xbc, 0xfc, 0x1d, 0xfd, 0xe8, 0xfb, 0xd6, 0xf9, 0x99, 0xf8, 0x31, 0xf8, 0x42, 0xf9, + 0xb1, 0xfa, 0xb7, 0xfb, 0xe2, 0xfe, 0xda, 0x00, 0x51, 0x03, 0xc2, 0x06, 0xc2, 0x06, 0xcf, 0x06, + 0x4b, 0x08, 0xae, 0x08, 0x55, 0x09, 0xda, 0x07, 0xad, 0x05, 0xeb, 0x01, 0xfe, 0xfe, 0x74, 0xfd, + 0x85, 0xfd, 0x4f, 0xff, 0xba, 0xfe, 0xb9, 0x00, 0x54, 0x01, 0x52, 0x01, 0x34, 0x04, 0xb9, 0x01, + 0xf1, 0xff, 0x5d, 0xfd, 0x5b, 0xfc, 0x92, 0xfc, 0x93, 0xfa, 0xf0, 0xf7, 0x1f, 0xf8, 0x88, 0xf7, + 0x20, 0xf9, 0x87, 0xfc, 0xa3, 0xf9, 0x5d, 0xfd, 0x6b, 0x00, 0xd6, 0xff, 0xb9, 0x01, 0x98, 0x02, + 0xdf, 0x03, 0x98, 0x03, 0xde, 0x05, 0xe2, 0x05, 0x50, 0x04, 0x04, 0x00, 0x1b, 0xfb, 0xa4, 0xfb, + 0x77, 0xfa, 0xa1, 0xf9, 0x7c, 0xfb, 0x4b, 0xfd, 0x7b, 0xfe, 0x6f, 0x01, 0xda, 0x00, 0x2a, 0x00, + 0x39, 0x00, 0x06, 0xff, 0x43, 0xfe, 0xeb, 0xfc, 0x68, 0xfb, 0x43, 0xfb, 0x1c, 0xfa, 0xee, 0xf9, + 0x01, 0xfd, 0x46, 0xff, 0x0b, 0x01, 0x45, 0x02, 0xa1, 0x05, 0xc3, 0x06, 0x99, 0x09, 0x38, 0x0a, + 0x59, 0x0a, 0x76, 0x0c, 0x70, 0x0b, 0xc8, 0x0b, 0x06, 0x0b, 0x2d, 0x08, 0x47, 0x06, 0x0b, 0x03, + 0x55, 0x01, 0x8e, 0x03, 0xf0, 0x01, 0xb2, 0x02, 0xd9, 0x02, 0x98, 0x03, 0xc0, 0x02, 0x1d, 0x00, + 0x14, 0xfe, 0xc9, 0xfa, 0x64, 0xf8, 0xd5, 0xf6, 0xbd, 0xf4, 0xca, 0xf1, 0xaa, 0xef, 0x7a, 0xee, + 0xcb, 0xf0, 0x61, 0xf0, 0x84, 0xf0, 0x0e, 0xf3, 0xbc, 0xf4, 0x5c, 0xf7, 0xdc, 0xf7, 0x88, 0xf8, + 0x72, 0xf9, 0x1d, 0xfb, 0xf2, 0xfb, 0x6f, 0xfc, 0xc6, 0xfb, 0xbf, 0xf8, 0xeb, 0xf5, 0xa0, 0xf4, + 0x3a, 0xf5, 0x84, 0xf7, 0x11, 0xf9, 0x32, 0xfb, 0xa7, 0xff, 0x25, 0x01, 0xef, 0x02, 0x22, 0x04, + 0xec, 0x03, 0x4a, 0x05, 0xed, 0x04, 0xcd, 0x02, 0xa0, 0x03, 0x6c, 0x02, 0x33, 0x02, 0xef, 0x02, + 0x50, 0x01, 0x30, 0x05, 0xef, 0x05, 0x4b, 0x05, 0xba, 0x08, 0x3a, 0x0b, 0x05, 0x0c, 0x88, 0x0a, + 0x31, 0x0b, 0xa9, 0x0b, 0x40, 0x0d, 0x96, 0x0e, 0xe7, 0x0c, 0x77, 0x0d, 0x9a, 0x09, 0x7d, 0x06, + 0x96, 0x05, 0x8b, 0x03, 0x1c, 0x04, 0xe5, 0x04, 0xe2, 0x04, 0x3f, 0x06, 0x62, 0x07, 0xff, 0x03, + 0xa8, 0x02, 0x68, 0x01, 0x87, 0x00, 0xac, 0xfe, 0x3b, 0xfc, 0x67, 0xfb, 0x14, 0xf9, 0x95, 0xf7, + 0x9a, 0xf8, 0x93, 0xfa, 0x72, 0xfb, 0x6f, 0xfb, 0x00, 0xfe, 0xc4, 0xfe, 0x87, 0xff, 0xf7, 0x01, + 0xf8, 0x01, 0x0a, 0x03, 0x91, 0x03, 0x37, 0x05, 0x62, 0x06, 0xf2, 0x04, 0x21, 0x02, 0xd4, 0x00, + 0x0d, 0xff, 0xd7, 0xff, 0xe0, 0x00, 0x41, 0xff, 0xb4, 0x02, 0x08, 0x05, 0xdc, 0x07, 0xc4, 0x05, + 0x67, 0x05, 0x76, 0x06, 0x2a, 0x06, 0x1f, 0x05, 0xdb, 0x03, 0xdb, 0x03, 0xa2, 0x02, 0x49, 0x01, + 0x2b, 0x01, 0x47, 0x01, 0xb8, 0x00, 0xb3, 0x01, 0xf2, 0x01, 0x24, 0x05, 0xec, 0x06, 0xde, 0x04, + 0xa8, 0x02, 0x31, 0x01, 0x15, 0x02, 0x59, 0x00, 0xfc, 0xfe, 0x42, 0xfd, 0x97, 0xfa, 0xa1, 0xf6, + 0x58, 0xf2, 0x8d, 0xf1, 0x5d, 0xf2, 0xef, 0xf0, 0xd8, 0xf1, 0x27, 0xf4, 0x77, 0xf4, 0x80, 0xf5, + 0xc6, 0xf4, 0xf4, 0xf3, 0x29, 0xf5, 0x69, 0xf3, 0x11, 0xf3, 0x59, 0xf4, 0xdc, 0xf1, 0x4e, 0xf3, + 0x60, 0xf4, 0xfb, 0xf4, 0x26, 0xf8, 0x9a, 0xf8, 0xf8, 0xf9, 0x41, 0xfd, 0xc3, 0x01, 0x7e, 0x02, + 0x7a, 0x04, 0xc2, 0x05, 0x99, 0x06, 0x95, 0x0a, 0x08, 0x0c, 0xfc, 0x0b, 0xcb, 0x09, 0x9c, 0x05, + 0xe3, 0x03, 0xa9, 0x02, 0xcd, 0xff, 0xbc, 0xff, 0xb5, 0x00, 0x7f, 0x01, 0x60, 0x04, 0xd7, 0x02, + 0xd7, 0xff, 0x7a, 0x00, 0xb6, 0x00, 0x9e, 0xff, 0x80, 0xfc, 0x7b, 0xfb, 0xc9, 0xfa, 0xcd, 0xf9, + 0xe9, 0xf7, 0x19, 0xf8, 0x22, 0xfb, 0x4b, 0xfa, 0x91, 0xfa, 0xd8, 0xfd, 0x50, 0xff, 0xc6, 0x01, + 0x49, 0x02, 0x5d, 0x03, 0xd7, 0x05, 0x07, 0x07, 0x6c, 0x08, 0xaa, 0x09, 0x5e, 0x09, 0x2d, 0x08, + 0x50, 0x06, 0xa5, 0x03, 0x5a, 0x06, 0xb1, 0x04, 0x27, 0x04, 0xa4, 0x05, 0xe1, 0x07, 0x85, 0x09, + 0x1e, 0x06, 0x76, 0x06, 0x4c, 0x05, 0x18, 0x05, 0x7f, 0x03, 0x32, 0x02, 0x86, 0x00, 0xe0, 0xfd, + 0xc9, 0xfd, 0x68, 0xfd, 0x8d, 0xfc, 0x56, 0xfd, 0x9f, 0xfe, 0x37, 0xff, 0x61, 0x01, 0x5f, 0x03, + 0x9c, 0x03, 0x7b, 0x02, 0x89, 0x03, 0x61, 0x05, 0x6c, 0x06, 0x4c, 0x06, 0xcd, 0x04, 0x5d, 0x02, + 0x6e, 0xff, 0x79, 0xfc, 0x40, 0xfc, 0x58, 0xfc, 0x04, 0xfb, 0xaf, 0xfe, 0xac, 0x00, 0x4e, 0x01, + 0x49, 0x01, 0x11, 0x01, 0xd0, 0x01, 0x03, 0x02, 0x1e, 0xff, 0x12, 0xfe, 0x5c, 0xfd, 0x19, 0xfc, + 0x4a, 0xfc, 0x0b, 0xfa, 0x07, 0xfb, 0x1f, 0xfb, 0xf5, 0xfa, 0xe2, 0xfa, 0xf7, 0xfe, 0xb4, 0x01, + 0x48, 0x00, 0x98, 0x01, 0x58, 0x01, 0x53, 0x03, 0xf7, 0x04, 0x5c, 0x05, 0xeb, 0x06, 0x3d, 0x06, + 0x33, 0x02, 0x58, 0x00, 0x15, 0xfe, 0xff, 0xfb, 0x1f, 0xfd, 0x9a, 0xfd, 0xed, 0xff, 0xac, 0x02, + 0x4c, 0x01, 0xdc, 0xff, 0xd3, 0xfe, 0x2d, 0xff, 0x79, 0xfe, 0x8b, 0xfc, 0x4e, 0xfa, 0xd7, 0xf9, + 0x43, 0xfa, 0x8a, 0xf7, 0xe6, 0xf7, 0x8b, 0xf8, 0xc6, 0xf8, 0xc2, 0xf9, 0x65, 0xfa, 0x5b, 0xfc, + 0x05, 0xff, 0x2f, 0x00, 0xad, 0x00, 0x13, 0x03, 0x06, 0x05, 0x37, 0x06, 0xd6, 0x05, 0xf9, 0x03, + 0x60, 0x04, 0x8f, 0x01, 0xc9, 0xff, 0x8f, 0xff, 0xe1, 0xfc, 0xfc, 0xfe, 0x76, 0x01, 0x99, 0x04, + 0x2a, 0x03, 0x02, 0x03, 0x66, 0x03, 0x90, 0x03, 0x48, 0x04, 0xe0, 0x00, 0x48, 0x01, 0xfd, 0xff, + 0x6c, 0xfe, 0xcc, 0xfe, 0xb3, 0xfd, 0x08, 0xfd, 0x1e, 0xfd, 0x98, 0xfe, 0x34, 0x00, 0x67, 0x02, + 0xf4, 0x02, 0xe6, 0x01, 0x4a, 0x01, 0x6a, 0x02, 0x40, 0x03, 0x92, 0x02, 0x9b, 0x02, 0x96, 0x01, + 0xc5, 0xff, 0xb1, 0xfc, 0x4d, 0xf9, 0x05, 0xfa, 0xdf, 0xf7, 0x74, 0xf8, 0xd9, 0xfb, 0xee, 0xfc, + 0xe2, 0xfe, 0xa8, 0xff, 0xb0, 0xff, 0xde, 0xff, 0x30, 0x02, 0x1a, 0x00, 0x25, 0xfe, 0x4e, 0xfc, + 0xc4, 0xfc, 0x8e, 0xfd, 0x6f, 0xfb, 0xcb, 0xfc, 0x6d, 0xfd, 0xf4, 0xfd, 0xa8, 0xfd, 0x6c, 0x01, + 0x4b, 0x02, 0x52, 0x02, 0xe5, 0x02, 0xd7, 0x02, 0x5d, 0x06, 0xd6, 0x07, 0x6d, 0x07, 0x36, 0x07, + 0x1b, 0x05, 0x02, 0x03, 0x23, 0x02, 0xe9, 0xfd, 0x33, 0xfb, 0xa5, 0xfc, 0x69, 0xff, 0xbf, 0x01, + 0x39, 0x03, 0xae, 0x02, 0x10, 0x02, 0xa1, 0x03, 0x62, 0x04, 0xf8, 0x02, 0xe4, 0x01, 0xdc, 0xff, + 0x77, 0x00, 0x10, 0x00, 0xf0, 0xfe, 0xb6, 0xff, 0x7b, 0xfe, 0xd5, 0xff, 0xe6, 0x01, 0xf2, 0x02, + 0x71, 0x04, 0xed, 0x04, 0xb3, 0x04, 0x0b, 0x06, 0x2a, 0x07, 0x8d, 0x07, 0x2d, 0x09, 0xf5, 0x07, + 0x8c, 0x07, 0xc8, 0x06, 0x0a, 0x03, 0xe1, 0x01, 0x11, 0xff, 0xd9, 0xfc, 0xa4, 0xfc, 0x80, 0xfe, + 0xbf, 0xff, 0xf8, 0xfe, 0xcc, 0xfd, 0x88, 0xfa, 0xe0, 0xfb, 0x37, 0xfa, 0x98, 0xf6, 0x77, 0xf4, + 0x1a, 0xf3, 0xa1, 0xf2, 0x7e, 0xf1, 0xb2, 0xef, 0x5c, 0xee, 0x16, 0xf0, 0xc9, 0xf0, 0x9c, 0xf2, + 0x7a, 0xf6, 0xdc, 0xf7, 0x57, 0xf7, 0xe3, 0xf6, 0xd3, 0xf9, 0x9a, 0xfc, 0xba, 0xfd, 0xe0, 0xfd, + 0x47, 0xfd, 0x1e, 0xfe, 0x83, 0xfc, 0x92, 0xfa, 0xeb, 0xf8, 0x54, 0xf7, 0x5d, 0xfb, 0xb9, 0xfd, + 0x4c, 0x00, 0x24, 0x01, 0x80, 0x02, 0x6f, 0x03, 0xb3, 0x03, 0x83, 0x05, 0x13, 0x04, 0x7d, 0x03, + 0x9a, 0x01, 0x1a, 0x04, 0x5a, 0x04, 0x43, 0x04, 0xf1, 0x03, 0x59, 0x04, 0x31, 0x05, 0x85, 0x06, + 0x89, 0x0a, 0x42, 0x09, 0xcf, 0x0a, 0xe9, 0x09, 0x8f, 0x09, 0x04, 0x0c, 0x64, 0x0c, 0x39, 0x0e, + 0x7f, 0x0e, 0x7c, 0x0c, 0xce, 0x0b, 0x07, 0x0a, 0x95, 0x05, 0x6a, 0x02, 0xac, 0x02, 0xe9, 0x01, + 0x12, 0x04, 0x7d, 0x06, 0x38, 0x04, 0xa9, 0x02, 0x80, 0x02, 0x22, 0x04, 0x0f, 0x02, 0xfa, 0xfe, + 0xb1, 0xfd, 0x37, 0xfe, 0x0b, 0xfd, 0xf6, 0xfa, 0x14, 0xfb, 0xf1, 0xf9, 0xd2, 0xfa, 0x03, 0xfb, + 0xb8, 0xfb, 0x79, 0xfd, 0x75, 0xfd, 0x42, 0xfd, 0x1a, 0xff, 0x9f, 0x01, 0x0d, 0x04, 0xaa, 0x05, + 0x04, 0x04, 0xd5, 0x05, 0xdd, 0x06, 0x5f, 0x05, 0xf8, 0x02, 0x31, 0x02, 0xa3, 0x01, 0xee, 0x02, + 0x43, 0x06, 0x4b, 0x06, 0x74, 0x08, 0x5b, 0x08, 0x5e, 0x07, 0x73, 0x09, 0x54, 0x09, 0x66, 0x08, + 0x84, 0x06, 0x56, 0x04, 0x40, 0x04, 0x37, 0x04, 0x38, 0x01, 0xa5, 0xff, 0x8b, 0x00, 0x36, 0x01, + 0xb6, 0x01, 0x8e, 0x02, 0x8f, 0x02, 0x1a, 0x00, 0x9f, 0xfe, 0x6c, 0xfe, 0x7d, 0xfe, 0x83, 0xfe, + 0xb1, 0xfc, 0x7d, 0xfb, 0x3f, 0xfa, 0x55, 0xf7, 0x2c, 0xf4, 0xa5, 0xf1, 0x20, 0xf0, 0x64, 0xf0, + 0x72, 0xf1, 0xac, 0xf3, 0xab, 0xf4, 0xc8, 0xf4, 0x64, 0xf5, 0x45, 0xf8, 0xd6, 0xf8, 0x81, 0xf8, + 0xe3, 0xf6, 0x11, 0xf7, 0xda, 0xf8, 0xa1, 0xf7, 0x77, 0xf8, 0x07, 0xf8, 0xbc, 0xf9, 0xfa, 0xf8, + 0xe7, 0xfb, 0x78, 0xff, 0x28, 0x00, 0xac, 0x01, 0x77, 0x00, 0xf7, 0x02, 0xff, 0x05, 0xc7, 0x07, + 0x88, 0x08, 0xff, 0x07, 0xd9, 0x08, 0xf4, 0x07, 0xdb, 0x04, 0x85, 0xff, 0x0a, 0xfd, 0x40, 0xfe, + 0x93, 0xfc, 0x5b, 0xfe, 0x54, 0xff, 0xe8, 0xfe, 0xce, 0xfd, 0xf4, 0xfc, 0x6c, 0xfe, 0x94, 0xfd, + 0xa0, 0xfb, 0x12, 0xfa, 0x6e, 0xfb, 0x61, 0xf9, 0x7c, 0xf8, 0x60, 0xf6, 0xa0, 0xf5, 0x7c, 0xf8, + 0x13, 0xf8, 0x96, 0xf9, 0xe2, 0xfb, 0xe9, 0xfd, 0xc9, 0xfe, 0x7e, 0xff, 0xc0, 0xff, 0x23, 0x03, + 0x10, 0x05, 0x92, 0x04, 0x40, 0x08, 0xcb, 0x07, 0x0d, 0x06, 0xc3, 0x04, 0x19, 0x03, 0x45, 0x01, + 0xb4, 0x02, 0x40, 0x06, 0xf0, 0x06, 0x2a, 0x08, 0x32, 0x07, 0x9c, 0x07, 0x50, 0x09, 0x01, 0x08, + 0xd9, 0x06, 0xba, 0x05, 0x80, 0x03, 0x80, 0x03, 0xf7, 0x02, 0x81, 0x00, 0x52, 0xff, 0xc1, 0xff, + 0x39, 0x00, 0xb5, 0x01, 0x83, 0x04, 0x88, 0x04, 0x61, 0x03, 0xe3, 0x02, 0xef, 0x03, 0xe7, 0x05, + 0xa7, 0x03, 0x61, 0x03, 0xa0, 0x04, 0xac, 0x03, 0x66, 0x01, 0x62, 0xfd, 0x05, 0xfb, 0x9b, 0xfb, + 0x19, 0xfc, 0xa8, 0xfb, 0x17, 0xfd, 0xc9, 0xfe, 0x26, 0xff, 0xf1, 0xfe, 0x8c, 0xff, 0x2c, 0x01, + 0x6b, 0x00, 0x91, 0xfd, 0x98, 0xfd, 0xed, 0xfd, 0x73, 0xfd, 0x66, 0xfb, 0x88, 0xfb, 0xb4, 0xfb, + 0x8b, 0xfb, 0x62, 0xfe, 0x46, 0xff, 0x47, 0x02, 0x8d, 0x03, 0xcf, 0x02, 0x31, 0x03, 0x97, 0x05, + 0x9a, 0x06, 0x68, 0x07, 0x69, 0x07, 0x47, 0x07, 0x56, 0x07, 0x8a, 0x04, 0xd5, 0x00, 0x39, 0xff, + 0x81, 0xff, 0x65, 0x00, 0x09, 0x02, 0x9a, 0x01, 0x40, 0x01, 0x71, 0x01, 0xae, 0x02, 0x68, 0x03, + 0x5a, 0x02, 0x62, 0xff, 0x88, 0xfe, 0xa7, 0xfd, 0x28, 0xfb, 0xac, 0xfa, 0xd6, 0xf6, 0xd4, 0xf6, + 0x3a, 0xf7, 0x4c, 0xf7, 0xed, 0xf8, 0xd6, 0xfa, 0xba, 0xfb, 0x4a, 0xfb, 0xc0, 0xfd, 0xbe, 0xfd, + 0xb5, 0xff, 0x7d, 0xfe, 0x42, 0xff, 0x6f, 0x02, 0xc1, 0x01, 0x44, 0xff, 0xc2, 0xfd, 0x73, 0xfd, + 0x7b, 0xfc, 0xc3, 0xfe, 0x3b, 0x00, 0x89, 0x02, 0x1e, 0x04, 0x36, 0x02, 0x8a, 0x03, 0x15, 0x05, + 0x25, 0x05, 0xf4, 0x04, 0x0b, 0x03, 0x3a, 0x03, 0x9a, 0x03, 0x51, 0x02, 0xc9, 0xfe, 0x37, 0xfe, + 0x33, 0x00, 0x83, 0x00, 0x19, 0x02, 0xf3, 0x03, 0x1a, 0x05, 0xed, 0x02, 0xa9, 0x01, 0x4a, 0x02, + 0xa4, 0x01, 0x97, 0x00, 0x6d, 0x00, 0xe7, 0x00, 0x14, 0x00, 0xa9, 0xfe, 0x25, 0xfb, 0xca, 0xf7, + 0x8f, 0xf8, 0xab, 0xf9, 0x52, 0xfb, 0x84, 0xfc, 0xb0, 0xfc, 0x9d, 0xfd, 0x2d, 0xfe, 0x00, 0xfe, + 0x46, 0xff, 0x96, 0xfd, 0x22, 0xfc, 0x99, 0xfb, 0xf4, 0xfb, 0xc4, 0xfb, 0xdb, 0xf9, 0xf0, 0xf8, + 0x1c, 0xf7, 0x00, 0xf9, 0x4b, 0xfa, 0x45, 0xfd, 0x87, 0xfe, 0xb8, 0xfd, 0xf8, 0xfe, 0xcb, 0xff, + 0x1d, 0x01, 0xf7, 0x00, 0xe9, 0x01, 0xae, 0x02, 0x9c, 0x04, 0xdd, 0x03, 0x0b, 0x01, 0x99, 0xfe, + 0x2d, 0xff, 0x19, 0xff, 0xa0, 0xff, 0xfd, 0x02, 0x49, 0x03, 0xd3, 0x03, 0x47, 0x03, 0xc6, 0x04, + 0xad, 0x06, 0x8e, 0x05, 0x59, 0x04, 0xd6, 0x05, 0xeb, 0x05, 0x8a, 0x05, 0x2b, 0x04, 0xe4, 0x00, + 0xae, 0x01, 0xa9, 0x02, 0x18, 0x02, 0x87, 0x04, 0xb4, 0x06, 0xb1, 0x05, 0xf1, 0x06, 0xc2, 0x05, + 0x0d, 0x06, 0x76, 0x06, 0x2c, 0x04, 0x36, 0x04, 0xaa, 0x04, 0x27, 0x05, 0xe9, 0x01, 0x75, 0xff, + 0x2d, 0xfb, 0xe8, 0xf9, 0x3f, 0xfb, 0xcd, 0xf9, 0x80, 0xfa, 0xb6, 0xf9, 0xe4, 0xf7, 0x4e, 0xf8, + 0xb2, 0xf7, 0x1a, 0xf8, 0x2a, 0xf7, 0xa5, 0xf4, 0xe4, 0xf3, 0xad, 0xf5, 0x41, 0xf6, 0xad, 0xf2, + 0x00, 0xf4, 0x5d, 0xf4, 0x37, 0xf6, 0x76, 0xf9, 0x9e, 0xfa, 0x3f, 0xfc, 0x22, 0xfc, 0x3e, 0xfe, + 0x31, 0x00, 0x82, 0x00, 0x73, 0xff, 0xbf, 0x01, 0x1d, 0x03, 0xcf, 0x02, 0xb9, 0x01, 0x6b, 0xff, + 0x93, 0xff, 0x05, 0xff, 0x0e, 0xff, 0xa6, 0x00, 0xd7, 0x01, 0x38, 0x02, 0xdb, 0x02, 0xf7, 0x02, + 0xd5, 0x03, 0x80, 0x05, 0xe5, 0x03, 0x16, 0x04, 0xbc, 0x04, 0xeb, 0x05, 0x69, 0x05, 0x5a, 0x03, + 0x93, 0x02, 0xb0, 0x00, 0xde, 0x01, 0xe8, 0x02, 0x5a, 0x05, 0xa7, 0x06, 0x35, 0x06, 0x89, 0x06, + 0xa2, 0x06, 0xc0, 0x07, 0x50, 0x09, 0xba, 0x08, 0xba, 0x08, 0x1c, 0x0a, 0xae, 0x09, 0x9d, 0x05, + 0xa3, 0x01, 0x44, 0x02, 0xc7, 0x01, 0xca, 0x02, 0x85, 0x03, 0x86, 0x03, 0xc8, 0x03, 0x22, 0x02, + 0x10, 0x03, 0x09, 0x04, 0xb5, 0x03, 0x86, 0x02, 0xdc, 0x01, 0xc1, 0x01, 0x0e, 0x01, 0x70, 0xff, + 0x35, 0xfc, 0xf1, 0xfa, 0x39, 0xfb, 0xac, 0xfb, 0xc1, 0xfd, 0x0b, 0xfe, 0xba, 0xfe, 0x3e, 0x01, + 0xa3, 0x00, 0x4d, 0x01, 0x97, 0x01, 0x8e, 0x02, 0xba, 0x04, 0xd4, 0x06, 0x7c, 0x05, 0x03, 0x05, + 0xc7, 0x04, 0xea, 0x00, 0x7f, 0x01, 0xbb, 0x01, 0xff, 0x02, 0x5e, 0x04, 0x5a, 0x04, 0xe4, 0x03, + 0xe2, 0x03, 0xcd, 0x02, 0x66, 0x03, 0x8a, 0x03, 0x1d, 0x02, 0x65, 0x02, 0x89, 0x02, 0x0e, 0x00, + 0x94, 0xfc, 0x8e, 0xfb, 0xd5, 0xfa, 0x9c, 0xfb, 0x79, 0xfc, 0x43, 0xfd, 0x61, 0xfd, 0x8a, 0xfc, + 0xce, 0xfb, 0x0e, 0xfd, 0xa4, 0xfc, 0x9f, 0xfb, 0x51, 0xfc, 0x04, 0xfc, 0x3d, 0xfd, 0xac, 0xfa, + 0x3f, 0xf7, 0x7d, 0xf6, 0x3f, 0xf6, 0xe5, 0xf6, 0xbf, 0xf7, 0x38, 0xf9, 0x47, 0xfa, 0x74, 0xfc, + 0x8f, 0xfb, 0xd1, 0xfc, 0x33, 0xfe, 0x4f, 0xfc, 0x77, 0xfc, 0xf2, 0xfb, 0xc1, 0xfc, 0x19, 0xfd, + 0x4b, 0xfc, 0xf1, 0xf8, 0x2c, 0xf9, 0xa8, 0xfa, 0xa0, 0xfa, 0x65, 0xfc, 0xa8, 0xfc, 0xd5, 0xff, + 0x3e, 0x01, 0xaa, 0x00, 0xbb, 0x00, 0x2b, 0x02, 0x46, 0x03, 0xbb, 0x02, 0xec, 0x02, 0x3b, 0x02, + 0xb1, 0xfe, 0xce, 0xfc, 0x9f, 0xfb, 0x13, 0xfb, 0xcf, 0xfb, 0xc3, 0xfb, 0x32, 0xfc, 0xa5, 0xfc, + 0x34, 0xfc, 0x17, 0xfd, 0x03, 0xfe, 0x74, 0xfd, 0x5b, 0xfe, 0xbc, 0xfe, 0xd8, 0xfd, 0x65, 0xfd, + 0xf0, 0xfa, 0x80, 0xf9, 0xfa, 0xf9, 0xdd, 0xfa, 0xf3, 0xfb, 0x7f, 0xfd, 0x39, 0xfe, 0xf0, 0x00, + 0x48, 0x02, 0x0f, 0x03, 0x1d, 0x05, 0xf0, 0x05, 0xe9, 0x05, 0x90, 0x07, 0x0a, 0x0b, 0x82, 0x09, + 0x77, 0x09, 0x91, 0x06, 0x52, 0x05, 0xbf, 0x05, 0x8d, 0x05, 0x9d, 0x06, 0x34, 0x08, 0xfb, 0x09, + 0x33, 0x09, 0x3e, 0x09, 0x08, 0x08, 0x1b, 0x09, 0x7c, 0x08, 0x1f, 0x06, 0xef, 0x05, 0x79, 0x07, + 0x5f, 0x04, 0x71, 0x01, 0x13, 0x01, 0xcd, 0x00, 0x2f, 0x02, 0x0b, 0x00, 0x12, 0x00, 0x1a, 0x01, + 0x87, 0x01, 0x79, 0x01, 0xb8, 0xff, 0xcd, 0xfe, 0xaf, 0x00, 0xd1, 0xff, 0xf4, 0xff, 0xad, 0xff, + 0xe0, 0xfc, 0x7c, 0xfa, 0x30, 0xf9, 0xb0, 0xf8, 0x3e, 0xf9, 0x4c, 0xfa, 0x2c, 0xfa, 0x6d, 0xfd, + 0x9f, 0xfe, 0xfb, 0xfd, 0x02, 0xff, 0x91, 0xfe, 0x52, 0xff, 0x58, 0x00, 0x58, 0x01, 0x7b, 0x00, + 0xcd, 0x00, 0x4c, 0xff, 0x29, 0xfc, 0xb6, 0xfd, 0x49, 0xfe, 0xd5, 0xff, 0x40, 0x02, 0x08, 0x03, + 0x01, 0x06, 0x88, 0x05, 0x34, 0x05, 0x13, 0x05, 0xa3, 0x04, 0xc5, 0x04, 0x32, 0x05, 0x54, 0x07, + 0x3e, 0x04, 0xfd, 0x00, 0x43, 0xfe, 0x4a, 0xfd, 0x34, 0xfd, 0xf6, 0xfb, 0x8c, 0xfd, 0xb5, 0xfd, + 0x00, 0xfe, 0xc6, 0xfd, 0x97, 0xfd, 0x2b, 0xfd, 0xa9, 0xfc, 0x04, 0xfb, 0x4c, 0xfa, 0x3d, 0xfa, + 0xcb, 0xf8, 0xab, 0xf6, 0x1b, 0xf5, 0x67, 0xf6, 0xb5, 0xf7, 0x4d, 0xf7, 0x53, 0xf7, 0xc7, 0xf8, + 0x89, 0xfc, 0x88, 0xfd, 0x50, 0xfc, 0x90, 0xfc, 0x7f, 0xfe, 0x12, 0x00, 0x7a, 0x02, 0xde, 0x03, + 0xea, 0x03, 0xd7, 0x03, 0x3e, 0x01, 0x2e, 0x00, 0x49, 0x00, 0x79, 0x00, 0x9a, 0x01, 0x88, 0x03, + 0xa1, 0x05, 0x97, 0x06, 0x0f, 0x06, 0x21, 0x06, 0xea, 0x06, 0x02, 0x08, 0x74, 0x07, 0xb0, 0x07, + 0xe9, 0x08, 0xc6, 0x05, 0xd1, 0x03, 0xf0, 0x02, 0xe6, 0x02, 0x25, 0x03, 0x66, 0x02, 0xef, 0x02, + 0xde, 0x02, 0x32, 0x03, 0x78, 0x04, 0x09, 0x03, 0x1d, 0x02, 0xad, 0x00, 0xb9, 0x00, 0x30, 0x01, + 0xb6, 0x00, 0xda, 0xfe, 0x09, 0xfd, 0x4b, 0xfd, 0x20, 0xfb, 0x69, 0xfb, 0xad, 0xfb, 0xc4, 0xfb, + 0xe1, 0xfd, 0x07, 0xfe, 0xf8, 0xfc, 0xc8, 0xfc, 0xad, 0xfc, 0x8d, 0xfb, 0x9f, 0xfb, 0xdd, 0xfa, + 0x51, 0xfb, 0x61, 0xfb, 0xdc, 0xf8, 0x84, 0xf8, 0x42, 0xf9, 0x89, 0xf9, 0xfa, 0xf8, 0x81, 0xf9, + 0x06, 0xfd, 0x76, 0xff, 0x30, 0xff, 0x29, 0xff, 0xc7, 0xff, 0x56, 0x01, 0xdd, 0x01, 0xcd, 0x03, + 0x39, 0x06, 0x18, 0x06, 0x49, 0x04, 0x13, 0x03, 0x60, 0x02, 0x1b, 0x02, 0x68, 0x02, 0xf4, 0x01, + 0x7a, 0x03, 0x2f, 0x04, 0x7d, 0x05, 0x74, 0x05, 0xcb, 0x05, 0xb7, 0x06, 0x31, 0x06, 0x27, 0x06, + 0xb2, 0x05, 0xe5, 0x04, 0x42, 0x03, 0x08, 0x01, 0xbf, 0x00, 0x66, 0x00, 0xfc, 0x00, 0x4d, 0x01, + 0x2b, 0x01, 0xc9, 0x02, 0x02, 0x03, 0xe3, 0x02, 0x49, 0x01, 0x63, 0x01, 0x8a, 0x01, 0x2b, 0x02, + 0x61, 0x02, 0x11, 0x00, 0x91, 0xfe, 0xc9, 0xfb, 0x39, 0xf9, 0x07, 0xf7, 0x8c, 0xf6, 0x89, 0xf6, + 0x88, 0xf7, 0x05, 0xf8, 0x88, 0xf7, 0xb2, 0xf7, 0x27, 0xf8, 0x81, 0xf8, 0x26, 0xf8, 0xd8, 0xf7, + 0x6f, 0xf9, 0xd0, 0xf9, 0x43, 0xf9, 0x39, 0xf8, 0x02, 0xf9, 0xd4, 0xfa, 0xf7, 0xf9, 0xf9, 0xf9, + 0x8d, 0xfb, 0xbe, 0xfd, 0x2f, 0xff, 0xc4, 0xff, 0x14, 0x00, 0x9a, 0x00, 0x94, 0x00, 0x7d, 0x00, + 0x6e, 0x02, 0x77, 0x02, 0xc9, 0x01, 0x8f, 0x00, 0x13, 0xff, 0x38, 0xfe, 0xd5, 0xfd, 0x4c, 0xfd, + 0x12, 0xfd, 0x09, 0x00, 0xde, 0x01, 0x12, 0x00, 0x89, 0x01, 0x70, 0x02, 0xe4, 0x03, 0xb8, 0x05, + 0x61, 0x04, 0x4a, 0x04, 0xce, 0x02, 0x7a, 0x00, 0xdb, 0xff, 0xcc, 0xfe, 0xf9, 0xfe, 0xc7, 0xfe, + 0x6f, 0xff, 0x1c, 0x01, 0x94, 0x03, 0xe4, 0x04, 0x25, 0x04, 0xdb, 0x04, 0xc4, 0x05, 0x5b, 0x06, + 0xfa, 0x06, 0xfd, 0x05, 0x8f, 0x05, 0x5f, 0x05, 0x96, 0x03, 0xfa, 0x02, 0xe0, 0x01, 0xe1, 0x00, + 0x22, 0x02, 0x66, 0x02, 0x2f, 0x03, 0xfe, 0x02, 0x76, 0x04, 0xfe, 0x05, 0x6c, 0x05, 0x46, 0x06, + 0xc4, 0x05, 0x2b, 0x04, 0x02, 0x02, 0x6d, 0x00, 0xfb, 0x00, 0xd3, 0xff, 0x2f, 0xff, 0x01, 0xff, + 0x8e, 0xfe, 0x3b, 0xff, 0xd1, 0x01, 0x7d, 0x01, 0x41, 0x02, 0x0b, 0x05, 0x37, 0x06, 0x5a, 0x07, + 0xfa, 0x08, 0x9d, 0x09, 0x62, 0x09, 0x35, 0x07, 0x8b, 0x06, 0x53, 0x06, 0x9e, 0x03, 0xde, 0x02, + 0xa4, 0x02, 0xb8, 0x03, 0x43, 0x03, 0x0f, 0x03, 0xea, 0x01, 0xe6, 0x01, 0x92, 0x03, 0xcf, 0x04, + 0xc3, 0x03, 0x1d, 0x02, 0xe1, 0x00, 0x0d, 0x00, 0xc4, 0xfc, 0x0e, 0xfc, 0xcb, 0xfc, 0x4a, 0xfc, + 0x77, 0xfc, 0x1a, 0xfd, 0x77, 0xfe, 0x50, 0xfe, 0x3f, 0xfd, 0x14, 0xfc, 0xd5, 0xfb, 0x39, 0xfd, + 0xf3, 0xfd, 0x06, 0xfb, 0x93, 0xf9, 0x14, 0xf9, 0x98, 0xf8, 0xa2, 0xf7, 0x5f, 0xf6, 0xaf, 0xf7, + 0x0d, 0xf8, 0xb9, 0xf7, 0xbc, 0xf9, 0xa5, 0xf9, 0xb8, 0xf8, 0xd1, 0xf9, 0x5a, 0xfc, 0x8b, 0xfe, + 0xae, 0xff, 0xd3, 0xff, 0xd7, 0xfe, 0x4b, 0xfd, 0x95, 0xfc, 0xfc, 0xfb, 0xda, 0xfb, 0x84, 0xfb, + 0x12, 0xfd, 0xec, 0xfd, 0x4e, 0xff, 0xc8, 0x00, 0xf5, 0x00, 0xe4, 0xff, 0x01, 0x01, 0x88, 0x01, + 0xea, 0x00, 0x26, 0x01, 0x21, 0x00, 0xe8, 0xfe, 0xf7, 0xfc, 0xde, 0xfa, 0x4d, 0xfa, 0x9c, 0xf8, + 0x1e, 0xf7, 0x6d, 0xf8, 0x20, 0xfa, 0x09, 0xfb, 0x9d, 0xfa, 0x15, 0xfb, 0x66, 0xfc, 0x98, 0xfd, + 0x06, 0xff, 0xa8, 0xfe, 0x3f, 0xfe, 0xab, 0xfd, 0x62, 0xfc, 0x7c, 0xfa, 0x08, 0xfb, 0x75, 0xfb, + 0x7c, 0xfb, 0x13, 0xfc, 0x0d, 0xff, 0xb5, 0x01, 0x70, 0x01, 0x5b, 0x01, 0x87, 0x02, 0x5c, 0x05, + 0x10, 0x06, 0x9b, 0x06, 0x18, 0x07, 0x45, 0x07, 0x37, 0x07, 0xd2, 0x06, 0x28, 0x05, 0xc2, 0x05, + 0xc8, 0x06, 0x4f, 0x07, 0x30, 0x08, 0x2c, 0x08, 0x0f, 0x08, 0x7a, 0x07, 0x7c, 0x07, 0x3d, 0x09, + 0x6c, 0x0a, 0x94, 0x0a, 0x69, 0x09, 0x35, 0x07, 0x18, 0x06, 0x13, 0x04, 0x0f, 0x03, 0x7e, 0x00, + 0x79, 0xfe, 0x4c, 0xfe, 0xd6, 0xfe, 0x1a, 0x00, 0x94, 0x00, 0x1c, 0x00, 0xfa, 0xfe, 0x65, 0xfd, + 0x09, 0xfd, 0x4a, 0xfc, 0x4e, 0xfc, 0x43, 0xfc, 0x52, 0xfb, 0xb7, 0xfb, 0x04, 0xfb, 0x77, 0xfa, + 0xc7, 0xfa, 0xe8, 0xfa, 0x82, 0xfc, 0x43, 0xfe, 0x70, 0xfe, 0xa8, 0xfd, 0xe7, 0xfd, 0x4d, 0xfe, + 0x86, 0x00, 0x3d, 0x02, 0x90, 0x02, 0xf9, 0x03, 0x2c, 0x03, 0x78, 0x02, 0x77, 0x02, 0xeb, 0x01, + 0x84, 0x02, 0x3f, 0x03, 0x7d, 0x04, 0x0c, 0x06, 0x69, 0x06, 0x0f, 0x07, 0xbb, 0x06, 0x44, 0x07, + 0x1d, 0x07, 0x52, 0x07, 0xc4, 0x05, 0x60, 0x04, 0xad, 0x03, 0x66, 0x02, 0x2e, 0x01, 0x0e, 0xff, + 0xaa, 0xfc, 0xc7, 0xfa, 0xa6, 0xfa, 0x13, 0xfb, 0x69, 0xfb, 0x7b, 0xfb, 0x9d, 0xf9, 0x2f, 0xf8, + 0x4b, 0xf8, 0x8e, 0xf8, 0x43, 0xf7, 0x2f, 0xf6, 0x69, 0xf6, 0x05, 0xf7, 0x1a, 0xf6, 0xf3, 0xf4, + 0xb2, 0xf4, 0x30, 0xf4, 0x66, 0xf4, 0x3e, 0xf7, 0xaf, 0xf8, 0x09, 0xfb, 0xe8, 0xfc, 0x15, 0xfd, + 0xc6, 0xfd, 0xc6, 0xff, 0xda, 0x01, 0x73, 0x03, 0x30, 0x05, 0x9c, 0x06, 0x7e, 0x07, 0xd6, 0x05, + 0x10, 0x05, 0x13, 0x05, 0x94, 0x04, 0xee, 0x05, 0xce, 0x06, 0xf0, 0x05, 0x95, 0x03, 0x14, 0x03, + 0xa0, 0x03, 0xa4, 0x03, 0xc2, 0x03, 0x88, 0x03, 0x30, 0x06, 0x1a, 0x04, 0x17, 0x02, 0x32, 0x01, + 0x1f, 0xfe, 0xed, 0xfd, 0x55, 0xfb, 0xe7, 0xfa, 0xcd, 0xfd, 0x03, 0xff, 0xfa, 0xfe, 0xe0, 0xfd, + 0x5e, 0xfd, 0x90, 0xfe, 0xf2, 0xfd, 0x61, 0xfb, 0xd4, 0xfc, 0xe1, 0xfd, 0x6f, 0xfd, 0x63, 0xfa, + 0xeb, 0xf8, 0xc2, 0xf7, 0x28, 0xf5, 0x8f, 0xf4, 0x3e, 0xf6, 0x03, 0xf7, 0xc1, 0xf5, 0x84, 0xf6, + 0xec, 0xf6, 0x1c, 0xf9, 0xfb, 0xfa, 0x6a, 0xfc, 0x17, 0xff, 0xf6, 0x02, 0x29, 0x04, 0x4c, 0x05, + 0xab, 0x05, 0xe5, 0x05, 0x9a, 0x08, 0x10, 0x0c, 0xa5, 0x0d, 0x85, 0x11, 0xc2, 0x11, 0xc3, 0x11, + 0x7c, 0x13, 0x05, 0x15, 0xc3, 0x15, 0x32, 0x17, 0x1d, 0x1c, 0x69, 0x20, 0x58, 0x1f, 0xad, 0x1b, + 0xef, 0x17, 0xd4, 0x12, 0x82, 0x0f, 0x71, 0x0d, 0xed, 0x0b, 0x48, 0x0d, 0x3e, 0x0c, 0xb7, 0x0b, + 0x39, 0x0d, 0xae, 0x0c, 0x06, 0x0b, 0x17, 0x09, 0x7d, 0x05, 0xd3, 0x03, 0x1b, 0x02, 0xc4, 0xfa, + 0x82, 0xf5, 0x61, 0xef, 0xf9, 0xe7, 0x13, 0xe2, 0xd4, 0xdf, 0xf6, 0xdd, 0x2f, 0xdc, 0x00, 0xda, + 0xae, 0xda, 0x79, 0xdc, 0xf9, 0xdc, 0x09, 0xdc, 0xbc, 0xdf, 0x81, 0xe2, 0x6f, 0xe5, 0x4e, 0xe3, + 0xe5, 0xe1, 0x40, 0xe4, 0x33, 0xe5, 0xaa, 0xe8, 0x77, 0xec, 0x2c, 0xf1, 0x92, 0xf4, 0xf3, 0xf6, + 0x70, 0xf9, 0x60, 0xfc, 0x2f, 0xff, 0x3f, 0xff, 0xb2, 0x03, 0x84, 0x07, 0xa1, 0x08, 0x0c, 0x08, + 0xad, 0x03, 0xd5, 0x01, 0x89, 0x00, 0xb7, 0xff, 0x43, 0x01, 0xc5, 0x04, 0xdf, 0x0d, 0x7d, 0x11, + 0x00, 0x14, 0x28, 0x17, 0xb5, 0x19, 0x73, 0x18, 0xcc, 0x14, 0x55, 0x15, 0x8c, 0x15, 0x24, 0x13, + 0xa3, 0x0c, 0xf4, 0x07, 0x1e, 0x02, 0x6d, 0xfe, 0xf8, 0xfa, 0xe5, 0xf8, 0x1a, 0xfa, 0xb9, 0xf7, + 0x6d, 0xf7, 0x97, 0xf8, 0x86, 0xfc, 0xbe, 0xff, 0x1b, 0xfe, 0x57, 0xfe, 0xbc, 0xfd, 0x8e, 0xfd, + 0x98, 0xf9, 0x73, 0xf8, 0xf2, 0xf9, 0x2a, 0xfd, 0x84, 0xff, 0x36, 0x02, 0xbe, 0x05, 0x1c, 0x09, + 0x7a, 0x0c, 0xa6, 0x0e, 0xce, 0x0d, 0x57, 0x0e, 0x06, 0x0f, 0x1e, 0x11, 0x69, 0x11, 0x1c, 0x10, + 0x32, 0x0e, 0x65, 0x0b, 0x1a, 0x07, 0xfc, 0x05, 0xad, 0x06, 0xaa, 0x0a, 0xba, 0x0d, 0xd8, 0x11, + 0x74, 0x12, 0x6e, 0x12, 0x22, 0x12, 0xf1, 0x10, 0x47, 0x0e, 0xe4, 0x09, 0xa3, 0x08, 0xf0, 0x04, + 0x18, 0x02, 0xcd, 0xfc, 0xf0, 0xf4, 0xc4, 0xf1, 0xd2, 0xec, 0x2a, 0xec, 0x67, 0xee, 0x53, 0xef, + 0xe9, 0xf0, 0xc1, 0xf2, 0x9d, 0xf7, 0x94, 0xf8, 0xc5, 0xf9, 0xb6, 0xfa, 0x77, 0xfa, 0x57, 0xfb, + 0xa4, 0xf9, 0xe5, 0xf9, 0x0b, 0xfa, 0xe2, 0xfe, 0xc3, 0x01, 0x65, 0x04, 0x47, 0x07, 0xda, 0x09, + 0xbc, 0x0c, 0xec, 0x0c, 0x28, 0x0f, 0xb1, 0x0f, 0xbd, 0x11, 0xcb, 0x11, 0x1b, 0x11, 0x1d, 0x10, + 0xa7, 0x0c, 0x3e, 0x09, 0x02, 0x05, 0x51, 0x02, 0x45, 0x04, 0x1a, 0x07, 0xef, 0x09, 0x4f, 0x0e, + 0x32, 0x11, 0x44, 0x10, 0xda, 0x0e, 0x21, 0x0d, 0x07, 0x09, 0x40, 0x05, 0xdc, 0x01, 0x8c, 0xff, + 0x57, 0xfe, 0x2a, 0xfb, 0x7e, 0xf5, 0x1c, 0xf0, 0x3e, 0xec, 0x7d, 0xe9, 0xb7, 0xea, 0x63, 0xe9, + 0x7d, 0xe8, 0x64, 0xe8, 0xc2, 0xe7, 0x25, 0xeb, 0x71, 0xea, 0xbd, 0xea, 0x8e, 0xe9, 0xd6, 0xe9, + 0xc0, 0xe9, 0x92, 0xe6, 0x78, 0xe7, 0x92, 0xe9, 0x62, 0xeb, 0xa0, 0xec, 0xc6, 0xef, 0x2e, 0xf4, + 0x1b, 0xf6, 0x3b, 0xf8, 0x34, 0xf8, 0xa6, 0xfa, 0x27, 0xfc, 0x38, 0xfd, 0x81, 0xfe, 0x80, 0x00, + 0x7c, 0x01, 0xb8, 0xfd, 0xb9, 0xfa, 0xcf, 0xf7, 0x4f, 0xfa, 0xd1, 0xfc, 0xfe, 0xfe, 0x3a, 0x04, + 0x7b, 0x06, 0x48, 0x05, 0x9c, 0x04, 0x05, 0x05, 0xad, 0x05, 0xb6, 0x01, 0x3b, 0xfe, 0x49, 0xfe, + 0xb6, 0xfd, 0x17, 0xfc, 0xa0, 0xf7, 0x45, 0xf2, 0x52, 0xf1, 0xab, 0xf0, 0x1e, 0xf0, 0xef, 0xf1, + 0x09, 0xf5, 0x88, 0xf6, 0xe8, 0xf7, 0x3d, 0xfa, 0x04, 0xfa, 0x94, 0xfc, 0x54, 0xfd, 0x8d, 0xfe, + 0x8f, 0x00, 0x05, 0x01, 0xf2, 0x01, 0x2b, 0x04, 0xa0, 0x06, 0x3a, 0x09, 0xfe, 0x0d, 0xbd, 0x0f, + 0xc1, 0x13, 0xa4, 0x13, 0xee, 0x13, 0x4a, 0x14, 0x31, 0x16, 0x8a, 0x16, 0x83, 0x16, 0xa1, 0x18, + 0xbe, 0x16, 0x42, 0x14, 0x93, 0x0f, 0x05, 0x0b, 0xb5, 0x08, 0x04, 0x0a, 0x68, 0x0c, 0xef, 0x0e, + 0x3e, 0x13, 0x99, 0x12, 0x20, 0x11, 0xb0, 0x0f, 0x15, 0x0f, 0x3d, 0x0c, 0xa8, 0x08, 0x1f, 0x0a, + 0x8c, 0x08, 0x56, 0x07, 0xb6, 0x01, 0x9d, 0xfb, 0x80, 0xf9, 0x3a, 0xf6, 0x5e, 0xf4, 0xf3, 0xf3, + 0x74, 0xf3, 0xa3, 0xf3, 0xf2, 0xf1, 0x4e, 0xf5, 0xfa, 0xf5, 0x6a, 0xf7, 0x55, 0xf7, 0x81, 0xf7, + 0x38, 0xf8, 0xc8, 0xf6, 0xe0, 0xf5, 0x0a, 0xf5, 0x20, 0xf7, 0xbc, 0xf9, 0xb4, 0xfa, 0x56, 0xfe, + 0xf5, 0x01, 0x83, 0x04, 0xf5, 0x05, 0xb6, 0x07, 0x6e, 0x06, 0x68, 0x08, 0x36, 0x0a, 0x20, 0x09, + 0x02, 0x0a, 0x34, 0x09, 0x81, 0x06, 0x13, 0x02, 0x11, 0xfd, 0xf5, 0xff, 0x0b, 0x01, 0x6a, 0x05, + 0x07, 0x09, 0xa7, 0x0b, 0x05, 0x09, 0x4d, 0x06, 0xb5, 0x06, 0x35, 0x05, 0x23, 0x04, 0xc6, 0x03, + 0x21, 0x04, 0xef, 0x00, 0x92, 0xfc, 0xb0, 0xf5, 0x7c, 0xef, 0x49, 0xed, 0x30, 0xeb, 0x17, 0xec, + 0x45, 0xed, 0xc4, 0xef, 0xb2, 0xef, 0xd6, 0xf1, 0x3d, 0xf6, 0xcb, 0xf4, 0xbe, 0xf7, 0x4a, 0xf9, + 0x9e, 0xfc, 0xfd, 0xfc, 0x35, 0xfd, 0x62, 0xfe, 0xc5, 0x01, 0xe6, 0x02, 0xa0, 0x04, 0x59, 0x07, + 0xa0, 0x0a, 0xda, 0x0a, 0x06, 0x0c, 0xca, 0x0c, 0xf5, 0x0b, 0x8c, 0x0c, 0xbd, 0x0d, 0xd6, 0x0d, + 0x78, 0x0d, 0x4f, 0x0c, 0xb9, 0x09, 0x4d, 0x04, 0x8c, 0xfe, 0x76, 0xfd, 0x83, 0x01, 0x77, 0x03, + 0xd1, 0x07, 0xa3, 0x0b, 0x3d, 0x0e, 0x15, 0x0d, 0x2f, 0x09, 0x18, 0x0a, 0x00, 0x08, 0x2e, 0x06, + 0x60, 0x05, 0x57, 0x03, 0xe6, 0x01, 0x91, 0xfa, 0x6f, 0xf5, 0x52, 0xf2, 0xed, 0xef, 0xaf, 0xef, + 0x44, 0xf1, 0xbd, 0xf3, 0xc8, 0xf2, 0x75, 0xf3, 0x02, 0xf6, 0xf5, 0xf6, 0xad, 0xf7, 0x6b, 0xf9, + 0x1f, 0xfc, 0x5f, 0xfb, 0x1d, 0xfa, 0xc3, 0xf8, 0x5e, 0xfa, 0x26, 0xfa, 0x95, 0xfa, 0x53, 0xfd, + 0x86, 0xff, 0x82, 0x01, 0x28, 0x02, 0x57, 0x05, 0xea, 0x05, 0x0e, 0x05, 0xf7, 0x05, 0x80, 0x07, + 0x09, 0x0a, 0xd9, 0x09, 0x25, 0x08, 0x9a, 0x07, 0xef, 0x03, 0x12, 0x03, 0xad, 0x04, 0x83, 0x06, + 0x11, 0x0a, 0x17, 0x0c, 0x95, 0x0d, 0xdf, 0x0b, 0xd2, 0x08, 0xf2, 0x06, 0x99, 0x05, 0x32, 0x02, + 0x22, 0x01, 0xf7, 0xff, 0xe7, 0xfb, 0x58, 0xf5, 0x3a, 0xee, 0x83, 0xeb, 0xac, 0xe7, 0xd7, 0xe5, + 0x5d, 0xe5, 0x69, 0xe6, 0x26, 0xea, 0x9e, 0xe8, 0x51, 0xeb, 0xbf, 0xeb, 0xfb, 0xeb, 0x96, 0xec, + 0xd9, 0xea, 0x9b, 0xed, 0x3c, 0xee, 0x70, 0xef, 0x78, 0xf1, 0x93, 0xf3, 0x43, 0xf4, 0xab, 0xf7, + 0x53, 0xfd, 0x63, 0x01, 0x6c, 0x03, 0x67, 0x05, 0x9c, 0x07, 0x33, 0x08, 0xc5, 0x09, 0xb6, 0x0c, + 0x38, 0x0e, 0xd3, 0x0f, 0x8a, 0x0e, 0x59, 0x0d, 0x8c, 0x0a, 0x4a, 0x07, 0x21, 0x07, 0xb7, 0x08, + 0xe9, 0x0a, 0x40, 0x0c, 0x47, 0x0e, 0x7f, 0x0f, 0x28, 0x0e, 0x50, 0x0d, 0xe8, 0x09, 0x61, 0x07, + 0x34, 0x09, 0xea, 0x08, 0x8c, 0x05, 0x75, 0x02, 0xba, 0xfd, 0x1f, 0xfa, 0xcc, 0xf5, 0xc0, 0xf1, + 0x4b, 0xf1, 0xb5, 0xf0, 0xb7, 0xf1, 0xf0, 0xf0, 0x30, 0xf2, 0x55, 0xf4, 0x4b, 0xf5, 0x9a, 0xf5, + 0x75, 0xf5, 0xcd, 0xf7, 0x0d, 0xf9, 0xf1, 0xf7, 0x9f, 0xf8, 0x70, 0xfb, 0x15, 0xfd, 0x90, 0x00, + 0x7b, 0x01, 0x7c, 0x06, 0xba, 0x0a, 0x07, 0x0e, 0x3c, 0x10, 0xfd, 0x0f, 0xf9, 0x12, 0x50, 0x12, + 0x7a, 0x11, 0x76, 0x13, 0x59, 0x14, 0x43, 0x12, 0x6f, 0x11, 0x68, 0x0f, 0x77, 0x0d, 0xf6, 0x0d, + 0x5a, 0x0f, 0x89, 0x12, 0xe7, 0x13, 0x6e, 0x14, 0xc8, 0x12, 0xa1, 0x0e, 0x87, 0x0d, 0xa1, 0x0b, + 0xee, 0x0b, 0x79, 0x0c, 0x2c, 0x09, 0xe7, 0x06, 0xf2, 0xff, 0xc7, 0xf9, 0x79, 0xf4, 0x5a, 0xef, + 0xf7, 0xec, 0x19, 0xea, 0xcf, 0xea, 0xde, 0xea, 0xb5, 0xec, 0x6b, 0xef, 0x70, 0xee, 0x82, 0xef, + 0xb3, 0xf0, 0xf3, 0xf1, 0x99, 0xf3, 0x14, 0xf6, 0x2a, 0xf7, 0x92, 0xfa, 0x5e, 0xfc, 0x96, 0xfd, + 0x02, 0x00, 0x2e, 0x02, 0x60, 0x05, 0x68, 0x07, 0x75, 0x08, 0x91, 0x08, 0x5f, 0x08, 0xfd, 0x09, + 0xbf, 0x08, 0xca, 0x0a, 0x57, 0x0c, 0xc1, 0x09, 0x2b, 0x08, 0x68, 0x03, 0xb4, 0x02, 0x3f, 0x04, + 0x31, 0x06, 0xa2, 0x08, 0xdb, 0x0b, 0x4f, 0x10, 0x6d, 0x0f, 0x1e, 0x0b, 0x92, 0x0c, 0xc1, 0x0c, + 0xfc, 0x0b, 0x20, 0x0c, 0x54, 0x0a, 0x5b, 0x05, 0xf4, 0x03, 0xdc, 0xff, 0x6f, 0xfc, 0x37, 0xf9, + 0x70, 0xf8, 0xad, 0xf7, 0x14, 0xf7, 0xa6, 0xf8, 0x2f, 0xf7, 0x92, 0xf9, 0x35, 0xfa, 0x98, 0xfc, + 0x61, 0xfe, 0xc7, 0xff, 0xd0, 0x00, 0xf4, 0xff, 0xe4, 0xfd, 0x32, 0xfe, 0xbf, 0xfc, 0xa9, 0xfa, + 0x23, 0xf9, 0x4e, 0xf8, 0x2e, 0xf8, 0x94, 0xf7, 0x09, 0xf8, 0x60, 0xf8, 0x18, 0xf8, 0xd0, 0xf8, + 0x84, 0xf8, 0x16, 0xfa, 0x52, 0xf8, 0x4d, 0xf6, 0x44, 0xf5, 0x1b, 0xf7, 0x90, 0xf6, 0x6b, 0xf9, + 0x6a, 0xf9, 0x35, 0xf8, 0x0f, 0xf9, 0x0b, 0xfc, 0x9b, 0xff, 0x3a, 0xfd, 0xae, 0xfc, 0x2c, 0xfc, + 0x69, 0xfa, 0x67, 0xfb, 0x1d, 0xf9, 0x10, 0xf7, 0x1f, 0xf6, 0x45, 0xf1, 0x5b, 0xef, 0x4a, 0xec, + 0xb5, 0xec, 0x6a, 0xe9, 0x66, 0xe9, 0xae, 0xee, 0x40, 0xee, 0x8b, 0xef, 0xd6, 0xf1, 0xcf, 0xf2, + 0x94, 0xf3, 0x1d, 0xf3, 0x53, 0xf3, 0x4d, 0xf3, 0x51, 0xf6, 0xa4, 0xf7, 0xa2, 0xf9, 0x21, 0xfb, + 0xde, 0xfd, 0x6b, 0xfd, 0x4f, 0xff, 0x59, 0x02, 0xe1, 0x04, 0x21, 0x09, 0x58, 0x07, 0xd4, 0x07, + 0x69, 0x09, 0x34, 0x0c, 0x38, 0x0f, 0x7b, 0x10, 0xea, 0x0f, 0x26, 0x0f, 0x4e, 0x0b, 0x6b, 0x08, + 0xe8, 0x07, 0x9f, 0x0a, 0xe6, 0x0c, 0x7c, 0x0f, 0x36, 0x13, 0x1b, 0x15, 0xf6, 0x12, 0xd1, 0x11, + 0xba, 0x11, 0x86, 0x14, 0x63, 0x14, 0x0f, 0x0f, 0xce, 0x0c, 0x31, 0x0a, 0x2e, 0x05, 0xef, 0x02, + 0x8f, 0xfd, 0x58, 0xfa, 0x59, 0xf7, 0xed, 0xf7, 0xf2, 0xf8, 0x4d, 0xf9, 0x3a, 0xfc, 0x02, 0xf9, + 0x4f, 0xfa, 0xbe, 0xf8, 0x56, 0xfa, 0xa4, 0xfd, 0x6e, 0xfe, 0xee, 0xfd, 0x43, 0xfd, 0xe3, 0xfd, + 0xba, 0xff, 0x4d, 0xff, 0x18, 0x03, 0x51, 0x06, 0x1f, 0x07, 0x4d, 0x08, 0x2f, 0x08, 0x8a, 0x09, + 0x01, 0x0b, 0x2a, 0x0b, 0x98, 0x0b, 0x36, 0x0c, 0x25, 0x0c, 0x0f, 0x0d, 0x88, 0x0b, 0x59, 0x0b, + 0xb3, 0x0c, 0x88, 0x0d, 0x95, 0x0e, 0x6b, 0x0f, 0x81, 0x12, 0x0f, 0x13, 0xc4, 0x0c, 0xcc, 0x0a, + 0xc6, 0x0b, 0xe3, 0x0c, 0x59, 0x0c, 0x88, 0x0b, 0x6c, 0x0a, 0x63, 0x07, 0xaa, 0x00, 0xcd, 0xfa, + 0xaa, 0xf6, 0x68, 0xf7, 0x1d, 0xf3, 0xe0, 0xef, 0xf9, 0xf0, 0x26, 0xf1, 0x74, 0xf1, 0x0d, 0xf3, + 0xaf, 0xf6, 0xa8, 0xf9, 0x97, 0xfa, 0x70, 0xf9, 0x22, 0xfa, 0xe9, 0xfa, 0x96, 0xfe, 0x9a, 0x02, + 0x0e, 0x06, 0x84, 0x08, 0xe8, 0x09, 0xae, 0x0b, 0xeb, 0x0a, 0x00, 0x0e, 0x15, 0x0e, 0xb3, 0x0b, + 0x10, 0x0b, 0xa1, 0x07, 0xc5, 0x09, 0x6f, 0x07, 0x9d, 0x02, 0x67, 0xfe, 0xa5, 0xfb, 0x04, 0xf9, + 0x87, 0xf6, 0x2f, 0xf6, 0x10, 0xf7, 0x30, 0xf8, 0xd6, 0xf7, 0x12, 0xf9, 0xdc, 0xf8, 0x52, 0xf9, + 0x5c, 0xfb, 0x6f, 0xfa, 0x26, 0xf8, 0xe4, 0xf3, 0xa4, 0xf0, 0x5d, 0xf1, 0x22, 0xf0, 0xd2, 0xee, + 0x1e, 0xec, 0x43, 0xea, 0x4f, 0xe6, 0x8d, 0xe4, 0x5b, 0xe9, 0x64, 0xea, 0x9d, 0xeb, 0x98, 0xee, + 0x65, 0xf2, 0x35, 0xf6, 0xbe, 0xf6, 0x33, 0xfa, 0x27, 0xfe, 0x94, 0x01, 0xea, 0x01, 0xb9, 0x01, + 0x6c, 0x03, 0x9c, 0x05, 0x94, 0x02, 0x47, 0x00, 0x40, 0x02, 0x05, 0x04, 0xbb, 0x05, 0xcb, 0x04, + 0x03, 0x05, 0x0b, 0x07, 0x58, 0x07, 0xef, 0x06, 0x3d, 0x06, 0x73, 0x06, 0x0b, 0x08, 0x0f, 0x07, + 0xf3, 0x07, 0x61, 0x05, 0x4e, 0x07, 0x9e, 0x06, 0x79, 0x08, 0x9d, 0x0c, 0x71, 0x0c, 0xe6, 0x09, + 0x33, 0x06, 0x27, 0x04, 0x40, 0x04, 0x58, 0x04, 0x4a, 0x03, 0xda, 0x00, 0xd1, 0xfe, 0x10, 0xfb, + 0x1b, 0xf7, 0xc8, 0xf1, 0x42, 0xf0, 0x10, 0xee, 0x5b, 0xec, 0x10, 0xec, 0xbf, 0xec, 0x1b, 0xef, + 0xf9, 0xee, 0x7e, 0xef, 0x01, 0xed, 0x30, 0xec, 0xdf, 0xec, 0x66, 0xef, 0x98, 0xf2, 0x17, 0xf5, + 0x48, 0xf6, 0xec, 0xf8, 0x2e, 0xf8, 0x15, 0xfc, 0xb3, 0x00, 0xb1, 0x02, 0x12, 0x05, 0x62, 0x03, + 0x9a, 0x01, 0x4a, 0x03, 0x26, 0x06, 0x0d, 0x0a, 0xe4, 0x0c, 0xae, 0x0d, 0xdf, 0x0a, 0xd9, 0x08, + 0xc7, 0x08, 0x85, 0x09, 0x23, 0x09, 0x82, 0x0a, 0xbc, 0x0b, 0x45, 0x0d, 0x0a, 0x10, 0xde, 0x0c, + 0xca, 0x0e, 0xe1, 0x0f, 0x29, 0x0f, 0xc8, 0x0d, 0xcd, 0x0c, 0x21, 0x0b, 0x6f, 0x06, 0xe8, 0x03, + 0x23, 0x00, 0xed, 0xfc, 0x4e, 0xfc, 0xa5, 0xf7, 0xf7, 0xf6, 0x53, 0xf7, 0x02, 0xf8, 0xe7, 0xf7, + 0x66, 0xf8, 0x03, 0xfb, 0x98, 0xfb, 0x35, 0xfe, 0x5c, 0xff, 0xfa, 0xff, 0x39, 0x00, 0x5c, 0x02, + 0xe2, 0x04, 0xdb, 0x06, 0xe2, 0x09, 0x02, 0x0b, 0x72, 0x0a, 0x7e, 0x09, 0x1f, 0x0c, 0xd8, 0x0e, + 0x8a, 0x10, 0xc1, 0x14, 0xfc, 0x14, 0x7d, 0x15, 0xee, 0x14, 0x2c, 0x14, 0xf8, 0x14, 0xd1, 0x14, + 0xed, 0x12, 0x0d, 0x11, 0x86, 0x10, 0xd5, 0x11, 0x54, 0x10, 0x76, 0x0f, 0xa0, 0x0d, 0x26, 0x0a, + 0xe9, 0x05, 0x56, 0x05, 0xdb, 0x04, 0x5a, 0x03, 0xa6, 0x02, 0x88, 0xff, 0xe6, 0xfc, 0x7c, 0xf7, + 0x2f, 0xf5, 0xb5, 0xf0, 0x1a, 0xed, 0x40, 0xe8, 0xc6, 0xe0, 0x6d, 0xe0, 0xe2, 0xdf, 0x89, 0xe2, + 0x28, 0xe6, 0xb3, 0xe8, 0xb5, 0xe8, 0xae, 0xe5, 0x46, 0xea, 0x06, 0xeb, 0x94, 0xed, 0xaf, 0xf2, + 0xea, 0xf7, 0xe1, 0xfc, 0x3f, 0x00, 0xd9, 0x02, 0x77, 0x05, 0xb3, 0x08, 0x3d, 0x0b, 0xec, 0x0b, + 0xce, 0x0e, 0x20, 0x0f, 0x55, 0x0e, 0x34, 0x0e, 0xc8, 0x0e, 0x69, 0x0c, 0x2c, 0x0a, 0xbc, 0x0a, + 0x9a, 0x09, 0x5d, 0x08, 0xa4, 0x07, 0xb1, 0x07, 0x47, 0x07, 0x6a, 0x07, 0x38, 0x08, 0xae, 0x08, + 0x6d, 0x08, 0x37, 0x09, 0x77, 0x06, 0x36, 0x04, 0xe7, 0x00, 0xce, 0x00, 0xaa, 0x00, 0x6e, 0xfe, + 0x35, 0xfa, 0x92, 0xf4, 0xeb, 0xf0, 0x16, 0xee, 0x47, 0xec, 0x9e, 0xec, 0x7d, 0xec, 0x1f, 0xed, + 0x2f, 0xee, 0x23, 0xef, 0x3b, 0xf1, 0x26, 0xf1, 0x04, 0xf1, 0x04, 0xf4, 0x57, 0xf5, 0xec, 0xf5, + 0xe2, 0xf7, 0x18, 0xf7, 0xc5, 0xf8, 0xf9, 0xf4, 0x9a, 0xf3, 0x66, 0xf3, 0x43, 0xf5, 0x91, 0xf7, + 0x34, 0xf8, 0xe3, 0xf9, 0x20, 0xf9, 0xf0, 0xfa, 0xea, 0xfc, 0xbf, 0xfc, 0x1f, 0xfe, 0xda, 0xfd, + 0xa0, 0xff, 0xb0, 0xfe, 0xf8, 0xff, 0x78, 0x04, 0xa7, 0x08, 0x6b, 0x0b, 0xc2, 0x09, 0xaa, 0x0a, + 0x7a, 0x0a, 0x6e, 0x0a, 0x88, 0x09, 0x8c, 0x09, 0x59, 0x0b, 0x24, 0x0a, 0xf6, 0x07, 0xda, 0x06, + 0xd1, 0x04, 0x2d, 0x03, 0x0c, 0xfe, 0xb6, 0xfb, 0x51, 0xf8, 0x33, 0xf7, 0xbe, 0xf4, 0x03, 0xf4, + 0x7d, 0xf5, 0x16, 0xf6, 0xaf, 0xf8, 0x0e, 0xf7, 0xbc, 0xf5, 0xb1, 0xf7, 0x9b, 0xf9, 0xee, 0xfa, + 0xf6, 0xfb, 0xb2, 0xfe, 0xfe, 0x00, 0x25, 0x03, 0x38, 0x05, 0xdf, 0x07, 0x6d, 0x08, 0x4b, 0x07, + 0x09, 0x07, 0xeb, 0x07, 0x48, 0x0e, 0xc1, 0x0e, 0x31, 0x0f, 0x3a, 0x10, 0x42, 0x0f, 0x9a, 0x0e, + 0x50, 0x0d, 0x27, 0x0e, 0x92, 0x0d, 0xcf, 0x0e, 0xfc, 0x0f, 0x5b, 0x0f, 0x90, 0x10, 0xea, 0x0f, + 0x40, 0x10, 0xbf, 0x0d, 0x99, 0x0c, 0x8c, 0x0c, 0xa1, 0x0a, 0xf7, 0x08, 0xb8, 0x05, 0x3f, 0x02, + 0x59, 0xfe, 0xb8, 0xfa, 0x1c, 0xf7, 0x54, 0xf6, 0x2b, 0xf6, 0xdf, 0xf1, 0x32, 0xf0, 0xff, 0xef, + 0xce, 0xf1, 0xee, 0xf4, 0x4b, 0xf5, 0xf6, 0xf6, 0x6a, 0xf7, 0x47, 0xf6, 0xba, 0xf4, 0x25, 0xf7, + 0xa3, 0xfc, 0x77, 0x00, 0xa5, 0x02, 0xc3, 0x01, 0xd0, 0x00, 0xda, 0x02, 0x76, 0x02, 0x70, 0x03, + 0x1e, 0x05, 0x24, 0x08, 0x9b, 0x0a, 0xd0, 0x0a, 0xcb, 0x0a, 0x6f, 0x0b, 0x52, 0x0b, 0x99, 0x08, + 0xcc, 0x08, 0x19, 0x0a, 0xaf, 0x09, 0x21, 0x09, 0xe9, 0x0a, 0x9a, 0x0b, 0x6c, 0x09, 0xfb, 0x07, + 0xc6, 0x05, 0x65, 0x05, 0xfc, 0x06, 0x7a, 0x03, 0x8f, 0x01, 0x77, 0x00, 0x7f, 0x01, 0x4e, 0xff, + 0x18, 0xfe, 0xa4, 0xfb, 0x68, 0xf7, 0x01, 0xf4, 0x23, 0xed, 0x44, 0xe9, 0x9f, 0xe9, 0x57, 0xe9, + 0xae, 0xea, 0xd6, 0xe9, 0x4c, 0xea, 0x58, 0xea, 0x4a, 0xeb, 0xf5, 0xea, 0x42, 0xec, 0x6b, 0xf0, + 0x97, 0xf2, 0xc3, 0xf6, 0x8c, 0xfa, 0x51, 0xff, 0x87, 0x00, 0x6a, 0x01, 0x18, 0x02, 0xe0, 0x01, + 0x94, 0x02, 0xf2, 0x02, 0x23, 0x02, 0x6d, 0x02, 0x67, 0x00, 0xde, 0xfe, 0xbe, 0xfb, 0x24, 0xfc, + 0xa7, 0xfb, 0x3f, 0xfc, 0x45, 0xfb, 0x03, 0xfa, 0xc2, 0xfb, 0x78, 0xfd, 0xef, 0xfe, 0x5f, 0xfe, + 0x84, 0x00, 0x41, 0x01, 0xee, 0x00, 0xb0, 0x01, 0xe2, 0x01, 0x63, 0x04, 0xc2, 0x05, 0x0f, 0x05, + 0x5d, 0x02, 0x7b, 0x00, 0xbf, 0xfe, 0x29, 0xfc, 0xc7, 0xfc, 0x12, 0xfb, 0xba, 0xfb, 0xca, 0xfa, + 0x6b, 0xfb, 0xf7, 0xfe, 0x02, 0x01, 0x70, 0x02, 0x64, 0x01, 0xff, 0x02, 0x7f, 0x05, 0x06, 0x07, + 0xe1, 0x09, 0xa2, 0x0a, 0x99, 0x0d, 0xd8, 0x0c, 0x76, 0x0a, 0xba, 0x0a, 0x28, 0x0b, 0xc4, 0x0b, + 0xc2, 0x09, 0x58, 0x0a, 0xda, 0x08, 0xd3, 0x0a, 0x9d, 0x0c, 0x5e, 0x0c, 0x41, 0x0d, 0xcb, 0x0b, + 0xe6, 0x07, 0x06, 0x06, 0x05, 0x08, 0xc9, 0x0b, 0xd2, 0x0e, 0x7b, 0x12, 0xdb, 0x0f, 0xdc, 0x0c, + 0x53, 0x0c, 0x94, 0x0b, 0x54, 0x0a, 0x5b, 0x0a, 0x94, 0x09, 0x78, 0x07, 0x3f, 0x07, 0x05, 0x07, + 0x10, 0x04, 0x6e, 0x00, 0x14, 0xfd, 0xe2, 0xf8, 0x60, 0xf4, 0x83, 0xf0, 0x14, 0xed, 0xe3, 0xe9, + 0x85, 0xe8, 0x42, 0xe6, 0x7e, 0xe6, 0xbd, 0xe7, 0x62, 0xe8, 0xd9, 0xe6, 0xa4, 0xe7, 0xcf, 0xe8, + 0x6f, 0xea, 0x97, 0xee, 0x5a, 0xf1, 0x7d, 0xf5, 0x17, 0xf9, 0x92, 0xfa, 0xfe, 0xfb, 0x57, 0xfb, + 0x96, 0xfc, 0x8a, 0xfe, 0x7d, 0x03, 0x6e, 0x05, 0x93, 0x05, 0x35, 0x05, 0x37, 0x05, 0x70, 0x07, + 0x2d, 0x07, 0x88, 0x07, 0x31, 0x09, 0xc6, 0x08, 0x8e, 0x0a, 0xb6, 0x0b, 0x19, 0x0d, 0x12, 0x0a, + 0xe6, 0x08, 0x9e, 0x09, 0x17, 0x07, 0x5b, 0x07, 0x73, 0x05, 0xdb, 0x04, 0x09, 0x03, 0xe6, 0x01, + 0xdd, 0xfd, 0x3c, 0xf9, 0xdb, 0xf8, 0x12, 0xf6, 0x4b, 0xf5, 0x8e, 0xf3, 0x5b, 0xef, 0xb4, 0xee, + 0x99, 0xef, 0xdc, 0xf1, 0x9e, 0xf3, 0xd7, 0xf6, 0xfc, 0xf5, 0x9c, 0xf3, 0x03, 0xf4, 0x05, 0xf7, + 0x0d, 0xfc, 0xfd, 0xff, 0xe7, 0x02, 0xcf, 0x04, 0x91, 0x05, 0xa7, 0x05, 0xa5, 0x06, 0x82, 0x08, + 0x8d, 0x08, 0x85, 0x08, 0x7a, 0x0b, 0xe4, 0x0f, 0x64, 0x12, 0xb2, 0x10, 0xee, 0x10, 0x75, 0x0f, + 0xdf, 0x0f, 0xae, 0x0d, 0x54, 0x0c, 0xa8, 0x0c, 0xf7, 0x0c, 0x83, 0x0d, 0x50, 0x0d, 0x84, 0x0c, + 0xd7, 0x07, 0x4d, 0x07, 0x15, 0x07, 0xe4, 0x03, 0xfb, 0x02, 0x4c, 0xff, 0x49, 0xff, 0x91, 0x00, + 0xc0, 0x00, 0xf8, 0xfe, 0x87, 0xfa, 0x8e, 0xf6, 0x08, 0xf1, 0x3a, 0xef, 0x02, 0xec, 0x31, 0xeb, + 0xb9, 0xea, 0xed, 0xe8, 0x41, 0xe7, 0x51, 0xe7, 0xd0, 0xe8, 0xfc, 0xea, 0x7d, 0xeb, 0x1c, 0xed, + 0x60, 0xef, 0xc7, 0xf4, 0x3f, 0xf9, 0x6d, 0xfd, 0x18, 0x02, 0x96, 0x05, 0x4f, 0x08, 0xde, 0x09, + 0xdf, 0x0b, 0x7c, 0x0c, 0xbe, 0x0e, 0xdf, 0x0f, 0xdd, 0x0f, 0xba, 0x0f, 0x23, 0x0e, 0x78, 0x0e, + 0x01, 0x0f, 0xe7, 0x0c, 0x7d, 0x0b, 0x23, 0x0b, 0xd9, 0x0b, 0x01, 0x0d, 0x8a, 0x10, 0xde, 0x10, + 0x56, 0x0d, 0xa5, 0x09, 0xe0, 0x07, 0x66, 0x08, 0xdf, 0x09, 0xef, 0x09, 0x82, 0x08, 0x11, 0x07, + 0xf1, 0x05, 0xc1, 0x00, 0x48, 0xfd, 0x7a, 0xfa, 0x1c, 0xf8, 0xa5, 0xf3, 0x76, 0xf1, 0x5b, 0xf2, + 0x05, 0xf1, 0xf9, 0xf1, 0x68, 0xf0, 0xd1, 0xf1, 0x1c, 0xf2, 0x20, 0xf1, 0xcb, 0xef, 0x61, 0xf0, + 0x3c, 0xf4, 0xfe, 0xf5, 0x2a, 0xf9, 0xbf, 0xfa, 0xf0, 0xfb, 0x80, 0xfd, 0x1c, 0xfd, 0x96, 0xfd, + 0xd7, 0xfd, 0x71, 0xfe, 0xb2, 0xfd, 0xbf, 0xff, 0xf1, 0x03, 0xc9, 0x06, 0x8c, 0x07, 0xce, 0x05, + 0x45, 0x04, 0xd1, 0x03, 0x5f, 0x04, 0xdf, 0x06, 0x1d, 0x0b, 0xb0, 0x0f, 0xa8, 0x10, 0x83, 0x10, + 0x8f, 0x0f, 0xbb, 0x0f, 0x78, 0x11, 0x05, 0x0e, 0x58, 0x0d, 0xdf, 0x0c, 0x67, 0x0c, 0x0f, 0x0b, + 0x08, 0x0a, 0x38, 0x08, 0x1f, 0x04, 0xca, 0x01, 0x17, 0xfd, 0xaa, 0xf9, 0xfa, 0xf6, 0x62, 0xf2, + 0xd4, 0xee, 0x82, 0xea, 0xc6, 0xe9, 0xc2, 0xe8, 0xbd, 0xea, 0xa4, 0xea, 0xcc, 0xe9, 0xe1, 0xe8, + 0x90, 0xe8, 0xaa, 0xeb, 0xeb, 0xef, 0x45, 0xf5, 0x33, 0xf7, 0x4b, 0xf7, 0xaf, 0xf8, 0x8e, 0xf9, + 0x29, 0xfd, 0xfd, 0xfe, 0x68, 0x01, 0xa4, 0x04, 0xac, 0x04, 0xfd, 0x04, 0x51, 0x02, 0xb9, 0x04, + 0x74, 0x05, 0x96, 0x05, 0xa1, 0x05, 0x73, 0x07, 0x00, 0x0b, 0xaa, 0x0d, 0xfd, 0x0e, 0x2d, 0x0f, + 0x7e, 0x0e, 0x45, 0x0c, 0xe1, 0x09, 0xc8, 0x08, 0x71, 0x06, 0x32, 0x05, 0x6d, 0x04, 0x11, 0x03, + 0x63, 0x00, 0x21, 0xff, 0xc3, 0xfb, 0x35, 0xf8, 0xec, 0xf6, 0xeb, 0xf4, 0xd5, 0xf1, 0xe8, 0xef, + 0xed, 0xf0, 0x14, 0xf4, 0x7e, 0xf5, 0xee, 0xf3, 0xae, 0xf2, 0x3e, 0xf2, 0xa0, 0xf3, 0x27, 0xf3, + 0x95, 0xf6, 0x52, 0xfa, 0x05, 0xff, 0xb7, 0xff, 0x26, 0x00, 0xaf, 0x03, 0xe3, 0x05, 0xef, 0x06, + 0xef, 0x05, 0x6a, 0x07, 0x8a, 0x08, 0xed, 0x0a, 0x83, 0x0d, 0x83, 0x0e, 0x45, 0x10, 0x55, 0x0f, + 0xb6, 0x0e, 0x9f, 0x0d, 0xae, 0x0d, 0x43, 0x0e, 0xf5, 0x0c, 0x20, 0x0e, 0x88, 0x0d, 0x98, 0x10, + 0x68, 0x10, 0xc3, 0x0d, 0x5e, 0x0e, 0x7a, 0x0d, 0x92, 0x09, 0x97, 0x05, 0xee, 0x04, 0x60, 0x07, + 0x6a, 0x07, 0x2b, 0x06, 0x42, 0x01, 0xf6, 0xfd, 0xd5, 0xfa, 0x3c, 0xf9, 0x3a, 0xf7, 0x51, 0xf4, + 0x58, 0xf3, 0xa8, 0xef, 0x13, 0xed, 0xc0, 0xeb, 0x9d, 0xea, 0x6a, 0xe9, 0xd6, 0xe9, 0x76, 0xea, + 0x74, 0xec, 0x90, 0xf1, 0x4a, 0xf4, 0xcb, 0xf6, 0xe3, 0xfa, 0x3e, 0xfe, 0xef, 0x00, 0x28, 0x02, + 0xc5, 0x03, 0x84, 0x04, 0xc0, 0x05, 0x75, 0x05, 0xf7, 0x04, 0x0b, 0x05, 0x70, 0x04, 0x46, 0x03, + 0x20, 0x01, 0xff, 0xff, 0x9b, 0xfe, 0x34, 0xfc, 0x67, 0xfe, 0xe1, 0x01, 0x3a, 0x07, 0xfd, 0x07, + 0x70, 0x06, 0x09, 0x03, 0xfa, 0x01, 0x22, 0x04, 0xbe, 0x02, 0xc8, 0x04, 0xae, 0x05, 0xe0, 0x05, + 0x58, 0x03, 0x42, 0x02, 0xee, 0x03, 0xa6, 0x01, 0x2f, 0xff, 0x52, 0xfb, 0xa5, 0xfa, 0x3f, 0xfb, + 0x62, 0xfa, 0x9a, 0xfa, 0xd1, 0xfb, 0x9b, 0xfd, 0xdd, 0xfb, 0x26, 0xfb, 0x3d, 0xfb, 0x94, 0xfb, + 0x20, 0xfc, 0xec, 0xfc, 0x5b, 0xff, 0xdc, 0x02, 0x18, 0x05, 0x7a, 0x07, 0xe4, 0x08, 0xd8, 0x09, + 0x2e, 0x08, 0x64, 0x05, 0x76, 0x04, 0xfa, 0x06, 0x30, 0x09, 0x0f, 0x08, 0x58, 0x07, 0x34, 0x04, + 0x50, 0x03, 0x50, 0x03, 0xe8, 0x01, 0xe1, 0x02, 0xcc, 0x04, 0xb2, 0x06, 0x3c, 0x08, 0xd1, 0x09, + 0xa2, 0x0b, 0x74, 0x0b, 0xb2, 0x0b, 0xe7, 0x0a, 0x7c, 0x0b, 0x6f, 0x0a, 0xf1, 0x0a, 0x86, 0x0a, + 0x6e, 0x09, 0xff, 0x07, 0x3b, 0x06, 0xa9, 0x04, 0x36, 0x00, 0x6a, 0xfc, 0x41, 0xf9, 0xc6, 0xf5, + 0xe7, 0xf1, 0x5a, 0xee, 0x02, 0xed, 0xc5, 0xea, 0xac, 0xe9, 0x96, 0xe8, 0xd8, 0xe6, 0x74, 0xe6, + 0x98, 0xe3, 0x55, 0xe7, 0xc0, 0xec, 0xe6, 0xf2, 0x47, 0xf4, 0x90, 0xf3, 0x72, 0xf5, 0x9c, 0xf8, + 0xfc, 0xfa, 0x1a, 0xfd, 0xf7, 0x00, 0xbf, 0x03, 0x68, 0x03, 0xe3, 0x02, 0x6c, 0x02, 0xfa, 0x03, + 0x77, 0x02, 0x83, 0x01, 0xa3, 0x01, 0x52, 0x03, 0xf6, 0x04, 0x45, 0x07, 0xfe, 0x0a, 0xdb, 0x0b, + 0x3b, 0x0c, 0xbf, 0x0a, 0x90, 0x08, 0x69, 0x09, 0x00, 0x07, 0x06, 0x03, 0xcc, 0x00, 0x9d, 0xff, + 0x18, 0xff, 0xbb, 0xfc, 0xf5, 0xfc, 0x9c, 0xfa, 0xf2, 0xf8, 0xf3, 0xf3, 0xe4, 0xf0, 0xc5, 0xf0, + 0x29, 0xf1, 0x98, 0xf3, 0x05, 0xf4, 0x91, 0xf4, 0x6e, 0xf3, 0x5b, 0xf3, 0xad, 0xf3, 0xad, 0xf5, + 0x8d, 0xf8, 0xf8, 0xf8, 0x53, 0xfc, 0x4f, 0x00, 0xd1, 0x03, 0xdf, 0x05, 0xac, 0x07, 0x6f, 0x0b, + 0xc8, 0x0c, 0x97, 0x0e, 0x81, 0x0e, 0xfe, 0x10, 0x36, 0x14, 0x09, 0x14, 0x0b, 0x15, 0x63, 0x15, + 0x6a, 0x14, 0x02, 0x12, 0xc0, 0x0f, 0x11, 0x0f, 0xb0, 0x0d, 0x60, 0x0d, 0xf4, 0x0c, 0x73, 0x0d, + 0x74, 0x0d, 0x0e, 0x0d, 0x91, 0x0a, 0x78, 0x08, 0x9b, 0x06, 0x28, 0x03, 0x6a, 0x02, 0xd4, 0x02, + 0x8c, 0x01, 0x8e, 0xfd, 0xeb, 0xfa, 0xeb, 0xf8, 0xf3, 0xf6, 0x7b, 0xf6, 0xea, 0xf4, 0x1c, 0xf3, + 0x3d, 0xf0, 0xdf, 0xec, 0x4b, 0xed, 0x42, 0xed, 0x8e, 0xeb, 0x49, 0xe9, 0x23, 0xe8, 0x8b, 0xe8, + 0x0a, 0xe9, 0x55, 0xec, 0x41, 0xf1, 0x75, 0xf5, 0x5b, 0xfa, 0xc7, 0xfc, 0x24, 0x01, 0xe3, 0x04, + 0x40, 0x08, 0xe2, 0x08, 0x2d, 0x0b, 0x9d, 0x0d, 0xff, 0x0e, 0x9e, 0x0f, 0xc5, 0x0d, 0xeb, 0x0f, + 0xaf, 0x0f, 0x02, 0x0c, 0x79, 0x08, 0x3b, 0x07, 0x95, 0x09, 0x81, 0x0b, 0x5e, 0x0e, 0xd8, 0x0e, + 0x08, 0x0f, 0x9a, 0x0e, 0x1d, 0x0a, 0x0d, 0x0b, 0x02, 0x0c, 0xf6, 0x0a, 0x13, 0x08, 0xe7, 0x06, + 0x61, 0x06, 0xfd, 0x03, 0x69, 0x01, 0xf3, 0xff, 0xb9, 0xff, 0xa3, 0xfc, 0xe1, 0xf7, 0x64, 0xf6, + 0xe0, 0xf4, 0xf2, 0xf3, 0xc4, 0xf2, 0xaa, 0xf3, 0x26, 0xf4, 0x10, 0xf3, 0xba, 0xf0, 0xef, 0xed, + 0xee, 0xec, 0xfb, 0xeb, 0xa3, 0xed, 0x95, 0xef, 0x11, 0xf4, 0xc0, 0xf7, 0x9e, 0xf9, 0x88, 0xfb, + 0xde, 0xfa, 0x09, 0xfa, 0x04, 0xfd, 0x0b, 0x01, 0x42, 0x04, 0x02, 0x04, 0x41, 0x04, 0x67, 0x02, + 0xc4, 0x01, 0x8c, 0x02, 0xe0, 0x03, 0x77, 0x04, 0xe2, 0x03, 0x85, 0x05, 0x21, 0x08, 0x8a, 0x0c, + 0x53, 0x0c, 0xa2, 0x0c, 0xb5, 0x0e, 0x4b, 0x0e, 0x23, 0x0f, 0xa7, 0x0e, 0x72, 0x0d, 0xe6, 0x0c, + 0x40, 0x0c, 0xff, 0x09, 0x61, 0x05, 0x4f, 0x05, 0x62, 0x02, 0xf5, 0xff, 0xe1, 0xfa, 0x0e, 0xf6, + 0x01, 0xf4, 0xb8, 0xef, 0x07, 0xec, 0x01, 0xeb, 0x81, 0xea, 0xc4, 0xe7, 0xc9, 0xe3, 0x34, 0xe1, + 0x90, 0xe1, 0xd7, 0xe4, 0xe3, 0xe6, 0x3d, 0xeb, 0x73, 0xf0, 0x2d, 0xf3, 0x9c, 0xf4, 0xce, 0xf7, + 0x47, 0xfd, 0x30, 0x00, 0x90, 0x02, 0x3b, 0x05, 0x4d, 0x09, 0xdb, 0x0c, 0xaa, 0x0d, 0xd7, 0x0c, + 0xf6, 0x0c, 0x16, 0x0d, 0xa6, 0x0c, 0x49, 0x0b, 0x7d, 0x0d, 0xd8, 0x0f, 0xde, 0x13, 0x14, 0x17, + 0xbc, 0x16, 0xfe, 0x16, 0xfa, 0x16, 0x62, 0x14, 0x82, 0x10, 0xf6, 0x0d, 0xb4, 0x0a, 0x7c, 0x05, + 0x4e, 0x02, 0x2d, 0x00, 0xfc, 0xfe, 0xcd, 0xfb, 0xc8, 0xf7, 0x5b, 0xf3, 0x1e, 0xf1, 0xc0, 0xf0, + 0xa4, 0xee, 0x20, 0xee, 0x73, 0xed, 0x56, 0xed, 0x25, 0xed, 0xbb, 0xed, 0xdf, 0xee, 0xaf, 0xee, + 0x03, 0xf0, 0x06, 0xee, 0xf9, 0xef, 0xef, 0xf3, 0x78, 0xf6, 0xb4, 0xfa, 0x1e, 0xfd, 0x03, 0x00, + 0xb5, 0x02, 0x68, 0x04, 0x2f, 0x05, 0x08, 0x08, 0x80, 0x0a, 0xb9, 0x0b, 0x63, 0x0d, 0xa9, 0x0d, + 0x4b, 0x0e, 0xaa, 0x0d, 0xd3, 0x0b, 0xa0, 0x0a, 0xb0, 0x0a, 0x4b, 0x0b, 0x5c, 0x0b, 0x14, 0x0e, + 0x0b, 0x10, 0x92, 0x0f, 0x76, 0x0f, 0xfa, 0x0b, 0xd8, 0x0b, 0x76, 0x0d, 0x3c, 0x0e, 0x5b, 0x0c, + 0xbf, 0x0a, 0x3d, 0x09, 0x99, 0x04, 0x76, 0x02, 0x07, 0x02, 0x6d, 0x02, 0x4b, 0x02, 0x67, 0xfe, + 0x1c, 0xfc, 0x35, 0xf9, 0x72, 0xf7, 0xc8, 0xf4, 0x67, 0xf3, 0x60, 0xf2, 0xe3, 0xef, 0x8d, 0xed, + 0x6c, 0xea, 0xfd, 0xea, 0xbc, 0xec, 0xbb, 0xef, 0x64, 0xf2, 0x4f, 0xf5, 0x1e, 0xfa, 0x01, 0xfc, + 0x45, 0xfd, 0x84, 0xfd, 0x2f, 0xfe, 0xef, 0xff, 0x7c, 0x00, 0xa0, 0x03, 0x5f, 0x04, 0x0f, 0x06, + 0x3e, 0x03, 0x5c, 0xff, 0x26, 0xfe, 0xd2, 0xfd, 0x23, 0xfe, 0x36, 0x00, 0x7c, 0x02, 0x15, 0x04, + 0xfe, 0x04, 0x6c, 0x04, 0x49, 0x06, 0x70, 0x08, 0x5c, 0x07, 0x15, 0x06, 0x2b, 0x06, 0xc7, 0x06, + 0x41, 0x05, 0xb4, 0x03, 0x69, 0x02, 0xe5, 0x00, 0xb7, 0x01, 0x1b, 0x01, 0x0b, 0x00, 0x6d, 0xfe, + 0x56, 0xfd, 0x6b, 0xfb, 0x69, 0xf9, 0xe3, 0xf8, 0x6c, 0xfa, 0x26, 0xfc, 0x1b, 0xfd, 0xb9, 0xfa, + 0x60, 0xf9, 0xc9, 0xf6, 0xdb, 0xf5, 0xe7, 0xf7, 0x82, 0xfa, 0x42, 0xff, 0x23, 0x02, 0x13, 0x04, + 0xbd, 0x04, 0x6a, 0x06, 0x52, 0x08, 0xaa, 0x0a, 0xf9, 0x0c, 0x1f, 0x0d, 0x87, 0x0d, 0xba, 0x0b, + 0x1f, 0x0a, 0x98, 0x0a, 0xf5, 0x09, 0xf1, 0x09, 0x4d, 0x07, 0x7a, 0x07, 0xfd, 0x08, 0xe2, 0x0a, + 0xb1, 0x0c, 0x52, 0x0c, 0xe9, 0x0d, 0x4b, 0x0e, 0xf2, 0x0e, 0x31, 0x0f, 0x00, 0x10, 0xf2, 0x11, + 0xef, 0x0e, 0xc9, 0x0c, 0x58, 0x0b, 0x01, 0x09, 0x31, 0x06, 0x9f, 0x03, 0x39, 0x00, 0xc3, 0xfb, + 0x06, 0xf8, 0xb2, 0xf3, 0x23, 0xf2, 0xc6, 0xf0, 0x83, 0xee, 0x6e, 0xe9, 0x2b, 0xe6, 0x83, 0xe4, + 0x8e, 0xe3, 0x95, 0xe3, 0x5c, 0xe3, 0x2b, 0xe4, 0x0f, 0xe7, 0xd5, 0xe8, 0x0d, 0xed, 0x79, 0xf2, + 0xfd, 0xf5, 0xda, 0xf6, 0x52, 0xf8, 0x75, 0xfa, 0xb4, 0xfc, 0x67, 0x00, 0x33, 0x02, 0xae, 0x03, + 0x6f, 0x04, 0xda, 0x01, 0xf1, 0x00, 0xba, 0x00, 0xd1, 0x00, 0x1e, 0x00, 0x84, 0x02, 0x83, 0x05, + 0x5e, 0x09, 0x21, 0x0b, 0x02, 0x0a, 0x43, 0x0c, 0xaa, 0x0a, 0x8f, 0x08, 0xd0, 0x06, 0xf2, 0x04, + 0x31, 0x03, 0xe4, 0x00, 0xab, 0xff, 0xbc, 0xfb, 0x97, 0xf8, 0x95, 0xf6, 0x56, 0xf5, 0xc9, 0xf5, + 0x57, 0xf4, 0x83, 0xf4, 0x6e, 0xf1, 0xf3, 0xee, 0xbf, 0xef, 0xcf, 0xf1, 0xb9, 0xf4, 0x35, 0xf6, + 0xe7, 0xf5, 0xa0, 0xf5, 0x73, 0xf5, 0x10, 0xf6, 0x1b, 0xf8, 0xab, 0xfa, 0xe3, 0xfd, 0x7d, 0x01, + 0x27, 0x04, 0x2b, 0x06, 0x6f, 0x08, 0x2c, 0x0b, 0xde, 0x0c, 0x15, 0x0d, 0x3e, 0x0f, 0x8c, 0x10, + 0xf6, 0x11, 0x13, 0x11, 0x82, 0x0d, 0xec, 0x0a, 0xdb, 0x08, 0x2d, 0x07, 0x13, 0x08, 0x44, 0x0b, + 0x81, 0x0d, 0xa9, 0x0b, 0x41, 0x09, 0x2e, 0x07, 0x55, 0x07, 0x3d, 0x08, 0x26, 0x09, 0xb4, 0x0b, + 0xaa, 0x0a, 0xed, 0x05, 0xec, 0x01, 0x92, 0x01, 0xb6, 0xff, 0xfa, 0xfc, 0xed, 0xfb, 0xc9, 0xfa, + 0xc0, 0xfa, 0x9f, 0xf8, 0x43, 0xf6, 0x7c, 0xf5, 0x18, 0xf4, 0x1a, 0xf4, 0x9b, 0xf2, 0x5f, 0xf3, + 0xd0, 0xf0, 0x1c, 0xf0, 0xe7, 0xee, 0x89, 0xef, 0x4f, 0xf2, 0xc5, 0xf4, 0x85, 0xf9, 0x4c, 0xfe, + 0x31, 0x02, 0x14, 0x05, 0xd6, 0x05, 0xcc, 0x06, 0x8e, 0x09, 0x67, 0x0d, 0x1c, 0x11, 0x35, 0x12, + 0x0b, 0x12, 0x26, 0x11, 0xe7, 0x0e, 0x19, 0x0d, 0x4d, 0x0d, 0x24, 0x0d, 0xdd, 0x0c, 0x4f, 0x0b, + 0x4e, 0x0c, 0x8f, 0x0f, 0x84, 0x10, 0x18, 0x11, 0xf7, 0x10, 0x4d, 0x0f, 0x75, 0x0d, 0x5b, 0x0b, + 0x3c, 0x0b, 0x5a, 0x08, 0x92, 0x04, 0x0c, 0x00, 0xc9, 0xfd, 0x53, 0xfc, 0xa4, 0xfa, 0xfc, 0xfa, + 0x7b, 0xf8, 0x13, 0xf7, 0x31, 0xf5, 0x49, 0xf2, 0x05, 0xf1, 0x44, 0xf1, 0x93, 0xf1, 0x76, 0xf1, + 0xfc, 0xf0, 0x34, 0xed, 0x3b, 0xeb, 0xcb, 0xec, 0x5e, 0xed, 0x61, 0xee, 0xb1, 0xee, 0xd8, 0xf1, + 0x80, 0xf5, 0xc8, 0xf8, 0xe9, 0xfc, 0x1b, 0x00, 0x2e, 0x03, 0xe0, 0x02, 0xd1, 0x03, 0x16, 0x06, + 0xa3, 0x07, 0xf9, 0x07, 0xc7, 0x05, 0xb5, 0x04, 0x1e, 0x03, 0x65, 0x02, 0x71, 0x02, 0xc9, 0x03, + 0x85, 0x06, 0x13, 0x09, 0xd2, 0x09, 0x3c, 0x0a, 0xd4, 0x0b, 0xe0, 0x0c, 0x12, 0x0d, 0xe1, 0x0c, + 0x48, 0x0f, 0xc6, 0x0e, 0x18, 0x0c, 0xdf, 0x08, 0xa5, 0x06, 0xe0, 0x04, 0xf1, 0x00, 0x47, 0xfc, + 0x5b, 0xf9, 0xe2, 0xf7, 0xc7, 0xf6, 0x7c, 0xf3, 0x88, 0xef, 0xf1, 0xec, 0xf1, 0xe9, 0x02, 0xe8, + 0x07, 0xe8, 0xf4, 0xe8, 0x1e, 0xe8, 0x74, 0xe4, 0x1f, 0xe4, 0x32, 0xe6, 0x08, 0xec, 0x06, 0xf1, + 0x28, 0xf6, 0x0d, 0xfb, 0x33, 0xfe, 0x35, 0x00, 0x6c, 0x01, 0x45, 0x05, 0xb1, 0x07, 0x3c, 0x0b, + 0x8a, 0x0d, 0x82, 0x0e, 0x4d, 0x0f, 0x82, 0x0d, 0xa1, 0x0c, 0x4f, 0x0b, 0x96, 0x0a, 0x5c, 0x0c, + 0xc3, 0x0d, 0xd7, 0x11, 0x23, 0x13, 0x57, 0x14, 0xe4, 0x12, 0xf8, 0x0f, 0x7a, 0x0d, 0x2b, 0x0c, + 0x1e, 0x0c, 0x83, 0x08, 0xfb, 0x02, 0xe5, 0xfc, 0x6c, 0xf7, 0x3c, 0xf4, 0x92, 0xf1, 0x45, 0xf2, + 0x0a, 0xf2, 0x78, 0xee, 0x73, 0xeb, 0x09, 0xe9, 0xf8, 0xe7, 0xe5, 0xe8, 0xdc, 0xe9, 0xc3, 0xea, + 0xd5, 0xec, 0x55, 0xed, 0x32, 0xee, 0xe7, 0xed, 0x96, 0xee, 0x2f, 0xf1, 0xcd, 0xf3, 0x75, 0xf7, + 0x1a, 0xfc, 0x0c, 0x01, 0x93, 0x05, 0x35, 0x08, 0x6b, 0x0b, 0x31, 0x0e, 0xce, 0x10, 0x83, 0x11, + 0x4f, 0x13, 0x7c, 0x17, 0x43, 0x17, 0x8b, 0x13, 0xcc, 0x0f, 0x4b, 0x0f, 0x4e, 0x10, 0x2f, 0x11, + 0x67, 0x11, 0xda, 0x12, 0x85, 0x14, 0x26, 0x12, 0xc1, 0x11, 0x18, 0x13, 0x54, 0x13, 0x61, 0x13, + 0x49, 0x11, 0xe0, 0x11, 0x9a, 0x0f, 0xcb, 0x0d, 0xe8, 0x0a, 0x23, 0x08, 0xbb, 0x05, 0xb5, 0x02, + 0x76, 0x01, 0x8c, 0xfe, 0x00, 0xfd, 0xf6, 0xfb, 0xda, 0xf8, 0x2d, 0xf6, 0x3d, 0xf5, 0x70, 0xf5, + 0x3d, 0xf4, 0x23, 0xf1, 0x8c, 0xef, 0x71, 0xed, 0x54, 0xec, 0xdb, 0xeb, 0xfb, 0xec, 0x51, 0xf1, + 0x03, 0xf5, 0xe6, 0xf5, 0x3d, 0xf7, 0xea, 0xf8, 0x78, 0xfb, 0xe5, 0xfd, 0x24, 0xff, 0x9c, 0xff, + 0x43, 0x00, 0x6d, 0x00, 0x44, 0x02, 0xb2, 0x02, 0xe2, 0x02, 0x76, 0x01, 0x9a, 0xff, 0xf1, 0xfe, + 0xcb, 0xff, 0x68, 0x02, 0xe4, 0x05, 0x89, 0x08, 0x53, 0x09, 0x91, 0x0a, 0x67, 0x0b, 0x2d, 0x09, + 0x32, 0x09, 0x69, 0x0a, 0xd7, 0x08, 0xd7, 0x05, 0x09, 0x03, 0xec, 0x01, 0xe4, 0x00, 0x12, 0x00, + 0xbd, 0xfe, 0x3e, 0xff, 0x67, 0xfe, 0x21, 0xfc, 0x65, 0xfa, 0x35, 0xf8, 0x46, 0xf8, 0xb5, 0xf6, + 0x1b, 0xf6, 0xcf, 0xf5, 0xed, 0xf5, 0xfb, 0xf6, 0xfc, 0xf3, 0x67, 0xf2, 0x61, 0xf0, 0x78, 0xf0, + 0xf2, 0xf2, 0x21, 0xf7, 0x6c, 0xfc, 0x87, 0xff, 0x62, 0x00, 0x8d, 0xff, 0xb1, 0x01, 0x15, 0x05, + 0x57, 0x06, 0x9a, 0x07, 0xfa, 0x08, 0x03, 0x08, 0x77, 0x06, 0xb9, 0x03, 0x1a, 0x02, 0xa3, 0x02, + 0x7a, 0x03, 0x25, 0x04, 0xad, 0x07, 0x98, 0x0a, 0x28, 0x0c, 0x40, 0x0d, 0xa8, 0x0d, 0x82, 0x0e, + 0x53, 0x0f, 0xf3, 0x10, 0xce, 0x11, 0xfb, 0x11, 0x33, 0x10, 0xb0, 0x0b, 0xf2, 0x07, 0x0b, 0x03, + 0x2d, 0x01, 0x11, 0xff, 0x95, 0xfb, 0xa0, 0xf8, 0x61, 0xf4, 0x79, 0xf0, 0x31, 0xed, 0x73, 0xec, + 0xad, 0xec, 0x33, 0xed, 0xd1, 0xea, 0x23, 0xe8, 0x91, 0xe5, 0x0e, 0xe4, 0x56, 0xe5, 0xdc, 0xe7, + 0x10, 0xec, 0xbb, 0xf1, 0x43, 0xf5, 0x66, 0xf9, 0xdc, 0xfa, 0x4b, 0xfd, 0x09, 0xfe, 0x9a, 0xff, + 0xdf, 0x02, 0xd5, 0x04, 0x14, 0x08, 0xc4, 0x09, 0x30, 0x09, 0x94, 0x07, 0xc7, 0x05, 0xdf, 0x04, + 0x1b, 0x05, 0x11, 0x07, 0xc2, 0x09, 0xb8, 0x0c, 0x32, 0x0d, 0xf7, 0x0a, 0x11, 0x0c, 0x77, 0x0d, + 0x20, 0x0c, 0xd9, 0x0a, 0xbe, 0x07, 0x99, 0x02, 0xbd, 0xfe, 0xcf, 0xfb, 0x2f, 0xfb, 0x90, 0xf9, + 0x55, 0xf7, 0x1a, 0xf5, 0x93, 0xf3, 0x4b, 0xf2, 0x1d, 0xf2, 0xcf, 0xf1, 0x23, 0xf2, 0x40, 0xf2, + 0x56, 0xf3, 0x85, 0xf4, 0x44, 0xf5, 0x9b, 0xf6, 0x47, 0xf6, 0x61, 0xf6, 0x96, 0xf6, 0x81, 0xf8, + 0x9f, 0xfb, 0xd2, 0xfe, 0x58, 0x02, 0x8a, 0x04, 0x11, 0x08, 0x58, 0x0a, 0xc5, 0x0b, 0xb6, 0x0d, + 0xc0, 0x0f, 0x2b, 0x11, 0x32, 0x10, 0x46, 0x10, 0x82, 0x0d, 0x15, 0x0c, 0xbb, 0x09, 0x02, 0x07, + 0x1e, 0x06, 0x5a, 0x03, 0x5d, 0x03, 0xf0, 0x04, 0x03, 0x09, 0x0e, 0x0b, 0x7f, 0x09, 0xfc, 0x09, + 0xa3, 0x09, 0x43, 0x0a, 0xa0, 0x0b, 0x1d, 0x0c, 0xee, 0x0c, 0x52, 0x0b, 0x77, 0x09, 0x82, 0x06, + 0x60, 0x05, 0x25, 0x04, 0x76, 0x01, 0xc7, 0x00, 0x23, 0x00, 0x81, 0xfe, 0x7b, 0xfe, 0xec, 0xfd, + 0xb7, 0xfd, 0x1f, 0xfe, 0x25, 0xfc, 0x0f, 0xf9, 0xf0, 0xf7, 0xbd, 0xf6, 0x9e, 0xf6, 0x33, 0xf5, + 0xfb, 0xf3, 0xdb, 0xf4, 0x81, 0xf7, 0x77, 0xf9, 0xcc, 0xfb, 0x5e, 0xfe, 0x2c, 0xff, 0x1d, 0xfe, + 0x54, 0xfe, 0x20, 0x00, 0xdc, 0x03, 0x05, 0x07, 0x4d, 0x07, 0x11, 0x05, 0xf8, 0x02, 0x43, 0x01, + 0x9f, 0xff, 0x8a, 0x00, 0xaa, 0x00, 0x6c, 0x02, 0x51, 0x04, 0xfe, 0x05, 0x51, 0x06, 0x43, 0x06, + 0x2a, 0x06, 0x8e, 0x04, 0x4e, 0x05, 0x93, 0x04, 0xa5, 0x02, 0x5e, 0x01, 0x93, 0xfe, 0x48, 0xfe, + 0x8b, 0xfb, 0xba, 0xfa, 0xb5, 0xf9, 0x09, 0xf9, 0xd2, 0xfa, 0xda, 0xfa, 0xb5, 0xf7, 0xff, 0xf4, + 0x74, 0xf4, 0x19, 0xf5, 0x16, 0xf5, 0x0f, 0xf5, 0x3f, 0xf5, 0x08, 0xf4, 0xf4, 0xef, 0xb7, 0xec, + 0x11, 0xef, 0xd7, 0xf1, 0xc7, 0xf4, 0xc6, 0xf7, 0x6c, 0xfa, 0x89, 0xfd, 0xbe, 0x00, 0x28, 0x03, + 0xe7, 0x06, 0x67, 0x0b, 0x34, 0x0c, 0xf8, 0x0c, 0x73, 0x0d, 0xf3, 0x0b, 0x8b, 0x0a, 0x20, 0x07, + 0x55, 0x04, 0x8e, 0x03, 0x1c, 0x04, 0x6c, 0x04, 0x34, 0x06, 0x2c, 0x09, 0x4e, 0x09, 0x3a, 0x0a, + 0xb5, 0x09, 0x04, 0x0a, 0x01, 0x0c, 0x44, 0x0d, 0x88, 0x0b, 0x1c, 0x08, 0x21, 0x06, 0x8f, 0x03, + 0x48, 0x00, 0xc3, 0xfd, 0x78, 0xfb, 0xe8, 0xf6, 0xba, 0xf1, 0xf2, 0xf0, 0x82, 0xf0, 0xee, 0xf1, + 0x44, 0xf0, 0xb0, 0xef, 0x95, 0xef, 0x57, 0xed, 0xec, 0xec, 0x7b, 0xeb, 0xeb, 0xeb, 0xc9, 0xeb, + 0xc2, 0xeb, 0xca, 0xee, 0x97, 0xf1, 0xd6, 0xf5, 0x4d, 0xfa, 0x7b, 0xfe, 0xe1, 0x00, 0x24, 0x02, + 0xce, 0x05, 0xf6, 0x08, 0xab, 0x0b, 0xc5, 0x0d, 0x9d, 0x10, 0xdf, 0x11, 0xfc, 0x0e, 0xbd, 0x0b, + 0xa5, 0x0b, 0x86, 0x0b, 0xdc, 0x09, 0x71, 0x08, 0xc4, 0x08, 0x16, 0x0a, 0xdc, 0x0b, 0x35, 0x0c, + 0x4e, 0x0e, 0x9c, 0x0d, 0xfa, 0x09, 0x17, 0x06, 0x5e, 0x03, 0x4c, 0x01, 0xbd, 0xfe, 0x69, 0xfc, + 0x74, 0xf7, 0xa9, 0xf4, 0xea, 0xf3, 0x61, 0xf1, 0xd9, 0xf0, 0xcc, 0xf1, 0x8e, 0xf2, 0x06, 0xf2, + 0xd1, 0xf1, 0xf6, 0xf2, 0xb3, 0xf4, 0x50, 0xf6, 0xbf, 0xf4, 0xed, 0xf5, 0x40, 0xf7, 0xfe, 0xf6, + 0x67, 0xf6, 0x5d, 0xf8, 0x16, 0xfc, 0x82, 0xfd, 0xc8, 0xff, 0x8e, 0x02, 0x0a, 0x09, 0x67, 0x0d, + 0x4e, 0x0d, 0x6a, 0x0f, 0x5b, 0x10, 0x5b, 0x11, 0xe4, 0x11, 0xff, 0x11, 0x8e, 0x11, 0xf3, 0x0d, + 0x5d, 0x09, 0xe5, 0x05, 0xf5, 0x04, 0xfe, 0x05, 0x1f, 0x08, 0x55, 0x0b, 0x74, 0x0c, 0xf2, 0x0b, + 0x54, 0x0c, 0x76, 0x0c, 0x28, 0x0d, 0x4e, 0x0d, 0x70, 0x0e, 0xfc, 0x0d, 0xd4, 0x0b, 0xe0, 0x09, + 0x95, 0x07, 0xc8, 0x03, 0xbe, 0x00, 0xa1, 0xfe, 0x2a, 0xfc, 0x78, 0xfb, 0xe8, 0xfa, 0xa5, 0xf9, + 0xda, 0xf9, 0x33, 0xfa, 0x46, 0xf9, 0xd0, 0xf6, 0x4c, 0xf5, 0xdf, 0xf3, 0x5c, 0xf2, 0xca, 0xef, + 0x67, 0xeb, 0x0d, 0xea, 0xed, 0xe9, 0xae, 0xeb, 0xe3, 0xed, 0x68, 0xf1, 0xa4, 0xf2, 0x83, 0xf3, + 0xa2, 0xf4, 0x7d, 0xf6, 0xf9, 0xfa, 0xc1, 0xfd, 0x98, 0xff, 0x6d, 0x01, 0xe9, 0x02, 0x08, 0x03, + 0x83, 0x01, 0x51, 0x03, 0xd2, 0x03, 0x3a, 0x04, 0x7f, 0x03, 0xe6, 0x04, 0xdd, 0x09, 0x6b, 0x0b, + 0xf5, 0x0c, 0x39, 0x0e, 0xac, 0x0e, 0xc5, 0x0f, 0xd8, 0x0e, 0xbe, 0x0e, 0xc4, 0x0d, 0x90, 0x0c, + 0x08, 0x0b, 0x62, 0x08, 0x98, 0x07, 0xc0, 0x06, 0xd8, 0x05, 0xd2, 0x04, 0xb5, 0x03, 0xb1, 0x00, + 0x8c, 0xfd, 0xfc, 0xfc, 0xef, 0xfd, 0x5e, 0xfd, 0x4f, 0xfb, 0x14, 0xf8, 0xc2, 0xf5, 0x25, 0xf5, + 0xa8, 0xf3, 0x2c, 0xf1, 0x65, 0xf0, 0x06, 0xf1, 0xbc, 0xf1, 0xd4, 0xf2, 0x4d, 0xf5, 0x68, 0xf9, + 0x86, 0xfc, 0x71, 0xff, 0x70, 0x01, 0xe2, 0x03, 0x82, 0x05, 0x04, 0x06, 0x18, 0x06, 0xb4, 0x05, + 0x49, 0x05, 0x2e, 0x04, 0x1f, 0x04, 0xf0, 0x02, 0xa0, 0x03, 0xac, 0x05, 0xe0, 0x06, 0xa4, 0x08, + 0xdf, 0x09, 0x03, 0x0d, 0xb6, 0x0e, 0x74, 0x10, 0xe4, 0x10, 0x46, 0x10, 0x1b, 0x11, 0x91, 0x0f, + 0x74, 0x10, 0xc8, 0x0f, 0x26, 0x0c, 0x5d, 0x08, 0xdd, 0x01, 0xab, 0xfe, 0x49, 0xfe, 0xc0, 0xfd, + 0xf3, 0xfb, 0x42, 0xf8, 0xbf, 0xf6, 0xd5, 0xf4, 0x7b, 0xf3, 0x15, 0xf1, 0x37, 0xf0, 0x18, 0xef, + 0x34, 0xec, 0xce, 0xe9, 0x9e, 0xe8, 0xaa, 0xe8, 0xd8, 0xe9, 0x0e, 0xeb, 0xa0, 0xed, 0x1d, 0xef, + 0xb7, 0xf0, 0xd8, 0xf1, 0x72, 0xf4, 0xee, 0xf6, 0x7f, 0xf9, 0x09, 0xfc, 0x07, 0xff, 0x49, 0x03, + 0x71, 0x05, 0x20, 0x05, 0x23, 0x04, 0x84, 0x02, 0xa0, 0x01, 0x10, 0x02, 0xf8, 0x04, 0xd9, 0x07, + 0x9b, 0x09, 0x5c, 0x09, 0xa4, 0x08, 0xa0, 0x09, 0x74, 0x09, 0x07, 0x0a, 0x3a, 0x09, 0xa5, 0x07, + 0x8b, 0x05, 0xda, 0x03, 0x2a, 0x01, 0x22, 0x00, 0xd5, 0x00, 0x83, 0xff, 0xe7, 0xfe, 0x58, 0xfe, + 0x3f, 0xfe, 0x55, 0xfc, 0xfe, 0xf9, 0x77, 0xfa, 0x44, 0xf9, 0xf1, 0xf9, 0xc7, 0xf9, 0x62, 0xfa, + 0x22, 0xfb, 0x67, 0xf9, 0x09, 0xf8, 0xe8, 0xf5, 0x1f, 0xf5, 0x91, 0xf5, 0xc1, 0xf7, 0xf1, 0xfa, + 0x6b, 0xfc, 0x5d, 0xfc, 0xb7, 0xfb, 0x36, 0xfc, 0x1c, 0xfe, 0xed, 0xff, 0x79, 0x02, 0x6b, 0x01, + 0xfd, 0xff, 0x1e, 0xff, 0x44, 0xfe, 0xbf, 0xfd, 0xbc, 0xfd, 0x4a, 0xff, 0x11, 0x01, 0x30, 0x02, + 0xb6, 0x02, 0x12, 0x05, 0x71, 0x06, 0x79, 0x07, 0x67, 0x09, 0x23, 0x0b, 0x0a, 0x0e, 0xf6, 0x0f, + 0x3b, 0x11, 0xf2, 0x11, 0x94, 0x0f, 0x50, 0x0e, 0x7c, 0x0d, 0x65, 0x0d, 0x5d, 0x0c, 0xcd, 0x0c, + 0xec, 0x0c, 0x3e, 0x0b, 0x96, 0x09, 0x0e, 0x09, 0xf7, 0x08, 0x0f, 0x07, 0x85, 0x04, 0xfb, 0x01, + 0x14, 0xfe, 0x97, 0xfa, 0x02, 0xf7, 0xbf, 0xf5, 0xd0, 0xf4, 0x23, 0xf3, 0x39, 0xf1, 0x58, 0xf1, + 0x9a, 0xf3, 0x20, 0xf3, 0xd2, 0xf4, 0x05, 0xf6, 0xd4, 0xf6, 0xc1, 0xf7, 0xd7, 0xf8, 0x41, 0xfc, + 0xb2, 0xff, 0xc0, 0x02, 0x99, 0x04, 0xfd, 0x04, 0x0e, 0x05, 0xf5, 0x03, 0x3d, 0x05, 0xa7, 0x06, + 0xe1, 0x08, 0xec, 0x0a, 0x9b, 0x0c, 0x1c, 0x0d, 0xdd, 0x0d, 0x39, 0x0f, 0x14, 0x10, 0xd8, 0x0e, + 0x3c, 0x0d, 0xe6, 0x0d, 0x47, 0x0e, 0x60, 0x0c, 0x5e, 0x0b, 0x8a, 0x0b, 0xc4, 0x09, 0xd5, 0x06, + 0xcb, 0x05, 0x7b, 0x06, 0xd8, 0x03, 0x9e, 0xff, 0xd1, 0xfa, 0xc4, 0xf7, 0xaf, 0xf5, 0x35, 0xf4, + 0x4e, 0xf4, 0xfe, 0xf2, 0x71, 0xf0, 0x8a, 0xeb, 0xd9, 0xe8, 0x62, 0xe8, 0x01, 0xe9, 0x51, 0xea, + 0xea, 0xeb, 0xaa, 0xee, 0x16, 0xf0, 0xc5, 0xf2, 0xf7, 0xf3, 0x17, 0xf4, 0x39, 0xf5, 0x87, 0xf6, + 0x12, 0xf8, 0xd7, 0xf8, 0x92, 0xfa, 0x73, 0xfb, 0xff, 0xfb, 0x52, 0xfc, 0xf3, 0xfb, 0xd1, 0xff, + 0xe9, 0x02, 0x1d, 0x05, 0x1b, 0x08, 0xca, 0x08, 0xf5, 0x08, 0x1f, 0x07, 0xcb, 0x08, 0x94, 0x0b, + 0xb7, 0x0d, 0xe3, 0x0e, 0x4b, 0x0e, 0x6a, 0x0c, 0xe6, 0x09, 0x23, 0x08, 0xf4, 0x06, 0x65, 0x06, + 0x83, 0x06, 0x3a, 0x06, 0xe1, 0x04, 0xe5, 0x01, 0x7f, 0x00, 0xe4, 0xff, 0x86, 0xfe, 0xb0, 0xfc, + 0x4a, 0xfb, 0x56, 0xfa, 0x58, 0xf9, 0x59, 0xf5, 0x01, 0xf2, 0xd5, 0xf2, 0x2c, 0xf4, 0xcf, 0xf3, + 0xf4, 0xf5, 0x15, 0xf9, 0x63, 0xfa, 0x16, 0xfa, 0x99, 0xf9, 0xfc, 0xfa, 0xe6, 0xfb, 0x68, 0xfe, + 0xad, 0x00, 0xb5, 0x04, 0xcb, 0x05, 0xfa, 0x03, 0x07, 0x03, 0xa1, 0x03, 0x69, 0x05, 0x75, 0x05, + 0x07, 0x05, 0x66, 0x04, 0x77, 0x05, 0xa9, 0x06, 0x9a, 0x05, 0x4a, 0x05, 0x0f, 0x04, 0xcd, 0x03, + 0xc3, 0x00, 0xc0, 0xfe, 0x7e, 0xfe, 0x57, 0xfd, 0xa2, 0xfd, 0x3c, 0xfc, 0x6a, 0xfc, 0xbd, 0xfd, + 0x93, 0xfe, 0x97, 0xff, 0x8a, 0xff, 0x97, 0xff, 0xe6, 0xfd, 0x03, 0xfc, 0x15, 0xfc, 0x90, 0xfc, + 0x22, 0xfe, 0x40, 0xfe, 0x15, 0xff, 0x1b, 0xff, 0xdc, 0xfd, 0x81, 0xfc, 0x90, 0xfc, 0xfc, 0xfd, + 0xaa, 0xfd, 0xc9, 0xfd, 0xd5, 0xfd, 0xf0, 0xfe, 0xdf, 0x00, 0x6f, 0x01, 0x48, 0x00, 0x05, 0xff, + 0x39, 0xfe, 0xca, 0xfe, 0x55, 0x00, 0x59, 0x00, 0x76, 0xff, 0xe0, 0x00, 0x26, 0x01, 0xac, 0x01, + 0x9f, 0x03, 0x90, 0x06, 0x7d, 0x09, 0xe2, 0x0a, 0xb4, 0x0b, 0x07, 0x0c, 0xd9, 0x0c, 0x5f, 0x0d, + 0x39, 0x0e, 0x13, 0x10, 0xcc, 0x10, 0x79, 0x10, 0x5b, 0x0e, 0xe9, 0x0e, 0x74, 0x0f, 0x8b, 0x0e, + 0xb7, 0x0c, 0x08, 0x0c, 0x89, 0x0d, 0x12, 0x0d, 0x45, 0x0c, 0xa9, 0x09, 0x37, 0x08, 0xb0, 0x03, + 0xc6, 0xfe, 0xe3, 0xfc, 0x7c, 0xfa, 0xa3, 0xf8, 0xae, 0xf3, 0x4b, 0xed, 0x1a, 0xea, 0x8d, 0xe8, + 0x6f, 0xe8, 0x73, 0xe8, 0xb9, 0xe9, 0xf2, 0xe9, 0x54, 0xe9, 0xb1, 0xe8, 0x6d, 0xe8, 0xf6, 0xe9, + 0x35, 0xec, 0xac, 0xee, 0x75, 0xf2, 0x79, 0xf6, 0x4d, 0xf9, 0xa3, 0xf9, 0xb6, 0xfa, 0x08, 0xfd, + 0x0e, 0xff, 0xec, 0x00, 0x60, 0x03, 0x59, 0x07, 0xa7, 0x0a, 0x64, 0x0b, 0x21, 0x0b, 0x56, 0x0c, + 0x2e, 0x0d, 0x21, 0x0d, 0xb4, 0x0e, 0xa9, 0x0e, 0x31, 0x0d, 0x83, 0x0b, 0x79, 0x09, 0xd3, 0x08, + 0x11, 0x0a, 0x13, 0x0c, 0x3a, 0x0c, 0x3b, 0x0b, 0x30, 0x07, 0x49, 0x04, 0x44, 0x02, 0xaa, 0xff, + 0x78, 0xff, 0xa0, 0xff, 0x7d, 0xfe, 0x09, 0xfc, 0x9c, 0xf8, 0x70, 0xf5, 0x06, 0xf4, 0xc9, 0xf3, + 0x5d, 0xf2, 0x2c, 0xf3, 0x24, 0xf5, 0xd2, 0xf6, 0x01, 0xf8, 0xd6, 0xf8, 0x4e, 0xfa, 0x9e, 0xf8, + 0xbc, 0xf8, 0xbc, 0xf9, 0x87, 0xfb, 0x25, 0xfd, 0xed, 0xfc, 0x6b, 0xfc, 0x1c, 0xfc, 0xba, 0xfd, + 0x21, 0x00, 0x40, 0x02, 0xf5, 0x04, 0xd5, 0x06, 0xf1, 0x07, 0x01, 0x08, 0xb9, 0x08, 0x7a, 0x0b, + 0xfe, 0x0d, 0x76, 0x0d, 0x39, 0x0c, 0x65, 0x0d, 0x92, 0x0d, 0xa2, 0x0b, 0x24, 0x0a, 0xba, 0x08, + 0x90, 0x07, 0x29, 0x06, 0x2c, 0x06, 0xc6, 0x07, 0xd1, 0x07, 0x76, 0x06, 0x52, 0x05, 0xe2, 0x05, + 0x35, 0x03, 0xd6, 0x02, 0xb8, 0x01, 0x40, 0x00, 0xeb, 0xfc, 0xe0, 0xf8, 0x47, 0xf5, 0x2d, 0xf3, + 0xec, 0xf2, 0xb4, 0xf1, 0x89, 0xf2, 0xe4, 0xf2, 0xf9, 0xf1, 0x91, 0xf2, 0x09, 0xf2, 0x10, 0xf2, + 0xce, 0xf1, 0xed, 0xf1, 0xa3, 0xf1, 0x3c, 0xf2, 0x07, 0xf4, 0x9b, 0xf4, 0xab, 0xf5, 0xd2, 0xf4, + 0x96, 0xf4, 0xb6, 0xf3, 0x78, 0xf4, 0xce, 0xf7, 0xe6, 0xfb, 0xae, 0x00, 0xe6, 0x01, 0x3a, 0x02, + 0x34, 0x04, 0x55, 0x05, 0xdc, 0x05, 0xb8, 0x05, 0x08, 0x07, 0x2e, 0x07, 0x8d, 0x06, 0x4f, 0x06, + 0xcd, 0x06, 0xfc, 0x07, 0xd8, 0x09, 0x24, 0x0b, 0x6e, 0x0b, 0x11, 0x0b, 0xaa, 0x0a, 0x2f, 0x0b, + 0x9f, 0x0a, 0x21, 0x09, 0x3d, 0x08, 0x06, 0x0a, 0x52, 0x0a, 0x02, 0x09, 0x93, 0x05, 0x96, 0x01, + 0xdd, 0xfd, 0xa4, 0xfa, 0x48, 0xf9, 0xc1, 0xf9, 0x4a, 0xfa, 0xdd, 0xf7, 0xd6, 0xf6, 0x24, 0xf4, + 0x81, 0xf0, 0xfa, 0xee, 0x51, 0xef, 0x6f, 0xef, 0x73, 0xee, 0x54, 0xee, 0xdb, 0xec, 0x55, 0xed, + 0x6c, 0xee, 0x87, 0xf0, 0xbd, 0xf3, 0x07, 0xf7, 0xda, 0xfa, 0xf4, 0xfe, 0x95, 0x02, 0x88, 0x04, + 0x84, 0x09, 0x92, 0x0d, 0x4a, 0x0f, 0x01, 0x11, 0x67, 0x13, 0xa5, 0x14, 0xa9, 0x14, 0xcb, 0x13, + 0x33, 0x13, 0x42, 0x12, 0x44, 0x13, 0x18, 0x15, 0x86, 0x18, 0xd4, 0x19, 0x3d, 0x16, 0x9b, 0x14, + 0x8f, 0x12, 0x5a, 0x11, 0x78, 0x0f, 0xca, 0x0c, 0x40, 0x0b, 0xb0, 0x07, 0xfe, 0x02, 0xc9, 0xfd, + 0x00, 0xfd, 0x0c, 0xfb, 0xc0, 0xf8, 0xdb, 0xf5, 0xb1, 0xf2, 0x6c, 0xf1, 0xaf, 0xf0, 0x59, 0xf0, + 0x61, 0xf0, 0x43, 0xf1, 0x54, 0xf3, 0x89, 0xf6, 0x92, 0xf9, 0x8c, 0xfa, 0xe2, 0xfa, 0x20, 0xf8, + 0x75, 0xf5, 0x24, 0xf5, 0x4e, 0xf5, 0x07, 0xf9, 0xf2, 0xfb, 0x77, 0x00, 0xa2, 0x04, 0xfe, 0x07, + 0x3b, 0x08, 0x4c, 0x0a, 0xe0, 0x0a, 0x83, 0x07, 0xca, 0x05, 0x2b, 0x05, 0xf1, 0x05, 0x8c, 0x07, + 0xd5, 0x09, 0x0a, 0x0b, 0x88, 0x0b, 0x88, 0x0a, 0xb0, 0x08, 0x41, 0x06, 0x88, 0x03, 0xc7, 0x01, + 0xce, 0x01, 0x10, 0x01, 0xac, 0xff, 0x12, 0x00, 0x8b, 0x01, 0x00, 0x03, 0x17, 0x01, 0xab, 0xfe, + 0xee, 0xfc, 0x3a, 0xfb, 0x0e, 0xf9, 0x3a, 0xf8, 0x09, 0xfa, 0x86, 0xfa, 0xb1, 0xfa, 0x26, 0xf9, + 0xe7, 0xf8, 0x9e, 0xf8, 0xc7, 0xf6, 0xfe, 0xf5, 0xed, 0xf5, 0x2a, 0xf5, 0xb5, 0xf3, 0x01, 0xf4, + 0xbf, 0xf4, 0x58, 0xf4, 0xec, 0xf1, 0xb0, 0xef, 0xb7, 0xf0, 0xc0, 0xf3, 0x75, 0xf6, 0x16, 0xf9, + 0x05, 0xfb, 0xdd, 0xfd, 0x59, 0xff, 0xd7, 0x00, 0xf7, 0x02, 0xd6, 0x06, 0x7d, 0x09, 0xc2, 0x08, + 0x1c, 0x07, 0x8a, 0x04, 0x9d, 0x03, 0x69, 0x05, 0x80, 0x06, 0x2d, 0x08, 0x98, 0x0b, 0x57, 0x0e, + 0x00, 0x0e, 0x35, 0x0e, 0x7b, 0x0f, 0xb0, 0x0f, 0xef, 0x0e, 0x33, 0x0c, 0xcd, 0x0a, 0xc6, 0x08, + 0x08, 0x06, 0x15, 0x04, 0x7d, 0x03, 0x59, 0x02, 0xed, 0x00, 0xb9, 0x01, 0x3b, 0x02, 0x70, 0x01, + 0xbc, 0xfe, 0x1a, 0xfb, 0xd3, 0xf9, 0x1e, 0xfa, 0x98, 0xfb, 0x31, 0xfa, 0xea, 0xf9, 0x43, 0xf8, + 0x8a, 0xf4, 0xdc, 0xf1, 0x80, 0xef, 0x15, 0xee, 0x7a, 0xee, 0x97, 0xf0, 0xb4, 0xf2, 0xe9, 0xf3, + 0x69, 0xf3, 0x73, 0xf3, 0xbb, 0xf4, 0xa4, 0xf5, 0x69, 0xf7, 0xaa, 0xf9, 0x0d, 0xfb, 0x41, 0xfc, + 0x28, 0xfe, 0xe5, 0x00, 0x21, 0x01, 0xe9, 0x00, 0x84, 0x01, 0xd0, 0x02, 0xcc, 0x03, 0x8c, 0x02, + 0x1a, 0x04, 0x16, 0x05, 0x96, 0x05, 0x64, 0x08, 0x82, 0x0c, 0x9c, 0x11, 0xfc, 0x11, 0x85, 0x0f, + 0x9e, 0x0b, 0xf8, 0x09, 0x58, 0x0a, 0x69, 0x0a, 0xa7, 0x09, 0x82, 0x07, 0x2b, 0x07, 0x0c, 0x05, + 0x50, 0x02, 0x09, 0x01, 0xa2, 0xff, 0x88, 0xff, 0x4e, 0xfe, 0x66, 0xfc, 0x75, 0xfb, 0x5a, 0xfa, + 0xc1, 0xf7, 0x7d, 0xf5, 0xa3, 0xf5, 0x57, 0xf4, 0x8f, 0xf4, 0xa6, 0xf4, 0x9f, 0xf6, 0xd3, 0xf8, + 0xf4, 0xf9, 0x84, 0xfa, 0xeb, 0xfb, 0x6a, 0x00, 0x95, 0x02, 0xf2, 0x03, 0x67, 0x05, 0x28, 0x05, + 0xc1, 0x04, 0xa4, 0x04, 0xd4, 0x05, 0x48, 0x07, 0x39, 0x08, 0x47, 0x08, 0xc9, 0x08, 0x87, 0x09, + 0xff, 0x0a, 0x68, 0x0c, 0xc8, 0x0b, 0x03, 0x0b, 0x4e, 0x09, 0xb6, 0x05, 0xec, 0x01, 0x26, 0x00, + 0x16, 0xfe, 0xa0, 0xfd, 0x87, 0xfc, 0xe9, 0xfb, 0x0a, 0xfc, 0xc3, 0xfb, 0x4a, 0xf9, 0xbf, 0xf8, + 0x1b, 0xf9, 0xbc, 0xf8, 0x88, 0xf7, 0x6b, 0xf6, 0xbe, 0xf7, 0x44, 0xf9, 0xdf, 0xfa, 0x9a, 0xfb, + 0xb8, 0xfb, 0x70, 0xfa, 0x04, 0xf9, 0xac, 0xf9, 0xd5, 0xf8, 0x42, 0xf8, 0x18, 0xf9, 0xce, 0xfa, + 0xd2, 0xfc, 0xed, 0xfd, 0xdb, 0xff, 0xe9, 0x00, 0x66, 0x00, 0x64, 0xff, 0x4e, 0x00, 0xf4, 0x01, + 0xbd, 0x02, 0x0d, 0x04, 0xe7, 0x04, 0x5e, 0x04, 0x59, 0x02, 0xf6, 0x00, 0x4f, 0x02, 0x62, 0x02, + 0x51, 0x02, 0xc1, 0x01, 0xc9, 0x01, 0x15, 0x04, 0x16, 0x05, 0x93, 0x06, 0x4f, 0x08, 0x6c, 0x09, + 0x16, 0x09, 0xfd, 0x07, 0x21, 0x07, 0x7e, 0x05, 0x07, 0x04, 0xcf, 0x03, 0x6e, 0x03, 0x42, 0x04, + 0x77, 0x05, 0x92, 0x07, 0x4d, 0x08, 0xfb, 0x06, 0xd9, 0x05, 0xf1, 0x04, 0x6f, 0x04, 0x18, 0x04, + 0xbe, 0x04, 0xe2, 0x01, 0x8f, 0xfd, 0x75, 0xf9, 0x4a, 0xf8, 0x12, 0xf9, 0xbb, 0xf8, 0xaf, 0xf9, + 0xc1, 0xfa, 0x48, 0xfb, 0xbe, 0xf8, 0xff, 0xf7, 0x38, 0xf9, 0x55, 0xfa, 0x59, 0xfb, 0x1f, 0xfc, + 0xb2, 0xfe, 0xb0, 0xfe, 0x44, 0xfd, 0x9a, 0xfd, 0x14, 0xfe, 0x91, 0xfe, 0x0f, 0xff, 0x93, 0x01, + 0x56, 0x03, 0x5a, 0x05, 0xd5, 0x05, 0x6a, 0x05, 0x40, 0x05, 0xbb, 0x03, 0xc3, 0x03, 0xb8, 0x02, + 0x00, 0x03, 0xa3, 0x01, 0xb5, 0x00, 0xaa, 0x00, 0xeb, 0x00, 0x14, 0x04, 0xec, 0x05, 0xb4, 0x06, + 0xe4, 0x04, 0x9e, 0x00, 0x47, 0xfe, 0x84, 0xfd, 0xb7, 0xfd, 0x3e, 0xfe, 0x27, 0xff, 0x2e, 0xff, + 0xea, 0xfe, 0xf8, 0xfd, 0x9d, 0xfb, 0xc7, 0xf9, 0x1b, 0xf7, 0xbe, 0xf5, 0x13, 0xf5, 0x74, 0xf4, + 0xa2, 0xf3, 0xe1, 0xf3, 0x49, 0xf3, 0x2f, 0xf4, 0x18, 0xf5, 0x1e, 0xf6, 0x15, 0xf7, 0x3b, 0xf9, + 0x69, 0xfa, 0xcc, 0xfb, 0xb7, 0xfb, 0x22, 0xfb, 0xe9, 0xfb, 0x45, 0xfc, 0x4e, 0xfd, 0xee, 0xfd, + 0x81, 0xfe, 0x99, 0xff, 0xa2, 0x00, 0x9c, 0x02, 0xc7, 0x04, 0xd9, 0x06, 0x9f, 0x06, 0xec, 0x06, + 0xa1, 0x07, 0xf2, 0x05, 0x71, 0x05, 0x67, 0x05, 0xcb, 0x05, 0x10, 0x04, 0x1d, 0x02, 0x82, 0x00, + 0xb9, 0x00, 0xc8, 0x00, 0x41, 0x00, 0xec, 0xff, 0xad, 0xff, 0xa7, 0xff, 0xa3, 0xfd, 0x0e, 0xfb, + 0x9c, 0xf9, 0xf0, 0xf8, 0x8d, 0xf7, 0x18, 0xf6, 0x4a, 0xf6, 0xd2, 0xf7, 0x58, 0xf9, 0xa9, 0xfa, + 0xb4, 0xfc, 0xb2, 0xfd, 0x05, 0xfd, 0x40, 0xfd, 0x65, 0x00, 0x47, 0x02, 0x69, 0x02, 0xd4, 0x02, + 0x53, 0x03, 0x96, 0x07, 0x73, 0x0a, 0x9e, 0x0b, 0xd9, 0x0a, 0x2f, 0x0b, 0xbd, 0x0a, 0x77, 0x0b, + 0x84, 0x0c, 0xdd, 0x0d, 0xc3, 0x0f, 0x2d, 0x0e, 0x94, 0x0c, 0x53, 0x0a, 0xeb, 0x0a, 0xfc, 0x07, + 0x4b, 0x05, 0x9f, 0x05, 0x8a, 0x03, 0x4f, 0x03, 0x61, 0x02, 0x69, 0x02, 0x61, 0x01, 0x62, 0xff, + 0x63, 0xfe, 0x64, 0xfd, 0x8a, 0xfc, 0xc4, 0xfb, 0x8b, 0xfd, 0x73, 0xff, 0xe7, 0x01, 0x57, 0x05, + 0xb5, 0x09, 0xb0, 0x0b, 0x23, 0x0b, 0xef, 0x07, 0x92, 0x04, 0xc0, 0x00, 0x7c, 0xfe, 0x04, 0xfe, + 0x36, 0x01, 0xcc, 0x04, 0x06, 0x07, 0x06, 0x08, 0x60, 0x08, 0xfb, 0x05, 0xc3, 0x03, 0x7e, 0x00, + 0xd3, 0xfe, 0x83, 0xfd, 0x81, 0xfc, 0x24, 0xfa, 0xa4, 0xf9, 0x84, 0xfb, 0x74, 0xfb, 0x30, 0xfe, + 0x8a, 0xfd, 0xa1, 0xfb, 0x90, 0xf6, 0x7e, 0xf2, 0x12, 0xf1, 0x3e, 0xf4, 0x7c, 0xf8, 0xdd, 0xf8, + 0xbc, 0xfc, 0x3e, 0x00, 0x61, 0x02, 0x43, 0x01, 0x42, 0x00, 0xea, 0xfd, 0xca, 0xfd, 0x8e, 0xfc, + 0x3a, 0xfb, 0xac, 0xfe, 0xd0, 0xfd, 0x98, 0xfe, 0x63, 0xfe, 0x79, 0x02, 0xb4, 0x04, 0x3b, 0x04, + 0xd8, 0x03, 0x87, 0x01, 0xe9, 0x00, 0xb2, 0xfd, 0xbd, 0xfb, 0xdc, 0xfc, 0x5a, 0xfd, 0x14, 0xfb, + 0x13, 0xfa, 0x5e, 0xfa, 0xd2, 0xf8, 0x3c, 0xf6, 0x29, 0xf6, 0x4c, 0xf4, 0x76, 0xf3, 0x74, 0xf5, + 0x54, 0xf8, 0xe0, 0xf8, 0x22, 0xf9, 0x53, 0xfa, 0x74, 0xfc, 0x63, 0xfd, 0x35, 0xfc, 0xf0, 0xfd, + 0xc7, 0x00, 0x2f, 0x02, 0x02, 0x04, 0x33, 0x06, 0xad, 0x07, 0xf5, 0x06, 0x9e, 0x07, 0x6a, 0x07, + 0xc7, 0x04, 0x77, 0x02, 0x24, 0xff, 0x27, 0xff, 0x5d, 0x00, 0x55, 0x02, 0x5c, 0x04, 0xe9, 0x06, + 0x07, 0x07, 0xd7, 0x04, 0x72, 0x03, 0xa4, 0x03, 0x5b, 0x03, 0xc0, 0x03, 0xfb, 0x03, 0x15, 0x03, + 0x55, 0x00, 0xc3, 0xff, 0xe5, 0xff, 0x7c, 0xfe, 0x0b, 0xfc, 0xcd, 0xf9, 0x2e, 0xf8, 0x8d, 0xf5, + 0xf3, 0xf3, 0x9b, 0xf3, 0x06, 0xf7, 0x16, 0xf8, 0x64, 0xf5, 0x39, 0xf6, 0x06, 0xf8, 0x19, 0xf8, + 0xaf, 0xf8, 0xfb, 0xfa, 0x8e, 0xfc, 0xf4, 0xfa, 0x52, 0xfb, 0x2f, 0xfe, 0x70, 0x00, 0xd9, 0xfe, + 0x06, 0xfc, 0x32, 0xfa, 0x40, 0xfb, 0xbb, 0xfe, 0x1f, 0x02, 0xdd, 0x02, 0xa6, 0x02, 0x91, 0x03, + 0x9e, 0x04, 0x47, 0x07, 0x04, 0x08, 0x2b, 0x09, 0xa3, 0x08, 0xf8, 0x05, 0x4d, 0x04, 0x2e, 0x02, + 0xc3, 0x00, 0x2b, 0x00, 0x46, 0x00, 0x70, 0x02, 0x3e, 0x05, 0x44, 0x05, 0x92, 0x03, 0x71, 0x03, + 0x22, 0x02, 0x14, 0x02, 0x1b, 0x04, 0x4a, 0x04, 0x2e, 0x04, 0x1b, 0x04, 0x36, 0x03, 0xbd, 0x02, + 0xe5, 0x03, 0x58, 0x04, 0x29, 0x05, 0x1a, 0x06, 0x14, 0x06, 0x7a, 0x07, 0x22, 0x09, 0xfc, 0x06, + 0x79, 0x08, 0xea, 0x0a, 0xa8, 0x0b, 0xe8, 0x0c, 0xc2, 0x0b, 0xb9, 0x08, 0x2e, 0x06, 0xee, 0x04, + 0xb8, 0x05, 0xc9, 0x06, 0xa2, 0x07, 0x4c, 0x06, 0x09, 0x07, 0xcf, 0x05, 0x3a, 0x01, 0x98, 0xfe, + 0xf2, 0xfc, 0x71, 0xfc, 0x0d, 0xfc, 0xc4, 0xfa, 0x6b, 0xf9, 0x7e, 0xf9, 0x7b, 0xfb, 0x1f, 0xfa, + 0x77, 0xf9, 0xbe, 0xf8, 0x2a, 0xf7, 0x9d, 0xf7, 0x4f, 0xf8, 0xda, 0xf5, 0x7b, 0xf4, 0x75, 0xf7, + 0xb1, 0xf9, 0x90, 0xfc, 0x86, 0x00, 0xda, 0x03, 0x3f, 0x04, 0xef, 0x01, 0xf7, 0x00, 0x86, 0x01, + 0xd9, 0x02, 0x60, 0x03, 0x59, 0x02, 0x2c, 0x02, 0x82, 0xff, 0xf6, 0xfd, 0xe4, 0xfe, 0xec, 0xff, + 0x73, 0x00, 0xf3, 0xff, 0x83, 0xff, 0x08, 0x00, 0x75, 0xff, 0x91, 0xfe, 0xe5, 0xfd, 0xcb, 0xfc, + 0x4b, 0xfb, 0xab, 0xfa, 0xfd, 0xf8, 0x5a, 0xf8, 0x38, 0xf9, 0xa7, 0xfa, 0x05, 0xfb, 0xde, 0xfc, + 0x4c, 0xfe, 0xf7, 0xfe, 0x29, 0x02, 0x18, 0x03, 0xe4, 0x02, 0x94, 0x01, 0xf5, 0xff, 0xd7, 0x00, + 0x1c, 0x00, 0x80, 0xff, 0xa8, 0xff, 0xa5, 0x00, 0xf9, 0x03, 0x00, 0x01, 0x6f, 0x06, 0x3f, 0x08, + 0xdc, 0x05, 0xd9, 0x06, 0x64, 0x04, 0x40, 0xfe, 0x77, 0xfa, 0xaa, 0xfb, 0xb4, 0xfc, 0xe4, 0xfa, + 0x82, 0xfa, 0x99, 0xfd, 0xf7, 0xfc, 0x92, 0xfc, 0xeb, 0xfd, 0x21, 0xfb, 0x05, 0xfd, 0x01, 0xfb, + 0xef, 0xf7, 0x81, 0xfc, 0x51, 0xfb, 0x70, 0xfb, 0xce, 0xfd, 0x8a, 0x00, 0x1a, 0xff, 0x35, 0x01, + 0x4f, 0x06, 0xc9, 0x08, 0x2b, 0x07, 0xfe, 0x07, 0xd6, 0x08, 0xb6, 0x07, 0x57, 0x07, 0xba, 0x08, + 0x3e, 0x07, 0x5c, 0x03, 0xe3, 0x02, 0x79, 0x01, 0x04, 0x03, 0xde, 0x03, 0xdd, 0x04, 0xdb, 0x03, + 0x39, 0x05, 0x1e, 0x02, 0xf2, 0x00, 0x78, 0xff, 0x84, 0xff, 0x11, 0xfc, 0x03, 0xfa, 0x3e, 0xfa, + 0xe7, 0xf9, 0x25, 0xfb, 0xe0, 0xfb, 0xb6, 0xfc, 0x65, 0xfd, 0x5c, 0xfb, 0xc8, 0xfa, 0xf7, 0xfa, + 0x6f, 0xf8, 0xb6, 0xf5, 0xe4, 0xf3, 0xab, 0xf1, 0xa7, 0xf2, 0x16, 0xf4, 0x80, 0xf7, 0xd3, 0xfc, + 0xb8, 0x00, 0x10, 0x02, 0xa6, 0x03, 0x95, 0x04, 0xeb, 0x03, 0x75, 0x05, 0x0c, 0x04, 0x7f, 0x02, + 0x8e, 0xfc, 0x2f, 0xfd, 0x92, 0xfb, 0x42, 0xfe, 0x6f, 0xfe, 0x44, 0xff, 0x73, 0x00, 0xff, 0x00, + 0x22, 0x02, 0x32, 0x03, 0xbc, 0x05, 0x3e, 0x02, 0x70, 0x02, 0xe8, 0x01, 0x2c, 0x02, 0x06, 0x00, + 0xf9, 0xff, 0x17, 0xfd, 0x97, 0xfd, 0x55, 0xfc, 0x8e, 0xfb, 0x47, 0xfc, 0x11, 0xff, 0x70, 0xfd, + 0x7d, 0xfa, 0xdc, 0xfa, 0x37, 0xf8, 0x3d, 0xf9, 0x13, 0xfa, 0x1c, 0xfb, 0x23, 0xfb, 0xdd, 0xfe, + 0x57, 0x00, 0x69, 0x02, 0x22, 0x05, 0x36, 0x05, 0xc8, 0x04, 0x62, 0x04, 0xe3, 0x00, 0x1e, 0xfd, + 0x6f, 0xfe, 0x6c, 0x00, 0xa1, 0xfe, 0xb5, 0x03, 0x8a, 0x05, 0x17, 0x06, 0x76, 0x09, 0x24, 0x0c, + 0x05, 0x0b, 0xd9, 0x0a, 0x07, 0x0c, 0xb3, 0x08, 0xc1, 0x08, 0x6c, 0x07, 0xf9, 0x04, 0x2d, 0x01, + 0xc2, 0x00, 0xec, 0xfe, 0x89, 0xfe, 0xae, 0xfd, 0x06, 0xff, 0x62, 0xff, 0x7f, 0xff, 0xd4, 0xfd, + 0x54, 0xfe, 0x3e, 0xfd, 0x39, 0xfa, 0x4f, 0xfa, 0x50, 0xf9, 0x54, 0xfb, 0xe3, 0xfa, 0x64, 0xfd, + 0x95, 0xfe, 0x28, 0x03, 0x49, 0x03, 0xd0, 0x04, 0x5b, 0x07, 0x4f, 0x08, 0x36, 0x06, 0x9c, 0x07, + 0x9a, 0x05, 0x45, 0x05, 0x59, 0x05, 0x9f, 0x06, 0xc6, 0x05, 0xd0, 0x03, 0xd1, 0x06, 0xf5, 0x09, + 0xb4, 0x09, 0xb0, 0x09, 0x94, 0x0e, 0x2a, 0x0b, 0x9d, 0x07, 0xd1, 0x04, 0x5b, 0x01, 0x83, 0xfe, + 0x67, 0xff, 0xfc, 0xfd, 0x46, 0xfc, 0x58, 0xfe, 0x00, 0xfe, 0xbd, 0xfd, 0x9b, 0x01, 0x96, 0x00, + 0x8c, 0xff, 0xc4, 0xff, 0x02, 0xfe, 0xab, 0xfd, 0x9f, 0xfe, 0x5f, 0xff, 0xdf, 0xfe, 0xe4, 0xff, + 0x5e, 0xff, 0xf3, 0xfe, 0x20, 0xfe, 0x8b, 0xff, 0x40, 0x00, 0x53, 0xff, 0x09, 0x00, 0xcb, 0x01, + 0xeb, 0x01, 0xeb, 0xff, 0x66, 0xff, 0xe2, 0xfe, 0x84, 0xfc, 0x15, 0xfd, 0xc8, 0xfd, 0xf9, 0xfe, + 0x48, 0x01, 0xed, 0xff, 0x0d, 0xfe, 0xb0, 0xfb, 0xda, 0xf8, 0x01, 0xf9, 0x3b, 0xf7, 0xcf, 0xf4, + 0xf4, 0xf2, 0x12, 0xf5, 0xc4, 0xf6, 0x61, 0xf8, 0x75, 0xfc, 0x71, 0x00, 0xfa, 0x00, 0xfc, 0x00, + 0xea, 0x02, 0x74, 0x03, 0x43, 0x04, 0x8e, 0x03, 0x40, 0x00, 0x06, 0xfd, 0x91, 0xfd, 0xb0, 0xfc, + 0x7a, 0xfd, 0x72, 0x00, 0xa0, 0x01, 0xe3, 0x01, 0xf4, 0x03, 0x0e, 0x05, 0x0b, 0x06, 0x1a, 0x05, + 0xb0, 0x03, 0x34, 0x01, 0x9f, 0xfd, 0x11, 0xfd, 0xb9, 0xfb, 0x4a, 0xfa, 0xe6, 0xf9, 0x43, 0xfb, + 0xbf, 0xfa, 0xb9, 0xfa, 0x49, 0xfc, 0x4d, 0xfd, 0x74, 0xfe, 0x12, 0xfe, 0xcd, 0xfb, 0x74, 0xfa, + 0x9a, 0xfa, 0x0f, 0xf8, 0xf7, 0xf6, 0x3f, 0xf8, 0x78, 0xf7, 0x19, 0xf6, 0x5d, 0xf8, 0x8d, 0xfb, + 0x3a, 0xfd, 0x0d, 0x00, 0xda, 0x00, 0x10, 0x01, 0xad, 0x00, 0x2e, 0xff, 0xf6, 0xfc, 0x93, 0xfc, + 0x84, 0xfd, 0xca, 0xfd, 0xbc, 0xfd, 0x7b, 0x00, 0x34, 0x02, 0xae, 0x01, 0xcd, 0x02, 0x1e, 0x04, + 0x60, 0x02, 0x95, 0x02, 0x5a, 0x01, 0xdf, 0xfd, 0xbf, 0xfd, 0x86, 0xfd, 0xaa, 0xfc, 0xb9, 0xfd, + 0x66, 0x00, 0xe0, 0x03, 0x13, 0x06, 0x43, 0x06, 0xbb, 0x04, 0x4d, 0x02, 0xcd, 0x01, 0xea, 0x00, + 0x3f, 0x00, 0xfb, 0xfe, 0x6f, 0xff, 0x6d, 0xfd, 0xe5, 0xfb, 0xa2, 0xfe, 0x54, 0x00, 0x20, 0x02, + 0xaf, 0x05, 0x27, 0x06, 0xdc, 0x06, 0xb1, 0x06, 0xdd, 0x04, 0x54, 0x01, 0x50, 0xff, 0x69, 0xfe, + 0x12, 0xfe, 0x12, 0x00, 0x24, 0x02, 0x98, 0x04, 0xa1, 0x05, 0xe0, 0x06, 0xf5, 0x07, 0x96, 0x09, + 0x96, 0x0a, 0x73, 0x08, 0x19, 0x06, 0x2c, 0x05, 0x47, 0x03, 0x6e, 0x01, 0x00, 0xfc, 0xb1, 0xfe, + 0xa9, 0xfd, 0x40, 0xfc, 0x86, 0xfe, 0xc9, 0xfb, 0x5d, 0xfb, 0xaa, 0xfb, 0x3c, 0xfa, 0x22, 0xf9, + 0xa0, 0xf5, 0x7a, 0xf3, 0x8c, 0xf0, 0x9a, 0xf1, 0xf3, 0xee, 0x05, 0xef, 0xad, 0xf3, 0x0a, 0xf7, + 0xb4, 0xf9, 0x23, 0xfd, 0x7e, 0xfd, 0xa8, 0xfc, 0xb1, 0xfe, 0x2a, 0xff, 0xf6, 0xfd, 0x6f, 0xfe, + 0xcb, 0x01, 0x20, 0x04, 0x05, 0xff, 0x92, 0x02, 0x99, 0x02, 0x45, 0x05, 0x88, 0x06, 0x20, 0x06, + 0xc1, 0x07, 0xc0, 0x09, 0xcb, 0x09, 0xd1, 0x08, 0x66, 0x08, 0xf9, 0x06, 0x55, 0x06, 0x1a, 0x06, + 0x2f, 0x05, 0x32, 0x08, 0x01, 0x08, 0x4a, 0x07, 0xc6, 0x08, 0x1a, 0x09, 0x7e, 0x05, 0x7f, 0x03, + 0x21, 0x05, 0x7d, 0x02, 0xcb, 0x01, 0xf3, 0x00, 0x38, 0x01, 0x02, 0x03, 0x43, 0x05, 0x99, 0x08, + 0xec, 0x0a, 0x9c, 0x0b, 0x28, 0x0c, 0xe0, 0x0b, 0x4a, 0x0b, 0x1b, 0x0c, 0xf6, 0x09, 0xd7, 0x07, + 0x89, 0x06, 0x31, 0x03, 0xb3, 0x02, 0x8c, 0x04, 0x39, 0x05, 0xae, 0x06, 0x19, 0x08, 0x6b, 0x08, + 0xe8, 0x08, 0x51, 0x07, 0x54, 0x07, 0xb0, 0x03, 0x97, 0xff, 0xfc, 0xfc, 0x08, 0xfb, 0xbd, 0xf7, + 0xda, 0xf6, 0x2c, 0xf5, 0xd4, 0xf5, 0x15, 0xf8, 0xed, 0xf8, 0x7f, 0xfb, 0xad, 0xfe, 0x40, 0xfd, + 0xf3, 0xff, 0xd7, 0x00, 0x21, 0x00, 0x22, 0xff, 0x80, 0x00, 0xbf, 0x01, 0xbd, 0x01, 0x7a, 0x00, + 0x59, 0xfe, 0xcc, 0x01, 0xb8, 0x02, 0x2d, 0x03, 0xe9, 0x03, 0x15, 0x04, 0x1a, 0x03, 0xe2, 0xfd, + 0xd7, 0xfb, 0xcd, 0xfb, 0xc3, 0xf8, 0x1a, 0xf9, 0x5f, 0xf9, 0x60, 0xf9, 0x12, 0xf8, 0x41, 0xf7, + 0xa5, 0xf6, 0x03, 0xfa, 0xe9, 0xf9, 0xee, 0xf8, 0x58, 0xf8, 0x26, 0xf5, 0xf5, 0xf1, 0x18, 0xf2, + 0x10, 0xf0, 0x75, 0xf2, 0x33, 0xf4, 0xdd, 0xf5, 0xc3, 0xf9, 0xf0, 0xf9, 0xc6, 0xf9, 0x13, 0xfb, + 0x75, 0xf9, 0xb9, 0xf8, 0x49, 0xfb, 0x42, 0xfe, 0xd0, 0xff, 0xf4, 0xff, 0xd4, 0xfc, 0x3d, 0xfe, + 0x54, 0xfe, 0xfc, 0xff, 0xe5, 0x03, 0x30, 0x08, 0x23, 0x08, 0xf3, 0x06, 0x33, 0x04, 0xd0, 0x02, + 0xe4, 0x03, 0x71, 0xff, 0x2c, 0xfd, 0x60, 0xfd, 0xad, 0xfc, 0xc0, 0xfc, 0x84, 0xfb, 0x01, 0xfc, + 0xa9, 0xfd, 0x72, 0xfd, 0xe8, 0xfd, 0xf9, 0xfd, 0xa3, 0xfb, 0xc2, 0xf6, 0x96, 0xf5, 0xc4, 0xf3, + 0x3d, 0xf2, 0x30, 0xf2, 0xe6, 0xf2, 0x6c, 0xf5, 0x3f, 0xf6, 0xa5, 0xf8, 0xf3, 0xf9, 0xae, 0xf9, + 0x99, 0xfd, 0xb9, 0x01, 0x40, 0x00, 0x57, 0xfe, 0x29, 0xfe, 0xf8, 0xfb, 0xc4, 0xf8, 0x3c, 0xf8, + 0xef, 0xfa, 0x52, 0x00, 0x92, 0x02, 0x1b, 0x05, 0x9d, 0x08, 0x35, 0x09, 0xf3, 0x0a, 0x3d, 0x0c, + 0x6d, 0x0c, 0xd5, 0x0d, 0xea, 0x0c, 0x27, 0x0c, 0x31, 0x0a, 0xb3, 0x08, 0x6c, 0x08, 0xd4, 0x07, + 0x80, 0x06, 0x83, 0x08, 0xaa, 0x08, 0x59, 0x05, 0xe3, 0x05, 0x9c, 0x05, 0x30, 0x02, 0xb8, 0x00, + 0xd6, 0xff, 0xe8, 0xfe, 0x18, 0x01, 0x58, 0x00, 0xe5, 0xfd, 0x8f, 0xff, 0xa4, 0x00, 0x52, 0x02, + 0xae, 0x05, 0xc6, 0x07, 0xd1, 0x07, 0xb0, 0x04, 0x6a, 0x03, 0xd0, 0x01, 0x14, 0x02, 0x2e, 0x04, + 0x6e, 0x05, 0x6c, 0x08, 0x14, 0x0c, 0xb8, 0x0d, 0x65, 0x0f, 0x78, 0x12, 0x92, 0x13, 0x90, 0x13, + 0xbd, 0x11, 0x4e, 0x0d, 0x73, 0x0a, 0x1f, 0x08, 0xf1, 0x03, 0xf1, 0x04, 0x86, 0x05, 0x8e, 0x04, + 0x5c, 0x06, 0x69, 0x07, 0x6f, 0x06, 0xa5, 0x05, 0xe4, 0x04, 0x3f, 0x03, 0xf2, 0x01, 0x15, 0xfd, + 0xfb, 0xf9, 0xc0, 0xf8, 0x4c, 0xf6, 0x97, 0xf3, 0x9e, 0xf2, 0x4a, 0xf3, 0x72, 0xf4, 0x98, 0xf6, + 0x02, 0xf8, 0x1e, 0xf8, 0x9b, 0xf7, 0x21, 0xf8, 0x93, 0xf7, 0xfb, 0xf5, 0x5f, 0xf5, 0x53, 0xf3, + 0x6a, 0xf1, 0x91, 0xf0, 0x08, 0xf1, 0x85, 0xf1, 0xda, 0xf3, 0xb8, 0xf4, 0x43, 0xf6, 0xf3, 0xf7, + 0x77, 0xf4, 0xf6, 0xf2, 0x3d, 0xf6, 0xab, 0xf5, 0x45, 0xf4, 0xdf, 0xf1, 0x6e, 0xf0, 0xae, 0xf1, + 0xa8, 0xf1, 0x06, 0xf3, 0x6f, 0xf4, 0xbb, 0xf6, 0xb6, 0xfa, 0xcb, 0xfc, 0xbc, 0xff, 0x01, 0x02, + 0x9c, 0x00, 0x10, 0x00, 0x31, 0x02, 0xcb, 0x03, 0x19, 0x06, 0x6c, 0x0a, 0xef, 0x0e, 0x42, 0x13, + 0xc8, 0x13, 0xbc, 0x11, 0xa9, 0x13, 0x68, 0x14, 0x3b, 0x13, 0x3f, 0x12, 0x6b, 0x0f, 0x7c, 0x0d, + 0x24, 0x0d, 0x67, 0x0a, 0x47, 0x07, 0x20, 0x07, 0x3c, 0x06, 0x56, 0x06, 0x9a, 0x04, 0x1c, 0x02, + 0x27, 0x01, 0x7a, 0xfe, 0xb0, 0xfb, 0x6e, 0xf9, 0x51, 0xf7, 0xef, 0xf4, 0x15, 0xf3, 0x6e, 0xf1, + 0x7b, 0xf1, 0x75, 0xf2, 0xa5, 0xf2, 0x12, 0xf6, 0xd4, 0xf7, 0xb5, 0xf8, 0xb6, 0xf6, 0x9c, 0xf4, + 0x08, 0xf4, 0xe1, 0xf3, 0xdf, 0xf2, 0xcf, 0xf2, 0x18, 0xf6, 0x8c, 0xf7, 0x67, 0xf8, 0xbd, 0xfa, + 0xe4, 0xfb, 0xf8, 0xff, 0xd2, 0x04, 0x24, 0x08, 0xe8, 0x09, 0xa8, 0x07, 0xdf, 0x05, 0x8a, 0x04, + 0xc3, 0x03, 0x05, 0x04, 0x32, 0x03, 0x11, 0x05, 0xdb, 0x05, 0x3e, 0x06, 0xa2, 0x08, 0xd5, 0x0a, + 0x52, 0x0b, 0x39, 0x0c, 0xf9, 0x0c, 0x23, 0x0b, 0x4d, 0x0c, 0xff, 0x0b, 0x60, 0x09, 0x78, 0x09, + 0xdc, 0x07, 0x6d, 0x07, 0x15, 0x09, 0x39, 0x0a, 0x21, 0x0b, 0x51, 0x0d, 0xfb, 0x0d, 0xec, 0x0d, + 0x1b, 0x0f, 0x6c, 0x0f, 0xb2, 0x0f, 0x94, 0x0f, 0xfe, 0x0f, 0xb1, 0x0f, 0x01, 0x0d, 0x1e, 0x0c, + 0xe8, 0x0b, 0x5d, 0x0a, 0x4a, 0x07, 0xb2, 0x05, 0xeb, 0x03, 0xc8, 0x03, 0x07, 0x07, 0xed, 0x04, + 0xa4, 0x07, 0x5c, 0x06, 0xac, 0x03, 0x1e, 0x03, 0xc2, 0x00, 0x12, 0x00, 0x24, 0xff, 0xc5, 0xff, + 0x5c, 0xff, 0x5a, 0x01, 0x00, 0x02, 0x97, 0xfe, 0xbf, 0xf8, 0x64, 0xf2, 0xe7, 0xf0, 0xc6, 0xed, + 0x34, 0xe9, 0xfa, 0xe8, 0xb9, 0xed, 0x9c, 0xf1, 0x79, 0xf0, 0x15, 0xef, 0xa3, 0xee, 0x60, 0xed, + 0xa1, 0xe9, 0xa7, 0xe5, 0xcf, 0xe4, 0xdf, 0xe4, 0xc7, 0xe4, 0xb2, 0xe5, 0xf7, 0xe5, 0x81, 0xe6, + 0x14, 0xe7, 0xa8, 0xe7, 0xca, 0xe9, 0xad, 0xec, 0xb1, 0xf2, 0x14, 0xf6, 0x77, 0xf6, 0x66, 0xfa, + 0x4e, 0xfe, 0xe2, 0xff, 0x51, 0x01, 0x5b, 0x03, 0x2b, 0x06, 0x3f, 0x0a, 0x56, 0x0d, 0x8b, 0x0f, + 0xb5, 0x16, 0xf5, 0x1c, 0x50, 0x1f, 0xd9, 0x1d, 0x43, 0x1e, 0x7d, 0x20, 0x37, 0x1f, 0x88, 0x1c, + 0x75, 0x1b, 0x30, 0x19, 0x93, 0x13, 0x96, 0x10, 0x26, 0x0c, 0x96, 0x0b, 0xef, 0x0b, 0x1e, 0x0c, + 0x44, 0x0d, 0xf3, 0x0a, 0x51, 0x08, 0x17, 0x06, 0xea, 0x05, 0xe1, 0x04, 0xce, 0x01, 0x7f, 0xff, + 0x62, 0xfc, 0xf1, 0xf7, 0x97, 0xf4, 0x64, 0xf0, 0x5d, 0xee, 0x9b, 0xec, 0x8d, 0xea, 0x0e, 0xe9, + 0x21, 0xe8, 0xfb, 0xe5, 0x81, 0xe6, 0xfe, 0xe8, 0x56, 0xea, 0x17, 0xec, 0x58, 0xec, 0xf2, 0xea, + 0x43, 0xed, 0xcf, 0xed, 0x54, 0xec, 0x40, 0xee, 0x1b, 0xf3, 0x40, 0xf4, 0xdb, 0xf4, 0x34, 0xf7, + 0x65, 0xf8, 0x1a, 0xf9, 0x37, 0xf7, 0x50, 0xfb, 0xa1, 0xfd, 0x1d, 0x00, 0x7b, 0x01, 0xbb, 0x03, + 0xc6, 0x08, 0x5a, 0x0c, 0xcb, 0x11, 0x41, 0x13, 0x68, 0x14, 0x49, 0x13, 0xa1, 0x0d, 0x4a, 0x08, + 0x1d, 0x06, 0xbe, 0x05, 0x8f, 0x02, 0xaa, 0xfd, 0xa5, 0xfc, 0xe0, 0xf9, 0x55, 0xf5, 0x6e, 0xf2, + 0x35, 0xef, 0x47, 0xee, 0x0e, 0xf0, 0xd8, 0xee, 0xdd, 0xef, 0x87, 0xf4, 0xef, 0xf8, 0xa8, 0xfc, + 0x08, 0x01, 0xa2, 0x03, 0xec, 0x08, 0x69, 0x0d, 0x8e, 0x11, 0xe4, 0x15, 0x68, 0x19, 0xb0, 0x1b, + 0x04, 0x1c, 0x6f, 0x18, 0xe1, 0x17, 0xcf, 0x17, 0xce, 0x12, 0xd4, 0x13, 0x85, 0x13, 0x09, 0x16, + 0xa6, 0x19, 0xfa, 0x19, 0x90, 0x1c, 0xe6, 0x1f, 0x8a, 0x22, 0x94, 0x22, 0xb1, 0x1f, 0xe1, 0x1d, + 0xfe, 0x19, 0x24, 0x12, 0xf6, 0x09, 0x00, 0x03, 0x4f, 0xff, 0xb9, 0xf9, 0x2d, 0xf3, 0x5d, 0xeb, + 0x1a, 0xe5, 0xe1, 0xdf, 0x2a, 0xd8, 0xc1, 0xd3, 0xf5, 0xd0, 0xd4, 0xd0, 0x33, 0xd2, 0xd1, 0xd2, + 0x21, 0xd5, 0x75, 0xda, 0x73, 0xe1, 0x28, 0xe7, 0x6c, 0xec, 0x3e, 0xef, 0x38, 0xf4, 0x7d, 0xf5, + 0x27, 0xf6, 0x40, 0xfa, 0x9a, 0x00, 0xdf, 0x00, 0xb4, 0xff, 0x29, 0x05, 0x6b, 0x0a, 0x2b, 0x0e, + 0x9d, 0x0f, 0x21, 0x12, 0x83, 0x16, 0xcd, 0x15, 0x2a, 0x15, 0xb3, 0x15, 0xb0, 0x19, 0x92, 0x22, + 0x87, 0x24, 0x13, 0x27, 0x6b, 0x2b, 0x12, 0x29, 0x8e, 0x25, 0x72, 0x20, 0x86, 0x1a, 0xf4, 0x16, + 0x0a, 0x11, 0x0b, 0x07, 0xd4, 0xfd, 0x3d, 0xf4, 0xa9, 0xea, 0xe3, 0xe2, 0xfe, 0xd9, 0xe0, 0xd7, + 0xc7, 0xd8, 0x5d, 0xd9, 0x0b, 0xdc, 0xc0, 0xe0, 0x36, 0xe7, 0x22, 0xed, 0x15, 0xf4, 0x87, 0xf6, + 0x8b, 0xfb, 0x29, 0xfd, 0x04, 0xfb, 0xf8, 0xf9, 0x7f, 0xfb, 0xeb, 0x00, 0x67, 0xff, 0x1d, 0xfe, + 0x3f, 0xff, 0xe9, 0x00, 0x33, 0x02, 0x04, 0x05, 0x65, 0x07, 0xf2, 0x09, 0x34, 0x0d, 0xcc, 0x0b, + 0xd1, 0x09, 0x54, 0x0f, 0x0e, 0x15, 0x92, 0x15, 0x12, 0x17, 0xc3, 0x19, 0x20, 0x19, 0x2e, 0x16, + 0x85, 0x10, 0x7f, 0x0e, 0x72, 0x0a, 0xa4, 0x02, 0x09, 0xfa, 0x53, 0xf1, 0x96, 0xe8, 0xe3, 0xe0, + 0x76, 0xd9, 0xd7, 0xd4, 0xcc, 0xd3, 0x80, 0xd3, 0xb2, 0xd3, 0x75, 0xd6, 0x51, 0xdb, 0xbe, 0xdf, + 0x9e, 0xe5, 0xc7, 0xeb, 0x07, 0xf2, 0x9e, 0xf5, 0x74, 0xfa, 0x39, 0xfc, 0x34, 0xfb, 0x5a, 0x00, + 0xa7, 0x03, 0x10, 0x03, 0x8f, 0x01, 0x21, 0x03, 0x14, 0x05, 0xb9, 0x03, 0x07, 0x01, 0x10, 0x01, + 0x65, 0x02, 0x58, 0x03, 0x9c, 0x01, 0xa8, 0x04, 0x64, 0x0c, 0x39, 0x11, 0x60, 0x15, 0x48, 0x1c, + 0x99, 0x21, 0x15, 0x22, 0x6b, 0x1f, 0x16, 0x1a, 0x87, 0x14, 0x4e, 0x0f, 0x1d, 0x07, 0xd4, 0xff, + 0x8c, 0xf9, 0xda, 0xf3, 0xa1, 0xf1, 0x96, 0xf0, 0x58, 0xef, 0x71, 0xf3, 0x4d, 0xf7, 0xd1, 0xf9, + 0x3b, 0x00, 0x9b, 0x05, 0x7d, 0x0d, 0x46, 0x14, 0x48, 0x17, 0xc9, 0x18, 0x7b, 0x1b, 0xcd, 0x1b, + 0x15, 0x19, 0xa2, 0x1a, 0x68, 0x1e, 0xce, 0x1f, 0x91, 0x1c, 0xfc, 0x19, 0xd5, 0x19, 0x0d, 0x17, + 0xc7, 0x12, 0x92, 0x0e, 0x38, 0x0a, 0x83, 0x08, 0xc4, 0x04, 0xc6, 0xfe, 0x62, 0x00, 0x62, 0x03, + 0xac, 0x04, 0x18, 0x08, 0x67, 0x08, 0xfa, 0x09, 0xf2, 0x08, 0x76, 0x01, 0x33, 0xfc, 0xe8, 0xf9, + 0x49, 0xf4, 0xab, 0xef, 0x16, 0xea, 0xa2, 0xe3, 0x42, 0xdb, 0x26, 0xd6, 0x31, 0xcf, 0x8c, 0xcc, + 0x57, 0xd1, 0x6c, 0xd3, 0x50, 0xd8, 0x6a, 0xdb, 0x30, 0xe1, 0x15, 0xe8, 0x3e, 0xee, 0x3f, 0xf5, + 0x47, 0xfb, 0xd3, 0x03, 0x9f, 0x08, 0x20, 0x0b, 0xbc, 0x0d, 0x32, 0x11, 0xbe, 0x11, 0x97, 0x0e, + 0x9b, 0x0b, 0x7a, 0x08, 0x4e, 0x09, 0x74, 0x07, 0x85, 0x05, 0xe6, 0x05, 0x5a, 0x07, 0xb9, 0x06, + 0xd6, 0x05, 0xc8, 0x09, 0x63, 0x0f, 0x6a, 0x16, 0xf7, 0x17, 0x2b, 0x1a, 0xfa, 0x1c, 0xd6, 0x19, + 0xeb, 0x15, 0xbb, 0x11, 0x81, 0x0b, 0x7a, 0x05, 0xdb, 0xfe, 0xc7, 0xf8, 0x0a, 0xf1, 0x5c, 0xed, + 0xf7, 0xe7, 0x0c, 0xdf, 0x32, 0xda, 0x48, 0xd7, 0x40, 0xd5, 0x90, 0xd4, 0x32, 0xd7, 0x16, 0xda, + 0xea, 0xe1, 0xfb, 0xea, 0x43, 0xf0, 0xca, 0xf8, 0x47, 0x02, 0xb2, 0x06, 0x0b, 0x09, 0x90, 0x0b, + 0x18, 0x0f, 0xd9, 0x10, 0x7a, 0x0d, 0xc6, 0x09, 0x57, 0x09, 0xd4, 0x07, 0x60, 0x06, 0xa1, 0x04, + 0xe8, 0x04, 0x6a, 0x08, 0xab, 0x08, 0x8e, 0x09, 0x80, 0x0b, 0x57, 0x10, 0xd1, 0x16, 0x5e, 0x19, + 0xbc, 0x1a, 0xf3, 0x1b, 0x76, 0x19, 0x08, 0x14, 0xce, 0x0f, 0x7c, 0x0c, 0x0b, 0x05, 0xa8, 0x00, + 0x9c, 0xf6, 0xc0, 0xed, 0x10, 0xe7, 0xd1, 0xdc, 0xba, 0xd6, 0x90, 0xd3, 0x2b, 0xd1, 0xa4, 0xd0, + 0x6a, 0xd2, 0x3b, 0xd4, 0xae, 0xda, 0x55, 0xe4, 0x7e, 0xeb, 0x43, 0xf1, 0x8b, 0xf6, 0x32, 0xfa, + 0xb4, 0xfc, 0x4d, 0xfd, 0x79, 0xff, 0xff, 0x02, 0x1d, 0x05, 0xdb, 0x04, 0xb9, 0x05, 0x3c, 0x06, + 0x0c, 0x09, 0x02, 0x0b, 0xf3, 0x0c, 0x94, 0x13, 0x2c, 0x18, 0x14, 0x1a, 0xa8, 0x1a, 0xe8, 0x18, + 0x6c, 0x1c, 0x1b, 0x1e, 0xf5, 0x1f, 0x1c, 0x27, 0xcd, 0x2c, 0x64, 0x30, 0x30, 0x2f, 0x45, 0x2f, + 0x3f, 0x2b, 0x89, 0x28, 0xf9, 0x22, 0x92, 0x16, 0xc1, 0x0f, 0xc1, 0x06, 0x3e, 0xfc, 0xc5, 0xf0, + 0xcf, 0xe9, 0x19, 0xe6, 0xd0, 0xe2, 0x5d, 0xe0, 0x88, 0xe0, 0x3e, 0xe5, 0x69, 0xec, 0x7d, 0xf3, + 0x27, 0xf8, 0xb4, 0xfe, 0x87, 0x02, 0xb3, 0x02, 0x47, 0x04, 0xf7, 0x00, 0x8a, 0x01, 0x5f, 0x00, + 0xca, 0xfd, 0xea, 0xfb, 0x7c, 0xfe, 0xb2, 0x02, 0x26, 0x03, 0x5f, 0x05, 0x76, 0x07, 0xb7, 0x09, + 0x4c, 0x09, 0x93, 0x07, 0xae, 0x0e, 0xa9, 0x14, 0xb7, 0x18, 0x25, 0x1b, 0x45, 0x1d, 0x86, 0x20, + 0xcc, 0x1e, 0x49, 0x1e, 0xd4, 0x1b, 0x09, 0x19, 0xa4, 0x14, 0xc4, 0x0b, 0x6e, 0x01, 0xbb, 0xfa, + 0x1c, 0xf3, 0x76, 0xe7, 0xd5, 0xdf, 0x2c, 0xda, 0x82, 0xd5, 0x79, 0xd5, 0x3a, 0xd4, 0xc6, 0xd2, + 0x9a, 0xd4, 0x68, 0xd9, 0xb1, 0xdd, 0x9e, 0xe2, 0x01, 0xe8, 0xb0, 0xec, 0x1a, 0xf0, 0x82, 0xf0, + 0x5c, 0xf4, 0xdb, 0xf9, 0x08, 0xfc, 0x73, 0xfb, 0x89, 0xfa, 0x7b, 0xfc, 0x4c, 0xfd, 0xfe, 0xfa, + 0x4b, 0xfb, 0x16, 0xfe, 0x71, 0x01, 0xa1, 0xff, 0xe0, 0xfd, 0xd4, 0x00, 0x67, 0x07, 0x6d, 0x0b, + 0xf9, 0x0d, 0x32, 0x16, 0x0a, 0x19, 0xa1, 0x1b, 0x8c, 0x1b, 0xe2, 0x16, 0x50, 0x13, 0x9a, 0x0e, + 0x95, 0x04, 0x6e, 0xfa, 0xd8, 0xf3, 0xa3, 0xeb, 0x29, 0xe4, 0x86, 0xdd, 0x62, 0xda, 0xf2, 0xd9, + 0x07, 0xd9, 0xd3, 0xd9, 0xe9, 0xda, 0x39, 0xe0, 0xd9, 0xe5, 0xd3, 0xe9, 0x52, 0xef, 0x7c, 0xf6, + 0x5c, 0xfc, 0x79, 0xfe, 0xf6, 0x01, 0x02, 0x04, 0x6d, 0x07, 0x70, 0x0c, 0x6a, 0x0e, 0xe4, 0x10, + 0x34, 0x14, 0x16, 0x15, 0x70, 0x15, 0x85, 0x11, 0xd9, 0x13, 0x91, 0x14, 0x97, 0x10, 0xff, 0x0e, + 0x29, 0x0e, 0xc3, 0x11, 0x79, 0x12, 0xf6, 0x16, 0xfc, 0x1c, 0x11, 0x21, 0x6b, 0x23, 0x91, 0x21, + 0xc3, 0x20, 0xd2, 0x1d, 0xce, 0x19, 0xf5, 0x10, 0x04, 0x09, 0x90, 0x03, 0x1f, 0xfb, 0xb5, 0xf2, + 0x19, 0xed, 0x5f, 0xe7, 0x45, 0xe1, 0x11, 0xe0, 0x38, 0xdb, 0xef, 0xda, 0xff, 0xe0, 0x88, 0xe5, + 0x94, 0xeb, 0x42, 0xef, 0x9b, 0xf3, 0x76, 0xf9, 0x74, 0xfe, 0x09, 0x01, 0xd7, 0x05, 0xb1, 0x0c, + 0xce, 0x0c, 0x70, 0x09, 0x8b, 0x08, 0x50, 0x08, 0x56, 0x07, 0xb4, 0x04, 0x64, 0x08, 0x33, 0x0c, + 0x89, 0x0d, 0x5d, 0x0d, 0xdf, 0x0c, 0xef, 0x10, 0x44, 0x13, 0x49, 0x15, 0xa3, 0x18, 0x19, 0x1c, + 0xfc, 0x1a, 0xb6, 0x19, 0xe2, 0x16, 0x96, 0x14, 0xc4, 0x14, 0xb2, 0x0f, 0x8b, 0x0a, 0x8d, 0x05, + 0xba, 0xfe, 0x6b, 0xf6, 0x42, 0xf0, 0xe2, 0xeb, 0x2f, 0xe7, 0xee, 0xe6, 0x0f, 0xe4, 0x93, 0xde, + 0x9d, 0xdb, 0x0d, 0xdb, 0x98, 0xdd, 0x67, 0xe2, 0x39, 0xea, 0xb9, 0xf2, 0x17, 0xf9, 0xb4, 0xfd, + 0x44, 0xff, 0x33, 0x02, 0xdf, 0x05, 0x73, 0x05, 0xd4, 0x05, 0xd1, 0x05, 0x89, 0x06, 0xa5, 0x04, + 0xa8, 0x03, 0x8c, 0x01, 0x02, 0x04, 0x49, 0x06, 0x8f, 0x02, 0xed, 0x03, 0x8f, 0x07, 0x3f, 0x09, + 0xe3, 0x0a, 0x3a, 0x0d, 0xa2, 0x0d, 0xd3, 0x10, 0x4e, 0x12, 0x0d, 0x11, 0xe8, 0x11, 0x68, 0x11, + 0x2f, 0x0f, 0xdb, 0x09, 0x56, 0x06, 0xbf, 0x02, 0x32, 0xfb, 0x5a, 0xf6, 0x0a, 0xef, 0x1a, 0xeb, + 0xbb, 0xe8, 0xc4, 0xe4, 0x09, 0xe2, 0x36, 0xe3, 0x7d, 0xe6, 0x52, 0xea, 0xfd, 0xef, 0x48, 0xf6, + 0x5d, 0xfb, 0xb0, 0x02, 0xef, 0x03, 0x1f, 0x04, 0x8d, 0x08, 0xc1, 0x08, 0xb1, 0x09, 0x6f, 0x07, + 0x9d, 0x05, 0x8c, 0x05, 0x46, 0x04, 0xbc, 0x02, 0x7f, 0x02, 0x22, 0x06, 0xb3, 0x05, 0xe4, 0x03, + 0xc0, 0x01, 0x1c, 0xff, 0x54, 0xfd, 0xe5, 0xfd, 0x6d, 0xff, 0x88, 0xff, 0x8e, 0x03, 0xe2, 0x05, + 0x6d, 0x07, 0x24, 0x0a, 0x86, 0x0d, 0x54, 0x0c, 0x8e, 0x07, 0xa0, 0x05, 0xfa, 0xfd, 0x13, 0xf9, + 0x1c, 0xf2, 0xb7, 0xe8, 0x32, 0xe4, 0x3a, 0xe0, 0xaa, 0xdc, 0x95, 0xda, 0x0a, 0xdb, 0xe6, 0xde, + 0x47, 0xe6, 0xa5, 0xec, 0x66, 0xef, 0xed, 0xf7, 0x6f, 0xff, 0xe9, 0x01, 0xf4, 0x04, 0x86, 0x07, + 0x81, 0x0a, 0x0e, 0x0b, 0xd3, 0x0a, 0xb4, 0x08, 0x7e, 0x09, 0x60, 0x0a, 0xf6, 0x08, 0x5c, 0x0b, + 0xbb, 0x0f, 0xa2, 0x10, 0xb4, 0x0d, 0xfa, 0x0d, 0x3e, 0x0d, 0x24, 0x0d, 0xc3, 0x0f, 0xc9, 0x10, + 0xeb, 0x15, 0x6f, 0x19, 0x7f, 0x19, 0x37, 0x19, 0x01, 0x1b, 0x47, 0x1b, 0xa8, 0x18, 0xcf, 0x16, + 0x0f, 0x11, 0x45, 0x0b, 0x8b, 0x06, 0x1c, 0xfd, 0x5b, 0xf3, 0x3d, 0xed, 0x42, 0xe9, 0x0f, 0xe5, + 0x4d, 0xe1, 0x40, 0xdf, 0xc6, 0xdd, 0x9f, 0xe0, 0x4e, 0xe2, 0xd1, 0xe3, 0xf3, 0xe9, 0x31, 0xef, + 0x69, 0xf3, 0xe0, 0xf7, 0x27, 0xfb, 0xb0, 0xfd, 0x72, 0x03, 0x10, 0x05, 0x53, 0x07, 0xe1, 0x0c, + 0x32, 0x0d, 0xa8, 0x0b, 0x14, 0x0d, 0x95, 0x0d, 0xfb, 0x0a, 0x03, 0x0b, 0xda, 0x08, 0x27, 0x08, + 0xcf, 0x0a, 0xe1, 0x08, 0x52, 0x09, 0x88, 0x0b, 0xd6, 0x10, 0xb7, 0x12, 0x57, 0x12, 0x11, 0x16, + 0x1b, 0x16, 0x47, 0x14, 0x8e, 0x0e, 0x9e, 0x06, 0x3f, 0x00, 0xc2, 0xf8, 0x3a, 0xf0, 0x54, 0xea, + 0xf8, 0xe7, 0xc7, 0xe4, 0xd6, 0xe0, 0x84, 0xdf, 0x6c, 0xda, 0x80, 0xda, 0xe4, 0xdd, 0xfc, 0xdd, + 0x3c, 0xe3, 0xbe, 0xe7, 0xde, 0xea, 0xba, 0xed, 0xe0, 0xf0, 0xb9, 0xf4, 0xd9, 0xfb, 0x0c, 0x02, + 0x48, 0x04, 0x34, 0x0a, 0x04, 0x0e, 0x65, 0x0e, 0x37, 0x0e, 0x79, 0x11, 0xba, 0x14, 0xb6, 0x15, + 0xd9, 0x15, 0x85, 0x13, 0xc1, 0x15, 0xb8, 0x16, 0x18, 0x17, 0xd4, 0x18, 0xa4, 0x1f, 0xba, 0x24, + 0xa8, 0x23, 0x1e, 0x27, 0xe5, 0x27, 0x63, 0x26, 0x6c, 0x24, 0x7e, 0x1f, 0x7d, 0x1a, 0xa8, 0x14, + 0xca, 0x0c, 0xe6, 0x03, 0x89, 0xfb, 0x14, 0xf3, 0xf6, 0xeb, 0xb0, 0xe6, 0x70, 0xde, 0x3c, 0xda, + 0xb5, 0xda, 0x3a, 0xda, 0xd6, 0xd8, 0xfe, 0xdb, 0xa8, 0xe2, 0xef, 0xe5, 0xa6, 0xe9, 0xdc, 0xeb, + 0x1e, 0xf0, 0x96, 0xf5, 0x85, 0xf7, 0x6a, 0xf7, 0xad, 0xf8, 0x90, 0xfa, 0xe4, 0xf6, 0x3a, 0xf8, + 0x13, 0xfc, 0x47, 0x00, 0x36, 0x05, 0x46, 0x04, 0x13, 0x06, 0x11, 0x0a, 0x7e, 0x0d, 0xc6, 0x0f, + 0x20, 0x13, 0x05, 0x19, 0x06, 0x1c, 0x53, 0x1c, 0x7a, 0x1b, 0xa8, 0x1b, 0x3e, 0x1e, 0x4b, 0x1d, + 0xf7, 0x1a, 0x05, 0x19, 0x67, 0x16, 0xb6, 0x10, 0x53, 0x08, 0x36, 0x02, 0xc4, 0xfa, 0xc5, 0xf5, + 0x34, 0xf1, 0x80, 0xea, 0xf5, 0xe4, 0x8d, 0xe2, 0x6b, 0xde, 0x59, 0xdc, 0x26, 0xe0, 0x34, 0xe4, + 0xa2, 0xec, 0x45, 0xf3, 0x28, 0xf6, 0x9d, 0xfb, 0xc2, 0x00, 0x2b, 0x01, 0x8d, 0x02, 0x39, 0x07, + 0xde, 0x05, 0xe1, 0x03, 0x22, 0x02, 0xf4, 0x00, 0x6c, 0x03, 0x33, 0x02, 0x62, 0x01, 0xad, 0x01, + 0x2a, 0x04, 0x4c, 0x05, 0x03, 0x03, 0xb0, 0x03, 0xef, 0x06, 0x2d, 0x08, 0x04, 0x08, 0x19, 0x08, + 0xca, 0x08, 0x02, 0x09, 0x3b, 0x09, 0xd3, 0x07, 0xbf, 0x05, 0xe9, 0x02, 0xd0, 0xfc, 0xbf, 0xf8, + 0x62, 0xf2, 0x7a, 0xeb, 0x7a, 0xe8, 0xed, 0xe2, 0xb1, 0xdc, 0x73, 0xda, 0x0a, 0xdc, 0x27, 0xdd, + 0x1c, 0xe2, 0xd2, 0xe6, 0x44, 0xed, 0x18, 0xf4, 0x15, 0xf7, 0x27, 0xfb, 0xa6, 0x00, 0xf0, 0x04, + 0xf5, 0x05, 0x4f, 0x0a, 0x15, 0x0e, 0x86, 0x0e, 0xfe, 0x0e, 0x15, 0x0d, 0x44, 0x0f, 0x4f, 0x11, + 0x06, 0x12, 0x7b, 0x10, 0x7d, 0x10, 0x93, 0x10, 0xde, 0x0b, 0x1d, 0x09, 0x01, 0x08, 0xb4, 0x07, + 0xcf, 0x08, 0x6f, 0x0a, 0x8a, 0x0c, 0x52, 0x0e, 0x9c, 0x0f, 0x80, 0x10, 0x1b, 0x11, 0x90, 0x10, + 0x0a, 0x0d, 0x2d, 0x08, 0xae, 0x00, 0x56, 0xfb, 0xbf, 0xf5, 0x2b, 0xf1, 0xd6, 0xea, 0xf6, 0xe4, + 0x9c, 0xe4, 0x68, 0xe3, 0xa8, 0xe4, 0xab, 0xe7, 0xfd, 0xec, 0x9d, 0xf2, 0x6b, 0xf8, 0xa0, 0xfc, + 0xe1, 0xfe, 0x98, 0x05, 0x7d, 0x08, 0x0e, 0x0a, 0x29, 0x0d, 0x96, 0x0d, 0xc1, 0x0d, 0x8a, 0x0d, + 0x7c, 0x0d, 0x70, 0x10, 0xbd, 0x13, 0xa9, 0x14, 0x84, 0x13, 0x9c, 0x11, 0x29, 0x0f, 0xe1, 0x0c, + 0xfa, 0x0a, 0xec, 0x08, 0x29, 0x0a, 0x23, 0x0a, 0xf3, 0x09, 0x7b, 0x09, 0x18, 0x09, 0xb6, 0x09, + 0x4c, 0x08, 0x03, 0x08, 0xcf, 0x08, 0xd8, 0x06, 0x58, 0x01, 0x6d, 0xfb, 0x37, 0xf1, 0x5d, 0xeb, + 0x8c, 0xe7, 0x16, 0xe1, 0x3e, 0xdf, 0x4e, 0xdd, 0x3a, 0xdb, 0xa1, 0xd9, 0x05, 0xd9, 0x9d, 0xda, + 0x1e, 0xe0, 0x63, 0xe6, 0xb9, 0xe9, 0xdd, 0xf0, 0x7c, 0xf4, 0xf7, 0xf7, 0x68, 0xfd, 0x49, 0x02, + 0x8c, 0x08, 0x9b, 0x0c, 0x0b, 0x0e, 0x02, 0x0e, 0xfc, 0x0e, 0xd6, 0x10, 0x24, 0x0f, 0x86, 0x0b, + 0x17, 0x0b, 0x34, 0x0c, 0x0b, 0x0c, 0xf1, 0x0b, 0xa0, 0x0f, 0x3a, 0x12, 0x07, 0x14, 0x07, 0x16, + 0xa9, 0x17, 0xd6, 0x1b, 0x4b, 0x1d, 0x33, 0x1d, 0x7c, 0x1b, 0xca, 0x17, 0x25, 0x12, 0x8f, 0x0c, + 0xdc, 0x05, 0xd3, 0xfd, 0x4f, 0xfb, 0x6e, 0xf7, 0xc3, 0xf2, 0xe3, 0xed, 0x08, 0xea, 0x80, 0xe9, + 0xd5, 0xe9, 0xfe, 0xea, 0xa9, 0xea, 0x96, 0xef, 0x72, 0xf2, 0xff, 0xf2, 0x32, 0xf5, 0x2a, 0xf7, + 0x31, 0xfa, 0xc5, 0xfc, 0x44, 0x00, 0x2f, 0x03, 0x15, 0x06, 0xaf, 0x03, 0x31, 0x00, 0x28, 0x02, + 0x20, 0x04, 0xf2, 0x04, 0x7c, 0x05, 0x72, 0x04, 0x81, 0x02, 0x17, 0x00, 0x46, 0xfe, 0x2b, 0xff, + 0x44, 0x03, 0x42, 0x06, 0xf3, 0x09, 0x72, 0x0b, 0xcd, 0x0c, 0xa5, 0x0f, 0xd9, 0x0e, 0x0d, 0x11, + 0x91, 0x11, 0xd5, 0x10, 0xa2, 0x0e, 0x3b, 0x07, 0x5c, 0x01, 0x5c, 0xfc, 0x34, 0xf8, 0xa7, 0xf1, + 0xd9, 0xed, 0xdc, 0xe8, 0xf2, 0xe4, 0x6f, 0xe5, 0x3d, 0xe2, 0x65, 0xe2, 0x96, 0xe6, 0x56, 0xe9, + 0xe0, 0xed, 0xe0, 0xf2, 0x67, 0xf6, 0xd4, 0xf9, 0xb5, 0xfc, 0xb0, 0xfe, 0x7a, 0x01, 0x53, 0x03, + 0x5a, 0x01, 0x4c, 0xff, 0x9c, 0xfe, 0xb5, 0xff, 0xb1, 0x01, 0xf5, 0x01, 0xaf, 0x04, 0x6f, 0x07, + 0x27, 0x08, 0x59, 0x08, 0xb3, 0x09, 0xff, 0x0b, 0x15, 0x0e, 0x03, 0x0e, 0x63, 0x0f, 0x11, 0x12, + 0xd6, 0x0f, 0x06, 0x11, 0xc9, 0x11, 0x17, 0x12, 0x57, 0x14, 0x23, 0x13, 0x9c, 0x0e, 0x1c, 0x08, + 0x21, 0x03, 0x35, 0xfd, 0x16, 0xf8, 0xce, 0xf0, 0x0a, 0xe9, 0x97, 0xe5, 0x86, 0xe0, 0xc6, 0xdc, + 0x8c, 0xdc, 0x0d, 0xdf, 0x17, 0xe3, 0x28, 0xe8, 0x30, 0xee, 0xa4, 0xf4, 0x84, 0xf9, 0xe1, 0xfb, + 0x3b, 0xff, 0xf6, 0x04, 0xa2, 0x06, 0x3b, 0x04, 0xa5, 0x04, 0x2b, 0x08, 0x76, 0x08, 0xe5, 0x05, + 0xa4, 0x05, 0x80, 0x06, 0xdd, 0x06, 0x61, 0x06, 0x39, 0x06, 0x8a, 0x08, 0xa2, 0x09, 0x41, 0x0a, + 0x4f, 0x09, 0x2c, 0x0b, 0x78, 0x0c, 0x7f, 0x0d, 0x29, 0x10, 0x2b, 0x0f, 0x02, 0x0f, 0x87, 0x0d, + 0x16, 0x0a, 0x46, 0x03, 0xeb, 0xfc, 0xce, 0xf7, 0x65, 0xf2, 0x93, 0xef, 0xde, 0xe9, 0xd8, 0xe4, + 0x25, 0xe2, 0xa4, 0xdf, 0x26, 0xdf, 0x87, 0xe3, 0x6c, 0xe8, 0x41, 0xec, 0xad, 0xf1, 0x90, 0xf4, + 0x03, 0xf9, 0xf1, 0xfc, 0x6e, 0xfe, 0x20, 0x06, 0xf5, 0x0d, 0x28, 0x10, 0x93, 0x10, 0xce, 0x11, + 0x37, 0x14, 0x24, 0x18, 0xff, 0x1a, 0xab, 0x1b, 0x05, 0x1f, 0xae, 0x1e, 0xa0, 0x1b, 0x89, 0x18, + 0x3f, 0x15, 0x21, 0x16, 0x0f, 0x15, 0xf3, 0x14, 0xca, 0x15, 0x6f, 0x16, 0xee, 0x16, 0xc3, 0x15, + 0x40, 0x15, 0x9a, 0x14, 0xb1, 0x14, 0xb9, 0x0f, 0x69, 0x0a, 0x6c, 0x04, 0x3d, 0xfa, 0xdd, 0xf1, + 0xfc, 0xe8, 0xb2, 0xe0, 0x0f, 0xdd, 0x7e, 0xda, 0x32, 0xd7, 0xcd, 0xd6, 0xe8, 0xd8, 0xea, 0xda, + 0x6c, 0xde, 0xdc, 0xe2, 0x4e, 0xe8, 0x8d, 0xee, 0xb1, 0xf0, 0x16, 0xf2, 0x35, 0xf6, 0x93, 0xfa, + 0xd2, 0xfd, 0x5a, 0xff, 0xca, 0x01, 0xb8, 0x06, 0xca, 0x0b, 0x3b, 0x0d, 0x49, 0x10, 0xe9, 0x11, + 0xe4, 0x12, 0xd3, 0x12, 0xc2, 0x12, 0x11, 0x16, 0x3a, 0x16, 0xb6, 0x18, 0xd8, 0x1a, 0xff, 0x1a, + 0x7e, 0x1b, 0x46, 0x1c, 0xe8, 0x1c, 0x1c, 0x1c, 0x16, 0x1c, 0x83, 0x19, 0x24, 0x15, 0x4a, 0x0e, + 0x47, 0x06, 0x98, 0x00, 0x4a, 0xfa, 0xf5, 0xf3, 0xe6, 0xed, 0xff, 0xe8, 0xa2, 0xe4, 0x3d, 0xe0, + 0xc0, 0xdc, 0x71, 0xdb, 0x0f, 0xdd, 0x45, 0xdf, 0x5d, 0xe1, 0x5e, 0xe6, 0x0b, 0xec, 0x6d, 0xee, + 0xaf, 0xf0, 0xba, 0xf6, 0x9f, 0xfc, 0xa5, 0xfd, 0xfd, 0xfe, 0x2f, 0xff, 0x1f, 0x00, 0x55, 0x00, + 0x40, 0xff, 0xf2, 0x00, 0x02, 0x01, 0xf5, 0x00, 0xad, 0xff, 0x1c, 0xff, 0xac, 0xfe, 0x2c, 0xff, + 0x5b, 0x01, 0x13, 0x03, 0x00, 0x06, 0x2c, 0x06, 0x49, 0x06, 0x90, 0x06, 0x68, 0x06, 0x57, 0x07, + 0x5f, 0x06, 0x9c, 0x03, 0x68, 0xff, 0xfe, 0xf9, 0xab, 0xf4, 0x65, 0xf2, 0xeb, 0xee, 0x8c, 0xec, + 0x39, 0xeb, 0xc0, 0xe6, 0x2d, 0xe5, 0x2b, 0xe5, 0x18, 0xe6, 0x5c, 0xea, 0x6b, 0xed, 0x3a, 0xf1, + 0x24, 0xf6, 0x52, 0xf9, 0x08, 0xfa, 0x94, 0xfe, 0xc2, 0x03, 0xfd, 0x07, 0xaa, 0x0d, 0x73, 0x0e, + 0xa7, 0x0f, 0x5d, 0x10, 0x76, 0x10, 0x5d, 0x11, 0x76, 0x10, 0x9b, 0x11, 0xea, 0x10, 0x45, 0x10, + 0xc8, 0x0c, 0xd3, 0x0a, 0x72, 0x09, 0x7b, 0x08, 0xac, 0x0a, 0x14, 0x0c, 0x7a, 0x0e, 0x8d, 0x0e, + 0x92, 0x0d, 0x2f, 0x0f, 0xc3, 0x10, 0xb9, 0x12, 0xb3, 0x13, 0xa7, 0x12, 0xef, 0x0f, 0xeb, 0x0b, + 0xe4, 0x05, 0x14, 0x00, 0x50, 0xfb, 0x8f, 0xf6, 0x22, 0xf2, 0xff, 0xee, 0xcb, 0xeb, 0x38, 0xec, + 0x22, 0xee, 0x04, 0xf1, 0x39, 0xf5, 0xca, 0xfa, 0xa6, 0x00, 0x10, 0x04, 0x2a, 0x06, 0x2a, 0x09, + 0x79, 0x0d, 0x05, 0x0d, 0xa8, 0x0b, 0x1d, 0x0a, 0x75, 0x0a, 0xde, 0x09, 0xa5, 0x08, 0x55, 0x0b, + 0xbd, 0x0a, 0x8b, 0x09, 0x6a, 0x08, 0x45, 0x07, 0xff, 0x06, 0x64, 0x06, 0x87, 0x05, 0x95, 0x05, + 0x73, 0x06, 0xd9, 0x04, 0xf2, 0x04, 0x66, 0x04, 0x85, 0x04, 0x3a, 0x07, 0xc3, 0x07, 0xa5, 0x07, + 0x6f, 0x05, 0x77, 0x01, 0x97, 0xfd, 0x67, 0xf9, 0xef, 0xf3, 0x55, 0xee, 0x37, 0xeb, 0xdf, 0xe7, + 0x1c, 0xe2, 0x10, 0xdd, 0xa0, 0xdb, 0x7c, 0xdd, 0x57, 0xdf, 0xb2, 0xe3, 0x03, 0xec, 0x3d, 0xf0, + 0xdb, 0xf3, 0xc0, 0xf6, 0x57, 0xfb, 0x64, 0x00, 0xab, 0x03, 0x0b, 0x06, 0x95, 0x07, 0x63, 0x09, + 0xf0, 0x09, 0x45, 0x0b, 0xe4, 0x0c, 0xd4, 0x0e, 0x38, 0x10, 0x3e, 0x0e, 0xed, 0x0d, 0x08, 0x0f, + 0xe0, 0x0f, 0xd5, 0x10, 0x64, 0x11, 0x24, 0x11, 0x64, 0x12, 0xf9, 0x12, 0x54, 0x11, 0x49, 0x12, + 0xf8, 0x11, 0xd1, 0x11, 0x2a, 0x10, 0x47, 0x0b, 0x88, 0x07, 0x74, 0x03, 0x98, 0xfe, 0x0b, 0xf9, + 0x36, 0xf3, 0xec, 0xee, 0x2a, 0xea, 0x32, 0xe6, 0x96, 0xe3, 0xd6, 0xe3, 0x98, 0xe3, 0x79, 0xe4, + 0x0a, 0xe7, 0x96, 0xe8, 0x07, 0xec, 0xce, 0xeb, 0x6a, 0xed, 0xcc, 0xf0, 0x02, 0xf5, 0x82, 0xf7, + 0xb8, 0xf8, 0x7f, 0xfb, 0x98, 0xfd, 0xb7, 0xff, 0xc0, 0x00, 0x88, 0x04, 0xcb, 0x08, 0x1d, 0x0a, + 0x0c, 0x0a, 0xc8, 0x07, 0x65, 0x06, 0x3c, 0x05, 0xfc, 0x05, 0x9b, 0x08, 0x32, 0x0b, 0x9d, 0x0e, + 0x35, 0x12, 0xa0, 0x14, 0x05, 0x16, 0xf8, 0x17, 0x1c, 0x1a, 0xc7, 0x1a, 0x93, 0x18, 0x4b, 0x14, + 0x18, 0x0f, 0x52, 0x08, 0xa8, 0x00, 0x6f, 0xfb, 0x9e, 0xf5, 0x62, 0xf1, 0x49, 0xec, 0xb8, 0xe8, + 0xee, 0xe7, 0x54, 0xe8, 0x94, 0xe7, 0x8a, 0xe8, 0xbf, 0xed, 0x07, 0xef, 0xa1, 0xf0, 0xf5, 0xf2, + 0x01, 0xf7, 0x1d, 0xfa, 0xa2, 0xf9, 0xbb, 0xfb, 0x6c, 0xfd, 0x52, 0xfe, 0x3e, 0xfe, 0xaa, 0xff, + 0xdd, 0x01, 0xdf, 0x04, 0x5a, 0x06, 0x25, 0x06, 0x62, 0x08, 0xf3, 0x07, 0xd7, 0x08, 0xd7, 0x0a, + 0x99, 0x0b, 0xcf, 0x0d, 0x64, 0x0f, 0x44, 0x10, 0x3c, 0x11, 0xea, 0x12, 0x5a, 0x14, 0x14, 0x16, + 0x9c, 0x17, 0x75, 0x15, 0x31, 0x12, 0x50, 0x0d, 0xf3, 0x05, 0xe7, 0x00, 0xb7, 0xfc, 0xa5, 0xf9, + 0x83, 0xf4, 0x3d, 0xed, 0x38, 0xe9, 0xe7, 0xe5, 0x84, 0xe2, 0xf5, 0xe2, 0xfd, 0xe5, 0x03, 0xe9, + 0x08, 0xeb, 0x7a, 0xed, 0x6d, 0xf1, 0x38, 0xf6, 0xf1, 0xfa, 0xbd, 0xfe, 0x92, 0x02, 0x2c, 0x05, + 0x95, 0x06, 0x2c, 0x06, 0x0f, 0x06, 0x05, 0x08, 0x59, 0x09, 0xf0, 0x07, 0x76, 0x07, 0x5c, 0x05, + 0x71, 0x04, 0x56, 0x05, 0x1f, 0x05, 0x42, 0x06, 0x57, 0x07, 0x59, 0x08, 0xec, 0x08, 0x4b, 0x08, + 0x88, 0x09, 0x6c, 0x09, 0x47, 0x09, 0x6b, 0x07, 0xc3, 0x04, 0xad, 0x03, 0xac, 0xff, 0xa5, 0xfa, + 0xd1, 0xf6, 0x1e, 0xf6, 0x07, 0xf3, 0x51, 0xef, 0xd9, 0xea, 0x61, 0xe6, 0x0a, 0xe5, 0xcb, 0xe2, + 0x85, 0xe4, 0x20, 0xe9, 0x36, 0xee, 0xbc, 0xf1, 0xab, 0xf4, 0xf4, 0xf8, 0x08, 0xff, 0x1b, 0x06, + 0x74, 0x0a, 0x1e, 0x0f, 0xfc, 0x13, 0x0c, 0x15, 0x07, 0x15, 0x8c, 0x14, 0x25, 0x16, 0x41, 0x18, + 0xaa, 0x18, 0x50, 0x18, 0x41, 0x16, 0x3b, 0x12, 0x1b, 0x10, 0x4c, 0x0f, 0xc9, 0x0e, 0xf7, 0x0d, + 0x9e, 0x0d, 0xad, 0x0c, 0x8a, 0x0c, 0x18, 0x0b, 0xb5, 0x09, 0x16, 0x0a, 0xc0, 0x08, 0xed, 0x07, + 0x7e, 0x05, 0xa1, 0x01, 0xd6, 0xfb, 0xc3, 0xf5, 0x00, 0xee, 0xd7, 0xe9, 0xc7, 0xe4, 0xb4, 0xde, + 0xce, 0xdd, 0x6c, 0xdb, 0xd9, 0xd9, 0xcb, 0xd9, 0xec, 0xdc, 0x41, 0xe2, 0x19, 0xe7, 0xb3, 0xeb, + 0x65, 0xf1, 0xd2, 0xf7, 0x37, 0xfb, 0xf8, 0xfe, 0x07, 0x01, 0x2b, 0x03, 0xf0, 0x06, 0x38, 0x08, + 0xaa, 0x0a, 0x46, 0x0e, 0x07, 0x12, 0xde, 0x15, 0xb6, 0x17, 0x75, 0x18, 0x6b, 0x18, 0x72, 0x18, + 0x19, 0x19, 0x65, 0x1a, 0x09, 0x1b, 0x47, 0x19, 0x4a, 0x18, 0x14, 0x16, 0xd9, 0x13, 0x56, 0x14, + 0x47, 0x13, 0xb4, 0x12, 0x55, 0x11, 0x88, 0x0e, 0xe1, 0x0a, 0xaa, 0x05, 0x74, 0x01, 0x6c, 0xfe, + 0x72, 0xf9, 0x4f, 0xf3, 0x43, 0xed, 0x60, 0xe6, 0xa1, 0xdf, 0x23, 0xdd, 0x84, 0xdd, 0x55, 0xdf, + 0xb5, 0xe2, 0x2e, 0xe7, 0x3b, 0xeb, 0x7d, 0xee, 0x87, 0xf2, 0xd2, 0xf6, 0x75, 0xfa, 0x48, 0xfc, + 0xe6, 0xfe, 0xcc, 0xff, 0x21, 0x00, 0xbf, 0x01, 0x54, 0x03, 0x46, 0x05, 0xb3, 0x06, 0xa3, 0x08, + 0x0c, 0x08, 0x63, 0x06, 0xa4, 0x05, 0x77, 0x03, 0xa3, 0x04, 0x75, 0x05, 0xd2, 0x05, 0x8c, 0x06, + 0x81, 0x07, 0xd1, 0x07, 0x36, 0x09, 0x5f, 0x0b, 0x91, 0x0b, 0x1e, 0x0d, 0x32, 0x0b, 0xc1, 0x07, + 0x07, 0x03, 0x4c, 0xfc, 0xb3, 0xf8, 0x2f, 0xf6, 0xd5, 0xf1, 0x88, 0xec, 0x96, 0xe9, 0xa0, 0xe6, + 0x74, 0xe4, 0x9f, 0xe4, 0x5a, 0xe6, 0x1b, 0xeb, 0x5c, 0xed, 0x38, 0xed, 0xa2, 0xf0, 0xd5, 0xf4, + 0x45, 0xf7, 0x27, 0xfa, 0x7b, 0xfd, 0x63, 0x01, 0xe6, 0x02, 0xc6, 0x02, 0x99, 0x05, 0x2b, 0x08, + 0x60, 0x08, 0xc1, 0x09, 0x97, 0x0a, 0x82, 0x08, 0xb5, 0x07, 0x6a, 0x03, 0xa7, 0x01, 0xcd, 0x01, + 0x2a, 0x02, 0x65, 0x04, 0xb9, 0x08, 0xcc, 0x0b, 0xf6, 0x0e, 0x7a, 0x13, 0x0e, 0x15, 0xe4, 0x17, + 0xc9, 0x17, 0xdd, 0x17, 0x18, 0x18, 0xe4, 0x12, 0xf5, 0x0d, 0xf3, 0x09, 0x79, 0x05, 0xe0, 0xff, + 0x93, 0xfb, 0x5d, 0xf8, 0x0b, 0xf6, 0xc8, 0xf3, 0x7b, 0xf2, 0xb0, 0xf4, 0x53, 0xf6, 0x2e, 0xf8, + 0xee, 0xf8, 0x88, 0xf9, 0xfa, 0xfc, 0x99, 0xfe, 0x35, 0xff, 0xe9, 0x00, 0x22, 0x02, 0x24, 0x01, + 0x35, 0x00, 0xaf, 0x00, 0xaa, 0x02, 0xfe, 0x04, 0x4e, 0x06, 0xb5, 0x04, 0x7d, 0x03, 0x48, 0x01, + 0x85, 0xff, 0x2f, 0x00, 0xf2, 0x00, 0x77, 0x02, 0x7e, 0x04, 0x27, 0x04, 0xcd, 0x02, 0xc9, 0x03, + 0xda, 0x06, 0x5c, 0x09, 0xbf, 0x0a, 0x64, 0x0c, 0x68, 0x0c, 0xe8, 0x09, 0x9a, 0x05, 0x79, 0x01, + 0x19, 0xff, 0xee, 0xfc, 0x84, 0xf9, 0x1e, 0xf6, 0x1d, 0xf1, 0x78, 0xec, 0xac, 0xe6, 0x9d, 0xe2, + 0xf2, 0xe2, 0x77, 0xe5, 0x60, 0xe7, 0x2b, 0xea, 0x0d, 0xef, 0xe2, 0xf2, 0x2d, 0xf6, 0x2a, 0xfb, + 0x92, 0x00, 0x5c, 0x06, 0xb1, 0x07, 0xb5, 0x08, 0x64, 0x09, 0xef, 0x07, 0xc1, 0x09, 0xd5, 0x0a, + 0x2d, 0x0b, 0x87, 0x0b, 0x5d, 0x0b, 0x70, 0x09, 0xb9, 0x09, 0xec, 0x08, 0x42, 0x09, 0xf2, 0x0d, + 0xc5, 0x0e, 0x7e, 0x0f, 0x48, 0x10, 0xa3, 0x0f, 0x01, 0x10, 0x14, 0x10, 0x5b, 0x0e, 0xe4, 0x0d, + 0xfe, 0x0c, 0x63, 0x07, 0xa8, 0x03, 0xd3, 0x01, 0x17, 0xfd, 0xdf, 0xf8, 0x41, 0xf4, 0xd9, 0xef, + 0x05, 0xec, 0x73, 0xe6, 0xcd, 0xe3, 0x9d, 0xe4, 0x10, 0xe5, 0x6a, 0xe6, 0x6a, 0xe8, 0xff, 0xec, + 0x73, 0xf1, 0x2c, 0xf4, 0xa5, 0xf7, 0x03, 0xfd, 0xd8, 0xff, 0x42, 0x02, 0x43, 0x05, 0x63, 0x06, + 0xe6, 0x08, 0x0d, 0x0b, 0xfa, 0x0c, 0xc3, 0x0e, 0xaa, 0x10, 0x6f, 0x0f, 0x8c, 0x0f, 0xe9, 0x0e, + 0x02, 0x0e, 0x5d, 0x0f, 0xe4, 0x0f, 0x78, 0x12, 0x77, 0x13, 0x8b, 0x13, 0xb4, 0x13, 0xaf, 0x13, + 0xa4, 0x13, 0x6b, 0x13, 0xe1, 0x13, 0x4f, 0x0f, 0x07, 0x0a, 0x44, 0x06, 0x6c, 0x01, 0x28, 0xfb, + 0x5c, 0xf5, 0x1b, 0xf1, 0xb0, 0xea, 0x13, 0xe4, 0x13, 0xdf, 0xb3, 0xdb, 0x68, 0xdc, 0x52, 0xdd, + 0x76, 0xdd, 0xdc, 0xdf, 0x0a, 0xe4, 0xc5, 0xe7, 0xa7, 0xeb, 0x14, 0xf1, 0x6a, 0xf5, 0xff, 0xf7, + 0x98, 0xf9, 0x39, 0xf9, 0x11, 0xfa, 0x36, 0xfd, 0x27, 0x01, 0x5d, 0x06, 0x4d, 0x0a, 0xd2, 0x0c, + 0xb9, 0x0e, 0xdf, 0x0e, 0x20, 0x0f, 0xd0, 0x0f, 0xeb, 0x11, 0x98, 0x12, 0x37, 0x12, 0x93, 0x13, + 0xca, 0x13, 0x34, 0x13, 0x3e, 0x14, 0xd5, 0x15, 0x06, 0x18, 0x89, 0x19, 0xa9, 0x16, 0xd6, 0x12, + 0xbd, 0x0e, 0x73, 0x08, 0x49, 0x03, 0x1a, 0xfd, 0x90, 0xf5, 0xa0, 0xef, 0x2f, 0xe8, 0x6d, 0xde, + 0xf6, 0xd9, 0xfb, 0xd9, 0x26, 0xda, 0x10, 0xdd, 0x01, 0xe1, 0x0b, 0xe6, 0x33, 0xe9, 0x8b, 0xeb, + 0x77, 0xef, 0x2a, 0xf4, 0x4e, 0xf8, 0x18, 0xfc, 0xcd, 0xfd, 0xe9, 0xfe, 0xed, 0x01, 0x59, 0x02, + 0xb1, 0x04, 0xb2, 0x06, 0x2b, 0x06, 0x65, 0x06, 0x2c, 0x05, 0x06, 0x04, 0xe5, 0x03, 0x2f, 0x04, + 0x37, 0x04, 0x26, 0x06, 0x02, 0x08, 0xc2, 0x08, 0x9d, 0x0c, 0xa0, 0x0e, 0x00, 0x0f, 0xbc, 0x11, + 0x80, 0x11, 0xb7, 0x0e, 0x3b, 0x0c, 0x2c, 0x08, 0x6b, 0x04, 0x45, 0x00, 0x3f, 0xfb, 0x8b, 0xf7, + 0xb4, 0xf4, 0x43, 0xf1, 0xcf, 0xed, 0x9c, 0xed, 0x8e, 0xee, 0x7a, 0xf0, 0xbf, 0xf1, 0x56, 0xf5, + 0xaf, 0xf8, 0x36, 0xfc, 0x3a, 0x00, 0x7b, 0x03, 0x14, 0x07, 0x0f, 0x0b, 0xab, 0x0d, 0x58, 0x0e, + 0x95, 0x0f, 0x5c, 0x0f, 0xfa, 0x11, 0xbf, 0x15, 0x4f, 0x16, 0xd1, 0x16, 0x80, 0x14, 0xa0, 0x10, + 0x1c, 0x0c, 0xab, 0x08, 0x29, 0x06, 0x36, 0x05, 0x17, 0x05, 0x57, 0x04, 0xf2, 0x04, 0xf8, 0x04, + 0xed, 0x04, 0x51, 0x06, 0xd2, 0x08, 0x5c, 0x08, 0x7c, 0x05, 0xf7, 0x02, 0x38, 0xfe, 0xc0, 0xf9, + 0x29, 0xf7, 0x5f, 0xf2, 0x04, 0xee, 0xd1, 0xeb, 0xa5, 0xe7, 0x2a, 0xe3, 0x8b, 0xe1, 0xed, 0xe1, + 0xdc, 0xe3, 0x71, 0xe6, 0xe1, 0xe8, 0x06, 0xed, 0x67, 0xf0, 0x29, 0xf4, 0xf9, 0xf8, 0xb2, 0xfe, + 0x7a, 0x02, 0x49, 0x06, 0x2d, 0x0a, 0x6b, 0x0b, 0xdf, 0x0c, 0x55, 0x0e, 0xc0, 0x11, 0xb0, 0x14, + 0x34, 0x16, 0xeb, 0x15, 0x24, 0x14, 0x40, 0x13, 0xf3, 0x12, 0x27, 0x11, 0xfe, 0x11, 0x1e, 0x13, + 0xea, 0x11, 0x06, 0x11, 0xc9, 0x0f, 0xa1, 0x0d, 0xfb, 0x0d, 0x80, 0x0f, 0xd4, 0x10, 0xcc, 0x10, + 0x8b, 0x0d, 0x91, 0x08, 0x86, 0x06, 0x76, 0x01, 0xf2, 0xfb, 0x54, 0xf9, 0x95, 0xf4, 0x48, 0xee, + 0x0c, 0xe8, 0x4a, 0xe3, 0x92, 0xe0, 0x99, 0xdf, 0xcf, 0xdf, 0x92, 0xe2, 0xa6, 0xe5, 0xf7, 0xe7, + 0xe0, 0xeb, 0xae, 0xf0, 0x7c, 0xf6, 0x47, 0xfa, 0x80, 0xfc, 0xd9, 0xfe, 0x32, 0x00, 0xcd, 0x00, + 0xf0, 0x00, 0x2e, 0x01, 0x70, 0x02, 0xb4, 0x03, 0x86, 0x03, 0xed, 0x02, 0xab, 0x02, 0xcd, 0x01, + 0x3c, 0x02, 0xa7, 0x03, 0x54, 0x03, 0x06, 0x05, 0xad, 0x08, 0xbd, 0x08, 0x1f, 0x09, 0x7f, 0x09, + 0x74, 0x0a, 0x1a, 0x0b, 0x6c, 0x09, 0x44, 0x06, 0x4a, 0x03, 0x78, 0x00, 0xac, 0xfc, 0x60, 0xf9, + 0x6e, 0xf7, 0xc8, 0xf4, 0xaa, 0xee, 0xdf, 0xe9, 0x56, 0xe6, 0x6f, 0xe4, 0x5a, 0xe3, 0x2f, 0xe4, + 0xaf, 0xe5, 0xce, 0xe7, 0x3a, 0xea, 0xc9, 0xeb, 0xcc, 0xf0, 0xe9, 0xf5, 0x12, 0xfb, 0xa3, 0xfe, + 0xfd, 0xfe, 0xc5, 0x00, 0xf9, 0x01, 0x1e, 0x04, 0x72, 0x06, 0x00, 0x08, 0xbd, 0x09, 0xb6, 0x0b, + 0x3d, 0x0c, 0x5a, 0x0a, 0xec, 0x09, 0x68, 0x0b, 0x6c, 0x0d, 0x23, 0x0e, 0x23, 0x10, 0x1a, 0x13, + 0x72, 0x13, 0x36, 0x14, 0x29, 0x17, 0x6e, 0x1a, 0x8c, 0x1e, 0x52, 0x20, 0x19, 0x1f, 0x81, 0x1e, + 0x56, 0x1c, 0x11, 0x16, 0x93, 0x10, 0xab, 0x0c, 0x38, 0x07, 0x46, 0x00, 0x3b, 0xf9, 0x20, 0xf4, + 0x43, 0xf0, 0x92, 0xed, 0xbf, 0xeb, 0xdd, 0xed, 0x38, 0xef, 0x81, 0xf0, 0xf4, 0xf2, 0xb1, 0xf4, + 0xbe, 0xf7, 0xb2, 0xfa, 0xd7, 0xfb, 0xe0, 0xfb, 0x9d, 0xfa, 0xd6, 0xf9, 0xfb, 0xfa, 0xc2, 0xfc, + 0xbf, 0xff, 0xbc, 0x02, 0xa1, 0x03, 0xb4, 0x04, 0x8a, 0x04, 0xf4, 0x02, 0x06, 0x03, 0xac, 0x03, + 0xfd, 0x03, 0x69, 0x05, 0x95, 0x06, 0x90, 0x06, 0x35, 0x08, 0x49, 0x0a, 0x80, 0x0e, 0x52, 0x12, + 0xba, 0x12, 0xa8, 0x11, 0x13, 0x11, 0x7a, 0x0e, 0x56, 0x0a, 0x61, 0x06, 0xb5, 0x01, 0xf8, 0xfc, + 0xdf, 0xf6, 0x1e, 0xf1, 0x7a, 0xec, 0xc6, 0xe8, 0xd8, 0xe6, 0xd1, 0xe5, 0x01, 0xe8, 0xf4, 0xea, + 0xb2, 0xec, 0x32, 0xef, 0xf3, 0xf1, 0xd9, 0xf4, 0x5a, 0xf8, 0x57, 0xfb, 0x36, 0xfe, 0x63, 0x00, + 0x74, 0x01, 0x39, 0x02, 0x52, 0x04, 0x1b, 0x06, 0x72, 0x07, 0xab, 0x09, 0x80, 0x09, 0xe8, 0x07, + 0xdd, 0x07, 0x14, 0x07, 0xcd, 0x06, 0xcf, 0x06, 0xe4, 0x08, 0x9c, 0x09, 0x4c, 0x08, 0xb9, 0x07, + 0x9f, 0x09, 0x59, 0x0b, 0xc6, 0x0c, 0xd0, 0x0c, 0xe7, 0x0a, 0xef, 0x08, 0xa3, 0x04, 0x1f, 0x00, + 0xb4, 0xfd, 0xe8, 0xfa, 0x4f, 0xf5, 0xab, 0xf0, 0x53, 0xed, 0x8e, 0xea, 0xa9, 0xe8, 0xb8, 0xe5, + 0xf1, 0xe5, 0x68, 0xe7, 0xc8, 0xe7, 0x00, 0xe9, 0x65, 0xea, 0x8d, 0xed, 0xff, 0xf2, 0x2c, 0xf8, + 0x5d, 0xfc, 0x9c, 0x00, 0xeb, 0x03, 0x55, 0x07, 0x6d, 0x0b, 0x52, 0x0e, 0x97, 0x11, 0x05, 0x14, + 0x4d, 0x15, 0x22, 0x15, 0x17, 0x13, 0x27, 0x11, 0x2a, 0x0f, 0x23, 0x0d, 0xe6, 0x0c, 0x9f, 0x0e, + 0x94, 0x0d, 0x3c, 0x0d, 0x86, 0x0d, 0x5a, 0x0c, 0x34, 0x0e, 0x64, 0x0f, 0x9a, 0x0e, 0x8c, 0x0d, + 0xe5, 0x0b, 0xf3, 0x06, 0x2b, 0x01, 0x17, 0xfe, 0x2b, 0xfa, 0x2f, 0xf6, 0x0f, 0xef, 0x45, 0xe9, + 0x81, 0xe4, 0x14, 0xe0, 0x40, 0xdd, 0x42, 0xdc, 0x7b, 0xdd, 0x87, 0xe0, 0xb7, 0xe2, 0x8e, 0xe4, + 0x92, 0xe8, 0x32, 0xee, 0x7a, 0xf4, 0xa0, 0xf9, 0x8d, 0xfd, 0x0f, 0x01, 0x46, 0x02, 0x60, 0x04, + 0x8b, 0x08, 0x07, 0x0c, 0x69, 0x0e, 0x41, 0x11, 0x19, 0x13, 0x28, 0x13, 0x83, 0x13, 0xa5, 0x13, + 0x5b, 0x13, 0x34, 0x14, 0xd2, 0x15, 0x93, 0x16, 0x63, 0x15, 0x42, 0x13, 0xa4, 0x12, 0x95, 0x13, + 0x35, 0x13, 0x83, 0x11, 0xea, 0x10, 0xfa, 0x0f, 0x22, 0x0b, 0xcd, 0x05, 0x1e, 0x00, 0x64, 0xfa, + 0x27, 0xf6, 0x1e, 0xf1, 0xc9, 0xea, 0x7b, 0xe5, 0x08, 0xe0, 0xad, 0xda, 0xef, 0xd8, 0x85, 0xd8, + 0x17, 0xda, 0x6c, 0xdd, 0x25, 0xe0, 0x6d, 0xe3, 0xde, 0xe7, 0xad, 0xed, 0x12, 0xf3, 0x08, 0xf9, + 0x65, 0xfc, 0x3e, 0xfe, 0x83, 0x00, 0xcc, 0x01, 0x38, 0x04, 0xf8, 0x05, 0xe7, 0x06, 0xc8, 0x07, + 0x5b, 0x08, 0x0d, 0x09, 0x02, 0x0a, 0x59, 0x0a, 0x82, 0x0c, 0xb6, 0x0d, 0x3c, 0x0e, 0x73, 0x0f, + 0xa8, 0x0e, 0x1b, 0x0e, 0xb3, 0x10, 0xb4, 0x11, 0xd8, 0x10, 0x76, 0x11, 0x54, 0x10, 0x4e, 0x0f, + 0xa6, 0x0e, 0x88, 0x0b, 0xbb, 0x09, 0x2a, 0x07, 0x26, 0x02, 0xdd, 0xfd, 0x7a, 0xf9, 0x48, 0xf4, + 0xf0, 0xf0, 0x59, 0xef, 0x87, 0xef, 0xf7, 0xf0, 0x9f, 0xf1, 0x0b, 0xf3, 0x77, 0xf6, 0xc7, 0xf9, + 0x1c, 0xfd, 0xc7, 0x00, 0x09, 0x04, 0xb6, 0x05, 0xde, 0x05, 0x91, 0x06, 0xd6, 0x07, 0x63, 0x08, + 0x50, 0x0a, 0x44, 0x0c, 0x82, 0x0b, 0xc7, 0x09, 0x8f, 0x06, 0x5c, 0x03, 0x08, 0x02, 0xae, 0xff, + 0x68, 0xff, 0xff, 0xff, 0x57, 0xff, 0x8b, 0xfc, 0x7b, 0xfd, 0xfb, 0xff, 0x27, 0x02, 0x15, 0x06, + 0xa6, 0x08, 0x54, 0x0a, 0x8b, 0x08, 0xe4, 0x05, 0x0d, 0x04, 0x2e, 0x02, 0xb9, 0xfe, 0xa1, 0xfa, + 0x1a, 0xf7, 0xdf, 0xf2, 0x20, 0xef, 0xbb, 0xec, 0x16, 0xed, 0xd8, 0xee, 0xbc, 0xf1, 0x46, 0xf4, + 0x2a, 0xf6, 0x2a, 0xfa, 0xde, 0xfd, 0x69, 0x00, 0xfb, 0x03, 0xf5, 0x06, 0x38, 0x08, 0x51, 0x09, + 0x83, 0x0a, 0xde, 0x0a, 0xdc, 0x0b, 0xf8, 0x0d, 0x25, 0x10, 0x46, 0x11, 0xb2, 0x11, 0xd7, 0x10, + 0x64, 0x0e, 0xa2, 0x0a, 0x75, 0x09, 0x47, 0x09, 0x7a, 0x09, 0x9e, 0x08, 0xd9, 0x06, 0x5a, 0x07, + 0xed, 0x07, 0x0e, 0x08, 0x40, 0x09, 0x3f, 0x0b, 0x4f, 0x0c, 0x66, 0x0c, 0xbc, 0x08, 0x27, 0x06, + 0x46, 0x05, 0xf3, 0x00, 0x22, 0xfc, 0x07, 0xf8, 0x41, 0xf2, 0xf5, 0xec, 0x98, 0xe9, 0x76, 0xe7, + 0x64, 0xe7, 0x89, 0xe8, 0x6c, 0xe7, 0xfc, 0xe9, 0x5a, 0xec, 0x8d, 0xed, 0xed, 0xf1, 0x83, 0xf5, + 0x50, 0xf8, 0x04, 0xfb, 0x5e, 0xfd, 0xb5, 0xff, 0x72, 0x02, 0x16, 0x04, 0x89, 0x06, 0x9d, 0x07, + 0x49, 0x06, 0xeb, 0x04, 0x1c, 0x03, 0x57, 0x02, 0xfe, 0x01, 0xf3, 0x00, 0x81, 0x02, 0xff, 0x03, + 0x02, 0x02, 0xc7, 0x01, 0xab, 0x03, 0x9d, 0x05, 0xbb, 0x07, 0xbd, 0x09, 0xb2, 0x0a, 0x95, 0x0a, + 0x59, 0x08, 0x37, 0x05, 0x7b, 0x03, 0xf5, 0x00, 0xc6, 0xfe, 0x91, 0xfc, 0x63, 0xf8, 0xe1, 0xf3, + 0x16, 0xef, 0x8d, 0xea, 0x82, 0xe8, 0x0d, 0xe9, 0x4f, 0xe9, 0xd4, 0xe8, 0x45, 0xe9, 0xf5, 0xe9, + 0x56, 0xec, 0x86, 0xef, 0x28, 0xf3, 0xfe, 0xf6, 0x5a, 0xfa, 0x1c, 0xfd, 0xb5, 0xfd, 0xbe, 0xfe, + 0xc4, 0x00, 0x4d, 0x03, 0xc3, 0x06, 0xf2, 0x07, 0x93, 0x08, 0x57, 0x07, 0x34, 0x07, 0x9a, 0x05, + 0xb8, 0x06, 0x0b, 0x09, 0x34, 0x0a, 0xc5, 0x0b, 0x6c, 0x0c, 0x65, 0x0e, 0xc7, 0x0f, 0xf5, 0x11, + 0x87, 0x14, 0x0a, 0x17, 0x10, 0x18, 0x07, 0x17, 0x16, 0x15, 0x18, 0x12, 0x9b, 0x0e, 0x5e, 0x09, + 0x71, 0x04, 0x80, 0xff, 0xe1, 0xf9, 0xaf, 0xf4, 0xa4, 0xee, 0xb9, 0xeb, 0x89, 0xeb, 0x97, 0xe9, + 0x75, 0xe9, 0x41, 0xeb, 0x72, 0xeb, 0xee, 0xec, 0xaa, 0xf0, 0x22, 0xf3, 0x0c, 0xf6, 0xf6, 0xf8, + 0x80, 0xfb, 0x69, 0xff, 0xbb, 0xff, 0xe7, 0x00, 0xb8, 0x04, 0xf8, 0x06, 0xfe, 0x09, 0xb9, 0x0b, + 0x95, 0x0b, 0xce, 0x0a, 0x7d, 0x0a, 0xf4, 0x0a, 0x93, 0x0c, 0xa7, 0x0d, 0x8a, 0x0c, 0x87, 0x0d, + 0xc5, 0x0d, 0x69, 0x0e, 0x44, 0x10, 0x87, 0x11, 0x10, 0x15, 0x34, 0x16, 0xc7, 0x14, 0x9d, 0x14, + 0xe7, 0x13, 0x36, 0x11, 0xc8, 0x0d, 0x35, 0x0a, 0x30, 0x04, 0xa0, 0xff, 0x34, 0xf8, 0xf9, 0xf1, + 0x8a, 0xee, 0x4d, 0xea, 0x8c, 0xe6, 0x04, 0xe5, 0x5f, 0xe4, 0x18, 0xe5, 0xa6, 0xe8, 0xc8, 0xeb, + 0x8e, 0xf0, 0xe1, 0xf5, 0xb8, 0xf8, 0x26, 0xfb, 0x72, 0xfd, 0xdf, 0xff, 0xb9, 0x01, 0x3e, 0x02, + 0xc1, 0x04, 0x55, 0x06, 0xcf, 0x05, 0xa1, 0x04, 0xa5, 0x02, 0x5d, 0x01, 0xd4, 0x01, 0x99, 0x02, + 0xd1, 0x01, 0xe7, 0x00, 0xf2, 0xfe, 0x35, 0xfe, 0x59, 0xfd, 0x52, 0xfd, 0x56, 0x00, 0x34, 0x03, + 0x45, 0x06, 0x3d, 0x07, 0xff, 0x05, 0x36, 0x05, 0xaa, 0x04, 0x92, 0x03, 0xa1, 0x00, 0xc7, 0xfd, + 0x08, 0xfa, 0xd0, 0xf3, 0x76, 0xee, 0x3d, 0xec, 0x33, 0xed, 0xb0, 0xed, 0x4c, 0xef, 0x48, 0xf2, + 0xca, 0xf2, 0xa4, 0xf5, 0xb7, 0xf7, 0x33, 0xfc, 0xd1, 0x01, 0x20, 0x05, 0xcc, 0x09, 0xe1, 0x0b, + 0x0b, 0x0f, 0xcb, 0x0f, 0x7c, 0x12, 0x1e, 0x13, 0x1c, 0x14, 0xfb, 0x15, 0x03, 0x14, 0xc2, 0x11, + 0x7c, 0x0d, 0x80, 0x0a, 0x00, 0x08, 0xe9, 0x03, 0x0f, 0x01, 0x8f, 0xff, 0xaf, 0xfe, 0x19, 0xfe, + 0xe9, 0xfd, 0x05, 0x00, 0x4e, 0x03, 0xc9, 0x05, 0xa9, 0x06, 0xa6, 0x06, 0x88, 0x05, 0x23, 0x04, + 0x5d, 0x02, 0xbd, 0xfd, 0xe5, 0xf9, 0x60, 0xf6, 0xe0, 0xef, 0x4a, 0xec, 0x0d, 0xea, 0xc7, 0xe7, + 0x5f, 0xe8, 0x7d, 0xe9, 0x1b, 0xea, 0x25, 0xec, 0x51, 0xee, 0x2d, 0xf2, 0x2d, 0xf6, 0x5d, 0xf8, + 0x90, 0xfb, 0x83, 0xfe, 0x5e, 0x01, 0x1b, 0x04, 0x1f, 0x07, 0x61, 0x0a, 0x70, 0x0f, 0x9e, 0x12, + 0x61, 0x13, 0xcb, 0x13, 0x8e, 0x11, 0xff, 0x0e, 0xc2, 0x0c, 0x9e, 0x0a, 0x2e, 0x09, 0x45, 0x06, + 0xe4, 0x03, 0xad, 0x02, 0x39, 0x02, 0x6e, 0x00, 0x72, 0x01, 0x3a, 0x04, 0x89, 0x05, 0x5b, 0x07, + 0x38, 0x06, 0x7d, 0x05, 0x4a, 0x04, 0xa7, 0x00, 0x48, 0xfd, 0xcb, 0xf9, 0x0a, 0xf5, 0x2d, 0xef, + 0xb0, 0xea, 0x47, 0xe7, 0xf1, 0xe3, 0x89, 0xe1, 0xb3, 0xe0, 0x2d, 0xe2, 0x1f, 0xe3, 0x5a, 0xe4, + 0x03, 0xe8, 0x4c, 0xed, 0x12, 0xf3, 0x36, 0xf7, 0x46, 0xfc, 0x54, 0x01, 0x29, 0x04, 0xda, 0x06, + 0xa1, 0x0a, 0x40, 0x0d, 0x0e, 0x0f, 0x19, 0x10, 0x9f, 0x0f, 0x76, 0x0e, 0xe5, 0x0c, 0xd5, 0x0c, + 0x60, 0x0d, 0xb7, 0x0c, 0xc1, 0x0c, 0x1e, 0x0d, 0x0e, 0x0d, 0xcb, 0x0d, 0x6b, 0x0f, 0x53, 0x11, + 0x5e, 0x14, 0xbd, 0x16, 0xa5, 0x17, 0xd1, 0x17, 0x89, 0x16, 0x40, 0x14, 0x94, 0x11, 0xc7, 0x0e, + 0x38, 0x0c, 0x07, 0x07, 0xa9, 0xff, 0x5c, 0xfb, 0x83, 0xf6, 0xff, 0xf1, 0xce, 0xee, 0xae, 0xed, + 0xe3, 0xec, 0x5c, 0xed, 0x80, 0xed, 0x89, 0xed, 0xb8, 0xef, 0x64, 0xf1, 0xcd, 0xf4, 0x5f, 0xf8, + 0x4a, 0xfb, 0x4d, 0xfe, 0x2e, 0x00, 0x43, 0x01, 0xa9, 0x02, 0xf7, 0x03, 0x50, 0x04, 0x59, 0x04, + 0x15, 0x02, 0x29, 0x00, 0x7d, 0xff, 0x5a, 0xfe, 0x5d, 0xfe, 0x8e, 0xfd, 0x1b, 0xfe, 0x89, 0xfe, + 0x6c, 0xfd, 0x27, 0xfe, 0xcb, 0x00, 0x6c, 0x04, 0x46, 0x07, 0xef, 0x09, 0x81, 0x0b, 0x28, 0x0d, + 0xa3, 0x0d, 0x46, 0x0b, 0x67, 0x0b, 0x32, 0x09, 0x91, 0x03, 0xe7, 0xfe, 0xa3, 0xf9, 0x87, 0xf6, + 0x40, 0xf3, 0x08, 0xf1, 0xd1, 0xef, 0x7c, 0xee, 0x72, 0xee, 0x45, 0xef, 0xe3, 0xf0, 0x16, 0xf3, + 0x73, 0xf6, 0xdf, 0xf9, 0xdb, 0xfd, 0x7b, 0x01, 0x59, 0x03, 0x35, 0x05, 0xeb, 0x06, 0xb9, 0x08, + 0x8c, 0x0b, 0xcb, 0x0d, 0x05, 0x0f, 0xac, 0x0d, 0x94, 0x0b, 0x85, 0x09, 0xd5, 0x08, 0xb4, 0x05, + 0xbd, 0x04, 0xd2, 0x04, 0x81, 0x02, 0x3b, 0x01, 0x9e, 0xff, 0x35, 0x00, 0x7c, 0x03, 0xef, 0x06, + 0x9f, 0x0a, 0xf1, 0x0d, 0xae, 0x0f, 0x80, 0x0f, 0x70, 0x0e, 0x34, 0x0c, 0x96, 0x09, 0x9a, 0x05, + 0x96, 0xff, 0x74, 0xfa, 0xe0, 0xf4, 0x15, 0xf0, 0x0a, 0xec, 0x4c, 0xe9, 0x7e, 0xe8, 0x14, 0xe9, + 0x71, 0xea, 0xb5, 0xed, 0xe0, 0xf1, 0x7c, 0xf4, 0x7c, 0xf9, 0xda, 0xfc, 0x59, 0xff, 0x35, 0x03, + 0xdc, 0x04, 0xac, 0x06, 0x47, 0x08, 0xa5, 0x08, 0x5e, 0x08, 0x4f, 0x06, 0x1e, 0x04, 0x23, 0x02, + 0xc3, 0xff, 0xf7, 0xfd, 0xdd, 0xfc, 0x1f, 0xfb, 0x48, 0xf9, 0xf0, 0xf8, 0xd1, 0xf7, 0xf8, 0xf6, + 0x1b, 0xf8, 0x3a, 0xf9, 0x59, 0xfc, 0x7c, 0xfe, 0x00, 0x00, 0xea, 0x01, 0x55, 0x00, 0x11, 0x00, + 0xb5, 0xff, 0x1b, 0xfe, 0xf1, 0xf9, 0x66, 0xf6, 0x8a, 0xf1, 0x96, 0xed, 0x1c, 0xeb, 0x86, 0xe8, + 0x41, 0xe9, 0x25, 0xea, 0x04, 0xeb, 0x6e, 0xed, 0x83, 0xef, 0xec, 0xf1, 0xb7, 0xf5, 0xf6, 0xfa, + 0x54, 0x00, 0x2c, 0x06, 0x63, 0x0a, 0xa9, 0x0d, 0xa2, 0x10, 0x5f, 0x13, 0x33, 0x16, 0x5a, 0x17, + 0x20, 0x19, 0xec, 0x18, 0xe6, 0x17, 0x5c, 0x16, 0x91, 0x13, 0x35, 0x11, 0x2d, 0x0f, 0x4c, 0x0e, + 0xdb, 0x0c, 0xec, 0x0b, 0x55, 0x0b, 0x72, 0x0b, 0xed, 0x0d, 0xe5, 0x0e, 0xa9, 0x10, 0x0b, 0x13, + 0xe8, 0x12, 0x13, 0x12, 0x21, 0x0f, 0x2d, 0x0c, 0x0f, 0x08, 0x77, 0x02, 0xec, 0xfb, 0xdd, 0xf5, + 0x6f, 0xf0, 0x58, 0xec, 0xa8, 0xe8, 0x91, 0xe5, 0x1d, 0xe5, 0x7d, 0xe4, 0x4f, 0xe4, 0xb6, 0xe6, + 0xaa, 0xe8, 0xd2, 0xeb, 0x3d, 0xef, 0xa0, 0xf3, 0x12, 0xf9, 0x3f, 0xfc, 0xc6, 0xfd, 0x54, 0x00, + 0xd0, 0x04, 0xa6, 0x07, 0xbd, 0x0b, 0xba, 0x0c, 0x89, 0x0b, 0xd8, 0x0b, 0xec, 0x09, 0x89, 0x08, + 0x48, 0x08, 0xa8, 0x08, 0xe8, 0x09, 0x1a, 0x0b, 0xeb, 0x0a, 0xdd, 0x09, 0xb6, 0x0a, 0x2e, 0x0c, + 0x6a, 0x0e, 0x32, 0x10, 0x86, 0x12, 0x45, 0x14, 0x5a, 0x13, 0x5a, 0x12, 0x74, 0x10, 0x11, 0x0d, + 0x2b, 0x08, 0x99, 0x02, 0xbd, 0xfb, 0x5c, 0xf5, 0x3a, 0xef, 0x59, 0xe9, 0xaf, 0xe6, 0xc9, 0xe3, + 0x9e, 0xe2, 0x64, 0xe4, 0x6a, 0xe5, 0x63, 0xe8, 0xf6, 0xeb, 0xd6, 0xee, 0x46, 0xf3, 0xd3, 0xf7, + 0xee, 0xfb, 0x22, 0xff, 0xb5, 0x01, 0x9b, 0x03, 0x13, 0x06, 0x96, 0x07, 0x1b, 0x07, 0x93, 0x06, + 0xb2, 0x05, 0x25, 0x05, 0x88, 0x05, 0xe1, 0x03, 0x50, 0x03, 0x2a, 0x03, 0x18, 0x04, 0xd8, 0x02, + 0x69, 0x01, 0xed, 0x02, 0xf9, 0x04, 0x7d, 0x07, 0x6d, 0x0a, 0x75, 0x0d, 0x4a, 0x0d, 0xef, 0x0c, + 0xee, 0x0c, 0xf7, 0x0b, 0x94, 0x0b, 0x28, 0x08, 0xc4, 0x03, 0x1e, 0xff, 0xef, 0xf9, 0x7e, 0xf4, + 0xdc, 0xef, 0x82, 0xed, 0x0b, 0xec, 0xd3, 0xeb, 0x58, 0xeb, 0x17, 0xed, 0x58, 0xee, 0x04, 0xf0, + 0xe6, 0xf2, 0xfa, 0xf6, 0x70, 0xfc, 0x5c, 0xff, 0xb0, 0x02, 0xcb, 0x05, 0x13, 0x07, 0x1d, 0x09, + 0x7c, 0x0b, 0xf2, 0x0c, 0x69, 0x0c, 0xd0, 0x0a, 0x70, 0x08, 0x5d, 0x06, 0x9c, 0x03, 0xc7, 0xff, + 0x19, 0x00, 0x61, 0x00, 0xcd, 0xff, 0x5a, 0x00, 0x77, 0x00, 0x81, 0x01, 0xc1, 0x03, 0xbe, 0x06, + 0x13, 0x0a, 0x9c, 0x0c, 0x92, 0x0d, 0xc8, 0x0e, 0x0a, 0x0f, 0x32, 0x0d, 0xd5, 0x09, 0x24, 0x04, + 0xb4, 0xfe, 0x9d, 0xf9, 0x5c, 0xf3, 0x68, 0xf0, 0x26, 0xee, 0xaa, 0xec, 0xeb, 0xec, 0xe6, 0xed, + 0x3f, 0xef, 0x1a, 0xf2, 0xee, 0xf4, 0x04, 0xf8, 0xeb, 0xfd, 0x3a, 0x01, 0x07, 0x04, 0x27, 0x07, + 0x5e, 0x07, 0xe6, 0x09, 0x26, 0x0d, 0x3b, 0x0e, 0xcb, 0x0e, 0xc9, 0x0e, 0x8b, 0x0c, 0x9c, 0x0a, + 0x12, 0x08, 0x5f, 0x04, 0xba, 0x03, 0x6c, 0x02, 0xdc, 0x01, 0xd8, 0x00, 0x31, 0xff, 0xb1, 0xfd, + 0x88, 0xfc, 0xdb, 0xfc, 0xfa, 0xfe, 0x30, 0x02, 0x20, 0x03, 0x30, 0x03, 0x3d, 0x03, 0xba, 0x01, + 0xe4, 0xff, 0x70, 0xfb, 0x2d, 0xf8, 0x51, 0xf4, 0x0a, 0xee, 0x2f, 0xe9, 0x28, 0xe4, 0x8a, 0xdf, + 0x03, 0xde, 0x61, 0xdd, 0x6d, 0xde, 0x00, 0xe2, 0x0e, 0xe6, 0x97, 0xe9, 0x07, 0xee, 0x34, 0xf3, + 0x2c, 0xf8, 0xea, 0xfc, 0x75, 0x00, 0xac, 0x03, 0x68, 0x06, 0xfa, 0x08, 0xb1, 0x0c, 0xd6, 0x0d, + 0x8e, 0x0e, 0x7c, 0x0e, 0x6e, 0x0f, 0x9c, 0x0f, 0x79, 0x0d, 0xd9, 0x0c, 0x56, 0x0d, 0x6e, 0x0c, + 0x67, 0x0b, 0xa3, 0x0b, 0xcd, 0x0b, 0x3f, 0x0c, 0xa5, 0x0d, 0x28, 0x0f, 0x74, 0x11, 0x8e, 0x11, + 0x46, 0x10, 0xf6, 0x0f, 0x44, 0x10, 0x8c, 0x0e, 0x60, 0x0b, 0xf7, 0x06, 0x5a, 0x01, 0x05, 0xfc, + 0xee, 0xf4, 0x87, 0xef, 0xe6, 0xeb, 0xda, 0xe9, 0xcf, 0xe9, 0xc6, 0xe9, 0x09, 0xeb, 0xf2, 0xea, + 0x78, 0xeb, 0x10, 0xee, 0xdf, 0xf0, 0xee, 0xf4, 0xe7, 0xf9, 0x58, 0xfe, 0xb3, 0x00, 0xf7, 0x03, + 0xc9, 0x06, 0x0d, 0x09, 0x44, 0x0c, 0x07, 0x0d, 0x4f, 0x0d, 0xef, 0x0c, 0x5e, 0x0a, 0x2e, 0x08, + 0xb7, 0x06, 0x10, 0x05, 0x4e, 0x05, 0x55, 0x06, 0x80, 0x06, 0xb9, 0x07, 0x29, 0x09, 0x12, 0x0b, + 0x94, 0x0e, 0x78, 0x10, 0xd9, 0x12, 0x03, 0x14, 0xbf, 0x12, 0x1b, 0x13, 0x1d, 0x11, 0x97, 0x0d, + 0x95, 0x08, 0x8c, 0x02, 0xdc, 0xfc, 0x10, 0xf8, 0xa7, 0xf2, 0xe1, 0xec, 0xff, 0xe9, 0xe3, 0xe6, + 0x7b, 0xe5, 0xde, 0xe5, 0xdc, 0xe5, 0xce, 0xe8, 0xc8, 0xec, 0x43, 0xf0, 0x08, 0xf5, 0xa4, 0xf8, + 0x2a, 0xfa, 0xd0, 0xfd, 0xd1, 0x00, 0x32, 0x03, 0x08, 0x07, 0x0c, 0x09, 0x8a, 0x0a, 0x44, 0x0b, + 0xfd, 0x0a, 0x75, 0x09, 0xd8, 0x07, 0x6b, 0x07, 0xe9, 0x07, 0x5c, 0x09, 0x91, 0x09, 0xf5, 0x09, + 0x43, 0x0a, 0xfd, 0x09, 0x53, 0x0b, 0x68, 0x0d, 0xe2, 0x10, 0x0a, 0x13, 0x17, 0x14, 0xe4, 0x15, + 0x44, 0x15, 0x52, 0x14, 0xb7, 0x12, 0x8f, 0x0f, 0x11, 0x0b, 0xe2, 0x05, 0xd0, 0xff, 0xa1, 0xf9, + 0x05, 0xf4, 0x01, 0xef, 0x17, 0xeb, 0x9e, 0xe9, 0xd2, 0xe9, 0x76, 0xea, 0xdb, 0xea, 0x4a, 0xed, + 0x83, 0xf0, 0xbb, 0xf2, 0x89, 0xf5, 0x72, 0xf7, 0x46, 0xfa, 0x98, 0xfc, 0x80, 0xfe, 0xec, 0x00, + 0x4f, 0x01, 0xb0, 0x00, 0xca, 0x00, 0x61, 0x00, 0x1c, 0xfe, 0xdd, 0xfc, 0x6b, 0xfb, 0x01, 0xfa, + 0x35, 0xfa, 0x04, 0xf9, 0xe0, 0xf7, 0xf7, 0xf7, 0x65, 0xf8, 0x46, 0xf9, 0xfc, 0xfb, 0x4c, 0xfe, + 0x55, 0x00, 0x6a, 0x01, 0xb9, 0x01, 0xb6, 0x03, 0x08, 0x04, 0xd5, 0x02, 0x1d, 0x02, 0x89, 0xff, + 0xf3, 0xfb, 0xe8, 0xf6, 0x2d, 0xf2, 0xbf, 0xee, 0xe3, 0xeb, 0x88, 0xea, 0xf8, 0xea, 0x33, 0xec, + 0xed, 0xec, 0xd1, 0xee, 0x0d, 0xf1, 0xb9, 0xf5, 0x18, 0xfc, 0x8e, 0x00, 0x15, 0x05, 0xef, 0x08, + 0xbb, 0x0a, 0xed, 0x0c, 0x58, 0x0f, 0xb8, 0x10, 0x59, 0x13, 0x57, 0x15, 0x7c, 0x15, 0x66, 0x14, + 0x51, 0x11, 0x04, 0x0e, 0x06, 0x0c, 0x1d, 0x09, 0x56, 0x08, 0xb6, 0x07, 0xd7, 0x06, 0xf4, 0x06, + 0x52, 0x06, 0x04, 0x07, 0x11, 0x08, 0x1a, 0x09, 0xa0, 0x09, 0xb6, 0x0a, 0xb2, 0x0a, 0x8e, 0x09, + 0x86, 0x07, 0xe4, 0x02, 0x6d, 0xfe, 0x4d, 0xf9, 0x64, 0xf3, 0x88, 0xee, 0xfb, 0xe9, 0xb1, 0xe5, + 0x02, 0xe4, 0xa2, 0xe3, 0x9b, 0xe3, 0x52, 0xe6, 0x82, 0xe8, 0x32, 0xec, 0x61, 0xf1, 0xdf, 0xf5, + 0xbe, 0xfa, 0x4b, 0xfe, 0x91, 0x01, 0x1c, 0x04, 0xa8, 0x07, 0xa8, 0x0b, 0x42, 0x0e, 0xef, 0x10, + 0x2c, 0x13, 0x4b, 0x15, 0xee, 0x14, 0xee, 0x13, 0x6e, 0x13, 0xf0, 0x13, 0x64, 0x14, 0x38, 0x13, + 0x01, 0x12, 0x69, 0x10, 0x2e, 0x0e, 0x50, 0x0d, 0x8c, 0x0d, 0x84, 0x0e, 0x75, 0x10, 0x61, 0x11, + 0x11, 0x12, 0x7f, 0x12, 0xbc, 0x10, 0xfc, 0x0d, 0x07, 0x0b, 0x2c, 0x07, 0x80, 0x01, 0x49, 0xfb, + 0xd7, 0xf4, 0x7b, 0xee, 0x40, 0xe7, 0xf0, 0xe1, 0x61, 0xe0, 0xf6, 0xde, 0x8c, 0xdf, 0x0a, 0xe1, + 0x27, 0xe3, 0x5d, 0xe6, 0x27, 0xe9, 0x6c, 0xed, 0x50, 0xf2, 0x84, 0xf5, 0x1d, 0xf8, 0xa7, 0xfc, + 0xe4, 0xff, 0xda, 0x01, 0x83, 0x04, 0x75, 0x06, 0x01, 0x08, 0xed, 0x08, 0x44, 0x07, 0x08, 0x05, + 0xf7, 0x04, 0x8b, 0x03, 0xca, 0x02, 0x47, 0x02, 0xb0, 0x01, 0x6d, 0x03, 0x17, 0x05, 0x4d, 0x08, + 0x82, 0x0b, 0x2a, 0x0d, 0x04, 0x0f, 0x35, 0x10, 0x28, 0x10, 0x7f, 0x0f, 0xdf, 0x0e, 0x58, 0x0d, + 0xae, 0x0a, 0x6a, 0x06, 0x31, 0x01, 0xa6, 0xfb, 0x4e, 0xf5, 0x3a, 0xf1, 0x3a, 0xee, 0x55, 0xeb, + 0x21, 0xea, 0x68, 0xe9, 0xbc, 0xe8, 0xf0, 0xe9, 0x39, 0xec, 0xce, 0xee, 0xf5, 0xf3, 0xc0, 0xf8, + 0x3e, 0xfc, 0x22, 0x00, 0x64, 0x03, 0xec, 0x05, 0xab, 0x08, 0x85, 0x0a, 0x75, 0x0c, 0xef, 0x0c, + 0x78, 0x0c, 0xab, 0x0a, 0x78, 0x07, 0x97, 0x05, 0xca, 0x03, 0x88, 0x03, 0x49, 0x04, 0x4f, 0x04, + 0x89, 0x04, 0x81, 0x05, 0xfd, 0x06, 0xc6, 0x08, 0x2c, 0x0b, 0xf8, 0x0c, 0x8f, 0x0f, 0xe9, 0x11, + 0xb4, 0x11, 0x5f, 0x10, 0x05, 0x0f, 0x78, 0x0b, 0x4f, 0x07, 0x6c, 0x03, 0xda, 0xfd, 0xdd, 0xf9, + 0x81, 0xf5, 0xb0, 0xf1, 0x95, 0xef, 0x37, 0xed, 0xe4, 0xeb, 0xc1, 0xeb, 0x41, 0xee, 0xce, 0xf0, + 0xf1, 0xf3, 0x12, 0xf8, 0x89, 0xfb, 0x7b, 0xfd, 0xfc, 0xfe, 0x84, 0x01, 0xe9, 0x02, 0xa7, 0x04, + 0xea, 0x06, 0x61, 0x08, 0x46, 0x09, 0xe3, 0x07, 0xa1, 0x05, 0xb9, 0x04, 0x5d, 0x03, 0x81, 0x01, + 0x1e, 0x01, 0xce, 0xff, 0xd2, 0xfd, 0x97, 0xfc, 0xa5, 0xfa, 0xb1, 0xfa, 0x43, 0xfc, 0xcc, 0xfd, + 0x87, 0xff, 0x01, 0x02, 0x26, 0x03, 0xe6, 0x03, 0x59, 0x03, 0xb1, 0x02, 0x03, 0x02, 0x4a, 0xff, + 0xb2, 0xfc, 0xa4, 0xf7, 0x54, 0xf1, 0x04, 0xec, 0xeb, 0xe6, 0x6e, 0xe3, 0xb0, 0xe2, 0x35, 0xe3, + 0xf3, 0xe4, 0xff, 0xe7, 0xc4, 0xea, 0x7c, 0xef, 0x43, 0xf5, 0xa0, 0xf9, 0x1b, 0xff, 0x74, 0x04, + 0x17, 0x07, 0x1e, 0x0a, 0x49, 0x0d, 0x55, 0x0e, 0x68, 0x10, 0x22, 0x12, 0x71, 0x11, 0xbe, 0x10, + 0xc0, 0x0f, 0x2e, 0x0f, 0x90, 0x0e, 0x3f, 0x0d, 0x82, 0x0b, 0x46, 0x0a, 0x7c, 0x09, 0x52, 0x09, + 0x2c, 0x0a, 0x26, 0x0b, 0xf8, 0x0b, 0x12, 0x0d, 0xb5, 0x0d, 0x0f, 0x0e, 0x10, 0x0e, 0xd1, 0x0d, + 0x37, 0x0c, 0x04, 0x0a, 0xfe, 0x06, 0x97, 0x01, 0x3f, 0xfb, 0xba, 0xf5, 0xb6, 0xf0, 0x9f, 0xec, + 0x23, 0xea, 0xad, 0xe7, 0x42, 0xe6, 0xc9, 0xe6, 0x6c, 0xe7, 0xf7, 0xe8, 0x4b, 0xec, 0xec, 0xf0, + 0xec, 0xf6, 0x4f, 0xfb, 0xbe, 0xff, 0x60, 0x03, 0x81, 0x05, 0x59, 0x08, 0x21, 0x0a, 0x7e, 0x0d, + 0x06, 0x11, 0x7a, 0x11, 0xf8, 0x10, 0xb6, 0x0f, 0x66, 0x0d, 0x8e, 0x0b, 0x3c, 0x0a, 0xc2, 0x08, + 0x8c, 0x08, 0x4c, 0x07, 0x8c, 0x05, 0x00, 0x06, 0xc3, 0x06, 0x7f, 0x06, 0x3b, 0x08, 0x4d, 0x0a, + 0x27, 0x0b, 0xc8, 0x0c, 0x88, 0x0b, 0x94, 0x09, 0x5a, 0x07, 0xcc, 0x02, 0xe8, 0xfd, 0xa1, 0xf8, + 0xe6, 0xf2, 0xb4, 0xec, 0x11, 0xe8, 0x66, 0xe4, 0xb6, 0xe0, 0x1a, 0xde, 0x9b, 0xde, 0x27, 0xe1, + 0xa6, 0xe4, 0x87, 0xe8, 0xae, 0xec, 0x8c, 0xf0, 0x14, 0xf5, 0x17, 0xf9, 0x5b, 0xfc, 0xfb, 0x00, + 0xcf, 0x04, 0xc2, 0x08, 0x7c, 0x0d, 0xda, 0x0f, 0x96, 0x11, 0x3d, 0x12, 0xdd, 0x11, 0x2c, 0x12, + 0x31, 0x12, 0xd1, 0x10, 0x5c, 0x10, 0x51, 0x10, 0x1a, 0x0e, 0x66, 0x0d, 0x7e, 0x0d, 0x3a, 0x0e, + 0x84, 0x10, 0x4c, 0x13, 0xb8, 0x16, 0x7c, 0x18, 0xc4, 0x19, 0xc5, 0x19, 0x1f, 0x18, 0x53, 0x15, + 0x8b, 0x11, 0xbd, 0x0c, 0x99, 0x06, 0xf5, 0xfe, 0x01, 0xf7, 0x34, 0xf0, 0x7d, 0xea, 0x14, 0xe6, + 0x45, 0xe3, 0xe8, 0xe0, 0x3e, 0xdf, 0x04, 0xe0, 0x91, 0xe1, 0x12, 0xe3, 0x61, 0xe7, 0x81, 0xeb, + 0xad, 0xef, 0xea, 0xf4, 0xd8, 0xf7, 0xbd, 0xf9, 0x31, 0xfc, 0x90, 0xfe, 0xb1, 0xff, 0x46, 0xff, + 0xaf, 0xfe, 0xdb, 0xfd, 0xa5, 0xfd, 0xe9, 0xfc, 0xca, 0xfb, 0x0d, 0xfb, 0x2c, 0xfb, 0xd9, 0xfb, + 0xac, 0xfd, 0xde, 0xff, 0x93, 0x01, 0x62, 0x04, 0xe7, 0x06, 0x6e, 0x08, 0x9b, 0x0a, 0x06, 0x0c, + 0x17, 0x0c, 0xba, 0x0d, 0x8f, 0x0d, 0xef, 0x0b, 0x6f, 0x09, 0xa2, 0x05, 0x98, 0x00, 0xfd, 0xfb, + 0xfd, 0xf7, 0xcf, 0xf4, 0xb0, 0xf2, 0xf8, 0xef, 0xd2, 0xee, 0x0e, 0xee, 0x99, 0xed, 0x6a, 0xf0, + 0xa4, 0xf3, 0x1f, 0xf8, 0xbf, 0xfb, 0x00, 0x00, 0xb2, 0x04, 0x91, 0x07, 0x8e, 0x08, 0x36, 0x0b, + 0xe8, 0x0d, 0x00, 0x10, 0x97, 0x11, 0x04, 0x10, 0xd5, 0x0e, 0xd4, 0x0d, 0xbc, 0x09, 0xfa, 0x06, + 0x9f, 0x06, 0xd6, 0x03, 0xa5, 0x02, 0x52, 0x03, 0x75, 0x01, 0x2e, 0x01, 0xf3, 0x00, 0x1f, 0x00, + 0x56, 0x02, 0x53, 0x04, 0x85, 0x06, 0x4b, 0x06, 0x1c, 0x07, 0xd1, 0x03, 0x42, 0x01, 0xc6, 0xfe, + 0x3d, 0xfb, 0x90, 0xf7, 0x7e, 0xf2, 0xc7, 0xee, 0x4e, 0xe9, 0x5c, 0xe3, 0x68, 0xe4, 0x8c, 0xe4, + 0xc5, 0xe6, 0xe8, 0xe9, 0xa3, 0xed, 0x50, 0xf1, 0xb4, 0xf6, 0x2b, 0xfc, 0x03, 0x01, 0x14, 0x08, + 0xe0, 0x0c, 0x3f, 0x11, 0x66, 0x15, 0x24, 0x19, 0x98, 0x1a, 0xf0, 0x1c, 0xe6, 0x1d, 0x98, 0x1e, + 0xc2, 0x1d, 0xbb, 0x1e, 0x52, 0x1d, 0x71, 0x1b, 0xd2, 0x17, 0x2a, 0x15, 0x5b, 0x10, 0xfc, 0x0b, + 0xac, 0x0a, 0x25, 0x0a, 0xfc, 0x0a, 0xa5, 0x0a, 0x12, 0x0b, 0xbe, 0x0a, 0xd8, 0x0a, 0x20, 0x0a, + 0x13, 0x07, 0xbe, 0x06, 0x00, 0xff, 0xd8, 0xf8, 0x01, 0xf4, 0x3b, 0xee, 0xf0, 0xe7, 0x0d, 0xe2, + 0xea, 0xdd, 0x19, 0xd7, 0x89, 0xd6, 0x16, 0xd6, 0x52, 0xd9, 0x84, 0xdd, 0x9b, 0xe1, 0xd9, 0xe5, + 0xcb, 0xeb, 0x7d, 0xf0, 0x54, 0xf4, 0x85, 0xf9, 0x2c, 0xff, 0xcf, 0x01, 0xf9, 0x06, 0x3d, 0x0b, + 0xe7, 0x0d, 0x5b, 0x0d, 0x34, 0x0e, 0xa2, 0x0e, 0xc9, 0x0a, 0x23, 0x0a, 0xf5, 0x08, 0x45, 0x07, + 0x6a, 0x07, 0x6e, 0x06, 0x35, 0x05, 0x54, 0x04, 0x67, 0x05, 0x32, 0x05, 0x4a, 0x08, 0x6a, 0x0a, + 0x3f, 0x08, 0x84, 0x09, 0x16, 0x0a, 0x88, 0x0b, 0xab, 0x09, 0xc4, 0x08, 0x80, 0x03, 0x6a, 0xfc, + 0xb8, 0xf5, 0xb6, 0xf0, 0x6f, 0xec, 0x13, 0xea, 0x71, 0xe8, 0xc3, 0xe6, 0x8d, 0xe5, 0x5c, 0xe5, + 0xad, 0xe4, 0xa4, 0xe9, 0x09, 0xee, 0x04, 0xf3, 0x3e, 0xfa, 0xf5, 0x00, 0xd5, 0x05, 0xeb, 0x07, + 0xc4, 0x0b, 0xe8, 0x0e, 0x0c, 0x11, 0xac, 0x12, 0xfe, 0x13, 0xfd, 0x14, 0x3e, 0x12, 0x17, 0x11, + 0xe8, 0x0c, 0xcc, 0x08, 0x91, 0x07, 0xab, 0x03, 0x73, 0x04, 0x70, 0x04, 0xf3, 0x03, 0x39, 0x01, + 0x7b, 0x04, 0xf0, 0x06, 0xe3, 0x0b, 0x49, 0x11, 0x77, 0x12, 0x9f, 0x13, 0x4b, 0x12, 0x81, 0x0e, + 0x7a, 0x0b, 0x7f, 0x08, 0x99, 0x04, 0xd6, 0xff, 0xda, 0xfa, 0x34, 0xf4, 0xf5, 0xed, 0x7f, 0xea, + 0x52, 0xe8, 0x0b, 0xe8, 0x01, 0xe9, 0x92, 0xec, 0xbe, 0xef, 0x60, 0xf2, 0xc2, 0xf6, 0x8b, 0xf9, + 0xc6, 0xfb, 0x28, 0xff, 0x53, 0x01, 0xe0, 0x03, 0x78, 0x06, 0x5f, 0x09, 0x22, 0x07, 0x3c, 0x08, + 0x6e, 0x06, 0xbf, 0x03, 0x96, 0x02, 0x14, 0x03, 0xe3, 0xff, 0x06, 0xfd, 0x74, 0xfc, 0x47, 0xf9, + 0x04, 0xfb, 0x8f, 0xfd, 0xb2, 0xfe, 0x0e, 0x00, 0x80, 0x01, 0xe3, 0x02, 0xfd, 0x04, 0x45, 0x08, + 0x0e, 0x0a, 0x16, 0x0b, 0x7c, 0x0c, 0x0d, 0x0a, 0x63, 0x07, 0x57, 0x02, 0x19, 0xff, 0x8c, 0xfb, + 0x2f, 0xf7, 0x15, 0xf5, 0xdb, 0xf2, 0x44, 0xf1, 0xcc, 0xf0, 0xca, 0xee, 0x5b, 0xee, 0x77, 0xef, + 0x50, 0xf2, 0x13, 0xf3, 0x14, 0xfa, 0xb1, 0xfd, 0x71, 0x00, 0x01, 0x03, 0x58, 0x04, 0x37, 0x06, + 0xe3, 0x06, 0x6a, 0x08, 0x02, 0x07, 0x6e, 0x06, 0x8a, 0x04, 0xff, 0x02, 0x18, 0x02, 0xa3, 0x02, + 0xfa, 0x02, 0x42, 0x01, 0x09, 0xfe, 0x50, 0xfc, 0xbd, 0xfa, 0xef, 0xfd, 0xea, 0xff, 0xbb, 0x02, + 0x26, 0x05, 0x6f, 0x05, 0x72, 0x05, 0x21, 0x06, 0x31, 0x07, 0xaf, 0x06, 0x16, 0x07, 0x0b, 0x07, + 0x08, 0x04, 0x12, 0x01, 0x60, 0xfc, 0x5c, 0xf9, 0xa0, 0xf2, 0xb3, 0xef, 0xe5, 0xeb, 0x3a, 0xe8, + 0xa6, 0xe7, 0xa0, 0xe6, 0xdf, 0xe7, 0x0c, 0xea, 0x75, 0xef, 0xd5, 0xf1, 0x63, 0xf9, 0x4c, 0xff, + 0x6b, 0x02, 0xca, 0x06, 0x67, 0x09, 0x0d, 0x0c, 0x8e, 0x10, 0xd2, 0x13, 0x47, 0x15, 0xe4, 0x14, + 0x43, 0x13, 0x34, 0x0d, 0xdb, 0x0a, 0xc3, 0x09, 0xdf, 0x09, 0xb9, 0x0a, 0x8b, 0x09, 0x21, 0x08, + 0xc9, 0x05, 0x98, 0x06, 0x98, 0x07, 0x7e, 0x08, 0x8d, 0x0c, 0xee, 0x0f, 0xf6, 0x11, 0x97, 0x12, + 0xcd, 0x12, 0x2b, 0x10, 0x89, 0x0a, 0x98, 0x06, 0x43, 0xff, 0xb6, 0xf9, 0x1b, 0xf3, 0x3b, 0xed, + 0xed, 0xe6, 0xf1, 0xe3, 0xc0, 0xe0, 0x30, 0xde, 0x01, 0xe0, 0xc8, 0xe3, 0x2c, 0xe7, 0xdf, 0xeb, + 0x78, 0xf0, 0xec, 0xf5, 0xd0, 0xf9, 0x15, 0xff, 0xb2, 0x04, 0x40, 0x0a, 0xbe, 0x0b, 0xe2, 0x0b, + 0x1b, 0x0d, 0xf6, 0x0d, 0x80, 0x11, 0x3c, 0x13, 0xaf, 0x14, 0x27, 0x16, 0x7e, 0x14, 0x87, 0x12, + 0x77, 0x11, 0xe8, 0x0f, 0x25, 0x0e, 0xa2, 0x0e, 0x38, 0x10, 0x43, 0x12, 0x0f, 0x17, 0x7b, 0x15, + 0x66, 0x18, 0x07, 0x19, 0xae, 0x16, 0xde, 0x14, 0x29, 0x14, 0x91, 0x0f, 0x43, 0x08, 0x3f, 0x02, + 0xc1, 0xf9, 0xd2, 0xf0, 0x79, 0xe8, 0x3f, 0xe2, 0x1e, 0xdf, 0xe4, 0xda, 0x71, 0xd8, 0xb1, 0xd6, + 0x7c, 0xd7, 0x9a, 0xdb, 0xe4, 0xdf, 0x49, 0xe7, 0x22, 0xed, 0x32, 0xef, 0xd2, 0xf0, 0x78, 0xf5, + 0x48, 0xfa, 0x9d, 0xfe, 0x23, 0x03, 0x4f, 0x04, 0xdd, 0x04, 0x2a, 0x07, 0x43, 0x06, 0xab, 0x06, + 0x39, 0x06, 0xd7, 0x07, 0xb1, 0x07, 0xe8, 0x08, 0x2d, 0x09, 0x0b, 0x09, 0x91, 0x09, 0xf0, 0x09, + 0xd2, 0x0a, 0x32, 0x0c, 0xc5, 0x0f, 0xdf, 0x0f, 0xa7, 0x10, 0xbd, 0x12, 0x9e, 0x11, 0xc9, 0x0e, + 0x1b, 0x0a, 0xd1, 0x06, 0xc8, 0x02, 0xd0, 0xfb, 0xc3, 0xf4, 0x04, 0xee, 0x90, 0xea, 0x07, 0xe6, + 0x76, 0xe5, 0x56, 0xe5, 0x65, 0xe4, 0xeb, 0xe1, 0xfe, 0xdf, 0xd7, 0xe2, 0x15, 0xe8, 0xd0, 0xec, + 0xac, 0xf3, 0xbe, 0xf7, 0x90, 0xfa, 0xb5, 0xfc, 0x33, 0x01, 0x9e, 0x02, 0x99, 0x05, 0xde, 0x07, + 0x07, 0x09, 0x1d, 0x0b, 0x08, 0x0a, 0x11, 0x08, 0xdd, 0x05, 0x26, 0x06, 0x87, 0x03, 0xc1, 0x01, + 0xaf, 0x01, 0x13, 0x01, 0x04, 0x01, 0x55, 0x03, 0x11, 0x05, 0xf7, 0x06, 0x0e, 0x09, 0xc9, 0x0b, + 0xbc, 0x0c, 0x53, 0x0e, 0x79, 0x0c, 0x5a, 0x08, 0x55, 0x04, 0xda, 0x00, 0x3f, 0xff, 0x24, 0xfd, + 0x09, 0xf9, 0x7d, 0xf5, 0x27, 0xf1, 0xf9, 0xed, 0xb9, 0xeb, 0x45, 0xee, 0x64, 0xf2, 0xd1, 0xf5, + 0x91, 0xf7, 0xa8, 0xfc, 0xe6, 0x00, 0x79, 0x02, 0x66, 0x07, 0x40, 0x0a, 0x3f, 0x0f, 0xaa, 0x13, + 0x65, 0x16, 0x2e, 0x17, 0xde, 0x19, 0x4a, 0x19, 0x6d, 0x16, 0x74, 0x16, 0xf4, 0x14, 0x87, 0x11, + 0x87, 0x0f, 0xf3, 0x0b, 0x61, 0x09, 0x58, 0x03, 0xe2, 0xff, 0x57, 0x00, 0x21, 0x01, 0xbb, 0x01, + 0xde, 0x02, 0x1b, 0x03, 0xaa, 0x02, 0x66, 0x03, 0x44, 0x04, 0xd2, 0x05, 0x10, 0x06, 0x78, 0x01, + 0x54, 0xfc, 0x2c, 0xf7, 0xfb, 0xf1, 0xf1, 0xed, 0xde, 0xea, 0x42, 0xe9, 0x50, 0xe6, 0xf5, 0xe4, + 0xfb, 0xe2, 0x8c, 0xe2, 0xc4, 0xe3, 0x2a, 0xe7, 0x7c, 0xeb, 0xf7, 0xf2, 0x87, 0xfa, 0xb8, 0x00, + 0x87, 0x06, 0x17, 0x0c, 0x47, 0x0e, 0x31, 0x11, 0x47, 0x12, 0x67, 0x12, 0x99, 0x11, 0x38, 0x11, + 0xf7, 0x0e, 0x19, 0x0c, 0xcd, 0x0a, 0xae, 0x07, 0xd5, 0x06, 0xd7, 0x05, 0xd0, 0x04, 0x38, 0x03, + 0x25, 0x02, 0xcd, 0x01, 0x8e, 0x02, 0x7a, 0x05, 0x4f, 0x08, 0x7d, 0x08, 0x9b, 0x08, 0x46, 0x07, + 0x30, 0x05, 0xe0, 0x02, 0x43, 0x04, 0x83, 0x00, 0x0a, 0xfd, 0x97, 0xf8, 0xb6, 0xf2, 0xb6, 0xed, + 0x18, 0xe9, 0xfb, 0xe4, 0xc2, 0xe2, 0x8f, 0xe2, 0x56, 0xe2, 0xcd, 0xe4, 0xcd, 0xe9, 0x32, 0xee, + 0xb7, 0xf3, 0xd8, 0xf8, 0xfd, 0xfe, 0xdd, 0x03, 0xce, 0x06, 0x56, 0x0b, 0x7f, 0x0e, 0xb7, 0x0f, + 0xd3, 0x0f, 0x66, 0x0f, 0x94, 0x0f, 0xd5, 0x0f, 0x03, 0x0e, 0x4c, 0x0d, 0xe5, 0x0a, 0x83, 0x09, + 0x8c, 0x08, 0x2b, 0x0a, 0x27, 0x0b, 0x39, 0x0c, 0xa2, 0x0a, 0xe6, 0x0a, 0xd8, 0x0a, 0x21, 0x0d, + 0x4d, 0x11, 0xbb, 0x13, 0xc6, 0x15, 0xe3, 0x15, 0xab, 0x12, 0x06, 0x0e, 0x50, 0x0a, 0xc6, 0x03, + 0xd3, 0xfc, 0xcf, 0xf8, 0xbf, 0xf3, 0x79, 0xef, 0x30, 0xec, 0x7a, 0xe8, 0x28, 0xe6, 0xf4, 0xe4, + 0xe1, 0xe5, 0xee, 0xe6, 0x74, 0xea, 0x5e, 0xee, 0xb4, 0xf1, 0x6d, 0xf3, 0xac, 0xf6, 0x6c, 0xf9, + 0x5d, 0xfa, 0x0d, 0xfd, 0x5b, 0x00, 0x8c, 0x00, 0x98, 0x01, 0xa0, 0xff, 0x9f, 0x00, 0xbc, 0x02, + 0x3c, 0x05, 0x63, 0x06, 0x54, 0x06, 0x77, 0x03, 0xda, 0xfe, 0xd6, 0xfe, 0x8e, 0xfe, 0x9d, 0xff, + 0x26, 0x02, 0xfa, 0x04, 0xf1, 0x06, 0xe4, 0x08, 0xfa, 0x0a, 0xea, 0x0c, 0x0b, 0x0e, 0xdd, 0x0e, + 0x5c, 0x0d, 0xba, 0x0b, 0x70, 0x09, 0x19, 0x04, 0x4f, 0xfc, 0xc8, 0xf6, 0x9a, 0xf1, 0x74, 0xec, + 0x0d, 0xe8, 0x0a, 0xe6, 0xa3, 0xe4, 0xe5, 0xe3, 0x3a, 0xe3, 0x0a, 0xe5, 0xeb, 0xe6, 0x67, 0xeb, + 0x5b, 0xef, 0xdb, 0xf3, 0xc2, 0xf7, 0xb2, 0xf9, 0x0a, 0xfb, 0xf0, 0xfd, 0x7e, 0x03, 0x3e, 0x05, + 0xca, 0x07, 0x76, 0x06, 0x25, 0x05, 0xd3, 0x05, 0x71, 0x06, 0x09, 0x06, 0x1f, 0x06, 0xe9, 0x06, + 0xcc, 0x06, 0x57, 0x07, 0x56, 0x08, 0xdc, 0x08, 0x7e, 0x0b, 0x42, 0x0e, 0xbd, 0x12, 0x7d, 0x15, + 0x27, 0x19, 0x17, 0x1b, 0x36, 0x19, 0x1d, 0x17, 0x35, 0x14, 0x65, 0x0e, 0x9b, 0x09, 0x41, 0x05, + 0x98, 0x00, 0x91, 0xfc, 0xbc, 0xf8, 0xbf, 0xf3, 0x21, 0xf0, 0xcf, 0xee, 0xa6, 0xed, 0x7a, 0xef, + 0xab, 0xf0, 0xd2, 0xf3, 0xde, 0xf5, 0xdd, 0xfa, 0xd6, 0x00, 0xbd, 0x06, 0x62, 0x0b, 0x7e, 0x0d, + 0x7f, 0x0d, 0x1f, 0x0f, 0xf9, 0x10, 0x42, 0x11, 0xc0, 0x11, 0x0a, 0x12, 0xce, 0x0e, 0xff, 0x0d, + 0xa2, 0x0c, 0x00, 0x09, 0x31, 0x06, 0x19, 0x05, 0x70, 0x04, 0x2a, 0x04, 0xdd, 0x05, 0xfd, 0x07, + 0x72, 0x09, 0x84, 0x0a, 0xc4, 0x0c, 0x8f, 0x0d, 0x48, 0x0c, 0x64, 0x0a, 0xc7, 0x08, 0x81, 0x04, + 0x7d, 0xff, 0xb8, 0xf7, 0xb4, 0xf2, 0x85, 0xed, 0x03, 0xea, 0x44, 0xe5, 0x61, 0xe3, 0x2b, 0xe0, + 0x51, 0xdd, 0x57, 0xde, 0x1a, 0xe1, 0x81, 0xe6, 0x4e, 0xeb, 0x94, 0xee, 0x4c, 0xf2, 0x05, 0xf7, + 0x02, 0xfd, 0x41, 0x02, 0x2a, 0x09, 0x29, 0x0e, 0xf9, 0x10, 0x74, 0x13, 0xd2, 0x14, 0x57, 0x14, + 0x0e, 0x13, 0xf1, 0x13, 0x32, 0x13, 0x49, 0x12, 0xbc, 0x11, 0xfa, 0x10, 0xdd, 0x0d, 0xa8, 0x0c, + 0xbc, 0x0b, 0x80, 0x0b, 0x06, 0x0a, 0x21, 0x0a, 0x62, 0x0a, 0x6b, 0x0b, 0xc8, 0x0a, 0x58, 0x09, + 0x63, 0x05, 0x4f, 0x03, 0x33, 0x00, 0xd3, 0xfa, 0x58, 0xf6, 0x91, 0xee, 0x32, 0xe7, 0xcd, 0xe1, + 0x3d, 0xdd, 0xa7, 0xda, 0x42, 0xd9, 0xa7, 0xd6, 0x56, 0xd3, 0x3f, 0xd3, 0xc5, 0xd5, 0xd4, 0xda, + 0x88, 0xe1, 0x08, 0xe8, 0x1a, 0xf0, 0x8f, 0xf6, 0xbf, 0xfc, 0x34, 0x00, 0xb2, 0x03, 0xdb, 0x06, + 0xf5, 0x08, 0x65, 0x09, 0x40, 0x0c, 0xb1, 0x0e, 0x26, 0x0f, 0xd7, 0x0f, 0x79, 0x10, 0x9e, 0x0f, + 0x37, 0x10, 0x3f, 0x0f, 0xac, 0x0f, 0x27, 0x10, 0x49, 0x0f, 0x3a, 0x0f, 0x00, 0x0e, 0x3b, 0x0e, + 0xc1, 0x0d, 0x61, 0x0f, 0xa9, 0x0f, 0xfc, 0x0d, 0xdb, 0x0a, 0x06, 0x07, 0x12, 0x04, 0x5b, 0x00, + 0xe1, 0xfc, 0x63, 0xf8, 0xd8, 0xf1, 0xf2, 0xeb, 0x04, 0xe6, 0xd4, 0xe2, 0x1f, 0xe1, 0xee, 0xdf, + 0x99, 0xde, 0xf9, 0xe1, 0x13, 0xe5, 0xaf, 0xe7, 0x4d, 0xeb, 0x6f, 0xf0, 0x5f, 0xf5, 0x05, 0xfa, + 0xaf, 0xfe, 0x1d, 0x04, 0x08, 0x07, 0x11, 0x09, 0x0a, 0x0b, 0xc9, 0x0a, 0x84, 0x0a, 0x2a, 0x0a, + 0x22, 0x0b, 0x3f, 0x0b, 0x73, 0x0b, 0x1d, 0x09, 0x52, 0x08, 0x7f, 0x06, 0xd3, 0x04, 0x3f, 0x05, + 0x5a, 0x06, 0x98, 0x06, 0x1c, 0x07, 0x86, 0x09, 0xa3, 0x0c, 0x29, 0x10, 0x17, 0x15, 0x1e, 0x15, + 0x59, 0x13, 0xd4, 0x0e, 0x46, 0x0a, 0xdc, 0x05, 0xe0, 0x02, 0xe6, 0xff, 0xbb, 0xfa, 0xbf, 0xf7, + 0x56, 0xf5, 0xd9, 0xf2, 0x10, 0xf2, 0xec, 0xf2, 0x2c, 0xf4, 0x65, 0xf6, 0x64, 0xfa, 0xa4, 0xff, + 0xcf, 0x02, 0xfb, 0x05, 0x56, 0x09, 0x2c, 0x0d, 0x2d, 0x0e, 0xe4, 0x0f, 0xc2, 0x10, 0x00, 0x12, + 0xd1, 0x11, 0x02, 0x11, 0x67, 0x10, 0x43, 0x0f, 0x37, 0x0c, 0x54, 0x0a, 0x51, 0x08, 0x82, 0x04, + 0xec, 0x00, 0x54, 0xfe, 0x72, 0xfc, 0xe2, 0xfe, 0x20, 0x02, 0x3e, 0x04, 0xc4, 0x07, 0xf8, 0x08, + 0xc7, 0x08, 0xa0, 0x09, 0x59, 0x0b, 0xf2, 0x0a, 0xd5, 0x08, 0xc6, 0x04, 0x8b, 0x00, 0x74, 0xfa, + 0x01, 0xf4, 0x68, 0xef, 0xbb, 0xeb, 0xce, 0xe7, 0xad, 0xe7, 0xaf, 0xe7, 0xde, 0xe8, 0x97, 0xe9, + 0x0d, 0xec, 0x80, 0xee, 0x82, 0xf2, 0x4c, 0xf6, 0x98, 0xf9, 0xe2, 0xfd, 0x33, 0x01, 0xf5, 0x03, + 0x40, 0x05, 0xb5, 0x04, 0x1d, 0x04, 0xda, 0x03, 0x23, 0x05, 0xb3, 0x03, 0x79, 0x01, 0xed, 0xfe, + 0xaf, 0xfb, 0x92, 0xfb, 0x4e, 0xfd, 0x6f, 0xfe, 0x21, 0xfd, 0xfe, 0xfc, 0x3f, 0xfb, 0x5c, 0xfc, + 0x49, 0xff, 0x85, 0x02, 0x71, 0x05, 0x7b, 0x08, 0xc7, 0x08, 0xb2, 0x08, 0x75, 0x07, 0x37, 0x05, + 0x5a, 0x00, 0x9e, 0xfc, 0xa1, 0xfa, 0xb8, 0xf8, 0xd0, 0xf5, 0xcf, 0xf3, 0x76, 0xf2, 0x47, 0xef, + 0x30, 0xed, 0x22, 0xec, 0x32, 0xed, 0x93, 0xef, 0x1f, 0xf1, 0x6c, 0xf4, 0x5e, 0xf9, 0xcd, 0xfc, + 0x58, 0xff, 0xee, 0x03, 0x25, 0x09, 0x18, 0x0d, 0x32, 0x10, 0xe4, 0x0f, 0x9e, 0x0f, 0x53, 0x0f, + 0xe7, 0x11, 0x12, 0x12, 0xfc, 0x10, 0xd7, 0x0e, 0xf7, 0x0b, 0xb2, 0x09, 0xc6, 0x08, 0x97, 0x08, + 0xc6, 0x09, 0x8a, 0x0a, 0x11, 0x0c, 0x5b, 0x0c, 0x95, 0x0d, 0x3d, 0x0e, 0xcd, 0x0d, 0x46, 0x0e, + 0x4d, 0x0d, 0x57, 0x0d, 0x5c, 0x09, 0x91, 0x05, 0x4d, 0x02, 0x58, 0xfd, 0x95, 0xf8, 0xa7, 0xf3, + 0x11, 0xee, 0x16, 0xea, 0xc6, 0xe6, 0x4b, 0xe3, 0x5e, 0xe2, 0x2d, 0xe1, 0x6a, 0xdf, 0x89, 0xe2, + 0x73, 0xe5, 0xe8, 0xe8, 0x94, 0xed, 0x6f, 0xf1, 0x28, 0xf3, 0x76, 0xf8, 0xc7, 0xfe, 0x06, 0x04, + 0x70, 0x07, 0x61, 0x07, 0xe8, 0x06, 0x88, 0x07, 0x9c, 0x08, 0x1d, 0x0a, 0x20, 0x0b, 0x84, 0x0c, + 0x1f, 0x0e, 0x3d, 0x0c, 0xe4, 0x0c, 0x88, 0x0d, 0xc0, 0x0c, 0xd7, 0x0b, 0x10, 0x0e, 0x36, 0x10, + 0x5f, 0x12, 0x49, 0x14, 0x51, 0x15, 0x54, 0x16, 0xdc, 0x15, 0x35, 0x13, 0xa0, 0x0f, 0x2b, 0x0b, + 0xd1, 0x06, 0xb6, 0x00, 0x9d, 0xfa, 0x83, 0xf2, 0x22, 0xec, 0x58, 0xe6, 0xff, 0xe1, 0xa0, 0xdf, + 0xb7, 0xde, 0x21, 0xde, 0xc3, 0xdc, 0xf9, 0xdf, 0x34, 0xe5, 0xbb, 0xeb, 0x3e, 0xf2, 0x9f, 0xf6, + 0x43, 0xf9, 0x5f, 0xfb, 0x8a, 0xfc, 0x3f, 0xff, 0xbb, 0x00, 0x32, 0x03, 0xd4, 0x05, 0x4c, 0x08, + 0x76, 0x08, 0x06, 0x09, 0xd1, 0x08, 0xcb, 0x08, 0x37, 0x0a, 0x92, 0x0b, 0xca, 0x0c, 0xa2, 0x0e, + 0x62, 0x0f, 0x4d, 0x10, 0xdc, 0x11, 0x81, 0x12, 0xf5, 0x12, 0x16, 0x15, 0xc4, 0x15, 0xaf, 0x16, + 0x46, 0x15, 0xab, 0x11, 0xc4, 0x0d, 0xc4, 0x08, 0x94, 0x04, 0xba, 0xff, 0x87, 0xfb, 0x98, 0xf4, + 0x20, 0xed, 0xb0, 0xe7, 0x42, 0xe6, 0xc9, 0xe6, 0x40, 0xe9, 0x2a, 0xeb, 0x83, 0xec, 0x43, 0xee, + 0xce, 0xf2, 0x67, 0xf5, 0xa5, 0xf9, 0xc0, 0xfe, 0x35, 0x03, 0x30, 0x06, 0x35, 0x07, 0x6f, 0x08, + 0xfa, 0x07, 0x36, 0x07, 0xab, 0x07, 0x8c, 0x08, 0x11, 0x09, 0xac, 0x08, 0x6a, 0x08, 0xb6, 0x07, + 0x50, 0x07, 0xbf, 0x04, 0x6f, 0x02, 0x7e, 0x03, 0x92, 0x03, 0x4e, 0x06, 0x73, 0x08, 0x10, 0x0a, + 0x87, 0x0b, 0x8d, 0x0d, 0xc1, 0x0b, 0xac, 0x0a, 0x56, 0x08, 0x55, 0x03, 0xd2, 0xfd, 0x24, 0xf7, + 0x59, 0xf1, 0x1a, 0xef, 0x27, 0xed, 0x3e, 0xeb, 0x7a, 0xe9, 0xd4, 0xe7, 0x0b, 0xe8, 0x62, 0xea, + 0xe5, 0xec, 0x9e, 0xf1, 0x1b, 0xf8, 0x9e, 0xfb, 0x6a, 0xff, 0x60, 0x03, 0x05, 0x06, 0x24, 0x09, + 0x50, 0x0b, 0xe9, 0x0d, 0xa5, 0x10, 0xda, 0x12, 0xfc, 0x14, 0x54, 0x16, 0x79, 0x17, 0x50, 0x15, + 0x89, 0x13, 0x52, 0x10, 0x29, 0x0e, 0xe7, 0x0b, 0x60, 0x0a, 0xb9, 0x06, 0x0a, 0x04, 0x46, 0x03, + 0xe4, 0x02, 0x4f, 0x04, 0xba, 0x05, 0x6e, 0x05, 0x01, 0x05, 0x30, 0x03, 0x75, 0x00, 0xa0, 0xfd, + 0x06, 0xfd, 0x27, 0xfb, 0xac, 0xf4, 0x94, 0xee, 0x1d, 0xe9, 0xa9, 0xe5, 0x1c, 0xe2, 0xbc, 0xe0, + 0xb9, 0xe1, 0xdc, 0xe1, 0x49, 0xe3, 0x74, 0xe5, 0x58, 0xe7, 0x6c, 0xea, 0xa4, 0xed, 0x56, 0xf2, + 0x6d, 0xf8, 0xe0, 0xfe, 0x0f, 0x03, 0x3c, 0x09, 0x5c, 0x0c, 0x43, 0x0e, 0x4a, 0x10, 0xea, 0x11, + 0xfa, 0x12, 0x71, 0x13, 0xbe, 0x12, 0x23, 0x11, 0x19, 0x10, 0xe3, 0x0c, 0x05, 0x0b, 0xc1, 0x0a, + 0x26, 0x0a, 0x2a, 0x09, 0x16, 0x08, 0x91, 0x06, 0xb0, 0x05, 0x0d, 0x05, 0xaa, 0x07, 0xea, 0x09, + 0x5a, 0x09, 0x33, 0x06, 0xa2, 0x02, 0xe6, 0xfe, 0x4a, 0xfb, 0x43, 0xf8, 0x44, 0xf6, 0xef, 0xf2, + 0x1e, 0xef, 0xd9, 0xeb, 0x86, 0xe8, 0xa4, 0xe3, 0x1b, 0xe1, 0x46, 0xde, 0x35, 0xdf, 0xa0, 0xe1, + 0xa6, 0xe4, 0xa9, 0xea, 0x5c, 0xf0, 0x9c, 0xf5, 0x9f, 0xfa, 0x70, 0x00, 0x70, 0x04, 0x29, 0x08, + 0xa0, 0x0a, 0xdb, 0x0b, 0x11, 0x0d, 0x34, 0x0c, 0xa0, 0x09, 0x65, 0x09, 0x95, 0x08, 0x3e, 0x08, + 0xbc, 0x06, 0x24, 0x05, 0x8f, 0x03, 0x51, 0x03, 0x69, 0x05, 0x08, 0x0a, 0x73, 0x0b, 0x51, 0x0c, + 0x1e, 0x0e, 0xfa, 0x0e, 0xee, 0x0f, 0x95, 0x11, 0xe0, 0x11, 0x15, 0x11, 0x87, 0x0f, 0x95, 0x0d, + 0xfc, 0x09, 0xcd, 0x05, 0x8b, 0xff, 0x5d, 0xfa, 0x3f, 0xf7, 0x1e, 0xf3, 0x72, 0xf1, 0x8a, 0xf0, + 0xf4, 0xef, 0xd6, 0xef, 0xb4, 0xf1, 0x85, 0xf3, 0x85, 0xf5, 0xd2, 0xf8, 0x47, 0xfd, 0x39, 0x01, + 0xa0, 0x04, 0xe4, 0x05, 0xe7, 0x06, 0xe0, 0x07, 0x74, 0x09, 0x90, 0x09, 0x4f, 0x0a, 0x35, 0x09, + 0x6e, 0x06, 0x8a, 0x05, 0x26, 0x06, 0x22, 0x08, 0x6b, 0x08, 0x03, 0x07, 0x65, 0x06, 0xbd, 0x04, + 0xb2, 0x03, 0x33, 0x05, 0x7d, 0x07, 0x12, 0x08, 0x56, 0x0a, 0x40, 0x0e, 0xfb, 0x0e, 0x45, 0x0f, + 0xf7, 0x0c, 0x19, 0x0c, 0xea, 0x09, 0x7e, 0x06, 0x75, 0x03, 0xc2, 0x00, 0xb1, 0xfb, 0x43, 0xf7, + 0xbf, 0xf2, 0x49, 0xee, 0xc9, 0xea, 0x1f, 0xe8, 0xd6, 0xe7, 0xff, 0xe9, 0x43, 0xeb, 0x2e, 0xed, + 0x7c, 0xef, 0x70, 0xf2, 0x1f, 0xf7, 0x7a, 0xfb, 0xeb, 0xfc, 0x68, 0xfc, 0x35, 0xfb, 0x1d, 0xfa, + 0x27, 0xfc, 0x71, 0xfe, 0x02, 0x00, 0x66, 0x01, 0xb6, 0x01, 0x4e, 0x00, 0x74, 0xff, 0x11, 0x00, + 0x54, 0x01, 0x59, 0x00, 0x80, 0x01, 0x36, 0x03, 0xb2, 0x04, 0x7f, 0x04, 0xd7, 0x04, 0xb5, 0x06, + 0x10, 0x0a, 0xbd, 0x0b, 0x2b, 0x0d, 0x04, 0x0f, 0xf4, 0x0e, 0x7a, 0x0d, 0x08, 0x0c, 0x74, 0x07, + 0xe3, 0x02, 0x49, 0xfe, 0x4a, 0xf9, 0xf6, 0xf5, 0x90, 0xf2, 0xbb, 0xef, 0xf9, 0xec, 0x33, 0xec, + 0xc0, 0xed, 0xa6, 0xf1, 0xe5, 0xf4, 0x0d, 0xf7, 0xbd, 0xf8, 0xb0, 0xfa, 0x7b, 0xff, 0x13, 0x05, + 0x40, 0x07, 0xcc, 0x09, 0x6e, 0x0b, 0xb4, 0x0b, 0x32, 0x0b, 0x03, 0x0c, 0x93, 0x0b, 0xfc, 0x0b, + 0xa0, 0x0a, 0xc3, 0x09, 0x80, 0x09, 0xf7, 0x06, 0xbe, 0x04, 0xcc, 0x02, 0xa4, 0x01, 0x3b, 0x01, + 0x8f, 0x02, 0x59, 0x04, 0x9b, 0x07, 0x0a, 0x0b, 0x62, 0x0c, 0x9d, 0x0b, 0x83, 0x09, 0xb6, 0x06, + 0xb8, 0x03, 0x40, 0xff, 0xcc, 0xfa, 0xbc, 0xf5, 0x3a, 0xf0, 0xe7, 0xea, 0x56, 0xe7, 0xce, 0xe5, + 0xcb, 0xe4, 0xaf, 0xe2, 0xcb, 0xe1, 0x7a, 0xe1, 0x92, 0xe3, 0x49, 0xe8, 0x51, 0xed, 0x43, 0xf1, + 0x20, 0xf7, 0x70, 0xfa, 0xb8, 0xfd, 0x83, 0x02, 0xb5, 0x05, 0xb2, 0x0a, 0xed, 0x0e, 0xf8, 0x12, + 0x26, 0x16, 0x5a, 0x17, 0xab, 0x16, 0x4e, 0x16, 0xff, 0x14, 0x5b, 0x12, 0xab, 0x10, 0x74, 0x0f, + 0xf6, 0x0d, 0x15, 0x0f, 0xee, 0x0e, 0xcf, 0x0e, 0xfc, 0x0e, 0xe5, 0x0f, 0xc4, 0x10, 0x96, 0x11, + 0x02, 0x11, 0xc9, 0x0e, 0x35, 0x0a, 0x9b, 0x05, 0x49, 0x01, 0x39, 0xfc, 0x0b, 0xf7, 0x4b, 0xf1, + 0x6f, 0xe9, 0x0f, 0xe3, 0x4a, 0xde, 0xdd, 0xdb, 0xd7, 0xda, 0xc4, 0xda, 0x89, 0xdb, 0x88, 0xdb, + 0x27, 0xdd, 0xc7, 0xdf, 0x88, 0xe5, 0x59, 0xeb, 0xdb, 0xf1, 0x86, 0xf8, 0x23, 0xff, 0x50, 0x03, + 0x8d, 0x06, 0x5e, 0x09, 0xfe, 0x0a, 0x9b, 0x0b, 0x4e, 0x0d, 0xeb, 0x0d, 0xb7, 0x0e, 0x7a, 0x10, + 0xb4, 0x11, 0x62, 0x11, 0xf0, 0x11, 0x22, 0x12, 0xe8, 0x12, 0xac, 0x14, 0x50, 0x14, 0x7c, 0x14, + 0x6b, 0x15, 0x1c, 0x14, 0x18, 0x14, 0xff, 0x13, 0x5b, 0x13, 0xf6, 0x11, 0x4e, 0x0d, 0x9f, 0x07, + 0xe4, 0x02, 0x0b, 0x00, 0x1c, 0xfb, 0x5a, 0xf8, 0x62, 0xf4, 0x36, 0xef, 0xb3, 0xe9, 0x6c, 0xe5, + 0x24, 0xe3, 0x42, 0xe3, 0x08, 0xe4, 0x8b, 0xe6, 0xd2, 0xea, 0x8a, 0xef, 0xad, 0xf4, 0x81, 0xf9, + 0xf9, 0xfd, 0x64, 0x01, 0xdf, 0x03, 0xfc, 0x06, 0xda, 0x08, 0x87, 0x0b, 0xc1, 0x0d, 0x85, 0x0d, + 0xd0, 0x0c, 0x4a, 0x0c, 0x29, 0x0b, 0x43, 0x0a, 0xf0, 0x0a, 0xd4, 0x09, 0x93, 0x08, 0xd2, 0x07, + 0xb3, 0x07, 0xb6, 0x07, 0xbf, 0x09, 0x77, 0x0b, 0xa9, 0x0c, 0x5e, 0x0a, 0x07, 0x09, 0x97, 0x08, + 0x06, 0x09, 0x89, 0x08, 0x9c, 0x06, 0x8e, 0x03, 0xa5, 0x00, 0x6d, 0xfc, 0x75, 0xf8, 0xfc, 0xf5, + 0xa3, 0xf2, 0xa5, 0xef, 0x1e, 0xef, 0xc9, 0xed, 0x55, 0xee, 0xc5, 0xef, 0xf4, 0xef, 0x77, 0xf2, + 0x3c, 0xf5, 0x6c, 0xf8, 0x1c, 0xfd, 0x73, 0x02, 0x0c, 0x06, 0x53, 0x09, 0xd2, 0x0b, 0xa1, 0x0c, + 0x0d, 0x0d, 0x98, 0x0d, 0x04, 0x0d, 0x3d, 0x0d, 0xbb, 0x0a, 0xae, 0x08, 0xae, 0x06, 0xa0, 0x04, + 0x7c, 0x02, 0x07, 0x02, 0xc2, 0xff, 0x90, 0xfb, 0x49, 0xf8, 0x83, 0xf7, 0xe9, 0xf9, 0xfa, 0xfc, + 0xf6, 0x00, 0xac, 0x02, 0xbb, 0x02, 0x40, 0x02, 0xfe, 0x00, 0x26, 0x00, 0x74, 0xfe, 0xa4, 0xfb, + 0xf3, 0xf8, 0x25, 0xf6, 0xbd, 0xf1, 0xe5, 0xec, 0x47, 0xe9, 0xc1, 0xe6, 0x5b, 0xe6, 0x13, 0xe6, + 0x6b, 0xe8, 0x63, 0xec, 0x2e, 0xf1, 0xf9, 0xf5, 0xd5, 0xfb, 0x57, 0x01, 0x8b, 0x05, 0x42, 0x08, + 0x1e, 0x0c, 0xab, 0x0e, 0x91, 0x0e, 0xdb, 0x0d, 0x62, 0x0e, 0xd5, 0x0e, 0x78, 0x0f, 0x25, 0x11, + 0xc3, 0x0e, 0xdf, 0x0b, 0x80, 0x07, 0xdb, 0x03, 0x1e, 0x03, 0xb5, 0x02, 0x9c, 0x02, 0x7a, 0x02, + 0xaa, 0x00, 0x9f, 0xff, 0xc2, 0x00, 0xb8, 0x02, 0x79, 0x03, 0x19, 0x05, 0x1d, 0x06, 0x2f, 0x06, + 0x45, 0x05, 0x8a, 0x02, 0xd5, 0xfd, 0x3c, 0xf9, 0x5c, 0xf4, 0x1c, 0xf0, 0x72, 0xec, 0x60, 0xe9, + 0x23, 0xe7, 0xf0, 0xe6, 0xcb, 0xe7, 0x9a, 0xe8, 0xb7, 0xe9, 0x1f, 0xed, 0x52, 0xf1, 0xaf, 0xf5, + 0x1f, 0xfa, 0xf1, 0xfc, 0x56, 0x00, 0x36, 0x02, 0xb7, 0x05, 0xa2, 0x0a, 0x05, 0x0e, 0x1a, 0x0d, + 0xff, 0x0c, 0x79, 0x0c, 0x24, 0x0b, 0x15, 0x0c, 0xf0, 0x0c, 0xae, 0x0c, 0xa6, 0x0b, 0xd8, 0x08, + 0x88, 0x07, 0x90, 0x06, 0x64, 0x06, 0x93, 0x07, 0x1b, 0x0b, 0xf6, 0x0d, 0x66, 0x10, 0x13, 0x12, + 0x1a, 0x12, 0x4f, 0x11, 0x50, 0x0e, 0xcf, 0x0a, 0x39, 0x08, 0x04, 0x04, 0x79, 0x00, 0xd4, 0xfd, + 0xc4, 0xf9, 0xc5, 0xf6, 0xfa, 0xf1, 0xd7, 0xee, 0xbf, 0xed, 0x83, 0xed, 0xa6, 0xec, 0x97, 0xec, + 0xea, 0xeb, 0x0f, 0xec, 0x70, 0xef, 0xe3, 0xf4, 0xdb, 0xf8, 0xcb, 0xfb, 0xc0, 0xfd, 0xf9, 0xff, + 0xb3, 0x02, 0x71, 0x06, 0x46, 0x0a, 0xcb, 0x0d, 0x8c, 0x0d, 0xc7, 0x0c, 0x7b, 0x0c, 0x7c, 0x0b, + 0x88, 0x09, 0x74, 0x08, 0x4a, 0x09, 0xf8, 0x08, 0xcc, 0x09, 0x07, 0x0a, 0x8d, 0x0a, 0xb3, 0x0c, + 0x5e, 0x0e, 0x45, 0x0f, 0x59, 0x11, 0xea, 0x11, 0xfd, 0x11, 0x66, 0x11, 0xa1, 0x10, 0xa9, 0x0d, + 0xa0, 0x0a, 0x45, 0x05, 0x7c, 0x00, 0x8b, 0xfb, 0x83, 0xf5, 0x97, 0xef, 0xd8, 0xe9, 0x44, 0xe4, + 0x41, 0xe1, 0xb5, 0xe1, 0x40, 0xe2, 0xd7, 0xe1, 0x1d, 0xe2, 0x71, 0xe3, 0x9c, 0xe6, 0x58, 0xea, + 0x03, 0xf0, 0x0a, 0xf6, 0x08, 0xf9, 0x38, 0xfb, 0xb5, 0xfb, 0x9c, 0xfc, 0x04, 0xfe, 0x83, 0xff, + 0x06, 0x01, 0x4f, 0x03, 0xa6, 0x04, 0x4d, 0x05, 0x5c, 0x05, 0x22, 0x06, 0x35, 0x06, 0x31, 0x07, + 0xfc, 0x06, 0xe3, 0x07, 0x93, 0x09, 0x20, 0x0c, 0x4a, 0x0e, 0xfa, 0x0f, 0xbc, 0x10, 0x08, 0x11, + 0x82, 0x11, 0xf7, 0x10, 0xf9, 0x0f, 0x3f, 0x0d, 0x2c, 0x09, 0x67, 0x03, 0x28, 0xff, 0x6f, 0xfd, + 0xcd, 0xf9, 0x75, 0xf5, 0x5d, 0xf0, 0x29, 0xeb, 0x21, 0xe8, 0x58, 0xe6, 0x51, 0xe8, 0x4e, 0xec, + 0x5b, 0xf0, 0xcb, 0xf3, 0xcf, 0xf8, 0x3d, 0xfb, 0x9f, 0xfd, 0xef, 0x01, 0xe9, 0x04, 0xaf, 0x07, + 0xf5, 0x0a, 0xfa, 0x0b, 0x7f, 0x0c, 0xf5, 0x0b, 0x30, 0x0a, 0x68, 0x08, 0x8b, 0x07, 0x5f, 0x06, + 0x4c, 0x05, 0xc7, 0x05, 0x86, 0x05, 0x8a, 0x05, 0xa4, 0x04, 0x75, 0x05, 0xf2, 0x06, 0x77, 0x08, + 0xcf, 0x0a, 0x55, 0x0c, 0x7c, 0x0b, 0x68, 0x09, 0xc6, 0x06, 0xee, 0x05, 0xd7, 0x04, 0xba, 0x02, + 0x02, 0xff, 0xed, 0xf9, 0x50, 0xf3, 0x87, 0xed, 0xc7, 0xea, 0xd5, 0xe9, 0xec, 0xe8, 0x5b, 0xe9, + 0xdd, 0xea, 0x07, 0xec, 0xbe, 0xed, 0xad, 0xf1, 0xb5, 0xf6, 0xa2, 0xfc, 0xfa, 0x01, 0xfc, 0x06, + 0x94, 0x0b, 0xe7, 0x0e, 0xb8, 0x10, 0xc2, 0x11, 0x3b, 0x13, 0xfb, 0x12, 0xf7, 0x14, 0xae, 0x15, + 0xce, 0x15, 0x7c, 0x14, 0x15, 0x12, 0x07, 0x0f, 0x01, 0x0d, 0xe5, 0x09, 0x01, 0x07, 0xbd, 0x06, + 0x01, 0x05, 0x4d, 0x02, 0x35, 0x02, 0xfc, 0x02, 0x15, 0x05, 0xa7, 0x05, 0x6f, 0x04, 0xaf, 0x01, + 0x67, 0xfd, 0x13, 0xf8, 0x83, 0xf4, 0x6a, 0xf1, 0xad, 0xec, 0x16, 0xe8, 0x9b, 0xe3, 0xbd, 0xde, + 0x90, 0xdb, 0x20, 0xda, 0x12, 0xda, 0x17, 0xdc, 0xb6, 0xde, 0xf3, 0xe3, 0x71, 0xe8, 0x40, 0xee, + 0xa3, 0xf3, 0xa8, 0xf8, 0x01, 0xfd, 0xe2, 0x00, 0xf1, 0x03, 0x5d, 0x07, 0xe5, 0x0a, 0x79, 0x0e, + 0xc6, 0x11, 0x2b, 0x14, 0xc5, 0x15, 0x0a, 0x17, 0x24, 0x17, 0x4d, 0x17, 0x13, 0x16, 0xae, 0x13, + 0x8e, 0x10, 0x8a, 0x0e, 0x08, 0x0e, 0x32, 0x0e, 0xbd, 0x0d, 0xc0, 0x0b, 0x2f, 0x0a, 0x18, 0x08, + 0x9d, 0x08, 0x58, 0x09, 0xb2, 0x08, 0xec, 0x07, 0xb3, 0x04, 0x70, 0xff, 0x5d, 0xfb, 0x6d, 0xf6, + 0xba, 0xf1, 0xf2, 0xed, 0xf1, 0xea, 0xe0, 0xe7, 0xec, 0xe6, 0x2f, 0xe5, 0x9f, 0xe4, 0xbe, 0xe4, + 0xe5, 0xe4, 0x50, 0xe8, 0xa7, 0xec, 0xa2, 0xf0, 0x03, 0xf6, 0x59, 0xfc, 0x07, 0x01, 0x72, 0x04, + 0x29, 0x09, 0xc0, 0x0c, 0x1d, 0x10, 0x9c, 0x12, 0x9e, 0x12, 0xba, 0x11, 0x40, 0x0f, 0x77, 0x0d, + 0x82, 0x0c, 0xc5, 0x0c, 0x0e, 0x0c, 0x8c, 0x09, 0x73, 0x06, 0x07, 0x05, 0x75, 0x05, 0x56, 0x08, + 0x13, 0x0b, 0x6e, 0x0e, 0x3f, 0x10, 0xb7, 0x10, 0xcd, 0x0f, 0xf3, 0x0d, 0x8f, 0x0a, 0x29, 0x08, + 0xf7, 0x06, 0xee, 0x04, 0x96, 0x02, 0xd4, 0xfe, 0xd3, 0xfa, 0x05, 0xf6, 0xa4, 0xf1, 0x71, 0xee, + 0xae, 0xec, 0xca, 0xeb, 0xa5, 0xeb, 0x84, 0xed, 0xe4, 0xee, 0x68, 0xf1, 0x84, 0xf4, 0x71, 0xf7, + 0x0b, 0xfd, 0xa2, 0x01, 0x99, 0x05, 0xdf, 0x06, 0x7b, 0x06, 0x30, 0x06, 0x48, 0x08, 0x19, 0x09, + 0xb0, 0x09, 0xb9, 0x09, 0x4d, 0x06, 0xdb, 0x02, 0x33, 0x01, 0x87, 0xff, 0xe4, 0xff, 0xaa, 0xff, + 0x4d, 0xff, 0x96, 0x00, 0x8b, 0x02, 0xc2, 0x03, 0x02, 0x05, 0x9c, 0x07, 0x7c, 0x09, 0x7d, 0x0b, + 0xbc, 0x0c, 0x00, 0x0d, 0x41, 0x0c, 0xea, 0x09, 0x85, 0x06, 0x75, 0x02, 0xa4, 0xfe, 0x51, 0xfa, + 0x89, 0xf6, 0x50, 0xf5, 0x98, 0xf2, 0x47, 0xf0, 0x28, 0xef, 0x87, 0xee, 0x11, 0xef, 0x6b, 0xf2, + 0xcd, 0xf5, 0xf8, 0xf8, 0x83, 0xfb, 0x17, 0xfe, 0x8b, 0x01, 0x82, 0x04, 0x21, 0x06, 0xd2, 0x06, + 0x2c, 0x06, 0xc4, 0x04, 0xfe, 0x03, 0xcc, 0x03, 0xa0, 0x03, 0x5c, 0x03, 0xc8, 0x02, 0xe1, 0x01, + 0xbb, 0x01, 0xde, 0xff, 0x8a, 0xff, 0x8b, 0xfe, 0x59, 0xfe, 0x37, 0xff, 0x05, 0x00, 0xf9, 0x01, + 0xc9, 0x03, 0x8b, 0x04, 0x8f, 0x05, 0x66, 0x06, 0x5f, 0x05, 0x50, 0x03, 0x90, 0x03, 0x29, 0x02, + 0x48, 0x01, 0x55, 0xfe, 0x0a, 0xfa, 0xd7, 0xf5, 0x85, 0xf1, 0xa0, 0xee, 0xcc, 0xec, 0x02, 0xea, + 0x94, 0xe6, 0x67, 0xe6, 0x03, 0xe9, 0xe3, 0xec, 0x4d, 0xf2, 0xb3, 0xf7, 0x84, 0xfa, 0xd6, 0xfc, + 0xde, 0xfe, 0x9a, 0x01, 0xc1, 0x04, 0x3a, 0x08, 0x37, 0x09, 0xdb, 0x09, 0xdd, 0x0a, 0x84, 0x09, + 0xa3, 0x07, 0x3b, 0x08, 0xfd, 0x07, 0x71, 0x07, 0x25, 0x07, 0xe7, 0x06, 0xb2, 0x06, 0xeb, 0x06, + 0x8b, 0x05, 0xa1, 0x06, 0x2f, 0x08, 0x7c, 0x09, 0xcf, 0x0b, 0xb0, 0x0d, 0x44, 0x0e, 0x4f, 0x0d, + 0x04, 0x0c, 0x2a, 0x09, 0x4e, 0x07, 0xe5, 0x04, 0xf1, 0x01, 0xf4, 0xfc, 0xc5, 0xf5, 0x79, 0xf0, + 0xfd, 0xec, 0x23, 0xeb, 0xed, 0xeb, 0xbd, 0xeb, 0x13, 0xec, 0xbf, 0xeb, 0x34, 0xec, 0x16, 0xee, + 0x9f, 0xf2, 0x0f, 0xf7, 0x00, 0xfc, 0xdf, 0x00, 0xab, 0x03, 0x31, 0x06, 0xbf, 0x07, 0x9c, 0x09, + 0xec, 0x0c, 0x42, 0x0f, 0xd3, 0x11, 0x91, 0x13, 0xae, 0x14, 0x22, 0x14, 0x2d, 0x13, 0x5c, 0x11, + 0x97, 0x0d, 0x0c, 0x0c, 0xc5, 0x0b, 0xfa, 0x0c, 0x6b, 0x0e, 0x13, 0x10, 0x8b, 0x11, 0x9b, 0x12, + 0xb4, 0x12, 0xbf, 0x12, 0x45, 0x13, 0xfc, 0x11, 0x2f, 0x0c, 0x7b, 0x06, 0x7f, 0x00, 0xb8, 0xf9, + 0x51, 0xf4, 0x7b, 0xef, 0xdc, 0xe8, 0x26, 0xe3, 0x68, 0xde, 0x68, 0xda, 0xd2, 0xd9, 0xc7, 0xda, + 0x9f, 0xdc, 0x05, 0xe0, 0x77, 0xe3, 0xd2, 0xe6, 0x09, 0xeb, 0x48, 0xef, 0x27, 0xf2, 0x8f, 0xf5, + 0x4b, 0xf9, 0x9b, 0xfd, 0xbc, 0x02, 0xdc, 0x05, 0x25, 0x0a, 0x52, 0x0b, 0xa7, 0x0b, 0xdd, 0x0b, + 0x45, 0x0c, 0x3e, 0x0d, 0x1c, 0x0e, 0x57, 0x0e, 0x01, 0x0f, 0x29, 0x0f, 0xd6, 0x0e, 0x78, 0x10, + 0xaa, 0x13, 0x04, 0x15, 0x0b, 0x17, 0x89, 0x17, 0xaf, 0x16, 0x1e, 0x15, 0x39, 0x13, 0xc4, 0x11, + 0x6e, 0x0e, 0xc1, 0x08, 0x9b, 0x02, 0x5b, 0xfd, 0xde, 0xf7, 0xf8, 0xf2, 0x71, 0xef, 0x58, 0xec, + 0xc6, 0xe8, 0x50, 0xe5, 0x2a, 0xe3, 0xd3, 0xe3, 0xf9, 0xe4, 0xd6, 0xe7, 0x12, 0xeb, 0x64, 0xf0, + 0x6e, 0xf5, 0x67, 0xf9, 0x07, 0xfe, 0x52, 0x02, 0xe0, 0x03, 0x75, 0x05, 0x0f, 0x07, 0x22, 0x07, + 0x18, 0x07, 0x28, 0x07, 0xce, 0x06, 0x94, 0x06, 0xa5, 0x04, 0x3b, 0x04, 0x00, 0x06, 0x04, 0x06, + 0xfb, 0x04, 0x95, 0x04, 0xeb, 0x04, 0x4e, 0x05, 0x63, 0x09, 0x53, 0x0c, 0x6c, 0x0d, 0x22, 0x0c, + 0x1c, 0x08, 0xb8, 0x04, 0x80, 0x02, 0x2b, 0x01, 0xe7, 0xff, 0xd5, 0xfd, 0x03, 0xfb, 0xe4, 0xf6, + 0xca, 0xf3, 0x8f, 0xf0, 0xdc, 0xee, 0x6f, 0xed, 0x9d, 0xed, 0x37, 0xee, 0x1e, 0xef, 0x85, 0xf1, + 0xb1, 0xf3, 0xb1, 0xf6, 0x14, 0xfa, 0x73, 0xfd, 0x8a, 0x01, 0x92, 0x05, 0x90, 0x08, 0x64, 0x0b, + 0xf3, 0x0d, 0x8b, 0x0f, 0x79, 0x0f, 0xd2, 0x0f, 0x71, 0x0f, 0xf7, 0x0e, 0x15, 0x0d, 0x4c, 0x0a, + 0x62, 0x05, 0x83, 0x01, 0x31, 0x00, 0x29, 0x00, 0x63, 0x00, 0x00, 0x00, 0x17, 0xfe, 0x89, 0xfd, + 0x65, 0xfd, 0xbb, 0xfd, 0x2a, 0xff, 0xa0, 0x00, 0x42, 0x00, 0x42, 0x00, 0x79, 0xfe, 0x1d, 0xfb, + 0x9d, 0xf8, 0xe1, 0xf4, 0x86, 0xf1, 0xe2, 0xee, 0x48, 0xec, 0xd0, 0xe9, 0xa3, 0xe8, 0x44, 0xe7, + 0xe8, 0xe6, 0xbe, 0xe7, 0x2b, 0xe9, 0x8f, 0xed, 0x33, 0xf4, 0x6b, 0xfa, 0x17, 0x01, 0x32, 0x05, + 0xf1, 0x08, 0xf2, 0x0b, 0x6d, 0x0f, 0x6e, 0x12, 0xce, 0x14, 0x12, 0x16, 0x7e, 0x14, 0x94, 0x12, + 0x05, 0x12, 0xb4, 0x12, 0x7f, 0x12, 0x9d, 0x10, 0x2f, 0x0e, 0x0c, 0x0a, 0x6e, 0x07, 0x86, 0x05, + 0x7b, 0x03, 0x1d, 0x03, 0x2c, 0x03, 0x10, 0x04, 0x15, 0x05, 0x82, 0x05, 0xf3, 0x04, 0xe7, 0x04, + 0xa2, 0x03, 0x86, 0x02, 0x5f, 0x01, 0x85, 0xff, 0x47, 0xfc, 0xae, 0xf8, 0x2c, 0xf4, 0x93, 0xef, + 0x22, 0xeb, 0x25, 0xe8, 0xe0, 0xe6, 0xc3, 0xe7, 0x5d, 0xea, 0x33, 0xed, 0xaf, 0xef, 0x7b, 0xf4, + 0x70, 0xfa, 0x1c, 0xff, 0x69, 0x04, 0x67, 0x08, 0x0a, 0x0a, 0xe7, 0x0b, 0x79, 0x0d, 0x88, 0x0f, + 0xa6, 0x11, 0x55, 0x12, 0x54, 0x11, 0x34, 0x0f, 0x58, 0x0d, 0xdc, 0x0b, 0x20, 0x0c, 0xf8, 0x0a, + 0x3b, 0x0b, 0xb5, 0x0a, 0x8a, 0x09, 0xa5, 0x08, 0xa5, 0x08, 0xf4, 0x09, 0xd2, 0x0b, 0xbd, 0x0d, + 0xd6, 0x0e, 0x74, 0x0e, 0x01, 0x0e, 0x38, 0x0c, 0x60, 0x0a, 0x33, 0x07, 0x9d, 0x03, 0x18, 0xff, + 0x03, 0xfa, 0xfb, 0xf5, 0x10, 0xf2, 0x2d, 0xef, 0xcb, 0xeb, 0x49, 0xea, 0x44, 0xeb, 0x66, 0xec, + 0xc8, 0xed, 0xaf, 0xee, 0xc6, 0xee, 0xbe, 0xef, 0x5e, 0xf2, 0x1a, 0xf6, 0x13, 0xfa, 0xb9, 0xfd, + 0x50, 0xfe, 0xa8, 0xff, 0x3b, 0x00, 0xe9, 0x01, 0x12, 0x04, 0x74, 0x06, 0x95, 0x08, 0x7d, 0x09, + 0x43, 0x08, 0x61, 0x06, 0xec, 0x03, 0x99, 0x01, 0xc2, 0x00, 0xc0, 0x00, 0xfe, 0x01, 0x1a, 0x05, + 0x83, 0x07, 0x89, 0x0a, 0x83, 0x0e, 0xe1, 0x0f, 0xc4, 0x10, 0x5b, 0x11, 0xc0, 0x10, 0x8f, 0x0f, + 0x18, 0x0e, 0x4c, 0x0a, 0x25, 0x05, 0x56, 0x00, 0xe6, 0xfa, 0x51, 0xf7, 0x8f, 0xf4, 0x3d, 0xf1, + 0xe1, 0xed, 0x89, 0xe9, 0x8b, 0xe7, 0x35, 0xe6, 0x15, 0xe8, 0x49, 0xeb, 0xdb, 0xed, 0x39, 0xef, + 0x41, 0xf0, 0x96, 0xf1, 0xe8, 0xf2, 0x9c, 0xf5, 0xc3, 0xf8, 0xe7, 0xfc, 0xda, 0xff, 0xb2, 0x00, + 0x47, 0x01, 0x5b, 0x01, 0xbb, 0x00, 0xa6, 0x00, 0x96, 0x00, 0x38, 0x01, 0x4c, 0x02, 0x22, 0x03, + 0x7d, 0x03, 0xda, 0x03, 0x9c, 0x03, 0xf0, 0x04, 0x23, 0x07, 0x0c, 0x0a, 0xb3, 0x0d, 0xd1, 0x0f, + 0x23, 0x0f, 0xaf, 0x0e, 0x7a, 0x0d, 0xf7, 0x0c, 0xe9, 0x0b, 0x65, 0x09, 0x6f, 0x05, 0x61, 0x00, + 0xb4, 0xfa, 0xf3, 0xf5, 0xa2, 0xf2, 0x46, 0xf0, 0x93, 0xee, 0x51, 0xeb, 0x6d, 0xe9, 0x3a, 0xe9, + 0x4b, 0xea, 0xb0, 0xec, 0x0d, 0xf1, 0x7b, 0xf5, 0x85, 0xf9, 0x31, 0xfd, 0x88, 0x00, 0xdb, 0x02, + 0xee, 0x04, 0xd9, 0x05, 0xf3, 0x07, 0x8c, 0x08, 0xe7, 0x08, 0x80, 0x09, 0x29, 0x09, 0xc0, 0x07, + 0xf2, 0x05, 0x8a, 0x05, 0x80, 0x04, 0x29, 0x04, 0x34, 0x06, 0x08, 0x08, 0x15, 0x0a, 0xb9, 0x0b, + 0x40, 0x0d, 0x45, 0x0e, 0xfd, 0x0f, 0x0b, 0x10, 0x0d, 0x0e, 0x6e, 0x0c, 0x24, 0x09, 0xd0, 0x06, + 0xeb, 0x04, 0x7e, 0x02, 0xf1, 0xfe, 0x3e, 0xfb, 0x17, 0xf6, 0x3a, 0xf1, 0xd5, 0xed, 0x5c, 0xec, + 0x76, 0xec, 0x43, 0xec, 0x00, 0xec, 0x6c, 0xee, 0xff, 0xf0, 0x3a, 0xf4, 0x9c, 0xf8, 0xc4, 0xfd, + 0x8f, 0x02, 0xa1, 0x06, 0x78, 0x0a, 0x8a, 0x0e, 0x2f, 0x11, 0x1d, 0x12, 0x12, 0x13, 0x92, 0x13, + 0xaf, 0x12, 0x05, 0x12, 0x19, 0x11, 0x2e, 0x10, 0xeb, 0x0e, 0xe9, 0x0b, 0xa7, 0x0a, 0x12, 0x0a, + 0x40, 0x0a, 0xa8, 0x0a, 0xa9, 0x0b, 0x85, 0x0a, 0x10, 0x09, 0x75, 0x07, 0x36, 0x07, 0xdc, 0x07, + 0xde, 0x05, 0x1b, 0x03, 0x81, 0xff, 0xd9, 0xf9, 0x6d, 0xf3, 0xb9, 0xec, 0xae, 0xe8, 0x2c, 0xe4, + 0x80, 0xe0, 0x39, 0xde, 0x98, 0xdc, 0x7f, 0xdb, 0x44, 0xdb, 0x0c, 0xdd, 0xa5, 0xe0, 0x3c, 0xe6, + 0x03, 0xec, 0x49, 0xf2, 0xfc, 0xf7, 0x40, 0xfb, 0x58, 0xfe, 0xea, 0x01, 0xdc, 0x03, 0x2d, 0x07, + 0xa9, 0x0b, 0xd0, 0x0e, 0xd5, 0x10, 0xda, 0x12, 0xd7, 0x12, 0x38, 0x14, 0xab, 0x15, 0xee, 0x16, + 0xc9, 0x17, 0x26, 0x16, 0x76, 0x12, 0x58, 0x0f, 0x94, 0x0e, 0x3a, 0x0f, 0x58, 0x10, 0x03, 0x11, + 0x5e, 0x10, 0x4d, 0x0e, 0x8a, 0x0b, 0x1c, 0x09, 0x86, 0x06, 0x35, 0x04, 0x9f, 0x01, 0xad, 0xfd, + 0x9b, 0xf9, 0x5c, 0xf3, 0xd3, 0xec, 0xed, 0xe7, 0x28, 0xe4, 0xd0, 0xe0, 0x87, 0xdf, 0x36, 0xe1, + 0x34, 0xe3, 0x36, 0xe5, 0x64, 0xe8, 0x95, 0xeb, 0x8e, 0xef, 0x80, 0xf2, 0x6a, 0xf7, 0xe3, 0xfb, + 0x12, 0x00, 0x71, 0x03, 0x77, 0x05, 0xf8, 0x07, 0x50, 0x0a, 0x2b, 0x0d, 0x16, 0x0f, 0x50, 0x0f, + 0xf6, 0x0d, 0xa9, 0x0c, 0x55, 0x0b, 0xe5, 0x09, 0x70, 0x09, 0xd6, 0x07, 0x59, 0x06, 0x99, 0x06, + 0x28, 0x06, 0x7b, 0x07, 0x79, 0x09, 0x21, 0x0b, 0x5b, 0x0c, 0x47, 0x0d, 0x90, 0x0c, 0x19, 0x0c, + 0x26, 0x0a, 0x99, 0x06, 0xce, 0x03, 0x3f, 0x00, 0x11, 0xfc, 0xa0, 0xf9, 0xf8, 0xf6, 0x46, 0xf5, + 0x7f, 0xf4, 0xeb, 0xf2, 0x40, 0xf0, 0x92, 0xef, 0x6a, 0xf0, 0xec, 0xf1, 0xed, 0xf4, 0xe8, 0xf7, + 0x3e, 0xfb, 0xae, 0xfd, 0x63, 0x01, 0x2d, 0x05, 0xe9, 0x08, 0xd0, 0x0b, 0xd2, 0x0b, 0x24, 0x0b, + 0x31, 0x0c, 0xe4, 0x0b, 0x86, 0x0a, 0xf2, 0x07, 0x2a, 0x05, 0x2f, 0x00, 0x5d, 0xfc, 0x2c, 0xf9, + 0x06, 0xf8, 0x8a, 0xf8, 0x4c, 0xf9, 0xaf, 0xfb, 0x2a, 0xfe, 0x81, 0x00, 0x7e, 0x02, 0x76, 0x03, + 0xc7, 0x04, 0x76, 0x04, 0x30, 0x04, 0x18, 0x04, 0x7f, 0x02, 0xe9, 0xff, 0x14, 0xfd, 0xa4, 0xf9, + 0xa1, 0xf4, 0xcd, 0xf1, 0x8d, 0xef, 0x0f, 0xef, 0x8f, 0xee, 0x0e, 0xee, 0x78, 0xee, 0x53, 0xf0, + 0x56, 0xf3, 0x13, 0xf8, 0xfd, 0xfc, 0xa7, 0x00, 0x62, 0x03, 0xe0, 0x04, 0x61, 0x05, 0x9b, 0x08, + 0x2a, 0x0b, 0xe5, 0x0c, 0xd0, 0x0d, 0xf5, 0x0c, 0x08, 0x0b, 0xdc, 0x08, 0x55, 0x06, 0x70, 0x04, + 0x1f, 0x04, 0x79, 0x03, 0xf9, 0x01, 0x86, 0x00, 0xa5, 0xfe, 0xab, 0xfd, 0x3a, 0xfe, 0x04, 0xff, + 0xb7, 0x00, 0xa7, 0x02, 0xd5, 0x04, 0x18, 0x05, 0x41, 0x06, 0x0b, 0x06, 0x1a, 0x04, 0xbc, 0x01, + 0x7b, 0x00, 0xfd, 0xfe, 0x9f, 0xfc, 0x36, 0xfa, 0x6b, 0xf6, 0x44, 0xf3, 0x4c, 0xf1, 0xb4, 0xef, + 0xd2, 0xf0, 0xd9, 0xf0, 0xd7, 0xf0, 0x7a, 0xf1, 0x04, 0xf3, 0xc6, 0xf6, 0x94, 0xfb, 0xda, 0x00, + 0x03, 0x05, 0x54, 0x08, 0x13, 0x0a, 0x75, 0x0b, 0x01, 0x0c, 0x94, 0x0c, 0x87, 0x0d, 0xf0, 0x0c, + 0xe3, 0x0c, 0xfa, 0x0c, 0x88, 0x0b, 0x9f, 0x0a, 0x3b, 0x09, 0xc5, 0x07, 0x56, 0x06, 0xc1, 0x06, + 0xa2, 0x06, 0xd5, 0x08, 0x07, 0x0b, 0x6c, 0x0b, 0x4f, 0x0b, 0x92, 0x09, 0x60, 0x08, 0x8f, 0x07, + 0xf5, 0x06, 0xb8, 0x06, 0x5c, 0x05, 0xaa, 0x02, 0xc3, 0xff, 0xfd, 0xfc, 0xb8, 0xf9, 0x7e, 0xf6, + 0xcd, 0xf3, 0xa0, 0xef, 0x8b, 0xec, 0x6f, 0xea, 0xdb, 0xe9, 0xcd, 0xe9, 0x5b, 0xeb, 0x20, 0xed, + 0xd7, 0xee, 0x98, 0xf1, 0x44, 0xf4, 0x29, 0xf7, 0xe0, 0xfb, 0xcd, 0xff, 0xd7, 0x02, 0x33, 0x05, + 0x57, 0x08, 0xb9, 0x09, 0x24, 0x0b, 0xd0, 0x0b, 0x9f, 0x0b, 0xb8, 0x0c, 0xd9, 0x0b, 0xf8, 0x0b, + 0xf4, 0x0c, 0xfc, 0x0c, 0x2d, 0x0c, 0x8a, 0x0b, 0x63, 0x0b, 0x64, 0x0c, 0xd3, 0x0e, 0xe3, 0x10, + 0xf3, 0x11, 0x13, 0x12, 0x82, 0x11, 0x5e, 0x11, 0xea, 0x0f, 0x52, 0x0e, 0x9f, 0x0a, 0x5e, 0x04, + 0x02, 0xfd, 0x87, 0xf6, 0x1f, 0xf1, 0x57, 0xed, 0x19, 0xe9, 0xa3, 0xe4, 0x16, 0xe1, 0xec, 0xdd, + 0x00, 0xdc, 0x71, 0xdd, 0xc6, 0xdf, 0x7d, 0xe3, 0xa9, 0xe7, 0xdc, 0xea, 0xec, 0xed, 0xa6, 0xf0, + 0x04, 0xf4, 0x64, 0xf6, 0x5a, 0xf9, 0x5d, 0xfc, 0x39, 0x00, 0x60, 0x03, 0x3c, 0x06, 0x8a, 0x08, + 0x44, 0x0a, 0x48, 0x0b, 0x7c, 0x0b, 0xb8, 0x0b, 0x11, 0x0c, 0x57, 0x0b, 0x93, 0x0b, 0xf8, 0x0a, + 0x5f, 0x0b, 0x7d, 0x0d, 0xb1, 0x10, 0xf1, 0x13, 0xd4, 0x15, 0x3f, 0x16, 0x42, 0x14, 0x95, 0x12, + 0x8e, 0x10, 0x0d, 0x0e, 0xe5, 0x0b, 0xc4, 0x06, 0x8b, 0x00, 0x2c, 0xf9, 0x96, 0xf1, 0x85, 0xec, + 0x4e, 0xe8, 0x79, 0xe5, 0x72, 0xe4, 0x4a, 0xe5, 0x3b, 0xe5, 0xd9, 0xe6, 0x10, 0xe9, 0xe7, 0xeb, + 0x08, 0xef, 0x8e, 0xf2, 0xae, 0xf6, 0x90, 0xfa, 0x66, 0xfe, 0x20, 0x02, 0xe6, 0x04, 0x6f, 0x06, + 0xa1, 0x06, 0x61, 0x07, 0x96, 0x07, 0x9e, 0x08, 0x07, 0x08, 0xec, 0x06, 0xf0, 0x05, 0x5c, 0x04, + 0x6a, 0x05, 0xe8, 0x07, 0x30, 0x0a, 0x7a, 0x0b, 0xdf, 0x0c, 0x22, 0x0e, 0x93, 0x0f, 0xd7, 0x10, + 0x0a, 0x11, 0x43, 0x11, 0xa8, 0x0f, 0xd2, 0x0b, 0x13, 0x08, 0xf5, 0x03, 0x0d, 0x00, 0x75, 0xfb, + 0x14, 0xf9, 0xaa, 0xf6, 0x8f, 0xf4, 0xf9, 0xf3, 0x60, 0xf2, 0x88, 0xf0, 0xe3, 0xef, 0x1b, 0xf0, + 0x14, 0xf1, 0x1a, 0xf4, 0x68, 0xf8, 0x2a, 0xfc, 0x47, 0x01, 0x66, 0x04, 0x95, 0x06, 0x94, 0x09, + 0xe8, 0x0b, 0x52, 0x0f, 0x60, 0x11, 0x34, 0x12, 0x53, 0x12, 0x13, 0x11, 0x9d, 0x0f, 0x9d, 0x0f, + 0x62, 0x0e, 0x56, 0x0b, 0x2a, 0x08, 0xb2, 0x04, 0x85, 0x02, 0x51, 0x02, 0x8c, 0x02, 0x34, 0x04, + 0xc4, 0x04, 0x37, 0x04, 0xbd, 0x02, 0x2f, 0x01, 0x22, 0xff, 0xfb, 0xfd, 0x34, 0xfd, 0xfb, 0xfa, + 0x1c, 0xf8, 0xd8, 0xf3, 0x74, 0xf0, 0x70, 0xed, 0x32, 0xea, 0x62, 0xe8, 0xf6, 0xe6, 0x4d, 0xe6, + 0xed, 0xe6, 0x3b, 0xe8, 0xf4, 0xe9, 0x75, 0xec, 0x48, 0xef, 0x13, 0xf2, 0x5f, 0xf6, 0xcc, 0xfa, + 0xd5, 0xff, 0x16, 0x04, 0x83, 0x07, 0xb0, 0x0a, 0xd0, 0x0e, 0x9e, 0x13, 0xb8, 0x16, 0x59, 0x17, + 0x58, 0x17, 0x60, 0x15, 0x0e, 0x14, 0xbe, 0x13, 0x6d, 0x13, 0xeb, 0x11, 0x1b, 0x10, 0x37, 0x0d, + 0xa2, 0x09, 0xc8, 0x07, 0x6d, 0x05, 0xca, 0x04, 0xcf, 0x05, 0x93, 0x05, 0x24, 0x05, 0xf2, 0x03, + 0x1f, 0x02, 0x8d, 0x00, 0x92, 0xfe, 0x32, 0xfc, 0x6b, 0xf9, 0x39, 0xf6, 0x58, 0xf2, 0xb4, 0xef, + 0x3e, 0xec, 0x88, 0xe8, 0xe7, 0xe4, 0xe3, 0xe2, 0x65, 0xe2, 0x25, 0xe3, 0x2b, 0xe5, 0xda, 0xe8, + 0x93, 0xec, 0xfc, 0xef, 0x2b, 0xf5, 0x8c, 0xfb, 0x56, 0x01, 0x7e, 0x06, 0xce, 0x08, 0x50, 0x0a, + 0x05, 0x0b, 0xf5, 0x0a, 0xc9, 0x0b, 0x9b, 0x0c, 0x80, 0x0d, 0x57, 0x0c, 0x67, 0x0a, 0x08, 0x08, + 0xd3, 0x05, 0x39, 0x04, 0x3e, 0x04, 0x2e, 0x05, 0x0e, 0x06, 0x3d, 0x08, 0xd3, 0x09, 0x59, 0x0a, + 0x5b, 0x0b, 0x3a, 0x0b, 0x41, 0x0b, 0x1d, 0x0a, 0x00, 0x0a, 0x51, 0x0a, 0xd0, 0x08, 0xc8, 0x05, + 0x60, 0x01, 0xd5, 0xfc, 0x09, 0xf9, 0xcd, 0xf6, 0xf9, 0xf3, 0x15, 0xf1, 0x19, 0xef, 0x00, 0xec, + 0xb5, 0xea, 0x7b, 0xec, 0x88, 0xee, 0x36, 0xf2, 0x4f, 0xf5, 0x09, 0xf8, 0x18, 0xfa, 0x44, 0xfc, + 0xc1, 0xfe, 0xd5, 0x01, 0x25, 0x04, 0xb5, 0x05, 0x6b, 0x06, 0xec, 0x05, 0x30, 0x04, 0xbd, 0x02, + 0x85, 0x02, 0xde, 0x01, 0xf0, 0x00, 0xda, 0x00, 0x53, 0x00, 0x3b, 0x00, 0x14, 0x00, 0x89, 0x00, + 0xbd, 0x00, 0xb9, 0x01, 0xd6, 0x04, 0x6e, 0x07, 0xd3, 0x0a, 0xea, 0x0c, 0x47, 0x0e, 0xe7, 0x0e, + 0xfc, 0x0d, 0x83, 0x0b, 0xe0, 0x08, 0x97, 0x05, 0x06, 0x01, 0xff, 0xfb, 0xd8, 0xf7, 0x24, 0xf4, + 0x28, 0xf3, 0x59, 0xf2, 0xd7, 0xf1, 0x03, 0xf1, 0xeb, 0xf0, 0xdd, 0xf1, 0x88, 0xf3, 0x44, 0xf6, + 0x3e, 0xf9, 0x9a, 0xfb, 0x0e, 0xfc, 0x25, 0xfc, 0x3e, 0xfc, 0xf1, 0xfc, 0x0c, 0xff, 0x63, 0x01, + 0xb1, 0x03, 0x89, 0x04, 0xee, 0x04, 0x1d, 0x06, 0x52, 0x05, 0xc2, 0x04, 0x54, 0x03, 0xdb, 0x01, + 0x78, 0x01, 0x48, 0x01, 0x9e, 0x01, 0xa8, 0x02, 0x5f, 0x04, 0xbe, 0x06, 0xe8, 0x08, 0x3c, 0x0a, + 0x77, 0x0b, 0xc8, 0x0d, 0x9a, 0x0d, 0x07, 0x0c, 0x6a, 0x0a, 0xa5, 0x09, 0xa9, 0x07, 0xf4, 0x04, + 0x59, 0x02, 0xd3, 0xfd, 0x91, 0xf8, 0xdf, 0xf4, 0x19, 0xf3, 0x55, 0xf2, 0x5a, 0xf4, 0xb1, 0xf5, + 0xbc, 0xf6, 0x4a, 0xf8, 0xb0, 0xf8, 0x7b, 0xfa, 0xe3, 0xfc, 0x53, 0xff, 0x26, 0x02, 0xfe, 0x04, + 0x6f, 0x07, 0x68, 0x08, 0x07, 0x0a, 0x10, 0x0a, 0x4d, 0x0a, 0x93, 0x0a, 0x9e, 0x0a, 0x52, 0x0a, + 0x46, 0x09, 0x99, 0x08, 0xf9, 0x06, 0x78, 0x04, 0xd1, 0x03, 0x91, 0x02, 0x8b, 0x03, 0xdf, 0x04, + 0xb5, 0x05, 0x99, 0x06, 0x4c, 0x05, 0x3b, 0x04, 0xb8, 0x04, 0x66, 0x05, 0x3f, 0x05, 0x2a, 0x04, + 0xc7, 0x00, 0x47, 0xfc, 0x4f, 0xf9, 0x8e, 0xf7, 0x41, 0xf5, 0x61, 0xf4, 0xa9, 0xf3, 0x78, 0xf1, + 0x36, 0xef, 0xd6, 0xed, 0x44, 0xed, 0x2e, 0xee, 0xf9, 0xee, 0xcc, 0xf1, 0x9c, 0xf5, 0x2f, 0xf9, + 0x1a, 0xfd, 0xff, 0x00, 0x80, 0x04, 0xdc, 0x07, 0x7b, 0x0b, 0xb9, 0x0e, 0x85, 0x11, 0x43, 0x13, + 0xe1, 0x13, 0x9f, 0x13, 0x2f, 0x11, 0x71, 0x0e, 0xe8, 0x0b, 0xa2, 0x0a, 0x99, 0x09, 0xa5, 0x07, + 0xdb, 0x05, 0x4a, 0x06, 0x72, 0x07, 0xd3, 0x08, 0x1a, 0x0a, 0xf3, 0x08, 0x12, 0x07, 0xa3, 0x04, + 0x2f, 0x01, 0xbe, 0xfe, 0xc4, 0xfc, 0x51, 0xf9, 0x6c, 0xf6, 0xe1, 0xf2, 0x36, 0xee, 0x8e, 0xea, + 0xf9, 0xe6, 0x63, 0xe4, 0x9e, 0xe2, 0xcc, 0xe0, 0x9a, 0xe1, 0xb8, 0xe2, 0x27, 0xe5, 0x0f, 0xe8, + 0x9a, 0xea, 0xbe, 0xee, 0x0f, 0xf4, 0x34, 0xf8, 0x35, 0xfd, 0x24, 0x02, 0x52, 0x06, 0xd5, 0x0a, + 0x90, 0x0c, 0x61, 0x0c, 0xad, 0x0d, 0xe6, 0x0e, 0x1a, 0x0f, 0xfc, 0x0e, 0x98, 0x0c, 0xff, 0x0a, + 0x57, 0x0b, 0x8b, 0x0c, 0xb7, 0x0d, 0xa3, 0x0d, 0xdc, 0x0c, 0xb6, 0x0c, 0x9d, 0x0b, 0x2c, 0x0b, + 0xba, 0x0a, 0xed, 0x09, 0x2f, 0x09, 0xd2, 0x06, 0x34, 0x03, 0xfb, 0xfe, 0xd8, 0xfa, 0x2b, 0xf7, + 0x3e, 0xf4, 0xa9, 0xf0, 0xd1, 0xee, 0x36, 0xed, 0x17, 0xeb, 0xb3, 0xe9, 0x86, 0xe9, 0x66, 0xe9, + 0xf8, 0xe9, 0x75, 0xeb, 0x3d, 0xee, 0xf7, 0xf2, 0xfe, 0xf7, 0x20, 0xfb, 0x37, 0xff, 0x5b, 0x02, + 0x4a, 0x05, 0x37, 0x09, 0xe8, 0x0a, 0x6d, 0x0b, 0xf8, 0x0a, 0xa8, 0x09, 0x9b, 0x09, 0xf4, 0x09, + 0x29, 0x0a, 0x8d, 0x0a, 0xe2, 0x09, 0x40, 0x08, 0x41, 0x07, 0x56, 0x07, 0x7f, 0x07, 0xb8, 0x07, + 0x1c, 0x08, 0x54, 0x08, 0x7e, 0x06, 0xb3, 0x03, 0xeb, 0x01, 0x14, 0x00, 0xce, 0xfe, 0xbb, 0xff, + 0x5f, 0xff, 0x01, 0xff, 0xe0, 0xfe, 0x47, 0xfe, 0x35, 0xfd, 0xe1, 0xfc, 0x33, 0xfb, 0x7b, 0xfa, + 0x0c, 0xfb, 0xb8, 0xfb, 0x10, 0xfd, 0xdc, 0xfd, 0xa9, 0xfe, 0xe0, 0xff, 0x18, 0x02, 0x3a, 0x05, + 0x15, 0x08, 0x0e, 0x0a, 0xa0, 0x0a, 0x7c, 0x0a, 0x75, 0x0a, 0xd9, 0x0b, 0xfc, 0x0b, 0x58, 0x0c, + 0x31, 0x0c, 0xc1, 0x09, 0xa5, 0x07, 0xaa, 0x04, 0x37, 0x02, 0x38, 0x00, 0xfd, 0xfe, 0xd1, 0xfc, + 0x48, 0xfa, 0x7c, 0xf7, 0xac, 0xf4, 0x9b, 0xf3, 0x7a, 0xf3, 0x53, 0xf3, 0xd8, 0xf3, 0xac, 0xf4, + 0xf9, 0xf5, 0x77, 0xf7, 0xcb, 0xf8, 0xbd, 0xf8, 0xbf, 0xf7, 0x16, 0xf7, 0x53, 0xf7, 0x1f, 0xf8, + 0x15, 0xf9, 0xb3, 0xf9, 0xdb, 0xfa, 0x7f, 0xfb, 0x38, 0xfc, 0xae, 0xfe, 0xd7, 0x00, 0xc4, 0x02, + 0xfb, 0x03, 0x81, 0x05, 0x29, 0x07, 0x84, 0x09, 0xc0, 0x0b, 0x8d, 0x0d, 0xaa, 0x0e, 0xaa, 0x0f, + 0x13, 0x0f, 0x3c, 0x0e, 0xb2, 0x0d, 0x94, 0x0d, 0xd8, 0x0d, 0xa1, 0x0c, 0x21, 0x0a, 0x6e, 0x06, + 0x43, 0x02, 0xd7, 0xfe, 0xba, 0xfb, 0x16, 0xf9, 0xd9, 0xf6, 0x4d, 0xf5, 0x45, 0xf5, 0x8f, 0xf5, + 0x2e, 0xf6, 0xf8, 0xf6, 0xab, 0xf6, 0x99, 0xf5, 0x75, 0xf6, 0x41, 0xf7, 0xff, 0xf6, 0x4a, 0xf7, + 0xb5, 0xf6, 0xf0, 0xf5, 0xb4, 0xf6, 0x63, 0xf7, 0x49, 0xf8, 0xf2, 0xf9, 0x6c, 0xfb, 0xa9, 0xfb, + 0x23, 0xfd, 0x34, 0xfe, 0x5b, 0x00, 0x61, 0x03, 0x24, 0x05, 0x30, 0x06, 0x54, 0x06, 0xfa, 0x05, + 0x49, 0x06, 0x5d, 0x07, 0x12, 0x09, 0xd5, 0x0a, 0xdf, 0x0a, 0x82, 0x0a, 0x43, 0x09, 0xd4, 0x07, + 0x01, 0x06, 0xd8, 0x03, 0xb5, 0x01, 0x88, 0xff, 0xa0, 0xfd, 0x82, 0xfc, 0xc5, 0xfb, 0xe3, 0xfa, + 0x13, 0xfa, 0x53, 0xfa, 0x50, 0xfb, 0x89, 0xfd, 0x96, 0xff, 0xa9, 0x00, 0xdf, 0x00, 0xa6, 0x00, + 0x04, 0x00, 0x20, 0x00, 0xb4, 0xff, 0x27, 0xff, 0x70, 0xfe, 0xd7, 0xfd, 0x9e, 0xfd, 0xbd, 0xfd, + 0x91, 0xfe, 0x42, 0x00, 0x31, 0x02, 0xf5, 0x01, 0x1e, 0x01, 0x61, 0xff, 0xcc, 0xfe, 0x5e, 0xff, + 0xd0, 0x00, 0xf3, 0x02, 0x87, 0x03, 0xf6, 0x02, 0xf4, 0x02, 0x4e, 0x01, 0x59, 0x00, 0xc9, 0xff, + 0xf0, 0xfe, 0x15, 0xfe, 0xca, 0xfd, 0x07, 0xfd, 0x02, 0xfc, 0xa9, 0xfb, 0xd7, 0xf9, 0x28, 0xf9, + 0x10, 0xfa, 0xb5, 0xf9, 0x44, 0xfb, 0x48, 0xfc, 0x6a, 0xfe, 0xb5, 0xff, 0x80, 0xff, 0xfb, 0x00, + 0xec, 0x02, 0x5e, 0x04, 0x2e, 0x05, 0x95, 0x05, 0xa7, 0x04, 0xbd, 0x04, 0xed, 0x04, 0xe2, 0x05, + 0xd1, 0x06, 0xc6, 0x06, 0x89, 0x05, 0x9e, 0x03, 0x0b, 0x01, 0x78, 0x00, 0xd2, 0xff, 0x7b, 0xff, + 0xf3, 0xfe, 0xa1, 0xfd, 0x3b, 0xfc, 0x25, 0xfb, 0x41, 0xfa, 0xe3, 0xf8, 0xb3, 0xf8, 0xb2, 0xf8, + 0x73, 0xf8, 0x12, 0xf9, 0x3b, 0xf9, 0xf8, 0xf8, 0x40, 0xf8, 0xff, 0xf7, 0xa2, 0xf8, 0xf6, 0xf8, + 0x0b, 0xfa, 0xb9, 0xfb, 0xd2, 0xfc, 0xbc, 0xfd, 0x93, 0xfd, 0x49, 0xfd, 0xf0, 0xfe, 0x1d, 0x00, + 0x90, 0x01, 0xcf, 0x02, 0xb2, 0x03, 0xac, 0x03, 0x3c, 0x05, 0x8f, 0x07, 0x8e, 0x09, 0x12, 0x0c, + 0x9b, 0x0c, 0x14, 0x0c, 0x42, 0x0c, 0x7b, 0x0b, 0x96, 0x0b, 0x98, 0x0b, 0x29, 0x0b, 0x94, 0x0a, + 0x43, 0x09, 0x1a, 0x07, 0xe0, 0x04, 0xbe, 0x02, 0x73, 0x01, 0x0c, 0x01, 0xa1, 0x00, 0x34, 0x00, + 0xc5, 0xff, 0xce, 0xff, 0x2b, 0xff, 0x9f, 0xfe, 0x90, 0xfe, 0x10, 0xfe, 0x29, 0xfe, 0x4b, 0xff, + 0x18, 0xff, 0x94, 0xfe, 0x10, 0xfe, 0x36, 0xfd, 0x88, 0xfc, 0x3c, 0xfd, 0x19, 0xfd, 0xbc, 0xfc, + 0x4c, 0xfb, 0x84, 0xf9, 0xa3, 0xf8, 0x40, 0xfa, 0xab, 0xfc, 0xe8, 0xfe, 0xc3, 0xff, 0x60, 0x00, + 0x65, 0x01, 0x00, 0x02, 0x5c, 0x03, 0x94, 0x04, 0x24, 0x06, 0x3f, 0x06, 0xee, 0x06, 0x45, 0x05, + 0x59, 0x04, 0x4c, 0x03, 0x9e, 0x02, 0xd8, 0x02, 0x1c, 0x02, 0x95, 0x02, 0x2c, 0x03, 0xbb, 0x02, + 0x56, 0x02, 0xf8, 0x03, 0x1d, 0x03, 0x5a, 0x04, 0x4d, 0x04, 0xb4, 0x03, 0xe8, 0x05, 0x87, 0x07, + 0xa6, 0x07, 0xe1, 0x06, 0x6a, 0x08, 0x52, 0x09, 0x49, 0x08, 0xb5, 0x06, 0x32, 0x05, 0x7f, 0x03, + 0xbb, 0x00, 0x04, 0xff, 0x3f, 0x00, 0xb3, 0x00, 0xcd, 0xfd, 0xcc, 0xfb, 0x82, 0xfb, 0x93, 0xf9, + 0xa7, 0xf7, 0x65, 0xf9, 0x4e, 0xfa, 0x50, 0xf9, 0xb9, 0xf9, 0x47, 0xf9, 0x26, 0xf8, 0x06, 0xf5, + 0x15, 0xf4, 0x9d, 0xf4, 0xb6, 0xf3, 0x62, 0xf0, 0x13, 0xf0, 0xc7, 0xf4, 0x40, 0xf3, 0xc0, 0xf1, + 0x34, 0xf5, 0x8b, 0xf6, 0xa9, 0xf4, 0x89, 0xf6, 0x65, 0xfc, 0xf8, 0xfe, 0xb4, 0xfd, 0x4f, 0xff, + 0xb4, 0x01, 0x1d, 0x01, 0xe3, 0x00, 0x97, 0x05, 0x7b, 0x08, 0x87, 0x06, 0xcd, 0x05, 0xf2, 0x09, + 0x40, 0x0b, 0x11, 0x08, 0xd6, 0x07, 0xb7, 0x0b, 0xee, 0x08, 0x40, 0x03, 0x36, 0x04, 0xb4, 0x04, + 0x20, 0x00, 0x81, 0xfd, 0x96, 0x00, 0x86, 0xff, 0xfb, 0xfc, 0xad, 0xfb, 0xbf, 0xfe, 0xb0, 0xfd, + 0x07, 0xf9, 0x10, 0xf9, 0x9c, 0xfd, 0x6c, 0xf9, 0x97, 0xf5, 0xc1, 0xf9, 0x5d, 0xfb, 0xfd, 0xf4, + 0xc0, 0xf4, 0xe4, 0xfa, 0x1b, 0xfb, 0x9f, 0xf8, 0x8a, 0xfa, 0xf7, 0xfd, 0x4d, 0xfb, 0x67, 0xf8, + 0x5e, 0xfc, 0xa8, 0xfd, 0x77, 0xfa, 0xfc, 0xfc, 0x65, 0x01, 0x9a, 0x01, 0x61, 0x01, 0x89, 0x08, + 0x4f, 0x0d, 0xd2, 0x0a, 0x53, 0x09, 0x32, 0x0c, 0x1e, 0x0c, 0x22, 0x06, 0x87, 0x04, 0x15, 0x08, + 0x70, 0x06, 0x78, 0x02, 0xf9, 0x02, 0x9e, 0x04, 0x44, 0x02, 0xc7, 0x00, 0x20, 0x03, 0x48, 0x02, + 0x19, 0x00, 0x72, 0x02, 0xf3, 0x07, 0x4e, 0x06, 0x40, 0x03, 0x39, 0x05, 0xec, 0x07, 0xe2, 0x05, + 0xa7, 0x05, 0xa2, 0x0a, 0x5d, 0x0a, 0xe8, 0x04, 0x55, 0x03, 0xa3, 0x07, 0xcc, 0x07, 0xe2, 0x03, + 0xb1, 0x04, 0x41, 0x06, 0x0b, 0xff, 0x4d, 0xfc, 0xc5, 0xff, 0x0d, 0x01, 0x5d, 0x00, 0x07, 0x02, + 0xc7, 0x04, 0x3b, 0x01, 0x24, 0xfd, 0x0b, 0xfd, 0x58, 0xff, 0x3a, 0xfc, 0x30, 0xfa, 0xc6, 0xfc, + 0x5d, 0xfb, 0xc1, 0xf4, 0x23, 0xf4, 0xbe, 0xf6, 0xb3, 0xf1, 0x7c, 0xee, 0x29, 0xf1, 0xc9, 0xf2, + 0xab, 0xef, 0x63, 0xef, 0x54, 0xf2, 0x14, 0xf5, 0x1b, 0xf4, 0x13, 0xf4, 0x1a, 0xfb, 0xb7, 0xfd, + 0xbd, 0xfb, 0x8f, 0xfe, 0x09, 0x03, 0x9e, 0x01, 0xfb, 0x00, 0x50, 0x05, 0x57, 0x07, 0x41, 0x03, + 0xcd, 0x05, 0xd9, 0x06, 0xb7, 0x02, 0x47, 0x04, 0x6e, 0x07, 0x6e, 0x09, 0x0d, 0x08, 0x39, 0x04, + 0x0d, 0x05, 0xb0, 0x05, 0x59, 0x07, 0x10, 0x06, 0x97, 0x06, 0x18, 0x05, 0x1c, 0x02, 0xda, 0x00, + 0x9b, 0x01, 0xf7, 0xfe, 0x84, 0xfb, 0x92, 0xfb, 0xa1, 0xf8, 0xb9, 0xf7, 0xc1, 0xf8, 0x18, 0xfb, + 0xf1, 0xf8, 0x12, 0xf7, 0x4a, 0xf6, 0xcd, 0xf8, 0x7a, 0xf7, 0xf5, 0xf9, 0x6a, 0xfb, 0xfe, 0xfb, + 0x7b, 0xfd, 0xf3, 0x01, 0x61, 0x04, 0xe5, 0x04, 0xa4, 0x09, 0x52, 0x09, 0x8e, 0x07, 0x95, 0x07, + 0xa9, 0x08, 0x37, 0x07, 0xb0, 0x0b, 0xad, 0x08, 0x87, 0x09, 0xc5, 0x0b, 0xaf, 0x08, 0x6b, 0x07, + 0x84, 0x08, 0x13, 0x0a, 0x42, 0x04, 0x0b, 0x05, 0xc1, 0x06, 0xab, 0x05, 0xbf, 0x03, 0x02, 0x06, + 0xa0, 0x04, 0xf2, 0x03, 0xf4, 0x01, 0x8c, 0x01, 0x03, 0xff, 0x89, 0xfd, 0xdf, 0xfd, 0x2a, 0xfe, + 0xf5, 0xfa, 0xdd, 0xf7, 0x5f, 0xf8, 0x8e, 0xf8, 0xfa, 0xf7, 0x04, 0xf6, 0xe6, 0xf6, 0xa7, 0xf4, + 0xa3, 0xf5, 0x91, 0xf6, 0xa2, 0xf7, 0xce, 0xf8, 0xa0, 0xf7, 0xba, 0xf7, 0x2e, 0xfa, 0x55, 0xfb, + 0xbb, 0xfb, 0x06, 0xfe, 0x34, 0xfe, 0x95, 0xfe, 0x3a, 0xfc, 0x6f, 0xfe, 0x8b, 0xff, 0xe5, 0xfb, + 0x0d, 0xfb, 0x81, 0xfc, 0x04, 0xfc, 0xcb, 0xfb, 0x88, 0xfb, 0x36, 0xf9, 0xdd, 0xf7, 0x44, 0xf9, + 0x87, 0xfa, 0xbf, 0xf9, 0x82, 0xfb, 0x8a, 0xfd, 0xa1, 0xfd, 0x6b, 0xff, 0xd8, 0xff, 0x32, 0xfe, + 0x7d, 0x01, 0xd8, 0x01, 0x8a, 0xff, 0xfb, 0x02, 0xa5, 0x04, 0xd6, 0x00, 0x78, 0xfe, 0x72, 0x01, + 0x2d, 0x01, 0x8e, 0xff, 0xcc, 0x00, 0xa7, 0xfe, 0x49, 0xfa, 0x05, 0xff, 0x04, 0x04, 0xe7, 0x03, + 0x7c, 0x07, 0x07, 0x0a, 0xea, 0x05, 0x73, 0x05, 0xb2, 0x04, 0xf4, 0x03, 0xfc, 0x04, 0x1f, 0x05, + 0x4d, 0xff, 0xa6, 0xfe, 0x37, 0xfd, 0xb8, 0xf9, 0xc6, 0xf7, 0xea, 0xf8, 0x2b, 0xf8, 0xaa, 0xf5, + 0x96, 0xf6, 0xac, 0xf7, 0xcc, 0xf7, 0x64, 0xf9, 0xbc, 0xfd, 0xde, 0xfa, 0x0a, 0xfc, 0xd9, 0x01, + 0x88, 0x03, 0x08, 0x04, 0x52, 0x06, 0xfc, 0x07, 0x26, 0x09, 0xe9, 0x0a, 0x84, 0x0b, 0xbf, 0x0a, + 0x83, 0x08, 0xa0, 0x08, 0x18, 0x07, 0xa4, 0x05, 0x9d, 0x07, 0x46, 0x0c, 0x8c, 0x0b, 0xde, 0x0d, + 0xf7, 0x0c, 0x52, 0x0d, 0x25, 0x0d, 0xa1, 0x0e, 0xed, 0x0e, 0x9d, 0x0d, 0x73, 0x0e, 0x92, 0x0b, + 0x86, 0x06, 0x7a, 0x05, 0xa9, 0x05, 0x97, 0x01, 0x1b, 0xff, 0xe2, 0x01, 0xc1, 0xfc, 0xd9, 0xf9, + 0x0e, 0xfd, 0x85, 0xfb, 0x69, 0xf8, 0x8f, 0xf8, 0x41, 0xf5, 0xa5, 0xf5, 0xca, 0xf8, 0xdd, 0xfb, + 0x62, 0xfa, 0xeb, 0xfe, 0xc0, 0xfe, 0x24, 0xfe, 0xd6, 0x01, 0xb2, 0x02, 0x2b, 0x01, 0x84, 0xfe, + 0x2f, 0xfe, 0xb7, 0xfa, 0x17, 0xfd, 0x2f, 0xff, 0x49, 0x00, 0xd3, 0x00, 0x6a, 0x01, 0x4b, 0x01, + 0x4d, 0x01, 0x1a, 0x00, 0x72, 0x00, 0x83, 0x03, 0x78, 0x05, 0x4c, 0x04, 0x42, 0x06, 0xfe, 0x07, + 0x96, 0x06, 0xb3, 0x05, 0xd1, 0x04, 0x16, 0x05, 0x84, 0x04, 0x78, 0x06, 0xc5, 0x05, 0x56, 0x06, + 0x3e, 0x06, 0x4f, 0x04, 0xb8, 0x02, 0xcf, 0x02, 0x1a, 0x04, 0x37, 0x04, 0x12, 0x03, 0x78, 0x03, + 0x50, 0x02, 0x98, 0x03, 0x9a, 0x04, 0x55, 0x03, 0xa7, 0x03, 0x53, 0x05, 0x27, 0x04, 0x18, 0x02, + 0x91, 0x02, 0xa3, 0x01, 0xd3, 0x01, 0xbc, 0x01, 0x0a, 0x00, 0x44, 0xff, 0x52, 0xfb, 0xf7, 0xfa, + 0x17, 0xfb, 0x19, 0xf8, 0x6c, 0xf9, 0xbd, 0xf8, 0x21, 0xf6, 0xe3, 0xf3, 0x4f, 0xf4, 0x31, 0xf6, + 0xcf, 0xf4, 0xbe, 0xf5, 0x0d, 0xf6, 0x60, 0xf8, 0xbc, 0xf9, 0xd2, 0xfb, 0x46, 0xfd, 0xa4, 0xfb, + 0x7a, 0xfa, 0xff, 0xf9, 0xcb, 0xfa, 0x57, 0xfa, 0x04, 0xfe, 0x4d, 0xf9, 0x88, 0xfa, 0xad, 0xfd, + 0x9f, 0xfe, 0xc2, 0x03, 0xd8, 0x02, 0xd9, 0x01, 0xc7, 0x03, 0xbc, 0x04, 0x5c, 0x05, 0x06, 0x05, + 0xb3, 0x07, 0xe1, 0x08, 0x5e, 0x0c, 0xca, 0x09, 0x9e, 0x05, 0x09, 0x08, 0xb1, 0x05, 0xbc, 0x05, + 0xf2, 0x04, 0xa1, 0x03, 0x8a, 0x01, 0xe3, 0xff, 0x77, 0xfb, 0x4e, 0xfa, 0xbe, 0xf6, 0xba, 0xf6, + 0xcc, 0xf6, 0x53, 0xf4, 0x09, 0xf3, 0x69, 0xf6, 0x3b, 0xf4, 0xda, 0xf5, 0xf8, 0xf3, 0x89, 0xf2, + 0x12, 0xf2, 0x65, 0xf0, 0x33, 0xf4, 0x5b, 0xf4, 0xec, 0xf0, 0x95, 0xf3, 0xc3, 0xf4, 0x9f, 0xf5, + 0x68, 0xf4, 0x0f, 0xf6, 0x6d, 0xf4, 0xf9, 0xf5, 0xb0, 0xf5, 0xfb, 0xf4, 0x2d, 0xfa, 0xd5, 0xfc, + 0xf9, 0x00, 0x10, 0x04, 0x33, 0x01, 0xda, 0x02, 0xba, 0x04, 0x6f, 0x07, 0xea, 0x06, 0xb5, 0x07, + 0xfa, 0x06, 0x3a, 0x05, 0x33, 0x02, 0x64, 0x00, 0xb0, 0x04, 0xad, 0x00, 0x7b, 0xfe, 0x45, 0x00, + 0x03, 0x00, 0x9b, 0xff, 0x05, 0xfe, 0x10, 0xfe, 0x35, 0x01, 0x7f, 0xff, 0x07, 0x02, 0xf1, 0x04, + 0x4c, 0x07, 0xda, 0x08, 0x0c, 0x0b, 0xca, 0x08, 0x08, 0x0b, 0x18, 0x0d, 0x42, 0x0d, 0x01, 0x0d, + 0x18, 0x0b, 0x69, 0x0d, 0x08, 0x0c, 0x3d, 0x09, 0x6c, 0x09, 0xb8, 0x09, 0xdc, 0x08, 0x73, 0x07, + 0xd6, 0x05, 0xae, 0x00, 0xcd, 0xff, 0x73, 0x00, 0x0b, 0x00, 0x45, 0x00, 0xbe, 0xfc, 0x81, 0xfd, + 0x41, 0xfe, 0x25, 0xfc, 0xd3, 0xf9, 0xd4, 0xf8, 0xc9, 0xf8, 0xbb, 0xf5, 0x91, 0xf6, 0x23, 0xf7, + 0xd0, 0xf6, 0x08, 0xf3, 0x80, 0xef, 0x39, 0xf0, 0x38, 0xed, 0x00, 0xef, 0xf6, 0xf1, 0xb0, 0xf3, + 0x9c, 0xf4, 0xd8, 0xf5, 0x08, 0xfb, 0xfd, 0xfc, 0xa0, 0xfc, 0xed, 0xfd, 0xff, 0xfe, 0x3b, 0xfe, + 0xc7, 0xfe, 0x89, 0x01, 0x39, 0x02, 0x5f, 0x02, 0xdd, 0x00, 0xf5, 0x01, 0x0a, 0x03, 0xdd, 0x01, + 0x43, 0x02, 0x1a, 0xff, 0xb3, 0xff, 0x2b, 0x01, 0xd1, 0xfc, 0x0b, 0xfc, 0x84, 0xfa, 0x9e, 0xf9, + 0x16, 0xf9, 0xb5, 0xf9, 0x6b, 0xfa, 0x4a, 0xfb, 0x38, 0xfb, 0x43, 0xfb, 0x88, 0xfc, 0x90, 0xfc, + 0x3d, 0xfe, 0xa1, 0xfe, 0xc6, 0xfe, 0xcf, 0x00, 0x10, 0x04, 0x0b, 0x06, 0x95, 0x06, 0xa3, 0x0b, + 0x7b, 0x0f, 0x66, 0x13, 0x01, 0x16, 0x0a, 0x18, 0x74, 0x1b, 0x11, 0x17, 0x2b, 0x17, 0x40, 0x1a, + 0xde, 0x18, 0x4b, 0x1a, 0xea, 0x1a, 0xde, 0x1d, 0x9d, 0x1c, 0xc0, 0x18, 0x9d, 0x15, 0x87, 0x15, + 0x65, 0x16, 0x98, 0x13, 0x42, 0x11, 0x95, 0x0e, 0x71, 0x0d, 0xe3, 0x0b, 0x47, 0x05, 0x7c, 0x01, + 0x33, 0x04, 0x07, 0x03, 0xa5, 0x03, 0x7a, 0x05, 0xe6, 0x07, 0x5e, 0x0b, 0x12, 0x09, 0xcb, 0x07, + 0xcd, 0x07, 0x5c, 0x04, 0xa6, 0x06, 0x05, 0x07, 0x40, 0x05, 0x9e, 0x05, 0x90, 0x02, 0xec, 0x04, + 0x68, 0x04, 0x7f, 0x01, 0x8c, 0x00, 0x2d, 0x00, 0x4a, 0x00, 0x44, 0xfe, 0xa6, 0xfd, 0xde, 0xfb, + 0x74, 0xfc, 0xee, 0xfb, 0x3d, 0xf9, 0x7d, 0xfa, 0x02, 0xf7, 0x40, 0xf5, 0x44, 0xf7, 0x84, 0xf5, + 0xe9, 0xf2, 0x11, 0xf5, 0x24, 0xf3, 0x74, 0xf1, 0x60, 0xf3, 0xec, 0xef, 0x6d, 0xef, 0x7a, 0xee, + 0xbc, 0xed, 0x19, 0xf0, 0x2c, 0xee, 0xf7, 0xf2, 0x77, 0xf3, 0xc1, 0xf1, 0xfb, 0xf2, 0xf2, 0xf6, + 0x7a, 0xf8, 0xf5, 0xf8, 0x06, 0xfa, 0xc8, 0xf8, 0x17, 0xf9, 0x3a, 0xfb, 0xe0, 0xfc, 0x71, 0xfb, + 0xc5, 0xf9, 0xf0, 0xf8, 0x81, 0xf5, 0x83, 0xef, 0x04, 0xef, 0x9c, 0xed, 0xe4, 0xeb, 0x41, 0xed, + 0x40, 0xec, 0x47, 0xea, 0xce, 0xeb, 0x57, 0xeb, 0xdc, 0xec, 0xee, 0xf0, 0x91, 0xf2, 0x4b, 0xf9, + 0xcb, 0xf9, 0xb1, 0xf8, 0x1e, 0xfa, 0x94, 0xf6, 0x48, 0xf7, 0xd4, 0xf6, 0x80, 0xf5, 0xa0, 0xf5, + 0xbc, 0xf5, 0xd3, 0xf5, 0x5e, 0xf5, 0xa3, 0xf7, 0xa6, 0xf8, 0x2e, 0xf9, 0x38, 0xfd, 0x1b, 0x00, + 0xb1, 0xff, 0x4b, 0xfd, 0x3a, 0x01, 0xfe, 0x01, 0x98, 0xff, 0x52, 0xff, 0x0b, 0x02, 0x4f, 0x02, + 0x71, 0x00, 0xb3, 0x02, 0xc6, 0x02, 0xb7, 0x05, 0xec, 0x05, 0x37, 0x07, 0xc8, 0x08, 0x9b, 0x09, + 0xc7, 0x0c, 0x95, 0x07, 0x94, 0x06, 0xf9, 0x07, 0x02, 0x08, 0x9d, 0x05, 0xd6, 0x04, 0x09, 0x07, + 0xdf, 0x06, 0xa8, 0x02, 0x53, 0x01, 0xd0, 0x00, 0x43, 0xfe, 0x0d, 0xfd, 0xff, 0xfc, 0xc9, 0xfb, + 0xe9, 0xfa, 0xe2, 0xf9, 0xe3, 0xf6, 0xe0, 0xf3, 0x9b, 0xf3, 0x33, 0xf3, 0xfc, 0xf1, 0xc6, 0xf3, + 0x3e, 0xf1, 0x3a, 0xf3, 0xb4, 0xf7, 0xd4, 0xf8, 0x4d, 0xfd, 0x48, 0x01, 0xa9, 0x06, 0x0d, 0x0a, + 0xd0, 0x0b, 0x51, 0x11, 0xd7, 0x12, 0x49, 0x16, 0x78, 0x1b, 0xd8, 0x1c, 0xaf, 0x1b, 0x0f, 0x1c, + 0xd6, 0x1f, 0x81, 0x1a, 0x9a, 0x16, 0x7f, 0x19, 0xfc, 0x1b, 0x47, 0x19, 0x1e, 0x19, 0x90, 0x1d, + 0x2c, 0x1c, 0x8f, 0x1a, 0xfe, 0x18, 0x1a, 0x18, 0x40, 0x14, 0x7c, 0x12, 0x1d, 0x12, 0x45, 0x0f, + 0xd6, 0x10, 0x8a, 0x0d, 0x54, 0x0e, 0x1f, 0x10, 0x28, 0x0e, 0xbd, 0x10, 0x16, 0x0d, 0xf2, 0x0d, + 0xbd, 0x12, 0x4d, 0x12, 0x89, 0x0e, 0x55, 0x0b, 0xdb, 0x07, 0x1b, 0x04, 0x43, 0x01, 0x00, 0xff, + 0x34, 0x02, 0xfe, 0x03, 0x18, 0x00, 0x5b, 0xfe, 0xb0, 0xfe, 0xc0, 0xfe, 0x4a, 0xfc, 0xc4, 0xf7, + 0xc5, 0xf5, 0xa2, 0xf2, 0xfb, 0xec, 0x5c, 0xea, 0xc9, 0xe9, 0x56, 0xe5, 0xfc, 0xe2, 0x7f, 0xe2, + 0x9a, 0xe0, 0x51, 0xe1, 0xe5, 0xe0, 0x12, 0xe3, 0xc5, 0xe3, 0x23, 0xe5, 0xf0, 0xec, 0x48, 0xed, + 0xa7, 0xf1, 0xa6, 0xf5, 0x3e, 0xf8, 0x48, 0xfa, 0xcc, 0xf9, 0xc5, 0xfb, 0x77, 0xfc, 0x68, 0xfd, + 0xc4, 0xfe, 0x15, 0x01, 0x41, 0x00, 0xb5, 0xfd, 0xe9, 0xfc, 0x0a, 0xfe, 0x73, 0x01, 0x84, 0x03, + 0xe1, 0x05, 0x8f, 0x06, 0xe0, 0x05, 0x89, 0x04, 0xae, 0x01, 0x62, 0x03, 0x66, 0x01, 0x03, 0x00, + 0xd5, 0x01, 0x5a, 0x03, 0x29, 0x04, 0xdf, 0x00, 0x7a, 0x03, 0xbd, 0x04, 0x53, 0x01, 0xa9, 0xfe, + 0x2a, 0x00, 0x8a, 0x03, 0x8f, 0x03, 0x08, 0x05, 0x8a, 0x04, 0x55, 0x04, 0xdd, 0x04, 0xa0, 0x04, + 0x9e, 0x05, 0x8a, 0x07, 0xd8, 0x05, 0x94, 0x04, 0x3b, 0x03, 0xb1, 0x04, 0x10, 0x06, 0xd9, 0x04, + 0x10, 0x03, 0x15, 0x00, 0x8a, 0xfd, 0x25, 0xfc, 0xfd, 0xf8, 0x9c, 0xf5, 0x9c, 0xf7, 0xaf, 0xf4, + 0xb2, 0xf3, 0xba, 0xf1, 0x73, 0xef, 0x54, 0xf0, 0x34, 0xec, 0x20, 0xee, 0x86, 0xf3, 0x88, 0xf5, + 0xfc, 0xf6, 0x4c, 0xf8, 0x81, 0xf8, 0xf4, 0xf7, 0x39, 0xf8, 0x8b, 0xf6, 0x06, 0xf6, 0x04, 0xf5, + 0xcb, 0xf2, 0x76, 0xf4, 0x78, 0xf2, 0xf2, 0xee, 0x48, 0xea, 0xd3, 0xe9, 0x30, 0xeb, 0x13, 0xee, + 0xad, 0xee, 0x88, 0xec, 0x17, 0xf0, 0xc8, 0xf0, 0x50, 0xf3, 0x4a, 0xf5, 0x53, 0xf8, 0x3a, 0xfa, + 0x71, 0xfb, 0xe7, 0xff, 0xf1, 0xfe, 0xf4, 0xfe, 0xf2, 0x03, 0x04, 0x07, 0x6a, 0x06, 0x5d, 0x08, + 0x29, 0x0c, 0x93, 0x0e, 0xf2, 0x0f, 0x4e, 0x12, 0xee, 0x14, 0x91, 0x17, 0xc9, 0x16, 0x3e, 0x17, + 0x02, 0x16, 0xfe, 0x15, 0x7c, 0x15, 0x5e, 0x14, 0xf6, 0x10, 0xa2, 0x0e, 0x96, 0x10, 0xa5, 0x10, + 0x51, 0x11, 0xf1, 0x0e, 0xcd, 0x0c, 0xfd, 0x0c, 0xa9, 0x08, 0xb8, 0x05, 0x35, 0x03, 0x77, 0x02, + 0x7f, 0x01, 0xb6, 0xff, 0x79, 0x00, 0x3c, 0xff, 0xbe, 0xfe, 0x99, 0xff, 0xfb, 0x01, 0x27, 0x06, + 0xc2, 0x06, 0x7f, 0x0a, 0xc7, 0x0c, 0x84, 0x0f, 0x75, 0x11, 0x5b, 0x11, 0xf6, 0x10, 0x12, 0x0f, + 0x19, 0x0e, 0xd8, 0x0c, 0x08, 0x0b, 0xb8, 0x05, 0x0d, 0x03, 0x9a, 0xfe, 0x06, 0xfb, 0x7e, 0xfa, + 0x89, 0xf7, 0x5c, 0xf7, 0x67, 0xf4, 0xed, 0xf1, 0xb0, 0xef, 0xc1, 0xed, 0x80, 0xed, 0xa0, 0xe9, + 0x5e, 0xe7, 0x5d, 0xeb, 0x42, 0xeb, 0x4a, 0xea, 0xe3, 0xec, 0x67, 0xee, 0x49, 0xef, 0xf8, 0xf3, + 0xb5, 0xf7, 0x35, 0xfb, 0x90, 0xff, 0x86, 0x00, 0xcb, 0x02, 0xe9, 0x03, 0x8d, 0x04, 0xfb, 0x06, + 0xdf, 0x06, 0x8c, 0x08, 0x07, 0x0d, 0x8e, 0x0e, 0xc8, 0x0d, 0x30, 0x0e, 0xbd, 0x0e, 0x73, 0x0f, + 0x69, 0x10, 0xb6, 0x0d, 0x63, 0x0e, 0xba, 0x0b, 0x9d, 0x07, 0x63, 0x02, 0x28, 0xfe, 0xbd, 0xfe, + 0x8a, 0xf9, 0x38, 0xf9, 0xc5, 0xf9, 0x3c, 0xf5, 0x90, 0xf3, 0xc4, 0xf4, 0x28, 0xf6, 0x0b, 0xf7, + 0xbd, 0xfb, 0x06, 0xfe, 0x00, 0xfe, 0x38, 0xfe, 0x77, 0x00, 0xa4, 0x03, 0x54, 0x03, 0x9f, 0x03, + 0x27, 0x03, 0x80, 0x01, 0x33, 0xfd, 0x7c, 0xfa, 0x17, 0xfb, 0x5e, 0xf4, 0x13, 0xf5, 0x6e, 0xf8, + 0xe3, 0xfa, 0x12, 0xfb, 0xa7, 0xfb, 0x6a, 0xfd, 0x07, 0xfd, 0x33, 0xfb, 0xb0, 0xf8, 0x41, 0xf9, + 0x9b, 0xf7, 0x46, 0xf8, 0x25, 0xfa, 0xe7, 0xf7, 0x0e, 0xf7, 0xb4, 0xf7, 0x23, 0xf8, 0xfe, 0xfa, + 0xa3, 0xfc, 0x80, 0xfe, 0xc7, 0x00, 0xef, 0x00, 0x8f, 0x02, 0xfc, 0x02, 0x80, 0x05, 0xa4, 0x08, + 0x21, 0x09, 0xca, 0x07, 0x42, 0x0b, 0x74, 0x0b, 0xab, 0x0c, 0x5c, 0x0e, 0x24, 0x0c, 0xd7, 0x0d, + 0x66, 0x0e, 0x2b, 0x0f, 0xe0, 0x0c, 0x06, 0x09, 0x3a, 0x08, 0xf9, 0x03, 0x2d, 0x00, 0x4b, 0xfe, + 0x17, 0xfc, 0x1d, 0xfb, 0x8a, 0xfa, 0xb5, 0xf7, 0xa4, 0xf3, 0x10, 0xf5, 0xd5, 0xf4, 0x96, 0xf7, + 0x10, 0xff, 0x6a, 0x01, 0x79, 0x02, 0x3f, 0x01, 0x21, 0x03, 0x81, 0x03, 0x38, 0x03, 0xab, 0x02, + 0xf6, 0x06, 0x7e, 0x06, 0x16, 0x02, 0x31, 0x05, 0xb9, 0x04, 0x99, 0x03, 0x39, 0x03, 0xc7, 0x02, + 0x76, 0x02, 0xc2, 0x01, 0xf5, 0x02, 0xb3, 0x02, 0x5e, 0x02, 0xc1, 0x02, 0x96, 0xfe, 0xa3, 0xfc, + 0xcb, 0xfb, 0x64, 0xfb, 0x42, 0xfe, 0x60, 0x00, 0x27, 0x00, 0x6a, 0xff, 0x3e, 0x01, 0xc7, 0x00, + 0x45, 0x01, 0x4d, 0x02, 0x4b, 0x02, 0x09, 0x02, 0xf3, 0x00, 0x6e, 0x01, 0x68, 0x01, 0xc8, 0x00, + 0x69, 0xfe, 0x08, 0xfc, 0x75, 0xfb, 0xd3, 0xf8, 0xc1, 0xf9, 0x29, 0xf8, 0x97, 0xf5, 0xdb, 0xf6, + 0x42, 0xf6, 0x1e, 0xf7, 0xbc, 0xf5, 0xc4, 0xf5, 0x52, 0xf4, 0xc8, 0xf2, 0xf3, 0xef, 0x5f, 0xeb, + 0x98, 0xec, 0x15, 0xec, 0x8d, 0xee, 0xad, 0xef, 0x24, 0xf1, 0x8d, 0xf1, 0xa8, 0xf2, 0xd5, 0xf4, + 0x58, 0xf9, 0x19, 0x01, 0xce, 0x03, 0x13, 0x08, 0x3a, 0x09, 0xac, 0x0d, 0xfd, 0x0f, 0x37, 0x11, + 0x56, 0x16, 0xa8, 0x16, 0x47, 0x17, 0x69, 0x1a, 0xc7, 0x1a, 0xf1, 0x18, 0x5e, 0x15, 0xe1, 0x12, + 0x1d, 0x10, 0x5c, 0x0e, 0xb3, 0x0d, 0x00, 0x0d, 0xba, 0x0c, 0x95, 0x0b, 0xbd, 0x0b, 0x5e, 0x08, + 0xec, 0x07, 0xc1, 0x08, 0x47, 0x08, 0x96, 0x08, 0xf7, 0x04, 0x62, 0x01, 0x46, 0x02, 0x91, 0x02, + 0x08, 0x04, 0xc7, 0x06, 0x1b, 0x06, 0xb9, 0x05, 0x46, 0x06, 0x2a, 0x01, 0x6c, 0x00, 0x37, 0xff, + 0xae, 0xff, 0xef, 0x01, 0xf3, 0xfd, 0x7f, 0xff, 0x00, 0xfd, 0x8f, 0xfa, 0x26, 0xfa, 0x47, 0xf4, + 0xb9, 0xf2, 0xab, 0xeb, 0x67, 0xe8, 0x38, 0xe8, 0xa7, 0xe1, 0x29, 0xe1, 0x64, 0xdf, 0x3c, 0xdd, + 0x41, 0xdd, 0xd9, 0xda, 0xc8, 0xdc, 0x35, 0xdf, 0xf8, 0xdf, 0x52, 0xdf, 0xc6, 0xde, 0xb4, 0xe4, + 0x56, 0xea, 0x82, 0xf1, 0x79, 0xfd, 0x18, 0x04, 0x6f, 0x06, 0x13, 0x15, 0x8d, 0x17, 0x57, 0x22, + 0x93, 0x2a, 0x72, 0x2d, 0x43, 0x39, 0x46, 0x34, 0x6e, 0x35, 0x12, 0x32, 0xb3, 0x30, 0x24, 0x30, + 0x9a, 0x26, 0xb0, 0x21, 0xb5, 0x1d, 0xd5, 0x19, 0x17, 0x13, 0x07, 0x0b, 0x7d, 0x0a, 0x29, 0x03, + 0x2c, 0xfe, 0x04, 0xff, 0xb5, 0xf7, 0x61, 0xf3, 0x06, 0xf1, 0xc8, 0xec, 0xb9, 0xe6, 0xfb, 0xe0, + 0x83, 0xdf, 0xb7, 0xdd, 0xed, 0xdb, 0xef, 0xdb, 0x8d, 0xde, 0x82, 0xdf, 0xb1, 0xe8, 0x1a, 0xe8, + 0x1e, 0xee, 0x3c, 0xf6, 0xbd, 0xf9, 0x3f, 0x05, 0x99, 0x06, 0x40, 0x10, 0x0f, 0x13, 0xc4, 0x12, + 0x6d, 0x14, 0x51, 0x0d, 0x2f, 0x0c, 0x6b, 0x0d, 0x04, 0x09, 0x69, 0x06, 0xfb, 0x04, 0x1a, 0x02, + 0x2a, 0xf8, 0xda, 0xf2, 0x40, 0xf2, 0xfc, 0xeb, 0x6a, 0xec, 0xc4, 0xe6, 0x27, 0xe1, 0xd1, 0xe1, + 0xef, 0xdd, 0x7a, 0xe1, 0x5d, 0xe2, 0x84, 0xe0, 0xaa, 0xe2, 0x03, 0xe5, 0xd4, 0xe5, 0xa4, 0xeb, + 0x05, 0xee, 0xa5, 0xf4, 0x79, 0xf9, 0xaa, 0xfa, 0x46, 0xfd, 0x31, 0xfd, 0x87, 0x04, 0x98, 0x04, + 0xca, 0x07, 0x13, 0x0e, 0x09, 0x12, 0x7a, 0x17, 0x85, 0x18, 0x91, 0x15, 0xe9, 0x1a, 0x78, 0x1a, + 0xbb, 0x15, 0x5d, 0x16, 0x14, 0x15, 0xaa, 0x14, 0x49, 0x10, 0x81, 0x12, 0x5c, 0x0b, 0x01, 0x08, + 0xf9, 0x0b, 0x8f, 0x07, 0xd3, 0x09, 0xac, 0x0b, 0x0c, 0x0d, 0x5e, 0x11, 0x5a, 0x12, 0xd4, 0x0d, + 0xa9, 0x10, 0x68, 0x0a, 0x03, 0x0e, 0x7a, 0x0b, 0x95, 0x07, 0xea, 0x08, 0x68, 0x08, 0x4c, 0x0d, + 0x9d, 0x0a, 0x5f, 0x0f, 0x42, 0x13, 0x22, 0x15, 0x5b, 0x19, 0x86, 0x19, 0x69, 0x17, 0x96, 0x1b, + 0xe4, 0x12, 0xee, 0x0b, 0xf4, 0x0a, 0xbf, 0x04, 0xd4, 0xfc, 0x15, 0xf6, 0x35, 0xf2, 0x2b, 0xe8, + 0xea, 0xe3, 0x35, 0xe4, 0x16, 0xe3, 0x2b, 0xe4, 0xab, 0xe6, 0x1d, 0xe7, 0x7f, 0xe9, 0x6d, 0xea, + 0x12, 0xec, 0xf1, 0xf0, 0xe1, 0xeb, 0xec, 0xf1, 0x52, 0xf0, 0x17, 0xee, 0xf1, 0xed, 0xe1, 0xe8, + 0x11, 0xea, 0x8a, 0xe7, 0x6e, 0xea, 0xeb, 0xec, 0x49, 0xf0, 0x32, 0xf7, 0x59, 0xf8, 0x1d, 0xf9, + 0xfe, 0xfe, 0x6f, 0xfe, 0x26, 0x03, 0x31, 0x05, 0x06, 0x02, 0x42, 0x01, 0xad, 0x01, 0xc3, 0x00, + 0xcd, 0xfd, 0xd8, 0xfe, 0x1e, 0x02, 0xff, 0x02, 0x99, 0x02, 0x93, 0x02, 0x3b, 0x00, 0xa7, 0x02, + 0x53, 0x04, 0x44, 0x05, 0x34, 0x0a, 0x67, 0x09, 0x96, 0x0e, 0x20, 0x0a, 0xe2, 0x0a, 0x37, 0x0d, + 0xa8, 0x09, 0xe3, 0x0d, 0xc9, 0x0e, 0x1d, 0x11, 0xc7, 0x0f, 0x40, 0x0e, 0x36, 0x0f, 0xba, 0x0d, + 0x49, 0x0c, 0x4d, 0x10, 0x77, 0x0b, 0x2a, 0x0b, 0xc6, 0x08, 0x8c, 0x07, 0x29, 0x0a, 0x0e, 0x05, + 0x6a, 0x01, 0x77, 0xff, 0x69, 0xfe, 0x43, 0xfa, 0x78, 0xfa, 0xaa, 0xfe, 0x89, 0xfd, 0x90, 0xfb, + 0x60, 0xfa, 0x83, 0xf7, 0x3f, 0xf3, 0xbf, 0xf2, 0x97, 0xf1, 0x6c, 0xf4, 0x8d, 0xee, 0xc6, 0xf2, + 0x96, 0xf6, 0x82, 0xf2, 0x64, 0xf5, 0xec, 0xf2, 0x17, 0xf3, 0x3a, 0xf4, 0x00, 0xf4, 0xc0, 0xf4, + 0x98, 0xf6, 0x0e, 0xf6, 0x63, 0xf9, 0xb8, 0xf5, 0xf7, 0xf9, 0x1d, 0xfc, 0x8f, 0xfd, 0x0c, 0x02, + 0x6a, 0x02, 0x84, 0x03, 0xcc, 0x06, 0xd6, 0x07, 0x56, 0x04, 0x4c, 0x05, 0xfe, 0x04, 0x2b, 0x03, + 0xad, 0x00, 0x5a, 0x00, 0x25, 0xff, 0x55, 0x02, 0x15, 0x02, 0x86, 0xff, 0x8f, 0x00, 0x4b, 0xfb, + 0xf9, 0xff, 0x47, 0xff, 0x36, 0xfd, 0x39, 0x03, 0xc0, 0x05, 0xcd, 0x09, 0x18, 0x0a, 0xc3, 0x06, + 0x46, 0x06, 0xf8, 0x06, 0x19, 0x05, 0x6a, 0x04, 0xdf, 0xff, 0x9a, 0x03, 0x30, 0x01, 0x6f, 0xff, + 0x4e, 0x03, 0xf0, 0x03, 0xa2, 0x05, 0x31, 0x0a, 0x40, 0x0e, 0x53, 0x13, 0x0a, 0x18, 0x0b, 0x17, + 0x19, 0x16, 0x89, 0x16, 0x03, 0x14, 0x2e, 0x11, 0xc2, 0x12, 0x9f, 0x0e, 0x3b, 0x08, 0x59, 0x07, + 0x3f, 0x00, 0x79, 0x00, 0x07, 0xfb, 0x4b, 0xf8, 0x4b, 0xf8, 0x3b, 0xf5, 0xf0, 0xf5, 0x03, 0xf4, + 0x31, 0xf4, 0xf8, 0xf3, 0xe1, 0xf6, 0xef, 0xf4, 0xc5, 0xf4, 0xa8, 0xf2, 0x73, 0xf7, 0xb4, 0xf5, + 0x8d, 0xf5, 0xd4, 0xf9, 0x28, 0xf5, 0xec, 0xf6, 0xa3, 0xfa, 0xf1, 0xfd, 0x23, 0x03, 0xbe, 0x04, + 0xa5, 0x03, 0x01, 0x05, 0x0d, 0x05, 0x2e, 0x03, 0x10, 0x03, 0xce, 0x04, 0x38, 0xfd, 0xe5, 0xf4, + 0x75, 0xf4, 0x51, 0xee, 0x22, 0xef, 0xe0, 0xec, 0x02, 0xeb, 0xf9, 0xea, 0x89, 0xe6, 0xaa, 0xe4, + 0xbf, 0xe5, 0x28, 0xe7, 0x1c, 0xe7, 0xb2, 0xe9, 0xe3, 0xea, 0x21, 0xed, 0x6d, 0xed, 0x1f, 0xf0, + 0x6b, 0xec, 0x7f, 0xf2, 0x88, 0xf4, 0x0f, 0xf4, 0x30, 0xfb, 0x4f, 0x00, 0x52, 0x03, 0xd3, 0x0a, + 0xb6, 0x12, 0x63, 0x17, 0xba, 0x20, 0x9e, 0x25, 0xb3, 0x2c, 0x94, 0x31, 0x90, 0x34, 0x50, 0x31, + 0xbd, 0x2d, 0xe3, 0x2c, 0x5b, 0x25, 0x55, 0x20, 0x2b, 0x17, 0x1f, 0x13, 0x46, 0x11, 0xd5, 0x0a, + 0x77, 0x06, 0xaa, 0x04, 0xbe, 0xff, 0x51, 0xfb, 0x94, 0xf8, 0x6e, 0xf5, 0xec, 0xf5, 0x22, 0xf6, + 0xfb, 0xf8, 0xee, 0xf8, 0x64, 0xfc, 0x8d, 0xf6, 0x1d, 0xf4, 0x2f, 0xf8, 0xaa, 0xf5, 0x0a, 0xf7, + 0xf2, 0xfb, 0x91, 0xfc, 0x46, 0xfb, 0x75, 0xfe, 0x99, 0x01, 0x97, 0x08, 0xbc, 0x09, 0x8e, 0x08, + 0xa0, 0x0a, 0x2f, 0x0e, 0x42, 0x10, 0x0d, 0x0f, 0xa7, 0x10, 0x4d, 0x0d, 0x1a, 0x0a, 0xc2, 0x04, + 0x9b, 0xfe, 0x7d, 0xfe, 0x3f, 0xf9, 0x79, 0xf2, 0xb0, 0xed, 0xd5, 0xe7, 0xfd, 0xe1, 0x87, 0xdf, + 0xaa, 0xda, 0x36, 0xd9, 0x8b, 0xd8, 0x72, 0xda, 0xf5, 0xda, 0x3a, 0xe3, 0xaf, 0xeb, 0x64, 0xec, + 0x5f, 0xf2, 0x03, 0xf7, 0x7f, 0xf8, 0x8f, 0xfc, 0xca, 0x00, 0x35, 0x02, 0x96, 0x09, 0x7f, 0x0a, + 0x34, 0x09, 0xd5, 0x0c, 0xba, 0x0f, 0xc3, 0x0f, 0x28, 0x11, 0x37, 0x14, 0x63, 0x15, 0x26, 0x18, + 0x15, 0x16, 0x45, 0x17, 0x0f, 0x17, 0xed, 0x0e, 0x34, 0x09, 0x90, 0x06, 0x96, 0xff, 0xe7, 0xfa, + 0x0e, 0xfa, 0xbe, 0xf5, 0x38, 0xf4, 0x5e, 0xec, 0x5d, 0xec, 0x68, 0xec, 0xc8, 0xef, 0x07, 0xf0, + 0xa5, 0xf2, 0x9d, 0xfa, 0xd4, 0xfc, 0xd3, 0xfb, 0x11, 0x00, 0x02, 0x05, 0x76, 0x02, 0x0a, 0x08, + 0x56, 0x05, 0xa3, 0x02, 0x87, 0x05, 0x7e, 0x07, 0x30, 0x0b, 0xb2, 0x11, 0xe5, 0x17, 0xa1, 0x19, + 0xff, 0x1c, 0xe7, 0x1c, 0xad, 0x1e, 0x8a, 0x1f, 0xe1, 0x19, 0x7c, 0x19, 0x11, 0x16, 0x13, 0x0c, + 0xda, 0x04, 0x8d, 0xfd, 0x50, 0xf8, 0xf0, 0xf2, 0x57, 0xec, 0x27, 0xec, 0x02, 0xe9, 0x58, 0xe7, + 0xd6, 0xe3, 0xd4, 0xe4, 0x84, 0xe7, 0x71, 0xe5, 0x5a, 0xe6, 0x82, 0xec, 0x03, 0xf0, 0xff, 0xed, + 0xea, 0xef, 0x2f, 0xed, 0x99, 0xef, 0xc2, 0xf3, 0x50, 0xf2, 0x90, 0xf2, 0x0a, 0xf4, 0xd4, 0xf4, + 0xd0, 0xf6, 0x78, 0xfe, 0x4d, 0x03, 0xc6, 0x06, 0x86, 0x0c, 0x6b, 0x0e, 0x2f, 0x12, 0xfb, 0x13, + 0xb6, 0x17, 0xb3, 0x1d, 0x71, 0x1b, 0x86, 0x17, 0xdd, 0x14, 0x32, 0x12, 0x8e, 0x11, 0xfd, 0x0c, + 0x53, 0x0c, 0x7e, 0x0a, 0x41, 0x08, 0x9a, 0x04, 0x62, 0x01, 0xfb, 0x00, 0x79, 0x00, 0x37, 0xff, + 0xd9, 0xfd, 0xa2, 0x01, 0xe0, 0x00, 0xab, 0x03, 0xa4, 0x01, 0x8c, 0x00, 0x26, 0x04, 0xa7, 0x06, + 0xa4, 0x07, 0x72, 0x05, 0x1e, 0x0a, 0x99, 0x06, 0xf9, 0x03, 0x56, 0x05, 0xbc, 0x03, 0xf4, 0x01, + 0xb6, 0xfe, 0x22, 0xff, 0x70, 0x01, 0x8d, 0xfe, 0x52, 0xfe, 0x57, 0xff, 0xcb, 0xfd, 0x7f, 0xfc, + 0xa1, 0xf8, 0x71, 0xfb, 0xed, 0xf8, 0xfc, 0xf7, 0xc4, 0xf4, 0xf7, 0xf2, 0x74, 0xf2, 0xcc, 0xee, + 0x28, 0xed, 0x99, 0xea, 0x9e, 0xe9, 0x54, 0xe5, 0xd2, 0xe8, 0xb6, 0xe7, 0xf9, 0xe7, 0xfa, 0xe9, + 0xb1, 0xe8, 0xcf, 0xe9, 0x51, 0xea, 0xfb, 0xed, 0x2f, 0xee, 0xc0, 0xef, 0xef, 0xf3, 0x02, 0xf4, + 0x55, 0xfa, 0x23, 0xff, 0xa8, 0x03, 0x06, 0x0a, 0x4d, 0x0b, 0x63, 0x11, 0x4c, 0x14, 0xa9, 0x17, + 0xce, 0x1b, 0x1b, 0x1f, 0x7c, 0x20, 0x52, 0x1b, 0xd8, 0x19, 0x9e, 0x15, 0x7e, 0x13, 0xd1, 0x10, + 0xc7, 0x0c, 0x12, 0x09, 0x8c, 0x08, 0x99, 0x04, 0x4d, 0xfe, 0x03, 0x01, 0x32, 0xfc, 0xe2, 0xfc, + 0xa3, 0xfd, 0x35, 0xfc, 0x79, 0xff, 0xc7, 0xfc, 0x7a, 0xf8, 0xe3, 0xf4, 0xf7, 0xf7, 0xef, 0xf6, + 0xee, 0xf1, 0xcb, 0xf4, 0xc3, 0xf1, 0x6f, 0xf1, 0xc7, 0xf4, 0x7d, 0xf5, 0x9a, 0xfb, 0x5a, 0xfe, + 0x0e, 0x04, 0x94, 0x0a, 0xe2, 0x0c, 0xf3, 0x0f, 0x7d, 0x12, 0x93, 0x18, 0x6b, 0x17, 0xa2, 0x16, + 0xfd, 0x16, 0x71, 0x12, 0x32, 0x0d, 0xaf, 0x09, 0x75, 0x04, 0xd8, 0xfe, 0x44, 0xfe, 0xad, 0xf3, + 0xbf, 0xf3, 0x7d, 0xf2, 0xd0, 0xec, 0xc1, 0xed, 0xb9, 0xea, 0xba, 0xec, 0x55, 0xef, 0x3a, 0xf1, + 0xfb, 0xeb, 0x40, 0xec, 0x3b, 0xf0, 0x05, 0xef, 0xb0, 0xf1, 0x14, 0xf2, 0x6a, 0xf0, 0x7f, 0xf3, + 0x3d, 0xf4, 0xb6, 0xf9, 0xd7, 0x00, 0x44, 0x05, 0x92, 0x0b, 0x22, 0x0f, 0xcb, 0x12, 0x19, 0x16, + 0x44, 0x1b, 0xb5, 0x1e, 0xef, 0x1e, 0xbf, 0x1b, 0x21, 0x1c, 0x68, 0x19, 0x46, 0x16, 0x03, 0x15, + 0x06, 0x0e, 0xe5, 0x11, 0x63, 0x0c, 0x3c, 0x05, 0x7a, 0x03, 0xce, 0xfd, 0xde, 0xfc, 0xba, 0xf9, + 0x18, 0xf6, 0x33, 0xf3, 0xd7, 0xf2, 0x3e, 0xf1, 0x93, 0xec, 0xd4, 0xee, 0x10, 0xed, 0xb9, 0xeb, + 0x3e, 0xf0, 0x72, 0xed, 0x5b, 0xf1, 0x33, 0xf5, 0x01, 0xf9, 0x2b, 0xfe, 0x3d, 0x01, 0xf4, 0x07, + 0xdc, 0x0d, 0xba, 0x13, 0xf4, 0x14, 0x33, 0x19, 0x27, 0x1b, 0x88, 0x1c, 0x66, 0x19, 0x67, 0x14, + 0xeb, 0x11, 0xb4, 0x0a, 0x97, 0x0c, 0xac, 0x05, 0xe0, 0x01, 0x6c, 0x02, 0x6e, 0xfc, 0x45, 0xfa, + 0xd7, 0xf3, 0xd8, 0xf1, 0xa7, 0xf1, 0x49, 0xef, 0x3b, 0xed, 0x2e, 0xee, 0x95, 0xef, 0x5e, 0xe9, + 0xb4, 0xe6, 0x7c, 0xe9, 0x24, 0xe8, 0x34, 0xea, 0x63, 0xeb, 0x44, 0xe8, 0x1b, 0xe8, 0x61, 0xe6, + 0x8f, 0xe7, 0x7f, 0xeb, 0x16, 0xec, 0xc3, 0xec, 0x3f, 0xf3, 0x77, 0xf6, 0x55, 0xfa, 0xe9, 0xfe, + 0xae, 0x05, 0xd2, 0x0d, 0xbf, 0x0e, 0x01, 0x13, 0x7a, 0x0e, 0x63, 0x0d, 0xb4, 0x0a, 0x8c, 0x05, + 0xf0, 0x06, 0x83, 0x02, 0x08, 0x00, 0x53, 0xfa, 0x30, 0xf7, 0xe6, 0xf6, 0x38, 0xf6, 0x29, 0xf5, + 0x11, 0xf5, 0x56, 0xf9, 0xdc, 0xff, 0xe7, 0x01, 0x30, 0x07, 0xdf, 0x07, 0xd8, 0x07, 0xf2, 0x0b, + 0xd9, 0x0c, 0xd8, 0x0d, 0xd9, 0x10, 0xc5, 0x0f, 0x96, 0x0c, 0xab, 0x0d, 0xb3, 0x0a, 0xb3, 0x0d, + 0xe4, 0x0c, 0x94, 0x0e, 0x06, 0x11, 0xc6, 0x0f, 0x74, 0x13, 0x3c, 0x13, 0x41, 0x19, 0x34, 0x16, + 0x3c, 0x13, 0xcb, 0x13, 0xb1, 0x0d, 0x5c, 0x08, 0x7e, 0x05, 0x30, 0x04, 0xd7, 0x00, 0xf4, 0xf8, + 0xd1, 0xf4, 0xba, 0xf5, 0xf9, 0xf2, 0x7f, 0xf1, 0x18, 0xf1, 0x97, 0xf5, 0x6f, 0xf6, 0x2a, 0xf7, + 0x2f, 0xf9, 0x52, 0xf9, 0xc1, 0xf8, 0xd0, 0xf8, 0x9f, 0xf6, 0xed, 0xf4, 0xb9, 0xf5, 0x9e, 0xf3, + 0xf5, 0xf7, 0xc7, 0xf6, 0x8d, 0xfa, 0x60, 0x00, 0x39, 0x03, 0x66, 0x07, 0x50, 0x04, 0x32, 0x09, + 0x5c, 0x0a, 0xb9, 0x0a, 0x24, 0x0d, 0x6e, 0x07, 0xaf, 0x07, 0xdf, 0x06, 0xe3, 0x03, 0x2c, 0x00, + 0x5a, 0xfc, 0x0f, 0xfd, 0x01, 0xfd, 0x12, 0xfb, 0x7c, 0xfb, 0x4a, 0xfe, 0x85, 0xff, 0xc9, 0xfc, + 0x50, 0xfc, 0x0e, 0x00, 0x57, 0x03, 0xec, 0x02, 0x07, 0x02, 0xd0, 0xfe, 0x34, 0xfe, 0x25, 0xff, + 0xd3, 0xfa, 0x66, 0xfa, 0x7b, 0xf8, 0x98, 0xf9, 0xea, 0xf7, 0x2d, 0xf8, 0x4d, 0xfb, 0xb6, 0xf9, + 0x0c, 0x00, 0x83, 0x00, 0x29, 0x00, 0x94, 0x03, 0xe4, 0x03, 0x09, 0x0b, 0x94, 0x0d, 0x50, 0x09, + 0x66, 0x0b, 0xd2, 0x0b, 0xde, 0x07, 0xfb, 0x07, 0x67, 0x07, 0x22, 0x09, 0xda, 0x07, 0x0b, 0x03, + 0x63, 0xff, 0x44, 0xff, 0xcd, 0xfc, 0x41, 0xfa, 0x60, 0xf9, 0x5d, 0xfa, 0x73, 0xfb, 0x33, 0xfd, + 0xfd, 0xfd, 0x75, 0xfa, 0x3a, 0xff, 0x0c, 0x00, 0x80, 0x00, 0xa0, 0xfc, 0xf7, 0xfb, 0xe0, 0xfc, + 0xdb, 0xf6, 0xd9, 0xf7, 0x8a, 0xf3, 0x68, 0xf3, 0x7a, 0xf4, 0xbc, 0xf2, 0x49, 0xf6, 0x38, 0xf5, + 0x75, 0xf4, 0x37, 0xfa, 0x17, 0xfb, 0x96, 0xf9, 0x47, 0xfd, 0xe4, 0xfc, 0xea, 0xfb, 0x34, 0xf9, + 0xa3, 0xf8, 0xbc, 0xfb, 0x73, 0xfc, 0xda, 0xf8, 0x7d, 0xf7, 0x1a, 0xf7, 0x30, 0xf5, 0x75, 0xf2, + 0x80, 0xf2, 0xa1, 0xf3, 0xd0, 0xf5, 0x10, 0xfc, 0x07, 0xfb, 0x68, 0xfe, 0xaa, 0x01, 0xc7, 0x02, + 0xb0, 0x04, 0xaf, 0x04, 0x31, 0x08, 0x97, 0x09, 0xa6, 0x0c, 0x84, 0x10, 0x7a, 0x10, 0x96, 0x14, + 0x01, 0x17, 0xf4, 0x18, 0x6a, 0x1c, 0x53, 0x1d, 0x22, 0x21, 0x78, 0x25, 0xb8, 0x23, 0x68, 0x24, + 0xe9, 0x23, 0xa5, 0x1f, 0x3c, 0x1c, 0x8f, 0x16, 0xa1, 0x10, 0x52, 0x0e, 0x61, 0x09, 0x99, 0x03, + 0xd2, 0xff, 0xf3, 0xfe, 0x4d, 0xfb, 0xcf, 0xf8, 0x2a, 0xf8, 0xc6, 0xf1, 0x2f, 0xf5, 0x54, 0xf2, + 0x09, 0xed, 0xed, 0xec, 0xf5, 0xe9, 0xb3, 0xe8, 0xd1, 0xe2, 0x3a, 0xe1, 0xf8, 0xe0, 0xeb, 0xe0, + 0x95, 0xe0, 0x3a, 0xe1, 0xb5, 0xe3, 0x96, 0xe7, 0x4d, 0xeb, 0x16, 0xf1, 0x3a, 0xf6, 0xb2, 0xf7, + 0x70, 0x01, 0x27, 0x06, 0x63, 0x07, 0x9a, 0x0b, 0x74, 0x0f, 0x27, 0x0f, 0x4f, 0x0c, 0x1d, 0x07, + 0x2e, 0x03, 0xed, 0xff, 0xc5, 0xfa, 0x27, 0xf6, 0xd9, 0xf4, 0x58, 0xf6, 0xb0, 0xf2, 0x5e, 0xf6, + 0x48, 0xf3, 0xd0, 0xf3, 0x2a, 0xfa, 0xb2, 0xf9, 0xd7, 0xf9, 0xbc, 0xfc, 0x62, 0x01, 0xad, 0x03, + 0xaf, 0x04, 0xb0, 0x03, 0x29, 0x05, 0xa9, 0x07, 0x40, 0x09, 0xf0, 0x09, 0xf9, 0x0c, 0x37, 0x10, + 0x5f, 0x12, 0x2b, 0x17, 0xe3, 0x15, 0xe3, 0x16, 0x43, 0x1a, 0x7b, 0x19, 0x6d, 0x19, 0xe5, 0x19, + 0x79, 0x18, 0x7e, 0x18, 0x54, 0x12, 0x8a, 0x0d, 0xaa, 0x0a, 0x22, 0x0a, 0x88, 0x05, 0xe0, 0xfd, + 0x8c, 0xfb, 0xf7, 0xf4, 0x85, 0xf3, 0xbd, 0xef, 0x49, 0xeb, 0x25, 0xec, 0x78, 0xee, 0xcb, 0xee, + 0x2a, 0xed, 0xb4, 0xec, 0x28, 0xed, 0xed, 0xee, 0xe6, 0xef, 0xe6, 0xf0, 0xb9, 0xf1, 0xdd, 0xf5, + 0x9d, 0xf9, 0x61, 0xfa, 0xe3, 0xfb, 0x24, 0xfe, 0xfb, 0x05, 0x6d, 0x09, 0x4b, 0x09, 0x52, 0x0e, + 0xe5, 0x0e, 0x1b, 0x0c, 0x3a, 0x0c, 0xf3, 0x08, 0x65, 0x0a, 0x43, 0x0a, 0xf7, 0x05, 0xd0, 0x01, + 0xe6, 0xfb, 0x98, 0xfb, 0xe7, 0xf8, 0xf8, 0xf4, 0x45, 0xef, 0x5a, 0xed, 0xa5, 0xeb, 0x17, 0xe9, + 0xd3, 0xe5, 0x9c, 0xe5, 0x65, 0xeb, 0xe0, 0xeb, 0x06, 0xed, 0xea, 0xed, 0x23, 0xf2, 0xa5, 0xf5, + 0x15, 0xf7, 0x2a, 0xf9, 0xf1, 0xfa, 0x3e, 0xff, 0x1a, 0x00, 0x38, 0x04, 0xad, 0x03, 0x48, 0x04, + 0x29, 0x0d, 0x99, 0x0e, 0xa4, 0x0e, 0xaf, 0x13, 0x7c, 0x19, 0x9c, 0x1f, 0x6e, 0x1f, 0xf6, 0x1f, + 0x1b, 0x23, 0x95, 0x1f, 0xc9, 0x1b, 0x40, 0x16, 0x75, 0x12, 0x72, 0x0d, 0x40, 0x08, 0x0f, 0x01, + 0xe3, 0xfd, 0xae, 0xfa, 0xf5, 0xf7, 0x44, 0xf4, 0xc2, 0xf0, 0xbf, 0xf3, 0x0b, 0xf5, 0x35, 0xf8, + 0x52, 0xfb, 0x28, 0xff, 0x11, 0x01, 0x3a, 0x04, 0xb5, 0x06, 0xd1, 0x02, 0xc9, 0x02, 0x32, 0x03, + 0x94, 0x01, 0x7c, 0xff, 0x12, 0xfc, 0x61, 0xfb, 0x51, 0xfd, 0x0f, 0xfb, 0x2c, 0xfe, 0x52, 0x01, + 0x0a, 0x03, 0x9d, 0x04, 0x81, 0x05, 0xd0, 0x05, 0x32, 0x06, 0xa2, 0x08, 0xd5, 0x03, 0x5a, 0xff, + 0x9f, 0xfb, 0x8a, 0xf9, 0xfc, 0xf3, 0x53, 0xef, 0x09, 0xec, 0xee, 0xea, 0x9b, 0xeb, 0xda, 0xe6, + 0xf3, 0xe5, 0x2a, 0xe8, 0x09, 0xeb, 0x38, 0xea, 0x0e, 0xea, 0xe5, 0xec, 0xd6, 0xec, 0x6b, 0xf2, + 0xc4, 0xf4, 0x11, 0xf5, 0x5d, 0xf7, 0x4a, 0xf7, 0x1e, 0xfb, 0x79, 0xfe, 0x1b, 0xff, 0xf8, 0x04, + 0x93, 0x0a, 0x55, 0x0a, 0x28, 0x0d, 0xd4, 0x11, 0xd2, 0x14, 0x38, 0x15, 0x17, 0x13, 0x9f, 0x10, + 0x43, 0x14, 0x81, 0x15, 0x20, 0x13, 0x22, 0x0f, 0xb2, 0x0c, 0xdb, 0x09, 0x68, 0x07, 0xa7, 0x05, + 0xcd, 0x04, 0x9e, 0x06, 0x5f, 0x04, 0x81, 0x01, 0x48, 0xfe, 0x53, 0xff, 0x66, 0x03, 0x10, 0x03, + 0xb9, 0x02, 0xc6, 0xff, 0xdf, 0xff, 0x1f, 0xff, 0x50, 0xfb, 0xf8, 0xf9, 0xc3, 0xfd, 0x34, 0x00, + 0x4b, 0x01, 0x8d, 0x01, 0xea, 0xff, 0xad, 0x01, 0xc6, 0x04, 0x5e, 0x06, 0x42, 0x08, 0x6f, 0x0a, + 0x82, 0x0e, 0x1c, 0x12, 0x54, 0x0f, 0xc8, 0x0f, 0xdc, 0x12, 0xbd, 0x15, 0xe6, 0x10, 0x91, 0x0f, + 0x35, 0x0f, 0x66, 0x0c, 0x62, 0x09, 0xc8, 0x00, 0xa5, 0xfd, 0xeb, 0xfa, 0x27, 0xf7, 0xd8, 0xf0, + 0x5a, 0xed, 0x6b, 0xec, 0x9e, 0xea, 0xcf, 0xed, 0x39, 0xed, 0x1c, 0xed, 0xba, 0xef, 0x21, 0xf3, + 0x70, 0xf2, 0xcc, 0xf0, 0x68, 0xf0, 0x38, 0xf4, 0xbb, 0xf7, 0x91, 0xf5, 0x4b, 0xf6, 0x30, 0xf8, + 0x8d, 0xf9, 0x67, 0xfc, 0xf4, 0xfe, 0x72, 0x00, 0xef, 0x05, 0xa0, 0x0a, 0x39, 0x0d, 0x87, 0x0e, + 0x2e, 0x15, 0xc8, 0x17, 0x50, 0x15, 0x9a, 0x14, 0xec, 0x11, 0x23, 0x12, 0x82, 0x10, 0x5c, 0x0b, + 0x9c, 0x06, 0xdf, 0x03, 0x02, 0xfd, 0x38, 0xf6, 0x4a, 0xf0, 0xe7, 0xe9, 0x7b, 0xeb, 0xad, 0xec, + 0x9b, 0xea, 0x86, 0xec, 0xfb, 0xec, 0xb2, 0xec, 0x0c, 0xee, 0xff, 0xec, 0x48, 0xeb, 0x32, 0xee, + 0x21, 0xef, 0x2d, 0xef, 0x10, 0xf2, 0x77, 0xf5, 0xda, 0xfa, 0xcb, 0xff, 0xc0, 0x01, 0xb2, 0x07, + 0xb0, 0x0e, 0xc3, 0x15, 0x4c, 0x15, 0xe8, 0x16, 0x33, 0x1c, 0x57, 0x1b, 0x67, 0x1b, 0x61, 0x18, + 0x99, 0x16, 0xbb, 0x14, 0x50, 0x10, 0x52, 0x0a, 0x6e, 0x07, 0x9e, 0x05, 0x21, 0x00, 0x7e, 0xfd, + 0x69, 0xf6, 0x04, 0xf2, 0xd9, 0xf1, 0x4d, 0xef, 0x1e, 0xeb, 0xdd, 0xe8, 0xf7, 0xe6, 0xa0, 0xe5, + 0x2a, 0xe4, 0x1b, 0xe1, 0x11, 0xe2, 0x49, 0xe3, 0xb8, 0xe1, 0x52, 0xe2, 0x93, 0xe3, 0x37, 0xe4, + 0xf1, 0xec, 0x43, 0xf2, 0x6d, 0xf6, 0xec, 0xfc, 0x40, 0x06, 0x27, 0x0b, 0xa9, 0x0d, 0x3d, 0x14, + 0x33, 0x1b, 0xb1, 0x20, 0x46, 0x1f, 0x1a, 0x20, 0x0c, 0x1e, 0xc9, 0x1a, 0x84, 0x17, 0x03, 0x13, + 0xa2, 0x12, 0x81, 0x13, 0xdc, 0x12, 0x29, 0x0e, 0x33, 0x0a, 0x11, 0x08, 0x63, 0x08, 0x98, 0x08, + 0xac, 0x07, 0x67, 0x07, 0xf2, 0x06, 0xc0, 0x07, 0x43, 0x05, 0x6a, 0x00, 0xed, 0x01, 0xb1, 0x03, + 0x14, 0x04, 0x8c, 0x05, 0x3e, 0x03, 0xaa, 0x03, 0x49, 0x05, 0x08, 0x06, 0x58, 0x05, 0x57, 0x0a, + 0x53, 0x0f, 0x0f, 0x11, 0x78, 0x0e, 0xa4, 0x0d, 0xe3, 0x12, 0x4b, 0x12, 0x39, 0x11, 0x6b, 0x0e, + 0xd9, 0x0b, 0x94, 0x09, 0xff, 0x04, 0x85, 0xfd, 0x01, 0xf8, 0x32, 0xf6, 0xe1, 0xf1, 0x45, 0xeb, + 0xa1, 0xe3, 0x45, 0xe2, 0x91, 0xe4, 0x58, 0xe0, 0xfc, 0xde, 0xa7, 0xde, 0x9b, 0xde, 0xf4, 0xe0, + 0xe4, 0xe1, 0xce, 0xe1, 0x23, 0xe4, 0x7b, 0xe6, 0x82, 0xea, 0xa9, 0xec, 0xa2, 0xec, 0x72, 0xf1, + 0xbe, 0xf9, 0x49, 0xfa, 0x1c, 0xfa, 0xad, 0xff, 0x9e, 0x04, 0xda, 0x06, 0xe2, 0x05, 0x46, 0x0a, + 0xb3, 0x0f, 0xd2, 0x12, 0xe8, 0x14, 0x71, 0x13, 0x06, 0x14, 0x07, 0x13, 0x37, 0x11, 0x37, 0x0d, + 0x4c, 0x0c, 0x8d, 0x0b, 0x54, 0x0a, 0xe2, 0x06, 0xab, 0xff, 0x39, 0xff, 0x19, 0x01, 0x24, 0x02, + 0xb3, 0x01, 0x2a, 0x01, 0x44, 0x03, 0x1f, 0x04, 0xc8, 0x01, 0xb3, 0x01, 0xa8, 0x00, 0xef, 0xff, + 0xb6, 0xfe, 0xdf, 0xfd, 0xa0, 0xfa, 0x23, 0xf9, 0x83, 0xfc, 0x96, 0xfb, 0x13, 0xfa, 0x31, 0xfc, + 0x73, 0x02, 0x48, 0x03, 0xac, 0x05, 0xab, 0x07, 0xe1, 0x0a, 0xb8, 0x0f, 0xc7, 0x0f, 0xd9, 0x0d, + 0x03, 0x0c, 0x47, 0x0c, 0xaa, 0x07, 0xe4, 0x01, 0x78, 0xfe, 0x35, 0xfd, 0x32, 0xf9, 0xa9, 0xf3, + 0x4c, 0xf2, 0x97, 0xf1, 0x9e, 0xf1, 0x79, 0xf3, 0xea, 0xf4, 0x7f, 0xf6, 0xa1, 0xf8, 0xf9, 0xfb, + 0xde, 0xfd, 0x1f, 0xfa, 0x4c, 0xfb, 0x3e, 0xfb, 0xbe, 0xfa, 0xd6, 0xf6, 0xcd, 0xf2, 0x2e, 0xf2, + 0xc7, 0xf2, 0x63, 0xf3, 0xc0, 0xf3, 0x64, 0xfa, 0x70, 0xfc, 0x55, 0xfd, 0xd6, 0xfd, 0x6d, 0xfd, + 0x9f, 0x00, 0x01, 0x03, 0xf1, 0x05, 0x27, 0x04, 0xcb, 0x02, 0x76, 0x02, 0x74, 0x00, 0xda, 0xfc, + 0xe2, 0xfa, 0xf6, 0xfe, 0xb9, 0xfe, 0x4d, 0xfc, 0xd6, 0xf9, 0xfd, 0xfb, 0x46, 0xfd, 0x61, 0xfc, + 0x8e, 0xfd, 0x94, 0xff, 0x27, 0x03, 0x50, 0x05, 0x26, 0x06, 0x41, 0x06, 0x79, 0x05, 0x40, 0x06, + 0x90, 0x08, 0xd5, 0x07, 0xb1, 0x05, 0x87, 0x07, 0xea, 0x09, 0xb3, 0x05, 0xbe, 0x07, 0x28, 0x0c, + 0x1b, 0x0e, 0xa2, 0x10, 0x56, 0x10, 0xf7, 0x0f, 0xfc, 0x11, 0x67, 0x14, 0xc4, 0x10, 0x20, 0x10, + 0x28, 0x11, 0x9b, 0x11, 0x99, 0x10, 0x32, 0x0a, 0x83, 0x09, 0x50, 0x0a, 0x16, 0x07, 0xde, 0x04, + 0xc9, 0x01, 0x3f, 0xfd, 0x4a, 0xfd, 0xfa, 0xfc, 0x55, 0xf7, 0xb3, 0xf4, 0xfa, 0xf5, 0xed, 0xf1, + 0x7a, 0xee, 0x3b, 0xee, 0xe1, 0xee, 0x69, 0xf3, 0x7a, 0xf3, 0xa8, 0xf1, 0x5c, 0xec, 0xc8, 0xee, + 0xc8, 0xef, 0xbc, 0xed, 0x49, 0xef, 0xbe, 0xf0, 0x6b, 0xf3, 0x53, 0xf5, 0xcc, 0xf7, 0x9d, 0xf8, + 0x1f, 0x00, 0x2b, 0x06, 0x40, 0x08, 0x61, 0x08, 0xe2, 0x07, 0xab, 0x0b, 0x1f, 0x0a, 0xe1, 0x03, + 0x53, 0x04, 0x5a, 0x05, 0x5f, 0x01, 0xc2, 0xff, 0x68, 0xfb, 0x5d, 0xf8, 0x44, 0xfa, 0x8b, 0xfb, + 0xa2, 0xf9, 0x81, 0xfb, 0xbc, 0xfc, 0x77, 0xfe, 0x36, 0xfe, 0x67, 0xfa, 0x30, 0xfb, 0x63, 0xfd, + 0xb4, 0xfe, 0xbf, 0xfb, 0x92, 0xf9, 0xda, 0xf9, 0xd4, 0xf8, 0xbe, 0xf7, 0x12, 0xf7, 0xce, 0xf9, + 0x60, 0xfc, 0xcd, 0x00, 0x5e, 0x00, 0xe2, 0x01, 0xd0, 0x07, 0x32, 0x0a, 0x73, 0x0d, 0xc9, 0x0c, + 0xd2, 0x0d, 0xf5, 0x10, 0xf3, 0x0e, 0x8b, 0x0c, 0xff, 0x09, 0x46, 0x09, 0xcb, 0x08, 0x59, 0x05, + 0x15, 0xfd, 0x13, 0xfb, 0x33, 0xfd, 0x29, 0xfb, 0xfb, 0xfb, 0x68, 0xfc, 0xeb, 0xfb, 0x01, 0xfe, + 0xb9, 0xfd, 0x5a, 0xfc, 0x74, 0xfb, 0x97, 0xfe, 0x19, 0xff, 0xa9, 0xfd, 0xce, 0xfc, 0xd8, 0xfe, + 0xe6, 0x00, 0x5f, 0x00, 0x9c, 0x02, 0x72, 0x04, 0x33, 0x0a, 0xb2, 0x0d, 0x9f, 0x0d, 0x61, 0x0d, + 0xcc, 0x0e, 0x73, 0x12, 0xc6, 0x0f, 0x68, 0x0f, 0x8d, 0x10, 0x62, 0x0f, 0x8c, 0x0b, 0x96, 0x08, + 0x77, 0x04, 0x88, 0x00, 0x93, 0x00, 0x7f, 0xff, 0xbb, 0xf9, 0x1a, 0xf7, 0xfb, 0xf7, 0x04, 0xf5, + 0xa8, 0xf2, 0xd6, 0xf3, 0x8e, 0xf6, 0xae, 0xf6, 0xab, 0xf7, 0x5a, 0xf4, 0x66, 0xf4, 0x07, 0xf6, + 0x8b, 0xf6, 0xec, 0xf6, 0x65, 0xf5, 0x45, 0xf8, 0x56, 0xf9, 0x1a, 0xfb, 0x1e, 0xfc, 0xac, 0xff, + 0xfb, 0x04, 0xc4, 0x07, 0x32, 0x0a, 0x97, 0x0c, 0x0b, 0x11, 0xe4, 0x12, 0x3a, 0x10, 0xf7, 0x0e, + 0x4e, 0x0e, 0x7d, 0x0c, 0x5f, 0x08, 0xe1, 0x04, 0x5e, 0x03, 0xbe, 0x00, 0x63, 0xfe, 0xc5, 0xf8, + 0x67, 0xf3, 0x65, 0xf2, 0xfb, 0xf2, 0xc3, 0xf2, 0xed, 0xf0, 0x5f, 0xf1, 0xb7, 0xf2, 0x7f, 0xf6, + 0x7d, 0xf7, 0x9c, 0xf6, 0x02, 0xfa, 0x92, 0xfc, 0x74, 0xff, 0x9b, 0xfe, 0xfb, 0xfe, 0x9e, 0xff, + 0x4a, 0xff, 0x14, 0x00, 0x30, 0x00, 0x80, 0x03, 0x8f, 0x08, 0x33, 0x0a, 0x07, 0x08, 0x69, 0x08, + 0x55, 0x0c, 0x47, 0x0c, 0xba, 0x0a, 0x48, 0x09, 0x02, 0x07, 0xc9, 0x04, 0x0f, 0x02, 0x88, 0xfc, + 0x07, 0xf7, 0x7b, 0xf7, 0xc7, 0xf6, 0x7a, 0xf0, 0xd8, 0xe9, 0x33, 0xe7, 0xf1, 0xe6, 0xa3, 0xe2, + 0xa8, 0xe3, 0x81, 0xe5, 0xa2, 0xe6, 0x16, 0xeb, 0x5b, 0xed, 0x4f, 0xee, 0x77, 0xef, 0xdf, 0xf7, + 0xa9, 0xfa, 0xce, 0xfc, 0x1a, 0x01, 0x73, 0x04, 0xc2, 0x09, 0xd2, 0x09, 0x65, 0x09, 0x14, 0x0c, + 0x4c, 0x13, 0x62, 0x16, 0xb4, 0x16, 0x8b, 0x17, 0x29, 0x1d, 0xfc, 0x20, 0xe0, 0x1f, 0xa9, 0x21, + 0x35, 0x21, 0x58, 0x1f, 0xaa, 0x1f, 0xbe, 0x19, 0x4e, 0x15, 0x0a, 0x12, 0x94, 0x10, 0x2c, 0x0a, + 0x40, 0x02, 0xb7, 0x00, 0x22, 0xff, 0xc3, 0xfb, 0xec, 0xf8, 0x53, 0xf8, 0x96, 0xf9, 0xeb, 0xfb, + 0xd4, 0xfb, 0x76, 0xf9, 0x92, 0xf9, 0x42, 0xfb, 0xdd, 0xfb, 0x9c, 0xfc, 0x5d, 0xf9, 0xc4, 0xfa, + 0x0d, 0xfd, 0xbc, 0xf9, 0x51, 0xf8, 0x92, 0xf8, 0x87, 0xf8, 0xe8, 0xfc, 0xd9, 0xfc, 0x3d, 0xfb, + 0xa2, 0x00, 0x62, 0x04, 0xc7, 0x05, 0x8f, 0x05, 0xbe, 0x03, 0x50, 0x05, 0x98, 0x02, 0xd6, 0xfb, + 0x10, 0xf8, 0xe5, 0xf5, 0x6c, 0xf3, 0x27, 0xed, 0x94, 0xea, 0x39, 0xea, 0x3e, 0xe8, 0x3d, 0xe9, + 0xef, 0xe8, 0x94, 0xe7, 0x82, 0xea, 0x73, 0xf2, 0xde, 0xf4, 0x82, 0xf6, 0xed, 0xf7, 0x21, 0xf8, + 0x2e, 0xfb, 0xcd, 0xfa, 0x12, 0xf9, 0x08, 0xfc, 0xbc, 0xfe, 0x0d, 0xfe, 0x04, 0x00, 0xe0, 0x02, + 0x74, 0x06, 0x7b, 0x0a, 0xb2, 0x0a, 0xb6, 0x0c, 0x4c, 0x11, 0x49, 0x12, 0x90, 0x15, 0xba, 0x16, + 0x53, 0x14, 0x66, 0x16, 0xf2, 0x16, 0x69, 0x11, 0x32, 0x0d, 0x3f, 0x0f, 0x28, 0x0e, 0x3b, 0x07, + 0x13, 0x03, 0x0f, 0xff, 0xdb, 0xfc, 0x11, 0xf9, 0x91, 0xf7, 0xb3, 0xf5, 0x09, 0xf5, 0xcf, 0xf5, + 0x97, 0xf4, 0x9c, 0xf4, 0xb2, 0xf5, 0x8e, 0xf7, 0x43, 0xf8, 0x7d, 0xf9, 0x1f, 0xf9, 0x18, 0xfc, + 0x1e, 0xfd, 0xc1, 0xfd, 0x8e, 0x00, 0x2d, 0x01, 0x15, 0x06, 0x9c, 0x09, 0xf7, 0x06, 0xed, 0x06, + 0x5e, 0x09, 0x27, 0x0b, 0x92, 0x0b, 0x4f, 0x0c, 0xbc, 0x0d, 0x0c, 0x10, 0x03, 0x10, 0x20, 0x0c, + 0x61, 0x0b, 0xd6, 0x0a, 0x1c, 0x09, 0xad, 0x05, 0xea, 0xff, 0xb9, 0xfc, 0xab, 0xf9, 0x74, 0xf6, + 0x92, 0xf0, 0xf7, 0xed, 0xca, 0xec, 0x63, 0xec, 0xf6, 0xe9, 0x8d, 0xe7, 0xdc, 0xe7, 0xcc, 0xe8, + 0x9c, 0xe9, 0xcd, 0xe7, 0xc9, 0xea, 0x70, 0xee, 0x59, 0xee, 0xf5, 0xed, 0x13, 0xed, 0x4a, 0xed, + 0xe0, 0xf1, 0x8a, 0xf6, 0x0b, 0xfa, 0x32, 0xfe, 0xa4, 0x02, 0x89, 0x09, 0x59, 0x0f, 0xd5, 0x0f, + 0x36, 0x12, 0xe3, 0x19, 0x91, 0x19, 0xea, 0x17, 0xe6, 0x18, 0x09, 0x19, 0x56, 0x16, 0x63, 0x12, + 0xa1, 0x0d, 0x77, 0x0a, 0xcd, 0x0b, 0x8f, 0x09, 0x97, 0x03, 0xeb, 0xfd, 0x79, 0xfc, 0xcd, 0xfe, + 0x3a, 0xfd, 0xb5, 0xfd, 0x4f, 0xfd, 0x22, 0xfe, 0xbe, 0xfd, 0xed, 0xfa, 0xae, 0xfc, 0x6f, 0xfb, + 0xea, 0xfc, 0xc5, 0xfc, 0x26, 0xf9, 0x27, 0xfb, 0xc1, 0xfe, 0x89, 0x00, 0x32, 0x03, 0xfd, 0x05, + 0x1d, 0x08, 0xbc, 0x0c, 0xb8, 0x10, 0x4f, 0x11, 0xa7, 0x11, 0x52, 0x14, 0x84, 0x14, 0x20, 0x0f, + 0xed, 0x0a, 0x7c, 0x0b, 0xc0, 0x08, 0x8f, 0x04, 0x57, 0xfd, 0xaa, 0xf7, 0x95, 0xf6, 0x38, 0xf4, + 0xa9, 0xf0, 0x92, 0xeb, 0xc5, 0xeb, 0x04, 0xed, 0xc6, 0xec, 0x0e, 0xeb, 0xab, 0xeb, 0xb7, 0xed, + 0xd8, 0xec, 0x78, 0xee, 0x36, 0xf0, 0x9a, 0xf0, 0x8b, 0xf4, 0x76, 0xf6, 0x83, 0xf6, 0x4c, 0xf9, + 0x76, 0xfd, 0x1e, 0x02, 0x15, 0x04, 0xb4, 0x06, 0x7d, 0x0c, 0x29, 0x11, 0xac, 0x13, 0x8f, 0x16, + 0x94, 0x17, 0x04, 0x19, 0x52, 0x1b, 0xbe, 0x18, 0x79, 0x16, 0x61, 0x12, 0xb3, 0x10, 0x68, 0x0d, + 0x39, 0x07, 0xf9, 0x03, 0xe1, 0x01, 0x40, 0x01, 0xd0, 0xfa, 0x7e, 0xf7, 0x18, 0xf5, 0x32, 0xf2, + 0x99, 0xef, 0xf6, 0xeb, 0x89, 0xe9, 0xd5, 0xe9, 0x31, 0xea, 0x07, 0xe9, 0x90, 0xe9, 0xf3, 0xea, + 0x2d, 0xed, 0xa7, 0xec, 0xfc, 0xec, 0xf3, 0xef, 0x06, 0xf5, 0xee, 0xfa, 0xe1, 0xff, 0x70, 0x02, + 0xdf, 0x06, 0xab, 0x0b, 0x0b, 0x10, 0x13, 0x12, 0xc2, 0x14, 0x4e, 0x19, 0xfe, 0x18, 0x2e, 0x17, + 0x5b, 0x16, 0xaa, 0x13, 0x5e, 0x12, 0x3e, 0x10, 0xa3, 0x0b, 0x35, 0x07, 0xac, 0x07, 0x78, 0x05, + 0xa9, 0xff, 0x95, 0xfc, 0xea, 0xfb, 0x25, 0xfc, 0x03, 0xfb, 0x16, 0xfa, 0x61, 0xf9, 0x6a, 0xf9, + 0xb2, 0xf8, 0x8e, 0xf7, 0x9f, 0xf5, 0xe1, 0xf6, 0x30, 0xfb, 0xed, 0xf7, 0x01, 0xf6, 0xca, 0xf7, + 0xbd, 0xf7, 0x27, 0xf9, 0xd9, 0xfb, 0x7e, 0x00, 0x8b, 0x03, 0x78, 0x05, 0xc7, 0x07, 0xcd, 0x06, + 0xf4, 0x08, 0xb0, 0x0b, 0xf9, 0x0d, 0x77, 0x0d, 0x29, 0x0d, 0xef, 0x0f, 0xbb, 0x0f, 0xb4, 0x0c, + 0xa0, 0x04, 0xc0, 0xff, 0x63, 0xfd, 0xb6, 0xfa, 0x30, 0xf8, 0x7c, 0xf5, 0x35, 0xf4, 0xec, 0xf3, + 0xfb, 0xf3, 0x6a, 0xf3, 0x4d, 0xf7, 0xa3, 0xf7, 0x4a, 0xf9, 0x65, 0xfb, 0xd7, 0xf8, 0x11, 0xfb, + 0x3b, 0xff, 0xb2, 0xfc, 0xae, 0xf9, 0xb2, 0xf9, 0x1c, 0xfb, 0x7d, 0xfb, 0x77, 0xfa, 0x80, 0xfc, + 0x2f, 0xff, 0x4e, 0x03, 0xb2, 0x04, 0x08, 0x07, 0xf0, 0x09, 0xef, 0x0b, 0x2a, 0x0e, 0x57, 0x0e, + 0xd3, 0x0b, 0x50, 0x09, 0xab, 0x0b, 0xd0, 0x08, 0xeb, 0x02, 0xf3, 0xfe, 0x83, 0xfb, 0xe4, 0xf8, + 0xf9, 0xf5, 0xe6, 0xf2, 0x92, 0xf1, 0x89, 0xf2, 0x9b, 0xf1, 0xf0, 0xf0, 0x3f, 0xf1, 0x72, 0xf1, + 0xdb, 0xf3, 0x33, 0xf1, 0x09, 0xef, 0xf3, 0xf1, 0x7c, 0xf2, 0xaa, 0xf1, 0xab, 0xee, 0x22, 0xed, + 0x64, 0xec, 0x62, 0xee, 0xe2, 0xf1, 0x5b, 0xf2, 0xe8, 0xf6, 0x1a, 0xfe, 0x99, 0x01, 0xfb, 0x03, + 0x95, 0x08, 0xbb, 0x0b, 0x90, 0x0c, 0x8f, 0x0c, 0x2d, 0x0c, 0x56, 0x0d, 0xe1, 0x0d, 0x60, 0x0c, + 0xc3, 0x0a, 0x71, 0x09, 0xac, 0x08, 0xfe, 0x07, 0x2a, 0x07, 0x06, 0x07, 0x52, 0x06, 0x80, 0x07, + 0xd2, 0x09, 0x1c, 0x0c, 0xa4, 0x0a, 0x40, 0x0b, 0xc3, 0x0d, 0x27, 0x0a, 0x8f, 0x07, 0xc3, 0x09, + 0x7a, 0x0b, 0x72, 0x09, 0x4a, 0x08, 0xe8, 0x08, 0x7e, 0x06, 0xc2, 0x07, 0xe2, 0x09, 0x18, 0x0a, + 0x01, 0x0b, 0xd6, 0x0a, 0xa8, 0x0b, 0xf6, 0x0a, 0xa8, 0x0b, 0x1c, 0x0e, 0x1f, 0x11, 0x30, 0x0f, + 0x1e, 0x0d, 0xae, 0x0e, 0xfc, 0x0d, 0xe0, 0x0c, 0x8f, 0x07, 0x7b, 0x04, 0x0b, 0x01, 0x66, 0xfe, + 0x23, 0xfb, 0x04, 0xf8, 0x2a, 0xf5, 0x98, 0xef, 0x2d, 0xf0, 0x58, 0xf0, 0xd4, 0xee, 0xa6, 0xef, + 0x3c, 0xee, 0x83, 0xeb, 0xf1, 0xeb, 0x5f, 0xec, 0x22, 0xef, 0xab, 0xf1, 0xdf, 0xf1, 0x7e, 0xf1, + 0xf1, 0xf1, 0x82, 0xf1, 0x36, 0xf0, 0xf8, 0xf0, 0xc4, 0xf4, 0x85, 0xf8, 0x85, 0xf9, 0x52, 0xfb, + 0x95, 0xfc, 0x3e, 0x01, 0x1a, 0x04, 0x40, 0x05, 0x82, 0x06, 0x59, 0x09, 0xfd, 0x0c, 0xfb, 0x0c, + 0x30, 0x0c, 0x7c, 0x0b, 0xae, 0x09, 0xc6, 0x06, 0xf1, 0x02, 0x06, 0x02, 0x82, 0xff, 0x8d, 0xfd, + 0x8b, 0xfc, 0x5d, 0xf8, 0xf5, 0xf7, 0xc8, 0xfa, 0xf4, 0xf9, 0x8a, 0xf7, 0x5b, 0xfa, 0xc7, 0xfc, + 0xac, 0xfc, 0x62, 0xfd, 0x24, 0xfd, 0xf4, 0xfc, 0xd6, 0xfc, 0x0f, 0xff, 0x1c, 0xff, 0xbb, 0xfd, + 0xbd, 0x00, 0x20, 0x03, 0x77, 0x06, 0x43, 0x07, 0xa3, 0x09, 0xfe, 0x0c, 0x8f, 0x0d, 0x0c, 0x0d, + 0x3b, 0x0b, 0x3d, 0x0d, 0x76, 0x0e, 0xb1, 0x0c, 0xea, 0x09, 0x8a, 0x07, 0x51, 0x07, 0x0c, 0x03, + 0xa7, 0xfe, 0x06, 0xfc, 0x03, 0xfa, 0x53, 0xfa, 0x9d, 0xfb, 0xd3, 0xf9, 0x4f, 0xfa, 0x8b, 0xfc, + 0x6b, 0xfc, 0x02, 0xfa, 0x5b, 0xf6, 0x6c, 0xf6, 0xab, 0xf7, 0x8a, 0xf6, 0xe8, 0xf6, 0xf7, 0xf6, + 0x5a, 0xf5, 0x5d, 0xf7, 0xb2, 0xf7, 0xad, 0xf8, 0xa8, 0xfb, 0xe1, 0xfd, 0xc0, 0x00, 0x43, 0x00, + 0x2f, 0x02, 0x10, 0x06, 0xbd, 0x09, 0x38, 0x08, 0x96, 0x05, 0x86, 0x05, 0xb7, 0x05, 0xd2, 0x05, + 0x50, 0x02, 0x03, 0xff, 0xe6, 0xfd, 0x04, 0xfb, 0xba, 0xf6, 0x22, 0xf4, 0x0c, 0xf4, 0xde, 0xf4, + 0x29, 0xf5, 0xb2, 0xf3, 0x25, 0xf5, 0xf3, 0xf7, 0xe0, 0xf8, 0x90, 0xfa, 0xb6, 0xfa, 0xdb, 0xfb, + 0x1a, 0xfd, 0x65, 0xff, 0x5b, 0x01, 0xeb, 0x00, 0x32, 0x05, 0x0c, 0x06, 0xc6, 0x05, 0x86, 0x08, + 0x6a, 0x0c, 0xac, 0x10, 0x74, 0x14, 0x2b, 0x15, 0x4c, 0x15, 0xef, 0x17, 0x12, 0x1b, 0x7e, 0x1a, + 0xe7, 0x17, 0x9b, 0x14, 0x12, 0x13, 0x50, 0x10, 0x9c, 0x0c, 0x74, 0x09, 0x5c, 0x08, 0xc5, 0x06, + 0xa2, 0x03, 0xa9, 0xff, 0xdc, 0xf9, 0xe1, 0xf8, 0x08, 0xf6, 0xe5, 0xf1, 0x22, 0xf4, 0x8a, 0xf5, + 0x91, 0xf5, 0x30, 0xf4, 0xea, 0xf4, 0x0f, 0xf3, 0x1a, 0xf0, 0xc2, 0xf2, 0xd4, 0xf1, 0xd7, 0xef, + 0x76, 0xf1, 0xa9, 0xf3, 0x04, 0xf4, 0x94, 0xf5, 0xe6, 0xf9, 0x6a, 0xfc, 0xdb, 0xff, 0xe0, 0x02, + 0x81, 0x04, 0xed, 0x05, 0x8d, 0x06, 0x5d, 0x06, 0xa2, 0x03, 0x2b, 0x03, 0x65, 0x04, 0x22, 0x05, + 0x6b, 0x04, 0xbd, 0x04, 0x2d, 0x04, 0xd2, 0x00, 0x44, 0x00, 0x97, 0xfb, 0x10, 0xfa, 0x3b, 0xfa, + 0x8e, 0xf9, 0x87, 0xf7, 0x6c, 0xf8, 0x85, 0xfd, 0x07, 0xff, 0x0a, 0x01, 0x1a, 0x04, 0x1f, 0x05, + 0x2d, 0x07, 0x74, 0x06, 0x36, 0x04, 0x71, 0x03, 0x55, 0x01, 0x3d, 0xff, 0x39, 0xff, 0x49, 0x01, + 0xe8, 0x03, 0x0e, 0x06, 0xa5, 0x05, 0x8d, 0x06, 0x16, 0x07, 0x27, 0x09, 0xcf, 0x0a, 0x20, 0x09, + 0x51, 0x07, 0x45, 0x05, 0x5b, 0x04, 0x07, 0x02, 0x9a, 0xfe, 0x07, 0xff, 0xd1, 0xfb, 0xb5, 0xf9, + 0x94, 0xf5, 0x05, 0xee, 0x99, 0xec, 0xdc, 0xea, 0xe4, 0xe8, 0x48, 0xe9, 0xc1, 0xe9, 0x60, 0xed, + 0xe2, 0xf0, 0x1f, 0xf6, 0x99, 0xfb, 0xe9, 0xfd, 0x53, 0x03, 0xa1, 0x05, 0x66, 0x01, 0x37, 0x01, + 0xbf, 0x00, 0x7c, 0xfc, 0x5e, 0xfa, 0xd5, 0xf8, 0x02, 0xfd, 0x6e, 0x00, 0x27, 0x01, 0xec, 0x06, + 0x78, 0x09, 0xb6, 0x0b, 0x84, 0x0f, 0x29, 0x0f, 0x5d, 0x0c, 0x60, 0x0a, 0x5b, 0x0b, 0x10, 0x0a, + 0x3e, 0x0a, 0x0f, 0x0b, 0x30, 0x09, 0xf7, 0x09, 0x74, 0x07, 0xa4, 0xff, 0x8e, 0xfd, 0x46, 0xfd, + 0xaa, 0xf8, 0xfe, 0xf8, 0x31, 0xf7, 0x25, 0xf8, 0xd6, 0xfa, 0xec, 0xf9, 0xf4, 0xfc, 0xea, 0xfe, + 0xf0, 0x00, 0xe1, 0x04, 0xf0, 0x01, 0xc0, 0x00, 0x51, 0x00, 0x78, 0xfe, 0x52, 0xfd, 0xa6, 0xf9, + 0xbb, 0xfc, 0x8d, 0x00, 0x32, 0x01, 0xcf, 0x03, 0xec, 0x03, 0x1f, 0x05, 0x0d, 0x09, 0x42, 0x08, + 0xa9, 0x05, 0xaf, 0x09, 0xcf, 0x08, 0x22, 0x0a, 0xac, 0x0a, 0x56, 0x0c, 0xcc, 0x0e, 0x57, 0x0d, + 0x54, 0x0f, 0x42, 0x0b, 0x4d, 0x08, 0xd6, 0x07, 0x46, 0x05, 0xb3, 0x03, 0xb4, 0xfe, 0x81, 0xfd, + 0x99, 0xff, 0xf2, 0xfd, 0x15, 0xfe, 0xcf, 0xfe, 0x70, 0xff, 0xfa, 0xff, 0x92, 0xfe, 0x42, 0xfe, + 0x2c, 0x00, 0x5e, 0xfd, 0xc2, 0xfd, 0xd5, 0xfb, 0x0c, 0xf6, 0x23, 0xf5, 0xb4, 0xf0, 0xf6, 0xee, + 0x13, 0xee, 0xd5, 0xec, 0x94, 0xf0, 0x50, 0xf1, 0x53, 0xf0, 0xda, 0xf2, 0x26, 0xf2, 0x89, 0xf3, + 0xf2, 0xf5, 0xa6, 0xf8, 0x6e, 0xfd, 0x79, 0xff, 0x2c, 0x00, 0xca, 0xff, 0x2e, 0xfc, 0xd0, 0xfb, + 0xc1, 0xf9, 0x76, 0xf8, 0xee, 0xf6, 0xba, 0xf2, 0xc9, 0xf3, 0x5e, 0xf6, 0xa7, 0xf7, 0x07, 0xfb, + 0xc4, 0xfd, 0x90, 0x01, 0x0b, 0x03, 0x1b, 0x04, 0xc3, 0x05, 0x34, 0x02, 0x38, 0x02, 0x70, 0x01, + 0x8f, 0xff, 0xf4, 0x00, 0x59, 0xff, 0x24, 0xfd, 0x2d, 0xfe, 0xce, 0xff, 0x77, 0x03, 0xbc, 0x06, + 0x18, 0x08, 0xd2, 0x0a, 0xfa, 0x0a, 0x66, 0x09, 0xcb, 0x0d, 0xf1, 0x0d, 0xbf, 0x10, 0xd6, 0x14, + 0x38, 0x17, 0x02, 0x18, 0xf9, 0x14, 0x05, 0x15, 0xe0, 0x10, 0x19, 0x0c, 0x57, 0x09, 0x35, 0x07, + 0xd5, 0x04, 0xf3, 0x01, 0xe7, 0x01, 0x75, 0x02, 0xdb, 0x01, 0x88, 0x01, 0x30, 0x00, 0x9b, 0x00, + 0x51, 0xfe, 0xa1, 0xfd, 0xc5, 0xfb, 0x26, 0xf8, 0x73, 0xf7, 0x31, 0xf6, 0x37, 0xf6, 0xd8, 0xf4, + 0x14, 0xf5, 0x73, 0xf5, 0x2a, 0xf6, 0x79, 0xf6, 0x2c, 0xf8, 0xa7, 0xfa, 0xf7, 0xfa, 0xd6, 0xfa, + 0xee, 0xfb, 0xb9, 0xfc, 0xd4, 0xfd, 0x38, 0xfe, 0x88, 0x01, 0x22, 0x04, 0x79, 0x04, 0x7e, 0x04, + 0xa8, 0x04, 0xaa, 0x02, 0x83, 0x00, 0xc4, 0x02, 0xec, 0x00, 0xb2, 0xfd, 0x15, 0xfd, 0x1c, 0xfb, + 0x3a, 0xfc, 0x9e, 0xfb, 0xae, 0xfc, 0x86, 0xfd, 0x71, 0xfc, 0x06, 0xfd, 0x56, 0xfc, 0x35, 0xfb, + 0x4f, 0xf9, 0x93, 0xf8, 0x9d, 0xf5, 0xf2, 0xf4, 0x3d, 0xf5, 0xed, 0xf6, 0xbc, 0xf8, 0x8c, 0xf9, + 0x24, 0xfb, 0xf3, 0xfb, 0xa6, 0xfd, 0x3c, 0xff, 0xa7, 0x00, 0x18, 0x01, 0x61, 0x01, 0x0a, 0x03, + 0x40, 0x03, 0xda, 0x04, 0xa8, 0x06, 0x3e, 0x09, 0xb5, 0x0b, 0x5d, 0x0a, 0xbc, 0x09, 0xb4, 0x09, + 0x79, 0x07, 0xf3, 0x06, 0x03, 0x07, 0x87, 0x05, 0x61, 0x06, 0x41, 0x06, 0x4d, 0x06, 0x4c, 0x05, + 0xfc, 0x05, 0xda, 0x06, 0xa5, 0x04, 0x2e, 0x03, 0xec, 0x01, 0x90, 0x00, 0x00, 0x01, 0x72, 0x00, + 0xdb, 0xfe, 0x93, 0xff, 0x3a, 0xff, 0x39, 0xff, 0xa0, 0xff, 0xe2, 0x00, 0xd5, 0xff, 0x0a, 0x00, + 0x16, 0x01, 0x26, 0x00, 0xa2, 0x02, 0x5d, 0x04, 0x3f, 0x05, 0x95, 0x05, 0x60, 0x05, 0xd0, 0x06, + 0x56, 0x07, 0x15, 0x05, 0xfd, 0x05, 0x25, 0x05, 0xdf, 0xff, 0xee, 0xfc, 0x5a, 0xfc, 0x53, 0xf9, + 0xdc, 0xf9, 0xe4, 0xfa, 0xfa, 0xf9, 0xb0, 0xf9, 0x41, 0xf8, 0x29, 0xf9, 0x4c, 0xf8, 0xf2, 0xf8, + 0x2a, 0xf8, 0xa9, 0xf5, 0xcc, 0xf4, 0x03, 0xf3, 0xd4, 0xf1, 0x04, 0xf0, 0x39, 0xef, 0x93, 0xed, + 0x34, 0xf0, 0xbd, 0xf3, 0x75, 0xf5, 0x6b, 0xf9, 0xea, 0xfb, 0xb6, 0xfd, 0x99, 0xff, 0x2b, 0x01, + 0x36, 0x03, 0x9d, 0x05, 0x41, 0x06, 0x42, 0x09, 0xf8, 0x09, 0x55, 0x0a, 0x40, 0x0b, 0xb4, 0x0c, + 0xc8, 0x0c, 0x53, 0x0d, 0xc0, 0x0c, 0x43, 0x0c, 0x9e, 0x0c, 0x16, 0x0b, 0xcf, 0x0b, 0x6c, 0x0c, + 0x9a, 0x0c, 0xb0, 0x0a, 0xd0, 0x08, 0x40, 0x06, 0x0a, 0x04, 0x05, 0x01, 0x74, 0xfd, 0xdc, 0xfa, + 0xca, 0xf6, 0x4f, 0xf5, 0x77, 0xf5, 0x3c, 0xf4, 0xb6, 0xf4, 0x0a, 0xf5, 0xe0, 0xf5, 0x20, 0xf7, + 0x27, 0xf8, 0x0c, 0xf9, 0xc6, 0xfa, 0xd9, 0xfb, 0xfe, 0xf9, 0xcf, 0xf9, 0xe1, 0xfa, 0xdb, 0xfa, + 0x66, 0xfb, 0x87, 0xfd, 0x92, 0xfe, 0xcc, 0xfe, 0x51, 0x00, 0xf8, 0x00, 0xe4, 0x01, 0xb3, 0x03, + 0x11, 0x05, 0x0d, 0x05, 0x5e, 0x02, 0x4a, 0x02, 0x01, 0x03, 0xf0, 0x01, 0xf7, 0xfe, 0x0b, 0xfe, + 0xe2, 0xfd, 0xeb, 0xfb, 0xb5, 0xfb, 0x5e, 0xfc, 0x22, 0xfd, 0x91, 0xfd, 0xca, 0xfd, 0x30, 0xfd, + 0x03, 0xfe, 0xa7, 0xfe, 0x51, 0xfe, 0xb8, 0x00, 0x51, 0x01, 0xb2, 0x02, 0x2f, 0x04, 0xce, 0x06, + 0xe9, 0x07, 0xe9, 0x09, 0x41, 0x0c, 0x9b, 0x0e, 0x2a, 0x10, 0x5b, 0x0f, 0x87, 0x10, 0x63, 0x11, + 0x5c, 0x11, 0xf1, 0x10, 0x55, 0x10, 0x68, 0x0d, 0xa9, 0x0c, 0x96, 0x09, 0xab, 0x06, 0x96, 0x03, + 0xa6, 0xff, 0x89, 0xfe, 0x72, 0xfd, 0xef, 0xfc, 0xa9, 0xfb, 0x46, 0xfb, 0x92, 0xf9, 0x22, 0xf7, + 0x0d, 0xf4, 0x38, 0xf1, 0x77, 0xf1, 0x11, 0xf0, 0xab, 0xef, 0xaa, 0xef, 0xf3, 0xee, 0x34, 0xef, + 0x7d, 0xf0, 0xd3, 0xf2, 0xe9, 0xf4, 0x4b, 0xf7, 0x2e, 0xfb, 0x87, 0xfe, 0x1b, 0x00, 0x0a, 0x03, + 0x48, 0x07, 0x91, 0x07, 0x5a, 0x06, 0x33, 0x08, 0xb7, 0x09, 0x34, 0x0a, 0x16, 0x08, 0xd4, 0x06, + 0xea, 0x05, 0xe5, 0x04, 0x88, 0x03, 0xc1, 0x04, 0xeb, 0x03, 0x03, 0x02, 0xf2, 0x01, 0x90, 0x00, + 0x56, 0xfe, 0xba, 0xfd, 0x8d, 0xfb, 0xb7, 0xf9, 0x96, 0xf7, 0xd5, 0xf2, 0x88, 0xf1, 0xe4, 0xef, + 0x89, 0xef, 0x9b, 0xf1, 0x2a, 0xf2, 0xba, 0xf4, 0xff, 0xf5, 0x49, 0xf7, 0xbb, 0xf8, 0x90, 0xf9, + 0x5d, 0xfb, 0xa8, 0xfe, 0xe4, 0x01, 0xe8, 0x04, 0xaf, 0x06, 0x3d, 0x07, 0x59, 0x08, 0x80, 0x07, + 0xc8, 0x08, 0x68, 0x0b, 0xe3, 0x0b, 0xa4, 0x0c, 0xcc, 0x0e, 0xd1, 0x0f, 0x50, 0x0f, 0xe6, 0x10, + 0xa4, 0x0e, 0x66, 0x0c, 0x60, 0x0c, 0x09, 0x09, 0x52, 0x09, 0x78, 0x07, 0x2a, 0x05, 0x4b, 0x03, + 0xac, 0x01, 0x16, 0x01, 0x08, 0x00, 0x8c, 0xfd, 0xc2, 0xfd, 0xd6, 0xfd, 0x21, 0xfd, 0x1e, 0xfc, + 0x12, 0xff, 0x00, 0x02, 0x93, 0xff, 0x0b, 0x01, 0xd3, 0x01, 0xd2, 0x00, 0x8e, 0xff, 0xb4, 0x00, + 0xc5, 0x00, 0x07, 0x00, 0x8d, 0x00, 0xa4, 0x01, 0xdd, 0x01, 0x8f, 0x01, 0x6f, 0x02, 0x31, 0x02, + 0x60, 0x01, 0x9d, 0xfe, 0x12, 0xfe, 0xc2, 0xfb, 0xa4, 0xf7, 0x0d, 0xf6, 0x04, 0xf4, 0x1b, 0xf0, + 0xb5, 0xef, 0xc3, 0xed, 0xe4, 0xeb, 0xe2, 0xeb, 0x84, 0xea, 0xf5, 0xea, 0x9b, 0xec, 0xa5, 0xea, + 0x09, 0xeb, 0x60, 0xee, 0x9a, 0xee, 0xe5, 0xef, 0x34, 0xf2, 0x2f, 0xf4, 0x2a, 0xf6, 0x19, 0xf7, + 0xe8, 0xf9, 0x0f, 0xfa, 0xae, 0xfb, 0xe3, 0xfd, 0x60, 0x02, 0x64, 0x03, 0xeb, 0x05, 0x29, 0x0c, + 0x9e, 0x0d, 0x7b, 0x0e, 0x31, 0x10, 0x65, 0x11, 0x0d, 0x13, 0x2f, 0x14, 0x4c, 0x14, 0xa2, 0x12, + 0x0d, 0x11, 0x93, 0x10, 0xe8, 0x0e, 0x7b, 0x0c, 0xc9, 0x0a, 0x9c, 0x0a, 0x10, 0x0b, 0xd6, 0x07, + 0xb3, 0x07, 0x1a, 0x08, 0x31, 0x05, 0xdc, 0x03, 0xf7, 0x02, 0x51, 0x02, 0x30, 0x01, 0x1d, 0xff, + 0x29, 0xfd, 0x0e, 0xfb, 0x5d, 0xfa, 0xba, 0xfc, 0xd4, 0xfa, 0x00, 0xfc, 0x79, 0xfc, 0xc9, 0xfc, + 0xf2, 0xfe, 0xd8, 0xfd, 0x1a, 0x00, 0x45, 0x00, 0xf1, 0xff, 0xe6, 0x03, 0xa0, 0x05, 0x36, 0x06, + 0xb1, 0x08, 0x20, 0x0a, 0x40, 0x09, 0x5b, 0x09, 0x0f, 0x0a, 0x37, 0x0a, 0x75, 0x09, 0x50, 0x06, + 0x63, 0x03, 0x38, 0x02, 0x94, 0x02, 0x80, 0x02, 0x57, 0x01, 0xec, 0x00, 0xa2, 0xfe, 0xff, 0xfb, + 0x05, 0xf8, 0x19, 0xf6, 0xaa, 0xf3, 0x24, 0xf3, 0x5d, 0xf4, 0x34, 0xf1, 0xbc, 0xf2, 0xef, 0xf2, + 0xc4, 0xf2, 0x15, 0xf3, 0x2d, 0xf2, 0x2f, 0xf5, 0x56, 0xf4, 0x9d, 0xf4, 0x42, 0xf5, 0xb3, 0xf4, + 0x69, 0xf3, 0x9b, 0xf3, 0x12, 0xf5, 0x58, 0xf6, 0xc7, 0xf6, 0x00, 0xfc, 0xa6, 0xff, 0xce, 0xfe, + 0x17, 0x00, 0xf6, 0x03, 0xda, 0x03, 0x60, 0x03, 0x24, 0x03, 0x94, 0x03, 0x5e, 0x04, 0x1c, 0x02, + 0xe0, 0x01, 0xf2, 0xff, 0x39, 0xff, 0xba, 0xff, 0x1c, 0x00, 0x74, 0x00, 0x39, 0x02, 0x79, 0x03, + 0x2c, 0x06, 0xd7, 0x06, 0x55, 0x08, 0xd1, 0x08, 0x90, 0x07, 0x2b, 0x06, 0x6b, 0x09, 0xd4, 0x06, + 0x72, 0x09, 0x08, 0x09, 0xc2, 0x06, 0xd2, 0x07, 0x5e, 0x08, 0xc0, 0x08, 0x19, 0x0d, 0x95, 0x0b, + 0xf9, 0x0a, 0xc7, 0x0b, 0xce, 0x0c, 0xfb, 0x0e, 0x06, 0x10, 0xff, 0x0d, 0x50, 0x10, 0x59, 0x0a, + 0x48, 0x09, 0xa6, 0x07, 0x1d, 0x01, 0x32, 0x01, 0xc0, 0xfd, 0xad, 0xfa, 0x2b, 0xfb, 0x65, 0xf6, + 0xf3, 0xfa, 0x13, 0xfa, 0x75, 0xf7, 0xe6, 0xf8, 0xe0, 0xf4, 0xb0, 0xf3, 0x39, 0xf8, 0x81, 0xf5, + 0x12, 0xf5, 0x56, 0xf5, 0x8e, 0xf2, 0xe6, 0xf1, 0x76, 0xf0, 0x7a, 0xf1, 0x47, 0xf5, 0x09, 0xf3, + 0x05, 0xf5, 0x0f, 0xf7, 0xa9, 0xf8, 0x54, 0xfa, 0xdb, 0xfb, 0xbf, 0xfd, 0x2f, 0xff, 0x83, 0xfe, + 0x5e, 0x01, 0x2d, 0x02, 0xb3, 0x00, 0xcb, 0xfe, 0x9e, 0xff, 0xea, 0xfe, 0x2b, 0x01, 0xfa, 0x02, + 0x78, 0x02, 0x8b, 0x04, 0xc3, 0x04, 0x30, 0x06, 0x64, 0x04, 0xe1, 0x02, 0x28, 0x05, 0x39, 0x03, + 0x25, 0x02, 0xde, 0x03, 0xa2, 0x04, 0xd6, 0x04, 0xa5, 0x05, 0xd8, 0x04, 0x7a, 0x08, 0x46, 0x07, + 0x9f, 0x07, 0x0a, 0x08, 0x06, 0x04, 0x79, 0x07, 0xfd, 0x04, 0x65, 0x04, 0xe9, 0x07, 0x4a, 0x03, + 0xba, 0x07, 0x80, 0x06, 0x55, 0x02, 0xcc, 0x04, 0xa5, 0x00, 0xb6, 0x01, 0xdf, 0x03, 0x5f, 0x00, + 0x11, 0x02, 0x2a, 0x01, 0x65, 0xff, 0x99, 0xff, 0xdf, 0xfc, 0x4a, 0xf9, 0x7e, 0xfa, 0x95, 0xf8, + 0x0e, 0xf7, 0x03, 0xf6, 0x7f, 0xf6, 0x1d, 0xf6, 0x0a, 0xf3, 0x24, 0xf5, 0xc2, 0xf8, 0xde, 0xf8, + 0x63, 0xfa, 0x1d, 0xfc, 0x4b, 0xfd, 0x3b, 0xff, 0x94, 0x01, 0xc8, 0x01, 0xbc, 0x02, 0xa9, 0x01, + 0xc0, 0x02, 0xd0, 0x04, 0x6b, 0x01, 0xa3, 0x02, 0x5b, 0x03, 0x78, 0x00, 0x6f, 0x04, 0x1d, 0x04, + 0x95, 0x04, 0xe6, 0x06, 0x6f, 0x07, 0x01, 0x06, 0x0f, 0x05, 0x79, 0x03, 0x37, 0x02, 0x8c, 0x00, + 0x2f, 0xff, 0x31, 0xff, 0x5d, 0xfd, 0x4d, 0xfd, 0x5d, 0xfb, 0x78, 0xf9, 0x92, 0xfd, 0xf0, 0xfc, + 0x25, 0x00, 0x0a, 0x00, 0xc4, 0xfe, 0xc1, 0x02, 0x58, 0x01, 0x12, 0x02, 0x29, 0x03, 0x36, 0x02, + 0x71, 0x04, 0x95, 0x04, 0x91, 0x03, 0x70, 0x01, 0x95, 0xff, 0x8c, 0x00, 0xd1, 0x00, 0x3d, 0x00, + 0xe5, 0x02, 0xe7, 0x04, 0x29, 0x05, 0xa1, 0x05, 0x6a, 0x05, 0x4e, 0x04, 0x30, 0x04, 0xc2, 0x01, + 0x68, 0x00, 0x32, 0x00, 0x70, 0xff, 0xc5, 0xfd, 0xc6, 0xfa, 0xdd, 0xf9, 0xcd, 0xfa, 0x48, 0xfa, + 0x29, 0xf9, 0xda, 0xfc, 0x27, 0xfc, 0xc0, 0xfa, 0x1d, 0xfc, 0xcd, 0xfb, 0xd3, 0xfd, 0xd6, 0xfd, + 0x33, 0xfe, 0xdc, 0xff, 0xe1, 0xfd, 0x27, 0xfd, 0xe1, 0xfc, 0x53, 0xfa, 0x8c, 0xfa, 0xae, 0xfa, + 0x87, 0xf9, 0x83, 0xf8, 0xe6, 0xf9, 0x5d, 0xf8, 0xc1, 0xf7, 0x5a, 0xf7, 0xb3, 0xf7, 0x64, 0xf7, + 0xa4, 0xf8, 0x1a, 0xfa, 0xf5, 0xf9, 0xe1, 0xf9, 0xf2, 0xf5, 0x05, 0xf7, 0x1a, 0xf8, 0x88, 0xf7, + 0x79, 0xf9, 0x57, 0xf8, 0x7a, 0xf9, 0x59, 0xf8, 0x9b, 0xf8, 0x2a, 0xfd, 0x8b, 0xfd, 0xc1, 0xfe, + 0xad, 0x00, 0xe7, 0x02, 0x35, 0x05, 0x5d, 0x05, 0x3e, 0x05, 0x84, 0x05, 0x28, 0x07, 0x36, 0x08, + 0xda, 0x0a, 0x43, 0x0b, 0x23, 0x0c, 0x41, 0x0e, 0x5d, 0x0c, 0x48, 0x0d, 0xaf, 0x0d, 0x0d, 0x0d, + 0x6c, 0x0d, 0x86, 0x0d, 0xbc, 0x0d, 0x01, 0x0d, 0x44, 0x0c, 0xdd, 0x0a, 0x76, 0x0c, 0x98, 0x09, + 0x19, 0x08, 0x7b, 0x09, 0x57, 0x07, 0x39, 0x06, 0x94, 0x03, 0x78, 0x04, 0x2b, 0x04, 0xe8, 0x00, + 0xa1, 0x01, 0x61, 0x00, 0x3e, 0xff, 0x28, 0xff, 0x38, 0xfd, 0xb7, 0xfa, 0xbc, 0xfa, 0x34, 0xfb, + 0xae, 0xf9, 0xda, 0xf8, 0xd4, 0xf8, 0x7b, 0xf9, 0x64, 0xf8, 0x90, 0xf8, 0xf9, 0xf8, 0x90, 0xf6, + 0x72, 0xf7, 0x10, 0xf7, 0x3a, 0xf7, 0x9f, 0xf6, 0x24, 0xf5, 0x85, 0xf6, 0xee, 0xf5, 0x46, 0xf7, + 0xf4, 0xf8, 0xa9, 0xfa, 0x8f, 0xfb, 0x72, 0xfa, 0x01, 0xfa, 0x78, 0xfb, 0xc1, 0xfc, 0x15, 0xfc, + 0x08, 0xfd, 0x77, 0xfe, 0x2b, 0xff, 0x88, 0xfe, 0x4e, 0xfa, 0xe9, 0xfa, 0x07, 0xfc, 0xd6, 0xfb, + 0xfc, 0xfd, 0xa4, 0xff, 0x11, 0x02, 0x3f, 0x06, 0x4c, 0x06, 0xf7, 0x07, 0x0f, 0x0a, 0xbf, 0x09, + 0x52, 0x09, 0x8e, 0x09, 0x78, 0x09, 0x31, 0x0a, 0x5a, 0x07, 0x37, 0x06, 0xe3, 0x06, 0xe8, 0x03, + 0x38, 0x04, 0x51, 0x06, 0x7f, 0x08, 0xb6, 0x07, 0x36, 0x07, 0x02, 0x09, 0x14, 0x09, 0x3d, 0x08, + 0x24, 0x08, 0xe4, 0x07, 0xce, 0x06, 0x83, 0x05, 0x4f, 0x02, 0x93, 0xff, 0xc8, 0xfd, 0x89, 0xfc, + 0x0d, 0xfb, 0xf2, 0xf9, 0x91, 0xf9, 0xdd, 0xf9, 0x62, 0xf9, 0x96, 0xfb, 0x79, 0xfd, 0x2e, 0xfe, + 0x52, 0xfe, 0xe6, 0xff, 0x2b, 0x02, 0x06, 0x02, 0xdc, 0x03, 0xd6, 0x02, 0x94, 0x01, 0x85, 0x03, + 0x88, 0x03, 0xfa, 0x03, 0x35, 0x05, 0xd3, 0x03, 0xc2, 0x00, 0xbf, 0x01, 0xf5, 0x01, 0xc3, 0x01, + 0x46, 0x03, 0x4e, 0x03, 0x31, 0x03, 0x11, 0x03, 0x99, 0xff, 0xf2, 0xfd, 0xce, 0xfb, 0x63, 0xf9, + 0x02, 0xf8, 0x18, 0xf7, 0x14, 0xf5, 0xb8, 0xf5, 0x19, 0xf5, 0x2b, 0xf3, 0x0f, 0xf5, 0x86, 0xf3, + 0x36, 0xf0, 0xf9, 0xef, 0x4d, 0xf1, 0xb8, 0xf2, 0x8f, 0xf1, 0xf4, 0xf1, 0x47, 0xf2, 0x51, 0xf2, + 0x75, 0xf2, 0x09, 0xf4, 0x30, 0xf7, 0xe7, 0xf7, 0x87, 0xf8, 0xc5, 0xf9, 0x8e, 0xfa, 0xa1, 0xfb, + 0x37, 0xfe, 0x88, 0x02, 0x4e, 0x03, 0x24, 0x05, 0x88, 0x06, 0x32, 0x07, 0x60, 0x09, 0x49, 0x09, + 0xa5, 0x08, 0x05, 0x0b, 0x24, 0x0b, 0x2e, 0x08, 0xb2, 0x08, 0xbc, 0x09, 0x10, 0x0a, 0x9d, 0x09, + 0xa8, 0x06, 0xf6, 0x05, 0x3d, 0x07, 0x36, 0x05, 0x72, 0x05, 0x53, 0x05, 0x0b, 0x05, 0xf3, 0x04, + 0x06, 0x06, 0xd3, 0x07, 0x23, 0x0a, 0x15, 0x0b, 0xfd, 0x08, 0x47, 0x09, 0xbb, 0x0a, 0xff, 0x09, + 0x19, 0x0a, 0x57, 0x09, 0xa4, 0x07, 0xf0, 0x05, 0x3c, 0x06, 0x8e, 0x04, 0x20, 0x03, 0x35, 0x00, + 0x05, 0xff, 0x5a, 0x00, 0xe1, 0xff, 0x30, 0xff, 0x8a, 0xfe, 0x0d, 0xfe, 0x67, 0xfd, 0xee, 0xfc, + 0x8c, 0xfb, 0xcc, 0xf7, 0xc8, 0xf6, 0x5c, 0xf4, 0xb6, 0xf0, 0x04, 0xf1, 0xbe, 0xf0, 0x6e, 0xee, + 0x72, 0xef, 0x73, 0xf2, 0xd1, 0xf2, 0x1a, 0xf6, 0x34, 0xf9, 0xee, 0xfa, 0x0d, 0xfe, 0x30, 0x00, + 0xd1, 0x03, 0x1b, 0x05, 0x56, 0x03, 0xfb, 0x04, 0x51, 0x08, 0xd7, 0x07, 0xaf, 0x07, 0x40, 0x08, + 0x51, 0x07, 0x12, 0x08, 0x00, 0x0a, 0xb3, 0x07, 0x72, 0x08, 0xcb, 0x09, 0xb8, 0x0a, 0x8b, 0x0b, + 0x91, 0x0a, 0x64, 0x0a, 0x18, 0x09, 0xe2, 0x07, 0x85, 0x07, 0x87, 0x04, 0x02, 0x01, 0xf4, 0xfe, + 0x99, 0xfc, 0xf8, 0xfa, 0x1a, 0xfa, 0x33, 0xfa, 0xb9, 0xf8, 0xfa, 0xf6, 0xa9, 0xf6, 0x47, 0xf9, + 0x9a, 0xf8, 0x14, 0xf8, 0x3c, 0xf9, 0xff, 0xf9, 0xde, 0xf9, 0x3e, 0xfa, 0x1a, 0xf9, 0xa2, 0xf6, + 0xa6, 0xf7, 0x23, 0xf8, 0x95, 0xf7, 0xcc, 0xf8, 0x2b, 0xf8, 0x63, 0xf8, 0x88, 0xfa, 0x21, 0xfb, + 0x9b, 0xfc, 0xfb, 0xfc, 0x91, 0xfb, 0x6b, 0xfc, 0xee, 0xfb, 0x08, 0xfd, 0x76, 0xfd, 0x1c, 0xfb, + 0x85, 0xfa, 0x0f, 0xfb, 0xa4, 0xfb, 0x9e, 0xfc, 0x64, 0xfd, 0x29, 0xff, 0xe1, 0xfe, 0x3b, 0x00, + 0xd8, 0x02, 0xd0, 0x03, 0x4c, 0x06, 0xef, 0x07, 0x13, 0x0b, 0x84, 0x0b, 0xea, 0x0b, 0x7d, 0x0d, + 0x03, 0x0c, 0x8e, 0x0b, 0xac, 0x0b, 0x22, 0x0a, 0xfd, 0x07, 0x5c, 0x07, 0xfb, 0x06, 0xc9, 0x06, + 0xd8, 0x05, 0x35, 0x05, 0x26, 0x03, 0x15, 0x02, 0x42, 0x03, 0x11, 0x03, 0xf5, 0x02, 0x2b, 0x03, + 0xae, 0x01, 0x88, 0x01, 0x57, 0x01, 0x30, 0xff, 0xbe, 0xff, 0x14, 0xfd, 0x7e, 0xfb, 0x13, 0xfa, + 0xef, 0xf8, 0x90, 0xf9, 0xd0, 0xfa, 0x6f, 0xfa, 0x65, 0xfa, 0xa9, 0xfb, 0xe8, 0xfb, 0xa2, 0xfb, + 0x9d, 0xfb, 0x79, 0xfa, 0x1d, 0xfb, 0x37, 0xfe, 0x23, 0xfe, 0xbe, 0xfe, 0x58, 0x00, 0xca, 0x02, + 0x95, 0x03, 0x15, 0x02, 0xb9, 0x01, 0xd2, 0x01, 0x23, 0x01, 0x31, 0x01, 0xa8, 0x00, 0x07, 0xff, + 0x2d, 0xfe, 0x55, 0x00, 0xea, 0x00, 0xb1, 0xff, 0xa6, 0x00, 0x58, 0x02, 0x9a, 0x01, 0xd1, 0x00, + 0x94, 0x01, 0x7f, 0x01, 0xc3, 0xff, 0xc8, 0xfe, 0x5d, 0xfe, 0x1c, 0xfc, 0x0f, 0xfc, 0x61, 0xfb, + 0x6a, 0xf8, 0x2e, 0xf6, 0x2d, 0xf6, 0x97, 0xf7, 0x45, 0xf7, 0x42, 0xf6, 0xbb, 0xf7, 0x9b, 0xf9, + 0x17, 0xfb, 0x98, 0xfd, 0x0f, 0xfe, 0xb6, 0xfe, 0xf6, 0x00, 0xa0, 0x01, 0xb1, 0x01, 0xa0, 0x01, + 0xcd, 0x01, 0x3f, 0x04, 0x30, 0x05, 0x9e, 0x06, 0xee, 0x08, 0xc0, 0x09, 0x4b, 0x0b, 0x28, 0x0c, + 0x97, 0x0d, 0x61, 0x0f, 0x43, 0x10, 0x6f, 0x10, 0xf7, 0x0f, 0xf2, 0x10, 0x5d, 0x0f, 0x08, 0x0d, + 0x44, 0x0a, 0x76, 0x07, 0x74, 0x05, 0x5a, 0x06, 0x47, 0x06, 0x4c, 0x04, 0xb1, 0x04, 0x63, 0x06, + 0x9b, 0x07, 0x46, 0x07, 0xda, 0x06, 0x5f, 0x06, 0x30, 0x04, 0xce, 0x02, 0xeb, 0x01, 0x12, 0x00, + 0xd0, 0xfe, 0x49, 0xfd, 0x02, 0xfc, 0x5d, 0xf8, 0x66, 0xf7, 0x67, 0xf8, 0xcf, 0xf6, 0xbe, 0xf5, + 0xd0, 0xf7, 0x39, 0xfa, 0x4c, 0xf9, 0xcf, 0xfb, 0x32, 0xfc, 0xf9, 0xfa, 0xcf, 0xfb, 0xcb, 0xfa, + 0x33, 0xf8, 0xc1, 0xf6, 0x02, 0xf5, 0x10, 0xf4, 0xfc, 0xf2, 0x85, 0xef, 0x14, 0xef, 0xd0, 0xf0, + 0xe9, 0xf0, 0x92, 0xf3, 0x1d, 0xf5, 0x6c, 0xf5, 0x58, 0xf6, 0x13, 0xf7, 0x83, 0xf7, 0xd2, 0xf7, + 0xbb, 0xf8, 0x78, 0xf8, 0x1e, 0xf9, 0x55, 0xfa, 0x9d, 0xf8, 0x05, 0xf9, 0x58, 0xfa, 0x45, 0xfa, + 0x68, 0xfa, 0x4e, 0xfd, 0x0f, 0xfe, 0xd8, 0xfd, 0xd6, 0xff, 0xc9, 0x01, 0xae, 0x03, 0xa1, 0x04, + 0x93, 0x05, 0xe3, 0x05, 0x28, 0x05, 0x38, 0x06, 0x5f, 0x07, 0x38, 0x07, 0x56, 0x06, 0xab, 0x06, + 0xb1, 0x06, 0xce, 0x07, 0xbc, 0x09, 0x80, 0x08, 0x2b, 0x06, 0x1e, 0x04, 0xfd, 0x03, 0x75, 0x03, + 0x8f, 0x02, 0x34, 0x03, 0x5a, 0x03, 0xe4, 0x03, 0xce, 0x03, 0x64, 0x03, 0x5c, 0x04, 0xdf, 0x04, + 0xfa, 0x05, 0x3c, 0x07, 0xbd, 0x07, 0xaf, 0x07, 0xf0, 0x07, 0xad, 0x06, 0x55, 0x06, 0x51, 0x07, + 0xf7, 0x06, 0xe5, 0x06, 0xb4, 0x08, 0xff, 0x06, 0x69, 0x06, 0xfb, 0x05, 0xc7, 0x05, 0x4f, 0x04, + 0x1a, 0x05, 0x48, 0x07, 0xd6, 0x08, 0xe1, 0x07, 0xe5, 0x05, 0xe8, 0x02, 0xc7, 0x01, 0xb2, 0x01, + 0x81, 0xfe, 0x3b, 0xfc, 0x56, 0xfb, 0x16, 0xfc, 0x96, 0xfb, 0x5d, 0xfa, 0xdc, 0xfb, 0x1e, 0xfc, + 0xb5, 0xfb, 0x89, 0xfc, 0x10, 0xfe, 0x1a, 0xfe, 0xfa, 0xff, 0x3d, 0xfe, 0xc1, 0xfc, 0xf8, 0xfc, + 0x31, 0xfc, 0x7a, 0xf8, 0x03, 0xf9, 0x6f, 0xf8, 0x24, 0xf9, 0xff, 0xfa, 0x00, 0xfa, 0x5a, 0xfb, + 0x6d, 0xfc, 0x2c, 0xfd, 0x82, 0xfe, 0xcc, 0xfd, 0xed, 0xfb, 0x1b, 0xfb, 0x70, 0xfa, 0xd1, 0xf8, + 0xdb, 0xf6, 0xa6, 0xf4, 0xa3, 0xf3, 0xd3, 0xf3, 0xdc, 0xf3, 0xaf, 0xf3, 0x23, 0xf5, 0x2a, 0xf8, + 0x84, 0xf9, 0xe3, 0xfc, 0x4a, 0x00, 0xd2, 0x02, 0x92, 0x06, 0x7c, 0x07, 0xef, 0x07, 0x7a, 0x0c, + 0x96, 0x0f, 0x39, 0x0f, 0xcb, 0x0d, 0xd3, 0x0e, 0x27, 0x0d, 0x8e, 0x0d, 0x93, 0x0c, 0x6c, 0x0b, + 0x5b, 0x0c, 0xfc, 0x0c, 0x10, 0x0d, 0xd2, 0x0d, 0x30, 0x0d, 0xaf, 0x0c, 0xc1, 0x0a, 0xda, 0x08, + 0xb1, 0x07, 0x09, 0x04, 0xde, 0x01, 0xd5, 0x00, 0xc6, 0xfe, 0xba, 0xfc, 0xc8, 0xfb, 0x52, 0xfb, + 0x06, 0xf9, 0xbd, 0xf6, 0xce, 0xf7, 0x59, 0xf6, 0xa5, 0xf5, 0x3f, 0xf6, 0x78, 0xf6, 0xad, 0xf5, + 0x6b, 0xf6, 0xa9, 0xf5, 0x56, 0xf3, 0x23, 0xf3, 0x4d, 0xf3, 0x1b, 0xf3, 0xd3, 0xf2, 0x0e, 0xf1, + 0x33, 0xf2, 0x35, 0xf4, 0xef, 0xf3, 0x25, 0xf6, 0x9f, 0xf5, 0x0d, 0xf7, 0x7e, 0xf6, 0x61, 0xf7, + 0x7b, 0xf6, 0x6f, 0xf7, 0x5d, 0xf7, 0xb3, 0xf5, 0x9e, 0xf6, 0x70, 0xf6, 0xc2, 0xf6, 0xda, 0xf7, + 0xd1, 0xf8, 0xd2, 0xf8, 0xcf, 0xfa, 0x05, 0xfc, 0x4d, 0xfb, 0x6d, 0xfb, 0x19, 0xfd, 0x74, 0xff, + 0x42, 0x02, 0x81, 0x03, 0x4f, 0x04, 0xd2, 0x06, 0x21, 0x05, 0xf5, 0x06, 0x01, 0x08, 0xf2, 0x06, + 0xd3, 0x07, 0x6f, 0x07, 0x66, 0x07, 0x21, 0x09, 0xcf, 0x08, 0x05, 0x08, 0x59, 0x07, 0x7c, 0x06, + 0xb7, 0x07, 0xea, 0x06, 0x59, 0x06, 0xe3, 0x05, 0x59, 0x07, 0x7e, 0x06, 0xd5, 0x05, 0xc4, 0x06, + 0xb5, 0x06, 0xa2, 0x05, 0x90, 0x04, 0x6a, 0x03, 0xa5, 0x01, 0xbc, 0x02, 0x6e, 0x01, 0xd6, 0x00, + 0x3d, 0x01, 0xb0, 0x00, 0xc7, 0xff, 0xed, 0xfd, 0x89, 0xfe, 0x40, 0xfe, 0x89, 0x00, 0xda, 0x00, + 0xf3, 0x01, 0x63, 0x03, 0x2c, 0x03, 0x5a, 0x06, 0x6b, 0x08, 0x1f, 0x0a, 0x68, 0x09, 0x89, 0x08, + 0x8d, 0x06, 0x40, 0x04, 0xcc, 0x00, 0x56, 0x01, 0x3b, 0x00, 0x5d, 0x01, 0xac, 0x01, 0x3a, 0x03, + 0x8f, 0x04, 0x14, 0x04, 0xa1, 0x05, 0x1e, 0x08, 0x7f, 0x09, 0x6a, 0x09, 0x85, 0x09, 0xae, 0x08, + 0x0c, 0x08, 0x3a, 0x07, 0xb8, 0x06, 0x29, 0x07, 0xde, 0x04, 0x46, 0x00, 0xfc, 0xfd, 0x50, 0xff, + 0x21, 0xfe, 0xfa, 0xfe, 0xfa, 0xff, 0xb4, 0x01, 0x33, 0x03, 0xd6, 0x01, 0xc6, 0x00, 0x36, 0x01, + 0xd3, 0x03, 0xe3, 0x02, 0xff, 0x00, 0xe4, 0xff, 0x59, 0x02, 0x14, 0x02, 0x9b, 0x00, 0xdc, 0xfe, + 0x23, 0xfd, 0x5e, 0xfd, 0x94, 0xfe, 0xb3, 0xff, 0xab, 0x02, 0x41, 0x05, 0x4d, 0x05, 0xf6, 0x03, + 0xae, 0x04, 0x61, 0x08, 0x5e, 0x07, 0xe0, 0x05, 0x2e, 0x05, 0xc2, 0x01, 0xf0, 0x00, 0x6e, 0xff, + 0x23, 0xfe, 0xa9, 0xff, 0x77, 0x00, 0x0f, 0x01, 0xa1, 0x01, 0x95, 0x02, 0x6e, 0x01, 0x55, 0x01, + 0x89, 0x00, 0xdb, 0xff, 0xaa, 0xfb, 0x7f, 0xf8, 0xf2, 0xf8, 0x36, 0xf7, 0xe0, 0xf2, 0x31, 0xee, + 0xe8, 0xec, 0x53, 0xed, 0x62, 0xed, 0x1d, 0xed, 0x59, 0xee, 0xfc, 0xec, 0x47, 0xec, 0xd1, 0xea, + 0x75, 0xec, 0xe4, 0xed, 0x99, 0xf0, 0x92, 0xf0, 0x0d, 0xf0, 0x69, 0xef, 0x13, 0xef, 0xc5, 0xf0, + 0xfd, 0xee, 0xa0, 0xee, 0x16, 0xef, 0x5d, 0xf0, 0xfd, 0xf0, 0xe1, 0xef, 0x3a, 0xf1, 0x24, 0xf1, + 0x1e, 0xf2, 0xd3, 0xf2, 0x7c, 0xf5, 0xb9, 0xf7, 0x54, 0xfa, 0x3a, 0xfb, 0x7f, 0xfc, 0xdc, 0xff, + 0x7c, 0x00, 0x0d, 0x03, 0x1f, 0x03, 0x44, 0x04, 0x72, 0x06, 0x5c, 0x07, 0x18, 0x06, 0x29, 0x07, + 0x90, 0x0a, 0x8d, 0x0c, 0x24, 0x0d, 0xe7, 0x0b, 0x1b, 0x0a, 0xfe, 0x08, 0xd5, 0x08, 0x91, 0x0a, + 0x66, 0x0d, 0xf7, 0x0e, 0xf0, 0x0d, 0x56, 0x0e, 0x2f, 0x10, 0x07, 0x10, 0x77, 0x10, 0x1b, 0x10, + 0x22, 0x0f, 0xf9, 0x0d, 0x06, 0x0a, 0x2d, 0x09, 0x7a, 0x06, 0x27, 0x04, 0x4a, 0x02, 0x67, 0x01, + 0x1d, 0x01, 0x6e, 0x02, 0x63, 0x04, 0x91, 0x05, 0x99, 0x09, 0x01, 0x0a, 0xe1, 0x0a, 0xc0, 0x0b, + 0xac, 0x0c, 0x9f, 0x0c, 0xf7, 0x0c, 0x27, 0x0c, 0x5d, 0x0a, 0x1a, 0x09, 0x17, 0x0b, 0xb2, 0x0a, + 0x02, 0x0a, 0x60, 0x09, 0xa7, 0x06, 0x4e, 0x04, 0x05, 0x05, 0xef, 0x07, 0x98, 0x06, 0x11, 0x05, + 0xdd, 0x02, 0x53, 0x01, 0x81, 0xff, 0x3d, 0xfd, 0xd7, 0xfb, 0x14, 0xfa, 0x55, 0xfa, 0x53, 0xf9, + 0x31, 0xf7, 0xfe, 0xf6, 0x77, 0xf7, 0x2f, 0xf8, 0x0e, 0xf9, 0x92, 0xf9, 0x8c, 0xf8, 0x21, 0xfa, + 0x6d, 0xfa, 0xf0, 0xfb, 0xb7, 0xfb, 0xcf, 0xfc, 0x14, 0xff, 0xcb, 0xfe, 0x8c, 0xfa, 0x28, 0xf8, + 0x70, 0xf9, 0xbc, 0xf9, 0x71, 0xf7, 0xdf, 0xf7, 0x7a, 0xf9, 0x18, 0xfb, 0xb3, 0xfe, 0xe3, 0xff, + 0xd0, 0xfe, 0xcb, 0xfd, 0x53, 0xfc, 0x5d, 0xf8, 0xbb, 0xf8, 0x2d, 0xf9, 0x4f, 0xf6, 0x6a, 0xf6, + 0x1a, 0xf7, 0x21, 0xf6, 0xd7, 0xf6, 0x1a, 0xf9, 0xf7, 0xfc, 0xdb, 0xfe, 0x8a, 0x01, 0xd5, 0x01, + 0xef, 0x05, 0xc3, 0x07, 0x43, 0x09, 0x99, 0x0c, 0x2e, 0x0e, 0x4e, 0x11, 0x11, 0x10, 0x49, 0x0f, + 0x6f, 0x0f, 0x7a, 0x0f, 0x51, 0x0f, 0xf2, 0x0d, 0xe3, 0x0d, 0x40, 0x0f, 0x24, 0x0f, 0x9d, 0x0e, + 0xee, 0x0b, 0x38, 0x0a, 0x6a, 0x09, 0x0b, 0x09, 0x47, 0x08, 0x53, 0x07, 0x81, 0x06, 0x71, 0x02, + 0x62, 0xfd, 0x2c, 0xf9, 0xbf, 0xf9, 0x76, 0xf9, 0x13, 0xf7, 0xb5, 0xf6, 0x33, 0xf5, 0xca, 0xf5, + 0xdc, 0xf4, 0x2a, 0xf4, 0x70, 0xf4, 0x98, 0xf6, 0x57, 0xf6, 0x44, 0xf5, 0x7b, 0xf5, 0x8e, 0xf4, + 0xec, 0xf5, 0x9e, 0xf4, 0x3b, 0xf5, 0xcb, 0xf5, 0xeb, 0xf5, 0x52, 0xf6, 0xb0, 0xf5, 0x18, 0xf6, + 0xdb, 0xf7, 0x18, 0xf8, 0xef, 0xf6, 0xc5, 0xf5, 0xe9, 0xf4, 0x65, 0xf4, 0xce, 0xf3, 0x3d, 0xf1, + 0x87, 0xf1, 0x15, 0xf1, 0x4b, 0xf1, 0x6e, 0xf4, 0xd6, 0xf4, 0x7e, 0xf5, 0x9d, 0xf5, 0x76, 0xf6, + 0xa8, 0xf8, 0xf2, 0xf9, 0xea, 0xfb, 0xb3, 0xfb, 0x07, 0xfe, 0x9d, 0x00, 0xae, 0x01, 0xe0, 0x02, + 0x6d, 0x04, 0xc1, 0x07, 0xc7, 0x06, 0x3c, 0x07, 0xf7, 0x08, 0x9c, 0x0a, 0x95, 0x0b, 0x9d, 0x0c, + 0x6d, 0x0d, 0x1d, 0x0c, 0xc8, 0x0a, 0xf7, 0x07, 0x39, 0x06, 0x93, 0x07, 0x55, 0x08, 0x3d, 0x07, + 0xc2, 0x04, 0x73, 0x03, 0xfa, 0x01, 0xb5, 0x02, 0x09, 0x02, 0xed, 0x01, 0xde, 0x01, 0x15, 0x01, + 0xd3, 0x00, 0x41, 0x01, 0x0d, 0x01, 0x9d, 0xff, 0x49, 0xfa, 0x26, 0xf7, 0xf3, 0xf7, 0x27, 0xf9, + 0x5f, 0xf9, 0xdb, 0xf7, 0xf3, 0xf9, 0xb4, 0xfa, 0xcc, 0xfd, 0x1b, 0x01, 0x2d, 0x04, 0x41, 0x07, + 0x0b, 0x0c, 0xbd, 0x0c, 0x44, 0x0c, 0x4e, 0x0e, 0xe7, 0x0d, 0x7e, 0x0c, 0x20, 0x0b, 0xaf, 0x09, + 0xd1, 0x08, 0x65, 0x07, 0xab, 0x06, 0x46, 0x06, 0x4f, 0x06, 0xb2, 0x08, 0x24, 0x09, 0x9d, 0x08, + 0x62, 0x0a, 0xb3, 0x0b, 0x10, 0x0a, 0xdb, 0x07, 0xbb, 0x06, 0x2e, 0x05, 0x3e, 0x07, 0x4e, 0x07, + 0x0e, 0x05, 0x33, 0x02, 0x83, 0xfd, 0x9e, 0xfb, 0x01, 0xf9, 0x51, 0xfa, 0xb0, 0xfa, 0xa6, 0xfc, + 0x18, 0xfd, 0x4d, 0xfe, 0xbb, 0xff, 0x1b, 0x00, 0xfa, 0xff, 0x5a, 0xff, 0x4a, 0x01, 0x3f, 0x00, + 0x9e, 0xff, 0xf5, 0xfe, 0xec, 0xfc, 0xc5, 0xfb, 0xf1, 0xf9, 0x2f, 0xfa, 0xcf, 0xfb, 0xd9, 0xfb, + 0x44, 0xfb, 0xe4, 0xfa, 0xef, 0xfd, 0x3a, 0xfd, 0x6b, 0xfc, 0x4e, 0xfd, 0xb9, 0xfd, 0x20, 0x00, + 0xa4, 0xfd, 0xe5, 0xfa, 0x65, 0xf9, 0xa1, 0xf8, 0x84, 0xf9, 0xaa, 0xfa, 0x1b, 0xfd, 0xc0, 0xfc, + 0x6b, 0xfc, 0xa4, 0xfa, 0x50, 0xfb, 0x69, 0xfe, 0x3c, 0xff, 0x97, 0xfd, 0x67, 0xfb, 0x85, 0xfb, + 0x5d, 0xfc, 0x4b, 0xff, 0xa1, 0xfe, 0x83, 0xfe, 0xe9, 0x00, 0x69, 0x00, 0x43, 0x00, 0x73, 0xff, + 0xd2, 0xff, 0x90, 0x01, 0x1a, 0x01, 0xfb, 0x00, 0xd9, 0x02, 0x7b, 0x03, 0xbf, 0x02, 0xd3, 0x03, + 0x3b, 0x05, 0x1f, 0x04, 0xf2, 0x02, 0x16, 0x02, 0x4c, 0x00, 0xaa, 0xff, 0xe7, 0xff, 0x7b, 0xff, + 0x2e, 0xfd, 0x47, 0xfc, 0x99, 0xfb, 0x66, 0xfc, 0xb2, 0xfc, 0x18, 0xfc, 0xb6, 0xf9, 0x43, 0xf8, + 0xfe, 0xf8, 0x42, 0xf8, 0xe5, 0xf9, 0xf4, 0xf9, 0x51, 0xfb, 0x1a, 0xfd, 0xc3, 0xfe, 0xff, 0x00, + 0xb9, 0x00, 0x68, 0x03, 0xa8, 0x06, 0xc5, 0x06, 0xcf, 0x07, 0xe8, 0x07, 0x2a, 0x08, 0x24, 0x08, + 0x72, 0x07, 0x92, 0x06, 0x4c, 0x06, 0xc8, 0x05, 0x8c, 0x05, 0xb5, 0x05, 0xd5, 0x06, 0x37, 0x07, + 0x68, 0x06, 0xff, 0x03, 0xb3, 0x04, 0x30, 0x03, 0x8f, 0x00, 0xb6, 0xfc, 0xa1, 0xf7, 0xea, 0xf3, + 0xd4, 0xf1, 0xd7, 0xf1, 0x45, 0xf0, 0x7d, 0xf0, 0x8b, 0xef, 0xd7, 0xed, 0x95, 0xef, 0x3a, 0xf2, + 0xb2, 0xf4, 0xdd, 0xf6, 0x54, 0xf8, 0x6e, 0xfa, 0xa9, 0xfc, 0x4d, 0xff, 0x3f, 0x00, 0x60, 0x01, + 0x0f, 0x02, 0x22, 0x03, 0xa7, 0x02, 0x4a, 0x02, 0x57, 0x02, 0x41, 0x02, 0x18, 0x03, 0x3e, 0x04, + 0xe7, 0x04, 0x40, 0x07, 0x4b, 0x09, 0x80, 0x08, 0xf1, 0x08, 0x65, 0x0a, 0x17, 0x09, 0x1c, 0x08, + 0xd2, 0x06, 0x58, 0x05, 0x54, 0x06, 0x50, 0x03, 0xfd, 0x01, 0x06, 0xff, 0x52, 0x00, 0x2e, 0x03, + 0x09, 0x05, 0xa5, 0x07, 0x7c, 0x08, 0x4a, 0x08, 0xa8, 0x07, 0x8a, 0x08, 0x1f, 0x08, 0x3c, 0x09, + 0x8a, 0x0a, 0x5d, 0x0a, 0xf6, 0x08, 0x25, 0x06, 0x7a, 0x05, 0x58, 0x05, 0xd4, 0x05, 0xd9, 0x05, + 0xab, 0x04, 0xc8, 0x04, 0xa4, 0x05, 0x4e, 0x06, 0xf2, 0x05, 0xb8, 0x05, 0xc8, 0x05, 0x20, 0x03, + 0x6b, 0xff, 0x02, 0xfc, 0xdf, 0xfa, 0x1f, 0xfa, 0x52, 0xf5, 0x38, 0xf4, 0xdd, 0xf2, 0xb3, 0xf2, + 0x64, 0xf2, 0xa8, 0xf2, 0x1c, 0xf3, 0xa8, 0xf3, 0xa8, 0xf4, 0x8d, 0xf5, 0xb1, 0xf7, 0xf4, 0xf9, + 0xcc, 0xfd, 0x2d, 0xfe, 0x5c, 0xfd, 0x3b, 0xfd, 0x51, 0xfe, 0x99, 0xff, 0xa1, 0xfe, 0x1a, 0xff, + 0xa2, 0x00, 0x6e, 0x02, 0xc3, 0x03, 0xe3, 0x04, 0xeb, 0x06, 0xc1, 0x07, 0x16, 0x07, 0x7a, 0x06, + 0x55, 0x04, 0xe7, 0x03, 0x46, 0x02, 0x1e, 0x01, 0x61, 0x00, 0x0f, 0xfe, 0xc2, 0xfd, 0xe6, 0xfc, + 0xfa, 0xfc, 0xe2, 0xfb, 0xdb, 0xfb, 0x01, 0xfb, 0x91, 0xfa, 0xc1, 0xf9, 0xa0, 0xf9, 0x50, 0xfa, + 0x13, 0xfa, 0x10, 0xfb, 0x28, 0xfa, 0x69, 0xf8, 0xb3, 0xfa, 0x0b, 0xff, 0x0a, 0x01, 0x13, 0x01, + 0x2e, 0x01, 0xb3, 0x00, 0x55, 0x03, 0x46, 0x05, 0xf9, 0x04, 0x81, 0x06, 0x2c, 0x06, 0xa6, 0x04, + 0x3d, 0x04, 0x6f, 0x03, 0x2b, 0x05, 0x9a, 0x06, 0x40, 0x04, 0x52, 0x04, 0x87, 0x05, 0xcf, 0x06, + 0xbd, 0x06, 0x82, 0x08, 0xb6, 0x07, 0x04, 0x08, 0xd2, 0x07, 0x34, 0x06, 0x49, 0x06, 0xee, 0x05, + 0xce, 0x04, 0x7a, 0x03, 0x77, 0x03, 0x83, 0x00, 0x02, 0x00, 0x84, 0xff, 0x45, 0xff, 0x59, 0xfe, + 0x89, 0xfd, 0x07, 0xfe, 0xe7, 0xfe, 0x49, 0x01, 0x0c, 0x03, 0xb6, 0x01, 0xf0, 0xfd, 0x45, 0xf9, + 0x90, 0xf8, 0xc8, 0xf6, 0x3d, 0xf4, 0xfb, 0xf3, 0xe9, 0xf2, 0x19, 0xf1, 0x73, 0xf0, 0xdd, 0xf1, + 0xb9, 0xf3, 0x49, 0xf5, 0x15, 0xf7, 0xf4, 0xf7, 0x11, 0xf9, 0xd9, 0xf8, 0x60, 0xf8, 0xdc, 0xf7, + 0xa6, 0xf6, 0x37, 0xf6, 0x3c, 0xf4, 0xc6, 0xf1, 0x5e, 0xf0, 0xc6, 0xf1, 0xee, 0xf1, 0x97, 0xf3, + 0x0c, 0xf5, 0x1a, 0xf5, 0x5a, 0xf7, 0xda, 0xfa, 0x53, 0xfc, 0x11, 0xfe, 0x6c, 0xfe, 0xa8, 0xfe, + 0xc3, 0xff, 0x4a, 0x02, 0xe3, 0x04, 0xd5, 0x03, 0x99, 0x00, 0x1c, 0xff, 0x31, 0xff, 0x5b, 0x00, + 0x37, 0x02, 0x8f, 0x03, 0xeb, 0x04, 0xe2, 0x06, 0x23, 0x08, 0x6f, 0x0a, 0x88, 0x0d, 0xf2, 0x0e, + 0xe3, 0x0f, 0x95, 0x10, 0x1e, 0x11, 0xad, 0x11, 0x93, 0x0f, 0x37, 0x0c, 0x54, 0x0b, 0xed, 0x09, + 0x8b, 0x08, 0x1b, 0x06, 0xac, 0x03, 0x42, 0x05, 0xe8, 0x05, 0x92, 0x06, 0xd7, 0x06, 0xac, 0x05, + 0x4b, 0x06, 0xec, 0x05, 0x2e, 0x03, 0x4f, 0x02, 0x5f, 0x02, 0x0b, 0xff, 0xd8, 0xfd, 0xa8, 0xfe, + 0x7f, 0x00, 0x69, 0x01, 0xd0, 0xff, 0xdf, 0xfc, 0x02, 0xfd, 0xae, 0xfe, 0x12, 0xff, 0xb4, 0xfe, + 0x12, 0xfe, 0x13, 0xfe, 0xb5, 0xfe, 0x9e, 0xff, 0xea, 0xff, 0x3d, 0x01, 0x3e, 0x01, 0xc2, 0x02, + 0x71, 0x03, 0xeb, 0x03, 0x31, 0x04, 0xaa, 0x03, 0xe9, 0x04, 0x23, 0x05, 0x4f, 0x05, 0xcc, 0x04, + 0xd0, 0x03, 0xc2, 0x03, 0x90, 0x03, 0x0d, 0x02, 0x4c, 0x00, 0xe5, 0xff, 0xfc, 0xff, 0x95, 0x00, + 0x5d, 0x02, 0xb4, 0x03, 0xa8, 0x01, 0x07, 0x00, 0xbd, 0x00, 0xc1, 0x01, 0xb5, 0x04, 0x3d, 0x05, + 0x33, 0x04, 0xe5, 0x02, 0xca, 0x03, 0x53, 0x05, 0x44, 0x04, 0xf7, 0x02, 0x6d, 0x03, 0x35, 0x02, + 0x7b, 0x02, 0xd7, 0x01, 0x1b, 0x02, 0x4c, 0x02, 0xba, 0x01, 0x8f, 0x01, 0x26, 0x01, 0xb9, 0xff, + 0xe8, 0xfc, 0x7d, 0xf9, 0xf2, 0xf6, 0x2f, 0xf7, 0x1d, 0xf6, 0x68, 0xf4, 0xfa, 0xf2, 0xbc, 0xf2, + 0xc3, 0xf4, 0xf3, 0xf7, 0x24, 0xf9, 0x30, 0xfa, 0x6d, 0xfb, 0x67, 0xfc, 0xa6, 0xfd, 0x07, 0xff, + 0xbb, 0xfe, 0xe4, 0xfe, 0x7e, 0xfe, 0x71, 0xff, 0xbe, 0x00, 0xa5, 0x00, 0x17, 0xff, 0xa2, 0xfe, + 0x8a, 0xfd, 0x0f, 0xfe, 0x00, 0xfe, 0xe9, 0xfd, 0xad, 0xff, 0xe5, 0xff, 0x4c, 0x00, 0x59, 0x00, + 0xf4, 0xfe, 0xa0, 0xfc, 0x95, 0xfb, 0xfc, 0xf8, 0xea, 0xf6, 0x56, 0xf5, 0x3c, 0xf3, 0x09, 0xf1, + 0x15, 0xf1, 0xad, 0xf2, 0xaf, 0xf3, 0x9a, 0xf4, 0xfa, 0xf4, 0xbd, 0xf6, 0xe0, 0xf9, 0xfa, 0xfc, + 0x4f, 0xff, 0x7a, 0x00, 0x84, 0x02, 0xc4, 0x05, 0x1c, 0x06, 0x8a, 0x04, 0x04, 0x03, 0x7e, 0x00, + 0x5a, 0xff, 0x78, 0x00, 0x22, 0x04, 0x2a, 0x06, 0x48, 0x06, 0xae, 0x06, 0xbe, 0x06, 0x6f, 0x07, + 0x5d, 0x07, 0x4a, 0x07, 0xcd, 0x07, 0x35, 0x08, 0x60, 0x06, 0x31, 0x05, 0x2e, 0x04, 0xa7, 0x02, + 0x0c, 0x01, 0x76, 0x01, 0x83, 0x02, 0x85, 0x02, 0x83, 0x02, 0x5c, 0x02, 0x99, 0x03, 0x7d, 0x04, + 0x3a, 0x05, 0x74, 0x05, 0x32, 0x04, 0x8d, 0x03, 0x3e, 0x05, 0x63, 0x05, 0xff, 0x03, 0x73, 0x03, + 0x75, 0x02, 0x4e, 0x02, 0xe7, 0x00, 0x21, 0xff, 0x82, 0xfe, 0xc6, 0xfd, 0xba, 0xfc, 0xcc, 0xfc, + 0x33, 0xfd, 0x15, 0xfe, 0xeb, 0xfe, 0x49, 0xfd, 0x8e, 0xfa, 0x3c, 0xf8, 0xf0, 0xf5, 0x21, 0xf3, + 0x5c, 0xf3, 0xb1, 0xf3, 0x29, 0xf4, 0xd3, 0xf3, 0x55, 0xf3, 0xba, 0xf3, 0x98, 0xf4, 0xa2, 0xf6, + 0xdb, 0xf8, 0xfe, 0xf9, 0xd6, 0xfa, 0xb1, 0xfa, 0x9d, 0xfc, 0x30, 0xfe, 0x05, 0xff, 0x41, 0xff, + 0xca, 0xfe, 0x5d, 0xff, 0xde, 0x01, 0xa3, 0x03, 0xd2, 0x04, 0xc5, 0x07, 0x57, 0x09, 0x78, 0x0a, + 0xdf, 0x0b, 0x77, 0x0d, 0xf5, 0x0d, 0x75, 0x0e, 0x1a, 0x0b, 0x6d, 0x09, 0x28, 0x0b, 0xca, 0x0c, + 0x95, 0x0c, 0x29, 0x0c, 0x2d, 0x0d, 0x5a, 0x0e, 0xd2, 0x0c, 0x69, 0x0b, 0xac, 0x0c, 0xc4, 0x0b, + 0x49, 0x09, 0xa6, 0x07, 0x3d, 0x05, 0x0f, 0x05, 0xcd, 0x06, 0x10, 0x06, 0x6a, 0x04, 0xc7, 0x04, + 0x4d, 0x05, 0x06, 0x05, 0xb0, 0x04, 0xa7, 0x05, 0x47, 0x05, 0xed, 0x04, 0x87, 0x05, 0xef, 0x04, + 0x9b, 0x04, 0x4c, 0x04, 0x4d, 0x04, 0x86, 0x02, 0x47, 0x01, 0x1b, 0xff, 0xa6, 0xfd, 0x8d, 0xfc, + 0x86, 0xfb, 0x7b, 0xf9, 0xbc, 0xf8, 0xe9, 0xf8, 0xd8, 0xf9, 0x67, 0xfb, 0x7f, 0xfb, 0x7a, 0xfd, + 0x31, 0xfd, 0x3e, 0xfd, 0x2c, 0xfd, 0xe7, 0xfc, 0x80, 0xfd, 0xdd, 0xfd, 0x02, 0xfc, 0xaf, 0xf9, + 0x17, 0xf8, 0x6a, 0xf8, 0xcd, 0xf9, 0x1c, 0xfa, 0x2c, 0xfb, 0x1d, 0xfd, 0x0e, 0xff, 0xb3, 0xff, + 0xc4, 0xff, 0xc6, 0xff, 0x59, 0xfe, 0x6f, 0xfd, 0xeb, 0xf9, 0x04, 0xf7, 0x4b, 0xf4, 0x7e, 0xf2, + 0x00, 0xf1, 0xbf, 0xef, 0xf0, 0xef, 0xe8, 0xf0, 0x0e, 0xf1, 0xde, 0xf1, 0xa8, 0xf3, 0x02, 0xf3, + 0x50, 0xf2, 0x26, 0xf1, 0x41, 0xf2, 0xab, 0xf5, 0x21, 0xf9, 0x85, 0xfa, 0xe8, 0xf9, 0xd6, 0xf7, + 0xd2, 0xf6, 0xb5, 0xf5, 0x6d, 0xf5, 0xdf, 0xf7, 0xfd, 0xf7, 0x9b, 0xf7, 0x66, 0xf9, 0xbc, 0xfc, + 0x9f, 0xff, 0xb9, 0x01, 0x23, 0x04, 0x4d, 0x06, 0x8f, 0x08, 0x95, 0x08, 0x25, 0x08, 0xab, 0x06, + 0x2c, 0x06, 0x5a, 0x05, 0x09, 0x05, 0xb0, 0x04, 0xda, 0x05, 0x6b, 0x07, 0x40, 0x07, 0x68, 0x08, + 0x83, 0x09, 0x08, 0x0b, 0x6d, 0x0b, 0xb9, 0x0b, 0x36, 0x0c, 0xc0, 0x0c, 0x58, 0x0b, 0x4a, 0x08, + 0x39, 0x06, 0x13, 0x07, 0x65, 0x08, 0x42, 0x07, 0xb9, 0x06, 0xaa, 0x05, 0xaa, 0x02, 0xc1, 0x00, + 0xa1, 0xff, 0x12, 0xfd, 0x75, 0xfc, 0x5c, 0xfb, 0x38, 0xfb, 0xe4, 0xfb, 0x58, 0xfb, 0x06, 0xfc, + 0xfc, 0xfa, 0x27, 0xfb, 0x0a, 0xfd, 0x85, 0xfe, 0x76, 0xfe, 0xed, 0xfe, 0xa1, 0xfe, 0xa8, 0xfd, + 0xff, 0xfd, 0x1b, 0xfd, 0xe4, 0xfd, 0x52, 0xfe, 0x64, 0xff, 0xee, 0xff, 0xff, 0x00, 0xe0, 0x00, + 0x73, 0x00, 0x85, 0x00, 0xbd, 0x01, 0xac, 0x03, 0xe2, 0x03, 0xa1, 0x01, 0xc6, 0x01, 0xc3, 0x04, + 0x4e, 0x06, 0x3f, 0x07, 0x40, 0x06, 0x48, 0x04, 0x2f, 0x04, 0x24, 0x03, 0xcb, 0x01, 0x57, 0x00, + 0xad, 0xfe, 0xe8, 0xfd, 0x89, 0xfc, 0x23, 0xfe, 0x7e, 0x02, 0x69, 0x04, 0xf2, 0x05, 0x46, 0x07, + 0xad, 0x08, 0x24, 0x0b, 0x6b, 0x09, 0xbe, 0x09, 0xae, 0x09, 0xce, 0x09, 0x63, 0x0a, 0xce, 0x08, + 0xa9, 0x06, 0xf3, 0x05, 0x21, 0x05, 0x27, 0x05, 0x32, 0x06, 0x4f, 0x06, 0x80, 0x05, 0x26, 0x05, + 0x20, 0x06, 0xff, 0x06, 0xd3, 0x05, 0x24, 0x03, 0xaf, 0x01, 0x11, 0x01, 0x31, 0xff, 0x13, 0xfd, + 0xc5, 0xfb, 0x54, 0xf9, 0x4e, 0xf7, 0xb7, 0xf5, 0x43, 0xf4, 0xee, 0xf5, 0x1b, 0xf7, 0x78, 0xf7, + 0x07, 0xf9, 0x1a, 0xfa, 0x61, 0xfb, 0xb5, 0xfb, 0x2a, 0xfd, 0x42, 0xff, 0x56, 0x02, 0xa3, 0x03, + 0x79, 0x02, 0xa2, 0x00, 0xb1, 0xfe, 0x8e, 0xfe, 0x65, 0xfe, 0xb8, 0xfd, 0x29, 0xfd, 0x6b, 0xfe, + 0x20, 0xff, 0xf2, 0x00, 0xa1, 0x01, 0x60, 0x01, 0xea, 0x01, 0xcf, 0x02, 0xa8, 0x02, 0xfa, 0x00, + 0xe6, 0xfe, 0x11, 0xfc, 0x4a, 0xf8, 0xb4, 0xf6, 0xa2, 0xf8, 0xbe, 0xf9, 0x49, 0xfa, 0xbc, 0xf9, + 0xe6, 0xf9, 0xcf, 0xfa, 0x76, 0xfa, 0xb2, 0xfb, 0xae, 0xfc, 0x3a, 0xfe, 0xb0, 0xff, 0x93, 0x01, + 0x99, 0x01, 0x26, 0x01, 0xf7, 0xff, 0xb6, 0xfd, 0xbb, 0xfe, 0xd0, 0xfe, 0x44, 0xfe, 0x9c, 0xfd, + 0x0e, 0xfe, 0xc9, 0xfe, 0x34, 0xff, 0x4c, 0xfe, 0xbe, 0xfc, 0xe4, 0xfc, 0x69, 0xfd, 0xcb, 0xfd, + 0xe9, 0xfc, 0x22, 0xfc, 0x6b, 0xfb, 0x98, 0xfa, 0xab, 0xfb, 0xe8, 0xfe, 0xeb, 0x00, 0x67, 0xff, + 0x80, 0xfd, 0x38, 0xfd, 0xac, 0xfd, 0x66, 0xfd, 0xce, 0xfe, 0xa9, 0xff, 0x52, 0x00, 0x5d, 0xff, + 0x58, 0xfe, 0x5b, 0xfd, 0x87, 0xfd, 0xd3, 0xfd, 0x0e, 0xfe, 0xf0, 0xfd, 0x9d, 0xfd, 0xcc, 0xfd, + 0xcf, 0xfd, 0x7d, 0xff, 0x9f, 0xff, 0x0f, 0x00, 0xe2, 0xfe, 0x1a, 0xff, 0x65, 0xff, 0x55, 0xfe, + 0x18, 0xfe, 0x05, 0xfd, 0xb9, 0xfa, 0x54, 0xf9, 0x4a, 0xfa, 0x5f, 0xfc, 0x27, 0xfe, 0x7d, 0xfe, + 0xe1, 0xfe, 0x68, 0xff, 0xf9, 0xff, 0xe5, 0x01, 0xd3, 0x02, 0x07, 0x02, 0x11, 0x01, 0xd8, 0x01, + 0x30, 0x01, 0x66, 0x02, 0x61, 0x02, 0x8f, 0x02, 0xca, 0x03, 0x03, 0x05, 0x32, 0x05, 0x1f, 0x05, + 0x9b, 0x07, 0xd3, 0x08, 0x89, 0x09, 0x14, 0x09, 0x31, 0x0a, 0x0b, 0x0a, 0x88, 0x0a, 0x55, 0x0b, + 0x52, 0x0a, 0x89, 0x09, 0x9c, 0x08, 0x3d, 0x06, 0x1a, 0x05, 0x6b, 0x06, 0x7e, 0x07, 0x26, 0x08, + 0x64, 0x08, 0xc8, 0x08, 0x05, 0x09, 0x25, 0x09, 0x64, 0x09, 0x7f, 0x09, 0xc7, 0x08, 0x2e, 0x08, + 0xca, 0x08, 0x11, 0x09, 0xf2, 0x07, 0xc4, 0x05, 0x77, 0x02, 0x83, 0x00, 0x7a, 0x00, 0x0b, 0x00, + 0x6a, 0x00, 0x63, 0x02, 0x9e, 0x02, 0x84, 0x02, 0xed, 0xff, 0x93, 0xff, 0x59, 0x00, 0x4a, 0xff, + 0x0e, 0xfc, 0x7b, 0xf8, 0xc7, 0xf5, 0xbb, 0xf2, 0x90, 0xf0, 0x63, 0xf0, 0x17, 0xf2, 0xc3, 0xf3, + 0x71, 0xf4, 0xd6, 0xf4, 0xc8, 0xf5, 0xad, 0xf7, 0xda, 0xf8, 0xa7, 0xf9, 0x75, 0xfb, 0xf8, 0xfc, + 0x01, 0xfe, 0x39, 0xff, 0xa5, 0xff, 0x70, 0xff, 0xba, 0xfe, 0xb1, 0xfe, 0x4d, 0xff, 0x45, 0x00, + 0x50, 0x01, 0x58, 0x01, 0xde, 0x00, 0xc1, 0xff, 0x4f, 0x00, 0x5d, 0x00, 0x91, 0x02, 0xf0, 0x03, + 0x98, 0x03, 0x48, 0x02, 0xa9, 0x00, 0x90, 0xfe, 0xf7, 0xfc, 0xf1, 0xfc, 0x07, 0xfd, 0x83, 0xfd, + 0x15, 0xfd, 0x71, 0xfd, 0xbc, 0xfd, 0xb4, 0xfd, 0x77, 0xfe, 0xc8, 0xff, 0x68, 0x00, 0x52, 0x01, + 0xd6, 0x03, 0x9d, 0x04, 0xa0, 0x04, 0xb4, 0x04, 0x0c, 0x03, 0x64, 0x02, 0xb5, 0x01, 0xaa, 0x01, + 0x28, 0x02, 0x53, 0x02, 0x5b, 0x03, 0x08, 0x03, 0x1d, 0x01, 0xe6, 0x01, 0x43, 0x02, 0xef, 0x01, + 0xc9, 0xfe, 0x98, 0xfb, 0x07, 0xfa, 0xa6, 0xf8, 0xd8, 0xf7, 0x35, 0xf8, 0x4e, 0xfa, 0xa5, 0xfb, + 0x32, 0xfc, 0x93, 0xfb, 0x04, 0xfc, 0x88, 0xfd, 0xa4, 0xfc, 0xd8, 0xfc, 0x6e, 0xfe, 0x0f, 0xff, + 0x69, 0xff, 0x38, 0x00, 0xce, 0x00, 0xab, 0x01, 0x9d, 0x02, 0x49, 0x02, 0xab, 0x02, 0xef, 0x02, + 0xcf, 0x02, 0xd8, 0x02, 0xf9, 0x02, 0x5c, 0x02, 0xb6, 0x01, 0xf7, 0xfe, 0xbe, 0xfc, 0xdb, 0xfc, + 0xa0, 0xfc, 0xab, 0xfa, 0x09, 0xf9, 0x76, 0xf8, 0x8f, 0xf7, 0x59, 0xf6, 0x6f, 0xf4, 0x92, 0xf4, + 0x2f, 0xf5, 0x2b, 0xf6, 0x0a, 0xf7, 0xf2, 0xf7, 0x89, 0xf8, 0xa5, 0xf9, 0xc0, 0xf9, 0xe3, 0xf9, + 0xd8, 0xfb, 0x04, 0xfc, 0xeb, 0xfb, 0x9e, 0xfb, 0x33, 0xfb, 0x80, 0xfb, 0xb2, 0xfb, 0xd2, 0xfc, + 0xde, 0xfd, 0x92, 0x00, 0x4c, 0x04, 0xd5, 0x06, 0x92, 0x08, 0xd4, 0x09, 0x3d, 0x0a, 0x1c, 0x0b, + 0xa2, 0x0b, 0xc8, 0x0b, 0x4c, 0x0a, 0xe6, 0x08, 0xef, 0x06, 0x12, 0x06, 0x8d, 0x05, 0x01, 0x05, + 0x4e, 0x06, 0xd3, 0x06, 0x03, 0x09, 0x37, 0x0a, 0xc4, 0x09, 0xca, 0x07, 0xeb, 0x07, 0x73, 0x08, + 0x08, 0x09, 0x81, 0x0a, 0xef, 0x0a, 0xc5, 0x0a, 0xc3, 0x08, 0xea, 0x05, 0x50, 0x04, 0x95, 0x03, + 0xe0, 0x02, 0xb9, 0x01, 0x73, 0x01, 0x33, 0x02, 0xb2, 0x02, 0xbe, 0x00, 0xd2, 0xff, 0x79, 0x01, + 0xfa, 0x02, 0xb3, 0x02, 0xf2, 0x00, 0x16, 0xff, 0x64, 0xfd, 0x82, 0xfb, 0x3a, 0xfa, 0x50, 0xf9, + 0x5c, 0xf9, 0x62, 0xf9, 0xa0, 0xf9, 0x8d, 0xfa, 0x37, 0xfb, 0xce, 0xfb, 0xa2, 0xfa, 0x81, 0xfb, + 0x9c, 0xfc, 0x96, 0xfd, 0xdd, 0xfd, 0x82, 0xfc, 0x19, 0xfc, 0x4e, 0xfb, 0xf4, 0xfa, 0xdf, 0xfb, + 0x5d, 0xfc, 0xba, 0xfc, 0x68, 0xfd, 0xb7, 0xfd, 0x45, 0xfe, 0xb8, 0xfe, 0xeb, 0xfd, 0x38, 0xfd, + 0x58, 0xfe, 0xcc, 0xfe, 0x44, 0xfd, 0x8a, 0xfa, 0xae, 0xf8, 0x1a, 0xf8, 0xa3, 0xf7, 0xdd, 0xf8, + 0x86, 0xfa, 0x5f, 0xfc, 0xd3, 0xfd, 0xc6, 0xfe, 0xaf, 0xff, 0x6b, 0xff, 0xcf, 0x00, 0xdd, 0x00, + 0x4b, 0x02, 0x0c, 0x04, 0x20, 0x06, 0xe9, 0x06, 0x57, 0x06, 0x60, 0x06, 0x2a, 0x07, 0x9c, 0x07, + 0xb3, 0x06, 0x9b, 0x04, 0x79, 0x02, 0xd2, 0x02, 0xf5, 0x03, 0x9f, 0x04, 0x1d, 0x05, 0x3e, 0x05, + 0x31, 0x04, 0xfc, 0x02, 0x4b, 0x01, 0x6c, 0x00, 0xec, 0xfe, 0x42, 0xfd, 0x8d, 0xfb, 0x84, 0xfb, + 0xef, 0xfb, 0x3d, 0xfd, 0x01, 0xfe, 0x1f, 0xfe, 0x16, 0x00, 0x8c, 0x00, 0xac, 0xff, 0xf9, 0xff, + 0xda, 0xff, 0x0a, 0x02, 0x34, 0x02, 0x79, 0x02, 0xec, 0x01, 0x90, 0x00, 0xa4, 0xff, 0x25, 0xff, + 0x21, 0x00, 0x29, 0x00, 0x1e, 0x00, 0xcc, 0x00, 0x85, 0x02, 0x0e, 0x04, 0x7b, 0x03, 0xfc, 0x01, + 0xd5, 0x00, 0x7b, 0x00, 0x17, 0xff, 0xc2, 0xfc, 0x54, 0xfc, 0xb2, 0xfb, 0x03, 0xfa, 0xb0, 0xf7, + 0x1b, 0xf8, 0x9a, 0xf9, 0x44, 0xfb, 0xd9, 0xfc, 0x98, 0xfe, 0xa3, 0xfe, 0x84, 0xfd, 0x0b, 0xfd, + 0xdb, 0xfc, 0x7c, 0xfe, 0xed, 0x00, 0x86, 0x02, 0xe7, 0x02, 0x2e, 0x02, 0x6d, 0x01, 0xfa, 0x00, + 0xd8, 0x00, 0xc3, 0x00, 0x27, 0x00, 0xcc, 0x00, 0xcf, 0x01, 0x32, 0x03, 0x2e, 0x04, 0x2a, 0x03, + 0x01, 0x02, 0xcf, 0x01, 0xc8, 0x03, 0x5b, 0x05, 0x29, 0x06, 0x4d, 0x03, 0xd4, 0xff, 0xff, 0xfc, + 0x68, 0xfa, 0xe2, 0xfa, 0xd5, 0xfb, 0xd8, 0xfd, 0x2d, 0xff, 0x28, 0xff, 0x72, 0xfe, 0xb1, 0xfd, + 0x34, 0xfd, 0xcb, 0xfc, 0xd1, 0xfb, 0x53, 0xfc, 0x37, 0xfd, 0x1e, 0xfe, 0x31, 0xfe, 0x41, 0xfd, + 0x93, 0xfd, 0x5f, 0xfe, 0x66, 0x00, 0xef, 0x00, 0xc1, 0x03, 0xb8, 0x05, 0xe8, 0x06, 0x7b, 0x06, + 0x43, 0x05, 0xa6, 0x05, 0x78, 0x05, 0xa1, 0x04, 0xea, 0x03, 0x7d, 0x03, 0xc9, 0x00, 0x49, 0xfe, + 0x85, 0xfd, 0x4e, 0xfe, 0xfb, 0xfe, 0x2f, 0xfe, 0x5a, 0xfe, 0x80, 0xfe, 0x44, 0xfe, 0xdf, 0xfd, + 0x20, 0xff, 0x0e, 0x00, 0x6c, 0x00, 0x92, 0x00, 0x27, 0x01, 0x91, 0x02, 0xb5, 0x03, 0xdb, 0x03, + 0x03, 0x04, 0x62, 0x05, 0x0e, 0x06, 0xf6, 0x05, 0x73, 0x05, 0x22, 0x06, 0x3b, 0x06, 0x4b, 0x07, + 0x00, 0x06, 0xed, 0x05, 0x13, 0x06, 0xe0, 0x06, 0xcc, 0x06, 0x7c, 0x05, 0xa6, 0x05, 0x4b, 0x03, + 0xad, 0xff, 0x83, 0xfe, 0xc0, 0xfe, 0x13, 0xff, 0x0e, 0xfe, 0xdd, 0xfd, 0x65, 0xfe, 0x69, 0xff, + 0xa8, 0xff, 0x7a, 0xff, 0x16, 0xfe, 0x67, 0xfc, 0x32, 0xfb, 0xf8, 0xfa, 0xaa, 0xfc, 0x7b, 0xff, + 0x17, 0x00, 0x20, 0x00, 0x86, 0xff, 0x30, 0xff, 0x9d, 0xff, 0xe6, 0xfe, 0xa4, 0xff, 0x9d, 0xff, + 0x8b, 0xfe, 0x7e, 0xfd, 0xd1, 0xfc, 0x01, 0xfc, 0x50, 0xfc, 0x84, 0xfc, 0x74, 0xfb, 0x11, 0xfb, + 0x15, 0xfa, 0x30, 0xf9, 0x77, 0xf9, 0x41, 0xfa, 0xf2, 0xfa, 0x64, 0xfb, 0x8d, 0xfb, 0x43, 0xfb, + 0x24, 0xfb, 0x54, 0xfb, 0xc5, 0xfb, 0x73, 0xfb, 0x34, 0xfb, 0xaa, 0xfc, 0x02, 0xfd, 0x07, 0xfd, + 0x66, 0xfd, 0xa8, 0xfd, 0xd3, 0xfc, 0x64, 0xfc, 0xfc, 0xfc, 0x48, 0xfe, 0x65, 0xff, 0xf4, 0xff, + 0xb2, 0x00, 0x30, 0x00, 0xa9, 0xff, 0xce, 0xff, 0xb6, 0xfe, 0x96, 0xff, 0x38, 0x01, 0x75, 0x00, + 0x57, 0xff, 0x32, 0xff, 0x24, 0xff, 0x17, 0x00, 0xf5, 0x00, 0x9c, 0x02, 0x3d, 0x04, 0x49, 0x06, + 0x0c, 0x07, 0x9e, 0x06, 0x0c, 0x07, 0x62, 0x07, 0xdb, 0x05, 0x09, 0x05, 0x73, 0x05, 0x89, 0x04, + 0x66, 0x04, 0x6e, 0x02, 0x84, 0x01, 0xdf, 0x02, 0xf6, 0x03, 0x4a, 0x04, 0xbe, 0x03, 0x12, 0x02, + 0xbf, 0x00, 0x28, 0x00, 0xbb, 0xff, 0x48, 0x00, 0x0d, 0x02, 0x16, 0x02, 0xa3, 0x01, 0x42, 0x01, + 0x42, 0x00, 0x5a, 0xff, 0x42, 0xfd, 0xf5, 0xfb, 0xda, 0xfb, 0x4c, 0xfb, 0x94, 0xfa, 0x0a, 0xfb, + 0xaa, 0xfb, 0xf4, 0xfc, 0xd6, 0xfd, 0x4c, 0xfe, 0xe9, 0xfe, 0x8e, 0xff, 0xe5, 0xff, 0xe6, 0xff, + 0xd5, 0x00, 0x6d, 0x01, 0x39, 0x00, 0xe5, 0xfe, 0x22, 0xfe, 0x2a, 0xff, 0x2d, 0xff, 0xfd, 0xfd, + 0x1e, 0xfd, 0x54, 0xfc, 0x1b, 0xfc, 0x4c, 0xfc, 0x61, 0xfc, 0xf7, 0xfb, 0x38, 0xfb, 0xeb, 0xf9, + 0x14, 0xf9, 0x0f, 0xf9, 0xf3, 0xf9, 0xec, 0xf9, 0x5e, 0xf9, 0x58, 0xf8, 0x88, 0xf8, 0x7d, 0xf8, + 0x17, 0xf8, 0xc7, 0xf8, 0xb3, 0xfa, 0x48, 0xfb, 0x6c, 0xfa, 0x3d, 0xfa, 0xdb, 0xfa, 0x94, 0xfc, + 0x03, 0xff, 0xe0, 0x00, 0x17, 0x03, 0x73, 0x04, 0x7c, 0x05, 0xc1, 0x06, 0x82, 0x08, 0x31, 0x09, + 0x76, 0x08, 0x8e, 0x07, 0xa6, 0x06, 0xb8, 0x06, 0xd8, 0x06, 0x66, 0x05, 0x28, 0x04, 0x30, 0x05, + 0xfd, 0x05, 0xb3, 0x06, 0x2a, 0x06, 0x84, 0x04, 0x1b, 0x03, 0x61, 0x01, 0x68, 0x00, 0xd9, 0x00, + 0x98, 0x01, 0xb5, 0x01, 0xeb, 0x01, 0x2f, 0x02, 0x60, 0x02, 0x3a, 0x02, 0x0d, 0x02, 0x73, 0x02, + 0xd6, 0x02, 0xa2, 0x03, 0x76, 0x04, 0x62, 0x04, 0x22, 0x04, 0xa8, 0x04, 0x7b, 0x04, 0xc6, 0x04, + 0x0e, 0x05, 0xa4, 0x05, 0xb4, 0x05, 0xa5, 0x05, 0x8c, 0x05, 0x98, 0x04, 0xf3, 0x02, 0xc6, 0x00, + 0x04, 0x00, 0xe4, 0xff, 0x49, 0x00, 0xd9, 0xfe, 0x35, 0xfd, 0x40, 0xfd, 0x75, 0xfe, 0x6d, 0xff, + 0xe4, 0x00, 0x62, 0x01, 0x0b, 0x01, 0x14, 0xff, 0x2f, 0xfd, 0xb0, 0xfc, 0x01, 0xfd, 0xc2, 0xfd, + 0xeb, 0xfd, 0xac, 0xfd, 0xb4, 0xfd, 0xa2, 0xfd, 0x9a, 0xfc, 0x9c, 0xfc, 0xfa, 0xfd, 0x1a, 0xfe, + 0x17, 0xfe, 0xfa, 0xfd, 0x21, 0xfe, 0xd4, 0xfe, 0x4a, 0xff, 0x10, 0xff, 0x48, 0xff, 0x66, 0xff, + 0x04, 0xff, 0x45, 0xff, 0xb5, 0xfe, 0xd8, 0xfe, 0x5e, 0xfe, 0x94, 0xfd, 0x35, 0xfd, 0x07, 0xfe, + 0xd7, 0xfe, 0xa7, 0xfe, 0xc4, 0xfd, 0x5f, 0xfe, 0x30, 0xff, 0x1b, 0x00, 0x3e, 0x01, 0xe6, 0x01, + 0xd0, 0x01, 0x11, 0x01, 0xbc, 0x00, 0x73, 0x00, 0x7e, 0x00, 0xbf, 0x00, 0x3c, 0x01, 0x6a, 0x01, + 0xf2, 0x01, 0x43, 0x02, 0x37, 0x02, 0x80, 0x01, 0x34, 0x01, 0xbf, 0x00, 0x90, 0xff, 0xbf, 0xfe, + 0xf8, 0xfd, 0x72, 0xfd, 0xa9, 0xfd, 0x3c, 0xfd, 0x9f, 0xfd, 0x16, 0xfd, 0xf2, 0xfc, 0xe7, 0xfc, + 0x70, 0xfd, 0xdf, 0xfd, 0xf6, 0xfd, 0x30, 0xfd, 0x7f, 0xfc, 0xe2, 0xfc, 0x3d, 0xfd, 0x8a, 0xfd, + 0x2e, 0xfd, 0x43, 0xfd, 0xe9, 0xfe, 0x83, 0x00, 0x73, 0x01, 0xa3, 0x02, 0x11, 0x03, 0x7c, 0x02, + 0x03, 0x01, 0xa1, 0x00, 0x26, 0x02, 0x46, 0x03, 0x34, 0x03, 0xff, 0x02, 0xe9, 0x02, 0x02, 0x02, + 0x06, 0x01, 0x5d, 0x00, 0xc0, 0xff, 0x83, 0xff, 0x06, 0xff, 0xc2, 0xfe, 0x00, 0xfe, 0x59, 0xfe, + 0x4a, 0xfe, 0xae, 0xfe, 0xd9, 0xff, 0x1a, 0x01, 0x2f, 0x02, 0x8e, 0x02, 0x47, 0x03, 0xed, 0x03, + 0xb4, 0x04, 0x1e, 0x05, 0x06, 0x06, 0x05, 0x07, 0x13, 0x08, 0xbe, 0x07, 0x11, 0x07, 0x3a, 0x06, + 0x7e, 0x06, 0xde, 0x06, 0x32, 0x07, 0xd4, 0x06, 0xa9, 0x05, 0x1a, 0x03, 0x17, 0x00, 0xd7, 0xfd, + 0xd1, 0xfc, 0x7b, 0xfc, 0xe3, 0xfb, 0xf7, 0xfa, 0x79, 0xfa, 0x8e, 0xf9, 0x6a, 0xf8, 0x2b, 0xf7, + 0x76, 0xf6, 0x0a, 0xf6, 0x71, 0xf6, 0x8d, 0xf5, 0x97, 0xf4, 0x57, 0xf4, 0xc5, 0xf3, 0xd0, 0xf3, + 0x96, 0xf4, 0xd0, 0xf5, 0x5f, 0xf7, 0x5f, 0xf9, 0xa6, 0xfa, 0xec, 0xfc, 0x0b, 0xff, 0x9c, 0xff, + 0x9e, 0xff, 0x62, 0x00, 0x12, 0x02, 0x3f, 0x03, 0xe4, 0x02, 0xb7, 0x02, 0x12, 0x03, 0x46, 0x03, + 0x79, 0x03, 0x20, 0x04, 0x8d, 0x04, 0x48, 0x03, 0x03, 0x01, 0x5a, 0xff, 0x47, 0xff, 0x4b, 0x00, + 0xc4, 0x00, 0xac, 0x01, 0xdc, 0x02, 0xcf, 0x03, 0x0f, 0x03, 0xe6, 0x02, 0x94, 0x03, 0x85, 0x04, + 0xca, 0x05, 0x23, 0x05, 0x69, 0x05, 0xb3, 0x05, 0x6a, 0x05, 0xde, 0x05, 0x9f, 0x06, 0x08, 0x07, + 0x96, 0x07, 0x78, 0x07, 0x94, 0x07, 0x69, 0x08, 0x9f, 0x08, 0x1b, 0x08, 0x21, 0x07, 0x43, 0x06, + 0x32, 0x06, 0xe5, 0x05, 0x4c, 0x04, 0x7c, 0x02, 0xb3, 0x00, 0x60, 0xff, 0xd8, 0xfe, 0xfa, 0xfe, + 0x75, 0xff, 0x53, 0xff, 0x12, 0xfe, 0x09, 0xfc, 0x39, 0xfb, 0x7b, 0xfa, 0x1b, 0xfa, 0x4b, 0xfa, + 0x27, 0xfa, 0x89, 0xfa, 0x86, 0xfa, 0x0d, 0xfb, 0x49, 0xfb, 0x42, 0xfc, 0x16, 0xfd, 0xc4, 0xfd, + 0x9e, 0xfd, 0xbb, 0xfd, 0x60, 0xfe, 0x46, 0xfe, 0xde, 0xfd, 0xbe, 0xfe, 0x87, 0xff, 0x17, 0x00, + 0xb9, 0x00, 0x90, 0x01, 0x1c, 0x02, 0xcb, 0x00, 0xe6, 0xfe, 0x51, 0xfe, 0xe8, 0xfe, 0x93, 0xfe, + 0x56, 0xfd, 0x97, 0xfb, 0x66, 0xfa, 0xc2, 0xf9, 0x3c, 0xf9, 0xbe, 0xf9, 0xe4, 0xfa, 0x2d, 0xfb, + 0x1f, 0xfa, 0x0a, 0xf9, 0x0c, 0xf9, 0xa7, 0xf9, 0xbb, 0xfa, 0xf9, 0xfb, 0xb4, 0xfd, 0x5d, 0xfe, + 0x07, 0xff, 0x26, 0xff, 0x57, 0xff, 0x71, 0x00, 0x91, 0x01, 0x90, 0x01, 0x87, 0x01, 0xc0, 0x01, + 0xd1, 0x01, 0x57, 0x02, 0xc5, 0x02, 0x9b, 0x03, 0xde, 0x03, 0xe4, 0x03, 0x6e, 0x04, 0x21, 0x05, + 0xe5, 0x05, 0xe5, 0x05, 0x06, 0x05, 0x45, 0x04, 0x68, 0x04, 0x99, 0x04, 0xf0, 0x03, 0xfe, 0x02, + 0x49, 0x02, 0x01, 0x02, 0xd3, 0x01, 0x32, 0x02, 0xac, 0x03, 0xd8, 0x04, 0xb6, 0x04, 0x51, 0x04, + 0x9d, 0x03, 0x94, 0x04, 0x6f, 0x05, 0x59, 0x06, 0xcb, 0x06, 0x00, 0x07, 0xa5, 0x06, 0x57, 0x05, + 0x71, 0x04, 0xba, 0x03, 0x3e, 0x03, 0x2d, 0x02, 0xd0, 0x00, 0x65, 0xff, 0x3c, 0xfe, 0x10, 0xfd, + 0x13, 0xfc, 0x4e, 0xfb, 0xf9, 0xfa, 0x6f, 0xfa, 0xff, 0xf9, 0x50, 0xfa, 0x04, 0xfb, 0xec, 0xfa, + 0xd7, 0xf9, 0x51, 0xf9, 0xcf, 0xf9, 0x34, 0xfa, 0xfa, 0xf9, 0x56, 0xf9, 0x8b, 0xf9, 0xdf, 0xf9, + 0x23, 0xfb, 0x06, 0xfc, 0xc4, 0xfd, 0x27, 0xff, 0x24, 0xff, 0x74, 0xfe, 0x34, 0xfe, 0x6e, 0xfe, + 0x9a, 0xfe, 0x8b, 0xff, 0xd5, 0xff, 0xc6, 0x00, 0x9b, 0x00, 0x45, 0xff, 0x2e, 0xfe, 0xf8, 0xfd, + 0xc9, 0xfd, 0xe0, 0xfd, 0x83, 0xfd, 0x40, 0xfd, 0x35, 0xfd, 0xc9, 0xfc, 0xa2, 0xfc, 0xef, 0xfc, + 0xd8, 0xfd, 0xe2, 0xfe, 0x9e, 0xff, 0xa5, 0x00, 0xd8, 0x01, 0x7c, 0x02, 0xec, 0x01, 0x4d, 0x02, + 0x63, 0x03, 0xa6, 0x04, 0x98, 0x05, 0xbe, 0x05, 0x93, 0x05, 0xd9, 0x05, 0xef, 0x05, 0x14, 0x06, + 0xab, 0x06, 0x82, 0x07, 0x25, 0x07, 0x8b, 0x05, 0x3b, 0x04, 0xc0, 0x02, 0x8a, 0x01, 0xaf, 0x00, + 0x77, 0x00, 0xba, 0xff, 0x08, 0xff, 0xfe, 0xfd, 0xda, 0xfc, 0x4d, 0xfc, 0xf1, 0xfb, 0x66, 0xfb, + 0xc9, 0xfa, 0x42, 0xfa, 0x20, 0xfa, 0xbf, 0xf9, 0x94, 0xf9, 0x28, 0xfa, 0x4b, 0xfb, 0x2e, 0xfc, + 0xcb, 0xfc, 0xe5, 0xfd, 0x7d, 0xff, 0x86, 0x00, 0xee, 0x00, 0xaa, 0x00, 0x09, 0x01, 0xec, 0x01, + 0x2f, 0x02, 0x65, 0x01, 0x07, 0x01, 0xef, 0x00, 0xd4, 0x00, 0x75, 0x01, 0x67, 0x02, 0x60, 0x03, + 0x11, 0x03, 0x0c, 0x02, 0xae, 0x00, 0xc2, 0xff, 0x7b, 0xff, 0x25, 0xff, 0xaa, 0xfe, 0xb8, 0xfe, + 0xd6, 0xfe, 0x22, 0xfe, 0x35, 0xfd, 0xd3, 0xfc, 0xec, 0xfc, 0x1a, 0xfd, 0xb0, 0xfd, 0x5f, 0xfe, + 0xb8, 0xfe, 0x87, 0xfe, 0x62, 0xfe, 0x0b, 0xff, 0x06, 0x00, 0xfa, 0x00, 0x34, 0x01, 0xba, 0x01, + 0xd1, 0x02, 0xc4, 0x03, 0xf5, 0x03, 0xca, 0x03, 0x1f, 0x04, 0x61, 0x04, 0x13, 0x04, 0x7f, 0x03, + 0x07, 0x03, 0x78, 0x02, 0x59, 0x02, 0x18, 0x02, 0xa7, 0x02, 0x80, 0x03, 0x3a, 0x03, 0x48, 0x02, + 0x65, 0x01, 0x60, 0x00, 0xfd, 0xff, 0x5a, 0xff, 0xd9, 0xfe, 0xc2, 0xff, 0x85, 0x00, 0x72, 0x00, + 0x50, 0x00, 0x3b, 0x00, 0xa7, 0x00, 0x00, 0x01, 0x38, 0x01, 0xa6, 0x01, 0x91, 0x01, 0xf5, 0x00, + 0x38, 0x00, 0xb8, 0xff, 0x8e, 0xff, 0x02, 0xff, 0xf9, 0xfd, 0xf3, 0xfd, 0xac, 0xfe, 0x85, 0xff, + 0x4e, 0xff, 0xbb, 0xfe, 0x5c, 0xfe, 0xee, 0xfe, 0x7b, 0xff, 0xe0, 0xff, 0x63, 0xff, 0xfd, 0xfe, + 0xe0, 0xfd, 0xaa, 0xfd, 0xd3, 0xfe, 0x2a, 0x00, 0x5a, 0x00, 0xf0, 0xfe, 0x8d, 0xfd, 0xbb, 0xfc, + 0xd8, 0xfc, 0x06, 0xfd, 0xc6, 0xfd, 0xd2, 0xfe, 0xb7, 0xff, 0xa1, 0xff, 0x59, 0xff, 0x5a, 0xff, + 0x20, 0x00, 0xe9, 0x00, 0xc0, 0x01, 0x2d, 0x02, 0x78, 0x02, 0x68, 0x02, 0x13, 0x02, 0x2f, 0x02, + 0xc1, 0x02, 0x8a, 0x02, 0xfa, 0x01, 0x14, 0x02, 0xf4, 0x02, 0x10, 0x04, 0x8d, 0x04, 0x2f, 0x04, + 0x7b, 0x04, 0xfc, 0x04, 0xa3, 0x05, 0x3b, 0x05, 0x5c, 0x04, 0x07, 0x04, 0x65, 0x03, 0x00, 0x03, + 0xa2, 0x03, 0x7e, 0x04, 0x28, 0x04, 0x13, 0x03, 0xad, 0x01, 0x79, 0x00, 0x1b, 0xff, 0xe2, 0xfd, + 0x7d, 0xfd, 0x7f, 0xfd, 0x3e, 0xfd, 0xc6, 0xfc, 0xeb, 0xfb, 0x32, 0xfb, 0xf9, 0xfa, 0xbb, 0xfa, + 0xba, 0xfa, 0x98, 0xfa, 0x9b, 0xf9, 0xc2, 0xf8, 0x2b, 0xf8, 0x28, 0xf8, 0x4c, 0xf8, 0x02, 0xf8, + 0x3e, 0xf7, 0xee, 0xf6, 0xd5, 0xf7, 0xd0, 0xf8, 0x10, 0xf9, 0x90, 0xf8, 0x81, 0xf9, 0x67, 0xfb, + 0x7c, 0xfc, 0x9e, 0xfc, 0xb7, 0xfc, 0xbf, 0xfd, 0xa1, 0xfd, 0x55, 0xfe, 0x8f, 0xff, 0xce, 0xff, + 0xfb, 0x00, 0x04, 0x01, 0xc2, 0xff, 0x19, 0x00, 0x03, 0x01, 0x26, 0xff, 0x53, 0xff, 0x75, 0x02, + 0x54, 0x03, 0xf8, 0x03, 0x31, 0x04, 0x19, 0x01, 0x48, 0x00, 0x11, 0x03, 0x32, 0x03, 0xda, 0x02, + 0x1a, 0x05, 0xca, 0x02, 0xc1, 0x00, 0x8a, 0x04, 0xa9, 0x05, 0xc6, 0x03, 0x26, 0x05, 0xb2, 0x03, + 0x8c, 0x02, 0xf7, 0x07, 0xa4, 0x09, 0x50, 0x07, 0x4b, 0x09, 0x0b, 0x09, 0xb8, 0x04, 0xbb, 0x06, + 0xa0, 0x07, 0x48, 0x04, 0x75, 0x04, 0x82, 0x02, 0x8e, 0xfe, 0xef, 0x00, 0xbb, 0x02, 0x3f, 0x00, + 0x90, 0x00, 0x18, 0x00, 0x64, 0xfc, 0x95, 0xfd, 0x84, 0xfd, 0x25, 0xfb, 0x26, 0xfe, 0x64, 0xfe, + 0x0a, 0xfb, 0x88, 0xfd, 0x0d, 0xfe, 0x95, 0xfa, 0xcb, 0xfc, 0x0b, 0xfd, 0x77, 0xf9, 0x4f, 0xfc, + 0x7d, 0xfc, 0xfc, 0xf9, 0x33, 0xfd, 0xdf, 0xfd, 0x4f, 0xfc, 0x3a, 0xff, 0x82, 0x01, 0x66, 0x01, + 0x0e, 0x04, 0x06, 0x05, 0x19, 0x03, 0x6c, 0x05, 0x67, 0x06, 0x8f, 0x03, 0x95, 0x04, 0x2b, 0x03, + 0x74, 0xff, 0xb2, 0xff, 0xf0, 0xfe, 0x31, 0xfd, 0xbc, 0xfe, 0x4d, 0xfd, 0x14, 0xfa, 0xfd, 0xfb, + 0x70, 0xfa, 0xcc, 0xf8, 0x81, 0xfa, 0x90, 0xfa, 0x7f, 0xfa, 0x0f, 0xfc, 0xcd, 0xfb, 0x84, 0xfa, + 0x5d, 0xfd, 0x42, 0xfe, 0xbc, 0xfd, 0xd1, 0x00, 0x40, 0x00, 0x9b, 0x00, 0xcf, 0x02, 0x8b, 0x02, + 0x47, 0x03, 0x19, 0x05, 0x96, 0x03, 0x92, 0x02, 0xd9, 0x04, 0x17, 0x05, 0xe1, 0x05, 0x16, 0x07, + 0x33, 0x06, 0x04, 0x07, 0xa0, 0x08, 0x93, 0x07, 0x3f, 0x07, 0x66, 0x06, 0x0f, 0x03, 0x37, 0x03, + 0x7f, 0x03, 0x35, 0x03, 0xd0, 0x04, 0x5c, 0x03, 0xb9, 0x01, 0xb2, 0x02, 0x44, 0x03, 0x16, 0x02, + 0x08, 0x03, 0x70, 0x03, 0x48, 0x01, 0xf4, 0x03, 0x90, 0x04, 0x9b, 0x03, 0x64, 0x05, 0x8f, 0x03, + 0xd0, 0x00, 0x16, 0x02, 0x62, 0x03, 0x40, 0x01, 0x98, 0x01, 0x23, 0x00, 0x55, 0xfd, 0x2d, 0xff, + 0xcb, 0xff, 0x74, 0xfd, 0x46, 0xfd, 0xab, 0xfc, 0x1a, 0xfa, 0x7c, 0xfa, 0xba, 0xfb, 0x64, 0xfa, + 0xfb, 0xfa, 0xe5, 0xfa, 0x45, 0xf8, 0x19, 0xf9, 0x6d, 0xf9, 0x24, 0xf7, 0x2d, 0xf7, 0x45, 0xf7, + 0xeb, 0xf6, 0x56, 0xf9, 0x76, 0xfb, 0x55, 0xfa, 0x9a, 0xfa, 0xc8, 0xfa, 0xf8, 0xf8, 0xec, 0xfa, + 0x0d, 0xfd, 0x22, 0xfc, 0x09, 0xfc, 0x46, 0xfc, 0x26, 0xfa, 0x49, 0xfb, 0x39, 0xfc, 0x1b, 0xfc, + 0x11, 0xfc, 0xae, 0xfc, 0x2d, 0xfb, 0x05, 0xfc, 0xa1, 0xfe, 0x46, 0xfd, 0xe5, 0xfd, 0x8c, 0xfe, + 0xce, 0xfc, 0x1b, 0xfe, 0x0a, 0x00, 0x2f, 0x00, 0x3a, 0x00, 0x35, 0x00, 0xa1, 0xff, 0x9e, 0x00, + 0xbd, 0x02, 0xd6, 0x02, 0x47, 0x03, 0xfb, 0x02, 0x7e, 0x01, 0x6e, 0x03, 0xbc, 0x05, 0x5e, 0x06, + 0xab, 0x07, 0xe7, 0x06, 0x3c, 0x05, 0x82, 0x05, 0x55, 0x05, 0xb7, 0x04, 0xb5, 0x04, 0x2b, 0x03, + 0x17, 0x02, 0x50, 0x02, 0x75, 0x01, 0xb0, 0x00, 0x08, 0x00, 0xc9, 0xfe, 0x6c, 0xfd, 0xb2, 0xfe, + 0x6b, 0xff, 0xf8, 0xfe, 0x4b, 0x00, 0x8e, 0xff, 0xf1, 0xfe, 0x58, 0xff, 0xce, 0xfe, 0x7d, 0xfe, + 0x0d, 0x00, 0xbc, 0xff, 0x54, 0xff, 0x9c, 0x00, 0x4b, 0x01, 0x3f, 0x02, 0x5c, 0x03, 0xa7, 0x02, + 0x16, 0x02, 0x06, 0x02, 0x05, 0x01, 0x3a, 0x02, 0xfd, 0x02, 0xe3, 0x02, 0x14, 0x03, 0xff, 0x02, + 0x32, 0x01, 0x84, 0x01, 0xc3, 0x00, 0x2d, 0xff, 0x05, 0xff, 0x62, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0x07, 0x00, 0x22, 0xff, 0x16, 0xff, 0x7d, 0xff, 0xf1, 0xfe, 0xc4, 0xfe, 0xf5, 0xfe, 0x9c, 0xfd, + 0x17, 0xfe, 0xd5, 0xff, 0x9d, 0xff, 0x2f, 0xff, 0x69, 0xff, 0x6e, 0xff, 0x8c, 0x00, 0x36, 0x01, + 0x7b, 0x02, 0x87, 0x03, 0xcf, 0x03, 0x65, 0x03, 0x10, 0x04, 0x7e, 0x05, 0x08, 0x05, 0xbd, 0x03, + 0xf8, 0x03, 0x11, 0x04, 0x78, 0x05, 0xc8, 0x05, 0xf0, 0x05, 0x73, 0x05, 0x29, 0x04, 0x0f, 0x02, + 0x3b, 0x01, 0x74, 0x01, 0x5f, 0x00, 0xdf, 0xff, 0x04, 0xff, 0x8c, 0xfe, 0x8a, 0xfe, 0xec, 0xfd, + 0x24, 0xfe, 0xc3, 0xfe, 0xc4, 0xfe, 0x0e, 0xff, 0xab, 0xfe, 0x47, 0xfe, 0x6c, 0xfe, 0xf8, 0xfe, + 0x8e, 0xfe, 0x96, 0xfd, 0x3c, 0xfd, 0x15, 0xfd, 0x38, 0xfe, 0x7f, 0xfd, 0xa8, 0xfc, 0x3f, 0xfd, + 0x12, 0xfe, 0x54, 0xfe, 0x36, 0xff, 0x93, 0x00, 0xd2, 0xff, 0xc6, 0xfe, 0x0f, 0xfe, 0x4b, 0xfd, + 0x08, 0xfe, 0xa2, 0xfe, 0xac, 0xfe, 0xdc, 0xfe, 0x6f, 0xfe, 0x3f, 0xfd, 0xdc, 0xfc, 0x62, 0xfc, + 0xb8, 0xfc, 0x6c, 0xfd, 0xc4, 0xfd, 0xc8, 0xfd, 0x30, 0xfe, 0x82, 0xfe, 0xfa, 0xfe, 0x9f, 0x00, + 0xc6, 0x00, 0xcc, 0x00, 0x60, 0x01, 0x25, 0x00, 0xfb, 0x00, 0xe6, 0x02, 0xcb, 0x01, 0x65, 0x00, + 0x4c, 0x01, 0xa0, 0x00, 0xbf, 0x01, 0xe9, 0x03, 0x15, 0x03, 0x8e, 0x02, 0x06, 0x04, 0x3c, 0x03, + 0x70, 0x03, 0xd5, 0x05, 0xe1, 0x04, 0xdf, 0x02, 0x7f, 0x02, 0x06, 0x01, 0x91, 0x00, 0x12, 0x02, + 0x0e, 0x00, 0x4e, 0xff, 0xb4, 0x00, 0xec, 0xfe, 0x08, 0xfe, 0xd9, 0xfe, 0xbc, 0xfc, 0x4d, 0xfc, + 0x3a, 0xfe, 0xde, 0xfd, 0x54, 0xfe, 0x6d, 0xff, 0x5f, 0xfc, 0x9e, 0xfb, 0x35, 0xfd, 0xb3, 0xfa, + 0x97, 0xf9, 0xa5, 0xfa, 0x5f, 0xf7, 0x43, 0xf7, 0x5a, 0xf9, 0xe6, 0xf5, 0xf3, 0xf4, 0xcd, 0xf5, + 0xda, 0xf3, 0x4f, 0xf5, 0x4f, 0xf7, 0xfc, 0xf6, 0x5c, 0xf8, 0xf0, 0xf8, 0x34, 0xf8, 0xf4, 0xf9, + 0x8b, 0xfb, 0xef, 0xfa, 0x86, 0xfb, 0x83, 0xfd, 0xfb, 0xfc, 0xd0, 0xfd, 0x73, 0xff, 0x96, 0xfe, + 0x5f, 0x00, 0xbc, 0x02, 0x29, 0x01, 0x6f, 0x02, 0x11, 0x03, 0x24, 0x01, 0xbd, 0x02, 0x76, 0x03, + 0x89, 0x02, 0xce, 0x03, 0x80, 0x03, 0x05, 0x02, 0x7d, 0x02, 0x6f, 0x02, 0xf7, 0x00, 0x46, 0x01, + 0x63, 0x01, 0x47, 0x00, 0xe4, 0x01, 0x5c, 0x02, 0x5a, 0x01, 0x94, 0x02, 0x55, 0x03, 0x5a, 0x03, + 0xe1, 0x05, 0x1d, 0x07, 0x8b, 0x07, 0x60, 0x0a, 0x12, 0x0a, 0x46, 0x0a, 0x66, 0x0b, 0xf1, 0x0a, + 0x50, 0x0b, 0x94, 0x0c, 0xc1, 0x0c, 0x7c, 0x0c, 0x04, 0x0d, 0x51, 0x0b, 0xea, 0x09, 0xe7, 0x0a, + 0xe9, 0x09, 0x10, 0x09, 0x2f, 0x09, 0xef, 0x06, 0x3a, 0x06, 0x58, 0x06, 0x97, 0x03, 0xac, 0x02, + 0x2d, 0x03, 0xeb, 0x00, 0x3c, 0x00, 0xdc, 0x00, 0x85, 0xfe, 0xd2, 0xfd, 0xc3, 0xfd, 0xa3, 0xfc, + 0xde, 0xfc, 0x7e, 0xfd, 0xc9, 0xfc, 0xa8, 0xfc, 0xe9, 0xfe, 0x35, 0xfe, 0xa2, 0xfe, 0x36, 0x00, + 0x6a, 0xff, 0x27, 0x00, 0xab, 0x01, 0x7e, 0x01, 0x4f, 0x01, 0xa4, 0x01, 0xe2, 0xff, 0x7f, 0xff, + 0x16, 0x00, 0xee, 0xff, 0x16, 0x00, 0x96, 0xff, 0xee, 0xfe, 0xc3, 0xfe, 0xff, 0xfe, 0x7e, 0xfe, + 0xea, 0xfd, 0x49, 0xfd, 0xc5, 0xfb, 0xf5, 0xfa, 0x5f, 0xfa, 0xf0, 0xf8, 0xcb, 0xf8, 0xc7, 0xf8, + 0x04, 0xf8, 0x9d, 0xf8, 0x64, 0xf9, 0xe7, 0xf8, 0x02, 0xf9, 0x93, 0xfa, 0x49, 0xfb, 0x42, 0xfc, + 0x2f, 0xfd, 0xec, 0xfd, 0x2b, 0xff, 0x51, 0x00, 0x7f, 0x01, 0xde, 0x01, 0x3c, 0x03, 0xfe, 0x02, + 0xa1, 0x02, 0x42, 0x03, 0x91, 0x02, 0x33, 0x03, 0xcf, 0x02, 0x37, 0x02, 0x36, 0x02, 0x54, 0x01, + 0x73, 0x01, 0x9b, 0x02, 0xef, 0x02, 0x53, 0x03, 0x4d, 0x04, 0x93, 0x04, 0xcf, 0x04, 0x9e, 0x05, + 0x9e, 0x05, 0x7f, 0x04, 0x91, 0x03, 0x60, 0x03, 0xc7, 0x02, 0xe3, 0x01, 0xcf, 0x01, 0x68, 0x00, + 0x04, 0x00, 0x5f, 0x00, 0x25, 0x00, 0x95, 0x00, 0x96, 0x00, 0xb5, 0xff, 0x9e, 0xfe, 0x7d, 0xfd, + 0x48, 0xfd, 0xd4, 0xfc, 0x51, 0xfc, 0x18, 0xfc, 0xe1, 0xfb, 0xc9, 0xfb, 0x31, 0xfb, 0x24, 0xfb, + 0x02, 0xfb, 0x98, 0xfa, 0xf9, 0xfa, 0x9f, 0xfa, 0x9d, 0xf9, 0xb4, 0xf9, 0xad, 0xf9, 0x30, 0xf8, + 0xbc, 0xf8, 0x8b, 0xf9, 0xd4, 0xf8, 0x92, 0xf9, 0xcb, 0xfa, 0x05, 0xfb, 0x93, 0xfb, 0xdd, 0xfb, + 0xb2, 0xfb, 0xd4, 0xfa, 0x1c, 0xfc, 0x85, 0xfc, 0x04, 0xfc, 0x68, 0xfd, 0xa0, 0xfd, 0xb9, 0xfc, + 0x42, 0xfd, 0x7c, 0xfd, 0xfd, 0xfd, 0xd0, 0xfe, 0x79, 0xfe, 0xac, 0xfe, 0x7d, 0xfd, 0x1b, 0xfd, + 0x4d, 0xfd, 0x33, 0xfc, 0x86, 0xfc, 0x0c, 0xfd, 0xec, 0xfc, 0x58, 0xfd, 0x5d, 0xfe, 0x97, 0xfe, + 0x93, 0xfe, 0xab, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0x1a, 0x01, 0x48, 0x01, 0x9b, 0x01, 0x71, 0x02, + 0x74, 0x02, 0x6f, 0x02, 0x19, 0x04, 0xb9, 0x03, 0x1e, 0x04, 0x78, 0x05, 0xd7, 0x04, 0x0d, 0x04, + 0x7c, 0x04, 0xa1, 0x04, 0x50, 0x04, 0xd1, 0x04, 0xf8, 0x04, 0x90, 0x05, 0xa4, 0x04, 0xcb, 0x04, + 0x97, 0x04, 0x0f, 0x05, 0x46, 0x05, 0x13, 0x04, 0x31, 0x05, 0x11, 0x04, 0x15, 0x03, 0xab, 0x02, + 0x47, 0x01, 0xe1, 0x00, 0x80, 0x01, 0x48, 0x01, 0x47, 0x00, 0xae, 0x01, 0x58, 0x00, 0x8b, 0x00, + 0xc6, 0x00, 0x76, 0xff, 0x4a, 0x00, 0xf8, 0x00, 0x77, 0xff, 0x8a, 0xfe, 0xc1, 0xfe, 0x23, 0xfd, + 0x31, 0xfc, 0x95, 0xfd, 0xba, 0xfd, 0xbd, 0xfc, 0x8e, 0xfd, 0x75, 0xfd, 0x96, 0xfd, 0x73, 0xfe, + 0x8f, 0xfe, 0x4d, 0xff, 0x26, 0xff, 0x5d, 0xfe, 0xfa, 0xff, 0x15, 0x01, 0xd7, 0x01, 0xce, 0x02, + 0xdb, 0x02, 0x26, 0x02, 0x2a, 0x03, 0x97, 0x03, 0xf9, 0x02, 0xdd, 0x03, 0x86, 0x04, 0xf8, 0x03, + 0xfa, 0x03, 0xcc, 0x04, 0x37, 0x04, 0xfe, 0x05, 0x4c, 0x06, 0x45, 0x05, 0x93, 0x06, 0x01, 0x07, + 0x4e, 0x05, 0x26, 0x06, 0x9b, 0x05, 0xbd, 0x03, 0x8f, 0x04, 0x30, 0x03, 0xbf, 0x00, 0x70, 0x02, + 0x53, 0x01, 0xab, 0xff, 0x8b, 0x00, 0x4a, 0x00, 0x83, 0xfe, 0x66, 0xff, 0x1b, 0x00, 0xa9, 0xfd, + 0x17, 0xff, 0x45, 0xff, 0x8c, 0xfd, 0xa2, 0xfe, 0x23, 0xff, 0xa2, 0xfe, 0xa4, 0xff, 0x02, 0xff, + 0x06, 0xfe, 0xa7, 0xfe, 0x9b, 0xfe, 0x4e, 0xfe, 0x36, 0xff, 0x44, 0xfe, 0xb8, 0xfc, 0x8a, 0xfd, + 0x34, 0xfc, 0xe7, 0xfa, 0x11, 0xfb, 0xd7, 0xf9, 0x0c, 0xf9, 0x33, 0xfa, 0x49, 0xf8, 0x9d, 0xf7, + 0x25, 0xf8, 0x47, 0xf6, 0x2b, 0xf5, 0xb0, 0xf6, 0xce, 0xf6, 0x19, 0xf6, 0xf0, 0xf8, 0xe9, 0xf8, + 0x0b, 0xf8, 0xff, 0xfa, 0xd1, 0xfb, 0x39, 0xfc, 0x71, 0xff, 0x6e, 0x00, 0xb5, 0x00, 0xe9, 0x02, + 0xcc, 0x03, 0xc0, 0x03, 0x89, 0x06, 0x0e, 0x07, 0x72, 0x06, 0xd7, 0x07, 0xd4, 0x08, 0xfc, 0x07, + 0x1b, 0x09, 0x91, 0x09, 0x2d, 0x08, 0xf5, 0x08, 0x77, 0x09, 0x62, 0x07, 0xdd, 0x06, 0x52, 0x08, + 0x82, 0x05, 0x3b, 0x04, 0x8e, 0x04, 0x28, 0x02, 0xc1, 0x00, 0x00, 0x01, 0x9e, 0xfe, 0x3f, 0xfe, + 0x0d, 0xff, 0x38, 0xfc, 0x28, 0xfc, 0x61, 0xfe, 0xb1, 0xfb, 0xd2, 0xfb, 0x07, 0xfe, 0x72, 0xfc, + 0x58, 0xfc, 0x5f, 0xfe, 0xf5, 0xfc, 0x2d, 0xfc, 0x5c, 0xfe, 0xd8, 0xfc, 0x58, 0xfc, 0x50, 0xfe, + 0xe5, 0xfc, 0xe1, 0xfb, 0x6f, 0xfc, 0xc9, 0xfa, 0x7b, 0xfa, 0xa8, 0xfa, 0x6a, 0xf8, 0x9b, 0xf8, + 0x4f, 0xf9, 0x39, 0xf8, 0x19, 0xf9, 0xcf, 0xfa, 0x84, 0xf9, 0xd2, 0xf8, 0x19, 0xf9, 0x30, 0xf8, + 0x2f, 0xf8, 0xcb, 0xf9, 0xc0, 0xf8, 0x2b, 0xf9, 0x17, 0xfa, 0x67, 0xf9, 0x84, 0xfa, 0xc1, 0xfc, + 0x6d, 0xfb, 0x35, 0xfc, 0x0f, 0xfe, 0x22, 0xfe, 0xa3, 0xfe, 0xce, 0xff, 0xd0, 0xff, 0xae, 0x00, + 0x33, 0x01, 0xf1, 0x00, 0x5d, 0x02, 0xbc, 0x02, 0xfa, 0x01, 0xcd, 0x01, 0xb7, 0x01, 0x2d, 0x01, + 0x16, 0x02, 0x0e, 0x03, 0x81, 0x01, 0x48, 0x03, 0xa0, 0x04, 0x40, 0x03, 0xe2, 0x03, 0xa6, 0x04, + 0xda, 0x03, 0x77, 0x04, 0x87, 0x04, 0x35, 0x05, 0xa9, 0x05, 0x93, 0x05, 0xd0, 0x04, 0xe3, 0x04, + 0xcc, 0x04, 0x52, 0x04, 0x69, 0x04, 0xd6, 0x03, 0x04, 0x04, 0x18, 0x04, 0x1c, 0x03, 0x2f, 0x03, + 0xbf, 0x03, 0xbc, 0x03, 0xc6, 0x03, 0x38, 0x04, 0x00, 0x04, 0x49, 0x04, 0xf9, 0x03, 0xac, 0x03, + 0x1e, 0x04, 0x29, 0x05, 0x9b, 0x04, 0x9a, 0x04, 0xda, 0x04, 0x16, 0x03, 0x3b, 0x02, 0x28, 0x02, + 0x81, 0x02, 0x23, 0x02, 0xff, 0x01, 0x84, 0x01, 0x09, 0x01, 0xdd, 0x00, 0x8b, 0xff, 0x5a, 0xfe, + 0xe2, 0xfe, 0x73, 0xfe, 0x5b, 0xfd, 0x1d, 0xfe, 0x44, 0xfe, 0x25, 0xfd, 0xdf, 0xfd, 0xac, 0xfd, + 0x94, 0xfd, 0xf1, 0xfd, 0x13, 0xfe, 0x7c, 0xfd, 0x97, 0xfd, 0x80, 0xfc, 0xd2, 0xfc, 0xd3, 0xfc, + 0x20, 0xfd, 0x53, 0xfd, 0x7a, 0xfe, 0xfa, 0xfe, 0x3c, 0xff, 0xef, 0xfe, 0x78, 0xfe, 0x01, 0xff, + 0xed, 0xfe, 0xfc, 0xfe, 0x4c, 0x00, 0xdf, 0xff, 0x6c, 0x00, 0x2b, 0x01, 0xb6, 0x00, 0x33, 0x02, + 0xc9, 0x02, 0x3e, 0x02, 0x4c, 0x03, 0x4e, 0x04, 0xc2, 0x03, 0xf9, 0x02, 0xc8, 0x03, 0xfc, 0x01, + 0x2b, 0x02, 0xab, 0x03, 0xd9, 0x02, 0x40, 0x02, 0xee, 0x03, 0xd3, 0x03, 0x55, 0x04, 0x4a, 0x05, + 0x60, 0x06, 0x25, 0x06, 0xda, 0x06, 0x66, 0x06, 0x82, 0x05, 0x2b, 0x06, 0xe3, 0x04, 0x45, 0x04, + 0x9a, 0x05, 0x60, 0x05, 0xbd, 0x05, 0x12, 0x05, 0x30, 0x04, 0xf2, 0x04, 0xc6, 0x03, 0x5a, 0x02, + 0x24, 0x03, 0xbd, 0x02, 0x80, 0x01, 0xec, 0x01, 0x43, 0x03, 0x11, 0x00, 0x8d, 0xff, 0x32, 0x01, + 0xe2, 0xfd, 0xe7, 0xfd, 0xfc, 0xfe, 0x29, 0xfc, 0x85, 0xfb, 0x19, 0xfc, 0x8e, 0xfa, 0x81, 0xfb, + 0x9e, 0xfc, 0xcd, 0xfa, 0xbd, 0xfb, 0x02, 0xfd, 0x9c, 0xfc, 0x37, 0xfd, 0xc8, 0xfe, 0xc0, 0xfd, + 0x0a, 0xfe, 0xf4, 0xfe, 0x4b, 0xff, 0x53, 0xff, 0x2d, 0x00, 0x6e, 0xfe, 0x8a, 0xfe, 0xc2, 0xfe, + 0xf3, 0xfd, 0x46, 0xff, 0x90, 0x00, 0xc1, 0xff, 0xe0, 0x00, 0x68, 0x01, 0xd1, 0x01, 0x97, 0x01, + 0x3e, 0x01, 0x04, 0x02, 0x2e, 0x02, 0x48, 0x01, 0x74, 0x01, 0xe5, 0x01, 0x1e, 0x02, 0x37, 0x00, + 0x01, 0x01, 0x6c, 0x00, 0x17, 0xfe, 0xe6, 0xfd, 0x48, 0xfe, 0x73, 0xfd, 0x06, 0xfd, 0x85, 0xfc, + 0x0d, 0xfd, 0xf2, 0xfc, 0x3f, 0xfd, 0xd2, 0xfe, 0xbc, 0xfd, 0xf9, 0xfc, 0x2b, 0xfd, 0x1e, 0xfc, + 0x9b, 0xfc, 0xf5, 0xfd, 0x1b, 0xfe, 0x5f, 0xfd, 0xcf, 0xfd, 0xd1, 0xfd, 0xac, 0xfd, 0x70, 0xfe, + 0x2c, 0xfe, 0x9c, 0xfb, 0x6f, 0xfc, 0x74, 0xfd, 0xb6, 0xfb, 0x24, 0xfb, 0xd2, 0xf9, 0x2c, 0xfa, + 0xea, 0xf9, 0x97, 0xf9, 0xe3, 0xfa, 0xff, 0xf9, 0x72, 0xf8, 0xb3, 0xf8, 0xfb, 0xf9, 0x3f, 0xfa, + 0xa0, 0xf9, 0xf9, 0xf9, 0xed, 0xfa, 0xb1, 0xfb, 0x31, 0xfb, 0xb6, 0xfa, 0xea, 0xfb, 0x10, 0xfd, + 0x6c, 0xfc, 0xd8, 0xfc, 0x73, 0xff, 0x1a, 0xfe, 0xac, 0xfb, 0x3b, 0xfc, 0x37, 0xfe, 0x10, 0xfe, + 0x7d, 0xfe, 0xb7, 0xfe, 0x7f, 0xff, 0xb5, 0xff, 0x59, 0xfe, 0xc2, 0x00, 0xd9, 0x01, 0xbf, 0xff, + 0xd4, 0x00, 0x1d, 0x03, 0x2a, 0x01, 0xef, 0xff, 0xc1, 0xff, 0xaa, 0x00, 0x44, 0x00, 0xef, 0x00, + 0x0e, 0x01, 0xa3, 0x00, 0x52, 0x01, 0xf0, 0x00, 0xf9, 0xff, 0xd5, 0x01, 0x0d, 0x02, 0xee, 0x00, + 0x1c, 0x01, 0x6c, 0x02, 0x97, 0x03, 0xc6, 0x02, 0xb5, 0x02, 0x24, 0x04, 0x4e, 0x05, 0x39, 0x05, + 0x38, 0x05, 0x48, 0x05, 0x02, 0x05, 0x5e, 0x03, 0x90, 0x02, 0xad, 0x02, 0x22, 0x03, 0x4f, 0x01, + 0x8c, 0x00, 0x89, 0x02, 0xc9, 0x01, 0x7f, 0xff, 0x99, 0xff, 0xd3, 0x00, 0x5d, 0x00, 0xe2, 0xfd, + 0x10, 0xfd, 0x6d, 0xfd, 0xb6, 0xfc, 0x46, 0xfc, 0x66, 0xfc, 0xbb, 0xfc, 0xc4, 0xfd, 0x15, 0xfe, + 0xa3, 0xfe, 0x1a, 0xff, 0x3c, 0xff, 0x76, 0xff, 0x0b, 0x00, 0xea, 0x00, 0x77, 0x01, 0xd1, 0x00, + 0x59, 0x01, 0x8d, 0x02, 0x06, 0x03, 0xc5, 0x02, 0xb2, 0x03, 0x39, 0x04, 0x12, 0x04, 0x35, 0x04, + 0x17, 0x04, 0x77, 0x03, 0x6e, 0x02, 0xc1, 0x01, 0xe6, 0x02, 0xdf, 0x03, 0xcb, 0x04, 0xe1, 0x04, + 0x0d, 0x05, 0x68, 0x05, 0xce, 0x05, 0x68, 0x07, 0x91, 0x08, 0xfd, 0x07, 0x7e, 0x07, 0xc6, 0x08, + 0x31, 0x09, 0x9f, 0x07, 0x7b, 0x07, 0x2b, 0x08, 0xda, 0x09, 0x4c, 0x0b, 0x87, 0x0a, 0x61, 0x0a, + 0x50, 0x0a, 0x10, 0x09, 0x25, 0x09, 0xf5, 0x08, 0xb3, 0x08, 0x71, 0x06, 0x82, 0x05, 0xe8, 0x04, + 0xf7, 0x03, 0x7a, 0x02, 0xc5, 0x02, 0x0a, 0x03, 0x66, 0x03, 0xd6, 0x02, 0x16, 0x02, 0x9e, 0x00, + 0xea, 0xfd, 0xd5, 0xfc, 0x2e, 0xfc, 0x23, 0xfb, 0x78, 0xfb, 0x71, 0xfa, 0x66, 0xf9, 0xfb, 0xf8, + 0x09, 0xf8, 0xa4, 0xf6, 0xc7, 0xf5, 0xa8, 0xf6, 0xe4, 0xf6, 0x8d, 0xf6, 0x92, 0xf6, 0xf1, 0xf5, + 0x58, 0xf4, 0x62, 0xf4, 0xad, 0xf5, 0x79, 0xf7, 0xf8, 0xf7, 0x94, 0xf7, 0x8e, 0xf9, 0x8a, 0xfa, + 0xd3, 0xf9, 0xcf, 0xf9, 0x06, 0xfa, 0x1b, 0xfa, 0x43, 0xfb, 0x7b, 0xfc, 0xd2, 0xfc, 0xe8, 0xfc, + 0xa1, 0xfb, 0xac, 0xfb, 0x7e, 0xfd, 0x69, 0xfe, 0xc9, 0xfe, 0x2c, 0xff, 0xb9, 0xfe, 0xf2, 0xfd, + 0xfb, 0xfd, 0x57, 0xfe, 0xc8, 0xfd, 0xf3, 0xfd, 0xa0, 0xfe, 0x00, 0xfe, 0xfb, 0xfd, 0x4f, 0xfd, + 0xb4, 0xfc, 0x09, 0xfd, 0xd1, 0xfd, 0x57, 0xfe, 0x0d, 0xff, 0xdc, 0xfe, 0xfc, 0xfd, 0x96, 0xfd, + 0xf1, 0xfd, 0x2c, 0xfe, 0xad, 0xfe, 0x40, 0xff, 0x2e, 0x00, 0x6b, 0x01, 0xe3, 0x00, 0x65, 0x00, + 0x8d, 0x01, 0x9e, 0x00, 0x8a, 0xff, 0x3b, 0x00, 0xb4, 0xff, 0x41, 0xff, 0xfa, 0xfd, 0xf2, 0xfc, + 0x53, 0xfd, 0x9b, 0xfd, 0xb5, 0xfd, 0x87, 0xfd, 0x2b, 0xfd, 0xad, 0xfc, 0xab, 0xfb, 0x81, 0xfb, + 0x9a, 0xfb, 0x2c, 0xfb, 0x2f, 0xfb, 0x76, 0xfb, 0x51, 0xfb, 0x80, 0xfa, 0xc8, 0xf9, 0xaa, 0xf9, + 0xe7, 0xfa, 0x1d, 0xfc, 0xba, 0xfc, 0x1a, 0xfd, 0xa6, 0xfd, 0x40, 0xfe, 0xba, 0xff, 0xbb, 0xff, + 0xaa, 0xfe, 0x06, 0xff, 0x44, 0x00, 0x0e, 0x01, 0xe3, 0x00, 0x97, 0x00, 0x59, 0x00, 0xcf, 0xff, + 0x48, 0xff, 0xbd, 0x00, 0xe5, 0x00, 0x0e, 0x00, 0x2f, 0x00, 0xc3, 0x00, 0x85, 0x01, 0xd5, 0x02, + 0x3e, 0x03, 0xe0, 0x01, 0xaf, 0x01, 0x6b, 0x02, 0xda, 0x03, 0x16, 0x05, 0x79, 0x04, 0x09, 0x04, + 0xca, 0x03, 0xa5, 0x04, 0x1e, 0x04, 0xff, 0x03, 0x0a, 0x05, 0x98, 0x05, 0xe7, 0x04, 0xed, 0x03, + 0xe8, 0x04, 0x33, 0x05, 0xd2, 0x04, 0x0a, 0x05, 0x02, 0x06, 0x65, 0x06, 0xe9, 0x06, 0xe4, 0x07, + 0x72, 0x08, 0x6e, 0x08, 0x5d, 0x09, 0x3b, 0x0a, 0xcf, 0x08, 0xae, 0x08, 0x83, 0x08, 0xa6, 0x07, + 0x71, 0x08, 0x57, 0x08, 0x39, 0x07, 0xc3, 0x06, 0xa9, 0x06, 0x4a, 0x06, 0xa5, 0x05, 0x30, 0x04, + 0x0d, 0x02, 0x04, 0x01, 0x0e, 0x01, 0xaa, 0x00, 0x07, 0x00, 0xea, 0xff, 0x7c, 0x00, 0x68, 0x00, + 0x95, 0xff, 0xd3, 0xff, 0x20, 0xff, 0xc6, 0xfe, 0x3b, 0xff, 0x88, 0xfe, 0x58, 0xfe, 0x26, 0xff, + 0x46, 0xff, 0x4e, 0xfe, 0xdc, 0xfd, 0x58, 0xfe, 0xde, 0xfd, 0xcd, 0xfd, 0x44, 0xfe, 0xd0, 0xfe, + 0x46, 0xfe, 0x4f, 0xfe, 0x21, 0xfe, 0xf2, 0xfc, 0xa3, 0xfb, 0x25, 0xfb, 0xf3, 0xfa, 0x88, 0xfa, + 0x2b, 0xfa, 0x80, 0xfb, 0x73, 0xfc, 0x6c, 0xfc, 0xd1, 0xfc, 0x2a, 0xfc, 0xaa, 0xfc, 0x4b, 0xfd, + 0xb4, 0xfd, 0x90, 0xfe, 0xc3, 0xfe, 0xef, 0xff, 0xb5, 0x00, 0xba, 0x02, 0x19, 0x04, 0x14, 0x05, + 0x08, 0x06, 0xf4, 0x06, 0xbc, 0x07, 0x34, 0x07, 0xe6, 0x06, 0xfd, 0x05, 0xa8, 0x06, 0x46, 0x08, + 0x8e, 0x06, 0x37, 0x05, 0x90, 0x05, 0x9b, 0x04, 0x02, 0x03, 0x38, 0x02, 0xd8, 0x02, 0x5b, 0x02, + 0xfc, 0x00, 0xe3, 0x00, 0xc8, 0xff, 0xb8, 0xfe, 0xc6, 0xfd, 0x50, 0xfc, 0xd6, 0xfb, 0x80, 0xfb, + 0x5d, 0xfd, 0x89, 0xfc, 0x01, 0xfb, 0x92, 0xfb, 0x01, 0xfb, 0xa0, 0xfa, 0xaa, 0xfa, 0x28, 0xf9, + 0x05, 0xf9, 0xb7, 0xf9, 0x97, 0xf9, 0x8d, 0xf9, 0x9d, 0xfa, 0x85, 0xfb, 0xf1, 0xfa, 0xd5, 0xfb, + 0x96, 0xfd, 0x66, 0xfe, 0x32, 0xfe, 0x33, 0xff, 0x46, 0xff, 0xaa, 0xfe, 0x74, 0x00, 0x0a, 0x03, + 0x49, 0x03, 0xd1, 0x01, 0xff, 0x00, 0xa3, 0x00, 0x05, 0x01, 0xf7, 0x02, 0xb6, 0x03, 0xf5, 0x02, + 0x1f, 0x03, 0xa7, 0x02, 0x1a, 0x01, 0xc7, 0x00, 0x7b, 0x00, 0x08, 0x01, 0x1e, 0x02, 0xed, 0x01, + 0xd3, 0x00, 0x8c, 0xff, 0x84, 0x00, 0x29, 0x00, 0x16, 0xfd, 0x01, 0xfc, 0xe6, 0xfc, 0x42, 0xfd, + 0xbd, 0xfd, 0x2e, 0xfe, 0xfd, 0xfd, 0x2f, 0xfe, 0xdc, 0xff, 0x80, 0x01, 0xe9, 0xff, 0xcb, 0x00, + 0x40, 0x02, 0xad, 0x02, 0x42, 0x05, 0x3d, 0x06, 0x0b, 0x08, 0x08, 0x09, 0x7b, 0x08, 0xb5, 0x07, + 0x26, 0x09, 0x31, 0x0b, 0xee, 0x08, 0x86, 0x04, 0x90, 0x08, 0x58, 0x01, 0xf7, 0xfe, 0x47, 0x03, + 0x8b, 0xff, 0x1c, 0xfe, 0x91, 0xfe, 0x5f, 0xfd, 0x3b, 0xfc, 0x94, 0xfd, 0xf3, 0xfb, 0x53, 0xfd, + 0x7c, 0xfd, 0x52, 0xfb, 0x92, 0xfd, 0x6b, 0xfe, 0xec, 0xfc, 0x6e, 0xfa, 0xc3, 0xfa, 0xc6, 0xfb, + 0x8c, 0xf5, 0x11, 0xf5, 0xbe, 0xf7, 0xf6, 0xf2, 0xe8, 0xf4, 0x86, 0xf2, 0x4c, 0xf1, 0xcf, 0xf2, + 0xa1, 0xee, 0x42, 0xec, 0xb3, 0xec, 0x6d, 0xed, 0xc7, 0xec, 0x63, 0xef, 0x10, 0xf0, 0x7c, 0xe9, + 0x0e, 0xe9, 0x89, 0xea, 0xe9, 0xe8, 0xa2, 0xeb, 0xd5, 0xec, 0xb8, 0xec, 0x40, 0xed, 0x7f, 0xef, + 0x5b, 0xf0, 0xad, 0xef, 0x44, 0xf1, 0x0c, 0xf6, 0x31, 0xf9, 0x01, 0xfc, 0x6f, 0xfd, 0xd7, 0xfb, + 0xb9, 0xfd, 0x26, 0xff, 0x38, 0xff, 0xff, 0x01, 0x74, 0x07, 0xbf, 0x05, 0xd8, 0x03, 0x7f, 0x07, + 0x9a, 0x08, 0x2a, 0x07, 0x85, 0x07, 0x61, 0x09, 0x5c, 0x06, 0x8b, 0x09, 0x00, 0x0b, 0x5b, 0x0c, + 0xe9, 0x0b, 0x61, 0x09, 0xc4, 0x09, 0x06, 0x10, 0x0b, 0x11, 0x21, 0x12, 0x8e, 0x14, 0x9e, 0x10, + 0x75, 0x0e, 0x5d, 0x12, 0xd4, 0x12, 0x75, 0x11, 0xcf, 0x0f, 0xbf, 0x13, 0x35, 0x13, 0xf5, 0x0f, + 0xa6, 0x0f, 0x7f, 0x0d, 0xf6, 0x11, 0x54, 0x0e, 0x56, 0x0f, 0xe2, 0x11, 0xde, 0x0f, 0x8b, 0x11, + 0xdf, 0x11, 0x2e, 0x10, 0xdf, 0x0b, 0xf6, 0x0c, 0x0f, 0x11, 0x3a, 0x0f, 0xe5, 0x0d, 0x5d, 0x0f, + 0x29, 0x10, 0x0f, 0x0e, 0x27, 0x0c, 0x4e, 0x0e, 0x93, 0x0e, 0x83, 0x0e, 0x64, 0x0d, 0xc3, 0x0d, + 0x84, 0x0d, 0xd8, 0x0a, 0x23, 0x0c, 0x35, 0x0d, 0xcd, 0x0b, 0xd0, 0x09, 0x14, 0x08, 0xee, 0x08, + 0x90, 0x05, 0x69, 0x00, 0xac, 0x03, 0xe9, 0x01, 0x7d, 0xff, 0x94, 0x00, 0x3c, 0xfd, 0x74, 0xfb, + 0xb0, 0xf9, 0x02, 0xfb, 0x79, 0xfa, 0x32, 0xf7, 0xa9, 0xf6, 0x6b, 0xf7, 0x62, 0xf8, 0x7d, 0xf6, + 0xdf, 0xf4, 0xd5, 0xf6, 0x33, 0xf8, 0x01, 0xf7, 0xf9, 0xf7, 0x9d, 0xfa, 0x7a, 0xfc, 0x3f, 0xfc, + 0x40, 0xfd, 0x85, 0xfd, 0x55, 0xfa, 0x55, 0xf9, 0x6a, 0xfa, 0x1c, 0xfa, 0xd6, 0xfa, 0x20, 0xf9, + 0x19, 0xfb, 0xb3, 0xf9, 0xb7, 0xf6, 0xd7, 0xf5, 0x55, 0xf5, 0x3d, 0xf7, 0xb5, 0xf7, 0x8c, 0xf7, + 0x8f, 0xf6, 0xad, 0xf6, 0xfa, 0xf8, 0x63, 0xfa, 0x23, 0xf9, 0xd2, 0xf9, 0x0c, 0xfd, 0x03, 0xfe, + 0x72, 0xfc, 0xfb, 0xfb, 0xa5, 0xf8, 0x80, 0xf8, 0x9a, 0xf7, 0xde, 0xf7, 0xf2, 0xf7, 0x19, 0xf5, + 0x7f, 0xf2, 0x04, 0xf1, 0xd4, 0xf0, 0xbd, 0xef, 0x0b, 0xf1, 0xa5, 0xf1, 0x09, 0xef, 0x1f, 0xec, + 0x30, 0xeb, 0x38, 0xea, 0x1f, 0xea, 0xb2, 0xeb, 0xef, 0xec, 0x4d, 0xee, 0xe0, 0xed, 0xca, 0xed, + 0xeb, 0xf1, 0xd9, 0xf0, 0x72, 0xf0, 0x77, 0xf5, 0x95, 0xf8, 0xd1, 0xfa, 0x12, 0xf5, 0xb2, 0xf5, + 0x8d, 0xfb, 0x3b, 0xf6, 0xb4, 0xf9, 0x0c, 0xfe, 0x86, 0xf8, 0x50, 0xf7, 0x56, 0xf8, 0xa9, 0xf9, + 0x80, 0xfa, 0xb2, 0xf9, 0x30, 0xfb, 0xcb, 0xfd, 0xb6, 0xf9, 0x45, 0xf8, 0x78, 0xfc, 0x6f, 0xff, + 0xf4, 0xfe, 0x8c, 0xfc, 0xd2, 0xfd, 0xdb, 0xfc, 0xec, 0xfd, 0xc2, 0x01, 0xff, 0x02, 0xd2, 0x02, + 0x07, 0x06, 0xd1, 0x06, 0x77, 0x07, 0x7d, 0x06, 0xf2, 0x08, 0xf2, 0x09, 0x3f, 0x0a, 0x22, 0x0a, + 0xe2, 0x08, 0x34, 0x09, 0xb4, 0x06, 0xee, 0x03, 0xbf, 0x06, 0xd2, 0x04, 0xbe, 0x05, 0x29, 0x09, + 0x86, 0x09, 0xce, 0x08, 0x68, 0x09, 0x35, 0x0b, 0x6f, 0x0c, 0x02, 0x0f, 0xa6, 0x10, 0x66, 0x10, + 0x59, 0x0d, 0x06, 0x12, 0x72, 0x0f, 0x38, 0x10, 0x16, 0x15, 0x5f, 0x13, 0x95, 0x15, 0x5b, 0x15, + 0x61, 0x12, 0xca, 0x16, 0x11, 0x16, 0x59, 0x11, 0x17, 0x0f, 0x10, 0x0f, 0xea, 0x0d, 0x3f, 0x0d, + 0x89, 0x0e, 0x2b, 0x0d, 0x1a, 0x06, 0xac, 0x02, 0xa0, 0x02, 0xcc, 0x02, 0x8c, 0x02, 0x41, 0x01, + 0x1c, 0xff, 0xbc, 0xfa, 0x2c, 0xf5, 0xba, 0xf7, 0xb5, 0xf7, 0xfd, 0xf9, 0x46, 0xfb, 0xfa, 0xf9, + 0x88, 0xf8, 0xc7, 0xfb, 0xd7, 0xfe, 0xe7, 0x05, 0xcf, 0x06, 0xda, 0x07, 0x6c, 0x07, 0x54, 0x08, + 0xec, 0x09, 0x72, 0x0b, 0x21, 0x0a, 0x75, 0x0a, 0x8b, 0x08, 0x70, 0x08, 0xaf, 0x0b, 0xc7, 0x0c, + 0xbf, 0x0c, 0x4d, 0x0b, 0x0a, 0x09, 0x49, 0x07, 0x7f, 0x0b, 0x0b, 0x0f, 0xa2, 0x11, 0xfb, 0x0d, + 0xb2, 0x0d, 0xc6, 0x0e, 0x89, 0x0c, 0x1b, 0x10, 0x49, 0x10, 0x8e, 0x0e, 0x08, 0x11, 0xe4, 0x0f, + 0xa8, 0x0b, 0xcf, 0x0d, 0xca, 0x0d, 0x49, 0x0b, 0x41, 0x09, 0xd4, 0x09, 0x27, 0x07, 0xc7, 0x06, + 0xe3, 0x07, 0x28, 0x02, 0x2b, 0x01, 0x37, 0xff, 0x6c, 0xf8, 0x5c, 0xf6, 0x91, 0xf6, 0x60, 0xf1, + 0x91, 0xed, 0x9d, 0xeb, 0x13, 0xe9, 0x18, 0xe5, 0x39, 0xe3, 0x13, 0xe6, 0xec, 0xe6, 0x06, 0xe6, + 0xbf, 0xe6, 0x21, 0xe3, 0x9a, 0xe3, 0x2b, 0xe9, 0xc8, 0xec, 0xa9, 0xef, 0x4b, 0xee, 0xb5, 0xeb, + 0x15, 0xed, 0x37, 0xee, 0xbf, 0xef, 0xdf, 0xed, 0x85, 0xec, 0xf9, 0xe9, 0x03, 0xe7, 0x0c, 0xe8, + 0x10, 0xe9, 0x29, 0xe8, 0xa6, 0xe9, 0x95, 0xe6, 0x19, 0xe5, 0xed, 0xe6, 0x25, 0xeb, 0xf4, 0xef, + 0x10, 0xef, 0xb1, 0xec, 0xe6, 0xea, 0xd8, 0xeb, 0xb3, 0xec, 0x57, 0xef, 0xf5, 0xf0, 0xdc, 0xf0, + 0x92, 0xf0, 0xe4, 0xf1, 0x1c, 0xf3, 0xc6, 0xf5, 0x4d, 0xf8, 0xdb, 0xf5, 0x50, 0xf6, 0x05, 0xf6, + 0x71, 0xf6, 0x28, 0xf8, 0xff, 0xf6, 0x19, 0xf7, 0xd0, 0xf7, 0xfe, 0xf5, 0xac, 0xf7, 0x49, 0xf8, + 0x05, 0xf8, 0x8c, 0xf6, 0x98, 0xf6, 0x4c, 0xf6, 0x9d, 0xf7, 0xa8, 0xf9, 0x40, 0xfc, 0x27, 0x00, + 0xc8, 0xff, 0x31, 0x02, 0x3a, 0x03, 0x5b, 0x04, 0xb2, 0x08, 0x05, 0x0d, 0x05, 0x0e, 0x46, 0x0d, + 0x73, 0x0d, 0x7b, 0x0d, 0xd2, 0x0d, 0x1a, 0x0e, 0x15, 0x0e, 0x6d, 0x0d, 0xd5, 0x0c, 0xf4, 0x0b, + 0x97, 0x0b, 0x80, 0x0d, 0x2c, 0x0e, 0x84, 0x0c, 0x8a, 0x09, 0xfd, 0x08, 0x50, 0x0b, 0x88, 0x0d, + 0x39, 0x11, 0x1d, 0x12, 0xb3, 0x11, 0x02, 0x12, 0x05, 0x13, 0x6e, 0x16, 0x8f, 0x17, 0x64, 0x19, + 0xd5, 0x14, 0xc0, 0x18, 0x1d, 0x1a, 0x32, 0x1b, 0x3a, 0x22, 0x8e, 0x21, 0x96, 0x21, 0x4d, 0x22, + 0x47, 0x21, 0x81, 0x22, 0xcc, 0x22, 0x03, 0x22, 0xe4, 0x24, 0x82, 0x22, 0xd9, 0x1b, 0x0b, 0x1f, + 0x7b, 0x1b, 0x7b, 0x18, 0xbd, 0x17, 0xad, 0x14, 0x82, 0x12, 0xeb, 0x0e, 0x45, 0x10, 0xd4, 0x10, + 0x9d, 0x10, 0x1c, 0x0f, 0x03, 0x11, 0xfd, 0x0f, 0x9d, 0x09, 0xe6, 0x0c, 0xdf, 0x0e, 0x05, 0x10, + 0x70, 0x0b, 0xa5, 0x0a, 0xcb, 0x0b, 0xcb, 0x06, 0xa5, 0x06, 0xdc, 0x05, 0xd2, 0x02, 0x95, 0xfd, + 0x6e, 0xfc, 0xac, 0xfa, 0xec, 0xf7, 0xb9, 0xf7, 0x2a, 0xf5, 0xe4, 0xf4, 0x75, 0xee, 0x78, 0xec, + 0x61, 0xec, 0x0f, 0xeb, 0x11, 0xeb, 0xe1, 0xe8, 0xc2, 0xe8, 0x9c, 0xe2, 0x64, 0xe5, 0x8a, 0xe9, + 0xb9, 0xe6, 0x42, 0xe8, 0xce, 0xea, 0xf3, 0xea, 0x2d, 0xec, 0x2c, 0xef, 0xa7, 0xf2, 0x2a, 0xf6, + 0xec, 0xf5, 0x1b, 0xf7, 0x7a, 0xf7, 0x9a, 0xf5, 0xaa, 0xf4, 0x66, 0xf3, 0x1d, 0xf3, 0x94, 0xf0, + 0xfd, 0xf1, 0xab, 0xf3, 0x83, 0xef, 0x14, 0xec, 0xe8, 0xec, 0x08, 0xec, 0x57, 0xec, 0x25, 0xed, + 0x55, 0xed, 0x2a, 0xec, 0x5c, 0xe9, 0xaa, 0xee, 0x88, 0xf1, 0xf8, 0xee, 0xfe, 0xef, 0xb2, 0xf4, + 0x17, 0xf7, 0x06, 0xf8, 0xdf, 0xf9, 0x3a, 0xfc, 0xf8, 0xfb, 0x6d, 0xfb, 0x04, 0xfc, 0x65, 0xfc, + 0x0e, 0xfe, 0xd5, 0x00, 0xda, 0x01, 0x6a, 0x02, 0x0a, 0xff, 0xf8, 0xfd, 0x86, 0x00, 0xda, 0xfc, + 0xae, 0xfb, 0xa3, 0xfe, 0xa7, 0x01, 0x89, 0x02, 0x34, 0x06, 0x1e, 0x07, 0x98, 0x06, 0x70, 0x06, + 0x8a, 0x07, 0x8d, 0x05, 0x75, 0x04, 0x80, 0x08, 0x63, 0x0a, 0xc2, 0x09, 0x1a, 0x0b, 0x89, 0x0a, + 0xc8, 0x09, 0xb4, 0x07, 0x17, 0x03, 0x9d, 0x01, 0x40, 0xfe, 0x0a, 0xfa, 0x93, 0xfb, 0x7d, 0xfc, + 0xbf, 0xf9, 0xe4, 0xf5, 0x72, 0xf4, 0xeb, 0xf0, 0xcb, 0xec, 0x9f, 0xea, 0x03, 0xec, 0x64, 0xec, + 0x9a, 0xeb, 0x05, 0xed, 0xfd, 0xea, 0x4d, 0xea, 0xb7, 0xeb, 0x73, 0xee, 0x66, 0xea, 0xe7, 0xe7, + 0xae, 0xea, 0x80, 0xeb, 0x16, 0xed, 0x36, 0xef, 0x55, 0xf3, 0x97, 0xf7, 0xaf, 0xf9, 0xa6, 0xfc, + 0xe9, 0xfd, 0xb3, 0xfc, 0x7b, 0xfc, 0xd4, 0xff, 0x5e, 0x01, 0x51, 0x02, 0xc5, 0x03, 0x1b, 0x06, + 0x2a, 0x08, 0x15, 0x08, 0x5a, 0x0b, 0xd9, 0x0b, 0x10, 0x0d, 0x72, 0x0f, 0xb4, 0x12, 0x58, 0x14, + 0x27, 0x18, 0xee, 0x1d, 0x32, 0x1f, 0x1c, 0x1f, 0xe3, 0x22, 0x9f, 0x24, 0xaf, 0x25, 0x4f, 0x29, + 0x25, 0x2a, 0xaa, 0x2f, 0x1e, 0x30, 0xce, 0x2e, 0x91, 0x30, 0x49, 0x2c, 0x23, 0x29, 0x14, 0x29, + 0x76, 0x24, 0x8f, 0x21, 0x5b, 0x1f, 0xc8, 0x1e, 0x53, 0x1d, 0x41, 0x1a, 0x3e, 0x17, 0xee, 0x15, + 0xf6, 0x12, 0x1c, 0x12, 0x54, 0x0f, 0xc8, 0x09, 0x56, 0x04, 0xcf, 0x00, 0x2a, 0x04, 0xd7, 0x02, + 0x6c, 0xfe, 0x55, 0xfc, 0xa1, 0xfc, 0xb9, 0xfc, 0x7a, 0xfb, 0xb6, 0xfc, 0xd1, 0xfe, 0xa1, 0xfe, + 0xc5, 0xfe, 0x23, 0xfe, 0x93, 0xfd, 0x77, 0xfd, 0xdd, 0xfe, 0x40, 0xff, 0x40, 0xfb, 0x75, 0xf7, + 0x25, 0xf7, 0x60, 0xf4, 0x88, 0xef, 0x88, 0xed, 0x6d, 0xec, 0xe1, 0xeb, 0x93, 0xef, 0x2a, 0xf1, + 0x7e, 0xef, 0xa4, 0xee, 0x7c, 0xed, 0x44, 0xed, 0xf3, 0xea, 0xa7, 0xe8, 0x7e, 0xe8, 0x0e, 0xec, + 0xf4, 0xec, 0x68, 0xed, 0x19, 0xf2, 0x40, 0xf2, 0xe8, 0xf1, 0x48, 0xf2, 0x67, 0xf1, 0x87, 0xf1, + 0x0d, 0xf3, 0xf5, 0xf5, 0x33, 0xf8, 0x1b, 0xfa, 0x9d, 0xf9, 0x14, 0xf8, 0x81, 0xf5, 0xe5, 0xf1, + 0x97, 0xef, 0x76, 0xf2, 0x25, 0xf5, 0x58, 0xf7, 0x69, 0xf8, 0xfc, 0xf5, 0x63, 0xf7, 0xad, 0xfb, + 0x36, 0xff, 0x5d, 0xfc, 0xe8, 0xf8, 0x88, 0xfa, 0xfd, 0xfc, 0x83, 0xff, 0x96, 0x00, 0xc7, 0x03, + 0x9d, 0x05, 0x97, 0x04, 0xfb, 0x03, 0x52, 0x02, 0x26, 0xfd, 0x85, 0xfb, 0xd1, 0xf9, 0xf0, 0xf8, + 0x73, 0xf8, 0x2f, 0xf6, 0x8b, 0xf6, 0xc6, 0xf4, 0x5d, 0xf2, 0xe0, 0xef, 0xe5, 0xed, 0xb6, 0xf0, + 0x01, 0xf0, 0x39, 0xee, 0xf3, 0xf0, 0x6a, 0xf0, 0x00, 0xf4, 0x7e, 0xf6, 0xee, 0xf0, 0x86, 0xef, + 0x92, 0xef, 0x4f, 0xee, 0x72, 0xf0, 0x1b, 0xef, 0x0e, 0xf1, 0xc3, 0xf6, 0xe9, 0xf7, 0xad, 0xf7, + 0xf5, 0xf6, 0xd0, 0xf6, 0x0e, 0xf6, 0x0d, 0xf8, 0x64, 0xfa, 0xf3, 0xfa, 0x9c, 0xf9, 0x6a, 0xfb, + 0x2d, 0xfd, 0x83, 0xfc, 0xbb, 0xfc, 0x72, 0xfd, 0xb9, 0xff, 0xc4, 0xfc, 0x8c, 0xfb, 0xa6, 0xfb, + 0x73, 0xfe, 0xad, 0x03, 0x5d, 0x05, 0x84, 0x07, 0x8c, 0x09, 0xfb, 0x0b, 0x6d, 0x0e, 0xdc, 0x0d, + 0xcc, 0x0f, 0x07, 0x13, 0x2a, 0x14, 0x35, 0x17, 0xb9, 0x18, 0x3f, 0x17, 0xf7, 0x17, 0x9e, 0x18, + 0x47, 0x18, 0x70, 0x15, 0xbc, 0x12, 0x0e, 0x10, 0x7f, 0x10, 0x54, 0x11, 0xad, 0x0e, 0xfa, 0x0e, + 0xea, 0x10, 0x6f, 0x10, 0x4e, 0x0f, 0x4d, 0x0f, 0x08, 0x0d, 0xa0, 0x0b, 0xc6, 0x0b, 0x9d, 0x09, + 0x5f, 0x09, 0x15, 0x09, 0x4f, 0x09, 0x13, 0x0c, 0x6e, 0x0b, 0x73, 0x0c, 0xbb, 0x0e, 0xcf, 0x0e, + 0x09, 0x0c, 0x92, 0x0a, 0x7d, 0x09, 0x92, 0x09, 0x35, 0x0a, 0x56, 0x0a, 0x3d, 0x09, 0x31, 0x05, + 0xaf, 0x04, 0xda, 0x01, 0xaf, 0xfc, 0x4e, 0xf8, 0x90, 0xf6, 0x2e, 0xf9, 0x41, 0xfb, 0xa0, 0xfb, + 0xd4, 0xf9, 0x4b, 0xf8, 0xc7, 0xf7, 0x8a, 0xf6, 0xaa, 0xf3, 0x4d, 0xf1, 0x3b, 0xf0, 0x08, 0xf2, + 0x0b, 0xf3, 0xdf, 0xf4, 0x21, 0xf7, 0x5c, 0xf8, 0xe2, 0xf8, 0xb3, 0xfa, 0x57, 0xfb, 0x3d, 0xfa, + 0x77, 0xfb, 0x17, 0xfc, 0xa3, 0xff, 0xec, 0x01, 0xfa, 0x01, 0x01, 0x06, 0x9b, 0x05, 0x78, 0x02, + 0x9e, 0x01, 0xd8, 0x03, 0xea, 0x04, 0x0b, 0x07, 0xa3, 0x0b, 0xb3, 0x0c, 0xaa, 0x0f, 0x71, 0x13, + 0x2c, 0x15, 0xbe, 0x14, 0x64, 0x11, 0xa7, 0x11, 0x7a, 0x14, 0xd8, 0x14, 0xa6, 0x17, 0xf6, 0x1b, + 0xa1, 0x1a, 0x04, 0x18, 0xfa, 0x14, 0x39, 0x11, 0x7e, 0x0e, 0x53, 0x0a, 0x06, 0x0a, 0xce, 0x08, + 0x58, 0x04, 0xb7, 0x03, 0x24, 0x02, 0x85, 0xfd, 0x8d, 0xf8, 0x31, 0xf6, 0xfd, 0xf5, 0x66, 0xf5, + 0x0d, 0xf2, 0x3f, 0xef, 0x09, 0xec, 0xe0, 0xeb, 0x55, 0xee, 0xa6, 0xef, 0x23, 0xed, 0xc3, 0xea, + 0x2f, 0xea, 0x05, 0xe9, 0x76, 0xe7, 0x08, 0xe6, 0xd4, 0xe4, 0x74, 0xe5, 0x55, 0xe9, 0x84, 0xec, + 0x2e, 0xf0, 0xb3, 0xee, 0xaa, 0xec, 0x57, 0xf0, 0x1c, 0xef, 0x40, 0xed, 0xa3, 0xef, 0x9d, 0xf0, + 0x72, 0xee, 0x72, 0xef, 0x1c, 0xf2, 0xdd, 0xf1, 0x87, 0xf1, 0x7e, 0xf2, 0xd4, 0xf4, 0xa0, 0xf6, + 0x46, 0xf7, 0x0c, 0xfb, 0x65, 0xfd, 0x6d, 0xfd, 0x82, 0x00, 0x6e, 0x06, 0x08, 0x07, 0x5e, 0x08, + 0xd4, 0x09, 0x99, 0x0a, 0x45, 0x0a, 0x36, 0x09, 0xbc, 0x0a, 0xac, 0x0a, 0xba, 0x09, 0xfb, 0x09, + 0xfd, 0x0a, 0xd2, 0x07, 0x8e, 0x03, 0xf5, 0x02, 0x06, 0x00, 0xca, 0xfd, 0x86, 0xfc, 0x07, 0xfe, + 0x25, 0x01, 0xd0, 0xff, 0x78, 0xfe, 0x2f, 0xfe, 0xfc, 0xfa, 0x8f, 0xfa, 0x85, 0xfa, 0xa5, 0xf8, + 0xb9, 0xf7, 0x0d, 0xf7, 0xce, 0xf8, 0x40, 0xfa, 0xd9, 0xfa, 0x8f, 0xfb, 0x91, 0xfe, 0x80, 0x00, + 0x6d, 0x01, 0xf4, 0x03, 0x63, 0x03, 0xea, 0x02, 0x21, 0x05, 0x18, 0x07, 0x79, 0x05, 0x7d, 0x06, + 0x0a, 0x07, 0x15, 0x04, 0xaa, 0x02, 0xd2, 0xfd, 0x83, 0xfb, 0x3c, 0xfc, 0xd9, 0xfc, 0xe7, 0x02, + 0x57, 0x06, 0x20, 0x06, 0x0f, 0x07, 0x06, 0x06, 0x50, 0x02, 0xc6, 0x00, 0xa3, 0x00, 0x2b, 0x00, + 0x79, 0x00, 0x5e, 0x03, 0x4b, 0x06, 0x11, 0x06, 0xb9, 0x05, 0xd3, 0x03, 0x12, 0x02, 0x78, 0x00, + 0x55, 0xff, 0xec, 0x00, 0xc8, 0x01, 0x22, 0x04, 0x31, 0x06, 0xe9, 0x05, 0x7a, 0x05, 0x5a, 0x02, + 0x17, 0x01, 0x23, 0x03, 0x3e, 0x01, 0x1e, 0x02, 0xa6, 0x03, 0xb7, 0x03, 0xfa, 0x06, 0xd1, 0x08, + 0x89, 0x09, 0xdd, 0x09, 0xe3, 0x08, 0x22, 0x07, 0xec, 0x07, 0xb7, 0x07, 0xf1, 0x07, 0xd5, 0x0b, + 0x4b, 0x0d, 0x87, 0x0d, 0xdb, 0x0d, 0x0e, 0x0d, 0xa8, 0x0a, 0xd5, 0x0a, 0x1e, 0x0a, 0xdd, 0x06, + 0x4f, 0x07, 0x79, 0x05, 0x8c, 0x04, 0xe8, 0x04, 0xdd, 0x01, 0x1c, 0x01, 0xb2, 0x00, 0xcb, 0xff, + 0x09, 0x01, 0xa2, 0x01, 0x8c, 0xff, 0xb4, 0x01, 0xfe, 0x02, 0x3a, 0x02, 0xdd, 0x01, 0x0f, 0x00, + 0x18, 0xff, 0x82, 0xfe, 0xf3, 0xfe, 0xbf, 0xfe, 0x4e, 0xfc, 0x6a, 0xf9, 0x52, 0xf9, 0x8a, 0xfb, + 0x6d, 0xfd, 0xaa, 0xff, 0xc0, 0xff, 0xb3, 0xfe, 0x32, 0xfe, 0x47, 0xfd, 0xd0, 0xfb, 0x4c, 0xfa, + 0xe1, 0xf8, 0xa9, 0xfb, 0xc5, 0xff, 0x40, 0x01, 0x0e, 0x02, 0x44, 0x02, 0x75, 0x01, 0x25, 0x01, + 0xc1, 0x02, 0xed, 0x01, 0xf8, 0x02, 0xd8, 0x02, 0x31, 0x05, 0x9e, 0x0a, 0xa7, 0x0a, 0x5f, 0x0b, + 0x5a, 0x0d, 0xe8, 0x0c, 0x0e, 0x0d, 0xa7, 0x0e, 0x15, 0x0d, 0x43, 0x0c, 0xe6, 0x0c, 0x34, 0x0c, + 0x1c, 0x0c, 0xdc, 0x0a, 0xe7, 0x08, 0x81, 0x06, 0x53, 0x02, 0x33, 0xff, 0xb5, 0xfd, 0xab, 0xfd, + 0x2b, 0xfc, 0x74, 0xfd, 0x61, 0xfe, 0xa4, 0xfd, 0x92, 0xfd, 0x25, 0xfb, 0x72, 0xf9, 0x16, 0xf7, + 0xda, 0xf3, 0x0d, 0xf3, 0x65, 0xf4, 0x5c, 0xf5, 0x45, 0xf7, 0x6f, 0xf7, 0x54, 0xf5, 0xb0, 0xf3, + 0xd0, 0xf1, 0xf4, 0xf0, 0xd6, 0xef, 0xe3, 0xec, 0x5c, 0xed, 0x25, 0xee, 0x2f, 0xee, 0x99, 0xee, + 0x38, 0xed, 0xf7, 0xea, 0xaf, 0xe7, 0x4e, 0xe6, 0x30, 0xe4, 0x6e, 0xe0, 0x8d, 0xe1, 0xcf, 0xe2, + 0x49, 0xe6, 0xa8, 0xe8, 0x1d, 0xea, 0x5c, 0xed, 0xcb, 0xea, 0x68, 0xe9, 0x40, 0xea, 0x4e, 0xe9, + 0x3f, 0xe8, 0x15, 0xea, 0xb3, 0xec, 0x4e, 0xf1, 0x6b, 0xf5, 0xc1, 0xf6, 0x63, 0xf9, 0x51, 0xf9, + 0x11, 0xfa, 0x3a, 0xfd, 0xcf, 0xfe, 0x87, 0x00, 0x8b, 0x04, 0x65, 0x08, 0x7a, 0x0a, 0x33, 0x0b, + 0xd5, 0x0b, 0xf3, 0x0b, 0x32, 0x0c, 0x67, 0x0e, 0x6c, 0x11, 0x3e, 0x13, 0x96, 0x15, 0xf3, 0x19, + 0x07, 0x1e, 0x82, 0x1d, 0x21, 0x1e, 0x4c, 0x20, 0xe2, 0x20, 0x43, 0x22, 0x8a, 0x23, 0xe8, 0x24, + 0x3e, 0x25, 0xf8, 0x21, 0x66, 0x21, 0x21, 0x21, 0xe8, 0x1c, 0xb5, 0x1a, 0x7c, 0x18, 0xef, 0x14, + 0xd8, 0x10, 0x70, 0x0d, 0x89, 0x0a, 0x9e, 0x06, 0x47, 0x04, 0x6f, 0x02, 0x22, 0x01, 0xaf, 0xfe, + 0xdc, 0xfd, 0xef, 0xfb, 0xe3, 0xf6, 0x59, 0xf5, 0xb7, 0xf5, 0x8e, 0xf4, 0x01, 0xf2, 0xe1, 0xf1, + 0x4d, 0xf1, 0x08, 0xf0, 0xad, 0xee, 0xf5, 0xeb, 0xdd, 0xec, 0xb6, 0xea, 0xf2, 0xe7, 0x5d, 0xea, + 0x66, 0xec, 0x53, 0xee, 0xe4, 0xf0, 0xbd, 0xf2, 0x02, 0xf5, 0x8b, 0xf6, 0x21, 0xf5, 0x3e, 0xf4, + 0xf6, 0xf1, 0xac, 0xf1, 0xf3, 0xf3, 0x26, 0xf5, 0x5f, 0xf8, 0x04, 0xfc, 0x58, 0xfe, 0xca, 0xfe, + 0x27, 0x00, 0xc1, 0x02, 0xc1, 0x01, 0x6a, 0x01, 0x5f, 0x05, 0xcd, 0x09, 0x21, 0x0e, 0x19, 0x11, + 0x51, 0x13, 0xd6, 0x12, 0x79, 0x10, 0x09, 0x11, 0xd7, 0x0f, 0x4f, 0x0e, 0x8c, 0x0e, 0xda, 0x0f, + 0x07, 0x11, 0x2a, 0x10, 0xf6, 0x0d, 0xfa, 0x0b, 0x25, 0x09, 0x96, 0x03, 0x1c, 0x03, 0xc5, 0x01, + 0x28, 0xff, 0x2a, 0x00, 0x45, 0x00, 0xd8, 0xff, 0xe8, 0xff, 0x54, 0x00, 0x8d, 0xfe, 0xf4, 0xfb, + 0x8a, 0xf9, 0xbe, 0xf8, 0x48, 0xf9, 0x55, 0xf7, 0x6e, 0xf7, 0x77, 0xfa, 0x11, 0xfb, 0x83, 0xfb, + 0xcb, 0xfe, 0xf2, 0xff, 0xa3, 0xfd, 0x69, 0xfd, 0xe5, 0xfd, 0x4a, 0xff, 0x75, 0xff, 0x66, 0xff, + 0xbd, 0x00, 0xda, 0xfe, 0x98, 0xfc, 0x5b, 0xfb, 0x21, 0xf9, 0x01, 0xf7, 0xa0, 0xf7, 0x8d, 0xf7, + 0xe4, 0xf8, 0x36, 0xfc, 0x4e, 0x00, 0x08, 0x02, 0x4c, 0x01, 0xc6, 0xff, 0xad, 0xff, 0x54, 0xfd, + 0x03, 0xfc, 0xec, 0xfd, 0x75, 0xfc, 0x39, 0xfc, 0xa8, 0xfb, 0x07, 0xfc, 0x41, 0xfb, 0xe7, 0xf9, + 0x39, 0xfa, 0x45, 0xf9, 0x81, 0xf8, 0x10, 0xf7, 0xb9, 0xf7, 0x68, 0xf8, 0x33, 0xf8, 0x1f, 0xfb, + 0x16, 0xfb, 0xda, 0xf8, 0x61, 0xf9, 0x49, 0xfa, 0x43, 0xf9, 0x9e, 0xf8, 0x0d, 0xf8, 0x89, 0xf9, + 0xb6, 0xfb, 0xfb, 0xfa, 0xe3, 0xfe, 0x84, 0x01, 0xc8, 0xff, 0xfe, 0xfe, 0x60, 0x00, 0xe7, 0x02, + 0xd1, 0x03, 0x12, 0x06, 0xe1, 0x07, 0x38, 0x07, 0x10, 0x06, 0x5a, 0x06, 0x60, 0x06, 0xc3, 0x04, + 0x4d, 0x03, 0xf8, 0x02, 0xab, 0x00, 0xca, 0xfc, 0x7b, 0xfd, 0xf3, 0xfa, 0xbf, 0xf8, 0xe7, 0xfb, + 0x31, 0xfd, 0xfe, 0xfc, 0xc8, 0xfb, 0x9b, 0xfb, 0x65, 0xfe, 0x29, 0xfd, 0x43, 0xfb, 0x22, 0xfd, + 0x58, 0xfd, 0xcb, 0xff, 0xaf, 0x00, 0xb5, 0x00, 0xf8, 0xfd, 0xf6, 0xf9, 0xb2, 0xf8, 0x24, 0xf7, + 0xc2, 0xf6, 0xec, 0xf7, 0xd5, 0xfa, 0xda, 0xfc, 0x87, 0xfe, 0x19, 0xff, 0x68, 0xfe, 0x98, 0xfc, + 0x82, 0xfa, 0x51, 0xfa, 0x8c, 0xfa, 0x50, 0xfd, 0x5c, 0x00, 0xd1, 0x02, 0xe6, 0x04, 0xfd, 0x04, + 0x0f, 0x08, 0x37, 0x09, 0x80, 0x07, 0xb1, 0x08, 0xca, 0x0a, 0x92, 0x0b, 0xa2, 0x0d, 0xe7, 0x11, + 0xd4, 0x15, 0xd4, 0x17, 0xc9, 0x18, 0xc7, 0x1a, 0xd5, 0x19, 0x03, 0x17, 0xb2, 0x16, 0xb3, 0x17, + 0x0f, 0x18, 0x46, 0x18, 0xc9, 0x19, 0xf4, 0x18, 0x6e, 0x15, 0xb4, 0x11, 0xd8, 0x0c, 0x1c, 0x09, + 0x57, 0x09, 0x70, 0x0a, 0x25, 0x0a, 0xa7, 0x08, 0xa1, 0x08, 0x52, 0x0a, 0x57, 0x07, 0xfc, 0x03, + 0x85, 0x01, 0x0f, 0x00, 0x13, 0xff, 0x38, 0xff, 0xef, 0xff, 0x73, 0xfe, 0xd4, 0xfc, 0x2e, 0xfb, + 0x54, 0xfc, 0xb8, 0xfa, 0x6e, 0xf8, 0xc7, 0xf6, 0xab, 0xf4, 0x78, 0xf4, 0x5b, 0xf1, 0x0f, 0xf0, + 0xd3, 0xef, 0x0a, 0xee, 0xbb, 0xec, 0x8f, 0xeb, 0xa4, 0xe9, 0x7b, 0xe7, 0xf2, 0xe5, 0x41, 0xe3, + 0xc7, 0xe2, 0xf2, 0xe4, 0x0f, 0xe8, 0x35, 0xea, 0x46, 0xec, 0x68, 0xef, 0x88, 0xef, 0x55, 0xee, + 0x7c, 0xec, 0xc8, 0xec, 0xc6, 0xed, 0x3e, 0xee, 0xab, 0xf0, 0x14, 0xf2, 0xe9, 0xf2, 0xc0, 0xf4, + 0xa3, 0xf5, 0x49, 0xf6, 0x8f, 0xf7, 0x17, 0xf8, 0x53, 0xf9, 0x77, 0xfa, 0xcf, 0xfc, 0x9d, 0xfe, + 0x95, 0xff, 0x0e, 0x01, 0x50, 0x03, 0xed, 0x04, 0x45, 0x05, 0x76, 0x06, 0xf5, 0x07, 0x67, 0x0a, + 0x7c, 0x0a, 0x61, 0x0c, 0xfd, 0x0f, 0x89, 0x13, 0x4f, 0x18, 0x69, 0x19, 0x1c, 0x19, 0xa0, 0x18, + 0xb9, 0x18, 0xbb, 0x18, 0x95, 0x17, 0x4f, 0x18, 0x27, 0x18, 0x1e, 0x17, 0x8b, 0x16, 0x81, 0x13, + 0xd8, 0x0f, 0x36, 0x0e, 0x6d, 0x0a, 0x0d, 0x07, 0xc7, 0x05, 0xc4, 0x01, 0xee, 0x00, 0x2b, 0x01, + 0xf3, 0xff, 0xfb, 0xfe, 0xb8, 0xfe, 0x7d, 0xfd, 0xef, 0xfa, 0xcd, 0xf9, 0x70, 0xf9, 0xa1, 0xf8, + 0xda, 0xf6, 0x19, 0xf6, 0x9a, 0xf6, 0xda, 0xf6, 0x73, 0xf6, 0x87, 0xf5, 0x2a, 0xf4, 0xb8, 0xf1, + 0x43, 0xf0, 0xff, 0xef, 0x09, 0xf1, 0x9d, 0xf4, 0x9d, 0xf7, 0x03, 0xfa, 0xed, 0xfb, 0xe8, 0xf9, + 0x62, 0xf7, 0x77, 0xf4, 0xbd, 0xf3, 0x73, 0xf7, 0xb9, 0xf8, 0x7b, 0xfa, 0x78, 0xfc, 0x60, 0xff, + 0x23, 0x03, 0x90, 0x02, 0x2b, 0x01, 0xbd, 0x00, 0x26, 0x02, 0x6c, 0x04, 0x90, 0x08, 0x59, 0x0c, + 0xd0, 0x0e, 0x59, 0x10, 0x69, 0x10, 0x32, 0x11, 0xa0, 0x10, 0x9d, 0x0f, 0x97, 0x0d, 0x0e, 0x0d, + 0xed, 0x0a, 0x5a, 0x09, 0xa7, 0x0b, 0x82, 0x0a, 0x35, 0x09, 0x50, 0x07, 0x22, 0x02, 0xdb, 0xff, + 0x47, 0x00, 0xb5, 0xfe, 0xdc, 0xfd, 0xf8, 0xfd, 0xc1, 0xfe, 0x69, 0xff, 0x6e, 0xfd, 0xc9, 0xfd, + 0x7c, 0xfd, 0x22, 0xfb, 0xbe, 0xf8, 0x24, 0xf7, 0x47, 0xf8, 0x1c, 0xf9, 0xf8, 0xf9, 0x48, 0xfb, + 0x33, 0xfc, 0xb3, 0xfc, 0xf2, 0xfc, 0x64, 0xfd, 0xd3, 0xff, 0xb0, 0xff, 0x4f, 0x00, 0x06, 0x02, + 0xa2, 0x01, 0x84, 0x00, 0xf0, 0xfe, 0x93, 0xff, 0xc1, 0x00, 0xc0, 0xff, 0x97, 0xfd, 0x44, 0xfc, + 0x63, 0xfb, 0x7b, 0xfc, 0x4e, 0xfe, 0xd1, 0xfe, 0xb1, 0x00, 0x70, 0x03, 0xfd, 0x06, 0x6f, 0x08, + 0x3e, 0x06, 0x4a, 0x05, 0x42, 0x03, 0x60, 0x01, 0x8a, 0x01, 0x59, 0x01, 0x0d, 0x00, 0xd8, 0x00, + 0x7b, 0x02, 0x31, 0x01, 0xb9, 0xff, 0x43, 0xfe, 0xaa, 0xfc, 0x43, 0xfb, 0xb4, 0xfa, 0x52, 0xfa, + 0x88, 0xfb, 0xe0, 0xfd, 0x2b, 0xfe, 0x49, 0xff, 0xbd, 0xff, 0x1d, 0x00, 0x23, 0x00, 0x82, 0xfe, + 0x98, 0xfd, 0x0c, 0xfe, 0xf9, 0xff, 0xb0, 0x02, 0x45, 0x04, 0x14, 0x04, 0x59, 0x05, 0xb9, 0x05, + 0x91, 0x05, 0x74, 0x06, 0x15, 0x07, 0x66, 0x06, 0xc0, 0x07, 0x17, 0x09, 0x99, 0x07, 0xc7, 0x05, + 0x86, 0x05, 0x2c, 0x05, 0xa1, 0x00, 0x96, 0xfc, 0x9d, 0xf9, 0x0a, 0xf8, 0x53, 0xf8, 0x97, 0xf7, + 0xf4, 0xf7, 0x38, 0xf7, 0xe0, 0xf7, 0x28, 0xf9, 0x36, 0xf6, 0xfe, 0xf2, 0xbf, 0xf1, 0x51, 0xf3, + 0x87, 0xf4, 0xa8, 0xf4, 0x29, 0xf6, 0x8b, 0xf7, 0x93, 0xf5, 0xcd, 0xf4, 0x72, 0xf2, 0xfa, 0xee, + 0x69, 0xee, 0xdb, 0xec, 0xe9, 0xec, 0xfe, 0xec, 0xca, 0xed, 0x73, 0xf1, 0x47, 0xf4, 0x57, 0xf4, + 0xde, 0xf2, 0x54, 0xf2, 0x9d, 0xf2, 0x8e, 0xf2, 0x5e, 0xf3, 0x80, 0xf6, 0xd3, 0xf8, 0x69, 0xfc, + 0xe8, 0xff, 0x39, 0x01, 0x02, 0x03, 0xa5, 0x03, 0x10, 0x05, 0xe0, 0x05, 0xe8, 0x05, 0x3a, 0x09, + 0x8e, 0x0d, 0xb0, 0x10, 0x93, 0x14, 0xa7, 0x16, 0x31, 0x18, 0x6d, 0x19, 0xfe, 0x18, 0x4f, 0x19, + 0x72, 0x17, 0x5f, 0x18, 0xb9, 0x1b, 0x3f, 0x1c, 0x0e, 0x1b, 0x97, 0x17, 0x5d, 0x15, 0x5e, 0x13, + 0xc8, 0x11, 0x14, 0x10, 0x3f, 0x0d, 0xe8, 0x0c, 0x5c, 0x0f, 0xc3, 0x0f, 0xd8, 0x0c, 0xa7, 0x0b, + 0x49, 0x0b, 0x34, 0x0a, 0xa6, 0x08, 0x80, 0x08, 0xdf, 0x06, 0xbe, 0x03, 0x01, 0x03, 0xb1, 0x00, + 0x77, 0xff, 0x8a, 0x00, 0xab, 0x00, 0xf6, 0x00, 0x14, 0xff, 0xb6, 0xfa, 0xf5, 0xf8, 0xea, 0xf7, + 0xac, 0xf4, 0xbe, 0xf2, 0x2f, 0xf1, 0x34, 0xf2, 0xf3, 0xf1, 0x86, 0xf0, 0xdc, 0xef, 0xd2, 0xed, + 0x12, 0xed, 0x5a, 0xed, 0x63, 0xec, 0x65, 0xeb, 0x1a, 0xed, 0x9b, 0xf0, 0xf5, 0xf2, 0x80, 0xf3, + 0x90, 0xf5, 0x31, 0xf5, 0x19, 0xf4, 0xf6, 0xf4, 0x49, 0xf4, 0x2b, 0xf4, 0x2e, 0xf4, 0xd7, 0xf6, + 0xc5, 0xf9, 0x88, 0xfa, 0x70, 0xfc, 0xb7, 0xff, 0x8b, 0xff, 0x99, 0xfd, 0x60, 0xfd, 0x86, 0xfd, + 0x94, 0x00, 0xd8, 0x04, 0xdc, 0x06, 0xa6, 0x08, 0x9a, 0x09, 0x02, 0x0d, 0x87, 0x0e, 0xda, 0x0b, + 0xae, 0x08, 0xc3, 0x08, 0xf2, 0x0a, 0x74, 0x0e, 0x20, 0x13, 0x8f, 0x16, 0x9f, 0x18, 0xc1, 0x18, + 0x86, 0x17, 0x71, 0x15, 0xd0, 0x14, 0xa6, 0x14, 0xc8, 0x15, 0x99, 0x16, 0x06, 0x13, 0x60, 0x11, + 0x5b, 0x10, 0x6c, 0x0d, 0x86, 0x09, 0x8b, 0x05, 0x21, 0x02, 0x9f, 0xfe, 0xd4, 0xfc, 0x73, 0xfc, + 0xaf, 0xfa, 0xa0, 0xf9, 0x2f, 0xfb, 0x89, 0xfa, 0x99, 0xf8, 0x0c, 0xf7, 0x83, 0xf6, 0x9d, 0xf4, + 0xaa, 0xf2, 0x1b, 0xf2, 0xb0, 0xf1, 0xfe, 0xf2, 0x5c, 0xf3, 0x04, 0xf4, 0x22, 0xf2, 0x5d, 0xef, + 0xa2, 0xee, 0x5c, 0xee, 0x99, 0xec, 0x59, 0xeb, 0x18, 0xef, 0x46, 0xf2, 0xca, 0xf3, 0x02, 0xf4, + 0xec, 0xf2, 0xa1, 0xf3, 0xfd, 0xf3, 0x72, 0xf3, 0x81, 0xf2, 0xc1, 0xf2, 0x99, 0xf5, 0xb4, 0xfa, + 0x24, 0xfc, 0x53, 0xfc, 0x7d, 0xfe, 0xfa, 0xff, 0xf5, 0x01, 0x3a, 0x02, 0x9d, 0x02, 0x58, 0x04, + 0xfb, 0x04, 0x7b, 0x05, 0x6b, 0x07, 0x23, 0x09, 0xb1, 0x09, 0x07, 0x0c, 0x0d, 0x0d, 0x80, 0x0a, + 0x2a, 0x06, 0xf0, 0x04, 0xf7, 0x03, 0x55, 0x02, 0xd1, 0x01, 0x8b, 0x00, 0x80, 0xff, 0xbd, 0xfe, + 0xb7, 0xfd, 0x41, 0xfb, 0x1c, 0xf8, 0x87, 0xf7, 0x61, 0xf8, 0x71, 0xf6, 0xd5, 0xf6, 0x17, 0xf7, + 0x3e, 0xf6, 0xec, 0xf5, 0x7d, 0xf3, 0xfb, 0xf3, 0xa6, 0xf3, 0x67, 0xf2, 0xfe, 0xf2, 0x7b, 0xf2, + 0x29, 0xf3, 0x0a, 0xf5, 0x95, 0xf7, 0x73, 0xf9, 0xb6, 0xf9, 0x82, 0xfb, 0x24, 0xfe, 0x34, 0xfe, + 0x01, 0xfd, 0x6a, 0xfb, 0x3e, 0xfb, 0x7f, 0xfe, 0x3c, 0x00, 0xb8, 0x00, 0x19, 0x00, 0xd5, 0x00, + 0x47, 0x03, 0x04, 0x02, 0x8d, 0x00, 0x3f, 0xff, 0x34, 0x00, 0x0d, 0x05, 0x9f, 0x08, 0x6b, 0x0b, + 0xc3, 0x0f, 0x14, 0x10, 0xe4, 0x0e, 0x7a, 0x0d, 0xcd, 0x0a, 0x43, 0x09, 0xbe, 0x07, 0x14, 0x08, + 0x96, 0x07, 0x4f, 0x07, 0x9f, 0x09, 0x75, 0x09, 0xa3, 0x08, 0xe5, 0x06, 0x94, 0x04, 0xb6, 0x03, + 0xe3, 0x03, 0xf8, 0x04, 0x0f, 0x07, 0xe9, 0x07, 0x34, 0x0a, 0x19, 0x0d, 0x9c, 0x0d, 0x29, 0x0d, + 0x02, 0x0b, 0x97, 0x09, 0x0d, 0x09, 0x9e, 0x09, 0x19, 0x0b, 0xaa, 0x0c, 0x0f, 0x0f, 0x8a, 0x10, + 0x6a, 0x0f, 0x0f, 0x0e, 0x00, 0x0e, 0xc5, 0x0d, 0x0b, 0x0e, 0x3d, 0x0d, 0x8d, 0x0d, 0x43, 0x0f, + 0xae, 0x0e, 0x05, 0x0d, 0xbc, 0x08, 0xd9, 0x04, 0xb7, 0x02, 0x85, 0x01, 0xe6, 0xfe, 0x88, 0xfc, + 0x04, 0xfd, 0x6e, 0xfd, 0xb2, 0xfe, 0x48, 0xfe, 0x57, 0xfc, 0x04, 0xfb, 0xae, 0xfa, 0x86, 0xf9, + 0x55, 0xf9, 0xeb, 0xf9, 0xdc, 0xf9, 0x43, 0xfa, 0x71, 0xf9, 0x15, 0xf8, 0xda, 0xf6, 0x05, 0xf6, + 0x70, 0xf5, 0x25, 0xf4, 0x74, 0xf1, 0xf9, 0xef, 0xc8, 0xee, 0x67, 0xee, 0x7a, 0xef, 0xd5, 0xef, + 0x41, 0xf0, 0x17, 0xf1, 0x60, 0xf2, 0xe3, 0xf1, 0x42, 0xf1, 0xbe, 0xf1, 0x68, 0xf3, 0xf1, 0xf5, + 0xa8, 0xf7, 0xc3, 0xfa, 0x65, 0xfe, 0x5d, 0x01, 0xcf, 0x02, 0xb9, 0x02, 0xd6, 0x03, 0x24, 0x05, + 0x1d, 0x07, 0x56, 0x08, 0x81, 0x0a, 0x7b, 0x0d, 0xb9, 0x0f, 0x1c, 0x12, 0x91, 0x13, 0x97, 0x13, + 0x6a, 0x13, 0x17, 0x13, 0x52, 0x11, 0x5e, 0x0f, 0xe9, 0x0c, 0x57, 0x0d, 0x3a, 0x0e, 0x80, 0x0c, + 0x97, 0x0c, 0x54, 0x0a, 0x19, 0x08, 0x83, 0x07, 0x53, 0x05, 0x55, 0x02, 0xc1, 0x00, 0x4c, 0x00, + 0xa0, 0xff, 0x8e, 0xff, 0x59, 0xff, 0xed, 0xff, 0xa0, 0xfd, 0x00, 0xfb, 0x4d, 0xf7, 0x46, 0xf4, + 0x6e, 0xf2, 0xed, 0xf2, 0xf3, 0xf3, 0x24, 0xf3, 0x40, 0xf2, 0xe0, 0xf1, 0x0f, 0xf1, 0x2b, 0xef, + 0x0a, 0xed, 0xcc, 0xe9, 0x35, 0xe9, 0x1e, 0xe9, 0x11, 0xe9, 0x3a, 0xe9, 0x1a, 0xe8, 0x74, 0xe8, + 0xf5, 0xe8, 0x5c, 0xe8, 0x18, 0xe7, 0xe6, 0xe4, 0x53, 0xe5, 0x91, 0xe6, 0x89, 0xe7, 0xaa, 0xe9, + 0xd5, 0xed, 0x6e, 0xf0, 0x38, 0xf1, 0x04, 0xf2, 0x80, 0xf2, 0x47, 0xf1, 0x39, 0xf0, 0x76, 0xf0, + 0x6e, 0xf0, 0x15, 0xf4, 0x90, 0xf9, 0xac, 0xfd, 0xc0, 0xfe, 0xad, 0xfb, 0x12, 0xfc, 0x6b, 0xfd, + 0xfc, 0xfc, 0xac, 0xfe, 0x5f, 0x01, 0x95, 0x04, 0xe2, 0x09, 0x3a, 0x0d, 0xb3, 0x0e, 0xb7, 0x0f, + 0x29, 0x0e, 0x90, 0x0e, 0xc2, 0x0d, 0x93, 0x0d, 0x27, 0x11, 0xa0, 0x14, 0x88, 0x16, 0xf7, 0x17, + 0x28, 0x19, 0xe0, 0x1a, 0x03, 0x1a, 0x05, 0x19, 0x84, 0x19, 0x8f, 0x17, 0x11, 0x17, 0x94, 0x17, + 0x2c, 0x16, 0x1d, 0x13, 0x05, 0x10, 0x51, 0x0e, 0xe6, 0x0b, 0xf8, 0x0a, 0x83, 0x09, 0x62, 0x06, + 0x24, 0x05, 0xf1, 0x05, 0x42, 0x07, 0x36, 0x07, 0x62, 0x06, 0x4d, 0x05, 0xf4, 0x05, 0xd5, 0x03, + 0x43, 0x02, 0x07, 0x02, 0xa1, 0x01, 0x5a, 0x01, 0xf3, 0xff, 0xe6, 0x00, 0xff, 0x00, 0x0b, 0x00, + 0x7a, 0xff, 0xb0, 0xfd, 0xeb, 0xfb, 0x42, 0xfc, 0x91, 0xfd, 0xb3, 0xfc, 0x22, 0xfb, 0xd5, 0xfb, + 0xe0, 0xfd, 0x0c, 0xff, 0x6e, 0x01, 0xc4, 0x01, 0xb5, 0x01, 0x17, 0x03, 0xa2, 0x02, 0xec, 0x01, + 0x5e, 0x01, 0x29, 0x02, 0x56, 0x05, 0x9e, 0x07, 0x07, 0x0a, 0x92, 0x0c, 0x67, 0x0c, 0x50, 0x0c, + 0xed, 0x0a, 0x00, 0x09, 0x4f, 0x09, 0xcc, 0x09, 0x0e, 0x0c, 0xab, 0x0e, 0x73, 0x0f, 0xa1, 0x0f, + 0x77, 0x0e, 0xcb, 0x0c, 0xb9, 0x09, 0x4e, 0x06, 0x98, 0x03, 0x82, 0x01, 0x8e, 0x00, 0xde, 0x00, + 0xba, 0x00, 0x50, 0xff, 0x69, 0xfe, 0x4e, 0xfd, 0xcf, 0xfb, 0x57, 0xf9, 0xcc, 0xf8, 0xd7, 0xf8, + 0x3f, 0xf7, 0xc2, 0xf6, 0x9b, 0xf7, 0x85, 0xf8, 0xeb, 0xf7, 0xe2, 0xf5, 0xba, 0xf3, 0xa5, 0xf2, + 0x01, 0xf2, 0x00, 0xf2, 0x5f, 0xf2, 0x37, 0xf1, 0x1f, 0xf3, 0x98, 0xf6, 0x3b, 0xf7, 0x5f, 0xf6, + 0x2e, 0xf5, 0x2a, 0xf3, 0x9e, 0xf2, 0xe1, 0xf2, 0x85, 0xf3, 0xa1, 0xf5, 0x63, 0xf6, 0x30, 0xf8, + 0xa4, 0xf9, 0xc9, 0xf8, 0x8f, 0xf7, 0xa1, 0xf7, 0x8e, 0xf7, 0x32, 0xf8, 0x9d, 0xf9, 0x8a, 0xfb, + 0xa9, 0xfd, 0x30, 0xff, 0x0c, 0x01, 0x09, 0x02, 0xa7, 0x01, 0xc4, 0xff, 0xcb, 0xfe, 0x72, 0xfc, + 0x5f, 0xf9, 0x5a, 0xfa, 0xad, 0xfa, 0xc5, 0xfa, 0x15, 0xfb, 0xa5, 0xf9, 0xf3, 0xf8, 0x9f, 0xf7, + 0x5c, 0xf7, 0x97, 0xf7, 0x99, 0xf6, 0xa7, 0xf7, 0x2b, 0xfc, 0x50, 0xff, 0x80, 0x00, 0x71, 0x01, + 0x10, 0x02, 0x67, 0x01, 0x34, 0xff, 0xc4, 0xff, 0xe9, 0x00, 0x9a, 0x02, 0x6d, 0x03, 0x56, 0x05, + 0xef, 0x08, 0xfe, 0x09, 0x8a, 0x0b, 0x2a, 0x0c, 0x11, 0x0a, 0x17, 0x0b, 0xf0, 0x0d, 0x90, 0x0d, + 0x9c, 0x0d, 0x50, 0x0c, 0x00, 0x0a, 0xd8, 0x08, 0x75, 0x06, 0x8b, 0x05, 0xa1, 0x03, 0xe3, 0xff, + 0x94, 0xfe, 0x80, 0xfe, 0x27, 0xfe, 0x85, 0xfc, 0x7d, 0xfa, 0x8c, 0xfa, 0x5e, 0xfa, 0x6e, 0xfa, + 0x01, 0xfb, 0x57, 0xfa, 0x02, 0xf9, 0x6f, 0xf7, 0x27, 0xf7, 0x0d, 0xf6, 0x46, 0xf4, 0x3f, 0xf5, + 0xa3, 0xf4, 0xba, 0xf2, 0x61, 0xf1, 0x76, 0xf0, 0xbf, 0xef, 0x37, 0xee, 0xdd, 0xec, 0x25, 0xed, + 0x2b, 0xee, 0xc5, 0xef, 0xc3, 0xf2, 0x07, 0xf3, 0xc9, 0xf4, 0x7a, 0xf8, 0x56, 0xfa, 0x64, 0xfb, + 0x7a, 0xfb, 0xdc, 0xfd, 0xc4, 0x00, 0x59, 0x04, 0x4b, 0x08, 0x0e, 0x0c, 0xd9, 0x0e, 0xf0, 0x0e, + 0xa2, 0x0f, 0x11, 0x10, 0xcc, 0x0f, 0x99, 0x10, 0x01, 0x13, 0xeb, 0x14, 0xcf, 0x18, 0xb6, 0x1c, + 0xcb, 0x1e, 0xf8, 0x1f, 0x02, 0x1e, 0x0e, 0x1c, 0x90, 0x1a, 0x2e, 0x18, 0x30, 0x17, 0x93, 0x17, + 0xe0, 0x17, 0x84, 0x19, 0xf4, 0x19, 0xca, 0x18, 0xe2, 0x15, 0x47, 0x11, 0xb3, 0x0e, 0x46, 0x0d, + 0x1d, 0x0c, 0x1d, 0x0c, 0x1c, 0x0c, 0x1b, 0x0b, 0x8a, 0x09, 0x34, 0x08, 0x3d, 0x05, 0xeb, 0x01, + 0x3e, 0xff, 0x37, 0xfd, 0x16, 0xfb, 0x80, 0xf9, 0x84, 0xf8, 0xf2, 0xf7, 0xd1, 0xf7, 0x1a, 0xf6, + 0xbd, 0xf3, 0x8d, 0xf0, 0x57, 0xee, 0x9f, 0xed, 0xc1, 0xeb, 0x73, 0xea, 0x9c, 0xea, 0x6a, 0xeb, + 0xf3, 0xeb, 0x7f, 0xec, 0x75, 0xeb, 0x11, 0xeb, 0x6a, 0xea, 0xc8, 0xe9, 0x4e, 0xeb, 0x70, 0xec, + 0xd5, 0xee, 0x28, 0xf1, 0x4c, 0xf3, 0xac, 0xf5, 0x6c, 0xf8, 0x9c, 0xf8, 0x8b, 0xf6, 0x48, 0xf5, + 0xfa, 0xf3, 0x61, 0xf4, 0xe7, 0xf5, 0x7e, 0xf7, 0xf3, 0xf9, 0x84, 0xfb, 0xf4, 0xfa, 0x61, 0xfb, + 0x85, 0xfb, 0xd3, 0xfb, 0xdf, 0xfc, 0xe8, 0xfd, 0x5c, 0x00, 0x1e, 0x03, 0xad, 0x04, 0xc3, 0x06, + 0x52, 0x09, 0x11, 0x0a, 0xa6, 0x0a, 0xb4, 0x0a, 0xa5, 0x09, 0x7f, 0x0a, 0x84, 0x0a, 0xa8, 0x0a, + 0xc7, 0x0b, 0x0d, 0x0d, 0x8f, 0x0e, 0x8f, 0x0f, 0x8d, 0x0f, 0xc3, 0x0e, 0x2a, 0x0e, 0xd5, 0x0c, + 0xd6, 0x0b, 0x32, 0x0a, 0x12, 0x08, 0x22, 0x07, 0xe6, 0x05, 0xee, 0x04, 0xea, 0x01, 0x4e, 0xff, + 0x26, 0xfd, 0x90, 0xfc, 0x96, 0xfc, 0xe0, 0xfb, 0xf3, 0xfb, 0xf8, 0xfa, 0xc6, 0xfa, 0x58, 0xfc, + 0xc2, 0xfc, 0xfa, 0xfb, 0x0c, 0xfb, 0x08, 0xf8, 0xd8, 0xf7, 0xb9, 0xf8, 0x2e, 0xf7, 0x98, 0xf7, + 0x6f, 0xf7, 0x6a, 0xf7, 0xd7, 0xf8, 0x1a, 0xf9, 0xc0, 0xf8, 0xb2, 0xf7, 0x18, 0xf5, 0xc2, 0xf3, + 0xcf, 0xf2, 0xf2, 0xf3, 0x7a, 0xf6, 0x43, 0xf8, 0x11, 0xfb, 0xdb, 0xfe, 0x99, 0x01, 0xed, 0x00, + 0x88, 0xfe, 0x2e, 0xfd, 0x08, 0xfd, 0x42, 0x00, 0xdd, 0x03, 0x38, 0x07, 0x06, 0x0a, 0xfb, 0x0a, + 0x62, 0x0b, 0x7f, 0x0b, 0x96, 0x09, 0x8a, 0x08, 0xf2, 0x08, 0x90, 0x08, 0x9b, 0x0a, 0x2a, 0x0c, + 0x3d, 0x0d, 0xce, 0x0d, 0xa1, 0x0b, 0x04, 0x0a, 0x61, 0x07, 0x87, 0x04, 0xb8, 0x01, 0xbc, 0xff, + 0x58, 0xff, 0xdf, 0xff, 0x14, 0x02, 0x24, 0x03, 0x3c, 0x02, 0xce, 0x00, 0x15, 0xfe, 0x8a, 0xfb, + 0xfa, 0xfa, 0xad, 0xf9, 0xb7, 0xfa, 0xf4, 0xfb, 0x5e, 0xfa, 0xa0, 0xfb, 0x33, 0xfc, 0x65, 0xf9, + 0x42, 0xf8, 0x1d, 0xf6, 0xd4, 0xf4, 0x23, 0xf5, 0x9a, 0xf4, 0x3f, 0xf6, 0xc7, 0xf7, 0xb0, 0xf8, + 0x98, 0xf9, 0x44, 0xf8, 0xe2, 0xf7, 0x96, 0xf8, 0x9e, 0xf8, 0x55, 0xf8, 0xec, 0xf8, 0x67, 0xfa, + 0x39, 0xfb, 0x0e, 0xfb, 0x2e, 0xfa, 0x24, 0xfb, 0xbf, 0xfc, 0xb8, 0xfc, 0x44, 0xfc, 0x39, 0xfd, + 0x6a, 0xfe, 0x09, 0x00, 0x4a, 0x02, 0x50, 0x03, 0x80, 0x05, 0x65, 0x07, 0x5d, 0x08, 0x24, 0x08, + 0xfb, 0x05, 0x73, 0x04, 0x21, 0x03, 0xf3, 0x01, 0x98, 0x01, 0xcb, 0x02, 0x0c, 0x03, 0xe5, 0x02, + 0xd1, 0x02, 0x1b, 0x01, 0xd2, 0x00, 0x09, 0x01, 0x67, 0x02, 0x2c, 0x04, 0x1c, 0x06, 0x54, 0x07, + 0x79, 0x09, 0xdd, 0x0a, 0x8c, 0x0a, 0xfd, 0x0b, 0x0f, 0x0c, 0x15, 0x0a, 0x1a, 0x0a, 0x38, 0x0a, + 0xe6, 0x09, 0x1c, 0x0b, 0x03, 0x0c, 0xcc, 0x0d, 0x57, 0x0f, 0x71, 0x0f, 0xdd, 0x0f, 0xc4, 0x0f, + 0x2c, 0x0e, 0x5f, 0x0c, 0xee, 0x09, 0x0b, 0x08, 0x53, 0x08, 0x98, 0x07, 0x5a, 0x06, 0x9c, 0x05, + 0x81, 0x03, 0xe6, 0x02, 0x62, 0x00, 0x47, 0xfd, 0x9e, 0xfc, 0xa8, 0xfc, 0x8d, 0xfc, 0x49, 0xfc, + 0x2a, 0xfd, 0x3f, 0xfd, 0x8d, 0xfc, 0xc3, 0xfb, 0x48, 0xfa, 0x70, 0xf8, 0xa1, 0xf6, 0xc8, 0xf5, + 0xc2, 0xf4, 0x31, 0xf4, 0xb0, 0xf3, 0x68, 0xf3, 0x16, 0xf1, 0xf0, 0xee, 0x80, 0xec, 0x28, 0xea, + 0x7a, 0xea, 0x98, 0xea, 0x4e, 0xea, 0x30, 0xeb, 0xf2, 0xec, 0x5d, 0xf0, 0x9f, 0xf5, 0x28, 0xf7, + 0x5a, 0xf7, 0x29, 0xf8, 0xda, 0xf7, 0x23, 0xf9, 0x19, 0xfd, 0xb7, 0x00, 0x2c, 0x04, 0xfb, 0x07, + 0x33, 0x0b, 0x6e, 0x0c, 0xe1, 0x0b, 0x38, 0x0b, 0xe9, 0x0a, 0x59, 0x0b, 0xa1, 0x0c, 0x7c, 0x0f, + 0x43, 0x13, 0x5b, 0x15, 0xa5, 0x16, 0x40, 0x16, 0x6e, 0x14, 0x5a, 0x13, 0xbc, 0x11, 0x25, 0x10, + 0xb4, 0x0d, 0x65, 0x0d, 0x96, 0x0f, 0x3e, 0x0f, 0x1c, 0x0d, 0xdb, 0x0b, 0xe8, 0x0a, 0x0e, 0x09, + 0xb1, 0x07, 0xa5, 0x04, 0x56, 0x03, 0xa5, 0x02, 0x75, 0x02, 0xdb, 0x02, 0x35, 0x01, 0x5b, 0xff, + 0xb8, 0xfc, 0x11, 0xfa, 0xc3, 0xf7, 0xe4, 0xf5, 0x42, 0xf5, 0x49, 0xf4, 0xda, 0xf2, 0x63, 0xf1, + 0x69, 0xf0, 0xaa, 0xef, 0xdb, 0xee, 0xf0, 0xec, 0xe0, 0xea, 0x3a, 0xe8, 0xa1, 0xe7, 0xa0, 0xe9, + 0xe1, 0xe9, 0x9f, 0xea, 0xa3, 0xeb, 0x6f, 0xea, 0x34, 0xeb, 0xa2, 0xec, 0x34, 0xec, 0xef, 0xec, + 0xed, 0xec, 0xe3, 0xee, 0x70, 0xf1, 0xd8, 0xf1, 0x0a, 0xf4, 0x06, 0xf7, 0x2b, 0xfa, 0xb0, 0xfb, + 0x89, 0xfb, 0xf7, 0xfa, 0x1d, 0xfa, 0xcf, 0xf9, 0x01, 0xf9, 0x27, 0xf9, 0x1b, 0xfa, 0x10, 0xfc, + 0x6a, 0xfe, 0x10, 0xff, 0x5e, 0xff, 0xb8, 0x01, 0xed, 0x02, 0xd7, 0x01, 0xbe, 0x02, 0x7f, 0x04, + 0xaa, 0x07, 0xb8, 0x09, 0x05, 0x0a, 0xb5, 0x0b, 0x94, 0x0b, 0xd8, 0x0b, 0x8f, 0x0c, 0x92, 0x0b, + 0xfc, 0x09, 0x74, 0x0a, 0x16, 0x0b, 0x0b, 0x0c, 0xbe, 0x0d, 0xa7, 0x0e, 0x93, 0x0f, 0xbd, 0x0e, + 0x64, 0x0d, 0xc0, 0x0a, 0xa2, 0x07, 0x8c, 0x05, 0x2f, 0x05, 0xbd, 0x05, 0x67, 0x03, 0x0d, 0x02, + 0xe1, 0x02, 0x4b, 0x01, 0x58, 0x00, 0x99, 0xfe, 0x07, 0xfc, 0xbd, 0xfc, 0x9e, 0xfc, 0x89, 0xfd, + 0xac, 0xff, 0xa2, 0xff, 0xe2, 0x00, 0xc9, 0x01, 0xbe, 0x00, 0xfa, 0xfe, 0xad, 0xfe, 0xe0, 0xfe, + 0x54, 0xfe, 0x59, 0xfd, 0x8d, 0xfd, 0x23, 0xff, 0x68, 0xff, 0x10, 0xff, 0x11, 0xfd, 0xef, 0xfa, + 0x72, 0xfa, 0x34, 0xfa, 0x93, 0xf9, 0x65, 0xf9, 0x5b, 0xfc, 0xed, 0xff, 0x1d, 0x03, 0xc9, 0x04, + 0xa6, 0x05, 0x91, 0x06, 0x4f, 0x06, 0x93, 0x06, 0x66, 0x07, 0x09, 0x09, 0x1b, 0x0b, 0x12, 0x0f, + 0x77, 0x11, 0x24, 0x12, 0xc5, 0x12, 0x6f, 0x12, 0x40, 0x11, 0xb3, 0x0f, 0xc2, 0x0e, 0x70, 0x0f, + 0x9e, 0x10, 0x3c, 0x10, 0xb2, 0x10, 0x04, 0x10, 0x28, 0x0e, 0xa8, 0x0e, 0x3d, 0x0d, 0xfc, 0x08, + 0x72, 0x06, 0x2e, 0x05, 0xd0, 0x04, 0xb9, 0x05, 0xf2, 0x05, 0xd5, 0x05, 0x9e, 0x05, 0x8d, 0x04, + 0xbb, 0x03, 0x36, 0x02, 0x1a, 0xff, 0xff, 0xfc, 0x6c, 0xfd, 0x4d, 0xfd, 0x4e, 0xfc, 0x61, 0xfb, + 0xc7, 0xfa, 0xcf, 0xfa, 0xa0, 0xf7, 0xa2, 0xf5, 0x62, 0xf5, 0x1f, 0xf4, 0x5d, 0xf3, 0xe6, 0xf1, + 0xc7, 0xf0, 0x1b, 0xf2, 0xed, 0xf3, 0xe7, 0xf3, 0xf1, 0xf3, 0x22, 0xf3, 0x92, 0xf4, 0x3d, 0xf6, + 0x4f, 0xf4, 0x7f, 0xf3, 0x06, 0xf3, 0xbe, 0xf3, 0x68, 0xf4, 0xee, 0xf4, 0xd2, 0xf5, 0x33, 0xf6, + 0x82, 0xf7, 0x2a, 0xf9, 0xa3, 0xf9, 0x77, 0xfa, 0x19, 0xfb, 0xbe, 0xfc, 0x02, 0xff, 0x0a, 0x00, + 0x44, 0x01, 0x53, 0x00, 0x77, 0xfd, 0xbf, 0xfb, 0xb1, 0xf8, 0x70, 0xf6, 0x89, 0xf7, 0xf5, 0xf7, + 0x6c, 0xf8, 0x78, 0xf8, 0x04, 0xf8, 0x22, 0xfa, 0xbc, 0xfb, 0x75, 0xfb, 0x6e, 0xfb, 0xd2, 0xfb, + 0x02, 0xfe, 0x3c, 0x00, 0x01, 0x03, 0xc5, 0x04, 0xc5, 0x06, 0x83, 0x09, 0xa1, 0x09, 0x9f, 0x08, + 0xbe, 0x06, 0x67, 0x06, 0xf9, 0x06, 0xa8, 0x06, 0x77, 0x07, 0x5d, 0x09, 0x59, 0x0b, 0x40, 0x0d, + 0xec, 0x0c, 0x4b, 0x0a, 0xd2, 0x08, 0x3f, 0x06, 0x0a, 0x05, 0x5e, 0x04, 0xfc, 0x02, 0x04, 0x04, + 0x2d, 0x04, 0x23, 0x02, 0x96, 0xff, 0x95, 0xfd, 0x19, 0xfc, 0x32, 0xfb, 0xcf, 0xfa, 0x9c, 0xfa, + 0xb2, 0xfa, 0x76, 0xfa, 0x6f, 0xfb, 0x12, 0xfc, 0x01, 0xfb, 0x6e, 0xf9, 0xb9, 0xf8, 0xc8, 0xf7, + 0xf8, 0xf5, 0xb0, 0xf4, 0xa2, 0xf3, 0x37, 0xf3, 0xca, 0xf3, 0x8f, 0xf1, 0x96, 0xef, 0x17, 0xef, + 0xc3, 0xed, 0xc4, 0xed, 0x2a, 0xec, 0xcb, 0xe9, 0x99, 0xeb, 0xa3, 0xee, 0x14, 0xf2, 0xaa, 0xf5, + 0xe0, 0xf7, 0xd6, 0xf9, 0xea, 0xfb, 0x92, 0xfc, 0xa3, 0xfd, 0x96, 0xfe, 0xb0, 0x00, 0x33, 0x06, + 0x28, 0x09, 0xf6, 0x0a, 0xcf, 0x0d, 0xf7, 0x0f, 0xa7, 0x10, 0xcd, 0x0f, 0xf2, 0x0f, 0x1f, 0x11, + 0x69, 0x13, 0xd3, 0x14, 0x06, 0x15, 0xff, 0x15, 0x9b, 0x16, 0x16, 0x17, 0x42, 0x17, 0x1e, 0x16, + 0x26, 0x15, 0xa1, 0x15, 0x9f, 0x14, 0x63, 0x13, 0xfa, 0x11, 0xd4, 0x11, 0x54, 0x13, 0x57, 0x13, + 0x82, 0x13, 0xc1, 0x12, 0x89, 0x0f, 0x8d, 0x0d, 0xb4, 0x0c, 0xb5, 0x0a, 0x35, 0x09, 0x0c, 0x08, + 0xf8, 0x06, 0x9a, 0x05, 0xfc, 0x02, 0xc0, 0xff, 0x8d, 0xfd, 0x22, 0xfb, 0xa2, 0xf7, 0x6b, 0xf5, + 0xb6, 0xf3, 0x2a, 0xf2, 0xe2, 0xf2, 0x44, 0xf2, 0xa7, 0xef, 0x16, 0xef, 0xee, 0xef, 0xc2, 0xf0, + 0xe5, 0xf0, 0x74, 0xee, 0xce, 0xed, 0xd5, 0xee, 0xe4, 0xee, 0xf5, 0xef, 0x5a, 0xf0, 0x36, 0xf1, + 0x15, 0xf3, 0x46, 0xf3, 0xd4, 0xf2, 0x40, 0xf3, 0xd1, 0xf4, 0xa6, 0xf6, 0x07, 0xf9, 0x6f, 0xfb, + 0xf6, 0xfe, 0x66, 0x01, 0x0d, 0x01, 0x0d, 0x00, 0xaf, 0xfd, 0x56, 0xfc, 0xcb, 0xfb, 0x59, 0xfc, + 0x21, 0xfd, 0x07, 0xff, 0xe0, 0x01, 0x35, 0x04, 0x1b, 0x05, 0x13, 0x04, 0xe3, 0x03, 0x5b, 0x05, + 0xcf, 0x06, 0x48, 0x08, 0x35, 0x0a, 0x8d, 0x0a, 0xfc, 0x0b, 0x9e, 0x0e, 0xb7, 0x0e, 0xa6, 0x0d, + 0x3b, 0x0c, 0x60, 0x0a, 0x37, 0x0a, 0x1a, 0x09, 0x2e, 0x08, 0x68, 0x0a, 0x9f, 0x0a, 0x1a, 0x0b, + 0x9f, 0x0b, 0x25, 0x09, 0x49, 0x07, 0x19, 0x05, 0x54, 0x02, 0x4c, 0xff, 0x3d, 0xfd, 0x61, 0xfe, + 0x89, 0x00, 0x52, 0x01, 0xb4, 0xff, 0x8c, 0xfe, 0x4c, 0xfd, 0x5a, 0xfb, 0xc1, 0xfa, 0x60, 0xfa, + 0x08, 0xfa, 0x41, 0xfb, 0x41, 0xfc, 0x44, 0xfc, 0xa7, 0xfc, 0x46, 0xfc, 0x75, 0xfd, 0xfa, 0xfc, + 0x14, 0xfa, 0x28, 0xf9, 0x12, 0xf8, 0xe8, 0xf6, 0x2b, 0xf6, 0xba, 0xf4, 0xd4, 0xf3, 0x1f, 0xf3, + 0x30, 0xf2, 0x6c, 0xf1, 0x32, 0xf0, 0x6b, 0xf0, 0xa5, 0xf1, 0xdd, 0xf2, 0xe3, 0xf3, 0xd0, 0xf5, + 0x7d, 0xf9, 0x4d, 0xfc, 0x96, 0xfd, 0x25, 0xff, 0x08, 0xff, 0xe7, 0xfe, 0x1c, 0x01, 0x8b, 0x02, + 0x12, 0x05, 0xae, 0x06, 0x10, 0x08, 0x4d, 0x0b, 0xee, 0x0a, 0x73, 0x0a, 0x78, 0x0a, 0x74, 0x08, + 0xc5, 0x07, 0x55, 0x07, 0x89, 0x06, 0x28, 0x06, 0x84, 0x07, 0x25, 0x09, 0x57, 0x09, 0x67, 0x07, + 0x02, 0x06, 0x20, 0x06, 0xe5, 0x04, 0x15, 0x03, 0x8b, 0x01, 0x29, 0x01, 0x73, 0x01, 0x5d, 0x02, + 0x8b, 0x03, 0xa8, 0x03, 0x04, 0x04, 0x2c, 0x03, 0x00, 0x01, 0x6b, 0xfd, 0x88, 0xfb, 0x0c, 0xfd, + 0x62, 0xfd, 0xf0, 0xfc, 0x62, 0xfd, 0x46, 0xfd, 0xb8, 0xfb, 0x02, 0xfa, 0x0e, 0xf7, 0xeb, 0xf4, + 0x33, 0xf3, 0x26, 0xf2, 0x53, 0xf3, 0x3a, 0xf3, 0xc5, 0xf2, 0xe0, 0xf4, 0x5d, 0xf7, 0xde, 0xf7, + 0x27, 0xf8, 0xa6, 0xf7, 0xb7, 0xf6, 0xb4, 0xf6, 0x92, 0xf7, 0x96, 0xf8, 0x60, 0xf9, 0x17, 0xfa, + 0x8c, 0xfb, 0xe8, 0xfc, 0x6c, 0xfc, 0xba, 0xfc, 0xc2, 0xfd, 0x0f, 0xfd, 0x21, 0xfd, 0xe7, 0xfe, + 0xfa, 0x00, 0x48, 0x03, 0x74, 0x05, 0xf9, 0x03, 0x8d, 0x01, 0x13, 0xff, 0x13, 0xfd, 0x06, 0xfd, + 0xd3, 0xfa, 0xd9, 0xfa, 0x4f, 0xfe, 0x0d, 0x01, 0x16, 0x03, 0xc2, 0x03, 0xf5, 0x03, 0xaa, 0x04, + 0xc4, 0x04, 0xd4, 0x04, 0x1e, 0x06, 0xea, 0x06, 0x30, 0x0a, 0xce, 0x0d, 0x41, 0x0e, 0x8a, 0x0e, + 0x35, 0x0e, 0x85, 0x0d, 0xa3, 0x0b, 0xfc, 0x09, 0x50, 0x0a, 0x97, 0x0a, 0xec, 0x0a, 0xdf, 0x0b, + 0x37, 0x0d, 0x09, 0x0e, 0x2e, 0x0d, 0x30, 0x0c, 0xb7, 0x09, 0x6d, 0x06, 0x52, 0x06, 0x52, 0x07, + 0x51, 0x07, 0x23, 0x07, 0x18, 0x06, 0xfd, 0x04, 0x69, 0x04, 0x1e, 0x03, 0x2e, 0x02, 0x05, 0x01, + 0xe1, 0xfe, 0x43, 0xff, 0x9e, 0xff, 0x4d, 0xfe, 0xa8, 0xfe, 0x59, 0xff, 0xd3, 0xff, 0x4c, 0xff, + 0xf9, 0xfd, 0xf6, 0xfb, 0x6a, 0xfa, 0xdc, 0xf8, 0x84, 0xf6, 0x68, 0xf5, 0xed, 0xf3, 0xe1, 0xf3, + 0xc8, 0xf4, 0x64, 0xf3, 0x22, 0xf1, 0xf2, 0xf0, 0x9a, 0xf0, 0x17, 0xf0, 0x15, 0xf0, 0xd9, 0xf0, + 0x6a, 0xf5, 0x1d, 0xf9, 0x1d, 0xfc, 0x14, 0xff, 0xb0, 0xff, 0x85, 0x01, 0xb0, 0x03, 0x14, 0x04, + 0xe5, 0x04, 0xd6, 0x06, 0x3b, 0x09, 0x90, 0x0b, 0x2b, 0x0d, 0x51, 0x0f, 0x6b, 0x10, 0x60, 0x0f, + 0x50, 0x0e, 0xfc, 0x0c, 0xb0, 0x0b, 0x03, 0x0b, 0x45, 0x0b, 0xdb, 0x0b, 0x2a, 0x0c, 0x99, 0x0d, + 0x4d, 0x0e, 0x0e, 0x0e, 0x04, 0x0e, 0x0e, 0x0c, 0xec, 0x09, 0x43, 0x09, 0x77, 0x07, 0x66, 0x08, + 0x9b, 0x09, 0x76, 0x08, 0x2e, 0x09, 0x79, 0x07, 0x98, 0x03, 0x3a, 0x00, 0x5f, 0xfd, 0xb9, 0xfb, + 0xce, 0xfa, 0xfc, 0xf8, 0x6a, 0xf7, 0xd7, 0xf6, 0x49, 0xf5, 0xe5, 0xf3, 0x45, 0xf1, 0x92, 0xed, + 0x1b, 0xeb, 0xad, 0xe9, 0x3a, 0xe8, 0x77, 0xe5, 0xcf, 0xe4, 0x90, 0xe6, 0xa5, 0xe9, 0x79, 0xeb, + 0x13, 0xec, 0xe4, 0xec, 0x18, 0xec, 0x0f, 0xeb, 0x48, 0xeb, 0x6e, 0xeb, 0x80, 0xed, 0x41, 0xf0, + 0xc2, 0xf1, 0x8e, 0xf3, 0x9d, 0xf4, 0x65, 0xf5, 0x43, 0xf6, 0x4b, 0xf6, 0x81, 0xf7, 0xa5, 0xf9, + 0xc0, 0xfb, 0x19, 0xff, 0x99, 0x01, 0x94, 0x02, 0x57, 0x02, 0xed, 0x01, 0x3e, 0x00, 0x30, 0xfe, + 0xac, 0xfd, 0xf1, 0xfd, 0x23, 0x00, 0x35, 0x03, 0xcc, 0x03, 0x18, 0x05, 0x9b, 0x06, 0xf1, 0x06, + 0xe2, 0x08, 0x2e, 0x09, 0xbe, 0x08, 0xdc, 0x09, 0x39, 0x0b, 0x55, 0x0c, 0xfd, 0x0d, 0x99, 0x0e, + 0x68, 0x0e, 0xd1, 0x0e, 0xd4, 0x0c, 0x39, 0x0b, 0x48, 0x09, 0x23, 0x07, 0xd4, 0x06, 0xa0, 0x06, + 0x7d, 0x06, 0xa0, 0x06, 0xd4, 0x06, 0x3b, 0x06, 0xe5, 0x03, 0x0d, 0x00, 0x92, 0xfe, 0x80, 0xfe, + 0xc6, 0xfd, 0x6c, 0xfd, 0x5d, 0xfd, 0x4a, 0xfe, 0x76, 0xfe, 0x7c, 0xfe, 0x26, 0xfe, 0x85, 0xfd, + 0x47, 0xfd, 0x0e, 0xfd, 0x91, 0xfc, 0x4b, 0xfc, 0x4d, 0xfc, 0xcf, 0xfc, 0xec, 0xfd, 0x39, 0xff, + 0x38, 0x01, 0x73, 0x01, 0xbd, 0x00, 0x3e, 0xff, 0xa1, 0xfc, 0x27, 0xfb, 0xa3, 0xfa, 0x25, 0xfa, + 0x82, 0xfb, 0x59, 0xfc, 0xd4, 0xfb, 0xe4, 0xfc, 0x25, 0xfd, 0xe1, 0xfc, 0xca, 0xfc, 0x0b, 0xfd, + 0x71, 0xff, 0x5f, 0x02, 0x29, 0x05, 0x9a, 0x07, 0xb1, 0x09, 0xc6, 0x0a, 0x4c, 0x0b, 0x9c, 0x0c, + 0xd8, 0x0b, 0x0b, 0x0c, 0xd2, 0x0d, 0x4a, 0x0f, 0x2e, 0x11, 0xa0, 0x12, 0x5e, 0x13, 0xc0, 0x14, + 0x5f, 0x14, 0xd1, 0x12, 0xf1, 0x10, 0x22, 0x0e, 0x35, 0x0d, 0x66, 0x0c, 0x74, 0x0b, 0x4f, 0x0d, + 0x1d, 0x0f, 0x35, 0x10, 0x5d, 0x10, 0xdc, 0x0e, 0xed, 0x0d, 0x33, 0x0c, 0xa3, 0x09, 0xcc, 0x08, + 0x54, 0x09, 0x15, 0x0b, 0xb0, 0x0c, 0xf3, 0x0c, 0xb7, 0x0b, 0x85, 0x08, 0x64, 0x05, 0x75, 0x02, + 0xb9, 0x00, 0xba, 0xff, 0x98, 0xfe, 0xd3, 0xfd, 0xd7, 0xfc, 0x97, 0xfa, 0x01, 0xf9, 0x24, 0xf6, + 0xd8, 0xf1, 0x86, 0xf0, 0x7f, 0xee, 0x3c, 0xec, 0xce, 0xeb, 0x13, 0xec, 0x9e, 0xee, 0x67, 0xf0, + 0xf6, 0xf1, 0x00, 0xf4, 0x47, 0xf4, 0x02, 0xf3, 0x78, 0xf2, 0x09, 0xf2, 0x06, 0xf1, 0xcd, 0xf1, + 0x40, 0xf3, 0x13, 0xf4, 0x01, 0xf5, 0xe4, 0xf5, 0xf6, 0xf5, 0x97, 0xf4, 0x24, 0xf3, 0xec, 0xf2, + 0xaf, 0xf4, 0x43, 0xf6, 0x8d, 0xf8, 0x8d, 0xfa, 0x52, 0xfb, 0xb7, 0xfb, 0xd2, 0xfa, 0x83, 0xf8, + 0xb8, 0xf6, 0xf8, 0xf5, 0xad, 0xf6, 0x03, 0xf8, 0xb1, 0xf8, 0xb1, 0xfa, 0x99, 0xfc, 0x87, 0xfd, + 0x19, 0xff, 0xf9, 0x00, 0x30, 0x02, 0xac, 0x02, 0xce, 0x02, 0x33, 0x04, 0xa2, 0x05, 0xbd, 0x06, + 0xc2, 0x08, 0xa1, 0x09, 0xd1, 0x09, 0x64, 0x09, 0x53, 0x09, 0x6b, 0x08, 0x8e, 0x06, 0xc3, 0x06, + 0x49, 0x06, 0xcf, 0x05, 0xc4, 0x06, 0xa1, 0x06, 0xc2, 0x06, 0x99, 0x05, 0xe4, 0x03, 0xb7, 0x03, + 0xf3, 0x02, 0x0b, 0x01, 0x2e, 0x01, 0xd4, 0x00, 0xa0, 0xff, 0xeb, 0x00, 0x6d, 0x00, 0x1e, 0xff, + 0x82, 0xfe, 0x1b, 0xfd, 0xfb, 0xfb, 0x76, 0xfa, 0xf6, 0xf8, 0x10, 0xf8, 0x0c, 0xf8, 0xa7, 0xf7, + 0x59, 0xf8, 0x4f, 0xf9, 0xf7, 0xf8, 0xa5, 0xf7, 0xe9, 0xf4, 0x02, 0xf2, 0x81, 0xef, 0x33, 0xee, + 0x82, 0xed, 0x99, 0xed, 0x77, 0xee, 0x38, 0xf0, 0x0f, 0xf1, 0x36, 0xf0, 0xe8, 0xef, 0xcd, 0xef, + 0x66, 0xef, 0xa9, 0xf0, 0x31, 0xf4, 0x5a, 0xf8, 0x17, 0xfc, 0xd3, 0xfe, 0x1d, 0x02, 0x22, 0x04, + 0xac, 0x04, 0x3d, 0x05, 0xe4, 0x05, 0x41, 0x07, 0x98, 0x09, 0x00, 0x0d, 0xc0, 0x0e, 0x4a, 0x10, + 0x3e, 0x12, 0x70, 0x12, 0x04, 0x12, 0x54, 0x10, 0xfa, 0x0e, 0x8d, 0x0e, 0x77, 0x0e, 0xd2, 0x0f, + 0x65, 0x13, 0x8d, 0x15, 0xd2, 0x15, 0x7d, 0x17, 0x2a, 0x17, 0x40, 0x15, 0x55, 0x14, 0xca, 0x12, + 0x1c, 0x12, 0xcc, 0x12, 0x8f, 0x13, 0x26, 0x14, 0x37, 0x13, 0x91, 0x10, 0xb4, 0x0e, 0xe2, 0x0b, + 0xda, 0x08, 0xde, 0x06, 0xf2, 0x03, 0xb5, 0x01, 0x3c, 0x00, 0xde, 0xfe, 0x0d, 0xfe, 0xca, 0xfb, + 0x07, 0xf9, 0x95, 0xf6, 0x32, 0xf3, 0x52, 0xf0, 0x4a, 0xee, 0xd1, 0xec, 0x8a, 0xec, 0x84, 0xed, + 0x3c, 0xf0, 0x39, 0xf2, 0xdc, 0xf2, 0xc1, 0xf3, 0x64, 0xf4, 0x17, 0xf4, 0xb2, 0xf3, 0x59, 0xf4, + 0x27, 0xf6, 0x4c, 0xf7, 0x7e, 0xf8, 0x92, 0xfa, 0x7b, 0xfa, 0x0c, 0xfb, 0xdf, 0xfb, 0x6d, 0xfb, + 0x65, 0xfc, 0xf7, 0xfc, 0xa3, 0xfe, 0x5b, 0x00, 0x62, 0x01, 0xf2, 0x02, 0xb3, 0x03, 0x7c, 0x02, + 0x48, 0x01, 0xb0, 0x01, 0x37, 0x01, 0x84, 0x01, 0x88, 0x03, 0xe1, 0x04, 0x7e, 0x05, 0x21, 0x07, + 0xd4, 0x08, 0x74, 0x0a, 0xf6, 0x0b, 0x14, 0x0c, 0x80, 0x0c, 0x77, 0x0b, 0x9b, 0x0a, 0x66, 0x0b, + 0xc2, 0x0b, 0x8a, 0x0c, 0x12, 0x0c, 0xee, 0x0a, 0x78, 0x0a, 0xb5, 0x08, 0x79, 0x06, 0x48, 0x05, + 0x5d, 0x03, 0x35, 0x02, 0x27, 0x02, 0xd0, 0x01, 0xf2, 0x01, 0x1e, 0x02, 0xc0, 0x01, 0x7a, 0x00, + 0x93, 0xfe, 0xd8, 0xfd, 0xb0, 0xfc, 0x7b, 0xfa, 0x67, 0xf9, 0x29, 0xfa, 0xd2, 0xfa, 0x31, 0xfa, + 0x12, 0xfa, 0x61, 0xfa, 0x46, 0xf9, 0x9e, 0xf8, 0x2b, 0xf7, 0x8c, 0xf4, 0x3b, 0xf4, 0xb7, 0xf4, + 0xbb, 0xf6, 0xa1, 0xf8, 0xb1, 0xf9, 0xb4, 0xf9, 0x36, 0xf8, 0x55, 0xf5, 0x21, 0xf3, 0xee, 0xf1, + 0x4d, 0xf0, 0x24, 0xf0, 0x12, 0xf1, 0xd3, 0xf1, 0xcb, 0xf2, 0x06, 0xf4, 0x73, 0xf4, 0x3a, 0xf4, + 0xb7, 0xf3, 0x21, 0xf4, 0x24, 0xf6, 0x6d, 0xf8, 0xfe, 0xfb, 0x64, 0xff, 0xf0, 0x01, 0xe7, 0x03, + 0x88, 0x04, 0xbd, 0x04, 0xeb, 0x04, 0x18, 0x04, 0xe6, 0x03, 0x6c, 0x05, 0x2a, 0x06, 0x5e, 0x07, + 0x42, 0x09, 0x4a, 0x0a, 0x2b, 0x0a, 0xbf, 0x08, 0xb1, 0x05, 0xae, 0x02, 0x41, 0x01, 0x04, 0x01, + 0x8a, 0x02, 0x81, 0x04, 0x8f, 0x06, 0x82, 0x08, 0x0a, 0x09, 0x88, 0x08, 0x18, 0x08, 0x51, 0x07, + 0xd3, 0x05, 0x3b, 0x06, 0x0a, 0x07, 0xb1, 0x07, 0x79, 0x08, 0x82, 0x07, 0x0f, 0x06, 0x36, 0x04, + 0x58, 0x02, 0xf0, 0x00, 0x6f, 0xff, 0xaa, 0xfd, 0xea, 0xfc, 0x50, 0xfc, 0x29, 0xfa, 0x9a, 0xf9, + 0x18, 0xf8, 0xe2, 0xf5, 0xe7, 0xf4, 0xd6, 0xf2, 0x8a, 0xf0, 0x52, 0xef, 0x89, 0xee, 0x4e, 0xef, + 0xb7, 0xf1, 0xc6, 0xf3, 0x85, 0xf6, 0x63, 0xf8, 0x47, 0xf9, 0xe5, 0xf9, 0x47, 0xf9, 0xa4, 0xf8, + 0x73, 0xf8, 0x15, 0xf8, 0xf6, 0xf8, 0xd1, 0xfa, 0xeb, 0xfb, 0x9b, 0xfc, 0xeb, 0xfc, 0xf3, 0xfb, + 0x34, 0xfb, 0x64, 0xfb, 0x66, 0xfc, 0x62, 0xfe, 0x38, 0x00, 0x30, 0x01, 0xad, 0x01, 0x4d, 0x02, + 0x78, 0x02, 0x05, 0x03, 0x30, 0x03, 0xec, 0x02, 0xe3, 0x02, 0x45, 0x02, 0x95, 0x01, 0x53, 0x03, + 0xb2, 0x05, 0x16, 0x08, 0xdf, 0x0a, 0xbd, 0x0b, 0x09, 0x0d, 0x2c, 0x0d, 0xee, 0x0b, 0x91, 0x0b, + 0xd9, 0x0b, 0x8e, 0x0c, 0xef, 0x0d, 0x66, 0x0f, 0xce, 0x0f, 0xfb, 0x0f, 0x7c, 0x0e, 0xa0, 0x0b, + 0x32, 0x09, 0x2c, 0x07, 0x38, 0x06, 0xd8, 0x06, 0x11, 0x07, 0xb8, 0x06, 0x81, 0x07, 0x6d, 0x07, + 0xec, 0x07, 0x86, 0x08, 0x83, 0x07, 0x3f, 0x06, 0x0e, 0x05, 0x53, 0x04, 0xde, 0x04, 0xd9, 0x04, + 0x2e, 0x05, 0x7d, 0x05, 0x23, 0x04, 0x6e, 0x03, 0x30, 0x02, 0x8e, 0xff, 0xf3, 0xfc, 0xef, 0xfa, + 0xef, 0xf9, 0xd3, 0xfa, 0xe4, 0xfb, 0x28, 0xfd, 0xf2, 0xfd, 0x5b, 0xfc, 0xf4, 0xf9, 0x4d, 0xf7, + 0xee, 0xf4, 0xfc, 0xf2, 0xa4, 0xf2, 0x02, 0xf4, 0xad, 0xf5, 0xae, 0xf8, 0xb0, 0xf8, 0x6c, 0xf7, + 0x62, 0xf7, 0x85, 0xf6, 0x22, 0xf7, 0x2b, 0xf8, 0x6d, 0xf9, 0x64, 0xfc, 0xdc, 0xff, 0x07, 0x02, + 0xfa, 0x03, 0x8e, 0x05, 0x3b, 0x06, 0x67, 0x07, 0xb0, 0x07, 0xd1, 0x08, 0x28, 0x0a, 0xbc, 0x0a, + 0xad, 0x0b, 0x26, 0x0d, 0x50, 0x0d, 0x08, 0x0d, 0x4b, 0x0d, 0xf2, 0x0a, 0x18, 0x08, 0x0e, 0x06, + 0x89, 0x05, 0xd0, 0x06, 0x77, 0x08, 0x95, 0x0a, 0x33, 0x0c, 0x5f, 0x0c, 0x41, 0x0c, 0x8b, 0x0b, + 0xb6, 0x09, 0x35, 0x09, 0xf3, 0x08, 0xf0, 0x07, 0x6a, 0x07, 0x91, 0x06, 0x4f, 0x05, 0x29, 0x04, + 0x30, 0x02, 0xd0, 0xff, 0x07, 0xfd, 0x59, 0xf9, 0x83, 0xf6, 0xad, 0xf4, 0xc6, 0xf2, 0x3e, 0xf0, + 0xa2, 0xee, 0xec, 0xed, 0x3e, 0xec, 0xfe, 0xea, 0x5a, 0xe9, 0x1b, 0xe8, 0xcd, 0xe6, 0xdb, 0xe4, + 0xb1, 0xe4, 0x74, 0xe5, 0xcf, 0xe7, 0x77, 0xeb, 0x98, 0xed, 0x13, 0xef, 0xe9, 0xf0, 0xe3, 0xf1, + 0x28, 0xf2, 0xdb, 0xf1, 0x38, 0xf1, 0x49, 0xf2, 0x17, 0xf4, 0x89, 0xf5, 0xbe, 0xf7, 0xee, 0xf8, + 0xee, 0xf7, 0x89, 0xf8, 0xdb, 0xf9, 0xce, 0xf9, 0x58, 0xfb, 0x71, 0xfd, 0x48, 0xff, 0x6d, 0x00, + 0x4a, 0x01, 0xea, 0x02, 0x38, 0x04, 0x9a, 0x04, 0x45, 0x05, 0x72, 0x05, 0xff, 0x04, 0x7e, 0x05, + 0x49, 0x06, 0xff, 0x06, 0x59, 0x09, 0xe5, 0x0b, 0xf2, 0x0d, 0x8e, 0x0e, 0x77, 0x0d, 0x4e, 0x0c, + 0x4e, 0x0b, 0x3b, 0x0a, 0xeb, 0x09, 0x3a, 0x0a, 0xed, 0x09, 0x28, 0x0a, 0x85, 0x0a, 0x39, 0x09, + 0x4c, 0x06, 0xcc, 0x03, 0x87, 0x01, 0xa1, 0x00, 0xb8, 0x00, 0x1c, 0x00, 0x46, 0x01, 0xe9, 0x01, + 0xdb, 0x01, 0x62, 0x01, 0x0f, 0x00, 0xc8, 0xfe, 0x26, 0xfe, 0xb0, 0xfd, 0x24, 0xfd, 0x3a, 0xfd, + 0x08, 0xfe, 0x3b, 0xff, 0x28, 0xff, 0xb3, 0xfe, 0x17, 0xff, 0x57, 0xfe, 0x76, 0xfc, 0x02, 0xfc, + 0x86, 0xfb, 0x09, 0xfb, 0x38, 0xfd, 0xa7, 0xfe, 0xca, 0xfe, 0xfe, 0xfe, 0xeb, 0xfd, 0x35, 0xfd, + 0x95, 0xfb, 0xe4, 0xf8, 0x24, 0xf8, 0xf1, 0xf7, 0xe7, 0xf8, 0x05, 0xfc, 0xd5, 0xfd, 0xd1, 0xfe, + 0x7d, 0xff, 0xb4, 0xff, 0x0a, 0x00, 0xa2, 0x00, 0xb2, 0x01, 0xa6, 0x03, 0xd6, 0x05, 0xa6, 0x07, + 0xe4, 0x09, 0xf8, 0x0b, 0xf5, 0x0c, 0x2d, 0x0d, 0x8e, 0x0d, 0x4e, 0x0c, 0x1c, 0x0b, 0x37, 0x0c, + 0xd0, 0x0c, 0x75, 0x0d, 0x38, 0x0e, 0x17, 0x0f, 0xaf, 0x10, 0xfe, 0x0e, 0x94, 0x0c, 0x65, 0x0b, + 0xeb, 0x09, 0x40, 0x09, 0xd2, 0x09, 0xbb, 0x09, 0xfc, 0x0a, 0xce, 0x0d, 0xbb, 0x0e, 0x29, 0x0f, + 0x75, 0x0e, 0x64, 0x0d, 0x4c, 0x0d, 0x70, 0x0c, 0xb0, 0x0b, 0xeb, 0x0b, 0x1b, 0x0b, 0xc3, 0x09, + 0x9f, 0x09, 0x62, 0x08, 0x7a, 0x06, 0x7b, 0x05, 0x11, 0x04, 0x29, 0x02, 0xfd, 0xfe, 0x56, 0xfc, + 0x81, 0xfb, 0x31, 0xfa, 0xf2, 0xf7, 0xa6, 0xf6, 0xd8, 0xf4, 0xcc, 0xf2, 0x45, 0xf1, 0xf9, 0xee, + 0x5e, 0xed, 0x32, 0xed, 0xbc, 0xed, 0x26, 0xf0, 0xa4, 0xf2, 0x83, 0xf4, 0x14, 0xf7, 0x1b, 0xf8, + 0xa2, 0xf7, 0xda, 0xf6, 0xb0, 0xf5, 0x6a, 0xf4, 0xa0, 0xf4, 0xa6, 0xf5, 0x94, 0xf5, 0xd8, 0xf5, + 0xe7, 0xf5, 0xce, 0xf5, 0xe0, 0xf5, 0xb6, 0xf4, 0x83, 0xf4, 0xac, 0xf4, 0x9e, 0xf4, 0x2a, 0xf5, + 0xfd, 0xf6, 0x0e, 0xf9, 0x69, 0xfb, 0x04, 0xfd, 0x9e, 0xfc, 0x1a, 0xfc, 0xa9, 0xfb, 0xa1, 0xfb, + 0xe8, 0xfb, 0x21, 0xfc, 0x94, 0xfd, 0x26, 0x01, 0xc2, 0x03, 0x78, 0x04, 0x33, 0x05, 0x0e, 0x04, + 0x91, 0x02, 0x08, 0x03, 0xe9, 0x02, 0x22, 0x03, 0x66, 0x05, 0x56, 0x07, 0x55, 0x07, 0xbf, 0x05, + 0xa1, 0x03, 0xd9, 0x01, 0x80, 0x00, 0x14, 0xff, 0x24, 0xfe, 0x62, 0xfd, 0xca, 0xfd, 0x5e, 0xff, + 0x11, 0x01, 0x43, 0x03, 0xf2, 0x02, 0x22, 0x02, 0xe6, 0x01, 0x8e, 0x00, 0x5f, 0xff, 0x73, 0xff, + 0xfc, 0xfe, 0x3f, 0xfe, 0x40, 0xfe, 0x96, 0xfe, 0x2f, 0xfe, 0x81, 0xfe, 0xe9, 0xfc, 0xd5, 0xf9, + 0xf9, 0xf6, 0xc7, 0xf4, 0xad, 0xf4, 0xed, 0xf5, 0xaf, 0xf6, 0x2a, 0xf7, 0x7c, 0xf7, 0x39, 0xf6, + 0x73, 0xf4, 0xc9, 0xf2, 0xdf, 0xf0, 0x30, 0xf0, 0x21, 0xf0, 0xd4, 0xf0, 0x3e, 0xf2, 0xd4, 0xf3, + 0x3c, 0xf6, 0x3c, 0xf8, 0xcb, 0xf7, 0x55, 0xf8, 0x85, 0xfa, 0x5a, 0xfb, 0x41, 0xfd, 0xfe, 0xff, + 0xd7, 0x01, 0x85, 0x04, 0x74, 0x07, 0x49, 0x0a, 0x7c, 0x0c, 0xdd, 0x0d, 0xe7, 0x0e, 0xc2, 0x0f, + 0x47, 0x0f, 0x12, 0x0f, 0x9d, 0x0f, 0x08, 0x11, 0x92, 0x12, 0x5e, 0x12, 0x54, 0x11, 0x1f, 0x10, + 0xc5, 0x0e, 0xfd, 0x0d, 0x50, 0x0d, 0x45, 0x0d, 0xe2, 0x0e, 0xa8, 0x10, 0x0d, 0x12, 0x21, 0x13, + 0x51, 0x13, 0x1d, 0x13, 0x5f, 0x12, 0x90, 0x11, 0x4a, 0x10, 0x06, 0x0f, 0xfc, 0x0d, 0x6e, 0x0c, + 0x73, 0x0b, 0xd4, 0x08, 0xb9, 0x07, 0x3a, 0x06, 0x1b, 0x04, 0x26, 0x01, 0xa8, 0xfd, 0x68, 0xfa, + 0x0c, 0xf8, 0xd1, 0xf5, 0x9d, 0xf3, 0xef, 0xf2, 0x58, 0xf3, 0x74, 0xf3, 0x19, 0xf2, 0x78, 0xef, + 0x3b, 0xec, 0xb3, 0xea, 0x68, 0xea, 0x69, 0xea, 0x76, 0xec, 0x98, 0xef, 0xcf, 0xf1, 0x0f, 0xf4, + 0xbb, 0xf5, 0x72, 0xf6, 0xcc, 0xf6, 0xd3, 0xf6, 0xfc, 0xf6, 0xeb, 0xf7, 0xdc, 0xf9, 0x8b, 0xfc, + 0xf8, 0xfe, 0x79, 0xff, 0x68, 0xff, 0xa9, 0xff, 0x27, 0x00, 0xe0, 0x00, 0x54, 0x01, 0x1d, 0x01, + 0x64, 0x02, 0x14, 0x04, 0xba, 0x06, 0x6a, 0x09, 0xf7, 0x0a, 0xef, 0x0b, 0x79, 0x0c, 0xfc, 0x0b, + 0x3e, 0x0a, 0x66, 0x09, 0x19, 0x09, 0x79, 0x0b, 0xcf, 0x0e, 0x7c, 0x10, 0xc8, 0x11, 0xca, 0x11, + 0xdf, 0x10, 0xa2, 0x0f, 0x09, 0x0d, 0xd1, 0x0a, 0xc7, 0x0a, 0x0e, 0x0b, 0xc5, 0x0b, 0x2b, 0x0b, + 0x01, 0x09, 0xf5, 0x06, 0xd8, 0x03, 0x38, 0x00, 0x35, 0xfe, 0x72, 0xfd, 0xaa, 0xfd, 0xe1, 0xfe, + 0x4f, 0xfe, 0xf4, 0xfc, 0x4a, 0xfc, 0x35, 0xfd, 0x35, 0xfe, 0x51, 0xfd, 0x15, 0xfd, 0x69, 0xfc, + 0x9e, 0xfa, 0x69, 0xf9, 0xe0, 0xf8, 0xb6, 0xf7, 0x03, 0xf8, 0xda, 0xf8, 0x68, 0xf8, 0x17, 0xf7, + 0x71, 0xf5, 0xf3, 0xf3, 0x60, 0xf3, 0x8c, 0xf2, 0x0d, 0xf2, 0xcb, 0xf2, 0xfe, 0xf4, 0xa7, 0xf5, + 0xcf, 0xf4, 0x2e, 0xf3, 0x78, 0xf1, 0xc0, 0xef, 0x59, 0xef, 0x78, 0xef, 0xcb, 0xef, 0x74, 0xf2, + 0x90, 0xf4, 0x8c, 0xf5, 0x02, 0xf6, 0x12, 0xf7, 0xa4, 0xf9, 0xe0, 0xfa, 0x7e, 0xfb, 0x64, 0xfd, + 0xbf, 0xfe, 0xe5, 0xff, 0x55, 0x02, 0x42, 0x04, 0x5f, 0x05, 0x95, 0x06, 0xfd, 0x06, 0xf3, 0x07, + 0x9b, 0x07, 0xc2, 0x05, 0x18, 0x05, 0x11, 0x05, 0xed, 0x04, 0x4c, 0x07, 0x84, 0x08, 0x98, 0x08, + 0xa7, 0x08, 0x3d, 0x06, 0xdb, 0x02, 0xea, 0x01, 0x91, 0x02, 0xbd, 0x04, 0x77, 0x07, 0x1f, 0x09, + 0x65, 0x0a, 0x2c, 0x0c, 0xb6, 0x0c, 0xcc, 0x0b, 0x87, 0x0a, 0x26, 0x0a, 0xef, 0x09, 0x6c, 0x09, + 0xd5, 0x09, 0x31, 0x09, 0x60, 0x08, 0xc2, 0x06, 0xe8, 0x05, 0xcd, 0x05, 0x07, 0x03, 0xad, 0x01, + 0x39, 0x00, 0xdb, 0xfb, 0xd8, 0xf8, 0x02, 0xf8, 0xdf, 0xf7, 0xd4, 0xf7, 0x73, 0xf7, 0xa0, 0xf6, + 0x04, 0xf4, 0xe7, 0xf0, 0x7d, 0xef, 0x57, 0xed, 0x5a, 0xed, 0x85, 0xef, 0x87, 0xf1, 0x8b, 0xf3, + 0x76, 0xf6, 0xd8, 0xf7, 0xc5, 0xf7, 0xba, 0xf6, 0x5c, 0xf4, 0x8f, 0xf3, 0x9b, 0xf3, 0x7e, 0xf3, + 0x48, 0xf4, 0x67, 0xf5, 0x8f, 0xf4, 0x89, 0xf4, 0xab, 0xf4, 0x10, 0xf5, 0x2e, 0xf5, 0x5a, 0xf4, + 0x5d, 0xf6, 0x00, 0xfa, 0xa4, 0xfb, 0x2e, 0xfe, 0xf0, 0x00, 0x35, 0x02, 0xb6, 0x03, 0x8e, 0x04, + 0x92, 0x04, 0x5b, 0x04, 0x74, 0x04, 0x73, 0x05, 0x30, 0x07, 0x6b, 0x09, 0xc6, 0x0c, 0x5e, 0x0f, + 0x59, 0x10, 0xd5, 0x10, 0x53, 0x10, 0xb8, 0x0f, 0x3f, 0x10, 0xe7, 0x11, 0x4b, 0x13, 0x8b, 0x13, + 0x59, 0x13, 0x77, 0x11, 0x1e, 0x0f, 0xa6, 0x0c, 0xc2, 0x09, 0x9e, 0x07, 0x8f, 0x05, 0xb5, 0x04, + 0xb8, 0x05, 0x1b, 0x06, 0xcf, 0x06, 0xa6, 0x07, 0x1f, 0x06, 0x1e, 0x04, 0x64, 0x07, 0xd7, 0x06, + 0x38, 0x05, 0xa1, 0x04, 0xc7, 0x00, 0xd1, 0xfe, 0xe0, 0xff, 0xc8, 0x00, 0x8f, 0x00, 0x39, 0xff, + 0x93, 0xfd, 0x8e, 0xfc, 0xb4, 0xf9, 0xda, 0xf6, 0x2f, 0xf6, 0xa1, 0xf5, 0x59, 0xf6, 0x17, 0xf6, + 0x65, 0xf5, 0x46, 0xf7, 0x60, 0xf8, 0xe8, 0xf6, 0xa5, 0xf6, 0x66, 0xf5, 0xc0, 0xf4, 0xb3, 0xf7, + 0x19, 0xfa, 0xb1, 0xfb, 0x37, 0xfe, 0x3a, 0xff, 0x41, 0x00, 0xc2, 0x00, 0x0d, 0x01, 0x5d, 0x02, + 0xe6, 0x01, 0x9b, 0x02, 0x92, 0x05, 0xfd, 0x06, 0x7d, 0x08, 0x8d, 0x0b, 0x77, 0x0e, 0x8c, 0x0f, + 0xf2, 0x0e, 0xce, 0x0d, 0x36, 0x0d, 0xa8, 0x0b, 0x95, 0x09, 0xa9, 0x09, 0xf0, 0x09, 0x21, 0x0a, + 0x74, 0x0b, 0x1b, 0x0a, 0x7f, 0x07, 0x49, 0x06, 0xb3, 0x04, 0xbc, 0x03, 0x26, 0x04, 0x44, 0x05, + 0x09, 0x07, 0xa1, 0x09, 0x17, 0x0a, 0xb3, 0x09, 0xfb, 0x09, 0x1f, 0x08, 0x48, 0x06, 0x12, 0x05, + 0xe8, 0x02, 0xdf, 0x00, 0xf9, 0xff, 0xd9, 0xff, 0x91, 0xff, 0x93, 0xfd, 0xb2, 0xf9, 0x14, 0xfc, + 0xcd, 0xf9, 0x4b, 0xf4, 0xa2, 0xf3, 0x9d, 0xf0, 0xb0, 0xed, 0xb5, 0xee, 0x95, 0xef, 0x45, 0xee, + 0x87, 0xec, 0xb5, 0xeb, 0x23, 0xeb, 0xf1, 0xe8, 0xa1, 0xe7, 0xcf, 0xe8, 0x47, 0xea, 0x2f, 0xec, + 0x35, 0xef, 0xa9, 0xf0, 0x66, 0xf2, 0xfb, 0xf3, 0x29, 0xf3, 0x7f, 0xf2, 0x38, 0xf2, 0x64, 0xf3, + 0x50, 0xf5, 0x7a, 0xf6, 0xd8, 0xf5, 0x95, 0xf8, 0x74, 0xfa, 0x85, 0xf9, 0x68, 0xf9, 0x21, 0xf9, + 0xbf, 0xf9, 0x8b, 0xfa, 0x80, 0xfc, 0xd4, 0xff, 0x2b, 0x02, 0x0d, 0x04, 0x58, 0x07, 0x5c, 0x09, + 0xc0, 0x08, 0xed, 0x08, 0xbd, 0x08, 0x76, 0x08, 0xe2, 0x08, 0xed, 0x09, 0x80, 0x0b, 0xbe, 0x0d, + 0x7d, 0x10, 0xbb, 0x11, 0x04, 0x10, 0xb3, 0x0c, 0x5d, 0x0b, 0x29, 0x0b, 0x79, 0x09, 0x4b, 0x09, + 0xf8, 0x09, 0x1e, 0x08, 0x9b, 0x06, 0x7a, 0x05, 0x41, 0x03, 0x95, 0x02, 0x06, 0x02, 0x85, 0x01, + 0x23, 0x01, 0x84, 0xff, 0x5f, 0xff, 0x18, 0x00, 0x61, 0x00, 0x35, 0x01, 0xf8, 0x01, 0xc2, 0xfe, + 0xd2, 0x00, 0x41, 0x01, 0x34, 0xfd, 0x08, 0xfe, 0x8e, 0xfd, 0xc1, 0xfb, 0x74, 0xfd, 0x2c, 0x00, + 0xb6, 0xff, 0xca, 0xfe, 0xd9, 0xfc, 0x6a, 0xfb, 0xa3, 0xfa, 0x0a, 0xf9, 0xca, 0xf7, 0xc3, 0xf7, + 0xf5, 0xf7, 0x7b, 0xf8, 0x9d, 0xf8, 0x18, 0xf9, 0x23, 0xfa, 0x77, 0xf9, 0x44, 0xf9, 0xfe, 0xf9, + 0xf2, 0xf9, 0x66, 0xfb, 0xd5, 0xfc, 0x76, 0xfd, 0xfb, 0xff, 0xfd, 0x02, 0x54, 0x03, 0xa3, 0x02, + 0xd3, 0x02, 0x61, 0x04, 0xb0, 0x04, 0x6e, 0x05, 0xc5, 0x06, 0x39, 0x08, 0xd6, 0x09, 0x86, 0x0b, + 0x30, 0x0d, 0xee, 0x0c, 0xe3, 0x0a, 0x46, 0x08, 0x11, 0x08, 0x8d, 0x07, 0xee, 0x06, 0x10, 0x08, + 0xa9, 0x08, 0x57, 0x09, 0xe2, 0x09, 0x75, 0x08, 0xca, 0x06, 0x4c, 0x06, 0x36, 0x07, 0x9b, 0x08, + 0x73, 0x0a, 0xfe, 0x0c, 0x86, 0x0d, 0x96, 0x0e, 0x7d, 0x0e, 0x16, 0x0d, 0x59, 0x0c, 0x53, 0x0c, + 0xd8, 0x0b, 0x13, 0x0b, 0x5c, 0x0a, 0x07, 0x09, 0x4c, 0x08, 0xe9, 0x07, 0x6c, 0x07, 0xf0, 0x06, + 0x59, 0x02, 0xea, 0x02, 0xbd, 0x01, 0xa4, 0xfb, 0x3a, 0xfb, 0xe8, 0xfa, 0xc8, 0xf7, 0x55, 0xf8, + 0xcb, 0xfa, 0xd7, 0xf9, 0x35, 0xf7, 0x54, 0xf4, 0xd6, 0xf2, 0x0b, 0xf2, 0x4a, 0xf1, 0xaa, 0xf1, + 0x01, 0xf4, 0x10, 0xf6, 0xfa, 0xf7, 0xd5, 0xf8, 0xd0, 0xf8, 0x5d, 0xf8, 0xc1, 0xf6, 0xa3, 0xf5, + 0x71, 0xf4, 0xa8, 0xf2, 0xb8, 0xf3, 0x79, 0xf4, 0xc1, 0xf2, 0x44, 0xf4, 0x1f, 0xf5, 0xb4, 0xf3, + 0xb1, 0xf2, 0x41, 0xf3, 0x4b, 0xf5, 0xdd, 0xf5, 0x22, 0xf7, 0xed, 0xf9, 0x75, 0xfc, 0xf3, 0xfd, + 0xcf, 0xff, 0x75, 0x01, 0x0c, 0x01, 0xb9, 0x00, 0xe2, 0xff, 0xd8, 0x00, 0xcc, 0x01, 0x12, 0x02, + 0x75, 0x04, 0xee, 0x05, 0xde, 0x06, 0x07, 0x08, 0x52, 0x07, 0x8b, 0x05, 0x69, 0x05, 0xda, 0x05, + 0x23, 0x06, 0x47, 0x06, 0x6b, 0x06, 0xe5, 0x05, 0xb9, 0x04, 0x36, 0x02, 0x24, 0x00, 0x1b, 0xfe, + 0xe6, 0xfd, 0x6c, 0xfe, 0xda, 0xfe, 0xd8, 0xfe, 0x04, 0xff, 0x4d, 0xff, 0x0f, 0x00, 0x36, 0x01, + 0x2f, 0x02, 0x8a, 0xfd, 0x18, 0xff, 0x7d, 0xfe, 0x13, 0xfa, 0xe9, 0xfb, 0x01, 0xfc, 0xde, 0xf9, + 0x68, 0xfa, 0xb5, 0xfc, 0x04, 0xfc, 0x90, 0xf8, 0x7d, 0xf5, 0x9a, 0xf4, 0x7c, 0xf3, 0x0e, 0xf2, + 0x9a, 0xf2, 0x67, 0xf4, 0x45, 0xf6, 0x32, 0xf8, 0xb3, 0xf7, 0x66, 0xf7, 0xba, 0xf7, 0x2e, 0xf7, + 0x27, 0xf8, 0x6a, 0xfa, 0xec, 0xfa, 0xa1, 0xfe, 0x8a, 0x01, 0xc9, 0x00, 0x87, 0x02, 0xf9, 0x02, + 0x10, 0x01, 0xf2, 0xff, 0xba, 0x00, 0x75, 0x04, 0x4b, 0x05, 0x98, 0x06, 0x35, 0x0b, 0xf0, 0x0d, + 0xc0, 0x0e, 0xf1, 0x10, 0x5f, 0x11, 0x37, 0x0f, 0x99, 0x0d, 0x5f, 0x0b, 0x01, 0x0c, 0x1e, 0x0c, + 0x81, 0x0a, 0x20, 0x0a, 0x74, 0x09, 0x04, 0x08, 0x8c, 0x07, 0x50, 0x06, 0x6a, 0x03, 0x17, 0x03, + 0x38, 0x04, 0xa3, 0x05, 0xeb, 0x08, 0x63, 0x0a, 0x00, 0x0b, 0x07, 0x0c, 0x7a, 0x0b, 0x5d, 0x0a, + 0x79, 0x09, 0x41, 0x08, 0x02, 0x08, 0x05, 0x08, 0xf6, 0x05, 0x46, 0x03, 0x7b, 0x01, 0x0a, 0xff, + 0x91, 0xfe, 0xaf, 0xfd, 0x4b, 0xf8, 0xb5, 0xfa, 0xfe, 0xf9, 0x42, 0xf5, 0x0e, 0xf7, 0x77, 0xf6, + 0x74, 0xf3, 0xaa, 0xf4, 0x7c, 0xf6, 0x67, 0xf6, 0x4c, 0xf6, 0xbd, 0xf4, 0x72, 0xf5, 0x9f, 0xf5, + 0x74, 0xf3, 0x7c, 0xf4, 0xbd, 0xf5, 0xea, 0xf6, 0xf0, 0xf9, 0xe2, 0xf9, 0x34, 0xfa, 0xcd, 0xfb, + 0xc9, 0xf9, 0xe7, 0xf8, 0xdf, 0xf8, 0xc9, 0xf7, 0xc9, 0xf9, 0x97, 0xfb, 0x51, 0xfa, 0x40, 0xfc, + 0xb7, 0xfd, 0x17, 0xfd, 0xb7, 0xfd, 0x72, 0xfe, 0x40, 0x00, 0x94, 0x02, 0xd1, 0x04, 0x30, 0x08, + 0x01, 0x0b, 0xcf, 0x0b, 0xd7, 0x0d, 0x74, 0x0f, 0xbb, 0x0e, 0x77, 0x0e, 0x4c, 0x0d, 0x9f, 0x0e, + 0xeb, 0x10, 0x63, 0x11, 0x71, 0x11, 0x0b, 0x12, 0x71, 0x12, 0x2d, 0x12, 0x93, 0x10, 0x51, 0x0c, + 0x6c, 0x0a, 0xa5, 0x08, 0x73, 0x06, 0xf3, 0x06, 0xc2, 0x07, 0xdf, 0x06, 0x19, 0x06, 0x2c, 0x05, + 0x05, 0x02, 0xe7, 0xff, 0xb8, 0xfe, 0xe1, 0xfd, 0x65, 0xfe, 0x01, 0xfe, 0xb4, 0xfe, 0x10, 0x00, + 0xe2, 0xfe, 0xa0, 0xfe, 0x69, 0xfc, 0xaf, 0xf5, 0x41, 0xf8, 0xcd, 0xf6, 0xbc, 0xf3, 0xec, 0xf5, + 0xea, 0xf5, 0x0f, 0xf5, 0x2a, 0xf6, 0x02, 0xf6, 0x13, 0xf4, 0xd3, 0xf1, 0x92, 0xee, 0x89, 0xed, + 0xe4, 0xec, 0x33, 0xeb, 0x5d, 0xec, 0x8a, 0xee, 0x36, 0xf0, 0x82, 0xf2, 0x27, 0xf3, 0x8a, 0xf4, + 0xba, 0xf5, 0x4b, 0xf4, 0xbf, 0xf4, 0x77, 0xf6, 0x96, 0xf7, 0x74, 0xfc, 0x6d, 0xff, 0x77, 0xfd, + 0xb9, 0xfd, 0x87, 0xfe, 0xbc, 0xfc, 0x3c, 0xfb, 0x5a, 0xfc, 0x14, 0xff, 0x38, 0x01, 0x77, 0x03, + 0x20, 0x05, 0xf5, 0x05, 0xc6, 0x04, 0x0f, 0x04, 0x92, 0x03, 0x64, 0x03, 0x10, 0x04, 0xc9, 0x04, + 0x4f, 0x07, 0x50, 0x08, 0xbf, 0x07, 0xf3, 0x05, 0xb8, 0x05, 0xce, 0x05, 0xba, 0x05, 0x7d, 0x05, + 0x13, 0x06, 0x13, 0x07, 0xe8, 0x08, 0x46, 0x0a, 0x69, 0x0a, 0x72, 0x0b, 0x07, 0x0c, 0x8b, 0x0b, + 0x4b, 0x0b, 0xab, 0x0a, 0xf2, 0x0a, 0x27, 0x0b, 0x47, 0x0a, 0x9e, 0x09, 0xc8, 0x09, 0x6e, 0x07, + 0xe4, 0x05, 0x89, 0x05, 0xea, 0x03, 0x6c, 0x00, 0xa5, 0xfe, 0x8f, 0x00, 0xa4, 0xfc, 0x40, 0xfb, + 0x9f, 0xfb, 0xde, 0xf9, 0x7a, 0xf7, 0x8a, 0xf7, 0x48, 0xf7, 0x1b, 0xf7, 0x05, 0xf6, 0x23, 0xf6, + 0x33, 0xf6, 0x69, 0xf5, 0xdd, 0xf4, 0xee, 0xf4, 0xd5, 0xf5, 0x40, 0xf6, 0xcf, 0xf6, 0xb9, 0xf7, + 0xae, 0xf7, 0x02, 0xf6, 0x53, 0xf3, 0x5c, 0xf1, 0xb6, 0xef, 0xbc, 0xef, 0x1c, 0xf2, 0xfe, 0xf1, + 0x9f, 0xf1, 0x02, 0xf4, 0xf9, 0xf4, 0x6f, 0xf4, 0x0e, 0xf4, 0xf4, 0xf5, 0x1d, 0xf9, 0xcd, 0xfa, + 0xd1, 0xff, 0x1e, 0x04, 0xa7, 0x06, 0x0c, 0x08, 0xe9, 0x08, 0x46, 0x08, 0x9a, 0x08, 0xc7, 0x08, + 0x86, 0x09, 0xfc, 0x0b, 0x3a, 0x0d, 0x80, 0x0e, 0x9c, 0x0f, 0x5b, 0x10, 0xdf, 0x10, 0x74, 0x10, + 0x2d, 0x0e, 0x70, 0x0c, 0xb3, 0x0b, 0xc2, 0x0a, 0xa4, 0x0a, 0xab, 0x0b, 0xb0, 0x0c, 0x3f, 0x0c, + 0x74, 0x0b, 0x09, 0x0a, 0xff, 0x07, 0x61, 0x06, 0x64, 0x03, 0x8b, 0x03, 0xbf, 0x03, 0x78, 0x04, + 0xb3, 0x05, 0xb2, 0x06, 0x94, 0x05, 0xdf, 0x02, 0x76, 0xff, 0xde, 0xfe, 0x80, 0xfd, 0x05, 0xfb, + 0x14, 0xfd, 0xc2, 0xfd, 0xc5, 0xfc, 0xb0, 0xfc, 0x6b, 0xfc, 0x11, 0xfa, 0x76, 0xf7, 0xf7, 0xf3, + 0x45, 0xf3, 0xcb, 0xf3, 0x98, 0xf3, 0x74, 0xf4, 0x1f, 0xf6, 0xf3, 0xf6, 0xc5, 0xf8, 0xae, 0xf9, + 0x52, 0xfa, 0x36, 0xfc, 0x80, 0xfc, 0xc1, 0xfd, 0xb4, 0x00, 0x1d, 0x03, 0xea, 0x05, 0x92, 0x08, + 0xa5, 0x07, 0x84, 0x08, 0xb9, 0x09, 0xce, 0x06, 0x58, 0x05, 0x52, 0x06, 0x89, 0x07, 0x61, 0x09, + 0x8b, 0x0c, 0x02, 0x10, 0x14, 0x11, 0x74, 0x0f, 0x39, 0x0d, 0x7a, 0x0c, 0xc3, 0x0a, 0xc8, 0x0a, + 0xc7, 0x0a, 0x43, 0x0b, 0x57, 0x0c, 0x35, 0x0c, 0x14, 0x0a, 0x3c, 0x08, 0x2c, 0x07, 0x7f, 0x05, + 0xb9, 0x04, 0x96, 0x04, 0xab, 0x04, 0x42, 0x05, 0x2b, 0x06, 0xd7, 0x06, 0x21, 0x06, 0x5d, 0x05, + 0xb6, 0x03, 0x2c, 0x02, 0x7c, 0x01, 0x33, 0x00, 0xa4, 0xfd, 0xa9, 0xfb, 0x93, 0xfb, 0x0f, 0xf9, + 0x02, 0xf7, 0x39, 0xf7, 0x4d, 0xf6, 0xb2, 0xf3, 0xee, 0xf2, 0x9c, 0xf1, 0xca, 0xf1, 0xf1, 0xef, + 0xad, 0xef, 0xab, 0xf0, 0xb8, 0xef, 0xbb, 0xee, 0x7e, 0xf0, 0xf1, 0xf1, 0x08, 0xf2, 0x89, 0xf0, + 0x7f, 0xef, 0x56, 0xef, 0x20, 0xef, 0x74, 0xee, 0x5c, 0xee, 0x9a, 0xef, 0x63, 0xf1, 0x08, 0xf3, + 0x36, 0xf5, 0x9c, 0xf6, 0xf3, 0xf6, 0x20, 0xf6, 0xcd, 0xf3, 0x7b, 0xf3, 0x52, 0xf4, 0x5f, 0xf6, + 0xd0, 0xf7, 0xa9, 0xf8, 0x93, 0xfa, 0x41, 0xfc, 0x95, 0xfc, 0xe6, 0xfc, 0x4b, 0xfe, 0x5a, 0xfe, + 0xd2, 0xff, 0x8e, 0x04, 0x48, 0x09, 0xb5, 0x0b, 0x1d, 0x0c, 0x8c, 0x0d, 0xd5, 0x0d, 0x0c, 0x0d, + 0xe9, 0x0b, 0x70, 0x0b, 0x78, 0x0c, 0xd2, 0x0d, 0x1a, 0x0f, 0xd8, 0x0e, 0xcb, 0x0d, 0xfd, 0x0c, + 0xe6, 0x0a, 0xe5, 0x07, 0xcd, 0x05, 0x3e, 0x03, 0x6f, 0x02, 0x4e, 0x03, 0xa6, 0x03, 0xc2, 0x04, + 0xfe, 0x04, 0xff, 0x03, 0xab, 0x03, 0x15, 0x02, 0x3e, 0xff, 0x3c, 0xff, 0x73, 0x00, 0xca, 0x00, + 0xab, 0x01, 0xe5, 0x02, 0xb0, 0x02, 0x84, 0x01, 0x34, 0xfe, 0x08, 0xfb, 0xa1, 0xfa, 0x7c, 0xf8, + 0x0e, 0xf7, 0x5e, 0xf8, 0x57, 0xf8, 0x9b, 0xf8, 0x4b, 0xfa, 0x55, 0xfb, 0x74, 0xfa, 0x68, 0xf7, + 0xc3, 0xf4, 0x3a, 0xf4, 0xe8, 0xf3, 0x2f, 0xf3, 0xe8, 0xf3, 0x6b, 0xf5, 0xbe, 0xf7, 0x1b, 0xfa, + 0x67, 0xfa, 0xd4, 0xfa, 0x48, 0xfb, 0x8d, 0xfb, 0xac, 0xfb, 0x5b, 0xfc, 0x20, 0xff, 0x20, 0x02, + 0x2d, 0x04, 0x71, 0x04, 0x2e, 0x04, 0x4a, 0x03, 0xe7, 0x01, 0xce, 0x01, 0xe1, 0x01, 0x7a, 0x02, + 0x76, 0x03, 0x8f, 0x05, 0xa2, 0x08, 0x66, 0x09, 0xc9, 0x07, 0x40, 0x07, 0x14, 0x07, 0x74, 0x06, + 0xcc, 0x06, 0x28, 0x07, 0x0d, 0x08, 0xad, 0x09, 0xde, 0x09, 0x32, 0x08, 0x41, 0x08, 0x17, 0x09, + 0x45, 0x09, 0xe1, 0x09, 0x69, 0x09, 0x46, 0x09, 0x29, 0x0a, 0x5e, 0x0b, 0x82, 0x0d, 0x3e, 0x0e, + 0x97, 0x0d, 0xe2, 0x0d, 0x80, 0x0e, 0x33, 0x0e, 0xb1, 0x0d, 0x83, 0x0d, 0x29, 0x0d, 0xa5, 0x0b, + 0x38, 0x09, 0xde, 0x07, 0x1e, 0x08, 0xff, 0x06, 0x3f, 0x05, 0xb5, 0x03, 0x0c, 0x03, 0x2e, 0x03, + 0x12, 0x02, 0x8b, 0x01, 0xbf, 0xff, 0x14, 0xfd, 0x80, 0xfc, 0xf1, 0xfc, 0xd3, 0xfb, 0x83, 0xfb, + 0xf2, 0xfa, 0xdb, 0xfa, 0x84, 0xfa, 0xa1, 0xf8, 0x9c, 0xf5, 0x8a, 0xf4, 0x92, 0xf5, 0x3d, 0xf6, + 0x67, 0xf6, 0xc2, 0xf6, 0x7b, 0xf6, 0x8a, 0xf5, 0x45, 0xf3, 0xf6, 0xef, 0xfb, 0xee, 0x51, 0xef, + 0x6d, 0xf0, 0xc7, 0xf1, 0x36, 0xf2, 0xe9, 0xf2, 0x49, 0xf4, 0x96, 0xf4, 0x8b, 0xf4, 0x1c, 0xf5, + 0x9b, 0xf5, 0x2f, 0xf8, 0x9f, 0xfd, 0xeb, 0x00, 0x0f, 0x03, 0x47, 0x04, 0x83, 0x04, 0x49, 0x05, + 0xc8, 0x04, 0xef, 0x03, 0x4e, 0x04, 0xa6, 0x05, 0x09, 0x07, 0x17, 0x08, 0xfe, 0x08, 0x00, 0x0a, + 0xa1, 0x0a, 0xb4, 0x08, 0x66, 0x06, 0xa4, 0x04, 0xbd, 0x02, 0xdf, 0x01, 0xb2, 0x01, 0xde, 0x02, + 0xfa, 0x03, 0x2e, 0x05, 0xa6, 0x05, 0xe5, 0x02, 0xe8, 0xff, 0x81, 0xfe, 0x26, 0xfd, 0x50, 0xfc, + 0x75, 0xfc, 0xe4, 0xfd, 0xf5, 0xff, 0x42, 0x01, 0x30, 0x00, 0x46, 0xfc, 0x99, 0xf8, 0x72, 0xf8, + 0x6a, 0xf7, 0xd6, 0xf6, 0x54, 0xf6, 0x2d, 0xf5, 0x29, 0xf5, 0x04, 0xf6, 0x3c, 0xf6, 0x08, 0xf5, + 0xa2, 0xf2, 0x2c, 0xf1, 0xb5, 0xf1, 0x29, 0xf1, 0x1f, 0xf0, 0x3e, 0xf1, 0x50, 0xf3, 0x78, 0xf5, + 0x4b, 0xf7, 0xb4, 0xf8, 0x04, 0xfc, 0xb1, 0xfe, 0x1d, 0xff, 0x7a, 0xff, 0x45, 0x00, 0x5d, 0x02, + 0x78, 0x05, 0xb5, 0x07, 0x59, 0x08, 0x6c, 0x08, 0x52, 0x07, 0xd0, 0x05, 0xb1, 0x04, 0xbb, 0x03, + 0x91, 0x05, 0xb2, 0x07, 0xf9, 0x09, 0x91, 0x0c, 0xa3, 0x0d, 0xe9, 0x0c, 0x93, 0x0c, 0xed, 0x0b, + 0x75, 0x0b, 0xcd, 0x0b, 0x75, 0x0d, 0x1e, 0x0f, 0x38, 0x0e, 0x8d, 0x0c, 0x66, 0x0a, 0xe9, 0x08, + 0x0e, 0x08, 0x70, 0x07, 0x28, 0x06, 0x87, 0x05, 0xf9, 0x05, 0xe4, 0x05, 0x37, 0x05, 0x32, 0x05, + 0xf2, 0x04, 0x50, 0x05, 0xa5, 0x05, 0xef, 0x03, 0x03, 0x02, 0x35, 0x01, 0xc7, 0xff, 0x43, 0xfe, + 0x93, 0xfc, 0xc0, 0xfa, 0x65, 0xfb, 0x0f, 0xfc, 0x1e, 0xfa, 0x68, 0xf8, 0x57, 0xf6, 0x98, 0xf5, + 0x7f, 0xf6, 0x55, 0xf5, 0xce, 0xf4, 0xa2, 0xf4, 0xa4, 0xf3, 0x0b, 0xf5, 0xa9, 0xf6, 0x24, 0xf6, + 0xb9, 0xf6, 0x81, 0xf7, 0x05, 0xf8, 0x76, 0xf7, 0xab, 0xf5, 0x96, 0xf3, 0x7e, 0xf3, 0xe8, 0xf3, + 0xaf, 0xf4, 0x05, 0xf7, 0xc5, 0xf9, 0x03, 0xfc, 0x65, 0xfb, 0xaf, 0xf9, 0xb6, 0xf7, 0xc0, 0xf6, + 0x67, 0xf7, 0x2e, 0xf9, 0xbe, 0xfa, 0x8b, 0xfd, 0x55, 0x00, 0x0e, 0x01, 0x6a, 0x01, 0xbb, 0x01, + 0xf3, 0x01, 0x96, 0x02, 0x64, 0x05, 0x30, 0x09, 0xbf, 0x0c, 0x5e, 0x10, 0x6d, 0x12, 0x16, 0x13, + 0xba, 0x11, 0x56, 0x10, 0x2d, 0x10, 0xe9, 0x10, 0x6f, 0x11, 0xa6, 0x11, 0x9b, 0x11, 0x12, 0x11, + 0xc6, 0x11, 0x47, 0x11, 0xb2, 0x0e, 0x94, 0x0d, 0xd1, 0x0b, 0x71, 0x09, 0xd0, 0x08, 0x4b, 0x07, + 0xad, 0x07, 0xed, 0x09, 0x08, 0x0a, 0xea, 0x08, 0x73, 0x07, 0x2a, 0x06, 0xf1, 0x05, 0x74, 0x04, + 0x55, 0x02, 0xdd, 0x01, 0xd3, 0x02, 0x48, 0x04, 0x6a, 0x04, 0x37, 0x02, 0x74, 0xff, 0xd2, 0xfb, + 0x94, 0xfa, 0x9e, 0xf8, 0x07, 0xf7, 0x4e, 0xf6, 0x7e, 0xf5, 0x99, 0xf5, 0xa0, 0xf6, 0x2c, 0xf6, + 0x22, 0xf4, 0x89, 0xf2, 0xc7, 0xf0, 0x49, 0xef, 0x67, 0xee, 0x34, 0xee, 0xb6, 0xee, 0x4b, 0xef, + 0x87, 0xf0, 0x91, 0xf1, 0xb9, 0xf2, 0xde, 0xf4, 0xbf, 0xf5, 0x35, 0xf6, 0x88, 0xf7, 0x31, 0xf9, + 0x31, 0xfb, 0x96, 0xfc, 0xa5, 0xfd, 0xb3, 0xfe, 0x6a, 0xff, 0x21, 0xff, 0x4c, 0xfe, 0x1c, 0xfc, + 0xbb, 0xfa, 0x1c, 0xfc, 0xf9, 0xfc, 0x88, 0xfe, 0x9e, 0x00, 0x37, 0x02, 0xf5, 0x02, 0x0e, 0x03, + 0x66, 0x01, 0xa7, 0x01, 0x03, 0x03, 0x62, 0x04, 0xd4, 0x05, 0xe8, 0x05, 0x0a, 0x06, 0x09, 0x06, + 0x3a, 0x06, 0x82, 0x06, 0x41, 0x06, 0x89, 0x05, 0x0d, 0x06, 0xa7, 0x06, 0x5c, 0x06, 0x6a, 0x06, + 0xfb, 0x06, 0x72, 0x07, 0xe0, 0x07, 0x7a, 0x07, 0xeb, 0x06, 0xc2, 0x06, 0xeb, 0x06, 0x43, 0x06, + 0x54, 0x04, 0xc8, 0x02, 0x0c, 0x02, 0xd0, 0x01, 0xdb, 0x01, 0x7d, 0x01, 0x03, 0x02, 0x4c, 0x00, + 0xe5, 0xfe, 0xe2, 0x00, 0x98, 0xfe, 0x3f, 0xfd, 0x8b, 0xfc, 0xfa, 0xf9, 0x56, 0xf9, 0x35, 0xfa, + 0x9d, 0xf9, 0x30, 0xfa, 0xaa, 0xf9, 0x65, 0xf8, 0x5e, 0xf7, 0x8a, 0xf5, 0x77, 0xf4, 0xdf, 0xf3, + 0x3f, 0xf2, 0x76, 0xf2, 0x5c, 0xf4, 0x5d, 0xf5, 0x1b, 0xf6, 0x27, 0xf5, 0xa5, 0xf3, 0xff, 0xf2, + 0x6c, 0xf1, 0x1b, 0xf1, 0xf1, 0xf2, 0xdd, 0xf3, 0x64, 0xf5, 0x33, 0xf8, 0x25, 0xf9, 0xfd, 0xf8, + 0x98, 0xf9, 0x25, 0xfb, 0xda, 0xfc, 0xa6, 0xfe, 0xaf, 0x01, 0xa9, 0x05, 0x2a, 0x09, 0x3a, 0x0b, + 0x6c, 0x0c, 0x3c, 0x0c, 0xe0, 0x0b, 0x81, 0x0b, 0xf7, 0x0b, 0xc3, 0x0c, 0x48, 0x0d, 0xbd, 0x0d, + 0xed, 0x0d, 0xeb, 0x0d, 0xe6, 0x0d, 0x85, 0x0c, 0x91, 0x0a, 0xd2, 0x08, 0x24, 0x07, 0x27, 0x07, + 0x72, 0x07, 0xcc, 0x08, 0x53, 0x0a, 0x28, 0x0a, 0x87, 0x09, 0x6a, 0x07, 0xa2, 0x05, 0x55, 0x04, + 0x01, 0x02, 0x8d, 0x01, 0x89, 0x02, 0x6e, 0x03, 0x57, 0x04, 0x8e, 0x04, 0x05, 0x03, 0x3d, 0x02, + 0xf7, 0xfd, 0x5f, 0xfb, 0x1b, 0xfc, 0xbe, 0xf9, 0xf2, 0xf8, 0x6f, 0xf9, 0x5b, 0xf8, 0x6f, 0xf9, + 0xb4, 0xfb, 0x5b, 0xfb, 0x19, 0xfb, 0xd8, 0xf9, 0xce, 0xf8, 0xb4, 0xf8, 0x64, 0xf8, 0x90, 0xf8, + 0x2e, 0xfa, 0x1d, 0xfc, 0xe1, 0xfe, 0x8d, 0x01, 0x04, 0x03, 0x8b, 0x04, 0x79, 0x05, 0x5f, 0x06, + 0xa1, 0x07, 0xd7, 0x08, 0x8c, 0x0a, 0xf2, 0x0c, 0xff, 0x0c, 0xaa, 0x0c, 0xf2, 0x0b, 0x6e, 0x0a, + 0xbe, 0x08, 0x8d, 0x07, 0x6e, 0x08, 0xfb, 0x08, 0xef, 0x09, 0xd9, 0x0b, 0x79, 0x0c, 0x05, 0x0d, + 0xea, 0x0c, 0x44, 0x0d, 0x79, 0x0d, 0xc2, 0x0d, 0x2c, 0x0e, 0x26, 0x0e, 0x67, 0x0d, 0x63, 0x0c, + 0x8a, 0x0a, 0xce, 0x07, 0xb1, 0x06, 0x68, 0x06, 0x20, 0x05, 0xb3, 0x03, 0x7b, 0x02, 0x96, 0x00, + 0x27, 0x00, 0x86, 0x00, 0x58, 0x00, 0xdc, 0xff, 0x6e, 0xfe, 0xd4, 0xfc, 0x9c, 0xfa, 0x69, 0xf8, + 0xf9, 0xf7, 0xf3, 0xf6, 0xe4, 0xf5, 0x64, 0xf5, 0xba, 0xf3, 0xe4, 0xf2, 0x80, 0xf3, 0xfc, 0xf2, + 0xc7, 0xf2, 0xcd, 0xef, 0x0c, 0xf0, 0x21, 0xf2, 0xf8, 0xef, 0x6d, 0xf0, 0x3a, 0xf0, 0xf7, 0xee, + 0x01, 0xf0, 0xbd, 0xf1, 0x40, 0xf2, 0x86, 0xf2, 0x23, 0xf1, 0x6b, 0xf0, 0x3b, 0xef, 0x51, 0xec, + 0x08, 0xeb, 0x07, 0xeb, 0x41, 0xec, 0xb5, 0xee, 0x19, 0xf0, 0x3e, 0xf1, 0x27, 0xf1, 0xcb, 0xef, + 0x9a, 0xef, 0xf3, 0xef, 0x65, 0xf0, 0xd6, 0xf2, 0xaa, 0xf6, 0x85, 0xf8, 0x30, 0xfa, 0x35, 0xfc, + 0x67, 0xfc, 0xd5, 0xfb, 0x0e, 0xfc, 0x41, 0xfe, 0x15, 0x00, 0xeb, 0x02, 0x98, 0x07, 0xc7, 0x09, + 0xa4, 0x0a, 0x5d, 0x0c, 0xe1, 0x0c, 0xea, 0x0b, 0x62, 0x0b, 0xb8, 0x0a, 0xea, 0x0b, 0x62, 0x0c, + 0xa3, 0x0b, 0x44, 0x0c, 0x2c, 0x0c, 0x1e, 0x0c, 0xc7, 0x0c, 0x40, 0x0b, 0x45, 0x08, 0x05, 0x06, + 0x33, 0x05, 0xe0, 0x04, 0x2b, 0x05, 0x6d, 0x06, 0x19, 0x07, 0xdd, 0x07, 0x84, 0x07, 0xc6, 0x05, + 0x0b, 0x04, 0x66, 0x02, 0x72, 0x01, 0x41, 0x02, 0xe4, 0x02, 0x4e, 0x03, 0x96, 0x03, 0xed, 0x02, + 0xc3, 0x01, 0x4c, 0x00, 0x40, 0xfb, 0x5f, 0xfa, 0x81, 0xfa, 0x9e, 0xf7, 0xd7, 0xf8, 0xbb, 0xf8, + 0xf3, 0xf6, 0x89, 0xf7, 0xe1, 0xf8, 0x91, 0xf8, 0xac, 0xf7, 0x73, 0xf6, 0xe4, 0xf6, 0xb0, 0xf6, + 0xd7, 0xf5, 0x28, 0xf7, 0x80, 0xf8, 0x97, 0xf9, 0x0d, 0xfc, 0x26, 0xfd, 0xf8, 0xfd, 0x83, 0x00, + 0x6b, 0x00, 0x44, 0x00, 0xff, 0x01, 0xe8, 0x02, 0x25, 0x05, 0xa0, 0x06, 0x98, 0x05, 0x5f, 0x05, + 0xd0, 0x04, 0xae, 0x02, 0x34, 0x01, 0x48, 0x00, 0xac, 0x01, 0x91, 0x03, 0x51, 0x05, 0xd0, 0x07, + 0x24, 0x09, 0x82, 0x08, 0xcd, 0x08, 0x59, 0x0a, 0xaa, 0x0a, 0x02, 0x0c, 0x3b, 0x0d, 0x1a, 0x0e, + 0x86, 0x0e, 0x96, 0x0d, 0x41, 0x0c, 0x25, 0x0b, 0x65, 0x0b, 0x17, 0x0c, 0xcf, 0x0b, 0x47, 0x0a, + 0x95, 0x09, 0xd1, 0x09, 0xb1, 0x09, 0x1c, 0x0a, 0x0e, 0x0b, 0xaa, 0x0a, 0xd5, 0x0a, 0xf2, 0x0a, + 0x89, 0x09, 0x35, 0x08, 0xb5, 0x06, 0xc9, 0x05, 0xd4, 0x05, 0x80, 0x05, 0x09, 0x06, 0xf8, 0x06, + 0xf2, 0x05, 0x23, 0x05, 0xb6, 0x05, 0xd2, 0x01, 0x3a, 0x01, 0xa0, 0x02, 0xb1, 0xfe, 0x7d, 0xfe, + 0x24, 0xfe, 0xe5, 0xfb, 0x99, 0xfb, 0x3b, 0xfc, 0x37, 0xfc, 0x39, 0xfb, 0x42, 0xf8, 0x97, 0xf6, + 0x89, 0xf5, 0x2d, 0xf2, 0xe8, 0xf0, 0x7f, 0xf1, 0x79, 0xf1, 0xf1, 0xf2, 0xc2, 0xf3, 0x2c, 0xf3, + 0x64, 0xf3, 0xe9, 0xf1, 0x10, 0xf0, 0x37, 0xf0, 0x9d, 0xf0, 0xb9, 0xf2, 0xc8, 0xf5, 0x8a, 0xf6, + 0x8c, 0xf7, 0x02, 0xf9, 0x25, 0xf9, 0xbb, 0xf8, 0x77, 0xf9, 0x9b, 0xfb, 0x40, 0xfd, 0x6a, 0xff, + 0x50, 0x02, 0xb4, 0x04, 0x53, 0x05, 0xcc, 0x04, 0x4b, 0x05, 0xbb, 0x04, 0xa3, 0x03, 0xe6, 0x03, + 0xfa, 0x04, 0x57, 0x05, 0x43, 0x04, 0x57, 0x03, 0x2f, 0x03, 0xd2, 0x02, 0xa4, 0x02, 0x65, 0x02, + 0xbb, 0x00, 0x5f, 0x00, 0x70, 0x01, 0xc2, 0x01, 0x91, 0x01, 0xfd, 0x02, 0xac, 0x02, 0x9f, 0x01, + 0x93, 0x00, 0x3e, 0xfe, 0x56, 0xfc, 0xe8, 0xfa, 0xc8, 0xf9, 0xb3, 0xfa, 0x87, 0xfb, 0xd7, 0xfa, + 0xaf, 0xfa, 0xe7, 0xf9, 0x1d, 0xf8, 0x0a, 0xf7, 0xa2, 0xf2, 0xe2, 0xf0, 0x71, 0xf3, 0xbc, 0xf1, + 0x28, 0xf3, 0x52, 0xf5, 0x8d, 0xf4, 0xa0, 0xf4, 0x5a, 0xf6, 0x71, 0xf6, 0x53, 0xf5, 0xd2, 0xf3, + 0xbc, 0xf4, 0x4e, 0xf6, 0xe4, 0xf6, 0x9d, 0xf8, 0xb1, 0xfa, 0x85, 0xfc, 0xde, 0xfe, 0xe5, 0x00, + 0x6e, 0x02, 0xae, 0x04, 0x31, 0x06, 0x45, 0x07, 0x76, 0x09, 0xbd, 0x0a, 0x0d, 0x0c, 0x05, 0x0d, + 0x41, 0x0b, 0x56, 0x0a, 0x03, 0x0b, 0xc8, 0x08, 0xb2, 0x06, 0x98, 0x06, 0xd6, 0x07, 0x63, 0x09, + 0xa9, 0x0a, 0x27, 0x0d, 0x89, 0x0e, 0xb2, 0x0e, 0xf7, 0x0e, 0x96, 0x0f, 0xc8, 0x0f, 0x3b, 0x0f, + 0xf9, 0x0e, 0x62, 0x0f, 0x15, 0x0f, 0x5b, 0x0d, 0x4b, 0x0b, 0x98, 0x08, 0x85, 0x07, 0xbd, 0x06, + 0x59, 0x05, 0xcb, 0x03, 0xf4, 0x02, 0x8f, 0x02, 0x9b, 0x01, 0x82, 0x00, 0x37, 0x00, 0x85, 0xff, + 0xde, 0xfe, 0x95, 0xfe, 0xe2, 0xfd, 0xda, 0xfc, 0x4f, 0xfb, 0xde, 0xfa, 0x33, 0xfb, 0x97, 0xfa, + 0x9e, 0xfa, 0x4a, 0xfb, 0x9f, 0xfb, 0xd2, 0xfb, 0x53, 0xfc, 0x68, 0xf9, 0xbb, 0xf7, 0x0e, 0xfa, + 0x8f, 0xf7, 0x35, 0xf7, 0x10, 0xf9, 0x62, 0xf8, 0x64, 0xf7, 0x6d, 0xf8, 0x19, 0xf8, 0x1b, 0xf6, + 0x05, 0xf3, 0x24, 0xf2, 0xee, 0xf2, 0x33, 0xf2, 0x09, 0xf2, 0x98, 0xf2, 0x30, 0xf3, 0x87, 0xf4, + 0x49, 0xf4, 0xa4, 0xf4, 0x17, 0xf6, 0x71, 0xf6, 0x69, 0xf7, 0x4e, 0xf9, 0x12, 0xfb, 0x93, 0xfd, + 0x8a, 0x00, 0x19, 0x01, 0x8d, 0x01, 0x21, 0x03, 0x75, 0x03, 0x99, 0x02, 0x91, 0x03, 0xe1, 0x06, + 0x45, 0x09, 0x68, 0x0b, 0x1d, 0x0e, 0xcd, 0x0f, 0x91, 0x0f, 0x3a, 0x0f, 0x70, 0x0f, 0x15, 0x0e, + 0x35, 0x0d, 0x15, 0x0d, 0xeb, 0x0d, 0x27, 0x0f, 0x83, 0x0f, 0x5f, 0x0f, 0x3f, 0x0e, 0x8a, 0x0c, + 0x6d, 0x0b, 0x4d, 0x0a, 0x86, 0x08, 0xc2, 0x08, 0x43, 0x09, 0x24, 0x09, 0xda, 0x09, 0xaf, 0x0a, + 0x30, 0x0a, 0x1f, 0x09, 0xdf, 0x07, 0x6a, 0x05, 0x6e, 0x03, 0x28, 0x02, 0xcb, 0x01, 0x91, 0x02, + 0xef, 0x01, 0x8b, 0x00, 0x20, 0xff, 0x52, 0xfd, 0xf4, 0xfa, 0x6c, 0xf9, 0x20, 0xf4, 0x96, 0xf2, + 0x0a, 0xf5, 0x56, 0xf2, 0x74, 0xf3, 0x51, 0xf5, 0x99, 0xf4, 0xcd, 0xf4, 0x81, 0xf5, 0xd2, 0xf4, + 0x68, 0xf3, 0x29, 0xf1, 0x1e, 0xf2, 0x9b, 0xf3, 0xf0, 0xf3, 0x24, 0xf5, 0xce, 0xf5, 0x41, 0xf6, + 0xbb, 0xf7, 0x56, 0xf8, 0x97, 0xf8, 0x71, 0xfa, 0x19, 0xfb, 0xff, 0xfb, 0x1c, 0xfe, 0xe4, 0xfd, + 0xdd, 0xfe, 0x05, 0x00, 0xe1, 0xfd, 0x79, 0xfd, 0x7a, 0xfe, 0x71, 0xfd, 0x34, 0xfd, 0xe4, 0xfd, + 0xb1, 0xff, 0x45, 0x01, 0x19, 0x02, 0x46, 0x04, 0x05, 0x06, 0x1f, 0x06, 0x73, 0x06, 0x1c, 0x08, + 0x5b, 0x08, 0xec, 0x08, 0x2f, 0x09, 0x4b, 0x09, 0x03, 0x0a, 0xcf, 0x08, 0x89, 0x07, 0x4a, 0x06, + 0x8c, 0x05, 0x32, 0x06, 0xea, 0x05, 0x67, 0x04, 0xa1, 0x04, 0xa0, 0x05, 0x4b, 0x05, 0x73, 0x05, + 0xd8, 0x05, 0x97, 0x04, 0xa5, 0x03, 0x11, 0x03, 0x99, 0x01, 0x83, 0x01, 0x57, 0x02, 0x81, 0x02, + 0x21, 0x03, 0xdb, 0x02, 0xfc, 0x02, 0x8a, 0x03, 0xce, 0x02, 0xa4, 0x02, 0x18, 0x03, 0x3d, 0xfe, + 0x9e, 0xfc, 0x36, 0xff, 0x89, 0xfb, 0x98, 0xfb, 0x1a, 0xfd, 0x3e, 0xfb, 0x06, 0xfa, 0x6e, 0xf9, + 0x9c, 0xf7, 0xda, 0xf4, 0x4f, 0xf1, 0xad, 0xf0, 0x31, 0xf1, 0xac, 0xf0, 0x3b, 0xf1, 0x73, 0xf2, + 0xd8, 0xf2, 0xef, 0xf3, 0x06, 0xf4, 0x27, 0xf3, 0xc0, 0xf4, 0x4e, 0xf5, 0x8f, 0xf5, 0xeb, 0xf7, + 0x9e, 0xf8, 0xff, 0xfa, 0xfc, 0xfd, 0x40, 0xfd, 0x64, 0xfd, 0x7f, 0xff, 0x6c, 0xff, 0xc2, 0xfe, + 0xf4, 0xff, 0x10, 0x03, 0x4b, 0x05, 0x90, 0x06, 0x65, 0x08, 0x55, 0x0a, 0xff, 0x09, 0xc5, 0x08, + 0xc9, 0x08, 0xd4, 0x07, 0x8f, 0x07, 0xe0, 0x07, 0x9c, 0x08, 0x78, 0x09, 0x87, 0x09, 0x6c, 0x08, + 0xed, 0x06, 0x7a, 0x06, 0xd2, 0x05, 0x06, 0x06, 0x2b, 0x05, 0xef, 0x04, 0x2d, 0x06, 0x37, 0x06, + 0x90, 0x05, 0xa3, 0x05, 0x06, 0x04, 0xd6, 0x01, 0x14, 0x00, 0x58, 0xfe, 0x3c, 0xfd, 0xb8, 0xfc, + 0x57, 0xfc, 0x06, 0xfd, 0x64, 0xfc, 0x43, 0xfb, 0x1b, 0xfa, 0xfc, 0xf7, 0xf9, 0xf5, 0x99, 0xf5, + 0xeb, 0xf2, 0x2c, 0xf2, 0x4e, 0xf7, 0x5c, 0xf6, 0x1a, 0xf7, 0x13, 0xfa, 0x53, 0xf9, 0x56, 0xf9, + 0xa0, 0xfa, 0xef, 0xfa, 0xc9, 0xfa, 0x6e, 0xfa, 0x72, 0xfc, 0x78, 0xff, 0xcf, 0x00, 0x3b, 0x02, + 0x73, 0x03, 0xce, 0x03, 0x93, 0x05, 0xab, 0x07, 0x2c, 0x08, 0xb9, 0x0a, 0xda, 0x0c, 0x92, 0x0d, + 0xf7, 0x0e, 0xf1, 0x0e, 0x1b, 0x0f, 0x63, 0x0f, 0xce, 0x0c, 0x97, 0x0a, 0x10, 0x0b, 0xf9, 0x09, + 0xf7, 0x09, 0x47, 0x0c, 0x57, 0x0e, 0xf7, 0x0f, 0xe0, 0x10, 0x99, 0x11, 0x86, 0x12, 0xf7, 0x11, + 0x46, 0x11, 0xb4, 0x11, 0x3a, 0x11, 0x41, 0x10, 0xce, 0x0e, 0x7f, 0x0d, 0x74, 0x0c, 0x55, 0x09, + 0xaa, 0x05, 0x70, 0x02, 0x6d, 0x00, 0xd0, 0xff, 0x25, 0xff, 0x2e, 0xfd, 0xe2, 0xfb, 0x89, 0xfb, + 0x23, 0xfb, 0x9e, 0xfa, 0xf4, 0xfa, 0x6a, 0xfa, 0xc5, 0xf8, 0xf0, 0xf7, 0x9a, 0xf6, 0xaa, 0xf5, + 0x08, 0xf6, 0x53, 0xf6, 0xeb, 0xf6, 0x16, 0xf7, 0xbc, 0xf6, 0x70, 0xf6, 0x4c, 0xf5, 0x63, 0xf5, + 0x53, 0xf5, 0x27, 0xf2, 0xd7, 0xef, 0xfb, 0xf3, 0x14, 0xf4, 0xa2, 0xf3, 0x8e, 0xf5, 0x2c, 0xf4, + 0xf1, 0xf1, 0xa1, 0xf1, 0xa4, 0xf0, 0x58, 0xee, 0x84, 0xec, 0x40, 0xec, 0x2e, 0xed, 0x80, 0xec, + 0xd5, 0xeb, 0x6f, 0xed, 0xa6, 0xee, 0xf3, 0xef, 0x17, 0xf1, 0x9d, 0xf1, 0x4a, 0xf3, 0xe2, 0xf4, + 0x73, 0xf6, 0x5f, 0xf9, 0x2b, 0xfb, 0x5b, 0xfd, 0x12, 0x00, 0xce, 0xff, 0x06, 0xff, 0x20, 0x01, + 0x2a, 0x02, 0xf2, 0x01, 0x16, 0x03, 0x9a, 0x05, 0xfe, 0x07, 0xa4, 0x09, 0xe1, 0x0a, 0xa2, 0x0b, + 0xa4, 0x0a, 0x04, 0x09, 0x22, 0x09, 0xf8, 0x09, 0xc7, 0x0a, 0xc0, 0x0b, 0x0f, 0x0d, 0xb5, 0x0e, + 0xa9, 0x0d, 0xd4, 0x0b, 0xfa, 0x09, 0x66, 0x08, 0x6b, 0x08, 0x21, 0x09, 0xeb, 0x07, 0x27, 0x08, + 0x90, 0x09, 0x8a, 0x09, 0x4b, 0x08, 0x61, 0x06, 0x05, 0x05, 0x4d, 0x03, 0xbd, 0x01, 0x1a, 0x00, + 0xfc, 0xfe, 0xb1, 0xfe, 0x7a, 0xff, 0xba, 0xff, 0xb2, 0xfe, 0xe3, 0xfc, 0x80, 0xfa, 0x66, 0xf7, + 0x50, 0xf5, 0xfd, 0xf3, 0x2a, 0xf2, 0xdb, 0xf0, 0xcf, 0xf5, 0xd6, 0xf7, 0xb5, 0xf7, 0xfb, 0xf9, + 0x7c, 0xf9, 0x92, 0xf7, 0x14, 0xf7, 0xf6, 0xf6, 0x62, 0xf6, 0x54, 0xf6, 0xc9, 0xf7, 0x46, 0xfa, + 0xd9, 0xfa, 0x5b, 0xfb, 0xc1, 0xfb, 0x14, 0xfc, 0x3c, 0xfd, 0x63, 0xfe, 0x13, 0xff, 0xd5, 0x00, + 0x4a, 0x02, 0xb7, 0x01, 0x78, 0x02, 0x8b, 0x02, 0x5a, 0x03, 0xbb, 0x04, 0x94, 0x03, 0x7d, 0x02, + 0xc3, 0x03, 0x02, 0x04, 0xf0, 0x03, 0x7c, 0x04, 0x4c, 0x06, 0x3f, 0x09, 0x11, 0x0b, 0x80, 0x0c, + 0x82, 0x0d, 0xd6, 0x0d, 0x88, 0x0d, 0x6f, 0x0e, 0x82, 0x0e, 0xa7, 0x0e, 0xd5, 0x0e, 0x85, 0x0e, + 0x50, 0x0e, 0xad, 0x0b, 0x9e, 0x08, 0x3e, 0x07, 0x77, 0x06, 0x1b, 0x07, 0xc4, 0x07, 0xee, 0x06, + 0x14, 0x07, 0xf0, 0x07, 0xcc, 0x06, 0xe0, 0x05, 0xaf, 0x05, 0x77, 0x06, 0xf1, 0x06, 0x27, 0x07, + 0xd2, 0x06, 0x36, 0x06, 0x85, 0x06, 0x9f, 0x07, 0x2c, 0x08, 0xbc, 0x08, 0x91, 0x08, 0xc1, 0x07, + 0xfe, 0x05, 0x7f, 0x04, 0x21, 0x03, 0x0c, 0x00, 0xb2, 0xfd, 0xfc, 0xfd, 0xac, 0xff, 0x26, 0xfe, + 0x31, 0xfe, 0xc0, 0xfd, 0x48, 0xfa, 0x96, 0xf6, 0x7a, 0xf5, 0xc2, 0xf4, 0x32, 0xf3, 0x21, 0xf3, + 0x6a, 0xf4, 0x74, 0xf4, 0x1e, 0xf4, 0x97, 0xf4, 0xc7, 0xf4, 0xdb, 0xf4, 0xcd, 0xf5, 0x16, 0xf6, + 0xbc, 0xf5, 0xf2, 0xf6, 0xd7, 0xf7, 0x03, 0xfa, 0x27, 0xfc, 0x8a, 0xfc, 0xf6, 0xfd, 0xe2, 0xfd, + 0xfe, 0xfc, 0x0f, 0xfe, 0x85, 0xfe, 0x74, 0xfe, 0x30, 0xff, 0x48, 0x01, 0x82, 0x04, 0xd5, 0x05, + 0x12, 0x06, 0x25, 0x06, 0x00, 0x05, 0xfb, 0x02, 0xf7, 0x00, 0xb1, 0x01, 0x60, 0x03, 0x83, 0x04, + 0x49, 0x05, 0xf3, 0x05, 0xad, 0x04, 0x68, 0x02, 0xde, 0x00, 0xdd, 0xff, 0x5b, 0x00, 0x08, 0x02, + 0xa1, 0x02, 0x2a, 0x02, 0x2d, 0x02, 0x03, 0x01, 0x17, 0xfe, 0x96, 0xfc, 0x19, 0xfb, 0xfd, 0xf8, + 0x69, 0xf7, 0x01, 0xf6, 0x55, 0xf5, 0x01, 0xf5, 0x0e, 0xf5, 0xc6, 0xf4, 0xf3, 0xf3, 0xe3, 0xf2, + 0xcb, 0xf1, 0x06, 0xf0, 0x7a, 0xef, 0xf9, 0xf0, 0x13, 0xf1, 0xa7, 0xf0, 0x3e, 0xf3, 0xe6, 0xf5, + 0x6d, 0xf8, 0xa3, 0xfa, 0x89, 0xfa, 0x05, 0xf9, 0x1b, 0xf8, 0x8c, 0xf8, 0x41, 0xfa, 0x15, 0xfb, + 0xba, 0xfb, 0xe8, 0xfd, 0x2e, 0xff, 0x76, 0xff, 0xbe, 0xff, 0x91, 0x00, 0xb3, 0x02, 0xa3, 0x04, + 0x26, 0x06, 0x9c, 0x07, 0x98, 0x08, 0xaa, 0x09, 0x3c, 0x0a, 0xfc, 0x08, 0x78, 0x07, 0x89, 0x07, + 0x45, 0x08, 0x41, 0x08, 0xe6, 0x08, 0x9b, 0x09, 0x26, 0x09, 0x7f, 0x09, 0xde, 0x0a, 0x83, 0x0d, + 0xa4, 0x0f, 0x26, 0x10, 0x2e, 0x10, 0xf1, 0x0f, 0x06, 0x0f, 0x46, 0x0e, 0x9a, 0x0d, 0xde, 0x0c, + 0x18, 0x0b, 0x95, 0x08, 0xb4, 0x06, 0x2a, 0x05, 0xee, 0x02, 0xdc, 0xff, 0x58, 0xfd, 0x35, 0xfc, + 0xcd, 0xfc, 0x60, 0xfe, 0x3c, 0xfe, 0x19, 0xfe, 0x8e, 0xfd, 0x4d, 0xfc, 0xa3, 0xfb, 0x68, 0xfb, + 0x7e, 0xfb, 0xb2, 0xfb, 0x55, 0xfc, 0x27, 0xfc, 0x50, 0xfc, 0xd7, 0xfc, 0xf9, 0xfd, 0x16, 0xff, + 0x6e, 0xfe, 0x0e, 0xfd, 0x9a, 0xfb, 0xee, 0xf9, 0x02, 0xfa, 0x2a, 0xf9, 0x7b, 0xf7, 0x4d, 0xf8, + 0x60, 0xf9, 0x3f, 0xfa, 0x8d, 0xfa, 0x8e, 0xf9, 0xca, 0xf6, 0x2f, 0xf3, 0xce, 0xf0, 0x02, 0xf0, + 0xb0, 0xef, 0x9b, 0xf0, 0x12, 0xf2, 0x84, 0xf3, 0x59, 0xf4, 0xdc, 0xf4, 0x8b, 0xf5, 0x70, 0xf6, + 0xb6, 0xf7, 0x1c, 0xf9, 0xb0, 0xfa, 0xa2, 0xfc, 0xbb, 0xfe, 0x06, 0x01, 0x7a, 0x02, 0xea, 0x02, + 0xe4, 0x03, 0x65, 0x04, 0x04, 0x04, 0x31, 0x04, 0xb9, 0x05, 0x2c, 0x07, 0x2b, 0x08, 0xeb, 0x09, + 0xa8, 0x0b, 0x84, 0x0d, 0xba, 0x0e, 0xe2, 0x0e, 0x64, 0x0e, 0xec, 0x0d, 0xce, 0x0e, 0x65, 0x10, + 0xa5, 0x11, 0x81, 0x12, 0xaa, 0x12, 0x08, 0x12, 0xc3, 0x10, 0x04, 0x0f, 0x57, 0x0c, 0xaa, 0x0a, + 0xc5, 0x0a, 0xd5, 0x0b, 0x96, 0x0c, 0x4d, 0x0c, 0x6f, 0x0b, 0x87, 0x09, 0x08, 0x07, 0xd7, 0x04, + 0x75, 0x03, 0x30, 0x02, 0x20, 0x01, 0x95, 0x00, 0x33, 0x00, 0xb4, 0xff, 0xe3, 0xfe, 0xa9, 0xfd, + 0x0d, 0xfb, 0x68, 0xf8, 0x83, 0xf6, 0x62, 0xf4, 0x0d, 0xf3, 0x64, 0xf3, 0x45, 0xf4, 0x06, 0xf5, + 0xf6, 0xf5, 0x93, 0xf7, 0x97, 0xf8, 0x8d, 0xf8, 0xed, 0xf8, 0xd4, 0xf8, 0x4a, 0xf7, 0x70, 0xf6, + 0xa8, 0xf6, 0x4c, 0xf7, 0x01, 0xf8, 0xbe, 0xf7, 0x9a, 0xf7, 0xa5, 0xf7, 0x57, 0xf7, 0xf3, 0xf7, + 0x88, 0xf8, 0x20, 0xf9, 0xc5, 0xfa, 0x66, 0xfc, 0x74, 0xfd, 0x9b, 0xfe, 0x99, 0xff, 0x59, 0x00, + 0xc0, 0x00, 0xf3, 0x00, 0x3a, 0x01, 0x92, 0x01, 0xa8, 0x01, 0x8a, 0x02, 0xbd, 0x03, 0x24, 0x05, + 0x73, 0x06, 0x25, 0x08, 0x53, 0x09, 0x87, 0x09, 0x81, 0x09, 0x3e, 0x0a, 0x60, 0x0a, 0x31, 0x09, + 0xab, 0x08, 0xff, 0x07, 0xbd, 0x06, 0xa8, 0x05, 0x72, 0x04, 0xac, 0x03, 0x95, 0x02, 0x32, 0x01, + 0x6b, 0x00, 0x74, 0xff, 0x33, 0xff, 0x91, 0xff, 0x50, 0x00, 0x68, 0x01, 0xf2, 0x01, 0xce, 0x01, + 0x44, 0x01, 0x65, 0x00, 0x15, 0x00, 0x2e, 0x00, 0xc4, 0x00, 0x75, 0x01, 0xdf, 0x01, 0xe6, 0x02, + 0xf5, 0x03, 0x47, 0x03, 0x3d, 0x03, 0xae, 0x02, 0x6e, 0xff, 0x75, 0xfc, 0xa5, 0xfa, 0xd9, 0xf9, + 0xf7, 0xf9, 0x1c, 0xfa, 0x0b, 0xfa, 0x2c, 0xf9, 0xff, 0xf7, 0x07, 0xf7, 0x8e, 0xf5, 0x7d, 0xf3, + 0x1a, 0xf2, 0xc2, 0xf1, 0x52, 0xf1, 0xd6, 0xf1, 0xbb, 0xf2, 0x0d, 0xf4, 0x09, 0xf5, 0xb0, 0xf4, + 0x6e, 0xf4, 0x4d, 0xf4, 0x09, 0xf5, 0xcb, 0xf6, 0xc1, 0xf8, 0x76, 0xfa, 0x90, 0xfc, 0x2b, 0xfe, + 0xbe, 0xfe, 0xc4, 0xfe, 0xde, 0xfe, 0x1d, 0xff, 0x60, 0xff, 0x5b, 0x00, 0x42, 0x02, 0x57, 0x04, + 0x3a, 0x06, 0x67, 0x07, 0x9d, 0x07, 0x23, 0x07, 0x05, 0x06, 0xb6, 0x05, 0x0e, 0x06, 0x0d, 0x07, + 0x73, 0x08, 0xe6, 0x08, 0x5a, 0x09, 0x58, 0x09, 0xdf, 0x08, 0x66, 0x08, 0xae, 0x07, 0x7e, 0x06, + 0xe1, 0x05, 0x41, 0x05, 0x0f, 0x05, 0x67, 0x05, 0xde, 0x04, 0xb0, 0x03, 0x18, 0x02, 0x18, 0x00, + 0xf1, 0xfd, 0x12, 0xfc, 0x75, 0xfa, 0xb3, 0xf8, 0x5f, 0xf7, 0x0f, 0xf7, 0x01, 0xf8, 0x77, 0xf8, + 0x6f, 0xf8, 0x68, 0xf8, 0x50, 0xf7, 0xd0, 0xf6, 0x64, 0xf6, 0xb0, 0xf5, 0x65, 0xf5, 0x23, 0xf6, + 0x9b, 0xf7, 0xb0, 0xf9, 0x6d, 0xfb, 0xbb, 0xfc, 0x3f, 0xfd, 0x59, 0xfd, 0x34, 0xfe, 0xa6, 0xff, + 0x90, 0x00, 0x21, 0x01, 0xd3, 0x01, 0x9a, 0x02, 0x4e, 0x03, 0xcc, 0x03, 0xb9, 0x04, 0xd4, 0x05, + 0x1b, 0x07, 0x7d, 0x08, 0xaf, 0x09, 0xba, 0x0a, 0x4d, 0x0b, 0x8c, 0x0b, 0x18, 0x0c, 0xa1, 0x0c, + 0x01, 0x0d, 0x39, 0x0d, 0x37, 0x0d, 0xc1, 0x0c, 0xa2, 0x0c, 0x02, 0x0d, 0x79, 0x0d, 0x54, 0x0e, + 0xb8, 0x0f, 0x74, 0x11, 0x80, 0x12, 0xea, 0x12, 0x34, 0x13, 0x85, 0x12, 0xa6, 0x11, 0xf8, 0x10, + 0x99, 0x0f, 0xf8, 0x0d, 0xf3, 0x0b, 0x5d, 0x09, 0xa5, 0x06, 0x7f, 0x03, 0xbf, 0x00, 0x63, 0xff, + 0x46, 0xfe, 0x59, 0xfd, 0x5f, 0xfc, 0x94, 0xfb, 0x1b, 0xfb, 0x3d, 0xfb, 0xd3, 0xfb, 0x83, 0xfc, + 0x13, 0xfc, 0x03, 0xfb, 0x33, 0xfa, 0xb2, 0xf9, 0x75, 0xf9, 0x29, 0xf9, 0xa9, 0xf8, 0x04, 0xf9, + 0x82, 0xfa, 0xcc, 0xfb, 0x90, 0xfb, 0x96, 0xfa, 0x58, 0xf9, 0xce, 0xf7, 0x5e, 0xf6, 0xd2, 0xf4, + 0xf0, 0xf3, 0x31, 0xf4, 0xa9, 0xf4, 0x6c, 0xf5, 0x3e, 0xf5, 0x77, 0xf3, 0x16, 0xf1, 0x34, 0xef, + 0x6b, 0xee, 0xda, 0xed, 0x13, 0xee, 0xab, 0xee, 0x51, 0xef, 0x89, 0xef, 0x34, 0xf0, 0x3a, 0xf1, + 0x99, 0xf1, 0xaa, 0xf2, 0x13, 0xf4, 0xc1, 0xf4, 0x13, 0xf6, 0x21, 0xf8, 0x89, 0xfa, 0x8c, 0xfd, + 0xa6, 0xff, 0x5b, 0x00, 0xb8, 0x00, 0x8b, 0x00, 0xa2, 0xff, 0x06, 0x00, 0xe0, 0x00, 0x71, 0x02, + 0x63, 0x04, 0x57, 0x06, 0x37, 0x08, 0x3c, 0x09, 0x1c, 0x09, 0xd3, 0x08, 0x73, 0x08, 0x7a, 0x08, + 0x1a, 0x0a, 0x91, 0x0b, 0xb1, 0x0c, 0x2c, 0x0d, 0x3e, 0x0d, 0x5d, 0x0c, 0x9a, 0x0a, 0xfc, 0x08, + 0x41, 0x08, 0xa0, 0x08, 0x2d, 0x09, 0x0a, 0x09, 0x3b, 0x08, 0x55, 0x07, 0xc1, 0x06, 0xbf, 0x05, + 0x92, 0x04, 0xc5, 0x02, 0x86, 0x00, 0xe0, 0xfe, 0xd5, 0xfd, 0x18, 0xfd, 0x37, 0xfc, 0x7c, 0xfb, + 0x56, 0xfa, 0xb2, 0xf9, 0xbc, 0xf9, 0x0e, 0xf9, 0x0c, 0xf8, 0xfe, 0xf6, 0x0a, 0xf6, 0x11, 0xf6, + 0x9a, 0xf6, 0x56, 0xf7, 0x87, 0xf8, 0x36, 0xf9, 0xe2, 0xf9, 0x5e, 0xfa, 0x86, 0xfa, 0x8f, 0xfa, + 0x97, 0xfa, 0x62, 0xfa, 0x15, 0xfa, 0xd4, 0xf9, 0x73, 0xf9, 0x52, 0xf9, 0x74, 0xf9, 0xfd, 0xf8, + 0xfe, 0xf8, 0xa6, 0xf9, 0x3e, 0xfa, 0x8e, 0xfb, 0xd8, 0xfc, 0x14, 0xfe, 0x24, 0xff, 0x46, 0x00, + 0x20, 0x02, 0x80, 0x03, 0x1a, 0x04, 0xad, 0x04, 0x85, 0x04, 0x1a, 0x04, 0xd4, 0x04, 0x85, 0x05, + 0x53, 0x06, 0xeb, 0x07, 0x43, 0x0a, 0x46, 0x0c, 0x28, 0x0d, 0x5f, 0x0d, 0xda, 0x0c, 0xc1, 0x0c, + 0xac, 0x0c, 0xaf, 0x0c, 0x92, 0x0c, 0xe7, 0x0b, 0x76, 0x0b, 0x75, 0x0a, 0xe7, 0x08, 0x06, 0x07, + 0x64, 0x05, 0x0f, 0x04, 0x96, 0x03, 0x70, 0x03, 0xed, 0x02, 0x4e, 0x03, 0x87, 0x03, 0x08, 0x04, + 0x4f, 0x05, 0xd7, 0x05, 0xdc, 0x05, 0x81, 0x05, 0x5f, 0x04, 0x18, 0x04, 0xa9, 0x04, 0x73, 0x05, + 0x99, 0x06, 0x2c, 0x08, 0x3d, 0x09, 0x9d, 0x09, 0xf9, 0x08, 0x60, 0x07, 0x50, 0x05, 0x21, 0x02, + 0xcf, 0xff, 0xa8, 0xfe, 0xce, 0xfd, 0xcd, 0xfd, 0xdc, 0xfd, 0xa7, 0xfd, 0x2e, 0xfd, 0x7a, 0xfb, + 0x28, 0xf9, 0xc1, 0xf7, 0xd4, 0xf6, 0x20, 0xf7, 0xc7, 0xf7, 0x46, 0xf8, 0xd9, 0xf8, 0x8b, 0xf9, + 0x83, 0xf9, 0xb5, 0xf8, 0x41, 0xf8, 0x44, 0xf8, 0x7b, 0xf8, 0x5c, 0xf9, 0x3f, 0xfa, 0x4f, 0xfb, + 0x88, 0xfc, 0x0c, 0xfe, 0x48, 0xff, 0xeb, 0xfe, 0x02, 0xfe, 0x95, 0xfd, 0x78, 0xfd, 0xf8, 0xfd, + 0xfb, 0xfe, 0x35, 0x00, 0x47, 0x01, 0xb4, 0x02, 0x5e, 0x03, 0x18, 0x03, 0xf5, 0x02, 0x9f, 0x02, + 0x8b, 0x02, 0xbf, 0x02, 0x5a, 0x03, 0x2b, 0x04, 0x1b, 0x05, 0x5d, 0x05, 0xd0, 0x04, 0xec, 0x03, + 0x6c, 0x02, 0xf8, 0x01, 0xa8, 0x01, 0x1f, 0x01, 0x2d, 0x01, 0x93, 0x00, 0x23, 0x00, 0x9e, 0xff, + 0x99, 0xfd, 0x76, 0xfb, 0x56, 0xf9, 0x2c, 0xf7, 0x25, 0xf5, 0x6c, 0xf3, 0x4c, 0xf2, 0x77, 0xf1, + 0x26, 0xf1, 0xba, 0xf1, 0x8e, 0xf2, 0x51, 0xf3, 0xef, 0xf3, 0xc6, 0xf3, 0xdc, 0xf2, 0x92, 0xf2, + 0x95, 0xf3, 0xed, 0xf4, 0x5e, 0xf6, 0xbd, 0xf7, 0x96, 0xf8, 0x8a, 0xf9, 0x86, 0xfa, 0x75, 0xfb, + 0xdd, 0xfb, 0xe0, 0xfb, 0x14, 0xfc, 0x88, 0xfc, 0x28, 0xfd, 0xc4, 0xfd, 0x8d, 0xfe, 0xdc, 0xff, + 0xb8, 0x00, 0x50, 0x01, 0xc9, 0x01, 0x44, 0x02, 0xbb, 0x02, 0x41, 0x03, 0x1c, 0x04, 0xae, 0x04, + 0x15, 0x05, 0x41, 0x06, 0xab, 0x07, 0x3b, 0x08, 0x82, 0x08, 0xac, 0x08, 0x65, 0x08, 0x79, 0x08, + 0x70, 0x08, 0xe8, 0x08, 0x75, 0x0a, 0xea, 0x0b, 0xa3, 0x0d, 0xd7, 0x0e, 0x08, 0x0f, 0x91, 0x0e, + 0xdc, 0x0d, 0xce, 0x0c, 0x8f, 0x0b, 0x6d, 0x0a, 0x01, 0x09, 0x0d, 0x07, 0xcc, 0x04, 0xdc, 0x02, + 0x1b, 0x01, 0x80, 0xff, 0x61, 0xfe, 0x2b, 0xfd, 0x21, 0xfc, 0xa3, 0xfc, 0x85, 0xfd, 0xe8, 0xfd, + 0x77, 0xfe, 0x9e, 0xff, 0x8d, 0xff, 0xe2, 0xfe, 0x0a, 0xfe, 0xba, 0xfc, 0xd9, 0xfb, 0x9b, 0xfb, + 0x83, 0xfc, 0x45, 0xfd, 0x35, 0xfe, 0x3f, 0xff, 0x95, 0xff, 0x78, 0xff, 0x21, 0xfe, 0x2a, 0xfc, + 0xb1, 0xfa, 0x2e, 0xfa, 0x58, 0xfa, 0x76, 0xfa, 0xa5, 0xfa, 0x2f, 0xfa, 0x45, 0xf9, 0x02, 0xf9, + 0x4d, 0xf8, 0xe5, 0xf6, 0x9e, 0xf5, 0x7f, 0xf4, 0xf1, 0xf3, 0x91, 0xf4, 0xbb, 0xf5, 0xbd, 0xf6, + 0xb5, 0xf7, 0x14, 0xf8, 0x91, 0xf8, 0xe4, 0xf8, 0x72, 0xf9, 0x37, 0xfa, 0xd6, 0xfa, 0x45, 0xfc, + 0x6a, 0xfe, 0x87, 0x00, 0x15, 0x02, 0xd2, 0x02, 0x03, 0x03, 0xc9, 0x02, 0x22, 0x02, 0x04, 0x02, + 0xf4, 0x02, 0x6b, 0x04, 0x56, 0x06, 0x8c, 0x08, 0x01, 0x0a, 0x5c, 0x0b, 0xc3, 0x0c, 0xaf, 0x0d, + 0x4b, 0x0e, 0xa9, 0x0e, 0x7f, 0x0f, 0xef, 0x10, 0x31, 0x12, 0xc3, 0x12, 0xcb, 0x12, 0xf9, 0x11, + 0xd6, 0x10, 0xe9, 0x0f, 0xb7, 0x0e, 0xb5, 0x0d, 0x03, 0x0c, 0x6d, 0x0b, 0x82, 0x0b, 0x60, 0x0b, + 0xd7, 0x0a, 0x6b, 0x09, 0x44, 0x08, 0xdf, 0x05, 0x34, 0x03, 0x0c, 0x01, 0x9d, 0xfe, 0x7f, 0xfc, + 0x64, 0xfb, 0xd0, 0xfa, 0xb6, 0xfa, 0x2a, 0xfb, 0xf7, 0xfa, 0x2d, 0xfa, 0xe0, 0xf8, 0xdb, 0xf7, + 0x39, 0xf7, 0xff, 0xf6, 0x2a, 0xf7, 0x8e, 0xf7, 0x09, 0xf8, 0xcc, 0xf8, 0x8b, 0xf9, 0xab, 0xf9, + 0xb8, 0xf9, 0xb9, 0xf9, 0x74, 0xf9, 0xbe, 0xf8, 0x07, 0xf8, 0x08, 0xf7, 0xeb, 0xf6, 0xb3, 0xf6, + 0x11, 0xf7, 0x91, 0xf7, 0xd3, 0xf7, 0xd5, 0xf7, 0x20, 0xf8, 0x7d, 0xf8, 0xcf, 0xf8, 0x7c, 0xfa, + 0x6b, 0xfc, 0xf8, 0xfd, 0x93, 0xff, 0xa9, 0x00, 0x0d, 0x01, 0xfb, 0x00, 0x16, 0x01, 0xca, 0x00, + 0xfb, 0x00, 0x72, 0x01, 0x54, 0x02, 0xda, 0x03, 0x2c, 0x05, 0xdb, 0x06, 0xba, 0x07, 0xbe, 0x05, + 0xb5, 0x04, 0x1e, 0x06, 0xa5, 0x06, 0xd2, 0x06, 0xe3, 0x08, 0xf1, 0x0d, 0xab, 0x08, 0x4a, 0xfe, + 0x17, 0xfe, 0x74, 0xfd, 0xf5, 0xfb, 0xec, 0xfe, 0x09, 0x02, 0x8b, 0x08, 0x4e, 0xfe, 0x67, 0xf9, + 0x29, 0xfd, 0xff, 0xfa, 0x9d, 0xf9, 0xe7, 0x00, 0x32, 0x05, 0x2d, 0x05, 0x43, 0x02, 0x41, 0xff, + 0x91, 0xff, 0xac, 0xfc, 0xcc, 0xfc, 0x07, 0xff, 0xaf, 0x05, 0x4b, 0x06, 0x9a, 0x03, 0x67, 0x02, + 0x23, 0xfe, 0xf9, 0xf9, 0x16, 0xf8, 0x6c, 0xf8, 0x65, 0xfc, 0xf9, 0xfa, 0x26, 0xfb, 0x13, 0xfb, + 0x7f, 0xf8, 0xdf, 0xf7, 0xeb, 0xf7, 0xb2, 0xf6, 0xb1, 0xf4, 0x9d, 0xf2, 0x23, 0xf4, 0xec, 0xf4, + 0x2c, 0xf4, 0x64, 0xf7, 0x88, 0xfb, 0x34, 0xf9, 0xb3, 0xf4, 0x5d, 0xf6, 0x05, 0xf8, 0xe8, 0xf9, + 0xcc, 0xfb, 0xdc, 0xfe, 0x38, 0x00, 0x84, 0xfc, 0x8f, 0xfb, 0x84, 0x00, 0xd5, 0x02, 0xdc, 0x02, + 0xe7, 0x00, 0xa0, 0x00, 0xb4, 0xfd, 0xd5, 0xf9, 0xdc, 0xfc, 0xad, 0x01, 0x21, 0x04, 0xcd, 0x04, + 0x6c, 0x08, 0x68, 0x0a, 0xf4, 0x04, 0x9f, 0x02, 0xb4, 0x03, 0x78, 0x04, 0x8d, 0x06, 0x10, 0x09, + 0xd7, 0x0e, 0x1b, 0x10, 0x57, 0x09, 0x67, 0x06, 0x7b, 0x04, 0x88, 0x03, 0xee, 0x02, 0x5e, 0x05, + 0xc1, 0x09, 0x07, 0x07, 0x63, 0x02, 0x1d, 0xfe, 0xb0, 0xfc, 0x23, 0xfc, 0x38, 0xfa, 0x68, 0xfb, + 0xa3, 0xf9, 0x1d, 0xf5, 0xe4, 0xf2, 0x95, 0xf2, 0x6e, 0xf7, 0x47, 0xfc, 0x62, 0xfe, 0x18, 0x00, + 0xbb, 0xfb, 0x6f, 0xf6, 0x25, 0xf6, 0x26, 0xf8, 0xbd, 0xfb, 0xa7, 0xfe, 0x67, 0x02, 0x7d, 0x04, + 0x8a, 0x02, 0x32, 0x00, 0x43, 0x00, 0x1d, 0x01, 0xda, 0xff, 0x78, 0x00, 0xf9, 0x04, 0x71, 0x07, + 0x49, 0x06, 0x77, 0x03, 0x02, 0x03, 0xe4, 0x04, 0xa8, 0x05, 0xf4, 0x07, 0xe8, 0x0a, 0x92, 0x0b, + 0xa6, 0x08, 0x70, 0x05, 0xb9, 0x06, 0x7e, 0x09, 0x29, 0x0b, 0x75, 0x0d, 0x7c, 0x0f, 0xed, 0x0f, + 0x60, 0x0c, 0x4d, 0x0a, 0x10, 0x0b, 0xbd, 0x09, 0xcb, 0x09, 0xb5, 0x0c, 0xaf, 0x0f, 0x6e, 0x12, + 0xdb, 0x10, 0x9c, 0x0f, 0x28, 0x0f, 0xa4, 0x0c, 0x40, 0x0a, 0x1d, 0x09, 0x2b, 0x09, 0xb6, 0x08, + 0xa7, 0x04, 0x80, 0x02, 0xd7, 0x01, 0x5a, 0xff, 0xc0, 0xfc, 0xe2, 0xfc, 0xd0, 0xfd, 0x8e, 0xfc, + 0x99, 0xfc, 0x5d, 0xfd, 0x0e, 0xfd, 0xdc, 0xfb, 0xa9, 0xfc, 0xfc, 0xfe, 0x1d, 0xff, 0x7a, 0xfc, + 0x60, 0xfb, 0xc7, 0xfa, 0xe7, 0xf8, 0xe5, 0xf6, 0x48, 0xf8, 0x3a, 0xfb, 0x47, 0xfc, 0xbb, 0xfb, + 0x0b, 0xfc, 0xce, 0xfa, 0x74, 0xf6, 0xe3, 0xf2, 0x4a, 0xf2, 0xe7, 0xf3, 0xf5, 0xf4, 0xe6, 0xf4, + 0xe9, 0xf5, 0x61, 0xf6, 0xe0, 0xf3, 0xc3, 0xf1, 0xcd, 0xf1, 0x0e, 0xf2, 0xe7, 0xf1, 0xbb, 0xf1, + 0x9c, 0xf2, 0x7f, 0xf3, 0xdc, 0xf2, 0x91, 0xf3, 0x7f, 0xf5, 0x95, 0xf6, 0xc8, 0xf6, 0x40, 0xf7, + 0x1c, 0xf7, 0xcf, 0xf5, 0x55, 0xf6, 0xc1, 0xf8, 0xef, 0xfb, 0xe5, 0xfd, 0xad, 0xfd, 0xf2, 0xfd, + 0x2b, 0xfd, 0x44, 0xfb, 0xbd, 0xfa, 0x0d, 0xfb, 0x20, 0xfd, 0xec, 0x00, 0x4a, 0x04, 0x7f, 0x06, + 0x48, 0x08, 0x24, 0x08, 0xd1, 0x07, 0x07, 0x07, 0xce, 0x07, 0x7e, 0x0a, 0x5d, 0x0b, 0xed, 0x0b, + 0x74, 0x0c, 0xcf, 0x0a, 0x2c, 0x0a, 0x29, 0x09, 0xbb, 0x08, 0x5c, 0x09, 0xec, 0x06, 0x13, 0x05, + 0x53, 0x05, 0x6d, 0x05, 0x8e, 0x04, 0x08, 0x04, 0x44, 0x04, 0x8d, 0x03, 0x18, 0x01, 0xe9, 0xfd, + 0x72, 0xfb, 0x37, 0xf9, 0x3a, 0xf7, 0x93, 0xf7, 0x93, 0xf9, 0xe8, 0xfa, 0x43, 0xfa, 0xa0, 0xf9, + 0x5a, 0xf9, 0xb8, 0xf7, 0xdb, 0xf7, 0x82, 0xfa, 0x42, 0xfc, 0x99, 0xfb, 0x7d, 0xfa, 0xd4, 0xfa, + 0x3e, 0xfb, 0xa7, 0xfc, 0xc9, 0xfe, 0xe3, 0xff, 0x30, 0x00, 0x43, 0xfe, 0x05, 0xfc, 0x4e, 0xfa, + 0x7e, 0xf9, 0x9d, 0xfa, 0x81, 0xfc, 0xef, 0xfd, 0x07, 0xfe, 0x06, 0xfd, 0x6a, 0xfc, 0x78, 0xfc, + 0x1c, 0xfe, 0x5d, 0x00, 0x6e, 0x02, 0xb4, 0x04, 0xb3, 0x05, 0xa7, 0x06, 0x2a, 0x07, 0x7d, 0x07, + 0x4a, 0x09, 0x1d, 0x09, 0x3b, 0x07, 0xaa, 0x07, 0x9d, 0x07, 0x37, 0x08, 0x57, 0x0a, 0x0f, 0x0b, + 0xbc, 0x0b, 0xc9, 0x0b, 0x51, 0x0a, 0xab, 0x09, 0x18, 0x09, 0x7d, 0x08, 0x94, 0x09, 0xe8, 0x09, + 0x1f, 0x08, 0x6b, 0x06, 0x3c, 0x04, 0xa1, 0x02, 0xf7, 0x01, 0xad, 0x01, 0x32, 0x02, 0x9b, 0x01, + 0xde, 0x00, 0xe4, 0x00, 0xad, 0x01, 0x3e, 0x02, 0x3b, 0x03, 0x7d, 0x05, 0x38, 0x06, 0x24, 0x06, + 0xaf, 0x05, 0x4a, 0x04, 0x42, 0x04, 0xed, 0x02, 0x1e, 0x02, 0x53, 0x04, 0x11, 0x06, 0xf4, 0x06, + 0x1b, 0x07, 0x14, 0x05, 0x64, 0x03, 0x87, 0x01, 0x59, 0xff, 0x4f, 0xff, 0xfd, 0xfe, 0x93, 0xfe, + 0x9c, 0xff, 0x21, 0xff, 0x15, 0xfe, 0x73, 0xfe, 0x19, 0xfe, 0xf4, 0xfc, 0xb4, 0xfb, 0x61, 0xfa, + 0x95, 0xf9, 0xaa, 0xf9, 0xaf, 0xf9, 0x90, 0xfa, 0xc7, 0xfb, 0xa3, 0xfb, 0x3e, 0xfc, 0x70, 0xfc, + 0x38, 0xfb, 0x99, 0xfa, 0x5d, 0xf9, 0xe8, 0xf8, 0x1e, 0xfb, 0xb8, 0xfc, 0x9e, 0xfe, 0x0b, 0x00, + 0x5f, 0xff, 0xf1, 0xfd, 0x0a, 0xfb, 0x86, 0xf8, 0x2f, 0xf9, 0x5e, 0xfb, 0x9d, 0xfd, 0x70, 0xff, + 0xbe, 0x00, 0x56, 0x01, 0xf8, 0x00, 0xe7, 0x00, 0x07, 0x01, 0xd1, 0x00, 0xad, 0x00, 0x64, 0x01, + 0xb2, 0x02, 0x17, 0x03, 0x33, 0x03, 0x59, 0x03, 0x18, 0x02, 0x4c, 0x00, 0xe1, 0xfe, 0xfe, 0xfd, + 0xbc, 0xfd, 0x51, 0xfc, 0x27, 0xfb, 0xd1, 0xfb, 0xda, 0xfb, 0x52, 0xfb, 0xd8, 0xf9, 0xf9, 0xf7, + 0x67, 0xf5, 0x56, 0xf3, 0x5b, 0xf2, 0xd1, 0xf1, 0x2d, 0xf2, 0xc6, 0xf2, 0xcf, 0xf3, 0xd8, 0xf4, + 0xd9, 0xf5, 0x5c, 0xf6, 0x8d, 0xf6, 0x6a, 0xf6, 0x92, 0xf6, 0x3b, 0xf7, 0x8f, 0xf7, 0x01, 0xf9, + 0xd7, 0xfa, 0x6d, 0xfb, 0x49, 0xfc, 0x75, 0xfc, 0x8b, 0xfc, 0x49, 0xfd, 0x72, 0xfd, 0x85, 0xfd, + 0x84, 0xfe, 0x86, 0xfe, 0x5b, 0xff, 0x86, 0x00, 0xb4, 0x00, 0xd7, 0x00, 0x94, 0x00, 0x2a, 0x01, + 0xb8, 0x02, 0x99, 0x03, 0x3e, 0x05, 0xad, 0x07, 0xde, 0x07, 0x13, 0x08, 0x4a, 0x09, 0x55, 0x0a, + 0xbe, 0x0a, 0x48, 0x0a, 0xeb, 0x09, 0x05, 0x0a, 0x37, 0x0a, 0x85, 0x0a, 0xac, 0x0a, 0x2c, 0x0b, + 0xa0, 0x0b, 0xf2, 0x0b, 0x1b, 0x0c, 0xfe, 0x0b, 0xbd, 0x0b, 0xd1, 0x0a, 0xee, 0x09, 0x65, 0x09, + 0x73, 0x08, 0xea, 0x06, 0x8d, 0x05, 0x04, 0x04, 0xac, 0x02, 0x77, 0x01, 0xfe, 0xff, 0xc5, 0xff, + 0xc0, 0xff, 0x28, 0xff, 0x03, 0xff, 0xf7, 0xfe, 0x69, 0xff, 0x32, 0x00, 0xf8, 0x00, 0xfe, 0x01, + 0x51, 0x02, 0x46, 0x01, 0x5b, 0x00, 0xfc, 0xfe, 0x5c, 0xfd, 0xfb, 0xfc, 0xf3, 0xfc, 0xf1, 0xfc, + 0xda, 0xfd, 0x85, 0xfe, 0x46, 0xfe, 0x6e, 0xfd, 0x5e, 0xfb, 0xc5, 0xf9, 0x9f, 0xf8, 0x67, 0xf8, + 0x8b, 0xf8, 0x27, 0xf9, 0x0b, 0xf9, 0x07, 0xf9, 0xa6, 0xf9, 0x32, 0xfa, 0xdc, 0xf9, 0xab, 0xf8, + 0x16, 0xf8, 0x90, 0xf7, 0x2d, 0xf7, 0x69, 0xf8, 0x55, 0xfa, 0xeb, 0xfb, 0x23, 0xfc, 0x2b, 0xfb, + 0x67, 0xfb, 0x92, 0xfb, 0x93, 0xfb, 0x8a, 0xfc, 0x9f, 0xfd, 0x36, 0xff, 0xb6, 0x00, 0xc9, 0x01, + 0xba, 0x03, 0x87, 0x03, 0xab, 0x02, 0x51, 0x02, 0x1e, 0x02, 0xe8, 0x02, 0x98, 0x04, 0x5b, 0x06, + 0xaa, 0x08, 0xde, 0x09, 0xe9, 0x0a, 0x22, 0x0c, 0xea, 0x0b, 0x77, 0x0c, 0xfd, 0x0c, 0x0a, 0x0d, + 0xad, 0x0d, 0xd9, 0x0e, 0xcc, 0x0f, 0x33, 0x10, 0x50, 0x0f, 0x5d, 0x0d, 0x44, 0x0c, 0x8a, 0x0b, + 0x2d, 0x0a, 0x39, 0x09, 0x85, 0x08, 0x6a, 0x07, 0xb0, 0x06, 0x46, 0x06, 0x58, 0x05, 0xed, 0x03, + 0xd2, 0x01, 0x57, 0xff, 0x2e, 0xfd, 0x2f, 0xfb, 0x5f, 0xfa, 0xd9, 0xf9, 0x7f, 0xf9, 0x42, 0xf9, + 0x7d, 0xf9, 0x81, 0xf9, 0x45, 0xf9, 0x52, 0xf9, 0xa7, 0xf8, 0x11, 0xf8, 0x27, 0xf8, 0xe1, 0xf8, + 0x62, 0xf9, 0x89, 0xf9, 0x2d, 0xfa, 0x76, 0xfa, 0x94, 0xf9, 0x9d, 0xf8, 0x97, 0xf8, 0x11, 0xf8, + 0x7d, 0xf7, 0x8d, 0xf7, 0x78, 0xf7, 0xbd, 0xf7, 0x9a, 0xf7, 0x07, 0xf8, 0xef, 0xf8, 0xf3, 0xf8, + 0xe6, 0xf8, 0x5a, 0xfa, 0x06, 0xfc, 0x41, 0xfd, 0xce, 0xfe, 0xec, 0xff, 0x98, 0x01, 0x2f, 0x03, + 0x65, 0x04, 0x5c, 0x05, 0xf3, 0x04, 0x76, 0x04, 0x10, 0x04, 0xf8, 0x03, 0xe1, 0x04, 0xd2, 0x04, + 0x14, 0x05, 0xf9, 0x04, 0x56, 0x04, 0xbe, 0x04, 0x54, 0x05, 0x9c, 0x05, 0x7e, 0x05, 0x45, 0x04, + 0xdf, 0x02, 0x2d, 0x02, 0x64, 0x01, 0x1a, 0x01, 0x87, 0x00, 0x3f, 0xff, 0x8f, 0xfe, 0xc6, 0xfd, + 0x5d, 0xfd, 0xa3, 0xfd, 0x0b, 0xfd, 0x0d, 0xfd, 0x18, 0xfd, 0x73, 0xfd, 0x36, 0xff, 0xfa, 0x00, + 0x0d, 0x02, 0x16, 0x02, 0xb9, 0x01, 0xfa, 0x00, 0xc2, 0xff, 0xe2, 0xfe, 0xc8, 0xfe, 0x37, 0xff, + 0x46, 0xff, 0x43, 0x00, 0xf0, 0x00, 0x24, 0x00, 0xe9, 0xfe, 0x7d, 0xfd, 0xbd, 0xfb, 0xf5, 0xfa, + 0x0a, 0xfb, 0x37, 0xfb, 0xc8, 0xfb, 0xbc, 0xfb, 0x60, 0xfc, 0xc4, 0xfc, 0xad, 0xfc, 0x7f, 0xfc, + 0xa5, 0xfb, 0x8d, 0xfa, 0xb2, 0xf9, 0xbe, 0xf9, 0x10, 0xfb, 0x1d, 0xfc, 0xf8, 0xfc, 0x6a, 0xfd, + 0x9a, 0xfc, 0x6c, 0xfb, 0xcb, 0xfa, 0x2f, 0xfa, 0xf0, 0xf9, 0x2a, 0xfa, 0xcd, 0xfb, 0x7b, 0xfd, + 0x45, 0xfe, 0x13, 0xff, 0xf8, 0xfe, 0x04, 0xfe, 0x2d, 0xfd, 0xfe, 0xfc, 0xf5, 0xfd, 0x7f, 0xff, + 0xe2, 0x00, 0x4d, 0x02, 0x70, 0x03, 0xe1, 0x03, 0x5d, 0x04, 0x7e, 0x04, 0x86, 0x04, 0xce, 0x04, + 0xf1, 0x04, 0x83, 0x05, 0xf8, 0x05, 0x6f, 0x06, 0x07, 0x07, 0x91, 0x06, 0x11, 0x06, 0x1c, 0x05, + 0x31, 0x03, 0x08, 0x02, 0x05, 0x01, 0x2f, 0x00, 0x9c, 0xff, 0x4b, 0xff, 0xb7, 0xff, 0x86, 0xff, + 0x16, 0xfe, 0x91, 0xfc, 0xa5, 0xfa, 0x68, 0xf9, 0xbc, 0xf8, 0xb6, 0xf7, 0x7a, 0xf7, 0x3b, 0xf7, + 0xd8, 0xf6, 0x80, 0xf7, 0xd8, 0xf8, 0xf5, 0xf9, 0xc0, 0xfa, 0x1e, 0xfb, 0x21, 0xfb, 0x99, 0xfa, + 0xac, 0xfa, 0x37, 0xfc, 0x9f, 0xfd, 0x66, 0xfe, 0xfd, 0xfe, 0xd7, 0xff, 0x6b, 0x00, 0x47, 0x00, + 0xe2, 0xff, 0x9b, 0xff, 0x96, 0xff, 0xd1, 0xff, 0x70, 0x01, 0x89, 0x02, 0xe3, 0x02, 0x5a, 0x03, + 0x43, 0x04, 0x5b, 0x05, 0x3e, 0x06, 0xaa, 0x07, 0x84, 0x08, 0x30, 0x09, 0xd3, 0x09, 0xe6, 0x0a, + 0x40, 0x0c, 0xc7, 0x0d, 0xf4, 0x0e, 0x0d, 0x0f, 0x43, 0x0e, 0xde, 0x0d, 0x97, 0x0d, 0x7c, 0x0d, + 0xe1, 0x0c, 0x03, 0x0c, 0xf8, 0x0b, 0xfc, 0x0b, 0xf1, 0x0b, 0x19, 0x0c, 0xfc, 0x0b, 0xeb, 0x0a, + 0x98, 0x09, 0x2c, 0x08, 0x0a, 0x07, 0x17, 0x06, 0x2b, 0x05, 0x63, 0x04, 0x46, 0x03, 0x78, 0x02, + 0x7e, 0x01, 0x64, 0x00, 0x91, 0xff, 0xee, 0xfd, 0xeb, 0xfc, 0x6a, 0xfc, 0xc4, 0xfc, 0xbf, 0xfd, + 0x7d, 0xfe, 0xa3, 0xfe, 0xfb, 0xfd, 0x59, 0xfd, 0x69, 0xfc, 0x19, 0xfa, 0x25, 0xf8, 0x6d, 0xf7, + 0xec, 0xf6, 0x45, 0xf7, 0x2d, 0xf8, 0xae, 0xf8, 0x5b, 0xf8, 0x99, 0xf7, 0xc1, 0xf6, 0xa7, 0xf5, + 0x92, 0xf4, 0xde, 0xf4, 0x74, 0xf5, 0xfb, 0xf5, 0x90, 0xf6, 0x04, 0xf7, 0xca, 0xf7, 0x68, 0xf8, + 0x08, 0xf7, 0x03, 0xf5, 0x7c, 0xf4, 0x15, 0xf4, 0x6f, 0xf4, 0x87, 0xf6, 0xc3, 0xf8, 0x51, 0xf9, + 0x16, 0xf9, 0x90, 0xf8, 0xda, 0xf7, 0x2b, 0xf7, 0xee, 0xf6, 0xa0, 0xf7, 0xd1, 0xf8, 0xfd, 0xf9, + 0xdc, 0xfb, 0xc5, 0xfd, 0xdc, 0xfe, 0x1c, 0xff, 0xd6, 0xfe, 0x0d, 0xff, 0xf7, 0xff, 0xdf, 0x00, + 0x15, 0x02, 0x4e, 0x03, 0x4e, 0x04, 0xbe, 0x05, 0x15, 0x07, 0x02, 0x08, 0x68, 0x08, 0xd6, 0x08, + 0x57, 0x09, 0xd1, 0x09, 0x19, 0x0a, 0x7d, 0x0a, 0xca, 0x0a, 0x8e, 0x0a, 0x27, 0x0a, 0xab, 0x09, + 0x8d, 0x08, 0xf4, 0x06, 0xc5, 0x05, 0x6a, 0x04, 0xf2, 0x02, 0x51, 0x02, 0x0f, 0x02, 0xb2, 0x01, + 0x5f, 0x01, 0x03, 0x00, 0x3b, 0xfe, 0x9d, 0xfc, 0x64, 0xfb, 0x5b, 0xfa, 0x03, 0xf9, 0x43, 0xf8, + 0x55, 0xf8, 0x21, 0xf8, 0x35, 0xf8, 0x9f, 0xf8, 0x05, 0xf9, 0x18, 0xf9, 0xa6, 0xf8, 0xdd, 0xf8, + 0x5d, 0xf9, 0xd7, 0xf9, 0x0a, 0xfa, 0x28, 0xfa, 0x90, 0xfa, 0x77, 0xfa, 0x07, 0xfb, 0x05, 0xfc, + 0xf3, 0xfb, 0x78, 0xfb, 0xd3, 0xfa, 0xa3, 0xfa, 0xdc, 0xfb, 0x88, 0xfc, 0x24, 0xfd, 0x38, 0xfe, + 0xd4, 0xfe, 0xd1, 0xff, 0xd6, 0x00, 0x28, 0x01, 0xd4, 0x01, 0x76, 0x02, 0xe7, 0x02, 0x69, 0x04, + 0xf7, 0x05, 0x60, 0x07, 0x9f, 0x08, 0xd7, 0x08, 0xdb, 0x08, 0xf3, 0x08, 0x4d, 0x09, 0x98, 0x09, + 0x5c, 0x09, 0xc8, 0x08, 0x40, 0x08, 0x89, 0x07, 0x47, 0x07, 0xd4, 0x07, 0x2c, 0x08, 0x33, 0x08, + 0x2e, 0x08, 0x06, 0x07, 0x83, 0x05, 0xa5, 0x04, 0xfc, 0x03, 0xcf, 0x03, 0xa8, 0x03, 0xb8, 0x03, + 0xf4, 0x03, 0xcc, 0x03, 0xcf, 0x02, 0xbd, 0x01, 0xeb, 0x00, 0x3b, 0x00, 0xfd, 0x00, 0x70, 0x02, + 0xc2, 0x03, 0x11, 0x05, 0xc7, 0x05, 0x98, 0x05, 0x07, 0x05, 0x36, 0x04, 0x19, 0x03, 0x06, 0x02, + 0x3d, 0x01, 0x3e, 0x01, 0xdc, 0x01, 0x47, 0x02, 0x1c, 0x03, 0x16, 0x03, 0x5e, 0x02, 0x88, 0x01, + 0x81, 0x00, 0xf4, 0xff, 0xe2, 0xff, 0xdb, 0xff, 0x9f, 0x00, 0xe8, 0x01, 0x92, 0x02, 0xc7, 0x02, + 0xfe, 0x02, 0xdf, 0x01, 0x5e, 0x00, 0xea, 0xfe, 0xef, 0xfd, 0xed, 0xfd, 0x85, 0xfe, 0xec, 0xff, + 0xd2, 0x00, 0x81, 0x00, 0x25, 0x00, 0x2a, 0xff, 0x53, 0xfd, 0xc6, 0xfb, 0xcd, 0xfa, 0x05, 0xfb, + 0xd6, 0xfb, 0x33, 0xfd, 0xbf, 0xfe, 0x92, 0xfe, 0xe5, 0xfd, 0x9e, 0xfd, 0x75, 0xfd, 0xc5, 0xfd, + 0xfe, 0xfd, 0x99, 0xfe, 0xa3, 0xff, 0x63, 0x00, 0x38, 0x01, 0x72, 0x02, 0x7e, 0x02, 0x3a, 0x02, + 0xce, 0x01, 0xd1, 0x01, 0x42, 0x02, 0xc6, 0x02, 0x2c, 0x03, 0x6b, 0x03, 0x49, 0x03, 0x69, 0x03, + 0xd6, 0x03, 0x84, 0x03, 0x45, 0x02, 0x68, 0x00, 0x0f, 0xff, 0x21, 0xfe, 0x13, 0xfd, 0xeb, 0xfc, + 0x11, 0xfd, 0xa3, 0xfc, 0xcb, 0xfb, 0xf2, 0xfa, 0xbd, 0xf9, 0x20, 0xf8, 0x30, 0xf7, 0x2c, 0xf6, + 0x44, 0xf5, 0xc4, 0xf4, 0xbe, 0xf4, 0x5a, 0xf5, 0x20, 0xf6, 0x64, 0xf6, 0xbb, 0xf6, 0x4f, 0xf7, + 0xc0, 0xf7, 0x85, 0xf8, 0xf7, 0xf8, 0x77, 0xf9, 0x9e, 0xf9, 0xb7, 0xf9, 0x93, 0xfa, 0x03, 0xfb, + 0x34, 0xfb, 0x44, 0xfb, 0x14, 0xfb, 0x26, 0xfb, 0xd6, 0xfa, 0x08, 0xfb, 0xec, 0xfb, 0x14, 0xfd, + 0x70, 0xfe, 0xe6, 0xff, 0xc0, 0x01, 0xfd, 0x02, 0x89, 0x03, 0xca, 0x03, 0x46, 0x03, 0x4f, 0x03, + 0x8b, 0x04, 0xc5, 0x05, 0x6b, 0x07, 0x37, 0x09, 0xd9, 0x09, 0x46, 0x0a, 0x8f, 0x0a, 0x28, 0x0a, + 0x32, 0x09, 0x45, 0x08, 0xa6, 0x08, 0xfd, 0x07, 0x76, 0x07, 0xda, 0x07, 0x27, 0x08, 0x7f, 0x08, + 0xdc, 0x07, 0x80, 0x07, 0x51, 0x07, 0x57, 0x06, 0x24, 0x05, 0xf1, 0x03, 0x10, 0x03, 0x14, 0x02, + 0x5e, 0x01, 0x5d, 0x01, 0x16, 0x01, 0xcc, 0xff, 0x70, 0xfe, 0x4a, 0xfd, 0x35, 0xfc, 0xe9, 0xfb, + 0xf3, 0xfb, 0x4b, 0xfc, 0x1a, 0xfd, 0xd5, 0xfd, 0xe3, 0xfd, 0x9e, 0xfd, 0xf5, 0xfc, 0x2e, 0xfb, + 0x36, 0xf9, 0x2c, 0xf7, 0x72, 0xf6, 0x53, 0xf7, 0x30, 0xf8, 0x94, 0xf8, 0x4a, 0xf8, 0x6e, 0xf7, + 0x8d, 0xf7, 0x2b, 0xf7, 0xed, 0xf6, 0x71, 0xf7, 0x0c, 0xf8, 0xda, 0xf8, 0xde, 0xf9, 0x7b, 0xfb, + 0x9d, 0xfc, 0xbf, 0xfc, 0xe1, 0xfb, 0xf8, 0xfa, 0x58, 0xfa, 0xe5, 0xf9, 0xd3, 0xfa, 0x72, 0xfc, + 0x51, 0xfc, 0x7d, 0xfd, 0xa7, 0xfe, 0x22, 0xff, 0x76, 0xfe, 0x32, 0xfd, 0x0b, 0xfd, 0x91, 0xfc, + 0x78, 0xfc, 0xa0, 0xfd, 0x52, 0xff, 0xf5, 0x00, 0x74, 0x02, 0x45, 0x03, 0x03, 0x04, 0xf4, 0x04, + 0xe2, 0x05, 0x66, 0x06, 0x1d, 0x07, 0x4d, 0x08, 0x7d, 0x09, 0xc0, 0x0a, 0x1b, 0x0c, 0x43, 0x0d, + 0x13, 0x0d, 0x28, 0x0d, 0x7b, 0x0d, 0xc4, 0x0d, 0xd7, 0x0d, 0x64, 0x0d, 0x5e, 0x0d, 0x70, 0x0d, + 0x48, 0x0c, 0xfc, 0x0a, 0x5e, 0x0a, 0x33, 0x09, 0xde, 0x07, 0x3d, 0x07, 0x4f, 0x06, 0x58, 0x05, + 0x42, 0x04, 0xf5, 0x02, 0x29, 0x02, 0xc9, 0x00, 0xe2, 0xff, 0xa7, 0xff, 0x11, 0xfe, 0xe9, 0xfc, + 0xa9, 0xfb, 0xb2, 0xfa, 0xe9, 0xf9, 0x35, 0xf9, 0x89, 0xf9, 0x2b, 0xf9, 0x4b, 0xf9, 0xf7, 0xf8, + 0xb2, 0xf8, 0x2b, 0xf9, 0x59, 0xf8, 0x7a, 0xf8, 0x20, 0xf9, 0xea, 0xf8, 0x2b, 0xf8, 0xac, 0xf8, + 0x35, 0xf9, 0xc4, 0xf8, 0x7d, 0xf8, 0xf0, 0xf7, 0x45, 0xf8, 0x03, 0xf9, 0xbf, 0xf6, 0xb7, 0xf4, + 0x0e, 0xf7, 0x25, 0xf6, 0x26, 0xf7, 0x39, 0xfa, 0xbc, 0xfc, 0xdb, 0x00, 0x68, 0x04, 0x45, 0x03, + 0x8c, 0x04, 0x07, 0x03, 0x43, 0x05, 0xa4, 0x09, 0x29, 0x0b, 0x3a, 0x0b, 0xce, 0x0c, 0x30, 0x0d, + 0xd8, 0x0c, 0x9f, 0x0d, 0xa9, 0x09, 0x52, 0x09, 0xfa, 0x07, 0x63, 0x02, 0x57, 0xff, 0x88, 0xfc, + 0x32, 0xfd, 0x52, 0xfc, 0x7f, 0xfc, 0x25, 0xfe, 0xbd, 0xfe, 0x16, 0xfd, 0x1b, 0xf8, 0xb1, 0xf4, + 0x0b, 0xf4, 0xa6, 0xf2, 0x2b, 0xf6, 0x11, 0xfa, 0x1a, 0xfa, 0x49, 0xfa, 0x4a, 0xfc, 0x7e, 0x00, + 0xb3, 0x03, 0x1c, 0x05, 0x6a, 0x03, 0xa9, 0x06, 0x16, 0x07, 0x74, 0x05, 0x21, 0x04, 0x5c, 0x03, + 0x56, 0xfd, 0x86, 0xfb, 0x57, 0xfb, 0x35, 0xf4, 0x5b, 0xf6, 0x8e, 0xfa, 0x24, 0xfd, 0xde, 0xfd, + 0x6d, 0x04, 0x4c, 0x01, 0xa4, 0x00, 0xb5, 0xff, 0x17, 0xf8, 0xe8, 0xf3, 0x5a, 0xf4, 0x9b, 0xf3, + 0xb9, 0xf7, 0xdf, 0xf7, 0x26, 0xf1, 0xa9, 0xf0, 0x95, 0xf3, 0x4d, 0xf3, 0x15, 0xf2, 0xa4, 0xf5, + 0xca, 0xf9, 0x28, 0xff, 0x01, 0x05, 0xe0, 0x08, 0xc4, 0x0b, 0x36, 0x10, 0x5f, 0x14, 0xe2, 0x16, + 0x9f, 0x19, 0xf1, 0x18, 0x9a, 0x15, 0x1b, 0x17, 0x03, 0x18, 0x35, 0x1c, 0xe4, 0x1e, 0x58, 0x21, + 0x6d, 0x22, 0x0f, 0x20, 0xbf, 0x1c, 0x81, 0x17, 0x48, 0x17, 0x06, 0x12, 0x7b, 0x09, 0xfa, 0x04, + 0x12, 0x02, 0x0e, 0xfd, 0xd5, 0xfa, 0x30, 0xfa, 0xc7, 0xfb, 0x6a, 0xf8, 0x5a, 0xf4, 0xf1, 0xf2, + 0x55, 0xf0, 0xf8, 0xee, 0xf8, 0xef, 0x20, 0xef, 0x1d, 0xed, 0x51, 0xed, 0xb3, 0xe9, 0xea, 0xeb, + 0xf9, 0xed, 0x9a, 0xea, 0x7b, 0xe7, 0x37, 0xec, 0x17, 0xed, 0xb1, 0xef, 0xfa, 0xf0, 0x88, 0xf0, + 0x12, 0xf0, 0xff, 0xf1, 0xa1, 0xf0, 0x99, 0xed, 0xf6, 0xed, 0xdf, 0xe8, 0xd5, 0xe6, 0x6e, 0xe6, + 0x81, 0xe6, 0xf1, 0xe4, 0x22, 0xe4, 0x8c, 0xe2, 0xf5, 0xe0, 0xff, 0xdf, 0xfc, 0xdf, 0x6b, 0xe3, + 0x66, 0xe6, 0x82, 0xe6, 0xc2, 0xe5, 0x72, 0xe9, 0xb0, 0xeb, 0xef, 0xee, 0x73, 0xf1, 0x11, 0xf3, + 0xb9, 0xf5, 0x2b, 0xfc, 0x88, 0xff, 0xdb, 0x01, 0x1c, 0x08, 0x6d, 0x09, 0xd4, 0x0e, 0xc6, 0x15, + 0xcf, 0x18, 0xe7, 0x1f, 0xbc, 0x20, 0x29, 0x21, 0xd5, 0x22, 0xcb, 0x26, 0x83, 0x2d, 0xc0, 0x32, + 0x6d, 0x37, 0x4f, 0x36, 0x08, 0x35, 0x03, 0x36, 0xe2, 0x34, 0x5b, 0x30, 0xba, 0x2b, 0xce, 0x24, + 0x84, 0x1f, 0x34, 0x18, 0x1e, 0x16, 0x05, 0x14, 0xa9, 0x13, 0x17, 0x11, 0x6f, 0x0c, 0xaf, 0x08, + 0xf4, 0x05, 0x71, 0x01, 0x73, 0x01, 0x1d, 0x03, 0x0d, 0xff, 0xfb, 0x00, 0x94, 0x02, 0x95, 0xff, + 0xd4, 0xfd, 0x80, 0xfe, 0x99, 0xfc, 0xc0, 0xfd, 0xe2, 0xff, 0xd6, 0x01, 0x60, 0xff, 0x5b, 0x02, + 0x1a, 0x03, 0x38, 0x02, 0x28, 0x04, 0x3d, 0x02, 0x35, 0x00, 0xc9, 0xff, 0x8c, 0x00, 0xbd, 0xf9, + 0x95, 0xf6, 0x17, 0xf7, 0xb2, 0xf3, 0xdd, 0xf0, 0x15, 0xed, 0xa1, 0xe8, 0x73, 0xea, 0x20, 0xf1, + 0x6f, 0xf2, 0xdb, 0xf0, 0x82, 0xec, 0x6f, 0xee, 0x4b, 0xeb, 0xa4, 0xf0, 0x05, 0xef, 0x0b, 0xf0, + 0x0b, 0xf4, 0xac, 0xf5, 0xe0, 0xfd, 0x45, 0x04, 0x07, 0x05, 0xea, 0x0a, 0xe7, 0x0a, 0x13, 0x02, + 0x22, 0x01, 0x89, 0x00, 0x1e, 0x02, 0xb0, 0xff, 0x8a, 0x06, 0x11, 0x07, 0xd8, 0x0c, 0x95, 0x11, + 0x41, 0x16, 0x92, 0x10, 0x4c, 0x15, 0x6e, 0x16, 0xd9, 0x13, 0x93, 0x0f, 0x99, 0x0c, 0x02, 0x0b, + 0xc1, 0x0d, 0xc5, 0x05, 0xbe, 0xfd, 0x60, 0xf9, 0xef, 0xfa, 0xf0, 0xfa, 0x00, 0xfb, 0xce, 0xf8, + 0x61, 0xf2, 0x33, 0xf0, 0x3a, 0xef, 0xc7, 0xef, 0x85, 0xee, 0x37, 0xf5, 0x79, 0xfb, 0x4a, 0x02, + 0x99, 0x01, 0x64, 0x03, 0x81, 0x02, 0x36, 0x02, 0xb3, 0xfe, 0x5d, 0xff, 0xbe, 0xf9, 0x76, 0xfb, + 0xfb, 0xf6, 0xfe, 0xf9, 0x8e, 0xf7, 0xba, 0xfd, 0xec, 0x01, 0x11, 0x09, 0x9c, 0x0b, 0x75, 0x0f, + 0x68, 0x0a, 0xd1, 0x0a, 0x79, 0x0a, 0xf7, 0x07, 0xfa, 0x01, 0x93, 0xf4, 0x40, 0xed, 0x55, 0xea, + 0xd0, 0xe6, 0x37, 0xe7, 0x5d, 0xea, 0xaa, 0xeb, 0xcd, 0xec, 0x27, 0xeb, 0xc0, 0xef, 0xff, 0xf1, + 0x72, 0xf3, 0x4b, 0xef, 0xd5, 0xf1, 0x58, 0xf4, 0x07, 0xf6, 0x47, 0xf8, 0x72, 0xfc, 0xe5, 0xff, + 0xc0, 0x06, 0x63, 0x0a, 0x5d, 0x09, 0xe1, 0x0c, 0xe4, 0x0d, 0x44, 0x0b, 0x65, 0x0f, 0xdd, 0x17, + 0xb8, 0x16, 0xa7, 0x13, 0xe4, 0x0f, 0xc4, 0x11, 0xa3, 0x08, 0x1a, 0x02, 0xbc, 0xfc, 0xb7, 0xf6, + 0x73, 0xf3, 0xe7, 0xf3, 0x54, 0xed, 0xe3, 0xec, 0xec, 0xe9, 0x8f, 0xe7, 0x7e, 0xe6, 0xcf, 0xe4, + 0xc3, 0xde, 0x0c, 0xd9, 0x9d, 0xd4, 0x8f, 0xd0, 0x1a, 0xd3, 0xc7, 0xd2, 0x2d, 0xd7, 0x35, 0xdc, + 0xeb, 0xe4, 0x7e, 0xe9, 0x89, 0xf0, 0x4e, 0xf2, 0x46, 0xf6, 0x95, 0xf7, 0x2f, 0xfc, 0x36, 0x00, + 0x2c, 0x02, 0x4b, 0x00, 0x77, 0x03, 0xcc, 0x06, 0xa5, 0x0f, 0xb7, 0x15, 0xa3, 0x17, 0xcd, 0x1d, + 0x57, 0x1d, 0x99, 0x1d, 0x4b, 0x1d, 0x61, 0x1a, 0x55, 0x16, 0xea, 0x14, 0xc6, 0x0e, 0x6c, 0x0a, + 0xa5, 0x07, 0xb5, 0x05, 0xc4, 0x06, 0x9c, 0x08, 0x55, 0x0a, 0xd9, 0x09, 0x2b, 0x03, 0x3b, 0x02, + 0xaa, 0x02, 0xb2, 0x02, 0xa9, 0x04, 0x9b, 0x0a, 0x9c, 0x0b, 0x50, 0x07, 0xaf, 0x0c, 0x06, 0x11, + 0x5e, 0x15, 0x43, 0x10, 0x1f, 0x15, 0x65, 0x14, 0x15, 0x14, 0x38, 0x12, 0x91, 0x0f, 0x0c, 0x15, + 0x80, 0x1a, 0xc0, 0x1f, 0xfd, 0x2b, 0x02, 0x30, 0xb9, 0x2b, 0xe9, 0x27, 0xa8, 0x23, 0x44, 0x1c, + 0x2d, 0x14, 0x20, 0x0e, 0xa7, 0x05, 0x45, 0x00, 0x05, 0xfb, 0xb1, 0xf5, 0xba, 0xf4, 0x31, 0xf6, + 0x5c, 0xf6, 0xbf, 0xf1, 0x02, 0xef, 0x51, 0xeb, 0x4c, 0xe9, 0x21, 0xee, 0xbd, 0xee, 0x70, 0xf0, + 0x42, 0xf4, 0x7c, 0xf6, 0x44, 0xf7, 0x1b, 0xf8, 0xae, 0xf4, 0x0d, 0xf3, 0x5e, 0xf5, 0x19, 0xf5, + 0x6c, 0xf6, 0x2d, 0xfa, 0x2c, 0xf9, 0x72, 0xf8, 0xbf, 0xf4, 0x36, 0xf9, 0x25, 0xfc, 0xff, 0xfc, + 0x34, 0xfd, 0x8d, 0xfc, 0x9d, 0xfd, 0x35, 0xff, 0xb5, 0x01, 0x3c, 0x00, 0xbe, 0xfe, 0xce, 0xf6, + 0xf1, 0xf2, 0x36, 0xef, 0x54, 0xec, 0xcb, 0xeb, 0x90, 0xeb, 0xf1, 0xe8, 0x14, 0xe3, 0x51, 0xe4, + 0x0c, 0xe6, 0x3b, 0xe8, 0x2c, 0xee, 0xdb, 0xf8, 0x20, 0x04, 0xaa, 0x08, 0x82, 0x0c, 0x59, 0x15, + 0xae, 0x19, 0x65, 0x19, 0xd5, 0x1b, 0x63, 0x19, 0x06, 0x18, 0x3f, 0x16, 0x01, 0x16, 0xff, 0x18, + 0x64, 0x19, 0xe2, 0x1e, 0x5e, 0x2a, 0x35, 0x2d, 0xe6, 0x2c, 0x21, 0x2c, 0x1a, 0x24, 0xcf, 0x1d, + 0x07, 0x14, 0xb1, 0x0c, 0xa1, 0x05, 0x61, 0xfc, 0x9f, 0xf5, 0xce, 0xf3, 0x5c, 0xf0, 0x29, 0xf0, + 0x90, 0xf0, 0xd6, 0xec, 0xda, 0xe8, 0xe1, 0xe9, 0xc9, 0xe5, 0x6d, 0xe3, 0x15, 0xe4, 0x95, 0xe3, + 0xaf, 0xe7, 0x8e, 0xe7, 0x27, 0xea, 0x76, 0xe7, 0x4f, 0xe4, 0x2b, 0xe1, 0xb1, 0xe0, 0xf0, 0xe4, + 0xe6, 0xe5, 0x07, 0xe9, 0xd4, 0xe9, 0x52, 0xe5, 0x04, 0xe7, 0xb8, 0xe5, 0x89, 0xe5, 0xfa, 0xe7, + 0xc4, 0xe7, 0x49, 0xe6, 0xc4, 0xe5, 0xce, 0xe2, 0xa3, 0xe6, 0xf8, 0xe6, 0xe1, 0xe6, 0x88, 0xe3, + 0x0e, 0xe0, 0x09, 0xe1, 0x7b, 0xe1, 0x1a, 0xe2, 0x4f, 0xe7, 0x3e, 0xe8, 0x9e, 0xe6, 0xa9, 0xe9, + 0x92, 0xe9, 0x26, 0xec, 0x59, 0xed, 0x44, 0xf1, 0x4d, 0xfa, 0x26, 0x00, 0x08, 0x05, 0x9d, 0x0d, + 0xca, 0x10, 0xe7, 0x15, 0x6b, 0x16, 0x63, 0x1b, 0xc2, 0x1f, 0xb0, 0x1e, 0xfe, 0x21, 0xde, 0x21, + 0x5c, 0x21, 0x2b, 0x28, 0xb6, 0x2f, 0xa3, 0x36, 0x97, 0x3a, 0x4e, 0x39, 0xec, 0x37, 0x9f, 0x39, + 0x42, 0x3b, 0x04, 0x3a, 0x39, 0x36, 0xaf, 0x2e, 0xb8, 0x29, 0xa7, 0x21, 0xf1, 0x17, 0x38, 0x16, + 0xd7, 0x18, 0xae, 0x10, 0x6a, 0x0a, 0xb3, 0x06, 0xa2, 0x00, 0x8f, 0x02, 0xe9, 0x01, 0x81, 0x00, + 0xa6, 0x06, 0xb9, 0x0c, 0x0f, 0x12, 0xda, 0x14, 0xf3, 0x0a, 0x01, 0x10, 0x4a, 0x0f, 0x21, 0x0a, + 0x52, 0x0d, 0x43, 0x0a, 0x40, 0x0b, 0xf1, 0x0c, 0xe2, 0x0f, 0x7c, 0x14, 0x6c, 0x14, 0x05, 0x12, + 0xbc, 0x13, 0x04, 0x09, 0xde, 0x05, 0x23, 0x03, 0x74, 0x00, 0x6f, 0x04, 0x6b, 0x01, 0xc2, 0x01, + 0xe1, 0xfb, 0x80, 0xf1, 0x1e, 0xea, 0xd3, 0xdf, 0x56, 0xdc, 0x79, 0xdb, 0xbc, 0xd8, 0x61, 0xd7, + 0x86, 0xdc, 0xd7, 0xe1, 0xa4, 0xe8, 0xe6, 0xe5, 0x6e, 0xe5, 0x06, 0xe4, 0x43, 0xe7, 0x7e, 0xe5, + 0x93, 0xec, 0x9f, 0xf0, 0x87, 0xee, 0x3c, 0xf9, 0xd2, 0xff, 0x4d, 0x06, 0x8b, 0x08, 0x82, 0x03, + 0x92, 0x02, 0x48, 0x04, 0x04, 0x0a, 0x48, 0x10, 0xe8, 0x0f, 0x09, 0x16, 0xe7, 0x17, 0xd4, 0x15, + 0xa2, 0x13, 0x9d, 0x0d, 0xba, 0x07, 0x66, 0x01, 0x53, 0xfc, 0xd9, 0xf6, 0xfa, 0xf0, 0xb0, 0xee, + 0xa2, 0xef, 0x42, 0xf3, 0x04, 0xf4, 0xf2, 0xf4, 0x5b, 0xf7, 0x63, 0xf9, 0xf7, 0xfb, 0x77, 0xff, + 0xde, 0xf9, 0x91, 0xfc, 0x2f, 0xff, 0x71, 0x01, 0x87, 0x01, 0x8f, 0xff, 0xb2, 0x02, 0x8b, 0x02, + 0x9a, 0x05, 0xf9, 0x0b, 0x47, 0x0b, 0x7c, 0x04, 0xdf, 0xfc, 0xd7, 0xf9, 0xd0, 0xf9, 0x57, 0xfb, + 0x25, 0xfb, 0xff, 0xfb, 0x31, 0xfb, 0x9c, 0x00, 0x9c, 0x01, 0x84, 0x00, 0x33, 0x01, 0x07, 0xfa, + 0xc1, 0xf4, 0xc9, 0xf0, 0x6a, 0xe8, 0x1a, 0xe4, 0x73, 0xe0, 0x4a, 0xe2, 0x61, 0xe6, 0x0e, 0xe2, + 0x89, 0xde, 0xc7, 0xdc, 0xa7, 0xdb, 0xba, 0xde, 0xfa, 0xdb, 0xe3, 0xe2, 0x2b, 0xea, 0x68, 0xe8, + 0xf8, 0xed, 0x4d, 0xee, 0xa2, 0xee, 0xde, 0xee, 0x29, 0xf0, 0xae, 0xf2, 0x6e, 0xf5, 0x07, 0xf2, + 0x4e, 0xf2, 0x0b, 0xf1, 0x66, 0xf6, 0x2c, 0x01, 0x1c, 0x07, 0xc4, 0x0d, 0xed, 0x0e, 0xa5, 0x0f, + 0x1e, 0x15, 0xe4, 0x19, 0x1a, 0x17, 0xc7, 0x14, 0x0a, 0x0f, 0x96, 0x08, 0xc7, 0x03, 0xde, 0xff, + 0x87, 0xfd, 0xfd, 0xfd, 0xaf, 0xfd, 0xd9, 0xfe, 0x88, 0xfc, 0x1d, 0xfb, 0x14, 0xfd, 0xf3, 0xfa, + 0x8e, 0xf9, 0xb7, 0xfd, 0x7a, 0x03, 0xe9, 0x06, 0x3d, 0x08, 0xc8, 0x07, 0xa0, 0x0b, 0xd3, 0x0c, + 0x3a, 0x0d, 0x3f, 0x0f, 0xaf, 0x0d, 0x5f, 0x13, 0x4a, 0x15, 0x84, 0x16, 0xbb, 0x17, 0x37, 0x18, + 0x8f, 0x1c, 0xe8, 0x1a, 0x35, 0x1b, 0x7e, 0x1f, 0x2b, 0x1d, 0x0a, 0x1d, 0x24, 0x1f, 0x66, 0x1e, + 0x1f, 0x1b, 0x6b, 0x14, 0xbd, 0x0e, 0xaf, 0x0a, 0xdf, 0x07, 0x1b, 0x06, 0x5f, 0x02, 0xe6, 0xfd, + 0xd1, 0xfc, 0xce, 0x00, 0x04, 0x01, 0x36, 0xff, 0xd1, 0xfd, 0x34, 0xff, 0xd1, 0x03, 0xff, 0x09, + 0x2a, 0x0b, 0xf8, 0x0a, 0xa8, 0x11, 0x5a, 0x11, 0x32, 0x16, 0x08, 0x19, 0xc0, 0x18, 0x98, 0x19, + 0xc3, 0x14, 0xd0, 0x11, 0x89, 0x16, 0x8f, 0x16, 0xc8, 0x19, 0xc7, 0x1c, 0xdc, 0x18, 0x1c, 0x1a, + 0x7a, 0x17, 0x3c, 0x14, 0xd7, 0x0e, 0xbe, 0x08, 0x09, 0x01, 0x25, 0xfb, 0x40, 0xf2, 0x24, 0xec, + 0xa2, 0xe7, 0x6b, 0xe1, 0xa0, 0xe0, 0x71, 0xe0, 0xe9, 0xdf, 0xbb, 0xe1, 0xf7, 0xe3, 0x17, 0xe4, + 0x6d, 0xe2, 0x4e, 0xe2, 0xe3, 0xea, 0x19, 0xef, 0x05, 0xf2, 0x1f, 0xf2, 0x34, 0xed, 0x5c, 0xe9, + 0x64, 0xee, 0x62, 0xf5, 0x45, 0xfa, 0x1d, 0xfb, 0xa4, 0xfd, 0xcb, 0xfb, 0x95, 0xf7, 0x8b, 0xfc, + 0x52, 0xfa, 0x88, 0xf8, 0xfc, 0xfa, 0x43, 0xf9, 0xac, 0xfb, 0x78, 0xfe, 0x4a, 0xfd, 0x9e, 0x01, + 0x37, 0x02, 0x63, 0xfe, 0xb4, 0xfb, 0x39, 0xf6, 0x59, 0xf1, 0x08, 0xf3, 0x24, 0xf2, 0x2f, 0xf3, + 0x08, 0xf3, 0x53, 0xf2, 0x15, 0xf1, 0x5c, 0xf0, 0x40, 0xf3, 0x06, 0xf6, 0xef, 0xf5, 0x9f, 0xf8, + 0x9e, 0xf9, 0x77, 0xfb, 0xaf, 0xff, 0x95, 0x05, 0xf0, 0x07, 0x2c, 0x08, 0x9f, 0x0d, 0x29, 0x0d, + 0xd1, 0x09, 0xef, 0x06, 0xa5, 0x04, 0x46, 0x09, 0x99, 0x0b, 0xcc, 0x12, 0xb5, 0x14, 0xb2, 0x12, + 0x89, 0x14, 0xbb, 0x14, 0xb1, 0x11, 0xcd, 0x0e, 0xfc, 0x09, 0xb7, 0x03, 0x5e, 0xfc, 0x77, 0xf1, + 0x39, 0xec, 0xd0, 0xe7, 0x4f, 0xe6, 0x1b, 0xe5, 0x0e, 0xe4, 0x7d, 0xe2, 0xe0, 0xde, 0x5f, 0xda, + 0x2c, 0xd9, 0xb1, 0xd7, 0xaa, 0xda, 0x48, 0xdb, 0xa6, 0xdc, 0xe6, 0xe0, 0x67, 0xe2, 0x06, 0xe4, + 0x45, 0xe9, 0x69, 0xf1, 0x84, 0xf0, 0x90, 0xf2, 0x58, 0xf8, 0xf2, 0xf5, 0x3e, 0xf8, 0x7a, 0xfd, + 0x52, 0xfc, 0x16, 0x02, 0x82, 0x04, 0xe2, 0x06, 0x8e, 0x0d, 0x95, 0x0b, 0xb1, 0x0f, 0xf7, 0x13, + 0xd0, 0x0f, 0xd9, 0x0d, 0x52, 0x09, 0xe7, 0x06, 0xf6, 0x06, 0x4c, 0x05, 0x36, 0x02, 0xf1, 0xff, + 0x88, 0xfe, 0xb6, 0xfe, 0xbf, 0xff, 0x12, 0xff, 0x39, 0xff, 0x35, 0x04, 0x2c, 0x08, 0x4e, 0x0b, + 0xe4, 0x10, 0xfa, 0x12, 0x56, 0x16, 0xc1, 0x1a, 0xae, 0x1d, 0x38, 0x23, 0x39, 0x27, 0x6f, 0x27, + 0x7d, 0x23, 0x27, 0x1e, 0xbe, 0x1d, 0xd0, 0x1d, 0xac, 0x1c, 0x2d, 0x25, 0x76, 0x2a, 0xfb, 0x2c, + 0xf7, 0x2d, 0xc9, 0x29, 0x6b, 0x25, 0xdb, 0x1e, 0x81, 0x19, 0xc7, 0x13, 0x44, 0x0a, 0xc2, 0x03, + 0x22, 0xfd, 0x50, 0xf7, 0xc4, 0xf5, 0x6a, 0xf5, 0x16, 0xf7, 0x90, 0xf3, 0x28, 0xf2, 0x9e, 0xf1, + 0xba, 0xef, 0xf6, 0xef, 0x8f, 0xee, 0xc3, 0xf0, 0x1d, 0xf5, 0x3d, 0xf9, 0xc4, 0xf9, 0xf8, 0xf7, + 0x55, 0xf8, 0x09, 0xf9, 0xeb, 0xf7, 0x40, 0xfb, 0x26, 0xfb, 0x09, 0xfc, 0xe4, 0xfc, 0x5a, 0xf9, + 0x17, 0xf9, 0x7b, 0xf8, 0xc1, 0xf6, 0x69, 0xfa, 0x6d, 0xf6, 0x86, 0xf4, 0x7a, 0xf8, 0x66, 0xf6, + 0x9e, 0xfa, 0xcb, 0xfa, 0x70, 0xf6, 0x9e, 0xf3, 0x1d, 0xef, 0x3a, 0xeb, 0x66, 0xed, 0x59, 0xee, + 0xd1, 0xee, 0x16, 0xef, 0x1b, 0xea, 0x7c, 0xe8, 0xbd, 0xe8, 0xb3, 0xe9, 0x4d, 0xec, 0x72, 0xef, + 0xda, 0xf2, 0x2a, 0xf6, 0x4b, 0xf8, 0xfd, 0xfe, 0xad, 0x04, 0x27, 0x08, 0x2d, 0x0c, 0xc5, 0x0e, + 0xcb, 0x0b, 0x0b, 0x09, 0x44, 0x07, 0x86, 0x08, 0x18, 0x0f, 0x64, 0x13, 0x57, 0x1b, 0x35, 0x1c, + 0x63, 0x1e, 0xf7, 0x21, 0xe5, 0x21, 0x6a, 0x22, 0x31, 0x23, 0x2e, 0x20, 0xf0, 0x1b, 0x0f, 0x16, + 0xfa, 0x0f, 0x90, 0x0b, 0xe4, 0x05, 0x07, 0x01, 0xdc, 0xfc, 0x76, 0xfa, 0xa6, 0xf8, 0xac, 0xf5, + 0x5c, 0xf2, 0xf3, 0xf0, 0xd4, 0xec, 0x13, 0xed, 0x10, 0xf0, 0x6d, 0xf0, 0x44, 0xf2, 0x55, 0xf7, + 0xff, 0xf9, 0xe7, 0xfa, 0x49, 0xfd, 0x56, 0xfb, 0xc9, 0xf7, 0x7f, 0xf8, 0x0e, 0xf7, 0x00, 0xf7, + 0xb6, 0xf7, 0x91, 0xf6, 0xcc, 0xf8, 0x03, 0xf9, 0xbf, 0xfa, 0x94, 0xfe, 0xdb, 0xfd, 0x2a, 0xff, + 0xea, 0x03, 0xfd, 0x03, 0x63, 0x00, 0x63, 0xfb, 0x67, 0xf8, 0x56, 0xf7, 0x84, 0xf2, 0x5b, 0xee, + 0x15, 0xef, 0x42, 0xec, 0x95, 0xe8, 0x82, 0xe9, 0x99, 0xea, 0x5b, 0xee, 0xff, 0xf0, 0xf9, 0xf3, + 0x23, 0xf6, 0x91, 0xf9, 0xf2, 0xfe, 0xf5, 0x05, 0x6b, 0x0b, 0x54, 0x10, 0x0f, 0x17, 0xf3, 0x18, + 0x76, 0x19, 0x71, 0x1a, 0x7a, 0x1a, 0x13, 0x19, 0x5d, 0x18, 0x86, 0x18, 0xa2, 0x1b, 0xa3, 0x20, + 0x68, 0x26, 0xb8, 0x28, 0xaf, 0x26, 0xa2, 0x22, 0xac, 0x1d, 0xc5, 0x19, 0x3c, 0x16, 0xcc, 0x0e, + 0xf2, 0x09, 0xc6, 0x05, 0x28, 0x00, 0x73, 0xfd, 0x1f, 0xfb, 0x22, 0xfb, 0x36, 0xf8, 0xf4, 0xf4, + 0x27, 0xf2, 0x3c, 0xf2, 0xfc, 0xee, 0x4a, 0xed, 0xce, 0xf0, 0x6a, 0xf3, 0x2f, 0xf6, 0xd0, 0xf8, + 0xbf, 0xf7, 0x6f, 0xfa, 0x3b, 0xfc, 0x03, 0xfd, 0x41, 0xfc, 0x9c, 0xfd, 0x53, 0x01, 0xb8, 0xfe, + 0xc7, 0xfb, 0x17, 0xfc, 0x44, 0xfa, 0x30, 0xf5, 0xf2, 0xf5, 0x23, 0xf6, 0x86, 0xf6, 0x3c, 0xf8, + 0xfd, 0xf7, 0xb0, 0xfa, 0xbe, 0xf9, 0x07, 0xf5, 0x90, 0xf5, 0x5e, 0xf3, 0xc6, 0xec, 0x9a, 0xed, + 0x47, 0xee, 0xf7, 0xed, 0x95, 0xec, 0x30, 0xec, 0xbb, 0xe9, 0xfa, 0xe5, 0x34, 0xe4, 0x4a, 0xe6, + 0x67, 0xe6, 0x75, 0xe8, 0x91, 0xee, 0x04, 0xf2, 0x8f, 0xf6, 0xf5, 0xfb, 0xde, 0x02, 0x80, 0x04, + 0xb8, 0x03, 0x8e, 0x05, 0x8f, 0x04, 0x97, 0xff, 0x5e, 0x03, 0x3b, 0x07, 0xb7, 0x08, 0xb9, 0x0d, + 0x08, 0x0f, 0xe7, 0x10, 0x6b, 0x15, 0x55, 0x16, 0x93, 0x15, 0x24, 0x17, 0x2a, 0x13, 0x61, 0x10, + 0x23, 0x0b, 0xcb, 0x05, 0xf2, 0x03, 0x51, 0x01, 0x56, 0xfe, 0x64, 0xfb, 0x42, 0xf8, 0xb8, 0xf7, + 0x34, 0xf3, 0xff, 0xee, 0x0b, 0xef, 0x8e, 0xec, 0xd8, 0xec, 0x40, 0xef, 0x73, 0xf0, 0x63, 0xf4, + 0xd1, 0xfa, 0x77, 0xff, 0x0a, 0x02, 0x3b, 0x01, 0x89, 0xff, 0x4d, 0xff, 0xbb, 0x02, 0xca, 0x05, + 0xf1, 0x05, 0x3b, 0x06, 0xed, 0x03, 0x0e, 0x05, 0x89, 0x08, 0x78, 0x0d, 0x14, 0x11, 0xfb, 0x0f, + 0x31, 0x10, 0xf9, 0x13, 0x52, 0x12, 0x88, 0x10, 0x7b, 0x11, 0x75, 0x0d, 0xaa, 0x0a, 0xd3, 0x08, + 0xba, 0x03, 0xf1, 0xff, 0x2b, 0xfd, 0x06, 0xfd, 0xfa, 0xfb, 0x95, 0xfa, 0x9d, 0xfd, 0xb8, 0xfc, + 0x5c, 0xfc, 0x1f, 0xfb, 0xb7, 0xfd, 0x74, 0x02, 0xed, 0x04, 0x03, 0x0b, 0x52, 0x10, 0x82, 0x10, + 0xc3, 0x11, 0x17, 0x13, 0x7f, 0x10, 0x62, 0x0d, 0x81, 0x0f, 0xf1, 0x0f, 0x8b, 0x0d, 0x0a, 0x0f, + 0xe5, 0x13, 0x29, 0x1a, 0x14, 0x1c, 0xd8, 0x1b, 0xa3, 0x19, 0xfe, 0x10, 0xef, 0x0b, 0x76, 0x0b, + 0x59, 0x04, 0xe0, 0xff, 0x51, 0xfc, 0x78, 0xf8, 0x25, 0xf5, 0x77, 0xf1, 0xe5, 0xf2, 0x1f, 0xf4, + 0xbc, 0xf0, 0xf6, 0xee, 0xd5, 0xec, 0x5c, 0xe8, 0xe7, 0xe9, 0x4a, 0xee, 0x5b, 0xf3, 0xfb, 0xf6, + 0x8a, 0xf8, 0x5d, 0xfa, 0xd7, 0xfb, 0x0e, 0xfb, 0x5d, 0xfd, 0x80, 0xfd, 0x5e, 0xfe, 0xb5, 0x00, + 0x75, 0x01, 0xb2, 0xff, 0xbb, 0xfc, 0xf1, 0xfc, 0xa0, 0xfb, 0x30, 0xfd, 0xcf, 0xfe, 0x02, 0xff, + 0x8a, 0xff, 0x9b, 0xfe, 0xaa, 0xfe, 0x9e, 0xfe, 0xf2, 0xfb, 0x36, 0xfb, 0x4a, 0xf7, 0xa6, 0xf3, + 0xf7, 0xf2, 0x2d, 0xf1, 0x19, 0xf4, 0x36, 0xf1, 0x04, 0xef, 0xf2, 0xec, 0xc6, 0xeb, 0x93, 0xed, + 0x7f, 0xed, 0x3f, 0xeb, 0x90, 0xee, 0x84, 0xef, 0xfa, 0xf2, 0x74, 0xfc, 0x04, 0x01, 0x70, 0x03, + 0xc8, 0x07, 0x4c, 0x07, 0x2f, 0x06, 0x37, 0x04, 0x94, 0x02, 0x40, 0x07, 0x53, 0x06, 0x48, 0x07, + 0xf7, 0x0c, 0x9e, 0x0f, 0xf0, 0x11, 0x42, 0x17, 0xac, 0x15, 0x27, 0x12, 0x03, 0x15, 0xd4, 0x15, + 0x8c, 0x14, 0xff, 0x0c, 0x9a, 0x05, 0xb8, 0x04, 0xee, 0xfc, 0xd7, 0xf6, 0x72, 0xf5, 0x2e, 0xef, + 0x57, 0xec, 0x09, 0xe8, 0x8a, 0xe4, 0x46, 0xe3, 0x12, 0xe2, 0xe9, 0xe1, 0x74, 0xe4, 0x2a, 0xe5, + 0x7a, 0xe9, 0xbc, 0xf1, 0x3e, 0xf6, 0xf5, 0xf6, 0x9c, 0xf5, 0x66, 0xf2, 0x2a, 0xef, 0x8d, 0xf3, + 0x3b, 0xf8, 0x2e, 0xf7, 0x4e, 0xf6, 0x7a, 0xf5, 0xc2, 0xf4, 0xd0, 0xf6, 0xef, 0xfa, 0x58, 0x00, + 0x93, 0x03, 0x6b, 0x03, 0xfe, 0x04, 0xae, 0x05, 0x8e, 0x05, 0x9c, 0x06, 0x86, 0x08, 0xc3, 0x06, + 0x3a, 0x03, 0xbc, 0xfd, 0x1d, 0xfa, 0x7d, 0xf8, 0xcf, 0xf7, 0x71, 0xf7, 0x88, 0xfa, 0xb4, 0xfd, + 0x19, 0xfe, 0xa3, 0x00, 0x5a, 0x00, 0xa2, 0x03, 0x83, 0x0a, 0x71, 0x0f, 0xb5, 0x15, 0xdd, 0x1a, + 0x67, 0x21, 0xcf, 0x24, 0xda, 0x22, 0x69, 0x23, 0x42, 0x23, 0x9c, 0x21, 0x0a, 0x20, 0x04, 0x1f, + 0xbb, 0x1e, 0x8f, 0x21, 0x71, 0x2a, 0x36, 0x2d, 0xbf, 0x2b, 0xcc, 0x27, 0xb0, 0x20, 0x59, 0x20, + 0x4f, 0x1e, 0x09, 0x17, 0x58, 0x14, 0xcb, 0x0f, 0xcc, 0x09, 0x8e, 0x05, 0x7d, 0xff, 0x8c, 0xfc, + 0x61, 0xfd, 0xca, 0xf8, 0x77, 0xf3, 0x39, 0xf0, 0xe4, 0xed, 0x5d, 0xee, 0x1e, 0xee, 0xab, 0xf0, + 0x9c, 0xf5, 0x2b, 0xf8, 0xf6, 0xf8, 0x91, 0xf9, 0xfc, 0xf8, 0x2a, 0xf7, 0x6e, 0xf5, 0x81, 0xfa, + 0xea, 0xfe, 0x50, 0xfe, 0x4c, 0xf9, 0x29, 0xf6, 0xc4, 0xf4, 0xc9, 0xf3, 0x8a, 0xf5, 0x44, 0xf7, + 0xce, 0xf9, 0xb7, 0xf7, 0x28, 0xf8, 0x77, 0xfb, 0xcf, 0xfd, 0xfe, 0xfc, 0xeb, 0xfc, 0x7a, 0xf9, + 0xd0, 0xf6, 0xd0, 0xf6, 0x92, 0xf9, 0x9c, 0xfa, 0x25, 0xf5, 0x63, 0xf2, 0xab, 0xef, 0xd6, 0xec, + 0xcc, 0xef, 0x21, 0xef, 0xe4, 0xeb, 0x69, 0xee, 0x4f, 0xf0, 0xe9, 0xf5, 0xf5, 0xf9, 0x68, 0xff, + 0xfe, 0x05, 0xc9, 0x08, 0x50, 0x05, 0x2d, 0x06, 0xb8, 0x07, 0x63, 0x05, 0xc7, 0x07, 0x3b, 0x05, + 0xc5, 0x03, 0x11, 0x09, 0xd9, 0x0b, 0xd7, 0x0c, 0x8a, 0x11, 0x18, 0x0f, 0x3b, 0x0e, 0xa9, 0x0f, + 0x84, 0x0d, 0x2a, 0x0d, 0xef, 0x08, 0xd7, 0x01, 0xce, 0x00, 0x00, 0xfb, 0x38, 0xf5, 0x79, 0xf1, + 0x02, 0xee, 0xea, 0xec, 0x85, 0xe5, 0xfd, 0xe1, 0x8f, 0xe1, 0x71, 0xde, 0xd5, 0xdb, 0x48, 0xde, + 0xbe, 0xe1, 0x29, 0xe6, 0xe7, 0xec, 0x5b, 0xf5, 0x0c, 0xf7, 0x91, 0xf4, 0x8a, 0xf3, 0x34, 0xf3, + 0x0f, 0xf6, 0x96, 0xf9, 0xea, 0xfa, 0xd0, 0xfa, 0xd7, 0xfb, 0x97, 0xf9, 0xf5, 0xfa, 0xe2, 0xfc, + 0x39, 0x02, 0x8c, 0x05, 0x76, 0x03, 0xad, 0x03, 0x67, 0x05, 0x6a, 0x06, 0x3e, 0x09, 0x73, 0x09, + 0x1d, 0x05, 0xc8, 0x04, 0x94, 0x01, 0x01, 0xfb, 0x83, 0xf9, 0x23, 0xf9, 0xdc, 0xf7, 0x83, 0xfa, + 0xc3, 0xf9, 0x30, 0xf9, 0x37, 0xf9, 0x26, 0xf7, 0x90, 0xfa, 0x89, 0xff, 0x60, 0x04, 0xd3, 0x0b, + 0xa9, 0x10, 0x3e, 0x12, 0xea, 0x12, 0xdc, 0x13, 0xdb, 0x16, 0x5b, 0x17, 0x41, 0x15, 0xcc, 0x12, + 0xe6, 0x10, 0x61, 0x11, 0x93, 0x17, 0x1a, 0x20, 0x1e, 0x21, 0xf7, 0x1e, 0x6b, 0x1c, 0x9e, 0x15, + 0x8e, 0x14, 0x15, 0x15, 0x7f, 0x11, 0xd6, 0x0e, 0x8c, 0x0c, 0x14, 0x09, 0x9d, 0x03, 0x0a, 0x01, + 0x98, 0x00, 0x29, 0xff, 0x7c, 0xf9, 0x5a, 0xf7, 0xcf, 0xf8, 0x7a, 0xf6, 0x0d, 0xf7, 0x58, 0xf9, + 0x99, 0xf9, 0xad, 0xfd, 0x79, 0x01, 0xdb, 0x04, 0xb5, 0x03, 0xde, 0x01, 0x74, 0x02, 0x9b, 0x02, + 0xb6, 0x05, 0xe7, 0x07, 0xd0, 0x09, 0x52, 0x06, 0x47, 0x03, 0xac, 0x02, 0xae, 0x03, 0x1b, 0x05, + 0x71, 0x06, 0x57, 0x06, 0xf4, 0x02, 0xb0, 0x02, 0x3e, 0x03, 0x56, 0x04, 0x81, 0x04, 0xe8, 0x02, + 0x72, 0x01, 0x4e, 0xff, 0x96, 0xfb, 0x7a, 0xfc, 0xbb, 0xfb, 0x0c, 0xf7, 0xfa, 0xf4, 0xa3, 0xf3, + 0xad, 0xef, 0x63, 0xee, 0xb8, 0xed, 0xef, 0xec, 0x52, 0xef, 0x32, 0xf0, 0x63, 0xf2, 0xf7, 0xf7, + 0x3f, 0xfd, 0x21, 0x02, 0xa4, 0x03, 0x8b, 0x02, 0xaf, 0x05, 0xda, 0x07, 0xd7, 0x07, 0xda, 0x09, + 0x55, 0x08, 0x77, 0x08, 0x89, 0x0c, 0x41, 0x0c, 0xc1, 0x0d, 0xee, 0x12, 0xf1, 0x14, 0x5b, 0x14, + 0x16, 0x11, 0x65, 0x11, 0x3a, 0x10, 0x58, 0x0b, 0xf6, 0x06, 0x30, 0x03, 0x85, 0xfc, 0x9e, 0xf9, + 0x0a, 0xf6, 0xbf, 0xee, 0xfe, 0xe7, 0xa5, 0xe4, 0x21, 0xe1, 0x0d, 0xde, 0xba, 0xdb, 0xc3, 0xda, + 0x26, 0xdd, 0x6c, 0xe0, 0x20, 0xe5, 0x27, 0xec, 0x13, 0xf3, 0x47, 0xf2, 0xd5, 0xef, 0xd2, 0xee, + 0x86, 0xee, 0xbd, 0xf0, 0xd8, 0xf4, 0x10, 0xf4, 0x9a, 0xf3, 0x28, 0xf6, 0x34, 0xf3, 0xe4, 0xf4, + 0x6e, 0xf7, 0xd2, 0xf9, 0x8c, 0xfc, 0x41, 0xfb, 0x5d, 0xfb, 0xf0, 0x00, 0x1b, 0x01, 0xb1, 0x03, + 0x24, 0x04, 0xe8, 0x00, 0xe8, 0xff, 0x72, 0xfd, 0xd8, 0xf6, 0x7a, 0xf3, 0x4d, 0xf5, 0x78, 0xf6, + 0xa5, 0xf8, 0xa4, 0xf8, 0x74, 0xfc, 0x43, 0xfc, 0xb5, 0xf8, 0xca, 0xfb, 0xee, 0x00, 0x37, 0x0a, + 0x14, 0x13, 0xf3, 0x15, 0x69, 0x15, 0xce, 0x15, 0xff, 0x17, 0x53, 0x1b, 0x0a, 0x1b, 0xd4, 0x16, + 0xbd, 0x14, 0xfb, 0x14, 0xd3, 0x14, 0x31, 0x18, 0x40, 0x1c, 0xc8, 0x1e, 0xe7, 0x1d, 0x28, 0x1b, + 0xb5, 0x15, 0x44, 0x14, 0x22, 0x14, 0xc3, 0x11, 0x15, 0x0f, 0x98, 0x0b, 0x92, 0x05, 0x28, 0x02, + 0x90, 0xfe, 0x5a, 0xfa, 0x99, 0xf9, 0x61, 0xf5, 0x5b, 0xef, 0x0b, 0xee, 0xc3, 0xeb, 0x8d, 0xeb, + 0x30, 0xee, 0xcc, 0xef, 0x97, 0xf3, 0x63, 0xf7, 0x96, 0xf9, 0xac, 0xf8, 0x2b, 0xfa, 0x8c, 0xfb, + 0x18, 0xfb, 0xb0, 0xfe, 0xa2, 0xff, 0x68, 0x00, 0x7c, 0xff, 0x7f, 0xfc, 0x4b, 0xfc, 0x90, 0xfe, + 0x2f, 0xff, 0xad, 0x01, 0x01, 0x03, 0xa4, 0x03, 0xa6, 0x03, 0xe2, 0x03, 0x2e, 0x04, 0xc8, 0x06, + 0xc7, 0x07, 0xec, 0x08, 0x67, 0x0a, 0xb2, 0x07, 0x9b, 0x05, 0x28, 0x03, 0x0b, 0x02, 0x4f, 0x00, + 0x45, 0xfc, 0x0a, 0xf9, 0x48, 0xf8, 0x2d, 0xf7, 0x70, 0xf6, 0x3e, 0xf7, 0x90, 0xf7, 0x73, 0xfb, + 0x18, 0x01, 0xea, 0x04, 0x34, 0x0a, 0xa0, 0x0b, 0x0f, 0x0c, 0xc5, 0x10, 0xc2, 0x0f, 0x42, 0x0e, + 0xb9, 0x0e, 0xda, 0x0d, 0xc7, 0x0c, 0x59, 0x0e, 0x41, 0x0e, 0xa8, 0x0e, 0x4f, 0x11, 0x88, 0x13, + 0x67, 0x11, 0xb9, 0x0f, 0xad, 0x0f, 0x3b, 0x10, 0x3b, 0x0b, 0x8b, 0x03, 0x43, 0x00, 0xd1, 0xfe, + 0xee, 0xf9, 0x9b, 0xf3, 0xd4, 0xee, 0xe2, 0xe6, 0x2f, 0xe2, 0x46, 0xde, 0xc6, 0xdb, 0xc2, 0xd8, + 0x30, 0xd7, 0x50, 0xd9, 0xcf, 0xde, 0xdf, 0xe5, 0xbf, 0xec, 0xf4, 0xf2, 0xd6, 0xf1, 0xe0, 0xee, + 0x68, 0xf0, 0x50, 0xf2, 0xbf, 0xf4, 0x6e, 0xfa, 0x32, 0xfb, 0xca, 0xfc, 0x27, 0xfd, 0x88, 0xfb, + 0xb1, 0xfd, 0xa6, 0xfe, 0xc4, 0xff, 0xe1, 0x02, 0xd6, 0x00, 0x25, 0x00, 0x45, 0x02, 0xbe, 0x02, + 0xa9, 0x05, 0xe2, 0x05, 0x6c, 0x06, 0x58, 0x05, 0x71, 0x01, 0xa0, 0xfb, 0x62, 0xfa, 0x10, 0xfa, + 0xb0, 0xf8, 0x8c, 0xf9, 0x1c, 0xf8, 0x09, 0xf9, 0x16, 0xf9, 0x6c, 0xf5, 0x08, 0xf6, 0xe2, 0xfb, + 0xca, 0x02, 0x8a, 0x08, 0xd8, 0x0a, 0x49, 0x0d, 0xd3, 0x0f, 0x47, 0x12, 0xb8, 0x12, 0xd0, 0x10, + 0xec, 0x0e, 0x75, 0x0f, 0x6d, 0x10, 0x00, 0x10, 0x79, 0x11, 0x05, 0x14, 0xc5, 0x16, 0xf1, 0x16, + 0x96, 0x14, 0x2d, 0x10, 0x21, 0x0d, 0x59, 0x0f, 0xa3, 0x0e, 0xc8, 0x0c, 0xaa, 0x0e, 0x26, 0x08, + 0x2f, 0x02, 0x1b, 0xfe, 0xf3, 0xfa, 0x50, 0xfa, 0xbf, 0xf6, 0xc2, 0xf3, 0xd9, 0xf2, 0x6b, 0xf0, + 0x03, 0xf0, 0xa0, 0xf2, 0x06, 0xf5, 0x13, 0xf8, 0xad, 0xfb, 0x07, 0xfd, 0x5c, 0xfa, 0xfa, 0xfa, + 0xc5, 0xfb, 0x79, 0xfc, 0x1b, 0xfd, 0x6c, 0xfe, 0x8c, 0x02, 0x88, 0x02, 0x56, 0x00, 0x5e, 0x02, + 0x02, 0x04, 0xc1, 0x02, 0xe3, 0x04, 0xc3, 0x04, 0x24, 0x03, 0x62, 0x03, 0x78, 0x03, 0x56, 0x02, + 0x34, 0x02, 0x89, 0x02, 0xb4, 0x04, 0x7a, 0x05, 0x75, 0x02, 0x6e, 0x01, 0xff, 0xff, 0x0f, 0xfb, + 0x32, 0xf8, 0xd1, 0xf5, 0x58, 0xf4, 0x83, 0xf5, 0xe5, 0xf4, 0x6f, 0xf2, 0x2d, 0xf2, 0xdf, 0xf3, + 0x46, 0xf7, 0x73, 0xfc, 0x9e, 0xfe, 0x55, 0x03, 0x30, 0x06, 0x3f, 0x08, 0xb6, 0x0d, 0x70, 0x0f, + 0xee, 0x0f, 0x56, 0x10, 0x8e, 0x10, 0x71, 0x10, 0x60, 0x11, 0xa0, 0x14, 0xbd, 0x16, 0xee, 0x18, + 0x1c, 0x1b, 0xa5, 0x19, 0x74, 0x18, 0x6d, 0x17, 0x12, 0x16, 0x57, 0x12, 0x45, 0x0e, 0x47, 0x09, + 0x40, 0x06, 0x4d, 0x01, 0xc0, 0xfb, 0x30, 0xf5, 0x78, 0xec, 0x37, 0xe9, 0x6f, 0xe5, 0x00, 0xe1, + 0x2b, 0xde, 0x8b, 0xdb, 0xde, 0xdc, 0xdb, 0xe3, 0xd8, 0xe7, 0x9d, 0xeb, 0x96, 0xef, 0x72, 0xf0, + 0xef, 0xef, 0x4e, 0xef, 0x83, 0xec, 0xbf, 0xed, 0x13, 0xf3, 0xb4, 0xf3, 0x3e, 0xf7, 0x9f, 0xf7, + 0x27, 0xf5, 0x35, 0xf4, 0x1b, 0xf5, 0xe2, 0xf6, 0x1e, 0xfa, 0x00, 0xfa, 0xd3, 0xfa, 0xec, 0xfa, + 0xda, 0xf9, 0x35, 0xff, 0xfa, 0x02, 0x89, 0x00, 0xa7, 0xfd, 0xf4, 0xfa, 0xf9, 0xf5, 0x9b, 0xf5, + 0xe1, 0xf6, 0xca, 0xf7, 0x48, 0xf7, 0xa1, 0xf6, 0xac, 0xf7, 0x81, 0xf6, 0x10, 0xf7, 0x68, 0xfb, + 0x56, 0x00, 0xf2, 0x05, 0xa8, 0x09, 0xdc, 0x0c, 0xc6, 0x10, 0x90, 0x11, 0xf9, 0x13, 0xfd, 0x14, + 0x54, 0x13, 0x94, 0x11, 0xeb, 0x11, 0x01, 0x11, 0xca, 0x0f, 0x60, 0x0f, 0x06, 0x13, 0x9b, 0x16, + 0x13, 0x17, 0xe0, 0x16, 0xd1, 0x13, 0xda, 0x0e, 0x2d, 0x10, 0x2a, 0x0f, 0x67, 0x0c, 0x47, 0x0c, + 0x44, 0x07, 0xcc, 0x04, 0xc9, 0x00, 0x49, 0xfa, 0xf9, 0xf7, 0x9b, 0xf3, 0x67, 0xf0, 0xf0, 0xf0, + 0xe9, 0xed, 0x12, 0xec, 0x83, 0xee, 0x16, 0xf1, 0x72, 0xf3, 0x8f, 0xf7, 0xda, 0xf7, 0x85, 0xf8, + 0x2b, 0xfb, 0x58, 0xf9, 0x74, 0xf9, 0xdb, 0xf9, 0x88, 0xfc, 0xef, 0xfe, 0x91, 0xff, 0xa4, 0xfd, + 0xac, 0xff, 0xb3, 0x03, 0xaa, 0x04, 0x70, 0x05, 0xbb, 0x05, 0x7b, 0x06, 0x75, 0x07, 0x21, 0x07, + 0x22, 0x07, 0xd6, 0x09, 0x18, 0x0b, 0x1a, 0x0c, 0x5f, 0x0d, 0x94, 0x0b, 0xe1, 0x08, 0x6a, 0x07, + 0x2c, 0x05, 0xb3, 0x00, 0x10, 0xfd, 0x2b, 0xfb, 0xc5, 0xf9, 0x23, 0xf6, 0x85, 0xf3, 0xdd, 0xf5, + 0xad, 0xf8, 0x48, 0xfb, 0xcb, 0xff, 0x73, 0x02, 0x94, 0x07, 0x79, 0x0a, 0x96, 0x0b, 0x99, 0x0d, + 0x52, 0x0e, 0xc7, 0x0f, 0xe3, 0x12, 0x79, 0x11, 0xbf, 0x0d, 0xe7, 0x0c, 0xbf, 0x0d, 0x33, 0x0e, + 0xc3, 0x11, 0xeb, 0x15, 0x80, 0x15, 0xe8, 0x11, 0xd2, 0x0e, 0xc3, 0x0e, 0x8c, 0x0d, 0x87, 0x09, + 0xb8, 0x05, 0x24, 0x04, 0xc1, 0xfc, 0xa9, 0xf5, 0x33, 0xf0, 0x3d, 0xe8, 0x2e, 0xe5, 0x78, 0xe1, + 0xc6, 0xda, 0xb0, 0xd8, 0x1a, 0xd9, 0xd3, 0xdd, 0x30, 0xe6, 0x63, 0xe7, 0x77, 0xe9, 0x92, 0xee, + 0x7c, 0xf3, 0x64, 0xf4, 0x25, 0xf5, 0xb4, 0xf2, 0xd9, 0xf4, 0xc2, 0xfa, 0x7f, 0xfd, 0x08, 0xff, + 0x17, 0x00, 0x89, 0x01, 0x37, 0x01, 0x35, 0xff, 0x5e, 0x01, 0x8c, 0x05, 0xe5, 0x02, 0xa3, 0x00, + 0xae, 0xfe, 0xb0, 0x00, 0x90, 0x05, 0x48, 0x09, 0x88, 0x08, 0x4d, 0x06, 0xeb, 0x03, 0x13, 0x00, + 0x70, 0xfc, 0xbe, 0xf8, 0x12, 0xfa, 0x83, 0xfa, 0xf8, 0xf8, 0x15, 0xf6, 0x91, 0xf4, 0xb8, 0xf4, + 0x52, 0xf5, 0x8a, 0xf8, 0x94, 0xfd, 0xb7, 0x00, 0x3d, 0x04, 0xa6, 0x06, 0xdd, 0x08, 0x38, 0x0a, + 0xfd, 0x0a, 0x38, 0x0d, 0x2d, 0x0d, 0x15, 0x0b, 0x24, 0x0a, 0x84, 0x0a, 0x6c, 0x09, 0xbe, 0x0a, + 0x73, 0x0d, 0xc4, 0x0e, 0x35, 0x0e, 0x50, 0x0c, 0x95, 0x09, 0x96, 0x0d, 0xa1, 0x0c, 0x9b, 0x08, + 0x21, 0x0a, 0xb8, 0x07, 0x49, 0x06, 0x6e, 0x02, 0x95, 0xfb, 0x30, 0xf9, 0x58, 0xf5, 0x1a, 0xf1, + 0x25, 0xef, 0x98, 0xeb, 0x89, 0xec, 0x0a, 0xf1, 0x15, 0xf4, 0x51, 0xf4, 0xe7, 0xf5, 0xb2, 0xf7, + 0x20, 0xf9, 0x03, 0xf9, 0xf2, 0xf8, 0x2c, 0xfb, 0x60, 0xfb, 0xfd, 0xfe, 0xbe, 0x02, 0xe7, 0x03, + 0x91, 0x03, 0xcc, 0x04, 0x19, 0x05, 0x81, 0x03, 0x63, 0x05, 0xf3, 0x08, 0x75, 0x08, 0x6f, 0x07, + 0x08, 0x05, 0x2e, 0x04, 0x8c, 0x05, 0x7b, 0x08, 0xfc, 0x0a, 0xa1, 0x0a, 0xb6, 0x09, 0x06, 0x06, + 0xa0, 0x02, 0xd6, 0x00, 0x15, 0xff, 0x08, 0xfe, 0x14, 0xf9, 0x64, 0xf6, 0xe4, 0xf4, 0xb1, 0xf2, + 0xa0, 0xf5, 0x00, 0xf7, 0xda, 0xf6, 0x84, 0xfa, 0x37, 0xfd, 0xc6, 0x04, 0x90, 0x0a, 0x33, 0x0a, + 0xc2, 0x0b, 0xbb, 0x0e, 0xec, 0x10, 0x97, 0x14, 0x8d, 0x16, 0xa8, 0x14, 0x7a, 0x12, 0x16, 0x14, + 0x80, 0x15, 0x3f, 0x17, 0xfd, 0x19, 0x73, 0x1b, 0x47, 0x19, 0xd3, 0x16, 0xce, 0x14, 0x36, 0x13, + 0x08, 0x0f, 0x2d, 0x0b, 0x94, 0x08, 0x5d, 0x00, 0x32, 0xfb, 0xfc, 0xf6, 0x15, 0xf1, 0x5e, 0xed, + 0xe0, 0xe7, 0x72, 0xe0, 0xc4, 0xdd, 0xd6, 0xdc, 0x1e, 0xe0, 0xe7, 0xe4, 0x36, 0xe6, 0x4a, 0xea, + 0x6a, 0xed, 0x96, 0xf0, 0x22, 0xf0, 0x31, 0xef, 0x1f, 0xef, 0x20, 0xf3, 0xdd, 0xf6, 0xce, 0xf7, + 0xe6, 0xf9, 0x99, 0xfb, 0x57, 0xfb, 0xd3, 0xfc, 0x85, 0xfc, 0xbc, 0xff, 0x6d, 0x01, 0xf4, 0xfe, + 0x61, 0xfe, 0x63, 0xfe, 0x58, 0x00, 0xbf, 0x02, 0xeb, 0x05, 0x15, 0x05, 0x68, 0x05, 0x15, 0x06, + 0xc9, 0x02, 0xd4, 0xfd, 0x91, 0xfc, 0x83, 0xfd, 0x94, 0xfc, 0x19, 0xfc, 0xf1, 0xf9, 0x80, 0xf9, + 0x1e, 0xfb, 0xb3, 0xfb, 0x8f, 0xfd, 0x91, 0x00, 0xd9, 0x03, 0x3c, 0x0a, 0x98, 0x0b, 0xe9, 0x0c, + 0xf5, 0x0e, 0x4f, 0x0f, 0x5d, 0x0e, 0xfe, 0x0c, 0x70, 0x0c, 0x91, 0x0b, 0xab, 0x0a, 0xf6, 0x0a, + 0xff, 0x0c, 0x11, 0x10, 0x49, 0x11, 0xdd, 0x11, 0xf4, 0x0f, 0xba, 0x0b, 0x68, 0x0c, 0x32, 0x0a, + 0x3d, 0x08, 0x95, 0x08, 0x55, 0x06, 0x6b, 0x02, 0x1b, 0xfc, 0x51, 0xf7, 0x9f, 0xf6, 0x25, 0xf1, + 0xff, 0xea, 0x34, 0xe6, 0x0b, 0xe2, 0x4b, 0xe3, 0x06, 0xe7, 0x68, 0xea, 0x04, 0xeb, 0x2b, 0xed, + 0x1f, 0xee, 0x68, 0xef, 0xb1, 0xef, 0x52, 0xf0, 0xf3, 0xf1, 0xb3, 0xf1, 0xfd, 0xf1, 0x58, 0xf6, + 0xae, 0xfc, 0xfd, 0xfd, 0x98, 0xfe, 0x4d, 0xff, 0x5f, 0xff, 0xc9, 0x01, 0x8c, 0x05, 0x07, 0x06, + 0x52, 0x06, 0x46, 0x05, 0xb5, 0x04, 0x18, 0x05, 0x85, 0x07, 0x96, 0x0a, 0xd6, 0x0b, 0x65, 0x0c, + 0x7a, 0x08, 0xb3, 0x06, 0x46, 0x05, 0xec, 0x01, 0x6b, 0xfe, 0x16, 0xf8, 0xd0, 0xf5, 0xe7, 0xf5, + 0x74, 0xf3, 0x1c, 0xf7, 0x36, 0xf8, 0x96, 0xf9, 0x0f, 0xfe, 0xb7, 0x00, 0xf8, 0x04, 0x5e, 0x07, + 0x4c, 0x0a, 0xab, 0x0c, 0xf9, 0x0e, 0xe6, 0x11, 0x2b, 0x15, 0xe6, 0x13, 0x53, 0x11, 0xfc, 0x11, + 0x2b, 0x13, 0xb5, 0x13, 0x3f, 0x14, 0xa0, 0x15, 0x42, 0x18, 0xdf, 0x17, 0x66, 0x15, 0x55, 0x13, + 0x3f, 0x13, 0xa1, 0x10, 0x23, 0x0e, 0x66, 0x0b, 0xbd, 0x04, 0x0f, 0xff, 0xa4, 0xf9, 0xb7, 0xf2, + 0x34, 0xed, 0x8d, 0xe7, 0x0f, 0xe3, 0x82, 0xe2, 0x44, 0xe1, 0xee, 0xe2, 0x4d, 0xe6, 0xb7, 0xea, + 0x8f, 0xef, 0x19, 0xf3, 0xcd, 0xf5, 0xa4, 0xf6, 0x31, 0xf7, 0xb3, 0xf7, 0x12, 0xfa, 0x75, 0xfd, + 0xd6, 0x00, 0x09, 0x03, 0x18, 0x04, 0xa2, 0x05, 0x5b, 0x07, 0xfe, 0x04, 0x4b, 0x04, 0x37, 0x02, + 0x33, 0x02, 0x9d, 0x03, 0x5f, 0x03, 0x07, 0x05, 0x0e, 0x08, 0x06, 0x0c, 0x2b, 0x0d, 0x99, 0x0a, + 0xda, 0x07, 0x7e, 0x05, 0xa9, 0x00, 0xd1, 0xfe, 0x14, 0xfd, 0x9d, 0xfa, 0x2b, 0xf8, 0xe1, 0xf6, + 0xda, 0xf7, 0x07, 0xf9, 0x3a, 0xf7, 0x76, 0xf8, 0x6e, 0xfa, 0x63, 0xfc, 0xe0, 0x00, 0x6c, 0x03, + 0xff, 0x07, 0x49, 0x09, 0xfd, 0x07, 0x61, 0x09, 0x3b, 0x09, 0x36, 0x08, 0x1b, 0x08, 0xde, 0x06, + 0x2d, 0x07, 0x32, 0x08, 0xea, 0x0a, 0x2a, 0x0d, 0x7a, 0x10, 0x1d, 0x10, 0xe4, 0x0b, 0x1b, 0x0c, + 0x83, 0x0b, 0xe2, 0x0c, 0xe7, 0x0d, 0x30, 0x0c, 0xd9, 0x09, 0x30, 0x05, 0x4d, 0x02, 0xe5, 0xff, + 0x75, 0xf9, 0x45, 0xf3, 0x1a, 0xee, 0x15, 0xec, 0x28, 0xed, 0x0f, 0xee, 0x9c, 0xee, 0xa9, 0xee, + 0x4c, 0xee, 0x16, 0xee, 0x07, 0xef, 0x99, 0xef, 0xd5, 0xf2, 0xd7, 0xf3, 0x85, 0xf4, 0x3c, 0xf5, + 0x95, 0xf8, 0xc5, 0xfc, 0x0a, 0xfe, 0xa7, 0xfe, 0x9b, 0xff, 0xc8, 0xff, 0xf0, 0xfe, 0x39, 0x00, + 0x88, 0x01, 0x81, 0x02, 0x82, 0x00, 0x46, 0xff, 0x03, 0xff, 0x6b, 0x01, 0x0a, 0x04, 0x15, 0x04, + 0x80, 0x04, 0xe1, 0x03, 0xa3, 0x03, 0xec, 0x00, 0xd3, 0xfd, 0xf3, 0xfa, 0x4d, 0xf5, 0x7f, 0xf3, + 0x82, 0xf2, 0x0b, 0xee, 0x6c, 0xef, 0xd8, 0xf0, 0x3b, 0xf5, 0x50, 0xf9, 0x7a, 0xfa, 0xff, 0xfe, + 0x04, 0x03, 0x8b, 0x04, 0x13, 0x08, 0x42, 0x0d, 0xee, 0x10, 0x95, 0x13, 0x1e, 0x14, 0xa0, 0x13, + 0x9c, 0x13, 0x6f, 0x13, 0xe1, 0x12, 0xd1, 0x12, 0x8c, 0x15, 0x8a, 0x1a, 0x84, 0x1a, 0x08, 0x17, + 0xf8, 0x13, 0xe9, 0x12, 0xb6, 0x10, 0xd0, 0x0c, 0xfa, 0x08, 0xb1, 0x02, 0x69, 0xfe, 0x24, 0xfb, + 0x7f, 0xf5, 0x90, 0xee, 0x6c, 0xe7, 0x5c, 0xe3, 0xba, 0xe1, 0x9e, 0xe0, 0x8c, 0xe3, 0xd7, 0xe4, + 0xa5, 0xe6, 0x93, 0xe8, 0xa2, 0xea, 0x52, 0xee, 0x68, 0xf1, 0xc3, 0xf1, 0x74, 0xf1, 0x60, 0xf1, + 0xc7, 0xf3, 0x45, 0xf7, 0xe6, 0xfa, 0xda, 0xfc, 0x1c, 0x00, 0x52, 0x03, 0xf5, 0x00, 0xc1, 0x00, + 0xb6, 0x00, 0x89, 0x00, 0xad, 0xfe, 0x81, 0xfe, 0xe4, 0xff, 0xd0, 0x04, 0x3a, 0x0c, 0x2a, 0x0e, + 0xef, 0x0b, 0xcf, 0x0a, 0x7f, 0x09, 0xb8, 0x07, 0x67, 0x08, 0x47, 0x08, 0xd9, 0x05, 0xf5, 0x03, + 0x41, 0x03, 0xda, 0x02, 0xd2, 0x02, 0xe4, 0x01, 0xc3, 0x03, 0x70, 0x03, 0x1b, 0x03, 0x10, 0x08, + 0xac, 0x0b, 0xb3, 0x0d, 0xd4, 0x0e, 0xa7, 0x0d, 0x33, 0x0d, 0xdd, 0x0c, 0xd5, 0x0c, 0x9d, 0x0b, + 0xc3, 0x0a, 0x02, 0x0c, 0x00, 0x0b, 0xac, 0x0b, 0xa3, 0x0d, 0x61, 0x10, 0xe2, 0x10, 0xcb, 0x0e, + 0xd2, 0x0c, 0x81, 0x0a, 0xbf, 0x0a, 0x6d, 0x09, 0x96, 0x0a, 0xe3, 0x09, 0xf9, 0x04, 0xc7, 0x02, + 0x27, 0xfd, 0x33, 0xf1, 0x90, 0xea, 0xac, 0xe6, 0xf2, 0xe4, 0xfc, 0xe5, 0x05, 0xe8, 0x3a, 0xea, + 0x77, 0xeb, 0x97, 0xec, 0xc2, 0xec, 0xd3, 0xec, 0xbc, 0xeb, 0xab, 0xec, 0xcc, 0xed, 0x51, 0xf0, + 0x77, 0xf1, 0x0b, 0xf5, 0x7f, 0xf9, 0xc4, 0xfa, 0xad, 0xfd, 0x4e, 0x01, 0xb4, 0x00, 0x15, 0x01, + 0x09, 0x03, 0x27, 0x05, 0xde, 0x07, 0x97, 0x07, 0x6e, 0x07, 0xb0, 0x07, 0x67, 0x0b, 0x8a, 0x0d, + 0xf1, 0x0e, 0x41, 0x10, 0xb5, 0x0f, 0xae, 0x0c, 0xc5, 0x07, 0xb4, 0x02, 0x06, 0x00, 0xae, 0xfa, + 0x30, 0xfa, 0x07, 0xfa, 0xdc, 0xf6, 0xdc, 0xf8, 0xa7, 0xf8, 0x4d, 0xfa, 0x85, 0xfa, 0xe3, 0xfb, + 0x28, 0xff, 0x85, 0x01, 0x60, 0x03, 0x83, 0x05, 0x4b, 0x07, 0x13, 0x0a, 0x9d, 0x0d, 0x09, 0x0f, + 0xa1, 0x0e, 0x31, 0x0c, 0xb7, 0x09, 0x3d, 0x09, 0x0c, 0x0a, 0xdb, 0x0d, 0x2c, 0x12, 0x79, 0x10, + 0xae, 0x0d, 0x84, 0x0b, 0x85, 0x0a, 0xdb, 0x08, 0xee, 0x05, 0xe6, 0x00, 0xac, 0xfc, 0x16, 0xfb, + 0xab, 0xf8, 0x65, 0xf3, 0x53, 0xee, 0x77, 0xe7, 0x97, 0xe2, 0xc5, 0xdf, 0x1e, 0xdf, 0xeb, 0xe2, + 0xff, 0xe3, 0x9b, 0xe7, 0x0e, 0xeb, 0x0f, 0xed, 0x38, 0xef, 0x29, 0xf2, 0x7b, 0xf5, 0x1a, 0xf6, + 0xea, 0xf7, 0x3c, 0xfb, 0x1d, 0xfd, 0xa2, 0x01, 0x05, 0x05, 0x39, 0x07, 0x81, 0x07, 0x7c, 0x05, + 0x53, 0x04, 0x86, 0x03, 0xad, 0x04, 0xea, 0x04, 0xe7, 0x04, 0x0d, 0x06, 0xa2, 0x09, 0xc3, 0x0d, + 0x4f, 0x10, 0x15, 0x10, 0x31, 0x10, 0x54, 0x0f, 0xdf, 0x0a, 0xdc, 0x07, 0x65, 0x06, 0x62, 0x05, + 0x73, 0x03, 0xfc, 0x01, 0xcc, 0x00, 0x53, 0x00, 0x72, 0xfe, 0xf2, 0xfd, 0xcb, 0xfc, 0x66, 0xfd, + 0xef, 0xff, 0xd5, 0x01, 0xf9, 0x05, 0x8d, 0x08, 0x4e, 0x08, 0xb5, 0x06, 0x0e, 0x03, 0x18, 0x03, + 0x74, 0x03, 0x84, 0x03, 0x3f, 0x05, 0x8c, 0x05, 0x66, 0x06, 0x7c, 0x07, 0x3f, 0x0a, 0x60, 0x0d, + 0xf8, 0x0d, 0x8c, 0x0c, 0x4b, 0x0a, 0xca, 0x0a, 0x2c, 0x09, 0xaf, 0x09, 0xa2, 0x0b, 0x94, 0x08, + 0xf9, 0x05, 0xa9, 0xff, 0xf1, 0xf8, 0x88, 0xf5, 0x21, 0xf0, 0xf8, 0xed, 0x62, 0xed, 0x15, 0xed, + 0x65, 0xeb, 0x4e, 0xea, 0xa9, 0xe8, 0xc1, 0xe9, 0xc1, 0xe9, 0x56, 0xeb, 0x57, 0xee, 0x18, 0xf1, + 0xb8, 0xf4, 0xa5, 0xf4, 0xd5, 0xf4, 0xd2, 0xfa, 0x77, 0xff, 0x6c, 0xff, 0x53, 0x01, 0x02, 0x00, + 0x44, 0x01, 0x79, 0x02, 0x38, 0x05, 0x2b, 0x07, 0x66, 0x05, 0x10, 0x04, 0xcd, 0x02, 0xa8, 0x03, + 0x97, 0x03, 0xe4, 0x04, 0x54, 0x06, 0x75, 0x07, 0x26, 0x05, 0x10, 0x03, 0x74, 0xff, 0x83, 0xfd, + 0x96, 0xf6, 0x15, 0xf4, 0xb2, 0xf1, 0x54, 0xf2, 0x4c, 0xf3, 0xba, 0xf3, 0x4b, 0xf5, 0x25, 0xf6, + 0x36, 0xf8, 0x50, 0xfd, 0x6e, 0x01, 0xf9, 0x04, 0xc4, 0x08, 0x55, 0x0a, 0x30, 0x0c, 0x5b, 0x10, + 0x98, 0x13, 0xbc, 0x13, 0x49, 0x10, 0xc3, 0x0f, 0xb7, 0x10, 0x32, 0x11, 0x24, 0x14, 0x68, 0x18, + 0x0b, 0x1a, 0x5f, 0x18, 0x4c, 0x14, 0xc2, 0x12, 0x2f, 0x11, 0xd9, 0x0c, 0x04, 0x0b, 0xaa, 0x07, + 0xc7, 0x03, 0xf8, 0xfe, 0x35, 0xfb, 0xe6, 0xf4, 0xe5, 0xee, 0x77, 0xeb, 0x4b, 0xe8, 0x2c, 0xe6, + 0xb0, 0xe7, 0x51, 0xe7, 0xc0, 0xea, 0x62, 0xed, 0xf6, 0xee, 0x31, 0xef, 0xb5, 0xed, 0xc7, 0xef, + 0xb9, 0xf1, 0x5f, 0xf1, 0x13, 0xf2, 0x27, 0xf5, 0xe3, 0xfb, 0x44, 0xff, 0x06, 0x03, 0x01, 0x06, + 0x7a, 0x03, 0x71, 0x00, 0xc0, 0xfd, 0x7f, 0xfd, 0x79, 0xfd, 0xed, 0xff, 0x9a, 0x01, 0x87, 0x04, + 0xd2, 0x06, 0xd9, 0x0a, 0x7d, 0x0d, 0x6f, 0x0e, 0x64, 0x0f, 0xd6, 0x0d, 0x2d, 0x0b, 0x21, 0x0a, + 0xad, 0x08, 0x61, 0x05, 0x00, 0x02, 0x5a, 0x00, 0xb9, 0x00, 0x90, 0xfe, 0x64, 0xfe, 0xa0, 0xfc, + 0xab, 0xfb, 0x45, 0xfd, 0x7e, 0x00, 0xd3, 0x03, 0x88, 0x06, 0x81, 0x06, 0x49, 0x05, 0xea, 0x04, + 0x92, 0x07, 0x98, 0x08, 0x32, 0x07, 0xf1, 0x05, 0x8c, 0x05, 0x6f, 0x06, 0x79, 0x06, 0x4a, 0x09, + 0x0b, 0x0c, 0x0b, 0x0e, 0xe3, 0x0c, 0x7e, 0x0c, 0x06, 0x0c, 0x61, 0x0b, 0x14, 0x0d, 0x6c, 0x0d, + 0x07, 0x09, 0xdb, 0x06, 0xcb, 0x01, 0xa5, 0xfa, 0xc0, 0xf5, 0x67, 0xf1, 0xd1, 0xef, 0xa6, 0xf0, + 0x57, 0xf1, 0xc2, 0xf1, 0xb5, 0xee, 0xef, 0xeb, 0x4e, 0xec, 0x6c, 0xea, 0xfc, 0xeb, 0x77, 0xef, + 0x10, 0xf2, 0x27, 0xf2, 0x52, 0xf1, 0xef, 0xf3, 0xba, 0xfb, 0x98, 0x00, 0xc6, 0x03, 0x16, 0x04, + 0xe7, 0x01, 0x71, 0x03, 0x46, 0x03, 0x8c, 0x04, 0xb1, 0x04, 0x23, 0x05, 0x72, 0x05, 0x3f, 0x04, + 0xe5, 0x04, 0xfa, 0x07, 0x5c, 0x09, 0x64, 0x0a, 0x3e, 0x09, 0xfb, 0x06, 0xa0, 0x01, 0x6f, 0xfe, + 0x25, 0xfe, 0x27, 0xfa, 0xb5, 0xf8, 0x18, 0xf8, 0x8b, 0xf7, 0xb7, 0xf5, 0x13, 0xf6, 0x86, 0xf7, + 0xb1, 0xf5, 0xc1, 0xf4, 0x98, 0xf6, 0x57, 0xf9, 0x19, 0xfd, 0xaf, 0x00, 0x04, 0x02, 0xeb, 0x05, + 0xe9, 0x08, 0x0e, 0x0b, 0x8f, 0x0a, 0x16, 0x07, 0x04, 0x06, 0xc3, 0x06, 0x93, 0x06, 0xe6, 0x08, + 0x70, 0x0c, 0xe8, 0x0f, 0x75, 0x0f, 0xd5, 0x0a, 0xfd, 0x07, 0xff, 0x04, 0xad, 0x02, 0xfe, 0x00, + 0xe2, 0xfe, 0xca, 0xfd, 0x0a, 0xfb, 0xa9, 0xf6, 0x9b, 0xf2, 0xa6, 0xed, 0x22, 0xec, 0x2e, 0xe9, + 0xbc, 0xe7, 0xdb, 0xe8, 0xe2, 0xe9, 0xea, 0xec, 0xb8, 0xef, 0x0e, 0xf1, 0xf0, 0xf1, 0x51, 0xf5, + 0xbc, 0xf9, 0x2e, 0xfb, 0xa5, 0xfb, 0xba, 0xfc, 0x85, 0xfd, 0x49, 0x01, 0x07, 0x04, 0x90, 0x05, + 0x66, 0x06, 0xcd, 0x06, 0xea, 0x06, 0x94, 0x06, 0xeb, 0x06, 0x91, 0x08, 0x80, 0x0a, 0x70, 0x0b, + 0xcc, 0x0d, 0x83, 0x10, 0x84, 0x12, 0xad, 0x11, 0x54, 0x11, 0x62, 0x10, 0xd3, 0x0e, 0x3e, 0x0d, + 0x4e, 0x0d, 0xb7, 0x0a, 0x33, 0x07, 0xee, 0x04, 0xbe, 0x03, 0x27, 0x04, 0x61, 0x02, 0xac, 0xff, + 0x74, 0xfb, 0xc4, 0xfa, 0xf6, 0xfc, 0x7d, 0x00, 0x69, 0x02, 0x5b, 0x02, 0x96, 0x03, 0x13, 0x02, + 0x13, 0x01, 0xe0, 0x04, 0xc6, 0x06, 0x7b, 0x05, 0x6a, 0x05, 0x60, 0x05, 0x24, 0x06, 0x34, 0x07, + 0x20, 0x0b, 0xc7, 0x0d, 0x6e, 0x0f, 0xc7, 0x0d, 0xf8, 0x0a, 0xc5, 0x09, 0xde, 0x08, 0xa6, 0x09, + 0x14, 0x0b, 0x8a, 0x0a, 0x3b, 0x09, 0xa4, 0x05, 0xe2, 0xfe, 0xb8, 0xf9, 0x24, 0xf4, 0x2a, 0xf0, + 0xfe, 0xee, 0x5a, 0xed, 0x58, 0xed, 0x13, 0xec, 0x68, 0xea, 0xe6, 0xea, 0x70, 0xe9, 0x2e, 0xec, + 0x3a, 0xef, 0x19, 0xf2, 0x58, 0xf5, 0xe2, 0xf5, 0x90, 0xf6, 0x4b, 0xfc, 0x85, 0xff, 0x9b, 0x01, + 0xee, 0x02, 0xe1, 0x03, 0x2a, 0x06, 0x17, 0x04, 0x5d, 0x03, 0x7b, 0x04, 0xf2, 0x05, 0xb9, 0x05, + 0xa0, 0x03, 0x5e, 0x02, 0x82, 0x05, 0x00, 0x08, 0x8e, 0x0a, 0xa1, 0x0a, 0x03, 0x08, 0x93, 0x03, + 0xcd, 0x00, 0x76, 0xfd, 0x6f, 0xfb, 0x9d, 0xf9, 0xb4, 0xf5, 0x03, 0xf5, 0xd9, 0xf3, 0xac, 0xf4, + 0xbf, 0xf6, 0x19, 0xf8, 0xfe, 0xf9, 0x47, 0xfc, 0xf0, 0xfc, 0x0e, 0xff, 0x7b, 0x02, 0x22, 0x03, + 0x4a, 0x06, 0xf4, 0x09, 0x5c, 0x0b, 0xbc, 0x0b, 0x7f, 0x0a, 0x84, 0x08, 0xb2, 0x08, 0x35, 0x07, + 0xe3, 0x07, 0xb2, 0x09, 0x04, 0x0c, 0xb8, 0x0b, 0x50, 0x08, 0x8d, 0x06, 0x2c, 0x06, 0x46, 0x02, + 0x98, 0xfe, 0xc0, 0xfc, 0x6e, 0xfb, 0xd3, 0xf8, 0x9b, 0xf5, 0xb5, 0xf1, 0xcb, 0xed, 0xde, 0xe8, + 0x09, 0xe3, 0x6c, 0xe0, 0x6f, 0xdf, 0xea, 0xe0, 0x00, 0xe0, 0x2b, 0xe0, 0x1f, 0xe2, 0x4d, 0xe3, + 0x6e, 0xe7, 0xb6, 0xe9, 0x0d, 0xea, 0xe6, 0xeb, 0x74, 0xec, 0xbc, 0xee, 0xd0, 0xf3, 0xe6, 0xf7, + 0xe0, 0xfc, 0xb2, 0xff, 0xa7, 0x01, 0x80, 0x02, 0xaf, 0x01, 0xcc, 0x00, 0xa8, 0x01, 0x43, 0x03, + 0xc3, 0x04, 0x50, 0x09, 0xaa, 0x0c, 0x01, 0x10, 0x13, 0x14, 0x02, 0x16, 0x05, 0x17, 0x43, 0x18, + 0xf7, 0x15, 0x78, 0x15, 0x94, 0x14, 0xaa, 0x12, 0x44, 0x10, 0x58, 0x10, 0x03, 0x12, 0xca, 0x10, + 0x7e, 0x0d, 0x3e, 0x09, 0x7c, 0x08, 0x8c, 0x07, 0x85, 0x08, 0x50, 0x0a, 0x18, 0x0c, 0x71, 0x0e, + 0x1d, 0x0f, 0x9c, 0x0c, 0x80, 0x0e, 0x62, 0x11, 0x91, 0x13, 0xaa, 0x12, 0xbe, 0x12, 0x42, 0x13, + 0x53, 0x11, 0x47, 0x11, 0x9c, 0x12, 0x65, 0x14, 0xb7, 0x12, 0x1b, 0x10, 0xf2, 0x0c, 0x8c, 0x0a, + 0x74, 0x0a, 0x0a, 0x0c, 0xe2, 0x0a, 0x9a, 0x06, 0x63, 0x01, 0xf3, 0xfa, 0x60, 0xf6, 0xe0, 0xf0, + 0x9a, 0xec, 0x0d, 0xeb, 0xd6, 0xe8, 0x1f, 0xe8, 0x63, 0xe7, 0xcb, 0xe5, 0xb5, 0xe5, 0xba, 0xe5, + 0xe7, 0xe5, 0x39, 0xe7, 0xed, 0xe9, 0x72, 0xed, 0xd3, 0xef, 0x4b, 0xf2, 0x9c, 0xf6, 0x8c, 0xfa, + 0x3a, 0xfe, 0x11, 0xff, 0x84, 0x01, 0xa9, 0x02, 0xb0, 0x02, 0xd3, 0x03, 0xfc, 0x04, 0xf1, 0x06, + 0x28, 0x09, 0x1c, 0x08, 0x31, 0x05, 0xf6, 0x06, 0xc6, 0x07, 0xd7, 0x07, 0x73, 0x08, 0x32, 0x08, + 0xc9, 0x05, 0x8c, 0x04, 0xee, 0x01, 0x14, 0x00, 0xb6, 0xfd, 0x67, 0xfc, 0x1d, 0xfd, 0x5a, 0xfb, + 0x86, 0xfa, 0x20, 0xfb, 0xf3, 0xfa, 0xe4, 0xfa, 0xd1, 0xfd, 0x12, 0xfe, 0xc0, 0x00, 0xf0, 0x03, + 0x36, 0x06, 0xee, 0x08, 0x0f, 0x0a, 0x05, 0x0c, 0xdf, 0x0c, 0x8f, 0x0a, 0x12, 0x0a, 0xe7, 0x0a, + 0xce, 0x09, 0xdd, 0x0a, 0x58, 0x0b, 0x27, 0x0d, 0xaf, 0x0c, 0xc2, 0x0a, 0xf0, 0x09, 0xff, 0x06, + 0xb7, 0x03, 0x2b, 0x01, 0x00, 0xff, 0x9e, 0xfd, 0x90, 0xfc, 0xeb, 0xfb, 0x2c, 0xf9, 0x94, 0xf3, + 0xbf, 0xef, 0x19, 0xeb, 0x50, 0xe6, 0x3f, 0xe6, 0x2f, 0xe7, 0xf8, 0xe4, 0x4a, 0xe6, 0xe1, 0xe7, + 0xa3, 0xe8, 0x8e, 0xeb, 0xcc, 0xec, 0x8b, 0xee, 0xa4, 0xf0, 0x11, 0xf0, 0x20, 0xf0, 0xfe, 0xf0, + 0x61, 0xf4, 0x4e, 0xfa, 0xd1, 0xfd, 0xea, 0xfd, 0x11, 0xfe, 0xf0, 0xfc, 0x5c, 0xfa, 0xdc, 0xfc, + 0xa9, 0xfe, 0x93, 0x00, 0x6f, 0x01, 0x53, 0x03, 0xc4, 0x04, 0x4b, 0x07, 0xe9, 0x08, 0x23, 0x0a, + 0xcf, 0x0a, 0x6d, 0x08, 0x91, 0x07, 0xad, 0x05, 0x13, 0x02, 0x1f, 0xff, 0x55, 0xff, 0x1a, 0xfe, + 0xcf, 0xfd, 0xfa, 0xfa, 0xe7, 0xf8, 0x0d, 0xf9, 0x09, 0xf8, 0xaa, 0xf8, 0xb1, 0xfa, 0x7c, 0xfc, + 0xa1, 0x01, 0x19, 0x03, 0xba, 0xff, 0xf7, 0x01, 0xe5, 0x04, 0xa0, 0x07, 0x2d, 0x0a, 0x32, 0x0d, + 0x8f, 0x0e, 0x83, 0x0f, 0x57, 0x10, 0x32, 0x14, 0x00, 0x17, 0xaa, 0x16, 0xff, 0x14, 0x85, 0x11, + 0xe0, 0x0f, 0xdb, 0x11, 0x26, 0x15, 0xe8, 0x14, 0xd4, 0x13, 0xbe, 0x11, 0x25, 0x0b, 0x6f, 0x05, + 0x56, 0x00, 0xc4, 0xfa, 0x51, 0xf8, 0x69, 0xf7, 0x9e, 0xf5, 0x44, 0xf3, 0x74, 0xf1, 0x17, 0xf1, + 0x90, 0xf1, 0x12, 0xf2, 0x82, 0xf2, 0x49, 0xf4, 0x3e, 0xf6, 0xf7, 0xf7, 0x99, 0xfa, 0x81, 0xfc, + 0xdb, 0x00, 0x38, 0x05, 0x0c, 0x05, 0x96, 0x06, 0x61, 0x07, 0x31, 0x06, 0x56, 0x04, 0xb6, 0x02, + 0xe9, 0x03, 0xfb, 0x05, 0xdb, 0x03, 0x1e, 0x03, 0xf6, 0x05, 0x7c, 0x05, 0x88, 0x05, 0x9f, 0x06, + 0xe1, 0x04, 0x89, 0x04, 0xea, 0x02, 0xdd, 0xfe, 0x0b, 0xfd, 0x11, 0xf9, 0x36, 0xf8, 0x28, 0xf8, + 0x38, 0xf7, 0xcf, 0xf7, 0xab, 0xf8, 0x88, 0xf8, 0xc1, 0xf8, 0xde, 0xf9, 0x12, 0xf8, 0x31, 0xfa, + 0x64, 0xfd, 0x4c, 0x00, 0x1b, 0x03, 0x34, 0x05, 0x51, 0x08, 0x29, 0x0b, 0xe9, 0x0a, 0x65, 0x0a, + 0xc0, 0x09, 0x1f, 0x08, 0xcf, 0x06, 0x92, 0x06, 0x7d, 0x09, 0x18, 0x0b, 0x95, 0x0a, 0x14, 0x09, + 0xc6, 0x06, 0x05, 0x06, 0x77, 0x04, 0x30, 0x02, 0xda, 0x01, 0x9c, 0x00, 0x7e, 0xfd, 0x05, 0xfa, + 0x70, 0xf6, 0xb9, 0xf3, 0x2e, 0xf0, 0x2c, 0xeb, 0x86, 0xea, 0xf5, 0xea, 0x42, 0xe8, 0xc4, 0xe8, + 0xd7, 0xe7, 0x7e, 0xe7, 0x1d, 0xea, 0x5f, 0xeb, 0x1e, 0xef, 0x60, 0xf3, 0x62, 0xf2, 0x74, 0xf1, + 0xf0, 0xf1, 0xe0, 0xf5, 0x17, 0xfc, 0x4f, 0x00, 0x67, 0x02, 0x11, 0x04, 0xa4, 0x01, 0x3e, 0x00, + 0x9f, 0x04, 0x02, 0x07, 0xe6, 0x09, 0x4e, 0x0c, 0x29, 0x0e, 0x37, 0x10, 0xe0, 0x11, 0x0f, 0x11, + 0x7f, 0x12, 0xda, 0x12, 0xff, 0x10, 0x8b, 0x0e, 0xb8, 0x0c, 0xa4, 0x0b, 0x89, 0x0b, 0xdd, 0x0b, + 0x77, 0x09, 0xeb, 0x07, 0xd5, 0x01, 0x4d, 0xfd, 0xe9, 0xfa, 0x95, 0xf9, 0xf3, 0xf8, 0xa7, 0xf9, + 0x39, 0xfa, 0x00, 0xfe, 0x1b, 0x00, 0xdc, 0xfe, 0x37, 0xff, 0xd0, 0x00, 0xd8, 0x01, 0x7a, 0x02, + 0x19, 0x03, 0x2c, 0x03, 0x70, 0x04, 0x7b, 0x04, 0x89, 0x07, 0x65, 0x0a, 0x68, 0x0a, 0x52, 0x08, + 0x11, 0x05, 0xc8, 0x02, 0x6d, 0x02, 0x7d, 0x03, 0x14, 0x04, 0x2f, 0x05, 0x0d, 0x03, 0x59, 0xfe, + 0x1e, 0xfa, 0xb1, 0xf4, 0x89, 0xef, 0xed, 0xec, 0xed, 0xeb, 0xd6, 0xea, 0x27, 0xe9, 0x02, 0xe7, + 0x34, 0xe6, 0x38, 0xe8, 0xee, 0xe9, 0xb0, 0xeb, 0x07, 0xef, 0x16, 0xf3, 0x3f, 0xf7, 0x7d, 0xfa, + 0x32, 0xfb, 0xdc, 0xfe, 0x28, 0x03, 0x07, 0x05, 0x55, 0x09, 0x5e, 0x0b, 0x83, 0x0b, 0x5b, 0x0d, + 0xa4, 0x0d, 0x0e, 0x0f, 0x4c, 0x12, 0x0a, 0x10, 0x39, 0x0e, 0x40, 0x0f, 0x00, 0x0f, 0x76, 0x0f, + 0x4c, 0x10, 0xb1, 0x0f, 0x23, 0x0f, 0xe9, 0x0c, 0x6a, 0x0b, 0x8c, 0x0a, 0x86, 0x07, 0xbb, 0x05, + 0x75, 0x02, 0xcb, 0x00, 0xa6, 0xff, 0xbd, 0x00, 0x5f, 0x00, 0x79, 0xff, 0x41, 0xff, 0xa0, 0xfd, + 0x66, 0xff, 0x2a, 0x01, 0x83, 0x02, 0x06, 0x04, 0x36, 0x04, 0x7f, 0x04, 0x88, 0x06, 0x3c, 0x06, + 0xcd, 0x06, 0x1b, 0x06, 0xe2, 0x03, 0xb3, 0x01, 0xae, 0x00, 0x30, 0x04, 0x7d, 0x06, 0x00, 0x06, + 0x4f, 0x04, 0xa7, 0x02, 0x17, 0x00, 0x74, 0xfe, 0x11, 0xfe, 0xdc, 0xfd, 0x38, 0xfd, 0x77, 0xfc, + 0x37, 0xfa, 0x6c, 0xf5, 0x24, 0xf3, 0xae, 0xef, 0xf0, 0xe8, 0xfb, 0xe7, 0x73, 0xe8, 0x54, 0xe7, + 0xee, 0xe8, 0x55, 0xe9, 0x0a, 0xea, 0x04, 0xec, 0x20, 0xec, 0x30, 0xee, 0xe8, 0xf0, 0xc5, 0xf0, + 0x19, 0xf1, 0xd5, 0xf1, 0x8f, 0xf4, 0xa6, 0xfa, 0x5a, 0x00, 0x21, 0x02, 0xa7, 0x04, 0x64, 0x03, + 0xd5, 0x02, 0x97, 0x04, 0x9e, 0x05, 0x07, 0x08, 0x89, 0x0b, 0x44, 0x0e, 0xba, 0x0f, 0x9b, 0x10, + 0xc9, 0x10, 0xda, 0x13, 0xe6, 0x13, 0x07, 0x11, 0xb2, 0x0c, 0x20, 0x0b, 0xe9, 0x09, 0x16, 0x09, + 0x4f, 0x08, 0x96, 0x07, 0x5b, 0x06, 0x1b, 0x02, 0xc5, 0xfd, 0x79, 0xf9, 0x69, 0xf7, 0x34, 0xf8, + 0xd1, 0xf8, 0x97, 0xf7, 0x86, 0xfa, 0x1a, 0xfd, 0xc1, 0xfc, 0xe7, 0xfc, 0xd1, 0xff, 0x18, 0x03, + 0xc7, 0x06, 0x04, 0x08, 0x64, 0x07, 0xa6, 0x07, 0x71, 0x07, 0x55, 0x0a, 0x20, 0x0c, 0xc0, 0x0c, + 0x4c, 0x0c, 0x6f, 0x0b, 0x90, 0x09, 0xe4, 0x09, 0x19, 0x0c, 0xcd, 0x0a, 0xe9, 0x0a, 0x01, 0x09, + 0x6d, 0x04, 0x06, 0x01, 0x31, 0xfd, 0x4e, 0xf8, 0xf0, 0xf3, 0x4b, 0xf1, 0x18, 0xf0, 0xb3, 0xee, + 0x55, 0xec, 0x1c, 0xeb, 0xb3, 0xeb, 0x49, 0xea, 0x57, 0xe9, 0x7f, 0xec, 0xd2, 0xf0, 0x5b, 0xf4, + 0x8f, 0xf6, 0xa9, 0xf6, 0x84, 0xf9, 0x9c, 0xfd, 0x0b, 0x00, 0x9d, 0x01, 0x7d, 0x01, 0x34, 0x02, + 0x35, 0x04, 0x5a, 0x03, 0x3c, 0x04, 0x3f, 0x08, 0xa8, 0x07, 0x97, 0x06, 0x0f, 0x06, 0x5f, 0x06, + 0x41, 0x08, 0x24, 0x09, 0x03, 0x09, 0xa1, 0x07, 0xd7, 0x03, 0x26, 0x04, 0x6e, 0x04, 0x7c, 0x02, + 0x4b, 0x02, 0x1a, 0x01, 0x82, 0x00, 0x41, 0x00, 0x94, 0x00, 0x69, 0xfe, 0xac, 0xfd, 0xf6, 0xfc, + 0x1e, 0xfc, 0x4b, 0xfd, 0x20, 0x00, 0xa3, 0x04, 0xb6, 0x07, 0xd8, 0x08, 0xc9, 0x08, 0xb4, 0x09, + 0x5e, 0x0a, 0x11, 0x0a, 0xb5, 0x08, 0xd0, 0x07, 0x89, 0x05, 0x5a, 0x05, 0x12, 0x08, 0xcf, 0x0a, + 0x6f, 0x0c, 0x47, 0x0b, 0xd9, 0x09, 0x82, 0x07, 0x03, 0x04, 0x21, 0x01, 0x53, 0x00, 0xb1, 0x00, + 0x5a, 0x00, 0x35, 0xfd, 0xc8, 0xf8, 0x31, 0xf6, 0x4d, 0xf3, 0xfd, 0xec, 0x1f, 0xea, 0xa1, 0xe8, + 0xc2, 0xe6, 0xbb, 0xe6, 0x20, 0xe6, 0x5d, 0xe6, 0x18, 0xe8, 0xa5, 0xe9, 0x52, 0xeb, 0xfa, 0xec, + 0x7a, 0xed, 0xd9, 0xec, 0x31, 0xed, 0x70, 0xef, 0x91, 0xf5, 0x8a, 0xf9, 0x62, 0xfb, 0xdb, 0xff, + 0x42, 0x00, 0x13, 0x01, 0x72, 0x03, 0x23, 0x07, 0x27, 0x0b, 0xbf, 0x0d, 0x2e, 0x0f, 0x9c, 0x10, + 0xaa, 0x10, 0x36, 0x12, 0xa1, 0x14, 0x8a, 0x14, 0x7e, 0x13, 0xa1, 0x12, 0x70, 0x14, 0x09, 0x14, + 0xc2, 0x12, 0xf6, 0x0f, 0xc7, 0x0d, 0x8a, 0x0b, 0x64, 0x08, 0x77, 0x03, 0x6b, 0xfe, 0x87, 0xfc, + 0xf6, 0xfc, 0x2c, 0xfd, 0xf9, 0xfc, 0x33, 0x00, 0x58, 0x03, 0x7e, 0x02, 0x9d, 0xff, 0x96, 0x00, + 0x72, 0x03, 0x02, 0x06, 0x20, 0x05, 0x47, 0x04, 0xdc, 0x04, 0x26, 0x06, 0x2b, 0x08, 0xab, 0x09, + 0x5f, 0x0a, 0x57, 0x08, 0x3f, 0x07, 0x1d, 0x05, 0xc7, 0x04, 0x55, 0x06, 0xf5, 0x05, 0x89, 0x05, + 0x2e, 0x03, 0x48, 0xff, 0x0b, 0xfd, 0x39, 0xfa, 0x05, 0xf7, 0x7c, 0xf2, 0xe7, 0xed, 0x40, 0xeb, + 0x83, 0xe9, 0x41, 0xe8, 0x9f, 0xe7, 0xe5, 0xe8, 0x52, 0xe9, 0x52, 0xea, 0xbe, 0xed, 0x4d, 0xf1, + 0xc7, 0xf4, 0x49, 0xf6, 0xc8, 0xf6, 0x8d, 0xfa, 0x96, 0xfe, 0xfe, 0x00, 0x8c, 0x03, 0x4e, 0x07, + 0x2d, 0x0a, 0x9c, 0x0b, 0x82, 0x09, 0x5a, 0x09, 0x42, 0x0c, 0x21, 0x0c, 0x57, 0x0b, 0xaf, 0x09, + 0x1b, 0x09, 0xc4, 0x0b, 0x1b, 0x0c, 0xb3, 0x0b, 0x9a, 0x0b, 0x37, 0x0a, 0x92, 0x0a, 0x0e, 0x08, + 0x23, 0x06, 0xf0, 0x04, 0xec, 0x02, 0x3f, 0x02, 0x9d, 0x00, 0x8d, 0xff, 0x92, 0xfd, 0x4f, 0xfd, + 0x69, 0xfb, 0xbc, 0xf9, 0xd6, 0xf8, 0xeb, 0xfa, 0xca, 0xfe, 0x2e, 0x00, 0x98, 0x01, 0xe2, 0x02, + 0x4e, 0x04, 0x5e, 0x04, 0x56, 0x03, 0x0e, 0x02, 0x0d, 0x02, 0xe1, 0x00, 0xa6, 0x00, 0x5e, 0x02, + 0x4f, 0x04, 0xbc, 0x04, 0x12, 0x05, 0x21, 0x05, 0x4c, 0x04, 0x6a, 0x02, 0xe7, 0x00, 0xe8, 0x00, + 0xc6, 0x01, 0x06, 0x02, 0xcd, 0xff, 0x26, 0xfb, 0xe9, 0xf8, 0x29, 0xf6, 0x75, 0xef, 0x4f, 0xed, + 0x41, 0xec, 0x5e, 0xec, 0xa4, 0xec, 0xc6, 0xea, 0x2c, 0xea, 0xed, 0xea, 0xf6, 0xec, 0x03, 0xef, + 0xa2, 0xef, 0x35, 0xef, 0xe4, 0xee, 0xee, 0xef, 0x60, 0xf2, 0x97, 0xf7, 0x41, 0xfc, 0xd0, 0xff, + 0x05, 0x02, 0x6d, 0x01, 0x66, 0x01, 0x77, 0x02, 0x20, 0x06, 0x2e, 0x09, 0xb6, 0x0a, 0x17, 0x0c, + 0x50, 0x0e, 0x2d, 0x10, 0xb1, 0x10, 0xb3, 0x0f, 0xc6, 0x0f, 0x38, 0x0e, 0x18, 0x0c, 0xc7, 0x0c, + 0xd9, 0x0c, 0xd7, 0x0a, 0xc6, 0x08, 0xf9, 0x07, 0xc0, 0x04, 0xe0, 0x01, 0x1a, 0xfe, 0x16, 0xfa, + 0xb1, 0xf7, 0xca, 0xf6, 0x87, 0xf6, 0x14, 0xf7, 0x20, 0xf9, 0xa4, 0xfc, 0x8a, 0xfd, 0x86, 0xfd, + 0xdd, 0xff, 0x62, 0x02, 0xf5, 0x04, 0x39, 0x05, 0x95, 0x05, 0xba, 0x06, 0x4b, 0x08, 0x10, 0x09, + 0x63, 0x0b, 0xbe, 0x0c, 0x93, 0x0c, 0x01, 0x0d, 0x9f, 0x0b, 0xd8, 0x0a, 0x80, 0x0a, 0x97, 0x0a, + 0x36, 0x0b, 0x4d, 0x0a, 0x95, 0x06, 0xac, 0x03, 0x6b, 0x01, 0x99, 0xfe, 0x4c, 0xfa, 0x13, 0xf6, + 0x40, 0xf3, 0x6b, 0xf1, 0xa3, 0xee, 0x5b, 0xec, 0xf9, 0xeb, 0x7a, 0xeb, 0x32, 0xec, 0x26, 0xef, + 0x67, 0xf2, 0xf5, 0xf4, 0x0e, 0xf8, 0x0b, 0xfa, 0x34, 0xfb, 0x11, 0xfc, 0xb7, 0xfd, 0xbb, 0xff, + 0x09, 0x03, 0x23, 0x06, 0x19, 0x07, 0x3c, 0x05, 0x78, 0x04, 0x16, 0x07, 0xce, 0x06, 0x4a, 0x06, + 0xe3, 0x05, 0x73, 0x06, 0x23, 0x07, 0xc9, 0x05, 0x4b, 0x06, 0xd6, 0x06, 0x54, 0x06, 0xdb, 0x07, + 0xf4, 0x07, 0x0c, 0x08, 0x1b, 0x07, 0xd7, 0x05, 0x9c, 0x03, 0x43, 0x02, 0x54, 0x02, 0x27, 0x01, + 0x5e, 0xfe, 0x3d, 0xfc, 0x42, 0xfc, 0x4f, 0xfc, 0x04, 0xff, 0x71, 0x02, 0xca, 0x03, 0xf8, 0x04, + 0x79, 0x05, 0x83, 0x06, 0xdb, 0x07, 0xd4, 0x05, 0xf2, 0x04, 0x24, 0x05, 0xc1, 0x03, 0x8c, 0x04, + 0xdc, 0x06, 0x6d, 0x08, 0x94, 0x08, 0xb3, 0x08, 0xb4, 0x07, 0x63, 0x06, 0xe8, 0x03, 0x67, 0x01, + 0xa6, 0x01, 0x49, 0x02, 0xc6, 0x02, 0x50, 0x02, 0xc8, 0xfe, 0xd5, 0xfc, 0xa7, 0xf8, 0xc9, 0xf1, + 0x61, 0xec, 0xa6, 0xea, 0x18, 0xeb, 0x09, 0xea, 0xca, 0xe8, 0x34, 0xe7, 0x27, 0xe8, 0x04, 0xeb, + 0x6c, 0xec, 0xd2, 0xec, 0x49, 0xee, 0xe2, 0xed, 0xb2, 0xed, 0xe1, 0xee, 0x1a, 0xf3, 0x0f, 0xf8, + 0xf4, 0xfc, 0x14, 0x02, 0xe6, 0x03, 0xfc, 0x04, 0x16, 0x07, 0xc1, 0x0a, 0x42, 0x0d, 0x04, 0x0f, + 0x79, 0x11, 0xd4, 0x12, 0x6e, 0x13, 0xbe, 0x14, 0xe4, 0x14, 0xe9, 0x16, 0x2f, 0x17, 0xe7, 0x15, + 0x9a, 0x15, 0x63, 0x15, 0x03, 0x14, 0x17, 0x12, 0xbf, 0x0e, 0x24, 0x0a, 0xcf, 0x06, 0xa6, 0x01, + 0xe8, 0xfc, 0x62, 0xfa, 0x30, 0xf9, 0xc1, 0xf8, 0x4f, 0xf7, 0xbd, 0xf6, 0xf4, 0xf9, 0xc1, 0xfa, + 0x8e, 0xfb, 0x13, 0xfd, 0x75, 0xfe, 0xf0, 0xff, 0xd7, 0x00, 0x73, 0x01, 0x1d, 0x02, 0x74, 0x04, + 0x32, 0x03, 0x24, 0x03, 0xbb, 0x03, 0x23, 0x03, 0xc9, 0x02, 0xab, 0x01, 0xb3, 0x00, 0xca, 0x00, + 0x22, 0xff, 0xbb, 0x00, 0x17, 0x01, 0x90, 0xfe, 0xaa, 0xfc, 0x3e, 0xfa, 0x87, 0xf7, 0x12, 0xf3, + 0xd8, 0xed, 0xef, 0xeb, 0x8f, 0xeb, 0x71, 0xea, 0x0d, 0xea, 0x70, 0xe9, 0x00, 0xea, 0x93, 0xeb, + 0xc7, 0xec, 0xa3, 0xee, 0xb3, 0xf0, 0xcd, 0xf3, 0x5c, 0xf6, 0x02, 0xf8, 0xd3, 0xf9, 0x0b, 0xfe, + 0x9e, 0x01, 0xef, 0x04, 0x08, 0x08, 0x86, 0x0a, 0x8f, 0x0a, 0xe5, 0x09, 0xac, 0x09, 0x10, 0x09, + 0x3e, 0x09, 0x1d, 0x09, 0xf0, 0x09, 0xd9, 0x0a, 0xa1, 0x09, 0xc0, 0x09, 0xd1, 0x09, 0x84, 0x09, + 0xe3, 0x09, 0x2d, 0x09, 0x54, 0x0a, 0xf4, 0x07, 0x3c, 0x04, 0x39, 0x03, 0x70, 0x02, 0x73, 0x02, + 0xe4, 0x00, 0x81, 0xfd, 0x8f, 0xfb, 0xcb, 0xf9, 0xba, 0xf7, 0xef, 0xf8, 0x7f, 0xfb, 0x09, 0xfd, + 0x89, 0xfe, 0x4d, 0xff, 0xea, 0xfe, 0xb9, 0x00, 0xf8, 0x00, 0x00, 0x01, 0x1d, 0x01, 0xf4, 0x00, + 0x3f, 0x01, 0xdb, 0x02, 0x77, 0x04, 0x6d, 0x07, 0xb8, 0x09, 0xf0, 0x09, 0x3b, 0x09, 0xb1, 0x06, + 0xed, 0x03, 0x7e, 0x04, 0xdb, 0x04, 0x81, 0x04, 0x47, 0x04, 0xd7, 0x01, 0xa2, 0x00, 0xcc, 0xfb, + 0xef, 0xf6, 0x2f, 0xf4, 0x97, 0xf1, 0x9c, 0xf0, 0xbf, 0xee, 0xbc, 0xed, 0x13, 0xee, 0x8c, 0xee, + 0x08, 0xef, 0x44, 0xee, 0x42, 0xee, 0x39, 0xf0, 0x2a, 0xf2, 0x33, 0xf2, 0xe7, 0xf2, 0x39, 0xf6, + 0xae, 0xfa, 0xd9, 0xff, 0x4c, 0x04, 0x45, 0x07, 0x4e, 0x07, 0x58, 0x07, 0x2d, 0x09, 0x13, 0x0b, + 0x5a, 0x0c, 0x62, 0x0e, 0xd9, 0x0e, 0x87, 0x0e, 0x9a, 0x0e, 0x03, 0x0e, 0xe2, 0x0f, 0x60, 0x10, + 0x54, 0x0f, 0xe6, 0x0e, 0x1b, 0x0f, 0xa4, 0x0e, 0x53, 0x0d, 0x6b, 0x0b, 0xcc, 0x07, 0x79, 0x04, + 0xa6, 0xff, 0x20, 0xfb, 0x7e, 0xf8, 0x8b, 0xf7, 0xdb, 0xf7, 0x7f, 0xf7, 0xa5, 0xf7, 0xdd, 0xfa, + 0x7c, 0xfd, 0xbd, 0xfe, 0xe8, 0xff, 0x71, 0x01, 0xc1, 0x01, 0x0c, 0x02, 0xbe, 0x03, 0x2a, 0x05, + 0x9e, 0x07, 0x34, 0x07, 0x58, 0x08, 0x97, 0x09, 0x29, 0x0a, 0x78, 0x0a, 0x63, 0x09, 0x14, 0x08, + 0x14, 0x08, 0x01, 0x07, 0xc2, 0x07, 0x18, 0x07, 0x80, 0x06, 0xeb, 0x06, 0x6a, 0x05, 0x24, 0x03, + 0xdd, 0xfd, 0x45, 0xf9, 0xdc, 0xf5, 0x09, 0xf4, 0x9e, 0xf1, 0xa2, 0xf0, 0x31, 0xef, 0x20, 0xef, + 0x9e, 0xef, 0xbe, 0xef, 0x0a, 0xf1, 0x72, 0xf3, 0x51, 0xf5, 0x0c, 0xf7, 0xae, 0xf4, 0xdf, 0xf4, + 0x02, 0xf7, 0xb6, 0xf8, 0x31, 0xfc, 0x99, 0xff, 0x3e, 0x03, 0xc9, 0x03, 0xbf, 0x03, 0x54, 0x03, + 0x84, 0x03, 0xaa, 0x03, 0x6e, 0x03, 0xe0, 0x03, 0xa8, 0x04, 0x01, 0x05, 0x1f, 0x06, 0x49, 0x06, + 0xb3, 0x07, 0x31, 0x08, 0x7f, 0x08, 0x47, 0x08, 0x15, 0x06, 0xb0, 0x03, 0x1c, 0x02, 0xed, 0x00, + 0xba, 0xff, 0x0a, 0xff, 0x86, 0xfc, 0x76, 0xfa, 0x1a, 0xf9, 0xb0, 0xf7, 0x3e, 0xf7, 0xb0, 0xfa, + 0xa1, 0xfd, 0x44, 0xff, 0x34, 0x00, 0x08, 0x00, 0xdf, 0xff, 0x4a, 0x00, 0x9c, 0x01, 0xcc, 0x02, + 0xa5, 0x03, 0xfb, 0x02, 0xc5, 0x02, 0xb6, 0x03, 0x4a, 0x05, 0x17, 0x08, 0xf6, 0x06, 0x4f, 0x03, + 0x23, 0x02, 0x72, 0x00, 0xcb, 0xff, 0x85, 0x00, 0x87, 0x02, 0x66, 0x03, 0xc6, 0x01, 0xca, 0xfe, + 0xfe, 0xf9, 0xf6, 0xf5, 0x7e, 0xf1, 0x41, 0xee, 0x51, 0xec, 0x8f, 0xe9, 0x68, 0xea, 0xcc, 0xea, + 0xc7, 0xea, 0xf4, 0xeb, 0xcc, 0xeb, 0xba, 0xec, 0x84, 0xee, 0x01, 0xf0, 0x26, 0xf1, 0x24, 0xf2, + 0xf1, 0xf6, 0x92, 0xfb, 0x67, 0x00, 0xcc, 0x04, 0xd5, 0x08, 0x48, 0x0a, 0x9a, 0x09, 0x11, 0x0c, + 0x88, 0x0e, 0xf9, 0x0f, 0x77, 0x10, 0xa1, 0x11, 0xa1, 0x13, 0x6b, 0x14, 0xaa, 0x14, 0x8b, 0x15, + 0xd6, 0x15, 0xa6, 0x17, 0xe1, 0x17, 0x2a, 0x18, 0xdb, 0x16, 0x97, 0x15, 0xf6, 0x12, 0x09, 0x0f, + 0x7d, 0x0c, 0x8d, 0x08, 0x1f, 0x04, 0x77, 0x00, 0x74, 0xfe, 0x77, 0xfc, 0xd4, 0xfa, 0x2d, 0xfa, + 0xed, 0xfa, 0x38, 0xfc, 0xb3, 0xfd, 0x52, 0xfe, 0x60, 0xff, 0x87, 0xff, 0x36, 0x00, 0x37, 0x01, + 0x98, 0x01, 0x4b, 0x02, 0x44, 0x01, 0x50, 0x00, 0xb2, 0x01, 0xc6, 0x02, 0x8b, 0x02, 0xb4, 0x00, + 0x72, 0x01, 0x54, 0x03, 0x39, 0x01, 0x59, 0x01, 0x24, 0x01, 0xfb, 0x01, 0xb8, 0x00, 0x72, 0xff, + 0x10, 0xff, 0xc7, 0xfb, 0xa0, 0xf7, 0x4c, 0xf4, 0xb4, 0xf1, 0xc2, 0xef, 0x31, 0xf0, 0xcd, 0xef, + 0x40, 0xee, 0xfa, 0xed, 0x70, 0xee, 0xd6, 0xee, 0x49, 0xf2, 0x43, 0xf5, 0x3b, 0xf8, 0xb2, 0xf6, + 0xa8, 0xf7, 0xd3, 0xfa, 0xe4, 0xfd, 0xcb, 0x01, 0x2f, 0x07, 0x9b, 0x0b, 0x92, 0x09, 0x4e, 0x08, + 0x70, 0x08, 0x3b, 0x09, 0x5a, 0x09, 0x10, 0x09, 0xdd, 0x09, 0x98, 0x09, 0xc4, 0x08, 0x40, 0x09, + 0x39, 0x0a, 0x7b, 0x0c, 0x51, 0x0c, 0x76, 0x0a, 0xfb, 0x09, 0x47, 0x08, 0x7e, 0x06, 0xa6, 0x03, + 0x90, 0xff, 0xc5, 0xfd, 0x6c, 0xfc, 0xf9, 0xf9, 0x8c, 0xf7, 0x1f, 0xf4, 0x3f, 0xf2, 0xbe, 0xf1, + 0x89, 0xf3, 0xc8, 0xf6, 0x0f, 0xfa, 0x67, 0xfa, 0x8e, 0xfa, 0x1b, 0xfa, 0xa8, 0xfa, 0x1f, 0xfd, + 0xac, 0xfd, 0x0d, 0xfe, 0x1a, 0xfe, 0x3e, 0xfd, 0xb2, 0x00, 0xb1, 0x04, 0x27, 0x07, 0x79, 0x05, + 0xdf, 0x04, 0xc0, 0x03, 0xb4, 0x01, 0xf1, 0x00, 0x83, 0x01, 0x11, 0x05, 0xf7, 0x05, 0x28, 0x05, + 0xae, 0x03, 0x31, 0x00, 0xee, 0xfc, 0x2a, 0xf9, 0xd4, 0xf4, 0x59, 0xf2, 0xe7, 0xf1, 0x09, 0xf1, + 0x72, 0xef, 0x71, 0xee, 0x85, 0xef, 0x1d, 0xef, 0xa1, 0xee, 0xa5, 0xf0, 0xc6, 0xf1, 0x21, 0xf2, + 0xdd, 0xf1, 0x55, 0xf5, 0x2e, 0xfa, 0x8e, 0xfe, 0x54, 0x02, 0xa2, 0x06, 0xff, 0x06, 0x11, 0x07, + 0x48, 0x0a, 0x79, 0x0a, 0x41, 0x0a, 0xe5, 0x0a, 0x47, 0x0a, 0xa2, 0x0c, 0x9d, 0x0c, 0x9a, 0x0c, + 0xef, 0x0d, 0xe4, 0x0d, 0x1b, 0x0f, 0x4b, 0x10, 0xff, 0x0f, 0x16, 0x10, 0xd2, 0x10, 0xfa, 0x0c, + 0xcc, 0x09, 0x35, 0x06, 0x30, 0x02, 0x2c, 0x00, 0xb2, 0xfb, 0xa0, 0xf8, 0xda, 0xf8, 0x80, 0xf7, + 0x56, 0xf7, 0xa1, 0xf7, 0xad, 0xfa, 0x14, 0xfe, 0x00, 0xfd, 0x69, 0xfd, 0x57, 0xfe, 0x99, 0xff, + 0x39, 0x01, 0x5c, 0x02, 0x24, 0x05, 0xf1, 0x05, 0x0e, 0x05, 0xa8, 0x07, 0x75, 0x07, 0x1b, 0x07, + 0x41, 0x06, 0xad, 0x04, 0xa0, 0x04, 0x30, 0x05, 0x13, 0x05, 0xe7, 0x05, 0xfc, 0x06, 0x21, 0x06, + 0x3c, 0x06, 0xd4, 0x04, 0xf1, 0x02, 0x6d, 0xfe, 0x65, 0xf9, 0x6f, 0xf5, 0xa1, 0xf2, 0x38, 0xf2, + 0x04, 0xf2, 0x22, 0xf1, 0xb0, 0xef, 0xe7, 0xee, 0xc1, 0xee, 0x8c, 0xee, 0x1e, 0xf2, 0x0c, 0xf5, + 0xe1, 0xf3, 0xb1, 0xf4, 0x88, 0xf4, 0x89, 0xf7, 0x82, 0xfc, 0x87, 0x00, 0x1d, 0x04, 0x54, 0x06, + 0xca, 0x05, 0x18, 0x04, 0xc0, 0x03, 0xe5, 0x04, 0x7b, 0x05, 0xb5, 0x05, 0x86, 0x05, 0x28, 0x05, + 0xd3, 0x06, 0x2e, 0x09, 0x36, 0x0b, 0x91, 0x0b, 0xfe, 0x09, 0xc4, 0x0a, 0xe8, 0x0b, 0xbe, 0x09, + 0xc5, 0x07, 0xf3, 0x04, 0x47, 0x04, 0x44, 0x05, 0x6b, 0x03, 0x06, 0x00, 0x29, 0xfe, 0xce, 0xfc, + 0xa1, 0xfc, 0xc1, 0xfe, 0xdd, 0xfe, 0x77, 0x01, 0xad, 0x02, 0xbf, 0x03, 0x4f, 0x04, 0x19, 0x06, + 0xab, 0x07, 0xbc, 0x07, 0x11, 0x08, 0xe1, 0x07, 0x44, 0x08, 0xd4, 0x07, 0xd4, 0x08, 0x93, 0x0b, + 0x28, 0x0a, 0x83, 0x07, 0x92, 0x07, 0xdd, 0x03, 0x50, 0x03, 0xc8, 0x03, 0x1a, 0x05, 0x91, 0x05, + 0x1c, 0x01, 0x24, 0xff, 0xd5, 0xfd, 0xfe, 0xf9, 0x23, 0xf5, 0x6f, 0xf2, 0x8b, 0xf0, 0x44, 0xed, + 0x42, 0xeb, 0xe1, 0xeb, 0xc8, 0xea, 0x51, 0xeb, 0xe7, 0xe9, 0x79, 0xe8, 0xa9, 0xe8, 0x62, 0xe7, + 0xdc, 0xe7, 0x72, 0xe9, 0x21, 0xeb, 0x47, 0xf1, 0x53, 0xf5, 0x83, 0xf5, 0x6b, 0xfa, 0xb6, 0xfe, + 0xf6, 0xff, 0xc9, 0x02, 0x71, 0x04, 0xe1, 0x05, 0x97, 0x07, 0x0b, 0x08, 0xd3, 0x08, 0x43, 0x0a, + 0xec, 0x0a, 0x06, 0x0e, 0x88, 0x10, 0x8c, 0x11, 0x97, 0x10, 0x28, 0x11, 0x99, 0x12, 0x40, 0x15, + 0x23, 0x14, 0x27, 0x11, 0x3a, 0x0f, 0xff, 0x0b, 0xd2, 0x08, 0xca, 0x06, 0xa5, 0x04, 0xe5, 0x01, + 0x39, 0xff, 0x7f, 0xfc, 0x68, 0xfa, 0x76, 0xfd, 0x42, 0xff, 0x03, 0xfe, 0x8e, 0xfe, 0x29, 0xfe, + 0x55, 0xfd, 0xb1, 0xfc, 0x07, 0xfd, 0xcd, 0xfe, 0xea, 0xfe, 0x54, 0xfc, 0x72, 0xfb, 0xf5, 0xfc, + 0x96, 0xfc, 0xed, 0xfa, 0xf8, 0xfc, 0x4a, 0xfe, 0x3e, 0xfe, 0x78, 0xfe, 0x9d, 0x00, 0xe6, 0x02, + 0x90, 0x01, 0x55, 0x01, 0xc8, 0x00, 0x46, 0xff, 0xc5, 0xfc, 0x7a, 0xf7, 0x8b, 0xf2, 0x63, 0xef, + 0x59, 0xee, 0xe9, 0xee, 0x6e, 0xef, 0xda, 0xee, 0x0f, 0xef, 0xec, 0xef, 0x81, 0xed, 0xbd, 0xf0, + 0xb0, 0xf4, 0x91, 0xf5, 0x24, 0xf6, 0xaa, 0xf8, 0xdd, 0xfc, 0xe3, 0xfc, 0x01, 0x02, 0x09, 0x09, + 0x66, 0x0a, 0x4c, 0x0b, 0x46, 0x0c, 0x05, 0x0c, 0x83, 0x0c, 0xc3, 0x0c, 0x14, 0x0e, 0xbf, 0x0c, + 0x41, 0x0b, 0x77, 0x0b, 0xa4, 0x0b, 0xe0, 0x0d, 0xd7, 0x0e, 0x0c, 0x0e, 0xfc, 0x0c, 0x74, 0x0c, + 0xd3, 0x09, 0xe2, 0x05, 0x82, 0x02, 0x3d, 0xff, 0x4e, 0xfe, 0x2c, 0xfc, 0xee, 0xf7, 0xb1, 0xf7, + 0x71, 0xf7, 0xdd, 0xf4, 0xa9, 0xf4, 0x20, 0xf8, 0xae, 0xfb, 0x8d, 0xfe, 0x6f, 0x00, 0x6a, 0xff, + 0xe5, 0x00, 0xee, 0x01, 0xdb, 0xff, 0xa2, 0x03, 0xe3, 0x06, 0x26, 0x07, 0x69, 0x06, 0xb4, 0x08, + 0xfc, 0x0b, 0xf1, 0x0b, 0x29, 0x0d, 0xeb, 0x0a, 0x97, 0x08, 0x24, 0x0a, 0x9f, 0x08, 0x90, 0x09, + 0xdf, 0x09, 0x74, 0x08, 0xeb, 0x07, 0x7c, 0x08, 0xce, 0x06, 0xdc, 0x01, 0xd8, 0xff, 0x4d, 0xfb, + 0x97, 0xf6, 0x1b, 0xf7, 0x5e, 0xf5, 0x38, 0xf3, 0x7f, 0xf5, 0x0e, 0xf3, 0xf9, 0xed, 0xa9, 0xee, + 0x6e, 0xee, 0x01, 0xec, 0xa1, 0xed, 0x25, 0xf0, 0x31, 0xf2, 0x41, 0xf5, 0x4e, 0xf7, 0xd8, 0xfa, + 0x04, 0x00, 0xde, 0x00, 0x75, 0xff, 0x07, 0xfe, 0x2f, 0xfe, 0xbe, 0xfd, 0x2a, 0xfe, 0x71, 0xfe, + 0x54, 0xff, 0xf2, 0x01, 0x2e, 0x04, 0xc3, 0x04, 0x45, 0x04, 0x5e, 0x07, 0x9f, 0x07, 0x4a, 0x09, + 0x56, 0x0d, 0x9b, 0x0c, 0x10, 0x0a, 0x1c, 0x05, 0x6b, 0x01, 0xf4, 0x00, 0x7b, 0xff, 0x30, 0xfd, + 0x8b, 0xfa, 0xeb, 0xf6, 0x24, 0xf6, 0x7c, 0xf6, 0x23, 0xf9, 0x80, 0xfc, 0x71, 0xfe, 0x77, 0x00, + 0x58, 0x00, 0x30, 0xfd, 0x8c, 0xfd, 0x72, 0x00, 0x26, 0x06, 0x9d, 0x09, 0xe7, 0x0a, 0x0b, 0x0a, + 0xb9, 0x07, 0xce, 0x07, 0x6c, 0x07, 0x6e, 0x07, 0x0a, 0x0a, 0x7f, 0x0c, 0x03, 0x0b, 0x43, 0x0c, + 0x96, 0x0b, 0x3b, 0x0b, 0xaa, 0x0d, 0xcc, 0x0b, 0x50, 0x0a, 0xa8, 0x09, 0x47, 0x04, 0x4a, 0xff, + 0x0f, 0xff, 0x80, 0xfc, 0xba, 0xfa, 0x02, 0xfb, 0xa4, 0xf7, 0xdc, 0xf3, 0x26, 0xf2, 0x0c, 0xef, + 0xf1, 0xf0, 0x0f, 0xf5, 0xf8, 0xf4, 0xbe, 0xf7, 0xa1, 0xf7, 0x77, 0xf7, 0x3b, 0xfa, 0x12, 0x00, + 0x5f, 0x05, 0x00, 0x08, 0x76, 0x09, 0xf9, 0x09, 0x54, 0x06, 0xfd, 0x05, 0xc3, 0x06, 0xd7, 0x07, + 0x83, 0x07, 0xd7, 0x06, 0x59, 0x07, 0xf3, 0x06, 0x69, 0x08, 0xe1, 0x0a, 0x38, 0x0b, 0x52, 0x0b, + 0xc7, 0x0b, 0x9d, 0x07, 0x4b, 0x04, 0x43, 0x01, 0xf8, 0xff, 0x82, 0x00, 0x26, 0x00, 0xa2, 0xfd, + 0x27, 0xfc, 0x8b, 0xf7, 0xd0, 0xf3, 0x80, 0xf2, 0x6f, 0xf1, 0x94, 0xf4, 0x2f, 0xf8, 0xda, 0xfa, + 0x87, 0xfb, 0x4d, 0xfa, 0x9b, 0xf8, 0x3c, 0xf9, 0x91, 0xfc, 0x5a, 0xfd, 0x94, 0xfe, 0x49, 0xfd, + 0xbb, 0xfd, 0x8d, 0x02, 0xdb, 0x03, 0x43, 0x03, 0x59, 0x02, 0x9f, 0x00, 0xb0, 0xff, 0xc8, 0xfd, + 0xc0, 0xfb, 0xbe, 0xfb, 0xdd, 0xfb, 0xbd, 0xfc, 0x49, 0xfd, 0x69, 0xf9, 0xf3, 0xf4, 0x01, 0xf2, + 0x89, 0xf0, 0x60, 0xee, 0x86, 0xee, 0x95, 0xef, 0xb9, 0xef, 0xc3, 0xef, 0x45, 0xec, 0x70, 0xeb, + 0xcc, 0xea, 0xc8, 0xe8, 0x44, 0xe8, 0xc7, 0xeb, 0x42, 0xec, 0xa9, 0xed, 0x12, 0xf3, 0x81, 0xf5, + 0x4d, 0xfb, 0x0e, 0x02, 0xa1, 0x03, 0x49, 0x03, 0x21, 0x04, 0x30, 0x05, 0x21, 0x06, 0x8f, 0x0a, + 0x85, 0x0d, 0x6e, 0x10, 0xeb, 0x11, 0x66, 0x12, 0xdb, 0x11, 0x9d, 0x12, 0xee, 0x14, 0x09, 0x17, + 0xd6, 0x18, 0x97, 0x1c, 0x08, 0x1a, 0x8c, 0x16, 0x11, 0x13, 0x6c, 0x0d, 0x79, 0x0c, 0xcb, 0x0b, + 0x4d, 0x06, 0xef, 0x00, 0xcc, 0xfe, 0xbf, 0xfd, 0x63, 0xfc, 0x31, 0xfe, 0xcd, 0xfd, 0xc1, 0xff, + 0x7f, 0xff, 0xbf, 0xfa, 0x50, 0xf8, 0xa2, 0xf9, 0x1b, 0xfc, 0x68, 0xff, 0xdf, 0x02, 0x09, 0x02, + 0xee, 0x00, 0x3b, 0x02, 0x47, 0x01, 0x2b, 0x01, 0x52, 0x04, 0xde, 0x04, 0x39, 0x06, 0xf4, 0x03, + 0x98, 0x03, 0x4d, 0x05, 0x04, 0x06, 0x9c, 0x06, 0xc0, 0x06, 0x51, 0x04, 0x88, 0x01, 0xf0, 0xfe, + 0x1c, 0xfd, 0x46, 0xfa, 0x5e, 0xf8, 0x3f, 0xf8, 0xa5, 0xf7, 0x5f, 0xf4, 0x5e, 0xf2, 0xe2, 0xf3, + 0xad, 0xf3, 0x5c, 0xf6, 0x64, 0xfb, 0x2c, 0xff, 0x98, 0xfe, 0xcb, 0xfc, 0x47, 0xfe, 0x9a, 0x00, + 0x68, 0x05, 0x44, 0x0a, 0x2a, 0x0d, 0x88, 0x0f, 0x42, 0x0f, 0xe2, 0x0b, 0xd0, 0x0b, 0x4b, 0x0b, + 0xa8, 0x0b, 0xce, 0x0c, 0xf3, 0x09, 0x9d, 0x08, 0x02, 0x0a, 0xbd, 0x0c, 0x5a, 0x0d, 0x09, 0x0f, + 0x49, 0x0f, 0xcb, 0x0a, 0x66, 0x05, 0x5f, 0x01, 0x92, 0xfe, 0x6f, 0xfc, 0x3c, 0xfc, 0x09, 0xfb, + 0x4c, 0xf8, 0x9a, 0xf6, 0xc0, 0xf3, 0x7f, 0xf1, 0x19, 0xf1, 0xe4, 0xf0, 0xeb, 0xf2, 0xaf, 0xf7, + 0xbe, 0xf8, 0x0a, 0xf7, 0x00, 0xf7, 0xec, 0xf5, 0x28, 0xf7, 0xf6, 0xf9, 0x1b, 0xfa, 0x0d, 0xfa, + 0x95, 0xfa, 0x33, 0xfc, 0x79, 0xff, 0x7c, 0x02, 0x3d, 0x03, 0x10, 0x03, 0xca, 0x01, 0x66, 0x01, + 0x34, 0xff, 0x7f, 0xff, 0x32, 0x02, 0x60, 0x05, 0xd8, 0x07, 0x0a, 0x07, 0x41, 0x02, 0xde, 0xfd, + 0x4b, 0xfc, 0x23, 0xfa, 0x59, 0xf6, 0xa3, 0xf5, 0x6f, 0xf5, 0xca, 0xf2, 0x1f, 0xf2, 0x64, 0xf1, + 0x11, 0xef, 0xe8, 0xeb, 0x9a, 0xea, 0x47, 0xea, 0x0c, 0xeb, 0x9a, 0xec, 0x52, 0xef, 0x59, 0xf2, + 0xe9, 0xf7, 0x3c, 0xfd, 0xb6, 0x00, 0x04, 0x01, 0xf3, 0xfe, 0x16, 0xfe, 0xd7, 0xfe, 0x21, 0x00, + 0x59, 0x03, 0xaf, 0x05, 0x4f, 0x07, 0xfb, 0x08, 0x13, 0x0b, 0x8f, 0x0c, 0x4f, 0x0d, 0x2e, 0x10, + 0x05, 0x12, 0x40, 0x11, 0xb3, 0x13, 0xed, 0x13, 0xd1, 0x11, 0x95, 0x0d, 0xe1, 0x0a, 0xd8, 0x09, + 0x7a, 0x05, 0x63, 0x02, 0xf5, 0xfe, 0xbd, 0xfd, 0xe8, 0xfc, 0xec, 0xfb, 0xb8, 0xfb, 0xe7, 0xfc, + 0xf0, 0xfe, 0x87, 0xfe, 0xc6, 0xfc, 0xc0, 0xfd, 0xff, 0x00, 0x5a, 0x03, 0x42, 0x07, 0xd2, 0x08, + 0xff, 0x07, 0x45, 0x06, 0x27, 0x05, 0x17, 0x04, 0xb3, 0x05, 0xed, 0x06, 0x6f, 0x06, 0xcf, 0x06, + 0x4f, 0x04, 0x20, 0x05, 0xb1, 0x05, 0x9d, 0x07, 0xcf, 0x07, 0xfe, 0x04, 0x49, 0x03, 0x7f, 0x01, + 0xd4, 0xff, 0xfa, 0xfd, 0xf1, 0xfa, 0x8a, 0xf8, 0x80, 0xf4, 0x9c, 0xf0, 0x1a, 0xec, 0xd4, 0xea, + 0x6c, 0xea, 0x97, 0xe8, 0x5c, 0xeb, 0x23, 0xef, 0xce, 0xf0, 0xb9, 0xf1, 0x10, 0xf1, 0x51, 0xf4, + 0xb3, 0xf9, 0xa2, 0xfc, 0x8f, 0x00, 0x16, 0x03, 0xe5, 0x05, 0xe4, 0x06, 0xd0, 0x04, 0x4d, 0x04, + 0xfa, 0x04, 0x98, 0x05, 0xd1, 0x04, 0x8e, 0x05, 0x9f, 0x07, 0xba, 0x08, 0x56, 0x0a, 0xf9, 0x0d, + 0x90, 0x0f, 0xe3, 0x0d, 0x7a, 0x0c, 0xa6, 0x09, 0x2a, 0x09, 0x8a, 0x09, 0xc8, 0x09, 0xaa, 0x09, + 0x28, 0x08, 0x5e, 0x05, 0x85, 0x02, 0x33, 0xff, 0x23, 0xfd, 0xb8, 0xf9, 0x28, 0xf9, 0xeb, 0xfa, + 0x89, 0xfc, 0x49, 0xfd, 0x61, 0xfc, 0x4a, 0xfc, 0x2b, 0xfe, 0xbf, 0xfe, 0x2a, 0xfe, 0xdd, 0xfd, + 0x90, 0xff, 0x9d, 0x00, 0x3b, 0x02, 0x32, 0x06, 0x11, 0x08, 0x4e, 0x07, 0x08, 0x04, 0x9e, 0x01, + 0x44, 0x00, 0x6c, 0xff, 0x13, 0xff, 0xc4, 0x00, 0xd9, 0x03, 0x27, 0x05, 0x41, 0x04, 0xf5, 0x00, + 0x89, 0xff, 0x88, 0xfe, 0x2a, 0xfc, 0x5f, 0xf8, 0x52, 0xf6, 0x26, 0xf4, 0x80, 0xf2, 0xdd, 0xf2, + 0x69, 0xf1, 0xc3, 0xee, 0xfa, 0xeb, 0x70, 0xe9, 0x5d, 0xe9, 0x75, 0xeb, 0x8b, 0xec, 0x23, 0xef, + 0xb3, 0xf3, 0xf6, 0xf7, 0x07, 0xfd, 0x27, 0x00, 0xd9, 0x01, 0xee, 0x03, 0x2f, 0x05, 0xed, 0x06, + 0x12, 0x0b, 0xeb, 0x0e, 0x5b, 0x0f, 0x8d, 0x10, 0x05, 0x11, 0xa6, 0x12, 0xfc, 0x12, 0xd5, 0x13, + 0x9f, 0x15, 0xee, 0x14, 0x04, 0x15, 0x80, 0x15, 0x75, 0x15, 0x25, 0x15, 0xfa, 0x11, 0x9d, 0x0d, + 0x3a, 0x0a, 0xd8, 0x05, 0x71, 0x02, 0x82, 0xff, 0x95, 0xfd, 0xc2, 0xfb, 0xcd, 0xf8, 0x5f, 0xf6, + 0x96, 0xf3, 0xdd, 0xf2, 0x0a, 0xf3, 0x31, 0xf2, 0xe3, 0xf2, 0x7a, 0xf3, 0x10, 0xf5, 0x14, 0xf8, + 0xb2, 0xfa, 0xd4, 0xfc, 0xa1, 0xfd, 0xe8, 0xfd, 0x02, 0xfd, 0x86, 0xfe, 0xc1, 0xff, 0xf6, 0xfe, + 0x62, 0xff, 0x7d, 0xfe, 0xf9, 0xfe, 0x9c, 0xff, 0x39, 0x01, 0x9a, 0x00, 0xfc, 0xff, 0x52, 0xff, + 0xe5, 0xff, 0xb6, 0xff, 0x0b, 0xff, 0xdb, 0xfc, 0x6a, 0xf9, 0x7d, 0xf5, 0x8d, 0xf4, 0x29, 0xf3, + 0x6b, 0xf2, 0x9a, 0xf3, 0xdb, 0xf3, 0xae, 0xf6, 0x96, 0xf7, 0xc3, 0xf8, 0x49, 0xf9, 0x23, 0xfa, + 0xbf, 0xfd, 0x95, 0x00, 0x58, 0x03, 0x28, 0x06, 0x72, 0x08, 0xf2, 0x0b, 0x1c, 0x0d, 0x1f, 0x0c, + 0xa3, 0x0b, 0xe8, 0x09, 0x48, 0x09, 0x9a, 0x09, 0x24, 0x0a, 0xf0, 0x0b, 0x36, 0x0d, 0xb1, 0x0e, + 0x3d, 0x0f, 0x34, 0x0d, 0x8b, 0x09, 0xbf, 0x05, 0x9b, 0x03, 0x95, 0x02, 0xc8, 0x01, 0x21, 0x01, + 0xa3, 0xff, 0x33, 0xfd, 0x60, 0xfc, 0xbb, 0xfc, 0x4b, 0xfa, 0x90, 0xf7, 0x71, 0xf4, 0x08, 0xf4, + 0x36, 0xf4, 0x03, 0xf5, 0xa8, 0xf6, 0x53, 0xf7, 0x19, 0xf8, 0xcf, 0xf7, 0xbe, 0xf7, 0x86, 0xf6, + 0x35, 0xf7, 0x58, 0xfa, 0x6f, 0xfc, 0x23, 0x00, 0xa2, 0x03, 0x83, 0x04, 0xea, 0x04, 0x73, 0x03, + 0xff, 0x03, 0x9d, 0x05, 0x4c, 0x05, 0xe9, 0x07, 0xd7, 0x0a, 0x15, 0x0c, 0x85, 0x0b, 0xc9, 0x09, + 0x98, 0x09, 0xb4, 0x07, 0x4f, 0x05, 0x97, 0x04, 0xd5, 0xff, 0x78, 0xfb, 0xdf, 0xf9, 0x86, 0xf8, + 0x12, 0xf8, 0xb8, 0xf7, 0x1b, 0xf4, 0x04, 0xf1, 0xe4, 0xec, 0x35, 0xeb, 0x45, 0xee, 0xfa, 0xef, + 0x67, 0xf3, 0x16, 0xf5, 0x0b, 0xf7, 0xc8, 0xf7, 0x34, 0xf9, 0x3c, 0xfc, 0xcf, 0xfc, 0x29, 0xfd, + 0x0f, 0xff, 0xc4, 0x00, 0x62, 0x02, 0x0e, 0x04, 0x68, 0x07, 0xca, 0x09, 0x66, 0x0c, 0x7b, 0x0d, + 0x22, 0x0e, 0x65, 0x0f, 0x0c, 0x0f, 0xde, 0x0e, 0x70, 0x10, 0x5a, 0x10, 0xad, 0x0f, 0x13, 0x0d, + 0x40, 0x09, 0x91, 0x06, 0xdd, 0x03, 0xcb, 0x01, 0x11, 0x00, 0x22, 0xfe, 0x40, 0xfb, 0x6a, 0xfa, + 0xaa, 0xf7, 0xdd, 0xf5, 0x13, 0xf7, 0x08, 0xfa, 0xea, 0xfc, 0x37, 0xff, 0xa1, 0x00, 0xd8, 0xff, + 0xa0, 0x00, 0x7b, 0x04, 0xe9, 0x05, 0xe3, 0x05, 0x72, 0x05, 0x36, 0x04, 0x40, 0x04, 0x0c, 0x04, + 0xa6, 0x03, 0xa8, 0x04, 0x99, 0x04, 0xfd, 0x05, 0xce, 0x07, 0x51, 0x07, 0xdb, 0x05, 0x07, 0x05, + 0x69, 0x06, 0x5f, 0x07, 0x77, 0x07, 0x09, 0x06, 0x65, 0x00, 0xe5, 0xfa, 0x4c, 0xf7, 0x3b, 0xf5, + 0xe0, 0xf1, 0x25, 0xf0, 0x04, 0xf1, 0x47, 0xf1, 0x3e, 0xf1, 0x1c, 0xf1, 0xac, 0xf3, 0xba, 0xf5, + 0xeb, 0xf6, 0x79, 0xfa, 0x64, 0xfd, 0xb0, 0xfd, 0x5d, 0x00, 0x56, 0x03, 0xf9, 0x04, 0x75, 0x07, + 0x8a, 0x07, 0x25, 0x05, 0x59, 0x03, 0x08, 0x04, 0x05, 0x05, 0x19, 0x07, 0x11, 0x09, 0x84, 0x0a, + 0x88, 0x0b, 0x3c, 0x0d, 0x37, 0x0c, 0x96, 0x09, 0xc4, 0x09, 0x38, 0x09, 0xb3, 0x0a, 0x17, 0x0c, + 0x70, 0x09, 0x35, 0x06, 0x48, 0x04, 0xcf, 0x03, 0xfe, 0x02, 0x33, 0xff, 0x39, 0xfb, 0x25, 0xf8, + 0xd8, 0xf4, 0xd4, 0xf2, 0x37, 0xf3, 0x5b, 0xf4, 0x12, 0xf6, 0x9d, 0xf6, 0x09, 0xf6, 0x25, 0xf4, + 0x7c, 0xf2, 0x50, 0xf3, 0x80, 0xf7, 0x24, 0xfb, 0x73, 0xfd, 0x81, 0xfd, 0x2a, 0xfc, 0x42, 0xfb, + 0x96, 0xfa, 0x24, 0xfa, 0xdd, 0xf9, 0xb0, 0xfa, 0xf1, 0xfc, 0x0b, 0xfe, 0x5a, 0xfe, 0xaa, 0x00, + 0x9b, 0x02, 0x2a, 0x03, 0xbf, 0x02, 0x43, 0x02, 0x29, 0x00, 0x40, 0xfc, 0x89, 0xf8, 0x8c, 0xf6, + 0xe8, 0xf4, 0x30, 0xf4, 0xa3, 0xf3, 0x75, 0xf1, 0x77, 0xed, 0x0d, 0xeb, 0xd8, 0xea, 0x8e, 0xed, + 0x62, 0xf0, 0x7c, 0xf3, 0xf7, 0xf5, 0xee, 0xf6, 0x6a, 0xfa, 0xbe, 0xfe, 0xc4, 0x01, 0x58, 0x06, + 0xc3, 0x09, 0x5e, 0x0a, 0xea, 0x0a, 0x2e, 0x0c, 0x44, 0x0e, 0x24, 0x12, 0xfc, 0x13, 0x37, 0x16, + 0x18, 0x17, 0x48, 0x15, 0x67, 0x15, 0x01, 0x15, 0x56, 0x15, 0x6c, 0x16, 0x8a, 0x16, 0x35, 0x16, + 0xc7, 0x11, 0x66, 0x0e, 0xcf, 0x0b, 0x25, 0x0a, 0xaa, 0x08, 0x54, 0x05, 0x1d, 0x01, 0xbc, 0xfc, + 0x06, 0xf9, 0xc7, 0xf4, 0x9a, 0xf0, 0xdd, 0xee, 0x26, 0xf2, 0x52, 0xf4, 0x1c, 0xf5, 0x79, 0xf4, + 0x04, 0xf5, 0x7a, 0xf7, 0x14, 0xfc, 0x79, 0xfe, 0x53, 0xff, 0xc7, 0xff, 0x3e, 0xfe, 0x43, 0xfe, + 0x6e, 0xfe, 0xa5, 0xfe, 0x37, 0xfd, 0x70, 0xfe, 0xa3, 0x00, 0x92, 0x00, 0x42, 0x00, 0x94, 0xff, + 0x7f, 0x00, 0x34, 0x02, 0xb5, 0x03, 0xea, 0x04, 0xcf, 0x01, 0x4a, 0xfe, 0xd8, 0xfb, 0x50, 0xf9, + 0x78, 0xf9, 0x02, 0xf8, 0x1b, 0xf8, 0x5f, 0xf8, 0x7a, 0xf7, 0xae, 0xf7, 0xe6, 0xf7, 0x5d, 0xf8, + 0xe0, 0xfa, 0x76, 0xfc, 0x03, 0xfe, 0x90, 0xff, 0x64, 0x00, 0xb2, 0x02, 0x93, 0x05, 0x3b, 0x0a, + 0xdb, 0x0c, 0xc8, 0x0b, 0xf7, 0x08, 0x2a, 0x06, 0x5f, 0x07, 0x04, 0x0b, 0x25, 0x0c, 0x2f, 0x0d, + 0xf5, 0x0d, 0x10, 0x0d, 0xdf, 0x0c, 0xd4, 0x0a, 0x1a, 0x07, 0x61, 0x06, 0x38, 0x06, 0x61, 0x06, + 0xd9, 0x04, 0x61, 0x02, 0x5b, 0x01, 0x56, 0x01, 0x4f, 0x02, 0xc8, 0x01, 0xcc, 0xff, 0xb8, 0xfc, + 0x76, 0xf8, 0x2f, 0xf6, 0x3f, 0xf3, 0x9e, 0xf2, 0x07, 0xf5, 0xe9, 0xf6, 0xce, 0xf7, 0x72, 0xf6, + 0x8b, 0xf5, 0x59, 0xf5, 0xf6, 0xf5, 0x94, 0xfa, 0x75, 0xfe, 0x6b, 0x00, 0x04, 0x00, 0xd8, 0xff, + 0x32, 0x01, 0xce, 0x02, 0xef, 0x03, 0x5d, 0x07, 0x87, 0x09, 0x7d, 0x08, 0x42, 0x09, 0x3f, 0x09, + 0x03, 0x0a, 0x67, 0x0a, 0xec, 0x0a, 0x55, 0x09, 0xd2, 0x06, 0x09, 0x05, 0x6e, 0x01, 0x7f, 0xfd, + 0x6e, 0xfb, 0xfb, 0xf9, 0xa7, 0xf9, 0x92, 0xf7, 0xb9, 0xf2, 0x96, 0xf0, 0x0d, 0xef, 0x98, 0xed, + 0x6f, 0xef, 0x81, 0xf0, 0xc3, 0xf0, 0x1c, 0xf1, 0xed, 0xf1, 0xa5, 0xf3, 0xf0, 0xf5, 0x70, 0xf9, + 0xd8, 0xfc, 0x92, 0xfe, 0x14, 0xfe, 0x4b, 0xfe, 0xc8, 0x00, 0xd8, 0x03, 0xc2, 0x06, 0x54, 0x0a, + 0xee, 0x0d, 0xac, 0x0e, 0x78, 0x0d, 0xb9, 0x0c, 0x76, 0x0d, 0x3b, 0x0e, 0x3a, 0x0f, 0x26, 0x0f, + 0x96, 0x0d, 0x0b, 0x0b, 0x4c, 0x09, 0x8d, 0x08, 0xa9, 0x07, 0xa3, 0x05, 0x8b, 0x03, 0xe7, 0xff, + 0xf8, 0xfb, 0x1b, 0xfa, 0x5b, 0xf7, 0xd2, 0xf4, 0xb0, 0xf6, 0xe9, 0xfa, 0x12, 0xfd, 0x77, 0xfc, + 0x6f, 0xfb, 0x1c, 0xfd, 0x7e, 0xfe, 0x1f, 0x01, 0x3f, 0x02, 0x3e, 0x02, 0xf0, 0x00, 0x48, 0xfe, + 0xbf, 0xfe, 0xe0, 0xfd, 0x79, 0xfd, 0xe9, 0xfe, 0x3b, 0xff, 0xd8, 0xff, 0x96, 0x00, 0x76, 0x00, + 0x54, 0x01, 0xc4, 0x02, 0xd0, 0x03, 0xcc, 0x03, 0x6c, 0x02, 0x8a, 0xff, 0x7a, 0xfc, 0xe8, 0xf8, + 0x40, 0xf5, 0x52, 0xf4, 0x7d, 0xf1, 0x66, 0xef, 0x06, 0xef, 0xef, 0xf0, 0x4a, 0xf1, 0x82, 0xf0, + 0xdd, 0xf2, 0x38, 0xf5, 0x87, 0xf7, 0x78, 0xf9, 0xee, 0xfa, 0x99, 0xfb, 0x04, 0xfd, 0x38, 0x00, + 0x81, 0x03, 0xf6, 0x04, 0x86, 0x04, 0x8f, 0x02, 0x39, 0x02, 0xdd, 0x04, 0xdd, 0x07, 0xc1, 0x09, + 0xc0, 0x0a, 0xab, 0x0b, 0x29, 0x0d, 0x3a, 0x0d, 0xe2, 0x0c, 0x15, 0x0d, 0xc4, 0x0e, 0x65, 0x0f, + 0x7b, 0x0e, 0x45, 0x0d, 0x3e, 0x0c, 0x7e, 0x0b, 0x70, 0x0a, 0xd6, 0x09, 0xb7, 0x08, 0x07, 0x05, + 0xca, 0xff, 0xe0, 0xfb, 0x3e, 0xf8, 0xee, 0xf4, 0xd7, 0xf4, 0x83, 0xf5, 0xb3, 0xf6, 0xa1, 0xf6, + 0x41, 0xf6, 0xf4, 0xf7, 0xd3, 0xf7, 0xde, 0xf7, 0xf9, 0xfa, 0xa0, 0xfc, 0x3f, 0xfc, 0x61, 0xfb, + 0xaa, 0xfa, 0x4d, 0xfa, 0x95, 0xfb, 0xb1, 0xfd, 0x0f, 0xff, 0xda, 0xff, 0x54, 0x00, 0xc9, 0x00, + 0x29, 0x02, 0x17, 0x04, 0x60, 0x06, 0xf9, 0x07, 0x9b, 0x06, 0x79, 0x05, 0x77, 0x04, 0xee, 0x00, + 0xfd, 0xfc, 0x87, 0xfb, 0x42, 0xfa, 0x5b, 0xf8, 0x6b, 0xf5, 0xf1, 0xf2, 0xd4, 0xf1, 0xe6, 0xef, + 0x77, 0xef, 0x91, 0xef, 0xcc, 0xef, 0x66, 0xf1, 0x57, 0xf3, 0xe4, 0xf5, 0x6f, 0xfa, 0x06, 0x00, + 0xff, 0x03, 0x48, 0x07, 0x27, 0x09, 0x0e, 0x09, 0x47, 0x0a, 0x9a, 0x0b, 0x90, 0x0d, 0xd7, 0x10, + 0xa9, 0x12, 0xcc, 0x14, 0xa4, 0x14, 0xd0, 0x11, 0xa0, 0x11, 0xf9, 0x12, 0xc1, 0x13, 0xf4, 0x12, + 0xc2, 0x10, 0x82, 0x0f, 0x13, 0x10, 0xfe, 0x0f, 0x37, 0x0f, 0x93, 0x0e, 0xd8, 0x0a, 0x2b, 0x06, + 0x77, 0x01, 0x9d, 0xfc, 0x73, 0xf7, 0x00, 0xf4, 0x2a, 0xf1, 0x3f, 0xf0, 0x89, 0xf2, 0x3d, 0xf3, + 0x8c, 0xf3, 0x04, 0xf5, 0x6b, 0xf6, 0xed, 0xf8, 0xe9, 0xfc, 0x62, 0xfd, 0x41, 0xfe, 0x4a, 0xfe, + 0xf5, 0xfc, 0x58, 0xfc, 0x66, 0xfb, 0xc9, 0xfb, 0x81, 0xfc, 0xdf, 0xfc, 0xb3, 0xfe, 0x50, 0xff, + 0x8d, 0xff, 0xf0, 0x00, 0x53, 0x02, 0x82, 0x02, 0x0e, 0x02, 0x70, 0x02, 0x29, 0x01, 0x8b, 0x00, + 0x46, 0x00, 0xf5, 0xff, 0x66, 0xff, 0x51, 0xfb, 0xce, 0xf8, 0xd0, 0xf9, 0xf9, 0xf9, 0xfd, 0xf8, + 0x00, 0xf8, 0xfc, 0xf6, 0x33, 0xf8, 0xb9, 0xf9, 0xca, 0xfa, 0x83, 0xfc, 0xc0, 0xfd, 0x0b, 0x00, + 0x8a, 0x02, 0xc2, 0x03, 0x74, 0x04, 0x13, 0x05, 0x04, 0x05, 0xe5, 0x04, 0x6b, 0x06, 0x12, 0x08, + 0xe2, 0x07, 0xdb, 0x08, 0x6c, 0x09, 0xfa, 0x07, 0x4d, 0x08, 0x2f, 0x07, 0x83, 0x05, 0x39, 0x05, + 0x99, 0x02, 0x07, 0x02, 0x32, 0x01, 0x72, 0x00, 0x85, 0x01, 0xe1, 0x01, 0xe8, 0x01, 0x4b, 0x01, + 0x59, 0xfe, 0x31, 0xfa, 0xbf, 0xf6, 0x91, 0xf3, 0xed, 0xf0, 0x7a, 0xef, 0x42, 0xef, 0x3f, 0xf0, + 0xf7, 0xf1, 0x25, 0xf3, 0xa5, 0xf4, 0x28, 0xf5, 0xe3, 0xf4, 0x2d, 0xf6, 0x5f, 0xf9, 0x4d, 0xfb, + 0x0f, 0xfc, 0xba, 0xfd, 0x32, 0x00, 0xa9, 0x03, 0x38, 0x05, 0x8b, 0x07, 0xf3, 0x08, 0x06, 0x09, + 0xb0, 0x09, 0xeb, 0x0a, 0x0a, 0x0b, 0x06, 0x0b, 0x33, 0x0a, 0x60, 0x08, 0x97, 0x07, 0x04, 0x06, + 0x42, 0x04, 0xa5, 0x01, 0x3b, 0xfe, 0xdf, 0xfa, 0x4d, 0xf9, 0x95, 0xf8, 0xae, 0xf6, 0xa0, 0xf6, + 0x83, 0xf5, 0xdc, 0xf1, 0xe9, 0xf0, 0xc6, 0xef, 0x8e, 0xef, 0xc0, 0xf0, 0xb9, 0xf2, 0x7b, 0xf6, + 0xc1, 0xf9, 0xfc, 0xfa, 0x40, 0xfd, 0x6b, 0xff, 0x8c, 0x00, 0xe4, 0x02, 0xa0, 0x04, 0xf6, 0x07, + 0x70, 0x0c, 0x6a, 0x0f, 0x11, 0x12, 0x63, 0x11, 0x36, 0x10, 0x70, 0x10, 0x22, 0x11, 0x3b, 0x11, + 0x00, 0x0f, 0x31, 0x0e, 0xe9, 0x0d, 0x42, 0x0f, 0x53, 0x11, 0xb0, 0x10, 0xfb, 0x0e, 0x6a, 0x0b, + 0x97, 0x07, 0x14, 0x05, 0x50, 0x02, 0xbf, 0xff, 0xd6, 0xfe, 0x0b, 0xfd, 0xee, 0xfb, 0xde, 0xfc, + 0x3b, 0xfe, 0x13, 0xff, 0x39, 0x00, 0xdc, 0x01, 0xe8, 0x02, 0x8f, 0x02, 0xed, 0x00, 0x49, 0x01, + 0xdd, 0x00, 0xbd, 0x00, 0x94, 0xff, 0x0d, 0xfd, 0x6f, 0xfb, 0x25, 0xfc, 0x6c, 0xfd, 0x83, 0xff, + 0x47, 0x02, 0xcc, 0x02, 0xe4, 0x02, 0xd4, 0x02, 0x5f, 0x01, 0xcf, 0x00, 0x9d, 0xff, 0x81, 0xfd, + 0x6c, 0xfe, 0x33, 0xfd, 0xae, 0xfa, 0x87, 0xf7, 0x51, 0xf3, 0x68, 0xf1, 0x03, 0xf2, 0xc3, 0xf3, + 0xa8, 0xf4, 0xa9, 0xf3, 0x17, 0xf3, 0xb1, 0xf4, 0xae, 0xf5, 0xd3, 0xf7, 0xe8, 0xf9, 0xec, 0xfb, + 0x46, 0xfd, 0xf7, 0xfd, 0xfe, 0xfe, 0x43, 0xff, 0x53, 0x01, 0x0d, 0x03, 0xab, 0x02, 0xbb, 0x03, + 0xe4, 0x04, 0xb5, 0x05, 0x81, 0x07, 0xd4, 0x08, 0xb2, 0x0a, 0x47, 0x0d, 0x78, 0x0d, 0xb6, 0x0c, + 0x3e, 0x0c, 0xf0, 0x0a, 0xa7, 0x0a, 0x92, 0x09, 0x8c, 0x09, 0x2f, 0x0a, 0x24, 0x09, 0xe5, 0x06, + 0x8e, 0x04, 0x11, 0x01, 0xf3, 0xfc, 0x51, 0xf9, 0xd6, 0xf5, 0xba, 0xf1, 0x44, 0xee, 0x40, 0xec, + 0x6d, 0xee, 0xda, 0xf1, 0x80, 0xf3, 0x83, 0xf5, 0x7f, 0xf4, 0x41, 0xf2, 0x0f, 0xf2, 0x41, 0xf3, + 0x07, 0xf4, 0xb4, 0xf4, 0x93, 0xf4, 0xa4, 0xf5, 0x4c, 0xf7, 0x3c, 0xf8, 0xda, 0xfa, 0x53, 0xfc, + 0x2b, 0xfe, 0xb0, 0x00, 0x20, 0x03, 0xcd, 0x03, 0xe2, 0x03, 0x72, 0x04, 0xad, 0x03, 0xba, 0x02, + 0xa7, 0x02, 0x60, 0x01, 0x77, 0xfe, 0x61, 0xfb, 0x87, 0xf8, 0x62, 0xf8, 0xe5, 0xf6, 0x73, 0xf5, + 0x4b, 0xf5, 0x68, 0xf3, 0xde, 0xf0, 0xea, 0xee, 0x50, 0xed, 0x45, 0xf0, 0x26, 0xf5, 0x55, 0xf9, + 0x2c, 0xfe, 0x17, 0x01, 0x75, 0x02, 0x0e, 0x05, 0x5e, 0x08, 0x75, 0x0a, 0x77, 0x0b, 0xd1, 0x0b, + 0xb8, 0x0d, 0xf6, 0x0f, 0xb7, 0x11, 0x12, 0x14, 0x67, 0x15, 0x64, 0x14, 0x73, 0x13, 0x99, 0x13, + 0xfa, 0x11, 0x11, 0x11, 0xc0, 0x10, 0xed, 0x10, 0x72, 0x13, 0x70, 0x14, 0xf5, 0x12, 0xf0, 0x0f, + 0x37, 0x0b, 0xbc, 0x07, 0x5b, 0x04, 0x69, 0xff, 0x8d, 0xfb, 0x23, 0xf9, 0xaa, 0xf5, 0x2f, 0xf3, + 0x2c, 0xf3, 0x77, 0xf5, 0x11, 0xf7, 0x9b, 0xfa, 0xd9, 0xfc, 0x7b, 0xfd, 0x84, 0xfd, 0x1b, 0xfc, + 0x5d, 0xfd, 0x17, 0xfe, 0x55, 0xfe, 0x2d, 0xfe, 0x5a, 0xfb, 0x27, 0xfa, 0x18, 0xfc, 0x62, 0xfd, + 0xbc, 0x00, 0x1c, 0x03, 0xd7, 0x02, 0x28, 0x03, 0x2f, 0x03, 0x5e, 0x02, 0x42, 0x03, 0xaa, 0x03, + 0x38, 0x05, 0x44, 0x08, 0x59, 0x07, 0x5d, 0x05, 0x8c, 0x02, 0x61, 0xff, 0xa1, 0xfd, 0x9f, 0xfd, + 0x92, 0xfe, 0x7b, 0xfd, 0xa4, 0xfa, 0x43, 0xf7, 0x52, 0xf7, 0x64, 0xf9, 0x2e, 0xfb, 0x0e, 0xfd, + 0xfb, 0xfd, 0xee, 0xfd, 0x1b, 0xff, 0xaf, 0x00, 0x6c, 0x02, 0x50, 0x05, 0xaa, 0x06, 0x70, 0x06, + 0x76, 0x05, 0xcc, 0x04, 0x61, 0x04, 0x66, 0x05, 0x5c, 0x07, 0xf8, 0x08, 0xde, 0x09, 0x43, 0x08, + 0x8e, 0x05, 0x36, 0x04, 0x45, 0x03, 0xfd, 0x02, 0x96, 0x03, 0x8e, 0x04, 0x72, 0x06, 0x42, 0x06, + 0x42, 0x04, 0x0f, 0x04, 0x90, 0x00, 0x4e, 0xfc, 0xbe, 0xf9, 0xb3, 0xf5, 0xd5, 0xf1, 0xb0, 0xee, + 0xec, 0xec, 0xa4, 0xef, 0x5c, 0xf2, 0x52, 0xf4, 0xec, 0xf5, 0x92, 0xf4, 0x9e, 0xf2, 0x01, 0xf3, + 0x4d, 0xf6, 0x3f, 0xf9, 0xce, 0xfb, 0x6c, 0xfd, 0xe2, 0xfe, 0xc6, 0x00, 0x3a, 0x02, 0xdd, 0x03, + 0x44, 0x06, 0xbc, 0x07, 0xbb, 0x08, 0xd7, 0x08, 0x45, 0x06, 0x26, 0x06, 0x73, 0x06, 0x16, 0x05, + 0xac, 0x04, 0x0f, 0x04, 0x5e, 0x01, 0xd9, 0xfd, 0x4b, 0xfb, 0x82, 0xf9, 0x5c, 0xf9, 0x13, 0xf8, + 0xac, 0xf5, 0xe9, 0xf4, 0xe8, 0xf2, 0xd2, 0xee, 0x8d, 0xeb, 0x65, 0xe9, 0x3d, 0xea, 0x28, 0xee, + 0xd0, 0xf0, 0x9a, 0xf2, 0x57, 0xf4, 0xd5, 0xf4, 0x96, 0xf7, 0x1a, 0xfb, 0x6f, 0xfe, 0x7a, 0x01, + 0x04, 0x02, 0x4f, 0x04, 0x92, 0x07, 0x08, 0x09, 0x31, 0x0c, 0x31, 0x0e, 0x88, 0x0d, 0xa2, 0x0c, + 0x85, 0x0c, 0xdf, 0x0b, 0xff, 0x0a, 0x33, 0x0a, 0xe4, 0x0b, 0x03, 0x0f, 0xf6, 0x0f, 0x98, 0x0e, + 0xa2, 0x0c, 0x96, 0x0b, 0x17, 0x0a, 0xc1, 0x08, 0x4d, 0x06, 0x42, 0x03, 0x46, 0x01, 0x93, 0xfe, + 0x2e, 0xfc, 0xb0, 0xfb, 0x53, 0xfd, 0x29, 0x00, 0x22, 0x02, 0x9f, 0x01, 0xa2, 0x01, 0x81, 0x00, + 0xbb, 0xfe, 0x1a, 0x00, 0xf3, 0x00, 0x7d, 0xff, 0xd7, 0xfd, 0x33, 0xfb, 0xa5, 0xfa, 0x3e, 0xfd, + 0x66, 0x00, 0x69, 0x03, 0x15, 0x05, 0xcd, 0x04, 0x75, 0x03, 0xb0, 0x03, 0x08, 0x02, 0x51, 0x01, + 0x2f, 0x02, 0xfc, 0x02, 0x44, 0x04, 0xd0, 0x02, 0x1e, 0x00, 0xf2, 0xfd, 0x43, 0xfb, 0x70, 0xfa, + 0xce, 0xfb, 0x7e, 0xfc, 0x3f, 0xfc, 0xdd, 0xf9, 0xcb, 0xf6, 0xa4, 0xf6, 0x31, 0xf8, 0xb8, 0xf9, + 0x67, 0xfb, 0x32, 0xfc, 0x38, 0xfd, 0xfa, 0xfd, 0xc7, 0xfe, 0xc8, 0x00, 0x2c, 0x03, 0xb4, 0x04, + 0x2c, 0x04, 0xee, 0x02, 0xf4, 0x03, 0x21, 0x05, 0xa3, 0x08, 0xd5, 0x0c, 0x76, 0x0f, 0x15, 0x11, + 0xe3, 0x0f, 0x58, 0x0f, 0x40, 0x0e, 0x42, 0x0d, 0x03, 0x0e, 0x1f, 0x0d, 0x01, 0x0b, 0x65, 0x0a, + 0x83, 0x09, 0xfc, 0x07, 0x3e, 0x07, 0x62, 0x04, 0xa8, 0xff, 0x07, 0xfb, 0x56, 0xf6, 0x51, 0xf2, + 0xfe, 0xee, 0x8e, 0xed, 0x0d, 0xf0, 0x14, 0xf3, 0x4f, 0xf4, 0x80, 0xf3, 0x4d, 0xf2, 0x64, 0xef, + 0x5f, 0xee, 0x33, 0xf0, 0xe6, 0xf1, 0x87, 0xf3, 0x42, 0xf3, 0xf0, 0xf3, 0xd1, 0xf5, 0x84, 0xf7, + 0x65, 0xfa, 0xc9, 0xfe, 0x1a, 0x02, 0xfc, 0x03, 0xd7, 0x04, 0x55, 0x04, 0xe4, 0x03, 0xfe, 0x03, + 0x47, 0x05, 0x49, 0x04, 0xf3, 0x02, 0x4c, 0x01, 0xbb, 0xfe, 0xe1, 0xfc, 0xaa, 0xfb, 0x4f, 0xfb, + 0x78, 0xfa, 0xb3, 0xf7, 0x77, 0xf6, 0xa1, 0xf4, 0x73, 0xf1, 0xf1, 0xef, 0x0e, 0xef, 0xcf, 0xf1, + 0xeb, 0xf5, 0xe7, 0xf8, 0x4a, 0xfc, 0xdf, 0xfe, 0xd1, 0xff, 0xd1, 0x02, 0xa8, 0x05, 0xaa, 0x07, + 0x62, 0x08, 0x91, 0x07, 0x13, 0x09, 0x5d, 0x0b, 0x85, 0x0d, 0x58, 0x0f, 0xff, 0x0f, 0x8c, 0x0f, + 0x4b, 0x0e, 0x11, 0x0f, 0xb5, 0x0e, 0x9b, 0x0d, 0x12, 0x0e, 0x2a, 0x0e, 0x4e, 0x0f, 0x3c, 0x0f, + 0x21, 0x0d, 0x3b, 0x0b, 0x2d, 0x09, 0xc7, 0x06, 0x84, 0x04, 0xc4, 0xff, 0x09, 0xfb, 0xfe, 0xf7, + 0x25, 0xf5, 0x61, 0xf2, 0xee, 0xf1, 0x73, 0xf4, 0x1a, 0xf7, 0xa3, 0xf9, 0xf7, 0xfa, 0x25, 0xfb, + 0x40, 0xfa, 0x80, 0xf9, 0x24, 0xfa, 0x30, 0xfb, 0xd0, 0xfa, 0x8f, 0xf9, 0x98, 0xf7, 0xc7, 0xf6, + 0xc1, 0xf9, 0x2a, 0xfd, 0xef, 0xfe, 0xac, 0x00, 0x0c, 0x01, 0x44, 0x01, 0x18, 0x02, 0x8c, 0x02, + 0x7f, 0x05, 0xf8, 0x06, 0xdc, 0x08, 0xc4, 0x0a, 0x4e, 0x0a, 0x8a, 0x08, 0x9c, 0x06, 0xe1, 0x04, + 0x0b, 0x03, 0xb7, 0x01, 0x42, 0x00, 0xdd, 0xfe, 0x87, 0xfc, 0xb6, 0xfa, 0x02, 0xfa, 0x63, 0xfa, + 0x14, 0xfa, 0x6c, 0xfa, 0x88, 0xfc, 0x9c, 0xfd, 0x57, 0xff, 0x38, 0x01, 0x3c, 0x02, 0xb2, 0x04, + 0x4c, 0x06, 0x69, 0x05, 0x68, 0x03, 0x63, 0x02, 0x49, 0x03, 0x8f, 0x06, 0x40, 0x09, 0x80, 0x0a, + 0xeb, 0x0a, 0x65, 0x09, 0xda, 0x07, 0x17, 0x07, 0x95, 0x07, 0x7c, 0x08, 0x11, 0x08, 0xd2, 0x06, + 0x19, 0x07, 0xb5, 0x07, 0x9a, 0x06, 0xc4, 0x05, 0x8f, 0x03, 0x14, 0xff, 0xe3, 0xfa, 0x20, 0xf6, + 0x82, 0xf2, 0x21, 0xf0, 0x90, 0xee, 0x51, 0xf0, 0x64, 0xf1, 0x61, 0xf2, 0xa8, 0xf2, 0xa1, 0xf2, + 0xfd, 0xf1, 0x85, 0xf2, 0x89, 0xf5, 0xeb, 0xf7, 0xaa, 0xf9, 0xa5, 0xfa, 0x48, 0xfc, 0x9c, 0xfe, + 0x3f, 0x01, 0xcc, 0x03, 0x25, 0x06, 0x1d, 0x07, 0x7b, 0x07, 0xa4, 0x07, 0x9d, 0x06, 0x29, 0x06, + 0x92, 0x06, 0x8d, 0x05, 0x7a, 0x03, 0xad, 0x01, 0x97, 0xff, 0x5a, 0xff, 0x2e, 0xff, 0xe2, 0xfd, + 0x2f, 0xfd, 0x82, 0xfb, 0x64, 0xf8, 0x6a, 0xf6, 0xed, 0xf3, 0xd3, 0xf0, 0x76, 0xee, 0x30, 0xec, + 0xec, 0xeb, 0xb0, 0xed, 0xe7, 0xef, 0xf3, 0xf1, 0xa5, 0xf4, 0xa1, 0xf6, 0x26, 0xfa, 0x93, 0xfd, + 0x09, 0x00, 0xde, 0x01, 0x6c, 0x02, 0x49, 0x04, 0x50, 0x07, 0x95, 0x09, 0xea, 0x0a, 0x02, 0x0d, + 0x77, 0x0d, 0xdb, 0x0c, 0xa9, 0x0d, 0x25, 0x0e, 0xe8, 0x0d, 0xe9, 0x0d, 0xc6, 0x0d, 0x25, 0x0e, + 0xc8, 0x0e, 0xc9, 0x0e, 0xf7, 0x0e, 0xa3, 0x0f, 0x68, 0x0f, 0x56, 0x0d, 0xe3, 0x09, 0x54, 0x06, + 0xc1, 0x03, 0x6d, 0x02, 0x9f, 0xff, 0xd7, 0xfd, 0x8e, 0xfc, 0x61, 0xfd, 0xc9, 0xff, 0x0b, 0x00, + 0xe2, 0xff, 0xab, 0xfe, 0xca, 0xfb, 0xa8, 0xfa, 0x51, 0xfa, 0xfd, 0xf8, 0x3f, 0xf8, 0x5d, 0xf7, + 0xe6, 0xf7, 0x9e, 0xfa, 0x12, 0xfd, 0xd4, 0xfe, 0xc8, 0x00, 0x8d, 0x00, 0x04, 0x00, 0x1a, 0x00, + 0xbb, 0x00, 0x2c, 0x01, 0xb2, 0x00, 0x9c, 0x01, 0x27, 0x02, 0xfb, 0x01, 0xf1, 0x00, 0x3b, 0x00, + 0x1f, 0x00, 0xc5, 0xfe, 0xd4, 0xfd, 0x84, 0xfc, 0xdb, 0xfa, 0xf2, 0xf9, 0xbd, 0xf8, 0x9a, 0xf7, + 0x48, 0xf7, 0x5c, 0xf7, 0xdf, 0xf7, 0xf9, 0xf9, 0x86, 0xfc, 0xbe, 0xfd, 0xc1, 0xfe, 0x5a, 0xff, + 0x47, 0x00, 0x70, 0x02, 0xc9, 0x02, 0xbe, 0x01, 0xf2, 0x02, 0x16, 0x05, 0x8d, 0x08, 0x68, 0x0c, + 0xd8, 0x0e, 0xa7, 0x10, 0x80, 0x10, 0x38, 0x10, 0xed, 0x10, 0x04, 0x0f, 0xfd, 0x0c, 0x25, 0x0b, + 0xcd, 0x08, 0x2d, 0x09, 0xcb, 0x09, 0x74, 0x08, 0xfc, 0x06, 0x1a, 0x04, 0xa5, 0xff, 0x1c, 0xfb, + 0x86, 0xf6, 0x43, 0xf4, 0xf3, 0xf1, 0x1e, 0xf0, 0x69, 0xf0, 0x9e, 0xf0, 0x3b, 0xf1, 0xfc, 0xef, + 0x0b, 0xf0, 0xc1, 0xef, 0x3a, 0xef, 0xb6, 0xef, 0x31, 0xf0, 0x90, 0xf0, 0x82, 0xf1, 0x8b, 0xf2, + 0x99, 0xf5, 0x16, 0xf9, 0x53, 0xfb, 0x14, 0xff, 0x7b, 0x01, 0x09, 0x03, 0x9f, 0x03, 0x61, 0x04, + 0x67, 0x04, 0x4c, 0x05, 0xf0, 0x05, 0x4a, 0x03, 0x89, 0x01, 0x15, 0x01, 0x3f, 0x01, 0xbe, 0x01, + 0x3f, 0x00, 0x9d, 0xfe, 0x28, 0xfd, 0xfa, 0xf9, 0x24, 0xf8, 0x71, 0xf7, 0x14, 0xf6, 0xac, 0xf4, + 0x30, 0xf2, 0xc1, 0xf1, 0x16, 0xf5, 0xf6, 0xf6, 0x47, 0xfa, 0xb3, 0xfd, 0xa8, 0xfe, 0xf6, 0xff, + 0x75, 0x00, 0x59, 0x02, 0x10, 0x04, 0xaf, 0x04, 0xcc, 0x06, 0xf5, 0x07, 0x88, 0x08, 0x4f, 0x09, + 0xa2, 0x0a, 0xc8, 0x0c, 0xa8, 0x0d, 0xbe, 0x0e, 0x84, 0x0f, 0x92, 0x0e, 0x71, 0x0d, 0x6d, 0x0c, + 0x58, 0x0b, 0x0e, 0x0c, 0xa1, 0x0c, 0x18, 0x0d, 0x9e, 0x0c, 0x81, 0x0a, 0xad, 0x07, 0xc8, 0x02, + 0x4b, 0xfd, 0x40, 0xfb, 0x9e, 0xfb, 0x89, 0xf9, 0x61, 0xf7, 0x88, 0xf6, 0x40, 0xf8, 0xbc, 0xfa, + 0x12, 0xfc, 0x7c, 0xfc, 0xa7, 0xfc, 0x6a, 0xfb, 0xfa, 0xf9, 0xb3, 0xf9, 0x91, 0xf9, 0xcc, 0xf9, + 0x58, 0xfa, 0x23, 0xfa, 0xa8, 0xfb, 0xea, 0xfd, 0x06, 0xff, 0x72, 0x01, 0x34, 0x02, 0xfb, 0x03, + 0xf5, 0x05, 0x55, 0x06, 0x07, 0x08, 0x7e, 0x08, 0x94, 0x09, 0xae, 0x0b, 0x02, 0x0d, 0x69, 0x0c, + 0x4d, 0x0a, 0x6c, 0x08, 0x7d, 0x06, 0xaa, 0x03, 0xc1, 0x01, 0xcc, 0x00, 0x10, 0xff, 0xeb, 0xfc, + 0x46, 0xfa, 0x22, 0xf8, 0xe1, 0xf7, 0xb9, 0xf8, 0x63, 0xfb, 0x0d, 0xfe, 0xd1, 0xff, 0xde, 0x00, + 0x56, 0x00, 0x31, 0x00, 0x11, 0x02, 0x1f, 0x02, 0x5c, 0x01, 0xf7, 0x00, 0x2b, 0x01, 0xc0, 0x03, + 0xe9, 0x05, 0xef, 0x06, 0x1a, 0x08, 0x69, 0x09, 0x79, 0x0a, 0x4d, 0x0b, 0x1b, 0x0a, 0xc3, 0x07, + 0x70, 0x06, 0x21, 0x05, 0x47, 0x06, 0xb2, 0x07, 0xb6, 0x06, 0xb5, 0x05, 0x88, 0x03, 0x67, 0xff, + 0x74, 0xfb, 0xd4, 0xf7, 0x8c, 0xf5, 0xd6, 0xf2, 0xc9, 0xf0, 0x47, 0xf0, 0xe9, 0xf0, 0x15, 0xf1, + 0x82, 0xf1, 0xe5, 0xf3, 0x04, 0xf5, 0x23, 0xf5, 0xe4, 0xf4, 0x42, 0xf5, 0x26, 0xf6, 0xa1, 0xf8, + 0x3d, 0xfb, 0x3e, 0xfd, 0x43, 0xfe, 0x84, 0xff, 0x84, 0x01, 0xcc, 0x03, 0x93, 0x05, 0xe8, 0x05, + 0xde, 0x05, 0x37, 0x04, 0x47, 0x04, 0xf9, 0x02, 0x64, 0x00, 0x66, 0xff, 0x05, 0xff, 0x21, 0x00, + 0x5c, 0x01, 0x44, 0xff, 0x54, 0xfd, 0xf3, 0xfa, 0x9e, 0xf7, 0xe0, 0xf6, 0xd0, 0xf5, 0x56, 0xf3, + 0x73, 0xf0, 0xdd, 0xec, 0xbc, 0xea, 0xb7, 0xeb, 0xfe, 0xec, 0x31, 0xf1, 0xb5, 0xf5, 0x38, 0xf8, + 0xdf, 0xf9, 0x96, 0xfa, 0x62, 0xfc, 0xb5, 0xfe, 0xf0, 0x00, 0xa4, 0x02, 0x76, 0x04, 0x0c, 0x05, + 0xb6, 0x04, 0x20, 0x07, 0xec, 0x09, 0x4e, 0x0b, 0xde, 0x0c, 0x55, 0x0d, 0xcc, 0x0c, 0x68, 0x0b, + 0xf2, 0x09, 0x40, 0x0a, 0x57, 0x0c, 0x21, 0x0e, 0x91, 0x0f, 0x7b, 0x10, 0x4b, 0x10, 0x53, 0x0e, + 0x8a, 0x0b, 0x91, 0x08, 0xb1, 0x06, 0xf5, 0x04, 0xaf, 0x00, 0xfc, 0xfc, 0x0d, 0xfb, 0x95, 0xfb, + 0xd9, 0xfd, 0x90, 0xfe, 0xee, 0xfd, 0x5f, 0xfd, 0x52, 0xfa, 0x33, 0xf8, 0x49, 0xf8, 0xe3, 0xf7, + 0xd6, 0xf8, 0x88, 0xf9, 0x0b, 0xf9, 0x3f, 0xfa, 0x91, 0xfa, 0x71, 0xfb, 0x00, 0xfe, 0x7c, 0xff, + 0x35, 0x01, 0xfa, 0x01, 0x28, 0x02, 0xa1, 0x01, 0xf5, 0x00, 0xef, 0x01, 0x93, 0x04, 0x46, 0x07, + 0x80, 0x07, 0x37, 0x07, 0xc8, 0x06, 0xe0, 0x04, 0xf4, 0x02, 0xba, 0x01, 0x25, 0x00, 0xaa, 0xff, + 0x79, 0xfd, 0xc2, 0xfa, 0xd3, 0xf9, 0x2f, 0xf9, 0x1c, 0xfa, 0x73, 0xfc, 0x6b, 0xff, 0xb8, 0x00, + 0xcc, 0x00, 0x5b, 0x00, 0x61, 0x01, 0xd6, 0x04, 0xaf, 0x06, 0xdb, 0x06, 0xac, 0x06, 0x5c, 0x07, + 0x2d, 0x0a, 0x48, 0x0d, 0x3f, 0x0f, 0xdd, 0x11, 0x1a, 0x13, 0xcf, 0x12, 0xb5, 0x12, 0xc2, 0x0f, + 0xbc, 0x0c, 0x8e, 0x0b, 0x4c, 0x09, 0xd6, 0x08, 0xec, 0x08, 0xeb, 0x06, 0xac, 0x05, 0x52, 0x03, + 0x6a, 0x00, 0x5b, 0xfd, 0xbe, 0xf9, 0x2d, 0xf7, 0x92, 0xf3, 0xda, 0xf0, 0x3e, 0xef, 0xd1, 0xee, + 0x51, 0xee, 0x4d, 0xee, 0x4e, 0xf0, 0xd8, 0xf0, 0x1e, 0xef, 0xd1, 0xec, 0xa0, 0xeb, 0x40, 0xed, + 0x73, 0xf0, 0x03, 0xf3, 0xab, 0xf6, 0xfe, 0xf8, 0xf1, 0xf9, 0x3e, 0xfc, 0x5c, 0xff, 0x7d, 0x01, + 0x39, 0x03, 0xf0, 0x03, 0x5c, 0x03, 0x06, 0x04, 0x01, 0x04, 0xaa, 0x02, 0xef, 0x01, 0x74, 0x02, + 0x12, 0x04, 0x2f, 0x05, 0xf6, 0x02, 0xfa, 0x00, 0xf3, 0xff, 0xe8, 0xfe, 0xb3, 0xfe, 0x06, 0xfe, + 0x61, 0xfb, 0x16, 0xfa, 0xaa, 0xf7, 0xcb, 0xf5, 0x8c, 0xf7, 0x73, 0xf8, 0x39, 0xfb, 0xff, 0xfd, + 0x81, 0xfe, 0x42, 0xff, 0xb9, 0xff, 0xb4, 0x00, 0x54, 0x02, 0xa9, 0x03, 0x15, 0x04, 0x8d, 0x04, + 0xac, 0x04, 0xcc, 0x04, 0x4a, 0x07, 0x27, 0x0b, 0x11, 0x0d, 0x87, 0x0d, 0x4a, 0x0d, 0x89, 0x0b, + 0x2d, 0x0a, 0xc2, 0x08, 0x8f, 0x08, 0x63, 0x0a, 0x2f, 0x0b, 0x43, 0x0b, 0x71, 0x0a, 0x5c, 0x07, + 0xda, 0x04, 0xef, 0x02, 0xbb, 0xff, 0xd9, 0xfe, 0x6e, 0xfd, 0x67, 0xfa, 0x5d, 0xf7, 0xa1, 0xf4, + 0x09, 0xf5, 0x61, 0xf7, 0xc7, 0xf8, 0x60, 0xf8, 0x64, 0xf7, 0xcf, 0xf5, 0x4c, 0xf4, 0xf7, 0xf3, + 0xe9, 0xf3, 0xfe, 0xf4, 0xe6, 0xf5, 0x77, 0xf5, 0x9b, 0xf6, 0x42, 0xf7, 0x3f, 0xf9, 0x9a, 0xfd, + 0x8e, 0x00, 0xf7, 0x02, 0x99, 0x04, 0x19, 0x05, 0x83, 0x05, 0xe8, 0x06, 0x26, 0x08, 0x15, 0x0a, + 0x06, 0x0c, 0x53, 0x0b, 0x78, 0x0a, 0x6c, 0x09, 0xa8, 0x07, 0x99, 0x05, 0x06, 0x03, 0x1a, 0x00, + 0xc4, 0xfd, 0x44, 0xfc, 0x47, 0xfa, 0xbb, 0xf8, 0x27, 0xf8, 0x2e, 0xf9, 0xf7, 0xfb, 0xfd, 0xfd, + 0xe7, 0xfe, 0x9c, 0xff, 0xf9, 0xfe, 0xd8, 0xff, 0xeb, 0x02, 0x1f, 0x04, 0x3c, 0x04, 0xee, 0x02, + 0xcc, 0x01, 0xce, 0x03, 0xe9, 0x05, 0x4b, 0x08, 0x95, 0x0b, 0x42, 0x0e, 0x51, 0x0f, 0x4b, 0x0f, + 0xf7, 0x0c, 0xd5, 0x0a, 0x9a, 0x09, 0xf8, 0x07, 0xe1, 0x07, 0xfa, 0x07, 0x8a, 0x06, 0x05, 0x05, + 0x50, 0x03, 0x51, 0x02, 0x5e, 0xff, 0x90, 0xfb, 0xce, 0xf7, 0xed, 0xf4, 0xaa, 0xf3, 0xcf, 0xf1, + 0x05, 0xf2, 0x33, 0xf2, 0x03, 0xf3, 0x59, 0xf5, 0x42, 0xf6, 0xcd, 0xf5, 0x89, 0xf5, 0x6a, 0xf5, + 0x77, 0xf6, 0xa0, 0xf8, 0xe2, 0xfa, 0x58, 0xfd, 0x8c, 0xfe, 0xca, 0xff, 0x27, 0x01, 0x26, 0x03, + 0x9f, 0x03, 0x41, 0x04, 0x83, 0x03, 0x6b, 0x02, 0x24, 0x03, 0xb5, 0x02, 0xb0, 0x01, 0xf6, 0x00, + 0xb4, 0x00, 0xc9, 0x01, 0xe0, 0x02, 0x5d, 0x00, 0x6b, 0xfe, 0x59, 0xfe, 0x94, 0xfd, 0x9f, 0xfc, + 0x38, 0xfa, 0xd4, 0xf6, 0x39, 0xf5, 0xe2, 0xf1, 0x15, 0xf0, 0x1d, 0xf1, 0xb9, 0xf2, 0xc7, 0xf5, + 0xf6, 0xf7, 0x53, 0xfa, 0xd1, 0xfb, 0x91, 0xfc, 0xe3, 0xfd, 0x55, 0xff, 0x14, 0x01, 0x10, 0x02, + 0xd2, 0x02, 0x6d, 0x03, 0x93, 0x03, 0x03, 0x06, 0xc2, 0x09, 0xa0, 0x0b, 0x82, 0x0c, 0xcc, 0x0c, + 0xc1, 0x0b, 0xa7, 0x0b, 0x12, 0x0b, 0x55, 0x0b, 0xa8, 0x0c, 0x7f, 0x0d, 0xf9, 0x0e, 0x45, 0x0f, + 0x91, 0x0e, 0x28, 0x0e, 0x58, 0x0c, 0xc9, 0x08, 0x94, 0x06, 0x37, 0x04, 0x67, 0x01, 0x8f, 0xfe, + 0xe4, 0xfa, 0xc4, 0xf9, 0xf4, 0xfa, 0x90, 0xfa, 0x5b, 0xf9, 0x98, 0xf8, 0x1d, 0xf7, 0x49, 0xf6, + 0xf8, 0xf5, 0xd6, 0xf4, 0x56, 0xf5, 0xad, 0xf5, 0x8e, 0xf4, 0x6a, 0xf5, 0x9d, 0xf4, 0x19, 0xf6, + 0x7d, 0xf9, 0x85, 0xfb, 0xc3, 0xfd, 0xf7, 0xfd, 0x49, 0xfe, 0x93, 0xff, 0x0e, 0x01, 0xb4, 0x03, + 0x98, 0x06, 0x23, 0x08, 0x0d, 0x08, 0xae, 0x07, 0xe2, 0x07, 0xf9, 0x06, 0x53, 0x05, 0x1c, 0x03, + 0xdc, 0xff, 0xa8, 0xfd, 0xf4, 0xfb, 0xa5, 0xfa, 0xa8, 0xf9, 0x79, 0xf9, 0x72, 0xf9, 0xbf, 0xfa, + 0x93, 0xfb, 0x0e, 0xfc, 0x6f, 0xfd, 0x03, 0xfe, 0xda, 0xff, 0x9b, 0x02, 0x78, 0x04, 0x5a, 0x05, + 0x7b, 0x04, 0xf6, 0x04, 0x8f, 0x07, 0x33, 0x09, 0x51, 0x0b, 0xff, 0x0d, 0x2c, 0x10, 0x4d, 0x11, + 0x14, 0x12, 0x5e, 0x0f, 0x4b, 0x0c, 0x9f, 0x09, 0x02, 0x07, 0xd7, 0x06, 0xdc, 0x05, 0x12, 0x04, + 0x44, 0x03, 0x40, 0x02, 0xc6, 0x01, 0xac, 0xff, 0x2d, 0xfb, 0x52, 0xf7, 0x54, 0xf4, 0xce, 0xf1, + 0x5e, 0xf0, 0x9d, 0xef, 0x24, 0xef, 0xc9, 0xef, 0x44, 0xf0, 0xaf, 0xf0, 0xb0, 0xef, 0x95, 0xef, + 0xa3, 0xef, 0x5b, 0xf1, 0x13, 0xf4, 0x01, 0xf6, 0x79, 0xf7, 0x89, 0xf9, 0xa2, 0xfb, 0x98, 0xfd, + 0x42, 0x00, 0x4f, 0x01, 0x1c, 0x03, 0x9b, 0x03, 0x38, 0x03, 0x55, 0x04, 0xd5, 0x04, 0xdb, 0x04, + 0x5e, 0x04, 0x66, 0x03, 0xc6, 0x04, 0x5a, 0x05, 0x67, 0x04, 0xef, 0x04, 0x85, 0x05, 0xf7, 0x04, + 0x37, 0x04, 0xa0, 0x02, 0x33, 0x00, 0x84, 0xff, 0xa9, 0xfc, 0x4c, 0xfb, 0x7b, 0xfb, 0x9e, 0xfa, + 0x99, 0xfb, 0xf8, 0xfc, 0xce, 0xfe, 0x44, 0x00, 0x98, 0xff, 0x0a, 0xff, 0xee, 0xff, 0x7f, 0x00, + 0xc0, 0x00, 0xdb, 0x01, 0x49, 0x02, 0x02, 0x03, 0x9d, 0x04, 0x80, 0x07, 0xa6, 0x09, 0x7e, 0x09, + 0x6a, 0x09, 0x17, 0x09, 0xbe, 0x08, 0x0d, 0x08, 0x78, 0x07, 0x9c, 0x07, 0xee, 0x06, 0x1e, 0x07, + 0x86, 0x07, 0x3f, 0x06, 0xaf, 0x06, 0xa3, 0x06, 0x2d, 0x03, 0x05, 0x01, 0x4d, 0xff, 0x61, 0xfc, + 0x5b, 0xf9, 0xa9, 0xf5, 0x78, 0xf4, 0x2d, 0xf5, 0x00, 0xf4, 0xa8, 0xf3, 0xb1, 0xf4, 0x9a, 0xf4, + 0x85, 0xf4, 0x21, 0xf4, 0xba, 0xf2, 0xaa, 0xf3, 0x38, 0xf4, 0x14, 0xf5, 0xc4, 0xf6, 0xdd, 0xf6, + 0xd7, 0xf8, 0x57, 0xfb, 0xf4, 0xfe, 0x68, 0x02, 0x4a, 0x04, 0x36, 0x05, 0x51, 0x06, 0x80, 0x08, + 0x55, 0x0a, 0x6e, 0x0b, 0x78, 0x0c, 0x30, 0x0d, 0xfd, 0x0c, 0xf2, 0x0b, 0x80, 0x0a, 0x67, 0x08, + 0x08, 0x05, 0xe3, 0x01, 0x97, 0xff, 0xa8, 0xfd, 0x7d, 0xfc, 0x27, 0xfb, 0x1d, 0xfb, 0xe4, 0xfa, + 0x1f, 0xfb, 0xde, 0xfa, 0xc8, 0xfb, 0xaf, 0xfe, 0xc3, 0xff, 0x03, 0x01, 0x84, 0x02, 0xb1, 0x02, + 0x3a, 0x02, 0x9b, 0x01, 0xbe, 0x01, 0x1c, 0x05, 0x4c, 0x08, 0x55, 0x0a, 0xbf, 0x0d, 0x74, 0x10, + 0x0f, 0x12, 0xbf, 0x12, 0xd6, 0x0f, 0x79, 0x0d, 0x62, 0x0b, 0xc8, 0x08, 0x18, 0x08, 0x57, 0x06, + 0xaa, 0x05, 0x82, 0x05, 0xf1, 0x04, 0x12, 0x05, 0x23, 0x02, 0xc7, 0xfd, 0x1f, 0xfa, 0xab, 0xf7, + 0x5d, 0xf6, 0xc8, 0xf4, 0xa3, 0xf3, 0x48, 0xf3, 0x4e, 0xf3, 0x2f, 0xf4, 0x62, 0xf5, 0x0e, 0xf5, + 0x79, 0xf4, 0xf8, 0xf3, 0x95, 0xf4, 0x97, 0xf5, 0xab, 0xf7, 0x5d, 0xf9, 0x55, 0xfa, 0x2d, 0xfb, + 0x61, 0xfb, 0xe6, 0xfb, 0x41, 0xfc, 0xb6, 0xfd, 0x2a, 0xff, 0xd0, 0xff, 0xf2, 0x00, 0x1f, 0x02, + 0x39, 0x02, 0x35, 0x01, 0x08, 0xff, 0x29, 0xff, 0xd9, 0x00, 0x6e, 0x01, 0xf3, 0x00, 0xb9, 0x00, + 0x67, 0xff, 0x32, 0xfe, 0x8e, 0xfb, 0xa8, 0xf8, 0x99, 0xf8, 0x98, 0xf7, 0xce, 0xf7, 0x03, 0xf7, + 0xf0, 0xf5, 0xa5, 0xf6, 0xf4, 0xf7, 0x98, 0xfa, 0xa5, 0xfc, 0x75, 0xfc, 0x89, 0xfc, 0x6f, 0xfd, + 0x66, 0xfe, 0xfe, 0xfe, 0xf5, 0xff, 0x66, 0x01, 0x4b, 0x02, 0xca, 0x03, 0xca, 0x06, 0xc3, 0x08, + 0xee, 0x09, 0xac, 0x0a, 0x3b, 0x0b, 0x7c, 0x0b, 0xc4, 0x0b, 0x4c, 0x0c, 0x97, 0x0c, 0x3b, 0x0d, + 0xc6, 0x0e, 0x16, 0x10, 0x0b, 0x10, 0x4c, 0x10, 0xdb, 0x0e, 0x90, 0x0c, 0x80, 0x09, 0x15, 0x06, + 0x46, 0x03, 0xbe, 0xff, 0x64, 0xfc, 0x0a, 0xfa, 0xe0, 0xf8, 0x17, 0xf8, 0x94, 0xf7, 0x76, 0xf8, + 0xcf, 0xf8, 0xf6, 0xf8, 0x38, 0xf8, 0x44, 0xf5, 0x8a, 0xf4, 0x2c, 0xf4, 0xd4, 0xf4, 0x96, 0xf6, + 0x64, 0xf6, 0xa6, 0xf6, 0xda, 0xf7, 0x54, 0xfa, 0xba, 0xfc, 0xbd, 0xfd, 0xe5, 0xfe, 0xf6, 0x01, + 0x41, 0x04, 0xb8, 0x05, 0xd6, 0x06, 0x62, 0x07, 0x83, 0x08, 0x03, 0x09, 0xea, 0x08, 0x74, 0x07, + 0xbf, 0x04, 0x9f, 0x01, 0x09, 0xff, 0x4b, 0xfc, 0xd9, 0xfa, 0x27, 0xfa, 0x54, 0xf9, 0x82, 0xf8, + 0xa4, 0xf7, 0x51, 0xf7, 0x73, 0xf7, 0x4b, 0xf9, 0xcf, 0xfb, 0xdf, 0xfd, 0x5e, 0x00, 0x0d, 0x02, + 0x84, 0x03, 0x17, 0x05, 0x72, 0x05, 0x3d, 0x07, 0xf2, 0x08, 0x1d, 0x0b, 0xf3, 0x0c, 0xa9, 0x0f, + 0xa4, 0x12, 0xc3, 0x13, 0x11, 0x14, 0xa9, 0x11, 0x54, 0x0f, 0xa5, 0x0c, 0x84, 0x09, 0xec, 0x07, + 0x6b, 0x06, 0x82, 0x06, 0x16, 0x07, 0xf5, 0x06, 0x79, 0x06, 0xa1, 0x02, 0xcc, 0xfd, 0x32, 0xfa, + 0x26, 0xf8, 0xf0, 0xf5, 0xab, 0xf4, 0x14, 0xf3, 0x5f, 0xf1, 0x3e, 0xf0, 0x9d, 0xf0, 0xbe, 0xf1, + 0x04, 0xf3, 0x39, 0xf3, 0x49, 0xf3, 0x87, 0xf3, 0xe6, 0xf3, 0x94, 0xf5, 0x6c, 0xf7, 0x08, 0xfa, + 0x29, 0xfb, 0x41, 0xfc, 0x6f, 0xfc, 0x71, 0xfd, 0x5a, 0xff, 0xc9, 0x00, 0x8a, 0x02, 0x0e, 0x04, + 0x48, 0x05, 0x03, 0x06, 0x04, 0x05, 0x27, 0x04, 0x31, 0x05, 0x93, 0x06, 0xb4, 0x07, 0xdb, 0x07, + 0xbf, 0x08, 0xdf, 0x08, 0x51, 0x08, 0xe9, 0x05, 0x54, 0x03, 0x1f, 0x02, 0x95, 0x00, 0x8f, 0xff, + 0xca, 0xfc, 0x6b, 0xfa, 0xd9, 0xf8, 0x54, 0xf9, 0xb9, 0xfa, 0x1b, 0xfb, 0xb9, 0xf9, 0xec, 0xf8, + 0xe9, 0xf8, 0x2b, 0xf9, 0x92, 0xfa, 0xba, 0xfc, 0x9f, 0xfe, 0x50, 0xff, 0xa3, 0xff, 0xc7, 0x00, + 0x9b, 0x02, 0xdd, 0x03, 0xc0, 0x04, 0xe9, 0x05, 0x43, 0x06, 0x91, 0x05, 0x6a, 0x04, 0xd5, 0x03, + 0xed, 0x03, 0xcc, 0x05, 0x55, 0x08, 0xcf, 0x08, 0x0f, 0x09, 0xcf, 0x08, 0x17, 0x07, 0x04, 0x05, + 0x01, 0x02, 0x8c, 0xff, 0xf0, 0xfc, 0x9c, 0xf9, 0x6f, 0xf6, 0x9c, 0xf4, 0x82, 0xf3, 0x12, 0xf3, + 0x95, 0xf4, 0xff, 0xf5, 0xf8, 0xf6, 0xb7, 0xf5, 0xb5, 0xf3, 0xe8, 0xf3, 0x51, 0xf4, 0x59, 0xf6, + 0xdf, 0xf7, 0x7c, 0xf8, 0x22, 0xfa, 0x79, 0xfc, 0x8a, 0x00, 0xd9, 0x02, 0x31, 0x04, 0x79, 0x05, + 0x8c, 0x07, 0x50, 0x09, 0xde, 0x09, 0x88, 0x09, 0xe8, 0x09, 0x9f, 0x0a, 0xce, 0x0a, 0xfd, 0x09, + 0xf6, 0x07, 0x14, 0x05, 0x81, 0x01, 0x73, 0xff, 0x0c, 0xfd, 0xfa, 0xfb, 0xee, 0xfb, 0xb2, 0xfa, + 0x4f, 0xf8, 0x8c, 0xf6, 0x05, 0xf6, 0x2b, 0xf6, 0xc7, 0xf7, 0x8f, 0xfa, 0xb7, 0xfc, 0x7b, 0xfd, + 0x14, 0xfd, 0x79, 0xfd, 0x4b, 0xff, 0x07, 0x01, 0xf8, 0x02, 0xed, 0x04, 0x59, 0x06, 0xc9, 0x07, + 0xa4, 0x0a, 0x11, 0x0d, 0x34, 0x0f, 0x42, 0x10, 0x7d, 0x0e, 0xd9, 0x0c, 0xc9, 0x09, 0x58, 0x07, + 0x62, 0x05, 0x26, 0x03, 0xc9, 0x03, 0x4d, 0x04, 0xcb, 0x03, 0xbe, 0x03, 0x87, 0x01, 0xbe, 0xfe, + 0xa8, 0xfb, 0x42, 0xf9, 0x7f, 0xf8, 0x87, 0xf7, 0x8b, 0xf6, 0x7b, 0xf6, 0x69, 0xf5, 0x7b, 0xf5, + 0xd6, 0xf5, 0x6d, 0xf6, 0xaa, 0xf6, 0x67, 0xf6, 0x06, 0xf6, 0x08, 0xf6, 0x2a, 0xf7, 0xd7, 0xf8, + 0xfe, 0xf9, 0x68, 0xfa, 0x0f, 0xfb, 0xf7, 0xfa, 0xaf, 0xfb, 0x9c, 0xfd, 0x59, 0x00, 0x6f, 0x03, + 0x17, 0x05, 0x70, 0x05, 0x2d, 0x05, 0x91, 0x04, 0x8d, 0x04, 0xe7, 0x04, 0x74, 0x06, 0x53, 0x07, + 0x93, 0x06, 0x63, 0x06, 0xad, 0x05, 0xcf, 0x05, 0xe4, 0x03, 0x96, 0x02, 0x2c, 0x02, 0x0d, 0x01, + 0xc8, 0xff, 0xae, 0xfc, 0x99, 0xfa, 0x22, 0xfa, 0x30, 0xfa, 0xc0, 0xfb, 0xdf, 0xfc, 0xb1, 0xfb, + 0x9e, 0xfa, 0xe0, 0xf9, 0x62, 0xfa, 0x58, 0xfc, 0x19, 0xfe, 0x21, 0x00, 0x78, 0x01, 0x9a, 0x02, + 0xe1, 0x04, 0x3c, 0x06, 0x24, 0x07, 0x36, 0x09, 0xfb, 0x0a, 0x1d, 0x0c, 0x70, 0x0c, 0x16, 0x0c, + 0xd0, 0x0b, 0x07, 0x0b, 0xc1, 0x0c, 0xed, 0x0e, 0xfe, 0x0e, 0xd8, 0x0e, 0x38, 0x0e, 0x39, 0x0d, + 0x33, 0x0a, 0xc2, 0x05, 0x7d, 0x02, 0x34, 0xff, 0xb5, 0xfb, 0x30, 0xf8, 0x81, 0xf5, 0xb0, 0xf4, + 0xab, 0xf4, 0x9a, 0xf5, 0x26, 0xf6, 0x0f, 0xf6, 0x3f, 0xf4, 0xff, 0xf1, 0x21, 0xf2, 0x08, 0xf3, + 0x8c, 0xf4, 0xad, 0xf4, 0x0a, 0xf4, 0xd9, 0xf4, 0x09, 0xf6, 0x32, 0xf8, 0x94, 0xfb, 0x61, 0xfe, + 0x9c, 0x00, 0x9c, 0x02, 0x90, 0x03, 0x23, 0x05, 0x0b, 0x06, 0x44, 0x07, 0xb9, 0x08, 0x5c, 0x09, + 0xd3, 0x08, 0x6e, 0x07, 0x71, 0x04, 0xd5, 0x01, 0x09, 0x00, 0xe6, 0xfd, 0x2a, 0xfd, 0xe7, 0xfb, + 0x5a, 0xfb, 0xf2, 0xf9, 0x8d, 0xf8, 0x4c, 0xf8, 0xa2, 0xf7, 0x41, 0xf9, 0x13, 0xfd, 0x62, 0x00, + 0x9c, 0x02, 0x91, 0x02, 0xe6, 0x02, 0x18, 0x05, 0x0f, 0x07, 0x04, 0x08, 0xad, 0x08, 0x54, 0x09, + 0x19, 0x0a, 0xe6, 0x0b, 0x18, 0x0d, 0xeb, 0x0e, 0x82, 0x0f, 0x59, 0x0d, 0x43, 0x0b, 0x2b, 0x08, + 0x13, 0x06, 0x49, 0x04, 0xd8, 0x02, 0x11, 0x03, 0x77, 0x02, 0x06, 0x01, 0x1b, 0x00, 0xd9, 0xfe, + 0x6d, 0xfc, 0xf7, 0xf9, 0x38, 0xf7, 0x7e, 0xf4, 0x0b, 0xf2, 0x21, 0xf0, 0x43, 0xef, 0x17, 0xef, + 0x2d, 0xef, 0xef, 0xef, 0xe0, 0xf0, 0xb1, 0xf0, 0xee, 0xf0, 0x8e, 0xf0, 0x72, 0xf1, 0xe5, 0xf2, + 0xc9, 0xf3, 0x32, 0xf5, 0x30, 0xf6, 0x1c, 0xf7, 0x64, 0xf7, 0x9e, 0xf7, 0x11, 0xfa, 0xeb, 0xfd, + 0xdd, 0x00, 0x7e, 0x02, 0xc9, 0x02, 0x44, 0x04, 0x7e, 0x05, 0xbd, 0x05, 0xa0, 0x06, 0x4e, 0x08, + 0xf3, 0x09, 0xe2, 0x0b, 0xaa, 0x0c, 0x8b, 0x0c, 0xc6, 0x0c, 0x23, 0x0b, 0x08, 0x0a, 0xbd, 0x08, + 0xec, 0x06, 0xdf, 0x04, 0x71, 0x01, 0x59, 0xfe, 0x26, 0xfc, 0x75, 0xfa, 0x18, 0xfb, 0xe7, 0xfb, + 0xd1, 0xfa, 0x58, 0xfa, 0xfc, 0xfa, 0x86, 0xfc, 0xf3, 0xfd, 0x1a, 0xff, 0x24, 0x00, 0x9c, 0x01, + 0x08, 0x03, 0x54, 0x04, 0x6a, 0x06, 0xd9, 0x07, 0xfe, 0x08, 0xe5, 0x09, 0x1d, 0x0a, 0xf4, 0x09, + 0x67, 0x09, 0x67, 0x09, 0xd4, 0x09, 0x2a, 0x0b, 0xa0, 0x0c, 0x78, 0x0c, 0x87, 0x0c, 0x10, 0x0d, + 0xa7, 0x0c, 0xeb, 0x09, 0x04, 0x06, 0x26, 0x02, 0x0b, 0xff, 0xde, 0xfb, 0xea, 0xf7, 0x2e, 0xf5, + 0x54, 0xf3, 0xec, 0xf2, 0x30, 0xf4, 0x03, 0xf5, 0x44, 0xf6, 0x29, 0xf5, 0x23, 0xf4, 0xf8, 0xf4, + 0x75, 0xf5, 0x06, 0xf7, 0xa4, 0xf8, 0x15, 0xfa, 0x38, 0xfb, 0x82, 0xfb, 0x5f, 0xfd, 0x1c, 0x01, + 0x74, 0x03, 0x38, 0x05, 0x84, 0x06, 0x48, 0x07, 0xe7, 0x07, 0xc0, 0x07, 0x14, 0x08, 0x7d, 0x08, + 0xd4, 0x08, 0x7f, 0x07, 0x57, 0x06, 0x80, 0x04, 0xcc, 0x02, 0xc9, 0x01, 0x34, 0x00, 0xfa, 0xfd, + 0xe4, 0xfb, 0xb9, 0xfa, 0x68, 0xf9, 0x81, 0xf8, 0x60, 0xf7, 0x0d, 0xf6, 0x48, 0xf6, 0xb4, 0xf8, + 0xb4, 0xfa, 0xdf, 0xfb, 0x5b, 0xfc, 0x71, 0xfe, 0xb7, 0x00, 0x49, 0x03, 0x29, 0x04, 0x15, 0x05, + 0xd1, 0x06, 0xb1, 0x07, 0x2c, 0x0a, 0x80, 0x0b, 0x37, 0x0d, 0x88, 0x0d, 0x04, 0x0c, 0x0e, 0x0b, + 0xbb, 0x08, 0x4a, 0x06, 0x0c, 0x05, 0x55, 0x03, 0x95, 0x03, 0x02, 0x04, 0x5e, 0x03, 0x42, 0x03, + 0x5d, 0x02, 0x7b, 0x00, 0xc8, 0xfe, 0xe8, 0xfc, 0x81, 0xfb, 0xed, 0xf9, 0x22, 0xf8, 0xb3, 0xf7, + 0xa4, 0xf7, 0xcd, 0xf6, 0xb8, 0xf6, 0x3f, 0xf6, 0x3e, 0xf5, 0xa7, 0xf4, 0xfc, 0xf3, 0xc8, 0xf3, + 0x29, 0xf3, 0x4b, 0xf3, 0x73, 0xf3, 0x97, 0xf4, 0x03, 0xf6, 0xfd, 0xf5, 0x1c, 0xf7, 0xda, 0xf9, + 0x82, 0xfc, 0x8b, 0xfe, 0xc1, 0xfe, 0x69, 0xff, 0x22, 0x01, 0xcf, 0x02, 0x8e, 0x03, 0x7f, 0x02, + 0x94, 0x02, 0x16, 0x03, 0xf0, 0x03, 0xe1, 0x04, 0xa3, 0x05, 0xa0, 0x06, 0x5a, 0x06, 0x13, 0x05, + 0x90, 0x03, 0x07, 0x02, 0xac, 0x00, 0x00, 0xfe, 0xd5, 0xfa, 0x5e, 0xf9, 0x6c, 0xf7, 0xe3, 0xf6, + 0xfd, 0xf7, 0x11, 0xf7, 0xfc, 0xf6, 0xd4, 0xf7, 0xb3, 0xf8, 0xfd, 0xf9, 0xa3, 0xfb, 0x9d, 0xfd, + 0x87, 0x00, 0x09, 0x02, 0xa7, 0x03, 0xf1, 0x05, 0xaf, 0x07, 0xb5, 0x0a, 0xc1, 0x0c, 0xef, 0x0d, + 0x1e, 0x0e, 0x21, 0x0e, 0x22, 0x0f, 0x70, 0x0f, 0xda, 0x0f, 0x64, 0x10, 0x58, 0x10, 0xa3, 0x10, + 0x63, 0x10, 0xb2, 0x0f, 0xd4, 0x0c, 0xf0, 0x07, 0xb8, 0x03, 0xca, 0x00, 0x7e, 0xfe, 0xbf, 0xfb, + 0x74, 0xf9, 0x4d, 0xf7, 0x15, 0xf6, 0xb7, 0xf5, 0xd2, 0xf5, 0x05, 0xf7, 0x1d, 0xf7, 0x12, 0xf7, + 0x70, 0xf6, 0x51, 0xf5, 0x2d, 0xf5, 0xa2, 0xf5, 0x7b, 0xf6, 0x78, 0xf7, 0x1d, 0xf9, 0x56, 0xfb, + 0x7d, 0xfe, 0x55, 0x00, 0xb5, 0x01, 0x00, 0x04, 0xc2, 0x05, 0xb2, 0x06, 0xe3, 0x07, 0x3d, 0x08, + 0x7a, 0x08, 0x4b, 0x09, 0x67, 0x08, 0x72, 0x07, 0x66, 0x05, 0xba, 0x03, 0xd0, 0x02, 0x95, 0x01, + 0x99, 0xff, 0x34, 0xfe, 0xa3, 0xfd, 0xac, 0xfc, 0x70, 0xfb, 0xf5, 0xf9, 0x08, 0xf9, 0x01, 0xfa, + 0xcf, 0xfb, 0x3a, 0xfe, 0xf9, 0xff, 0x3d, 0x01, 0x2f, 0x02, 0x18, 0x04, 0x58, 0x05, 0x97, 0x06, + 0x95, 0x06, 0x0b, 0x06, 0x21, 0x07, 0x47, 0x08, 0x2c, 0x09, 0x1e, 0x0a, 0x1e, 0x0a, 0xdd, 0x09, + 0x74, 0x09, 0xb9, 0x08, 0xf9, 0x06, 0xbf, 0x04, 0x03, 0x02, 0x0b, 0x01, 0x7a, 0x01, 0x6c, 0x01, + 0x65, 0x02, 0x7e, 0x01, 0x66, 0xff, 0xd5, 0xfc, 0x12, 0xfa, 0x3b, 0xf7, 0x77, 0xf4, 0xca, 0xf3, + 0x47, 0xf3, 0xcf, 0xf3, 0x2a, 0xf3, 0x28, 0xf2, 0x01, 0xf2, 0xed, 0xf0, 0xe2, 0xf1, 0xe2, 0xf2, + 0xe0, 0xf1, 0xde, 0xf0, 0x9f, 0xf0, 0x89, 0xf1, 0x7a, 0xf2, 0xf6, 0xf2, 0x11, 0xf3, 0x5b, 0xf4, + 0xbc, 0xf7, 0x60, 0xfa, 0x0e, 0xfd, 0xe2, 0xfd, 0xcc, 0xfe, 0x32, 0x01, 0x94, 0x03, 0x94, 0x05, + 0x44, 0x06, 0x62, 0x07, 0xca, 0x08, 0xf0, 0x0a, 0x0c, 0x0c, 0x6f, 0x0d, 0xbf, 0x0e, 0x1f, 0x0e, + 0x3e, 0x0d, 0x2e, 0x0b, 0x8a, 0x08, 0x3d, 0x07, 0xaf, 0x03, 0xfb, 0xff, 0x63, 0xfd, 0x2c, 0xfa, + 0x68, 0xf9, 0xbb, 0xf9, 0x3c, 0xfa, 0x23, 0xfb, 0xaa, 0xfb, 0xb2, 0xfb, 0x25, 0xfb, 0x51, 0xfc, + 0x6d, 0xfe, 0xa2, 0x01, 0xfd, 0x03, 0xa5, 0x04, 0xf3, 0x04, 0x3d, 0x05, 0x18, 0x06, 0xdb, 0x07, + 0xdf, 0x08, 0xe7, 0x08, 0x00, 0x0a, 0xda, 0x0a, 0xfc, 0x09, 0xe2, 0x09, 0x7a, 0x09, 0x48, 0x0a, + 0x99, 0x0b, 0xc5, 0x0b, 0x0a, 0x0b, 0xe0, 0x07, 0x66, 0x04, 0x87, 0x00, 0xee, 0xfc, 0x56, 0xfa, + 0x46, 0xf7, 0xcd, 0xf4, 0x13, 0xf2, 0xdd, 0xf0, 0x22, 0xf0, 0xfb, 0xef, 0xbe, 0xf1, 0x80, 0xf2, + 0x45, 0xf3, 0x57, 0xf4, 0x50, 0xf4, 0x1e, 0xf5, 0xa7, 0xf5, 0x7c, 0xf6, 0x23, 0xf9, 0xb9, 0xfa, + 0x8d, 0xfc, 0x4f, 0xff, 0xaa, 0x00, 0x51, 0x02, 0x19, 0x04, 0x84, 0x05, 0x0d, 0x06, 0xd7, 0x06, + 0x33, 0x07, 0x4e, 0x08, 0x01, 0x09, 0xd3, 0x09, 0x60, 0x0a, 0xa1, 0x09, 0x06, 0x08, 0x92, 0x06, + 0xc3, 0x05, 0x61, 0x03, 0x59, 0x02, 0x79, 0x02, 0xe9, 0x00, 0x38, 0xff, 0x69, 0xfd, 0xeb, 0xfa, + 0x45, 0xfa, 0x58, 0xfb, 0xe9, 0xfd, 0x32, 0x00, 0x98, 0x00, 0x46, 0x01, 0xcf, 0x02, 0x4d, 0x04, + 0x2c, 0x05, 0x16, 0x06, 0x2e, 0x06, 0xf1, 0x06, 0xa3, 0x07, 0x9e, 0x07, 0x86, 0x08, 0x3e, 0x08, + 0x6b, 0x07, 0x28, 0x07, 0xb6, 0x05, 0x2f, 0x04, 0x7c, 0x02, 0xec, 0xff, 0xa7, 0xfe, 0xe9, 0xfe, + 0xc9, 0xfe, 0x6e, 0xff, 0xad, 0xff, 0x30, 0xff, 0x3f, 0xfe, 0xcb, 0xfb, 0x27, 0xf9, 0x91, 0xf7, + 0x55, 0xf6, 0xbd, 0xf6, 0x79, 0xf7, 0x19, 0xf6, 0xfa, 0xf4, 0x64, 0xf3, 0x12, 0xf3, 0x48, 0xf3, + 0xd0, 0xf2, 0x64, 0xf1, 0xdf, 0xef, 0x9a, 0xf0, 0x99, 0xf1, 0x28, 0xf3, 0x62, 0xf5, 0x8f, 0xf5, + 0xfa, 0xf6, 0x3a, 0xf9, 0x34, 0xfb, 0x6e, 0xfe, 0x48, 0x00, 0xbf, 0x01, 0x78, 0x03, 0x71, 0x05, + 0x9b, 0x06, 0x05, 0x06, 0xf6, 0x04, 0xfd, 0x05, 0x15, 0x08, 0x53, 0x09, 0xda, 0x0a, 0x88, 0x0b, + 0x7c, 0x0b, 0x84, 0x0b, 0x68, 0x0a, 0x79, 0x08, 0x5b, 0x06, 0xc3, 0x02, 0xff, 0xfe, 0xa3, 0xfc, + 0xef, 0xf8, 0xe1, 0xf5, 0x67, 0xf5, 0xd8, 0xf5, 0x99, 0xf6, 0x82, 0xf7, 0x40, 0xf7, 0xca, 0xf7, + 0x6f, 0xf8, 0x3c, 0xfa, 0x8e, 0xfd, 0x00, 0x00, 0x14, 0x03, 0x91, 0x04, 0x7b, 0x05, 0x29, 0x07, + 0x90, 0x09, 0x57, 0x0b, 0x3b, 0x0c, 0x0a, 0x0e, 0x2f, 0x0f, 0xa9, 0x0e, 0x4d, 0x0e, 0x3e, 0x0e, + 0x62, 0x0f, 0x56, 0x10, 0x91, 0x0f, 0x75, 0x0e, 0x75, 0x0c, 0xea, 0x08, 0x0e, 0x06, 0x6a, 0x04, + 0xf6, 0x01, 0xc6, 0xff, 0x26, 0xfc, 0xbf, 0xf8, 0x0a, 0xf8, 0x61, 0xf7, 0x33, 0xf8, 0x61, 0xf9, + 0xa1, 0xf9, 0xf3, 0xf9, 0xbb, 0xf8, 0x0b, 0xf7, 0xc7, 0xf6, 0xef, 0xf6, 0xc5, 0xf7, 0x0a, 0xfa, + 0x71, 0xfb, 0x68, 0xfc, 0xe6, 0xfd, 0x77, 0xff, 0x72, 0x01, 0xd1, 0x03, 0xd5, 0x04, 0x0a, 0x05, + 0xb4, 0x06, 0xf8, 0x05, 0x84, 0x05, 0xed, 0x05, 0x82, 0x06, 0xdc, 0x06, 0x82, 0x05, 0x2d, 0x04, + 0x8a, 0x03, 0xcf, 0x02, 0xd5, 0x00, 0x70, 0xff, 0x6f, 0xff, 0x4a, 0xff, 0x38, 0xfe, 0xa7, 0xfc, + 0xf3, 0xfa, 0x63, 0xfa, 0x27, 0xfb, 0x73, 0xfd, 0xab, 0xff, 0xa9, 0x00, 0x14, 0x01, 0x5a, 0x02, + 0x79, 0x03, 0x51, 0x04, 0xeb, 0x04, 0xeb, 0x03, 0x45, 0x04, 0xa1, 0x04, 0xbf, 0x04, 0x70, 0x06, + 0x75, 0x07, 0xac, 0x08, 0x99, 0x09, 0x3a, 0x08, 0x05, 0x07, 0x7a, 0x05, 0x8f, 0x02, 0x55, 0x02, + 0xe8, 0x02, 0xb1, 0x02, 0x86, 0x02, 0xb4, 0x01, 0x3a, 0x00, 0x6a, 0xff, 0x44, 0xfd, 0x2d, 0xfa, + 0x83, 0xf8, 0x07, 0xf7, 0x4e, 0xf6, 0x4f, 0xf6, 0x4b, 0xf5, 0x84, 0xf3, 0x2b, 0xf3, 0x48, 0xf2, + 0xe5, 0xf1, 0x41, 0xf2, 0xa5, 0xf0, 0x79, 0xee, 0x1a, 0xee, 0x8b, 0xed, 0x38, 0xee, 0x46, 0xf0, + 0x60, 0xf1, 0x26, 0xf3, 0x03, 0xf4, 0xdb, 0xf5, 0x78, 0xf8, 0xe4, 0xf9, 0xb2, 0xfc, 0xd0, 0xff, + 0xee, 0x02, 0x17, 0x05, 0xdc, 0x05, 0x22, 0x06, 0x48, 0x08, 0xa8, 0x0b, 0x58, 0x0d, 0x8f, 0x0e, + 0xd4, 0x0e, 0xeb, 0x0e, 0x57, 0x0f, 0x27, 0x0e, 0xa0, 0x0a, 0x6d, 0x07, 0x08, 0x03, 0xe0, 0xff, + 0x10, 0xff, 0x36, 0xfc, 0x05, 0xfa, 0x9c, 0xf8, 0x04, 0xf8, 0x27, 0xf9, 0x91, 0xfa, 0xdf, 0xfa, + 0xdf, 0xfb, 0x9d, 0xfc, 0xcf, 0xfc, 0x16, 0xff, 0xcf, 0x00, 0x7f, 0x02, 0xc7, 0x03, 0xa7, 0x04, + 0x4a, 0x05, 0x7c, 0x06, 0xb0, 0x07, 0x72, 0x08, 0xfa, 0x0a, 0xcb, 0x0b, 0x9d, 0x0a, 0x74, 0x0a, + 0x6c, 0x09, 0x43, 0x0a, 0xd8, 0x0b, 0x2d, 0x0c, 0x91, 0x0a, 0x50, 0x07, 0x18, 0x03, 0x08, 0x00, + 0xa1, 0xfe, 0xaf, 0xfd, 0x8a, 0xfc, 0xf6, 0xf8, 0x57, 0xf5, 0x02, 0xf3, 0x20, 0xf2, 0xde, 0xf2, + 0x48, 0xf5, 0x68, 0xf7, 0xdd, 0xf7, 0xe8, 0xf7, 0x08, 0xf7, 0x1e, 0xf7, 0x5a, 0xf8, 0xbf, 0xfa, + 0x3e, 0xfe, 0x6d, 0xff, 0x65, 0xff, 0xa1, 0x00, 0x3d, 0x02, 0x7a, 0x03, 0x50, 0x05, 0xb6, 0x04, + 0x66, 0x04, 0x23, 0x05, 0x82, 0x06, 0x5c, 0x09, 0xb3, 0x0b, 0x2c, 0x0c, 0x23, 0x0b, 0xb7, 0x09, + 0xa4, 0x07, 0xe1, 0x07, 0xbb, 0x08, 0x68, 0x07, 0xd5, 0x05, 0x0c, 0x04, 0x8c, 0x00, 0x42, 0xfe, + 0xf9, 0xfc, 0x10, 0xfd, 0x14, 0xfe, 0x27, 0xfe, 0xf0, 0xfe, 0x91, 0xfe, 0x9f, 0xfe, 0xf2, 0xff, + 0x2f, 0x02, 0x44, 0x04, 0x07, 0x06, 0x29, 0x07, 0xdb, 0x06, 0x6a, 0x07, 0xc8, 0x06, 0x0f, 0x05, + 0x4b, 0x04, 0x2f, 0x03, 0x6d, 0x03, 0x1b, 0x05, 0x76, 0x05, 0x05, 0x05, 0x19, 0x03, 0x25, 0x00, + 0x84, 0xfe, 0x0f, 0xfe, 0x99, 0xfd, 0xad, 0xfe, 0x72, 0xff, 0xf2, 0xfe, 0x91, 0xfe, 0xd5, 0xfc, + 0x1a, 0xfa, 0x87, 0xf9, 0x28, 0xf9, 0x2a, 0xf9, 0x2f, 0xf8, 0xc8, 0xf5, 0xc8, 0xf3, 0x74, 0xf1, + 0xa5, 0xef, 0x33, 0xef, 0x35, 0xef, 0x18, 0xee, 0x47, 0xed, 0xfe, 0xed, 0xe2, 0xed, 0xb9, 0xee, + 0x6c, 0xf0, 0x0f, 0xf2, 0xdf, 0xf3, 0xc8, 0xf4, 0xc7, 0xf6, 0x0a, 0xfa, 0xe9, 0xfc, 0x1d, 0xff, + 0x08, 0x01, 0x82, 0x01, 0x17, 0x02, 0xf9, 0x02, 0x59, 0x04, 0xc6, 0x06, 0x93, 0x08, 0x57, 0x09, + 0xb3, 0x09, 0xb6, 0x09, 0x33, 0x0a, 0x99, 0x0c, 0xb5, 0x0d, 0x66, 0x0c, 0xe2, 0x09, 0x2f, 0x04, + 0xac, 0xfe, 0x2a, 0xfb, 0x17, 0xf8, 0xb1, 0xf5, 0xf7, 0xf4, 0xee, 0xf4, 0x85, 0xf5, 0xf8, 0xf5, + 0x14, 0xf5, 0x4e, 0xf6, 0x8b, 0xf8, 0x49, 0xfb, 0xf6, 0xfe, 0x74, 0x01, 0xa9, 0x03, 0x63, 0x06, + 0xb4, 0x08, 0x08, 0x0b, 0x53, 0x0c, 0xbf, 0x0c, 0xc5, 0x0c, 0x9b, 0x0d, 0x00, 0x0f, 0xed, 0x10, + 0xe8, 0x10, 0x4e, 0x10, 0x06, 0x10, 0xfc, 0x10, 0xbe, 0x10, 0xea, 0x0f, 0x43, 0x0e, 0x0a, 0x0b, + 0x68, 0x08, 0xa7, 0x05, 0x63, 0x04, 0xa2, 0x04, 0x07, 0x03, 0xbc, 0x00, 0x5e, 0xfe, 0x4a, 0xfb, + 0xad, 0xf9, 0xda, 0xf8, 0x9e, 0xf8, 0x59, 0xfa, 0xc9, 0xfa, 0xb5, 0xf9, 0xb6, 0xf8, 0x5f, 0xf7, + 0x20, 0xf6, 0x70, 0xf7, 0xcf, 0xf7, 0xd9, 0xf7, 0x82, 0xf8, 0xe0, 0xf8, 0xb6, 0xf9, 0x45, 0xfc, + 0x5b, 0xfd, 0xf0, 0xfc, 0xd1, 0xfc, 0x94, 0xfc, 0xf9, 0xfc, 0xcc, 0xfd, 0xfc, 0xfe, 0x46, 0xff, + 0xea, 0xfe, 0xd7, 0xfd, 0xd3, 0xfc, 0x0f, 0xfc, 0xa6, 0xfb, 0x6d, 0xfc, 0x99, 0xfc, 0x49, 0xfc, + 0x19, 0xfb, 0xe9, 0xf8, 0x00, 0xf8, 0xf7, 0xf8, 0xaa, 0xfa, 0xff, 0xfb, 0x89, 0xfd, 0xf7, 0xfd, + 0xbc, 0xfe, 0x67, 0x00, 0xfd, 0x00, 0xe4, 0x01, 0xa8, 0x02, 0x80, 0x02, 0x7f, 0x03, 0x66, 0x04, + 0x64, 0x04, 0x2f, 0x05, 0xc0, 0x05, 0x28, 0x07, 0x74, 0x09, 0x38, 0x09, 0xf7, 0x08, 0xad, 0x08, + 0x65, 0x06, 0x52, 0x05, 0xce, 0x03, 0x1a, 0x03, 0x44, 0x04, 0xe1, 0x04, 0x50, 0x04, 0xb2, 0x04, + 0xe9, 0x03, 0x50, 0x01, 0x02, 0xff, 0x07, 0xfd, 0xb4, 0xfb, 0x84, 0xfb, 0x70, 0xfc, 0xa8, 0xfc, + 0x85, 0xfb, 0xdc, 0xf9, 0x1a, 0xf7, 0x79, 0xf6, 0xa3, 0xf4, 0x6e, 0xf3, 0xcb, 0xf3, 0x23, 0xf4, + 0xb5, 0xf5, 0x2d, 0xf7, 0x22, 0xf9, 0x9b, 0xfb, 0xe9, 0xfc, 0x7d, 0xfd, 0x4f, 0xfe, 0x0b, 0xff, + 0x6d, 0x01, 0x4b, 0x05, 0x08, 0x09, 0xb0, 0x0d, 0x25, 0x11, 0x4a, 0x11, 0x30, 0x11, 0x1d, 0x11, + 0xc2, 0x10, 0x53, 0x11, 0x19, 0x12, 0xca, 0x12, 0xc8, 0x13, 0x19, 0x12, 0x3e, 0x0e, 0x8b, 0x0a, + 0xba, 0x05, 0x69, 0x02, 0xba, 0xff, 0x51, 0xfb, 0x1e, 0xf7, 0xfb, 0xf4, 0x18, 0xf3, 0x3e, 0xf3, + 0xf3, 0xf3, 0x0b, 0xf4, 0xa4, 0xf4, 0x71, 0xf4, 0xed, 0xf4, 0xa4, 0xf5, 0x06, 0xf7, 0x05, 0xf8, + 0xd1, 0xf9, 0x30, 0xfb, 0x46, 0xfa, 0x68, 0xfb, 0x97, 0xfd, 0xa1, 0xfe, 0x2f, 0x01, 0xc6, 0x02, + 0xfc, 0x02, 0x04, 0x03, 0xd3, 0x00, 0xd3, 0x00, 0xd2, 0x01, 0x86, 0x01, 0x0d, 0x02, 0x8b, 0x01, + 0x1a, 0x00, 0xeb, 0xfe, 0x84, 0xfc, 0x54, 0xfa, 0xb0, 0xf8, 0x5f, 0xf6, 0x37, 0xf5, 0x12, 0xf5, + 0x2b, 0xf4, 0xdd, 0xf3, 0x91, 0xf3, 0xbe, 0xf5, 0x18, 0xfa, 0xef, 0xfc, 0xed, 0xfd, 0xc1, 0xfd, + 0x54, 0xfc, 0x45, 0xfc, 0x36, 0xfe, 0xac, 0x00, 0x45, 0x01, 0x8e, 0x01, 0x93, 0x02, 0x14, 0x03, + 0xfc, 0x05, 0xc6, 0x06, 0xe6, 0x06, 0x90, 0x07, 0x4b, 0x09, 0x60, 0x0b, 0xf5, 0x0b, 0xf7, 0x0c, + 0x0d, 0x0f, 0xcb, 0x10, 0x47, 0x0f, 0x55, 0x0e, 0x81, 0x0e, 0xfc, 0x0c, 0xbf, 0x0b, 0xf6, 0x0a, + 0x50, 0x09, 0x09, 0x09, 0x35, 0x08, 0xac, 0x06, 0x73, 0x05, 0x60, 0x02, 0x32, 0x00, 0xef, 0xff, + 0x35, 0x00, 0x28, 0x02, 0x48, 0x05, 0x93, 0x06, 0x0e, 0x08, 0x4f, 0x07, 0x68, 0x05, 0xec, 0x03, + 0xf5, 0x01, 0xa9, 0x01, 0xe1, 0x01, 0x27, 0x03, 0xf8, 0x03, 0x4d, 0x04, 0x0e, 0x03, 0xd7, 0x01, + 0x06, 0x01, 0xfe, 0xff, 0x0b, 0xff, 0xe2, 0xfe, 0x0e, 0xfd, 0xdb, 0xfb, 0x08, 0xfd, 0x60, 0xfd, + 0x07, 0xfe, 0xa6, 0xfd, 0x68, 0xfb, 0x63, 0xf8, 0x0e, 0xf6, 0x51, 0xf5, 0xdb, 0xf3, 0xc7, 0xf2, + 0xb1, 0xf0, 0xcc, 0xee, 0x20, 0xea, 0x6c, 0xe8, 0xb4, 0xe9, 0x7c, 0xe9, 0xd1, 0xe8, 0x47, 0xe9, + 0xb0, 0xe8, 0xa1, 0xe8, 0xd8, 0xe8, 0xe5, 0xea, 0x77, 0xee, 0x57, 0xf1, 0xce, 0xf2, 0xbe, 0xf5, + 0x63, 0xf7, 0x1f, 0xf7, 0x7c, 0xf9, 0xae, 0xfc, 0x8d, 0x00, 0xd8, 0x04, 0x94, 0x05, 0x57, 0x05, + 0x20, 0x06, 0x5a, 0x06, 0x63, 0x06, 0x9f, 0x0a, 0x95, 0x0c, 0x33, 0x0e, 0xcf, 0x0e, 0xe2, 0x0a, + 0x70, 0x07, 0x36, 0x05, 0x78, 0x02, 0xef, 0xfe, 0xe6, 0xfd, 0xab, 0xfa, 0x4c, 0xf8, 0xb0, 0xf8, + 0x74, 0xf8, 0x2a, 0xf9, 0x1b, 0xfa, 0x73, 0xfa, 0x72, 0xfb, 0x48, 0xfe, 0x3a, 0x02, 0x86, 0x05, + 0x47, 0x0a, 0x78, 0x0c, 0x2f, 0x0c, 0xa8, 0x0d, 0xcd, 0x0e, 0xde, 0x0d, 0x81, 0x0e, 0x71, 0x11, + 0x7d, 0x12, 0x10, 0x14, 0x0f, 0x15, 0x3a, 0x12, 0x17, 0x13, 0x0a, 0x14, 0x89, 0x12, 0xc7, 0x12, + 0x91, 0x11, 0xd9, 0x0f, 0x57, 0x0f, 0xec, 0x0d, 0xaf, 0x0b, 0xcb, 0x09, 0xef, 0x08, 0xb7, 0x06, + 0x84, 0x03, 0xcb, 0x02, 0xb4, 0xff, 0x03, 0xff, 0xab, 0x00, 0xe4, 0x02, 0x87, 0x02, 0xe9, 0x00, + 0xac, 0xfe, 0xc3, 0xfd, 0x95, 0xfc, 0x74, 0xfc, 0xcf, 0xfd, 0xd1, 0xfd, 0xab, 0xfd, 0xd0, 0xfd, + 0x06, 0xfe, 0x0a, 0xfe, 0xa6, 0xfd, 0xda, 0xfc, 0x4b, 0xfb, 0xe5, 0xfa, 0x50, 0xfb, 0xc0, 0xfb, + 0xd7, 0xfa, 0x0a, 0xfb, 0x4b, 0xfb, 0x3f, 0xfa, 0x5d, 0xfa, 0xb3, 0xfb, 0xf1, 0xfb, 0x91, 0xfb, + 0xc9, 0xf9, 0x68, 0xf8, 0x66, 0xf7, 0xcb, 0xf5, 0xe6, 0xf5, 0x75, 0xf6, 0x50, 0xf5, 0x66, 0xf3, + 0xea, 0xf3, 0xcf, 0xf3, 0xa7, 0xf4, 0x76, 0xf6, 0xa3, 0xf6, 0xb8, 0xf7, 0xa9, 0xf7, 0xa1, 0xf7, + 0x25, 0xf9, 0x7a, 0xf9, 0x71, 0xf8, 0xb9, 0xf8, 0x68, 0xfa, 0x57, 0xfd, 0x37, 0x00, 0x84, 0x01, + 0xb1, 0x01, 0x1e, 0x01, 0xc5, 0xff, 0x4c, 0xff, 0xcb, 0xff, 0xea, 0xff, 0xc4, 0x01, 0x80, 0x03, + 0x3a, 0x05, 0xc8, 0x06, 0xed, 0x05, 0x03, 0x05, 0x6e, 0x03, 0x84, 0x01, 0x2e, 0x01, 0xd7, 0x01, + 0xc8, 0x02, 0x7b, 0x03, 0x37, 0x02, 0xf5, 0xfe, 0xba, 0xfa, 0x6d, 0xf9, 0x1e, 0xf8, 0x1f, 0xf8, + 0xd5, 0xf8, 0x4a, 0xf8, 0x0b, 0xf8, 0x2e, 0xf9, 0xe0, 0xf9, 0x82, 0xfb, 0x11, 0xfd, 0x6d, 0xfc, + 0x24, 0xfd, 0x4a, 0xfe, 0xbf, 0x00, 0x75, 0x04, 0x21, 0x08, 0xcb, 0x0a, 0x16, 0x0b, 0xe2, 0x0b, + 0x49, 0x0a, 0xf5, 0x0a, 0x80, 0x0c, 0xe9, 0x0c, 0xb5, 0x0c, 0x51, 0x0c, 0x9b, 0x0c, 0x16, 0x0b, + 0xb9, 0x08, 0x58, 0x06, 0xc5, 0x02, 0x28, 0xfe, 0xa2, 0xfa, 0xfa, 0xf5, 0x47, 0xf1, 0x27, 0xef, + 0x49, 0xed, 0xe7, 0xed, 0x3c, 0xf0, 0xf4, 0xef, 0x4a, 0xf1, 0x2f, 0xf3, 0x98, 0xf3, 0x29, 0xf5, + 0x5f, 0xf7, 0x61, 0xf9, 0xf6, 0xfb, 0x0b, 0xff, 0xfc, 0xff, 0x53, 0x00, 0xa1, 0x02, 0x40, 0x05, + 0xbe, 0x06, 0xbf, 0x08, 0xf4, 0x09, 0x51, 0x08, 0x11, 0x08, 0xef, 0x08, 0x35, 0x09, 0x2e, 0x08, + 0x61, 0x08, 0x97, 0x08, 0xaf, 0x07, 0xbf, 0x07, 0x25, 0x06, 0x1b, 0x05, 0x1b, 0x05, 0xb0, 0x02, + 0x5c, 0x00, 0xe9, 0xfe, 0xae, 0xfc, 0x62, 0xfb, 0xaf, 0xfb, 0x4b, 0xfd, 0x32, 0xff, 0x87, 0x01, + 0x9e, 0x01, 0xa3, 0xff, 0x9b, 0xff, 0x0f, 0x00, 0xed, 0xff, 0x38, 0x01, 0xed, 0x00, 0x9f, 0x00, + 0xe4, 0xff, 0x11, 0x00, 0x8c, 0x00, 0xe1, 0xfe, 0x81, 0x01, 0xf1, 0x00, 0x3a, 0x02, 0xb3, 0x05, + 0x69, 0x06, 0x34, 0x07, 0xea, 0x08, 0x68, 0x0b, 0xe0, 0x0a, 0xf1, 0x08, 0x83, 0x08, 0xd2, 0x08, + 0x59, 0x09, 0x99, 0x0a, 0x88, 0x0b, 0xe6, 0x08, 0x2f, 0x09, 0xfc, 0x06, 0x3a, 0x05, 0x66, 0x03, + 0xaa, 0xff, 0x04, 0x01, 0xa5, 0x01, 0x79, 0x03, 0x94, 0x05, 0x2c, 0x06, 0xfd, 0x04, 0x01, 0x03, + 0x11, 0x04, 0x1f, 0x03, 0x37, 0x02, 0x1a, 0x00, 0x43, 0xff, 0x2c, 0xff, 0xb7, 0xff, 0x20, 0x02, + 0x48, 0x03, 0xb7, 0x03, 0xec, 0x01, 0x2c, 0x01, 0x2a, 0xff, 0xa3, 0xfe, 0x5a, 0xfd, 0xf3, 0xfc, + 0xec, 0xff, 0xa2, 0xfe, 0xb6, 0xfe, 0xab, 0xff, 0x4e, 0xfd, 0xe9, 0xfb, 0x38, 0xfb, 0x07, 0xf8, + 0x00, 0xf5, 0x3c, 0xf4, 0xbe, 0xf1, 0x88, 0xf0, 0xec, 0xef, 0x5c, 0xee, 0x61, 0xed, 0xd6, 0xec, + 0xd8, 0xeb, 0x5a, 0xec, 0xfd, 0xec, 0x1c, 0xed, 0x2e, 0xee, 0xce, 0xf0, 0xe1, 0xf2, 0x12, 0xf5, + 0xad, 0xf6, 0x76, 0xf8, 0x71, 0xf9, 0x5b, 0xfb, 0xee, 0xff, 0x0b, 0x03, 0x6f, 0x05, 0x91, 0x09, + 0x78, 0x0a, 0x7f, 0x0a, 0x63, 0x0b, 0xa5, 0x0c, 0xa8, 0x0e, 0x99, 0x11, 0xa6, 0x13, 0x43, 0x13, + 0x8e, 0x12, 0x9b, 0x0f, 0x14, 0x0c, 0x7f, 0x09, 0xb2, 0x05, 0xf3, 0x01, 0x02, 0xff, 0xd3, 0xfb, + 0xe7, 0xf7, 0x9f, 0xf6, 0x6d, 0xf4, 0xa5, 0xf2, 0xcc, 0xf3, 0xea, 0xf3, 0x56, 0xf7, 0x66, 0xf9, + 0xee, 0xfa, 0xc7, 0xfe, 0xd1, 0xff, 0x4d, 0x02, 0x5a, 0x04, 0x5d, 0x03, 0x30, 0x04, 0x50, 0x04, + 0x5c, 0x05, 0x4b, 0x08, 0xa6, 0x08, 0xfe, 0x06, 0x3b, 0x07, 0xe0, 0x05, 0x88, 0x04, 0x48, 0x05, + 0x41, 0x04, 0xe2, 0x04, 0xc0, 0x05, 0x77, 0x05, 0x7e, 0x04, 0xf0, 0x04, 0xad, 0x04, 0xb6, 0x02, + 0xf9, 0x00, 0x59, 0xff, 0xa1, 0xfd, 0xcd, 0xfb, 0xc8, 0xfa, 0x13, 0xfb, 0xbf, 0xfc, 0x80, 0xff, + 0xf5, 0x00, 0x50, 0x01, 0xac, 0x01, 0x39, 0x00, 0x1d, 0xff, 0x45, 0xff, 0xe1, 0xff, 0x87, 0xff, + 0x44, 0x00, 0xa3, 0xff, 0x53, 0xff, 0xb9, 0xff, 0x96, 0xff, 0x43, 0xff, 0x39, 0x00, 0xa3, 0x02, + 0x32, 0x01, 0x4a, 0x00, 0x4b, 0x00, 0xcc, 0x00, 0x5d, 0x02, 0xbd, 0x02, 0xfa, 0x01, 0x41, 0x02, + 0x1a, 0x03, 0x3a, 0x02, 0x5a, 0x01, 0x9e, 0x00, 0xd3, 0xff, 0x42, 0xfe, 0x55, 0xfd, 0x83, 0xfc, + 0x40, 0xfa, 0xeb, 0xf7, 0xfe, 0xf6, 0xc6, 0xf6, 0x6f, 0xf7, 0x2a, 0xf8, 0x32, 0xf9, 0x0d, 0xfa, + 0x8d, 0xf9, 0x0e, 0xf8, 0xea, 0xf5, 0xc6, 0xf4, 0x73, 0xf4, 0x0d, 0xf5, 0xb0, 0xf7, 0x06, 0xfa, + 0x7d, 0xfd, 0xad, 0xff, 0xdf, 0xfd, 0x72, 0xfe, 0x7b, 0xfe, 0x20, 0xfe, 0x68, 0xfe, 0x16, 0xfe, + 0x69, 0x00, 0xd2, 0x01, 0x2b, 0x04, 0xd0, 0x04, 0x4e, 0x04, 0x02, 0x04, 0x2e, 0x03, 0x8e, 0x03, + 0xa0, 0x03, 0x95, 0x02, 0x20, 0x00, 0x5c, 0xfe, 0xcf, 0xfd, 0xec, 0xfb, 0x06, 0xf8, 0x2b, 0xf6, + 0x71, 0xf6, 0xe0, 0xf7, 0xf5, 0xf9, 0xda, 0xf9, 0xfd, 0xf8, 0x61, 0xf9, 0x3f, 0xf9, 0x3d, 0xfb, + 0xaa, 0xfd, 0xad, 0xfd, 0xb7, 0xff, 0x8c, 0x00, 0xcc, 0x02, 0xe9, 0x05, 0xb4, 0x08, 0x8f, 0x0b, + 0xc0, 0x0d, 0x07, 0x10, 0xe3, 0x10, 0xd3, 0x10, 0xa4, 0x10, 0x7c, 0x11, 0xf9, 0x10, 0x4a, 0x11, + 0x72, 0x11, 0x1f, 0x12, 0x75, 0x11, 0x76, 0x0d, 0xef, 0x09, 0x1e, 0x05, 0x58, 0x02, 0xc8, 0xfe, + 0xdd, 0xfa, 0xcc, 0xf9, 0xdb, 0xf6, 0x83, 0xf4, 0xca, 0xf5, 0x88, 0xf6, 0x91, 0xf7, 0x7a, 0xf7, + 0x53, 0xf7, 0x25, 0xf8, 0xb1, 0xf9, 0xe5, 0xfb, 0x0b, 0xfe, 0x5f, 0x00, 0x7b, 0x00, 0x7a, 0xff, + 0xa4, 0x00, 0xa6, 0x03, 0x65, 0x04, 0x6d, 0x04, 0xac, 0x03, 0xd6, 0x04, 0x0f, 0x05, 0x1d, 0x03, + 0x69, 0x02, 0x30, 0x01, 0xc6, 0x00, 0xfb, 0x00, 0x11, 0x01, 0x03, 0x02, 0xba, 0x01, 0x51, 0xff, + 0x68, 0xfd, 0x38, 0xfb, 0x56, 0xfa, 0xde, 0xf8, 0x18, 0xf6, 0xfa, 0xf4, 0x1b, 0xf6, 0xe0, 0xf7, + 0xcf, 0xf8, 0x8b, 0xfa, 0xbf, 0xfa, 0x69, 0xf9, 0xe2, 0xf8, 0x5f, 0xf9, 0xcd, 0xf9, 0x1d, 0xfb, + 0x13, 0xfb, 0x7b, 0xfb, 0xb7, 0xfd, 0xa3, 0xfd, 0xf0, 0xfb, 0xcf, 0xfa, 0x93, 0xfa, 0x07, 0xfd, + 0x88, 0xff, 0x2a, 0x02, 0xf9, 0x05, 0x12, 0x07, 0x62, 0x09, 0xf5, 0x0a, 0x90, 0x0a, 0xb2, 0x0b, + 0x5e, 0x0c, 0xb3, 0x0c, 0xc8, 0x0c, 0xe3, 0x0c, 0xa8, 0x0c, 0x13, 0x0c, 0x8d, 0x0b, 0x02, 0x0a, + 0xbd, 0x08, 0x26, 0x08, 0xc2, 0x06, 0xfb, 0x05, 0x28, 0x04, 0xc4, 0x03, 0x25, 0x05, 0x8f, 0x06, + 0x76, 0x06, 0xd2, 0x05, 0x6d, 0x04, 0x5d, 0x03, 0x2c, 0x02, 0xbb, 0x01, 0x56, 0x02, 0x15, 0x02, + 0x1b, 0x04, 0x74, 0x05, 0x5a, 0x05, 0x13, 0x04, 0x3f, 0x03, 0x3d, 0x02, 0x22, 0x00, 0xb6, 0xff, + 0x4e, 0xfd, 0x4b, 0xfe, 0x68, 0x00, 0x7f, 0x01, 0x1c, 0x01, 0xe6, 0x00, 0x9a, 0x00, 0x03, 0xff, + 0x22, 0xfd, 0x4a, 0xf8, 0x46, 0xf6, 0x34, 0xf5, 0xb0, 0xf2, 0x00, 0xf4, 0xeb, 0xf0, 0xd4, 0xec, + 0x39, 0xeb, 0x12, 0xeb, 0x75, 0xec, 0x26, 0xed, 0x4e, 0xed, 0xf0, 0xed, 0x2c, 0xef, 0x47, 0xef, + 0x5e, 0xf1, 0xd0, 0xf2, 0xbb, 0xf3, 0x6d, 0xf6, 0xb1, 0xf6, 0x66, 0xf9, 0x09, 0xfc, 0x68, 0xfe, + 0x91, 0x00, 0x8b, 0x02, 0xe4, 0x03, 0x45, 0x06, 0x63, 0x08, 0xb8, 0x07, 0xb4, 0x08, 0x1d, 0x0a, + 0xc2, 0x0b, 0xd4, 0x0c, 0xc0, 0x0b, 0xf5, 0x08, 0x0a, 0x06, 0xe7, 0x02, 0x49, 0x02, 0x53, 0xff, + 0x8c, 0xfc, 0xe1, 0xfb, 0xe0, 0xf7, 0x7e, 0xf4, 0x05, 0xf2, 0xe6, 0xf0, 0xb7, 0xf0, 0x21, 0xf2, + 0x36, 0xf4, 0x7f, 0xf7, 0xf0, 0xf8, 0xe7, 0xf9, 0x93, 0xfc, 0xc1, 0xfd, 0x57, 0x00, 0x18, 0x01, + 0xbe, 0x02, 0x8e, 0x05, 0xe2, 0x05, 0x90, 0x07, 0x30, 0x08, 0x51, 0x08, 0xe7, 0x0a, 0xbc, 0x09, + 0x21, 0x08, 0xfe, 0x06, 0xee, 0x07, 0x70, 0x08, 0x42, 0x0a, 0xfe, 0x0b, 0x3e, 0x0d, 0xba, 0x0d, + 0x52, 0x0d, 0xd2, 0x0c, 0xf7, 0x0a, 0xd3, 0x08, 0x02, 0x06, 0x43, 0x05, 0x55, 0x04, 0x51, 0x04, + 0xe3, 0x04, 0x07, 0x05, 0x77, 0x07, 0x04, 0x07, 0x24, 0x08, 0xc8, 0x08, 0xb2, 0x06, 0x99, 0x05, + 0xee, 0x03, 0xb0, 0x03, 0xaf, 0x05, 0xaa, 0x05, 0xb3, 0x04, 0x36, 0x03, 0xcb, 0x02, 0xf2, 0x02, + 0xd6, 0x02, 0x35, 0x03, 0xea, 0x03, 0xb7, 0x03, 0x78, 0x04, 0x94, 0x05, 0x01, 0x06, 0x34, 0x06, + 0xdc, 0x03, 0xd0, 0x03, 0xcf, 0x04, 0x4e, 0x05, 0xdd, 0x05, 0x4f, 0x05, 0x1a, 0x04, 0x63, 0x01, + 0x02, 0xfe, 0x56, 0xfd, 0x61, 0xfc, 0xb9, 0xf8, 0x6b, 0xf5, 0x30, 0xf3, 0x89, 0xf4, 0xa7, 0xf6, + 0x88, 0xf7, 0x69, 0xf7, 0xb6, 0xf5, 0xf5, 0xf3, 0xbf, 0xf3, 0x30, 0xf4, 0x0c, 0xf5, 0x7f, 0xf6, + 0x26, 0xf8, 0xee, 0xf8, 0xc5, 0xf9, 0x85, 0xfa, 0xe9, 0xf9, 0x1e, 0xfa, 0x01, 0xfb, 0x20, 0xfc, + 0x36, 0xfc, 0x90, 0xfc, 0x67, 0xfe, 0x32, 0xff, 0x85, 0xfe, 0xc3, 0xff, 0x2a, 0x01, 0xfa, 0x01, + 0x0c, 0x02, 0x62, 0x00, 0x19, 0x00, 0x13, 0xfe, 0x38, 0xfc, 0x37, 0xfb, 0x9c, 0xf9, 0x84, 0xf7, + 0xaf, 0xf4, 0x5b, 0xf3, 0x96, 0xf3, 0xb9, 0xf4, 0xfb, 0xf4, 0x00, 0xf5, 0xf9, 0xf5, 0x28, 0xf6, + 0xf4, 0xf4, 0x2f, 0xf6, 0x3b, 0xf9, 0x41, 0xfa, 0x57, 0xfc, 0xc8, 0xfd, 0xdb, 0xff, 0xc6, 0x02, + 0xf9, 0x03, 0x01, 0x06, 0xd1, 0x08, 0x27, 0x0b, 0xf4, 0x0d, 0xac, 0x0e, 0x20, 0x0e, 0xee, 0x0d, + 0x8f, 0x0f, 0x6d, 0x11, 0xd6, 0x12, 0x03, 0x12, 0xee, 0x0f, 0xa0, 0x0e, 0xcc, 0x0b, 0xdb, 0x09, + 0x0d, 0x06, 0xea, 0x02, 0x1c, 0x01, 0x39, 0x00, 0xfb, 0xfd, 0xbc, 0xfa, 0x73, 0xf9, 0x6e, 0xf8, + 0xbd, 0xf8, 0xda, 0xf8, 0x1c, 0xf9, 0x78, 0xfa, 0x48, 0xfb, 0x79, 0xfc, 0xa5, 0xfe, 0x00, 0x00, + 0x7b, 0x01, 0x0e, 0x01, 0x94, 0x01, 0xaf, 0x03, 0x26, 0x04, 0xb4, 0x03, 0xc7, 0x03, 0xcd, 0x03, + 0xa6, 0x02, 0x60, 0x00, 0x6e, 0xfe, 0xb3, 0xfe, 0x5d, 0xff, 0x23, 0xff, 0x9e, 0xff, 0x7c, 0x01, + 0xdb, 0x00, 0xf1, 0xfd, 0xdf, 0xfb, 0x05, 0xf9, 0x5e, 0xf7, 0x7b, 0xf7, 0x18, 0xf7, 0xe5, 0xf7, + 0x0b, 0xf8, 0x8f, 0xf6, 0x8d, 0xf5, 0xe0, 0xf5, 0x36, 0xf6, 0xd4, 0xf6, 0x58, 0xf6, 0xb3, 0xf6, + 0x66, 0xf7, 0x56, 0xf7, 0xfc, 0xf8, 0x12, 0xfa, 0xf6, 0xf9, 0xdf, 0xf8, 0x2a, 0xf8, 0x1d, 0xf9, + 0x55, 0xfb, 0xdc, 0xfd, 0x08, 0xff, 0x49, 0x01, 0x59, 0x04, 0x04, 0x07, 0x32, 0x09, 0x59, 0x0b, + 0x19, 0x0c, 0x73, 0x0d, 0x82, 0x0e, 0xbf, 0x0f, 0xcf, 0x12, 0x1c, 0x12, 0x14, 0x11, 0xb6, 0x10, + 0x11, 0x11, 0x1d, 0x11, 0x86, 0x0f, 0x72, 0x0d, 0xf4, 0x0a, 0x0b, 0x09, 0x0b, 0x08, 0x30, 0x08, + 0xee, 0x07, 0x86, 0x08, 0x60, 0x08, 0xd3, 0x06, 0xf7, 0x05, 0x75, 0x05, 0x3e, 0x04, 0x4a, 0x02, + 0xba, 0x03, 0xa6, 0x05, 0xd5, 0x05, 0x73, 0x06, 0x8a, 0x05, 0x71, 0x05, 0x43, 0x04, 0xe1, 0x02, + 0xf1, 0x03, 0xf2, 0x02, 0xb2, 0x00, 0xd6, 0xff, 0x0a, 0x01, 0x23, 0x02, 0x3c, 0x03, 0x0d, 0x03, + 0x34, 0x02, 0xd3, 0x00, 0x63, 0xfe, 0x8a, 0xfc, 0x40, 0xfa, 0x18, 0xf7, 0xd3, 0xf3, 0xde, 0xf1, + 0x60, 0xf0, 0xb2, 0xee, 0xba, 0xed, 0xc2, 0xec, 0x3c, 0xee, 0xe9, 0xef, 0x14, 0xf0, 0x6e, 0xf1, + 0x1b, 0xf2, 0x7e, 0xf1, 0x9a, 0xf2, 0x77, 0xf2, 0x89, 0xf3, 0x2d, 0xf6, 0x9d, 0xf7, 0x4b, 0xfa, + 0x6f, 0xfc, 0x7c, 0xfe, 0x38, 0x01, 0x55, 0x03, 0x87, 0x05, 0xc9, 0x07, 0x14, 0x09, 0x80, 0x0a, + 0x20, 0x0b, 0x54, 0x0c, 0x64, 0x0c, 0xdd, 0x0a, 0xbf, 0x08, 0x78, 0x07, 0x0d, 0x08, 0x3e, 0x06, + 0xf3, 0x04, 0x78, 0x03, 0xcd, 0x00, 0x33, 0xfe, 0xe5, 0xfa, 0xc1, 0xf6, 0x05, 0xf4, 0x2d, 0xf2, + 0xe0, 0xf1, 0x46, 0xf4, 0xf1, 0xf5, 0x41, 0xf6, 0x03, 0xf6, 0x40, 0xf6, 0x80, 0xf7, 0x56, 0xf9, + 0x09, 0xfb, 0x67, 0xfc, 0x7c, 0xfd, 0xb7, 0xfd, 0xfc, 0xfe, 0x6e, 0x01, 0x04, 0x02, 0x0f, 0x02, + 0x1e, 0x02, 0xfd, 0x00, 0x39, 0x00, 0xf0, 0x00, 0x90, 0x00, 0xbc, 0x01, 0xe8, 0x02, 0x2e, 0x05, + 0x52, 0x08, 0x6e, 0x08, 0x19, 0x09, 0x6d, 0x08, 0xd2, 0x05, 0xe9, 0x04, 0xae, 0x03, 0x02, 0x03, + 0xe3, 0x02, 0xe9, 0x02, 0x78, 0x03, 0x2b, 0x04, 0x48, 0x04, 0x92, 0x04, 0x1e, 0x05, 0x41, 0x04, + 0xca, 0x03, 0xcf, 0x02, 0x6d, 0x01, 0x9b, 0x00, 0x14, 0x01, 0x76, 0x00, 0x89, 0xff, 0xa7, 0xff, + 0x0e, 0xfe, 0x89, 0xfe, 0x7b, 0xfe, 0x6c, 0xfe, 0x14, 0x01, 0x4f, 0x02, 0x03, 0x03, 0x5b, 0x03, + 0x77, 0x03, 0xdc, 0x03, 0x2f, 0x05, 0xe3, 0x05, 0x91, 0x06, 0xaf, 0x07, 0xe1, 0x06, 0x4b, 0x06, + 0x9f, 0x06, 0x4f, 0x06, 0xa3, 0x03, 0xc0, 0x00, 0x9f, 0xfd, 0xcf, 0xfb, 0x2e, 0xfa, 0xde, 0xf7, + 0xa1, 0xf6, 0x15, 0xf6, 0xe2, 0xf4, 0x6f, 0xf5, 0x95, 0xf5, 0x66, 0xf5, 0x16, 0xf6, 0x90, 0xf6, + 0x51, 0xf8, 0xe9, 0xf9, 0xb2, 0xfa, 0x04, 0xfb, 0x50, 0xfa, 0x10, 0xf9, 0xa0, 0xfa, 0x66, 0xfb, + 0x05, 0xfd, 0x59, 0xfe, 0xbe, 0xfd, 0xf6, 0xfd, 0xcc, 0xfe, 0x78, 0x00, 0x71, 0x01, 0x15, 0x02, + 0x8a, 0x02, 0x5a, 0x03, 0x1b, 0x04, 0x2a, 0x02, 0x33, 0x01, 0x84, 0xff, 0xda, 0xfb, 0x82, 0xfa, + 0x0f, 0xfa, 0xdf, 0xf8, 0x70, 0xf7, 0x4e, 0xf6, 0xc2, 0xf5, 0x69, 0xf7, 0xf5, 0xf7, 0x93, 0xf6, + 0xb2, 0xf6, 0x61, 0xf7, 0x88, 0xf7, 0x97, 0xf8, 0xb5, 0xfa, 0xb2, 0xfc, 0x9f, 0xfd, 0xa2, 0xfe, + 0xd7, 0x00, 0x42, 0x03, 0xe4, 0x04, 0xc6, 0x06, 0x4c, 0x08, 0x26, 0x09, 0xf8, 0x0a, 0xdd, 0x0c, + 0x76, 0x0d, 0xaf, 0x0e, 0x0c, 0x10, 0xc0, 0x0f, 0x94, 0x10, 0x10, 0x10, 0xb7, 0x10, 0xc1, 0x0e, + 0x12, 0x0b, 0x74, 0x0a, 0x1c, 0x09, 0xe2, 0x06, 0xa7, 0x05, 0x3a, 0x04, 0x84, 0x00, 0xaf, 0xfd, + 0x9e, 0xfb, 0x6c, 0xfb, 0x92, 0xfc, 0x01, 0xfc, 0xd7, 0xfb, 0x70, 0xfc, 0x27, 0xfd, 0x64, 0xfd, + 0xc6, 0xfd, 0x28, 0xfe, 0xb2, 0xff, 0x2e, 0x01, 0x71, 0x01, 0xe8, 0x03, 0xd6, 0x04, 0xbe, 0x02, + 0x5d, 0x01, 0x02, 0x01, 0x7c, 0x00, 0xb9, 0xff, 0x93, 0xfe, 0xa3, 0xfd, 0xb7, 0xfe, 0xa9, 0xff, + 0xd0, 0x00, 0x93, 0x01, 0x39, 0x00, 0x6a, 0xfe, 0xf8, 0xfc, 0x7b, 0xfc, 0xf8, 0xfb, 0xb4, 0xfb, + 0xbb, 0xfa, 0xb6, 0xf9, 0x72, 0xf9, 0x04, 0xf8, 0x7d, 0xf7, 0x80, 0xf6, 0xd7, 0xf5, 0x15, 0xf7, + 0x44, 0xf7, 0xd4, 0xf7, 0x54, 0xf8, 0x50, 0xf7, 0xcf, 0xf6, 0x3c, 0xf6, 0xf2, 0xf5, 0xd0, 0xf7, + 0xa4, 0xf9, 0x46, 0xfa, 0x6f, 0xfc, 0x88, 0xfd, 0x42, 0xff, 0x06, 0x03, 0xf9, 0x05, 0x08, 0x08, + 0x2d, 0x09, 0x46, 0x0b, 0xf7, 0x0c, 0x27, 0x0f, 0xa5, 0x10, 0x5b, 0x11, 0xa5, 0x13, 0x7e, 0x14, + 0x80, 0x14, 0xd1, 0x14, 0x87, 0x14, 0x0e, 0x14, 0x8e, 0x11, 0xac, 0x0e, 0x1a, 0x0d, 0x46, 0x0a, + 0xa0, 0x07, 0x65, 0x06, 0x1c, 0x05, 0x65, 0x04, 0x03, 0x05, 0xc9, 0x03, 0x1f, 0x02, 0xbb, 0x00, + 0xfe, 0xff, 0x20, 0x00, 0x70, 0x01, 0x44, 0x02, 0x61, 0x02, 0x99, 0x01, 0x36, 0x01, 0x9e, 0x02, + 0x39, 0x02, 0xc0, 0x00, 0x01, 0x00, 0x12, 0xff, 0x6a, 0xfd, 0xf5, 0xfd, 0x89, 0xfd, 0x9a, 0xfc, + 0x8e, 0xfd, 0x00, 0xfe, 0xfc, 0xfe, 0xe2, 0xfe, 0xe3, 0xfc, 0xcf, 0xfa, 0x43, 0xf7, 0x7c, 0xf4, + 0xf9, 0xf1, 0xff, 0xef, 0x77, 0xee, 0x49, 0xed, 0xeb, 0xec, 0x3f, 0xed, 0x26, 0xef, 0xc9, 0xf0, + 0x00, 0xf1, 0x40, 0xf1, 0x45, 0xf2, 0xee, 0xf1, 0x72, 0xf2, 0xbc, 0xf2, 0x8d, 0xf3, 0x9c, 0xf5, + 0x79, 0xf7, 0xc1, 0xf9, 0xa4, 0xfa, 0x0e, 0xfb, 0x2d, 0xfd, 0x50, 0xff, 0xe4, 0x01, 0x3a, 0x05, + 0x26, 0x08, 0xec, 0x08, 0x4c, 0x09, 0x1a, 0x08, 0x87, 0x06, 0xd9, 0x05, 0x8c, 0x04, 0xc9, 0x05, + 0x79, 0x06, 0x66, 0x06, 0xf8, 0x05, 0x19, 0x04, 0x1a, 0x01, 0x57, 0xfe, 0x77, 0xfc, 0x85, 0xf9, + 0x13, 0xf8, 0x45, 0xf7, 0x9a, 0xf5, 0x44, 0xf6, 0x6f, 0xf6, 0xa5, 0xf7, 0x3b, 0xf9, 0x74, 0xf9, + 0x50, 0xf9, 0x1a, 0xf9, 0xd1, 0xfa, 0xf8, 0xfc, 0xf5, 0xfe, 0x15, 0x00, 0x0a, 0x01, 0x23, 0x01, + 0x8c, 0x00, 0xc5, 0x00, 0x3f, 0x02, 0x5c, 0x02, 0xdd, 0x01, 0x53, 0x02, 0x11, 0x03, 0x5e, 0x05, + 0x1e, 0x08, 0xb8, 0x09, 0xb2, 0x0b, 0x95, 0x0b, 0x54, 0x0c, 0xcd, 0x0c, 0xdd, 0x0a, 0xbf, 0x08, + 0x9d, 0x06, 0x81, 0x06, 0xd7, 0x07, 0x05, 0x08, 0x65, 0x07, 0xaa, 0x07, 0x0f, 0x06, 0x42, 0x05, + 0x84, 0x06, 0xac, 0x05, 0x41, 0x04, 0xaa, 0x02, 0x69, 0x00, 0xed, 0xfe, 0x98, 0xfe, 0x11, 0xfe, + 0x45, 0xfe, 0xd8, 0xfe, 0x23, 0xfe, 0x3d, 0xfe, 0x46, 0xfe, 0x50, 0xfe, 0x5e, 0xfe, 0x58, 0xff, + 0xf8, 0x00, 0x3b, 0x03, 0xea, 0x04, 0x88, 0x05, 0x6e, 0x06, 0x51, 0x06, 0x80, 0x07, 0x1a, 0x09, + 0xae, 0x09, 0xbb, 0x08, 0x49, 0x07, 0x51, 0x06, 0x03, 0x05, 0x84, 0x03, 0x7c, 0x02, 0x2b, 0x01, + 0xe4, 0xfe, 0x66, 0xfb, 0xb2, 0xf8, 0x0e, 0xf7, 0x18, 0xf6, 0x50, 0xf7, 0xd4, 0xf8, 0x02, 0xf9, + 0x1a, 0xfa, 0x4b, 0xfb, 0xa4, 0xfc, 0xc0, 0xfd, 0xa8, 0xfc, 0x65, 0xfd, 0x1a, 0xfe, 0x5a, 0xff, + 0x65, 0x00, 0x8a, 0xff, 0xbf, 0xff, 0x93, 0x00, 0x6e, 0x01, 0x05, 0x02, 0x26, 0x03, 0xda, 0x02, + 0x02, 0x03, 0x5f, 0x05, 0xb7, 0x06, 0x1e, 0x08, 0xce, 0x07, 0xff, 0x05, 0xd2, 0x03, 0x15, 0x01, + 0x9b, 0xfe, 0xdc, 0xfb, 0xdf, 0xfa, 0xbd, 0xf9, 0x6e, 0xf9, 0x15, 0xf9, 0x1b, 0xf8, 0x09, 0xf8, + 0xf8, 0xf6, 0xf9, 0xf5, 0xf9, 0xf6, 0x69, 0xf8, 0xcb, 0xf8, 0x06, 0xf8, 0xb1, 0xf7, 0xce, 0xf8, + 0xc9, 0xfa, 0x00, 0xfd, 0xea, 0xfe, 0xcf, 0xff, 0x13, 0x00, 0xc5, 0x00, 0xc5, 0x01, 0xab, 0x02, + 0x89, 0x04, 0xde, 0x06, 0xe1, 0x07, 0xc3, 0x09, 0x88, 0x0a, 0xb9, 0x0a, 0xc1, 0x0b, 0xdb, 0x0a, + 0x29, 0x0c, 0xaf, 0x0c, 0x40, 0x0b, 0x6e, 0x0a, 0xf8, 0x08, 0x96, 0x06, 0x9b, 0x03, 0x94, 0x01, + 0x75, 0xff, 0x5c, 0xfd, 0x42, 0xfb, 0xe8, 0xf9, 0x30, 0xfa, 0x97, 0xf9, 0x4e, 0xfa, 0x66, 0xfa, + 0xc8, 0xf9, 0x33, 0xf9, 0x7c, 0xf8, 0x80, 0xf9, 0x1e, 0xfb, 0x8e, 0xfc, 0x2d, 0xfd, 0x64, 0xfd, + 0x63, 0xfd, 0xdd, 0xfb, 0x8d, 0xfa, 0xfd, 0xfa, 0xdc, 0xfa, 0x1c, 0xfb, 0xc6, 0xfa, 0xa3, 0xfa, + 0x38, 0xfb, 0x4b, 0xfa, 0x4d, 0xf9, 0x6a, 0xfa, 0x8c, 0xfb, 0x77, 0xfc, 0xbe, 0xfc, 0xa3, 0xfc, + 0x39, 0xfb, 0x22, 0xfa, 0x07, 0xf9, 0x41, 0xf8, 0xb5, 0xf7, 0x44, 0xf6, 0x02, 0xf5, 0xb0, 0xf3, + 0xf9, 0xf3, 0x56, 0xf5, 0x3c, 0xf6, 0x51, 0xf5, 0xe9, 0xf4, 0xc9, 0xf3, 0x99, 0xf2, 0x41, 0xf3, + 0x10, 0xf3, 0xf7, 0xf4, 0x0b, 0xf7, 0xeb, 0xf8, 0x34, 0xfb, 0x10, 0xfc, 0xf0, 0xfc, 0xff, 0xfd, + 0x9c, 0x01, 0xa8, 0x05, 0x99, 0x08, 0xca, 0x09, 0x65, 0x0b, 0xd4, 0x0d, 0x2a, 0x0f, 0xce, 0x10, + 0x1c, 0x13, 0xb4, 0x14, 0x7e, 0x14, 0x45, 0x15, 0xbc, 0x15, 0xf8, 0x14, 0xbe, 0x12, 0x4f, 0x10, + 0xb4, 0x0e, 0x34, 0x0d, 0x16, 0x0a, 0x05, 0x08, 0x00, 0x06, 0xd7, 0x04, 0x7d, 0x04, 0x29, 0x04, + 0x99, 0x03, 0x57, 0x03, 0xe4, 0x02, 0x1b, 0x02, 0xbb, 0x02, 0x87, 0x03, 0xf6, 0x04, 0x37, 0x05, + 0xc3, 0x04, 0xb9, 0x04, 0xa8, 0x04, 0xe9, 0x03, 0x84, 0x03, 0x3b, 0x04, 0x13, 0x03, 0x4c, 0x02, + 0xab, 0x01, 0xdb, 0x00, 0xcb, 0x02, 0x37, 0x03, 0x78, 0x03, 0xd9, 0x02, 0x99, 0x00, 0x12, 0xff, + 0x15, 0xfd, 0x5c, 0xfb, 0x64, 0xf8, 0xa8, 0xf6, 0xd8, 0xf5, 0x5a, 0xf6, 0x81, 0xf7, 0x3e, 0xf6, + 0x50, 0xf5, 0x64, 0xf5, 0x9c, 0xf5, 0x34, 0xf7, 0x2e, 0xf8, 0xd6, 0xf8, 0x0a, 0xf9, 0x2e, 0xf9, + 0xa9, 0xfa, 0x14, 0xfd, 0x16, 0xfe, 0x32, 0xfe, 0x57, 0xfe, 0x64, 0xff, 0x77, 0x01, 0xb0, 0x03, + 0x6c, 0x05, 0xc2, 0x07, 0xe1, 0x09, 0x1f, 0x0a, 0x63, 0x0a, 0xed, 0x09, 0x81, 0x09, 0xdb, 0x08, + 0x4b, 0x08, 0x5f, 0x09, 0xf7, 0x09, 0x15, 0x09, 0xc5, 0x06, 0xc4, 0x04, 0x21, 0x02, 0xcd, 0xff, + 0x3d, 0xff, 0x57, 0xfd, 0xca, 0xfb, 0x17, 0xfa, 0x77, 0xf8, 0x7f, 0xf7, 0x11, 0xf7, 0x89, 0xf6, + 0x9e, 0xf6, 0x05, 0xf6, 0xa0, 0xf5, 0xf1, 0xf6, 0x7b, 0xf7, 0x1d, 0xf9, 0x53, 0xfa, 0xa9, 0xfa, + 0xf9, 0xfa, 0xb8, 0xfb, 0x17, 0xfb, 0xae, 0xf9, 0x9c, 0xfa, 0x6f, 0xfb, 0x7c, 0xfc, 0x2a, 0xfe, + 0x1c, 0xff, 0x7f, 0x00, 0xd1, 0x01, 0xd3, 0x03, 0xfe, 0x05, 0xd4, 0x06, 0x52, 0x07, 0x5b, 0x07, + 0x59, 0x06, 0x20, 0x05, 0xde, 0x04, 0x1c, 0x04, 0xb1, 0x04, 0x98, 0x05, 0xa6, 0x05, 0xe5, 0x05, + 0x5e, 0x04, 0x9e, 0x03, 0x25, 0x03, 0x29, 0x02, 0x88, 0x00, 0x46, 0xff, 0x8e, 0xfd, 0xc0, 0xfb, + 0xa6, 0xfb, 0x21, 0xfb, 0xa6, 0xfb, 0x11, 0xfd, 0x29, 0xfd, 0x46, 0xfc, 0x21, 0xfb, 0x12, 0xfa, + 0x1d, 0xfa, 0x5e, 0xfc, 0xdd, 0xfd, 0x22, 0xff, 0x6f, 0x00, 0xb8, 0x01, 0x30, 0x04, 0x56, 0x05, + 0xbf, 0x05, 0xb2, 0x06, 0x4a, 0x06, 0x82, 0x05, 0x0f, 0x05, 0x29, 0x06, 0x75, 0x05, 0xad, 0x03, + 0x5e, 0x01, 0x27, 0xff, 0x1a, 0xfd, 0xeb, 0xf8, 0x22, 0xf6, 0xf6, 0xf4, 0xdc, 0xf4, 0x4b, 0xf6, + 0x8d, 0xf8, 0xe2, 0xf8, 0xe2, 0xf8, 0xd2, 0xf8, 0xb5, 0xf9, 0x96, 0xfb, 0xe9, 0xfc, 0xba, 0xfd, + 0x72, 0xfd, 0xff, 0xfd, 0x29, 0xff, 0xb4, 0xff, 0x10, 0xff, 0x2a, 0xff, 0x80, 0xff, 0xe5, 0xff, + 0x9c, 0x00, 0xb5, 0x00, 0xcf, 0x00, 0x31, 0x02, 0x57, 0x03, 0x0e, 0x04, 0x0a, 0x04, 0xcf, 0x02, + 0xc8, 0x00, 0x56, 0xff, 0x90, 0xfd, 0x50, 0xfb, 0x70, 0xfa, 0x06, 0xfa, 0xf4, 0xf9, 0xfc, 0xf8, + 0x65, 0xf6, 0x9a, 0xf5, 0xc5, 0xf6, 0x96, 0xf6, 0xaf, 0xf7, 0x71, 0xf8, 0xb4, 0xf8, 0x71, 0xf9, + 0xb4, 0xf9, 0xac, 0xfb, 0xf8, 0xfd, 0x6d, 0xff, 0x2e, 0x00, 0x6a, 0x01, 0x03, 0x03, 0xb7, 0x03, + 0xff, 0x04, 0xf1, 0x04, 0x61, 0x06, 0x7a, 0x09, 0x25, 0x0b, 0x1a, 0x0d, 0xb7, 0x0d, 0x91, 0x0e, + 0xaa, 0x0f, 0x4d, 0x11, 0x98, 0x13, 0xf8, 0x14, 0xaa, 0x14, 0x73, 0x13, 0xbc, 0x12, 0x76, 0x10, + 0x4f, 0x0e, 0xec, 0x0b, 0x58, 0x08, 0xd4, 0x06, 0x09, 0x05, 0xc1, 0x03, 0x7f, 0x02, 0x9f, 0x01, + 0x5d, 0x00, 0x90, 0xff, 0x98, 0xff, 0xa3, 0xfe, 0x14, 0xfe, 0x84, 0xfd, 0x43, 0xfe, 0x26, 0xff, + 0x3c, 0xfe, 0xdb, 0xfc, 0xa0, 0xfc, 0x5e, 0xfb, 0xc5, 0xfa, 0x29, 0xfc, 0xc9, 0xfd, 0x7f, 0xfe, + 0xd1, 0xfd, 0x99, 0xfb, 0x34, 0xfb, 0xfd, 0xfa, 0x68, 0xfb, 0xd7, 0xfc, 0x0b, 0xfe, 0x72, 0xff, + 0x4b, 0x00, 0x0a, 0x00, 0x0b, 0xff, 0xc0, 0xfe, 0x97, 0xfd, 0x65, 0xfc, 0x9c, 0xfb, 0xe5, 0xfa, + 0x9d, 0xfa, 0x71, 0xf9, 0xdf, 0xf7, 0x50, 0xf7, 0xa1, 0xf6, 0xa9, 0xf5, 0x7c, 0xf5, 0xa8, 0xf4, + 0x6c, 0xf3, 0xcf, 0xf3, 0xf5, 0xf4, 0xdd, 0xf6, 0xcf, 0xf8, 0xde, 0xf9, 0x45, 0xfa, 0xb3, 0xfa, + 0x19, 0xfb, 0x98, 0xfc, 0x0b, 0xff, 0x73, 0x01, 0x9f, 0x03, 0x9d, 0x05, 0x52, 0x07, 0x52, 0x09, + 0x22, 0x0b, 0x88, 0x0b, 0x46, 0x0d, 0x6b, 0x0e, 0x64, 0x0e, 0xac, 0x0e, 0xca, 0x0e, 0x53, 0x0d, + 0xca, 0x0b, 0x68, 0x09, 0xb7, 0x07, 0x24, 0x06, 0xa9, 0x02, 0x66, 0xff, 0xe9, 0xfd, 0xf8, 0xfc, + 0x6a, 0xfd, 0x0e, 0xfd, 0x96, 0xfb, 0xbf, 0xfb, 0xf9, 0xfa, 0xd5, 0xfb, 0x82, 0xfc, 0x62, 0xfd, + 0xa5, 0xfe, 0x9a, 0xff, 0x5e, 0x00, 0xc8, 0x00, 0x1f, 0x01, 0x5b, 0x00, 0x0a, 0x00, 0xf7, 0xff, + 0x36, 0xff, 0x1c, 0x00, 0x20, 0x00, 0xb5, 0xff, 0x6b, 0x00, 0xbf, 0x00, 0xaf, 0x00, 0x11, 0x00, + 0x76, 0xff, 0x25, 0xfd, 0x6e, 0xfb, 0xba, 0xf9, 0x76, 0xf8, 0xc4, 0xf7, 0x33, 0xf7, 0xbc, 0xf7, + 0x8d, 0xf7, 0xb1, 0xf5, 0x5c, 0xf4, 0x47, 0xf4, 0x6b, 0xf3, 0xdd, 0xf3, 0x01, 0xf6, 0x1b, 0xf7, + 0x20, 0xf8, 0x7d, 0xf8, 0xac, 0xf8, 0xd7, 0xf9, 0x74, 0xfa, 0xc1, 0xfa, 0x38, 0xfc, 0xef, 0xfc, + 0xea, 0xfd, 0x40, 0xff, 0xf2, 0xfe, 0x24, 0x00, 0xf3, 0x01, 0xbf, 0x02, 0x35, 0x04, 0xc1, 0x04, + 0x5f, 0x06, 0xea, 0x07, 0x23, 0x08, 0x81, 0x08, 0xe2, 0x07, 0x91, 0x06, 0x4c, 0x05, 0x08, 0x05, + 0x4a, 0x03, 0x7d, 0x01, 0x63, 0x00, 0xc1, 0xfe, 0xb7, 0xfd, 0x87, 0xfc, 0x09, 0xfb, 0x40, 0xf9, + 0xa1, 0xf7, 0x90, 0xf6, 0xab, 0xf7, 0x74, 0xf8, 0xd6, 0xf7, 0x8b, 0xf7, 0xe3, 0xf7, 0xb8, 0xf8, + 0x56, 0xfb, 0x73, 0xfc, 0x15, 0xfc, 0xbf, 0xfc, 0xb4, 0xfd, 0xb5, 0xfe, 0x12, 0x00, 0x4b, 0x01, + 0x34, 0x02, 0xa1, 0x03, 0x8d, 0x04, 0x9b, 0x06, 0xa1, 0x08, 0x1f, 0x09, 0x19, 0x0a, 0x17, 0x0c, + 0x68, 0x0d, 0xfe, 0x0e, 0x27, 0x0e, 0xcf, 0x0c, 0x21, 0x0c, 0xa1, 0x0a, 0x85, 0x0a, 0x97, 0x0a, + 0x06, 0x0b, 0x2c, 0x0b, 0x0c, 0x0a, 0x41, 0x08, 0x9e, 0x07, 0x66, 0x06, 0x6a, 0x04, 0x2e, 0x03, + 0x27, 0x01, 0x55, 0x00, 0xc6, 0xff, 0x2e, 0xff, 0x11, 0xff, 0xf3, 0xfe, 0x37, 0xff, 0x63, 0xfe, + 0xe3, 0xfe, 0x2c, 0xfe, 0x8b, 0xfd, 0x5a, 0xfe, 0x22, 0xff, 0x55, 0x01, 0x56, 0x03, 0x23, 0x05, + 0xc3, 0x06, 0x7b, 0x06, 0xfb, 0x04, 0x47, 0x05, 0x91, 0x06, 0xf4, 0x06, 0x22, 0x08, 0x6a, 0x08, + 0xc7, 0x06, 0x82, 0x05, 0x4b, 0x03, 0xa2, 0x00, 0x4c, 0xfd, 0x76, 0xfa, 0x65, 0xf8, 0x95, 0xf8, + 0xaf, 0xf8, 0xbc, 0xf9, 0xcf, 0xfa, 0x71, 0xfa, 0xea, 0xfb, 0x8a, 0xfc, 0x1d, 0xfd, 0x2f, 0xfd, + 0x8f, 0xfd, 0x3b, 0xff, 0x84, 0x00, 0xce, 0x00, 0x97, 0x01, 0x46, 0x02, 0x70, 0x01, 0x39, 0x01, + 0xd8, 0x01, 0xa3, 0x01, 0xfa, 0x02, 0x36, 0x03, 0x2b, 0x03, 0x2d, 0x03, 0xb5, 0x02, 0xf6, 0x02, + 0x4d, 0x02, 0x04, 0x02, 0xad, 0x00, 0x4e, 0x00, 0x3b, 0xff, 0xc4, 0xfc, 0xb9, 0xfa, 0x67, 0xf8, + 0x08, 0xf8, 0x76, 0xf8, 0xa9, 0xf6, 0x81, 0xf5, 0x47, 0xf5, 0xa2, 0xf4, 0xf6, 0xf4, 0xd6, 0xf5, + 0x9d, 0xf6, 0x47, 0xf7, 0xe1, 0xf6, 0x49, 0xf7, 0x06, 0xf9, 0x3f, 0xfa, 0x00, 0xfb, 0x7b, 0xfc, + 0x5c, 0xfd, 0xe8, 0xfd, 0x13, 0xff, 0x64, 0xff, 0x8e, 0x00, 0x65, 0x02, 0x4e, 0x04, 0x4c, 0x06, + 0x01, 0x08, 0x3e, 0x0a, 0xa8, 0x0c, 0x5c, 0x0e, 0xf8, 0x0f, 0xfa, 0x11, 0x59, 0x12, 0xde, 0x11, + 0x97, 0x11, 0xbf, 0x0f, 0xeb, 0x0d, 0xf4, 0x0b, 0x92, 0x09, 0xfd, 0x07, 0x45, 0x06, 0x76, 0x03, + 0xdb, 0x00, 0x0e, 0xfe, 0x05, 0xfc, 0xe2, 0xfb, 0x1e, 0xfc, 0x52, 0xfc, 0xd3, 0xfa, 0x08, 0xf9, + 0x6f, 0xf7, 0x07, 0xf7, 0xd5, 0xf5, 0x38, 0xf4, 0x65, 0xf5, 0x6c, 0xf6, 0xcc, 0xf6, 0x2b, 0xf7, + 0x60, 0xf6, 0x4f, 0xf6, 0x69, 0xf6, 0x14, 0xf6, 0x87, 0xf6, 0xf2, 0xf6, 0xf6, 0xf6, 0xaa, 0xf7, + 0xe0, 0xf8, 0x26, 0xfa, 0x31, 0xfc, 0xa6, 0xfb, 0x26, 0xfb, 0x43, 0xfb, 0xd2, 0xfa, 0x13, 0xfa, + 0xc9, 0xf9, 0xa4, 0xfa, 0xa3, 0xfa, 0x6c, 0xfa, 0x60, 0xf9, 0x72, 0xf8, 0xf7, 0xf6, 0x0a, 0xf5, + 0xb7, 0xf5, 0x0d, 0xf6, 0x6f, 0xf6, 0x5f, 0xf7, 0x3f, 0xf8, 0x29, 0xfa, 0x64, 0xfc, 0xf0, 0xfd, + 0x6b, 0xfe, 0x78, 0xff, 0xad, 0xff, 0x46, 0x00, 0x2a, 0x01, 0xf7, 0x01, 0xb4, 0x04, 0xdb, 0x06, + 0x38, 0x09, 0x9d, 0x0c, 0x0e, 0x0e, 0x57, 0x0e, 0x03, 0x0f, 0x02, 0x11, 0x72, 0x11, 0x20, 0x11, + 0x93, 0x10, 0x78, 0x0f, 0xf7, 0x0d, 0x1c, 0x0b, 0x4d, 0x09, 0x74, 0x08, 0xbd, 0x06, 0x4d, 0x05, + 0xb8, 0x03, 0xe8, 0x00, 0xc5, 0xff, 0x8e, 0xfe, 0xde, 0xfd, 0x28, 0xfe, 0x20, 0xfe, 0x3d, 0xfe, + 0x09, 0xfe, 0x8c, 0xfe, 0x2b, 0x01, 0x7b, 0x03, 0x4f, 0x04, 0x08, 0x05, 0x78, 0x05, 0xa0, 0x04, + 0xa9, 0x03, 0xcd, 0x03, 0x97, 0x03, 0x5f, 0x04, 0xcd, 0x04, 0x19, 0x05, 0xd8, 0x05, 0x46, 0x05, + 0xd1, 0x03, 0x6c, 0x03, 0xd3, 0x02, 0x61, 0x02, 0x3a, 0x02, 0x60, 0x01, 0x54, 0x00, 0x03, 0xff, + 0x2f, 0xfd, 0xc3, 0xfc, 0x50, 0xfc, 0x37, 0xfa, 0x05, 0xf9, 0x9a, 0xf8, 0x76, 0xf8, 0x84, 0xf8, + 0xf1, 0xf8, 0xca, 0xf9, 0xaa, 0xf9, 0xb0, 0xf9, 0x2c, 0xf9, 0x93, 0xf9, 0xad, 0xfa, 0x69, 0xfb, + 0x05, 0xfd, 0x6f, 0xfd, 0x6d, 0xfe, 0x95, 0xfe, 0xbf, 0xfc, 0xce, 0xfc, 0x6a, 0xfe, 0xc3, 0x00, + 0x73, 0x03, 0x55, 0x05, 0xce, 0x06, 0x9c, 0x07, 0xb2, 0x07, 0x3d, 0x07, 0xed, 0x07, 0xe7, 0x07, + 0x2b, 0x08, 0xb2, 0x07, 0xcf, 0x05, 0x97, 0x04, 0x60, 0x03, 0x3f, 0x02, 0xdf, 0x00, 0x64, 0x00, + 0x0c, 0xfe, 0xac, 0xfb, 0x61, 0xfa, 0x98, 0xf8, 0x5d, 0xf8, 0xae, 0xf7, 0xd1, 0xf6, 0x9f, 0xf6, + 0x9f, 0xf5, 0x89, 0xf5, 0xd3, 0xf6, 0x82, 0xf7, 0xb5, 0xf7, 0x2e, 0xf9, 0xa1, 0xfa, 0xd0, 0xfb, + 0x8e, 0xfc, 0x54, 0xfc, 0x3f, 0xfd, 0xed, 0xfd, 0x4a, 0xff, 0x61, 0x00, 0x24, 0x01, 0x61, 0x02, + 0x4b, 0x04, 0x3a, 0x06, 0x48, 0x07, 0x9b, 0x08, 0x02, 0x08, 0x70, 0x07, 0x41, 0x07, 0x92, 0x06, + 0x06, 0x06, 0xc8, 0x04, 0x26, 0x04, 0x8f, 0x04, 0x0f, 0x04, 0xb2, 0x02, 0x75, 0x01, 0xb2, 0xff, + 0x8b, 0xfe, 0x96, 0xfe, 0xca, 0xfd, 0x67, 0xfc, 0x8c, 0xfb, 0xa3, 0xfb, 0x6f, 0xfb, 0x5d, 0xfb, + 0x73, 0xfb, 0x87, 0xfb, 0xf7, 0xfb, 0xa4, 0xfb, 0x07, 0xfc, 0x42, 0xfd, 0x72, 0xfd, 0x18, 0xff, + 0x35, 0x01, 0xec, 0x01, 0x45, 0x03, 0xc3, 0x03, 0x1f, 0x03, 0x41, 0x03, 0xb9, 0x04, 0x1b, 0x06, + 0xf1, 0x06, 0x80, 0x06, 0x4c, 0x05, 0x23, 0x03, 0x80, 0x00, 0x56, 0xfe, 0x6d, 0xfd, 0x0d, 0xfc, + 0xd5, 0xfa, 0xb7, 0xf9, 0x0f, 0xf8, 0x94, 0xf7, 0x0b, 0xf7, 0x54, 0xf7, 0x37, 0xf8, 0x79, 0xf9, + 0xd8, 0xf9, 0xe5, 0xf9, 0xf2, 0xfa, 0xe9, 0xfc, 0xaa, 0xfe, 0x0a, 0xff, 0x8e, 0xff, 0x27, 0x00, + 0x89, 0xff, 0x0b, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0xcc, 0x00, 0xfd, 0x00, 0xfd, 0x00, 0xb8, 0x00, + 0xb0, 0x00, 0x4d, 0x00, 0x0e, 0x01, 0xaf, 0x01, 0x43, 0x01, 0x49, 0x00, 0x7a, 0xff, 0x9e, 0xfe, + 0x22, 0xfd, 0x2d, 0xfc, 0x2f, 0xfc, 0x6d, 0xfc, 0x01, 0xfb, 0x36, 0xfa, 0xa2, 0xfa, 0xeb, 0xf9, + 0xec, 0xf9, 0x04, 0xfa, 0x33, 0xfa, 0xde, 0xfa, 0xeb, 0xfb, 0xa5, 0xfc, 0xa4, 0xfd, 0x81, 0xfe, + 0x17, 0xff, 0x61, 0x00, 0xc6, 0x00, 0xa2, 0x01, 0xaa, 0x01, 0xb6, 0x00, 0x0f, 0x01, 0xd3, 0x02, + 0x02, 0x06, 0x84, 0x08, 0xd0, 0x0a, 0xac, 0x0d, 0x30, 0x10, 0x83, 0x12, 0xbf, 0x13, 0x7b, 0x15, + 0x46, 0x15, 0x7d, 0x15, 0xf1, 0x15, 0x0e, 0x15, 0x1f, 0x14, 0xb0, 0x12, 0xfd, 0x10, 0x91, 0x0f, + 0x2d, 0x0e, 0x75, 0x0b, 0x4c, 0x09, 0xff, 0x06, 0x91, 0x05, 0x73, 0x04, 0x42, 0x03, 0x3f, 0x01, + 0x0f, 0xff, 0x3e, 0xfc, 0x5f, 0xfa, 0x58, 0xfa, 0xfe, 0xfa, 0x3c, 0xfa, 0x12, 0xfa, 0x7d, 0xfa, + 0xc1, 0xf9, 0x6a, 0xf8, 0xd7, 0xf6, 0x1f, 0xf7, 0xbb, 0xf7, 0xd2, 0xf7, 0x62, 0xf8, 0xcb, 0xf8, + 0x90, 0xf8, 0x05, 0xfa, 0x74, 0xfa, 0x2b, 0xfb, 0x4e, 0xfc, 0xf5, 0xfb, 0x9f, 0xfb, 0x2a, 0xfb, + 0x3c, 0xfb, 0x41, 0xfb, 0xf3, 0xfa, 0x53, 0xfb, 0x0a, 0xfc, 0xb0, 0xfb, 0x15, 0xfa, 0x9c, 0xf8, + 0x30, 0xf7, 0x83, 0xf6, 0xc8, 0xf6, 0x67, 0xf7, 0x53, 0xf7, 0x13, 0xf8, 0x63, 0xf9, 0x9d, 0xfa, + 0x56, 0xfd, 0x91, 0xfe, 0x91, 0xff, 0x48, 0x00, 0xa0, 0x00, 0x50, 0x01, 0x6d, 0x01, 0xb0, 0x01, + 0x60, 0x03, 0x2c, 0x05, 0x7f, 0x07, 0x34, 0x0a, 0x09, 0x0c, 0x7a, 0x0c, 0xc0, 0x0c, 0x02, 0x0d, + 0xd3, 0x0c, 0x9e, 0x0b, 0x4c, 0x0a, 0xff, 0x08, 0xa9, 0x07, 0x60, 0x06, 0x7c, 0x04, 0x8a, 0x03, + 0xf4, 0x01, 0x2c, 0x01, 0x48, 0xff, 0x49, 0xfc, 0x41, 0xfb, 0x8d, 0xf9, 0xa1, 0xf8, 0x5a, 0xf8, + 0x44, 0xf8, 0x57, 0xf8, 0xd0, 0xf7, 0x68, 0xf8, 0xff, 0xf9, 0xe3, 0xfb, 0x0d, 0xfd, 0xfe, 0xfd, + 0x4c, 0xfe, 0xe1, 0xfd, 0x85, 0xfe, 0x69, 0xfe, 0x92, 0xfe, 0xa1, 0xfe, 0xac, 0xff, 0x45, 0xff, + 0xf5, 0xfe, 0x24, 0xff, 0x9d, 0xfe, 0xbb, 0xff, 0xe0, 0x00, 0x21, 0x02, 0xa8, 0x02, 0x3f, 0x01, + 0x4c, 0x00, 0x39, 0xff, 0xff, 0xfd, 0x08, 0xfe, 0x0a, 0xfe, 0xd7, 0xfc, 0x3e, 0xfb, 0x0e, 0xfa, + 0x58, 0xf9, 0x7c, 0xf8, 0xf3, 0xf7, 0xd6, 0xf7, 0xc9, 0xf7, 0xe6, 0xf7, 0xa9, 0xf7, 0x1c, 0xf8, + 0xcf, 0xf7, 0x93, 0xf7, 0x1f, 0xf8, 0x06, 0xf7, 0xef, 0xf5, 0xeb, 0xf5, 0xc8, 0xf5, 0x7e, 0xf6, + 0xb6, 0xf7, 0x82, 0xfa, 0x6f, 0xfd, 0xac, 0xfe, 0x22, 0x00, 0xf6, 0x01, 0x94, 0x02, 0x73, 0x03, + 0x7f, 0x04, 0x4c, 0x05, 0x38, 0x06, 0x63, 0x06, 0x56, 0x06, 0x45, 0x05, 0xff, 0x04, 0xe6, 0x04, + 0x9d, 0x04, 0x7f, 0x03, 0x85, 0x01, 0x95, 0xff, 0xac, 0xfe, 0xa8, 0xfd, 0x07, 0xfd, 0x61, 0xfc, + 0xec, 0xfa, 0xc4, 0xfa, 0xf8, 0xf9, 0xb1, 0xf9, 0x85, 0xfa, 0x46, 0xfb, 0x8c, 0xfc, 0x8d, 0xfe, + 0x14, 0x00, 0x84, 0x01, 0x16, 0x02, 0xf4, 0x02, 0xec, 0x03, 0x2b, 0x05, 0x81, 0x06, 0xb8, 0x07, + 0x3e, 0x08, 0x2b, 0x08, 0xa5, 0x09, 0x76, 0x0a, 0x9e, 0x0b, 0x9c, 0x0c, 0x5c, 0x0d, 0x5a, 0x0d, + 0x22, 0x0d, 0x06, 0x0d, 0xa4, 0x0b, 0x59, 0x0a, 0xdd, 0x08, 0x47, 0x08, 0x8b, 0x07, 0x80, 0x06, + 0xc4, 0x05, 0x53, 0x03, 0x56, 0x02, 0x05, 0x02, 0x45, 0x01, 0x88, 0x00, 0x0f, 0x00, 0xf8, 0xff, + 0x8d, 0xff, 0xce, 0xff, 0x9a, 0xff, 0x92, 0xff, 0x03, 0x00, 0x89, 0x00, 0x6d, 0x01, 0x75, 0x01, + 0x6b, 0x01, 0x38, 0x02, 0x83, 0x03, 0x6a, 0x04, 0xa1, 0x05, 0xd4, 0x06, 0xa4, 0x06, 0x43, 0x07, + 0x48, 0x07, 0x95, 0x06, 0xe6, 0x05, 0x1b, 0x05, 0x74, 0x04, 0x71, 0x03, 0x0e, 0x02, 0x2d, 0x01, + 0x8f, 0x00, 0xf8, 0xfe, 0x06, 0xfe, 0x85, 0xfc, 0xb0, 0xfa, 0x17, 0xf9, 0xf7, 0xf7, 0x01, 0xf8, + 0x8f, 0xf8, 0xd7, 0xf9, 0x31, 0xfa, 0x8d, 0xf9, 0x38, 0xf9, 0xb3, 0xf9, 0x28, 0xfb, 0x60, 0xfc, + 0xc5, 0xfd, 0x8b, 0xfe, 0x52, 0xfe, 0x21, 0xfe, 0xe9, 0xfd, 0x3c, 0xfd, 0x67, 0xfc, 0xa8, 0xfc, + 0x2e, 0xfd, 0xcc, 0xfd, 0xb0, 0xfd, 0x19, 0xfe, 0xb3, 0xfe, 0xdc, 0xfe, 0xf9, 0xfe, 0x02, 0xff, + 0xf7, 0xfd, 0x6f, 0xfd, 0x54, 0xfd, 0xa0, 0xfc, 0xc2, 0xfc, 0x57, 0xfd, 0x9a, 0xfc, 0xab, 0xfb, + 0xf4, 0xfa, 0xde, 0xf9, 0x6e, 0xf8, 0x71, 0xf7, 0x2a, 0xf7, 0xfc, 0xf7, 0x8b, 0xf8, 0x18, 0xf9, + 0x59, 0xfa, 0x52, 0xfa, 0x1f, 0xfb, 0xe8, 0xfb, 0x8b, 0xfb, 0xbb, 0xfb, 0x66, 0xfb, 0x82, 0xfb, + 0xf2, 0xfb, 0x58, 0xfd, 0x0a, 0x00, 0x51, 0x02, 0xcc, 0x04, 0xa5, 0x07, 0xbc, 0x0a, 0x6a, 0x0c, + 0xb4, 0x0d, 0x91, 0x0e, 0x0d, 0x0f, 0xb2, 0x0f, 0x88, 0x10, 0xab, 0x10, 0x38, 0x0f, 0xf6, 0x0d, + 0x75, 0x0c, 0xb5, 0x0b, 0x5d, 0x0a, 0x4e, 0x08, 0x12, 0x07, 0x53, 0x05, 0x03, 0x03, 0x2e, 0x00, + 0x1b, 0xfd, 0x11, 0xfb, 0x3c, 0xf9, 0xa3, 0xf7, 0xc9, 0xf6, 0xdc, 0xf6, 0x74, 0xf6, 0x74, 0xf6, + 0xb2, 0xf6, 0x87, 0xf6, 0x42, 0xf6, 0x22, 0xf6, 0x37, 0xf6, 0xe0, 0xf5, 0x5a, 0xf6, 0xb3, 0xf5, + 0x18, 0xf6, 0x12, 0xf6, 0x96, 0xf6, 0x90, 0xf8, 0x9b, 0xf8, 0xae, 0xf8, 0x3b, 0xf9, 0x87, 0xf9, + 0x55, 0xfa, 0x65, 0xfb, 0xfc, 0xfb, 0x59, 0xfb, 0x11, 0xfa, 0x75, 0xf9, 0x11, 0xfa, 0x1a, 0xfa, + 0xb6, 0xf9, 0x92, 0xf9, 0x05, 0xf9, 0xd1, 0xf8, 0xe2, 0xf8, 0xa1, 0xf9, 0x0e, 0xfa, 0x34, 0xfb, + 0x4c, 0xfc, 0x63, 0xfd, 0x8d, 0xff, 0x7f, 0x00, 0x9e, 0x01, 0x0f, 0x03, 0xa6, 0x03, 0xed, 0x04, + 0x45, 0x05, 0xe0, 0x04, 0xde, 0x05, 0xed, 0x07, 0x5f, 0x0a, 0xa3, 0x0d, 0xd2, 0x0f, 0xb0, 0x10, + 0xa9, 0x0f, 0xdc, 0x0e, 0xa5, 0x0e, 0x2d, 0x0e, 0x2c, 0x0e, 0x6d, 0x0d, 0x48, 0x0d, 0x08, 0x0c, + 0xfb, 0x0a, 0xd1, 0x09, 0x58, 0x08, 0x19, 0x07, 0xa4, 0x05, 0x5f, 0x03, 0x3d, 0x01, 0xe0, 0xff, + 0x5c, 0xfe, 0xda, 0xfd, 0xd0, 0xfd, 0xe6, 0xfd, 0x1c, 0xfe, 0x3f, 0xfd, 0x71, 0xfd, 0xa2, 0xfd, + 0x99, 0xfd, 0xe0, 0xfe, 0x21, 0x00, 0x0f, 0x02, 0x7c, 0x02, 0xe0, 0x01, 0x95, 0x00, 0x61, 0xff, + 0x5e, 0xff, 0x4d, 0xff, 0xc5, 0xff, 0x42, 0x00, 0x04, 0x01, 0x48, 0x02, 0x60, 0x03, 0x80, 0x04, + 0x82, 0x05, 0x0e, 0x05, 0xd7, 0x04, 0x2e, 0x05, 0xf7, 0x03, 0xeb, 0x02, 0xaa, 0x01, 0x38, 0x00, + 0xd6, 0xff, 0x92, 0xfe, 0x31, 0xfd, 0x57, 0xfb, 0x51, 0xfa, 0x9f, 0xf9, 0x04, 0xfa, 0xfa, 0xfa, + 0xf0, 0xfa, 0x30, 0xfa, 0x4b, 0xf8, 0xc7, 0xf7, 0x32, 0xf7, 0xc6, 0xf5, 0x10, 0xf5, 0x3a, 0xf5, + 0x69, 0xf6, 0xf6, 0xf6, 0x1c, 0xf8, 0x20, 0xf9, 0xc4, 0xfa, 0xa7, 0xfc, 0xae, 0xfe, 0x0e, 0x02, + 0x54, 0x03, 0x7d, 0x04, 0x01, 0x05, 0xa7, 0x05, 0xae, 0x06, 0x75, 0x07, 0x7f, 0x07, 0x5b, 0x07, + 0x3c, 0x07, 0x49, 0x06, 0xb0, 0x05, 0xea, 0x04, 0x94, 0x03, 0xa3, 0x02, 0xea, 0x00, 0xf8, 0xfe, + 0x72, 0xfd, 0x7e, 0xfb, 0x14, 0xfa, 0xe2, 0xf9, 0x0e, 0xfa, 0x36, 0xfa, 0xcf, 0xfa, 0xc2, 0xfa, + 0x55, 0xfb, 0x9a, 0xfc, 0x89, 0xfd, 0x98, 0xfe, 0xa9, 0xff, 0x8b, 0x00, 0x63, 0x01, 0x40, 0x01, + 0xd8, 0x00, 0x0b, 0x02, 0x40, 0x02, 0xe5, 0x02, 0x13, 0x04, 0x74, 0x04, 0xc0, 0x04, 0x45, 0x05, + 0x4f, 0x06, 0xc8, 0x06, 0x81, 0x06, 0x06, 0x06, 0x02, 0x05, 0x88, 0x03, 0xa1, 0x01, 0x0e, 0x01, + 0x67, 0x00, 0xab, 0xff, 0x86, 0xff, 0x2a, 0xff, 0xbc, 0xfd, 0xa2, 0xfc, 0xaf, 0xfb, 0x8f, 0xfa, + 0xdd, 0xfa, 0xac, 0xfa, 0x26, 0xfb, 0x62, 0xfb, 0xf8, 0xfa, 0x41, 0xfc, 0x87, 0xfd, 0xae, 0xfe, + 0xa7, 0xff, 0x6d, 0xff, 0x29, 0xfe, 0xda, 0xfd, 0xfa, 0xfe, 0xe8, 0x00, 0x9b, 0x03, 0x3b, 0x05, + 0x02, 0x06, 0x67, 0x06, 0x49, 0x06, 0x0d, 0x05, 0xbc, 0x03, 0xec, 0x02, 0x09, 0x03, 0x6b, 0x04, + 0x0d, 0x04, 0xf1, 0x03, 0xfe, 0x02, 0xf1, 0x00, 0x34, 0x00, 0xda, 0xfe, 0xb6, 0xfd, 0x28, 0xfc, + 0x22, 0xfa, 0xff, 0xf8, 0x1e, 0xf8, 0x2a, 0xf8, 0x00, 0xf8, 0xcb, 0xf7, 0x96, 0xf7, 0x94, 0xf8, + 0x80, 0xf9, 0x44, 0xfb, 0x54, 0xfd, 0xf1, 0xfd, 0x39, 0xfe, 0x8e, 0xfd, 0x1c, 0xfd, 0x5e, 0xfb, + 0x63, 0xfa, 0xc0, 0xfa, 0xc7, 0xfb, 0xd2, 0xfd, 0x55, 0xfe, 0x75, 0xfe, 0x1c, 0xff, 0xf9, 0xfe, + 0x10, 0xff, 0xc5, 0xfe, 0x7c, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0x31, 0xfe, 0x0e, 0xfe, 0x21, 0xfe, + 0x5d, 0xfe, 0xd2, 0xfd, 0x32, 0xfd, 0x1f, 0xfc, 0x7a, 0xfa, 0xaf, 0xf9, 0xd4, 0xf9, 0x40, 0xfb, + 0xdf, 0xfb, 0x86, 0xfb, 0x3d, 0xfc, 0x21, 0xfc, 0x93, 0xfc, 0xac, 0xfd, 0x7a, 0xfd, 0xeb, 0xfd, + 0x80, 0xfe, 0x25, 0xff, 0xfe, 0xff, 0xde, 0x00, 0x04, 0x02, 0x4e, 0x04, 0xb2, 0x06, 0x3b, 0x0a, + 0x40, 0x0d, 0x22, 0x0f, 0x69, 0x11, 0xa9, 0x13, 0xb4, 0x15, 0xce, 0x16, 0x5e, 0x17, 0xcd, 0x16, + 0x78, 0x15, 0x55, 0x14, 0x5d, 0x13, 0xc9, 0x12, 0x6f, 0x11, 0x03, 0x0f, 0x25, 0x0d, 0xc8, 0x0a, + 0x48, 0x07, 0x0d, 0x04, 0x7a, 0x00, 0xe7, 0xfd, 0x03, 0xfd, 0x5e, 0xfb, 0xd0, 0xf9, 0xc6, 0xf8, + 0x5c, 0xf7, 0xa6, 0xf6, 0x52, 0xf6, 0xe0, 0xf6, 0x54, 0xf7, 0xe7, 0xf7, 0xf1, 0xf7, 0x3e, 0xf8, + 0x1b, 0xf8, 0xa7, 0xf7, 0x6f, 0xf8, 0x1b, 0xf9, 0xb2, 0xf9, 0x08, 0xfa, 0xcc, 0xf9, 0x28, 0xfa, + 0x22, 0xfb, 0x76, 0xfc, 0x7b, 0xfd, 0x15, 0xfe, 0x40, 0xfe, 0xc5, 0xfe, 0x32, 0xfe, 0xe6, 0xfd, + 0x22, 0xff, 0xd7, 0xfe, 0x9e, 0xff, 0x1b, 0x00, 0x32, 0x00, 0xaa, 0xff, 0x5b, 0xfe, 0x40, 0xfd, + 0xd4, 0xfc, 0x66, 0xfd, 0x5e, 0xfd, 0x59, 0xfd, 0x2a, 0xfe, 0xcb, 0xfe, 0xeb, 0xff, 0x1b, 0x01, + 0x0b, 0x02, 0x8b, 0x02, 0xb4, 0x02, 0x1b, 0x02, 0x1a, 0x03, 0x20, 0x04, 0x08, 0x05, 0xd7, 0x06, + 0xc6, 0x06, 0xcc, 0x06, 0x5d, 0x06, 0x68, 0x05, 0x8a, 0x04, 0x2f, 0x04, 0x1f, 0x04, 0xb6, 0x04, + 0xe0, 0x04, 0x2a, 0x04, 0x9d, 0x03, 0x1b, 0x02, 0xf5, 0x00, 0x2c, 0x01, 0x87, 0x00, 0xc1, 0xfe, + 0xec, 0xfc, 0x0a, 0xfc, 0x55, 0xfb, 0xb5, 0xfb, 0xdf, 0xfb, 0xd2, 0xfb, 0x5d, 0xfb, 0xc6, 0xf9, + 0xc7, 0xf9, 0xf8, 0xf9, 0x12, 0xfb, 0xa8, 0xfc, 0x28, 0xfe, 0x49, 0xff, 0x96, 0xff, 0x30, 0xfe, + 0xd0, 0xfb, 0x6f, 0xfa, 0x68, 0xfa, 0xba, 0xfb, 0xf1, 0xfc, 0xf4, 0xfd, 0xe7, 0xfe, 0xe1, 0xff, + 0xc9, 0x00, 0xe7, 0x01, 0xd5, 0x02, 0xb0, 0x02, 0x94, 0x02, 0xbc, 0x02, 0xbc, 0x01, 0x08, 0x01, + 0x4c, 0x00, 0xc0, 0xfe, 0x78, 0xfd, 0x84, 0xfc, 0x31, 0xfb, 0xdb, 0xfa, 0xe7, 0xf9, 0xda, 0xf9, + 0x47, 0xfa, 0x8a, 0xf9, 0x9c, 0xf9, 0x56, 0xf8, 0x58, 0xf6, 0x3f, 0xf5, 0x31, 0xf4, 0x17, 0xf4, + 0xf7, 0xf3, 0x66, 0xf4, 0x43, 0xf5, 0x4c, 0xf5, 0x83, 0xf4, 0x5a, 0xf5, 0x2d, 0xf8, 0xc4, 0xfa, + 0xd7, 0xfd, 0xf4, 0xff, 0x34, 0x01, 0xa5, 0x02, 0x74, 0x04, 0x0a, 0x06, 0xbf, 0x06, 0x97, 0x06, + 0xb9, 0x05, 0x51, 0x06, 0x6b, 0x07, 0x26, 0x07, 0x08, 0x07, 0xd4, 0x05, 0xdf, 0x04, 0xcc, 0x04, + 0x8e, 0x03, 0x36, 0x02, 0x42, 0x00, 0x16, 0xfe, 0x92, 0xfc, 0xfa, 0xfc, 0x51, 0xfd, 0x4b, 0xfd, + 0x99, 0xfc, 0x74, 0xfc, 0xf1, 0xfd, 0x18, 0x00, 0xec, 0x01, 0x2a, 0x02, 0x9c, 0x03, 0x7d, 0x04, + 0xd6, 0x05, 0xf2, 0x05, 0x46, 0x06, 0xba, 0x06, 0x09, 0x06, 0x56, 0x06, 0x2f, 0x07, 0x4e, 0x08, + 0x95, 0x09, 0xcf, 0x09, 0x87, 0x0a, 0x29, 0x0b, 0x87, 0x0a, 0x51, 0x09, 0x20, 0x08, 0x7c, 0x06, + 0x82, 0x05, 0x12, 0x05, 0x6c, 0x04, 0x9a, 0x04, 0x73, 0x04, 0xfb, 0x03, 0x9e, 0x02, 0x7c, 0x01, + 0x95, 0x00, 0x99, 0xff, 0x23, 0xff, 0x3a, 0xfe, 0xfb, 0xfd, 0x30, 0xfe, 0x2b, 0xff, 0xa8, 0x01, + 0x86, 0x02, 0x6c, 0x02, 0xdd, 0x02, 0xb5, 0x02, 0x5f, 0x02, 0x81, 0x02, 0x46, 0x02, 0xbd, 0x03, + 0xf2, 0x05, 0x08, 0x07, 0xd1, 0x06, 0x5a, 0x06, 0xb7, 0x05, 0xf8, 0x04, 0x42, 0x05, 0x8b, 0x05, + 0x92, 0x06, 0x30, 0x07, 0x63, 0x06, 0xdb, 0x05, 0x76, 0x04, 0xbf, 0x02, 0xd8, 0x01, 0xd9, 0x00, + 0x50, 0xff, 0x12, 0xfd, 0x10, 0xfb, 0xa7, 0xf9, 0x4f, 0xf8, 0x1a, 0xf6, 0x0f, 0xf6, 0x84, 0xf6, + 0xfc, 0xf6, 0x0b, 0xf8, 0x1c, 0xf8, 0xdb, 0xf8, 0x78, 0xf9, 0x86, 0xf9, 0x2c, 0xf9, 0x6f, 0xf8, + 0x6d, 0xf7, 0xa4, 0xf6, 0x19, 0xf6, 0x09, 0xf6, 0x4c, 0xf6, 0x0b, 0xf7, 0x32, 0xf7, 0x5f, 0xf8, + 0x69, 0xfa, 0xd0, 0xfb, 0xa6, 0xfd, 0x6c, 0xff, 0xc7, 0xff, 0x2e, 0x00, 0x28, 0x00, 0xc9, 0xff, + 0x80, 0x00, 0xd9, 0xff, 0x41, 0xff, 0x87, 0xfe, 0x83, 0xfe, 0xf9, 0xfd, 0xcb, 0xfc, 0x03, 0xfb, + 0x9c, 0xfa, 0x81, 0xfb, 0x11, 0xfb, 0x42, 0xfb, 0x83, 0xfa, 0xc5, 0xf8, 0x27, 0xf8, 0x47, 0xf8, + 0x35, 0xf9, 0x61, 0xfa, 0xf1, 0xfb, 0xb6, 0xfc, 0x55, 0xfe, 0xb3, 0xff, 0xb2, 0x00, 0x83, 0x02, + 0x4b, 0x04, 0xc2, 0x06, 0x94, 0x08, 0x57, 0x0a, 0xf7, 0x0b, 0x71, 0x0d, 0xd3, 0x0d, 0x41, 0x0e, + 0xd2, 0x0e, 0xaa, 0x0f, 0x27, 0x10, 0x54, 0x10, 0x57, 0x0f, 0xf9, 0x0d, 0x9e, 0x0c, 0x93, 0x0a, + 0x41, 0x08, 0x28, 0x06, 0xa4, 0x03, 0x68, 0x01, 0xf7, 0xfe, 0x16, 0xfd, 0xf8, 0xfb, 0xf4, 0xf9, + 0x6e, 0xf8, 0xa4, 0xf6, 0x5d, 0xf5, 0xdf, 0xf4, 0x38, 0xf5, 0xb5, 0xf5, 0xeb, 0xf5, 0xd3, 0xf5, + 0xb8, 0xf6, 0x67, 0xf8, 0x6d, 0xf8, 0xa8, 0xf8, 0x9f, 0xf8, 0x59, 0xf8, 0xd6, 0xf8, 0x11, 0xf9, + 0xfe, 0xf8, 0xfc, 0xf8, 0x56, 0xf9, 0x87, 0xfa, 0xa4, 0xfb, 0x23, 0xfc, 0xee, 0xfb, 0x45, 0xfc, + 0xf9, 0xfb, 0xf7, 0xfb, 0xd7, 0xfc, 0x38, 0xfd, 0x44, 0xfd, 0x0f, 0xfe, 0x71, 0xfe, 0x4a, 0xfe, + 0x56, 0xfe, 0x5e, 0xfe, 0x09, 0xff, 0x63, 0xff, 0xd2, 0xff, 0xc1, 0x00, 0xbd, 0x00, 0x5c, 0x00, + 0xc1, 0x00, 0xb0, 0x01, 0xd5, 0x02, 0xca, 0x04, 0xd2, 0x05, 0xd0, 0x05, 0x7d, 0x06, 0x9f, 0x06, + 0x0a, 0x07, 0x04, 0x08, 0xeb, 0x08, 0x8f, 0x09, 0xd6, 0x09, 0x9a, 0x09, 0x45, 0x09, 0x4e, 0x09, + 0x2b, 0x08, 0xc3, 0x08, 0xba, 0x09, 0x3c, 0x0a, 0x13, 0x0b, 0x8e, 0x0a, 0x56, 0x09, 0xea, 0x06, + 0xe9, 0x04, 0x35, 0x03, 0x7c, 0x02, 0xa4, 0x02, 0xcc, 0x01, 0x36, 0x00, 0x29, 0xfe, 0xcb, 0xfd, + 0x8d, 0xfd, 0x24, 0xfd, 0x95, 0xfc, 0x39, 0xfc, 0x92, 0xfc, 0x46, 0xfd, 0x36, 0xfe, 0x11, 0xfe, + 0xf2, 0xfd, 0x5c, 0xfd, 0xac, 0xfc, 0x28, 0xfd, 0x3c, 0xfd, 0xa6, 0xfd, 0x3a, 0xfe, 0xf0, 0xfe, + 0x4c, 0x00, 0x4b, 0x01, 0x7c, 0x02, 0x4e, 0x04, 0x63, 0x05, 0xad, 0x05, 0xf6, 0x05, 0x26, 0x06, + 0x1b, 0x06, 0x4f, 0x05, 0x1a, 0x04, 0xe1, 0x02, 0x87, 0x02, 0x99, 0x02, 0xc9, 0x01, 0xe1, 0x00, + 0xe2, 0xfe, 0x97, 0xfd, 0xf7, 0xfc, 0x6e, 0xfb, 0x37, 0xfb, 0x43, 0xfa, 0xad, 0xf8, 0xe1, 0xf7, + 0x1f, 0xf7, 0xdf, 0xf6, 0x40, 0xf6, 0xcb, 0xf5, 0xe9, 0xf5, 0x8d, 0xf6, 0x3b, 0xf7, 0x51, 0xf8, + 0xae, 0xf9, 0x0f, 0xfb, 0x33, 0xfd, 0x9a, 0xff, 0x23, 0x02, 0xa4, 0x03, 0x68, 0x04, 0xa9, 0x04, + 0xb8, 0x04, 0x59, 0x05, 0xcb, 0x05, 0xdd, 0x06, 0xc9, 0x07, 0x39, 0x07, 0xc9, 0x06, 0x61, 0x05, + 0x22, 0x04, 0xfe, 0x02, 0x3e, 0x01, 0x89, 0xff, 0xac, 0xfe, 0xb8, 0xfc, 0xda, 0xfa, 0xca, 0xf9, + 0x88, 0xf9, 0xfb, 0xf9, 0x1e, 0xfa, 0x7e, 0xfa, 0x82, 0xfa, 0x7e, 0xfb, 0xb3, 0xfb, 0x79, 0xfc, + 0x7d, 0xfd, 0x65, 0xfe, 0x85, 0xff, 0x2e, 0xff, 0xf9, 0xfe, 0xb5, 0xff, 0x31, 0x00, 0x54, 0x00, + 0xed, 0x00, 0xa2, 0x01, 0x5b, 0x02, 0x11, 0x03, 0x2b, 0x03, 0x5d, 0x04, 0x8a, 0x03, 0x57, 0x02, + 0xa8, 0x02, 0x44, 0x02, 0xf7, 0x01, 0x0d, 0x01, 0x6d, 0x00, 0xe7, 0xff, 0x2a, 0x00, 0xdc, 0x00, + 0x73, 0x00, 0x44, 0xff, 0x32, 0xfd, 0x98, 0xfb, 0x4e, 0xfb, 0x1c, 0xfc, 0xde, 0xfc, 0x9e, 0xfc, + 0x21, 0xfc, 0xd7, 0xfc, 0xfa, 0xfd, 0x2f, 0xfe, 0x17, 0xff, 0x19, 0xff, 0xf5, 0xfe, 0xb8, 0xff, + 0x25, 0x00, 0x29, 0x01, 0xae, 0x01, 0xcf, 0x01, 0x1a, 0x02, 0x4b, 0x03, 0x49, 0x04, 0x45, 0x04, + 0x47, 0x04, 0x5b, 0x04, 0xa6, 0x05, 0x99, 0x06, 0xf5, 0x07, 0x62, 0x09, 0x03, 0x09, 0xe0, 0x07, + 0x80, 0x06, 0xff, 0x05, 0x57, 0x04, 0xa7, 0x02, 0x08, 0x00, 0x02, 0xfe, 0xda, 0xfc, 0x40, 0xfb, + 0x75, 0xfb, 0x79, 0xfb, 0x7b, 0xfb, 0x50, 0xfb, 0x45, 0xfa, 0xb8, 0xf9, 0x93, 0xf9, 0xeb, 0xf8, + 0xac, 0xf8, 0x03, 0xf9, 0x79, 0xf9, 0x32, 0xf9, 0x98, 0xf8, 0x81, 0xf7, 0xc0, 0xf6, 0xa2, 0xf6, + 0x4e, 0xf7, 0xb6, 0xf8, 0xda, 0xf9, 0x65, 0xfa, 0x98, 0xfa, 0xb5, 0xfb, 0x70, 0xfc, 0xc6, 0xfd, + 0xed, 0xfe, 0xdf, 0xff, 0x6f, 0x00, 0x76, 0x00, 0x49, 0x00, 0x1e, 0x00, 0x90, 0xff, 0x0f, 0xff, + 0x2d, 0xff, 0x65, 0xfe, 0x41, 0xfe, 0x37, 0xfe, 0x0e, 0xfd, 0xbf, 0xfc, 0xb7, 0xfc, 0x1c, 0xfd, + 0x3c, 0xfc, 0xfe, 0xfb, 0x56, 0xfc, 0x07, 0xfd, 0x4c, 0xfe, 0x90, 0xff, 0xb8, 0x01, 0x85, 0x02, + 0x09, 0x03, 0x16, 0x04, 0x83, 0x05, 0x9a, 0x07, 0x7c, 0x09, 0x97, 0x0a, 0x9b, 0x0b, 0x76, 0x0c, + 0x04, 0x0d, 0x9e, 0x0d, 0x32, 0x0e, 0xb7, 0x0e, 0xc6, 0x0f, 0x27, 0x10, 0x6c, 0x10, 0xac, 0x0f, + 0x39, 0x0e, 0x9c, 0x0b, 0x45, 0x09, 0x92, 0x07, 0xeb, 0x05, 0xc7, 0x04, 0xdf, 0x01, 0x37, 0xff, + 0x32, 0xfd, 0x2a, 0xfc, 0x4e, 0xfb, 0x1b, 0xfb, 0x1d, 0xfa, 0x54, 0xf8, 0x15, 0xf8, 0xc4, 0xf7, + 0xfa, 0xf8, 0x7b, 0xf9, 0x43, 0xfa, 0xd7, 0xfb, 0x43, 0xfc, 0xfa, 0xfc, 0x61, 0xfd, 0x60, 0xfd, + 0x03, 0xfd, 0x0e, 0xfd, 0x80, 0xfd, 0xaf, 0xfd, 0x1f, 0xfe, 0x0c, 0xfe, 0x1e, 0xfe, 0xc5, 0xfd, + 0x72, 0xfe, 0xb3, 0xff, 0xb6, 0x00, 0x3c, 0x01, 0x96, 0x01, 0xf7, 0x01, 0xa8, 0x01, 0x4d, 0x02, + 0x19, 0x03, 0x30, 0x02, 0x89, 0x01, 0x1e, 0x00, 0xda, 0xff, 0xd3, 0xff, 0x0e, 0xff, 0x76, 0xfe, + 0xd9, 0xfd, 0xf7, 0xfd, 0xaa, 0xfe, 0x53, 0xff, 0xcb, 0xff, 0x9b, 0x00, 0x7e, 0x00, 0xc5, 0x00, + 0x16, 0x01, 0x29, 0x01, 0xeb, 0x00, 0x70, 0x01, 0x65, 0x02, 0x31, 0x03, 0x6d, 0x04, 0x18, 0x04, + 0x9f, 0x03, 0x28, 0x03, 0x0e, 0x03, 0x3e, 0x04, 0x77, 0x05, 0xa2, 0x06, 0x6a, 0x06, 0xce, 0x05, + 0x8e, 0x04, 0x1b, 0x04, 0x6b, 0x03, 0x8c, 0x02, 0x66, 0x02, 0xd3, 0x00, 0x19, 0x00, 0x5a, 0xfe, + 0x3a, 0xfc, 0xe8, 0xfa, 0x2b, 0xfa, 0x2d, 0xfa, 0x90, 0xfa, 0xc3, 0xfa, 0xb9, 0xf9, 0xf6, 0xf8, + 0x1f, 0xf9, 0x01, 0xf9, 0x70, 0xf9, 0xf2, 0xf9, 0x40, 0xfa, 0x53, 0xfa, 0x13, 0xfa, 0x1f, 0xfa, + 0x2f, 0xfb, 0x55, 0xfc, 0xd2, 0xfd, 0x45, 0xff, 0xb0, 0xff, 0x7f, 0x01, 0xa5, 0x02, 0xbf, 0x02, + 0x1a, 0x03, 0x2b, 0x03, 0xa5, 0x03, 0x69, 0x03, 0xa8, 0x03, 0xf3, 0x03, 0xd7, 0x03, 0xf0, 0x02, + 0x30, 0x02, 0xec, 0x01, 0x13, 0x00, 0x8c, 0xfe, 0x32, 0xfd, 0xe8, 0xfb, 0xf9, 0xfa, 0xf2, 0xfa, + 0x33, 0xfa, 0x5e, 0xf8, 0xd7, 0xf7, 0x86, 0xf6, 0x7e, 0xf6, 0xa4, 0xf6, 0x30, 0xf7, 0xa7, 0xf7, + 0xfc, 0xf6, 0xab, 0xf7, 0xd4, 0xf8, 0x82, 0xfa, 0x94, 0xfc, 0x73, 0xfe, 0xda, 0xff, 0x64, 0x00, + 0xd4, 0x01, 0x9f, 0x02, 0x28, 0x03, 0xb0, 0x03, 0x98, 0x03, 0x5f, 0x04, 0x1e, 0x05, 0x14, 0x05, + 0x71, 0x04, 0x38, 0x03, 0x81, 0x01, 0xda, 0x00, 0xde, 0xff, 0x44, 0xff, 0x27, 0xfe, 0x06, 0xfc, + 0xc2, 0xfa, 0x5a, 0xfa, 0x6c, 0xfa, 0x8a, 0xfa, 0xfa, 0xfa, 0xc5, 0xfa, 0xf2, 0xfa, 0x8c, 0xfb, + 0x3e, 0xfc, 0x29, 0xfd, 0x14, 0xfe, 0x1b, 0xff, 0xaa, 0x00, 0xca, 0x01, 0x58, 0x02, 0xd9, 0x02, + 0xe2, 0x02, 0x7c, 0x02, 0x61, 0x03, 0xf6, 0x03, 0x74, 0x04, 0x78, 0x04, 0x11, 0x04, 0x07, 0x05, + 0x5e, 0x05, 0xa9, 0x05, 0x1f, 0x06, 0x91, 0x05, 0xe5, 0x04, 0xbe, 0x04, 0xf3, 0x04, 0x2e, 0x05, + 0x53, 0x05, 0xe9, 0x04, 0xdb, 0x03, 0x22, 0x03, 0x17, 0x02, 0x21, 0x01, 0xf4, 0x00, 0x10, 0x01, + 0x15, 0x01, 0x1c, 0x01, 0x41, 0x00, 0x56, 0x00, 0x99, 0x00, 0xfd, 0x00, 0xff, 0x01, 0x67, 0x02, + 0x8c, 0x02, 0x6d, 0x02, 0xdb, 0x01, 0x64, 0x01, 0x12, 0x02, 0x1c, 0x03, 0x73, 0x04, 0xb4, 0x05, + 0xb8, 0x05, 0x11, 0x06, 0xe5, 0x05, 0x80, 0x06, 0x35, 0x08, 0x52, 0x09, 0xc6, 0x0a, 0x3f, 0x0c, + 0xbe, 0x0d, 0x10, 0x0d, 0xd9, 0x0b, 0x36, 0x0a, 0x39, 0x08, 0xc1, 0x06, 0xbb, 0x04, 0xe7, 0x03, + 0xae, 0x02, 0x25, 0x01, 0x19, 0x00, 0x56, 0xff, 0x6a, 0xfe, 0xfd, 0xfc, 0x92, 0xfb, 0x1f, 0xf9, + 0xfe, 0xf7, 0x21, 0xf8, 0x00, 0xf8, 0xff, 0xf7, 0x15, 0xf7, 0x35, 0xf6, 0x82, 0xf5, 0x0a, 0xf5, + 0x48, 0xf5, 0xd6, 0xf5, 0x1c, 0xf6, 0x2a, 0xf6, 0xe9, 0xf6, 0x67, 0xf7, 0x78, 0xf8, 0x85, 0xf9, + 0xb2, 0xfa, 0xed, 0xfb, 0xe5, 0xfc, 0xf9, 0xfd, 0x07, 0xff, 0x3d, 0xff, 0x00, 0xff, 0x2e, 0xff, + 0xd6, 0xfe, 0xfb, 0xfe, 0x9c, 0xfe, 0x47, 0xfd, 0x0e, 0xfc, 0x8f, 0xfb, 0x37, 0xfb, 0x15, 0xfb, + 0x64, 0xfb, 0x5c, 0xfb, 0xc1, 0xfa, 0xfa, 0xfa, 0x17, 0xfb, 0x26, 0xfc, 0xe8, 0xfc, 0x3a, 0xfd, + 0x3a, 0xfe, 0x4b, 0xff, 0x0a, 0x00, 0x90, 0x00, 0xc8, 0x01, 0xc6, 0x03, 0xa7, 0x05, 0x15, 0x07, + 0x0c, 0x08, 0x39, 0x09, 0x7a, 0x09, 0xfa, 0x09, 0x77, 0x0a, 0xc3, 0x0a, 0x7f, 0x0b, 0xa7, 0x0b, + 0x4b, 0x0b, 0x84, 0x0a, 0x78, 0x09, 0x63, 0x08, 0x46, 0x07, 0xc9, 0x05, 0x5f, 0x04, 0x1d, 0x02, + 0x8c, 0xff, 0xc9, 0xfd, 0x14, 0xfc, 0x00, 0xfb, 0x0f, 0xfa, 0x4e, 0xfa, 0xe1, 0xf9, 0x03, 0xf9, + 0xf8, 0xf7, 0x7d, 0xf7, 0x68, 0xf8, 0xdf, 0xf8, 0x8a, 0xf9, 0x20, 0xfb, 0xac, 0xfc, 0xa9, 0xfc, + 0x04, 0xfd, 0x7c, 0xfd, 0x31, 0xfd, 0x05, 0xfd, 0x87, 0xfc, 0x21, 0xfc, 0x55, 0xfb, 0x4f, 0xfb, + 0x0e, 0xfc, 0x90, 0xfc, 0x0a, 0xfd, 0x8a, 0xfd, 0x67, 0xfe, 0xf3, 0xfe, 0x3a, 0x00, 0x82, 0x00, + 0x74, 0xff, 0x17, 0x00, 0x0e, 0x01, 0x30, 0x01, 0xe2, 0xff, 0x48, 0xfe, 0x6e, 0xfc, 0x6f, 0xfb, + 0x38, 0xfb, 0xb0, 0xfb, 0x38, 0xfc, 0xed, 0xfb, 0xca, 0xfb, 0x0c, 0xfc, 0x19, 0xfd, 0x0a, 0xfe, + 0xed, 0xfd, 0xba, 0xfd, 0x7f, 0xfd, 0x7d, 0xfd, 0x65, 0xfe, 0x78, 0xff, 0x33, 0x01, 0xb2, 0x02, + 0x64, 0x02, 0x85, 0x02, 0xa5, 0x03, 0x59, 0x04, 0x30, 0x05, 0x41, 0x05, 0xa1, 0x06, 0xf2, 0x07, + 0x80, 0x08, 0xf1, 0x09, 0x00, 0x0a, 0xc9, 0x08, 0x1a, 0x08, 0x47, 0x08, 0x05, 0x08, 0x4a, 0x07, + 0xe0, 0x05, 0x6a, 0x04, 0x25, 0x02, 0xa8, 0x00, 0x1a, 0x00, 0x52, 0xff, 0xb5, 0xfe, 0x19, 0xfe, + 0xa7, 0xfc, 0xf3, 0xfb, 0xb7, 0xfc, 0x96, 0xfd, 0x37, 0xfd, 0x0f, 0xfd, 0x55, 0xfd, 0x34, 0xfe, + 0xf3, 0xfe, 0x7a, 0xff, 0x7d, 0x00, 0x20, 0x01, 0xe3, 0x01, 0x93, 0x03, 0xc5, 0x04, 0x21, 0x05, + 0xf6, 0x05, 0xa1, 0x05, 0x78, 0x06, 0x45, 0x07, 0xca, 0x07, 0x33, 0x08, 0x85, 0x08, 0x32, 0x09, + 0x71, 0x09, 0xa1, 0x08, 0xe9, 0x07, 0x79, 0x06, 0xd4, 0x04, 0x81, 0x02, 0xd5, 0x01, 0x6b, 0x01, + 0x3f, 0xff, 0x68, 0xfe, 0x7d, 0xfd, 0x1b, 0xfc, 0xb5, 0xfa, 0x50, 0xfa, 0xf5, 0xf8, 0xe1, 0xf7, + 0x2c, 0xf7, 0x70, 0xf7, 0x4a, 0xf8, 0x5c, 0xf8, 0xd5, 0xf8, 0xc8, 0xf8, 0x5a, 0xf9, 0x52, 0xfb, + 0xbe, 0xfc, 0xf0, 0xfd, 0x58, 0xff, 0x1d, 0x00, 0xdc, 0xff, 0xe7, 0xff, 0x7b, 0x01, 0x59, 0x02, + 0x00, 0x03, 0xda, 0x03, 0xdb, 0x03, 0x81, 0x04, 0x9d, 0x03, 0x7c, 0x02, 0xc3, 0x01, 0xb6, 0xff, + 0x34, 0xff, 0x79, 0xfe, 0xcd, 0xfd, 0x34, 0xfd, 0xaf, 0xfb, 0x45, 0xfb, 0x2a, 0xfc, 0x37, 0xfc, + 0x61, 0xfb, 0xae, 0xfa, 0xfc, 0xfa, 0xf6, 0xfa, 0xfa, 0xfa, 0xcf, 0xfc, 0xc5, 0xfd, 0x17, 0xff, + 0x00, 0xff, 0x76, 0xff, 0x0f, 0x00, 0x17, 0xff, 0x7d, 0xfe, 0xfd, 0xfd, 0x2f, 0xfd, 0x73, 0xfe, + 0x62, 0xfe, 0xe1, 0xfe, 0xaf, 0xff, 0x1c, 0x00, 0x8e, 0x00, 0x86, 0x00, 0xdf, 0x01, 0x6c, 0x02, + 0xb7, 0x01, 0x4a, 0x01, 0x83, 0x01, 0x98, 0x01, 0xbc, 0x00, 0xb1, 0xff, 0x2c, 0xff, 0x18, 0xfe, + 0x20, 0xfd, 0x02, 0xfd, 0xfd, 0xfd, 0xcd, 0xfd, 0x67, 0xfe, 0xe6, 0xfd, 0x9d, 0xfe, 0xba, 0xfe, + 0xfc, 0xff, 0xe2, 0xff, 0xd9, 0xff, 0x9c, 0x00, 0xb7, 0x00, 0x37, 0x01, 0xe1, 0x01, 0xbb, 0x03, + 0x16, 0x05, 0x03, 0x05, 0x35, 0x06, 0xc1, 0x06, 0x32, 0x06, 0xb7, 0x06, 0x93, 0x06, 0x5a, 0x08, + 0x47, 0x09, 0xcc, 0x0a, 0xdc, 0x0b, 0x0c, 0x0b, 0x4d, 0x08, 0x19, 0x07, 0xcb, 0x04, 0x76, 0x03, + 0x8c, 0x01, 0x51, 0xff, 0x80, 0xfe, 0x3b, 0xfd, 0x70, 0xfb, 0x16, 0xf9, 0x7c, 0xf7, 0xce, 0xf6, + 0x08, 0xf6, 0xc9, 0xf4, 0xef, 0xf3, 0x7b, 0xf3, 0x14, 0xf3, 0x54, 0xf2, 0x54, 0xf2, 0x04, 0xf4, + 0x98, 0xf4, 0x0e, 0xf4, 0x1e, 0xf4, 0x8f, 0xf4, 0x77, 0xf5, 0x8f, 0xf5, 0xd9, 0xf5, 0xea, 0xf5, + 0x50, 0xf7, 0xdb, 0xf8, 0x50, 0xfa, 0xba, 0xfc, 0x19, 0xfd, 0x49, 0xfe, 0x92, 0xff, 0xaa, 0x00, + 0x58, 0x02, 0x81, 0x01, 0x8f, 0x00, 0xe0, 0x00, 0xfe, 0x00, 0xcc, 0x00, 0x3e, 0x00, 0xb4, 0xfe, + 0xc8, 0xfd, 0x0f, 0xfe, 0x36, 0xfe, 0x03, 0xff, 0x17, 0xff, 0x47, 0xff, 0x32, 0xff, 0xdb, 0xfe, + 0x51, 0xff, 0x05, 0x00, 0x12, 0x00, 0xf7, 0xff, 0xb7, 0x01, 0x44, 0x02, 0x5e, 0x02, 0x11, 0x04, + 0x9a, 0x05, 0x81, 0x06, 0x64, 0x06, 0xe0, 0x07, 0xe5, 0x09, 0xae, 0x0a, 0x29, 0x0c, 0xf1, 0x0b, + 0x45, 0x0b, 0xe5, 0x0b, 0x1a, 0x0e, 0xfa, 0x0e, 0xef, 0x0f, 0xd2, 0x0f, 0x7e, 0x0d, 0xcc, 0x0c, + 0xb9, 0x0b, 0x53, 0x0a, 0xc9, 0x08, 0xbe, 0x06, 0xe4, 0x03, 0xe7, 0x02, 0x4d, 0x01, 0x08, 0x01, + 0xe9, 0x01, 0x6a, 0xff, 0xdc, 0xfd, 0x0a, 0xfe, 0xd6, 0xfb, 0x1a, 0xfc, 0x09, 0xfc, 0xa2, 0xfc, + 0x46, 0xfe, 0x0d, 0xfe, 0x7d, 0xfe, 0x35, 0xff, 0x35, 0xfe, 0xcc, 0xfc, 0xde, 0xfc, 0xda, 0xfc, + 0xd6, 0xfc, 0xb0, 0xfc, 0x5c, 0xfd, 0x41, 0xfe, 0x57, 0xff, 0xfe, 0xff, 0xd8, 0x00, 0x52, 0x02, + 0x4f, 0x03, 0xe1, 0x02, 0x22, 0x03, 0x7b, 0x03, 0x2a, 0x04, 0xcc, 0x03, 0x26, 0x03, 0x94, 0x02, + 0x4b, 0x01, 0x1c, 0xff, 0xdf, 0xfd, 0x05, 0xfe, 0xdb, 0xfd, 0x41, 0xfe, 0x85, 0xfe, 0xb2, 0xfd, + 0x03, 0xfd, 0xb3, 0xfc, 0x29, 0xfc, 0x6f, 0xfd, 0x16, 0xfd, 0xb8, 0xfc, 0x39, 0xfe, 0x4d, 0xfe, + 0x34, 0x00, 0x84, 0x00, 0xbc, 0xfe, 0x16, 0x02, 0xba, 0x01, 0x72, 0x01, 0x83, 0x02, 0x59, 0x03, + 0xb1, 0x03, 0x82, 0x04, 0x9b, 0x05, 0xc0, 0x05, 0x14, 0x06, 0x90, 0x04, 0x22, 0x05, 0xcf, 0x03, + 0x9c, 0x02, 0x0e, 0x01, 0x0d, 0x01, 0x9e, 0xff, 0x18, 0xff, 0x6e, 0xfb, 0x27, 0xfa, 0xc8, 0xfa, + 0xf8, 0xf8, 0xa6, 0xf8, 0x31, 0xf7, 0xa1, 0xf5, 0xfc, 0xf4, 0x94, 0xf5, 0x1b, 0xf6, 0xa8, 0xf7, + 0x4a, 0xf8, 0x37, 0xf9, 0x64, 0xf8, 0x54, 0xf8, 0x63, 0xf9, 0x16, 0xfa, 0xbe, 0xfc, 0xb9, 0xfe, + 0x7d, 0xfe, 0x21, 0xff, 0x24, 0x01, 0x13, 0x01, 0x1a, 0x02, 0x53, 0x01, 0x88, 0x01, 0xce, 0x05, + 0x99, 0x08, 0x40, 0x0a, 0x99, 0x08, 0x84, 0x06, 0x17, 0x05, 0x9c, 0x02, 0x0b, 0x02, 0x08, 0x03, + 0x72, 0x02, 0x5a, 0x02, 0xe7, 0xff, 0x45, 0x01, 0xdf, 0x00, 0x44, 0x00, 0x0b, 0xff, 0x55, 0xfe, + 0x78, 0xfd, 0xed, 0xfc, 0xcb, 0xfd, 0x43, 0xfb, 0x0f, 0xfc, 0xd4, 0xfc, 0x3a, 0xfc, 0x25, 0xfc, + 0xf9, 0xfb, 0x1b, 0xfb, 0x18, 0xfe, 0x40, 0xfd, 0x67, 0xfc, 0x86, 0xfd, 0xe3, 0xfc, 0x80, 0xfc, + 0x8e, 0xfd, 0x02, 0xfd, 0x91, 0xfa, 0x98, 0xfb, 0x4c, 0xfb, 0x2b, 0xfe, 0x0d, 0xff, 0xf2, 0xff, + 0xf2, 0xfe, 0x58, 0xfe, 0x62, 0xfc, 0xab, 0xfa, 0xef, 0xfa, 0x60, 0xf8, 0xb8, 0xf8, 0x1e, 0xf8, + 0x50, 0xfa, 0x44, 0xfb, 0xe2, 0xfa, 0x85, 0xfa, 0xed, 0xf9, 0x8d, 0xf8, 0xcb, 0xf8, 0xbb, 0xf9, + 0x53, 0xfc, 0x2d, 0xff, 0x05, 0x03, 0xd5, 0x03, 0xf8, 0x02, 0x8b, 0x01, 0x6b, 0x02, 0xed, 0x03, + 0x97, 0x04, 0x7e, 0x05, 0x6d, 0x04, 0xd2, 0x05, 0xac, 0x05, 0x2c, 0x08, 0xcf, 0x08, 0x54, 0x09, + 0xb7, 0x09, 0xd6, 0x09, 0x71, 0x0c, 0x79, 0x0b, 0xe3, 0x09, 0xc1, 0x09, 0xa5, 0x09, 0x20, 0x0a, + 0xaf, 0x09, 0xa4, 0x06, 0xed, 0x03, 0xbf, 0x01, 0x03, 0x00, 0xcc, 0x00, 0x0f, 0x03, 0x21, 0x03, + 0x39, 0x02, 0xe6, 0x01, 0xd2, 0xff, 0x16, 0xfe, 0x30, 0xfd, 0xcf, 0xfc, 0x5b, 0xfc, 0x71, 0xfd, + 0xf1, 0xfe, 0xe7, 0x00, 0xa8, 0x01, 0x4a, 0x01, 0x86, 0x01, 0xc3, 0x02, 0xfb, 0x01, 0x09, 0x03, + 0x37, 0x05, 0xe0, 0x05, 0x4a, 0x08, 0xf6, 0x0b, 0x91, 0x0c, 0xd0, 0x0b, 0x7a, 0x0b, 0xf9, 0x0a, + 0x42, 0x0b, 0x85, 0x09, 0x16, 0x08, 0x70, 0x09, 0x1e, 0x06, 0x2f, 0x03, 0xf0, 0x03, 0xbd, 0x01, + 0x3c, 0xfd, 0xdc, 0xfd, 0xb1, 0xfd, 0xff, 0xfb, 0xdd, 0xf8, 0x1f, 0xf6, 0x25, 0xf6, 0x2e, 0xf7, + 0x06, 0xf7, 0x91, 0xf6, 0x67, 0xf5, 0xa7, 0xf4, 0xdc, 0xf3, 0x89, 0xf4, 0x54, 0xf5, 0x0b, 0xf3, + 0x17, 0xf5, 0xec, 0xf5, 0x20, 0xf8, 0xaf, 0xf8, 0x17, 0xf8, 0x5c, 0xf7, 0x3b, 0xf8, 0xa1, 0xfb, + 0x07, 0xff, 0x3c, 0x02, 0xe4, 0x02, 0xed, 0x00, 0xb3, 0x01, 0x30, 0x00, 0x64, 0x00, 0x5c, 0x01, + 0xfe, 0x00, 0xe6, 0xfe, 0x0b, 0x00, 0xcb, 0x01, 0x03, 0x01, 0xcb, 0x02, 0x51, 0x02, 0x82, 0x03, + 0x86, 0x04, 0xbd, 0x04, 0x82, 0x03, 0xcd, 0x04, 0xd7, 0x04, 0xc6, 0x05, 0x06, 0x0a, 0xd7, 0x0a, + 0xe1, 0x08, 0x87, 0x08, 0xbc, 0x08, 0x3c, 0x09, 0xcd, 0x0a, 0x72, 0x0a, 0xea, 0x0a, 0xb8, 0x0b, + 0xf1, 0x0a, 0x1c, 0x09, 0x9d, 0x07, 0xf2, 0x04, 0x68, 0x04, 0xe5, 0x04, 0xf6, 0x05, 0xba, 0x05, + 0x0b, 0x03, 0x53, 0x02, 0x12, 0x01, 0xd6, 0xff, 0x27, 0xfd, 0x6f, 0xfa, 0x18, 0xf8, 0xfd, 0xf6, + 0xf6, 0xf5, 0x9f, 0xf8, 0xc3, 0xf9, 0x01, 0xf9, 0xb3, 0xf7, 0x6a, 0xf6, 0x55, 0xf5, 0xe7, 0xf5, + 0x6a, 0xf7, 0x3f, 0xf8, 0xb6, 0xfa, 0x63, 0xfa, 0x5b, 0xfa, 0xa5, 0xfb, 0x49, 0xfb, 0xbb, 0xfa, + 0x7e, 0xfb, 0x3b, 0xfa, 0x92, 0xfa, 0x5a, 0xfb, 0xc8, 0xfa, 0x8f, 0xfc, 0x78, 0xff, 0xcc, 0x00, + 0xef, 0xff, 0x31, 0x00, 0x8b, 0x00, 0x35, 0x02, 0x57, 0x02, 0x24, 0x00, 0x98, 0x00, 0x64, 0x02, + 0x48, 0x02, 0x0d, 0x01, 0x98, 0xff, 0x3e, 0xf9, 0xc5, 0xf6, 0x87, 0xf5, 0xc3, 0xf6, 0x5b, 0xf7, + 0xbb, 0xf4, 0x54, 0xf1, 0x3d, 0xf1, 0x2d, 0xf1, 0x16, 0xf0, 0xfb, 0xef, 0x89, 0xef, 0xd4, 0xee, + 0xaa, 0xf0, 0xfb, 0xf1, 0xae, 0xf5, 0x4f, 0xf6, 0x9c, 0xf5, 0xb9, 0xf5, 0xc2, 0xf7, 0x17, 0xfa, + 0xba, 0xfa, 0xa4, 0xfc, 0x6d, 0xfd, 0x06, 0xff, 0xd6, 0xff, 0xcf, 0x03, 0x1a, 0x06, 0xea, 0x06, + 0xe2, 0x07, 0x11, 0x06, 0x21, 0x06, 0xa3, 0x05, 0x18, 0x04, 0xbd, 0x03, 0x76, 0x04, 0xcd, 0x02, + 0x5b, 0x01, 0x29, 0xff, 0xa8, 0xfc, 0xf7, 0xfe, 0xf8, 0xff, 0xcc, 0xfc, 0x93, 0xfd, 0xa9, 0xff, + 0xe6, 0x00, 0xae, 0x03, 0x2d, 0x04, 0x12, 0x02, 0x8c, 0x02, 0xff, 0x02, 0x00, 0x04, 0xc7, 0x08, + 0x9c, 0x08, 0x1d, 0x08, 0x13, 0x09, 0xf4, 0x0b, 0x3b, 0x0a, 0x91, 0x0b, 0xb1, 0x0c, 0xdb, 0x0e, + 0x87, 0x12, 0x0a, 0x14, 0x38, 0x17, 0xdb, 0x17, 0x07, 0x15, 0x44, 0x13, 0xcb, 0x13, 0x30, 0x13, + 0x5b, 0x11, 0x76, 0x10, 0x4b, 0x10, 0x06, 0x0e, 0x28, 0x0c, 0x97, 0x0a, 0x29, 0x0a, 0xc1, 0x09, + 0x43, 0x08, 0x0f, 0x07, 0x25, 0x06, 0xff, 0x03, 0x7e, 0x00, 0xa1, 0xff, 0x22, 0x01, 0x17, 0x02, + 0xf2, 0x02, 0xed, 0x00, 0x69, 0xfe, 0x64, 0x00, 0xdf, 0x02, 0x65, 0x01, 0x1f, 0x01, 0x45, 0x01, + 0x83, 0x01, 0xe8, 0x02, 0x79, 0x02, 0xc0, 0xff, 0x50, 0xfe, 0x90, 0xfc, 0x84, 0xfb, 0x9a, 0xfd, + 0x51, 0xfe, 0x92, 0xfc, 0xbe, 0xfc, 0x3e, 0xfc, 0x21, 0xfb, 0x29, 0xf9, 0x02, 0xf6, 0xa4, 0xf5, + 0x08, 0xf7, 0x8d, 0xf6, 0x97, 0xf7, 0xba, 0xf9, 0xca, 0xf7, 0x72, 0xf5, 0x4a, 0xf5, 0x1b, 0xf5, + 0x8b, 0xf4, 0x03, 0xf6, 0x91, 0xf7, 0xc9, 0xf8, 0x28, 0xf8, 0x0e, 0xf7, 0x3c, 0xf9, 0x7b, 0xf8, + 0x22, 0xf8, 0x42, 0xf7, 0xaf, 0xf9, 0x24, 0xf8, 0xd9, 0xf6, 0xad, 0xf7, 0xa3, 0xf9, 0x6c, 0xfc, + 0x4e, 0xfe, 0x80, 0xfe, 0x4a, 0xfd, 0x61, 0xfd, 0x5e, 0xff, 0x06, 0x00, 0xa8, 0xfe, 0xf4, 0xfe, + 0x75, 0x01, 0x32, 0x04, 0x43, 0x05, 0xcc, 0x03, 0x88, 0x00, 0x68, 0x00, 0xf3, 0xfd, 0x29, 0x01, + 0x76, 0x01, 0x2a, 0x00, 0xc7, 0xfe, 0x82, 0xfe, 0xd6, 0xfe, 0x6e, 0xfc, 0x14, 0xfb, 0x57, 0xfa, + 0x15, 0xfc, 0xda, 0xfc, 0x34, 0xff, 0x8b, 0x03, 0x16, 0x03, 0x89, 0x01, 0xfc, 0x01, 0x53, 0x02, + 0xf4, 0x01, 0x61, 0x03, 0xa8, 0x05, 0x32, 0x07, 0x08, 0x07, 0x10, 0x05, 0x43, 0x07, 0x99, 0x07, + 0x39, 0x06, 0x60, 0x08, 0x80, 0x08, 0xc4, 0x06, 0x57, 0x03, 0x51, 0x00, 0x24, 0xff, 0xf3, 0xfe, + 0x06, 0xff, 0x5d, 0xfc, 0xc7, 0xf8, 0xd9, 0xf5, 0x10, 0xf5, 0x93, 0xf6, 0xa5, 0xf3, 0xbe, 0xf1, + 0x75, 0xf2, 0x7c, 0xf5, 0x93, 0xf8, 0xe7, 0xf7, 0xe9, 0xf5, 0x35, 0xf4, 0x0f, 0xf3, 0x02, 0xf3, + 0xc8, 0xf4, 0x28, 0xf5, 0x03, 0xf5, 0x26, 0xf7, 0x33, 0xf9, 0x7f, 0xf9, 0x80, 0xf9, 0x02, 0xfb, + 0x51, 0xfd, 0xaf, 0xfe, 0x30, 0x00, 0x79, 0x03, 0x8d, 0x04, 0x78, 0x04, 0x70, 0x04, 0x34, 0x04, + 0x1f, 0x03, 0xf4, 0x01, 0x65, 0x03, 0x65, 0x06, 0x11, 0x07, 0xd7, 0x03, 0xaa, 0x04, 0xe2, 0x03, + 0xbc, 0x02, 0xcf, 0x03, 0x48, 0x07, 0x5e, 0x07, 0xa1, 0x05, 0xb5, 0x03, 0x79, 0x03, 0x8b, 0x05, + 0x8d, 0x05, 0x98, 0x05, 0x4c, 0x05, 0x90, 0x03, 0x0b, 0x05, 0x6a, 0x08, 0xa1, 0x07, 0x97, 0x05, + 0x80, 0x05, 0x2d, 0x09, 0x5a, 0x0a, 0x92, 0x0c, 0xf7, 0x09, 0x75, 0x09, 0x89, 0x09, 0xc0, 0x08, + 0x02, 0x0b, 0x4a, 0x0b, 0x6b, 0x0a, 0x80, 0x09, 0x64, 0x0a, 0x8d, 0x08, 0xab, 0x05, 0xa6, 0x03, + 0x30, 0x02, 0x73, 0x01, 0x9f, 0xff, 0x14, 0x00, 0xa8, 0xff, 0x55, 0xfe, 0xc0, 0xfc, 0x85, 0xfb, + 0x88, 0xfa, 0x8a, 0xf8, 0x02, 0xf9, 0x09, 0xfb, 0x97, 0xfa, 0x26, 0xfa, 0xb2, 0xfa, 0x63, 0xfb, + 0xf3, 0xf8, 0x07, 0xf9, 0xad, 0xf9, 0x78, 0xfa, 0x72, 0xfa, 0x9c, 0xf9, 0x32, 0xfb, 0x71, 0xfe, + 0x18, 0x00, 0x2a, 0x01, 0x4c, 0x01, 0x6c, 0x01, 0x32, 0x02, 0xc4, 0x04, 0x0e, 0x06, 0x1e, 0x04, + 0x39, 0x04, 0xd0, 0x04, 0x5d, 0x07, 0xc3, 0x08, 0x95, 0x07, 0x50, 0x05, 0xd0, 0x03, 0x0f, 0x02, + 0xe8, 0x00, 0x41, 0x00, 0x2f, 0xff, 0xca, 0xfe, 0x5c, 0xff, 0x93, 0xfe, 0xc3, 0xfc, 0x30, 0xfb, + 0x21, 0xfa, 0x27, 0xfb, 0xa4, 0xfb, 0x28, 0xfc, 0x63, 0xfe, 0x8b, 0xff, 0x60, 0xff, 0x56, 0xff, + 0x4c, 0xff, 0x92, 0xfc, 0xb3, 0xfc, 0xdb, 0xfd, 0x88, 0xff, 0x4c, 0x00, 0x9d, 0x01, 0x77, 0x02, + 0xc7, 0x02, 0x8c, 0x04, 0x0a, 0x07, 0x7c, 0x09, 0xad, 0x08, 0xaf, 0x05, 0x2e, 0x04, 0x82, 0x04, + 0x9d, 0x04, 0x36, 0x04, 0xe7, 0x01, 0x01, 0xff, 0x61, 0xfb, 0x1f, 0xfc, 0xf6, 0xfc, 0x92, 0xfb, + 0xa7, 0xf9, 0x37, 0xfa, 0xbb, 0xfb, 0xea, 0xfc, 0x0e, 0xfd, 0x3b, 0xfc, 0x07, 0xfd, 0x17, 0xfc, + 0x78, 0xfd, 0x2a, 0xfd, 0xf0, 0xfb, 0x93, 0xfb, 0x3e, 0xfc, 0xfa, 0xfd, 0x54, 0xfd, 0xef, 0xfd, + 0xab, 0xfd, 0xf1, 0xfe, 0x1e, 0x00, 0xbe, 0x00, 0x63, 0x02, 0x92, 0x03, 0xce, 0x03, 0x37, 0x04, + 0x7d, 0x03, 0x3d, 0x01, 0x1c, 0x00, 0x99, 0x00, 0xda, 0xff, 0xf3, 0x00, 0x4f, 0xff, 0xba, 0xfe, + 0xd9, 0xfc, 0x83, 0xfb, 0xea, 0xfb, 0x34, 0xfd, 0xa0, 0xfc, 0xc5, 0xf9, 0xcb, 0xf7, 0xd9, 0xf7, + 0x27, 0xf9, 0x04, 0xfa, 0xb6, 0xfa, 0xef, 0xfa, 0xc3, 0xfb, 0x05, 0xfc, 0x84, 0xfd, 0x33, 0xfd, + 0xb7, 0xfb, 0x10, 0xfc, 0x19, 0xff, 0x8a, 0x00, 0x7b, 0x01, 0xaf, 0xff, 0xc6, 0xfe, 0x48, 0xff, + 0x90, 0xff, 0x0f, 0x01, 0x93, 0x01, 0x41, 0x02, 0xe6, 0x01, 0x19, 0x02, 0xa8, 0x02, 0x8c, 0x00, + 0x4c, 0xfe, 0x22, 0xfe, 0x10, 0xff, 0xed, 0xfd, 0x7c, 0xfd, 0x5f, 0xfd, 0xfc, 0xfd, 0x33, 0xfe, + 0xf7, 0xfd, 0x10, 0xfc, 0x4c, 0xfb, 0xaf, 0xfa, 0xf0, 0xfa, 0x57, 0xfd, 0x20, 0xfe, 0xa0, 0xfe, + 0xe7, 0xfe, 0x06, 0xfe, 0xd7, 0xfe, 0x12, 0x01, 0xec, 0x00, 0xd3, 0x00, 0xe4, 0xfe, 0x3b, 0x00, + 0xe6, 0x02, 0xce, 0x04, 0x25, 0x05, 0x6d, 0x05, 0xaa, 0x05, 0x47, 0x04, 0x9e, 0x05, 0x6f, 0x06, + 0x5b, 0x05, 0x0b, 0x05, 0x25, 0x06, 0xc5, 0x06, 0x00, 0x09, 0xdf, 0x07, 0xdc, 0x05, 0x6e, 0x04, + 0xa5, 0x02, 0x7a, 0x00, 0xc6, 0xff, 0x3c, 0x00, 0x04, 0xff, 0x53, 0xff, 0x31, 0xfe, 0x50, 0xfc, + 0x3d, 0xfa, 0xf6, 0xfa, 0x4d, 0xfd, 0x30, 0xff, 0x59, 0x00, 0xf4, 0xff, 0x74, 0x01, 0x8e, 0x03, + 0x8c, 0x02, 0x3e, 0x03, 0x3f, 0x02, 0xb9, 0x02, 0x8a, 0x02, 0x1e, 0x05, 0x73, 0x06, 0x3e, 0x06, + 0xa4, 0x06, 0xec, 0x05, 0x53, 0x08, 0xfb, 0x09, 0xbb, 0x0a, 0xa0, 0x08, 0x7f, 0x05, 0x48, 0x03, + 0xfd, 0x03, 0x7f, 0x04, 0x2a, 0x03, 0x1b, 0x02, 0xcc, 0x00, 0x9a, 0xfd, 0x87, 0xfc, 0xdb, 0xfa, + 0x9e, 0xf9, 0x25, 0xf8, 0x92, 0xf8, 0x2c, 0xfa, 0xa3, 0xfb, 0x74, 0xfb, 0xbd, 0xf8, 0x6a, 0xf9, + 0xa8, 0xf8, 0x07, 0xf7, 0x4e, 0xf7, 0x9e, 0xf7, 0xcd, 0xf7, 0xc7, 0xf8, 0x7e, 0xfc, 0x6a, 0xfc, + 0x80, 0xfc, 0x0d, 0xfc, 0x98, 0xfd, 0x69, 0x00, 0xfc, 0x01, 0x8f, 0x02, 0x41, 0x05, 0xdb, 0x06, + 0x2c, 0x06, 0xca, 0x05, 0x94, 0x05, 0x4e, 0x04, 0x48, 0x05, 0xfd, 0x06, 0xe7, 0x06, 0x4c, 0x06, + 0xcb, 0x03, 0x61, 0x03, 0x06, 0x03, 0x2d, 0x04, 0x1e, 0x06, 0xb4, 0x05, 0x62, 0x03, 0x4d, 0x00, + 0x73, 0x00, 0x26, 0x00, 0x63, 0x00, 0x3e, 0x00, 0x49, 0x01, 0x97, 0x01, 0x62, 0x01, 0xea, 0x00, + 0xd4, 0xff, 0xba, 0xfe, 0x3f, 0xfe, 0xaa, 0xff, 0xce, 0x02, 0xaf, 0x03, 0xc2, 0x02, 0x60, 0x03, + 0xea, 0x02, 0x26, 0x02, 0x46, 0x02, 0x18, 0x04, 0x4c, 0x04, 0xf6, 0x04, 0x3d, 0x05, 0xf2, 0x03, + 0xde, 0x01, 0x5b, 0xfe, 0x0e, 0xfd, 0xaf, 0xfe, 0xa8, 0xfd, 0x45, 0xfb, 0xc9, 0xfb, 0x66, 0xfe, + 0xe9, 0xfc, 0x26, 0xfc, 0x6b, 0xf9, 0x70, 0xf7, 0xf5, 0xf6, 0x09, 0xf7, 0xf9, 0xfa, 0x47, 0xfa, + 0xcd, 0xf9, 0x53, 0xf8, 0xfd, 0xf7, 0x05, 0xf8, 0x94, 0xf8, 0x71, 0xfa, 0x86, 0xf9, 0x21, 0xf8, + 0xc0, 0xf8, 0x14, 0xfa, 0xc9, 0xfc, 0xee, 0xfc, 0x57, 0xfe, 0x30, 0x01, 0xd5, 0x01, 0x93, 0x02, + 0x00, 0x03, 0x9c, 0x02, 0x15, 0x01, 0xa4, 0x02, 0xd5, 0x04, 0x4c, 0x07, 0xef, 0x05, 0x78, 0x04, + 0x09, 0x03, 0xd1, 0xff, 0x96, 0xfe, 0xd0, 0xfc, 0x3c, 0xfd, 0xea, 0xfc, 0x5d, 0xfd, 0x3b, 0xfd, + 0x3c, 0xfb, 0x82, 0xf7, 0x28, 0xf6, 0x51, 0xf8, 0x53, 0xfa, 0x7d, 0xfa, 0x03, 0xfd, 0x28, 0xff, + 0xce, 0xff, 0xeb, 0xfe, 0x13, 0xfe, 0x20, 0xfd, 0xcc, 0xfb, 0x4d, 0xfc, 0xbd, 0xfe, 0xfa, 0xff, + 0xd1, 0xff, 0x83, 0x00, 0x22, 0x02, 0x83, 0x03, 0x6a, 0x06, 0x04, 0x07, 0xed, 0x06, 0x15, 0x05, + 0xa4, 0x03, 0xe9, 0x02, 0x78, 0x02, 0xfc, 0x00, 0xde, 0xfe, 0xfc, 0xff, 0x5a, 0xff, 0xc4, 0xfd, + 0x9e, 0xfd, 0x18, 0xfb, 0xb8, 0xf8, 0xaa, 0xf9, 0xd8, 0xfa, 0x62, 0xfd, 0x2d, 0xfe, 0x1d, 0xff, + 0x89, 0xff, 0x8e, 0xff, 0x63, 0xfe, 0x0f, 0xfd, 0xa6, 0xfc, 0x94, 0xfd, 0xc5, 0xfe, 0x72, 0x01, + 0xd2, 0x01, 0xa2, 0xff, 0x9f, 0xfe, 0x0a, 0x01, 0x17, 0x02, 0x1d, 0x03, 0xe7, 0x03, 0xe8, 0x06, + 0x9a, 0x09, 0x43, 0x08, 0x95, 0x08, 0x0d, 0x06, 0x32, 0x04, 0x9a, 0x03, 0x16, 0x07, 0x22, 0x09, + 0x5d, 0x07, 0x09, 0x05, 0x6f, 0x03, 0xbc, 0x02, 0x17, 0x03, 0x9a, 0x03, 0xed, 0x02, 0xc4, 0x01, + 0x44, 0xff, 0xc6, 0xff, 0x56, 0x01, 0x1f, 0x01, 0x73, 0x00, 0xe9, 0x02, 0xac, 0x02, 0xd0, 0x02, + 0xae, 0x02, 0xbe, 0x02, 0x34, 0x01, 0x99, 0x01, 0x74, 0x02, 0xf8, 0x02, 0x24, 0x05, 0xf7, 0x04, + 0x95, 0x06, 0x19, 0x07, 0xd9, 0x05, 0xcd, 0x04, 0x1d, 0x06, 0x8a, 0x06, 0x26, 0x07, 0x36, 0x08, + 0xb3, 0x07, 0x53, 0x04, 0xd8, 0x01, 0x31, 0x01, 0xe8, 0x00, 0x8b, 0xff, 0x63, 0xfd, 0xe7, 0xfd, + 0x26, 0x00, 0xd5, 0xfe, 0x7c, 0xfd, 0xae, 0xfa, 0x55, 0xf7, 0x93, 0xf5, 0x85, 0xf6, 0x41, 0xf9, + 0x13, 0xfa, 0x4e, 0xf9, 0x4c, 0xf9, 0x76, 0xf9, 0x43, 0xfa, 0x93, 0xfa, 0x7c, 0xfb, 0x9f, 0xfb, + 0x4b, 0xfb, 0xa2, 0xfc, 0x42, 0xfe, 0x17, 0xff, 0x0e, 0xfe, 0xd5, 0xff, 0xbd, 0x01, 0x69, 0x02, + 0xa8, 0x02, 0x6b, 0x02, 0xaf, 0x01, 0xdc, 0x01, 0x3e, 0x02, 0xcc, 0x03, 0x42, 0x06, 0xa1, 0x06, + 0xdc, 0x05, 0xa3, 0x05, 0xdf, 0x02, 0x7f, 0xff, 0xc2, 0xfd, 0xf8, 0xfc, 0x85, 0xfb, 0x9f, 0xfc, + 0xe3, 0xfb, 0x6d, 0xfa, 0x4f, 0xf9, 0x88, 0xf8, 0xe3, 0xf9, 0x97, 0xfa, 0x97, 0xfa, 0x48, 0xfc, + 0x8c, 0xff, 0xea, 0x00, 0x43, 0x01, 0x66, 0x00, 0xe4, 0xfe, 0x9c, 0xfd, 0x53, 0xfe, 0x01, 0x02, + 0x1b, 0x04, 0x41, 0x04, 0x78, 0x03, 0x19, 0x05, 0xae, 0x05, 0xc2, 0x06, 0x5b, 0x07, 0x9d, 0x06, + 0x58, 0x04, 0x4d, 0x04, 0x7b, 0x04, 0x7c, 0x04, 0xa7, 0x02, 0x59, 0x01, 0x27, 0x01, 0x8b, 0xff, + 0x26, 0xfd, 0xeb, 0xfb, 0x3a, 0xfa, 0x4b, 0xf8, 0x9b, 0xf7, 0x90, 0xf6, 0xdd, 0xf7, 0x3f, 0xf7, + 0x64, 0xf7, 0x4e, 0xf7, 0x29, 0xf6, 0x39, 0xf4, 0xb6, 0xf2, 0xb2, 0xf2, 0x34, 0xf3, 0xf6, 0xf4, + 0xca, 0xf5, 0x9a, 0xf5, 0x2f, 0xf5, 0x26, 0xf5, 0x3a, 0xf7, 0x67, 0xf8, 0x65, 0xf9, 0x25, 0xfa, + 0xdf, 0xfc, 0xad, 0xff, 0xb2, 0x01, 0x6c, 0x02, 0x79, 0x00, 0xc0, 0xff, 0x2e, 0xff, 0xfd, 0x01, + 0xd1, 0x04, 0xa8, 0x03, 0x6f, 0x02, 0x51, 0x02, 0x5c, 0x03, 0x49, 0x04, 0x15, 0x05, 0x6f, 0x04, + 0x50, 0x02, 0xdb, 0x01, 0xac, 0x01, 0x69, 0x02, 0x04, 0x02, 0xe2, 0x00, 0xdd, 0x02, 0xaa, 0x03, + 0xd2, 0x02, 0xe0, 0x01, 0xac, 0x01, 0xaa, 0x00, 0x4d, 0x01, 0xf4, 0x01, 0xb1, 0x02, 0xf6, 0x04, + 0x7c, 0x04, 0xef, 0x05, 0xf0, 0x05, 0xc1, 0x05, 0xe0, 0x04, 0xcc, 0x05, 0xb3, 0x07, 0x63, 0x08, + 0x4c, 0x09, 0x72, 0x08, 0xc5, 0x05, 0x37, 0x04, 0x60, 0x03, 0xa7, 0x03, 0xf4, 0x03, 0x03, 0x02, + 0xd1, 0x02, 0xe4, 0x03, 0x59, 0x04, 0x7e, 0x03, 0xa5, 0x00, 0x8d, 0xff, 0x59, 0xfd, 0x57, 0xff, + 0xa8, 0x01, 0x54, 0x01, 0x22, 0xff, 0x18, 0x00, 0x97, 0x00, 0x93, 0x02, 0xa9, 0x02, 0x58, 0x02, + 0x67, 0x02, 0xa2, 0x01, 0xc0, 0x02, 0x1b, 0x04, 0x13, 0x05, 0xcb, 0x04, 0xf2, 0x06, 0xda, 0x09, + 0x9f, 0x09, 0x0b, 0x08, 0xf1, 0x08, 0xeb, 0x07, 0x5d, 0x09, 0xc1, 0x08, 0x52, 0x09, 0x78, 0x0a, + 0x2b, 0x0a, 0x88, 0x09, 0x9b, 0x08, 0x95, 0x06, 0x05, 0x02, 0x72, 0x00, 0x10, 0x00, 0xc6, 0xff, + 0x79, 0xff, 0x31, 0xfd, 0x1d, 0xfb, 0x32, 0xf9, 0xf7, 0xf7, 0xf9, 0xf7, 0x5b, 0xf9, 0x63, 0xf9, + 0xd2, 0xf8, 0x0d, 0xfc, 0x76, 0xfd, 0x96, 0xfd, 0x3f, 0xfc, 0x9c, 0xf9, 0x1c, 0xf8, 0x27, 0xf8, + 0xa0, 0xfb, 0x54, 0xfd, 0x34, 0xfd, 0xad, 0xfc, 0x9b, 0xfd, 0x65, 0x00, 0xda, 0x01, 0x5d, 0x02, + 0xb0, 0x02, 0xb2, 0x01, 0xfb, 0xff, 0x6f, 0xfe, 0x54, 0xfe, 0xd9, 0xfc, 0xe9, 0xfd, 0x22, 0xff, + 0xc7, 0xfd, 0xc6, 0xfa, 0xa6, 0xf7, 0xfb, 0xf6, 0x1d, 0xf6, 0x52, 0xf6, 0xcf, 0xf5, 0x37, 0xf8, + 0xce, 0xf9, 0x6b, 0xf9, 0xb8, 0xfa, 0x1e, 0xfa, 0x39, 0xf8, 0x2b, 0xf7, 0x07, 0xf8, 0xa8, 0xf9, + 0xfe, 0xfa, 0xc7, 0xfa, 0xa0, 0xfa, 0x65, 0xfa, 0x70, 0xf9, 0x4d, 0xfa, 0x1f, 0xfd, 0x00, 0xfe, + 0xd2, 0xfd, 0xbe, 0x00, 0x3d, 0x02, 0xaf, 0x03, 0xfc, 0x02, 0xae, 0x01, 0xb2, 0xff, 0xb0, 0x00, + 0x8f, 0x02, 0xd7, 0x04, 0x0e, 0x04, 0xfb, 0x00, 0xf3, 0xff, 0xbe, 0xff, 0xf6, 0xfe, 0xf7, 0xfd, + 0x0f, 0xfe, 0xb7, 0xfd, 0x5c, 0xfd, 0x26, 0xfd, 0x82, 0xfd, 0x1c, 0xfc, 0x3e, 0xfc, 0x14, 0xfe, + 0x4c, 0x00, 0xf5, 0xfe, 0x3e, 0xfe, 0x7e, 0xfd, 0x13, 0xfd, 0x0f, 0xfd, 0xe0, 0xfc, 0x7f, 0xff, + 0xfe, 0x00, 0xec, 0x01, 0x5b, 0x03, 0x3d, 0x04, 0x62, 0x03, 0x6c, 0x01, 0x0d, 0x02, 0x46, 0x04, + 0x90, 0x06, 0x6c, 0x06, 0x14, 0x06, 0x8c, 0x04, 0x3e, 0x01, 0x3c, 0x00, 0x62, 0x01, 0x5b, 0x01, + 0x60, 0xff, 0x56, 0xff, 0xac, 0xff, 0x89, 0xff, 0x50, 0xfe, 0x73, 0xfa, 0xbe, 0xf8, 0xab, 0xf7, + 0xcb, 0xf8, 0x9b, 0xfb, 0xe7, 0xfb, 0xf9, 0xf9, 0x06, 0xfa, 0x88, 0xfb, 0xab, 0xfc, 0x69, 0xfc, + 0xfc, 0xfd, 0xfd, 0xfd, 0xe8, 0xfe, 0x09, 0xff, 0xc8, 0xff, 0xee, 0x00, 0xe9, 0x00, 0x1f, 0x04, + 0x57, 0x07, 0xe6, 0x07, 0xe8, 0x06, 0xaf, 0x07, 0xe5, 0x08, 0xc7, 0x09, 0xa2, 0x09, 0xa9, 0x0a, + 0x93, 0x0c, 0x35, 0x0d, 0x53, 0x0e, 0x29, 0x0e, 0x45, 0x0c, 0xdb, 0x06, 0xe4, 0x03, 0x66, 0x04, + 0x3e, 0x05, 0x0b, 0x05, 0x3a, 0x04, 0xe4, 0x02, 0x2c, 0x00, 0x10, 0xff, 0x6b, 0xff, 0x71, 0x00, + 0xb5, 0xff, 0x9d, 0x00, 0x60, 0x03, 0x75, 0x06, 0x8a, 0x06, 0xa8, 0x03, 0x39, 0x02, 0x30, 0x01, + 0x7f, 0x01, 0x66, 0x05, 0x3e, 0x07, 0xa2, 0x05, 0x64, 0x05, 0x13, 0x06, 0x1f, 0x07, 0xfb, 0x06, + 0xd3, 0x07, 0x55, 0x08, 0xf8, 0x08, 0xb3, 0x07, 0x07, 0x06, 0xdd, 0x04, 0x21, 0x03, 0xc4, 0x02, + 0xa1, 0x04, 0x43, 0x04, 0xf4, 0x00, 0x65, 0xff, 0x90, 0xfd, 0x4c, 0xfc, 0xf6, 0xfa, 0x9e, 0xf9, + 0x47, 0xfa, 0xdc, 0xfa, 0x50, 0xfa, 0xff, 0xfa, 0xd0, 0xfa, 0xf8, 0xf7, 0x65, 0xf6, 0x5c, 0xf7, + 0xf2, 0xf7, 0xb8, 0xf7, 0xf9, 0xf7, 0xe8, 0xf7, 0x13, 0xf7, 0x85, 0xf6, 0xe3, 0xf5, 0xdc, 0xf6, + 0x6f, 0xf7, 0xf0, 0xf6, 0xd8, 0xfa, 0xff, 0xfd, 0xe6, 0xff, 0xcb, 0xfe, 0x5a, 0xfe, 0x03, 0xfd, + 0xdf, 0xfc, 0x26, 0xff, 0x16, 0x02, 0x47, 0x01, 0x2b, 0x01, 0xd8, 0x01, 0x2a, 0x02, 0x72, 0x01, + 0x1c, 0x00, 0x4f, 0x01, 0x49, 0x02, 0xb0, 0x02, 0x6a, 0x01, 0x09, 0x01, 0x04, 0xff, 0x27, 0xfe, + 0x1e, 0x00, 0x80, 0x01, 0xea, 0xff, 0x5e, 0xff, 0xf8, 0xfe, 0x54, 0xfe, 0xa8, 0xfe, 0xb6, 0xfc, + 0xb9, 0xfd, 0x26, 0xfe, 0x26, 0xff, 0x67, 0x01, 0x6d, 0x02, 0x52, 0x00, 0x56, 0xfe, 0x41, 0xff, + 0xdf, 0xff, 0x46, 0x01, 0x7c, 0x01, 0x8b, 0x01, 0xdf, 0xff, 0x42, 0xfe, 0xb0, 0xfc, 0x7f, 0xfd, + 0xaa, 0xfd, 0x5e, 0xfb, 0x29, 0xfc, 0x06, 0xfe, 0x0e, 0xfe, 0x3b, 0xfd, 0x6a, 0xfb, 0x5c, 0xf9, + 0x88, 0xf7, 0xe2, 0xf7, 0x52, 0xfa, 0x78, 0xfa, 0x80, 0xfa, 0xe4, 0xfa, 0xc8, 0xfc, 0x52, 0xfd, + 0x8a, 0xfc, 0x5b, 0xfd, 0x38, 0xfe, 0xe4, 0xff, 0x82, 0xff, 0xfe, 0x00, 0x9a, 0x01, 0x85, 0x01, + 0xdd, 0x03, 0x7c, 0x06, 0x92, 0x06, 0x07, 0x06, 0xea, 0x05, 0xc8, 0x06, 0xb6, 0x07, 0x85, 0x06, + 0x65, 0x05, 0x88, 0x05, 0x9f, 0x05, 0x48, 0x06, 0xe9, 0x06, 0x79, 0x04, 0xa6, 0x00, 0x0c, 0xfe, + 0xb3, 0xfc, 0x04, 0xfd, 0x67, 0xfc, 0xcb, 0xfb, 0x9c, 0xfb, 0x77, 0xf9, 0xd0, 0xf7, 0xda, 0xf7, + 0xce, 0xf8, 0x97, 0xf7, 0x98, 0xf9, 0x84, 0xfc, 0x72, 0xff, 0xcf, 0xff, 0x14, 0xff, 0x6f, 0xfe, + 0x09, 0xfe, 0xa4, 0xfe, 0xc4, 0x00, 0x3d, 0x03, 0x13, 0x03, 0xf9, 0x03, 0xfa, 0x05, 0xdb, 0x07, + 0x08, 0x07, 0x9f, 0x06, 0x95, 0x07, 0xc2, 0x08, 0xf8, 0x07, 0x13, 0x07, 0xd8, 0x05, 0xbf, 0x04, + 0x48, 0x05, 0x6e, 0x06, 0x04, 0x06, 0x8d, 0x02, 0x28, 0x00, 0x6d, 0xfe, 0xbd, 0xfe, 0xba, 0xfd, + 0xbc, 0xfc, 0x73, 0xfc, 0x52, 0xfc, 0x7c, 0xfd, 0x54, 0xfe, 0xaf, 0xfe, 0xa4, 0xfc, 0x68, 0xfb, + 0xf3, 0xfa, 0xbc, 0xfb, 0x3b, 0xfb, 0x61, 0xfa, 0x13, 0xfb, 0xc9, 0xfa, 0x54, 0xfa, 0x2b, 0xfb, + 0x5a, 0xfc, 0x6d, 0xfc, 0xf4, 0xfc, 0x79, 0xff, 0xd1, 0x01, 0x16, 0x04, 0xc8, 0x03, 0x7a, 0x03, + 0xbb, 0x03, 0x14, 0x03, 0x7c, 0x04, 0x3a, 0x06, 0x45, 0x05, 0x9d, 0x04, 0xfc, 0x03, 0x36, 0x04, + 0x7e, 0x01, 0x3d, 0x00, 0xa5, 0x00, 0xf6, 0x01, 0x5c, 0x02, 0x62, 0x00, 0xee, 0xfe, 0x18, 0xfe, + 0x85, 0xfd, 0x1e, 0xff, 0x37, 0x00, 0x5f, 0xfe, 0xcb, 0xfc, 0x1a, 0xfc, 0xaa, 0xfc, 0x28, 0xfd, + 0x28, 0xfc, 0xbf, 0xfc, 0x9f, 0xfe, 0xa5, 0x00, 0x41, 0x02, 0x83, 0x03, 0xdc, 0x02, 0xab, 0x01, + 0xce, 0x02, 0x11, 0x05, 0x5e, 0x06, 0x7a, 0x06, 0x1e, 0x07, 0xfd, 0x05, 0x9b, 0x05, 0xee, 0x03, + 0x72, 0x04, 0x70, 0x03, 0xa9, 0x01, 0x6e, 0x01, 0xb6, 0x01, 0x66, 0x02, 0xcd, 0xff, 0x99, 0xfd, + 0xbb, 0xfb, 0xa0, 0xf9, 0x9a, 0xf8, 0x9a, 0xf9, 0xf2, 0xf8, 0xbc, 0xf8, 0xc0, 0xf9, 0xda, 0xfb, + 0x04, 0xfc, 0xab, 0xfa, 0xbb, 0xfa, 0x17, 0xfc, 0x9f, 0xfd, 0xc0, 0xfc, 0x60, 0xfd, 0xd0, 0xfd, + 0x55, 0xfe, 0xdf, 0xff, 0x2e, 0x03, 0x7e, 0x03, 0x20, 0x03, 0x09, 0x03, 0xe8, 0x03, 0x38, 0x06, + 0x2f, 0x05, 0xc7, 0x04, 0x6f, 0x06, 0x13, 0x08, 0xd6, 0x07, 0xeb, 0x07, 0x62, 0x06, 0x46, 0x03, + 0x05, 0x01, 0xd7, 0x00, 0x50, 0x01, 0x5d, 0x01, 0xf6, 0x00, 0x5a, 0x00, 0x96, 0xff, 0x14, 0xfe, + 0x23, 0xfd, 0xb6, 0xfd, 0x96, 0xfd, 0x69, 0xfe, 0x14, 0x01, 0x3d, 0x03, 0x01, 0x03, 0x2b, 0x01, + 0x27, 0x00, 0x1e, 0x00, 0x3c, 0xff, 0x7d, 0x00, 0xb5, 0x00, 0x08, 0x00, 0xc0, 0xff, 0x79, 0x00, + 0x95, 0x01, 0xb6, 0x00, 0x55, 0x00, 0x17, 0x02, 0xe5, 0x03, 0x8a, 0x02, 0xd0, 0x00, 0x13, 0x00, + 0xb8, 0xff, 0x25, 0x00, 0x72, 0x01, 0x5a, 0x02, 0xf1, 0xff, 0x9e, 0xfd, 0x78, 0xfc, 0x45, 0xfd, + 0xdc, 0xfb, 0x0e, 0xf9, 0x7f, 0xf9, 0xad, 0xfa, 0x6e, 0xfb, 0x2f, 0xfc, 0x6d, 0xfc, 0xd3, 0xfa, + 0xc1, 0xf9, 0xb1, 0xf8, 0x30, 0xfa, 0x41, 0xfa, 0x98, 0xf9, 0xe8, 0xf8, 0x25, 0xf8, 0xa7, 0xf7, + 0x71, 0xf6, 0xb8, 0xf7, 0xbb, 0xf7, 0xc4, 0xf8, 0xa4, 0xfb, 0x04, 0xff, 0x1c, 0x01, 0xbb, 0x00, + 0x42, 0x00, 0x9d, 0x00, 0x21, 0x00, 0x0a, 0x01, 0xe2, 0x02, 0x01, 0x03, 0x0d, 0x03, 0xd3, 0x02, + 0x4e, 0x03, 0xeb, 0x00, 0x93, 0xff, 0x95, 0x00, 0x39, 0x03, 0x21, 0x03, 0x24, 0x01, 0x80, 0xff, + 0xc3, 0xfe, 0x19, 0xfe, 0x08, 0xff, 0xd5, 0x00, 0x17, 0x00, 0xb0, 0xfe, 0xb6, 0xfd, 0xf9, 0xfe, + 0xad, 0xfe, 0x44, 0xfd, 0x17, 0xfe, 0xa8, 0x00, 0xed, 0x02, 0xc2, 0x04, 0x89, 0x05, 0xcf, 0x04, + 0x2c, 0x03, 0x87, 0x02, 0xf1, 0x03, 0x56, 0x05, 0x25, 0x05, 0x9c, 0x04, 0x72, 0x04, 0xca, 0x03, + 0x1f, 0x02, 0x89, 0x01, 0x9e, 0x00, 0x8d, 0xff, 0x6a, 0xff, 0xa0, 0x00, 0xbf, 0x00, 0x37, 0xfe, + 0xe4, 0xfb, 0xd4, 0xfa, 0x98, 0xf9, 0xff, 0xf8, 0x20, 0xfa, 0xd8, 0xfa, 0x06, 0xfc, 0x81, 0xfd, + 0x4c, 0xff, 0xd8, 0xfe, 0xdc, 0xfd, 0x9e, 0xfe, 0x9e, 0x01, 0x84, 0x04, 0xd8, 0x03, 0x11, 0x04, + 0xe0, 0x04, 0x66, 0x05, 0xa2, 0x06, 0x49, 0x0a, 0x80, 0x0b, 0x09, 0x0b, 0x9b, 0x0a, 0xfd, 0x0b, + 0xd0, 0x0c, 0x6e, 0x0a, 0xce, 0x09, 0x49, 0x0a, 0xc8, 0x0b, 0xdd, 0x0b, 0xfd, 0x0b, 0x84, 0x0a, + 0xd1, 0x06, 0x64, 0x03, 0x15, 0x02, 0x3b, 0x02, 0xcc, 0x00, 0xd7, 0xff, 0x7e, 0xff, 0xd1, 0xfe, + 0x0f, 0xfc, 0x64, 0xfa, 0x9d, 0xf9, 0xca, 0xf8, 0xf3, 0xf8, 0x23, 0xfb, 0x71, 0xfd, 0x0e, 0xfd, + 0xd8, 0xfb, 0x44, 0xfb, 0x7b, 0xfb, 0xfc, 0xf9, 0xe0, 0xfa, 0x99, 0xfb, 0x02, 0xfe, 0xf3, 0xfe, + 0x07, 0x00, 0xf3, 0xff, 0xbc, 0xfe, 0x69, 0xfe, 0x18, 0x01, 0x6d, 0x04, 0x4d, 0x04, 0xc2, 0x03, + 0x66, 0x04, 0x18, 0x04, 0x3f, 0x04, 0x0f, 0x06, 0xfe, 0x05, 0x22, 0x04, 0xff, 0x01, 0x06, 0x01, + 0xc3, 0x00, 0x8b, 0xfe, 0x55, 0xfb, 0x01, 0xfb, 0x43, 0xfc, 0xa1, 0xfc, 0xf9, 0xfc, 0xef, 0xfc, + 0x6c, 0xfb, 0x7b, 0xf8, 0x4c, 0xf7, 0x09, 0xf8, 0x02, 0xf7, 0x26, 0xf6, 0x12, 0xf6, 0x36, 0xf7, + 0x0a, 0xf7, 0x8b, 0xf5, 0x42, 0xf6, 0x64, 0xf6, 0x07, 0xf8, 0x6c, 0xfa, 0x82, 0xfd, 0x96, 0xff, + 0x76, 0xff, 0xbe, 0xff, 0xec, 0x00, 0xef, 0x00, 0xfc, 0x00, 0xe5, 0x00, 0x20, 0x02, 0x45, 0x03, + 0xdc, 0x02, 0xe1, 0x02, 0x52, 0x00, 0x1e, 0xfe, 0x72, 0xfe, 0xe9, 0x00, 0x94, 0x00, 0xa4, 0xff, + 0xb0, 0xfe, 0x74, 0xfd, 0xfc, 0xfb, 0xb2, 0xfc, 0xb5, 0xfd, 0x43, 0xfc, 0xe2, 0xfb, 0x8b, 0xfa, + 0xd6, 0xfb, 0xdb, 0xfb, 0x2f, 0xfa, 0xa8, 0xfa, 0x9a, 0xfc, 0x79, 0xfe, 0xc4, 0xff, 0x96, 0x01, + 0x94, 0x01, 0xaa, 0x00, 0xe0, 0xff, 0x31, 0x01, 0xad, 0x01, 0x88, 0x01, 0xe8, 0x01, 0xcd, 0x02, + 0x6f, 0x02, 0xfb, 0xff, 0x5a, 0xfe, 0xf7, 0xfc, 0xa5, 0xfc, 0xf0, 0xfc, 0x5e, 0xfe, 0x6b, 0xfe, + 0x6a, 0xfd, 0x4f, 0xfb, 0x41, 0xfb, 0xa8, 0xf9, 0x2a, 0xf8, 0x17, 0xf8, 0x7e, 0xf9, 0x71, 0xfb, + 0xdc, 0xfc, 0x72, 0xfe, 0x85, 0xfd, 0x49, 0xfc, 0x20, 0xfd, 0x6b, 0xff, 0xf0, 0x00, 0xf6, 0x00, + 0xe7, 0x00, 0x26, 0x01, 0x6c, 0x01, 0x55, 0x03, 0x5b, 0x05, 0xe5, 0x05, 0x5c, 0x05, 0xc7, 0x04, + 0x6a, 0x06, 0x9c, 0x07, 0x96, 0x06, 0x95, 0x05, 0xa1, 0x06, 0x72, 0x07, 0x1f, 0x08, 0x9c, 0x08, + 0xd5, 0x07, 0x2d, 0x06, 0x9f, 0x03, 0x65, 0x03, 0x34, 0x04, 0x02, 0x03, 0xd9, 0x02, 0x7f, 0x03, + 0x6b, 0x04, 0xa0, 0x03, 0x19, 0x02, 0x52, 0x01, 0x42, 0x01, 0xa6, 0x01, 0xd8, 0x02, 0xfb, 0x04, + 0xa0, 0x05, 0xd0, 0x04, 0x12, 0x05, 0x7a, 0x05, 0x7f, 0x03, 0xbb, 0x02, 0xfb, 0x02, 0xfc, 0x04, + 0xbf, 0x05, 0x35, 0x07, 0xa1, 0x06, 0x45, 0x05, 0x8f, 0x04, 0xf5, 0x05, 0x5f, 0x08, 0x69, 0x08, + 0x72, 0x07, 0xa8, 0x06, 0x61, 0x07, 0x24, 0x07, 0x33, 0x08, 0x6b, 0x08, 0xc3, 0x06, 0x92, 0x04, + 0xd3, 0x02, 0x75, 0x02, 0x24, 0x00, 0x91, 0xfd, 0x25, 0xfd, 0x3c, 0xfe, 0xa4, 0xfe, 0xd7, 0xfe, + 0x07, 0xfe, 0x3c, 0xfd, 0xaf, 0xfb, 0xf9, 0xfa, 0xd6, 0xfb, 0x9a, 0xfa, 0x46, 0xf9, 0xa2, 0xf8, + 0x99, 0xf9, 0xea, 0xf8, 0xa9, 0xf7, 0x53, 0xf7, 0xdd, 0xf8, 0xd5, 0xfa, 0x07, 0xfd, 0xcc, 0xff, + 0x3f, 0x01, 0xcd, 0x00, 0xbb, 0x01, 0xbc, 0x03, 0x23, 0x03, 0x41, 0x02, 0x9d, 0x01, 0xda, 0x02, + 0x9a, 0x03, 0xbc, 0x03, 0xd9, 0x02, 0x99, 0x00, 0x3c, 0xfe, 0x21, 0xfd, 0x5d, 0xfe, 0xc4, 0xfe, + 0xd5, 0xfc, 0x82, 0xfb, 0x72, 0xfb, 0x92, 0xfa, 0xd0, 0xfa, 0x38, 0xfa, 0x40, 0xf9, 0x58, 0xf8, + 0xac, 0xf7, 0x50, 0xf8, 0x70, 0xf8, 0xfb, 0xf7, 0x1b, 0xf8, 0x55, 0xfa, 0xc0, 0xfc, 0x4e, 0xfe, + 0x3b, 0xff, 0x06, 0xff, 0x5c, 0xfe, 0xe3, 0xfd, 0xca, 0xfe, 0x55, 0xff, 0x8f, 0xff, 0xd6, 0xff, + 0x19, 0x01, 0x4e, 0x01, 0x07, 0xff, 0x7b, 0xfd, 0xf9, 0xfc, 0x88, 0xfd, 0x10, 0xfd, 0x56, 0xfd, + 0xa2, 0xfc, 0x93, 0xfa, 0x8c, 0xf8, 0x32, 0xf9, 0xb1, 0xf7, 0x99, 0xf6, 0x8f, 0xf5, 0x81, 0xf7, + 0x05, 0xfa, 0x60, 0xfa, 0xe3, 0xfa, 0xa5, 0xfa, 0xb0, 0xfa, 0x77, 0xfa, 0x13, 0xfd, 0xdd, 0xfe, + 0x69, 0xfe, 0xda, 0xfd, 0xc3, 0xfe, 0x1a, 0x00, 0xb1, 0x01, 0xf9, 0x03, 0x7a, 0x04, 0xfa, 0x04, + 0xe2, 0x03, 0x66, 0x04, 0x4b, 0x05, 0x14, 0x05, 0x0b, 0x05, 0x83, 0x06, 0xdc, 0x07, 0x76, 0x08, + 0xbb, 0x08, 0x9a, 0x07, 0x56, 0x06, 0x01, 0x04, 0x6d, 0x03, 0xca, 0x02, 0xf8, 0x01, 0x3e, 0x01, + 0xce, 0x01, 0x50, 0x02, 0xe6, 0xff, 0x46, 0xfd, 0x30, 0xfc, 0xff, 0xfb, 0x60, 0xfc, 0x6f, 0xfd, + 0xf8, 0xfe, 0x1f, 0xff, 0x3a, 0xfe, 0xf2, 0xfe, 0x57, 0xff, 0x38, 0xfe, 0x75, 0xfc, 0x6e, 0xfd, + 0x24, 0x00, 0xe9, 0x00, 0xb0, 0x00, 0xcf, 0x00, 0x75, 0x00, 0x53, 0xff, 0x9e, 0x01, 0x05, 0x05, + 0xf1, 0x06, 0x7c, 0x06, 0xc4, 0x06, 0xd2, 0x07, 0x3e, 0x08, 0x82, 0x09, 0x10, 0x0a, 0x07, 0x0a, + 0x4d, 0x08, 0x2c, 0x06, 0x77, 0x05, 0x7e, 0x03, 0xc9, 0x01, 0x60, 0x01, 0x8d, 0x02, 0x66, 0x03, + 0xc2, 0x02, 0x29, 0x01, 0x1e, 0x00, 0xd8, 0xfd, 0xbb, 0xfc, 0x5b, 0xfd, 0xda, 0xfc, 0x33, 0xfc, + 0xe7, 0xfb, 0xa8, 0xfd, 0x5f, 0xfc, 0x47, 0xfa, 0x7b, 0xf9, 0x16, 0xfb, 0x72, 0xfc, 0x75, 0xfe, + 0x37, 0x00, 0xd4, 0x01, 0xc1, 0x01, 0xc5, 0x02, 0x0f, 0x05, 0x85, 0x04, 0x2e, 0x03, 0x55, 0x02, + 0x81, 0x05, 0xdd, 0x06, 0xb0, 0x06, 0x36, 0x06, 0x33, 0x04, 0xb3, 0x01, 0xdd, 0x00, 0xcd, 0x02, + 0xaa, 0x03, 0x4f, 0x02, 0xea, 0x00, 0x22, 0x01, 0xe6, 0xff, 0x67, 0xff, 0xfb, 0xfe, 0x4c, 0xff, + 0xd7, 0xfe, 0xa3, 0xfe, 0x5e, 0xff, 0x73, 0xff, 0xf7, 0xfe, 0xa7, 0xfe, 0xb9, 0x00, 0x01, 0x03, + 0x56, 0x04, 0x63, 0x04, 0x92, 0x04, 0xe3, 0x03, 0xa9, 0x02, 0x49, 0x03, 0xb2, 0x03, 0xee, 0x03, + 0xa7, 0x04, 0xef, 0x05, 0x22, 0x05, 0x87, 0x01, 0x82, 0xfe, 0x5b, 0xfd, 0xeb, 0xfd, 0x0f, 0xfe, + 0xd0, 0xfd, 0x1e, 0xfd, 0x26, 0xfb, 0x64, 0xf9, 0x6b, 0xf9, 0x2a, 0xf8, 0x9d, 0xf5, 0x0a, 0xf4, + 0x13, 0xf6, 0xd5, 0xf7, 0xb7, 0xf8, 0x09, 0xf9, 0xfc, 0xf8, 0x93, 0xf8, 0x41, 0xf8, 0x1d, 0xfa, + 0x1f, 0xfc, 0x62, 0xfc, 0x18, 0xfc, 0xdd, 0xfd, 0xc7, 0xfe, 0x0f, 0xff, 0x5b, 0x00, 0x93, 0x01, + 0xae, 0x02, 0xe8, 0x01, 0xb1, 0x01, 0x31, 0x02, 0xcf, 0x01, 0xd0, 0x00, 0x2c, 0x02, 0x03, 0x04, + 0x35, 0x04, 0xa2, 0x03, 0x9d, 0x03, 0xb4, 0x03, 0xbc, 0x01, 0xec, 0x00, 0x24, 0xff, 0xf5, 0xfe, + 0x3c, 0xff, 0xff, 0x00, 0x0c, 0x02, 0xa7, 0x00, 0x70, 0xfd, 0x69, 0xfb, 0xab, 0xfb, 0x21, 0xfc, + 0x2e, 0xfd, 0x76, 0xfe, 0xcd, 0xfe, 0xec, 0xfd, 0x30, 0xff, 0x4d, 0xfe, 0x16, 0xfc, 0x7d, 0xfa, + 0x03, 0xfc, 0x9b, 0xfe, 0x50, 0xff, 0x12, 0x00, 0xfb, 0xff, 0x38, 0xff, 0xb0, 0xfd, 0x3a, 0xff, + 0x03, 0x02, 0x98, 0x03, 0x1a, 0x03, 0x7a, 0x04, 0x4b, 0x05, 0xb9, 0x04, 0xd7, 0x04, 0x1a, 0x05, + 0xa2, 0x05, 0x13, 0x04, 0xc9, 0x01, 0x01, 0x01, 0xc9, 0xff, 0x6f, 0xfd, 0xe4, 0xfc, 0xe0, 0xfd, + 0x89, 0xfe, 0xdc, 0xfd, 0x38, 0xfd, 0xb9, 0xfc, 0x3b, 0xfb, 0x7e, 0xfa, 0x65, 0xf9, 0xd7, 0xf8, + 0x74, 0xf8, 0xe1, 0xf7, 0x3a, 0xf9, 0x30, 0xf9, 0xbd, 0xf7, 0x66, 0xf7, 0x24, 0xf9, 0x32, 0xfb, + 0x09, 0xfd, 0xa2, 0xfe, 0xc2, 0x00, 0x7c, 0x01, 0x44, 0x04, 0x88, 0x05, 0xaf, 0x04, 0x24, 0x03, + 0xf5, 0x02, 0xbe, 0x05, 0x69, 0x07, 0xa1, 0x07, 0x69, 0x07, 0x88, 0x05, 0x3e, 0x02, 0x71, 0x00, + 0xbb, 0x01, 0x00, 0x03, 0xfd, 0x01, 0xd9, 0x01, 0x7c, 0x02, 0x14, 0x01, 0xb9, 0xff, 0xaa, 0xfe, + 0x37, 0xff, 0x67, 0xfe, 0x55, 0xfd, 0x87, 0xfd, 0xf0, 0xfd, 0x72, 0xfd, 0x3d, 0xfd, 0xc3, 0xff, + 0x83, 0x01, 0x5c, 0x02, 0xe9, 0x01, 0xad, 0x02, 0xa2, 0x02, 0x75, 0x02, 0x2f, 0x02, 0xf7, 0x01, + 0xe6, 0x02, 0x5c, 0x03, 0x0f, 0x06, 0x37, 0x06, 0xf5, 0x03, 0xab, 0x01, 0xe7, 0x00, 0xb4, 0x00, + 0x13, 0x01, 0xcf, 0xff, 0xb4, 0xfe, 0x95, 0xfd, 0x7a, 0xfd, 0xdb, 0xfd, 0xcc, 0xfc, 0xd2, 0xfa, + 0x27, 0xf9, 0x42, 0xfb, 0xd7, 0xfc, 0x60, 0xfe, 0x11, 0xff, 0xa8, 0xff, 0x60, 0xfe, 0xce, 0xfd, + 0xb5, 0xfe, 0xf4, 0xff, 0x39, 0x00, 0x7a, 0x00, 0xab, 0x02, 0x8a, 0x03, 0xff, 0x03, 0x4b, 0x04, + 0x3f, 0x05, 0xec, 0x05, 0x97, 0x05, 0x9a, 0x05, 0x85, 0x06, 0xbe, 0x06, 0xd9, 0x06, 0x15, 0x08, + 0x73, 0x09, 0xb6, 0x09, 0xaa, 0x08, 0xd0, 0x08, 0xe0, 0x08, 0xe2, 0x07, 0x29, 0x06, 0x61, 0x04, + 0xa3, 0x03, 0x15, 0x03, 0xc5, 0x03, 0xd4, 0x03, 0x5f, 0x01, 0xaa, 0xfd, 0x2d, 0xfc, 0xbd, 0xfb, + 0x87, 0xfc, 0x18, 0xfc, 0xd3, 0xfb, 0x8f, 0xfc, 0x0a, 0xfd, 0xeb, 0xfd, 0x31, 0xfd, 0x25, 0xfb, + 0xc3, 0xf8, 0x7b, 0xf9, 0x78, 0xfb, 0x31, 0xfc, 0x54, 0xfc, 0x21, 0xfc, 0xf3, 0xfb, 0x70, 0xfb, + 0xdc, 0xfc, 0x8f, 0xff, 0xba, 0x01, 0x2f, 0x02, 0x72, 0x04, 0xcd, 0x05, 0xd5, 0x05, 0xf4, 0x05, + 0x6d, 0x06, 0xbd, 0x06, 0xe3, 0x04, 0x0c, 0x03, 0xc5, 0x01, 0x91, 0x01, 0xb7, 0xff, 0x42, 0xff, + 0x57, 0xff, 0xda, 0xfe, 0x05, 0xfd, 0xd5, 0xfb, 0x70, 0xfc, 0x13, 0xfb, 0x42, 0xfa, 0x13, 0xf9, + 0x0c, 0xf9, 0x9c, 0xf8, 0x1b, 0xf9, 0xf8, 0xf9, 0x42, 0xf9, 0x54, 0xf7, 0x0d, 0xf6, 0x2f, 0xf7, + 0xa3, 0xf9, 0xda, 0xfa, 0x3d, 0xfb, 0xdd, 0xfc, 0x7b, 0xfd, 0x68, 0xff, 0xd0, 0xff, 0x00, 0x00, + 0x49, 0xfe, 0x5f, 0xfe, 0x43, 0x00, 0x2c, 0x02, 0xaf, 0x02, 0xf8, 0x01, 0x0c, 0x01, 0x07, 0xff, + 0x74, 0xfd, 0x69, 0xfd, 0xb1, 0xfe, 0x34, 0xfe, 0x84, 0xfe, 0x71, 0xfe, 0x1f, 0xfd, 0xea, 0xfb, + 0x8c, 0xfb, 0xcd, 0xfc, 0x6a, 0xfd, 0xc0, 0xfc, 0x94, 0xfc, 0x55, 0xfd, 0xbd, 0xfd, 0x39, 0xfe, + 0x79, 0x00, 0xa4, 0x02, 0x2b, 0x02, 0xc0, 0x01, 0xcd, 0x02, 0x52, 0x03, 0xd3, 0x02, 0xb7, 0x01, + 0xc7, 0x01, 0xe3, 0x01, 0xe5, 0x01, 0xad, 0x02, 0xed, 0x02, 0xea, 0x00, 0xfb, 0xfd, 0x68, 0xfd, + 0xb0, 0xfe, 0xfc, 0xfe, 0x7a, 0xfd, 0x78, 0xfd, 0xdb, 0xfc, 0x28, 0xfc, 0x6a, 0xfb, 0xa7, 0xfa, + 0x09, 0xf9, 0x3a, 0xf7, 0x01, 0xf9, 0xc8, 0xfa, 0xe3, 0xfb, 0x9f, 0xfb, 0xf2, 0xfb, 0x9a, 0xfb, + 0x4f, 0xfb, 0xc2, 0xfb, 0xe7, 0xfd, 0xd7, 0xfe, 0xf7, 0xff, 0x19, 0x02, 0xa0, 0x02, 0x73, 0x03, + 0xbb, 0x03, 0x4e, 0x05, 0x3f, 0x06, 0x1d, 0x06, 0x75, 0x05, 0xee, 0x05, 0xe9, 0x05, 0xab, 0x05, + 0x45, 0x07, 0x26, 0x09, 0xf3, 0x09, 0xe7, 0x08, 0xcb, 0x09, 0xb6, 0x09, 0xd2, 0x08, 0x64, 0x07, + 0xeb, 0x05, 0x1b, 0x06, 0xf1, 0x05, 0xbc, 0x06, 0xe8, 0x06, 0x80, 0x04, 0xce, 0x00, 0x84, 0xff, + 0xaa, 0xff, 0x5d, 0x00, 0x9b, 0xfe, 0x69, 0xfe, 0x95, 0xfe, 0xff, 0xfe, 0xf8, 0xfe, 0xcc, 0xfe, + 0xfd, 0xfd, 0x78, 0xfc, 0x7b, 0xfd, 0xa5, 0xff, 0x6c, 0x01, 0x63, 0x01, 0x87, 0x01, 0x98, 0x01, + 0xa8, 0x01, 0x7a, 0x01, 0x62, 0x03, 0x70, 0x05, 0xad, 0x06, 0xc8, 0x08, 0xb7, 0x09, 0x7a, 0x09, + 0xb2, 0x08, 0xde, 0x08, 0xe3, 0x09, 0x71, 0x09, 0x07, 0x07, 0xb6, 0x05, 0x37, 0x04, 0x11, 0x02, + 0xed, 0x01, 0x17, 0x02, 0xf7, 0x01, 0x34, 0x00, 0x0b, 0xff, 0x47, 0xff, 0x25, 0xfe, 0x23, 0xfc, + 0xa8, 0xf9, 0x5d, 0xf9, 0xe0, 0xf8, 0xfc, 0xf8, 0xc0, 0xfa, 0x59, 0xfa, 0xbe, 0xf7, 0x15, 0xf7, + 0xca, 0xf8, 0x51, 0xfb, 0x10, 0xfc, 0x48, 0xfd, 0x4d, 0xff, 0x2e, 0x00, 0x1a, 0x01, 0x64, 0x01, + 0xbc, 0x01, 0x0c, 0x00, 0xcf, 0x00, 0xef, 0x02, 0x2f, 0x04, 0x87, 0x03, 0xa2, 0x02, 0x22, 0x02, + 0xac, 0x00, 0xa7, 0xfe, 0x27, 0xfe, 0x57, 0xff, 0x5c, 0xff, 0xfc, 0xff, 0xbf, 0x00, 0x6f, 0xff, + 0x57, 0xfd, 0x38, 0xfc, 0xe5, 0xfc, 0xa4, 0xfc, 0x30, 0xfb, 0x67, 0xfa, 0xac, 0xfa, 0xf7, 0xf9, + 0x48, 0xfa, 0x30, 0xfb, 0x98, 0xfc, 0xdd, 0xfb, 0xd4, 0xfb, 0x0f, 0xfd, 0x73, 0xfd, 0x99, 0xfc, + 0xcf, 0xfa, 0xdf, 0xfb, 0x32, 0xfc, 0xad, 0xfd, 0x88, 0xff, 0x74, 0x00, 0x31, 0xfe, 0x22, 0xfc, + 0x75, 0xfb, 0x0c, 0xfc, 0x5b, 0xfb, 0x71, 0xfa, 0x14, 0xfb, 0xa3, 0xfb, 0x2f, 0xfb, 0xa6, 0xfa, + 0x34, 0xfa, 0xcc, 0xf7, 0x25, 0xf7, 0xba, 0xf8, 0xc1, 0xfb, 0xdb, 0xfc, 0xba, 0xfc, 0xe3, 0xfc, + 0xa5, 0xfc, 0x58, 0xfb, 0x9d, 0xfa, 0x11, 0xfd, 0x17, 0xfe, 0xc6, 0xfe, 0xfc, 0xff, 0x33, 0x00, + 0xd0, 0xff, 0xd0, 0xff, 0x31, 0x01, 0xca, 0x02, 0x27, 0x03, 0x81, 0x02, 0x0f, 0x03, 0x8e, 0x03, + 0x23, 0x04, 0x80, 0x05, 0xf8, 0x06, 0x20, 0x07, 0x96, 0x06, 0xad, 0x07, 0x31, 0x08, 0x89, 0x07, + 0x33, 0x05, 0xfa, 0x03, 0x21, 0x03, 0xd5, 0x02, 0x29, 0x04, 0x90, 0x04, 0xa6, 0x01, 0xc5, 0xfe, + 0x57, 0xfd, 0x6e, 0xfd, 0x47, 0xfd, 0xae, 0xfb, 0x7a, 0xfc, 0x2e, 0xfd, 0xf7, 0xfd, 0x3a, 0xfe, + 0x91, 0xfe, 0x24, 0xfd, 0x28, 0xfb, 0x74, 0xfb, 0x6a, 0xfd, 0xde, 0xfe, 0x30, 0xfe, 0x35, 0xff, + 0x51, 0x00, 0xbb, 0xff, 0xeb, 0xfe, 0xbf, 0x00, 0x40, 0x03, 0x65, 0x05, 0xc5, 0x08, 0x34, 0x0a, + 0xef, 0x09, 0x9c, 0x08, 0x65, 0x08, 0x50, 0x09, 0xae, 0x09, 0xbf, 0x07, 0x45, 0x06, 0x49, 0x04, + 0x93, 0x02, 0x69, 0x01, 0x7f, 0x01, 0x27, 0x01, 0x36, 0xff, 0x53, 0xff, 0x4f, 0xff, 0x51, 0xff, + 0x29, 0xfd, 0xc7, 0xfb, 0x92, 0xfb, 0x05, 0xfc, 0x1d, 0xfd, 0x8f, 0xfe, 0xc4, 0xfd, 0x1e, 0xfc, + 0xcc, 0xfb, 0xe3, 0xfc, 0x6d, 0xfe, 0x4c, 0xfe, 0x47, 0xff, 0x3c, 0x01, 0xfe, 0x02, 0x88, 0x03, + 0x60, 0x04, 0xa3, 0x04, 0xab, 0x03, 0xd8, 0x03, 0x16, 0x06, 0x5f, 0x07, 0xb8, 0x06, 0x96, 0x06, + 0x76, 0x06, 0xb5, 0x05, 0x49, 0x02, 0x6f, 0x01, 0x1d, 0x01, 0xc2, 0x00, 0x87, 0x01, 0xb2, 0x01, + 0xc6, 0x01, 0xf6, 0xff, 0xc8, 0xfe, 0x69, 0xff, 0x15, 0x00, 0xc4, 0xfe, 0x56, 0xfe, 0x63, 0xff, + 0x80, 0xff, 0x5e, 0x00, 0xcc, 0x01, 0x00, 0x03, 0x5d, 0x02, 0x27, 0x03, 0xe7, 0x04, 0x9f, 0x05, + 0x18, 0x04, 0xfb, 0x01, 0x4c, 0x01, 0x6d, 0x01, 0x35, 0x02, 0x90, 0x03, 0xae, 0x03, 0xac, 0x01, + 0x53, 0x00, 0xa9, 0xff, 0x5f, 0x00, 0xf8, 0xfe, 0x54, 0xfe, 0x85, 0xfe, 0xbb, 0xfe, 0x12, 0xfe, + 0xad, 0xfc, 0xbd, 0xfb, 0x9e, 0xf8, 0x4c, 0xf7, 0x50, 0xf8, 0x86, 0xf9, 0x51, 0xf9, 0xef, 0xf8, + 0x09, 0xf9, 0xee, 0xf8, 0x5c, 0xf7, 0xf3, 0xf5, 0x38, 0xf7, 0x18, 0xf8, 0x19, 0xfa, 0xa9, 0xfb, + 0x91, 0xfc, 0x2e, 0xfc, 0xb9, 0xfb, 0xbf, 0xfc, 0xa5, 0xfe, 0x80, 0xfe, 0x58, 0xfd, 0x47, 0xfd, + 0x56, 0xfd, 0xff, 0xfe, 0xb0, 0x00, 0x0c, 0x03, 0x52, 0x03, 0x9f, 0x03, 0x50, 0x04, 0x70, 0x05, + 0x06, 0x06, 0x75, 0x04, 0x91, 0x03, 0x23, 0x03, 0x2f, 0x03, 0x4d, 0x03, 0xa4, 0x03, 0x65, 0x02, + 0xec, 0x00, 0xd3, 0xfe, 0x5b, 0xfe, 0x10, 0xfd, 0xe7, 0xfa, 0xa4, 0xfa, 0x4c, 0xfb, 0x99, 0xfb, + 0x90, 0xfb, 0xc1, 0xfb, 0x74, 0xfa, 0x72, 0xf9, 0x50, 0xfa, 0x2b, 0xfc, 0xd6, 0xfc, 0x7b, 0xfd, + 0x41, 0xfe, 0xf8, 0xff, 0xc1, 0xff, 0x03, 0xfe, 0xdf, 0xfe, 0x91, 0x00, 0xab, 0x02, 0x27, 0x05, + 0x29, 0x07, 0x18, 0x07, 0xf0, 0x05, 0xc5, 0x05, 0x1b, 0x07, 0xf5, 0x07, 0x6e, 0x06, 0x01, 0x05, + 0x48, 0x03, 0xe2, 0x02, 0xe4, 0x01, 0x7d, 0x01, 0x4a, 0x01, 0x20, 0xff, 0xe4, 0xfe, 0xbd, 0xfd, + 0xfc, 0xfc, 0x30, 0xfa, 0x4f, 0xf8, 0xdd, 0xf7, 0xb5, 0xf8, 0x99, 0xf9, 0x21, 0xfa, 0x6e, 0xf9, + 0xcf, 0xf8, 0x00, 0xf8, 0x4d, 0xf9, 0xd5, 0xfa, 0x08, 0xfb, 0x60, 0xfc, 0xbe, 0xfd, 0x6e, 0xff, + 0x48, 0x00, 0x96, 0x01, 0x58, 0x01, 0x21, 0x01, 0xb0, 0x01, 0xb6, 0x02, 0x66, 0x04, 0x9b, 0x03, + 0x7b, 0x03, 0xf9, 0x03, 0xbe, 0x03, 0xa2, 0x00, 0xde, 0xff, 0x01, 0x01, 0xcd, 0x01, 0x6f, 0x03, + 0x83, 0x04, 0x13, 0x04, 0x5c, 0x02, 0x66, 0x01, 0x56, 0x01, 0xda, 0x02, 0x2d, 0x01, 0xc5, 0xff, + 0x1f, 0xff, 0x9a, 0x00, 0x4a, 0x01, 0x26, 0x02, 0x21, 0x03, 0xa8, 0x02, 0xe4, 0x02, 0x5f, 0x03, + 0x13, 0x04, 0xaa, 0x02, 0x24, 0x01, 0x8e, 0x00, 0xb1, 0x01, 0x30, 0x02, 0x20, 0x03, 0xf9, 0x02, + 0xaf, 0x01, 0xb6, 0xff, 0x11, 0xff, 0x2b, 0xff, 0xd2, 0xfd, 0x3d, 0xfe, 0xff, 0xfe, 0x17, 0x00, + 0x07, 0x00, 0xb4, 0xff, 0xff, 0xfe, 0x7e, 0xfe, 0x0c, 0xff, 0xf4, 0xff, 0x8f, 0x01, 0xe4, 0x01, + 0xc2, 0x00, 0x02, 0x02, 0x0e, 0x03, 0xd6, 0x01, 0xe6, 0x00, 0x86, 0x01, 0xf3, 0x01, 0xe9, 0x02, + 0xe5, 0x03, 0x53, 0x04, 0x5b, 0x03, 0x1d, 0x02, 0x67, 0x02, 0x6c, 0x04, 0xf6, 0x03, 0x05, 0x02, + 0x7b, 0x01, 0xcb, 0x01, 0xb7, 0x02, 0x08, 0x03, 0x09, 0x05, 0x15, 0x05, 0xce, 0x05, 0x4e, 0x06, + 0x0e, 0x07, 0x3b, 0x06, 0x2f, 0x04, 0x34, 0x03, 0x04, 0x04, 0x65, 0x04, 0x36, 0x04, 0xcf, 0x04, + 0xe7, 0x03, 0x78, 0x02, 0x26, 0x01, 0x45, 0x00, 0xdd, 0xfe, 0x87, 0xfd, 0x7d, 0xfc, 0xae, 0xfd, + 0x60, 0xfe, 0x50, 0xfd, 0xf6, 0xfb, 0x94, 0xfa, 0x55, 0xf9, 0xe2, 0xf8, 0xa3, 0xfa, 0x66, 0xfb, + 0x35, 0xfb, 0x93, 0xfa, 0x42, 0xfc, 0xd5, 0xfb, 0xef, 0xf9, 0xc8, 0xfa, 0x83, 0xfc, 0x10, 0xff, + 0xf9, 0x00, 0x6e, 0x02, 0xaa, 0x02, 0x40, 0x02, 0xcf, 0x02, 0xe7, 0x04, 0x6d, 0x05, 0xdc, 0x03, + 0x8c, 0x02, 0x04, 0x02, 0x0f, 0x02, 0x10, 0x01, 0xab, 0x00, 0xfd, 0xff, 0xb8, 0xff, 0x9d, 0xff, + 0xae, 0xff, 0xc5, 0xfe, 0xb5, 0xfb, 0x72, 0xf9, 0x27, 0xfa, 0x02, 0xfb, 0xf5, 0xfa, 0x02, 0xfb, + 0x5f, 0xfa, 0xd8, 0xf9, 0x92, 0xf8, 0x0e, 0xf9, 0x8b, 0xf9, 0xec, 0xf8, 0x33, 0xf8, 0x68, 0xf9, + 0xc4, 0xfb, 0xe2, 0xfb, 0xc2, 0xfb, 0xa6, 0xfb, 0xbd, 0xfa, 0xb0, 0xfa, 0x6a, 0xfc, 0xa1, 0xfd, + 0x55, 0xfe, 0xb7, 0xfe, 0x1a, 0x00, 0x30, 0x00, 0xd8, 0xfd, 0xf5, 0xfc, 0x2e, 0xfd, 0xe7, 0xfe, + 0x06, 0x01, 0xed, 0x02, 0x65, 0x03, 0x64, 0x02, 0xda, 0x01, 0xfb, 0x02, 0x5e, 0x04, 0x1f, 0x03, + 0xf7, 0x01, 0xbc, 0x01, 0x8a, 0x02, 0x3f, 0x02, 0x95, 0x02, 0x43, 0x03, 0x28, 0x03, 0xae, 0x03, + 0x1d, 0x04, 0x29, 0x04, 0xf6, 0x00, 0x3b, 0xfe, 0x81, 0xfd, 0x7e, 0xfd, 0x92, 0xfd, 0x22, 0xfd, + 0xb1, 0xfc, 0x29, 0xfc, 0x48, 0xfa, 0xfb, 0xf8, 0xe7, 0xf8, 0xac, 0xf8, 0xea, 0xf7, 0x3f, 0xf9, + 0x27, 0xfc, 0x7d, 0xfc, 0xbc, 0xfc, 0x13, 0xfc, 0x49, 0xfc, 0xee, 0xfb, 0x93, 0xfd, 0x0d, 0xff, + 0xc0, 0xff, 0x08, 0x00, 0xc5, 0x00, 0x7f, 0x02, 0x66, 0x01, 0x7e, 0x00, 0x43, 0x01, 0xbd, 0x02, + 0x54, 0x04, 0xcc, 0x05, 0xb9, 0x06, 0x22, 0x06, 0x75, 0x04, 0x1c, 0x05, 0x26, 0x06, 0xd6, 0x04, + 0x56, 0x03, 0xff, 0x02, 0xcb, 0x03, 0xb8, 0x03, 0x8b, 0x03, 0xc4, 0x03, 0x87, 0x03, 0xa2, 0x03, + 0xff, 0x04, 0x3f, 0x06, 0xe9, 0x04, 0x7c, 0x02, 0x16, 0x01, 0x66, 0x02, 0x28, 0x03, 0xf5, 0x03, + 0xae, 0x04, 0x11, 0x05, 0xca, 0x03, 0x47, 0x02, 0xfc, 0x01, 0xcc, 0x00, 0x14, 0xff, 0x72, 0xfe, + 0xc2, 0x00, 0xf4, 0x01, 0x80, 0x01, 0x2b, 0x01, 0xa8, 0x00, 0xd0, 0xff, 0x97, 0xff, 0x8c, 0x00, + 0x81, 0x01, 0x06, 0x02, 0x20, 0x02, 0x07, 0x03, 0x04, 0x02, 0xdc, 0xff, 0x54, 0xff, 0xf6, 0xff, + 0x4a, 0x01, 0x8f, 0x02, 0xf8, 0x02, 0x22, 0x02, 0x9a, 0x00, 0x3f, 0x00, 0x30, 0x02, 0xf1, 0x01, + 0x62, 0x00, 0x8a, 0xff, 0x84, 0xff, 0x48, 0x00, 0x4b, 0x00, 0xe7, 0x00, 0x20, 0x00, 0xd3, 0xff, + 0x7d, 0xff, 0xc2, 0xff, 0xa1, 0xfe, 0x8e, 0xfc, 0x0f, 0xfb, 0xfc, 0xfb, 0x13, 0xfd, 0xdc, 0xfd, + 0x62, 0xfe, 0x40, 0xff, 0x6e, 0xff, 0x15, 0xfe, 0x14, 0xfe, 0x3e, 0xfd, 0xaf, 0xfc, 0xe2, 0xfb, + 0x0d, 0xfe, 0xac, 0xff, 0x9d, 0xff, 0xd8, 0xfe, 0x32, 0xfe, 0x8a, 0xfd, 0x5d, 0xfc, 0x6e, 0xfc, + 0x5d, 0xfc, 0x9b, 0xfc, 0x88, 0xfc, 0xea, 0xfd, 0xbf, 0xfd, 0x55, 0xfc, 0x81, 0xfb, 0x30, 0xfc, + 0x10, 0xfe, 0xab, 0x00, 0x07, 0x03, 0xc5, 0x03, 0x8a, 0x03, 0x06, 0x03, 0xb9, 0x04, 0x04, 0x05, + 0x77, 0x03, 0x24, 0x02, 0x19, 0x02, 0xb2, 0x02, 0xdd, 0x02, 0x0a, 0x03, 0x89, 0x02, 0x1a, 0x03, + 0xdd, 0x02, 0x7f, 0x03, 0x9c, 0x02, 0x10, 0x00, 0xad, 0xfd, 0x46, 0xfd, 0x52, 0xfd, 0x41, 0xfd, + 0x77, 0xfc, 0xb1, 0xfb, 0xfb, 0xfa, 0xed, 0xf8, 0x48, 0xf8, 0x3d, 0xf7, 0xb2, 0xf6, 0xe6, 0xf5, + 0x3c, 0xf7, 0xbd, 0xf9, 0x41, 0xfa, 0xdb, 0xfa, 0x83, 0xfb, 0x53, 0xfc, 0x70, 0xfb, 0xe2, 0xfb, + 0x24, 0xfd, 0xab, 0xfe, 0xf0, 0xff, 0x58, 0x01, 0xd8, 0x02, 0x71, 0x01, 0xc5, 0xff, 0x03, 0xff, + 0xde, 0xff, 0x72, 0x01, 0xbc, 0x02, 0xae, 0x03, 0x7d, 0x03, 0xfc, 0x02, 0xf0, 0x03, 0x4e, 0x04, + 0xfd, 0x02, 0xdc, 0x01, 0xc5, 0x00, 0x3f, 0x02, 0x13, 0x03, 0x34, 0x03, 0x1c, 0x03, 0x75, 0x03, + 0xe4, 0x03, 0x5d, 0x04, 0xcd, 0x04, 0x5d, 0x03, 0x01, 0x01, 0x76, 0x00, 0x99, 0x01, 0xc4, 0x01, + 0xbc, 0x02, 0x6e, 0x02, 0x4d, 0x03, 0xed, 0x02, 0xe7, 0x01, 0x3c, 0x01, 0xa5, 0x00, 0x0f, 0x00, + 0x32, 0x00, 0xd8, 0x01, 0xd7, 0x01, 0xfb, 0x00, 0x6d, 0x00, 0xcf, 0x00, 0xca, 0xff, 0x09, 0xff, + 0x1a, 0xff, 0x38, 0x00, 0xee, 0xff, 0xe8, 0xff, 0x9a, 0x01, 0xcb, 0x00, 0x5f, 0xff, 0x3f, 0xfe, + 0x9b, 0xfe, 0xe0, 0xff, 0x9e, 0x01, 0xfb, 0x02, 0x98, 0x03, 0x5a, 0x03, 0x9a, 0x03, 0x93, 0x04, + 0xf5, 0x03, 0x6a, 0x03, 0xe0, 0x01, 0x16, 0x02, 0xf9, 0x02, 0x8b, 0x02, 0x77, 0x02, 0x2d, 0x02, + 0x92, 0x02, 0x3e, 0x03, 0xf9, 0x02, 0xb5, 0x01, 0xe1, 0xff, 0xf4, 0xfe, 0xfb, 0xff, 0x5d, 0x00, + 0xb8, 0x00, 0xdb, 0xff, 0xf5, 0xff, 0x7b, 0xff, 0x5c, 0xfe, 0x43, 0xfd, 0x8d, 0xfb, 0x74, 0xfa, + 0x0c, 0xfa, 0x99, 0xfb, 0x52, 0xfc, 0x6e, 0xfc, 0xf0, 0xfa, 0x91, 0xfa, 0xa2, 0xfa, 0xb3, 0xf9, + 0xdd, 0xf9, 0x20, 0xfb, 0x6b, 0xfc, 0x71, 0xfc, 0xbe, 0xfd, 0x15, 0xfe, 0xc6, 0xfc, 0x27, 0xfc, + 0x4c, 0xfc, 0x88, 0xfe, 0x62, 0x01, 0x15, 0x03, 0x31, 0x04, 0x82, 0x05, 0x10, 0x06, 0x7f, 0x07, + 0x9a, 0x07, 0xb5, 0x06, 0x03, 0x05, 0x3c, 0x05, 0x8f, 0x06, 0xe9, 0x06, 0xc0, 0x06, 0x7f, 0x06, + 0xb1, 0x06, 0xc4, 0x06, 0x83, 0x06, 0x75, 0x04, 0x5c, 0x02, 0xae, 0xff, 0x4e, 0xff, 0x41, 0xff, + 0x6f, 0xff, 0x4b, 0xfe, 0x3b, 0xfd, 0xdc, 0xfc, 0x34, 0xfb, 0x88, 0xf9, 0x8a, 0xf8, 0x92, 0xf8, + 0x83, 0xf8, 0x45, 0xfa, 0x18, 0xfc, 0x0c, 0xfd, 0xfb, 0xfc, 0x96, 0xfd, 0xbb, 0xfd, 0x0e, 0xfd, + 0xb6, 0xfc, 0xe7, 0xfc, 0xaa, 0xfe, 0x0b, 0xff, 0x79, 0x00, 0x6d, 0x01, 0x97, 0x00, 0x95, 0xfe, + 0x17, 0xfe, 0x48, 0xff, 0x39, 0x01, 0xa5, 0x02, 0xec, 0x02, 0xc7, 0x02, 0xbf, 0x01, 0x13, 0x02, + 0x13, 0x02, 0xf5, 0x00, 0x8b, 0xff, 0x93, 0xfe, 0x5d, 0xff, 0x4b, 0xff, 0x1a, 0xff, 0x2f, 0xff, + 0x57, 0x00, 0x9e, 0x01, 0xe8, 0x01, 0x10, 0x01, 0xb2, 0xff, 0x69, 0xfe, 0x9e, 0xfe, 0x09, 0x00, + 0x64, 0x01, 0xac, 0x01, 0x74, 0x01, 0x99, 0x02, 0x09, 0x02, 0x1c, 0x01, 0x08, 0xff, 0x63, 0xfe, + 0x97, 0xfd, 0xc2, 0xfd, 0x34, 0xff, 0x5f, 0xff, 0xe7, 0xfe, 0x2f, 0xfe, 0x52, 0xfe, 0xe2, 0xfd, + 0x54, 0xfd, 0x54, 0xfd, 0x83, 0xfe, 0xba, 0xfe, 0x5d, 0xfe, 0x67, 0xff, 0xaf, 0xfe, 0xac, 0xfc, + 0xeb, 0xfa, 0x23, 0xfb, 0x7c, 0xfc, 0x60, 0xfd, 0x13, 0xfe, 0x1a, 0xff, 0xcb, 0xfe, 0x36, 0xff, + 0xe5, 0xff, 0xff, 0xff, 0x96, 0xff, 0xd4, 0xfe, 0x78, 0x00, 0x2b, 0x01, 0xc6, 0x00, 0xbf, 0xff, + 0x4f, 0x00, 0x19, 0x01, 0xb3, 0x01, 0x20, 0x01, 0x3c, 0x00, 0x77, 0xfe, 0x97, 0xfd, 0x24, 0xfe, + 0x43, 0xff, 0x6d, 0x00, 0x85, 0xff, 0x72, 0x00, 0x0a, 0x00, 0xda, 0xfe, 0x33, 0xfd, 0x1f, 0xfc, + 0xf3, 0xfb, 0x18, 0xfc, 0x6a, 0xfd, 0x9a, 0xfe, 0x79, 0xfe, 0x88, 0xfd, 0xa8, 0xfd, 0x9a, 0xfc, + 0xb6, 0xfb, 0xd2, 0xfa, 0xf0, 0xfb, 0x55, 0xfd, 0x67, 0xfd, 0xe4, 0xfe, 0x30, 0xff, 0xc3, 0xfd, + 0x72, 0xfc, 0xc2, 0xfd, 0x1c, 0x00, 0x58, 0x02, 0x78, 0x04, 0x1c, 0x06, 0xc0, 0x06, 0x24, 0x07, + 0x0f, 0x08, 0x17, 0x07, 0x44, 0x06, 0xb0, 0x03, 0xe0, 0x03, 0x07, 0x05, 0x65, 0x04, 0x87, 0x03, + 0x08, 0x03, 0x9c, 0x03, 0xd9, 0x03, 0x0b, 0x03, 0xc6, 0x01, 0x30, 0x00, 0x73, 0xfe, 0x91, 0xfd, + 0x39, 0xfd, 0x4a, 0xfd, 0x9f, 0xfb, 0x92, 0xfb, 0xf5, 0xfb, 0x15, 0xfb, 0x43, 0xf9, 0x8c, 0xf7, + 0x2e, 0xf7, 0x6b, 0xf7, 0xad, 0xf9, 0x4c, 0xfc, 0xc3, 0xfd, 0x21, 0xfe, 0xdb, 0xfe, 0xd9, 0xff, + 0x78, 0xff, 0xd8, 0xfe, 0x1f, 0x00, 0x10, 0x03, 0xf6, 0x03, 0x20, 0x05, 0xa6, 0x06, 0x5f, 0x05, + 0xac, 0x02, 0xe5, 0x01, 0xf4, 0x02, 0x79, 0x04, 0x2a, 0x05, 0x84, 0x06, 0xed, 0x07, 0x66, 0x06, + 0x5d, 0x06, 0xee, 0x05, 0xa8, 0x05, 0x3d, 0x04, 0x30, 0x04, 0xdd, 0x05, 0x8e, 0x05, 0xea, 0x03, + 0x1d, 0x04, 0x06, 0x05, 0x0d, 0x06, 0x48, 0x06, 0x85, 0x05, 0x3b, 0x04, 0x78, 0x02, 0xa9, 0x02, + 0xb6, 0x02, 0x96, 0x03, 0xa0, 0x02, 0x4d, 0x02, 0x7a, 0x03, 0x90, 0x03, 0xd6, 0x02, 0xda, 0x00, + 0xfc, 0xff, 0xab, 0xfe, 0xfd, 0xfe, 0x03, 0xff, 0xca, 0xff, 0x16, 0xff, 0x6a, 0xff, 0x88, 0x00, + 0x24, 0xff, 0x3c, 0xfd, 0x91, 0xfc, 0x60, 0xfe, 0x3a, 0xff, 0xc2, 0xff, 0xf1, 0x00, 0x2c, 0x00, + 0x66, 0xfd, 0x0d, 0xfc, 0x09, 0xfd, 0x56, 0xfe, 0xbc, 0xff, 0x30, 0x01, 0xa9, 0x02, 0x88, 0x02, + 0x6b, 0x02, 0xdd, 0x01, 0x1f, 0x01, 0x15, 0x00, 0x12, 0xff, 0x92, 0x00, 0x20, 0x01, 0x22, 0x00, + 0xec, 0xfe, 0x16, 0xff, 0xa4, 0xff, 0xfc, 0xff, 0xce, 0xff, 0xa0, 0xff, 0xea, 0xfd, 0xfd, 0xfc, + 0x14, 0xfd, 0x26, 0xfe, 0x5e, 0xfe, 0x66, 0xfd, 0x31, 0xfe, 0xef, 0xfd, 0x4d, 0xfc, 0x6e, 0xf9, + 0xa9, 0xf8, 0x29, 0xf8, 0x1b, 0xf8, 0x87, 0xf8, 0x51, 0xf9, 0xd8, 0xf8, 0xaf, 0xf8, 0xb9, 0xf9, + 0xf3, 0xf9, 0x25, 0xf9, 0xf5, 0xf7, 0x8a, 0xf9, 0x01, 0xfa, 0xcb, 0xfa, 0x2d, 0xfc, 0x8d, 0xfc, + 0xb0, 0xfb, 0x63, 0xfa, 0x5d, 0xfb, 0xb2, 0xfc, 0xfa, 0xfe, 0x89, 0x01, 0xb7, 0x04, 0x60, 0x06, + 0x19, 0x07, 0x5e, 0x07, 0xcd, 0x06, 0xfa, 0x05, 0x7d, 0x05, 0x5c, 0x06, 0x25, 0x07, 0xc2, 0x06, + 0x8e, 0x05, 0x32, 0x06, 0x3c, 0x06, 0x3b, 0x06, 0xf0, 0x04, 0x7f, 0x03, 0x1b, 0x01, 0x63, 0xff, + 0x6c, 0xfe, 0x3c, 0xfe, 0x91, 0xfd, 0x41, 0xfb, 0xc8, 0xfb, 0xa7, 0xfb, 0x84, 0xfb, 0x55, 0xf9, + 0xdc, 0xf7, 0x99, 0xf7, 0xb6, 0xf7, 0xca, 0xf8, 0xa3, 0xfb, 0x52, 0xfc, 0x65, 0xfc, 0x98, 0xfd, + 0xca, 0xfd, 0xe5, 0xfd, 0xe8, 0xfc, 0xc3, 0xfd, 0x21, 0xff, 0xcc, 0xff, 0x3d, 0x01, 0xf5, 0x02, + 0x56, 0x03, 0x5f, 0xfc, 0x73, 0x01, 0xf4, 0x01, 0xa2, 0x00, 0x29, 0x06, 0xee, 0x05, 0x0b, 0x04, + 0x6a, 0x06, 0x44, 0x07, 0xbd, 0x05, 0x99, 0x05, 0xee, 0x02, 0xcc, 0x01, 0x5e, 0x05, 0xcb, 0x03, + 0x8a, 0x04, 0x29, 0x05, 0xe3, 0x05, 0x97, 0x03, 0x21, 0x03, 0x43, 0x03, 0x99, 0x00, 0x2c, 0x01, + 0xf5, 0x03, 0x0b, 0x00, 0x57, 0x01, 0x0e, 0x04, 0xa8, 0x01, 0xc7, 0x00, 0x5e, 0x03, 0x52, 0xff, + 0xb8, 0xfd, 0xca, 0xff, 0xef, 0xfc, 0x34, 0xfe, 0xc6, 0xff, 0xb5, 0xfc, 0x7e, 0xfe, 0x43, 0x00, + 0x57, 0x00, 0x4b, 0x01, 0x5e, 0x01, 0x88, 0x00, 0x63, 0x00, 0x15, 0x02, 0x36, 0x05, 0xa9, 0x05, + 0xb7, 0x06, 0x98, 0x03, 0xce, 0xff, 0x77, 0xff, 0xa4, 0x03, 0x66, 0x01, 0xe8, 0x04, 0xaf, 0x06, + 0x6e, 0x02, 0xee, 0x03, 0x2f, 0x03, 0xec, 0x00, 0xdb, 0x00, 0x82, 0x03, 0xce, 0x01, 0x27, 0x01, + 0x37, 0x03, 0x80, 0x04, 0x9a, 0x04, 0x09, 0x07, 0xac, 0x05, 0xe0, 0x01, 0xfa, 0x00, 0x7d, 0x01, + 0x34, 0x00, 0xea, 0xff, 0x03, 0x02, 0x6a, 0xfd, 0xae, 0xfd, 0x1a, 0xfe, 0xf7, 0xfc, 0xa8, 0xfc, + 0x7e, 0xfd, 0x69, 0xf7, 0xdc, 0xf9, 0x5f, 0xf9, 0xb4, 0xfa, 0xe9, 0xfa, 0x91, 0xfd, 0xe6, 0xf8, + 0xbd, 0xfa, 0xe0, 0xf9, 0x71, 0xf9, 0x40, 0xfa, 0xf7, 0xfb, 0xfa, 0xf8, 0x3c, 0xfa, 0x8e, 0xfc, + 0x7b, 0xfc, 0x2d, 0xfc, 0xac, 0xfd, 0x7a, 0xfc, 0x87, 0xfe, 0x65, 0x00, 0xe6, 0x01, 0x8e, 0x07, + 0xb3, 0x09, 0xc4, 0x0b, 0xd8, 0x0a, 0x9f, 0x07, 0xbe, 0x08, 0x0a, 0x0a, 0x69, 0x07, 0xb8, 0x07, + 0x1d, 0x07, 0xeb, 0x03, 0x54, 0x04, 0x5a, 0x05, 0xc1, 0x03, 0x97, 0x02, 0x07, 0x00, 0xe6, 0xfe, + 0x79, 0xfd, 0x6b, 0xff, 0x01, 0xfd, 0xb5, 0xfb, 0xaf, 0xfc, 0x0f, 0xfa, 0xff, 0xf8, 0x77, 0xfb, + 0xa9, 0xf8, 0xb9, 0xf5, 0x6e, 0xf7, 0xce, 0xf5, 0x80, 0xf4, 0x96, 0xf7, 0xbb, 0xf7, 0xe2, 0xf5, + 0x27, 0xfb, 0xe0, 0xf9, 0xc7, 0xfb, 0xa4, 0xfb, 0x54, 0xfb, 0x75, 0xfc, 0xb0, 0x00, 0x1d, 0x00, + 0xcc, 0x00, 0x47, 0xff, 0x1a, 0xfd, 0x52, 0xfd, 0xda, 0x00, 0x4d, 0x01, 0x97, 0x00, 0x0c, 0x00, + 0x88, 0x02, 0x56, 0x03, 0xc1, 0x01, 0xda, 0x00, 0xb8, 0xff, 0x10, 0xfc, 0x83, 0xfe, 0xb2, 0xfe, + 0x70, 0xfd, 0x26, 0xfe, 0x91, 0xfd, 0xfa, 0xfb, 0x87, 0xff, 0x5e, 0xfc, 0xc4, 0xfa, 0xe6, 0xfa, + 0x6f, 0xf9, 0xa2, 0xf7, 0x3f, 0xf8, 0x28, 0xf7, 0x3a, 0xf6, 0x7f, 0xf7, 0x45, 0xf7, 0x97, 0xf7, + 0x9b, 0xf7, 0xd5, 0xf4, 0x2c, 0xf4, 0xb9, 0xf5, 0x69, 0xf7, 0x77, 0xf9, 0x17, 0xfa, 0xa0, 0xf9, + 0xf4, 0xfb, 0xc0, 0xfb, 0xb8, 0x00, 0x65, 0x00, 0x35, 0xfe, 0x52, 0x00, 0xf6, 0x00, 0x85, 0x03, + 0x7d, 0x06, 0xd5, 0x05, 0x94, 0x05, 0xfe, 0x07, 0x93, 0x06, 0x58, 0x07, 0xe8, 0x0b, 0xf7, 0x09, + 0x7f, 0x0d, 0x21, 0x10, 0x51, 0x0f, 0x09, 0x0d, 0x6b, 0x0e, 0x42, 0x0e, 0xbb, 0x0d, 0x25, 0x0f, + 0xe1, 0x0c, 0x96, 0x0c, 0x75, 0x0b, 0x6e, 0x09, 0xe1, 0x0b, 0x7c, 0x0c, 0x80, 0x0b, 0x5a, 0x06, + 0xc2, 0x05, 0x55, 0x05, 0x08, 0x04, 0x7d, 0x06, 0xe8, 0x06, 0xfa, 0x03, 0x58, 0x01, 0x67, 0x04, + 0x27, 0x03, 0x83, 0x00, 0x4c, 0xff, 0xd6, 0xfd, 0x42, 0xfc, 0xaa, 0xf8, 0x4a, 0xfb, 0xa0, 0xfc, + 0x72, 0xfb, 0xb7, 0xfb, 0x2c, 0xfd, 0x12, 0xfa, 0xfb, 0xf8, 0x46, 0xfd, 0xfe, 0xfc, 0x0c, 0xfe, + 0x54, 0xfe, 0xef, 0xfc, 0x6c, 0xff, 0xbd, 0xff, 0x80, 0x00, 0x47, 0x01, 0xf8, 0x01, 0xe3, 0x00, + 0x37, 0x03, 0x95, 0x07, 0x69, 0x08, 0x13, 0x09, 0xbc, 0x08, 0xe1, 0x06, 0x9d, 0x06, 0xab, 0x06, + 0xaa, 0x06, 0x1f, 0x07, 0xcf, 0x05, 0xe9, 0x00, 0xab, 0x00, 0x1e, 0x01, 0x85, 0x00, 0x8f, 0xff, + 0x28, 0xfd, 0x34, 0xfc, 0xfb, 0xf9, 0xb2, 0xf9, 0x73, 0xf8, 0x86, 0xf8, 0x87, 0xf6, 0x48, 0xf4, + 0xb5, 0xf3, 0x90, 0xf0, 0xeb, 0xef, 0xe0, 0xef, 0x5f, 0xf4, 0x08, 0xf3, 0xe6, 0xf1, 0x51, 0xf6, + 0x1f, 0xf6, 0x13, 0xf8, 0xb8, 0xfc, 0xb0, 0xfc, 0x1d, 0xfa, 0xeb, 0xfa, 0x9f, 0xfc, 0x7b, 0xfe, + 0xf2, 0x05, 0x78, 0x07, 0x16, 0xfd, 0x48, 0xff, 0xf0, 0xfc, 0x1b, 0xfb, 0xa5, 0xfe, 0x1f, 0x00, + 0x84, 0x06, 0xed, 0x0b, 0xd6, 0x11, 0x25, 0x12, 0x68, 0x08, 0x70, 0x0c, 0xf1, 0x0c, 0x77, 0x09, + 0x7b, 0x0c, 0xf8, 0x08, 0x8b, 0x0b, 0x5d, 0x10, 0xa5, 0x10, 0xd1, 0x10, 0x9a, 0x11, 0xac, 0x0e, + 0x42, 0x0f, 0xf3, 0x04, 0x26, 0x00, 0x12, 0xfb, 0x94, 0xf9, 0x71, 0xf7, 0xa7, 0xf8, 0x33, 0xf7, + 0xa9, 0xf9, 0x9e, 0xf4, 0x13, 0xee, 0xda, 0xe9, 0xf8, 0xe7, 0x40, 0xea, 0xc4, 0xea, 0x38, 0xea, + 0x34, 0xe7, 0xa9, 0xe9, 0xaf, 0xec, 0x3a, 0xee, 0x03, 0xeb, 0x92, 0xe4, 0x1a, 0xe3, 0x0f, 0xea, + 0x65, 0xe7, 0x6e, 0xea, 0x98, 0xea, 0x92, 0xe8, 0xaa, 0xe6, 0x92, 0xed, 0xa3, 0xe8, 0x96, 0xef, + 0xe2, 0xf2, 0x5d, 0xf9, 0xd5, 0x00, 0x29, 0x03, 0x49, 0x04, 0xb7, 0x08, 0x39, 0x06, 0xf2, 0x06, + 0x15, 0x02, 0x1a, 0x01, 0x7a, 0xff, 0xb4, 0x02, 0xbd, 0x02, 0xa6, 0x03, 0x02, 0x07, 0xe4, 0x0d, + 0x96, 0x0f, 0xbb, 0x14, 0xef, 0x15, 0x9b, 0x14, 0xff, 0x14, 0xe4, 0x10, 0x97, 0x13, 0xc9, 0x0e, + 0x48, 0x0b, 0x84, 0x08, 0x49, 0x06, 0x3a, 0x06, 0xdf, 0x0a, 0xd4, 0x0c, 0x69, 0x12, 0xb6, 0x15, + 0x92, 0x18, 0x72, 0x1a, 0x85, 0x19, 0x28, 0x1b, 0x0a, 0x15, 0x9b, 0x0e, 0xb1, 0x0e, 0xbe, 0x0c, + 0xee, 0x0b, 0x3f, 0x0c, 0x53, 0x11, 0x92, 0x15, 0x13, 0x16, 0x10, 0x14, 0x4f, 0x18, 0xa4, 0x16, + 0x17, 0x16, 0xcd, 0x15, 0x35, 0x12, 0xe8, 0x0e, 0x03, 0x07, 0xba, 0x03, 0x96, 0x04, 0xf8, 0xfc, + 0xa2, 0xfb, 0x1c, 0xf9, 0x30, 0xf4, 0x15, 0xf7, 0xce, 0xf8, 0xcf, 0xf8, 0x18, 0xf9, 0xa5, 0xf7, + 0x8a, 0xf8, 0x0e, 0xf4, 0x88, 0xee, 0xd6, 0xea, 0xf6, 0xe9, 0xf3, 0xe8, 0xb3, 0xe4, 0xb7, 0xe0, + 0x5f, 0xe3, 0x70, 0xe2, 0x2b, 0xe4, 0xf4, 0xeb, 0x6a, 0xef, 0xe9, 0xed, 0x84, 0xf0, 0x4a, 0xf3, + 0x95, 0xf4, 0x2b, 0xf8, 0x88, 0xf9, 0x8c, 0xfa, 0xd9, 0xfa, 0x9f, 0xfd, 0x39, 0x00, 0x70, 0x03, + 0xe9, 0x03, 0xba, 0x0b, 0x79, 0x0b, 0xdc, 0x0a, 0xa0, 0x0d, 0xd7, 0x0c, 0x91, 0x0e, 0xee, 0x08, + 0x26, 0x08, 0x87, 0x0d, 0x35, 0x0e, 0xcd, 0x0e, 0x41, 0x12, 0x0f, 0x15, 0x70, 0x12, 0x07, 0x14, + 0x42, 0x13, 0xe2, 0x0e, 0x0a, 0x0f, 0x90, 0x0b, 0x1a, 0x0e, 0xf6, 0x12, 0x70, 0x11, 0x6e, 0x12, + 0x49, 0x0f, 0x73, 0x0d, 0x5c, 0x12, 0x6f, 0x0f, 0x6c, 0x0d, 0xff, 0x0d, 0xa5, 0x0c, 0x2f, 0x09, + 0xb7, 0x0a, 0x76, 0x05, 0x69, 0x03, 0x67, 0x03, 0x82, 0xfe, 0xc0, 0x05, 0x48, 0x05, 0xdb, 0x02, + 0xb0, 0x00, 0x13, 0xfe, 0x5c, 0xfb, 0x0c, 0xfa, 0xf7, 0xf8, 0x56, 0xf4, 0x04, 0xf3, 0xde, 0xed, + 0xab, 0xed, 0xee, 0xec, 0xdd, 0xef, 0x5b, 0xf3, 0x7f, 0xef, 0x36, 0xed, 0xe6, 0xe8, 0x0a, 0xe8, + 0x9e, 0xe9, 0xf5, 0xe7, 0x0d, 0xe8, 0x94, 0xe8, 0x01, 0xe7, 0x0e, 0xe7, 0xdd, 0xea, 0xa8, 0xe7, + 0xcd, 0xe7, 0x8c, 0xe1, 0xcd, 0xe1, 0x58, 0xe7, 0xc9, 0xea, 0xf9, 0xf2, 0x15, 0xf1, 0x45, 0xee, + 0x46, 0xf0, 0x07, 0xeb, 0x93, 0xe9, 0xa2, 0xe6, 0xff, 0xe1, 0x57, 0xde, 0xf7, 0xdc, 0x57, 0xe0, + 0xba, 0xe4, 0x68, 0xe9, 0x6c, 0xe8, 0xf6, 0xe8, 0x8f, 0xec, 0x18, 0xf2, 0xc7, 0xf0, 0xd8, 0xf2, + 0x84, 0xf1, 0xab, 0xf4, 0xfb, 0xf2, 0x29, 0xf5, 0x09, 0xf1, 0xd4, 0xf5, 0x24, 0xfb, 0x4e, 0xfe, + 0x3e, 0xff, 0x1e, 0x04, 0x00, 0x09, 0x05, 0x08, 0x69, 0x09, 0x0d, 0x06, 0x5b, 0x05, 0xda, 0xff, + 0xac, 0xff, 0x4e, 0x01, 0xb9, 0x09, 0x6f, 0x08, 0x54, 0x13, 0xe8, 0x17, 0x24, 0x19, 0x84, 0x1b, + 0x30, 0x1f, 0xc8, 0x1c, 0x5c, 0x1c, 0x28, 0x1c, 0x21, 0x1c, 0xa8, 0x1e, 0xe0, 0x1e, 0x9b, 0x1d, + 0xdb, 0x1c, 0xf5, 0x1f, 0x7c, 0x1d, 0xd5, 0x1d, 0xcf, 0x1d, 0x14, 0x1f, 0x1f, 0x1e, 0xe5, 0x22, + 0x5f, 0x21, 0xc4, 0x1a, 0x78, 0x19, 0x7c, 0x13, 0x9f, 0x10, 0x2d, 0x0e, 0x6e, 0x0b, 0x9d, 0x07, + 0xad, 0x08, 0x9e, 0x05, 0xb6, 0x0a, 0x2a, 0x0a, 0x1e, 0x00, 0xf0, 0x01, 0xc7, 0x05, 0xa8, 0x02, + 0x2a, 0x04, 0xdc, 0x08, 0xd7, 0x0c, 0x41, 0x11, 0x07, 0x14, 0xf1, 0x15, 0x16, 0x07, 0x16, 0x00, + 0x7c, 0x00, 0x04, 0xfc, 0x6e, 0xfc, 0xce, 0xfe, 0x52, 0xfe, 0x16, 0x04, 0x45, 0x06, 0x59, 0x07, + 0x67, 0x09, 0x1c, 0x00, 0x15, 0xf7, 0x03, 0xf5, 0x72, 0xe6, 0xdf, 0xec, 0x24, 0xeb, 0xbc, 0xe8, + 0xe8, 0xf0, 0x8a, 0xea, 0x94, 0xf5, 0x8d, 0xef, 0x47, 0xe8, 0x17, 0xea, 0x8d, 0xe7, 0x2b, 0xeb, + 0x4c, 0xee, 0x3b, 0xf2, 0xeb, 0xf8, 0x31, 0xfd, 0x55, 0x00, 0x9b, 0x05, 0x46, 0x05, 0x6f, 0x01, + 0x2d, 0x01, 0xe9, 0x06, 0x14, 0x03, 0x5a, 0x07, 0xf4, 0x03, 0x6b, 0x04, 0xc7, 0x0c, 0x31, 0x12, + 0x06, 0x17, 0x6f, 0x1a, 0x4f, 0x1a, 0x8b, 0x1a, 0x42, 0x1c, 0x56, 0x1b, 0x07, 0x11, 0x22, 0x10, + 0xbd, 0x0e, 0x03, 0x0e, 0x5a, 0x12, 0x29, 0x0f, 0xf8, 0x0f, 0x80, 0x11, 0x21, 0x14, 0xee, 0x10, + 0x76, 0x0e, 0xf8, 0x03, 0x93, 0xfe, 0x5d, 0x01, 0x66, 0xfd, 0x8e, 0xfa, 0xb7, 0xfe, 0x91, 0xfc, + 0x9d, 0xfe, 0x5c, 0x01, 0x04, 0xff, 0xc7, 0xf9, 0xc5, 0xf0, 0x02, 0xf0, 0xf4, 0xf1, 0x9a, 0xef, + 0x97, 0xf1, 0x89, 0xf4, 0xc6, 0xf1, 0x66, 0xf9, 0xf9, 0xf7, 0xe9, 0xf4, 0xd1, 0xf2, 0x0a, 0xee, + 0x0f, 0xef, 0xae, 0xf6, 0xab, 0xf3, 0x90, 0xf7, 0x5f, 0xfe, 0x9d, 0xf9, 0x22, 0x03, 0x01, 0x00, + 0x54, 0xfa, 0x8f, 0xfa, 0xfc, 0xf5, 0xa7, 0xf3, 0x78, 0xf1, 0xfd, 0xe5, 0xef, 0xe3, 0xb2, 0xe0, + 0x46, 0xdf, 0x4e, 0xe0, 0x73, 0xdd, 0xb9, 0xdc, 0x8a, 0xdf, 0xd4, 0xe2, 0xa0, 0xe6, 0xea, 0xea, + 0xf3, 0xe5, 0x4d, 0xe5, 0x89, 0xdc, 0xe2, 0xdc, 0x59, 0xda, 0x77, 0xdd, 0x7d, 0xe1, 0x6c, 0xe4, + 0x4e, 0xec, 0xd2, 0xec, 0x2d, 0xf1, 0x1a, 0xf0, 0x02, 0xf3, 0x3e, 0xfa, 0x1e, 0xfd, 0x03, 0xff, + 0x65, 0x02, 0xbe, 0x00, 0x40, 0x02, 0xf5, 0x04, 0x5e, 0x06, 0x6b, 0x01, 0x63, 0x03, 0xb2, 0x05, + 0xc1, 0x04, 0xf8, 0x06, 0x45, 0x07, 0x21, 0x08, 0x17, 0x08, 0x3e, 0x0b, 0xeb, 0x0d, 0x36, 0x12, + 0xe1, 0x11, 0xd0, 0x13, 0x6f, 0x14, 0xec, 0x15, 0x74, 0x15, 0x9e, 0x19, 0xe4, 0x15, 0xfe, 0x12, + 0xff, 0x14, 0x71, 0x14, 0xf1, 0x15, 0xe4, 0x16, 0x17, 0x19, 0x85, 0x1b, 0x02, 0x21, 0xc3, 0x21, + 0x94, 0x1f, 0x45, 0x1a, 0xfa, 0x11, 0xa9, 0x09, 0xa9, 0x05, 0x45, 0x03, 0xde, 0x04, 0x04, 0x02, + 0x0a, 0x06, 0xbb, 0x05, 0x10, 0x05, 0xa3, 0x02, 0xfa, 0xf9, 0x1a, 0xf8, 0xc1, 0xf8, 0x8b, 0xf8, + 0xd0, 0xf7, 0xb8, 0xf5, 0xdf, 0xf1, 0x02, 0xf3, 0x2f, 0xf6, 0x09, 0xf8, 0x63, 0xf4, 0xda, 0xf5, + 0xb3, 0xf2, 0x22, 0xf8, 0x9c, 0xfa, 0x64, 0xf8, 0xc3, 0xfd, 0x1b, 0xfe, 0x85, 0xfe, 0xd1, 0x03, + 0xa9, 0x04, 0xe8, 0x04, 0x8c, 0x08, 0xcd, 0x0a, 0xd4, 0x0c, 0x85, 0x0c, 0x95, 0x0b, 0x44, 0x0c, + 0x10, 0x10, 0x42, 0x0f, 0x5d, 0x0d, 0xe9, 0x0c, 0x97, 0x0b, 0x57, 0x10, 0xf4, 0x13, 0x8f, 0x1b, + 0x0d, 0x1b, 0xf9, 0x14, 0xa4, 0x0e, 0x76, 0x07, 0x7d, 0xfe, 0x17, 0xfc, 0x03, 0x01, 0x0c, 0x05, + 0x1c, 0x0b, 0xb1, 0x0d, 0x37, 0x0f, 0xc9, 0x0c, 0x5a, 0x08, 0xf1, 0x0a, 0x25, 0x07, 0x20, 0x07, + 0x70, 0x06, 0xc0, 0x02, 0x68, 0x05, 0x08, 0x02, 0xb4, 0x0a, 0xf5, 0x08, 0x8a, 0x07, 0x9b, 0x0f, + 0x23, 0x0e, 0x97, 0x09, 0x23, 0x0f, 0xec, 0x05, 0x4c, 0x05, 0x35, 0x06, 0xa2, 0x03, 0x7d, 0x0b, + 0x16, 0x05, 0x4e, 0x02, 0xa4, 0x02, 0x89, 0xfc, 0x45, 0xfc, 0x47, 0xfc, 0x87, 0xf3, 0x48, 0xf0, + 0x0c, 0xec, 0x31, 0xe8, 0x3e, 0xe4, 0x7b, 0xe6, 0x4b, 0xe5, 0xb5, 0xe9, 0xa7, 0xe8, 0xc6, 0xee, + 0x4c, 0xf5, 0x58, 0xf1, 0xc3, 0xf1, 0xd4, 0xed, 0x1a, 0xe7, 0x33, 0xe3, 0x0f, 0xe8, 0xfb, 0xe7, + 0x51, 0xf1, 0x82, 0xf2, 0x4f, 0xf7, 0xc4, 0xf9, 0xac, 0xf2, 0xe1, 0xef, 0x97, 0xed, 0x62, 0xed, + 0x9d, 0xf2, 0xd3, 0xf3, 0x60, 0xf0, 0xe8, 0xef, 0x0f, 0xee, 0x83, 0xec, 0xd7, 0xe5, 0x71, 0xe6, + 0x63, 0xe5, 0xc3, 0xe4, 0x69, 0xe8, 0xd7, 0xe6, 0x83, 0xe6, 0xdf, 0xe6, 0xd8, 0xe8, 0xd5, 0xee, + 0xb2, 0xf3, 0xf9, 0xf9, 0x1e, 0xfc, 0x5a, 0xfd, 0xd8, 0x01, 0x62, 0xfd, 0xfc, 0xfe, 0x99, 0xff, + 0xa5, 0x02, 0xf4, 0x03, 0xf8, 0x01, 0xb3, 0x02, 0x2e, 0x02, 0x38, 0x03, 0x4d, 0x0d, 0x12, 0x13, + 0x44, 0x13, 0xe4, 0x11, 0x27, 0x0c, 0x33, 0x09, 0xf5, 0x06, 0x6e, 0x06, 0x01, 0x08, 0x6a, 0x07, + 0x00, 0x07, 0x12, 0x0d, 0x17, 0x07, 0xc4, 0x07, 0xcb, 0x04, 0x39, 0x02, 0x04, 0x01, 0x25, 0xfd, + 0x6d, 0xfe, 0x9c, 0x01, 0x12, 0x03, 0xe6, 0x03, 0x5f, 0x0a, 0x8d, 0x0b, 0x52, 0x09, 0xae, 0x09, + 0x6b, 0x0d, 0xaa, 0x10, 0x8c, 0x17, 0x1c, 0x17, 0xe1, 0x17, 0xa4, 0x16, 0x1e, 0x14, 0x6f, 0x16, + 0x51, 0x15, 0x32, 0x16, 0x4d, 0x19, 0x22, 0x19, 0xc1, 0x1b, 0x0e, 0x1c, 0xba, 0x19, 0x55, 0x17, + 0xcf, 0x14, 0xdf, 0x1b, 0xb4, 0x16, 0xf8, 0x12, 0xc9, 0x0f, 0x21, 0x09, 0xd3, 0x05, 0xac, 0x04, + 0xf3, 0x09, 0xb6, 0x08, 0x04, 0x09, 0x32, 0x01, 0xcb, 0xf7, 0xf7, 0xec, 0xc5, 0xe8, 0xff, 0xec, + 0x49, 0xf1, 0x87, 0xf4, 0x43, 0xf5, 0xf0, 0xf1, 0xd1, 0xf1, 0xb3, 0xf1, 0x7c, 0xf4, 0xe5, 0xf0, + 0xeb, 0xee, 0x73, 0xee, 0xd2, 0xee, 0xe5, 0xef, 0xe2, 0xf0, 0x6d, 0xf6, 0xf6, 0xf6, 0xec, 0xf5, + 0x1f, 0xf7, 0xc3, 0xf6, 0x9a, 0xfb, 0x0b, 0x01, 0x4a, 0x00, 0x74, 0x09, 0xb5, 0x07, 0x0f, 0x06, + 0x21, 0x06, 0x37, 0x03, 0x5f, 0x02, 0x4c, 0x03, 0xf3, 0x01, 0xc7, 0x03, 0x81, 0x03, 0x0b, 0xfa, + 0xd6, 0xf7, 0x1c, 0xf5, 0x34, 0xf0, 0xd7, 0xf1, 0x29, 0xf1, 0xec, 0xee, 0xdb, 0xf6, 0x98, 0xf9, + 0xb2, 0x00, 0x29, 0x05, 0x2d, 0x08, 0x09, 0x0c, 0x32, 0x06, 0x00, 0x02, 0x3f, 0x01, 0xf9, 0xff, + 0x93, 0xff, 0x1f, 0x08, 0xcb, 0x0a, 0x82, 0x0f, 0x89, 0x10, 0x31, 0x0e, 0xf0, 0x09, 0xe2, 0x08, + 0x62, 0x0b, 0x17, 0x0f, 0x0b, 0x10, 0xaa, 0x0c, 0x93, 0x09, 0xca, 0x07, 0xd3, 0x04, 0x3b, 0x02, + 0x25, 0xff, 0xc3, 0xfb, 0x74, 0xff, 0xa4, 0xfd, 0xc9, 0xfa, 0xb6, 0xf7, 0xfa, 0xf8, 0x18, 0xfb, + 0xf4, 0xfe, 0x05, 0xff, 0x5b, 0x02, 0x15, 0x04, 0x7c, 0x08, 0xe7, 0x0c, 0x58, 0x10, 0x24, 0x12, + 0x2f, 0x0b, 0x7e, 0x0b, 0x49, 0x07, 0x03, 0x06, 0x9f, 0x03, 0x5a, 0xfe, 0x09, 0x01, 0x75, 0xff, + 0x4c, 0x02, 0x12, 0x01, 0x9e, 0xf8, 0x2d, 0xf8, 0xf8, 0xf2, 0x3e, 0xee, 0x37, 0xea, 0x81, 0xe8, + 0x24, 0xea, 0x8c, 0xe9, 0x32, 0xea, 0xe9, 0xe6, 0xa7, 0xe7, 0x9c, 0xe5, 0x3e, 0xe4, 0xee, 0xe1, + 0x3d, 0xde, 0x8e, 0xd8, 0x45, 0xdc, 0xf4, 0xdf, 0xf8, 0xe1, 0x8c, 0xea, 0x91, 0xeb, 0x54, 0xe9, + 0xdd, 0xe8, 0xb9, 0xeb, 0x84, 0xf1, 0x63, 0xf9, 0x16, 0xf9, 0xd0, 0xfb, 0xca, 0xf9, 0x76, 0xfd, + 0x7f, 0x00, 0xe2, 0x00, 0x38, 0x02, 0x8b, 0x04, 0xc5, 0x09, 0x50, 0x0c, 0x05, 0x0e, 0x80, 0x13, + 0xc3, 0x17, 0xf4, 0x17, 0xea, 0x1c, 0x54, 0x1b, 0xae, 0x1b, 0x97, 0x1a, 0xc3, 0x1d, 0xd2, 0x1e, + 0xe4, 0x26, 0x06, 0x2b, 0xdc, 0x28, 0x24, 0x27, 0x2e, 0x1f, 0x19, 0x17, 0xca, 0x13, 0x44, 0x10, + 0x1f, 0x12, 0xd5, 0x12, 0x38, 0x13, 0xc2, 0x13, 0xc9, 0x0f, 0x52, 0x12, 0x9e, 0x0e, 0xbf, 0x0b, + 0xf0, 0x0c, 0xe8, 0x0c, 0x9d, 0x0b, 0xd0, 0x0b, 0xa7, 0x09, 0x99, 0x0b, 0x5b, 0x0b, 0x97, 0x09, + 0xcb, 0x06, 0xdc, 0x00, 0xaf, 0xfc, 0x5c, 0xff, 0x0d, 0x03, 0x50, 0x02, 0xab, 0x07, 0x5c, 0x07, + 0x68, 0x03, 0x40, 0x01, 0xaa, 0xfb, 0xf5, 0xf6, 0xc0, 0xf9, 0xc4, 0xf7, 0x27, 0xf6, 0x1a, 0xf4, + 0xcc, 0xec, 0xf1, 0xeb, 0x14, 0xec, 0x1d, 0xe8, 0x1c, 0xe8, 0x25, 0xe2, 0xcb, 0xe3, 0x1c, 0xe8, + 0x5c, 0xe8, 0xf8, 0xf3, 0x6e, 0xf3, 0xb5, 0xf3, 0x60, 0xf2, 0xd2, 0xef, 0x50, 0xed, 0xb5, 0xec, + 0x14, 0xee, 0xa0, 0xf1, 0x01, 0xf7, 0x81, 0xf4, 0x6c, 0xf7, 0x83, 0xf4, 0xa1, 0xf0, 0xfa, 0xf0, + 0x7e, 0xf6, 0x19, 0xf6, 0xc0, 0xf7, 0xc7, 0xf9, 0x7e, 0xf8, 0x14, 0xfa, 0xb2, 0xfb, 0x86, 0xf7, + 0xe6, 0xf3, 0xc5, 0xf3, 0xbf, 0xf8, 0x94, 0xfa, 0x78, 0xfb, 0x3d, 0xfd, 0x5b, 0xf9, 0x2d, 0xfd, + 0x56, 0xff, 0xad, 0x01, 0xcb, 0x01, 0x37, 0x01, 0x4a, 0x04, 0x7f, 0x08, 0x86, 0x0a, 0xd7, 0x10, + 0xbe, 0x0f, 0xca, 0x0d, 0x0c, 0x0d, 0xc8, 0x08, 0x61, 0x07, 0x9e, 0x02, 0xe2, 0x02, 0x0b, 0x07, + 0xb1, 0x06, 0xf0, 0x0a, 0xe7, 0x0e, 0x2d, 0x0d, 0x13, 0x0f, 0x8d, 0x0a, 0xb5, 0x07, 0x51, 0x03, + 0x86, 0x03, 0x38, 0x07, 0x8b, 0x08, 0xdc, 0x07, 0x35, 0x04, 0x95, 0x04, 0x7a, 0xff, 0x3d, 0xfc, + 0xa2, 0xfc, 0xc7, 0xfa, 0x82, 0xfa, 0xb5, 0xfc, 0x73, 0xf9, 0x86, 0xf9, 0x06, 0xf9, 0x29, 0xf7, + 0xc7, 0xf2, 0x50, 0xf4, 0xf2, 0xf6, 0xa4, 0xf8, 0xd5, 0xfb, 0x6a, 0xfb, 0xcf, 0xfb, 0x9f, 0xfb, + 0x7c, 0xfe, 0x2b, 0xfa, 0xb5, 0xfa, 0x21, 0xfd, 0xd1, 0x01, 0x35, 0x04, 0x31, 0x07, 0x3e, 0x07, + 0x73, 0x0a, 0x88, 0x0c, 0xd0, 0x0d, 0xb3, 0x0e, 0x8b, 0x0c, 0xd1, 0x05, 0x8a, 0x00, 0x69, 0x02, + 0x33, 0xfe, 0x0d, 0x09, 0xc3, 0x06, 0x05, 0x04, 0x57, 0xff, 0x57, 0xf5, 0xa1, 0xf2, 0x55, 0xec, + 0x08, 0xeb, 0x60, 0xec, 0x01, 0xec, 0x93, 0xf1, 0x77, 0xf3, 0xad, 0xf4, 0x85, 0xf6, 0xb2, 0xf4, + 0x61, 0xf6, 0xcc, 0xf7, 0x08, 0xf9, 0xff, 0xfb, 0x88, 0xfe, 0x05, 0xff, 0x78, 0x03, 0xe2, 0x04, + 0xed, 0x06, 0x1b, 0x04, 0xa3, 0x08, 0xd8, 0x0b, 0xb6, 0x11, 0xe8, 0x16, 0xfc, 0x12, 0xc0, 0x15, + 0x4c, 0x15, 0x16, 0x14, 0x54, 0x12, 0x57, 0x0d, 0x8f, 0x0d, 0x56, 0x10, 0xee, 0x0a, 0x4c, 0x09, + 0x3d, 0x07, 0xe4, 0x01, 0xf2, 0xfe, 0x8b, 0xff, 0x3c, 0x00, 0xd5, 0xfd, 0x3c, 0xf9, 0x7d, 0xfc, + 0xd5, 0xfc, 0x50, 0x02, 0x48, 0x0d, 0x19, 0x0d, 0xbe, 0x0e, 0xaf, 0x0b, 0x5c, 0x07, 0xce, 0x00, + 0x12, 0xfd, 0xfa, 0xfe, 0x86, 0x01, 0xf3, 0x05, 0xa4, 0x05, 0x81, 0x01, 0xba, 0xfe, 0xef, 0xfb, + 0x63, 0x00, 0x7c, 0x02, 0xac, 0xfe, 0xd9, 0x00, 0x1f, 0xff, 0x0b, 0x03, 0x38, 0x02, 0x48, 0x00, + 0xd7, 0xfc, 0x57, 0xf8, 0x6c, 0xf7, 0xe9, 0xf8, 0x29, 0xf9, 0x5d, 0xfb, 0x89, 0xfa, 0x7a, 0xf7, + 0x5b, 0xfb, 0xe8, 0xf9, 0x64, 0xf9, 0x1c, 0xf9, 0xaf, 0xfe, 0x97, 0x06, 0xa6, 0x0a, 0x38, 0x0a, + 0xdc, 0x0b, 0xd1, 0x05, 0xd0, 0x05, 0x33, 0x06, 0xe7, 0x04, 0x41, 0x03, 0xe5, 0xfc, 0x43, 0xfb, + 0x0a, 0xfb, 0xb2, 0xfb, 0x73, 0xff, 0x73, 0xff, 0x17, 0x00, 0xc9, 0xff, 0x22, 0xfd, 0x29, 0xfa, + 0xf6, 0xf7, 0x90, 0xf9, 0xd2, 0xf5, 0x5b, 0xfb, 0x7b, 0xfa, 0x1a, 0xfa, 0xc5, 0xf7, 0x22, 0xf0, + 0xa9, 0xea, 0xb6, 0xe7, 0x28, 0xe6, 0x7a, 0xe5, 0x4c, 0xe6, 0x3f, 0xe6, 0x00, 0xe8, 0x96, 0xe3, + 0xe5, 0xe4, 0xfa, 0xe3, 0x08, 0xe6, 0x32, 0xe7, 0x4b, 0xe7, 0x1b, 0xed, 0xda, 0xf1, 0xee, 0xf3, + 0xcf, 0xf5, 0xe3, 0xf7, 0xe4, 0xf7, 0x70, 0xf8, 0xd6, 0xfc, 0x98, 0x01, 0x33, 0x05, 0x52, 0x0b, + 0x40, 0x0c, 0x12, 0x0f, 0xdb, 0x0e, 0x43, 0x11, 0xba, 0x15, 0x14, 0x1a, 0x9d, 0x15, 0xec, 0x14, + 0x6a, 0x14, 0x8f, 0x12, 0xc6, 0x18, 0xa9, 0x14, 0x5f, 0x15, 0x5a, 0x11, 0x26, 0x0d, 0x40, 0x08, + 0x5b, 0xff, 0x8f, 0xfc, 0x19, 0xfc, 0x3e, 0xfb, 0x49, 0x01, 0xa0, 0x00, 0x15, 0x02, 0x1b, 0x02, + 0xaa, 0x01, 0x72, 0x03, 0x51, 0x04, 0x86, 0x04, 0xa2, 0x01, 0x2c, 0x06, 0x63, 0x08, 0x61, 0x0b, + 0x66, 0x09, 0x72, 0x01, 0x2b, 0xfe, 0x89, 0x00, 0x0a, 0x01, 0xe7, 0x05, 0x26, 0x08, 0x45, 0x08, + 0xbc, 0x09, 0x4f, 0x09, 0xad, 0x06, 0x52, 0x03, 0xfb, 0xfe, 0x41, 0x00, 0x9a, 0x02, 0x69, 0x01, + 0x85, 0xff, 0xcc, 0xfc, 0xc2, 0xfb, 0xfa, 0xf7, 0xde, 0xfa, 0xea, 0xfa, 0xae, 0xf7, 0xf8, 0xf5, + 0x88, 0xf7, 0x77, 0xf8, 0x4a, 0x00, 0x98, 0x04, 0x7c, 0x04, 0x30, 0x07, 0xba, 0x08, 0x1c, 0x09, + 0x91, 0x04, 0x42, 0x04, 0x66, 0x03, 0x3f, 0x07, 0x3d, 0x09, 0xd3, 0x06, 0xd7, 0x04, 0xd4, 0x06, + 0x42, 0x08, 0x39, 0x07, 0xcd, 0x07, 0x81, 0x08, 0xcb, 0x07, 0xc6, 0x07, 0x01, 0x0b, 0x6b, 0x09, + 0xe4, 0x09, 0x5a, 0x09, 0x18, 0x07, 0xdb, 0x06, 0xaf, 0x03, 0x12, 0x03, 0x98, 0x05, 0x59, 0x05, + 0xe6, 0x09, 0xd4, 0x06, 0xb4, 0x01, 0x51, 0xfc, 0x6a, 0xfb, 0x61, 0xff, 0x2d, 0x05, 0xd5, 0x0a, + 0x68, 0x07, 0xf2, 0x06, 0x0d, 0x03, 0xf6, 0x03, 0xc2, 0x03, 0xa0, 0x02, 0x2b, 0x00, 0xa3, 0xfc, + 0xd0, 0xfa, 0x6e, 0xfa, 0xc4, 0xfd, 0xb2, 0x01, 0xf8, 0x03, 0x0b, 0x05, 0x70, 0x03, 0xbe, 0x03, + 0xf1, 0x01, 0xbc, 0x00, 0x5b, 0xfd, 0x06, 0xfc, 0x45, 0x02, 0xf1, 0xfd, 0x7d, 0xfe, 0xb2, 0xfa, + 0xaf, 0xf7, 0x2e, 0xf8, 0x1e, 0xf5, 0xfd, 0xf2, 0x99, 0xf1, 0x79, 0xed, 0x53, 0xee, 0xe2, 0xec, + 0xf9, 0xed, 0x9a, 0xef, 0x50, 0xec, 0x2e, 0xee, 0xef, 0xec, 0x9c, 0xec, 0x73, 0xee, 0xe3, 0xf4, + 0x44, 0xf4, 0x6c, 0xf7, 0xb3, 0xf9, 0xe4, 0xfa, 0x96, 0xf8, 0x09, 0xf9, 0x86, 0xfc, 0x87, 0x03, + 0x74, 0x09, 0xb9, 0x0a, 0x0e, 0x0e, 0x75, 0x0b, 0x8a, 0x0c, 0x27, 0x0d, 0xcf, 0x0b, 0x85, 0x05, + 0xfc, 0x05, 0xd2, 0x04, 0x09, 0x04, 0xd7, 0x03, 0x32, 0x02, 0xbc, 0x02, 0x96, 0xfd, 0xcb, 0xf8, + 0x87, 0xf5, 0xb0, 0xed, 0x95, 0xea, 0x42, 0xeb, 0x97, 0xec, 0x9e, 0xf1, 0x31, 0xf1, 0xb5, 0xf1, + 0xcb, 0xf1, 0x18, 0xf5, 0xd4, 0xf5, 0x07, 0xf8, 0x59, 0xf6, 0xe9, 0xf5, 0xe8, 0xfa, 0x28, 0xfd, + 0x6d, 0xff, 0xa9, 0x00, 0x9a, 0xff, 0xbd, 0x03, 0xc5, 0x06, 0xfc, 0x03, 0x41, 0x07, 0xbc, 0x07, + 0x2a, 0x0d, 0xc0, 0x0f, 0x79, 0x0f, 0xf8, 0x0a, 0xa8, 0x07, 0x03, 0x06, 0x9f, 0x03, 0xdd, 0x06, + 0x0d, 0x04, 0xe6, 0xfe, 0x39, 0xfb, 0x09, 0xfa, 0x09, 0xfc, 0x0d, 0xfb, 0x1e, 0xfb, 0xae, 0xf6, + 0x75, 0xf2, 0x2f, 0xf8, 0x44, 0xfc, 0xd3, 0x03, 0x44, 0x03, 0x5c, 0x04, 0x38, 0x04, 0xfc, 0x02, + 0xf2, 0xff, 0x5e, 0xfd, 0x79, 0xfd, 0x38, 0xfd, 0x77, 0xfe, 0x78, 0xfe, 0x98, 0x00, 0x8f, 0xfd, + 0x74, 0xff, 0xbb, 0x00, 0xf3, 0xff, 0x4b, 0x03, 0xab, 0x05, 0x71, 0x04, 0xde, 0x06, 0x56, 0x06, + 0x0b, 0x08, 0x77, 0x0a, 0x8f, 0x08, 0x44, 0x0a, 0x4c, 0x09, 0xb9, 0x05, 0x68, 0x04, 0x0e, 0x07, + 0x4c, 0x09, 0x2b, 0x0c, 0xb3, 0x0b, 0xb2, 0x0a, 0x5b, 0x09, 0x9f, 0x0a, 0x13, 0x0e, 0x7a, 0x14, + 0x65, 0x15, 0xb5, 0x13, 0x16, 0x17, 0x6c, 0x14, 0x75, 0x13, 0x51, 0x14, 0x37, 0x13, 0xc5, 0x0f, + 0xfd, 0x07, 0x78, 0x04, 0xe7, 0x03, 0x2b, 0x03, 0x59, 0x0a, 0xf0, 0x0a, 0x64, 0x0b, 0x97, 0x0c, + 0xba, 0x0b, 0x1d, 0x07, 0x62, 0x04, 0x6c, 0x04, 0xb0, 0x07, 0xbf, 0x08, 0x32, 0x03, 0x8c, 0xff, + 0x7a, 0xf6, 0xe6, 0xf2, 0xc2, 0xf0, 0x24, 0xef, 0xf1, 0xec, 0xf8, 0xe8, 0xcc, 0xe5, 0xfc, 0xe6, + 0x8e, 0xe4, 0xbe, 0xe6, 0x79, 0xe6, 0x59, 0xe5, 0xcd, 0xe5, 0x02, 0xe7, 0x5d, 0xe6, 0x3a, 0xe8, + 0xe5, 0xec, 0x91, 0xed, 0xf2, 0xf2, 0xe9, 0xf4, 0xea, 0xf3, 0x78, 0xf3, 0x22, 0xf5, 0xc5, 0xf9, + 0xfb, 0x01, 0x93, 0xff, 0x2e, 0x04, 0xeb, 0x05, 0x5a, 0x0b, 0x97, 0x0e, 0x6e, 0x0e, 0x15, 0x10, + 0xe6, 0x0a, 0x87, 0x09, 0xab, 0x07, 0x33, 0x0b, 0x71, 0x0a, 0x10, 0x0b, 0x7a, 0x0b, 0x9b, 0x08, + 0x72, 0x04, 0x8c, 0xfe, 0xe8, 0xf6, 0x46, 0xf1, 0x6f, 0xf0, 0x52, 0xf4, 0xe8, 0xf8, 0xeb, 0xf8, + 0xb4, 0xf7, 0xbc, 0xfa, 0xb8, 0xfb, 0xf8, 0xf9, 0xb5, 0xfe, 0x61, 0x00, 0x6a, 0x03, 0x07, 0x05, + 0xf9, 0x01, 0x33, 0xfe, 0x28, 0xfd, 0x7e, 0xfc, 0x6c, 0x00, 0x47, 0xfe, 0xf3, 0xf8, 0x0b, 0xfd, + 0x4d, 0x02, 0x71, 0x05, 0xb3, 0x05, 0x62, 0x06, 0xfc, 0x00, 0x41, 0x00, 0x9c, 0xfe, 0x5a, 0x00, + 0x49, 0x02, 0x06, 0xfe, 0x36, 0xfb, 0x6f, 0xfa, 0x05, 0xfa, 0xd8, 0xfc, 0x5a, 0xfb, 0x6a, 0xfb, + 0x7d, 0xf7, 0x73, 0xf5, 0x5d, 0xf8, 0xd8, 0xf7, 0x81, 0xfe, 0x4a, 0x02, 0xd0, 0x07, 0x2f, 0x08, + 0x90, 0x07, 0x82, 0x05, 0xd3, 0x00, 0xcf, 0xff, 0x61, 0x00, 0x50, 0xff, 0x28, 0x02, 0x6a, 0x02, + 0x50, 0xff, 0xbb, 0xfe, 0x10, 0xff, 0x61, 0xff, 0x3c, 0x00, 0x9c, 0xfd, 0x95, 0xfc, 0xf1, 0x00, + 0x36, 0xff, 0xec, 0x02, 0x4d, 0x04, 0x41, 0x03, 0xd7, 0x02, 0xc9, 0x03, 0x90, 0x02, 0x63, 0x02, + 0xaf, 0x04, 0x5b, 0x05, 0x0a, 0x04, 0xd0, 0xfe, 0xd9, 0xfc, 0x37, 0xfd, 0xf6, 0xfb, 0x1a, 0xfb, + 0x19, 0x02, 0x32, 0x02, 0xca, 0x03, 0x10, 0x03, 0x51, 0x01, 0x9b, 0x03, 0x3f, 0x03, 0x61, 0x05, + 0xec, 0x01, 0x3d, 0xfd, 0xdb, 0xfc, 0x39, 0xfd, 0x07, 0x00, 0xa5, 0x03, 0x21, 0x07, 0x7b, 0x0d, + 0xe8, 0x10, 0xef, 0x0e, 0x10, 0x0a, 0x4c, 0x08, 0x9a, 0x05, 0x68, 0x09, 0xce, 0x0c, 0x55, 0x0d, + 0x48, 0x09, 0x40, 0x08, 0x0d, 0x06, 0x9f, 0x02, 0x9e, 0x00, 0x0e, 0xfe, 0x3e, 0xfc, 0x10, 0xf8, + 0xe2, 0xfa, 0x60, 0xf9, 0x51, 0xf7, 0x1e, 0xf7, 0x91, 0xf7, 0xe2, 0xf5, 0x47, 0xf5, 0x4c, 0xf1, + 0x8a, 0xf3, 0xa9, 0xf8, 0x13, 0xff, 0xc3, 0x04, 0xae, 0x00, 0xa2, 0xfd, 0x71, 0x00, 0x2e, 0x03, + 0x3a, 0x0a, 0x83, 0x0d, 0xfa, 0x0b, 0x85, 0x0f, 0x64, 0x0c, 0x52, 0x10, 0xf8, 0x0f, 0xe2, 0x0f, + 0x6c, 0x0c, 0x57, 0x07, 0x08, 0x06, 0xa2, 0x03, 0x9d, 0x04, 0xd5, 0x03, 0x9d, 0x02, 0x5b, 0x02, + 0xce, 0xff, 0x87, 0xfc, 0x6a, 0xf6, 0xd1, 0xec, 0x24, 0xeb, 0x12, 0xea, 0x08, 0xee, 0x34, 0xee, + 0x16, 0xf1, 0x8f, 0xf2, 0xab, 0xf5, 0xb9, 0xf6, 0x9a, 0xf3, 0x37, 0xf3, 0xa7, 0xf4, 0xa0, 0xf9, + 0xf8, 0xf9, 0x80, 0xfa, 0xbd, 0xfa, 0x80, 0xfe, 0x2f, 0xfd, 0xfb, 0xfc, 0x03, 0xff, 0x4c, 0xfd, + 0x11, 0x00, 0x1d, 0x07, 0x6d, 0x08, 0x0f, 0x0a, 0xf2, 0x07, 0x1c, 0x04, 0xc0, 0x03, 0xfb, 0xfe, + 0xd7, 0xfe, 0x7e, 0xff, 0x19, 0xfc, 0x33, 0xfd, 0x70, 0xfd, 0xc5, 0xfb, 0x22, 0xfa, 0x63, 0xf6, + 0xd4, 0xfa, 0x91, 0xfa, 0x03, 0xfb, 0x24, 0xfa, 0x2f, 0xfa, 0xe8, 0xfa, 0x9e, 0xfd, 0xd4, 0x02, + 0xd8, 0x00, 0xa6, 0x00, 0x83, 0xfe, 0x27, 0xfa, 0xc9, 0xf7, 0x60, 0xf9, 0x83, 0xfa, 0x4c, 0xff, + 0x95, 0xfc, 0x13, 0xfa, 0x9a, 0xfd, 0x03, 0x00, 0xc9, 0x01, 0xb8, 0x01, 0x2c, 0x01, 0x39, 0x02, + 0x42, 0x06, 0x00, 0x07, 0x1d, 0x0b, 0x33, 0x0e, 0x8b, 0x0f, 0x4b, 0x0f, 0x0a, 0x0c, 0x50, 0x08, + 0x6f, 0x0a, 0x15, 0x0b, 0xbb, 0x0f, 0xf4, 0x10, 0x90, 0x10, 0x75, 0x0d, 0x24, 0x0c, 0x95, 0x0a, + 0xd8, 0x0a, 0xac, 0x10, 0x11, 0x12, 0x49, 0x14, 0xee, 0x0f, 0x3e, 0x12, 0x52, 0x13, 0x46, 0x11, + 0x3b, 0x0f, 0x56, 0x09, 0x23, 0x04, 0x81, 0x03, 0x34, 0x02, 0x82, 0x03, 0xed, 0x04, 0xbd, 0x06, + 0x10, 0x09, 0x75, 0x0c, 0xb8, 0x0b, 0x83, 0x07, 0x9a, 0x07, 0x4a, 0x03, 0x97, 0x02, 0xb0, 0x01, + 0x01, 0xff, 0xf1, 0xfa, 0x1f, 0xf6, 0xa1, 0xf1, 0xc2, 0xee, 0x17, 0xe9, 0x92, 0xe5, 0xe0, 0xe2, + 0x9c, 0xe3, 0x8f, 0xe2, 0xc0, 0xe0, 0x19, 0xe1, 0xda, 0xe3, 0x6b, 0xe5, 0x4e, 0xe6, 0x6d, 0xe4, + 0x5c, 0xe0, 0xda, 0xe4, 0x74, 0xeb, 0xc7, 0xf3, 0x4a, 0xf4, 0xba, 0xf4, 0x68, 0xf5, 0x7d, 0xf5, + 0x50, 0xf5, 0xcb, 0xf9, 0x24, 0xfe, 0x0b, 0x02, 0x2e, 0x09, 0x44, 0x0d, 0xae, 0x10, 0x33, 0x0e, + 0x07, 0x11, 0x8f, 0x0d, 0x3b, 0x0d, 0x6e, 0x0d, 0x2a, 0x0c, 0x79, 0x0d, 0x7d, 0x0c, 0xcd, 0x0d, + 0x56, 0x0f, 0x5f, 0x0c, 0x88, 0x08, 0xe2, 0xfe, 0xee, 0xf9, 0xa1, 0xf9, 0xea, 0xf9, 0x80, 0xfc, + 0xe7, 0xf8, 0xc8, 0xfb, 0xb1, 0xfb, 0x23, 0xfe, 0x2b, 0x00, 0x5d, 0x01, 0x2a, 0x01, 0x1c, 0x01, + 0x79, 0xff, 0x6d, 0x00, 0xf9, 0xff, 0x11, 0x00, 0x9a, 0x00, 0xb4, 0xfc, 0x4b, 0xfd, 0xd2, 0xfb, + 0x99, 0xfa, 0xdf, 0xfb, 0xc5, 0x01, 0xf7, 0x01, 0x57, 0x05, 0xb9, 0x03, 0x89, 0x02, 0xa8, 0x03, + 0x06, 0xff, 0x77, 0xff, 0xc5, 0xff, 0xce, 0xfe, 0x11, 0x01, 0x05, 0x01, 0x10, 0x02, 0x71, 0xff, + 0x01, 0xfc, 0xfd, 0xfa, 0xdd, 0xf8, 0x70, 0xf7, 0x4b, 0xf5, 0x2d, 0xfc, 0xb9, 0xfd, 0xa3, 0x00, + 0x62, 0x04, 0x9a, 0x05, 0xa8, 0x06, 0x7b, 0x03, 0x62, 0xfe, 0xda, 0xfc, 0xd3, 0xfe, 0xa9, 0x00, + 0x1c, 0x02, 0xca, 0xfe, 0x7d, 0xff, 0x33, 0x00, 0x16, 0x01, 0xd5, 0xfe, 0xd1, 0xfe, 0x1f, 0xff, + 0xaa, 0x02, 0x66, 0x03, 0xfc, 0x01, 0x15, 0x05, 0x1c, 0x08, 0x36, 0x0c, 0xf5, 0x0e, 0x74, 0x0e, + 0xfd, 0x08, 0x24, 0x06, 0xcf, 0x03, 0x25, 0x07, 0x6b, 0x07, 0x84, 0x05, 0x43, 0x01, 0x6f, 0xfe, + 0x7c, 0xfc, 0x82, 0xfe, 0xa8, 0x01, 0x4e, 0x01, 0x21, 0x02, 0x47, 0x02, 0xe2, 0x06, 0xb7, 0x07, + 0x50, 0x04, 0x8d, 0x03, 0x33, 0x01, 0xc5, 0xff, 0x6d, 0x00, 0x23, 0xfe, 0x35, 0x02, 0x5c, 0x06, + 0xdf, 0x0c, 0xee, 0x0f, 0x74, 0x12, 0xd1, 0x0e, 0x3c, 0x0a, 0x7f, 0x09, 0xcd, 0x0a, 0x35, 0x0f, + 0xb4, 0x0d, 0xdb, 0x0c, 0xba, 0x09, 0x56, 0x07, 0x0b, 0x07, 0xc7, 0x04, 0x30, 0xff, 0x23, 0xfc, + 0x04, 0xfb, 0x9e, 0xfc, 0xa3, 0xf8, 0xea, 0xf6, 0x91, 0xf6, 0x92, 0xf7, 0xd3, 0xf5, 0x6d, 0xf2, + 0xdb, 0xf0, 0x87, 0xf0, 0x71, 0xf3, 0xca, 0xf7, 0xee, 0xf9, 0x27, 0xfa, 0x58, 0xfd, 0x76, 0x00, + 0x0f, 0x03, 0x31, 0x00, 0x2c, 0x02, 0x7f, 0x02, 0xa7, 0x06, 0x8b, 0x08, 0xa9, 0x0b, 0x20, 0x0b, + 0x81, 0x06, 0xdd, 0x05, 0xb2, 0x01, 0x49, 0x02, 0x9f, 0x00, 0xfc, 0xfe, 0x49, 0xfd, 0xf0, 0xfe, + 0x29, 0x00, 0x49, 0x02, 0x0a, 0x00, 0xce, 0xf8, 0xdc, 0xf1, 0xff, 0xee, 0x4f, 0xeb, 0x78, 0xec, + 0x76, 0xee, 0xbf, 0xef, 0x24, 0xf2, 0xaf, 0xef, 0x61, 0xf1, 0xea, 0xf0, 0x67, 0xf0, 0x8d, 0xf2, + 0xa4, 0xf4, 0xa6, 0xf6, 0x47, 0xfa, 0xc2, 0xf8, 0x7f, 0xf8, 0x66, 0xf9, 0x01, 0xfa, 0x65, 0xf9, + 0xb1, 0xf9, 0x25, 0xfb, 0x82, 0xfc, 0x4b, 0x01, 0xcf, 0x02, 0x73, 0x06, 0xac, 0x03, 0x40, 0x01, + 0xc3, 0x00, 0xc9, 0xfc, 0xa2, 0xfb, 0x7e, 0xfd, 0x01, 0xfb, 0x95, 0xfb, 0x0e, 0xf9, 0xde, 0xf9, + 0x2f, 0xfb, 0x90, 0xfb, 0x10, 0xfb, 0x8e, 0xf7, 0x03, 0xf6, 0x69, 0xf5, 0xcc, 0xf8, 0x8c, 0xf6, + 0x73, 0xf9, 0xeb, 0xfb, 0x69, 0xfd, 0xf9, 0xfb, 0x18, 0xf6, 0x5d, 0xf3, 0x77, 0xf3, 0x67, 0xf5, + 0x4a, 0xf7, 0x9b, 0xf6, 0x63, 0xf9, 0x42, 0xfb, 0xcc, 0xfc, 0x8b, 0xfe, 0xc5, 0xfd, 0x84, 0xff, + 0x3d, 0xff, 0x78, 0x05, 0xcd, 0x07, 0x4e, 0x09, 0xd4, 0x0a, 0xf2, 0x0c, 0x56, 0x0d, 0xbe, 0x0e, + 0x42, 0x0e, 0xc9, 0x0d, 0xbb, 0x0c, 0xbc, 0x0d, 0x58, 0x12, 0xb5, 0x12, 0x11, 0x12, 0x87, 0x0e, + 0x43, 0x0f, 0x12, 0x0e, 0x5e, 0x0f, 0x2e, 0x0f, 0xbb, 0x0e, 0x79, 0x11, 0xa8, 0x13, 0x6b, 0x15, + 0x34, 0x11, 0x3c, 0x0d, 0x9a, 0x0d, 0x7b, 0x0d, 0x53, 0x0b, 0x4c, 0x0a, 0x4f, 0x07, 0xa4, 0x05, + 0xb2, 0x09, 0xfe, 0x10, 0x92, 0x16, 0xee, 0x19, 0x83, 0x13, 0xa4, 0x0e, 0x27, 0x0b, 0x0b, 0x0c, + 0xd5, 0x0c, 0x34, 0x09, 0x7a, 0x05, 0x05, 0x04, 0x7e, 0x01, 0xa1, 0xfd, 0xfb, 0xf7, 0xe9, 0xf2, + 0xcc, 0xf0, 0x77, 0xee, 0xb0, 0xee, 0x29, 0xec, 0x36, 0xec, 0xda, 0xeb, 0x13, 0xee, 0xc7, 0xeb, + 0x4a, 0xe9, 0xd3, 0xe9, 0x23, 0xed, 0xd3, 0xf0, 0x84, 0xf5, 0xf3, 0xf9, 0x4d, 0xfc, 0xba, 0xfb, + 0x5a, 0xfc, 0x38, 0xfd, 0xf5, 0xfb, 0x57, 0x00, 0xfb, 0x03, 0x79, 0x0a, 0x70, 0x0b, 0x9a, 0x11, + 0x15, 0x12, 0x44, 0x0f, 0x32, 0x10, 0x2d, 0x0f, 0xf7, 0x0e, 0xe7, 0x0e, 0xce, 0x0b, 0xbd, 0x0c, + 0xd1, 0x0e, 0x82, 0x0d, 0x2e, 0x0c, 0x0d, 0x09, 0x97, 0x03, 0xd1, 0xfd, 0xfd, 0xfa, 0xa1, 0xf5, + 0xcf, 0xf6, 0x50, 0xf4, 0x00, 0xf5, 0x7f, 0xf8, 0x77, 0xfa, 0x9f, 0xfc, 0x1e, 0xfa, 0x25, 0xf8, + 0xf8, 0xf5, 0x7a, 0xf7, 0xd1, 0xf7, 0xa1, 0xf8, 0xd2, 0xf5, 0xeb, 0xf3, 0x09, 0xf5, 0x42, 0xf4, + 0xc3, 0xf2, 0x0f, 0xf4, 0x03, 0xf2, 0x1f, 0xf5, 0x25, 0xfa, 0xc3, 0xfb, 0x7d, 0xfe, 0x5c, 0xfc, + 0xf8, 0xfa, 0x15, 0xfb, 0xb3, 0xf5, 0x09, 0xf8, 0x12, 0xfb, 0x61, 0xf9, 0xd8, 0xfc, 0x92, 0xfb, + 0xee, 0xfb, 0x49, 0xf8, 0x89, 0xf6, 0x79, 0xf3, 0x16, 0xf5, 0x46, 0xf8, 0xc2, 0xf6, 0xa3, 0xf5, + 0x40, 0xf5, 0xbb, 0xfa, 0x32, 0xfe, 0x11, 0x00, 0xd3, 0xfd, 0x5f, 0xfb, 0x9b, 0xf7, 0xf2, 0xf7, + 0xf4, 0xf8, 0xd4, 0xf9, 0x3d, 0xf7, 0x41, 0xf9, 0x30, 0xfb, 0xb1, 0xfb, 0xf0, 0xfb, 0x75, 0xfc, + 0xf8, 0xfc, 0xd5, 0xfa, 0x7f, 0xfd, 0x30, 0xfe, 0xe1, 0x00, 0xb9, 0x04, 0x6b, 0x08, 0x20, 0x0b, + 0x86, 0x0b, 0x97, 0x09, 0xfa, 0x08, 0x23, 0x06, 0x34, 0x09, 0x54, 0x08, 0x7b, 0x07, 0xdf, 0x04, + 0x7f, 0x00, 0x47, 0x03, 0x2d, 0xff, 0xae, 0xfc, 0x40, 0xfb, 0x7c, 0xfe, 0x13, 0x03, 0xac, 0x04, + 0x3e, 0x05, 0xee, 0x04, 0x45, 0x01, 0xed, 0x00, 0x08, 0x02, 0x0e, 0x03, 0xcf, 0x02, 0x18, 0x03, + 0xa8, 0x03, 0x0a, 0x07, 0xca, 0x0b, 0xc0, 0x0e, 0x52, 0x10, 0xe0, 0x0c, 0xce, 0x0d, 0x1b, 0x0e, + 0xae, 0x0e, 0x14, 0x0f, 0x19, 0x0d, 0x51, 0x0d, 0x2c, 0x0f, 0x0e, 0x0d, 0xdb, 0x09, 0xde, 0x04, + 0x29, 0x02, 0xbf, 0xfe, 0x12, 0xff, 0xb4, 0xfc, 0xbf, 0xfa, 0xe6, 0xfa, 0x09, 0xf8, 0xcf, 0xf8, + 0xab, 0xf7, 0x9e, 0xf7, 0xc1, 0xf5, 0x3d, 0xf5, 0x7b, 0xf5, 0x91, 0xfb, 0xfb, 0xff, 0x1d, 0x05, + 0xa3, 0x04, 0xb9, 0x03, 0x9c, 0x04, 0xb7, 0x04, 0x01, 0x06, 0x18, 0x08, 0x26, 0x0d, 0x7c, 0x0c, + 0xca, 0x10, 0x17, 0x0f, 0xbe, 0x0c, 0x7e, 0x0c, 0xac, 0x08, 0x4c, 0x07, 0x8a, 0x08, 0x6c, 0x06, + 0xb2, 0x07, 0xad, 0x08, 0x7c, 0x09, 0xbd, 0x08, 0xf0, 0x06, 0xd1, 0x02, 0xa1, 0xfd, 0x52, 0xfb, + 0x58, 0xfa, 0x7d, 0xfd, 0x91, 0xf8, 0x4f, 0xf7, 0x6c, 0xf8, 0x5f, 0xf8, 0xa9, 0xf8, 0x27, 0xf9, + 0x8e, 0xf7, 0xf1, 0xf7, 0x1f, 0xf9, 0x6d, 0xfb, 0xc8, 0xfc, 0x18, 0xfb, 0xc1, 0xfb, 0xe0, 0xfd, + 0x67, 0xfe, 0xb7, 0xfb, 0x7e, 0xfe, 0xf0, 0xfc, 0xf5, 0xff, 0x8e, 0x02, 0x70, 0x02, 0x7b, 0x04, + 0x94, 0x01, 0x10, 0x00, 0x7e, 0x01, 0x09, 0xfe, 0x47, 0xfb, 0xd2, 0xf8, 0xda, 0xf8, 0xf2, 0xfa, + 0x32, 0xff, 0xfc, 0xfe, 0xdb, 0xf8, 0x81, 0xf5, 0xd0, 0xf1, 0x1b, 0xf5, 0x77, 0xf3, 0x71, 0xef, + 0xd3, 0xec, 0x74, 0xed, 0x3e, 0xf0, 0xc9, 0xf2, 0x20, 0xf3, 0xc6, 0xef, 0xc7, 0xed, 0x0a, 0xed, + 0x2d, 0xef, 0xc1, 0xed, 0x39, 0xf0, 0xb8, 0xf0, 0x26, 0xf4, 0xe6, 0xf4, 0x7d, 0xf6, 0x77, 0xf8, + 0xb2, 0xf9, 0x2d, 0xfd, 0xfd, 0xff, 0x54, 0x02, 0x15, 0x02, 0x1a, 0x03, 0x3a, 0x05, 0x78, 0x07, + 0x03, 0x0c, 0xc2, 0x0d, 0x14, 0x0b, 0xc0, 0x0b, 0xdf, 0x0b, 0x13, 0x0e, 0x44, 0x0b, 0x16, 0x0c, + 0x4b, 0x0c, 0xfa, 0x0b, 0xcc, 0x0c, 0xda, 0x09, 0x4a, 0x07, 0xb3, 0x06, 0x38, 0x08, 0x18, 0x0a, + 0xa1, 0x0b, 0xbc, 0x0b, 0xa8, 0x0c, 0xb9, 0x09, 0x80, 0x08, 0xad, 0x04, 0x3b, 0x03, 0x21, 0x02, + 0x0d, 0x03, 0x45, 0x05, 0xba, 0x0c, 0xbd, 0x10, 0x42, 0x12, 0xf6, 0x13, 0x31, 0x11, 0x9e, 0x10, + 0xf1, 0x0f, 0xd4, 0x0a, 0x13, 0x07, 0x9f, 0x05, 0x3b, 0x03, 0x94, 0x06, 0xb0, 0xff, 0x0f, 0xfc, + 0xa1, 0xf7, 0x41, 0xf4, 0x7b, 0xf2, 0x50, 0xef, 0xcf, 0xef, 0xf5, 0xee, 0x17, 0xed, 0x1a, 0xeb, + 0xc4, 0xeb, 0xa0, 0xec, 0x4b, 0xed, 0xc2, 0xef, 0xa4, 0xf1, 0x63, 0xf1, 0x68, 0xf5, 0x30, 0xf7, + 0xa3, 0xf9, 0xfe, 0xf9, 0x5e, 0xfc, 0x94, 0xfd, 0x61, 0xff, 0x38, 0x00, 0x0f, 0x05, 0xab, 0x08, + 0xd7, 0x08, 0x38, 0x0e, 0x30, 0x0f, 0x7e, 0x0e, 0x80, 0x0d, 0x0f, 0x0c, 0x27, 0x0a, 0x80, 0x0c, + 0x01, 0x0a, 0x68, 0x0a, 0xc3, 0x0a, 0x57, 0x0c, 0x12, 0x0e, 0x94, 0x0b, 0x6c, 0x04, 0x41, 0x00, + 0x75, 0x00, 0xe6, 0xfe, 0xe8, 0xfc, 0x3b, 0xfa, 0xc9, 0xf9, 0x98, 0xfb, 0x4a, 0xfd, 0xe6, 0xfb, + 0x71, 0xfb, 0x33, 0xf8, 0x8c, 0xfc, 0x71, 0xf9, 0xaa, 0xf7, 0x5a, 0xf8, 0x64, 0xf5, 0xb9, 0xf8, + 0x4d, 0xf9, 0x68, 0xf8, 0x47, 0xf9, 0x84, 0xf9, 0xd5, 0xf9, 0xea, 0xfe, 0x29, 0x00, 0x7c, 0x00, + 0x28, 0x01, 0x09, 0x00, 0x5d, 0x00, 0x52, 0x03, 0x1d, 0x02, 0x56, 0x03, 0xe1, 0x02, 0x7c, 0x03, + 0xc3, 0x04, 0xc0, 0x05, 0x96, 0x03, 0xd6, 0xff, 0xab, 0xff, 0x61, 0xfe, 0xd3, 0xfe, 0xa1, 0xfc, + 0xd2, 0xfa, 0x98, 0xf8, 0x15, 0xfb, 0x00, 0xfc, 0x8a, 0xfe, 0xcd, 0xfd, 0x93, 0xfc, 0x48, 0xfb, + 0xbb, 0xf9, 0xbb, 0xf7, 0xe6, 0xf5, 0x08, 0xf5, 0x4b, 0xf4, 0xd2, 0xf7, 0x77, 0xfb, 0x06, 0xfd, + 0xa9, 0xf9, 0x6b, 0xfa, 0xb6, 0xfc, 0x62, 0xff, 0x80, 0xff, 0x51, 0x02, 0x42, 0xff, 0x73, 0x03, + 0xfa, 0x06, 0x75, 0x06, 0x0f, 0x08, 0x38, 0x05, 0x1b, 0x05, 0xaf, 0x04, 0x61, 0x02, 0x4e, 0xfe, + 0xaf, 0xfd, 0xef, 0xfb, 0xce, 0xfb, 0xdc, 0xfb, 0xf1, 0xf8, 0x14, 0xf6, 0x10, 0xf7, 0xcd, 0xf7, + 0xde, 0xf9, 0x99, 0xfb, 0x3b, 0xfd, 0xae, 0xfd, 0x84, 0xfd, 0x77, 0xfe, 0xf4, 0xfe, 0x97, 0xff, + 0x41, 0xff, 0x23, 0x02, 0x1a, 0x03, 0x57, 0x09, 0xa4, 0x0d, 0xdb, 0x0f, 0xeb, 0x11, 0xf3, 0x13, + 0xba, 0x13, 0x13, 0x13, 0xce, 0x0f, 0x80, 0x0e, 0xb3, 0x0e, 0xb8, 0x0e, 0x40, 0x10, 0xf2, 0x0e, + 0x9c, 0x0c, 0x4f, 0x08, 0xad, 0x05, 0xab, 0x03, 0x08, 0x02, 0x12, 0x00, 0xfa, 0xfe, 0x53, 0xfd, + 0xc7, 0xfd, 0x43, 0xfa, 0x57, 0xfc, 0xeb, 0xf9, 0xe1, 0xf8, 0xcc, 0xfd, 0xb9, 0xfd, 0x3f, 0x01, + 0x55, 0xff, 0xe2, 0xfe, 0x9f, 0xff, 0x10, 0x01, 0xdc, 0x00, 0xdf, 0x02, 0x48, 0x01, 0x20, 0x01, + 0x55, 0x03, 0x43, 0x05, 0xff, 0x08, 0xe2, 0x09, 0x2b, 0x08, 0xbf, 0x08, 0x0d, 0x06, 0xc2, 0x04, + 0x1a, 0x05, 0xf5, 0x02, 0xad, 0x04, 0x5e, 0x07, 0x20, 0x0b, 0x5a, 0x0a, 0x9e, 0x07, 0x3c, 0x04, + 0x7d, 0x04, 0x17, 0x03, 0x0f, 0x00, 0x51, 0xfd, 0x09, 0xfa, 0x16, 0xfa, 0xce, 0xfb, 0xbe, 0xfc, + 0x46, 0xfb, 0x8d, 0xf9, 0x36, 0xf9, 0x7b, 0xfa, 0xc3, 0xf6, 0x87, 0xf5, 0x09, 0xf5, 0x8a, 0xf3, + 0x7c, 0xf6, 0xd3, 0xf8, 0xa2, 0xf8, 0x88, 0xfa, 0x52, 0xfa, 0x4c, 0xfd, 0x06, 0xff, 0x06, 0x02, + 0xa4, 0x02, 0x12, 0xff, 0xd0, 0x00, 0xf3, 0xfe, 0x0b, 0x00, 0x63, 0xff, 0x05, 0xff, 0x07, 0xfd, + 0x41, 0xfe, 0x2a, 0xfd, 0xa8, 0xfb, 0x05, 0xfa, 0x50, 0xf6, 0x9f, 0xf4, 0xb2, 0xf1, 0x82, 0xed, + 0xc0, 0xe8, 0xba, 0xe5, 0x51, 0xe4, 0xef, 0xe7, 0x2a, 0xea, 0xa5, 0xeb, 0xee, 0xea, 0xbc, 0xeb, + 0x33, 0xec, 0x5c, 0xed, 0xe7, 0xeb, 0xfa, 0xea, 0x62, 0xeb, 0x9c, 0xef, 0x5b, 0xf4, 0x3c, 0xf8, + 0xdf, 0xfc, 0xfe, 0xfc, 0x5b, 0x01, 0x1d, 0x05, 0x95, 0x06, 0xe2, 0x07, 0x29, 0x09, 0xcf, 0x09, + 0x08, 0x0f, 0x7b, 0x11, 0xf2, 0x11, 0x09, 0x14, 0xd3, 0x13, 0x6b, 0x12, 0x45, 0x10, 0x47, 0x0e, + 0x7c, 0x0d, 0xcf, 0x0b, 0x0a, 0x0e, 0xeb, 0x0c, 0x1f, 0x09, 0x1e, 0x09, 0x48, 0x06, 0xdf, 0x04, + 0x30, 0x03, 0xb3, 0x05, 0x8c, 0x08, 0x1b, 0x0b, 0x07, 0x0a, 0x16, 0x08, 0x56, 0x07, 0x26, 0x05, + 0x7d, 0x04, 0x1a, 0x03, 0x29, 0x01, 0x23, 0x00, 0xba, 0x03, 0xd1, 0x06, 0x25, 0x07, 0xcd, 0x08, + 0x0b, 0x08, 0xbe, 0x06, 0xb7, 0x04, 0x64, 0xfe, 0x42, 0xfb, 0xcd, 0xfa, 0xd7, 0xfb, 0x1e, 0xff, + 0xb5, 0xff, 0x87, 0xfc, 0xb1, 0xf9, 0x30, 0xf9, 0xa8, 0xf6, 0xe7, 0xf6, 0x6f, 0xf2, 0xc9, 0xf1, + 0xe9, 0xf4, 0xba, 0xf5, 0x79, 0xf6, 0x1f, 0xf9, 0x14, 0xf8, 0xaa, 0xf9, 0xbc, 0xff, 0x5b, 0xff, + 0x3c, 0x03, 0x62, 0x01, 0xfd, 0x01, 0x86, 0x04, 0xee, 0x03, 0xed, 0x07, 0xb4, 0x09, 0xda, 0x06, + 0x48, 0x0a, 0xb9, 0x08, 0x5b, 0x0d, 0xb7, 0x10, 0x91, 0x11, 0x50, 0x10, 0x45, 0x11, 0xe7, 0x0f, + 0x6f, 0x10, 0x1f, 0x0f, 0x23, 0x0d, 0x65, 0x11, 0xbe, 0x14, 0x4d, 0x16, 0x73, 0x12, 0xa2, 0x0f, + 0x82, 0x0b, 0xe2, 0x09, 0xe4, 0x06, 0x31, 0x02, 0xde, 0xfc, 0x4e, 0xfa, 0xb3, 0xfa, 0x43, 0xfd, + 0xc8, 0xfc, 0x48, 0xfb, 0x48, 0xf9, 0x94, 0xf5, 0xca, 0xf4, 0x90, 0xf0, 0xa3, 0xec, 0x04, 0xeb, + 0x8d, 0xed, 0xb1, 0xef, 0x08, 0xf4, 0x64, 0xf5, 0xf7, 0xf7, 0x3d, 0xfa, 0x6b, 0xfd, 0x47, 0x00, + 0xe7, 0x02, 0x07, 0x03, 0x43, 0x01, 0xa9, 0x04, 0xd2, 0x02, 0xee, 0x03, 0x56, 0x04, 0x06, 0x06, + 0x93, 0x07, 0x2c, 0x06, 0x3b, 0x05, 0x05, 0x04, 0x30, 0x02, 0x72, 0x04, 0x33, 0x03, 0xdf, 0x00, + 0x1b, 0xfe, 0xd6, 0xf9, 0x61, 0xf4, 0x6a, 0xf3, 0xf3, 0xf4, 0xac, 0xf4, 0xd9, 0xf6, 0x0a, 0xf5, + 0x42, 0xf5, 0x49, 0xf5, 0xef, 0xf4, 0xe7, 0xf1, 0x86, 0xf1, 0x50, 0xf2, 0xfa, 0xf5, 0xe1, 0xf6, + 0x73, 0xf7, 0xde, 0xfa, 0x1a, 0xfb, 0xac, 0xfa, 0x33, 0xfd, 0xf1, 0xfc, 0xf1, 0xfa, 0x37, 0xfb, + 0xe9, 0xfa, 0x0a, 0xfe, 0x3d, 0x00, 0xa4, 0x01, 0xd8, 0x00, 0x3d, 0x01, 0xb1, 0xfe, 0xd4, 0xfe, + 0x2e, 0xfe, 0x9d, 0xfd, 0x7d, 0xfc, 0x8d, 0xfc, 0x41, 0xfc, 0x04, 0xfd, 0x5e, 0x00, 0x25, 0xfc, + 0x0f, 0xfd, 0x6e, 0xfb, 0x0d, 0xfe, 0x76, 0x00, 0xcd, 0x00, 0x7b, 0x03, 0x19, 0x02, 0x5c, 0x00, + 0x11, 0x02, 0xa3, 0xfe, 0xa1, 0xfe, 0x97, 0x02, 0x42, 0x03, 0xd9, 0x07, 0x9b, 0x0b, 0x19, 0x0b, + 0x76, 0x0c, 0xff, 0x0c, 0x5e, 0x09, 0xc9, 0x09, 0xf4, 0x03, 0x26, 0x02, 0xf9, 0x03, 0xdb, 0x05, + 0xf7, 0x06, 0xd9, 0x07, 0x57, 0x05, 0x75, 0x02, 0x23, 0x00, 0xc8, 0xfc, 0xe9, 0xfa, 0xd6, 0xf7, + 0x90, 0xf4, 0xbf, 0xf3, 0xab, 0xf4, 0x88, 0xf3, 0x32, 0xf4, 0x0e, 0xf1, 0x01, 0xf2, 0x7d, 0xf2, + 0xc7, 0xf3, 0xe3, 0xf4, 0x47, 0xf3, 0x2e, 0xf2, 0xc7, 0xf2, 0xa2, 0xf3, 0x40, 0xf6, 0xf8, 0xf6, + 0xd6, 0xf5, 0xb4, 0xfa, 0xf2, 0xfb, 0x54, 0x02, 0xa0, 0x06, 0x7b, 0x0a, 0xa8, 0x0d, 0xd1, 0x10, + 0x52, 0x11, 0x3c, 0x0d, 0x42, 0x0b, 0x48, 0x0c, 0x94, 0x0f, 0xdf, 0x13, 0x3b, 0x15, 0x22, 0x13, + 0xc4, 0x13, 0x1c, 0x15, 0x9d, 0x15, 0x33, 0x14, 0xea, 0x0f, 0x46, 0x0b, 0xfe, 0x0b, 0x35, 0x09, + 0xc8, 0x08, 0xb6, 0x06, 0xc8, 0x06, 0x76, 0x05, 0x5e, 0x03, 0x72, 0x00, 0xaf, 0xfd, 0xdd, 0xfa, + 0x1f, 0xfa, 0xb4, 0xfc, 0x8d, 0xff, 0x0c, 0x02, 0x84, 0x01, 0xc1, 0x02, 0x27, 0x02, 0xce, 0x03, + 0xd0, 0x04, 0x98, 0x06, 0xa8, 0x06, 0xea, 0x06, 0xe1, 0x04, 0x10, 0x06, 0xb7, 0x06, 0xb6, 0x07, + 0x5d, 0x08, 0x1b, 0x08, 0xd5, 0x05, 0x97, 0x04, 0x74, 0x04, 0xca, 0x01, 0x56, 0x02, 0x10, 0xfe, + 0x99, 0xfc, 0xe6, 0xf5, 0x3e, 0xf1, 0x85, 0xee, 0xc9, 0xed, 0x0d, 0xf2, 0x4a, 0xf3, 0x27, 0xf5, + 0x89, 0xf7, 0x89, 0xf7, 0x39, 0xf6, 0x1c, 0xf5, 0xa2, 0xef, 0x94, 0xee, 0xea, 0xee, 0xe0, 0xf0, + 0xf2, 0xf3, 0x3f, 0xf7, 0x73, 0xfa, 0x6e, 0xff, 0x52, 0x00, 0xd2, 0x00, 0xda, 0xff, 0xdc, 0xfe, + 0x6e, 0xff, 0x1a, 0xff, 0x9a, 0x03, 0xda, 0x07, 0x0f, 0x0a, 0xcf, 0x09, 0xb5, 0x09, 0x26, 0x07, + 0x64, 0x06, 0xed, 0x05, 0x6e, 0x05, 0x40, 0x03, 0xd2, 0x01, 0xd5, 0x01, 0x95, 0x02, 0xfe, 0x01, + 0xc1, 0x00, 0x14, 0xff, 0x3a, 0xfc, 0xdb, 0xfc, 0x7e, 0xfd, 0xa3, 0xfa, 0x42, 0xfc, 0xa1, 0xfa, + 0x48, 0xfb, 0x58, 0xfe, 0x0a, 0xf8, 0xdf, 0xfa, 0x89, 0xfa, 0xdf, 0xfd, 0x22, 0x03, 0xbe, 0x04, + 0x6e, 0x06, 0x3f, 0x07, 0x60, 0x09, 0x5f, 0x09, 0x37, 0x06, 0x8f, 0x01, 0x47, 0x01, 0x21, 0x00, + 0x00, 0x03, 0x11, 0x04, 0x31, 0x03, 0x3d, 0x02, 0xd7, 0x01, 0xf5, 0xfe, 0x0d, 0xfd, 0xd0, 0xfa, + 0xcd, 0xf8, 0xb7, 0xf7, 0x3d, 0xf9, 0xb7, 0xfa, 0x1d, 0xf8, 0x9b, 0xf7, 0x0a, 0xf6, 0x01, 0xf6, + 0x40, 0xf6, 0x8f, 0xf6, 0xe1, 0xf5, 0x13, 0xf4, 0xcf, 0xf3, 0x54, 0xf7, 0xfa, 0xf7, 0x68, 0xf8, + 0xcb, 0xf9, 0x40, 0xf9, 0x0a, 0xfb, 0xe9, 0xfb, 0x31, 0xfe, 0x22, 0x01, 0x74, 0x03, 0xd9, 0x05, + 0x0c, 0x07, 0x0f, 0x06, 0x46, 0x02, 0x70, 0x00, 0xa6, 0x00, 0xc1, 0x00, 0x3f, 0x04, 0xe3, 0x04, + 0xb4, 0x05, 0x91, 0x06, 0xe6, 0x07, 0x4f, 0x07, 0xaf, 0x04, 0xd2, 0x02, 0x7b, 0xfe, 0x8c, 0xfd, + 0x88, 0xfc, 0x4b, 0xfc, 0x52, 0xfa, 0x3f, 0xfb, 0x39, 0xfb, 0xa5, 0xf9, 0xe0, 0xf7, 0x9c, 0xf5, + 0xe2, 0xf2, 0x0a, 0xf3, 0x00, 0xf5, 0x0d, 0xf8, 0xe2, 0xfa, 0x58, 0xfb, 0x22, 0xfc, 0xb3, 0xfd, + 0xbc, 0x00, 0xc7, 0x02, 0xc3, 0x06, 0xe4, 0x05, 0x16, 0x06, 0xe3, 0x06, 0x1c, 0x09, 0x63, 0x0b, + 0xc6, 0x0d, 0x63, 0x0e, 0xa3, 0x0e, 0x4c, 0x0e, 0xcd, 0x0c, 0x47, 0x0d, 0xe1, 0x0b, 0xcb, 0x0d, + 0x88, 0x0c, 0x39, 0x0a, 0xd0, 0x03, 0xe8, 0xff, 0x0f, 0xfd, 0xaa, 0xfd, 0x85, 0x01, 0xe6, 0x01, + 0x86, 0x04, 0xc5, 0x05, 0xc4, 0x01, 0xf8, 0x00, 0x20, 0xfe, 0xc9, 0xfb, 0xae, 0xf9, 0x4d, 0xf6, + 0xac, 0xfa, 0x13, 0xfe, 0x5f, 0x01, 0x78, 0x05, 0x8b, 0x07, 0xb1, 0x06, 0xb5, 0x0a, 0x03, 0x08, + 0x8a, 0x07, 0x7c, 0x08, 0x7f, 0x06, 0x95, 0x0a, 0xa7, 0x0c, 0xc9, 0x09, 0x4e, 0x09, 0x65, 0x07, + 0x32, 0x05, 0xc3, 0x08, 0x46, 0x08, 0x89, 0x08, 0x8b, 0x06, 0x89, 0x06, 0xb0, 0x06, 0x56, 0x06, + 0xb8, 0x02, 0xfd, 0x00, 0x9e, 0xfe, 0x54, 0xfd, 0x3e, 0xfe, 0xee, 0xfc, 0x1a, 0xfa, 0x68, 0xfa, + 0x0b, 0xfd, 0x28, 0xfd, 0x21, 0xfd, 0x61, 0xf7, 0xd2, 0xf6, 0x41, 0xf8, 0xc6, 0xfb, 0x87, 0xfe, + 0xa3, 0x00, 0x9c, 0x03, 0x9f, 0x04, 0x31, 0x05, 0x40, 0x03, 0x33, 0x00, 0xe7, 0xfc, 0x7e, 0xfa, + 0xa1, 0xfc, 0xb0, 0xfd, 0xd7, 0xfd, 0x42, 0xff, 0xce, 0xfd, 0x67, 0xff, 0xd7, 0xfd, 0x61, 0xfb, + 0x59, 0xf7, 0x74, 0xf5, 0xba, 0xf3, 0x31, 0xf7, 0x6b, 0xf8, 0x7c, 0xf5, 0x38, 0xf5, 0x23, 0xf3, + 0xc7, 0xf4, 0x4c, 0xf7, 0x7c, 0xf7, 0x33, 0xf6, 0xa5, 0xf5, 0x8c, 0xf3, 0x39, 0xf5, 0xc1, 0xf3, + 0xa1, 0xf4, 0x82, 0xf5, 0xda, 0xf6, 0x48, 0xf9, 0x69, 0xfc, 0x25, 0xfd, 0xfb, 0xff, 0x78, 0x03, + 0x34, 0x06, 0xbe, 0x07, 0x46, 0x07, 0xb9, 0x06, 0x39, 0x03, 0x2b, 0x05, 0x12, 0x08, 0xe3, 0x0b, + 0x0c, 0x0d, 0xe9, 0x0f, 0x41, 0x11, 0x4c, 0x12, 0x16, 0x0f, 0x4c, 0x0b, 0x30, 0x08, 0x99, 0x02, + 0x33, 0x03, 0x8d, 0x01, 0xbc, 0xfe, 0x96, 0xfe, 0x0f, 0xfd, 0xac, 0xfd, 0x9b, 0xfb, 0x36, 0xf6, + 0xbc, 0xf4, 0x3c, 0xf0, 0xa4, 0xef, 0x5d, 0xf1, 0x14, 0xf3, 0x74, 0xf5, 0xa8, 0xf8, 0xfe, 0xf6, + 0x80, 0xf9, 0x61, 0xfd, 0x71, 0xfd, 0xb8, 0xff, 0xe0, 0xfe, 0x87, 0xfe, 0x3d, 0x00, 0x74, 0x02, + 0x1f, 0x04, 0x92, 0x05, 0xed, 0x03, 0xc9, 0x05, 0x9d, 0x05, 0x61, 0x04, 0xc6, 0x02, 0xb3, 0x01, + 0x1a, 0x01, 0xe9, 0x00, 0x0d, 0xfd, 0x99, 0xf7, 0xed, 0xf2, 0x61, 0xee, 0x50, 0xef, 0x50, 0xf1, + 0xcc, 0xf4, 0x41, 0xf6, 0x3b, 0xf7, 0x4e, 0xf5, 0x85, 0xf6, 0x45, 0xf4, 0x46, 0xf3, 0x81, 0xf1, + 0x65, 0xf1, 0x53, 0xf6, 0xb0, 0xf8, 0x40, 0xfd, 0xb0, 0x00, 0xbd, 0x04, 0xe9, 0x07, 0x3e, 0x09, + 0x93, 0x07, 0x06, 0x06, 0xe4, 0x07, 0xf6, 0x0a, 0x80, 0x0d, 0xb7, 0x0f, 0xd4, 0x0d, 0x2f, 0x0c, + 0x6d, 0x0b, 0x32, 0x0d, 0xdf, 0x0d, 0xc6, 0x0d, 0xd9, 0x0e, 0x3c, 0x0e, 0xf2, 0x0e, 0xe4, 0x0e, + 0x28, 0x0e, 0x1b, 0x0c, 0xb8, 0x0a, 0x75, 0x09, 0x36, 0x0a, 0x2b, 0x09, 0x9e, 0x07, 0xec, 0x06, + 0x5c, 0x08, 0x12, 0x08, 0xfc, 0x06, 0xeb, 0x03, 0xf2, 0xff, 0x9b, 0xff, 0xc9, 0x01, 0xfe, 0x04, + 0x98, 0x07, 0x40, 0x09, 0x01, 0x0b, 0x13, 0x0c, 0xbe, 0x08, 0xd4, 0x07, 0x69, 0x05, 0xa3, 0x03, + 0x99, 0x01, 0xb3, 0x02, 0x7f, 0x03, 0x38, 0x04, 0x22, 0x04, 0x0b, 0x04, 0xeb, 0x06, 0x84, 0x03, + 0x44, 0x01, 0xc8, 0xfb, 0x45, 0xf9, 0x93, 0xf8, 0xb4, 0xf8, 0x62, 0xf9, 0x55, 0xf7, 0x96, 0xf5, + 0xaa, 0xf5, 0x25, 0xf5, 0xd0, 0xf4, 0x8b, 0xf3, 0x7d, 0xf2, 0xb9, 0xf1, 0x70, 0xf0, 0x3e, 0xf0, + 0xca, 0xef, 0xd2, 0xf1, 0x85, 0xf2, 0x13, 0xf6, 0xaf, 0xf8, 0xcd, 0xfa, 0x9c, 0xfc, 0x9c, 0xff, + 0xd3, 0x01, 0x23, 0x03, 0x63, 0x04, 0x0e, 0x04, 0x3a, 0x02, 0xf5, 0x01, 0x2e, 0x03, 0x36, 0x03, + 0x19, 0x05, 0x28, 0x07, 0x22, 0x09, 0x5a, 0x0a, 0x78, 0x09, 0xf4, 0x07, 0x19, 0x07, 0x9f, 0x04, + 0x95, 0x02, 0x6c, 0xff, 0xdf, 0xfc, 0xda, 0xfb, 0x3c, 0xfb, 0xe7, 0xf7, 0x58, 0xf8, 0x17, 0xf6, + 0x22, 0xf3, 0x22, 0xf3, 0x8f, 0xee, 0xe2, 0xf0, 0xa8, 0xf2, 0x81, 0xf5, 0xcc, 0xf8, 0xdc, 0xf9, + 0xcd, 0xf9, 0xc6, 0xfc, 0xd6, 0xff, 0xf0, 0x00, 0x9b, 0x01, 0x8c, 0x01, 0x2c, 0x04, 0x16, 0x06, + 0x65, 0x08, 0xfe, 0x09, 0xc1, 0x08, 0xdb, 0x08, 0xc6, 0x0c, 0x0a, 0x0b, 0x7e, 0x0b, 0x35, 0x0b, + 0x6c, 0x0a, 0xa6, 0x0b, 0x8d, 0x0b, 0xbb, 0x07, 0x43, 0x03, 0xbf, 0xff, 0x46, 0xfc, 0xc0, 0xfd, + 0x5f, 0xff, 0x25, 0x01, 0xb3, 0x01, 0xa9, 0x02, 0x4c, 0x00, 0xf9, 0xfd, 0x60, 0xf9, 0x5e, 0xf6, + 0xc2, 0xf4, 0x7c, 0xf2, 0xbc, 0xf4, 0x65, 0xf7, 0x82, 0xf8, 0xc6, 0xfb, 0xea, 0xff, 0xf9, 0x01, + 0x9a, 0x01, 0xe6, 0xff, 0x59, 0xfe, 0xca, 0xfe, 0x4a, 0xff, 0x0c, 0x00, 0x44, 0x02, 0x41, 0xfe, + 0xe1, 0xfd, 0xf6, 0xfc, 0x18, 0xff, 0x94, 0x01, 0x43, 0x01, 0x33, 0x02, 0xf2, 0x01, 0x9e, 0x02, + 0x32, 0x02, 0xdc, 0x00, 0xb7, 0xfc, 0x70, 0xfd, 0x84, 0xfe, 0x33, 0xfd, 0x8d, 0xfb, 0x0a, 0xfa, + 0x90, 0xf9, 0xb5, 0xfd, 0x4f, 0xfc, 0xf2, 0xf9, 0x4a, 0xf7, 0xe1, 0xf4, 0x7f, 0xf6, 0x34, 0xf9, + 0xac, 0xfc, 0x43, 0x00, 0x50, 0x05, 0xce, 0x08, 0x0c, 0x0b, 0xf2, 0x08, 0x8b, 0x08, 0xff, 0x05, + 0xb9, 0x06, 0xe0, 0x06, 0x3c, 0x07, 0xc5, 0x07, 0x25, 0x07, 0x38, 0x08, 0x78, 0x09, 0xeb, 0x0a, + 0xef, 0x09, 0x40, 0x07, 0x08, 0x03, 0x01, 0x02, 0xd3, 0xff, 0x70, 0xfd, 0x39, 0xfd, 0x6e, 0xfb, + 0x9d, 0xfb, 0x57, 0xfc, 0x9a, 0xf8, 0xc2, 0xfa, 0xe6, 0xf7, 0x37, 0xf7, 0xf8, 0xf5, 0xc0, 0xf2, + 0x78, 0xf3, 0xd4, 0xf2, 0x2e, 0xf2, 0xe3, 0xf3, 0x97, 0xf6, 0x81, 0xf9, 0x0b, 0xff, 0xd5, 0xfe, + 0xee, 0x00, 0x7c, 0x04, 0x81, 0x05, 0x48, 0x06, 0xcc, 0x06, 0xd7, 0x03, 0xd1, 0x04, 0x2a, 0x04, + 0xf9, 0x03, 0x7a, 0x07, 0x58, 0x0a, 0x8c, 0x0e, 0xae, 0x10, 0x03, 0x10, 0xe4, 0x0d, 0xaf, 0x0d, + 0x3d, 0x0a, 0xe6, 0x07, 0xcf, 0x04, 0x69, 0x04, 0x0c, 0x04, 0x20, 0x03, 0x57, 0x01, 0xbf, 0x01, + 0x08, 0x00, 0x00, 0xfc, 0xe3, 0xf9, 0x3e, 0xf5, 0x28, 0xf5, 0xa4, 0xf5, 0xe3, 0xf6, 0x4f, 0xf8, + 0xd8, 0xf8, 0x09, 0xfb, 0x50, 0xfe, 0xb4, 0xff, 0x76, 0xff, 0x7d, 0xfe, 0x74, 0xff, 0x3d, 0xff, + 0xe2, 0x01, 0x5b, 0x02, 0x22, 0x03, 0x12, 0x04, 0xbd, 0x02, 0xe9, 0x04, 0x5e, 0x04, 0x4b, 0x03, + 0x69, 0x02, 0xf7, 0x01, 0x10, 0x00, 0xa9, 0xff, 0x8d, 0xf9, 0xd4, 0xf3, 0x97, 0xf1, 0x63, 0xf0, + 0x17, 0xf2, 0x44, 0xf5, 0xb7, 0xf4, 0xf7, 0xf6, 0xfd, 0xf8, 0x20, 0xf8, 0x43, 0xf7, 0xb8, 0xf3, + 0x22, 0xf2, 0xbc, 0xf1, 0xdc, 0xf3, 0x0e, 0xf6, 0xdc, 0xf9, 0xe1, 0xfc, 0x0e, 0x03, 0x26, 0x07, + 0x40, 0x0b, 0x2b, 0x0c, 0x89, 0x0b, 0xa2, 0x0b, 0x42, 0x0d, 0xfb, 0x10, 0xd4, 0x11, 0x9d, 0x12, + 0x09, 0x10, 0xeb, 0x0f, 0xc1, 0x0e, 0x11, 0x11, 0x1d, 0x12, 0xba, 0x10, 0x7d, 0x11, 0x0c, 0x12, + 0x0e, 0x11, 0xbe, 0x0d, 0x3c, 0x0a, 0x64, 0x0a, 0xa5, 0x09, 0x4b, 0x09, 0x92, 0x06, 0x87, 0x02, + 0x1e, 0x01, 0x3c, 0x00, 0x46, 0x01, 0x9c, 0xff, 0x7b, 0xfc, 0xcf, 0xf9, 0x39, 0xf9, 0x1a, 0xf6, + 0x4e, 0xf7, 0x9d, 0xfa, 0x1f, 0xfd, 0xac, 0x00, 0xe8, 0x01, 0xf2, 0xff, 0x70, 0xfe, 0x69, 0xfc, + 0x9a, 0xfa, 0x45, 0xfb, 0x76, 0xfb, 0x3d, 0xfb, 0x6e, 0xfa, 0x92, 0xfa, 0x4b, 0xfb, 0x71, 0xfe, + 0x6d, 0xff, 0x33, 0x00, 0xf7, 0xfc, 0x1a, 0xfb, 0x4c, 0xfa, 0x20, 0xf9, 0x08, 0xf9, 0xd5, 0xf9, + 0x8d, 0xf9, 0x81, 0xf9, 0x72, 0xfa, 0x14, 0xf8, 0x63, 0xf9, 0xee, 0xf5, 0xfb, 0xf4, 0xd8, 0xf3, + 0xe9, 0xf1, 0xf4, 0xf2, 0xd4, 0xf1, 0x02, 0xf1, 0xc6, 0xf3, 0xb9, 0xf7, 0x33, 0xfc, 0xa3, 0xfd, + 0x56, 0xfd, 0x82, 0xff, 0x3a, 0x01, 0xfb, 0x01, 0x4f, 0x01, 0x39, 0x01, 0x1d, 0x00, 0xa7, 0x00, + 0xe5, 0xff, 0x2b, 0x00, 0xf5, 0x01, 0x08, 0x06, 0x3b, 0x09, 0x15, 0x0b, 0x7f, 0x0c, 0xc0, 0x0a, + 0x89, 0x08, 0xc8, 0x04, 0x94, 0x01, 0x18, 0x00, 0x59, 0xfe, 0xcf, 0xfc, 0x59, 0xfa, 0x90, 0xf7, + 0x8b, 0xf7, 0xa6, 0xf5, 0xc3, 0xf3, 0x6a, 0xf0, 0xf3, 0xed, 0x0e, 0xef, 0xf8, 0xef, 0xa4, 0xef, + 0xa0, 0xf2, 0x75, 0xf5, 0x63, 0xf9, 0x49, 0xfd, 0x7e, 0xff, 0x04, 0x01, 0xdd, 0x00, 0x1d, 0x04, + 0x54, 0x06, 0xbe, 0x09, 0x23, 0x0a, 0xc7, 0x0b, 0x23, 0x0c, 0xd4, 0x0b, 0xf7, 0x0e, 0x6e, 0x0d, + 0x54, 0x0d, 0x07, 0x0e, 0x77, 0x0f, 0x1f, 0x10, 0xff, 0x0c, 0x2f, 0x06, 0xf8, 0x01, 0xca, 0xff, + 0xa5, 0xff, 0xaf, 0xfe, 0xe6, 0xfd, 0x8e, 0xfd, 0x61, 0xfe, 0x3c, 0xfe, 0x8a, 0xfd, 0xd2, 0xf9, + 0xc2, 0xf6, 0x89, 0xf6, 0x43, 0xf4, 0x1f, 0xf4, 0xff, 0xf3, 0xa8, 0xf6, 0xb8, 0xfa, 0x5f, 0xff, + 0x1e, 0x02, 0xa4, 0x04, 0xd6, 0x04, 0x9b, 0x02, 0x9c, 0x01, 0x9f, 0x02, 0x8d, 0x03, 0x75, 0x03, + 0x51, 0x03, 0xaf, 0x01, 0x3c, 0x01, 0x67, 0x02, 0x7e, 0x04, 0x2b, 0x06, 0x09, 0x07, 0x40, 0x08, + 0x93, 0x09, 0x32, 0x09, 0x08, 0x09, 0xe2, 0x08, 0x9e, 0x0a, 0xe1, 0x09, 0x7d, 0x0c, 0x96, 0x0a, + 0x8b, 0x08, 0x05, 0x0a, 0xa8, 0x07, 0x9b, 0x08, 0x2e, 0x07, 0xaa, 0x03, 0x1f, 0x01, 0x92, 0xfe, + 0xcc, 0xfd, 0xe3, 0x00, 0x57, 0x02, 0xe3, 0x05, 0x5e, 0x08, 0xc9, 0x09, 0xda, 0x0a, 0xee, 0x08, + 0x05, 0x06, 0x8f, 0x05, 0x25, 0x05, 0x19, 0x05, 0x84, 0x03, 0x12, 0x01, 0x89, 0x03, 0xe7, 0x03, + 0x5e, 0x06, 0x69, 0x07, 0x4b, 0x08, 0x72, 0x05, 0x3d, 0x02, 0xd6, 0xff, 0xcc, 0xfc, 0x86, 0xfc, + 0x01, 0xfd, 0xd5, 0xfb, 0xd4, 0xfb, 0x8e, 0xfa, 0xa9, 0xf7, 0x87, 0xf7, 0x55, 0xf2, 0xa6, 0xee, + 0xc9, 0xed, 0xeb, 0xea, 0x3b, 0xea, 0x7d, 0xe8, 0x14, 0xe8, 0x11, 0xed, 0x77, 0xf0, 0x0e, 0xf5, + 0xd6, 0xf6, 0x76, 0xf8, 0xb6, 0xfa, 0x99, 0xff, 0x21, 0x02, 0xc8, 0x02, 0x7e, 0x04, 0x72, 0x03, + 0xb0, 0x05, 0x94, 0x06, 0x5a, 0x07, 0x03, 0x09, 0x5d, 0x0b, 0xd3, 0x0d, 0x6b, 0x13, 0x77, 0x13, + 0xef, 0x10, 0xf8, 0x0c, 0x05, 0x09, 0xae, 0x08, 0xc2, 0x06, 0x30, 0x03, 0xc4, 0x01, 0x8e, 0xfe, + 0x01, 0xfd, 0x5e, 0xfd, 0x38, 0xf7, 0xcc, 0xf4, 0x9b, 0xf1, 0x22, 0xef, 0x1f, 0xee, 0x59, 0xed, + 0x9b, 0xec, 0x7b, 0xef, 0xdc, 0xf2, 0xe8, 0xf5, 0x4b, 0xf9, 0x0c, 0xfa, 0x26, 0xfa, 0x52, 0xf9, + 0x2a, 0xfb, 0x12, 0xfc, 0xe2, 0xfe, 0xe6, 0xfe, 0x6f, 0xff, 0x84, 0x00, 0xca, 0x00, 0x21, 0x01, + 0x8f, 0xff, 0x22, 0xff, 0x4d, 0x01, 0xd8, 0x01, 0xc4, 0x00, 0x33, 0xfc, 0xfa, 0xf8, 0xab, 0xf5, + 0x32, 0xf5, 0x72, 0xf5, 0x92, 0xf2, 0xdc, 0xf4, 0xe9, 0xf5, 0xb0, 0xf7, 0xbe, 0xf8, 0x3e, 0xf7, + 0xfa, 0xf4, 0x3b, 0xf4, 0x52, 0xf1, 0x95, 0xf1, 0x0f, 0xf2, 0x6d, 0xf2, 0x92, 0xf6, 0xf6, 0xf8, + 0x5f, 0xfd, 0x0e, 0x02, 0xf8, 0x02, 0xde, 0x03, 0x00, 0x03, 0x12, 0x03, 0xb0, 0x07, 0x6d, 0x07, + 0x91, 0x08, 0xfd, 0x08, 0x22, 0x0a, 0x19, 0x0a, 0xec, 0x0b, 0x1d, 0x0d, 0x56, 0x0e, 0x1a, 0x10, + 0x55, 0x0f, 0xe5, 0x0f, 0x60, 0x0f, 0x77, 0x0f, 0x90, 0x0f, 0x48, 0x10, 0xa1, 0x0d, 0xfd, 0x0d, + 0x58, 0x0b, 0x9f, 0x07, 0x35, 0x06, 0xcb, 0x03, 0xd4, 0x04, 0x9b, 0x03, 0x07, 0xff, 0x45, 0xfc, + 0x74, 0xf9, 0x7a, 0xf9, 0x74, 0xfb, 0xdd, 0xfd, 0x01, 0x01, 0x41, 0x03, 0x1f, 0x06, 0x1b, 0x06, + 0xfe, 0x05, 0xb3, 0x05, 0xcc, 0x06, 0xc5, 0x06, 0xf8, 0x06, 0xab, 0x06, 0x52, 0x07, 0x94, 0x07, + 0x2b, 0x09, 0x01, 0x0c, 0x0c, 0x0e, 0x0b, 0x11, 0x2f, 0x0e, 0x73, 0x0a, 0x53, 0x09, 0x67, 0x07, + 0x6c, 0x08, 0xc3, 0x07, 0x9f, 0x03, 0x0a, 0x06, 0x5a, 0x04, 0xda, 0x01, 0xce, 0xfe, 0x70, 0xfa, + 0x04, 0xf8, 0xc5, 0xf8, 0xf0, 0xf6, 0x79, 0xf4, 0xfd, 0xf3, 0x9e, 0xf4, 0x82, 0xf8, 0x82, 0xfa, + 0x54, 0xfd, 0x9d, 0xfd, 0xb0, 0xff, 0xef, 0x00, 0x6c, 0x03, 0xf2, 0x03, 0xbe, 0x02, 0x5b, 0x01, + 0x5b, 0xfe, 0x73, 0xfe, 0xc4, 0xfd, 0x4d, 0xfd, 0x0c, 0xfe, 0x8b, 0x00, 0xaa, 0x05, 0x78, 0x08, + 0xeb, 0x07, 0xbf, 0x06, 0x56, 0x03, 0x2e, 0x02, 0x09, 0x01, 0x37, 0xfe, 0x36, 0xfb, 0xb7, 0xfa, + 0x74, 0xfa, 0x7f, 0xfa, 0xbc, 0xf8, 0xcc, 0xf6, 0x58, 0xf5, 0x1a, 0xf3, 0x75, 0xf1, 0xfa, 0xef, + 0xd1, 0xf0, 0x10, 0xf2, 0x25, 0xf3, 0x87, 0xf5, 0x62, 0xf8, 0xc1, 0xfa, 0x60, 0xfd, 0x4d, 0xfc, + 0x73, 0xfc, 0x20, 0xff, 0x0e, 0x02, 0x0a, 0x03, 0xa9, 0x02, 0x7c, 0x02, 0x6c, 0x03, 0xd4, 0x03, + 0x58, 0x02, 0xeb, 0x01, 0x01, 0x03, 0x74, 0x06, 0xb2, 0x07, 0xea, 0x06, 0x74, 0x03, 0x2e, 0x02, + 0x3e, 0xff, 0xc9, 0xfd, 0xe4, 0xfb, 0x78, 0xf9, 0xf2, 0xfa, 0x5a, 0xf9, 0xea, 0xf9, 0x93, 0xf8, + 0xd0, 0xf5, 0x67, 0xf4, 0x0b, 0xf0, 0x0b, 0xed, 0xd7, 0xeb, 0x9e, 0xe9, 0x61, 0xeb, 0xdf, 0xed, + 0xdf, 0xf1, 0x69, 0xf6, 0xdd, 0xf8, 0xf2, 0xf9, 0xb3, 0xfa, 0xd7, 0xfb, 0xdd, 0xfc, 0xcf, 0xff, + 0xe5, 0xff, 0xb7, 0x01, 0xe2, 0x02, 0xe0, 0x04, 0x3a, 0x05, 0x8b, 0x07, 0xaa, 0x0a, 0x52, 0x0b, + 0xfd, 0x0c, 0xbe, 0x0c, 0x1c, 0x0d, 0x55, 0x0f, 0xf7, 0x0e, 0x8e, 0x0e, 0x74, 0x0e, 0x12, 0x0e, + 0xe3, 0x0d, 0xe6, 0x09, 0x41, 0x06, 0x2d, 0x05, 0x75, 0x04, 0xaf, 0x04, 0xd2, 0x01, 0x13, 0xfc, + 0x0e, 0xfa, 0xb6, 0xf6, 0xfc, 0xf6, 0x62, 0xf7, 0x9b, 0xf8, 0xa7, 0xfb, 0x81, 0xfe, 0x04, 0x01, + 0xa1, 0x01, 0x87, 0x03, 0xd7, 0x01, 0x8a, 0x02, 0xfc, 0x00, 0xdb, 0xff, 0x14, 0x00, 0xfd, 0xfd, + 0x89, 0xfe, 0x6f, 0x01, 0x4b, 0x02, 0x7a, 0x04, 0x05, 0x05, 0x74, 0x02, 0x1c, 0x02, 0xb9, 0x02, + 0x8e, 0x03, 0xbf, 0x03, 0x37, 0x03, 0xe9, 0x02, 0x6e, 0x04, 0x8f, 0x02, 0x1b, 0x00, 0x75, 0xfc, + 0xfc, 0xf9, 0xa4, 0xf8, 0x4d, 0xf6, 0x20, 0xf5, 0x10, 0xf5, 0x6e, 0xf6, 0x3f, 0xf9, 0x16, 0xfc, + 0x46, 0xfd, 0xf4, 0xff, 0xd3, 0x00, 0x53, 0x03, 0xeb, 0x06, 0x64, 0x0a, 0xf9, 0x0b, 0xea, 0x0b, + 0x0d, 0x0b, 0x66, 0x0a, 0x6d, 0x0b, 0x3d, 0x0b, 0x13, 0x0a, 0xae, 0x0c, 0xfa, 0x0e, 0x60, 0x12, + 0x54, 0x13, 0xb3, 0x11, 0x5f, 0x10, 0xde, 0x0e, 0xf6, 0x0e, 0x2e, 0x0b, 0x1f, 0x09, 0x85, 0x05, + 0x2c, 0x05, 0x9f, 0x04, 0x5b, 0x01, 0x4c, 0xff, 0xf3, 0xfb, 0xaf, 0xf7, 0xa6, 0xf6, 0xe4, 0xf3, + 0xc6, 0xf1, 0x66, 0xf2, 0xf1, 0xf0, 0x3f, 0xf2, 0x75, 0xf4, 0x61, 0xf7, 0xde, 0xf8, 0x7f, 0xf9, + 0x7b, 0xf9, 0xb1, 0xfc, 0xe9, 0xfd, 0xea, 0xff, 0x39, 0x01, 0x65, 0x02, 0x5f, 0x04, 0x00, 0x04, + 0x2d, 0x03, 0xf7, 0x01, 0x35, 0x03, 0x89, 0x04, 0x59, 0x06, 0x50, 0x05, 0x8e, 0x04, 0x9b, 0x03, + 0x76, 0x01, 0x35, 0xfd, 0x89, 0xfb, 0xbe, 0xf9, 0x47, 0xf8, 0x0f, 0xf9, 0xd0, 0xf6, 0x31, 0xf6, + 0x49, 0xf6, 0xec, 0xf3, 0x37, 0xf3, 0x1b, 0xf0, 0x84, 0xed, 0x62, 0xed, 0xb9, 0xeb, 0x30, 0xed, + 0x09, 0xee, 0xec, 0xf0, 0xc0, 0xf2, 0xe9, 0xf5, 0xa7, 0xf6, 0x07, 0xf8, 0xbf, 0xfa, 0x68, 0xfb, + 0x47, 0xfe, 0x18, 0x01, 0x90, 0x01, 0x00, 0x03, 0xa6, 0x04, 0xd5, 0x04, 0xc2, 0x07, 0x18, 0x08, + 0x58, 0x09, 0x6f, 0x0a, 0x9d, 0x0b, 0xff, 0x0c, 0x18, 0x0f, 0xdf, 0x0d, 0xfb, 0x0f, 0x55, 0x10, + 0x96, 0x0f, 0x3b, 0x0e, 0xa3, 0x09, 0xde, 0x08, 0xaa, 0x08, 0x26, 0x07, 0xec, 0x05, 0x99, 0x03, + 0x56, 0xfe, 0xaf, 0xfd, 0xf1, 0xfa, 0xbb, 0xf9, 0x1d, 0xfa, 0x13, 0xfb, 0xf6, 0xfc, 0x74, 0xff, + 0x00, 0x02, 0xac, 0x03, 0xe7, 0x04, 0x4a, 0x03, 0x30, 0x03, 0xc9, 0x02, 0x56, 0x01, 0xac, 0x00, + 0x82, 0xff, 0xc6, 0xff, 0xc2, 0x02, 0x23, 0x04, 0x25, 0x05, 0x79, 0x03, 0x1e, 0x03, 0xa5, 0x02, + 0xad, 0x03, 0x45, 0x03, 0x11, 0x01, 0x8f, 0x00, 0x66, 0xff, 0xf3, 0xfe, 0x7f, 0xfe, 0xda, 0xfb, + 0xc6, 0xf8, 0x91, 0xf6, 0xae, 0xf3, 0xde, 0xf2, 0x6f, 0xf1, 0xae, 0xf1, 0xd2, 0xf2, 0x46, 0xf5, + 0xcb, 0xf6, 0x99, 0xf8, 0xc9, 0xf8, 0x1e, 0xfb, 0x94, 0xfe, 0x8b, 0x01, 0x7f, 0x05, 0x65, 0x05, + 0x68, 0x05, 0x3d, 0x05, 0xbf, 0x04, 0x05, 0x03, 0x49, 0x03, 0x7a, 0x02, 0xf7, 0x05, 0x29, 0x09, + 0x23, 0x0a, 0x3d, 0x0a, 0xac, 0x0a, 0x8b, 0x0a, 0xe4, 0x09, 0x42, 0x08, 0xd0, 0x03, 0xc7, 0x02, + 0x49, 0x00, 0x2f, 0xff, 0x6f, 0xfe, 0x5e, 0xfc, 0xf1, 0xfa, 0x62, 0xf7, 0xc4, 0xf3, 0xcd, 0xf2, + 0xcb, 0xf0, 0x5a, 0xf1, 0xc2, 0xf0, 0xcd, 0xf0, 0x30, 0xf2, 0x11, 0xf4, 0x61, 0xf7, 0x22, 0xf8, + 0x47, 0xfa, 0x2d, 0xfc, 0x87, 0xfd, 0xd6, 0xfe, 0x5a, 0x00, 0xee, 0x00, 0xca, 0x02, 0x13, 0x04, + 0x1c, 0x05, 0xfc, 0x04, 0x3d, 0x05, 0x0a, 0x07, 0xb6, 0x07, 0xf1, 0x08, 0x78, 0x0c, 0x45, 0x0c, + 0xc9, 0x0b, 0xe7, 0x09, 0x27, 0x06, 0x23, 0x06, 0x61, 0x04, 0x0a, 0x03, 0xd7, 0x02, 0xc2, 0x02, + 0xa0, 0x01, 0x25, 0x01, 0xd9, 0xfb, 0xd6, 0xf9, 0x31, 0xf8, 0xdd, 0xf5, 0xad, 0xf4, 0x63, 0xf2, + 0xad, 0xf3, 0xbf, 0xf3, 0xfa, 0xf5, 0x75, 0xf7, 0xdd, 0xf9, 0x83, 0xfa, 0x68, 0xfb, 0x28, 0xfc, + 0xee, 0xfb, 0x95, 0xfd, 0x6a, 0xfe, 0xb0, 0xfe, 0x73, 0x00, 0xb0, 0x01, 0xc8, 0x04, 0xb5, 0x06, + 0x5a, 0x06, 0x1b, 0x07, 0xc5, 0x06, 0x68, 0x08, 0xd2, 0x08, 0x0d, 0x09, 0xc3, 0x09, 0x17, 0x0c, + 0x91, 0x0c, 0xe9, 0x0b, 0x3a, 0x0b, 0xf9, 0x08, 0x26, 0x08, 0x38, 0x06, 0x9c, 0x03, 0xd3, 0x00, + 0x04, 0xfe, 0xe8, 0xfa, 0xbf, 0xf8, 0x54, 0xf7, 0x74, 0xf6, 0xa8, 0xf6, 0x33, 0xf8, 0x6d, 0xfa, + 0xe3, 0xfe, 0x95, 0x02, 0xa9, 0x03, 0x4f, 0x04, 0xcd, 0x05, 0x83, 0x06, 0x63, 0x07, 0x51, 0x05, + 0xf0, 0x02, 0xe4, 0x02, 0x42, 0x05, 0x6c, 0x08, 0x20, 0x07, 0x2c, 0x06, 0xef, 0x04, 0x08, 0x06, + 0x00, 0x05, 0x49, 0x05, 0x8a, 0x04, 0x54, 0x03, 0xf6, 0x03, 0xaf, 0x02, 0x31, 0x02, 0x88, 0x00, + 0x73, 0xfd, 0x87, 0xfa, 0xd0, 0xf5, 0x2f, 0xf2, 0xb1, 0xf0, 0x08, 0xee, 0x95, 0xef, 0x04, 0xf1, + 0x40, 0xf3, 0x37, 0xf5, 0x5b, 0xf6, 0x8d, 0xf7, 0x0c, 0xfa, 0x54, 0xfd, 0xdd, 0x00, 0x79, 0x04, + 0x6d, 0x05, 0x57, 0x06, 0x12, 0x06, 0xae, 0x05, 0x49, 0x04, 0xf6, 0x04, 0xe9, 0x06, 0x75, 0x08, + 0xa9, 0x09, 0xc3, 0x0a, 0x21, 0x0c, 0x1c, 0x0e, 0x37, 0x0e, 0xea, 0x0d, 0x3d, 0x0d, 0xa9, 0x0b, + 0x4c, 0x0a, 0x75, 0x08, 0x25, 0x07, 0x88, 0x07, 0xc2, 0x05, 0x0d, 0x03, 0xc7, 0xfe, 0xb0, 0xf9, + 0xdc, 0xf9, 0xd5, 0xf6, 0x99, 0xf5, 0xe3, 0xf3, 0x47, 0xf3, 0x40, 0xf4, 0xae, 0xf4, 0xf5, 0xf5, + 0xc1, 0xf6, 0x1e, 0xf9, 0x90, 0xf9, 0x13, 0xfb, 0x27, 0xfb, 0x7a, 0xfa, 0x24, 0xfc, 0xe7, 0xfc, + 0xa8, 0xfc, 0xfd, 0xfe, 0x32, 0xfe, 0xa7, 0xfe, 0x50, 0xfe, 0x60, 0xfe, 0x10, 0x01, 0xd2, 0x03, + 0x80, 0x03, 0x3f, 0x03, 0xb2, 0x01, 0xab, 0xfe, 0xa7, 0xfe, 0xc2, 0xfb, 0xfe, 0xfa, 0x7e, 0xfa, + 0x75, 0xfa, 0x48, 0xfa, 0xf6, 0xf7, 0xa6, 0xf4, 0xde, 0xf3, 0x32, 0xf2, 0x5c, 0xf1, 0xbb, 0xf1, + 0xf7, 0xef, 0x75, 0xf1, 0xfd, 0xf1, 0x8b, 0xf4, 0x02, 0xf8, 0x5d, 0xfa, 0x1c, 0xfc, 0x02, 0xfe, + 0x35, 0xff, 0x86, 0x01, 0xc7, 0x04, 0x55, 0x05, 0x94, 0x04, 0x34, 0x08, 0xfb, 0x0a, 0xa9, 0x0d, + 0x0c, 0x0e, 0x16, 0x0d, 0x53, 0x0d, 0x51, 0x0e, 0x89, 0x0e, 0x8d, 0x0c, 0xdb, 0x0c, 0x38, 0x0d, + 0xaf, 0x0e, 0x7f, 0x0e, 0xf7, 0x0b, 0x6f, 0x0a, 0x32, 0x09, 0x9d, 0x06, 0x70, 0x06, 0xd5, 0x02, + 0xc2, 0x00, 0x7a, 0xfe, 0x8e, 0xfa, 0xaf, 0xf7, 0x05, 0xf5, 0x2f, 0xf3, 0x38, 0xf2, 0x97, 0xf4, + 0xc1, 0xf6, 0x31, 0xfb, 0x83, 0xfb, 0xc1, 0xfd, 0x1b, 0x00, 0xce, 0x00, 0x30, 0x01, 0xf6, 0xff, + 0x64, 0xfd, 0x96, 0xfd, 0x72, 0xff, 0x2c, 0x00, 0xab, 0x02, 0xcd, 0x02, 0x21, 0x04, 0x96, 0x05, + 0xcc, 0x06, 0xd1, 0x06, 0x3b, 0x07, 0xd9, 0x06, 0x8a, 0x06, 0x59, 0x07, 0xa2, 0x06, 0xe6, 0x06, + 0xb6, 0x07, 0xf0, 0x03, 0x74, 0x01, 0xca, 0xfd, 0xee, 0xfa, 0x8d, 0xf9, 0x89, 0xf8, 0x82, 0xf9, + 0x53, 0xfa, 0x23, 0xfc, 0x12, 0xfc, 0x4e, 0xfd, 0x59, 0xfd, 0x20, 0xff, 0x34, 0x02, 0x6e, 0x03, + 0xdc, 0x04, 0x34, 0x06, 0x56, 0x04, 0x71, 0x03, 0xed, 0x00, 0xa8, 0xff, 0x75, 0x00, 0x13, 0x02, + 0x89, 0x03, 0x50, 0x04, 0xd6, 0x04, 0xcd, 0x04, 0x2c, 0x07, 0x33, 0x05, 0x77, 0x05, 0xa4, 0x03, + 0x33, 0x02, 0x5a, 0x02, 0xe2, 0x00, 0xf8, 0x00, 0x0e, 0x02, 0x8c, 0xff, 0xb4, 0xfd, 0x6a, 0xfa, + 0x40, 0xf5, 0x48, 0xf5, 0x84, 0xf2, 0xfa, 0xf2, 0xbf, 0xf3, 0x3e, 0xf4, 0x48, 0xf5, 0xe3, 0xf7, + 0x8a, 0xfa, 0xe0, 0xfc, 0xf3, 0xff, 0xd7, 0x00, 0x46, 0x01, 0x92, 0x02, 0x18, 0x04, 0x8b, 0x05, + 0xe7, 0x05, 0x63, 0x07, 0xbe, 0x0a, 0x49, 0x0b, 0x39, 0x0c, 0x08, 0x0c, 0x6a, 0x0e, 0x78, 0x10, + 0xa2, 0x11, 0xd0, 0x10, 0x5c, 0x0e, 0x62, 0x0d, 0xd6, 0x0a, 0x6b, 0x07, 0xf9, 0x04, 0x57, 0x02, + 0x13, 0x02, 0xe4, 0x00, 0x85, 0xfe, 0x52, 0xfa, 0x8d, 0xf5, 0xd3, 0xf1, 0x2c, 0xef, 0x69, 0xed, + 0xe7, 0xe9, 0x0f, 0xe8, 0xfd, 0xe5, 0x11, 0xe6, 0x7b, 0xe7, 0x6d, 0xe9, 0x52, 0xeb, 0x5d, 0xeb, + 0xa6, 0xec, 0x63, 0xf0, 0xd0, 0xf1, 0xec, 0xf1, 0x6c, 0xf4, 0xb4, 0xf4, 0xee, 0xf8, 0xa7, 0xfb, + 0xaa, 0xfd, 0xec, 0xfe, 0x67, 0x00, 0x14, 0x02, 0x47, 0x03, 0x47, 0x04, 0x44, 0x05, 0xd7, 0x08, + 0x0f, 0x0b, 0xb7, 0x0c, 0xb7, 0x0e, 0x1a, 0x0f, 0xaf, 0x0e, 0x04, 0x0d, 0xe4, 0x0a, 0xb2, 0x09, + 0x21, 0x06, 0x8f, 0x05, 0xcf, 0x02, 0x2b, 0x00, 0xc7, 0xff, 0xd9, 0xfc, 0x46, 0xfa, 0xe4, 0xf8, + 0xc9, 0xfa, 0xff, 0xfc, 0x0b, 0xff, 0xb3, 0xff, 0x06, 0x01, 0xca, 0x03, 0x3d, 0x04, 0x32, 0x02, + 0xc0, 0xff, 0x71, 0xfd, 0x28, 0xfd, 0x1c, 0xfe, 0x7b, 0xff, 0x54, 0xff, 0xe7, 0x00, 0x52, 0x00, + 0x3c, 0xff, 0x27, 0x02, 0x52, 0x02, 0x47, 0x03, 0x83, 0x02, 0x93, 0x00, 0xf8, 0x03, 0x2a, 0x04, + 0x6d, 0x02, 0x82, 0x03, 0xef, 0xfd, 0xa9, 0xfc, 0xa2, 0xf9, 0xf2, 0xf4, 0xf1, 0xf3, 0x52, 0xf0, + 0xd5, 0xf4, 0x4f, 0xf9, 0x66, 0xf7, 0xb7, 0xf5, 0xf1, 0xf5, 0xce, 0xf7, 0xa2, 0xf9, 0x85, 0xf9, + 0xc3, 0xfd, 0x74, 0x03, 0x1c, 0x06, 0x18, 0x07, 0xf0, 0x05, 0xa1, 0x05, 0x31, 0x0a, 0x7e, 0x0a, + 0x21, 0x0b, 0xcb, 0x0c, 0xbc, 0x10, 0x13, 0x17, 0xdf, 0x11, 0x01, 0x12, 0x79, 0x16, 0xf9, 0x16, + 0x7e, 0x18, 0xd2, 0x18, 0xa8, 0x17, 0x66, 0x17, 0xce, 0x17, 0xf5, 0x19, 0x06, 0x16, 0x22, 0x0d, + 0x5f, 0x07, 0xbf, 0x02, 0x4e, 0xff, 0x10, 0xfb, 0x91, 0xf7, 0x53, 0xf4, 0x4d, 0xf1, 0xcf, 0xf1, + 0x6b, 0xf3, 0x09, 0xf0, 0x57, 0xee, 0x33, 0xf1, 0xd4, 0xf1, 0xdc, 0xf1, 0xc8, 0xf3, 0x9e, 0xf6, + 0x26, 0xf9, 0x2f, 0xf6, 0x8b, 0xfa, 0x46, 0xfe, 0x2c, 0xfa, 0xd9, 0xfd, 0xfa, 0x00, 0x2f, 0x03, + 0x4d, 0x04, 0x32, 0x06, 0xd1, 0x0b, 0x2b, 0x0a, 0x86, 0x05, 0x29, 0x03, 0xe0, 0x00, 0xb4, 0x00, + 0xbb, 0xfe, 0x60, 0xfd, 0xc0, 0xf9, 0xcc, 0xf6, 0x06, 0xf8, 0x5a, 0xf2, 0xff, 0xed, 0xa6, 0xed, + 0xb1, 0xed, 0x4e, 0xeb, 0x67, 0xe9, 0x2e, 0xe9, 0xff, 0xf0, 0x65, 0xf3, 0x8f, 0xf1, 0x7f, 0xf7, + 0x90, 0xf8, 0x44, 0xfb, 0x12, 0x01, 0xda, 0x02, 0x6e, 0x04, 0x85, 0x06, 0x8f, 0x0b, 0x46, 0x11, + 0xe2, 0x0f, 0xf8, 0x0f, 0xdb, 0x11, 0x30, 0x12, 0xa8, 0x12, 0x2a, 0x11, 0x40, 0x0f, 0xe9, 0x0d, + 0xd9, 0x0c, 0xe1, 0x11, 0xfe, 0x0c, 0x72, 0x08, 0x3f, 0x08, 0xd2, 0x05, 0xd7, 0x03, 0x41, 0xff, + 0x2d, 0x01, 0x91, 0x03, 0x83, 0xff, 0x6b, 0xfb, 0x61, 0xfc, 0xe8, 0xf9, 0xd1, 0xfa, 0xab, 0xfa, + 0xa1, 0xfa, 0x5c, 0xfc, 0x4e, 0xfc, 0xb4, 0x01, 0x8a, 0x04, 0x59, 0x02, 0xfc, 0x04, 0x1e, 0x06, + 0x94, 0x05, 0xb0, 0x06, 0x11, 0x03, 0x6b, 0x02, 0x77, 0x01, 0x29, 0x05, 0xdd, 0x07, 0x85, 0x02, + 0x37, 0xfe, 0x55, 0x00, 0x8d, 0xfe, 0x6c, 0xfc, 0xb6, 0xfb, 0x9c, 0x00, 0x4c, 0x08, 0xb2, 0x06, + 0x2e, 0x08, 0x1f, 0x0c, 0xa5, 0x09, 0x2d, 0x07, 0xc1, 0x07, 0x29, 0x04, 0xcc, 0x01, 0x50, 0xfe, + 0x3e, 0x00, 0x54, 0xfe, 0x93, 0xfb, 0xc9, 0xfb, 0xae, 0xfa, 0x06, 0xfc, 0x70, 0xfa, 0xf5, 0xf8, + 0xf5, 0xf9, 0xd3, 0xf9, 0x5d, 0xfb, 0xc6, 0xf7, 0x41, 0xee, 0xdd, 0xed, 0x8d, 0xeb, 0xb2, 0xe7, + 0x3e, 0xe4, 0xbb, 0xe4, 0xed, 0xec, 0x97, 0xf0, 0xc0, 0xec, 0x3e, 0xf1, 0xcd, 0xf4, 0x0a, 0xf5, + 0xf9, 0xf7, 0xf1, 0xf8, 0xbe, 0xf8, 0x1d, 0xf7, 0xb3, 0xf9, 0x1e, 0xff, 0x6a, 0xff, 0x8a, 0xf9, + 0xde, 0xf8, 0x5e, 0xf8, 0xe6, 0xf8, 0x06, 0xf5, 0x73, 0xf4, 0x90, 0xf2, 0xd1, 0xf2, 0x4f, 0xf7, + 0x1d, 0xf4, 0x96, 0xf3, 0x26, 0xf4, 0x02, 0xf6, 0x8d, 0xf6, 0x35, 0xf9, 0xf3, 0xfb, 0x0a, 0x04, + 0x83, 0x03, 0xfa, 0x04, 0x8c, 0x0c, 0x59, 0x0b, 0x74, 0x0b, 0x14, 0x0f, 0x06, 0x13, 0xa6, 0x12, + 0xb2, 0x12, 0x36, 0x18, 0xf1, 0x1a, 0x5a, 0x16, 0xc7, 0x13, 0xb1, 0x13, 0x12, 0x13, 0xcf, 0x10, + 0x51, 0x0c, 0x10, 0x0a, 0x12, 0x08, 0x3a, 0x03, 0x2c, 0x01, 0x9a, 0xf9, 0x4b, 0xf3, 0x16, 0xf2, + 0xeb, 0xee, 0x9e, 0xed, 0x1b, 0xe9, 0x6f, 0xea, 0xd9, 0xef, 0x84, 0xef, 0xdc, 0xf1, 0xde, 0xf3, + 0x2d, 0xf2, 0xfd, 0xf5, 0x2b, 0xfb, 0xfe, 0xfe, 0x4a, 0xfd, 0xd2, 0xfd, 0x50, 0x06, 0x8d, 0x09, + 0x18, 0x08, 0xfe, 0x08, 0x5e, 0x0c, 0x0d, 0x0f, 0x82, 0x10, 0x0a, 0x0e, 0x6d, 0x0e, 0xfa, 0x0c, + 0xbf, 0x0e, 0xe0, 0x12, 0xbd, 0x0f, 0x1b, 0x0f, 0x1e, 0x10, 0x4f, 0x0f, 0x40, 0x0e, 0x2f, 0x0b, + 0x6c, 0x0f, 0xb6, 0x13, 0x39, 0x0d, 0x87, 0x0d, 0x98, 0x0a, 0xe6, 0x04, 0xa1, 0x05, 0x8b, 0x04, + 0x22, 0x02, 0x0e, 0x00, 0xbc, 0x01, 0x24, 0x05, 0xdf, 0x03, 0x36, 0x03, 0xa7, 0x04, 0xf9, 0x06, + 0xc7, 0x09, 0x74, 0x07, 0xd7, 0x07, 0x0f, 0x02, 0xfa, 0xfe, 0x60, 0x02, 0x1f, 0x03, 0xb6, 0xff, + 0xa1, 0xff, 0x1b, 0x00, 0xee, 0x00, 0x70, 0x01, 0x14, 0x00, 0xc1, 0x08, 0x5a, 0x0a, 0x1f, 0x0c, + 0xc0, 0x11, 0x38, 0x11, 0x54, 0x0f, 0xc0, 0x10, 0xaa, 0x11, 0x8a, 0x0f, 0xfa, 0x0a, 0x5b, 0x0a, + 0x50, 0x09, 0xf9, 0x05, 0x61, 0x04, 0x31, 0x01, 0x89, 0x01, 0x6c, 0x02, 0x62, 0xfe, 0x97, 0xfd, + 0x12, 0xfb, 0x8f, 0xfd, 0x8c, 0x00, 0xf1, 0xfa, 0x71, 0xf6, 0xb1, 0xf4, 0x34, 0xf6, 0xd6, 0xf1, + 0xf7, 0xec, 0xd1, 0xee, 0xdc, 0xf5, 0xd4, 0xf3, 0x24, 0xf4, 0xf9, 0xf7, 0x22, 0xf5, 0x11, 0xf7, + 0x92, 0xf9, 0xc4, 0xfb, 0xc2, 0xfa, 0xf9, 0xf6, 0x23, 0xf8, 0x4d, 0xf8, 0x62, 0xf7, 0xa4, 0xf6, + 0x20, 0xf2, 0x6e, 0xf2, 0x9e, 0xf0, 0xd0, 0xec, 0x69, 0xea, 0x50, 0xe3, 0xa6, 0xe3, 0x27, 0xe4, + 0x16, 0xe0, 0x89, 0xde, 0x84, 0xdd, 0xff, 0xde, 0x2d, 0xe0, 0xd9, 0xdf, 0x9f, 0xe9, 0xeb, 0xf0, + 0x16, 0xef, 0x97, 0xf5, 0x71, 0xfa, 0xf5, 0xf9, 0x44, 0xfe, 0xdb, 0x02, 0x2f, 0x06, 0x79, 0x05, + 0xb2, 0x09, 0x28, 0x11, 0x82, 0x13, 0x34, 0x12, 0x56, 0x10, 0x64, 0x11, 0x79, 0x14, 0xea, 0x11, + 0xe8, 0x0e, 0x23, 0x0c, 0x48, 0x08, 0x77, 0x09, 0x97, 0x04, 0xa4, 0xfc, 0xdb, 0xfb, 0x16, 0xf8, + 0x14, 0xf6, 0xa3, 0xf2, 0xb0, 0xef, 0xf5, 0xf3, 0xd2, 0xf2, 0x5e, 0xf1, 0x22, 0xf6, 0x93, 0xf7, + 0xbc, 0xf5, 0x5f, 0xf9, 0x23, 0xfe, 0x70, 0xff, 0xd4, 0xfe, 0xcd, 0x01, 0x7d, 0x05, 0x12, 0x06, + 0x1a, 0x07, 0xbb, 0x06, 0x42, 0x0b, 0xce, 0x0d, 0xae, 0x0d, 0xea, 0x0e, 0x63, 0x0b, 0xe2, 0x0a, + 0xea, 0x0b, 0xd1, 0x09, 0x01, 0x07, 0xeb, 0x06, 0xda, 0x08, 0xc0, 0x09, 0xdd, 0x04, 0x13, 0x06, + 0x53, 0x0b, 0x33, 0x0a, 0xc3, 0x0c, 0xd2, 0x0b, 0x79, 0x06, 0xe6, 0x04, 0xd4, 0x04, 0x0d, 0x04, + 0x2a, 0xff, 0x60, 0xfb, 0x83, 0xfc, 0x8a, 0xfd, 0x16, 0xfb, 0xc4, 0xf9, 0x73, 0xfb, 0x4b, 0xfe, + 0x1a, 0x00, 0x36, 0x01, 0x0b, 0x01, 0xef, 0xfc, 0x33, 0xfc, 0xf3, 0xfb, 0xd8, 0xf9, 0x29, 0xfa, + 0xbe, 0xfa, 0x5c, 0xfd, 0x4c, 0xff, 0x61, 0xfd, 0xcf, 0x02, 0x50, 0x08, 0xa1, 0x07, 0xdb, 0x0c, + 0x58, 0x0f, 0xa6, 0x10, 0x72, 0x11, 0x89, 0x13, 0x96, 0x14, 0xb2, 0x10, 0x6e, 0x11, 0xb3, 0x11, + 0xd3, 0x0e, 0x04, 0x0c, 0x18, 0x08, 0x87, 0x06, 0x80, 0x0a, 0x86, 0x08, 0x86, 0x07, 0xf9, 0x04, + 0xcc, 0xff, 0x1e, 0x05, 0xf0, 0x07, 0x9d, 0x02, 0xac, 0x00, 0xb4, 0xff, 0x44, 0x02, 0xb9, 0xff, + 0x83, 0xfa, 0xb2, 0xfe, 0x19, 0x01, 0x57, 0x00, 0xec, 0x01, 0x3c, 0x01, 0xd8, 0x01, 0x04, 0x02, + 0xda, 0x03, 0x3e, 0x07, 0x97, 0x03, 0x31, 0x06, 0xc1, 0x04, 0xa3, 0x02, 0x16, 0x01, 0x5c, 0xfe, + 0xf5, 0xfe, 0xdd, 0xfc, 0x9b, 0xfc, 0xac, 0xfa, 0x16, 0xf6, 0xc3, 0xf0, 0x11, 0xf0, 0xf5, 0xec, + 0xb5, 0xe9, 0x00, 0xe8, 0xc2, 0xe6, 0xdb, 0xe7, 0xf2, 0xe4, 0xca, 0xe5, 0xbe, 0xee, 0x3a, 0xef, + 0x59, 0xf0, 0xa5, 0xf4, 0xab, 0xf4, 0x3e, 0xf6, 0x54, 0xf8, 0xab, 0xfc, 0x3a, 0xfe, 0xfd, 0xfd, + 0x1d, 0xff, 0x60, 0x05, 0x85, 0x08, 0xc5, 0x07, 0xad, 0x06, 0x17, 0x0a, 0xcc, 0x0b, 0x2a, 0x0d, + 0xfc, 0x0a, 0x21, 0x06, 0x1e, 0x06, 0xd5, 0x04, 0x26, 0xff, 0x25, 0xf9, 0x9a, 0xf5, 0x22, 0xf4, + 0xb5, 0xf2, 0x8c, 0xec, 0xf6, 0xee, 0x03, 0xf1, 0xeb, 0xed, 0x62, 0xec, 0xf5, 0xeb, 0xed, 0xec, + 0x89, 0xed, 0x6e, 0xef, 0x0f, 0xf3, 0xd0, 0xf3, 0x21, 0xf4, 0xdf, 0xf8, 0x6b, 0xfa, 0x30, 0xfc, + 0xeb, 0xfb, 0xb9, 0xfd, 0xea, 0x04, 0xa2, 0x06, 0x09, 0x07, 0x41, 0x0a, 0x4d, 0x09, 0xc4, 0x0a, + 0x6e, 0x0b, 0xb9, 0x09, 0xb5, 0x07, 0xf0, 0x07, 0x6c, 0x0b, 0x6d, 0x0b, 0xf8, 0x09, 0x81, 0x0c, + 0xbd, 0x0e, 0xfb, 0x0d, 0x28, 0x11, 0x6c, 0x10, 0xa2, 0x0f, 0x7a, 0x0b, 0xb3, 0x0c, 0xa7, 0x0c, + 0xde, 0x05, 0x2a, 0x04, 0xd9, 0x03, 0xb8, 0x01, 0x70, 0xfe, 0x98, 0xfb, 0x36, 0xfc, 0x59, 0x00, + 0xec, 0xfe, 0x4d, 0x01, 0x4c, 0x01, 0x5a, 0xfe, 0x32, 0xfe, 0xdf, 0xf9, 0x5f, 0xf7, 0xdb, 0xf4, + 0xb8, 0xf4, 0xb5, 0xf8, 0xfb, 0xf5, 0xc3, 0xf5, 0x21, 0xfd, 0x5b, 0xff, 0x04, 0x01, 0xe6, 0x03, + 0x94, 0x05, 0x04, 0x08, 0x30, 0x0c, 0x72, 0x0e, 0xd1, 0x0d, 0x49, 0x0b, 0xad, 0x0c, 0x12, 0x0e, + 0x6b, 0x0c, 0x8a, 0x07, 0xb7, 0x02, 0x94, 0x04, 0x71, 0x04, 0xcb, 0x04, 0xf4, 0x04, 0x2d, 0x01, + 0x2d, 0xfe, 0x7d, 0x01, 0xdb, 0x00, 0xb9, 0xff, 0x60, 0xfc, 0x99, 0xfd, 0x45, 0x02, 0x88, 0xff, + 0x0b, 0xfe, 0x9c, 0x02, 0x6d, 0x04, 0x15, 0x04, 0x20, 0x06, 0x04, 0x06, 0xe1, 0x06, 0x07, 0x09, + 0x39, 0x0c, 0xfb, 0x0b, 0xf6, 0x0c, 0xf9, 0x10, 0xa9, 0x12, 0x95, 0x10, 0x14, 0x0d, 0xf0, 0x0a, + 0x49, 0x0c, 0x14, 0x0c, 0xb9, 0x08, 0x31, 0x08, 0x98, 0x03, 0x38, 0x00, 0x0b, 0xfe, 0xa2, 0xf8, + 0xba, 0xf1, 0x88, 0xed, 0x84, 0xef, 0x38, 0xee, 0x0e, 0xe8, 0xa6, 0xec, 0x42, 0xf0, 0xad, 0xf2, + 0xa4, 0xf4, 0x9b, 0xf4, 0x09, 0xf8, 0xad, 0xf6, 0x64, 0xfa, 0x3e, 0xfe, 0x4f, 0xfe, 0xa0, 0xfd, + 0x3f, 0x00, 0x84, 0x03, 0x13, 0x06, 0xec, 0x04, 0x4d, 0x05, 0x79, 0x07, 0x25, 0x08, 0xdc, 0x0a, + 0xf7, 0x07, 0x29, 0x04, 0xa7, 0x04, 0x26, 0x03, 0xf8, 0xfe, 0xa5, 0xf7, 0xff, 0xf1, 0x10, 0xf4, + 0x77, 0xef, 0x2b, 0xea, 0xf5, 0xed, 0xd8, 0xee, 0x13, 0xed, 0x70, 0xeb, 0xa2, 0xe9, 0x58, 0xe9, + 0x59, 0xe9, 0x98, 0xee, 0x64, 0xf0, 0xc5, 0xef, 0x8c, 0xf3, 0x20, 0xf6, 0x59, 0xfb, 0x91, 0xfa, + 0x54, 0xf8, 0x25, 0xfd, 0xca, 0x01, 0xfc, 0x03, 0x0b, 0x08, 0x3d, 0x07, 0xb8, 0x07, 0x74, 0x0a, + 0x0a, 0x09, 0x2a, 0x07, 0x20, 0x02, 0x1b, 0x02, 0x61, 0x05, 0x51, 0x03, 0x20, 0x04, 0x69, 0x09, + 0xe5, 0x07, 0x85, 0x08, 0xe1, 0x09, 0x29, 0x0b, 0x70, 0x09, 0x0d, 0x07, 0x7d, 0x0a, 0xa7, 0x08, + 0x9a, 0x03, 0x9c, 0x02, 0xbf, 0x01, 0x0d, 0x00, 0xe9, 0xfb, 0x28, 0xf8, 0xcb, 0xf8, 0xdd, 0xf8, + 0x71, 0xf9, 0x52, 0xfc, 0x5d, 0xfb, 0xc3, 0xfb, 0x0e, 0xfd, 0x0f, 0xfa, 0xc2, 0xf5, 0x9b, 0xf1, + 0xc9, 0xf4, 0x3e, 0xf6, 0x75, 0xf3, 0x32, 0xf9, 0x0f, 0xff, 0x36, 0x01, 0x47, 0x04, 0x83, 0x07, + 0x67, 0x09, 0xa1, 0x0b, 0xec, 0x0f, 0x23, 0x16, 0x4d, 0x15, 0x2f, 0x14, 0xda, 0x16, 0xef, 0x17, + 0x1d, 0x16, 0x68, 0x10, 0x64, 0x0f, 0xf0, 0x0d, 0x77, 0x0b, 0x67, 0x0c, 0x11, 0x0a, 0xae, 0x05, + 0xad, 0x03, 0xd2, 0x01, 0xa3, 0x00, 0x50, 0xfc, 0xfc, 0xf8, 0x4c, 0xfb, 0x0d, 0xfa, 0x7b, 0xf7, + 0xba, 0xfb, 0x68, 0xfc, 0x05, 0xfd, 0x0b, 0xfd, 0x4b, 0xfe, 0xbd, 0xfd, 0x19, 0xfc, 0x3c, 0x00, + 0xae, 0x00, 0x38, 0xff, 0x11, 0x01, 0xda, 0x03, 0x6d, 0x06, 0x9f, 0x03, 0x69, 0xfe, 0xd9, 0x00, + 0x96, 0xff, 0x70, 0xfd, 0xbc, 0xff, 0x5a, 0xfb, 0x56, 0xf8, 0x71, 0xf8, 0xab, 0xf6, 0x26, 0xf3, + 0xb7, 0xeb, 0xb5, 0xea, 0x64, 0xec, 0xc0, 0xe8, 0x6e, 0xe9, 0xcb, 0xee, 0x7c, 0xf2, 0xef, 0xf4, + 0x7a, 0xf7, 0x34, 0xfb, 0x3d, 0xfc, 0x3f, 0xfe, 0x90, 0x03, 0xb3, 0x05, 0xa1, 0x07, 0x8a, 0x0a, + 0x2b, 0x0e, 0x9d, 0x0f, 0x14, 0x10, 0xd5, 0x0f, 0x86, 0x12, 0x2d, 0x13, 0x8c, 0x14, 0x53, 0x17, + 0xc5, 0x13, 0x17, 0x14, 0x63, 0x12, 0x56, 0x11, 0x49, 0x0c, 0xaf, 0x02, 0x9a, 0x02, 0x4c, 0xff, + 0xee, 0xf5, 0x88, 0xf5, 0x96, 0xf7, 0x4f, 0xf8, 0xab, 0xf8, 0x46, 0xf5, 0xa0, 0xf1, 0x01, 0xef, + 0xea, 0xee, 0x12, 0xf2, 0x42, 0xf1, 0x90, 0xef, 0x0f, 0xf2, 0xa6, 0xf5, 0x01, 0xf7, 0xc5, 0xf4, + 0x82, 0xf4, 0xea, 0xf5, 0xc3, 0xf7, 0xd4, 0xfb, 0x46, 0xfe, 0x43, 0xfd, 0x6d, 0x01, 0xe4, 0x03, + 0xcf, 0x04, 0x08, 0x02, 0x36, 0xff, 0x73, 0x04, 0xc2, 0x02, 0x03, 0x03, 0xed, 0x08, 0x9d, 0x0d, + 0x5a, 0x0e, 0x87, 0x0c, 0xa3, 0x0f, 0x50, 0x10, 0x31, 0x0e, 0x61, 0x10, 0xd6, 0x11, 0x01, 0x10, + 0x44, 0x0e, 0x8f, 0x0b, 0x89, 0x0a, 0xd4, 0x06, 0x16, 0x00, 0x68, 0xfd, 0xe0, 0xfb, 0x5c, 0xf8, + 0x9b, 0xf8, 0xf2, 0xf5, 0x4f, 0xf4, 0x03, 0xf6, 0x2e, 0xf8, 0x2c, 0xf5, 0x6c, 0xed, 0x4e, 0xec, + 0x3a, 0xed, 0xed, 0xe9, 0x20, 0xea, 0x84, 0xee, 0x44, 0xf2, 0xf0, 0xf5, 0x1a, 0xf8, 0x2e, 0xfc, + 0x96, 0xfb, 0xa8, 0xfd, 0x05, 0x04, 0x6b, 0x07, 0x46, 0x09, 0x7c, 0x0a, 0x40, 0x0d, 0x81, 0x0f, + 0xd4, 0x0b, 0xf4, 0x06, 0x29, 0x07, 0x0c, 0x05, 0x30, 0x05, 0xb0, 0x04, 0x46, 0x02, 0xab, 0x01, + 0x9c, 0x00, 0xf9, 0x00, 0x52, 0x00, 0xfc, 0xfb, 0x8a, 0xfd, 0xe5, 0xff, 0x4a, 0xfc, 0x21, 0x00, + 0x7f, 0x04, 0x9a, 0x06, 0x82, 0x08, 0x39, 0x0b, 0x51, 0x0d, 0xaa, 0x0c, 0x4a, 0x0e, 0xa7, 0x10, + 0xac, 0x0f, 0x52, 0x0f, 0xeb, 0x0e, 0x24, 0x14, 0x5f, 0x16, 0x66, 0x12, 0xa5, 0x0f, 0x87, 0x0e, + 0xdb, 0x0b, 0xbc, 0x0a, 0xc8, 0x09, 0xd4, 0x04, 0xf2, 0x02, 0x62, 0xff, 0x3a, 0xff, 0x30, 0xf9, + 0x71, 0xf1, 0x43, 0xf0, 0x9e, 0xeb, 0x00, 0xe6, 0xd9, 0xe6, 0xe5, 0xe9, 0x21, 0xec, 0x24, 0xed, + 0x1f, 0xed, 0xd6, 0xef, 0x89, 0xee, 0x0f, 0xf2, 0xeb, 0xf4, 0xa6, 0xf4, 0x10, 0xf8, 0xe8, 0xfa, + 0x2f, 0xfd, 0x0d, 0xfe, 0xde, 0xfb, 0xa8, 0xfd, 0x23, 0x00, 0x5b, 0x01, 0xa3, 0x05, 0xeb, 0x06, + 0x05, 0x07, 0x85, 0x07, 0xf4, 0x09, 0x8d, 0x09, 0xae, 0x04, 0x51, 0x01, 0xd9, 0x01, 0x61, 0xfd, + 0x45, 0xf8, 0x76, 0xf6, 0x6f, 0xf9, 0x25, 0xfc, 0x96, 0xfc, 0x8e, 0xfc, 0x8e, 0xf9, 0x08, 0xf6, + 0xa3, 0xf5, 0x6b, 0xf6, 0x13, 0xf5, 0xaf, 0xf4, 0xc5, 0xf5, 0x5b, 0xf9, 0xf0, 0xf8, 0xf1, 0xf7, + 0xdb, 0xf8, 0x65, 0xf9, 0xc1, 0xfb, 0xbd, 0xfe, 0x9a, 0xfe, 0x68, 0x00, 0x8f, 0x03, 0x59, 0x06, + 0x59, 0x05, 0xab, 0x00, 0x67, 0x02, 0xc6, 0x03, 0x4b, 0x00, 0x9c, 0xfe, 0x74, 0x04, 0x74, 0x0a, + 0x24, 0x0b, 0x39, 0x0b, 0x55, 0x0c, 0xc4, 0x0b, 0xac, 0x0b, 0xea, 0x0b, 0xdf, 0x0b, 0x0b, 0x0c, + 0x7e, 0x0a, 0x65, 0x0a, 0x68, 0x0a, 0x83, 0x04, 0xa8, 0xfe, 0x4b, 0xfe, 0x11, 0xfa, 0x1f, 0xfc, + 0x63, 0xf9, 0xcf, 0xf4, 0x44, 0xf5, 0xd5, 0xf6, 0xe6, 0xfa, 0xaf, 0xf8, 0x1d, 0xf4, 0x28, 0xf5, + 0x5f, 0xf5, 0xde, 0xf1, 0xd0, 0xf2, 0x7f, 0xf6, 0x6a, 0xfb, 0x8e, 0xfc, 0x68, 0x00, 0x6d, 0x04, + 0x18, 0x03, 0x49, 0x06, 0xc2, 0x0a, 0xfb, 0x0b, 0x6e, 0x0c, 0x31, 0x0e, 0xb2, 0x13, 0x48, 0x16, + 0x88, 0x10, 0xfa, 0x0c, 0xc7, 0x0b, 0x8c, 0x0a, 0xd6, 0x0a, 0x23, 0x07, 0xd3, 0x04, 0x83, 0x04, + 0xa6, 0x01, 0xce, 0x00, 0xfd, 0xf8, 0x9b, 0xf5, 0xaf, 0xf7, 0x12, 0xf4, 0x08, 0xf2, 0x88, 0xf3, + 0xab, 0xf7, 0xed, 0xf9, 0x91, 0xfa, 0x91, 0xfc, 0xc0, 0xfd, 0xfa, 0xfb, 0x75, 0xff, 0x2e, 0x02, + 0x9b, 0x01, 0xdf, 0xfe, 0x45, 0x00, 0x5f, 0x06, 0xfb, 0x08, 0xc1, 0x06, 0x70, 0x07, 0xde, 0x06, + 0x22, 0x06, 0x4f, 0x08, 0x38, 0x05, 0x68, 0x04, 0x1b, 0x02, 0x51, 0x02, 0x3c, 0x03, 0xf5, 0xfd, + 0xd4, 0xfb, 0xd8, 0xfb, 0xcb, 0xf7, 0xde, 0xf3, 0x84, 0xf4, 0xa7, 0xf7, 0x1e, 0xf9, 0xe5, 0xfb, + 0xa7, 0xfd, 0xbb, 0xfb, 0xed, 0xfc, 0xd0, 0xff, 0xa8, 0x01, 0x67, 0x01, 0x94, 0x01, 0x18, 0x06, + 0x59, 0x0b, 0xe6, 0x09, 0x18, 0x08, 0xda, 0x09, 0xe3, 0x09, 0x0e, 0x0c, 0x5c, 0x0d, 0x95, 0x0d, + 0x9b, 0x0d, 0x7c, 0x0d, 0x42, 0x10, 0xd4, 0x0e, 0xbb, 0x07, 0x6a, 0x07, 0x63, 0x05, 0x5c, 0x00, + 0x10, 0xfc, 0xec, 0xf7, 0x37, 0xf7, 0x2d, 0xf6, 0xbd, 0xf7, 0x59, 0xf9, 0xc8, 0xf5, 0xd6, 0xf3, + 0x9a, 0xf2, 0x82, 0xf1, 0x25, 0xf0, 0x50, 0xee, 0x7d, 0xf1, 0x4e, 0xf4, 0x82, 0xf1, 0x82, 0xf1, + 0xed, 0xf1, 0x70, 0xf1, 0xc0, 0xf4, 0x45, 0xf5, 0xb6, 0xf7, 0x11, 0xf8, 0x15, 0xfc, 0x97, 0x03, + 0x73, 0x00, 0x21, 0xfe, 0x53, 0x02, 0x7f, 0x02, 0xc8, 0x00, 0x20, 0x02, 0x14, 0x06, 0x3c, 0x0b, + 0x16, 0x0c, 0xe7, 0x0e, 0x37, 0x10, 0x4c, 0x0d, 0x26, 0x0f, 0x64, 0x0f, 0xc9, 0x0f, 0xec, 0x0e, + 0x33, 0x0e, 0xfa, 0x11, 0x04, 0x10, 0x40, 0x0a, 0x23, 0x07, 0x1d, 0x02, 0x29, 0xff, 0x6e, 0xfd, + 0xb6, 0xf9, 0xa2, 0xf5, 0x08, 0xf0, 0x4b, 0xf1, 0x14, 0xf3, 0xf4, 0xed, 0x33, 0xec, 0x07, 0xec, + 0x72, 0xe8, 0xe0, 0xe4, 0x15, 0xe6, 0x6f, 0xe9, 0xab, 0xeb, 0x6c, 0xec, 0xb7, 0xf1, 0x05, 0xf4, + 0x39, 0xf5, 0x1f, 0xfb, 0xe6, 0xfe, 0x2c, 0x02, 0x53, 0x02, 0xa7, 0x05, 0x62, 0x0e, 0x03, 0x10, + 0xa6, 0x0c, 0x99, 0x0c, 0xfa, 0x0a, 0xc1, 0x0b, 0x19, 0x0c, 0x53, 0x09, 0x76, 0x07, 0x91, 0x06, + 0x75, 0x08, 0xc6, 0x05, 0xfd, 0xfe, 0x4a, 0xfe, 0x63, 0xfe, 0x0d, 0xfb, 0xfe, 0xf8, 0x5d, 0xfb, + 0x00, 0xff, 0x20, 0x00, 0x21, 0x02, 0xf5, 0x04, 0xb5, 0x04, 0xbc, 0x04, 0x01, 0x08, 0xf7, 0x0a, + 0xd8, 0x0a, 0x9a, 0x07, 0x82, 0x09, 0x70, 0x0d, 0x40, 0x0c, 0x32, 0x0e, 0x8f, 0x0d, 0xfe, 0x0c, + 0xe1, 0x0c, 0x6e, 0x0a, 0x28, 0x0a, 0x8a, 0x06, 0x33, 0x04, 0x30, 0x05, 0x59, 0xff, 0xea, 0xf9, + 0xf1, 0xf9, 0x49, 0xf7, 0xfb, 0xf1, 0x75, 0xee, 0x2a, 0xee, 0x89, 0xee, 0xd2, 0xee, 0xa7, 0xf2, + 0x64, 0xf4, 0x54, 0xf2, 0x14, 0xf4, 0x37, 0xf7, 0xe4, 0xf9, 0x27, 0xf8, 0x08, 0xf9, 0x83, 0x00, + 0x92, 0x04, 0x4f, 0x03, 0x46, 0x04, 0x01, 0x03, 0xb9, 0x04, 0x49, 0x07, 0x69, 0x07, 0xa0, 0x09, + 0x70, 0x08, 0xe8, 0x0d, 0x4b, 0x11, 0xd1, 0x0c, 0xc1, 0x0b, 0x9d, 0x0a, 0xef, 0x08, 0xdd, 0x05, + 0xd1, 0x02, 0x6c, 0x02, 0x29, 0xff, 0x0f, 0xfc, 0x4c, 0xff, 0xa9, 0xfe, 0x1f, 0xfd, 0xc4, 0xfd, + 0x17, 0xfe, 0x99, 0xfb, 0x2b, 0xf7, 0x5f, 0xf5, 0x6f, 0xf8, 0xdb, 0xf7, 0xf0, 0xf4, 0xd5, 0xf4, + 0xbc, 0xf3, 0x41, 0xf5, 0x5a, 0xf6, 0x0b, 0xf7, 0xc7, 0xf6, 0xc9, 0xf5, 0x2f, 0xfc, 0x89, 0xff, + 0x2f, 0xfd, 0xe1, 0xfd, 0x64, 0xfe, 0x83, 0xfe, 0x2f, 0xfd, 0x24, 0xff, 0x9a, 0x03, 0x99, 0x05, + 0xcf, 0x08, 0xc3, 0x0d, 0x5c, 0x0d, 0xa4, 0x0c, 0xec, 0x0e, 0x6e, 0x10, 0x04, 0x11, 0xad, 0x0e, + 0x79, 0x11, 0x38, 0x15, 0x1b, 0x13, 0x96, 0x10, 0xb2, 0x0d, 0x6a, 0x08, 0x4c, 0x07, 0x7e, 0x05, + 0x28, 0x02, 0xe3, 0xfd, 0x91, 0xf8, 0xc5, 0xf9, 0xac, 0xf7, 0x59, 0xf4, 0xce, 0xf4, 0x78, 0xf4, + 0x14, 0xf1, 0x85, 0xee, 0xee, 0xef, 0x7b, 0xf2, 0x64, 0xf2, 0xd5, 0xf5, 0x46, 0xf8, 0xe7, 0xf8, + 0x0b, 0xfb, 0x00, 0xff, 0x98, 0x04, 0x9e, 0x04, 0xf4, 0x03, 0x65, 0x08, 0xeb, 0x0c, 0xaf, 0x0d, + 0xeb, 0x0e, 0xa1, 0x0b, 0x76, 0x0a, 0xb7, 0x09, 0xb1, 0x08, 0x75, 0x06, 0xd3, 0x01, 0xdf, 0x02, + 0xca, 0x04, 0x02, 0x00, 0x5b, 0xfb, 0xf2, 0xf8, 0xc3, 0xf5, 0xed, 0xf1, 0x7d, 0xef, 0x14, 0xf3, + 0x2a, 0xf4, 0xb9, 0xf4, 0x2a, 0xf8, 0xd4, 0xf9, 0xce, 0xf9, 0x24, 0xfb, 0x07, 0xfe, 0x31, 0x01, + 0x41, 0x00, 0x43, 0x00, 0x0d, 0x03, 0x2f, 0x02, 0x4a, 0x02, 0x8f, 0x03, 0xd0, 0x04, 0xdc, 0x05, + 0x7c, 0x05, 0xb1, 0x04, 0xb3, 0x03, 0x37, 0x00, 0x03, 0x02, 0x83, 0x00, 0xd5, 0xfb, 0xc2, 0xf9, + 0x63, 0xf9, 0x03, 0xf7, 0x01, 0xf4, 0xe8, 0xf2, 0xfe, 0xf3, 0x58, 0xf3, 0x0b, 0xf3, 0xb4, 0xf7, + 0x41, 0xf7, 0xfa, 0xf7, 0x05, 0xf9, 0x59, 0xfc, 0xd6, 0xfd, 0xdd, 0xfa, 0x48, 0xfc, 0x82, 0x01, + 0x1f, 0x02, 0x81, 0x03, 0x64, 0x04, 0x63, 0x03, 0xbd, 0x05, 0xc5, 0x05, 0x7e, 0x07, 0x45, 0x07, + 0x7f, 0x07, 0xb0, 0x0c, 0xec, 0x0d, 0xac, 0x0b, 0xa0, 0x0b, 0x62, 0x0b, 0x3c, 0x08, 0x30, 0x05, + 0x02, 0x05, 0xfe, 0x05, 0x23, 0x03, 0x6a, 0x01, 0x8f, 0x01, 0x0a, 0xff, 0x5a, 0xff, 0xe4, 0x00, + 0xd3, 0x00, 0x62, 0xff, 0x92, 0xf9, 0x28, 0xfb, 0x93, 0xfc, 0x98, 0xf9, 0x6a, 0xf8, 0x1b, 0xf6, + 0xbb, 0xf5, 0x6a, 0xf6, 0xc8, 0xf6, 0xc7, 0xf7, 0x76, 0xf4, 0x58, 0xf4, 0x8b, 0xf9, 0x6f, 0xfa, + 0xa4, 0xfa, 0xa9, 0xfc, 0xea, 0xfe, 0x17, 0xfe, 0x47, 0xfe, 0x12, 0x01, 0x33, 0x05, 0x12, 0x08, + 0x3f, 0x0c, 0x9a, 0x0f, 0x0f, 0x10, 0x51, 0x11, 0x39, 0x12, 0xa1, 0x13, 0xe8, 0x10, 0xef, 0x0f, + 0xe5, 0x13, 0x98, 0x14, 0x25, 0x14, 0xc1, 0x12, 0xb2, 0x0f, 0xe6, 0x0d, 0x32, 0x0a, 0xc4, 0x08, + 0x4b, 0x05, 0x5d, 0xfe, 0x55, 0xfd, 0xe9, 0xfa, 0x11, 0xf5, 0x85, 0xf0, 0x88, 0xef, 0xa6, 0xee, + 0x1b, 0xeb, 0x09, 0xe9, 0x26, 0xeb, 0xfe, 0xea, 0xc4, 0xec, 0x8b, 0xee, 0x4f, 0xee, 0xa1, 0xef, + 0x34, 0xf1, 0xd6, 0xf5, 0x6f, 0xfb, 0x45, 0xfc, 0x80, 0xfd, 0x91, 0x03, 0x0c, 0x06, 0x96, 0x08, + 0x44, 0x09, 0xa7, 0x08, 0x37, 0x0a, 0x46, 0x0a, 0x79, 0x0b, 0xd6, 0x07, 0xb9, 0x02, 0xb9, 0x05, + 0xc2, 0x06, 0xd0, 0x03, 0x5d, 0x01, 0x2f, 0x00, 0x9c, 0xfd, 0xaa, 0xf8, 0x5a, 0xf7, 0x15, 0xfa, + 0xaf, 0xfa, 0xf7, 0xfc, 0x6f, 0xff, 0x54, 0xff, 0xf4, 0x00, 0x52, 0x01, 0xf6, 0x04, 0x9e, 0x07, + 0xc9, 0x05, 0xba, 0x08, 0xfa, 0x0a, 0xf2, 0x09, 0xdc, 0x09, 0xac, 0x08, 0x5e, 0x0a, 0xed, 0x0d, + 0x9b, 0x0d, 0x81, 0x0f, 0x34, 0x0b, 0x8d, 0x08, 0xb0, 0x0a, 0x51, 0x07, 0x38, 0x03, 0x10, 0x01, + 0x70, 0xfe, 0xb7, 0xfa, 0xa8, 0xf6, 0xc7, 0xf6, 0xa6, 0xf6, 0x0f, 0xf3, 0x5e, 0xf3, 0xf7, 0xf3, + 0xa7, 0xf3, 0x66, 0xf2, 0xab, 0xf2, 0xf3, 0xf6, 0x44, 0xf6, 0x6a, 0xf3, 0x4d, 0xf6, 0xc8, 0xf7, + 0xfe, 0xf8, 0x6a, 0xfa, 0x06, 0xfa, 0xfa, 0xfb, 0xf2, 0xfc, 0x8a, 0xfd, 0xce, 0xfe, 0x47, 0xfc, + 0xa4, 0xfe, 0xd2, 0x03, 0xe3, 0x03, 0xdc, 0x04, 0x3a, 0x06, 0xc6, 0x06, 0xaa, 0x04, 0x48, 0x02, + 0xaf, 0x03, 0xc6, 0x03, 0xa1, 0x02, 0x12, 0x02, 0x4c, 0x00, 0xab, 0xfd, 0x94, 0xfb, 0x76, 0xfd, + 0x19, 0x00, 0xac, 0xfc, 0x6d, 0xfb, 0x22, 0xfd, 0x4d, 0xfc, 0x74, 0xfa, 0x67, 0xf7, 0x51, 0xf6, + 0x91, 0xf5, 0xd1, 0xf3, 0x69, 0xf6, 0xf4, 0xf5, 0x9e, 0xf3, 0x2a, 0xf5, 0x1b, 0xf7, 0x52, 0xf8, + 0xf7, 0xf9, 0x3d, 0xfb, 0x18, 0xfc, 0x41, 0xfb, 0x0f, 0xfb, 0x18, 0x00, 0xd1, 0x00, 0x72, 0x03, + 0xa6, 0x07, 0xed, 0x09, 0x2f, 0x0c, 0xc0, 0x0c, 0xe4, 0x0f, 0xda, 0x10, 0xd7, 0x0c, 0x14, 0x0e, + 0x15, 0x11, 0xd6, 0x10, 0x84, 0x10, 0xa3, 0x0e, 0x8f, 0x0e, 0x23, 0x0d, 0xeb, 0x0a, 0xd2, 0x0a, + 0xdf, 0x05, 0x8e, 0x01, 0xaa, 0x01, 0xd2, 0xfe, 0xcb, 0xf9, 0x79, 0xf5, 0x52, 0xf4, 0x20, 0xf3, + 0x2a, 0xef, 0xac, 0xee, 0x1b, 0xf0, 0x55, 0xf0, 0x8e, 0xf3, 0xf3, 0xf4, 0x1a, 0xf5, 0x8a, 0xf6, + 0xd4, 0xf6, 0xe9, 0xfc, 0x06, 0xff, 0xd5, 0xff, 0x52, 0x06, 0xc6, 0x08, 0xce, 0x0a, 0xe7, 0x0c, + 0xc0, 0x0b, 0x11, 0x0e, 0xe5, 0x0d, 0xcd, 0x0f, 0x11, 0x12, 0x4a, 0x0d, 0x8c, 0x0b, 0x47, 0x0b, + 0xe6, 0x09, 0x22, 0x07, 0xa4, 0x05, 0x1c, 0x05, 0xe4, 0x00, 0x11, 0xfa, 0x30, 0xf8, 0xe3, 0xf7, + 0x6f, 0xf7, 0x53, 0xf9, 0xef, 0xf9, 0xfe, 0xf9, 0x18, 0xfa, 0x1e, 0xfb, 0xa5, 0xfe, 0xa3, 0xfc, + 0x6b, 0xfc, 0x5c, 0x00, 0x7f, 0x01, 0xea, 0x01, 0xea, 0xff, 0xfe, 0xfe, 0x4f, 0xff, 0xfd, 0x00, + 0x3d, 0x05, 0x87, 0x05, 0x17, 0x02, 0xb8, 0x03, 0xa4, 0x04, 0x97, 0x01, 0x36, 0xff, 0xc6, 0xfd, + 0xb7, 0xfc, 0x8e, 0xf8, 0x36, 0xf6, 0xaf, 0xf7, 0x1c, 0xf9, 0x4b, 0xf8, 0xe6, 0xf9, 0x01, 0xfb, + 0x1d, 0xfb, 0x5a, 0xfa, 0x0c, 0xfd, 0xc2, 0x00, 0xcc, 0xff, 0x26, 0x00, 0x93, 0x01, 0x79, 0x02, + 0xd5, 0x02, 0xd4, 0x01, 0xd8, 0x02, 0x1b, 0x04, 0xf3, 0x05, 0xc3, 0x09, 0xc9, 0x05, 0x0f, 0x04, + 0xbd, 0x06, 0x5e, 0x09, 0x2a, 0x09, 0x54, 0x08, 0xed, 0x0a, 0x5f, 0x0b, 0x90, 0x07, 0x1f, 0x07, + 0xb7, 0x07, 0xe6, 0x05, 0x52, 0x07, 0x9d, 0x06, 0x45, 0x05, 0xc7, 0x01, 0x62, 0xfe, 0x20, 0x01, + 0x9d, 0x01, 0xc5, 0xfd, 0xad, 0xfe, 0x6d, 0xff, 0xbd, 0xfe, 0x5a, 0xfc, 0x2a, 0xf8, 0xaa, 0xf6, + 0xc5, 0xf3, 0xf8, 0xf3, 0x2e, 0xf4, 0x60, 0xf1, 0x48, 0xf0, 0x46, 0xf1, 0x76, 0xf0, 0xaf, 0xef, + 0x21, 0xf0, 0x97, 0xf3, 0x32, 0xf3, 0x92, 0xf1, 0x9e, 0xf6, 0xcb, 0xf9, 0x02, 0xfc, 0xef, 0xff, + 0xb0, 0x03, 0xb3, 0x08, 0xa1, 0x0a, 0x0f, 0x0d, 0x0f, 0x13, 0x18, 0x12, 0x5f, 0x10, 0x5a, 0x11, + 0x9f, 0x13, 0x54, 0x15, 0xee, 0x14, 0xea, 0x12, 0x7d, 0x12, 0xb7, 0x10, 0x4a, 0x11, 0x37, 0x10, + 0x3a, 0x09, 0xfb, 0x06, 0x2e, 0x05, 0x69, 0x01, 0xd0, 0xfb, 0xe0, 0xf6, 0x0a, 0xf3, 0x78, 0xed, + 0xd3, 0xe8, 0xe8, 0xe8, 0x40, 0xe8, 0x09, 0xe8, 0x35, 0xea, 0xbf, 0xea, 0xe6, 0xeb, 0x26, 0xea, + 0x80, 0xec, 0x43, 0xf0, 0x45, 0xf0, 0x2f, 0xf3, 0xce, 0xf8, 0xdf, 0xfc, 0x24, 0x00, 0x6e, 0x01, + 0x50, 0x02, 0x27, 0x03, 0x23, 0x04, 0xb4, 0x06, 0x16, 0x08, 0x6f, 0x05, 0xe3, 0x05, 0x11, 0x06, + 0x0b, 0x02, 0xe1, 0xff, 0xf5, 0xff, 0x0f, 0x01, 0x3c, 0xfe, 0x0c, 0xfc, 0x9c, 0xfb, 0x8a, 0xfa, + 0xa1, 0xfa, 0xda, 0xfb, 0x34, 0xfd, 0xfa, 0xfd, 0xbe, 0xfc, 0x89, 0x00, 0xe1, 0x02, 0xa2, 0x01, + 0x15, 0x04, 0x12, 0x07, 0x7a, 0x09, 0xc4, 0x09, 0x28, 0x09, 0xba, 0x07, 0xce, 0x05, 0x0d, 0x07, + 0x3a, 0x0a, 0x76, 0x09, 0xbc, 0x08, 0x7e, 0x0a, 0xa0, 0x0a, 0xde, 0x06, 0x0e, 0x03, 0xd9, 0x02, + 0xf6, 0xfe, 0x7b, 0xf8, 0xb5, 0xf6, 0xe0, 0xf6, 0xa5, 0xf6, 0xc8, 0xf6, 0xca, 0xf5, 0x8f, 0xf6, + 0xd3, 0xf4, 0xab, 0xf4, 0x31, 0xf8, 0xbf, 0xf7, 0xc4, 0xf7, 0xb3, 0xf9, 0x39, 0xfb, 0x80, 0xfd, + 0x8a, 0xfb, 0x75, 0xf9, 0xc1, 0xfa, 0xd2, 0xfa, 0x8d, 0xff, 0xec, 0x00, 0x34, 0xfe, 0x91, 0xfd, + 0x91, 0x00, 0x4b, 0x02, 0x20, 0x02, 0xf9, 0x03, 0xa9, 0x07, 0x5f, 0x09, 0xa6, 0x08, 0x8e, 0x0a, + 0x69, 0x0b, 0x27, 0x0c, 0xe1, 0x0c, 0x05, 0x0e, 0x04, 0x0f, 0xf0, 0x0a, 0xdf, 0x0a, 0xde, 0x0c, + 0x57, 0x09, 0x4b, 0x08, 0x94, 0x08, 0xaf, 0x09, 0xff, 0x0a, 0x3a, 0x07, 0x85, 0x03, 0xe2, 0x00, + 0x3e, 0xfd, 0xb1, 0xfc, 0x42, 0xfa, 0x1d, 0xf6, 0xc6, 0xf6, 0xa7, 0xf6, 0xb9, 0xf5, 0xc9, 0xf2, + 0xf8, 0xf2, 0x9f, 0xf4, 0x82, 0xf2, 0x89, 0xf1, 0x28, 0xf5, 0x03, 0xf8, 0x40, 0xfb, 0x8e, 0xfe, + 0x48, 0x00, 0x64, 0x03, 0xc7, 0x03, 0x93, 0x09, 0xb9, 0x0e, 0xdc, 0x0d, 0x70, 0x0d, 0x29, 0x0e, + 0xde, 0x0f, 0x67, 0x11, 0xba, 0x0f, 0xab, 0x0f, 0x35, 0x0e, 0x04, 0x0e, 0x6c, 0x10, 0x69, 0x0d, + 0x1e, 0x0a, 0x46, 0x09, 0x9d, 0x08, 0x33, 0x06, 0xb8, 0x01, 0x89, 0xfe, 0xa5, 0xfb, 0xf6, 0xf5, + 0xfe, 0xf2, 0x60, 0xf2, 0x5a, 0xf2, 0xe6, 0xf3, 0xce, 0xf5, 0x9e, 0xf7, 0x9d, 0xf6, 0x19, 0xf6, + 0xd6, 0xf9, 0x6e, 0xfa, 0xad, 0xf9, 0x2b, 0xfc, 0x90, 0xff, 0xca, 0x04, 0x2b, 0x06, 0x15, 0x07, + 0xaa, 0x07, 0x3e, 0x06, 0xda, 0x07, 0x28, 0x0a, 0x20, 0x08, 0xf9, 0x06, 0xd7, 0x07, 0x3f, 0x08, + 0xea, 0x04, 0xa4, 0x00, 0xe1, 0xff, 0xac, 0xfd, 0xa3, 0xfb, 0x65, 0xfa, 0x71, 0xf8, 0xde, 0xf7, + 0x8c, 0xf5, 0x18, 0xf5, 0x18, 0xf7, 0xdf, 0xf3, 0x68, 0xf4, 0x5a, 0xf7, 0xf9, 0xf6, 0x4c, 0xf7, + 0x6b, 0xf8, 0xbb, 0xf9, 0x67, 0xfc, 0x6f, 0xfc, 0xc8, 0xfc, 0x96, 0xfc, 0x44, 0xfa, 0x19, 0xfd, + 0x6e, 0xfe, 0x70, 0xfd, 0x76, 0xff, 0x83, 0x02, 0x93, 0x03, 0x62, 0x01, 0x63, 0xff, 0xde, 0xff, + 0x77, 0xfc, 0x3b, 0xf8, 0xa9, 0xf7, 0x4a, 0xf7, 0xec, 0xf8, 0x16, 0xf9, 0x86, 0xf9, 0xa8, 0xfa, + 0xf7, 0xf7, 0xd9, 0xf9, 0x9f, 0xfb, 0xba, 0xfa, 0x59, 0xfb, 0x0e, 0xfc, 0x46, 0xff, 0x90, 0x00, + 0x51, 0xfe, 0x95, 0xfc, 0x7b, 0xf9, 0x5a, 0xf9, 0x8e, 0xfe, 0xfd, 0xfd, 0xc6, 0xfc, 0x88, 0xfd, + 0x87, 0xfd, 0x1e, 0xff, 0x8b, 0xfd, 0xa4, 0xfe, 0xd5, 0x01, 0xee, 0xff, 0xa9, 0x00, 0xc6, 0x03, + 0x18, 0x05, 0xd0, 0x06, 0xfb, 0x05, 0x4f, 0x08, 0xaf, 0x07, 0xa7, 0x04, 0xfd, 0x05, 0x5c, 0x05, + 0xe6, 0x03, 0x8f, 0x02, 0x08, 0x03, 0xe3, 0x05, 0xe3, 0x05, 0x6a, 0x04, 0xa7, 0x03, 0x45, 0x01, + 0x2c, 0x00, 0xfe, 0xfe, 0x9f, 0xfa, 0x89, 0xf8, 0x77, 0xf9, 0xcb, 0xf9, 0xf8, 0xf7, 0x54, 0xf6, + 0x91, 0xf8, 0x6d, 0xf8, 0x49, 0xf6, 0x1e, 0xf7, 0xc6, 0xf8, 0x11, 0xfd, 0x2b, 0x00, 0x46, 0x03, + 0xa5, 0x07, 0x4a, 0x07, 0x18, 0x09, 0xc3, 0x0f, 0x54, 0x13, 0x23, 0x15, 0x9f, 0x15, 0x68, 0x17, + 0xdb, 0x18, 0xca, 0x17, 0xb2, 0x16, 0xf5, 0x14, 0x3a, 0x14, 0xc9, 0x14, 0x34, 0x15, 0xc4, 0x12, + 0xe7, 0x0f, 0xdd, 0x0e, 0x7f, 0x0d, 0x0a, 0x09, 0x95, 0x05, 0x7f, 0x03, 0x5f, 0xfd, 0xaf, 0xf6, + 0x49, 0xf2, 0x74, 0xee, 0xdd, 0xed, 0xea, 0xec, 0x14, 0xee, 0x42, 0xee, 0xd9, 0xea, 0x6b, 0xed, + 0xe6, 0xef, 0xc3, 0xef, 0x05, 0xef, 0x33, 0xf0, 0xc3, 0xf6, 0x97, 0xfb, 0x5c, 0xfc, 0x5e, 0xff, + 0x40, 0x00, 0x3c, 0x01, 0xe7, 0x04, 0xd2, 0x04, 0x17, 0x05, 0xa8, 0x06, 0xc2, 0x09, 0x89, 0x0b, + 0xb8, 0x09, 0x25, 0x08, 0x3d, 0x07, 0x90, 0x03, 0x41, 0x02, 0x46, 0x02, 0xa3, 0x02, 0x50, 0x02, + 0x6b, 0x00, 0x0b, 0x02, 0xaa, 0xff, 0xac, 0xfc, 0x25, 0xff, 0xd3, 0xff, 0x43, 0xff, 0x88, 0xff, + 0xa9, 0xff, 0x6a, 0x03, 0x8f, 0x03, 0x47, 0x03, 0x68, 0x04, 0x0e, 0x02, 0x4b, 0x02, 0x7a, 0x03, + 0xc0, 0x01, 0xa4, 0x00, 0xc3, 0x00, 0x26, 0x05, 0x0b, 0x06, 0x44, 0x03, 0xb2, 0x03, 0xdd, 0x01, + 0xaa, 0xfd, 0xd9, 0xf9, 0xa2, 0xf6, 0xa6, 0xf5, 0x3b, 0xf6, 0x5f, 0xf6, 0xa4, 0xf8, 0x12, 0xf5, + 0x15, 0xf3, 0x69, 0xf6, 0xbd, 0xf6, 0xb9, 0xf6, 0x6b, 0xf6, 0x55, 0xf8, 0x20, 0xfb, 0x77, 0xfc, + 0x6f, 0xfb, 0x64, 0xf9, 0x8e, 0xf6, 0x8a, 0xf7, 0xb6, 0xf9, 0x23, 0xfa, 0xe2, 0xf9, 0xab, 0xfa, + 0xdf, 0xfc, 0x6b, 0xfb, 0xc8, 0xfa, 0xbe, 0xfc, 0x50, 0xfd, 0xe2, 0xfc, 0x27, 0xfe, 0x0c, 0x01, + 0xa0, 0x04, 0x4d, 0x05, 0x78, 0x07, 0x02, 0x09, 0x38, 0x07, 0x4d, 0x06, 0xf7, 0x07, 0x31, 0x07, + 0xfc, 0x04, 0x42, 0x03, 0x28, 0x04, 0x1a, 0x06, 0x2f, 0x05, 0xdc, 0x03, 0x61, 0x01, 0x45, 0xff, + 0x74, 0xff, 0x4a, 0xfd, 0x05, 0xf8, 0x50, 0xf4, 0xb5, 0xf3, 0x87, 0xf3, 0x0d, 0xf0, 0x37, 0xef, + 0x7c, 0xef, 0xee, 0xec, 0xb8, 0xea, 0x72, 0xe9, 0xbc, 0xeb, 0x7b, 0xee, 0xb1, 0xf0, 0x18, 0xf7, + 0xdd, 0xfa, 0x59, 0xfb, 0xec, 0xff, 0x44, 0x03, 0xa9, 0x07, 0x1f, 0x0b, 0x64, 0x0d, 0x9c, 0x11, + 0x60, 0x13, 0x2e, 0x13, 0xea, 0x13, 0x7b, 0x12, 0xf9, 0x12, 0x32, 0x15, 0x3c, 0x14, 0xcb, 0x13, + 0xc8, 0x12, 0xe2, 0x13, 0xeb, 0x11, 0x3b, 0x0e, 0x14, 0x0e, 0x13, 0x0c, 0x66, 0x06, 0x60, 0x02, + 0xc8, 0xfc, 0xe0, 0xfa, 0xb6, 0xf8, 0x09, 0xf7, 0x95, 0xfa, 0xa5, 0xf7, 0x00, 0xf6, 0x3a, 0xf8, + 0x73, 0xfa, 0x38, 0xfa, 0xa9, 0xf8, 0x8c, 0xf9, 0x3d, 0xfe, 0x98, 0x01, 0x8b, 0x03, 0xe9, 0x04, + 0xf3, 0x04, 0x1c, 0x08, 0x5d, 0x0a, 0xb0, 0x09, 0xd9, 0x08, 0x1c, 0x09, 0x69, 0x0b, 0x18, 0x0b, + 0x7e, 0x09, 0xa1, 0x0a, 0xda, 0x07, 0x3f, 0x03, 0x08, 0x00, 0x5c, 0xff, 0x80, 0x01, 0x11, 0x01, + 0x0d, 0x01, 0xaa, 0x01, 0x68, 0xfd, 0xee, 0xfb, 0x94, 0xfc, 0xbf, 0xfb, 0xe7, 0xfb, 0x9a, 0xfb, + 0x1d, 0xff, 0xff, 0x01, 0x91, 0x01, 0xc2, 0x00, 0x01, 0x01, 0x1c, 0xff, 0xec, 0x00, 0x7d, 0x01, + 0x50, 0xfe, 0x6c, 0xfd, 0x6f, 0xfe, 0x49, 0x00, 0xc7, 0x00, 0xcd, 0x00, 0x6a, 0x01, 0x47, 0x01, + 0xbf, 0xfe, 0xfe, 0xfa, 0x39, 0xf8, 0x9d, 0xf7, 0x78, 0xf6, 0x6a, 0xf9, 0x75, 0xfa, 0x9f, 0xf7, + 0x68, 0xf8, 0x18, 0xfa, 0x08, 0xfb, 0x2a, 0xfa, 0x59, 0xf9, 0xbe, 0xfc, 0x42, 0x00, 0xf4, 0x00, + 0x5f, 0x01, 0x97, 0xfe, 0x8a, 0xfc, 0xc8, 0xfc, 0x96, 0xfb, 0xba, 0xf9, 0x36, 0xf9, 0x15, 0xfb, + 0x4a, 0xfc, 0x36, 0xfa, 0xa9, 0xfa, 0x5c, 0xfb, 0xec, 0xfa, 0x0a, 0xfb, 0x33, 0xfa, 0x77, 0xfd, + 0x82, 0x00, 0xfe, 0x02, 0xe8, 0x06, 0x55, 0x06, 0x8f, 0x05, 0xfb, 0x06, 0xaa, 0x07, 0xa2, 0x08, + 0xd0, 0x05, 0xf0, 0x04, 0x60, 0x07, 0xce, 0x07, 0x88, 0x08, 0x26, 0x07, 0x1c, 0x03, 0x90, 0x03, + 0xa5, 0x03, 0x77, 0x01, 0xdb, 0xfc, 0x2c, 0xf8, 0x85, 0xf8, 0x0b, 0xf6, 0xf5, 0xf2, 0x8f, 0xf2, + 0x88, 0xf1, 0x18, 0xef, 0x19, 0xed, 0x73, 0xeb, 0xe2, 0xec, 0xc9, 0xed, 0xfc, 0xf0, 0xa2, 0xf6, + 0xc2, 0xf7, 0x49, 0xfa, 0x1c, 0xfe, 0xec, 0x01, 0x45, 0x05, 0xd6, 0x07, 0x4f, 0x0c, 0xe4, 0x11, + 0x2d, 0x14, 0xff, 0x14, 0x44, 0x13, 0xaf, 0x10, 0x16, 0x12, 0x11, 0x12, 0xda, 0x10, 0x20, 0x0f, + 0x48, 0x0f, 0x31, 0x11, 0x18, 0x0f, 0xde, 0x0c, 0xeb, 0x0b, 0xfd, 0x08, 0x19, 0x06, 0xda, 0x00, + 0xfc, 0xfb, 0x5e, 0xf8, 0xe0, 0xf3, 0x2a, 0xf4, 0x38, 0xf5, 0x1c, 0xf1, 0xf5, 0xef, 0xa4, 0xf0, + 0xa0, 0xf1, 0xdb, 0xf2, 0x13, 0xf1, 0xe6, 0xf1, 0x19, 0xf5, 0x6c, 0xf6, 0xe2, 0xf9, 0xb2, 0xfa, + 0xd7, 0xfa, 0xb1, 0xfe, 0x75, 0x00, 0xa1, 0x01, 0xa0, 0x00, 0xdb, 0x01, 0xdd, 0x03, 0x7c, 0x03, + 0x5e, 0x05, 0x1f, 0x07, 0xf0, 0x06, 0xcf, 0x04, 0xf6, 0x01, 0xfb, 0x01, 0x2d, 0x02, 0x73, 0x02, + 0x57, 0x05, 0x43, 0x05, 0xb8, 0x03, 0xc2, 0x03, 0xfd, 0x03, 0x00, 0x04, 0x81, 0x01, 0x28, 0x01, + 0xe1, 0x04, 0x72, 0x06, 0x38, 0x07, 0x17, 0x07, 0x28, 0x04, 0xfd, 0x03, 0x0c, 0x04, 0xec, 0x03, + 0xe1, 0x02, 0x5b, 0x00, 0xea, 0x01, 0xff, 0x03, 0x07, 0x04, 0xef, 0x05, 0xf1, 0x05, 0x5f, 0x05, + 0x90, 0x03, 0x36, 0x01, 0x1f, 0x00, 0x85, 0xfc, 0x7f, 0xfc, 0x1a, 0xfe, 0x5e, 0xfc, 0x79, 0xfc, + 0x78, 0xfc, 0x61, 0xfd, 0x93, 0xfd, 0x8e, 0xfb, 0x90, 0xfc, 0x80, 0xfe, 0x5a, 0xff, 0xcd, 0x00, + 0x48, 0x00, 0x05, 0xfe, 0x06, 0xfd, 0x47, 0xfb, 0x74, 0xfa, 0x90, 0xf7, 0xde, 0xf5, 0xf5, 0xf8, + 0x3e, 0xf8, 0x8b, 0xf7, 0x63, 0xf8, 0x2b, 0xf8, 0x9e, 0xf8, 0xc8, 0xf6, 0x4c, 0xf6, 0x46, 0xfa, + 0xa5, 0xfc, 0x17, 0x02, 0x73, 0x06, 0x53, 0x06, 0x87, 0x07, 0xe5, 0x08, 0x4a, 0x0a, 0x11, 0x0a, + 0xa0, 0x08, 0x8c, 0x08, 0xa6, 0x09, 0xbf, 0x09, 0xc5, 0x0a, 0x98, 0x08, 0x0f, 0x06, 0x5d, 0x05, + 0x2a, 0x05, 0xff, 0x04, 0x3f, 0x01, 0x2c, 0xfe, 0xfa, 0xfc, 0x92, 0xf8, 0xc2, 0xf5, 0x2c, 0xf5, + 0xee, 0xf3, 0xa4, 0xf2, 0x04, 0xee, 0x0e, 0xed, 0xcb, 0xed, 0xe2, 0xec, 0x98, 0xf0, 0xfd, 0xf2, + 0xcf, 0xf3, 0xf9, 0xf7, 0x90, 0xfb, 0x92, 0xff, 0x1f, 0x01, 0xc5, 0x02, 0x81, 0x07, 0x4b, 0x0c, + 0x8e, 0x0f, 0x8f, 0x11, 0xf9, 0x0f, 0xc5, 0x0e, 0xf9, 0x0f, 0xe5, 0x0f, 0xbe, 0x0e, 0x3b, 0x0c, + 0xc3, 0x0d, 0xe0, 0x0e, 0x28, 0x0d, 0xd9, 0x0b, 0x6c, 0x0a, 0xe8, 0x09, 0x0b, 0x07, 0xdf, 0x03, + 0xc2, 0x01, 0x85, 0xfd, 0x82, 0xfa, 0x4b, 0xfb, 0x3d, 0xfa, 0xe5, 0xf7, 0x82, 0xf5, 0xbf, 0xf6, + 0xe0, 0xf7, 0xb4, 0xf6, 0x84, 0xf6, 0x53, 0xf7, 0xe2, 0xf8, 0x09, 0xfb, 0x14, 0xfc, 0x66, 0xfd, + 0x93, 0xff, 0x9e, 0x02, 0x31, 0x05, 0x03, 0x03, 0x05, 0x03, 0xdc, 0x04, 0x24, 0x05, 0xb5, 0x04, + 0x55, 0x05, 0x83, 0x06, 0xf3, 0x06, 0x00, 0x04, 0x49, 0x02, 0x9b, 0x01, 0xe7, 0xff, 0x9e, 0x01, + 0x9a, 0x03, 0x09, 0x03, 0xb2, 0x01, 0x0c, 0x02, 0xc6, 0x02, 0xc7, 0x00, 0x7f, 0xfc, 0x8c, 0xfc, + 0x3f, 0xfe, 0x5c, 0x00, 0xc0, 0x01, 0x6a, 0x00, 0x7e, 0xff, 0x72, 0xfe, 0x0b, 0xff, 0xf2, 0xfe, + 0x23, 0xfb, 0x87, 0xf9, 0x5d, 0xf9, 0xbd, 0xf7, 0x7d, 0xf9, 0x2d, 0xfa, 0x7b, 0xfa, 0x6c, 0xfa, + 0x37, 0xf9, 0xc0, 0xf9, 0x56, 0xf9, 0xfd, 0xf5, 0x3d, 0xf7, 0x89, 0xf7, 0x12, 0xf6, 0x33, 0xf6, + 0xe7, 0xf7, 0xce, 0xfa, 0x5f, 0xfa, 0x63, 0xf9, 0x57, 0xfb, 0x3a, 0xfe, 0xf0, 0xff, 0x18, 0x03, + 0x6f, 0x02, 0xec, 0x02, 0x52, 0x03, 0xd1, 0x03, 0x4d, 0x02, 0x88, 0xfd, 0x40, 0xfd, 0x39, 0xfd, + 0x75, 0xfc, 0xd4, 0xfb, 0xeb, 0xfa, 0xbc, 0xfa, 0xcf, 0xf9, 0xbf, 0xf7, 0x8e, 0xf7, 0x75, 0xf7, + 0xae, 0xf9, 0xef, 0xfe, 0xb2, 0x01, 0x1c, 0x03, 0x59, 0x05, 0x66, 0x07, 0xd7, 0x08, 0x01, 0x08, + 0xbe, 0x07, 0x19, 0x09, 0x7b, 0x08, 0x43, 0x09, 0xca, 0x0a, 0xc9, 0x09, 0xd6, 0x07, 0x4c, 0x07, + 0x0a, 0x07, 0x39, 0x05, 0x13, 0x02, 0xc1, 0x01, 0xa2, 0xfe, 0xda, 0xfa, 0x10, 0xf8, 0x58, 0xf6, + 0x8b, 0xf5, 0x4b, 0xf2, 0xce, 0xef, 0x80, 0xed, 0x42, 0xec, 0x73, 0xed, 0x4b, 0xef, 0xff, 0xef, + 0x07, 0xf1, 0x02, 0xf5, 0x53, 0xfb, 0xa0, 0xfe, 0x5a, 0x01, 0x5a, 0x04, 0x2b, 0x09, 0x86, 0x0e, + 0xc8, 0x13, 0x75, 0x16, 0x22, 0x16, 0x2f, 0x17, 0x23, 0x19, 0x2a, 0x19, 0xfb, 0x14, 0x2d, 0x13, + 0xd7, 0x14, 0x1c, 0x15, 0xfa, 0x13, 0x44, 0x12, 0x66, 0x11, 0x27, 0x0f, 0x41, 0x0a, 0xab, 0x07, + 0x3b, 0x04, 0x80, 0xff, 0x9f, 0xfd, 0xf9, 0xf9, 0xd2, 0xf6, 0x2b, 0xf4, 0x71, 0xf2, 0x0c, 0xf2, + 0x4a, 0xf1, 0x06, 0xf0, 0x65, 0xf1, 0x8f, 0xf2, 0xd4, 0xf3, 0xe4, 0xf4, 0xd1, 0xf3, 0xf3, 0xf3, + 0x4d, 0xf6, 0x0e, 0xfb, 0x12, 0xfc, 0x72, 0xfa, 0x4e, 0xfc, 0xed, 0xfe, 0x79, 0xfe, 0x26, 0xfe, + 0xb6, 0xfe, 0xe7, 0x01, 0xe5, 0x02, 0xde, 0x00, 0x63, 0x01, 0xfb, 0xff, 0xb0, 0xff, 0x44, 0x03, + 0xcb, 0x03, 0x6d, 0x04, 0xfd, 0x04, 0x32, 0x07, 0x91, 0x0a, 0x92, 0x08, 0xaa, 0x06, 0x2a, 0x06, + 0x56, 0x07, 0x6b, 0x0a, 0x1e, 0x0c, 0xb2, 0x0a, 0x89, 0x0a, 0x14, 0x0b, 0x78, 0x0b, 0x30, 0x09, + 0x72, 0x05, 0x51, 0x05, 0x56, 0x04, 0x8e, 0x02, 0x17, 0x01, 0x0d, 0x02, 0x58, 0x02, 0xd0, 0x00, + 0x38, 0xff, 0xf3, 0xfe, 0x27, 0xfd, 0xc4, 0xfc, 0x24, 0xfd, 0xcd, 0xfa, 0xf1, 0xf8, 0xd9, 0xf7, + 0xca, 0xf9, 0x52, 0xfc, 0x4e, 0xfb, 0x6f, 0xfa, 0xb8, 0xfa, 0xf7, 0xfb, 0x05, 0xff, 0xc2, 0xfe, + 0x29, 0xfd, 0xc8, 0xfc, 0x9f, 0xfe, 0x61, 0xff, 0x6a, 0xfb, 0x4a, 0xf7, 0xa3, 0xf6, 0x39, 0xf6, + 0xe9, 0xf4, 0xa6, 0xf3, 0x64, 0xf3, 0x6d, 0xf3, 0x5c, 0xf2, 0x15, 0xf1, 0xf3, 0xef, 0xce, 0xef, + 0xb8, 0xf3, 0x7a, 0xf9, 0xe8, 0xfc, 0x0b, 0xff, 0x69, 0x02, 0x2b, 0x07, 0x3b, 0x09, 0x13, 0x0a, + 0xc8, 0x0b, 0xa4, 0x0c, 0xc3, 0x0d, 0x99, 0x0e, 0x17, 0x0e, 0xf4, 0x0c, 0xc4, 0x0b, 0xac, 0x0b, + 0xfb, 0x0a, 0x93, 0x06, 0xfa, 0x04, 0xee, 0x04, 0xfe, 0x02, 0x5a, 0xff, 0x57, 0xfa, 0xa1, 0xf7, + 0x78, 0xf4, 0x1f, 0xf0, 0xf8, 0xed, 0xf9, 0xe9, 0x59, 0xe7, 0xd8, 0xe8, 0x6a, 0xe9, 0x53, 0xe9, + 0x56, 0xe9, 0x37, 0xec, 0xcf, 0xf1, 0x5d, 0xf5, 0x66, 0xf8, 0x5c, 0xfc, 0xd0, 0xfe, 0xaf, 0x04, + 0x74, 0x09, 0xfd, 0x0a, 0x92, 0x0b, 0x38, 0x0c, 0xe4, 0x10, 0x56, 0x11, 0x57, 0x0d, 0xd6, 0x0c, + 0xa4, 0x0c, 0x34, 0x0d, 0xb0, 0x0c, 0x0b, 0x0c, 0x2f, 0x0d, 0xfa, 0x0b, 0x5e, 0x09, 0x07, 0x08, + 0x87, 0x05, 0x6a, 0x04, 0x16, 0x04, 0xf0, 0x01, 0xd5, 0xff, 0xe6, 0xfd, 0x3e, 0xfe, 0x6d, 0xfe, + 0xa4, 0xfc, 0xd0, 0xfc, 0x91, 0xfd, 0x4d, 0xfe, 0xe0, 0x00, 0xc6, 0x00, 0x6b, 0xfe, 0x97, 0xfd, + 0x9d, 0xfe, 0x96, 0x02, 0x87, 0x02, 0x2c, 0x01, 0xe3, 0x02, 0xd3, 0x03, 0x87, 0x03, 0xef, 0x01, + 0x9a, 0x01, 0x4f, 0x02, 0xb5, 0x01, 0x7e, 0x00, 0xbd, 0xff, 0x59, 0xfd, 0x79, 0xfd, 0x26, 0xff, + 0x34, 0x00, 0x25, 0x00, 0xc6, 0x00, 0x67, 0x03, 0x8b, 0x05, 0x47, 0x05, 0xe7, 0x04, 0x13, 0x04, + 0xbd, 0x03, 0xed, 0x05, 0xa9, 0x05, 0xc5, 0x04, 0x40, 0x04, 0xd1, 0x04, 0x35, 0x06, 0x86, 0x02, + 0x9c, 0x00, 0x25, 0x01, 0x3d, 0xff, 0x76, 0xfd, 0xe7, 0xfb, 0xe3, 0xfc, 0xee, 0xfd, 0x5e, 0xfc, + 0x26, 0xfb, 0x3b, 0xfa, 0x9d, 0xfa, 0x8c, 0xfd, 0x79, 0x00, 0x5c, 0x00, 0x00, 0xfe, 0xc4, 0xfd, + 0xd4, 0x00, 0x91, 0x01, 0x39, 0x02, 0x51, 0x02, 0x06, 0x03, 0x93, 0x05, 0xdd, 0x06, 0x9e, 0x06, + 0x9d, 0x04, 0x40, 0x04, 0x17, 0x07, 0xd0, 0x07, 0x32, 0x04, 0x70, 0x02, 0x56, 0x00, 0x79, 0xfe, + 0xc0, 0xfb, 0xcd, 0xf8, 0xef, 0xf7, 0xa5, 0xf5, 0x17, 0xf3, 0x0e, 0xf2, 0xf5, 0xed, 0xc4, 0xed, + 0x37, 0xf0, 0x96, 0xf3, 0x3b, 0xf6, 0x25, 0xf8, 0xd2, 0xfc, 0xd5, 0x00, 0x66, 0x02, 0x81, 0x03, + 0x43, 0x05, 0x6e, 0x07, 0x8e, 0x09, 0xda, 0x08, 0xca, 0x07, 0x57, 0x05, 0x8a, 0x05, 0xd8, 0x07, + 0xeb, 0x05, 0x6f, 0x03, 0x7e, 0x03, 0x14, 0x04, 0x01, 0x03, 0xb7, 0xff, 0xc8, 0xfb, 0x5f, 0xf9, + 0xf4, 0xf5, 0xbc, 0xf3, 0xce, 0xf0, 0x23, 0xed, 0xfb, 0xec, 0x18, 0xef, 0x68, 0xf0, 0xda, 0xef, + 0x56, 0xef, 0x0f, 0xf2, 0x7b, 0xf5, 0x06, 0xf8, 0xf6, 0xfa, 0x02, 0xfd, 0x0b, 0x01, 0x5a, 0x06, + 0x33, 0x0a, 0xbd, 0x0b, 0xf7, 0x0b, 0x3f, 0x0e, 0xc5, 0x12, 0xa5, 0x11, 0x0d, 0x0f, 0xed, 0x0d, + 0xa3, 0x0d, 0xd9, 0x0c, 0x51, 0x0b, 0x7f, 0x0a, 0xaf, 0x0a, 0x4d, 0x09, 0x26, 0x07, 0x12, 0x05, + 0x80, 0x01, 0x82, 0x02, 0xb5, 0x02, 0xb7, 0x00, 0xf0, 0xfd, 0x54, 0xfb, 0x2d, 0xfb, 0x2d, 0xfa, + 0xa4, 0xf7, 0xa4, 0xf5, 0x00, 0xf5, 0x47, 0xf6, 0x6b, 0xf8, 0x58, 0xf8, 0x0a, 0xf6, 0xa9, 0xf3, + 0x0f, 0xf6, 0xff, 0xf8, 0x89, 0xf8, 0xe3, 0xf8, 0xb9, 0xfa, 0x18, 0xfc, 0x18, 0xfc, 0xee, 0xfa, + 0xff, 0xfb, 0xa7, 0xfc, 0xe3, 0xfc, 0x7a, 0xfe, 0xda, 0xfe, 0xf7, 0xfe, 0xee, 0x00, 0x43, 0x03, + 0xd6, 0x04, 0xf6, 0x05, 0x6e, 0x06, 0xfd, 0x08, 0x66, 0x0a, 0x32, 0x0b, 0xe8, 0x0a, 0x33, 0x0b, + 0x11, 0x0c, 0x89, 0x0c, 0xfd, 0x0b, 0x06, 0x09, 0xbd, 0x08, 0x3a, 0x0a, 0x70, 0x08, 0x8a, 0x05, + 0x3c, 0x04, 0xa0, 0x03, 0x46, 0x02, 0xfe, 0xfd, 0x3a, 0xfc, 0xfe, 0xfb, 0xab, 0xfa, 0x67, 0xfa, + 0x7e, 0xf9, 0x46, 0xf7, 0x0e, 0xf7, 0xbf, 0xf9, 0xc1, 0xfc, 0xfc, 0xfd, 0x60, 0xfc, 0xda, 0xfb, + 0xcf, 0xfc, 0x86, 0xfd, 0xab, 0xfd, 0x66, 0xfd, 0x8c, 0xfe, 0x9d, 0x02, 0xcf, 0x04, 0xd9, 0x04, + 0x02, 0x03, 0xa3, 0x02, 0x1c, 0x05, 0xae, 0x04, 0x8e, 0x03, 0xc8, 0x02, 0xcf, 0x01, 0xe6, 0xfe, + 0x67, 0xfc, 0x7b, 0xfb, 0xdf, 0xfb, 0xa7, 0xf9, 0xff, 0xf8, 0xa9, 0xf7, 0x68, 0xf5, 0x6d, 0xf5, + 0x02, 0xf7, 0x6b, 0xf9, 0x4a, 0xfb, 0x3e, 0xfe, 0x9e, 0x03, 0xd5, 0x07, 0x76, 0x08, 0xf9, 0x09, + 0xe4, 0x0b, 0x37, 0x0f, 0xa4, 0x12, 0x9a, 0x11, 0x75, 0x0f, 0x7f, 0x0d, 0x74, 0x0d, 0x15, 0x0e, + 0x94, 0x09, 0x17, 0x07, 0x96, 0x06, 0x06, 0x06, 0x01, 0x05, 0xe0, 0x01, 0xb9, 0xff, 0x9b, 0xfc, + 0x0a, 0xf8, 0xa2, 0xf4, 0xf1, 0xf0, 0xa2, 0xeb, 0xcf, 0xea, 0xae, 0xeb, 0xb8, 0xeb, 0x0f, 0xea, + 0x82, 0xe8, 0xed, 0xe9, 0x78, 0xeb, 0x2c, 0xed, 0x54, 0xf0, 0x31, 0xf4, 0xb6, 0xf8, 0x86, 0xfe, + 0x9f, 0x01, 0xdb, 0x02, 0x26, 0x03, 0x35, 0x07, 0x55, 0x0a, 0x34, 0x0a, 0xbb, 0x0a, 0xb9, 0x0b, + 0x6c, 0x0c, 0x93, 0x0b, 0x53, 0x0a, 0xd0, 0x0a, 0x54, 0x0b, 0x2a, 0x0b, 0x1d, 0x0a, 0xc0, 0x06, + 0xa4, 0x05, 0x70, 0x07, 0x2c, 0x09, 0xab, 0x07, 0xc8, 0x04, 0xed, 0x03, 0x35, 0x04, 0x6e, 0x02, + 0x82, 0xff, 0xf4, 0xfc, 0xaf, 0xfc, 0x4f, 0xfe, 0x69, 0x00, 0xd9, 0xff, 0x54, 0xfc, 0x84, 0xfa, + 0x81, 0xfb, 0x66, 0xfb, 0xb9, 0xf9, 0x25, 0xfa, 0x66, 0xfc, 0x09, 0xfe, 0x2d, 0xfd, 0xe8, 0xfc, + 0x14, 0xfd, 0xf9, 0xfb, 0x12, 0xfc, 0xbf, 0xfb, 0xc1, 0xfa, 0x2f, 0xfb, 0x89, 0xfc, 0x07, 0xfe, + 0x5b, 0xff, 0x82, 0xff, 0xc2, 0x02, 0x8e, 0x05, 0x5c, 0x07, 0xc4, 0x08, 0x5f, 0x08, 0xf1, 0x08, + 0x24, 0x0b, 0xf0, 0x0b, 0xdf, 0x0a, 0x88, 0x07, 0x02, 0x08, 0x32, 0x0b, 0x0b, 0x09, 0xed, 0x05, + 0x18, 0x05, 0x05, 0x05, 0x96, 0x04, 0x21, 0x01, 0xee, 0xfd, 0xc7, 0xfc, 0x1a, 0xfb, 0x2e, 0xfb, + 0x55, 0xf9, 0xc4, 0xf5, 0xde, 0xf5, 0x07, 0xf7, 0x52, 0xfa, 0x42, 0xfb, 0x6a, 0xfa, 0xe3, 0xfb, + 0x75, 0xfb, 0x8c, 0xfb, 0x92, 0xfb, 0x1c, 0xfa, 0xf5, 0xfb, 0xf2, 0xfe, 0x9e, 0x01, 0x9c, 0x01, + 0x9a, 0xfe, 0xaf, 0xff, 0x2e, 0x01, 0x0d, 0xff, 0x66, 0xfe, 0x0f, 0xff, 0xb9, 0xfe, 0xc8, 0xfc, + 0x8f, 0xf9, 0x8d, 0xf8, 0x0d, 0xf7, 0xa4, 0xf4, 0xa5, 0xf3, 0x74, 0xf0, 0x46, 0xed, 0x6b, 0xed, + 0x55, 0xee, 0x85, 0xf0, 0x0a, 0xf1, 0x50, 0xf3, 0x6a, 0xf8, 0xa6, 0xfc, 0x38, 0xff, 0x4a, 0x00, + 0x2f, 0x02, 0xc9, 0x06, 0xb1, 0x0b, 0x82, 0x0e, 0x56, 0x0d, 0x95, 0x0b, 0x17, 0x0e, 0xe0, 0x0d, + 0xfb, 0x0a, 0x2b, 0x09, 0x55, 0x09, 0xac, 0x09, 0xe2, 0x08, 0xab, 0x08, 0xfd, 0x07, 0x88, 0x05, + 0x4e, 0x02, 0x7a, 0xff, 0x1f, 0xfb, 0x75, 0xf7, 0x5d, 0xf6, 0x77, 0xf6, 0xf8, 0xf6, 0x2d, 0xf6, + 0x3e, 0xf6, 0x92, 0xf6, 0xe1, 0xf5, 0x60, 0xf6, 0xf0, 0xf6, 0xe2, 0xf9, 0x4e, 0xfe, 0xab, 0x02, + 0x5d, 0x06, 0x68, 0x06, 0xfc, 0x07, 0xc0, 0x0b, 0x64, 0x0d, 0x57, 0x0d, 0xd0, 0x0d, 0x26, 0x0f, + 0xc7, 0x0f, 0xbe, 0x0d, 0xb8, 0x0c, 0x57, 0x0b, 0x9c, 0x0a, 0x44, 0x0b, 0x56, 0x0a, 0x2d, 0x07, + 0xe7, 0x05, 0x12, 0x07, 0x25, 0x09, 0xf5, 0x07, 0x57, 0x05, 0x60, 0x05, 0xbe, 0x04, 0x8e, 0x03, + 0xc4, 0x00, 0xcd, 0xfc, 0xc4, 0xfb, 0x21, 0xfc, 0x96, 0xfc, 0xcb, 0xfc, 0x01, 0xf9, 0x6f, 0xf8, + 0xaa, 0xf8, 0x86, 0xf5, 0x1c, 0xf4, 0x95, 0xf3, 0x03, 0xf5, 0xcf, 0xf5, 0xec, 0xf4, 0x6b, 0xf6, + 0x69, 0xf6, 0x07, 0xf5, 0xd1, 0xf4, 0xe8, 0xf2, 0xfe, 0xf2, 0xab, 0xf5, 0x3f, 0xf9, 0xa5, 0xfb, + 0x84, 0xfc, 0xba, 0xfe, 0x97, 0x02, 0x36, 0x05, 0x6e, 0x07, 0x31, 0x09, 0x37, 0x0a, 0x8e, 0x0c, + 0x6e, 0x0e, 0xf1, 0x10, 0x03, 0x0f, 0xdf, 0x0b, 0x54, 0x0d, 0x97, 0x0e, 0x74, 0x0c, 0xf4, 0x09, + 0xa6, 0x07, 0x06, 0x08, 0xe7, 0x06, 0x9d, 0x04, 0x81, 0x02, 0x9c, 0xff, 0xb4, 0xfe, 0x62, 0xfe, + 0xff, 0xfa, 0x84, 0xf7, 0xf5, 0xf6, 0x66, 0xf8, 0xa8, 0xfa, 0xf1, 0xfb, 0x18, 0xfe, 0x09, 0x00, + 0x60, 0x02, 0x52, 0x02, 0x72, 0x01, 0x55, 0x00, 0x23, 0x01, 0x6b, 0x04, 0x38, 0x06, 0x79, 0x05, + 0xc3, 0x04, 0x65, 0x06, 0x56, 0x05, 0x85, 0x02, 0x42, 0x01, 0x0d, 0x02, 0xe1, 0x01, 0xc9, 0xff, + 0x4e, 0xfd, 0xdd, 0xfa, 0x0b, 0xf8, 0x65, 0xf6, 0x78, 0xf4, 0xef, 0xf0, 0x4a, 0xee, 0xc1, 0xed, + 0x1c, 0xef, 0x5c, 0xef, 0x39, 0xef, 0xaf, 0xf1, 0xb4, 0xf5, 0xc8, 0xf9, 0x9e, 0xfc, 0x86, 0xfd, + 0xb4, 0xff, 0x32, 0x03, 0xb9, 0x08, 0xd5, 0x0a, 0x01, 0x09, 0x8d, 0x09, 0xeb, 0x0a, 0x6c, 0x09, + 0xdb, 0x06, 0xc5, 0x04, 0xfc, 0x03, 0x3c, 0x03, 0x1b, 0x02, 0x19, 0x03, 0xef, 0x01, 0xfb, 0xff, + 0x20, 0xfe, 0x1f, 0xfb, 0x1b, 0xf6, 0x41, 0xf2, 0x86, 0xf0, 0xd5, 0xf0, 0x29, 0xf0, 0xba, 0xef, + 0x32, 0xf1, 0xe3, 0xf0, 0xa3, 0xf1, 0x0e, 0xf0, 0x52, 0xef, 0xa3, 0xf1, 0x6f, 0xf5, 0x4a, 0xfb, + 0xe1, 0xfd, 0x32, 0xfe, 0x4c, 0x02, 0xf9, 0x04, 0xac, 0x05, 0x40, 0x06, 0x54, 0x06, 0x19, 0x08, + 0x21, 0x09, 0x27, 0x09, 0x31, 0x09, 0x7f, 0x07, 0xb0, 0x06, 0x46, 0x09, 0x64, 0x08, 0x44, 0x06, + 0x98, 0x05, 0xf3, 0x06, 0xee, 0x09, 0xb4, 0x0a, 0xbb, 0x0a, 0x40, 0x0b, 0xc1, 0x0a, 0x50, 0x0a, + 0x94, 0x08, 0x28, 0x06, 0x9e, 0x04, 0x5e, 0x04, 0x3b, 0x05, 0x20, 0x03, 0xe3, 0x01, 0x36, 0x02, + 0xed, 0x00, 0x4f, 0xfe, 0xf7, 0xfb, 0x0e, 0xfb, 0x24, 0xfb, 0x1e, 0xfa, 0xb4, 0xf9, 0x0f, 0xfa, + 0xd8, 0xf9, 0xdc, 0xfa, 0xa4, 0xf9, 0x00, 0xf7, 0x61, 0xf5, 0x61, 0xf6, 0x80, 0xf9, 0x11, 0xfb, + 0x1d, 0xfb, 0x80, 0xfd, 0x10, 0x00, 0x5d, 0x02, 0x28, 0x04, 0xda, 0x04, 0xf9, 0x05, 0xc5, 0x07, + 0xee, 0x0a, 0xa3, 0x0c, 0xf4, 0x0a, 0x39, 0x09, 0x57, 0x0a, 0x12, 0x0a, 0xfb, 0x08, 0x51, 0x06, + 0xdb, 0x04, 0x43, 0x03, 0xd5, 0x01, 0xab, 0x01, 0xea, 0xff, 0x21, 0xfd, 0x5e, 0xfc, 0x52, 0xfa, + 0xa5, 0xf7, 0xb1, 0xf6, 0x4d, 0xf5, 0x8b, 0xf5, 0x78, 0xf6, 0xf1, 0xf7, 0xf4, 0xfa, 0x57, 0xfd, + 0x65, 0xff, 0xfd, 0x00, 0xb7, 0x00, 0xac, 0x00, 0xbb, 0x01, 0x91, 0x05, 0x2e, 0x07, 0xeb, 0x05, + 0x9a, 0x07, 0x0b, 0x0a, 0xa8, 0x09, 0x1d, 0x07, 0xd0, 0x04, 0xf5, 0x04, 0x09, 0x05, 0x16, 0x04, + 0xad, 0x03, 0x49, 0x02, 0x2c, 0x01, 0xda, 0xff, 0x99, 0xfc, 0xae, 0xf8, 0x7b, 0xf6, 0x5f, 0xf6, + 0xef, 0xf6, 0x9e, 0xf6, 0xc4, 0xf6, 0x14, 0xf8, 0x48, 0xf9, 0x7c, 0xfc, 0x34, 0xfe, 0xab, 0xfe, + 0x20, 0x00, 0xe7, 0x02, 0x11, 0x07, 0x98, 0x08, 0x0a, 0x08, 0x45, 0x0a, 0x3f, 0x0b, 0xaf, 0x09, + 0x25, 0x08, 0x10, 0x07, 0x0d, 0x06, 0x9c, 0x02, 0xb5, 0x00, 0xd3, 0x00, 0xd1, 0xff, 0xd0, 0xfe, + 0xea, 0xfd, 0x91, 0xfa, 0x59, 0xf7, 0x14, 0xf4, 0xa6, 0xf2, 0xed, 0xf1, 0x90, 0xf0, 0xda, 0xf0, + 0xc4, 0xf1, 0x2a, 0xf3, 0x24, 0xf4, 0x3b, 0xf3, 0xf6, 0xf2, 0x35, 0xf4, 0x72, 0xf8, 0x50, 0xfd, + 0x4b, 0xfe, 0xf1, 0xff, 0x6f, 0x03, 0x9e, 0x05, 0xc0, 0x06, 0xac, 0x06, 0x43, 0x07, 0x4d, 0x08, + 0x6b, 0x09, 0xef, 0x0a, 0x2d, 0x0b, 0x09, 0x0a, 0x89, 0x0a, 0xbd, 0x0a, 0x13, 0x0a, 0x2f, 0x08, + 0x00, 0x07, 0x24, 0x09, 0x0b, 0x0a, 0x76, 0x0a, 0xd1, 0x0b, 0xbe, 0x0c, 0xe5, 0x0c, 0x8d, 0x0b, + 0xfa, 0x08, 0xd7, 0x06, 0x59, 0x05, 0xdd, 0x04, 0xa0, 0x03, 0x4b, 0x00, 0xa2, 0xff, 0x79, 0x01, + 0x97, 0x00, 0x5b, 0xfd, 0xc0, 0xfa, 0xeb, 0xf8, 0x0b, 0xf7, 0x30, 0xf5, 0x61, 0xf4, 0x9c, 0xf3, + 0x5e, 0xf3, 0x44, 0xf4, 0xd1, 0xf2, 0x90, 0xef, 0x17, 0xed, 0xbb, 0xed, 0x11, 0xf1, 0x3a, 0xf3, + 0x08, 0xf6, 0x67, 0xf9, 0x7c, 0xfc, 0xda, 0xff, 0xfc, 0x00, 0x5d, 0x02, 0xd7, 0x03, 0x26, 0x06, + 0x80, 0x0b, 0x8a, 0x0d, 0x85, 0x0b, 0xcc, 0x0a, 0x5f, 0x0a, 0x34, 0x09, 0x08, 0x09, 0x97, 0x07, + 0x84, 0x06, 0xc3, 0x05, 0x72, 0x05, 0x78, 0x05, 0xef, 0x03, 0x33, 0x02, 0xb4, 0x01, 0x06, 0xff, + 0x98, 0xfb, 0xfa, 0xf9, 0xed, 0xf9, 0x21, 0xf9, 0x97, 0xf7, 0x4d, 0xf8, 0x79, 0xf9, 0x53, 0xfb, + 0x08, 0xfe, 0x74, 0xff, 0x79, 0x00, 0xef, 0x00, 0x72, 0x02, 0xf8, 0x05, 0x9f, 0x05, 0x71, 0x05, + 0x12, 0x07, 0x34, 0x09, 0xd1, 0x09, 0xbb, 0x07, 0x8b, 0x06, 0x21, 0x06, 0x48, 0x04, 0x78, 0x02, + 0x21, 0x01, 0xcd, 0xfe, 0xcc, 0xfd, 0xdf, 0xfc, 0xbf, 0xf9, 0x16, 0xf7, 0x6e, 0xf5, 0x32, 0xf6, + 0xe2, 0xf6, 0x80, 0xf7, 0x9c, 0xf9, 0x45, 0xfa, 0x83, 0xfb, 0xdf, 0xfd, 0xf6, 0xff, 0xee, 0x01, + 0x41, 0x03, 0x07, 0x07, 0xae, 0x0a, 0xba, 0x0a, 0x61, 0x0c, 0xeb, 0x0e, 0x06, 0x10, 0x84, 0x0e, + 0xe0, 0x0c, 0x13, 0x0c, 0xe7, 0x0a, 0x49, 0x07, 0x32, 0x04, 0x13, 0x02, 0x2a, 0x00, 0xab, 0x00, + 0x7a, 0xff, 0xdc, 0xfb, 0x3a, 0xf7, 0x25, 0xf4, 0x99, 0xf2, 0xcd, 0xee, 0x5f, 0xec, 0x8e, 0xeb, + 0x1d, 0xec, 0x2e, 0xee, 0x9e, 0xef, 0xa9, 0xef, 0x2a, 0xee, 0x8d, 0xee, 0xa6, 0xf2, 0x9c, 0xf5, + 0x53, 0xf6, 0xd9, 0xf9, 0x95, 0xfd, 0x85, 0xff, 0x47, 0x00, 0xd3, 0xff, 0x8f, 0x00, 0xa5, 0x00, + 0xb4, 0x00, 0x78, 0x02, 0xa1, 0x02, 0xf1, 0x01, 0x06, 0x02, 0x6c, 0x01, 0x2d, 0x01, 0xc1, 0x00, + 0x61, 0x01, 0xb8, 0x02, 0x4f, 0x04, 0x50, 0x06, 0x85, 0x08, 0x82, 0x0a, 0xc8, 0x0a, 0x79, 0x0a, + 0x45, 0x09, 0xa0, 0x07, 0xf3, 0x07, 0xd2, 0x09, 0x22, 0x07, 0x43, 0x04, 0xa7, 0x05, 0x1a, 0x07, + 0x91, 0x06, 0x6e, 0x05, 0xa9, 0x03, 0x2e, 0x03, 0xd4, 0x00, 0x30, 0xfe, 0x79, 0xfc, 0xf8, 0xf9, + 0xbe, 0xf9, 0x5a, 0xfb, 0xa2, 0xf9, 0x71, 0xf7, 0x3d, 0xf4, 0x68, 0xf4, 0x2a, 0xf5, 0xbc, 0xf6, + 0x0d, 0xf8, 0x1c, 0xf4, 0xd4, 0xfd, 0xcb, 0xfe, 0x61, 0xfe, 0xdf, 0x04, 0x8a, 0x03, 0x53, 0x04, + 0x65, 0x0a, 0xf6, 0x0b, 0xfb, 0x0b, 0x0d, 0x0b, 0x91, 0x0a, 0x3b, 0x0a, 0x21, 0x08, 0x89, 0x07, + 0x4c, 0x09, 0xd6, 0x03, 0xeb, 0x07, 0xbc, 0x01, 0x7a, 0xfe, 0xcb, 0x02, 0x86, 0xff, 0xfe, 0xfe, + 0x56, 0x00, 0xa2, 0xf9, 0xfc, 0xfb, 0xc3, 0xfc, 0x38, 0xfb, 0x77, 0xf9, 0x1f, 0xfb, 0xf7, 0xf8, + 0xed, 0xfd, 0x52, 0xff, 0xeb, 0xfe, 0x3e, 0x00, 0x4b, 0x05, 0x29, 0x05, 0xa9, 0x02, 0x2e, 0x05, + 0x89, 0x05, 0xa4, 0x06, 0x5d, 0x0a, 0x80, 0x08, 0xdd, 0x03, 0x98, 0x04, 0x01, 0x05, 0x33, 0x03, + 0x89, 0x01, 0x14, 0xfe, 0x53, 0xfb, 0xc5, 0xfc, 0x49, 0xf9, 0x41, 0xf5, 0x0c, 0xfa, 0xe3, 0xf6, + 0xf4, 0xf3, 0xdb, 0xf6, 0x5f, 0xf7, 0xf0, 0xf6, 0x81, 0xfa, 0x1c, 0xff, 0x40, 0xfd, 0x5c, 0xfd, + 0xdb, 0x04, 0x28, 0x0a, 0xc5, 0x0a, 0x26, 0x0c, 0xc6, 0x0d, 0x00, 0x0c, 0xc1, 0x0e, 0x94, 0x0e, + 0x44, 0x0e, 0x57, 0x0f, 0xa5, 0x0a, 0x27, 0x05, 0xca, 0x02, 0x99, 0xfe, 0x4f, 0xfc, 0xe1, 0xfe, + 0xbf, 0xfd, 0xa4, 0xf7, 0x76, 0xf6, 0xb5, 0xf4, 0x46, 0xf3, 0x05, 0xf5, 0x11, 0xf5, 0xd4, 0xf1, + 0x5a, 0xf1, 0x80, 0xf2, 0x12, 0xf5, 0xa2, 0xf5, 0x1b, 0xf5, 0x05, 0xf5, 0xa3, 0xf7, 0x83, 0xf7, + 0x2b, 0xf7, 0x20, 0xfc, 0x20, 0x00, 0x7e, 0xfd, 0x47, 0xff, 0x89, 0xff, 0xe9, 0xfe, 0x13, 0x00, + 0xe8, 0x05, 0x12, 0x02, 0xe0, 0xff, 0xe4, 0x00, 0x4f, 0x00, 0xf5, 0xfd, 0xcc, 0xff, 0x8b, 0xfb, + 0x8a, 0xfc, 0x6e, 0xfc, 0x98, 0xfa, 0x9a, 0xfd, 0xac, 0x01, 0x95, 0x00, 0xbc, 0x04, 0xb4, 0x02, + 0x8c, 0x01, 0xb4, 0x01, 0x21, 0x08, 0xac, 0x08, 0xfa, 0x03, 0x03, 0x02, 0xe9, 0x01, 0x48, 0x01, + 0x4a, 0x03, 0xda, 0x01, 0xfd, 0x00, 0x0d, 0xfe, 0x8d, 0xfc, 0x07, 0xfa, 0xea, 0xf8, 0xb2, 0xf4, + 0x35, 0xf5, 0xe5, 0xf6, 0xdc, 0xf2, 0xfa, 0xef, 0xe7, 0xf2, 0xd0, 0xf3, 0xa0, 0xf3, 0xf7, 0xf7, + 0x58, 0xf6, 0xe1, 0xf5, 0x04, 0xfc, 0x3d, 0xff, 0x1d, 0x03, 0x2e, 0x05, 0x08, 0x03, 0xdf, 0x08, + 0x34, 0x0c, 0xaa, 0x09, 0xce, 0x0e, 0xe2, 0x12, 0x2a, 0x0f, 0x5f, 0x0e, 0x00, 0x0e, 0x6f, 0x0b, + 0xa4, 0x0b, 0xf4, 0x0d, 0x94, 0x0b, 0x5f, 0x08, 0x55, 0x05, 0x0e, 0x05, 0xb0, 0x05, 0x9b, 0x03, + 0x45, 0x02, 0x36, 0x01, 0x31, 0xff, 0x6f, 0xfc, 0xff, 0xfb, 0x22, 0xfd, 0x16, 0xfd, 0x5e, 0xfb, + 0xd7, 0xfd, 0x2a, 0xfe, 0x1e, 0xfb, 0x47, 0xfe, 0x02, 0x04, 0x04, 0x04, 0xa2, 0x04, 0x82, 0x04, + 0xe6, 0x02, 0x0e, 0x05, 0x7a, 0x06, 0x24, 0x06, 0x89, 0x05, 0x86, 0x03, 0x9b, 0x01, 0xf3, 0xff, + 0xd7, 0xfe, 0xe1, 0xfd, 0x11, 0xfe, 0xa0, 0xfd, 0xfb, 0xfb, 0x14, 0xfc, 0x1a, 0xfd, 0x58, 0xfc, + 0x34, 0xfc, 0x67, 0xff, 0x23, 0xff, 0xc8, 0x02, 0x86, 0x04, 0x20, 0x07, 0x19, 0x0a, 0xe7, 0x06, + 0x21, 0x0c, 0x22, 0x10, 0x92, 0x10, 0x72, 0x12, 0xd2, 0x15, 0x9c, 0x1a, 0x14, 0x18, 0x2b, 0x17, + 0x1f, 0x15, 0x1a, 0x16, 0xa9, 0x15, 0x81, 0x10, 0x13, 0x0e, 0xc4, 0x07, 0xe7, 0x05, 0xb0, 0x05, + 0x20, 0x01, 0xf7, 0xfe, 0xbd, 0xfb, 0x53, 0xf9, 0x4d, 0xf5, 0x60, 0xf5, 0x8e, 0xf7, 0x37, 0xf3, + 0xd6, 0xf1, 0x24, 0xf0, 0x56, 0xf1, 0x33, 0xf0, 0xaa, 0xef, 0x8c, 0xf2, 0x38, 0xf0, 0xde, 0xef, + 0x7f, 0xef, 0x68, 0xf3, 0x73, 0xf8, 0x4f, 0xf5, 0x13, 0xf6, 0xf6, 0xf6, 0x28, 0xf6, 0x59, 0xf5, + 0x1b, 0xf6, 0xf2, 0xf2, 0x51, 0xf1, 0xb3, 0xf2, 0x7d, 0xf1, 0x4f, 0xef, 0x2a, 0xed, 0x19, 0xef, + 0x9b, 0xed, 0xa3, 0xeb, 0x0e, 0xef, 0xe5, 0xee, 0xf9, 0xf0, 0x1e, 0xf5, 0x61, 0xf4, 0x57, 0xf7, + 0x8c, 0xf6, 0x94, 0xf8, 0x93, 0xfc, 0x16, 0xfd, 0x6a, 0xfb, 0xdb, 0xfa, 0x9b, 0xfc, 0x27, 0xfd, + 0xf6, 0xfa, 0x7c, 0xf7, 0x0a, 0xf9, 0x7a, 0xf7, 0xd0, 0xf6, 0x49, 0xf9, 0xe6, 0xf5, 0xbf, 0xf3, + 0x5b, 0xf3, 0x93, 0xf1, 0x18, 0xef, 0xa8, 0xef, 0x38, 0xf0, 0x43, 0xf0, 0xfe, 0xf1, 0x9e, 0xef, + 0xb9, 0xf3, 0x67, 0xf7, 0x46, 0xf7, 0xb1, 0xfa, 0x56, 0xfc, 0xdd, 0xfc, 0x95, 0x01, 0x53, 0x09, + 0x9e, 0x09, 0xb3, 0x0b, 0x91, 0x0e, 0x8d, 0x11, 0x13, 0x14, 0x3b, 0x14, 0xc8, 0x17, 0x68, 0x18, + 0xc6, 0x15, 0xc7, 0x17, 0xd3, 0x16, 0x6d, 0x16, 0xa0, 0x18, 0x61, 0x19, 0x24, 0x18, 0x40, 0x16, + 0x7b, 0x12, 0x35, 0x15, 0x7c, 0x16, 0xed, 0x13, 0x59, 0x17, 0xa2, 0x17, 0x3b, 0x15, 0xa4, 0x17, + 0x12, 0x19, 0x58, 0x16, 0xbd, 0x12, 0x5b, 0x15, 0xd9, 0x19, 0xa8, 0x1a, 0x26, 0x1a, 0xea, 0x18, + 0x1b, 0x18, 0xad, 0x13, 0xb1, 0x12, 0xf7, 0x11, 0x0e, 0x12, 0x9c, 0x10, 0xc7, 0x0c, 0x63, 0x0a, + 0x38, 0x06, 0xf1, 0x03, 0x33, 0x02, 0xc0, 0xfe, 0x2d, 0xf9, 0x91, 0xf6, 0x26, 0xf7, 0x06, 0xf5, + 0x93, 0xf3, 0x84, 0xf3, 0xf4, 0xf1, 0xc1, 0xf1, 0xab, 0xf1, 0x4c, 0xf4, 0xd3, 0xf2, 0x85, 0xf1, + 0x16, 0xf6, 0x13, 0xf5, 0x9f, 0xf5, 0x4e, 0xf6, 0x0b, 0xf8, 0x80, 0xfa, 0x06, 0xfb, 0x54, 0xfb, + 0x0a, 0xfa, 0x3e, 0xf9, 0xb3, 0xf9, 0xcc, 0xfb, 0xb2, 0xfa, 0x80, 0xf8, 0x68, 0xf7, 0x52, 0xf6, + 0xd9, 0xf3, 0xc9, 0xf2, 0xc3, 0xf4, 0xa5, 0xf2, 0x66, 0xf2, 0x1a, 0xf4, 0xbf, 0xf4, 0x64, 0xf5, + 0xad, 0xf6, 0x50, 0xf7, 0xb5, 0xf9, 0x16, 0xfc, 0x42, 0xfd, 0x61, 0xff, 0x2d, 0x02, 0x6f, 0x03, + 0x3c, 0x05, 0x11, 0x08, 0xe2, 0x0a, 0x69, 0x0c, 0x97, 0x0c, 0x28, 0x0f, 0xc6, 0x11, 0xd0, 0x15, + 0xa1, 0x14, 0xda, 0x11, 0xd4, 0x0f, 0xc0, 0x0e, 0xc6, 0x10, 0x8e, 0x0d, 0x9f, 0x0d, 0xfa, 0x0c, + 0x9a, 0x09, 0x03, 0x0a, 0x23, 0x0a, 0x12, 0x08, 0xfb, 0x07, 0x74, 0x08, 0x70, 0x0a, 0x53, 0x0a, + 0x02, 0x07, 0xcb, 0x07, 0x03, 0x0a, 0x82, 0x08, 0x56, 0x08, 0x8b, 0x0a, 0xab, 0x06, 0xc4, 0x01, + 0xde, 0xfb, 0xc7, 0xf9, 0xb2, 0xf5, 0x89, 0xee, 0x6a, 0xee, 0x47, 0xeb, 0xc7, 0xe6, 0x5d, 0xe4, + 0x18, 0xe3, 0x63, 0xdf, 0xde, 0xd9, 0x06, 0xd6, 0xe0, 0xd4, 0x98, 0xd5, 0x15, 0xd3, 0x71, 0xd2, + 0x82, 0xd3, 0x02, 0xd4, 0xc1, 0xd5, 0x97, 0xda, 0xce, 0xda, 0xfc, 0xda, 0x11, 0xe1, 0x29, 0xe7, + 0x9f, 0xe5, 0xda, 0xe9, 0x2d, 0xed, 0x89, 0xf0, 0x07, 0xf2, 0xb1, 0xf3, 0x31, 0xf8, 0x88, 0xf9, + 0xcf, 0xf8, 0xd9, 0xf7, 0xc1, 0xf7, 0xcc, 0xf5, 0xc6, 0xfc, 0x21, 0xfe, 0x02, 0x00, 0xfe, 0xff, + 0x59, 0xfe, 0x00, 0x00, 0x9c, 0x03, 0xd8, 0x09, 0x75, 0x0c, 0x8f, 0x09, 0x19, 0x0b, 0x0f, 0x10, + 0x48, 0x15, 0xdf, 0x14, 0x6c, 0x14, 0x9f, 0x17, 0xee, 0x14, 0xe7, 0x16, 0x1b, 0x1c, 0xa8, 0x1c, + 0xb5, 0x17, 0x3a, 0x14, 0xa9, 0x11, 0x79, 0x10, 0x83, 0x13, 0x85, 0x14, 0xa7, 0x13, 0xb9, 0x0e, + 0x43, 0x09, 0xda, 0x04, 0xe0, 0x02, 0xd0, 0x00, 0x56, 0xfb, 0x7f, 0xfb, 0x2a, 0xfd, 0xcc, 0xfd, + 0x40, 0xff, 0xe3, 0xfd, 0xaf, 0xfd, 0x63, 0xf9, 0xb9, 0xfa, 0x39, 0xfc, 0xcf, 0xfa, 0x26, 0x03, + 0x0b, 0x04, 0x60, 0x05, 0x96, 0x09, 0x27, 0x08, 0xa9, 0x09, 0x63, 0x0c, 0x8f, 0x09, 0x85, 0x0c, + 0x98, 0x0c, 0x7b, 0x08, 0x04, 0x0d, 0xaf, 0x0e, 0xcc, 0x0d, 0xee, 0x0b, 0x03, 0x08, 0x26, 0x07, + 0x7f, 0x04, 0xb9, 0x01, 0xb1, 0x01, 0xf4, 0xff, 0xb1, 0x01, 0x0d, 0x04, 0xe0, 0x06, 0x80, 0x09, + 0xab, 0x0a, 0x99, 0x0a, 0xbb, 0x0b, 0x5f, 0x0d, 0x97, 0x0e, 0xd5, 0x11, 0x91, 0x12, 0xe3, 0x14, + 0x8a, 0x19, 0x27, 0x1b, 0xe6, 0x1c, 0x6c, 0x1e, 0x8a, 0x1d, 0x94, 0x18, 0x3e, 0x19, 0x18, 0x1c, + 0x90, 0x1b, 0xab, 0x17, 0xbc, 0x15, 0x77, 0x16, 0x13, 0x15, 0x2b, 0x12, 0x00, 0x11, 0xd5, 0x0b, + 0x15, 0x07, 0x0a, 0x03, 0x0a, 0x02, 0x47, 0x02, 0x90, 0x01, 0x18, 0x04, 0xac, 0x05, 0x4a, 0x05, + 0x62, 0x03, 0x45, 0x03, 0xdb, 0x01, 0x0e, 0x02, 0xf1, 0x02, 0xf4, 0x03, 0x9b, 0x06, 0x54, 0x03, + 0xdd, 0x00, 0xd4, 0xff, 0x27, 0xf7, 0xa1, 0xf2, 0xbc, 0xee, 0x62, 0xe8, 0x9d, 0xe6, 0xbd, 0xe1, + 0x4b, 0xdf, 0x84, 0xdd, 0xf3, 0xd6, 0x6d, 0xd2, 0xd5, 0xd0, 0x20, 0xd0, 0x25, 0xd0, 0x9d, 0xcd, + 0x0a, 0xcb, 0xa3, 0xc8, 0xc2, 0xca, 0xd2, 0xd1, 0xc9, 0xd3, 0x79, 0xd4, 0x1d, 0xd8, 0x34, 0xda, + 0xf2, 0xdd, 0x68, 0xe1, 0xbe, 0xe5, 0xc1, 0xe8, 0x0d, 0xeb, 0x37, 0xea, 0xde, 0xec, 0x5f, 0xf1, + 0x9b, 0xf3, 0xd2, 0xf3, 0xf1, 0xf2, 0x0d, 0xf2, 0xd1, 0xf2, 0x17, 0xf7, 0x2f, 0xf7, 0x69, 0xf9, + 0xb1, 0xfd, 0xd6, 0xfe, 0xcc, 0x03, 0x34, 0x0a, 0x1a, 0x0f, 0xff, 0x10, 0xc5, 0x0f, 0x28, 0x13, + 0x8b, 0x13, 0x3c, 0x12, 0xaf, 0x15, 0x67, 0x1a, 0x1d, 0x1e, 0x8f, 0x20, 0x46, 0x24, 0x15, 0x24, + 0x8e, 0x22, 0x6a, 0x20, 0x34, 0x1f, 0xbb, 0x1b, 0x52, 0x18, 0xd0, 0x18, 0xbd, 0x1b, 0x93, 0x19, + 0xaa, 0x14, 0x9d, 0x11, 0xb9, 0x0e, 0x39, 0x08, 0xc7, 0x03, 0x0f, 0x03, 0x95, 0x02, 0x6e, 0x05, + 0x26, 0x04, 0x4c, 0x04, 0xb9, 0xff, 0x04, 0xfd, 0x04, 0x01, 0xf6, 0x00, 0x42, 0xfd, 0xb4, 0xf7, + 0x12, 0xf8, 0x05, 0xfa, 0xdd, 0xfb, 0xc6, 0xfd, 0x8a, 0xfe, 0x88, 0xfd, 0x01, 0xfa, 0x54, 0xf8, + 0x77, 0xf7, 0x75, 0xf4, 0x9e, 0xf1, 0x0f, 0xee, 0x00, 0xef, 0xc8, 0xef, 0x04, 0xf1, 0x53, 0xef, + 0x1c, 0xeb, 0x65, 0xe9, 0x52, 0xe5, 0x80, 0xe4, 0x00, 0xe5, 0x1d, 0xe6, 0x2c, 0xea, 0x38, 0xed, + 0x2a, 0xef, 0xf2, 0xf3, 0xad, 0xf5, 0xda, 0xf5, 0xc5, 0xf9, 0x7d, 0xfc, 0xbb, 0x01, 0xf7, 0x03, + 0x6f, 0x05, 0x0e, 0x0c, 0x02, 0x10, 0xe7, 0x14, 0xa1, 0x16, 0x47, 0x14, 0x98, 0x13, 0xbe, 0x18, + 0xba, 0x19, 0x84, 0x17, 0xdd, 0x17, 0x7c, 0x18, 0x18, 0x1c, 0x33, 0x1d, 0x30, 0x1d, 0x37, 0x1e, + 0x9b, 0x1d, 0xa2, 0x1c, 0x0f, 0x1b, 0x9c, 0x1a, 0xee, 0x18, 0x56, 0x1b, 0x00, 0x21, 0xde, 0x20, + 0x4c, 0x23, 0xf7, 0x22, 0xb8, 0x21, 0xdb, 0x1d, 0x54, 0x1c, 0x08, 0x20, 0xfc, 0x1e, 0x81, 0x1d, + 0x72, 0x1b, 0xbc, 0x18, 0xdd, 0x14, 0xda, 0x0e, 0x40, 0x09, 0xba, 0x02, 0x16, 0xfd, 0xb1, 0xf7, + 0xf7, 0xf1, 0x0c, 0xee, 0xdf, 0xe8, 0x30, 0xe5, 0x88, 0xe1, 0x29, 0xdd, 0x8d, 0xda, 0xef, 0xdb, + 0x44, 0xd7, 0xc6, 0xd4, 0x6c, 0xd5, 0x43, 0xd6, 0x71, 0xd5, 0xb0, 0xd7, 0x9f, 0xdb, 0xf8, 0xe1, + 0xf4, 0xe4, 0xd0, 0xe4, 0xec, 0xe7, 0xd1, 0xe7, 0x61, 0xe9, 0xea, 0xeb, 0xa6, 0xec, 0xb9, 0xeb, + 0x47, 0xef, 0xeb, 0xf1, 0x9b, 0xef, 0xc7, 0xed, 0x35, 0xee, 0x6d, 0xf0, 0x70, 0xee, 0xbb, 0xeb, + 0xfa, 0xed, 0xf5, 0xf2, 0xfc, 0xf7, 0x08, 0xfd, 0x47, 0x01, 0x38, 0x03, 0x3e, 0x05, 0xe4, 0x09, + 0xec, 0x0b, 0x83, 0x09, 0x32, 0x07, 0x84, 0x07, 0x50, 0x0b, 0x71, 0x0e, 0x27, 0x13, 0x27, 0x17, + 0xcf, 0x13, 0x36, 0x0e, 0x9e, 0x0d, 0xc7, 0x0a, 0xda, 0x08, 0x94, 0x06, 0x9d, 0x04, 0x57, 0x05, + 0xd4, 0x02, 0xf8, 0x02, 0xad, 0xff, 0x78, 0xf9, 0x2a, 0xf4, 0xaf, 0xf1, 0x0a, 0xee, 0xf0, 0xef, + 0x18, 0xf4, 0xdd, 0xf3, 0x65, 0xf4, 0x32, 0xf2, 0x10, 0xf5, 0x40, 0xf6, 0xa8, 0xf4, 0x31, 0xf4, + 0x39, 0xf6, 0x9e, 0xf9, 0x7d, 0xfa, 0xfe, 0xfd, 0xb3, 0xff, 0x05, 0x00, 0x5e, 0x04, 0xb0, 0x02, + 0x0f, 0x02, 0xf9, 0x03, 0x04, 0x02, 0x40, 0xff, 0xc6, 0xfa, 0x1a, 0x00, 0xe4, 0x02, 0xa6, 0x02, + 0xce, 0x01, 0xc5, 0x00, 0x6d, 0x00, 0x83, 0xfe, 0xbd, 0xfe, 0x1c, 0xff, 0xb7, 0xff, 0xfc, 0x00, + 0x3c, 0x07, 0x7f, 0x0c, 0xd3, 0x0c, 0xed, 0x0b, 0x23, 0x0e, 0x40, 0x11, 0x83, 0x11, 0xf4, 0x15, + 0x53, 0x18, 0x24, 0x17, 0xc6, 0x1a, 0x6a, 0x1f, 0xaf, 0x20, 0x81, 0x21, 0x65, 0x1f, 0xff, 0x1c, + 0x93, 0x1d, 0x02, 0x1a, 0xbf, 0x17, 0xcc, 0x16, 0x82, 0x14, 0x56, 0x15, 0xdc, 0x15, 0x70, 0x15, + 0xf6, 0x10, 0x6f, 0x10, 0xc5, 0x10, 0x0f, 0x0b, 0x30, 0x08, 0xd3, 0x09, 0xb2, 0x0a, 0x39, 0x09, + 0xb4, 0x09, 0x3f, 0x0f, 0xaa, 0x0f, 0x41, 0x0d, 0xf9, 0x09, 0x93, 0x09, 0x3a, 0x0b, 0x05, 0x0b, + 0x75, 0x0a, 0xe2, 0x08, 0xf5, 0x05, 0xf2, 0x01, 0x27, 0xfd, 0x91, 0xf7, 0x48, 0xf3, 0x5c, 0xf0, + 0x74, 0xeb, 0xdb, 0xe3, 0xb7, 0xe0, 0xb0, 0xdd, 0xb0, 0xdd, 0x3f, 0xdc, 0x41, 0xd9, 0x25, 0xda, + 0xfe, 0xd6, 0xc6, 0xd6, 0x7f, 0xda, 0xb3, 0xd9, 0x91, 0xd7, 0x5e, 0xd8, 0xa7, 0xdc, 0x00, 0xe0, + 0xcb, 0xe7, 0xdb, 0xeb, 0xff, 0xed, 0x27, 0xef, 0x5f, 0xef, 0xbe, 0xf3, 0xfa, 0xf6, 0x14, 0xf9, + 0x78, 0xf9, 0x9c, 0xfb, 0x33, 0xfd, 0x46, 0xfd, 0x76, 0xff, 0x59, 0x00, 0x8e, 0x00, 0xc0, 0xff, + 0xcf, 0xfd, 0x19, 0xff, 0x84, 0x05, 0x14, 0x0e, 0xab, 0x0f, 0x55, 0x12, 0x6d, 0x19, 0xcf, 0x1c, + 0xeb, 0x1d, 0xde, 0x1c, 0xc8, 0x1d, 0xb8, 0x1d, 0x08, 0x1f, 0x7e, 0x20, 0xf1, 0x23, 0xe2, 0x27, + 0xd2, 0x27, 0x7d, 0x24, 0x28, 0x20, 0x92, 0x1d, 0x4b, 0x19, 0x86, 0x17, 0xc4, 0x11, 0x41, 0x0e, + 0xcd, 0x0f, 0xe2, 0x0d, 0x48, 0x0a, 0x5a, 0x04, 0x6a, 0xff, 0x97, 0xfa, 0xab, 0xf6, 0xd1, 0xf2, + 0x08, 0xf3, 0xbf, 0xf1, 0x46, 0xf0, 0x2e, 0xf3, 0xb7, 0xf1, 0xe8, 0xee, 0xa3, 0xec, 0x58, 0xea, + 0x42, 0xe9, 0xc0, 0xe6, 0xb3, 0xe8, 0x20, 0xeb, 0x5d, 0xe9, 0x0a, 0xe7, 0xc2, 0xe6, 0xb7, 0xe7, + 0x68, 0xe5, 0xec, 0xe4, 0x91, 0xe1, 0x58, 0xde, 0x45, 0xda, 0x91, 0xd7, 0xb6, 0xdb, 0xa0, 0xdc, + 0xb4, 0xdc, 0xa4, 0xdb, 0x80, 0xda, 0x79, 0xd9, 0xe7, 0xd9, 0x7b, 0xdb, 0xe0, 0xd9, 0x38, 0xdd, + 0xc2, 0xe3, 0x66, 0xe5, 0xad, 0xe7, 0xeb, 0xea, 0xb1, 0xef, 0xee, 0xf6, 0xf8, 0xf7, 0xba, 0xfa, + 0x51, 0xff, 0x5b, 0x02, 0x40, 0x05, 0x6c, 0x0a, 0x08, 0x10, 0xaa, 0x13, 0x95, 0x16, 0xfb, 0x15, + 0xb0, 0x17, 0x7c, 0x19, 0x72, 0x19, 0x99, 0x18, 0x6a, 0x16, 0x7b, 0x18, 0xc1, 0x1d, 0xd0, 0x21, + 0x84, 0x23, 0xb9, 0x22, 0x88, 0x23, 0xaa, 0x23, 0x41, 0x25, 0xc1, 0x25, 0xdf, 0x24, 0xe2, 0x23, + 0x9d, 0x24, 0xd2, 0x29, 0x50, 0x2c, 0x5d, 0x2d, 0xf8, 0x2d, 0x97, 0x29, 0x1d, 0x28, 0x17, 0x28, + 0x39, 0x27, 0x5d, 0x27, 0xb1, 0x23, 0xbc, 0x1f, 0x23, 0x1b, 0xca, 0x14, 0x4e, 0x0f, 0x92, 0x0a, + 0x36, 0x05, 0xdd, 0xfd, 0x50, 0xf6, 0x88, 0xf3, 0x49, 0xef, 0xf2, 0xed, 0xc0, 0xea, 0xe6, 0xe4, + 0xc8, 0xe6, 0x5a, 0xe6, 0xec, 0xe4, 0x0c, 0xe2, 0x48, 0xdf, 0x51, 0xdf, 0x5e, 0xe2, 0xc9, 0xe3, + 0x04, 0xe4, 0xe4, 0xea, 0x79, 0xed, 0x78, 0xee, 0x32, 0xee, 0x4d, 0xf0, 0x5f, 0xf2, 0x42, 0xf0, + 0x57, 0xf1, 0x33, 0xf1, 0x29, 0xf2, 0x1a, 0xf6, 0xa7, 0xf5, 0x56, 0xf4, 0x02, 0xf2, 0xb3, 0xf1, + 0xef, 0xf0, 0x54, 0xf1, 0x7e, 0xf4, 0x06, 0xf7, 0x4e, 0xfc, 0x6e, 0x00, 0xef, 0x08, 0xf1, 0x0e, + 0x59, 0x0f, 0x68, 0x0f, 0x25, 0x11, 0x4d, 0x11, 0x03, 0x10, 0x5e, 0x13, 0xe5, 0x16, 0x1d, 0x19, + 0xcc, 0x19, 0x4f, 0x1b, 0x0c, 0x1a, 0x21, 0x16, 0x82, 0x13, 0x03, 0x11, 0x58, 0x0d, 0x7c, 0x07, + 0x78, 0x07, 0x7c, 0x09, 0xd5, 0x07, 0x45, 0x03, 0xc8, 0x00, 0x86, 0xfd, 0xad, 0xf9, 0x61, 0xf5, + 0x81, 0xf3, 0x82, 0xf4, 0xdb, 0xf4, 0xf3, 0xf7, 0x66, 0xf7, 0xec, 0xf5, 0x26, 0xf7, 0x01, 0xfa, + 0x02, 0xf9, 0xc6, 0xf5, 0x9f, 0xf5, 0xa6, 0xfa, 0xff, 0xfb, 0x85, 0xfa, 0x47, 0xfb, 0x81, 0xfc, + 0xb9, 0xfb, 0x29, 0xfb, 0x47, 0xfa, 0x5a, 0xf7, 0x61, 0xf6, 0xaf, 0xf2, 0x82, 0xf0, 0x8f, 0xf0, + 0x87, 0xef, 0xd5, 0xf1, 0x7f, 0xf3, 0xc2, 0xf1, 0x96, 0xf0, 0xdd, 0xee, 0x72, 0xee, 0x37, 0xf0, + 0x71, 0xf3, 0x5e, 0xf4, 0xed, 0xf1, 0x38, 0xf4, 0x7f, 0xf8, 0x17, 0xfb, 0x84, 0xff, 0x03, 0x00, + 0xca, 0xfe, 0xf1, 0xfe, 0xe7, 0x01, 0x25, 0x04, 0x4f, 0x07, 0x8e, 0x0a, 0x2e, 0x0c, 0x1b, 0x0d, + 0x83, 0x09, 0x90, 0x0b, 0xe1, 0x0c, 0x6a, 0x0a, 0xba, 0x05, 0x02, 0x03, 0xdd, 0x07, 0x9c, 0x08, + 0xc2, 0x09, 0xf2, 0x0b, 0x21, 0x09, 0xf0, 0x0a, 0x61, 0x0d, 0x14, 0x0d, 0x54, 0x08, 0xee, 0x06, + 0xf7, 0x09, 0x17, 0x0c, 0x25, 0x0e, 0x04, 0x0f, 0x82, 0x14, 0x85, 0x13, 0x7c, 0x0e, 0xf8, 0x0f, + 0x43, 0x0f, 0x43, 0x0d, 0x89, 0x0b, 0xfd, 0x09, 0x1f, 0x06, 0x31, 0x02, 0x2d, 0xff, 0x48, 0xfc, + 0xc4, 0xf6, 0x47, 0xef, 0x9c, 0xeb, 0x0e, 0xe9, 0x55, 0xe6, 0x2b, 0xe2, 0x3e, 0xe1, 0x1b, 0xde, + 0xf2, 0xde, 0x71, 0xe2, 0x49, 0xe2, 0xbb, 0xde, 0xd3, 0xdb, 0xbb, 0xde, 0xdf, 0xde, 0xc9, 0xdf, + 0xff, 0xe1, 0xe7, 0xe4, 0x3f, 0xe9, 0x5c, 0xec, 0x0a, 0xf0, 0x05, 0xf2, 0x75, 0xf2, 0xda, 0xf3, + 0xf6, 0xf4, 0x75, 0xf5, 0x24, 0xf5, 0x18, 0xf9, 0xca, 0xfe, 0xbd, 0xfd, 0x44, 0xfd, 0xf2, 0xfe, + 0xd9, 0xfe, 0x6b, 0xfe, 0x74, 0x01, 0xe8, 0x02, 0x72, 0x08, 0xe0, 0x10, 0xb4, 0x15, 0xd1, 0x1b, + 0x18, 0x1f, 0x19, 0x24, 0x62, 0x29, 0x69, 0x28, 0xc5, 0x27, 0x40, 0x2a, 0xc4, 0x2b, 0x3e, 0x2d, + 0x55, 0x2e, 0x6a, 0x30, 0xb7, 0x2f, 0x60, 0x2d, 0x07, 0x2c, 0x2b, 0x28, 0xc0, 0x24, 0x25, 0x20, + 0x76, 0x1d, 0x0f, 0x1b, 0x97, 0x17, 0x60, 0x16, 0xad, 0x16, 0x1d, 0x14, 0xaa, 0x0e, 0x72, 0x0a, + 0xf8, 0x04, 0x02, 0x03, 0x93, 0x04, 0xb1, 0x05, 0x49, 0x03, 0x27, 0xff, 0x17, 0x01, 0x39, 0x02, + 0x4f, 0x00, 0xfb, 0xfd, 0x46, 0xf9, 0x5c, 0xf8, 0xd3, 0xf9, 0x19, 0xfa, 0x0b, 0xf8, 0xf9, 0xf4, + 0x40, 0xf4, 0xc7, 0xf1, 0x68, 0xef, 0xa4, 0xe9, 0xee, 0xe8, 0x87, 0xe9, 0x4a, 0xe2, 0x34, 0xdf, + 0xe3, 0xde, 0x11, 0xdf, 0x93, 0xde, 0x3e, 0xe0, 0x34, 0xe0, 0xfa, 0xde, 0xe1, 0xde, 0x97, 0xe0, + 0xc5, 0xe1, 0x88, 0xe1, 0xd6, 0xe4, 0x49, 0xe7, 0x4a, 0xe9, 0x48, 0xec, 0xd2, 0xf0, 0x3c, 0xf5, + 0x7b, 0xf5, 0xdb, 0xf5, 0x7f, 0xf7, 0x3b, 0xfa, 0xca, 0xfa, 0x81, 0xfe, 0x6c, 0x02, 0x60, 0x03, + 0x6a, 0x05, 0x10, 0x07, 0x1f, 0x09, 0xe7, 0x05, 0x82, 0x03, 0x3f, 0x04, 0x24, 0x05, 0xb8, 0x07, + 0x8d, 0x09, 0x80, 0x0c, 0x79, 0x0d, 0xa6, 0x10, 0x87, 0x16, 0x15, 0x16, 0xe2, 0x13, 0x54, 0x11, + 0xcf, 0x12, 0x9c, 0x14, 0x0e, 0x16, 0xa7, 0x18, 0x8d, 0x1a, 0xa2, 0x1e, 0x7f, 0x1c, 0x8a, 0x1a, + 0xfd, 0x19, 0x83, 0x16, 0x6f, 0x16, 0x68, 0x13, 0xac, 0x0e, 0x65, 0x0c, 0xef, 0x09, 0xa5, 0x06, + 0xa7, 0x00, 0xfd, 0xf9, 0x21, 0xf5, 0x65, 0xef, 0x34, 0xec, 0x8c, 0xe9, 0xf3, 0xe5, 0xdd, 0xe5, + 0x55, 0xe5, 0xc2, 0xe4, 0x70, 0xe3, 0x90, 0xe3, 0x22, 0xe3, 0x06, 0xe4, 0xa8, 0xe2, 0x03, 0xe2, + 0xa3, 0xe3, 0xba, 0xe4, 0xe6, 0xe6, 0x34, 0xea, 0xa9, 0xee, 0x27, 0xef, 0xe8, 0xee, 0x40, 0xf1, + 0xe0, 0xf0, 0x0e, 0xf1, 0xfa, 0xf1, 0x7e, 0xf0, 0xf6, 0xf1, 0x56, 0xf3, 0x55, 0xf5, 0xb7, 0xf6, + 0x2d, 0xf6, 0xd9, 0xf4, 0xd0, 0xf3, 0xff, 0xf4, 0xb8, 0xf8, 0x52, 0x01, 0x21, 0x07, 0x45, 0x09, + 0x8f, 0x0c, 0x7a, 0x12, 0xa1, 0x17, 0x34, 0x1a, 0xa4, 0x19, 0x65, 0x19, 0x63, 0x1a, 0x20, 0x1a, + 0x3a, 0x1d, 0xff, 0x1c, 0xb9, 0x1e, 0xb9, 0x1f, 0x43, 0x1c, 0x1b, 0x18, 0xde, 0x13, 0x32, 0x12, + 0x3c, 0x0f, 0x3d, 0x0b, 0x55, 0x07, 0x12, 0x08, 0x8b, 0x07, 0xe0, 0x05, 0x0e, 0x05, 0x43, 0x01, + 0x30, 0xff, 0x24, 0xfc, 0x08, 0xfb, 0x21, 0xfc, 0x77, 0xfb, 0xa7, 0xfc, 0xf2, 0xfd, 0x4e, 0x01, + 0xb0, 0x01, 0x8a, 0x01, 0xef, 0x01, 0x7c, 0xff, 0x31, 0x01, 0x2b, 0x03, 0x08, 0x03, 0xbb, 0x00, + 0xf3, 0x00, 0x06, 0x01, 0x9d, 0xff, 0x2d, 0xff, 0xc4, 0xfb, 0x9a, 0xfb, 0x9b, 0xf8, 0x86, 0xf4, + 0xb8, 0xf5, 0x85, 0xf4, 0xd3, 0xf4, 0xa0, 0xf5, 0xd2, 0xf7, 0x47, 0xfa, 0x1b, 0xfb, 0xa6, 0xfc, + 0x0f, 0xfc, 0x2e, 0xf9, 0xf4, 0xf9, 0xb0, 0xfd, 0x38, 0xff, 0xa6, 0x00, 0xb6, 0x02, 0x94, 0x06, + 0x1d, 0x0a, 0x74, 0x09, 0x8e, 0x07, 0x0a, 0x09, 0x4c, 0x09, 0xb9, 0x08, 0xcd, 0x0a, 0x62, 0x0c, + 0x69, 0x0e, 0x43, 0x10, 0xb7, 0x10, 0xc2, 0x0d, 0x16, 0x0c, 0xf0, 0x0a, 0x82, 0x09, 0xbb, 0x09, + 0xcf, 0x09, 0x53, 0x0b, 0xf1, 0x0d, 0xa6, 0x0e, 0x62, 0x11, 0x08, 0x13, 0x53, 0x11, 0xc7, 0x10, + 0x42, 0x0f, 0xa7, 0x0e, 0xd6, 0x0d, 0xb4, 0x0f, 0xaa, 0x10, 0x7e, 0x12, 0x53, 0x15, 0xb9, 0x12, + 0x4e, 0x10, 0x91, 0x0d, 0xe2, 0x0a, 0xaa, 0x08, 0x06, 0x05, 0x4b, 0x02, 0xef, 0xff, 0xdd, 0xfb, + 0x73, 0xf8, 0xba, 0xf3, 0x7d, 0xef, 0xf4, 0xeb, 0x78, 0xe6, 0xde, 0xe3, 0xcf, 0xdf, 0x40, 0xdf, + 0xe2, 0xe0, 0xec, 0xe0, 0x51, 0xdd, 0xb3, 0xdb, 0x3f, 0xde, 0x55, 0xdc, 0x29, 0xdc, 0xf0, 0xd9, + 0xba, 0xda, 0x30, 0xdc, 0xe5, 0xda, 0xf9, 0xdc, 0xa7, 0xe0, 0x39, 0xe3, 0x49, 0xe3, 0x83, 0xe3, + 0xd9, 0xe4, 0x8c, 0xe3, 0x02, 0xe6, 0xc3, 0xe6, 0xb7, 0xe6, 0x6c, 0xe8, 0xa2, 0xeb, 0xe0, 0xee, + 0x51, 0xee, 0x9d, 0xef, 0xeb, 0xef, 0x2e, 0xf2, 0x9b, 0xf3, 0x3a, 0xf8, 0x14, 0x00, 0x83, 0x03, + 0x3c, 0x09, 0x4d, 0x10, 0xea, 0x16, 0x9b, 0x1b, 0xc4, 0x1d, 0xe7, 0x1f, 0x75, 0x21, 0xef, 0x20, + 0x6a, 0x21, 0xb6, 0x21, 0x19, 0x21, 0x8a, 0x24, 0x90, 0x24, 0x1b, 0x23, 0x84, 0x1f, 0xea, 0x1b, + 0x86, 0x1a, 0xa9, 0x15, 0x26, 0x12, 0xea, 0x11, 0x79, 0x11, 0xd1, 0x0f, 0x26, 0x10, 0xd1, 0x0f, + 0x4a, 0x0e, 0x4b, 0x0d, 0x2f, 0x0c, 0x85, 0x07, 0x46, 0x04, 0xa7, 0x04, 0x7e, 0x06, 0x04, 0x08, + 0x10, 0x08, 0x53, 0x06, 0xc3, 0x06, 0xee, 0x04, 0x6e, 0x01, 0x0e, 0x02, 0xb2, 0x00, 0x80, 0xfe, + 0x2d, 0xfc, 0xe3, 0xfa, 0xc1, 0xf8, 0x33, 0xf6, 0x3e, 0xf5, 0x99, 0xf0, 0xd0, 0xed, 0x84, 0xec, + 0x5d, 0xe9, 0x84, 0xe6, 0x62, 0xe4, 0xb1, 0xe5, 0x2d, 0xe6, 0x57, 0xe7, 0xa5, 0xea, 0xe7, 0xeb, + 0x8e, 0xeb, 0x8f, 0xeb, 0x4b, 0xeb, 0x65, 0xee, 0xa6, 0xf0, 0x49, 0xf1, 0x94, 0xf4, 0x35, 0xf8, + 0xcc, 0xfb, 0x37, 0xff, 0xb1, 0xfe, 0xa0, 0xfc, 0xe2, 0xfe, 0x85, 0xfe, 0x65, 0x00, 0xc9, 0x01, + 0x41, 0x03, 0xd1, 0x07, 0xd9, 0x06, 0x77, 0x07, 0xf6, 0x08, 0x23, 0x09, 0x87, 0x08, 0xa5, 0x07, + 0x69, 0x09, 0xdf, 0x09, 0x7a, 0x0e, 0xd1, 0x14, 0x03, 0x17, 0xa8, 0x17, 0x31, 0x18, 0x84, 0x1b, + 0x37, 0x1b, 0xfb, 0x18, 0x90, 0x18, 0x29, 0x1a, 0x75, 0x1b, 0xa4, 0x1a, 0x84, 0x1f, 0x1f, 0x21, + 0xfb, 0x1e, 0x63, 0x1c, 0xbc, 0x19, 0xdf, 0x16, 0x6c, 0x12, 0x32, 0x10, 0xc4, 0x0e, 0x37, 0x0b, + 0xc6, 0x07, 0x4a, 0x05, 0x53, 0xfe, 0x6f, 0xfb, 0xb6, 0xf8, 0x71, 0xf3, 0x1e, 0xef, 0x49, 0xeb, + 0xbd, 0xec, 0x1b, 0xee, 0xbe, 0xec, 0xcb, 0xe9, 0x44, 0xeb, 0x91, 0xeb, 0x84, 0xe9, 0x11, 0xeb, + 0xc1, 0xea, 0x16, 0xeb, 0xa9, 0xea, 0xac, 0xe9, 0x43, 0xea, 0x46, 0xeb, 0x3e, 0xee, 0x33, 0xf0, + 0x09, 0xf0, 0x50, 0xef, 0x8d, 0xee, 0xfa, 0xee, 0xb6, 0xec, 0xc7, 0xed, 0x04, 0xef, 0x28, 0xf1, + 0x43, 0xf3, 0xfc, 0xf2, 0xee, 0xf4, 0x1a, 0xf5, 0x36, 0xf8, 0x1d, 0xfa, 0x1f, 0xfa, 0xb1, 0xfd, + 0xaa, 0x03, 0xe0, 0x09, 0xca, 0x0d, 0x9b, 0x11, 0x78, 0x15, 0xee, 0x16, 0x44, 0x18, 0x60, 0x18, + 0xb2, 0x16, 0xcf, 0x14, 0xfe, 0x12, 0xaf, 0x13, 0xe8, 0x14, 0xc7, 0x12, 0xbe, 0x10, 0x54, 0x0d, + 0xa5, 0x08, 0x24, 0x06, 0xe4, 0x02, 0x28, 0xfd, 0xdc, 0xfb, 0x56, 0xfc, 0xd3, 0xfa, 0xe3, 0xfa, + 0x11, 0xf9, 0xa1, 0xf9, 0x22, 0xfa, 0x36, 0xf6, 0xd7, 0xf2, 0x5a, 0xf2, 0x69, 0xf4, 0x01, 0xf6, + 0x5d, 0xf7, 0xe5, 0xf8, 0xba, 0xf9, 0x4c, 0xfb, 0xcd, 0xfb, 0xc3, 0xf9, 0xe1, 0xf6, 0xa9, 0xf7, + 0x6f, 0xf8, 0xc0, 0xf8, 0x85, 0xf8, 0x12, 0xf7, 0xe3, 0xf6, 0x04, 0xf4, 0x62, 0xf2, 0xbb, 0xf2, + 0xf9, 0xf1, 0x25, 0xf0, 0x4f, 0xee, 0x3f, 0xef, 0xa5, 0xf0, 0x12, 0xf4, 0x60, 0xf9, 0x33, 0xfb, + 0xe7, 0xf9, 0x4d, 0xfb, 0x6d, 0xfc, 0x0a, 0xfc, 0x24, 0xfe, 0x32, 0xfe, 0x1c, 0x01, 0xe7, 0x02, + 0x71, 0x06, 0xac, 0x0a, 0xce, 0x0b, 0xe0, 0x09, 0xc3, 0x08, 0x77, 0x0a, 0x06, 0x08, 0x78, 0x08, + 0x43, 0x0a, 0x00, 0x0d, 0xf6, 0x0f, 0xe5, 0x0f, 0xdf, 0x0e, 0x39, 0x0e, 0x54, 0x0f, 0xfe, 0x0e, + 0xf6, 0x0d, 0x78, 0x0d, 0x8e, 0x0d, 0xff, 0x12, 0x77, 0x15, 0x4b, 0x16, 0x0f, 0x18, 0xb4, 0x19, + 0xbe, 0x1c, 0x18, 0x19, 0x5c, 0x18, 0xe8, 0x17, 0x43, 0x17, 0x1f, 0x19, 0x27, 0x17, 0x87, 0x18, + 0x26, 0x18, 0xc3, 0x17, 0xed, 0x16, 0x50, 0x13, 0x34, 0x0e, 0xb0, 0x08, 0xb3, 0x05, 0x48, 0x04, + 0x5c, 0x01, 0xa2, 0xfe, 0x1f, 0xfb, 0x4d, 0xf6, 0xc3, 0xf4, 0x8e, 0xf1, 0xff, 0xed, 0xbf, 0xeb, + 0xda, 0xe8, 0x43, 0xe7, 0x1f, 0xe9, 0xce, 0xe7, 0x1b, 0xe6, 0x9d, 0xe6, 0x14, 0xe5, 0xbd, 0xe4, + 0x42, 0xe4, 0x1f, 0xe3, 0x0c, 0xe4, 0x3f, 0xe2, 0x93, 0xe0, 0xf0, 0xe0, 0x12, 0xe2, 0x35, 0xe5, + 0x68, 0xe4, 0x90, 0xe4, 0xc9, 0xe5, 0xfb, 0xe6, 0x5d, 0xe7, 0xee, 0xe5, 0xcb, 0xe6, 0x98, 0xe8, + 0x7b, 0xed, 0x79, 0xf0, 0xc0, 0xf1, 0x2f, 0xf4, 0x00, 0xf8, 0x80, 0xfc, 0x62, 0xfc, 0x3e, 0xfe, + 0xbf, 0x05, 0x9a, 0x0d, 0xde, 0x12, 0xc9, 0x17, 0x62, 0x1d, 0x9f, 0x22, 0x91, 0x26, 0x2b, 0x29, + 0xc5, 0x27, 0xf9, 0x24, 0x76, 0x24, 0x83, 0x23, 0xc2, 0x25, 0x78, 0x24, 0xc2, 0x22, 0xb8, 0x21, + 0x49, 0x1d, 0xfe, 0x19, 0x37, 0x17, 0xa0, 0x13, 0xe1, 0x0d, 0x62, 0x0d, 0xc8, 0x0c, 0x15, 0x0d, + 0x28, 0x0e, 0x60, 0x0d, 0xbf, 0x0e, 0x2c, 0x0c, 0xad, 0x07, 0xb8, 0x03, 0x33, 0x02, 0xea, 0x02, + 0xc7, 0x01, 0x6f, 0x02, 0xe7, 0x02, 0x27, 0x03, 0x56, 0x03, 0xdc, 0x00, 0x38, 0xfc, 0x0d, 0xf7, + 0x39, 0xf7, 0x74, 0xf4, 0xc0, 0xf0, 0x37, 0xf1, 0xca, 0xee, 0x3f, 0xec, 0x0d, 0xe8, 0x6d, 0xe4, + 0xfe, 0xe2, 0x5b, 0xe2, 0x52, 0xe0, 0x4e, 0xde, 0x49, 0xdd, 0x77, 0xdd, 0x9e, 0xe1, 0x85, 0xe4, + 0xc6, 0xe5, 0x90, 0xe6, 0x43, 0xe9, 0x99, 0xea, 0xc8, 0xe9, 0xb2, 0xeb, 0xe6, 0xed, 0xf0, 0xf1, + 0x95, 0xf4, 0xf9, 0xf5, 0x96, 0xf8, 0xd0, 0xf9, 0x7b, 0xf9, 0x2c, 0xfc, 0x25, 0xfa, 0x62, 0xf7, + 0xa6, 0xf8, 0x53, 0xfa, 0x0e, 0xfe, 0xf8, 0x00, 0x40, 0x00, 0xfb, 0x00, 0x91, 0x01, 0x61, 0x04, + 0xff, 0x06, 0x5e, 0x06, 0x10, 0x08, 0xb8, 0x09, 0x92, 0x0d, 0xc8, 0x0f, 0x4e, 0x13, 0xef, 0x16, + 0x26, 0x19, 0x5c, 0x19, 0xd8, 0x17, 0x56, 0x19, 0x66, 0x18, 0x65, 0x19, 0xef, 0x19, 0x98, 0x17, + 0xe7, 0x17, 0x77, 0x1a, 0xfc, 0x1a, 0x4c, 0x17, 0x1a, 0x14, 0xa6, 0x10, 0x7b, 0x0c, 0x4c, 0x0a, + 0xde, 0x07, 0x5e, 0x04, 0xfa, 0x02, 0x23, 0x00, 0x75, 0xfe, 0xbd, 0xfb, 0x8b, 0xf7, 0x52, 0xf6, + 0x56, 0xf3, 0xa7, 0xf0, 0x89, 0xef, 0x3c, 0xf3, 0xbe, 0xf2, 0x07, 0xf1, 0x99, 0xf1, 0xfb, 0xf1, + 0x8d, 0xf3, 0xdd, 0xf2, 0xb2, 0xf2, 0xd1, 0xf2, 0xe7, 0xee, 0xe2, 0xed, 0x60, 0xef, 0x25, 0xf0, + 0xa5, 0xef, 0x22, 0xf0, 0x3a, 0xf2, 0xf8, 0xf2, 0xdc, 0xf2, 0x80, 0xf0, 0xc8, 0xef, 0xa8, 0xee, + 0x57, 0xf1, 0x0a, 0xf7, 0x88, 0xf8, 0x67, 0xfb, 0xac, 0xfe, 0xf6, 0x00, 0xd3, 0x00, 0xf3, 0xfe, + 0x85, 0x02, 0x3d, 0x09, 0x0c, 0x0d, 0xbc, 0x10, 0xf3, 0x15, 0x25, 0x1a, 0x6f, 0x1e, 0xa9, 0x21, + 0x36, 0x22, 0x7c, 0x1e, 0xc5, 0x1c, 0x26, 0x1c, 0xd3, 0x17, 0x79, 0x17, 0x06, 0x17, 0xd8, 0x16, + 0x1a, 0x15, 0x0d, 0x10, 0x28, 0x0c, 0x80, 0x09, 0xea, 0x05, 0x0d, 0x02, 0x83, 0x00, 0x35, 0xfe, + 0xb4, 0xfe, 0x7a, 0x00, 0x8e, 0x00, 0xac, 0x01, 0xe6, 0xff, 0xb8, 0xfd, 0x98, 0xfa, 0xdb, 0xf7, + 0xbd, 0xf9, 0x5d, 0xfa, 0x3d, 0xfc, 0xf3, 0xfd, 0x6d, 0xfe, 0xe8, 0xfd, 0x59, 0xfc, 0xc7, 0xfb, + 0x63, 0xf9, 0xae, 0xf7, 0xb0, 0xf4, 0x4a, 0xf5, 0xc9, 0xf5, 0xa7, 0xf3, 0x25, 0xf4, 0xf8, 0xf0, + 0xba, 0xed, 0xc9, 0xed, 0xa7, 0xef, 0xbe, 0xee, 0x6c, 0xed, 0x06, 0xef, 0xcb, 0xf1, 0x61, 0xf3, + 0x45, 0xf4, 0xb3, 0xf6, 0xc2, 0xf9, 0xea, 0xfa, 0xe7, 0xf9, 0xe7, 0xf9, 0xa3, 0xf9, 0xa6, 0xfb, + 0xd1, 0xfe, 0x83, 0xff, 0xa2, 0xfe, 0x75, 0x01, 0xe8, 0x03, 0xf1, 0x01, 0xd5, 0xff, 0xce, 0xfd, + 0xa0, 0xfe, 0x50, 0xff, 0xab, 0xff, 0x47, 0x01, 0xca, 0x02, 0xa7, 0x03, 0x08, 0x05, 0xdd, 0x06, + 0xdb, 0x07, 0xe4, 0x07, 0xf0, 0x09, 0x31, 0x0b, 0x63, 0x0b, 0x09, 0x0d, 0x0c, 0x11, 0xf4, 0x13, + 0x01, 0x14, 0x0d, 0x18, 0x90, 0x18, 0x57, 0x18, 0x3f, 0x18, 0x71, 0x15, 0x26, 0x14, 0xbb, 0x11, + 0x6d, 0x10, 0x8e, 0x13, 0x1c, 0x14, 0x35, 0x11, 0x73, 0x0f, 0x80, 0x0b, 0xb3, 0x07, 0x9e, 0x03, + 0x25, 0x00, 0x79, 0xfc, 0xf6, 0xf7, 0xc8, 0xf8, 0x8a, 0xf8, 0x5c, 0xf6, 0x9b, 0xf4, 0x61, 0xf3, + 0x5b, 0xf0, 0xfa, 0xea, 0xa8, 0xe8, 0xb1, 0xe9, 0x03, 0xeb, 0x68, 0xe8, 0xb2, 0xe7, 0x55, 0xe7, + 0x67, 0xe7, 0x81, 0xe8, 0xdc, 0xe5, 0x80, 0xe4, 0xc4, 0xe2, 0xe8, 0xe0, 0x82, 0xe0, 0xad, 0xdc, + 0x38, 0xdd, 0xb4, 0xde, 0xa7, 0xe1, 0x60, 0xe4, 0x3a, 0xe3, 0x60, 0xe3, 0x1c, 0xe2, 0x99, 0xe3, + 0x88, 0xe5, 0x7e, 0xe8, 0xb8, 0xeb, 0x35, 0xef, 0xaa, 0xf5, 0x78, 0xf8, 0x23, 0xfb, 0x74, 0xfe, + 0x2d, 0x00, 0xf6, 0x03, 0x9f, 0x09, 0x9f, 0x0f, 0x87, 0x15, 0x27, 0x1c, 0xdf, 0x20, 0x68, 0x25, + 0x90, 0x27, 0xe2, 0x29, 0x7d, 0x2b, 0xda, 0x29, 0x73, 0x26, 0xe2, 0x23, 0x92, 0x23, 0xf5, 0x22, + 0x8a, 0x23, 0x60, 0x22, 0x97, 0x1d, 0x20, 0x18, 0xae, 0x17, 0x3a, 0x16, 0x65, 0x12, 0x8e, 0x10, + 0xd8, 0x10, 0xfd, 0x11, 0xb7, 0x11, 0xb3, 0x11, 0xf4, 0x13, 0xb0, 0x12, 0xb2, 0x0e, 0xc2, 0x09, + 0xa4, 0x06, 0x56, 0x07, 0x0d, 0x07, 0x20, 0x08, 0x63, 0x08, 0x7e, 0x06, 0xd5, 0x05, 0x96, 0x04, + 0xb4, 0xff, 0xed, 0xfa, 0x04, 0xfa, 0x30, 0xf8, 0xcc, 0xf7, 0x94, 0xf5, 0x4e, 0xf3, 0x5e, 0xf2, + 0x38, 0xef, 0x6c, 0xed, 0x7f, 0xed, 0x8b, 0xeb, 0x67, 0xea, 0x72, 0xeb, 0x26, 0xec, 0x45, 0xed, + 0x24, 0xed, 0x01, 0xf0, 0x78, 0xf2, 0xd3, 0xf4, 0xa1, 0xf6, 0x74, 0xf7, 0xd6, 0xf7, 0x81, 0xf7, + 0x4d, 0xf9, 0x85, 0xf9, 0xe6, 0xf9, 0x49, 0xfb, 0x7e, 0xff, 0x57, 0xff, 0x4f, 0xfc, 0x62, 0xfb, + 0x7d, 0xfa, 0xa7, 0xfb, 0x68, 0xfb, 0xfd, 0xf8, 0x95, 0xf9, 0x0d, 0xfc, 0x21, 0x00, 0xe0, 0x00, + 0xe7, 0x01, 0x81, 0x05, 0x6b, 0x07, 0xd6, 0x08, 0x12, 0x08, 0x78, 0x08, 0x6c, 0x0a, 0x0b, 0x0d, + 0xa5, 0x0e, 0x5f, 0x10, 0xc7, 0x14, 0x08, 0x14, 0x97, 0x14, 0x27, 0x13, 0x03, 0x10, 0xcd, 0x0e, + 0x76, 0x0d, 0x30, 0x0c, 0x32, 0x0b, 0x58, 0x0b, 0x00, 0x0b, 0xf2, 0x09, 0xa6, 0x06, 0xfa, 0x02, + 0xc9, 0xfe, 0x1f, 0xfb, 0x3f, 0xf9, 0x7b, 0xf7, 0x82, 0xf6, 0x95, 0xf5, 0x82, 0xf5, 0x80, 0xf4, + 0x98, 0xf2, 0xa9, 0xef, 0xb3, 0xed, 0x65, 0xec, 0x63, 0xeb, 0xd2, 0xec, 0x3d, 0xec, 0xe7, 0xec, + 0x22, 0xef, 0x32, 0xef, 0x61, 0xef, 0xae, 0xec, 0xc0, 0xec, 0x3d, 0xee, 0xb9, 0xec, 0x9e, 0xe9, + 0x12, 0xe6, 0xd5, 0xe6, 0x6d, 0xe9, 0xfc, 0xec, 0xaf, 0xed, 0x64, 0xeb, 0x08, 0xea, 0x4c, 0xeb, + 0xd2, 0xed, 0xd4, 0xed, 0x8d, 0xf1, 0xd7, 0xf5, 0x02, 0xfa, 0x02, 0xfe, 0x3a, 0xfe, 0xf5, 0x01, + 0x09, 0x04, 0xf2, 0x02, 0xa8, 0x05, 0x76, 0x09, 0x3b, 0x0e, 0x0f, 0x13, 0x22, 0x17, 0x44, 0x1b, + 0x06, 0x1d, 0x75, 0x1f, 0xdd, 0x21, 0x1c, 0x1f, 0x48, 0x1c, 0x09, 0x19, 0x88, 0x17, 0x69, 0x15, + 0x73, 0x14, 0xc8, 0x13, 0x9c, 0x12, 0x98, 0x0f, 0x56, 0x0c, 0x23, 0x0b, 0xfb, 0x06, 0x73, 0x03, + 0x58, 0x02, 0x3e, 0x03, 0x72, 0x03, 0x56, 0x03, 0xac, 0x04, 0x50, 0x05, 0xc6, 0x04, 0x8f, 0x02, + 0x7e, 0xff, 0xb7, 0xfe, 0x31, 0xfd, 0x4a, 0xfc, 0xdb, 0xfc, 0xe8, 0xfc, 0xaf, 0xfe, 0xfe, 0xfe, + 0x90, 0xfd, 0x70, 0xf8, 0xf2, 0xf5, 0x38, 0xf6, 0xa1, 0xf5, 0x82, 0xf4, 0x24, 0xf1, 0x34, 0xf0, + 0x48, 0xf1, 0x95, 0xf1, 0x35, 0xf1, 0x3f, 0xf2, 0x47, 0xf2, 0x8f, 0xf4, 0xa8, 0xf5, 0x24, 0xf5, + 0xb9, 0xf7, 0x91, 0xf8, 0x4e, 0xfb, 0x65, 0xfd, 0x27, 0x00, 0x71, 0x02, 0xae, 0x02, 0xfb, 0x02, + 0x79, 0x03, 0xa3, 0x02, 0xba, 0x02, 0xed, 0x03, 0xac, 0x03, 0xda, 0x04, 0x77, 0x05, 0xbf, 0x03, + 0xff, 0x03, 0x4f, 0x03, 0xbb, 0x02, 0x87, 0x02, 0xa6, 0x01, 0x15, 0x04, 0xb3, 0x06, 0x60, 0x09, + 0x04, 0x09, 0x0d, 0x0c, 0x7d, 0x10, 0x50, 0x12, 0x28, 0x14, 0x03, 0x14, 0x1f, 0x14, 0x34, 0x14, + 0x7d, 0x17, 0x01, 0x1b, 0x2d, 0x1e, 0x77, 0x20, 0x3a, 0x1f, 0x66, 0x1f, 0x5d, 0x1c, 0xc6, 0x19, + 0xeb, 0x19, 0x12, 0x17, 0xc9, 0x12, 0x9e, 0x10, 0x12, 0x11, 0x03, 0x12, 0x1b, 0x0f, 0xd4, 0x09, + 0x5b, 0x05, 0x59, 0xff, 0x51, 0xfc, 0x3e, 0xfb, 0x0d, 0xf9, 0x5d, 0xf8, 0x64, 0xf9, 0xbf, 0xf8, + 0x32, 0xf6, 0xb8, 0xf3, 0x1f, 0xf2, 0x20, 0xf0, 0xd8, 0xeb, 0xe0, 0xe9, 0xf2, 0xe9, 0x24, 0xe9, + 0x38, 0xe9, 0xef, 0xe9, 0x98, 0xe9, 0xa4, 0xe6, 0x5a, 0xe3, 0xb7, 0xe1, 0xcf, 0xdf, 0x10, 0xde, + 0x38, 0xda, 0x7d, 0xd7, 0xe3, 0xd7, 0x68, 0xd8, 0x60, 0xdb, 0x19, 0xdc, 0x23, 0xdb, 0x6e, 0xdc, + 0x2c, 0xdd, 0x8d, 0xdd, 0xd4, 0xde, 0xfd, 0xe3, 0x1a, 0xe9, 0x6e, 0xed, 0xf9, 0xf0, 0x80, 0xf3, + 0x84, 0xf7, 0x0e, 0xfb, 0xd0, 0xfd, 0xa3, 0x02, 0xef, 0x06, 0x37, 0x0b, 0x64, 0x10, 0xaf, 0x13, + 0x3d, 0x19, 0x16, 0x1e, 0x9e, 0x21, 0xbc, 0x22, 0x32, 0x20, 0x4f, 0x1f, 0x84, 0x1e, 0xbe, 0x1b, + 0x38, 0x18, 0x69, 0x17, 0x67, 0x15, 0x8f, 0x16, 0x1e, 0x16, 0xab, 0x12, 0x53, 0x12, 0x43, 0x0f, + 0x1e, 0x0d, 0x15, 0x0c, 0x88, 0x0b, 0xdf, 0x0d, 0x76, 0x0d, 0x06, 0x0d, 0x66, 0x0d, 0x92, 0x0d, + 0x6f, 0x0c, 0xbf, 0x07, 0x6d, 0x05, 0x08, 0x03, 0x9d, 0x01, 0x90, 0x01, 0x70, 0x02, 0x25, 0x02, + 0x72, 0xff, 0x76, 0xfd, 0x9e, 0xf9, 0x93, 0xf8, 0x2e, 0xf6, 0xd9, 0xf4, 0x7e, 0xf2, 0x14, 0xef, + 0xd1, 0xef, 0xcc, 0xf0, 0x83, 0xef, 0x63, 0xed, 0x92, 0xed, 0xef, 0xee, 0x6a, 0xf0, 0x22, 0xf0, + 0x6d, 0xf1, 0xd9, 0xf1, 0x9e, 0xf1, 0x71, 0xf5, 0x18, 0xf9, 0x2f, 0xfc, 0x73, 0xfd, 0xd1, 0xfe, + 0xa0, 0xfe, 0x3d, 0xfd, 0x6b, 0xfd, 0x5f, 0x00, 0x7c, 0x00, 0x48, 0xfe, 0xf7, 0xfe, 0xf4, 0x00, + 0x3d, 0x00, 0x85, 0xff, 0xc4, 0xfd, 0xd1, 0xfb, 0x0e, 0xfb, 0x15, 0xfb, 0xfa, 0xfc, 0x48, 0x00, + 0xc0, 0x03, 0x92, 0x05, 0xec, 0x08, 0x2a, 0x0b, 0xe6, 0x0d, 0xc7, 0x0f, 0xc4, 0x0e, 0x4a, 0x0e, + 0xd2, 0x0e, 0xbc, 0x11, 0x56, 0x14, 0xed, 0x16, 0x51, 0x19, 0x1c, 0x19, 0xdd, 0x17, 0xf2, 0x15, + 0x91, 0x13, 0x86, 0x11, 0x58, 0x0e, 0xb7, 0x0c, 0xac, 0x0c, 0x4d, 0x0c, 0x6a, 0x0c, 0xea, 0x09, + 0x05, 0x07, 0xd4, 0x04, 0x0b, 0x01, 0x9c, 0xfe, 0xa2, 0xfb, 0xf0, 0xf9, 0x68, 0xfb, 0x0b, 0xfd, + 0x10, 0xfc, 0x50, 0xfb, 0xc8, 0xf8, 0x5e, 0xf7, 0x69, 0xf7, 0x9f, 0xf4, 0x91, 0xf4, 0x54, 0xf4, + 0x5e, 0xf3, 0xf8, 0xf4, 0x16, 0xf4, 0xf1, 0xf4, 0x0a, 0xf5, 0x7b, 0xf2, 0xf8, 0xef, 0x8c, 0xee, + 0x8f, 0xee, 0xe5, 0xeb, 0xaa, 0xe9, 0x53, 0xe8, 0x3b, 0xe7, 0xf0, 0xe8, 0x7b, 0xea, 0x74, 0xec, + 0x1d, 0xed, 0xf7, 0xee, 0x81, 0xef, 0xba, 0xf1, 0x27, 0xf6, 0x33, 0xf9, 0x7f, 0xfd, 0x59, 0xff, + 0x18, 0x01, 0x46, 0x04, 0x79, 0x06, 0xfe, 0x07, 0xee, 0x09, 0xb4, 0x0c, 0xab, 0x0f, 0x53, 0x11, + 0xc1, 0x13, 0x29, 0x19, 0x16, 0x1a, 0xd1, 0x1b, 0xbf, 0x1c, 0xee, 0x1a, 0x13, 0x19, 0x15, 0x16, + 0x79, 0x12, 0xbf, 0x0f, 0xbb, 0x0d, 0xc9, 0x0c, 0x21, 0x0e, 0x75, 0x0b, 0x37, 0x07, 0x99, 0x07, + 0xc1, 0x05, 0x0a, 0x03, 0x79, 0x01, 0x19, 0x00, 0x1f, 0x00, 0x8c, 0xff, 0x84, 0x00, 0x05, 0x02, + 0xef, 0x02, 0x43, 0x01, 0x1f, 0xfd, 0x46, 0xf9, 0xcd, 0xf5, 0xa8, 0xf7, 0x83, 0xf7, 0xfe, 0xf6, + 0xda, 0xf5, 0x19, 0xf4, 0xc5, 0xf4, 0xf5, 0xf2, 0x98, 0xf0, 0x54, 0xed, 0xe2, 0xe9, 0x29, 0xe8, + 0xde, 0xe7, 0xe8, 0xe9, 0x87, 0xec, 0x56, 0xec, 0x79, 0xec, 0xea, 0xed, 0x3b, 0xf0, 0x03, 0xf2, + 0x64, 0xf1, 0xbe, 0xf2, 0x9c, 0xf2, 0x90, 0xf3, 0x07, 0xf7, 0x0a, 0xfa, 0xd7, 0xfc, 0x93, 0xff, + 0x49, 0xff, 0xae, 0xfe, 0x70, 0xfe, 0x43, 0xfd, 0xfa, 0xfe, 0x4d, 0xfe, 0x2b, 0xfc, 0x20, 0xfe, + 0x97, 0xfe, 0xf7, 0xfe, 0x78, 0xfe, 0xe5, 0xfc, 0x0b, 0xfe, 0xc3, 0xfd, 0x50, 0xfd, 0xd1, 0xfe, + 0x85, 0x02, 0x53, 0x07, 0x2f, 0x0a, 0xa7, 0x0d, 0xf4, 0x0f, 0x93, 0x12, 0x01, 0x14, 0xdf, 0x15, + 0x79, 0x16, 0x1d, 0x18, 0x78, 0x1a, 0xd0, 0x1c, 0x86, 0x1f, 0x5e, 0x20, 0x76, 0x22, 0x86, 0x22, + 0x22, 0x1f, 0x6b, 0x1b, 0x45, 0x18, 0xc4, 0x16, 0xfa, 0x14, 0xe3, 0x12, 0xc0, 0x10, 0x32, 0x0f, + 0xee, 0x0a, 0x9b, 0x09, 0xe8, 0x08, 0x8a, 0x04, 0xda, 0x00, 0x25, 0xfe, 0x17, 0xfe, 0xb0, 0xfe, + 0x94, 0xff, 0x0b, 0xfe, 0x3d, 0xfc, 0x74, 0xf9, 0x7a, 0xf7, 0xe9, 0xf6, 0x25, 0xf3, 0x2d, 0xf1, + 0x30, 0xf1, 0x6a, 0xf0, 0x06, 0xf0, 0x65, 0xee, 0xb7, 0xed, 0xe2, 0xeb, 0xcf, 0xe7, 0x7f, 0xe4, + 0x06, 0xe3, 0x7c, 0xe1, 0x15, 0xde, 0x2f, 0xdc, 0x7b, 0xd9, 0x8e, 0xd9, 0x9d, 0xdb, 0x01, 0xdd, + 0xce, 0xde, 0x7d, 0xde, 0xfe, 0xe0, 0x4b, 0xe4, 0xa4, 0xe7, 0xe5, 0xea, 0x5c, 0xed, 0x0f, 0xf2, + 0xc1, 0xf5, 0xcc, 0xf9, 0x59, 0xff, 0xd6, 0x03, 0x57, 0x06, 0x66, 0x08, 0x7b, 0x0a, 0x90, 0x0f, + 0x2b, 0x13, 0x2d, 0x17, 0xe1, 0x1b, 0x27, 0x1e, 0xb6, 0x21, 0x57, 0x24, 0x9d, 0x23, 0xfe, 0x20, + 0x38, 0x1e, 0x83, 0x19, 0xa2, 0x17, 0xb2, 0x16, 0x42, 0x18, 0x6e, 0x19, 0x15, 0x17, 0x32, 0x16, + 0x14, 0x16, 0x4e, 0x13, 0xc7, 0x10, 0x0a, 0x0e, 0x9b, 0x0d, 0xfb, 0x0d, 0x56, 0x0d, 0xc6, 0x0e, + 0x79, 0x0f, 0x23, 0x10, 0xee, 0x0e, 0x91, 0x0a, 0x9f, 0x05, 0x8e, 0x02, 0xae, 0x01, 0x6d, 0x00, + 0x99, 0xff, 0x66, 0xfd, 0xb9, 0xfc, 0x9e, 0xfb, 0x7b, 0xf9, 0xe3, 0xf6, 0x88, 0xf3, 0xe3, 0xf0, + 0x7f, 0xef, 0x49, 0xee, 0xb9, 0xec, 0x93, 0xed, 0xe7, 0xee, 0x98, 0xf0, 0x78, 0xf0, 0x2a, 0xf1, + 0x1b, 0xf1, 0x8f, 0xf0, 0x81, 0xf2, 0x61, 0xf3, 0xe9, 0xf5, 0x46, 0xf7, 0xb1, 0xf8, 0xf1, 0xfa, + 0x1d, 0xfd, 0x6c, 0xfe, 0xa7, 0xfe, 0xdb, 0xfd, 0x63, 0xfb, 0x7e, 0xfb, 0x38, 0xfc, 0x16, 0xfb, + 0x0a, 0xfc, 0x25, 0xfb, 0xc8, 0xf9, 0x04, 0xf8, 0xa7, 0xf7, 0x28, 0xf9, 0x37, 0xf8, 0x9e, 0xf6, + 0xad, 0xf7, 0x17, 0xfc, 0x3f, 0xff, 0x3c, 0x02, 0x85, 0x04, 0x5a, 0x06, 0x0a, 0x09, 0x2c, 0x08, + 0xba, 0x0a, 0xe0, 0x0a, 0xc1, 0x0a, 0xcf, 0x0d, 0x63, 0x0f, 0x88, 0x10, 0xd5, 0x11, 0xcb, 0x12, + 0x63, 0x12, 0xd1, 0x0f, 0xa7, 0x0b, 0x2b, 0x0a, 0x9c, 0x08, 0xe3, 0x06, 0xe2, 0x05, 0x05, 0x04, + 0xc1, 0x03, 0x5b, 0x02, 0xa6, 0x02, 0x48, 0x00, 0x1f, 0xfb, 0xab, 0xf9, 0x86, 0xfa, 0x4a, 0xfb, + 0x43, 0xfb, 0x48, 0xfb, 0x04, 0xfc, 0x38, 0xfb, 0x88, 0xfa, 0xc2, 0xfc, 0xf2, 0xfb, 0xc1, 0xf7, + 0xc4, 0xf6, 0x1f, 0xf6, 0x8a, 0xf6, 0xd8, 0xf6, 0x4c, 0xf6, 0x3a, 0xf6, 0x7c, 0xf4, 0x20, 0xf3, + 0x03, 0xf2, 0x83, 0xf0, 0xbf, 0xef, 0xe5, 0xeb, 0x15, 0xe8, 0x2c, 0xe5, 0xc6, 0xe6, 0xbd, 0xe9, + 0x0d, 0xeb, 0x24, 0xec, 0x39, 0xee, 0xca, 0xf1, 0xb0, 0xf3, 0x36, 0xf5, 0xc4, 0xf7, 0x89, 0xfa, + 0xb9, 0xfc, 0xf1, 0xff, 0xe9, 0x02, 0x3f, 0x06, 0x80, 0x0a, 0x7f, 0x0c, 0x69, 0x0c, 0x85, 0x0c, + 0xa5, 0x0e, 0x8d, 0x0f, 0x85, 0x12, 0xf6, 0x14, 0x36, 0x17, 0x3d, 0x19, 0xdc, 0x19, 0x17, 0x19, + 0x55, 0x16, 0x94, 0x13, 0xd4, 0x0f, 0xa7, 0x0e, 0x1a, 0x0c, 0x94, 0x09, 0xe0, 0x0b, 0xfe, 0x0c, + 0x43, 0x0d, 0xe2, 0x0b, 0xc1, 0x08, 0x00, 0x07, 0xe8, 0x03, 0x79, 0x04, 0xb8, 0x06, 0x42, 0x06, + 0x61, 0x05, 0x12, 0x06, 0x91, 0x07, 0x67, 0x06, 0xde, 0x03, 0xd4, 0xfe, 0xfe, 0xfb, 0xde, 0xf9, + 0x2a, 0xf9, 0x0b, 0xfa, 0x83, 0xf8, 0x8a, 0xf8, 0xfc, 0xf7, 0x78, 0xf5, 0x4a, 0xf2, 0xed, 0xf0, + 0xaa, 0xf0, 0xa9, 0xef, 0xda, 0xed, 0xe3, 0xee, 0x46, 0xf3, 0x19, 0xf5, 0xa6, 0xf6, 0x7b, 0xf7, + 0xb9, 0xf8, 0xec, 0xf7, 0x32, 0xf8, 0x08, 0xfb, 0x99, 0xfb, 0x9c, 0xfc, 0x93, 0xfe, 0xa0, 0x00, + 0x38, 0x02, 0xae, 0x02, 0xb8, 0x03, 0x49, 0x04, 0xee, 0x01, 0x68, 0xff, 0xf9, 0xff, 0x0f, 0x00, + 0xf3, 0xfe, 0xf2, 0xfe, 0x61, 0xfd, 0x1b, 0xfd, 0x01, 0xfd, 0x34, 0xfd, 0x49, 0xfc, 0x38, 0xfb, + 0x22, 0xfd, 0x49, 0xff, 0x6f, 0x02, 0x9c, 0x05, 0xb2, 0x08, 0x3d, 0x0b, 0xbd, 0x0d, 0x3c, 0x11, + 0x66, 0x13, 0x77, 0x14, 0x0c, 0x14, 0x91, 0x14, 0xa9, 0x16, 0x31, 0x18, 0xbc, 0x19, 0xb4, 0x1a, + 0x1b, 0x1b, 0x51, 0x1a, 0x56, 0x18, 0xc8, 0x14, 0x99, 0x12, 0x39, 0x10, 0x1b, 0x0c, 0x70, 0x07, + 0x0f, 0x06, 0xff, 0x06, 0x8b, 0x06, 0x26, 0x04, 0xcf, 0x01, 0xec, 0xff, 0x85, 0xfd, 0xf1, 0xfc, + 0x68, 0xfc, 0x11, 0xfc, 0xf7, 0xfa, 0x32, 0xfa, 0xa6, 0xfa, 0x6c, 0xf9, 0xc2, 0xf8, 0x68, 0xf8, + 0xbb, 0xf5, 0x48, 0xf2, 0xde, 0xef, 0x5b, 0xef, 0xcd, 0xee, 0x02, 0xed, 0xb0, 0xeb, 0x6e, 0xea, + 0x16, 0xe8, 0x1f, 0xe5, 0xe0, 0xe3, 0x4e, 0xe1, 0x3d, 0xde, 0xf9, 0xdb, 0x47, 0xda, 0x5f, 0xda, + 0xe5, 0xd8, 0xa3, 0xdc, 0xcd, 0xe0, 0xd1, 0xe3, 0xb7, 0xe6, 0xaf, 0xe7, 0x6a, 0xe9, 0x0a, 0xec, + 0x71, 0xf0, 0x0c, 0xf6, 0x45, 0xfa, 0x53, 0xfc, 0x4b, 0x01, 0x06, 0x05, 0x0e, 0x08, 0x97, 0x09, + 0x72, 0x0a, 0x2e, 0x0c, 0x50, 0x0c, 0x98, 0x0f, 0xfa, 0x13, 0x7e, 0x18, 0x70, 0x1b, 0x71, 0x1b, + 0x1d, 0x19, 0x1b, 0x16, 0x93, 0x14, 0xb7, 0x13, 0x6b, 0x11, 0x0a, 0x0f, 0xbc, 0x0f, 0xbb, 0x12, + 0x26, 0x14, 0xcb, 0x13, 0x8a, 0x11, 0xdc, 0x0e, 0x49, 0x0b, 0x69, 0x08, 0x80, 0x09, 0x67, 0x08, + 0xda, 0x09, 0x11, 0x0b, 0xc8, 0x0a, 0x03, 0x0b, 0x24, 0x08, 0xb1, 0x05, 0x2d, 0x01, 0x18, 0xfd, + 0x2e, 0xfa, 0x9f, 0xf8, 0xf5, 0xf7, 0xb7, 0xf7, 0x1b, 0xf8, 0x66, 0xf7, 0xa3, 0xf5, 0xb5, 0xf4, + 0xde, 0xf1, 0xd9, 0xee, 0xad, 0xee, 0x34, 0xef, 0xd1, 0xf0, 0x86, 0xf3, 0x3b, 0xf5, 0x1f, 0xf6, + 0x9a, 0xf6, 0x83, 0xf8, 0x62, 0xfa, 0xb6, 0xfb, 0x10, 0xfc, 0x96, 0xfc, 0xcd, 0xfd, 0x64, 0x00, + 0xcb, 0x01, 0x75, 0x03, 0x43, 0x05, 0xe2, 0x05, 0xb6, 0x05, 0x80, 0x04, 0xac, 0x02, 0x9f, 0x03, + 0x04, 0x03, 0xad, 0xff, 0x86, 0xfd, 0x30, 0xfe, 0xe0, 0x00, 0xa1, 0x00, 0x6a, 0x00, 0x9d, 0x00, + 0x97, 0x00, 0xfe, 0x00, 0x29, 0x01, 0xeb, 0x02, 0x15, 0x06, 0xe9, 0x08, 0x4f, 0x0a, 0xf1, 0x0c, + 0xb0, 0x0d, 0x80, 0x0e, 0xd3, 0x10, 0x94, 0x10, 0xd0, 0x0f, 0xe3, 0x0f, 0xed, 0x10, 0x77, 0x12, + 0x6a, 0x13, 0xa1, 0x12, 0x13, 0x12, 0xd0, 0x0e, 0xe3, 0x0a, 0x0d, 0x09, 0x30, 0x05, 0xb2, 0x03, + 0x2c, 0x01, 0x69, 0x00, 0x1d, 0xff, 0x21, 0xfd, 0x69, 0xfd, 0x4b, 0xfd, 0x73, 0xfc, 0x56, 0xfa, + 0xe1, 0xf8, 0x63, 0xf7, 0x6d, 0xf7, 0x83, 0xf9, 0x23, 0xfc, 0x52, 0xfc, 0x44, 0xfa, 0xf6, 0xfa, + 0x7b, 0xfb, 0xf0, 0xf9, 0x61, 0xf7, 0x5f, 0xf5, 0x14, 0xf5, 0x9d, 0xf2, 0xde, 0xf1, 0x2a, 0xf3, + 0x50, 0xf3, 0xfb, 0xf2, 0xaf, 0xee, 0xb4, 0xeb, 0x6d, 0xe9, 0x81, 0xe8, 0x7e, 0xe7, 0x78, 0xe5, + 0x20, 0xe5, 0x4d, 0xe6, 0xf6, 0xeb, 0x3b, 0xf0, 0xa1, 0xf2, 0xb8, 0xf4, 0xfa, 0xf5, 0xa7, 0xf6, + 0xf3, 0xf8, 0xff, 0xfb, 0xe0, 0xfe, 0xc4, 0x03, 0x03, 0x07, 0x03, 0x0b, 0xb4, 0x0d, 0xfd, 0x0f, + 0xbd, 0x10, 0x84, 0x10, 0x25, 0x0f, 0xeb, 0x0e, 0x36, 0x10, 0xf6, 0x14, 0x75, 0x18, 0x1f, 0x19, + 0xd2, 0x19, 0x2e, 0x18, 0x92, 0x16, 0xc4, 0x13, 0xd8, 0x0f, 0x9d, 0x0d, 0x0d, 0x0d, 0x55, 0x0d, + 0x37, 0x10, 0x43, 0x10, 0xf1, 0x0e, 0xc8, 0x0c, 0xa1, 0x0b, 0x84, 0x0b, 0x9e, 0x08, 0xa3, 0x06, + 0x2c, 0x05, 0xd4, 0x05, 0x0d, 0x06, 0xc4, 0x05, 0x89, 0x05, 0x44, 0x04, 0x77, 0x00, 0x8a, 0xfb, + 0xf6, 0xf7, 0x91, 0xf4, 0x51, 0xf3, 0xde, 0xf0, 0x73, 0xee, 0xda, 0xed, 0xbd, 0xed, 0xd8, 0xed, + 0xa8, 0xec, 0x82, 0xe9, 0x49, 0xe8, 0x06, 0xe9, 0x99, 0xe8, 0xaa, 0xea, 0xd2, 0xec, 0x87, 0xef, + 0xfc, 0xf0, 0x0e, 0xf2, 0xa7, 0xf4, 0xc3, 0xf4, 0x8b, 0xf5, 0x75, 0xf7, 0x69, 0xf9, 0xd6, 0xf9, + 0xd3, 0xf9, 0xdb, 0xfb, 0x17, 0xfe, 0x9c, 0xff, 0x3f, 0xff, 0x97, 0xfe, 0xfb, 0xfd, 0xf5, 0xfb, + 0xcc, 0xfb, 0x48, 0xfb, 0xb5, 0xf9, 0x2a, 0xf8, 0x4f, 0xf9, 0x27, 0xfa, 0xa1, 0xf9, 0x78, 0xfb, + 0xbd, 0xfd, 0xe6, 0xff, 0x02, 0xff, 0x70, 0xfe, 0xea, 0x00, 0x0c, 0x05, 0x4e, 0x0b, 0x50, 0x0f, + 0xaf, 0x11, 0xbc, 0x12, 0x41, 0x15, 0x5b, 0x18, 0xed, 0x17, 0x44, 0x17, 0x12, 0x18, 0x1a, 0x19, + 0xf3, 0x19, 0x96, 0x1b, 0x6a, 0x1c, 0x2b, 0x1d, 0xde, 0x19, 0x6b, 0x15, 0xfc, 0x11, 0x54, 0x0e, + 0xbe, 0x0c, 0x7a, 0x09, 0xd6, 0x07, 0x56, 0x07, 0x59, 0x06, 0xcb, 0x06, 0x6f, 0x07, 0x75, 0x05, + 0x5a, 0x03, 0xdd, 0x00, 0x9b, 0xfe, 0x07, 0xfe, 0x3f, 0xfe, 0x39, 0xfe, 0x3a, 0xff, 0xf3, 0xfe, + 0xab, 0xfe, 0xc8, 0xfd, 0x2d, 0xfb, 0xa5, 0xf8, 0x41, 0xf5, 0x89, 0xf2, 0x94, 0xef, 0x48, 0xee, + 0xa1, 0xed, 0x3b, 0xec, 0x62, 0xeb, 0x44, 0xe7, 0xf2, 0xe3, 0xfe, 0xe1, 0x00, 0xe0, 0xa1, 0xdb, + 0xe8, 0xd8, 0x52, 0xd9, 0xe9, 0xdb, 0xb1, 0xe0, 0xf8, 0xe2, 0xe0, 0xe4, 0xb9, 0xe7, 0x25, 0xeb, + 0xae, 0xee, 0x30, 0xf0, 0xec, 0xf0, 0x18, 0xf5, 0xd3, 0xf9, 0x21, 0xfe, 0x47, 0x02, 0x72, 0x06, + 0x0d, 0x0b, 0x46, 0x0a, 0x4f, 0x09, 0x80, 0x0a, 0x1f, 0x0c, 0xe0, 0x0d, 0x00, 0x12, 0x46, 0x14, + 0xcd, 0x14, 0x22, 0x16, 0xcb, 0x16, 0x7e, 0x16, 0xb0, 0x14, 0x18, 0x12, 0xf3, 0x11, 0x16, 0x12, + 0x4b, 0x13, 0xc4, 0x15, 0xcc, 0x16, 0x7a, 0x15, 0x52, 0x13, 0x7f, 0x13, 0x25, 0x11, 0x78, 0x0f, + 0x79, 0x0e, 0x9c, 0x0d, 0xfb, 0x0d, 0x94, 0x0c, 0xf7, 0x0d, 0xe1, 0x0d, 0x85, 0x0b, 0xeb, 0x07, + 0xee, 0x03, 0xdf, 0xff, 0x6f, 0xfb, 0x8c, 0xf9, 0x23, 0xf8, 0x68, 0xf6, 0x39, 0xf6, 0xa9, 0xf6, + 0x10, 0xf5, 0xb4, 0xf3, 0x59, 0xf2, 0x95, 0xf2, 0xad, 0xf3, 0xec, 0xf1, 0x73, 0xf2, 0x93, 0xf3, + 0x9b, 0xf7, 0xf2, 0xfb, 0xd6, 0xfc, 0xf9, 0xfc, 0x39, 0xfd, 0x60, 0xfe, 0x37, 0x01, 0xa6, 0x01, + 0xa6, 0x00, 0x6a, 0x01, 0x82, 0x01, 0xea, 0x01, 0xa9, 0x04, 0x68, 0x05, 0x39, 0x05, 0xdd, 0x03, + 0xb1, 0xff, 0xbc, 0xfd, 0x95, 0xfb, 0x2e, 0xfa, 0xda, 0xf8, 0x6c, 0xf8, 0xd3, 0xf9, 0x97, 0xfa, + 0x1e, 0xfe, 0x66, 0xff, 0xf7, 0xfe, 0x67, 0xfd, 0x81, 0xfb, 0xf7, 0xfc, 0x87, 0x00, 0x55, 0x04, + 0xbe, 0x06, 0x59, 0x09, 0xba, 0x0a, 0x60, 0x0b, 0x6f, 0x0b, 0x89, 0x0b, 0x6f, 0x0b, 0x4c, 0x0a, + 0x70, 0x0a, 0x0b, 0x0b, 0x22, 0x0b, 0xa1, 0x0a, 0xc2, 0x0a, 0xb2, 0x08, 0x0a, 0x06, 0xd8, 0x02, + 0x97, 0x00, 0xd7, 0xfd, 0x4d, 0xfa, 0x11, 0xf9, 0x75, 0xfa, 0xee, 0xfb, 0x2c, 0xfc, 0xc9, 0xfc, + 0x4c, 0xfb, 0xa3, 0xfa, 0x71, 0xfb, 0x3e, 0xfb, 0x96, 0xfa, 0x5c, 0xfa, 0xd9, 0xfb, 0xac, 0xfe, + 0xd0, 0xfe, 0x14, 0xff, 0x2d, 0x00, 0xe5, 0xfd, 0xfa, 0xf9, 0xc7, 0xf7, 0xb0, 0xf6, 0xca, 0xf4, + 0x4c, 0xf4, 0xa5, 0xf3, 0xf7, 0xf2, 0xeb, 0xf0, 0x59, 0xee, 0xed, 0xec, 0x4f, 0xeb, 0x1e, 0xea, + 0x3b, 0xe7, 0x9f, 0xe7, 0x95, 0xe8, 0x66, 0xea, 0x4b, 0xed, 0x65, 0xf0, 0xd6, 0xf2, 0xc5, 0xf5, + 0x80, 0xf8, 0x5f, 0xf9, 0xdb, 0xfa, 0xb4, 0xfc, 0x3c, 0x00, 0x1f, 0x02, 0xfa, 0x05, 0x34, 0x0a, + 0x7b, 0x0c, 0x7f, 0x0f, 0x74, 0x0e, 0x57, 0x0c, 0xf6, 0x0a, 0x3f, 0x0a, 0x64, 0x0b, 0xbc, 0x0e, + 0xc6, 0x10, 0x0c, 0x12, 0x08, 0x13, 0x83, 0x11, 0x24, 0x10, 0xce, 0x0f, 0x8f, 0x0e, 0x30, 0x0f, + 0xcd, 0x0d, 0x8e, 0x0c, 0x20, 0x0e, 0x7f, 0x10, 0xea, 0x11, 0x18, 0x10, 0xda, 0x0f, 0x2f, 0x0e, + 0x75, 0x0d, 0xa4, 0x0b, 0xdb, 0x09, 0x7f, 0x0a, 0x9c, 0x08, 0x8f, 0x07, 0x4f, 0x06, 0x98, 0x05, + 0x11, 0x04, 0xbd, 0x00, 0x15, 0xfc, 0x13, 0xf6, 0xe2, 0xf1, 0x26, 0xef, 0x89, 0xee, 0x2b, 0xef, + 0x5e, 0xef, 0xad, 0xef, 0xde, 0xef, 0x34, 0xf0, 0x45, 0xf1, 0x2b, 0xf1, 0x8a, 0xf0, 0x5b, 0xf0, + 0x55, 0xf1, 0x50, 0xf5, 0xc9, 0xf7, 0x43, 0xf8, 0x97, 0xfa, 0x73, 0xfc, 0xbb, 0xfc, 0x76, 0xfe, + 0x30, 0xff, 0x94, 0xfe, 0x6b, 0xfe, 0xce, 0xfe, 0x77, 0xff, 0x3f, 0x00, 0x30, 0x00, 0x13, 0x01, + 0xc3, 0x00, 0xdf, 0xfd, 0x61, 0xfc, 0xeb, 0xfa, 0xc3, 0xf8, 0x4d, 0xf6, 0x9d, 0xf6, 0xe3, 0xf9, + 0x2e, 0xfe, 0xef, 0x00, 0xd8, 0x00, 0x57, 0x01, 0x1f, 0x01, 0x2f, 0x02, 0x19, 0x04, 0xd2, 0x06, + 0x20, 0x0b, 0x2e, 0x0f, 0x72, 0x12, 0x68, 0x14, 0x8c, 0x15, 0xf6, 0x15, 0x7e, 0x15, 0x94, 0x14, + 0x3c, 0x15, 0x22, 0x16, 0x18, 0x17, 0x5d, 0x16, 0xdc, 0x15, 0xc9, 0x15, 0x6c, 0x12, 0xa8, 0x10, + 0x18, 0x0d, 0x52, 0x0a, 0x75, 0x07, 0x34, 0x04, 0xcb, 0x03, 0xfa, 0x04, 0x7c, 0x04, 0x51, 0x04, + 0xef, 0x04, 0x98, 0x03, 0x46, 0x02, 0x00, 0x00, 0x9e, 0xfd, 0x7b, 0xfd, 0xac, 0xfc, 0xb6, 0xfc, + 0x2e, 0xfe, 0xd5, 0xfd, 0x62, 0xfd, 0x85, 0xfc, 0x40, 0xfb, 0x06, 0xf7, 0x8b, 0xf2, 0x8f, 0xef, + 0x74, 0xec, 0xa2, 0xec, 0x9d, 0xea, 0xb4, 0xe9, 0xe4, 0xe7, 0xe9, 0xe4, 0x8b, 0xe2, 0x3e, 0xdf, + 0x7f, 0xde, 0x73, 0xde, 0xeb, 0xdd, 0x64, 0xdc, 0xa7, 0xdc, 0xf3, 0xde, 0x3e, 0xe4, 0xb2, 0xe8, + 0x27, 0xeb, 0x50, 0xee, 0x6c, 0xf0, 0x5a, 0xf2, 0xb1, 0xf4, 0xd6, 0xf7, 0x64, 0xfa, 0xc4, 0xfd, + 0x85, 0x01, 0xe3, 0x05, 0x55, 0x0a, 0xdb, 0x0b, 0xc5, 0x09, 0x88, 0x09, 0xde, 0x08, 0x13, 0x09, + 0x12, 0x0c, 0xe3, 0x0e, 0xa9, 0x10, 0x14, 0x12, 0x16, 0x12, 0x19, 0x13, 0x4a, 0x14, 0x30, 0x13, + 0x67, 0x13, 0xdd, 0x11, 0x86, 0x11, 0x7f, 0x12, 0x3b, 0x13, 0xc4, 0x13, 0xec, 0x12, 0xe2, 0x12, + 0x48, 0x11, 0xc3, 0x0f, 0xd8, 0x0c, 0x25, 0x0b, 0x0f, 0x0b, 0x3d, 0x09, 0xa8, 0x07, 0xb8, 0x05, + 0x1e, 0x04, 0x19, 0x02, 0x59, 0xff, 0x4a, 0xfb, 0x1c, 0xf6, 0xc6, 0xf1, 0x60, 0xef, 0xfb, 0xed, + 0xb1, 0xec, 0x2d, 0xed, 0x8d, 0xef, 0x6c, 0xf1, 0x86, 0xf0, 0xeb, 0xf0, 0x69, 0xf0, 0x7d, 0xf1, + 0x8e, 0xf2, 0x40, 0xf3, 0xa4, 0xf6, 0x1f, 0xf9, 0x3b, 0xfb, 0x68, 0xfe, 0x4d, 0x01, 0xa6, 0x01, + 0x21, 0x02, 0xa7, 0x02, 0xd4, 0x01, 0x10, 0x03, 0xaf, 0x03, 0x42, 0x04, 0xdb, 0x05, 0x9b, 0x05, + 0x6d, 0x06, 0x75, 0x05, 0xea, 0x02, 0xa0, 0x01, 0xc9, 0xff, 0xfd, 0xfd, 0x17, 0xfc, 0x59, 0xfe, + 0xe1, 0x01, 0x74, 0x05, 0x88, 0x07, 0xfb, 0x07, 0x18, 0x08, 0xbd, 0x05, 0xa3, 0x05, 0x5b, 0x06, + 0x4d, 0x08, 0x2e, 0x0b, 0x6e, 0x0e, 0x9d, 0x10, 0x17, 0x11, 0x42, 0x11, 0x5f, 0x10, 0x71, 0x10, + 0xef, 0x0e, 0xba, 0x0d, 0xa8, 0x0c, 0x58, 0x0c, 0xca, 0x0b, 0x22, 0x0b, 0x9f, 0x0a, 0x11, 0x09, + 0xa1, 0x07, 0xc4, 0x02, 0x42, 0xff, 0x8a, 0xfe, 0x7f, 0xfd, 0x2b, 0xfc, 0x06, 0xfb, 0xc2, 0xfa, + 0x9f, 0xfc, 0xb4, 0xfe, 0x4c, 0xff, 0x8a, 0xfe, 0x1f, 0xfd, 0x25, 0xfb, 0xf7, 0xfb, 0x59, 0xfc, + 0x68, 0xfc, 0x65, 0xfe, 0x8c, 0xfd, 0x99, 0xfd, 0x4e, 0xfe, 0x96, 0xfe, 0xb3, 0xfb, 0xad, 0xf7, + 0x1e, 0xf5, 0xe1, 0xf2, 0x7f, 0xf1, 0xec, 0xee, 0x2e, 0xef, 0xa2, 0xee, 0x0f, 0xed, 0x5a, 0xeb, + 0x8a, 0xea, 0x7f, 0xeb, 0x56, 0xeb, 0x7d, 0xeb, 0x58, 0xeb, 0x93, 0xeb, 0x9a, 0xec, 0x41, 0xf0, + 0x69, 0xf4, 0x5a, 0xf7, 0xa5, 0xf9, 0xad, 0xfc, 0xf0, 0xfd, 0x6c, 0xfe, 0x78, 0x00, 0x68, 0x02, + 0x33, 0x06, 0xe6, 0x08, 0xc9, 0x0b, 0x1b, 0x0e, 0xb4, 0x0d, 0x41, 0x0c, 0x9d, 0x0c, 0x41, 0x0b, + 0xf9, 0x0a, 0x6b, 0x0c, 0xe5, 0x0c, 0x4d, 0x0d, 0x4a, 0x0f, 0x0a, 0x11, 0x53, 0x12, 0xcb, 0x10, + 0xf5, 0x0e, 0xd8, 0x0f, 0x9d, 0x0f, 0x2a, 0x0f, 0x88, 0x0f, 0x7f, 0x10, 0x1c, 0x10, 0xfb, 0x10, + 0x25, 0x12, 0x1d, 0x11, 0x56, 0x0f, 0x29, 0x0b, 0x5c, 0x09, 0x80, 0x08, 0xf8, 0x06, 0x91, 0x05, + 0x80, 0x03, 0x2d, 0x02, 0x6f, 0x00, 0xb7, 0xfc, 0x65, 0xf7, 0x0c, 0xf2, 0x15, 0xed, 0x70, 0xea, + 0x90, 0xe8, 0x0c, 0xe8, 0x12, 0xea, 0xcf, 0xeb, 0x87, 0xed, 0x23, 0xee, 0x7a, 0xee, 0xd4, 0xec, + 0xf1, 0xec, 0xf3, 0xed, 0x22, 0xee, 0x98, 0xf0, 0x21, 0xf4, 0x21, 0xf6, 0x39, 0xf8, 0xab, 0xf9, + 0x15, 0xfa, 0x2b, 0xfb, 0x26, 0xfc, 0x6b, 0xfb, 0xfd, 0xfa, 0x5a, 0xf9, 0xdc, 0xf9, 0xfe, 0xfb, + 0xfb, 0xfb, 0xb6, 0xfd, 0x58, 0xfd, 0xf2, 0xfa, 0xe9, 0xf7, 0x85, 0xf5, 0xc0, 0xf6, 0x64, 0xf6, + 0xfc, 0xf6, 0x02, 0xf9, 0x5a, 0xfd, 0x14, 0x00, 0x55, 0x01, 0xce, 0x03, 0x92, 0x03, 0xab, 0x03, + 0x7e, 0x04, 0x50, 0x07, 0xf3, 0x0b, 0xbc, 0x0f, 0x05, 0x12, 0x65, 0x13, 0x94, 0x13, 0x16, 0x14, + 0xa4, 0x15, 0x22, 0x15, 0x4b, 0x14, 0x20, 0x14, 0xa0, 0x13, 0x94, 0x11, 0xda, 0x10, 0xae, 0x10, + 0xd5, 0x10, 0xb8, 0x0e, 0xcb, 0x0a, 0x3f, 0x09, 0x3d, 0x09, 0x8b, 0x07, 0x73, 0x06, 0x37, 0x06, + 0x6e, 0x04, 0xb0, 0x04, 0x5f, 0x06, 0x0b, 0x06, 0xde, 0x04, 0x7f, 0x03, 0x8e, 0x01, 0xad, 0x00, + 0x4f, 0xff, 0x57, 0xff, 0x55, 0x00, 0xa3, 0xff, 0x6b, 0xff, 0xcd, 0xfd, 0xe3, 0xfb, 0xb8, 0xf8, + 0x3d, 0xf6, 0xca, 0xf3, 0x57, 0xf1, 0xad, 0xee, 0x4b, 0xec, 0x1d, 0xeb, 0x7f, 0xe9, 0x4c, 0xe9, + 0xab, 0xe8, 0xa4, 0xe6, 0xea, 0xe5, 0xa4, 0xe6, 0x55, 0xe6, 0x32, 0xe6, 0x33, 0xe6, 0xfc, 0xe6, + 0x9d, 0xea, 0xce, 0xed, 0xfa, 0xf1, 0x1f, 0xf6, 0x3d, 0xf9, 0xae, 0xf9, 0xff, 0xf9, 0x20, 0xfb, + 0x45, 0xfd, 0x07, 0x02, 0x4c, 0x05, 0x52, 0x08, 0xab, 0x0b, 0x19, 0x0d, 0xa0, 0x0b, 0x6e, 0x0a, + 0xf7, 0x09, 0x59, 0x09, 0x15, 0x0a, 0xce, 0x0b, 0xed, 0x0e, 0x77, 0x12, 0x69, 0x13, 0x03, 0x16, + 0x3f, 0x16, 0x91, 0x14, 0xba, 0x14, 0x20, 0x14, 0xd4, 0x13, 0x3e, 0x12, 0x33, 0x13, 0x67, 0x14, + 0x06, 0x15, 0x5b, 0x14, 0x6e, 0x12, 0x91, 0x10, 0x2f, 0x0d, 0xf8, 0x0b, 0x85, 0x09, 0x69, 0x06, + 0xbf, 0x03, 0x7d, 0x01, 0xc1, 0x00, 0x6b, 0xff, 0x18, 0xfd, 0xd3, 0xf8, 0xf7, 0xf2, 0x80, 0xec, + 0x70, 0xea, 0xe2, 0xea, 0x16, 0xea, 0xb8, 0xea, 0x76, 0xed, 0x9e, 0xef, 0xd7, 0xf0, 0xa8, 0xf1, + 0xe6, 0xf1, 0x0e, 0xf3, 0xd2, 0xf2, 0x66, 0xf3, 0x87, 0xf7, 0xe4, 0xfb, 0xa4, 0xfd, 0x58, 0xff, + 0x8d, 0x00, 0xb5, 0x01, 0x34, 0x03, 0x8a, 0x04, 0xec, 0x03, 0x86, 0x03, 0xab, 0x02, 0xbe, 0x02, + 0x4f, 0x03, 0x35, 0x03, 0x6c, 0x04, 0x28, 0x03, 0xcf, 0x00, 0x18, 0xff, 0xe8, 0xfd, 0xf8, 0xfd, + 0xc7, 0xfe, 0xbf, 0x00, 0x84, 0x02, 0x33, 0x05, 0x52, 0x06, 0xd4, 0x07, 0x6c, 0x08, 0xbe, 0x07, + 0xf1, 0x07, 0x23, 0x07, 0xc0, 0x07, 0xaa, 0x09, 0x0c, 0x0c, 0x0e, 0x0e, 0x0d, 0x0f, 0x78, 0x0d, + 0x34, 0x0c, 0x8a, 0x0a, 0xdc, 0x08, 0x35, 0x08, 0x84, 0x07, 0x33, 0x07, 0x4e, 0x05, 0x2a, 0x04, + 0xfb, 0x01, 0xd5, 0x01, 0x48, 0x01, 0xd1, 0xfe, 0x24, 0xfd, 0x8a, 0xfc, 0x6b, 0xfb, 0xff, 0xf9, + 0xd0, 0xf9, 0x69, 0xfa, 0x53, 0xfb, 0x08, 0xfc, 0x57, 0xfc, 0xc4, 0xfd, 0xb5, 0xfd, 0x53, 0xfc, + 0x55, 0xfb, 0x4f, 0xf9, 0x76, 0xf9, 0x46, 0xfa, 0xe4, 0xfb, 0x20, 0xfc, 0xfb, 0xfa, 0x30, 0xfb, + 0xc6, 0xf8, 0x10, 0xf6, 0xfe, 0xf1, 0xab, 0xef, 0xdb, 0xec, 0x9d, 0xea, 0xcf, 0xea, 0xa4, 0xea, + 0x10, 0xeb, 0xfd, 0xea, 0xd5, 0xeb, 0xb5, 0xec, 0xf5, 0xec, 0x55, 0xec, 0x05, 0xed, 0xbe, 0xec, + 0x2f, 0xed, 0x13, 0xf1, 0xa5, 0xf4, 0x49, 0xf8, 0x95, 0xfa, 0xfb, 0xfc, 0xb4, 0xfe, 0x3d, 0xff, + 0xc5, 0xff, 0x28, 0x01, 0x27, 0x03, 0x69, 0x05, 0xe2, 0x07, 0x66, 0x0b, 0x8a, 0x0d, 0x63, 0x0d, + 0x8d, 0x0b, 0x49, 0x09, 0xf9, 0x07, 0x00, 0x09, 0x73, 0x0b, 0xe6, 0x0d, 0x65, 0x10, 0xbc, 0x11, + 0xf6, 0x13, 0xff, 0x13, 0x35, 0x14, 0xa6, 0x15, 0x75, 0x14, 0x25, 0x13, 0x3d, 0x12, 0xd1, 0x14, + 0x10, 0x17, 0x80, 0x17, 0x4e, 0x16, 0xac, 0x14, 0x7f, 0x13, 0x86, 0x11, 0x37, 0x10, 0x93, 0x0d, + 0xd6, 0x0a, 0x11, 0x08, 0x58, 0x05, 0xe0, 0x03, 0xdc, 0x01, 0x6c, 0xfe, 0x2c, 0xfa, 0xea, 0xf4, + 0xe0, 0xee, 0xd0, 0xeb, 0xf0, 0xea, 0x42, 0xec, 0xb3, 0xed, 0x3a, 0xef, 0xe8, 0xef, 0x95, 0xf0, + 0x11, 0xf1, 0xf0, 0xf0, 0xf5, 0xf0, 0x3c, 0xf1, 0x19, 0xf2, 0x44, 0xf3, 0x14, 0xf6, 0x76, 0xf7, + 0xac, 0xf8, 0xde, 0xfa, 0x4c, 0xfb, 0x0f, 0xfb, 0x81, 0xfa, 0xd1, 0xf9, 0x0f, 0xfa, 0x07, 0xfa, + 0x5b, 0xfa, 0xf0, 0xf9, 0x80, 0xf9, 0x79, 0xfa, 0x8d, 0xfa, 0xc9, 0xfa, 0xf9, 0xf8, 0x6d, 0xf7, + 0xee, 0xf6, 0x11, 0xf8, 0x0d, 0xf9, 0xbd, 0xfb, 0x32, 0x00, 0x0f, 0x02, 0xd2, 0x03, 0x02, 0x06, + 0x1a, 0x09, 0x09, 0x0b, 0x94, 0x0a, 0x71, 0x0b, 0xaf, 0x0d, 0xf7, 0x10, 0x5a, 0x13, 0x18, 0x16, + 0x1e, 0x15, 0xe9, 0x14, 0x6c, 0x14, 0x17, 0x14, 0xfd, 0x12, 0x51, 0x11, 0x57, 0x0f, 0x06, 0x0e, + 0x6a, 0x0d, 0x21, 0x0c, 0xd2, 0x0b, 0xb4, 0x0b, 0x2c, 0x0b, 0x85, 0x0a, 0xc2, 0x09, 0x8e, 0x07, + 0x71, 0x05, 0x3d, 0x05, 0x8e, 0x05, 0x23, 0x04, 0x54, 0x05, 0x73, 0x06, 0xaa, 0x06, 0xf1, 0x04, + 0x50, 0x02, 0xdc, 0x00, 0xe8, 0xfe, 0x7f, 0xfe, 0x6d, 0xfe, 0x01, 0xfe, 0x19, 0xfc, 0xdc, 0xf9, + 0xa9, 0xfa, 0xaf, 0xf9, 0xb7, 0xf6, 0x56, 0xf2, 0xa5, 0xef, 0xcb, 0xec, 0xd7, 0xeb, 0x57, 0xeb, + 0xe1, 0xea, 0x9f, 0xeb, 0x2a, 0xeb, 0x06, 0xeb, 0x90, 0xea, 0xc4, 0xea, 0x2e, 0xea, 0xeb, 0xe8, + 0xca, 0xe6, 0x2f, 0xe8, 0x0e, 0xec, 0x30, 0xef, 0x71, 0xf1, 0xae, 0xf3, 0xc0, 0xf5, 0xec, 0xf6, + 0x25, 0xf7, 0x4f, 0xf7, 0xb5, 0xf8, 0xef, 0xfa, 0x4c, 0xfd, 0xa0, 0xff, 0xc3, 0x01, 0xea, 0x02, + 0xa5, 0x02, 0x59, 0x01, 0x14, 0x00, 0x31, 0xfe, 0x5c, 0xff, 0xfc, 0x02, 0x6a, 0x07, 0x6e, 0x0b, + 0x1a, 0x0d, 0x12, 0x0e, 0x77, 0x0f, 0x76, 0x10, 0x42, 0x10, 0x21, 0x10, 0x6a, 0x10, 0x60, 0x10, + 0x8f, 0x11, 0x43, 0x12, 0x3f, 0x13, 0xb3, 0x12, 0xcf, 0x12, 0xa9, 0x11, 0x12, 0x0f, 0xf4, 0x0b, + 0x40, 0x08, 0xf5, 0x06, 0xb4, 0x05, 0x07, 0x03, 0x32, 0x00, 0x2b, 0xfe, 0x31, 0xfb, 0x53, 0xf8, + 0x1e, 0xf4, 0x42, 0xef, 0x58, 0xec, 0x77, 0xeb, 0xf1, 0xec, 0x33, 0xee, 0x6c, 0xf0, 0xe0, 0xf2, + 0xf7, 0xf3, 0xa9, 0xf3, 0x38, 0xf4, 0xf2, 0xf5, 0xef, 0xf6, 0xec, 0xf6, 0x8a, 0xf7, 0xd6, 0xf9, + 0x4a, 0xfc, 0xfd, 0xfd, 0xfb, 0x00, 0xe6, 0x01, 0x05, 0x02, 0xa7, 0x02, 0xfa, 0x02, 0x94, 0x02, + 0x8c, 0x00, 0xe0, 0xff, 0xe7, 0xff, 0x8f, 0xff, 0x86, 0xff, 0x57, 0x00, 0x41, 0x02, 0x66, 0x01, + 0x57, 0x02, 0xb2, 0x02, 0x84, 0x03, 0xab, 0x05, 0xf8, 0x07, 0x74, 0x0a, 0x0b, 0x0c, 0xbf, 0x0e, + 0xc1, 0x10, 0x3e, 0x12, 0xf2, 0x10, 0x06, 0x0f, 0x38, 0x0e, 0xc4, 0x0e, 0x7e, 0x10, 0x00, 0x12, + 0x34, 0x11, 0xc7, 0x0d, 0x63, 0x0d, 0xcc, 0x0d, 0x2a, 0x0d, 0x13, 0x0a, 0xb0, 0x06, 0xc5, 0x04, + 0xde, 0x03, 0xef, 0x01, 0x75, 0x00, 0x19, 0xff, 0xfe, 0xfe, 0xa7, 0xfe, 0xae, 0xfd, 0xda, 0xfd, + 0xd8, 0xfd, 0x6e, 0xfc, 0x25, 0xfb, 0x14, 0xfb, 0x52, 0xfc, 0x80, 0xff, 0xf7, 0x00, 0x64, 0x01, + 0xda, 0x00, 0x69, 0xfe, 0x8f, 0xfc, 0xcc, 0xfb, 0x5c, 0xfc, 0x50, 0xfc, 0x1f, 0xfd, 0x2e, 0xfd, + 0x88, 0xfd, 0xc7, 0xfc, 0x2d, 0xfb, 0x5c, 0xf9, 0x18, 0xf6, 0x9f, 0xf2, 0x4c, 0xf0, 0x15, 0xef, + 0x44, 0xef, 0x27, 0xf1, 0x00, 0xf2, 0x07, 0xf2, 0x21, 0xf2, 0x0b, 0xf3, 0x46, 0xf3, 0x29, 0xf2, + 0x58, 0xf2, 0x5b, 0xf2, 0xc2, 0xf3, 0x44, 0xf5, 0x76, 0xf8, 0x83, 0xfb, 0x1b, 0xfd, 0xdc, 0xfe, + 0xe6, 0xff, 0xfb, 0xfd, 0x77, 0xfb, 0xa3, 0xfb, 0xfa, 0xfd, 0x03, 0x01, 0x34, 0x02, 0x82, 0x03, + 0x1b, 0x06, 0x64, 0x06, 0xeb, 0x05, 0x97, 0x04, 0x3d, 0x02, 0xfb, 0x02, 0xef, 0x04, 0x95, 0x08, + 0x09, 0x0c, 0x07, 0x0e, 0x19, 0x10, 0x62, 0x10, 0x70, 0x10, 0xe8, 0x10, 0x44, 0x13, 0x75, 0x13, + 0x96, 0x12, 0x32, 0x13, 0xd0, 0x13, 0xc3, 0x14, 0xb5, 0x15, 0xc3, 0x16, 0x14, 0x15, 0xf6, 0x11, + 0x10, 0x0f, 0xb5, 0x0c, 0xd7, 0x09, 0x4f, 0x05, 0xc8, 0x02, 0x03, 0x00, 0xd7, 0xfd, 0xbb, 0xfa, + 0x7c, 0xf7, 0x7d, 0xf3, 0x8e, 0xef, 0x08, 0xed, 0xee, 0xeb, 0x0a, 0xec, 0x42, 0xec, 0xea, 0xed, + 0x4e, 0xef, 0x93, 0xef, 0xf1, 0xef, 0xd2, 0xef, 0x7f, 0xef, 0x1a, 0xf0, 0x45, 0xf0, 0xa6, 0xf0, + 0x69, 0xf3, 0x5c, 0xf6, 0xdf, 0xf6, 0x96, 0xf7, 0xae, 0xf6, 0xa1, 0xf7, 0x7e, 0xf9, 0x3b, 0xf8, + 0x1e, 0xf7, 0xb3, 0xf5, 0x0c, 0xf5, 0x99, 0xf4, 0x7d, 0xf4, 0xeb, 0xf4, 0xb3, 0xf6, 0x27, 0xf8, + 0xaa, 0xf7, 0x95, 0xf8, 0xde, 0xf9, 0x2e, 0xfc, 0x52, 0xfd, 0x98, 0xfe, 0x40, 0x01, 0x47, 0x05, + 0xdd, 0x08, 0x3b, 0x0b, 0x07, 0x0d, 0x79, 0x0c, 0x50, 0x0b, 0x88, 0x0b, 0xf5, 0x0d, 0xd3, 0x0f, + 0xeb, 0x11, 0xca, 0x12, 0x2c, 0x14, 0x08, 0x14, 0xe4, 0x12, 0x9e, 0x11, 0xe3, 0x0e, 0xe1, 0x0c, + 0x22, 0x0b, 0xe3, 0x09, 0x7b, 0x08, 0x4c, 0x08, 0x40, 0x08, 0xc2, 0x09, 0x1b, 0x0a, 0xc4, 0x08, + 0x78, 0x08, 0x67, 0x07, 0x3f, 0x05, 0x8b, 0x05, 0x4f, 0x05, 0xed, 0x04, 0x4d, 0x06, 0x38, 0x06, + 0x21, 0x06, 0x0d, 0x05, 0x8f, 0x03, 0x6b, 0x01, 0x96, 0xfe, 0x09, 0xfb, 0xd1, 0xfa, 0xd2, 0xfc, + 0x08, 0xfc, 0x96, 0xfa, 0xe8, 0xf8, 0x4d, 0xf8, 0xec, 0xf6, 0x21, 0xf4, 0x08, 0xf1, 0x71, 0xee, + 0x58, 0xec, 0x71, 0xeb, 0x1f, 0xed, 0xc0, 0xee, 0x60, 0xf0, 0x88, 0xf0, 0x14, 0xf0, 0xcc, 0xef, + 0x3a, 0xf0, 0x36, 0xf1, 0x4d, 0xf1, 0x1f, 0xf2, 0x2c, 0xf3, 0x84, 0xf5, 0x62, 0xf8, 0x08, 0xfb, + 0x40, 0xfd, 0x4e, 0xfd, 0xb8, 0xfc, 0xca, 0xfc, 0xdc, 0xfc, 0x2e, 0xfe, 0x2c, 0xff, 0x2a, 0x00, + 0x67, 0x02, 0x21, 0x05, 0x38, 0x05, 0x4e, 0x05, 0xc6, 0x04, 0xcb, 0x03, 0xf0, 0x05, 0xdf, 0x07, + 0xbb, 0x0a, 0xfb, 0x0d, 0x0d, 0x10, 0x0a, 0x12, 0xb0, 0x13, 0xbf, 0x13, 0x60, 0x13, 0xbf, 0x14, + 0x94, 0x13, 0x9d, 0x11, 0x3a, 0x11, 0x5b, 0x12, 0x70, 0x14, 0x61, 0x13, 0x3f, 0x11, 0xcc, 0x0e, + 0x26, 0x0d, 0x48, 0x0a, 0x7b, 0x06, 0xaf, 0x02, 0xf9, 0xff, 0x98, 0xfd, 0xcb, 0xfb, 0x9a, 0xfa, + 0xce, 0xf8, 0x20, 0xf6, 0x49, 0xf2, 0x52, 0xef, 0xfc, 0xec, 0xe6, 0xec, 0x26, 0xed, 0x2c, 0xed, + 0xc1, 0xee, 0xb4, 0xf1, 0x9e, 0xf3, 0xfa, 0xf4, 0x68, 0xf5, 0x80, 0xf5, 0xd1, 0xf5, 0xda, 0xf4, + 0x9b, 0xf5, 0xa3, 0xf8, 0x2e, 0xfa, 0xdb, 0xfc, 0xd6, 0xff, 0x83, 0x01, 0x04, 0x03, 0xd6, 0x01, + 0x08, 0x00, 0xec, 0xff, 0x37, 0xfe, 0x13, 0xfd, 0x01, 0xfd, 0xe8, 0xfd, 0xe9, 0xfe, 0x4b, 0x02, + 0x53, 0x03, 0x88, 0x02, 0x18, 0x02, 0xe4, 0x01, 0x4a, 0x03, 0x1f, 0x05, 0xb1, 0x06, 0x42, 0x09, + 0xb3, 0x0c, 0x3a, 0x0e, 0x4e, 0x0f, 0x14, 0x0f, 0x69, 0x0e, 0xb6, 0x0d, 0xd0, 0x0b, 0xea, 0x0a, + 0xd4, 0x09, 0x6f, 0x0b, 0x31, 0x0d, 0x8c, 0x0c, 0xd7, 0x09, 0xa3, 0x07, 0xe7, 0x05, 0x09, 0x03, + 0x62, 0x00, 0xc6, 0xfe, 0x11, 0xfd, 0x41, 0xfb, 0xff, 0xf9, 0x9c, 0xfa, 0x6c, 0xfc, 0x9b, 0xfb, + 0x7f, 0xf8, 0x51, 0xf7, 0xf3, 0xf6, 0x1b, 0xf6, 0x49, 0xf8, 0xcc, 0xf8, 0x68, 0xfa, 0xe0, 0xfb, + 0x59, 0xfc, 0x8a, 0xfe, 0x64, 0xfe, 0xb2, 0xfd, 0xf4, 0xfb, 0x66, 0xfb, 0x1c, 0xfb, 0xef, 0xfc, + 0xb4, 0xfd, 0x33, 0xfc, 0x70, 0xfb, 0xe9, 0xf9, 0x2e, 0xf9, 0xe3, 0xf7, 0x37, 0xf6, 0x14, 0xf5, + 0xde, 0xf3, 0xb3, 0xf2, 0x44, 0xf2, 0x1c, 0xf3, 0x5f, 0xf3, 0x4c, 0xf5, 0x12, 0xf6, 0x1e, 0xf6, + 0xba, 0xf6, 0x7b, 0xf8, 0xb1, 0xf9, 0xab, 0xf9, 0xea, 0xf8, 0x19, 0xfa, 0xc0, 0xfc, 0x60, 0xfe, + 0xa9, 0xfe, 0x39, 0xff, 0xbf, 0xff, 0x75, 0x00, 0x86, 0xff, 0x5a, 0xfd, 0x02, 0xfd, 0xe7, 0xfd, + 0x90, 0xfd, 0x1e, 0xff, 0x4f, 0x01, 0x7f, 0x01, 0x06, 0x02, 0x83, 0x01, 0xf5, 0x01, 0x56, 0x04, + 0xe5, 0x04, 0xba, 0x06, 0x7b, 0x09, 0x2a, 0x0c, 0x2c, 0x0f, 0x31, 0x12, 0xa9, 0x14, 0x16, 0x16, + 0xb9, 0x16, 0x89, 0x15, 0x45, 0x15, 0xc5, 0x14, 0x0f, 0x16, 0xbb, 0x17, 0x8e, 0x18, 0xa3, 0x19, + 0xfb, 0x19, 0x85, 0x17, 0xc4, 0x12, 0x2c, 0x0e, 0x17, 0x09, 0x5a, 0x05, 0x8e, 0x01, 0x98, 0xff, + 0xb4, 0xfe, 0x56, 0xfd, 0x98, 0xfb, 0x0c, 0xfa, 0xd1, 0xf6, 0x8c, 0xf2, 0xa4, 0xf0, 0x65, 0xef, + 0x9d, 0xee, 0xa3, 0xef, 0xe5, 0xf1, 0xdb, 0xf3, 0xf2, 0xf3, 0xc6, 0xf2, 0xe1, 0xf2, 0xe0, 0xf3, + 0x68, 0xf2, 0x52, 0xf0, 0x06, 0xf0, 0x21, 0xf0, 0x14, 0xf3, 0xcc, 0xf6, 0xf0, 0xf6, 0x61, 0xf7, + 0x24, 0xf6, 0x7c, 0xf5, 0x1a, 0xf5, 0xe6, 0xf3, 0x69, 0xf2, 0x9e, 0xf2, 0x3e, 0xf3, 0x9a, 0xf5, + 0x5a, 0xfa, 0xca, 0xfb, 0x7d, 0xfc, 0x35, 0xfc, 0xa8, 0xfc, 0x41, 0xfe, 0xfe, 0xff, 0xd5, 0x03, + 0x47, 0x07, 0x86, 0x0a, 0x89, 0x0c, 0x22, 0x0e, 0x40, 0x0e, 0x17, 0x0e, 0x85, 0x0d, 0xd4, 0x0c, + 0x3e, 0x0d, 0xbf, 0x0e, 0x65, 0x11, 0xd0, 0x12, 0x99, 0x12, 0xca, 0x10, 0xa1, 0x0e, 0x8a, 0x0b, + 0x7c, 0x08, 0x20, 0x07, 0x17, 0x06, 0x5c, 0x05, 0x6e, 0x06, 0xe8, 0x05, 0x72, 0x06, 0xb0, 0x07, + 0x22, 0x07, 0xad, 0x04, 0x71, 0x03, 0x81, 0x02, 0x39, 0x02, 0xc9, 0x02, 0xd1, 0x01, 0x10, 0x03, + 0x04, 0x04, 0x60, 0x04, 0xbb, 0x03, 0x48, 0x01, 0x7e, 0xfe, 0x2d, 0xfd, 0x7f, 0xfc, 0xd8, 0xfa, + 0xb7, 0xfa, 0x2e, 0xfa, 0x83, 0xf9, 0xc7, 0xf8, 0x50, 0xf7, 0x95, 0xf6, 0x53, 0xf5, 0x23, 0xf3, + 0xaf, 0xf2, 0xb2, 0xf3, 0xa0, 0xf2, 0x75, 0xf1, 0xb9, 0xf0, 0x0b, 0xf2, 0xd5, 0xf2, 0x25, 0xf3, + 0xbe, 0xf4, 0xe7, 0xf5, 0x9a, 0xf6, 0x18, 0xf7, 0x47, 0xf7, 0xdb, 0xf6, 0x37, 0xf7, 0xd8, 0xf7, + 0x05, 0xf9, 0x8a, 0xfa, 0x69, 0xfc, 0x2d, 0xfe, 0xec, 0xfe, 0xc4, 0xfd, 0x83, 0xfc, 0x15, 0xfc, + 0x90, 0xfb, 0xe6, 0xfa, 0x08, 0xfd, 0x8e, 0xfe, 0x7c, 0xff, 0x6c, 0x02, 0x1a, 0x03, 0x62, 0x03, + 0xe8, 0x03, 0x3b, 0x04, 0xfa, 0x06, 0x0c, 0x09, 0xb8, 0x0b, 0x0e, 0x0f, 0xd1, 0x11, 0x29, 0x12, + 0x42, 0x13, 0xc3, 0x14, 0x21, 0x15, 0x14, 0x14, 0x5b, 0x11, 0x81, 0x10, 0xe8, 0x10, 0xaa, 0x11, + 0x79, 0x12, 0xe0, 0x11, 0x14, 0x0e, 0xb2, 0x09, 0x4d, 0x05, 0xcd, 0x00, 0x46, 0xfe, 0x08, 0xfb, + 0x03, 0xf8, 0x95, 0xf6, 0x5a, 0xf7, 0xe2, 0xf7, 0x8d, 0xf6, 0x9d, 0xf3, 0xc5, 0xf0, 0x25, 0xee, + 0xb4, 0xec, 0xc5, 0xed, 0x67, 0xf0, 0x6e, 0xf2, 0xc9, 0xf4, 0x46, 0xf6, 0xb0, 0xf6, 0x9d, 0xf7, + 0x21, 0xf8, 0x04, 0xf7, 0x38, 0xf6, 0x3b, 0xf7, 0xc5, 0xf8, 0x85, 0xfc, 0xa8, 0xfe, 0xa9, 0xff, + 0x2d, 0x00, 0x5b, 0xfe, 0xf9, 0xfd, 0xc8, 0xfc, 0x64, 0xfb, 0x50, 0xfa, 0x2b, 0xfb, 0xa3, 0xfc, + 0x57, 0xfe, 0x3a, 0x01, 0x27, 0x03, 0x28, 0x04, 0x75, 0x03, 0xbd, 0x03, 0x1b, 0x05, 0xb1, 0x06, + 0x87, 0x08, 0xf8, 0x0b, 0x6d, 0x0f, 0xf9, 0x11, 0xcc, 0x12, 0x0d, 0x12, 0x50, 0x11, 0xcd, 0x0e, + 0xa6, 0x0c, 0xf1, 0x0b, 0x94, 0x0b, 0xb6, 0x0b, 0xb1, 0x0c, 0x90, 0x0b, 0xb9, 0x09, 0x4b, 0x07, + 0x11, 0x04, 0x69, 0x00, 0xcc, 0xfd, 0x35, 0xfd, 0xa5, 0xfd, 0xbb, 0xfd, 0x60, 0xfd, 0xb5, 0xfd, + 0xad, 0xfe, 0x0f, 0xfe, 0xcb, 0xfc, 0x50, 0xfd, 0x30, 0xfc, 0x02, 0xfc, 0x23, 0xfd, 0x73, 0xfd, + 0xdb, 0xfe, 0xe3, 0xfe, 0x60, 0xff, 0xdc, 0xff, 0x43, 0xff, 0x45, 0xfe, 0xc6, 0xfd, 0x3b, 0xfc, + 0xf3, 0xfa, 0x87, 0xfa, 0x06, 0xfa, 0x03, 0xfa, 0x5d, 0xf8, 0xc1, 0xf6, 0x48, 0xf6, 0xe1, 0xf5, + 0x05, 0xf6, 0xaf, 0xf6, 0xa0, 0xf6, 0xdb, 0xf5, 0x60, 0xf5, 0xd0, 0xf4, 0x45, 0xf6, 0x58, 0xf7, + 0x24, 0xf8, 0xbf, 0xf8, 0xdc, 0xf8, 0xfd, 0xf9, 0xd8, 0xfb, 0x97, 0xfc, 0xfc, 0xfa, 0xa3, 0xf9, + 0xf5, 0xf8, 0xf1, 0xf8, 0xaa, 0xfa, 0xf2, 0xfb, 0x31, 0xfd, 0x7d, 0xfd, 0xfa, 0xfb, 0x82, 0xfa, + 0x6c, 0xfa, 0xab, 0xfa, 0xae, 0xf9, 0x87, 0xfa, 0xf1, 0xfc, 0x32, 0x00, 0xa8, 0x03, 0x51, 0x04, + 0x0f, 0x05, 0x9b, 0x04, 0x15, 0x05, 0xa2, 0x07, 0x1e, 0x0b, 0x33, 0x0e, 0xf2, 0x10, 0x81, 0x13, + 0xb2, 0x14, 0xa0, 0x16, 0x85, 0x16, 0x2b, 0x16, 0xe4, 0x14, 0x97, 0x13, 0xa2, 0x14, 0xeb, 0x15, + 0x6e, 0x17, 0x8c, 0x18, 0xb2, 0x17, 0x65, 0x14, 0x63, 0x10, 0x01, 0x0b, 0x25, 0x07, 0xd6, 0x03, + 0xff, 0x00, 0x4c, 0xff, 0xc0, 0xfe, 0x40, 0xfe, 0xc6, 0xfe, 0xa5, 0xfd, 0x35, 0xfa, 0x87, 0xf6, + 0x81, 0xf3, 0x7b, 0xf2, 0xde, 0xf1, 0xfc, 0xf1, 0x5a, 0xf3, 0xef, 0xf5, 0x3b, 0xf7, 0x97, 0xf6, + 0xe2, 0xf5, 0x80, 0xf4, 0xdd, 0xf1, 0x6a, 0xf0, 0x06, 0xf1, 0xea, 0xf1, 0x22, 0xf4, 0x2e, 0xf5, + 0x8d, 0xf6, 0x7f, 0xf7, 0x25, 0xf7, 0xc5, 0xf5, 0x23, 0xf4, 0xd8, 0xf2, 0xad, 0xf2, 0x6c, 0xf4, + 0xd1, 0xf5, 0x01, 0xf8, 0x07, 0xfa, 0xd9, 0xfb, 0x88, 0xfd, 0x60, 0xfe, 0x8a, 0xff, 0xa1, 0xff, + 0x66, 0x00, 0x8d, 0x02, 0x50, 0x06, 0xcc, 0x08, 0xdb, 0x0a, 0xbb, 0x0b, 0x74, 0x0c, 0x85, 0x0c, + 0xee, 0x0a, 0x72, 0x0a, 0xb2, 0x09, 0xdf, 0x08, 0x14, 0x0a, 0x3b, 0x0b, 0x20, 0x0b, 0x5e, 0x09, + 0x50, 0x07, 0x2d, 0x05, 0x0b, 0x03, 0x87, 0x01, 0x00, 0x01, 0xf0, 0x01, 0x3c, 0x02, 0x79, 0x02, + 0x3b, 0x02, 0x1d, 0x03, 0x2c, 0x03, 0xc6, 0x01, 0x78, 0x00, 0xba, 0xfe, 0xeb, 0xff, 0xec, 0x00, + 0x11, 0x01, 0xd7, 0x00, 0xf4, 0xff, 0x75, 0xff, 0xf6, 0xfe, 0xc8, 0xfe, 0x5f, 0xfd, 0x6d, 0xfc, + 0xc5, 0xf9, 0x28, 0xf8, 0xc7, 0xf8, 0xed, 0xf8, 0x58, 0xf8, 0x20, 0xf6, 0x22, 0xf5, 0x40, 0xf5, + 0x83, 0xf6, 0x86, 0xf7, 0x88, 0xf8, 0x28, 0xf8, 0x62, 0xf7, 0x1c, 0xf7, 0x57, 0xf7, 0x63, 0xf9, + 0x0a, 0xfa, 0xc2, 0xfa, 0x12, 0xfc, 0x80, 0xfc, 0xce, 0xfd, 0xd8, 0xfe, 0x8b, 0xfe, 0x8a, 0xfd, + 0x13, 0xfc, 0x87, 0xfb, 0xd1, 0xfc, 0x23, 0xfe, 0x31, 0xff, 0x1a, 0x00, 0x2f, 0x00, 0x4d, 0xfe, + 0xa9, 0xfb, 0x89, 0xfa, 0x88, 0xfa, 0x26, 0xfa, 0xf7, 0xfb, 0x69, 0xfe, 0x09, 0x02, 0x05, 0x05, + 0xd3, 0x05, 0x2f, 0x06, 0x6e, 0x05, 0x53, 0x06, 0x15, 0x08, 0x9e, 0x09, 0x85, 0x0b, 0xa7, 0x0e, + 0xcf, 0x11, 0x91, 0x13, 0x0c, 0x14, 0x41, 0x13, 0x36, 0x12, 0xef, 0x0f, 0xef, 0x0e, 0xfe, 0x0e, + 0x23, 0x0f, 0x2d, 0x0e, 0xe7, 0x0d, 0xa1, 0x0d, 0xdd, 0x0b, 0xfc, 0x07, 0x51, 0x02, 0x12, 0xfe, + 0xde, 0xfa, 0x1c, 0xf9, 0xae, 0xf8, 0x70, 0xf8, 0x03, 0xf8, 0x24, 0xf9, 0xdc, 0xf8, 0x31, 0xf7, + 0xf6, 0xf4, 0xcf, 0xf2, 0xb0, 0xf1, 0xbc, 0xf1, 0x19, 0xf3, 0xad, 0xf5, 0xcf, 0xf7, 0x44, 0xf9, + 0x44, 0xfa, 0x1b, 0xfa, 0x49, 0xfa, 0x3b, 0xf9, 0x4d, 0xf9, 0xaa, 0xf9, 0x58, 0xfa, 0xd4, 0xfc, + 0x49, 0xfe, 0xac, 0xff, 0x7b, 0xff, 0x4f, 0xff, 0x22, 0xfe, 0xde, 0xfd, 0x73, 0xfd, 0x2d, 0xfe, + 0xe6, 0xff, 0xa9, 0x00, 0x3e, 0x02, 0xc5, 0x03, 0x30, 0x07, 0x97, 0x08, 0xc0, 0x08, 0x18, 0x08, + 0xe4, 0x07, 0x8a, 0x09, 0x1a, 0x0c, 0x99, 0x0e, 0x59, 0x10, 0xa5, 0x11, 0x84, 0x10, 0x60, 0x10, + 0x8b, 0x10, 0xf6, 0x0e, 0x48, 0x0c, 0x02, 0x09, 0x9f, 0x07, 0xbd, 0x08, 0xf2, 0x08, 0x03, 0x08, + 0x1a, 0x05, 0x0c, 0x02, 0xd9, 0xff, 0x80, 0xfe, 0x23, 0xfd, 0x46, 0xfc, 0x55, 0xfc, 0x1f, 0xfc, + 0x11, 0xfc, 0xf9, 0xfb, 0x47, 0xfd, 0xc1, 0xfc, 0x6b, 0xfb, 0xcd, 0xfa, 0xe2, 0xf9, 0x59, 0xfa, + 0x65, 0xfa, 0xd6, 0xfa, 0x8a, 0xfa, 0x00, 0xfa, 0x42, 0xfa, 0x1b, 0xfb, 0x90, 0xfb, 0xca, 0xf9, + 0xac, 0xf8, 0x41, 0xf7, 0x50, 0xf5, 0x33, 0xf4, 0xfa, 0xf3, 0x30, 0xf3, 0x31, 0xf2, 0x69, 0xf2, + 0x28, 0xf3, 0xfd, 0xf3, 0x84, 0xf4, 0x5a, 0xf4, 0x73, 0xf4, 0x4b, 0xf5, 0x4b, 0xf4, 0x1b, 0xf4, + 0x03, 0xf4, 0x85, 0xf4, 0x68, 0xf6, 0xe2, 0xf7, 0xb5, 0xf8, 0x94, 0xf9, 0x0b, 0xfa, 0x28, 0xf9, + 0x5b, 0xf7, 0x7d, 0xf6, 0x6b, 0xf6, 0x5a, 0xf6, 0x40, 0xf6, 0xd6, 0xf7, 0x12, 0xfa, 0xcf, 0xfa, + 0xb5, 0xf9, 0xa1, 0xf7, 0x43, 0xf6, 0x5b, 0xf6, 0x20, 0xf7, 0xe6, 0xf9, 0x71, 0xfc, 0xfa, 0xff, + 0x08, 0x03, 0xeb, 0x04, 0xe0, 0x05, 0x83, 0x06, 0xcf, 0x06, 0x1d, 0x08, 0x84, 0x0b, 0x2d, 0x0e, + 0xab, 0x11, 0x8e, 0x14, 0x8d, 0x16, 0x52, 0x17, 0xf8, 0x16, 0xd3, 0x16, 0xab, 0x16, 0x94, 0x16, + 0x1e, 0x16, 0xb0, 0x16, 0xf4, 0x16, 0xe1, 0x16, 0xaf, 0x15, 0xd9, 0x13, 0xb9, 0x0f, 0xe2, 0x0a, + 0x89, 0x07, 0x04, 0x05, 0xdb, 0x03, 0x7e, 0x02, 0x83, 0x00, 0x99, 0x00, 0x15, 0x01, 0xb1, 0x00, + 0x3c, 0xfe, 0xa9, 0xf9, 0x8e, 0xf6, 0x63, 0xf5, 0x40, 0xf5, 0x5c, 0xf5, 0x81, 0xf6, 0xf3, 0xf7, + 0x65, 0xf8, 0xfe, 0xf6, 0x9f, 0xf6, 0x09, 0xf7, 0x82, 0xf4, 0xa8, 0xf2, 0xb0, 0xf1, 0x40, 0xf3, + 0x6f, 0xf5, 0x08, 0xf7, 0xd5, 0xf7, 0x3d, 0xf7, 0xd0, 0xf6, 0x86, 0xf6, 0x74, 0xf7, 0x94, 0xf7, + 0x9f, 0xf7, 0x8f, 0xf8, 0xef, 0xf9, 0xdf, 0xfb, 0xfd, 0xfe, 0xfc, 0x01, 0x99, 0x03, 0xc8, 0x04, + 0x52, 0x05, 0xe2, 0x05, 0x66, 0x06, 0x84, 0x08, 0xfa, 0x0a, 0x00, 0x0d, 0xb4, 0x0e, 0xff, 0x0f, + 0xe0, 0x10, 0x54, 0x11, 0x51, 0x10, 0x5b, 0x0e, 0xbc, 0x0b, 0x32, 0x0a, 0x7f, 0x0a, 0xda, 0x0a, + 0x9c, 0x0a, 0xf9, 0x08, 0xd9, 0x07, 0x99, 0x07, 0x55, 0x06, 0x54, 0x04, 0x13, 0x04, 0x75, 0x04, + 0x7b, 0x05, 0xbb, 0x05, 0xdb, 0x04, 0x51, 0x05, 0x0d, 0x04, 0x76, 0x03, 0xa8, 0x02, 0xf7, 0x01, + 0x2e, 0x02, 0x8a, 0x01, 0x40, 0x00, 0x54, 0xff, 0x47, 0xff, 0x2d, 0xfe, 0x84, 0xfd, 0x22, 0xfc, + 0xc0, 0xfa, 0x1f, 0xfa, 0xd0, 0xf8, 0xc5, 0xf6, 0xf3, 0xf3, 0x5d, 0xf2, 0xbc, 0xf1, 0x83, 0xf2, + 0xf6, 0xf2, 0xf9, 0xf3, 0x90, 0xf4, 0x50, 0xf5, 0xee, 0xf6, 0x0a, 0xf8, 0x6c, 0xf8, 0x26, 0xf7, + 0x57, 0xf7, 0xaf, 0xf8, 0xd3, 0xf9, 0x58, 0xfb, 0x5e, 0xfc, 0xb5, 0xfc, 0xcd, 0xfc, 0x0d, 0xfd, + 0xe7, 0xfc, 0xaa, 0xfb, 0x42, 0xfa, 0x96, 0xf9, 0xbe, 0xf9, 0xa5, 0xf9, 0x81, 0xfa, 0x07, 0xfb, + 0xe7, 0xfa, 0x8a, 0xf9, 0x7f, 0xf6, 0x80, 0xf6, 0x13, 0xf7, 0x02, 0xf8, 0xf2, 0xf9, 0xd4, 0xfb, + 0xb7, 0xff, 0x5f, 0x03, 0x8f, 0x05, 0x8c, 0x05, 0xe8, 0x04, 0x75, 0x04, 0x21, 0x06, 0x80, 0x08, + 0x6d, 0x0a, 0xc4, 0x0d, 0xe7, 0x0f, 0x61, 0x10, 0x91, 0x0f, 0x18, 0x10, 0x64, 0x0f, 0x89, 0x0d, + 0xae, 0x0b, 0xa9, 0x0a, 0x13, 0x0b, 0xf4, 0x0a, 0x96, 0x0a, 0x02, 0x09, 0x03, 0x06, 0x1f, 0x02, + 0xa7, 0xfe, 0x7b, 0xfc, 0xa0, 0xfa, 0x71, 0xf8, 0x86, 0xf7, 0x51, 0xf7, 0x64, 0xf8, 0x3d, 0xf9, + 0x0f, 0xf9, 0xe6, 0xf7, 0x5b, 0xf6, 0x96, 0xf4, 0x5d, 0xf3, 0x0c, 0xf3, 0x29, 0xf3, 0xf9, 0xf4, + 0xa9, 0xf6, 0xc6, 0xf8, 0xcf, 0xf8, 0x72, 0xf9, 0x0d, 0xfa, 0x71, 0xf8, 0x9d, 0xf7, 0x01, 0xf7, + 0xa9, 0xf7, 0xa0, 0xf9, 0x06, 0xfb, 0x63, 0xfb, 0xd9, 0xfc, 0x93, 0xfd, 0x65, 0xfe, 0xdc, 0xfe, + 0x15, 0xfe, 0xd8, 0xfe, 0x6b, 0x00, 0x33, 0x02, 0x48, 0x03, 0xea, 0x04, 0x1e, 0x07, 0x65, 0x09, + 0x74, 0x0a, 0x57, 0x0b, 0x2f, 0x0c, 0x9a, 0x0c, 0xd5, 0x0c, 0x1d, 0x0e, 0xd1, 0x10, 0xd0, 0x11, + 0xd2, 0x11, 0x64, 0x11, 0x6b, 0x10, 0x69, 0x0f, 0x8e, 0x0d, 0x06, 0x0b, 0xb7, 0x08, 0x88, 0x06, + 0xdd, 0x05, 0xd7, 0x05, 0x89, 0x05, 0xb3, 0x04, 0xe9, 0x02, 0xad, 0x00, 0x6f, 0xff, 0xc5, 0xff, + 0xb6, 0xff, 0x6e, 0x00, 0x43, 0x00, 0xcf, 0x00, 0x7a, 0x01, 0x2f, 0x00, 0xde, 0xff, 0xe4, 0xfe, + 0x70, 0xfe, 0x4f, 0xfe, 0x9b, 0xfe, 0xb6, 0xfd, 0xa5, 0xfd, 0x39, 0xfe, 0xd7, 0xfd, 0x03, 0xfe, + 0x64, 0xfc, 0x0d, 0xfb, 0x63, 0xfa, 0xd1, 0xf8, 0x11, 0xf6, 0x3e, 0xf4, 0x13, 0xf4, 0x17, 0xf5, + 0xcc, 0xf5, 0x6d, 0xf5, 0x98, 0xf6, 0xdd, 0xf7, 0x3e, 0xf9, 0xcc, 0xf9, 0x97, 0xf9, 0x53, 0xf9, + 0x2d, 0xf8, 0xe4, 0xf7, 0x08, 0xf9, 0x9e, 0xfa, 0xd4, 0xfb, 0x65, 0xfb, 0x3f, 0xfb, 0x89, 0xfb, + 0xcb, 0xfb, 0x55, 0xfb, 0xe2, 0xf8, 0xd4, 0xf6, 0xf6, 0xf5, 0x0b, 0xf6, 0xdf, 0xf6, 0x00, 0xf8, + 0x67, 0xf7, 0xd7, 0xf6, 0x37, 0xf6, 0xff, 0xf4, 0x5b, 0xf6, 0xf6, 0xf5, 0xa7, 0xf6, 0xe6, 0xf8, + 0x5e, 0xfc, 0xe4, 0x00, 0x21, 0x04, 0x67, 0x06, 0xb1, 0x07, 0x84, 0x08, 0x70, 0x08, 0xce, 0x09, + 0x44, 0x0b, 0x7d, 0x0d, 0x27, 0x11, 0x98, 0x13, 0x91, 0x14, 0xdd, 0x14, 0x24, 0x15, 0x19, 0x15, + 0xa0, 0x14, 0xd6, 0x12, 0x90, 0x12, 0x6c, 0x12, 0x23, 0x12, 0x0d, 0x11, 0x50, 0x0f, 0xa4, 0x0d, + 0xd8, 0x0b, 0xd4, 0x08, 0x22, 0x06, 0x64, 0x03, 0x01, 0x02, 0x73, 0x01, 0xd3, 0x00, 0x55, 0x00, + 0x8a, 0xff, 0x08, 0xff, 0x36, 0xfd, 0x18, 0xfb, 0xff, 0xf8, 0x89, 0xf6, 0x58, 0xf4, 0x95, 0xf3, + 0xb1, 0xf3, 0xe2, 0xf4, 0xfe, 0xf5, 0x8f, 0xf4, 0x4c, 0xf4, 0xf3, 0xf2, 0xa2, 0xf1, 0xb3, 0xf0, + 0xb2, 0xef, 0x46, 0xef, 0xec, 0xef, 0x28, 0xf1, 0x60, 0xf2, 0x25, 0xf5, 0xa8, 0xf5, 0x8d, 0xf5, + 0xe7, 0xf5, 0x05, 0xf7, 0x4a, 0xf8, 0x34, 0xf9, 0xe9, 0xfa, 0xbf, 0xfc, 0x78, 0xff, 0x70, 0x02, + 0x3b, 0x05, 0x23, 0x06, 0xa5, 0x06, 0x61, 0x07, 0xb9, 0x07, 0xb0, 0x08, 0x49, 0x0a, 0x83, 0x0c, + 0xcb, 0x0e, 0x91, 0x0f, 0xdd, 0x0f, 0x9e, 0x0f, 0xd2, 0x0e, 0xd1, 0x0c, 0xc1, 0x09, 0xb5, 0x06, + 0x22, 0x05, 0x76, 0x06, 0xc4, 0x07, 0xbc, 0x07, 0x28, 0x06, 0x63, 0x05, 0xc2, 0x04, 0x21, 0x04, + 0x4b, 0x03, 0x95, 0x02, 0xe4, 0x03, 0x3b, 0x03, 0xfe, 0x03, 0xdb, 0x04, 0xa5, 0x03, 0x16, 0x02, + 0x86, 0x00, 0x1f, 0x00, 0x21, 0x00, 0x56, 0xff, 0xbc, 0xfd, 0xe0, 0xfc, 0x81, 0xfb, 0xa0, 0xfa, + 0xd4, 0xfa, 0xaa, 0xf9, 0xa6, 0xf8, 0x59, 0xf7, 0x85, 0xf5, 0x28, 0xf3, 0x03, 0xf2, 0xca, 0xf1, + 0xb9, 0xf1, 0x68, 0xf2, 0x37, 0xf4, 0x54, 0xf6, 0xc4, 0xf7, 0x15, 0xf9, 0x75, 0xfa, 0x52, 0xfb, + 0xf1, 0xfb, 0x07, 0xfc, 0x36, 0xfc, 0x47, 0xfd, 0xaa, 0xfe, 0xdc, 0xff, 0xae, 0x00, 0xa9, 0x00, + 0xac, 0x00, 0x74, 0x01, 0x0c, 0x01, 0x1d, 0xff, 0xc0, 0xfc, 0x70, 0xfb, 0x2e, 0xfb, 0xa3, 0xfa, + 0x26, 0xfa, 0x07, 0xf9, 0x0d, 0xfa, 0x0d, 0xfa, 0x27, 0xf9, 0xf3, 0xf8, 0x3e, 0xf8, 0x9f, 0xf9, + 0xbc, 0xfb, 0x37, 0xfe, 0xd7, 0x01, 0x24, 0x05, 0x4e, 0x06, 0x00, 0x08, 0x16, 0x09, 0x71, 0x08, + 0x85, 0x08, 0xdb, 0x08, 0xb0, 0x0a, 0x58, 0x0d, 0x46, 0x0f, 0xda, 0x0f, 0x5a, 0x0f, 0x14, 0x0e, + 0x3b, 0x0d, 0xbe, 0x0c, 0x89, 0x0b, 0x3c, 0x0b, 0x02, 0x0a, 0x61, 0x08, 0x0a, 0x07, 0x4c, 0x06, + 0xaf, 0x05, 0x64, 0x03, 0x63, 0x00, 0x28, 0xfe, 0x18, 0xfc, 0xd9, 0xfa, 0x48, 0xfa, 0x78, 0xfa, + 0x04, 0xfa, 0xe9, 0xfa, 0xbb, 0xfb, 0x92, 0xfb, 0xfd, 0xf9, 0xa3, 0xf7, 0xff, 0xf5, 0x96, 0xf4, + 0x58, 0xf4, 0x7d, 0xf4, 0x6a, 0xf7, 0xcc, 0xf9, 0xf4, 0xf9, 0x5b, 0xfa, 0x45, 0xf9, 0x70, 0xf8, + 0x2f, 0xf7, 0x91, 0xf5, 0x3a, 0xf5, 0xd7, 0xf6, 0xfd, 0xf8, 0xa8, 0xfb, 0xa4, 0xfd, 0xce, 0xfd, + 0x4f, 0xff, 0x49, 0x00, 0xe6, 0x00, 0xcf, 0x01, 0x54, 0x02, 0xfc, 0x02, 0x6d, 0x04, 0xb1, 0x06, + 0x57, 0x09, 0xf1, 0x0a, 0x4d, 0x0b, 0x12, 0x0c, 0x9b, 0x0c, 0xa8, 0x0c, 0xef, 0x0c, 0x25, 0x0d, + 0xfa, 0x0d, 0x40, 0x0f, 0x11, 0x10, 0xf2, 0x10, 0x61, 0x10, 0xcb, 0x0e, 0x58, 0x0b, 0x02, 0x08, + 0x2c, 0x06, 0x59, 0x05, 0x48, 0x05, 0x40, 0x05, 0xb1, 0x04, 0xb1, 0x03, 0xf5, 0x02, 0x45, 0x02, + 0x47, 0x01, 0x0e, 0x00, 0x1e, 0x00, 0x3f, 0x01, 0x43, 0x01, 0xff, 0x01, 0x82, 0x01, 0xb0, 0x00, + 0xab, 0xff, 0x28, 0xfe, 0x72, 0xfd, 0x70, 0xfd, 0x85, 0xfd, 0xe2, 0xfc, 0x84, 0xfc, 0x5d, 0xfb, + 0x85, 0xfa, 0xf8, 0xf9, 0x93, 0xf8, 0x69, 0xf7, 0x0e, 0xf6, 0x37, 0xf5, 0xee, 0xf3, 0x47, 0xf2, + 0x4a, 0xf1, 0xa8, 0xf2, 0x16, 0xf4, 0xa0, 0xf5, 0x58, 0xf7, 0x6d, 0xf8, 0x4d, 0xf9, 0xae, 0xf9, + 0x17, 0xfa, 0xef, 0xfa, 0xe7, 0xf9, 0x03, 0xf9, 0x25, 0xf9, 0xea, 0xf9, 0x81, 0xfa, 0x15, 0xfb, + 0xf8, 0xfa, 0x71, 0xfa, 0x11, 0xfa, 0x1d, 0xf9, 0xa7, 0xf7, 0xb7, 0xf5, 0x61, 0xf4, 0x8d, 0xf2, + 0xd1, 0xf1, 0x54, 0xf2, 0xc0, 0xf2, 0x73, 0xf4, 0x01, 0xf4, 0xee, 0xf3, 0x00, 0xf4, 0x30, 0xf4, + 0xa3, 0xf5, 0xbc, 0xf7, 0x4a, 0xfb, 0x53, 0xff, 0x59, 0x03, 0x57, 0x06, 0xd3, 0x08, 0x2c, 0x09, + 0xf6, 0x08, 0x5c, 0x09, 0x2f, 0x0a, 0x4c, 0x0c, 0xd4, 0x0e, 0x2f, 0x12, 0xc1, 0x13, 0xd1, 0x13, + 0x65, 0x13, 0x7f, 0x13, 0xec, 0x12, 0x40, 0x11, 0x1b, 0x10, 0x02, 0x0f, 0xcf, 0x0e, 0xec, 0x0e, + 0xec, 0x0d, 0x69, 0x0d, 0xfc, 0x0b, 0xf5, 0x09, 0x19, 0x08, 0xa1, 0x06, 0x39, 0x05, 0xd5, 0x03, + 0x75, 0x02, 0xaa, 0x01, 0xab, 0x02, 0x1b, 0x03, 0xb2, 0x01, 0x03, 0xff, 0x2f, 0xfc, 0xb7, 0xf9, + 0x20, 0xf7, 0xf7, 0xf5, 0xa8, 0xf4, 0x92, 0xf5, 0x44, 0xf6, 0x01, 0xf6, 0x63, 0xf6, 0x82, 0xf5, + 0x19, 0xf3, 0xaf, 0xf0, 0x61, 0xef, 0x1d, 0xef, 0x73, 0xf0, 0x50, 0xf2, 0xec, 0xf4, 0x34, 0xf7, + 0x89, 0xf8, 0x0a, 0xfa, 0x02, 0xfb, 0x1d, 0xfc, 0xf8, 0xfc, 0x3b, 0xfe, 0xfc, 0xff, 0xe2, 0x01, + 0x8c, 0x03, 0x11, 0x06, 0xa0, 0x08, 0xe8, 0x09, 0x81, 0x0a, 0xc7, 0x0a, 0x8f, 0x0b, 0x9d, 0x0c, + 0xd6, 0x0c, 0x4b, 0x0e, 0x03, 0x10, 0xca, 0x10, 0x16, 0x11, 0xe5, 0x0f, 0xf4, 0x0d, 0x20, 0x0c, + 0x1d, 0x0a, 0xdd, 0x07, 0x1c, 0x07, 0x1f, 0x07, 0xb1, 0x07, 0x0d, 0x08, 0xcc, 0x07, 0xca, 0x07, + 0x73, 0x06, 0x4a, 0x05, 0x00, 0x04, 0x14, 0x05, 0x86, 0x06, 0x04, 0x06, 0x71, 0x05, 0x46, 0x04, + 0x4e, 0x03, 0x47, 0x02, 0x4b, 0x01, 0xa9, 0xff, 0x8b, 0xfe, 0x35, 0xfd, 0x65, 0xfc, 0x69, 0xfc, + 0x91, 0xfa, 0xe7, 0xf8, 0x42, 0xf7, 0xc0, 0xf6, 0x41, 0xf6, 0x81, 0xf5, 0xf1, 0xf4, 0x61, 0xf3, + 0x90, 0xf1, 0x35, 0xf1, 0x3c, 0xf2, 0x63, 0xf3, 0x5b, 0xf5, 0x96, 0xf7, 0xb9, 0xf9, 0x43, 0xfc, + 0x85, 0xfd, 0x8f, 0xfe, 0x1f, 0xff, 0xe7, 0xfe, 0x29, 0xff, 0x3e, 0xff, 0xc8, 0xff, 0x49, 0x01, + 0xcb, 0x02, 0xd5, 0x02, 0xed, 0x02, 0x8d, 0x02, 0x61, 0x01, 0x2f, 0xff, 0xb0, 0xfb, 0xf9, 0xf8, + 0xce, 0xf6, 0x7a, 0xf6, 0x6e, 0xf6, 0xaa, 0xf6, 0xd2, 0xf7, 0x78, 0xf7, 0x61, 0xf7, 0xf2, 0xf6, + 0x15, 0xf7, 0x92, 0xf7, 0x70, 0xf8, 0x80, 0xfa, 0x34, 0xfe, 0x74, 0x02, 0x96, 0x04, 0x1b, 0x06, + 0x1b, 0x06, 0xc4, 0x05, 0x9c, 0x05, 0x98, 0x05, 0xa8, 0x06, 0xe3, 0x07, 0x4c, 0x09, 0x5b, 0x0a, + 0x82, 0x0a, 0x49, 0x0a, 0x96, 0x09, 0xce, 0x07, 0x6c, 0x06, 0x27, 0x05, 0xe1, 0x03, 0xd5, 0x03, + 0x4c, 0x03, 0x3d, 0x02, 0x22, 0x02, 0xce, 0x00, 0x40, 0xff, 0x93, 0xfd, 0xe8, 0xfb, 0xa0, 0xfa, + 0x18, 0xfa, 0x0b, 0xfa, 0x76, 0xfa, 0x3e, 0xfb, 0xe4, 0xfb, 0x44, 0xfc, 0x8f, 0xfa, 0x3d, 0xf8, + 0xe8, 0xf5, 0xd4, 0xf4, 0x86, 0xf4, 0x34, 0xf4, 0xee, 0xf5, 0x61, 0xf7, 0x8e, 0xf8, 0x0e, 0xf8, + 0x96, 0xf6, 0x02, 0xf5, 0x76, 0xf3, 0x7c, 0xf2, 0xd3, 0xf2, 0x83, 0xf4, 0x71, 0xf6, 0x64, 0xf9, + 0x18, 0xfc, 0x94, 0xfe, 0xfe, 0xff, 0x54, 0x00, 0xff, 0x00, 0xf1, 0x01, 0xfe, 0x03, 0x5e, 0x05, + 0x01, 0x06, 0x8b, 0x06, 0xb3, 0x08, 0xaa, 0x0a, 0x86, 0x0b, 0x72, 0x0c, 0x35, 0x0c, 0xd7, 0x0b, + 0x17, 0x0c, 0x52, 0x0c, 0x19, 0x0e, 0xee, 0x0e, 0x0a, 0x0f, 0x21, 0x0f, 0x83, 0x0e, 0xf2, 0x0c, + 0xa9, 0x0b, 0xe2, 0x09, 0x94, 0x07, 0x3c, 0x06, 0x9d, 0x05, 0x50, 0x06, 0x93, 0x06, 0x66, 0x06, + 0x15, 0x06, 0x11, 0x05, 0x0d, 0x05, 0x29, 0x04, 0x7a, 0x04, 0x51, 0x05, 0x81, 0x05, 0xe4, 0x04, + 0x67, 0x03, 0xb6, 0x02, 0x63, 0x02, 0x07, 0x02, 0x95, 0x00, 0xeb, 0xff, 0x71, 0xff, 0x0d, 0xff, + 0x0f, 0xfe, 0xf1, 0xfb, 0x7b, 0xfa, 0xa1, 0xf8, 0x0e, 0xf8, 0xfc, 0xf7, 0xf4, 0xf7, 0xb4, 0xf7, + 0x8d, 0xf6, 0x92, 0xf5, 0x07, 0xf6, 0xe9, 0xf6, 0x21, 0xf7, 0x21, 0xf8, 0x5b, 0xfa, 0xa2, 0xfc, + 0x35, 0xff, 0x54, 0xff, 0x11, 0xff, 0x65, 0xff, 0xed, 0xfe, 0x37, 0xfe, 0xb7, 0xfd, 0x9c, 0xfd, + 0xd9, 0xfd, 0xe9, 0xfd, 0x34, 0xfe, 0xcb, 0xfe, 0x14, 0xfe, 0x8a, 0xfc, 0x50, 0xfa, 0x37, 0xf7, + 0x03, 0xf5, 0xf8, 0xf2, 0xbe, 0xf2, 0x9a, 0xf2, 0x09, 0xf3, 0xc2, 0xf4, 0xf3, 0xf5, 0x5e, 0xf6, + 0x28, 0xf6, 0x42, 0xf6, 0x6e, 0xf7, 0xde, 0xf9, 0x92, 0xfc, 0x5c, 0x00, 0x37, 0x04, 0xad, 0x07, + 0x62, 0x0a, 0xde, 0x0a, 0x79, 0x0a, 0xdb, 0x09, 0xc5, 0x0a, 0xea, 0x0b, 0x86, 0x0d, 0x23, 0x10, + 0x1b, 0x12, 0xd5, 0x11, 0xa9, 0x10, 0xa1, 0x0f, 0x2c, 0x0e, 0xb1, 0x0c, 0xc4, 0x0b, 0xf0, 0x0a, + 0x27, 0x0b, 0x7a, 0x0a, 0x64, 0x0a, 0x5b, 0x0b, 0xd0, 0x0a, 0xca, 0x08, 0x50, 0x06, 0x7d, 0x04, + 0x8d, 0x03, 0xe3, 0x03, 0xe9, 0x02, 0xa0, 0x01, 0x25, 0x01, 0xf2, 0x00, 0x60, 0x00, 0xe2, 0xfd, + 0xb8, 0xfb, 0x1f, 0xf8, 0xcb, 0xf4, 0xa7, 0xf2, 0xae, 0xf1, 0x7c, 0xf2, 0xec, 0xf2, 0xbe, 0xf2, + 0xad, 0xf1, 0x32, 0xf0, 0x28, 0xee, 0x19, 0xed, 0xc3, 0xeb, 0x32, 0xeb, 0x91, 0xec, 0x76, 0xee, + 0xec, 0xf1, 0xc8, 0xf4, 0x2e, 0xf7, 0xc2, 0xf8, 0x32, 0xfa, 0xd9, 0xfb, 0xcf, 0xfc, 0x7f, 0xfe, + 0x86, 0x00, 0x12, 0x02, 0x75, 0x03, 0x06, 0x05, 0xdc, 0x06, 0x6e, 0x08, 0xb1, 0x09, 0x9e, 0x09, + 0xe3, 0x0a, 0xe2, 0x0b, 0xb1, 0x0b, 0x0a, 0x0c, 0x22, 0x0c, 0x62, 0x0c, 0xa9, 0x0b, 0x07, 0x0b, + 0x6b, 0x0a, 0xbe, 0x09, 0x3e, 0x08, 0x84, 0x06, 0x2f, 0x06, 0x44, 0x06, 0xb4, 0x06, 0x26, 0x06, + 0xdb, 0x05, 0xe5, 0x05, 0x1f, 0x06, 0x3a, 0x06, 0x97, 0x04, 0x4a, 0x04, 0xda, 0x04, 0xbb, 0x04, + 0xe2, 0x03, 0x1c, 0x03, 0xde, 0x01, 0xfb, 0xff, 0x75, 0xfe, 0xf3, 0xfc, 0x92, 0xfc, 0x81, 0xfb, + 0x4a, 0xfa, 0x6d, 0xf9, 0x7c, 0xf7, 0x59, 0xf5, 0x31, 0xf4, 0x00, 0xf4, 0xa0, 0xf3, 0xd1, 0xf3, + 0xc6, 0xf3, 0xac, 0xf3, 0x00, 0xf3, 0xae, 0xf2, 0x32, 0xf3, 0x63, 0xf4, 0xa6, 0xf6, 0x57, 0xf9, + 0x4e, 0xfc, 0x58, 0xff, 0x1a, 0x01, 0x85, 0x02, 0x99, 0x02, 0x5c, 0x02, 0x70, 0x02, 0x64, 0x02, + 0x98, 0x02, 0xfc, 0x03, 0xd1, 0x05, 0x7d, 0x06, 0x0b, 0x06, 0x0b, 0x04, 0xb7, 0x02, 0xc8, 0xff, + 0xae, 0xfc, 0xca, 0xfa, 0xb9, 0xf8, 0x16, 0xf8, 0x6b, 0xf7, 0x7b, 0xf8, 0x5b, 0xfa, 0x8a, 0xfb, + 0x02, 0xfb, 0x29, 0xfa, 0x3d, 0xfa, 0x3b, 0xfb, 0x42, 0xfd, 0x5e, 0xfe, 0xe2, 0x00, 0x3f, 0x04, + 0x2b, 0x07, 0x5b, 0x09, 0x65, 0x0a, 0xaa, 0x09, 0xa4, 0x07, 0xfd, 0x06, 0x55, 0x07, 0xc4, 0x08, + 0x9b, 0x0a, 0x6d, 0x0b, 0x88, 0x0b, 0xc7, 0x0a, 0xa5, 0x09, 0x23, 0x08, 0x92, 0x06, 0x77, 0x05, + 0x4c, 0x04, 0xad, 0x04, 0xcb, 0x04, 0x72, 0x05, 0x43, 0x05, 0x64, 0x04, 0x5a, 0x03, 0xb7, 0x01, + 0x8c, 0x00, 0x8c, 0xff, 0xac, 0xff, 0xcb, 0xff, 0xd0, 0xff, 0x25, 0xff, 0x6f, 0xff, 0x37, 0xff, + 0x3b, 0xfd, 0xb7, 0xfb, 0x36, 0xf9, 0x18, 0xf8, 0xbb, 0xf6, 0x50, 0xf5, 0x94, 0xf5, 0x56, 0xf6, + 0x4d, 0xf6, 0xab, 0xf5, 0xfd, 0xf4, 0x47, 0xf4, 0x67, 0xf3, 0x27, 0xf2, 0x82, 0xf2, 0xa1, 0xf4, + 0x64, 0xf7, 0x1c, 0xfa, 0x4a, 0xfc, 0x32, 0xfe, 0xf4, 0xff, 0xd4, 0x01, 0xd6, 0x02, 0x51, 0x03, + 0x73, 0x04, 0x81, 0x05, 0x81, 0x06, 0x9a, 0x07, 0x58, 0x08, 0x84, 0x08, 0x6b, 0x08, 0xb9, 0x09, + 0x3d, 0x0a, 0xda, 0x0a, 0xc8, 0x0a, 0x52, 0x0a, 0x7b, 0x0a, 0x8e, 0x0a, 0x81, 0x0a, 0x5d, 0x0a, + 0x17, 0x0a, 0x95, 0x09, 0x66, 0x09, 0xf9, 0x08, 0x01, 0x08, 0x41, 0x06, 0x69, 0x05, 0xc3, 0x05, + 0x9d, 0x05, 0x41, 0x06, 0x1a, 0x06, 0x18, 0x06, 0x3e, 0x06, 0x55, 0x05, 0xb4, 0x04, 0x9d, 0x04, + 0x53, 0x04, 0x4b, 0x03, 0x61, 0x02, 0x72, 0x01, 0x0e, 0x01, 0x23, 0x00, 0x61, 0xfe, 0x1e, 0xfd, + 0xfa, 0xfb, 0x0b, 0xfb, 0x78, 0xf9, 0x2d, 0xf8, 0x68, 0xf6, 0x2c, 0xf5, 0xd5, 0xf4, 0x98, 0xf4, + 0xa9, 0xf5, 0xe6, 0xf6, 0x05, 0xf7, 0xcd, 0xf5, 0xf1, 0xf4, 0x4e, 0xf5, 0x6a, 0xf6, 0x6b, 0xf8, + 0x56, 0xfa, 0x7f, 0xfc, 0x37, 0xfe, 0x59, 0xff, 0x59, 0x00, 0xf4, 0xff, 0x76, 0xfe, 0xa3, 0xfc, + 0xaa, 0xfb, 0x72, 0xfb, 0x2c, 0xfc, 0x0f, 0xfd, 0x53, 0xfd, 0xb2, 0xfc, 0xcc, 0xfa, 0x78, 0xf9, + 0xc2, 0xf6, 0x98, 0xf4, 0x59, 0xf2, 0x85, 0xf0, 0x66, 0xf0, 0x3a, 0xf0, 0x5a, 0xf1, 0x65, 0xf3, + 0x46, 0xf5, 0xda, 0xf5, 0x44, 0xf6, 0x64, 0xf6, 0x6d, 0xf7, 0xfd, 0xf9, 0x0d, 0xfc, 0xf1, 0xfe, + 0x4f, 0x02, 0xc4, 0x05, 0x50, 0x08, 0x83, 0x09, 0x48, 0x09, 0x32, 0x09, 0x7d, 0x09, 0x3e, 0x0a, + 0x18, 0x0b, 0xda, 0x0c, 0xfc, 0x0d, 0xfe, 0x0d, 0x9d, 0x0d, 0xce, 0x0c, 0x4d, 0x0b, 0x23, 0x0a, + 0x16, 0x09, 0x26, 0x09, 0xd7, 0x0a, 0x9e, 0x0b, 0x72, 0x0b, 0xfb, 0x0a, 0x8c, 0x0a, 0x0f, 0x0a, + 0x1c, 0x09, 0x0d, 0x08, 0xc0, 0x06, 0xca, 0x05, 0x57, 0x05, 0xa0, 0x05, 0xbe, 0x04, 0xc1, 0x03, + 0x59, 0x01, 0xe1, 0xfe, 0x0b, 0xfd, 0x3d, 0xfa, 0xe6, 0xf7, 0x28, 0xf5, 0xdd, 0xf2, 0x15, 0xf2, + 0x5c, 0xf2, 0xf3, 0xf1, 0x9a, 0xf1, 0xc6, 0xf0, 0x4c, 0xef, 0xbf, 0xee, 0xb6, 0xed, 0xde, 0xed, + 0x68, 0xef, 0x0f, 0xf2, 0x39, 0xf5, 0x9e, 0xf8, 0xd6, 0xfa, 0xbc, 0xfc, 0x2f, 0xff, 0xc5, 0x00, + 0xf6, 0x01, 0x68, 0x03, 0xbc, 0x04, 0x12, 0x06, 0x94, 0x06, 0x75, 0x07, 0xd7, 0x08, 0x65, 0x0a, + 0xea, 0x0b, 0x85, 0x0c, 0xf2, 0x0c, 0x87, 0x0c, 0x3c, 0x0c, 0xed, 0x0b, 0xe7, 0x0b, 0xd2, 0x0b, + 0x2b, 0x0b, 0xa7, 0x0a, 0xb7, 0x0a, 0xbe, 0x0b, 0xea, 0x0b, 0xf0, 0x0a, 0x7d, 0x08, 0xa2, 0x07, + 0x9b, 0x07, 0x9c, 0x07, 0x8b, 0x08, 0xe0, 0x07, 0x80, 0x07, 0x0d, 0x07, 0x96, 0x06, 0x90, 0x06, + 0xf9, 0x05, 0x86, 0x04, 0x80, 0x02, 0x52, 0x01, 0x11, 0x00, 0x80, 0xff, 0xc9, 0xfd, 0xcb, 0xfb, + 0xcb, 0xfa, 0xa9, 0xf9, 0x9f, 0xf8, 0x1e, 0xf7, 0x8b, 0xf5, 0xb4, 0xf3, 0xdc, 0xf2, 0xaf, 0xf2, + 0xe9, 0xf2, 0xd8, 0xf3, 0xf1, 0xf4, 0x0d, 0xf6, 0xd4, 0xf5, 0xf5, 0xf4, 0x00, 0xf5, 0x3a, 0xf6, + 0xc7, 0xf8, 0xcf, 0xfa, 0xfc, 0xfd, 0xc7, 0x00, 0x73, 0x02, 0x54, 0x03, 0x15, 0x03, 0x51, 0x03, + 0x58, 0x03, 0x81, 0x03, 0xfb, 0x03, 0xc5, 0x04, 0x6b, 0x05, 0x30, 0x06, 0x2d, 0x05, 0x60, 0x03, + 0x0d, 0x02, 0x09, 0xff, 0xb9, 0xfc, 0x52, 0xfa, 0x0e, 0xf9, 0x2a, 0xf9, 0x9e, 0xf8, 0xa6, 0xf8, + 0x2a, 0xfa, 0x56, 0xfb, 0xaf, 0xfb, 0x1f, 0xfc, 0x05, 0xfc, 0xdb, 0xfb, 0x22, 0xfc, 0x3d, 0xfd, + 0xa7, 0xff, 0x41, 0x02, 0x5b, 0x04, 0x05, 0x06, 0x8d, 0x06, 0xa6, 0x05, 0xed, 0x04, 0x2f, 0x04, + 0xa7, 0x03, 0xd6, 0x03, 0x06, 0x05, 0x2d, 0x06, 0x46, 0x06, 0x68, 0x05, 0x93, 0x04, 0x0a, 0x03, + 0x14, 0x02, 0xfd, 0x00, 0xbf, 0x00, 0x3a, 0x01, 0xca, 0x02, 0xb5, 0x03, 0x39, 0x03, 0xb7, 0x02, + 0x67, 0x02, 0xfc, 0x01, 0x97, 0x00, 0x94, 0xff, 0x62, 0xff, 0xe2, 0xff, 0x8f, 0xff, 0x0e, 0xfe, + 0xe8, 0xfd, 0x28, 0xfd, 0xe1, 0xfc, 0x1a, 0xfc, 0xbe, 0xf9, 0x17, 0xf7, 0xa4, 0xf4, 0xbb, 0xf2, + 0x2d, 0xf2, 0xbe, 0xf2, 0x79, 0xf2, 0x4e, 0xf2, 0x5a, 0xf1, 0x37, 0xf1, 0x0e, 0xf2, 0x91, 0xf1, + 0xd0, 0xf1, 0x35, 0xf3, 0x87, 0xf5, 0x40, 0xf8, 0xd7, 0xfb, 0xca, 0xfe, 0x33, 0x00, 0x79, 0x01, + 0xe2, 0x02, 0x85, 0x04, 0xf2, 0x05, 0xe3, 0x06, 0x3f, 0x07, 0x49, 0x06, 0x93, 0x06, 0xcf, 0x06, + 0xf3, 0x07, 0xc5, 0x08, 0xe3, 0x08, 0x4e, 0x09, 0x34, 0x09, 0xd0, 0x08, 0xf4, 0x07, 0x92, 0x07, + 0x7c, 0x07, 0xee, 0x07, 0xa1, 0x08, 0xab, 0x08, 0x4d, 0x09, 0x39, 0x0a, 0xdb, 0x0a, 0x13, 0x09, + 0xff, 0x07, 0xd1, 0x07, 0x51, 0x08, 0x29, 0x09, 0x98, 0x08, 0xce, 0x08, 0x35, 0x09, 0x9c, 0x08, + 0x4e, 0x07, 0x90, 0x06, 0xbc, 0x05, 0x27, 0x05, 0xca, 0x04, 0xaf, 0x03, 0x92, 0x02, 0x22, 0x00, + 0x36, 0xfe, 0x38, 0xfd, 0xc9, 0xfb, 0x69, 0xfa, 0xe5, 0xf8, 0x4b, 0xf7, 0x92, 0xf6, 0xa6, 0xf6, + 0x9f, 0xf6, 0xc8, 0xf6, 0x9d, 0xf7, 0x8d, 0xf8, 0x79, 0xf9, 0x5a, 0xf9, 0x66, 0xf9, 0x05, 0xf9, + 0xab, 0xf8, 0xe6, 0xf9, 0x4a, 0xfc, 0x50, 0xff, 0x71, 0x01, 0x3a, 0x02, 0xb4, 0x01, 0x14, 0x01, + 0x8b, 0x00, 0xc4, 0xff, 0x13, 0xff, 0xf3, 0xfd, 0xc2, 0xfd, 0x4e, 0xfe, 0x32, 0xff, 0x20, 0xfe, + 0x96, 0xfc, 0x0b, 0xfb, 0x22, 0xf9, 0xd6, 0xf7, 0x96, 0xf5, 0x15, 0xf4, 0xf2, 0xf3, 0xcd, 0xf4, + 0xd1, 0xf5, 0x7b, 0xf7, 0x48, 0xf9, 0xc6, 0xfa, 0xd8, 0xfb, 0xc5, 0xfb, 0xdd, 0xfc, 0x71, 0xfe, + 0xff, 0xff, 0x5a, 0x02, 0x65, 0x05, 0x4d, 0x08, 0xf4, 0x0a, 0xbe, 0x0c, 0xf5, 0x0c, 0x9c, 0x0c, + 0xa6, 0x0b, 0xe5, 0x0a, 0x3a, 0x0b, 0x6d, 0x0b, 0xb7, 0x0c, 0x19, 0x0c, 0x1f, 0x0b, 0x7b, 0x0a, + 0x88, 0x09, 0x38, 0x09, 0x4e, 0x08, 0x4a, 0x08, 0xdf, 0x08, 0x79, 0x09, 0x09, 0x0a, 0x65, 0x0a, + 0xc7, 0x0a, 0xd8, 0x09, 0x64, 0x08, 0xd5, 0x06, 0x81, 0x06, 0xa5, 0x05, 0x69, 0x05, 0x2d, 0x04, + 0xbe, 0x01, 0xee, 0x00, 0x9b, 0xff, 0xd6, 0xfe, 0x79, 0xfc, 0x17, 0xf9, 0x86, 0xf6, 0x97, 0xf3, + 0xb9, 0xf0, 0xf9, 0xee, 0x72, 0xee, 0x47, 0xee, 0x9e, 0xee, 0xad, 0xed, 0x29, 0xed, 0x69, 0xed, + 0x82, 0xed, 0x21, 0xee, 0x63, 0xef, 0x70, 0xf1, 0xde, 0xf4, 0x87, 0xf8, 0x49, 0xfb, 0xb4, 0xfd, + 0xf7, 0xff, 0xdc, 0x01, 0x57, 0x03, 0x22, 0x04, 0x5f, 0x05, 0x3d, 0x06, 0x4d, 0x06, 0x5f, 0x07, + 0xfa, 0x07, 0x79, 0x08, 0x0a, 0x09, 0x61, 0x09, 0x90, 0x09, 0xaa, 0x09, 0x79, 0x08, 0xcc, 0x06, + 0x59, 0x06, 0x86, 0x06, 0x3d, 0x07, 0x5c, 0x07, 0x81, 0x07, 0x83, 0x07, 0xd3, 0x07, 0x56, 0x08, + 0x61, 0x07, 0x44, 0x07, 0xba, 0x06, 0xb1, 0x05, 0xa6, 0x05, 0xf2, 0x05, 0x47, 0x06, 0xf6, 0x05, + 0x81, 0x04, 0xc6, 0x02, 0x88, 0x01, 0x2e, 0x00, 0xaa, 0xff, 0xdb, 0xfd, 0xcf, 0xfb, 0xc3, 0xfa, + 0x95, 0xf9, 0x40, 0xf8, 0x72, 0xf6, 0xec, 0xf4, 0xa8, 0xf3, 0x5b, 0xf3, 0x68, 0xf2, 0xf2, 0xf0, + 0x1a, 0xf0, 0xc9, 0xf0, 0xd1, 0xf1, 0x57, 0xf2, 0xd5, 0xf4, 0x9a, 0xf6, 0xfb, 0xf5, 0x26, 0xf6, + 0x85, 0xf6, 0x06, 0xf7, 0x37, 0xf9, 0x10, 0xfc, 0xa0, 0xfe, 0x8c, 0x00, 0x84, 0x02, 0x49, 0x03, + 0x96, 0x04, 0xb4, 0x04, 0x46, 0x04, 0x1c, 0x04, 0xef, 0x02, 0x42, 0x03, 0xed, 0x03, 0x7d, 0x05, + 0xb6, 0x03, 0xfa, 0x01, 0x23, 0x01, 0x54, 0x00, 0x61, 0xff, 0x22, 0xfd, 0x27, 0xfb, 0x1e, 0xfa, + 0x4f, 0xfa, 0x42, 0xfb, 0x45, 0xfd, 0xb0, 0xfe, 0x17, 0xff, 0xf7, 0xfe, 0x90, 0xfe, 0xaf, 0xff, + 0x59, 0x00, 0x6a, 0x00, 0x92, 0x01, 0x22, 0x03, 0x00, 0x05, 0x01, 0x07, 0x61, 0x08, 0x17, 0x08, + 0x81, 0x06, 0x98, 0x05, 0x2a, 0x05, 0xbe, 0x04, 0xd1, 0x03, 0xd0, 0x04, 0x76, 0x05, 0xab, 0x05, + 0x02, 0x05, 0xa0, 0x03, 0x57, 0x03, 0x93, 0x03, 0x28, 0x04, 0x97, 0x04, 0x7e, 0x05, 0xa6, 0x06, + 0xae, 0x07, 0xcc, 0x07, 0xf4, 0x07, 0x41, 0x07, 0xca, 0x05, 0xc3, 0x04, 0xae, 0x03, 0xab, 0x03, + 0x38, 0x03, 0x6f, 0x02, 0x72, 0x02, 0xdc, 0x01, 0xdc, 0x00, 0xb3, 0xfe, 0x27, 0xfc, 0x4a, 0xfa, + 0xa2, 0xf7, 0x39, 0xf4, 0x95, 0xf2, 0x88, 0xf2, 0x11, 0xf3, 0x64, 0xf4, 0x65, 0xf4, 0x51, 0xf4, + 0x4d, 0xf4, 0x61, 0xf4, 0x4a, 0xf5, 0xb7, 0xf7, 0x66, 0xfa, 0xa4, 0xfc, 0x02, 0xff, 0x7d, 0x01, + 0xf8, 0x03, 0xdd, 0x05, 0x09, 0x07, 0xaa, 0x07, 0xc7, 0x07, 0x48, 0x08, 0x14, 0x08, 0x63, 0x07, + 0x38, 0x07, 0xb7, 0x06, 0xc7, 0x06, 0x77, 0x07, 0xac, 0x07, 0x1b, 0x07, 0xb1, 0x06, 0x6d, 0x06, + 0x93, 0x05, 0xf3, 0x04, 0x95, 0x04, 0x47, 0x05, 0x1f, 0x06, 0x33, 0x07, 0xdd, 0x07, 0x3c, 0x09, + 0xdb, 0x09, 0x5b, 0x09, 0x1c, 0x09, 0x48, 0x08, 0x3f, 0x08, 0x29, 0x08, 0xed, 0x07, 0xb2, 0x07, + 0x21, 0x07, 0xdd, 0x05, 0xc7, 0x04, 0x32, 0x04, 0x93, 0x03, 0x9d, 0x02, 0x18, 0x00, 0x25, 0xfe, + 0x8a, 0xfd, 0xf1, 0xfb, 0x29, 0xf9, 0x16, 0xf7, 0x62, 0xf5, 0x8b, 0xf4, 0x57, 0xf4, 0xf8, 0xf3, + 0x32, 0xf3, 0x75, 0xf2, 0x29, 0xf2, 0x7d, 0xf3, 0xc9, 0xf4, 0xa1, 0xf6, 0x48, 0xf8, 0xf1, 0xf7, + 0xea, 0xf7, 0x9f, 0xf7, 0x26, 0xf8, 0x63, 0xf9, 0x79, 0xfa, 0x2b, 0xfc, 0xbb, 0xfd, 0xe3, 0xfe, + 0x67, 0xff, 0xa1, 0xff, 0xa8, 0xfe, 0xb6, 0xfd, 0x85, 0xfc, 0xc3, 0xfb, 0xa9, 0xfa, 0x4e, 0xfa, + 0x61, 0xfb, 0xf4, 0xfa, 0x61, 0xfa, 0x46, 0xf9, 0x8f, 0xf8, 0xc6, 0xf7, 0x4e, 0xf6, 0x23, 0xf5, + 0xb6, 0xf4, 0x3f, 0xf5, 0x63, 0xf6, 0x45, 0xf8, 0xda, 0xf9, 0xa3, 0xfb, 0x8b, 0xfc, 0xe3, 0xfc, + 0x29, 0xfd, 0x8f, 0xfd, 0xf7, 0xfd, 0x82, 0xff, 0x6e, 0x02, 0xa3, 0x05, 0x30, 0x08, 0x16, 0x09, + 0xb9, 0x08, 0x0d, 0x09, 0x62, 0x08, 0x38, 0x07, 0xee, 0x05, 0x4d, 0x05, 0x7c, 0x06, 0x94, 0x07, + 0xa9, 0x08, 0x8e, 0x08, 0x3f, 0x07, 0x6f, 0x06, 0x5a, 0x06, 0xe2, 0x06, 0xd1, 0x07, 0x21, 0x09, + 0x8d, 0x09, 0x77, 0x0a, 0xb6, 0x0a, 0xf2, 0x0a, 0xeb, 0x09, 0x36, 0x08, 0xd8, 0x06, 0x19, 0x05, + 0xa4, 0x04, 0xe1, 0x03, 0xd0, 0x02, 0xa3, 0x01, 0x61, 0x00, 0x81, 0xff, 0xd7, 0xfd, 0xf0, 0xfa, + 0x63, 0xf7, 0x7b, 0xf4, 0xb2, 0xf1, 0xec, 0xef, 0x16, 0xef, 0x9a, 0xef, 0xc0, 0xf0, 0x90, 0xf0, + 0xe9, 0xf0, 0x43, 0xf1, 0xac, 0xf1, 0x86, 0xf2, 0x04, 0xf4, 0x84, 0xf6, 0x15, 0xf9, 0xa8, 0xfc, + 0x0d, 0x00, 0x42, 0x02, 0xf9, 0x03, 0x43, 0x05, 0xa3, 0x06, 0x34, 0x07, 0x53, 0x09, 0x9c, 0x0a, + 0x54, 0x0a, 0x04, 0x0a, 0x27, 0x0a, 0xf0, 0x0a, 0x14, 0x0b, 0xc9, 0x0a, 0x37, 0x0a, 0x0c, 0x0a, + 0xb4, 0x09, 0xd6, 0x09, 0x5c, 0x0a, 0x01, 0x0a, 0xee, 0x09, 0xe5, 0x09, 0xa9, 0x0a, 0x88, 0x0b, + 0x67, 0x0c, 0x9b, 0x0c, 0xc3, 0x0b, 0x27, 0x0b, 0x87, 0x0a, 0x4d, 0x0a, 0x02, 0x0a, 0x70, 0x09, + 0xd1, 0x08, 0x31, 0x08, 0x96, 0x06, 0x4e, 0x05, 0x46, 0x04, 0x8b, 0x02, 0x9b, 0x01, 0xe6, 0xff, + 0xe3, 0xfd, 0xf1, 0xfb, 0x17, 0xfa, 0x3a, 0xf8, 0x6f, 0xf6, 0x92, 0xf4, 0x9e, 0xf3, 0x70, 0xf3, + 0x45, 0xf3, 0xbb, 0xf2, 0x8b, 0xf2, 0x70, 0xf2, 0x0d, 0xf3, 0x44, 0xf4, 0xf3, 0xf5, 0xd0, 0xf7, + 0x0c, 0xf9, 0x10, 0xfa, 0xde, 0xf9, 0x42, 0xf9, 0x47, 0xfa, 0x80, 0xfb, 0xfd, 0xfc, 0xf5, 0xff, + 0x2c, 0x02, 0x0f, 0x03, 0x6b, 0x03, 0xa0, 0x03, 0xcf, 0x03, 0x5d, 0x02, 0x2a, 0x01, 0xfe, 0xff, + 0x9c, 0xff, 0x06, 0x00, 0xba, 0x00, 0x48, 0x01, 0x9b, 0x00, 0x68, 0xff, 0xe3, 0xfd, 0x58, 0xfc, + 0x7d, 0xfb, 0x70, 0xfb, 0x4e, 0xfb, 0x1a, 0xfb, 0xfb, 0xfb, 0x6e, 0xfd, 0x78, 0xff, 0x4a, 0x00, + 0xb6, 0xff, 0xea, 0xfe, 0x0c, 0xfe, 0xbb, 0xfd, 0x65, 0xfe, 0x20, 0x00, 0x96, 0x01, 0x5b, 0x03, + 0xea, 0x04, 0x27, 0x05, 0x8e, 0x04, 0xd4, 0x02, 0xa1, 0x01, 0xc3, 0xff, 0x0a, 0xff, 0xf8, 0xff, + 0xe0, 0x00, 0x39, 0x02, 0x27, 0x02, 0x26, 0x02, 0x03, 0x02, 0x0a, 0x02, 0x5c, 0x02, 0xf4, 0x02, + 0x3b, 0x04, 0x5e, 0x05, 0x0e, 0x07, 0x7f, 0x07, 0x5d, 0x07, 0xf7, 0x05, 0x15, 0x04, 0xb4, 0x02, + 0xd7, 0x01, 0x3e, 0x02, 0x72, 0x01, 0x43, 0x00, 0x7b, 0xff, 0x39, 0xff, 0x0c, 0xff, 0x03, 0xfd, + 0x1e, 0xfa, 0xde, 0xf6, 0xf9, 0xf3, 0x82, 0xf1, 0xdd, 0xf0, 0xd0, 0xf0, 0x39, 0xf1, 0x9f, 0xf1, + 0xa3, 0xf1, 0xb8, 0xf2, 0xe7, 0xf3, 0xc3, 0xf4, 0x41, 0xf5, 0x45, 0xf6, 0x64, 0xf8, 0x14, 0xfb, + 0x8e, 0xfe, 0xfb, 0x00, 0x09, 0x03, 0x16, 0x04, 0x1c, 0x05, 0xe1, 0x05, 0xee, 0x05, 0xbe, 0x06, + 0xb7, 0x06, 0x17, 0x07, 0xdc, 0x06, 0x38, 0x06, 0x72, 0x05, 0xab, 0x05, 0xbd, 0x05, 0x5a, 0x05, + 0xbb, 0x04, 0x25, 0x04, 0xb4, 0x04, 0x86, 0x04, 0x32, 0x05, 0xda, 0x05, 0xa2, 0x06, 0xfd, 0x07, + 0xde, 0x08, 0x88, 0x0a, 0xde, 0x0b, 0x21, 0x0c, 0xae, 0x0b, 0x75, 0x0b, 0xff, 0x0a, 0x31, 0x0a, + 0xaf, 0x09, 0x75, 0x09, 0x85, 0x09, 0x5a, 0x08, 0x13, 0x07, 0x86, 0x05, 0x85, 0x04, 0x18, 0x04, + 0x7a, 0x02, 0x45, 0x00, 0xdb, 0xfd, 0x5c, 0xfb, 0x36, 0xf9, 0xed, 0xf7, 0x32, 0xf7, 0x6e, 0xf6, + 0xcc, 0xf5, 0x44, 0xf5, 0x6e, 0xf5, 0x6a, 0xf5, 0x93, 0xf5, 0x68, 0xf6, 0xc7, 0xf6, 0x83, 0xf8, + 0x9c, 0xfa, 0x0f, 0xfc, 0xc5, 0xfc, 0x5a, 0xfc, 0x68, 0xfb, 0x8c, 0xfb, 0xaa, 0xfc, 0x48, 0xfd, + 0x70, 0xfe, 0x5d, 0xff, 0xfb, 0x00, 0xa4, 0x01, 0x4f, 0x01, 0x2c, 0x00, 0x0d, 0xfe, 0x58, 0xfd, + 0x95, 0xfb, 0xdb, 0xfa, 0x4e, 0xfb, 0xa0, 0xfb, 0x2c, 0xfc, 0x0b, 0xfc, 0xd4, 0xfb, 0x4a, 0xfb, + 0x81, 0xfa, 0xad, 0xf9, 0x6e, 0xf9, 0xd0, 0xf9, 0x86, 0xfa, 0x17, 0xfc, 0xf9, 0xfd, 0x01, 0x00, + 0xc1, 0x00, 0x61, 0x00, 0x67, 0x00, 0xe9, 0x00, 0xdb, 0x01, 0x80, 0x02, 0xea, 0x03, 0xb6, 0x05, + 0x8f, 0x07, 0x9d, 0x09, 0x58, 0x0a, 0x44, 0x09, 0xc8, 0x06, 0x16, 0x05, 0xb0, 0x03, 0x12, 0x04, + 0x5f, 0x05, 0xba, 0x05, 0x2f, 0x06, 0x5a, 0x06, 0x4c, 0x06, 0x41, 0x06, 0x5a, 0x06, 0xea, 0x05, + 0x17, 0x06, 0xb5, 0x06, 0xf9, 0x07, 0x77, 0x09, 0x72, 0x09, 0xf8, 0x08, 0x65, 0x07, 0x22, 0x06, + 0xac, 0x04, 0xc6, 0x02, 0xf7, 0x01, 0x59, 0x01, 0x5a, 0x00, 0x76, 0xff, 0x2a, 0xfe, 0xc6, 0xfc, + 0x3f, 0xfb, 0x63, 0xf8, 0x98, 0xf5, 0xa6, 0xf2, 0xd3, 0xef, 0x71, 0xee, 0xcb, 0xed, 0x3c, 0xee, + 0x54, 0xef, 0x30, 0xf0, 0xe6, 0xf0, 0xd7, 0xf1, 0xdf, 0xf2, 0xbd, 0xf3, 0x4d, 0xf5, 0xd0, 0xf7, + 0xab, 0xfa, 0x1a, 0xfd, 0x75, 0xff, 0x13, 0x02, 0x0f, 0x04, 0x5c, 0x06, 0x52, 0x07, 0xb7, 0x07, + 0x8c, 0x08, 0x51, 0x09, 0x1b, 0x0a, 0xd7, 0x09, 0xd1, 0x08, 0x95, 0x07, 0x28, 0x07, 0x0f, 0x07, + 0x7f, 0x07, 0xef, 0x07, 0x65, 0x07, 0xca, 0x06, 0x03, 0x06, 0xd6, 0x06, 0x95, 0x07, 0x0e, 0x08, + 0xc1, 0x08, 0xf5, 0x08, 0xf9, 0x09, 0xf4, 0x0a, 0xa7, 0x0b, 0x0a, 0x0b, 0x91, 0x09, 0x68, 0x08, + 0x7d, 0x07, 0x9a, 0x06, 0x78, 0x05, 0x85, 0x04, 0x0f, 0x03, 0xcc, 0x01, 0x40, 0x00, 0x24, 0xfe, + 0xa1, 0xfc, 0x11, 0xfb, 0x02, 0xf9, 0xab, 0xf6, 0x9a, 0xf4, 0x73, 0xf2, 0x15, 0xf1, 0xc3, 0xf0, + 0x1b, 0xf0, 0x5a, 0xf0, 0x1c, 0xf0, 0x7a, 0xf0, 0xbd, 0xf0, 0x68, 0xf1, 0x96, 0xf2, 0x6c, 0xf3, + 0x36, 0xf6, 0x9f, 0xf8, 0xf6, 0xf9, 0xe7, 0xf9, 0x8f, 0xf9, 0x0f, 0xfa, 0x02, 0xfb, 0x23, 0xfc, + 0x14, 0xfd, 0x97, 0xfe, 0x05, 0x00, 0x5d, 0x02, 0xaa, 0x03, 0xe0, 0x03, 0xf3, 0x02, 0x09, 0x01, + 0x3f, 0x00, 0x89, 0xff, 0xef, 0xff, 0xfc, 0x00, 0xbb, 0x01, 0x0d, 0x02, 0x6e, 0x02, 0xfd, 0x02, + 0x9b, 0x02, 0xf0, 0x01, 0x01, 0x01, 0x52, 0x00, 0xf8, 0xff, 0xb4, 0x00, 0xc2, 0x01, 0x81, 0x02, + 0xbc, 0x03, 0x89, 0x04, 0xd4, 0x03, 0x7b, 0x02, 0x65, 0x01, 0xca, 0x00, 0xee, 0x00, 0xb8, 0x01, + 0x8c, 0x02, 0xfe, 0x03, 0xfa, 0x04, 0x9b, 0x05, 0xd4, 0x04, 0xc0, 0x02, 0x4b, 0x01, 0xc6, 0xff, + 0xda, 0xff, 0x8d, 0x00, 0x7a, 0x01, 0xbe, 0x02, 0x97, 0x03, 0xb3, 0x03, 0x1f, 0x04, 0xac, 0x04, + 0xba, 0x04, 0x99, 0x05, 0xb4, 0x06, 0x38, 0x08, 0xab, 0x08, 0xa7, 0x08, 0xc8, 0x08, 0xa1, 0x07, + 0xb0, 0x06, 0x3d, 0x05, 0x78, 0x03, 0x9f, 0x02, 0x6b, 0x02, 0x48, 0x02, 0x38, 0x01, 0xa7, 0xff, + 0xae, 0xfd, 0xe8, 0xfb, 0xd5, 0xf9, 0x78, 0xf8, 0x8a, 0xf6, 0xef, 0xf3, 0x2c, 0xf2, 0x8b, 0xf1, + 0x46, 0xf2, 0x50, 0xf3, 0x87, 0xf4, 0xf3, 0xf4, 0xc2, 0xf5, 0xda, 0xf6, 0x5c, 0xf8, 0xbb, 0xfa, + 0xde, 0xfb, 0x3c, 0xfd, 0x2b, 0xff, 0x6d, 0x01, 0xc3, 0x03, 0xde, 0x04, 0x4d, 0x06, 0xce, 0x06, + 0x11, 0x07, 0xbf, 0x07, 0xba, 0x07, 0xcc, 0x07, 0x1e, 0x07, 0x26, 0x06, 0xea, 0x04, 0x78, 0x04, + 0x87, 0x04, 0xe5, 0x04, 0x76, 0x04, 0x2b, 0x04, 0xc3, 0x04, 0xef, 0x04, 0xa2, 0x05, 0x7c, 0x06, + 0x51, 0x07, 0xc9, 0x08, 0xeb, 0x09, 0x29, 0x0c, 0x09, 0x0e, 0x36, 0x0e, 0x84, 0x0d, 0xc9, 0x0c, + 0x06, 0x0c, 0x18, 0x0c, 0x41, 0x0b, 0x26, 0x0a, 0x6d, 0x09, 0x6b, 0x08, 0x61, 0x07, 0xe5, 0x05, + 0x44, 0x04, 0x47, 0x02, 0xd9, 0xff, 0x6c, 0xfd, 0x18, 0xfb, 0x46, 0xf9, 0x23, 0xf7, 0x6e, 0xf5, + 0xaa, 0xf4, 0x06, 0xf4, 0xb5, 0xf3, 0xa0, 0xf3, 0x04, 0xf4, 0xa0, 0xf3, 0x35, 0xf3, 0x29, 0xf4, + 0xea, 0xf5, 0xfe, 0xf7, 0x33, 0xf9, 0x14, 0xfa, 0x21, 0xfa, 0xc9, 0xf9, 0xfa, 0xf8, 0x77, 0xf8, + 0x92, 0xf8, 0x35, 0xf9, 0xfb, 0xf9, 0x25, 0xfb, 0xb0, 0xfc, 0x26, 0xfd, 0xa3, 0xfd, 0x42, 0xfc, + 0x83, 0xfa, 0x64, 0xf9, 0x39, 0xf8, 0xd0, 0xf7, 0xb6, 0xf8, 0x69, 0xfa, 0x42, 0xfb, 0x27, 0xfc, + 0x1e, 0xfc, 0x9d, 0xfc, 0x84, 0xfc, 0xdc, 0xfb, 0xa5, 0xfc, 0x4f, 0xfd, 0xa0, 0xfd, 0xcb, 0xfd, + 0x05, 0xff, 0x78, 0x00, 0x5d, 0x01, 0xb0, 0x01, 0xbc, 0x00, 0x44, 0x00, 0x10, 0x00, 0xa0, 0x00, + 0xa7, 0x01, 0x4d, 0x02, 0x2e, 0x03, 0x21, 0x03, 0x02, 0x03, 0x51, 0x02, 0x88, 0x01, 0xd1, 0x00, + 0x4c, 0xff, 0xa7, 0xfe, 0x1a, 0xff, 0x7f, 0x00, 0x5d, 0x01, 0x68, 0x02, 0xd6, 0x02, 0x26, 0x03, + 0xa4, 0x03, 0x52, 0x04, 0x8d, 0x05, 0x46, 0x06, 0x67, 0x07, 0x15, 0x08, 0x29, 0x09, 0x8a, 0x09, + 0xc2, 0x08, 0x4b, 0x08, 0x65, 0x07, 0xd3, 0x05, 0x2c, 0x05, 0xa1, 0x04, 0xc5, 0x03, 0xe4, 0x02, + 0x8a, 0x01, 0x19, 0x00, 0x96, 0xfe, 0x54, 0xfc, 0xa7, 0xfa, 0x79, 0xf8, 0xf8, 0xf5, 0x63, 0xf4, + 0xb5, 0xf2, 0xd0, 0xf2, 0x09, 0xf4, 0x87, 0xf4, 0xdf, 0xf4, 0x67, 0xf6, 0x26, 0xf8, 0xcc, 0xf8, + 0xae, 0xf9, 0x84, 0xf9, 0x60, 0xfa, 0x21, 0xfc, 0x99, 0xfe, 0x05, 0x01, 0x87, 0x02, 0xcb, 0x03, + 0x2b, 0x04, 0x02, 0x05, 0xfc, 0x05, 0x0e, 0x06, 0x2d, 0x05, 0x4e, 0x04, 0xc7, 0x03, 0x06, 0x04, + 0xd2, 0x04, 0x0b, 0x05, 0xcf, 0x05, 0xcf, 0x05, 0x99, 0x06, 0x5d, 0x07, 0xf1, 0x07, 0xe3, 0x08, + 0x2f, 0x09, 0xac, 0x0a, 0xba, 0x0c, 0x31, 0x0e, 0x70, 0x0f, 0x5f, 0x10, 0xfe, 0x10, 0xaf, 0x10, + 0x99, 0x0f, 0xc1, 0x0d, 0xa1, 0x0c, 0x37, 0x0b, 0x36, 0x0a, 0x34, 0x09, 0xd9, 0x07, 0x8f, 0x06, + 0x84, 0x04, 0x57, 0x02, 0x07, 0x00, 0x11, 0xfe, 0xb1, 0xfb, 0x0b, 0xf9, 0x29, 0xf7, 0x59, 0xf5, + 0xd4, 0xf4, 0x9e, 0xf3, 0xe4, 0xf2, 0x83, 0xf2, 0xed, 0xf1, 0x9a, 0xf2, 0xc5, 0xf2, 0x12, 0xf4, + 0x70, 0xf5, 0x74, 0xf6, 0x6b, 0xf7, 0xbe, 0xf8, 0xc4, 0xf9, 0x8d, 0xfa, 0x1e, 0xfb, 0x8b, 0xfa, + 0x45, 0xfa, 0x19, 0xfa, 0x25, 0xfb, 0xb8, 0xfc, 0x4c, 0xfe, 0x66, 0xff, 0x88, 0xff, 0x66, 0x00, + 0x88, 0x00, 0x40, 0x00, 0x23, 0x00, 0xf9, 0xfe, 0xce, 0xfe, 0xee, 0xff, 0xd5, 0x01, 0x57, 0x03, + 0x24, 0x04, 0x5b, 0x04, 0x81, 0x04, 0x4e, 0x04, 0x12, 0x04, 0xd8, 0x03, 0xc2, 0x02, 0x98, 0x02, + 0xa8, 0x02, 0x87, 0x02, 0xe5, 0x02, 0x0a, 0x03, 0xc3, 0x02, 0x25, 0x01, 0xe4, 0xff, 0x70, 0xfe, + 0xdb, 0xfd, 0x29, 0xfe, 0xdd, 0xfd, 0xf3, 0xfd, 0x9f, 0xfd, 0x09, 0xfe, 0x94, 0xfd, 0x6b, 0xfc, + 0x32, 0xfb, 0x15, 0xfa, 0xd7, 0xf9, 0x8f, 0xfa, 0x5b, 0xfb, 0x8b, 0xfc, 0xef, 0xfd, 0x96, 0xfe, + 0xae, 0xff, 0x9e, 0x00, 0x64, 0x01, 0x17, 0x02, 0x87, 0x02, 0xc0, 0x03, 0x8c, 0x04, 0xf5, 0x05, + 0xd6, 0x06, 0xdf, 0x05, 0x8c, 0x05, 0xf1, 0x04, 0xe1, 0x03, 0x2b, 0x03, 0x60, 0x02, 0xef, 0x00, + 0xec, 0xff, 0xd6, 0xfe, 0x21, 0xfe, 0x3f, 0xfd, 0xdb, 0xfb, 0x61, 0xfa, 0xca, 0xf8, 0x72, 0xf7, + 0x1b, 0xf6, 0xe1, 0xf4, 0x5a, 0xf4, 0xd7, 0xf4, 0x8c, 0xf6, 0x77, 0xf7, 0xb0, 0xf8, 0x96, 0xf9, + 0x55, 0xfa, 0x03, 0xfb, 0x0e, 0xfb, 0x83, 0xfb, 0x27, 0xfc, 0x2c, 0xfe, 0x16, 0x00, 0x51, 0x01, + 0x46, 0x02, 0xc4, 0x02, 0xf1, 0x02, 0xa3, 0x02, 0x67, 0x02, 0x5f, 0x01, 0xf4, 0x00, 0x45, 0x00, + 0xba, 0xff, 0xa6, 0xff, 0xd1, 0xff, 0xb9, 0x00, 0x7f, 0x01, 0x9b, 0x02, 0x0a, 0x03, 0xa1, 0x03, + 0x00, 0x05, 0x82, 0x06, 0xb0, 0x08, 0xc8, 0x0a, 0x0f, 0x0c, 0xcf, 0x0c, 0x0a, 0x0e, 0x03, 0x0f, + 0xfa, 0x0f, 0xe8, 0x0f, 0xf7, 0x0e, 0x2b, 0x0e, 0xe7, 0x0c, 0xd0, 0x0c, 0x24, 0x0d, 0xea, 0x0b, + 0x61, 0x09, 0x8f, 0x06, 0x39, 0x04, 0x95, 0x02, 0x24, 0x01, 0x0a, 0xff, 0x4d, 0xfc, 0x3f, 0xfa, + 0xae, 0xf8, 0x02, 0xf8, 0x3a, 0xf7, 0x81, 0xf6, 0xc0, 0xf5, 0x63, 0xf5, 0x2a, 0xf6, 0x60, 0xf6, + 0x00, 0xf7, 0x69, 0xf7, 0x1d, 0xf8, 0x65, 0xf8, 0x11, 0xf9, 0xb4, 0xf9, 0x93, 0xfa, 0x1d, 0xfb, + 0x69, 0xfa, 0x6e, 0xf9, 0xb7, 0xf8, 0xf9, 0xf8, 0xc8, 0xf9, 0x84, 0xfa, 0x82, 0xfb, 0x45, 0xfc, + 0xea, 0xfc, 0xbd, 0xfc, 0x26, 0xfc, 0x6f, 0xfb, 0xa4, 0xfa, 0xdc, 0xfa, 0x5d, 0xfc, 0x0b, 0xfe, + 0xc7, 0xff, 0x33, 0x01, 0x60, 0x02, 0x8e, 0x03, 0x2f, 0x04, 0x02, 0x04, 0xcd, 0x03, 0x86, 0x03, + 0xa3, 0x03, 0x59, 0x04, 0xef, 0x04, 0x86, 0x05, 0x1e, 0x06, 0xc2, 0x05, 0x4b, 0x05, 0x1c, 0x05, + 0xc9, 0x03, 0xc9, 0x02, 0x03, 0x02, 0xfd, 0x01, 0x1e, 0x02, 0x60, 0x02, 0x31, 0x03, 0xe7, 0x02, + 0xc6, 0x01, 0xd7, 0x00, 0x6a, 0x00, 0x0c, 0x00, 0xfb, 0xff, 0xfa, 0xff, 0xb3, 0x00, 0x64, 0x02, + 0x5a, 0x03, 0xdf, 0x03, 0x17, 0x04, 0x4b, 0x04, 0x55, 0x04, 0x5f, 0x04, 0x4b, 0x04, 0xf3, 0x03, + 0x78, 0x04, 0xcc, 0x04, 0x22, 0x04, 0x67, 0x03, 0x79, 0x02, 0xfe, 0x00, 0xe6, 0xff, 0x1b, 0xff, + 0x19, 0xfe, 0xa6, 0xfd, 0x92, 0xfc, 0x89, 0xfb, 0x7c, 0xfa, 0xd2, 0xf8, 0xc1, 0xf7, 0x15, 0xf7, + 0x06, 0xf6, 0x56, 0xf4, 0x2d, 0xf3, 0xe4, 0xf2, 0xd7, 0xf3, 0xba, 0xf5, 0xd0, 0xf6, 0x59, 0xf8, + 0xe4, 0xf8, 0xa7, 0xf9, 0x21, 0xfb, 0xf3, 0xfb, 0xf5, 0xfc, 0x76, 0xfd, 0x1a, 0xff, 0x1a, 0x01, + 0x12, 0x03, 0xd6, 0x04, 0x5c, 0x05, 0x18, 0x05, 0xe5, 0x04, 0x91, 0x04, 0xe5, 0x03, 0x5c, 0x04, + 0xee, 0x03, 0x7d, 0x03, 0x2b, 0x03, 0x5f, 0x03, 0x5e, 0x04, 0xff, 0x04, 0x9a, 0x05, 0xb6, 0x05, + 0x72, 0x06, 0xc7, 0x07, 0x3e, 0x08, 0x71, 0x09, 0xc5, 0x0a, 0x3c, 0x0b, 0x15, 0x0c, 0xea, 0x0c, + 0xfd, 0x0c, 0x65, 0x0d, 0xa6, 0x0c, 0x45, 0x0b, 0xf0, 0x09, 0x99, 0x08, 0xee, 0x07, 0x03, 0x07, + 0x75, 0x05, 0xa8, 0x03, 0x69, 0x01, 0xee, 0xfe, 0x98, 0xfc, 0xf0, 0xfa, 0x2e, 0xf8, 0x7d, 0xf6, + 0x6b, 0xf5, 0x2e, 0xf4, 0xcd, 0xf3, 0xcc, 0xf2, 0x77, 0xf2, 0x25, 0xf2, 0xa8, 0xf2, 0xf8, 0xf3, + 0x44, 0xf4, 0x9a, 0xf4, 0x39, 0xf5, 0xc6, 0xf5, 0x91, 0xf6, 0x0f, 0xf8, 0xb4, 0xf8, 0x70, 0xf9, + 0xb1, 0xf9, 0xf9, 0xf9, 0x25, 0xfa, 0xad, 0xf9, 0x53, 0xf9, 0x39, 0xf9, 0x0a, 0xfa, 0xee, 0xfa, + 0x93, 0xfc, 0xd8, 0xfd, 0xee, 0xfd, 0x22, 0xfe, 0x31, 0xfe, 0x40, 0xfe, 0x7f, 0xfe, 0xb3, 0xff, + 0x47, 0x01, 0xaf, 0x03, 0x6b, 0x05, 0x37, 0x06, 0x4a, 0x07, 0xb1, 0x07, 0x5b, 0x07, 0x44, 0x07, + 0xda, 0x06, 0x46, 0x06, 0xaf, 0x05, 0x86, 0x05, 0x42, 0x05, 0x5f, 0x05, 0x61, 0x05, 0xc3, 0x04, + 0x0e, 0x03, 0xa8, 0x00, 0xaf, 0xff, 0xe9, 0xfe, 0x60, 0xfe, 0x33, 0xfe, 0xd9, 0xfd, 0xc5, 0xfd, + 0xde, 0xfd, 0x3b, 0xfe, 0x53, 0xfe, 0x94, 0xfd, 0x65, 0xfc, 0x89, 0xfc, 0xfc, 0xfc, 0x0e, 0xff, + 0xe0, 0x01, 0x15, 0x03, 0xe1, 0x03, 0xd6, 0x03, 0xbd, 0x03, 0x2c, 0x04, 0xf1, 0x04, 0xc7, 0x05, + 0x7f, 0x05, 0xae, 0x05, 0xb7, 0x05, 0xfe, 0x05, 0x18, 0x06, 0x4c, 0x05, 0x3f, 0x03, 0x24, 0x01, + 0x1e, 0x00, 0xe6, 0xff, 0xe4, 0xff, 0xee, 0xfe, 0xea, 0xfd, 0xe9, 0xfc, 0x19, 0xfc, 0xf2, 0xfb, + 0xe6, 0xfa, 0x9f, 0xf9, 0xfe, 0xf8, 0x51, 0xf8, 0x26, 0xf8, 0xfc, 0xf8, 0x54, 0xfa, 0xf4, 0xfa, + 0x5f, 0xfc, 0xce, 0xfc, 0x2c, 0xfd, 0xba, 0xfd, 0xf9, 0xfd, 0xea, 0xfe, 0x3b, 0xff, 0x08, 0x00, + 0x72, 0x01, 0x97, 0x02, 0x63, 0x03, 0xc7, 0x03, 0x3b, 0x03, 0xd8, 0x02, 0x0b, 0x02, 0x34, 0x01, + 0x2c, 0x01, 0x7a, 0x00, 0x6b, 0x00, 0x74, 0x00, 0xfd, 0x00, 0x53, 0x01, 0x08, 0x02, 0x05, 0x03, + 0xf3, 0x03, 0x6e, 0x05, 0xa3, 0x06, 0x87, 0x07, 0xac, 0x08, 0x17, 0x0a, 0xe9, 0x0a, 0x36, 0x0c, + 0x92, 0x0d, 0xf1, 0x0d, 0xcd, 0x0e, 0xae, 0x0e, 0xe1, 0x0d, 0x55, 0x0d, 0x20, 0x0c, 0xe1, 0x0a, + 0x92, 0x09, 0x8c, 0x08, 0x38, 0x07, 0x91, 0x05, 0x61, 0x03, 0x3c, 0x01, 0xf7, 0xff, 0x0c, 0xfe, + 0x5d, 0xfc, 0x32, 0xfa, 0x4b, 0xf8, 0xb8, 0xf7, 0x17, 0xf7, 0x1f, 0xf7, 0xa2, 0xf6, 0x91, 0xf6, + 0x04, 0xf7, 0x23, 0xf7, 0x31, 0xf7, 0x30, 0xf7, 0x16, 0xf7, 0x16, 0xf7, 0xb4, 0xf7, 0xe5, 0xf7, + 0xd5, 0xf8, 0x06, 0xf9, 0x54, 0xf8, 0x4e, 0xf7, 0x22, 0xf6, 0x20, 0xf5, 0xa2, 0xf4, 0x8f, 0xf5, + 0x3c, 0xf6, 0xf1, 0xf6, 0xcb, 0xf7, 0x16, 0xf8, 0x79, 0xf8, 0x57, 0xf9, 0x08, 0xf9, 0xea, 0xf8, + 0xd6, 0xf9, 0xb0, 0xfb, 0xa3, 0xfe, 0x49, 0x01, 0xe4, 0x02, 0x96, 0x03, 0x6d, 0x03, 0x44, 0x03, + 0xb7, 0x03, 0x29, 0x04, 0x71, 0x04, 0x9c, 0x03, 0xaf, 0x03, 0xd9, 0x03, 0x0c, 0x05, 0x4f, 0x05, + 0x74, 0x04, 0xa4, 0x02, 0x50, 0x00, 0xc8, 0xff, 0x24, 0xff, 0x65, 0xff, 0x52, 0xff, 0xf2, 0xfe, + 0xec, 0xfe, 0xef, 0xfe, 0x1e, 0xff, 0x42, 0xff, 0xd3, 0xfe, 0x74, 0xfe, 0x3e, 0xff, 0xb4, 0xff, + 0xde, 0x00, 0xf9, 0x02, 0x7d, 0x04, 0xed, 0x04, 0xcd, 0x04, 0x2b, 0x04, 0xe3, 0x03, 0x68, 0x04, + 0xa0, 0x04, 0xc1, 0x03, 0xb1, 0x03, 0x03, 0x04, 0x49, 0x04, 0xee, 0x03, 0xab, 0x02, 0x2a, 0x00, + 0xbe, 0xfe, 0x42, 0xfd, 0x42, 0xfc, 0xcc, 0xfb, 0x1b, 0xfb, 0xfe, 0xfa, 0xd1, 0xfa, 0x20, 0xfa, + 0x16, 0xfa, 0xf8, 0xf9, 0x6b, 0xf9, 0x27, 0xf9, 0xe9, 0xf8, 0x8b, 0xf8, 0x06, 0xf9, 0x1d, 0xf9, + 0x74, 0xfa, 0x37, 0xfc, 0x8a, 0xfd, 0x1d, 0xff, 0x70, 0xff, 0x26, 0x00, 0x04, 0x00, 0x8c, 0x00, + 0x23, 0x02, 0x29, 0x03, 0x52, 0x03, 0x5b, 0x04, 0xb8, 0x04, 0xe9, 0x04, 0xc8, 0x04, 0xc1, 0x03, + 0x9d, 0x04, 0x83, 0x05, 0x0f, 0x03, 0xb6, 0x00, 0x0a, 0x02, 0xb9, 0x01, 0x38, 0x00, 0xb9, 0x01, + 0x36, 0x05, 0x33, 0x08, 0xd1, 0x0c, 0xed, 0x0c, 0x6a, 0x0e, 0xef, 0x0c, 0xae, 0x0c, 0x41, 0x11, + 0x10, 0x13, 0xdb, 0x13, 0x8d, 0x14, 0xc1, 0x15, 0xd9, 0x13, 0xc8, 0x13, 0xbf, 0x10, 0x9a, 0x0e, + 0x2c, 0x0f, 0xd1, 0x09, 0x0b, 0x04, 0xb2, 0xff, 0x75, 0xfd, 0x00, 0xfb, 0xb5, 0xf8, 0x48, 0xf9, + 0x73, 0xf9, 0x03, 0xf9, 0x11, 0xf4, 0x42, 0xee, 0x51, 0xeb, 0xc0, 0xe8, 0x09, 0xea, 0xf8, 0xee, + 0xee, 0xee, 0x9a, 0xee, 0x0b, 0xf2, 0x0f, 0xf4, 0xa6, 0xf4, 0x29, 0xf4, 0xdd, 0xf1, 0xe5, 0xf3, + 0xb1, 0xf8, 0x46, 0xf9, 0xd8, 0xfa, 0x2f, 0xfa, 0x43, 0xf5, 0x2d, 0xf0, 0x7c, 0xf0, 0xcf, 0xeb, + 0xbd, 0xed, 0xa9, 0xf3, 0x7a, 0xf8, 0xec, 0xfb, 0xf1, 0x03, 0x0c, 0x06, 0x52, 0x07, 0xc5, 0x0a, + 0x33, 0x07, 0x73, 0x04, 0x83, 0x05, 0x45, 0x07, 0x80, 0x09, 0xc6, 0x0b, 0x68, 0x08, 0x03, 0x06, + 0xe4, 0x08, 0x86, 0x0b, 0xde, 0x09, 0xdd, 0x0a, 0xd5, 0x0b, 0xcf, 0x0b, 0xc2, 0x0f, 0x4c, 0x12, + 0x88, 0x11, 0x93, 0x13, 0x04, 0x16, 0x69, 0x13, 0xaf, 0x12, 0x23, 0x0f, 0xbd, 0x0a, 0x34, 0x07, + 0xb2, 0x06, 0xf5, 0x07, 0xd7, 0x08, 0xf5, 0x0a, 0x5d, 0x0d, 0x04, 0x0c, 0x28, 0x0b, 0x10, 0x09, + 0x1a, 0x08, 0x24, 0x07, 0x36, 0x01, 0xdc, 0xfe, 0x9e, 0x00, 0x1c, 0xff, 0x97, 0xfc, 0x4d, 0xfe, + 0xc0, 0x01, 0x66, 0x00, 0xd7, 0xfe, 0x3f, 0x00, 0x1d, 0xfe, 0x7f, 0xfc, 0xd0, 0xfc, 0x3b, 0xfc, + 0xd8, 0xf7, 0x6e, 0xf6, 0xb0, 0xf2, 0x0a, 0xf3, 0x14, 0xf4, 0xe7, 0xf0, 0x94, 0xed, 0x45, 0xee, + 0xda, 0xed, 0x72, 0xec, 0xfc, 0xec, 0x7e, 0xeb, 0x15, 0xea, 0xa6, 0xeb, 0xe3, 0xe7, 0x8c, 0xe2, + 0x0c, 0xe4, 0x3e, 0xe2, 0xb3, 0xe1, 0xd0, 0xe4, 0x2c, 0xe6, 0xd1, 0xe4, 0xcc, 0xe5, 0xd0, 0xe7, + 0x71, 0xe9, 0xa3, 0xee, 0xaa, 0xef, 0xb1, 0xf3, 0x6d, 0xf7, 0xb8, 0xf7, 0xed, 0xf6, 0x88, 0xfa, + 0xb5, 0xfc, 0xda, 0xfd, 0x0f, 0x01, 0x65, 0x03, 0xea, 0x03, 0xfb, 0x04, 0x7d, 0x06, 0x95, 0x06, + 0xf3, 0x07, 0x1c, 0x0b, 0xcc, 0x0e, 0x5b, 0x12, 0x68, 0x14, 0xa5, 0x15, 0x2c, 0x14, 0x37, 0x14, + 0x6e, 0x13, 0x42, 0x13, 0xf3, 0x13, 0xb8, 0x15, 0xaf, 0x19, 0x86, 0x1d, 0xe1, 0x1c, 0x7f, 0x1f, + 0xf3, 0x1f, 0xd3, 0x1a, 0x31, 0x15, 0xf4, 0x11, 0x5b, 0x0f, 0x67, 0x0a, 0x80, 0x08, 0xc0, 0x05, + 0x0c, 0x04, 0x23, 0x03, 0xa3, 0x01, 0x44, 0x00, 0xce, 0xfd, 0xdc, 0xfb, 0x13, 0xfc, 0x1b, 0xfe, + 0xcf, 0xfc, 0xba, 0xfc, 0xfc, 0xfb, 0xc9, 0xfd, 0x67, 0xfb, 0x62, 0xfa, 0x4c, 0xf9, 0x2a, 0xf7, + 0xd0, 0xf5, 0x3a, 0xf6, 0x11, 0xf2, 0x17, 0xf3, 0x84, 0xf4, 0xe1, 0xf3, 0x5c, 0xf0, 0xe6, 0xeb, + 0x6b, 0xea, 0xdc, 0xe6, 0x7b, 0xe8, 0xdd, 0xe9, 0x6c, 0xe6, 0x56, 0xe6, 0x2a, 0xe5, 0x20, 0xe6, + 0xec, 0xe6, 0x60, 0xe9, 0x59, 0xef, 0xa5, 0xf7, 0x8f, 0xfe, 0x9b, 0x01, 0x85, 0xfb, 0x64, 0x02, + 0xa8, 0x04, 0x80, 0x04, 0x83, 0x0a, 0xde, 0x08, 0xc8, 0x0a, 0x8d, 0x0e, 0x38, 0x14, 0xde, 0x16, + 0x24, 0x1a, 0x3c, 0x1f, 0xb9, 0x20, 0x3b, 0x16, 0x1f, 0x15, 0x4e, 0x0e, 0x0e, 0x0a, 0xa9, 0x09, + 0x89, 0x09, 0x46, 0x0a, 0xba, 0x0c, 0xa0, 0x0c, 0xb5, 0x0a, 0x49, 0x07, 0x9b, 0x05, 0x9e, 0x08, + 0xe8, 0x07, 0xde, 0x05, 0xa5, 0x02, 0x64, 0x03, 0x59, 0x07, 0x39, 0x06, 0x87, 0x00, 0xd5, 0x00, + 0x8f, 0xfe, 0x88, 0x02, 0x74, 0xfe, 0xde, 0xff, 0x49, 0xfb, 0x50, 0xfb, 0x3c, 0xf9, 0x1d, 0xfc, + 0x3e, 0xf9, 0xb1, 0xfc, 0x46, 0xfb, 0x2b, 0x02, 0xa5, 0x02, 0x74, 0x06, 0xb5, 0x03, 0x28, 0x05, + 0x58, 0xff, 0x93, 0xfd, 0x42, 0xf7, 0x16, 0xf8, 0xc7, 0xf7, 0x46, 0xf9, 0x40, 0xf8, 0x28, 0xf5, + 0x67, 0xf5, 0xd8, 0xf7, 0xcf, 0xfd, 0xa8, 0x02, 0x11, 0x03, 0x5f, 0xff, 0xf9, 0x00, 0x66, 0x00, + 0xf0, 0x03, 0x9e, 0xfb, 0xaf, 0xfa, 0x53, 0xf9, 0x3e, 0xf7, 0xda, 0xf8, 0x4d, 0xfd, 0xcf, 0x00, + 0x8b, 0x05, 0x2a, 0x04, 0xec, 0x08, 0xa2, 0x0c, 0xe6, 0x0b, 0x6e, 0x09, 0xa0, 0x06, 0x9e, 0x04, + 0x21, 0x06, 0x31, 0x09, 0x4e, 0x0a, 0x44, 0x0f, 0xc6, 0x13, 0x53, 0x19, 0x82, 0x14, 0x49, 0x17, + 0x84, 0x1a, 0x2a, 0x19, 0x7b, 0x19, 0x99, 0x1c, 0x58, 0x17, 0xf1, 0x12, 0xe8, 0x0d, 0xde, 0x0b, + 0x3b, 0x09, 0x66, 0x02, 0xc9, 0xf8, 0xf4, 0xf3, 0x58, 0xf0, 0x88, 0xf3, 0x53, 0xf4, 0xef, 0xf4, + 0x15, 0xf5, 0x79, 0xf2, 0x0d, 0xf4, 0xe0, 0xf1, 0x3a, 0xef, 0x51, 0xe9, 0x6c, 0xe4, 0xd1, 0xde, + 0xdb, 0xdf, 0xfc, 0xdd, 0x48, 0xe0, 0xe7, 0xe0, 0x22, 0xe6, 0x99, 0xea, 0x41, 0xf1, 0x30, 0xf2, + 0x37, 0xf0, 0x59, 0xf2, 0x8e, 0xf0, 0x29, 0xf2, 0x7c, 0xf3, 0xc7, 0xf4, 0xd0, 0xee, 0x90, 0xef, + 0xe2, 0xf0, 0x3c, 0xf1, 0xff, 0xf3, 0x0a, 0xf9, 0x33, 0xfb, 0x48, 0xf9, 0xa5, 0xf8, 0xd2, 0xfa, + 0x80, 0xfc, 0xd9, 0xfd, 0x85, 0xff, 0x80, 0x01, 0x3b, 0x03, 0x0c, 0x05, 0x3f, 0x07, 0x6a, 0x0b, + 0xb8, 0x0b, 0xcb, 0x0f, 0xd7, 0x11, 0xcc, 0x0d, 0x8f, 0x0d, 0x70, 0x0e, 0x07, 0x15, 0x65, 0x0a, + 0x07, 0x0e, 0xd8, 0x0e, 0x5d, 0x0c, 0x50, 0x12, 0x70, 0x14, 0xdb, 0x0f, 0xf1, 0x0e, 0xf0, 0x0b, + 0xf9, 0x0d, 0x71, 0x05, 0x36, 0x01, 0xd0, 0x05, 0xd0, 0x06, 0x35, 0x07, 0x5b, 0x0b, 0x58, 0x13, + 0x38, 0x13, 0x92, 0x10, 0x79, 0x0b, 0x89, 0x07, 0x52, 0x00, 0x9d, 0xfc, 0xe7, 0xfe, 0x6d, 0xfc, + 0xc2, 0xfb, 0x4f, 0xf9, 0x4c, 0xfc, 0xf2, 0x02, 0x52, 0xfc, 0x47, 0x03, 0xea, 0xfe, 0xf5, 0xf8, + 0xa0, 0xf8, 0x3a, 0xf7, 0xdf, 0xf9, 0xfd, 0xf5, 0x9b, 0xf8, 0xca, 0xf9, 0x72, 0xf8, 0x43, 0xf4, + 0x3e, 0xf2, 0xac, 0xf6, 0x57, 0xed, 0xce, 0xe9, 0x20, 0xf0, 0x83, 0xf1, 0x9b, 0xf1, 0xb8, 0xf0, + 0xef, 0xeb, 0x9a, 0xe3, 0x26, 0xea, 0xdd, 0xed, 0x01, 0xeb, 0xbd, 0xef, 0x36, 0xed, 0x0d, 0xf4, + 0x92, 0xf6, 0xa7, 0xf3, 0x90, 0xf9, 0x7b, 0xfc, 0x66, 0x00, 0x60, 0xfe, 0xf4, 0xfc, 0x81, 0xfc, + 0x20, 0xfc, 0x85, 0xff, 0x50, 0xff, 0x4a, 0x00, 0x10, 0x00, 0x84, 0x06, 0x5b, 0x09, 0x8d, 0x0c, + 0x2f, 0x13, 0xa7, 0x14, 0x6c, 0x19, 0xa5, 0x1a, 0x3e, 0x20, 0xf7, 0x1f, 0x03, 0x1d, 0x9b, 0x19, + 0xc6, 0x12, 0x5e, 0x10, 0xd9, 0x0b, 0x4a, 0x10, 0x8a, 0x0f, 0x72, 0x0f, 0xc2, 0x15, 0x04, 0x16, + 0x59, 0x19, 0xec, 0x19, 0x43, 0x15, 0xb1, 0x0d, 0x1d, 0x05, 0x98, 0xff, 0x56, 0xfa, 0x57, 0xfa, + 0x7f, 0xf2, 0xb4, 0xf3, 0xb3, 0xf9, 0x04, 0xfe, 0x93, 0x01, 0x76, 0x00, 0x7a, 0x02, 0x2a, 0x01, + 0x0d, 0x04, 0xbd, 0xff, 0xe8, 0xfd, 0x5c, 0xfe, 0xd3, 0xfb, 0xf8, 0xff, 0xa9, 0x00, 0x1f, 0xfd, + 0xa3, 0xfb, 0xa9, 0xf9, 0x0f, 0xf8, 0x6b, 0xf7, 0x8b, 0xfd, 0xf3, 0xfd, 0x91, 0xfe, 0xde, 0xf6, + 0x91, 0xf1, 0xc1, 0xf0, 0xf1, 0xea, 0x9a, 0xec, 0x61, 0xec, 0xe1, 0xeb, 0x49, 0xee, 0x09, 0xeb, + 0x06, 0xf0, 0x68, 0xf2, 0x7e, 0xf6, 0xe5, 0xf6, 0x80, 0xf6, 0x74, 0xf9, 0xca, 0xfd, 0xc4, 0x03, + 0x5e, 0xff, 0x82, 0x06, 0xba, 0x05, 0x0f, 0x03, 0x87, 0x03, 0x6d, 0x02, 0xfc, 0x06, 0xed, 0x05, + 0xd6, 0x05, 0x43, 0x0b, 0xfb, 0x0e, 0xae, 0x12, 0x2f, 0x14, 0x8c, 0x13, 0x92, 0x0c, 0x8d, 0x0e, + 0x34, 0x0b, 0x67, 0x04, 0x95, 0xff, 0xd9, 0xfd, 0x5c, 0xfc, 0x99, 0xf9, 0x88, 0xfc, 0xdf, 0x01, + 0x6b, 0x03, 0x53, 0x04, 0x5c, 0x03, 0xdb, 0x06, 0x5b, 0x05, 0x18, 0x08, 0xfa, 0x0b, 0x68, 0x06, + 0x12, 0x03, 0xa4, 0xff, 0x0f, 0xff, 0xe4, 0xfe, 0x32, 0x04, 0xc3, 0x04, 0x60, 0xff, 0x96, 0xff, + 0x91, 0xf5, 0x14, 0xf5, 0xa0, 0xf6, 0xa2, 0xf0, 0x81, 0xf7, 0x6d, 0xfd, 0xa9, 0x01, 0x05, 0x06, + 0xf3, 0x02, 0xb3, 0x05, 0x4c, 0x07, 0xcd, 0xfe, 0xd6, 0xfe, 0x04, 0xfc, 0xeb, 0xf9, 0xfe, 0x03, + 0x13, 0x0a, 0xb7, 0x08, 0xf4, 0x0e, 0x45, 0x08, 0x30, 0x0b, 0xc3, 0x00, 0x17, 0xfa, 0x85, 0xf9, + 0xce, 0xf0, 0xe6, 0xf1, 0xd0, 0xf2, 0x0b, 0xf4, 0x1a, 0xf8, 0x27, 0xf3, 0xe9, 0xf0, 0x90, 0xeb, + 0xbb, 0xe6, 0x5c, 0xe7, 0x9c, 0xed, 0x3c, 0xe8, 0xed, 0xed, 0xbc, 0xf2, 0x74, 0xf8, 0x78, 0xfa, + 0x2e, 0xf5, 0xb9, 0xf0, 0xe8, 0xef, 0x08, 0xf1, 0xfc, 0xf4, 0xe3, 0xf7, 0x56, 0xf9, 0x76, 0x00, + 0xe2, 0x02, 0x6b, 0x06, 0xba, 0x07, 0xb0, 0x04, 0x4d, 0x00, 0x8b, 0x02, 0x44, 0x01, 0x68, 0x07, + 0x4c, 0x06, 0xfa, 0x09, 0xdf, 0x0f, 0xa1, 0x0e, 0x9d, 0x0e, 0xcc, 0x0c, 0x0b, 0x06, 0x3f, 0x06, + 0x55, 0x08, 0xe5, 0x0b, 0xbc, 0x0a, 0x17, 0x10, 0x49, 0x14, 0x84, 0x1b, 0x4f, 0x19, 0x4a, 0x1b, + 0x6e, 0x20, 0x6e, 0x1c, 0xd6, 0x20, 0xf2, 0x20, 0xb4, 0x1a, 0x87, 0x15, 0xef, 0x11, 0x11, 0x10, + 0x40, 0x0e, 0x9d, 0x06, 0x41, 0x04, 0x47, 0x05, 0x93, 0x00, 0xfb, 0x05, 0xc9, 0x06, 0x71, 0xfd, + 0x15, 0xf4, 0x9c, 0xeb, 0x90, 0xeb, 0x8b, 0xe9, 0x1a, 0xe1, 0x21, 0xe5, 0x38, 0xe7, 0x82, 0xeb, + 0xf1, 0xf0, 0xca, 0xf0, 0x73, 0xf3, 0xbe, 0xef, 0xf0, 0xef, 0xa3, 0xef, 0x97, 0xed, 0xa2, 0xea, + 0x05, 0xee, 0x40, 0xf1, 0x9c, 0xf6, 0xec, 0xf5, 0xe9, 0xf5, 0x0d, 0xf5, 0x62, 0xf5, 0xc2, 0xf5, + 0xf0, 0xf9, 0x88, 0xf9, 0x5d, 0xfc, 0x15, 0xfe, 0x21, 0xff, 0x01, 0x02, 0x96, 0x01, 0x85, 0xff, + 0x8e, 0xfb, 0xaf, 0xfc, 0x05, 0xff, 0xa4, 0xfe, 0x31, 0xfe, 0xbc, 0xfa, 0x2f, 0xff, 0x4e, 0x00, + 0xf7, 0x01, 0xf1, 0x03, 0x23, 0x01, 0xdd, 0x04, 0x5d, 0x08, 0x97, 0x0a, 0xc8, 0x08, 0xbf, 0x05, + 0x52, 0x02, 0xa2, 0xfc, 0x60, 0xfb, 0xfa, 0xf8, 0xff, 0xfd, 0xe7, 0xfc, 0x12, 0x01, 0xc4, 0x05, + 0x57, 0x06, 0xd0, 0x04, 0x7b, 0x08, 0x44, 0x0a, 0x4e, 0x00, 0xeb, 0x02, 0xa1, 0x03, 0x2f, 0x04, + 0x88, 0x03, 0xfc, 0x05, 0x06, 0x0b, 0x99, 0x0b, 0xad, 0x0a, 0x1f, 0x10, 0x2e, 0x0a, 0xe1, 0x0a, + 0x34, 0x10, 0x17, 0x12, 0xe5, 0x14, 0xe1, 0x10, 0xee, 0x10, 0x24, 0x12, 0x0c, 0x10, 0x9f, 0x12, + 0x03, 0x14, 0xbc, 0x0f, 0x2f, 0x13, 0xb0, 0x13, 0xed, 0x0f, 0x62, 0x0d, 0x63, 0x08, 0x8f, 0x08, + 0x1d, 0x09, 0xe4, 0x05, 0xad, 0x03, 0xb1, 0x02, 0x1b, 0x05, 0xbe, 0x08, 0x75, 0x0b, 0x9a, 0x0c, + 0x32, 0x05, 0x4d, 0xff, 0x7e, 0xfd, 0xd7, 0xfd, 0xa2, 0xfc, 0x28, 0xfb, 0xc9, 0xff, 0x0b, 0xff, + 0xee, 0xfc, 0xb7, 0xfd, 0xcb, 0xfa, 0xe2, 0xf5, 0xea, 0xee, 0x9e, 0xe8, 0x18, 0xeb, 0xb8, 0xe8, + 0xd0, 0xeb, 0xd9, 0xee, 0x83, 0xeb, 0x69, 0xf1, 0x79, 0xf5, 0x65, 0xf2, 0x35, 0xef, 0xeb, 0xe6, + 0xe1, 0xe7, 0xd7, 0xe4, 0x11, 0xe3, 0x1e, 0xe7, 0x2f, 0xe8, 0xb2, 0xea, 0xf7, 0xef, 0xa1, 0xf1, + 0xe2, 0xf3, 0xa8, 0xf6, 0x4d, 0xfc, 0xca, 0xff, 0x54, 0xfe, 0xd3, 0xf8, 0x26, 0x03, 0x01, 0x06, + 0x8a, 0x03, 0xcf, 0x05, 0xb0, 0x00, 0xc1, 0xfa, 0x13, 0xfd, 0xaf, 0x00, 0xa6, 0xff, 0x18, 0xfe, + 0x77, 0xfd, 0x32, 0x00, 0x3d, 0xfa, 0x9e, 0xf4, 0xaa, 0xf8, 0x0b, 0xf1, 0x62, 0xf4, 0xfc, 0xf8, + 0x99, 0xfb, 0x8e, 0x00, 0xf1, 0xfe, 0x39, 0x03, 0x3e, 0x02, 0xa8, 0x02, 0xe8, 0x03, 0xd2, 0x06, + 0xe1, 0x03, 0x6c, 0x02, 0xfd, 0x04, 0xfd, 0x07, 0x76, 0x0a, 0x33, 0x0a, 0xd9, 0x07, 0x66, 0x05, + 0xa9, 0x01, 0x0b, 0x06, 0xca, 0x06, 0xf2, 0x05, 0x7c, 0x05, 0xf4, 0x0a, 0xcb, 0x0f, 0xcc, 0x0e, + 0xaf, 0x11, 0x25, 0x10, 0x0f, 0x0f, 0x86, 0x0f, 0x04, 0x0b, 0x15, 0x07, 0x05, 0x05, 0xfd, 0x08, + 0x27, 0x0b, 0x20, 0x0d, 0xea, 0x0c, 0x82, 0x09, 0x95, 0x0d, 0xac, 0x0f, 0xe6, 0x07, 0x04, 0x05, + 0x62, 0x02, 0xf2, 0xfc, 0x55, 0xfb, 0x0f, 0xf7, 0x26, 0xf4, 0x6a, 0xf5, 0x94, 0xf6, 0x16, 0xf5, + 0xf6, 0xf4, 0x31, 0xf4, 0xbc, 0xf7, 0x67, 0xf4, 0xab, 0xef, 0xf8, 0xee, 0xdf, 0xef, 0x95, 0xee, + 0x40, 0xf1, 0xb1, 0xf6, 0x6c, 0xf7, 0x0e, 0xf9, 0x8f, 0xfb, 0x41, 0xfe, 0x9f, 0x00, 0x97, 0xfb, + 0x95, 0x02, 0xf0, 0x00, 0xce, 0xfb, 0x66, 0x01, 0xbf, 0xfd, 0x61, 0xfe, 0xe6, 0x00, 0xe7, 0x00, + 0xd0, 0x01, 0xac, 0xfc, 0x87, 0x01, 0x97, 0x07, 0x9b, 0x03, 0x67, 0x00, 0x74, 0x06, 0x59, 0x06, + 0xfc, 0x05, 0xeb, 0x0a, 0xee, 0x07, 0x2b, 0x04, 0xb2, 0x04, 0xe3, 0x06, 0xdc, 0x07, 0x0f, 0x07, + 0x40, 0x0a, 0x7f, 0x0b, 0x3e, 0x12, 0xca, 0x0d, 0xed, 0x0d, 0x9a, 0x10, 0xc8, 0x0f, 0x40, 0x12, + 0x85, 0x15, 0x52, 0x1b, 0xa3, 0x1a, 0xb1, 0x18, 0xfd, 0x14, 0x23, 0x0d, 0xe0, 0x0a, 0x4c, 0x07, + 0x8a, 0x05, 0xc0, 0x06, 0x6e, 0x06, 0x15, 0x0c, 0x49, 0x11, 0x0c, 0x0d, 0x34, 0x0c, 0x8d, 0x08, + 0x98, 0x00, 0x52, 0x01, 0xd1, 0xfb, 0x62, 0xfd, 0xd6, 0xfe, 0x0b, 0xfb, 0x78, 0x01, 0x29, 0x02, + 0xc4, 0x01, 0x72, 0x02, 0x5f, 0x01, 0x81, 0x02, 0xa7, 0xfc, 0xb0, 0xfb, 0xdf, 0xfa, 0xa8, 0xfa, + 0x64, 0xf9, 0x3a, 0xf7, 0x57, 0xf4, 0xcc, 0xef, 0x97, 0xed, 0x9e, 0xee, 0x1f, 0xec, 0xac, 0xec, + 0x7a, 0xea, 0xfe, 0xe6, 0xa9, 0xe8, 0xe6, 0xe2, 0xaa, 0xdc, 0x58, 0xda, 0xf0, 0xd5, 0xa9, 0xd6, + 0xfe, 0xd4, 0x80, 0xd4, 0x90, 0xdd, 0x21, 0xde, 0xe8, 0xdd, 0xcf, 0xe3, 0x82, 0xe3, 0x94, 0xe2, + 0x48, 0xe3, 0xe6, 0xe6, 0xea, 0xea, 0xc5, 0xed, 0xe5, 0xf5, 0x6b, 0xf8, 0xef, 0xf7, 0xb0, 0xf7, + 0x0d, 0xf9, 0xd3, 0xfa, 0xf0, 0xf8, 0xbe, 0xf9, 0xff, 0xff, 0xbf, 0xff, 0x3f, 0x01, 0xb9, 0x08, + 0x70, 0x0e, 0x12, 0x0f, 0x4c, 0x17, 0x7a, 0x18, 0x9f, 0x19, 0x89, 0x14, 0x66, 0x13, 0x3b, 0x15, + 0xcc, 0x15, 0x57, 0x17, 0xdf, 0x1b, 0xd4, 0x1b, 0x61, 0x18, 0xe1, 0x1a, 0xcd, 0x1e, 0xa1, 0x19, + 0xf9, 0x18, 0x17, 0x15, 0x19, 0x10, 0xef, 0x0a, 0x00, 0x05, 0x99, 0x07, 0x16, 0x06, 0xfc, 0x05, + 0x6b, 0x05, 0xc5, 0x05, 0xac, 0x07, 0x20, 0x07, 0x11, 0x05, 0x31, 0x02, 0x18, 0xff, 0x41, 0xfa, + 0x3b, 0xfa, 0xe1, 0xfb, 0x2e, 0xfd, 0x6f, 0x02, 0xcd, 0x06, 0x9c, 0x0a, 0xb8, 0x0b, 0x31, 0x0d, + 0x39, 0x06, 0xe5, 0x03, 0xa3, 0x03, 0x14, 0x01, 0xa5, 0x04, 0xa8, 0x00, 0xe0, 0x00, 0xeb, 0x03, + 0xb5, 0x00, 0x33, 0x02, 0xf9, 0x02, 0x02, 0x01, 0x8c, 0x01, 0x9d, 0x02, 0x79, 0xfe, 0x25, 0xff, + 0x19, 0xff, 0x7a, 0xfe, 0xb2, 0x00, 0x5f, 0xfe, 0x1a, 0x00, 0x9e, 0x02, 0x4a, 0x04, 0xde, 0x07, + 0x67, 0x06, 0x05, 0x07, 0x8b, 0x04, 0xdd, 0x06, 0x57, 0x06, 0x82, 0x03, 0xbb, 0x04, 0xf0, 0x04, + 0xdb, 0x06, 0x1c, 0x0b, 0x6c, 0x11, 0xd6, 0x0e, 0x93, 0x06, 0x83, 0x03, 0xb5, 0x01, 0x3e, 0xfc, + 0x09, 0xf9, 0x87, 0xfb, 0xa9, 0xfe, 0x55, 0xfe, 0x0d, 0x06, 0x57, 0x0b, 0x76, 0x09, 0xe6, 0x0a, + 0xc3, 0x06, 0x8e, 0x00, 0xf0, 0xfd, 0xd3, 0xf8, 0xc7, 0xfd, 0x28, 0x01, 0x48, 0x00, 0x7c, 0x06, + 0x85, 0x0b, 0x29, 0x09, 0x81, 0x0a, 0x2f, 0x09, 0x9f, 0x07, 0x42, 0x06, 0x4d, 0x02, 0x34, 0x02, + 0xda, 0x03, 0x10, 0x02, 0x50, 0x06, 0xe8, 0x07, 0xe3, 0xff, 0xec, 0xfc, 0xf4, 0xff, 0xcb, 0xfc, + 0x0a, 0xf9, 0x48, 0xf3, 0x93, 0xf1, 0x4a, 0xf2, 0xc0, 0xec, 0x4b, 0xed, 0x21, 0xeb, 0x04, 0xe5, + 0x1c, 0xe5, 0xfa, 0xe5, 0x1c, 0xe6, 0x85, 0xe6, 0x49, 0xe8, 0xf9, 0xe8, 0xa5, 0xea, 0xf4, 0xe6, + 0x19, 0xe6, 0xdd, 0xe7, 0x30, 0xe7, 0xc1, 0xeb, 0xdd, 0xec, 0x56, 0xee, 0xd8, 0xf0, 0x35, 0xf2, + 0xde, 0xf0, 0x31, 0xec, 0xeb, 0xea, 0xc1, 0xeb, 0xc6, 0xee, 0x28, 0xf1, 0x09, 0xf2, 0xee, 0xf6, + 0xdf, 0xfa, 0xc1, 0xff, 0x99, 0x01, 0x67, 0x03, 0xb0, 0xff, 0x63, 0x01, 0x0a, 0xfe, 0x66, 0xf7, + 0x83, 0xfd, 0x2b, 0x02, 0x2c, 0x03, 0x7b, 0x05, 0xeb, 0x04, 0xcc, 0x03, 0x6e, 0x07, 0xd3, 0x0c, + 0xeb, 0x09, 0xc1, 0x07, 0xe4, 0xff, 0x1e, 0x01, 0xbf, 0x02, 0x90, 0xfc, 0x5c, 0xff, 0x72, 0xfc, + 0xa4, 0xfc, 0x35, 0xfe, 0xad, 0xfb, 0xad, 0x00, 0x0c, 0x00, 0x92, 0xfb, 0xcb, 0xfb, 0x67, 0xfb, + 0xfe, 0xf9, 0x1d, 0xfe, 0xd8, 0x01, 0x76, 0x02, 0x45, 0x05, 0x80, 0x0b, 0x9d, 0x0f, 0x04, 0x10, + 0x97, 0x0d, 0xac, 0x08, 0x04, 0x06, 0x20, 0x08, 0x82, 0x09, 0x0a, 0x0a, 0x11, 0x05, 0xa6, 0x01, + 0x53, 0x02, 0x42, 0x02, 0x96, 0x05, 0x01, 0x04, 0x47, 0x02, 0x4a, 0x07, 0x0a, 0x07, 0xfa, 0x03, + 0x91, 0x08, 0x15, 0x09, 0x4b, 0x0a, 0x07, 0x0c, 0x30, 0x08, 0x6d, 0x05, 0x01, 0x06, 0xa7, 0x08, + 0xca, 0x09, 0x7c, 0x0a, 0x9d, 0x0c, 0xb8, 0x0c, 0x60, 0x0d, 0x83, 0x0b, 0x3d, 0x0a, 0x5c, 0x09, + 0xb6, 0x09, 0x82, 0x0f, 0x1f, 0x12, 0xe0, 0x0f, 0xa5, 0x15, 0xcb, 0x14, 0x7f, 0x10, 0x5e, 0x0b, + 0x74, 0x07, 0xd7, 0x04, 0x74, 0x01, 0x5e, 0x03, 0x87, 0x05, 0x78, 0x0b, 0x28, 0x10, 0x68, 0x12, + 0xad, 0x16, 0x27, 0x0e, 0xd8, 0x0b, 0x9f, 0x0f, 0xa1, 0x09, 0x3d, 0x0a, 0x11, 0x0b, 0xb2, 0x0c, + 0xfe, 0x0e, 0x2a, 0x11, 0xae, 0x11, 0x94, 0x11, 0x44, 0x0e, 0x91, 0x0e, 0x9e, 0x0b, 0x00, 0x01, + 0x49, 0xff, 0xe8, 0x01, 0x80, 0x01, 0x8a, 0x03, 0xd8, 0x00, 0xc3, 0x01, 0x0f, 0x01, 0xb0, 0x00, + 0xcd, 0xfd, 0x15, 0xfb, 0x7a, 0xf7, 0x37, 0xf4, 0x82, 0xf5, 0x52, 0xf1, 0x34, 0xee, 0x91, 0xea, + 0x55, 0xe4, 0x25, 0xe6, 0x5b, 0xe6, 0x6d, 0xe6, 0xe7, 0xe9, 0xc0, 0xea, 0xce, 0xe7, 0x4a, 0xea, + 0x2d, 0xe7, 0x76, 0xe5, 0x94, 0xe8, 0x51, 0xe8, 0xbb, 0xea, 0xa7, 0xed, 0x85, 0xf3, 0xa9, 0xf9, + 0xaf, 0xf7, 0xd2, 0xf4, 0x67, 0xf2, 0x3f, 0xf5, 0xa2, 0xf2, 0xaa, 0xf1, 0xad, 0xf5, 0x01, 0xf4, + 0xe4, 0xf6, 0xf2, 0xfd, 0x93, 0x02, 0xaf, 0x06, 0xff, 0x0a, 0x4e, 0x0b, 0xb8, 0x08, 0xb5, 0x03, + 0xa5, 0xfe, 0xd5, 0x01, 0xb3, 0x02, 0xdd, 0x01, 0xa3, 0x01, 0xe7, 0x03, 0x81, 0x05, 0xf7, 0x05, + 0x18, 0x03, 0x25, 0xfd, 0x6b, 0xfb, 0x45, 0xf6, 0xfd, 0xf6, 0xf5, 0xf5, 0x2b, 0xf1, 0x8f, 0xf3, + 0x85, 0xf0, 0x48, 0xed, 0x7c, 0xf0, 0x5c, 0xec, 0x78, 0xef, 0x59, 0xf1, 0x6b, 0xeb, 0xde, 0xea, + 0xd0, 0xea, 0xfa, 0xe9, 0xfc, 0xe8, 0x6f, 0xe9, 0xbb, 0xee, 0xce, 0xf4, 0x6b, 0xfc, 0xbe, 0x01, + 0x70, 0x02, 0xff, 0xfa, 0x3a, 0xf8, 0x76, 0xfd, 0x18, 0xfb, 0x03, 0xfb, 0xcd, 0xfe, 0x7b, 0xff, + 0x2a, 0xfe, 0x23, 0xff, 0xf2, 0xff, 0x98, 0x01, 0xce, 0x01, 0x03, 0x00, 0x14, 0x03, 0x74, 0x03, + 0x85, 0x01, 0xce, 0x05, 0x6c, 0x07, 0x2e, 0x0b, 0x5f, 0x0c, 0xa2, 0x0f, 0x88, 0x10, 0x77, 0x0f, + 0xbf, 0x11, 0x3c, 0x12, 0xad, 0x15, 0x66, 0x15, 0xa7, 0x12, 0xfd, 0x12, 0xf4, 0x10, 0xbb, 0x12, + 0xdf, 0x10, 0x09, 0x10, 0x36, 0x11, 0x99, 0x12, 0x64, 0x14, 0x3d, 0x18, 0xd9, 0x13, 0xd9, 0x11, + 0x3e, 0x11, 0x15, 0x0b, 0xb8, 0x04, 0x3a, 0x02, 0x07, 0x04, 0x0c, 0x07, 0xfb, 0x0e, 0xb9, 0x14, + 0xb1, 0x13, 0x99, 0x14, 0xc1, 0x0a, 0x1e, 0x0a, 0xea, 0x08, 0xc6, 0x03, 0x7d, 0x0a, 0x7f, 0x0a, + 0xa6, 0x0b, 0x27, 0x0d, 0xf8, 0x0a, 0x86, 0x0d, 0x59, 0x0f, 0xad, 0x0e, 0xd8, 0x0c, 0x8b, 0x09, + 0x32, 0x05, 0x41, 0x08, 0x62, 0x08, 0x7f, 0x06, 0x04, 0x08, 0x09, 0x06, 0x98, 0x07, 0x8a, 0x05, + 0xae, 0x02, 0xdb, 0xfe, 0x71, 0xfb, 0xc0, 0xf8, 0xc7, 0xf7, 0xe9, 0xf8, 0xcc, 0xf8, 0xc8, 0xf7, + 0xe5, 0xf5, 0x7c, 0xf1, 0x25, 0xf1, 0x02, 0xf1, 0x80, 0xf3, 0x4a, 0xf4, 0x49, 0xf1, 0xac, 0xf1, + 0x05, 0xf5, 0x52, 0xf5, 0xa5, 0xf3, 0x73, 0xf2, 0x1b, 0xf2, 0x35, 0xf2, 0x22, 0xf7, 0x19, 0xfc, + 0xa0, 0xfd, 0xcd, 0xff, 0x79, 0xfd, 0x6e, 0xfa, 0x4d, 0xfb, 0xd4, 0xf9, 0x96, 0xfc, 0x36, 0x02, + 0x80, 0xff, 0x15, 0x01, 0x63, 0x02, 0x73, 0x05, 0x0e, 0x0b, 0x8a, 0x0a, 0x41, 0x0a, 0x69, 0x09, + 0x69, 0x06, 0x39, 0x07, 0xe5, 0x06, 0x8c, 0x03, 0xdd, 0x00, 0x17, 0x03, 0x01, 0x07, 0xd3, 0x05, + 0xdd, 0x05, 0x63, 0x05, 0x9f, 0x07, 0x93, 0x06, 0x8e, 0xfe, 0x9e, 0xfd, 0x9a, 0xfa, 0x5a, 0xf8, + 0x3a, 0xf7, 0xca, 0xf3, 0x33, 0xf0, 0xbf, 0xf1, 0xfa, 0xee, 0x82, 0xf0, 0xde, 0xee, 0x94, 0xec, + 0x61, 0xf0, 0xa0, 0xed, 0xf8, 0xea, 0x31, 0xea, 0x3e, 0xeb, 0xab, 0xef, 0x8e, 0xf3, 0x25, 0xfa, + 0xe8, 0xf9, 0x22, 0xfb, 0x1f, 0xfa, 0xda, 0xf5, 0x9b, 0xf6, 0x35, 0xf3, 0x7c, 0xf3, 0xc0, 0xf3, + 0x15, 0xf3, 0x29, 0xf1, 0x79, 0xee, 0xab, 0xef, 0x0f, 0xf2, 0x88, 0xf3, 0x68, 0xf1, 0xa5, 0xf5, + 0xcc, 0xf6, 0x62, 0xf4, 0x59, 0xf7, 0xa0, 0xf7, 0xae, 0xf9, 0x97, 0xf9, 0xdc, 0xfd, 0x8f, 0xfc, + 0xc3, 0xf9, 0xe7, 0xfc, 0xca, 0x00, 0xca, 0x05, 0xac, 0x01, 0x91, 0x00, 0xc0, 0x01, 0x85, 0x01, + 0x64, 0x05, 0x2a, 0x02, 0x1a, 0x03, 0x71, 0x08, 0xc7, 0x0c, 0x63, 0x0f, 0x73, 0x0f, 0x1d, 0x10, + 0xec, 0x0f, 0xfb, 0x0e, 0x23, 0x0b, 0x2a, 0x05, 0x09, 0x03, 0x4a, 0x04, 0xc3, 0x07, 0xfb, 0x0f, + 0xac, 0x14, 0xda, 0x16, 0x61, 0x1b, 0x57, 0x16, 0x53, 0x13, 0x40, 0x13, 0x9f, 0x10, 0x69, 0x14, + 0x07, 0x13, 0x6c, 0x13, 0xe7, 0x14, 0xcd, 0x12, 0x57, 0x17, 0xa1, 0x18, 0x2d, 0x14, 0x39, 0x10, + 0x8e, 0x0d, 0xa8, 0x08, 0x06, 0x08, 0xe5, 0x07, 0x42, 0x07, 0xf3, 0x0b, 0xe4, 0x0b, 0xf8, 0x0b, + 0x6f, 0x0a, 0xb2, 0x07, 0xe9, 0x06, 0x1c, 0x05, 0x53, 0x02, 0xa3, 0xff, 0x5d, 0xfa, 0xf3, 0xf9, + 0x43, 0xf9, 0x23, 0xf5, 0x91, 0xf2, 0x1c, 0xf4, 0x93, 0xf4, 0x04, 0xf3, 0xab, 0xf2, 0xd5, 0xf2, + 0x80, 0xf6, 0xf1, 0xf5, 0xf9, 0xf4, 0xa3, 0xf2, 0xc4, 0xef, 0x5a, 0xf5, 0x57, 0xf7, 0x89, 0xfa, + 0x84, 0xfd, 0xf8, 0xfd, 0x52, 0x04, 0xdf, 0x01, 0x4c, 0xfe, 0x0c, 0xff, 0x7b, 0xfb, 0x8c, 0xfc, + 0x04, 0xff, 0x46, 0x00, 0x39, 0x02, 0x88, 0x08, 0xa8, 0x0c, 0x7d, 0x12, 0xe7, 0x10, 0x29, 0x11, + 0x44, 0x13, 0xfa, 0x0c, 0x1f, 0x0b, 0xa7, 0x08, 0x0d, 0x08, 0x4b, 0x0a, 0x25, 0x0b, 0xc0, 0x09, + 0xb6, 0x05, 0xd3, 0x05, 0xfe, 0x05, 0x1d, 0x05, 0x6f, 0xfe, 0xdb, 0xf9, 0xf8, 0xfa, 0x1e, 0xf5, + 0x04, 0xf6, 0xee, 0xf5, 0x3f, 0xf1, 0xc4, 0xef, 0xf3, 0xef, 0xee, 0xed, 0xe8, 0xea, 0x15, 0xea, + 0x03, 0xea, 0x84, 0xe7, 0x75, 0xe5, 0xeb, 0xe5, 0x67, 0xe5, 0xb3, 0xe6, 0x68, 0xee, 0xda, 0xf2, + 0xcf, 0xf8, 0xea, 0xf9, 0xb1, 0xfa, 0xc0, 0xf9, 0x65, 0xf4, 0x2c, 0xf5, 0x22, 0xf7, 0x2a, 0xf8, + 0x90, 0xf8, 0x98, 0xf9, 0x08, 0xfb, 0xcf, 0xf9, 0x14, 0xfa, 0x90, 0xf9, 0x5e, 0xfc, 0x7f, 0xf9, + 0x36, 0xf8, 0x1a, 0xfc, 0xb3, 0xfa, 0x23, 0xfc, 0x1c, 0x00, 0xaa, 0x03, 0xdb, 0x03, 0x92, 0x04, + 0xf8, 0x05, 0xa7, 0x04, 0x09, 0x05, 0x5d, 0x08, 0x44, 0x09, 0x2a, 0x06, 0x0f, 0x07, 0xa0, 0x08, + 0xea, 0x04, 0x41, 0x04, 0x30, 0x00, 0x6d, 0x00, 0xef, 0x04, 0x68, 0x02, 0x24, 0x04, 0x9b, 0x05, + 0x9b, 0x04, 0xf9, 0x04, 0x91, 0x02, 0x8c, 0xfe, 0x2a, 0xf7, 0x65, 0xf6, 0x2c, 0xfb, 0x50, 0xfd, + 0x1b, 0x01, 0x81, 0x02, 0xa0, 0x05, 0xc7, 0x06, 0x72, 0x01, 0x27, 0xff, 0x52, 0xff, 0x2b, 0x02, + 0xc9, 0x02, 0x68, 0x03, 0x64, 0x03, 0x46, 0x06, 0xa1, 0x06, 0x56, 0x06, 0x4c, 0x09, 0xee, 0x07, + 0xed, 0x06, 0xd6, 0x05, 0x18, 0x04, 0x8c, 0x03, 0xe9, 0x04, 0x12, 0x08, 0x58, 0x0a, 0xa6, 0x0b, + 0xac, 0x08, 0x08, 0x06, 0x20, 0x04, 0xd4, 0x02, 0x62, 0x01, 0x1b, 0x00, 0xf1, 0x01, 0x58, 0xfe, + 0xad, 0xff, 0xf1, 0xfe, 0xef, 0xfc, 0x90, 0xfc, 0x6f, 0xfa, 0x1e, 0xf7, 0xab, 0xf4, 0xd9, 0xf8, + 0x90, 0xfd, 0x4d, 0xfe, 0x20, 0xfc, 0x2a, 0xf9, 0x65, 0xf9, 0x67, 0xf3, 0x3a, 0xf7, 0xcb, 0xfb, + 0xf1, 0xfe, 0x66, 0x01, 0xb9, 0xff, 0x53, 0x05, 0x50, 0x05, 0x2d, 0x03, 0x0a, 0x06, 0xd5, 0x04, + 0x0a, 0x07, 0x58, 0x07, 0x1f, 0x0a, 0xd5, 0x0a, 0xd1, 0x0b, 0x7f, 0x0c, 0xfa, 0x0f, 0x51, 0x13, + 0xb1, 0x13, 0x97, 0x17, 0x40, 0x14, 0xfa, 0x0e, 0x3e, 0x0c, 0x8f, 0x0c, 0xb6, 0x0c, 0xea, 0x0b, + 0x29, 0x0d, 0x4c, 0x0e, 0x6f, 0x0e, 0xa4, 0x0b, 0x9d, 0x0c, 0xf6, 0x0c, 0xc2, 0x06, 0xa1, 0x05, + 0x67, 0x02, 0x12, 0xfe, 0x10, 0xfa, 0x1a, 0xf8, 0xa9, 0xf5, 0xce, 0xf0, 0x3f, 0xf1, 0x48, 0xf2, + 0x1f, 0xf2, 0xfe, 0xf1, 0xdf, 0xf0, 0x64, 0xef, 0x42, 0xec, 0x20, 0xeb, 0xdc, 0xec, 0x2b, 0xf1, + 0xa6, 0xf4, 0x2e, 0xf9, 0x63, 0xf9, 0x18, 0xf7, 0x16, 0xf6, 0xf9, 0xf3, 0xde, 0xf1, 0x03, 0xf1, + 0x0f, 0xef, 0xe6, 0xf1, 0x7a, 0xf3, 0x28, 0xf2, 0xf7, 0xf1, 0xf3, 0xf1, 0x0c, 0xf3, 0xb5, 0xf5, + 0xd5, 0xf6, 0xb4, 0xf4, 0xa2, 0xf4, 0x85, 0xf5, 0x88, 0xf5, 0x8a, 0xf7, 0xa8, 0xf7, 0x49, 0xf9, + 0x54, 0xfa, 0x8b, 0xfb, 0xa8, 0xff, 0x5a, 0xfd, 0x34, 0xff, 0xfc, 0x01, 0x8d, 0x01, 0xde, 0x00, + 0x83, 0x00, 0x4d, 0xff, 0x3c, 0x01, 0x0c, 0x02, 0x78, 0x00, 0x9c, 0x04, 0x81, 0x05, 0x20, 0x08, + 0xb6, 0x0b, 0x2c, 0x0a, 0x4d, 0x0a, 0x3c, 0x04, 0x06, 0x00, 0xbf, 0xf9, 0x55, 0xf7, 0xbc, 0xfc, + 0x13, 0x02, 0x0a, 0x08, 0x46, 0x09, 0x46, 0x0d, 0xd6, 0x0e, 0x9e, 0x0b, 0xfb, 0x0a, 0x92, 0x0a, + 0x92, 0x0a, 0xef, 0x07, 0x9a, 0x0c, 0x5e, 0x0c, 0xaf, 0x08, 0x3b, 0x09, 0x47, 0x09, 0x74, 0x09, + 0xf9, 0x02, 0x41, 0x03, 0x3c, 0x05, 0xd4, 0x02, 0xc5, 0xff, 0xad, 0xfe, 0xd7, 0x02, 0x85, 0x03, + 0x52, 0x08, 0xc8, 0x08, 0x16, 0x04, 0xfd, 0x00, 0x2d, 0xfe, 0xd9, 0xfe, 0x0c, 0xfc, 0xa7, 0xf9, + 0x64, 0xf7, 0x33, 0xf5, 0x0c, 0xf6, 0x36, 0xf8, 0x9d, 0xf7, 0x1b, 0xf5, 0x2a, 0xf4, 0x05, 0xf3, + 0xc7, 0xf1, 0x5c, 0xf4, 0x5a, 0xf5, 0x91, 0xf5, 0x7f, 0xf2, 0x76, 0xf1, 0x4a, 0xf2, 0x86, 0xf7, + 0x7c, 0xfa, 0x09, 0xfe, 0xce, 0x01, 0xef, 0xfe, 0xf5, 0x01, 0x22, 0x01, 0xdd, 0xfd, 0x67, 0x00, + 0xea, 0x00, 0x8a, 0x05, 0xc5, 0x08, 0x45, 0x0c, 0x8f, 0x0e, 0x03, 0x0d, 0x4c, 0x0f, 0x12, 0x15, + 0xb3, 0x18, 0xf0, 0x19, 0x52, 0x1c, 0xe8, 0x1a, 0x33, 0x16, 0x94, 0x12, 0x99, 0x12, 0x51, 0x14, + 0x05, 0x13, 0x62, 0x0f, 0xa7, 0x0c, 0xcb, 0x0c, 0x21, 0x0f, 0xef, 0x0e, 0x8e, 0x0c, 0x1f, 0x09, + 0x51, 0x04, 0x1f, 0x01, 0x70, 0x00, 0x30, 0x01, 0xbd, 0xfd, 0x3f, 0xfa, 0x67, 0xf9, 0x8e, 0xf5, + 0x4d, 0xf2, 0x90, 0xf1, 0xd1, 0xf3, 0xf9, 0xf0, 0x83, 0xef, 0xdd, 0xec, 0xf2, 0xea, 0xc4, 0xf2, + 0xb8, 0xf7, 0xb8, 0xfb, 0x96, 0xfc, 0xc5, 0xf9, 0x11, 0xfc, 0xb5, 0xfd, 0x5e, 0xfc, 0xca, 0xf8, + 0x4e, 0xfa, 0xa9, 0xf9, 0x04, 0xfd, 0xbd, 0xff, 0x30, 0xfe, 0x30, 0xff, 0xb2, 0xfa, 0xf4, 0xf9, + 0x06, 0xf9, 0xa0, 0xf8, 0x3c, 0xfc, 0x28, 0xfd, 0x9c, 0xfd, 0xc9, 0xfb, 0x25, 0x02, 0x18, 0x02, + 0x89, 0x01, 0x6b, 0x04, 0xf7, 0x01, 0x23, 0x03, 0x95, 0x02, 0x55, 0x06, 0xc6, 0x08, 0xcc, 0x06, + 0xad, 0x06, 0xfa, 0xff, 0x39, 0xfc, 0x78, 0xfe, 0x7b, 0x03, 0x21, 0x01, 0xc1, 0xfd, 0x54, 0xfe, + 0x3f, 0xfd, 0xb5, 0xfe, 0x81, 0x00, 0x54, 0x02, 0x32, 0xfd, 0xdd, 0xf8, 0x70, 0xf6, 0xc6, 0xf4, + 0xfe, 0xf4, 0x9d, 0xf4, 0x47, 0xf9, 0xfb, 0xf7, 0x02, 0xf9, 0xa6, 0x00, 0x12, 0x00, 0x75, 0xfd, + 0x48, 0xfe, 0xd0, 0x00, 0x0f, 0x02, 0xc5, 0x00, 0x10, 0xff, 0x9f, 0xff, 0x11, 0x01, 0xb9, 0xff, + 0x0a, 0x03, 0x4d, 0x03, 0x08, 0x01, 0xc8, 0x02, 0x95, 0x00, 0xec, 0xfd, 0x05, 0x01, 0x83, 0x03, + 0xe1, 0x03, 0x81, 0x04, 0xba, 0x02, 0x95, 0x02, 0x9d, 0x02, 0x6b, 0xfe, 0xee, 0xfb, 0x22, 0xfc, + 0x1f, 0xfc, 0x7b, 0xfd, 0x8a, 0xfd, 0x78, 0xfc, 0x3b, 0xf8, 0x59, 0xf6, 0x72, 0xfa, 0x73, 0xf8, + 0xe7, 0xf4, 0xb8, 0xf5, 0xf5, 0xf7, 0x4c, 0xf4, 0xbc, 0xf1, 0x81, 0xf3, 0xca, 0xf2, 0xc8, 0xf0, + 0xc1, 0xf4, 0x20, 0xf4, 0xdd, 0xf8, 0x7a, 0xfd, 0x32, 0xff, 0xd9, 0x02, 0x1c, 0x04, 0xb1, 0x02, + 0x16, 0x03, 0x0a, 0x01, 0x43, 0x03, 0x42, 0x06, 0xc4, 0x07, 0xef, 0x0a, 0xdf, 0x0b, 0xee, 0x0d, + 0x03, 0x14, 0xd9, 0x14, 0xe2, 0x17, 0x8b, 0x17, 0x8a, 0x16, 0xfc, 0x13, 0xbf, 0x13, 0x05, 0x14, + 0x87, 0x0f, 0x39, 0x11, 0x73, 0x0f, 0x79, 0x0e, 0xd6, 0x11, 0x11, 0x13, 0x04, 0x14, 0x99, 0x10, + 0x55, 0x0f, 0x81, 0x0a, 0x4b, 0x05, 0xa0, 0x01, 0x80, 0xff, 0x24, 0xff, 0xe7, 0xfb, 0x1e, 0xfc, + 0xc4, 0xf8, 0x31, 0xf5, 0x24, 0xf9, 0x92, 0xfc, 0xc1, 0xf7, 0x13, 0xf3, 0x97, 0xf3, 0x6f, 0xf4, + 0x5f, 0xf8, 0xb9, 0xf7, 0x31, 0xfa, 0x8a, 0xfe, 0xa0, 0xf8, 0x9b, 0xf8, 0xb0, 0xf9, 0x4c, 0xf4, + 0x9c, 0xf2, 0x3d, 0xf5, 0xc5, 0xf8, 0x7f, 0xfa, 0x77, 0xfa, 0x68, 0xfc, 0x58, 0xfd, 0x9c, 0xf7, + 0x4b, 0xf7, 0x42, 0xfb, 0xb9, 0xfa, 0x63, 0xfb, 0x51, 0xf9, 0x31, 0xf9, 0x11, 0xf9, 0x9b, 0xfb, + 0x6d, 0xfe, 0xeb, 0xfe, 0x52, 0x00, 0x54, 0x02, 0x39, 0x04, 0xb8, 0x01, 0xcb, 0x02, 0xb4, 0x06, + 0x3b, 0x04, 0xb7, 0x02, 0x14, 0x01, 0x01, 0x02, 0x7f, 0x05, 0xac, 0x05, 0xaf, 0x04, 0x93, 0x01, + 0xff, 0x01, 0x4c, 0x04, 0xda, 0x06, 0x14, 0x07, 0x27, 0x03, 0xf3, 0xfe, 0x86, 0xfd, 0xc6, 0xfa, + 0x60, 0xfc, 0xc2, 0xfd, 0xfc, 0xfd, 0xab, 0x00, 0x6a, 0x01, 0x84, 0x01, 0xc9, 0x06, 0x7b, 0x06, + 0x9f, 0x06, 0x0e, 0x09, 0x54, 0x09, 0x8f, 0x08, 0x54, 0x08, 0x11, 0x04, 0x6f, 0x03, 0x73, 0x03, + 0xa3, 0x00, 0xf1, 0xff, 0xa1, 0x00, 0xd9, 0xfe, 0xdf, 0xfc, 0x78, 0xf9, 0x7e, 0xf8, 0x24, 0xfd, + 0x9d, 0x00, 0xb4, 0x03, 0xf8, 0x00, 0x9c, 0x00, 0x66, 0x03, 0xc7, 0x01, 0xd6, 0xfe, 0x7a, 0xfa, + 0xde, 0xf7, 0x9d, 0xf6, 0xfe, 0xf7, 0xdb, 0xf5, 0xa7, 0xf8, 0x7c, 0xff, 0xf5, 0xfb, 0xb8, 0xf8, + 0x5b, 0xf3, 0xd9, 0xef, 0xca, 0xee, 0xb5, 0xf2, 0x10, 0xf5, 0xd0, 0xf0, 0xf4, 0xf3, 0x92, 0xf4, + 0x64, 0xf3, 0xf8, 0xf5, 0x9e, 0xf6, 0xcc, 0xfb, 0xfa, 0xfa, 0xb5, 0xf9, 0x50, 0xfb, 0x04, 0xfe, + 0xd7, 0xfe, 0xa1, 0xfe, 0xa3, 0xff, 0xb3, 0xff, 0x1e, 0x04, 0x9a, 0x08, 0xd6, 0x0a, 0x52, 0x0a, + 0xab, 0x09, 0xbf, 0x11, 0xa6, 0x15, 0x3f, 0x15, 0x54, 0x14, 0x51, 0x15, 0xdc, 0x12, 0xbd, 0x10, + 0xe8, 0x0f, 0x44, 0x0c, 0x0d, 0x0b, 0x32, 0x0a, 0xd6, 0x0a, 0x85, 0x07, 0x14, 0x03, 0x3f, 0x06, + 0xb6, 0x06, 0x99, 0x05, 0xa8, 0x03, 0x5c, 0xff, 0x42, 0xfd, 0x15, 0xfc, 0x94, 0xfd, 0xef, 0xf6, + 0x90, 0xf2, 0x1b, 0xf2, 0x68, 0xee, 0x7e, 0xee, 0x29, 0xef, 0xba, 0xee, 0x64, 0xef, 0x9f, 0xee, + 0xa4, 0xee, 0x2e, 0xf2, 0x6a, 0xf5, 0x6a, 0xf9, 0xbb, 0xfd, 0xb9, 0xfc, 0x7c, 0xfb, 0xbd, 0xfb, + 0xf1, 0xf9, 0xa5, 0xfb, 0x9f, 0xfd, 0x1e, 0xff, 0xf2, 0x01, 0x8a, 0x02, 0xdb, 0x04, 0x92, 0x03, + 0xd3, 0x00, 0xf3, 0x00, 0xcf, 0x01, 0x68, 0x01, 0xd9, 0xfe, 0x3a, 0x01, 0x0b, 0x05, 0x33, 0x09, + 0x26, 0x09, 0x06, 0x07, 0x05, 0x0b, 0x9c, 0x0c, 0xfb, 0x0b, 0x5b, 0x09, 0x13, 0x08, 0xfa, 0x0c, + 0xf0, 0x0f, 0xb7, 0x0d, 0xa2, 0x08, 0xc2, 0x04, 0xb0, 0x04, 0x85, 0x07, 0x8a, 0x07, 0x33, 0x06, + 0x0a, 0x04, 0xc6, 0x01, 0x74, 0x02, 0xbf, 0xff, 0x4d, 0x03, 0x46, 0x05, 0x27, 0x02, 0xc1, 0xfd, + 0xab, 0xf7, 0x2d, 0xf7, 0x55, 0xf6, 0x48, 0xf8, 0xfd, 0xfb, 0x53, 0xfb, 0x63, 0xfa, 0x22, 0xfd, + 0xa0, 0x00, 0x92, 0x00, 0xc9, 0x04, 0x0a, 0x04, 0x50, 0x01, 0xf2, 0x04, 0xdd, 0x03, 0x0c, 0x05, + 0xde, 0xff, 0x09, 0xff, 0x02, 0xff, 0xa1, 0xfe, 0x5b, 0x01, 0xa8, 0x01, 0x2a, 0x01, 0xac, 0xff, + 0xef, 0x00, 0x9c, 0xfe, 0xff, 0xfc, 0x9a, 0x01, 0xcb, 0x00, 0xa7, 0xff, 0x1d, 0xfd, 0xe8, 0xfc, + 0xc8, 0xff, 0x1b, 0xfd, 0xe3, 0xfa, 0xcf, 0xfa, 0xa2, 0xf9, 0x46, 0xfa, 0x14, 0xfb, 0x1a, 0xf9, + 0x56, 0xf7, 0x49, 0xf6, 0xbc, 0xf6, 0x76, 0xf5, 0x2c, 0xf1, 0xf6, 0xf0, 0xe3, 0xef, 0xb0, 0xed, + 0x6f, 0xec, 0xfb, 0xec, 0xbc, 0xf1, 0x08, 0xf4, 0x00, 0xf8, 0xb1, 0xf9, 0x10, 0xf9, 0x03, 0xfa, + 0x99, 0xfd, 0xed, 0xfe, 0xeb, 0xfa, 0xa7, 0xfc, 0x1e, 0x00, 0xf6, 0x03, 0xe8, 0x05, 0x9f, 0x06, + 0xd4, 0x0a, 0x94, 0x0c, 0x29, 0x10, 0xaf, 0x12, 0x58, 0x12, 0x71, 0x15, 0xeb, 0x17, 0x50, 0x17, + 0x06, 0x14, 0x94, 0x11, 0x88, 0x0f, 0x64, 0x10, 0x23, 0x10, 0x0d, 0x10, 0xa1, 0x0f, 0x78, 0x0e, + 0xae, 0x0e, 0x14, 0x0e, 0xf4, 0x0b, 0xf7, 0x0a, 0xaa, 0x07, 0x25, 0x03, 0xf4, 0xff, 0x75, 0x00, + 0x1f, 0xfe, 0x3f, 0xfb, 0xcd, 0xf9, 0xee, 0xf8, 0x35, 0xf8, 0x86, 0xf4, 0x9c, 0xee, 0x62, 0xef, + 0xcc, 0xf0, 0xc2, 0xf4, 0x4c, 0xf8, 0x93, 0xf9, 0x86, 0xfa, 0xab, 0xf9, 0xaf, 0xf7, 0x54, 0xf4, + 0x50, 0xf6, 0x5e, 0xf4, 0x5e, 0xf3, 0x8b, 0xf5, 0x3b, 0xf6, 0xf6, 0xfb, 0x7a, 0xf9, 0x11, 0xfa, + 0xe8, 0xf8, 0xf7, 0xf7, 0xb4, 0xfa, 0xce, 0xf8, 0xa1, 0xf9, 0x89, 0xf8, 0xff, 0xf7, 0xed, 0xf6, + 0x68, 0xf8, 0xf9, 0xfb, 0x03, 0xfc, 0xab, 0x00, 0x29, 0x00, 0x11, 0x02, 0x20, 0x04, 0x39, 0x04, + 0x45, 0x05, 0x47, 0x02, 0x6d, 0x02, 0xb8, 0x00, 0x7d, 0xfe, 0x59, 0x01, 0x8c, 0x05, 0xe1, 0x09, + 0xbb, 0x07, 0xf1, 0x05, 0x41, 0x04, 0x0c, 0x02, 0xb4, 0xfd, 0xef, 0x00, 0xd8, 0x02, 0x56, 0x00, + 0xd9, 0xfe, 0x6b, 0xfc, 0x15, 0xfe, 0x89, 0xff, 0x95, 0x01, 0x03, 0x03, 0x2a, 0x01, 0x8e, 0x00, + 0xfc, 0x02, 0xea, 0x09, 0xc5, 0x0a, 0xa1, 0x0b, 0x2e, 0x0d, 0x91, 0x0b, 0xc1, 0x0a, 0x0d, 0x04, + 0xc2, 0x06, 0xc2, 0x04, 0x25, 0x03, 0xf7, 0x02, 0x48, 0x02, 0x54, 0x00, 0x51, 0xfd, 0xf0, 0xfe, + 0x08, 0xff, 0x40, 0x01, 0x7d, 0x01, 0xe6, 0x00, 0xe5, 0x01, 0xdb, 0x00, 0x27, 0x01, 0xf8, 0xfe, + 0x9e, 0xfc, 0x90, 0xf9, 0xab, 0xf5, 0xe7, 0xf6, 0x8b, 0xf9, 0x14, 0xfa, 0xfb, 0xf9, 0x95, 0xfb, + 0x0a, 0xfc, 0x13, 0xfb, 0xa9, 0xf8, 0x28, 0xf6, 0x45, 0xf2, 0x35, 0xf1, 0x84, 0xf1, 0xee, 0xef, + 0x15, 0xf2, 0x2d, 0xf3, 0x67, 0xf5, 0x3a, 0xf7, 0x4a, 0xf7, 0xb6, 0xf7, 0x3a, 0xfa, 0x0b, 0xfc, + 0xf0, 0xf8, 0x38, 0xfa, 0x35, 0xfa, 0xfa, 0xfd, 0x0a, 0x03, 0xfd, 0x07, 0x88, 0x09, 0x8c, 0x09, + 0x50, 0x0d, 0x3e, 0x10, 0x56, 0x12, 0xc8, 0x11, 0xf4, 0x17, 0x93, 0x18, 0x37, 0x17, 0x95, 0x18, + 0x89, 0x16, 0x1e, 0x18, 0xbb, 0x14, 0x44, 0x11, 0x7c, 0x0d, 0x0a, 0x0b, 0x5d, 0x0b, 0x63, 0x0b, + 0xc6, 0x0b, 0xb5, 0x0b, 0xbc, 0x0c, 0x4d, 0x0b, 0x75, 0x09, 0xe2, 0x06, 0xc3, 0x02, 0xf8, 0x01, + 0x47, 0xfb, 0xc9, 0xf7, 0x2d, 0xf6, 0xd7, 0xf5, 0xad, 0xf4, 0x64, 0xef, 0x85, 0xee, 0x67, 0xeb, + 0x55, 0xed, 0xf3, 0xee, 0x7a, 0xf1, 0xbd, 0xf4, 0x0c, 0xf3, 0x52, 0xf7, 0x13, 0xfb, 0x5d, 0xfa, + 0xbc, 0xf7, 0x01, 0xf7, 0x69, 0xfa, 0x90, 0xf9, 0xb5, 0xfb, 0x9d, 0xfa, 0x72, 0xfc, 0x66, 0xfd, + 0xc4, 0x01, 0x2b, 0x04, 0xab, 0xfe, 0x3a, 0xfe, 0x26, 0xfd, 0x45, 0xff, 0x9b, 0xfe, 0xd0, 0x01, + 0x6c, 0x03, 0xe3, 0x01, 0xb0, 0x05, 0x2f, 0x08, 0xb6, 0x08, 0x94, 0x09, 0x34, 0x0a, 0xac, 0x09, + 0xca, 0x09, 0xa9, 0x0a, 0xf1, 0x07, 0xb3, 0x07, 0x85, 0x08, 0x9c, 0x06, 0x02, 0x05, 0x9a, 0x01, + 0x35, 0x03, 0x81, 0x02, 0x06, 0xfe, 0x5d, 0xff, 0x49, 0x00, 0xe9, 0xfd, 0xca, 0xfe, 0xc6, 0xfe, + 0xe9, 0xfb, 0x23, 0xfa, 0xf9, 0xf6, 0x1b, 0xf5, 0x98, 0xf4, 0x3f, 0xf6, 0x5c, 0xf8, 0x41, 0xf6, + 0x8e, 0xf6, 0x4a, 0xfb, 0x66, 0x00, 0xdf, 0x00, 0xf1, 0x00, 0x20, 0xff, 0xe3, 0xff, 0xbd, 0x00, + 0xec, 0xfe, 0x9f, 0x00, 0x81, 0x01, 0x4a, 0x03, 0xaf, 0x01, 0x02, 0xfd, 0xb0, 0xf9, 0xa0, 0xfa, + 0x3f, 0xf9, 0xf9, 0xf9, 0xbb, 0xfb, 0x9d, 0xfd, 0x75, 0xfe, 0x90, 0x01, 0x0c, 0x02, 0x92, 0x01, + 0x18, 0x02, 0x96, 0xfe, 0x11, 0xfc, 0xc8, 0xfa, 0x3c, 0xfc, 0x8d, 0xfb, 0x07, 0xf9, 0x3f, 0xfa, + 0x6a, 0xfc, 0xd6, 0xfc, 0x23, 0xf8, 0xd5, 0xf5, 0xf8, 0xf6, 0x0a, 0xf2, 0x3c, 0xf2, 0xee, 0xf2, + 0x9c, 0xf1, 0x20, 0xf1, 0x47, 0xf0, 0x50, 0xf2, 0x57, 0xf2, 0x4c, 0xf6, 0xf3, 0xfa, 0xb1, 0xfd, + 0xd5, 0xfc, 0x87, 0xf8, 0x59, 0xfb, 0x0d, 0xfc, 0xca, 0x00, 0x88, 0x01, 0x81, 0x00, 0x70, 0x04, + 0x3d, 0x0a, 0x34, 0x0e, 0xc8, 0x0f, 0x54, 0x12, 0x7e, 0x11, 0x77, 0x10, 0xdf, 0x0f, 0xf5, 0x12, + 0x5b, 0x16, 0xef, 0x15, 0x71, 0x15, 0x19, 0x13, 0x29, 0x13, 0x5e, 0x14, 0x98, 0x12, 0x70, 0x12, + 0x11, 0x12, 0xbb, 0x10, 0x97, 0x11, 0x03, 0x10, 0x2b, 0x0d, 0x0f, 0x09, 0x2a, 0x07, 0x32, 0x06, + 0xeb, 0x04, 0x0c, 0x03, 0xba, 0x00, 0x66, 0xfc, 0xca, 0xfa, 0x0b, 0xfa, 0xdc, 0xf6, 0x1e, 0xf6, + 0xee, 0xf3, 0xc5, 0xf3, 0xf7, 0xf2, 0x0d, 0xf5, 0x7c, 0xf8, 0xb5, 0xf8, 0x4a, 0xfa, 0x86, 0xfa, + 0xf1, 0xf7, 0xae, 0xf3, 0xef, 0xf4, 0xc1, 0xf7, 0xe9, 0xf7, 0xc5, 0xf8, 0x0b, 0xfa, 0x6c, 0xfd, + 0xc5, 0x03, 0xdf, 0x06, 0x1f, 0x06, 0x29, 0x02, 0x24, 0x01, 0x29, 0x03, 0x36, 0x01, 0x06, 0xfe, + 0x65, 0xfe, 0x4f, 0x00, 0xb4, 0x01, 0x4c, 0x04, 0x5b, 0x07, 0xf1, 0x08, 0x1a, 0x0a, 0x5b, 0x09, + 0x99, 0x08, 0x7a, 0x05, 0xad, 0x05, 0x9e, 0x09, 0xca, 0x07, 0x63, 0x05, 0xfe, 0x04, 0x65, 0x08, + 0xac, 0x08, 0xd9, 0x06, 0xb5, 0x07, 0x42, 0x04, 0x00, 0x05, 0x68, 0x01, 0x87, 0xfd, 0x82, 0xfe, + 0x0a, 0xfc, 0x43, 0xfe, 0x4c, 0xfc, 0x17, 0xfb, 0x0a, 0xfc, 0xfb, 0xfb, 0x6a, 0xfc, 0x55, 0xfb, + 0x17, 0xfd, 0x84, 0xfc, 0x6e, 0xff, 0x73, 0x01, 0x70, 0x04, 0x1c, 0x07, 0x8a, 0x04, 0xc6, 0x03, + 0x03, 0x01, 0xb2, 0x00, 0x42, 0xff, 0x35, 0xfd, 0x60, 0xfc, 0xd1, 0xf7, 0x1b, 0xf5, 0x56, 0xf4, + 0x75, 0xf6, 0x3e, 0xf6, 0xa7, 0xf9, 0x0d, 0xfc, 0x00, 0xf9, 0x29, 0xf8, 0x9c, 0xf8, 0xc1, 0xf7, + 0x0c, 0xf5, 0x6b, 0xf4, 0x15, 0xf6, 0xb0, 0xf6, 0xe2, 0xf9, 0x32, 0xfa, 0x7c, 0xf9, 0x9d, 0xf7, + 0xff, 0xf6, 0x06, 0xf9, 0x17, 0xfc, 0x5e, 0xfb, 0x39, 0xf5, 0xfb, 0xf3, 0x5c, 0xef, 0x48, 0xf4, + 0x1c, 0xf8, 0x4b, 0xf6, 0xb2, 0xf7, 0xee, 0xf2, 0x5d, 0xf0, 0xca, 0xf1, 0x22, 0xf2, 0xbe, 0xf4, + 0x40, 0xf5, 0xd1, 0xf4, 0x82, 0xf2, 0xca, 0xf6, 0xeb, 0xf9, 0x2d, 0xfe, 0x39, 0xfd, 0xa2, 0xff, + 0x7a, 0x03, 0x79, 0x05, 0xcb, 0x08, 0x08, 0x0c, 0x19, 0x0c, 0x1a, 0x0d, 0xec, 0x0e, 0x9a, 0x0e, + 0x6e, 0x0f, 0x19, 0x13, 0xcf, 0x11, 0x01, 0x10, 0x6b, 0x0f, 0xfc, 0x0d, 0xbc, 0x0b, 0x67, 0x07, + 0xda, 0x05, 0xc9, 0x05, 0x93, 0x09, 0x93, 0x0d, 0x46, 0x0e, 0xe3, 0x0c, 0x55, 0x0a, 0xd6, 0x07, + 0x53, 0x06, 0x10, 0xfe, 0x26, 0xfb, 0x35, 0xf9, 0x99, 0xf7, 0x5c, 0xf6, 0xdd, 0xf7, 0x51, 0xf7, + 0x86, 0xf4, 0x16, 0xf2, 0x93, 0xf2, 0x7a, 0xf3, 0xc4, 0xf4, 0x6a, 0xf8, 0x02, 0xfb, 0x7b, 0xf7, + 0x3b, 0xfb, 0xe4, 0xff, 0x28, 0xfd, 0x82, 0xfc, 0xe2, 0xfc, 0x25, 0xff, 0xf4, 0xfc, 0xd9, 0xfc, + 0xf2, 0x00, 0x91, 0x04, 0x3b, 0x07, 0x9d, 0x0a, 0xd5, 0x0b, 0xd1, 0x07, 0x37, 0x06, 0x1b, 0x06, + 0xdb, 0x04, 0x4f, 0x07, 0x82, 0x07, 0x30, 0x0b, 0x6c, 0x0e, 0x43, 0x0f, 0x11, 0x11, 0x05, 0x12, + 0x81, 0x12, 0x30, 0x0e, 0x8a, 0x0d, 0xaa, 0x0f, 0x25, 0x10, 0x95, 0x0d, 0xe1, 0x0a, 0xf5, 0x08, + 0xc0, 0x06, 0xc2, 0x04, 0x6c, 0x04, 0xd9, 0x03, 0x34, 0x00, 0x6d, 0x01, 0x56, 0x02, 0xb5, 0x00, + 0x5a, 0x02, 0xb5, 0x00, 0x45, 0xfe, 0x67, 0xfa, 0x03, 0xf9, 0xc5, 0xf9, 0xfa, 0xf6, 0x35, 0xf5, + 0x91, 0xf6, 0x51, 0xfb, 0x05, 0xfb, 0x5c, 0xfc, 0x24, 0x00, 0xbf, 0x02, 0xc0, 0x04, 0x41, 0x03, + 0xae, 0x02, 0x6e, 0x02, 0x09, 0x06, 0xdb, 0x0a, 0x84, 0x07, 0xca, 0x03, 0x63, 0x03, 0xf5, 0x01, + 0x1c, 0xfd, 0xa7, 0xfd, 0x8b, 0xfe, 0x9e, 0xfd, 0xdc, 0xfe, 0x01, 0xff, 0xed, 0x00, 0x8a, 0x00, + 0x43, 0x01, 0x2b, 0x01, 0xbe, 0xfd, 0xbf, 0xfd, 0x5a, 0xfd, 0xda, 0xfc, 0xe5, 0xfa, 0x57, 0xfb, + 0x89, 0xfc, 0xcc, 0xfa, 0x8e, 0xfc, 0x56, 0xfd, 0xc3, 0xf9, 0x39, 0xf5, 0x3f, 0xf4, 0xb5, 0xf2, + 0x85, 0xef, 0xff, 0xeb, 0xdd, 0xe8, 0x30, 0xe9, 0x4a, 0xe7, 0xa8, 0xea, 0x3f, 0xf0, 0xde, 0xf3, + 0xf2, 0xf5, 0x22, 0xf5, 0x2d, 0xef, 0x37, 0xec, 0x09, 0xef, 0x28, 0xf4, 0xbb, 0xf5, 0xf1, 0xf6, + 0x4b, 0xfb, 0xa0, 0x01, 0x84, 0x06, 0xa2, 0x05, 0x5b, 0x08, 0x80, 0x06, 0xe3, 0x05, 0xaf, 0x07, + 0x76, 0x07, 0x4c, 0x0a, 0xfd, 0x0a, 0x73, 0x0c, 0xec, 0x0f, 0x38, 0x0e, 0xc6, 0x0e, 0xad, 0x0b, + 0x78, 0x08, 0x5f, 0x06, 0xb1, 0x07, 0x1c, 0x09, 0x63, 0x09, 0x4e, 0x09, 0xbd, 0x06, 0x64, 0x07, + 0x2d, 0x03, 0xf6, 0xfe, 0xfb, 0xfe, 0x76, 0x00, 0xe2, 0xfc, 0x14, 0xf8, 0xe8, 0xf8, 0x9e, 0xf6, + 0x84, 0xf5, 0x55, 0xf3, 0x32, 0xf2, 0x22, 0xf3, 0x59, 0xf1, 0x5d, 0xf4, 0xa0, 0xf6, 0x72, 0xfa, + 0x7e, 0xf9, 0xdf, 0xf7, 0xc4, 0xf5, 0x90, 0xf3, 0xd8, 0xf7, 0xe7, 0xf6, 0xea, 0xf8, 0x00, 0xfa, + 0x9b, 0xfb, 0x9d, 0xfe, 0xaf, 0x01, 0x98, 0x04, 0x6b, 0x00, 0x92, 0x01, 0x5e, 0x01, 0x61, 0x04, + 0x46, 0x03, 0xd7, 0x00, 0xa5, 0x03, 0xc3, 0x03, 0x04, 0x0a, 0xd0, 0x0e, 0xf5, 0x0d, 0xe4, 0x0c, + 0xf5, 0x0b, 0xf7, 0x0a, 0x4b, 0x07, 0x3e, 0x07, 0xce, 0x0a, 0xdd, 0x0c, 0x3e, 0x0c, 0x11, 0x0a, + 0x32, 0x0e, 0x55, 0x0d, 0x65, 0x0e, 0x7a, 0x0d, 0x05, 0x09, 0x4a, 0x04, 0xd9, 0x02, 0x08, 0x04, + 0x67, 0x00, 0x8e, 0x01, 0x0e, 0x02, 0xa3, 0x01, 0xcb, 0x01, 0xf2, 0x01, 0x5d, 0x03, 0xc2, 0x00, + 0x52, 0xff, 0xf8, 0xfe, 0x04, 0x03, 0xf2, 0x02, 0xde, 0x03, 0x71, 0x03, 0x8a, 0x06, 0xe4, 0x0b, + 0x94, 0x08, 0x41, 0x03, 0xba, 0x01, 0xca, 0x02, 0x99, 0x03, 0x3b, 0x02, 0xe9, 0x00, 0x12, 0xff, + 0xa4, 0xfe, 0xd7, 0xfc, 0xe2, 0xfa, 0x6f, 0xfc, 0x39, 0xfe, 0xe9, 0xfc, 0xe1, 0xf8, 0xdc, 0xfa, + 0x70, 0xfa, 0xba, 0xfa, 0x73, 0xfd, 0xb2, 0xfe, 0x95, 0x00, 0xf3, 0xfd, 0xb1, 0xfe, 0x27, 0xfd, + 0x43, 0xfc, 0x10, 0xff, 0x02, 0x01, 0x4e, 0xfe, 0xd1, 0xfc, 0x89, 0xfb, 0xc3, 0xfd, 0xbe, 0xfd, + 0xb6, 0xfb, 0x6f, 0xf9, 0x63, 0xf4, 0x69, 0xf4, 0x3c, 0xf5, 0xbe, 0xf5, 0xe3, 0xf3, 0xeb, 0xf4, + 0x69, 0xf8, 0x8d, 0xf7, 0x3d, 0xf8, 0x8f, 0xf5, 0x41, 0xf7, 0xff, 0xf6, 0xea, 0xf9, 0xfb, 0xfd, + 0x86, 0xfe, 0x72, 0x03, 0x32, 0x06, 0x4f, 0x08, 0x28, 0x0a, 0xdf, 0x0b, 0xa7, 0x0d, 0x5a, 0x10, + 0x0c, 0x10, 0x7f, 0x0a, 0x49, 0x0a, 0x01, 0x0a, 0x71, 0x0d, 0x6a, 0x0f, 0x97, 0x0b, 0x60, 0x08, + 0x2c, 0x06, 0xe9, 0x05, 0x83, 0x03, 0x63, 0x00, 0xe0, 0x00, 0x61, 0x03, 0x1a, 0x04, 0xd6, 0xff, + 0x9c, 0xff, 0xd6, 0xfc, 0x99, 0xfb, 0x32, 0xf9, 0xa0, 0xf3, 0xff, 0xf3, 0xce, 0xf1, 0x25, 0xf2, + 0x95, 0xf0, 0x38, 0xf0, 0xbd, 0xf0, 0x8c, 0xef, 0x5f, 0xec, 0xe3, 0xe7, 0xed, 0xe6, 0xb6, 0xe9, + 0xc6, 0xeb, 0xe9, 0xeb, 0x3f, 0xef, 0xfe, 0xf0, 0x70, 0xf4, 0x8e, 0xf6, 0xf8, 0xf4, 0x1b, 0xf3, + 0x7d, 0xf1, 0x0b, 0xf2, 0xb5, 0xf5, 0x9c, 0xfb, 0x76, 0xff, 0x4c, 0x04, 0xf3, 0x05, 0x36, 0x07, + 0x3c, 0x08, 0x91, 0x04, 0xc0, 0x03, 0x5c, 0x05, 0x33, 0x04, 0x35, 0x09, 0xdf, 0x10, 0x70, 0x12, + 0x32, 0x13, 0x82, 0x11, 0xb7, 0x0f, 0xec, 0x0f, 0x7e, 0x0d, 0xa5, 0x0e, 0x76, 0x10, 0xa4, 0x0e, + 0xb3, 0x0d, 0xec, 0x0d, 0x90, 0x12, 0x62, 0x13, 0x69, 0x11, 0x92, 0x0e, 0xf0, 0x0b, 0xcc, 0x0a, + 0xfa, 0x08, 0x34, 0x08, 0x1d, 0x07, 0x23, 0x04, 0xb7, 0x04, 0xea, 0x03, 0xff, 0x03, 0x01, 0x03, + 0x07, 0x03, 0xcd, 0x02, 0x9e, 0x01, 0x68, 0x06, 0x5c, 0x07, 0x6f, 0x06, 0x88, 0x03, 0x8e, 0x03, + 0x25, 0x03, 0x63, 0x02, 0xab, 0x03, 0xeb, 0x03, 0x81, 0x02, 0x59, 0x03, 0x58, 0x07, 0x4b, 0x05, + 0xee, 0x01, 0xa6, 0xfa, 0x3d, 0xf5, 0xf6, 0xf6, 0x27, 0xf8, 0x8f, 0xf8, 0x2a, 0xfb, 0xb0, 0xfc, + 0x7a, 0xfe, 0x58, 0xfd, 0x5f, 0xfb, 0x66, 0xfc, 0x15, 0xfd, 0x1e, 0xfb, 0x14, 0xfa, 0x25, 0xf9, + 0x85, 0xf8, 0x43, 0xfb, 0x66, 0xfd, 0xa2, 0xfd, 0xce, 0xf9, 0x59, 0xf8, 0x2a, 0xf8, 0x14, 0xf7, + 0x3d, 0xf5, 0x8f, 0xf0, 0x26, 0xef, 0xb2, 0xeb, 0x5e, 0xec, 0x0c, 0xef, 0xb0, 0xf0, 0xfc, 0xf1, + 0x89, 0xf2, 0xa6, 0xf2, 0x2c, 0xf3, 0x3a, 0xf5, 0x28, 0xf4, 0x65, 0xf4, 0xb1, 0xf4, 0x49, 0xf7, + 0x8b, 0xfd, 0x3f, 0x00, 0x8f, 0x03, 0xec, 0x03, 0xbf, 0x07, 0x98, 0x0c, 0x85, 0x0f, 0x31, 0x10, + 0xbc, 0x0f, 0xab, 0x0e, 0xf1, 0x0b, 0xeb, 0x10, 0xaf, 0x14, 0xb3, 0x17, 0x53, 0x17, 0xf8, 0x13, + 0x71, 0x13, 0xb5, 0x11, 0x8a, 0x0f, 0xb3, 0x0e, 0xe2, 0x0a, 0x2f, 0x09, 0x5b, 0x0b, 0xa0, 0x0d, + 0x16, 0x0c, 0xc7, 0x09, 0x08, 0x0a, 0x77, 0x06, 0x70, 0xff, 0xd2, 0xff, 0xb2, 0x01, 0x2d, 0xfe, + 0x18, 0xfc, 0xbd, 0xfa, 0x8d, 0xf9, 0xa8, 0xf5, 0xb3, 0xf3, 0xa4, 0xf2, 0xce, 0xed, 0xb5, 0xed, + 0xa4, 0xf1, 0x67, 0xf3, 0x47, 0xf0, 0xe2, 0xf0, 0x8a, 0xf1, 0x4a, 0xf0, 0xea, 0xed, 0x7f, 0xed, + 0x15, 0xf0, 0x0f, 0xf4, 0x79, 0xf6, 0x04, 0xf4, 0x2e, 0xf2, 0xf8, 0xf4, 0x8c, 0xfc, 0x65, 0xff, + 0xd5, 0xfe, 0x1a, 0xfe, 0x9b, 0xf9, 0x29, 0xfb, 0xb6, 0xfb, 0xb8, 0xfb, 0xb8, 0xff, 0xb7, 0x02, + 0x7a, 0x03, 0xf9, 0x01, 0xe3, 0x02, 0x40, 0x05, 0x94, 0x05, 0x72, 0x03, 0x30, 0x02, 0x16, 0x05, + 0xac, 0x01, 0x15, 0x04, 0xf6, 0x08, 0x1b, 0x09, 0x5d, 0x0a, 0xf6, 0x07, 0x30, 0x06, 0x80, 0x01, + 0x8d, 0x00, 0x05, 0x00, 0x61, 0x00, 0x5a, 0x02, 0x79, 0x00, 0x69, 0x01, 0xc4, 0x00, 0xe4, 0x04, + 0x51, 0x03, 0x43, 0x03, 0xd0, 0x02, 0x93, 0x01, 0x84, 0x05, 0x40, 0x09, 0x53, 0x08, 0xae, 0x05, + 0xe8, 0x09, 0x92, 0x0b, 0x22, 0x08, 0x7f, 0x05, 0x19, 0x04, 0x2c, 0x05, 0xab, 0x05, 0x86, 0x06, + 0x58, 0x06, 0xad, 0x06, 0x94, 0x06, 0x3b, 0x02, 0xae, 0x01, 0x77, 0xfd, 0x0a, 0xfc, 0x42, 0xfe, + 0xea, 0xfd, 0xec, 0x01, 0xa5, 0x03, 0x2e, 0x02, 0x02, 0x01, 0x28, 0x00, 0x09, 0x02, 0x3e, 0x04, + 0x62, 0x02, 0x93, 0xff, 0xac, 0xfe, 0x02, 0x00, 0x7d, 0x00, 0x94, 0xff, 0x1a, 0x01, 0x9a, 0xff, + 0x7c, 0xfe, 0xdb, 0xfa, 0xcd, 0xfb, 0xb5, 0xfb, 0xcd, 0xf5, 0x60, 0xf3, 0x6c, 0xf0, 0x77, 0xf1, + 0x32, 0xf5, 0x3d, 0xf8, 0xc4, 0xf6, 0x1d, 0xf5, 0xc5, 0xf5, 0x4e, 0xf8, 0x24, 0xfa, 0xd0, 0xf6, + 0xbc, 0xf6, 0x19, 0xf9, 0xc2, 0xfe, 0x39, 0x04, 0xce, 0x04, 0x1f, 0x06, 0x70, 0x09, 0xf7, 0x0e, + 0x12, 0x0d, 0x57, 0x0a, 0x74, 0x07, 0x02, 0x06, 0x1d, 0x06, 0x59, 0x03, 0x54, 0x08, 0x75, 0x0b, + 0xda, 0x0b, 0x76, 0x0a, 0x4a, 0x03, 0xfe, 0x02, 0xda, 0x03, 0x98, 0x04, 0x66, 0x02, 0x37, 0x01, + 0x89, 0x00, 0x70, 0x01, 0x61, 0x02, 0xb8, 0xfe, 0x1a, 0xfa, 0xa3, 0xf7, 0xef, 0xf7, 0x94, 0xf9, + 0x90, 0xfb, 0x19, 0xfc, 0x9f, 0xf6, 0x79, 0xf4, 0xd7, 0xf1, 0x36, 0xef, 0x71, 0xef, 0x93, 0xf0, + 0x5f, 0xf2, 0xbd, 0xf2, 0xb2, 0xf1, 0x4e, 0xf5, 0xc8, 0xf8, 0x1a, 0xf7, 0x1e, 0xf7, 0x70, 0xf5, + 0xb9, 0xf5, 0x0d, 0xf8, 0x81, 0xf7, 0x8f, 0xf8, 0xe6, 0xfb, 0x16, 0xff, 0x93, 0x00, 0x54, 0x05, + 0x79, 0x08, 0xb2, 0x09, 0x3a, 0x0b, 0x45, 0x07, 0xb9, 0x06, 0x66, 0x0b, 0x8c, 0x0b, 0x5b, 0x0e, + 0x6c, 0x0e, 0xcb, 0x0f, 0xe9, 0x0f, 0xb0, 0x0c, 0x2d, 0x10, 0x55, 0x10, 0x23, 0x0e, 0x88, 0x09, + 0xeb, 0x04, 0xd6, 0x03, 0x32, 0x08, 0xcb, 0x0b, 0xeb, 0x0b, 0x04, 0x0a, 0xe9, 0x08, 0x2c, 0x09, + 0x6c, 0x06, 0x2d, 0x03, 0x84, 0xfe, 0xad, 0xfb, 0x52, 0xfa, 0xf1, 0xf9, 0x72, 0xfd, 0xc2, 0xfd, + 0x7d, 0xfd, 0x41, 0xfc, 0x7e, 0xfc, 0x79, 0xfc, 0x79, 0xfb, 0x32, 0xfa, 0xbb, 0xf7, 0x57, 0xf8, + 0x84, 0xf9, 0x20, 0xfe, 0x32, 0xfe, 0x47, 0x01, 0x73, 0x00, 0xfd, 0xfe, 0xe3, 0x00, 0xe5, 0x01, + 0x9c, 0x02, 0xe1, 0x00, 0x5f, 0xff, 0x73, 0xfd, 0xde, 0xfa, 0x33, 0xfa, 0x0c, 0xfa, 0x37, 0xfc, + 0xde, 0xfe, 0x01, 0xfe, 0xa6, 0xfd, 0x7d, 0xfb, 0x82, 0xfb, 0x48, 0x02, 0xc3, 0x02, 0x4b, 0x03, + 0x11, 0x02, 0x2d, 0x02, 0x0f, 0x04, 0xd8, 0x01, 0x41, 0x02, 0x68, 0x03, 0x87, 0x04, 0xc3, 0xff, + 0x43, 0xfe, 0x42, 0xfe, 0x85, 0xfa, 0x03, 0xfc, 0x40, 0xf9, 0x80, 0xf7, 0xa4, 0xf6, 0x6a, 0xf7, + 0xb6, 0xf7, 0x1e, 0xf7, 0xe4, 0xf8, 0x45, 0xf9, 0x07, 0xfc, 0x39, 0xfb, 0x23, 0xfc, 0x4f, 0xfb, + 0xf3, 0xf9, 0x40, 0xfa, 0x28, 0xfa, 0x74, 0x02, 0x67, 0x07, 0x9e, 0x08, 0xe0, 0x09, 0x42, 0x0c, + 0x54, 0x0e, 0x77, 0x0c, 0x18, 0x10, 0x76, 0x0d, 0xbc, 0x0b, 0xaa, 0x0e, 0x86, 0x0c, 0xf8, 0x10, + 0xcc, 0x12, 0x8a, 0x11, 0xd2, 0x0d, 0xfe, 0x0a, 0xf2, 0x08, 0xfa, 0x06, 0x7b, 0x07, 0xf7, 0x04, + 0x92, 0x03, 0x70, 0x00, 0xba, 0x01, 0xad, 0x01, 0x87, 0x01, 0x83, 0x03, 0x28, 0x01, 0xac, 0x00, + 0xa0, 0xfd, 0x7b, 0xfa, 0x3e, 0xf8, 0x53, 0xf6, 0xe4, 0xf6, 0x2a, 0xf3, 0xae, 0xf0, 0x55, 0xed, + 0x80, 0xec, 0x3f, 0xec, 0x46, 0xe9, 0xbe, 0xe9, 0xb2, 0xec, 0x91, 0xee, 0x7f, 0xee, 0x7c, 0xf0, + 0xa7, 0xf1, 0xb3, 0xef, 0x86, 0xef, 0xe0, 0xf1, 0x73, 0xf3, 0x61, 0xf6, 0xa7, 0xf4, 0x07, 0xf8, + 0x27, 0x00, 0xb3, 0x01, 0x3d, 0x02, 0xd3, 0x01, 0xcf, 0x00, 0x27, 0x01, 0x4c, 0x02, 0xb5, 0x05, + 0x75, 0x09, 0x58, 0x0b, 0x51, 0x0c, 0xe9, 0x0c, 0x7e, 0x09, 0x50, 0x0b, 0x7a, 0x0d, 0x87, 0x0c, + 0x2d, 0x09, 0x82, 0x05, 0x81, 0x06, 0x00, 0x0a, 0x04, 0x0a, 0x6e, 0x09, 0xc6, 0x07, 0xd1, 0x06, + 0xc9, 0x06, 0x9e, 0x04, 0xee, 0xff, 0x82, 0xfd, 0xae, 0xfd, 0x5d, 0xfc, 0x26, 0xfd, 0x3e, 0xff, + 0x69, 0x02, 0xe8, 0x01, 0x19, 0x00, 0xf7, 0xff, 0xb4, 0x00, 0x6d, 0x02, 0x90, 0x01, 0x0b, 0xff, + 0x51, 0xfd, 0x31, 0x00, 0x38, 0x00, 0xfc, 0xfe, 0x5d, 0xfe, 0xbb, 0xfc, 0xf3, 0xfc, 0x46, 0xfd, + 0x57, 0xff, 0xe8, 0x01, 0x98, 0x03, 0xbd, 0x01, 0x22, 0xfe, 0x74, 0xfa, 0x3e, 0xfa, 0x88, 0xfa, + 0x4e, 0xfb, 0x39, 0xfa, 0xe1, 0xf8, 0x39, 0xfc, 0xa5, 0xfc, 0xa5, 0xfb, 0x35, 0xfe, 0xf3, 0xfe, + 0x0b, 0x01, 0x48, 0x01, 0xcc, 0xff, 0xdf, 0x00, 0xb9, 0x01, 0xb8, 0x02, 0x35, 0x00, 0xba, 0xff, + 0x12, 0x01, 0x85, 0x03, 0x85, 0x04, 0x54, 0xfe, 0xb6, 0xfe, 0x76, 0xfe, 0x7f, 0xfb, 0x08, 0xfa, + 0x43, 0xf6, 0xb9, 0xf8, 0x61, 0xf9, 0x62, 0xfb, 0x1c, 0xfd, 0xa7, 0xfc, 0x57, 0xfc, 0x3f, 0xfa, + 0xa3, 0xfb, 0xfa, 0xfd, 0xec, 0xff, 0x1c, 0x01, 0x02, 0x05, 0x36, 0x07, 0xc2, 0x06, 0x86, 0x0b, + 0x02, 0x12, 0xd2, 0x13, 0xcd, 0x0f, 0xf4, 0x0d, 0xe2, 0x0d, 0x48, 0x0b, 0xea, 0x0b, 0x7b, 0x0d, + 0xc1, 0x0c, 0xb1, 0x0d, 0x14, 0x10, 0x1d, 0x11, 0x91, 0x0c, 0xfe, 0x08, 0x53, 0x09, 0xab, 0x06, + 0xbf, 0x04, 0x4c, 0x04, 0x3c, 0x05, 0xa5, 0x05, 0xf6, 0x02, 0x93, 0xff, 0xdb, 0xfd, 0xe4, 0xfd, + 0xf5, 0xfe, 0x6a, 0xfc, 0x88, 0xf9, 0x41, 0xf6, 0x11, 0xf6, 0x4e, 0xf5, 0x5b, 0xf3, 0x69, 0xee, + 0xeb, 0xea, 0xb3, 0xec, 0x75, 0xed, 0x7f, 0xee, 0x35, 0xed, 0x98, 0xef, 0x74, 0xf2, 0xaa, 0xf4, + 0x67, 0xf4, 0x0c, 0xf1, 0x9a, 0xf2, 0x70, 0xf2, 0x51, 0xf4, 0xb5, 0xf6, 0x89, 0xf6, 0xf2, 0xf6, + 0xbf, 0xf9, 0x39, 0x00, 0xb4, 0x04, 0x25, 0x06, 0x59, 0x07, 0xe0, 0x05, 0xaa, 0x06, 0xfd, 0x05, + 0xd2, 0x06, 0xb8, 0x09, 0x58, 0x09, 0xd3, 0x0c, 0x04, 0x0d, 0xe4, 0x0b, 0xed, 0x0c, 0xc8, 0x0a, + 0x1c, 0x08, 0x1e, 0x06, 0xd8, 0x03, 0x55, 0x08, 0x86, 0x0c, 0xab, 0x0d, 0x40, 0x0c, 0x0e, 0x0c, + 0x82, 0x0b, 0x0b, 0x08, 0x1e, 0x03, 0x28, 0x00, 0x59, 0x00, 0x80, 0x00, 0x00, 0xfe, 0xc1, 0xfe, + 0x67, 0xfd, 0xdc, 0xfd, 0x3b, 0xfe, 0xe6, 0xfc, 0x85, 0xfd, 0x1d, 0xfb, 0xa9, 0xfa, 0x34, 0xf7, + 0xed, 0xf8, 0x49, 0xfb, 0x7f, 0xfc, 0xd0, 0xff, 0xfb, 0xfc, 0x38, 0xfc, 0xbb, 0xf9, 0x5e, 0xfe, + 0x30, 0x00, 0xb1, 0xff, 0x97, 0x01, 0x7e, 0xfe, 0x40, 0xff, 0x32, 0xfc, 0xf3, 0xfb, 0xe2, 0xfb, + 0xf8, 0xf8, 0x5d, 0xf9, 0xf5, 0xf8, 0x9d, 0xfa, 0x1a, 0xfa, 0xf1, 0xfa, 0x83, 0xfb, 0xb1, 0xfd, + 0x37, 0xff, 0x62, 0xfe, 0xb1, 0xfe, 0x4d, 0xfe, 0x6e, 0x01, 0xf0, 0x01, 0xdb, 0xfe, 0x84, 0xfc, + 0x77, 0xfa, 0x25, 0xfa, 0x02, 0xfa, 0xc7, 0xfb, 0x61, 0xfc, 0x64, 0xfb, 0xd2, 0xfa, 0x49, 0xf9, + 0x99, 0xf8, 0x2e, 0xf6, 0xd5, 0xf3, 0x17, 0xf1, 0xe9, 0xf2, 0x67, 0xf7, 0x05, 0xf9, 0xf8, 0xf9, + 0x6f, 0xf8, 0x38, 0xf5, 0x0e, 0xf6, 0x66, 0xf9, 0x28, 0xfd, 0x6e, 0x00, 0xd6, 0x02, 0x96, 0x04, + 0x12, 0x07, 0xeb, 0x0b, 0xd2, 0x0d, 0x54, 0x0d, 0xc9, 0x0b, 0x5b, 0x0c, 0x16, 0x0c, 0xae, 0x0d, + 0x86, 0x15, 0x38, 0x17, 0xeb, 0x14, 0xa9, 0x11, 0x59, 0x10, 0xda, 0x11, 0xf6, 0x0f, 0xcb, 0x0c, + 0x2e, 0x0a, 0xd3, 0x09, 0x9a, 0x09, 0x1d, 0x0b, 0x49, 0x0c, 0xba, 0x09, 0x5e, 0x09, 0x1e, 0x09, + 0x65, 0x08, 0xa7, 0x06, 0x70, 0x01, 0x11, 0x02, 0x25, 0x02, 0x47, 0x00, 0x2f, 0xff, 0x0d, 0xfb, + 0x95, 0xf6, 0x2c, 0xf3, 0x8e, 0xef, 0x64, 0xeb, 0xb6, 0xed, 0xf5, 0xf0, 0x55, 0xf2, 0xdb, 0xf1, + 0x3e, 0xef, 0x31, 0xf2, 0x1c, 0xf6, 0x2e, 0xf8, 0x9f, 0xf4, 0x21, 0xf2, 0x4b, 0xf4, 0x75, 0xf6, + 0x28, 0xf9, 0xf7, 0xf7, 0x01, 0xfc, 0x48, 0x02, 0x08, 0x06, 0x18, 0x07, 0x06, 0x03, 0xa8, 0x04, + 0xaa, 0x02, 0xcd, 0x03, 0x4b, 0x05, 0xf5, 0x03, 0xc3, 0x07, 0x71, 0x0b, 0x3c, 0x0e, 0x1a, 0x0b, + 0x48, 0x09, 0x64, 0x08, 0x83, 0x05, 0x17, 0x05, 0x6f, 0x06, 0x77, 0x08, 0x55, 0x09, 0x91, 0x0b, + 0x7e, 0x0a, 0x41, 0x0a, 0x95, 0x07, 0x18, 0x04, 0x44, 0x03, 0xe2, 0x00, 0x23, 0xff, 0x67, 0xff, + 0x7e, 0xff, 0x6e, 0xff, 0xf8, 0xff, 0x11, 0xfe, 0x4a, 0xfd, 0x3b, 0xfc, 0x2c, 0xfc, 0x06, 0xff, + 0xe3, 0xfd, 0x83, 0xfb, 0x62, 0xfa, 0x45, 0xfd, 0xb1, 0xfb, 0xfa, 0xf9, 0xe4, 0xf8, 0x4a, 0xfb, + 0x4a, 0xfd, 0xf0, 0xfc, 0xc0, 0xff, 0x07, 0x02, 0x86, 0x02, 0xe3, 0x00, 0xbf, 0xfe, 0xe2, 0xfb, + 0xe1, 0xfb, 0x38, 0xfa, 0xa3, 0xf8, 0x70, 0xf7, 0xfe, 0xf6, 0xf5, 0xfa, 0xe4, 0xfb, 0x3a, 0xfd, + 0x09, 0xfe, 0xf6, 0xfb, 0xa6, 0xfd, 0xe8, 0xfe, 0x6c, 0x01, 0x6a, 0xff, 0x47, 0xfd, 0x48, 0xfe, + 0x69, 0xff, 0x27, 0x01, 0x4d, 0xff, 0x1c, 0xff, 0xbe, 0xfe, 0x09, 0xfe, 0xe0, 0xff, 0x53, 0xfe, + 0xc9, 0xfc, 0x91, 0xf9, 0x5b, 0xf7, 0xc0, 0xf2, 0x48, 0xf3, 0x15, 0xf7, 0x92, 0xf9, 0xc6, 0xfb, + 0x4e, 0xf9, 0x23, 0xfa, 0x32, 0xfa, 0x6f, 0xfc, 0x55, 0xfc, 0xc4, 0xf9, 0x6d, 0xfd, 0x20, 0x01, + 0x65, 0x07, 0xa9, 0x08, 0x0e, 0x0b, 0x49, 0x0d, 0x5a, 0x0a, 0x32, 0x08, 0x1b, 0x06, 0x1b, 0x07, + 0x2b, 0x09, 0x76, 0x0a, 0x85, 0x0a, 0xe8, 0x0b, 0x22, 0x0f, 0xc3, 0x0e, 0xe9, 0x0e, 0xc5, 0x08, + 0xd1, 0x04, 0x06, 0x06, 0x3f, 0x05, 0xe7, 0x02, 0xe5, 0xfe, 0xc5, 0x01, 0x89, 0x02, 0x48, 0x03, + 0xa7, 0x03, 0xf1, 0x02, 0x55, 0x00, 0x8b, 0xf7, 0x2a, 0xf8, 0x92, 0xf8, 0x16, 0xf8, 0xa0, 0xf8, + 0x88, 0xf6, 0xb9, 0xf6, 0xa5, 0xf2, 0x7a, 0xf0, 0x1e, 0xed, 0x87, 0xee, 0x5a, 0xef, 0x4e, 0xf1, + 0x12, 0xf2, 0x9d, 0xf1, 0x7f, 0xf3, 0x38, 0xf6, 0xb6, 0xf9, 0xce, 0xf7, 0x77, 0xf6, 0xf2, 0xf5, + 0xad, 0xf8, 0x5e, 0xfb, 0xe4, 0xfb, 0x16, 0x01, 0xc6, 0x06, 0x63, 0x09, 0x68, 0x0a, 0x1a, 0x0a, + 0xe9, 0x0c, 0xa3, 0x0e, 0x80, 0x0d, 0x20, 0x0c, 0x5e, 0x0a, 0xb1, 0x0c, 0x0a, 0x11, 0x15, 0x10, + 0x34, 0x0b, 0xcc, 0x09, 0xd2, 0x0a, 0xfb, 0x0a, 0x2d, 0x0b, 0xb7, 0x0a, 0x85, 0x0a, 0x45, 0x0d, + 0x4d, 0x11, 0x38, 0x0d, 0x24, 0x0b, 0x03, 0x09, 0xff, 0x05, 0x09, 0x04, 0x8f, 0x00, 0xd8, 0xff, + 0x8f, 0x02, 0xb2, 0x02, 0x06, 0x00, 0xab, 0xfe, 0x24, 0xfc, 0x6a, 0xfd, 0x36, 0xfc, 0x43, 0xfa, + 0x9c, 0xfb, 0x79, 0xfb, 0xb1, 0xfd, 0xe8, 0xfe, 0x71, 0xfc, 0xee, 0xfa, 0x66, 0xfa, 0xc2, 0xfc, + 0x6f, 0xfe, 0x80, 0xfd, 0x0d, 0xfa, 0xfd, 0xfc, 0xae, 0xff, 0xea, 0xfc, 0xcd, 0xfd, 0x6d, 0xfe, + 0x52, 0xfe, 0xe3, 0xfd, 0xc5, 0xf9, 0x2c, 0xfa, 0xf1, 0xfa, 0xf1, 0xfb, 0xf7, 0xfc, 0x58, 0xfc, + 0x5f, 0xfc, 0x7f, 0xfd, 0xff, 0xfe, 0x52, 0xfe, 0x97, 0xfd, 0x1a, 0xff, 0xd6, 0xfe, 0x0e, 0xfe, + 0xf9, 0xfc, 0xc6, 0xfa, 0x21, 0xfc, 0x63, 0xfb, 0xcd, 0xf9, 0x4b, 0xfc, 0x09, 0xfd, 0xfc, 0xfd, + 0xf8, 0xfe, 0x81, 0xfe, 0x5c, 0xf9, 0xff, 0xf7, 0xcc, 0xf9, 0x71, 0xf8, 0x78, 0xf6, 0xc9, 0xf5, + 0x57, 0xf8, 0x83, 0xf8, 0x65, 0xf9, 0xef, 0xf7, 0x99, 0xf9, 0x5c, 0xfb, 0x19, 0xfd, 0xea, 0xfd, + 0x13, 0xfe, 0x5b, 0x02, 0xce, 0x03, 0xe6, 0x05, 0xde, 0x07, 0x92, 0x0a, 0x63, 0x0d, 0x89, 0x0c, + 0x86, 0x07, 0xa0, 0x08, 0xcf, 0x0c, 0xa4, 0x0c, 0xaf, 0x0c, 0xc3, 0x0d, 0x48, 0x0f, 0xc2, 0x0c, + 0x50, 0x0b, 0x05, 0x09, 0xb2, 0x07, 0x5f, 0x07, 0x45, 0x07, 0xc5, 0x05, 0xa2, 0x05, 0x23, 0x09, + 0x91, 0x0a, 0x75, 0x08, 0x48, 0x06, 0x43, 0x02, 0xd0, 0xfe, 0xfd, 0x01, 0xc4, 0x02, 0x6f, 0x01, + 0xc1, 0xfd, 0xf1, 0xf8, 0xf8, 0xf7, 0x49, 0xf4, 0x5d, 0xef, 0x57, 0xed, 0xe6, 0xed, 0xdc, 0xed, + 0x10, 0xef, 0x4a, 0xf1, 0xc0, 0xf3, 0x7c, 0xf3, 0xb5, 0xf4, 0xe3, 0xf4, 0x61, 0xf4, 0x09, 0xf5, + 0x0a, 0xf6, 0xca, 0xf5, 0x83, 0xf3, 0xdd, 0xf5, 0xc4, 0xfb, 0xae, 0x01, 0x0f, 0x06, 0x3a, 0x06, + 0xff, 0x05, 0x46, 0x06, 0xdb, 0x08, 0x54, 0x09, 0x6d, 0x07, 0x91, 0x06, 0xd2, 0x04, 0x6a, 0x08, + 0x8e, 0x0b, 0x16, 0x0b, 0x69, 0x0a, 0xea, 0x09, 0x33, 0x08, 0x16, 0x07, 0x17, 0x08, 0xf4, 0x08, + 0xd2, 0x08, 0xfa, 0x06, 0xe2, 0x07, 0x57, 0x0a, 0x92, 0x08, 0x92, 0x04, 0x0f, 0x02, 0x99, 0x00, + 0xc0, 0x02, 0xac, 0x03, 0x7d, 0xfe, 0xea, 0xfb, 0xaf, 0xfd, 0xb1, 0xff, 0x3d, 0x01, 0x50, 0x00, + 0x39, 0x00, 0x88, 0x00, 0x44, 0xfc, 0x29, 0xfa, 0xca, 0xf9, 0xfc, 0xfc, 0xf8, 0xfc, 0x38, 0xfa, + 0xee, 0xf9, 0x36, 0xfc, 0x4a, 0x00, 0x18, 0xfe, 0xd8, 0xfc, 0x51, 0xfc, 0xaf, 0xfd, 0x2f, 0x01, + 0x02, 0xff, 0xf1, 0xff, 0x52, 0xfd, 0x88, 0xf9, 0x02, 0xf9, 0x94, 0xfa, 0xa1, 0xfc, 0xdf, 0xfc, + 0x23, 0xfb, 0x7d, 0xf9, 0x05, 0xfc, 0x83, 0xfe, 0xef, 0x00, 0x87, 0xfe, 0x58, 0xfa, 0x78, 0xfc, + 0xcc, 0xfe, 0x10, 0x02, 0xc1, 0x00, 0xc3, 0x01, 0x39, 0x02, 0x27, 0xff, 0xda, 0xff, 0x81, 0xff, + 0xe9, 0x00, 0x70, 0x00, 0x2d, 0xfe, 0x56, 0xff, 0xa9, 0xfe, 0x43, 0xfa, 0xc6, 0xf9, 0xa4, 0xf8, + 0x1a, 0xf9, 0x19, 0xf9, 0xd2, 0xfa, 0xf2, 0xfe, 0x67, 0xfe, 0x30, 0xfe, 0xa7, 0xfe, 0x28, 0xff, + 0x49, 0x00, 0xd5, 0x00, 0x8a, 0x03, 0x42, 0x04, 0x96, 0x06, 0x67, 0x07, 0x18, 0x06, 0xda, 0x04, + 0x4d, 0x05, 0xaf, 0x07, 0xd8, 0x04, 0x43, 0x04, 0x14, 0x07, 0x87, 0x0b, 0x1b, 0x0c, 0x33, 0x0d, + 0x1a, 0x0c, 0x6b, 0x0a, 0xb4, 0x08, 0xec, 0x04, 0x85, 0x02, 0x97, 0x00, 0xe6, 0x01, 0x1c, 0x04, + 0x56, 0x05, 0xbb, 0x04, 0x5c, 0x02, 0xa4, 0xff, 0x09, 0xfe, 0x68, 0xfa, 0xa5, 0xfa, 0x70, 0xfa, + 0xc6, 0xfc, 0x60, 0xfc, 0x86, 0xf7, 0xb4, 0xf5, 0x56, 0xf2, 0x8c, 0xf1, 0x5a, 0xf0, 0x26, 0xee, + 0x5d, 0xec, 0xde, 0xec, 0xda, 0xed, 0x47, 0xf1, 0xff, 0xf3, 0x20, 0xf4, 0xf6, 0xf4, 0xc6, 0xf2, + 0xcd, 0xf2, 0x25, 0xf3, 0x02, 0xf8, 0x66, 0xfb, 0xfc, 0xfb, 0x41, 0xff, 0xea, 0x01, 0x26, 0x05, + 0xb4, 0x07, 0xa9, 0x0a, 0xde, 0x0a, 0x20, 0x0c, 0xcc, 0x0c, 0xe4, 0x0c, 0xb9, 0x0d, 0x07, 0x0b, + 0x9e, 0x09, 0x1e, 0x0a, 0xcd, 0x0a, 0x6e, 0x0b, 0xb6, 0x0a, 0xa5, 0x0a, 0x7e, 0x0a, 0x21, 0x0a, + 0xa4, 0x09, 0xc3, 0x0c, 0xcc, 0x0c, 0x64, 0x0d, 0xb8, 0x0e, 0xcb, 0x07, 0xc2, 0x04, 0x66, 0x06, + 0xd5, 0x06, 0x3b, 0x06, 0xf2, 0x02, 0x05, 0x00, 0x91, 0x00, 0xfd, 0xff, 0x09, 0xfe, 0x73, 0xff, + 0xf4, 0xff, 0x05, 0xff, 0xd8, 0xfc, 0x0c, 0xfb, 0x1b, 0xfd, 0x86, 0xfd, 0x90, 0xfd, 0xee, 0xfd, + 0xd4, 0xfe, 0xbc, 0x00, 0x9b, 0xff, 0x0b, 0xfa, 0x5e, 0xf5, 0x8b, 0xf7, 0x94, 0xfa, 0x5b, 0xfd, + 0xa2, 0xfe, 0x82, 0xfb, 0xc8, 0xfc, 0xbc, 0xfb, 0x12, 0xfb, 0xf1, 0xfc, 0x0a, 0xfd, 0x37, 0xfd, + 0x10, 0xfc, 0x40, 0xfa, 0xd3, 0xfd, 0xbd, 0xfd, 0x30, 0xff, 0x57, 0xfe, 0x65, 0xfe, 0x31, 0xff, + 0x0d, 0x00, 0xfa, 0xff, 0xe3, 0xfc, 0xb2, 0xfc, 0xfc, 0xf8, 0x98, 0xfa, 0x55, 0xfe, 0x87, 0xff, + 0x22, 0x00, 0xa0, 0x00, 0xd6, 0xff, 0x47, 0xfd, 0xa7, 0xfd, 0xb3, 0xfb, 0x26, 0xf6, 0x47, 0xf5, + 0xee, 0xf5, 0xdb, 0xf6, 0x3f, 0xf8, 0xea, 0xf8, 0x3d, 0xfa, 0xf5, 0xfb, 0xb7, 0xfc, 0xc1, 0xfb, + 0x3a, 0xfe, 0x2a, 0xff, 0xd3, 0xfe, 0xe5, 0xff, 0xe3, 0x00, 0x70, 0x03, 0xe9, 0x04, 0x91, 0x05, + 0xa2, 0x08, 0x3f, 0x0a, 0xeb, 0x07, 0xaf, 0x07, 0xbe, 0x07, 0x11, 0x09, 0xcd, 0x09, 0x2e, 0x0c, + 0xde, 0x0d, 0x76, 0x0b, 0xbf, 0x07, 0x6e, 0x06, 0x5e, 0x07, 0x26, 0x06, 0x95, 0x06, 0xad, 0x04, + 0xff, 0x02, 0xc7, 0x04, 0x86, 0x08, 0x4a, 0x09, 0x66, 0x05, 0x1b, 0x05, 0x8d, 0x01, 0x81, 0xff, + 0xe5, 0xfe, 0x86, 0x00, 0xb8, 0xff, 0x92, 0xfc, 0x24, 0xfb, 0xb0, 0xf6, 0x00, 0xf4, 0x63, 0xf1, + 0x6b, 0xee, 0xed, 0xe9, 0x43, 0xec, 0xe0, 0xf2, 0x6f, 0xf3, 0x94, 0xf5, 0x7a, 0xf6, 0x4f, 0xf6, + 0xc8, 0xf4, 0xfb, 0xf0, 0x50, 0xf2, 0x10, 0xf3, 0xa4, 0xf6, 0x7a, 0xf8, 0x90, 0xfc, 0x05, 0x01, + 0x7a, 0x05, 0xc8, 0x0a, 0x8c, 0x08, 0x71, 0x06, 0xe2, 0x07, 0x3d, 0x0b, 0xc7, 0x0d, 0x87, 0x0e, + 0x35, 0x0d, 0x16, 0x0c, 0x04, 0x0c, 0x1d, 0x0d, 0xb8, 0x0d, 0xda, 0x0d, 0x5c, 0x0c, 0x30, 0x0b, + 0xce, 0x0a, 0xf9, 0x0c, 0x40, 0x0f, 0x91, 0x0c, 0x30, 0x0a, 0x3d, 0x0a, 0x41, 0x09, 0x99, 0x08, + 0x8e, 0x09, 0xfe, 0x07, 0xb6, 0x05, 0xad, 0x03, 0x51, 0x00, 0x65, 0x01, 0x5a, 0x03, 0x3f, 0x01, + 0xf0, 0x00, 0xfc, 0xfe, 0x4d, 0xfe, 0x01, 0xfd, 0x10, 0xfb, 0x51, 0xfb, 0xfc, 0xf9, 0x50, 0xfa, + 0x02, 0xfb, 0xd1, 0xfb, 0x65, 0xfb, 0xa9, 0xf8, 0xc6, 0xf7, 0x89, 0xf8, 0xb9, 0xf8, 0x13, 0xf9, + 0xa9, 0xf9, 0xf2, 0xfa, 0xb0, 0xfb, 0x6e, 0xfb, 0x22, 0xfc, 0x93, 0xf9, 0x6d, 0xfa, 0x13, 0xf9, + 0xf5, 0xf6, 0xc1, 0xf6, 0x83, 0xf7, 0x17, 0xf9, 0x4a, 0xf8, 0xa6, 0xfc, 0x90, 0xfe, 0x11, 0xff, + 0xc7, 0xfd, 0x7d, 0xff, 0xdd, 0x00, 0xc3, 0x02, 0x9b, 0x01, 0x22, 0xff, 0x45, 0xff, 0x3a, 0x00, + 0x21, 0x04, 0x9a, 0x06, 0x81, 0x04, 0xc9, 0x02, 0x98, 0x00, 0x5e, 0xfe, 0x71, 0xfb, 0x28, 0xf9, + 0x40, 0xfa, 0xd9, 0xf8, 0x87, 0xf8, 0x70, 0xf8, 0x16, 0xfa, 0x03, 0xfe, 0xff, 0xfd, 0xd3, 0xfd, + 0xa3, 0xfe, 0x0e, 0xfe, 0xdb, 0xfd, 0x96, 0xfd, 0xdd, 0xfe, 0xf7, 0xfe, 0xe9, 0xff, 0x0d, 0x03, + 0xc5, 0x01, 0x9f, 0x05, 0x93, 0x04, 0x2c, 0x01, 0x93, 0x03, 0x4a, 0x05, 0x59, 0x08, 0x16, 0x05, + 0x46, 0x08, 0x1e, 0x0c, 0x0b, 0x09, 0x59, 0x07, 0x69, 0x06, 0xb0, 0x09, 0xfe, 0x03, 0x75, 0x00, + 0x27, 0x03, 0xb8, 0x05, 0x8e, 0x06, 0x04, 0x03, 0xbf, 0x01, 0x40, 0xfd, 0xe0, 0xfa, 0x88, 0xfa, + 0xdd, 0xfa, 0x5c, 0xfd, 0x40, 0xfd, 0xef, 0xfb, 0x13, 0xf6, 0xa6, 0xf2, 0xd5, 0xf2, 0xf7, 0xec, + 0xe3, 0xea, 0x75, 0xec, 0x90, 0xec, 0xdf, 0xea, 0xd1, 0xe7, 0x73, 0xea, 0x9a, 0xed, 0xa3, 0xed, + 0x58, 0xef, 0x16, 0xf2, 0xfb, 0xf6, 0x86, 0xf6, 0x9d, 0xf5, 0xed, 0xf7, 0x65, 0xf8, 0x2c, 0xfd, + 0x3b, 0x01, 0x23, 0x03, 0xda, 0x06, 0x50, 0x08, 0x77, 0x0d, 0xe8, 0x0e, 0x16, 0x0f, 0x63, 0x0f, + 0x1c, 0x0d, 0x6c, 0x0b, 0x20, 0x0a, 0x21, 0x0e, 0xfa, 0x0e, 0x14, 0x0f, 0x15, 0x11, 0x47, 0x0f, + 0x94, 0x0d, 0xc9, 0x0c, 0x9b, 0x0f, 0xbf, 0x0f, 0x69, 0x10, 0x56, 0x12, 0x82, 0x13, 0x00, 0x13, + 0x49, 0x0f, 0x5e, 0x0f, 0x07, 0x10, 0xfe, 0x10, 0xe9, 0x0b, 0xf6, 0x08, 0x1a, 0x08, 0x3b, 0x07, + 0x24, 0x09, 0x6c, 0x07, 0x2b, 0x04, 0xe6, 0x01, 0x09, 0x02, 0xca, 0xfd, 0xad, 0xfd, 0x4e, 0xff, + 0xf1, 0x00, 0xdf, 0xff, 0x31, 0xff, 0x34, 0x01, 0x48, 0xfe, 0x4e, 0xfa, 0x4b, 0xf9, 0xe8, 0xf7, + 0xc7, 0xf8, 0x03, 0xfc, 0x44, 0x00, 0xce, 0x01, 0xf6, 0x00, 0x23, 0x00, 0xea, 0xff, 0x57, 0x01, + 0x18, 0xfe, 0xf2, 0xfb, 0x4b, 0xf9, 0x37, 0xf8, 0x9b, 0xfc, 0x3e, 0xff, 0x55, 0xff, 0xa2, 0xfd, + 0x46, 0xfe, 0x2b, 0xfd, 0x8b, 0xf7, 0xbf, 0xf6, 0xb7, 0xfa, 0x75, 0xfa, 0xf6, 0xf5, 0xc3, 0xf3, + 0x09, 0xf6, 0xf1, 0xf8, 0xba, 0xf8, 0x92, 0xf9, 0x71, 0xfa, 0x43, 0xfb, 0x29, 0xfc, 0x5f, 0xf9, + 0xb6, 0xf3, 0xa1, 0xf2, 0xed, 0xf3, 0x8e, 0xf3, 0xed, 0xf2, 0x40, 0xf4, 0x3d, 0xf7, 0xfb, 0xf6, + 0xf8, 0xf4, 0x21, 0xfb, 0xfa, 0xfe, 0x04, 0x00, 0x7c, 0xff, 0x73, 0xfc, 0xcf, 0xfc, 0x47, 0xff, + 0x58, 0x02, 0x53, 0x01, 0x0e, 0x02, 0xe0, 0x02, 0xf0, 0x03, 0x6d, 0x06, 0x6f, 0x02, 0x62, 0x04, + 0xba, 0x07, 0x10, 0x07, 0x8b, 0x06, 0x4d, 0x08, 0x8d, 0x0d, 0x5a, 0x0c, 0xe0, 0x07, 0xcd, 0x04, + 0x0f, 0x07, 0xa4, 0x07, 0xcf, 0x09, 0xbe, 0x07, 0xc7, 0x07, 0x35, 0x09, 0xca, 0x06, 0x80, 0x04, + 0xad, 0x01, 0x6e, 0x04, 0xc6, 0x03, 0x0e, 0x01, 0x6b, 0xfe, 0xe9, 0xf8, 0x10, 0xfa, 0xe9, 0xf9, + 0x1d, 0xf6, 0x55, 0xf4, 0x9f, 0xf1, 0x60, 0xec, 0xa0, 0xea, 0x48, 0xec, 0x80, 0xed, 0x74, 0xf1, + 0xe8, 0xf4, 0x17, 0xf5, 0xc3, 0xf3, 0x04, 0xf2, 0x8f, 0xf2, 0xfa, 0xf4, 0xf3, 0xf2, 0x7a, 0xf3, + 0x42, 0xf9, 0x99, 0xfe, 0x2a, 0x03, 0xab, 0x05, 0x49, 0x06, 0x7d, 0x06, 0xca, 0x08, 0x64, 0x08, + 0xf6, 0x08, 0xcc, 0x09, 0xe1, 0x08, 0x6e, 0x07, 0x4e, 0x08, 0x53, 0x0c, 0x1a, 0x0e, 0xe8, 0x0b, + 0x53, 0x08, 0x3b, 0x08, 0xf0, 0x09, 0x91, 0x0b, 0x2c, 0x0e, 0x17, 0x0d, 0x14, 0x0c, 0x87, 0x07, + 0xf0, 0x04, 0xcc, 0x08, 0xe6, 0x0b, 0x7e, 0x0a, 0x87, 0x06, 0x93, 0x03, 0x6d, 0x00, 0x53, 0x03, + 0x85, 0x03, 0x28, 0x00, 0x39, 0x01, 0xeb, 0x00, 0x2c, 0xff, 0x6c, 0xfe, 0xcb, 0xf9, 0x50, 0xf8, + 0x51, 0xf8, 0xd4, 0xfb, 0xde, 0xfb, 0xbb, 0xfc, 0x6d, 0xfe, 0xcb, 0xfe, 0xa1, 0xfd, 0xb7, 0xfa, + 0xa6, 0xfb, 0x2b, 0x00, 0xd3, 0x00, 0x6d, 0xfe, 0x64, 0xfd, 0xf4, 0x02, 0xc1, 0x06, 0x89, 0x05, + 0xef, 0x04, 0x5e, 0x03, 0xb8, 0x00, 0x12, 0x00, 0xba, 0x01, 0xab, 0x00, 0x47, 0x03, 0x82, 0x05, + 0x7e, 0x04, 0x69, 0x04, 0x39, 0x03, 0x84, 0x03, 0x57, 0x04, 0xfa, 0x02, 0x24, 0xfe, 0x60, 0xff, + 0x8d, 0x02, 0xcf, 0x02, 0x90, 0x02, 0x8c, 0x03, 0x3f, 0x07, 0x62, 0x08, 0x1d, 0x07, 0x5d, 0x03, + 0xd4, 0xfd, 0xab, 0xfb, 0x30, 0xff, 0x95, 0xfe, 0x5d, 0xf9, 0xd9, 0xf9, 0xb2, 0xf9, 0xc1, 0xfa, + 0x4b, 0xfb, 0x99, 0xfc, 0x28, 0x00, 0x00, 0x01, 0xe1, 0xfe, 0x88, 0xfc, 0x4e, 0xfd, 0x94, 0xfb, + 0x89, 0xf9, 0x87, 0xfb, 0x55, 0xfa, 0x1f, 0xfd, 0xbd, 0xff, 0x65, 0xff, 0xf0, 0xfe, 0x68, 0xff, + 0x4e, 0x01, 0x1a, 0x03, 0x5b, 0x04, 0xc5, 0x02, 0x76, 0x03, 0x30, 0x06, 0xae, 0x06, 0xe7, 0x03, + 0xe5, 0x03, 0xac, 0x04, 0x61, 0x03, 0xdf, 0x00, 0xe9, 0xfe, 0x63, 0x01, 0x36, 0x02, 0xe6, 0xff, + 0xcb, 0xfd, 0x77, 0xfd, 0xd4, 0xfc, 0x0c, 0xfb, 0xdb, 0xf7, 0xa2, 0xf6, 0xb6, 0xf7, 0x0b, 0xf7, + 0x01, 0xf5, 0x86, 0xf2, 0x2d, 0xf0, 0x16, 0xed, 0xda, 0xe9, 0x18, 0xe8, 0xd0, 0xe9, 0xd1, 0xea, + 0xbd, 0xf0, 0xbd, 0xf3, 0xae, 0xf3, 0xf9, 0xf4, 0x59, 0xf8, 0xfa, 0xf6, 0xe9, 0xf3, 0x5a, 0xf4, + 0x34, 0xf6, 0x40, 0xfb, 0xfc, 0xfe, 0x0a, 0x02, 0x60, 0x04, 0x65, 0x08, 0x20, 0x0e, 0xe5, 0x0c, + 0x95, 0x09, 0x5f, 0x07, 0xc8, 0x06, 0x3d, 0x09, 0xbd, 0x09, 0x48, 0x0c, 0x67, 0x0c, 0x88, 0x09, + 0xf8, 0x09, 0xd1, 0x0b, 0x91, 0x0b, 0x84, 0x0d, 0x53, 0x0f, 0x22, 0x0f, 0xf9, 0x0e, 0x8f, 0x0b, + 0x2e, 0x0b, 0x92, 0x0b, 0x30, 0x0b, 0x0b, 0x09, 0xdd, 0x07, 0x64, 0x08, 0xf9, 0x06, 0x12, 0x04, + 0x63, 0x00, 0x39, 0xff, 0xb1, 0x00, 0x4f, 0x01, 0xa9, 0xfe, 0xaa, 0xfc, 0x39, 0xfa, 0xa7, 0xf7, + 0x4e, 0xf9, 0x15, 0xfb, 0x50, 0xfd, 0xe7, 0xfc, 0x05, 0xfc, 0x7c, 0xfb, 0x7f, 0xfb, 0xa1, 0xfa, + 0xdb, 0xfa, 0x35, 0xf9, 0x8a, 0xf9, 0xdb, 0xf9, 0x05, 0xfd, 0xe2, 0xfd, 0x57, 0x00, 0xcf, 0x01, + 0xe4, 0x01, 0xdd, 0x03, 0x58, 0x00, 0x82, 0xff, 0xe2, 0xfe, 0xfb, 0xff, 0xb5, 0x00, 0x50, 0xfd, + 0x14, 0xfc, 0x8c, 0xfc, 0x42, 0xfd, 0x72, 0xfc, 0xea, 0xfb, 0xfb, 0xf9, 0x05, 0xfc, 0xad, 0xfb, + 0xa3, 0xfa, 0xa3, 0xfa, 0xa8, 0xfb, 0x54, 0x00, 0x0e, 0x03, 0x72, 0x03, 0xb1, 0x01, 0xed, 0x02, + 0x22, 0x03, 0x58, 0x02, 0x60, 0x00, 0x4f, 0xfd, 0xd0, 0xfa, 0x2c, 0xfb, 0x41, 0xfd, 0x83, 0xfb, + 0xde, 0xfc, 0x13, 0xff, 0x8f, 0x01, 0x29, 0x06, 0x0b, 0x07, 0x2c, 0x06, 0x9f, 0x04, 0x53, 0x05, + 0x2f, 0x06, 0x25, 0x06, 0x33, 0x09, 0x2f, 0x09, 0x0a, 0x0b, 0x36, 0x0a, 0xb1, 0x09, 0x3c, 0x0c, + 0x9b, 0x0f, 0x60, 0x13, 0xe8, 0x0f, 0x73, 0x0e, 0xe0, 0x0f, 0xe6, 0x0f, 0x9d, 0x0e, 0xe3, 0x0e, + 0x4d, 0x0f, 0x4a, 0x0d, 0xd4, 0x0b, 0xf9, 0x08, 0xcd, 0x06, 0x1f, 0x06, 0xce, 0x06, 0x5e, 0x06, + 0x37, 0x03, 0xf6, 0x00, 0x14, 0xfb, 0x5e, 0xf6, 0xd4, 0xf5, 0x0c, 0xf3, 0x4b, 0xf1, 0x77, 0xf1, + 0xa5, 0xf1, 0x65, 0xf0, 0x1b, 0xec, 0xac, 0xe5, 0x8c, 0xe2, 0xca, 0xe0, 0xc4, 0xe1, 0x4e, 0xe0, + 0xa5, 0xdf, 0x87, 0xe0, 0x86, 0xe2, 0x4e, 0xea, 0x5f, 0xed, 0x85, 0xec, 0xd7, 0xe9, 0x4a, 0xeb, + 0xbe, 0xec, 0x71, 0xeb, 0xdb, 0xee, 0x1d, 0xf4, 0x89, 0xfc, 0x3a, 0x01, 0x8c, 0x03, 0xd5, 0x05, + 0x65, 0x05, 0xf9, 0x07, 0x82, 0x07, 0xf7, 0x08, 0x14, 0x0c, 0x27, 0x0f, 0x13, 0x10, 0xc0, 0x0f, + 0xba, 0x13, 0x87, 0x13, 0x01, 0x16, 0xae, 0x14, 0xc2, 0x15, 0xad, 0x1b, 0x36, 0x1b, 0xaa, 0x17, + 0x61, 0x15, 0xb0, 0x16, 0x61, 0x16, 0xfd, 0x16, 0xb1, 0x13, 0x0b, 0x0f, 0xa5, 0x0e, 0x3b, 0x0f, + 0xc8, 0x0e, 0xbd, 0x0b, 0x27, 0x06, 0x48, 0x02, 0xe4, 0x00, 0x14, 0xfe, 0xbc, 0xf9, 0x5b, 0xf6, + 0x05, 0xf4, 0xa5, 0xf4, 0x26, 0xf7, 0x0d, 0xf9, 0x70, 0xf6, 0x86, 0xf3, 0xa6, 0xf2, 0xbc, 0xf1, + 0xa8, 0xf1, 0x9b, 0xf3, 0x13, 0xf3, 0xe1, 0xf0, 0x70, 0xee, 0xac, 0xf0, 0xe5, 0xf3, 0xba, 0xf6, + 0xf6, 0xf7, 0x56, 0xf6, 0x19, 0xf5, 0x31, 0xf2, 0x62, 0xf2, 0x69, 0xf5, 0x3f, 0xf8, 0xd2, 0xf9, + 0xdb, 0xf8, 0xaf, 0xf6, 0x92, 0xf8, 0x5b, 0xf9, 0xf3, 0xfa, 0x7f, 0xfd, 0xb3, 0xff, 0x67, 0x02, + 0x53, 0x03, 0x1c, 0x03, 0x7c, 0x01, 0xbd, 0x02, 0x9e, 0x05, 0x4d, 0x0a, 0xaa, 0x0f, 0x6f, 0x10, + 0x89, 0x0f, 0x70, 0x0f, 0x3a, 0x0d, 0xb9, 0x08, 0xe9, 0x08, 0x19, 0x09, 0xe0, 0x07, 0x0c, 0x07, + 0xa0, 0x06, 0x96, 0x06, 0x3f, 0x07, 0x7b, 0x08, 0xc2, 0x0a, 0xc3, 0x0a, 0xfb, 0x08, 0xde, 0x04, + 0x83, 0x02, 0x1a, 0x01, 0x1c, 0x00, 0x6e, 0x03, 0xd2, 0x04, 0xaa, 0x05, 0x73, 0x04, 0x25, 0x03, + 0x91, 0x03, 0xde, 0x03, 0xbf, 0x06, 0xe5, 0x03, 0x19, 0x03, 0xff, 0x03, 0x37, 0x05, 0x91, 0x06, + 0x34, 0x07, 0x74, 0x05, 0xff, 0x01, 0x2f, 0xff, 0x77, 0xfe, 0x41, 0xfe, 0x6d, 0xfe, 0x03, 0xff, + 0x15, 0x00, 0x9e, 0xfd, 0xcd, 0xfa, 0xe7, 0xf6, 0x17, 0xf3, 0xdd, 0xf4, 0x5b, 0xf6, 0x04, 0xf9, + 0x4a, 0xf9, 0xcc, 0xf7, 0x53, 0xf5, 0x5f, 0xf3, 0x36, 0xf2, 0xd9, 0xef, 0x43, 0xee, 0x7a, 0xee, + 0xde, 0xec, 0x9a, 0xed, 0x1e, 0xee, 0x52, 0xf0, 0x23, 0xf5, 0x3e, 0xf7, 0x54, 0xfa, 0xfe, 0xfa, + 0xd8, 0xf9, 0xf9, 0xf8, 0x60, 0xf8, 0x0d, 0xfb, 0xad, 0xff, 0x04, 0x04, 0xee, 0x04, 0x6f, 0x04, + 0x2a, 0x05, 0xae, 0x05, 0x8e, 0x07, 0x0c, 0x06, 0x35, 0x05, 0x16, 0x07, 0x1f, 0x07, 0x60, 0x06, + 0xe2, 0x06, 0x23, 0x09, 0x22, 0x08, 0xe7, 0x06, 0x45, 0x08, 0x8b, 0x08, 0xc2, 0x07, 0xc3, 0x08, + 0x2f, 0x09, 0x76, 0x07, 0xb4, 0x06, 0x5c, 0x07, 0x99, 0x05, 0x4c, 0x03, 0xad, 0x03, 0xaf, 0x03, + 0x4f, 0x02, 0x5d, 0x04, 0x2a, 0x04, 0xc0, 0xff, 0x96, 0xfc, 0x64, 0xfb, 0xd1, 0xf9, 0x1f, 0xf9, + 0x21, 0xfa, 0x1f, 0xfb, 0x78, 0xfc, 0x46, 0xfe, 0x99, 0xfe, 0x72, 0xff, 0x24, 0x01, 0xb0, 0x03, + 0x65, 0x02, 0xc0, 0x04, 0x91, 0x04, 0x8d, 0x02, 0x4d, 0x01, 0xdf, 0x01, 0x69, 0x03, 0x50, 0x04, + 0xab, 0x07, 0xde, 0x06, 0x32, 0x08, 0x5b, 0x06, 0x3d, 0x05, 0x9e, 0x04, 0x96, 0x03, 0x87, 0x04, + 0x95, 0x03, 0xcc, 0x00, 0x61, 0xfc, 0x01, 0xfd, 0x26, 0xfe, 0xd1, 0xfc, 0xa0, 0xfd, 0xbb, 0xfd, + 0x92, 0xfe, 0x06, 0xfd, 0x8d, 0xf9, 0x52, 0xf9, 0x8a, 0xfa, 0x99, 0xfe, 0x7b, 0x01, 0x08, 0x02, + 0x1f, 0x01, 0x7a, 0x01, 0x1b, 0x02, 0xc8, 0x00, 0x6a, 0xfd, 0x40, 0xfb, 0xa0, 0xf7, 0x55, 0xf4, + 0xca, 0xf4, 0x58, 0xf6, 0xa2, 0xf8, 0x16, 0xfb, 0xbf, 0xff, 0x7b, 0x01, 0x6e, 0xfe, 0x70, 0xfc, + 0x6f, 0xfb, 0xf2, 0xfd, 0xb4, 0x00, 0x91, 0x01, 0x02, 0x03, 0x3f, 0x03, 0x36, 0x06, 0x03, 0x07, + 0x0e, 0x09, 0xa8, 0x0a, 0x62, 0x0a, 0x8d, 0x0b, 0xb7, 0x0b, 0x49, 0x0a, 0xbc, 0x0a, 0x0b, 0x0d, + 0x2a, 0x10, 0xba, 0x10, 0xbd, 0x0d, 0xb5, 0x0a, 0xf8, 0x07, 0x43, 0x08, 0x32, 0x09, 0xde, 0x09, + 0x14, 0x0a, 0xe7, 0x07, 0xb5, 0x03, 0xbe, 0xfe, 0x26, 0xfa, 0xa5, 0xf6, 0xc8, 0xf5, 0x6b, 0xf7, + 0x45, 0xfa, 0x63, 0xfa, 0xee, 0xf6, 0x41, 0xf3, 0x03, 0xf0, 0x06, 0xef, 0x1d, 0xec, 0x00, 0xea, + 0x20, 0xe9, 0x1d, 0xe7, 0xf8, 0xe7, 0x15, 0xe9, 0x0d, 0xea, 0x1e, 0xed, 0xc4, 0xef, 0xe0, 0xf0, + 0xdf, 0xee, 0x6b, 0xee, 0xa7, 0xef, 0x55, 0xf0, 0xce, 0xf4, 0x57, 0xfa, 0x80, 0xff, 0x06, 0xff, + 0x44, 0xff, 0x23, 0x01, 0xe5, 0x02, 0x7e, 0x07, 0x39, 0x0b, 0x0b, 0x0d, 0x45, 0x0c, 0x95, 0x0b, + 0x5d, 0x0b, 0xb8, 0x0d, 0x34, 0x10, 0x17, 0x12, 0xdd, 0x13, 0xba, 0x15, 0x12, 0x15, 0x29, 0x12, + 0x64, 0x0d, 0x24, 0x0c, 0xfb, 0x0d, 0x36, 0x0f, 0xc2, 0x0d, 0x42, 0x0c, 0x91, 0x0a, 0x97, 0x08, + 0xd2, 0x08, 0x08, 0x06, 0xfc, 0x02, 0x5c, 0xff, 0xd7, 0xfa, 0x83, 0xf7, 0x85, 0xf5, 0xc3, 0xf4, + 0xe1, 0xf2, 0x0a, 0xf1, 0x16, 0xf1, 0xa1, 0xf1, 0x3f, 0xef, 0x80, 0xf0, 0xec, 0xf2, 0x08, 0xf2, + 0xf6, 0xf2, 0xda, 0xf3, 0x14, 0xf5, 0xb5, 0xf3, 0x6a, 0xf3, 0x4e, 0xf2, 0xe2, 0xf0, 0x85, 0xf3, + 0x43, 0xf8, 0x0b, 0xfd, 0xd1, 0xfa, 0xd3, 0xf9, 0x10, 0xfb, 0x1a, 0xfd, 0x16, 0xff, 0x74, 0xfd, + 0xb4, 0xfa, 0x48, 0xfc, 0x38, 0xff, 0x92, 0x01, 0xa4, 0x02, 0xfc, 0x00, 0x69, 0x01, 0xc2, 0x05, + 0x66, 0x07, 0x37, 0x08, 0x6e, 0x09, 0x20, 0x0b, 0x15, 0x0c, 0xf5, 0x0b, 0xa9, 0x0e, 0xd3, 0x0f, + 0xc7, 0x10, 0x17, 0x11, 0x84, 0x12, 0xce, 0x13, 0x7e, 0x12, 0xb8, 0x0e, 0x26, 0x09, 0x34, 0x06, + 0xde, 0x05, 0x7d, 0x07, 0x5b, 0x06, 0x56, 0x05, 0xfa, 0x04, 0xdd, 0x03, 0x3c, 0x03, 0xb7, 0x01, + 0x95, 0xff, 0x73, 0xfb, 0xb8, 0xfc, 0x48, 0xff, 0xf2, 0xff, 0xc3, 0x00, 0x5f, 0xff, 0x1b, 0xff, + 0x30, 0xff, 0x30, 0x00, 0xa2, 0xff, 0x5f, 0x00, 0xfd, 0x01, 0x82, 0xff, 0xe9, 0xfd, 0x75, 0x00, + 0xd9, 0x03, 0xf5, 0x04, 0x3e, 0x04, 0x53, 0x00, 0xe5, 0xfc, 0x4d, 0xfd, 0x06, 0x01, 0xf6, 0x03, + 0x67, 0x03, 0x46, 0x02, 0x50, 0xff, 0xc0, 0xfc, 0xec, 0xfc, 0xe4, 0xf9, 0xe2, 0xf8, 0x12, 0xfb, + 0xe2, 0xfb, 0x40, 0xfd, 0x7a, 0xfd, 0xb5, 0xfe, 0x0a, 0xfe, 0x2b, 0xf9, 0xb2, 0xf7, 0xb2, 0xf9, + 0x84, 0xf9, 0x6c, 0xf4, 0x3d, 0xf1, 0x6e, 0xf3, 0xce, 0xf4, 0xd1, 0xf6, 0xde, 0xf8, 0x7b, 0xfa, + 0xfe, 0xfa, 0xde, 0xfb, 0xef, 0xfa, 0x61, 0xfb, 0x33, 0xfe, 0x9e, 0xff, 0x33, 0xff, 0x15, 0x00, + 0x83, 0x01, 0x57, 0x03, 0x98, 0x04, 0x9c, 0x06, 0x9f, 0x07, 0x3e, 0x08, 0x28, 0x07, 0x3a, 0x04, + 0x11, 0x03, 0x5f, 0x06, 0x07, 0x09, 0x2c, 0x09, 0x26, 0x09, 0x3d, 0x08, 0x67, 0x06, 0x29, 0x06, + 0x87, 0x05, 0x12, 0x05, 0x5d, 0x06, 0xe5, 0x06, 0x89, 0x04, 0x19, 0x00, 0x78, 0xff, 0x06, 0x01, + 0x47, 0x02, 0x27, 0x04, 0xbd, 0x03, 0xa6, 0x02, 0x01, 0xff, 0x56, 0xfb, 0xe4, 0xf7, 0x2c, 0xf8, + 0x31, 0xf9, 0x54, 0xf9, 0xf9, 0xf8, 0xeb, 0xf7, 0x2a, 0xf9, 0xcb, 0xfa, 0x4a, 0xfd, 0x7a, 0xfe, + 0xef, 0xff, 0xf5, 0x00, 0xd5, 0xff, 0x26, 0x00, 0x42, 0xff, 0xb5, 0xfe, 0xe3, 0xfb, 0x9d, 0xfc, + 0xff, 0xfd, 0x69, 0xfd, 0xf1, 0xff, 0x2f, 0x00, 0xee, 0x02, 0x4e, 0x05, 0xab, 0x03, 0xb0, 0x00, + 0x30, 0xfe, 0x56, 0xfd, 0xaf, 0xfb, 0x6e, 0xf7, 0x99, 0xf6, 0x35, 0xfa, 0xae, 0xfb, 0xc2, 0xfb, + 0x7f, 0xf9, 0xd4, 0xf7, 0xae, 0xfa, 0xc9, 0xfb, 0xa3, 0xfa, 0x9b, 0xfa, 0x4d, 0xfb, 0xa7, 0xfa, + 0xb6, 0xfb, 0x68, 0xff, 0x0b, 0x03, 0x14, 0x04, 0x62, 0x03, 0xc4, 0x00, 0xc6, 0xfb, 0x1c, 0xf9, + 0x57, 0xf9, 0xe0, 0xfa, 0x39, 0xfb, 0xb8, 0xfb, 0xce, 0xfc, 0xbe, 0xfd, 0xf3, 0xfe, 0x43, 0x00, + 0xfc, 0xff, 0x4d, 0x01, 0x82, 0x02, 0x34, 0x04, 0xef, 0x02, 0xff, 0x02, 0x33, 0x05, 0x00, 0x08, + 0xf2, 0x09, 0x39, 0x0b, 0x18, 0x0d, 0xad, 0x0e, 0x30, 0x0f, 0x14, 0x0e, 0xa0, 0x0d, 0x97, 0x0c, + 0x82, 0x0d, 0x23, 0x0f, 0x6d, 0x10, 0x75, 0x0f, 0x1a, 0x0d, 0xcb, 0x0c, 0x03, 0x0c, 0x68, 0x0a, + 0xa3, 0x0a, 0x7c, 0x09, 0xd7, 0x07, 0x35, 0x05, 0x09, 0x00, 0xb9, 0xfc, 0x86, 0xfa, 0x5e, 0xfa, + 0xe2, 0xfa, 0xae, 0xf9, 0x92, 0xf8, 0x15, 0xf8, 0x8a, 0xf9, 0x6c, 0xf9, 0xbb, 0xf6, 0x0b, 0xf4, + 0x2b, 0xf2, 0x75, 0xef, 0xb2, 0xed, 0x2e, 0xed, 0x5e, 0xec, 0x4a, 0xed, 0xaf, 0xef, 0x23, 0xf2, + 0x80, 0xf2, 0x02, 0xf2, 0xff, 0xf1, 0xa0, 0xf3, 0xa5, 0xf6, 0x45, 0xf9, 0xb6, 0xf9, 0x26, 0xfa, + 0x36, 0xfd, 0x6b, 0x00, 0xa3, 0x05, 0x3b, 0x0a, 0x20, 0x0c, 0x91, 0x0d, 0xea, 0x0d, 0x1f, 0x0e, + 0x09, 0x10, 0x38, 0x10, 0x7f, 0x10, 0x6b, 0x12, 0xb3, 0x15, 0xb6, 0x14, 0xee, 0x13, 0x8f, 0x13, + 0xaa, 0x11, 0x11, 0x11, 0xda, 0x11, 0x92, 0x11, 0xac, 0x0c, 0xd0, 0x09, 0x4d, 0x09, 0x3c, 0x0a, + 0x8c, 0x0a, 0x0c, 0x0a, 0xf3, 0x08, 0x89, 0x04, 0xf4, 0xfe, 0x8c, 0xf9, 0x77, 0xf5, 0x9c, 0xf2, + 0xe0, 0xf0, 0xef, 0xf0, 0x03, 0xf0, 0xd9, 0xed, 0x2f, 0xed, 0xb0, 0xed, 0x33, 0xed, 0x17, 0xee, + 0x4e, 0xef, 0xcb, 0xef, 0x0c, 0xf0, 0x75, 0xf0, 0x6f, 0xf1, 0x32, 0xf0, 0x6c, 0xef, 0x5a, 0xf0, + 0xe7, 0xf1, 0x4b, 0xf2, 0x9c, 0xf2, 0xb5, 0xf4, 0x3f, 0xf7, 0x80, 0xfb, 0x1b, 0xff, 0x73, 0x00, + 0xd4, 0xfd, 0x94, 0xfa, 0xc7, 0xf9, 0x4e, 0xfc, 0x68, 0xff, 0x91, 0x01, 0xe1, 0x02, 0xac, 0x01, + 0x63, 0x01, 0x38, 0x04, 0x57, 0x07, 0x88, 0x09, 0x87, 0x09, 0xb5, 0x09, 0xba, 0x09, 0x34, 0x0a, + 0xc2, 0x0b, 0x9d, 0x0c, 0xc3, 0x0d, 0x2a, 0x0f, 0xd2, 0x10, 0x65, 0x11, 0xbb, 0x0d, 0xb3, 0x09, + 0x70, 0x07, 0x78, 0x05, 0x5e, 0x04, 0xef, 0x03, 0xa2, 0x02, 0xd4, 0x02, 0x2c, 0x02, 0x16, 0xfe, + 0x96, 0xf9, 0x6f, 0xf8, 0x0c, 0xfb, 0x32, 0xfb, 0x8d, 0xfa, 0x45, 0xf9, 0x16, 0xfa, 0x93, 0xfa, + 0x37, 0xfc, 0x0a, 0xfd, 0x9e, 0xfd, 0x0e, 0xfe, 0x51, 0xfe, 0x66, 0xfe, 0xf8, 0xfd, 0x30, 0xfe, + 0x09, 0x00, 0x1d, 0x02, 0x02, 0x02, 0xe2, 0x00, 0x09, 0x01, 0xae, 0x01, 0xda, 0x02, 0x2b, 0x04, + 0xeb, 0x05, 0x77, 0x05, 0x0c, 0x04, 0xe3, 0x03, 0xff, 0x00, 0x3b, 0x01, 0xf9, 0x01, 0xf4, 0x00, + 0x5a, 0x00, 0x97, 0x01, 0x19, 0x02, 0x09, 0x02, 0x9a, 0x01, 0xbe, 0x02, 0x5c, 0x04, 0xdd, 0x03, + 0x0a, 0x02, 0xb0, 0xff, 0xe6, 0xfc, 0xc7, 0xf9, 0xfc, 0xf6, 0x1a, 0xf8, 0xfd, 0xf8, 0x43, 0xf9, + 0xe7, 0xf8, 0x22, 0xfa, 0x2e, 0xfc, 0xcd, 0xfb, 0x25, 0xfc, 0xeb, 0xfb, 0x1b, 0xfb, 0x9f, 0xfa, + 0x56, 0xfa, 0x1e, 0xfb, 0xdb, 0xfc, 0xcd, 0x00, 0xb0, 0x03, 0x9a, 0x04, 0xee, 0x04, 0x83, 0x05, + 0x04, 0x07, 0xdd, 0x07, 0x65, 0x06, 0x77, 0x06, 0x96, 0x06, 0x10, 0x06, 0x10, 0x07, 0xf8, 0x07, + 0xa7, 0x07, 0x3a, 0x06, 0xee, 0x05, 0x61, 0x06, 0x23, 0x04, 0x0a, 0x03, 0x10, 0x04, 0xe6, 0x02, + 0x79, 0x03, 0xfe, 0x04, 0x8f, 0x05, 0xc3, 0x05, 0x19, 0x04, 0xe3, 0x00, 0x1b, 0xfe, 0x37, 0xfd, + 0xf7, 0xfc, 0x48, 0xfb, 0xa2, 0xf9, 0x79, 0xfa, 0x94, 0xfb, 0xc8, 0xfb, 0x41, 0xfd, 0xff, 0xfc, + 0x4e, 0xfd, 0x0a, 0x00, 0xe6, 0x01, 0x4e, 0x01, 0xd7, 0xff, 0x03, 0x00, 0x8f, 0xff, 0x61, 0xfe, + 0x17, 0xfd, 0x65, 0xfc, 0x14, 0xfd, 0x3d, 0xfe, 0x42, 0xff, 0x81, 0x01, 0xb9, 0x03, 0x7f, 0x03, + 0x92, 0x02, 0x76, 0xff, 0x09, 0xfc, 0x63, 0xfa, 0xc0, 0xf9, 0xa5, 0xfa, 0xc4, 0xfa, 0xb2, 0xf8, + 0x8e, 0xf7, 0x15, 0xfa, 0x83, 0xfb, 0x22, 0xfb, 0x39, 0xfb, 0xea, 0xf9, 0xf9, 0xf9, 0x5e, 0xfa, + 0x8b, 0xfa, 0xf5, 0xf9, 0x75, 0xfb, 0xc1, 0xfe, 0x88, 0x00, 0x13, 0xff, 0xbb, 0xfe, 0x6c, 0xfe, + 0x05, 0xfb, 0xb0, 0xfa, 0xac, 0xfa, 0x45, 0xfa, 0x83, 0xf9, 0x6f, 0xf8, 0xb4, 0xf8, 0xd2, 0xf9, + 0x3e, 0xfd, 0x3f, 0xff, 0x39, 0x00, 0x2a, 0xff, 0x47, 0xfe, 0x54, 0xfd, 0xd1, 0xfe, 0x94, 0x02, + 0xb7, 0x03, 0xba, 0x06, 0xd3, 0x08, 0x73, 0x09, 0xb4, 0x0a, 0xbd, 0x0a, 0x4a, 0x09, 0x70, 0x09, + 0xdc, 0x09, 0x83, 0x09, 0x50, 0x09, 0xa1, 0x09, 0xff, 0x09, 0xa8, 0x09, 0xc0, 0x09, 0x32, 0x0b, + 0x77, 0x0a, 0x1a, 0x09, 0xe4, 0x07, 0xeb, 0x03, 0xdc, 0x00, 0x79, 0xfe, 0x2e, 0xfe, 0x14, 0xff, + 0x76, 0xfd, 0xc0, 0xfa, 0xfb, 0xf8, 0x1e, 0xf9, 0x75, 0xfb, 0xd7, 0xfb, 0x5e, 0xfb, 0xd5, 0xf9, + 0xa5, 0xf7, 0x7b, 0xf6, 0xa7, 0xf5, 0x82, 0xf3, 0x94, 0xf1, 0x3f, 0xf0, 0x55, 0xef, 0x33, 0xee, + 0xe7, 0xed, 0x86, 0xef, 0x89, 0xf2, 0xde, 0xf3, 0x1b, 0xf5, 0xc4, 0xf6, 0xd0, 0xf7, 0xa8, 0xf9, + 0x5c, 0xfa, 0x4a, 0xfb, 0x19, 0xff, 0xf2, 0x03, 0x6d, 0x08, 0x54, 0x0b, 0x91, 0x0c, 0x6f, 0x0d, + 0xbd, 0x0f, 0xfd, 0x11, 0x28, 0x13, 0xd5, 0x13, 0x17, 0x16, 0x24, 0x17, 0xf1, 0x15, 0x28, 0x16, + 0xa5, 0x16, 0x8c, 0x16, 0xff, 0x15, 0xe5, 0x13, 0x21, 0x12, 0xc9, 0x0f, 0xf8, 0x0d, 0xf7, 0x0c, + 0x64, 0x0c, 0x17, 0x0d, 0x20, 0x0d, 0x9c, 0x09, 0xc9, 0x06, 0xb8, 0x01, 0x56, 0xfc, 0xbf, 0xfa, + 0xcf, 0xf7, 0x9e, 0xf5, 0xc4, 0xf3, 0xfd, 0xf1, 0x56, 0xf1, 0x88, 0xf0, 0x4a, 0xf0, 0x51, 0xf0, + 0x96, 0xf0, 0x07, 0xf0, 0x04, 0xef, 0xc6, 0xef, 0xc5, 0xef, 0x17, 0xf1, 0x37, 0xf1, 0x30, 0xf1, + 0x0f, 0xf1, 0xbb, 0xee, 0x40, 0xee, 0xea, 0xee, 0xea, 0xf1, 0x56, 0xf6, 0xa3, 0xf9, 0x81, 0xfb, + 0x8a, 0xfb, 0x52, 0xfc, 0xb8, 0xfc, 0xa2, 0xfc, 0x1e, 0xfd, 0xcb, 0xfe, 0xbb, 0x00, 0xf3, 0x00, + 0xd2, 0x01, 0xba, 0x01, 0x2e, 0x02, 0xf1, 0x02, 0x53, 0x05, 0xeb, 0x08, 0x1b, 0x0a, 0x26, 0x0a, + 0x74, 0x08, 0xf3, 0x07, 0xaf, 0x09, 0xbe, 0x0b, 0x99, 0x0d, 0xaa, 0x0e, 0x81, 0x0d, 0x03, 0x0c, + 0xa7, 0x0b, 0x53, 0x0b, 0xff, 0x08, 0xc3, 0x05, 0xa2, 0x03, 0xcc, 0x00, 0x50, 0xfe, 0x64, 0xfc, + 0x56, 0xfb, 0x4e, 0xfb, 0xc0, 0xfb, 0x7f, 0xfb, 0xf0, 0xf8, 0xbc, 0xf7, 0x6e, 0xf7, 0x3b, 0xf7, + 0x88, 0xf8, 0xeb, 0xf9, 0x36, 0xfb, 0x81, 0xfc, 0x29, 0xfd, 0xe6, 0xfc, 0x36, 0xfd, 0x7a, 0xfd, + 0x41, 0xfc, 0x2c, 0xfb, 0xb8, 0xfb, 0x81, 0xfd, 0x1b, 0xfe, 0xf6, 0xfe, 0xbe, 0x01, 0x60, 0x04, + 0x46, 0x06, 0x45, 0x05, 0x17, 0x03, 0x7d, 0x02, 0x58, 0x03, 0x28, 0x05, 0x3b, 0x05, 0x9b, 0x05, + 0x80, 0x05, 0xda, 0x03, 0x7e, 0x02, 0xb8, 0x02, 0x4f, 0x03, 0x56, 0x05, 0xbd, 0x06, 0x6a, 0x06, + 0x66, 0x06, 0xd7, 0x04, 0x3f, 0x02, 0x3b, 0xff, 0x86, 0xfd, 0x65, 0xfc, 0x98, 0xfa, 0xcf, 0xf9, + 0x25, 0xf9, 0x95, 0xf8, 0x16, 0xf8, 0xaf, 0xf9, 0xf9, 0xfa, 0xef, 0xfb, 0x40, 0xfc, 0x1b, 0xfb, + 0x8b, 0xf9, 0x05, 0xf8, 0x15, 0xf8, 0x14, 0xfb, 0x89, 0xfe, 0xb8, 0xff, 0xf0, 0x00, 0x5b, 0x03, + 0xb0, 0x05, 0x7f, 0x07, 0xa8, 0x07, 0xe5, 0x06, 0x3f, 0x07, 0x3d, 0x07, 0xd5, 0x07, 0x58, 0x08, + 0xbc, 0x09, 0x01, 0x0b, 0xf6, 0x0a, 0x44, 0x0a, 0x3c, 0x07, 0x35, 0x05, 0x47, 0x03, 0x7f, 0x02, + 0xda, 0x04, 0x29, 0x08, 0x0d, 0x0a, 0x99, 0x07, 0x5c, 0x04, 0x43, 0x04, 0xc2, 0x03, 0x90, 0x02, + 0xb2, 0x02, 0x05, 0x02, 0xa3, 0xff, 0x9e, 0xfd, 0x68, 0xfc, 0x7e, 0xfc, 0x42, 0xfd, 0x57, 0xff, + 0xe0, 0xff, 0xd3, 0xff, 0x78, 0xff, 0xc5, 0xfe, 0xb9, 0xfe, 0xd5, 0xfc, 0xe9, 0xfb, 0xe9, 0xfa, + 0x78, 0xfb, 0x22, 0xfc, 0x70, 0xfb, 0x18, 0xfb, 0xb7, 0xfb, 0xe6, 0xfb, 0x93, 0xfd, 0x29, 0x00, + 0x21, 0x00, 0xa2, 0xfd, 0x6e, 0xfb, 0x16, 0xfa, 0x36, 0xfb, 0x91, 0xfc, 0x17, 0xfc, 0x6c, 0xf9, + 0x7a, 0xf7, 0x50, 0xf8, 0xbd, 0xf8, 0xa4, 0xf9, 0xe5, 0xf9, 0xc4, 0xf9, 0xc3, 0xf9, 0x3b, 0xf9, + 0x43, 0xf9, 0xd0, 0xfa, 0x09, 0xfc, 0x05, 0xfc, 0x2b, 0xfc, 0x6c, 0xfc, 0xa2, 0xfd, 0xc9, 0xfd, + 0x07, 0xfe, 0xbf, 0xfe, 0xff, 0xfe, 0xd1, 0xfd, 0xf6, 0xfa, 0xc6, 0xf8, 0x09, 0xf8, 0x0a, 0xf9, + 0xe7, 0xfb, 0x97, 0xfe, 0x08, 0xfe, 0xa7, 0xfc, 0xc9, 0xfd, 0xbb, 0xfd, 0xef, 0xfd, 0x8c, 0xff, + 0xfd, 0x01, 0xb7, 0x04, 0x80, 0x05, 0x58, 0x05, 0x95, 0x05, 0x6c, 0x06, 0x57, 0x07, 0x35, 0x08, + 0x45, 0x08, 0x7a, 0x07, 0x29, 0x06, 0x41, 0x05, 0xe2, 0x05, 0xe0, 0x07, 0xdd, 0x08, 0x70, 0x0a, + 0xc4, 0x0a, 0x8b, 0x08, 0x84, 0x05, 0x0c, 0x04, 0x61, 0x02, 0x6d, 0xff, 0x4d, 0xff, 0x28, 0xfe, + 0x49, 0xfc, 0x97, 0xfb, 0xd6, 0xfb, 0x68, 0xfc, 0x9a, 0xfb, 0x8b, 0xfb, 0x58, 0xfb, 0x5f, 0xfa, + 0xa7, 0xfa, 0x15, 0xfc, 0x53, 0xfc, 0x08, 0xfb, 0xf3, 0xf8, 0xe3, 0xf6, 0x45, 0xf5, 0xb2, 0xf2, + 0xbb, 0xf0, 0x23, 0xf0, 0x30, 0xf2, 0xe7, 0xf3, 0xae, 0xf5, 0x2e, 0xf6, 0xec, 0xf6, 0x21, 0xf8, + 0xef, 0xf7, 0xa9, 0xf9, 0xd5, 0xfc, 0x68, 0x00, 0x5a, 0x03, 0x75, 0x05, 0x5c, 0x08, 0x3f, 0x0c, + 0x72, 0x0f, 0xe4, 0x10, 0xfc, 0x12, 0x42, 0x15, 0x24, 0x16, 0xb9, 0x16, 0x5b, 0x16, 0xa1, 0x16, + 0x46, 0x17, 0xf9, 0x17, 0xd0, 0x17, 0x27, 0x17, 0xc6, 0x15, 0xda, 0x12, 0x9f, 0x10, 0xa9, 0x0f, + 0xe5, 0x0e, 0x1c, 0x0f, 0x55, 0x0e, 0xfe, 0x0b, 0x39, 0x09, 0x67, 0x07, 0x41, 0x05, 0x6b, 0x01, + 0x07, 0xfe, 0xb3, 0xfb, 0x68, 0xf8, 0x59, 0xf5, 0xdb, 0xf2, 0x96, 0xf1, 0xc8, 0xf1, 0x54, 0xf2, + 0x67, 0xf2, 0xdb, 0xf1, 0x06, 0xf2, 0xdd, 0xf0, 0x6a, 0xf0, 0x52, 0xf0, 0x0a, 0xf1, 0x84, 0xf1, + 0xe6, 0xf0, 0x89, 0xf0, 0x60, 0xf0, 0x72, 0xf1, 0x5b, 0xf3, 0xfb, 0xf5, 0xff, 0xf6, 0xb2, 0xf8, + 0x52, 0xfa, 0x58, 0xfb, 0x62, 0xfc, 0xbb, 0xfe, 0x11, 0x02, 0x1a, 0x04, 0xb9, 0x04, 0x15, 0x05, + 0x19, 0x05, 0x62, 0x05, 0x2e, 0x05, 0xfe, 0x05, 0xf8, 0x07, 0x7c, 0x09, 0xdf, 0x0a, 0xd0, 0x0a, + 0xc0, 0x09, 0x94, 0x08, 0x74, 0x08, 0x9f, 0x09, 0xf7, 0x09, 0x51, 0x09, 0x9d, 0x09, 0xac, 0x09, + 0x62, 0x09, 0x2e, 0x0a, 0x11, 0x0a, 0xd4, 0x08, 0x6f, 0x06, 0x5d, 0x01, 0x60, 0xfc, 0x3c, 0xf9, + 0x60, 0xf9, 0x64, 0xfa, 0x54, 0xfa, 0x86, 0xf8, 0x47, 0xf6, 0xc9, 0xf5, 0x98, 0xf4, 0x4b, 0xf3, + 0xfa, 0xf2, 0xa2, 0xf4, 0x5d, 0xf5, 0x51, 0xf5, 0x7a, 0xf6, 0x9b, 0xf7, 0xab, 0xf7, 0x88, 0xf7, + 0x32, 0xf9, 0xbb, 0xfa, 0xfe, 0xf8, 0x4d, 0xf7, 0x39, 0xf6, 0x6f, 0xf8, 0x0f, 0xfc, 0xd8, 0xff, + 0x5d, 0x01, 0x38, 0x01, 0xc3, 0x00, 0xb4, 0xff, 0x38, 0x01, 0xfa, 0x01, 0xa7, 0x02, 0x85, 0x02, + 0x50, 0x01, 0x4d, 0x01, 0x14, 0x03, 0x8d, 0x04, 0x3b, 0x05, 0x47, 0x05, 0x0b, 0x06, 0x3e, 0x06, + 0xa6, 0x04, 0x29, 0x04, 0x90, 0x05, 0x79, 0x04, 0xff, 0x01, 0x64, 0xff, 0x7d, 0xfd, 0xa2, 0xfb, + 0xbd, 0xf9, 0x9a, 0xf8, 0x82, 0xf8, 0xd0, 0xf7, 0x6c, 0xf7, 0xf4, 0xf7, 0xb1, 0xf7, 0x45, 0xf8, + 0x06, 0xf7, 0xd3, 0xf5, 0x6f, 0xf6, 0xb4, 0xf7, 0x6d, 0xf8, 0x4d, 0xf9, 0xb1, 0xfc, 0x2f, 0xff, + 0xb2, 0x01, 0x7b, 0x04, 0xf5, 0x05, 0xe0, 0x05, 0x5b, 0x05, 0xd6, 0x05, 0x70, 0x06, 0x75, 0x08, + 0xd1, 0x0a, 0xc7, 0x0b, 0xd0, 0x0b, 0x87, 0x0a, 0x4a, 0x09, 0xe5, 0x07, 0xbf, 0x06, 0x23, 0x07, + 0xe9, 0x07, 0x19, 0x08, 0x69, 0x08, 0xee, 0x07, 0x49, 0x08, 0x02, 0x08, 0xf9, 0x06, 0xd4, 0x06, + 0xc8, 0x06, 0xa8, 0x06, 0xfd, 0x06, 0xfb, 0x05, 0x43, 0x03, 0x78, 0xff, 0x5d, 0xfe, 0xd4, 0x00, + 0x8b, 0x02, 0xff, 0x01, 0xa2, 0x01, 0xff, 0x01, 0xd4, 0x00, 0x5b, 0x00, 0x06, 0xff, 0xca, 0xfd, + 0x1a, 0xfc, 0x4f, 0xfa, 0x34, 0xfb, 0xfc, 0xfc, 0x5e, 0xfe, 0x5a, 0xfe, 0x86, 0xfd, 0x26, 0xfd, + 0x37, 0xfe, 0xca, 0xff, 0xe5, 0xfe, 0xda, 0xfc, 0x3b, 0xfd, 0xfd, 0xfd, 0xc6, 0xfd, 0x73, 0xfd, + 0x08, 0xfe, 0xca, 0xfc, 0x3d, 0xfc, 0xd9, 0xfb, 0xd6, 0xfb, 0xc0, 0xfc, 0xa3, 0xfc, 0x60, 0xfc, + 0xf7, 0xfb, 0x6b, 0xfb, 0xaf, 0xfc, 0x37, 0xfe, 0xf5, 0xfe, 0xcc, 0xfd, 0x26, 0xfc, 0xfa, 0xfb, + 0x33, 0xfe, 0xe6, 0x00, 0x10, 0x02, 0x2c, 0x02, 0x00, 0x01, 0x13, 0xff, 0x24, 0xfd, 0x53, 0xfc, + 0x01, 0xfc, 0x60, 0xfc, 0x7c, 0xfd, 0x08, 0x00, 0x46, 0x01, 0x1e, 0x01, 0xce, 0xff, 0xa0, 0xff, + 0xeb, 0xff, 0x3b, 0x00, 0x51, 0x02, 0x29, 0x04, 0x55, 0x05, 0x80, 0x04, 0xb8, 0x04, 0xd6, 0x05, + 0xec, 0x05, 0x3f, 0x05, 0x54, 0x03, 0xc6, 0x01, 0x08, 0x01, 0x11, 0x01, 0x78, 0x02, 0xbe, 0x04, + 0x50, 0x06, 0x11, 0x05, 0xb7, 0x03, 0x6f, 0x02, 0x3e, 0x00, 0xa5, 0xff, 0x7d, 0xfe, 0xa6, 0xfc, + 0x40, 0xfc, 0x40, 0xfb, 0x57, 0xf9, 0xca, 0xf8, 0x95, 0xfa, 0x98, 0xfc, 0xb5, 0xfb, 0xc0, 0xfa, + 0x0e, 0xfb, 0xbd, 0xf9, 0xcb, 0xf8, 0x85, 0xfa, 0x4e, 0xfb, 0xb9, 0xf9, 0xba, 0xf6, 0x9a, 0xf3, + 0x4a, 0xf1, 0xfc, 0xf0, 0x7c, 0xf1, 0xe3, 0xf2, 0x11, 0xf3, 0xa6, 0xf1, 0xd6, 0xf1, 0xad, 0xf2, + 0xce, 0xf3, 0x35, 0xf5, 0x23, 0xf7, 0x7b, 0xfa, 0x81, 0xfd, 0xe6, 0xfe, 0xa2, 0x00, 0x53, 0x03, + 0x4b, 0x06, 0xfd, 0x09, 0x19, 0x0e, 0xbc, 0x10, 0x81, 0x11, 0x5a, 0x11, 0x21, 0x12, 0x1a, 0x13, + 0x8b, 0x13, 0x9a, 0x13, 0x23, 0x14, 0x74, 0x15, 0x50, 0x15, 0x6d, 0x14, 0x48, 0x13, 0x39, 0x11, + 0xa3, 0x0f, 0x35, 0x0f, 0xd3, 0x0c, 0x24, 0x0b, 0xa6, 0x09, 0x93, 0x07, 0xaf, 0x06, 0x33, 0x05, + 0xfc, 0x03, 0x33, 0x01, 0x90, 0xfd, 0xdf, 0xfa, 0x28, 0xf9, 0x0b, 0xf8, 0x67, 0xf6, 0x78, 0xf4, + 0xbf, 0xf2, 0xcd, 0xf2, 0xd3, 0xf2, 0x7d, 0xf3, 0x30, 0xf4, 0x6a, 0xf3, 0xac, 0xf2, 0x34, 0xf1, + 0x1d, 0xf0, 0xb5, 0xee, 0xa1, 0xee, 0x03, 0xf1, 0x04, 0xf4, 0x80, 0xf6, 0xd6, 0xf7, 0x44, 0xf9, + 0x7b, 0xf9, 0x68, 0xf9, 0x2d, 0xfb, 0xbc, 0xfd, 0x3a, 0x00, 0xfd, 0x01, 0xf4, 0x03, 0x02, 0x06, + 0x79, 0x06, 0xb2, 0x06, 0xf3, 0x06, 0x04, 0x08, 0x2e, 0x09, 0x4e, 0x09, 0x6b, 0x09, 0xcf, 0x08, + 0x5f, 0x08, 0xdf, 0x07, 0xb9, 0x07, 0x02, 0x08, 0x02, 0x08, 0x10, 0x08, 0x7f, 0x08, 0xa5, 0x07, + 0xa7, 0x07, 0xeb, 0x08, 0x06, 0x0a, 0x7d, 0x0a, 0xce, 0x09, 0x8f, 0x07, 0xa2, 0x03, 0x43, 0x00, + 0xc9, 0xfd, 0x52, 0xfc, 0xe6, 0xfa, 0x8a, 0xfa, 0x69, 0xfb, 0xfa, 0xfa, 0xf2, 0xfa, 0x2c, 0xfb, + 0xa0, 0xfa, 0xdb, 0xf8, 0x73, 0xf7, 0x0a, 0xf7, 0x01, 0xf8, 0x9b, 0xf9, 0x3c, 0xf9, 0x78, 0xf9, + 0xf3, 0xfa, 0x11, 0xfb, 0x30, 0xfa, 0x89, 0xf8, 0x3b, 0xf7, 0xa2, 0xf7, 0x0d, 0xfb, 0x33, 0xfe, + 0x26, 0xff, 0x3a, 0xff, 0x7e, 0x00, 0xbc, 0x02, 0x68, 0x04, 0x34, 0x06, 0xbd, 0x07, 0x35, 0x07, + 0x08, 0x05, 0x20, 0x04, 0x47, 0x04, 0x49, 0x05, 0x9b, 0x06, 0x7b, 0x07, 0xee, 0x07, 0xc6, 0x07, + 0x73, 0x07, 0x01, 0x07, 0xf9, 0x04, 0xa9, 0x03, 0x1f, 0x03, 0xe8, 0x02, 0xee, 0x01, 0xf4, 0xff, + 0xbb, 0xfd, 0x0d, 0xfc, 0x8f, 0xfa, 0xe2, 0xf8, 0xf8, 0xf8, 0x2e, 0xf8, 0x74, 0xf6, 0xa4, 0xf4, + 0xb4, 0xf2, 0x7a, 0xf1, 0x88, 0xf1, 0xbb, 0xf2, 0x63, 0xf3, 0x60, 0xf4, 0x22, 0xf5, 0xca, 0xf6, + 0x43, 0xfa, 0xba, 0xfc, 0xd9, 0xfe, 0x1f, 0x01, 0xb9, 0x02, 0x7d, 0x03, 0x6b, 0x04, 0x8f, 0x06, + 0xa2, 0x08, 0xf9, 0x09, 0x2c, 0x0a, 0xa0, 0x09, 0x2a, 0x09, 0x3c, 0x09, 0x36, 0x0a, 0xb3, 0x0a, + 0xd5, 0x0a, 0x28, 0x0a, 0x9b, 0x08, 0x9b, 0x06, 0xee, 0x04, 0x62, 0x05, 0xfa, 0x07, 0x30, 0x0a, + 0xad, 0x09, 0x0f, 0x09, 0xc3, 0x08, 0xe1, 0x07, 0x3f, 0x06, 0x45, 0x04, 0x29, 0x03, 0xac, 0x01, + 0xa8, 0x00, 0xd0, 0xff, 0x3a, 0x00, 0x29, 0x00, 0xba, 0x00, 0x01, 0x00, 0x1d, 0xfe, 0xf3, 0xfc, + 0x4a, 0xfc, 0xf8, 0xfa, 0x0c, 0xf9, 0xb5, 0xf8, 0xf9, 0xf8, 0xde, 0xf9, 0x5c, 0xfb, 0x41, 0xfc, + 0x26, 0xfc, 0xd1, 0xf9, 0xb8, 0xf7, 0xbf, 0xf8, 0x53, 0xfa, 0xba, 0xfb, 0x6f, 0xfc, 0xd7, 0xfc, + 0xbf, 0xfb, 0x2e, 0xfc, 0x11, 0xfe, 0xfb, 0xfe, 0xd1, 0xfe, 0x42, 0xfd, 0x17, 0xfc, 0x9f, 0xfc, + 0x63, 0xfd, 0x2a, 0xfe, 0xf3, 0xfd, 0xff, 0xfc, 0xf7, 0xfc, 0x7b, 0xfc, 0x1e, 0xfd, 0x44, 0xfe, + 0x97, 0xfe, 0xc9, 0xff, 0x01, 0x01, 0xec, 0x01, 0x14, 0x03, 0x6f, 0x03, 0xeb, 0x01, 0x7b, 0xff, + 0x66, 0xfe, 0x6a, 0xfe, 0x69, 0xff, 0x43, 0xff, 0x70, 0xff, 0x5a, 0x00, 0x66, 0x00, 0x30, 0x01, + 0xbd, 0x01, 0x3c, 0x02, 0xd8, 0x01, 0x95, 0x00, 0x9b, 0xff, 0xdb, 0xff, 0x31, 0x01, 0xc4, 0x00, + 0x6f, 0x00, 0x5d, 0x02, 0xa2, 0x02, 0xeb, 0x01, 0x07, 0x00, 0xee, 0xfd, 0x54, 0xfc, 0x06, 0xfd, + 0x55, 0xff, 0x91, 0x01, 0x0a, 0x03, 0x7c, 0x01, 0x45, 0x00, 0xf4, 0xff, 0x4e, 0x00, 0xfa, 0x00, + 0x7d, 0xff, 0x11, 0xfc, 0x89, 0xf9, 0x5a, 0xf9, 0x8c, 0xfa, 0xf5, 0xfb, 0x79, 0xfc, 0x31, 0xfd, + 0x3b, 0xfc, 0x45, 0xfb, 0x34, 0xfc, 0x62, 0xfd, 0xc1, 0xfd, 0xbe, 0xfd, 0xe7, 0xfd, 0x95, 0xfc, + 0x02, 0xfb, 0xc0, 0xf8, 0xf2, 0xf6, 0x1a, 0xf6, 0x27, 0xf6, 0xc4, 0xf8, 0xee, 0xf9, 0x91, 0xf8, + 0xdf, 0xf5, 0x90, 0xf4, 0xce, 0xf5, 0x35, 0xf9, 0xca, 0xfc, 0x07, 0xfe, 0xf1, 0xfd, 0x14, 0xff, + 0xe9, 0x01, 0xb4, 0x06, 0x86, 0x0a, 0xa1, 0x0c, 0x30, 0x0e, 0xbe, 0x0e, 0xbf, 0x0e, 0x8f, 0x10, + 0xa2, 0x13, 0x5b, 0x13, 0x4e, 0x11, 0x6f, 0x0f, 0x67, 0x10, 0xd9, 0x12, 0x72, 0x12, 0xf4, 0x11, + 0xdb, 0x11, 0x50, 0x11, 0x42, 0x0f, 0x2d, 0x0c, 0x16, 0x09, 0x7d, 0x06, 0xe2, 0x04, 0xa1, 0x04, + 0x4a, 0x05, 0xf1, 0x04, 0x27, 0x03, 0x3e, 0x00, 0x62, 0xfd, 0x78, 0xfb, 0x48, 0xfa, 0x75, 0xf9, + 0x35, 0xf7, 0x5d, 0xf3, 0x58, 0xf2, 0x25, 0xf4, 0x1b, 0xf5, 0x41, 0xf6, 0x91, 0xf6, 0xe5, 0xf5, + 0x60, 0xf3, 0x91, 0xf0, 0xc9, 0xef, 0x3f, 0xf0, 0x97, 0xf2, 0x73, 0xf4, 0xcc, 0xf5, 0x87, 0xf7, + 0x51, 0xf8, 0x08, 0xf9, 0x14, 0xfa, 0xa1, 0xfb, 0xd7, 0xfd, 0x5f, 0xff, 0x31, 0x01, 0xca, 0x02, + 0xec, 0x04, 0x46, 0x06, 0x48, 0x08, 0x00, 0x0a, 0xc8, 0x0a, 0x73, 0x0b, 0x64, 0x0a, 0x98, 0x09, + 0x57, 0x09, 0x40, 0x09, 0x2d, 0x09, 0xdd, 0x08, 0x8f, 0x07, 0xf0, 0x05, 0x74, 0x05, 0xa4, 0x05, + 0x9a, 0x05, 0x5c, 0x05, 0x51, 0x06, 0x66, 0x07, 0xa5, 0x08, 0x0f, 0x07, 0x21, 0x04, 0x47, 0x01, + 0xc5, 0xff, 0x80, 0xfe, 0x36, 0xfd, 0x4f, 0xfc, 0x36, 0xfa, 0x97, 0xf8, 0x9e, 0xf7, 0x35, 0xf9, + 0xab, 0xfa, 0x26, 0xfa, 0xb3, 0xf8, 0xad, 0xf5, 0x67, 0xf3, 0xb7, 0xf3, 0x60, 0xf5, 0x8e, 0xf6, + 0xa6, 0xf5, 0x6b, 0xf5, 0x0c, 0xf8, 0xfe, 0xf8, 0xb2, 0xf8, 0x77, 0xf9, 0x7f, 0xf9, 0x6c, 0xf7, + 0xd4, 0xf7, 0x81, 0xfa, 0x9d, 0xfd, 0x8b, 0xfe, 0x75, 0xfe, 0xeb, 0x00, 0xa0, 0x04, 0x2d, 0x07, + 0x5f, 0x07, 0x1f, 0x05, 0x61, 0x02, 0x0d, 0x02, 0xa4, 0x04, 0x21, 0x06, 0xf0, 0x05, 0x69, 0x05, + 0xb0, 0x05, 0x56, 0x05, 0x82, 0x05, 0x03, 0x06, 0xe7, 0x04, 0x99, 0x02, 0x49, 0x00, 0xeb, 0xff, + 0x89, 0x00, 0xae, 0x00, 0x67, 0xfe, 0xcf, 0xfb, 0xd8, 0xf9, 0x39, 0xf9, 0x2f, 0xf9, 0x8a, 0xf7, + 0x6a, 0xf4, 0x94, 0xf1, 0x56, 0xf1, 0x2b, 0xf1, 0xf3, 0xf1, 0x92, 0xf3, 0x21, 0xf4, 0xf2, 0xf3, + 0x61, 0xf5, 0x9e, 0xf8, 0x77, 0xfd, 0x77, 0x00, 0xed, 0x00, 0x10, 0x01, 0x4a, 0x02, 0xab, 0x04, + 0xde, 0x07, 0xc9, 0x09, 0xfa, 0x08, 0x3e, 0x08, 0xfd, 0x07, 0x4f, 0x09, 0x26, 0x0b, 0x44, 0x0c, + 0x88, 0x0d, 0xe0, 0x0d, 0x6d, 0x0d, 0x31, 0x0c, 0x30, 0x0a, 0x7c, 0x08, 0x86, 0x07, 0x73, 0x07, + 0x70, 0x09, 0x6f, 0x0b, 0x5e, 0x0b, 0xb1, 0x0a, 0x6d, 0x09, 0xfc, 0x08, 0x4b, 0x08, 0xbe, 0x07, + 0xc8, 0x05, 0xc4, 0x03, 0x82, 0x01, 0x2a, 0x00, 0xcb, 0x00, 0xbd, 0x00, 0x81, 0x00, 0x22, 0x00, + 0x13, 0xff, 0xce, 0xfc, 0x5a, 0xfa, 0xd5, 0xf8, 0x2c, 0xf8, 0x29, 0xf8, 0xe7, 0xf8, 0x4d, 0xfa, + 0x13, 0xfb, 0x75, 0xf9, 0x3b, 0xf9, 0x16, 0xfa, 0x42, 0xfa, 0x3c, 0xfa, 0x96, 0xfa, 0x96, 0xfa, + 0xcd, 0xfa, 0xf0, 0xfc, 0xb6, 0xfe, 0x53, 0x00, 0xfd, 0x00, 0xdb, 0xff, 0xcb, 0xff, 0xa9, 0xff, + 0xa5, 0x00, 0xe8, 0x02, 0x28, 0x03, 0xde, 0x01, 0x68, 0x00, 0xf3, 0xfe, 0x98, 0xfe, 0xb5, 0xfe, + 0xe9, 0xff, 0x8c, 0x01, 0x01, 0x02, 0x55, 0x03, 0x59, 0x04, 0xd4, 0x04, 0x25, 0x04, 0x39, 0x04, + 0x84, 0x04, 0xea, 0x04, 0x4c, 0x05, 0x74, 0x04, 0xd4, 0x03, 0x6b, 0x02, 0x6e, 0x01, 0x5b, 0x02, + 0xba, 0x03, 0x84, 0x04, 0x1a, 0x04, 0x3e, 0x02, 0x4d, 0x00, 0x69, 0xff, 0x64, 0xff, 0xa7, 0xfe, + 0xec, 0xfe, 0xf0, 0xfe, 0xbc, 0xfe, 0x1a, 0xff, 0x93, 0xfe, 0x02, 0xfe, 0x80, 0xfd, 0xec, 0xfc, + 0x50, 0xfb, 0xed, 0xfa, 0x5e, 0xfa, 0x77, 0xfa, 0x7d, 0xfb, 0x9e, 0xfb, 0xaa, 0xfc, 0x48, 0xfd, + 0x4b, 0xfc, 0xd2, 0xfb, 0x0b, 0xfb, 0x55, 0xfa, 0x00, 0xfa, 0xfc, 0xf9, 0xda, 0xfa, 0x27, 0xfb, + 0xf8, 0xfa, 0x1d, 0xfc, 0x3c, 0xfd, 0x50, 0xfe, 0x6e, 0xfe, 0x23, 0xfe, 0xf4, 0xfc, 0x95, 0xfb, + 0xb5, 0xfa, 0x48, 0xfa, 0x6b, 0xfa, 0x54, 0xf9, 0x9d, 0xf9, 0x07, 0xfa, 0x8e, 0xf9, 0xd1, 0xf8, + 0x28, 0xf8, 0x83, 0xf8, 0x99, 0xf8, 0x83, 0xf8, 0x77, 0xf8, 0x64, 0xf9, 0xae, 0xfb, 0x45, 0xfd, + 0xbf, 0xfe, 0x78, 0x00, 0x8e, 0x02, 0x74, 0x05, 0xdd, 0x07, 0xe0, 0x09, 0xe7, 0x0b, 0x52, 0x0d, + 0x68, 0x0d, 0xb0, 0x0d, 0xaa, 0x0e, 0x11, 0x0f, 0x85, 0x0f, 0x67, 0x0e, 0x0a, 0x0e, 0xbc, 0x0e, + 0xdf, 0x0f, 0x7c, 0x11, 0x0e, 0x11, 0x1a, 0x0e, 0x58, 0x0a, 0xc9, 0x07, 0xd9, 0x04, 0x11, 0x03, + 0x3e, 0x02, 0xd0, 0x01, 0x9a, 0x00, 0x37, 0xff, 0x44, 0xff, 0x20, 0xff, 0xa4, 0xfd, 0xe2, 0xfb, + 0xc4, 0xf9, 0xf7, 0xf6, 0x9c, 0xf5, 0xf1, 0xf4, 0x7d, 0xf5, 0x40, 0xf6, 0x48, 0xf6, 0x9e, 0xf5, + 0xf5, 0xf4, 0xb9, 0xf3, 0x51, 0xf2, 0xe2, 0xf1, 0x55, 0xf2, 0xb9, 0xf3, 0x3e, 0xf5, 0xbd, 0xf5, + 0xbd, 0xf5, 0x3e, 0xf7, 0x34, 0xf8, 0xa3, 0xf9, 0x12, 0xfc, 0x39, 0xfe, 0x5c, 0xff, 0xc5, 0x00, + 0x40, 0x01, 0xaf, 0x02, 0x4a, 0x05, 0x99, 0x07, 0x0e, 0x0a, 0xfd, 0x0a, 0x9d, 0x0b, 0x74, 0x0c, + 0x49, 0x0c, 0xe2, 0x0a, 0x6b, 0x0a, 0x7e, 0x09, 0x23, 0x08, 0xfe, 0x06, 0x80, 0x05, 0x4a, 0x05, + 0x83, 0x04, 0x48, 0x04, 0xb7, 0x05, 0x8e, 0x06, 0x1e, 0x06, 0x73, 0x04, 0x7b, 0x03, 0x38, 0x03, + 0xa6, 0x03, 0x79, 0x03, 0x8e, 0x02, 0x99, 0x00, 0x4c, 0xfd, 0x33, 0xfb, 0x83, 0xfa, 0xb1, 0xfa, + 0x5a, 0xfc, 0xeb, 0xfd, 0x53, 0xfd, 0xd0, 0xfb, 0x1d, 0xfb, 0x92, 0xfa, 0x18, 0xfa, 0x01, 0xf9, + 0xfd, 0xf7, 0x78, 0xf8, 0x11, 0xf8, 0x61, 0xf8, 0x8b, 0xf9, 0x0b, 0xfb, 0x19, 0xfb, 0x8f, 0xfb, + 0xd7, 0xfb, 0x01, 0xfb, 0xbb, 0xfb, 0x0f, 0xfc, 0x16, 0xfd, 0xfc, 0xfe, 0xa7, 0x00, 0x99, 0x04, + 0xdf, 0x06, 0x56, 0x07, 0xa4, 0x07, 0x7a, 0x07, 0x41, 0x07, 0xe6, 0x07, 0x08, 0x08, 0xc1, 0x07, + 0x2d, 0x07, 0xfc, 0x05, 0x75, 0x06, 0xca, 0x06, 0x98, 0x06, 0xc4, 0x05, 0x9b, 0x04, 0xe3, 0x02, + 0x78, 0x01, 0x0f, 0x00, 0xa8, 0xfe, 0x3f, 0xfe, 0x7c, 0xfd, 0x18, 0xfc, 0x10, 0xfa, 0xee, 0xf7, + 0xfa, 0xf5, 0x3a, 0xf6, 0xc3, 0xf5, 0xc7, 0xf3, 0x3a, 0xf2, 0x5f, 0xf1, 0x88, 0xf1, 0x2d, 0xf2, + 0x6f, 0xf2, 0xe4, 0xf4, 0x81, 0xf7, 0xa7, 0xf9, 0x93, 0xfb, 0x60, 0xfd, 0xd4, 0xfe, 0x38, 0x01, + 0x43, 0x04, 0xae, 0x05, 0x7e, 0x06, 0xcf, 0x06, 0x6e, 0x06, 0xea, 0x06, 0xb0, 0x07, 0x01, 0x09, + 0xa5, 0x0a, 0xc6, 0x0b, 0x75, 0x0c, 0x54, 0x0c, 0xa1, 0x0b, 0x6f, 0x0a, 0xd5, 0x08, 0x49, 0x07, + 0xe8, 0x06, 0x9a, 0x06, 0x7a, 0x06, 0xc7, 0x06, 0x14, 0x07, 0x82, 0x07, 0x1a, 0x08, 0xe7, 0x07, + 0xee, 0x06, 0x48, 0x05, 0x49, 0x03, 0x41, 0x01, 0xbf, 0xfe, 0xc8, 0xfc, 0xf3, 0xfb, 0xe8, 0xfb, + 0xec, 0xfa, 0xdd, 0xfa, 0x88, 0xfa, 0x32, 0xf8, 0xc2, 0xf6, 0x4c, 0xf6, 0x33, 0xf5, 0x20, 0xf5, + 0xbd, 0xf4, 0xc2, 0xf4, 0x9c, 0xf5, 0xd8, 0xf5, 0xbb, 0xf6, 0x19, 0xf7, 0x93, 0xf6, 0x3a, 0xf6, + 0x47, 0xf7, 0x80, 0xf8, 0x3b, 0xfa, 0xf2, 0xfc, 0xcf, 0xfe, 0xde, 0xff, 0x34, 0x00, 0xac, 0x00, + 0xec, 0x01, 0xf0, 0x02, 0xa4, 0x03, 0x08, 0x04, 0x53, 0x03, 0x9f, 0x01, 0x9b, 0x00, 0xea, 0xff, + 0x4b, 0x00, 0x5b, 0x00, 0x0e, 0x01, 0xb1, 0x02, 0xee, 0x03, 0xc5, 0x03, 0xbc, 0x03, 0x4f, 0x04, + 0xf9, 0x04, 0x60, 0x06, 0xdf, 0x06, 0x22, 0x07, 0x35, 0x06, 0x2e, 0x05, 0xa4, 0x04, 0x1c, 0x05, + 0xe8, 0x05, 0xf2, 0x06, 0x8e, 0x08, 0x65, 0x08, 0x12, 0x07, 0x9e, 0x05, 0x8b, 0x03, 0xa7, 0x01, + 0xd7, 0xff, 0xc5, 0xfe, 0xe6, 0xfe, 0x72, 0xfe, 0xcb, 0xfd, 0xb2, 0xfe, 0xc0, 0xff, 0x39, 0xff, + 0x84, 0xfe, 0x98, 0xfd, 0x62, 0xfc, 0x7a, 0xfb, 0x96, 0xfa, 0x97, 0xfa, 0x3b, 0xfb, 0xef, 0xfb, + 0xea, 0xfc, 0x26, 0xfd, 0xa8, 0xfc, 0x6b, 0xfc, 0x34, 0xfd, 0x0c, 0xfd, 0xcf, 0xfc, 0xe2, 0xfb, + 0x24, 0xfb, 0x4a, 0xfb, 0x8d, 0xfb, 0xc7, 0xfc, 0xb9, 0xfd, 0xac, 0xfd, 0xcb, 0xfc, 0x37, 0xfc, + 0xd2, 0xfb, 0x77, 0xfc, 0xe0, 0xfc, 0x3d, 0xfd, 0x8b, 0xfd, 0xb6, 0xfc, 0xed, 0xfb, 0x6e, 0xfb, + 0xf4, 0xfa, 0xb0, 0xfa, 0x05, 0xfb, 0x67, 0xfb, 0x4d, 0xfb, 0x58, 0xfb, 0x5e, 0xfb, 0x93, 0xfb, + 0xc0, 0xfc, 0x84, 0xfe, 0x91, 0x01, 0xa6, 0x03, 0xd4, 0x04, 0xed, 0x05, 0x19, 0x07, 0x22, 0x08, + 0x3e, 0x09, 0xf4, 0x0a, 0x07, 0x0c, 0xf9, 0x0c, 0xd2, 0x0c, 0xb3, 0x0b, 0xb6, 0x0b, 0xaa, 0x0b, + 0xcb, 0x0c, 0x75, 0x0d, 0x75, 0x0d, 0x95, 0x0d, 0x4f, 0x0d, 0xa6, 0x0b, 0x49, 0x09, 0x84, 0x06, + 0x46, 0x04, 0xbc, 0x02, 0x9c, 0x00, 0xee, 0xfe, 0xf0, 0xfe, 0xca, 0xff, 0x26, 0x00, 0xd0, 0x00, + 0x4c, 0xff, 0xa1, 0xfd, 0x86, 0xfb, 0xd3, 0xf9, 0x97, 0xf9, 0x80, 0xf8, 0xcf, 0xf7, 0x31, 0xf7, + 0xa3, 0xf6, 0x04, 0xf6, 0xbb, 0xf6, 0x5f, 0xf7, 0xab, 0xf6, 0x62, 0xf6, 0x68, 0xf6, 0xf6, 0xf5, + 0xc3, 0xf5, 0x76, 0xf5, 0x30, 0xf6, 0xb9, 0xf7, 0xb0, 0xf9, 0xd0, 0xfb, 0xcb, 0xfd, 0x18, 0xff, + 0x58, 0xff, 0xcd, 0x00, 0xc0, 0x01, 0x0d, 0x04, 0xfe, 0x06, 0x63, 0x08, 0x84, 0x08, 0x1b, 0x08, + 0x9c, 0x08, 0x5c, 0x09, 0xe0, 0x08, 0xdf, 0x07, 0x37, 0x07, 0xac, 0x05, 0xf5, 0x03, 0x5d, 0x02, + 0x01, 0x01, 0x33, 0x01, 0xd6, 0x00, 0xc7, 0x00, 0xed, 0x00, 0x15, 0x00, 0xf1, 0xfe, 0x3f, 0xff, + 0xd8, 0xff, 0x41, 0x00, 0x93, 0x00, 0x1e, 0x00, 0x3a, 0xff, 0xf7, 0xfd, 0x36, 0xfd, 0xd2, 0xfd, + 0xab, 0xfe, 0xa7, 0xfe, 0x40, 0xff, 0xdf, 0xff, 0x77, 0x00, 0xa5, 0x00, 0xca, 0x00, 0x0f, 0xff, + 0x98, 0xfd, 0xe3, 0xfb, 0xde, 0xf9, 0x49, 0xf9, 0x6c, 0xf9, 0x08, 0xfa, 0x59, 0xfb, 0x12, 0xfd, + 0x2d, 0xfd, 0xee, 0xfc, 0xb1, 0xfc, 0x9b, 0xfb, 0x30, 0xfb, 0x6c, 0xfb, 0x43, 0xfd, 0x81, 0xff, + 0x6e, 0x01, 0xd8, 0x03, 0xcb, 0x04, 0x94, 0x05, 0xa8, 0x06, 0xeb, 0x07, 0x24, 0x08, 0x56, 0x07, + 0xc0, 0x05, 0x06, 0x05, 0x77, 0x04, 0xbe, 0x03, 0xee, 0x03, 0x20, 0x04, 0x88, 0x03, 0xff, 0x02, + 0x15, 0x02, 0x7b, 0x00, 0x9b, 0xff, 0xe4, 0xfe, 0xdb, 0xfe, 0x07, 0xfe, 0xf6, 0xfb, 0xf2, 0xf9, + 0xd4, 0xf8, 0xd4, 0xf7, 0x3d, 0xf6, 0x69, 0xf5, 0xc6, 0xf4, 0x49, 0xf3, 0x55, 0xf2, 0x70, 0xf1, + 0x79, 0xf1, 0x8a, 0xf2, 0x4d, 0xf3, 0x28, 0xf5, 0x61, 0xf6, 0xbf, 0xf7, 0x10, 0xfa, 0xe5, 0xfc, + 0xe7, 0xfd, 0x01, 0xff, 0x73, 0x00, 0x30, 0x01, 0x6b, 0x02, 0x92, 0x03, 0x17, 0x04, 0x81, 0x05, + 0x63, 0x06, 0xe2, 0x07, 0xda, 0x08, 0x1e, 0x09, 0xb4, 0x09, 0x12, 0x0a, 0xbc, 0x09, 0x3e, 0x09, + 0x5e, 0x08, 0xcd, 0x07, 0xab, 0x06, 0x7f, 0x05, 0xdd, 0x04, 0x8a, 0x05, 0x56, 0x07, 0x1e, 0x09, + 0x72, 0x0a, 0xb4, 0x09, 0xa3, 0x08, 0xc1, 0x06, 0x31, 0x04, 0xe2, 0x01, 0x58, 0x00, 0x3f, 0xff, + 0x80, 0xfe, 0xe3, 0xfd, 0xcb, 0xfc, 0x10, 0xfc, 0x46, 0xfc, 0x28, 0xfc, 0xef, 0xfb, 0xd3, 0xfa, + 0x19, 0xf9, 0x82, 0xf7, 0x75, 0xf6, 0x18, 0xf7, 0x3d, 0xf8, 0xfc, 0xf8, 0x5d, 0xf9, 0x8b, 0xfa, + 0x06, 0xfb, 0xb6, 0xfa, 0xc7, 0xfb, 0xdb, 0xfc, 0xcb, 0xfe, 0xe4, 0xff, 0xb1, 0xff, 0x8c, 0x00, + 0x27, 0x02, 0x24, 0x04, 0xab, 0x05, 0x1c, 0x05, 0x8f, 0x03, 0x0c, 0x03, 0x98, 0x02, 0x78, 0x02, + 0x87, 0x01, 0xec, 0x00, 0x68, 0x01, 0x89, 0x01, 0x66, 0x01, 0x67, 0x01, 0x84, 0x01, 0xaa, 0x01, + 0x58, 0x03, 0x36, 0x04, 0xbc, 0x05, 0x9a, 0x07, 0x28, 0x08, 0x09, 0x08, 0x86, 0x07, 0xa7, 0x07, + 0x66, 0x08, 0xbf, 0x08, 0x07, 0x08, 0x63, 0x07, 0xed, 0x07, 0xde, 0x07, 0xc4, 0x06, 0x85, 0x05, + 0xb4, 0x03, 0x0b, 0x02, 0x3d, 0xff, 0xa8, 0xfc, 0x1f, 0xfb, 0xf0, 0xfa, 0x5e, 0xfb, 0xbd, 0xfc, + 0xaa, 0xfd, 0x52, 0xfc, 0x6b, 0xfb, 0x66, 0xfa, 0xcf, 0xf8, 0x21, 0xf8, 0x5a, 0xf7, 0x91, 0xf7, + 0x13, 0xf8, 0xf2, 0xf8, 0x91, 0xfa, 0xb4, 0xfb, 0xeb, 0xfc, 0xac, 0xfe, 0x28, 0xff, 0xae, 0xfe, + 0xe4, 0xfd, 0x5c, 0xfd, 0x55, 0xfe, 0x58, 0xff, 0x3a, 0xff, 0x50, 0xfe, 0x53, 0xfe, 0x72, 0xfe, + 0x9d, 0xff, 0xf1, 0xff, 0x9b, 0xff, 0x52, 0x00, 0xd5, 0x00, 0xec, 0x01, 0x9f, 0x01, 0xfa, 0xff, + 0xc9, 0xfe, 0xd6, 0xfe, 0x0a, 0xff, 0x7e, 0xfe, 0xf8, 0xfe, 0x41, 0xff, 0xb9, 0xfe, 0x73, 0xfe, + 0x73, 0xfe, 0x96, 0xff, 0xc1, 0x00, 0x67, 0x01, 0xcc, 0x01, 0xd5, 0x02, 0xe0, 0x02, 0x88, 0x03, + 0x3f, 0x05, 0xb0, 0x05, 0x28, 0x06, 0x79, 0x06, 0x5d, 0x06, 0xdc, 0x06, 0xa6, 0x06, 0x0e, 0x07, + 0x8e, 0x08, 0x02, 0x09, 0x9d, 0x09, 0x5c, 0x09, 0x43, 0x09, 0xfa, 0x09, 0xae, 0x09, 0x3a, 0x08, + 0x8f, 0x07, 0x67, 0x04, 0x81, 0x01, 0x82, 0xff, 0x32, 0xfd, 0xce, 0xfc, 0x0f, 0xfd, 0x84, 0xfd, + 0x52, 0xfe, 0xd3, 0xfe, 0x33, 0xfe, 0x2a, 0xfe, 0xc5, 0xfc, 0x55, 0xfb, 0xbc, 0xf8, 0x51, 0xf6, + 0x35, 0xf4, 0xdc, 0xf3, 0xa3, 0xf4, 0x38, 0xf4, 0x4c, 0xf3, 0x3d, 0xf4, 0xb7, 0xf5, 0x77, 0xf5, + 0x21, 0xf5, 0xc2, 0xf3, 0x7a, 0xf3, 0x20, 0xf4, 0xe6, 0xf4, 0x73, 0xf7, 0xc7, 0xfa, 0xbf, 0xfc, + 0x02, 0xfe, 0x83, 0xff, 0x42, 0x00, 0xaa, 0x02, 0x83, 0x03, 0x33, 0x05, 0x26, 0x06, 0x88, 0x06, + 0x2a, 0x07, 0x87, 0x07, 0xe1, 0x07, 0x1d, 0x09, 0xf5, 0x08, 0x25, 0x07, 0xcc, 0x06, 0xdf, 0x04, + 0xef, 0x03, 0xbc, 0x02, 0x08, 0x02, 0x50, 0x02, 0xf5, 0x00, 0x3a, 0xfe, 0xa0, 0xfd, 0xed, 0xfe, + 0xfa, 0xfe, 0xf6, 0x00, 0x26, 0x01, 0x78, 0x01, 0x6d, 0x01, 0x18, 0x01, 0x56, 0x01, 0xd9, 0x01, + 0x89, 0x02, 0x7e, 0x02, 0x14, 0x01, 0x6a, 0x00, 0x2b, 0x01, 0x6b, 0x02, 0x5f, 0x03, 0x14, 0x03, + 0xe3, 0x01, 0x6b, 0x00, 0x65, 0xfe, 0xb0, 0xfb, 0x3b, 0xfa, 0x38, 0xf9, 0x3e, 0xf9, 0xeb, 0xf9, + 0xbd, 0xfb, 0x58, 0xfd, 0xa3, 0xfc, 0x41, 0xfc, 0x14, 0xfc, 0xe4, 0xfb, 0x72, 0xfc, 0xbf, 0xfc, + 0x93, 0xfd, 0x11, 0xff, 0x71, 0x00, 0x2c, 0x02, 0x2b, 0x05, 0xef, 0x06, 0xf1, 0x08, 0x28, 0x09, + 0x81, 0x08, 0x48, 0x07, 0xf8, 0x05, 0xfd, 0x04, 0x6e, 0x04, 0x2a, 0x03, 0x47, 0x02, 0x3f, 0x02, + 0x9e, 0x01, 0xda, 0x01, 0xcc, 0x01, 0x79, 0x01, 0x2a, 0x01, 0x4a, 0x00, 0x91, 0xfe, 0x56, 0xfd, + 0x3e, 0xfb, 0xcc, 0xf9, 0xd6, 0xf9, 0x1b, 0xf9, 0xd5, 0xf6, 0xd2, 0xf5, 0x6c, 0xf5, 0x40, 0xf5, + 0x96, 0xf5, 0x81, 0xf5, 0x52, 0xf6, 0x42, 0xf6, 0xbd, 0xf5, 0x4b, 0xf6, 0xc7, 0xf8, 0x12, 0xfb, + 0x4d, 0xfc, 0x44, 0xfd, 0xda, 0xfd, 0xd9, 0xfe, 0x4c, 0x00, 0xe2, 0x01, 0x56, 0x03, 0x97, 0x04, + 0x2e, 0x06, 0x9f, 0x07, 0x10, 0x08, 0x49, 0x09, 0xc8, 0x0a, 0x76, 0x0b, 0x29, 0x0c, 0x10, 0x0d, + 0xf0, 0x0e, 0x63, 0x0f, 0x1b, 0x0d, 0xfc, 0x0a, 0xd9, 0x09, 0x2a, 0x08, 0xb9, 0x06, 0x99, 0x07, + 0x85, 0x08, 0xd0, 0x08, 0x62, 0x09, 0x93, 0x08, 0x78, 0x07, 0xd8, 0x05, 0xe5, 0x03, 0x4c, 0x01, + 0xc8, 0xfe, 0xf7, 0xfc, 0x27, 0xfb, 0x5b, 0xfa, 0xfa, 0xf8, 0xeb, 0xf8, 0x6a, 0xf9, 0x5b, 0xf8, + 0x66, 0xf7, 0x27, 0xf6, 0xe0, 0xf5, 0x94, 0xf5, 0xa0, 0xf4, 0xf8, 0xf3, 0x28, 0xf4, 0x6c, 0xf4, + 0x03, 0xf5, 0x64, 0xf6, 0x8a, 0xf7, 0x7c, 0xf8, 0xbe, 0xf9, 0xc7, 0xf9, 0xe6, 0xfa, 0x97, 0xfb, + 0x2b, 0xfc, 0x7a, 0xfe, 0x58, 0xff, 0xb3, 0xff, 0xff, 0xff, 0xc5, 0xff, 0x96, 0x00, 0x7c, 0x00, + 0x1d, 0x00, 0x31, 0x00, 0x7f, 0x00, 0x90, 0x00, 0x59, 0x00, 0x58, 0x00, 0x52, 0xff, 0xa4, 0xfe, + 0x49, 0xfe, 0x6b, 0xff, 0x15, 0x02, 0x7a, 0x03, 0x7b, 0x04, 0x79, 0x04, 0xf8, 0x05, 0xef, 0x07, + 0xc0, 0x08, 0x04, 0x09, 0x08, 0x09, 0x06, 0x09, 0xb9, 0x07, 0xf8, 0x05, 0xca, 0x05, 0x55, 0x06, + 0x0d, 0x06, 0xcd, 0x04, 0x6a, 0x03, 0x6b, 0x01, 0x8f, 0xfe, 0xe8, 0xfb, 0xc4, 0xfa, 0x8f, 0xfb, + 0x69, 0xfb, 0x27, 0xfb, 0x5e, 0xfb, 0x98, 0xfa, 0x7d, 0xfa, 0xa4, 0xf9, 0xa2, 0xf8, 0xfd, 0xf7, + 0x35, 0xf7, 0x50, 0xf7, 0xa8, 0xf7, 0x80, 0xf8, 0x4f, 0xfb, 0x13, 0xfe, 0x90, 0xfe, 0x16, 0xff, + 0x5b, 0xff, 0x8c, 0x00, 0x4c, 0x01, 0x3b, 0x01, 0xb8, 0x00, 0x4b, 0xff, 0x63, 0xfd, 0x23, 0xfd, + 0x13, 0xfe, 0xba, 0xfe, 0x23, 0x00, 0x2c, 0x01, 0xc5, 0x01, 0x0b, 0x02, 0xb3, 0x01, 0xc4, 0x00, + 0x68, 0xff, 0xe1, 0xfe, 0x7f, 0xff, 0xba, 0x00, 0x88, 0x01, 0x93, 0x00, 0xd4, 0xff, 0x9a, 0xff, + 0xc9, 0xff, 0x5e, 0x00, 0x94, 0x01, 0x49, 0x02, 0xe0, 0x01, 0x13, 0x02, 0xb0, 0x01, 0x2f, 0x02, + 0x6e, 0x02, 0x38, 0x02, 0x66, 0x03, 0x1a, 0x04, 0x3c, 0x04, 0x2d, 0x04, 0x69, 0x04, 0x43, 0x06, + 0x2a, 0x07, 0x41, 0x07, 0x66, 0x07, 0x1a, 0x07, 0x4a, 0x07, 0xa1, 0x08, 0x93, 0x09, 0xb9, 0x0a, + 0x5f, 0x0b, 0x0d, 0x0b, 0xa5, 0x09, 0x73, 0x07, 0xb7, 0x04, 0xba, 0x03, 0xef, 0x02, 0x8b, 0x01, + 0x1d, 0x01, 0x68, 0x00, 0x1c, 0x01, 0x68, 0x02, 0xe6, 0x02, 0x76, 0x02, 0x58, 0x00, 0x9a, 0xfd, + 0x98, 0xfb, 0xa5, 0xf9, 0x14, 0xf8, 0x13, 0xf7, 0x13, 0xf7, 0x9b, 0xf6, 0x89, 0xf6, 0x36, 0xf7, + 0xa9, 0xf7, 0xee, 0xf7, 0x29, 0xf7, 0xb0, 0xf7, 0xee, 0xf7, 0xd9, 0xf7, 0x48, 0xf8, 0x76, 0xf9, + 0x14, 0xfb, 0xa2, 0xfc, 0x40, 0xfe, 0xed, 0x00, 0x22, 0x03, 0x5c, 0x04, 0x92, 0x04, 0xb2, 0x04, + 0x87, 0x04, 0xb2, 0x04, 0x70, 0x05, 0x9c, 0x05, 0x83, 0x05, 0xe5, 0x05, 0x72, 0x05, 0xb6, 0x04, + 0x41, 0x04, 0x67, 0x04, 0x5c, 0x04, 0x23, 0x03, 0x85, 0x01, 0x0c, 0x00, 0x47, 0xff, 0xda, 0xfd, + 0xf2, 0xfc, 0x90, 0xfc, 0x6e, 0xfc, 0xeb, 0xfc, 0x20, 0xfd, 0x5a, 0xfd, 0x47, 0xfe, 0x5d, 0x00, + 0xa7, 0x01, 0xad, 0x01, 0x7d, 0x01, 0xdc, 0x00, 0x37, 0x01, 0xa9, 0x01, 0xca, 0x01, 0x89, 0x01, + 0xb4, 0x00, 0x7e, 0x00, 0x46, 0x00, 0x5a, 0xff, 0x57, 0xfd, 0x04, 0xfb, 0x3d, 0xf9, 0x23, 0xf8, + 0xd6, 0xf7, 0x25, 0xf8, 0xa1, 0xf8, 0xe8, 0xf8, 0x98, 0xf9, 0x8a, 0xfa, 0x1a, 0xfb, 0xd0, 0xfb, + 0x4b, 0xfc, 0x4a, 0xfc, 0x6e, 0xfc, 0x16, 0xfd, 0xac, 0xfe, 0x99, 0x01, 0x5d, 0x04, 0x8d, 0x06, + 0xbd, 0x07, 0xa2, 0x07, 0xc4, 0x07, 0x91, 0x07, 0x18, 0x07, 0x3f, 0x05, 0x76, 0x04, 0x39, 0x03, + 0x4b, 0x01, 0x79, 0x00, 0x50, 0x00, 0x2e, 0x01, 0x77, 0x01, 0x2e, 0x01, 0x0b, 0x00, 0x54, 0xfe, + 0x57, 0xfd, 0x74, 0xfc, 0xa7, 0xfb, 0x6d, 0xfa, 0xe2, 0xf9, 0x45, 0xf9, 0x8b, 0xf7, 0xb8, 0xf6, + 0xed, 0xf6, 0x1f, 0xf8, 0x81, 0xf8, 0x03, 0xf8, 0xd6, 0xf7, 0x47, 0xf8, 0x47, 0xf9, 0x26, 0xfa, + 0xe6, 0xfa, 0xe4, 0xfa, 0x54, 0xfb, 0xbb, 0xfc, 0x9e, 0xfd, 0x7f, 0xfe, 0x34, 0xff, 0x0d, 0x01, + 0xa8, 0x03, 0x7a, 0x05, 0x4a, 0x07, 0xa6, 0x08, 0x4b, 0x08, 0xed, 0x08, 0xb2, 0x0a, 0x8d, 0x0c, + 0x20, 0x0e, 0x22, 0x0f, 0x08, 0x10, 0x67, 0x0f, 0x48, 0x0e, 0x54, 0x0d, 0x08, 0x0d, 0xdd, 0x0b, + 0x06, 0x0a, 0x42, 0x09, 0x31, 0x08, 0x21, 0x08, 0x9f, 0x08, 0xa9, 0x08, 0x6f, 0x07, 0x51, 0x05, + 0xab, 0x03, 0x68, 0x01, 0xe2, 0xfe, 0x0f, 0xfd, 0x39, 0xfb, 0x91, 0xfa, 0xad, 0xf9, 0x91, 0xf8, + 0xf8, 0xf7, 0xd6, 0xf7, 0xc2, 0xf7, 0xb2, 0xf7, 0x84, 0xf7, 0x8e, 0xf6, 0xe5, 0xf5, 0xec, 0xf4, + 0x0a, 0xf5, 0x44, 0xf6, 0xc6, 0xf7, 0x9c, 0xf9, 0x17, 0xfb, 0x01, 0xfc, 0x71, 0xfc, 0x75, 0xfc, + 0x24, 0xfe, 0xf3, 0xff, 0x1b, 0x00, 0x8e, 0x00, 0xa8, 0x00, 0xfb, 0x00, 0xdb, 0x01, 0x76, 0x02, + 0x70, 0x03, 0xeb, 0x03, 0xfb, 0x03, 0x5f, 0x04, 0x6d, 0x04, 0x19, 0x03, 0xdf, 0x01, 0xeb, 0x01, + 0xff, 0x00, 0xda, 0x00, 0x23, 0x01, 0x04, 0x02, 0xf4, 0x02, 0x89, 0x03, 0xfc, 0x04, 0x92, 0x06, + 0xe4, 0x07, 0xde, 0x08, 0x54, 0x09, 0x0b, 0x09, 0x1c, 0x08, 0xc7, 0x07, 0x2d, 0x07, 0xa7, 0x05, + 0x24, 0x04, 0xf7, 0x03, 0x24, 0x04, 0xde, 0x02, 0x9e, 0x01, 0xbd, 0xff, 0x70, 0xfd, 0xf6, 0xfa, + 0xae, 0xf8, 0x90, 0xf7, 0x70, 0xf6, 0x84, 0xf6, 0x26, 0xf7, 0x71, 0xf7, 0xbb, 0xf7, 0x0e, 0xf7, + 0x38, 0xf6, 0xfb, 0xf5, 0xa2, 0xf5, 0xef, 0xf5, 0xa1, 0xf6, 0x30, 0xf7, 0xcf, 0xf8, 0x67, 0xfa, + 0x4b, 0xfc, 0x2a, 0xfe, 0x11, 0x00, 0x65, 0x01, 0x62, 0x01, 0x4a, 0x00, 0x02, 0xff, 0xcb, 0xfe, + 0xe3, 0xfd, 0x22, 0xfd, 0x99, 0xfc, 0xde, 0xfc, 0x0a, 0xff, 0x19, 0x01, 0xb5, 0x01, 0x0f, 0x01, + 0x42, 0x00, 0x80, 0x00, 0xb1, 0x00, 0x2f, 0x01, 0x49, 0x01, 0x18, 0x01, 0xf0, 0x00, 0x87, 0x00, + 0x4d, 0x00, 0xeb, 0x00, 0xfa, 0x01, 0x37, 0x02, 0x75, 0x02, 0x6f, 0x02, 0x76, 0x02, 0x31, 0x02, + 0x17, 0x01, 0xdb, 0x00, 0x70, 0x00, 0x5a, 0xff, 0x10, 0xff, 0xaa, 0xfe, 0xda, 0xff, 0x03, 0x01, + 0xd2, 0x01, 0x0b, 0x03, 0xbe, 0x03, 0x62, 0x04, 0xe8, 0x04, 0xd2, 0x04, 0x66, 0x05, 0x75, 0x06, + 0x98, 0x07, 0x71, 0x08, 0x83, 0x08, 0x61, 0x08, 0x3a, 0x08, 0x40, 0x08, 0xf3, 0x06, 0xfe, 0x05, + 0x1c, 0x04, 0xb1, 0x01, 0x94, 0x00, 0xd6, 0x00, 0xad, 0x01, 0x6f, 0x01, 0xef, 0x00, 0xe4, 0xff, + 0x4a, 0xfe, 0x0d, 0xfd, 0x3c, 0xfb, 0x8c, 0xf9, 0x33, 0xf7, 0xa6, 0xf5, 0x00, 0xf6, 0x94, 0xf5, + 0x9a, 0xf4, 0x4b, 0xf4, 0x44, 0xf5, 0x7a, 0xf6, 0xc5, 0xf7, 0x95, 0xf8, 0x4d, 0xf9, 0x0d, 0xf9, + 0xe1, 0xf8, 0x05, 0xfa, 0x20, 0xfc, 0x0d, 0xfe, 0xa5, 0x00, 0xd2, 0x02, 0x40, 0x04, 0x87, 0x04, + 0x48, 0x04, 0x15, 0x05, 0x5d, 0x05, 0xf8, 0x04, 0xcf, 0x05, 0x81, 0x05, 0xc7, 0x04, 0x1a, 0x05, + 0xcb, 0x05, 0x45, 0x06, 0x62, 0x05, 0xae, 0x04, 0x52, 0x04, 0x7e, 0x04, 0x7d, 0x03, 0x64, 0x02, + 0xe8, 0x01, 0xcd, 0x00, 0x44, 0xff, 0xac, 0xfd, 0x97, 0xfc, 0x44, 0xfc, 0x58, 0xfd, 0x82, 0xff, + 0xd0, 0x00, 0x43, 0x01, 0x94, 0x01, 0x07, 0x02, 0xcd, 0x02, 0x3f, 0x03, 0xce, 0x03, 0x3d, 0x03, + 0x7d, 0x01, 0x95, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x89, 0xff, 0xe4, 0xfe, 0xa2, 0xfd, 0xd3, 0xfc, + 0xc7, 0xfb, 0x34, 0xfa, 0x17, 0xf9, 0x5f, 0xf7, 0xca, 0xf7, 0xca, 0xf8, 0xee, 0xf9, 0xb8, 0xfb, + 0xa7, 0xfb, 0x14, 0xfc, 0x25, 0xfd, 0xea, 0xfc, 0x07, 0xfe, 0x2e, 0xff, 0xe7, 0xff, 0x4a, 0x01, + 0xbd, 0x02, 0x36, 0x04, 0x3b, 0x06, 0x58, 0x07, 0x5a, 0x07, 0x48, 0x07, 0x36, 0x06, 0x5e, 0x04, + 0x2f, 0x03, 0x74, 0x01, 0x9c, 0x00, 0xb8, 0x00, 0x5b, 0x00, 0x15, 0x00, 0xed, 0xff, 0x0b, 0x00, + 0x53, 0x00, 0x18, 0xff, 0x98, 0xfe, 0x24, 0xfe, 0xb2, 0xfc, 0xad, 0xfa, 0x2c, 0xf9, 0x8e, 0xf8, + 0xcb, 0xf9, 0x5a, 0xfa, 0x04, 0xfb, 0xd7, 0xfa, 0x99, 0xf8, 0x89, 0xf9, 0x45, 0xfb, 0xbd, 0xfb, + 0x4b, 0xfb, 0xd8, 0xf9, 0x7a, 0xf9, 0x7b, 0xf9, 0x62, 0xfa, 0x8e, 0xfb, 0x86, 0xfb, 0x04, 0xfc, + 0x8f, 0xfd, 0xbd, 0xff, 0x5e, 0x02, 0xd0, 0x04, 0x38, 0x06, 0x6e, 0x07, 0xcb, 0x06, 0x49, 0x07, + 0x15, 0x09, 0x76, 0x0b, 0xc1, 0x0d, 0x81, 0x0f, 0x2f, 0x10, 0x9b, 0x10, 0x98, 0x10, 0xf6, 0x0f, + 0xec, 0x0f, 0x97, 0x0e, 0xb0, 0x0b, 0x67, 0x09, 0xb2, 0x07, 0xa3, 0x06, 0xab, 0x06, 0x43, 0x07, + 0x3e, 0x06, 0xd7, 0x03, 0x37, 0x01, 0xbc, 0xfe, 0x2e, 0xfd, 0x17, 0xfc, 0xc3, 0xfa, 0xe4, 0xf8, + 0x40, 0xf7, 0x5c, 0xf5, 0x0c, 0xf5, 0xfc, 0xf5, 0xcc, 0xf6, 0xa6, 0xf7, 0x9b, 0xf6, 0xdb, 0xf4, + 0xc6, 0xf3, 0x85, 0xf3, 0xad, 0xf4, 0x6d, 0xf6, 0x2c, 0xf7, 0x33, 0xf8, 0xae, 0xf9, 0x72, 0xfb, + 0x70, 0xfd, 0xf4, 0xfd, 0x40, 0xfe, 0x1b, 0xfe, 0x44, 0xfd, 0x4c, 0xfd, 0xcf, 0xfd, 0x7b, 0xfe, + 0x78, 0x00, 0xeb, 0x01, 0xc3, 0x02, 0x0f, 0x03, 0xbd, 0x01, 0xf9, 0x01, 0x38, 0x03, 0x59, 0x03, + 0xfd, 0x02, 0x34, 0x02, 0xc6, 0x00, 0x21, 0x00, 0x4f, 0x00, 0xbc, 0x01, 0xad, 0x03, 0x75, 0x05, + 0x6f, 0x06, 0xf4, 0x05, 0x58, 0x06, 0x40, 0x07, 0x68, 0x08, 0xa6, 0x09, 0x73, 0x09, 0x20, 0x09, + 0x2e, 0x08, 0xdb, 0x06, 0x7c, 0x05, 0xe5, 0x03, 0x89, 0x02, 0x10, 0x01, 0xe7, 0xfe, 0xef, 0xfd, + 0x61, 0xfd, 0x42, 0xfc, 0x52, 0xfa, 0x5f, 0xf8, 0xf1, 0xf5, 0xac, 0xf4, 0xbc, 0xf3, 0x22, 0xf4, + 0xfc, 0xf4, 0x50, 0xf5, 0x9c, 0xf5, 0xd5, 0xf5, 0x82, 0xf5, 0x47, 0xf6, 0x62, 0xf8, 0xa3, 0xf9, + 0x70, 0xfa, 0x9e, 0xfb, 0x40, 0xfd, 0x9a, 0xfe, 0x85, 0xff, 0xec, 0xff, 0x10, 0x01, 0x0b, 0x01, + 0xad, 0xff, 0x70, 0xfe, 0xab, 0xfd, 0xa6, 0xfd, 0x3b, 0xfe, 0x0e, 0xff, 0x66, 0xff, 0x45, 0xff, + 0xc4, 0xff, 0x60, 0x01, 0x0b, 0x03, 0x0b, 0x04, 0xa0, 0x04, 0xcb, 0x03, 0x8c, 0x01, 0x8b, 0x00, + 0x22, 0x02, 0x16, 0x04, 0x96, 0x04, 0x24, 0x05, 0x11, 0x04, 0x4f, 0x03, 0xce, 0x02, 0x88, 0x03, + 0xf3, 0x04, 0x3b, 0x05, 0xa2, 0x04, 0x70, 0x02, 0x22, 0xff, 0xe3, 0xfd, 0xa6, 0xfd, 0xc7, 0xfd, + 0xb6, 0xfe, 0x58, 0xff, 0x9e, 0xff, 0xf3, 0x00, 0x3b, 0x02, 0x91, 0x03, 0x74, 0x05, 0x57, 0x06, + 0x99, 0x06, 0x85, 0x06, 0x35, 0x07, 0xe3, 0x08, 0x24, 0x0b, 0x63, 0x0d, 0xb4, 0x0d, 0x25, 0x0d, + 0xc1, 0x0a, 0xce, 0x08, 0x94, 0x07, 0x45, 0x08, 0x95, 0x08, 0xc3, 0x07, 0x4a, 0x06, 0xb2, 0x05, + 0xac, 0x05, 0xe3, 0x04, 0x25, 0x03, 0x52, 0x00, 0x94, 0xfe, 0xa4, 0xfd, 0xf7, 0xfc, 0x35, 0xfd, + 0x11, 0xfd, 0x45, 0xfc, 0xa2, 0xfa, 0x71, 0xf9, 0x3e, 0xf9, 0x2b, 0xfa, 0xe0, 0xfa, 0xfe, 0xfb, + 0x33, 0xfd, 0xea, 0xfd, 0x38, 0xfe, 0x49, 0xfe, 0x70, 0xfd, 0x4f, 0xfd, 0x85, 0xfd, 0x62, 0xfd, + 0x5f, 0xfe, 0x78, 0xfe, 0x2a, 0xfe, 0x86, 0xfe, 0xe9, 0xfe, 0x6c, 0xfe, 0x66, 0xfe, 0x65, 0xfd, + 0x7c, 0xfc, 0x06, 0xfc, 0x7f, 0xfc, 0xc4, 0xfc, 0xe1, 0xfb, 0x36, 0xfc, 0xd2, 0xfb, 0xfc, 0xfa, + 0x6a, 0xfa, 0x02, 0xfb, 0x1c, 0xfb, 0xcc, 0xf9, 0xdf, 0xf7, 0xac, 0xf6, 0x10, 0xf6, 0xf9, 0xf6, + 0x38, 0xf9, 0xa1, 0xfa, 0xb6, 0xfb, 0x87, 0xfc, 0x14, 0xfd, 0x57, 0xfe, 0x02, 0xff, 0x7d, 0xff, + 0xe7, 0xff, 0xe4, 0xff, 0xae, 0xff, 0xf4, 0xfe, 0x81, 0xfd, 0xa5, 0xfd, 0xfa, 0xfd, 0x6d, 0xfe, + 0xdb, 0xfe, 0x8a, 0xfe, 0x8e, 0xfc, 0xda, 0xfa, 0x23, 0xf9, 0x9f, 0xf8, 0x29, 0xf8, 0x6d, 0xf8, + 0xf8, 0xf9, 0xb7, 0xfb, 0x3c, 0xfd, 0x8d, 0xfe, 0x5f, 0x00, 0xcb, 0x00, 0xff, 0x00, 0x11, 0x01, + 0x86, 0x00, 0x5f, 0x01, 0x2c, 0x04, 0xa4, 0x07, 0xb3, 0x09, 0x79, 0x0a, 0x5d, 0x09, 0x14, 0x09, + 0xe2, 0x08, 0x51, 0x08, 0xa8, 0x07, 0x3e, 0x07, 0x12, 0x07, 0x05, 0x07, 0xed, 0x06, 0x2f, 0x07, + 0x3e, 0x07, 0x5f, 0x06, 0xf6, 0x04, 0x47, 0x03, 0xf1, 0x01, 0xb2, 0x01, 0x20, 0x02, 0xb9, 0x02, + 0xa7, 0x03, 0x3c, 0x03, 0x2c, 0x02, 0xff, 0xff, 0x70, 0xfe, 0xe6, 0xfd, 0x0d, 0xfe, 0x66, 0xff, + 0x23, 0x00, 0x39, 0x00, 0xc8, 0xff, 0xb9, 0xfe, 0x54, 0xfc, 0x59, 0xfa, 0x11, 0xfa, 0x48, 0xf9, + 0x13, 0xf9, 0xd6, 0xf9, 0xa7, 0xfa, 0xd4, 0xfa, 0xea, 0xfb, 0xab, 0xfd, 0xf1, 0xff, 0x1a, 0x02, + 0x65, 0x03, 0xd3, 0x03, 0x94, 0x04, 0x0a, 0x06, 0x9d, 0x07, 0x9b, 0x09, 0xcc, 0x09, 0xca, 0x0a, + 0x49, 0x0b, 0xef, 0x0a, 0xcb, 0x09, 0xb1, 0x08, 0x24, 0x07, 0x14, 0x05, 0x5e, 0x02, 0xaf, 0x00, + 0x07, 0x00, 0x9c, 0xff, 0x0f, 0x00, 0x2a, 0x00, 0x1e, 0xff, 0xcd, 0xfc, 0xda, 0xfa, 0x55, 0xf8, + 0x7a, 0xf6, 0xae, 0xf5, 0x5d, 0xf5, 0xc7, 0xf5, 0x45, 0xf5, 0x40, 0xf5, 0x65, 0xf4, 0xe8, 0xf4, + 0xf3, 0xf6, 0x32, 0xf9, 0x8c, 0xfa, 0x3c, 0xfa, 0x9e, 0xf9, 0xe6, 0xf8, 0xb8, 0xf9, 0xe4, 0xfb, + 0x86, 0xfd, 0x56, 0xfe, 0x0b, 0x00, 0x02, 0x01, 0x4a, 0x02, 0x42, 0x02, 0x04, 0x01, 0x64, 0x00, + 0x5f, 0x00, 0x5b, 0x01, 0xcd, 0x02, 0x8d, 0x04, 0x9c, 0x05, 0x27, 0x07, 0x9f, 0x06, 0x4a, 0x06, + 0x58, 0x07, 0x08, 0x07, 0x66, 0x07, 0xd9, 0x07, 0xe9, 0x07, 0x9e, 0x08, 0x89, 0x08, 0xec, 0x08, + 0x25, 0x09, 0x43, 0x08, 0xbd, 0x07, 0xc5, 0x07, 0x73, 0x07, 0xc7, 0x07, 0x9f, 0x09, 0xf7, 0x0a, + 0x55, 0x0b, 0x11, 0x0a, 0xc5, 0x08, 0x8d, 0x06, 0xf6, 0x02, 0x34, 0x02, 0x69, 0x01, 0xe1, 0x00, + 0x14, 0x00, 0x99, 0xfe, 0xe8, 0xfc, 0xee, 0xf9, 0xc8, 0xf7, 0x41, 0xf6, 0x85, 0xf4, 0xd5, 0xf2, + 0x2a, 0xf1, 0x93, 0xef, 0xc0, 0xf0, 0x38, 0xf2, 0x13, 0xf4, 0x07, 0xf6, 0x39, 0xf5, 0x8d, 0xf4, + 0xb6, 0xf3, 0xdd, 0xf4, 0xf6, 0xf5, 0x85, 0xf7, 0x8d, 0xf8, 0xea, 0xf9, 0x40, 0xfa, 0x32, 0xfa, + 0x00, 0xfc, 0xbd, 0xfc, 0x6e, 0xfd, 0x95, 0xfd, 0x2c, 0xfd, 0xd3, 0xfc, 0x02, 0xfc, 0x9e, 0xfb, + 0xba, 0xfc, 0x2c, 0xfe, 0xfe, 0xff, 0x09, 0x02, 0x7c, 0x03, 0x1f, 0x03, 0x7a, 0x03, 0x99, 0x03, + 0x85, 0x04, 0x02, 0x06, 0x66, 0x06, 0x02, 0x06, 0x25, 0x04, 0x6b, 0x03, 0x91, 0x03, 0x07, 0x04, + 0x7f, 0x04, 0x89, 0x04, 0xb1, 0x04, 0xbc, 0x03, 0x43, 0x02, 0x10, 0x01, 0xda, 0xfe, 0x00, 0xfd, + 0x9e, 0xfc, 0xcb, 0xfb, 0x8f, 0xfc, 0x23, 0xfd, 0x6d, 0xfd, 0x95, 0xfe, 0x40, 0x00, 0x8f, 0x00, + 0xff, 0x00, 0x9f, 0x01, 0x03, 0x02, 0x09, 0x04, 0xe4, 0x05, 0xd2, 0x07, 0x8c, 0x08, 0xfe, 0x08, + 0x29, 0x0a, 0x27, 0x0a, 0x6f, 0x09, 0x6a, 0x09, 0x12, 0x09, 0x42, 0x08, 0x78, 0x08, 0x49, 0x07, + 0x18, 0x05, 0x5a, 0x02, 0xcf, 0x00, 0x5a, 0x00, 0x31, 0xff, 0x2f, 0xff, 0x71, 0xff, 0x11, 0xff, + 0xe0, 0xfd, 0x84, 0xfc, 0xd4, 0xfa, 0xd3, 0xf9, 0xc1, 0xf8, 0xe1, 0xf7, 0xc3, 0xf8, 0xd8, 0xf9, + 0x36, 0xfc, 0x92, 0xfd, 0x1b, 0xfe, 0x8a, 0xfe, 0x6a, 0xfe, 0x09, 0x00, 0x27, 0x00, 0x11, 0x00, + 0xc2, 0x00, 0x78, 0xff, 0x2e, 0xff, 0xa6, 0xff, 0x69, 0x00, 0x58, 0x00, 0x7a, 0x00, 0xb2, 0x00, + 0xeb, 0x00, 0xc5, 0xff, 0x24, 0xff, 0x66, 0xff, 0x80, 0xfe, 0x8e, 0xfe, 0x86, 0xff, 0x9f, 0xff, + 0xb9, 0xff, 0x51, 0x01, 0x32, 0x01, 0xde, 0xff, 0xe0, 0xfe, 0xc7, 0xfe, 0xe0, 0xfe, 0x37, 0xfe, + 0x5b, 0xfe, 0x2f, 0xfe, 0x48, 0xff, 0x4b, 0x00, 0x55, 0x01, 0x47, 0x02, 0x5f, 0x03, 0xa3, 0x05, + 0x24, 0x07, 0x69, 0x07, 0x87, 0x06, 0x22, 0x05, 0xa4, 0x03, 0x99, 0x02, 0xfa, 0x01, 0x51, 0x02, + 0x3f, 0x03, 0xd2, 0x03, 0x65, 0x03, 0x53, 0x02, 0x9e, 0x00, 0x67, 0xff, 0x02, 0xfe, 0x9a, 0xfc, + 0x0d, 0xfc, 0x7c, 0xfb, 0x52, 0xfc, 0x8a, 0xfe, 0x9a, 0xff, 0x3a, 0x01, 0x36, 0x02, 0x4e, 0x01, + 0xde, 0x00, 0x1c, 0x00, 0xc1, 0xff, 0xb1, 0xff, 0xad, 0x00, 0x81, 0x01, 0x0b, 0x03, 0x28, 0x04, + 0x6a, 0x02, 0xec, 0x00, 0x30, 0x00, 0x5a, 0x00, 0xab, 0x00, 0x83, 0x00, 0xb7, 0x00, 0x33, 0x00, + 0x27, 0xff, 0xe2, 0xfd, 0x70, 0xfd, 0x1e, 0xfd, 0x3a, 0xfc, 0x4a, 0xfb, 0x1c, 0xfb, 0xa2, 0xfc, + 0xee, 0xfd, 0x02, 0xfe, 0x7c, 0xfb, 0x41, 0xfa, 0xd4, 0xf9, 0xd1, 0xf9, 0x59, 0xfa, 0x65, 0xfa, + 0x48, 0xfa, 0xeb, 0xf9, 0x79, 0xf9, 0xc6, 0xf9, 0x99, 0xf9, 0xf3, 0xf8, 0x02, 0xf8, 0x8f, 0xf5, + 0x9f, 0xf5, 0x60, 0xf5, 0x7b, 0xf3, 0xb4, 0xf3, 0xf2, 0xf4, 0x1e, 0xf7, 0xf3, 0xf9, 0x59, 0xfc, + 0x8a, 0xfe, 0x7f, 0x00, 0x1b, 0x01, 0xd3, 0x02, 0x4f, 0x04, 0xb1, 0x06, 0x4f, 0x08, 0xdb, 0x0b, + 0xb8, 0x15, 0x78, 0x17, 0xa2, 0x07, 0xed, 0xfc, 0x9a, 0x0a, 0xf9, 0x1b, 0x55, 0x15, 0x64, 0x04, + 0x83, 0x02, 0xef, 0x01, 0x2b, 0x01, 0x04, 0x0b, 0x9e, 0x0e, 0xab, 0xfd, 0xd1, 0xee, 0x8d, 0xf9, + 0x46, 0x0b, 0xc2, 0x09, 0x3d, 0xfd, 0x52, 0xf3, 0x78, 0xee, 0x1e, 0xf4, 0xd2, 0xfe, 0x6b, 0x01, + 0xc8, 0xfa, 0xcd, 0xf3, 0x1c, 0xf2, 0x42, 0xfa, 0xf4, 0x05, 0x10, 0x07, 0x67, 0xfd, 0x70, 0xf7, + 0x28, 0xfd, 0x99, 0x04, 0x03, 0x07, 0xd2, 0x06, 0x4e, 0x03, 0xc6, 0xff, 0x72, 0x03, 0x68, 0x09, + 0x6e, 0x06, 0x5a, 0x07, 0x04, 0x10, 0x6f, 0x0f, 0x93, 0x02, 0x5b, 0xfd, 0x20, 0x04, 0xb7, 0x06, + 0x13, 0x05, 0xbb, 0x0a, 0x01, 0x0e, 0x9b, 0x03, 0x5f, 0xfb, 0xfa, 0xfe, 0xf7, 0x04, 0xc1, 0x07, + 0xb9, 0x07, 0x2d, 0x03, 0xc1, 0xfd, 0x16, 0xfd, 0xde, 0xfa, 0x6a, 0xf9, 0x9d, 0xfd, 0x9f, 0x02, + 0x0a, 0x00, 0x9a, 0xfd, 0xc9, 0x00, 0x87, 0xff, 0xa8, 0xf9, 0x5d, 0xf9, 0xfa, 0xfb, 0xe7, 0xfb, + 0xdc, 0xfc, 0x07, 0xff, 0x8b, 0xfd, 0xfe, 0xfb, 0x7d, 0xfd, 0x09, 0xff, 0xf8, 0xfe, 0xcf, 0xfd, + 0x62, 0xfa, 0x1f, 0xf5, 0x6e, 0xf5, 0x76, 0xf9, 0xc1, 0xf8, 0xaf, 0xf3, 0x2e, 0xf5, 0x3a, 0xfa, + 0xda, 0xfb, 0xad, 0xfa, 0x77, 0xf9, 0xff, 0xf4, 0x4a, 0xf0, 0x9d, 0xf2, 0x72, 0xf6, 0xcd, 0xf8, + 0x27, 0xf8, 0x8f, 0xf5, 0xce, 0xf4, 0x6d, 0xf7, 0x0f, 0xfb, 0x9b, 0xfa, 0x51, 0xf9, 0x86, 0xfa, + 0xee, 0xfa, 0x14, 0xfb, 0xf6, 0xfd, 0x44, 0x01, 0x72, 0x01, 0xcb, 0x02, 0x00, 0x07, 0x0a, 0x0a, + 0x69, 0x0b, 0x08, 0x0e, 0x4f, 0x10, 0x20, 0x10, 0x97, 0x10, 0xaa, 0x11, 0x16, 0x10, 0x69, 0x0d, + 0x03, 0x0d, 0xd8, 0x0f, 0x62, 0x10, 0x38, 0x10, 0xc2, 0x0f, 0x5b, 0x0c, 0xfa, 0x08, 0x08, 0x08, + 0x66, 0x08, 0x6e, 0x06, 0xb2, 0x04, 0x74, 0x02, 0xa5, 0xff, 0x60, 0xff, 0x62, 0x03, 0x9a, 0x04, + 0x54, 0x00, 0x67, 0xff, 0x0e, 0x03, 0xa5, 0x04, 0x5e, 0x06, 0x14, 0x08, 0x7b, 0x06, 0xf1, 0x01, + 0x3e, 0x03, 0x97, 0x09, 0x20, 0x0d, 0x6f, 0x0c, 0x7d, 0x07, 0xfa, 0x05, 0x24, 0x09, 0x4e, 0x0b, + 0xa6, 0x0a, 0x5b, 0x07, 0xf1, 0x01, 0x5e, 0xfb, 0x6f, 0xf7, 0x48, 0xf9, 0x33, 0xfb, 0x15, 0xf9, + 0x5e, 0xf6, 0xfe, 0xf3, 0xec, 0xf1, 0x09, 0xf4, 0x35, 0xf5, 0xbc, 0xef, 0x74, 0xec, 0xbd, 0xeb, + 0x94, 0xef, 0xc5, 0xfb, 0xce, 0x03, 0x75, 0xff, 0xb6, 0xf7, 0xea, 0xf6, 0x4f, 0xfc, 0x90, 0x01, + 0x95, 0x06, 0x33, 0x0a, 0x2c, 0x04, 0x0a, 0xfb, 0x1f, 0xfc, 0xa9, 0xfe, 0x10, 0xff, 0xa1, 0x00, + 0x7d, 0xff, 0x92, 0xfc, 0x23, 0xf9, 0xae, 0xf6, 0xb8, 0xf1, 0xdb, 0xeb, 0x68, 0xec, 0xf0, 0xef, + 0x00, 0xf1, 0xce, 0xef, 0xbf, 0xec, 0xdc, 0xe5, 0xc2, 0xe2, 0xb3, 0xe5, 0x74, 0xe9, 0x36, 0xed, + 0x14, 0xed, 0xa5, 0xea, 0x7a, 0xe8, 0xad, 0xe9, 0x67, 0xed, 0x48, 0xef, 0x1a, 0xf3, 0x2f, 0xf8, + 0x21, 0xfc, 0x0d, 0xff, 0x51, 0x02, 0xe2, 0x05, 0x74, 0x06, 0x2d, 0x08, 0xc6, 0x0c, 0xd0, 0x0e, + 0x4c, 0x0f, 0x82, 0x0f, 0xfb, 0x0f, 0x4a, 0x11, 0x48, 0x15, 0x0c, 0x17, 0x84, 0x14, 0x32, 0x11, + 0x17, 0x10, 0x7a, 0x0d, 0x69, 0x0b, 0xf9, 0x0c, 0x69, 0x0c, 0x7b, 0x0b, 0x90, 0x0c, 0x45, 0x0d, + 0x1c, 0x0c, 0xa8, 0x08, 0x7d, 0x05, 0x10, 0x04, 0x0e, 0x04, 0xec, 0x04, 0xdc, 0x04, 0x5f, 0x01, + 0x3a, 0xff, 0x11, 0x00, 0xfe, 0x00, 0x0e, 0x02, 0x52, 0x04, 0xbc, 0x04, 0x8f, 0x04, 0xdc, 0x05, + 0xf3, 0x05, 0x60, 0x03, 0xbe, 0x03, 0xf6, 0x04, 0x23, 0x03, 0x68, 0x01, 0x2c, 0x03, 0x26, 0x07, + 0x25, 0x05, 0xe4, 0x05, 0xf3, 0x0f, 0x5e, 0x14, 0x6d, 0x0f, 0xe1, 0x08, 0xf6, 0x08, 0xa5, 0x0e, + 0xe7, 0x10, 0x31, 0x14, 0xe8, 0x14, 0x29, 0x10, 0xfb, 0x0d, 0x01, 0x10, 0x39, 0x13, 0x0d, 0x12, + 0xc2, 0x0c, 0x83, 0x05, 0x34, 0x06, 0xa9, 0x0a, 0x7f, 0xff, 0xc6, 0xef, 0x20, 0xec, 0x01, 0xf4, + 0x43, 0xf8, 0xfc, 0xf5, 0x42, 0xf4, 0x0f, 0xef, 0xe8, 0xe5, 0xdc, 0xe4, 0xd5, 0xed, 0x86, 0xf3, + 0x0f, 0xf1, 0xa0, 0xeb, 0x6c, 0xe9, 0x63, 0xed, 0x41, 0xf2, 0x21, 0xf1, 0xf0, 0xed, 0x85, 0xee, + 0xb0, 0xf2, 0x53, 0xf5, 0x4f, 0xf5, 0xdf, 0xf4, 0x9c, 0xf3, 0x61, 0xf5, 0x2e, 0xfa, 0xf3, 0xfa, + 0xa9, 0xf9, 0x4d, 0xfe, 0xe0, 0x02, 0x70, 0x01, 0x16, 0x00, 0xa1, 0x01, 0x7d, 0x01, 0x2f, 0xfd, + 0xaf, 0xfc, 0x97, 0xff, 0x49, 0x00, 0xdb, 0xff, 0xb5, 0xff, 0xad, 0x00, 0x4c, 0x01, 0xe5, 0xfe, + 0x04, 0xfd, 0x09, 0xfc, 0x73, 0xfd, 0xec, 0xfe, 0x6e, 0xfc, 0xc4, 0xfb, 0xa6, 0xfc, 0x74, 0xfc, + 0xf5, 0xfa, 0x02, 0xfc, 0xd5, 0xfd, 0x65, 0xfd, 0xe9, 0xfb, 0x79, 0xfd, 0x22, 0x01, 0xae, 0x03, + 0x5d, 0x06, 0x67, 0x06, 0x3a, 0x03, 0xfb, 0x04, 0x65, 0x0c, 0x5f, 0x0f, 0x6b, 0x0e, 0xe8, 0x0d, + 0x60, 0x0e, 0xe9, 0x0d, 0x1f, 0x0f, 0xb3, 0x0e, 0x21, 0x0c, 0x77, 0x07, 0x40, 0x03, 0xb5, 0x01, + 0xa3, 0x03, 0x04, 0x08, 0xf1, 0x07, 0xdb, 0x04, 0x69, 0x06, 0xa1, 0x0a, 0xaf, 0x08, 0x35, 0x04, + 0xd7, 0x01, 0x71, 0x01, 0xb6, 0x02, 0x3b, 0x06, 0x8a, 0x0a, 0x93, 0x0b, 0xfb, 0x09, 0xf7, 0x06, + 0x6f, 0x06, 0xd5, 0x07, 0xc3, 0x07, 0xa3, 0x02, 0x48, 0xfc, 0x0d, 0xfc, 0x0f, 0xfe, 0xe1, 0xfc, + 0xb8, 0xfc, 0x3b, 0xfd, 0x9a, 0xfb, 0xcc, 0xf7, 0x84, 0xf6, 0xc6, 0xf6, 0x6b, 0xf2, 0x69, 0xeb, + 0x1b, 0xe8, 0x8f, 0xe9, 0x87, 0xeb, 0x3b, 0xeb, 0x4d, 0xe8, 0xeb, 0xe7, 0x4b, 0xe9, 0x2a, 0xe9, + 0x06, 0xeb, 0x0a, 0xee, 0x5d, 0xf0, 0xa6, 0xee, 0x5a, 0xed, 0x73, 0xf0, 0x12, 0xf5, 0xd1, 0xf8, + 0xe3, 0xfa, 0x3b, 0xfd, 0xb9, 0x01, 0x21, 0x08, 0x74, 0x0c, 0x43, 0x0d, 0x3a, 0x0d, 0xee, 0x0b, + 0x99, 0x0b, 0x9b, 0x0d, 0x96, 0x10, 0x63, 0x11, 0x81, 0x0f, 0xd1, 0x0d, 0x5b, 0x0e, 0x27, 0x0e, + 0x74, 0x0b, 0xf5, 0x09, 0x25, 0x08, 0xe1, 0x06, 0x85, 0x06, 0xb3, 0x05, 0x03, 0x03, 0xe1, 0x00, + 0x72, 0x00, 0x23, 0x00, 0x85, 0x00, 0xc4, 0xff, 0x82, 0xff, 0x51, 0x00, 0xb4, 0x00, 0xe5, 0x02, + 0xf6, 0x03, 0x0d, 0x04, 0xcb, 0x03, 0x8f, 0x05, 0x59, 0x07, 0x1b, 0x08, 0xb3, 0x08, 0x77, 0x09, + 0x87, 0x0a, 0x0c, 0x09, 0x5d, 0x05, 0x84, 0x03, 0xef, 0xff, 0xdd, 0xfe, 0x57, 0xfe, 0x20, 0xfc, + 0xbe, 0xfc, 0xa3, 0xfe, 0x72, 0xfd, 0xfc, 0xfb, 0x2f, 0xff, 0x88, 0xff, 0xd0, 0xfc, 0x4e, 0xfb, + 0x9c, 0xfc, 0x62, 0xff, 0x3a, 0x00, 0xc1, 0x02, 0xd3, 0x05, 0x8c, 0x06, 0x45, 0x09, 0xb9, 0x0e, + 0x08, 0x11, 0x21, 0x13, 0xf8, 0x0f, 0xd3, 0x09, 0x8c, 0x06, 0x4c, 0x03, 0x4b, 0x04, 0xd5, 0x0a, + 0x96, 0x09, 0x95, 0x00, 0x7a, 0xfa, 0xc8, 0xfb, 0xa4, 0xfa, 0xc1, 0xf5, 0x1b, 0xf6, 0x48, 0xf6, + 0x96, 0xef, 0x75, 0xe9, 0x71, 0xea, 0xcc, 0xeb, 0xdb, 0xe8, 0xc5, 0xe6, 0x83, 0xe5, 0x05, 0xe6, + 0x08, 0xea, 0xef, 0xeb, 0x53, 0xe9, 0x61, 0xe8, 0x5f, 0xe9, 0xa7, 0xea, 0x6e, 0xeb, 0x0f, 0xf0, + 0xbe, 0xf3, 0xe4, 0xf1, 0x53, 0xf3, 0x69, 0xfa, 0x97, 0xff, 0x9f, 0x01, 0x74, 0x02, 0x08, 0x04, + 0x92, 0x03, 0x6c, 0x03, 0xa0, 0x05, 0xd0, 0x07, 0x91, 0x0b, 0x3a, 0x0c, 0x1b, 0x09, 0x45, 0x0a, + 0xa4, 0x0a, 0xd0, 0x07, 0xad, 0x06, 0x02, 0x07, 0x99, 0x08, 0x19, 0x07, 0xb9, 0x04, 0xa2, 0x06, + 0x81, 0x07, 0x4f, 0x05, 0x71, 0x04, 0x22, 0x06, 0xc8, 0x06, 0x71, 0x04, 0x36, 0x00, 0xbe, 0x00, + 0xb5, 0x03, 0x43, 0x01, 0x43, 0x01, 0xa4, 0x02, 0x06, 0x01, 0xd1, 0x00, 0xae, 0x02, 0x62, 0x07, + 0x91, 0x0a, 0x0f, 0x09, 0x71, 0x07, 0x1e, 0x07, 0x27, 0x06, 0x3a, 0x05, 0x6c, 0x05, 0xf9, 0x07, + 0x0e, 0x09, 0xbc, 0x05, 0xa0, 0x05, 0x9f, 0x08, 0x83, 0x09, 0xb1, 0x09, 0x36, 0x0b, 0x2e, 0x0c, + 0xc2, 0x0b, 0xa0, 0x09, 0x9c, 0x08, 0x5f, 0x07, 0xc3, 0x08, 0x97, 0x0b, 0xc5, 0x0b, 0x29, 0x0d, + 0xb0, 0x0e, 0x97, 0x0f, 0x38, 0x10, 0xaa, 0x0d, 0x71, 0x09, 0x27, 0x06, 0x82, 0x06, 0xfd, 0x09, + 0x48, 0x0a, 0xe6, 0x06, 0x86, 0x01, 0x35, 0xff, 0xd5, 0x03, 0x23, 0x07, 0x6c, 0x04, 0xa0, 0x01, + 0x8b, 0xfd, 0x8a, 0xfa, 0x81, 0xfc, 0xf7, 0xfc, 0x75, 0xf6, 0x8f, 0xf2, 0x5a, 0xf4, 0x7e, 0xf2, + 0xe7, 0xef, 0x16, 0xf2, 0xba, 0xef, 0x46, 0xe7, 0x2c, 0xe5, 0x1e, 0xeb, 0xbc, 0xea, 0x96, 0xe4, + 0x44, 0xe2, 0x80, 0xe4, 0x49, 0xe8, 0x65, 0xee, 0x61, 0xf3, 0x39, 0xf3, 0x30, 0xf0, 0x60, 0xee, + 0xf1, 0xef, 0x75, 0xf4, 0x1e, 0xf8, 0x7a, 0xf8, 0xc6, 0xf9, 0xc0, 0xfd, 0x31, 0x00, 0xd1, 0x00, + 0x42, 0x03, 0x30, 0x05, 0xfa, 0x06, 0x15, 0x08, 0xc9, 0x0a, 0xe2, 0x0b, 0x05, 0x07, 0x1f, 0x04, + 0x19, 0x05, 0xf4, 0x05, 0x3e, 0x05, 0x2b, 0x04, 0x98, 0x02, 0x97, 0x01, 0x71, 0x01, 0x60, 0x02, + 0xde, 0x02, 0xa1, 0x00, 0xa7, 0x00, 0x59, 0x00, 0xfb, 0xff, 0x7c, 0x02, 0x70, 0x03, 0xfc, 0xff, + 0x53, 0x01, 0x37, 0x07, 0xe3, 0x09, 0x12, 0x08, 0xd2, 0x04, 0x33, 0x02, 0xdb, 0x00, 0x11, 0x01, + 0xcd, 0x02, 0xac, 0x02, 0x02, 0x00, 0xa8, 0xff, 0xb6, 0xff, 0xeb, 0x00, 0xb1, 0x02, 0xdf, 0x01, + 0xb8, 0x01, 0xaa, 0x00, 0xee, 0xfe, 0x7a, 0x00, 0x41, 0x03, 0xea, 0x05, 0xe5, 0x07, 0xf2, 0x09, + 0xdf, 0x0b, 0x5a, 0x0a, 0xb7, 0x08, 0xb2, 0x0a, 0x40, 0x0b, 0x4e, 0x0c, 0x0d, 0x09, 0x5a, 0x03, + 0x4d, 0x04, 0x94, 0x06, 0x0e, 0x08, 0x87, 0x08, 0x21, 0x07, 0x28, 0x03, 0x68, 0x00, 0xf3, 0xfe, + 0x2c, 0xfa, 0x66, 0xf6, 0x8f, 0xf4, 0xfe, 0xf1, 0x73, 0xef, 0x8a, 0xee, 0x8f, 0xeb, 0xf5, 0xe6, + 0xdf, 0xe6, 0x0a, 0xeb, 0xb7, 0xea, 0x64, 0xea, 0x3a, 0xee, 0xda, 0xeb, 0x53, 0xe8, 0x56, 0xe9, + 0x60, 0xea, 0x34, 0xed, 0x2c, 0xf2, 0xf1, 0xf8, 0x36, 0xfc, 0x28, 0xfd, 0x2e, 0xff, 0x32, 0x00, + 0x5e, 0x01, 0xc2, 0x06, 0x56, 0x0a, 0x19, 0x0a, 0xa6, 0x09, 0x99, 0x09, 0x10, 0x09, 0x13, 0x0a, + 0x14, 0x0d, 0x88, 0x0c, 0x4e, 0x0b, 0x00, 0x0d, 0x6c, 0x0f, 0x90, 0x0f, 0x52, 0x0e, 0xa3, 0x0d, + 0x84, 0x0b, 0x4e, 0x0a, 0x36, 0x0b, 0x2b, 0x0b, 0x27, 0x09, 0x98, 0x08, 0x67, 0x09, 0x6e, 0x0a, + 0xfc, 0x0b, 0x0c, 0x0e, 0x5d, 0x0d, 0xd7, 0x09, 0x8b, 0x09, 0x67, 0x0b, 0xa9, 0x0c, 0x02, 0x11, + 0x55, 0x12, 0x90, 0x0e, 0xaa, 0x0a, 0x7a, 0x09, 0xac, 0x0a, 0x36, 0x08, 0xe0, 0x03, 0x6e, 0x01, + 0x58, 0xfe, 0x34, 0xfc, 0x0b, 0xfd, 0x8e, 0x00, 0x61, 0x02, 0x1f, 0x01, 0xf0, 0xfd, 0x47, 0xfc, + 0x73, 0xfd, 0x46, 0xfc, 0x05, 0xfa, 0xaf, 0xfa, 0x7c, 0xfb, 0x36, 0xfc, 0x61, 0xff, 0xa7, 0x03, + 0x28, 0x06, 0xae, 0x05, 0x00, 0x06, 0x6f, 0x08, 0x46, 0x08, 0x1a, 0x08, 0x49, 0x09, 0xd0, 0x07, + 0x37, 0x09, 0x31, 0x09, 0x2a, 0x05, 0x72, 0x06, 0x52, 0x08, 0x2f, 0x02, 0x5c, 0x01, 0xd8, 0x06, + 0x67, 0x05, 0x01, 0xff, 0x14, 0xfd, 0x78, 0xfd, 0x20, 0xf8, 0xa4, 0xf1, 0xb0, 0xf3, 0x9d, 0xf5, + 0x22, 0xf0, 0x97, 0xed, 0x88, 0xed, 0x87, 0xea, 0xf0, 0xeb, 0x06, 0xec, 0xcf, 0xe6, 0xbc, 0xe4, + 0x05, 0xe5, 0x80, 0xe3, 0xc9, 0xe0, 0xbc, 0xe3, 0x4a, 0xe7, 0x1e, 0xe4, 0xcb, 0xe4, 0x3b, 0xed, + 0x41, 0xef, 0x99, 0xeb, 0x6d, 0xee, 0x90, 0xf2, 0xb2, 0xf5, 0x9d, 0xf9, 0xc9, 0xfd, 0x0d, 0xfe, + 0x25, 0xfd, 0xfa, 0xfe, 0x24, 0x01, 0xd3, 0x02, 0xa7, 0x07, 0x31, 0x0b, 0x7f, 0x08, 0xc0, 0x06, + 0xae, 0x08, 0xf0, 0x07, 0xe8, 0x07, 0x4d, 0x08, 0x65, 0x07, 0xa8, 0x07, 0xdb, 0x07, 0xe1, 0x05, + 0xf0, 0x03, 0x63, 0x01, 0xdb, 0xfe, 0x48, 0xfd, 0xff, 0xfb, 0xb9, 0xfc, 0x65, 0xfc, 0xea, 0xf8, + 0x16, 0xfa, 0x66, 0xfd, 0xc8, 0xfe, 0x6a, 0x01, 0xd1, 0x02, 0x8a, 0x02, 0x91, 0xfe, 0x4f, 0xfb, + 0xb5, 0xfe, 0x22, 0x01, 0x83, 0x00, 0xfe, 0xfd, 0xa8, 0xfc, 0x80, 0x01, 0xac, 0x07, 0xe3, 0x09, + 0xd3, 0x07, 0x60, 0x04, 0xdf, 0x01, 0x61, 0x02, 0x9f, 0x05, 0xcc, 0x06, 0xc5, 0x04, 0x76, 0x01, + 0x78, 0x03, 0xa2, 0x09, 0x33, 0x0d, 0xd6, 0x0b, 0x09, 0x08, 0x1e, 0x08, 0xb2, 0x0a, 0xc2, 0x0e, + 0x16, 0x12, 0x39, 0x12, 0x8e, 0x0c, 0x43, 0x09, 0xb7, 0x14, 0xd1, 0x19, 0x7b, 0x19, 0xfc, 0x16, + 0xc3, 0x14, 0xb2, 0x1a, 0x20, 0x1d, 0x86, 0x17, 0x7d, 0x14, 0xaa, 0x0e, 0x3d, 0x0f, 0x6b, 0x0d, + 0x53, 0x08, 0xac, 0x09, 0x36, 0x05, 0xba, 0xfd, 0x9f, 0xfc, 0x5d, 0xf7, 0xbd, 0xf1, 0x9c, 0xec, + 0xc3, 0xe4, 0x98, 0xe2, 0xe7, 0xe3, 0x36, 0xe2, 0x6c, 0xe1, 0x3f, 0xe2, 0x0c, 0xe2, 0x99, 0xe1, + 0x98, 0xe0, 0x16, 0xe2, 0x86, 0xe4, 0x3b, 0xe5, 0x72, 0xe9, 0x60, 0xed, 0x6c, 0xed, 0x9a, 0xef, + 0x34, 0xf2, 0x75, 0xf5, 0xfe, 0xfa, 0xf0, 0xfe, 0xd6, 0x02, 0xba, 0x07, 0xc8, 0x09, 0x03, 0x0b, + 0x79, 0x0b, 0x5b, 0x0b, 0xf6, 0x0c, 0xe2, 0x0c, 0xea, 0x0d, 0x2a, 0x10, 0x8a, 0x0f, 0xfd, 0x0e, + 0x1c, 0x11, 0x90, 0x10, 0xdf, 0x0d, 0x75, 0x0c, 0x2d, 0x0c, 0x4a, 0x0d, 0x65, 0x0d, 0xd7, 0x09, + 0x2b, 0x08, 0x82, 0x08, 0xcb, 0x0a, 0xbf, 0x0c, 0x55, 0x0c, 0x59, 0x0a, 0x0a, 0x07, 0xbe, 0x05, + 0x46, 0x07, 0x22, 0x04, 0x26, 0xff, 0x0e, 0xfe, 0xc7, 0xfd, 0xa4, 0xfe, 0xb6, 0xfe, 0x57, 0xfc, + 0x6c, 0xfb, 0x7d, 0xfc, 0xe4, 0xfc, 0x96, 0xfd, 0x0c, 0xfd, 0x0a, 0xfb, 0x45, 0xf9, 0x81, 0xf8, + 0x55, 0xfe, 0x33, 0x02, 0x6d, 0xff, 0x02, 0xfd, 0x60, 0xfc, 0x83, 0xfd, 0xdb, 0x00, 0x27, 0x01, + 0x41, 0xfe, 0x69, 0xfc, 0xe3, 0xfd, 0x29, 0x03, 0x62, 0x05, 0xe8, 0x02, 0xf1, 0x03, 0x51, 0x0c, + 0x14, 0x0d, 0xa6, 0x07, 0xc8, 0x05, 0xa1, 0x07, 0x7a, 0x01, 0x60, 0xfd, 0x0c, 0x02, 0x07, 0x04, + 0xbc, 0xfe, 0xbe, 0xfc, 0x45, 0xfc, 0xbc, 0xf8, 0xb0, 0xf8, 0x47, 0xfc, 0xbe, 0xfb, 0x32, 0xf5, + 0x66, 0xf1, 0xd9, 0xeb, 0x35, 0xe5, 0x76, 0xeb, 0x0f, 0xf4, 0xf0, 0xef, 0x4a, 0xe8, 0xe1, 0xe7, + 0x3a, 0xea, 0x8c, 0xea, 0x0a, 0xea, 0x70, 0xed, 0xab, 0xee, 0xa0, 0xee, 0x3d, 0xf1, 0x3c, 0xf0, + 0x7d, 0xef, 0xe3, 0xef, 0x44, 0xf0, 0xda, 0xf4, 0xba, 0xfe, 0x35, 0x04, 0x63, 0x01, 0x09, 0xff, + 0x78, 0x02, 0x3a, 0x06, 0x15, 0x09, 0x47, 0x0d, 0x0f, 0x0e, 0xa7, 0x09, 0xbd, 0x08, 0xab, 0x0d, + 0xa4, 0x12, 0xb4, 0x15, 0x6d, 0x16, 0xe3, 0x12, 0x0a, 0x10, 0xf9, 0x0f, 0xda, 0x0f, 0x91, 0x0f, + 0x64, 0x0f, 0x94, 0x0e, 0x74, 0x0c, 0x2c, 0x0b, 0x19, 0x0c, 0x3d, 0x08, 0x19, 0x02, 0x03, 0x00, + 0xca, 0x00, 0xd0, 0xff, 0x7b, 0xfc, 0x69, 0xf9, 0x9a, 0xf7, 0x97, 0xf7, 0x27, 0xf9, 0x08, 0xfb, + 0xfa, 0xfb, 0xbb, 0xfa, 0xaf, 0xf7, 0x58, 0xf4, 0xa9, 0xf5, 0x39, 0xfa, 0xa1, 0xfc, 0x52, 0xfc, + 0xc6, 0xfc, 0x22, 0xfd, 0x44, 0xfe, 0x1a, 0xff, 0xbf, 0xff, 0x65, 0x01, 0xe0, 0x02, 0xe9, 0x02, + 0xd8, 0x01, 0xe5, 0x02, 0x46, 0x05, 0xeb, 0x04, 0x3c, 0x04, 0x46, 0x04, 0xc7, 0x06, 0xb6, 0x0b, + 0xa7, 0x0e, 0xa5, 0x12, 0x8c, 0x13, 0xb2, 0x12, 0xe4, 0x15, 0x81, 0x14, 0x51, 0x10, 0x91, 0x12, + 0x06, 0x12, 0x10, 0x12, 0x6e, 0x13, 0x72, 0x0d, 0x22, 0x0b, 0x62, 0x0d, 0x89, 0x09, 0xc4, 0x04, + 0xfb, 0x01, 0x35, 0x00, 0x73, 0xfa, 0x6c, 0xf3, 0x6d, 0xf3, 0x0e, 0xef, 0x78, 0xe6, 0xd3, 0xe5, + 0x3d, 0xea, 0xee, 0xe7, 0xe1, 0xe6, 0x73, 0xe6, 0x26, 0xe5, 0xee, 0xe4, 0x3e, 0xe7, 0x1a, 0xeb, + 0xb2, 0xec, 0xda, 0xea, 0x31, 0xec, 0x70, 0xee, 0xa1, 0xf2, 0xeb, 0xf8, 0x25, 0xfc, 0x65, 0xfe, + 0xd4, 0x00, 0x98, 0x00, 0xd5, 0x01, 0x42, 0x03, 0x43, 0x04, 0xfa, 0x05, 0xb7, 0x07, 0xdf, 0x0c, + 0xac, 0x0f, 0xae, 0x0d, 0xba, 0x0c, 0xb2, 0x0b, 0x48, 0x0a, 0x13, 0x0a, 0x2d, 0x0a, 0x67, 0x09, + 0x65, 0x06, 0x48, 0x04, 0xfb, 0x05, 0x85, 0x07, 0xed, 0x06, 0x9a, 0x06, 0x4e, 0x06, 0x5f, 0x05, + 0xa1, 0x04, 0x2c, 0x04, 0x2e, 0x02, 0x64, 0x00, 0xde, 0xff, 0x4c, 0x00, 0x44, 0x01, 0xed, 0x04, + 0x8e, 0x06, 0x4c, 0x02, 0xbe, 0xfd, 0x83, 0xff, 0xbf, 0x02, 0xbe, 0x01, 0x2d, 0xff, 0x62, 0xfd, + 0x25, 0xfc, 0xcd, 0xfe, 0x69, 0x01, 0xa2, 0xff, 0x9d, 0xfc, 0xbb, 0xfc, 0xde, 0xfe, 0xa4, 0x00, + 0xc7, 0x02, 0x60, 0x01, 0xcb, 0xfc, 0x76, 0xfa, 0xf7, 0xfd, 0x54, 0x04, 0xc6, 0x05, 0xb8, 0x06, + 0x89, 0x06, 0x36, 0x04, 0x96, 0x0e, 0x89, 0x1a, 0x03, 0x1e, 0x3a, 0x17, 0xb2, 0x0e, 0x0e, 0x10, + 0xfa, 0x16, 0x69, 0x1a, 0x7d, 0x1e, 0xa6, 0x16, 0x0a, 0x0c, 0x62, 0x0c, 0xf7, 0x0d, 0xc3, 0x0d, + 0x6c, 0x0a, 0x0a, 0x00, 0xa2, 0xf8, 0x55, 0xf5, 0xc1, 0xf5, 0xa9, 0xf4, 0xda, 0xec, 0xc4, 0xe4, + 0xb1, 0xe3, 0x60, 0xe4, 0x64, 0xe4, 0x42, 0xe3, 0x9d, 0xde, 0xc1, 0xda, 0x75, 0xdb, 0x79, 0xde, + 0x92, 0xe1, 0x89, 0xde, 0x40, 0xdc, 0x5a, 0xdf, 0xa7, 0xe3, 0x87, 0xea, 0x10, 0xf0, 0x3d, 0xf1, + 0x10, 0xf1, 0xd2, 0xf2, 0x88, 0xf8, 0x27, 0xfe, 0x95, 0xfe, 0x44, 0xfd, 0x6d, 0xfe, 0x7b, 0x03, + 0x5f, 0x0b, 0x65, 0x0d, 0xc1, 0x0c, 0x9c, 0x0c, 0x5f, 0x0d, 0xb3, 0x10, 0xc1, 0x13, 0x41, 0x13, + 0x08, 0x11, 0x51, 0x0f, 0xd8, 0x10, 0x17, 0x12, 0xf5, 0x10, 0xc2, 0x0f, 0xa8, 0x0d, 0x4a, 0x0c, + 0x7d, 0x0b, 0xb1, 0x08, 0x69, 0x06, 0xe2, 0x01, 0x08, 0xfd, 0xb0, 0xfc, 0xf8, 0xfe, 0x1a, 0xfc, + 0x3b, 0xf7, 0x32, 0xf5, 0x72, 0xf7, 0xed, 0xfa, 0xb8, 0xf9, 0x30, 0xf6, 0x52, 0xf6, 0x9c, 0xf7, + 0x73, 0xf8, 0x83, 0xf8, 0xe4, 0xf9, 0x21, 0xfd, 0xfc, 0xfc, 0x8f, 0xfb, 0xdb, 0xfc, 0xe1, 0xfd, + 0xb5, 0xfc, 0xf1, 0xfc, 0xcf, 0xfc, 0xce, 0xfc, 0xca, 0xfb, 0x3b, 0xfa, 0x65, 0xfc, 0x0a, 0x00, + 0x26, 0x03, 0xa4, 0x04, 0x28, 0x03, 0x25, 0x03, 0x66, 0x06, 0x1b, 0x09, 0xfb, 0x07, 0x23, 0x0a, + 0xd9, 0x0d, 0x0a, 0x0e, 0x40, 0x0c, 0x94, 0x0f, 0x4e, 0x15, 0xf1, 0x14, 0x63, 0x0f, 0xcc, 0x10, + 0x46, 0x14, 0x72, 0x11, 0x6e, 0x0b, 0x59, 0x0c, 0x2d, 0x0e, 0x83, 0x09, 0xef, 0x03, 0xd8, 0x03, + 0x19, 0x01, 0x31, 0xfc, 0x0d, 0xf9, 0x00, 0xf7, 0x75, 0xf6, 0x53, 0xf6, 0xfe, 0xf3, 0x15, 0xf0, + 0xbb, 0xeb, 0x70, 0xe8, 0xea, 0xe6, 0x91, 0xe8, 0x5e, 0xec, 0x0d, 0xec, 0x2f, 0xec, 0x91, 0xf0, + 0x57, 0xf3, 0x1e, 0xf5, 0xcf, 0xf9, 0x34, 0xfb, 0xf9, 0xfa, 0x66, 0xfd, 0x69, 0x02, 0x54, 0x05, + 0x3d, 0x06, 0xf9, 0x08, 0xb3, 0x0c, 0xbe, 0x0f, 0x4c, 0x15, 0xfd, 0x18, 0x81, 0x18, 0x72, 0x16, + 0x75, 0x15, 0xbb, 0x17, 0x52, 0x19, 0x8b, 0x18, 0x76, 0x17, 0x07, 0x16, 0xbf, 0x12, 0x58, 0x0f, + 0x36, 0x0d, 0x04, 0x0c, 0xcb, 0x09, 0x84, 0x04, 0x8b, 0xff, 0xe3, 0xfd, 0xc2, 0xfd, 0x6e, 0xfe, + 0xcc, 0xfb, 0xc4, 0xf8, 0x4b, 0xf7, 0xda, 0xf6, 0x0f, 0xf7, 0x43, 0xf7, 0x14, 0xf7, 0x91, 0xf4, + 0xbb, 0xef, 0x33, 0xf1, 0xbf, 0xf5, 0x2c, 0xf6, 0x53, 0xf3, 0x42, 0xf0, 0xab, 0xf3, 0x54, 0xf9, + 0xbc, 0xfa, 0xa3, 0xf9, 0xc4, 0xf6, 0x0b, 0xf4, 0xa1, 0xf4, 0x6a, 0xf6, 0xe9, 0xf8, 0xe9, 0xf9, + 0x26, 0xf8, 0xc5, 0xf9, 0xd0, 0xfd, 0x11, 0x02, 0x19, 0x07, 0x85, 0x09, 0x7f, 0x07, 0x9b, 0x03, + 0x22, 0x05, 0x90, 0x0c, 0xa3, 0x15, 0x69, 0x1a, 0x1c, 0x18, 0xf7, 0x12, 0xed, 0x0f, 0x14, 0x12, + 0xd9, 0x18, 0x35, 0x1a, 0xc9, 0x13, 0x0c, 0x10, 0x0b, 0x0b, 0xac, 0x05, 0x89, 0x04, 0xb4, 0x00, + 0x17, 0xf8, 0x1d, 0xf4, 0x7a, 0xf5, 0xff, 0xf5, 0x31, 0xf1, 0x37, 0xed, 0x29, 0xeb, 0xac, 0xe7, + 0xaa, 0xe8, 0x7c, 0xec, 0x34, 0xe8, 0x6c, 0xe0, 0x41, 0xde, 0x47, 0xe1, 0xad, 0xe8, 0x98, 0xef, + 0x45, 0xef, 0xc0, 0xea, 0xe3, 0xe8, 0x68, 0xec, 0xb6, 0xf0, 0x83, 0xf3, 0x93, 0xf5, 0xe5, 0xf2, + 0xf6, 0xf3, 0x6d, 0xfb, 0x71, 0xff, 0x67, 0xfe, 0xa3, 0xfc, 0xe0, 0xfd, 0x7a, 0x01, 0xdb, 0x03, + 0x31, 0x05, 0xa9, 0x06, 0x28, 0x03, 0xab, 0x02, 0x35, 0x07, 0x85, 0x0a, 0x92, 0x0c, 0x84, 0x0a, + 0x5a, 0x08, 0xc1, 0x07, 0x99, 0x06, 0xac, 0x07, 0x90, 0x07, 0xc6, 0x04, 0xea, 0x02, 0xaf, 0x02, + 0x41, 0x04, 0xe4, 0x04, 0x69, 0x02, 0xd8, 0xfe, 0xb1, 0xfd, 0x4b, 0xff, 0x32, 0x01, 0x08, 0x00, + 0x65, 0xfd, 0x3b, 0xfd, 0x07, 0xfb, 0xdd, 0xf9, 0x69, 0xfc, 0x12, 0xfe, 0xa0, 0xfe, 0x62, 0xfd, + 0xa1, 0xfc, 0xe9, 0xff, 0x27, 0x03, 0x88, 0x03, 0x2d, 0x01, 0xdd, 0xfd, 0xbe, 0xfe, 0x1f, 0x02, + 0x53, 0x03, 0x53, 0x04, 0xfd, 0x06, 0xaf, 0x06, 0xd1, 0x06, 0xdf, 0x0a, 0xe4, 0x10, 0xfc, 0x11, + 0x23, 0x0d, 0xf6, 0x0b, 0xeb, 0x11, 0xb5, 0x15, 0x53, 0x16, 0xe6, 0x17, 0x74, 0x18, 0xaa, 0x19, + 0x32, 0x19, 0x42, 0x18, 0x98, 0x14, 0x7c, 0x10, 0xc5, 0x11, 0x15, 0x15, 0x69, 0x11, 0xd4, 0x06, + 0x33, 0x02, 0xf1, 0x00, 0xff, 0xfe, 0x77, 0xfe, 0xc7, 0xfc, 0x5b, 0xf9, 0x9e, 0xf4, 0xb5, 0xf0, + 0xf3, 0xee, 0xe6, 0xeb, 0x6c, 0xe8, 0xde, 0xe6, 0xa9, 0xe7, 0x4e, 0xe9, 0x30, 0xe8, 0xda, 0xe4, + 0x9b, 0xe3, 0xe2, 0xe6, 0x5f, 0xeb, 0xf8, 0xef, 0xa2, 0xf1, 0xad, 0xf0, 0xf0, 0xef, 0x40, 0xf3, + 0xa8, 0xf8, 0x1d, 0xfd, 0x26, 0x01, 0xa0, 0x04, 0xa3, 0x05, 0xa5, 0x06, 0x29, 0x0a, 0x67, 0x0d, + 0x8c, 0x0f, 0x0a, 0x12, 0x79, 0x15, 0x4c, 0x18, 0x6c, 0x17, 0xf2, 0x14, 0xae, 0x13, 0x42, 0x15, + 0x5f, 0x16, 0x13, 0x16, 0x35, 0x14, 0x45, 0x0f, 0xc9, 0x09, 0x7e, 0x06, 0xa0, 0x05, 0xca, 0x03, + 0xcc, 0xff, 0x8b, 0xfb, 0x2d, 0xfa, 0x57, 0xf9, 0xea, 0xf8, 0x37, 0xf7, 0xd8, 0xf5, 0xa9, 0xf4, + 0xbe, 0xf4, 0x82, 0xf6, 0xce, 0xf6, 0xc8, 0xf7, 0x50, 0xf6, 0x92, 0xf1, 0xa8, 0xf3, 0x45, 0xfa, + 0xf0, 0xfa, 0xd0, 0xf9, 0x72, 0xf6, 0x18, 0xf5, 0x2b, 0xf8, 0x56, 0xf8, 0xee, 0xf7, 0x91, 0xf6, + 0x78, 0xf2, 0x58, 0xf2, 0xf3, 0xf4, 0xc0, 0xf7, 0xc9, 0xf8, 0x39, 0xf6, 0x2f, 0xf4, 0x9c, 0xf7, + 0x42, 0xfb, 0xb6, 0xfc, 0x93, 0xfd, 0xf5, 0xfb, 0x8a, 0xff, 0x9a, 0x05, 0x3a, 0x0a, 0x17, 0x0d, + 0xf0, 0x0f, 0x17, 0x13, 0x5b, 0x12, 0x8b, 0x12, 0xba, 0x15, 0x5c, 0x17, 0x3b, 0x17, 0xae, 0x14, + 0xf3, 0x11, 0xec, 0x0e, 0xab, 0x0a, 0x51, 0x06, 0xb6, 0x05, 0xe1, 0x04, 0x53, 0x04, 0x3c, 0x02, + 0x42, 0xfb, 0xb8, 0xf2, 0x0f, 0xee, 0x85, 0xed, 0x7a, 0xec, 0x34, 0xeb, 0xbb, 0xea, 0x83, 0xe8, + 0xbc, 0xe3, 0xa6, 0xe2, 0x5c, 0xe6, 0x86, 0xe8, 0x09, 0xeb, 0x5c, 0xee, 0xbb, 0xef, 0x6c, 0xef, + 0xaf, 0xee, 0x71, 0xef, 0xe4, 0xf3, 0x0b, 0xfb, 0x6b, 0x00, 0x4d, 0x03, 0x82, 0x04, 0x0e, 0x07, + 0x60, 0x08, 0xa3, 0x08, 0x52, 0x0b, 0x49, 0x0f, 0x02, 0x11, 0x99, 0x11, 0x03, 0x11, 0x02, 0x11, + 0xbd, 0x10, 0x57, 0x11, 0x68, 0x11, 0x1f, 0x0f, 0x6a, 0x0e, 0xbe, 0x0b, 0xe6, 0x05, 0xce, 0x02, + 0xf6, 0x01, 0x98, 0x01, 0x6e, 0x00, 0x5e, 0x00, 0xdc, 0xfe, 0x15, 0xfd, 0xa0, 0xfb, 0x55, 0xfa, + 0x0b, 0xf9, 0x44, 0xf8, 0xc0, 0xf8, 0x93, 0xf8, 0x63, 0xf7, 0xb7, 0xf7, 0x08, 0xf6, 0xb3, 0xf6, + 0xaa, 0xfa, 0x24, 0xfc, 0x53, 0xfc, 0x7b, 0xfb, 0xf5, 0xf8, 0xe3, 0xf9, 0x5d, 0xfc, 0xab, 0xfd, + 0xb4, 0xfe, 0x43, 0xfd, 0xbd, 0xfc, 0x54, 0xfe, 0x61, 0x01, 0xa1, 0x02, 0xb5, 0x00, 0xea, 0xff, + 0xe4, 0x04, 0xcf, 0x09, 0x04, 0x0c, 0x55, 0x0b, 0x5a, 0x0a, 0x52, 0x0d, 0xa0, 0x11, 0x35, 0x13, + 0x3e, 0x15, 0x15, 0x19, 0x47, 0x18, 0x97, 0x16, 0xb7, 0x1d, 0x59, 0x20, 0xc8, 0x19, 0x10, 0x11, + 0x14, 0x0d, 0x69, 0x0b, 0x6c, 0x0c, 0x99, 0x0e, 0x87, 0x0a, 0x96, 0xff, 0xd9, 0xfc, 0xa1, 0x00, + 0x0c, 0x00, 0x5a, 0xfd, 0xd3, 0xf9, 0x18, 0xf4, 0x76, 0xef, 0xd3, 0xed, 0xe6, 0xee, 0x66, 0xef, + 0xc9, 0xee, 0xe0, 0xec, 0x85, 0xea, 0x51, 0xea, 0xce, 0xeb, 0x3a, 0xea, 0xdf, 0xe8, 0xc6, 0xed, + 0x17, 0xf0, 0x02, 0xee, 0x48, 0xee, 0x30, 0xf0, 0x41, 0xf2, 0x15, 0xf6, 0xd6, 0xfa, 0xa4, 0xfd, + 0x3b, 0xfd, 0xb6, 0xfc, 0xd1, 0xfe, 0xd2, 0x01, 0x08, 0x06, 0x8a, 0x0a, 0x4c, 0x0b, 0xfe, 0x0b, + 0xfe, 0x0c, 0x94, 0x0c, 0x46, 0x0d, 0x38, 0x0f, 0x13, 0x0f, 0x31, 0x0e, 0xe7, 0x0d, 0xfd, 0x0d, + 0x3a, 0x0b, 0xc6, 0x08, 0x27, 0x08, 0x8f, 0x07, 0x34, 0x05, 0xec, 0x02, 0x61, 0x00, 0x92, 0xff, + 0x4e, 0xfd, 0x02, 0xfa, 0xc1, 0xfa, 0x52, 0xfb, 0xe4, 0xf9, 0x0b, 0xfa, 0xb8, 0xf9, 0x9c, 0xf9, + 0x21, 0xfa, 0xd1, 0xf9, 0x9e, 0xfb, 0x37, 0xfd, 0x90, 0xfd, 0x84, 0xfc, 0xb0, 0xf9, 0xff, 0xfa, + 0xd3, 0xff, 0x79, 0x00, 0xcf, 0xfd, 0x90, 0xfb, 0x3f, 0xfc, 0xc7, 0xfd, 0xb3, 0xfd, 0xa7, 0xfd, + 0x23, 0xff, 0xb4, 0x01, 0xd9, 0x00, 0xa3, 0x00, 0x51, 0x02, 0xfb, 0x04, 0x91, 0x04, 0x02, 0x04, + 0x61, 0x07, 0xdc, 0x0b, 0x16, 0x0d, 0x85, 0x10, 0xa2, 0x16, 0xdd, 0x16, 0xf3, 0x0c, 0x22, 0x09, + 0x5a, 0x0c, 0x42, 0x10, 0x0c, 0x0e, 0x5e, 0x06, 0x19, 0x01, 0x3c, 0x03, 0x1d, 0x02, 0xc4, 0x00, + 0x29, 0xfe, 0xf2, 0xf8, 0xc4, 0xf4, 0x69, 0xf2, 0x5a, 0xf0, 0x81, 0xee, 0x87, 0xe7, 0x2a, 0xe4, + 0x36, 0xe5, 0x09, 0xe6, 0x73, 0xe7, 0x65, 0xe4, 0x02, 0xe0, 0x9a, 0xe2, 0xd0, 0xe6, 0xf0, 0xe9, + 0xa0, 0xee, 0x01, 0xf1, 0xd3, 0xef, 0x91, 0xef, 0xcd, 0xf3, 0x8d, 0xfb, 0x81, 0xff, 0xbe, 0x00, + 0xfb, 0x03, 0x34, 0x07, 0xb7, 0x0a, 0xf7, 0x0d, 0xef, 0x0e, 0x5f, 0x10, 0x74, 0x13, 0x29, 0x14, + 0x04, 0x16, 0xc0, 0x14, 0x49, 0x11, 0x6b, 0x0f, 0xed, 0x0f, 0x70, 0x12, 0x00, 0x11, 0xec, 0x0a, + 0xdb, 0x04, 0x73, 0x01, 0xe5, 0x00, 0xe5, 0x01, 0x87, 0x00, 0x8a, 0xfe, 0xa8, 0xfa, 0xb6, 0xf7, + 0xe8, 0xf9, 0x29, 0xfc, 0xca, 0xfb, 0x42, 0xf9, 0xfd, 0xf7, 0x8d, 0xf9, 0xe9, 0xfc, 0x2a, 0xff, + 0xce, 0xff, 0x79, 0xfe, 0x93, 0xfe, 0xba, 0x01, 0x0e, 0x05, 0xec, 0x04, 0xf9, 0x01, 0xae, 0xfc, + 0x23, 0xfb, 0x27, 0xfe, 0x03, 0x02, 0x54, 0x00, 0x80, 0xfa, 0xef, 0xf6, 0x73, 0xf8, 0xbb, 0xfa, + 0x17, 0xfb, 0xa3, 0xfb, 0x54, 0xfb, 0x12, 0xfb, 0x97, 0xfe, 0x1a, 0x01, 0x73, 0x01, 0xd0, 0xff, + 0xfe, 0xfe, 0x47, 0x03, 0x59, 0x0d, 0xd0, 0x15, 0xcf, 0x18, 0x7e, 0x17, 0x2f, 0x14, 0x31, 0x15, + 0x9f, 0x17, 0x06, 0x1a, 0xd5, 0x17, 0x99, 0x12, 0xeb, 0x0e, 0xa3, 0x0f, 0x53, 0x10, 0xb2, 0x0a, + 0x55, 0x03, 0x1d, 0x00, 0x27, 0x00, 0x4b, 0x01, 0x55, 0xff, 0xb3, 0xf7, 0x83, 0xef, 0x27, 0xec, + 0xd4, 0xec, 0x4e, 0xee, 0xa3, 0xed, 0xb7, 0xea, 0xf8, 0xe6, 0x08, 0xe6, 0xc8, 0xea, 0x26, 0xee, + 0x3e, 0xee, 0x19, 0xf0, 0x52, 0xf1, 0x1d, 0xf1, 0x10, 0xf4, 0x7a, 0xf9, 0xa1, 0xfc, 0x85, 0xfe, + 0x02, 0x01, 0x0e, 0x06, 0x15, 0x0a, 0xc9, 0x09, 0xaa, 0x08, 0x66, 0x09, 0xde, 0x0c, 0x06, 0x11, + 0x02, 0x13, 0xe8, 0x12, 0x17, 0x11, 0x79, 0x10, 0x14, 0x11, 0xb5, 0x11, 0x30, 0x10, 0xf7, 0x0c, + 0xdf, 0x0a, 0x9b, 0x06, 0x5a, 0x03, 0x48, 0x03, 0xc9, 0x02, 0x61, 0x02, 0x6a, 0x00, 0xc7, 0xfc, + 0xa6, 0xfc, 0xe1, 0xfb, 0x31, 0xf9, 0x5a, 0xf6, 0x72, 0xf5, 0x7b, 0xf5, 0x1f, 0xf5, 0x3f, 0xf7, + 0x94, 0xf8, 0x50, 0xf7, 0x37, 0xf6, 0xaf, 0xf5, 0x10, 0xf7, 0xf0, 0xf9, 0x22, 0xfa, 0x3b, 0xf8, + 0x8a, 0xf9, 0x77, 0xfb, 0x39, 0xfe, 0x76, 0xff, 0x03, 0xfd, 0xef, 0xfc, 0x0a, 0xfd, 0xa7, 0xfb, + 0x0e, 0xfe, 0xc6, 0xff, 0x7a, 0x00, 0xe0, 0x01, 0xd6, 0x01, 0x96, 0x04, 0x0a, 0x08, 0xc9, 0x09, + 0x1d, 0x0a, 0xe4, 0x08, 0x28, 0x09, 0x75, 0x11, 0xe0, 0x16, 0xbf, 0x17, 0x9a, 0x12, 0x0e, 0x0d, + 0xa9, 0x0e, 0xa7, 0x11, 0x7b, 0x0d, 0xe8, 0x0a, 0x37, 0x0a, 0xbf, 0x04, 0xa7, 0x00, 0x5d, 0x02, + 0x61, 0x02, 0xfd, 0xfd, 0x87, 0xf6, 0x0b, 0xf4, 0xa0, 0xf6, 0xd3, 0xf7, 0x69, 0xf4, 0x75, 0xee, + 0xbf, 0xea, 0xba, 0xea, 0xcc, 0xe9, 0x22, 0xeb, 0xf7, 0xeb, 0xf7, 0xe7, 0x3f, 0xe3, 0x26, 0xe6, + 0x36, 0xeb, 0x4f, 0xed, 0x70, 0xeb, 0xc6, 0xe6, 0xb3, 0xe6, 0x76, 0xeb, 0x4f, 0xf1, 0xd6, 0xf4, + 0x22, 0xf5, 0x16, 0xf5, 0x2d, 0xf7, 0x6e, 0xfa, 0xd1, 0xff, 0x48, 0x02, 0x00, 0x01, 0x4e, 0x02, + 0xd4, 0x05, 0x55, 0x0a, 0xb9, 0x0b, 0x98, 0x0a, 0xfc, 0x09, 0x41, 0x0b, 0xee, 0x0b, 0x14, 0x0e, + 0xcf, 0x0d, 0x38, 0x0b, 0x4e, 0x0a, 0xda, 0x09, 0xcd, 0x0a, 0x83, 0x0a, 0x48, 0x06, 0xc4, 0x01, + 0xa5, 0x00, 0x88, 0x01, 0xb7, 0x02, 0xb3, 0x01, 0xb0, 0xfe, 0xff, 0xfe, 0x8f, 0xff, 0x1d, 0x01, + 0x33, 0x04, 0xa8, 0x04, 0x5d, 0x03, 0x38, 0x00, 0xaa, 0x00, 0x46, 0x04, 0x33, 0x05, 0xc4, 0x04, + 0xec, 0x02, 0xf1, 0x02, 0x15, 0x04, 0x8e, 0x06, 0x8b, 0x05, 0x99, 0x01, 0x90, 0xfe, 0x16, 0xfe, + 0xb0, 0x00, 0x38, 0x02, 0xc7, 0x01, 0x00, 0x01, 0x58, 0xff, 0xad, 0x01, 0x9e, 0x04, 0x51, 0x06, + 0xaa, 0x05, 0xd4, 0x02, 0xf8, 0x04, 0xf7, 0x0e, 0x75, 0x17, 0x69, 0x18, 0xea, 0x14, 0x25, 0x11, + 0x40, 0x0f, 0xb1, 0x0f, 0x82, 0x11, 0x5f, 0x10, 0x9e, 0x0b, 0x1b, 0x07, 0x77, 0x04, 0x28, 0x01, + 0xca, 0x00, 0x2e, 0xfd, 0x99, 0xf4, 0x9b, 0xf3, 0xac, 0xf6, 0x17, 0xf3, 0xf4, 0xeb, 0xbc, 0xe6, + 0xa6, 0xe3, 0xaa, 0xe1, 0x15, 0xe1, 0x8e, 0xe4, 0xcf, 0xe5, 0xcd, 0xe0, 0xa9, 0xde, 0xa5, 0xe2, + 0x01, 0xe9, 0x67, 0xed, 0x38, 0xf1, 0xec, 0xf3, 0x53, 0xf5, 0x0e, 0xf7, 0x5f, 0xfc, 0xc5, 0x01, + 0x26, 0x05, 0x37, 0x08, 0x97, 0x0b, 0x07, 0x11, 0x0e, 0x14, 0x58, 0x13, 0xc8, 0x13, 0x61, 0x15, + 0x11, 0x17, 0x8e, 0x19, 0xf8, 0x1a, 0xc2, 0x18, 0x0b, 0x14, 0xca, 0x10, 0x1f, 0x11, 0x87, 0x12, + 0xb7, 0x0f, 0x71, 0x0a, 0x31, 0x08, 0x23, 0x06, 0x6c, 0x04, 0x14, 0x03, 0x59, 0x01, 0xbf, 0xfe, + 0xd3, 0xfc, 0x05, 0xfd, 0x2d, 0xfe, 0x8c, 0xfd, 0xec, 0xfa, 0x8a, 0xfb, 0xe0, 0xfd, 0xb4, 0xff, + 0xb4, 0x01, 0x3b, 0x01, 0x6f, 0x00, 0xb1, 0xff, 0xc6, 0x00, 0x9b, 0x03, 0x3c, 0x05, 0xc1, 0x04, + 0x53, 0x00, 0x40, 0xfc, 0xae, 0xfc, 0xda, 0xfd, 0xc7, 0xfd, 0x97, 0xfa, 0xf4, 0xf3, 0xa2, 0xf0, + 0x2c, 0xf4, 0xa8, 0xf8, 0xa6, 0xf9, 0x6e, 0xf5, 0x48, 0xf2, 0x74, 0xf7, 0x7a, 0xfb, 0x9d, 0xfe, + 0x75, 0xfe, 0x70, 0xfb, 0xa4, 0xfd, 0xac, 0x08, 0xcc, 0x11, 0x44, 0x12, 0xe6, 0x0f, 0xc2, 0x0d, + 0x02, 0x0e, 0x08, 0x0e, 0xe4, 0x11, 0x9e, 0x14, 0x72, 0x0c, 0x15, 0x06, 0xdf, 0x07, 0xb9, 0x06, + 0xa8, 0xff, 0x24, 0xfb, 0x8a, 0xf6, 0x7c, 0xf4, 0xd3, 0xf3, 0xb7, 0xf2, 0x05, 0xf1, 0x38, 0xec, + 0x5f, 0xe7, 0x51, 0xe4, 0xe4, 0xe3, 0xc7, 0xe7, 0xb4, 0xe8, 0x43, 0xe4, 0x7e, 0xe2, 0xcc, 0xe4, + 0x92, 0xe7, 0x36, 0xea, 0x93, 0xef, 0xca, 0xf2, 0x98, 0xf1, 0x0c, 0xf2, 0x33, 0xf7, 0x5f, 0xfc, + 0x92, 0xff, 0x46, 0x00, 0xf4, 0x01, 0x2d, 0x05, 0x05, 0x08, 0x80, 0x08, 0x3a, 0x09, 0x4d, 0x0b, + 0x8a, 0x0c, 0xdc, 0x0d, 0x1d, 0x0e, 0xb0, 0x0e, 0x2e, 0x0f, 0xab, 0x0c, 0xeb, 0x0b, 0x15, 0x0e, + 0x98, 0x0d, 0x9e, 0x08, 0x91, 0x05, 0x6e, 0x04, 0xae, 0x04, 0xa2, 0x04, 0x37, 0x02, 0x39, 0x01, + 0x34, 0xff, 0x80, 0xff, 0xcc, 0xfe, 0x25, 0xfc, 0x0b, 0xfa, 0xb1, 0xfa, 0x14, 0xfc, 0x66, 0xfd, + 0x69, 0xfe, 0x9d, 0xfc, 0x96, 0xfc, 0xc7, 0xfb, 0x0c, 0xfc, 0x98, 0xfe, 0x9b, 0xff, 0x12, 0x00, + 0xd7, 0xfe, 0xc5, 0xfe, 0x2d, 0x03, 0x91, 0x07, 0x9a, 0x06, 0x58, 0x03, 0x15, 0xff, 0x4a, 0xff, + 0xe7, 0x03, 0x84, 0x06, 0x7a, 0x07, 0xc2, 0x02, 0x1f, 0x02, 0x7b, 0x07, 0x00, 0x0c, 0x61, 0x0f, + 0x7c, 0x0e, 0x2b, 0x0d, 0x87, 0x0f, 0xec, 0x14, 0x61, 0x19, 0x20, 0x1b, 0x8f, 0x15, 0x1b, 0x11, + 0x34, 0x12, 0xfb, 0x10, 0x19, 0x11, 0x80, 0x0f, 0x0b, 0x0a, 0xc9, 0x06, 0xd6, 0x03, 0xcf, 0x00, + 0x82, 0xfd, 0x8b, 0xf8, 0xbd, 0xf4, 0xed, 0xf2, 0x6c, 0xf1, 0xb9, 0xef, 0x7d, 0xed, 0xa4, 0xea, + 0xcd, 0xe9, 0xfa, 0xe7, 0x0d, 0xe7, 0x87, 0xe8, 0xbc, 0xe7, 0x16, 0xe6, 0xe5, 0xe6, 0x78, 0xea, + 0x4c, 0xed, 0x4b, 0xf0, 0xb2, 0xf1, 0x03, 0xf0, 0x61, 0xf0, 0xd0, 0xf4, 0x03, 0xf9, 0x46, 0xfb, + 0x8c, 0xfc, 0x82, 0xfe, 0x1e, 0x02, 0xc8, 0x05, 0xe3, 0x06, 0x13, 0x07, 0x8f, 0x07, 0xd3, 0x09, + 0x73, 0x0f, 0x82, 0x11, 0xe5, 0x0f, 0xc1, 0x0d, 0xb5, 0x0b, 0x75, 0x0c, 0x8e, 0x0e, 0xf5, 0x0e, + 0x8e, 0x0d, 0xec, 0x09, 0xce, 0x08, 0x8f, 0x09, 0x34, 0x09, 0x8c, 0x08, 0xb6, 0x06, 0x20, 0x04, + 0xf3, 0x03, 0xfe, 0x03, 0xb6, 0x02, 0x4c, 0x00, 0x16, 0xfe, 0xf9, 0xff, 0x5e, 0x03, 0x3a, 0x04, + 0x52, 0x05, 0x78, 0x05, 0xa6, 0x03, 0xab, 0x03, 0x93, 0x04, 0xea, 0x04, 0x96, 0x04, 0x88, 0x00, + 0x01, 0xff, 0xf2, 0x03, 0xd5, 0x09, 0x96, 0x07, 0x69, 0x00, 0x35, 0xfb, 0x46, 0xfb, 0xf8, 0xfc, + 0x50, 0xfd, 0x71, 0xfd, 0xeb, 0xfa, 0xe5, 0xf9, 0xda, 0xfc, 0xb1, 0x01, 0xbd, 0x01, 0x82, 0xff, + 0xb1, 0xfd, 0xac, 0x02, 0xe2, 0x0a, 0xc3, 0x0e, 0x41, 0x0f, 0xd4, 0x0e, 0x91, 0x0b, 0x33, 0x06, + 0xa8, 0x09, 0x57, 0x10, 0xd8, 0x0d, 0xa8, 0x02, 0x88, 0xfb, 0xf0, 0xfa, 0xe5, 0xfb, 0xe6, 0xfa, + 0x88, 0xf5, 0xf9, 0xee, 0x60, 0xea, 0xf6, 0xe7, 0x99, 0xe7, 0x75, 0xe6, 0x56, 0xe2, 0x6f, 0xdd, + 0xc6, 0xda, 0x89, 0xdc, 0x47, 0xe1, 0x4d, 0xe1, 0x06, 0xdc, 0xc9, 0xd9, 0x92, 0xdf, 0x4e, 0xe7, + 0xe2, 0xec, 0xc2, 0xf0, 0x18, 0xf0, 0x94, 0xef, 0x04, 0xf6, 0xca, 0xfe, 0xb9, 0x04, 0xc3, 0x05, + 0x63, 0x04, 0x71, 0x06, 0xd2, 0x0b, 0x56, 0x10, 0x0a, 0x12, 0xdc, 0x10, 0xc0, 0x10, 0x07, 0x12, + 0x92, 0x12, 0x55, 0x15, 0x8a, 0x16, 0x25, 0x11, 0xe6, 0x0d, 0x57, 0x0d, 0x34, 0x0b, 0x55, 0x08, + 0xc4, 0x03, 0x90, 0x01, 0x09, 0x02, 0x5f, 0x01, 0x45, 0x01, 0x4b, 0xff, 0x14, 0xfd, 0x9a, 0xfd, + 0xc0, 0xff, 0x98, 0x00, 0xc0, 0xff, 0x90, 0xfd, 0x02, 0xfd, 0xbf, 0xfe, 0x2a, 0x03, 0x1a, 0x08, + 0x4b, 0x07, 0x13, 0x05, 0x5a, 0x05, 0xd3, 0x07, 0x12, 0x0a, 0x97, 0x09, 0x0c, 0x05, 0x0a, 0x06, + 0xcd, 0x09, 0x95, 0x0b, 0xdc, 0x09, 0x33, 0x05, 0xb2, 0xff, 0x48, 0xfd, 0xa6, 0xfc, 0x3f, 0xff, + 0xd7, 0xff, 0x37, 0x00, 0x0c, 0x00, 0xd6, 0xff, 0x50, 0x01, 0x5a, 0x05, 0x5c, 0x07, 0xf8, 0x06, + 0x4b, 0x0b, 0xe3, 0x13, 0x45, 0x16, 0x9b, 0x11, 0x34, 0x0b, 0xe9, 0x0c, 0xc7, 0x12, 0x33, 0x14, + 0xec, 0x0d, 0x42, 0x0a, 0xc5, 0x06, 0xc5, 0x02, 0x50, 0x02, 0x4d, 0x02, 0x84, 0xff, 0x37, 0xfa, + 0xaa, 0xf4, 0x1e, 0xf1, 0xdc, 0xec, 0x48, 0xe9, 0xd4, 0xe6, 0x04, 0xe5, 0x1d, 0xe6, 0xe1, 0xe8, + 0xb0, 0xe8, 0xae, 0xe9, 0xa4, 0xe9, 0xf7, 0xe8, 0x38, 0xec, 0xa8, 0xef, 0xb0, 0xf4, 0xd2, 0xf7, + 0x8f, 0xf5, 0x74, 0xf5, 0x37, 0xfb, 0x7b, 0x02, 0x80, 0x06, 0xa8, 0x06, 0x6c, 0x08, 0x3d, 0x0b, + 0x8d, 0x0b, 0x96, 0x0c, 0xa0, 0x0c, 0x31, 0x0c, 0x30, 0x0e, 0x23, 0x0d, 0xe5, 0x0b, 0x71, 0x0c, + 0xe1, 0x0b, 0x43, 0x0a, 0x4e, 0x0a, 0x06, 0x0a, 0xf8, 0x08, 0x8a, 0x06, 0xb9, 0x04, 0xc9, 0x04, + 0xa3, 0x03, 0x17, 0x02, 0xbd, 0x00, 0x25, 0xff, 0x89, 0x00, 0x3e, 0x01, 0x14, 0x01, 0x5e, 0x01, + 0x8c, 0x01, 0x7b, 0x01, 0x54, 0x00, 0x56, 0x00, 0xe6, 0x01, 0x02, 0x03, 0xaf, 0x01, 0xc8, 0x00, + 0x09, 0x00, 0xe0, 0x00, 0xf8, 0x00, 0xca, 0xfe, 0x29, 0xfd, 0x81, 0xfc, 0x9f, 0xfd, 0xbb, 0xfe, + 0xcb, 0xfc, 0x6c, 0xfb, 0xa1, 0xfb, 0xe2, 0xfc, 0x8c, 0xff, 0x44, 0x00, 0x83, 0xff, 0x7d, 0x00, + 0x13, 0x03, 0xca, 0x04, 0x86, 0x06, 0x97, 0x09, 0x55, 0x09, 0x24, 0x0c, 0x3b, 0x13, 0x4e, 0x1a, + 0xe9, 0x19, 0xea, 0x10, 0x73, 0x0c, 0xd0, 0x10, 0x2e, 0x15, 0xaa, 0x13, 0x6c, 0x0e, 0x85, 0x04, + 0xaf, 0xfd, 0x5d, 0xfc, 0x49, 0xfc, 0x4c, 0xf8, 0xe6, 0xf0, 0xb3, 0xec, 0x75, 0xeb, 0xfc, 0xea, + 0x67, 0xe8, 0x6f, 0xe2, 0x6b, 0xdb, 0x90, 0xd9, 0x37, 0xdb, 0x00, 0xdf, 0x4d, 0xe2, 0xca, 0xe0, + 0x5f, 0xdf, 0xe1, 0xdf, 0xd2, 0xe4, 0x0b, 0xee, 0x38, 0xf1, 0xa5, 0xee, 0x10, 0xef, 0x7f, 0xf4, + 0xbc, 0xfb, 0xfb, 0xff, 0x93, 0xfe, 0x7a, 0xfe, 0x92, 0x00, 0x88, 0x02, 0xb3, 0x05, 0xf5, 0x05, + 0x74, 0x05, 0xe9, 0x03, 0x95, 0x01, 0xab, 0x05, 0xd9, 0x08, 0xc2, 0x06, 0xda, 0x03, 0xd1, 0x00, + 0xc7, 0x00, 0x45, 0x02, 0xcb, 0x02, 0x99, 0x02, 0xf2, 0xff, 0x6d, 0xfc, 0x53, 0xfb, 0x95, 0xfc, + 0xab, 0xfd, 0x26, 0xfe, 0x5c, 0xfe, 0x6e, 0xfe, 0x4e, 0x00, 0x46, 0x03, 0x1d, 0x04, 0x5a, 0x04, + 0x79, 0x05, 0x12, 0x08, 0xa6, 0x0a, 0x9b, 0x0a, 0xb6, 0x0a, 0x48, 0x09, 0xcc, 0x08, 0xa1, 0x0a, + 0x63, 0x0a, 0x18, 0x0c, 0x4a, 0x0f, 0xeb, 0x0f, 0x01, 0x11, 0xc9, 0x0d, 0xcb, 0x09, 0x8f, 0x0a, + 0xac, 0x0b, 0xd6, 0x0e, 0x20, 0x0f, 0x6d, 0x0e, 0x6a, 0x12, 0x0a, 0x15, 0xd1, 0x11, 0xa5, 0x10, + 0xc6, 0x0e, 0xb4, 0x11, 0x7c, 0x18, 0x51, 0x1d, 0xf7, 0x1c, 0xaa, 0x14, 0x2f, 0x0f, 0xfa, 0x0c, + 0x75, 0x0d, 0xbf, 0x0e, 0xdc, 0x10, 0xad, 0x0d, 0xdf, 0x03, 0x26, 0xfd, 0x0f, 0xfe, 0x5e, 0xfe, + 0xb0, 0xf8, 0x7f, 0xf2, 0x5b, 0xf0, 0x8d, 0xee, 0xdd, 0xeb, 0x6b, 0xe8, 0xc9, 0xe2, 0x99, 0xdd, + 0x32, 0xdc, 0x7f, 0xdc, 0x6a, 0xdf, 0xd4, 0xe1, 0x53, 0xde, 0x07, 0xdb, 0x2a, 0xdb, 0xbd, 0xe0, + 0x0c, 0xe8, 0xd6, 0xe7, 0x54, 0xe7, 0x32, 0xeb, 0xee, 0xef, 0x9f, 0xf4, 0x53, 0xf8, 0x89, 0xf9, + 0x27, 0xfd, 0x6c, 0x00, 0xda, 0x02, 0x1f, 0x05, 0xb4, 0x06, 0xc4, 0x09, 0x27, 0x09, 0xfe, 0x09, + 0x62, 0x0e, 0xb1, 0x10, 0xd6, 0x10, 0xb8, 0x0d, 0x4d, 0x0c, 0x34, 0x0c, 0xde, 0x0b, 0xcc, 0x0a, + 0x93, 0x0b, 0x94, 0x09, 0x36, 0x07, 0x7b, 0x07, 0x28, 0x06, 0x8f, 0x05, 0xd9, 0x04, 0x55, 0x02, + 0x91, 0x00, 0x09, 0x00, 0x6b, 0x00, 0x0f, 0x02, 0xd9, 0x03, 0x00, 0x06, 0xaa, 0x07, 0x38, 0x08, + 0xe4, 0x09, 0x75, 0x09, 0xf4, 0x08, 0xc5, 0x0a, 0xd2, 0x09, 0xd7, 0x08, 0x90, 0x09, 0x51, 0x0b, + 0x47, 0x0c, 0x3d, 0x0a, 0x9b, 0x07, 0xbe, 0x07, 0xd4, 0x07, 0xe9, 0x06, 0x75, 0x07, 0xd5, 0x07, + 0xc7, 0x0a, 0x9b, 0x0c, 0x06, 0x0a, 0x46, 0x07, 0x91, 0x09, 0x25, 0x0d, 0xbe, 0x0f, 0xb8, 0x0f, + 0xc2, 0x10, 0x72, 0x14, 0xe3, 0x0e, 0x25, 0x07, 0x6b, 0x08, 0x2d, 0x0c, 0x4b, 0x0a, 0x40, 0x05, + 0x90, 0x00, 0xd8, 0xfc, 0x36, 0xfa, 0xd4, 0xf7, 0x77, 0xf7, 0x37, 0xf3, 0x45, 0xed, 0x59, 0xea, + 0x39, 0xea, 0x62, 0xe8, 0xda, 0xe1, 0x24, 0xdc, 0x5a, 0xdc, 0xaa, 0xe0, 0xbb, 0xe3, 0x73, 0xe3, + 0x94, 0xdf, 0xf9, 0xdc, 0x3e, 0xde, 0xae, 0xe2, 0x11, 0xeb, 0x76, 0xec, 0x73, 0xe8, 0x54, 0xe8, + 0x9a, 0xef, 0x40, 0xf9, 0x47, 0xfd, 0x54, 0xfe, 0xd0, 0x00, 0x4e, 0x03, 0x1e, 0x06, 0xad, 0x08, + 0x23, 0x0a, 0x3d, 0x0b, 0x6b, 0x08, 0x99, 0x05, 0x08, 0x09, 0x3a, 0x0c, 0x09, 0x0d, 0x74, 0x08, + 0xde, 0x05, 0x23, 0x07, 0x35, 0x07, 0xf1, 0x04, 0xf4, 0x00, 0x01, 0xff, 0xdd, 0xfc, 0x27, 0xfa, + 0x43, 0xfa, 0x30, 0xfc, 0x13, 0xfc, 0x41, 0xfb, 0x27, 0xfb, 0xa4, 0xfd, 0x6e, 0xff, 0x74, 0x01, + 0x6f, 0x03, 0xf5, 0x04, 0xfa, 0x07, 0xfd, 0x08, 0x39, 0x09, 0x76, 0x0b, 0x94, 0x0d, 0x5f, 0x0e, + 0xdd, 0x0c, 0x4b, 0x0c, 0xa7, 0x0c, 0x0a, 0x0d, 0x20, 0x0d, 0xc6, 0x0a, 0xe7, 0x07, 0x03, 0x06, + 0x69, 0x04, 0xbd, 0x03, 0xa1, 0x03, 0x7a, 0x04, 0xe0, 0x05, 0xfb, 0x04, 0x20, 0x04, 0xa1, 0x05, + 0x8c, 0x0a, 0x26, 0x10, 0x2a, 0x13, 0x0d, 0x15, 0xa3, 0x17, 0x39, 0x19, 0x01, 0x17, 0x96, 0x14, + 0xb4, 0x15, 0x5a, 0x14, 0x3f, 0x11, 0x16, 0x0e, 0xbf, 0x0d, 0x22, 0x0b, 0x60, 0x02, 0x02, 0xfd, + 0x7a, 0xfc, 0x9c, 0xfa, 0x52, 0xf7, 0xcb, 0xf3, 0xc1, 0xef, 0xe4, 0xed, 0x83, 0xe8, 0x8c, 0xe3, + 0xba, 0xe2, 0x3a, 0xe2, 0x47, 0xe0, 0xd3, 0xde, 0x89, 0xde, 0x76, 0xdf, 0x2c, 0xe1, 0xe2, 0xe2, + 0xe1, 0xe7, 0xb8, 0xe8, 0x96, 0xe7, 0x2f, 0xea, 0x9d, 0xee, 0x01, 0xf3, 0xb8, 0xf3, 0xa9, 0xf2, + 0xbe, 0xf5, 0x80, 0xf9, 0xa5, 0xfb, 0x7b, 0xfd, 0x27, 0x00, 0xec, 0x03, 0xc2, 0x02, 0xab, 0x01, + 0x02, 0x03, 0x40, 0x05, 0xe7, 0x05, 0x41, 0x02, 0xd4, 0xff, 0xc5, 0x00, 0x2b, 0x01, 0xef, 0xfe, + 0x11, 0xfd, 0xb2, 0xfb, 0xd1, 0xfa, 0xf7, 0xf9, 0xdd, 0xfa, 0x67, 0xfd, 0xb9, 0xfd, 0x89, 0xfd, + 0x3b, 0xfe, 0xde, 0x01, 0x9c, 0x05, 0xdb, 0x06, 0xfa, 0x07, 0x27, 0x0a, 0x84, 0x0c, 0x7a, 0x0e, + 0x17, 0x11, 0x34, 0x12, 0x06, 0x12, 0xb0, 0x13, 0x43, 0x14, 0xcb, 0x13, 0xf1, 0x15, 0x42, 0x18, + 0x6b, 0x17, 0x1d, 0x16, 0xf3, 0x11, 0x43, 0x11, 0xa4, 0x11, 0x53, 0x10, 0x7c, 0x0e, 0x83, 0x10, + 0xb2, 0x13, 0xc3, 0x13, 0xcc, 0x14, 0x80, 0x14, 0xbd, 0x16, 0x2b, 0x1a, 0xfe, 0x1a, 0xf2, 0x1f, + 0x9e, 0x24, 0xdf, 0x1f, 0x14, 0x14, 0x58, 0x0f, 0x7d, 0x13, 0xb9, 0x17, 0x90, 0x11, 0x90, 0x09, + 0xc7, 0x04, 0xb1, 0x00, 0xe5, 0xfd, 0x03, 0xfb, 0x9a, 0xf6, 0x5a, 0xf0, 0xae, 0xe9, 0x0e, 0xe7, + 0x87, 0xe7, 0x62, 0xe6, 0x99, 0xe1, 0xc2, 0xd9, 0x50, 0xd8, 0x5a, 0xdf, 0xc1, 0xe3, 0x4d, 0xe3, + 0x34, 0xe1, 0xce, 0xde, 0xcf, 0xe0, 0xe2, 0xe8, 0x41, 0xf0, 0x42, 0xee, 0x3b, 0xea, 0xdc, 0xec, + 0xdd, 0xf3, 0x7e, 0xf8, 0x47, 0xf8, 0x42, 0xf5, 0xc9, 0xf2, 0xc4, 0xf1, 0x9b, 0xf4, 0xef, 0xf7, + 0x53, 0xfa, 0x62, 0xf6, 0xa9, 0xee, 0x38, 0xee, 0x19, 0xf2, 0x53, 0xf7, 0x86, 0xf5, 0x35, 0xf2, + 0x3e, 0xf2, 0x4b, 0xf4, 0xb1, 0xf4, 0x07, 0xf5, 0x80, 0xf5, 0xa1, 0xf4, 0xa5, 0xf5, 0x4c, 0xf7, + 0x0f, 0xfb, 0x2b, 0xfe, 0x12, 0xfe, 0xd2, 0xfd, 0x5c, 0xff, 0x83, 0x02, 0xdf, 0x06, 0xc4, 0x07, + 0x59, 0x08, 0xb1, 0x0a, 0x1a, 0x0c, 0x5c, 0x0d, 0xbf, 0x0e, 0x2c, 0x0f, 0x70, 0x10, 0x27, 0x10, + 0xa5, 0x0f, 0x8b, 0x10, 0x77, 0x11, 0x13, 0x11, 0xf2, 0x0d, 0xa5, 0x0a, 0xc8, 0x0a, 0xb9, 0x0d, + 0xfb, 0x0f, 0x02, 0x0f, 0xa1, 0x0d, 0xcd, 0x0e, 0x0d, 0x11, 0xe3, 0x12, 0x8d, 0x11, 0x39, 0x13, + 0x0d, 0x14, 0xa6, 0x15, 0xc9, 0x1b, 0xa4, 0x21, 0x65, 0x1f, 0xa4, 0x15, 0x38, 0x0e, 0x06, 0x0f, + 0x02, 0x13, 0x29, 0x12, 0x1a, 0x0d, 0x93, 0x05, 0xcf, 0xfe, 0x54, 0xfa, 0x71, 0xf9, 0x8d, 0xfa, + 0x1e, 0xf4, 0x0b, 0xeb, 0x64, 0xe7, 0x69, 0xe7, 0x80, 0xe7, 0x4d, 0xe4, 0x35, 0xe0, 0x8e, 0xdd, + 0xd2, 0xdd, 0x20, 0xe2, 0x55, 0xe7, 0x26, 0xe8, 0x5c, 0xe6, 0x8a, 0xe4, 0x89, 0xe8, 0xaf, 0xf3, + 0x8c, 0xf8, 0x86, 0xf4, 0x82, 0xf2, 0x6d, 0xf6, 0x40, 0xfc, 0x97, 0x00, 0x51, 0x01, 0xeb, 0xff, + 0xb5, 0xff, 0xba, 0xfe, 0x2d, 0x00, 0x0c, 0x03, 0xe5, 0x05, 0xaf, 0x01, 0x86, 0xfc, 0x3a, 0xfd, + 0x2b, 0x00, 0x18, 0x02, 0xce, 0xfe, 0xde, 0xfa, 0xed, 0xfa, 0xad, 0xfd, 0x63, 0xfe, 0x4c, 0xff, + 0x3e, 0xff, 0xe6, 0xfb, 0x34, 0xfb, 0x82, 0xfc, 0xa9, 0xff, 0x7f, 0x00, 0xef, 0xfe, 0x7d, 0xff, + 0xad, 0x01, 0xc3, 0x04, 0x68, 0x09, 0xb0, 0x0a, 0x49, 0x09, 0x26, 0x0a, 0x62, 0x0b, 0x5d, 0x0e, + 0xc6, 0x0f, 0x0e, 0x0f, 0x92, 0x0d, 0xfc, 0x0d, 0x5d, 0x12, 0x4e, 0x16, 0x3a, 0x17, 0xac, 0x15, + 0xf2, 0x12, 0x26, 0x12, 0x8e, 0x13, 0xf8, 0x14, 0x56, 0x18, 0x6b, 0x18, 0x47, 0x18, 0x8e, 0x19, + 0xe8, 0x1a, 0x19, 0x1b, 0x8b, 0x1d, 0xed, 0x1e, 0x0f, 0x1e, 0xab, 0x1d, 0xb7, 0x1f, 0x4b, 0x1f, + 0x68, 0x1a, 0x9e, 0x12, 0xf7, 0x0e, 0x2b, 0x0c, 0x0b, 0x06, 0x91, 0x01, 0x4a, 0x02, 0xe6, 0xfe, + 0x64, 0xf4, 0x32, 0xed, 0x50, 0xec, 0xc9, 0xeb, 0xa5, 0xe7, 0xe7, 0xe4, 0xe3, 0xe2, 0x55, 0xe1, + 0xe3, 0xdf, 0xe8, 0xdc, 0x3b, 0xdd, 0xc3, 0xdf, 0xcd, 0xe0, 0x40, 0xe1, 0xe2, 0xe4, 0x21, 0xe8, + 0xeb, 0xe7, 0x04, 0xe8, 0x96, 0xee, 0x31, 0xf4, 0xe3, 0xf2, 0x02, 0xf4, 0x99, 0xf9, 0x4a, 0xfe, + 0xba, 0xff, 0xf5, 0xfd, 0x20, 0xfd, 0x3b, 0xfd, 0xb9, 0xfb, 0xa5, 0xfa, 0x34, 0xfd, 0xd4, 0xff, + 0x0f, 0xfd, 0x63, 0xf9, 0x63, 0xf8, 0xdd, 0xfa, 0x58, 0xfa, 0x01, 0xf6, 0xd0, 0xf3, 0x47, 0xf3, + 0x20, 0xf2, 0x80, 0xf0, 0xc9, 0xee, 0xf7, 0xec, 0x39, 0xec, 0x61, 0xeb, 0x13, 0xed, 0xa7, 0xf0, + 0x93, 0xf2, 0xb6, 0xef, 0x64, 0xed, 0xdc, 0xf0, 0xd4, 0xf4, 0x21, 0xf9, 0xa3, 0xfa, 0x11, 0xfc, + 0xb9, 0xfe, 0xc3, 0xff, 0x80, 0x01, 0x84, 0x03, 0x76, 0x04, 0x27, 0x03, 0x38, 0x03, 0x77, 0x08, + 0xa5, 0x0e, 0xb8, 0x0f, 0x62, 0x0a, 0xbb, 0x07, 0xac, 0x09, 0x7e, 0x0c, 0xce, 0x0f, 0x97, 0x12, + 0x30, 0x14, 0xc7, 0x16, 0x00, 0x17, 0x17, 0x17, 0x68, 0x19, 0xa8, 0x1c, 0xaa, 0x1e, 0x83, 0x21, + 0x2a, 0x26, 0x79, 0x2b, 0x51, 0x26, 0xc1, 0x1f, 0x8a, 0x1c, 0xa3, 0x19, 0xcb, 0x19, 0x2b, 0x18, + 0x40, 0x14, 0xba, 0x0d, 0x83, 0x07, 0xc7, 0x03, 0xd9, 0x00, 0xb4, 0xfc, 0xfe, 0xf7, 0xc6, 0xf3, + 0x82, 0xf1, 0xd8, 0xf0, 0xb9, 0xef, 0xa9, 0xec, 0x6c, 0xe5, 0xbf, 0xe1, 0xae, 0xe2, 0x0c, 0xe5, + 0x08, 0xea, 0x1a, 0xea, 0xea, 0xe8, 0xea, 0xe7, 0x99, 0xec, 0x4e, 0xf5, 0x0c, 0xf5, 0xad, 0xf2, + 0x66, 0xf5, 0xfa, 0xfa, 0x7b, 0xfe, 0x1f, 0x02, 0xa9, 0x02, 0x56, 0x02, 0x0a, 0x02, 0x5d, 0x02, + 0x11, 0x05, 0x4e, 0x0a, 0xf1, 0x0a, 0x1e, 0x05, 0xb3, 0x01, 0xd9, 0x02, 0x5d, 0x05, 0x1d, 0x04, + 0x3f, 0x01, 0x6d, 0xff, 0x7a, 0xfe, 0x47, 0xfc, 0x2e, 0xfb, 0xd2, 0xf9, 0x92, 0xf6, 0xb0, 0xf1, + 0x54, 0xee, 0x0f, 0xf0, 0xd8, 0xf1, 0x74, 0xef, 0xd6, 0xec, 0x1b, 0xec, 0x1a, 0xee, 0x3e, 0xf2, + 0x3f, 0xf6, 0xfe, 0xf8, 0xcf, 0xfa, 0xdb, 0xfa, 0x06, 0xfd, 0x1c, 0x01, 0x52, 0x04, 0xbc, 0x05, + 0x0b, 0x06, 0xf0, 0x07, 0x40, 0x0c, 0x36, 0x10, 0x7e, 0x11, 0xaf, 0x12, 0x9e, 0x11, 0xbc, 0x11, + 0x5f, 0x13, 0x34, 0x16, 0x3a, 0x16, 0x54, 0x18, 0xd6, 0x1a, 0xb8, 0x1c, 0xfe, 0x20, 0x03, 0x22, + 0x1d, 0x20, 0xad, 0x20, 0xbe, 0x29, 0x4e, 0x32, 0x56, 0x30, 0x7c, 0x24, 0x02, 0x1c, 0x20, 0x19, + 0xcd, 0x18, 0x3e, 0x19, 0x19, 0x16, 0x23, 0x12, 0xec, 0x0a, 0xa4, 0x02, 0xbe, 0xfe, 0x61, 0xfb, + 0xeb, 0xf3, 0xe5, 0xec, 0x70, 0xe9, 0x02, 0xe8, 0x1d, 0xe9, 0xeb, 0xe4, 0x63, 0xdd, 0x83, 0xd8, + 0x44, 0xd8, 0xfc, 0xda, 0x1d, 0xdf, 0xd1, 0xe1, 0xc4, 0xe0, 0xec, 0xdc, 0x2e, 0xde, 0x41, 0xe7, + 0x34, 0xec, 0xbb, 0xeb, 0x51, 0xec, 0x4f, 0xf0, 0xcb, 0xf7, 0x3a, 0xfb, 0x9b, 0xfa, 0x3b, 0xfa, + 0xd9, 0xf9, 0x65, 0xfa, 0x5d, 0xfc, 0xee, 0x01, 0x50, 0x05, 0x51, 0x00, 0xcf, 0xfb, 0xd7, 0xfa, + 0xf3, 0xfd, 0xa1, 0x00, 0xef, 0xfe, 0x51, 0xfb, 0x86, 0xfa, 0x17, 0xf8, 0xd6, 0xf6, 0x8f, 0xf6, + 0xda, 0xf4, 0xe4, 0xf1, 0x5a, 0xf0, 0x07, 0xf3, 0x7e, 0xf6, 0x6c, 0xf6, 0x17, 0xf4, 0x20, 0xf2, + 0x74, 0xf2, 0xa8, 0xf5, 0xf7, 0xf8, 0x32, 0xfb, 0x58, 0xfb, 0xb5, 0xfc, 0x14, 0xff, 0x03, 0x01, + 0x0a, 0x05, 0x3a, 0x05, 0x8c, 0x04, 0xe5, 0x06, 0xef, 0x08, 0xef, 0x0a, 0xda, 0x0a, 0xb2, 0x07, + 0xac, 0x05, 0x3b, 0x06, 0x3e, 0x08, 0xb3, 0x0c, 0x16, 0x0f, 0xd5, 0x11, 0x44, 0x11, 0x7b, 0x0f, + 0x6f, 0x13, 0xe4, 0x14, 0x69, 0x18, 0x3b, 0x1e, 0x28, 0x26, 0xd8, 0x25, 0xdf, 0x1f, 0xca, 0x1b, + 0x68, 0x1c, 0x5f, 0x1e, 0x63, 0x1c, 0x4c, 0x17, 0xdb, 0x10, 0x41, 0x0e, 0x93, 0x0b, 0x38, 0x08, + 0x51, 0x04, 0x2b, 0x00, 0x03, 0xf9, 0x95, 0xf2, 0x12, 0xf3, 0xe3, 0xf2, 0x08, 0xf0, 0xe8, 0xe6, + 0x18, 0xe0, 0x1e, 0xde, 0xec, 0xdf, 0x07, 0xe2, 0xe9, 0xe2, 0x2e, 0xe3, 0xd8, 0xe2, 0x1f, 0xe3, + 0xf6, 0xe8, 0x42, 0xef, 0x7a, 0xee, 0x70, 0xee, 0x7c, 0xf2, 0xa7, 0xfa, 0xe1, 0x00, 0x21, 0x01, + 0xfe, 0xff, 0xfe, 0xff, 0x43, 0x01, 0xa7, 0x02, 0x3f, 0x07, 0x03, 0x0c, 0x1e, 0x0b, 0x8e, 0x05, + 0xc7, 0x04, 0x62, 0x07, 0x09, 0x08, 0x0d, 0x05, 0x35, 0x01, 0xfb, 0x00, 0x3f, 0x00, 0x12, 0xff, + 0x81, 0xfd, 0x79, 0xfd, 0x01, 0xfd, 0x96, 0xfa, 0xaa, 0xfa, 0x6c, 0xfc, 0x47, 0xfc, 0xef, 0xf8, + 0x72, 0xf6, 0xca, 0xf6, 0xd7, 0xfa, 0xa5, 0xfd, 0x6e, 0xfe, 0x6d, 0xff, 0x0f, 0x00, 0xbd, 0x00, + 0xb1, 0xff, 0x0d, 0x01, 0x15, 0x00, 0x1d, 0xfd, 0x3e, 0xfd, 0x61, 0x00, 0x55, 0x04, 0xb1, 0x04, + 0x0c, 0x01, 0xc1, 0xfe, 0x0d, 0x00, 0x3a, 0x01, 0x3a, 0x05, 0x77, 0x06, 0xe1, 0x09, 0xd7, 0x0c, + 0x65, 0x0e, 0x5b, 0x0f, 0x90, 0x11, 0x42, 0x17, 0xb2, 0x1d, 0xab, 0x23, 0xd0, 0x21, 0x60, 0x1d, + 0x73, 0x19, 0x38, 0x1b, 0xb7, 0x1c, 0xf0, 0x17, 0x35, 0x13, 0x97, 0x11, 0x6a, 0x0c, 0x08, 0x07, + 0x42, 0x05, 0x79, 0x02, 0xc0, 0xfe, 0xb2, 0xf9, 0x95, 0xf5, 0xaf, 0xf4, 0xb6, 0xf1, 0x77, 0xed, + 0xb3, 0xe9, 0x4f, 0xe7, 0xb1, 0xe7, 0xbf, 0xe8, 0x85, 0xe9, 0xa8, 0xeb, 0xe4, 0xec, 0x34, 0xed, + 0xe2, 0xef, 0xa5, 0xf6, 0xae, 0xfb, 0xba, 0xf8, 0xa3, 0xf7, 0x26, 0xfc, 0x1f, 0x03, 0xc5, 0x07, + 0x61, 0x08, 0xbb, 0x07, 0xec, 0x08, 0x34, 0x09, 0xa2, 0x08, 0x42, 0x0a, 0x03, 0x0b, 0x66, 0x06, + 0xcb, 0xfe, 0xa6, 0xfd, 0x07, 0x00, 0x5a, 0xff, 0x53, 0xfa, 0x5b, 0xf5, 0x40, 0xf5, 0xc0, 0xf5, + 0x30, 0xf4, 0x70, 0xf2, 0x69, 0xf1, 0x19, 0xee, 0x37, 0xeb, 0x83, 0xed, 0xa2, 0xf2, 0xd8, 0xf2, + 0x79, 0xf1, 0x0a, 0xf2, 0x8e, 0xf4, 0xa4, 0xfa, 0x5a, 0xfd, 0xb6, 0xfc, 0x87, 0xfc, 0x40, 0xfe, + 0x7d, 0x00, 0xf1, 0x03, 0xf0, 0x06, 0x4a, 0x06, 0x13, 0x04, 0x06, 0x06, 0x5a, 0x09, 0x1a, 0x0a, + 0x9e, 0x08, 0x54, 0x03, 0x5e, 0xff, 0x76, 0xfe, 0x4a, 0x01, 0x32, 0x03, 0xaf, 0x06, 0x86, 0x06, + 0x96, 0x06, 0x5d, 0x09, 0xff, 0x0d, 0x1d, 0x10, 0xe0, 0x11, 0x8d, 0x19, 0x00, 0x1f, 0xc4, 0x1c, + 0x42, 0x16, 0xad, 0x13, 0x3b, 0x14, 0x90, 0x12, 0x9d, 0x10, 0xe0, 0x0c, 0xae, 0x0b, 0xbf, 0x07, + 0x17, 0x01, 0x0c, 0xfe, 0x04, 0xfc, 0xfd, 0xf7, 0xc1, 0xf3, 0x9e, 0xf1, 0x33, 0xf0, 0x29, 0xee, + 0x03, 0xeb, 0x29, 0xe8, 0x3b, 0xe8, 0x13, 0xeb, 0x1c, 0xec, 0xef, 0xeb, 0xa1, 0xec, 0x15, 0xee, + 0xd1, 0xee, 0xe7, 0xf1, 0xbd, 0xf9, 0xa5, 0xfc, 0xae, 0xfb, 0x38, 0xfd, 0xf4, 0x00, 0x4b, 0x04, + 0x17, 0x06, 0xbf, 0x05, 0x70, 0x05, 0xed, 0x03, 0x78, 0x02, 0x7f, 0x02, 0x0c, 0x05, 0xa9, 0x05, + 0xe1, 0x01, 0x51, 0xfd, 0x77, 0xfd, 0x07, 0xff, 0xab, 0xfd, 0x46, 0xf8, 0x32, 0xf3, 0xdc, 0xf3, + 0xbd, 0xf4, 0x2a, 0xf4, 0x14, 0xf4, 0x36, 0xf2, 0x0c, 0xf0, 0x44, 0xef, 0xb2, 0xf1, 0x30, 0xf5, + 0xae, 0xf5, 0xdc, 0xf3, 0xfd, 0xf2, 0x15, 0xf6, 0xa2, 0xfa, 0xb9, 0xfc, 0xf1, 0xfc, 0x2f, 0xfd, + 0xef, 0xfd, 0xf1, 0xff, 0x87, 0x02, 0x83, 0x04, 0xa3, 0x05, 0xf3, 0x06, 0xbd, 0x07, 0xbc, 0x09, + 0x87, 0x08, 0xba, 0x06, 0xd9, 0x06, 0x11, 0x09, 0x9c, 0x0a, 0xf1, 0x0c, 0x32, 0x12, 0x96, 0x15, + 0x28, 0x14, 0xf9, 0x13, 0x3c, 0x17, 0xb8, 0x1a, 0x95, 0x1b, 0x96, 0x20, 0x12, 0x25, 0x05, 0x22, + 0xf2, 0x16, 0x5e, 0x14, 0xec, 0x17, 0x76, 0x1a, 0x12, 0x16, 0xb9, 0x0e, 0x52, 0x07, 0xab, 0x03, + 0x44, 0x00, 0x32, 0xfc, 0x0a, 0xf8, 0x8c, 0xf2, 0x1d, 0xeb, 0x3a, 0xe7, 0x3c, 0xea, 0x47, 0xec, + 0xd3, 0xe8, 0x75, 0xe2, 0xd4, 0xe0, 0x73, 0xe4, 0x2d, 0xe9, 0x61, 0xec, 0xdd, 0xec, 0x07, 0xed, + 0xa9, 0xef, 0x79, 0xf8, 0xf4, 0x01, 0xfb, 0x02, 0x5c, 0x01, 0x7f, 0x02, 0x06, 0x08, 0xf0, 0x0e, + 0x70, 0x11, 0xca, 0x10, 0xac, 0x0f, 0xd1, 0x0d, 0xba, 0x0d, 0xcc, 0x10, 0x08, 0x14, 0x23, 0x11, + 0x81, 0x08, 0x3b, 0x03, 0x59, 0x02, 0x85, 0x03, 0xeb, 0x00, 0x92, 0xf8, 0x77, 0xf3, 0x6b, 0xf3, + 0x3e, 0xf3, 0x2c, 0xf4, 0x41, 0xf4, 0x11, 0xf1, 0x73, 0xed, 0xe3, 0xed, 0x63, 0xf2, 0x33, 0xf6, + 0x1d, 0xf7, 0xce, 0xf3, 0x90, 0xf1, 0xf8, 0xf5, 0x68, 0xfa, 0x6d, 0xfc, 0xfe, 0xfb, 0x0e, 0xfb, + 0x97, 0xfb, 0xcb, 0xff, 0xd3, 0x02, 0x2c, 0x04, 0x8c, 0x05, 0xcd, 0x04, 0xca, 0x03, 0xcd, 0x03, + 0x91, 0x03, 0x35, 0x05, 0x20, 0x08, 0xed, 0x0a, 0xbb, 0x0d, 0x9e, 0x13, 0x5f, 0x15, 0x4b, 0x16, + 0xf7, 0x16, 0x6c, 0x14, 0x52, 0x18, 0x0f, 0x1e, 0xc7, 0x23, 0x52, 0x23, 0xb0, 0x1f, 0x62, 0x1e, + 0x0e, 0x1c, 0x96, 0x14, 0xb3, 0x0e, 0xdf, 0x0a, 0x65, 0x05, 0x88, 0x00, 0x45, 0xfb, 0xaf, 0xf7, + 0x64, 0xf1, 0xd6, 0xe9, 0x6a, 0xe1, 0xc8, 0xdc, 0xff, 0xdd, 0xbc, 0xde, 0xdb, 0xdb, 0x5d, 0xd9, + 0x81, 0xd8, 0x3f, 0xd7, 0x6d, 0xd5, 0x8b, 0xd8, 0xe9, 0xdd, 0x66, 0xe1, 0x27, 0xe4, 0x4b, 0xe6, + 0x3b, 0xef, 0xfa, 0xf5, 0x84, 0xf4, 0x9a, 0xf4, 0xef, 0xf9, 0xd0, 0x00, 0x49, 0x05, 0xc0, 0x07, + 0x6e, 0x0a, 0xb7, 0x0b, 0xc3, 0x08, 0x10, 0x08, 0x1f, 0x0b, 0xb3, 0x0f, 0x6c, 0x0d, 0x34, 0x07, + 0x4e, 0x06, 0xf0, 0x06, 0xa2, 0x04, 0x00, 0xff, 0xfb, 0xfb, 0xfa, 0xfb, 0xda, 0xfb, 0x66, 0xfb, + 0x09, 0xfc, 0xb4, 0xfb, 0xf9, 0xf7, 0x9e, 0xf4, 0x97, 0xf6, 0x3a, 0xfb, 0xb9, 0xfd, 0xec, 0xfb, + 0x9f, 0xfb, 0x61, 0xff, 0xae, 0x02, 0x38, 0x04, 0x3f, 0x05, 0x91, 0x06, 0x66, 0x07, 0x26, 0x08, + 0xcf, 0x08, 0x89, 0x09, 0x4b, 0x08, 0xa8, 0x05, 0xe5, 0x05, 0xd9, 0x06, 0x66, 0x06, 0xa5, 0x05, + 0x45, 0x06, 0x03, 0x08, 0x4d, 0x09, 0xf0, 0x0b, 0x12, 0x0f, 0x09, 0x11, 0xbe, 0x12, 0xcb, 0x14, + 0x32, 0x18, 0xb5, 0x1f, 0x6f, 0x25, 0x7d, 0x24, 0xe4, 0x22, 0x91, 0x20, 0x64, 0x20, 0x3d, 0x1e, + 0x95, 0x1b, 0x88, 0x18, 0xdb, 0x13, 0x80, 0x0d, 0x7d, 0x09, 0xf8, 0x04, 0x6a, 0x02, 0x54, 0xfc, + 0xd9, 0xf3, 0x02, 0xed, 0x7e, 0xe7, 0x49, 0xe3, 0x4e, 0xdf, 0x0b, 0xdb, 0xb9, 0xd7, 0x06, 0xd5, + 0xca, 0xd4, 0x1e, 0xd7, 0xbd, 0xd9, 0x0c, 0xdb, 0xb5, 0xdc, 0xf8, 0xdf, 0xd8, 0xe5, 0xb6, 0xef, + 0x77, 0xf3, 0x44, 0xf3, 0x0b, 0xf7, 0xc5, 0xfc, 0x85, 0x03, 0x4c, 0x08, 0x6a, 0x09, 0x4e, 0x09, + 0x56, 0x0b, 0x11, 0x0e, 0x03, 0x12, 0x60, 0x14, 0x43, 0x14, 0x33, 0x0e, 0x73, 0x0a, 0x66, 0x0b, + 0x74, 0x0d, 0x94, 0x0c, 0x68, 0x07, 0x80, 0x02, 0x42, 0x01, 0x07, 0x02, 0xf0, 0x01, 0xac, 0x00, + 0x04, 0xfd, 0xaf, 0xf9, 0xda, 0xf7, 0xf1, 0xf9, 0xb7, 0xfc, 0xfe, 0xfb, 0xd7, 0xf9, 0x72, 0xf8, + 0xc1, 0xfb, 0xcc, 0xff, 0x32, 0x01, 0x3c, 0x01, 0xd6, 0xfe, 0xfc, 0xfd, 0xc5, 0xff, 0x2b, 0x00, + 0xa5, 0x00, 0x81, 0x02, 0x79, 0x01, 0x53, 0x01, 0xee, 0x00, 0xf9, 0xff, 0xf3, 0x00, 0x0f, 0x02, + 0x44, 0x01, 0x69, 0x07, 0xb3, 0x0d, 0x24, 0x0e, 0xe5, 0x0c, 0xc3, 0x0d, 0x64, 0x13, 0x6f, 0x1a, + 0x50, 0x1d, 0x58, 0x1e, 0x3f, 0x1c, 0x49, 0x19, 0x42, 0x17, 0xba, 0x17, 0xfc, 0x16, 0xe3, 0x10, + 0xb4, 0x08, 0x33, 0x04, 0xaa, 0x03, 0xd5, 0x03, 0x88, 0x00, 0x17, 0xf9, 0x43, 0xf1, 0x01, 0xeb, + 0xb3, 0xe7, 0xde, 0xe5, 0x92, 0xe4, 0xed, 0xe0, 0xce, 0xdc, 0x81, 0xda, 0x21, 0xdb, 0xf1, 0xde, + 0x8c, 0xe0, 0x84, 0xdf, 0x32, 0xe1, 0xa9, 0xe4, 0x39, 0xeb, 0x13, 0xf4, 0xf0, 0xf3, 0x3f, 0xf1, + 0xc9, 0xf2, 0x99, 0xf7, 0x59, 0xfe, 0x91, 0x03, 0x99, 0x05, 0x63, 0x06, 0xcb, 0x06, 0xfb, 0x07, + 0xa7, 0x09, 0x4f, 0x0c, 0x22, 0x0b, 0x94, 0x06, 0x26, 0x04, 0xcd, 0x04, 0x74, 0x06, 0xbf, 0x03, + 0x39, 0xfe, 0x2f, 0xfa, 0x4e, 0xf9, 0x60, 0xfb, 0xab, 0xfc, 0x7d, 0xfb, 0x88, 0xf8, 0xca, 0xf3, + 0xdc, 0xf1, 0x92, 0xf4, 0xd4, 0xf7, 0xb6, 0xf9, 0xa9, 0xf7, 0x3b, 0xf8, 0xb4, 0xfb, 0x10, 0xfe, + 0xc5, 0x00, 0x91, 0xff, 0xc7, 0xfe, 0x0b, 0x01, 0x45, 0x03, 0x37, 0x06, 0x85, 0x09, 0x3a, 0x0b, + 0x27, 0x0b, 0xb2, 0x09, 0x8a, 0x07, 0xe2, 0x06, 0x23, 0x08, 0xdd, 0x08, 0x7d, 0x0b, 0x9c, 0x10, + 0xd7, 0x12, 0x59, 0x12, 0xcb, 0x10, 0xa5, 0x12, 0xaa, 0x19, 0xff, 0x1f, 0xdf, 0x23, 0x7b, 0x22, + 0x7b, 0x1f, 0xe9, 0x1b, 0xa6, 0x17, 0xf4, 0x16, 0x94, 0x16, 0x62, 0x13, 0x96, 0x0d, 0x3d, 0x08, + 0xb7, 0x04, 0x9d, 0x03, 0xb3, 0xff, 0x98, 0xfa, 0xbf, 0xf4, 0x59, 0xf0, 0x88, 0xed, 0xa4, 0xeb, + 0x2a, 0xeb, 0x14, 0xe8, 0xbd, 0xe3, 0x93, 0xe1, 0x19, 0xe3, 0x8b, 0xe6, 0xc4, 0xea, 0xce, 0xea, + 0xf3, 0xeb, 0x94, 0xee, 0xc3, 0xf3, 0x9c, 0xf7, 0x5a, 0xf7, 0xfa, 0xf7, 0x52, 0xfb, 0xfa, 0x00, + 0x02, 0x05, 0x9d, 0x06, 0x49, 0x05, 0xbd, 0x03, 0x61, 0x01, 0x35, 0x01, 0x3b, 0x04, 0x5f, 0x05, + 0x94, 0x02, 0x6c, 0xfe, 0xb0, 0xfc, 0x5d, 0xfb, 0xcb, 0xfb, 0x4c, 0xfa, 0xe1, 0xf5, 0xac, 0xf4, + 0x88, 0xf5, 0x1f, 0xf7, 0xfe, 0xf7, 0xe9, 0xf6, 0x92, 0xf3, 0xf7, 0xf0, 0x57, 0xf2, 0x83, 0xf6, + 0x2a, 0xf9, 0x78, 0xfa, 0x1e, 0xfa, 0x51, 0xfa, 0x1c, 0xfc, 0xd8, 0xfd, 0x92, 0xff, 0x6b, 0xff, + 0x75, 0xfe, 0x1b, 0x01, 0x0f, 0x04, 0x2f, 0x06, 0x2c, 0x07, 0xde, 0x06, 0x52, 0x06, 0xfb, 0x05, + 0xe3, 0x06, 0x79, 0x07, 0x0e, 0x09, 0x42, 0x0a, 0x21, 0x0f, 0xa6, 0x15, 0x96, 0x19, 0x1e, 0x18, + 0x17, 0x17, 0x7a, 0x19, 0xc0, 0x20, 0x7a, 0x2c, 0x59, 0x2d, 0xde, 0x28, 0x64, 0x24, 0xbb, 0x20, + 0x02, 0x21, 0xdb, 0x20, 0x94, 0x1d, 0x1d, 0x18, 0x90, 0x12, 0x4e, 0x0d, 0x29, 0x0d, 0xc4, 0x0a, + 0x19, 0x06, 0xa9, 0xfc, 0xf7, 0xf2, 0x84, 0xee, 0xdd, 0xed, 0x4d, 0xee, 0xad, 0xea, 0x04, 0xe6, + 0xf4, 0xe1, 0xb8, 0xdf, 0xce, 0xe0, 0x4b, 0xe5, 0x89, 0xe6, 0x2e, 0xe5, 0x4c, 0xe5, 0x92, 0xe9, + 0x4a, 0xf2, 0xa8, 0xf3, 0x07, 0xf3, 0x69, 0xf4, 0xbd, 0xf8, 0xbd, 0xfd, 0xcc, 0x02, 0x7b, 0x04, + 0xe3, 0x05, 0xea, 0x04, 0x18, 0x00, 0xe6, 0x00, 0x33, 0x04, 0xe5, 0x04, 0x07, 0x04, 0x5b, 0x01, + 0x71, 0xff, 0x8e, 0x00, 0x70, 0xfd, 0x6f, 0xf8, 0x37, 0xf6, 0x52, 0xf3, 0x5c, 0xf1, 0x46, 0xf2, + 0xa4, 0xf3, 0x7e, 0xf2, 0x9d, 0xee, 0x1f, 0xec, 0x3f, 0xec, 0x96, 0xf0, 0xc6, 0xf3, 0x30, 0xf4, + 0x5a, 0xf7, 0x23, 0xfa, 0x47, 0xfb, 0x0e, 0xfd, 0x63, 0xfd, 0x21, 0xfc, 0x37, 0xfe, 0xfd, 0xfe, + 0x4a, 0x01, 0x6c, 0x05, 0x81, 0x08, 0xed, 0x06, 0x36, 0x05, 0x3d, 0x04, 0x57, 0x04, 0x8a, 0x06, + 0xaf, 0x08, 0xee, 0x0b, 0x97, 0x0f, 0x1c, 0x12, 0xc3, 0x13, 0x71, 0x12, 0xe5, 0x16, 0xdd, 0x1d, + 0x25, 0x20, 0xe1, 0x20, 0x6b, 0x1d, 0x2b, 0x1c, 0x46, 0x19, 0x58, 0x15, 0x99, 0x12, 0x1b, 0x10, + 0x99, 0x0b, 0xbc, 0x06, 0x58, 0x02, 0xbe, 0xff, 0x3f, 0xfd, 0x45, 0xf6, 0x83, 0xef, 0x29, 0xe9, + 0x68, 0xe6, 0x70, 0xe4, 0xc9, 0xe1, 0x84, 0xdf, 0xf8, 0xdd, 0xba, 0xdc, 0x4b, 0xdb, 0x9d, 0xdd, + 0xbe, 0xe0, 0x09, 0xe4, 0xd6, 0xe5, 0x8a, 0xe9, 0x7c, 0xee, 0x7b, 0xf6, 0xbe, 0xf9, 0x8e, 0xf8, + 0x12, 0xfa, 0x2f, 0xff, 0x18, 0x05, 0x0e, 0x09, 0x72, 0x0a, 0xae, 0x0a, 0x9d, 0x0a, 0x64, 0x09, + 0xcd, 0x08, 0xeb, 0x0a, 0xf3, 0x0b, 0x69, 0x0a, 0x01, 0x09, 0xf5, 0x08, 0xa1, 0x07, 0x25, 0x06, + 0xba, 0x00, 0x96, 0xfb, 0x94, 0xfa, 0x27, 0xfa, 0x61, 0xf9, 0x92, 0xf8, 0xb0, 0xf7, 0x99, 0xf5, + 0x93, 0xf4, 0x9f, 0xf3, 0x6c, 0xf4, 0x05, 0xf7, 0x5a, 0xf8, 0x30, 0xfa, 0x60, 0xfc, 0xdc, 0xfc, + 0xc3, 0xfc, 0x18, 0xfd, 0x6a, 0xfc, 0x2e, 0xfd, 0xfe, 0xff, 0x96, 0x00, 0xe7, 0x02, 0x50, 0x07, + 0x1e, 0x0c, 0x1b, 0x0c, 0x03, 0x0b, 0x5d, 0x09, 0xf3, 0x09, 0xdf, 0x0c, 0x65, 0x10, 0xc4, 0x14, + 0xc0, 0x17, 0x79, 0x19, 0x24, 0x18, 0xfb, 0x19, 0x50, 0x1d, 0x32, 0x21, 0x7d, 0x23, 0x78, 0x21, + 0xfc, 0x1e, 0x39, 0x1e, 0x56, 0x1c, 0xf8, 0x18, 0xaf, 0x14, 0xe8, 0x0f, 0x92, 0x0b, 0x1c, 0x05, + 0xfb, 0x02, 0xd3, 0x02, 0xe3, 0xfe, 0xf2, 0xf7, 0x47, 0xf0, 0xb5, 0xec, 0x27, 0xed, 0x53, 0xec, + 0xf9, 0xea, 0x7d, 0xe9, 0xdc, 0xe7, 0x62, 0xe8, 0xa3, 0xe6, 0x32, 0xe6, 0x0e, 0xe8, 0x04, 0xe8, + 0xfd, 0xe8, 0xeb, 0xeb, 0x71, 0xf3, 0x11, 0xf9, 0x95, 0xf7, 0x16, 0xf5, 0x5c, 0xf8, 0xcf, 0xfe, + 0xe1, 0x03, 0x89, 0x06, 0xa4, 0x07, 0x30, 0x0a, 0xba, 0x09, 0xb1, 0x07, 0x53, 0x09, 0x63, 0x09, + 0x7a, 0x07, 0x55, 0x05, 0xd3, 0x04, 0x7d, 0x06, 0xb1, 0x07, 0xc2, 0x01, 0xb4, 0xfb, 0x81, 0xf9, + 0xed, 0xf8, 0x17, 0xf9, 0x1d, 0xf9, 0x86, 0xf9, 0x89, 0xf8, 0x69, 0xf7, 0xc5, 0xf5, 0x5d, 0xf6, + 0xdc, 0xf6, 0xc8, 0xf5, 0x7e, 0xf5, 0xcd, 0xf6, 0x32, 0xfa, 0x05, 0xfb, 0xc6, 0xfb, 0x5d, 0xfa, + 0x46, 0xf9, 0x07, 0xfa, 0x03, 0xfa, 0x06, 0xfd, 0x14, 0x02, 0x75, 0x03, 0x0a, 0x02, 0x37, 0xff, + 0xa1, 0xfd, 0x55, 0xfd, 0x12, 0xfe, 0xe2, 0x00, 0x18, 0x07, 0x9a, 0x0a, 0x22, 0x0b, 0xd1, 0x0d, + 0xfb, 0x10, 0xdd, 0x16, 0x52, 0x1a, 0xba, 0x1c, 0x22, 0x1b, 0xb8, 0x18, 0x96, 0x17, 0x88, 0x19, + 0x64, 0x1a, 0x47, 0x16, 0xed, 0x0f, 0x02, 0x08, 0xcd, 0x02, 0xd0, 0x00, 0x08, 0xff, 0xeb, 0xfb, + 0x24, 0xf7, 0x29, 0xf0, 0xcd, 0xea, 0x43, 0xe9, 0x3e, 0xe8, 0xf1, 0xe6, 0xf3, 0xe3, 0x21, 0xe0, + 0x68, 0xde, 0xbf, 0xde, 0xdf, 0xdf, 0x71, 0xe1, 0xf6, 0xe3, 0x15, 0xe5, 0x76, 0xe6, 0xdb, 0xec, + 0x79, 0xf5, 0xc7, 0xf7, 0xa8, 0xf8, 0x31, 0xfa, 0x48, 0xfe, 0x3c, 0x04, 0x5a, 0x08, 0x61, 0x0a, + 0x48, 0x0c, 0x35, 0x0d, 0x31, 0x0b, 0x73, 0x0c, 0xf0, 0x0d, 0xb2, 0x0d, 0xb6, 0x0b, 0xf3, 0x0b, + 0x8d, 0x0c, 0xc4, 0x0d, 0xba, 0x0c, 0x92, 0x07, 0x65, 0x05, 0xfe, 0x03, 0x34, 0x03, 0x10, 0x02, + 0xcf, 0x01, 0x51, 0x00, 0xdd, 0xfd, 0xab, 0xfc, 0xff, 0xfb, 0x80, 0xfc, 0x20, 0xfc, 0xc2, 0xfb, + 0x26, 0xfb, 0x9c, 0xfc, 0xd5, 0xfd, 0x82, 0xfe, 0x57, 0xfe, 0x8d, 0xfd, 0x02, 0xff, 0xc3, 0xfc, + 0x37, 0xfd, 0x44, 0xff, 0x91, 0x00, 0x8c, 0x00, 0x83, 0xfe, 0x9f, 0xfe, 0xbb, 0x00, 0xdd, 0x02, + 0xc2, 0x02, 0xf0, 0x07, 0xfa, 0x0c, 0x34, 0x0f, 0x3f, 0x11, 0x4a, 0x12, 0xaf, 0x15, 0x15, 0x1a, + 0x8d, 0x1b, 0xfa, 0x1b, 0xd4, 0x1b, 0x1f, 0x18, 0x81, 0x12, 0x33, 0x0f, 0xb8, 0x0e, 0x42, 0x0f, + 0x6a, 0x0b, 0x94, 0x05, 0x99, 0x00, 0x2b, 0xfe, 0x53, 0xfb, 0x29, 0xf7, 0x1c, 0xf4, 0x6a, 0xf0, + 0x9f, 0xec, 0xcf, 0xe9, 0x2e, 0xea, 0x67, 0xea, 0x57, 0xe9, 0x45, 0xe6, 0xd2, 0xe5, 0xc5, 0xe6, + 0x32, 0xe8, 0x9e, 0xec, 0xc2, 0xf0, 0x4e, 0xf3, 0x89, 0xf5, 0x5f, 0xfb, 0x49, 0xfe, 0xc6, 0xff, + 0xf1, 0x01, 0x2b, 0x04, 0x53, 0x07, 0x4a, 0x0a, 0x16, 0x0c, 0xcb, 0x0c, 0xa5, 0x0e, 0xb1, 0x0b, + 0x5c, 0x09, 0xf7, 0x09, 0x25, 0x09, 0x29, 0x08, 0x27, 0x08, 0x5d, 0x07, 0x3f, 0x06, 0xad, 0x05, + 0x90, 0x01, 0x68, 0xfd, 0x93, 0xfa, 0xbe, 0xf8, 0x6a, 0xf7, 0x9d, 0xf8, 0x0c, 0xf9, 0xbc, 0xf6, + 0x3e, 0xf6, 0x84, 0xf5, 0xbc, 0xf6, 0xca, 0xf8, 0xd2, 0xfa, 0xff, 0xfc, 0x2a, 0xfe, 0xdb, 0xfe, + 0x4f, 0xff, 0x33, 0xff, 0x5d, 0x00, 0xcc, 0x02, 0x0a, 0x01, 0x9c, 0xff, 0x42, 0x01, 0xe0, 0x01, + 0x96, 0x02, 0x42, 0x03, 0x7f, 0x01, 0xa3, 0x00, 0x48, 0x02, 0x6b, 0x01, 0x73, 0x06, 0x62, 0x0c, + 0x1a, 0x0e, 0x42, 0x0f, 0x22, 0x10, 0xd1, 0x10, 0x1e, 0x16, 0x67, 0x1b, 0x07, 0x1b, 0x05, 0x19, + 0x97, 0x15, 0x68, 0x15, 0xbb, 0x14, 0xef, 0x13, 0x06, 0x11, 0x0e, 0x0c, 0x0b, 0x07, 0x6c, 0x02, + 0x4c, 0xff, 0x60, 0xfe, 0x91, 0xfb, 0x35, 0xf4, 0xbf, 0xee, 0x12, 0xeb, 0x89, 0xe9, 0xe1, 0xe7, + 0xeb, 0xe6, 0x7c, 0xe5, 0xaa, 0xe3, 0xbe, 0xe3, 0x4f, 0xe3, 0x6f, 0xe3, 0x28, 0xe5, 0x5f, 0xe6, + 0x75, 0xe7, 0x3d, 0xea, 0x3a, 0xf1, 0xd4, 0xf5, 0x39, 0xf6, 0xa9, 0xf5, 0x1c, 0xf8, 0x1d, 0xfd, + 0x73, 0x00, 0xb0, 0x01, 0x61, 0x03, 0xb7, 0x06, 0x1f, 0x07, 0xd0, 0x06, 0x83, 0x08, 0x27, 0x09, + 0xe1, 0x06, 0xc1, 0x03, 0x87, 0x03, 0x00, 0x04, 0xd0, 0x04, 0x99, 0x01, 0xad, 0xfc, 0xaf, 0xfa, + 0x3e, 0xfa, 0x7a, 0xf9, 0x63, 0xfa, 0x8f, 0xfa, 0xb2, 0xf8, 0x58, 0xf8, 0x61, 0xf7, 0xbb, 0xf8, + 0xa0, 0xfa, 0xb0, 0xf9, 0x91, 0xf8, 0x20, 0xf9, 0xfd, 0xfa, 0xe6, 0xfc, 0x90, 0xfe, 0x93, 0xfe, + 0xcb, 0x00, 0x5c, 0x01, 0xe8, 0x00, 0x3f, 0x03, 0x53, 0x06, 0x0d, 0x09, 0xa2, 0x07, 0xb5, 0x05, + 0x7e, 0x06, 0x7b, 0x0a, 0x3a, 0x0a, 0xd9, 0x0c, 0xc2, 0x11, 0xee, 0x13, 0x84, 0x14, 0x19, 0x15, + 0xe2, 0x17, 0x85, 0x1b, 0xe0, 0x1e, 0x35, 0x1f, 0xb7, 0x1e, 0x54, 0x1e, 0x2f, 0x1b, 0xd0, 0x19, + 0xcf, 0x17, 0x5a, 0x15, 0xd8, 0x10, 0x35, 0x0a, 0x84, 0x04, 0x80, 0x01, 0x83, 0xfe, 0xcb, 0xfa, + 0xb2, 0xf6, 0x0e, 0xf1, 0xee, 0xec, 0x3c, 0xe8, 0x3d, 0xe6, 0x30, 0xe5, 0xb8, 0xe4, 0xa1, 0xe1, + 0x40, 0xdf, 0x15, 0xdf, 0xa4, 0xde, 0xc0, 0xde, 0x95, 0xe0, 0x33, 0xe3, 0x5d, 0xe4, 0x4f, 0xe8, + 0x7f, 0xef, 0x06, 0xf3, 0x3e, 0xf5, 0x8a, 0xf6, 0x7b, 0xf9, 0xaf, 0xfd, 0xd4, 0x02, 0x8f, 0x04, + 0x37, 0x07, 0xf3, 0x0a, 0x33, 0x0a, 0xe9, 0x0a, 0xce, 0x0c, 0x7b, 0x0c, 0x5c, 0x0a, 0xc2, 0x09, + 0x8b, 0x08, 0x2e, 0x09, 0x17, 0x09, 0x8f, 0x05, 0xc6, 0x02, 0xe2, 0x00, 0x6b, 0x01, 0x4f, 0x00, + 0x05, 0x00, 0x60, 0xfd, 0xed, 0xfb, 0x2f, 0xfc, 0x8d, 0xfc, 0x1d, 0xfd, 0xbf, 0xfb, 0x45, 0xfb, + 0x8a, 0xfb, 0x97, 0xfd, 0x6c, 0x00, 0x97, 0x02, 0x02, 0x02, 0x9f, 0x02, 0xfc, 0x03, 0xb7, 0x04, + 0x22, 0x07, 0xa2, 0x09, 0x0e, 0x0c, 0x11, 0x0c, 0x8e, 0x0a, 0xf9, 0x08, 0xdb, 0x09, 0x1e, 0x0d, + 0x68, 0x0e, 0x82, 0x13, 0x10, 0x18, 0x0e, 0x1c, 0x8a, 0x1b, 0x72, 0x1a, 0x9f, 0x1d, 0x3e, 0x25, + 0x8e, 0x28, 0x95, 0x23, 0xfd, 0x1d, 0x65, 0x1d, 0x59, 0x1e, 0x9d, 0x1c, 0x4f, 0x16, 0xbe, 0x11, + 0x39, 0x0c, 0x92, 0x05, 0x88, 0xff, 0x06, 0x00, 0xc7, 0xfe, 0x4c, 0xf9, 0xf8, 0xf0, 0x43, 0xeb, + 0x65, 0xe9, 0xd1, 0xe7, 0xb2, 0xe4, 0x2f, 0xe1, 0x7d, 0xdf, 0x1d, 0xdd, 0xab, 0xdc, 0x27, 0xdd, + 0xbe, 0xdd, 0xdc, 0xde, 0x14, 0xde, 0x91, 0xdf, 0xe6, 0xe3, 0x4d, 0xec, 0x50, 0xef, 0x0c, 0xee, + 0xe0, 0xed, 0x6d, 0xf0, 0x26, 0xf4, 0xbd, 0xf6, 0x33, 0xf8, 0xeb, 0xf8, 0xa5, 0xfa, 0x29, 0xfb, + 0x2f, 0xfd, 0xa3, 0x00, 0xf2, 0x01, 0xa7, 0xff, 0x9c, 0xfd, 0x5c, 0xfe, 0x57, 0x01, 0xe9, 0x03, + 0x4e, 0x03, 0x09, 0x00, 0x33, 0xfd, 0x66, 0xfc, 0x8d, 0xfd, 0x2c, 0xff, 0x5b, 0xff, 0x39, 0xfc, + 0x2b, 0xfa, 0xcf, 0xfa, 0x3a, 0xfd, 0x6c, 0xfd, 0xdb, 0xfc, 0x1b, 0xfb, 0x9a, 0xfa, 0x83, 0xfd, + 0xa4, 0x00, 0xb6, 0x00, 0x06, 0x01, 0x78, 0x00, 0x03, 0xff, 0x23, 0xff, 0x96, 0x01, 0x27, 0x04, + 0x29, 0x04, 0x63, 0x04, 0x45, 0x01, 0x78, 0x00, 0x45, 0x02, 0x7f, 0x02, 0x4d, 0x06, 0xc9, 0x0a, + 0x6d, 0x0d, 0x24, 0x0d, 0xd1, 0x0e, 0x1b, 0x13, 0xf8, 0x17, 0xb9, 0x18, 0x8e, 0x16, 0x8d, 0x16, + 0x4b, 0x14, 0x3b, 0x13, 0x8f, 0x14, 0xb9, 0x16, 0x21, 0x16, 0x3e, 0x0f, 0xa4, 0x08, 0xe0, 0x05, + 0x30, 0x05, 0x7d, 0x05, 0x3a, 0x03, 0xd4, 0xfe, 0xe2, 0xfa, 0xb7, 0xf7, 0x08, 0xf4, 0xa1, 0xf1, + 0x5b, 0xef, 0x58, 0xec, 0x66, 0xe7, 0x45, 0xe6, 0xf5, 0xe8, 0x66, 0xe9, 0xaa, 0xe8, 0x01, 0xe9, + 0x6d, 0xe9, 0xc4, 0xea, 0x01, 0xef, 0xde, 0xf2, 0x2f, 0xf3, 0x44, 0xf3, 0x38, 0xf4, 0x18, 0xf6, + 0x71, 0xf9, 0x27, 0xfc, 0xe2, 0xfc, 0xf3, 0xfe, 0xb8, 0x00, 0x79, 0x01, 0x32, 0x04, 0xcf, 0x05, + 0x7c, 0x04, 0x47, 0x04, 0x7a, 0x04, 0x9e, 0x05, 0x48, 0x06, 0x1b, 0x06, 0xa8, 0x03, 0x21, 0x02, + 0x66, 0x02, 0x35, 0x02, 0x71, 0x02, 0x4a, 0x03, 0x7b, 0x02, 0x4e, 0x01, 0x7b, 0x02, 0x21, 0x03, + 0xbd, 0x02, 0xfe, 0x01, 0xe2, 0x01, 0x9b, 0x01, 0x13, 0x03, 0x68, 0x05, 0xcf, 0x04, 0x2a, 0x04, + 0x65, 0x03, 0xf5, 0x02, 0x0d, 0x03, 0x03, 0x04, 0xcd, 0x05, 0x57, 0x08, 0x4b, 0x0a, 0x12, 0x09, + 0x0b, 0x09, 0xda, 0x08, 0x2c, 0x09, 0xaf, 0x09, 0x65, 0x0f, 0x70, 0x14, 0xa4, 0x16, 0xfb, 0x18, + 0x79, 0x18, 0x0b, 0x1c, 0xf8, 0x1f, 0xdb, 0x22, 0xc3, 0x20, 0x69, 0x1f, 0x88, 0x1d, 0xfa, 0x1c, + 0x6d, 0x1e, 0x6c, 0x1d, 0xe8, 0x18, 0x2c, 0x11, 0xd9, 0x0a, 0x5a, 0x03, 0xab, 0x01, 0xb4, 0xff, + 0x84, 0xfc, 0xba, 0xf7, 0x92, 0xf4, 0x7b, 0xf1, 0x0d, 0xef, 0xd6, 0xec, 0x22, 0xe9, 0x5b, 0xe7, + 0x20, 0xe5, 0x5b, 0xe6, 0xeb, 0xe8, 0x59, 0xea, 0x7c, 0xe9, 0x4e, 0xe9, 0x5a, 0xea, 0x2d, 0xeb, + 0xfc, 0xee, 0xa2, 0xf0, 0xdb, 0xf1, 0x63, 0xf2, 0xa9, 0xf4, 0x26, 0xf7, 0x26, 0xfa, 0x17, 0xfb, + 0x38, 0xfb, 0x7d, 0xfc, 0xbf, 0xfc, 0x5f, 0xfe, 0x90, 0xff, 0xb6, 0xff, 0x45, 0xfe, 0x92, 0xfd, + 0x03, 0xfd, 0x8f, 0xfc, 0xb7, 0xfc, 0xb2, 0xfa, 0x71, 0xf9, 0x76, 0xf8, 0xea, 0xf7, 0xb0, 0xf6, + 0xf9, 0xf6, 0x8a, 0xf6, 0x56, 0xf5, 0x36, 0xf4, 0x30, 0xf4, 0x75, 0xf4, 0x20, 0xf4, 0xc1, 0xf3, + 0x9e, 0xf4, 0x59, 0xf5, 0x84, 0xf5, 0xae, 0xf7, 0xc7, 0xf8, 0x94, 0xf8, 0xdb, 0xf9, 0x28, 0xfa, + 0x53, 0xfb, 0x1b, 0xfd, 0xa2, 0xff, 0xa9, 0x01, 0x09, 0x02, 0x05, 0x02, 0x35, 0x02, 0xc8, 0x03, + 0x17, 0x05, 0xaf, 0x05, 0x4b, 0x09, 0x8c, 0x0c, 0x78, 0x0d, 0x10, 0x10, 0x8a, 0x10, 0x38, 0x13, + 0x15, 0x18, 0xae, 0x1b, 0x48, 0x1b, 0x6c, 0x19, 0xc2, 0x17, 0xc2, 0x16, 0x1f, 0x15, 0x77, 0x12, + 0x70, 0x0f, 0x84, 0x09, 0x32, 0x05, 0x03, 0x01, 0x21, 0xff, 0x67, 0xfe, 0xf2, 0xfa, 0xc2, 0xf6, + 0x83, 0xf3, 0x7f, 0xf1, 0xe2, 0xef, 0xcd, 0xee, 0x83, 0xed, 0x04, 0xed, 0x9c, 0xea, 0x47, 0xea, + 0x13, 0xeb, 0xaa, 0xec, 0x30, 0xee, 0x96, 0xf0, 0x9b, 0xf3, 0x06, 0xf6, 0x72, 0xfa, 0xc0, 0xfd, + 0x36, 0x00, 0x80, 0x01, 0x5a, 0x02, 0x4f, 0x03, 0x69, 0x05, 0xe7, 0x06, 0xac, 0x07, 0x9d, 0x08, + 0x50, 0x07, 0x8e, 0x06, 0x34, 0x06, 0x24, 0x05, 0x02, 0x03, 0x90, 0x01, 0x16, 0x01, 0x56, 0x01, + 0x10, 0x01, 0xc4, 0x00, 0x6b, 0xff, 0xb9, 0xfc, 0x41, 0xfa, 0x79, 0xf8, 0x9d, 0xf8, 0xf3, 0xf8, + 0x0c, 0xf7, 0x14, 0xf6, 0xb1, 0xf6, 0xab, 0xf7, 0xe1, 0xf7, 0xa9, 0xf7, 0x08, 0xf8, 0xd3, 0xf8, + 0x16, 0xfa, 0x2f, 0xfb, 0x46, 0xfc, 0x90, 0xfc, 0xe9, 0xfc, 0xd5, 0xfb, 0x60, 0xfa, 0x73, 0xfa, + 0x18, 0xfd, 0x96, 0x00, 0xba, 0x04, 0x37, 0x06, 0x5c, 0x05, 0x1e, 0x05, 0xcb, 0x05, 0x37, 0x08, + 0x22, 0x0c, 0x36, 0x11, 0x75, 0x13, 0x5b, 0x17, 0x85, 0x19, 0x71, 0x1b, 0xa6, 0x1d, 0x42, 0x1f, + 0x75, 0x21, 0x12, 0x22, 0xb3, 0x22, 0xf7, 0x1f, 0x49, 0x1f, 0x0e, 0x1d, 0xf3, 0x19, 0x4f, 0x17, + 0xc0, 0x14, 0x8e, 0x10, 0xd0, 0x0b, 0xf5, 0x09, 0x38, 0x07, 0xa3, 0x05, 0xa5, 0x01, 0x3f, 0xfd, + 0x4d, 0xf7, 0x2c, 0xf3, 0x70, 0xf0, 0x90, 0xee, 0x9a, 0xed, 0x3b, 0xeb, 0x30, 0xea, 0x29, 0xe9, + 0x08, 0xe9, 0xf0, 0xe8, 0x52, 0xea, 0x44, 0xeb, 0x1e, 0xed, 0xad, 0xef, 0x2a, 0xf0, 0xeb, 0xf0, + 0xc6, 0xf0, 0x3b, 0xf2, 0x95, 0xf3, 0xb4, 0xf6, 0x1b, 0xf9, 0xf2, 0xfa, 0xab, 0xfb, 0x7f, 0xfc, + 0x19, 0xfe, 0xfc, 0xfe, 0x6f, 0xff, 0xc5, 0xff, 0x96, 0x01, 0x6d, 0x02, 0x7d, 0x03, 0xe7, 0x03, + 0x48, 0x03, 0x8a, 0x01, 0x47, 0xff, 0xbd, 0xfc, 0x7e, 0xfb, 0x6c, 0xfb, 0x29, 0xfa, 0xd9, 0xfa, + 0x1b, 0xfb, 0xa2, 0xfb, 0x3d, 0xfb, 0x83, 0xfa, 0xdd, 0xf8, 0x21, 0xf8, 0xfe, 0xf7, 0xcf, 0xf6, + 0x22, 0xf7, 0x5b, 0xf7, 0x4c, 0xf7, 0x13, 0xf6, 0x33, 0xf6, 0x57, 0xf6, 0x51, 0xf5, 0x7e, 0xf6, + 0x3c, 0xf8, 0xc3, 0xfb, 0xa2, 0xfe, 0xe6, 0xfe, 0xae, 0xfd, 0x12, 0xfe, 0xc8, 0xfe, 0x02, 0x01, + 0x96, 0x06, 0xf5, 0x09, 0x4a, 0x0d, 0x01, 0x10, 0x14, 0x13, 0x42, 0x15, 0xf2, 0x18, 0x55, 0x1c, + 0x2f, 0x1d, 0x58, 0x1c, 0x51, 0x1a, 0x38, 0x19, 0x23, 0x19, 0xb2, 0x18, 0xde, 0x15, 0xe8, 0x11, + 0xf6, 0x0c, 0x09, 0x08, 0xfd, 0x04, 0x2b, 0x03, 0xfe, 0x00, 0xbc, 0xfd, 0xa2, 0xf8, 0x8e, 0xf3, + 0xbb, 0xf0, 0x7d, 0xf0, 0x9e, 0xef, 0xd7, 0xec, 0x60, 0xea, 0x8b, 0xe9, 0x05, 0xeb, 0x26, 0xec, + 0xce, 0xeb, 0xf5, 0xeb, 0x49, 0xec, 0xb8, 0xec, 0x38, 0xef, 0x28, 0xf4, 0xc7, 0xf7, 0x11, 0xf8, + 0x53, 0xf7, 0x62, 0xf9, 0x26, 0xfd, 0xb7, 0x00, 0xef, 0x00, 0x2a, 0x00, 0xdb, 0x00, 0x11, 0x01, + 0x87, 0x01, 0xff, 0x02, 0x01, 0x04, 0xf7, 0x03, 0x6d, 0x03, 0x99, 0x03, 0x63, 0x06, 0x3b, 0x08, + 0xcc, 0x06, 0xd1, 0x04, 0x99, 0x04, 0x64, 0x04, 0x8c, 0x04, 0xd4, 0x04, 0xa5, 0x03, 0xa4, 0x01, + 0xd8, 0x00, 0x08, 0x00, 0x92, 0xff, 0x2d, 0x00, 0xa7, 0xff, 0x1e, 0xfe, 0x02, 0xfe, 0xdc, 0xfe, + 0x14, 0xff, 0xd0, 0x00, 0x26, 0x01, 0x91, 0x00, 0x48, 0x00, 0x7b, 0x00, 0x62, 0x00, 0xfa, 0x00, + 0x69, 0x02, 0xbc, 0x04, 0x5e, 0x05, 0xd7, 0x02, 0xce, 0x01, 0x27, 0x02, 0x97, 0x02, 0x81, 0x01, + 0xc9, 0x03, 0xa0, 0x06, 0x8f, 0x08, 0x1b, 0x09, 0x47, 0x0a, 0xc7, 0x0b, 0x2a, 0x0e, 0x40, 0x0d, + 0xf4, 0x0c, 0xa9, 0x0f, 0x14, 0x12, 0x0c, 0x10, 0x92, 0x0c, 0x05, 0x0d, 0x43, 0x0d, 0x23, 0x0d, + 0x70, 0x09, 0x2f, 0x08, 0xc9, 0x06, 0x59, 0x04, 0xc0, 0x00, 0xcc, 0xfe, 0x1a, 0xfd, 0x8f, 0xfa, + 0x1a, 0xf8, 0x34, 0xf6, 0xcc, 0xf6, 0x33, 0xf5, 0x9f, 0xf2, 0xbe, 0xef, 0x86, 0xef, 0xfe, 0xf0, + 0x1d, 0xf0, 0xf0, 0xed, 0xc1, 0xee, 0x59, 0xf1, 0x9b, 0xf1, 0x20, 0xf4, 0x20, 0xf8, 0x15, 0xf9, + 0xd1, 0xf7, 0x1f, 0xf7, 0xe4, 0xf7, 0x3d, 0xfa, 0xbe, 0xfc, 0x93, 0xfc, 0x37, 0xfd, 0x53, 0xff, + 0xad, 0x00, 0xd1, 0x01, 0x51, 0x04, 0x26, 0x05, 0x47, 0x04, 0x2a, 0x04, 0xd5, 0x04, 0x33, 0x07, + 0x8b, 0x08, 0x39, 0x07, 0x8e, 0x05, 0xdd, 0x05, 0xb4, 0x05, 0x14, 0x05, 0xa7, 0x04, 0x30, 0x04, + 0xd4, 0x02, 0xfb, 0x01, 0xcc, 0x01, 0xeb, 0x01, 0xab, 0x01, 0x14, 0x01, 0xf1, 0xff, 0x39, 0xff, + 0x68, 0xff, 0xbd, 0xff, 0x9a, 0xff, 0x9c, 0xfe, 0xe5, 0xfe, 0x45, 0xfe, 0xd8, 0xfd, 0xd6, 0xfd, + 0xe9, 0xfc, 0x72, 0xfc, 0x09, 0xfe, 0x47, 0xff, 0xc1, 0xff, 0xac, 0xff, 0x11, 0xff, 0xf8, 0xfc, + 0x0a, 0xfc, 0x75, 0xfb, 0xeb, 0xfc, 0x7b, 0xff, 0x75, 0x00, 0x17, 0x01, 0xf3, 0x00, 0x3a, 0x02, + 0x20, 0x03, 0x72, 0x05, 0x3a, 0x08, 0xe9, 0x08, 0x78, 0x0a, 0x1d, 0x0b, 0x3e, 0x0a, 0x6a, 0x09, + 0xf2, 0x07, 0x1c, 0x05, 0xd7, 0x03, 0x8e, 0x02, 0x7e, 0x01, 0xd8, 0x01, 0x2f, 0x01, 0x8e, 0xff, + 0x72, 0xfd, 0x73, 0xfc, 0xba, 0xfa, 0x5d, 0xf8, 0xef, 0xf6, 0xfc, 0xf5, 0x4f, 0xf5, 0xa8, 0xf4, + 0xa5, 0xf4, 0xe6, 0xf4, 0x71, 0xf5, 0xca, 0xf4, 0x86, 0xf3, 0x8e, 0xf3, 0x56, 0xf5, 0x47, 0xf6, + 0xad, 0xf8, 0x5b, 0xfb, 0xa9, 0xfb, 0x24, 0xfb, 0x8c, 0xfa, 0x92, 0xfb, 0x8a, 0xff, 0x96, 0x01, + 0xbe, 0x00, 0x48, 0x00, 0xde, 0x00, 0x54, 0x01, 0x59, 0x01, 0xae, 0x01, 0x7f, 0x01, 0xd8, 0xff, + 0x6c, 0xfe, 0x62, 0xfe, 0x6d, 0x01, 0x31, 0x03, 0x2d, 0x01, 0xbb, 0xfe, 0x6f, 0xfd, 0x0d, 0xfc, + 0x13, 0xfb, 0xf9, 0xf9, 0x46, 0xf8, 0x20, 0xf8, 0xb6, 0xf8, 0x35, 0xfa, 0xb2, 0xfa, 0x15, 0xfb, + 0x52, 0xfa, 0x89, 0xfa, 0xd4, 0xfb, 0xae, 0xfe, 0x10, 0x02, 0x14, 0x03, 0xf9, 0x02, 0xc2, 0x04, + 0x04, 0x06, 0x15, 0x06, 0x59, 0x08, 0x5b, 0x08, 0xf1, 0x06, 0xaa, 0x05, 0x5b, 0x06, 0xee, 0x07, + 0xc8, 0x08, 0x22, 0x09, 0x6c, 0x08, 0x9d, 0x07, 0xdd, 0x06, 0xa9, 0x05, 0x54, 0x07, 0x76, 0x08, + 0xbc, 0x08, 0xdd, 0x09, 0x13, 0x08, 0x59, 0x06, 0x92, 0x07, 0x9d, 0x09, 0x25, 0x09, 0xa3, 0x08, + 0x1f, 0x08, 0x98, 0x08, 0x12, 0x08, 0x88, 0x08, 0x7b, 0x07, 0x01, 0x05, 0xe0, 0x03, 0x31, 0x02, + 0xdb, 0x01, 0x28, 0x02, 0x5d, 0x00, 0x85, 0xfd, 0xfc, 0xfb, 0xf4, 0xfa, 0xc7, 0xfb, 0xc9, 0xfb, + 0x5c, 0xfa, 0xbf, 0xf8, 0xc8, 0xf7, 0xc0, 0xf7, 0x30, 0xf8, 0x1f, 0xf9, 0xba, 0xf9, 0x11, 0xfa, + 0x05, 0xf9, 0x49, 0xf9, 0x4a, 0xfa, 0x97, 0xfb, 0x96, 0xfc, 0x8f, 0xfc, 0x79, 0xfe, 0x42, 0x00, + 0x58, 0xff, 0xc3, 0xfe, 0x49, 0x00, 0x6a, 0x01, 0x02, 0x02, 0xe3, 0x01, 0xbf, 0x01, 0x1b, 0x03, + 0xeb, 0x03, 0x3c, 0x03, 0x76, 0x03, 0xb3, 0x02, 0x0a, 0x01, 0xec, 0xff, 0x47, 0xff, 0xac, 0x00, + 0xa9, 0x00, 0x89, 0x02, 0xbf, 0x01, 0x9e, 0x01, 0x20, 0x02, 0xe3, 0x00, 0xc3, 0x00, 0x5b, 0x01, + 0xe9, 0xff, 0x8d, 0xfe, 0x4c, 0xfe, 0x13, 0xfe, 0xcc, 0xff, 0xab, 0x00, 0xf8, 0xfe, 0x32, 0xfe, + 0x08, 0xff, 0x8b, 0xfe, 0x1d, 0x01, 0x5e, 0x02, 0x82, 0x02, 0x0c, 0x02, 0x26, 0x03, 0x3f, 0x02, + 0x8c, 0x03, 0xe2, 0x03, 0x26, 0x00, 0x28, 0x00, 0x66, 0x01, 0x13, 0x02, 0xe5, 0x02, 0xcd, 0x03, + 0xec, 0x04, 0xde, 0x04, 0x08, 0x06, 0xa2, 0x04, 0x7f, 0x05, 0xfb, 0x06, 0xa8, 0x06, 0x48, 0x06, + 0x5f, 0x07, 0xb5, 0x08, 0xaa, 0x07, 0xa3, 0x05, 0x6f, 0x04, 0x3b, 0x05, 0xde, 0x03, 0x3e, 0x03, + 0x0c, 0x03, 0xac, 0x01, 0x0d, 0x00, 0xca, 0xfd, 0x24, 0xfc, 0x64, 0xfa, 0x66, 0xf9, 0x3a, 0xf9, + 0x8f, 0xf9, 0x6c, 0xf8, 0x0a, 0xf6, 0x53, 0xf3, 0x75, 0xf2, 0xd1, 0xf2, 0x96, 0xf4, 0xd8, 0xf5, + 0xfd, 0xf5, 0x70, 0xf6, 0x61, 0xf6, 0x51, 0xf7, 0x08, 0xf7, 0x05, 0xf9, 0x1a, 0xf9, 0x1a, 0xf8, + 0xd2, 0xf9, 0x58, 0xfb, 0x39, 0xfd, 0xc1, 0xfd, 0x1f, 0xfd, 0xa4, 0xfc, 0xa9, 0xfc, 0x8d, 0xfb, + 0xc5, 0xfb, 0x73, 0xfb, 0x13, 0xfa, 0x92, 0xf9, 0xca, 0xf9, 0x91, 0xfa, 0x41, 0xf9, 0x24, 0xfa, + 0x68, 0xf8, 0x04, 0xf9, 0x1c, 0xfb, 0x26, 0xfa, 0xf8, 0xf9, 0x25, 0xfc, 0xf1, 0xfa, 0x78, 0xfa, + 0xab, 0xfa, 0xce, 0xfb, 0xdc, 0xfc, 0x31, 0xfd, 0xc5, 0xfe, 0xfb, 0x00, 0xa2, 0xff, 0x7a, 0xff, + 0x37, 0x00, 0x3a, 0x04, 0xc4, 0x03, 0x1e, 0x02, 0xc5, 0x04, 0xa5, 0x04, 0x31, 0x04, 0xec, 0x04, + 0xfe, 0x05, 0x44, 0x05, 0xa4, 0x06, 0x86, 0x09, 0xb1, 0x07, 0xab, 0x09, 0xde, 0x08, 0x89, 0x08, + 0xe3, 0x08, 0x2d, 0x08, 0x9a, 0x0a, 0x9c, 0x0a, 0xd0, 0x07, 0x0f, 0x08, 0x06, 0x07, 0xc1, 0x04, + 0xe3, 0x03, 0x16, 0x05, 0x19, 0x05, 0xf1, 0x04, 0x1f, 0x03, 0x59, 0x04, 0xf8, 0x02, 0x40, 0x02, + 0xeb, 0xfe, 0x73, 0xff, 0x05, 0xfd, 0x01, 0xfb, 0x3e, 0xfb, 0xa0, 0xfc, 0x56, 0xfa, 0x1c, 0xfa, + 0x10, 0xfa, 0x0b, 0xf8, 0x44, 0xfa, 0x57, 0xfa, 0x5e, 0xfa, 0x0d, 0xfa, 0x9e, 0xfb, 0x9f, 0xfc, + 0x4c, 0xfd, 0xcc, 0xff, 0x5b, 0xfe, 0x81, 0xfb, 0xe2, 0xfe, 0xcf, 0xff, 0xc9, 0xff, 0x0c, 0x03, + 0xb7, 0x04, 0xed, 0x05, 0xea, 0x03, 0xe2, 0x03, 0xb7, 0x04, 0xa8, 0x04, 0x35, 0x03, 0xd8, 0x05, + 0x62, 0x07, 0x12, 0x08, 0x5b, 0x06, 0x36, 0x06, 0xa7, 0x07, 0xac, 0x04, 0xd0, 0x04, 0x84, 0x04, + 0xc9, 0x03, 0xce, 0x02, 0xc0, 0x03, 0x56, 0x03, 0xc9, 0x03, 0xdb, 0x04, 0xcc, 0x05, 0x6b, 0x04, + 0xd3, 0x02, 0x46, 0x03, 0x86, 0x02, 0x86, 0x02, 0x8e, 0x02, 0xb7, 0x00, 0x1a, 0x02, 0x65, 0x02, + 0x39, 0x00, 0xa8, 0xfc, 0x11, 0xfa, 0xcb, 0xfa, 0x70, 0xfa, 0xc8, 0xfb, 0xae, 0xfc, 0x10, 0xfb, + 0x6d, 0xfb, 0xde, 0xf7, 0x95, 0xf9, 0x9c, 0xfa, 0x10, 0xf9, 0xdb, 0xfc, 0xf4, 0xfa, 0x71, 0xfb, + 0xa1, 0xfb, 0xb7, 0xfc, 0x5c, 0xfe, 0x7b, 0xff, 0xb7, 0xff, 0x42, 0x00, 0x3a, 0x01, 0xb4, 0x02, + 0xeb, 0x05, 0xc6, 0x05, 0x53, 0x03, 0x41, 0x03, 0x1e, 0x0a, 0xe7, 0x07, 0x41, 0x04, 0x9c, 0x02, + 0x62, 0x01, 0x4b, 0x02, 0x2c, 0x03, 0xf5, 0x04, 0x49, 0x03, 0xc8, 0xfd, 0x8e, 0xfe, 0x30, 0xfb, + 0x74, 0xfd, 0xd9, 0x01, 0x8e, 0xfc, 0xad, 0xf9, 0x1c, 0xfa, 0x90, 0xfe, 0xfc, 0xf9, 0x16, 0xf9, + 0x4b, 0xfb, 0xb1, 0xfb, 0x7e, 0xf9, 0xa0, 0xfa, 0xd2, 0xfd, 0xc4, 0xfa, 0xcb, 0xfb, 0x5a, 0xfa, + 0xb7, 0xfc, 0x87, 0xfc, 0x8b, 0xfe, 0x6b, 0xfe, 0xe5, 0xff, 0x37, 0xfe, 0xc2, 0xff, 0xaf, 0xfc, + 0x6d, 0xfc, 0x44, 0x02, 0x73, 0x01, 0x3c, 0x04, 0xdf, 0x01, 0x7f, 0x01, 0x08, 0x02, 0x0f, 0x01, + 0x25, 0x01, 0x01, 0x03, 0x5a, 0x04, 0x54, 0x02, 0x80, 0x04, 0xa9, 0x06, 0xd7, 0x06, 0x1b, 0x04, + 0xcb, 0x04, 0x89, 0x02, 0xc6, 0x02, 0x5f, 0x04, 0x18, 0x04, 0xee, 0x02, 0x6a, 0x03, 0x3e, 0x02, + 0x52, 0xff, 0x57, 0xff, 0x15, 0xfe, 0x3b, 0xfd, 0xe1, 0xfb, 0x39, 0xfc, 0xfe, 0xf9, 0x98, 0xfc, + 0xaf, 0xfc, 0xac, 0xf8, 0xdb, 0xf9, 0x6e, 0xfb, 0x88, 0xfb, 0x58, 0xfb, 0x0e, 0xfc, 0x81, 0xff, + 0x2d, 0x01, 0x8b, 0xff, 0x8b, 0xfe, 0x4e, 0xff, 0x1e, 0x01, 0x0c, 0xfe, 0x2c, 0x00, 0xb1, 0x02, + 0x21, 0x02, 0x5e, 0x01, 0xa3, 0xfe, 0x86, 0x00, 0xca, 0x00, 0x07, 0xff, 0xb9, 0xfd, 0x8e, 0xff, + 0xab, 0x00, 0xb3, 0xff, 0xaa, 0xfe, 0xf0, 0xff, 0xa8, 0x01, 0xbf, 0xfd, 0x96, 0xfb, 0x95, 0xfb, + 0x80, 0xfc, 0xe9, 0xfc, 0x6e, 0xff, 0x9b, 0xf9, 0x2d, 0xfc, 0xda, 0x00, 0x4d, 0x01, 0x66, 0xfe, + 0x9c, 0xfd, 0x80, 0x00, 0x0e, 0xfe, 0xc1, 0x00, 0x3c, 0x01, 0xbb, 0x01, 0xd4, 0x03, 0xf6, 0x00, + 0xa8, 0xfd, 0x12, 0x02, 0x40, 0x02, 0x5d, 0x00, 0x78, 0x00, 0x5b, 0x00, 0x16, 0xff, 0x10, 0xfe, + 0x78, 0xfc, 0x77, 0xfd, 0xc4, 0xfb, 0x10, 0xfb, 0xe4, 0xfa, 0xd5, 0xf8, 0xcf, 0xfa, 0x20, 0xfa, + 0x19, 0xfe, 0xc4, 0xfb, 0xe9, 0xfb, 0x63, 0xfc, 0x1d, 0xfe, 0xaa, 0x00, 0x2a, 0xff, 0xd6, 0x00, + 0x1a, 0xff, 0x14, 0x02, 0xd6, 0x08, 0x4d, 0x09, 0x94, 0x08, 0xd2, 0x07, 0x18, 0x08, 0xc3, 0x07, + 0x8f, 0x09, 0x36, 0x0c, 0x52, 0x08, 0xe6, 0x06, 0xb7, 0x07, 0x93, 0x08, 0xb1, 0x07, 0x3e, 0x07, + 0x68, 0x08, 0x25, 0x04, 0x00, 0x05, 0xb0, 0x06, 0xd0, 0x06, 0x60, 0x07, 0x25, 0x06, 0x60, 0x04, + 0x74, 0x04, 0x97, 0x03, 0x0f, 0x06, 0xdf, 0x07, 0x2f, 0x05, 0x9f, 0x03, 0xfd, 0x05, 0xec, 0x04, + 0x4a, 0x04, 0x13, 0x05, 0xed, 0x05, 0x05, 0x03, 0x35, 0x03, 0x55, 0x06, 0x78, 0x07, 0x2d, 0x04, + 0xed, 0x03, 0xad, 0x00, 0xea, 0xff, 0x63, 0x01, 0x8e, 0x01, 0x2b, 0x02, 0x2c, 0x00, 0xda, 0xfe, + 0x5f, 0xff, 0x25, 0xfe, 0x67, 0x00, 0x7f, 0xff, 0xb3, 0xfb, 0xd5, 0xfa, 0x56, 0xfa, 0xeb, 0xfa, + 0x1d, 0xf9, 0xbb, 0xf9, 0x44, 0xf7, 0xea, 0xf7, 0xb3, 0xf6, 0x3f, 0xf6, 0xd0, 0xf7, 0xba, 0xf7, + 0xcd, 0xf6, 0x8f, 0xf3, 0xa8, 0xf2, 0x91, 0xf4, 0x33, 0xf2, 0xde, 0xf4, 0x12, 0xf5, 0x26, 0xf3, + 0x37, 0xf3, 0x9e, 0xf2, 0xc5, 0xf3, 0x99, 0xf7, 0x98, 0xf6, 0xfa, 0xf3, 0xd8, 0xf3, 0x31, 0xf8, + 0x82, 0xf7, 0x50, 0xf9, 0x8f, 0xfa, 0x0f, 0xfb, 0x76, 0xf8, 0xd7, 0xfb, 0x79, 0xfd, 0xce, 0xff, + 0x5c, 0x00, 0x2b, 0x01, 0x4e, 0x00, 0xcd, 0x03, 0xab, 0x05, 0x60, 0x03, 0xf4, 0x04, 0x4f, 0x04, + 0x05, 0x06, 0x0c, 0x09, 0x35, 0x08, 0x74, 0x08, 0x1c, 0x06, 0x40, 0x0a, 0xdd, 0x0a, 0xd6, 0x08, + 0xf3, 0x0a, 0x9b, 0x06, 0x8f, 0x06, 0x16, 0x08, 0x13, 0x0a, 0x48, 0x0b, 0x6f, 0x09, 0x20, 0x0c, + 0x02, 0x09, 0x24, 0x04, 0x98, 0x0b, 0xfa, 0x08, 0xf9, 0x02, 0xfa, 0x05, 0xca, 0x06, 0xfa, 0x07, + 0xd0, 0x05, 0xe9, 0xff, 0xd1, 0x04, 0x02, 0x01, 0xa5, 0xfb, 0x57, 0xfa, 0xe0, 0xfe, 0x04, 0x00, + 0x20, 0xfc, 0xeb, 0xf9, 0xd4, 0xf8, 0x26, 0xf9, 0x7d, 0xf8, 0x15, 0xf9, 0xcd, 0xf7, 0x74, 0xfd, + 0x16, 0xf8, 0xce, 0xf7, 0x86, 0xf8, 0x32, 0xfd, 0x13, 0xfb, 0x33, 0xf8, 0x01, 0xfa, 0x85, 0xfb, + 0x87, 0xfb, 0x64, 0xfa, 0xf3, 0xfc, 0x32, 0xfe, 0x65, 0x00, 0x0c, 0xfc, 0xdc, 0xfd, 0x86, 0x00, + 0x14, 0x01, 0x25, 0x01, 0x4c, 0xfa, 0x3a, 0x00, 0x51, 0xff, 0x90, 0xff, 0x5d, 0xff, 0x54, 0xfc, + 0x9c, 0x00, 0x8c, 0xfb, 0x3b, 0xfc, 0x09, 0xfe, 0x40, 0xfe, 0x3f, 0xfb, 0x02, 0xf9, 0x83, 0xfa, + 0xd1, 0xfa, 0xfa, 0xfd, 0x3d, 0xfb, 0x16, 0xfc, 0xf0, 0xfb, 0x6e, 0xf9, 0x62, 0xf9, 0xc3, 0xfc, + 0x8b, 0xfa, 0x11, 0xf9, 0x82, 0xfc, 0xd7, 0xfe, 0x92, 0xfc, 0x7b, 0xfc, 0xf5, 0xff, 0xeb, 0xff, + 0x2a, 0xfd, 0xa7, 0xfe, 0x92, 0xff, 0xb2, 0x03, 0x6c, 0x07, 0x4e, 0x02, 0x41, 0x04, 0xfc, 0x08, + 0xbe, 0x05, 0xc5, 0x03, 0x41, 0x06, 0x0a, 0x0b, 0x55, 0x0e, 0x2c, 0x0b, 0x44, 0x08, 0xbf, 0x0c, + 0xec, 0x10, 0xe7, 0x0a, 0x77, 0x0a, 0x70, 0x0d, 0x86, 0x0b, 0xe7, 0x0a, 0x8e, 0x0f, 0x30, 0x0d, + 0x71, 0x0b, 0x95, 0x09, 0x84, 0x05, 0x54, 0x05, 0x19, 0x08, 0xac, 0x09, 0x6f, 0x0a, 0x73, 0x02, + 0xd7, 0x00, 0xe0, 0x06, 0xb3, 0x00, 0x0f, 0xfb, 0xff, 0x04, 0x86, 0x0a, 0x76, 0x05, 0x61, 0x03, + 0x6b, 0x02, 0x33, 0x02, 0x17, 0xff, 0x7c, 0xff, 0xac, 0x01, 0xb6, 0x04, 0x06, 0x02, 0xf2, 0xff, + 0x9a, 0xff, 0x59, 0xfd, 0xff, 0xff, 0x34, 0xfe, 0xdb, 0xfa, 0xb8, 0xfa, 0x64, 0xfb, 0x99, 0xfa, + 0x22, 0xfb, 0x6e, 0xf8, 0x52, 0xf7, 0x55, 0xf7, 0x91, 0xfa, 0x46, 0xfb, 0xe4, 0xf7, 0xa7, 0xf9, + 0xf1, 0xfa, 0xb1, 0xfc, 0x41, 0xfb, 0x3f, 0xf9, 0x0b, 0xfb, 0x7e, 0xff, 0x81, 0xf7, 0x33, 0xfe, + 0x50, 0x01, 0x14, 0x00, 0x23, 0xfe, 0x4f, 0xff, 0xd7, 0xfc, 0xa3, 0xfb, 0x5c, 0xfc, 0x90, 0xfc, + 0x68, 0xff, 0xfe, 0x01, 0xea, 0xfc, 0xbc, 0xfd, 0xd6, 0xfd, 0x49, 0xff, 0xb6, 0xfd, 0x20, 0xfc, + 0x6c, 0xfb, 0x91, 0xfa, 0xb4, 0xfb, 0x0b, 0xfa, 0xe1, 0xf9, 0x7c, 0xfc, 0x9a, 0xf8, 0x58, 0xf5, + 0xc0, 0xfc, 0x3d, 0xfa, 0x45, 0xfb, 0x86, 0xfd, 0xa1, 0xfb, 0xb7, 0xfe, 0x87, 0xfc, 0x41, 0xfa, + 0x90, 0xfb, 0x80, 0xfb, 0xec, 0xfe, 0x1c, 0x00, 0x20, 0x00, 0x70, 0x04, 0x4b, 0xfd, 0xfa, 0x01, + 0xaa, 0x02, 0x4e, 0x00, 0x39, 0xfe, 0x1a, 0x00, 0x56, 0x00, 0xae, 0x04, 0xa3, 0x01, 0xe6, 0x01, + 0xd4, 0x04, 0xb7, 0xfb, 0xb0, 0xff, 0x75, 0x05, 0xc3, 0x05, 0xec, 0xfb, 0x60, 0x02, 0x4b, 0x05, + 0x9c, 0x05, 0x4e, 0xff, 0x23, 0x04, 0x92, 0x06, 0xa3, 0xff, 0x21, 0xff, 0x65, 0x03, 0x4e, 0xff, + 0x19, 0x00, 0x9a, 0xff, 0x4d, 0x00, 0x3a, 0x02, 0x69, 0x00, 0x93, 0xfc, 0x43, 0x02, 0x69, 0x02, + 0xe8, 0x00, 0xb9, 0x00, 0xca, 0xfd, 0x3d, 0xff, 0xde, 0x00, 0x3c, 0x01, 0x77, 0xfb, 0x1a, 0xfd, + 0x75, 0x01, 0x67, 0x00, 0x44, 0x03, 0xd8, 0x05, 0x29, 0x05, 0x62, 0x01, 0xbb, 0x00, 0xd0, 0x01, + 0x6d, 0x04, 0x6f, 0x05, 0x84, 0xff, 0xef, 0xfe, 0x89, 0xfc, 0x15, 0xfc, 0x5c, 0xfd, 0x8f, 0xfc, + 0x5b, 0xfd, 0xdc, 0xf7, 0xec, 0xfc, 0x77, 0xfe, 0x25, 0xf7, 0xbc, 0xf7, 0x51, 0xfd, 0x52, 0xf9, + 0xfc, 0xfb, 0x41, 0xf9, 0x7e, 0xff, 0xfe, 0xfb, 0xd0, 0xfd, 0x67, 0x00, 0xd9, 0xfe, 0x4e, 0x03, + 0xe2, 0x00, 0xf2, 0x00, 0x52, 0x00, 0xa2, 0x03, 0x31, 0x00, 0x5a, 0x05, 0xf6, 0x04, 0x97, 0x09, + 0x7f, 0x03, 0xa9, 0xfc, 0x7c, 0x00, 0xf1, 0x01, 0xb2, 0x06, 0xce, 0x04, 0x7b, 0x06, 0x5a, 0x05, + 0x1c, 0x00, 0x7f, 0xfd, 0xe9, 0x05, 0xce, 0x02, 0x64, 0x02, 0xe3, 0x04, 0xee, 0x05, 0x0e, 0x0c, + 0xe3, 0x09, 0xa3, 0x06, 0xb5, 0x05, 0x05, 0x01, 0xae, 0x05, 0x6a, 0x0a, 0x30, 0x0e, 0x44, 0x0b, + 0xc2, 0x07, 0xeb, 0x08, 0xe2, 0x07, 0x53, 0x05, 0x29, 0x07, 0xdd, 0x02, 0x0b, 0x06, 0x5c, 0x09, + 0xe7, 0x01, 0x07, 0x01, 0xd4, 0x02, 0x7f, 0x05, 0x17, 0xfd, 0xc6, 0xf4, 0xdf, 0xfa, 0x72, 0xfb, + 0xe8, 0xfa, 0x23, 0xfc, 0xeb, 0xfd, 0xfe, 0xf7, 0x2a, 0xf7, 0x8e, 0xfc, 0xaa, 0xfc, 0x11, 0xf6, + 0xf1, 0xf4, 0xae, 0xf9, 0xff, 0xfa, 0x91, 0xfd, 0x67, 0xff, 0xa1, 0x00, 0x89, 0xf8, 0xf9, 0xf8, + 0xa6, 0xf6, 0xca, 0xf8, 0x85, 0xfc, 0x11, 0xfc, 0x97, 0xfc, 0x6e, 0x03, 0x5e, 0xfa, 0x58, 0xfa, + 0xbf, 0xfe, 0x79, 0x00, 0x49, 0x00, 0x8c, 0xff, 0xe0, 0xfd, 0xba, 0xfc, 0xea, 0x06, 0x65, 0x04, + 0x40, 0x02, 0x96, 0xff, 0x64, 0x07, 0xdd, 0x00, 0x07, 0x00, 0x36, 0x04, 0xc4, 0x05, 0xb9, 0x02, + 0x22, 0x01, 0x2d, 0x01, 0xa1, 0x06, 0x0a, 0x07, 0x01, 0xff, 0x26, 0x03, 0x89, 0x03, 0xdb, 0x02, + 0x82, 0xfb, 0x96, 0xfe, 0xd7, 0xff, 0x54, 0xfb, 0x1f, 0xfd, 0x66, 0xfc, 0x73, 0xfc, 0x71, 0xf9, + 0x3e, 0xfa, 0xff, 0xf9, 0xec, 0xfb, 0x3d, 0xfc, 0x57, 0xfc, 0x1f, 0x03, 0x80, 0x03, 0x9d, 0xfe, + 0xc0, 0xf9, 0xbd, 0xfc, 0x0c, 0x00, 0x42, 0x04, 0x10, 0x07, 0x53, 0x07, 0xfe, 0x05, 0x91, 0x00, + 0x53, 0x00, 0x6c, 0x08, 0xd2, 0x05, 0xba, 0x07, 0x5a, 0x02, 0xce, 0xff, 0xd4, 0x06, 0x0b, 0x02, + 0x11, 0x01, 0xbe, 0xfc, 0x37, 0xfb, 0x3c, 0x01, 0x22, 0xff, 0x6d, 0x00, 0x20, 0xfb, 0x5c, 0xf9, + 0x75, 0xf7, 0x84, 0xf9, 0x5d, 0xfb, 0x40, 0xf9, 0x06, 0xfa, 0x4b, 0xfc, 0xdb, 0xfb, 0x73, 0xfc, + 0x3f, 0xfe, 0x8c, 0xfa, 0x09, 0xf6, 0xa9, 0xfc, 0x0c, 0xff, 0x85, 0xfd, 0x7e, 0x01, 0x93, 0xfa, + 0x2e, 0xfe, 0x5c, 0xfe, 0xfb, 0xfe, 0xe0, 0x00, 0x35, 0xf9, 0x3b, 0x03, 0xae, 0xfd, 0xb2, 0x00, + 0x6c, 0xf9, 0xb4, 0xf5, 0xc5, 0xf9, 0x90, 0xfb, 0x80, 0xfd, 0x83, 0xfc, 0xd1, 0xfb, 0xf6, 0xfa, + 0xba, 0x02, 0x73, 0xf9, 0xb0, 0xfd, 0x74, 0xff, 0x75, 0xfe, 0xfa, 0x02, 0x03, 0x06, 0xf9, 0x08, + 0x5d, 0x0a, 0xad, 0x07, 0xdf, 0x05, 0x43, 0x0a, 0xe6, 0x09, 0xc8, 0x09, 0xf7, 0x07, 0xca, 0x08, + 0xe0, 0x08, 0x26, 0x0a, 0xd5, 0x08, 0x75, 0x03, 0xd6, 0x05, 0x6e, 0x04, 0x7b, 0x00, 0xbb, 0xfe, + 0xdc, 0x09, 0xea, 0xfd, 0x82, 0xfa, 0x1d, 0xf8, 0xf3, 0xf9, 0x47, 0x01, 0xdf, 0xf6, 0xd8, 0xf6, + 0x8a, 0xfb, 0xa5, 0xfe, 0xdc, 0xf9, 0x59, 0xf9, 0x29, 0xf8, 0xb7, 0xf9, 0xcd, 0xfa, 0x56, 0xfd, + 0xcf, 0xfe, 0xef, 0xfa, 0x93, 0xf7, 0xac, 0xfd, 0x89, 0x00, 0x43, 0xf7, 0x2e, 0x00, 0x0c, 0xff, + 0x02, 0xfe, 0xd9, 0x02, 0x13, 0x01, 0x1a, 0x02, 0xa1, 0xfd, 0x50, 0xfe, 0x88, 0x01, 0x04, 0x03, + 0x80, 0x07, 0x77, 0x06, 0x2e, 0x02, 0x89, 0x06, 0x94, 0x08, 0x85, 0x01, 0x99, 0x03, 0x9c, 0x03, + 0x05, 0x05, 0x3c, 0x0a, 0x92, 0x0a, 0x89, 0x06, 0x92, 0x07, 0x62, 0x05, 0x6d, 0x04, 0x95, 0x08, + 0xe3, 0x08, 0xc8, 0x05, 0xbc, 0x04, 0x9c, 0x0c, 0x59, 0x05, 0xe4, 0x00, 0x86, 0x06, 0x43, 0x01, + 0xe6, 0x03, 0x6b, 0x07, 0x61, 0x01, 0xed, 0xff, 0xfe, 0xfc, 0x80, 0xff, 0xa9, 0x02, 0xab, 0x02, + 0x72, 0xfe, 0x9e, 0xf6, 0xda, 0xfb, 0xc5, 0x00, 0xe7, 0x01, 0x1a, 0x02, 0x3d, 0x00, 0x28, 0x00, + 0x01, 0x05, 0x41, 0x00, 0x9d, 0x05, 0x05, 0x08, 0xfc, 0x00, 0x8b, 0x00, 0xb8, 0x00, 0x5d, 0x03, + 0x93, 0x02, 0xf2, 0x02, 0x6b, 0x02, 0xe1, 0xfb, 0x0f, 0xf8, 0xf1, 0xfc, 0xa6, 0xfe, 0xfe, 0xf8, + 0xf8, 0xf3, 0x76, 0xf3, 0xe6, 0xfc, 0xa7, 0xf9, 0xed, 0xf0, 0x7d, 0xf2, 0x56, 0xf6, 0x04, 0xf5, + 0x78, 0xf5, 0x5b, 0xf7, 0xc3, 0xf4, 0x03, 0xfc, 0x9c, 0xf5, 0xe4, 0xfa, 0x8d, 0xfe, 0xb7, 0xfb, + 0x27, 0xf8, 0x46, 0xfa, 0xf5, 0xff, 0xb8, 0xfe, 0xb5, 0x00, 0x6c, 0xff, 0xd2, 0xfd, 0x38, 0x01, + 0x70, 0x02, 0x07, 0xff, 0x05, 0x04, 0x42, 0x01, 0x34, 0x00, 0x39, 0x04, 0x14, 0x03, 0xeb, 0x05, + 0x2c, 0x07, 0x9a, 0x06, 0x8a, 0x03, 0x0e, 0x06, 0x22, 0x05, 0x6e, 0x04, 0xb4, 0x08, 0x5a, 0x04, + 0xd2, 0x07, 0x7e, 0x07, 0xf6, 0xff, 0x2e, 0x06, 0x8a, 0x07, 0x51, 0x07, 0x04, 0x01, 0x36, 0x00, + 0xcd, 0x00, 0x86, 0xff, 0x79, 0xfe, 0xb8, 0xfe, 0x29, 0xfa, 0x9c, 0xf6, 0x64, 0xfa, 0x52, 0xfb, + 0x6f, 0xfc, 0x9d, 0xf9, 0x2f, 0xf7, 0x6c, 0xf3, 0x44, 0xf5, 0xbf, 0xf8, 0x05, 0xf6, 0x7f, 0xf4, + 0x62, 0xf8, 0x7b, 0xf9, 0xfd, 0xf7, 0xc6, 0xfa, 0xfc, 0xf8, 0x36, 0xff, 0x96, 0xfc, 0x0b, 0xfa, + 0xa7, 0x00, 0x90, 0xff, 0x44, 0x00, 0x0b, 0x03, 0x52, 0x04, 0x26, 0x00, 0x69, 0x03, 0x02, 0x07, + 0x95, 0x03, 0xa0, 0x03, 0x10, 0x04, 0x78, 0x04, 0x51, 0x03, 0xde, 0x04, 0xa0, 0x02, 0x2c, 0x03, + 0x49, 0x01, 0x5d, 0x02, 0xf4, 0xfd, 0x23, 0x01, 0x8a, 0x05, 0xe4, 0x00, 0xa0, 0x01, 0x69, 0xfe, + 0x9f, 0xff, 0x83, 0xfb, 0x57, 0xfb, 0x5a, 0xfa, 0xde, 0xf9, 0x3e, 0xfc, 0xf4, 0xf9, 0x6a, 0xf9, + 0x49, 0xf9, 0x32, 0xfc, 0x44, 0xf8, 0x61, 0xfb, 0x1f, 0xf7, 0xed, 0xf7, 0x6f, 0xfd, 0xf6, 0xfb, + 0x65, 0xfb, 0x8a, 0xff, 0xbf, 0xfe, 0x05, 0xfc, 0xf8, 0xfe, 0x0e, 0x06, 0x81, 0x05, 0x13, 0x05, + 0x33, 0x06, 0x27, 0x06, 0x3e, 0x06, 0x92, 0x08, 0x12, 0x08, 0xfd, 0x07, 0x2b, 0x0d, 0xdc, 0x0e, + 0x57, 0x0d, 0x12, 0x0f, 0x8a, 0x10, 0x2c, 0x0d, 0x7e, 0x08, 0x74, 0x0e, 0x1b, 0x09, 0x4f, 0x0b, + 0x57, 0x09, 0xf7, 0x07, 0x30, 0x08, 0x11, 0x04, 0x8e, 0x04, 0x86, 0x04, 0x41, 0x07, 0xaf, 0x03, + 0xc3, 0x02, 0x5b, 0x00, 0x74, 0x03, 0x8f, 0xfe, 0xf3, 0xfe, 0x99, 0xfe, 0xc6, 0x02, 0xf4, 0xfe, + 0x91, 0x02, 0xbe, 0x00, 0x27, 0x01, 0x03, 0x05, 0xfe, 0xfc, 0x49, 0x02, 0x96, 0x03, 0xc5, 0x03, + 0x24, 0x05, 0x01, 0x05, 0x24, 0x01, 0xfa, 0x01, 0xfb, 0x07, 0xf0, 0x03, 0xef, 0xfc, 0x21, 0x00, + 0xba, 0xfe, 0x08, 0xf9, 0x99, 0xfd, 0xce, 0xfe, 0x0d, 0xfb, 0x04, 0xfb, 0x9b, 0xf9, 0x62, 0xfa, + 0x43, 0xfe, 0xdc, 0xfb, 0x3d, 0xfa, 0xcc, 0x00, 0x16, 0xfa, 0x07, 0xf7, 0x86, 0xfe, 0x21, 0x00, + 0xb1, 0xf6, 0xc8, 0xfa, 0x74, 0xff, 0x25, 0xfb, 0xc6, 0xfc, 0x4e, 0xfd, 0xe4, 0xfc, 0x1b, 0xfe, + 0x5b, 0xfc, 0x1e, 0xfa, 0xd4, 0xfb, 0x5f, 0xf8, 0xc0, 0xf8, 0x32, 0xfb, 0x72, 0xfb, 0x77, 0xfd, + 0xe4, 0xfe, 0x48, 0xf8, 0x47, 0xfc, 0x14, 0xfe, 0x19, 0xfa, 0xc1, 0xf8, 0xe8, 0xfd, 0x22, 0xff, + 0xbf, 0xfc, 0x2d, 0xfa, 0xca, 0xfc, 0x64, 0xfd, 0x02, 0x01, 0x30, 0xfd, 0x0c, 0xfa, 0xaf, 0xfe, + 0x0e, 0xfd, 0x47, 0xff, 0x0b, 0xff, 0x41, 0xff, 0x47, 0xf9, 0x03, 0xfd, 0x8f, 0xff, 0xa7, 0x00, + 0x2a, 0x01, 0xb8, 0xfe, 0x5f, 0xfd, 0xe9, 0xfb, 0x0c, 0xfc, 0xba, 0xff, 0xec, 0xfa, 0x2b, 0xff, + 0x8c, 0x00, 0x01, 0xfe, 0xe1, 0xfe, 0x04, 0x00, 0x3e, 0xff, 0x1b, 0x00, 0x92, 0x05, 0x8a, 0x02, + 0x0b, 0x03, 0x53, 0x03, 0x93, 0x04, 0x7f, 0x02, 0x46, 0x05, 0x7f, 0x03, 0x72, 0x00, 0x47, 0x01, + 0x33, 0x07, 0x17, 0x05, 0x9a, 0x02, 0x7a, 0x02, 0xec, 0x01, 0x4b, 0x03, 0xbb, 0x04, 0x3c, 0x01, + 0x54, 0x00, 0x0a, 0x05, 0x3e, 0x00, 0xf2, 0x02, 0x80, 0x03, 0x78, 0x04, 0xd6, 0xfe, 0xe7, 0x00, + 0xc0, 0x06, 0xa7, 0x01, 0xf4, 0xfe, 0x6e, 0xfa, 0x34, 0x00, 0xac, 0x01, 0x8a, 0x04, 0xec, 0xff, + 0x5d, 0xfe, 0x84, 0xfa, 0xbd, 0xfc, 0x55, 0x02, 0xc2, 0xfa, 0xb6, 0xfb, 0x6a, 0xfc, 0x04, 0xfd, + 0x6e, 0xf6, 0x1c, 0xfe, 0x09, 0xfc, 0x75, 0xf4, 0xc0, 0xf9, 0x46, 0xf6, 0x3c, 0xfc, 0x9e, 0xfb, + 0x99, 0xfb, 0xab, 0xf7, 0xd0, 0xf7, 0xd4, 0xfb, 0x1d, 0xfb, 0xe6, 0xfd, 0xa8, 0xf8, 0x7b, 0xf7, + 0x6d, 0xfe, 0x82, 0x01, 0x95, 0xfe, 0x40, 0x01, 0x9b, 0x00, 0x5a, 0xfc, 0x01, 0x05, 0xa3, 0x05, + 0x21, 0x03, 0xb9, 0x01, 0xf1, 0x02, 0x65, 0x02, 0x60, 0x03, 0x4b, 0x06, 0x70, 0x02, 0x59, 0x08, + 0x1d, 0x04, 0x63, 0x06, 0xd3, 0x03, 0x68, 0x06, 0x1f, 0x03, 0xef, 0x03, 0xc4, 0x05, 0x5e, 0x05, + 0x24, 0x0b, 0xd3, 0x09, 0xc5, 0x08, 0x3a, 0x07, 0x35, 0x0a, 0x48, 0x07, 0x33, 0x06, 0x3f, 0x06, + 0x1e, 0x08, 0x3e, 0x0c, 0xbb, 0x06, 0x28, 0x0a, 0x9e, 0x0c, 0xe5, 0x08, 0x02, 0x08, 0xc4, 0x07, + 0x17, 0x0a, 0x0f, 0x07, 0x20, 0x04, 0x80, 0x05, 0x8b, 0x00, 0x19, 0x03, 0xbe, 0x02, 0xc8, 0xff, + 0x58, 0xfd, 0x10, 0x00, 0xa6, 0x00, 0x4a, 0x04, 0x9c, 0xfc, 0xde, 0xfb, 0xab, 0xfb, 0x05, 0xfa, + 0x83, 0xfa, 0x5e, 0xfe, 0x52, 0xfc, 0x50, 0xfc, 0xf0, 0xfb, 0x4b, 0xf6, 0x05, 0xfe, 0x71, 0xfd, + 0x96, 0xfc, 0x51, 0xfa, 0x07, 0xfd, 0x28, 0x00, 0xac, 0xf7, 0xe5, 0xf9, 0xf2, 0xfb, 0x9e, 0xff, + 0xde, 0xf8, 0x01, 0xf8, 0x4c, 0x00, 0xd6, 0x03, 0xd4, 0xfe, 0x82, 0xff, 0xdd, 0xfd, 0x62, 0xfe, + 0xf7, 0x03, 0xb8, 0x03, 0x33, 0x04, 0x90, 0x03, 0xcf, 0xff, 0x68, 0x01, 0xe6, 0x02, 0x09, 0x07, + 0x3a, 0x04, 0x84, 0xfd, 0x35, 0xff, 0xcc, 0xfb, 0x64, 0x00, 0xed, 0xfb, 0xe4, 0xfa, 0xe8, 0xf8, + 0xad, 0xf8, 0xdd, 0xfc, 0xe3, 0xf8, 0xf4, 0xf7, 0xb0, 0xf7, 0x49, 0xf8, 0x1d, 0xf7, 0xdb, 0xf5, + 0xb6, 0xf6, 0x60, 0xf9, 0xd8, 0xf8, 0x3a, 0xfb, 0x8a, 0xfc, 0xdd, 0xfd, 0xa3, 0xf9, 0x09, 0xfb, + 0x85, 0xff, 0xd4, 0x01, 0xd1, 0x04, 0xf1, 0xfc, 0x0a, 0x06, 0x54, 0x04, 0x8b, 0x00, 0xaa, 0x04, + 0x93, 0x08, 0xd5, 0x04, 0x87, 0x00, 0x27, 0x0d, 0xe0, 0x0b, 0x78, 0x06, 0x10, 0x02, 0xaa, 0x04, + 0xde, 0x03, 0x5a, 0x04, 0xc1, 0x03, 0x98, 0x03, 0x4d, 0x06, 0xbf, 0x02, 0x34, 0xfc, 0xf5, 0xff, + 0x14, 0xff, 0x51, 0xfd, 0x10, 0xfa, 0x84, 0xf9, 0x45, 0xfa, 0xc6, 0xfc, 0x5b, 0xf7, 0x98, 0xf4, + 0x1a, 0xf3, 0x8d, 0xf8, 0x0a, 0xf6, 0x52, 0xfa, 0x67, 0xf7, 0x20, 0xf7, 0x61, 0xfa, 0x31, 0xfa, + 0x11, 0xf9, 0xa0, 0xfa, 0x77, 0xfd, 0x12, 0xff, 0x79, 0xff, 0x42, 0xfe, 0xcc, 0x03, 0xd9, 0x04, + 0x3a, 0x01, 0x0f, 0xfd, 0x2d, 0x03, 0xc6, 0x04, 0x63, 0x06, 0x47, 0x04, 0xb6, 0x02, 0x30, 0x04, + 0xdd, 0x05, 0x67, 0x03, 0xe4, 0x05, 0xd2, 0x0b, 0xea, 0x0a, 0x7d, 0x02, 0x05, 0x03, 0x67, 0x08, + 0x30, 0x08, 0x92, 0x03, 0x31, 0xfd, 0xc1, 0x01, 0x7f, 0x03, 0xeb, 0x08, 0x3a, 0x04, 0x41, 0x04, + 0xae, 0x02, 0x09, 0x02, 0x98, 0x00, 0x1a, 0xfe, 0x55, 0x00, 0x1e, 0x01, 0x28, 0x00, 0x0b, 0xff, + 0x89, 0xfd, 0x00, 0x03, 0x81, 0xfe, 0x1f, 0xfb, 0x29, 0xf9, 0xde, 0xfd, 0xd2, 0x03, 0xca, 0x01, + 0xc6, 0xfe, 0xba, 0xfb, 0xbb, 0xfd, 0x6d, 0xfc, 0x3f, 0xf8, 0xc0, 0xfa, 0xa1, 0xff, 0x17, 0xfc, + 0xf9, 0xf8, 0x9b, 0xfc, 0x1d, 0xfd, 0x49, 0xfc, 0x57, 0xf3, 0xb6, 0xf6, 0x45, 0xfa, 0x8c, 0xfa, + 0x70, 0xfe, 0x01, 0xf9, 0x11, 0xfe, 0x58, 0xfb, 0x08, 0xfd, 0x58, 0xfa, 0x97, 0xfb, 0x6c, 0xff, + 0xf4, 0x00, 0xfc, 0xfd, 0x5c, 0xfd, 0x4c, 0xff, 0xf5, 0x02, 0x91, 0x02, 0x88, 0x01, 0xdb, 0x02, + 0x86, 0xff, 0x6d, 0x05, 0x22, 0x02, 0xa8, 0xfd, 0xf6, 0x02, 0x74, 0x04, 0x1f, 0x02, 0xfc, 0xfd, + 0x01, 0x02, 0x36, 0x05, 0x63, 0x04, 0xfc, 0x04, 0x2a, 0x05, 0x4b, 0x05, 0xff, 0x07, 0x8f, 0x09, + 0x46, 0x04, 0xf6, 0x07, 0x7c, 0x09, 0xe9, 0x06, 0xbd, 0x04, 0x8d, 0x0a, 0x69, 0x0c, 0xb0, 0x0c, + 0x6d, 0x0a, 0x39, 0x0a, 0x48, 0x0b, 0xe9, 0x0a, 0x18, 0x0a, 0xa9, 0x04, 0xe9, 0x07, 0x53, 0x04, + 0xcc, 0x06, 0x24, 0x05, 0x95, 0x06, 0x1e, 0x07, 0xb2, 0x03, 0xe4, 0x01, 0x5c, 0x00, 0xd1, 0xfe, + 0xbb, 0xff, 0x72, 0x02, 0xe0, 0x02, 0x3a, 0xfb, 0x96, 0xfb, 0x42, 0xfe, 0x6d, 0xf9, 0xb5, 0xfd, + 0xed, 0xfb, 0xc7, 0xfa, 0x3a, 0xfb, 0x64, 0xfe, 0x56, 0xfb, 0x9f, 0xfb, 0x04, 0xf6, 0x39, 0xf5, + 0x7d, 0xf9, 0x2c, 0xf8, 0xfd, 0xfa, 0xf0, 0xf7, 0x32, 0xf8, 0xbc, 0xfb, 0xaa, 0xfc, 0x1f, 0xfe, + 0xc8, 0xfb, 0x1e, 0xfb, 0xed, 0xf9, 0xcb, 0xfd, 0x8b, 0xfe, 0xd9, 0x00, 0x97, 0xfe, 0xda, 0xfd, + 0x46, 0xfc, 0xf4, 0x01, 0x4c, 0x00, 0x63, 0xfc, 0xbd, 0xfc, 0x53, 0xff, 0xa4, 0xff, 0x34, 0xfd, + 0x63, 0xff, 0xa3, 0xfa, 0x09, 0xfc, 0x8f, 0x00, 0xe1, 0xfb, 0xbd, 0xfe, 0x66, 0x00, 0x63, 0xfe, + 0xf2, 0xfc, 0x94, 0x05, 0x2c, 0x01, 0x16, 0xff, 0xf6, 0xfa, 0xf1, 0xfd, 0x72, 0x03, 0x66, 0x03, + 0x19, 0x07, 0x05, 0x04, 0x7e, 0x04, 0x68, 0x00, 0x9f, 0x03, 0x4a, 0x01, 0x03, 0x01, 0x2f, 0xff, + 0x21, 0xfe, 0x15, 0xff, 0x8d, 0x04, 0xd1, 0x02, 0x21, 0x01, 0xd6, 0xfe, 0xe8, 0xfd, 0xaa, 0xfd, + 0x2f, 0xfe, 0xf7, 0x01, 0xde, 0xff, 0x4c, 0x01, 0x93, 0xff, 0xc7, 0xfe, 0xfa, 0xfd, 0x15, 0xfd, + 0xd8, 0xfb, 0xab, 0xff, 0x3c, 0xff, 0xaf, 0xfe, 0xd5, 0x01, 0x23, 0xff, 0xbd, 0xfe, 0x39, 0xff, + 0x25, 0x03, 0x04, 0x01, 0x21, 0xff, 0x6d, 0x01, 0xb6, 0x07, 0xbf, 0x02, 0x23, 0x06, 0x84, 0x05, + 0xf5, 0x01, 0x16, 0x02, 0x72, 0x06, 0x03, 0x09, 0xbd, 0x04, 0xff, 0x04, 0xf5, 0x04, 0x15, 0x03, + 0x51, 0x05, 0x27, 0x07, 0xcd, 0x00, 0x35, 0x00, 0xe4, 0xfe, 0x22, 0xff, 0xdc, 0xfe, 0xb6, 0xfe, + 0x73, 0xf9, 0xc2, 0xfa, 0xd1, 0xfa, 0xa3, 0xfb, 0xd3, 0xf8, 0x3c, 0xf7, 0xcc, 0xfa, 0x98, 0xf9, + 0xdb, 0xf7, 0xc9, 0xf2, 0x6b, 0xf5, 0x31, 0xf5, 0xae, 0xf4, 0xda, 0xf6, 0x54, 0xf5, 0x80, 0xf6, + 0x14, 0xf6, 0x2b, 0xf6, 0xd6, 0xf9, 0x9e, 0xfe, 0x1f, 0xf9, 0xcd, 0xf3, 0x29, 0xf9, 0xd9, 0xff, + 0xca, 0xfd, 0x6c, 0xfd, 0x19, 0xfe, 0x6b, 0x03, 0x9f, 0x01, 0x17, 0x06, 0xa3, 0x07, 0x3e, 0x05, + 0x97, 0x09, 0x6a, 0x06, 0x7a, 0x06, 0xe7, 0x0d, 0x00, 0x0c, 0x6f, 0x09, 0x1e, 0x09, 0x73, 0x0b, + 0x70, 0x0a, 0xa8, 0x05, 0x0c, 0x0f, 0x23, 0x0a, 0x46, 0x06, 0xf4, 0x05, 0x6b, 0x04, 0xcc, 0x06, + 0x9f, 0x03, 0xb7, 0x00, 0xef, 0x01, 0xac, 0xff, 0x3a, 0x00, 0x20, 0xfc, 0x42, 0x01, 0x2a, 0x00, + 0x06, 0xfd, 0x0d, 0xfe, 0x3e, 0xf9, 0x68, 0xff, 0xb6, 0xf9, 0xcb, 0xf8, 0x85, 0xf6, 0x51, 0xfb, + 0xe9, 0x00, 0x34, 0x00, 0x6e, 0x03, 0x4b, 0x01, 0xcc, 0x01, 0x94, 0xfd, 0xf6, 0xfc, 0xbf, 0xff, + 0xbe, 0x07, 0x29, 0x06, 0x07, 0x05, 0xcc, 0x08, 0x83, 0x07, 0xf2, 0x09, 0x28, 0x07, 0xc4, 0x05, + 0x68, 0x04, 0x40, 0x08, 0x31, 0x02, 0x2e, 0x02, 0xcd, 0x07, 0x20, 0x07, 0x5f, 0x05, 0x36, 0xfa, + 0x2d, 0x00, 0x19, 0x02, 0x66, 0x00, 0x34, 0xfb, 0x0e, 0xf6, 0x7c, 0xf6, 0xe0, 0xf2, 0x4b, 0xf3, + 0x9a, 0xfa, 0x9f, 0xfd, 0x2b, 0x02, 0x7f, 0x00, 0x4b, 0x01, 0xd3, 0x01, 0xeb, 0xfe, 0xd3, 0xf9, + 0x2e, 0xf9, 0xea, 0xf5, 0x57, 0xf7, 0x86, 0xf8, 0xc1, 0xf3, 0x51, 0xee, 0x16, 0xf0, 0x73, 0xef, + 0x21, 0xf2, 0x5b, 0xef, 0x56, 0xf0, 0x68, 0xf2, 0x68, 0xf3, 0x9d, 0xf3, 0x5a, 0xf2, 0x8a, 0xf7, + 0x50, 0xfa, 0xf3, 0xfb, 0x27, 0x00, 0xb2, 0x00, 0xc7, 0xff, 0x52, 0x02, 0xf3, 0x02, 0xba, 0x03, + 0x89, 0x01, 0x35, 0x03, 0xa2, 0x06, 0x76, 0x0d, 0x43, 0x09, 0x08, 0x09, 0x52, 0x06, 0x6e, 0x04, + 0x23, 0x06, 0xb4, 0x05, 0xae, 0x0b, 0xd2, 0x0b, 0x7c, 0x07, 0x8b, 0x07, 0x4d, 0x07, 0x51, 0x09, + 0x3d, 0x04, 0x90, 0x02, 0x32, 0x05, 0xfa, 0x05, 0xbb, 0x03, 0xe7, 0x04, 0x89, 0x02, 0x37, 0x09, + 0x88, 0xfc, 0x24, 0xfa, 0xa5, 0xfb, 0xe2, 0xfa, 0xae, 0xfe, 0xe3, 0xfa, 0xcd, 0xfd, 0x0f, 0xfd, + 0xe0, 0xfd, 0x9b, 0xff, 0x68, 0xfc, 0x0d, 0x02, 0x15, 0x05, 0xf6, 0x05, 0x57, 0x02, 0x7e, 0x03, + 0xe9, 0x09, 0x21, 0x07, 0x4d, 0x0a, 0x95, 0x06, 0xd4, 0x03, 0x3b, 0x01, 0x94, 0x04, 0x65, 0x04, + 0x62, 0x02, 0x47, 0x07, 0xce, 0x04, 0x2f, 0x02, 0x93, 0xfc, 0x8f, 0xfb, 0xf0, 0xf8, 0x7f, 0xf6, + 0xc6, 0xf6, 0x97, 0xf7, 0xd9, 0xfa, 0x8a, 0xf8, 0xf9, 0xf4, 0xfc, 0xf9, 0x33, 0xfa, 0x16, 0xfb, + 0x2d, 0xf9, 0x7d, 0xf7, 0x9c, 0xfb, 0x95, 0x00, 0xb5, 0xff, 0xa3, 0xf9, 0xb0, 0xf3, 0xb7, 0xf7, + 0x45, 0xfc, 0x28, 0x00, 0xc3, 0x02, 0x73, 0x01, 0xba, 0x01, 0x64, 0x01, 0xc2, 0x04, 0xcd, 0x07, + 0x9b, 0x0c, 0x39, 0x09, 0x1e, 0x09, 0xfa, 0x05, 0x0d, 0x09, 0xaa, 0x07, 0xc3, 0x00, 0xaa, 0xfb, + 0xdd, 0xfd, 0xe8, 0xfe, 0xd8, 0x05, 0xb2, 0x04, 0x19, 0x04, 0x32, 0x05, 0xee, 0x06, 0x15, 0x08, + 0xe1, 0x03, 0xa3, 0x07, 0x22, 0x0b, 0x0c, 0x08, 0xf1, 0x05, 0x46, 0x05, 0x90, 0x0d, 0x8c, 0x0d, + 0x2d, 0x0a, 0xdf, 0x07, 0x69, 0x0a, 0x53, 0x0d, 0xd1, 0x0a, 0xdb, 0x06, 0xd4, 0x04, 0xdb, 0x04, + 0x76, 0x02, 0x57, 0x03, 0x7b, 0x04, 0xa5, 0x06, 0x40, 0x04, 0xa9, 0xff, 0x2b, 0xfe, 0xe4, 0xff, + 0xd0, 0x03, 0x1a, 0x01, 0xc9, 0xfa, 0x0b, 0xfd, 0xbf, 0xfb, 0x54, 0xfb, 0x4b, 0xfa, 0xcc, 0xfb, + 0xb7, 0xfc, 0x41, 0xfb, 0x49, 0xf6, 0xeb, 0xf5, 0xd6, 0xfa, 0xdd, 0xfc, 0xa9, 0xf7, 0x2d, 0xf1, + 0x81, 0xf4, 0xe8, 0xf9, 0x0f, 0xf9, 0x08, 0xf7, 0x25, 0xfa, 0x03, 0xfe, 0x65, 0xf8, 0x16, 0xf8, + 0x76, 0xfa, 0x29, 0xf7, 0xe7, 0xfb, 0x2b, 0xf7, 0x45, 0xf5, 0x87, 0xfe, 0xc2, 0x00, 0xc7, 0x04, + 0xba, 0x02, 0x30, 0x02, 0xbc, 0x04, 0x7a, 0x01, 0xe0, 0x01, 0x79, 0x04, 0x91, 0x07, 0xc9, 0x02, + 0xab, 0xfd, 0x07, 0xfd, 0x3d, 0x01, 0x2b, 0xf9, 0xd8, 0xfd, 0x53, 0xfb, 0x1c, 0xfb, 0xa9, 0x01, + 0x93, 0xff, 0x0a, 0xfe, 0x3c, 0xfa, 0xea, 0xfa, 0x6a, 0xf7, 0xa6, 0xf7, 0x68, 0xfd, 0x03, 0xfd, + 0xf1, 0xfa, 0x2d, 0xfb, 0x9a, 0xfc, 0x0a, 0xfd, 0x3a, 0xfb, 0x1b, 0xfd, 0x1d, 0xfd, 0x77, 0xfd, + 0x1a, 0xfd, 0x77, 0x01, 0xcf, 0x01, 0xb7, 0x03, 0x87, 0x02, 0x9f, 0x02, 0x39, 0x04, 0x0a, 0x08, + 0xba, 0x0c, 0x32, 0x09, 0x80, 0x10, 0x76, 0x0c, 0xf4, 0x0c, 0xda, 0x08, 0x9d, 0x05, 0x77, 0x02, + 0x27, 0x08, 0xae, 0x08, 0xbc, 0x05, 0x61, 0x0a, 0x51, 0x03, 0xa2, 0x06, 0x8e, 0x00, 0x50, 0x00, + 0xcc, 0xfd, 0xe2, 0xfa, 0xee, 0xfc, 0x30, 0xfb, 0x13, 0xff, 0xe2, 0xfc, 0x42, 0xf8, 0x3d, 0xef, + 0xe1, 0xf3, 0x0c, 0xf0, 0x1e, 0xf6, 0x90, 0xf8, 0x9a, 0xf8, 0x5a, 0xf8, 0xaa, 0xf1, 0x6d, 0xf5, + 0x3c, 0xef, 0xe5, 0xf4, 0x93, 0xf6, 0xa8, 0xf6, 0xab, 0xf8, 0x6f, 0xf6, 0xa9, 0xf9, 0xcc, 0xf8, + 0x1d, 0xfc, 0x5d, 0xfa, 0x4e, 0xf9, 0xd9, 0xfb, 0xa0, 0xfd, 0x74, 0x02, 0x47, 0x04, 0xb8, 0x03, + 0x0d, 0x04, 0x2b, 0x07, 0xbb, 0x05, 0xeb, 0x07, 0x44, 0x09, 0x18, 0x0d, 0x7f, 0x0b, 0xfb, 0x09, + 0xe0, 0x09, 0xfb, 0x08, 0x55, 0x0a, 0x70, 0x08, 0xaf, 0x0b, 0xde, 0x06, 0x40, 0x09, 0xf7, 0x05, + 0x76, 0x09, 0xec, 0x05, 0xe4, 0x05, 0x18, 0x01, 0x5a, 0xfd, 0x43, 0x01, 0x94, 0xff, 0x7f, 0x01, + 0xc8, 0xfd, 0x3c, 0xff, 0xca, 0xf9, 0x52, 0xfa, 0x55, 0xfa, 0x51, 0xf6, 0x56, 0xf8, 0xc3, 0xf7, + 0x91, 0xf7, 0x41, 0xfa, 0x47, 0xfd, 0xd3, 0xf6, 0x4e, 0xf9, 0x5a, 0xf8, 0x01, 0xf8, 0x76, 0xfb, + 0x79, 0xf7, 0x02, 0xfe, 0x88, 0xfb, 0x59, 0xfc, 0x84, 0xfa, 0x4e, 0xfe, 0x78, 0x00, 0xb1, 0xff, + 0xa4, 0x00, 0x3d, 0x04, 0x01, 0x08, 0x6e, 0x08, 0xc4, 0x01, 0xa6, 0x04, 0xe0, 0x03, 0x99, 0x09, + 0xef, 0x06, 0xe8, 0x09, 0x3c, 0x0c, 0x52, 0x0c, 0x5c, 0x0b, 0x8e, 0x07, 0x0f, 0x08, 0xf1, 0x07, + 0x78, 0x08, 0x51, 0x03, 0x6b, 0x06, 0xaa, 0x02, 0xfc, 0x01, 0xed, 0x00, 0x9e, 0xff, 0xda, 0x01, + 0x6a, 0x01, 0xf3, 0xfe, 0x0f, 0x01, 0x4f, 0xfe, 0x73, 0xff, 0x30, 0xfa, 0x06, 0xfc, 0x63, 0xfb, + 0xd1, 0xf5, 0x17, 0xf7, 0x21, 0xfc, 0x87, 0xfd, 0x09, 0xf9, 0x68, 0x02, 0xf9, 0xfc, 0x0c, 0x00, + 0x39, 0x02, 0xd5, 0x02, 0x52, 0x06, 0x60, 0x00, 0xa6, 0x00, 0xa4, 0x01, 0x30, 0x0a, 0x0c, 0x0d, + 0x6b, 0x08, 0x7c, 0x06, 0x39, 0x07, 0x0a, 0x04, 0xb9, 0x08, 0xd5, 0x02, 0x8e, 0x02, 0x31, 0x01, + 0xfb, 0xff, 0x8b, 0x00, 0x8c, 0xff, 0xc1, 0x00, 0x0a, 0xf7, 0x4a, 0xf7, 0xe6, 0xf5, 0xf4, 0xfa, + 0x03, 0xff, 0xdd, 0xfb, 0xcb, 0xf5, 0x59, 0xf2, 0xa3, 0xf4, 0x35, 0xf9, 0x8f, 0xfa, 0xe4, 0xff, + 0xc8, 0xff, 0x63, 0xfe, 0xdb, 0xfd, 0x65, 0xfe, 0xdf, 0x01, 0xa8, 0xff, 0x57, 0x00, 0x60, 0x00, + 0xcf, 0x00, 0xa4, 0x08, 0xd2, 0x06, 0x39, 0x04, 0xf4, 0xff, 0xf7, 0x00, 0x06, 0x03, 0xec, 0x03, + 0x92, 0x05, 0x8f, 0x00, 0x88, 0xfe, 0x9f, 0x02, 0xba, 0x02, 0xe7, 0x04, 0xdc, 0xff, 0x73, 0x03, + 0xfd, 0x00, 0x9b, 0x03, 0x74, 0x02, 0x22, 0x07, 0x5c, 0x08, 0xab, 0x01, 0x85, 0xff, 0x49, 0xfe, + 0x6c, 0x02, 0xac, 0xff, 0xdf, 0x00, 0xbf, 0xfa, 0x4c, 0xfd, 0x78, 0xfe, 0x72, 0xfa, 0xcd, 0xfa, + 0x33, 0xfa, 0x47, 0xfc, 0x21, 0xf8, 0xe9, 0xf6, 0x0b, 0xf7, 0xe4, 0xf6, 0x8b, 0xf8, 0x6e, 0xf7, + 0x1e, 0xf6, 0x2a, 0xf7, 0x30, 0xfc, 0x54, 0xf5, 0xe6, 0xf4, 0x51, 0xf0, 0xf4, 0xf5, 0x7e, 0xf8, + 0x66, 0xfb, 0x0e, 0xfb, 0x7b, 0xf9, 0x61, 0xfb, 0x50, 0xfc, 0x72, 0xff, 0x1c, 0x01, 0x03, 0x05, + 0x4e, 0x00, 0xc7, 0x02, 0x0b, 0x02, 0xfb, 0x04, 0x73, 0x06, 0x86, 0x01, 0x45, 0xfe, 0xef, 0x04, + 0x4b, 0x0b, 0x34, 0x0b, 0x6c, 0x04, 0xa8, 0x00, 0x25, 0x04, 0x5e, 0x04, 0x20, 0x0b, 0xeb, 0x0a, + 0x66, 0x0c, 0xc8, 0x07, 0xa9, 0x07, 0xfb, 0x07, 0x2d, 0x07, 0x3a, 0x0e, 0xcb, 0x0b, 0xe4, 0x06, + 0xd0, 0x04, 0x20, 0x0a, 0x3a, 0x06, 0x73, 0x02, 0xc9, 0x02, 0x46, 0x02, 0x6b, 0x06, 0x92, 0x01, + 0x21, 0x04, 0xe4, 0xfb, 0x98, 0x01, 0xa1, 0xff, 0x6d, 0xfa, 0xb0, 0xf8, 0x10, 0xf5, 0xf1, 0xf6, + 0x61, 0xf7, 0x7d, 0xf8, 0x1c, 0xf6, 0xd1, 0xf6, 0xc6, 0xf6, 0x4d, 0xf9, 0xf1, 0xfd, 0x0c, 0x00, + 0x45, 0xff, 0xb0, 0xf8, 0x0a, 0xfd, 0x8e, 0x01, 0x21, 0x03, 0xbd, 0x00, 0x9f, 0x04, 0xcd, 0x07, + 0x32, 0x06, 0x18, 0x06, 0x15, 0x04, 0x72, 0x00, 0xb2, 0xfc, 0x7d, 0x01, 0x5b, 0x02, 0x0d, 0x05, + 0x26, 0x04, 0x7a, 0x01, 0x3f, 0xfd, 0x39, 0xf9, 0xbf, 0xf9, 0x4e, 0xfe, 0x99, 0xff, 0xfb, 0xff, + 0x52, 0xfe, 0xfb, 0xfc, 0xff, 0xfa, 0xfb, 0xf9, 0xaf, 0xfe, 0xfe, 0x02, 0x3e, 0x01, 0x77, 0xfd, + 0xf7, 0xfa, 0xed, 0xfd, 0x2e, 0xfe, 0x28, 0x02, 0xe8, 0x01, 0x32, 0xf9, 0x40, 0x01, 0x81, 0x01, + 0x61, 0x03, 0x9b, 0x01, 0xc7, 0x01, 0xca, 0xfe, 0x46, 0xfb, 0x43, 0xfd, 0xb3, 0x04, 0xcc, 0x03, + 0x8d, 0xfe, 0x4c, 0xfd, 0x39, 0xfc, 0x6c, 0x04, 0x58, 0x03, 0xc4, 0x02, 0x36, 0x00, 0x76, 0x01, + 0x24, 0x02, 0x43, 0x04, 0xf3, 0x05, 0xce, 0x04, 0x3a, 0xff, 0x12, 0x04, 0x6a, 0x05, 0x0c, 0x0d, + 0xbd, 0x0c, 0x26, 0x08, 0x97, 0x05, 0xb5, 0x04, 0x3f, 0x0d, 0xf9, 0x08, 0x62, 0x07, 0x6f, 0x04, + 0xcd, 0x06, 0x9f, 0x04, 0xd9, 0x01, 0xc6, 0x04, 0xe7, 0x00, 0x7f, 0x01, 0x25, 0x01, 0xc3, 0xfd, + 0x59, 0xfa, 0xf6, 0xfd, 0x9b, 0xfa, 0x28, 0xf9, 0x2e, 0xf8, 0x61, 0xfb, 0x5a, 0xfc, 0xf9, 0xf6, + 0x77, 0xf0, 0x4b, 0xf1, 0x4d, 0xf1, 0x46, 0xf4, 0x12, 0xf7, 0x12, 0xf7, 0x90, 0xf8, 0xb0, 0xf0, + 0x10, 0xf2, 0x7e, 0xf0, 0x32, 0xfb, 0xf6, 0xf5, 0x6e, 0xf3, 0x74, 0xec, 0xcd, 0xf2, 0xfa, 0xf9, + 0xcb, 0xfb, 0xba, 0xf9, 0xd7, 0xf9, 0xfe, 0xfe, 0xac, 0xf9, 0x33, 0xfb, 0x34, 0xff, 0xfd, 0x01, + 0x11, 0x03, 0xfa, 0x01, 0x91, 0x07, 0x94, 0x08, 0x4d, 0x0a, 0x30, 0x0a, 0x70, 0x0d, 0x1b, 0x11, + 0xa6, 0x0d, 0x7b, 0x0d, 0x58, 0x09, 0xed, 0x0a, 0xb5, 0x0b, 0x55, 0x11, 0xc8, 0x0c, 0xa2, 0x0a, + 0x59, 0x08, 0xc0, 0x07, 0xc0, 0x07, 0x0e, 0x06, 0x97, 0x04, 0xa8, 0x03, 0x9e, 0x08, 0x1a, 0x04, + 0xa6, 0x00, 0xa1, 0xf6, 0x9b, 0xfd, 0xd8, 0xff, 0x65, 0x03, 0xee, 0x03, 0xe7, 0x01, 0x17, 0x05, + 0x69, 0xfd, 0x48, 0x01, 0xcf, 0xfe, 0x1d, 0x07, 0x00, 0x03, 0x2e, 0x01, 0x95, 0x04, 0x5f, 0x09, + 0x00, 0x08, 0x5a, 0x03, 0xbb, 0x05, 0x39, 0x07, 0x3f, 0x08, 0xca, 0x0a, 0x29, 0x04, 0x5d, 0x04, + 0x4c, 0x02, 0xea, 0x05, 0xf0, 0x04, 0x4a, 0x02, 0xa8, 0x01, 0x0c, 0x03, 0x87, 0x03, 0xec, 0xfe, + 0x1a, 0x03, 0x3d, 0x03, 0xb4, 0xfe, 0x6c, 0xf8, 0xd8, 0xfb, 0xee, 0xff, 0x7b, 0xfd, 0x55, 0xfa, + 0xc8, 0xf6, 0xa7, 0xf7, 0xa5, 0xf8, 0x69, 0xf9, 0x0b, 0xfb, 0xea, 0xf3, 0x80, 0xf2, 0x82, 0xf0, + 0xb0, 0xf6, 0x8d, 0xfa, 0x70, 0xf8, 0xc6, 0xfa, 0x3a, 0xfa, 0x78, 0xfa, 0x2f, 0xfa, 0x8a, 0xfd, + 0xc3, 0xf8, 0x5a, 0xf5, 0x18, 0xf7, 0xc2, 0xf8, 0xee, 0xfc, 0x52, 0xf7, 0x8d, 0xf8, 0xf5, 0xf6, + 0xf6, 0x01, 0x77, 0x05, 0x4a, 0x02, 0x8c, 0x01, 0xb3, 0x01, 0x21, 0x04, 0x79, 0x08, 0x58, 0x04, + 0x83, 0x05, 0xd0, 0x07, 0x55, 0x04, 0x82, 0x05, 0x06, 0x03, 0xba, 0x04, 0xd2, 0x03, 0xc2, 0xff, + 0x0f, 0xfc, 0x96, 0x00, 0x5b, 0x04, 0x7c, 0xfe, 0xb2, 0xfd, 0xd1, 0xf5, 0xa1, 0xfa, 0x10, 0xf7, + 0xc2, 0xf7, 0x0b, 0xf8, 0xaa, 0xf9, 0x3b, 0xf8, 0x0c, 0xf3, 0xbd, 0xf5, 0x28, 0xf9, 0xd0, 0xfc, + 0x5e, 0xfc, 0x9f, 0xf4, 0x4c, 0xf3, 0x34, 0xf1, 0xe9, 0xf3, 0x2c, 0xf9, 0x4a, 0xf8, 0x49, 0xf5, + 0x8a, 0xed, 0x43, 0xf1, 0x9d, 0xf0, 0x44, 0xf5, 0xc2, 0xf3, 0xd4, 0xed, 0x87, 0xf2, 0x7c, 0xf3, + 0x71, 0xf0, 0xad, 0xf5, 0xce, 0xf8, 0xc3, 0xfc, 0x65, 0xf8, 0x58, 0xf8, 0x3e, 0xf6, 0x27, 0xf6, + 0x23, 0xf7, 0xf1, 0xfb, 0xe2, 0xf9, 0x1f, 0xf8, 0xd5, 0xf8, 0xbd, 0xfb, 0x87, 0xff, 0x9b, 0x01, + 0xb0, 0x05, 0x75, 0xff, 0xb7, 0xfe, 0x85, 0x03, 0xcf, 0x06, 0x49, 0x08, 0x54, 0x0a, 0x9c, 0x03, + 0x01, 0x02, 0xd2, 0x00, 0x74, 0x00, 0x97, 0x04, 0x0e, 0x06, 0xbe, 0x04, 0x86, 0x00, 0x81, 0xfd, + 0x39, 0x01, 0xa7, 0x09, 0x4a, 0x0c, 0x40, 0x0b, 0xbe, 0x0a, 0xd7, 0x0d, 0x4c, 0x14, 0x6b, 0x0f, + 0xce, 0x15, 0x2e, 0x17, 0xd7, 0x19, 0x31, 0x1a, 0x4b, 0x17, 0x9a, 0x1a, 0xe1, 0x19, 0x54, 0x1b, + 0x20, 0x11, 0x8e, 0x16, 0x7d, 0x1b, 0x99, 0x22, 0xc3, 0x20, 0xe6, 0x15, 0x86, 0x15, 0x3a, 0x16, + 0xcd, 0x1c, 0xab, 0x18, 0xd6, 0x14, 0x64, 0x0f, 0x91, 0x09, 0x16, 0x09, 0x36, 0x0f, 0x9c, 0x17, + 0x38, 0x0f, 0x86, 0x06, 0xcc, 0xff, 0x82, 0x02, 0xe5, 0x05, 0x63, 0x08, 0xae, 0x02, 0x39, 0xfd, + 0x38, 0xff, 0xa8, 0xfe, 0xae, 0xfe, 0xab, 0xfa, 0xd7, 0xf9, 0x66, 0xf5, 0xb8, 0xed, 0x42, 0xea, + 0xe5, 0xee, 0x6d, 0xf0, 0x1f, 0xf3, 0x03, 0xe9, 0x3c, 0xea, 0x90, 0xe7, 0x74, 0xe6, 0x0d, 0xef, + 0x0f, 0xf0, 0x31, 0xf4, 0xc8, 0xed, 0xc0, 0xe7, 0xf4, 0xe7, 0xfe, 0xeb, 0x6a, 0xf8, 0xab, 0xf9, + 0xb0, 0xee, 0x00, 0xe7, 0x7d, 0xec, 0x71, 0xf5, 0xf7, 0xf7, 0x42, 0xf3, 0xc1, 0xf3, 0x9d, 0xf6, + 0xd5, 0xf2, 0xf5, 0xf9, 0x98, 0xfd, 0x35, 0x01, 0xc2, 0x00, 0x82, 0x01, 0x66, 0x04, 0x6a, 0x04, + 0xbe, 0x04, 0x24, 0xfd, 0x0b, 0xfb, 0xb6, 0xfb, 0xf7, 0x00, 0x6a, 0x00, 0x8f, 0xff, 0x6b, 0x05, + 0xb0, 0x04, 0x1e, 0x01, 0x7c, 0xfc, 0xc8, 0xfc, 0xf8, 0x06, 0x86, 0x0a, 0xd1, 0x0a, 0xa5, 0x09, + 0xd8, 0x07, 0x5e, 0xff, 0x3f, 0xfe, 0xfe, 0x03, 0x05, 0x06, 0x5d, 0x00, 0x74, 0xfd, 0x22, 0x00, + 0x23, 0x07, 0x92, 0x07, 0x5b, 0x02, 0x5e, 0xf6, 0xef, 0xf9, 0xbe, 0x06, 0xf2, 0x08, 0xeb, 0x07, + 0x5c, 0x00, 0xf8, 0xfe, 0x8a, 0x01, 0x45, 0x04, 0xc8, 0x0d, 0x5b, 0x0d, 0xbd, 0x03, 0xd9, 0xfe, + 0x7e, 0xfe, 0xf7, 0x07, 0x1c, 0x07, 0xf7, 0x02, 0x7c, 0xfd, 0x1d, 0xff, 0x61, 0x02, 0x91, 0x07, + 0xb5, 0x03, 0x71, 0x00, 0xc3, 0xfc, 0xac, 0x01, 0xff, 0x01, 0x63, 0x04, 0xf9, 0x05, 0x2e, 0x01, + 0x34, 0x00, 0xc5, 0xfa, 0xe7, 0xfe, 0xc1, 0x02, 0x09, 0xff, 0xaa, 0xfd, 0x01, 0xfd, 0x6f, 0xfb, + 0x47, 0xfd, 0x29, 0xfe, 0x02, 0x01, 0x20, 0x02, 0xea, 0xfc, 0x13, 0xfc, 0x05, 0xfd, 0x52, 0x04, + 0x47, 0x06, 0x83, 0xfc, 0xb2, 0xf8, 0x21, 0xfb, 0x95, 0xff, 0x0f, 0x08, 0xa3, 0x01, 0xd7, 0xfa, + 0xb7, 0xf9, 0x36, 0xf3, 0xd6, 0xfc, 0xc4, 0x01, 0xde, 0x02, 0x9d, 0x00, 0x67, 0xfc, 0xcd, 0x01, + 0x19, 0x0d, 0x40, 0x0d, 0x8a, 0x06, 0xe8, 0x00, 0x19, 0xfc, 0x5f, 0x02, 0x47, 0x05, 0xe4, 0x09, + 0x11, 0x08, 0x29, 0x08, 0x32, 0x08, 0x80, 0x02, 0x97, 0x05, 0xb2, 0x02, 0xc3, 0x00, 0xc8, 0xfb, + 0xf4, 0xfc, 0x7e, 0xfe, 0x3c, 0x00, 0xff, 0xff, 0x79, 0xfa, 0x23, 0xfa, 0x13, 0xfe, 0x24, 0xfc, + 0x55, 0xfa, 0xd2, 0xf2, 0x98, 0xed, 0x1a, 0xf0, 0x88, 0xee, 0xb1, 0xee, 0x75, 0xed, 0x1a, 0xf3, + 0xa1, 0xf8, 0xea, 0xfd, 0xaa, 0xff, 0xc6, 0xff, 0xcc, 0xfd, 0x07, 0xfd, 0x72, 0xfe, 0x83, 0x00, + 0xd6, 0x06, 0x18, 0x01, 0xbd, 0xf9, 0x9d, 0x01, 0x87, 0x06, 0x9e, 0x0a, 0xfa, 0x08, 0xed, 0x06, + 0xcc, 0x06, 0x94, 0x04, 0xbb, 0x05, 0x26, 0x02, 0x3c, 0xff, 0x43, 0x08, 0x6b, 0x01, 0x4b, 0xfd, + 0x0a, 0x00, 0x93, 0xfa, 0x80, 0xf8, 0x9f, 0xf5, 0x55, 0xf8, 0xa5, 0xfe, 0x27, 0x0a, 0x16, 0x0f, + 0x42, 0x0d, 0x7b, 0xfc, 0xbe, 0x00, 0x16, 0xfe, 0x10, 0x06, 0x1a, 0x0e, 0x6c, 0x0f, 0xde, 0x0d, + 0x68, 0x0d, 0xa6, 0x11, 0x56, 0x13, 0x75, 0x13, 0x3e, 0x14, 0xbb, 0x0b, 0xb1, 0xfd, 0x58, 0x06, + 0x71, 0x02, 0xfc, 0x05, 0xec, 0xfe, 0x4a, 0xfd, 0x5b, 0x00, 0x67, 0x04, 0x70, 0xfd, 0xe3, 0xf5, + 0xb7, 0xf1, 0x59, 0xf9, 0xbf, 0xfe, 0x17, 0x00, 0x4a, 0xf7, 0xf7, 0xfa, 0xff, 0xfc, 0x21, 0x05, + 0x66, 0x02, 0x6a, 0xfa, 0x06, 0xf3, 0x70, 0xee, 0xae, 0xf0, 0xfb, 0xf4, 0xed, 0xf7, 0xa0, 0xf6, + 0x50, 0xf0, 0x6b, 0xf2, 0x80, 0xf8, 0x55, 0xfd, 0x08, 0xfe, 0x15, 0xf8, 0x48, 0xfd, 0x5b, 0xfb, + 0xaa, 0xfa, 0x70, 0xfe, 0x22, 0x03, 0xed, 0xff, 0xd4, 0xfa, 0x6a, 0xf3, 0x00, 0xf7, 0x9f, 0xf7, + 0x84, 0xfc, 0xaa, 0xf3, 0xc0, 0xf7, 0x95, 0xf5, 0xa8, 0x04, 0xf4, 0x0c, 0xc6, 0x1b, 0x82, 0x17, + 0x26, 0x11, 0xa2, 0x08, 0xd9, 0x05, 0xeb, 0x0c, 0x24, 0x05, 0x08, 0x05, 0x05, 0x00, 0xda, 0xfa, + 0x91, 0x00, 0x3c, 0x0b, 0x12, 0x18, 0x6d, 0x1c, 0xc0, 0x11, 0xb4, 0x0f, 0x9e, 0x10, 0x73, 0x10, + 0x99, 0x0c, 0x9b, 0x03, 0x8b, 0xf5, 0x88, 0xf1, 0xcf, 0xf2, 0x44, 0xfd, 0xdc, 0x04, 0x8b, 0x09, + 0x25, 0x08, 0x07, 0xfd, 0x81, 0x03, 0x40, 0x07, 0xb9, 0x08, 0x14, 0x04, 0xd0, 0xff, 0x9d, 0xfa, + 0xef, 0xff, 0x72, 0x02, 0x61, 0x02, 0x9b, 0xfe, 0x47, 0xfb, 0xc8, 0xf6, 0x52, 0xf7, 0x03, 0xfa, + 0x12, 0xf8, 0xf6, 0xee, 0xe7, 0xf2, 0x51, 0xf7, 0x78, 0xf6, 0x45, 0xee, 0x63, 0xeb, 0x0d, 0xe4, + 0xa6, 0xde, 0x37, 0xe1, 0x74, 0xe6, 0x65, 0xe6, 0x84, 0xde, 0x10, 0xdf, 0xb2, 0xe7, 0xb6, 0xeb, + 0x67, 0xf0, 0xb9, 0xf0, 0x60, 0xed, 0xc6, 0xf0, 0xed, 0xed, 0x6a, 0xea, 0xc3, 0xe8, 0x90, 0xe6, + 0x38, 0xe7, 0x9a, 0xe7, 0xcc, 0xeb, 0xac, 0xf1, 0x44, 0xf2, 0xb0, 0xf4, 0xd8, 0xf9, 0x77, 0xfb, + 0xe0, 0xfb, 0xdb, 0xfc, 0xfa, 0xf9, 0x33, 0xf9, 0x6c, 0xf1, 0xa4, 0xf7, 0x9d, 0x00, 0x33, 0x05, + 0x7e, 0x0a, 0x00, 0x08, 0x18, 0x0e, 0xb7, 0x12, 0x5a, 0x15, 0x36, 0x11, 0x27, 0x10, 0xb2, 0x15, + 0xcc, 0x14, 0x4f, 0x15, 0xee, 0x17, 0xee, 0x18, 0xe8, 0x17, 0xcb, 0x16, 0x4a, 0x17, 0x8f, 0x19, + 0x51, 0x1c, 0x71, 0x1e, 0x05, 0x21, 0x2f, 0x23, 0xcf, 0x1d, 0x57, 0x19, 0x1e, 0x1a, 0x02, 0x20, + 0xb5, 0x1d, 0xc2, 0x1c, 0x83, 0x18, 0x29, 0x1a, 0x9c, 0x20, 0x4a, 0x22, 0x18, 0x23, 0x1f, 0x1d, + 0xfe, 0x1b, 0x2f, 0x1a, 0x5a, 0x1b, 0x20, 0x17, 0x16, 0x11, 0xe8, 0x05, 0x8d, 0x03, 0x51, 0x09, + 0x74, 0x0c, 0x7e, 0x0f, 0x8a, 0x08, 0x28, 0xff, 0xdc, 0xff, 0x9b, 0x0a, 0x92, 0x0e, 0xe0, 0x0a, + 0x75, 0xfe, 0xa4, 0xf4, 0x32, 0xf7, 0x1c, 0xfe, 0xd5, 0x02, 0x02, 0xf8, 0x86, 0xe8, 0xa0, 0xe6, + 0xa2, 0xed, 0x3f, 0xfc, 0x17, 0x05, 0x0d, 0xfe, 0xa3, 0xf4, 0x94, 0xf1, 0x8f, 0xf9, 0x0b, 0x02, + 0x9d, 0xfd, 0xfd, 0xef, 0x94, 0xe9, 0x5c, 0xe7, 0x90, 0xea, 0xfe, 0xef, 0xae, 0xf2, 0x06, 0xf1, + 0xf8, 0xe7, 0x5c, 0xe5, 0x83, 0xea, 0x1c, 0xf1, 0xe0, 0xf5, 0x9f, 0xf0, 0x77, 0xeb, 0xf0, 0xeb, + 0x9f, 0xef, 0x03, 0xf9, 0xde, 0xfd, 0xbb, 0xff, 0x67, 0xfb, 0x4c, 0xf5, 0x1d, 0xf8, 0xbd, 0xff, + 0xab, 0x02, 0x3a, 0x03, 0x57, 0xfe, 0xb1, 0x00, 0x6b, 0x09, 0x47, 0x10, 0xa4, 0x11, 0xd4, 0x0a, + 0x73, 0x05, 0x9d, 0x06, 0x9d, 0x07, 0xc8, 0x0e, 0x3e, 0x0d, 0x79, 0x08, 0xea, 0x00, 0x0e, 0x04, + 0x54, 0x0a, 0xc3, 0x0c, 0xa0, 0x06, 0xd1, 0xfe, 0x35, 0xf6, 0x68, 0xf1, 0xb8, 0xf7, 0xdf, 0xf8, + 0xed, 0xf2, 0x9a, 0xee, 0x11, 0xf2, 0xef, 0xf3, 0x61, 0xf5, 0x35, 0xf1, 0x8e, 0xee, 0x18, 0xec, + 0x18, 0xef, 0x66, 0xec, 0xf1, 0xe4, 0xd6, 0xe3, 0x31, 0xe7, 0xe7, 0xe7, 0x2a, 0xe7, 0xcc, 0xe3, + 0x0f, 0xe0, 0x9b, 0xda, 0x64, 0xda, 0x96, 0xdf, 0xd6, 0xe1, 0x51, 0xe0, 0x1d, 0xdf, 0xf0, 0xe4, + 0xb9, 0xe9, 0x21, 0xf1, 0xfa, 0xf0, 0x90, 0xf1, 0xc3, 0xf0, 0x9b, 0xf4, 0xa5, 0xf7, 0x01, 0xf8, + 0xb8, 0xf8, 0x9d, 0xfb, 0x17, 0xff, 0xc1, 0x02, 0xf6, 0x00, 0x4f, 0x03, 0xbc, 0x05, 0x6e, 0x03, + 0x70, 0x05, 0x0f, 0x0a, 0x77, 0x0f, 0x42, 0x14, 0xc2, 0x11, 0xcc, 0x0f, 0x7a, 0x12, 0xbc, 0x0e, + 0xeb, 0x0b, 0x56, 0x0c, 0xc3, 0x12, 0x3e, 0x14, 0xbd, 0x0e, 0xde, 0x09, 0xe5, 0x06, 0x64, 0x09, + 0x99, 0x0a, 0x0b, 0x0b, 0xcb, 0x0a, 0x42, 0x0a, 0x25, 0x0c, 0xc4, 0x0d, 0x66, 0x13, 0xab, 0x16, + 0x67, 0x11, 0x0d, 0x0d, 0xa7, 0x0c, 0xa1, 0x0f, 0xe1, 0x0f, 0x8a, 0x0d, 0xcc, 0x0c, 0xce, 0x0d, + 0x72, 0x12, 0x4f, 0x16, 0x25, 0x1a, 0xec, 0x1d, 0x19, 0x1e, 0xbe, 0x1e, 0xcb, 0x1e, 0x4b, 0x1f, + 0xb7, 0x1e, 0x1d, 0x1b, 0xcc, 0x17, 0x7b, 0x16, 0xbb, 0x18, 0xa9, 0x18, 0x59, 0x1b, 0xb5, 0x1d, + 0xc4, 0x1c, 0x05, 0x1b, 0x28, 0x18, 0xd4, 0x1f, 0xfb, 0x21, 0x75, 0x1d, 0xac, 0x18, 0x99, 0x12, + 0xe5, 0x0f, 0x09, 0x0f, 0x75, 0x13, 0x64, 0x15, 0x45, 0x0e, 0xa2, 0x06, 0x15, 0x04, 0x69, 0x04, + 0x96, 0x0e, 0x3e, 0x10, 0x98, 0x07, 0x2b, 0x01, 0xee, 0xfc, 0x1b, 0xfe, 0x6d, 0xfd, 0x98, 0xfc, + 0x20, 0xf8, 0x2f, 0xee, 0x95, 0xef, 0x63, 0xf4, 0xd3, 0xf6, 0x7d, 0xf5, 0xe3, 0xf1, 0x36, 0xf1, + 0x62, 0xf2, 0xca, 0xf5, 0xbd, 0xf8, 0x1b, 0xf8, 0xf0, 0xf1, 0xf4, 0xed, 0xa6, 0xe9, 0xf2, 0xea, + 0x4b, 0xeb, 0xeb, 0xe8, 0x56, 0xe0, 0xc5, 0xd9, 0x33, 0xdc, 0x16, 0xe0, 0xd4, 0xe3, 0x1a, 0xe0, + 0x69, 0xd7, 0xc0, 0xd1, 0x8f, 0xd5, 0x4e, 0xdd, 0x12, 0xdf, 0x1d, 0xd9, 0xae, 0xd0, 0xd0, 0xcb, + 0x04, 0xcd, 0xa7, 0xd8, 0x84, 0xe2, 0xe7, 0xe2, 0xa5, 0xde, 0x02, 0xe4, 0x76, 0xeb, 0xaf, 0xf4, + 0x65, 0x00, 0xc0, 0x00, 0x69, 0xf8, 0x0e, 0xf5, 0xd0, 0xf7, 0x83, 0xfe, 0x82, 0x02, 0x2a, 0x03, + 0xd1, 0x00, 0x8a, 0xfd, 0xdd, 0x05, 0x86, 0x0e, 0x47, 0x12, 0x84, 0x15, 0xd3, 0x13, 0x05, 0x13, + 0x24, 0x18, 0x9d, 0x1b, 0x8c, 0x1f, 0xb1, 0x1d, 0xf8, 0x17, 0x76, 0x14, 0xe6, 0x11, 0x84, 0x0e, + 0x0b, 0x0e, 0xd3, 0x08, 0x0a, 0x04, 0xbc, 0x03, 0x54, 0x02, 0x80, 0x00, 0x69, 0xfc, 0xed, 0xfb, + 0x65, 0xf5, 0x85, 0xf2, 0xaa, 0xf6, 0x7b, 0xf9, 0x3e, 0xf8, 0xee, 0xf1, 0x53, 0xee, 0x2d, 0xe9, + 0x69, 0xe6, 0x24, 0xe8, 0x2a, 0xec, 0xeb, 0xf1, 0xc3, 0xf5, 0xac, 0xf2, 0x20, 0xf8, 0x07, 0xfa, + 0x19, 0xf8, 0xc5, 0xfa, 0x59, 0xfb, 0xdf, 0xfb, 0x7a, 0xf9, 0x62, 0xfa, 0x56, 0xfa, 0x16, 0x00, + 0x83, 0x01, 0xf5, 0x01, 0x77, 0x00, 0x9b, 0xf8, 0x7a, 0xfa, 0x4b, 0xf2, 0x8a, 0xf0, 0x8a, 0xf5, + 0x40, 0xf4, 0x72, 0xf8, 0x20, 0xfc, 0xbb, 0x03, 0xc9, 0x0c, 0xee, 0x0c, 0x89, 0x0a, 0xa7, 0x0e, + 0xc4, 0x07, 0x7b, 0x08, 0x0a, 0x0a, 0x97, 0x08, 0xf2, 0x17, 0xc9, 0x16, 0xc4, 0x1b, 0xf3, 0x1f, + 0xdf, 0x12, 0xc2, 0x17, 0x82, 0x18, 0xe4, 0x15, 0x95, 0x1a, 0x77, 0x19, 0xfb, 0x18, 0x13, 0x1a, + 0x21, 0x1b, 0xa2, 0x26, 0xd6, 0x23, 0xf5, 0x1e, 0x19, 0x1b, 0x32, 0x1b, 0x4c, 0x13, 0xd2, 0x15, + 0x12, 0x11, 0x5c, 0x12, 0xfb, 0x17, 0xf9, 0x16, 0x30, 0x17, 0x68, 0x0e, 0xec, 0x09, 0x77, 0x0c, + 0x18, 0x0d, 0xeb, 0x0d, 0xd0, 0x0a, 0x99, 0x06, 0x8f, 0x08, 0xde, 0x0a, 0x1f, 0x12, 0xfa, 0x12, + 0x42, 0x10, 0xa4, 0x0f, 0x1a, 0x13, 0xbf, 0x11, 0x7d, 0x0e, 0x44, 0x0d, 0x3b, 0x0a, 0xa7, 0x0c, + 0x18, 0x0c, 0x1f, 0x08, 0xae, 0x09, 0xb6, 0x07, 0x37, 0x0a, 0x43, 0x0d, 0xbb, 0x06, 0x18, 0x06, + 0x2e, 0x03, 0x83, 0xf9, 0x34, 0xfa, 0x55, 0xf5, 0x5e, 0xf0, 0x66, 0xee, 0x4a, 0xe4, 0x91, 0xe3, + 0x80, 0xe0, 0x40, 0xd5, 0x23, 0xcd, 0x6a, 0xcb, 0x5a, 0xcf, 0x93, 0xd2, 0x0f, 0xd1, 0xbe, 0xce, + 0xc6, 0xd4, 0x18, 0xdc, 0x0a, 0xe2, 0xf0, 0xe2, 0x44, 0xe1, 0xb9, 0xdc, 0x97, 0xdc, 0x5e, 0xe3, + 0x51, 0xea, 0x9a, 0xec, 0x3b, 0xed, 0x47, 0xec, 0xa8, 0xeb, 0xb0, 0xf3, 0x12, 0xfa, 0x80, 0xfb, + 0x6b, 0x01, 0x83, 0x04, 0x65, 0x04, 0x10, 0x08, 0x00, 0x0c, 0x7c, 0x0f, 0x03, 0x10, 0x07, 0x0e, + 0x93, 0x0c, 0x2c, 0x05, 0x26, 0x03, 0x88, 0x05, 0xa5, 0x07, 0xc0, 0x07, 0xc7, 0x03, 0x0c, 0x00, + 0x63, 0xf7, 0x3d, 0xf0, 0x83, 0xf0, 0x85, 0xf1, 0x77, 0xf1, 0x9d, 0xf0, 0x57, 0xf0, 0x4e, 0xf0, + 0x32, 0xeb, 0x27, 0xea, 0x3b, 0xea, 0x19, 0xe7, 0x17, 0xea, 0x88, 0xed, 0xef, 0xed, 0x80, 0xed, + 0x1f, 0xee, 0xdf, 0xf3, 0x06, 0xf7, 0xc2, 0xf9, 0x54, 0xfe, 0x54, 0xfd, 0xaa, 0xff, 0x0b, 0x04, + 0xdd, 0x06, 0x23, 0x0a, 0x97, 0x05, 0x2a, 0x00, 0x7c, 0xfe, 0xe2, 0x00, 0x31, 0x03, 0x5a, 0x01, + 0x67, 0xfb, 0x48, 0xf6, 0x63, 0xf8, 0x00, 0xfd, 0xd5, 0x00, 0xde, 0xfc, 0xe4, 0xf6, 0xed, 0xf6, + 0x4e, 0xf6, 0x91, 0xfb, 0xba, 0xff, 0xb9, 0xfb, 0x61, 0xf8, 0xe2, 0xf7, 0x4a, 0xfc, 0x0f, 0xfe, + 0x65, 0xfd, 0xa5, 0xf9, 0x2a, 0xf9, 0x9f, 0xfe, 0xf4, 0x02, 0x54, 0x0a, 0x76, 0x0c, 0x5a, 0x10, + 0xae, 0x14, 0x25, 0x12, 0x07, 0x14, 0x6c, 0x15, 0xb6, 0x19, 0x29, 0x20, 0x12, 0x22, 0x29, 0x26, + 0x48, 0x27, 0x4b, 0x29, 0x59, 0x2d, 0x29, 0x31, 0xa3, 0x32, 0x4e, 0x2f, 0x59, 0x2d, 0xf3, 0x2b, + 0x5b, 0x29, 0x32, 0x24, 0x3a, 0x20, 0xee, 0x1f, 0xbe, 0x21, 0x02, 0x25, 0x16, 0x24, 0x33, 0x22, + 0x6c, 0x1d, 0x48, 0x1b, 0x11, 0x1d, 0xd8, 0x19, 0x2f, 0x15, 0x57, 0x10, 0xda, 0x0c, 0x5a, 0x09, + 0x75, 0x06, 0xf0, 0x02, 0xdf, 0xfb, 0xc9, 0xfb, 0x50, 0xfd, 0xe8, 0xfe, 0x0f, 0x01, 0x55, 0xff, + 0xef, 0xfe, 0x88, 0xff, 0xd3, 0xfd, 0x24, 0x02, 0x99, 0x01, 0xdc, 0xfc, 0xb5, 0xfd, 0x75, 0xfb, + 0xf3, 0xf3, 0x5b, 0xf0, 0xeb, 0xed, 0x3d, 0xef, 0xff, 0xf0, 0x89, 0xef, 0xa1, 0xeb, 0x4d, 0xe7, + 0x0c, 0xeb, 0x13, 0xee, 0xba, 0xee, 0x14, 0xee, 0x0c, 0xea, 0x57, 0xe2, 0x41, 0xdf, 0x55, 0xe4, + 0xa7, 0xe2, 0xb3, 0xe1, 0xe4, 0xdb, 0xdd, 0xd7, 0x6a, 0xde, 0x2a, 0xe4, 0xe2, 0xe9, 0x73, 0xed, + 0x84, 0xed, 0x8a, 0xef, 0xea, 0xf0, 0x7b, 0xf3, 0xfc, 0xf9, 0x0a, 0xfc, 0x9c, 0xfb, 0x31, 0xff, + 0x8d, 0xff, 0x1b, 0x01, 0xee, 0x05, 0x28, 0x07, 0xbb, 0x09, 0x15, 0x0a, 0x4c, 0x0c, 0x97, 0x0c, + 0x48, 0x07, 0x8a, 0x07, 0x3d, 0x08, 0x8d, 0x07, 0x97, 0x07, 0xd9, 0x0a, 0x5d, 0x09, 0x5c, 0x05, + 0xf1, 0x00, 0xe0, 0xfb, 0x22, 0xfa, 0xc6, 0xf2, 0x3a, 0xf1, 0xad, 0xf2, 0x7f, 0xed, 0x67, 0xee, + 0xe6, 0xef, 0xd6, 0xf0, 0x69, 0xf4, 0xbe, 0xf5, 0x55, 0xf3, 0x42, 0xef, 0x57, 0xea, 0x6f, 0xed, + 0x28, 0xf2, 0x56, 0xf2, 0xba, 0xf5, 0xad, 0xf3, 0x1f, 0xf1, 0x65, 0xf7, 0x85, 0xf9, 0x7f, 0xfb, + 0x25, 0xfe, 0x3b, 0xfa, 0x3c, 0xfa, 0x53, 0xf9, 0x73, 0xfb, 0x88, 0xfd, 0xc0, 0xfa, 0x85, 0xfe, + 0x89, 0x02, 0xae, 0x00, 0x14, 0xfe, 0x3c, 0xfa, 0xa1, 0xf1, 0x21, 0xf1, 0xcf, 0xf3, 0xaf, 0xf4, + 0x55, 0xf3, 0x0f, 0xee, 0xd5, 0xea, 0x68, 0xe7, 0x19, 0xe9, 0x8d, 0xec, 0xea, 0xed, 0x92, 0xe9, + 0xeb, 0xe6, 0xb8, 0xe7, 0x45, 0xe9, 0xc3, 0xef, 0xed, 0xf1, 0x4d, 0xf1, 0x67, 0xf6, 0x45, 0xf6, + 0x2e, 0xfe, 0x07, 0x07, 0x70, 0x0e, 0xfc, 0x16, 0x95, 0x17, 0x1d, 0x19, 0xbb, 0x1a, 0x22, 0x1d, + 0x83, 0x22, 0x54, 0x25, 0x3e, 0x27, 0x43, 0x2b, 0x75, 0x2f, 0x8e, 0x32, 0xc6, 0x38, 0x07, 0x3c, + 0x4b, 0x3d, 0x0f, 0x3f, 0xfc, 0x3b, 0xe8, 0x3c, 0x90, 0x3d, 0xb4, 0x39, 0x5f, 0x37, 0x2e, 0x34, + 0x01, 0x31, 0x9f, 0x2d, 0x3a, 0x27, 0xd8, 0x1f, 0xe1, 0x19, 0xe0, 0x13, 0xc6, 0x13, 0xee, 0x15, + 0x3d, 0x12, 0xc2, 0x0e, 0xb4, 0x07, 0x79, 0x02, 0x6e, 0x02, 0x2d, 0x03, 0x97, 0x03, 0x33, 0xfe, + 0x7e, 0xf6, 0x23, 0xf2, 0x6d, 0xee, 0x42, 0xf0, 0x80, 0xf5, 0xa1, 0xf4, 0xbe, 0xf3, 0x8f, 0xf4, + 0xe6, 0xf4, 0x7d, 0xfa, 0xcb, 0xfa, 0x7a, 0xfb, 0xb9, 0xfc, 0x85, 0xfb, 0xcf, 0xf8, 0xdf, 0xf4, + 0xd0, 0xf1, 0x82, 0xed, 0xde, 0xea, 0xf9, 0xe8, 0xba, 0xe7, 0x79, 0xe7, 0x22, 0xe5, 0xc3, 0xe3, + 0xe5, 0xdf, 0x0f, 0xe2, 0xfb, 0xe6, 0xe2, 0xe9, 0x35, 0xea, 0x3c, 0xe8, 0xdd, 0xe6, 0x36, 0xea, + 0x1e, 0xf0, 0xe1, 0xf1, 0x9a, 0xf2, 0x8a, 0xf4, 0x26, 0xf5, 0x0d, 0xf7, 0x43, 0xfb, 0xf7, 0x02, + 0x58, 0x04, 0xac, 0xfe, 0xf8, 0xfe, 0xcc, 0xff, 0x41, 0x02, 0xe0, 0x07, 0xd3, 0x0b, 0x1a, 0x0c, + 0x02, 0x0c, 0xf6, 0x0b, 0xb5, 0x07, 0x8d, 0x06, 0x23, 0x07, 0xad, 0x04, 0xc7, 0x00, 0x02, 0xfc, + 0xa2, 0xf9, 0xf8, 0xf6, 0xf4, 0xf7, 0x2a, 0xfb, 0xb3, 0xfb, 0xf6, 0xfa, 0x1d, 0xf8, 0x66, 0xf3, + 0x54, 0xf1, 0x18, 0xf0, 0x26, 0xf0, 0x71, 0xf2, 0x65, 0xf3, 0xb1, 0xf6, 0x90, 0xf7, 0x36, 0xf5, + 0xa1, 0xf4, 0xad, 0xf4, 0x1c, 0xf3, 0x63, 0xf7, 0xb6, 0xf5, 0xfb, 0xef, 0xf6, 0xf0, 0x75, 0xf2, + 0x7a, 0xf9, 0xb3, 0x01, 0x94, 0x02, 0xd1, 0x03, 0xa2, 0x04, 0x5f, 0x05, 0x7c, 0x04, 0x02, 0x03, + 0x28, 0x06, 0x47, 0x03, 0xf0, 0x00, 0x33, 0xfd, 0xa2, 0xf8, 0xaa, 0xf9, 0x01, 0xfb, 0xce, 0xfc, + 0x52, 0xfb, 0xd9, 0xf8, 0x21, 0xf1, 0x43, 0xeb, 0x83, 0xeb, 0x03, 0xeb, 0x4c, 0xef, 0x8f, 0xef, + 0x8b, 0xec, 0xef, 0xed, 0xbd, 0xef, 0xf8, 0xf7, 0xfa, 0xfd, 0x07, 0xff, 0x6d, 0xfe, 0x0e, 0xfc, + 0xcb, 0xf6, 0x3c, 0xf6, 0x2d, 0xfb, 0x46, 0xfe, 0xa5, 0x02, 0x49, 0x03, 0x35, 0x05, 0x86, 0x0a, + 0x1f, 0x11, 0xf2, 0x18, 0x7b, 0x1b, 0xfb, 0x18, 0x41, 0x18, 0x57, 0x18, 0xdc, 0x17, 0x84, 0x1e, + 0x68, 0x22, 0x22, 0x21, 0x4b, 0x24, 0xa1, 0x23, 0x5a, 0x23, 0x57, 0x1f, 0x5a, 0x17, 0x46, 0x15, + 0xa9, 0x16, 0x66, 0x17, 0xa8, 0x17, 0xae, 0x13, 0x86, 0x0d, 0xe7, 0x0d, 0x61, 0x11, 0x5b, 0x13, + 0xbe, 0x14, 0xe5, 0x0e, 0x93, 0x07, 0xa3, 0xfe, 0x19, 0xfc, 0x91, 0x01, 0x61, 0x02, 0x1e, 0x06, + 0x83, 0x04, 0xf9, 0x00, 0xc2, 0x00, 0x2f, 0x04, 0x66, 0x0c, 0x0c, 0x11, 0xd2, 0x12, 0xde, 0x0f, + 0xd9, 0x0d, 0x4b, 0x0e, 0x78, 0x11, 0x2e, 0x0e, 0x2a, 0x06, 0x2d, 0x05, 0xed, 0x04, 0x12, 0x04, + 0x12, 0x06, 0xc4, 0xff, 0xa3, 0xf8, 0x54, 0xf4, 0x25, 0xf3, 0xd6, 0xf4, 0x62, 0xf4, 0xdb, 0xef, + 0x2e, 0xea, 0x61, 0xe5, 0x8e, 0xe7, 0x3e, 0xea, 0xf8, 0xe6, 0x64, 0xe1, 0x12, 0xdd, 0x05, 0xdd, + 0x2f, 0xe0, 0xcd, 0xe3, 0xff, 0xe1, 0x73, 0xe0, 0x5d, 0xdf, 0x44, 0xe0, 0xf8, 0xe3, 0xc1, 0xe9, + 0x40, 0xef, 0xe8, 0xec, 0x2f, 0xe9, 0xfa, 0xe6, 0xf2, 0xe6, 0xfd, 0xe9, 0x79, 0xeb, 0xdd, 0xee, + 0x9e, 0xf0, 0xe3, 0xef, 0x4f, 0xf2, 0x33, 0xf8, 0xe5, 0xfd, 0x37, 0x00, 0xdd, 0x02, 0x4d, 0x03, + 0xcd, 0x01, 0x07, 0x02, 0x8c, 0x01, 0x8a, 0x00, 0x3e, 0x00, 0x2e, 0x02, 0x9d, 0x03, 0x0d, 0x05, + 0xe9, 0x01, 0xb7, 0xfe, 0x01, 0xfd, 0xc9, 0xfb, 0x74, 0xfe, 0xe7, 0xfc, 0xe6, 0xfb, 0x67, 0xfd, + 0x01, 0xff, 0x56, 0x02, 0x40, 0x04, 0x7a, 0x06, 0x27, 0x04, 0x56, 0x00, 0x4e, 0xfe, 0x8a, 0xfe, + 0x59, 0x01, 0xeb, 0x06, 0xd0, 0x09, 0x85, 0x08, 0x97, 0x06, 0x2d, 0x06, 0xa2, 0x06, 0x9b, 0x02, + 0xf3, 0x03, 0x9b, 0x06, 0x76, 0x07, 0x1c, 0x05, 0x17, 0x03, 0xcf, 0xfe, 0x5d, 0xfa, 0x45, 0xfb, + 0xcd, 0xfe, 0x21, 0xfb, 0x6f, 0xf9, 0x85, 0xf6, 0x46, 0xf3, 0xdb, 0xf4, 0xe4, 0xf9, 0x04, 0xfc, + 0x81, 0xf8, 0xe8, 0xf0, 0xf0, 0xeb, 0xe8, 0xec, 0xb0, 0xf2, 0x68, 0xf7, 0x01, 0xf8, 0x79, 0xfa, + 0xfd, 0xff, 0x1d, 0x03, 0x86, 0x0a, 0x51, 0x13, 0xfa, 0x17, 0x0c, 0x18, 0x56, 0x16, 0xcd, 0x17, + 0x6a, 0x1b, 0x1f, 0x1f, 0xc8, 0x22, 0x64, 0x25, 0x78, 0x22, 0x62, 0x1f, 0x4e, 0x1f, 0x42, 0x1e, + 0x29, 0x22, 0x20, 0x26, 0x1e, 0x24, 0xb0, 0x20, 0x7e, 0x1b, 0x93, 0x18, 0x02, 0x18, 0x97, 0x14, + 0x90, 0x12, 0x11, 0x10, 0xd9, 0x09, 0xa1, 0x03, 0x2b, 0xfc, 0x31, 0xf5, 0x7d, 0xf0, 0x01, 0xef, + 0x99, 0xf1, 0xc8, 0xf1, 0xec, 0xf1, 0xb3, 0xf5, 0xde, 0xf7, 0x1f, 0xfb, 0x51, 0x00, 0x27, 0x02, + 0xd7, 0x04, 0x90, 0x02, 0xc8, 0xfc, 0xf3, 0xfa, 0xee, 0xfa, 0x34, 0xfe, 0x4a, 0x02, 0xcd, 0x07, + 0x7d, 0x0a, 0x14, 0x0e, 0xbf, 0x0b, 0xbc, 0x05, 0x7b, 0x0a, 0x5b, 0x0e, 0xcc, 0x13, 0xa7, 0x13, + 0xf2, 0x0c, 0x69, 0x08, 0xbe, 0x06, 0x2b, 0x09, 0x8a, 0x0b, 0xb8, 0x09, 0xd4, 0x03, 0x7a, 0xfb, + 0x3d, 0xf3, 0x29, 0xf1, 0xfd, 0xf3, 0x27, 0xf1, 0x97, 0xed, 0x88, 0xe3, 0xd4, 0xdc, 0x97, 0xdf, + 0xf6, 0xe4, 0xb4, 0xec, 0xa5, 0xed, 0xbf, 0xe8, 0x7c, 0xe6, 0x1f, 0xe4, 0x89, 0xe6, 0xa7, 0xec, + 0x3a, 0xee, 0x88, 0xe9, 0x02, 0xe7, 0x06, 0xe8, 0x74, 0xee, 0x52, 0xf8, 0x12, 0xfc, 0x8a, 0xfe, + 0xbb, 0xfc, 0x66, 0xf8, 0xc0, 0xf9, 0xc6, 0xf9, 0x56, 0xfd, 0x15, 0x03, 0x93, 0x06, 0xd6, 0x07, + 0x32, 0x08, 0x98, 0x07, 0x51, 0x05, 0x99, 0x05, 0xf5, 0x03, 0x15, 0x00, 0xdf, 0xf9, 0xda, 0xf7, + 0x4c, 0xf6, 0xce, 0xf1, 0x79, 0xf6, 0xe7, 0xf9, 0x36, 0xf8, 0xa1, 0xf5, 0xc9, 0xf1, 0x2e, 0xf2, + 0xbf, 0xf1, 0x97, 0xf3, 0x74, 0xf6, 0xb7, 0xf3, 0xcd, 0xf1, 0x36, 0xf1, 0xa3, 0xf0, 0xb0, 0xef, + 0x34, 0xf3, 0x54, 0xf8, 0x6a, 0xf8, 0x71, 0xfc, 0xe7, 0xfc, 0x9e, 0x00, 0x7a, 0xfb, 0x54, 0xf7, + 0x6e, 0xf9, 0x3e, 0xfd, 0xd2, 0x03, 0x2a, 0x06, 0xd3, 0x03, 0xf3, 0xff, 0x94, 0x00, 0xaf, 0x02, + 0x7c, 0x05, 0x56, 0x03, 0x60, 0xf9, 0xdc, 0xf1, 0x14, 0xea, 0x3f, 0xec, 0xef, 0xf3, 0x5b, 0xf6, + 0xa6, 0xf6, 0x57, 0xf0, 0x87, 0xec, 0xbb, 0xf1, 0xce, 0xfa, 0x32, 0x01, 0xc7, 0x02, 0xe3, 0x01, + 0xfa, 0xfe, 0xdb, 0x01, 0x66, 0x0a, 0x98, 0x15, 0xc1, 0x1a, 0x0f, 0x16, 0x53, 0x11, 0x17, 0x0f, + 0xc0, 0x15, 0xe8, 0x1e, 0x29, 0x25, 0x5f, 0x25, 0x59, 0x20, 0x06, 0x20, 0x64, 0x24, 0x18, 0x2c, + 0x05, 0x31, 0xc6, 0x31, 0xdf, 0x2c, 0xee, 0x28, 0x4b, 0x29, 0x40, 0x23, 0x52, 0x1e, 0x0b, 0x1a, + 0x2b, 0x11, 0xe1, 0x0d, 0x95, 0x0d, 0xee, 0x0d, 0x7b, 0x0d, 0x93, 0x0a, 0x27, 0x08, 0xdc, 0x06, + 0x88, 0x09, 0x97, 0x0c, 0x52, 0x08, 0x5a, 0xfe, 0x57, 0xf8, 0xa8, 0xf7, 0x78, 0xfb, 0x4e, 0x02, + 0xd6, 0x02, 0x81, 0xfe, 0xfe, 0xf8, 0xc9, 0xf7, 0x7e, 0xff, 0x1e, 0x08, 0x61, 0x0c, 0x65, 0x0e, + 0xa8, 0x0a, 0x34, 0x0c, 0xea, 0x09, 0x6c, 0x07, 0x7d, 0x07, 0x71, 0x06, 0x58, 0x04, 0x7e, 0x02, + 0xa6, 0xfc, 0xb1, 0xf4, 0x6d, 0xf3, 0x88, 0xf3, 0x86, 0xf2, 0x03, 0xf1, 0x7d, 0xe9, 0xc5, 0xe1, + 0xe1, 0xda, 0x1d, 0xdc, 0x3c, 0xe2, 0xb4, 0xe1, 0xdf, 0xde, 0x5d, 0xd9, 0x23, 0xd4, 0x3a, 0xd7, + 0x5e, 0xdd, 0x8d, 0xe0, 0x35, 0xe2, 0x64, 0xe3, 0x69, 0xe5, 0x06, 0xec, 0xd5, 0xf3, 0x15, 0xfc, + 0xfb, 0x01, 0xe7, 0x02, 0x72, 0x01, 0xb7, 0xfe, 0x48, 0x01, 0xef, 0x06, 0xe1, 0x0d, 0xc5, 0x12, + 0x0b, 0x15, 0x62, 0x16, 0xc1, 0x18, 0xaf, 0x1c, 0x89, 0x1e, 0x2d, 0x1b, 0xc0, 0x17, 0xa2, 0x16, + 0x5f, 0x15, 0x51, 0x10, 0xb5, 0x0d, 0x79, 0x0a, 0x0b, 0x07, 0x11, 0x05, 0x61, 0x01, 0xb1, 0xfc, + 0x3f, 0xfa, 0x67, 0xf9, 0x3a, 0xf7, 0x7f, 0xf6, 0xc5, 0xf4, 0x1d, 0xf0, 0x9e, 0xe8, 0x9e, 0xe2, + 0x89, 0xe1, 0x39, 0xe2, 0xc4, 0xe5, 0xbf, 0xe8, 0x2d, 0xec, 0x34, 0xee, 0xf2, 0xec, 0xb5, 0xee, + 0x15, 0xf0, 0xa4, 0xf3, 0xdf, 0xf5, 0x62, 0xf6, 0x52, 0xfb, 0xe6, 0xf3, 0x00, 0xf2, 0x59, 0xf5, + 0x67, 0xfa, 0x25, 0x01, 0x2a, 0x00, 0xa8, 0xfa, 0xe3, 0xf1, 0x1c, 0xee, 0x9a, 0xee, 0xaa, 0xf4, + 0x91, 0xf8, 0xd5, 0xf6, 0x6f, 0xf1, 0x54, 0xe7, 0xaf, 0xea, 0x2d, 0xf1, 0xd8, 0xf4, 0xb8, 0xf7, + 0x36, 0xef, 0x4a, 0xeb, 0x64, 0xec, 0x1a, 0xf4, 0x8f, 0xfc, 0xea, 0x00, 0x64, 0x00, 0x32, 0xfa, + 0xf5, 0xfc, 0x1e, 0x05, 0x30, 0x0f, 0xce, 0x11, 0xde, 0x0e, 0xa2, 0x0a, 0xca, 0x06, 0xe1, 0x0d, + 0xc4, 0x16, 0xe0, 0x1e, 0x06, 0x26, 0x33, 0x25, 0x7e, 0x21, 0x4e, 0x1e, 0x8c, 0x1f, 0xf9, 0x1d, + 0xcd, 0x19, 0xb9, 0x14, 0x9f, 0x13, 0x3a, 0x13, 0x20, 0x13, 0xf6, 0x16, 0x49, 0x16, 0xb9, 0x17, + 0x4a, 0x1b, 0xc5, 0x1b, 0x54, 0x1b, 0x7d, 0x16, 0x18, 0x10, 0x06, 0x09, 0xeb, 0x05, 0x12, 0x07, + 0x06, 0x09, 0xb1, 0x06, 0xdb, 0x02, 0x4a, 0x01, 0xcf, 0x01, 0x1c, 0x09, 0x1e, 0x0f, 0x13, 0x11, + 0x71, 0x12, 0x7e, 0x0e, 0x68, 0x0f, 0x17, 0x15, 0xbf, 0x17, 0xdc, 0x1b, 0x10, 0x1d, 0x16, 0x1c, + 0xdf, 0x16, 0x11, 0x0e, 0xe1, 0x0b, 0x85, 0x0f, 0xd9, 0x11, 0x4f, 0x11, 0xa3, 0x0a, 0xee, 0xfe, + 0xa0, 0xf7, 0xd6, 0xf6, 0x04, 0xf9, 0xb4, 0xfd, 0xae, 0xf9, 0x84, 0xef, 0xe7, 0xe3, 0x56, 0xda, + 0x8a, 0xdc, 0x6b, 0xdb, 0xec, 0xd8, 0x1d, 0xd4, 0x00, 0xd0, 0x29, 0xd1, 0xba, 0xd4, 0xf8, 0xd8, + 0xd9, 0xdd, 0x16, 0xe0, 0x19, 0xde, 0x88, 0xdd, 0x78, 0xe0, 0x06, 0xe7, 0x55, 0xef, 0x95, 0xf4, + 0x07, 0xfa, 0xde, 0xfd, 0x74, 0x03, 0x9f, 0x0c, 0x0d, 0x13, 0xf1, 0x16, 0xfe, 0x17, 0xcb, 0x14, + 0x65, 0x11, 0x0b, 0x12, 0xfb, 0x12, 0x62, 0x16, 0x54, 0x1b, 0x81, 0x1b, 0x33, 0x1a, 0xd3, 0x17, + 0xa1, 0x13, 0xc8, 0x12, 0xae, 0x11, 0xaf, 0x10, 0xb7, 0x0e, 0xa5, 0x07, 0xc3, 0xff, 0x2b, 0xf9, + 0x98, 0xf2, 0x0b, 0xf2, 0x5d, 0xf1, 0x97, 0xf0, 0xcf, 0xef, 0x54, 0xeb, 0x2e, 0xe7, 0x0a, 0xe7, + 0xfd, 0xe9, 0x63, 0xed, 0x6e, 0xef, 0xcc, 0xef, 0x31, 0xf0, 0xe4, 0xf0, 0xae, 0xf3, 0xcc, 0xf8, + 0x8c, 0xfe, 0x7b, 0xff, 0x29, 0x04, 0x20, 0x01, 0x61, 0xf9, 0xbe, 0xf8, 0xdf, 0xf8, 0xac, 0xfd, + 0x9b, 0xff, 0xd3, 0xfc, 0x57, 0xf6, 0x57, 0xf0, 0x2c, 0xee, 0x8b, 0xef, 0x3e, 0xf3, 0x41, 0xf2, + 0x9b, 0xee, 0x28, 0xe6, 0xc2, 0xe2, 0xc0, 0xe7, 0xe2, 0xea, 0x14, 0xed, 0x7b, 0xe6, 0x4b, 0xe0, + 0x5a, 0xdf, 0x72, 0xe3, 0xb5, 0xea, 0x4f, 0xeb, 0x30, 0xeb, 0x71, 0xec, 0xa3, 0xee, 0x2e, 0xf4, + 0x06, 0xfe, 0x44, 0x07, 0x34, 0x0b, 0x4a, 0x11, 0x97, 0x11, 0x97, 0x13, 0xfc, 0x19, 0xd1, 0x1b, + 0xa6, 0x21, 0x96, 0x1e, 0x8e, 0x1a, 0xa4, 0x19, 0x36, 0x19, 0x4e, 0x1d, 0x57, 0x20, 0xff, 0x23, + 0x3f, 0x26, 0x3a, 0x26, 0x4a, 0x22, 0xc8, 0x21, 0x66, 0x20, 0x93, 0x1e, 0x68, 0x1d, 0x67, 0x17, + 0x2d, 0x14, 0xa1, 0x0d, 0xfc, 0x05, 0x3a, 0x04, 0x7e, 0x03, 0x44, 0x05, 0x37, 0x06, 0x5a, 0x03, + 0xef, 0xff, 0x9b, 0x00, 0x2c, 0x00, 0xc1, 0x00, 0xb2, 0x02, 0x83, 0x00, 0x78, 0x00, 0xf1, 0xff, + 0x8d, 0x00, 0x3d, 0x04, 0x5d, 0x07, 0x3d, 0x0a, 0x73, 0x09, 0x71, 0x0c, 0x9f, 0x07, 0x26, 0x03, + 0xf3, 0xfe, 0xe0, 0xff, 0x65, 0x04, 0x96, 0x03, 0x7f, 0x02, 0x3d, 0xfc, 0xa1, 0xf8, 0x15, 0xf6, + 0x20, 0xf3, 0x09, 0xf5, 0xec, 0xf1, 0x39, 0xef, 0x6a, 0xe9, 0x59, 0xe6, 0xef, 0xe7, 0x3d, 0xe9, + 0xc3, 0xea, 0xf5, 0xe8, 0xee, 0xe9, 0xcc, 0xe9, 0x75, 0xed, 0x7a, 0xf0, 0xed, 0xf1, 0xda, 0xf4, + 0x4b, 0xf4, 0xe1, 0xf7, 0xba, 0xff, 0xb1, 0x09, 0xd5, 0x0f, 0x2e, 0x12, 0x11, 0x13, 0x5e, 0x12, + 0xf8, 0x13, 0xf2, 0x15, 0xda, 0x19, 0xad, 0x1c, 0xb7, 0x1c, 0x54, 0x1a, 0xfe, 0x14, 0xbf, 0x14, + 0x4d, 0x16, 0x38, 0x18, 0xde, 0x1b, 0x33, 0x1b, 0x7c, 0x15, 0x11, 0x0c, 0xc8, 0x04, 0x69, 0x01, + 0xda, 0x00, 0xef, 0xfe, 0x51, 0xfb, 0x57, 0xf5, 0x30, 0xf1, 0x7a, 0xef, 0x8a, 0xed, 0x01, 0xef, + 0xad, 0xf0, 0xd5, 0xef, 0x8b, 0xea, 0x2f, 0xe4, 0xe4, 0xdf, 0x88, 0xdf, 0x9c, 0xe2, 0x83, 0xe6, + 0xf1, 0xe9, 0x06, 0xec, 0xf0, 0xed, 0x63, 0xf2, 0x6c, 0xf7, 0x90, 0xfa, 0xe2, 0xfe, 0x55, 0xfd, + 0x37, 0x01, 0xa9, 0xff, 0xe0, 0xf7, 0xaf, 0xf8, 0xce, 0xfa, 0xb2, 0x00, 0x79, 0x04, 0xb3, 0x05, + 0xb7, 0x02, 0xff, 0xfb, 0x07, 0xf7, 0xa1, 0xf6, 0x97, 0xf9, 0x1d, 0xf9, 0x95, 0xf6, 0x20, 0xee, + 0x67, 0xeb, 0xe7, 0xed, 0xcd, 0xeb, 0x6c, 0xea, 0x9e, 0xe3, 0x04, 0xdf, 0x89, 0xde, 0x3e, 0xe0, + 0x76, 0xe5, 0x43, 0xe9, 0xb5, 0xee, 0xee, 0xf0, 0x2a, 0xf3, 0x82, 0xf7, 0x50, 0xfe, 0x22, 0x04, + 0xeb, 0x02, 0x7b, 0x03, 0xe3, 0x00, 0x4e, 0xff, 0x40, 0x05, 0x94, 0x0d, 0x96, 0x18, 0x38, 0x1b, + 0x92, 0x1c, 0xa6, 0x1b, 0x89, 0x1d, 0xa0, 0x22, 0xf2, 0x25, 0x85, 0x26, 0x7f, 0x22, 0x25, 0x1f, + 0xa5, 0x15, 0x18, 0x12, 0x0d, 0x10, 0x3a, 0x0d, 0xd6, 0x0f, 0x31, 0x0f, 0xf7, 0x0e, 0x28, 0x0c, + 0xb9, 0x09, 0x27, 0x08, 0xf0, 0x07, 0x0b, 0x08, 0x67, 0x08, 0x6a, 0x07, 0x16, 0x02, 0x65, 0x00, + 0x69, 0x00, 0xfa, 0xff, 0xc7, 0x02, 0xc1, 0x04, 0xe7, 0x06, 0x7d, 0x06, 0xde, 0x06, 0xdb, 0x07, + 0xee, 0x08, 0x91, 0x0b, 0xb7, 0x0e, 0x17, 0x12, 0x93, 0x0b, 0x61, 0x07, 0x18, 0x03, 0x85, 0x04, + 0x2e, 0x09, 0x62, 0x08, 0xb8, 0x06, 0xc5, 0xfd, 0x6a, 0xf8, 0xff, 0xf4, 0xf1, 0xf2, 0x6f, 0xf3, + 0x88, 0xf1, 0x75, 0xef, 0x54, 0xe9, 0x7a, 0xe7, 0xec, 0xe5, 0x1d, 0xe6, 0x5e, 0xe5, 0x5b, 0xe0, + 0x95, 0xdf, 0x1a, 0xe1, 0xa9, 0xe8, 0xc2, 0xf0, 0xec, 0xf4, 0x1e, 0xf9, 0x8e, 0xfa, 0x99, 0xfc, + 0xef, 0xff, 0xb6, 0x06, 0x17, 0x0a, 0x24, 0x0c, 0xff, 0x0c, 0xca, 0x0d, 0xb0, 0x11, 0x51, 0x16, + 0xf6, 0x1e, 0xcd, 0x24, 0xda, 0x25, 0xc0, 0x27, 0x1f, 0x22, 0x01, 0x1f, 0xad, 0x1f, 0x89, 0x1f, + 0x94, 0x1f, 0xb2, 0x1b, 0x24, 0x15, 0x33, 0x0c, 0xa9, 0x05, 0xfd, 0x04, 0xb0, 0x05, 0xdd, 0x02, + 0xfc, 0xfe, 0x03, 0xfa, 0x62, 0xf3, 0x5e, 0xf0, 0x89, 0xee, 0xdc, 0xec, 0xc8, 0xea, 0xe6, 0xe7, + 0xf2, 0xe2, 0x29, 0xdf, 0x67, 0xdf, 0x07, 0xe1, 0x70, 0xe3, 0x15, 0xe5, 0xea, 0xe6, 0x8a, 0xe8, + 0xb7, 0xe9, 0xce, 0xea, 0x87, 0xeb, 0x77, 0xed, 0xe0, 0xf0, 0x1c, 0xf1, 0x55, 0xfb, 0xe3, 0xfe, + 0x56, 0xfa, 0xfa, 0xf9, 0xbd, 0xf5, 0x28, 0xfa, 0x3c, 0x02, 0xac, 0x06, 0x92, 0x04, 0xc8, 0xfc, + 0x43, 0xf5, 0xf6, 0xf0, 0xcb, 0xf0, 0xc1, 0xef, 0x10, 0xf3, 0xcd, 0xeb, 0x45, 0xe4, 0x34, 0xe4, + 0xfa, 0xe0, 0x07, 0xe6, 0xa9, 0xe7, 0x16, 0xea, 0x66, 0xeb, 0x65, 0xee, 0x2c, 0xf5, 0xbc, 0xf8, + 0xe7, 0xfc, 0x80, 0xfd, 0x63, 0xfd, 0x09, 0xfd, 0x59, 0x03, 0xb4, 0x09, 0xcb, 0x0a, 0xb2, 0x10, + 0xc6, 0x0f, 0x9b, 0x0f, 0xed, 0x15, 0xb6, 0x1f, 0xc1, 0x2b, 0x2a, 0x31, 0x48, 0x2f, 0x6f, 0x28, + 0xae, 0x22, 0xa2, 0x20, 0x35, 0x22, 0xd1, 0x21, 0x5e, 0x20, 0x7e, 0x1e, 0x76, 0x15, 0x57, 0x0f, + 0x81, 0x0f, 0xf6, 0x12, 0xd0, 0x14, 0x17, 0x10, 0x15, 0x0b, 0x34, 0x05, 0x0f, 0x00, 0xea, 0xff, + 0xe0, 0xfc, 0xde, 0xfa, 0xb2, 0xfa, 0x69, 0xf7, 0x11, 0xf6, 0xe7, 0xf6, 0x9f, 0xf5, 0x7f, 0xf4, + 0x09, 0xf5, 0xab, 0xf4, 0xb9, 0xf6, 0x38, 0xf7, 0x61, 0xf7, 0xfe, 0xf7, 0xb1, 0xfa, 0x95, 0xfc, + 0x21, 0x02, 0x86, 0x09, 0x9c, 0x05, 0xc8, 0x02, 0xf9, 0xfe, 0x3c, 0xff, 0x98, 0x02, 0x11, 0x05, + 0x8d, 0x08, 0xa0, 0x06, 0x9c, 0x02, 0xb1, 0xfe, 0x18, 0xfd, 0xc2, 0xfc, 0x31, 0xfe, 0xd2, 0xfb, + 0x47, 0xf3, 0x0c, 0xf0, 0xa3, 0xee, 0x5c, 0xf0, 0x07, 0xf0, 0xfd, 0xef, 0xaa, 0xf5, 0x87, 0xf8, + 0x46, 0xfd, 0xd8, 0xff, 0xf4, 0xfe, 0x86, 0xfe, 0xe4, 0xfb, 0x5f, 0xfa, 0x8b, 0xfe, 0x77, 0x08, + 0x67, 0x0b, 0xba, 0x0e, 0x13, 0x12, 0x2d, 0x12, 0xe7, 0x12, 0xb6, 0x12, 0xb3, 0x18, 0x0b, 0x1e, + 0x1a, 0x1f, 0x5e, 0x1e, 0xe2, 0x15, 0x87, 0x0f, 0x32, 0x10, 0xf6, 0x12, 0x42, 0x14, 0x04, 0x15, + 0xe1, 0x10, 0xf1, 0x0a, 0xc8, 0x04, 0x89, 0x01, 0xa9, 0x04, 0x8a, 0x01, 0x2c, 0xfe, 0x87, 0xfa, + 0x73, 0xf2, 0xde, 0xed, 0x89, 0xed, 0x64, 0xed, 0xe7, 0xf0, 0xb2, 0xf2, 0x13, 0xf1, 0x72, 0xf1, + 0xca, 0xee, 0xc3, 0xed, 0xc8, 0xef, 0x18, 0xf0, 0x79, 0xf2, 0x89, 0xf4, 0xe1, 0xf5, 0xb5, 0xfa, + 0x86, 0xfc, 0x87, 0xff, 0xdb, 0x00, 0x45, 0x04, 0x51, 0x06, 0xdf, 0x01, 0xb6, 0xfc, 0x17, 0xfc, + 0xfb, 0xff, 0x56, 0x02, 0x61, 0x03, 0xb3, 0xfe, 0xdc, 0xf6, 0xfc, 0xef, 0x30, 0xe7, 0x32, 0xe5, + 0xb3, 0xdf, 0x21, 0xdf, 0xeb, 0xda, 0xff, 0xd5, 0xb0, 0xd7, 0x66, 0xd6, 0xde, 0xd7, 0xeb, 0xd5, + 0x9a, 0xd4, 0x5d, 0xd4, 0x63, 0xd7, 0xe5, 0xdc, 0xd1, 0xde, 0x0c, 0xe3, 0xbd, 0xe4, 0xc2, 0xe5, + 0x20, 0xea, 0x88, 0xf1, 0x63, 0xfd, 0x44, 0x07, 0x58, 0x0d, 0x93, 0x0f, 0x13, 0x0f, 0x9d, 0x0f, + 0x6b, 0x16, 0xd8, 0x1f, 0xa4, 0x24, 0x9d, 0x25, 0xe1, 0x21, 0x2c, 0x1f, 0x91, 0x1e, 0x37, 0x1f, + 0x32, 0x23, 0x03, 0x25, 0xb6, 0x24, 0xad, 0x1f, 0xd8, 0x18, 0xa9, 0x16, 0x23, 0x19, 0xae, 0x1b, + 0x0a, 0x1a, 0x9d, 0x13, 0x73, 0x0c, 0xf2, 0x07, 0xcb, 0x02, 0xc2, 0x00, 0x33, 0x02, 0x62, 0x00, + 0xa1, 0xfe, 0x2e, 0xfd, 0x9d, 0xfd, 0x5b, 0xfd, 0x18, 0xfd, 0x5c, 0xfc, 0xda, 0xfa, 0xdf, 0xfd, + 0xd1, 0xff, 0x6a, 0x04, 0xc5, 0x04, 0x08, 0x08, 0xcd, 0x0c, 0x29, 0x0e, 0x63, 0x10, 0xc5, 0x0b, + 0x95, 0x09, 0xde, 0x05, 0xa8, 0x04, 0x43, 0x08, 0x11, 0x0c, 0x9e, 0x0e, 0x9c, 0x0a, 0x13, 0x07, + 0xdb, 0xfe, 0xfd, 0xfc, 0x6a, 0xfc, 0x73, 0xf9, 0xaa, 0xf8, 0x14, 0xf2, 0x25, 0xf1, 0x86, 0xf0, + 0xb6, 0xf0, 0x1f, 0xf0, 0xb9, 0xeb, 0x33, 0xe8, 0xc4, 0xe7, 0xd1, 0xec, 0x96, 0xf1, 0x59, 0xf8, + 0xb2, 0xfa, 0xfd, 0xf8, 0xfb, 0xf9, 0x83, 0xfe, 0x4a, 0x07, 0x0f, 0x0e, 0x5b, 0x12, 0x50, 0x14, + 0xee, 0x13, 0x25, 0x14, 0xad, 0x15, 0x4a, 0x19, 0x73, 0x1f, 0xa5, 0x24, 0x87, 0x22, 0x5e, 0x1d, + 0xb3, 0x17, 0x01, 0x14, 0xdc, 0x16, 0xf8, 0x18, 0xdf, 0x19, 0xc3, 0x16, 0x46, 0x0d, 0xd8, 0x05, + 0x5e, 0xff, 0x73, 0xfc, 0x96, 0xfd, 0xfc, 0xfa, 0x19, 0xf7, 0x22, 0xf4, 0x77, 0xf1, 0xc9, 0xed, + 0x5c, 0xec, 0xf9, 0xeb, 0x2f, 0xed, 0xea, 0xe9, 0x15, 0xe5, 0x91, 0xe5, 0xe7, 0xe4, 0x1c, 0xe8, + 0x2f, 0xed, 0x6d, 0xf0, 0xbb, 0xf3, 0x9b, 0xf7, 0x52, 0xfd, 0x83, 0x00, 0xd3, 0x02, 0x68, 0x07, + 0xa9, 0x08, 0xaf, 0x0d, 0xf4, 0x0a, 0x6e, 0x06, 0x84, 0x01, 0x11, 0xff, 0x22, 0x03, 0xae, 0x03, + 0x66, 0x05, 0x8e, 0x01, 0x73, 0xfc, 0x9d, 0xf5, 0x3d, 0xee, 0x9e, 0xee, 0xdc, 0xed, 0x34, 0xf0, + 0x01, 0xec, 0x30, 0xe8, 0x6b, 0xe6, 0xf6, 0xe3, 0x5f, 0xe3, 0x57, 0xdf, 0xaf, 0xde, 0xcb, 0xdc, + 0x39, 0xdd, 0x63, 0xdf, 0x76, 0xe2, 0x77, 0xe9, 0x6e, 0xee, 0x79, 0xf2, 0x63, 0xf4, 0x6e, 0xfa, + 0xe9, 0x01, 0x01, 0x07, 0xb4, 0x0a, 0x6d, 0x08, 0xf7, 0x06, 0x1d, 0x05, 0xc1, 0x06, 0xd9, 0x0f, + 0xc3, 0x15, 0xa3, 0x19, 0xdc, 0x15, 0x8e, 0x10, 0xa8, 0x0d, 0x8f, 0x0c, 0x99, 0x10, 0xd3, 0x12, + 0x64, 0x11, 0x77, 0x0c, 0x24, 0x05, 0x74, 0xff, 0x77, 0xff, 0x47, 0x01, 0xfd, 0x00, 0x0f, 0xff, + 0x41, 0xf9, 0xd0, 0xf5, 0xaf, 0xf4, 0x99, 0xf1, 0xaa, 0xf0, 0xf7, 0xee, 0x7b, 0xec, 0xa1, 0xec, + 0xfd, 0xee, 0xdf, 0xf0, 0x4f, 0xf5, 0x6c, 0xfa, 0x71, 0xfe, 0x88, 0x01, 0x59, 0x02, 0xf0, 0x08, + 0x25, 0x0c, 0xa9, 0x0f, 0x06, 0x15, 0x33, 0x17, 0xeb, 0x1d, 0x8c, 0x19, 0xaf, 0x18, 0xf8, 0x14, + 0x4e, 0x15, 0x38, 0x19, 0xcc, 0x1b, 0x22, 0x1a, 0xe5, 0x11, 0x28, 0x0e, 0xa4, 0x07, 0xf0, 0x07, + 0xda, 0x08, 0xa4, 0x08, 0xb7, 0x06, 0xf5, 0xfa, 0xe2, 0xf8, 0x5b, 0xf3, 0xfc, 0xf1, 0x24, 0xf1, + 0x77, 0xee, 0x5b, 0xee, 0x3d, 0xee, 0x2f, 0xf3, 0x88, 0xf7, 0x17, 0xfc, 0xf5, 0xfd, 0x96, 0xfd, + 0xfe, 0xfd, 0xe6, 0xff, 0xaa, 0x08, 0x3f, 0x0e, 0x39, 0x13, 0xf0, 0x14, 0xd1, 0x13, 0xc1, 0x12, + 0xfa, 0x12, 0x26, 0x18, 0x0d, 0x1f, 0xeb, 0x22, 0x77, 0x21, 0x49, 0x1b, 0x5a, 0x15, 0x8f, 0x12, + 0x0b, 0x13, 0xf2, 0x12, 0x83, 0x0f, 0xf1, 0x0a, 0x51, 0x04, 0xf9, 0xff, 0xb7, 0xff, 0x5b, 0x00, + 0x2f, 0xff, 0xc4, 0xfb, 0xd1, 0xf8, 0x8e, 0xf5, 0x73, 0xf2, 0x8f, 0xef, 0x0c, 0xed, 0xef, 0xec, + 0x73, 0xed, 0x44, 0xee, 0x62, 0xef, 0x5c, 0xf1, 0x3e, 0xf4, 0x17, 0xf4, 0x38, 0xf5, 0x7f, 0xfb, + 0x20, 0x01, 0xf2, 0x07, 0xf0, 0x0d, 0x81, 0x0d, 0x42, 0x0e, 0x80, 0x0e, 0xf8, 0x0e, 0x1b, 0x0f, + 0x84, 0x07, 0x04, 0x05, 0xd1, 0x00, 0x1a, 0xfe, 0x78, 0xff, 0x92, 0xff, 0x33, 0xfe, 0x49, 0xf9, + 0x0e, 0xf4, 0x4d, 0xec, 0x54, 0xe7, 0x6f, 0xe3, 0xec, 0xe2, 0x95, 0xe0, 0x12, 0xdb, 0xec, 0xdb, + 0xb1, 0xd7, 0x0a, 0xd4, 0xfd, 0xd1, 0x31, 0xd2, 0x12, 0xd6, 0xa9, 0xda, 0x8f, 0xe1, 0x19, 0xe7, + 0x0d, 0xec, 0x2f, 0xef, 0xf1, 0xf1, 0x99, 0xf4, 0x9e, 0xfa, 0x0e, 0x05, 0xa2, 0x09, 0x10, 0x11, + 0xdc, 0x14, 0xe2, 0x13, 0x24, 0x17, 0xfc, 0x16, 0x79, 0x1d, 0x99, 0x24, 0x78, 0x28, 0x5c, 0x2b, + 0x5f, 0x28, 0xcb, 0x23, 0xc7, 0x1f, 0xcb, 0x1a, 0x8d, 0x16, 0x3d, 0x16, 0xbb, 0x0f, 0xdd, 0x07, + 0x06, 0x03, 0x3e, 0xfe, 0x0c, 0xfe, 0xf1, 0xfa, 0xd7, 0xf6, 0x2c, 0xf2, 0x25, 0xec, 0x1e, 0xe9, + 0x3a, 0xe4, 0x74, 0xe0, 0xfe, 0xdf, 0xed, 0xe1, 0x48, 0xe3, 0xb9, 0xe6, 0x0f, 0xe9, 0x61, 0xea, + 0xa6, 0xef, 0x0d, 0xf1, 0xd4, 0xf4, 0xe5, 0xf8, 0x8f, 0xfb, 0xea, 0x03, 0x04, 0x09, 0x0e, 0x0d, + 0x04, 0x12, 0xd3, 0x15, 0xb6, 0x18, 0xf2, 0x13, 0x22, 0x11, 0xe6, 0x0f, 0x1a, 0x11, 0xaf, 0x13, + 0x11, 0x15, 0x1f, 0x14, 0xc8, 0x0d, 0x77, 0x09, 0xfb, 0x01, 0x70, 0xfe, 0xe9, 0xfd, 0xb3, 0xfd, + 0x40, 0xfb, 0xa9, 0xf2, 0xf7, 0xf0, 0x76, 0xf0, 0x18, 0xef, 0x55, 0xee, 0x3c, 0xed, 0x3c, 0xed, + 0x72, 0xef, 0x6b, 0xf5, 0x4b, 0xf9, 0xdf, 0xfc, 0x5c, 0xff, 0x5e, 0xff, 0x3e, 0x00, 0x24, 0x02, + 0x58, 0x08, 0x34, 0x0d, 0x2e, 0x10, 0x8d, 0x12, 0x11, 0x13, 0xe9, 0x14, 0x6e, 0x17, 0x19, 0x1e, + 0x0f, 0x23, 0xb2, 0x24, 0x95, 0x1f, 0xdb, 0x16, 0xf2, 0x12, 0xf5, 0x0f, 0x26, 0x12, 0xe9, 0x10, + 0x39, 0x0e, 0xae, 0x09, 0xd6, 0x03, 0x4b, 0x01, 0xd4, 0xfe, 0x5f, 0xfc, 0xf8, 0xf6, 0x57, 0xf3, + 0x37, 0xef, 0xf1, 0xec, 0xc9, 0xee, 0x3b, 0xef, 0xb1, 0xf0, 0xe9, 0xee, 0x0d, 0xef, 0xc5, 0xf2, + 0x53, 0xf6, 0x6f, 0xf9, 0x69, 0xfb, 0xf0, 0xfd, 0x38, 0xff, 0x2b, 0x03, 0x91, 0x07, 0x7d, 0x0d, + 0xd9, 0x12, 0x08, 0x16, 0x44, 0x1b, 0x7e, 0x1a, 0x87, 0x1d, 0xf2, 0x19, 0x58, 0x14, 0xa9, 0x12, + 0x02, 0x11, 0x38, 0x13, 0xe3, 0x13, 0x19, 0x13, 0xa6, 0x0f, 0x59, 0x09, 0x9e, 0x02, 0xe7, 0xfc, + 0x95, 0xf7, 0xa7, 0xf0, 0xef, 0xec, 0x66, 0xe4, 0x97, 0xe0, 0xc5, 0xdf, 0x6d, 0xdf, 0xa6, 0xdf, + 0x1d, 0xdc, 0xf6, 0xdb, 0x16, 0xda, 0x81, 0xdb, 0xeb, 0xe1, 0x4d, 0xe9, 0x67, 0xef, 0x7a, 0xf0, + 0xb1, 0xf1, 0x83, 0xf0, 0xab, 0xf5, 0xef, 0xfe, 0x2d, 0x03, 0x95, 0x09, 0x05, 0x0a, 0xe4, 0x0a, + 0x82, 0x0d, 0x16, 0x13, 0xb0, 0x1a, 0xc8, 0x20, 0x77, 0x20, 0x75, 0x1b, 0xd4, 0x13, 0x43, 0x0a, + 0x03, 0x07, 0x6a, 0x04, 0x0a, 0x05, 0x32, 0x03, 0x55, 0xfa, 0x74, 0xf4, 0x61, 0xef, 0xbc, 0xec, + 0x5d, 0xec, 0x2a, 0xe8, 0xc9, 0xe5, 0x59, 0xe4, 0xfe, 0xe3, 0x4f, 0xe3, 0x98, 0xe5, 0x36, 0xe7, + 0x20, 0xeb, 0x95, 0xea, 0xa9, 0xe9, 0xc5, 0xec, 0x29, 0xf2, 0xa3, 0xf9, 0x7a, 0x00, 0xda, 0x03, + 0xec, 0x06, 0xdc, 0x09, 0x93, 0x0e, 0x5a, 0x12, 0x67, 0x18, 0x86, 0x1c, 0x9c, 0x23, 0x77, 0x1e, + 0xdc, 0x19, 0xa0, 0x16, 0x00, 0x14, 0xfc, 0x17, 0x02, 0x17, 0x31, 0x16, 0x18, 0x12, 0xf9, 0x0c, + 0xe0, 0x04, 0x7c, 0xfd, 0xc1, 0xf6, 0xc6, 0xf4, 0x29, 0xf4, 0x7d, 0xee, 0x2b, 0xec, 0xef, 0xe9, + 0xb2, 0xe4, 0xf1, 0xe3, 0x2c, 0xde, 0xee, 0xdd, 0x4b, 0xdf, 0x95, 0xe3, 0xff, 0xea, 0xf9, 0xf1, + 0x4e, 0xf8, 0xfc, 0xf9, 0x16, 0xfa, 0xa8, 0xfa, 0x7b, 0x01, 0x41, 0x08, 0xb8, 0x11, 0x1b, 0x19, + 0x32, 0x1a, 0x36, 0x1a, 0x73, 0x18, 0xda, 0x18, 0x2b, 0x1e, 0xa4, 0x23, 0xc3, 0x28, 0x3c, 0x27, + 0x5a, 0x22, 0x07, 0x1e, 0x7a, 0x1b, 0x94, 0x1a, 0xb7, 0x1b, 0xa3, 0x1a, 0xd7, 0x14, 0xf2, 0x0d, + 0x91, 0x05, 0x2e, 0x02, 0xcf, 0xff, 0x60, 0xfd, 0xb9, 0xf9, 0xf8, 0xf2, 0xe2, 0xee, 0x97, 0xee, + 0x1b, 0xf1, 0xc9, 0xf3, 0x1b, 0xf3, 0xb8, 0xf2, 0x7e, 0xf2, 0x6f, 0xf4, 0x84, 0xf5, 0xfc, 0xf8, + 0xbe, 0xfb, 0x80, 0xfd, 0xb6, 0xff, 0xcf, 0x00, 0xb7, 0x03, 0x75, 0x05, 0xad, 0x08, 0x56, 0x0c, + 0x9d, 0x0e, 0x73, 0x12, 0x00, 0x0c, 0x14, 0x07, 0xc2, 0x00, 0x29, 0xff, 0x40, 0x03, 0x83, 0x05, + 0x9e, 0x07, 0x47, 0x02, 0xeb, 0xfb, 0x5a, 0xf2, 0x8a, 0xe9, 0x71, 0xe4, 0xdf, 0xe1, 0x13, 0xe2, + 0xfb, 0xdd, 0x24, 0xde, 0x3d, 0xda, 0x95, 0xd7, 0xa9, 0xd7, 0x9f, 0xd6, 0x92, 0xdb, 0xe8, 0xdf, + 0x6a, 0xe6, 0x1b, 0xec, 0xf6, 0xf0, 0xe7, 0xf7, 0x1f, 0xfb, 0xe7, 0xfc, 0x21, 0xfe, 0xa4, 0x05, + 0x60, 0x0d, 0xd8, 0x17, 0x61, 0x21, 0x90, 0x24, 0x4c, 0x27, 0xa1, 0x24, 0xb4, 0x24, 0x1d, 0x25, + 0x6f, 0x26, 0xdf, 0x2a, 0x28, 0x29, 0xce, 0x25, 0x9c, 0x20, 0x8c, 0x18, 0xd5, 0x12, 0x26, 0x0e, + 0x8f, 0x09, 0x7c, 0x02, 0xf1, 0xfb, 0xf1, 0xf5, 0x89, 0xf3, 0xef, 0xef, 0xc9, 0xeb, 0x1f, 0xea, + 0xf6, 0xe5, 0x39, 0xe4, 0x3a, 0xe2, 0xa7, 0xe0, 0x47, 0xe0, 0x55, 0xdf, 0xdb, 0xde, 0xc0, 0xe0, + 0xec, 0xe5, 0x46, 0xec, 0x62, 0xf3, 0x77, 0xf8, 0x83, 0xfd, 0x23, 0x02, 0x9b, 0x04, 0xe4, 0x09, + 0x73, 0x0a, 0x7f, 0x0c, 0x39, 0x10, 0xd5, 0x13, 0x81, 0x18, 0x9d, 0x14, 0x8a, 0x11, 0x5d, 0x0d, + 0xa2, 0x0d, 0xaf, 0x0f, 0x42, 0x14, 0xe4, 0x14, 0x7b, 0x11, 0x25, 0x0c, 0x62, 0x00, 0xbf, 0xf9, + 0x1b, 0xf3, 0xdc, 0xee, 0xec, 0xeb, 0x22, 0xe7, 0x0f, 0xe8, 0xb9, 0xe4, 0xf2, 0xe2, 0xe0, 0xdf, + 0xdf, 0xdc, 0x73, 0xdd, 0x89, 0xdf, 0xea, 0xe4, 0xe1, 0xe9, 0x5a, 0xf1, 0xbe, 0xf5, 0x8f, 0xf7, + 0x00, 0xf8, 0x4e, 0xf8, 0x0c, 0x01, 0x81, 0x08, 0x29, 0x11, 0x45, 0x18, 0x5a, 0x18, 0x23, 0x17, + 0x4c, 0x15, 0x33, 0x18, 0x51, 0x1c, 0x49, 0x20, 0x11, 0x22, 0x8e, 0x21, 0xec, 0x1f, 0x16, 0x1a, + 0xfe, 0x15, 0x4f, 0x10, 0xab, 0x0f, 0xed, 0x0e, 0x8d, 0x0c, 0x04, 0x0a, 0xa6, 0x06, 0x19, 0x05, + 0x40, 0x03, 0x58, 0x00, 0x77, 0xfd, 0x6c, 0xf9, 0xae, 0xf6, 0x1e, 0xf8, 0x77, 0xfb, 0x09, 0xfe, + 0xcf, 0xff, 0x47, 0xff, 0x51, 0xff, 0x84, 0x01, 0xf8, 0x05, 0x4d, 0x0a, 0x05, 0x0d, 0x73, 0x0f, + 0x25, 0x10, 0x38, 0x12, 0x6e, 0x14, 0x91, 0x13, 0x57, 0x16, 0x98, 0x16, 0x31, 0x1d, 0x95, 0x1f, + 0x81, 0x18, 0x29, 0x13, 0xb6, 0x09, 0x8c, 0x06, 0x04, 0x06, 0x8c, 0x05, 0xc7, 0x04, 0x35, 0x00, + 0xd3, 0xfa, 0x2d, 0xf1, 0xe3, 0xe8, 0x20, 0xe1, 0xf8, 0xdf, 0x32, 0xdb, 0x29, 0xda, 0x87, 0xdd, + 0xdf, 0xdb, 0x81, 0xdb, 0x24, 0xd7, 0xe1, 0xd3, 0x96, 0xd3, 0x3d, 0xd5, 0x3a, 0xdc, 0xc4, 0xe2, + 0x9a, 0xe9, 0x4c, 0xef, 0xd4, 0xf4, 0x79, 0xf7, 0x19, 0xfd, 0x19, 0x05, 0x3a, 0x0b, 0x37, 0x13, + 0x42, 0x16, 0xd0, 0x16, 0x21, 0x17, 0xf3, 0x14, 0xe7, 0x16, 0xa2, 0x16, 0xda, 0x15, 0x30, 0x15, + 0x5d, 0x12, 0x97, 0x0e, 0x91, 0x0b, 0x83, 0x08, 0x5c, 0x04, 0x15, 0xff, 0x2e, 0xf8, 0x57, 0xf6, + 0x10, 0xf5, 0x5d, 0xf4, 0xc9, 0xf5, 0xaa, 0xf2, 0x44, 0xef, 0x07, 0xeb, 0x2c, 0xe7, 0x45, 0xe7, + 0x98, 0xe9, 0x9f, 0xed, 0xae, 0xf0, 0x81, 0xf2, 0xac, 0xf4, 0x76, 0xf8, 0xef, 0xfa, 0xe5, 0xfe, + 0xe9, 0x04, 0x38, 0x08, 0xf1, 0x0b, 0xbd, 0x0d, 0xdf, 0x0c, 0x22, 0x10, 0x35, 0x12, 0xd9, 0x16, + 0xaf, 0x19, 0x0d, 0x1e, 0x98, 0x1b, 0x80, 0x16, 0xf8, 0x11, 0x34, 0x0b, 0x44, 0x09, 0xc0, 0x06, + 0xdf, 0x06, 0x40, 0x02, 0x59, 0xfc, 0xb8, 0xf7, 0x8b, 0xef, 0x42, 0xea, 0xa9, 0xe3, 0xf4, 0xe1, + 0xa6, 0xde, 0xad, 0xe0, 0x36, 0xe4, 0x4e, 0xe2, 0xbf, 0xdf, 0x58, 0xda, 0x36, 0xd8, 0x6d, 0xd7, + 0x5b, 0xdc, 0x2e, 0xe6, 0x6f, 0xee, 0x4f, 0xf9, 0xff, 0xff, 0xfd, 0x02, 0x89, 0x02, 0xd7, 0x05, + 0xd0, 0x0a, 0xbd, 0x10, 0xeb, 0x18, 0x64, 0x1c, 0xb2, 0x1f, 0x9f, 0x20, 0xb3, 0x23, 0x5d, 0x27, + 0x40, 0x28, 0x09, 0x29, 0x16, 0x26, 0xcb, 0x23, 0x70, 0x1f, 0xc0, 0x1a, 0x38, 0x17, 0xb2, 0x12, + 0xb8, 0x0f, 0xaa, 0x0b, 0x41, 0x08, 0x23, 0x08, 0x3a, 0x08, 0x00, 0x06, 0xb7, 0x02, 0xf3, 0xfd, + 0x43, 0xf8, 0xb2, 0xf6, 0x7f, 0xf8, 0x31, 0xfb, 0x44, 0xfe, 0x71, 0x00, 0x89, 0xff, 0x6f, 0xfd, + 0xf7, 0xfd, 0x32, 0x00, 0x58, 0x03, 0x3e, 0x04, 0x2b, 0x05, 0xa2, 0x06, 0xbc, 0x08, 0x67, 0x0f, + 0x19, 0x13, 0x7c, 0x14, 0x58, 0x15, 0x24, 0x18, 0xf0, 0x18, 0x46, 0x14, 0xcc, 0x0e, 0xf5, 0x07, + 0x87, 0x03, 0x04, 0x00, 0x14, 0xff, 0xde, 0xfc, 0x28, 0xf9, 0x2d, 0xf5, 0x7b, 0xed, 0xa3, 0xe9, + 0xed, 0xe5, 0x30, 0xe4, 0xac, 0xdf, 0x12, 0xdb, 0xeb, 0xda, 0x96, 0xda, 0x00, 0xdd, 0x68, 0xdb, + 0xca, 0xda, 0x6a, 0xda, 0x99, 0xdc, 0xc3, 0xe3, 0x4f, 0xec, 0xcd, 0xf6, 0x5c, 0xfb, 0x45, 0xfe, + 0x68, 0xff, 0x77, 0xff, 0x0b, 0x05, 0x3b, 0x0c, 0x51, 0x14, 0x6b, 0x1b, 0xab, 0x1e, 0xaf, 0x1d, + 0x96, 0x1c, 0x87, 0x1a, 0x40, 0x1c, 0xa4, 0x1d, 0x29, 0x19, 0x00, 0x13, 0xf4, 0x0c, 0x38, 0x08, + 0xf2, 0x05, 0x83, 0x04, 0x51, 0x01, 0x9e, 0xfc, 0x4a, 0xf5, 0x0c, 0xf0, 0xa6, 0xee, 0xc5, 0xec, + 0x2e, 0xee, 0xbc, 0xed, 0x65, 0xeb, 0x5c, 0xea, 0xaf, 0xe9, 0x58, 0xeb, 0xed, 0xec, 0x8f, 0xed, + 0x17, 0xf0, 0xa1, 0xf1, 0x2c, 0xf2, 0xd6, 0xf3, 0x10, 0xf6, 0x00, 0xfb, 0xa6, 0x00, 0xc3, 0x07, + 0xf9, 0x0d, 0x62, 0x10, 0x9b, 0x11, 0xe4, 0x13, 0x71, 0x14, 0x02, 0x17, 0x73, 0x1a, 0xb8, 0x17, + 0xbd, 0x14, 0xe9, 0x0e, 0x67, 0x0b, 0xc6, 0x09, 0x4e, 0x0a, 0xf2, 0x07, 0x26, 0x05, 0xb2, 0xfe, + 0xd8, 0xf7, 0x63, 0xf2, 0x92, 0xec, 0x1d, 0xea, 0x7d, 0xe6, 0xeb, 0xe0, 0xf1, 0xdd, 0x54, 0xd9, + 0xe9, 0xd7, 0xc8, 0xd5, 0xe1, 0xd3, 0x4e, 0xd4, 0x0c, 0xd8, 0x92, 0xde, 0x16, 0xe3, 0x19, 0xeb, + 0x22, 0xf1, 0x25, 0xf4, 0x2a, 0xf5, 0xb2, 0xf6, 0x65, 0xf9, 0xde, 0xfc, 0xeb, 0x03, 0xc7, 0x09, + 0x81, 0x0e, 0x75, 0x12, 0x71, 0x16, 0x52, 0x1a, 0xab, 0x1c, 0xfd, 0x1e, 0xc0, 0x1e, 0x86, 0x1c, + 0xd4, 0x19, 0x4b, 0x18, 0x5c, 0x17, 0xad, 0x15, 0xd7, 0x13, 0x43, 0x10, 0x59, 0x0c, 0xba, 0x09, + 0xa6, 0x0a, 0x24, 0x0d, 0x60, 0x0d, 0xde, 0x0c, 0x57, 0x0b, 0x80, 0x09, 0x2b, 0x07, 0x82, 0x05, + 0xd4, 0x06, 0xb6, 0x0b, 0xdb, 0x0e, 0x56, 0x11, 0x45, 0x11, 0x45, 0x11, 0xac, 0x12, 0x36, 0x14, + 0xc0, 0x15, 0xe3, 0x16, 0x30, 0x18, 0xdd, 0x1a, 0x2f, 0x1e, 0x18, 0x21, 0xbf, 0x24, 0x2e, 0x24, + 0xf6, 0x22, 0xee, 0x1b, 0xcb, 0x12, 0xd2, 0x0c, 0x00, 0x06, 0xd0, 0x03, 0x10, 0x01, 0x5d, 0xfd, + 0x9f, 0xf9, 0x9c, 0xf5, 0x4a, 0xf0, 0xa6, 0xe9, 0x68, 0xe4, 0x4a, 0xdf, 0x99, 0xda, 0xa5, 0xd3, + 0x8d, 0xd1, 0xae, 0xcf, 0xf9, 0xcf, 0x4e, 0xd4, 0x85, 0xd6, 0xf2, 0xd9, 0x7e, 0xdb, 0xe0, 0xdf, + 0x15, 0xe6, 0x7d, 0xeb, 0xf5, 0xf2, 0x53, 0xf8, 0xa4, 0xfb, 0x89, 0xfd, 0xeb, 0x01, 0x59, 0x05, + 0x76, 0x0a, 0xb4, 0x11, 0x99, 0x17, 0xc4, 0x1c, 0xf7, 0x1d, 0xdc, 0x1c, 0x3b, 0x1b, 0xe1, 0x18, + 0xa1, 0x16, 0xf2, 0x12, 0x52, 0x0f, 0x55, 0x0c, 0xef, 0x08, 0x05, 0x07, 0xc1, 0x06, 0xea, 0x03, + 0x68, 0xfe, 0x87, 0xf9, 0x25, 0xf5, 0x3d, 0xf5, 0x38, 0xf7, 0x6d, 0xf8, 0xf2, 0xf6, 0xe0, 0xf3, + 0xa8, 0xf1, 0x33, 0xf0, 0x5c, 0xf1, 0x61, 0xf3, 0xf4, 0xf2, 0xbe, 0xf2, 0x4e, 0xf4, 0xa1, 0xf7, + 0x47, 0xfb, 0xa7, 0xfe, 0xd5, 0x01, 0xc8, 0x03, 0x44, 0x06, 0x54, 0x08, 0x97, 0x0b, 0x9a, 0x0e, + 0xdb, 0x10, 0x68, 0x10, 0xde, 0x10, 0xd2, 0x0d, 0x1c, 0x0a, 0x90, 0x07, 0x97, 0x02, 0xa1, 0x01, + 0xe4, 0x00, 0xd9, 0x01, 0xc2, 0x01, 0xa0, 0xff, 0xb0, 0xfc, 0x82, 0xf5, 0x4b, 0xed, 0x30, 0xe5, + 0xea, 0xde, 0x47, 0xd8, 0x28, 0xd6, 0xa5, 0xd7, 0xbf, 0xda, 0x5f, 0xe0, 0x58, 0xe2, 0x97, 0xe3, + 0x24, 0xe2, 0xcd, 0xe2, 0x58, 0xe6, 0x4c, 0xeb, 0xf8, 0xf2, 0xbb, 0xf9, 0xba, 0xfe, 0xe1, 0x01, + 0xa1, 0x04, 0x79, 0x06, 0x12, 0x0c, 0x0c, 0x12, 0x6f, 0x16, 0x6d, 0x19, 0x77, 0x1a, 0xb4, 0x1c, + 0x47, 0x1e, 0x93, 0x1e, 0xf5, 0x1d, 0x5e, 0x1a, 0x17, 0x15, 0x0d, 0x11, 0x03, 0x0e, 0x18, 0x0c, + 0x21, 0x0c, 0xd8, 0x08, 0xc6, 0x04, 0x6b, 0xfe, 0x37, 0xfa, 0x31, 0xfa, 0x20, 0xf8, 0xce, 0xf8, + 0xec, 0xf8, 0x64, 0xf6, 0x1e, 0xf4, 0xff, 0xf0, 0x96, 0xee, 0x0b, 0xee, 0xee, 0xef, 0x9f, 0xf3, + 0x5d, 0xf7, 0x62, 0xfb, 0x13, 0x01, 0xd8, 0x06, 0xf0, 0x0a, 0x14, 0x0f, 0xb7, 0x11, 0x31, 0x12, + 0x60, 0x14, 0x51, 0x15, 0x9d, 0x17, 0xc0, 0x19, 0x56, 0x1d, 0x79, 0x1f, 0x26, 0x1a, 0x5c, 0x15, + 0x5f, 0x0f, 0xc7, 0x0c, 0xca, 0x0a, 0xc9, 0x0c, 0x74, 0x0d, 0x3f, 0x0a, 0xd2, 0x07, 0xda, 0xfe, + 0xd2, 0xf7, 0xef, 0xee, 0x1b, 0xe8, 0x59, 0xe4, 0x3d, 0xdf, 0x99, 0xe1, 0x92, 0xe3, 0xd2, 0xe6, + 0x29, 0xe7, 0x3f, 0xe7, 0xf1, 0xe6, 0x86, 0xe6, 0x4c, 0xe9, 0xf3, 0xed, 0xa1, 0xf5, 0x29, 0xfb, + 0x99, 0x00, 0x90, 0x04, 0x34, 0x08, 0x49, 0x0c, 0x5d, 0x0e, 0xa1, 0x12, 0xd6, 0x14, 0x15, 0x18, + 0xe7, 0x1a, 0x2a, 0x1c, 0x60, 0x1d, 0xbe, 0x1b, 0x3a, 0x1a, 0xcc, 0x15, 0xf6, 0x11, 0xb1, 0x0e, + 0x61, 0x0b, 0x74, 0x09, 0x6b, 0x07, 0xc7, 0x06, 0xf1, 0x03, 0x2b, 0x00, 0xf6, 0xfa, 0xe7, 0xf6, + 0x59, 0xf5, 0xd8, 0xf4, 0x47, 0xf4, 0x5a, 0xf2, 0xa4, 0xf0, 0xa5, 0xec, 0xc2, 0xeb, 0x5a, 0xed, + 0x5b, 0xef, 0xe2, 0xf2, 0x18, 0xf6, 0x85, 0xfa, 0x8d, 0xfe, 0x75, 0x03, 0xd2, 0x08, 0x92, 0x0c, + 0x5d, 0x0e, 0x23, 0x0d, 0x2d, 0x0e, 0x29, 0x10, 0xc2, 0x12, 0x6a, 0x16, 0xd8, 0x17, 0xc0, 0x19, + 0xcf, 0x14, 0xfc, 0x0f, 0x63, 0x0a, 0xfa, 0x07, 0x50, 0x07, 0x47, 0x07, 0x05, 0x06, 0xf8, 0x01, + 0xdb, 0xfc, 0x3e, 0xf3, 0x1b, 0xea, 0x82, 0xe1, 0x8f, 0xdb, 0x96, 0xd7, 0x9f, 0xd2, 0x80, 0xd4, + 0xe4, 0xd6, 0x48, 0xdb, 0xd1, 0xdd, 0x1a, 0xdc, 0xed, 0xd9, 0xb8, 0xd7, 0x4a, 0xd9, 0xbb, 0xdc, + 0xa8, 0xe3, 0x20, 0xec, 0x8d, 0xf3, 0x9b, 0xf9, 0x8c, 0x00, 0xc7, 0x06, 0x38, 0x0a, 0x2f, 0x0e, + 0xe0, 0x10, 0xd4, 0x13, 0x40, 0x16, 0x2c, 0x18, 0x85, 0x1b, 0xf6, 0x1a, 0x54, 0x1a, 0x6d, 0x17, + 0x71, 0x12, 0x3a, 0x0e, 0x93, 0x0a, 0xae, 0x0a, 0x28, 0x0b, 0x93, 0x0c, 0x8d, 0x0c, 0x2b, 0x09, + 0xa1, 0x04, 0x3a, 0x01, 0x99, 0xff, 0x28, 0xfd, 0x4f, 0xfd, 0x1a, 0xfd, 0xa9, 0xfb, 0x79, 0xf8, + 0x96, 0xf6, 0x76, 0xf7, 0x84, 0xf8, 0x46, 0xfb, 0x93, 0xfe, 0x1a, 0x03, 0x93, 0x08, 0xab, 0x0f, + 0x2a, 0x14, 0xde, 0x14, 0x90, 0x17, 0x0f, 0x16, 0x0b, 0x16, 0x32, 0x16, 0x45, 0x15, 0x3f, 0x15, + 0x24, 0x16, 0xb8, 0x1a, 0x8a, 0x17, 0xfc, 0x13, 0x0e, 0x0e, 0xd0, 0x07, 0x3c, 0x03, 0xb0, 0x00, + 0xb8, 0xff, 0xe4, 0xfa, 0xf7, 0xf6, 0x8f, 0xf0, 0x8d, 0xeb, 0xf9, 0xe5, 0x36, 0xe1, 0x8f, 0xdf, + 0xb2, 0xda, 0xd9, 0xdb, 0xc8, 0xdb, 0x4f, 0xde, 0xa9, 0xe0, 0xd2, 0xe1, 0x7a, 0xe3, 0x9f, 0xe1, + 0x77, 0xe3, 0xff, 0xe5, 0x29, 0xec, 0x9f, 0xf5, 0x6a, 0xfe, 0x85, 0x05, 0xdc, 0x0a, 0x69, 0x10, + 0x87, 0x13, 0xca, 0x16, 0x9d, 0x18, 0x97, 0x19, 0x3a, 0x1b, 0x57, 0x1e, 0xef, 0x23, 0x67, 0x27, + 0xac, 0x27, 0xa8, 0x22, 0x77, 0x1b, 0xdf, 0x13, 0xbf, 0x0d, 0x79, 0x0b, 0xa3, 0x08, 0x43, 0x08, + 0x38, 0x07, 0x8d, 0x03, 0x5f, 0xfe, 0x35, 0xf8, 0xd4, 0xf3, 0x98, 0xf0, 0xc9, 0xed, 0x69, 0xeb, + 0xfe, 0xe8, 0x9f, 0xe8, 0xd7, 0xe9, 0x55, 0xec, 0xab, 0xee, 0x87, 0xf0, 0x4f, 0xf3, 0x93, 0xf6, + 0xdf, 0xf9, 0xda, 0xfd, 0x57, 0x01, 0x48, 0x04, 0x4e, 0x08, 0x67, 0x0a, 0xf2, 0x0b, 0x56, 0x0e, + 0x82, 0x0f, 0xac, 0x11, 0x2a, 0x14, 0x7d, 0x1a, 0x8e, 0x1a, 0xb3, 0x17, 0xa5, 0x12, 0x57, 0x0b, + 0xfc, 0x05, 0x2e, 0x00, 0xec, 0xfc, 0x30, 0xf9, 0x82, 0xf6, 0x6d, 0xf4, 0x3d, 0xf2, 0x40, 0xef, + 0x86, 0xeb, 0x83, 0xe8, 0x21, 0xe2, 0x3a, 0xe0, 0xe0, 0xdd, 0xb0, 0xde, 0x2a, 0xe3, 0x6f, 0xe5, + 0x96, 0xe8, 0x88, 0xe8, 0x39, 0xea, 0x8c, 0xec, 0x31, 0xf0, 0xc2, 0xf7, 0x94, 0xfe, 0x5c, 0x04, + 0xdd, 0x0a, 0x6b, 0x12, 0xd7, 0x17, 0xd7, 0x1b, 0x20, 0x1d, 0x7c, 0x1b, 0x28, 0x1b, 0xa3, 0x1c, + 0xe7, 0x1e, 0xf0, 0x1f, 0x28, 0x1f, 0xc0, 0x1c, 0x36, 0x18, 0xf1, 0x12, 0xf2, 0x0c, 0xd6, 0x07, + 0x1c, 0x04, 0x46, 0x01, 0xed, 0xfd, 0xfd, 0xf9, 0xee, 0xf5, 0x50, 0xf1, 0xb3, 0xec, 0x8c, 0xe8, + 0x12, 0xe6, 0xba, 0xe4, 0x4c, 0xe4, 0x78, 0xe5, 0xbd, 0xe5, 0x33, 0xe7, 0x2d, 0xeb, 0x1c, 0xef, + 0xb9, 0xf2, 0x12, 0xf6, 0xd8, 0xf7, 0x21, 0xfb, 0x25, 0xff, 0x39, 0x03, 0xc9, 0x07, 0xe5, 0x0a, + 0x64, 0x0c, 0xe8, 0x0d, 0xa7, 0x10, 0x99, 0x12, 0xcd, 0x13, 0xb3, 0x18, 0x45, 0x1c, 0x9b, 0x1b, + 0x81, 0x1a, 0xb2, 0x14, 0x20, 0x0e, 0xe5, 0x07, 0x0e, 0x03, 0xc5, 0xff, 0x43, 0xfc, 0x54, 0xfa, + 0x3f, 0xf8, 0xbb, 0xf4, 0xd5, 0xf0, 0x86, 0xeb, 0x9a, 0xe4, 0x3b, 0xdf, 0x14, 0xdd, 0x4b, 0xdc, + 0xe4, 0xde, 0x8b, 0xe1, 0xa5, 0xe4, 0x2c, 0xe6, 0xd6, 0xe7, 0xb0, 0xea, 0xaa, 0xed, 0x38, 0xf3, + 0xe3, 0xf8, 0xb7, 0xfd, 0x6f, 0x03, 0x58, 0x09, 0xe1, 0x0d, 0x67, 0x12, 0x8c, 0x18, 0x15, 0x1b, + 0x5a, 0x1c, 0xf5, 0x1c, 0x81, 0x1d, 0x9b, 0x21, 0x05, 0x25, 0x18, 0x26, 0xd9, 0x23, 0x41, 0x1e, + 0x04, 0x19, 0x63, 0x13, 0x9b, 0x0e, 0x95, 0x0b, 0x6f, 0x08, 0xcf, 0x04, 0x8e, 0x00, 0x5f, 0xfb, + 0x89, 0xf8, 0x79, 0xf6, 0xb9, 0xf5, 0x9b, 0xf5, 0x2a, 0xf3, 0x47, 0xf2, 0x70, 0xf2, 0xb3, 0xf4, + 0xe1, 0xf8, 0xe3, 0xfc, 0x55, 0x00, 0x91, 0x02, 0x66, 0x04, 0xa7, 0x07, 0x76, 0x0a, 0xf0, 0x0b, + 0x8a, 0x0c, 0xbc, 0x0d, 0xa8, 0x0f, 0x3b, 0x13, 0x02, 0x15, 0x20, 0x16, 0x45, 0x17, 0xe5, 0x17, + 0xe8, 0x16, 0x4f, 0x12, 0xde, 0x0b, 0x6f, 0x02, 0x09, 0xfa, 0xa3, 0xf2, 0x92, 0xed, 0xdf, 0xe8, + 0x1e, 0xe8, 0xd0, 0xe8, 0x14, 0xe6, 0xe0, 0xdf, 0x22, 0xdb, 0xb2, 0xd4, 0xae, 0xcd, 0x0f, 0xcb, + 0x15, 0xcb, 0x31, 0xcd, 0xde, 0xce, 0x72, 0xd4, 0x9e, 0xd6, 0xf2, 0xd8, 0xa9, 0xde, 0x71, 0xe5, + 0xac, 0xea, 0xb4, 0xee, 0xe5, 0xf5, 0x9e, 0xf8, 0xd1, 0xfd, 0xed, 0x04, 0x03, 0x11, 0x22, 0x18, + 0xad, 0x1c, 0xfa, 0x1f, 0x6a, 0x1e, 0x68, 0x1e, 0xef, 0x1d, 0xa4, 0x20, 0x92, 0x25, 0xb4, 0x29, + 0x3d, 0x2f, 0xf4, 0x29, 0xfc, 0x24, 0x4f, 0x1d, 0x4b, 0x1a, 0x54, 0x16, 0xad, 0x15, 0x7a, 0x11, + 0xf6, 0x0b, 0xd8, 0x04, 0xe7, 0xfd, 0x8a, 0xfc, 0xb2, 0xfa, 0xf8, 0xfd, 0xe9, 0xfc, 0xf9, 0xf9, + 0xd1, 0xf5, 0xc7, 0xf2, 0x7c, 0xf7, 0x95, 0xfb, 0x3d, 0x02, 0x1c, 0x07, 0x0d, 0x08, 0x38, 0x06, + 0x4e, 0x04, 0x04, 0x05, 0x0a, 0x04, 0xfa, 0x08, 0x57, 0x0a, 0xae, 0x0d, 0x97, 0x11, 0x92, 0x15, + 0xb9, 0x18, 0xcf, 0x17, 0x9a, 0x18, 0xfc, 0x12, 0xa0, 0x0d, 0x8a, 0x06, 0x92, 0x01, 0xb5, 0xfc, + 0x71, 0xf9, 0xc9, 0xf9, 0xc4, 0xf6, 0x25, 0xf5, 0x2f, 0xee, 0x61, 0xe8, 0x47, 0xe0, 0x62, 0xd7, + 0xaf, 0xd2, 0xaf, 0xca, 0x79, 0xcb, 0x5f, 0xcc, 0xee, 0xd2, 0x78, 0xd7, 0x0d, 0xde, 0x38, 0xe2, + 0x72, 0xe2, 0x8a, 0xe3, 0x82, 0xe4, 0xe2, 0xe9, 0x4d, 0xef, 0x7f, 0xf7, 0x0b, 0x01, 0x2e, 0x0c, + 0x71, 0x13, 0xb6, 0x16, 0xe6, 0x1a, 0x4a, 0x1c, 0xec, 0x1e, 0x9d, 0x1f, 0xbf, 0x22, 0xe1, 0x25, + 0xfb, 0x26, 0x0f, 0x29, 0x1f, 0x26, 0xf7, 0x22, 0x6e, 0x1f, 0x93, 0x19, 0x37, 0x12, 0x49, 0x0d, + 0x82, 0x06, 0x39, 0x01, 0x5d, 0xfb, 0x76, 0xf5, 0x7e, 0xf3, 0xc8, 0xef, 0x88, 0xec, 0x35, 0xec, + 0x83, 0xec, 0xa2, 0xec, 0x83, 0xeb, 0x28, 0xeb, 0xeb, 0xed, 0x36, 0xf1, 0x0b, 0xf7, 0x9a, 0xfc, + 0x31, 0x00, 0x73, 0x04, 0xfb, 0x07, 0xf1, 0x09, 0xc6, 0x0d, 0x73, 0x13, 0xed, 0x15, 0xa0, 0x16, + 0x52, 0x18, 0xd6, 0x19, 0x3a, 0x1b, 0x7f, 0x1c, 0x1c, 0x1f, 0x7b, 0x1a, 0xc3, 0x11, 0x6e, 0x09, + 0x6e, 0x03, 0x1f, 0x03, 0xf1, 0x01, 0xee, 0xfe, 0x8f, 0xf9, 0xec, 0xf6, 0xe2, 0xf3, 0xbf, 0xf1, + 0x4f, 0xed, 0x73, 0xe7, 0x5f, 0xe1, 0x81, 0xd8, 0xd1, 0xd4, 0xa7, 0xd2, 0x58, 0xd4, 0xe2, 0xd9, + 0x3d, 0xdf, 0xbb, 0xe5, 0xab, 0xe7, 0x30, 0xe8, 0x54, 0xe7, 0x60, 0xe7, 0x73, 0xed, 0x72, 0xf5, + 0x78, 0xfe, 0x64, 0x03, 0x91, 0x07, 0xc8, 0x0c, 0x86, 0x12, 0x16, 0x18, 0xf1, 0x1a, 0x9f, 0x1c, + 0x9e, 0x1b, 0xe3, 0x1a, 0xe9, 0x19, 0xeb, 0x1b, 0xbb, 0x1d, 0xd1, 0x1c, 0x06, 0x19, 0x1e, 0x0e, + 0xd6, 0x04, 0xbe, 0xfe, 0xed, 0xfb, 0x70, 0xfa, 0xc9, 0xf7, 0x5b, 0xf5, 0xc2, 0xf0, 0x5a, 0xee, + 0x35, 0xeb, 0x9e, 0xea, 0x2b, 0xeb, 0x4e, 0xeb, 0xe9, 0xe9, 0xe5, 0xe7, 0xf5, 0xe9, 0xac, 0xec, + 0x61, 0xf1, 0x8a, 0xf6, 0x78, 0xfc, 0x19, 0x01, 0xee, 0x05, 0x8e, 0x08, 0xa7, 0x0a, 0x8d, 0x0f, + 0x12, 0x16, 0x29, 0x1c, 0x37, 0x21, 0x92, 0x25, 0x25, 0x27, 0x10, 0x25, 0x6f, 0x22, 0x47, 0x1d, + 0x0d, 0x1a, 0x08, 0x16, 0x4d, 0x10, 0x03, 0x0a, 0xca, 0x03, 0x3a, 0xff, 0x41, 0xfc, 0x2b, 0xfa, + 0x01, 0xf6, 0xb4, 0xf1, 0x8b, 0xe8, 0xcc, 0xdf, 0x36, 0xd7, 0x7d, 0xd0, 0x22, 0xd1, 0xcf, 0xd1, + 0xae, 0xd6, 0x59, 0xdb, 0x35, 0xdf, 0xef, 0xe1, 0x77, 0xe2, 0x3b, 0xe5, 0x42, 0xe9, 0xe6, 0xee, + 0xfa, 0xf3, 0x11, 0xf8, 0xed, 0xfc, 0x6b, 0x05, 0x5f, 0x0f, 0x64, 0x19, 0xad, 0x21, 0x64, 0x26, + 0x70, 0x27, 0xae, 0x26, 0xef, 0x25, 0x35, 0x26, 0xa5, 0x28, 0xd4, 0x2a, 0xea, 0x28, 0x23, 0x23, + 0xe0, 0x1b, 0x4c, 0x16, 0x68, 0x12, 0xee, 0x0e, 0xab, 0x0b, 0xc9, 0x07, 0x87, 0x01, 0x68, 0xfb, + 0xf1, 0xf7, 0xc6, 0xf7, 0x21, 0xf9, 0x86, 0xf9, 0xa1, 0xf7, 0xdc, 0xf3, 0x4e, 0xf0, 0x06, 0xef, + 0x42, 0xf0, 0x63, 0xf4, 0x82, 0xf9, 0xb0, 0xfe, 0x0f, 0x01, 0x5a, 0x02, 0xbd, 0x05, 0x74, 0x0b, + 0x8e, 0x11, 0x2e, 0x15, 0xdf, 0x16, 0x78, 0x15, 0x1a, 0x12, 0x8d, 0x10, 0xfa, 0x10, 0x90, 0x13, + 0xa6, 0x18, 0xd3, 0x16, 0xbd, 0x10, 0x24, 0x06, 0x4e, 0xfc, 0x1e, 0xf6, 0xc8, 0xf1, 0xf9, 0xef, + 0x17, 0xed, 0x29, 0xe9, 0x32, 0xe4, 0x71, 0xe0, 0xac, 0xdb, 0xbb, 0xd7, 0x0e, 0xd4, 0x45, 0xcf, + 0xd6, 0xcd, 0xc0, 0xcc, 0x84, 0xd0, 0x14, 0xd5, 0x35, 0xda, 0x1a, 0xe0, 0x05, 0xe4, 0xa4, 0xe8, + 0xa3, 0xea, 0x0f, 0xed, 0x59, 0xf1, 0x98, 0xf8, 0xc2, 0x01, 0x5e, 0x0a, 0x46, 0x13, 0xb1, 0x1b, + 0xb6, 0x24, 0x99, 0x2b, 0x2a, 0x30, 0x77, 0x31, 0x4b, 0x32, 0x29, 0x31, 0x04, 0x2f, 0x10, 0x2c, + 0x4f, 0x29, 0x61, 0x26, 0xb6, 0x20, 0x54, 0x1a, 0x23, 0x13, 0xc1, 0x0c, 0x05, 0x06, 0x59, 0x01, + 0x35, 0xfe, 0x14, 0xfb, 0xe5, 0xf8, 0x14, 0xf5, 0xf0, 0xf1, 0x9a, 0xed, 0x33, 0xeb, 0x25, 0xe8, + 0xc7, 0xe4, 0xa2, 0xe3, 0xac, 0xe4, 0x68, 0xe7, 0xac, 0xe9, 0x08, 0xee, 0x3d, 0xf3, 0xa3, 0xf8, + 0xc8, 0xfe, 0x01, 0x05, 0x07, 0x0a, 0xaa, 0x0c, 0x8a, 0x0e, 0x33, 0x10, 0x85, 0x12, 0x0f, 0x16, + 0x27, 0x19, 0x4f, 0x1e, 0xa6, 0x1f, 0x14, 0x1b, 0xc5, 0x15, 0xa8, 0x0d, 0x43, 0x07, 0xa1, 0x00, + 0xfc, 0xfa, 0xce, 0xf5, 0x5f, 0xf0, 0xe8, 0xeb, 0x27, 0xe7, 0x5c, 0xe4, 0xe8, 0xe0, 0x6f, 0xdd, + 0xe0, 0xd5, 0xa5, 0xcf, 0x45, 0xcd, 0xbc, 0xcc, 0xf6, 0xd1, 0x73, 0xd7, 0x11, 0xdf, 0x75, 0xe4, + 0x40, 0xe7, 0xe4, 0xe9, 0x62, 0xeb, 0x5c, 0xef, 0xfd, 0xf3, 0x7e, 0xf9, 0x86, 0xfe, 0x81, 0x07, + 0xe2, 0x10, 0xfd, 0x19, 0xf6, 0x23, 0x86, 0x2a, 0xeb, 0x2c, 0x53, 0x2a, 0x6d, 0x26, 0x4e, 0x20, + 0x1e, 0x1d, 0x5f, 0x1c, 0x5a, 0x1b, 0x48, 0x19, 0xc5, 0x13, 0x71, 0x0e, 0xdf, 0x07, 0xb4, 0x04, + 0xdd, 0x01, 0xac, 0xfd, 0x93, 0xf9, 0x9f, 0xf4, 0xaa, 0xf0, 0x7a, 0xed, 0x0c, 0xee, 0x9f, 0xee, + 0x88, 0xef, 0xd5, 0xef, 0xb1, 0xef, 0xd1, 0xef, 0x24, 0xf0, 0x49, 0xf3, 0x36, 0xf7, 0xe2, 0xfd, + 0x36, 0x05, 0x86, 0x0c, 0x6c, 0x12, 0x9d, 0x17, 0x4a, 0x1a, 0x0a, 0x1b, 0x18, 0x1d, 0x4f, 0x1f, + 0xe2, 0x22, 0x52, 0x26, 0xd8, 0x26, 0x97, 0x28, 0xe5, 0x28, 0x82, 0x27, 0x87, 0x25, 0x76, 0x20, + 0xa5, 0x19, 0x5f, 0x0f, 0x24, 0x05, 0xf8, 0xfc, 0x7a, 0xf8, 0x98, 0xf5, 0x49, 0xf3, 0x45, 0xef, + 0x7d, 0xe8, 0xf6, 0xe2, 0xdb, 0xda, 0xbf, 0xd5, 0x6a, 0xd2, 0xdc, 0xd0, 0x42, 0xd3, 0xde, 0xd4, + 0x2e, 0xd8, 0x8d, 0xdb, 0xa1, 0xdf, 0x30, 0xe3, 0x86, 0xe6, 0x56, 0xe8, 0xf7, 0xea, 0xbf, 0xf0, + 0x99, 0xf7, 0x38, 0x02, 0x03, 0x0d, 0x08, 0x18, 0x5f, 0x21, 0xc1, 0x26, 0xa7, 0x28, 0xf3, 0x26, + 0xc0, 0x24, 0xb2, 0x21, 0xf9, 0x1f, 0xa4, 0x1d, 0xf2, 0x19, 0xcb, 0x14, 0xc7, 0x0f, 0x7a, 0x0c, + 0x40, 0x09, 0x46, 0x06, 0x7d, 0x01, 0x69, 0xfb, 0x27, 0xf5, 0xa3, 0xef, 0x08, 0xec, 0x95, 0xe9, + 0x43, 0xe9, 0x75, 0xe9, 0xc0, 0xe9, 0x0a, 0xe9, 0x5f, 0xe8, 0xed, 0xe8, 0x8f, 0xea, 0x29, 0xef, + 0x08, 0xf4, 0xac, 0xf9, 0x93, 0x00, 0x89, 0x07, 0x66, 0x0d, 0x54, 0x11, 0x88, 0x13, 0x83, 0x15, + 0x4c, 0x17, 0xeb, 0x17, 0xb6, 0x19, 0x2b, 0x1c, 0x05, 0x1d, 0x43, 0x20, 0xc9, 0x20, 0x28, 0x1f, + 0xa4, 0x1a, 0x37, 0x10, 0xff, 0x07, 0x29, 0xfe, 0x7f, 0xf6, 0x12, 0xef, 0xec, 0xe8, 0x14, 0xe5, + 0x63, 0xe2, 0x77, 0xe0, 0xe1, 0xdb, 0xcb, 0xd7, 0xd9, 0xd0, 0xed, 0xcc, 0xa7, 0xca, 0x18, 0xca, + 0x66, 0xce, 0x80, 0xd1, 0xae, 0xd8, 0x72, 0xe0, 0xd0, 0xe7, 0x31, 0xed, 0xcd, 0xef, 0x5a, 0xf2, + 0xc8, 0xf5, 0xb0, 0xfb, 0x84, 0x02, 0x6c, 0x0d, 0xec, 0x17, 0x7d, 0x22, 0xeb, 0x29, 0x9e, 0x2c, + 0x1b, 0x2d, 0x81, 0x2a, 0x74, 0x28, 0x09, 0x25, 0x2e, 0x21, 0x57, 0x1d, 0x51, 0x19, 0x9c, 0x17, + 0x2b, 0x17, 0x3b, 0x17, 0x27, 0x15, 0xed, 0x10, 0xa2, 0x0a, 0xcb, 0x03, 0x99, 0xfb, 0x45, 0xf3, + 0xc2, 0xee, 0xf4, 0xeb, 0x50, 0xeb, 0xe3, 0xea, 0x6c, 0xea, 0x21, 0xea, 0x11, 0xea, 0xf9, 0xea, + 0x55, 0xec, 0xe2, 0xee, 0x61, 0xf1, 0xfe, 0xf3, 0xec, 0xf8, 0xca, 0xfe, 0x4d, 0x05, 0xac, 0x0a, + 0xa4, 0x0c, 0x2c, 0x0e, 0xa2, 0x0e, 0x4a, 0x0f, 0xf1, 0x11, 0x50, 0x15, 0x70, 0x17, 0xf6, 0x1b, + 0xcd, 0x1b, 0x69, 0x1a, 0xb0, 0x16, 0x47, 0x0f, 0xd4, 0x0a, 0x85, 0x02, 0x47, 0xfb, 0xec, 0xf3, + 0xd0, 0xee, 0x2f, 0xed, 0x30, 0xeb, 0x1b, 0xe9, 0xd9, 0xe5, 0x98, 0xe2, 0x10, 0xdc, 0x4e, 0xd8, + 0xe8, 0xd3, 0xbb, 0xd2, 0x0e, 0xd7, 0x03, 0xdb, 0x48, 0xe2, 0x13, 0xe7, 0x9a, 0xec, 0x01, 0xf2, + 0x13, 0xf6, 0x60, 0xfb, 0xfd, 0x01, 0x45, 0x09, 0x55, 0x11, 0xe2, 0x1a, 0x0d, 0x24, 0x5e, 0x2f, + 0x3b, 0x36, 0x4c, 0x39, 0x56, 0x39, 0x9d, 0x35, 0x2f, 0x31, 0xa6, 0x2a, 0x4f, 0x26, 0x31, 0x23, + 0x60, 0x20, 0x17, 0x1d, 0xe2, 0x1a, 0x23, 0x18, 0xea, 0x13, 0x56, 0x10, 0x0d, 0x09, 0x03, 0x01, + 0x3d, 0xf8, 0x66, 0xf0, 0x50, 0xea, 0xfa, 0xe5, 0xa3, 0xe4, 0x46, 0xe5, 0xfd, 0xe6, 0xcb, 0xe6, + 0xa9, 0xe6, 0x5d, 0xe6, 0x19, 0xe7, 0x47, 0xea, 0x57, 0xed, 0x6b, 0xf2, 0x2f, 0xf7, 0x01, 0xfd, + 0x19, 0x03, 0xd4, 0x08, 0x99, 0x0d, 0xe5, 0x10, 0xc4, 0x11, 0x3a, 0x10, 0xea, 0x10, 0xe4, 0x10, + 0x3e, 0x14, 0x07, 0x17, 0xca, 0x15, 0x42, 0x15, 0xcb, 0x0e, 0x91, 0x09, 0x64, 0x02, 0xd9, 0xfa, + 0x28, 0xf6, 0x9c, 0xf0, 0x3b, 0xed, 0x8f, 0xea, 0xee, 0xe8, 0xad, 0xe6, 0x7d, 0xe4, 0x46, 0xde, + 0x0a, 0xd9, 0x95, 0xd6, 0x9e, 0xd3, 0xef, 0xd5, 0xe9, 0xd7, 0x15, 0xdc, 0xb2, 0xe0, 0x18, 0xe5, + 0x4a, 0xeb, 0xcf, 0xef, 0xb4, 0xf4, 0xc3, 0xf9, 0xe6, 0xfe, 0xff, 0x03, 0x6a, 0x0b, 0xe6, 0x11, + 0x63, 0x18, 0x70, 0x1f, 0x16, 0x24, 0x44, 0x27, 0x5c, 0x26, 0x1e, 0x22, 0xce, 0x1c, 0xa3, 0x17, + 0x0b, 0x14, 0xff, 0x0f, 0x0a, 0x0c, 0xd1, 0x09, 0xe0, 0x07, 0x2f, 0x06, 0xf7, 0x04, 0x5f, 0x02, + 0xb5, 0xfd, 0x8a, 0xf7, 0x89, 0xf0, 0x2f, 0xea, 0xfc, 0xe4, 0xa8, 0xe2, 0x43, 0xe2, 0xb8, 0xe3, + 0x59, 0xe6, 0x2e, 0xe8, 0x1f, 0xea, 0x18, 0xec, 0x11, 0xef, 0x63, 0xf2, 0x6c, 0xf6, 0x2a, 0xfb, + 0x52, 0x00, 0x75, 0x06, 0xb2, 0x0d, 0xf6, 0x13, 0x8e, 0x18, 0x86, 0x1c, 0x0b, 0x1f, 0x5d, 0x21, + 0x7c, 0x21, 0xb0, 0x21, 0x47, 0x24, 0xb8, 0x23, 0x9e, 0x24, 0x1c, 0x22, 0x6b, 0x1b, 0x31, 0x14, + 0x6c, 0x0b, 0xec, 0x03, 0xd3, 0xfc, 0x02, 0xf7, 0x89, 0xf1, 0xd3, 0xec, 0xc1, 0xe7, 0x3f, 0xe3, + 0x74, 0xdf, 0x9a, 0xda, 0x55, 0xd9, 0x83, 0xd6, 0x38, 0xd5, 0x97, 0xd5, 0xc5, 0xd5, 0xce, 0xd9, + 0xd9, 0xdc, 0x48, 0xe1, 0xd5, 0xe6, 0x47, 0xed, 0x31, 0xf4, 0x78, 0xfb, 0x49, 0x02, 0x22, 0x09, + 0x2e, 0x11, 0xa5, 0x18, 0x52, 0x22, 0x26, 0x29, 0x69, 0x2e, 0x96, 0x30, 0x0f, 0x2d, 0xcd, 0x28, + 0x05, 0x23, 0x2d, 0x1e, 0x34, 0x19, 0xfa, 0x13, 0x64, 0x12, 0xdc, 0x11, 0x52, 0x11, 0x2e, 0x0e, + 0xb9, 0x0a, 0x79, 0x07, 0xac, 0x02, 0xbb, 0xfb, 0xc7, 0xf4, 0x47, 0xed, 0xdb, 0xe8, 0x2b, 0xe7, + 0x3a, 0xe6, 0xba, 0xe9, 0x38, 0xea, 0x1c, 0xed, 0xbd, 0xef, 0x33, 0xef, 0xb1, 0xf3, 0xcd, 0xf6, + 0xd6, 0xf9, 0x40, 0xff, 0x31, 0x01, 0x42, 0x03, 0x1f, 0x07, 0xb8, 0x0c, 0x6e, 0x12, 0x5b, 0x13, + 0xff, 0x14, 0xf7, 0x15, 0x8f, 0x15, 0x8f, 0x15, 0x28, 0x17, 0x8d, 0x16, 0x12, 0x18, 0xfd, 0x13, + 0x9d, 0x0d, 0xb8, 0x0a, 0xd3, 0x04, 0x72, 0x00, 0x04, 0xf9, 0x66, 0xf1, 0xdd, 0xed, 0x40, 0xe8, + 0x1a, 0xe7, 0xa3, 0xe4, 0xa5, 0xdf, 0xcb, 0xde, 0xa6, 0xde, 0x36, 0xde, 0xe6, 0xe0, 0x10, 0xdf, + 0x2f, 0xdd, 0x1b, 0xe0, 0x54, 0xe3, 0xc9, 0xe8, 0x12, 0xec, 0xc3, 0xf1, 0x83, 0xf8, 0x0b, 0xff, + 0x91, 0x05, 0x64, 0x0a, 0x31, 0x12, 0x8b, 0x19, 0x60, 0x1f, 0x11, 0x25, 0x4b, 0x28, 0xb9, 0x2a, + 0x94, 0x2a, 0x61, 0x27, 0xbd, 0x23, 0x67, 0x21, 0xe8, 0x1c, 0xa3, 0x1a, 0x33, 0x17, 0xf1, 0x12, + 0xbe, 0x10, 0x64, 0x0b, 0x8d, 0x0a, 0x3a, 0x07, 0xef, 0xfd, 0xe9, 0xf4, 0x6f, 0xec, 0xc5, 0xe6, + 0xd1, 0xe0, 0x78, 0xdb, 0x2b, 0xda, 0x52, 0xdc, 0xc4, 0xdf, 0x8b, 0xe1, 0xc2, 0xe1, 0x85, 0xe7, + 0x6f, 0xec, 0x66, 0xef, 0x9f, 0xf3, 0x89, 0xf4, 0xcf, 0xf9, 0x58, 0xff, 0x8e, 0x04, 0x73, 0x0a, + 0x5b, 0x0f, 0xc1, 0x13, 0x7d, 0x17, 0x13, 0x18, 0x4a, 0x19, 0xfc, 0x1b, 0x84, 0x1e, 0x3b, 0x20, + 0x1c, 0x1e, 0xcd, 0x15, 0xde, 0x0d, 0x3b, 0x06, 0x0b, 0xff, 0x6c, 0xf5, 0xd3, 0xed, 0xbd, 0xe8, + 0xb7, 0xe4, 0xeb, 0xe3, 0x80, 0xe0, 0xc8, 0xdd, 0x11, 0xdf, 0xbd, 0xdd, 0x40, 0xde, 0xa1, 0xdc, + 0x9f, 0xdd, 0x8b, 0xe1, 0x27, 0xe4, 0xc6, 0xe9, 0x37, 0xf1, 0x44, 0xf9, 0x26, 0x02, 0x17, 0x08, + 0x1f, 0x0c, 0xe2, 0x13, 0x4e, 0x1a, 0x4d, 0x23, 0xb9, 0x2a, 0x32, 0x2b, 0x34, 0x2c, 0x77, 0x2b, + 0x3a, 0x2e, 0xa0, 0x2d, 0xf8, 0x28, 0x99, 0x24, 0x6b, 0x1f, 0xfb, 0x1b, 0xea, 0x17, 0x0a, 0x13, + 0x23, 0x0f, 0xd0, 0x0d, 0xb5, 0x09, 0xd1, 0x06, 0x21, 0x03, 0x64, 0xfe, 0x9c, 0xfc, 0x75, 0xf6, + 0xdd, 0xee, 0xd1, 0xe8, 0xe1, 0xe2, 0xdc, 0xe3, 0xa2, 0xe4, 0x65, 0xe6, 0x24, 0xeb, 0x1a, 0xed, + 0x9d, 0xf2, 0xfa, 0xf5, 0xed, 0xf4, 0x45, 0xf3, 0x4b, 0xf0, 0x17, 0xf2, 0x77, 0xf2, 0x6d, 0xf6, + 0x9c, 0xfc, 0xf0, 0x00, 0xc1, 0x06, 0xc7, 0x08, 0x16, 0x0b, 0xb0, 0x0e, 0xae, 0x10, 0x29, 0x13, + 0x3f, 0x14, 0x12, 0x13, 0xfc, 0x10, 0xb3, 0x0c, 0xa6, 0x07, 0xf5, 0x02, 0x43, 0xfc, 0x2f, 0xf6, + 0x86, 0xf2, 0x4f, 0xec, 0x07, 0xea, 0x35, 0xe9, 0x7e, 0xe7, 0x3a, 0xea, 0xe4, 0xe5, 0xf6, 0xdf, + 0x82, 0xda, 0xf0, 0xd5, 0xd8, 0xd8, 0x6f, 0xd7, 0xcd, 0xda, 0xc1, 0xdf, 0x0e, 0xe5, 0xb6, 0xec, + 0x69, 0xf1, 0xda, 0xf7, 0x9d, 0xff, 0x82, 0x06, 0xef, 0x0b, 0x1f, 0x10, 0xd4, 0x12, 0x92, 0x17, + 0xe6, 0x1c, 0xf9, 0x1e, 0x11, 0x21, 0x17, 0x1f, 0x9e, 0x1e, 0xd5, 0x1d, 0x09, 0x1b, 0x18, 0x1a, + 0x5e, 0x17, 0xec, 0x14, 0xb1, 0x13, 0xa9, 0x0e, 0x4f, 0x08, 0xd6, 0x03, 0x00, 0x01, 0x3d, 0xfd, + 0x27, 0xf5, 0x90, 0xee, 0xb7, 0xe8, 0xc6, 0xe4, 0x4e, 0xe4, 0x6e, 0xe3, 0xe5, 0xe6, 0x5e, 0xeb, + 0x88, 0xef, 0x7d, 0xf3, 0x2a, 0xf7, 0x0c, 0xfa, 0x82, 0xfc, 0x65, 0xfe, 0x6b, 0x00, 0xb2, 0x02, + 0x67, 0x04, 0x26, 0x0b, 0xcc, 0x0f, 0xa5, 0x14, 0xf5, 0x1a, 0x1d, 0x1e, 0x03, 0x23, 0xd4, 0x25, + 0x2e, 0x25, 0x39, 0x22, 0xe4, 0x1c, 0xab, 0x19, 0x6b, 0x12, 0xb1, 0x08, 0xd4, 0x00, 0x52, 0xf9, + 0x13, 0xf4, 0x8c, 0xee, 0x75, 0xe9, 0x12, 0xe7, 0x62, 0xe5, 0x2e, 0xe3, 0xd1, 0xe1, 0xb5, 0xdf, + 0x26, 0xdc, 0x05, 0xdc, 0xaa, 0xda, 0x86, 0xdc, 0xbb, 0xdf, 0x84, 0xe4, 0x31, 0xec, 0xcb, 0xf0, + 0x94, 0xf7, 0x38, 0xfe, 0x58, 0x05, 0x7a, 0x0f, 0x75, 0x15, 0xa9, 0x17, 0x4e, 0x18, 0xc1, 0x1a, + 0xbc, 0x1f, 0x8f, 0x23, 0x74, 0x26, 0xf5, 0x27, 0xaf, 0x27, 0xd3, 0x27, 0xae, 0x23, 0x6d, 0x1f, + 0x73, 0x1f, 0x2f, 0x1e, 0x87, 0x1c, 0xcd, 0x18, 0x34, 0x15, 0x22, 0x13, 0x16, 0x12, 0xcb, 0x11, + 0xd1, 0x0f, 0x3c, 0x0a, 0xaf, 0x02, 0xf7, 0xfb, 0xb6, 0xf2, 0xa8, 0xf0, 0x55, 0xf0, 0x92, 0xf2, + 0x5b, 0xf8, 0xe7, 0xf7, 0x2d, 0xf6, 0xf6, 0xf0, 0x48, 0xf0, 0xa9, 0xf1, 0x2a, 0xf0, 0x72, 0xee, + 0x74, 0xec, 0x2b, 0xed, 0xc8, 0xef, 0x30, 0xf3, 0xd6, 0xf8, 0x65, 0x00, 0x4a, 0x04, 0xba, 0x06, + 0xad, 0x08, 0x2e, 0x0a, 0xab, 0x0e, 0x38, 0x10, 0xc2, 0x0e, 0xef, 0x0c, 0x38, 0x06, 0xd8, 0x01, + 0x06, 0xfb, 0x4a, 0xf5, 0x5b, 0xf2, 0x2f, 0xee, 0x1d, 0xee, 0xdb, 0xec, 0x02, 0xe9, 0x02, 0xe2, + 0x23, 0xdd, 0xb3, 0xda, 0x3c, 0xd8, 0xde, 0xd6, 0x95, 0xd4, 0x3a, 0xd6, 0xa0, 0xda, 0xd1, 0xe0, + 0x35, 0xe5, 0x75, 0xec, 0xf3, 0xf5, 0x3e, 0xfc, 0x2e, 0x03, 0x38, 0x08, 0x68, 0x0d, 0x09, 0x13, + 0x0b, 0x18, 0x0f, 0x1d, 0x19, 0x20, 0x33, 0x24, 0xff, 0x27, 0x78, 0x29, 0xc4, 0x28, 0x94, 0x27, + 0xdf, 0x23, 0xf6, 0x21, 0x66, 0x1f, 0x48, 0x18, 0xfc, 0x10, 0xe7, 0x0a, 0x6d, 0x08, 0x39, 0x05, + 0x2b, 0x01, 0x11, 0xfd, 0xdf, 0xf8, 0x7d, 0xf4, 0x27, 0xed, 0xb3, 0xe6, 0x7c, 0xe2, 0x08, 0xe3, + 0x1e, 0xe4, 0xaf, 0xe5, 0x36, 0xe7, 0x23, 0xe9, 0x6a, 0xeb, 0x29, 0xec, 0x93, 0xef, 0xd5, 0xf0, + 0xb6, 0xf1, 0xa8, 0xf2, 0x62, 0xf2, 0x96, 0xf5, 0x19, 0xfa, 0x6f, 0x01, 0x0c, 0x08, 0x0a, 0x0c, + 0xce, 0x0c, 0x68, 0x0b, 0xc1, 0x0d, 0x17, 0x0f, 0xb4, 0x10, 0x4e, 0x10, 0xb0, 0x0c, 0xd0, 0x09, + 0xc7, 0x04, 0xdd, 0xfe, 0xd9, 0xf8, 0x2d, 0xf5, 0xb4, 0xf2, 0x8e, 0xf0, 0x27, 0xef, 0x4b, 0xee, + 0x95, 0xee, 0xcf, 0xed, 0xba, 0xed, 0x22, 0xeb, 0xf5, 0xe7, 0x6c, 0xe8, 0x69, 0xe9, 0x45, 0xec, + 0x18, 0xf0, 0x54, 0xf4, 0x94, 0xfb, 0x6e, 0x02, 0x5c, 0x07, 0x0e, 0x08, 0xdf, 0x08, 0x85, 0x0c, + 0x11, 0x11, 0xe9, 0x14, 0x8e, 0x17, 0x35, 0x1b, 0x14, 0x1f, 0xac, 0x23, 0x35, 0x25, 0xf7, 0x25, + 0x83, 0x27, 0xc5, 0x26, 0xb9, 0x23, 0xe4, 0x1e, 0x75, 0x1b, 0x07, 0x19, 0x28, 0x17, 0x5e, 0x15, + 0xdf, 0x12, 0x89, 0x0f, 0xe2, 0x0c, 0x85, 0x0a, 0xb8, 0x07, 0x52, 0x03, 0xe4, 0xfe, 0xe4, 0xfc, + 0xda, 0xf9, 0x4a, 0xf6, 0x69, 0xf1, 0xe7, 0xee, 0x7b, 0xed, 0x39, 0xed, 0x44, 0xed, 0x58, 0xed, + 0x22, 0xef, 0x3c, 0xf1, 0x28, 0xf1, 0x56, 0xf1, 0xd4, 0xf3, 0xdb, 0xf7, 0x16, 0xfd, 0x02, 0x01, + 0x20, 0x04, 0x50, 0x08, 0xa3, 0x0c, 0xd6, 0x0f, 0xc0, 0x13, 0x5e, 0x15, 0x5a, 0x19, 0x5d, 0x18, + 0x98, 0x14, 0x27, 0x10, 0x84, 0x07, 0xb2, 0x03, 0x71, 0xfe, 0x53, 0xfa, 0xa8, 0xf3, 0x16, 0xed, + 0x13, 0xea, 0x35, 0xe7, 0x8b, 0xe5, 0x4a, 0xe1, 0x25, 0xdd, 0x5d, 0xd8, 0x50, 0xd7, 0x38, 0xd5, + 0xfa, 0xd3, 0x0e, 0xd8, 0x62, 0xdd, 0x47, 0xe4, 0x50, 0xe8, 0x9c, 0xec, 0x36, 0xf1, 0xe7, 0xf5, + 0x0b, 0xfa, 0xdf, 0xfe, 0x18, 0x03, 0x7f, 0x08, 0x4f, 0x0f, 0x3e, 0x14, 0x9d, 0x1a, 0x1e, 0x1f, + 0x3d, 0x24, 0x03, 0x27, 0x23, 0x25, 0x78, 0x1f, 0x88, 0x17, 0x2c, 0x13, 0xf7, 0x0e, 0x2d, 0x0d, + 0x42, 0x0a, 0x7e, 0x06, 0xd0, 0x04, 0x63, 0x02, 0xfd, 0x00, 0xa4, 0xfe, 0x7e, 0xfd, 0x0b, 0xfc, + 0xab, 0xf8, 0x5e, 0xf5, 0x2a, 0xf4, 0xb4, 0xf4, 0xc3, 0xf4, 0x83, 0xf6, 0x0a, 0xf7, 0x9c, 0xf8, + 0x66, 0xfb, 0x32, 0xfc, 0x8e, 0xfe, 0xdc, 0xff, 0x21, 0x02, 0x41, 0x05, 0x15, 0x07, 0xfc, 0x07, + 0xb8, 0x07, 0x24, 0x08, 0x2a, 0x0a, 0xb8, 0x0c, 0x38, 0x0e, 0x1a, 0x0f, 0xda, 0x0e, 0xe3, 0x0e, + 0x10, 0x10, 0x9b, 0x0b, 0x8c, 0x07, 0xfe, 0x01, 0x83, 0xfd, 0x07, 0xf7, 0x6c, 0xef, 0x2c, 0xeb, + 0x35, 0xe8, 0xf5, 0xe7, 0xed, 0xe7, 0xd2, 0xe6, 0x27, 0xe6, 0xd1, 0xe5, 0x75, 0xe5, 0xb7, 0xe3, + 0x81, 0xe3, 0x5a, 0xe4, 0x3e, 0xe9, 0x6e, 0xee, 0x12, 0xf2, 0x86, 0xf4, 0x9a, 0xf6, 0x42, 0xfb, + 0x26, 0xff, 0x28, 0x03, 0x71, 0x05, 0x83, 0x08, 0x8f, 0x0c, 0x60, 0x10, 0x47, 0x14, 0x23, 0x19, + 0x1f, 0x1f, 0x4a, 0x23, 0x6f, 0x24, 0x4d, 0x22, 0x45, 0x20, 0xe1, 0x1d, 0xfc, 0x1b, 0x6d, 0x1a, + 0x28, 0x17, 0x5b, 0x15, 0xf9, 0x11, 0xac, 0x0f, 0xce, 0x0c, 0xb7, 0x09, 0x35, 0x09, 0xa5, 0x07, + 0x1f, 0x03, 0x23, 0xfc, 0x68, 0xf5, 0xff, 0xf0, 0x39, 0xee, 0x42, 0xeb, 0x8e, 0xe9, 0x27, 0xe7, + 0x37, 0xe6, 0x84, 0xe8, 0x58, 0xe9, 0x26, 0xeb, 0x53, 0xee, 0xce, 0xf0, 0x20, 0xf3, 0x9c, 0xf4, + 0x89, 0xf7, 0x7a, 0xfb, 0x90, 0xff, 0xc8, 0x03, 0x2f, 0x08, 0xb7, 0x0b, 0x9e, 0x0f, 0x60, 0x14, + 0xdc, 0x16, 0x1d, 0x1a, 0x1e, 0x19, 0xd6, 0x17, 0x69, 0x15, 0xb2, 0x0e, 0x19, 0x06, 0xee, 0xfb, + 0x40, 0xf6, 0x9b, 0xf1, 0x6d, 0xf0, 0x55, 0xf0, 0xdb, 0xf0, 0xd3, 0xf1, 0x0e, 0xf1, 0xb6, 0xef, + 0x40, 0xec, 0x9d, 0xeb, 0x04, 0xeb, 0x35, 0xec, 0x6b, 0xed, 0x53, 0xf0, 0xdc, 0xf4, 0x7e, 0xf9, + 0x56, 0x00, 0xb4, 0x03, 0x13, 0x07, 0x1c, 0x09, 0xd3, 0x0b, 0x9b, 0x0f, 0xec, 0x12, 0x8d, 0x18, + 0xb9, 0x1e, 0x31, 0x25, 0x81, 0x25, 0xd6, 0x22, 0xea, 0x1e, 0x3a, 0x1c, 0xc3, 0x18, 0xdd, 0x13, + 0xfd, 0x0e, 0xc4, 0x08, 0x70, 0x05, 0xd4, 0x02, 0x7b, 0xff, 0x41, 0xfd, 0xf1, 0xfb, 0xfe, 0xfa, + 0x76, 0xf9, 0x08, 0xf7, 0xb4, 0xf3, 0xde, 0xef, 0xa0, 0xec, 0xf5, 0xea, 0x97, 0xe9, 0x55, 0xe9, + 0xbb, 0xe9, 0x7c, 0xe9, 0x17, 0xe9, 0x0a, 0xea, 0x2c, 0xed, 0x0e, 0xf1, 0x8d, 0xf4, 0x9b, 0xf4, + 0x41, 0xf3, 0x0a, 0xf2, 0x6f, 0xf3, 0xa8, 0xf7, 0x63, 0xfb, 0xfa, 0xfd, 0xc3, 0x00, 0x8e, 0x03, + 0xdd, 0x07, 0x49, 0x0a, 0xc4, 0x0c, 0x3e, 0x0f, 0x5f, 0x0e, 0xc3, 0x0b, 0xcf, 0x05, 0xd6, 0x00, + 0xe2, 0xfb, 0x87, 0xf8, 0x75, 0xf3, 0x03, 0xf0, 0x9e, 0xf0, 0xae, 0xf1, 0x24, 0xf5, 0x7a, 0xf5, + 0xee, 0xf5, 0x1c, 0xf5, 0x72, 0xf5, 0x60, 0xf6, 0x09, 0xf3, 0x28, 0xf1, 0xc8, 0xef, 0x36, 0xf2, + 0x47, 0xf5, 0xbc, 0xf8, 0x83, 0xfb, 0xa1, 0xfd, 0x3e, 0x01, 0x99, 0x02, 0xd7, 0x06, 0x6d, 0x0b, + 0x62, 0x11, 0x87, 0x17, 0x9a, 0x1b, 0xfd, 0x1e, 0x83, 0x21, 0xaf, 0x23, 0x39, 0x23, 0xc0, 0x21, + 0x45, 0x1f, 0xfb, 0x1c, 0xb7, 0x1a, 0x17, 0x18, 0xf3, 0x15, 0x3d, 0x14, 0x3c, 0x12, 0xb0, 0x0f, + 0xa4, 0x0c, 0x9e, 0x07, 0x72, 0x03, 0xe1, 0xfd, 0x1b, 0xf9, 0xc9, 0xf4, 0x1f, 0xef, 0x5b, 0xeb, + 0x0b, 0xe9, 0x25, 0xe8, 0xb0, 0xe7, 0xd7, 0xe7, 0xc8, 0xe9, 0xdf, 0xec, 0xde, 0xef, 0x44, 0xf3, + 0xda, 0xf6, 0xdf, 0xf8, 0x91, 0xfb, 0xfb, 0xfd, 0xe2, 0xff, 0xb4, 0x03, 0x73, 0x07, 0x52, 0x0b, + 0x69, 0x0e, 0xde, 0x10, 0xe7, 0x14, 0x6a, 0x18, 0xd7, 0x1c, 0xd6, 0x1c, 0xeb, 0x17, 0x13, 0x0f, + 0xad, 0x05, 0xc0, 0xfd, 0x98, 0xf4, 0x57, 0xed, 0x09, 0xe8, 0x26, 0xe6, 0x8e, 0xe5, 0xd7, 0xe5, + 0x2a, 0xe7, 0xed, 0xe7, 0x5e, 0xe9, 0xd1, 0xe8, 0x25, 0xe7, 0x7d, 0xe4, 0xe8, 0xe3, 0x20, 0xe5, + 0xdb, 0xe6, 0xf3, 0xea, 0x20, 0xef, 0x7b, 0xf4, 0xf7, 0xf8, 0x26, 0xfd, 0x4a, 0x01, 0x2d, 0x07, + 0xbc, 0x0d, 0x31, 0x12, 0x42, 0x14, 0xb1, 0x13, 0x0e, 0x14, 0xac, 0x14, 0xb6, 0x16, 0x1c, 0x17, + 0x80, 0x16, 0x94, 0x15, 0xa5, 0x13, 0xc1, 0x12, 0xbc, 0x10, 0x8a, 0x0f, 0xe0, 0x0d, 0xef, 0x0b, + 0x6c, 0x09, 0x8d, 0x08, 0x7e, 0x08, 0x9c, 0x08, 0x82, 0x08, 0xf2, 0x04, 0x14, 0x02, 0xae, 0xfe, + 0xfb, 0xfa, 0xd6, 0xf8, 0x37, 0xf6, 0x7c, 0xf4, 0x52, 0xf4, 0xf3, 0xf5, 0xcd, 0xf7, 0x53, 0xf8, + 0xfb, 0xf7, 0x13, 0xf8, 0x26, 0xf9, 0x85, 0xf9, 0xfc, 0xf9, 0xd5, 0xf9, 0x02, 0xfb, 0x44, 0xfc, + 0xd5, 0xfc, 0xf8, 0xfe, 0x45, 0x01, 0xf5, 0x04, 0xd0, 0x06, 0x76, 0x09, 0xd9, 0x0a, 0x4a, 0x09, + 0x30, 0x06, 0xc6, 0xff, 0x5b, 0xf9, 0x08, 0xf1, 0x65, 0xea, 0x4e, 0xe7, 0x4b, 0xe6, 0x15, 0xe9, + 0x89, 0xeb, 0x9c, 0xef, 0x4b, 0xf3, 0x89, 0xf4, 0x43, 0xf2, 0x98, 0xee, 0xc3, 0xeb, 0x80, 0xea, + 0x02, 0xeb, 0xd1, 0xea, 0x91, 0xed, 0x69, 0xf1, 0x6c, 0xf6, 0x40, 0xfc, 0x76, 0x01, 0xef, 0x08, + 0x0d, 0x10, 0x72, 0x15, 0x1a, 0x1a, 0xcc, 0x1d, 0x40, 0x20, 0xa3, 0x23, 0xc5, 0x25, 0x52, 0x27, + 0x74, 0x28, 0x89, 0x27, 0x52, 0x26, 0xd5, 0x22, 0xe3, 0x1e, 0xcd, 0x1b, 0x0b, 0x1a, 0x7c, 0x17, + 0x78, 0x13, 0xb0, 0x0d, 0x71, 0x08, 0x12, 0x05, 0xef, 0x01, 0xfc, 0xff, 0x8d, 0xfc, 0xfe, 0xf7, + 0x66, 0xf2, 0x58, 0xec, 0xc3, 0xe7, 0xf9, 0xe4, 0xf7, 0xe4, 0xc6, 0xe5, 0x1b, 0xe6, 0xd3, 0xe5, + 0x95, 0xe6, 0xe5, 0xe8, 0xe4, 0xec, 0x17, 0xf1, 0x2c, 0xf3, 0x1e, 0xf5, 0x08, 0xf7, 0x64, 0xf9, + 0x28, 0xfc, 0x70, 0xff, 0x46, 0x04, 0x34, 0x0a, 0xe2, 0x0e, 0x07, 0x12, 0x3f, 0x13, 0xf1, 0x13, + 0x1e, 0x12, 0x3a, 0x0f, 0x21, 0x0a, 0x78, 0x03, 0xd7, 0xfc, 0xb0, 0xf5, 0x30, 0xf1, 0x66, 0xee, + 0x33, 0xef, 0xc6, 0xf3, 0x1c, 0xf8, 0x24, 0xfb, 0x1e, 0xfc, 0xeb, 0xfa, 0xc5, 0xf9, 0x69, 0xf9, + 0x05, 0xf7, 0x3f, 0xf5, 0x0f, 0xf3, 0xe6, 0xf1, 0xb7, 0xf3, 0xac, 0xf5, 0xe6, 0xf9, 0x68, 0xff, + 0x83, 0x05, 0x53, 0x0a, 0x5c, 0x0d, 0xd9, 0x0e, 0x75, 0x0f, 0xd4, 0x0e, 0xa9, 0x0d, 0x91, 0x0d, + 0x75, 0x0d, 0xbc, 0x0f, 0x44, 0x11, 0xb5, 0x11, 0x03, 0x11, 0xcf, 0x0f, 0xc6, 0x0e, 0xc0, 0x0c, + 0xb4, 0x0a, 0x69, 0x08, 0xdd, 0x06, 0x67, 0x05, 0x94, 0x04, 0xf7, 0x03, 0x67, 0x03, 0x3d, 0x03, + 0xdd, 0x00, 0xb0, 0xfc, 0x33, 0xf8, 0xcd, 0xf4, 0x1c, 0xf3, 0x78, 0xf2, 0x36, 0xf1, 0xf0, 0xee, + 0x59, 0xec, 0x8f, 0xea, 0xef, 0xea, 0xa0, 0xeb, 0x26, 0xec, 0x4c, 0xed, 0xa5, 0xee, 0xab, 0xf0, + 0x86, 0xf2, 0x83, 0xf4, 0x0c, 0xf8, 0xea, 0xfb, 0x59, 0x00, 0x1d, 0x05, 0x04, 0x09, 0x42, 0x0d, + 0x4a, 0x10, 0xec, 0x12, 0x5d, 0x13, 0xe5, 0x11, 0xbc, 0x0c, 0x55, 0x06, 0xd5, 0xfe, 0xbe, 0xf6, + 0x60, 0xf3, 0x37, 0xf3, 0x10, 0xf6, 0x80, 0xf8, 0xe0, 0xf8, 0x5f, 0xf8, 0xe3, 0xf6, 0x65, 0xf6, + 0xbb, 0xf4, 0x9a, 0xf1, 0x84, 0xed, 0x6b, 0xea, 0x21, 0xe7, 0x9a, 0xe5, 0x81, 0xe8, 0xe9, 0xed, + 0xaa, 0xf5, 0xd4, 0xfb, 0xae, 0x00, 0xd6, 0x05, 0x1b, 0x0b, 0x70, 0x10, 0x02, 0x14, 0x55, 0x15, + 0xf9, 0x15, 0x24, 0x17, 0x2c, 0x18, 0x9d, 0x1a, 0xde, 0x1c, 0xf4, 0x1e, 0x4b, 0x20, 0x21, 0x1f, + 0xcc, 0x1b, 0x3a, 0x17, 0xa2, 0x12, 0xbd, 0x0e, 0x34, 0x0c, 0xb5, 0x09, 0x13, 0x07, 0x71, 0x05, + 0xcd, 0x03, 0xcc, 0x00, 0xdb, 0xfc, 0x46, 0xf9, 0xe6, 0xf5, 0xcb, 0xf2, 0x60, 0xf0, 0x55, 0xee, + 0x77, 0xec, 0xec, 0xeb, 0x09, 0xed, 0x85, 0xee, 0x17, 0xf1, 0x65, 0xf3, 0xfe, 0xf5, 0x10, 0xf9, + 0x89, 0xfb, 0x9f, 0xfe, 0x68, 0x02, 0x93, 0x06, 0xef, 0x09, 0xfd, 0x0a, 0x3d, 0x0c, 0xf0, 0x0d, + 0xa0, 0x0f, 0xfc, 0x11, 0x28, 0x14, 0x80, 0x14, 0xe2, 0x12, 0x7b, 0x10, 0x13, 0x0b, 0x9f, 0x04, + 0xa8, 0xfd, 0xd4, 0xf7, 0xeb, 0xf3, 0xa5, 0xf1, 0xe1, 0xf2, 0xd8, 0xf3, 0xb8, 0xf5, 0x1a, 0xf7, + 0xa7, 0xf6, 0x95, 0xf5, 0x07, 0xf4, 0xe9, 0xf1, 0x84, 0xee, 0x3c, 0xeb, 0x14, 0xe8, 0xa4, 0xe9, + 0x14, 0xee, 0xb3, 0xf3, 0x05, 0xf8, 0x96, 0xfa, 0x98, 0xfe, 0x4b, 0x03, 0x05, 0x07, 0x7f, 0x09, + 0xf3, 0x0a, 0x94, 0x0a, 0x6b, 0x0a, 0x2b, 0x0b, 0x0f, 0x0d, 0x44, 0x10, 0x58, 0x11, 0x43, 0x11, + 0x06, 0x10, 0x90, 0x0f, 0x17, 0x10, 0xf9, 0x0f, 0x54, 0x0f, 0x07, 0x0d, 0x89, 0x0a, 0x46, 0x08, + 0x72, 0x06, 0xb7, 0x04, 0x87, 0x02, 0x0c, 0x00, 0x0e, 0xfd, 0xfd, 0xfa, 0xde, 0xf8, 0xf0, 0xf6, + 0xc5, 0xf4, 0x3a, 0xf2, 0xc6, 0xef, 0x13, 0xed, 0x7e, 0xeb, 0xd4, 0xea, 0xe8, 0xea, 0xd7, 0xea, + 0x41, 0xeb, 0x18, 0xed, 0xfe, 0xef, 0x33, 0xf4, 0xe7, 0xf8, 0xb2, 0xfb, 0xff, 0xfd, 0x7d, 0x00, + 0x71, 0x03, 0x14, 0x07, 0x56, 0x0a, 0x21, 0x0c, 0x92, 0x0d, 0xdf, 0x0f, 0x8b, 0x11, 0x3b, 0x11, + 0x77, 0x0d, 0xa0, 0x09, 0xcb, 0x03, 0xff, 0xfc, 0x1f, 0xf7, 0xe7, 0xf2, 0x25, 0xf3, 0x72, 0xf4, + 0x7b, 0xf4, 0xbf, 0xf3, 0x3e, 0xf3, 0x1f, 0xf3, 0x45, 0xf2, 0xf2, 0xef, 0x9f, 0xec, 0xcc, 0xe9, + 0xe6, 0xe6, 0xf2, 0xe7, 0x75, 0xeb, 0x96, 0xf0, 0xa1, 0xf6, 0x45, 0xfb, 0xce, 0x00, 0x16, 0x07, + 0xb4, 0x0d, 0xb7, 0x13, 0x06, 0x17, 0x56, 0x17, 0x96, 0x17, 0x2f, 0x19, 0xa7, 0x1b, 0xbf, 0x1d, + 0x5f, 0x1c, 0x49, 0x19, 0xbd, 0x15, 0x9f, 0x13, 0x8e, 0x13, 0x15, 0x13, 0xc1, 0x11, 0x71, 0x0e, + 0x30, 0x09, 0xe1, 0x03, 0xfd, 0x00, 0x5f, 0xff, 0x2c, 0xfe, 0x2f, 0xfb, 0xb2, 0xf6, 0xc6, 0xf2, + 0x52, 0xf0, 0x65, 0xef, 0x67, 0xef, 0x13, 0xef, 0x1d, 0xee, 0x9b, 0xec, 0xe6, 0xea, 0x55, 0xeb, + 0x0b, 0xec, 0x91, 0xed, 0x1f, 0xf0, 0x25, 0xf3, 0xf2, 0xf6, 0x90, 0xf9, 0xe0, 0xfa, 0x34, 0xfc, + 0xbf, 0xfd, 0xba, 0xff, 0x22, 0x02, 0xca, 0x04, 0xf5, 0x06, 0xae, 0x09, 0xd5, 0x0b, 0x78, 0x0f, + 0xa6, 0x13, 0xa3, 0x16, 0x01, 0x17, 0x19, 0x13, 0xb6, 0x0c, 0x8e, 0x05, 0x9d, 0x01, 0x66, 0x01, + 0xa8, 0x02, 0xa9, 0x04, 0x42, 0x04, 0x5b, 0x03, 0xf8, 0x01, 0xe2, 0x00, 0x68, 0x00, 0x64, 0xfe, + 0x72, 0xfb, 0x80, 0xf7, 0x5b, 0xf2, 0x05, 0xf0, 0x92, 0xf1, 0x9c, 0xf4, 0x39, 0xf7, 0xa6, 0xf7, + 0x30, 0xf9, 0x88, 0xfc, 0x61, 0x00, 0x55, 0x05, 0xf0, 0x08, 0x4e, 0x0a, 0x08, 0x0b, 0x02, 0x0b, + 0x3b, 0x0b, 0xb5, 0x0c, 0x0a, 0x0d, 0x5a, 0x0c, 0x7a, 0x0b, 0x50, 0x0c, 0x49, 0x0f, 0x7c, 0x11, + 0x8a, 0x12, 0xbd, 0x11, 0x48, 0x0f, 0x04, 0x0d, 0x44, 0x0b, 0x35, 0x0a, 0xbb, 0x07, 0xb5, 0x02, + 0x31, 0xfd, 0x28, 0xf8, 0xdd, 0xf3, 0x03, 0xf2, 0xe8, 0xf0, 0x67, 0xef, 0x9a, 0xee, 0x35, 0xed, + 0x52, 0xec, 0x96, 0xec, 0x1b, 0xed, 0x5e, 0xee, 0x5b, 0xf0, 0xe1, 0xf2, 0xa8, 0xf5, 0x2f, 0xf9, + 0x79, 0xfc, 0xfe, 0xff, 0xd9, 0x02, 0x74, 0x05, 0x0e, 0x08, 0x93, 0x0a, 0x11, 0x0d, 0x22, 0x0f, + 0x43, 0x11, 0xa1, 0x15, 0x11, 0x19, 0xca, 0x19, 0x5d, 0x16, 0x25, 0x10, 0xa0, 0x08, 0x80, 0x00, + 0xe3, 0xfa, 0x14, 0xf8, 0x32, 0xf7, 0x6c, 0xf7, 0x67, 0xf5, 0xea, 0xf2, 0x60, 0xf0, 0x77, 0xee, + 0xea, 0xed, 0xea, 0xeb, 0x05, 0xe9, 0xaa, 0xe5, 0xa8, 0xe2, 0xc7, 0xe2, 0x4b, 0xe5, 0x07, 0xe9, + 0xc9, 0xec, 0x00, 0xef, 0xef, 0xf1, 0x8c, 0xf6, 0x9f, 0xfd, 0x16, 0x06, 0x1c, 0x0d, 0xd6, 0x0f, + 0x19, 0x0f, 0x1a, 0x0d, 0x88, 0x0c, 0x7e, 0x0c, 0x28, 0x0b, 0x66, 0x0a, 0x35, 0x09, 0xdb, 0x08, + 0x51, 0x0a, 0x51, 0x0c, 0x8d, 0x0f, 0x80, 0x10, 0xed, 0x0e, 0xdf, 0x0c, 0x07, 0x0b, 0xab, 0x09, + 0xd4, 0x08, 0x52, 0x06, 0x15, 0x03, 0x48, 0x00, 0x85, 0xfd, 0x9d, 0xfc, 0x0d, 0xfc, 0x4c, 0xfb, + 0xfc, 0xf9, 0xff, 0xf7, 0x61, 0xf7, 0xfc, 0xf7, 0x7b, 0xf8, 0x26, 0xf8, 0x2b, 0xf7, 0x78, 0xf6, + 0x7a, 0xf7, 0x25, 0xf9, 0x4a, 0xfa, 0xc6, 0xfa, 0x89, 0xfa, 0x06, 0xfb, 0xca, 0xfc, 0x46, 0x00, + 0xa9, 0x03, 0x67, 0x07, 0xf4, 0x09, 0xf2, 0x0c, 0x48, 0x0f, 0x52, 0x11, 0x2b, 0x11, 0x2a, 0x0d, + 0xdf, 0x06, 0x5b, 0xff, 0x30, 0xfb, 0xdd, 0xfa, 0x6b, 0xfc, 0xd5, 0xfe, 0xde, 0xfe, 0xad, 0xfe, + 0x61, 0xfd, 0x24, 0xfb, 0x35, 0xf9, 0x36, 0xf6, 0x06, 0xf2, 0x0c, 0xed, 0xed, 0xe7, 0xa0, 0xe6, + 0x8b, 0xe8, 0xc2, 0xea, 0xa9, 0xed, 0x2c, 0xef, 0x21, 0xf2, 0x14, 0xf7, 0xf4, 0xfd, 0xcf, 0x05, + 0xe2, 0x0b, 0xe0, 0x0e, 0x99, 0x0f, 0x27, 0x0e, 0x6a, 0x0e, 0x29, 0x11, 0xbf, 0x12, 0x2f, 0x13, + 0x5b, 0x12, 0xfd, 0x11, 0xe5, 0x13, 0x3b, 0x17, 0x74, 0x1b, 0x0a, 0x1c, 0x5c, 0x18, 0x48, 0x13, + 0xc3, 0x0d, 0x82, 0x09, 0x45, 0x07, 0x57, 0x04, 0xe9, 0x00, 0x30, 0xfc, 0x08, 0xf8, 0x2b, 0xf6, + 0xfd, 0xf4, 0x5e, 0xf4, 0x17, 0xf3, 0xfb, 0xf0, 0x59, 0xef, 0x04, 0xef, 0x9c, 0xef, 0xd3, 0xf0, + 0xae, 0xf2, 0x43, 0xf4, 0x00, 0xf5, 0x7e, 0xf6, 0x15, 0xf9, 0x09, 0xfc, 0x7b, 0xfe, 0xc0, 0x00, + 0x77, 0x04, 0x83, 0x09, 0xf2, 0x0d, 0x01, 0x11, 0x40, 0x12, 0xad, 0x13, 0xb2, 0x14, 0xcf, 0x15, + 0xb2, 0x15, 0xf5, 0x11, 0xcd, 0x0b, 0xa2, 0x04, 0xf2, 0xfe, 0x62, 0xfc, 0xeb, 0xfc, 0x9b, 0xfe, + 0xf0, 0xfd, 0x3f, 0xfc, 0x0d, 0xfa, 0x91, 0xf8, 0xb3, 0xf7, 0x76, 0xf6, 0x7f, 0xf3, 0xc8, 0xee, + 0xf0, 0xe9, 0xcb, 0xe7, 0x33, 0xe8, 0x04, 0xea, 0xfb, 0xec, 0xc2, 0xef, 0xfd, 0xf2, 0xba, 0xf6, + 0xca, 0xfb, 0x66, 0x01, 0x78, 0x05, 0x86, 0x06, 0x39, 0x05, 0x50, 0x04, 0xd6, 0x05, 0x40, 0x07, + 0x88, 0x07, 0xe0, 0x06, 0xff, 0x05, 0x17, 0x07, 0x35, 0x0a, 0x5c, 0x0d, 0xee, 0x10, 0x8b, 0x11, + 0x98, 0x0f, 0x6f, 0x0c, 0xea, 0x08, 0x1c, 0x07, 0x80, 0x05, 0x47, 0x03, 0x1f, 0x01, 0xad, 0xfd, + 0xfc, 0xfa, 0x49, 0xfa, 0x35, 0xfa, 0x8d, 0xfa, 0xc5, 0xf9, 0x73, 0xf7, 0x34, 0xf4, 0x18, 0xf1, + 0x71, 0xef, 0x1d, 0xef, 0x71, 0xee, 0x8f, 0xed, 0x66, 0xec, 0x0b, 0xec, 0xdc, 0xec, 0xe9, 0xee, + 0x6b, 0xf2, 0xc1, 0xf6, 0x86, 0xfb, 0x3b, 0x00, 0xa5, 0x04, 0x00, 0x08, 0x27, 0x0b, 0x6e, 0x0f, + 0x7f, 0x12, 0x4e, 0x15, 0xe6, 0x15, 0x80, 0x14, 0x25, 0x11, 0x26, 0x0c, 0x09, 0x09, 0xb1, 0x07, + 0xb0, 0x07, 0xf0, 0x07, 0x80, 0x05, 0x8a, 0x01, 0xc6, 0xfd, 0x22, 0xfa, 0xe8, 0xf7, 0x4d, 0xf6, + 0xd9, 0xf2, 0x41, 0xed, 0x3b, 0xe6, 0x73, 0xe2, 0x8d, 0xe2, 0x84, 0xe4, 0x7c, 0xe8, 0xaa, 0xea, + 0xb2, 0xec, 0x5f, 0xf0, 0xf6, 0xf4, 0xba, 0xfa, 0xe4, 0xff, 0xb4, 0x03, 0x0e, 0x05, 0xb9, 0x05, + 0xbd, 0x07, 0x6e, 0x0a, 0x52, 0x0d, 0xae, 0x0f, 0x84, 0x10, 0x13, 0x11, 0xb4, 0x12, 0xd2, 0x13, + 0x90, 0x15, 0x29, 0x15, 0xf4, 0x12, 0x00, 0x10, 0x2e, 0x0c, 0x8c, 0x0a, 0xa6, 0x08, 0x83, 0x06, + 0xce, 0x03, 0x07, 0x00, 0xc4, 0xfd, 0x25, 0xfc, 0xf9, 0xfb, 0x2a, 0xfb, 0xb4, 0xf9, 0xd5, 0xf7, + 0xab, 0xf7, 0x45, 0xf8, 0xa7, 0xf8, 0xd9, 0xf8, 0xe8, 0xf8, 0xf5, 0xf8, 0x49, 0xf9, 0x6d, 0xfa, + 0xc2, 0xfc, 0xd9, 0xfe, 0x27, 0x01, 0x23, 0x03, 0xc3, 0x05, 0xac, 0x08, 0xad, 0x0c, 0x76, 0x10, + 0xa7, 0x11, 0xf1, 0x12, 0x89, 0x13, 0x29, 0x14, 0x48, 0x13, 0xbe, 0x10, 0xcd, 0x0c, 0xd3, 0x07, + 0x8c, 0x03, 0xe4, 0x00, 0x80, 0x00, 0x26, 0x01, 0x53, 0x00, 0x18, 0xff, 0xd3, 0xfb, 0x40, 0xfa, + 0xe2, 0xf8, 0x61, 0xf6, 0x01, 0xf3, 0x0f, 0xee, 0xde, 0xe9, 0x9c, 0xe7, 0x0f, 0xe9, 0xed, 0xeb, + 0x6c, 0xee, 0x04, 0xf0, 0x34, 0xf0, 0xdd, 0xef, 0x18, 0xf2, 0xff, 0xf4, 0x7d, 0xf9, 0x44, 0xfb, + 0x3d, 0xfc, 0xc6, 0xfa, 0x7c, 0xfe, 0x97, 0x00, 0xdf, 0x01, 0x9c, 0x05, 0x7a, 0x04, 0xba, 0x04, + 0xdb, 0x09, 0x88, 0x0a, 0x55, 0x10, 0x33, 0x16, 0x76, 0x14, 0xc0, 0x17, 0x41, 0x13, 0xbc, 0x15, + 0xed, 0x15, 0xa8, 0x14, 0x93, 0x14, 0xab, 0x0f, 0x8b, 0x0b, 0x79, 0x09, 0xb1, 0x04, 0x0c, 0x02, + 0xe2, 0xfe, 0x18, 0xfb, 0x67, 0xf9, 0xeb, 0xf5, 0x85, 0xf5, 0x60, 0xf4, 0xe7, 0xf3, 0xdb, 0xf2, + 0xc8, 0xef, 0x67, 0xef, 0x71, 0xf0, 0x74, 0xf4, 0x48, 0xf6, 0x97, 0xf8, 0x4a, 0xfc, 0x06, 0x02, + 0x77, 0x06, 0x27, 0x0a, 0x81, 0x0f, 0x40, 0x0f, 0xcb, 0x0f, 0xd2, 0x12, 0xca, 0x12, 0x7d, 0x14, + 0xb4, 0x11, 0x42, 0x0e, 0xd2, 0x09, 0xa9, 0x04, 0xfd, 0x00, 0x4f, 0xff, 0x89, 0xfd, 0x7d, 0xfa, + 0x05, 0xf6, 0x8f, 0xf0, 0xe5, 0xef, 0xfb, 0xed, 0x9a, 0xec, 0x34, 0xe9, 0xaa, 0xe4, 0x72, 0xe2, + 0x29, 0xe3, 0x2a, 0xe7, 0x71, 0xe9, 0xd3, 0xe9, 0x28, 0xe9, 0xc3, 0xe9, 0x8b, 0xec, 0x47, 0xf1, + 0xb4, 0xf7, 0xb0, 0xfb, 0x76, 0xfe, 0xaa, 0x00, 0x48, 0x05, 0x8d, 0x0a, 0xb8, 0x0f, 0xbc, 0x10, + 0x34, 0x0f, 0x00, 0x0c, 0xf3, 0x0b, 0xaf, 0x0c, 0x32, 0x0f, 0x02, 0x10, 0xc3, 0x0f, 0x7c, 0x0e, + 0x44, 0x0c, 0x5a, 0x0c, 0xee, 0x0d, 0x76, 0x0d, 0xe0, 0x0a, 0xaf, 0x05, 0x5d, 0x01, 0x87, 0xfe, + 0x1a, 0xfd, 0x7f, 0xfd, 0xaf, 0xfc, 0xbc, 0xfb, 0x21, 0xfb, 0x96, 0xfb, 0x0e, 0xfc, 0xe8, 0xfd, + 0xb7, 0xfe, 0xd8, 0xff, 0xb0, 0x00, 0xb2, 0x00, 0x83, 0xfe, 0xf0, 0xfc, 0x94, 0xfc, 0x53, 0xfd, + 0x1c, 0xff, 0x06, 0x00, 0x3e, 0x02, 0x81, 0x04, 0x98, 0x07, 0xa1, 0x0c, 0x3d, 0x0e, 0xe9, 0x11, + 0x4d, 0x13, 0x96, 0x12, 0xbd, 0x0f, 0xa8, 0x0a, 0x9f, 0x08, 0x0b, 0x07, 0x96, 0x06, 0xbd, 0x07, + 0x71, 0x06, 0x26, 0x03, 0xce, 0xfe, 0xc9, 0xf9, 0xda, 0xf8, 0x65, 0xf8, 0x3a, 0xf6, 0xe8, 0xf1, + 0x0e, 0xed, 0xa5, 0xe7, 0x9c, 0xe5, 0x2b, 0xe3, 0x9f, 0xe2, 0x98, 0xe2, 0xbb, 0xe0, 0xcf, 0xdf, + 0x6f, 0xe0, 0xa9, 0xe4, 0xc6, 0xea, 0x62, 0xef, 0x9a, 0xf4, 0x13, 0xf7, 0x54, 0xfa, 0xdf, 0xff, + 0x7c, 0x04, 0x45, 0x07, 0x84, 0x07, 0xda, 0x05, 0x9b, 0x06, 0x0f, 0x0a, 0xa4, 0x0e, 0x51, 0x13, + 0xad, 0x16, 0x05, 0x18, 0x5b, 0x19, 0xa1, 0x1a, 0xa8, 0x1c, 0x59, 0x1c, 0x2a, 0x1a, 0x5e, 0x16, + 0xcc, 0x0f, 0xf4, 0x0a, 0x67, 0x07, 0x94, 0x05, 0x5e, 0x03, 0xbc, 0x00, 0x87, 0xfe, 0xa3, 0xfc, + 0xaf, 0xfb, 0x0d, 0xfb, 0xa4, 0xfa, 0xe6, 0xfa, 0x39, 0xf9, 0xcb, 0xf7, 0x06, 0xf8, 0x07, 0xf8, + 0x43, 0xfa, 0xe6, 0xfb, 0xde, 0xfd, 0xab, 0x00, 0xbb, 0x03, 0x99, 0x06, 0x05, 0x0a, 0x55, 0x0d, + 0xf1, 0x0f, 0x7e, 0x12, 0x9b, 0x13, 0x27, 0x13, 0xe2, 0x10, 0x07, 0x0c, 0xcd, 0x08, 0xcd, 0x04, + 0xac, 0x01, 0x2f, 0x00, 0x3e, 0xfc, 0x35, 0xf9, 0xc8, 0xf5, 0x53, 0xf2, 0x0b, 0xef, 0x9e, 0xec, + 0xcd, 0xe9, 0xca, 0xe7, 0x82, 0xe5, 0xb7, 0xe2, 0xfc, 0xe1, 0x21, 0xe3, 0xce, 0xe5, 0x15, 0xe7, + 0x3f, 0xe7, 0x67, 0xe8, 0x9b, 0xec, 0xdd, 0xf2, 0xe0, 0xf9, 0x70, 0xfe, 0xf9, 0x01, 0xb4, 0x04, + 0xfa, 0x05, 0x69, 0x08, 0x2b, 0x0a, 0x14, 0x0b, 0x09, 0x09, 0x6b, 0x06, 0x85, 0x05, 0x95, 0x07, + 0x45, 0x0c, 0x86, 0x10, 0x31, 0x12, 0x3e, 0x12, 0x0a, 0x13, 0xab, 0x13, 0x90, 0x15, 0xc0, 0x16, + 0xb3, 0x16, 0x0b, 0x14, 0x10, 0x10, 0x83, 0x0c, 0xca, 0x0a, 0xea, 0x09, 0xc7, 0x08, 0xbd, 0x06, + 0xda, 0x04, 0x48, 0x03, 0xce, 0x02, 0x6b, 0x02, 0x4f, 0x01, 0x91, 0x00, 0xfa, 0xfd, 0x4f, 0xfc, + 0xfb, 0xfb, 0xa7, 0xfb, 0xba, 0xfb, 0x88, 0xfa, 0xc3, 0xf9, 0xff, 0xfa, 0xd0, 0xfb, 0xbd, 0xfe, + 0xb5, 0x00, 0xe5, 0x02, 0x60, 0x06, 0x05, 0x08, 0x75, 0x0a, 0x8f, 0x0a, 0x6d, 0x0a, 0xca, 0x07, + 0x9d, 0x04, 0xd2, 0x01, 0xf4, 0xff, 0x33, 0x00, 0xc4, 0xff, 0x6a, 0xfd, 0xd2, 0xf9, 0xbc, 0xf5, + 0xea, 0xf2, 0x9a, 0xf2, 0x7c, 0xf0, 0xa3, 0xeb, 0x00, 0xe6, 0x48, 0xe0, 0xdb, 0xdd, 0x48, 0xde, + 0xa3, 0xdd, 0x58, 0xde, 0x91, 0xdc, 0x0d, 0xdd, 0xd6, 0xdf, 0x42, 0xe4, 0xa6, 0xec, 0x98, 0xf2, + 0x89, 0xf8, 0x37, 0xfc, 0x7b, 0xfe, 0x84, 0x02, 0x9f, 0x07, 0xc7, 0x09, 0xdb, 0x0a, 0x21, 0x09, + 0x51, 0x0a, 0xc3, 0x0d, 0xb0, 0x11, 0xcb, 0x16, 0xef, 0x18, 0x74, 0x19, 0x90, 0x17, 0xb2, 0x15, + 0xa9, 0x14, 0x9f, 0x14, 0x16, 0x14, 0x13, 0x12, 0xbb, 0x0d, 0xda, 0x09, 0x8d, 0x07, 0x43, 0x04, + 0x31, 0x02, 0xcb, 0xff, 0x1c, 0xfe, 0x56, 0xfc, 0xde, 0xfb, 0xba, 0xfc, 0xa1, 0xfc, 0x2a, 0xfd, + 0x69, 0xfc, 0xb0, 0xfb, 0x29, 0xfc, 0x2c, 0xfc, 0xb9, 0xfd, 0xa6, 0xff, 0xc9, 0xff, 0x51, 0x02, + 0x4c, 0x04, 0xf8, 0x06, 0x41, 0x08, 0x95, 0x0a, 0xd1, 0x0b, 0xd6, 0x0b, 0x46, 0x0c, 0x01, 0x0d, + 0xeb, 0x0c, 0xc2, 0x09, 0xee, 0x04, 0x9b, 0x00, 0x59, 0xfe, 0xf3, 0xfb, 0x20, 0xfa, 0xc1, 0xf7, + 0xa9, 0xf5, 0xd3, 0xf3, 0x4f, 0xf2, 0x8d, 0xf0, 0xcc, 0xee, 0x3f, 0xee, 0x4a, 0xed, 0xdc, 0xe9, + 0x7e, 0xe9, 0x15, 0xe9, 0xbc, 0xe8, 0xac, 0xea, 0x1b, 0xeb, 0x09, 0xed, 0x81, 0xef, 0xa3, 0xf1, + 0x5a, 0xf7, 0xe6, 0xfa, 0x80, 0xfc, 0xd1, 0xfe, 0xef, 0x00, 0xa4, 0x03, 0x7b, 0x06, 0x42, 0x09, + 0xc2, 0x09, 0x13, 0x08, 0xc8, 0x08, 0xa6, 0x0a, 0x6e, 0x0e, 0xbd, 0x11, 0xe1, 0x13, 0xc0, 0x15, + 0x00, 0x17, 0x15, 0x16, 0x8c, 0x18, 0x2e, 0x1a, 0xb5, 0x18, 0xd3, 0x15, 0xc3, 0x10, 0xe7, 0x0b, + 0xd4, 0x09, 0x60, 0x0a, 0x6a, 0x09, 0x2d, 0x09, 0x73, 0x06, 0xe9, 0x02, 0x5e, 0x00, 0x67, 0xfe, + 0x11, 0xfe, 0xa3, 0xfd, 0xac, 0xfc, 0xad, 0xf9, 0x8e, 0xf8, 0xa7, 0xf7, 0xb2, 0xf8, 0x63, 0xf9, + 0x90, 0xfc, 0x9b, 0xfe, 0x2e, 0x01, 0x8f, 0x05, 0x3f, 0x07, 0xcc, 0x09, 0x63, 0x0c, 0xcd, 0x0f, + 0xc9, 0x13, 0xc4, 0x13, 0x0c, 0x13, 0xeb, 0x10, 0x21, 0x0d, 0x6a, 0x0a, 0xdf, 0x07, 0xc8, 0x05, + 0xe5, 0x01, 0xde, 0xfd, 0xe1, 0xfa, 0x1f, 0xf6, 0x04, 0xf3, 0xf8, 0xf0, 0xc3, 0xed, 0xf0, 0xe9, + 0x79, 0xe4, 0x9b, 0xde, 0xe9, 0xdb, 0xdf, 0xdb, 0x3c, 0xdb, 0xae, 0xdc, 0x8b, 0xdc, 0x31, 0xde, + 0xed, 0xe0, 0xc4, 0xe3, 0xf1, 0xe8, 0x54, 0xed, 0x4b, 0xf1, 0x9b, 0xf4, 0xcd, 0xf8, 0xa8, 0xfe, + 0x56, 0x02, 0x8b, 0x06, 0x6f, 0x07, 0x36, 0x09, 0x69, 0x0b, 0x58, 0x0c, 0xb3, 0x0e, 0x2e, 0x11, + 0xd9, 0x11, 0x4b, 0x11, 0xb4, 0x11, 0xcc, 0x11, 0xdd, 0x11, 0xe3, 0x11, 0x2a, 0x10, 0x78, 0x0c, + 0x53, 0x08, 0x02, 0x05, 0x93, 0x02, 0x2b, 0x01, 0x66, 0x00, 0xb3, 0x00, 0x1a, 0x01, 0xba, 0x00, + 0x5b, 0x02, 0x48, 0x05, 0x99, 0x06, 0x40, 0x07, 0xf1, 0x06, 0xa9, 0x06, 0x44, 0x06, 0x47, 0x06, + 0x5e, 0x06, 0xd2, 0x06, 0xfa, 0x07, 0xce, 0x07, 0xfc, 0x06, 0x44, 0x06, 0xab, 0x05, 0x0d, 0x07, + 0xb4, 0x08, 0xe9, 0x08, 0xc8, 0x0a, 0x7d, 0x0a, 0x48, 0x09, 0x00, 0x05, 0xc7, 0xff, 0x7b, 0xfa, + 0x8c, 0xf5, 0x95, 0xf4, 0xfc, 0xf2, 0xb1, 0xf0, 0xd0, 0xee, 0x59, 0xec, 0x1a, 0xeb, 0x27, 0xec, + 0xc0, 0xea, 0x45, 0xe8, 0x4b, 0xe4, 0xae, 0xe0, 0xf4, 0xe1, 0xce, 0xe3, 0x94, 0xe6, 0xc2, 0xe8, + 0x46, 0xe9, 0x62, 0xe9, 0xcc, 0xea, 0x4d, 0xed, 0xb3, 0xf0, 0x7f, 0xf3, 0x85, 0xf5, 0x93, 0xf7, + 0xe2, 0xf9, 0x02, 0xfe, 0xd0, 0x01, 0x14, 0x06, 0x5b, 0x09, 0xc3, 0x09, 0x1a, 0x0b, 0x30, 0x0c, + 0x3e, 0x0e, 0xcd, 0x12, 0x05, 0x17, 0x19, 0x1a, 0xf0, 0x1b, 0x93, 0x1d, 0xf9, 0x1d, 0xda, 0x1d, + 0xb6, 0x1c, 0xdf, 0x1a, 0x94, 0x17, 0xb5, 0x13, 0xbb, 0x0e, 0xa6, 0x0b, 0xcf, 0x09, 0x68, 0x08, + 0x7f, 0x08, 0xff, 0x07, 0xc2, 0x05, 0x6c, 0x04, 0xe8, 0x04, 0x5f, 0x04, 0x97, 0x04, 0x23, 0x04, + 0x98, 0x02, 0x25, 0x02, 0x42, 0x02, 0xa3, 0x04, 0xff, 0x06, 0x54, 0x09, 0xab, 0x09, 0x91, 0x0b, + 0xc2, 0x0b, 0x6c, 0x0b, 0x4f, 0x0c, 0xf9, 0x0e, 0x26, 0x13, 0xe2, 0x13, 0xca, 0x12, 0xd9, 0x0d, + 0xc1, 0x08, 0x6d, 0x03, 0xf9, 0xfc, 0x5a, 0xf8, 0x6a, 0xf4, 0x00, 0xf0, 0xf1, 0xed, 0x15, 0xeb, + 0xa6, 0xe9, 0x5d, 0xe8, 0x9b, 0xe4, 0xb1, 0xe0, 0x78, 0xdc, 0xcb, 0xd9, 0x02, 0xd9, 0xa4, 0xda, + 0x72, 0xdd, 0x44, 0xe0, 0x1e, 0xe4, 0xd9, 0xe6, 0xf3, 0xe9, 0x16, 0xed, 0xbb, 0xf1, 0xd3, 0xf5, + 0x95, 0xf9, 0x2c, 0xfd, 0x5a, 0x00, 0x48, 0x06, 0x27, 0x0b, 0x3b, 0x0d, 0x34, 0x0e, 0xfb, 0x0d, + 0x25, 0x0d, 0x6b, 0x0e, 0x6b, 0x11, 0x29, 0x14, 0x4c, 0x16, 0x5c, 0x17, 0xd7, 0x16, 0xc3, 0x15, + 0x5d, 0x15, 0x4a, 0x15, 0x6b, 0x15, 0xed, 0x12, 0xab, 0x0d, 0xa5, 0x08, 0x47, 0x04, 0x18, 0x03, + 0x12, 0x04, 0xa4, 0x05, 0x8d, 0x05, 0xed, 0x04, 0x2c, 0x04, 0x2c, 0x04, 0xa1, 0x04, 0x4c, 0x04, + 0xbb, 0x03, 0x38, 0x02, 0x76, 0x01, 0xf5, 0x00, 0x91, 0x01, 0x04, 0x01, 0x10, 0x02, 0xd0, 0x02, + 0xe3, 0x01, 0x51, 0x01, 0x84, 0x00, 0xca, 0x01, 0x04, 0x03, 0x2a, 0x06, 0x7a, 0x08, 0xde, 0x09, + 0x3d, 0x08, 0xf6, 0x03, 0x59, 0xff, 0xa8, 0xfb, 0x85, 0xf8, 0x03, 0xf7, 0x69, 0xf6, 0xba, 0xf3, + 0xcb, 0xf1, 0x0f, 0xee, 0x49, 0xec, 0x8e, 0xeb, 0x06, 0xeb, 0x7e, 0xea, 0xc2, 0xe6, 0x08, 0xe4, + 0x1c, 0xe1, 0xa8, 0xe0, 0x28, 0xe2, 0x70, 0xe3, 0x93, 0xe4, 0x4c, 0xe5, 0x13, 0xe7, 0x32, 0xe9, + 0xee, 0xeb, 0xb2, 0xed, 0x6b, 0xf0, 0x85, 0xf5, 0x80, 0xf9, 0x20, 0xff, 0xbb, 0x03, 0xce, 0x06, + 0x36, 0x09, 0xaf, 0x0a, 0x55, 0x0d, 0x10, 0x0f, 0x4b, 0x12, 0x25, 0x16, 0x46, 0x18, 0x30, 0x1a, + 0x12, 0x1b, 0xdd, 0x1c, 0x8e, 0x1e, 0x0a, 0x1d, 0x6f, 0x1a, 0x5a, 0x16, 0x83, 0x11, 0x0a, 0x0d, + 0xbb, 0x0a, 0xc5, 0x08, 0x30, 0x06, 0xb3, 0x04, 0x7c, 0x02, 0x13, 0x02, 0x71, 0x01, 0x49, 0x01, + 0x4d, 0x02, 0xa8, 0x02, 0x2d, 0x03, 0xbe, 0x02, 0x48, 0x03, 0xd8, 0x04, 0x7d, 0x07, 0xe3, 0x09, + 0x7b, 0x0a, 0xeb, 0x0a, 0x95, 0x0b, 0x0a, 0x0d, 0x22, 0x0f, 0x15, 0x11, 0x07, 0x12, 0x07, 0x12, + 0xff, 0x11, 0xad, 0x0f, 0x48, 0x0d, 0x05, 0x09, 0x1b, 0x02, 0x5d, 0xfc, 0x17, 0xf6, 0x05, 0xf2, + 0x1f, 0xef, 0xc9, 0xec, 0xf4, 0xe8, 0xe2, 0xe4, 0xea, 0xe2, 0xeb, 0xe1, 0x91, 0xe0, 0xcf, 0xdf, + 0xc6, 0xde, 0x55, 0xdd, 0x39, 0xdd, 0xfc, 0xdc, 0x6a, 0xde, 0x96, 0xdf, 0x3d, 0xe1, 0x78, 0xe3, + 0xfc, 0xe5, 0x34, 0xe9, 0xb9, 0xee, 0x09, 0xf5, 0x16, 0xfa, 0xb1, 0xfe, 0x7c, 0x00, 0xa5, 0x02, + 0x14, 0x05, 0x42, 0x08, 0xe9, 0x0a, 0xca, 0x0c, 0x97, 0x0e, 0xfb, 0x0f, 0x70, 0x12, 0x8c, 0x14, + 0x78, 0x16, 0xdd, 0x18, 0x19, 0x1a, 0x35, 0x1a, 0x68, 0x1a, 0xc5, 0x1a, 0x21, 0x1a, 0xab, 0x18, + 0x96, 0x16, 0x49, 0x14, 0x6d, 0x12, 0x6d, 0x11, 0xe9, 0x11, 0x55, 0x11, 0xda, 0x0f, 0x94, 0x0e, + 0x5f, 0x0d, 0xdf, 0x0a, 0x84, 0x09, 0x65, 0x08, 0x0b, 0x07, 0x9c, 0x05, 0xfb, 0x03, 0x83, 0x04, + 0x61, 0x04, 0xf2, 0x03, 0x5f, 0x01, 0xd6, 0xff, 0x99, 0xff, 0xb0, 0x00, 0x60, 0x02, 0x10, 0x05, + 0xc5, 0x06, 0x9b, 0x06, 0x74, 0x06, 0x1f, 0x04, 0xb5, 0x01, 0x04, 0xfe, 0xd3, 0xf9, 0x88, 0xf6, + 0xe8, 0xf3, 0x1e, 0xf2, 0xc0, 0xee, 0x96, 0xeb, 0x7c, 0xea, 0x21, 0xe8, 0xa6, 0xe6, 0x58, 0xe5, + 0x40, 0xe3, 0xee, 0xe2, 0x6d, 0xe1, 0xdd, 0xe0, 0xc2, 0xe0, 0xe2, 0xde, 0xf6, 0xde, 0xbe, 0xde, + 0x48, 0xdf, 0xea, 0xe0, 0xe3, 0xe4, 0x6e, 0xea, 0x5f, 0xef, 0x16, 0xf3, 0xd2, 0xf7, 0xfe, 0xfb, + 0xc4, 0x00, 0x5f, 0x05, 0x78, 0x09, 0x21, 0x0d, 0xe3, 0x0f, 0xc9, 0x11, 0xee, 0x14, 0xbf, 0x16, + 0x94, 0x18, 0x74, 0x1b, 0x98, 0x1d, 0x95, 0x1e, 0x85, 0x1e, 0x63, 0x1e, 0x06, 0x1d, 0xd6, 0x1b, + 0x6d, 0x1a, 0x5b, 0x18, 0xbf, 0x14, 0x29, 0x11, 0x9a, 0x0e, 0xba, 0x0b, 0x18, 0x09, 0x14, 0x07, + 0x09, 0x04, 0x69, 0x02, 0x10, 0x02, 0x60, 0x02, 0x50, 0x03, 0x05, 0x03, 0x1d, 0x03, 0x76, 0x03, + 0x54, 0x03, 0x80, 0x03, 0x25, 0x04, 0xaf, 0x03, 0xf8, 0x04, 0xab, 0x05, 0x3d, 0x06, 0x45, 0x08, + 0x7e, 0x08, 0xc5, 0x0a, 0x0e, 0x0c, 0x5d, 0x0b, 0x6d, 0x0a, 0x7b, 0x08, 0xfd, 0x05, 0xf7, 0x01, + 0x85, 0xfc, 0x6f, 0xf7, 0xfb, 0xf1, 0x0b, 0xed, 0x05, 0xeb, 0x89, 0xe8, 0x0b, 0xe8, 0x03, 0xe6, + 0xea, 0xe2, 0x43, 0xe2, 0x20, 0xe2, 0x8d, 0xe2, 0x06, 0xe3, 0xc7, 0xe0, 0x51, 0xe0, 0x08, 0xe1, + 0xda, 0xe0, 0xef, 0xe1, 0x5f, 0xe2, 0x08, 0xe4, 0x9c, 0xe5, 0x0a, 0xe8, 0xaa, 0xec, 0x08, 0xf1, + 0x99, 0xf4, 0x29, 0xf8, 0x39, 0xfb, 0xc2, 0xfe, 0x1c, 0x02, 0x28, 0x06, 0x81, 0x09, 0x5d, 0x0a, + 0x34, 0x0b, 0x49, 0x0d, 0xd7, 0x0f, 0xf8, 0x13, 0xab, 0x17, 0x19, 0x1a, 0xc6, 0x1b, 0x38, 0x1c, + 0x0e, 0x1f, 0x06, 0x20, 0xac, 0x1f, 0xef, 0x1d, 0x20, 0x1c, 0x90, 0x1a, 0x85, 0x18, 0x5d, 0x16, + 0x59, 0x13, 0x6f, 0x10, 0x67, 0x0d, 0xff, 0x09, 0xd2, 0x06, 0x72, 0x03, 0xde, 0x01, 0x1c, 0x01, + 0x98, 0x01, 0xc6, 0x00, 0x29, 0xff, 0x00, 0xfd, 0x1a, 0xfb, 0x26, 0xfa, 0x72, 0xf9, 0x14, 0xfa, + 0x89, 0xfc, 0xbb, 0xfe, 0x54, 0x01, 0x19, 0x03, 0x35, 0x06, 0xcf, 0x08, 0xc4, 0x08, 0x2e, 0x09, + 0x96, 0x07, 0x92, 0x04, 0x67, 0x00, 0xee, 0xfb, 0x93, 0xf7, 0xba, 0xf4, 0xbd, 0xf1, 0x33, 0xee, + 0x54, 0xeb, 0xa6, 0xe7, 0x2b, 0xe5, 0x59, 0xe5, 0x71, 0xe5, 0x25, 0xe5, 0x95, 0xe2, 0xcd, 0xdf, + 0xa6, 0xdd, 0xfd, 0xdb, 0x66, 0xde, 0xca, 0xdf, 0x51, 0xe2, 0xea, 0xe4, 0xbe, 0xe6, 0xc7, 0xea, + 0x6c, 0xef, 0x7d, 0xf4, 0x1c, 0xfa, 0xae, 0xfe, 0x50, 0x03, 0xe8, 0x08, 0x23, 0x0f, 0x7e, 0x14, + 0xcf, 0x17, 0xe4, 0x17, 0xb7, 0x18, 0x61, 0x19, 0x72, 0x1c, 0xe5, 0x1e, 0xe5, 0x1e, 0x7d, 0x1f, + 0x32, 0x1f, 0x37, 0x1f, 0x86, 0x1f, 0x78, 0x1f, 0x08, 0x1f, 0x79, 0x1b, 0xf3, 0x16, 0x98, 0x11, + 0x85, 0x0d, 0x94, 0x0b, 0xd7, 0x0a, 0xcc, 0x09, 0xc0, 0x08, 0xe6, 0x06, 0x81, 0x06, 0xb8, 0x07, + 0x83, 0x09, 0x21, 0x0a, 0xd2, 0x08, 0x2a, 0x07, 0x96, 0x05, 0xdc, 0x04, 0xb2, 0x05, 0x6e, 0x06, + 0x81, 0x05, 0xb4, 0x03, 0x09, 0x00, 0x51, 0xfe, 0x9e, 0xfe, 0xa3, 0xff, 0xaf, 0x01, 0xa1, 0x02, + 0xc0, 0x03, 0x0a, 0x02, 0xe5, 0xfe, 0xcc, 0xf9, 0x65, 0xf4, 0x81, 0xef, 0x01, 0xeb, 0xe8, 0xe7, + 0x33, 0xe6, 0xaf, 0xe4, 0x9d, 0xe3, 0xef, 0xe2, 0xdb, 0xe1, 0xf4, 0xe1, 0x71, 0xe2, 0x9e, 0xe2, + 0x04, 0xe1, 0x6e, 0xe0, 0xa9, 0xe0, 0x37, 0xe2, 0x5c, 0xe4, 0xda, 0xe4, 0xc6, 0xe5, 0x1b, 0xe6, + 0x20, 0xe7, 0xdd, 0xe9, 0x20, 0xee, 0x88, 0xf2, 0x0c, 0xf6, 0x7c, 0xf9, 0x37, 0xfd, 0x82, 0x02, + 0x20, 0x08, 0x71, 0x0c, 0x00, 0x10, 0x26, 0x12, 0xda, 0x13, 0x89, 0x15, 0x29, 0x17, 0xb1, 0x19, + 0x16, 0x1c, 0xf4, 0x1e, 0x0b, 0x20, 0x06, 0x21, 0x94, 0x22, 0x32, 0x25, 0x1f, 0x27, 0x8c, 0x25, + 0x9e, 0x20, 0x0a, 0x1a, 0x74, 0x14, 0x43, 0x10, 0xdf, 0x0b, 0xfb, 0x08, 0x86, 0x06, 0xda, 0x04, + 0xe1, 0x02, 0xd9, 0x00, 0x71, 0x00, 0xf1, 0xff, 0x5a, 0xff, 0xae, 0xfd, 0xad, 0xfb, 0xc8, 0xfb, + 0x85, 0xfc, 0x6f, 0xfd, 0x52, 0xfe, 0x20, 0xfe, 0x01, 0xfe, 0x57, 0xfe, 0xdd, 0xfe, 0x04, 0x01, + 0xbd, 0x02, 0x8b, 0x04, 0x53, 0x06, 0x9c, 0x05, 0x1c, 0x04, 0x58, 0x00, 0x1b, 0xfb, 0x73, 0xf6, + 0x43, 0xf1, 0x0a, 0xed, 0x23, 0xea, 0xd3, 0xe6, 0x98, 0xe6, 0xbf, 0xe3, 0x50, 0xe2, 0x26, 0xe2, + 0xfc, 0xe0, 0x53, 0xe1, 0xca, 0xde, 0x60, 0xdc, 0x66, 0xdc, 0x11, 0xde, 0xe9, 0xe1, 0x5f, 0xe5, + 0x18, 0xe8, 0xe4, 0xea, 0x2d, 0xed, 0x4a, 0xf0, 0x7e, 0xf6, 0xb6, 0xfc, 0x0b, 0x03, 0xaf, 0x07, + 0x35, 0x0b, 0x43, 0x0f, 0x34, 0x13, 0x81, 0x16, 0xa5, 0x19, 0xbd, 0x19, 0xdd, 0x16, 0x81, 0x14, + 0xb3, 0x15, 0x71, 0x19, 0x79, 0x1c, 0x39, 0x1e, 0xc0, 0x1e, 0x62, 0x1e, 0x77, 0x1e, 0x37, 0x1e, + 0x48, 0x1e, 0x42, 0x1d, 0x27, 0x1a, 0x1d, 0x14, 0xe6, 0x0e, 0x8d, 0x0b, 0xaf, 0x09, 0x20, 0x0a, + 0x57, 0x0a, 0x32, 0x0a, 0xbb, 0x08, 0x8a, 0x07, 0x42, 0x07, 0x21, 0x07, 0x91, 0x06, 0xbe, 0x05, + 0x54, 0x05, 0xb4, 0x04, 0xea, 0x02, 0xb0, 0xff, 0x90, 0xfd, 0x82, 0xfb, 0xa9, 0xfa, 0x26, 0xfb, + 0x89, 0xfb, 0x69, 0xfc, 0x2c, 0xfc, 0x5f, 0xfd, 0x71, 0xfd, 0x20, 0xfd, 0x9f, 0xfb, 0xe6, 0xf8, + 0xc7, 0xf4, 0x4b, 0xf0, 0xfe, 0xec, 0x70, 0xec, 0x16, 0xec, 0xe8, 0xeb, 0x03, 0xea, 0xf0, 0xe6, + 0xdb, 0xe5, 0x42, 0xe5, 0xba, 0xe5, 0x52, 0xe6, 0xd7, 0xe4, 0x22, 0xe4, 0xc3, 0xe2, 0xad, 0xe1, + 0xd3, 0xe0, 0x97, 0xe1, 0x47, 0xe4, 0xb9, 0xe6, 0xbc, 0xe9, 0x8f, 0xed, 0xfb, 0xf1, 0xea, 0xf7, + 0x3e, 0xfd, 0x71, 0x01, 0x38, 0x06, 0x54, 0x0b, 0xda, 0x10, 0x02, 0x15, 0x83, 0x16, 0x45, 0x17, + 0x37, 0x18, 0x41, 0x19, 0xae, 0x1b, 0xed, 0x1d, 0xaa, 0x20, 0x5c, 0x23, 0x95, 0x24, 0xe0, 0x25, + 0xbe, 0x26, 0xc9, 0x25, 0xbe, 0x23, 0x59, 0x1f, 0x20, 0x19, 0xb4, 0x11, 0x22, 0x0c, 0xa9, 0x08, + 0x36, 0x06, 0x9e, 0x04, 0x5e, 0x02, 0x2a, 0x00, 0x95, 0xfe, 0x1f, 0xfc, 0x59, 0xfb, 0xea, 0xfb, + 0x27, 0xfd, 0xa4, 0xfd, 0xf9, 0xfc, 0xd1, 0xfc, 0x11, 0xfd, 0xce, 0xfd, 0x8c, 0xfe, 0xe4, 0xfe, + 0xd0, 0x00, 0x41, 0x02, 0x56, 0x04, 0x25, 0x05, 0x0a, 0x06, 0x92, 0x05, 0x7f, 0x03, 0xe3, 0x01, + 0xdf, 0xfc, 0xfd, 0xf6, 0xb5, 0xf1, 0x6f, 0xed, 0x0d, 0xeb, 0xb2, 0xe9, 0xe4, 0xe7, 0x90, 0xe5, + 0x4d, 0xe2, 0x54, 0xe0, 0x0a, 0xdf, 0x60, 0xde, 0x31, 0xde, 0xf1, 0xdd, 0xdc, 0xde, 0x9c, 0xdf, + 0xa1, 0xe0, 0x0a, 0xe2, 0x8f, 0xe3, 0x2e, 0xe5, 0x7d, 0xe6, 0xbe, 0xe8, 0xb9, 0xed, 0x9f, 0xf3, + 0xf1, 0xf8, 0x67, 0xfe, 0xa4, 0x03, 0x73, 0x09, 0xe3, 0x0e, 0xee, 0x11, 0x9d, 0x12, 0x3a, 0x12, + 0x3d, 0x11, 0x76, 0x11, 0x67, 0x12, 0x60, 0x14, 0x14, 0x17, 0x5e, 0x1a, 0x33, 0x1d, 0x3f, 0x1e, + 0x66, 0x1f, 0x5d, 0x20, 0x6f, 0x20, 0x3b, 0x1f, 0x2b, 0x1c, 0x22, 0x18, 0x58, 0x14, 0xfc, 0x10, + 0x23, 0x0f, 0x05, 0x0d, 0x5f, 0x0c, 0x2d, 0x0b, 0x82, 0x09, 0x19, 0x0a, 0xa6, 0x08, 0x5e, 0x07, + 0xaf, 0x07, 0x62, 0x06, 0xb6, 0x03, 0xaa, 0x01, 0x64, 0xff, 0xec, 0xfe, 0x92, 0xfc, 0xa5, 0xfb, + 0x95, 0xfa, 0x16, 0xfb, 0xb3, 0xfd, 0x5e, 0xfe, 0x08, 0xfd, 0xd2, 0xfe, 0xe6, 0xfe, 0xee, 0x00, + 0xff, 0x01, 0xba, 0x00, 0x73, 0xfd, 0x6a, 0xf6, 0x20, 0xf1, 0x09, 0xeb, 0x8e, 0xe6, 0x2c, 0xe6, + 0x79, 0xe6, 0xc9, 0xe6, 0x6e, 0xe4, 0x15, 0xe1, 0xb6, 0xdf, 0xea, 0xe1, 0xd2, 0xe3, 0x26, 0xe3, + 0x35, 0xe0, 0x06, 0xdd, 0x8e, 0xdc, 0x90, 0xde, 0xe2, 0xe0, 0x47, 0xe5, 0xb7, 0xe7, 0x29, 0xeb, + 0x82, 0xef, 0x30, 0xf4, 0xde, 0xfa, 0xae, 0x01, 0x54, 0x08, 0xd9, 0x0c, 0x29, 0x10, 0x39, 0x14, + 0x27, 0x1a, 0xa4, 0x1e, 0x25, 0x20, 0x8b, 0x1f, 0x1d, 0x1f, 0x0a, 0x22, 0xfe, 0x24, 0x87, 0x27, + 0xb1, 0x29, 0x34, 0x2b, 0x0c, 0x2b, 0x1d, 0x27, 0x8c, 0x22, 0xdc, 0x1d, 0xbc, 0x1a, 0x38, 0x17, + 0x96, 0x12, 0x21, 0x0f, 0x82, 0x0a, 0x87, 0x07, 0xc2, 0x04, 0x82, 0x00, 0x27, 0xfe, 0x14, 0xfc, + 0x26, 0xfc, 0x66, 0xfb, 0x48, 0xfb, 0xdf, 0xfb, 0x34, 0xfc, 0xd5, 0xfc, 0xee, 0xfc, 0xfb, 0xfb, + 0xbb, 0xfb, 0x0f, 0xfb, 0x53, 0xfb, 0x77, 0xfe, 0xaf, 0x00, 0xdd, 0x01, 0x6a, 0x02, 0xe7, 0x02, + 0x84, 0x02, 0x1a, 0x01, 0x7d, 0xfe, 0xb4, 0xfc, 0xb7, 0xf8, 0x7d, 0xf4, 0x4e, 0xf0, 0xa3, 0xec, + 0xdc, 0xea, 0xa1, 0xe8, 0x3e, 0xe6, 0xd4, 0xe4, 0xb8, 0xe4, 0x8d, 0xe5, 0x33, 0xe5, 0x1b, 0xe5, + 0x74, 0xe4, 0xcf, 0xe4, 0x97, 0xe6, 0x7f, 0xe7, 0x25, 0xe8, 0xa5, 0xe9, 0xf3, 0xea, 0xd6, 0xee, + 0x15, 0xf3, 0xcc, 0xf6, 0xf5, 0xfa, 0x6c, 0x00, 0x5b, 0x05, 0xc3, 0x08, 0xec, 0x0b, 0xda, 0x0f, + 0x12, 0x13, 0x4b, 0x15, 0xe1, 0x15, 0xe8, 0x15, 0x0e, 0x17, 0xd4, 0x18, 0x52, 0x1b, 0x17, 0x1d, + 0x09, 0x20, 0xe7, 0x21, 0x61, 0x23, 0x58, 0x24, 0xe1, 0x23, 0xc1, 0x21, 0x9c, 0x1e, 0x32, 0x1a, + 0x4c, 0x15, 0x9a, 0x11, 0x5d, 0x0e, 0x2f, 0x0c, 0x66, 0x09, 0xc8, 0x05, 0xfe, 0x01, 0xe2, 0x00, + 0x71, 0x00, 0x29, 0xff, 0x25, 0xfc, 0xa7, 0xf8, 0x5a, 0xf5, 0x5b, 0xf3, 0x0e, 0xf2, 0xc5, 0xf0, + 0x47, 0xf0, 0x90, 0xef, 0xb8, 0xef, 0x12, 0xf1, 0x08, 0xf3, 0x99, 0xf5, 0xd2, 0xf8, 0xb8, 0xfb, + 0x08, 0xff, 0x3b, 0x01, 0x08, 0x02, 0xee, 0x02, 0x7a, 0x01, 0x0b, 0xff, 0x1a, 0xfc, 0xd9, 0xf8, + 0x68, 0xf6, 0x34, 0xf3, 0x6d, 0xf0, 0x69, 0xed, 0xd0, 0xe9, 0x8d, 0xe8, 0x4f, 0xe6, 0xb4, 0xe4, + 0x16, 0xe2, 0x6c, 0xdf, 0x2a, 0xde, 0x43, 0xdd, 0x77, 0xdd, 0x9f, 0xdd, 0x1b, 0xdf, 0x62, 0xe0, + 0x2c, 0xe2, 0xdc, 0xe4, 0xe6, 0xe9, 0x81, 0xf0, 0xf9, 0xf6, 0x9b, 0xfc, 0xf9, 0x00, 0xf5, 0x05, + 0xf9, 0x0b, 0xa7, 0x11, 0x20, 0x16, 0xeb, 0x17, 0xaf, 0x18, 0x9b, 0x1a, 0x59, 0x1c, 0x80, 0x1f, + 0x31, 0x22, 0xee, 0x24, 0x87, 0x27, 0xa5, 0x27, 0x77, 0x26, 0x5c, 0x24, 0xda, 0x21, 0xce, 0x1d, + 0x36, 0x19, 0x3e, 0x14, 0x61, 0x0f, 0x33, 0x0c, 0x89, 0x09, 0xdc, 0x05, 0x2b, 0x02, 0x79, 0xff, + 0xa3, 0xfe, 0x31, 0xfe, 0xed, 0xfc, 0xaa, 0xfb, 0x0e, 0xfb, 0x71, 0xfb, 0xfb, 0xfa, 0xf0, 0xf9, + 0x59, 0xf9, 0x97, 0xf9, 0xff, 0xf9, 0x6b, 0xfa, 0x9b, 0xfa, 0x29, 0xfc, 0x8f, 0xfe, 0x07, 0x00, + 0xf8, 0xff, 0x59, 0xff, 0x28, 0xff, 0xd0, 0xff, 0x10, 0x00, 0x59, 0xfe, 0x29, 0xfc, 0xdd, 0xf7, + 0x24, 0xf5, 0x8c, 0xf2, 0x25, 0xf0, 0x52, 0xee, 0x23, 0xec, 0x29, 0xea, 0x50, 0xe8, 0xfe, 0xe6, + 0xb1, 0xe7, 0x5f, 0xe8, 0xb4, 0xe8, 0x11, 0xe8, 0x47, 0xe7, 0x01, 0xe8, 0xb4, 0xe9, 0x49, 0xec, + 0x4e, 0xee, 0x38, 0xef, 0x87, 0xf0, 0x7f, 0xf4, 0x50, 0xf9, 0x32, 0xfe, 0x13, 0x03, 0x28, 0x06, + 0x84, 0x09, 0x71, 0x0c, 0xff, 0x0f, 0x3b, 0x13, 0x03, 0x16, 0x9e, 0x17, 0x9f, 0x17, 0x32, 0x18, + 0x4b, 0x1a, 0xf5, 0x1d, 0xf0, 0x20, 0x47, 0x22, 0xbc, 0x22, 0xc2, 0x22, 0x32, 0x22, 0xd1, 0x20, + 0x18, 0x1f, 0xa3, 0x1c, 0x62, 0x18, 0x73, 0x14, 0xa3, 0x10, 0x63, 0x0e, 0x62, 0x0b, 0x53, 0x08, + 0x10, 0x06, 0x57, 0x03, 0xf2, 0x00, 0xe7, 0xfd, 0x89, 0xfc, 0x12, 0xfb, 0x7c, 0xf8, 0x19, 0xf5, + 0x45, 0xf2, 0x6e, 0xf1, 0x1b, 0xf1, 0x9e, 0xf1, 0x1b, 0xf2, 0xf8, 0xf1, 0xf4, 0xf3, 0x5b, 0xf6, + 0x3e, 0xf9, 0x9e, 0xfb, 0x20, 0xfd, 0x8f, 0xfe, 0x96, 0xff, 0x41, 0xff, 0x8d, 0xfd, 0x3a, 0xfc, + 0x80, 0xfa, 0x8a, 0xf9, 0x2d, 0xf7, 0x09, 0xf5, 0x77, 0xf4, 0x69, 0xf2, 0x0d, 0xf0, 0x99, 0xed, + 0x2f, 0xea, 0x4e, 0xe8, 0xd1, 0xe5, 0xfe, 0xe3, 0x85, 0xe3, 0x88, 0xe3, 0x3c, 0xe5, 0xd3, 0xe5, + 0x45, 0xe5, 0x13, 0xe5, 0xbe, 0xe5, 0xa3, 0xe8, 0xf9, 0xec, 0xe0, 0xf1, 0xdb, 0xf6, 0x24, 0xfd, + 0x64, 0x03, 0xee, 0x0a, 0xc4, 0x10, 0x04, 0x15, 0x5c, 0x18, 0xf5, 0x19, 0x39, 0x1b, 0x59, 0x1c, + 0x1c, 0x1e, 0xbc, 0x20, 0xc9, 0x22, 0x96, 0x23, 0x8b, 0x23, 0xe5, 0x22, 0x08, 0x23, 0x42, 0x22, + 0xcb, 0x20, 0xc5, 0x1d, 0x83, 0x19, 0x2d, 0x15, 0xbf, 0x10, 0xc5, 0x0b, 0x2c, 0x07, 0x2d, 0x04, + 0x9c, 0x01, 0x72, 0xff, 0xb0, 0xfc, 0x01, 0xfa, 0x50, 0xf8, 0x2e, 0xf6, 0xb8, 0xf3, 0x77, 0xf1, + 0x03, 0xef, 0xdb, 0xed, 0x39, 0xee, 0x19, 0xee, 0xc4, 0xed, 0xe1, 0xed, 0xd9, 0xee, 0xea, 0xf0, + 0xd6, 0xf2, 0xe1, 0xf3, 0x5e, 0xf5, 0x73, 0xf6, 0xc7, 0xf6, 0x1f, 0xf7, 0x39, 0xf6, 0x7b, 0xf6, + 0x20, 0xf6, 0x74, 0xf6, 0x16, 0xf7, 0x4a, 0xf6, 0xc5, 0xf5, 0xc5, 0xf4, 0x42, 0xf3, 0x08, 0xf3, + 0xbf, 0xf1, 0x19, 0xf2, 0x65, 0xf2, 0x5f, 0xf1, 0x66, 0xf0, 0x1c, 0xf0, 0x0e, 0xf2, 0x2a, 0xf4, + 0x39, 0xf5, 0xcd, 0xf5, 0x48, 0xf6, 0x23, 0xf6, 0xf5, 0xf6, 0xfa, 0xf7, 0x0d, 0xfa, 0x0d, 0xfe, + 0x1a, 0x02, 0x5e, 0x07, 0x7f, 0x0c, 0x10, 0x10, 0x31, 0x14, 0x98, 0x16, 0x92, 0x18, 0x87, 0x19, + 0xb0, 0x1a, 0x41, 0x1d, 0xaa, 0x1f, 0x86, 0x21, 0xb2, 0x23, 0xfb, 0x24, 0x9a, 0x25, 0xa0, 0x25, + 0x53, 0x24, 0xd1, 0x21, 0xd2, 0x1e, 0xc0, 0x1b, 0x3d, 0x18, 0xb9, 0x13, 0xd4, 0x0e, 0x33, 0x0b, + 0x76, 0x08, 0xe1, 0x05, 0xe6, 0x02, 0xcc, 0xfe, 0x1c, 0xfc, 0xba, 0xf9, 0x79, 0xf7, 0x7b, 0xf4, + 0x80, 0xf0, 0x8f, 0xed, 0xb4, 0xeb, 0x81, 0xea, 0xb0, 0xea, 0xf5, 0xec, 0x90, 0xee, 0x0a, 0xf1, + 0x57, 0xf2, 0x95, 0xf2, 0x9c, 0xf4, 0xf4, 0xf6, 0x9e, 0xf9, 0xbd, 0xfb, 0xbe, 0xfc, 0x40, 0xfd, + 0x03, 0xfd, 0xe3, 0xfb, 0x2f, 0xfb, 0x93, 0xf9, 0xf6, 0xf7, 0x6a, 0xf6, 0x9c, 0xf3, 0x3f, 0xf1, + 0x68, 0xef, 0x83, 0xed, 0x58, 0xec, 0xc3, 0xea, 0xed, 0xe8, 0xd5, 0xe7, 0x96, 0xe6, 0xd2, 0xe6, + 0xe7, 0xe7, 0x78, 0xe9, 0xde, 0xeb, 0xb3, 0xec, 0xe3, 0xed, 0x7d, 0xef, 0x62, 0xf2, 0xb0, 0xf6, + 0xa5, 0xfc, 0xe1, 0x02, 0x68, 0x08, 0x73, 0x0d, 0xec, 0x11, 0xf9, 0x15, 0xe3, 0x18, 0xed, 0x1a, + 0x6a, 0x1d, 0xaa, 0x1f, 0xe4, 0x21, 0xe4, 0x22, 0x92, 0x22, 0x03, 0x23, 0xc3, 0x22, 0x53, 0x22, + 0xd5, 0x21, 0xbc, 0x1f, 0x44, 0x1d, 0x1b, 0x1b, 0xdd, 0x17, 0xe3, 0x13, 0x20, 0x0f, 0xb5, 0x0a, + 0xa0, 0x07, 0x3e, 0x04, 0xe2, 0x01, 0x26, 0x00, 0x37, 0xff, 0xf6, 0xfd, 0x96, 0xfc, 0x3f, 0xfa, + 0x11, 0xf8, 0xcf, 0xf5, 0x87, 0xf4, 0x56, 0xf4, 0x8c, 0xf2, 0x3c, 0xf1, 0x1b, 0xf0, 0x64, 0xef, + 0x7b, 0xef, 0x64, 0xef, 0x5e, 0xef, 0x49, 0xf0, 0x41, 0xf0, 0xda, 0xef, 0xfa, 0xef, 0xc2, 0xef, + 0xc8, 0xf0, 0x41, 0xf0, 0xdf, 0xee, 0xd2, 0xee, 0xf9, 0xee, 0xb4, 0xef, 0xdd, 0xef, 0x16, 0xed, + 0x5d, 0xec, 0x95, 0xeb, 0x5c, 0xec, 0x83, 0xee, 0xe4, 0xee, 0x4c, 0xf0, 0x75, 0xf0, 0x8b, 0xf0, + 0x84, 0xf1, 0x2d, 0xf2, 0x37, 0xf4, 0xb3, 0xf5, 0x4c, 0xf5, 0x2a, 0xf6, 0x26, 0xf8, 0x0a, 0xfc, + 0x5e, 0x00, 0xcd, 0x03, 0x03, 0x07, 0xe5, 0x0a, 0x71, 0x0e, 0xaf, 0x11, 0x65, 0x14, 0x5c, 0x16, + 0xa8, 0x18, 0x3d, 0x1a, 0xc7, 0x1c, 0xaa, 0x1f, 0xfd, 0x22, 0x3b, 0x27, 0x52, 0x29, 0x69, 0x2a, + 0x7e, 0x29, 0xb9, 0x27, 0x25, 0x27, 0x79, 0x25, 0x1d, 0x23, 0x8e, 0x1e, 0x2d, 0x19, 0xc0, 0x14, + 0x36, 0x10, 0x76, 0x0c, 0x8d, 0x07, 0x26, 0x03, 0xb1, 0xff, 0x07, 0xfc, 0x6e, 0xfa, 0x9b, 0xf8, + 0x55, 0xf6, 0xd2, 0xf3, 0x87, 0xf0, 0x0c, 0xee, 0x6c, 0xec, 0x5e, 0xeb, 0x01, 0xeb, 0xae, 0xea, + 0xfb, 0xea, 0x31, 0xec, 0x84, 0xed, 0x7d, 0xef, 0x72, 0xf1, 0xd3, 0xf1, 0x35, 0xf2, 0x5a, 0xf0, + 0x19, 0xf0, 0x96, 0xf1, 0x8d, 0xf1, 0x4f, 0xf2, 0x37, 0xf1, 0x68, 0xef, 0xb2, 0xee, 0x30, 0xed, + 0x7c, 0xed, 0xd5, 0xed, 0xec, 0xec, 0xe0, 0xec, 0x2e, 0xec, 0xd4, 0xec, 0xfe, 0xee, 0xe6, 0xef, + 0xf2, 0xf0, 0x69, 0xf0, 0x52, 0xf0, 0x4a, 0xf1, 0x78, 0xf2, 0xe4, 0xf4, 0x68, 0xf8, 0xf6, 0xfb, + 0x51, 0x00, 0xbc, 0x04, 0x2f, 0x0a, 0xd6, 0x10, 0x34, 0x16, 0x7b, 0x19, 0x3a, 0x1a, 0x9a, 0x18, + 0x03, 0x18, 0x7e, 0x19, 0xee, 0x1a, 0xc0, 0x1c, 0xee, 0x1d, 0x73, 0x1f, 0x72, 0x20, 0xb0, 0x21, + 0xc5, 0x22, 0x89, 0x23, 0xf0, 0x21, 0x75, 0x1e, 0xdf, 0x1a, 0x65, 0x16, 0x57, 0x11, 0x2d, 0x0d, + 0xbc, 0x07, 0x66, 0x04, 0x2e, 0x00, 0x4c, 0xfe, 0xf7, 0xfd, 0x40, 0xfc, 0xa6, 0xfa, 0x82, 0xf8, + 0x2e, 0xf6, 0x1d, 0xf4, 0x92, 0xf1, 0x5c, 0xf0, 0x16, 0xef, 0xf0, 0xee, 0x2f, 0xee, 0x79, 0xed, + 0x9f, 0xea, 0x6f, 0xe9, 0x88, 0xe9, 0x5c, 0xeb, 0xd5, 0xec, 0x44, 0xec, 0x1f, 0xec, 0x4d, 0xec, + 0xc3, 0xec, 0x8f, 0xec, 0xe6, 0xed, 0xe5, 0xef, 0x0a, 0xf1, 0x3b, 0xef, 0x18, 0xee, 0x87, 0xee, + 0x7e, 0xf1, 0xdf, 0xf4, 0xc4, 0xf7, 0x0c, 0xf9, 0xf7, 0xf9, 0xc9, 0xfc, 0xd3, 0xff, 0xef, 0x02, + 0x22, 0x03, 0x82, 0x01, 0x32, 0x02, 0xef, 0x00, 0x65, 0x00, 0x65, 0x02, 0x66, 0x05, 0xb0, 0x08, + 0x08, 0x0b, 0xd1, 0x0c, 0x87, 0x12, 0x3e, 0x18, 0x3e, 0x1a, 0x40, 0x18, 0xe9, 0x14, 0xd5, 0x12, + 0x87, 0x14, 0xb4, 0x17, 0xa3, 0x18, 0x78, 0x17, 0xa8, 0x18, 0x02, 0x1b, 0xa8, 0x1e, 0xc6, 0x1f, + 0x45, 0x20, 0x2a, 0x20, 0x11, 0x1f, 0x87, 0x1e, 0x56, 0x1d, 0x68, 0x18, 0x66, 0x12, 0xb3, 0x0b, + 0x17, 0x06, 0x5f, 0x04, 0x50, 0x01, 0x96, 0xfe, 0xcb, 0xfb, 0xd6, 0xf7, 0x87, 0xf4, 0x2b, 0xf1, + 0x03, 0xee, 0xe7, 0xec, 0x14, 0xeb, 0xab, 0xe6, 0x02, 0xe4, 0xfd, 0xe2, 0x37, 0xe2, 0xad, 0xe1, + 0xf3, 0xe0, 0xb1, 0xdf, 0x96, 0xe0, 0xce, 0xe4, 0xc2, 0xe7, 0x08, 0xea, 0xda, 0xe8, 0x23, 0xe7, + 0x0a, 0xe9, 0xaf, 0xe9, 0x80, 0xea, 0x65, 0xeb, 0x57, 0xea, 0x51, 0xe9, 0x55, 0xe7, 0x60, 0xe5, + 0x41, 0xe6, 0xd6, 0xe6, 0xe1, 0xe6, 0x66, 0xe8, 0x4a, 0xea, 0x43, 0xee, 0xed, 0xf4, 0x55, 0xf9, + 0xd2, 0xf9, 0x70, 0xfa, 0x4b, 0xfc, 0xf7, 0xfe, 0x7b, 0x01, 0xe1, 0x02, 0x24, 0x06, 0xf2, 0x09, + 0xbd, 0x0d, 0x14, 0x11, 0xb3, 0x14, 0xf7, 0x18, 0x97, 0x1c, 0xaf, 0x1d, 0x79, 0x1c, 0x8a, 0x1b, + 0x34, 0x1c, 0xfd, 0x1c, 0x54, 0x1e, 0x9e, 0x1c, 0x70, 0x1d, 0xaf, 0x20, 0xd1, 0x23, 0x0d, 0x27, + 0xa8, 0x26, 0x32, 0x22, 0xf0, 0x1f, 0x45, 0x1d, 0x9c, 0x1c, 0x84, 0x1a, 0x94, 0x16, 0x1f, 0x12, + 0x0f, 0x0f, 0x4b, 0x0c, 0xbe, 0x0b, 0x83, 0x0a, 0xa0, 0x07, 0x11, 0x06, 0x4d, 0x05, 0x5f, 0x06, + 0xa7, 0x08, 0x98, 0x09, 0x0e, 0x08, 0x97, 0x05, 0xce, 0x02, 0xc5, 0x00, 0x24, 0xff, 0x9e, 0xfc, + 0x9c, 0xf7, 0xb3, 0xf3, 0x6f, 0xf0, 0xe7, 0xee, 0x71, 0xee, 0x2d, 0xed, 0xaa, 0xea, 0x05, 0xe9, + 0x76, 0xe8, 0x35, 0xe8, 0xd4, 0xe8, 0x82, 0xe7, 0x33, 0xe5, 0xbd, 0xe4, 0x36, 0xe2, 0x3b, 0xe3, + 0x57, 0xe2, 0x80, 0xe2, 0xdf, 0xe3, 0x21, 0xe2, 0x19, 0xe1, 0x31, 0xe3, 0x56, 0xe5, 0xd8, 0xe8, + 0x48, 0xeb, 0xe6, 0xec, 0xf9, 0xee, 0x46, 0xef, 0x76, 0xed, 0x4e, 0xed, 0x85, 0xef, 0x8f, 0xf2, + 0x10, 0xf5, 0x58, 0xf5, 0xe5, 0xf5, 0xbc, 0xf8, 0xa7, 0xfc, 0x2f, 0x00, 0x7d, 0x00, 0xff, 0xfd, + 0x8f, 0xfd, 0x0e, 0x01, 0xde, 0x03, 0x0c, 0x08, 0x21, 0x0b, 0x73, 0x0e, 0xfd, 0x13, 0x79, 0x19, + 0xdb, 0x1d, 0x77, 0x20, 0x68, 0x1f, 0x82, 0x1f, 0xda, 0x1f, 0xb3, 0x1e, 0x84, 0x1e, 0xbb, 0x1c, + 0xe2, 0x1a, 0x8b, 0x18, 0x9c, 0x16, 0x26, 0x15, 0x05, 0x15, 0x5f, 0x14, 0xcd, 0x13, 0x71, 0x13, + 0xf6, 0x13, 0xcf, 0x13, 0xd4, 0x12, 0x8e, 0x12, 0x5e, 0x11, 0x20, 0x11, 0x4f, 0x10, 0x1e, 0x0f, + 0xdc, 0x0d, 0x4e, 0x0b, 0xc7, 0x09, 0x6b, 0x08, 0x19, 0x06, 0xbb, 0x02, 0x75, 0xff, 0x72, 0xfd, + 0x06, 0xfe, 0x5f, 0xfe, 0x2c, 0xfc, 0xf9, 0xf9, 0x09, 0xf6, 0xaf, 0xf1, 0x75, 0xef, 0x59, 0xec, + 0x33, 0xe9, 0x57, 0xe7, 0x2e, 0xe5, 0xa8, 0xe3, 0xc2, 0xe3, 0x77, 0xe3, 0x6b, 0xe4, 0xfd, 0xe3, + 0x36, 0xe3, 0xee, 0xe3, 0x7f, 0xe5, 0xe4, 0xe7, 0x92, 0xe9, 0x25, 0xeb, 0xa0, 0xee, 0x2b, 0xf4, + 0x0a, 0xf8, 0x76, 0xf9, 0x10, 0xfa, 0xac, 0xfa, 0x45, 0xfe, 0xe8, 0x00, 0xe9, 0xff, 0x20, 0xfe, + 0xe9, 0xfc, 0x96, 0xfd, 0x6f, 0xff, 0x25, 0x02, 0x95, 0x03, 0x97, 0x04, 0x42, 0x07, 0xd3, 0x0a, + 0x0e, 0x0f, 0xee, 0x11, 0xf8, 0x12, 0xfb, 0x12, 0xba, 0x10, 0x56, 0x0f, 0x30, 0x0d, 0x8b, 0x0a, + 0x15, 0x09, 0x37, 0x07, 0xe4, 0x05, 0x09, 0x05, 0x13, 0x05, 0xe5, 0x04, 0x31, 0x05, 0xeb, 0x05, + 0x68, 0x06, 0x90, 0x06, 0xd3, 0x05, 0x4c, 0x05, 0xbd, 0x04, 0x22, 0x04, 0x79, 0x04, 0x07, 0x04, + 0xca, 0x01, 0x9a, 0xfe, 0x0a, 0xfc, 0x86, 0xfa, 0x99, 0xf9, 0x91, 0xf5, 0x4f, 0xf0, 0x31, 0xef, + 0xd5, 0xef, 0xc7, 0xf0, 0xbb, 0xf1, 0x72, 0xf0, 0x1f, 0xee, 0xe6, 0xec, 0xf6, 0xeb, 0x3c, 0xec, + 0xf9, 0xec, 0x7a, 0xee, 0x2b, 0xf0, 0xfb, 0xf1, 0x50, 0xf5, 0xd1, 0xfa, 0xe8, 0xfd, 0x08, 0xfd, + 0x16, 0xfc, 0x80, 0xfc, 0xc6, 0xfe, 0x9b, 0x01, 0x84, 0x03, 0x33, 0x05, 0xc5, 0x08, 0xec, 0x0c, + 0xa2, 0x11, 0x79, 0x14, 0x9c, 0x13, 0x29, 0x12, 0x5f, 0x10, 0x36, 0x0f, 0xee, 0x0e, 0xc7, 0x0d, + 0x51, 0x0c, 0x13, 0x0c, 0x8a, 0x0c, 0xcd, 0x0e, 0x24, 0x10, 0x72, 0x10, 0xc6, 0x11, 0x0f, 0x13, + 0xef, 0x12, 0x43, 0x11, 0x11, 0x0f, 0x19, 0x0d, 0xb9, 0x0a, 0x2f, 0x08, 0x28, 0x04, 0xa8, 0x01, + 0x45, 0xff, 0x93, 0xfc, 0xdc, 0xfa, 0x23, 0xf9, 0xae, 0xf7, 0xc7, 0xf6, 0xcf, 0xf5, 0xd2, 0xf7, + 0x04, 0xfb, 0x61, 0xfb, 0xb9, 0xfb, 0x2d, 0xfb, 0x80, 0xf7, 0xac, 0xf6, 0xe5, 0xf7, 0xa9, 0xf8, + 0xcc, 0xfa, 0x27, 0xf9, 0xeb, 0xf8, 0xb0, 0xf9, 0xb0, 0xf8, 0x8f, 0xf6, 0xdd, 0xf4, 0x90, 0xf3, + 0xc6, 0xf3, 0x39, 0xf5, 0xb3, 0xf6, 0xa0, 0xf6, 0x3a, 0xf6, 0xfc, 0xf4, 0x15, 0xf5, 0xc3, 0xf5, + 0x90, 0xf4, 0xaa, 0xf5, 0x9d, 0xf6, 0xcd, 0xf6, 0x98, 0xf8, 0x22, 0xfb, 0x59, 0xfd, 0x7d, 0xfc, + 0x51, 0xfa, 0xf5, 0xfa, 0x37, 0x00, 0x05, 0x06, 0x2c, 0x0b, 0x9b, 0x0e, 0xf3, 0x10, 0xfe, 0x15, + 0x8a, 0x1a, 0x9a, 0x1c, 0x57, 0x1d, 0x86, 0x1b, 0xfb, 0x19, 0x84, 0x18, 0x69, 0x16, 0x23, 0x15, + 0x7a, 0x14, 0x5b, 0x15, 0xb5, 0x16, 0xd4, 0x16, 0xd6, 0x16, 0x20, 0x15, 0xab, 0x13, 0xe5, 0x11, + 0x59, 0x0f, 0x9a, 0x0c, 0xae, 0x08, 0xa3, 0x05, 0x28, 0x04, 0x6e, 0x01, 0x5e, 0xff, 0x59, 0xfe, + 0x58, 0xfb, 0x8a, 0xf9, 0x9e, 0xf7, 0xc0, 0xf7, 0xd6, 0xf8, 0x5a, 0xf8, 0x9a, 0xf8, 0x53, 0xf9, + 0xa7, 0xfb, 0x1f, 0xfe, 0x73, 0xfe, 0x95, 0xfc, 0x21, 0xfc, 0xc0, 0xfb, 0xf0, 0xfd, 0xbd, 0xff, + 0xa7, 0xfe, 0x0a, 0xfb, 0x99, 0xf6, 0x2a, 0xf3, 0x43, 0xf1, 0xc9, 0xf0, 0x31, 0xf0, 0x3f, 0xed, + 0xc2, 0xea, 0xba, 0xe8, 0x3e, 0xe7, 0x3b, 0xe4, 0xc8, 0xe2, 0x04, 0xe3, 0x67, 0xe3, 0x9e, 0xe2, + 0x9b, 0xe4, 0xc5, 0xe6, 0x5b, 0xe7, 0x77, 0xea, 0x8a, 0xeb, 0xc6, 0xee, 0x03, 0xf0, 0xce, 0xed, + 0xcd, 0xeb, 0x45, 0xed, 0x94, 0xf2, 0xed, 0xf9, 0x52, 0xff, 0x0f, 0x02, 0x5e, 0x04, 0x39, 0x08, + 0x26, 0x0c, 0x08, 0x0d, 0x88, 0x0a, 0x16, 0x06, 0x62, 0x02, 0xc7, 0x00, 0x97, 0x01, 0xa4, 0x03, + 0xd3, 0x06, 0x07, 0x0a, 0x92, 0x0d, 0x13, 0x10, 0x86, 0x11, 0x18, 0x13, 0x9f, 0x11, 0x1f, 0x10, + 0xc4, 0x0e, 0x33, 0x0d, 0x6a, 0x0d, 0x43, 0x0d, 0x5c, 0x0c, 0x3e, 0x0c, 0x8d, 0x0a, 0x86, 0x09, + 0xc1, 0x07, 0xc5, 0x04, 0x63, 0x03, 0x18, 0x04, 0xfd, 0x03, 0xb0, 0x04, 0xfb, 0x04, 0x42, 0x05, + 0xde, 0x06, 0x8f, 0x06, 0x20, 0x07, 0xc8, 0x07, 0xc6, 0x05, 0x43, 0x04, 0x1f, 0x02, 0x94, 0x00, + 0xf2, 0xfc, 0xa8, 0xfa, 0x97, 0xf9, 0x9a, 0xf8, 0x55, 0xf8, 0xcc, 0xf5, 0x12, 0xf3, 0xc9, 0xee, + 0xd8, 0xe9, 0x0d, 0xe8, 0x1c, 0xe6, 0xf6, 0xe5, 0x8a, 0xe8, 0x77, 0xe8, 0x21, 0xe8, 0xda, 0xe7, + 0x90, 0xe8, 0x95, 0xea, 0x7d, 0xeb, 0xb7, 0xec, 0x84, 0xed, 0xc9, 0xef, 0x48, 0xf2, 0x32, 0xf4, + 0xf1, 0xf5, 0x9c, 0xf8, 0xd6, 0xff, 0x81, 0x07, 0x7e, 0x0f, 0xcb, 0x16, 0xcc, 0x1b, 0x9c, 0x1f, + 0xcb, 0x20, 0x40, 0x21, 0x6a, 0x1e, 0x47, 0x1c, 0x85, 0x1a, 0xf2, 0x19, 0xa7, 0x1b, 0x66, 0x1b, + 0x52, 0x1d, 0xca, 0x1f, 0xad, 0x20, 0xa5, 0x20, 0x40, 0x1e, 0xc7, 0x18, 0x9b, 0x12, 0xa9, 0x0c, + 0x34, 0x08, 0x5e, 0x05, 0x95, 0x03, 0x09, 0x02, 0x99, 0x00, 0xdb, 0xfc, 0x15, 0xfa, 0x23, 0xf9, + 0x50, 0xf7, 0x77, 0xf5, 0x27, 0xf3, 0x8b, 0xf1, 0x3d, 0xf1, 0x3b, 0xef, 0x7e, 0xee, 0x23, 0xef, + 0x11, 0xef, 0x03, 0xf0, 0x87, 0xf2, 0xba, 0xf2, 0x29, 0xf2, 0xf5, 0xf1, 0xd1, 0xf0, 0xc4, 0xf1, + 0x02, 0xf2, 0x4f, 0xf2, 0x0d, 0xf2, 0x45, 0xef, 0x03, 0xee, 0x26, 0xeb, 0x83, 0xe6, 0x26, 0xe2, + 0x4d, 0xe0, 0xa5, 0xe0, 0xe8, 0xe2, 0x13, 0xe6, 0xc0, 0xe8, 0xeb, 0xeb, 0x07, 0xf0, 0xff, 0xf2, + 0x74, 0xf7, 0xea, 0xfb, 0x12, 0xfe, 0xb8, 0xfe, 0x70, 0xff, 0x13, 0x05, 0xbe, 0x0b, 0xef, 0x0f, + 0xfb, 0x11, 0x03, 0x14, 0xca, 0x18, 0xb0, 0x1f, 0xa9, 0x25, 0x38, 0x29, 0xd6, 0x29, 0xe9, 0x28, + 0x73, 0x28, 0x72, 0x29, 0x3e, 0x2a, 0x07, 0x29, 0xd3, 0x28, 0x9e, 0x27, 0x19, 0x26, 0xcf, 0x25, + 0x3a, 0x26, 0xd5, 0x25, 0x7e, 0x25, 0xf7, 0x24, 0xe1, 0x20, 0xbd, 0x1c, 0xc2, 0x16, 0x0f, 0x12, + 0x79, 0x0f, 0xde, 0x0b, 0x0f, 0x09, 0x17, 0x07, 0x39, 0x06, 0xdd, 0x06, 0xb8, 0x06, 0x0b, 0x06, + 0x62, 0x05, 0xc2, 0x01, 0xf8, 0xfd, 0x9c, 0xfb, 0x1e, 0xf9, 0x4f, 0xf7, 0x5b, 0xf5, 0x0d, 0xf2, + 0x9d, 0xf0, 0x2a, 0xef, 0x18, 0xef, 0xf4, 0xee, 0x76, 0xec, 0xde, 0xea, 0xde, 0xea, 0xf2, 0xec, + 0xa5, 0xee, 0xb8, 0xef, 0x34, 0xee, 0xf3, 0xe9, 0x94, 0xe7, 0xd8, 0xe4, 0x6f, 0xe2, 0xa0, 0xe2, + 0x49, 0xe0, 0xa7, 0xde, 0xf0, 0xdd, 0xf8, 0xdd, 0x06, 0xe0, 0x0d, 0xe3, 0x51, 0xe4, 0x91, 0xe4, + 0xf6, 0xe4, 0x70, 0xe4, 0xdc, 0xe5, 0x06, 0xe8, 0x15, 0xeb, 0xe7, 0xef, 0xad, 0xf4, 0xaa, 0xf8, + 0x5d, 0xfb, 0x4a, 0xff, 0xbc, 0x03, 0xc0, 0x07, 0xb4, 0x0a, 0xde, 0x0a, 0xd1, 0x0a, 0xc8, 0x0a, + 0xd4, 0x0c, 0xc6, 0x10, 0x2c, 0x12, 0xc4, 0x12, 0x94, 0x12, 0x40, 0x12, 0x11, 0x12, 0x9a, 0x11, + 0x7b, 0x12, 0xbe, 0x12, 0xf9, 0x11, 0xd9, 0x0f, 0xff, 0x0d, 0xd7, 0x0a, 0x68, 0x07, 0x88, 0x03, + 0x8f, 0xfe, 0xe2, 0xfb, 0x9f, 0xf9, 0x69, 0xf9, 0x5f, 0xfa, 0xb7, 0xfa, 0x72, 0xfa, 0x8c, 0xfb, + 0xab, 0xfb, 0x46, 0xfc, 0x68, 0xfc, 0x5b, 0xfc, 0x3e, 0xfb, 0x16, 0xfb, 0x94, 0xfe, 0x5b, 0xfd, + 0xe0, 0xfd, 0x8f, 0xfb, 0x1a, 0xf9, 0x7f, 0xf7, 0xc9, 0xf4, 0xa3, 0xf4, 0x54, 0xf4, 0xc9, 0xf4, + 0xac, 0xf4, 0x36, 0xf2, 0xe9, 0xee, 0xaf, 0xec, 0xb2, 0xeb, 0x12, 0xe9, 0x6c, 0xe7, 0x37, 0xe6, + 0x66, 0xe7, 0xd9, 0xea, 0xb5, 0xed, 0xb2, 0xf2, 0x2c, 0xf5, 0x82, 0xf5, 0x96, 0xf4, 0x35, 0xf3, + 0xe0, 0xf4, 0xcf, 0xf8, 0xf2, 0xfd, 0xc1, 0x01, 0xf5, 0x04, 0xc3, 0x09, 0x8f, 0x0e, 0x3a, 0x11, + 0x8b, 0x0f, 0x70, 0x0d, 0xe0, 0x0c, 0x2b, 0x0c, 0x8d, 0x0d, 0x81, 0x0f, 0x02, 0x11, 0x5b, 0x12, + 0x43, 0x14, 0xf0, 0x14, 0x7f, 0x13, 0x70, 0x10, 0x71, 0x0c, 0xa6, 0x08, 0x52, 0x06, 0xa9, 0x04, + 0x2e, 0x04, 0x9a, 0x02, 0x3f, 0x01, 0xed, 0x00, 0xe6, 0xff, 0x43, 0x00, 0x77, 0xff, 0x35, 0xff, + 0x18, 0xff, 0x38, 0xff, 0x60, 0x01, 0x91, 0x04, 0x88, 0x06, 0x67, 0x06, 0xb1, 0x06, 0x2b, 0x06, + 0x5f, 0x06, 0xba, 0x07, 0x89, 0x08, 0x22, 0x08, 0xb4, 0x04, 0x30, 0xff, 0x4c, 0xfb, 0xad, 0xf9, + 0x33, 0xfa, 0x03, 0xfd, 0x2c, 0xff, 0xf6, 0x00, 0x89, 0x01, 0x64, 0xff, 0x63, 0xfc, 0x44, 0xfc, + 0x84, 0xfd, 0x2e, 0xff, 0x93, 0x00, 0x6c, 0x02, 0xed, 0x05, 0x96, 0x08, 0xba, 0x0a, 0x52, 0x0b, + 0x59, 0x0a, 0xab, 0x09, 0xf0, 0x08, 0x44, 0x09, 0xac, 0x0c, 0x1c, 0x11, 0x5a, 0x15, 0x53, 0x17, + 0x81, 0x17, 0x12, 0x17, 0x74, 0x15, 0x62, 0x12, 0x38, 0x0f, 0x84, 0x0d, 0xad, 0x0d, 0x67, 0x0d, + 0xfc, 0x0b, 0xf5, 0x09, 0xaf, 0x08, 0x86, 0x09, 0x33, 0x0b, 0xa4, 0x0b, 0xf9, 0x0a, 0xbf, 0x0a, + 0xf9, 0x0b, 0x0c, 0x0f, 0x0c, 0x0f, 0xc6, 0x0d, 0x0d, 0x0c, 0x7e, 0x08, 0xbf, 0x05, 0x84, 0x03, + 0xac, 0x02, 0xf1, 0x02, 0xb9, 0x02, 0xb7, 0xff, 0xcd, 0xfd, 0xd3, 0xfb, 0xc7, 0xfa, 0x38, 0xfb, + 0x02, 0xf9, 0xca, 0xf6, 0x46, 0xf4, 0x2a, 0xf3, 0x69, 0xf2, 0x08, 0xf3, 0x26, 0xf3, 0x74, 0xf2, + 0x14, 0xef, 0x6c, 0xe9, 0x58, 0xe5, 0x7a, 0xe0, 0x16, 0xdf, 0x42, 0xdf, 0x81, 0xdd, 0x3a, 0xdb, + 0x78, 0xd9, 0x8b, 0xd7, 0x9e, 0xd4, 0x7c, 0xd4, 0x92, 0xd5, 0x9d, 0xd8, 0x17, 0xdd, 0x41, 0xe2, + 0xdf, 0xe7, 0x00, 0xec, 0x6d, 0xef, 0x3f, 0xf0, 0x9c, 0xf1, 0x4b, 0xf3, 0x6d, 0xf7, 0x09, 0xfb, + 0x15, 0xfe, 0x85, 0x01, 0x40, 0x04, 0xe3, 0x06, 0x2c, 0x09, 0xc5, 0x0a, 0x95, 0x0b, 0xae, 0x0c, + 0xec, 0x0d, 0x46, 0x10, 0x15, 0x12, 0xe2, 0x12, 0xe1, 0x10, 0x2b, 0x0e, 0x76, 0x0e, 0x9f, 0x10, + 0x88, 0x13, 0xaf, 0x13, 0x1a, 0x13, 0x9b, 0x11, 0x45, 0x10, 0x44, 0x0e, 0x32, 0x09, 0x73, 0x06, + 0x19, 0x05, 0xf7, 0x04, 0x3d, 0x06, 0x2f, 0x08, 0xc3, 0x09, 0xab, 0x0a, 0xa4, 0x09, 0x13, 0x06, + 0x6e, 0x03, 0x45, 0x01, 0x36, 0x03, 0x65, 0x04, 0x90, 0x04, 0x1a, 0x04, 0x99, 0x03, 0x2f, 0x03, + 0xb3, 0x01, 0x1c, 0x02, 0x66, 0x02, 0xe3, 0x00, 0x56, 0xfc, 0x86, 0xf6, 0xf1, 0xf3, 0xc6, 0xf4, + 0x69, 0xf6, 0x8f, 0xf7, 0xa6, 0xf5, 0x16, 0xf1, 0xe1, 0xec, 0x6b, 0xe9, 0x50, 0xe6, 0xeb, 0xe5, + 0x19, 0xe5, 0xa7, 0xe6, 0xc1, 0xea, 0x43, 0xf0, 0x5e, 0xf5, 0x41, 0xf7, 0x97, 0xf8, 0xaf, 0xf9, + 0xe8, 0xfb, 0x86, 0x01, 0x22, 0x08, 0x9d, 0x0e, 0x58, 0x12, 0xf1, 0x15, 0x37, 0x18, 0x14, 0x1a, + 0xb1, 0x1b, 0x0d, 0x1c, 0xa9, 0x1a, 0x5a, 0x17, 0x33, 0x15, 0x83, 0x11, 0x29, 0x0e, 0x22, 0x09, + 0x34, 0x03, 0x0b, 0x02, 0x1e, 0x01, 0x76, 0x03, 0x65, 0x06, 0x97, 0x08, 0xea, 0x08, 0xd0, 0x06, + 0x7a, 0x04, 0x08, 0x00, 0xb1, 0xfd, 0x1b, 0xfc, 0x7d, 0xfc, 0x63, 0xfc, 0x0e, 0xfc, 0x29, 0xfe, + 0xfa, 0xfe, 0xff, 0x00, 0x42, 0x00, 0xb9, 0xfe, 0xcf, 0xfd, 0x2e, 0x00, 0xad, 0x02, 0x80, 0x04, + 0x9f, 0x05, 0x44, 0x04, 0x28, 0x04, 0x1e, 0x04, 0xc5, 0x04, 0x6d, 0x09, 0x63, 0x0b, 0xdc, 0x06, + 0x9e, 0x00, 0x31, 0xfa, 0x0e, 0xf9, 0xda, 0xf9, 0x2f, 0xfa, 0x0d, 0xf9, 0xa2, 0xf5, 0x39, 0xf3, + 0x30, 0xf3, 0xc5, 0xf3, 0xe1, 0xf4, 0x23, 0xf6, 0xc6, 0xf5, 0x7a, 0xf7, 0x9f, 0xfc, 0xfd, 0x01, + 0x9b, 0x05, 0x22, 0x06, 0xa0, 0x05, 0x47, 0x05, 0xa3, 0x08, 0xc3, 0x0b, 0x0a, 0x0f, 0xc6, 0x11, + 0x7f, 0x12, 0xd4, 0x12, 0x34, 0x13, 0x54, 0x14, 0x10, 0x16, 0xe8, 0x15, 0xd2, 0x12, 0xdf, 0x0e, + 0x04, 0x0c, 0x5a, 0x0a, 0xce, 0x08, 0xf4, 0x01, 0xda, 0xfd, 0x2a, 0xfd, 0x47, 0xfd, 0x9b, 0xfe, + 0xf2, 0xff, 0x59, 0x00, 0xfe, 0xfd, 0x4c, 0xfb, 0xb4, 0xf7, 0xd8, 0xf7, 0x67, 0xf9, 0xa7, 0xfa, + 0x1d, 0xfb, 0x04, 0xf7, 0xb5, 0xf6, 0x95, 0xf6, 0x9a, 0xf5, 0xde, 0xf3, 0xc0, 0xf0, 0x88, 0xee, + 0x80, 0xf1, 0x1b, 0xf4, 0xd4, 0xf5, 0x4b, 0xf6, 0xfb, 0xf3, 0xeb, 0xf0, 0x66, 0xf0, 0x30, 0xef, + 0x5d, 0xec, 0x10, 0xe9, 0x65, 0xe2, 0xd4, 0xe1, 0x88, 0xe1, 0xed, 0xe4, 0x8c, 0xe7, 0xa3, 0xe7, + 0x3e, 0xe7, 0x12, 0xe6, 0xa4, 0xe7, 0x05, 0xe8, 0x03, 0xeb, 0x7f, 0xec, 0x44, 0xed, 0xc1, 0xf0, + 0xe1, 0xf4, 0xe1, 0xfb, 0xc4, 0xfe, 0x27, 0xff, 0x5d, 0xfd, 0x87, 0xfd, 0x88, 0x00, 0x82, 0x06, + 0x41, 0x0b, 0x1a, 0x0f, 0x0e, 0x13, 0xfa, 0x15, 0xc8, 0x19, 0xc7, 0x1c, 0x0f, 0x20, 0x5d, 0x21, + 0xf9, 0x1e, 0x85, 0x1b, 0xfe, 0x18, 0x85, 0x17, 0x00, 0x15, 0x39, 0x13, 0xae, 0x0e, 0xb3, 0x0c, + 0x7e, 0x0c, 0x79, 0x0d, 0x39, 0x0d, 0x0f, 0x0c, 0xa2, 0x0a, 0x1b, 0x06, 0x4b, 0x04, 0xd5, 0x02, + 0xbf, 0x02, 0xcd, 0x03, 0xb8, 0x02, 0xf9, 0x01, 0xa6, 0x00, 0xf0, 0x00, 0x04, 0x02, 0x47, 0x02, + 0xac, 0x00, 0x01, 0x00, 0x4d, 0xff, 0x54, 0x01, 0xfc, 0x03, 0xc8, 0x03, 0x1b, 0x01, 0x1e, 0xfe, + 0x13, 0xff, 0x21, 0x03, 0x09, 0x04, 0x8c, 0x03, 0xd0, 0xfd, 0x78, 0xfa, 0x82, 0xf9, 0xa8, 0xfa, + 0x0f, 0xfb, 0xbf, 0xf7, 0xc2, 0xf3, 0x29, 0xed, 0xd8, 0xe9, 0x90, 0xe8, 0x9e, 0xea, 0x26, 0xec, + 0x08, 0xed, 0xd1, 0xee, 0x84, 0xef, 0x74, 0xf4, 0xbd, 0xf6, 0xff, 0xf7, 0x27, 0xf7, 0x7d, 0xf8, + 0xd4, 0xfd, 0x85, 0x04, 0xd2, 0x0b, 0xe6, 0x0e, 0x79, 0x10, 0x75, 0x0f, 0xe0, 0x0f, 0x6d, 0x10, + 0x70, 0x10, 0xa4, 0x11, 0x98, 0x10, 0x9a, 0x0d, 0xb2, 0x0a, 0x69, 0x07, 0xaa, 0x03, 0x0b, 0x00, + 0x25, 0xfb, 0x85, 0xf9, 0x30, 0xfb, 0xbc, 0xfd, 0x4c, 0x00, 0x16, 0x00, 0x2a, 0xfe, 0x4a, 0xfc, + 0xf6, 0xfa, 0x84, 0xf9, 0xb9, 0xf8, 0xb9, 0xf8, 0xc8, 0xf8, 0x5b, 0xf9, 0x3c, 0xf9, 0xf4, 0xfb, + 0x2d, 0xfe, 0x64, 0x00, 0x41, 0x03, 0xc5, 0x05, 0xb8, 0x08, 0x33, 0x0d, 0xec, 0x10, 0x39, 0x13, + 0xf7, 0x13, 0xbe, 0x10, 0x94, 0x0d, 0x7b, 0x0d, 0x77, 0x0b, 0x4b, 0x07, 0x4f, 0xff, 0x0e, 0xf7, + 0x03, 0xf5, 0x1a, 0xf5, 0xbc, 0xf6, 0x85, 0xf4, 0xe1, 0xf1, 0x36, 0xf0, 0x8b, 0xef, 0x88, 0xef, + 0x7d, 0xf0, 0x48, 0xf3, 0x04, 0xf3, 0x1f, 0xf4, 0xc2, 0xf5, 0x65, 0xf8, 0x27, 0xfd, 0xda, 0xff, + 0xf2, 0x01, 0x30, 0x02, 0x1a, 0x08, 0x8f, 0x0c, 0xb5, 0x10, 0x47, 0x12, 0x50, 0x12, 0x4b, 0x13, + 0xb8, 0x15, 0x5c, 0x1b, 0x78, 0x20, 0xad, 0x23, 0xdd, 0x21, 0x01, 0x1c, 0x83, 0x16, 0x08, 0x11, + 0xbe, 0x0c, 0xa8, 0x07, 0x67, 0x02, 0x33, 0x00, 0xbe, 0xff, 0x4c, 0x00, 0x17, 0x00, 0xa1, 0xff, + 0x54, 0xfd, 0x6e, 0xfa, 0xac, 0xf8, 0xf8, 0xf8, 0x51, 0xfb, 0x68, 0xfb, 0x5f, 0xf9, 0x3f, 0xf7, + 0x52, 0xf7, 0x4c, 0xf9, 0x66, 0xf9, 0xaa, 0xf9, 0x6d, 0xf8, 0xa7, 0xf6, 0xf1, 0xf5, 0x8e, 0xf4, + 0x6f, 0xf2, 0xad, 0xf0, 0x3c, 0xef, 0xf8, 0xeb, 0xb7, 0xe8, 0x28, 0xea, 0xcd, 0xeb, 0x2e, 0xf1, + 0x02, 0xec, 0xa0, 0xe1, 0xdb, 0xdc, 0xec, 0xdc, 0xf9, 0xe3, 0xe2, 0xea, 0xe7, 0xeb, 0xa4, 0xe5, + 0xc2, 0xe2, 0x58, 0xe2, 0xfb, 0xe5, 0xbe, 0xe9, 0xbf, 0xea, 0x61, 0xed, 0xeb, 0xee, 0x5c, 0xf5, + 0x70, 0xfd, 0xa3, 0x01, 0x1b, 0x01, 0x52, 0xfe, 0x59, 0xfe, 0xe4, 0x03, 0xbe, 0x0f, 0x15, 0x17, + 0x37, 0x1b, 0x77, 0x1a, 0x56, 0x19, 0x09, 0x1b, 0x69, 0x1e, 0xa7, 0x22, 0xa6, 0x21, 0x3a, 0x1e, + 0x68, 0x1a, 0x1e, 0x1a, 0x13, 0x19, 0xad, 0x18, 0x40, 0x15, 0xcf, 0x0f, 0xf4, 0x0e, 0x36, 0x0f, + 0xc2, 0x11, 0xfb, 0x12, 0xc8, 0x11, 0x7d, 0x0c, 0x66, 0x09, 0xf8, 0x09, 0xab, 0x09, 0x6c, 0x0a, + 0xca, 0x06, 0x51, 0x01, 0xe2, 0xfc, 0x22, 0xfc, 0xc2, 0xfe, 0x8a, 0x00, 0xac, 0xff, 0xa1, 0xfe, + 0x0c, 0xff, 0xc3, 0x01, 0x4c, 0x03, 0x1e, 0x03, 0xd2, 0x01, 0x3e, 0xff, 0x75, 0xfd, 0x8b, 0xff, + 0xfe, 0xfc, 0xa5, 0xf8, 0x94, 0xf1, 0xe8, 0xeb, 0xf0, 0xea, 0x6b, 0xea, 0x60, 0xef, 0x85, 0xef, + 0x58, 0xed, 0x0d, 0xe8, 0x15, 0xe6, 0x6a, 0xe7, 0x11, 0xeb, 0x1f, 0xee, 0x3e, 0xed, 0x08, 0xee, + 0x46, 0xef, 0xc9, 0xf4, 0xd2, 0xf8, 0x2c, 0xfa, 0x25, 0xfc, 0xa0, 0xfb, 0x20, 0x00, 0xbe, 0x04, + 0xc7, 0x0a, 0x5c, 0x0d, 0xb1, 0x0e, 0x6f, 0x0d, 0xed, 0x0c, 0x47, 0x10, 0x9e, 0x13, 0x78, 0x16, + 0xe7, 0x15, 0xab, 0x13, 0xef, 0x12, 0xc0, 0x11, 0x41, 0x11, 0xc4, 0x0b, 0x56, 0x05, 0x99, 0x01, + 0xeb, 0x00, 0x1e, 0x03, 0x56, 0x06, 0xc1, 0x06, 0x48, 0x02, 0x7a, 0xfe, 0x03, 0xfd, 0x1a, 0xfc, + 0xc7, 0xfb, 0xbe, 0xfb, 0x98, 0xf9, 0x6f, 0xf7, 0xd4, 0xf9, 0xd7, 0xfd, 0x5b, 0x03, 0xf8, 0x06, + 0x28, 0x06, 0xba, 0x04, 0xbc, 0x05, 0xe8, 0x07, 0xf5, 0x09, 0x1c, 0x0a, 0x62, 0x08, 0x18, 0x08, + 0x7b, 0x07, 0xe8, 0x07, 0x3d, 0x04, 0xab, 0xf9, 0x1a, 0xf1, 0x19, 0xeb, 0xbc, 0xeb, 0xa9, 0xef, + 0xeb, 0xf0, 0x19, 0xec, 0xb3, 0xe6, 0x86, 0xe4, 0x13, 0xe4, 0xe0, 0xe7, 0xf2, 0xeb, 0x16, 0xee, + 0x3b, 0xf1, 0x0e, 0xf3, 0x94, 0xf8, 0x28, 0xfd, 0x9d, 0x01, 0x97, 0x04, 0x57, 0x05, 0x75, 0x08, + 0xf1, 0x0f, 0xc1, 0x17, 0xa4, 0x1a, 0x4a, 0x1b, 0x63, 0x1a, 0xbf, 0x1c, 0xc5, 0x21, 0x84, 0x25, + 0xb9, 0x27, 0x43, 0x26, 0x8d, 0x21, 0x2b, 0x1b, 0x9d, 0x14, 0x7a, 0x10, 0x2b, 0x0b, 0x75, 0x03, + 0xfe, 0xfc, 0xa7, 0xfa, 0xe5, 0xfb, 0x10, 0xfd, 0x49, 0xfc, 0xb1, 0xf6, 0x98, 0xf1, 0x07, 0xf0, + 0x70, 0xf1, 0x7a, 0xf5, 0x25, 0xf7, 0xa6, 0xf4, 0x66, 0xf1, 0x90, 0xef, 0x38, 0xf1, 0xf7, 0xf3, + 0x1d, 0xf5, 0x9a, 0xf2, 0x90, 0xf0, 0x7c, 0xf0, 0xd1, 0xf2, 0x18, 0xf4, 0x69, 0xf4, 0xeb, 0xf3, + 0x37, 0xf1, 0x38, 0xf2, 0x76, 0xf1, 0x74, 0xf0, 0x8d, 0xed, 0xb9, 0xe4, 0xf9, 0xdf, 0x60, 0xe0, + 0xef, 0xe5, 0x13, 0xeb, 0x17, 0xea, 0xa5, 0xe5, 0xdd, 0xe1, 0xd5, 0xe1, 0xc3, 0xe3, 0x9e, 0xe7, + 0xa1, 0xe8, 0x43, 0xeb, 0xf7, 0xee, 0x80, 0xf4, 0x8c, 0xfc, 0xf1, 0x01, 0x97, 0x06, 0x11, 0x0a, + 0x96, 0x0e, 0xf4, 0x15, 0xd0, 0x1d, 0x2e, 0x23, 0x33, 0x24, 0xd9, 0x23, 0xa7, 0x21, 0x9c, 0x22, + 0x95, 0x24, 0x02, 0x27, 0x2d, 0x27, 0xca, 0x23, 0x34, 0x1f, 0x2e, 0x1b, 0xe2, 0x17, 0xc2, 0x16, + 0x21, 0x13, 0x7a, 0x0d, 0xa4, 0x0a, 0x34, 0x0a, 0xc6, 0x09, 0xc7, 0x08, 0x73, 0x06, 0xb4, 0x02, + 0x1f, 0x00, 0xd9, 0xff, 0x65, 0x01, 0x4d, 0x03, 0x0f, 0x02, 0x90, 0xfd, 0x87, 0xf8, 0x7a, 0xf6, + 0x45, 0xf8, 0x3e, 0xfc, 0xfc, 0xfe, 0x40, 0xff, 0xf9, 0x00, 0x63, 0x03, 0xd3, 0x08, 0x3f, 0x0a, + 0xf1, 0x07, 0xfe, 0x04, 0xa9, 0x01, 0x13, 0x02, 0x9f, 0x04, 0xbb, 0x04, 0xbf, 0xf9, 0xcd, 0xf1, + 0xd3, 0xeb, 0x0e, 0xed, 0x1b, 0xf4, 0x9b, 0xf5, 0x46, 0xf0, 0x7f, 0xe7, 0x55, 0xe5, 0x05, 0xe8, + 0xae, 0xee, 0x0a, 0xf3, 0xcc, 0xf2, 0x83, 0xf0, 0x35, 0xef, 0x3d, 0xf7, 0xe1, 0xfb, 0x1d, 0xfd, + 0x19, 0xfa, 0xd5, 0xf4, 0x76, 0xf6, 0x4a, 0xfd, 0x63, 0x04, 0x9d, 0x05, 0xdb, 0x03, 0xaf, 0x02, + 0x67, 0x05, 0x73, 0x0b, 0x31, 0x11, 0x73, 0x14, 0x01, 0x13, 0x65, 0x11, 0x18, 0x11, 0xb1, 0x11, + 0x3e, 0x14, 0x8c, 0x0f, 0x76, 0x08, 0xd3, 0x06, 0x95, 0x06, 0x6c, 0x07, 0xb1, 0x07, 0x82, 0x03, + 0x95, 0xfe, 0xc8, 0xfc, 0x05, 0xff, 0xa9, 0x00, 0xc2, 0x00, 0xe8, 0xfd, 0xa7, 0xf9, 0xc4, 0xf6, + 0x5b, 0xf8, 0x30, 0xfd, 0xde, 0xff, 0xf6, 0x01, 0x98, 0x02, 0x10, 0x03, 0x53, 0x04, 0x82, 0x03, + 0xa2, 0x02, 0x91, 0x02, 0x06, 0x01, 0xd5, 0x00, 0x6c, 0x01, 0x84, 0x03, 0x8f, 0x00, 0xaa, 0xf8, + 0x72, 0xf0, 0x54, 0xed, 0x4d, 0xf0, 0x84, 0xf4, 0xd2, 0xf5, 0x9c, 0xef, 0x07, 0xeb, 0xc8, 0xe9, + 0x6d, 0xe9, 0x37, 0xeb, 0x47, 0xec, 0x25, 0xed, 0xdd, 0xec, 0xce, 0xee, 0xb1, 0xf4, 0xad, 0xf9, + 0x08, 0xfe, 0x57, 0x00, 0x83, 0x02, 0x4a, 0x06, 0xb0, 0x0d, 0xcc, 0x14, 0xaa, 0x18, 0xcb, 0x19, + 0x22, 0x19, 0x2e, 0x1a, 0x05, 0x1d, 0xa2, 0x1f, 0x53, 0x20, 0x5f, 0x1d, 0x82, 0x19, 0x53, 0x17, + 0x1d, 0x17, 0xc3, 0x17, 0x3e, 0x13, 0x60, 0x0c, 0x76, 0x07, 0xc9, 0x03, 0xcd, 0x03, 0x7c, 0x03, + 0x11, 0x03, 0x9c, 0x00, 0x25, 0xfd, 0x55, 0xf9, 0x48, 0xf8, 0x8e, 0xf7, 0xb6, 0xf6, 0x2e, 0xf5, + 0x8c, 0xf2, 0x1d, 0xf4, 0xb4, 0xf5, 0x6a, 0xf6, 0xc1, 0xf4, 0x94, 0xf1, 0x65, 0xf2, 0x83, 0xf5, + 0x0c, 0xf7, 0x13, 0xf8, 0xe5, 0xf7, 0x15, 0xf7, 0x1b, 0xf6, 0xd3, 0xf7, 0xe2, 0xf5, 0x61, 0xef, + 0x0b, 0xe6, 0x97, 0xdf, 0x77, 0xe0, 0x78, 0xe3, 0xc2, 0xe6, 0x72, 0xe2, 0xc7, 0xdb, 0xb2, 0xd7, + 0x7d, 0xd9, 0xa5, 0xdc, 0x5b, 0xe0, 0x03, 0xe2, 0x91, 0xe1, 0x2e, 0xe5, 0xb8, 0xec, 0xb4, 0xf7, + 0x57, 0x00, 0x9f, 0x04, 0xce, 0x07, 0x39, 0x0b, 0xfe, 0x11, 0x21, 0x1a, 0xf9, 0x1f, 0xff, 0x1f, + 0x7f, 0x21, 0xdb, 0x24, 0xb4, 0x29, 0x5e, 0x2d, 0x11, 0x2f, 0x2f, 0x2e, 0x59, 0x29, 0x27, 0x25, + 0x0b, 0x22, 0x12, 0x20, 0xfb, 0x1d, 0xaf, 0x17, 0x06, 0x12, 0x27, 0x0f, 0xee, 0x0f, 0xeb, 0x0f, + 0xa9, 0x0e, 0x5e, 0x0c, 0xcd, 0x09, 0x68, 0x0a, 0x67, 0x0d, 0xd0, 0x0e, 0x11, 0x0b, 0xc5, 0x06, + 0xa4, 0x03, 0x6e, 0x02, 0x25, 0x05, 0x78, 0x06, 0xcf, 0x06, 0xa9, 0x03, 0x76, 0x03, 0xeb, 0x05, + 0x56, 0x09, 0x12, 0x0b, 0xd2, 0x09, 0x7c, 0x06, 0xfd, 0x01, 0xe1, 0xfe, 0xf2, 0xfc, 0x54, 0xf6, + 0x1b, 0xed, 0x33, 0xe1, 0xbf, 0xda, 0x2e, 0xda, 0x57, 0xdf, 0xfe, 0xe1, 0x80, 0xdb, 0xcf, 0xd4, + 0xa1, 0xcf, 0x89, 0xd0, 0x31, 0xd4, 0x2d, 0xd8, 0x52, 0xda, 0x7f, 0xd9, 0xdd, 0xdc, 0x7a, 0xe3, + 0x0f, 0xec, 0xef, 0xf0, 0x43, 0xf2, 0x0d, 0xf3, 0x7d, 0xf4, 0xda, 0xfb, 0xa5, 0x03, 0xaf, 0x08, + 0x36, 0x09, 0x87, 0x08, 0x4c, 0x0a, 0xdd, 0x0e, 0x0c, 0x14, 0xeb, 0x16, 0x71, 0x16, 0xb9, 0x13, + 0x01, 0x13, 0x72, 0x14, 0x71, 0x16, 0x7e, 0x15, 0xeb, 0x0e, 0x55, 0x0d, 0x34, 0x0e, 0x3c, 0x0f, + 0x2d, 0x0f, 0x28, 0x0c, 0xd0, 0x06, 0xc8, 0x04, 0x97, 0x06, 0xf2, 0x07, 0x8d, 0x07, 0xd9, 0x05, + 0xc7, 0x04, 0xb6, 0x04, 0xf6, 0x08, 0x72, 0x0f, 0x38, 0x10, 0x58, 0x0e, 0x00, 0x0b, 0x30, 0x0a, + 0xc6, 0x0c, 0xbc, 0x0f, 0xe8, 0x0f, 0x67, 0x0c, 0x12, 0x09, 0x44, 0x07, 0xb1, 0x05, 0x42, 0x02, + 0x72, 0xfa, 0xfd, 0xf2, 0x56, 0xed, 0xaa, 0xef, 0xb5, 0xf1, 0x44, 0xf3, 0x05, 0xef, 0x6e, 0xe5, + 0x4e, 0xdf, 0x27, 0xde, 0xdb, 0xe0, 0x44, 0xe4, 0x78, 0xe6, 0x92, 0xe6, 0xe8, 0xe7, 0xc6, 0xea, + 0x98, 0xec, 0x7f, 0xef, 0x8c, 0xf0, 0xa5, 0xf2, 0x54, 0xf6, 0x7b, 0xfe, 0xdb, 0x07, 0x4e, 0x0d, + 0x9c, 0x0e, 0x5e, 0x0f, 0xed, 0x11, 0x45, 0x17, 0xb8, 0x1c, 0x02, 0x1f, 0x13, 0x1f, 0x3c, 0x1e, + 0x8d, 0x1c, 0xb3, 0x1a, 0x2d, 0x19, 0xfe, 0x17, 0x0e, 0x14, 0x31, 0x0e, 0xc6, 0x08, 0xb0, 0x06, + 0x6e, 0x08, 0x5d, 0x09, 0xe5, 0x09, 0x05, 0x07, 0xae, 0x04, 0x90, 0x06, 0xb8, 0x07, 0x75, 0x05, + 0xa9, 0xff, 0x3f, 0xf9, 0x38, 0xf4, 0x0d, 0xf4, 0x66, 0xf5, 0x4c, 0xf4, 0xf3, 0xf1, 0xaa, 0xef, + 0xf4, 0xf0, 0x46, 0xf5, 0x21, 0xfb, 0xbf, 0xff, 0xc0, 0xfe, 0x3c, 0xfc, 0x46, 0xfd, 0xbd, 0xff, + 0x90, 0xfc, 0x29, 0xf4, 0x3d, 0xec, 0xb6, 0xe6, 0x12, 0xea, 0xb1, 0xee, 0xf5, 0xef, 0x5d, 0xea, + 0x2b, 0xe0, 0x08, 0xdb, 0xb2, 0xdc, 0x39, 0xe2, 0xae, 0xe5, 0x7f, 0xe4, 0x97, 0xe0, 0x29, 0xe2, + 0xe5, 0xe8, 0x41, 0xef, 0xab, 0xf5, 0x74, 0xf6, 0xc1, 0xf8, 0x69, 0xff, 0x0b, 0x0a, 0xb4, 0x12, + 0xa0, 0x15, 0x1b, 0x14, 0x3f, 0x12, 0xf7, 0x13, 0xe6, 0x18, 0x27, 0x1f, 0xe1, 0x21, 0xd5, 0x1f, + 0x47, 0x1c, 0xb0, 0x19, 0xa5, 0x19, 0x15, 0x1a, 0xbb, 0x16, 0x05, 0x10, 0xee, 0x0b, 0x39, 0x0b, + 0xe9, 0x0b, 0x70, 0x0b, 0xc0, 0x07, 0x37, 0x03, 0x61, 0x01, 0xa1, 0x03, 0x72, 0x05, 0xc1, 0x04, + 0xd7, 0x02, 0x79, 0x00, 0xd0, 0xff, 0x47, 0x02, 0x55, 0x07, 0xb0, 0x09, 0x91, 0x0a, 0x40, 0x09, + 0x8a, 0x0a, 0xe5, 0x0d, 0xf2, 0x10, 0x3b, 0x12, 0x52, 0x12, 0xdb, 0x12, 0xec, 0x0e, 0x7f, 0x0c, + 0x0a, 0x0c, 0x18, 0x06, 0x19, 0xfb, 0xf0, 0xf4, 0xfc, 0xf2, 0x40, 0xf5, 0xd7, 0xf8, 0xf4, 0xf3, + 0x7a, 0xeb, 0x55, 0xe3, 0x2f, 0xe1, 0xc3, 0xe2, 0xc5, 0xe4, 0x29, 0xe7, 0xef, 0xe6, 0xcb, 0xe4, + 0x4e, 0xe7, 0x20, 0xed, 0x1c, 0xf1, 0x2f, 0xf4, 0xb1, 0xf4, 0x58, 0xf4, 0x6a, 0xf9, 0xae, 0x00, + 0x81, 0x04, 0x47, 0x04, 0x6b, 0x02, 0xeb, 0x02, 0x07, 0x08, 0x1c, 0x0f, 0x92, 0x13, 0xa6, 0x13, + 0xc7, 0x0f, 0x9e, 0x0b, 0x4c, 0x08, 0xbb, 0x06, 0x00, 0x06, 0xb4, 0xff, 0xb2, 0xf9, 0x91, 0xf6, + 0x83, 0xf7, 0xa3, 0xf9, 0xd4, 0xf9, 0xd7, 0xf7, 0x85, 0xf4, 0x2c, 0xf4, 0x62, 0xf7, 0xba, 0xfc, + 0x7b, 0x00, 0xa3, 0xff, 0x36, 0xfd, 0xfe, 0xfd, 0xc3, 0x02, 0x7f, 0x07, 0x94, 0x0b, 0x10, 0x09, + 0x7c, 0x07, 0x94, 0x0a, 0x72, 0x10, 0xfc, 0x14, 0xb9, 0x18, 0xc5, 0x17, 0x35, 0x13, 0x81, 0x15, + 0x22, 0x10, 0x24, 0x12, 0x20, 0x08, 0xec, 0xf8, 0x32, 0xf3, 0xcd, 0xee, 0xae, 0xf5, 0x71, 0xf9, + 0x34, 0xf7, 0xc1, 0xed, 0xcd, 0xe8, 0x32, 0xe9, 0x4c, 0xf0, 0x53, 0xf7, 0xe0, 0xf4, 0x5f, 0xf5, + 0x47, 0xf1, 0xc9, 0xf6, 0xd9, 0xff, 0x9f, 0x02, 0x03, 0x05, 0xef, 0x00, 0x32, 0x03, 0xc1, 0x09, + 0x63, 0x13, 0xea, 0x17, 0xed, 0x16, 0x6f, 0x15, 0x26, 0x14, 0xb1, 0x17, 0x1b, 0x1a, 0x69, 0x1b, + 0x14, 0x17, 0x1a, 0x0f, 0x9c, 0x09, 0x48, 0x06, 0x20, 0x05, 0x13, 0x02, 0x88, 0xfc, 0xa8, 0xf3, + 0x46, 0xf4, 0x62, 0xf5, 0xc6, 0xf4, 0x33, 0xf3, 0x5b, 0xec, 0xf4, 0xe8, 0x2b, 0xea, 0x10, 0xf0, + 0x0b, 0xf3, 0xbb, 0xf2, 0xc7, 0xef, 0x2f, 0xed, 0x96, 0xee, 0x40, 0xf1, 0x82, 0xf5, 0xd8, 0xf4, + 0xb7, 0xf2, 0xc0, 0xf3, 0x23, 0xf7, 0xce, 0xfb, 0xa1, 0xff, 0xfd, 0x00, 0x6c, 0xfe, 0xa2, 0xfd, + 0x39, 0x00, 0x32, 0xfc, 0x51, 0xf8, 0x2f, 0xf1, 0xe5, 0xee, 0xff, 0xf2, 0x2b, 0xf9, 0x6f, 0xfc, + 0x01, 0xf7, 0xeb, 0xf0, 0x04, 0xec, 0x55, 0xec, 0x31, 0xee, 0xee, 0xef, 0xb3, 0xf0, 0xc7, 0xee, + 0xbc, 0xf3, 0x34, 0xf9, 0x0d, 0xff, 0x98, 0x04, 0x17, 0x07, 0xae, 0x0a, 0xcc, 0x0f, 0x43, 0x17, + 0x50, 0x1c, 0x16, 0x1f, 0x8d, 0x1d, 0xd9, 0x1c, 0x84, 0x1e, 0xf5, 0x20, 0x92, 0x24, 0x97, 0x24, + 0xcb, 0x21, 0x71, 0x1e, 0x00, 0x1b, 0xce, 0x18, 0xcd, 0x16, 0x39, 0x12, 0xa0, 0x0c, 0x8a, 0x08, + 0x64, 0x06, 0x77, 0x07, 0x0f, 0x05, 0xa2, 0x00, 0xc6, 0xfc, 0x0d, 0xfb, 0xf2, 0xfb, 0x48, 0xfe, + 0x45, 0xfe, 0xcb, 0xfb, 0xfb, 0xf8, 0x78, 0xf5, 0x72, 0xf4, 0x02, 0xf5, 0x80, 0xf5, 0x4c, 0xf5, + 0x75, 0xf4, 0x50, 0xf6, 0xbe, 0xfa, 0xe7, 0x00, 0xfc, 0x03, 0xef, 0x08, 0x80, 0x07, 0x77, 0x05, + 0xd7, 0x05, 0x0d, 0x05, 0x06, 0x00, 0x96, 0xf7, 0xb5, 0xf3, 0xa2, 0xf1, 0xcd, 0xf3, 0x77, 0xf2, + 0x78, 0xef, 0x93, 0xea, 0xd9, 0xe6, 0x85, 0xe7, 0x71, 0xe8, 0xf5, 0xee, 0x69, 0xf2, 0x5c, 0xf2, + 0x0a, 0xf2, 0x29, 0xf5, 0x1c, 0xfb, 0x9b, 0xfe, 0xaf, 0x00, 0x3d, 0x00, 0xd0, 0x00, 0x2f, 0x04, + 0x22, 0x09, 0xaa, 0x0c, 0xff, 0x0e, 0xb2, 0x11, 0xc9, 0x13, 0x95, 0x18, 0x1b, 0x1d, 0x6f, 0x1f, + 0x5a, 0x1e, 0x7a, 0x1a, 0x99, 0x17, 0x81, 0x14, 0xf3, 0x13, 0x2c, 0x11, 0x85, 0x0c, 0xcb, 0x06, + 0x7c, 0xfd, 0x1c, 0xf8, 0x9c, 0xf7, 0x3c, 0xf8, 0x5b, 0xf6, 0x99, 0xf4, 0x45, 0xf0, 0x1b, 0xee, + 0x0a, 0xf0, 0xe2, 0xef, 0xb6, 0xed, 0xaa, 0xea, 0x0e, 0xeb, 0x2d, 0xec, 0x01, 0xef, 0x54, 0xf3, + 0x2d, 0xf4, 0x3c, 0xf6, 0x89, 0xf7, 0x01, 0xfa, 0x95, 0xfc, 0xdc, 0xff, 0x26, 0xfe, 0x61, 0xfd, + 0x31, 0xfe, 0x94, 0xff, 0x35, 0x01, 0x7f, 0xf4, 0xd2, 0xed, 0xf6, 0xea, 0x22, 0xef, 0x0b, 0xf6, + 0x8e, 0xf6, 0xc5, 0xf1, 0x5c, 0xe9, 0xb0, 0xe6, 0xbf, 0xe8, 0xd2, 0xef, 0x6e, 0xf1, 0xf5, 0xed, + 0xb2, 0xeb, 0x0a, 0xed, 0xa7, 0xf8, 0x80, 0xff, 0xe3, 0x03, 0xbb, 0x06, 0x8c, 0x09, 0x96, 0x12, + 0xf0, 0x1b, 0x14, 0x25, 0x71, 0x28, 0xbe, 0x28, 0xf0, 0x27, 0x6a, 0x29, 0x8f, 0x2d, 0xee, 0x30, + 0x1f, 0x32, 0x00, 0x2e, 0xe1, 0x2a, 0x16, 0x28, 0x2b, 0x27, 0xc8, 0x23, 0x22, 0x1c, 0x37, 0x16, + 0xab, 0x10, 0x9e, 0x0e, 0x6b, 0x0b, 0xad, 0x06, 0x5a, 0x00, 0x01, 0xfb, 0xb4, 0xf8, 0xb3, 0xf8, + 0xe4, 0xf8, 0xfe, 0xf4, 0xb7, 0xf1, 0x69, 0xed, 0x98, 0xed, 0x86, 0xee, 0xe1, 0xec, 0xd7, 0xeb, + 0xf6, 0xe8, 0x7c, 0xe8, 0x53, 0xea, 0xb2, 0xec, 0x82, 0xec, 0x71, 0xec, 0x49, 0xed, 0xea, 0xec, + 0xb3, 0xf0, 0x08, 0xf2, 0x99, 0xea, 0x3f, 0xe1, 0x22, 0xd9, 0xe0, 0xd9, 0x12, 0xde, 0x99, 0xe2, + 0xf5, 0xe1, 0x90, 0xdb, 0x92, 0xd7, 0x32, 0xd9, 0x14, 0xdd, 0x33, 0xe1, 0xfc, 0xe5, 0x5a, 0xe6, + 0x17, 0xe8, 0x68, 0xef, 0x41, 0xf5, 0x1b, 0xfd, 0x71, 0x02, 0x6d, 0x06, 0x7c, 0x0c, 0x88, 0x13, + 0xbf, 0x1a, 0x15, 0x20, 0x6c, 0x21, 0x4b, 0x22, 0x5a, 0x25, 0x3c, 0x2a, 0x74, 0x31, 0xad, 0x36, + 0xc6, 0x37, 0x0a, 0x36, 0x33, 0x32, 0x4e, 0x2e, 0x4d, 0x2b, 0x6b, 0x26, 0x58, 0x20, 0xc9, 0x1b, + 0x5c, 0x19, 0x26, 0x15, 0x75, 0x11, 0xa2, 0x0d, 0x29, 0x0a, 0xd8, 0x08, 0x04, 0x0a, 0x77, 0x0b, + 0x95, 0x0a, 0xf3, 0x07, 0xa2, 0x02, 0x89, 0xfe, 0x4f, 0xfd, 0xab, 0xfd, 0x06, 0xfd, 0x4b, 0xfa, + 0x64, 0xf7, 0x2e, 0xf3, 0xec, 0xf1, 0xf5, 0xf4, 0x8e, 0xf5, 0xa2, 0xf5, 0x2a, 0xf6, 0xce, 0xf3, + 0xe5, 0xf2, 0x4d, 0xf3, 0x49, 0xf0, 0x26, 0xe2, 0x5c, 0xda, 0xae, 0xd6, 0xa9, 0xd9, 0x8e, 0xde, + 0x1f, 0xdf, 0x7c, 0xda, 0xe0, 0xd3, 0x21, 0xd3, 0x9d, 0xd5, 0xcf, 0xd8, 0x5b, 0xda, 0x50, 0xda, + 0x69, 0xd9, 0xfc, 0xdc, 0xe3, 0xe6, 0x2c, 0xed, 0x28, 0xf2, 0x1e, 0xf4, 0x29, 0xf6, 0x09, 0xfd, + 0xb9, 0x05, 0xee, 0x0a, 0xcb, 0x0c, 0x9a, 0x0d, 0xb9, 0x10, 0xa2, 0x16, 0x67, 0x1b, 0x7c, 0x1d, + 0xaa, 0x1d, 0x15, 0x1c, 0x45, 0x1b, 0x8c, 0x1a, 0xc2, 0x19, 0x6c, 0x1a, 0x9b, 0x18, 0xa9, 0x16, + 0xa5, 0x17, 0x33, 0x15, 0xf9, 0x12, 0x70, 0x12, 0x87, 0x0f, 0x3b, 0x0d, 0x27, 0x0d, 0xb5, 0x0b, + 0x06, 0x09, 0xda, 0x06, 0xec, 0x03, 0x9b, 0x02, 0x20, 0x03, 0x9e, 0x04, 0x50, 0x05, 0xf4, 0x04, + 0x75, 0x06, 0xc4, 0x06, 0x48, 0x06, 0x5c, 0x06, 0x71, 0x05, 0x09, 0x05, 0xb5, 0x04, 0x42, 0x06, + 0xf1, 0x05, 0xd3, 0x02, 0x0a, 0x00, 0x54, 0xf5, 0x5e, 0xea, 0xa9, 0xe6, 0x21, 0xe8, 0xf6, 0xeb, + 0x0c, 0xee, 0x8b, 0xea, 0x31, 0xe3, 0x83, 0xdf, 0x6b, 0xdf, 0xd3, 0xe2, 0x4d, 0xe3, 0x1a, 0xe2, + 0xc3, 0xe1, 0xf6, 0xe1, 0x45, 0xe8, 0xed, 0xee, 0x8c, 0xf1, 0x9e, 0xf3, 0xfb, 0xf4, 0xbf, 0xf8, + 0x11, 0x00, 0x45, 0x08, 0x9e, 0x0d, 0x80, 0x11, 0xe7, 0x13, 0xdb, 0x18, 0xd0, 0x20, 0xc7, 0x27, + 0x7f, 0x2d, 0xef, 0x2e, 0x1d, 0x2d, 0xe4, 0x2b, 0xc8, 0x2b, 0x6a, 0x2b, 0xa9, 0x28, 0xfd, 0x1e, + 0xba, 0x19, 0xfc, 0x18, 0x24, 0x16, 0xd6, 0x12, 0x66, 0x0d, 0x61, 0x07, 0x48, 0x05, 0x25, 0x08, + 0x3b, 0x0a, 0x4f, 0x0a, 0x41, 0x07, 0xf4, 0x02, 0x47, 0x00, 0x0f, 0x00, 0xc3, 0x00, 0xf2, 0xfe, + 0x38, 0xfb, 0x86, 0xf6, 0x96, 0xf3, 0xb0, 0xf5, 0x6a, 0xf8, 0x80, 0xf9, 0x12, 0xfb, 0x1a, 0xfb, + 0xe1, 0xfc, 0x4e, 0xfe, 0xfb, 0x00, 0x3f, 0x01, 0xcf, 0xf4, 0xc0, 0xe9, 0xa4, 0xe5, 0xe2, 0xe6, + 0x46, 0xeb, 0x72, 0xeb, 0xe7, 0xe2, 0x07, 0xd9, 0x33, 0xd6, 0x43, 0xd7, 0x6b, 0xda, 0x5d, 0xd9, + 0xc4, 0xd6, 0x96, 0xd4, 0x12, 0xd4, 0x69, 0xdb, 0xaa, 0xe1, 0x6d, 0xe4, 0x70, 0xe5, 0x27, 0xe7, + 0x0a, 0xef, 0x96, 0xfa, 0xe2, 0x02, 0x7a, 0x05, 0x0e, 0x06, 0xa3, 0x07, 0x02, 0x0e, 0x71, 0x14, + 0xb6, 0x18, 0x57, 0x1b, 0xfc, 0x19, 0x24, 0x19, 0xee, 0x18, 0x21, 0x1a, 0x30, 0x1a, 0x02, 0x16, + 0xb3, 0x13, 0xce, 0x10, 0x0f, 0x10, 0xd9, 0x10, 0xbb, 0x0e, 0x63, 0x0b, 0xf3, 0x08, 0x12, 0x08, + 0xb6, 0x08, 0xa3, 0x09, 0xae, 0x07, 0x95, 0x03, 0xa8, 0xff, 0xc4, 0xff, 0xf6, 0x02, 0x72, 0x04, + 0xe6, 0x06, 0x0c, 0x07, 0xd0, 0x05, 0x88, 0x09, 0x71, 0x0c, 0x18, 0x0d, 0x99, 0x0f, 0x39, 0x11, + 0xb1, 0x10, 0x4b, 0x0e, 0xbc, 0x0c, 0x35, 0x0a, 0x20, 0xfd, 0x20, 0xf4, 0x5e, 0xf2, 0x3e, 0xf5, + 0x49, 0xfa, 0x17, 0xfa, 0x80, 0xf1, 0x2b, 0xe9, 0xdd, 0xe5, 0xc4, 0xe5, 0x96, 0xe9, 0x5e, 0xea, + 0x9d, 0xe6, 0xbf, 0xe2, 0x4a, 0xe2, 0xea, 0xe7, 0x4d, 0xeb, 0xfd, 0xec, 0xaf, 0xed, 0x09, 0xee, + 0x2a, 0xf4, 0x3d, 0xfc, 0xcd, 0xff, 0xc0, 0xff, 0x7d, 0xfd, 0x2f, 0xfd, 0x9d, 0x01, 0xd6, 0x06, + 0x02, 0x0b, 0xa2, 0x0c, 0x3d, 0x0b, 0x31, 0x0a, 0x6c, 0x09, 0x96, 0x08, 0x3e, 0x08, 0x9f, 0x02, + 0x45, 0xfc, 0xce, 0xfb, 0x92, 0xfc, 0xf8, 0xfd, 0xed, 0xfd, 0xaa, 0xfa, 0x36, 0xfa, 0xf3, 0xfd, + 0xfe, 0x03, 0x9d, 0x06, 0x29, 0x05, 0x98, 0x02, 0x6b, 0x02, 0xff, 0x05, 0xec, 0x0b, 0x81, 0x0e, + 0x74, 0x0d, 0x74, 0x0d, 0x0b, 0x0e, 0xe9, 0x10, 0x0d, 0x15, 0x75, 0x16, 0xa1, 0x15, 0xf4, 0x14, + 0xcf, 0x15, 0x5f, 0x17, 0x45, 0x17, 0x0f, 0x17, 0xd2, 0x0e, 0xe3, 0x00, 0xd3, 0xfc, 0xae, 0xfd, + 0x38, 0x00, 0xd8, 0xff, 0x93, 0xfb, 0xfa, 0xf3, 0xce, 0xf0, 0xae, 0xf3, 0x87, 0xf7, 0xdf, 0xf8, + 0x86, 0xf6, 0x8a, 0xf4, 0x8e, 0xf4, 0x16, 0xfa, 0x06, 0x00, 0x97, 0x00, 0x6d, 0x01, 0x62, 0x01, + 0x3a, 0x03, 0x40, 0x08, 0xdd, 0x0c, 0xa2, 0x0e, 0x66, 0x0d, 0x78, 0x0d, 0xb1, 0x0f, 0x78, 0x13, + 0x4a, 0x16, 0x71, 0x15, 0x8a, 0x13, 0x01, 0x11, 0x89, 0x0f, 0x32, 0x0d, 0xd6, 0x09, 0x62, 0x04, + 0x70, 0xfd, 0xbc, 0xf9, 0x0e, 0xf7, 0xa3, 0xf8, 0xdb, 0xf6, 0x69, 0xf3, 0x56, 0xf0, 0x8d, 0xee, + 0x75, 0xef, 0x93, 0xf0, 0x67, 0xf1, 0x2d, 0xf0, 0x32, 0xee, 0x9d, 0xee, 0x74, 0xf2, 0x09, 0xf5, + 0x0d, 0xf7, 0x29, 0xf7, 0x02, 0xf3, 0xc4, 0xf2, 0xa2, 0xf6, 0xbd, 0xf9, 0x19, 0xfa, 0x43, 0xfb, + 0xef, 0xfa, 0x4a, 0xfd, 0x65, 0xfd, 0x58, 0xff, 0x36, 0xf6, 0x99, 0xe9, 0xd4, 0xe9, 0x98, 0xeb, + 0x33, 0xf2, 0x46, 0xf6, 0x55, 0xf4, 0x8f, 0xec, 0x3d, 0xe8, 0x37, 0xe9, 0x1c, 0xec, 0x39, 0xef, + 0x28, 0xee, 0x84, 0xeb, 0x60, 0xea, 0x79, 0xee, 0x2e, 0xf3, 0x74, 0xf3, 0xb2, 0xf6, 0x7f, 0xf9, + 0xcc, 0xff, 0x61, 0x09, 0x2e, 0x11, 0x2c, 0x14, 0x3f, 0x14, 0xed, 0x15, 0xc2, 0x19, 0xc1, 0x1f, + 0x47, 0x24, 0x1b, 0x25, 0x5f, 0x24, 0x5b, 0x22, 0xbd, 0x20, 0x97, 0x1c, 0xb7, 0x1a, 0x68, 0x13, + 0x5d, 0x0d, 0xda, 0x0b, 0x04, 0x08, 0x3f, 0x07, 0xd9, 0x05, 0x55, 0x02, 0xc2, 0xfc, 0x06, 0xfa, + 0xbe, 0xf9, 0xa1, 0xfa, 0xbd, 0xfa, 0x2c, 0xf9, 0x85, 0xf5, 0x83, 0xf2, 0x4d, 0xf5, 0xed, 0xf4, + 0x5e, 0xf4, 0xe9, 0xf5, 0x82, 0xf4, 0x95, 0xf6, 0x78, 0xfa, 0x55, 0xfd, 0x18, 0x01, 0xf9, 0x06, + 0x12, 0x0b, 0x72, 0x0f, 0x86, 0x10, 0x0f, 0x13, 0xb0, 0x0a, 0xd1, 0xff, 0x68, 0xfd, 0x54, 0xfe, + 0x02, 0x04, 0x6c, 0x07, 0xb4, 0x01, 0x13, 0xf8, 0xed, 0xf2, 0x1c, 0xf2, 0x81, 0xf5, 0x5a, 0xf9, + 0x40, 0xf7, 0xd5, 0xf3, 0xfc, 0xf2, 0x7b, 0xf7, 0xc5, 0xfb, 0x73, 0xfd, 0x10, 0xff, 0x88, 0xfe, + 0xde, 0x01, 0x51, 0x08, 0xb4, 0x0b, 0x62, 0x0c, 0xc5, 0x0a, 0x11, 0x0a, 0xa5, 0x0c, 0xd9, 0x12, + 0x52, 0x17, 0x25, 0x19, 0xf8, 0x17, 0x19, 0x16, 0x33, 0x14, 0xe3, 0x12, 0x36, 0x12, 0xd3, 0x0b, + 0xeb, 0x05, 0x94, 0x03, 0xa1, 0x03, 0xa2, 0x01, 0xcc, 0xfd, 0xb3, 0xf7, 0x3b, 0xf2, 0xfa, 0xf1, + 0x59, 0xf4, 0xa3, 0xf5, 0x15, 0xf3, 0x9c, 0xee, 0x8f, 0xea, 0x61, 0xe9, 0x00, 0xed, 0x8e, 0xee, + 0x0c, 0xef, 0xe1, 0xee, 0x53, 0xef, 0x4c, 0xf2, 0xda, 0xf5, 0x7c, 0xf8, 0xf2, 0xf8, 0xef, 0xf9, + 0x45, 0xfa, 0x30, 0xfe, 0xd9, 0xff, 0x65, 0x01, 0x29, 0xfd, 0x1c, 0xef, 0xfa, 0xe9, 0x0d, 0xeb, + 0x42, 0xf2, 0x82, 0xf8, 0x93, 0xf7, 0x8a, 0xf1, 0x1c, 0xef, 0xaa, 0xf1, 0x84, 0xf6, 0x3d, 0xfa, + 0xd5, 0xf9, 0x91, 0xf9, 0xeb, 0xfa, 0x7b, 0x00, 0x57, 0x07, 0x55, 0x08, 0x24, 0x0a, 0x03, 0x0b, + 0xc2, 0x0e, 0x82, 0x17, 0x64, 0x1f, 0xc5, 0x22, 0xef, 0x22, 0xb5, 0x22, 0x29, 0x25, 0xe0, 0x28, + 0xcb, 0x2a, 0x86, 0x29, 0x77, 0x26, 0x4a, 0x22, 0x44, 0x1f, 0xfd, 0x1b, 0xbf, 0x17, 0xfd, 0x0f, + 0x6d, 0x07, 0x2f, 0x02, 0x0f, 0x00, 0x6c, 0xfd, 0xce, 0xf8, 0xe4, 0xf1, 0xdd, 0xeb, 0xf5, 0xea, + 0xc9, 0xec, 0x8a, 0xef, 0xcb, 0xef, 0x17, 0xed, 0xfb, 0xe9, 0xef, 0xe8, 0xe9, 0xea, 0x19, 0xec, + 0x25, 0xed, 0xea, 0xed, 0xe4, 0xeb, 0x59, 0xed, 0x98, 0xf0, 0x1f, 0xf0, 0x7d, 0xed, 0xfe, 0xeb, + 0xdc, 0xeb, 0x9f, 0xee, 0xf3, 0xf1, 0x78, 0xf2, 0xf4, 0xea, 0xaf, 0xde, 0x9b, 0xdb, 0x54, 0xdd, + 0xe6, 0xe0, 0xdc, 0xe5, 0x25, 0xe3, 0x4e, 0xde, 0x2b, 0xdd, 0x13, 0xe0, 0x81, 0xe5, 0xf1, 0xeb, + 0x10, 0xf0, 0xcd, 0xf2, 0x6b, 0xf7, 0xfc, 0xfe, 0xa1, 0x05, 0xfe, 0x08, 0x98, 0x0c, 0x04, 0x11, + 0x02, 0x18, 0x64, 0x23, 0x54, 0x2b, 0x53, 0x2e, 0x69, 0x2e, 0x1f, 0x2f, 0x7b, 0x32, 0x54, 0x37, + 0x9f, 0x3a, 0xdc, 0x3b, 0x7a, 0x3b, 0xf0, 0x39, 0x8f, 0x36, 0xec, 0x32, 0x92, 0x2d, 0x95, 0x25, + 0x3c, 0x1e, 0x6a, 0x16, 0xbd, 0x13, 0xa9, 0x0f, 0x8f, 0x09, 0x91, 0x02, 0x6a, 0xfd, 0x67, 0xfb, + 0x3c, 0xfc, 0xdb, 0xfd, 0xb4, 0xfb, 0x54, 0xf8, 0xfc, 0xf2, 0x1a, 0xf1, 0x4e, 0xf2, 0x1f, 0xf3, + 0xc5, 0xf3, 0x11, 0xf1, 0x1a, 0xef, 0xc1, 0xf1, 0xf6, 0xf2, 0xe6, 0xf1, 0x12, 0xf2, 0xe2, 0xf0, + 0x8e, 0xee, 0xd9, 0xf0, 0x17, 0xf2, 0x97, 0xee, 0x61, 0xe8, 0x99, 0xe0, 0x3b, 0xde, 0xad, 0xe0, + 0xc4, 0xe5, 0x99, 0xe5, 0x80, 0xe0, 0x0c, 0xdc, 0x2a, 0xda, 0x81, 0xdd, 0xd2, 0xe2, 0x79, 0xe6, + 0x72, 0xe5, 0xd2, 0xe4, 0xa7, 0xe8, 0x86, 0xed, 0xa6, 0xf1, 0x33, 0xf4, 0x20, 0xf7, 0x61, 0xfc, + 0x15, 0x06, 0x0c, 0x10, 0x2b, 0x14, 0x78, 0x15, 0xcd, 0x15, 0x52, 0x18, 0xf8, 0x1c, 0x74, 0x22, + 0x60, 0x25, 0x5d, 0x25, 0xb7, 0x25, 0xb6, 0x24, 0x2f, 0x23, 0x58, 0x22, 0x62, 0x20, 0xd9, 0x1a, + 0xef, 0x16, 0x7d, 0x16, 0x4d, 0x11, 0xcb, 0x0d, 0x1a, 0x0c, 0x13, 0x09, 0xff, 0x08, 0x3c, 0x09, + 0xb6, 0x07, 0xd6, 0x01, 0x30, 0xfd, 0x2b, 0xf9, 0x2f, 0xf5, 0x7e, 0xf3, 0xf1, 0xf2, 0x04, 0xf0, + 0xe1, 0xec, 0x6a, 0xee, 0xbb, 0xee, 0x3a, 0xf0, 0xdc, 0xee, 0x07, 0xee, 0x73, 0xef, 0x35, 0xf1, + 0x3c, 0xf6, 0x74, 0xf9, 0xf2, 0xf6, 0xd8, 0xf1, 0x17, 0xec, 0xa3, 0xe6, 0x54, 0xe9, 0xc5, 0xea, + 0x8e, 0xea, 0xc1, 0xe7, 0x43, 0xe3, 0xf8, 0xe2, 0x7a, 0xe5, 0x6e, 0xe7, 0x12, 0xea, 0x85, 0xea, + 0x1e, 0xeb, 0xdc, 0xee, 0xbf, 0xf2, 0xc3, 0xf5, 0x43, 0xf7, 0x93, 0xf7, 0x5a, 0xfd, 0xd1, 0x02, + 0x6f, 0x07, 0xcb, 0x0b, 0x45, 0x0d, 0x74, 0x0e, 0xd4, 0x11, 0x3f, 0x15, 0x20, 0x1a, 0xbb, 0x1e, + 0x21, 0x22, 0x42, 0x25, 0xa4, 0x27, 0xa8, 0x28, 0xf9, 0x28, 0xa9, 0x28, 0x86, 0x26, 0x93, 0x22, + 0x35, 0x20, 0xad, 0x1f, 0x1a, 0x1e, 0xfa, 0x19, 0x29, 0x15, 0x4b, 0x12, 0xab, 0x11, 0xd8, 0x11, + 0x3c, 0x12, 0x52, 0x0f, 0xf6, 0x0a, 0x71, 0x08, 0x9a, 0x07, 0xc5, 0x07, 0xcc, 0x08, 0xa1, 0x08, + 0xc9, 0x05, 0xbf, 0x01, 0xcb, 0x01, 0x89, 0x01, 0x63, 0xfe, 0x1c, 0xfc, 0xd3, 0xf8, 0x68, 0xf4, + 0xf2, 0xf2, 0x52, 0xf2, 0x90, 0xec, 0xa1, 0xe5, 0x9f, 0xdc, 0xa1, 0xd8, 0x51, 0xd9, 0x63, 0xdb, + 0x82, 0xdc, 0x74, 0xd7, 0x2b, 0xd4, 0x8d, 0xd3, 0x7c, 0xd5, 0xc9, 0xd8, 0xf1, 0xdb, 0x35, 0xdc, + 0xfb, 0xdc, 0x9e, 0xe0, 0xf5, 0xe3, 0xc5, 0xe8, 0xbe, 0xea, 0x15, 0xee, 0xfb, 0xf2, 0x1f, 0xf8, + 0xa3, 0x00, 0x18, 0x06, 0x81, 0x09, 0x2a, 0x0c, 0x41, 0x0e, 0x96, 0x12, 0x99, 0x18, 0x44, 0x1d, + 0x2e, 0x1f, 0x74, 0x20, 0x18, 0x20, 0x46, 0x1f, 0x31, 0x1d, 0xb2, 0x1a, 0x5e, 0x15, 0xc9, 0x11, + 0x55, 0x10, 0xa7, 0x0c, 0x99, 0x0a, 0x66, 0x07, 0xc7, 0x03, 0xa8, 0x02, 0x91, 0x03, 0x87, 0x04, + 0xe0, 0x05, 0x5c, 0x06, 0x38, 0x05, 0x9a, 0x04, 0xed, 0x04, 0xd1, 0x07, 0x2e, 0x09, 0xfa, 0x09, + 0xcd, 0x09, 0xcb, 0x08, 0x7e, 0x0c, 0xd6, 0x0c, 0xfa, 0x0b, 0x6f, 0x0d, 0x78, 0x0d, 0x21, 0x0d, + 0x1d, 0x11, 0xf2, 0x0d, 0x6b, 0x05, 0x20, 0xfb, 0x27, 0xf1, 0x48, 0xf0, 0x9c, 0xee, 0x19, 0xee, + 0x52, 0xe9, 0xa2, 0xe1, 0x72, 0xdd, 0x9e, 0xdc, 0xd1, 0xdb, 0x0b, 0xdd, 0x71, 0xde, 0x6b, 0xdd, + 0xa6, 0xe1, 0x94, 0xe6, 0x13, 0xeb, 0xa2, 0xed, 0x7d, 0xed, 0x0c, 0xf1, 0x78, 0xf4, 0xa8, 0xfb, + 0x8c, 0x01, 0x42, 0x04, 0xda, 0x05, 0xe5, 0x07, 0x5b, 0x0a, 0x04, 0x10, 0xf4, 0x14, 0x96, 0x15, + 0x09, 0x17, 0x40, 0x17, 0x5c, 0x16, 0xe7, 0x13, 0x8e, 0x10, 0x0d, 0x0c, 0x80, 0x07, 0xab, 0x05, + 0x1e, 0x02, 0x9e, 0xff, 0x62, 0xfd, 0x1d, 0xf9, 0x57, 0xf5, 0x4c, 0xf5, 0x7b, 0xf5, 0xbe, 0xf7, + 0x01, 0xfb, 0xc7, 0xfa, 0x61, 0xfb, 0x9e, 0xfc, 0x0f, 0xff, 0x8c, 0x01, 0xbf, 0x02, 0x88, 0x02, + 0x97, 0x01, 0x3b, 0x05, 0x26, 0x09, 0x51, 0x0a, 0xb6, 0x0b, 0x1c, 0x0e, 0xe0, 0x0d, 0x01, 0x13, + 0xe3, 0x14, 0xf3, 0x0f, 0xfe, 0x08, 0x38, 0x00, 0xc8, 0xfe, 0xc8, 0x00, 0xd0, 0x04, 0x4c, 0x04, + 0x46, 0xfe, 0x23, 0xf7, 0xf0, 0xf4, 0x59, 0xf4, 0xb0, 0xf5, 0x95, 0xf7, 0x6c, 0xf3, 0x4b, 0xf3, + 0x23, 0xf6, 0x0e, 0xf9, 0xef, 0xfc, 0xc9, 0xfb, 0x10, 0xfc, 0xdf, 0xfd, 0x22, 0x03, 0xdd, 0x09, + 0xdf, 0x0d, 0x5f, 0x0e, 0x56, 0x0e, 0xc6, 0x0e, 0x68, 0x11, 0x7d, 0x16, 0xd7, 0x17, 0xae, 0x18, + 0xf0, 0x19, 0xf4, 0x18, 0x52, 0x18, 0x8f, 0x16, 0x5f, 0x13, 0x97, 0x0e, 0x50, 0x0d, 0xbb, 0x0c, + 0x6d, 0x0b, 0xc6, 0x0a, 0xe0, 0x07, 0x40, 0x02, 0xa3, 0xfe, 0xd2, 0xfd, 0x9e, 0xfd, 0xdb, 0xfd, + 0x70, 0xfb, 0xa7, 0xf8, 0xcf, 0xf6, 0x75, 0xf6, 0x37, 0xf7, 0x1f, 0xf5, 0xcd, 0xf1, 0x7c, 0xef, + 0xad, 0xf1, 0x6a, 0xf3, 0x09, 0xf3, 0xf4, 0xf3, 0xf9, 0xf3, 0x33, 0xf3, 0xec, 0xf6, 0x9e, 0xf8, + 0x29, 0xf2, 0xe7, 0xec, 0x8d, 0xe5, 0x68, 0xe4, 0x5c, 0xe8, 0x29, 0xec, 0xcd, 0xeb, 0x0b, 0xe8, + 0x1f, 0xe5, 0xf1, 0xe4, 0xe5, 0xe7, 0x8b, 0xeb, 0x28, 0xef, 0xca, 0xef, 0x96, 0xf3, 0xa1, 0xfb, + 0x4e, 0x00, 0x10, 0x04, 0xf3, 0x01, 0xee, 0x00, 0x14, 0x03, 0xa1, 0x07, 0xd2, 0x0c, 0xb8, 0x0d, + 0x25, 0x0b, 0x9b, 0x08, 0x56, 0x09, 0xbd, 0x0a, 0xf1, 0x0d, 0x0c, 0x0f, 0x0c, 0x10, 0xb2, 0x12, + 0xee, 0x13, 0x71, 0x15, 0x81, 0x14, 0x8b, 0x10, 0x1a, 0x0b, 0x93, 0x09, 0x81, 0x09, 0xa9, 0x09, + 0xf3, 0x07, 0xc8, 0x00, 0x45, 0xfa, 0x34, 0xf8, 0xf7, 0xf9, 0xf8, 0xfb, 0xa8, 0xfc, 0xbf, 0xfb, + 0x8f, 0xf9, 0x48, 0xfb, 0x21, 0xfe, 0x9c, 0xff, 0xfe, 0xfd, 0x63, 0xfc, 0x81, 0xfa, 0xe5, 0xfd, + 0x74, 0x00, 0xe0, 0xfc, 0xd4, 0xfa, 0xc9, 0xf8, 0x51, 0xf8, 0xf6, 0xfb, 0xf2, 0xfd, 0x20, 0xf7, + 0xcc, 0xf1, 0x71, 0xe9, 0x21, 0xe8, 0x14, 0xed, 0xe0, 0xf0, 0x02, 0xf3, 0xd8, 0xee, 0xcc, 0xeb, + 0x46, 0xed, 0xaf, 0xf2, 0xea, 0xf5, 0x61, 0xf7, 0x59, 0xf6, 0x1c, 0xf9, 0xf9, 0x02, 0xe8, 0x08, + 0xcf, 0x0e, 0x55, 0x0f, 0x21, 0x0e, 0x0f, 0x12, 0xd0, 0x17, 0x32, 0x1e, 0x68, 0x21, 0x42, 0x22, + 0x8b, 0x22, 0xc5, 0x25, 0x03, 0x29, 0x6a, 0x2b, 0x92, 0x2a, 0x11, 0x28, 0xed, 0x27, 0x63, 0x26, + 0x97, 0x24, 0x30, 0x21, 0x8a, 0x19, 0x57, 0x11, 0xb3, 0x0b, 0xf3, 0x06, 0xee, 0x02, 0x5b, 0xfd, + 0x89, 0xf6, 0x15, 0xf0, 0x08, 0xed, 0xf8, 0xec, 0xcb, 0xec, 0x96, 0xea, 0x85, 0xe7, 0x84, 0xe5, + 0x53, 0xe6, 0xea, 0xe8, 0x85, 0xe9, 0xd0, 0xe9, 0x17, 0xe9, 0xe8, 0xe7, 0x25, 0xed, 0xed, 0xf0, + 0x48, 0xf0, 0x75, 0xef, 0x37, 0xee, 0x13, 0xee, 0x68, 0xf2, 0x06, 0xf7, 0x2d, 0xf4, 0x4e, 0xf0, + 0x60, 0xe7, 0x24, 0xe6, 0x62, 0xe9, 0xce, 0xec, 0x46, 0xed, 0xdf, 0xe6, 0x8a, 0xe2, 0x9c, 0xe2, + 0x2f, 0xe6, 0x04, 0xe9, 0xed, 0xea, 0x0f, 0xe9, 0xc2, 0xea, 0x4d, 0xf3, 0x16, 0xfa, 0x14, 0x02, + 0x89, 0x04, 0x71, 0x05, 0x7e, 0x09, 0x79, 0x10, 0x70, 0x19, 0x65, 0x20, 0x57, 0x24, 0xb2, 0x26, + 0x50, 0x2b, 0x1b, 0x2e, 0x3d, 0x32, 0xd9, 0x33, 0x04, 0x33, 0x19, 0x34, 0xea, 0x34, 0x5f, 0x36, + 0x60, 0x37, 0xc0, 0x33, 0xf8, 0x2b, 0xe4, 0x26, 0x17, 0x24, 0xbd, 0x1f, 0xd1, 0x1a, 0x85, 0x13, + 0x07, 0x0a, 0x0c, 0x03, 0x6b, 0xff, 0x77, 0xfe, 0x45, 0xfa, 0x7e, 0xf4, 0xa4, 0xef, 0x56, 0xec, + 0xec, 0xea, 0xcb, 0xeb, 0x9e, 0xea, 0xbd, 0xe7, 0xf9, 0xe4, 0x2e, 0xe6, 0x6f, 0xe7, 0x85, 0xe5, + 0xd3, 0xe5, 0xce, 0xe4, 0xd6, 0xe3, 0x2b, 0xe7, 0x49, 0xe8, 0xf6, 0xe2, 0x0a, 0xde, 0xe1, 0xd7, + 0xb4, 0xd7, 0x85, 0xda, 0xd4, 0xdd, 0x43, 0xdc, 0xdc, 0xd6, 0xca, 0xd1, 0x09, 0xd2, 0x18, 0xd4, + 0xba, 0xd7, 0xcf, 0xda, 0x6f, 0xdb, 0x5e, 0xdf, 0xa2, 0xe5, 0x0a, 0xeb, 0xd3, 0xef, 0x44, 0xf2, + 0x51, 0xf4, 0x6d, 0xf9, 0x41, 0x01, 0x2d, 0x09, 0x5f, 0x11, 0xfc, 0x14, 0xcc, 0x18, 0xb4, 0x1c, + 0x58, 0x20, 0x17, 0x26, 0x50, 0x28, 0x4c, 0x29, 0x4c, 0x2b, 0x31, 0x2c, 0x0a, 0x2e, 0x9a, 0x2f, + 0x71, 0x2d, 0xbc, 0x2b, 0xbb, 0x2a, 0x9b, 0x2a, 0xbe, 0x2a, 0x6a, 0x28, 0xad, 0x23, 0xbb, 0x1e, + 0x95, 0x1b, 0xd6, 0x1a, 0xf2, 0x19, 0xbe, 0x15, 0x70, 0x11, 0xb7, 0x0c, 0x12, 0x09, 0x34, 0x06, + 0x91, 0x04, 0xf2, 0x01, 0xc4, 0xfc, 0x5b, 0xfa, 0xe5, 0xf9, 0xf3, 0xf7, 0x65, 0xf5, 0x9b, 0xf2, + 0xf5, 0xee, 0x7c, 0xec, 0x41, 0xef, 0xc5, 0xea, 0xca, 0xe4, 0xed, 0xda, 0xf9, 0xd4, 0xa9, 0xd5, + 0xd4, 0xd8, 0x01, 0xdc, 0x1f, 0xd8, 0xa8, 0xd2, 0x6e, 0xcf, 0x67, 0xd2, 0x91, 0xd6, 0xdb, 0xdc, + 0xf7, 0xe0, 0xe5, 0xe3, 0x94, 0xeb, 0xdb, 0xf1, 0x54, 0xf7, 0x6a, 0xfa, 0x6e, 0xfc, 0x2e, 0x00, + 0xc6, 0x05, 0x12, 0x0e, 0xfc, 0x12, 0x7b, 0x15, 0xca, 0x15, 0x08, 0x17, 0x02, 0x18, 0xe6, 0x1a, + 0xd6, 0x1d, 0x85, 0x1d, 0x26, 0x1d, 0x79, 0x1d, 0xfc, 0x1d, 0x14, 0x20, 0xf1, 0x1d, 0xab, 0x19, + 0xe0, 0x19, 0x67, 0x18, 0x7f, 0x17, 0xff, 0x17, 0x87, 0x12, 0xcb, 0x0b, 0xc3, 0x0a, 0xbd, 0x0a, + 0x33, 0x0c, 0x23, 0x0c, 0x9d, 0x09, 0x02, 0x06, 0xa1, 0x02, 0x8e, 0x03, 0x3c, 0x05, 0xbd, 0x04, + 0x7c, 0x04, 0xcd, 0x02, 0xba, 0x03, 0x0c, 0x04, 0x94, 0x01, 0x56, 0xff, 0x91, 0xfc, 0xc0, 0xf8, + 0x1b, 0xf8, 0xf3, 0xf5, 0xfa, 0xec, 0x32, 0xe4, 0x2f, 0xdb, 0xed, 0xd9, 0x08, 0xdc, 0x94, 0xde, + 0x5f, 0xdc, 0xa9, 0xd5, 0x3c, 0xd2, 0x0e, 0xd4, 0xd1, 0xd7, 0x01, 0xda, 0x0f, 0xdc, 0x40, 0xdc, + 0x93, 0xdf, 0x7e, 0xe7, 0xf5, 0xec, 0x53, 0xef, 0x49, 0xee, 0xe2, 0xee, 0x22, 0xf3, 0x35, 0xfb, + 0xad, 0x03, 0x05, 0x08, 0xcf, 0x08, 0x47, 0x0a, 0x53, 0x0e, 0x41, 0x13, 0x74, 0x19, 0x73, 0x1c, + 0xde, 0x1d, 0xf0, 0x1e, 0x6b, 0x1f, 0xb7, 0x20, 0x7d, 0x20, 0x45, 0x1c, 0xd7, 0x19, 0x04, 0x1c, + 0xdc, 0x1d, 0xd5, 0x1e, 0x65, 0x1c, 0xd8, 0x15, 0xdf, 0x11, 0xf2, 0x11, 0x83, 0x15, 0x94, 0x17, + 0xd3, 0x14, 0x8a, 0x10, 0x97, 0x0d, 0xbf, 0x0d, 0x82, 0x0f, 0x5e, 0x11, 0x5e, 0x10, 0x9b, 0x0d, + 0x0e, 0x0d, 0xbf, 0x0e, 0xad, 0x0c, 0x89, 0x09, 0xec, 0x06, 0xb4, 0x02, 0xd4, 0x02, 0x37, 0x04, + 0xc0, 0xfd, 0x8a, 0xf6, 0x08, 0xed, 0x9b, 0xea, 0xfd, 0xec, 0xc7, 0xf0, 0x44, 0xf1, 0xbf, 0xea, + 0xef, 0xe1, 0x17, 0xde, 0x0f, 0xde, 0xf2, 0xdd, 0xd1, 0xde, 0x34, 0xdb, 0x15, 0xdb, 0x20, 0xe0, + 0xe2, 0xe3, 0xd4, 0xe6, 0xe6, 0xe4, 0x70, 0xe3, 0x71, 0xe5, 0x8a, 0xea, 0xfd, 0xf1, 0xd0, 0xf6, + 0x86, 0xf7, 0xeb, 0xf6, 0x71, 0xf8, 0x7c, 0xfa, 0x01, 0x00, 0x7f, 0x02, 0xda, 0x03, 0x2e, 0x06, + 0x98, 0x08, 0x57, 0x0c, 0x4b, 0x0f, 0x53, 0x0d, 0x54, 0x0c, 0x8c, 0x0b, 0x51, 0x0b, 0x1e, 0x11, + 0x0d, 0x14, 0xff, 0x11, 0x60, 0x11, 0x39, 0x11, 0xe7, 0x11, 0xc5, 0x14, 0x15, 0x15, 0x25, 0x13, + 0x29, 0x10, 0xe6, 0x0d, 0x5d, 0x0e, 0xc6, 0x0d, 0xee, 0x0d, 0x6e, 0x0c, 0x13, 0x0b, 0x97, 0x0c, + 0x2c, 0x0a, 0x45, 0x07, 0xb4, 0x04, 0xa7, 0x02, 0x38, 0x04, 0x63, 0x06, 0xc7, 0x02, 0x53, 0xfd, + 0x31, 0xf4, 0xfd, 0xf0, 0x0f, 0xf2, 0x3d, 0xf4, 0x2c, 0xf5, 0xdd, 0xef, 0x72, 0xe8, 0x23, 0xe6, + 0x98, 0xe7, 0x80, 0xe9, 0xe8, 0xec, 0x0d, 0xed, 0xf6, 0xee, 0xb4, 0xf5, 0x81, 0xfb, 0x6b, 0xff, + 0x88, 0xfe, 0x39, 0xfd, 0x64, 0xfd, 0xcc, 0x00, 0x65, 0x06, 0xa3, 0x09, 0x62, 0x09, 0xaa, 0x07, + 0x5e, 0x07, 0xea, 0x08, 0xc5, 0x0d, 0x7d, 0x0e, 0x1b, 0x0d, 0xc7, 0x0c, 0x97, 0x0b, 0xd0, 0x0c, + 0x23, 0x0c, 0x96, 0x07, 0x47, 0x04, 0x7c, 0x03, 0x7d, 0x03, 0xdd, 0x05, 0x65, 0x05, 0xae, 0xff, + 0xd5, 0xfc, 0x43, 0xfe, 0x8f, 0x02, 0xd7, 0x05, 0x42, 0x05, 0x48, 0x01, 0x22, 0xfd, 0xf5, 0xfc, + 0x0b, 0xfe, 0x22, 0xfe, 0x31, 0xfc, 0xc1, 0xf9, 0xff, 0xfb, 0xfe, 0xfd, 0x64, 0xff, 0xf1, 0xfe, + 0xe7, 0xfc, 0xde, 0xfa, 0x09, 0xfc, 0x92, 0xfd, 0xf4, 0xf8, 0xe8, 0xf3, 0x3e, 0xeb, 0x5b, 0xea, + 0x32, 0xeb, 0xf6, 0xec, 0x25, 0xec, 0x08, 0xe7, 0xa7, 0xe2, 0x58, 0xe1, 0xd6, 0xe3, 0x0f, 0xe7, + 0x99, 0xea, 0x45, 0xeb, 0x35, 0xef, 0xbd, 0xf6, 0x0f, 0xfd, 0x7a, 0x02, 0xdc, 0x02, 0x2b, 0x03, + 0xcb, 0x06, 0xb6, 0x0d, 0xbd, 0x15, 0x43, 0x1a, 0x30, 0x1c, 0xe4, 0x1c, 0xf6, 0x1e, 0x16, 0x22, + 0x3b, 0x25, 0x2d, 0x25, 0xce, 0x22, 0xbb, 0x21, 0xa3, 0x1f, 0x04, 0x20, 0x6d, 0x1f, 0xc4, 0x17, + 0x8d, 0x13, 0x39, 0x11, 0x12, 0x11, 0x28, 0x13, 0x75, 0x13, 0x3a, 0x0c, 0x20, 0x06, 0x83, 0x04, + 0x68, 0x05, 0x18, 0x07, 0x19, 0x05, 0x6b, 0x02, 0x36, 0xfe, 0x8e, 0xfc, 0x17, 0xfe, 0x46, 0xfd, + 0x2a, 0xfb, 0xf7, 0xf8, 0x74, 0xfb, 0x38, 0xfd, 0xbb, 0xfe, 0x8b, 0xfc, 0xf7, 0xf8, 0x3d, 0xf7, + 0xcb, 0xf8, 0x2a, 0xf9, 0x86, 0xf4, 0xd9, 0xeb, 0x6f, 0xe2, 0xd4, 0xe1, 0x84, 0xe3, 0x04, 0xe6, + 0x2a, 0xe5, 0x15, 0xdd, 0x54, 0xd6, 0x39, 0xd5, 0xda, 0xd8, 0xc4, 0xdd, 0xf5, 0xe0, 0x44, 0xe2, + 0x11, 0xe4, 0x72, 0xea, 0x41, 0xf2, 0x27, 0xf8, 0x4b, 0xf8, 0x85, 0xf8, 0x4b, 0xfb, 0x48, 0x02, + 0xc9, 0x0a, 0xae, 0x0d, 0x99, 0x0d, 0x97, 0x0d, 0x83, 0x0e, 0x12, 0x12, 0xbc, 0x15, 0x87, 0x17, + 0xa6, 0x16, 0xf6, 0x15, 0x37, 0x16, 0xee, 0x17, 0xeb, 0x15, 0x62, 0x14, 0x58, 0x14, 0x7d, 0x12, + 0x8b, 0x16, 0x7c, 0x18, 0x54, 0x15, 0x73, 0x0f, 0xb5, 0x0a, 0xa3, 0x08, 0x0d, 0x0a, 0x0e, 0x0c, + 0x81, 0x0b, 0x93, 0x09, 0x47, 0x07, 0xbb, 0x08, 0xbe, 0x09, 0x46, 0x0a, 0xb4, 0x08, 0x9c, 0x05, + 0xd6, 0x07, 0x79, 0x06, 0x9f, 0x03, 0x79, 0x00, 0x70, 0xfa, 0xe8, 0xf6, 0xe6, 0xf5, 0x5e, 0xef, + 0x72, 0xe6, 0x14, 0xdc, 0xbd, 0xd7, 0x8b, 0xd9, 0x2d, 0xdb, 0x97, 0xd9, 0x36, 0xd5, 0x06, 0xce, + 0xd9, 0xcb, 0xbe, 0xcf, 0x60, 0xd3, 0x55, 0xd7, 0xc7, 0xd8, 0x32, 0xd9, 0x1c, 0xe0, 0x4b, 0xe8, + 0xa1, 0xef, 0x28, 0xf3, 0xc8, 0xf3, 0x21, 0xf7, 0x9b, 0xfd, 0xa3, 0x07, 0xb1, 0x10, 0xd0, 0x14, + 0xfc, 0x15, 0x9a, 0x17, 0x4d, 0x1b, 0xa2, 0x21, 0xb5, 0x25, 0x4e, 0x25, 0x11, 0x26, 0xec, 0x25, + 0x99, 0x27, 0xb6, 0x27, 0x52, 0x23, 0xda, 0x22, 0xfe, 0x20, 0x19, 0x21, 0x34, 0x24, 0xfd, 0x23, + 0x2c, 0x1f, 0x69, 0x1b, 0x0e, 0x1a, 0x46, 0x1c, 0xa2, 0x1e, 0x26, 0x1f, 0x04, 0x1f, 0xba, 0x1b, + 0x4a, 0x1a, 0x5d, 0x1b, 0x5d, 0x1b, 0xa0, 0x18, 0x6e, 0x15, 0x79, 0x14, 0xea, 0x10, 0xf0, 0x0a, + 0x6e, 0x04, 0x9e, 0xfc, 0x90, 0xf6, 0xa4, 0xf5, 0x3c, 0xef, 0x82, 0xe6, 0x3f, 0xdc, 0x31, 0xd6, + 0x01, 0xd4, 0xf2, 0xd3, 0x0c, 0xd4, 0x8a, 0xcf, 0x28, 0xc9, 0xe4, 0xc4, 0xd3, 0xc4, 0x48, 0xc6, + 0xd7, 0xc7, 0x6a, 0xc7, 0x17, 0xc9, 0xa1, 0xce, 0x8d, 0xd4, 0x9a, 0xdc, 0x0d, 0xe2, 0xa8, 0xe4, + 0xc9, 0xe8, 0x0a, 0xee, 0x2c, 0xf6, 0xb3, 0xfe, 0x0f, 0x03, 0x2b, 0x07, 0x73, 0x0a, 0x1f, 0x0d, + 0x30, 0x12, 0xf7, 0x15, 0xc9, 0x16, 0x26, 0x17, 0x2b, 0x17, 0x59, 0x17, 0x4a, 0x18, 0x90, 0x15, + 0x9f, 0x14, 0xea, 0x14, 0x76, 0x15, 0xb8, 0x17, 0x51, 0x19, 0xb8, 0x18, 0xaa, 0x17, 0x04, 0x18, + 0x44, 0x1b, 0x7b, 0x1e, 0xc3, 0x1f, 0x19, 0x22, 0xf8, 0x23, 0xe4, 0x23, 0xf4, 0x23, 0x0a, 0x23, + 0x85, 0x1f, 0x62, 0x1c, 0x05, 0x1d, 0x5f, 0x1c, 0xb6, 0x18, 0xdd, 0x14, 0xff, 0x0f, 0x09, 0x0b, + 0x58, 0x0c, 0xb6, 0x09, 0x09, 0x03, 0x97, 0xf9, 0xad, 0xef, 0xc9, 0xeb, 0x40, 0xeb, 0x7a, 0xec, + 0x69, 0xe6, 0x83, 0xde, 0x67, 0xd7, 0x51, 0xd6, 0x31, 0xd8, 0x4b, 0xd8, 0x6f, 0xd5, 0x1e, 0xd2, + 0x7d, 0xd5, 0x8b, 0xdb, 0xe9, 0xe1, 0x4e, 0xe6, 0x86, 0xe5, 0x2f, 0xe6, 0x4f, 0xe8, 0xb1, 0xef, + 0x67, 0xf4, 0x9c, 0xf6, 0x0a, 0xf6, 0x64, 0xf6, 0x5e, 0xf9, 0xa4, 0xfd, 0xa3, 0x01, 0x2b, 0x02, + 0x82, 0x01, 0xb5, 0x00, 0x44, 0x00, 0xa8, 0x02, 0xe6, 0xfe, 0xea, 0xfb, 0x12, 0xfb, 0xab, 0xfb, + 0x8b, 0x00, 0xf5, 0x04, 0xb7, 0x05, 0xe9, 0x02, 0x62, 0x03, 0x6d, 0x06, 0xac, 0x0c, 0x4e, 0x11, + 0xa8, 0x13, 0xa1, 0x14, 0xf5, 0x15, 0x77, 0x1b, 0x35, 0x1e, 0x68, 0x1f, 0x61, 0x1d, 0xf9, 0x1c, + 0x9a, 0x1e, 0x1d, 0x1c, 0x3d, 0x1a, 0x72, 0x17, 0xab, 0x14, 0x86, 0x14, 0x32, 0x15, 0x03, 0x0f, + 0x03, 0x06, 0x92, 0xfc, 0x85, 0xf9, 0x4e, 0xfa, 0x9d, 0xfb, 0xc7, 0xf7, 0x14, 0xef, 0xed, 0xe7, + 0xbe, 0xe7, 0x3a, 0xea, 0x78, 0xed, 0x5e, 0xec, 0xbb, 0xe7, 0xfc, 0xe6, 0xaa, 0xea, 0xb7, 0xf0, + 0xfd, 0xf5, 0xa4, 0xf4, 0x9b, 0xf2, 0x50, 0xf3, 0x3c, 0xf9, 0xc1, 0x00, 0x40, 0x03, 0xd8, 0x01, + 0x72, 0x00, 0x97, 0xff, 0x66, 0x02, 0xad, 0x06, 0x19, 0x07, 0x29, 0x06, 0xc5, 0x04, 0x17, 0x03, + 0xd6, 0x04, 0xeb, 0x01, 0xbe, 0xfe, 0xd6, 0xfc, 0x6b, 0xfc, 0x7e, 0xfe, 0x83, 0x01, 0xdb, 0x02, + 0xa9, 0x00, 0xa7, 0x00, 0xee, 0x02, 0x60, 0x08, 0x21, 0x0b, 0xae, 0x0d, 0xd3, 0x0d, 0xc6, 0x0c, + 0xd5, 0x0f, 0xb3, 0x13, 0x1a, 0x15, 0xa1, 0x13, 0x99, 0x14, 0x7f, 0x14, 0xd6, 0x13, 0x36, 0x13, + 0xb3, 0x10, 0x35, 0x0c, 0xf0, 0x0d, 0x4e, 0x0e, 0x97, 0x09, 0x0c, 0x02, 0x48, 0xfa, 0x44, 0xf6, + 0x50, 0xf4, 0x08, 0xf5, 0x93, 0xf2, 0x2e, 0xec, 0x0f, 0xe6, 0x5b, 0xe5, 0xd7, 0xe5, 0x20, 0xe8, + 0xaa, 0xe9, 0xed, 0xe6, 0x94, 0xe8, 0x23, 0xeb, 0xde, 0xee, 0xe1, 0xf3, 0xd5, 0xf4, 0xf8, 0xf4, + 0x18, 0xf8, 0xe7, 0xfc, 0x1e, 0x02, 0xff, 0x05, 0xd2, 0x04, 0xf3, 0x02, 0x1e, 0x02, 0xac, 0x01, + 0xa4, 0x03, 0xf8, 0x02, 0x4a, 0x02, 0x37, 0x01, 0x3a, 0x00, 0xe8, 0xff, 0x0b, 0xfb, 0xfe, 0xf7, + 0xbe, 0xf7, 0x5a, 0xf9, 0xed, 0xfb, 0x76, 0xfe, 0x88, 0xfc, 0x24, 0xf9, 0xcb, 0xf9, 0x07, 0xfc, + 0x47, 0xfe, 0xe2, 0xfe, 0x70, 0xff, 0x68, 0xff, 0x4e, 0x00, 0xec, 0x04, 0x9e, 0x08, 0x71, 0x0a, + 0x69, 0x0c, 0x4b, 0x10, 0x96, 0x11, 0xf9, 0x11, 0xac, 0x12, 0xc0, 0x10, 0x92, 0x0d, 0xc1, 0x0f, + 0x32, 0x0e, 0x69, 0x07, 0x99, 0x00, 0xb8, 0xf8, 0x74, 0xf5, 0x58, 0xf4, 0xca, 0xf5, 0xc7, 0xf2, + 0xcd, 0xed, 0x33, 0xeb, 0xaf, 0xec, 0x86, 0xef, 0x58, 0xf3, 0x4c, 0xf5, 0x5a, 0xf4, 0x41, 0xf9, + 0xf0, 0xff, 0xa7, 0x04, 0x57, 0x0b, 0xb9, 0x0c, 0xbe, 0x0d, 0x81, 0x10, 0x0d, 0x15, 0x0a, 0x1a, + 0x82, 0x1c, 0x15, 0x1c, 0xd5, 0x1a, 0x01, 0x19, 0x2f, 0x18, 0x25, 0x19, 0x69, 0x17, 0x54, 0x14, + 0xb0, 0x11, 0x1b, 0x0f, 0x82, 0x0e, 0x2c, 0x09, 0x68, 0x03, 0x5e, 0xfd, 0x3d, 0xf8, 0x8f, 0xf6, + 0x1d, 0xf5, 0xe3, 0xf1, 0xa9, 0xed, 0x93, 0xea, 0x69, 0xe9, 0xa2, 0xeb, 0x87, 0xec, 0x59, 0xed, + 0xf8, 0xec, 0x30, 0xee, 0x2a, 0xf2, 0x9d, 0xf6, 0x9f, 0xfa, 0x28, 0xfe, 0x58, 0x03, 0x76, 0x03, + 0x2c, 0x04, 0xcf, 0x03, 0xcb, 0x01, 0x37, 0x00, 0x44, 0x01, 0x8d, 0xfd, 0x4a, 0xf7, 0x2d, 0xf1, + 0x4b, 0xeb, 0x6a, 0xeb, 0xdf, 0xea, 0xd1, 0xea, 0xf0, 0xe6, 0x3e, 0xe2, 0xc0, 0xdf, 0x66, 0xe0, + 0x4d, 0xe3, 0x24, 0xe8, 0x7b, 0xe9, 0x63, 0xea, 0xbe, 0xef, 0x82, 0xf5, 0x7f, 0xfb, 0xc3, 0x00, + 0x49, 0x01, 0x24, 0x04, 0x67, 0x09, 0x44, 0x10, 0x78, 0x16, 0x32, 0x1a, 0xcf, 0x1b, 0x7e, 0x1d, + 0xa0, 0x1e, 0xe4, 0x1f, 0xea, 0x20, 0xf7, 0x1e, 0x8d, 0x1e, 0xe7, 0x1c, 0x22, 0x1d, 0x98, 0x1a, + 0x0d, 0x12, 0xfe, 0x0d, 0x06, 0x0a, 0x9c, 0x07, 0x91, 0x06, 0x03, 0x05, 0x8b, 0xfe, 0x42, 0xf9, + 0xdf, 0xf8, 0xe9, 0xfb, 0xbe, 0xff, 0x72, 0xff, 0xc1, 0x00, 0x62, 0xff, 0x32, 0x01, 0x16, 0x07, + 0x38, 0x0a, 0x09, 0x0c, 0x05, 0x0b, 0xdc, 0x0d, 0x9b, 0x0f, 0xc3, 0x10, 0x60, 0x10, 0x7e, 0x0b, + 0xed, 0x08, 0xab, 0x08, 0xc1, 0x04, 0x9f, 0xfd, 0xde, 0xf4, 0x8d, 0xee, 0x46, 0xeb, 0x46, 0xeb, + 0x40, 0xe8, 0x4b, 0xe4, 0x78, 0xdc, 0x49, 0xd8, 0xd3, 0xd7, 0xc8, 0xd6, 0x70, 0xd9, 0xbd, 0xd8, + 0x34, 0xdb, 0xf2, 0xdf, 0x51, 0xe4, 0xb5, 0xe9, 0x77, 0xed, 0xda, 0xef, 0x39, 0xf2, 0x7b, 0xf8, + 0xbd, 0xfe, 0xba, 0x06, 0x72, 0x0b, 0x95, 0x0c, 0xbb, 0x0e, 0x2e, 0x0f, 0x8a, 0x11, 0x09, 0x13, + 0xca, 0x12, 0x74, 0x12, 0x2a, 0x10, 0x15, 0x10, 0xa3, 0x0c, 0x08, 0x0a, 0x30, 0x07, 0xa5, 0x05, + 0x33, 0x04, 0x3e, 0x04, 0x58, 0x05, 0x9c, 0x01, 0xfb, 0x01, 0xb9, 0x01, 0xa1, 0x04, 0xe8, 0x06, + 0x2a, 0x09, 0xe9, 0x0c, 0x4c, 0x0e, 0x43, 0x13, 0x57, 0x17, 0x57, 0x1b, 0x5f, 0x1b, 0xd7, 0x1d, + 0x85, 0x20, 0x6e, 0x20, 0x48, 0x21, 0x9f, 0x1e, 0x1f, 0x1b, 0xf1, 0x18, 0x2d, 0x18, 0xf3, 0x10, + 0x7e, 0x07, 0xd4, 0xfc, 0xbe, 0xf4, 0xec, 0xf0, 0x70, 0xef, 0x83, 0xec, 0x32, 0xe6, 0x87, 0xdf, + 0xae, 0xdb, 0xf3, 0xd9, 0x5d, 0xd9, 0x68, 0xd9, 0xc7, 0xd7, 0x4e, 0xd9, 0x70, 0xe0, 0xd0, 0xe6, + 0xb0, 0xec, 0x7d, 0xf0, 0xcb, 0xf1, 0x3a, 0xf5, 0x3a, 0xfb, 0x71, 0x02, 0x61, 0x09, 0xc9, 0x0e, + 0x9e, 0x10, 0xea, 0x12, 0x23, 0x15, 0x15, 0x17, 0x42, 0x17, 0x87, 0x14, 0x8b, 0x12, 0x9a, 0x10, + 0x21, 0x0e, 0x76, 0x09, 0xe8, 0x04, 0xf7, 0xfe, 0x20, 0xfc, 0x73, 0xfa, 0x94, 0xfa, 0x35, 0xf7, + 0x06, 0xf1, 0xdd, 0xee, 0xfe, 0xef, 0x13, 0xf4, 0x69, 0xf6, 0xae, 0xf8, 0xb4, 0xfa, 0x36, 0xfe, + 0xbd, 0x03, 0xc6, 0x09, 0x65, 0x0d, 0xae, 0x0e, 0x49, 0x13, 0x53, 0x15, 0x08, 0x18, 0x97, 0x1a, + 0x7f, 0x18, 0x26, 0x15, 0xe1, 0x13, 0x01, 0x10, 0xfe, 0x0a, 0xe5, 0x02, 0xc4, 0xfd, 0x7c, 0xfb, + 0x41, 0xf8, 0x5a, 0xf6, 0xf5, 0xf1, 0x2b, 0xeb, 0x88, 0xe4, 0xee, 0xe2, 0x46, 0xe1, 0x5c, 0xe1, + 0x4d, 0xde, 0x92, 0xdb, 0xff, 0xdc, 0xee, 0xdf, 0x62, 0xe5, 0x98, 0xe8, 0xe2, 0xea, 0x63, 0xee, + 0x67, 0xf2, 0x91, 0xf9, 0x9e, 0x00, 0x43, 0x05, 0xae, 0x07, 0xd3, 0x0a, 0x86, 0x0e, 0xb6, 0x12, + 0xf1, 0x14, 0x3f, 0x13, 0x75, 0x11, 0x78, 0x0e, 0x38, 0x0c, 0x3d, 0x08, 0xc2, 0x04, 0x3a, 0x01, + 0xaf, 0xfa, 0x91, 0xf9, 0xd3, 0xf9, 0x26, 0xf9, 0x60, 0xf5, 0x86, 0xf3, 0xd0, 0xf0, 0xe9, 0xf0, + 0x87, 0xf4, 0xee, 0xf7, 0x59, 0xfb, 0x46, 0xfb, 0xe5, 0xfc, 0x87, 0xff, 0xba, 0x04, 0xae, 0x07, + 0x13, 0x0b, 0xa5, 0x0e, 0xc0, 0x0f, 0xfb, 0x12, 0xba, 0x14, 0xd8, 0x16, 0xda, 0x1b, 0x54, 0x1e, + 0x8b, 0x1b, 0x88, 0x17, 0xac, 0x12, 0xb2, 0x10, 0xea, 0x0e, 0x43, 0x0f, 0x55, 0x0d, 0xf8, 0x07, + 0xd5, 0x01, 0xd1, 0xfe, 0xe3, 0xfb, 0xaf, 0xfb, 0xae, 0xfa, 0xe9, 0xf7, 0x7b, 0xf7, 0x0a, 0xf8, + 0x5a, 0xf8, 0xa4, 0xfb, 0x8b, 0xfd, 0x35, 0xff, 0xad, 0x00, 0x77, 0x01, 0x76, 0x06, 0x16, 0x0b, + 0x13, 0x0d, 0x09, 0x0f, 0x59, 0x10, 0xfd, 0x10, 0x98, 0x10, 0xb9, 0x0e, 0x24, 0x0c, 0xf2, 0x09, + 0xbe, 0x07, 0x94, 0x02, 0xcd, 0xfa, 0xf6, 0xf5, 0x7b, 0xf2, 0x1b, 0xf1, 0xed, 0xf1, 0x4f, 0xf1, + 0x65, 0xea, 0x52, 0xe5, 0x4b, 0xe4, 0x48, 0xe4, 0xbc, 0xe6, 0xf4, 0xe7, 0x43, 0xe9, 0xdb, 0xe9, + 0xb7, 0xec, 0x4a, 0xf0, 0x9c, 0xf3, 0x45, 0xf6, 0xc1, 0xf8, 0x00, 0xff, 0x20, 0x00, 0xd1, 0x02, + 0x57, 0x03, 0xec, 0x03, 0xe1, 0x06, 0xf9, 0x0b, 0x2e, 0x0b, 0xc0, 0x08, 0x30, 0x03, 0xfc, 0xfe, + 0x50, 0xfd, 0x13, 0xfc, 0x80, 0xf9, 0xe6, 0xf5, 0x7d, 0xf1, 0x29, 0xf1, 0xad, 0xf3, 0x57, 0xf6, + 0xd4, 0xf8, 0x03, 0xf7, 0x3a, 0xf7, 0x43, 0xfe, 0xc8, 0x03, 0x4f, 0x09, 0x05, 0x0d, 0xe0, 0x0c, + 0x86, 0x0d, 0x01, 0x10, 0x46, 0x13, 0xd4, 0x16, 0x8f, 0x18, 0xe8, 0x18, 0x4c, 0x1a, 0xac, 0x19, + 0x75, 0x19, 0xfb, 0x19, 0x6f, 0x18, 0x90, 0x18, 0x5d, 0x18, 0x6d, 0x16, 0x73, 0x11, 0xa5, 0x0c, + 0xb7, 0x08, 0x66, 0x06, 0xac, 0x04, 0xea, 0x02, 0xd8, 0xfe, 0x4e, 0xf8, 0x11, 0xf4, 0x95, 0xf1, + 0x20, 0xf2, 0x60, 0xf2, 0xb6, 0xf0, 0xbf, 0xee, 0x3b, 0xed, 0xcc, 0xed, 0x4d, 0xee, 0x21, 0xef, + 0xb1, 0xef, 0x57, 0xf4, 0x39, 0xf6, 0x1e, 0xf8, 0x3e, 0xfb, 0x3a, 0xf9, 0xcb, 0xf8, 0xf7, 0xfa, + 0x03, 0xfa, 0x83, 0xf7, 0xae, 0xf2, 0xf8, 0xee, 0x54, 0xef, 0x43, 0xf0, 0xb4, 0xf0, 0xcd, 0xee, + 0x87, 0xeb, 0xc2, 0xe8, 0xbf, 0xe7, 0x66, 0xe8, 0x0c, 0xec, 0x9f, 0xeb, 0x85, 0xea, 0x13, 0xef, + 0x96, 0xf1, 0xdb, 0xf5, 0x33, 0xfa, 0xd5, 0xfc, 0xb5, 0xff, 0x81, 0x03, 0x55, 0x08, 0x7b, 0x0e, + 0x39, 0x14, 0xde, 0x16, 0x7f, 0x19, 0x9b, 0x1d, 0x41, 0x21, 0xde, 0x23, 0x26, 0x25, 0x59, 0x27, + 0x83, 0x27, 0xb8, 0x27, 0x5a, 0x25, 0x61, 0x22, 0x0a, 0x1f, 0xad, 0x18, 0x01, 0x17, 0xc4, 0x15, + 0x9f, 0x13, 0x15, 0x0e, 0x2a, 0x0a, 0x26, 0x06, 0xfe, 0x01, 0xd0, 0x00, 0x84, 0xff, 0x68, 0xfe, + 0xf6, 0xfa, 0x39, 0xf9, 0x6d, 0xf7, 0xd0, 0xf6, 0x8c, 0xf5, 0x63, 0xf6, 0x49, 0xf6, 0xf4, 0xf2, + 0x42, 0xf3, 0x88, 0xf1, 0x5d, 0xf0, 0xe3, 0xf1, 0xd2, 0xef, 0xbb, 0xe9, 0x8a, 0xe7, 0xf5, 0xe3, + 0x3f, 0xe4, 0x4b, 0xe7, 0xd7, 0xe9, 0x40, 0xe9, 0x01, 0xe5, 0x32, 0xe3, 0x79, 0xe4, 0xb8, 0xe5, + 0x2d, 0xe8, 0x15, 0xea, 0x39, 0xea, 0xab, 0xee, 0x5d, 0xf5, 0xfe, 0xf8, 0xb7, 0xfe, 0x31, 0x00, + 0x2d, 0x02, 0x27, 0x06, 0x07, 0x0a, 0xeb, 0x0d, 0x6c, 0x11, 0xba, 0x14, 0x3f, 0x19, 0x9a, 0x1c, + 0x68, 0x1f, 0x3e, 0x20, 0x00, 0x1f, 0x35, 0x1e, 0x68, 0x1f, 0x9b, 0x1e, 0x5b, 0x1a, 0xcb, 0x18, + 0x7c, 0x16, 0x06, 0x15, 0xee, 0x12, 0x50, 0x11, 0x5a, 0x0d, 0xa5, 0x06, 0x34, 0x05, 0x8a, 0x05, + 0xf5, 0x03, 0x92, 0x00, 0x28, 0xfd, 0xaf, 0xfa, 0x7b, 0xf9, 0x29, 0xfc, 0xe2, 0xfc, 0xee, 0xfc, + 0x87, 0xf9, 0x6b, 0xfa, 0xf1, 0xfc, 0xac, 0xfa, 0xbc, 0xf9, 0x58, 0xf6, 0xdd, 0xf3, 0x31, 0xf6, + 0xcb, 0xf6, 0x3f, 0xf0, 0xb7, 0xe6, 0x53, 0xde, 0x05, 0xdc, 0x13, 0xdc, 0x99, 0xdd, 0x92, 0xd9, + 0xff, 0xd3, 0xd7, 0xcf, 0x11, 0xd3, 0x24, 0xd6, 0xc8, 0xd6, 0xbe, 0xd7, 0xca, 0xd7, 0x6c, 0xde, + 0xc1, 0xe8, 0x34, 0xf1, 0xd8, 0xf5, 0x8c, 0xf6, 0x53, 0xf8, 0x2d, 0xfc, 0xb9, 0x04, 0x98, 0x0b, + 0xf1, 0x10, 0x88, 0x13, 0xc1, 0x14, 0x43, 0x19, 0xea, 0x1d, 0x19, 0x22, 0xed, 0x22, 0x07, 0x23, + 0x04, 0x24, 0x71, 0x26, 0xf4, 0x23, 0xbf, 0x20, 0xb8, 0x1e, 0x3c, 0x1c, 0x8f, 0x1b, 0x54, 0x1a, + 0xa6, 0x17, 0x41, 0x0f, 0x3b, 0x08, 0x40, 0x07, 0x48, 0x06, 0xc9, 0x05, 0x97, 0x05, 0xaa, 0x05, + 0x54, 0x06, 0xc4, 0x0b, 0x79, 0x10, 0x06, 0x14, 0x10, 0x15, 0xb5, 0x15, 0x5a, 0x1a, 0x75, 0x1b, + 0xf1, 0x1d, 0xe4, 0x1d, 0x8a, 0x18, 0x8a, 0x18, 0x7b, 0x18, 0xa2, 0x11, 0xea, 0x0b, 0xeb, 0x02, + 0x7e, 0xfc, 0x2d, 0xf8, 0x45, 0xf7, 0x94, 0xf4, 0x68, 0xee, 0x88, 0xe7, 0xcf, 0xe4, 0xcf, 0xe4, + 0x67, 0xe3, 0x40, 0xe4, 0x4c, 0xdf, 0xc1, 0xdd, 0x16, 0xe0, 0x21, 0xe1, 0xf1, 0xe4, 0xd9, 0xe5, + 0xbb, 0xe6, 0xdd, 0xe8, 0xce, 0xed, 0xf9, 0xf1, 0x8a, 0xf4, 0x2d, 0xf7, 0xc6, 0xfa, 0xc5, 0x00, + 0x14, 0x05, 0x7d, 0x0a, 0x1e, 0x0c, 0xb8, 0x0c, 0x4a, 0x0e, 0x06, 0x0f, 0xbc, 0x0d, 0xed, 0x0a, + 0xbd, 0x08, 0x90, 0x05, 0x44, 0x04, 0x0c, 0x04, 0xcd, 0x02, 0x50, 0xfe, 0x6d, 0xfa, 0x46, 0xfb, + 0x73, 0xfa, 0x3d, 0xfa, 0xfc, 0xf9, 0xce, 0xf8, 0xdf, 0xf8, 0x1b, 0xfc, 0xce, 0x00, 0xb8, 0x02, + 0xc2, 0x03, 0x75, 0x06, 0x3b, 0x09, 0x8a, 0x09, 0x75, 0x09, 0x90, 0x09, 0x42, 0x05, 0x5c, 0x07, + 0x28, 0x07, 0x81, 0x03, 0xbc, 0xff, 0x4f, 0xf8, 0x9a, 0xf8, 0x57, 0xf7, 0x57, 0xf9, 0x74, 0xf7, + 0x27, 0xf4, 0x19, 0xf1, 0x22, 0xf1, 0x35, 0xf3, 0x6c, 0xf2, 0x06, 0xf3, 0x4f, 0xee, 0xf3, 0xee, + 0x01, 0xf1, 0x3b, 0xf3, 0x5a, 0xf9, 0xf5, 0xf9, 0xab, 0xfd, 0x5d, 0x00, 0x0b, 0x06, 0xd9, 0x0b, + 0xa1, 0x10, 0x35, 0x13, 0x80, 0x15, 0xfd, 0x17, 0x11, 0x19, 0x3c, 0x1a, 0xba, 0x18, 0x52, 0x17, + 0xf3, 0x15, 0x0a, 0x13, 0x36, 0x10, 0xa1, 0x0c, 0x93, 0x05, 0xe5, 0x01, 0x89, 0x00, 0x79, 0xfd, + 0x83, 0xf9, 0xaa, 0xf5, 0x87, 0xf2, 0x13, 0xf0, 0xb0, 0xf0, 0x38, 0xf1, 0x8b, 0xf0, 0x3a, 0xed, + 0xed, 0xeb, 0x8f, 0xee, 0x1f, 0xf2, 0x69, 0xf7, 0x61, 0xfa, 0x38, 0xfe, 0x61, 0xff, 0x83, 0xff, + 0x6d, 0x01, 0x21, 0x02, 0xcf, 0x00, 0xc5, 0x03, 0xad, 0x00, 0x14, 0xfd, 0xc9, 0xf9, 0x06, 0xf6, + 0xe1, 0xf3, 0x41, 0xf3, 0x40, 0xf2, 0x92, 0xed, 0x63, 0xe8, 0xe5, 0xe3, 0x6d, 0xe3, 0xb3, 0xe1, + 0x79, 0xe3, 0x71, 0xe5, 0xea, 0xe4, 0x55, 0xe9, 0x77, 0xee, 0xde, 0xf3, 0x14, 0xfa, 0x1f, 0xfe, + 0xdd, 0x02, 0xe2, 0x08, 0x5b, 0x0f, 0xcf, 0x15, 0x8e, 0x1b, 0x02, 0x20, 0x32, 0x25, 0xce, 0x28, + 0xf0, 0x2b, 0x8d, 0x2e, 0x0e, 0x2f, 0xfe, 0x2f, 0xfb, 0x30, 0x02, 0x2d, 0xa2, 0x2a, 0x2d, 0x23, + 0xff, 0x1c, 0x49, 0x1d, 0x09, 0x1a, 0x98, 0x16, 0x23, 0x10, 0x23, 0x07, 0xe1, 0xfd, 0x3e, 0xfa, + 0xf0, 0xf8, 0x41, 0xf6, 0x05, 0xf3, 0xa8, 0xef, 0x04, 0xf0, 0xeb, 0xee, 0x17, 0xf1, 0x8f, 0xf1, + 0x05, 0xf1, 0xbf, 0xf4, 0x1b, 0xf5, 0x6b, 0xf8, 0x63, 0xfa, 0x47, 0xfa, 0x04, 0xfb, 0x6f, 0xfc, + 0xfd, 0xf7, 0xc9, 0xf6, 0xe2, 0xf2, 0x2a, 0xf2, 0x1f, 0xf5, 0xb3, 0xf6, 0x2c, 0xf7, 0xdf, 0xf3, + 0xcf, 0xf0, 0x5b, 0xee, 0x12, 0xee, 0x89, 0xec, 0x12, 0xee, 0x8b, 0xec, 0x12, 0xed, 0x61, 0xf2, + 0x81, 0xf3, 0xa6, 0xf7, 0x5c, 0xf9, 0x0a, 0xfa, 0x1c, 0xfc, 0xb8, 0xfe, 0xc4, 0x03, 0x67, 0x07, + 0xce, 0x0a, 0xd8, 0x0c, 0xa4, 0x11, 0x7f, 0x15, 0xb9, 0x19, 0x4b, 0x1b, 0x58, 0x1b, 0xa0, 0x1b, + 0xd3, 0x1b, 0x79, 0x1b, 0x82, 0x1d, 0xa3, 0x18, 0x4a, 0x0f, 0x18, 0x0e, 0xa2, 0x0c, 0xaa, 0x0a, + 0x98, 0x07, 0x65, 0x04, 0xa0, 0xfc, 0x85, 0xf8, 0x98, 0xf9, 0x6f, 0xfa, 0xee, 0xf9, 0x93, 0xf8, + 0x1c, 0xf8, 0x25, 0xf8, 0x50, 0xf9, 0x21, 0xfa, 0x2e, 0xf9, 0x5f, 0xf9, 0xa3, 0xf5, 0xa1, 0xf4, + 0xba, 0xf4, 0xce, 0xf3, 0xd1, 0xf1, 0x13, 0xf2, 0xa0, 0xea, 0x76, 0xe6, 0x2e, 0xe1, 0xfd, 0xdf, + 0xc3, 0xde, 0x36, 0xe1, 0xb9, 0xe1, 0x89, 0xdf, 0xac, 0xdd, 0x90, 0xdc, 0xfa, 0xdc, 0xe9, 0xdc, + 0xde, 0xde, 0x9f, 0xdf, 0x1f, 0xe3, 0x46, 0xeb, 0xa6, 0xef, 0xba, 0xf5, 0xce, 0xfa, 0x71, 0xfe, + 0xe0, 0x04, 0x63, 0x0a, 0x91, 0x0f, 0x63, 0x13, 0x1e, 0x19, 0x85, 0x1b, 0xb3, 0x1f, 0x1d, 0x22, + 0x8e, 0x24, 0x0d, 0x25, 0x59, 0x24, 0x9f, 0x23, 0x81, 0x21, 0x65, 0x1c, 0x26, 0x1c, 0x39, 0x1a, + 0xb2, 0x17, 0x40, 0x18, 0xa0, 0x17, 0x1e, 0x15, 0xb3, 0x10, 0x10, 0x0f, 0x19, 0x0e, 0x7e, 0x0e, + 0x39, 0x0f, 0x5a, 0x10, 0xb2, 0x0e, 0x07, 0x0d, 0x4c, 0x0d, 0x9a, 0x0d, 0x4f, 0x0e, 0x05, 0x0c, + 0x0d, 0x0b, 0xcb, 0x09, 0xcc, 0x07, 0x13, 0x07, 0xee, 0x03, 0x10, 0x01, 0x59, 0x01, 0x2b, 0x00, + 0xef, 0xfb, 0x17, 0xf9, 0xe7, 0xf2, 0x5f, 0xf0, 0xd3, 0xec, 0xa4, 0xec, 0x88, 0xe8, 0x36, 0xe1, + 0x08, 0xdb, 0xc3, 0xd9, 0xdb, 0xd6, 0xe2, 0xd6, 0x3a, 0xd6, 0x8f, 0xd2, 0x49, 0xd5, 0x99, 0xd8, + 0x25, 0xdc, 0x48, 0xe2, 0x5e, 0xe5, 0x02, 0xe8, 0xb5, 0xed, 0x5a, 0xf5, 0x63, 0xfd, 0xbf, 0x01, + 0x4f, 0x05, 0xd9, 0x0a, 0xa9, 0x0f, 0x59, 0x14, 0x09, 0x18, 0x19, 0x18, 0xc7, 0x19, 0x37, 0x1b, + 0x5c, 0x1b, 0x17, 0x1a, 0x26, 0x18, 0xf8, 0x15, 0xa2, 0x13, 0xc8, 0x12, 0xe4, 0x11, 0xa5, 0x0d, + 0x6d, 0x09, 0x52, 0x09, 0x2d, 0x0b, 0xee, 0x0b, 0x0a, 0x0c, 0xba, 0x08, 0x36, 0x06, 0x8e, 0x06, + 0x6f, 0x08, 0x85, 0x0b, 0xc4, 0x0d, 0x36, 0x0f, 0x86, 0x0f, 0xb2, 0x0e, 0xb6, 0x11, 0x4b, 0x11, + 0xa3, 0x0e, 0xde, 0x0e, 0xcd, 0x0e, 0x35, 0x0a, 0xeb, 0x07, 0xc6, 0x03, 0xdc, 0x00, 0x96, 0xfe, + 0x17, 0xfc, 0x1f, 0xfa, 0x98, 0xf5, 0xee, 0xef, 0x2e, 0xed, 0xe6, 0xeb, 0xae, 0xe9, 0xed, 0xe9, + 0x92, 0xe7, 0x36, 0xe9, 0x06, 0xee, 0x28, 0xf0, 0x5a, 0xf5, 0xf8, 0xf6, 0xf3, 0xf6, 0xde, 0xf7, + 0x5a, 0xfa, 0xcb, 0xfd, 0x69, 0xff, 0x38, 0x01, 0xfd, 0x01, 0xe8, 0x02, 0x00, 0x01, 0x77, 0x00, + 0x0a, 0xfe, 0xe1, 0xfd, 0xd0, 0xfe, 0x3b, 0xfe, 0xa0, 0xfe, 0xd5, 0xfc, 0xf6, 0xf6, 0xc7, 0xf5, + 0x1c, 0xf7, 0xfe, 0xf5, 0x5a, 0xf6, 0xc2, 0xf4, 0xf5, 0xf2, 0xc7, 0xf2, 0x8d, 0xf5, 0x2a, 0xf9, + 0x38, 0xfc, 0x41, 0xfd, 0xab, 0xfe, 0x2d, 0x00, 0xb6, 0x03, 0x8f, 0x06, 0x57, 0x09, 0xf2, 0x0c, + 0x18, 0x0f, 0x30, 0x10, 0xae, 0x11, 0xd4, 0x0f, 0xe4, 0x0d, 0x82, 0x0c, 0xb5, 0x06, 0x2b, 0x03, + 0x93, 0xfc, 0xbb, 0xfa, 0xb4, 0xfa, 0x0b, 0xfb, 0x60, 0xf9, 0xde, 0xf3, 0x71, 0xef, 0x70, 0xec, + 0xd3, 0xed, 0x39, 0xed, 0x63, 0xee, 0x5e, 0xee, 0x0d, 0xed, 0x74, 0xf1, 0x94, 0xf3, 0x13, 0xf8, + 0xcf, 0xf8, 0x90, 0xfb, 0x4b, 0x01, 0x28, 0x06, 0xeb, 0x0b, 0x50, 0x0d, 0xf3, 0x0f, 0xf6, 0x11, + 0xbb, 0x15, 0x03, 0x18, 0x09, 0x1a, 0x7c, 0x19, 0x27, 0x16, 0x08, 0x18, 0x35, 0x15, 0x82, 0x11, + 0xc1, 0x0e, 0x2e, 0x08, 0xcd, 0x02, 0x4d, 0x02, 0x70, 0x00, 0xf0, 0xfb, 0xf2, 0xf7, 0x2d, 0xf4, + 0x00, 0xf1, 0x21, 0xef, 0xe6, 0xef, 0x08, 0xef, 0x21, 0xec, 0x9e, 0xec, 0xdb, 0xef, 0x20, 0xf3, + 0x99, 0xf5, 0x8f, 0xf8, 0x1a, 0xfe, 0x16, 0x01, 0xe6, 0x02, 0x07, 0x06, 0x67, 0x05, 0x6b, 0x06, + 0xab, 0x0b, 0x54, 0x0a, 0x3c, 0x09, 0xf2, 0x04, 0xcb, 0x01, 0x5c, 0x00, 0x3c, 0x01, 0xbf, 0xff, + 0xf1, 0xfb, 0x54, 0xf7, 0x92, 0xf5, 0x36, 0xf6, 0x81, 0xf3, 0x7c, 0xf3, 0x11, 0xf0, 0xb9, 0xed, + 0x5b, 0xf1, 0x09, 0xf3, 0x52, 0xf7, 0x7e, 0xfa, 0x72, 0xfc, 0x01, 0x01, 0x06, 0x05, 0xb7, 0x08, + 0x4c, 0x0d, 0x60, 0x12, 0xdb, 0x14, 0x2b, 0x19, 0x9b, 0x1b, 0x21, 0x1e, 0xe2, 0x1f, 0xd7, 0x1f, + 0xf3, 0x21, 0x2b, 0x20, 0xb7, 0x1d, 0xc8, 0x1b, 0xaf, 0x15, 0x59, 0x10, 0xc3, 0x0e, 0x42, 0x0c, + 0xa7, 0x0a, 0x3b, 0x08, 0xb0, 0x04, 0xf6, 0x01, 0x5c, 0xfe, 0x1f, 0xfc, 0x70, 0xf9, 0xbe, 0xf4, + 0x55, 0xf1, 0x0c, 0xef, 0x4e, 0xee, 0x9b, 0xed, 0x0b, 0xed, 0x73, 0xed, 0xbd, 0xe8, 0x55, 0xe6, + 0x3f, 0xe6, 0x90, 0xe6, 0x69, 0xe9, 0x26, 0xed, 0x2f, 0xea, 0x84, 0xe7, 0xdd, 0xe3, 0xab, 0xe3, + 0xbf, 0xe6, 0x7e, 0xe8, 0x91, 0xe8, 0x96, 0xe7, 0x33, 0xe5, 0x8f, 0xe5, 0x6e, 0xe8, 0xe0, 0xe8, + 0x86, 0xeb, 0x59, 0xed, 0xc2, 0xf1, 0x1b, 0xf8, 0x32, 0xf9, 0xde, 0xfd, 0x43, 0x01, 0x9d, 0x04, + 0x92, 0x0b, 0xb9, 0x10, 0x6e, 0x15, 0xf9, 0x18, 0x95, 0x1a, 0x99, 0x1d, 0x29, 0x21, 0x05, 0x21, + 0x7b, 0x21, 0x3f, 0x22, 0x0f, 0x23, 0xf9, 0x26, 0xa2, 0x28, 0xca, 0x27, 0x23, 0x26, 0x0d, 0x20, + 0x78, 0x1e, 0x9f, 0x1d, 0x33, 0x1b, 0x96, 0x1a, 0x8f, 0x16, 0xf2, 0x11, 0x77, 0x0e, 0x1c, 0x0b, + 0x11, 0x08, 0x89, 0x05, 0x06, 0x02, 0xaf, 0x00, 0x80, 0xff, 0x97, 0xfe, 0xe3, 0xfd, 0x84, 0xfc, + 0x2b, 0xfe, 0x0b, 0xfd, 0xf7, 0xfb, 0xa7, 0xfc, 0x1b, 0xfc, 0xa5, 0xfb, 0x80, 0xfe, 0xa4, 0xf9, + 0xc3, 0xf3, 0x22, 0xee, 0x6f, 0xea, 0x59, 0xea, 0xb4, 0xe9, 0x52, 0xe7, 0x3f, 0xe2, 0x66, 0xdc, + 0x8b, 0xd9, 0x90, 0xd9, 0x9a, 0xd9, 0xba, 0xd9, 0x20, 0xd9, 0x4c, 0xd8, 0x82, 0xdc, 0x21, 0xe0, + 0x5c, 0xe5, 0x54, 0xe9, 0x8f, 0xeb, 0xd3, 0xf0, 0x48, 0xf6, 0xeb, 0xfa, 0x51, 0xfe, 0x19, 0x02, + 0x97, 0x06, 0x3c, 0x0c, 0xb1, 0x10, 0x58, 0x15, 0xb5, 0x18, 0x5e, 0x18, 0xc0, 0x19, 0x11, 0x1a, + 0xe3, 0x19, 0x58, 0x19, 0x3e, 0x17, 0x03, 0x19, 0xe6, 0x18, 0x42, 0x17, 0xeb, 0x14, 0xc9, 0x0f, + 0x02, 0x0a, 0xf6, 0x05, 0x88, 0x04, 0x62, 0x02, 0xa1, 0x00, 0x85, 0xfd, 0xac, 0xfb, 0x53, 0xfb, + 0x48, 0xfc, 0x8e, 0xfd, 0xb0, 0xfd, 0x98, 0x00, 0xdd, 0xfe, 0x42, 0xfe, 0x33, 0x00, 0x66, 0x00, + 0x07, 0x00, 0x90, 0x02, 0xb2, 0xff, 0xfe, 0xfc, 0x66, 0xf9, 0x8c, 0xf6, 0x02, 0xf7, 0xe4, 0xf5, + 0x58, 0xf6, 0xdf, 0xf4, 0xe5, 0xf3, 0xcd, 0xf4, 0xf4, 0xf5, 0x02, 0xf5, 0x51, 0xf5, 0x19, 0xf6, + 0xf5, 0xf4, 0xcd, 0xf7, 0x5e, 0xf7, 0xa8, 0xf8, 0x11, 0xfa, 0x5b, 0xf9, 0x0a, 0xfb, 0x66, 0xfa, + 0x8a, 0xfa, 0x2d, 0xfb, 0x59, 0xfd, 0x15, 0x01, 0x1c, 0x03, 0x54, 0x04, 0x6e, 0x06, 0x28, 0x09, + 0xa7, 0x0a, 0x5a, 0x0f, 0x5c, 0x10, 0x53, 0x10, 0xfd, 0x10, 0xa2, 0x10, 0x55, 0x0e, 0x77, 0x0c, + 0x35, 0x10, 0x23, 0x11, 0x5f, 0x10, 0x8b, 0x0f, 0x23, 0x0e, 0x83, 0x08, 0x89, 0x06, 0x13, 0x07, + 0xcf, 0x03, 0xed, 0x01, 0x80, 0x00, 0x68, 0x01, 0x3b, 0x01, 0x74, 0x00, 0x0b, 0x01, 0x6e, 0xfb, + 0x3d, 0xf8, 0xc8, 0xf8, 0xe6, 0xf8, 0x92, 0xfb, 0x57, 0xfd, 0xac, 0xf8, 0x25, 0xf4, 0x9f, 0xf0, + 0x11, 0xee, 0x29, 0xf0, 0x2f, 0xf0, 0xab, 0xef, 0x49, 0xee, 0xba, 0xec, 0xf8, 0xed, 0x01, 0xee, + 0x96, 0xec, 0x9f, 0xec, 0x75, 0xed, 0xfd, 0xef, 0xb7, 0xf5, 0x30, 0xf7, 0x9b, 0xf8, 0xa5, 0xf9, + 0xaa, 0xf9, 0x22, 0xff, 0xd4, 0x02, 0x81, 0x05, 0x12, 0x09, 0xb5, 0x0a, 0xcc, 0x0e, 0x78, 0x12, + 0xf9, 0x13, 0xc0, 0x16, 0xda, 0x16, 0x51, 0x16, 0x41, 0x18, 0x0b, 0x19, 0x7f, 0x15, 0x94, 0x13, + 0xa5, 0x13, 0x11, 0x12, 0x30, 0x12, 0x8a, 0x11, 0x0f, 0x10, 0x7b, 0x0a, 0x66, 0x08, 0x9e, 0x08, + 0x81, 0x06, 0x5d, 0x06, 0xab, 0x05, 0x97, 0x03, 0x6c, 0x01, 0x41, 0x01, 0x59, 0x00, 0x46, 0xff, + 0xf5, 0x00, 0x5d, 0x02, 0x04, 0x00, 0x55, 0xff, 0x70, 0x00, 0x67, 0x00, 0xc7, 0x00, 0x7a, 0x00, + 0x06, 0xfa, 0x06, 0xf7, 0x36, 0xf2, 0x4b, 0xf1, 0xe1, 0xf3, 0xcb, 0xf3, 0x22, 0xf1, 0x33, 0xed, + 0x0c, 0xec, 0x2c, 0xeb, 0x30, 0xeb, 0xa0, 0xea, 0x2d, 0xec, 0xc7, 0xeb, 0x48, 0xed, 0x05, 0xf2, + 0x89, 0xf3, 0x19, 0xf8, 0x67, 0xf9, 0xb0, 0xf9, 0x6d, 0xfd, 0x00, 0x01, 0x57, 0x03, 0xf0, 0x04, + 0xbd, 0x06, 0x9a, 0x08, 0x6d, 0x0b, 0xfc, 0x0d, 0x1e, 0x10, 0x9d, 0x10, 0x33, 0x10, 0xdb, 0x11, + 0x06, 0x12, 0xea, 0x11, 0xd4, 0x11, 0xa8, 0x10, 0xdd, 0x0f, 0x2e, 0x12, 0xb9, 0x12, 0x4d, 0x12, + 0x1e, 0x10, 0x41, 0x0b, 0x88, 0x07, 0x91, 0x04, 0x81, 0x03, 0x44, 0x01, 0xbc, 0xfc, 0x4b, 0xf8, + 0xa2, 0xf4, 0xaa, 0xf3, 0xf4, 0xf0, 0x3d, 0xef, 0x48, 0xef, 0x79, 0xea, 0x2e, 0xe8, 0x8a, 0xe9, + 0xe7, 0xe9, 0x81, 0xea, 0x39, 0xe9, 0x8c, 0xe2, 0xfe, 0xe0, 0xc1, 0xdd, 0x4c, 0xdd, 0xa0, 0xdf, + 0xf2, 0xe1, 0xae, 0xe2, 0x5a, 0xe3, 0x57, 0xe5, 0x92, 0xe8, 0xd9, 0xeb, 0x56, 0xed, 0x26, 0xf2, + 0xb4, 0xf4, 0x74, 0xf8, 0xdf, 0xff, 0xae, 0x02, 0xac, 0x08, 0x18, 0x0c, 0xb7, 0x0e, 0x8d, 0x14, + 0x27, 0x16, 0x4b, 0x18, 0x22, 0x18, 0xb1, 0x18, 0x93, 0x1c, 0xcc, 0x20, 0x05, 0x22, 0x30, 0x23, + 0x70, 0x24, 0xb6, 0x23, 0x4b, 0x26, 0xc2, 0x25, 0x55, 0x24, 0xc2, 0x22, 0x30, 0x21, 0x5d, 0x22, + 0x23, 0x22, 0x74, 0x20, 0xf6, 0x1c, 0x65, 0x18, 0xc3, 0x15, 0xb9, 0x14, 0x10, 0x13, 0x33, 0x11, + 0x11, 0x0e, 0xcb, 0x09, 0xdc, 0x07, 0xe7, 0x06, 0xab, 0x06, 0x9b, 0x05, 0x7d, 0x04, 0x12, 0x05, + 0x88, 0x02, 0x74, 0xff, 0x9d, 0xfe, 0xf2, 0xf8, 0x1d, 0xf6, 0x33, 0xf1, 0x9f, 0xe9, 0xc7, 0xe3, + 0x00, 0xda, 0xfb, 0xd6, 0xbf, 0xd5, 0xf6, 0xd4, 0x19, 0xd0, 0x23, 0xcc, 0xd8, 0xc9, 0x33, 0xca, + 0x63, 0xcd, 0x5c, 0xcf, 0x98, 0xd3, 0x1a, 0xd4, 0x55, 0xd7, 0x42, 0xdd, 0x6d, 0xe1, 0x51, 0xe8, + 0xb6, 0xea, 0x20, 0xef, 0x87, 0xf4, 0x99, 0xf9, 0x5b, 0x00, 0x89, 0x06, 0x36, 0x0a, 0xbd, 0x0d, + 0xb7, 0x10, 0xff, 0x11, 0xf8, 0x14, 0x98, 0x16, 0xda, 0x18, 0xab, 0x1a, 0x94, 0x1c, 0x9f, 0x1e, + 0x7a, 0x1e, 0x9b, 0x19, 0x5a, 0x18, 0x93, 0x18, 0x07, 0x18, 0x8f, 0x19, 0x33, 0x18, 0x71, 0x15, + 0xec, 0x11, 0x7d, 0x12, 0x3a, 0x14, 0x1c, 0x12, 0x81, 0x0f, 0xee, 0x0f, 0xa1, 0x11, 0xab, 0x13, + 0xe2, 0x13, 0x2c, 0x14, 0xa1, 0x11, 0xd0, 0x0c, 0x0c, 0x0e, 0xe0, 0x0d, 0x01, 0x0c, 0x71, 0x0a, + 0x6d, 0x02, 0xa0, 0xfb, 0x45, 0xf5, 0xfe, 0xf0, 0xf3, 0xef, 0x89, 0xef, 0x61, 0xed, 0xa7, 0xe9, + 0xbf, 0xe6, 0x8a, 0xe4, 0x80, 0xe3, 0xc5, 0xe0, 0x4b, 0xe0, 0xfc, 0xe1, 0x5a, 0xe0, 0xd6, 0xe3, + 0x82, 0xe3, 0xf5, 0xe3, 0xee, 0xe6, 0x7d, 0xe6, 0x44, 0xec, 0xff, 0xee, 0xb2, 0xf0, 0xd8, 0xf3, + 0x18, 0xf7, 0x0f, 0xfc, 0xc5, 0xff, 0x60, 0x02, 0xc1, 0x05, 0xea, 0x08, 0x93, 0x0a, 0x62, 0x0c, + 0x41, 0x0c, 0xe8, 0x0b, 0x41, 0x0b, 0xf7, 0x0c, 0x66, 0x11, 0x7c, 0x13, 0xf5, 0x11, 0xcd, 0x10, + 0xb4, 0x0d, 0xec, 0x0a, 0x89, 0x0c, 0x95, 0x0d, 0xa4, 0x0e, 0x0b, 0x0e, 0x67, 0x0c, 0x73, 0x0d, + 0xbb, 0x0d, 0x51, 0x0f, 0x90, 0x0d, 0x96, 0x0e, 0xc9, 0x10, 0xfe, 0x0e, 0x05, 0x0e, 0x87, 0x0e, + 0x62, 0x0c, 0x83, 0x0b, 0x56, 0x08, 0xda, 0x01, 0xe4, 0xfd, 0xa5, 0xf7, 0xf5, 0xf6, 0x19, 0xf7, + 0x68, 0xf4, 0x87, 0xef, 0xcb, 0xe9, 0x83, 0xe6, 0x64, 0xe5, 0x31, 0xe4, 0x3e, 0xe3, 0xf7, 0xe4, + 0x60, 0xe3, 0x84, 0xe4, 0xaf, 0xe8, 0xe9, 0xe9, 0x8a, 0xee, 0xc2, 0xef, 0x61, 0xf4, 0x62, 0xfa, + 0x4b, 0xfd, 0xca, 0x02, 0x68, 0x05, 0x52, 0x07, 0x5e, 0x0a, 0xac, 0x0c, 0xde, 0x0d, 0x87, 0x10, + 0x0a, 0x10, 0xd0, 0x10, 0xc0, 0x10, 0xd9, 0x0f, 0x6b, 0x0f, 0x68, 0x0c, 0x19, 0x08, 0x10, 0x07, + 0xac, 0x07, 0x55, 0x06, 0x0c, 0x07, 0x8e, 0x05, 0xfe, 0x03, 0xba, 0x01, 0x2f, 0x02, 0x21, 0x05, + 0xa9, 0x03, 0xc7, 0x03, 0x96, 0x04, 0x9b, 0x06, 0xd5, 0x09, 0x7f, 0x0c, 0x2a, 0x13, 0xe5, 0x10, + 0xd5, 0x0d, 0xca, 0x0e, 0x43, 0x0d, 0x3d, 0x0e, 0xd3, 0x0e, 0x46, 0x09, 0xad, 0x04, 0xb7, 0x00, + 0xc3, 0xff, 0xf8, 0xfe, 0xa8, 0xfc, 0xaf, 0xf7, 0x69, 0xf2, 0xa8, 0xed, 0xe8, 0xec, 0x91, 0xed, + 0x8b, 0xea, 0x8c, 0xeb, 0xa3, 0xe9, 0xa8, 0xe8, 0xd9, 0xec, 0x29, 0xed, 0x30, 0xf1, 0xe0, 0xf2, + 0x5d, 0xf3, 0x4b, 0xf7, 0xbe, 0xf8, 0xac, 0xfa, 0x50, 0xfd, 0xf2, 0xff, 0xb4, 0x02, 0xd1, 0x05, + 0xa5, 0x05, 0x9c, 0x06, 0x07, 0x07, 0x00, 0x07, 0x27, 0x0b, 0xf9, 0x0a, 0xf1, 0x0b, 0xd6, 0x0c, + 0x72, 0x0a, 0xef, 0x0c, 0x63, 0x0d, 0x3e, 0x09, 0x54, 0x06, 0x30, 0x02, 0x5e, 0xfd, 0x3e, 0xfb, + 0xac, 0xfa, 0x18, 0xf9, 0x6c, 0xf5, 0xd3, 0xf1, 0x37, 0xf1, 0x33, 0xf1, 0xfd, 0xf2, 0xdf, 0xf5, + 0xf0, 0xf7, 0x5c, 0xfb, 0x97, 0xfa, 0x79, 0xfa, 0x6e, 0xfc, 0x5b, 0xfd, 0x8c, 0xff, 0x22, 0xfd, + 0xed, 0xfb, 0x20, 0xf8, 0x99, 0xf3, 0xd0, 0xf4, 0x67, 0xf8, 0xb5, 0xfa, 0xfe, 0xf8, 0xd6, 0xf8, + 0x29, 0xf4, 0x43, 0xf5, 0x51, 0xf5, 0xc6, 0xf6, 0xa6, 0xf9, 0x42, 0xf8, 0xd2, 0xfb, 0xda, 0xfe, + 0x65, 0x03, 0x03, 0x07, 0x10, 0x05, 0x6a, 0x07, 0xa9, 0x0a, 0x54, 0x0c, 0xd0, 0x10, 0x78, 0x14, + 0x3a, 0x15, 0x18, 0x19, 0x91, 0x1a, 0x2e, 0x1b, 0x3d, 0x1c, 0xf9, 0x1b, 0x37, 0x1c, 0x04, 0x1d, + 0xd7, 0x1d, 0x70, 0x1b, 0xef, 0x17, 0x6d, 0x14, 0x35, 0x15, 0xf6, 0x11, 0xc8, 0x10, 0x68, 0x0d, + 0x04, 0x06, 0x66, 0x02, 0x86, 0x00, 0x34, 0x00, 0x5c, 0xfe, 0x2c, 0xfc, 0x7d, 0xfa, 0xd6, 0xfa, + 0x4f, 0xfe, 0x4c, 0x02, 0x72, 0x03, 0x2a, 0x03, 0xe6, 0x01, 0xd0, 0xfe, 0xfa, 0x00, 0x91, 0xff, + 0x61, 0xfe, 0x76, 0xfa, 0x25, 0xf4, 0x55, 0xf0, 0x11, 0xe9, 0xbb, 0xe7, 0xce, 0xe7, 0x84, 0xe7, + 0x6f, 0xe2, 0xa5, 0xdf, 0xfd, 0xdc, 0xb6, 0xdc, 0x86, 0xdf, 0xe9, 0xdf, 0x45, 0xe2, 0x79, 0xe0, + 0x78, 0xe2, 0x9c, 0xe7, 0x25, 0xea, 0x6d, 0xef, 0xf0, 0xf0, 0x7c, 0xf3, 0xd6, 0xf9, 0x72, 0xfd, + 0x09, 0x00, 0x11, 0x03, 0xb4, 0x04, 0x04, 0x07, 0x77, 0x0b, 0x60, 0x0d, 0xda, 0x0f, 0x6a, 0x10, + 0xcd, 0x12, 0xc6, 0x15, 0x2c, 0x14, 0xe9, 0x13, 0x8d, 0x11, 0x7e, 0x0d, 0xee, 0x08, 0x52, 0x0b, + 0x1a, 0x0c, 0x4b, 0x0b, 0x5b, 0x08, 0x0b, 0x05, 0xd3, 0x02, 0x73, 0x01, 0x20, 0x05, 0x1a, 0x05, + 0xf2, 0x02, 0xca, 0x03, 0xd7, 0x05, 0x9f, 0x09, 0x1c, 0x0b, 0xea, 0x0c, 0xc6, 0x0b, 0x29, 0x09, + 0x4c, 0x0a, 0x5e, 0x09, 0x93, 0x08, 0x75, 0x06, 0xb7, 0xfe, 0xb4, 0xfa, 0xec, 0xf4, 0x0a, 0xf5, + 0xc3, 0xf6, 0x09, 0xf8, 0xd9, 0xf6, 0x39, 0xf3, 0x47, 0xf1, 0x57, 0xee, 0x49, 0xef, 0xd4, 0xeb, + 0xfd, 0xeb, 0xf1, 0xea, 0x79, 0xe9, 0x6d, 0xee, 0x82, 0xee, 0x04, 0xf1, 0xd4, 0xf1, 0x21, 0xf3, + 0xe1, 0xf7, 0xd1, 0xfa, 0xc8, 0xfd, 0x55, 0x00, 0xe6, 0x02, 0x40, 0x05, 0xa6, 0x08, 0xa1, 0x0a, + 0xed, 0x0d, 0xf4, 0x0e, 0x23, 0x0f, 0x80, 0x10, 0xdc, 0x0f, 0x9e, 0x10, 0x04, 0x11, 0x32, 0x0f, + 0x65, 0x10, 0x39, 0x10, 0x58, 0x0d, 0x5d, 0x0c, 0xf6, 0x08, 0xa4, 0x02, 0x26, 0xff, 0xbc, 0x00, + 0xc1, 0x02, 0x14, 0x01, 0xe4, 0xfe, 0x66, 0xfe, 0xf6, 0xfd, 0xf5, 0xff, 0x50, 0x03, 0x46, 0x07, + 0xb5, 0x0a, 0x59, 0x09, 0x0a, 0x0a, 0x53, 0x0a, 0xcb, 0x09, 0xb9, 0x08, 0x10, 0x04, 0x82, 0x01, + 0x3e, 0xff, 0x01, 0xfa, 0x1a, 0xf9, 0x3f, 0xf8, 0x2b, 0xf6, 0x52, 0xf2, 0xed, 0xef, 0x20, 0xee, + 0x07, 0xef, 0xbe, 0xed, 0xa3, 0xed, 0x78, 0xee, 0x32, 0xec, 0xa9, 0xee, 0xca, 0xf1, 0x0f, 0xf7, + 0x0a, 0xfe, 0xef, 0xfe, 0x81, 0x03, 0xa5, 0x07, 0x8d, 0x09, 0x07, 0x0e, 0x53, 0x11, 0x40, 0x12, + 0xc2, 0x13, 0xf2, 0x13, 0x6d, 0x14, 0x2e, 0x15, 0x2f, 0x13, 0x8a, 0x11, 0x60, 0x0f, 0x80, 0x0e, + 0x88, 0x0d, 0xe9, 0x09, 0xb0, 0x05, 0x5f, 0x06, 0xfe, 0x02, 0x6c, 0x02, 0xdd, 0x00, 0x82, 0xfb, + 0x5a, 0xf7, 0xdf, 0xf4, 0xae, 0xf6, 0x03, 0xf7, 0x7b, 0xf5, 0x44, 0xf5, 0x1b, 0xf6, 0xb9, 0xf9, + 0xf7, 0xfe, 0xf2, 0x01, 0x77, 0x04, 0x46, 0x05, 0xde, 0x02, 0x63, 0x05, 0x8d, 0x05, 0x92, 0x06, + 0x88, 0x07, 0xb4, 0x00, 0x9b, 0xfe, 0xcd, 0xfa, 0x31, 0xf8, 0xf5, 0xf7, 0x7a, 0xf8, 0x4c, 0xf5, + 0x49, 0xf3, 0x81, 0xf1, 0xf7, 0xf0, 0xd3, 0xf0, 0x4f, 0xef, 0xd6, 0xf1, 0x45, 0xf2, 0x59, 0xf4, + 0xf6, 0xf9, 0xac, 0xf9, 0x74, 0xfd, 0x39, 0x00, 0x9e, 0x00, 0xba, 0x05, 0xa1, 0x08, 0x73, 0x0a, + 0x06, 0x0c, 0x63, 0x0d, 0xd2, 0x0e, 0x9e, 0x0f, 0x15, 0x0f, 0x0c, 0x0f, 0x53, 0x0d, 0xdd, 0x0c, + 0x6e, 0x0d, 0xb5, 0x0d, 0xb6, 0x0c, 0xae, 0x0b, 0xf4, 0x03, 0x78, 0x01, 0x75, 0x02, 0x35, 0xfe, + 0x47, 0xfb, 0xc4, 0xf5, 0x67, 0xee, 0x86, 0xe7, 0xf3, 0xe6, 0x5d, 0xe7, 0xc4, 0xe3, 0xcd, 0xe0, + 0xce, 0xdf, 0x25, 0xe2, 0xdd, 0xe5, 0x76, 0xea, 0x9a, 0xed, 0x3b, 0xef, 0xff, 0xef, 0x01, 0xf2, + 0x8b, 0xf7, 0xef, 0xf7, 0xa0, 0xf9, 0x71, 0xf4, 0x11, 0xf3, 0x1b, 0xf5, 0x34, 0xf3, 0xee, 0xf5, + 0xd2, 0xf7, 0x26, 0xf8, 0x9a, 0xf6, 0x38, 0xf9, 0x2c, 0xf9, 0x91, 0xf9, 0x0d, 0xf9, 0xa9, 0xf9, + 0xe4, 0xfe, 0xa1, 0xff, 0x74, 0x04, 0x65, 0x06, 0xb1, 0x08, 0xd7, 0x0e, 0xcc, 0x10, 0xdf, 0x14, + 0x47, 0x1a, 0xd2, 0x1c, 0xa8, 0x20, 0xf9, 0x24, 0x99, 0x27, 0x38, 0x2a, 0x1c, 0x2a, 0xaa, 0x2a, + 0xcf, 0x2b, 0x1b, 0x2b, 0x62, 0x29, 0x60, 0x27, 0xff, 0x24, 0x5e, 0x23, 0x63, 0x1e, 0xea, 0x17, + 0x33, 0x17, 0xd9, 0x11, 0x5c, 0x0d, 0xfb, 0x09, 0x61, 0x04, 0x8a, 0xfb, 0x96, 0xf5, 0x52, 0xf6, + 0xe4, 0xf5, 0xac, 0xf4, 0x92, 0xf3, 0x39, 0xf3, 0x28, 0xf2, 0x4b, 0xf4, 0x61, 0xf8, 0xd0, 0xf9, + 0x70, 0xf7, 0x56, 0xf4, 0x93, 0xf3, 0xda, 0xf2, 0xef, 0xf3, 0xfb, 0xee, 0x2b, 0xe6, 0xab, 0xe2, + 0xf4, 0xdd, 0x6d, 0xdd, 0xa3, 0xde, 0xd0, 0xdd, 0x86, 0xda, 0x02, 0xd8, 0xd7, 0xd8, 0xb3, 0xdb, + 0xdd, 0xde, 0x0e, 0xe0, 0x4d, 0xe2, 0x65, 0xe4, 0x5a, 0xe9, 0xf2, 0xef, 0x06, 0xf4, 0xf2, 0xfa, + 0x63, 0xfe, 0xf8, 0x01, 0x86, 0x09, 0x9d, 0x0e, 0x90, 0x12, 0x74, 0x15, 0x46, 0x18, 0xd0, 0x1a, + 0x8a, 0x1e, 0xdb, 0x21, 0x00, 0x23, 0xc1, 0x22, 0x66, 0x22, 0x07, 0x23, 0x20, 0x21, 0x94, 0x1c, + 0xfa, 0x1a, 0xeb, 0x15, 0xf5, 0x12, 0x17, 0x13, 0x93, 0x10, 0x24, 0x0b, 0x36, 0x07, 0x79, 0x03, + 0xd3, 0xfe, 0x52, 0xff, 0x70, 0xff, 0xa3, 0xfd, 0xfe, 0xfa, 0x11, 0xfa, 0xd3, 0xfb, 0x72, 0xfd, + 0xbc, 0x00, 0xd9, 0x02, 0x98, 0x00, 0x00, 0xfe, 0x8d, 0xfd, 0xe4, 0xfc, 0x11, 0xfd, 0x18, 0xfb, + 0xc5, 0xf2, 0xfc, 0xef, 0x49, 0xec, 0xd4, 0xea, 0x21, 0xeb, 0xd2, 0xea, 0x1b, 0xe7, 0xb4, 0xe3, + 0x98, 0xe2, 0x75, 0xe0, 0xe2, 0xdf, 0x3c, 0xde, 0xd1, 0xde, 0xb6, 0xdf, 0x56, 0xe1, 0x4f, 0xe7, + 0xa7, 0xe9, 0xcb, 0xed, 0xd7, 0xf1, 0xfd, 0xf4, 0x53, 0xfd, 0x41, 0x03, 0xb0, 0x07, 0x24, 0x0d, + 0x06, 0x12, 0xd1, 0x16, 0xed, 0x1b, 0xbd, 0x1e, 0x78, 0x20, 0x67, 0x22, 0x1e, 0x25, 0x68, 0x27, + 0xbe, 0x28, 0x0a, 0x27, 0x03, 0x24, 0x6d, 0x1f, 0x9a, 0x1f, 0x6c, 0x1e, 0x44, 0x19, 0xb8, 0x15, + 0x4d, 0x0f, 0x21, 0x08, 0x16, 0x03, 0x06, 0x02, 0xa2, 0x00, 0xa8, 0xfd, 0x93, 0xfa, 0x97, 0xf8, + 0x53, 0xf8, 0xb6, 0xfa, 0x05, 0xfd, 0x2e, 0xff, 0xcc, 0x00, 0xc1, 0xfd, 0xce, 0xfc, 0xad, 0xff, + 0xa9, 0xfd, 0xa6, 0xfe, 0xa7, 0xf9, 0x0c, 0xf3, 0x7a, 0xf0, 0x76, 0xec, 0x3e, 0xeb, 0xa4, 0xea, + 0x38, 0xe9, 0x91, 0xe4, 0x79, 0xe1, 0x30, 0xe1, 0xe7, 0xe2, 0x1e, 0xe1, 0xc0, 0xdf, 0x9c, 0xe0, + 0xc8, 0xde, 0x34, 0xe3, 0x42, 0xe9, 0x95, 0xed, 0xf8, 0xf3, 0x54, 0xf6, 0x20, 0xfb, 0x17, 0x02, + 0xf0, 0x05, 0xc8, 0x09, 0xc1, 0x0d, 0xbb, 0x12, 0x1c, 0x18, 0xd7, 0x19, 0xc1, 0x1b, 0x98, 0x1d, + 0x8a, 0x1d, 0x33, 0x1e, 0x2a, 0x1e, 0xf1, 0x1d, 0xac, 0x1c, 0xe2, 0x17, 0xcb, 0x15, 0xa8, 0x15, + 0x99, 0x14, 0xe7, 0x13, 0x38, 0x11, 0xb8, 0x0c, 0x60, 0x07, 0x24, 0x04, 0x88, 0x04, 0x2f, 0x04, + 0x87, 0x01, 0xd7, 0xfe, 0xab, 0xfd, 0x29, 0xff, 0xd5, 0x01, 0xb3, 0x03, 0xeb, 0x03, 0x71, 0x03, + 0x17, 0x00, 0xf0, 0x01, 0x97, 0x01, 0xa5, 0x01, 0x64, 0xff, 0x09, 0xf6, 0x04, 0xf4, 0x46, 0xec, + 0x13, 0xea, 0x2a, 0xea, 0x54, 0xea, 0x76, 0xe7, 0x40, 0xe3, 0x2e, 0xe2, 0x5e, 0xe1, 0xce, 0xe3, + 0x6f, 0xe2, 0xd2, 0xe5, 0x2e, 0xe6, 0x2c, 0xe8, 0x35, 0xee, 0xf5, 0xed, 0x66, 0xf2, 0x6b, 0xf4, + 0x8e, 0xf8, 0xd3, 0xfe, 0xca, 0x03, 0xb2, 0x06, 0x04, 0x09, 0x43, 0x0b, 0x1f, 0x0e, 0xed, 0x10, + 0xba, 0x11, 0x65, 0x15, 0xa4, 0x17, 0x78, 0x18, 0x2a, 0x1a, 0xa5, 0x19, 0x3b, 0x17, 0xa5, 0x11, + 0x44, 0x0e, 0x95, 0x0f, 0xf1, 0x0b, 0xe2, 0x08, 0xc2, 0x04, 0x19, 0xfe, 0x3b, 0xf7, 0x61, 0xf4, + 0xb2, 0xf5, 0x44, 0xf4, 0x55, 0xf1, 0x73, 0xee, 0xd1, 0xef, 0x6e, 0xf1, 0xfb, 0xf2, 0x54, 0xf6, + 0x6c, 0xf6, 0x8e, 0xf7, 0x23, 0xf8, 0xec, 0xfb, 0x1c, 0xfd, 0x80, 0xfd, 0x4c, 0xfb, 0xd3, 0xf6, + 0xe3, 0xf6, 0x19, 0xf4, 0x48, 0xf6, 0x0e, 0xf7, 0xa5, 0xf7, 0xf4, 0xf4, 0x56, 0xf1, 0xa7, 0xf1, + 0x05, 0xf3, 0x48, 0xf4, 0x3a, 0xf2, 0x5b, 0xf3, 0xc2, 0xf3, 0xed, 0xf7, 0xf4, 0xfc, 0xf0, 0xfd, + 0x35, 0x01, 0x02, 0x02, 0xb2, 0x06, 0x87, 0x0d, 0xc5, 0x12, 0x59, 0x15, 0xb6, 0x16, 0x5a, 0x1a, + 0xea, 0x1f, 0xd7, 0x24, 0x1f, 0x28, 0x2e, 0x29, 0x70, 0x28, 0x05, 0x28, 0x6e, 0x28, 0xa8, 0x29, + 0xa2, 0x28, 0x80, 0x26, 0x0c, 0x1e, 0xac, 0x1d, 0xdd, 0x1d, 0xa3, 0x1a, 0x0f, 0x17, 0x9c, 0x11, + 0x6f, 0x09, 0x62, 0x02, 0x5e, 0x05, 0xe2, 0x04, 0xaf, 0x01, 0x2b, 0xfe, 0xd6, 0xfc, 0x13, 0xfe, + 0xb0, 0xfd, 0xd5, 0x00, 0x71, 0xff, 0x8e, 0xfb, 0x7c, 0xf9, 0x69, 0xf8, 0x30, 0xf6, 0x20, 0xf5, + 0x08, 0xf2, 0x6f, 0xe8, 0x78, 0xe5, 0x55, 0xdf, 0xb8, 0xdb, 0xb0, 0xda, 0x2b, 0xda, 0xf2, 0xd8, + 0x8a, 0xd6, 0x86, 0xd7, 0xeb, 0xd8, 0xac, 0xd9, 0xfa, 0xd9, 0x0e, 0xdd, 0x9c, 0xdf, 0x43, 0xe3, + 0xeb, 0xe8, 0xfe, 0xe9, 0xd3, 0xed, 0xf6, 0xf2, 0x90, 0xf7, 0x4f, 0xfd, 0xde, 0x00, 0xe6, 0x03, + 0x6e, 0x07, 0x89, 0x0a, 0x9e, 0x0f, 0x17, 0x13, 0x50, 0x15, 0x6e, 0x17, 0x8d, 0x19, 0x5e, 0x19, + 0xe2, 0x1a, 0x37, 0x18, 0xce, 0x14, 0xa1, 0x15, 0x3f, 0x15, 0xe8, 0x14, 0x72, 0x14, 0x2e, 0x12, + 0x0e, 0x0c, 0x0b, 0x09, 0x44, 0x09, 0xfe, 0x09, 0x6f, 0x09, 0x95, 0x07, 0x5b, 0x06, 0x4b, 0x04, + 0x6b, 0x05, 0xc8, 0x08, 0xea, 0x08, 0x47, 0x08, 0xd0, 0x07, 0x35, 0x07, 0x21, 0x06, 0x5a, 0x05, + 0xdf, 0x01, 0x78, 0x00, 0xa0, 0xfc, 0x3b, 0xf5, 0x5b, 0xf3, 0x5b, 0xed, 0x21, 0xe9, 0xfb, 0xe7, + 0xd4, 0xe6, 0xde, 0xe2, 0x2e, 0xde, 0x45, 0xdb, 0x08, 0xd9, 0x13, 0xd9, 0x52, 0xd8, 0x3f, 0xda, + 0x5d, 0xd9, 0xf2, 0xda, 0x54, 0xe1, 0xf3, 0xe4, 0xaf, 0xea, 0xf5, 0xed, 0xff, 0xf0, 0x30, 0xf5, + 0x12, 0xfa, 0xc6, 0x00, 0x0f, 0x08, 0x8a, 0x0d, 0xf3, 0x0f, 0x24, 0x14, 0xc1, 0x17, 0x8b, 0x1d, + 0xd2, 0x20, 0xb5, 0x1f, 0x50, 0x22, 0xc1, 0x22, 0x2e, 0x21, 0x49, 0x21, 0xc2, 0x20, 0x98, 0x1e, + 0xd8, 0x1a, 0xba, 0x19, 0x79, 0x14, 0x35, 0x0f, 0xd6, 0x0b, 0x6f, 0x08, 0x5e, 0x06, 0x33, 0x04, + 0x4d, 0x03, 0xcc, 0xff, 0x7c, 0x00, 0xc1, 0x02, 0x1b, 0x04, 0x4b, 0x06, 0xdd, 0x07, 0x18, 0x07, + 0x0b, 0x05, 0x8b, 0x06, 0x3f, 0x06, 0x17, 0x06, 0x25, 0x07, 0xb5, 0xfe, 0x27, 0xf8, 0xc6, 0xf4, + 0x7e, 0xf0, 0xf5, 0xee, 0xae, 0xee, 0xb0, 0xed, 0x0d, 0xe8, 0x56, 0xe6, 0x17, 0xe5, 0x02, 0xe4, + 0x42, 0xe2, 0xf1, 0xe0, 0x80, 0xe3, 0xcc, 0xe2, 0x2a, 0xe8, 0xc8, 0xea, 0xcc, 0xee, 0x7a, 0xf4, + 0x44, 0xf7, 0xb4, 0xfc, 0xb5, 0x00, 0x25, 0x04, 0x5c, 0x07, 0x27, 0x0d, 0x64, 0x0f, 0x2c, 0x11, + 0x80, 0x13, 0x75, 0x15, 0xb6, 0x17, 0x37, 0x16, 0xdb, 0x17, 0x45, 0x17, 0x2d, 0x14, 0xf6, 0x12, + 0x06, 0x11, 0x13, 0x11, 0x9d, 0x12, 0x8d, 0x12, 0xa7, 0x0f, 0x6f, 0x0c, 0xc0, 0x09, 0xa7, 0x07, + 0x63, 0x08, 0x87, 0x08, 0x80, 0x07, 0xc5, 0x05, 0x0b, 0x06, 0x1d, 0x08, 0x4d, 0x09, 0x49, 0x0c, + 0xf1, 0x0c, 0x93, 0x0b, 0x37, 0x0c, 0x4a, 0x0c, 0x0b, 0x0d, 0xc3, 0x0a, 0xbe, 0x0b, 0x2b, 0x04, + 0x9c, 0xfd, 0xd9, 0xfa, 0x25, 0xf5, 0x88, 0xf1, 0x8e, 0xef, 0x7e, 0xee, 0x62, 0xe9, 0x0e, 0xe7, + 0x7c, 0xe5, 0xe6, 0xe3, 0x4c, 0xe2, 0x96, 0xe2, 0x0e, 0xe6, 0x84, 0xe5, 0x14, 0xe9, 0x3d, 0xea, + 0xe4, 0xec, 0x43, 0xf1, 0x42, 0xf4, 0xd7, 0xf8, 0xb8, 0xfc, 0xaf, 0xff, 0xe7, 0x01, 0x5f, 0x05, + 0xb6, 0x07, 0x1c, 0x0b, 0x81, 0x0d, 0x01, 0x10, 0x9e, 0x11, 0xe7, 0x11, 0x73, 0x13, 0xbb, 0x12, + 0x51, 0x11, 0xf6, 0x0e, 0x2f, 0x0b, 0x05, 0x05, 0x47, 0x03, 0xf5, 0x01, 0xda, 0xfc, 0xe9, 0xf6, + 0xb7, 0xf2, 0xed, 0xee, 0x0a, 0xec, 0x7f, 0xec, 0xb8, 0xec, 0x9b, 0xea, 0xd5, 0xe9, 0x83, 0xec, + 0x97, 0xee, 0xf6, 0xf1, 0x24, 0xf6, 0x93, 0xf7, 0xaa, 0xf9, 0x20, 0xfc, 0x8d, 0xfe, 0x81, 0x01, + 0x68, 0x03, 0x7b, 0xfd, 0x21, 0xfb, 0x00, 0xfa, 0x38, 0xf8, 0xc7, 0xfa, 0x4e, 0xfb, 0x4c, 0xfb, + 0xfc, 0xf8, 0x5b, 0xf7, 0x81, 0xf6, 0x94, 0xf6, 0x30, 0xf6, 0x1f, 0xf6, 0x87, 0xf6, 0x7e, 0xf7, + 0x59, 0xfc, 0x78, 0xfe, 0xbc, 0x00, 0x3e, 0x03, 0xc4, 0x05, 0x4b, 0x0a, 0x18, 0x0f, 0x05, 0x12, + 0x67, 0x14, 0x5c, 0x16, 0xd0, 0x18, 0xb0, 0x1c, 0xd3, 0x1e, 0x08, 0x21, 0xa9, 0x21, 0x1f, 0x22, + 0x3d, 0x22, 0x72, 0x22, 0x81, 0x22, 0xca, 0x1e, 0x56, 0x1a, 0x2c, 0x19, 0x4a, 0x19, 0x04, 0x17, + 0x69, 0x14, 0x6b, 0x0d, 0xab, 0x06, 0xa8, 0x01, 0x03, 0x01, 0xc4, 0x00, 0x81, 0xff, 0x72, 0xfe, + 0x95, 0xfc, 0xd0, 0xfc, 0xd3, 0xfd, 0xb4, 0xff, 0x24, 0x01, 0xf8, 0xff, 0xb7, 0xfc, 0xf4, 0xfa, + 0xfc, 0xfa, 0x35, 0xf8, 0x66, 0xf8, 0x2f, 0xf2, 0xaf, 0xea, 0xaf, 0xe8, 0xad, 0xe1, 0x7e, 0xde, + 0x35, 0xdc, 0x40, 0xdc, 0x8e, 0xdb, 0x14, 0xda, 0xff, 0xd9, 0x72, 0xdb, 0xd9, 0xdc, 0x81, 0xde, + 0x19, 0xe3, 0x8e, 0xe3, 0x2c, 0xe7, 0x3e, 0xec, 0x1d, 0xf1, 0x59, 0xf8, 0x96, 0xfb, 0x4d, 0x00, + 0xa9, 0x04, 0x86, 0x07, 0xf2, 0x0b, 0x25, 0x11, 0xc2, 0x14, 0xc4, 0x18, 0xd2, 0x1a, 0xee, 0x1b, + 0xa8, 0x1e, 0xd0, 0x1d, 0x9b, 0x1d, 0x9a, 0x1e, 0xfd, 0x1a, 0xce, 0x16, 0x10, 0x15, 0x1a, 0x15, + 0xce, 0x13, 0xd2, 0x11, 0xa0, 0x0f, 0x4f, 0x09, 0x08, 0x06, 0x12, 0x06, 0xca, 0x05, 0xa2, 0x03, + 0x7c, 0x02, 0x5a, 0x01, 0x31, 0x00, 0x5a, 0x02, 0x05, 0x04, 0xfe, 0x04, 0x56, 0x05, 0x46, 0x07, + 0x49, 0x06, 0x78, 0x04, 0x8c, 0x03, 0x17, 0x00, 0x4d, 0x00, 0x19, 0xfe, 0xc0, 0xf6, 0x9d, 0xf3, + 0x37, 0xed, 0x60, 0xe9, 0xf8, 0xe7, 0x9e, 0xe8, 0xcc, 0xe4, 0x57, 0xde, 0x28, 0xda, 0xcb, 0xd7, + 0xd1, 0xd8, 0xb7, 0xd7, 0xa4, 0xd8, 0x0e, 0xd7, 0xc3, 0xd9, 0x24, 0xe0, 0x30, 0xe3, 0x4e, 0xe9, + 0x6a, 0xeb, 0x47, 0xef, 0x28, 0xf7, 0x9f, 0xfe, 0x2d, 0x04, 0x22, 0x08, 0x73, 0x0d, 0xac, 0x13, + 0x10, 0x1b, 0x28, 0x20, 0x07, 0x24, 0x59, 0x24, 0x14, 0x26, 0xc9, 0x29, 0x6b, 0x2b, 0x84, 0x2b, + 0xeb, 0x26, 0x0a, 0x22, 0x7d, 0x1d, 0x4d, 0x1f, 0x36, 0x1f, 0x5f, 0x1a, 0xd7, 0x13, 0x47, 0x0c, + 0x5a, 0x07, 0x1d, 0x06, 0x98, 0x06, 0x61, 0x03, 0x01, 0xff, 0x50, 0xfc, 0x8f, 0xfc, 0x79, 0xff, + 0x63, 0x00, 0x26, 0x01, 0xfd, 0xfd, 0x57, 0xfc, 0x52, 0xfd, 0x9d, 0xfc, 0x91, 0xfc, 0x15, 0xfb, + 0x97, 0xf3, 0xb0, 0xee, 0x29, 0xec, 0x8d, 0xe7, 0x61, 0xe6, 0x51, 0xe5, 0x18, 0xe4, 0xf0, 0xe0, + 0x29, 0xdf, 0x47, 0xdd, 0x53, 0xdc, 0x10, 0xdb, 0x70, 0xdb, 0xfd, 0xdc, 0x1f, 0xdf, 0xd6, 0xe5, + 0xc0, 0xe9, 0xa9, 0xed, 0xa7, 0xf2, 0xca, 0xf5, 0x3b, 0xfc, 0x06, 0x02, 0x28, 0x06, 0x3c, 0x0a, + 0x1f, 0x0e, 0x2f, 0x13, 0xc8, 0x17, 0xe3, 0x19, 0xa4, 0x1a, 0xbb, 0x1b, 0x59, 0x1b, 0xc3, 0x1b, + 0xa1, 0x1c, 0xf1, 0x1a, 0x51, 0x17, 0x03, 0x12, 0x11, 0x15, 0xac, 0x15, 0x11, 0x16, 0x8a, 0x14, + 0xb7, 0x0f, 0xb3, 0x0b, 0xd3, 0x09, 0x11, 0x0c, 0x95, 0x0a, 0xef, 0x08, 0xda, 0x05, 0x14, 0x06, + 0x70, 0x08, 0x6d, 0x0b, 0xa1, 0x0e, 0x3b, 0x0d, 0x46, 0x0e, 0x82, 0x0d, 0xee, 0x0d, 0x50, 0x0f, + 0x22, 0x0c, 0x88, 0x09, 0xb0, 0x06, 0x97, 0xfe, 0x34, 0xfc, 0x05, 0xf7, 0xf1, 0xf0, 0x35, 0xef, + 0x69, 0xed, 0x80, 0xea, 0x30, 0xe7, 0x76, 0xe3, 0xae, 0xe0, 0x37, 0xe1, 0x3b, 0xe0, 0xbd, 0xe2, + 0xf3, 0xe1, 0xab, 0xe2, 0x81, 0xe7, 0x2f, 0xe9, 0x3d, 0xee, 0x34, 0xf1, 0x41, 0xf3, 0x9e, 0xf6, + 0x02, 0xfa, 0x51, 0xfe, 0xf6, 0x02, 0x9b, 0x05, 0xaa, 0x08, 0x5a, 0x0c, 0xcb, 0x0e, 0xaf, 0x12, + 0xcf, 0x14, 0x35, 0x15, 0xaa, 0x17, 0x04, 0x17, 0xad, 0x16, 0x3e, 0x11, 0xa8, 0x0b, 0x9f, 0x0b, + 0x53, 0x09, 0x9e, 0x08, 0x63, 0x03, 0x29, 0xfd, 0x1b, 0xf6, 0xae, 0xf4, 0xd2, 0xf5, 0xec, 0xf4, + 0xed, 0xf1, 0xb9, 0xed, 0xe4, 0xed, 0x16, 0xee, 0xe2, 0xf3, 0xc9, 0xf7, 0x78, 0xf9, 0x02, 0xfb, + 0x90, 0xfb, 0x75, 0x00, 0x29, 0x03, 0x4b, 0x03, 0x5c, 0x05, 0x5d, 0x00, 0x64, 0xfd, 0xde, 0xfe, + 0x16, 0xfb, 0x54, 0xfb, 0x15, 0xfc, 0x22, 0xfc, 0xc2, 0xf9, 0x65, 0xf8, 0xd9, 0xf6, 0x74, 0xf5, + 0xc8, 0xf3, 0xe3, 0xf3, 0x9f, 0xf6, 0x77, 0xf5, 0xce, 0xf9, 0x45, 0xfb, 0xc1, 0xfb, 0x19, 0x00, + 0x39, 0x00, 0x1c, 0x04, 0x24, 0x07, 0x75, 0x09, 0x73, 0x0c, 0x18, 0x10, 0xde, 0x13, 0x20, 0x17, + 0x18, 0x19, 0x4d, 0x1b, 0xaf, 0x1c, 0xb7, 0x1a, 0xca, 0x1a, 0x2d, 0x1c, 0x92, 0x1d, 0xd9, 0x1c, + 0x89, 0x19, 0xaa, 0x14, 0x81, 0x11, 0x19, 0x13, 0x19, 0x13, 0x18, 0x0f, 0xe1, 0x09, 0x15, 0x05, + 0x31, 0x03, 0xc0, 0x04, 0x89, 0x06, 0x87, 0x03, 0xc9, 0x00, 0x04, 0xff, 0x81, 0x00, 0x52, 0x03, + 0x48, 0x03, 0x2b, 0x02, 0x25, 0xfe, 0xb4, 0xfb, 0xf4, 0xfb, 0xc6, 0xfb, 0xd5, 0xf8, 0xce, 0xf4, + 0x17, 0xea, 0x8c, 0xe6, 0x6a, 0xe3, 0x04, 0xde, 0x30, 0xde, 0x1a, 0xdc, 0xfe, 0xd9, 0xab, 0xd9, + 0x20, 0xdc, 0x46, 0xdd, 0xab, 0xde, 0x2d, 0xde, 0xfa, 0xde, 0xf7, 0xe2, 0xa9, 0xe6, 0xe9, 0xec, + 0xc0, 0xee, 0x13, 0xf2, 0x2d, 0xf7, 0x61, 0xfa, 0xa7, 0x00, 0x66, 0x05, 0x2b, 0x07, 0x50, 0x0a, + 0x8f, 0x0e, 0x7c, 0x12, 0x36, 0x16, 0x21, 0x17, 0x45, 0x18, 0x1e, 0x18, 0x9b, 0x17, 0x88, 0x19, + 0xa8, 0x19, 0x37, 0x17, 0x13, 0x15, 0xb3, 0x0d, 0xc5, 0x0c, 0x11, 0x0f, 0x0c, 0x0e, 0x18, 0x0d, + 0xe4, 0x09, 0x52, 0x06, 0xc5, 0x02, 0x6a, 0x04, 0x3a, 0x05, 0xb5, 0x03, 0x96, 0x00, 0x88, 0x01, + 0x21, 0x02, 0x70, 0x03, 0x28, 0x07, 0x02, 0x06, 0x5b, 0x06, 0xe4, 0x03, 0x72, 0x03, 0xa1, 0x04, + 0xb9, 0x02, 0xcc, 0x03, 0xd4, 0xfe, 0xc9, 0xf7, 0x95, 0xf6, 0xcc, 0xf1, 0x49, 0xec, 0x73, 0xea, + 0x61, 0xe8, 0x21, 0xe4, 0x25, 0xe1, 0x91, 0xdd, 0xcb, 0xdc, 0x0c, 0xdc, 0xcc, 0xdb, 0x2c, 0xde, + 0xf9, 0xdc, 0x2c, 0xdf, 0xf4, 0xe2, 0x7a, 0xe4, 0xb5, 0xea, 0x19, 0xef, 0x21, 0xf3, 0x50, 0xfa, + 0xfd, 0xfe, 0x26, 0x05, 0x1b, 0x0b, 0x90, 0x10, 0xfb, 0x16, 0xef, 0x1b, 0xc0, 0x1f, 0xd0, 0x22, + 0x98, 0x25, 0x9d, 0x26, 0xb6, 0x28, 0xc2, 0x28, 0xfd, 0x28, 0x70, 0x25, 0x02, 0x22, 0xf5, 0x1f, + 0xc9, 0x1c, 0x6a, 0x1c, 0xe3, 0x17, 0x8d, 0x13, 0xab, 0x0e, 0x68, 0x0b, 0x72, 0x09, 0xc4, 0x08, + 0x6a, 0x07, 0x93, 0x03, 0xb8, 0x01, 0x42, 0x00, 0xb6, 0x02, 0xd2, 0x02, 0x86, 0x02, 0x42, 0x02, + 0x51, 0xfe, 0x1b, 0xfd, 0xa3, 0xfb, 0x1b, 0xfa, 0x90, 0xfa, 0xc1, 0xf4, 0x47, 0xef, 0xca, 0xed, + 0xe4, 0xe8, 0xc0, 0xe6, 0x4e, 0xe7, 0x61, 0xe5, 0xc6, 0xe1, 0xe7, 0xe0, 0x43, 0xdf, 0xc6, 0xde, + 0xf3, 0xde, 0x30, 0xe0, 0x88, 0xe2, 0xaf, 0xe3, 0x7f, 0xe9, 0x6c, 0xed, 0x77, 0xef, 0x09, 0xf4, + 0x05, 0xf6, 0x8d, 0xfa, 0xaf, 0x00, 0x56, 0x04, 0x38, 0x07, 0x74, 0x0b, 0xec, 0x0e, 0xd7, 0x12, + 0xb0, 0x15, 0xe9, 0x16, 0xc8, 0x15, 0x57, 0x14, 0x18, 0x16, 0x9e, 0x19, 0x3b, 0x19, 0x54, 0x16, + 0xb8, 0x14, 0x02, 0x11, 0x27, 0x14, 0x60, 0x16, 0x16, 0x16, 0x10, 0x12, 0xe7, 0x0c, 0x0a, 0x0a, + 0x66, 0x09, 0xe5, 0x0c, 0x7f, 0x0b, 0xc7, 0x08, 0x66, 0x06, 0xf2, 0x07, 0x68, 0x0a, 0xef, 0x0d, + 0xee, 0x0f, 0x34, 0x0e, 0x2b, 0x0e, 0x03, 0x0c, 0x3e, 0x0d, 0xd8, 0x0b, 0xa6, 0x08, 0x51, 0x07, + 0x30, 0x03, 0x97, 0xfc, 0x5d, 0xf9, 0x26, 0xf3, 0xb9, 0xed, 0xcb, 0xed, 0xd7, 0xec, 0xa8, 0xea, + 0xc5, 0xe6, 0xe6, 0xe4, 0xee, 0xe2, 0xd7, 0xe2, 0xb7, 0xe2, 0xc5, 0xe2, 0xb9, 0xe2, 0x1a, 0xe4, + 0xc4, 0xe8, 0x82, 0xea, 0xda, 0xee, 0x6a, 0xef, 0xbf, 0xf1, 0x90, 0xf5, 0x86, 0xf8, 0x5d, 0xfd, + 0xdd, 0xff, 0xbc, 0x03, 0xd7, 0x07, 0xb8, 0x0b, 0xb9, 0x0d, 0xe9, 0x0d, 0x05, 0x0d, 0x3f, 0x0d, + 0xce, 0x0e, 0x4f, 0x0e, 0xb8, 0x0b, 0x71, 0x07, 0xbc, 0x01, 0x54, 0xff, 0x54, 0xff, 0xe5, 0x00, + 0x39, 0xfd, 0x8b, 0xf8, 0x5e, 0xf5, 0x49, 0xf2, 0xd7, 0xf2, 0x6c, 0xf3, 0xf5, 0xf1, 0x8b, 0xef, + 0xe6, 0xf0, 0x5f, 0xf4, 0xea, 0xf8, 0x18, 0xfd, 0xbe, 0xfe, 0x5d, 0x01, 0xca, 0x01, 0xee, 0x03, + 0xec, 0x05, 0x67, 0x05, 0x03, 0x09, 0xbd, 0x09, 0x0e, 0x06, 0x19, 0x05, 0x8f, 0x00, 0x89, 0xfc, + 0x9f, 0xfd, 0x77, 0xfe, 0x49, 0xfd, 0x8f, 0xfa, 0xd1, 0xf7, 0x58, 0xf5, 0xcb, 0xf4, 0x27, 0xf6, + 0x40, 0xf8, 0xd6, 0xf7, 0xdc, 0xf7, 0x74, 0xfa, 0xa8, 0xfa, 0xf5, 0xfe, 0x49, 0x01, 0x2d, 0x03, + 0x0c, 0x06, 0x6c, 0x07, 0xf0, 0x0b, 0x25, 0x10, 0x55, 0x12, 0x4b, 0x14, 0x9e, 0x16, 0xf9, 0x17, + 0xcc, 0x1a, 0xfc, 0x1b, 0x95, 0x1c, 0x91, 0x1d, 0x08, 0x1c, 0x0d, 0x1b, 0x15, 0x18, 0x17, 0x15, + 0xbb, 0x0f, 0x3f, 0x0c, 0x11, 0x0e, 0xc5, 0x0c, 0x05, 0x0b, 0x95, 0x08, 0xa8, 0x04, 0x56, 0x01, + 0x61, 0x02, 0x30, 0x02, 0x67, 0xff, 0x8a, 0xfc, 0x4e, 0xfa, 0x80, 0xfd, 0xbf, 0xfe, 0xc9, 0xff, + 0x2d, 0xfe, 0xb3, 0xf7, 0x04, 0xf6, 0xfc, 0xf4, 0xdc, 0xf3, 0xa8, 0xf3, 0x52, 0xf0, 0x16, 0xe9, + 0x74, 0xe8, 0xad, 0xe7, 0xca, 0xe3, 0xd4, 0xe3, 0x55, 0xe3, 0x1a, 0xe3, 0x6e, 0xe2, 0xda, 0xe2, + 0x9c, 0xe1, 0x91, 0xdf, 0x83, 0xe0, 0x92, 0xe3, 0x30, 0xe6, 0xad, 0xe9, 0x57, 0xed, 0x1d, 0xf0, + 0x4d, 0xf4, 0x89, 0xf8, 0x91, 0xfc, 0xc8, 0x01, 0xbc, 0x06, 0x3d, 0x0a, 0x26, 0x0e, 0x24, 0x12, + 0x77, 0x15, 0x5a, 0x18, 0xdd, 0x19, 0xda, 0x1b, 0xec, 0x1c, 0xc0, 0x1d, 0x43, 0x1f, 0xb0, 0x1f, + 0x59, 0x1d, 0x84, 0x1b, 0x2f, 0x16, 0x23, 0x15, 0xc2, 0x12, 0x59, 0x11, 0x10, 0x10, 0xf0, 0x0c, + 0x2d, 0x09, 0x0b, 0x03, 0xaa, 0x02, 0xf4, 0xff, 0xc9, 0xff, 0x58, 0xfd, 0xe9, 0xfb, 0x6b, 0xfb, + 0x75, 0xfa, 0xb1, 0xfd, 0x82, 0xfd, 0x1c, 0xff, 0x20, 0xfe, 0x5b, 0xfe, 0xe5, 0xff, 0x5b, 0xff, + 0x83, 0xff, 0x17, 0xfe, 0xe8, 0xf7, 0x4f, 0xf3, 0xb4, 0xf3, 0x35, 0xed, 0xcd, 0xec, 0x4b, 0xec, + 0x1a, 0xea, 0x46, 0xe6, 0x26, 0xe5, 0x90, 0xe4, 0xa9, 0xe0, 0x50, 0xe0, 0x0f, 0xe0, 0x94, 0xe2, + 0x45, 0xe3, 0x4d, 0xe7, 0x2a, 0xeb, 0x48, 0xed, 0xba, 0xf3, 0x8a, 0xf8, 0xd9, 0xfe, 0xea, 0x03, + 0x67, 0x08, 0xb4, 0x0d, 0x5b, 0x12, 0x09, 0x19, 0xcf, 0x1d, 0xb8, 0x21, 0xed, 0x24, 0xb8, 0x27, + 0x42, 0x29, 0x8e, 0x2b, 0x96, 0x2b, 0xc6, 0x27, 0x2a, 0x25, 0x45, 0x21, 0x65, 0x1d, 0x67, 0x1d, + 0x72, 0x1c, 0x9a, 0x18, 0x5c, 0x13, 0xb3, 0x0e, 0x72, 0x08, 0x2c, 0x05, 0x54, 0x03, 0x1d, 0x00, + 0xc8, 0xfb, 0x7f, 0xf8, 0x0a, 0xf7, 0x93, 0xf4, 0xef, 0xf5, 0x43, 0xf5, 0x0c, 0xf5, 0xac, 0xf3, + 0xea, 0xf1, 0x91, 0xf0, 0x5b, 0xf1, 0x99, 0xf1, 0x72, 0xf3, 0x9b, 0xf1, 0xdd, 0xeb, 0x87, 0xec, + 0x9c, 0xe7, 0xb1, 0xe5, 0xe4, 0xe6, 0x50, 0xe7, 0xb0, 0xe6, 0x2f, 0xe6, 0x86, 0xe7, 0x0f, 0xe6, + 0x4e, 0xe7, 0xa5, 0xe6, 0xb2, 0xe8, 0xde, 0xe9, 0x16, 0xec, 0xff, 0xf0, 0x76, 0xf1, 0x71, 0xf6, + 0xd3, 0xf8, 0x24, 0xfc, 0xd6, 0xff, 0x88, 0x01, 0x74, 0x04, 0xe0, 0x06, 0xc3, 0x0a, 0x9c, 0x0e, + 0xcf, 0x12, 0xda, 0x14, 0xfa, 0x17, 0x40, 0x1a, 0x1e, 0x1d, 0x63, 0x20, 0x7a, 0x20, 0x2b, 0x20, + 0x01, 0x1d, 0x56, 0x19, 0xb8, 0x18, 0x46, 0x1a, 0xfd, 0x19, 0xa4, 0x17, 0x6a, 0x14, 0xaf, 0x0f, + 0xf1, 0x0c, 0xc0, 0x0b, 0x9c, 0x0a, 0x71, 0x07, 0xa1, 0x04, 0xc2, 0x03, 0x05, 0x03, 0xb7, 0x03, + 0x41, 0x04, 0xec, 0x04, 0xc9, 0x03, 0x74, 0x01, 0x17, 0x00, 0xd1, 0xff, 0xfe, 0xfd, 0x05, 0xff, + 0x4a, 0xff, 0x5c, 0xf8, 0xff, 0xf5, 0x15, 0xf3, 0xec, 0xee, 0xf8, 0xed, 0x68, 0xed, 0x7d, 0xeb, + 0x18, 0xe8, 0x78, 0xe7, 0xba, 0xe4, 0x01, 0xe2, 0x3f, 0xe0, 0xd9, 0xde, 0xbb, 0xde, 0x46, 0xe0, + 0xf4, 0xe3, 0x3b, 0xe5, 0x83, 0xe7, 0x2a, 0xeb, 0x6e, 0xee, 0xb2, 0xf3, 0x88, 0xf6, 0x9f, 0xf9, + 0xf5, 0xfd, 0xaf, 0x01, 0xf8, 0x06, 0x5a, 0x0b, 0x07, 0x0d, 0x70, 0x0e, 0x9d, 0x0f, 0xb1, 0x11, + 0xe3, 0x14, 0xc0, 0x13, 0x71, 0x10, 0x8e, 0x0f, 0x31, 0x0c, 0x7b, 0x0d, 0x0e, 0x0e, 0x48, 0x0c, + 0x49, 0x08, 0x1d, 0x05, 0xf1, 0x04, 0xee, 0x02, 0xfe, 0x02, 0xdd, 0x01, 0x51, 0xff, 0x55, 0xfc, + 0xfd, 0xfc, 0x8a, 0xff, 0x93, 0xff, 0x8e, 0x02, 0x2c, 0x04, 0xb6, 0x05, 0xe5, 0x06, 0x89, 0x07, + 0xf5, 0x08, 0xd7, 0x08, 0x85, 0x08, 0xca, 0x0a, 0xe7, 0x07, 0x77, 0x02, 0xd2, 0x01, 0xa7, 0xfd, + 0x56, 0xfc, 0xf1, 0xfc, 0x42, 0xfc, 0x18, 0xfa, 0x2c, 0xf7, 0xd5, 0xf5, 0x5e, 0xf4, 0x93, 0xf4, + 0xb5, 0xf2, 0x6f, 0xf3, 0x43, 0xf3, 0x88, 0xf3, 0x33, 0xf7, 0xe1, 0xf7, 0xcc, 0xf9, 0xb4, 0xfb, + 0xf2, 0xfd, 0x8e, 0x01, 0x2c, 0x03, 0xb5, 0x06, 0xa2, 0x0a, 0x61, 0x0d, 0xd3, 0x11, 0xe0, 0x14, + 0x50, 0x15, 0xb5, 0x16, 0x65, 0x19, 0x6e, 0x1a, 0xc7, 0x1c, 0xcb, 0x1c, 0xef, 0x19, 0xa5, 0x18, + 0xa4, 0x16, 0x65, 0x16, 0x99, 0x14, 0x2b, 0x14, 0xae, 0x11, 0x88, 0x0d, 0x01, 0x0a, 0x5e, 0x06, + 0x74, 0x03, 0x76, 0x01, 0x3c, 0xff, 0xf2, 0xfa, 0x61, 0xf8, 0x90, 0xf6, 0xab, 0xf3, 0x41, 0xf3, + 0xe6, 0xf2, 0x50, 0xf0, 0x16, 0xee, 0x8b, 0xee, 0xad, 0xee, 0x40, 0xef, 0x71, 0xf1, 0x4a, 0xf0, + 0x5a, 0xe9, 0xba, 0xe8, 0x93, 0xe7, 0xca, 0xe4, 0x44, 0xe3, 0x6f, 0xe2, 0xe1, 0xe6, 0x01, 0xe8, + 0x2e, 0xe9, 0x91, 0xe8, 0x9c, 0xe5, 0x58, 0xe1, 0x08, 0xe2, 0x0d, 0xea, 0x1a, 0xef, 0x16, 0xf4, + 0x11, 0xf6, 0x5a, 0xf8, 0x2c, 0xfd, 0xed, 0xff, 0x60, 0x05, 0xa7, 0x06, 0x80, 0x09, 0xd9, 0x0d, + 0x1e, 0x12, 0x6f, 0x17, 0x8f, 0x18, 0x70, 0x18, 0xed, 0x19, 0x39, 0x1c, 0xd1, 0x1e, 0xe0, 0x1e, + 0xec, 0x1c, 0xb0, 0x18, 0x34, 0x17, 0xad, 0x14, 0xf6, 0x10, 0x09, 0x10, 0xc5, 0x0b, 0x2d, 0x08, + 0x6b, 0x05, 0x64, 0x02, 0x6c, 0xfd, 0xa2, 0xf9, 0x0f, 0xf7, 0xc2, 0xf4, 0xdc, 0xf4, 0x02, 0xf5, + 0xb5, 0xf5, 0xde, 0xf3, 0x88, 0xf5, 0x26, 0xf8, 0xf0, 0xf7, 0xd7, 0xf6, 0x65, 0xf5, 0xa7, 0xf6, + 0x31, 0xf6, 0xe4, 0xf7, 0x4d, 0xf9, 0xe4, 0xf5, 0xee, 0xef, 0x5a, 0xf1, 0x1c, 0xef, 0x83, 0xec, + 0xbf, 0xec, 0xa0, 0xea, 0x14, 0xe7, 0xd5, 0xe6, 0xea, 0xe9, 0x2b, 0xe9, 0xda, 0xe9, 0xd2, 0xea, + 0x53, 0xed, 0x4a, 0xef, 0x0d, 0xf3, 0xae, 0xf8, 0x13, 0xfb, 0xaa, 0x00, 0x84, 0x04, 0x76, 0x08, + 0xcb, 0x0d, 0xdd, 0x11, 0x68, 0x16, 0x62, 0x19, 0x86, 0x1c, 0x55, 0x1f, 0xf6, 0x21, 0xda, 0x23, + 0x5e, 0x25, 0x49, 0x27, 0x44, 0x28, 0x7c, 0x28, 0x92, 0x26, 0xcf, 0x24, 0x96, 0x22, 0x4f, 0x1f, + 0x11, 0x1e, 0x1e, 0x1c, 0x0d, 0x17, 0xab, 0x11, 0x87, 0x0c, 0x12, 0x06, 0xbf, 0x01, 0x6c, 0xff, + 0xe7, 0xfa, 0x48, 0xf5, 0xa5, 0xf1, 0x8c, 0xf0, 0xfe, 0xee, 0x32, 0xf0, 0x2a, 0xf2, 0xaa, 0xf1, + 0x68, 0xef, 0x27, 0xee, 0x28, 0xee, 0xa6, 0xed, 0xea, 0xee, 0x5f, 0xf0, 0x55, 0xf0, 0xff, 0xea, + 0xc5, 0xe9, 0xa1, 0xea, 0xcd, 0xe7, 0x14, 0xea, 0xa7, 0xeb, 0x91, 0xea, 0x99, 0xe8, 0xa7, 0xe8, + 0xc1, 0xe9, 0x33, 0xe9, 0xf4, 0xe9, 0xe0, 0xea, 0xc5, 0xeb, 0x12, 0xed, 0x33, 0xf0, 0xa6, 0xf1, + 0x2e, 0xf2, 0xab, 0xf5, 0xcf, 0xf8, 0x5b, 0xfe, 0x6a, 0x03, 0x3e, 0x07, 0x21, 0x0c, 0x41, 0x10, + 0xe0, 0x15, 0x38, 0x19, 0xd7, 0x1a, 0x60, 0x1c, 0x4e, 0x1f, 0xc7, 0x21, 0x27, 0x26, 0x4b, 0x27, + 0xa2, 0x24, 0x71, 0x23, 0x8c, 0x22, 0x0d, 0x23, 0x25, 0x22, 0x54, 0x21, 0xdc, 0x1c, 0x1e, 0x18, + 0xec, 0x14, 0xd2, 0x12, 0xdd, 0x10, 0x4d, 0x0c, 0x17, 0x09, 0xe8, 0x04, 0xf2, 0x02, 0x82, 0x02, + 0xa8, 0x01, 0xd6, 0x00, 0x76, 0xff, 0x3d, 0xff, 0xa9, 0xfc, 0x22, 0xfb, 0xf6, 0xf8, 0x2f, 0xf6, + 0xd3, 0xf5, 0xd5, 0xf4, 0x37, 0xee, 0xa5, 0xe9, 0xde, 0xe6, 0xc3, 0xe1, 0xae, 0xe0, 0xa5, 0xe0, + 0xbe, 0xde, 0x6b, 0xdb, 0xdd, 0xda, 0xb4, 0xda, 0x76, 0xda, 0x5e, 0xdc, 0x29, 0xdd, 0x5f, 0xdd, + 0xcc, 0xdd, 0xdf, 0xe2, 0x74, 0xe7, 0x3d, 0xea, 0xac, 0xee, 0x95, 0xf0, 0x4d, 0xf4, 0x06, 0xf8, + 0xfc, 0xfb, 0xad, 0x00, 0x56, 0x02, 0xaa, 0x04, 0x1f, 0x08, 0x39, 0x0c, 0x92, 0x0e, 0x81, 0x10, + 0xbd, 0x11, 0x5c, 0x12, 0xff, 0x12, 0x99, 0x12, 0xf6, 0x14, 0x88, 0x13, 0xff, 0x11, 0x39, 0x13, + 0x48, 0x14, 0xcf, 0x13, 0xcc, 0x12, 0x40, 0x11, 0x86, 0x0d, 0x73, 0x0d, 0xdc, 0x0d, 0xb9, 0x0d, + 0x1c, 0x0c, 0xf3, 0x0a, 0x0e, 0x0b, 0x3d, 0x0a, 0x03, 0x0c, 0xbf, 0x0c, 0x48, 0x0b, 0xac, 0x09, + 0xa7, 0x07, 0x35, 0x06, 0xd9, 0x05, 0x5b, 0x05, 0x29, 0x05, 0xd5, 0xff, 0x8c, 0xfa, 0x4c, 0xfa, + 0x11, 0xf6, 0x49, 0xf3, 0xfb, 0xf2, 0xc4, 0xf1, 0x60, 0xee, 0x73, 0xed, 0xdb, 0xeb, 0x92, 0xe9, + 0xd7, 0xe8, 0x15, 0xe8, 0xd1, 0xe9, 0x5f, 0xea, 0x72, 0xed, 0xea, 0xef, 0xa5, 0xf2, 0x7d, 0xf7, + 0xb8, 0xfb, 0x04, 0x00, 0x1a, 0x03, 0x4d, 0x04, 0x88, 0x06, 0xc3, 0x0a, 0x9f, 0x0d, 0xc0, 0x11, + 0x23, 0x14, 0xde, 0x15, 0x02, 0x19, 0xd9, 0x1a, 0xb8, 0x1d, 0xe3, 0x1e, 0xea, 0x1a, 0x12, 0x1a, + 0xa0, 0x1b, 0xe0, 0x1b, 0x6a, 0x1b, 0xc8, 0x18, 0x2e, 0x14, 0x0f, 0x10, 0x81, 0x0e, 0x8c, 0x0c, + 0xdc, 0x07, 0xe4, 0x01, 0xd3, 0xfd, 0x16, 0xfb, 0xed, 0xf9, 0x76, 0xfb, 0x27, 0xfb, 0x5b, 0xf9, + 0xae, 0xf7, 0x79, 0xf7, 0x26, 0xf7, 0xc0, 0xf7, 0xf2, 0xf5, 0x39, 0xf4, 0x13, 0xf3, 0x40, 0xf4, + 0x19, 0xf1, 0x27, 0xe9, 0x3c, 0xe8, 0x14, 0xe4, 0x5f, 0xe2, 0xb0, 0xe4, 0x3d, 0xe6, 0x6a, 0xe3, + 0xe4, 0xe0, 0xca, 0xe3, 0x15, 0xe4, 0xa7, 0xe5, 0x2f, 0xe7, 0xf8, 0xe7, 0xd7, 0xe9, 0xce, 0xeb, + 0xbc, 0xf1, 0x6c, 0xf5, 0x1e, 0xf8, 0xa6, 0xfa, 0x54, 0xfd, 0x5f, 0x02, 0x90, 0x05, 0x61, 0x09, + 0x37, 0x0c, 0x27, 0x0d, 0xa4, 0x10, 0x0a, 0x12, 0xb4, 0x13, 0x0d, 0x15, 0x98, 0x16, 0x46, 0x17, + 0x32, 0x17, 0x2d, 0x15, 0x7c, 0x12, 0x18, 0x12, 0x61, 0x11, 0x63, 0x12, 0x38, 0x12, 0x31, 0x0f, + 0xb8, 0x0b, 0xeb, 0x09, 0x57, 0x08, 0x3f, 0x07, 0x38, 0x07, 0xc5, 0x05, 0x55, 0x02, 0xc8, 0xff, + 0xed, 0xff, 0x9a, 0xff, 0x40, 0x00, 0xee, 0x00, 0x2c, 0x00, 0x57, 0x00, 0xd4, 0xff, 0x78, 0xfe, + 0x5c, 0xfc, 0x9f, 0xf9, 0xd4, 0xf9, 0x0d, 0xf6, 0xfb, 0xef, 0xaf, 0xef, 0xe9, 0xec, 0xd9, 0xeb, + 0x09, 0xed, 0x91, 0xee, 0x38, 0xec, 0x6b, 0xea, 0xf9, 0xeb, 0x4c, 0xec, 0xc4, 0xef, 0x83, 0xf2, + 0x4c, 0xf5, 0xc2, 0xf7, 0x62, 0xfb, 0xf9, 0xff, 0xa9, 0x01, 0x19, 0x05, 0xb3, 0x06, 0xc5, 0x07, + 0xed, 0x0a, 0xda, 0x0a, 0x51, 0x0c, 0xa7, 0x0e, 0x74, 0x11, 0x5e, 0x14, 0x68, 0x15, 0xd8, 0x15, + 0xa1, 0x14, 0x9e, 0x14, 0xa0, 0x15, 0x17, 0x16, 0xa4, 0x14, 0x67, 0x12, 0xbb, 0x10, 0x0c, 0x0d, + 0x99, 0x0b, 0x69, 0x0b, 0x9e, 0x09, 0x5d, 0x06, 0x61, 0x04, 0x9f, 0x01, 0xa8, 0xfe, 0x23, 0xfe, + 0xbc, 0xfd, 0xc7, 0xfb, 0xba, 0xfa, 0x6a, 0xfb, 0x66, 0xfc, 0xf5, 0xfc, 0x81, 0xfc, 0xd3, 0xfa, + 0x19, 0xf9, 0x36, 0xf9, 0x3d, 0xfa, 0xff, 0xfa, 0x13, 0xfa, 0x37, 0xfa, 0xa6, 0xf5, 0x57, 0xef, + 0x2a, 0xf0, 0x0b, 0xec, 0x91, 0xea, 0x87, 0xe9, 0xbb, 0xea, 0xd5, 0xe8, 0x16, 0xe8, 0x4c, 0xe9, + 0xaa, 0xe6, 0x1f, 0xe7, 0x2b, 0xe8, 0xfa, 0xeb, 0x2e, 0xed, 0x58, 0xf0, 0xda, 0xf3, 0x7e, 0xf6, + 0xb4, 0xfa, 0x89, 0xfd, 0xef, 0x00, 0x8b, 0x05, 0x1b, 0x08, 0x89, 0x0b, 0x7a, 0x10, 0x0d, 0x12, + 0xbf, 0x14, 0xf3, 0x15, 0xfb, 0x17, 0x7b, 0x1a, 0x85, 0x1b, 0x61, 0x1c, 0x63, 0x1b, 0x77, 0x19, + 0xc5, 0x19, 0xcc, 0x18, 0x5f, 0x18, 0x0c, 0x19, 0xa6, 0x17, 0xd9, 0x15, 0x67, 0x14, 0x4d, 0x13, + 0x77, 0x10, 0x37, 0x0d, 0x40, 0x0a, 0xdc, 0x08, 0x8e, 0x07, 0xa8, 0x06, 0x44, 0x07, 0x1e, 0x05, + 0x0d, 0x05, 0xc9, 0x03, 0xca, 0x02, 0xec, 0x01, 0xbe, 0xfe, 0xe0, 0xfb, 0x2b, 0xfa, 0xbe, 0xf7, + 0x79, 0xf7, 0xe1, 0xef, 0xdd, 0xe7, 0xe6, 0xe5, 0x82, 0xe0, 0x82, 0xde, 0x25, 0xde, 0x4c, 0xdd, + 0x5b, 0xda, 0x4c, 0xd9, 0xfc, 0xd9, 0x26, 0xdb, 0x62, 0xde, 0x4a, 0xe0, 0x92, 0xe2, 0x06, 0xe2, + 0x56, 0xe4, 0xc5, 0xe6, 0xd0, 0xe8, 0xaa, 0xec, 0x7e, 0xee, 0x7a, 0xf2, 0xe5, 0xf6, 0x9f, 0xf8, + 0x58, 0xfb, 0xe8, 0xfd, 0x04, 0xff, 0x6d, 0x01, 0xec, 0x04, 0x86, 0x08, 0x8d, 0x0a, 0x0c, 0x0c, + 0x54, 0x0f, 0xda, 0x11, 0x45, 0x13, 0xb4, 0x12, 0x0f, 0x12, 0x9b, 0x11, 0x67, 0x15, 0xb3, 0x18, + 0x4e, 0x19, 0xd5, 0x18, 0xaf, 0x17, 0x99, 0x17, 0xc7, 0x16, 0xb3, 0x17, 0x48, 0x16, 0x1b, 0x13, + 0x27, 0x12, 0x01, 0x12, 0xb0, 0x11, 0xb7, 0x11, 0x7e, 0x10, 0x14, 0x0d, 0x5d, 0x0c, 0xe6, 0x0a, + 0x0b, 0x0b, 0xef, 0x09, 0xe8, 0x07, 0x8b, 0x05, 0x89, 0xfc, 0xd8, 0xf9, 0xc3, 0xf8, 0x36, 0xf3, + 0xcf, 0xf0, 0x86, 0xef, 0x26, 0xee, 0x27, 0xeb, 0x0c, 0xec, 0xad, 0xec, 0x40, 0xec, 0xd6, 0xed, + 0x61, 0xef, 0xc2, 0xf1, 0x25, 0xf3, 0xff, 0xf5, 0x1c, 0xf8, 0x82, 0xfa, 0x38, 0xfe, 0x56, 0xfe, + 0x17, 0x01, 0x2b, 0x04, 0x9e, 0x03, 0xbc, 0x07, 0x89, 0x0b, 0xba, 0x0c, 0x95, 0x0e, 0x16, 0x0f, + 0xcc, 0x10, 0x04, 0x11, 0xa9, 0x11, 0xf9, 0x12, 0xdd, 0x11, 0x08, 0x12, 0xc3, 0x10, 0xbb, 0x0d, + 0x10, 0x0d, 0x0f, 0x0d, 0x0d, 0x0c, 0xbc, 0x09, 0x2f, 0x08, 0xf4, 0x04, 0xbb, 0x02, 0x30, 0x02, + 0xf8, 0x01, 0xf8, 0x01, 0xe3, 0x00, 0x70, 0x01, 0xeb, 0x00, 0x26, 0x01, 0x99, 0x01, 0x83, 0xff, + 0x6d, 0xfe, 0x2c, 0xfe, 0x5f, 0xfd, 0xa4, 0xfc, 0x94, 0xfa, 0x61, 0xf8, 0x6f, 0xf2, 0xc6, 0xed, + 0x51, 0xed, 0x94, 0xe9, 0x5d, 0xe6, 0x69, 0xe6, 0xde, 0xe6, 0x33, 0xe6, 0x32, 0xe7, 0x87, 0xe8, + 0x4d, 0xe8, 0x07, 0xe9, 0x01, 0xea, 0x70, 0xec, 0xe9, 0xef, 0x4e, 0xf3, 0x9a, 0xf6, 0xcd, 0xf8, + 0x72, 0xfb, 0x80, 0xfe, 0x10, 0x00, 0xde, 0x04, 0xc3, 0x05, 0x3f, 0x07, 0xe1, 0x09, 0x43, 0x09, + 0x51, 0x0a, 0x55, 0x0a, 0x43, 0x0b, 0xa9, 0x0b, 0x00, 0x0c, 0x38, 0x0c, 0x3a, 0x0c, 0x05, 0x0b, + 0xaa, 0x09, 0x2c, 0x08, 0xf8, 0x05, 0x12, 0x08, 0xef, 0x08, 0xdd, 0x09, 0x5e, 0x09, 0x85, 0x08, + 0x81, 0x05, 0x68, 0x03, 0x32, 0x05, 0x6e, 0x05, 0x4f, 0x06, 0xb4, 0x04, 0x1c, 0x05, 0xe1, 0x04, + 0x51, 0x05, 0x4d, 0x06, 0xd9, 0x03, 0xd0, 0x00, 0xaf, 0x00, 0xe0, 0x00, 0x54, 0x01, 0x09, 0x02, + 0x4e, 0xfb, 0x53, 0xf6, 0x8a, 0xf5, 0x3e, 0xf3, 0x17, 0xf2, 0xf4, 0xf2, 0x6c, 0xf3, 0xb8, 0xf1, + 0xc1, 0xf2, 0x11, 0xf5, 0x9a, 0xf5, 0x16, 0xf5, 0x5d, 0xf6, 0x9f, 0xf9, 0xb9, 0xfd, 0x5c, 0x03, + 0x6d, 0x04, 0x7e, 0x01, 0xe2, 0x01, 0x15, 0x03, 0xc6, 0x04, 0x96, 0x08, 0xda, 0x09, 0xb1, 0x09, + 0x2a, 0x0a, 0xa1, 0x0b, 0x55, 0x0c, 0x90, 0x0c, 0x35, 0x0c, 0x3a, 0x0b, 0xdf, 0x0a, 0x91, 0x0b, + 0x8d, 0x09, 0xd0, 0x05, 0xf1, 0x02, 0x86, 0xff, 0x29, 0x00, 0x6e, 0x00, 0xd1, 0xfe, 0xe2, 0xfb, + 0x1e, 0xfa, 0x87, 0xf8, 0x99, 0xf6, 0x04, 0xf7, 0xa0, 0xf6, 0x03, 0xf7, 0x90, 0xf7, 0x14, 0xf9, + 0xc1, 0xfa, 0x43, 0xfa, 0xcf, 0xfa, 0x1d, 0xfa, 0xf3, 0xfa, 0xea, 0xfb, 0x6f, 0xfc, 0xd7, 0xfb, + 0xb8, 0xfa, 0xc3, 0xf9, 0xc0, 0xf4, 0x59, 0xf2, 0x57, 0xf2, 0x02, 0xef, 0x70, 0xee, 0xee, 0xed, + 0xac, 0xed, 0x5e, 0xec, 0xd9, 0xec, 0xe4, 0xec, 0x37, 0xeb, 0xdd, 0xec, 0x78, 0xed, 0x53, 0xf1, + 0xb2, 0xf5, 0x1e, 0xfb, 0xa6, 0xfe, 0x74, 0x02, 0xee, 0x06, 0xcd, 0x08, 0x70, 0x0b, 0x86, 0x0e, + 0x43, 0x0f, 0xbe, 0x11, 0x68, 0x17, 0x2c, 0x19, 0x97, 0x1a, 0xd6, 0x1c, 0xd4, 0x1c, 0xb8, 0x1c, + 0xcf, 0x1c, 0xca, 0x1c, 0x0b, 0x19, 0xf7, 0x17, 0x17, 0x18, 0x03, 0x17, 0xba, 0x17, 0x41, 0x18, + 0x68, 0x15, 0xa6, 0x12, 0xd0, 0x10, 0xff, 0x0f, 0x6e, 0x0e, 0xa4, 0x0c, 0x42, 0x0b, 0xe0, 0x08, + 0x8d, 0x09, 0x79, 0x09, 0x0a, 0x08, 0xb3, 0x07, 0xa3, 0x06, 0x45, 0x05, 0xd7, 0x02, 0xf8, 0x01, + 0x7c, 0xff, 0xde, 0xfa, 0x76, 0xfa, 0x28, 0xf4, 0xe0, 0xea, 0x29, 0xe9, 0x60, 0xe5, 0x45, 0xe2, + 0xd4, 0xe1, 0x2e, 0xe2, 0x1d, 0xe1, 0x10, 0xdf, 0xd9, 0xe0, 0x38, 0xde, 0xc4, 0xde, 0x33, 0xe1, + 0x25, 0xe5, 0xd6, 0xe9, 0x1f, 0xec, 0x91, 0xf2, 0xc8, 0xf3, 0x20, 0xf6, 0x80, 0xf9, 0x2f, 0xfb, + 0x6b, 0xfe, 0x89, 0xff, 0x3d, 0x01, 0x80, 0x03, 0x4c, 0x06, 0x47, 0x08, 0x8b, 0x09, 0x73, 0x0b, + 0xae, 0x0c, 0x57, 0x0e, 0x34, 0x10, 0x84, 0x10, 0xd9, 0x0f, 0x92, 0x0f, 0xb4, 0x0e, 0x7d, 0x0f, + 0x33, 0x11, 0x8b, 0x12, 0x82, 0x12, 0x30, 0x13, 0x58, 0x12, 0x53, 0x11, 0x00, 0x11, 0xa0, 0x0e, + 0x74, 0x0e, 0xe9, 0x0d, 0x82, 0x0c, 0x10, 0x0b, 0x42, 0x0b, 0x47, 0x08, 0x0e, 0x06, 0xd3, 0x04, + 0x6e, 0x02, 0x4c, 0x00, 0xbe, 0xfc, 0x68, 0xfb, 0xb7, 0xf9, 0x46, 0xf1, 0x1b, 0xee, 0xae, 0xec, + 0x87, 0xe7, 0x1d, 0xe7, 0x8a, 0xe6, 0xf8, 0xe4, 0xde, 0xe2, 0x4c, 0xe2, 0xb0, 0xe1, 0x56, 0xdf, + 0x8d, 0xe0, 0xac, 0xe3, 0xc4, 0xe7, 0x64, 0xeb, 0x94, 0xf1, 0xc2, 0xf5, 0x35, 0xf8, 0x8f, 0xfc, + 0xa0, 0xff, 0xe5, 0x02, 0xbe, 0x06, 0x2c, 0x08, 0x89, 0x0a, 0xcf, 0x0d, 0x4d, 0x10, 0xa5, 0x13, + 0x68, 0x14, 0x52, 0x15, 0x95, 0x14, 0x32, 0x14, 0x75, 0x14, 0xa7, 0x13, 0x9f, 0x11, 0xa9, 0x0e, + 0x6c, 0x0c, 0x38, 0x0a, 0xa1, 0x0a, 0x01, 0x0a, 0x08, 0x09, 0x5e, 0x05, 0x35, 0x02, 0x80, 0x00, + 0xed, 0xff, 0x9f, 0x01, 0x08, 0x01, 0x11, 0x02, 0x44, 0x03, 0x65, 0x03, 0xd8, 0x01, 0xb7, 0x00, + 0xfa, 0xff, 0x16, 0xff, 0xc3, 0x00, 0xf1, 0x00, 0x89, 0x00, 0xeb, 0xfb, 0x23, 0xf3, 0x20, 0xf0, + 0x17, 0xeb, 0x47, 0xe8, 0x31, 0xe6, 0x70, 0xe5, 0x76, 0xe4, 0x3c, 0xe2, 0xee, 0xe1, 0x45, 0xdf, + 0x92, 0xe2, 0x3e, 0xe4, 0x3b, 0xe7, 0x7b, 0xeb, 0x38, 0xef, 0xab, 0xf6, 0xd7, 0xf6, 0x04, 0xfb, + 0xe3, 0xfd, 0x3d, 0xff, 0x56, 0x03, 0x68, 0x07, 0xf3, 0x0a, 0x09, 0x0d, 0x37, 0x11, 0xdb, 0x12, + 0x53, 0x13, 0xb8, 0x12, 0x1c, 0x13, 0x22, 0x13, 0x08, 0x13, 0x96, 0x12, 0x17, 0x11, 0x8f, 0x10, + 0x75, 0x0f, 0x97, 0x0d, 0x24, 0x0c, 0x20, 0x0c, 0xe7, 0x09, 0x1d, 0x09, 0x55, 0x09, 0xd6, 0x07, + 0xfa, 0x03, 0x82, 0x02, 0xbc, 0x03, 0xee, 0x02, 0x57, 0x03, 0x37, 0x03, 0xb0, 0x00, 0xa4, 0x00, + 0x5c, 0x03, 0xe7, 0x02, 0xab, 0xff, 0x70, 0xff, 0x07, 0xfd, 0xb2, 0xfb, 0x13, 0xf4, 0xcd, 0xf2, + 0xf8, 0xf5, 0x12, 0xf6, 0xca, 0xf8, 0xc5, 0xf8, 0x3a, 0xf7, 0x86, 0xf3, 0x43, 0xf6, 0x68, 0xfb, + 0xf7, 0xfd, 0x76, 0x01, 0x9b, 0x01, 0x45, 0x03, 0x52, 0x05, 0x29, 0x09, 0x19, 0x10, 0xdb, 0x12, + 0x9b, 0x14, 0x56, 0x10, 0x89, 0x11, 0xcd, 0x13, 0xc7, 0x16, 0x61, 0x18, 0x51, 0x19, 0xc7, 0x1a, + 0x9f, 0x1d, 0xb0, 0x1f, 0x1d, 0x1b, 0x32, 0x17, 0x04, 0x14, 0xa4, 0x15, 0x4d, 0x17, 0xd6, 0x17, + 0x2a, 0x16, 0x6b, 0x11, 0x2b, 0x0c, 0xde, 0x0d, 0x75, 0x0f, 0x4c, 0x0c, 0xe7, 0x07, 0xb6, 0x01, + 0x8a, 0xfb, 0xde, 0xf7, 0xf0, 0xf6, 0xdc, 0xf9, 0x15, 0xf5, 0x14, 0xf3, 0x0d, 0xed, 0xd3, 0xeb, + 0xd9, 0xef, 0x78, 0xf6, 0x57, 0xfa, 0x1a, 0xfd, 0x05, 0xfd, 0xd5, 0xfc, 0xef, 0xf4, 0xaa, 0xe9, + 0x19, 0xe7, 0xe6, 0xe0, 0xcd, 0xe1, 0xc7, 0xe0, 0xfa, 0xe1, 0x80, 0xd8, 0x1c, 0xd2, 0x08, 0xd5, + 0x29, 0xd4, 0xed, 0xd4, 0x68, 0xd3, 0xc6, 0xd5, 0x19, 0xd7, 0xde, 0xde, 0x3a, 0xe7, 0x38, 0xeb, + 0x8f, 0xf6, 0xbe, 0xfe, 0xaa, 0x04, 0x9d, 0x0a, 0x24, 0x0c, 0x44, 0x0e, 0x4e, 0x14, 0x5e, 0x17, + 0x24, 0x1c, 0xde, 0x23, 0xa3, 0x29, 0xd1, 0x2d, 0xf0, 0x2d, 0xff, 0x32, 0x6a, 0x2f, 0xb7, 0x28, + 0x3c, 0x22, 0x62, 0x17, 0x5f, 0x10, 0xd6, 0x0e, 0x4a, 0x0e, 0x71, 0x0a, 0x5f, 0x06, 0xa8, 0x05, + 0xbd, 0x04, 0x3c, 0x04, 0x9b, 0x02, 0xc8, 0xff, 0xe2, 0xf9, 0x45, 0xf4, 0xae, 0xf2, 0xc9, 0xf0, + 0xfa, 0xee, 0x4c, 0xee, 0x31, 0xf1, 0x16, 0xf1, 0xd1, 0xe9, 0x34, 0xe5, 0xf9, 0xd9, 0x34, 0xd4, + 0x80, 0xd1, 0x9f, 0xce, 0x1d, 0xd1, 0x25, 0xd0, 0x2d, 0xd3, 0xce, 0xcc, 0x00, 0xc7, 0xeb, 0xc5, + 0x5c, 0xc4, 0xb0, 0xc4, 0xbd, 0xc5, 0xcc, 0xca, 0x0a, 0xcf, 0x36, 0xd2, 0xde, 0xd5, 0x56, 0xdd, + 0xc2, 0xde, 0xbe, 0xe0, 0xf6, 0xe7, 0x4a, 0xee, 0x84, 0xfc, 0xe2, 0x00, 0xe8, 0x04, 0xe9, 0x04, + 0x7d, 0x07, 0xde, 0x11, 0xf9, 0x13, 0x4e, 0x1c, 0xb0, 0x1e, 0x27, 0x25, 0xc1, 0x25, 0x9d, 0x29, + 0x7a, 0x2b, 0x90, 0x2e, 0x39, 0x34, 0x36, 0x3c, 0xf2, 0x3c, 0xc2, 0x31, 0x17, 0x2a, 0x3e, 0x21, + 0x85, 0x22, 0xab, 0x23, 0x52, 0x2b, 0xb5, 0x31, 0xe7, 0x31, 0xc9, 0x2f, 0x2f, 0x31, 0xfa, 0x2e, + 0xca, 0x2b, 0xeb, 0x26, 0x91, 0x22, 0x4e, 0x1e, 0xa1, 0x19, 0x75, 0x16, 0x63, 0x0e, 0x09, 0x06, + 0xf9, 0xfb, 0x73, 0xfa, 0x81, 0xfc, 0x69, 0xfa, 0xa8, 0xf3, 0x4a, 0xea, 0x3d, 0xed, 0x57, 0xe7, + 0xaf, 0xe6, 0xf3, 0xe3, 0xa3, 0xe7, 0x75, 0xea, 0x5a, 0xec, 0x76, 0xf9, 0xf0, 0xfa, 0x78, 0xfe, + 0x70, 0x02, 0xbf, 0x02, 0xd7, 0x02, 0xfe, 0x0f, 0xe7, 0x18, 0x27, 0x1b, 0x9a, 0x1a, 0xed, 0x1c, + 0xf8, 0x20, 0x56, 0x23, 0x85, 0x27, 0xa9, 0x30, 0xf5, 0x30, 0x8a, 0x34, 0xba, 0x30, 0x01, 0x32, + 0xb0, 0x29, 0x47, 0x25, 0x1a, 0x21, 0x81, 0x17, 0x0b, 0x16, 0x92, 0x0e, 0x20, 0x06, 0xe1, 0xfb, + 0xe6, 0xfc, 0x04, 0xff, 0x5b, 0xfd, 0x50, 0xfd, 0x3c, 0xff, 0xc2, 0xfe, 0xad, 0xf7, 0x00, 0xf0, + 0xe4, 0xf0, 0x18, 0xf0, 0x5a, 0xf2, 0x5e, 0xf0, 0xf9, 0xf8, 0x88, 0xf2, 0x1f, 0xec, 0x77, 0xe4, + 0xe2, 0xdb, 0x4b, 0xe0, 0x35, 0xe5, 0x3c, 0xee, 0xd9, 0xec, 0xfa, 0xe9, 0x2b, 0xe1, 0x92, 0xd8, + 0xab, 0xd2, 0x36, 0xcc, 0xa9, 0xc9, 0x9e, 0xc8, 0x6e, 0xcb, 0xa6, 0xcc, 0x7a, 0xcd, 0x25, 0xd3, + 0xe8, 0xd5, 0x7c, 0xe1, 0xae, 0xe7, 0xf1, 0xeb, 0x28, 0xeb, 0xce, 0xf2, 0xe8, 0xf0, 0x5e, 0xf3, + 0x26, 0xf7, 0xc9, 0xfa, 0x38, 0xfb, 0x43, 0xfd, 0xb6, 0x07, 0x2a, 0x0d, 0x56, 0x0d, 0xa0, 0x0d, + 0xad, 0x06, 0xf3, 0xfe, 0x9e, 0x02, 0x03, 0x05, 0x90, 0x08, 0x13, 0x01, 0x00, 0xfb, 0xbc, 0xf1, + 0x20, 0xeb, 0x4a, 0xe9, 0x79, 0xee, 0xbb, 0xef, 0xb0, 0xec, 0x4e, 0xee, 0xa9, 0xf0, 0x06, 0xf2, + 0x99, 0xe9, 0x25, 0xec, 0x5d, 0xeb, 0x26, 0xeb, 0x48, 0xeb, 0xb2, 0xe4, 0xd3, 0xe3, 0x8c, 0xda, + 0x1b, 0xe1, 0x80, 0xe2, 0x88, 0xe6, 0xee, 0xe3, 0xd9, 0xe0, 0xa2, 0xe0, 0x3e, 0xdb, 0x54, 0xdf, + 0xda, 0xdf, 0x9d, 0xe2, 0xdb, 0xe6, 0x03, 0xf2, 0x5e, 0xfc, 0xaa, 0x02, 0x1c, 0x04, 0xbb, 0x01, + 0x98, 0x05, 0x91, 0x09, 0xa0, 0x14, 0x5f, 0x18, 0x1a, 0x1f, 0x93, 0x27, 0x1b, 0x32, 0xea, 0x3e, + 0x5b, 0x43, 0xee, 0x45, 0x66, 0x45, 0x51, 0x47, 0xb0, 0x45, 0xae, 0x42, 0x53, 0x3f, 0x05, 0x39, + 0xdc, 0x3a, 0x82, 0x39, 0xda, 0x39, 0xc0, 0x35, 0xc1, 0x2f, 0x48, 0x2a, 0xc1, 0x24, 0x03, 0x20, + 0x6a, 0x20, 0x08, 0x21, 0x5e, 0x1d, 0xff, 0x1e, 0xb3, 0x20, 0x6d, 0x1d, 0xd3, 0x16, 0xcc, 0x12, + 0x8d, 0x0d, 0xff, 0x04, 0x2e, 0x03, 0x65, 0x05, 0x76, 0xfc, 0xf8, 0xfc, 0xea, 0xf7, 0x63, 0xf5, + 0x71, 0xf5, 0x65, 0xf3, 0x02, 0xf5, 0xd1, 0xf1, 0xb5, 0xf0, 0x2f, 0xef, 0x7f, 0xea, 0xbc, 0xe5, + 0x8d, 0xe3, 0x6e, 0xe7, 0x21, 0xe7, 0x8e, 0xeb, 0x39, 0xec, 0xeb, 0xed, 0x04, 0xec, 0x45, 0xea, + 0x44, 0xed, 0x2e, 0xee, 0x0c, 0xee, 0xa2, 0xf0, 0xf3, 0xf2, 0x95, 0xf5, 0x2b, 0xf7, 0xa4, 0xf6, + 0xd7, 0xf8, 0xa4, 0xfc, 0x89, 0x00, 0xe5, 0x05, 0xab, 0x06, 0x14, 0x0a, 0xb9, 0x0d, 0xe1, 0x08, + 0x2c, 0x05, 0xae, 0x05, 0xff, 0x0b, 0xa7, 0x0c, 0x63, 0x0c, 0x46, 0x0f, 0xf5, 0x17, 0x48, 0x1c, + 0xe5, 0x19, 0x16, 0x14, 0x0a, 0x10, 0x3a, 0x0d, 0x9c, 0x07, 0xc7, 0x05, 0x5e, 0x01, 0xfe, 0xf9, + 0x95, 0xf6, 0x02, 0xf6, 0x6c, 0xfa, 0xcc, 0xf9, 0x71, 0xf7, 0x89, 0xf3, 0x4e, 0xec, 0xf0, 0xec, + 0xae, 0xeb, 0x1b, 0xed, 0x8c, 0xe9, 0xf3, 0xe7, 0x49, 0xe8, 0xa4, 0xe5, 0x6b, 0xe9, 0xf3, 0xe8, + 0x0c, 0xe6, 0x81, 0xde, 0x42, 0xdd, 0x48, 0xe3, 0xf2, 0xe6, 0x3a, 0xe9, 0xb7, 0xeb, 0xb0, 0xeb, + 0x7a, 0xe9, 0x3b, 0xef, 0xb5, 0xf0, 0x58, 0xf0, 0x73, 0xf1, 0x60, 0xf2, 0xd4, 0xf6, 0xdc, 0xfa, + 0x98, 0x00, 0x3b, 0x04, 0x74, 0x04, 0x94, 0x07, 0x24, 0x0a, 0xb8, 0x04, 0x81, 0x00, 0x9b, 0xfd, + 0x2e, 0x00, 0x99, 0xfe, 0xcb, 0xfc, 0xb7, 0xfe, 0x81, 0xfd, 0xd8, 0xfb, 0xe6, 0xf9, 0xfc, 0xf7, + 0xb6, 0xf8, 0x2a, 0xfc, 0xfa, 0xff, 0xbc, 0x02, 0xd8, 0x05, 0xab, 0x09, 0x1b, 0x07, 0xda, 0x01, + 0x44, 0xff, 0x52, 0xfc, 0xe6, 0xfe, 0x3e, 0xf6, 0xcf, 0xf4, 0x09, 0xf3, 0x93, 0xf0, 0x9a, 0xf6, + 0xc3, 0xf5, 0x19, 0xf5, 0xa7, 0xf2, 0x58, 0xf5, 0x66, 0xf4, 0x80, 0xf5, 0x9f, 0xf2, 0x20, 0xef, + 0x5a, 0xf7, 0xcb, 0xf0, 0x0c, 0xfa, 0x99, 0xfc, 0x4e, 0xfc, 0x93, 0x04, 0x7d, 0x05, 0xf6, 0x0c, + 0x6b, 0x14, 0x74, 0x0f, 0xc7, 0x17, 0x3d, 0x19, 0xf1, 0x16, 0x24, 0x23, 0x4a, 0x24, 0x61, 0x28, + 0x64, 0x29, 0x82, 0x27, 0x0e, 0x2d, 0x06, 0x25, 0x66, 0x21, 0x09, 0x21, 0xf8, 0x15, 0xf6, 0x10, + 0x21, 0x15, 0x96, 0x17, 0x7b, 0x20, 0xc3, 0x21, 0xff, 0x26, 0xb0, 0x24, 0xb0, 0x1f, 0xb1, 0x1a, + 0xd2, 0x17, 0x5f, 0x11, 0x8f, 0x0b, 0x69, 0x0a, 0x6c, 0x01, 0xf0, 0x05, 0x31, 0x05, 0xcf, 0x09, + 0x45, 0x05, 0x61, 0xfa, 0x67, 0xf8, 0x15, 0xf0, 0x34, 0xeb, 0x86, 0xe4, 0x98, 0xdf, 0xb8, 0xdf, + 0x4a, 0xe2, 0x7b, 0xe5, 0xc8, 0xe4, 0x55, 0xe1, 0x84, 0xde, 0x13, 0xe5, 0x89, 0xe5, 0xda, 0xe2, + 0x71, 0xe3, 0x09, 0xe1, 0x70, 0xe4, 0x55, 0xec, 0xda, 0xf2, 0xb6, 0xf8, 0x73, 0x03, 0xc5, 0x07, + 0x93, 0x12, 0x36, 0x18, 0xd3, 0x13, 0x79, 0x18, 0x48, 0x16, 0x86, 0x15, 0x54, 0x14, 0x74, 0x11, + 0x26, 0x16, 0x57, 0x18, 0xc0, 0x1d, 0xfd, 0x24, 0x2f, 0x21, 0xc1, 0x1f, 0x8b, 0x1e, 0xf9, 0x1c, + 0xa0, 0x1c, 0xde, 0x1a, 0xec, 0x16, 0x12, 0x1a, 0x7a, 0x19, 0x37, 0x1d, 0x21, 0x22, 0x2d, 0x1e, + 0x29, 0x16, 0x6d, 0x0f, 0xc0, 0x06, 0xf6, 0x01, 0xcf, 0xff, 0xed, 0xfb, 0x3b, 0xfc, 0x7f, 0xf9, + 0xf3, 0xfa, 0x17, 0xf5, 0x5a, 0xed, 0x2e, 0xe4, 0x21, 0xdb, 0xfc, 0xd4, 0xbd, 0xcd, 0x33, 0xcd, + 0xc2, 0xd0, 0x6c, 0xd5, 0x6d, 0xd3, 0x6b, 0xd4, 0x57, 0xcf, 0x60, 0xc8, 0x5b, 0xc9, 0xa4, 0xc6, + 0x67, 0xc7, 0xf9, 0xc3, 0x30, 0xc6, 0xe2, 0xc7, 0x7a, 0xca, 0x17, 0xcd, 0x0e, 0xd0, 0x55, 0xd0, + 0x00, 0xcd, 0x59, 0xd5, 0x22, 0xdd, 0x8f, 0xe5, 0x03, 0xef, 0x97, 0xf8, 0xd7, 0xff, 0xf0, 0x04, + 0x66, 0x0c, 0x3b, 0x0e, 0x1a, 0x0f, 0xf4, 0x0f, 0xf4, 0x10, 0x57, 0x13, 0xce, 0x18, 0x9f, 0x1c, + 0xe8, 0x1b, 0x85, 0x1b, 0xa5, 0x1c, 0x19, 0x20, 0x54, 0x22, 0xa1, 0x22, 0x3c, 0x1c, 0xea, 0x19, + 0x0a, 0x1b, 0x21, 0x19, 0x7b, 0x1a, 0x80, 0x18, 0xc7, 0x13, 0x2c, 0x16, 0x45, 0x14, 0xab, 0x15, + 0x96, 0x15, 0x36, 0x11, 0xe1, 0x0d, 0x59, 0x0d, 0xf4, 0x07, 0xc5, 0x06, 0xa5, 0x01, 0xaf, 0xfe, + 0x2b, 0x01, 0xa4, 0x00, 0xba, 0x03, 0x6f, 0xff, 0xba, 0xfe, 0x15, 0xfb, 0x21, 0xfa, 0x6b, 0xf9, + 0x75, 0xf7, 0xed, 0xf9, 0x37, 0xf8, 0xf5, 0xfb, 0x13, 0xfd, 0xe6, 0xfe, 0x73, 0x00, 0x6b, 0x04, + 0x90, 0x07, 0x07, 0x08, 0x7c, 0x08, 0x65, 0x0a, 0xa2, 0x0a, 0xa5, 0x0b, 0xea, 0x11, 0x0b, 0x15, + 0x08, 0x15, 0x12, 0x15, 0xe9, 0x12, 0x92, 0x13, 0xb0, 0x13, 0x7b, 0x14, 0x78, 0x12, 0x5c, 0x0e, + 0xfd, 0x0f, 0x42, 0x10, 0x02, 0x0c, 0x4d, 0x0a, 0xd4, 0x0a, 0x64, 0x0c, 0x92, 0x0d, 0x3a, 0x0e, + 0xcd, 0x0b, 0x23, 0x0a, 0xc3, 0x06, 0x04, 0x01, 0x73, 0xfd, 0x62, 0xfc, 0x74, 0x00, 0xfb, 0x03, + 0xfd, 0x04, 0x20, 0x0a, 0x10, 0x0d, 0x60, 0x09, 0x84, 0x08, 0xbf, 0xfb, 0x3b, 0xf2, 0x56, 0xe8, + 0x6c, 0xe0, 0x58, 0xe3, 0x25, 0xe3, 0x70, 0xeb, 0xf6, 0xeb, 0x63, 0xec, 0x5d, 0xee, 0x94, 0xf0, + 0x5f, 0xf2, 0xce, 0xee, 0x94, 0xee, 0x7a, 0xea, 0x79, 0xed, 0x43, 0xf1, 0x79, 0xf6, 0x60, 0xfd, + 0xea, 0xfe, 0x59, 0xfe, 0x43, 0xfd, 0xb3, 0xfa, 0x26, 0xf6, 0x8a, 0xf9, 0xb6, 0xfa, 0x07, 0xfd, + 0x43, 0x03, 0xb0, 0x08, 0xf6, 0x0a, 0xc2, 0x09, 0x63, 0x08, 0x98, 0x0a, 0xed, 0x0a, 0x6a, 0x0a, + 0x89, 0x07, 0x2c, 0x03, 0x11, 0x03, 0x2d, 0x03, 0x57, 0x05, 0x32, 0x08, 0xe8, 0x06, 0x05, 0x05, + 0x6b, 0x00, 0x8e, 0xfd, 0xdc, 0xff, 0x41, 0x00, 0xfd, 0xfa, 0x09, 0xf9, 0x7c, 0xf2, 0x8a, 0xee, + 0x21, 0xf0, 0x10, 0xf0, 0xf3, 0xef, 0x25, 0xee, 0xf7, 0xec, 0x88, 0xf4, 0x52, 0xf6, 0xe0, 0xf1, + 0xbd, 0xf4, 0x85, 0xef, 0xa4, 0xed, 0xeb, 0xea, 0x4b, 0xeb, 0x4e, 0xec, 0x61, 0xec, 0xd7, 0xf1, + 0xc1, 0xf5, 0xcb, 0xf7, 0x3d, 0xf7, 0xab, 0xf8, 0x3e, 0xf5, 0xa5, 0xf2, 0xa5, 0xf5, 0xe7, 0xf2, + 0xb4, 0xf4, 0xcd, 0xf3, 0x15, 0xf1, 0xcc, 0xf3, 0x08, 0xf6, 0x8e, 0xf7, 0xad, 0xf9, 0x82, 0xfb, + 0xa5, 0xfb, 0x0a, 0x01, 0x17, 0x07, 0xb7, 0x0b, 0x98, 0x0c, 0x4b, 0x0e, 0xa4, 0x15, 0x1a, 0x15, + 0xd7, 0x14, 0x55, 0x16, 0x22, 0x13, 0xce, 0x12, 0x01, 0x0f, 0xf6, 0x0d, 0xb6, 0x09, 0x9f, 0x05, + 0x6c, 0x05, 0x31, 0x09, 0xd2, 0x09, 0x17, 0x08, 0x1b, 0x07, 0x48, 0x02, 0x47, 0x03, 0x44, 0x06, + 0x21, 0x07, 0xa0, 0x07, 0xd9, 0x04, 0xe6, 0x06, 0xa5, 0x09, 0xb8, 0x0b, 0xd1, 0x0b, 0x51, 0x0d, + 0xfa, 0x0a, 0xdb, 0x02, 0x45, 0xff, 0x33, 0xf8, 0xae, 0xf7, 0x7c, 0xf5, 0x3e, 0xf9, 0x18, 0xfc, + 0xd4, 0xfc, 0x3a, 0x02, 0x64, 0xfd, 0xa9, 0xfc, 0x02, 0xfd, 0xfb, 0xfd, 0x8c, 0xff, 0x9d, 0x04, + 0x91, 0x08, 0x36, 0x09, 0xc5, 0x0d, 0x2e, 0x0b, 0x08, 0x09, 0x5f, 0x0a, 0xa1, 0x0d, 0xf8, 0x10, + 0x0c, 0x16, 0xba, 0x1b, 0x89, 0x21, 0xc4, 0x29, 0x54, 0x2a, 0xda, 0x2c, 0xc7, 0x28, 0xef, 0x24, + 0x3a, 0x21, 0xc3, 0x1d, 0xbe, 0x1c, 0x7a, 0x19, 0x44, 0x18, 0xf6, 0x16, 0x8e, 0x15, 0xa7, 0x14, + 0xe7, 0x12, 0x00, 0x13, 0x30, 0x14, 0x73, 0x0e, 0x8a, 0x06, 0x87, 0x02, 0xf2, 0xfc, 0x49, 0xfc, + 0x82, 0xfd, 0x2b, 0xfb, 0xf0, 0xf2, 0xec, 0xec, 0xda, 0xe9, 0x17, 0xe7, 0x9c, 0xe6, 0x16, 0xe4, + 0x56, 0xe4, 0x8e, 0xe1, 0x42, 0xdf, 0xb6, 0xd5, 0xc6, 0xce, 0x6c, 0xc9, 0x49, 0xc4, 0x0d, 0xc4, + 0x4d, 0xc5, 0x18, 0xc6, 0x9a, 0xc4, 0x98, 0xc8, 0xdc, 0xc7, 0x8e, 0xca, 0xa5, 0xcf, 0x28, 0xcf, + 0x69, 0xd0, 0x45, 0xd0, 0xe0, 0xd3, 0xe9, 0xd9, 0x3a, 0xdb, 0x01, 0xdd, 0x52, 0xe0, 0x09, 0xe2, + 0x4b, 0xea, 0x81, 0xf1, 0xd1, 0xf4, 0x13, 0xf9, 0x9f, 0xff, 0x2e, 0x05, 0x7c, 0x0d, 0x0d, 0x18, + 0xd4, 0x1b, 0xdc, 0x23, 0xfd, 0x26, 0x62, 0x25, 0x72, 0x23, 0xfa, 0x20, 0x9f, 0x21, 0x10, 0x24, + 0x44, 0x28, 0x12, 0x30, 0x2b, 0x2f, 0x31, 0x2d, 0x27, 0x2b, 0xcc, 0x24, 0x9a, 0x23, 0x84, 0x20, + 0xd9, 0x1a, 0xd9, 0x19, 0x6d, 0x14, 0x0b, 0x10, 0xb9, 0x10, 0x3e, 0x10, 0xf5, 0x11, 0x5e, 0x13, + 0x57, 0x11, 0x51, 0x10, 0x0a, 0x0f, 0x40, 0x0e, 0x74, 0x0d, 0xe6, 0x07, 0xf0, 0x02, 0xcf, 0x05, + 0x01, 0x05, 0x38, 0x02, 0xec, 0xfd, 0x0f, 0xfd, 0x00, 0xfb, 0xd2, 0xf2, 0x9c, 0xed, 0xb6, 0xe5, + 0x75, 0xe2, 0xbe, 0xe2, 0x86, 0xe1, 0x1d, 0xdf, 0x10, 0xdf, 0xd0, 0xde, 0x14, 0xde, 0xda, 0xde, + 0x42, 0xdd, 0xee, 0xde, 0x93, 0xe6, 0xd4, 0xe9, 0x64, 0xee, 0xb8, 0xf5, 0x3c, 0xfa, 0xd3, 0x01, + 0xc1, 0x09, 0x60, 0x10, 0x3a, 0x13, 0x2b, 0x11, 0xfa, 0x10, 0x28, 0x11, 0x97, 0x0d, 0xa7, 0x10, + 0xbc, 0x13, 0xf1, 0x0e, 0x84, 0x10, 0x72, 0x13, 0xc5, 0x10, 0x67, 0x0f, 0xbb, 0x0c, 0xb2, 0x0b, + 0x34, 0x0a, 0x84, 0x09, 0x58, 0x07, 0x7f, 0x05, 0x80, 0xff, 0x1d, 0xff, 0x5e, 0xff, 0xdf, 0xfd, + 0xc1, 0x03, 0x31, 0x06, 0xb3, 0x0a, 0xc8, 0x0e, 0xfd, 0x13, 0xca, 0x16, 0xef, 0x12, 0x23, 0x12, + 0xe4, 0x11, 0x80, 0x07, 0x4a, 0x05, 0xc8, 0xff, 0xda, 0xfb, 0x96, 0xfd, 0x74, 0xfe, 0xa6, 0x00, + 0x0b, 0x00, 0x51, 0x01, 0x0e, 0x00, 0x71, 0xff, 0x91, 0xfc, 0xfc, 0xf7, 0x28, 0xfa, 0xf0, 0xfb, + 0xfa, 0xff, 0xab, 0xff, 0xba, 0xfe, 0x55, 0xfc, 0x34, 0xf9, 0x1d, 0xf8, 0x85, 0xf5, 0xbe, 0xf8, + 0x2a, 0xff, 0x09, 0x05, 0x9f, 0x06, 0xd8, 0x06, 0xed, 0x04, 0xc6, 0x03, 0x38, 0x03, 0x7d, 0x02, + 0x20, 0x01, 0xce, 0x01, 0xa0, 0x00, 0xb5, 0x00, 0xdb, 0x00, 0x0f, 0x01, 0x6f, 0x01, 0xb4, 0x02, + 0x98, 0x02, 0x43, 0xff, 0x94, 0xf9, 0xb6, 0xf1, 0xff, 0xf3, 0xc5, 0xee, 0x61, 0xe9, 0x6e, 0xea, + 0x3a, 0xe7, 0x56, 0xe3, 0xb7, 0xdf, 0x69, 0xe0, 0x99, 0xe1, 0x0b, 0xe0, 0x83, 0xe1, 0x08, 0xe3, + 0xa8, 0xe5, 0x31, 0xeb, 0x21, 0xf0, 0xe8, 0xf0, 0x07, 0xea, 0x50, 0xe5, 0x1c, 0xe1, 0xf1, 0xdf, + 0xea, 0xe2, 0x01, 0xe9, 0x83, 0xf0, 0xce, 0xf0, 0x68, 0xf4, 0x9a, 0xf4, 0x53, 0xf3, 0xfc, 0xf5, + 0x3f, 0xf8, 0x22, 0xfa, 0x96, 0xfb, 0x8d, 0xfe, 0x43, 0x00, 0x5a, 0x01, 0x1b, 0x03, 0x39, 0x03, + 0x1d, 0x06, 0x38, 0x09, 0x0a, 0x10, 0x60, 0x13, 0xfd, 0x13, 0x55, 0x16, 0xa0, 0x16, 0xaa, 0x19, + 0x50, 0x1d, 0xe1, 0x1e, 0x6c, 0x1e, 0x21, 0x1e, 0x6d, 0x1e, 0x8a, 0x22, 0x99, 0x1d, 0x64, 0x1a, + 0x4b, 0x1a, 0x8f, 0x15, 0xf7, 0x15, 0xac, 0x12, 0x6f, 0x0e, 0x5d, 0x0d, 0xd7, 0x0a, 0x56, 0x06, + 0x8f, 0x04, 0xd5, 0x00, 0x79, 0xfd, 0xbe, 0xfd, 0xd7, 0xfc, 0xf2, 0xfb, 0xf2, 0xfc, 0x52, 0xff, + 0x68, 0x04, 0xb4, 0x04, 0x9f, 0x04, 0xe4, 0x06, 0xec, 0x00, 0xca, 0xfc, 0x45, 0xfb, 0x65, 0xfb, + 0xbd, 0xfd, 0x99, 0xfc, 0x72, 0xfc, 0xc1, 0xf9, 0xde, 0xf6, 0xfe, 0xf4, 0x82, 0xf4, 0xdc, 0xf1, + 0xa6, 0xf1, 0xce, 0xf7, 0xc1, 0xf9, 0x21, 0xfb, 0x37, 0xfb, 0xff, 0xfb, 0xdc, 0xfc, 0x6e, 0xfb, + 0xd5, 0xfe, 0xef, 0xff, 0xed, 0x03, 0x7a, 0x0a, 0xd2, 0x11, 0xf4, 0x19, 0x44, 0x1c, 0x9a, 0x1e, + 0xdf, 0x1d, 0x3f, 0x1c, 0x29, 0x1a, 0xe4, 0x1a, 0x61, 0x1b, 0x9f, 0x1a, 0xbf, 0x1e, 0x4d, 0x20, + 0x1c, 0x1e, 0x3a, 0x21, 0xce, 0x23, 0x2a, 0x23, 0xcf, 0x20, 0x1c, 0x1a, 0x4d, 0x15, 0x82, 0x13, + 0xcc, 0x13, 0xef, 0x13, 0xb5, 0x0e, 0xad, 0x07, 0xc1, 0x05, 0x5a, 0xfe, 0x9c, 0xf5, 0x03, 0xf1, + 0x61, 0xed, 0xe5, 0xef, 0x38, 0xf0, 0xb4, 0xef, 0x63, 0xef, 0x0c, 0xea, 0x7f, 0xe8, 0x24, 0xe7, + 0x9b, 0xe3, 0x60, 0xe1, 0x96, 0xe2, 0x6b, 0xe2, 0xfc, 0xe0, 0x0c, 0xde, 0xc4, 0xde, 0x30, 0xdd, + 0x3a, 0xdc, 0x62, 0xdb, 0x96, 0xde, 0x7e, 0xe0, 0x24, 0xdf, 0x58, 0xdf, 0x15, 0xde, 0xd8, 0xde, + 0x5b, 0xe1, 0x5f, 0xe3, 0x7a, 0xe4, 0x3d, 0xe6, 0x13, 0xe8, 0xb0, 0xeb, 0x80, 0xed, 0xbb, 0xf2, + 0x5e, 0xf8, 0x11, 0xfe, 0x4f, 0x05, 0x61, 0x0a, 0x03, 0x10, 0x26, 0x13, 0x6a, 0x11, 0x72, 0x11, + 0xc1, 0x14, 0xc0, 0x16, 0x7e, 0x1a, 0x1d, 0x21, 0x9c, 0x25, 0xaa, 0x26, 0xd1, 0x24, 0xa5, 0x24, + 0x0d, 0x24, 0x51, 0x22, 0x0e, 0x20, 0x46, 0x1b, 0xfb, 0x12, 0xcf, 0x0d, 0x13, 0x0a, 0x1e, 0x05, + 0x84, 0x01, 0xed, 0xff, 0x41, 0x02, 0x14, 0x03, 0xd8, 0xfe, 0x57, 0xf9, 0xbe, 0xf4, 0x28, 0xef, + 0xeb, 0xf2, 0x86, 0xf4, 0xfc, 0xf0, 0xc6, 0xf3, 0xb5, 0xf4, 0xc6, 0xf5, 0xb4, 0xf4, 0xab, 0xef, + 0xa2, 0xec, 0x84, 0xe4, 0x4a, 0xe0, 0xcc, 0xdb, 0xb4, 0xda, 0x19, 0xdb, 0xaf, 0xdd, 0x6d, 0xdd, + 0xe0, 0xdb, 0xf4, 0xdb, 0x35, 0xdb, 0x35, 0xdd, 0x6a, 0xdc, 0x62, 0xe0, 0x5b, 0xe5, 0xf4, 0xea, + 0x54, 0xf1, 0xcf, 0xf6, 0x3a, 0xfd, 0x94, 0x01, 0x3a, 0x05, 0xb9, 0x05, 0xd8, 0x06, 0x4f, 0x0a, + 0x10, 0x0e, 0x25, 0x15, 0xa8, 0x19, 0xfb, 0x1d, 0x63, 0x21, 0x2e, 0x20, 0x63, 0x1f, 0x0d, 0x21, + 0xa0, 0x22, 0x20, 0x24, 0x87, 0x26, 0xa5, 0x26, 0xda, 0x24, 0xa8, 0x21, 0xf5, 0x1e, 0xce, 0x1c, + 0x45, 0x18, 0x92, 0x15, 0xb5, 0x12, 0x2b, 0x13, 0x0b, 0x16, 0xa0, 0x16, 0x29, 0x17, 0x04, 0x16, + 0x4a, 0x12, 0x67, 0x0f, 0xcb, 0x0e, 0x81, 0x09, 0x6c, 0x06, 0xf5, 0x07, 0xe1, 0x0a, 0x5d, 0x0d, + 0xde, 0x0b, 0x29, 0x09, 0xee, 0x09, 0x57, 0x08, 0xdd, 0x09, 0xac, 0x03, 0x0c, 0xfb, 0x21, 0xf6, + 0x15, 0xf1, 0xfd, 0xf1, 0x52, 0xf2, 0xaa, 0xf2, 0x4e, 0xf1, 0x17, 0xed, 0xff, 0xe4, 0x36, 0xe3, + 0x53, 0xe3, 0x4d, 0xe4, 0x95, 0xe8, 0xce, 0xe9, 0x22, 0xeb, 0x74, 0xec, 0x71, 0xed, 0x03, 0xee, + 0x51, 0xed, 0x30, 0xee, 0x46, 0xf3, 0x9a, 0xf7, 0x19, 0xf9, 0xb4, 0xfb, 0xc7, 0xff, 0x05, 0x05, + 0xbd, 0x08, 0xab, 0x0b, 0xec, 0x0c, 0x5b, 0x10, 0x30, 0x0f, 0x3f, 0x0e, 0x14, 0x0c, 0xcf, 0x09, + 0x11, 0x05, 0x9d, 0xfe, 0x1a, 0x00, 0x48, 0x00, 0x89, 0xfd, 0xc5, 0xfa, 0xaa, 0xf6, 0xc2, 0xf1, + 0x57, 0xf2, 0x9c, 0xf1, 0xca, 0xf0, 0xe9, 0xf4, 0x45, 0xf8, 0x0f, 0xfc, 0xdd, 0xfe, 0xfe, 0xfe, + 0x76, 0xfe, 0xfe, 0xfe, 0x60, 0x03, 0x63, 0x08, 0xf3, 0x0d, 0x53, 0x10, 0x20, 0x10, 0x9b, 0x10, + 0x52, 0x11, 0x27, 0x10, 0x12, 0x0c, 0xd2, 0x07, 0x5e, 0xff, 0x8d, 0xfc, 0x0d, 0xfb, 0x13, 0xf8, + 0xfb, 0xf4, 0x5b, 0xf3, 0xd5, 0xf3, 0x33, 0xf9, 0xba, 0xfc, 0xda, 0xf7, 0xaf, 0xf4, 0x6e, 0xf4, + 0x6c, 0xf5, 0x36, 0xf8, 0x93, 0xf6, 0x9a, 0xf7, 0xea, 0xfa, 0x10, 0xfb, 0x1c, 0xfd, 0xcc, 0x00, + 0x0a, 0x00, 0x27, 0x01, 0x43, 0x01, 0x63, 0x01, 0x2e, 0x01, 0x60, 0x01, 0x8a, 0x02, 0x1c, 0xfd, + 0x38, 0xfb, 0x69, 0xfb, 0xba, 0xf9, 0xf5, 0xf9, 0xdd, 0xf6, 0x0b, 0xf5, 0x57, 0xf3, 0xe9, 0xf4, + 0x50, 0xf3, 0xf4, 0xf0, 0x1a, 0xf2, 0x67, 0xf1, 0xa0, 0xf2, 0x49, 0xf1, 0xc7, 0xed, 0x4e, 0xed, + 0x37, 0xee, 0xf6, 0xef, 0xab, 0xf6, 0x29, 0xfc, 0xf3, 0xfd, 0xba, 0xff, 0x40, 0xfe, 0xa4, 0xfe, + 0x38, 0xff, 0x98, 0x00, 0xfe, 0x02, 0xce, 0x05, 0x85, 0x09, 0x10, 0x09, 0xf9, 0x03, 0x86, 0x00, + 0x4d, 0xfb, 0x3a, 0xfb, 0x67, 0xfd, 0x5f, 0x00, 0x3f, 0x06, 0x01, 0x0b, 0xb8, 0x0d, 0x7d, 0x11, + 0x71, 0x14, 0xb8, 0x15, 0x88, 0x16, 0xe9, 0x13, 0x1c, 0x11, 0x5b, 0x11, 0xbc, 0x10, 0x81, 0x11, + 0x6f, 0x11, 0xad, 0x12, 0xf0, 0x15, 0xee, 0x1c, 0xe2, 0x1f, 0xa1, 0x1f, 0xdb, 0x1f, 0x1e, 0x20, + 0xe9, 0x1f, 0xa5, 0x1c, 0x4c, 0x19, 0x5e, 0x19, 0x0c, 0x1b, 0x7b, 0x1b, 0x9b, 0x1a, 0x1a, 0x14, + 0xfa, 0x0d, 0xac, 0x09, 0xe5, 0x06, 0x27, 0x05, 0xd2, 0x01, 0x3d, 0xfd, 0x12, 0xfa, 0x00, 0xf5, + 0xcb, 0xf1, 0x70, 0xf1, 0x3a, 0xef, 0x43, 0xee, 0x62, 0xed, 0xaa, 0xed, 0xae, 0xee, 0xd1, 0xee, + 0xd8, 0xee, 0x6c, 0xf0, 0xf4, 0xf0, 0x04, 0xf4, 0xd0, 0xf4, 0xdf, 0xf2, 0x93, 0xf0, 0x3e, 0xef, + 0x3c, 0xed, 0x51, 0xeb, 0x11, 0xe8, 0x31, 0xe5, 0x79, 0xe6, 0x7c, 0xe7, 0x56, 0xec, 0xd0, 0xed, + 0x95, 0xec, 0x70, 0xed, 0xe2, 0xed, 0x12, 0xf3, 0x62, 0xf9, 0x26, 0xfd, 0x39, 0x00, 0x21, 0x03, + 0x8b, 0x03, 0xc4, 0x04, 0xb5, 0x05, 0x4a, 0x08, 0xa0, 0x0d, 0xf5, 0x12, 0x7b, 0x19, 0x43, 0x1d, + 0xc1, 0x1d, 0x0b, 0x21, 0x68, 0x23, 0x9f, 0x22, 0x4e, 0x23, 0x18, 0x20, 0x83, 0x1a, 0x2e, 0x18, + 0x6c, 0x12, 0xf8, 0x0f, 0x69, 0x12, 0xc1, 0x10, 0xbe, 0x0e, 0xc4, 0x09, 0x4b, 0x04, 0x73, 0x00, + 0xc4, 0xfb, 0xc7, 0xf5, 0x35, 0xf2, 0xf5, 0xf0, 0x33, 0xf1, 0xe7, 0xf3, 0x20, 0xf3, 0xb9, 0xf0, + 0x2f, 0xee, 0x89, 0xec, 0x48, 0xeb, 0x30, 0xe9, 0x1d, 0xe7, 0x4a, 0xe6, 0xf1, 0xe3, 0x90, 0xe3, + 0xdc, 0xe3, 0x60, 0xe3, 0x55, 0xe4, 0xc8, 0xe2, 0x45, 0xe1, 0x5c, 0xde, 0xe0, 0xdb, 0xca, 0xde, + 0x34, 0xe3, 0x19, 0xe4, 0x5c, 0xe6, 0x15, 0xeb, 0x8e, 0xed, 0xfe, 0xf0, 0xaa, 0xf2, 0x47, 0xf3, + 0x7d, 0xf2, 0xfc, 0xf2, 0xa4, 0xf7, 0x4a, 0xfd, 0x73, 0x00, 0xc0, 0x04, 0x75, 0x06, 0xc9, 0x07, + 0x7f, 0x09, 0xbc, 0x09, 0xf5, 0x0c, 0xa5, 0x0f, 0x87, 0x12, 0xf6, 0x16, 0xe5, 0x19, 0x24, 0x19, + 0x39, 0x19, 0xcc, 0x15, 0x0b, 0x11, 0xf4, 0x0f, 0x06, 0x10, 0x81, 0x10, 0x24, 0x12, 0xc0, 0x0e, + 0x79, 0x0e, 0x81, 0x10, 0x92, 0x0f, 0x0d, 0x0e, 0xea, 0x0a, 0x2a, 0x06, 0x5e, 0x03, 0x2c, 0x03, + 0xba, 0xff, 0x7a, 0xfd, 0x15, 0xfd, 0x14, 0x00, 0x1b, 0x02, 0x02, 0x01, 0x56, 0x01, 0x49, 0x01, + 0x95, 0x00, 0xd5, 0xfd, 0x8c, 0xfb, 0x6d, 0xfb, 0x64, 0xfe, 0xe0, 0x00, 0x7a, 0x01, 0xb6, 0xfd, + 0x4b, 0xf8, 0x30, 0xf8, 0xcf, 0xf5, 0x2e, 0xf6, 0x53, 0xf8, 0x7a, 0xf9, 0x08, 0xfa, 0x5a, 0xf9, + 0x1d, 0xfa, 0x78, 0xfb, 0xb0, 0xfb, 0x77, 0xfd, 0xcc, 0xfd, 0x22, 0xfe, 0x33, 0x01, 0x25, 0x04, + 0x03, 0x05, 0x6b, 0x07, 0x21, 0x0a, 0xf3, 0x0c, 0x9e, 0x12, 0xbb, 0x14, 0x8c, 0x16, 0xcb, 0x14, + 0xb5, 0x11, 0x3d, 0x11, 0x73, 0x13, 0x3a, 0x12, 0xee, 0x11, 0xfb, 0x11, 0x92, 0x0f, 0x57, 0x0f, + 0xd5, 0x0c, 0x27, 0x07, 0xa5, 0x05, 0x96, 0x05, 0xe9, 0x06, 0x48, 0x0b, 0xb3, 0x0b, 0xc5, 0x0c, + 0x28, 0x0c, 0x72, 0x09, 0x23, 0x07, 0x23, 0x03, 0xad, 0x04, 0x8b, 0x06, 0x12, 0x08, 0x47, 0x09, + 0x0c, 0x09, 0xb3, 0x0a, 0x21, 0x0d, 0x30, 0x0d, 0x8c, 0x0b, 0xd0, 0x0a, 0x95, 0x08, 0x89, 0x05, + 0x87, 0x00, 0x9e, 0xf9, 0x40, 0xf7, 0xe3, 0xf4, 0x79, 0xf2, 0x1b, 0xf2, 0x26, 0xf2, 0x03, 0xf4, + 0xad, 0xf2, 0x16, 0xf0, 0x20, 0xed, 0x6b, 0xeb, 0xec, 0xeb, 0x7f, 0xed, 0xa5, 0xee, 0xd2, 0xee, + 0x5a, 0xf0, 0x7d, 0xf4, 0x35, 0xf6, 0x8d, 0xf6, 0xd5, 0xf3, 0xfb, 0xf2, 0x40, 0xf3, 0x16, 0xf1, + 0xd2, 0xf3, 0xb8, 0xf2, 0x4c, 0xf4, 0x80, 0xf6, 0x05, 0xf6, 0xaa, 0xf6, 0x8e, 0xf8, 0x06, 0xf7, + 0x99, 0xf5, 0x77, 0xf4, 0x58, 0xf3, 0xb4, 0xf2, 0x4c, 0xf3, 0x33, 0xf6, 0x93, 0xf8, 0x51, 0xf7, + 0x09, 0xf4, 0x62, 0xf2, 0xb5, 0xf3, 0x3d, 0xf4, 0x03, 0xf8, 0x3e, 0xfa, 0x49, 0xfb, 0xb6, 0xfa, + 0xf8, 0xf9, 0x19, 0xf7, 0x1e, 0xf5, 0xea, 0xf7, 0x54, 0xfa, 0x07, 0xfc, 0x8e, 0xfd, 0x0c, 0x01, + 0x95, 0x01, 0xbc, 0x00, 0xad, 0xff, 0x8d, 0xfc, 0xf1, 0xfa, 0x3e, 0xf6, 0xcd, 0xf6, 0x44, 0xf9, + 0x7f, 0xfb, 0x9e, 0x01, 0xcd, 0x05, 0x3e, 0x07, 0x15, 0x05, 0xeb, 0x03, 0x2a, 0x05, 0xe3, 0x04, + 0x5b, 0x01, 0xac, 0x00, 0x5d, 0x02, 0x24, 0x05, 0x66, 0x0a, 0x9c, 0x0c, 0x37, 0x0e, 0x31, 0x0f, + 0x95, 0x10, 0x07, 0x0f, 0x09, 0x0d, 0x92, 0x0b, 0x1c, 0x0d, 0xa7, 0x11, 0xfc, 0x12, 0x6d, 0x14, + 0x3f, 0x13, 0xaf, 0x10, 0xe7, 0x0e, 0x54, 0x0b, 0x98, 0x07, 0x6d, 0x04, 0xaa, 0xff, 0x2c, 0xfc, + 0xc2, 0xfb, 0xb7, 0xfa, 0xee, 0xfb, 0x24, 0xfb, 0xf2, 0xf9, 0x9e, 0xf7, 0xea, 0xf5, 0x3f, 0xf7, + 0xf5, 0xf6, 0xf3, 0xf5, 0xce, 0xf6, 0xeb, 0xf5, 0x41, 0xf6, 0xb7, 0xf9, 0x0c, 0xfc, 0xc7, 0xfb, + 0x34, 0xfb, 0xaa, 0xf8, 0xa6, 0xf8, 0x2b, 0xf9, 0xb4, 0xf9, 0x48, 0xfb, 0x0a, 0xf9, 0xcb, 0xf6, + 0xb7, 0xf4, 0x44, 0xf4, 0x7f, 0xf5, 0x45, 0xfa, 0x1f, 0xfd, 0x8e, 0x00, 0xa5, 0x02, 0x41, 0x07, + 0x3b, 0x0d, 0xd2, 0x0e, 0x41, 0x10, 0xe2, 0x10, 0xe4, 0x11, 0x02, 0x18, 0x63, 0x1e, 0x09, 0x1f, + 0x4c, 0x21, 0x73, 0x23, 0x1d, 0x26, 0x2f, 0x29, 0xa0, 0x28, 0x05, 0x29, 0xb6, 0x2b, 0x1f, 0x2b, + 0xe6, 0x27, 0xdd, 0x24, 0x47, 0x20, 0x13, 0x1d, 0x13, 0x1c, 0xee, 0x18, 0xa7, 0x14, 0xa5, 0x0f, + 0xc2, 0x08, 0x31, 0x06, 0xe3, 0x03, 0x8a, 0x00, 0x78, 0xff, 0xfe, 0xfc, 0x01, 0xfa, 0xe2, 0xf6, + 0xea, 0xf7, 0x3c, 0xf8, 0xa6, 0xf6, 0x4a, 0xf3, 0xb7, 0xef, 0x54, 0xec, 0xde, 0xe9, 0xd3, 0xe6, + 0xca, 0xe2, 0x7f, 0xe2, 0x86, 0xe0, 0x24, 0xe1, 0xde, 0xdf, 0x37, 0xdc, 0xc6, 0xdd, 0xf7, 0xdd, + 0xbe, 0xdc, 0x75, 0xda, 0x8c, 0xd7, 0xde, 0xd7, 0x44, 0xda, 0x97, 0xe2, 0xb4, 0xe9, 0x4c, 0xeb, + 0x3a, 0xe8, 0xc6, 0xe7, 0x0f, 0xea, 0xe0, 0xeb, 0x1c, 0xf1, 0xc9, 0xf3, 0xff, 0xfa, 0xc0, 0x00, + 0xcb, 0x03, 0xe0, 0x05, 0x27, 0x05, 0xd1, 0x02, 0xbb, 0x04, 0x06, 0x07, 0xbe, 0x07, 0x23, 0x0c, + 0xff, 0x0f, 0x61, 0x12, 0x8f, 0x13, 0xdc, 0x10, 0xca, 0x0d, 0xf5, 0x0a, 0xdd, 0x07, 0x8e, 0x04, + 0xec, 0x04, 0x87, 0x05, 0xe9, 0x06, 0x84, 0x07, 0x01, 0x07, 0xb3, 0x07, 0xba, 0x09, 0xe0, 0x09, + 0x99, 0x05, 0x28, 0x00, 0xea, 0xfc, 0x05, 0xfc, 0x0d, 0xfe, 0x94, 0xfc, 0x31, 0xfe, 0x69, 0xff, + 0xa3, 0xfd, 0x65, 0xfd, 0xa1, 0xfa, 0xb9, 0xf6, 0x46, 0xf4, 0x15, 0xf5, 0xf6, 0xf5, 0x88, 0xf5, + 0x78, 0xf6, 0xa9, 0xf4, 0x40, 0xf0, 0x43, 0xec, 0x85, 0xe9, 0xfd, 0xe9, 0xea, 0xea, 0xf8, 0xeb, + 0xe7, 0xec, 0x6b, 0xeb, 0xb5, 0xee, 0x94, 0xf1, 0x52, 0xf2, 0x5e, 0xf4, 0xe1, 0xf5, 0xfe, 0xf7, + 0x34, 0xfe, 0x98, 0x03, 0xd7, 0x06, 0xc6, 0x07, 0x1a, 0x07, 0xa7, 0x0a, 0x9c, 0x0d, 0x90, 0x10, + 0xee, 0x11, 0x86, 0x12, 0xd8, 0x13, 0x01, 0x16, 0x98, 0x16, 0x43, 0x14, 0xe2, 0x13, 0xf4, 0x13, + 0xae, 0x10, 0xdb, 0x0c, 0xaa, 0x08, 0xe8, 0x02, 0x9b, 0x02, 0xfc, 0x04, 0x59, 0x07, 0x59, 0x0d, + 0xa7, 0x11, 0xb4, 0x13, 0xd7, 0x11, 0x3d, 0x10, 0x9e, 0x12, 0xf9, 0x13, 0xe7, 0x14, 0x36, 0x14, + 0xff, 0x13, 0xea, 0x14, 0x18, 0x16, 0x89, 0x18, 0xa7, 0x17, 0xb6, 0x16, 0x7c, 0x16, 0x3d, 0x17, + 0x70, 0x12, 0x25, 0x0f, 0xa8, 0x09, 0x61, 0x03, 0x5b, 0xfc, 0x72, 0xf7, 0x3c, 0xf6, 0x34, 0xf4, + 0xde, 0xf5, 0x2a, 0xf7, 0x59, 0xf4, 0x0f, 0xf0, 0x60, 0xef, 0xa6, 0xee, 0x19, 0xee, 0xee, 0xf0, + 0x5a, 0xf4, 0x44, 0xf9, 0x4d, 0xfd, 0x5e, 0x00, 0x65, 0x01, 0x9a, 0x01, 0xe1, 0x00, 0xa8, 0x00, + 0xdf, 0x00, 0x75, 0x00, 0xd5, 0x01, 0xae, 0x01, 0x25, 0x02, 0x39, 0x03, 0xaa, 0x02, 0x00, 0x02, + 0xea, 0x00, 0x0f, 0xff, 0xf9, 0xfb, 0xd9, 0xf6, 0x88, 0xf5, 0x12, 0xf6, 0xf4, 0xf7, 0x84, 0xfa, + 0xed, 0xfb, 0x96, 0xfc, 0xf6, 0xfc, 0x21, 0xfc, 0x73, 0xfa, 0xd4, 0xfb, 0xd2, 0xfe, 0x0b, 0x03, + 0x4a, 0x05, 0xa1, 0x04, 0x35, 0x02, 0x7c, 0x00, 0x2a, 0x00, 0xd9, 0x00, 0x63, 0xfe, 0x92, 0xfc, + 0x2f, 0xfd, 0x66, 0xfe, 0xe9, 0xfe, 0x24, 0xfc, 0x1d, 0xf7, 0x31, 0xf1, 0x9b, 0xea, 0x71, 0xe8, + 0xa1, 0xe6, 0x2c, 0xe9, 0x4a, 0xeb, 0xb0, 0xea, 0x6d, 0xeb, 0xe6, 0xed, 0x4a, 0xf1, 0x2c, 0xf2, + 0x6c, 0xf3, 0x76, 0xf2, 0x5e, 0xf1, 0xee, 0xf3, 0x28, 0xf6, 0xa7, 0xf9, 0x31, 0xfd, 0xde, 0x01, + 0x02, 0x07, 0x9f, 0x0a, 0xbc, 0x0a, 0xe6, 0x08, 0x3c, 0x08, 0xc1, 0x09, 0x2f, 0x0b, 0x7d, 0x0c, + 0x3e, 0x0d, 0x0e, 0x0c, 0x6a, 0x0a, 0x55, 0x08, 0x72, 0x04, 0x38, 0x00, 0xef, 0xfa, 0xc0, 0xf3, + 0xc7, 0xf2, 0x68, 0xf4, 0x78, 0xf6, 0xd2, 0xf7, 0x8a, 0xf6, 0x1f, 0xf3, 0x35, 0xf1, 0xce, 0xf2, + 0xf6, 0xf4, 0x17, 0xf6, 0xee, 0xf6, 0xf6, 0xf6, 0x1b, 0xf7, 0xc3, 0xf9, 0xc1, 0xfd, 0x99, 0xfe, + 0xdb, 0xfb, 0xad, 0xfe, 0xfd, 0xff, 0xfc, 0x00, 0x15, 0xff, 0x69, 0xfb, 0x89, 0xf9, 0x3b, 0xf9, + 0xe8, 0xfa, 0xd5, 0xf9, 0x5d, 0xf6, 0x7c, 0xf4, 0x48, 0xf4, 0x8d, 0xf5, 0xb8, 0xf7, 0x50, 0xfb, + 0x74, 0xfd, 0x79, 0x02, 0xd4, 0x05, 0x4b, 0x09, 0xbf, 0x0e, 0x82, 0x14, 0x1e, 0x17, 0x35, 0x1a, + 0x73, 0x1d, 0xc6, 0x21, 0xc6, 0x24, 0x57, 0x26, 0x77, 0x28, 0xca, 0x2b, 0x56, 0x30, 0x2e, 0x34, + 0xc8, 0x35, 0x86, 0x31, 0xa1, 0x2c, 0x54, 0x28, 0xf0, 0x23, 0x0f, 0x1e, 0x22, 0x17, 0xe8, 0x12, + 0xa9, 0x0e, 0x7f, 0x0c, 0x45, 0x0a, 0x96, 0x06, 0x22, 0x03, 0x3c, 0xfe, 0x06, 0xfa, 0x64, 0xf8, + 0x98, 0xf7, 0x5e, 0xf7, 0x38, 0xf7, 0xe4, 0xf7, 0x56, 0xf7, 0x28, 0xf7, 0xd0, 0xf5, 0xc9, 0xf3, + 0x77, 0xf1, 0x41, 0xee, 0x18, 0xed, 0x5c, 0xeb, 0xc4, 0xea, 0x6d, 0xea, 0x0d, 0xe7, 0x8f, 0xe5, + 0x9c, 0xe8, 0xed, 0xe9, 0x11, 0xe9, 0x6f, 0xe6, 0x74, 0xe3, 0xfb, 0xe5, 0xfc, 0xe7, 0xad, 0xec, + 0x1b, 0xf1, 0xdb, 0xf1, 0x02, 0xf3, 0xbb, 0xf4, 0xaa, 0xf4, 0x20, 0xf7, 0x47, 0xfc, 0x8f, 0x00, + 0x1f, 0x06, 0xd0, 0x09, 0xab, 0x0b, 0x58, 0x0d, 0x18, 0x0e, 0x38, 0x0d, 0x36, 0x0e, 0xc0, 0x0f, + 0x7d, 0x12, 0x90, 0x15, 0x17, 0x17, 0xf9, 0x16, 0xd9, 0x18, 0x7c, 0x19, 0xca, 0x14, 0x2e, 0x0e, + 0x71, 0x06, 0xba, 0x01, 0x59, 0x01, 0x93, 0x01, 0x24, 0x01, 0x2c, 0x00, 0xb4, 0x00, 0xd6, 0x00, + 0x7a, 0x00, 0x1b, 0xff, 0x70, 0xf9, 0x6f, 0xf5, 0xcb, 0xf1, 0xe2, 0xee, 0x08, 0xf0, 0x22, 0xf2, + 0xd4, 0xf4, 0x91, 0xf5, 0x51, 0xf4, 0x52, 0xf1, 0x8a, 0xee, 0xe5, 0xeb, 0xc6, 0xea, 0x84, 0xe9, + 0x7f, 0xe9, 0xaf, 0xed, 0x40, 0xee, 0x6f, 0xee, 0xb7, 0xec, 0xca, 0xeb, 0xa7, 0xeb, 0x81, 0xeb, + 0xac, 0xeb, 0xf8, 0xeb, 0xbd, 0xea, 0x0d, 0xec, 0x5a, 0xf0, 0x83, 0xf0, 0xe3, 0xee, 0xb1, 0xf0, + 0xf2, 0xf1, 0x7c, 0xf6, 0xb2, 0xfa, 0xa3, 0xfd, 0xc9, 0xff, 0xee, 0x02, 0xc2, 0x04, 0xa1, 0x08, + 0xe9, 0x0b, 0xbc, 0x0d, 0x7e, 0x11, 0x26, 0x13, 0xcc, 0x13, 0xa7, 0x12, 0x1d, 0x13, 0x87, 0x13, + 0x2d, 0x12, 0x6a, 0x0f, 0x2d, 0x0b, 0xac, 0x07, 0x07, 0x04, 0x75, 0x02, 0x3c, 0x01, 0x68, 0x03, + 0x2b, 0x06, 0xa6, 0x09, 0xd7, 0x08, 0xe8, 0x07, 0x97, 0x09, 0x5f, 0x0b, 0x88, 0x0d, 0xa7, 0x0d, + 0xab, 0x0d, 0x10, 0x0d, 0x0d, 0x0e, 0xa2, 0x0d, 0x51, 0x0c, 0x78, 0x0b, 0x06, 0x0a, 0xb7, 0x0b, + 0x76, 0x0c, 0x2a, 0x0e, 0x77, 0x0d, 0x1d, 0x0c, 0xe2, 0x06, 0x49, 0x03, 0x0a, 0x00, 0x41, 0xfe, + 0x49, 0x00, 0xf8, 0xfe, 0xc8, 0xfe, 0xdf, 0xfe, 0xe0, 0xfd, 0xdd, 0xfd, 0x6b, 0xfb, 0x27, 0xf9, + 0x56, 0xf7, 0x76, 0xf8, 0x09, 0xfc, 0xd4, 0x01, 0x46, 0x04, 0x21, 0x06, 0x78, 0x07, 0x71, 0x08, + 0x7c, 0x0a, 0x97, 0x09, 0x6e, 0x08, 0x22, 0x07, 0x26, 0x08, 0x9a, 0x08, 0xc2, 0x07, 0xff, 0x07, + 0x4b, 0x0a, 0x86, 0x09, 0x50, 0x06, 0x24, 0x03, 0x8f, 0xfd, 0x7d, 0xf9, 0xbc, 0xf9, 0xf9, 0xfa, + 0x46, 0xfc, 0xea, 0xff, 0x6c, 0x01, 0x1f, 0x00, 0xdf, 0xfc, 0xe6, 0xfa, 0x01, 0xfd, 0x5f, 0xff, + 0x4f, 0x02, 0x99, 0x01, 0x15, 0xff, 0x2b, 0xff, 0x58, 0xfe, 0x6d, 0xfd, 0xbb, 0xf8, 0x0b, 0xf3, + 0x02, 0xf1, 0xa5, 0xf1, 0x93, 0xf3, 0x06, 0xf8, 0xfc, 0xfb, 0x75, 0xfc, 0x74, 0xfc, 0x07, 0xfa, + 0xa2, 0xf7, 0xdc, 0xf6, 0x8a, 0xf6, 0x4b, 0xf6, 0x60, 0xf8, 0xe8, 0xf9, 0x15, 0xfc, 0xcd, 0xff, + 0x5f, 0xff, 0x0e, 0xff, 0x1b, 0xfe, 0x0d, 0xfe, 0x6f, 0xfd, 0xf2, 0xfa, 0x60, 0xfb, 0xf3, 0xfc, + 0xc4, 0x01, 0x0a, 0x06, 0x38, 0x08, 0x25, 0x07, 0x7e, 0x05, 0xe3, 0x03, 0x38, 0x04, 0x94, 0x04, + 0xbf, 0x02, 0x0a, 0x02, 0x36, 0x03, 0x89, 0x03, 0x32, 0x02, 0x0e, 0xff, 0xb9, 0xfa, 0x3f, 0xf7, + 0xb9, 0xf5, 0x9d, 0xf5, 0xdc, 0xf3, 0x93, 0xf1, 0xf9, 0xf1, 0x5c, 0xf0, 0x4d, 0xed, 0x4b, 0xed, + 0xfe, 0xec, 0x24, 0xed, 0xb2, 0xeb, 0xcf, 0xeb, 0x8d, 0xeb, 0x8e, 0xeb, 0xf7, 0xea, 0x66, 0xe8, + 0x67, 0xe6, 0xab, 0xe4, 0x18, 0xe9, 0x8e, 0xeb, 0x75, 0xed, 0x68, 0xf0, 0x00, 0xf1, 0x51, 0xf5, + 0xbc, 0xf7, 0x35, 0xf8, 0x03, 0xf9, 0x48, 0xfb, 0x32, 0xfc, 0x7b, 0xfd, 0x18, 0xff, 0x73, 0x01, + 0x5e, 0x04, 0xef, 0x06, 0x79, 0x09, 0xe3, 0x0b, 0x67, 0x0f, 0xa5, 0x14, 0xb7, 0x19, 0xab, 0x1d, + 0xc3, 0x20, 0xc3, 0x22, 0x3e, 0x23, 0x49, 0x23, 0x34, 0x24, 0x35, 0x23, 0x96, 0x24, 0x3e, 0x29, + 0x92, 0x2c, 0xae, 0x2d, 0x61, 0x2d, 0x73, 0x2c, 0x9c, 0x26, 0xf4, 0x20, 0x14, 0x1a, 0xde, 0x12, + 0xf8, 0x0d, 0x78, 0x0a, 0x49, 0x08, 0x70, 0x06, 0x2c, 0x03, 0x8f, 0xff, 0x7b, 0xfc, 0x0b, 0xf8, + 0x05, 0xf5, 0x55, 0xf2, 0x72, 0xf1, 0xd9, 0xf1, 0x66, 0xf1, 0xa7, 0xf1, 0x7c, 0xf3, 0xbe, 0xf0, + 0x61, 0xee, 0x9a, 0xeb, 0x4f, 0xe7, 0x56, 0xe6, 0x33, 0xe7, 0xdc, 0xe7, 0xe5, 0xe8, 0xb2, 0xea, + 0x49, 0xee, 0x81, 0xf0, 0x0e, 0xf3, 0x66, 0xf1, 0x62, 0xf2, 0xa2, 0xf3, 0x0b, 0xf4, 0x80, 0xf8, + 0xea, 0xf9, 0x77, 0xfe, 0x17, 0x03, 0x05, 0x05, 0x86, 0x06, 0x35, 0x05, 0xda, 0x07, 0xaf, 0x0a, + 0x6d, 0x10, 0x0a, 0x12, 0x75, 0x12, 0x2e, 0x14, 0xfd, 0x13, 0xd4, 0x12, 0x15, 0x11, 0x1e, 0x10, + 0xaf, 0x0d, 0xeb, 0x0d, 0xbb, 0x0e, 0x61, 0x0f, 0xba, 0x10, 0x0f, 0x11, 0xae, 0x12, 0x6b, 0x10, + 0x98, 0x0b, 0x7d, 0x07, 0xf3, 0x00, 0x34, 0xfd, 0x69, 0xfd, 0x9f, 0xfb, 0xd0, 0xfa, 0x1a, 0x00, + 0xaa, 0x03, 0x1c, 0x03, 0x56, 0x03, 0x8c, 0x01, 0xba, 0xfd, 0x2b, 0xf8, 0xb7, 0xf4, 0xac, 0xf3, + 0xee, 0xf0, 0x48, 0xef, 0x27, 0xf1, 0x13, 0xf0, 0x3c, 0xeb, 0x3c, 0xeb, 0xfe, 0xe7, 0x5d, 0xe6, + 0x39, 0xe8, 0x02, 0xe9, 0xb7, 0xea, 0x4d, 0xeb, 0x1f, 0xeb, 0xf8, 0xeb, 0x89, 0xec, 0x5a, 0xef, + 0x4c, 0xf3, 0xd7, 0xf2, 0x22, 0xf3, 0x55, 0xf6, 0xae, 0xf7, 0xb3, 0xf6, 0x9e, 0xf6, 0x52, 0xf6, + 0xce, 0xf8, 0x3d, 0xfc, 0x7c, 0xff, 0x90, 0x01, 0xa5, 0x01, 0x5c, 0x02, 0x71, 0x03, 0x4b, 0x03, + 0x3c, 0x03, 0xfa, 0x04, 0x59, 0x07, 0x11, 0x09, 0x6e, 0x0a, 0xb2, 0x0b, 0x46, 0x0c, 0xe8, 0x0b, + 0xc9, 0x0b, 0x6e, 0x08, 0xf1, 0x06, 0xe3, 0x03, 0xe0, 0x00, 0x5e, 0xff, 0x57, 0xfc, 0x99, 0xfa, + 0xc7, 0xfb, 0xca, 0xfb, 0xcc, 0xf9, 0x2d, 0xfb, 0xb7, 0xfd, 0x08, 0x01, 0xe0, 0x02, 0xed, 0x05, + 0xee, 0x08, 0xe0, 0x07, 0x87, 0x06, 0xa3, 0x05, 0xd3, 0x07, 0x86, 0x01, 0x6c, 0x01, 0x41, 0x06, + 0x28, 0x0a, 0x0d, 0x0e, 0xc5, 0x0f, 0xda, 0x11, 0x4f, 0x10, 0x85, 0x0c, 0x20, 0x09, 0x1d, 0x05, + 0xf5, 0x01, 0x95, 0x01, 0x3c, 0x04, 0xed, 0x03, 0xbb, 0x04, 0x7d, 0x03, 0xa2, 0x00, 0xdc, 0xfd, + 0x53, 0xfc, 0x70, 0xfc, 0xb2, 0xfe, 0x6a, 0x00, 0x86, 0x04, 0xa7, 0x06, 0x16, 0x08, 0xb8, 0x09, + 0xd0, 0x09, 0xa8, 0x07, 0xd6, 0x03, 0xb5, 0x05, 0x06, 0x06, 0x4e, 0x05, 0x96, 0x01, 0x01, 0x02, + 0xff, 0x04, 0xf6, 0x04, 0x62, 0x05, 0x45, 0x03, 0xff, 0x01, 0x46, 0x00, 0xda, 0xfd, 0x0c, 0xfc, + 0x83, 0xfb, 0x6c, 0xfe, 0xb7, 0x01, 0x3e, 0x02, 0xe1, 0x01, 0xd2, 0x02, 0x47, 0x01, 0xde, 0x00, + 0xe7, 0x00, 0xd9, 0x03, 0xf2, 0x03, 0x22, 0x04, 0x0b, 0x03, 0x3d, 0x04, 0xb2, 0x00, 0xee, 0xf8, + 0x50, 0xf7, 0xa0, 0xf5, 0xca, 0xf5, 0x1d, 0xf5, 0x77, 0xf5, 0x04, 0xf8, 0xed, 0xfd, 0x94, 0xfd, + 0x41, 0xff, 0xd4, 0xfe, 0x91, 0xfc, 0x39, 0xfb, 0xab, 0xfa, 0x95, 0xfb, 0xc7, 0xfb, 0x32, 0xfe, + 0xb7, 0xfe, 0x5f, 0x02, 0x71, 0x06, 0x93, 0x08, 0x88, 0x0b, 0x7e, 0x09, 0x1e, 0x08, 0x53, 0x04, + 0x79, 0x02, 0x73, 0x00, 0x54, 0x02, 0x4a, 0x03, 0x31, 0x04, 0xba, 0x06, 0xda, 0x03, 0x7f, 0x01, + 0xc8, 0xfe, 0xc8, 0xfd, 0x55, 0x00, 0x85, 0x00, 0xb2, 0xfc, 0x86, 0xfd, 0xc0, 0xf8, 0x98, 0xf8, + 0xae, 0xf4, 0xda, 0xf3, 0x43, 0xf0, 0xbb, 0xf4, 0x09, 0xf3, 0x28, 0xf0, 0x26, 0xf4, 0x0e, 0xec, + 0x36, 0xf0, 0xb9, 0xee, 0x24, 0xef, 0x9f, 0xef, 0x81, 0xec, 0xdd, 0xec, 0x5d, 0xed, 0x04, 0xee, + 0x94, 0xed, 0x67, 0xec, 0x03, 0xf1, 0x2d, 0xf4, 0xb1, 0xf7, 0x16, 0xf8, 0x04, 0xf9, 0x78, 0xfb, + 0x6f, 0xf7, 0xf7, 0xf8, 0xd5, 0xfa, 0x2a, 0xfb, 0x53, 0xfb, 0x80, 0xfc, 0x0c, 0xfa, 0x4f, 0xfb, + 0xe9, 0xf9, 0xd1, 0xf9, 0x78, 0xfc, 0xbd, 0xfa, 0x65, 0xfd, 0x8b, 0x02, 0xe4, 0x05, 0x94, 0x0a, + 0xea, 0x0a, 0x6b, 0x0f, 0x4f, 0x13, 0x52, 0x15, 0xca, 0x14, 0xcb, 0x12, 0x0e, 0x10, 0x77, 0x12, + 0x7f, 0x14, 0x5f, 0x16, 0xa3, 0x1c, 0x8f, 0x1d, 0x43, 0x1f, 0xa5, 0x1c, 0xf2, 0x21, 0x6b, 0x16, + 0xb0, 0x11, 0x81, 0x10, 0xa0, 0x0a, 0xf1, 0x08, 0x54, 0x09, 0x41, 0x08, 0xd1, 0x05, 0xb0, 0x04, + 0xfe, 0x00, 0x52, 0xfe, 0xe4, 0xf6, 0x47, 0xf6, 0xb9, 0xf6, 0x76, 0xf2, 0x31, 0xf5, 0xef, 0xf5, + 0x36, 0xf9, 0x7c, 0xec, 0x88, 0xed, 0x5b, 0xf1, 0x29, 0xef, 0xb4, 0xf1, 0xc6, 0xea, 0xa0, 0xed, + 0xa4, 0xee, 0x33, 0xf0, 0xb6, 0xf3, 0xb1, 0xf9, 0x17, 0xfe, 0xc5, 0xfa, 0x51, 0xfd, 0x14, 0xfc, + 0xb5, 0xff, 0x6c, 0x02, 0x20, 0xff, 0xd9, 0x07, 0xad, 0x0c, 0xfb, 0x0b, 0x96, 0x08, 0xe7, 0x11, + 0xc6, 0x16, 0xfe, 0x13, 0xdb, 0x12, 0x89, 0x17, 0x45, 0x1a, 0x59, 0x14, 0x61, 0x13, 0x0a, 0x12, + 0xec, 0x0f, 0x7d, 0x03, 0x28, 0x05, 0xe9, 0x07, 0x36, 0xfa, 0xcc, 0x05, 0x31, 0x08, 0xe1, 0x03, + 0x6e, 0x08, 0xfb, 0x05, 0xf9, 0x06, 0x55, 0xfd, 0xe7, 0x05, 0xaa, 0xfa, 0x93, 0x00, 0x24, 0xfa, + 0x78, 0xf6, 0x01, 0x02, 0x73, 0xf9, 0x71, 0x05, 0x3e, 0xff, 0xe3, 0x00, 0x3d, 0x00, 0xd3, 0xfb, + 0xa7, 0xf8, 0xcb, 0xf4, 0x69, 0xf4, 0x06, 0xf2, 0x35, 0xf4, 0xd2, 0xf1, 0x2a, 0xf2, 0xf3, 0xf3, + 0xa3, 0xea, 0x86, 0xee, 0x24, 0xf2, 0xa5, 0xf3, 0xad, 0xf5, 0x8c, 0xef, 0x30, 0xf4, 0x4b, 0xfa, + 0x66, 0xf8, 0x42, 0xf6, 0xc2, 0xf8, 0xde, 0xfa, 0xe4, 0xf8, 0x69, 0xfc, 0xce, 0xfb, 0x9d, 0xfc, + 0x62, 0xfc, 0x83, 0x06, 0x56, 0x04, 0x43, 0x05, 0x68, 0x0c, 0x70, 0x06, 0x93, 0x06, 0x5d, 0x04, + 0xf1, 0x02, 0x42, 0x04, 0xa4, 0x00, 0xd3, 0xff, 0x55, 0x0a, 0x7e, 0x07, 0x08, 0x07, 0x9c, 0x0b, + 0x1e, 0x07, 0x49, 0x09, 0x95, 0xfd, 0x0f, 0x06, 0x84, 0x01, 0x2c, 0x00, 0x36, 0xfe, 0xea, 0xf9, + 0xdf, 0x03, 0xdd, 0xfb, 0xf7, 0xf8, 0xad, 0xf0, 0x09, 0xfc, 0x23, 0xfd, 0xe4, 0xee, 0xfa, 0xfe, + 0xb3, 0xfe, 0x7c, 0xfa, 0xc6, 0xf9, 0x05, 0x04, 0xf9, 0xff, 0xbf, 0xfb, 0xf8, 0xfa, 0xf8, 0xf6, + 0x24, 0xfd, 0xb9, 0xfd, 0x39, 0x06, 0x00, 0x04, 0x50, 0x07, 0xe6, 0x16, 0x5f, 0x0d, 0x08, 0x08, + 0xc8, 0x08, 0x64, 0x07, 0x96, 0xfe, 0x23, 0x00, 0x45, 0x03, 0xcb, 0xfc, 0x31, 0x05, 0xe5, 0xf7, + 0xf1, 0xf9, 0x6b, 0xfb, 0x7c, 0xf5, 0xa2, 0xf7, 0xe2, 0xf9, 0x49, 0xf6, 0xba, 0xfc, 0xe9, 0xfd, + 0xa3, 0xfd, 0xcd, 0xfa, 0xc7, 0xf7, 0x4e, 0x00, 0x55, 0xf8, 0x1d, 0xf8, 0xcf, 0x01, 0x36, 0xf7, + 0xf3, 0x00, 0x71, 0x00, 0xc5, 0xfa, 0xab, 0x01, 0xed, 0x07, 0x55, 0x08, 0xbe, 0xf9, 0xf2, 0x08, + 0x86, 0x0b, 0x73, 0xfb, 0xbf, 0x03, 0xf2, 0x02, 0x3e, 0x0b, 0xbe, 0x0a, 0xfd, 0x04, 0x7e, 0x0b, + 0x1b, 0x0e, 0xa7, 0x0c, 0xbc, 0x02, 0xe0, 0x10, 0xad, 0x05, 0xd7, 0x0a, 0xae, 0x0f, 0x16, 0x0b, + 0x38, 0x06, 0xd9, 0x0c, 0x34, 0x07, 0x2d, 0xfe, 0xf4, 0x06, 0x85, 0x03, 0xb1, 0x04, 0x69, 0xfa, + 0x5b, 0x08, 0x40, 0x0d, 0xfa, 0x04, 0x96, 0x07, 0x03, 0x08, 0xa3, 0x09, 0x51, 0x01, 0xb5, 0xfe, + 0x6f, 0x07, 0x18, 0xfd, 0x81, 0x01, 0x3e, 0x00, 0x37, 0x0e, 0xc3, 0x05, 0x8f, 0x07, 0x56, 0x0d, + 0x4f, 0x01, 0xbf, 0x01, 0x1d, 0xfb, 0xc5, 0xf5, 0x08, 0xf9, 0x6e, 0xfe, 0x84, 0xf7, 0x0b, 0xfd, + 0x66, 0xf9, 0x77, 0xf5, 0x0c, 0xf8, 0xff, 0xf5, 0xba, 0xf2, 0xf3, 0xf5, 0x1b, 0xf6, 0x1e, 0xec, + 0xe5, 0xf7, 0x51, 0xf8, 0x0f, 0xf2, 0xcd, 0xef, 0x15, 0xfa, 0x75, 0xf6, 0x0d, 0xf0, 0x30, 0xfc, + 0xbd, 0xeb, 0xcb, 0xf7, 0xb3, 0xee, 0x52, 0xf1, 0x11, 0xf1, 0x43, 0xf5, 0xa6, 0xf7, 0x27, 0xed, + 0x08, 0xf2, 0x61, 0xf0, 0xb7, 0xf0, 0x4a, 0xf8, 0x89, 0xf0, 0xca, 0xfb, 0xe1, 0x04, 0x90, 0xf9, + 0x64, 0x06, 0x77, 0xfb, 0xbc, 0x06, 0x8d, 0x06, 0x10, 0xfb, 0xf0, 0x05, 0x01, 0x07, 0xe7, 0x00, + 0x06, 0xfe, 0xf0, 0x01, 0xdb, 0x01, 0x03, 0xfd, 0x43, 0xfd, 0xe3, 0xfd, 0x79, 0x03, 0xd7, 0xfe, + 0x5a, 0x06, 0x87, 0x06, 0x9c, 0x0c, 0x46, 0x04, 0xbb, 0x15, 0x8e, 0x07, 0xac, 0x0c, 0x0a, 0x0e, + 0x08, 0x07, 0x59, 0x11, 0xa3, 0x05, 0xcd, 0x15, 0xc3, 0x0c, 0xa4, 0x0e, 0x52, 0x22, 0x87, 0x0d, + 0xe3, 0x16, 0x8d, 0x16, 0xbf, 0x0e, 0x80, 0x06, 0x61, 0x09, 0x8f, 0x0f, 0x7f, 0xf7, 0x8f, 0x0b, + 0x0e, 0xfd, 0xae, 0xfc, 0x10, 0x04, 0x30, 0xf3, 0x93, 0xff, 0xdf, 0xf5, 0xef, 0xf2, 0xda, 0xf6, + 0xea, 0xef, 0x9a, 0xef, 0x96, 0xea, 0x05, 0xef, 0x3c, 0xe4, 0xb8, 0xef, 0x98, 0xea, 0x30, 0xed, + 0xa4, 0xed, 0x9c, 0xf1, 0xd7, 0xeb, 0xa6, 0xeb, 0x31, 0xf6, 0x2d, 0xee, 0xf9, 0xfb, 0xfe, 0xf5, + 0x97, 0xf4, 0x08, 0xf7, 0x46, 0xfa, 0x3f, 0xf5, 0xf5, 0xfc, 0x78, 0xf9, 0xd3, 0x08, 0xe4, 0x06, + 0x8f, 0x0b, 0xfc, 0x09, 0x7a, 0x10, 0x92, 0x0c, 0xb8, 0x07, 0x3e, 0x15, 0xd0, 0x08, 0xe5, 0x16, + 0xac, 0x0e, 0xc8, 0x12, 0xef, 0x15, 0x42, 0x06, 0x9b, 0x0e, 0x8b, 0x01, 0x60, 0x0b, 0x0f, 0x06, + 0x5b, 0x04, 0xd8, 0x08, 0xa8, 0x05, 0x04, 0x12, 0xa7, 0x12, 0xa4, 0x0f, 0x49, 0x10, 0xd0, 0x11, + 0x2f, 0x04, 0xf8, 0x0a, 0xb5, 0x03, 0x89, 0x0c, 0x5f, 0x0a, 0x78, 0x09, 0x96, 0x16, 0xff, 0x10, + 0x77, 0x10, 0xda, 0x11, 0x79, 0x05, 0xeb, 0xfe, 0xbf, 0x03, 0x4b, 0xfb, 0xcd, 0xfd, 0x2b, 0xfe, + 0x78, 0xf7, 0xb5, 0xfa, 0x4c, 0xf7, 0xcf, 0xf1, 0xfc, 0xf6, 0xe3, 0xec, 0xf0, 0xf2, 0x56, 0xe7, + 0x10, 0xef, 0x43, 0xf5, 0x91, 0xea, 0x5b, 0xf3, 0x42, 0xea, 0x7c, 0xf6, 0x63, 0xe7, 0xcd, 0xf2, + 0x96, 0xf5, 0x0c, 0xee, 0x3b, 0xf5, 0xcd, 0xef, 0xc7, 0xf8, 0x11, 0xf5, 0x7f, 0xfc, 0xc0, 0xfc, + 0x88, 0xf1, 0x48, 0xfd, 0x5f, 0xf4, 0x1d, 0xf9, 0x57, 0xfc, 0x34, 0xfb, 0xdc, 0x02, 0x4e, 0x07, + 0xe1, 0xfd, 0x51, 0x04, 0xbb, 0x0c, 0x38, 0xf9, 0xbc, 0x0c, 0xff, 0x05, 0xba, 0x01, 0x1b, 0x0e, + 0xe1, 0x00, 0x86, 0xfb, 0xdd, 0x0f, 0xbd, 0xfe, 0x4b, 0xfd, 0x03, 0x0a, 0xb2, 0xf9, 0x28, 0x03, + 0x9b, 0x02, 0x4a, 0x05, 0x41, 0xff, 0x0e, 0x0e, 0xf3, 0x00, 0x41, 0x0e, 0xd9, 0x07, 0xcc, 0xfd, + 0x77, 0x0f, 0x94, 0x00, 0xae, 0x03, 0x6c, 0x05, 0x14, 0x0d, 0x46, 0x03, 0x68, 0x10, 0x32, 0x11, + 0x2b, 0x0e, 0xce, 0x09, 0xfc, 0x03, 0x1d, 0x0f, 0xbd, 0xf9, 0x6b, 0x03, 0x47, 0x01, 0x38, 0x04, + 0x99, 0xf5, 0x5a, 0x07, 0x26, 0xff, 0x36, 0xf5, 0x40, 0x09, 0xc0, 0xf7, 0x24, 0xf5, 0xd9, 0xfb, + 0x73, 0xf9, 0x14, 0xf1, 0xf8, 0xeb, 0xd5, 0xfb, 0xa2, 0xf7, 0xbd, 0xea, 0x91, 0xef, 0x6e, 0xfc, + 0x83, 0xf1, 0x35, 0xeb, 0x66, 0xfd, 0x2d, 0xee, 0x8d, 0xef, 0x1f, 0xef, 0x22, 0xf9, 0x5a, 0xf7, + 0x4a, 0xf6, 0xd7, 0xf9, 0x89, 0xfa, 0x9c, 0xf4, 0xfa, 0xfb, 0xf6, 0x03, 0x6b, 0xfa, 0xf2, 0x08, + 0x59, 0x09, 0x7c, 0x11, 0xba, 0x0b, 0x14, 0x13, 0x4f, 0x0e, 0xd1, 0x05, 0xb0, 0x13, 0x89, 0x09, + 0x9c, 0x09, 0xd2, 0x16, 0x29, 0x08, 0xbf, 0x0c, 0xe3, 0x11, 0x07, 0x06, 0x0a, 0x03, 0x18, 0x07, + 0x6d, 0xf5, 0xab, 0x03, 0xd0, 0xf7, 0x2c, 0xf8, 0x3b, 0x09, 0x39, 0xfd, 0x13, 0x05, 0xf0, 0x03, + 0x0f, 0x02, 0xcd, 0xf6, 0x9c, 0x00, 0x21, 0xf9, 0x67, 0x05, 0x19, 0xff, 0x38, 0x0c, 0x59, 0x06, + 0xf6, 0x08, 0xc7, 0x10, 0x23, 0x06, 0x55, 0xfd, 0x22, 0x01, 0x6c, 0x01, 0x20, 0xf5, 0xa7, 0x05, + 0xd0, 0xfe, 0x36, 0xfb, 0xf8, 0xff, 0xc7, 0x00, 0x9a, 0xfa, 0xeb, 0xfb, 0xca, 0xf4, 0xb2, 0xf1, + 0xbe, 0xfe, 0x7b, 0xed, 0xef, 0xf8, 0x00, 0x01, 0x34, 0xf1, 0xcb, 0xfd, 0x11, 0xfc, 0xf0, 0xf6, + 0x45, 0x09, 0xe2, 0x01, 0x41, 0xec, 0x50, 0x09, 0x1d, 0x01, 0x3f, 0xf9, 0x0e, 0x05, 0x9d, 0x03, + 0xeb, 0xf6, 0x6e, 0x03, 0x8e, 0xf7, 0x20, 0x00, 0xde, 0xfd, 0xd3, 0xf9, 0x35, 0x01, 0xc0, 0xfd, + 0x3b, 0x08, 0x68, 0x00, 0x16, 0x06, 0x09, 0xfd, 0x1c, 0xff, 0x27, 0x09, 0x78, 0xfc, 0xe9, 0xfc, + 0x39, 0x06, 0xb8, 0xf8, 0x47, 0x08, 0x0c, 0xfd, 0xce, 0xfc, 0xbf, 0x01, 0x57, 0xf7, 0xa9, 0xfd, + 0x69, 0xf8, 0x3d, 0x0b, 0x09, 0xfb, 0x46, 0xfd, 0x18, 0x0b, 0x60, 0x00, 0x00, 0x08, 0x2a, 0x09, + 0x4a, 0x02, 0x4a, 0x03, 0x6a, 0x07, 0xfe, 0xfd, 0xbd, 0x0e, 0xb1, 0x07, 0x07, 0xff, 0x97, 0x12, + 0xf7, 0x0c, 0xb9, 0x08, 0x13, 0x11, 0x85, 0x0f, 0x3f, 0xff, 0x84, 0x09, 0x18, 0x07, 0x0f, 0x00, + 0x0e, 0x03, 0x20, 0x06, 0x2b, 0xff, 0x73, 0xfc, 0xb3, 0x02, 0xbe, 0x05, 0xd8, 0xf3, 0x72, 0xfd, + 0x97, 0x02, 0x85, 0xf3, 0xbe, 0xf1, 0xb6, 0xf8, 0xe2, 0xfe, 0xa9, 0xe8, 0x4a, 0xf7, 0xa8, 0x03, + 0xed, 0xf0, 0x85, 0xf2, 0xb1, 0xfe, 0xc0, 0xea, 0xac, 0xec, 0x9b, 0xf9, 0x3f, 0xee, 0xe9, 0xef, + 0x61, 0xf9, 0xdc, 0xf6, 0x77, 0xf9, 0xa5, 0xf2, 0x16, 0xf7, 0x5c, 0xff, 0x47, 0xef, 0x30, 0xfe, + 0x39, 0x07, 0x03, 0x08, 0x96, 0x04, 0xd1, 0x0b, 0x6d, 0x15, 0xf4, 0x08, 0xcc, 0x09, 0xad, 0x07, + 0x48, 0x0e, 0x6e, 0x02, 0x06, 0x0f, 0xc3, 0x12, 0x53, 0x04, 0xe9, 0x07, 0x5c, 0x0e, 0x31, 0xf5, + 0x5a, 0x01, 0xdc, 0x04, 0x7c, 0xf2, 0xef, 0xf9, 0x93, 0x00, 0xd4, 0xfa, 0x0a, 0xfc, 0x84, 0xfa, + 0xe4, 0xfa, 0xbe, 0x03, 0x5a, 0xef, 0xfb, 0x05, 0xdf, 0xff, 0x0f, 0xf1, 0x8d, 0x05, 0x87, 0x05, + 0x58, 0x03, 0xbe, 0x06, 0xaa, 0x0a, 0x08, 0xfd, 0xf7, 0xf7, 0x3c, 0xfd, 0x54, 0xfb, 0x77, 0xf7, + 0x8f, 0xf5, 0x7b, 0x03, 0xff, 0xf8, 0x81, 0xf6, 0x08, 0x04, 0x3d, 0xf6, 0x4c, 0xf2, 0x0f, 0xfd, + 0x83, 0xfb, 0x18, 0xf4, 0x7f, 0xf8, 0x6e, 0xfd, 0xb8, 0xf4, 0x5a, 0xfc, 0xaf, 0xfb, 0x82, 0xfa, + 0xcb, 0x02, 0x97, 0xfa, 0x40, 0x08, 0x9b, 0x02, 0x04, 0x0c, 0x46, 0x0e, 0x1c, 0x00, 0x81, 0x18, + 0x9e, 0x06, 0x63, 0x10, 0x03, 0x0d, 0xa4, 0x09, 0x2a, 0x08, 0x15, 0x0e, 0x5c, 0x05, 0x56, 0x09, + 0x35, 0x0f, 0x53, 0x03, 0xcf, 0x13, 0x89, 0x0a, 0xe2, 0x0a, 0x8a, 0x0e, 0xe1, 0x08, 0xdd, 0x0a, + 0x0e, 0x0c, 0x8b, 0x08, 0x95, 0x04, 0x67, 0x07, 0x19, 0x03, 0x4a, 0x09, 0x26, 0x05, 0x18, 0x01, + 0x67, 0xff, 0x18, 0xfc, 0xec, 0x00, 0xc0, 0xf9, 0x6e, 0xf9, 0xee, 0x05, 0x85, 0xf2, 0x3d, 0x03, + 0x0a, 0x03, 0xe6, 0xfc, 0x0e, 0x00, 0x16, 0x02, 0x75, 0xfd, 0x7a, 0xfb, 0xc9, 0x07, 0x7e, 0xf7, + 0xa2, 0x01, 0xa4, 0x0b, 0x16, 0x09, 0x48, 0x0b, 0x93, 0x05, 0xa1, 0x00, 0x9d, 0x02, 0xb5, 0x01, + 0x93, 0xf7, 0x93, 0x00, 0x41, 0xfe, 0xe5, 0xf8, 0x71, 0x04, 0x48, 0x00, 0xf8, 0xf4, 0x81, 0xff, + 0xe7, 0xf8, 0xf9, 0xf3, 0x29, 0xfc, 0xa0, 0xf8, 0x9f, 0xf0, 0xdb, 0xf4, 0xd9, 0xf3, 0xad, 0xfa, + 0x34, 0xf8, 0x91, 0xf3, 0x88, 0xf6, 0x5c, 0xf2, 0x00, 0xe7, 0x87, 0xf6, 0xfd, 0xf9, 0x70, 0xe6, + 0x8f, 0xf7, 0x98, 0xfb, 0xf7, 0xee, 0x70, 0xfd, 0x7a, 0xfd, 0xf4, 0xf1, 0x7f, 0xf9, 0xa2, 0xf5, + 0xde, 0xff, 0xed, 0xfc, 0xdf, 0x05, 0x0a, 0x07, 0x8e, 0x0e, 0xab, 0x04, 0xa2, 0x08, 0x31, 0x0d, + 0xa2, 0x03, 0x71, 0x04, 0x8b, 0x0c, 0xc9, 0x15, 0x10, 0x00, 0x82, 0x15, 0x59, 0x0f, 0xc2, 0x03, + 0x9e, 0x0d, 0xfe, 0x05, 0x80, 0xff, 0x97, 0xfd, 0x1a, 0x04, 0x4e, 0x03, 0x14, 0xfd, 0x16, 0x06, + 0xb3, 0x04, 0xaa, 0x04, 0x8f, 0xfe, 0x63, 0x03, 0x8d, 0x02, 0xf0, 0xf8, 0x0a, 0xff, 0x8f, 0x04, + 0x5c, 0x04, 0x1a, 0x05, 0xac, 0x0d, 0xdc, 0xfd, 0xbb, 0x02, 0x92, 0xff, 0x96, 0xfc, 0x29, 0xfe, + 0xfb, 0xf4, 0x1f, 0xfb, 0x86, 0xf8, 0x96, 0xee, 0xab, 0xf8, 0x87, 0xec, 0x56, 0xf1, 0xf4, 0xee, + 0xf8, 0xe8, 0x0a, 0xea, 0x2e, 0xef, 0x7b, 0xe6, 0xd0, 0xeb, 0x31, 0xee, 0x75, 0xec, 0xeb, 0xf0, + 0xfc, 0xf1, 0x60, 0xef, 0xe5, 0xf6, 0xac, 0xf2, 0x28, 0xf3, 0xf0, 0xfd, 0x70, 0xf1, 0x21, 0xf6, + 0xb9, 0xfb, 0x95, 0xf9, 0x78, 0xf8, 0x2f, 0xfe, 0x70, 0xf9, 0x91, 0xf2, 0x14, 0xfb, 0xb9, 0xfd, + 0x81, 0x00, 0xba, 0xff, 0x0d, 0x07, 0xfb, 0x09, 0xda, 0x05, 0x2c, 0x10, 0x3c, 0x0e, 0x91, 0x0e, + 0x2f, 0x0a, 0x4f, 0x0e, 0x61, 0x0d, 0xa4, 0x0a, 0x88, 0x0d, 0x83, 0x0f, 0x47, 0x12, 0xe1, 0x0c, + 0x22, 0x17, 0xb0, 0x13, 0x5b, 0x0b, 0x7b, 0x10, 0x84, 0x10, 0xa6, 0x10, 0x7b, 0x10, 0x4f, 0x12, + 0x98, 0x15, 0x24, 0x17, 0x9c, 0x0e, 0xa0, 0x16, 0x8a, 0x16, 0xd0, 0x01, 0x42, 0x13, 0xe0, 0x0b, + 0x27, 0x08, 0x2b, 0x11, 0x27, 0x0c, 0xf4, 0x0f, 0xaf, 0x0c, 0xa0, 0x0d, 0x46, 0x0b, 0x8b, 0x05, + 0x80, 0xfe, 0x9d, 0x0b, 0xd5, 0xff, 0xcf, 0xf9, 0x6f, 0x0b, 0x01, 0xfb, 0x3f, 0xf7, 0xba, 0x02, + 0xa8, 0xf7, 0x86, 0xf2, 0xf4, 0xf1, 0xff, 0xef, 0xf2, 0xf4, 0x3b, 0xeb, 0xfc, 0xec, 0x41, 0xf5, + 0x3a, 0xec, 0x1c, 0xf3, 0x9c, 0xf6, 0x06, 0xe8, 0x81, 0xea, 0x2e, 0xef, 0x3c, 0xe8, 0xaa, 0xed, + 0xb5, 0xf4, 0x62, 0xf1, 0x62, 0xfb, 0xb8, 0xf0, 0x55, 0xf9, 0xca, 0xf9, 0x01, 0xed, 0x04, 0xfa, + 0xc4, 0xfb, 0x92, 0x01, 0x03, 0x00, 0x7b, 0x0e, 0xd4, 0x08, 0x1e, 0x08, 0x99, 0x18, 0xbc, 0x0a, + 0xa2, 0x13, 0x0d, 0x05, 0xf7, 0x12, 0x73, 0x12, 0xc5, 0x0b, 0xb0, 0x19, 0xd7, 0x0c, 0x9f, 0x11, + 0x30, 0x06, 0x0d, 0x04, 0x03, 0xfe, 0xee, 0xf9, 0xe2, 0xfb, 0x8b, 0xf6, 0xf6, 0xf7, 0x93, 0xf0, + 0x55, 0x00, 0x26, 0xf8, 0xb8, 0xf4, 0xea, 0x01, 0xe8, 0xf1, 0xd3, 0xfb, 0x11, 0xf2, 0x68, 0xf7, + 0xd5, 0xfb, 0xf5, 0xf8, 0x67, 0xfc, 0xbe, 0xf9, 0x35, 0xfa, 0x05, 0xf4, 0x94, 0xff, 0xde, 0xf7, + 0xbe, 0xf4, 0x51, 0x03, 0x5f, 0xf5, 0xb9, 0xfc, 0x3d, 0xfe, 0x06, 0xf3, 0xff, 0x03, 0xdc, 0xf2, + 0x23, 0xfc, 0xed, 0xfc, 0x45, 0xf4, 0xf0, 0xf8, 0xef, 0xfa, 0x44, 0xf5, 0x70, 0xf7, 0x3c, 0xff, + 0x11, 0xf4, 0x6a, 0x02, 0x4c, 0xff, 0x7f, 0x03, 0xd7, 0x06, 0x95, 0x02, 0xf0, 0x06, 0x8d, 0x05, + 0x48, 0x04, 0x87, 0x03, 0x17, 0x0c, 0x61, 0x08, 0xe3, 0x09, 0x8d, 0x0c, 0xd8, 0x03, 0xb3, 0x03, + 0x15, 0x04, 0x40, 0x00, 0x10, 0x07, 0xd7, 0xff, 0x85, 0x05, 0x2d, 0x02, 0xef, 0x00, 0xcc, 0x04, + 0x69, 0xfe, 0x2e, 0xfc, 0x33, 0xfb, 0x8b, 0xfc, 0xc1, 0xfa, 0x01, 0xff, 0xbf, 0xff, 0x6b, 0x02, + 0xfa, 0xfd, 0x9b, 0x04, 0x84, 0xfd, 0x68, 0xfd, 0x1e, 0xf4, 0xcd, 0xfb, 0x4e, 0xf7, 0xd7, 0xf5, + 0xcd, 0x04, 0xce, 0xf5, 0x83, 0x06, 0xfe, 0x04, 0x6c, 0x05, 0x05, 0x10, 0xda, 0x01, 0x3e, 0x08, + 0x58, 0x0d, 0x46, 0x08, 0x7f, 0x16, 0xa1, 0x0f, 0x60, 0x0e, 0x6f, 0x18, 0x6f, 0x10, 0xab, 0x12, + 0xa3, 0x11, 0x00, 0x08, 0x4a, 0x0b, 0xa4, 0x0a, 0x32, 0x0b, 0x25, 0x0a, 0x0a, 0x0b, 0x01, 0x06, + 0x5d, 0x00, 0x67, 0x09, 0xcc, 0xfc, 0xc3, 0x01, 0xb8, 0x00, 0xd0, 0xf5, 0x79, 0x03, 0xfc, 0xf8, + 0x31, 0xff, 0x0a, 0xfc, 0xc6, 0xf9, 0x66, 0xf9, 0x8c, 0xf2, 0x40, 0xf1, 0x3c, 0xea, 0x7e, 0xf4, + 0xef, 0xe9, 0x12, 0xf1, 0xbf, 0xfb, 0xb8, 0xef, 0xc8, 0xf9, 0xa7, 0xf4, 0x88, 0xf5, 0x0d, 0xf7, + 0xcb, 0xf3, 0x58, 0xfa, 0x59, 0xf6, 0xb3, 0x01, 0x61, 0x03, 0xb3, 0x04, 0x6b, 0x08, 0x46, 0x07, + 0x0d, 0x09, 0x95, 0x06, 0x50, 0x07, 0xb0, 0x0a, 0x88, 0x0b, 0xcc, 0x0b, 0xc1, 0x11, 0x83, 0x10, + 0x4b, 0x10, 0x30, 0x10, 0xfb, 0x06, 0x9d, 0x0e, 0xc9, 0x08, 0xaf, 0x08, 0xb7, 0x04, 0xb0, 0x04, + 0xb7, 0x06, 0x07, 0x01, 0x80, 0x08, 0xaf, 0x05, 0x7e, 0x03, 0xed, 0x03, 0xae, 0x03, 0x69, 0xfd, + 0xcf, 0x05, 0x1f, 0x00, 0xef, 0x03, 0xa4, 0x05, 0xe3, 0xff, 0x88, 0x02, 0x6b, 0x03, 0x6d, 0xfa, + 0xee, 0xfe, 0x59, 0xfc, 0x56, 0xf7, 0xc9, 0xf8, 0xb4, 0xf4, 0x1d, 0xef, 0xa8, 0xf1, 0x57, 0xed, + 0xd9, 0xea, 0x6a, 0xea, 0x57, 0xe3, 0xb4, 0xe7, 0xb3, 0xe4, 0xaf, 0xe1, 0x30, 0xe5, 0x39, 0xe4, + 0x51, 0xe9, 0x15, 0xe6, 0x89, 0xee, 0x88, 0xf1, 0x0a, 0xf4, 0x15, 0xf3, 0x93, 0xf4, 0x6a, 0xf6, + 0x45, 0xef, 0x02, 0xf7, 0xc8, 0xf5, 0x5c, 0xf5, 0x1c, 0xfe, 0x9d, 0xf9, 0x53, 0xfb, 0xea, 0xfc, + 0x8b, 0xfa, 0x57, 0xfd, 0xb7, 0xfd, 0x09, 0x03, 0xc4, 0x03, 0x8e, 0x09, 0xa8, 0x0a, 0x95, 0x0c, + 0x00, 0x11, 0xa5, 0x09, 0x5b, 0x0a, 0x98, 0x0b, 0x89, 0x0a, 0xc9, 0x0a, 0xfa, 0x12, 0x5b, 0x10, + 0x3f, 0x12, 0x74, 0x16, 0xe3, 0x0e, 0xdb, 0x16, 0x24, 0x0c, 0x5a, 0x0a, 0xac, 0x09, 0x4b, 0x06, + 0x38, 0x0a, 0xec, 0x08, 0xbf, 0x0e, 0xcc, 0x09, 0x4b, 0x10, 0x12, 0x0c, 0xef, 0x07, 0xc6, 0x06, + 0x88, 0xfe, 0x8a, 0x08, 0xd1, 0x02, 0x43, 0x04, 0x91, 0x08, 0xa4, 0x08, 0x4c, 0x0a, 0x3b, 0x07, + 0x99, 0x0a, 0x7f, 0x06, 0xb6, 0x0a, 0x20, 0x02, 0xdb, 0x04, 0x75, 0x06, 0x3b, 0x06, 0x0d, 0x01, + 0x46, 0x02, 0xf6, 0xf8, 0xd0, 0xf5, 0x3d, 0xf8, 0x5e, 0xf0, 0xbb, 0xf1, 0xb9, 0xf4, 0x44, 0xf0, + 0x7f, 0xf7, 0xc7, 0xf5, 0xbd, 0xec, 0xfc, 0x00, 0xaa, 0xed, 0x7b, 0xf5, 0x11, 0xf8, 0x18, 0xec, + 0xf9, 0xf5, 0xf8, 0xf3, 0xfd, 0xf6, 0x79, 0xfc, 0xa7, 0xff, 0x8c, 0xfb, 0x60, 0x00, 0xea, 0xfa, + 0x88, 0xfc, 0xed, 0x01, 0x39, 0x03, 0x1f, 0x01, 0x5e, 0x06, 0xf8, 0x0d, 0x42, 0x0c, 0x7d, 0x0b, + 0x9f, 0x0c, 0x5a, 0x0e, 0x37, 0x0a, 0xea, 0x0d, 0xd0, 0x0c, 0x6e, 0x0b, 0xdf, 0x11, 0xdf, 0x0e, + 0x91, 0x0d, 0x52, 0x0a, 0x5b, 0x05, 0x3a, 0x05, 0xdd, 0xfc, 0xa7, 0xf7, 0x64, 0x01, 0x63, 0xf3, + 0x3e, 0xf6, 0x3f, 0xf9, 0x27, 0xfa, 0xeb, 0xf7, 0x31, 0x03, 0xc2, 0xff, 0x72, 0xfc, 0xdf, 0x01, + 0xc5, 0xfa, 0xba, 0xfd, 0xc4, 0xff, 0x20, 0xf7, 0x19, 0x00, 0xb3, 0xfc, 0x25, 0xfa, 0xf8, 0x00, + 0x97, 0xfa, 0x71, 0xff, 0x43, 0x04, 0xa5, 0xfc, 0xb2, 0xfe, 0xcc, 0xff, 0x59, 0xfa, 0x22, 0xfd, + 0x26, 0xfb, 0x64, 0xfb, 0xc7, 0xfe, 0xb2, 0xf4, 0xb1, 0xfc, 0x01, 0xf5, 0x4a, 0xf5, 0xa2, 0xf8, + 0x8b, 0xf1, 0x9a, 0xf9, 0x0a, 0xfa, 0xc0, 0xfc, 0xd4, 0xfd, 0x1c, 0xfe, 0xc1, 0x01, 0x95, 0xff, + 0x70, 0xfd, 0xfc, 0xf8, 0xb7, 0xfa, 0x15, 0xfe, 0xb8, 0xfd, 0x9c, 0x02, 0xcf, 0xfd, 0x51, 0xfc, + 0xae, 0x00, 0x44, 0xf3, 0xe6, 0xf7, 0x4a, 0xfa, 0x2d, 0xf5, 0x96, 0xf9, 0x2f, 0xfd, 0xa1, 0xfa, + 0x95, 0xfe, 0xd4, 0xfd, 0x5e, 0xf9, 0x86, 0x01, 0x08, 0xfb, 0xe0, 0xfd, 0x01, 0x04, 0x6a, 0xfe, + 0x38, 0x05, 0xe9, 0x09, 0x61, 0x06, 0xea, 0x08, 0x57, 0x09, 0x31, 0xfe, 0x0c, 0x03, 0xb7, 0xfd, + 0xf7, 0xfb, 0x6e, 0x00, 0x75, 0xfd, 0xf9, 0x06, 0xc5, 0x0b, 0x5e, 0x09, 0x2a, 0x0e, 0x66, 0x09, + 0x71, 0x0b, 0x05, 0x0d, 0x65, 0x0c, 0xf7, 0x0d, 0xa0, 0x0c, 0x04, 0x12, 0xed, 0x15, 0xc9, 0x15, + 0xf1, 0x15, 0xd4, 0x14, 0xe0, 0x11, 0x1d, 0x11, 0x40, 0x10, 0xa7, 0x0e, 0xfb, 0x0c, 0xd6, 0x0a, + 0x46, 0x06, 0x30, 0x05, 0x34, 0x01, 0x64, 0xfc, 0x89, 0xf8, 0x53, 0xf6, 0xfb, 0xf1, 0x83, 0xf0, + 0x2d, 0xf1, 0x63, 0xee, 0xb4, 0xee, 0xad, 0xec, 0x18, 0xeb, 0x3d, 0xea, 0x57, 0xea, 0x9f, 0xe5, + 0xfe, 0xe7, 0x2b, 0xe5, 0xee, 0xe8, 0xd4, 0xed, 0xb4, 0xf1, 0x52, 0xf6, 0x52, 0xf8, 0x4b, 0xfb, + 0x9f, 0xfb, 0xec, 0xfc, 0x77, 0xff, 0xa7, 0x02, 0xfd, 0x02, 0x82, 0x05, 0x5f, 0x09, 0xce, 0x0a, + 0xfe, 0x0c, 0xd2, 0x0a, 0xd8, 0x0e, 0x4a, 0x0d, 0x15, 0x0e, 0x3e, 0x12, 0xb8, 0x10, 0xb2, 0x15, + 0xed, 0x12, 0x44, 0x15, 0x7c, 0x13, 0x64, 0x12, 0x12, 0x12, 0x9f, 0x0c, 0xe0, 0x0d, 0xe5, 0x09, + 0xe0, 0x07, 0x11, 0x04, 0x11, 0x05, 0x4c, 0x02, 0x2d, 0x07, 0xf7, 0x0b, 0x28, 0x07, 0xd4, 0x09, + 0x37, 0x08, 0x41, 0x05, 0xdc, 0x00, 0xa2, 0x01, 0x09, 0xff, 0xa2, 0xfd, 0xbb, 0xfd, 0x0d, 0xfc, + 0xfd, 0xfb, 0x0f, 0xfb, 0x85, 0xfa, 0x1c, 0xf9, 0x9a, 0xf3, 0xe1, 0xf2, 0x7a, 0xf0, 0x45, 0xed, + 0x5a, 0xeb, 0xbb, 0xea, 0x2f, 0xe8, 0x26, 0xe6, 0x87, 0xe7, 0x91, 0xe4, 0x85, 0xe6, 0xb1, 0xe6, + 0x7a, 0xe7, 0x4e, 0xea, 0xa1, 0xee, 0x6f, 0xf2, 0x1b, 0xf4, 0x6a, 0xf8, 0xea, 0xf9, 0x03, 0xfa, + 0xed, 0xf9, 0xcd, 0xf8, 0x37, 0xf6, 0xae, 0xf7, 0x7e, 0xfb, 0xb2, 0xfe, 0x18, 0x00, 0x14, 0x01, + 0x36, 0x00, 0x30, 0xfc, 0xa3, 0xfd, 0x09, 0xfc, 0x70, 0xfe, 0xa9, 0x02, 0x82, 0x05, 0x05, 0x09, + 0x66, 0x0b, 0xbb, 0x0a, 0x1e, 0x0c, 0xef, 0x0a, 0x61, 0x06, 0x66, 0x07, 0x29, 0x07, 0x9d, 0x06, + 0xc1, 0x09, 0x3e, 0x0b, 0xc1, 0x0c, 0x9a, 0x0e, 0xd5, 0x0b, 0x63, 0x0a, 0x34, 0x06, 0x5d, 0x01, + 0x8a, 0x01, 0xf2, 0xfb, 0x4a, 0xfc, 0xa9, 0xfd, 0xeb, 0xfe, 0x45, 0x02, 0x86, 0x00, 0xb6, 0x00, + 0xa7, 0x00, 0x52, 0xfd, 0xd5, 0xfc, 0x8c, 0xfb, 0x8b, 0xfa, 0x25, 0xfe, 0x1d, 0x00, 0xb9, 0x02, + 0xee, 0x05, 0x01, 0x07, 0xc4, 0x07, 0x40, 0x0a, 0x68, 0x08, 0x3a, 0x08, 0xbf, 0x0a, 0xfa, 0x08, + 0x35, 0x08, 0x35, 0x07, 0x70, 0x03, 0x10, 0x02, 0x5c, 0x00, 0xc1, 0xfe, 0x74, 0xfe, 0xe0, 0xfc, + 0x5f, 0xfa, 0xe1, 0xfb, 0xb2, 0xfb, 0x0b, 0xfc, 0xbc, 0xfc, 0x98, 0xfc, 0x33, 0xfe, 0xe4, 0xfd, + 0x81, 0xfd, 0x46, 0xfc, 0x96, 0xfb, 0x92, 0xfc, 0x3c, 0xfe, 0x7c, 0x01, 0xd9, 0x03, 0x43, 0x04, + 0x62, 0x04, 0x1d, 0x05, 0x8c, 0x03, 0x69, 0x02, 0xd3, 0x03, 0x8f, 0x05, 0x8f, 0x05, 0xaf, 0x06, + 0xca, 0x07, 0xd0, 0x06, 0xf2, 0x06, 0x7c, 0x07, 0x93, 0x05, 0x19, 0x05, 0x6a, 0x04, 0x7c, 0x04, + 0x85, 0x02, 0x12, 0x02, 0xfc, 0x02, 0xc2, 0x00, 0x10, 0xfe, 0x96, 0xfb, 0x13, 0xfb, 0x09, 0xf8, + 0xb1, 0xf6, 0x67, 0xf5, 0xd4, 0xf2, 0xa4, 0xf4, 0x21, 0xf8, 0xb0, 0xfc, 0x78, 0x00, 0xea, 0x03, + 0x09, 0x06, 0x59, 0x06, 0xea, 0x05, 0x47, 0x03, 0x7f, 0x01, 0xbb, 0x01, 0x00, 0x02, 0x94, 0x02, + 0xf6, 0x03, 0x06, 0x06, 0xde, 0x06, 0x28, 0x09, 0x80, 0x08, 0xf0, 0x07, 0xbc, 0x07, 0xd0, 0x05, + 0x08, 0x05, 0x79, 0x03, 0x2d, 0x02, 0x8a, 0x00, 0x30, 0xff, 0x64, 0xfc, 0x4f, 0xf9, 0xb1, 0xf6, + 0xad, 0xf5, 0xa1, 0xf5, 0x89, 0xf7, 0x4a, 0xf9, 0xf4, 0xf8, 0xe0, 0xf9, 0x63, 0xfc, 0x0f, 0xfd, + 0xc5, 0xfa, 0x79, 0xf9, 0xaf, 0xf6, 0xd2, 0xf4, 0xc1, 0xf6, 0xee, 0xf8, 0x62, 0xfc, 0x6c, 0xfc, + 0xcf, 0xfb, 0xb8, 0xfa, 0x6c, 0xf8, 0xf6, 0xf5, 0x7b, 0xf4, 0xf6, 0xf4, 0xf5, 0xf5, 0xee, 0xf7, + 0x79, 0xfa, 0x45, 0xfd, 0xfa, 0xfe, 0xf2, 0xfe, 0xe6, 0xff, 0x38, 0x00, 0x0f, 0x00, 0x89, 0x01, + 0xfa, 0x01, 0xeb, 0x03, 0x2d, 0x06, 0x4d, 0x07, 0xae, 0x08, 0x1d, 0x07, 0x0b, 0x06, 0xb4, 0x03, + 0x5a, 0x01, 0xd8, 0xff, 0x62, 0xfe, 0xad, 0xfe, 0xe0, 0x00, 0xc8, 0x02, 0x2c, 0x06, 0x10, 0x08, + 0x88, 0x09, 0xd1, 0x0b, 0x46, 0x0b, 0xed, 0x0a, 0xfb, 0x09, 0x8f, 0x0a, 0xc1, 0x0b, 0x63, 0x0b, + 0xda, 0x0c, 0x15, 0x0e, 0xed, 0x0e, 0x62, 0x0f, 0x15, 0x0e, 0x89, 0x0d, 0xf6, 0x0a, 0xa8, 0x08, + 0x39, 0x06, 0x7e, 0x02, 0xa5, 0xfe, 0x64, 0xfb, 0x1d, 0xf8, 0x95, 0xf4, 0xd7, 0xf3, 0xf0, 0xf0, + 0xf7, 0xee, 0x8a, 0xec, 0x2d, 0xeb, 0x1a, 0xeb, 0xf4, 0xe9, 0x82, 0xea, 0x1c, 0xea, 0x86, 0xea, + 0x8c, 0xe8, 0x47, 0xe6, 0xed, 0xe5, 0xd7, 0xe6, 0x7a, 0xea, 0x63, 0xef, 0xd1, 0xf3, 0x6f, 0xf8, + 0xa4, 0xfc, 0x69, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xf4, 0x02, 0xd0, 0x02, 0xff, 0x03, 0xd9, 0x04, + 0xd6, 0x04, 0xda, 0x07, 0x13, 0x0b, 0x24, 0x0c, 0x34, 0x0f, 0x60, 0x11, 0x4d, 0x11, 0x70, 0x13, + 0xdc, 0x14, 0x4e, 0x16, 0xf3, 0x19, 0x07, 0x1c, 0x53, 0x1c, 0x66, 0x1e, 0x00, 0x1d, 0x06, 0x1c, + 0x1d, 0x19, 0x0d, 0x13, 0xc4, 0x0e, 0x27, 0x0c, 0x01, 0x0c, 0x6d, 0x0e, 0x84, 0x0f, 0xcb, 0x11, + 0xd1, 0x12, 0xee, 0x11, 0x50, 0x0f, 0xca, 0x0b, 0xa5, 0x06, 0x20, 0x03, 0xaa, 0x02, 0x56, 0xff, + 0x27, 0xff, 0xc2, 0xfe, 0x06, 0xfe, 0x8f, 0xfd, 0x21, 0xfc, 0x54, 0xfa, 0x45, 0xf9, 0xa0, 0xf6, + 0x0c, 0xf6, 0x73, 0xf5, 0xa8, 0xf2, 0x27, 0xf2, 0x46, 0xef, 0x9f, 0xec, 0x30, 0xec, 0x8a, 0xea, + 0xb6, 0xe9, 0xf6, 0xe9, 0x4c, 0xeb, 0x61, 0xea, 0x83, 0xea, 0xc9, 0xed, 0x46, 0xf1, 0x8a, 0xf3, + 0xdb, 0xf3, 0x5e, 0xf1, 0x42, 0xee, 0x14, 0xeb, 0x6e, 0xec, 0x7b, 0xef, 0xeb, 0xf3, 0xa3, 0xf4, + 0x3b, 0xf6, 0x50, 0xf5, 0x2b, 0xf4, 0x4f, 0xf5, 0xf3, 0xf7, 0x04, 0xf9, 0x62, 0xf9, 0xd4, 0xfa, + 0xa2, 0xfe, 0x6f, 0x01, 0x2b, 0x04, 0x09, 0x04, 0xbf, 0x01, 0xcc, 0x01, 0xa7, 0x00, 0xc9, 0x00, + 0xa9, 0xfe, 0x11, 0xfd, 0xb4, 0x01, 0xb4, 0x02, 0x90, 0x04, 0xa8, 0x05, 0xad, 0x02, 0xb3, 0x02, + 0x01, 0x01, 0xf1, 0xfe, 0x3d, 0x00, 0xba, 0xff, 0xce, 0xfc, 0xba, 0xfd, 0xe6, 0xff, 0xf9, 0x00, + 0xe8, 0x03, 0x3b, 0x04, 0x10, 0x07, 0xd6, 0x06, 0x25, 0x03, 0x37, 0x03, 0x1c, 0x06, 0x08, 0x0b, + 0xd1, 0x0d, 0xb2, 0x0f, 0x4a, 0x15, 0xeb, 0x18, 0xb8, 0x1d, 0xd3, 0x1d, 0x49, 0x1b, 0x31, 0x1b, + 0xf3, 0x18, 0x29, 0x17, 0xc9, 0x13, 0x25, 0x10, 0x9a, 0x0d, 0x58, 0x0c, 0x5d, 0x09, 0xea, 0x09, + 0x32, 0x09, 0xf7, 0x05, 0xe4, 0x03, 0xa6, 0x00, 0xd8, 0xfd, 0x60, 0xfb, 0xf9, 0xfa, 0x8b, 0xfc, + 0x2f, 0xfa, 0x16, 0xf6, 0xb2, 0xf4, 0x77, 0xf2, 0xa1, 0xef, 0x3f, 0xef, 0x7b, 0xef, 0x3b, 0xf2, + 0x05, 0xf4, 0x8c, 0xf3, 0x74, 0xf2, 0x10, 0xef, 0x89, 0xef, 0x66, 0xf1, 0xdc, 0xee, 0x39, 0xee, + 0x18, 0xee, 0xe4, 0xed, 0xee, 0xf1, 0x47, 0xf6, 0x92, 0xfa, 0xdb, 0xfa, 0x8b, 0xf8, 0xf6, 0xfb, + 0xb9, 0xfb, 0xaf, 0xfb, 0x7d, 0xfd, 0x6f, 0xfe, 0x14, 0xff, 0x8f, 0xfe, 0x0c, 0x00, 0x91, 0xff, + 0x60, 0xfe, 0x31, 0xff, 0x2b, 0xf9, 0x96, 0xf6, 0x68, 0xf7, 0x2a, 0xfb, 0x01, 0x01, 0x69, 0x01, + 0x5a, 0x04, 0xca, 0x0c, 0xc6, 0x0f, 0xee, 0x0f, 0xc8, 0x0e, 0x51, 0x0c, 0x02, 0x0a, 0x17, 0x0e, + 0x18, 0x13, 0x52, 0x17, 0x3d, 0x18, 0x51, 0x18, 0x3d, 0x20, 0xcc, 0x20, 0xee, 0x1d, 0x49, 0x1a, + 0x61, 0x18, 0xfe, 0x16, 0x99, 0x15, 0x51, 0x13, 0x25, 0x10, 0x64, 0x0e, 0xcf, 0x0d, 0x6d, 0x06, + 0xca, 0x02, 0x31, 0xff, 0x36, 0xfd, 0x52, 0xfa, 0xce, 0xf4, 0x8e, 0xf2, 0x31, 0xf6, 0x0d, 0xf7, + 0x99, 0xf7, 0x16, 0xf9, 0xeb, 0xf7, 0x41, 0xf6, 0x14, 0xf6, 0x18, 0xf8, 0x6a, 0xf9, 0x74, 0xf9, + 0x6c, 0xfc, 0x5a, 0xfe, 0x79, 0xf8, 0xca, 0xf4, 0x98, 0xf3, 0x5d, 0xf1, 0x54, 0xef, 0x6c, 0xec, + 0x48, 0xe9, 0x7f, 0xec, 0x58, 0xee, 0x58, 0xee, 0xa4, 0xec, 0x2a, 0xeb, 0x1d, 0xec, 0xc7, 0xee, + 0xd5, 0xed, 0xc6, 0xed, 0x7f, 0xf2, 0xfe, 0xf5, 0x57, 0xf9, 0x21, 0xf9, 0x0d, 0xfa, 0xf6, 0xfa, + 0x1c, 0xfc, 0x44, 0xf9, 0xf2, 0xfc, 0x07, 0xfb, 0xc2, 0xf6, 0x63, 0xfb, 0x22, 0xfe, 0x7f, 0xfe, + 0xc8, 0x02, 0xde, 0x02, 0xd6, 0x06, 0x0f, 0x09, 0xd7, 0x07, 0x93, 0x08, 0x84, 0x07, 0xa6, 0x08, + 0xbe, 0x09, 0xaf, 0x09, 0x41, 0x0b, 0xd2, 0x0c, 0x2d, 0x11, 0xf3, 0x0e, 0xe8, 0x0e, 0x43, 0x0e, + 0x8c, 0x0d, 0xfe, 0x0d, 0x55, 0x09, 0x4c, 0x0b, 0xe8, 0x04, 0x35, 0x02, 0xe0, 0x02, 0x25, 0xff, + 0x8e, 0xfd, 0xf5, 0xf9, 0xb5, 0xf9, 0x90, 0xf7, 0x5e, 0xf4, 0xb0, 0xf1, 0x2a, 0xf3, 0xe9, 0xf1, + 0xc4, 0xf1, 0x50, 0xf1, 0x30, 0xed, 0x3e, 0xea, 0x0a, 0xe9, 0xee, 0xe4, 0xb3, 0xe7, 0xa1, 0xec, + 0x38, 0xf0, 0x42, 0xf9, 0xe8, 0xf9, 0xf3, 0xf9, 0xa3, 0x00, 0xc4, 0xff, 0x7c, 0x02, 0xba, 0x00, + 0x84, 0xfd, 0xa4, 0xfe, 0xa7, 0xfd, 0x11, 0x00, 0x45, 0x06, 0xda, 0x06, 0x46, 0x09, 0x43, 0x0d, + 0x28, 0x0d, 0x78, 0x0c, 0x83, 0x0c, 0x82, 0x0f, 0xe8, 0x10, 0xd6, 0x0f, 0xac, 0x10, 0xc5, 0x11, + 0xcc, 0x11, 0xb5, 0x10, 0x92, 0x0e, 0xb1, 0x0b, 0x40, 0x07, 0x74, 0x07, 0xa5, 0x06, 0x5e, 0x08, + 0xf7, 0x05, 0xb0, 0x0c, 0x9d, 0x0f, 0x83, 0x0f, 0x84, 0x0d, 0xce, 0x0b, 0x79, 0x0a, 0x6f, 0x0b, + 0x8c, 0x0f, 0x44, 0x11, 0x28, 0x11, 0x48, 0x10, 0x81, 0x15, 0x9b, 0x13, 0xc4, 0x13, 0x5e, 0x0f, + 0xe0, 0x0d, 0x5e, 0x0e, 0xe4, 0x07, 0x87, 0x05, 0x7a, 0x02, 0x79, 0x02, 0xc7, 0xfb, 0xb0, 0xfb, + 0x67, 0xf7, 0x3d, 0xf6, 0xea, 0xf6, 0xa5, 0xf5, 0x12, 0xf3, 0x5a, 0xee, 0x86, 0xf4, 0xcc, 0xf3, + 0x5f, 0xf6, 0xf4, 0xf8, 0x14, 0xf6, 0x05, 0xf5, 0x48, 0xf3, 0x0d, 0xf4, 0x9a, 0xf6, 0x0a, 0xf6, + 0xa2, 0xfa, 0xc0, 0xfb, 0x51, 0xfa, 0xcc, 0xf5, 0x26, 0xf5, 0xdb, 0xf4, 0x4a, 0xf5, 0x4f, 0xee, + 0x17, 0xec, 0xa7, 0xf0, 0xe4, 0xec, 0x28, 0xf5, 0xe2, 0xef, 0xca, 0xf5, 0x48, 0xf7, 0xe1, 0xf7, + 0x00, 0xf8, 0x73, 0xf4, 0x93, 0xf6, 0x59, 0xf3, 0x42, 0xfb, 0x6b, 0xf3, 0x24, 0xfe, 0x22, 0xfb, + 0x5c, 0xff, 0x39, 0x07, 0x77, 0x05, 0x3a, 0x09, 0x24, 0x03, 0x7d, 0x06, 0x7b, 0x03, 0xc1, 0x03, + 0x1c, 0x04, 0x00, 0x08, 0x26, 0x0d, 0x0e, 0x0a, 0x7f, 0x0a, 0x83, 0x06, 0x5e, 0x06, 0xaf, 0x08, + 0xc7, 0x07, 0x9f, 0x0d, 0x32, 0x0d, 0x0c, 0x10, 0xf8, 0x15, 0x48, 0x16, 0x53, 0x16, 0xcd, 0x17, + 0x4f, 0x1a, 0x5f, 0x18, 0x7e, 0x14, 0xc7, 0x0d, 0x2f, 0x0f, 0x2b, 0x0e, 0x48, 0x0c, 0xc1, 0x0f, + 0x53, 0x07, 0x6a, 0x02, 0xe1, 0x02, 0x4e, 0xfe, 0xbc, 0xf4, 0x9d, 0xf1, 0xfa, 0xef, 0x8e, 0xeb, + 0xb8, 0xeb, 0x0d, 0xe4, 0x61, 0xe9, 0x3b, 0xe3, 0x1c, 0xe0, 0x46, 0xe1, 0x8a, 0xdf, 0x06, 0xe4, + 0x0b, 0xe6, 0xcf, 0xed, 0x8b, 0xe7, 0xa3, 0xe9, 0x19, 0xe9, 0x81, 0xe9, 0x0f, 0xea, 0x69, 0xea, + 0xab, 0xe7, 0x4a, 0xe8, 0xea, 0xe9, 0x3d, 0xeb, 0x09, 0xf0, 0xdc, 0xf0, 0xc2, 0xf6, 0x0f, 0xf6, + 0xb2, 0xfe, 0xa7, 0xfc, 0x79, 0xfe, 0xac, 0xfc, 0xeb, 0xf5, 0x8b, 0xfa, 0xa8, 0xf5, 0xfc, 0xf8, + 0x37, 0x03, 0xaa, 0x08, 0x19, 0x0a, 0xe6, 0x05, 0x93, 0x03, 0x90, 0x08, 0x13, 0xfe, 0xab, 0xfc, + 0x6c, 0x03, 0x15, 0x0b, 0xb3, 0x0f, 0xfc, 0x11, 0x2e, 0x14, 0x43, 0x14, 0x27, 0x11, 0x34, 0x1a, + 0xe4, 0x1d, 0xf1, 0x1d, 0x10, 0x1a, 0x3d, 0x21, 0x56, 0x20, 0x45, 0x21, 0xa6, 0x22, 0xe3, 0x21, + 0x1c, 0x20, 0xf0, 0x1c, 0xf3, 0x17, 0x98, 0x16, 0xa0, 0x18, 0xf4, 0x15, 0xc3, 0x12, 0xb8, 0x14, + 0xe4, 0x0b, 0x49, 0x09, 0x62, 0x08, 0xc0, 0xff, 0x51, 0x01, 0x85, 0xfd, 0x37, 0xff, 0x8f, 0xfe, + 0x28, 0xfd, 0x0f, 0xfb, 0x28, 0xfc, 0x4e, 0xfe, 0xaf, 0xfe, 0x1a, 0xfd, 0x69, 0xf7, 0x86, 0xf7, + 0xd3, 0xfd, 0x23, 0xff, 0x8c, 0xff, 0xf9, 0xfb, 0xf7, 0xf9, 0xb1, 0xf8, 0xb0, 0xf6, 0xa2, 0xf1, + 0xe1, 0xed, 0x92, 0xec, 0xad, 0xe9, 0x22, 0xea, 0x0e, 0xea, 0x1c, 0xeb, 0x57, 0xed, 0x89, 0xf3, + 0x23, 0xf4, 0x74, 0xf3, 0x64, 0xf9, 0x5f, 0xfb, 0x80, 0xf8, 0x99, 0xf8, 0x36, 0xf8, 0x05, 0xfe, + 0xfb, 0x02, 0xca, 0x08, 0x86, 0x09, 0x2f, 0x0d, 0x56, 0x0d, 0x0c, 0x0e, 0xda, 0x0b, 0x49, 0x03, + 0x99, 0x03, 0xee, 0x01, 0x86, 0x05, 0xe3, 0x07, 0xdc, 0x0a, 0xdf, 0x07, 0x2b, 0x0a, 0x38, 0x08, + 0x89, 0x09, 0xa1, 0x0c, 0xca, 0x08, 0xa7, 0x09, 0x1b, 0x0b, 0xc5, 0x0b, 0x51, 0x0b, 0x8d, 0x12, + 0x44, 0x10, 0x06, 0x10, 0x18, 0x0f, 0xfb, 0x0b, 0x5d, 0x11, 0x98, 0x0f, 0x36, 0x0d, 0xc2, 0x06, + 0x1c, 0x02, 0x88, 0x00, 0xa6, 0x02, 0x63, 0xfa, 0x5e, 0xf6, 0x7c, 0xf7, 0x87, 0xf0, 0x20, 0xf7, + 0x10, 0xf4, 0x09, 0xe9, 0x8d, 0xeb, 0x4e, 0xea, 0x51, 0xe8, 0xed, 0xe4, 0x83, 0xe2, 0x58, 0xe1, + 0x84, 0xe2, 0x04, 0xe6, 0x9d, 0xe7, 0x47, 0xea, 0x32, 0xec, 0x4f, 0xee, 0xa2, 0xee, 0x27, 0xef, + 0xf1, 0xf1, 0x77, 0xf1, 0x80, 0xf2, 0x0f, 0xf5, 0xc3, 0xf4, 0xce, 0xf8, 0x6f, 0xfa, 0x82, 0xff, + 0x20, 0x00, 0xbe, 0xfc, 0xa3, 0x01, 0x45, 0x00, 0xed, 0x01, 0x1b, 0x01, 0x19, 0xfb, 0x1f, 0x01, + 0x37, 0x03, 0x05, 0x06, 0xd5, 0x03, 0xb7, 0x02, 0xc7, 0xff, 0xca, 0xfe, 0xf3, 0xff, 0x17, 0xfa, + 0xa5, 0xfc, 0x8c, 0xfe, 0x0e, 0x01, 0x75, 0x06, 0x8f, 0x08, 0x80, 0x0b, 0x00, 0x09, 0x13, 0x0b, + 0x80, 0x0c, 0x37, 0x0d, 0x53, 0x0d, 0x66, 0x0d, 0xf4, 0x0f, 0xc7, 0x0e, 0x5d, 0x10, 0xd5, 0x12, + 0x84, 0x13, 0xbd, 0x12, 0x1c, 0x0d, 0x73, 0x0a, 0x38, 0x0b, 0xb4, 0x09, 0x8a, 0x07, 0xf3, 0x02, + 0xd3, 0xfc, 0xd5, 0xfa, 0x7c, 0xfa, 0x6f, 0xf6, 0xb9, 0xf3, 0x42, 0xf4, 0x1d, 0xf4, 0x0f, 0xf5, + 0xcf, 0xf4, 0x4c, 0xf5, 0xa4, 0xf7, 0x85, 0xf8, 0x81, 0xfd, 0xcc, 0xfd, 0x7e, 0xfa, 0xad, 0xfa, + 0x9f, 0xfb, 0x5b, 0xfc, 0x7e, 0xfb, 0xa1, 0xfc, 0x12, 0xfe, 0x25, 0xfd, 0xa5, 0xfa, 0xa2, 0xf5, + 0x5f, 0xf4, 0x41, 0xf5, 0x0a, 0xf3, 0x6c, 0xf2, 0xd5, 0xef, 0xca, 0xee, 0x7b, 0xf5, 0x95, 0xf8, + 0xe5, 0xfa, 0x81, 0xfb, 0xef, 0xfb, 0xd3, 0xfe, 0xd4, 0xff, 0xee, 0xfe, 0xca, 0xfe, 0x21, 0xff, + 0x0b, 0x03, 0x3e, 0x08, 0xa9, 0x0b, 0xac, 0x0c, 0x63, 0x0d, 0xb1, 0x0f, 0xa5, 0x0d, 0xfb, 0x0b, + 0xfe, 0x07, 0x11, 0x05, 0x41, 0x06, 0x3f, 0x06, 0x47, 0x07, 0x81, 0x0a, 0x8d, 0x09, 0xac, 0x08, + 0x5f, 0x0a, 0x71, 0x07, 0xad, 0x07, 0x88, 0x0b, 0x33, 0x0d, 0x69, 0x0f, 0x46, 0x12, 0x8d, 0x15, + 0x7e, 0x1a, 0x28, 0x1c, 0xa8, 0x1a, 0xf7, 0x1a, 0xc4, 0x1a, 0x5a, 0x1b, 0xbd, 0x1b, 0x86, 0x16, + 0x44, 0x13, 0x49, 0x12, 0x84, 0x12, 0xa5, 0x0e, 0xbe, 0x08, 0xa6, 0x06, 0x10, 0x04, 0x81, 0x01, + 0x57, 0xfe, 0x62, 0xfd, 0xb3, 0xfb, 0xd5, 0xfa, 0x3a, 0xfa, 0xaf, 0xf6, 0x67, 0xf2, 0x57, 0xf1, + 0xe2, 0xef, 0x64, 0xf0, 0x80, 0xf3, 0xcd, 0xf3, 0x8d, 0xf7, 0xd9, 0xf6, 0x9c, 0xf6, 0x50, 0xf6, + 0x87, 0xf3, 0x2f, 0xf3, 0x9f, 0xf5, 0x03, 0xf2, 0x13, 0xf2, 0xfd, 0xf1, 0x9e, 0xf2, 0xc7, 0xf6, + 0xa9, 0xf1, 0xae, 0xed, 0x68, 0xea, 0xfa, 0xe9, 0x12, 0xea, 0xff, 0xe7, 0x34, 0xe7, 0x9b, 0xe5, + 0x3c, 0xe4, 0xba, 0xe7, 0x46, 0xe9, 0x27, 0xe7, 0x86, 0xe7, 0xda, 0xe6, 0xc5, 0xe5, 0x17, 0xe7, + 0xc1, 0xeb, 0x65, 0xef, 0xf4, 0xf2, 0x77, 0xf7, 0xea, 0xfc, 0xd9, 0x01, 0x90, 0x09, 0x7d, 0x11, + 0xc4, 0x11, 0xd7, 0x12, 0x49, 0x15, 0x54, 0x19, 0xcd, 0x1b, 0x44, 0x1b, 0x9b, 0x1d, 0x17, 0x1e, + 0x02, 0x22, 0x30, 0x23, 0x72, 0x20, 0x17, 0x20, 0xf4, 0x1d, 0x28, 0x1d, 0xbd, 0x1c, 0xf9, 0x17, + 0xbb, 0x12, 0x83, 0x10, 0x45, 0x0d, 0x64, 0x0a, 0xcd, 0x08, 0x96, 0x06, 0x66, 0x01, 0x35, 0xf9, + 0x95, 0xf7, 0x53, 0xf3, 0xff, 0xf3, 0xfd, 0xf8, 0x53, 0xf6, 0x5c, 0xee, 0x3a, 0xe5, 0xd8, 0xe2, + 0xd1, 0xe2, 0x51, 0xe4, 0xd3, 0xe2, 0x0a, 0xe1, 0x51, 0xde, 0x71, 0xdd, 0x34, 0xdc, 0xf4, 0xd7, + 0x92, 0xd6, 0xef, 0xd2, 0xfd, 0xd4, 0x8b, 0xda, 0x96, 0xdb, 0x16, 0xdf, 0xd9, 0xe4, 0xc1, 0xe7, + 0x54, 0xec, 0xa1, 0xf3, 0xcd, 0xfb, 0xa8, 0x02, 0x5e, 0x07, 0x7a, 0x0f, 0xa4, 0x13, 0xfe, 0x16, + 0x7e, 0x1c, 0x7e, 0x1e, 0x0d, 0x21, 0x16, 0x24, 0xe0, 0x28, 0xe6, 0x2c, 0x48, 0x2b, 0x8a, 0x29, + 0x52, 0x23, 0xbc, 0x20, 0x51, 0x1e, 0xa1, 0x1a, 0xfc, 0x16, 0x47, 0x15, 0x56, 0x14, 0xb0, 0x14, + 0xc3, 0x14, 0x7a, 0x10, 0x71, 0x0e, 0x99, 0x0c, 0x2a, 0x0a, 0x70, 0x0a, 0xc1, 0x0b, 0xff, 0x0e, + 0x9e, 0x11, 0x7b, 0x10, 0x7a, 0x11, 0x6c, 0x10, 0x55, 0x0f, 0x18, 0x12, 0x55, 0x04, 0x49, 0xfc, + 0x5f, 0xf9, 0x42, 0xf6, 0xce, 0xfa, 0xd8, 0xf8, 0xb5, 0xf4, 0x98, 0xef, 0x68, 0xec, 0x8f, 0xe6, + 0xc7, 0xe0, 0x0e, 0xdb, 0xed, 0xd8, 0x86, 0xd9, 0x7c, 0xdd, 0xca, 0xe0, 0xaa, 0xdf, 0x7e, 0xdf, + 0xd1, 0xdf, 0xad, 0xdf, 0xec, 0xe3, 0x84, 0xeb, 0x89, 0xf2, 0x53, 0xf8, 0xf8, 0xfe, 0x8c, 0x05, + 0x7f, 0x08, 0x11, 0x0c, 0xf4, 0x0d, 0xba, 0x0b, 0x3e, 0x0a, 0x8d, 0x0d, 0xae, 0x15, 0x0b, 0x14, + 0xe9, 0x17, 0x02, 0x18, 0xf6, 0x14, 0x0e, 0x17, 0x98, 0x16, 0xbe, 0x11, 0x09, 0x0f, 0x04, 0x0f, + 0xcf, 0x0d, 0xcb, 0x11, 0xe7, 0x0f, 0x8b, 0x0e, 0xbe, 0x0f, 0x10, 0x0b, 0xfb, 0x09, 0xbb, 0x09, + 0x3b, 0x06, 0x38, 0x04, 0x60, 0x02, 0x19, 0x00, 0xae, 0x02, 0x20, 0x01, 0x09, 0x02, 0x42, 0x06, + 0xd1, 0xfa, 0xe0, 0xf4, 0x17, 0xf8, 0x8c, 0xf5, 0xea, 0xf6, 0x0c, 0xf7, 0x3b, 0xf2, 0x9f, 0xf0, + 0x6a, 0xf2, 0x45, 0xf0, 0x49, 0xef, 0xd8, 0xed, 0x34, 0xed, 0x45, 0xf3, 0x21, 0xf5, 0x4c, 0xf7, + 0x63, 0xf9, 0xa9, 0xf7, 0x6a, 0xf6, 0x0c, 0xf6, 0x9f, 0xf7, 0x51, 0xfc, 0xb9, 0xfe, 0x4e, 0xff, + 0xfd, 0x00, 0x59, 0x02, 0x87, 0x06, 0x72, 0x0a, 0x96, 0x0a, 0xf6, 0x0c, 0x7a, 0x0a, 0x80, 0x0e, + 0xd7, 0x11, 0x3d, 0x0c, 0x8f, 0x0d, 0x0f, 0x09, 0x1d, 0x06, 0x78, 0x06, 0xc0, 0x03, 0xda, 0xfb, + 0x98, 0xfa, 0x44, 0xf9, 0x0b, 0xf7, 0x9b, 0xf7, 0xf5, 0xee, 0x2a, 0xee, 0x0b, 0xed, 0x7d, 0xe9, + 0x3d, 0xed, 0xc1, 0xf0, 0x84, 0xf3, 0x98, 0xf5, 0x20, 0xf6, 0x07, 0xf6, 0x82, 0xf5, 0xf2, 0xf1, + 0x90, 0xf7, 0xb0, 0xed, 0x5b, 0xe4, 0x83, 0xe9, 0xc6, 0xea, 0x98, 0xf2, 0x66, 0xf8, 0x32, 0xf6, + 0xc0, 0xf0, 0xf7, 0xed, 0xa8, 0xeb, 0x10, 0xeb, 0x5b, 0xea, 0xea, 0xe9, 0x88, 0xf0, 0x88, 0xf8, + 0x1d, 0x00, 0x9c, 0x05, 0x9b, 0x07, 0x73, 0x07, 0xa7, 0x08, 0x7d, 0x0e, 0x06, 0x16, 0x0e, 0x20, + 0x86, 0x24, 0x6d, 0x2c, 0xbf, 0x32, 0xcf, 0x36, 0x69, 0x3b, 0xb1, 0x38, 0xbf, 0x38, 0x07, 0x33, + 0xe5, 0x32, 0xc1, 0x36, 0x90, 0x30, 0xb1, 0x2a, 0xd9, 0x22, 0x61, 0x1c, 0x16, 0x18, 0x4b, 0x11, + 0x9c, 0x07, 0x67, 0x01, 0x08, 0xfd, 0x38, 0xfa, 0xf5, 0xfb, 0x3b, 0xf6, 0xd4, 0xee, 0xcd, 0xec, + 0xc6, 0xe6, 0x95, 0xe6, 0x6d, 0xe8, 0x56, 0xeb, 0x62, 0xee, 0x6d, 0xed, 0xe7, 0xec, 0x50, 0xee, + 0x4c, 0xeb, 0x17, 0xef, 0xb1, 0xe9, 0xf0, 0xdc, 0x85, 0xdd, 0xef, 0xdc, 0x5f, 0xe1, 0x6b, 0xe7, + 0xc6, 0xe6, 0x49, 0xe3, 0x80, 0xe5, 0xc0, 0xe6, 0x90, 0xe7, 0x2b, 0xe8, 0x1e, 0xe6, 0xa5, 0xe8, + 0x52, 0xec, 0x1e, 0xf3, 0x21, 0xf8, 0x4f, 0xfa, 0xc1, 0xfa, 0xf6, 0xfd, 0x77, 0x01, 0x46, 0x07, + 0x9b, 0x0e, 0xc4, 0x0e, 0x36, 0x10, 0xb0, 0x13, 0xc2, 0x17, 0x14, 0x1c, 0xde, 0x1d, 0x76, 0x1f, + 0x15, 0x22, 0x39, 0x22, 0x39, 0x29, 0x7e, 0x27, 0x35, 0x22, 0x7f, 0x1d, 0x53, 0x18, 0x4e, 0x19, + 0x04, 0x19, 0xda, 0x15, 0x7c, 0x10, 0xf1, 0x0e, 0xca, 0x0d, 0x97, 0x11, 0xf6, 0x0d, 0x92, 0x07, + 0x2b, 0x05, 0xc3, 0xff, 0x26, 0xff, 0x1e, 0xfd, 0xd1, 0xfb, 0x26, 0xfc, 0x08, 0xfb, 0x5d, 0xf6, + 0xc1, 0xf4, 0x8d, 0xee, 0xf8, 0xed, 0xc0, 0xeb, 0x77, 0xdf, 0x6a, 0xde, 0xc3, 0xdf, 0xfe, 0xe0, + 0x64, 0xe5, 0xf4, 0xe4, 0x2f, 0xdf, 0x48, 0xe0, 0xd1, 0xdf, 0x67, 0xdc, 0xa2, 0xdb, 0x90, 0xd8, + 0xd9, 0xd8, 0x8f, 0xdc, 0x0f, 0xe3, 0x30, 0xe8, 0x6d, 0xe7, 0x6c, 0xe5, 0x98, 0xe7, 0x6b, 0xea, + 0xd8, 0xee, 0x2f, 0xfa, 0x45, 0x01, 0x64, 0x06, 0xab, 0x0f, 0x32, 0x15, 0x44, 0x17, 0xcd, 0x19, + 0xe7, 0x18, 0x43, 0x1a, 0x59, 0x1a, 0xb5, 0x20, 0x35, 0x25, 0x2a, 0x25, 0xcc, 0x24, 0x0a, 0x23, + 0x02, 0x21, 0xcd, 0x1f, 0xfe, 0x19, 0xec, 0x0f, 0xe4, 0x0d, 0x3e, 0x0c, 0xa2, 0x0e, 0xb5, 0x0d, + 0x7e, 0x08, 0x6f, 0x05, 0xd1, 0x01, 0x3f, 0x02, 0x2d, 0x02, 0x66, 0x03, 0xdd, 0x06, 0xd5, 0x08, + 0xbd, 0x08, 0x70, 0x09, 0x71, 0x0a, 0x4b, 0x06, 0x26, 0x0a, 0x48, 0x00, 0x0a, 0xff, 0xb0, 0xfe, + 0x74, 0xfb, 0x32, 0xfd, 0x4d, 0xfa, 0x5a, 0xf4, 0x9b, 0xee, 0x4f, 0xef, 0xb4, 0xeb, 0xc4, 0xe7, + 0xe9, 0xe0, 0x29, 0xdf, 0x23, 0xe2, 0x91, 0xe3, 0x51, 0xe5, 0x87, 0xe3, 0xbc, 0xe2, 0x4e, 0xe1, + 0x0f, 0xdf, 0xd5, 0xdd, 0x39, 0xe4, 0xf6, 0xea, 0x44, 0xee, 0xda, 0xf8, 0x57, 0x03, 0x9c, 0x08, + 0xad, 0x0c, 0xfe, 0x0e, 0xe8, 0x11, 0x1f, 0x13, 0x62, 0x15, 0x36, 0x16, 0xc2, 0x0f, 0x3a, 0x0f, + 0x76, 0x0c, 0xb8, 0x0d, 0x91, 0x12, 0x6f, 0x13, 0x01, 0x11, 0x56, 0x10, 0xbb, 0x11, 0xf7, 0x10, + 0xfd, 0x11, 0x6b, 0x0e, 0xca, 0x0d, 0x66, 0x0b, 0xb4, 0x0b, 0x54, 0x0e, 0xb8, 0x0e, 0xc0, 0x11, + 0xd6, 0x12, 0x8e, 0x10, 0xc6, 0x0e, 0x70, 0x0b, 0x86, 0x04, 0xb8, 0x07, 0xb4, 0x02, 0x6c, 0xfb, + 0x65, 0xfd, 0x12, 0xfb, 0x81, 0xfe, 0x9b, 0x00, 0xe2, 0xfd, 0x7e, 0xf7, 0x07, 0xf5, 0xab, 0xf4, + 0x87, 0xf2, 0x96, 0xf0, 0x9d, 0xef, 0x0a, 0xf4, 0xec, 0xf6, 0x75, 0xfe, 0x94, 0x02, 0xd6, 0xff, + 0x6c, 0x00, 0x14, 0xff, 0xa0, 0xfe, 0x10, 0xff, 0xbd, 0x00, 0x61, 0x02, 0xd9, 0x04, 0x6e, 0x09, + 0xaf, 0x0a, 0x2e, 0x09, 0x9c, 0x08, 0x48, 0x09, 0x82, 0x07, 0xc3, 0x08, 0x3c, 0x0d, 0x98, 0x0a, + 0x1c, 0x0a, 0xf5, 0x06, 0xea, 0x01, 0x46, 0x02, 0xb0, 0x01, 0x98, 0xfd, 0xeb, 0xf6, 0x52, 0xf5, + 0xec, 0xf3, 0x71, 0xf2, 0xe4, 0xee, 0xeb, 0xec, 0x32, 0xea, 0x7e, 0xe7, 0x54, 0xe8, 0x6b, 0xe6, + 0xe0, 0xe6, 0x60, 0xe8, 0xc5, 0xeb, 0x31, 0xee, 0x97, 0xf0, 0x23, 0xf0, 0x8d, 0xf1, 0xd1, 0xf4, + 0x2a, 0xec, 0x81, 0xed, 0x88, 0xee, 0x0d, 0xee, 0xaa, 0xf4, 0xbb, 0xf9, 0xc0, 0xf8, 0xa9, 0xf8, + 0xc9, 0xfb, 0xb5, 0xfa, 0xea, 0xf9, 0x9e, 0xf6, 0xf8, 0xf9, 0xa4, 0xfb, 0x42, 0x00, 0xfe, 0x07, + 0xf7, 0x08, 0x87, 0x08, 0x7f, 0x0b, 0x45, 0x0d, 0xcd, 0x0e, 0x3a, 0x17, 0x07, 0x1b, 0x1e, 0x21, + 0xc7, 0x28, 0x39, 0x2d, 0x27, 0x30, 0x82, 0x2e, 0xf8, 0x30, 0xbb, 0x33, 0xd5, 0x32, 0x5d, 0x36, + 0xd5, 0x36, 0x59, 0x32, 0x74, 0x2f, 0x50, 0x28, 0x6b, 0x21, 0x74, 0x1e, 0xba, 0x16, 0x55, 0x0c, + 0x74, 0x06, 0x76, 0x00, 0xcb, 0xfb, 0x34, 0xf8, 0xf1, 0xee, 0x09, 0xea, 0x13, 0xe5, 0xa0, 0xe2, + 0x6a, 0xe1, 0x92, 0xdd, 0xf6, 0xde, 0x74, 0xdf, 0xeb, 0xe0, 0x90, 0xe2, 0x45, 0xe2, 0x9b, 0xde, + 0x81, 0xe1, 0x2e, 0xe3, 0xeb, 0xda, 0xbb, 0xdc, 0x51, 0xdd, 0xbe, 0xdf, 0x6e, 0xe3, 0x23, 0xe5, + 0xc9, 0xe2, 0x06, 0xe0, 0x9a, 0xe3, 0xbd, 0xe3, 0xfb, 0xe5, 0x5b, 0xe7, 0x7d, 0xeb, 0x8d, 0xee, + 0x0b, 0xf3, 0xb9, 0xf8, 0x3a, 0xf8, 0xfa, 0xf7, 0x86, 0xf7, 0x45, 0xfc, 0x1c, 0x02, 0x89, 0x0b, + 0xda, 0x0f, 0x80, 0x15, 0xa8, 0x19, 0xc2, 0x1a, 0x0f, 0x1b, 0xa6, 0x1a, 0x27, 0x1c, 0x54, 0x1b, + 0x83, 0x1e, 0xd8, 0x23, 0x1b, 0x25, 0xa3, 0x25, 0x2a, 0x27, 0xf8, 0x22, 0xc3, 0x20, 0xe7, 0x1e, + 0x5f, 0x18, 0x91, 0x10, 0xaf, 0x0a, 0x34, 0x08, 0x72, 0x07, 0x5a, 0x03, 0xa3, 0x00, 0x63, 0xfe, + 0xcd, 0xfc, 0x24, 0xfe, 0xba, 0xfa, 0xcc, 0xf6, 0xde, 0xf5, 0x37, 0xf5, 0x3a, 0xf5, 0xa0, 0xf4, + 0xaf, 0xf1, 0xe5, 0xeb, 0x3d, 0xee, 0x3e, 0xea, 0x82, 0xe1, 0x24, 0xe1, 0xc3, 0xe1, 0x11, 0xe3, + 0x0b, 0xe7, 0x46, 0xe9, 0x4e, 0xe5, 0xd0, 0xe4, 0x97, 0xe4, 0x7c, 0xe3, 0x92, 0xe1, 0xac, 0xde, + 0xce, 0xe0, 0x4f, 0xe1, 0x36, 0xe5, 0x32, 0xed, 0xd7, 0xec, 0x8b, 0xec, 0x2c, 0xed, 0x69, 0xee, + 0x11, 0xf4, 0x0d, 0xfa, 0xef, 0x00, 0xd5, 0x05, 0x24, 0x0c, 0x8f, 0x14, 0x09, 0x18, 0xf1, 0x1a, + 0x99, 0x1d, 0x16, 0x1e, 0xe7, 0x1e, 0x84, 0x22, 0x3a, 0x22, 0x0e, 0x22, 0x34, 0x23, 0x7d, 0x24, + 0xa8, 0x26, 0x80, 0x25, 0x08, 0x22, 0xf6, 0x1c, 0x4e, 0x18, 0x62, 0x15, 0x4c, 0x14, 0x22, 0x10, + 0x1d, 0x0b, 0xce, 0x08, 0xbf, 0x06, 0x33, 0x06, 0xbe, 0x04, 0x2c, 0x03, 0xed, 0x03, 0xa8, 0x03, + 0xe5, 0x04, 0x8e, 0x04, 0xb1, 0x02, 0x24, 0x02, 0xad, 0x05, 0xd8, 0x07, 0xe7, 0x01, 0x5f, 0x01, + 0xbe, 0x02, 0xc3, 0x02, 0x7e, 0x03, 0x9d, 0x03, 0xa9, 0xff, 0x27, 0xfa, 0xb7, 0xf6, 0x15, 0xf5, + 0xda, 0xef, 0x34, 0xeb, 0xfa, 0xea, 0x2a, 0xe8, 0xea, 0xe5, 0xd8, 0xe6, 0x2f, 0xe6, 0xbe, 0xe3, + 0x32, 0xe2, 0xa3, 0xe3, 0x8d, 0xe5, 0x18, 0xe9, 0xcd, 0xef, 0x1f, 0xf4, 0x8b, 0xf4, 0xb6, 0xf8, + 0xf5, 0xfc, 0x21, 0xff, 0x4e, 0x01, 0x61, 0x05, 0xb1, 0x0a, 0x7c, 0x0f, 0xb2, 0x12, 0x4f, 0x11, + 0xf4, 0x0e, 0xab, 0x0e, 0x60, 0x0e, 0x67, 0x0d, 0xab, 0x0c, 0x9f, 0x0b, 0x78, 0x0b, 0xbd, 0x0d, + 0x4c, 0x0f, 0xaf, 0x0e, 0xfa, 0x0b, 0xa2, 0x08, 0x0f, 0x06, 0x77, 0x03, 0xa5, 0x03, 0x7f, 0x06, + 0x5a, 0x0a, 0x80, 0x0a, 0x84, 0x09, 0x0c, 0x09, 0x8f, 0x06, 0x94, 0x04, 0x68, 0x05, 0x04, 0x04, + 0x99, 0x03, 0x63, 0x03, 0xb8, 0x03, 0xa5, 0x03, 0x0d, 0x04, 0xd9, 0x08, 0xb0, 0x09, 0x9f, 0x03, + 0x58, 0xff, 0xde, 0xfd, 0x97, 0xfa, 0xf1, 0xf8, 0xc9, 0xf6, 0x0d, 0xf5, 0x0b, 0xf7, 0xe3, 0xf8, + 0x9c, 0xfa, 0x5f, 0xfc, 0x90, 0xfb, 0xf8, 0xfb, 0xaf, 0xf9, 0xc6, 0xf9, 0x89, 0xfc, 0x3f, 0xfe, + 0xdd, 0xfc, 0x80, 0xfa, 0x33, 0xfb, 0xcb, 0xfb, 0x2f, 0xfa, 0x9a, 0xf4, 0x55, 0xf4, 0x4e, 0xf6, + 0x27, 0xf8, 0x13, 0xf8, 0xf1, 0xf7, 0x42, 0xf8, 0x71, 0xf4, 0x54, 0xf3, 0xc5, 0xf1, 0x6e, 0xf2, + 0xb3, 0xef, 0x14, 0xed, 0x1f, 0xec, 0xed, 0xeb, 0x5e, 0xee, 0x2d, 0xef, 0xfb, 0xec, 0x4f, 0xe5, + 0xc2, 0xe4, 0xd5, 0xe9, 0x0f, 0xf1, 0xb4, 0xef, 0x01, 0xee, 0xf7, 0xf1, 0xc6, 0xf9, 0x91, 0xfe, + 0x13, 0xff, 0x67, 0xfe, 0x5e, 0xfe, 0x74, 0x01, 0x5a, 0x03, 0xf4, 0x03, 0xc1, 0x07, 0xed, 0x0b, + 0x42, 0x0a, 0xf4, 0x09, 0x80, 0x0d, 0xcb, 0x0f, 0xc4, 0x0c, 0x8a, 0x08, 0xa7, 0x07, 0x5a, 0x0a, + 0xb8, 0x0a, 0x90, 0x09, 0xd9, 0x07, 0xff, 0x06, 0xa3, 0x09, 0x73, 0x0d, 0x51, 0x0f, 0xf4, 0x0f, + 0xea, 0x11, 0x0c, 0x11, 0x73, 0x10, 0x94, 0x12, 0x6b, 0x14, 0xbc, 0x14, 0x8d, 0x14, 0x43, 0x15, + 0xdd, 0x1a, 0x85, 0x1d, 0xe5, 0x1a, 0x89, 0x17, 0xff, 0x13, 0x67, 0x10, 0x2f, 0x10, 0xcb, 0x0c, + 0xcc, 0x05, 0x5d, 0x03, 0xba, 0x01, 0xf1, 0xfd, 0xd0, 0xfa, 0xad, 0xf7, 0x17, 0xf4, 0x32, 0xf0, + 0x75, 0xed, 0x48, 0xed, 0x12, 0xed, 0xcb, 0xed, 0xbc, 0xec, 0xb8, 0xee, 0x36, 0xf1, 0x1f, 0xf4, + 0x4b, 0xf4, 0xf0, 0xf3, 0x16, 0xf5, 0x56, 0xfa, 0x60, 0xfc, 0x36, 0xfc, 0xde, 0x00, 0x72, 0x01, + 0x1d, 0x03, 0x65, 0x04, 0x7e, 0xff, 0xa8, 0xfe, 0x4f, 0xfe, 0xf9, 0xfd, 0xde, 0xfd, 0x5c, 0xff, + 0x8e, 0x02, 0x6b, 0x03, 0x92, 0x03, 0xfe, 0x01, 0xae, 0x00, 0x81, 0x00, 0xd0, 0xff, 0xc1, 0x01, + 0xc6, 0x05, 0x75, 0x09, 0x24, 0x0c, 0x58, 0x0c, 0x51, 0x0a, 0x3d, 0x0a, 0x4a, 0x08, 0x9d, 0x05, + 0x6b, 0x03, 0xc2, 0x01, 0x69, 0x04, 0x38, 0x05, 0x72, 0x03, 0x51, 0x05, 0xf1, 0x03, 0xda, 0x02, + 0x8d, 0x00, 0x39, 0xfc, 0xbe, 0xfa, 0x69, 0xfb, 0x78, 0xf8, 0x3e, 0xf6, 0xc5, 0xf6, 0xb3, 0xf7, + 0x4f, 0xf9, 0x5a, 0xf9, 0xae, 0xf9, 0x60, 0xfa, 0xd6, 0xf9, 0x85, 0xfc, 0xf1, 0xfd, 0x8d, 0xfb, + 0xcd, 0xfb, 0xb2, 0xfd, 0xe8, 0xfd, 0x10, 0xfd, 0x00, 0xfc, 0x62, 0xf9, 0x5d, 0xf8, 0x9d, 0xf9, + 0x16, 0xf9, 0xe5, 0xf8, 0x82, 0xfa, 0x03, 0xfb, 0xbd, 0xfa, 0x33, 0xf9, 0xed, 0xf7, 0x17, 0xf7, + 0x25, 0xf6, 0xd2, 0xf4, 0x16, 0xf3, 0x95, 0xf2, 0x52, 0xf4, 0x36, 0xf4, 0x62, 0xf4, 0x84, 0xf4, + 0x8d, 0xf3, 0xdc, 0xf4, 0x87, 0xf5, 0xad, 0xf5, 0xa3, 0xf6, 0x45, 0xf8, 0xd8, 0xfb, 0x87, 0xff, + 0x67, 0x01, 0xf6, 0x02, 0x5c, 0x03, 0x24, 0x04, 0xd2, 0x05, 0x4e, 0x04, 0xda, 0x02, 0xce, 0x05, + 0x07, 0x06, 0x1f, 0x08, 0x13, 0x0a, 0xbd, 0x0a, 0xf4, 0x0a, 0xb9, 0x0a, 0xb9, 0x09, 0x67, 0x07, + 0x83, 0x06, 0x5e, 0x06, 0x92, 0x06, 0xa9, 0x04, 0x3e, 0x04, 0x82, 0x06, 0x1f, 0x08, 0x4c, 0x0b, + 0x2d, 0x0d, 0xd0, 0x0b, 0x50, 0x0d, 0x64, 0x0f, 0xfa, 0x10, 0x68, 0x11, 0x1c, 0x10, 0xf9, 0x10, + 0x28, 0x14, 0x32, 0x16, 0x95, 0x15, 0x01, 0x15, 0x01, 0x12, 0x39, 0x0f, 0xc1, 0x0b, 0x33, 0x06, + 0x2c, 0x03, 0x73, 0x00, 0x9f, 0xfd, 0xc9, 0xfb, 0x3b, 0xf7, 0x08, 0xf5, 0x88, 0xf1, 0x60, 0xed, + 0x07, 0xeb, 0x78, 0xe8, 0x26, 0xe8, 0xee, 0xe8, 0x69, 0xea, 0xca, 0xe9, 0x58, 0xec, 0x74, 0xee, + 0xc1, 0xee, 0xce, 0xf0, 0xa1, 0xef, 0x21, 0xf2, 0x98, 0xf4, 0xc8, 0xf7, 0x9e, 0xfa, 0x4e, 0xfc, + 0x82, 0xfe, 0xb1, 0xfd, 0x76, 0xfc, 0x0b, 0xfb, 0xb9, 0xfb, 0x5e, 0xfc, 0x0d, 0xfe, 0x04, 0x00, + 0x68, 0x01, 0x59, 0x05, 0x1c, 0x07, 0x2e, 0x08, 0x39, 0x09, 0x51, 0x07, 0x29, 0x08, 0xde, 0x08, + 0xb1, 0x0b, 0x74, 0x0f, 0xd8, 0x11, 0x74, 0x13, 0xf0, 0x15, 0xe2, 0x17, 0xc4, 0x16, 0x10, 0x15, + 0x4a, 0x11, 0x77, 0x10, 0x19, 0x12, 0x71, 0x10, 0x3e, 0x12, 0x33, 0x13, 0x6f, 0x11, 0x58, 0x13, + 0x84, 0x10, 0x10, 0x0d, 0x21, 0x0b, 0xaa, 0x08, 0x9e, 0x06, 0xd3, 0x03, 0xcd, 0x01, 0xdd, 0x01, + 0xa9, 0x01, 0x26, 0x00, 0x34, 0x01, 0xa5, 0x01, 0xb1, 0x01, 0x52, 0x02, 0xee, 0x00, 0x8f, 0xfe, + 0xd4, 0xfc, 0x02, 0xfc, 0x6c, 0xfb, 0xad, 0xfa, 0xce, 0xf6, 0x78, 0xf4, 0xd7, 0xf3, 0xae, 0xf1, + 0xbc, 0xef, 0xb6, 0xee, 0xf6, 0xec, 0x68, 0xec, 0x7d, 0xeb, 0x84, 0xeb, 0x37, 0xec, 0xde, 0xeb, + 0xc1, 0xeb, 0x34, 0xea, 0x6c, 0xe8, 0x00, 0xe9, 0xf3, 0xe8, 0xcb, 0xe8, 0xa8, 0xe9, 0x33, 0xea, + 0xe5, 0xeb, 0x9c, 0xec, 0xdb, 0xec, 0x17, 0xed, 0xa2, 0xee, 0x53, 0xef, 0x6a, 0xf3, 0x44, 0xf7, + 0xba, 0xf9, 0xce, 0xfc, 0xf4, 0xfd, 0x8d, 0x01, 0xfc, 0x01, 0x42, 0x02, 0x64, 0x03, 0xcf, 0x01, + 0x89, 0x03, 0xc9, 0x05, 0x02, 0x06, 0x0f, 0x07, 0x58, 0x08, 0x7d, 0x08, 0xf1, 0x07, 0x92, 0x07, + 0xa2, 0x06, 0x23, 0x05, 0x6b, 0x03, 0x78, 0x02, 0xde, 0x02, 0x0c, 0x04, 0x96, 0x07, 0xcb, 0x0a, + 0x54, 0x0b, 0x0e, 0x0d, 0x85, 0x0f, 0xaf, 0x0f, 0x6d, 0x11, 0xb1, 0x11, 0xa7, 0x0f, 0x9d, 0x11, + 0x95, 0x13, 0x08, 0x15, 0x81, 0x15, 0x0c, 0x15, 0xf4, 0x13, 0x13, 0x11, 0x7c, 0x0d, 0x8c, 0x0a, + 0x22, 0x07, 0x70, 0x04, 0x75, 0x03, 0x0b, 0x00, 0x71, 0xfe, 0xdf, 0xfc, 0x28, 0xf9, 0x43, 0xf6, + 0xc7, 0xf2, 0x86, 0xef, 0xc7, 0xee, 0x83, 0xed, 0x43, 0xed, 0x88, 0xed, 0xaf, 0xee, 0x76, 0xf1, + 0x02, 0xf4, 0xd6, 0xf4, 0x78, 0xf4, 0xf0, 0xf4, 0xa7, 0xf6, 0x13, 0xf9, 0xb9, 0xfa, 0x33, 0xfe, + 0x60, 0x01, 0x35, 0x02, 0x8d, 0x01, 0xa3, 0xff, 0x3d, 0xfe, 0x4f, 0xfd, 0x32, 0xfd, 0xca, 0xfc, + 0x23, 0xfe, 0x7a, 0x00, 0xdc, 0x01, 0x1a, 0x03, 0xe9, 0x02, 0x4e, 0x03, 0x26, 0x04, 0x19, 0x05, + 0xb4, 0x06, 0x15, 0x09, 0x8a, 0x09, 0x9e, 0x0c, 0x7c, 0x0f, 0xfe, 0x10, 0x2a, 0x12, 0x5f, 0x0f, + 0x32, 0x0d, 0xdf, 0x0c, 0x30, 0x0b, 0x4b, 0x09, 0xd3, 0x08, 0x41, 0x08, 0xe8, 0x07, 0x7e, 0x08, + 0xba, 0x07, 0x7d, 0x06, 0xff, 0x04, 0x65, 0x03, 0x23, 0x01, 0x6e, 0xfe, 0xc6, 0xfc, 0x92, 0xfa, + 0x9b, 0xf8, 0x73, 0xf9, 0xab, 0xfa, 0x64, 0xfb, 0xc8, 0xfd, 0x19, 0xfe, 0x71, 0xfc, 0x33, 0xfc, + 0x9e, 0xfb, 0xe9, 0xfb, 0xd7, 0xfc, 0xe2, 0xfc, 0x0b, 0xfc, 0xcb, 0xfa, 0xac, 0xf9, 0xe8, 0xf8, + 0xd2, 0xf8, 0x8c, 0xf7, 0xcc, 0xf5, 0x59, 0xf4, 0x81, 0xf2, 0x2a, 0xf1, 0x80, 0xf1, 0xed, 0xf2, + 0x28, 0xf3, 0x5c, 0xf2, 0x6f, 0xf1, 0x0d, 0xf1, 0x3a, 0xf1, 0xa3, 0xf0, 0x84, 0xf1, 0xcd, 0xf4, + 0xcc, 0xf6, 0x08, 0xfa, 0x02, 0xfd, 0xce, 0xfc, 0xa7, 0xfc, 0x68, 0xfe, 0x62, 0x01, 0xe0, 0x03, + 0x3f, 0x05, 0xf2, 0x06, 0xf3, 0x09, 0xd5, 0x0b, 0xd3, 0x0b, 0x23, 0x0e, 0x59, 0x0d, 0xec, 0x0a, + 0xd9, 0x09, 0x0a, 0x09, 0x87, 0x09, 0xa4, 0x0a, 0x3a, 0x0d, 0xed, 0x0d, 0x3e, 0x0e, 0x43, 0x0e, + 0x12, 0x0d, 0x88, 0x0b, 0x54, 0x08, 0x91, 0x06, 0xdf, 0x03, 0xcf, 0x03, 0xc2, 0x05, 0x81, 0x07, + 0x37, 0x08, 0xeb, 0x08, 0x2c, 0x0a, 0x69, 0x0b, 0x7f, 0x0c, 0x93, 0x0a, 0x80, 0x08, 0x2c, 0x09, + 0x97, 0x09, 0xf5, 0x0a, 0x2c, 0x0c, 0x80, 0x0c, 0xbd, 0x0d, 0x4e, 0x0a, 0x44, 0x07, 0x69, 0x02, + 0x7c, 0xfd, 0x15, 0xfb, 0xcc, 0xf7, 0x15, 0xf6, 0x7f, 0xf4, 0xc5, 0xf2, 0xca, 0xef, 0xcc, 0xed, + 0x9c, 0xeb, 0xf4, 0xe9, 0xa9, 0xe8, 0x69, 0xe8, 0x29, 0xe7, 0x2a, 0xe7, 0x65, 0xe9, 0xb3, 0xeb, + 0xfb, 0xed, 0x7e, 0xee, 0xd0, 0xee, 0xeb, 0xef, 0xfb, 0xf1, 0x35, 0xf3, 0xd5, 0xf5, 0x1c, 0xfa, + 0x37, 0xfd, 0xc4, 0xfe, 0x3e, 0x00, 0x84, 0xff, 0x92, 0xff, 0x89, 0x00, 0xe0, 0x00, 0xa8, 0x01, + 0x16, 0x02, 0x22, 0x05, 0x33, 0x07, 0xd4, 0x07, 0xa0, 0x08, 0xd2, 0x09, 0x45, 0x0a, 0x81, 0x0b, + 0x3c, 0x0d, 0xbc, 0x0c, 0x4a, 0x0c, 0xfb, 0x0d, 0x4f, 0x10, 0x5e, 0x13, 0xa9, 0x14, 0x0a, 0x13, + 0x98, 0x13, 0xc6, 0x12, 0xf6, 0x10, 0xcb, 0x0f, 0x8b, 0x0d, 0xe4, 0x0c, 0x2d, 0x0c, 0xd2, 0x0a, + 0xda, 0x08, 0xeb, 0x06, 0x97, 0x05, 0xb6, 0x03, 0xcd, 0x00, 0x55, 0xfe, 0xf7, 0xfb, 0x96, 0xf9, + 0x0d, 0xf7, 0xd7, 0xf6, 0xed, 0xf7, 0x0b, 0xfa, 0x76, 0xfd, 0x4c, 0xff, 0x5b, 0x00, 0xdf, 0xff, + 0x15, 0xff, 0x8c, 0x00, 0xcd, 0x00, 0xdc, 0xfe, 0x6e, 0xfe, 0x2d, 0xfe, 0x99, 0xfd, 0xd4, 0xfb, + 0x12, 0xfa, 0x47, 0xf9, 0x23, 0xf6, 0xd3, 0xf3, 0xaf, 0xf1, 0xeb, 0xee, 0x07, 0xef, 0xa5, 0xf1, + 0x60, 0xf1, 0x27, 0xf1, 0x84, 0xf1, 0x11, 0xf1, 0x6b, 0xf0, 0xd8, 0xee, 0x28, 0xee, 0x94, 0xee, + 0xb9, 0xf0, 0x5d, 0xf3, 0xb2, 0xf5, 0x24, 0xf5, 0x7b, 0xf5, 0x5b, 0xf7, 0x72, 0xf8, 0x57, 0xfa, + 0x9a, 0xfa, 0x9b, 0xfb, 0x4f, 0xfe, 0xff, 0xff, 0xaf, 0x02, 0xea, 0x04, 0x87, 0x05, 0x27, 0x06, + 0xe5, 0x04, 0x32, 0x02, 0xe3, 0xff, 0x42, 0x00, 0xbc, 0x00, 0x73, 0x01, 0x5b, 0x03, 0xa9, 0x04, + 0x39, 0x05, 0x74, 0x04, 0xcf, 0x03, 0x55, 0x02, 0x7e, 0x00, 0x87, 0x01, 0xf9, 0x03, 0x2e, 0x05, + 0x53, 0x06, 0xb2, 0x08, 0xed, 0x0a, 0x15, 0x0e, 0x84, 0x0f, 0x16, 0x0e, 0xc6, 0x0d, 0xf1, 0x0d, + 0x3c, 0x0f, 0x51, 0x10, 0xc3, 0x10, 0x03, 0x12, 0xcf, 0x12, 0xab, 0x13, 0x56, 0x12, 0x58, 0x10, + 0x55, 0x0e, 0x31, 0x0c, 0xc7, 0x09, 0x5d, 0x07, 0x20, 0x07, 0x65, 0x06, 0xe3, 0x04, 0x65, 0x02, + 0xd1, 0xff, 0xe6, 0xfd, 0x26, 0xfc, 0xc2, 0xf9, 0x01, 0xf6, 0x00, 0xf3, 0xca, 0xf2, 0x22, 0xf4, + 0x76, 0xf5, 0x48, 0xf5, 0xe3, 0xf4, 0x90, 0xf5, 0x59, 0xf5, 0x9d, 0xf5, 0x7e, 0xf6, 0x79, 0xf8, + 0xde, 0xfa, 0x30, 0xfc, 0xc1, 0xfd, 0xd8, 0xfc, 0xa6, 0xfb, 0x65, 0xfb, 0x72, 0xf9, 0x5e, 0xf9, + 0x62, 0xf9, 0x4e, 0xf9, 0x38, 0xf9, 0x4a, 0xfa, 0x04, 0xfc, 0x7e, 0xfd, 0x06, 0xff, 0xd4, 0x01, + 0x43, 0x04, 0x1d, 0x04, 0xc7, 0x03, 0xd8, 0x03, 0x94, 0x06, 0x7e, 0x0a, 0xee, 0x0b, 0xa9, 0x0b, + 0x84, 0x0c, 0x89, 0x0d, 0xa6, 0x0c, 0x56, 0x0a, 0xaa, 0x08, 0xfb, 0x06, 0xeb, 0x05, 0xd7, 0x04, + 0xd9, 0x02, 0x1b, 0x03, 0x01, 0x04, 0xf3, 0x02, 0x30, 0x02, 0x9c, 0x01, 0x78, 0xff, 0x35, 0xfd, + 0x54, 0xfa, 0xd4, 0xf7, 0x61, 0xf7, 0x74, 0xf8, 0xdf, 0xfa, 0xec, 0xfc, 0x48, 0xfd, 0xd7, 0xfc, + 0x07, 0xfd, 0xeb, 0xfc, 0x68, 0xfc, 0xd4, 0xfa, 0x78, 0xfa, 0x14, 0xfa, 0xe6, 0xf9, 0x16, 0xfa, + 0x28, 0xf9, 0x99, 0xf9, 0x9f, 0xf7, 0xf4, 0xf4, 0xff, 0xf1, 0x5a, 0xee, 0xee, 0xed, 0x4a, 0xee, + 0x69, 0xef, 0xfe, 0xf0, 0xa9, 0xf2, 0x22, 0xf3, 0x20, 0xf2, 0xe7, 0xf0, 0xb1, 0xf0, 0x44, 0xf2, + 0xa0, 0xf4, 0xca, 0xf8, 0xda, 0xfb, 0xd5, 0xfd, 0x16, 0x00, 0xec, 0x02, 0xf2, 0x05, 0x74, 0x07, + 0x03, 0x08, 0x77, 0x08, 0x5a, 0x09, 0xba, 0x0a, 0x57, 0x0c, 0x24, 0x0e, 0xd4, 0x0e, 0xf9, 0x0e, + 0x84, 0x0e, 0xdd, 0x0b, 0xac, 0x09, 0x91, 0x08, 0x49, 0x08, 0xe4, 0x08, 0x4c, 0x0a, 0x49, 0x0b, + 0x55, 0x0c, 0x05, 0x0d, 0xef, 0x0b, 0x60, 0x09, 0x5b, 0x06, 0x45, 0x05, 0xd0, 0x04, 0x49, 0x04, + 0x69, 0x03, 0x47, 0x03, 0x64, 0x05, 0xad, 0x07, 0xfa, 0x07, 0x28, 0x07, 0x41, 0x06, 0xa5, 0x05, + 0x0e, 0x05, 0xc9, 0x04, 0xab, 0x05, 0x41, 0x06, 0xc7, 0x06, 0xa4, 0x07, 0xcb, 0x07, 0x30, 0x07, + 0x13, 0x05, 0x7f, 0x02, 0xc7, 0x00, 0x93, 0xfe, 0x6d, 0xfd, 0x4b, 0xfc, 0x39, 0xfa, 0xab, 0xf8, + 0x67, 0xf8, 0xf5, 0xf7, 0x24, 0xf8, 0x64, 0xf7, 0xb8, 0xf4, 0xc5, 0xf2, 0xa7, 0xf2, 0xc4, 0xf3, + 0xa2, 0xf5, 0xdd, 0xf5, 0x78, 0xf6, 0x00, 0xf7, 0x2f, 0xf7, 0x9c, 0xf7, 0xaa, 0xf7, 0x6c, 0xf8, + 0x33, 0xfa, 0xee, 0xfb, 0x41, 0xfc, 0xa9, 0xfc, 0x44, 0xfe, 0x01, 0xff, 0x5e, 0xfe, 0xac, 0xfe, + 0xb6, 0xff, 0xe4, 0xff, 0xc2, 0xff, 0xc6, 0xff, 0xa0, 0x00, 0xd5, 0x00, 0x6f, 0x02, 0x78, 0x05, + 0x3b, 0x07, 0x7f, 0x07, 0x35, 0x07, 0xc8, 0x06, 0x65, 0x07, 0xec, 0x08, 0x00, 0x0a, 0xe5, 0x0a, + 0xc6, 0x0b, 0x12, 0x0d, 0xf9, 0x0d, 0xcd, 0x0c, 0x54, 0x0a, 0x0e, 0x09, 0xa4, 0x07, 0xf8, 0x04, + 0x15, 0x03, 0x8e, 0x02, 0x13, 0x02, 0x17, 0x02, 0xa0, 0x01, 0xcc, 0x00, 0x1d, 0xff, 0x99, 0xfc, + 0x3f, 0xf9, 0x1a, 0xf7, 0xe4, 0xf5, 0x46, 0xf7, 0x60, 0xfa, 0xa1, 0xfc, 0xe8, 0xfe, 0x11, 0x01, + 0x6e, 0x03, 0x82, 0x04, 0x52, 0x04, 0x87, 0x03, 0x62, 0x02, 0x27, 0x02, 0xbc, 0x01, 0x68, 0x01, + 0x75, 0x01, 0x18, 0x01, 0xd7, 0xff, 0x49, 0xfd, 0x8d, 0xfa, 0xec, 0xf7, 0x6b, 0xf5, 0x99, 0xf3, + 0xeb, 0xf2, 0x39, 0xf3, 0x5d, 0xf4, 0xd0, 0xf4, 0x0c, 0xf4, 0x34, 0xf2, 0xcd, 0xef, 0x23, 0xef, + 0x47, 0xf0, 0xb7, 0xf0, 0x01, 0xf1, 0x2f, 0xf2, 0xe9, 0xf2, 0xa3, 0xf5, 0x04, 0xf8, 0xfb, 0xf7, + 0x19, 0xf9, 0xe0, 0xf9, 0x24, 0xfa, 0xfa, 0xfa, 0x1a, 0xfc, 0xfe, 0xfd, 0xd3, 0xff, 0xc2, 0x01, + 0x9c, 0x02, 0x01, 0x02, 0x35, 0x00, 0x2c, 0xfe, 0xae, 0xfc, 0xd4, 0xfc, 0x3c, 0xfe, 0xbf, 0xfe, + 0xe8, 0xff, 0x05, 0x02, 0x88, 0x03, 0x4d, 0x03, 0xeb, 0x01, 0x50, 0x02, 0xa2, 0x02, 0xe5, 0x01, + 0xa0, 0x02, 0xab, 0x04, 0xa2, 0x07, 0x29, 0x09, 0x70, 0x0a, 0xe3, 0x10, 0xe2, 0x0f, 0x1d, 0x08, + 0xd5, 0x05, 0x7e, 0x0b, 0xbc, 0x0e, 0x6a, 0x0b, 0xe6, 0x08, 0xe6, 0x09, 0xa9, 0x0d, 0xcb, 0x0d, + 0x9b, 0x0a, 0xb3, 0x07, 0x85, 0x08, 0x89, 0x09, 0x6d, 0x06, 0x63, 0x03, 0xee, 0x02, 0x0f, 0x03, + 0xaa, 0x00, 0xea, 0xff, 0x4a, 0xff, 0x86, 0xfe, 0x2a, 0xfe, 0x08, 0xfb, 0x72, 0xf7, 0x50, 0xf7, + 0x30, 0xf7, 0x70, 0xf7, 0x98, 0xf7, 0x66, 0xf8, 0x12, 0xfa, 0x6f, 0xfa, 0x5f, 0xfa, 0x7d, 0xfb, + 0x97, 0xfd, 0x49, 0x00, 0xc1, 0xff, 0x76, 0xfc, 0x9e, 0xfd, 0xf6, 0x02, 0x02, 0x05, 0x41, 0x02, + 0x09, 0x02, 0x63, 0x01, 0x94, 0x01, 0x90, 0x08, 0xf1, 0x05, 0x21, 0xfd, 0x8c, 0xfb, 0x0f, 0x0a, + 0x6f, 0x11, 0xcf, 0x0a, 0x09, 0x07, 0xc6, 0x0b, 0xff, 0x0f, 0x5e, 0x0f, 0x34, 0x0c, 0x42, 0x0b, + 0xf4, 0x0f, 0xaa, 0x12, 0x34, 0x11, 0xea, 0x0d, 0x71, 0x0d, 0xb3, 0x0c, 0x59, 0x07, 0x6b, 0x02, + 0x34, 0xff, 0xa7, 0xfc, 0xda, 0xfb, 0xbe, 0xfb, 0xf9, 0xfb, 0x7f, 0xfb, 0x3a, 0xfb, 0xed, 0xf8, + 0xef, 0xf6, 0x15, 0xf3, 0x01, 0xf0, 0x49, 0xef, 0x11, 0xf0, 0xd4, 0xf1, 0xf5, 0xf1, 0x1d, 0xf4, + 0xe4, 0xf6, 0x33, 0xf9, 0xfa, 0xf8, 0xee, 0xf9, 0x20, 0xfa, 0x46, 0xf9, 0x5c, 0xf9, 0xe7, 0xf8, + 0x27, 0xfb, 0x63, 0xfc, 0x2e, 0xfd, 0x31, 0xfb, 0x5a, 0xf8, 0xce, 0xf5, 0x63, 0xf4, 0x9b, 0xf1, + 0x10, 0xf0, 0x71, 0xf1, 0x0b, 0xf1, 0x66, 0xf1, 0x93, 0xf3, 0x6e, 0xf3, 0x07, 0xf2, 0xc0, 0xf2, + 0x91, 0xf3, 0x66, 0xf5, 0xba, 0xf6, 0x41, 0xfa, 0xfd, 0xfb, 0x91, 0x00, 0xeb, 0x05, 0xb1, 0x07, + 0x69, 0x07, 0xdc, 0x07, 0x80, 0x0b, 0xf0, 0x0b, 0x44, 0x0d, 0x03, 0x0d, 0x8d, 0x0d, 0x67, 0x0e, + 0xd7, 0x0d, 0x0a, 0x0d, 0x19, 0x0b, 0x8e, 0x08, 0x94, 0x06, 0xe4, 0x05, 0x68, 0x05, 0xdf, 0x06, + 0x4a, 0x07, 0xc2, 0x08, 0x1d, 0x0b, 0x61, 0x0a, 0x8b, 0x09, 0x52, 0x0a, 0x81, 0x08, 0x6a, 0x06, + 0x45, 0x01, 0x16, 0x04, 0xba, 0x06, 0xbd, 0x05, 0xe8, 0x03, 0x65, 0x06, 0xc0, 0x09, 0xb8, 0x09, + 0x1e, 0x08, 0x08, 0x06, 0x00, 0x06, 0x58, 0x06, 0x47, 0x07, 0xc9, 0x04, 0xe9, 0x02, 0x4b, 0x04, + 0x19, 0x04, 0xde, 0x00, 0xb8, 0x00, 0xb2, 0xfd, 0x1d, 0xfb, 0x80, 0xf9, 0xbc, 0xf7, 0x36, 0xf5, + 0xa9, 0xf2, 0x70, 0xf3, 0x4f, 0xf5, 0x23, 0xf5, 0x98, 0xf2, 0x53, 0xf6, 0x60, 0xf4, 0x1b, 0xf0, + 0x13, 0xf1, 0x10, 0xf4, 0x11, 0xf1, 0x7d, 0xf0, 0xa7, 0xf3, 0x44, 0xf5, 0xb5, 0xf6, 0x27, 0xf9, + 0xdb, 0xf7, 0xd7, 0xf8, 0x69, 0xf8, 0xf5, 0xf7, 0x7c, 0xf9, 0xcb, 0xfa, 0x8a, 0xfd, 0x77, 0x01, + 0xfb, 0x01, 0x7a, 0x05, 0x0b, 0x04, 0xbe, 0x04, 0xe0, 0x00, 0x1a, 0x02, 0xd5, 0x02, 0x35, 0x07, + 0xfb, 0x09, 0x98, 0x08, 0x08, 0x0b, 0xf2, 0x0c, 0xc1, 0x0d, 0x1b, 0x0c, 0xfa, 0x10, 0x4b, 0x10, + 0x3a, 0x10, 0x2e, 0x0f, 0x21, 0x14, 0x49, 0x15, 0xd3, 0x11, 0x73, 0x11, 0x1f, 0x12, 0x6d, 0x0d, + 0xff, 0x0a, 0xaa, 0x09, 0xee, 0x01, 0x45, 0x04, 0xa8, 0x05, 0xfa, 0x00, 0x97, 0xfd, 0x68, 0xff, + 0x10, 0x01, 0xdb, 0xf7, 0x43, 0xef, 0xc6, 0xf2, 0x72, 0xf4, 0x68, 0xf1, 0x8f, 0xee, 0x73, 0xf5, + 0xea, 0xfe, 0x9e, 0xfe, 0x64, 0xfe, 0x18, 0x01, 0x43, 0x07, 0x6f, 0x07, 0x53, 0x06, 0x32, 0x05, + 0xb0, 0x06, 0x9a, 0x07, 0xd7, 0x06, 0xa7, 0x03, 0xe7, 0x00, 0x3a, 0xfb, 0xdd, 0xfa, 0xb7, 0xf6, + 0x0d, 0xf7, 0x5a, 0xf3, 0x7c, 0xf0, 0x39, 0xf6, 0x2e, 0xf5, 0x4d, 0xf4, 0x35, 0xf1, 0x66, 0xf0, + 0xc7, 0xee, 0xde, 0xef, 0x3d, 0xf2, 0xba, 0xee, 0xc3, 0xef, 0x5b, 0xf2, 0x84, 0xfa, 0xfc, 0x00, + 0xae, 0xf8, 0x59, 0xfc, 0x42, 0xff, 0x45, 0x06, 0xd8, 0x03, 0xa2, 0xfd, 0x66, 0x01, 0xac, 0x0f, + 0x8d, 0x10, 0x8d, 0xfa, 0x61, 0xf5, 0x23, 0x01, 0x35, 0x0d, 0xe3, 0x05, 0x3c, 0xf2, 0xe8, 0xeb, + 0xc9, 0xff, 0x71, 0x09, 0x80, 0x00, 0x46, 0xf4, 0x1c, 0xf6, 0xed, 0x0b, 0xb8, 0x0c, 0xc9, 0xf9, + 0x12, 0xf6, 0xf0, 0xfc, 0x80, 0x04, 0xd3, 0x02, 0x58, 0xfb, 0x4c, 0xfe, 0xa5, 0x08, 0x90, 0x0e, + 0x06, 0x02, 0x8d, 0x05, 0xfe, 0x11, 0x36, 0x0f, 0xa9, 0x01, 0x98, 0x00, 0xb8, 0x07, 0x4c, 0x0a, + 0x84, 0x06, 0x3b, 0xfc, 0x9d, 0x01, 0x59, 0x05, 0x64, 0x08, 0x70, 0x03, 0x33, 0xf8, 0x8d, 0xf6, + 0xeb, 0x00, 0x71, 0x00, 0x61, 0xfa, 0xc0, 0xfb, 0x1c, 0xfe, 0x4e, 0xff, 0x34, 0x00, 0xd3, 0xfc, + 0x68, 0xfc, 0x71, 0xf8, 0xc5, 0xfa, 0x4f, 0xfc, 0xf6, 0xf8, 0xdf, 0xfd, 0xd9, 0xfd, 0xc0, 0xfc, + 0xa2, 0x00, 0xcd, 0x07, 0x86, 0x01, 0xcb, 0xfe, 0x6d, 0x04, 0x41, 0x06, 0x82, 0x03, 0x37, 0xff, + 0x5e, 0xff, 0x92, 0x0b, 0x01, 0x06, 0xca, 0x01, 0x51, 0x00, 0x6b, 0x01, 0xee, 0x06, 0x3a, 0x01, + 0x45, 0x02, 0xd4, 0x01, 0x6b, 0x0d, 0x14, 0x10, 0x0e, 0x03, 0xa9, 0x0b, 0x26, 0x0f, 0xdb, 0x10, + 0x61, 0x04, 0x30, 0x0b, 0x16, 0x0f, 0x11, 0x10, 0x5f, 0x12, 0xdf, 0x0e, 0x63, 0x09, 0x28, 0x0c, + 0x16, 0x0c, 0xc7, 0x01, 0x43, 0xf9, 0xea, 0xf9, 0x04, 0xfe, 0x2e, 0xfc, 0xec, 0xf5, 0xb3, 0xf2, + 0xe4, 0xfb, 0x4c, 0xf5, 0xea, 0xee, 0xde, 0xee, 0x6b, 0xef, 0xe7, 0xec, 0x01, 0xec, 0xb5, 0xf0, + 0x8e, 0xf2, 0x3c, 0xf4, 0xec, 0xf9, 0x48, 0xfc, 0xf9, 0xfc, 0x7b, 0xfb, 0x64, 0xff, 0x3c, 0xff, + 0xda, 0x02, 0x51, 0xfe, 0x48, 0x01, 0x83, 0x08, 0x8d, 0x00, 0xdc, 0x05, 0xe9, 0x00, 0x1b, 0x01, + 0x67, 0xf8, 0x60, 0xf6, 0x0b, 0xfa, 0x9f, 0xf5, 0xd2, 0xf4, 0xcb, 0xf2, 0xdc, 0xf3, 0x43, 0xf4, + 0x67, 0xf3, 0x15, 0xf5, 0x79, 0xf4, 0x81, 0xf6, 0xea, 0xf4, 0x3b, 0xf8, 0xe0, 0x00, 0xbf, 0x02, + 0x9b, 0xfe, 0x4c, 0xff, 0x84, 0x0d, 0xb8, 0x0e, 0x20, 0x0d, 0x7d, 0x05, 0x4b, 0x0d, 0x27, 0x11, + 0x83, 0x0b, 0x5b, 0x03, 0xcf, 0x06, 0x49, 0x0e, 0xfb, 0x05, 0x02, 0x05, 0xc1, 0xfc, 0xd5, 0x05, + 0xf9, 0x06, 0x17, 0x02, 0x26, 0xfa, 0x37, 0x00, 0x63, 0x09, 0x8b, 0x05, 0x8a, 0x06, 0x3d, 0x00, + 0x54, 0x02, 0xa2, 0x0a, 0x80, 0x06, 0xe8, 0x01, 0x36, 0x05, 0x51, 0x09, 0x83, 0x04, 0x59, 0x0a, + 0x68, 0x0a, 0x59, 0x0e, 0xdc, 0x07, 0xf2, 0x0c, 0x14, 0x09, 0x79, 0x08, 0xde, 0x06, 0xcf, 0x01, + 0x25, 0x07, 0xfe, 0x04, 0x13, 0x05, 0x02, 0xff, 0xa0, 0x01, 0x6d, 0x02, 0xdd, 0xfa, 0x75, 0xfe, + 0x1b, 0xf3, 0xca, 0xf6, 0xf5, 0xf3, 0x98, 0xf7, 0xc1, 0xf0, 0xe5, 0xf6, 0x34, 0xfa, 0x4d, 0xf2, + 0xeb, 0xf5, 0x34, 0xf7, 0xaa, 0xf3, 0x5b, 0xf1, 0xf0, 0xef, 0x30, 0xf6, 0x03, 0xf9, 0xc9, 0xf4, + 0x6f, 0xf3, 0x67, 0xf2, 0xb6, 0xfb, 0x54, 0xf5, 0x8f, 0xee, 0x54, 0xed, 0x47, 0xfc, 0x47, 0xfc, + 0xeb, 0xf3, 0x28, 0xf8, 0xb9, 0xfe, 0x3c, 0x09, 0xcf, 0x00, 0xc4, 0xf9, 0x2f, 0xfe, 0x6d, 0x00, + 0x3a, 0x06, 0xed, 0xfe, 0x5f, 0x00, 0xbf, 0x07, 0x12, 0x0b, 0x7b, 0x11, 0x8f, 0x0b, 0x79, 0x0c, + 0x76, 0x0f, 0xd0, 0x0e, 0x32, 0x10, 0xf9, 0x0d, 0x9a, 0x14, 0x6e, 0x17, 0x39, 0x15, 0x09, 0x13, + 0x81, 0x13, 0x2f, 0x10, 0x8c, 0x09, 0x97, 0x0b, 0x76, 0x05, 0x01, 0x05, 0xd3, 0x06, 0x87, 0x06, + 0x88, 0x03, 0x2d, 0xff, 0x8f, 0xf9, 0xaa, 0xfa, 0x93, 0xf8, 0x46, 0xf4, 0x0c, 0xee, 0x19, 0xf2, + 0x9d, 0xf9, 0x4c, 0xf5, 0xd5, 0xfa, 0xcb, 0xf4, 0x33, 0xff, 0x94, 0xfe, 0x27, 0x01, 0xbe, 0xf9, + 0x4e, 0xfb, 0xa5, 0x05, 0xdd, 0x01, 0x3d, 0xf9, 0x9b, 0xf7, 0x04, 0x03, 0xcb, 0xff, 0xd2, 0xf5, + 0xd1, 0xf2, 0x7d, 0xf7, 0x27, 0xfd, 0xf5, 0xf3, 0x59, 0xe8, 0xff, 0xf3, 0x4c, 0xf6, 0x16, 0xf5, + 0xbe, 0xee, 0x81, 0xed, 0x9b, 0xf2, 0xa8, 0xf6, 0xa7, 0xf2, 0xf3, 0xf2, 0x69, 0xf4, 0x37, 0xfa, + 0x99, 0xfc, 0xb7, 0xfe, 0x50, 0x02, 0x34, 0x05, 0x87, 0x0a, 0xa7, 0x03, 0xd1, 0x09, 0xfa, 0x0a, + 0x64, 0x0d, 0x52, 0x08, 0x6d, 0x07, 0x9e, 0x06, 0xb4, 0x0a, 0x64, 0x0b, 0x83, 0x06, 0xaa, 0xfe, + 0x0e, 0x02, 0x57, 0x09, 0xa1, 0x00, 0x27, 0xfd, 0x7a, 0xff, 0x7b, 0x08, 0x55, 0xff, 0x1f, 0x02, + 0x76, 0x08, 0x62, 0x05, 0xef, 0xff, 0x04, 0x05, 0x04, 0xfe, 0xf2, 0x06, 0x2b, 0x09, 0x22, 0x04, + 0xc4, 0x02, 0xd1, 0x03, 0x1b, 0x0d, 0x6a, 0x06, 0x6f, 0x01, 0x9e, 0xfc, 0x06, 0xff, 0x03, 0xfb, + 0x72, 0xff, 0x49, 0xfe, 0x5d, 0xf5, 0x18, 0xfd, 0xff, 0xfa, 0x84, 0x02, 0xe2, 0xf9, 0xeb, 0xfb, + 0xb8, 0xf6, 0x71, 0xfd, 0xf9, 0xfa, 0xb2, 0xf4, 0x6e, 0xff, 0x2d, 0xfd, 0x3b, 0x04, 0x04, 0xfb, + 0x91, 0x04, 0x27, 0x01, 0x09, 0x01, 0xb5, 0x01, 0x09, 0xf9, 0xed, 0x02, 0x0f, 0x01, 0xdc, 0x02, + 0xd1, 0xfd, 0x35, 0x04, 0x32, 0x0a, 0xb7, 0xfe, 0x84, 0x04, 0xf3, 0xfd, 0xab, 0x09, 0x02, 0x06, + 0xf1, 0xfd, 0xa2, 0x03, 0xca, 0x0b, 0xcf, 0x0f, 0x94, 0x03, 0xa6, 0x07, 0x38, 0x05, 0x8a, 0x09, + 0x6a, 0x07, 0x08, 0x05, 0x9d, 0x08, 0x23, 0x0a, 0xeb, 0x0e, 0xab, 0x10, 0x1c, 0x0e, 0xf4, 0x0b, + 0x09, 0x10, 0x58, 0x0d, 0xea, 0x13, 0x30, 0x04, 0x9b, 0x08, 0xb4, 0x05, 0x62, 0x12, 0xdb, 0x08, + 0x25, 0xfe, 0xd8, 0xff, 0x20, 0xfd, 0xba, 0xfb, 0x6a, 0xf8, 0x13, 0xf6, 0x6c, 0xef, 0x81, 0xf3, + 0x86, 0xf6, 0x95, 0xf8, 0x6e, 0xec, 0xd7, 0xec, 0x30, 0xeb, 0x2b, 0xf3, 0xc8, 0xeb, 0xf9, 0xea, + 0xa6, 0xe2, 0xa0, 0xef, 0xdb, 0xf1, 0x67, 0xf8, 0x25, 0xf1, 0xa5, 0xf4, 0xb5, 0xfa, 0x36, 0xfc, + 0x38, 0xff, 0xe3, 0xf9, 0xbf, 0x00, 0xaa, 0xfa, 0xd2, 0x03, 0x3c, 0xff, 0xcb, 0xfe, 0xa9, 0xfb, + 0x36, 0x01, 0xc2, 0x02, 0x24, 0xf8, 0xf1, 0xf8, 0x3a, 0xf8, 0x4c, 0xf8, 0xdf, 0xf8, 0x92, 0xf7, + 0x44, 0xf5, 0xf2, 0xf9, 0x4b, 0xfa, 0xbb, 0xfb, 0x2a, 0xfb, 0x8e, 0xfe, 0x3e, 0xfd, 0x4d, 0xfb, + 0xc8, 0x05, 0x17, 0x02, 0xf9, 0x07, 0x82, 0x05, 0xf0, 0x0e, 0x9b, 0x0c, 0xce, 0x0a, 0xc8, 0x12, + 0x80, 0x0a, 0x83, 0x09, 0xc0, 0x02, 0x21, 0x0b, 0x54, 0x06, 0x0b, 0x01, 0xc3, 0x00, 0x0c, 0x0b, + 0x97, 0x01, 0xd1, 0xfc, 0xc0, 0xf8, 0xc5, 0x05, 0xd0, 0x02, 0xdb, 0xfd, 0x9f, 0xfe, 0x64, 0x02, + 0xf8, 0x10, 0x3c, 0x07, 0x89, 0x00, 0xd3, 0x04, 0xf0, 0x0c, 0x2d, 0x0d, 0x29, 0x04, 0x5f, 0x07, + 0xe4, 0x0a, 0xc0, 0x0a, 0x29, 0x11, 0x9e, 0x0a, 0x2f, 0x0b, 0x9b, 0x07, 0x7a, 0x0c, 0x50, 0x0a, + 0x91, 0xfa, 0xe6, 0x02, 0x0a, 0x07, 0x48, 0x03, 0x61, 0xfa, 0x14, 0xfa, 0x1e, 0x03, 0xc6, 0xff, + 0x33, 0x00, 0xd9, 0xee, 0x2b, 0xf4, 0x74, 0xf6, 0xee, 0x00, 0xac, 0xf7, 0xfc, 0xf3, 0xc1, 0xf6, + 0x6f, 0x01, 0xb5, 0x06, 0x52, 0xf8, 0xdc, 0xf8, 0xec, 0xef, 0x25, 0xfe, 0x64, 0xf8, 0xd7, 0xfa, + 0xa5, 0xef, 0x95, 0xf5, 0x28, 0xf6, 0x31, 0xee, 0x2c, 0xf5, 0x1e, 0xef, 0xe1, 0xed, 0x0a, 0xf2, + 0x8f, 0xef, 0xe5, 0xf1, 0xd1, 0xf4, 0x83, 0xfa, 0x45, 0xf9, 0x89, 0xfc, 0x77, 0xfe, 0x75, 0xf9, + 0x04, 0x07, 0xb1, 0x06, 0xe5, 0xfe, 0xdd, 0x02, 0xff, 0x01, 0x0a, 0x0f, 0x82, 0x16, 0x32, 0x0f, + 0xf8, 0x06, 0x04, 0x0c, 0x82, 0x14, 0x30, 0x1b, 0xba, 0x10, 0x99, 0x08, 0x65, 0x08, 0x19, 0x1c, + 0x32, 0x1c, 0x83, 0x0d, 0xa7, 0x02, 0x2e, 0x08, 0xfe, 0x11, 0xb8, 0x06, 0x6b, 0xf9, 0xeb, 0xff, + 0x57, 0xff, 0x29, 0x01, 0x8a, 0xf8, 0x11, 0xf7, 0xc4, 0xf7, 0x79, 0xf9, 0xdf, 0xf7, 0x02, 0xef, + 0x5e, 0xec, 0x6b, 0xf7, 0x8c, 0xff, 0x3e, 0xf9, 0xa1, 0xf2, 0x6d, 0xf2, 0x5a, 0x03, 0x3f, 0x07, + 0xd4, 0x05, 0xb5, 0xf2, 0x74, 0xf9, 0x3e, 0x04, 0x5b, 0x05, 0xf8, 0xfb, 0xaf, 0xf3, 0x8f, 0xf6, + 0x1e, 0xfd, 0xae, 0xfd, 0xd3, 0x02, 0x14, 0xec, 0xf4, 0xef, 0x38, 0x00, 0x53, 0xf2, 0x7e, 0xf5, + 0xe9, 0xec, 0x40, 0xfa, 0x4f, 0xfe, 0x25, 0xf7, 0xcc, 0xf1, 0x20, 0xf8, 0x0c, 0x08, 0xd0, 0x00, + 0x1e, 0xfa, 0xfe, 0xf7, 0xf5, 0x03, 0x00, 0x09, 0xc1, 0x0c, 0x7d, 0x06, 0xa8, 0x01, 0x74, 0x13, + 0x4d, 0x0d, 0x84, 0x0e, 0x41, 0x06, 0xa5, 0x01, 0xf4, 0x09, 0xaa, 0x0b, 0x92, 0x06, 0xbb, 0xfe, + 0x0f, 0x01, 0xa9, 0x06, 0x61, 0x00, 0x79, 0xfb, 0xa2, 0xfe, 0x27, 0xfa, 0xb7, 0x00, 0xaa, 0x01, + 0x4b, 0xff, 0xfb, 0x00, 0xf2, 0x06, 0xee, 0x0a, 0x23, 0x09, 0x87, 0xfd, 0x23, 0x06, 0x68, 0x0e, + 0x6c, 0x06, 0x3d, 0x03, 0x03, 0xff, 0xb6, 0x06, 0x69, 0x0d, 0xb7, 0x03, 0x99, 0xf7, 0x2c, 0xf8, + 0x05, 0xfb, 0xb7, 0x00, 0x35, 0xf4, 0xe4, 0xee, 0x0a, 0xef, 0x7d, 0x00, 0xf2, 0xfd, 0x40, 0xf8, + 0x41, 0xf1, 0xee, 0xf4, 0xf6, 0x03, 0x4f, 0xfd, 0x78, 0xf8, 0xda, 0xf0, 0xb7, 0x08, 0xb6, 0x0d, + 0x45, 0x08, 0x07, 0xf9, 0xe2, 0xfd, 0xf9, 0x10, 0xd5, 0x18, 0xbb, 0x09, 0x04, 0xf4, 0xe1, 0xf5, + 0x72, 0x09, 0xdd, 0x13, 0x6e, 0x01, 0xdd, 0xf7, 0xfb, 0xfc, 0x32, 0x05, 0x39, 0x00, 0x54, 0x06, + 0xde, 0xfb, 0x92, 0xf5, 0x61, 0x03, 0xbf, 0x0e, 0xfd, 0x00, 0x4c, 0xfa, 0xe7, 0xff, 0xa4, 0x03, + 0x58, 0x0a, 0xbb, 0x09, 0x48, 0x07, 0x6a, 0xfa, 0x42, 0x0a, 0x5c, 0x0c, 0xbb, 0x0a, 0xdf, 0x05, + 0x00, 0x07, 0x57, 0x13, 0xdf, 0x08, 0x49, 0x04, 0x38, 0xfd, 0x0c, 0x0f, 0x78, 0x0a, 0x9b, 0x00, + 0x02, 0xfb, 0x79, 0x02, 0xad, 0x06, 0x73, 0x01, 0x71, 0xf5, 0x24, 0xee, 0x4d, 0xfe, 0xdb, 0xf9, + 0xe4, 0xf8, 0x2c, 0xec, 0xbe, 0xfc, 0xdd, 0xff, 0x1c, 0xf5, 0xef, 0xf4, 0xcc, 0xf5, 0xef, 0xfc, + 0x44, 0xf1, 0x36, 0xfb, 0x2c, 0xf3, 0x24, 0x01, 0xd7, 0xfc, 0x1c, 0xfc, 0x27, 0x00, 0x16, 0xfa, + 0x36, 0x0b, 0x8b, 0x06, 0xc5, 0x08, 0x40, 0xfd, 0x92, 0x00, 0x76, 0x04, 0xbb, 0x02, 0x54, 0x02, + 0x59, 0xf5, 0xf6, 0x02, 0xa7, 0x03, 0x3b, 0x02, 0x21, 0xec, 0x13, 0xfe, 0xc6, 0xf7, 0x36, 0xf2, + 0x7c, 0xf6, 0x72, 0xe7, 0x17, 0xf9, 0xa0, 0xf3, 0x71, 0xfc, 0x91, 0xf6, 0x3d, 0xfa, 0x57, 0xf8, + 0x8f, 0xf8, 0x4a, 0x03, 0x84, 0xf7, 0x38, 0x06, 0x95, 0xf8, 0x0b, 0x06, 0xe2, 0x0b, 0x22, 0x08, + 0xba, 0x09, 0x39, 0xff, 0x23, 0x0a, 0xf3, 0xf8, 0x8c, 0x09, 0xf4, 0x02, 0x1d, 0x01, 0x94, 0x01, + 0x4e, 0xfc, 0x55, 0x01, 0x3f, 0xfa, 0xeb, 0x06, 0xa2, 0xfc, 0x98, 0xf9, 0x63, 0xf8, 0xfd, 0x01, + 0xb3, 0x07, 0xcd, 0xff, 0xfa, 0x07, 0xb8, 0x08, 0xf6, 0x09, 0xc2, 0x04, 0x9b, 0x09, 0xef, 0x08, + 0xed, 0x08, 0xa0, 0x08, 0x38, 0x08, 0xee, 0x0e, 0x36, 0x03, 0x5b, 0x0d, 0xa4, 0x06, 0xd5, 0x08, + 0x65, 0xfc, 0xf8, 0xfb, 0x80, 0x00, 0x01, 0xfd, 0xd0, 0x01, 0xcb, 0xff, 0xc1, 0xf4, 0x80, 0xf1, + 0x6b, 0xfd, 0x25, 0x06, 0x3e, 0xf6, 0xff, 0xee, 0xf9, 0xf5, 0x7f, 0x00, 0xff, 0xfc, 0x57, 0xfd, + 0xd4, 0xfd, 0x01, 0xfe, 0x95, 0x04, 0x95, 0x08, 0x85, 0xfc, 0xf4, 0xfd, 0xe2, 0x09, 0xe6, 0xf8, + 0x72, 0xf8, 0xe4, 0xfa, 0x9e, 0xfb, 0x9f, 0xf7, 0xb1, 0xf6, 0x76, 0xf1, 0x2c, 0xf2, 0xee, 0xf7, + 0xa7, 0xef, 0x7f, 0xf0, 0x37, 0xf9, 0xe2, 0xf9, 0xe8, 0xee, 0x26, 0xf5, 0x2a, 0x02, 0xdf, 0x09, + 0xa4, 0x01, 0x30, 0xf1, 0x7d, 0x02, 0xe2, 0x13, 0xcf, 0x0e, 0xed, 0x04, 0xa0, 0xfb, 0x41, 0x15, + 0x10, 0x1b, 0x80, 0x16, 0xa0, 0x08, 0x82, 0x0d, 0xd2, 0x19, 0xe7, 0x17, 0x10, 0x0d, 0xdc, 0x07, + 0x6c, 0x0b, 0xd0, 0x1c, 0x48, 0x12, 0xe0, 0xfc, 0x33, 0x03, 0xfa, 0x17, 0x7c, 0x12, 0xff, 0xf8, + 0x67, 0xf7, 0x6f, 0x04, 0xc3, 0x0e, 0xd5, 0xfd, 0x45, 0xf4, 0xbc, 0xf4, 0x2d, 0x03, 0x31, 0x0a, + 0x32, 0xf7, 0xb5, 0xeb, 0xf2, 0xfa, 0xa2, 0x05, 0x16, 0x01, 0x7c, 0xee, 0x37, 0xf7, 0x83, 0x02, + 0x74, 0x03, 0xad, 0x07, 0x5f, 0xed, 0x7b, 0x00, 0xd5, 0x06, 0x66, 0xfc, 0x59, 0xef, 0xd5, 0xf2, + 0xfd, 0xff, 0xca, 0xfd, 0x18, 0xfc, 0x30, 0xef, 0xf7, 0xf8, 0xe2, 0x06, 0xf0, 0xf7, 0x73, 0xe9, + 0xd8, 0xf0, 0x6b, 0xfb, 0xc0, 0xfd, 0x9c, 0xee, 0x85, 0xf0, 0x41, 0xf7, 0xb0, 0x04, 0x11, 0xf7, + 0xe2, 0xfc, 0x28, 0xf8, 0xf9, 0xf7, 0x34, 0x0a, 0x11, 0x04, 0x40, 0x01, 0x3e, 0xf7, 0x5a, 0x10, + 0x91, 0x14, 0x00, 0x09, 0xc1, 0xfd, 0x6a, 0x01, 0xc0, 0x0e, 0x00, 0x0e, 0x6a, 0xff, 0x14, 0xff, + 0xcc, 0x05, 0xb5, 0x0a, 0x75, 0x06, 0x93, 0xf0, 0x2f, 0xfe, 0x02, 0x02, 0xad, 0x02, 0xa5, 0x02, + 0xbe, 0xe9, 0x35, 0xf6, 0xdb, 0x10, 0x53, 0x17, 0xdb, 0xfb, 0xce, 0xef, 0xa0, 0x04, 0x17, 0x15, + 0x0b, 0x17, 0x38, 0xf3, 0x48, 0xf6, 0x29, 0x07, 0xae, 0x10, 0x98, 0x05, 0xed, 0xfa, 0x2c, 0xf8, + 0x3d, 0xfa, 0x4c, 0xf6, 0xdf, 0xf6, 0xfb, 0xfb, 0x25, 0xf8, 0xd4, 0xf3, 0xdc, 0xee, 0x82, 0xf3, + 0x6b, 0xfd, 0x14, 0x01, 0x72, 0xf7, 0xf4, 0xee, 0x1a, 0xf9, 0xf2, 0xfd, 0xa1, 0xf7, 0x30, 0x03, + 0xc9, 0x01, 0x92, 0xfc, 0x4c, 0xfe, 0x12, 0x06, 0xab, 0x0f, 0x49, 0x16, 0x0a, 0x00, 0xfe, 0xfc, + 0x57, 0x02, 0xb0, 0x0b, 0x69, 0x15, 0x7d, 0xf9, 0x3a, 0xf0, 0x3a, 0xfb, 0xab, 0x0b, 0xa0, 0x0c, + 0xb0, 0xf1, 0x20, 0xf7, 0xe8, 0xfe, 0x36, 0x03, 0xc3, 0xf9, 0x3c, 0xf7, 0x23, 0xfe, 0xb5, 0x09, + 0xaa, 0x04, 0x05, 0xfe, 0x85, 0x07, 0x75, 0x0b, 0xa7, 0x07, 0x11, 0x09, 0x75, 0x0b, 0xae, 0x03, + 0x84, 0x12, 0xd6, 0x10, 0x19, 0x0e, 0xde, 0x0d, 0x51, 0x06, 0x2c, 0x10, 0x74, 0x08, 0xb3, 0x04, + 0x2c, 0xfc, 0x57, 0x0a, 0x8f, 0x06, 0x0d, 0xff, 0x1a, 0xfa, 0x37, 0xf7, 0xab, 0x01, 0x32, 0x05, + 0x9d, 0xfd, 0xf2, 0xf3, 0xb2, 0xf2, 0x14, 0x00, 0x0b, 0x04, 0xe5, 0xfa, 0xd1, 0xf6, 0x74, 0xed, + 0x73, 0xf9, 0xec, 0x01, 0x1c, 0xfc, 0x42, 0xf9, 0xfe, 0xf2, 0x6d, 0xfc, 0xa2, 0xf6, 0x53, 0xf9, + 0x53, 0x08, 0x40, 0x00, 0x60, 0x01, 0x3c, 0xf7, 0x71, 0x04, 0x5e, 0x04, 0xd6, 0xfd, 0xe3, 0x05, + 0x39, 0xf3, 0x1f, 0xf6, 0x16, 0x04, 0x82, 0x0a, 0xde, 0xfb, 0xb3, 0xfa, 0x99, 0xf1, 0x86, 0xf4, + 0x87, 0xfe, 0x2c, 0xf9, 0xee, 0xfb, 0xa4, 0xeb, 0xaa, 0xec, 0x95, 0x02, 0x32, 0xfe, 0xc6, 0xf4, + 0x73, 0xfa, 0x91, 0x04, 0x8b, 0xfe, 0x24, 0xf5, 0xe1, 0xf6, 0xca, 0xfc, 0x35, 0x01, 0x39, 0x06, + 0xb6, 0xfb, 0xeb, 0xfa, 0x9c, 0x07, 0x32, 0x0c, 0xdb, 0x06, 0x33, 0xff, 0xd8, 0xf9, 0xcf, 0x06, + 0x51, 0x0c, 0x13, 0x07, 0xe0, 0x02, 0x39, 0xfc, 0x6d, 0x02, 0x9a, 0x03, 0x29, 0x0b, 0x60, 0xfe, + 0x64, 0x05, 0x71, 0x06, 0x8b, 0x02, 0x29, 0x0a, 0x5c, 0x0c, 0xbd, 0x0e, 0xc7, 0x0d, 0x67, 0x12, + 0xd9, 0x01, 0x50, 0x04, 0x95, 0x11, 0xc5, 0x0d, 0x51, 0x0d, 0x5e, 0x02, 0x08, 0xf9, 0xff, 0x04, + 0x31, 0x0b, 0xe6, 0x00, 0x87, 0xf8, 0x64, 0xf4, 0x56, 0xf5, 0x68, 0xfc, 0x47, 0xf8, 0xe1, 0xf7, + 0x2d, 0xf2, 0x0a, 0xee, 0xac, 0xf1, 0x93, 0xf9, 0x93, 0xfc, 0x33, 0xf1, 0x8a, 0xf5, 0x44, 0xf5, + 0x77, 0xf4, 0x66, 0xff, 0xa0, 0x03, 0xb2, 0x03, 0x0b, 0x01, 0x39, 0xfa, 0xce, 0xfd, 0xfd, 0x06, + 0x82, 0x0d, 0xfc, 0xfc, 0x4b, 0xf2, 0xaa, 0xf4, 0x30, 0xfd, 0x27, 0x00, 0x4c, 0xfb, 0xc9, 0xf6, + 0xbe, 0xef, 0xb6, 0xef, 0x8f, 0xfc, 0x14, 0x06, 0x13, 0xfb, 0x4c, 0xf2, 0xd0, 0xf7, 0xd9, 0xfd, + 0xd8, 0x07, 0xdd, 0x06, 0x5c, 0x0d, 0x06, 0x08, 0x8d, 0x03, 0x22, 0x0d, 0x5d, 0x16, 0xb7, 0x1c, + 0x83, 0x08, 0x65, 0x05, 0x16, 0x11, 0x7a, 0x1c, 0x99, 0x18, 0x52, 0x12, 0x03, 0x09, 0xd0, 0x07, + 0xd9, 0x0b, 0x9b, 0x09, 0xac, 0x0f, 0x38, 0x04, 0xbf, 0x01, 0x2b, 0xfb, 0x44, 0x03, 0xff, 0x07, + 0x0f, 0xff, 0x7d, 0xf9, 0xc4, 0xf2, 0x2d, 0xf5, 0xd5, 0xf8, 0x16, 0xfa, 0x02, 0xf9, 0x3c, 0xf3, + 0x42, 0xee, 0xef, 0xf1, 0xd8, 0x02, 0xae, 0xfc, 0xe4, 0xf2, 0x0c, 0xee, 0xfa, 0xf3, 0x5a, 0xff, + 0xd7, 0xf8, 0x90, 0xfa, 0x4b, 0xf7, 0xbf, 0xf7, 0x8d, 0x00, 0x19, 0xfc, 0x70, 0xfd, 0x01, 0xf6, + 0x5f, 0xf3, 0x2d, 0xfa, 0xf3, 0xf9, 0x05, 0x01, 0x94, 0xfe, 0x5b, 0xfd, 0x54, 0xfc, 0xd5, 0xfb, + 0xae, 0x03, 0xaa, 0xff, 0x75, 0xfd, 0xd6, 0xf7, 0x44, 0xfe, 0xda, 0x07, 0xd7, 0x02, 0x42, 0x06, + 0x43, 0x05, 0x8b, 0x04, 0xa0, 0x05, 0x49, 0x03, 0x12, 0x06, 0xa9, 0x0b, 0x4b, 0xff, 0xdb, 0x00, + 0xee, 0x05, 0x8a, 0x0c, 0x21, 0x0b, 0xe4, 0x05, 0xb9, 0x02, 0xc9, 0x01, 0xf6, 0x07, 0xda, 0x05, + 0xaf, 0x07, 0x45, 0xfc, 0xf0, 0x00, 0xbe, 0x03, 0x72, 0xf9, 0x80, 0x00, 0x8c, 0xfe, 0x59, 0xf9, + 0xc5, 0xf2, 0xfa, 0xfc, 0x03, 0x00, 0x78, 0xfc, 0xd0, 0x00, 0xc0, 0xfb, 0xcf, 0x02, 0x87, 0x09, + 0xb4, 0x04, 0x12, 0x03, 0xf9, 0x03, 0x17, 0x00, 0x69, 0x09, 0x6b, 0x08, 0xbb, 0x04, 0x29, 0xf8, + 0x3d, 0xf6, 0x88, 0x04, 0xf5, 0xfe, 0x87, 0xfd, 0x14, 0xf7, 0x62, 0xf3, 0xab, 0xfa, 0x4b, 0xff, + 0x21, 0xf8, 0xa0, 0xf7, 0x2e, 0xf7, 0x56, 0xfd, 0x7e, 0xff, 0xea, 0xfd, 0x03, 0x01, 0x07, 0xf9, + 0xab, 0x01, 0xa9, 0x00, 0xe2, 0x03, 0x74, 0x0b, 0x14, 0x08, 0xca, 0x09, 0xa6, 0x08, 0x8a, 0x06, + 0x1c, 0x10, 0xee, 0x07, 0x11, 0x08, 0xc3, 0x0b, 0x30, 0xfd, 0x8d, 0xfe, 0x8b, 0xfb, 0x07, 0xfb, + 0x88, 0x03, 0xa7, 0xfd, 0xce, 0xf2, 0xd9, 0xf7, 0xcb, 0xfd, 0xbe, 0xfd, 0xbe, 0xf9, 0xce, 0xee, + 0xde, 0xf2, 0x84, 0xfc, 0x09, 0x0a, 0xd2, 0x03, 0xad, 0x00, 0x36, 0x06, 0x92, 0x04, 0xff, 0x0a, + 0x50, 0x07, 0x3d, 0x0c, 0x4b, 0x0d, 0x53, 0x0e, 0x33, 0x0d, 0xab, 0x09, 0x1c, 0x14, 0x34, 0x0d, + 0x5c, 0x05, 0x65, 0x01, 0xd1, 0x01, 0x8a, 0x03, 0x57, 0x02, 0x80, 0x06, 0x16, 0x02, 0x34, 0xf6, + 0x5d, 0xf7, 0xca, 0x01, 0xb3, 0x02, 0x65, 0xff, 0x90, 0xf6, 0x09, 0xfd, 0x22, 0xfc, 0xc7, 0xfb, + 0x2c, 0xfc, 0x40, 0xf9, 0x34, 0xff, 0x95, 0x00, 0xa6, 0xf9, 0x12, 0xfb, 0x9f, 0xfc, 0x57, 0xfe, + 0xcc, 0xf8, 0xd1, 0xf6, 0xbb, 0xf7, 0x45, 0xfb, 0x07, 0x04, 0x62, 0xfc, 0x14, 0xf8, 0xce, 0xf6, + 0x17, 0xf5, 0xae, 0xf9, 0x4d, 0xf6, 0x06, 0xfa, 0x18, 0x02, 0x9c, 0xfa, 0xde, 0xf1, 0xd0, 0xfc, + 0xc0, 0xf9, 0xd6, 0xf7, 0x9a, 0xf8, 0xb9, 0xf6, 0x39, 0xf5, 0x8b, 0xf5, 0x28, 0xfb, 0xbe, 0xfd, + 0x04, 0x00, 0xf7, 0xfa, 0xd2, 0xf6, 0xdc, 0xff, 0x46, 0x01, 0xff, 0xfd, 0xf6, 0x00, 0x4a, 0xfc, + 0x5e, 0xfe, 0x31, 0x03, 0xc9, 0xfe, 0x0e, 0x03, 0x92, 0x02, 0x61, 0xfd, 0xa3, 0x06, 0x73, 0x03, + 0x6d, 0x02, 0x4f, 0x04, 0xae, 0x01, 0x2f, 0x09, 0x3d, 0x05, 0x24, 0xfe, 0x92, 0xfd, 0xf0, 0x04, + 0x6d, 0x06, 0x32, 0xfe, 0x59, 0x02, 0x7b, 0x05, 0x64, 0x02, 0xc8, 0x0e, 0xee, 0x07, 0xbb, 0x03, + 0xa9, 0x0a, 0x12, 0x0a, 0x74, 0x0e, 0xb2, 0x0d, 0xd1, 0x08, 0x4c, 0x08, 0x10, 0x06, 0x78, 0x03, + 0x18, 0x01, 0x7f, 0x00, 0xe6, 0x03, 0xeb, 0xfd, 0x6d, 0x01, 0xd2, 0xfd, 0xf9, 0xf4, 0x53, 0xfb, + 0x12, 0xfd, 0x2e, 0xf9, 0x26, 0xf7, 0x34, 0xf4, 0x55, 0xf7, 0x98, 0xfd, 0x34, 0xfd, 0xc3, 0xf3, + 0x27, 0xfb, 0x58, 0x02, 0x43, 0xfe, 0x19, 0x01, 0xa9, 0x01, 0xb2, 0x02, 0x7d, 0x0a, 0xde, 0x10, + 0x4a, 0x0a, 0xc9, 0x04, 0x5e, 0x03, 0x09, 0x0b, 0xbd, 0x08, 0x63, 0xfc, 0xa9, 0xf8, 0xfb, 0xf6, + 0xd5, 0xfe, 0x0f, 0x08, 0xf0, 0xfc, 0x73, 0xef, 0xfd, 0xf4, 0xf7, 0xfd, 0x20, 0xfd, 0xbb, 0xf6, + 0xf4, 0xff, 0x6c, 0x01, 0x1d, 0xfa, 0x25, 0x02, 0xac, 0x06, 0x7d, 0x0a, 0x1a, 0x07, 0xba, 0x07, + 0x03, 0x09, 0xc6, 0x08, 0xa1, 0x12, 0xb7, 0x0d, 0x31, 0x07, 0xae, 0x08, 0x01, 0x0b, 0x1f, 0x0b, + 0x2b, 0x10, 0x09, 0x04, 0x71, 0xfe, 0xd1, 0xff, 0x9c, 0xfb, 0x86, 0x04, 0x66, 0xff, 0xb2, 0xfc, + 0x04, 0xfd, 0x4e, 0xf7, 0x53, 0xfd, 0x75, 0x01, 0x38, 0xf1, 0xa5, 0xf8, 0x73, 0xf7, 0x20, 0xf1, + 0xb1, 0xfe, 0x47, 0xf8, 0xbb, 0xf5, 0xb4, 0xf8, 0x3e, 0xfd, 0x19, 0xf9, 0xdd, 0xf5, 0xab, 0xfe, + 0x45, 0xfe, 0xe9, 0xf7, 0x25, 0xfa, 0xf9, 0xfb, 0x96, 0xfc, 0x19, 0xfc, 0x5c, 0xf6, 0x87, 0xfa, + 0x64, 0xf5, 0xa7, 0xfb, 0x9f, 0x03, 0x96, 0xf7, 0x3b, 0xf3, 0x70, 0xf7, 0xd8, 0x02, 0x13, 0x06, + 0x9e, 0xf9, 0x43, 0xfb, 0x9c, 0xfe, 0x9e, 0xfe, 0x9c, 0xfd, 0x2e, 0xf9, 0x3a, 0xff, 0x84, 0x00, + 0x98, 0xfe, 0x89, 0xfa, 0xb2, 0x01, 0x1f, 0x07, 0xda, 0x02, 0xe7, 0x01, 0x81, 0xf3, 0x13, 0xf6, + 0x93, 0x09, 0x3e, 0x0b, 0x99, 0x02, 0x0e, 0xf7, 0x3a, 0xf5, 0xa3, 0x06, 0x4e, 0x0d, 0xb1, 0x04, + 0xec, 0x00, 0x11, 0xfe, 0xa7, 0x04, 0x53, 0x0c, 0x8c, 0x03, 0xcb, 0xfd, 0xf9, 0xfb, 0x08, 0x02, + 0x40, 0x02, 0x0e, 0x08, 0xe5, 0x05, 0x22, 0xfb, 0x8f, 0x05, 0x86, 0x09, 0x44, 0x05, 0x91, 0x07, + 0xaf, 0x05, 0x99, 0x0b, 0xa1, 0x0e, 0x50, 0x0d, 0xe0, 0x0c, 0x7e, 0xfe, 0x87, 0x08, 0x1c, 0x09, + 0x1a, 0x04, 0x9c, 0xfb, 0x8f, 0xfc, 0xe2, 0x07, 0x5e, 0xfd, 0x1e, 0xfa, 0xad, 0xf5, 0x3e, 0xfa, + 0x51, 0xf6, 0x6b, 0xf9, 0x45, 0xfc, 0x6a, 0xf4, 0xa6, 0xf6, 0xae, 0xf3, 0xc0, 0xf1, 0xc6, 0xf8, + 0xe7, 0xf9, 0xc1, 0xf9, 0x65, 0xf8, 0xde, 0xf5, 0x5c, 0xfd, 0x20, 0xfc, 0x45, 0x01, 0xe3, 0x03, + 0x99, 0xfd, 0xd7, 0x00, 0xa3, 0x01, 0xc8, 0x06, 0x1a, 0x02, 0xb3, 0xfc, 0x68, 0xf7, 0xfb, 0xf8, + 0xcd, 0xf9, 0x88, 0xf6, 0xc5, 0xfa, 0x81, 0x02, 0x2f, 0xff, 0x90, 0xf0, 0xf2, 0xf6, 0xbe, 0xf8, + 0x4c, 0xf9, 0xfb, 0x00, 0x68, 0xfb, 0x7a, 0xff, 0x1e, 0x07, 0xff, 0x0e, 0x6b, 0x12, 0x8e, 0x04, + 0x67, 0x0b, 0xfb, 0x14, 0x17, 0x16, 0x48, 0x17, 0x7b, 0x12, 0x7b, 0x15, 0x49, 0x17, 0x14, 0x16, + 0x20, 0x17, 0x0b, 0x12, 0x29, 0x0a, 0x99, 0x0a, 0xfd, 0x09, 0x70, 0x0c, 0x9b, 0x07, 0x53, 0x04, + 0xd8, 0x03, 0xda, 0x04, 0x8b, 0x03, 0x5f, 0xfd, 0xc5, 0x00, 0x17, 0x03, 0x2f, 0x00, 0x32, 0xf8, + 0x52, 0x02, 0x29, 0xfb, 0x49, 0xfd, 0x81, 0x02, 0x58, 0xf6, 0xf1, 0xf8, 0xe4, 0xf5, 0x8b, 0xf7, + 0x8c, 0xfa, 0x31, 0xf8, 0xdc, 0xf2, 0xc2, 0xf4, 0x93, 0xf7, 0x79, 0xf6, 0xd4, 0xf2, 0x07, 0xf7, + 0x60, 0xf8, 0x3c, 0xf0, 0x91, 0xf3, 0x81, 0xf2, 0xe1, 0xee, 0x59, 0xf9, 0x3e, 0xf7, 0x1b, 0xfb, + 0x35, 0xfa, 0x3e, 0xf7, 0x69, 0xfc, 0xe9, 0xf6, 0xac, 0xfd, 0x93, 0xfe, 0x02, 0xfe, 0x95, 0x00, + 0xe9, 0x00, 0xce, 0x02, 0xe4, 0xfc, 0x21, 0x01, 0x48, 0x09, 0x58, 0x07, 0xd1, 0x02, 0xe9, 0xff, + 0x6a, 0x08, 0xa9, 0x04, 0xd1, 0x00, 0xb1, 0x05, 0xf6, 0xfc, 0x64, 0x00, 0x86, 0x08, 0x5f, 0x0c, + 0x6a, 0x06, 0xf5, 0xfd, 0xa2, 0x01, 0x85, 0x03, 0x1c, 0x0d, 0x7b, 0x09, 0xbf, 0x02, 0x96, 0x05, + 0x21, 0x02, 0x00, 0x08, 0x3e, 0x08, 0xe7, 0x02, 0x02, 0x04, 0xeb, 0x02, 0x09, 0x04, 0x21, 0x02, + 0x33, 0x02, 0x01, 0x02, 0xa7, 0xff, 0xad, 0x05, 0xc0, 0xff, 0xdd, 0x02, 0x26, 0x00, 0x12, 0xfa, + 0x93, 0x01, 0x40, 0xf9, 0x69, 0xf4, 0x9b, 0xef, 0x4d, 0xf0, 0x61, 0xf6, 0x18, 0xfb, 0x76, 0xf2, + 0x03, 0xec, 0x05, 0xf5, 0xc4, 0xf3, 0x69, 0xed, 0x9d, 0xef, 0xa1, 0xf2, 0xde, 0xef, 0x46, 0xfc, + 0xa4, 0x00, 0x8a, 0xf6, 0x1e, 0xf7, 0xd4, 0xff, 0x39, 0x07, 0x12, 0x05, 0x2f, 0x01, 0x41, 0x0c, + 0xc4, 0x0d, 0x3c, 0x0c, 0xfa, 0x15, 0x0b, 0x0e, 0x00, 0x08, 0xe6, 0x0e, 0x87, 0x0a, 0x71, 0x09, + 0xc5, 0x00, 0xb7, 0xfb, 0x22, 0x04, 0x50, 0x0b, 0xa5, 0x06, 0x6b, 0xf8, 0xd2, 0xfd, 0xf2, 0x02, + 0xeb, 0x01, 0xd3, 0x06, 0x59, 0x03, 0x06, 0xfa, 0x3e, 0xf9, 0x25, 0x06, 0xdf, 0x10, 0x57, 0x0e, + 0x4e, 0x06, 0x93, 0x07, 0xfe, 0x0b, 0x68, 0x0f, 0xf0, 0x13, 0xd4, 0x09, 0x2e, 0x09, 0xbd, 0x10, + 0x44, 0x08, 0x34, 0x09, 0xaf, 0x09, 0x19, 0x0a, 0xbd, 0x07, 0x68, 0xfd, 0xe5, 0xf7, 0x0e, 0xfb, + 0xa1, 0x00, 0x3e, 0xfd, 0xd1, 0xf9, 0xf0, 0xf2, 0x59, 0xf2, 0x1f, 0x01, 0x6b, 0xff, 0x66, 0xfa, + 0xbf, 0xf9, 0x5d, 0xf7, 0x32, 0xf7, 0xee, 0xfb, 0x80, 0x06, 0xa1, 0x08, 0xd5, 0xfd, 0xab, 0xf7, + 0xe3, 0xfb, 0xfe, 0x04, 0x56, 0x06, 0xf3, 0xfb, 0x0d, 0xfd, 0x14, 0xfe, 0xa5, 0xfb, 0x7f, 0xf8, + 0x98, 0xf5, 0xaa, 0xf6, 0x6e, 0xf9, 0x97, 0xf7, 0xc1, 0xf5, 0x59, 0xf4, 0xdc, 0xf8, 0x95, 0xff, + 0x6d, 0xf9, 0x0d, 0xf4, 0x9f, 0xf2, 0x46, 0xf3, 0x32, 0xfa, 0x7a, 0xfc, 0x88, 0xf5, 0x11, 0xf7, + 0x6a, 0xf5, 0x59, 0xf7, 0x54, 0xf7, 0x84, 0xf8, 0x5b, 0xfe, 0xba, 0xf8, 0x30, 0xf3, 0xa2, 0xf2, + 0xa6, 0xf8, 0x9b, 0xf7, 0x58, 0xf6, 0x33, 0xf8, 0x5a, 0xf3, 0x25, 0xef, 0xb6, 0xf1, 0x3d, 0xfa, + 0x2f, 0xfe, 0xc5, 0xfc, 0x8a, 0xff, 0x7e, 0xfd, 0xf1, 0xfe, 0x6e, 0x00, 0x98, 0xff, 0xec, 0xfb, + 0xc1, 0xfe, 0xdd, 0x04, 0x91, 0x04, 0x3c, 0x02, 0x67, 0x01, 0xc0, 0x0a, 0x44, 0x11, 0x9c, 0x0c, + 0x8a, 0x06, 0x92, 0x08, 0xcd, 0x0e, 0x97, 0x13, 0xf6, 0x11, 0x42, 0x0d, 0x9d, 0x07, 0xd3, 0x08, + 0xd8, 0x0b, 0x14, 0x0b, 0x4e, 0x0a, 0x4f, 0x04, 0xa2, 0x00, 0xab, 0x01, 0x0c, 0x05, 0x97, 0x06, + 0xf0, 0x05, 0x5f, 0xff, 0x58, 0xf7, 0x2f, 0xfe, 0xaf, 0xff, 0xad, 0x03, 0x79, 0xfa, 0x79, 0xf9, + 0x94, 0xfb, 0x95, 0xf7, 0x59, 0xf9, 0x5b, 0xf9, 0x31, 0x03, 0xe2, 0x08, 0xb9, 0x03, 0x16, 0xfe, + 0x01, 0x01, 0x1c, 0x08, 0x71, 0x0e, 0x3b, 0x0f, 0x78, 0x03, 0xec, 0xfc, 0x12, 0x01, 0xca, 0x06, + 0x92, 0x09, 0x9e, 0x05, 0xac, 0xf8, 0x93, 0xf4, 0x70, 0xfb, 0xec, 0x02, 0x22, 0x04, 0x11, 0xfb, + 0x51, 0xf8, 0xc9, 0xf6, 0x69, 0xf8, 0x21, 0xf8, 0x92, 0xf9, 0x60, 0x06, 0x43, 0x07, 0xa9, 0x08, + 0x21, 0x09, 0x61, 0x06, 0xcc, 0x0b, 0x01, 0x0e, 0xf8, 0x0e, 0x9f, 0x08, 0xe8, 0x0b, 0xef, 0x12, + 0x49, 0x13, 0x0c, 0x0e, 0xc0, 0x03, 0x02, 0x02, 0xb4, 0x02, 0x94, 0x00, 0x54, 0x01, 0x97, 0xf8, + 0x14, 0xf6, 0x6a, 0xfa, 0x77, 0xfc, 0xc4, 0xfb, 0x8c, 0xf5, 0x9d, 0xf4, 0x60, 0xf4, 0x7b, 0xf3, + 0xc1, 0xf3, 0x19, 0xf8, 0x47, 0xf8, 0x58, 0xf4, 0xb2, 0xf5, 0x26, 0xf7, 0x81, 0xf9, 0x80, 0xf9, + 0xa1, 0xfb, 0xc6, 0xfa, 0x0e, 0xfa, 0x49, 0xfc, 0xee, 0xfc, 0x74, 0x00, 0x18, 0xfc, 0x5f, 0x01, + 0x72, 0x00, 0xdd, 0xfd, 0x4a, 0x02, 0x07, 0x00, 0x8b, 0x04, 0x32, 0xff, 0x7d, 0xff, 0xd4, 0x00, + 0xbd, 0x05, 0xde, 0x06, 0xee, 0x07, 0x1a, 0x0e, 0xc9, 0x0c, 0xe9, 0x10, 0x62, 0x0f, 0x45, 0x14, + 0xfe, 0x13, 0x96, 0x11, 0xe4, 0x14, 0x90, 0x16, 0x8f, 0x16, 0x93, 0x15, 0xd8, 0x16, 0x83, 0x10, + 0x53, 0x0d, 0x56, 0x06, 0x63, 0x03, 0x97, 0x04, 0xcd, 0x05, 0xd3, 0x04, 0x31, 0xfc, 0xaa, 0xfe, + 0x61, 0xff, 0xa8, 0xff, 0x60, 0x01, 0x67, 0xfd, 0x58, 0xfd, 0x3a, 0xfd, 0x2a, 0xfb, 0x18, 0xf8, + 0xc1, 0xf3, 0xe4, 0xf6, 0x55, 0xf9, 0x4e, 0xf6, 0xe4, 0xf1, 0x32, 0xf5, 0xed, 0xf8, 0x3a, 0xf9, + 0x6b, 0xf7, 0x12, 0xf2, 0xb1, 0xf0, 0x53, 0xf1, 0x87, 0xf5, 0xc5, 0xf8, 0x0f, 0xfa, 0xa1, 0xfa, + 0x4d, 0xf3, 0x13, 0xef, 0x61, 0xea, 0x55, 0xe9, 0xc1, 0xe6, 0x70, 0xe7, 0x20, 0xea, 0x3c, 0xe7, + 0xe5, 0xe7, 0x43, 0xe4, 0xbe, 0xe5, 0x25, 0xe4, 0x2f, 0xdf, 0xc9, 0xdb, 0xfc, 0xdd, 0xe0, 0xe6, + 0x77, 0xe7, 0x0d, 0xea, 0xfb, 0xec, 0xcd, 0xe6, 0x91, 0xea, 0x40, 0xf1, 0x1d, 0xf4, 0xbd, 0xf2, + 0x36, 0xf3, 0x61, 0xf9, 0xdd, 0xfa, 0x30, 0xfd, 0x74, 0xfd, 0x93, 0xfc, 0x56, 0xfc, 0xe6, 0xfe, + 0x80, 0xfb, 0x86, 0xfa, 0xd1, 0xfc, 0x98, 0xfd, 0x38, 0x02, 0xe5, 0x03, 0x67, 0x07, 0xa0, 0x08, + 0x62, 0x06, 0x1b, 0x0a, 0x4a, 0x08, 0x37, 0x09, 0x12, 0x0c, 0x0e, 0x0b, 0x5c, 0x0d, 0x97, 0x10, + 0x3f, 0x1a, 0xbc, 0x1e, 0xad, 0x21, 0xb5, 0x20, 0xc8, 0x20, 0x17, 0x28, 0x7a, 0x2a, 0x8d, 0x2a, + 0x7c, 0x24, 0x3c, 0x23, 0xcf, 0x24, 0x6a, 0x26, 0xc0, 0x27, 0xdb, 0x20, 0xf6, 0x1a, 0xd8, 0x15, + 0x1f, 0x13, 0xa5, 0x16, 0xce, 0x13, 0x9f, 0x0e, 0x7c, 0x0c, 0x6b, 0x0c, 0x64, 0x0f, 0x77, 0x0a, + 0xec, 0x09, 0x14, 0x0a, 0xd9, 0x08, 0x92, 0x0a, 0x94, 0x06, 0x48, 0x03, 0x8b, 0x01, 0xfa, 0x03, + 0x77, 0x06, 0xd8, 0x01, 0x8a, 0xfe, 0x67, 0xfb, 0x4b, 0xfb, 0x13, 0xfc, 0x89, 0xf8, 0xde, 0xf3, + 0x1e, 0xf3, 0x77, 0xf4, 0x77, 0xf2, 0x95, 0xee, 0x80, 0xef, 0x62, 0xef, 0xc9, 0xf2, 0xa7, 0xf3, + 0xd8, 0xf5, 0x4e, 0xf7, 0x1b, 0xef, 0x09, 0xf2, 0xd9, 0xf1, 0xa4, 0xf4, 0x71, 0xf5, 0x67, 0xf7, + 0x5d, 0xfb, 0xf5, 0xf6, 0x4f, 0xf6, 0x4e, 0xf3, 0x53, 0xf5, 0x22, 0xf8, 0x26, 0xf9, 0x3a, 0xfb, + 0xf2, 0xf7, 0x51, 0xf8, 0x4b, 0xf9, 0x10, 0xf9, 0x2e, 0xf9, 0x1c, 0xf6, 0x63, 0xf3, 0x30, 0xf5, + 0x73, 0xfa, 0x66, 0xfc, 0xa5, 0xfd, 0x36, 0xfd, 0xf7, 0xff, 0x06, 0x01, 0x89, 0x00, 0xac, 0x02, + 0x64, 0x04, 0x33, 0x05, 0xfd, 0x05, 0x51, 0x0b, 0x0e, 0x0c, 0xd7, 0x0c, 0x19, 0x0f, 0x54, 0x0e, + 0x23, 0x12, 0x01, 0x13, 0x24, 0x12, 0x5d, 0x0f, 0x76, 0x0c, 0x29, 0x0e, 0x91, 0x0d, 0x6a, 0x0b, + 0x60, 0x0a, 0xdb, 0x09, 0x3a, 0x09, 0x0d, 0x06, 0xfb, 0x02, 0x8a, 0xff, 0x78, 0xfc, 0x8d, 0xfa, + 0x67, 0xfb, 0xef, 0xfe, 0x9a, 0xfd, 0xbb, 0xfb, 0xcc, 0xf8, 0x11, 0xf7, 0xf8, 0xf6, 0xbf, 0xf4, + 0x00, 0xf2, 0xe0, 0xf1, 0xa4, 0xf3, 0x36, 0xf5, 0xb7, 0xf7, 0x36, 0xf8, 0x87, 0xfb, 0x2c, 0xfa, + 0xc3, 0xfa, 0x5f, 0xfc, 0xbf, 0xfe, 0x81, 0x00, 0x50, 0xff, 0x18, 0x02, 0x3a, 0xff, 0xa2, 0xfe, + 0x12, 0xfd, 0x83, 0xf9, 0x12, 0xf9, 0xc5, 0xf8, 0xe0, 0xf6, 0xaa, 0xf7, 0x8c, 0xf9, 0xe6, 0xf8, + 0x2a, 0xf8, 0x3a, 0xf8, 0xf1, 0xf6, 0xfc, 0xf5, 0x33, 0xf9, 0x20, 0xfd, 0xc9, 0x00, 0x77, 0x03, + 0x73, 0x05, 0x0e, 0x06, 0xb8, 0x06, 0x6e, 0x07, 0xc8, 0x06, 0xa4, 0x07, 0x16, 0x08, 0x4a, 0x06, + 0x0a, 0x06, 0x55, 0x05, 0x9b, 0x00, 0x7a, 0xfb, 0x54, 0xf8, 0xce, 0xf9, 0x99, 0xfa, 0xe1, 0xf7, + 0xa9, 0xf5, 0xd8, 0xf3, 0x33, 0xf3, 0x3d, 0xf3, 0xef, 0xf2, 0x4f, 0xf2, 0x58, 0xee, 0x16, 0xf0, + 0xe2, 0xf2, 0x75, 0xf2, 0x39, 0xf3, 0xd3, 0xf3, 0x14, 0xf5, 0x47, 0xf5, 0xa6, 0xf6, 0x93, 0xf9, + 0xb2, 0xfa, 0x16, 0xfa, 0x16, 0xfc, 0x24, 0xfe, 0xd8, 0xff, 0x0f, 0x02, 0x7a, 0x03, 0x46, 0x05, + 0x9e, 0x04, 0x58, 0x04, 0xa0, 0x05, 0x0f, 0x06, 0xd2, 0x07, 0x47, 0x07, 0xce, 0x06, 0x2d, 0x07, + 0x89, 0x07, 0x60, 0x0e, 0x46, 0x13, 0x0b, 0x10, 0x1a, 0x12, 0x0a, 0x15, 0x06, 0x17, 0x64, 0x17, + 0xd7, 0x18, 0xab, 0x1b, 0xb6, 0x1a, 0x33, 0x1d, 0x2e, 0x1d, 0x42, 0x1a, 0xed, 0x16, 0x23, 0x18, + 0x73, 0x14, 0xb2, 0x0d, 0x84, 0x09, 0x91, 0x07, 0xb8, 0x06, 0xad, 0x02, 0xb1, 0xff, 0xb4, 0xfd, + 0x41, 0xfc, 0x26, 0xfd, 0xb1, 0xff, 0xe9, 0xfe, 0xe2, 0xfc, 0x91, 0xfd, 0x9f, 0xfc, 0x1c, 0xfd, + 0xcf, 0xfc, 0xc3, 0xfa, 0x4e, 0xf9, 0x52, 0xf9, 0x39, 0xfb, 0xa4, 0xfd, 0x05, 0x00, 0xe9, 0xfe, + 0x66, 0xfc, 0xeb, 0xf8, 0x6a, 0xfb, 0xed, 0xfc, 0x3f, 0xfe, 0xdd, 0xfc, 0x02, 0xfd, 0x8e, 0x01, + 0x33, 0x00, 0x73, 0xfd, 0x44, 0xfb, 0x86, 0xf8, 0xb0, 0xf6, 0xe0, 0xf4, 0x6e, 0xf5, 0xd5, 0xf3, + 0x9d, 0xf3, 0xab, 0xf1, 0xd7, 0xef, 0x10, 0xee, 0x88, 0xeb, 0x14, 0xec, 0xce, 0xec, 0x9d, 0xee, + 0x1f, 0xee, 0x72, 0xef, 0x13, 0xf0, 0x65, 0xf1, 0x91, 0xf3, 0x7a, 0xf3, 0x50, 0xf6, 0x87, 0xf7, + 0x02, 0xf7, 0x7c, 0xf8, 0xd3, 0xf9, 0xce, 0xf7, 0x01, 0xf8, 0x86, 0xf9, 0xe9, 0xfb, 0x43, 0xfe, + 0x94, 0xfc, 0x85, 0xf9, 0x94, 0xf6, 0x47, 0xf8, 0x57, 0xf9, 0xaa, 0xf9, 0xce, 0xfb, 0x7a, 0xfb, + 0xfa, 0xfd, 0x37, 0x01, 0xfd, 0x02, 0x25, 0x03, 0x8e, 0x02, 0x01, 0x03, 0x0e, 0x01, 0x21, 0x04, + 0x19, 0x08, 0x65, 0x0d, 0x5d, 0x11, 0xd0, 0x13, 0xab, 0x16, 0xb5, 0x17, 0x0e, 0x1a, 0x6a, 0x1a, + 0x93, 0x1b, 0xa9, 0x1c, 0x14, 0x1d, 0x9c, 0x1d, 0x05, 0x1b, 0x28, 0x19, 0x95, 0x18, 0x36, 0x17, + 0x37, 0x13, 0x88, 0x0f, 0xc6, 0x0b, 0x18, 0x07, 0xe5, 0x04, 0xdb, 0x02, 0x38, 0x00, 0xe4, 0x01, + 0x0a, 0x02, 0x63, 0x03, 0x27, 0x03, 0x1a, 0x00, 0xdd, 0xff, 0x61, 0xff, 0x90, 0xfe, 0x7a, 0xfc, + 0xb9, 0xfc, 0x20, 0xfa, 0x0f, 0xfb, 0x70, 0xf9, 0xe5, 0xf4, 0xfd, 0xf2, 0x09, 0xf4, 0x70, 0xf4, + 0x25, 0xf2, 0xae, 0xed, 0xcf, 0xe7, 0x8d, 0xe9, 0xe9, 0xea, 0x66, 0xee, 0x0a, 0xf3, 0xd6, 0xf2, + 0x49, 0xf2, 0xd5, 0xf4, 0xdb, 0xf5, 0xc5, 0xf4, 0xde, 0xf4, 0xa5, 0xf7, 0xd2, 0xfa, 0x2c, 0x00, + 0x69, 0x00, 0x75, 0xfe, 0x91, 0x00, 0x8d, 0xff, 0x70, 0x00, 0x58, 0x00, 0x6d, 0xff, 0x6d, 0xff, + 0x37, 0x00, 0xeb, 0xff, 0x42, 0xff, 0x5a, 0xfe, 0x4f, 0xfd, 0xcf, 0xfc, 0x36, 0xfb, 0x04, 0xf8, + 0x7b, 0xf4, 0xe6, 0xf4, 0x35, 0xf8, 0xaa, 0xfb, 0x0e, 0xfc, 0x08, 0xfc, 0x57, 0xfb, 0x2d, 0xfb, + 0x55, 0xfd, 0x23, 0xfc, 0xf2, 0xfe, 0x9b, 0xff, 0x9b, 0x02, 0x9b, 0x05, 0x49, 0x08, 0x94, 0x0a, + 0x01, 0x0b, 0xe0, 0x0d, 0x85, 0x0d, 0x12, 0x0e, 0x5f, 0x0c, 0xbe, 0x08, 0x3c, 0x06, 0xa1, 0x04, + 0x84, 0x06, 0x5e, 0x07, 0xb6, 0x0a, 0xa4, 0x09, 0x59, 0x05, 0x64, 0x02, 0x24, 0x00, 0xdf, 0x01, + 0xe6, 0x01, 0xfa, 0x02, 0x73, 0x04, 0x48, 0x03, 0x58, 0x03, 0x54, 0x04, 0x76, 0x04, 0xfe, 0x02, + 0x58, 0x05, 0x7c, 0x04, 0x7d, 0x02, 0xe7, 0xff, 0xfd, 0xff, 0x82, 0x02, 0xcd, 0x04, 0xc7, 0x06, + 0x41, 0x07, 0x50, 0x09, 0x17, 0x0b, 0x1d, 0x0b, 0xfa, 0x09, 0x20, 0x0a, 0xc2, 0x0c, 0x0d, 0x0e, + 0x9b, 0x0d, 0x58, 0x0a, 0xfc, 0x06, 0x6c, 0x02, 0xe0, 0x01, 0x0e, 0x01, 0x03, 0x00, 0x9e, 0xff, + 0x22, 0xfc, 0xfb, 0xf8, 0x3c, 0xf5, 0x45, 0xf5, 0xf3, 0xf6, 0x19, 0xf9, 0xce, 0xfa, 0x3e, 0xfb, + 0x3d, 0xfb, 0x8b, 0xfa, 0x68, 0xfc, 0x23, 0xfe, 0x41, 0xff, 0x57, 0xff, 0xc3, 0xff, 0xf6, 0xff, + 0x6b, 0xff, 0xa4, 0xfd, 0xae, 0xfb, 0x1b, 0xf9, 0x7d, 0xf5, 0xf2, 0xf4, 0x6c, 0xf4, 0xfb, 0xf3, + 0x6c, 0xf1, 0x28, 0xef, 0x56, 0xee, 0x8f, 0xed, 0x72, 0xee, 0x17, 0xec, 0xfa, 0xe9, 0xe6, 0xe9, + 0xdc, 0xec, 0x36, 0xef, 0x3d, 0xf0, 0x8d, 0xf0, 0x26, 0xf2, 0x1f, 0xf7, 0xab, 0xfa, 0xee, 0xfb, + 0x6b, 0xfc, 0xee, 0x01, 0xc9, 0x07, 0x3e, 0x0b, 0x67, 0x0a, 0x71, 0x08, 0x34, 0x07, 0x1f, 0x08, + 0x4e, 0x0a, 0x8b, 0x0b, 0xce, 0x0c, 0x96, 0x0c, 0x51, 0x0b, 0x68, 0x07, 0x5f, 0x03, 0x98, 0x00, + 0x32, 0x00, 0xbb, 0x01, 0xf0, 0x03, 0x11, 0x04, 0xc8, 0x02, 0x25, 0x04, 0x4b, 0x05, 0xa8, 0x09, + 0xb5, 0x0c, 0x69, 0x0c, 0x06, 0x0c, 0xef, 0x0b, 0x64, 0x0e, 0x87, 0x0f, 0x35, 0x0f, 0xd8, 0x0f, + 0x13, 0x0f, 0x75, 0x0d, 0x07, 0x0a, 0xeb, 0x06, 0x71, 0x05, 0xbc, 0x02, 0xc0, 0xfe, 0xd7, 0xfb, + 0xda, 0xfa, 0xa4, 0xfc, 0x62, 0xfd, 0xb7, 0xfb, 0x59, 0xfc, 0x9c, 0xfe, 0x10, 0x02, 0x80, 0x03, + 0x4f, 0x00, 0x8c, 0xfe, 0x6f, 0xfd, 0xac, 0xfe, 0x0a, 0xff, 0xd5, 0xfe, 0x6d, 0x00, 0x70, 0x01, + 0x1b, 0x03, 0x49, 0x03, 0xd1, 0x07, 0xe0, 0x0b, 0x6c, 0x10, 0xa8, 0x10, 0x53, 0x0d, 0x82, 0x0b, + 0x64, 0x0b, 0xef, 0x0d, 0xcf, 0x0e, 0xcb, 0x0f, 0x0b, 0x0f, 0x16, 0x0d, 0xf4, 0x08, 0x74, 0x03, + 0xaf, 0xfd, 0x13, 0xf8, 0xc1, 0xf5, 0x7f, 0xf3, 0x69, 0xf2, 0x72, 0xef, 0x24, 0xec, 0xde, 0xe9, + 0xa4, 0xe7, 0xb7, 0xe5, 0x0a, 0xe3, 0x3a, 0xe3, 0x23, 0xe2, 0x62, 0xe2, 0xb0, 0xe2, 0xb9, 0xe1, + 0x50, 0xe0, 0xe6, 0xde, 0x50, 0xe1, 0x2f, 0xe1, 0x39, 0xe1, 0x12, 0xe2, 0xa6, 0xe4, 0x15, 0xe7, + 0x5c, 0xea, 0x3e, 0xef, 0x8b, 0xf1, 0xc9, 0xf0, 0x84, 0xf0, 0xd0, 0xf1, 0x58, 0xf3, 0xc4, 0xf6, + 0x45, 0xfb, 0x4a, 0x00, 0x65, 0x03, 0x4b, 0x05, 0x77, 0x05, 0x3a, 0x04, 0xcb, 0x04, 0xa2, 0x05, + 0xf8, 0x07, 0x83, 0x0a, 0xb7, 0x0e, 0xa6, 0x11, 0x57, 0x12, 0x9a, 0x12, 0x72, 0x15, 0x0a, 0x1c, + 0x13, 0x25, 0x7a, 0x2c, 0x51, 0x30, 0xae, 0x30, 0x10, 0x2f, 0x77, 0x2d, 0x81, 0x2b, 0xda, 0x2b, + 0x2f, 0x2e, 0xa5, 0x2f, 0x5c, 0x2e, 0x83, 0x29, 0x2a, 0x23, 0x50, 0x1c, 0x0b, 0x15, 0x4f, 0x0f, + 0xd1, 0x0b, 0x11, 0x0a, 0x82, 0x09, 0xfa, 0x09, 0x50, 0x07, 0xa4, 0x04, 0xa5, 0x01, 0x7a, 0xfd, + 0xbe, 0xf7, 0x66, 0xf2, 0xfc, 0xed, 0x5a, 0xeb, 0xce, 0xe9, 0x99, 0xe7, 0x52, 0xe5, 0x3b, 0xe2, + 0x46, 0xe0, 0xb3, 0xdc, 0x6d, 0xda, 0x31, 0xda, 0xe0, 0xd9, 0xab, 0xde, 0x23, 0xe3, 0xd8, 0xe5, + 0x5d, 0xe8, 0x38, 0xea, 0x00, 0xee, 0x0c, 0xf0, 0x28, 0xf3, 0x4a, 0xf6, 0x5d, 0xf8, 0x78, 0xfc, + 0x5d, 0x01, 0x34, 0x04, 0x71, 0x04, 0xa1, 0x04, 0x4f, 0x04, 0xb7, 0x03, 0xf6, 0x03, 0x57, 0x04, + 0xfe, 0x02, 0x3b, 0xff, 0xd3, 0xfc, 0x08, 0xfc, 0x60, 0xfb, 0x55, 0xfc, 0x34, 0x00, 0x5d, 0x06, + 0x37, 0x0b, 0x2b, 0x09, 0x49, 0x02, 0x47, 0xfd, 0x9e, 0xfe, 0x48, 0x02, 0xb1, 0x05, 0xbe, 0x09, + 0xc3, 0x0b, 0xf4, 0x0d, 0xb2, 0x0e, 0x8b, 0x0b, 0x5a, 0x07, 0xaa, 0x04, 0x81, 0x05, 0xb5, 0x07, + 0xba, 0x09, 0x23, 0x0a, 0x61, 0x0a, 0xa9, 0x08, 0x67, 0x06, 0x23, 0x00, 0x48, 0xf9, 0x51, 0xf5, + 0xae, 0xf4, 0x55, 0xf5, 0x03, 0xf4, 0x5f, 0xf2, 0xa0, 0xf0, 0x6c, 0xf1, 0x57, 0xf3, 0x88, 0xf2, + 0xf3, 0xf1, 0x25, 0xf2, 0x11, 0xf4, 0xd2, 0xf7, 0x98, 0xfd, 0x5b, 0x00, 0x3a, 0x03, 0xcb, 0x04, + 0x97, 0x06, 0xca, 0x06, 0xf7, 0x05, 0x54, 0x06, 0xe2, 0x05, 0xe0, 0x06, 0x9f, 0x08, 0x48, 0x08, + 0x5f, 0x07, 0x7b, 0x05, 0x98, 0x04, 0x37, 0x05, 0x08, 0x05, 0x36, 0x06, 0x65, 0x05, 0xb2, 0x04, + 0xbf, 0x02, 0x6b, 0x00, 0xbe, 0xff, 0x92, 0x02, 0x7e, 0x09, 0x26, 0x10, 0x3e, 0x15, 0xc9, 0x13, + 0x34, 0x0d, 0xfb, 0x06, 0xb3, 0x04, 0xa3, 0x07, 0xd1, 0x0c, 0x96, 0x11, 0xa9, 0x14, 0xc3, 0x14, + 0xf4, 0x13, 0x62, 0x10, 0xa4, 0x0b, 0xc7, 0x06, 0xcd, 0x04, 0x9c, 0x04, 0x61, 0x04, 0x46, 0x04, + 0xd2, 0x00, 0x36, 0xfd, 0xe9, 0xf8, 0x78, 0xf3, 0xb4, 0xee, 0xf2, 0xe9, 0x59, 0xe7, 0x0d, 0xe5, + 0x9d, 0xe2, 0xfe, 0xe0, 0x8a, 0xe0, 0x84, 0xe0, 0x6a, 0xe1, 0xef, 0xe0, 0x15, 0xdf, 0xa0, 0xdd, + 0xf6, 0xde, 0x73, 0xe2, 0x03, 0xe8, 0x17, 0xeb, 0x7a, 0xec, 0x6f, 0xed, 0x16, 0xee, 0xc8, 0xf1, + 0xdd, 0xf3, 0x88, 0xf5, 0x88, 0xf6, 0xec, 0xf8, 0x5f, 0xfa, 0x5c, 0xfa, 0xd3, 0xf8, 0xf2, 0xf7, + 0xcb, 0xf9, 0xbc, 0xfb, 0x3f, 0xfd, 0xf7, 0xfe, 0xe2, 0xfc, 0x3e, 0xfa, 0xb6, 0xf8, 0x98, 0xf5, + 0x77, 0xf2, 0x23, 0xf4, 0x6d, 0xfe, 0xe7, 0x0c, 0x1e, 0x1a, 0x69, 0x1f, 0x04, 0x1e, 0x4f, 0x1a, + 0x3f, 0x1d, 0xb9, 0x22, 0x86, 0x2a, 0x81, 0x31, 0x80, 0x35, 0x26, 0x3a, 0xc8, 0x3b, 0x23, 0x3b, + 0x1c, 0x31, 0xbf, 0x26, 0x46, 0x20, 0x41, 0x1d, 0xf8, 0x1a, 0x0c, 0x18, 0x6b, 0x13, 0x41, 0x0b, + 0x19, 0x05, 0x97, 0xff, 0x27, 0xf8, 0x91, 0xf2, 0x21, 0xf2, 0xe6, 0xf4, 0x69, 0xf6, 0xc6, 0xf6, + 0x98, 0xf6, 0x79, 0xf6, 0xbd, 0xf8, 0x8b, 0xf7, 0x80, 0xf5, 0xaf, 0xf5, 0x3a, 0xfb, 0x8d, 0x00, + 0x99, 0x04, 0xbf, 0x06, 0x2c, 0x07, 0x69, 0x07, 0x23, 0x06, 0xec, 0x04, 0x28, 0x01, 0xc9, 0x00, + 0xa6, 0x00, 0xc5, 0x03, 0x31, 0x05, 0xa4, 0x03, 0x36, 0x00, 0x86, 0xfb, 0x88, 0xf9, 0xa6, 0xf6, + 0x75, 0xf4, 0xe1, 0xf0, 0x77, 0xef, 0xba, 0xec, 0x0b, 0xe9, 0x4a, 0xe5, 0xe3, 0xdf, 0xf6, 0xde, + 0x06, 0xe5, 0x45, 0xf1, 0x4d, 0xfd, 0x93, 0x04, 0xc3, 0x04, 0x99, 0xfe, 0xee, 0xfa, 0xe9, 0xfa, + 0x24, 0xff, 0xa6, 0x02, 0xe0, 0x05, 0x60, 0x06, 0xdf, 0x03, 0x1e, 0x02, 0x11, 0xfb, 0xde, 0xf5, + 0x36, 0xf1, 0x1f, 0xee, 0x45, 0xee, 0x2f, 0xee, 0xe0, 0xed, 0xdf, 0xec, 0xa0, 0xed, 0xf6, 0xec, + 0x33, 0xeb, 0xad, 0xe9, 0xce, 0xea, 0x4d, 0xed, 0xc1, 0xee, 0x0b, 0xf1, 0x92, 0xf1, 0x63, 0xf3, + 0xe1, 0xf7, 0x05, 0xfa, 0x84, 0xfa, 0xef, 0xfb, 0x9b, 0xfe, 0x78, 0x04, 0x17, 0x0a, 0x09, 0x10, + 0x64, 0x13, 0x4f, 0x14, 0x02, 0x14, 0x2a, 0x14, 0x05, 0x13, 0x14, 0x15, 0xfd, 0x16, 0xb6, 0x17, + 0x38, 0x18, 0x62, 0x15, 0x69, 0x13, 0x32, 0x0d, 0xa8, 0x09, 0x68, 0x07, 0x99, 0x05, 0x24, 0x02, + 0x88, 0xfd, 0xd9, 0xfa, 0x3a, 0xf9, 0xee, 0xf8, 0x87, 0xfa, 0x0e, 0xfb, 0x42, 0xff, 0xf9, 0x05, + 0x3a, 0x11, 0x9a, 0x1b, 0x19, 0x1f, 0x70, 0x1b, 0x99, 0x13, 0x0e, 0x11, 0xac, 0x10, 0xe3, 0x13, + 0x9f, 0x15, 0x80, 0x14, 0xb1, 0x12, 0x70, 0x10, 0xd5, 0x0a, 0x05, 0x02, 0x4b, 0xf8, 0xd6, 0xf0, + 0xcd, 0xed, 0xbd, 0xed, 0xaf, 0xee, 0x73, 0xef, 0xc1, 0xef, 0x4a, 0xef, 0x8e, 0xee, 0x60, 0xec, + 0x1e, 0xec, 0x06, 0xed, 0x45, 0xef, 0x99, 0xf4, 0x2b, 0xf8, 0x06, 0xfa, 0xe0, 0xfa, 0x7e, 0xfb, + 0xc1, 0xfb, 0x89, 0xfa, 0x5a, 0xfa, 0x24, 0xfb, 0x0c, 0xfd, 0x07, 0xff, 0x62, 0xfe, 0xa6, 0xfc, + 0x75, 0xf9, 0x26, 0xf6, 0x4d, 0xf1, 0x1c, 0xed, 0xfa, 0xeb, 0xb4, 0xea, 0xe1, 0xec, 0x9b, 0xed, + 0xfc, 0xed, 0x34, 0xed, 0xe8, 0xeb, 0xdd, 0xeb, 0x17, 0xec, 0xc5, 0xef, 0x15, 0xf3, 0x60, 0xf6, + 0x6c, 0xf9, 0xdb, 0xfc, 0x5c, 0xff, 0x94, 0x00, 0xc3, 0x02, 0x76, 0x0a, 0x7f, 0x15, 0x1d, 0x23, + 0x74, 0x2a, 0xcc, 0x28, 0xf4, 0x21, 0xa9, 0x1e, 0x82, 0x20, 0xf5, 0x22, 0x31, 0x27, 0x5a, 0x29, + 0x6d, 0x29, 0xc2, 0x27, 0x25, 0x24, 0xb2, 0x1d, 0x3d, 0x14, 0xf6, 0x0c, 0x60, 0x07, 0xdd, 0x05, + 0x73, 0x06, 0x3e, 0x08, 0xc2, 0x07, 0xd4, 0x04, 0x25, 0x03, 0xfd, 0xff, 0x72, 0xfd, 0xf0, 0xf9, + 0xb9, 0xf6, 0x2b, 0xf5, 0x78, 0xf6, 0x64, 0xfa, 0xcf, 0xfd, 0x7d, 0x00, 0xe9, 0xff, 0x0b, 0xfc, + 0x87, 0xfb, 0xca, 0xfe, 0x12, 0x04, 0xd7, 0x06, 0x49, 0x07, 0x9c, 0x05, 0xff, 0x02, 0x2e, 0xff, + 0x5d, 0xfb, 0x1b, 0xf8, 0x4b, 0xf5, 0x65, 0xf5, 0x27, 0xf7, 0x61, 0xf7, 0xaf, 0xf5, 0xc4, 0xf3, + 0x6f, 0xf2, 0x49, 0xf2, 0xbe, 0xf2, 0x28, 0xf5, 0x38, 0xf7, 0xdc, 0xf8, 0xef, 0xf8, 0x44, 0xf7, + 0xd1, 0xf6, 0xb7, 0xf6, 0x13, 0xf6, 0xbc, 0xf7, 0x03, 0x00, 0x51, 0x0a, 0xe8, 0x13, 0x07, 0x19, + 0x50, 0x17, 0x92, 0x10, 0x27, 0x0d, 0xb0, 0x0d, 0x6e, 0x0e, 0x50, 0x10, 0x03, 0x0e, 0x0d, 0x0c, + 0x95, 0x08, 0x90, 0x03, 0x26, 0xfb, 0x75, 0xef, 0xb4, 0xe6, 0x11, 0xe2, 0xa5, 0xe2, 0x8b, 0xe5, + 0x97, 0xe5, 0x9c, 0xe3, 0x34, 0xe2, 0xf9, 0xe0, 0xb8, 0xde, 0x00, 0xdc, 0x16, 0xda, 0x37, 0xd9, + 0x5c, 0xdd, 0xba, 0xe3, 0x66, 0xe8, 0xa3, 0xec, 0xc7, 0xec, 0x34, 0xee, 0x97, 0xed, 0x45, 0xed, + 0x79, 0xef, 0x6a, 0xf1, 0x8f, 0xf5, 0x71, 0xf7, 0xe5, 0xf8, 0x5c, 0xf8, 0xc8, 0xf8, 0x83, 0xf9, + 0x33, 0xf9, 0x23, 0xfd, 0x78, 0x02, 0x72, 0x08, 0x62, 0x0e, 0x27, 0x11, 0x58, 0x10, 0xb9, 0x0f, + 0x75, 0x11, 0xb7, 0x10, 0x00, 0x12, 0x24, 0x13, 0x70, 0x14, 0x49, 0x14, 0x73, 0x10, 0x31, 0x0c, + 0x35, 0x07, 0xcd, 0x03, 0xbb, 0x06, 0xb6, 0x0e, 0xa4, 0x1b, 0x16, 0x28, 0xa1, 0x2c, 0x45, 0x28, + 0x53, 0x20, 0xaf, 0x1d, 0x38, 0x21, 0xd7, 0x24, 0x99, 0x26, 0x39, 0x25, 0xde, 0x22, 0xc9, 0x21, + 0xe8, 0x1c, 0x36, 0x13, 0xd5, 0x07, 0x53, 0x00, 0xdd, 0xfd, 0x71, 0xfd, 0xec, 0xfe, 0x96, 0xfc, + 0x8b, 0xf8, 0x72, 0xf6, 0xe7, 0xf5, 0x7a, 0xf1, 0x86, 0xee, 0x13, 0xf0, 0xb5, 0xf2, 0x48, 0xf6, + 0x2e, 0xf9, 0x5c, 0xfa, 0xec, 0xfa, 0x77, 0xf9, 0xe3, 0xf5, 0x04, 0xf2, 0x45, 0xf1, 0x4a, 0xf4, + 0x7c, 0xf6, 0xc3, 0xf8, 0x22, 0xf8, 0x4d, 0xf6, 0xe5, 0xf1, 0x26, 0xf0, 0xe6, 0xed, 0x2e, 0xec, + 0x6f, 0xed, 0xa2, 0xed, 0x8c, 0xec, 0x87, 0xea, 0xfa, 0xe8, 0xb5, 0xe5, 0x13, 0xe4, 0x64, 0xe4, + 0x2f, 0xe7, 0xb9, 0xe8, 0x7f, 0xea, 0xd3, 0xed, 0xd8, 0xee, 0x5f, 0xef, 0x2b, 0xef, 0xb3, 0xee, + 0x51, 0xf0, 0x00, 0xf8, 0xde, 0x02, 0x1e, 0x10, 0x53, 0x1e, 0xca, 0x26, 0xcb, 0x25, 0x84, 0x21, + 0x7e, 0x1f, 0x5f, 0x20, 0x98, 0x23, 0x97, 0x25, 0x5c, 0x26, 0x53, 0x26, 0x20, 0x25, 0x14, 0x1f, + 0x7f, 0x14, 0x21, 0x0b, 0xe5, 0x07, 0xd4, 0x06, 0x07, 0x07, 0x68, 0x09, 0x6a, 0x0a, 0xe6, 0x0c, + 0x11, 0x0d, 0x75, 0x09, 0x76, 0x04, 0xf1, 0x04, 0xc5, 0x06, 0xa9, 0x07, 0x46, 0x09, 0xe7, 0x09, + 0x03, 0x09, 0xae, 0x04, 0x34, 0x01, 0x95, 0xfd, 0xa5, 0xfc, 0x87, 0xff, 0x5d, 0x02, 0x17, 0x04, + 0x3c, 0x05, 0x69, 0x04, 0x6f, 0x00, 0xae, 0xfb, 0x6c, 0xf7, 0x84, 0xf1, 0x7f, 0xed, 0x7d, 0xed, + 0xa2, 0xed, 0x7d, 0xec, 0xe1, 0xea, 0xe9, 0xe7, 0x2c, 0xe4, 0x05, 0xe2, 0xb3, 0xe2, 0x40, 0xe3, + 0x47, 0xe3, 0xd6, 0xe4, 0xdc, 0xe6, 0x6a, 0xe8, 0x1f, 0xe8, 0x8a, 0xe7, 0x08, 0xe8, 0x2a, 0xeb, + 0xcc, 0xf4, 0x1c, 0x02, 0xd5, 0x13, 0x9f, 0x1f, 0xb3, 0x22, 0x6e, 0x1d, 0x48, 0x19, 0xec, 0x1a, + 0x4e, 0x1c, 0x78, 0x1d, 0x48, 0x1b, 0xd3, 0x1a, 0x33, 0x18, 0xc5, 0x13, 0x7a, 0x09, 0x9a, 0xfb, + 0x97, 0xf2, 0xd2, 0xed, 0x7e, 0xec, 0x16, 0xeb, 0x4f, 0xe9, 0xcd, 0xe5, 0xe1, 0xe3, 0xde, 0xe2, + 0x9b, 0xe1, 0x1a, 0xe1, 0x84, 0xe1, 0x4d, 0xe4, 0x21, 0xe8, 0x75, 0xec, 0xb7, 0xf0, 0xb0, 0xf3, + 0x5d, 0xf5, 0x2a, 0xf6, 0x7a, 0xf6, 0x08, 0xf8, 0x08, 0xfe, 0xc4, 0x03, 0xc9, 0x06, 0x41, 0x06, + 0x92, 0x02, 0x22, 0xfd, 0x5a, 0xf9, 0xd4, 0xf7, 0x83, 0xf5, 0x10, 0xf7, 0x61, 0xf9, 0x57, 0xfa, + 0x24, 0xfd, 0x8e, 0xfc, 0xad, 0xfb, 0x27, 0xfa, 0x4d, 0xfb, 0xab, 0xfe, 0x52, 0x01, 0x2c, 0x03, + 0x5d, 0x06, 0xbd, 0x08, 0x26, 0x0b, 0xc1, 0x0c, 0xbd, 0x0c, 0x36, 0x0d, 0x34, 0x0e, 0x45, 0x13, + 0xb4, 0x19, 0x45, 0x26, 0xfd, 0x31, 0x09, 0x34, 0x67, 0x2c, 0x3d, 0x24, 0x8b, 0x23, 0xf4, 0x25, + 0x9e, 0x28, 0x0b, 0x29, 0xd0, 0x26, 0x7c, 0x25, 0x94, 0x23, 0x96, 0x1b, 0x80, 0x10, 0xd2, 0x06, + 0x07, 0x02, 0x30, 0xff, 0xfa, 0xfd, 0x55, 0xff, 0x6f, 0xff, 0x63, 0xfe, 0x41, 0xfd, 0xc6, 0xfa, + 0x22, 0xf9, 0x89, 0xf9, 0xb2, 0xfb, 0xfc, 0xfd, 0xb4, 0xff, 0x4b, 0x01, 0xd2, 0x00, 0xfb, 0xfe, + 0xb7, 0xfd, 0xc1, 0xfa, 0xfb, 0xfa, 0x58, 0xfc, 0x17, 0xfc, 0x6d, 0xfd, 0xe5, 0xfc, 0xa9, 0xf7, + 0xde, 0xef, 0x55, 0xeb, 0x8b, 0xea, 0x78, 0xea, 0x38, 0xeb, 0xd2, 0xec, 0x28, 0xee, 0xeb, 0xed, + 0x13, 0xec, 0xd8, 0xe7, 0x5c, 0xe2, 0xb6, 0xe0, 0xf8, 0xe1, 0xe7, 0xe3, 0xe1, 0xe5, 0x48, 0xe9, + 0x7f, 0xea, 0x40, 0xe9, 0xbb, 0xe8, 0x1e, 0xe5, 0x66, 0xe5, 0x22, 0xe7, 0x32, 0xef, 0xe3, 0xfa, + 0x02, 0x09, 0xa7, 0x11, 0xad, 0x10, 0x87, 0x0c, 0xf6, 0x07, 0x69, 0x0c, 0xbe, 0x0f, 0xc4, 0x11, + 0x83, 0x11, 0xff, 0x0f, 0xe2, 0x0c, 0x84, 0x07, 0x55, 0xfe, 0x86, 0xf5, 0xd6, 0xf1, 0x33, 0xf2, + 0xb5, 0xf2, 0xd7, 0xf4, 0xdc, 0xf8, 0x04, 0xfc, 0x44, 0x00, 0x6b, 0x01, 0xc8, 0x02, 0xea, 0x02, + 0xd6, 0x06, 0x97, 0x0b, 0xe9, 0x0d, 0xdb, 0x12, 0xbd, 0x15, 0x3c, 0x14, 0x20, 0x10, 0xca, 0x0b, + 0x88, 0x08, 0xee, 0x07, 0xaa, 0x0a, 0xdd, 0x09, 0xac, 0x06, 0x62, 0x05, 0x26, 0x01, 0x25, 0xfa, + 0x11, 0xf5, 0xf9, 0xf3, 0x76, 0xf6, 0x45, 0xfb, 0xdd, 0xfe, 0x08, 0xff, 0x25, 0xfd, 0x91, 0xfd, + 0x5e, 0xfe, 0x84, 0xfb, 0x9a, 0xf9, 0x98, 0xfb, 0xe5, 0xfe, 0xba, 0x02, 0x6b, 0x04, 0x00, 0x04, + 0xec, 0x01, 0xc3, 0xff, 0xb5, 0xfa, 0x44, 0xf8, 0x3d, 0xfa, 0x2a, 0x02, 0xc5, 0x0f, 0xb7, 0x1f, + 0xe3, 0x2a, 0x73, 0x29, 0x98, 0x20, 0x3d, 0x19, 0x9f, 0x18, 0x29, 0x1a, 0x37, 0x1c, 0xd1, 0x1a, + 0x6a, 0x16, 0x48, 0x12, 0x16, 0x0c, 0xdc, 0x02, 0xf2, 0xf9, 0xb5, 0xf2, 0x41, 0xef, 0x2f, 0xec, + 0xd3, 0xec, 0x1e, 0xee, 0xa8, 0xeb, 0x24, 0xe9, 0x40, 0xe5, 0x39, 0xe2, 0x4c, 0xdf, 0x69, 0xdf, + 0x38, 0xe0, 0xa4, 0xe1, 0xe4, 0xe7, 0x2c, 0xeb, 0x04, 0xeb, 0xfb, 0xe9, 0x7d, 0xe8, 0xc8, 0xe7, + 0x51, 0xea, 0xac, 0xee, 0x6a, 0xf3, 0x89, 0xf9, 0x77, 0xfb, 0x20, 0xf9, 0x85, 0xf5, 0x2f, 0xf3, + 0xe6, 0xf3, 0x4a, 0xf8, 0x65, 0xfd, 0x28, 0x02, 0x16, 0x05, 0x77, 0x03, 0xe5, 0x00, 0xc0, 0xfd, + 0xe3, 0xfb, 0xba, 0xfc, 0xf2, 0xff, 0x20, 0x03, 0xad, 0x07, 0x8f, 0x0c, 0x9d, 0x0d, 0x08, 0x0d, + 0x1e, 0x0c, 0xf2, 0x0b, 0xf7, 0x0c, 0xab, 0x0f, 0x99, 0x1a, 0x25, 0x2a, 0x30, 0x39, 0x01, 0x42, + 0x52, 0x3d, 0x86, 0x33, 0x5a, 0x2d, 0x56, 0x2c, 0x01, 0x2b, 0x8d, 0x28, 0x33, 0x29, 0xf8, 0x27, + 0xbb, 0x24, 0xcf, 0x1d, 0xb8, 0x10, 0xcd, 0x03, 0x7f, 0xfc, 0x0e, 0xfb, 0x23, 0xf8, 0xe4, 0xf3, + 0x2d, 0xf3, 0x55, 0xf0, 0xb4, 0xed, 0x18, 0xec, 0x6b, 0xe7, 0x7e, 0xe4, 0x4f, 0xe6, 0x7d, 0xe9, + 0x03, 0xeb, 0x5d, 0xee, 0xfd, 0xee, 0x9b, 0xed, 0x0d, 0xea, 0x1d, 0xe8, 0xd2, 0xe9, 0xca, 0xed, + 0x76, 0xf4, 0xc2, 0xf7, 0xdf, 0xf9, 0x05, 0xf9, 0xfa, 0xf6, 0x47, 0xf4, 0x0c, 0xf3, 0xd6, 0xf4, + 0x17, 0xf7, 0xd5, 0xf9, 0x4e, 0xfc, 0x41, 0xfb, 0xbe, 0xf8, 0x87, 0xf6, 0x34, 0xf4, 0x75, 0xf1, + 0xa0, 0xf0, 0xe9, 0xf1, 0x32, 0xf3, 0x43, 0xf5, 0xb9, 0xf4, 0x28, 0xf3, 0x23, 0xee, 0x24, 0xea, + 0x16, 0xe7, 0x94, 0xe6, 0x61, 0xe7, 0xb5, 0xee, 0xd5, 0xfb, 0xee, 0x0b, 0x69, 0x19, 0xf6, 0x18, + 0x1a, 0x12, 0x99, 0x0a, 0x98, 0x0c, 0xf6, 0x12, 0xe2, 0x15, 0x45, 0x18, 0x3a, 0x17, 0x3e, 0x15, + 0xb3, 0x0f, 0xaa, 0x06, 0x20, 0xfb, 0x34, 0xf3, 0x57, 0xf0, 0x49, 0xf0, 0x12, 0xf2, 0xff, 0xf2, + 0x92, 0xf4, 0x4b, 0xf5, 0x0b, 0xf7, 0x03, 0xf5, 0x6f, 0xf4, 0xc9, 0xf6, 0x08, 0xfa, 0x63, 0xfe, + 0xd4, 0x01, 0x9b, 0x03, 0xf4, 0x03, 0xcd, 0x04, 0x49, 0x06, 0xcf, 0x06, 0xcb, 0x07, 0xa5, 0x0c, + 0x3b, 0x11, 0xdf, 0x10, 0x84, 0x0d, 0xd7, 0x08, 0x59, 0x02, 0x7b, 0xff, 0x2f, 0xfd, 0xb5, 0xfd, + 0x4f, 0xff, 0xe7, 0x03, 0x4c, 0x06, 0xfa, 0x04, 0x91, 0x03, 0xb5, 0x00, 0xb1, 0x00, 0x7e, 0x01, + 0x2c, 0x05, 0x86, 0x08, 0x17, 0x0a, 0xf7, 0x0b, 0xa5, 0x0b, 0x14, 0x08, 0x40, 0x05, 0x13, 0x03, + 0x91, 0x03, 0x8c, 0x05, 0x8a, 0x09, 0x0c, 0x15, 0x9f, 0x22, 0x44, 0x2e, 0x68, 0x30, 0x58, 0x2a, + 0x46, 0x20, 0xcf, 0x1a, 0xc9, 0x1d, 0x87, 0x20, 0xaa, 0x21, 0x9f, 0x20, 0xed, 0x1a, 0x11, 0x12, + 0x49, 0x08, 0x21, 0xfd, 0x42, 0xf5, 0x26, 0xf1, 0xd9, 0xef, 0xb8, 0xee, 0xba, 0xef, 0x5c, 0xf2, + 0xe9, 0xf1, 0xcb, 0xef, 0x59, 0xec, 0x2b, 0xea, 0x9e, 0xe6, 0x7e, 0xe6, 0x31, 0xe8, 0xe3, 0xe9, + 0xaf, 0xed, 0x40, 0xed, 0xf3, 0xe9, 0xff, 0xe5, 0xd4, 0xe3, 0xc3, 0xe3, 0x9f, 0xe4, 0xa8, 0xe7, + 0xbe, 0xe7, 0xc9, 0xe4, 0x7f, 0xe2, 0x1b, 0xe0, 0x7b, 0xdf, 0x24, 0xdf, 0xc0, 0xe1, 0x23, 0xe5, + 0x20, 0xe9, 0xae, 0xed, 0x41, 0xed, 0x33, 0xea, 0x56, 0xe7, 0xe2, 0xe8, 0x64, 0xeb, 0xf6, 0xee, + 0x06, 0xf3, 0xd2, 0xf5, 0xa0, 0xf8, 0x54, 0xfc, 0xca, 0xff, 0xf2, 0xff, 0x20, 0x01, 0xf8, 0x01, + 0x44, 0x05, 0xc2, 0x09, 0x61, 0x12, 0x2a, 0x1f, 0x5f, 0x2d, 0x3c, 0x39, 0x5e, 0x3a, 0x80, 0x32, + 0x6a, 0x2a, 0x6b, 0x2b, 0xca, 0x2d, 0x58, 0x2e, 0xb1, 0x2d, 0x1d, 0x29, 0x75, 0x23, 0xdc, 0x1a, + 0x39, 0x0f, 0x00, 0x03, 0x3b, 0xfd, 0xa1, 0xfb, 0xe8, 0xf9, 0xfc, 0xf8, 0x1b, 0xfc, 0xe4, 0xff, + 0xf5, 0xfe, 0x23, 0xfe, 0xbf, 0xfb, 0x00, 0xfa, 0x7f, 0xfa, 0x28, 0xfe, 0xed, 0xfe, 0x1a, 0x00, + 0x78, 0x04, 0x08, 0x03, 0x6d, 0xff, 0x4c, 0xfb, 0x39, 0xf9, 0xb9, 0xf8, 0x73, 0xfb, 0xe3, 0xfe, + 0x0e, 0xfd, 0x14, 0xfb, 0xe5, 0xf8, 0x7f, 0xf6, 0x88, 0xf4, 0xb0, 0xf4, 0xb3, 0xf4, 0xfc, 0xf3, + 0x35, 0xf5, 0x84, 0xf4, 0x55, 0xf1, 0xa6, 0xef, 0x7d, 0xef, 0xe3, 0xee, 0x0c, 0xf0, 0x6a, 0xf2, + 0x2a, 0xf4, 0x2e, 0xf5, 0x9b, 0xf3, 0x36, 0xf0, 0xa3, 0xeb, 0x9b, 0xe8, 0xe2, 0xe6, 0x1e, 0xe6, + 0x2d, 0xe6, 0x7b, 0xe9, 0x3c, 0xf2, 0xb8, 0xfe, 0x41, 0x0d, 0xcc, 0x12, 0x2a, 0x10, 0xae, 0x09, + 0x91, 0x07, 0x12, 0x0d, 0xa4, 0x11, 0x0c, 0x15, 0x21, 0x15, 0xf0, 0x14, 0x02, 0x11, 0x8d, 0x09, + 0x30, 0x01, 0x67, 0xfa, 0x1a, 0xf9, 0xa5, 0xfb, 0x81, 0xfd, 0xc0, 0xfe, 0x6e, 0x02, 0x54, 0x02, + 0x3d, 0xfe, 0xca, 0xfa, 0x00, 0xfa, 0x3d, 0xfc, 0xd6, 0xfd, 0xe6, 0xff, 0x21, 0x03, 0x4a, 0x08, + 0x8e, 0x0b, 0x16, 0x0a, 0xdf, 0x06, 0xb9, 0x05, 0x29, 0x08, 0x4a, 0x0b, 0xa7, 0x0f, 0x7d, 0x11, + 0x58, 0x12, 0x44, 0x13, 0x2f, 0x10, 0x3f, 0x0c, 0xaf, 0x08, 0xbb, 0x07, 0x84, 0x07, 0x00, 0x08, + 0x7e, 0x08, 0xea, 0x06, 0x71, 0x05, 0xfe, 0x01, 0x9a, 0xfe, 0xf1, 0xfc, 0x9f, 0xfd, 0xbb, 0xfe, + 0x17, 0xff, 0x03, 0xfd, 0x22, 0xfa, 0x0d, 0xf8, 0x6d, 0xf4, 0x38, 0xf1, 0x5e, 0xee, 0xbc, 0xef, + 0x93, 0xf3, 0x97, 0xf8, 0x29, 0x01, 0xc8, 0x0a, 0x35, 0x14, 0xc5, 0x19, 0x0c, 0x17, 0x07, 0x11, + 0x4c, 0x10, 0x1c, 0x16, 0x92, 0x19, 0x31, 0x1b, 0x49, 0x1c, 0x6b, 0x19, 0x8a, 0x14, 0x4f, 0x0e, + 0xc3, 0x04, 0x45, 0xfc, 0xbe, 0xf9, 0x89, 0xfa, 0x8a, 0xfa, 0x63, 0xf9, 0x29, 0xfa, 0xbf, 0xf7, + 0x22, 0xf4, 0xb0, 0xf2, 0x0c, 0xf0, 0x56, 0xef, 0x69, 0xf2, 0xee, 0xf3, 0xf8, 0xf0, 0xb0, 0xef, + 0x00, 0xed, 0x42, 0xe8, 0xc6, 0xe3, 0x1c, 0xe2, 0x14, 0xe3, 0x62, 0xe5, 0x9c, 0xe9, 0x38, 0xe8, + 0x86, 0xe5, 0xfb, 0xe4, 0x46, 0xe4, 0x3c, 0xe5, 0x7d, 0xe7, 0x86, 0xe9, 0x40, 0xea, 0xb9, 0xec, + 0x75, 0xef, 0x6a, 0xef, 0xfd, 0xee, 0x5b, 0xef, 0x72, 0xee, 0x16, 0xee, 0x54, 0xf0, 0x1e, 0xf2, + 0xe9, 0xf3, 0xf6, 0xf4, 0xf8, 0xf4, 0x64, 0xf6, 0x94, 0xf6, 0x6e, 0xf7, 0x8f, 0xf8, 0xc7, 0xfb, + 0x36, 0xff, 0x9b, 0x02, 0xed, 0x0c, 0xa1, 0x19, 0x2f, 0x29, 0xf3, 0x30, 0x8d, 0x31, 0x3a, 0x2d, + 0xb9, 0x2d, 0x0a, 0x34, 0xc3, 0x35, 0x14, 0x34, 0xbc, 0x2f, 0x9d, 0x2a, 0x1d, 0x21, 0xcc, 0x17, + 0x90, 0x0c, 0xb0, 0x03, 0x58, 0x00, 0x76, 0xfe, 0xcc, 0xfc, 0x9f, 0xfc, 0xa1, 0xfe, 0x8a, 0xfe, + 0xec, 0xfc, 0xd7, 0xfc, 0xdc, 0xfc, 0xfb, 0xfc, 0x97, 0xff, 0x1c, 0x02, 0xbc, 0x03, 0x46, 0x06, + 0x63, 0x07, 0x69, 0x04, 0xda, 0x00, 0x59, 0x00, 0xbf, 0x02, 0x43, 0x06, 0x0e, 0x0a, 0x0a, 0x09, + 0x96, 0x04, 0x7d, 0x01, 0x73, 0xfe, 0xf8, 0xfc, 0x39, 0xfd, 0x32, 0xfe, 0xec, 0xfc, 0x76, 0xfb, + 0x34, 0xfb, 0x0c, 0xfa, 0xce, 0xf8, 0xe8, 0xf7, 0xa5, 0xf5, 0x78, 0xf2, 0x29, 0xf4, 0x07, 0xf7, + 0x7e, 0xf8, 0xd3, 0xf8, 0xe1, 0xf7, 0x53, 0xf8, 0x03, 0xf7, 0x3f, 0xf6, 0x8a, 0xf3, 0x2c, 0xf3, + 0xb4, 0xf3, 0x7e, 0xf4, 0x17, 0xfc, 0xe7, 0x08, 0xee, 0x17, 0x61, 0x1c, 0x9b, 0x16, 0xfd, 0x0c, + 0x9c, 0x09, 0x58, 0x0d, 0x33, 0x0e, 0x18, 0x0c, 0x5e, 0x07, 0xbe, 0x03, 0x61, 0xff, 0x0c, 0xf9, + 0x33, 0xef, 0x09, 0xe7, 0x72, 0xe5, 0x97, 0xe4, 0x47, 0xe4, 0x22, 0xe5, 0xc8, 0xe6, 0x5e, 0xe6, + 0x21, 0xe6, 0x25, 0xe7, 0x7a, 0xe9, 0x2c, 0xee, 0x06, 0xf3, 0x0d, 0xf6, 0xed, 0xf8, 0xa9, 0xfd, + 0xd8, 0x00, 0xb3, 0x00, 0x26, 0x01, 0xfc, 0x01, 0xeb, 0x04, 0x9e, 0x0a, 0x72, 0x10, 0xee, 0x11, + 0x0c, 0x10, 0x1d, 0x0f, 0x02, 0x0d, 0xa7, 0x0c, 0xa3, 0x0c, 0xd5, 0x0c, 0xfa, 0x0a, 0x8d, 0x0a, + 0x91, 0x09, 0xe4, 0x05, 0x0e, 0x02, 0x49, 0xfd, 0x3d, 0xfa, 0x11, 0xfa, 0xe2, 0xfc, 0x0d, 0xff, + 0x3b, 0x01, 0x60, 0x01, 0xda, 0x00, 0x8e, 0x01, 0x73, 0x01, 0x30, 0x00, 0x58, 0xfe, 0x73, 0x00, + 0x74, 0x02, 0xac, 0x06, 0x0f, 0x0f, 0xb1, 0x1a, 0x29, 0x26, 0x2e, 0x2b, 0x1a, 0x28, 0xfe, 0x20, + 0x33, 0x20, 0x57, 0x21, 0x99, 0x20, 0x9a, 0x1d, 0x0d, 0x1c, 0x43, 0x19, 0x69, 0x13, 0x6b, 0x0a, + 0xd0, 0xfe, 0xeb, 0xf4, 0xbb, 0xf0, 0xcc, 0xee, 0x72, 0xec, 0x8d, 0xeb, 0x55, 0xed, 0x88, 0xec, + 0xbb, 0xea, 0xb2, 0xeb, 0x75, 0xeb, 0x38, 0xed, 0x11, 0xee, 0x28, 0xee, 0xed, 0xeb, 0x8a, 0xec, + 0x1f, 0xeb, 0x97, 0xe4, 0x5b, 0xe2, 0xa8, 0xe3, 0x2c, 0xe7, 0xca, 0xe9, 0x5c, 0xeb, 0xb1, 0xea, + 0xe0, 0xe7, 0x95, 0xe8, 0x2a, 0xe8, 0x1d, 0xe8, 0x0c, 0xea, 0xbf, 0xec, 0x09, 0xee, 0x08, 0xf1, + 0x4b, 0xf4, 0x2b, 0xf4, 0xc9, 0xf4, 0x05, 0xf5, 0xc5, 0xf4, 0x86, 0xf6, 0xe5, 0xfb, 0x0b, 0xff, + 0x0f, 0x00, 0xf7, 0x01, 0x0a, 0x01, 0x4c, 0xff, 0x06, 0x00, 0xba, 0xff, 0x54, 0xff, 0xef, 0x00, + 0x72, 0x04, 0x94, 0x07, 0x31, 0x11, 0x58, 0x1f, 0x25, 0x2a, 0x45, 0x31, 0x50, 0x32, 0x8e, 0x2d, + 0x4f, 0x2d, 0x13, 0x35, 0x41, 0x38, 0x1a, 0x36, 0x16, 0x32, 0x20, 0x2d, 0xd9, 0x25, 0x8b, 0x1d, + 0x58, 0x13, 0xb3, 0x07, 0x9c, 0x01, 0xdd, 0xfe, 0x77, 0xfa, 0x0f, 0xf7, 0x20, 0xf9, 0x28, 0xf9, + 0xa3, 0xf5, 0x6a, 0xf5, 0xf8, 0xf2, 0x67, 0xf0, 0x50, 0xf1, 0x07, 0xf4, 0x1e, 0xf3, 0x69, 0xf3, + 0xda, 0xf5, 0x9f, 0xf1, 0x72, 0xee, 0xcf, 0xf0, 0x4a, 0xf2, 0x70, 0xf3, 0x57, 0xf6, 0xcf, 0xf6, + 0xa0, 0xf3, 0x8b, 0xf4, 0x9e, 0xf5, 0xd6, 0xf3, 0x8f, 0xf5, 0xfe, 0xf9, 0x56, 0xfa, 0x6f, 0xf9, + 0x48, 0xfc, 0xde, 0xfd, 0xb9, 0xfc, 0x4a, 0xfb, 0xc8, 0xf8, 0x7c, 0xf6, 0x0f, 0xf9, 0x92, 0xfd, + 0xc2, 0xfd, 0x24, 0xfe, 0x2f, 0xfe, 0xad, 0xfe, 0x44, 0xfe, 0x0b, 0xfd, 0x6e, 0xfa, 0x1c, 0xf6, + 0x43, 0xf6, 0x81, 0xf5, 0x38, 0xfc, 0x78, 0x07, 0xb1, 0x14, 0x7c, 0x1b, 0x11, 0x17, 0xb7, 0x0e, + 0xc7, 0x09, 0x3f, 0x0e, 0xf8, 0x0f, 0xc0, 0x0e, 0xf1, 0x0a, 0x51, 0x07, 0x88, 0x01, 0x38, 0xfa, + 0xa8, 0xf1, 0x48, 0xea, 0xc5, 0xe5, 0xbf, 0xe3, 0xe9, 0xe2, 0x8d, 0xe3, 0x02, 0xe8, 0x73, 0xe9, + 0xfd, 0xe6, 0xa9, 0xe7, 0xbb, 0xea, 0x33, 0xed, 0xea, 0xef, 0xbf, 0xf2, 0x4f, 0xf3, 0xc5, 0xf6, + 0xf1, 0xfc, 0xac, 0xfb, 0x7d, 0xf7, 0x77, 0xf9, 0x89, 0xfd, 0x20, 0x02, 0xeb, 0x06, 0x0f, 0x0a, + 0x2c, 0x0a, 0x53, 0x0b, 0x2d, 0x0c, 0xcd, 0x0a, 0xb4, 0x0b, 0x0f, 0x0d, 0x4c, 0x0b, 0xc1, 0x06, + 0x06, 0x06, 0x0c, 0x04, 0xb7, 0x01, 0x98, 0xff, 0x70, 0xfc, 0x96, 0xfb, 0x95, 0xfd, 0x51, 0x01, + 0xeb, 0x01, 0xcf, 0x02, 0xa0, 0x04, 0xbf, 0x05, 0x48, 0x06, 0x94, 0x06, 0x4d, 0x07, 0xfd, 0x09, + 0x62, 0x0c, 0x59, 0x0c, 0xb2, 0x0f, 0xf1, 0x1c, 0xa8, 0x2d, 0x57, 0x38, 0xf5, 0x38, 0xa0, 0x32, + 0xdc, 0x2b, 0xba, 0x2c, 0x41, 0x30, 0xce, 0x2d, 0x5b, 0x28, 0x72, 0x23, 0x7d, 0x1b, 0xe2, 0x11, + 0xaf, 0x0a, 0xd9, 0x02, 0xae, 0xfa, 0xac, 0xf5, 0x8c, 0xf1, 0xfa, 0xee, 0x40, 0xf1, 0xde, 0xf4, + 0x55, 0xf0, 0x17, 0xed, 0xf4, 0xee, 0x6e, 0xf2, 0x94, 0xf5, 0x56, 0xf7, 0x6a, 0xf7, 0x60, 0xf5, + 0x92, 0xf7, 0x9e, 0xf6, 0xf7, 0xf1, 0xf7, 0xef, 0x0d, 0xf0, 0x51, 0xf1, 0xca, 0xf1, 0x4b, 0xf3, + 0x8f, 0xf0, 0x69, 0xed, 0x5b, 0xe9, 0x34, 0xe3, 0xaf, 0xdf, 0xc2, 0xdf, 0xd1, 0xe1, 0xae, 0xe0, + 0x17, 0xe0, 0x9c, 0xdf, 0xbf, 0xde, 0x1a, 0xde, 0x06, 0xdd, 0x96, 0xdc, 0xd1, 0xde, 0x4f, 0xe3, + 0x05, 0xe7, 0x3b, 0xea, 0x28, 0xed, 0x09, 0xf0, 0xc9, 0xf2, 0x25, 0xf6, 0x22, 0xf7, 0x2b, 0xf8, + 0xcf, 0xfb, 0x3e, 0x01, 0xce, 0x04, 0xb8, 0x0d, 0x66, 0x1c, 0x36, 0x2a, 0x26, 0x32, 0xed, 0x30, + 0x68, 0x2b, 0xfc, 0x2a, 0x1b, 0x32, 0x4c, 0x34, 0x29, 0x30, 0xa8, 0x2c, 0xa1, 0x29, 0xaf, 0x24, + 0xe9, 0x1b, 0x89, 0x0f, 0xdc, 0x01, 0x33, 0xfb, 0xcc, 0xfa, 0x05, 0xfa, 0xd5, 0xf8, 0xed, 0xf9, + 0x07, 0xf8, 0x81, 0xf5, 0xab, 0xf6, 0xb2, 0xf8, 0xb2, 0xfa, 0x1a, 0xfe, 0x45, 0x01, 0x1c, 0xff, + 0xf1, 0xff, 0x91, 0x01, 0xeb, 0xfe, 0x1f, 0xfd, 0xa5, 0xfe, 0x65, 0x00, 0x7e, 0x03, 0x8f, 0x07, + 0xbc, 0x05, 0xbd, 0x00, 0x43, 0xfe, 0xaa, 0xfc, 0x5b, 0xfc, 0x67, 0xfd, 0xae, 0xfd, 0x6a, 0xfa, + 0xd5, 0xfa, 0x81, 0xfc, 0x02, 0xfb, 0x70, 0xf8, 0x10, 0xf5, 0x4e, 0xf2, 0x9f, 0xf0, 0xf7, 0xf3, + 0x53, 0xf7, 0xc5, 0xf8, 0x4a, 0xfa, 0xd5, 0xfa, 0xbe, 0xfa, 0x1c, 0xf8, 0xcd, 0xf4, 0x50, 0xf2, + 0x00, 0xf1, 0x1b, 0xf1, 0xde, 0xef, 0x76, 0xf5, 0xa6, 0x01, 0xc7, 0x0e, 0xd8, 0x14, 0x2b, 0x11, + 0x9e, 0x08, 0x89, 0x04, 0xc7, 0x07, 0x8c, 0x0a, 0x0f, 0x08, 0x05, 0x04, 0x99, 0xff, 0x09, 0xfc, + 0x34, 0xf7, 0x40, 0xf0, 0x3b, 0xe9, 0x4d, 0xe5, 0xb4, 0xe6, 0xf8, 0xe8, 0xe2, 0xea, 0x6b, 0xee, + 0xfa, 0xef, 0x41, 0xee, 0x4c, 0xf0, 0xf9, 0xf4, 0x7c, 0xf9, 0xb0, 0xfc, 0xcf, 0xfc, 0x68, 0xfb, + 0x8b, 0xfc, 0x16, 0x00, 0x59, 0x00, 0x43, 0xff, 0xfa, 0x00, 0xb3, 0x04, 0xa0, 0x08, 0x66, 0x0c, + 0xb8, 0x0d, 0x7e, 0x0b, 0x11, 0x0c, 0x55, 0x0d, 0xe5, 0x0d, 0xf5, 0x11, 0x86, 0x16, 0xe4, 0x15, + 0xb7, 0x11, 0x1f, 0x0f, 0x58, 0x0b, 0xf2, 0x09, 0x82, 0x08, 0xbc, 0x03, 0xf7, 0x01, 0xc7, 0x04, + 0x13, 0x08, 0x72, 0x07, 0xde, 0x05, 0x5d, 0x03, 0xfb, 0x00, 0xef, 0x02, 0xf9, 0x03, 0x7e, 0x02, + 0x5e, 0x00, 0x72, 0xff, 0xf4, 0xfe, 0x7e, 0x03, 0x96, 0x10, 0x04, 0x1d, 0xfd, 0x25, 0xc7, 0x25, + 0x44, 0x1f, 0xa6, 0x17, 0xc7, 0x19, 0xfa, 0x1d, 0xc8, 0x1b, 0xb0, 0x19, 0xe7, 0x16, 0x9e, 0x12, + 0x97, 0x0b, 0xb9, 0x04, 0x29, 0xfa, 0xe8, 0xf3, 0x5f, 0xf2, 0x1b, 0xf2, 0x4d, 0xf1, 0x3c, 0xf4, + 0xb5, 0xf7, 0x17, 0xf4, 0xf6, 0xf1, 0x41, 0xf2, 0x03, 0xf6, 0xf1, 0xfa, 0x4d, 0xfd, 0x06, 0xfa, + 0x3b, 0xf9, 0x94, 0xfc, 0x01, 0xfb, 0x6e, 0xf5, 0xe5, 0xf1, 0x85, 0xf1, 0xea, 0xf2, 0x34, 0xf6, + 0x95, 0xf5, 0x83, 0xf1, 0x70, 0xee, 0x7b, 0xeb, 0xcf, 0xe5, 0x44, 0xe4, 0xc6, 0xe5, 0x75, 0xe7, + 0xbc, 0xe6, 0x10, 0xe6, 0x0c, 0xe3, 0x76, 0xdf, 0x18, 0xe0, 0xc2, 0xe0, 0xca, 0xe1, 0x74, 0xe5, + 0xf3, 0xec, 0xb6, 0xf0, 0x96, 0xf3, 0x4e, 0xf5, 0x4d, 0xf3, 0xb8, 0xf3, 0xd2, 0xf7, 0x6b, 0xf9, + 0x38, 0xfa, 0x68, 0xfc, 0x34, 0xfe, 0x01, 0x00, 0xc8, 0x09, 0xc7, 0x17, 0xd8, 0x21, 0xf8, 0x26, + 0x47, 0x22, 0x5d, 0x1c, 0x52, 0x1e, 0xd8, 0x28, 0xfa, 0x2a, 0x2d, 0x26, 0x7b, 0x22, 0x69, 0x1c, + 0x20, 0x16, 0x05, 0x0e, 0x73, 0x03, 0x7c, 0xf8, 0x8f, 0xf5, 0xe0, 0xf4, 0x88, 0xf2, 0xc2, 0xf3, + 0x75, 0xf7, 0x6c, 0xf5, 0x36, 0xf2, 0x63, 0xf4, 0x26, 0xf9, 0x8e, 0x00, 0xb1, 0x05, 0xa5, 0x06, + 0x20, 0x05, 0xea, 0x09, 0xde, 0x0d, 0xe0, 0x0c, 0xec, 0x0a, 0x0d, 0x0c, 0x45, 0x0e, 0x5d, 0x11, + 0x25, 0x14, 0x08, 0x11, 0xcb, 0x0c, 0x55, 0x0b, 0x02, 0x07, 0xdc, 0x02, 0x96, 0x03, 0x40, 0x03, + 0x05, 0xff, 0x21, 0xfc, 0xa8, 0xfa, 0xbe, 0xf7, 0x01, 0xf7, 0xe4, 0xf5, 0x05, 0xf3, 0xf4, 0xf2, + 0x66, 0xf6, 0xd1, 0xf7, 0xfd, 0xf7, 0xbc, 0xfa, 0x86, 0xfb, 0x82, 0xfa, 0xbc, 0xfc, 0xff, 0xfe, + 0xdc, 0xfd, 0x6d, 0xfd, 0x23, 0xfe, 0x73, 0xfb, 0xee, 0xfe, 0xe0, 0x0b, 0x6d, 0x16, 0x1b, 0x1a, + 0x6e, 0x16, 0x9d, 0x10, 0x7c, 0x0a, 0x5f, 0x0b, 0x3a, 0x0a, 0x61, 0x05, 0xd0, 0x01, 0x29, 0xfd, + 0x32, 0xf5, 0xf2, 0xec, 0x22, 0xe8, 0x63, 0xe0, 0xb9, 0xdb, 0xa0, 0xdb, 0x3d, 0xdc, 0xbf, 0xdd, + 0x85, 0xe3, 0x63, 0xe6, 0x7a, 0xe2, 0x49, 0xe4, 0x52, 0xeb, 0xf8, 0xf2, 0xf8, 0xf9, 0x7e, 0xfd, + 0xba, 0xfb, 0x35, 0xfb, 0xf3, 0x00, 0xe5, 0x02, 0x94, 0x00, 0x43, 0x01, 0xad, 0x03, 0x15, 0x06, + 0x9c, 0x09, 0x77, 0x0d, 0x3a, 0x0c, 0x41, 0x0b, 0x97, 0x0c, 0x19, 0x0b, 0xc2, 0x0c, 0x10, 0x11, + 0x1f, 0x12, 0xd0, 0x0d, 0x59, 0x0a, 0x37, 0x08, 0x57, 0x06, 0x51, 0x07, 0x9d, 0x06, 0xb3, 0x05, + 0x29, 0x07, 0x0c, 0x0a, 0xce, 0x09, 0xa6, 0x08, 0x8f, 0x08, 0x85, 0x08, 0xea, 0x0a, 0x6f, 0x0d, + 0x03, 0x0d, 0x07, 0x0b, 0x0a, 0x09, 0x07, 0x07, 0x5e, 0x05, 0x73, 0x0c, 0x3a, 0x18, 0x35, 0x23, + 0x93, 0x29, 0x97, 0x25, 0xbf, 0x1d, 0x4d, 0x1a, 0xc3, 0x1d, 0x01, 0x1e, 0xda, 0x1a, 0x20, 0x18, + 0xb3, 0x12, 0x68, 0x0e, 0x56, 0x08, 0x3a, 0x00, 0x1a, 0xf7, 0xff, 0xf1, 0x63, 0xef, 0x10, 0xee, + 0x5a, 0xf0, 0xbc, 0xf3, 0xce, 0xf1, 0x1e, 0xec, 0x56, 0xeb, 0x00, 0xec, 0xc6, 0xef, 0xeb, 0xf3, + 0xa6, 0xf2, 0x1d, 0xed, 0x54, 0xec, 0x0e, 0xed, 0xe1, 0xe8, 0x1a, 0xe6, 0x44, 0xe7, 0x2e, 0xe8, + 0x7a, 0xea, 0x98, 0xec, 0xe1, 0xea, 0x5e, 0xe6, 0x2c, 0xe5, 0x4b, 0xe2, 0xee, 0xdf, 0x29, 0xe4, + 0x54, 0xe8, 0x08, 0xe9, 0x5a, 0xe7, 0x22, 0xe8, 0x0d, 0xe7, 0x20, 0xea, 0x74, 0xee, 0xb3, 0xef, + 0x2c, 0xf2, 0xc7, 0xf7, 0x11, 0xfc, 0x0c, 0xfc, 0x6b, 0xfe, 0xa2, 0xfe, 0x4b, 0xfd, 0xb4, 0xfe, + 0x73, 0x00, 0x0e, 0xff, 0x01, 0xff, 0x45, 0xff, 0x56, 0xfd, 0x6f, 0xfd, 0xa3, 0x08, 0xa2, 0x15, + 0x71, 0x1f, 0x03, 0x24, 0xf5, 0x1f, 0x6a, 0x19, 0x37, 0x1e, 0x6f, 0x25, 0x43, 0x26, 0xf2, 0x25, + 0x69, 0x25, 0xd2, 0x20, 0x07, 0x1b, 0x9f, 0x16, 0xa0, 0x0b, 0xc4, 0x02, 0xcc, 0xff, 0x24, 0xfd, + 0x54, 0xfa, 0x83, 0xfc, 0x63, 0xff, 0xd6, 0xfa, 0x6d, 0xf7, 0xe4, 0xf6, 0x08, 0xfa, 0x1d, 0xff, + 0x52, 0x02, 0x96, 0xff, 0x75, 0xfc, 0x02, 0x00, 0x67, 0x01, 0x2e, 0xfe, 0x83, 0xfb, 0x86, 0xfc, + 0xf4, 0xfd, 0xed, 0x00, 0x9b, 0x02, 0x23, 0x00, 0x6c, 0xfc, 0x0c, 0xfc, 0xf3, 0xf9, 0x0d, 0xfa, + 0xae, 0xfe, 0xbc, 0x01, 0x71, 0x00, 0xde, 0xfe, 0x0c, 0xfe, 0x3e, 0xfc, 0x51, 0xfc, 0xbe, 0xfb, + 0x41, 0xfc, 0xd1, 0xfe, 0xa4, 0x03, 0x7b, 0x04, 0xb3, 0x03, 0xf2, 0x02, 0x73, 0x01, 0xf4, 0x00, + 0x32, 0x02, 0x24, 0x02, 0x9c, 0xff, 0xb4, 0xfe, 0x9a, 0xfc, 0x31, 0xfb, 0x68, 0xff, 0xeb, 0x0b, + 0x1f, 0x16, 0x91, 0x1a, 0x63, 0x14, 0xc6, 0x0a, 0x91, 0x06, 0x2c, 0x0b, 0x40, 0x0f, 0x74, 0x0b, + 0xeb, 0x05, 0x5d, 0xfe, 0x3b, 0xf8, 0x2b, 0xf1, 0xd9, 0xea, 0xcf, 0xe4, 0x8a, 0xe1, 0xb9, 0xe2, + 0xd2, 0xe3, 0xfb, 0xe5, 0x17, 0xe9, 0x4c, 0xea, 0x4d, 0xe8, 0x71, 0xe7, 0x1d, 0xec, 0x28, 0xf5, + 0x2e, 0xfb, 0x80, 0xfa, 0x43, 0xf7, 0x76, 0xf7, 0xe0, 0xfc, 0x05, 0x01, 0x50, 0xff, 0x67, 0xfe, + 0xa4, 0xff, 0x07, 0x03, 0xfe, 0x05, 0x73, 0x07, 0x26, 0x07, 0x23, 0x07, 0x6f, 0x07, 0x0c, 0x07, + 0x1f, 0x08, 0x5a, 0x07, 0x36, 0x06, 0xee, 0x01, 0x9c, 0xfe, 0x2b, 0xfe, 0x14, 0xff, 0x60, 0xff, + 0xf1, 0xfc, 0x05, 0xfd, 0xb9, 0xfd, 0x63, 0x00, 0xac, 0x01, 0xe7, 0x01, 0x1b, 0x02, 0x76, 0x03, + 0x93, 0x06, 0x80, 0x08, 0x23, 0x09, 0xb0, 0x0a, 0x7d, 0x0b, 0x3d, 0x0a, 0x8a, 0x09, 0x8e, 0x13, + 0xd2, 0x22, 0x1d, 0x30, 0x21, 0x30, 0x70, 0x25, 0x42, 0x1c, 0x85, 0x1d, 0xad, 0x26, 0x69, 0x28, + 0x27, 0x26, 0xf0, 0x20, 0xc7, 0x1b, 0xd0, 0x13, 0x98, 0x0a, 0x75, 0x01, 0x90, 0xfa, 0x80, 0xf8, + 0x0f, 0xf6, 0x45, 0xf5, 0x69, 0xf6, 0x8b, 0xf8, 0x94, 0xf4, 0xeb, 0xec, 0xc5, 0xe9, 0x77, 0xf0, + 0xd0, 0xfc, 0xc5, 0x01, 0x57, 0xfd, 0x24, 0xf8, 0xb7, 0xf7, 0x82, 0xf9, 0x68, 0xf8, 0xa8, 0xf5, + 0x7d, 0xf5, 0x60, 0xf7, 0x7c, 0xf7, 0xb7, 0xf4, 0xd2, 0xf0, 0xc2, 0xec, 0xa9, 0xe9, 0xb6, 0xe6, + 0x5d, 0xe4, 0x49, 0xe6, 0xcd, 0xe7, 0x3c, 0xe5, 0xc3, 0xde, 0xd3, 0xda, 0xca, 0xdb, 0x82, 0xdf, + 0x6c, 0xe2, 0xa8, 0xe1, 0x54, 0xe3, 0x40, 0xe6, 0x27, 0xe9, 0x90, 0xeb, 0x28, 0xed, 0x30, 0xee, + 0x27, 0xf0, 0x86, 0xf3, 0xc0, 0xf5, 0xf4, 0xf4, 0x4d, 0xf3, 0xaf, 0xf2, 0xe2, 0xf1, 0x85, 0xf3, + 0x3a, 0x00, 0xf2, 0x10, 0xf9, 0x1c, 0x60, 0x21, 0x83, 0x1c, 0x20, 0x17, 0x97, 0x1f, 0x29, 0x2d, + 0xc3, 0x2e, 0x79, 0x2b, 0xb9, 0x28, 0x02, 0x24, 0x3c, 0x1e, 0xc6, 0x19, 0x0d, 0x11, 0x36, 0x09, + 0xdd, 0x07, 0x03, 0x06, 0x2d, 0x02, 0x91, 0x02, 0x6c, 0x03, 0x25, 0xfe, 0xe5, 0xf8, 0x82, 0xfa, + 0xce, 0x01, 0xad, 0x08, 0xc0, 0x0a, 0x9d, 0x05, 0x9f, 0x00, 0x36, 0x02, 0x8f, 0x05, 0x6e, 0x04, + 0xa8, 0x03, 0x75, 0x05, 0x84, 0x07, 0xf6, 0x09, 0x14, 0x0a, 0xeb, 0x07, 0x98, 0x05, 0x86, 0x04, + 0x07, 0x02, 0x43, 0x01, 0xac, 0x04, 0xe1, 0x05, 0xfc, 0x00, 0xb7, 0xfa, 0x3e, 0xf8, 0xca, 0xf9, + 0x89, 0xfd, 0x46, 0xfc, 0xbc, 0xf7, 0x97, 0xf7, 0x98, 0xf9, 0x76, 0xf9, 0x93, 0xf7, 0xd7, 0xf5, + 0x22, 0xf3, 0x6a, 0xf2, 0x48, 0xf2, 0x21, 0xf0, 0xa4, 0xee, 0x12, 0xed, 0x94, 0xea, 0x6f, 0xe7, + 0x34, 0xee, 0xea, 0xfe, 0x64, 0x0e, 0x41, 0x11, 0xf8, 0x0a, 0xf0, 0x02, 0x15, 0x03, 0xb0, 0x0c, + 0x23, 0x0f, 0x21, 0x0b, 0xb7, 0x09, 0xea, 0x0a, 0xb2, 0x06, 0xda, 0x00, 0x1c, 0xfb, 0x6e, 0xf3, + 0x84, 0xf0, 0x6d, 0xf1, 0x99, 0xf2, 0x07, 0xf5, 0x45, 0xfa, 0x25, 0xf9, 0x46, 0xf2, 0xe0, 0xef, + 0x2c, 0xf5, 0x4c, 0xff, 0xc8, 0x04, 0xed, 0x01, 0xc1, 0xfb, 0x08, 0xfa, 0x60, 0xfd, 0xdd, 0xfe, + 0xa4, 0xfd, 0x7f, 0xfc, 0x76, 0xff, 0xaf, 0x04, 0x7b, 0x07, 0x63, 0x08, 0x19, 0x07, 0x77, 0x05, + 0x89, 0x04, 0x6c, 0x06, 0x46, 0x0c, 0x0b, 0x11, 0xe7, 0x0f, 0x4d, 0x08, 0x5c, 0x01, 0x1e, 0x00, + 0xcb, 0x02, 0x9f, 0x03, 0x47, 0xff, 0xc4, 0xfb, 0x50, 0xfb, 0x20, 0xfd, 0xc7, 0xfd, 0xd4, 0xfc, + 0xd6, 0xfb, 0x09, 0xfb, 0x32, 0xfd, 0x9a, 0xfe, 0x30, 0xfe, 0x69, 0xfc, 0x37, 0xfa, 0x43, 0xf7, + 0x95, 0xf7, 0x6f, 0x04, 0xce, 0x15, 0xe1, 0x21, 0xbb, 0x22, 0x37, 0x1a, 0x85, 0x13, 0x50, 0x19, + 0x4a, 0x25, 0xe6, 0x27, 0x43, 0x24, 0x59, 0x20, 0x97, 0x1a, 0xff, 0x14, 0xd0, 0x0f, 0xb0, 0x07, + 0x41, 0xfe, 0xf6, 0xf9, 0x50, 0xf9, 0xdf, 0xf9, 0xc3, 0xfd, 0xa4, 0xfe, 0x8c, 0xf9, 0xce, 0xf2, + 0xe2, 0xf2, 0x3f, 0xf9, 0xee, 0xff, 0x8e, 0xff, 0xdf, 0xf8, 0x40, 0xf4, 0x09, 0xf7, 0xd0, 0xfb, + 0x43, 0xfb, 0xcb, 0xf7, 0x0d, 0xf6, 0x0b, 0xf7, 0xad, 0xf8, 0xcc, 0xf8, 0x13, 0xf6, 0x6a, 0xef, + 0xbe, 0xe8, 0x32, 0xe4, 0x94, 0xe3, 0xa6, 0xe5, 0x4c, 0xe5, 0x4a, 0xdf, 0x33, 0xd9, 0x64, 0xd8, + 0x93, 0xda, 0x37, 0xde, 0x60, 0xe0, 0x45, 0xe0, 0x10, 0xe2, 0x68, 0xe7, 0x00, 0xec, 0x8f, 0xee, + 0x99, 0xf0, 0xda, 0xf0, 0x6e, 0xee, 0xe2, 0xef, 0x77, 0xf5, 0x6f, 0xf8, 0x64, 0xf9, 0x09, 0xf8, + 0xd8, 0xf7, 0x87, 0xfd, 0x6c, 0x0e, 0x90, 0x1c, 0xfd, 0x22, 0x71, 0x24, 0xf9, 0x20, 0xbb, 0x1f, + 0xc3, 0x27, 0x1d, 0x2f, 0xc8, 0x2c, 0x7c, 0x29, 0x42, 0x26, 0xff, 0x1f, 0xed, 0x19, 0xc0, 0x12, + 0x35, 0x07, 0xaf, 0xff, 0x69, 0xff, 0x65, 0xff, 0x2e, 0xfe, 0x60, 0xff, 0xb7, 0xfc, 0x66, 0xf5, + 0x7d, 0xf2, 0x2a, 0xf5, 0x3a, 0xfd, 0x1b, 0x06, 0x23, 0x09, 0x36, 0x04, 0xdf, 0x02, 0xa3, 0x08, + 0xb9, 0x0d, 0xd3, 0x0e, 0x21, 0x0d, 0x47, 0x0b, 0xf0, 0x0b, 0x20, 0x0e, 0xc0, 0x0c, 0x80, 0x09, + 0xc1, 0x05, 0xaf, 0x03, 0x7d, 0x02, 0x7e, 0x04, 0x79, 0x06, 0x6f, 0x03, 0xb6, 0xfd, 0xba, 0xf6, + 0x48, 0xf3, 0x50, 0xf4, 0x7c, 0xf8, 0x0f, 0xf8, 0x25, 0xf5, 0x61, 0xf4, 0x7a, 0xf5, 0x04, 0xf8, + 0x39, 0xf9, 0xf2, 0xf8, 0x85, 0xf7, 0x87, 0xf7, 0xc5, 0xf9, 0x3a, 0xfc, 0x27, 0xfe, 0x99, 0xfd, + 0x99, 0xfa, 0xed, 0xf6, 0xe7, 0xfb, 0x8b, 0x0a, 0xe0, 0x18, 0xfe, 0x1f, 0xfa, 0x19, 0x47, 0x0e, + 0x74, 0x08, 0x17, 0x0d, 0x2c, 0x12, 0xcf, 0x12, 0x8e, 0x0d, 0x02, 0x03, 0x70, 0xf9, 0x39, 0xf3, + 0x9b, 0xed, 0xc9, 0xe6, 0x63, 0xe2, 0xa0, 0xe1, 0x73, 0xe3, 0x32, 0xe7, 0x87, 0xe8, 0x08, 0xe5, + 0xc8, 0xdf, 0x50, 0xdf, 0x82, 0xe4, 0x33, 0xef, 0x98, 0xf7, 0x68, 0xf6, 0x44, 0xf0, 0xb0, 0xed, + 0xf8, 0xf0, 0x21, 0xf6, 0x81, 0xf9, 0x76, 0xf9, 0x41, 0xfa, 0x72, 0xfe, 0xb0, 0x02, 0x03, 0x06, + 0x58, 0x07, 0x38, 0x07, 0xf0, 0x06, 0x17, 0x07, 0x19, 0x0b, 0xd6, 0x0d, 0xf9, 0x0b, 0x8f, 0x06, + 0x04, 0x02, 0xfe, 0x01, 0xe2, 0x05, 0xf1, 0x08, 0x43, 0x05, 0xfd, 0x00, 0x7e, 0xff, 0x7b, 0x00, + 0x01, 0x02, 0xc6, 0x03, 0x09, 0x03, 0xc2, 0x00, 0x7e, 0x01, 0xe5, 0x03, 0x60, 0x04, 0x6f, 0x04, + 0x06, 0x05, 0x0f, 0x04, 0x73, 0x04, 0x30, 0x0e, 0x5f, 0x1d, 0x39, 0x29, 0x7d, 0x2b, 0x8c, 0x22, + 0xeb, 0x1b, 0x2d, 0x21, 0x91, 0x2a, 0x08, 0x2a, 0xeb, 0x24, 0x86, 0x20, 0x76, 0x1c, 0x21, 0x18, + 0xac, 0x0f, 0xd1, 0x06, 0xd2, 0x01, 0x50, 0x01, 0xf1, 0xfd, 0x1c, 0xf9, 0xf8, 0xf6, 0x7a, 0xf5, + 0x9c, 0xf0, 0x5d, 0xe9, 0xc0, 0xe6, 0x49, 0xeb, 0x27, 0xf6, 0x9f, 0xf8, 0x40, 0xf0, 0xd5, 0xe9, + 0xc1, 0xea, 0x60, 0xef, 0x82, 0xf1, 0x51, 0xf0, 0x65, 0xee, 0x42, 0xf0, 0xf7, 0xf3, 0xe4, 0xf3, + 0xe9, 0xf1, 0xb2, 0xee, 0xdd, 0xeb, 0xb9, 0xe9, 0xc8, 0xea, 0x7e, 0xee, 0xb2, 0xee, 0xec, 0xec, + 0xad, 0xe8, 0x49, 0xe7, 0x36, 0xeb, 0x3a, 0xf1, 0x3b, 0xf1, 0xa5, 0xee, 0x42, 0xf0, 0xf9, 0xf2, + 0x6a, 0xf6, 0x17, 0xf8, 0xc0, 0xf9, 0xd6, 0xfa, 0xd8, 0xfb, 0x00, 0xfd, 0xb1, 0xfd, 0xc0, 0xfc, + 0xe2, 0xfa, 0x42, 0xf9, 0x58, 0xf8, 0x0a, 0xfd, 0x61, 0x0b, 0xc1, 0x1a, 0x5f, 0x24, 0x02, 0x24, + 0xc7, 0x1c, 0xc1, 0x18, 0xf7, 0x20, 0xe3, 0x2c, 0x76, 0x31, 0x92, 0x2e, 0x8e, 0x27, 0x21, 0x1e, + 0x69, 0x16, 0x8a, 0x11, 0xac, 0x0b, 0x18, 0x04, 0xb8, 0xfe, 0xc2, 0xfa, 0x2d, 0xf8, 0x1a, 0xf8, + 0x79, 0xf7, 0xc5, 0xf1, 0x85, 0xec, 0x77, 0xef, 0x42, 0xf7, 0x57, 0x01, 0xac, 0x03, 0x30, 0xfd, + 0x84, 0xf7, 0x8b, 0xfa, 0x85, 0x01, 0x82, 0x04, 0x88, 0x03, 0x0f, 0x01, 0xac, 0x01, 0xd4, 0x03, + 0x83, 0x05, 0x23, 0x05, 0xf6, 0x02, 0x05, 0x01, 0x8e, 0xfe, 0x51, 0xff, 0x33, 0x03, 0x58, 0x03, + 0x32, 0xfd, 0x75, 0xf5, 0x78, 0xf2, 0x69, 0xf4, 0x48, 0xf9, 0x31, 0xf9, 0x32, 0xf5, 0xe0, 0xf3, + 0x6c, 0xf7, 0xe9, 0xfa, 0x2c, 0xfc, 0xf8, 0xfc, 0x12, 0xfb, 0x92, 0xf9, 0x99, 0xfc, 0x6d, 0xff, + 0x73, 0xfe, 0x35, 0xfe, 0x55, 0xfd, 0x68, 0xfa, 0xe8, 0x00, 0x23, 0x10, 0xc2, 0x1b, 0x58, 0x1d, + 0xbe, 0x17, 0x96, 0x0c, 0xdb, 0x06, 0xc4, 0x0f, 0x90, 0x14, 0xd5, 0x0f, 0xff, 0x08, 0xa2, 0x02, + 0xfa, 0xf8, 0x56, 0xf2, 0x5e, 0xf0, 0xbb, 0xe8, 0xc3, 0xe3, 0xb7, 0xe3, 0x7e, 0xe4, 0x6e, 0xe4, + 0x81, 0xe8, 0x41, 0xe8, 0xcd, 0xe0, 0xf0, 0xe1, 0x02, 0xe9, 0x53, 0xf1, 0x65, 0xf9, 0xff, 0xf9, + 0xa3, 0xf2, 0x17, 0xf0, 0x4c, 0xf8, 0xa5, 0xfe, 0x9d, 0x00, 0x0b, 0x02, 0x73, 0x02, 0xf3, 0x02, + 0x22, 0x06, 0x48, 0x08, 0x24, 0x05, 0x38, 0x03, 0x50, 0x04, 0x0e, 0x04, 0x41, 0x07, 0xc0, 0x0a, + 0x11, 0x06, 0xd7, 0xfc, 0x6b, 0xf7, 0x8f, 0xf6, 0x93, 0xf9, 0x2b, 0xfe, 0xbb, 0xfc, 0x96, 0xf8, + 0x4f, 0xf8, 0x9c, 0xfa, 0xe2, 0xfb, 0x5b, 0xfd, 0xc1, 0xff, 0x6a, 0x00, 0xd0, 0x04, 0xf0, 0x0b, + 0x04, 0x0e, 0x7b, 0x0d, 0x37, 0x0e, 0x72, 0x0d, 0xef, 0x0b, 0x86, 0x13, 0x0d, 0x21, 0x53, 0x2b, + 0xcc, 0x2f, 0x96, 0x2a, 0x43, 0x21, 0x59, 0x22, 0x04, 0x2f, 0x06, 0x34, 0xee, 0x2d, 0x52, 0x27, + 0x79, 0x21, 0x95, 0x1b, 0xbe, 0x15, 0xee, 0x0c, 0x1c, 0x02, 0x31, 0xfe, 0xab, 0xfd, 0xd7, 0xfb, + 0x8b, 0xfa, 0x40, 0xfb, 0xbb, 0xf6, 0x2e, 0xef, 0x91, 0xed, 0xf3, 0xf1, 0x61, 0xfc, 0xd0, 0x02, + 0x04, 0xfd, 0x29, 0xf3, 0xb6, 0xf0, 0x0d, 0xf6, 0xab, 0xf9, 0x6e, 0xf8, 0x91, 0xf4, 0xe7, 0xf1, + 0x6e, 0xf2, 0xc9, 0xf1, 0xe5, 0xee, 0x24, 0xeb, 0x64, 0xe9, 0x0b, 0xe6, 0x70, 0xe3, 0x7e, 0xe4, + 0x37, 0xe3, 0x16, 0xdf, 0xa8, 0xd9, 0x8e, 0xd6, 0x3c, 0xd8, 0xd4, 0xde, 0x69, 0xe2, 0x13, 0xe1, + 0x2a, 0xe1, 0x2f, 0xe4, 0x06, 0xe9, 0xfd, 0xed, 0x0b, 0xf0, 0x87, 0xef, 0xb9, 0xee, 0x5e, 0xf2, + 0x3b, 0xf6, 0x9f, 0xf7, 0xe2, 0xf6, 0xf1, 0xf4, 0x3b, 0xf5, 0xdc, 0xfa, 0x55, 0x09, 0x2b, 0x16, + 0x4a, 0x20, 0xae, 0x23, 0x9f, 0x22, 0xd5, 0x21, 0x87, 0x27, 0x7a, 0x2e, 0x55, 0x31, 0x96, 0x31, + 0x98, 0x2b, 0x7f, 0x23, 0xa0, 0x1b, 0x49, 0x16, 0x93, 0x0e, 0xb7, 0x07, 0xe5, 0x05, 0x06, 0x05, + 0x23, 0x04, 0x89, 0x01, 0x4d, 0xfc, 0x4c, 0xf5, 0x38, 0xf1, 0xba, 0xf2, 0x6a, 0xf8, 0x53, 0x03, + 0x89, 0x08, 0x3a, 0x03, 0x0a, 0xfc, 0x78, 0xfa, 0x64, 0xfe, 0x5e, 0x03, 0x1d, 0x04, 0xc3, 0x00, + 0x64, 0xfe, 0x21, 0x00, 0xb5, 0x00, 0x5e, 0xfe, 0x02, 0xfc, 0x93, 0xfa, 0xf4, 0xf9, 0x8c, 0xf9, + 0xd2, 0xfb, 0x83, 0xfb, 0x59, 0xf8, 0xa4, 0xf3, 0x59, 0xf1, 0xc5, 0xf3, 0xbd, 0xf9, 0x18, 0xfc, + 0x14, 0xf8, 0x3c, 0xf6, 0x7d, 0xf7, 0x61, 0xf9, 0x3d, 0xfa, 0x52, 0xfb, 0xda, 0xfb, 0x7e, 0xfb, + 0x6e, 0xfe, 0x7e, 0xff, 0xf7, 0xfc, 0xa4, 0xfb, 0x21, 0xfc, 0x2a, 0xfc, 0xe1, 0xfd, 0x6b, 0x09, + 0x24, 0x18, 0x91, 0x21, 0x10, 0x20, 0x29, 0x14, 0x69, 0x0d, 0xc7, 0x12, 0x54, 0x1c, 0x49, 0x1c, + 0x15, 0x18, 0xd3, 0x11, 0xea, 0x08, 0x60, 0x01, 0x4d, 0xfc, 0x5c, 0xf8, 0x22, 0xf4, 0x34, 0xf2, + 0x70, 0xed, 0x2c, 0xeb, 0xe6, 0xec, 0x56, 0xed, 0x45, 0xea, 0x77, 0xe6, 0x76, 0xe7, 0x2b, 0xed, + 0x01, 0xf7, 0x21, 0xfb, 0x79, 0xf5, 0xad, 0xef, 0xaa, 0xf0, 0x44, 0xf6, 0xf2, 0xfa, 0xa5, 0xfc, + 0xf4, 0xfb, 0xd7, 0xfb, 0x12, 0x00, 0x3a, 0x03, 0x4b, 0x04, 0xc2, 0x03, 0x07, 0x02, 0xab, 0xff, + 0x92, 0xfe, 0x15, 0x01, 0xea, 0x00, 0x5d, 0xfc, 0xa0, 0xf5, 0x91, 0xf1, 0x48, 0xf3, 0x27, 0xf9, + 0x90, 0xfb, 0x33, 0xf8, 0x8c, 0xf5, 0x70, 0xf6, 0xc1, 0xf9, 0x53, 0xfe, 0x79, 0x03, 0x6b, 0x05, + 0x70, 0x04, 0xff, 0x06, 0x3d, 0x0c, 0xe4, 0x0d, 0x69, 0x0e, 0xf0, 0x0e, 0x4b, 0x0c, 0x4c, 0x0e, + 0x54, 0x1a, 0x47, 0x26, 0x31, 0x2f, 0x2e, 0x2f, 0x05, 0x27, 0x0b, 0x20, 0xe6, 0x26, 0xc3, 0x2f, + 0xda, 0x2f, 0x3f, 0x2a, 0x42, 0x21, 0xf8, 0x18, 0x85, 0x13, 0xa1, 0x10, 0x76, 0x0a, 0xa0, 0x01, + 0x4d, 0xfc, 0x38, 0xf8, 0x8c, 0xf5, 0xb9, 0xf5, 0xc5, 0xf2, 0x3a, 0xec, 0x86, 0xe7, 0xb1, 0xe8, + 0xd8, 0xed, 0xef, 0xf6, 0x7b, 0xf9, 0xb6, 0xf2, 0x99, 0xec, 0xb5, 0xed, 0xbe, 0xf2, 0xe0, 0xf5, + 0x5f, 0xf7, 0xc1, 0xf3, 0x27, 0xf0, 0xa7, 0xf0, 0x97, 0xef, 0x0b, 0xec, 0x53, 0xe9, 0x19, 0xe6, + 0x94, 0xe1, 0x0c, 0xe1, 0x62, 0xe4, 0x9c, 0xe4, 0xb5, 0xe1, 0xc4, 0xdc, 0x99, 0xd9, 0x12, 0xdc, + 0xb5, 0xe3, 0xad, 0xe7, 0x5c, 0xe6, 0xaf, 0xe6, 0x29, 0xe9, 0xc7, 0xec, 0x54, 0xf1, 0x4b, 0xf5, + 0x8f, 0xf6, 0xb4, 0xf6, 0xf7, 0xfa, 0xdc, 0xfe, 0x71, 0x01, 0x78, 0x03, 0x5e, 0x02, 0x5c, 0x02, + 0xe4, 0x05, 0x07, 0x10, 0x41, 0x1d, 0x6b, 0x29, 0x27, 0x2d, 0xc9, 0x26, 0x83, 0x22, 0x3c, 0x25, + 0xe8, 0x2d, 0xb1, 0x31, 0xed, 0x2c, 0x2e, 0x24, 0xe5, 0x19, 0xbd, 0x12, 0x1d, 0x0f, 0x2c, 0x0b, + 0xcd, 0x04, 0x8a, 0xff, 0x18, 0xfa, 0x28, 0xf6, 0xad, 0xf5, 0x2e, 0xf4, 0x08, 0xf1, 0x90, 0xee, + 0x5f, 0xf0, 0x74, 0xf6, 0xc8, 0xfe, 0xc2, 0x02, 0x6a, 0xfe, 0x21, 0xf7, 0x1b, 0xf6, 0xd9, 0xfb, + 0x28, 0x01, 0xee, 0x02, 0xd0, 0x00, 0xe0, 0xfd, 0x7b, 0xfe, 0x38, 0x02, 0xb0, 0x03, 0xa6, 0x03, + 0x42, 0x02, 0xff, 0xff, 0x82, 0xff, 0x90, 0x02, 0x6e, 0x04, 0xf3, 0x00, 0xbe, 0xfb, 0x61, 0xf9, + 0x5b, 0xfb, 0xf5, 0x00, 0xe7, 0x03, 0xae, 0x01, 0xc0, 0xfe, 0x98, 0xfe, 0x93, 0xff, 0xc0, 0x01, + 0x10, 0x04, 0x51, 0x03, 0x36, 0x00, 0xd0, 0xfe, 0xb2, 0x00, 0xf4, 0x01, 0x6d, 0x03, 0x6d, 0x02, + 0x97, 0xfe, 0x8f, 0xfc, 0x5c, 0x06, 0x37, 0x13, 0x4d, 0x1a, 0x76, 0x17, 0x56, 0x0d, 0xa6, 0x05, + 0x97, 0x09, 0xc3, 0x10, 0x9c, 0x10, 0x2a, 0x0e, 0xfe, 0x08, 0x07, 0xff, 0x50, 0xf6, 0xd0, 0xf4, + 0x65, 0xf3, 0x70, 0xf0, 0x37, 0xec, 0x64, 0xe7, 0xce, 0xe4, 0xf4, 0xe6, 0xa8, 0xe7, 0x83, 0xe2, + 0x57, 0xdf, 0xdc, 0xe0, 0xcf, 0xe5, 0x25, 0xed, 0x87, 0xf2, 0xbf, 0xed, 0xc7, 0xe7, 0xf2, 0xe8, + 0x99, 0xef, 0x62, 0xf6, 0x85, 0xfa, 0x2a, 0xfb, 0x19, 0xfb, 0x5e, 0xff, 0xdc, 0x04, 0x4e, 0x06, + 0x77, 0x05, 0xff, 0x05, 0x4e, 0x06, 0x75, 0x06, 0x54, 0x09, 0x9c, 0x0b, 0xb5, 0x08, 0x3a, 0x03, + 0xef, 0xff, 0xc4, 0x01, 0xad, 0x06, 0x43, 0x0b, 0xb1, 0x08, 0x09, 0x02, 0x7d, 0xff, 0x74, 0x01, + 0xe5, 0x04, 0xf5, 0x08, 0x7b, 0x0c, 0x75, 0x0b, 0x53, 0x0b, 0xf9, 0x0e, 0x51, 0x0e, 0x1c, 0x0a, + 0xe7, 0x07, 0xc7, 0x06, 0x3c, 0x04, 0xa7, 0x08, 0xe1, 0x15, 0xf7, 0x1d, 0x6b, 0x21, 0x3f, 0x1e, + 0xd4, 0x15, 0xa8, 0x12, 0x7f, 0x1f, 0x93, 0x28, 0xf2, 0x24, 0x1d, 0x21, 0x38, 0x1b, 0x70, 0x14, + 0x26, 0x0f, 0xf3, 0x09, 0xd8, 0xff, 0x3e, 0xfd, 0x34, 0xff, 0xbe, 0xf9, 0x10, 0xf3, 0x6e, 0xf1, + 0x19, 0xee, 0xb3, 0xe8, 0xd8, 0xe8, 0x59, 0xec, 0x54, 0xf0, 0x1c, 0xf6, 0xca, 0xf4, 0xc4, 0xeb, + 0xee, 0xe8, 0xb1, 0xef, 0xde, 0xf6, 0x2b, 0xf9, 0x6c, 0xf8, 0x43, 0xf4, 0x0f, 0xf2, 0x79, 0xf3, + 0xe9, 0xf2, 0x7d, 0xf1, 0x3e, 0xf1, 0x32, 0xf2, 0xc3, 0xf0, 0xcf, 0xef, 0x84, 0xef, 0x7d, 0xec, + 0xab, 0xe9, 0xe2, 0xe8, 0xa2, 0xeb, 0xfd, 0xef, 0x79, 0xf5, 0x20, 0xf6, 0x66, 0xf2, 0xec, 0xf1, + 0x0d, 0xf5, 0x1b, 0xfa, 0xd4, 0xfb, 0xb9, 0xfc, 0x29, 0xfb, 0x31, 0xfa, 0xa0, 0xfc, 0xe1, 0xfe, + 0xe6, 0xfc, 0x5a, 0xf9, 0x5b, 0xf9, 0xdb, 0xfb, 0xe8, 0xfe, 0x72, 0x08, 0xcf, 0x14, 0x37, 0x1e, + 0x22, 0x20, 0xeb, 0x1a, 0x5f, 0x13, 0x3b, 0x15, 0xce, 0x1f, 0xad, 0x21, 0xa7, 0x1d, 0x34, 0x1a, + 0x14, 0x15, 0xb3, 0x0d, 0x24, 0x08, 0x61, 0x02, 0x9b, 0xfc, 0xfe, 0xfb, 0xbe, 0xfa, 0xe1, 0xf5, + 0xfd, 0xf3, 0x27, 0xf4, 0x9b, 0xf1, 0x38, 0xef, 0x45, 0xf2, 0x38, 0xf8, 0x8b, 0xfe, 0xcf, 0x04, + 0xc4, 0x01, 0x31, 0xfc, 0xff, 0xfb, 0x2b, 0x01, 0x20, 0x07, 0xf1, 0x0a, 0xde, 0x0b, 0xca, 0x09, + 0x1a, 0x09, 0xe5, 0x09, 0xda, 0x09, 0xd2, 0x09, 0xf2, 0x0a, 0xc6, 0x0b, 0x4e, 0x0a, 0x4f, 0x09, + 0x31, 0x07, 0x1c, 0x03, 0xdb, 0x00, 0xaa, 0xff, 0xd8, 0xff, 0x50, 0x01, 0x1d, 0x03, 0x75, 0x02, + 0xf2, 0x00, 0x4a, 0x00, 0x4a, 0x01, 0xf0, 0x02, 0xa8, 0x02, 0x0e, 0x02, 0x2e, 0x01, 0xa1, 0x00, + 0xa9, 0x02, 0x34, 0x02, 0xce, 0xfe, 0x2e, 0xf9, 0xc3, 0xf6, 0x0e, 0xf4, 0xf7, 0xf3, 0x54, 0xfd, + 0x18, 0x08, 0xb9, 0x0b, 0x03, 0x07, 0xa7, 0xfe, 0xa0, 0xf8, 0x6c, 0x01, 0x41, 0x0d, 0xf1, 0x0a, + 0x12, 0x05, 0xef, 0x01, 0xd9, 0xfd, 0x79, 0xf9, 0xa7, 0xf7, 0x46, 0xf3, 0xbf, 0xee, 0x9e, 0xee, + 0xbd, 0xeb, 0x7e, 0xe7, 0x71, 0xe8, 0xde, 0xea, 0x97, 0xe9, 0x94, 0xe6, 0xef, 0xe9, 0x2d, 0xef, + 0x40, 0xf5, 0x68, 0xf8, 0x42, 0xf5, 0xb0, 0xf0, 0x1f, 0xf4, 0x4e, 0xff, 0x71, 0x07, 0x2f, 0x0b, + 0x6a, 0x0c, 0xb9, 0x09, 0x47, 0x08, 0x27, 0x09, 0xb3, 0x09, 0x83, 0x07, 0x5e, 0x05, 0xf3, 0x03, + 0xcc, 0x00, 0xc6, 0x01, 0xce, 0x00, 0xa8, 0xfb, 0xc6, 0xf7, 0x1e, 0xf7, 0x65, 0xf8, 0xd1, 0xfc, + 0x9c, 0x01, 0x4f, 0xff, 0x11, 0xfe, 0x74, 0xff, 0x0a, 0x01, 0x88, 0x03, 0xa3, 0x06, 0xff, 0x06, + 0x48, 0x03, 0xeb, 0x01, 0x47, 0x02, 0x8c, 0x00, 0x9e, 0xfe, 0x39, 0xfe, 0xd9, 0xfe, 0x17, 0x00, + 0x14, 0x07, 0x8c, 0x0f, 0x8d, 0x16, 0x74, 0x1b, 0x49, 0x18, 0x2a, 0x12, 0xc8, 0x12, 0x73, 0x1a, + 0x7e, 0x20, 0x45, 0x22, 0x76, 0x1f, 0x15, 0x17, 0x0b, 0x10, 0xa4, 0x0c, 0xd7, 0x07, 0xc5, 0x03, + 0xfb, 0x01, 0x70, 0x00, 0x06, 0xfc, 0xa6, 0xf8, 0xde, 0xf5, 0x45, 0xf1, 0x99, 0xf0, 0xc1, 0xf0, + 0x39, 0xf2, 0x9d, 0xf7, 0x67, 0xfe, 0x06, 0xfe, 0x18, 0xf9, 0xc9, 0xf7, 0x15, 0xfa, 0x2d, 0xff, + 0x20, 0x03, 0x7d, 0x00, 0x3e, 0xfa, 0xb9, 0xf6, 0x8b, 0xf5, 0x34, 0xf3, 0xe2, 0xf1, 0x67, 0xf3, + 0x5e, 0xf0, 0xd9, 0xee, 0xdc, 0xee, 0xde, 0xee, 0xad, 0xed, 0x27, 0xec, 0x81, 0xe9, 0xd5, 0xe8, + 0x9e, 0xed, 0xc2, 0xf2, 0xbb, 0xf3, 0x39, 0xf0, 0xf9, 0xed, 0xb0, 0xed, 0xca, 0xf0, 0x6a, 0xf4, + 0x52, 0xf5, 0xa2, 0xf4, 0xfc, 0xf2, 0x83, 0xf3, 0xd4, 0xf5, 0x0a, 0xfa, 0xf0, 0xfd, 0x59, 0xff, + 0xfd, 0xfe, 0xcc, 0xfd, 0xf2, 0x00, 0x29, 0x0b, 0x6f, 0x16, 0x72, 0x1a, 0xda, 0x18, 0xcf, 0x13, + 0xd9, 0x13, 0xf6, 0x1a, 0xff, 0x24, 0xea, 0x26, 0x55, 0x20, 0x2f, 0x16, 0xed, 0x0a, 0xb4, 0x06, + 0x88, 0x07, 0x79, 0x07, 0x26, 0x02, 0xf8, 0xfd, 0x51, 0xfa, 0xf6, 0xf7, 0x3c, 0xf6, 0x66, 0xf4, + 0x98, 0xf3, 0x47, 0xf3, 0x99, 0xf8, 0x34, 0xfe, 0xd9, 0x02, 0x63, 0x04, 0x33, 0x00, 0x53, 0xfd, + 0xe6, 0xff, 0x0e, 0x08, 0xd2, 0x0e, 0x01, 0x0f, 0x75, 0x0a, 0x2f, 0x08, 0x86, 0x0a, 0x06, 0x0d, + 0x9b, 0x0e, 0x2d, 0x0d, 0xb0, 0x09, 0xb3, 0x07, 0x72, 0x07, 0xf1, 0x07, 0x9d, 0x06, 0x5b, 0x03, + 0xb4, 0xff, 0xfa, 0xfd, 0xe8, 0x01, 0x3a, 0x06, 0x6b, 0x04, 0xb5, 0xfc, 0x3c, 0xf8, 0xc0, 0xf6, + 0x26, 0xf8, 0xfe, 0xf9, 0x16, 0xfa, 0x53, 0xf8, 0xa9, 0xf6, 0xae, 0xf4, 0x3c, 0xf6, 0x07, 0xf8, + 0xdf, 0xf5, 0xe3, 0xf0, 0x06, 0xed, 0x3e, 0xed, 0x43, 0xed, 0xae, 0xf4, 0x5c, 0x00, 0x1a, 0x08, + 0x08, 0x06, 0xa6, 0xfe, 0x07, 0xf9, 0x8e, 0xfc, 0x85, 0x0b, 0x65, 0x12, 0x87, 0x10, 0xf8, 0x09, + 0x7c, 0x02, 0x47, 0xfc, 0xc7, 0xfb, 0x74, 0xfb, 0xef, 0xf5, 0x69, 0xf0, 0xa2, 0xec, 0xe3, 0xe8, + 0x0c, 0xe7, 0x25, 0xe7, 0x08, 0xe5, 0x42, 0xe4, 0x9e, 0xe8, 0x88, 0xee, 0xee, 0xf4, 0x54, 0xfa, + 0x73, 0xfa, 0x45, 0xf8, 0x4e, 0xfb, 0x3f, 0x03, 0x63, 0x09, 0x7d, 0x0b, 0x4c, 0x09, 0xe8, 0x04, + 0xe7, 0x04, 0x14, 0x09, 0x02, 0x0b, 0x7b, 0x09, 0x49, 0x06, 0xff, 0x05, 0xbf, 0x07, 0xd2, 0x0a, + 0x8d, 0x0c, 0x54, 0x0a, 0xf8, 0x06, 0xe4, 0x05, 0xe0, 0x07, 0xa7, 0x09, 0x22, 0x0c, 0x0d, 0x0b, + 0x34, 0x06, 0xbe, 0x03, 0x11, 0x06, 0x8e, 0x09, 0x9f, 0x0a, 0x91, 0x0a, 0x02, 0x08, 0x6c, 0x04, + 0xdf, 0x03, 0xbc, 0x04, 0xe8, 0x04, 0xff, 0x02, 0xe5, 0x01, 0x04, 0x02, 0x24, 0x04, 0x6e, 0x0b, + 0x08, 0x14, 0xb2, 0x18, 0x27, 0x1a, 0xc6, 0x16, 0x30, 0x14, 0xae, 0x15, 0x2f, 0x1e, 0xcb, 0x24, + 0x2a, 0x25, 0x7d, 0x1f, 0xde, 0x16, 0xd1, 0x0e, 0x50, 0x09, 0x36, 0x08, 0x9d, 0x05, 0x8e, 0x01, + 0x2b, 0xfd, 0x30, 0xf8, 0x9c, 0xf3, 0xa1, 0xf1, 0xd7, 0xee, 0xf0, 0xeb, 0xcf, 0xe9, 0x31, 0xeb, + 0xd2, 0xee, 0x0a, 0xf3, 0x1a, 0xf4, 0xfe, 0xef, 0x5b, 0xed, 0x90, 0xed, 0xfd, 0xf0, 0xa1, 0xf3, + 0xf8, 0xf3, 0xfc, 0xf1, 0x64, 0xf0, 0xde, 0xf1, 0xb4, 0xf3, 0x74, 0xf4, 0x7a, 0xf5, 0x84, 0xf6, + 0x4a, 0xf6, 0x97, 0xf6, 0x4b, 0xf8, 0xdf, 0xfa, 0xa7, 0xfc, 0xd0, 0xfb, 0xe6, 0xf8, 0x18, 0xfa, + 0x9a, 0xfc, 0xef, 0xfc, 0x64, 0xfa, 0x96, 0xf7, 0xa0, 0xf6, 0x5b, 0xf7, 0x17, 0xfa, 0x1a, 0xfa, + 0x15, 0xfa, 0x4e, 0xfa, 0x8a, 0xfa, 0x78, 0xfa, 0xcf, 0xfc, 0xda, 0xfc, 0x33, 0xf9, 0x7b, 0xf3, + 0xb9, 0xed, 0x09, 0xec, 0xda, 0xf1, 0xec, 0xfc, 0x05, 0x05, 0xb2, 0x08, 0xf1, 0x05, 0x94, 0xfe, + 0x23, 0xfd, 0x37, 0x0a, 0x0a, 0x16, 0x37, 0x17, 0x20, 0x13, 0x33, 0x0e, 0x98, 0x0a, 0xff, 0x0a, + 0x06, 0x0a, 0xdb, 0x02, 0x78, 0xff, 0xf8, 0xfd, 0x14, 0xfa, 0x24, 0xf6, 0x4c, 0xf6, 0xbc, 0xf5, + 0x30, 0xf5, 0xe4, 0xf7, 0x1d, 0xfc, 0x10, 0x00, 0x4b, 0x06, 0x6b, 0x08, 0xeb, 0x00, 0x97, 0xfe, + 0x03, 0x05, 0x4e, 0x0b, 0xec, 0x0f, 0xac, 0x12, 0x9d, 0x0e, 0x02, 0x0b, 0xbd, 0x0c, 0xc2, 0x0e, + 0xfa, 0x0e, 0xec, 0x11, 0x05, 0x11, 0x30, 0x0f, 0xd5, 0x0f, 0x79, 0x10, 0x6c, 0x0e, 0xb5, 0x0a, + 0x4d, 0x08, 0x2a, 0x05, 0xd1, 0x06, 0x65, 0x09, 0xfa, 0x07, 0x66, 0x03, 0x36, 0x01, 0xcb, 0xff, + 0x16, 0xfe, 0x4a, 0xff, 0x68, 0xff, 0x40, 0xfd, 0xf1, 0xf7, 0xa8, 0xf2, 0xc6, 0xee, 0x98, 0xed, + 0xd8, 0xea, 0xa6, 0xe5, 0xa5, 0xe1, 0xd6, 0xe1, 0xce, 0xe4, 0x8d, 0xe6, 0xcb, 0xed, 0x6b, 0xf6, + 0x77, 0xfa, 0x40, 0xf7, 0xfd, 0xf3, 0xc2, 0xf5, 0x21, 0x01, 0xf5, 0x0e, 0x40, 0x0f, 0xfa, 0x08, + 0x37, 0x04, 0x30, 0x00, 0x17, 0xfb, 0x7f, 0xf7, 0x30, 0xf5, 0xbc, 0xf3, 0x4a, 0xf5, 0x11, 0xf5, + 0x29, 0xf2, 0x12, 0xf1, 0x5c, 0xf1, 0x7d, 0xf1, 0xd5, 0xf2, 0x60, 0xf8, 0x96, 0xfd, 0x2c, 0x02, + 0x8b, 0x05, 0x9b, 0x05, 0x46, 0x04, 0xf7, 0x05, 0x5f, 0x0b, 0xf0, 0x0d, 0x83, 0x0d, 0xf2, 0x09, + 0xb3, 0x07, 0xe1, 0x08, 0x04, 0x0d, 0xbf, 0x0d, 0x64, 0x0d, 0x77, 0x0e, 0xc0, 0x0e, 0xb4, 0x0f, + 0xf3, 0x0e, 0xf8, 0x0e, 0xc2, 0x0d, 0x98, 0x0f, 0xbf, 0x0f, 0x98, 0x0e, 0xd4, 0x0f, 0x89, 0x0f, + 0x8e, 0x0c, 0x8b, 0x08, 0x5d, 0x07, 0xeb, 0x07, 0xa0, 0x0a, 0xe9, 0x0a, 0xbb, 0x06, 0x1c, 0x03, + 0x12, 0x02, 0xbc, 0x01, 0xc4, 0x03, 0x39, 0x05, 0xb8, 0x01, 0xa8, 0xfe, 0x82, 0xfd, 0x8f, 0xfb, + 0x35, 0xfc, 0xc2, 0x02, 0xc4, 0x0b, 0xbe, 0x11, 0x81, 0x13, 0x4c, 0x0e, 0x68, 0x0a, 0xda, 0x0d, + 0xbf, 0x14, 0xee, 0x15, 0x8b, 0x10, 0x2e, 0x09, 0xf0, 0x00, 0x70, 0xfb, 0x0a, 0xf8, 0x8d, 0xf6, + 0x6b, 0xf3, 0xcf, 0xee, 0xf9, 0xe7, 0x0c, 0xe2, 0x8a, 0xe1, 0xe8, 0xe1, 0x41, 0xe0, 0x7a, 0xde, + 0x89, 0xdf, 0x9a, 0xe3, 0xaf, 0xe7, 0x2e, 0xe9, 0x9d, 0xe7, 0x33, 0xe6, 0x25, 0xe6, 0x0a, 0xea, + 0x90, 0xef, 0xba, 0xf4, 0x40, 0xf6, 0xec, 0xf3, 0x5a, 0xf2, 0x33, 0xf4, 0x47, 0xf7, 0x4b, 0xf7, + 0x84, 0xf7, 0x3a, 0xf7, 0xda, 0xf8, 0x40, 0xfa, 0x6c, 0xfb, 0x73, 0xfc, 0xce, 0xfc, 0x67, 0xfd, + 0xb4, 0xfe, 0x82, 0x02, 0xf4, 0x05, 0x98, 0x06, 0x28, 0x03, 0x7d, 0x00, 0x3c, 0x01, 0x49, 0x04, + 0x47, 0x06, 0x54, 0x05, 0x00, 0x04, 0x32, 0x03, 0x00, 0x03, 0x81, 0x02, 0x1f, 0x03, 0x1b, 0x05, + 0xb1, 0x05, 0x4e, 0x04, 0x8d, 0x03, 0x71, 0x04, 0x18, 0x08, 0x80, 0x10, 0x65, 0x18, 0xea, 0x1b, + 0xda, 0x1a, 0xeb, 0x16, 0x9d, 0x14, 0x2f, 0x19, 0x8a, 0x23, 0x97, 0x28, 0x2f, 0x23, 0x78, 0x18, + 0x9d, 0x0f, 0xd4, 0x08, 0x9c, 0x05, 0xc4, 0x02, 0x9d, 0xfd, 0x39, 0xfb, 0x82, 0xfa, 0x49, 0xf6, + 0xc2, 0xf1, 0x22, 0xf1, 0xda, 0xef, 0xff, 0xee, 0x55, 0xf0, 0x7d, 0xf3, 0xb4, 0xf5, 0x75, 0xf7, + 0x67, 0xf7, 0x74, 0xf3, 0x1b, 0xf2, 0xf1, 0xf5, 0xe6, 0xf9, 0x03, 0xfc, 0xe3, 0xfc, 0xac, 0xf9, + 0xfc, 0xf6, 0x03, 0xf9, 0xbf, 0xfb, 0x9b, 0xfc, 0x87, 0xff, 0x24, 0x01, 0xda, 0xff, 0xf3, 0xff, + 0x41, 0x00, 0x36, 0xff, 0x0f, 0xfe, 0x28, 0xfe, 0x34, 0xfd, 0x37, 0xfc, 0xc8, 0xfc, 0x2a, 0xfb, + 0x18, 0xf5, 0xbc, 0xf0, 0xfb, 0xf1, 0x19, 0xf6, 0xb6, 0xfa, 0xac, 0xfc, 0x79, 0xfa, 0x52, 0xf8, + 0x89, 0xfa, 0x5e, 0xfd, 0x75, 0x01, 0x19, 0x06, 0x57, 0x06, 0x1e, 0x04, 0x21, 0x03, 0x13, 0x07, + 0x0a, 0x0b, 0x83, 0x13, 0xfb, 0x1a, 0x67, 0x1d, 0x7f, 0x19, 0xc9, 0x15, 0x2a, 0x16, 0xc6, 0x1b, + 0xb5, 0x24, 0x59, 0x24, 0xc1, 0x1f, 0x2d, 0x1b, 0x5a, 0x17, 0xd6, 0x12, 0x4a, 0x10, 0x9c, 0x0d, + 0xa6, 0x08, 0x0f, 0x03, 0x99, 0xfc, 0x3d, 0xf5, 0xa2, 0xed, 0x79, 0xe9, 0xc3, 0xe6, 0xb2, 0xe9, + 0xcc, 0xed, 0x61, 0xed, 0x59, 0xe9, 0xa0, 0xe6, 0xb4, 0xe7, 0x63, 0xe7, 0x75, 0xe7, 0x0c, 0xeb, + 0x5a, 0xf0, 0x71, 0xf2, 0x08, 0xf2, 0xc3, 0xf0, 0xa4, 0xf0, 0xf0, 0xf5, 0xfb, 0xfb, 0xcc, 0xfe, + 0x05, 0x00, 0x1a, 0x00, 0xa9, 0xfe, 0x32, 0xff, 0x4a, 0x02, 0xab, 0x04, 0x79, 0x06, 0xbc, 0x06, + 0x44, 0x03, 0x06, 0x00, 0x80, 0xff, 0x38, 0x01, 0x9a, 0x01, 0xb4, 0x01, 0x16, 0x03, 0x67, 0x05, + 0x59, 0x08, 0x64, 0x09, 0x05, 0x09, 0xe5, 0x08, 0xbe, 0x0b, 0x01, 0x0e, 0xa2, 0x0e, 0xdc, 0x0f, + 0x10, 0x0f, 0x1c, 0x0c, 0x75, 0x0b, 0x04, 0x0c, 0xb3, 0x0a, 0xa6, 0x09, 0x4b, 0x10, 0x28, 0x19, + 0xf6, 0x1e, 0xfb, 0x1d, 0x9e, 0x17, 0x66, 0x14, 0xb6, 0x1b, 0x4e, 0x25, 0x14, 0x24, 0x27, 0x1c, + 0x4c, 0x10, 0x41, 0x07, 0xde, 0x02, 0xe1, 0x02, 0x15, 0xfe, 0x2c, 0xf5, 0xaf, 0xed, 0x84, 0xe4, + 0x1a, 0xde, 0x22, 0xdb, 0x4b, 0xda, 0x69, 0xd7, 0xf8, 0xd7, 0x38, 0xd8, 0xdd, 0xd6, 0x03, 0xd8, + 0xba, 0xd9, 0xf7, 0xd8, 0x6c, 0xd5, 0xdb, 0xd7, 0xe4, 0xdd, 0xd9, 0xe3, 0x62, 0xe6, 0xdd, 0xe4, + 0xf3, 0xe2, 0xd5, 0xe5, 0x41, 0xed, 0x9a, 0xf2, 0xa4, 0xf4, 0xd2, 0xf6, 0xc9, 0xf6, 0x26, 0xf7, + 0x37, 0xfa, 0x1e, 0xfd, 0xdf, 0xfe, 0xb9, 0xfe, 0x3b, 0xfc, 0x83, 0xfa, 0x7e, 0xfd, 0xc7, 0x00, + 0x6b, 0x01, 0x1e, 0x00, 0x7a, 0xff, 0x26, 0x01, 0x80, 0x04, 0xbc, 0x06, 0x13, 0x07, 0xd9, 0x08, + 0xe9, 0x0b, 0x96, 0x0e, 0x1f, 0x0e, 0xbf, 0x0f, 0x23, 0x11, 0x97, 0x0e, 0xcc, 0x0e, 0x1a, 0x11, + 0xb2, 0x14, 0x61, 0x15, 0x05, 0x18, 0x31, 0x1e, 0x33, 0x26, 0x1b, 0x2b, 0xc0, 0x27, 0x7e, 0x23, + 0x54, 0x26, 0x2c, 0x31, 0xf6, 0x37, 0xc1, 0x38, 0x18, 0x33, 0xae, 0x27, 0x70, 0x1f, 0x43, 0x1c, + 0xad, 0x1b, 0xdf, 0x19, 0xd6, 0x15, 0x2f, 0x0a, 0xc3, 0xff, 0xc4, 0xfd, 0xd1, 0xfe, 0x0d, 0xfd, + 0xdf, 0xf7, 0xee, 0xf4, 0x20, 0xf1, 0x39, 0xef, 0x78, 0xee, 0x26, 0xed, 0x23, 0xed, 0x7a, 0xec, + 0xa1, 0xea, 0xbf, 0xe9, 0x11, 0xee, 0x38, 0xf0, 0xef, 0xee, 0x97, 0xea, 0xcd, 0xe7, 0xa4, 0xe9, + 0x50, 0xec, 0xa0, 0xeb, 0xc6, 0xe7, 0xf9, 0xe5, 0xbb, 0xe5, 0x45, 0xe7, 0x88, 0xe8, 0x1c, 0xea, + 0x68, 0xeb, 0x91, 0xe9, 0xe6, 0xe7, 0x46, 0xe9, 0xdc, 0xee, 0x5d, 0xf2, 0x95, 0xf2, 0x98, 0xf2, + 0x10, 0xf4, 0x55, 0xf7, 0x65, 0xfa, 0x0e, 0xfb, 0xba, 0xf9, 0xad, 0xf8, 0x5d, 0xf8, 0xe1, 0xfa, + 0xdc, 0xfd, 0x74, 0x00, 0xbf, 0x00, 0x3d, 0xff, 0x8e, 0xff, 0xd2, 0x00, 0x49, 0x04, 0x06, 0x07, + 0x39, 0x0c, 0xe1, 0x16, 0x82, 0x1f, 0x01, 0x22, 0xf3, 0x1c, 0xc0, 0x18, 0xbc, 0x1b, 0xc5, 0x26, + 0x7a, 0x2d, 0x60, 0x2b, 0xd2, 0x25, 0x66, 0x1f, 0x7a, 0x1a, 0x99, 0x17, 0x74, 0x17, 0x75, 0x14, + 0x59, 0x0e, 0x98, 0x05, 0x60, 0xfe, 0x85, 0xfb, 0x3a, 0xfe, 0xa0, 0xff, 0x5f, 0xfc, 0x80, 0xf9, + 0x61, 0xf7, 0x52, 0xf6, 0xa0, 0xf5, 0x94, 0xf3, 0x01, 0xef, 0x64, 0xeb, 0x4a, 0xeb, 0xb9, 0xef, + 0xfd, 0xf3, 0xc0, 0xf2, 0x04, 0xed, 0x44, 0xe7, 0xac, 0xe8, 0x54, 0xee, 0x14, 0xf2, 0xf3, 0xf2, + 0x7d, 0xf1, 0xaf, 0xee, 0x70, 0xec, 0x74, 0xef, 0x16, 0xf5, 0xe5, 0xf9, 0xb3, 0xfa, 0xf0, 0xf7, + 0xb7, 0xf6, 0x68, 0xf9, 0x0d, 0xfd, 0xb9, 0xfd, 0xda, 0xfb, 0x05, 0xfb, 0x06, 0xfd, 0xd8, 0xfe, + 0x9f, 0x00, 0x4b, 0x01, 0x79, 0x00, 0x76, 0xff, 0xdd, 0xff, 0x08, 0x00, 0x5d, 0x00, 0x6a, 0x01, + 0x62, 0x00, 0x08, 0xfd, 0xee, 0xfb, 0x56, 0xfd, 0xcc, 0xff, 0x32, 0x00, 0x6f, 0x03, 0xf7, 0x08, + 0xa4, 0x0e, 0x74, 0x13, 0x52, 0x13, 0x30, 0x11, 0x80, 0x16, 0x45, 0x24, 0x6d, 0x2a, 0x65, 0x27, + 0x6a, 0x1f, 0x18, 0x1a, 0x89, 0x1a, 0xf2, 0x1c, 0xfe, 0x19, 0x8e, 0x12, 0x3e, 0x0d, 0x63, 0x07, + 0xd6, 0xff, 0xcf, 0xf8, 0x05, 0xf8, 0x40, 0xf7, 0xa5, 0xf6, 0x8d, 0xf4, 0xc0, 0xef, 0x6a, 0xee, + 0x4e, 0xf0, 0x63, 0xf0, 0x5c, 0xee, 0xf6, 0xec, 0x33, 0xeb, 0x02, 0xe9, 0x70, 0xe7, 0x25, 0xe6, + 0x1c, 0xe5, 0x3c, 0xe5, 0xc8, 0xe7, 0x8e, 0xe8, 0xa1, 0xe7, 0x5d, 0xe6, 0x67, 0xe6, 0x7b, 0xe6, + 0xbe, 0xe8, 0x3a, 0xec, 0xe9, 0xee, 0x5e, 0xf3, 0xe9, 0xf4, 0xaf, 0xf3, 0x28, 0xf5, 0x1d, 0xfb, + 0xe8, 0xff, 0xed, 0x01, 0xac, 0x01, 0xb8, 0x00, 0x20, 0x02, 0xab, 0x06, 0xca, 0x0b, 0x92, 0x0d, + 0xaf, 0x0e, 0x3e, 0x0e, 0x44, 0x0d, 0xc1, 0x0d, 0x6c, 0x0d, 0xaa, 0x0d, 0xeb, 0x0e, 0x38, 0x10, + 0x11, 0x0f, 0x57, 0x0c, 0x96, 0x0d, 0x9b, 0x0e, 0xbd, 0x12, 0xfe, 0x1b, 0xa9, 0x23, 0x60, 0x25, + 0x5b, 0x24, 0xbd, 0x24, 0x36, 0x28, 0x18, 0x31, 0x99, 0x36, 0x90, 0x35, 0x1d, 0x30, 0x36, 0x2a, + 0x1c, 0x22, 0x78, 0x1d, 0x60, 0x1e, 0xa5, 0x1d, 0xa0, 0x17, 0x28, 0x0d, 0x13, 0x03, 0x33, 0xfb, + 0x9c, 0xf7, 0x99, 0xf5, 0x44, 0xf2, 0xcc, 0xef, 0x9c, 0xeb, 0x70, 0xe5, 0xc9, 0xdf, 0x9b, 0xdd, + 0x40, 0xdd, 0xe0, 0xdc, 0x56, 0xdc, 0x79, 0xda, 0x54, 0xd9, 0xf7, 0xd6, 0xc9, 0xd4, 0x39, 0xd2, + 0x8a, 0xd4, 0xc8, 0xd9, 0xb8, 0xdc, 0xe7, 0xdc, 0x2c, 0xdb, 0x71, 0xda, 0x99, 0xda, 0x19, 0xde, + 0xb6, 0xe2, 0x85, 0xe6, 0xef, 0xe7, 0x3e, 0xe7, 0x9f, 0xe7, 0x03, 0xec, 0xae, 0xf2, 0xe4, 0xf8, + 0x04, 0xfc, 0x71, 0xfc, 0x9b, 0xfd, 0xd1, 0xff, 0xeb, 0x01, 0xc8, 0x02, 0x6b, 0x03, 0x6d, 0x03, + 0x52, 0x03, 0x16, 0x02, 0xf7, 0xff, 0xa4, 0x00, 0xd1, 0x01, 0xf9, 0x00, 0x4e, 0x00, 0xa5, 0x00, + 0x38, 0x02, 0x26, 0x05, 0x5c, 0x0b, 0x07, 0x15, 0x61, 0x1c, 0x33, 0x20, 0x7b, 0x20, 0x94, 0x21, + 0xe4, 0x26, 0x17, 0x31, 0x21, 0x37, 0xa3, 0x36, 0x75, 0x32, 0x2c, 0x2c, 0xcc, 0x26, 0x8b, 0x25, + 0x84, 0x24, 0xa9, 0x20, 0x05, 0x1c, 0x43, 0x15, 0x35, 0x0e, 0x44, 0x09, 0x4a, 0x07, 0x76, 0x05, + 0x96, 0x03, 0x63, 0x03, 0xe6, 0x01, 0x91, 0xfd, 0x2d, 0xfa, 0x20, 0xf8, 0xd4, 0xf7, 0x5c, 0xf9, + 0xaa, 0xf9, 0x82, 0xf7, 0x5c, 0xf6, 0x2f, 0xf6, 0x88, 0xf3, 0xee, 0xef, 0xae, 0xec, 0xb5, 0xeb, + 0x50, 0xec, 0x4f, 0xed, 0xd3, 0xec, 0x97, 0xee, 0xea, 0xf1, 0x31, 0xf2, 0x26, 0xf1, 0xcb, 0xf0, + 0x14, 0xf2, 0xd3, 0xf1, 0x30, 0xf0, 0x39, 0xef, 0xce, 0xef, 0xbe, 0xf2, 0xed, 0xf4, 0x94, 0xf3, + 0x9e, 0xef, 0xd4, 0xec, 0x8a, 0xed, 0x89, 0xf0, 0xbb, 0xf2, 0x6b, 0xf2, 0x62, 0xf1, 0xaa, 0xf1, + 0xa2, 0xf2, 0x3c, 0xf3, 0xa3, 0xf5, 0x06, 0xf9, 0x0c, 0xf9, 0x13, 0xf9, 0x98, 0xf9, 0x6b, 0xfa, + 0xee, 0xfc, 0x69, 0x03, 0x2f, 0x0c, 0x3d, 0x13, 0x9a, 0x15, 0xa2, 0x13, 0x2b, 0x12, 0x75, 0x16, + 0x98, 0x21, 0x36, 0x2b, 0x9c, 0x2e, 0xc3, 0x29, 0xdd, 0x20, 0xfb, 0x1a, 0xff, 0x1b, 0xbd, 0x1e, + 0x37, 0x1b, 0x33, 0x14, 0xc1, 0x0b, 0xe7, 0x05, 0x7e, 0x03, 0xfc, 0x01, 0x5e, 0xfe, 0xdc, 0xfb, + 0x01, 0xfb, 0xca, 0xf7, 0xe1, 0xf4, 0x64, 0xf4, 0x0f, 0xf5, 0xe0, 0xf5, 0xf2, 0xf5, 0x0d, 0xf4, + 0x12, 0xf3, 0xfb, 0xf4, 0x2d, 0xf6, 0x49, 0xf4, 0x34, 0xf2, 0xa1, 0xf2, 0x3d, 0xf5, 0xb8, 0xf6, + 0x07, 0xf5, 0xd6, 0xf0, 0xb6, 0xf0, 0x77, 0xf4, 0x55, 0xf8, 0x11, 0xfa, 0xc5, 0xfa, 0x09, 0xfa, + 0x5e, 0xf7, 0x71, 0xf5, 0xfe, 0xf4, 0x6c, 0xf7, 0x29, 0xf9, 0xf8, 0xf8, 0x16, 0xf8, 0x0d, 0xf9, + 0xd0, 0xfa, 0xb2, 0xfb, 0xc7, 0xfc, 0xe7, 0xfc, 0x57, 0xfe, 0x00, 0xff, 0x74, 0xfe, 0x99, 0xfd, + 0xdd, 0xfc, 0xf5, 0xff, 0x98, 0x02, 0xfd, 0x02, 0xc2, 0x02, 0xbd, 0x00, 0xdd, 0xff, 0xf0, 0x01, + 0xf4, 0x06, 0xb0, 0x0e, 0xaf, 0x14, 0x5a, 0x15, 0x95, 0x12, 0xb6, 0x10, 0x42, 0x14, 0x41, 0x1c, + 0x3f, 0x20, 0x98, 0x1e, 0xb0, 0x17, 0xdd, 0x11, 0xf9, 0x0f, 0xb1, 0x11, 0xce, 0x11, 0x55, 0x0e, + 0x9f, 0x08, 0xa5, 0x00, 0x63, 0xfc, 0xf9, 0xfa, 0x90, 0xf9, 0xb6, 0xf8, 0x80, 0xf9, 0xe7, 0xf9, + 0xa1, 0xf7, 0x8f, 0xf4, 0xf1, 0xf2, 0x88, 0xf3, 0x92, 0xf5, 0x9a, 0xf6, 0x9b, 0xf3, 0x24, 0xf2, + 0xbd, 0xf4, 0x90, 0xf6, 0xa1, 0xf6, 0xf1, 0xf6, 0xd2, 0xf7, 0x0f, 0xf7, 0x3b, 0xf6, 0x2b, 0xf5, + 0xfa, 0xf1, 0xf5, 0xf0, 0x4c, 0xf0, 0x65, 0xee, 0x51, 0xee, 0xa1, 0xf0, 0x68, 0xf2, 0xf7, 0xf0, + 0x19, 0xef, 0x09, 0xee, 0xe5, 0xed, 0xbd, 0xee, 0xd4, 0xf0, 0x82, 0xf2, 0x95, 0xf5, 0xf7, 0xf8, + 0x53, 0xfb, 0xe2, 0xfc, 0x8f, 0xfd, 0xff, 0xfe, 0xd5, 0x00, 0xc3, 0x03, 0x73, 0x06, 0xac, 0x06, + 0x39, 0x07, 0xef, 0x08, 0x91, 0x09, 0x04, 0x0b, 0x2c, 0x0c, 0xaa, 0x0c, 0x43, 0x0e, 0x1b, 0x13, + 0xf2, 0x19, 0x5c, 0x1e, 0xa2, 0x20, 0x36, 0x21, 0x2b, 0x21, 0x99, 0x23, 0x6d, 0x29, 0x52, 0x2e, + 0xb6, 0x2d, 0x02, 0x29, 0x8a, 0x23, 0x19, 0x20, 0x95, 0x20, 0xfc, 0x21, 0x85, 0x1d, 0x91, 0x16, + 0x68, 0x0f, 0x7c, 0x09, 0x84, 0x06, 0x57, 0x04, 0x4e, 0x03, 0x74, 0x02, 0xb0, 0x02, 0x8f, 0x00, + 0xcb, 0xfc, 0x75, 0xfa, 0x1b, 0xf9, 0x87, 0xf7, 0xf6, 0xf5, 0x2b, 0xf3, 0x69, 0xef, 0xe0, 0xec, + 0x92, 0xea, 0x9b, 0xe6, 0xa9, 0xe1, 0xef, 0xde, 0xe1, 0xde, 0x04, 0xe0, 0xfc, 0xdf, 0xde, 0xdc, + 0x8d, 0xdc, 0xd1, 0xdc, 0x2e, 0xdd, 0x44, 0xdf, 0x66, 0xe1, 0x83, 0xe3, 0x28, 0xe4, 0xc0, 0xe3, + 0x55, 0xe3, 0x87, 0xe5, 0xdf, 0xe8, 0xed, 0xe8, 0xb3, 0xe6, 0x17, 0xe6, 0xee, 0xe7, 0xe8, 0xec, + 0x1b, 0xf2, 0x4c, 0xf4, 0xd5, 0xf5, 0x4f, 0xf7, 0xb7, 0xf8, 0xd8, 0xfa, 0x8a, 0xfc, 0x3e, 0xfe, + 0x70, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x57, 0xff, 0xd1, 0xff, 0x22, 0x02, 0x4a, 0x04, 0xc4, 0x09, + 0x55, 0x10, 0x86, 0x12, 0xc9, 0x11, 0xbf, 0x10, 0x3b, 0x14, 0xab, 0x1d, 0x53, 0x26, 0x4b, 0x27, + 0x25, 0x23, 0xd4, 0x20, 0x99, 0x1e, 0x9d, 0x1b, 0x4b, 0x1c, 0x0f, 0x1e, 0x78, 0x1d, 0x20, 0x19, + 0x9c, 0x12, 0x73, 0x0c, 0xc6, 0x09, 0x49, 0x0b, 0x36, 0x0c, 0x95, 0x0c, 0x54, 0x0d, 0xd6, 0x0a, + 0x6f, 0x06, 0x14, 0x04, 0x98, 0x05, 0xce, 0x07, 0x40, 0x06, 0xb4, 0x01, 0xd0, 0xfd, 0xd9, 0xfd, + 0xac, 0xff, 0x33, 0xff, 0x5c, 0xfd, 0xa1, 0xfb, 0xf7, 0xfb, 0x81, 0xfb, 0xd4, 0xf8, 0xaa, 0xf5, + 0x55, 0xf5, 0x91, 0xf4, 0x68, 0xf5, 0x91, 0xf7, 0x72, 0xf6, 0xd2, 0xf4, 0x26, 0xf4, 0x4f, 0xf3, + 0x47, 0xf2, 0xfa, 0xf4, 0x1d, 0xf6, 0xf6, 0xf2, 0x95, 0xef, 0x44, 0xed, 0xd7, 0xeb, 0xeb, 0xed, + 0x52, 0xf1, 0x9b, 0xf0, 0xca, 0xee, 0xdf, 0xed, 0x19, 0xed, 0xe8, 0xec, 0x6b, 0xee, 0x6c, 0xf0, + 0x49, 0xf2, 0xef, 0xf3, 0x50, 0xf3, 0x2a, 0xf1, 0x6f, 0xf2, 0x43, 0xf7, 0x6e, 0xfb, 0xd7, 0x02, + 0xd1, 0x09, 0x5e, 0x0a, 0x1c, 0x08, 0xcb, 0x09, 0x03, 0x10, 0xe4, 0x18, 0x0d, 0x20, 0x1c, 0x1f, + 0xb0, 0x1c, 0x0d, 0x1d, 0x5f, 0x1c, 0xbf, 0x1b, 0xa7, 0x1e, 0xa2, 0x20, 0x3d, 0x1f, 0xab, 0x19, + 0x31, 0x13, 0x15, 0x0e, 0x7d, 0x0b, 0x03, 0x0c, 0x1f, 0x0a, 0xad, 0x08, 0x4e, 0x08, 0x6d, 0x03, + 0x6a, 0xfc, 0xf9, 0xfa, 0x29, 0xfe, 0xa6, 0xff, 0xac, 0xfb, 0xc7, 0xf5, 0xbf, 0xf3, 0x23, 0xf5, + 0x62, 0xf6, 0x6f, 0xf4, 0xab, 0xf1, 0x15, 0xf3, 0x40, 0xf6, 0xbd, 0xf5, 0xc9, 0xf2, 0xb9, 0xf3, + 0xbf, 0xf4, 0xae, 0xf3, 0x8a, 0xf3, 0x00, 0xf3, 0x6d, 0xf4, 0x5f, 0xf5, 0xd9, 0xf2, 0x26, 0xee, + 0xb1, 0xee, 0x9c, 0xf2, 0xd6, 0xf3, 0xb6, 0xf1, 0x5a, 0xef, 0xd8, 0xed, 0xa7, 0xed, 0xc5, 0xef, + 0x3d, 0xf2, 0x3a, 0xf5, 0x2f, 0xf8, 0x88, 0xf8, 0x15, 0xf8, 0x44, 0xf9, 0xd4, 0xfb, 0x23, 0xfd, + 0x2f, 0xfd, 0xa8, 0xfc, 0x54, 0xfc, 0x8f, 0xfe, 0xbd, 0x01, 0xd2, 0x04, 0x67, 0x0c, 0x3b, 0x16, + 0x43, 0x1a, 0x7f, 0x18, 0x90, 0x16, 0x54, 0x19, 0x34, 0x22, 0xa7, 0x2c, 0xdb, 0x2e, 0x84, 0x27, + 0xec, 0x1c, 0x6c, 0x15, 0x69, 0x14, 0x1e, 0x18, 0x73, 0x19, 0xff, 0x12, 0x63, 0x08, 0xfb, 0x00, + 0xe6, 0xfd, 0x24, 0xfe, 0xad, 0xff, 0xdb, 0xfd, 0x42, 0xfa, 0x62, 0xf8, 0x3f, 0xf7, 0xcb, 0xf4, + 0x92, 0xf3, 0x7c, 0xf5, 0x03, 0xf8, 0xb3, 0xf8, 0xda, 0xf4, 0x75, 0xf1, 0xc4, 0xef, 0x1e, 0xef, + 0x20, 0xf0, 0xa5, 0xf0, 0xdd, 0xf0, 0xd3, 0xf1, 0xfc, 0xf0, 0xa3, 0xef, 0xbe, 0xef, 0xdf, 0xf0, + 0x7c, 0xf0, 0x4c, 0xee, 0xef, 0xec, 0x84, 0xec, 0xf4, 0xec, 0xe5, 0xec, 0xe0, 0xea, 0x8e, 0xe9, + 0x86, 0xea, 0xba, 0xeb, 0x99, 0xeb, 0x4e, 0xec, 0x54, 0xec, 0x34, 0xea, 0x5d, 0xec, 0x92, 0xf1, + 0xbb, 0xf4, 0x67, 0xf6, 0x03, 0xf8, 0x57, 0xfa, 0x9a, 0xfd, 0x11, 0x01, 0xb0, 0x04, 0x92, 0x08, + 0x2f, 0x0a, 0xbf, 0x0a, 0x54, 0x0b, 0xee, 0x0d, 0xdf, 0x11, 0x5d, 0x15, 0xdb, 0x1b, 0x59, 0x23, + 0xf2, 0x27, 0x69, 0x27, 0xa7, 0x24, 0xc3, 0x26, 0x2e, 0x2f, 0xc9, 0x35, 0x52, 0x35, 0xf1, 0x2f, + 0xdb, 0x2a, 0x5a, 0x27, 0x0a, 0x25, 0xdb, 0x23, 0x7f, 0x22, 0x16, 0x1f, 0xbf, 0x17, 0x3f, 0x0f, + 0x40, 0x0a, 0x60, 0x09, 0x57, 0x0a, 0x34, 0x09, 0x0a, 0x07, 0xb5, 0x04, 0x6a, 0x01, 0xc8, 0xfd, + 0xc1, 0xfb, 0xdf, 0xfb, 0x5d, 0xfc, 0x45, 0xfa, 0xd9, 0xf4, 0x3c, 0xf1, 0xfd, 0xef, 0x7e, 0xee, + 0xe8, 0xe9, 0xd9, 0xe2, 0xa8, 0xde, 0xa1, 0xdf, 0x0f, 0xe1, 0x50, 0xdf, 0x76, 0xdc, 0x3d, 0xdc, + 0xf2, 0xdc, 0x4c, 0xdd, 0xbb, 0xdf, 0x85, 0xe2, 0xbc, 0xe3, 0xf4, 0xe2, 0x30, 0xe1, 0xbd, 0xe1, + 0x5a, 0xe6, 0xc8, 0xea, 0x1e, 0xea, 0x9e, 0xe8, 0x92, 0xe8, 0x70, 0xe8, 0x15, 0xea, 0x6f, 0xed, + 0x22, 0xf1, 0x7b, 0xf4, 0x68, 0xf7, 0x04, 0xf9, 0x35, 0xfa, 0xe7, 0xfd, 0x5c, 0x02, 0x1c, 0x06, + 0xe9, 0x07, 0xbb, 0x07, 0xe7, 0x05, 0xed, 0x05, 0x09, 0x09, 0x4c, 0x0e, 0x61, 0x15, 0xbe, 0x19, + 0x71, 0x1a, 0x78, 0x15, 0x2e, 0x12, 0xe1, 0x16, 0x7c, 0x20, 0x30, 0x26, 0x36, 0x24, 0x55, 0x1c, + 0x2a, 0x15, 0xb7, 0x13, 0x3f, 0x16, 0x54, 0x19, 0xa1, 0x18, 0xf3, 0x13, 0xc5, 0x0a, 0xc3, 0x03, + 0xf6, 0x03, 0xd1, 0x07, 0x3e, 0x0a, 0x26, 0x08, 0x23, 0x04, 0x53, 0xff, 0x02, 0xfd, 0xff, 0xfd, + 0xc2, 0xfd, 0xa0, 0xff, 0x83, 0x00, 0x2d, 0xfc, 0x0f, 0xf8, 0xe1, 0xf8, 0x2f, 0xfc, 0xdc, 0xfd, + 0xf4, 0xfb, 0xcb, 0xf8, 0x17, 0xf7, 0x38, 0xf8, 0x0c, 0xfb, 0x5b, 0xfb, 0xfa, 0xfb, 0x34, 0xfe, + 0x4d, 0xfc, 0x28, 0xf9, 0xe4, 0xf8, 0x63, 0xf8, 0x12, 0xf9, 0xdd, 0xfb, 0x9d, 0xfa, 0xb7, 0xf8, + 0x3b, 0xfa, 0x72, 0xfa, 0x6d, 0xf9, 0xec, 0xf8, 0x39, 0xfa, 0x86, 0xfb, 0xea, 0xfb, 0xe2, 0xfb, + 0x4a, 0xfa, 0xc5, 0xf8, 0x0d, 0xf9, 0x41, 0xf9, 0xe9, 0xf8, 0x27, 0xf9, 0x8f, 0xf9, 0xd0, 0xf7, + 0x87, 0xf6, 0xb1, 0xf5, 0x78, 0xf5, 0x42, 0xf8, 0xb9, 0xfa, 0x63, 0xfd, 0xb1, 0x02, 0x33, 0x08, + 0xa2, 0x0a, 0x4e, 0x09, 0x3f, 0x0a, 0x5d, 0x10, 0x1a, 0x19, 0x16, 0x1d, 0x3b, 0x1b, 0x4b, 0x15, + 0x2a, 0x10, 0x23, 0x0f, 0xb5, 0x11, 0xb0, 0x15, 0x8b, 0x16, 0xac, 0x10, 0x5a, 0x06, 0xc0, 0x00, + 0x23, 0x02, 0x58, 0x06, 0xba, 0x08, 0xcb, 0x06, 0x99, 0x01, 0xba, 0xfb, 0x80, 0xf8, 0x50, 0xf8, + 0xd8, 0xf9, 0xb0, 0xfb, 0x1c, 0xf9, 0xf8, 0xf2, 0x16, 0xf1, 0xe8, 0xf3, 0x44, 0xf5, 0x27, 0xf5, + 0xbe, 0xf3, 0x72, 0xf1, 0x2b, 0xf2, 0xb4, 0xf3, 0x49, 0xf3, 0xf5, 0xf2, 0x1c, 0xf5, 0xf2, 0xf6, + 0x7a, 0xf7, 0x0a, 0xf9, 0xa7, 0xf9, 0xff, 0xf7, 0x84, 0xf6, 0xdb, 0xf6, 0x5b, 0xf7, 0xdc, 0xfa, + 0xdb, 0xfc, 0x12, 0xfa, 0x80, 0xf7, 0xe3, 0xf7, 0xb8, 0xf8, 0x6c, 0xf8, 0xc4, 0xf8, 0x15, 0xf8, + 0xad, 0xf6, 0x42, 0xf7, 0xf9, 0xf9, 0xc4, 0xfb, 0xd0, 0xfb, 0x7c, 0xfc, 0x13, 0xfd, 0x89, 0xfd, + 0x5b, 0xfe, 0x22, 0xfe, 0xdd, 0xfd, 0x1f, 0x00, 0x3d, 0x03, 0x4b, 0x09, 0x26, 0x10, 0x56, 0x15, + 0x1f, 0x15, 0x5b, 0x11, 0x7c, 0x14, 0x3d, 0x1f, 0x21, 0x27, 0xb8, 0x27, 0x59, 0x20, 0xeb, 0x16, + 0x28, 0x13, 0x66, 0x14, 0xdf, 0x15, 0x4c, 0x13, 0xf4, 0x0c, 0xc6, 0x02, 0x4a, 0xf8, 0x5f, 0xf4, + 0xb2, 0xf7, 0xff, 0xfb, 0x48, 0xfb, 0x10, 0xf8, 0x42, 0xf4, 0xa4, 0xf2, 0x50, 0xf4, 0x48, 0xf6, + 0x89, 0xf7, 0x36, 0xf8, 0xbe, 0xf6, 0x8b, 0xf2, 0x7f, 0xf1, 0x49, 0xf4, 0xf1, 0xf5, 0xd1, 0xf4, + 0xb6, 0xf2, 0xe2, 0xf0, 0x05, 0xf0, 0x5c, 0xf1, 0xbd, 0xf2, 0x4a, 0xf3, 0x6e, 0xf6, 0x07, 0xf9, + 0x31, 0xf8, 0x46, 0xf7, 0x7b, 0xf8, 0x7e, 0xf8, 0x27, 0xf8, 0x4d, 0xf8, 0x52, 0xf7, 0xd7, 0xf5, + 0xa1, 0xf4, 0x93, 0xf3, 0xde, 0xf2, 0x7b, 0xf3, 0x24, 0xf3, 0xb8, 0xf1, 0x96, 0xf1, 0xb3, 0xf2, + 0x56, 0xf3, 0x47, 0xf5, 0x13, 0xf8, 0x56, 0xf9, 0xb9, 0xfa, 0x07, 0xfd, 0x30, 0x00, 0xde, 0x02, + 0x7a, 0x04, 0x6d, 0x04, 0xba, 0x03, 0xb8, 0x06, 0xea, 0x0b, 0x2e, 0x12, 0x5a, 0x17, 0xf6, 0x19, + 0x37, 0x1b, 0xae, 0x1c, 0xf1, 0x21, 0x5e, 0x29, 0xa9, 0x2d, 0x9d, 0x2d, 0x19, 0x2a, 0x60, 0x24, + 0x00, 0x21, 0xe8, 0x21, 0xd8, 0x23, 0x7d, 0x24, 0x77, 0x1f, 0xc5, 0x16, 0x29, 0x10, 0x51, 0x0e, + 0x88, 0x10, 0x1e, 0x11, 0x9d, 0x0e, 0x4d, 0x0c, 0x62, 0x09, 0xa8, 0x05, 0x6b, 0x04, 0x07, 0x04, + 0xa1, 0x02, 0xb2, 0x00, 0xb9, 0xfc, 0x75, 0xf8, 0x4e, 0xf7, 0x1c, 0xf9, 0x02, 0xfa, 0x17, 0xf9, + 0x83, 0xf7, 0x7a, 0xf5, 0x8a, 0xf3, 0xd1, 0xf0, 0xe1, 0xed, 0x98, 0xeb, 0x3b, 0xec, 0x92, 0xec, + 0xbf, 0xe9, 0x55, 0xea, 0x99, 0xea, 0xd5, 0xe6, 0xb6, 0xe5, 0x05, 0xe6, 0xdc, 0xe5, 0xb2, 0xe6, + 0x84, 0xe7, 0xb4, 0xe6, 0x74, 0xe6, 0x9d, 0xe7, 0xf0, 0xe5, 0xba, 0xe4, 0x74, 0xe7, 0x26, 0xea, + 0x19, 0xea, 0x47, 0xe9, 0x3a, 0xe9, 0x91, 0xea, 0xaa, 0xef, 0x61, 0xf3, 0xc4, 0xf4, 0xc3, 0xf7, + 0xa8, 0xf9, 0x8b, 0xf8, 0x33, 0xf9, 0x23, 0xfe, 0xde, 0x01, 0x48, 0x07, 0xb7, 0x0d, 0xbd, 0x10, + 0xa4, 0x0f, 0xd8, 0x0e, 0xd0, 0x11, 0x7a, 0x17, 0xe8, 0x1e, 0x66, 0x21, 0xb6, 0x1b, 0xea, 0x13, + 0xa4, 0x0f, 0xe4, 0x0f, 0xf4, 0x13, 0xee, 0x16, 0x37, 0x13, 0xa2, 0x09, 0xdd, 0x00, 0x9e, 0xfd, + 0xc2, 0xfe, 0x06, 0x03, 0x7d, 0x06, 0x76, 0x03, 0x0d, 0xfd, 0x33, 0xf9, 0x15, 0xfa, 0xa1, 0xfe, + 0x0c, 0x03, 0x29, 0x04, 0xf3, 0xfe, 0x94, 0xfa, 0xca, 0xfb, 0xd1, 0xfe, 0x32, 0x01, 0xa4, 0x03, + 0x94, 0x02, 0x49, 0x00, 0xff, 0xff, 0xb4, 0xff, 0x37, 0xfe, 0xc8, 0xfd, 0xb7, 0xfe, 0x28, 0xfd, + 0xb7, 0xfb, 0xa3, 0xfc, 0x83, 0xfb, 0x6a, 0xf9, 0x9a, 0xfa, 0x8b, 0xf9, 0xcd, 0xf6, 0x8f, 0xf8, + 0x6d, 0xf9, 0x8e, 0xf7, 0x0c, 0xf8, 0x04, 0xf9, 0x93, 0xf7, 0x6d, 0xf7, 0xb6, 0xf9, 0x49, 0xf9, + 0xb9, 0xf7, 0x8f, 0xf8, 0x87, 0xf7, 0x7f, 0xf5, 0xdf, 0xf5, 0x7d, 0xf5, 0xb4, 0xf3, 0x50, 0xf5, + 0xe0, 0xf5, 0x72, 0xf2, 0x96, 0xf2, 0x2d, 0xf5, 0x50, 0xf7, 0x6b, 0xfe, 0x75, 0x07, 0x2d, 0x0b, + 0x68, 0x0a, 0x8f, 0x0b, 0x24, 0x10, 0x68, 0x18, 0xf9, 0x22, 0x4a, 0x25, 0xdb, 0x1c, 0xd2, 0x14, + 0x58, 0x11, 0xb9, 0x11, 0x54, 0x16, 0x6a, 0x19, 0x03, 0x14, 0x11, 0x09, 0x2c, 0x02, 0x8a, 0x01, + 0xc3, 0x05, 0xa9, 0x0b, 0xb1, 0x0c, 0xcf, 0x07, 0x3a, 0x04, 0xac, 0x03, 0x85, 0x03, 0xb6, 0x04, + 0xd4, 0x07, 0x24, 0x06, 0x45, 0xff, 0x29, 0xfc, 0xa6, 0xfc, 0x60, 0xfc, 0xfb, 0xfb, 0xe7, 0xfa, + 0x08, 0xf9, 0xca, 0xf8, 0xf3, 0xf9, 0xf0, 0xf7, 0xe0, 0xf4, 0x3a, 0xf5, 0x37, 0xf6, 0x5c, 0xf6, + 0xfd, 0xf8, 0xfc, 0xfa, 0x9e, 0xf8, 0x59, 0xf6, 0x33, 0xf7, 0x4e, 0xf7, 0x5d, 0xf8, 0xb4, 0xf9, + 0x7b, 0xf6, 0xcf, 0xf2, 0x76, 0xf3, 0x6e, 0xf4, 0xae, 0xf3, 0xc0, 0xf4, 0x81, 0xf5, 0xf5, 0xf2, + 0x53, 0xf1, 0xee, 0xf2, 0x6b, 0xf4, 0x8e, 0xf5, 0x94, 0xf9, 0x85, 0xfb, 0x34, 0xfc, 0xf4, 0xff, + 0x72, 0x02, 0x82, 0x01, 0x2f, 0x03, 0xd1, 0x06, 0xa7, 0x08, 0xd6, 0x0f, 0x5a, 0x17, 0xa5, 0x17, + 0xc5, 0x14, 0x77, 0x16, 0x9d, 0x1b, 0xda, 0x22, 0x8f, 0x28, 0x6d, 0x25, 0x82, 0x1c, 0x39, 0x18, + 0xd2, 0x16, 0x2a, 0x16, 0xbc, 0x17, 0xa1, 0x17, 0x1a, 0x0f, 0x16, 0x03, 0x30, 0xfc, 0x9b, 0xfa, + 0xa6, 0xfd, 0x10, 0x00, 0xf3, 0xfd, 0xb9, 0xf9, 0x96, 0xf6, 0xee, 0xf4, 0x62, 0xf4, 0x07, 0xf7, + 0xe2, 0xf9, 0xc8, 0xf6, 0x6a, 0xf1, 0x90, 0xef, 0xb5, 0xf0, 0x6d, 0xf1, 0x06, 0xf1, 0x16, 0xef, + 0xe2, 0xed, 0xa6, 0xef, 0xca, 0xf1, 0xd2, 0xef, 0x2e, 0xed, 0x58, 0xed, 0x8f, 0xee, 0x6e, 0xef, + 0x43, 0xf1, 0x00, 0xf2, 0x86, 0xef, 0xeb, 0xec, 0x91, 0xec, 0xd4, 0xec, 0x64, 0xef, 0x08, 0xf1, + 0x18, 0xee, 0xa1, 0xe9, 0xd6, 0xe8, 0xbc, 0xea, 0xbe, 0xec, 0xb2, 0xef, 0xe4, 0xf0, 0xfd, 0xef, + 0xf2, 0xf0, 0xb6, 0xf3, 0xf2, 0xf4, 0x4b, 0xf5, 0x99, 0xf6, 0xce, 0xf8, 0x09, 0xfd, 0x99, 0x00, + 0x4b, 0x00, 0x05, 0xff, 0x5d, 0xff, 0xf7, 0x01, 0x8b, 0x07, 0x50, 0x0f, 0x16, 0x14, 0xd3, 0x14, + 0xd8, 0x15, 0x48, 0x1a, 0xf8, 0x22, 0x18, 0x2d, 0xbe, 0x31, 0x6a, 0x2e, 0x3c, 0x27, 0xd8, 0x22, + 0x2b, 0x23, 0x1b, 0x27, 0x1a, 0x2b, 0xa1, 0x28, 0xb4, 0x1e, 0x8a, 0x14, 0x77, 0x0f, 0x88, 0x0f, + 0x5e, 0x12, 0xa6, 0x12, 0x6a, 0x0e, 0x82, 0x08, 0x6c, 0x04, 0xe0, 0x02, 0xbd, 0x03, 0x88, 0x05, + 0x19, 0x04, 0x5a, 0xfe, 0x9c, 0xf9, 0xac, 0xf9, 0x71, 0xfc, 0xc6, 0xfd, 0xd7, 0xfb, 0x52, 0xf9, + 0x7f, 0xf9, 0x87, 0xfa, 0x9a, 0xf9, 0xd5, 0xf7, 0xf2, 0xf6, 0x44, 0xf5, 0xee, 0xf1, 0xa4, 0xee, + 0xf1, 0xed, 0x7b, 0xee, 0x5e, 0xec, 0x60, 0xea, 0xfd, 0xe8, 0xa3, 0xe9, 0x30, 0xec, 0x32, 0xed, + 0x30, 0xed, 0x8a, 0xec, 0xef, 0xec, 0xc0, 0xec, 0x3c, 0xec, 0x64, 0xed, 0x56, 0xee, 0x4a, 0xee, + 0xe0, 0xed, 0x66, 0xed, 0xd9, 0xec, 0xa9, 0xec, 0xe2, 0xec, 0xd1, 0xee, 0x1b, 0xf3, 0x1d, 0xf7, + 0xd8, 0xf9, 0xd2, 0xfb, 0xc5, 0xfe, 0x2e, 0x03, 0xeb, 0x0a, 0x33, 0x12, 0xf2, 0x14, 0xff, 0x15, + 0x04, 0x17, 0x7f, 0x1a, 0x10, 0x22, 0xa4, 0x28, 0xd7, 0x28, 0x89, 0x23, 0xb6, 0x1b, 0x5c, 0x14, + 0x30, 0x12, 0x39, 0x15, 0x4d, 0x15, 0xd1, 0x0e, 0xd8, 0x05, 0x9e, 0xfd, 0x77, 0xf9, 0x01, 0xfb, + 0xc8, 0xfc, 0xa6, 0xfc, 0x06, 0xfb, 0xaf, 0xf9, 0xfa, 0xf8, 0x8c, 0xf9, 0x1c, 0xfc, 0x85, 0xfd, + 0x02, 0xfd, 0x46, 0xfb, 0xfc, 0xfa, 0x40, 0xfd, 0x5c, 0xfe, 0xb8, 0xfd, 0x31, 0xfb, 0x1b, 0xfa, + 0xe5, 0xfd, 0xd8, 0x01, 0x4f, 0x01, 0xab, 0xff, 0x3a, 0xfe, 0x3f, 0xfe, 0x38, 0xff, 0x50, 0x00, + 0xa8, 0x00, 0x04, 0xff, 0x0b, 0xfd, 0xd6, 0xfb, 0x0a, 0xfb, 0xa3, 0xfb, 0xe9, 0xfc, 0x0a, 0xfc, + 0xe2, 0xf8, 0xd0, 0xf6, 0x36, 0xf5, 0x2a, 0xf4, 0x1c, 0xf5, 0x40, 0xf6, 0x34, 0xf6, 0x0a, 0xf5, + 0xc1, 0xf5, 0xff, 0xf6, 0xcf, 0xf7, 0xae, 0xf8, 0x9f, 0xf8, 0x4c, 0xf8, 0x08, 0xf9, 0x7d, 0xf9, + 0x8a, 0xf7, 0x9e, 0xf7, 0xe2, 0xf9, 0x4d, 0xfb, 0x9b, 0x00, 0x11, 0x06, 0x2a, 0x06, 0xd7, 0x02, + 0x9a, 0x03, 0xbe, 0x0a, 0xb2, 0x14, 0x1b, 0x1c, 0xa5, 0x1a, 0xef, 0x11, 0xe7, 0x0b, 0xc6, 0x0b, + 0x3b, 0x0e, 0xa8, 0x10, 0x5b, 0x0f, 0x6d, 0x09, 0x10, 0x03, 0xaa, 0xff, 0x2c, 0xff, 0x79, 0x00, + 0xaa, 0x01, 0x39, 0x02, 0x79, 0x01, 0x37, 0x01, 0xe1, 0x00, 0x30, 0x00, 0x10, 0x01, 0x98, 0x02, + 0x2c, 0x01, 0xe4, 0xfd, 0xc2, 0xfc, 0xfd, 0xfd, 0x69, 0xfe, 0xed, 0xfd, 0x12, 0xfd, 0xc4, 0xfb, + 0xf0, 0xfc, 0x91, 0xfe, 0x48, 0xfe, 0x7c, 0xfd, 0x5c, 0xfd, 0xa0, 0xfd, 0xfb, 0xfb, 0xe6, 0xfa, + 0x55, 0xf9, 0xa5, 0xf6, 0xb1, 0xf5, 0x88, 0xf4, 0x52, 0xf2, 0x4d, 0xf1, 0x17, 0xf1, 0xa5, 0xef, + 0xe9, 0xee, 0xf7, 0xf0, 0x2f, 0xf2, 0x6e, 0xf1, 0x4f, 0xf2, 0x87, 0xf3, 0x48, 0xf3, 0x0b, 0xf4, + 0xa2, 0xf5, 0x64, 0xf5, 0x48, 0xf5, 0xf8, 0xf6, 0xf1, 0xf7, 0x23, 0xf8, 0x55, 0xf9, 0x87, 0xfa, + 0xa3, 0xfb, 0x29, 0xff, 0x36, 0x02, 0x31, 0x05, 0x55, 0x0c, 0xc8, 0x12, 0xfe, 0x12, 0x90, 0x12, + 0x2d, 0x16, 0x2c, 0x1e, 0x87, 0x26, 0xca, 0x2b, 0x52, 0x2a, 0x95, 0x24, 0x46, 0x21, 0xca, 0x20, + 0xb4, 0x20, 0x8e, 0x20, 0xda, 0x1c, 0x93, 0x13, 0xf2, 0x08, 0x01, 0x05, 0x79, 0x06, 0xd4, 0x06, + 0x86, 0x04, 0x87, 0xfe, 0x7f, 0xf8, 0x7a, 0xf6, 0x88, 0xf8, 0x05, 0xfb, 0xfc, 0xfb, 0xd0, 0xfa, + 0x51, 0xf6, 0x01, 0xf4, 0x23, 0xf8, 0x48, 0xfc, 0x9b, 0xfc, 0xe8, 0xf9, 0xfe, 0xf5, 0x34, 0xf4, + 0x55, 0xf6, 0x7a, 0xf8, 0x8d, 0xf7, 0xbb, 0xf3, 0x96, 0xf0, 0xfd, 0xec, 0x42, 0xeb, 0x90, 0xed, + 0xda, 0xed, 0x74, 0xeb, 0x88, 0xea, 0xe4, 0xeb, 0x3a, 0xed, 0x9a, 0xef, 0x70, 0xf0, 0xf4, 0xed, + 0x95, 0xee, 0xd1, 0xef, 0xff, 0xee, 0x73, 0xef, 0xdf, 0xf1, 0xc2, 0xf1, 0x8f, 0xf0, 0x39, 0xf1, + 0x32, 0xf0, 0xcc, 0xed, 0x3a, 0xee, 0xcf, 0xee, 0xfe, 0xee, 0xae, 0xf2, 0x9a, 0xf6, 0x70, 0xf7, + 0x8c, 0xf9, 0xea, 0xfb, 0x3c, 0x00, 0x7b, 0x08, 0xa8, 0x0f, 0x58, 0x13, 0x51, 0x14, 0x9a, 0x17, + 0x91, 0x1d, 0x4a, 0x25, 0xd1, 0x2b, 0xe7, 0x2c, 0xb2, 0x27, 0x2b, 0x22, 0x5b, 0x21, 0x05, 0x25, + 0x5c, 0x27, 0x2a, 0x24, 0x6e, 0x1b, 0xbf, 0x12, 0xf7, 0x0e, 0xb3, 0x0f, 0xb1, 0x11, 0x7b, 0x12, + 0xef, 0x10, 0x73, 0x0c, 0xce, 0x07, 0x23, 0x07, 0xcf, 0x09, 0x39, 0x0b, 0x0b, 0x09, 0xce, 0x03, + 0xf0, 0xfe, 0x17, 0xfe, 0xde, 0xfe, 0x19, 0xfd, 0x15, 0xfb, 0x64, 0xf7, 0x24, 0xf3, 0x6a, 0xf2, + 0x51, 0xf4, 0x62, 0xf6, 0xf8, 0xf6, 0x0f, 0xf6, 0x54, 0xf5, 0xb8, 0xf3, 0xaa, 0xf4, 0xad, 0xf5, + 0x44, 0xf3, 0x23, 0xf0, 0xe8, 0xed, 0x2d, 0xed, 0x25, 0xee, 0x90, 0xef, 0x1a, 0xee, 0xae, 0xec, + 0x44, 0xec, 0x50, 0xeb, 0x63, 0xeb, 0x68, 0xeb, 0x0d, 0xeb, 0x1f, 0xea, 0x99, 0xea, 0x04, 0xed, + 0xe7, 0xed, 0x18, 0xee, 0xbf, 0xed, 0x50, 0xed, 0x37, 0xee, 0x24, 0xf1, 0xe1, 0xf2, 0x4e, 0xf4, + 0xb0, 0xf8, 0x78, 0xfd, 0x02, 0x04, 0x99, 0x0c, 0x60, 0x11, 0x8b, 0x11, 0x24, 0x12, 0x47, 0x15, + 0x85, 0x1b, 0x57, 0x23, 0xe2, 0x28, 0xae, 0x26, 0x7a, 0x1f, 0xe2, 0x1a, 0x36, 0x19, 0xc8, 0x1a, + 0x64, 0x1c, 0x51, 0x17, 0x5a, 0x0d, 0x28, 0x04, 0x91, 0xff, 0x29, 0xfe, 0xd4, 0xff, 0x19, 0x01, + 0x37, 0xfe, 0xf0, 0xf8, 0x16, 0xf4, 0xe6, 0xf1, 0xea, 0xf0, 0xa1, 0xf1, 0x15, 0xf1, 0xb8, 0xed, + 0x1c, 0xec, 0x1e, 0xee, 0xbe, 0xf0, 0x98, 0xf2, 0x1e, 0xf3, 0x3c, 0xf2, 0x71, 0xf3, 0x37, 0xf7, + 0xdd, 0xfa, 0x0b, 0xfd, 0x56, 0xfe, 0xc5, 0x00, 0x38, 0x02, 0x28, 0x03, 0x08, 0x05, 0xfc, 0x03, + 0xbb, 0x01, 0x8e, 0x00, 0xaa, 0xff, 0x8b, 0xff, 0xc6, 0x00, 0x76, 0x00, 0x37, 0xfe, 0x26, 0xfc, + 0x39, 0xfc, 0xc3, 0xfc, 0x01, 0xfd, 0x91, 0xfd, 0x0d, 0xfd, 0x7f, 0xfc, 0x93, 0xfc, 0x88, 0xfd, + 0x35, 0xfe, 0x88, 0xfe, 0xb1, 0xff, 0xa8, 0xff, 0x75, 0xff, 0xa5, 0xfe, 0xbd, 0xfc, 0x5e, 0xfc, + 0xca, 0xfd, 0xa8, 0x00, 0x86, 0x04, 0xb9, 0x09, 0x6f, 0x0c, 0xb7, 0x0a, 0x13, 0x0a, 0xec, 0x0c, + 0xe0, 0x14, 0xcb, 0x1c, 0x84, 0x20, 0xeb, 0x1d, 0x8c, 0x18, 0xa8, 0x15, 0x51, 0x16, 0xb8, 0x18, + 0x4b, 0x18, 0xeb, 0x11, 0x8f, 0x07, 0x51, 0xff, 0x95, 0xfb, 0x99, 0xfa, 0x97, 0xfa, 0xaf, 0xf8, + 0x19, 0xf5, 0xe8, 0xf2, 0xaf, 0xf2, 0xb5, 0xf4, 0xa4, 0xf6, 0x32, 0xf6, 0x72, 0xf3, 0x55, 0xf2, + 0x5a, 0xf4, 0x2e, 0xf8, 0x4b, 0xfb, 0x27, 0xfc, 0x75, 0xfb, 0xd8, 0xfb, 0x0d, 0xfd, 0x67, 0xfd, + 0xab, 0xfd, 0x59, 0xfd, 0x5f, 0xfc, 0x38, 0xfc, 0xaf, 0xfc, 0x94, 0xfd, 0x6f, 0xfd, 0x94, 0xfb, + 0xbf, 0xf8, 0x0a, 0xf7, 0x43, 0xf6, 0x39, 0xf6, 0xd5, 0xf6, 0x78, 0xf6, 0x7f, 0xf5, 0xd7, 0xf4, + 0xaa, 0xf4, 0x6d, 0xf4, 0x52, 0xf4, 0xac, 0xf4, 0xe2, 0xf3, 0x1f, 0xf3, 0x15, 0xf4, 0x80, 0xf5, + 0x4b, 0xf5, 0x00, 0xf5, 0xcd, 0xf5, 0x0d, 0xf8, 0x35, 0xfa, 0x81, 0xf9, 0xdd, 0xf9, 0x23, 0xfd, + 0x75, 0x00, 0xbd, 0x04, 0x7c, 0x0c, 0x39, 0x15, 0xe8, 0x19, 0xfa, 0x19, 0x78, 0x19, 0xa0, 0x1d, + 0x88, 0x25, 0x55, 0x2c, 0x1b, 0x2c, 0xff, 0x25, 0xa1, 0x20, 0x20, 0x1f, 0x98, 0x20, 0x86, 0x21, + 0xbc, 0x1d, 0x88, 0x14, 0x70, 0x09, 0x3d, 0x02, 0xa3, 0x02, 0xcf, 0x05, 0x7e, 0x06, 0x05, 0x03, + 0xa6, 0xfc, 0x54, 0xf8, 0xd8, 0xf8, 0xb7, 0xfb, 0xc0, 0xfd, 0x77, 0xfb, 0x4e, 0xf5, 0x09, 0xf1, + 0xdf, 0xf1, 0x5c, 0xf5, 0x99, 0xf6, 0x76, 0xf4, 0x51, 0xf2, 0xb6, 0xf1, 0x92, 0xf2, 0x24, 0xf3, + 0x01, 0xf2, 0x63, 0xf1, 0x50, 0xf1, 0x40, 0xf1, 0xf4, 0xf1, 0xf8, 0xf2, 0x29, 0xf2, 0x99, 0xef, + 0xe3, 0xec, 0xf4, 0xeb, 0x0c, 0xed, 0x59, 0xef, 0x20, 0xef, 0xb3, 0xec, 0xf9, 0xeb, 0x6b, 0xed, + 0x5a, 0xee, 0xf2, 0xee, 0x2d, 0xef, 0xac, 0xed, 0xb7, 0xec, 0xcb, 0xee, 0xea, 0xf1, 0x5f, 0xf3, + 0x16, 0xf3, 0x55, 0xf2, 0xd4, 0xf2, 0xb9, 0xf5, 0xbf, 0xf6, 0x60, 0xf6, 0x4c, 0xf8, 0x37, 0xfc, + 0xe3, 0xff, 0x86, 0x04, 0xd2, 0x0a, 0x1d, 0x0e, 0x53, 0x0f, 0x78, 0x10, 0x4e, 0x13, 0x21, 0x19, + 0xa5, 0x1f, 0xb5, 0x21, 0x8a, 0x1e, 0xb2, 0x1b, 0xa0, 0x1b, 0x81, 0x1c, 0x05, 0x1e, 0x47, 0x20, + 0xd8, 0x1d, 0x6c, 0x17, 0x71, 0x11, 0x5f, 0x0e, 0x40, 0x0f, 0xd1, 0x10, 0xa4, 0x10, 0x53, 0x0e, + 0x6b, 0x0b, 0x11, 0x09, 0x77, 0x07, 0xbb, 0x06, 0x38, 0x06, 0xed, 0x03, 0x0a, 0xff, 0xdf, 0xfb, + 0x59, 0xfb, 0x5f, 0xfb, 0x90, 0xfa, 0xef, 0xf8, 0xa7, 0xf8, 0x67, 0xfa, 0x83, 0xfc, 0x4f, 0xfb, + 0x21, 0xf9, 0x21, 0xf9, 0xcc, 0xf9, 0x30, 0xfa, 0x6b, 0xfc, 0x57, 0xff, 0x01, 0xfe, 0xc2, 0xf9, + 0x8b, 0xf6, 0x87, 0xf5, 0xa3, 0xf7, 0x9c, 0xf8, 0x05, 0xf4, 0x34, 0xef, 0xf2, 0xed, 0xa0, 0xee, + 0x39, 0xef, 0x4b, 0xf1, 0xfb, 0xf1, 0xac, 0xee, 0xb7, 0xeb, 0x49, 0xec, 0xc6, 0xee, 0xa2, 0xf1, + 0x69, 0xf4, 0xb2, 0xf3, 0xdb, 0xf3, 0x66, 0xf5, 0xe8, 0xf3, 0xda, 0xf1, 0x01, 0xf3, 0x6e, 0xf5, + 0xbb, 0xf7, 0x25, 0xfd, 0xf0, 0x02, 0x4b, 0x06, 0x36, 0x08, 0x48, 0x0c, 0x7a, 0x12, 0x0e, 0x1a, + 0xce, 0x20, 0xa1, 0x20, 0x90, 0x1b, 0xfc, 0x18, 0x57, 0x1a, 0x29, 0x1e, 0x58, 0x22, 0xf4, 0x21, + 0x92, 0x18, 0xa1, 0x0c, 0x1f, 0x05, 0x85, 0x02, 0x65, 0x02, 0x77, 0x02, 0x85, 0xff, 0xa8, 0xf8, + 0x53, 0xf3, 0xaa, 0xf2, 0x4a, 0xf5, 0xba, 0xf7, 0x02, 0xf6, 0x02, 0xf0, 0xa9, 0xea, 0x1d, 0xec, + 0xee, 0xf0, 0x10, 0xf4, 0x24, 0xf5, 0x3d, 0xf4, 0x32, 0xf4, 0xb7, 0xf6, 0x0d, 0xfa, 0x8b, 0xfc, + 0xc4, 0xfd, 0xef, 0xfd, 0xa3, 0xfe, 0x04, 0x00, 0x02, 0x03, 0xbe, 0x05, 0x52, 0x05, 0x82, 0x04, + 0x60, 0x04, 0x8e, 0x03, 0xe8, 0x03, 0x14, 0x05, 0x4e, 0x04, 0x87, 0x03, 0x04, 0x04, 0x15, 0x03, + 0xad, 0x01, 0xb4, 0x01, 0xae, 0x01, 0x01, 0x01, 0x8a, 0x00, 0x29, 0x00, 0x7f, 0xfd, 0xa4, 0xfb, + 0x2b, 0xfb, 0x9f, 0xfa, 0xcc, 0xfb, 0xf6, 0xfc, 0x5d, 0xfb, 0x06, 0xf9, 0x74, 0xf9, 0x80, 0xf9, + 0x0d, 0xfb, 0xfa, 0x00, 0x9a, 0x06, 0x67, 0x09, 0xb7, 0x08, 0x95, 0x09, 0x59, 0x0e, 0xce, 0x15, + 0x68, 0x19, 0x08, 0x18, 0xab, 0x14, 0xd0, 0x10, 0x69, 0x0d, 0xa8, 0x0c, 0x5d, 0x0e, 0xff, 0x0d, + 0xea, 0x09, 0x59, 0x02, 0x0c, 0xfa, 0x6d, 0xf6, 0x06, 0xf7, 0x83, 0xf8, 0x6e, 0xf8, 0x0a, 0xf6, + 0xf3, 0xf2, 0x2a, 0xf1, 0x82, 0xf2, 0xda, 0xf5, 0xba, 0xf7, 0xca, 0xf6, 0x2b, 0xf5, 0xf9, 0xf3, + 0xa8, 0xf3, 0xac, 0xf3, 0x48, 0xf3, 0x64, 0xf4, 0xc9, 0xf7, 0xbb, 0xfa, 0xfd, 0xfb, 0xba, 0xfc, + 0x61, 0xfc, 0xc6, 0xfb, 0xcd, 0xfb, 0xce, 0xfd, 0xc8, 0x01, 0xe0, 0x03, 0x05, 0x03, 0xe3, 0x00, + 0x9a, 0xff, 0x5b, 0x00, 0x68, 0x01, 0x82, 0x00, 0x42, 0xfd, 0x15, 0xf9, 0xdc, 0xf5, 0xf3, 0xf3, + 0x4a, 0xf3, 0x8a, 0xf3, 0x67, 0xf3, 0x9a, 0xf1, 0xb5, 0xef, 0x3a, 0xef, 0x3d, 0xef, 0x10, 0xf0, + 0x58, 0xf1, 0xd5, 0xf2, 0x39, 0xf5, 0xb0, 0xf7, 0xf2, 0xf8, 0xc3, 0xf9, 0x0a, 0xfb, 0x64, 0xfd, + 0x3a, 0x00, 0x42, 0x07, 0x05, 0x0f, 0x3e, 0x13, 0xd9, 0x14, 0xdb, 0x15, 0x72, 0x19, 0xbc, 0x21, + 0xf8, 0x29, 0x9a, 0x28, 0x90, 0x20, 0xb2, 0x1b, 0x55, 0x1b, 0x0f, 0x1d, 0xf0, 0x20, 0xcc, 0x20, + 0x0a, 0x1a, 0x92, 0x10, 0x98, 0x09, 0xd8, 0x06, 0xf4, 0x08, 0x79, 0x0c, 0x63, 0x0a, 0x5a, 0x05, + 0xd8, 0x02, 0xeb, 0x00, 0x74, 0xfd, 0x8f, 0xfc, 0xa2, 0xfc, 0x9d, 0xf9, 0x69, 0xf6, 0x6a, 0xf3, + 0xbc, 0xef, 0x26, 0xed, 0xc7, 0xed, 0x94, 0xef, 0xac, 0xf1, 0xab, 0xf5, 0x11, 0xf8, 0x83, 0xf6, + 0xfe, 0xf5, 0xff, 0xf8, 0x15, 0xfb, 0x77, 0xfd, 0xc8, 0xfe, 0xc9, 0xfa, 0x3c, 0xf6, 0x5b, 0xf4, + 0x15, 0xf4, 0xac, 0xf4, 0x39, 0xf5, 0x47, 0xf2, 0xdf, 0xec, 0x23, 0xea, 0xc3, 0xeb, 0xc1, 0xed, + 0x78, 0xef, 0xcb, 0xf0, 0xed, 0xef, 0x66, 0xef, 0x36, 0xf1, 0xf8, 0xf3, 0xdb, 0xf6, 0x4a, 0xf9, + 0xb5, 0xf9, 0x4b, 0xfa, 0x78, 0xfb, 0x23, 0xfc, 0xa2, 0xfc, 0x43, 0xfe, 0xe6, 0xfe, 0xc1, 0x00, + 0x76, 0x06, 0xa0, 0x0b, 0xea, 0x0c, 0xbb, 0x0b, 0xc7, 0x0d, 0x93, 0x12, 0x68, 0x1a, 0xd7, 0x20, + 0x7d, 0x1f, 0x89, 0x19, 0xca, 0x15, 0x6e, 0x15, 0x58, 0x17, 0x73, 0x1b, 0xff, 0x1b, 0x18, 0x16, + 0x60, 0x0e, 0xfa, 0x0a, 0x41, 0x0a, 0x51, 0x0b, 0xe1, 0x0c, 0x13, 0x0a, 0xaa, 0x04, 0x7d, 0x01, + 0xd6, 0x00, 0x92, 0x00, 0x23, 0x00, 0x92, 0xfe, 0x4c, 0xfa, 0x61, 0xf7, 0x16, 0xf8, 0x41, 0xf9, + 0xc6, 0xf7, 0x8e, 0xf5, 0x58, 0xf4, 0x5f, 0xf5, 0xd5, 0xf8, 0x5e, 0xfc, 0x10, 0xfd, 0xcc, 0xfb, + 0x60, 0xfb, 0xa8, 0xfb, 0x1d, 0xfc, 0x64, 0xfe, 0x5d, 0xfe, 0x46, 0xfb, 0x83, 0xf8, 0x2c, 0xf9, + 0xdd, 0xfa, 0xca, 0xfb, 0xaf, 0xfa, 0xd8, 0xf6, 0x6c, 0xf4, 0xce, 0xf3, 0x11, 0xf4, 0x50, 0xf4, + 0xe2, 0xf4, 0x95, 0xf4, 0x37, 0xf2, 0x8e, 0xf1, 0x35, 0xf2, 0x94, 0xf2, 0xbc, 0xf2, 0xed, 0xf2, + 0x71, 0xf3, 0x9b, 0xf4, 0xa2, 0xf5, 0xd5, 0xf4, 0xf9, 0xf4, 0x74, 0xf6, 0x15, 0xf7, 0xdd, 0xf9, + 0xf2, 0xff, 0x54, 0x04, 0xec, 0x04, 0x2c, 0x05, 0xe5, 0x08, 0x4e, 0x11, 0xac, 0x1b, 0xa2, 0x21, + 0x9c, 0x1f, 0x0c, 0x1a, 0x59, 0x16, 0x59, 0x15, 0x37, 0x18, 0x95, 0x1c, 0xe7, 0x1a, 0xdd, 0x11, + 0xcf, 0x08, 0x53, 0x05, 0x8f, 0x04, 0xc8, 0x04, 0x05, 0x02, 0x99, 0xfb, 0x9f, 0xf5, 0xa1, 0xf3, + 0xd0, 0xf4, 0x86, 0xf4, 0xf3, 0xf3, 0x23, 0xf2, 0x13, 0xf0, 0x0d, 0xef, 0x58, 0xef, 0x2b, 0xee, + 0xf6, 0xea, 0x6a, 0xe9, 0xdc, 0xea, 0xda, 0xee, 0x39, 0xf3, 0xaa, 0xf4, 0xa6, 0xf3, 0xb2, 0xf3, + 0x53, 0xf6, 0x89, 0xf9, 0x5b, 0xfd, 0x0c, 0xff, 0x41, 0xfe, 0x44, 0xfd, 0xd2, 0xfd, 0xe0, 0xff, + 0xfa, 0x01, 0x19, 0x04, 0x1b, 0x04, 0xce, 0x02, 0xc9, 0x01, 0xe3, 0x01, 0x7a, 0x01, 0xce, 0x01, + 0x09, 0x03, 0x77, 0x03, 0x74, 0x03, 0x0b, 0x03, 0x45, 0x02, 0x70, 0x01, 0x62, 0x02, 0x03, 0x03, + 0x6e, 0x03, 0xb7, 0x03, 0x9b, 0x02, 0x2a, 0x01, 0x04, 0x01, 0xda, 0x02, 0xf6, 0x04, 0xb5, 0x08, + 0xad, 0x0c, 0xfb, 0x0d, 0x1d, 0x0d, 0xac, 0x0d, 0x12, 0x11, 0xaf, 0x16, 0x5f, 0x1b, 0x67, 0x1c, + 0xfb, 0x19, 0x37, 0x16, 0x69, 0x12, 0x68, 0x0f, 0x32, 0x10, 0x25, 0x11, 0x1a, 0x0d, 0x47, 0x06, + 0x7b, 0x00, 0x01, 0xff, 0x40, 0x00, 0xe6, 0x00, 0xff, 0xfe, 0x39, 0xfc, 0x4d, 0xf9, 0x35, 0xf7, + 0xdb, 0xf5, 0xb5, 0xf4, 0x59, 0xf3, 0x2a, 0xf3, 0x5d, 0xf3, 0x36, 0xf4, 0x4e, 0xf4, 0x12, 0xf2, + 0x7c, 0xee, 0xf0, 0xec, 0xf2, 0xef, 0x93, 0xf3, 0x0b, 0xf6, 0xdd, 0xf7, 0x6f, 0xf8, 0x72, 0xf9, + 0x10, 0xfc, 0x7b, 0xff, 0x0c, 0x02, 0x8f, 0x02, 0x33, 0x00, 0x8d, 0xfd, 0x1e, 0xfe, 0xc5, 0xff, + 0xf5, 0x01, 0xc3, 0x01, 0xcd, 0xff, 0xb5, 0xfd, 0x56, 0xfb, 0x7b, 0xf9, 0x44, 0xf8, 0x1e, 0xf8, + 0xba, 0xf7, 0x8d, 0xf6, 0x16, 0xf4, 0x29, 0xf2, 0x2c, 0xf2, 0x70, 0xf2, 0x26, 0xf1, 0xcc, 0xef, + 0x5d, 0xf1, 0x84, 0xf2, 0x53, 0xf1, 0x34, 0xf1, 0xa5, 0xf3, 0x5b, 0xf8, 0x25, 0xfc, 0x0d, 0x01, + 0x0c, 0x07, 0x57, 0x0c, 0xd9, 0x0d, 0xe0, 0x0d, 0x7c, 0x12, 0x0a, 0x1c, 0x2e, 0x25, 0xd6, 0x26, + 0x3c, 0x24, 0x18, 0x20, 0xcd, 0x1d, 0x9a, 0x1d, 0xfc, 0x1e, 0x37, 0x1f, 0x3f, 0x1c, 0x31, 0x16, + 0x29, 0x0e, 0xf3, 0x09, 0x47, 0x0a, 0x2b, 0x0b, 0x98, 0x0a, 0xf1, 0x07, 0x89, 0x04, 0xb5, 0x00, + 0x9a, 0xfe, 0xfe, 0xfc, 0xd3, 0xfa, 0x44, 0xfa, 0x06, 0xfa, 0xaf, 0xf9, 0xb6, 0xf7, 0x76, 0xf4, + 0xad, 0xf0, 0xc7, 0xee, 0x1f, 0xf0, 0xc5, 0xf1, 0x79, 0xf1, 0x8b, 0xf1, 0x7c, 0xf2, 0xde, 0xf3, + 0x10, 0xf6, 0x11, 0xf8, 0xb6, 0xf9, 0xd6, 0xf9, 0xeb, 0xf7, 0xa0, 0xf6, 0xd3, 0xf5, 0xce, 0xf6, + 0xd5, 0xf7, 0xeb, 0xf6, 0xd2, 0xf4, 0x37, 0xf3, 0xd6, 0xf1, 0x8e, 0xf0, 0xb4, 0xf0, 0x8f, 0xf1, + 0x4d, 0xf1, 0x61, 0xf1, 0x62, 0xf0, 0x24, 0xf0, 0xe1, 0xf0, 0x09, 0xf2, 0x53, 0xf3, 0x6f, 0xf5, + 0x7d, 0xf8, 0x98, 0xf8, 0xd4, 0xf7, 0x8b, 0xf7, 0x56, 0xfa, 0x11, 0xfe, 0x02, 0x02, 0xf6, 0x07, + 0x1d, 0x0d, 0x78, 0x0f, 0x5b, 0x0d, 0x5c, 0x0d, 0xfc, 0x11, 0xb5, 0x1a, 0xb7, 0x21, 0xb2, 0x1f, + 0x35, 0x18, 0x26, 0x13, 0xcf, 0x13, 0x95, 0x15, 0xfc, 0x15, 0xf4, 0x13, 0x37, 0x0e, 0xe3, 0x07, + 0xa2, 0x04, 0x14, 0x05, 0x86, 0x06, 0xad, 0x07, 0x0a, 0x06, 0x87, 0x01, 0x03, 0x01, 0x9a, 0x01, + 0xc6, 0x01, 0x9e, 0xfe, 0x38, 0xfb, 0xe9, 0xf9, 0x0b, 0xfa, 0x0a, 0xfb, 0x33, 0xfa, 0xbf, 0xf7, + 0x93, 0xf4, 0x62, 0xf5, 0x73, 0xf6, 0x26, 0xf7, 0xa4, 0xf8, 0x75, 0xf9, 0x7b, 0xfa, 0x35, 0xfd, + 0x59, 0x00, 0x34, 0x03, 0xb9, 0x04, 0x5a, 0x04, 0x1d, 0x02, 0xc0, 0xff, 0x83, 0xff, 0xd7, 0x00, + 0xb4, 0x01, 0x76, 0x01, 0x2f, 0x00, 0x1b, 0xfe, 0xf7, 0xfb, 0x41, 0xf9, 0x5c, 0xf7, 0x62, 0xf7, + 0xf7, 0xf7, 0x20, 0xf8, 0xaf, 0xf5, 0xe7, 0xf2, 0xf9, 0xf0, 0xb1, 0xf0, 0x54, 0xf1, 0xbd, 0xf2, + 0xa7, 0xf3, 0xa1, 0xf3, 0x73, 0xf3, 0xc5, 0xf4, 0x60, 0xf8, 0x02, 0xfb, 0xe4, 0xfe, 0x65, 0x04, + 0xcf, 0x08, 0xd2, 0x0a, 0x97, 0x09, 0x26, 0x08, 0x75, 0x0b, 0xb8, 0x13, 0x8a, 0x19, 0xb2, 0x18, + 0x7b, 0x14, 0xe1, 0x10, 0xcb, 0x0f, 0xde, 0x0e, 0xb2, 0x0f, 0x6a, 0x0e, 0xc7, 0x0b, 0xbf, 0x08, + 0xeb, 0x04, 0x07, 0x03, 0x45, 0x03, 0x6b, 0x05, 0x3e, 0x04, 0xe6, 0x01, 0x6c, 0xff, 0xaa, 0xfd, + 0xd2, 0xfb, 0xda, 0xf8, 0xf5, 0xf5, 0x7b, 0xf3, 0x0d, 0xf4, 0xc2, 0xf4, 0x70, 0xf3, 0x98, 0xef, + 0x63, 0xec, 0x66, 0xec, 0x39, 0xee, 0x97, 0xf0, 0x37, 0xf1, 0x06, 0xf2, 0xff, 0xf2, 0xa3, 0xf4, + 0xa6, 0xf7, 0xc1, 0xfb, 0x7c, 0xff, 0x97, 0x00, 0x77, 0xff, 0xe0, 0xfc, 0x01, 0xfc, 0xdb, 0xfd, + 0x25, 0x00, 0xa0, 0x00, 0x1e, 0x00, 0x81, 0x00, 0x19, 0x01, 0x71, 0x00, 0x35, 0xfe, 0x90, 0xfc, + 0xfe, 0xfc, 0x65, 0xfe, 0x3e, 0xff, 0x8f, 0xff, 0xac, 0xfe, 0xe5, 0xfd, 0xd3, 0xfd, 0x5b, 0xff, + 0x60, 0x01, 0xbd, 0x01, 0xe5, 0x01, 0x44, 0x03, 0xf5, 0x04, 0x7b, 0x06, 0x56, 0x08, 0x62, 0x0e, + 0x12, 0x15, 0x89, 0x17, 0xfb, 0x14, 0x39, 0x12, 0xb2, 0x14, 0xbd, 0x19, 0x8e, 0x1d, 0xaf, 0x1c, + 0x43, 0x18, 0xfa, 0x12, 0x9a, 0x10, 0x7b, 0x11, 0xd3, 0x11, 0xb3, 0x0e, 0x1d, 0x09, 0x7d, 0x04, + 0xad, 0x01, 0x12, 0x02, 0xac, 0x02, 0xbc, 0x01, 0x7b, 0x00, 0xac, 0xff, 0xf8, 0xfe, 0x77, 0xfd, + 0xf4, 0xfa, 0x21, 0xf7, 0xeb, 0xf2, 0x70, 0xf0, 0x70, 0xf0, 0x30, 0xf2, 0x09, 0xf1, 0xb1, 0xec, + 0xf3, 0xe7, 0xad, 0xe7, 0xd6, 0xea, 0xb9, 0xed, 0xba, 0xee, 0xbe, 0xed, 0x9b, 0xed, 0xd2, 0xef, + 0x9e, 0xf3, 0x2c, 0xf8, 0x21, 0xfb, 0x70, 0xfc, 0xab, 0xfb, 0x1d, 0xfa, 0x51, 0xf9, 0xbe, 0xf9, + 0x53, 0xfb, 0x74, 0xfc, 0x19, 0xfd, 0x15, 0xfd, 0x02, 0xfe, 0x71, 0xfd, 0xb5, 0xfa, 0xd2, 0xf8, + 0x13, 0xf8, 0x46, 0xf8, 0xf0, 0xf7, 0xd5, 0xf6, 0xae, 0xf5, 0x70, 0xf5, 0xc4, 0xf5, 0xe1, 0xf5, + 0x1a, 0xf6, 0xd0, 0xf5, 0x52, 0xf6, 0x40, 0xf7, 0xd2, 0xf9, 0xe3, 0xfb, 0xfb, 0xfd, 0x39, 0x03, + 0x3b, 0x09, 0x1e, 0x0d, 0x3d, 0x0e, 0x11, 0x0f, 0x02, 0x11, 0x4d, 0x17, 0x1e, 0x1e, 0xeb, 0x21, + 0x8c, 0x20, 0x38, 0x1e, 0x05, 0x1e, 0x24, 0x1f, 0x93, 0x20, 0x74, 0x1f, 0x51, 0x1c, 0xf4, 0x17, + 0x09, 0x14, 0x39, 0x11, 0xf1, 0x0e, 0x07, 0x0d, 0x7d, 0x0a, 0x5d, 0x07, 0x22, 0x04, 0x2d, 0x01, + 0x5d, 0xfe, 0xc3, 0xfa, 0x55, 0xf5, 0x54, 0xf0, 0xdf, 0xee, 0x8a, 0xf0, 0x8e, 0xf1, 0x52, 0xef, + 0xc3, 0xeb, 0x78, 0xe9, 0x3c, 0xea, 0x27, 0xed, 0xfa, 0xee, 0xb2, 0xef, 0x05, 0xf0, 0x56, 0xf2, + 0xe4, 0xf5, 0xe0, 0xf8, 0xae, 0xfb, 0xb2, 0xfd, 0xe0, 0xfe, 0x5c, 0xff, 0x07, 0xff, 0x96, 0xfe, + 0x1c, 0xfe, 0xb8, 0xfb, 0x91, 0xf9, 0x6d, 0xf9, 0xb4, 0xf9, 0x63, 0xf9, 0xff, 0xf7, 0xb6, 0xf6, + 0xa8, 0xf5, 0x0f, 0xf5, 0x44, 0xf5, 0xfd, 0xf5, 0xf4, 0xf5, 0x55, 0xf6, 0x7b, 0xf8, 0xc1, 0xf9, + 0x1f, 0xfa, 0xe9, 0xf9, 0xbd, 0xfb, 0x51, 0xfe, 0xfa, 0x00, 0xd5, 0x03, 0xca, 0x05, 0xf5, 0x07, + 0xa9, 0x0d, 0xe6, 0x12, 0x78, 0x14, 0xc6, 0x12, 0xfd, 0x10, 0xce, 0x13, 0x00, 0x18, 0xf0, 0x19, + 0x89, 0x17, 0x98, 0x13, 0x1c, 0x12, 0x3c, 0x12, 0x7c, 0x11, 0xa7, 0x0d, 0x71, 0x08, 0x90, 0x04, + 0x91, 0x04, 0x1d, 0x05, 0x77, 0x03, 0xfa, 0x00, 0x35, 0xfd, 0xd6, 0xfb, 0x76, 0xfb, 0xec, 0xfb, + 0x2b, 0xfd, 0xe0, 0xfb, 0x61, 0xf8, 0x22, 0xf6, 0xce, 0xf4, 0x81, 0xf5, 0x77, 0xf7, 0xe6, 0xf8, + 0x26, 0xfa, 0x24, 0xfa, 0x97, 0xfa, 0x9e, 0xfb, 0xa4, 0xfb, 0xd3, 0xfb, 0xdd, 0xfd, 0x30, 0x01, + 0x2a, 0x04, 0xa6, 0x05, 0x6c, 0x06, 0xc4, 0x04, 0x8d, 0x02, 0x74, 0x02, 0x51, 0x03, 0xd8, 0x02, + 0xdb, 0x01, 0x1a, 0x01, 0x21, 0x00, 0x56, 0x00, 0xb6, 0x00, 0x6f, 0x01, 0x9d, 0x01, 0xd5, 0xff, + 0x9a, 0xfe, 0x37, 0xfd, 0x30, 0xfb, 0xc2, 0xf8, 0xad, 0xf7, 0xd1, 0xf7, 0xf2, 0xf6, 0x1c, 0xf5, + 0x4f, 0xf4, 0xec, 0xf3, 0xf8, 0xf2, 0x83, 0xf3, 0x46, 0xf4, 0xe1, 0xf5, 0x1d, 0xf7, 0x66, 0xf7, + 0x3d, 0xf9, 0x61, 0xfc, 0x18, 0xff, 0x40, 0x01, 0x67, 0x02, 0x79, 0x02, 0xf4, 0x03, 0x8d, 0x06, + 0x83, 0x08, 0x42, 0x0a, 0x94, 0x0c, 0xdc, 0x0e, 0xa3, 0x0f, 0xc9, 0x0f, 0xe5, 0x0f, 0x49, 0x0f, + 0x4d, 0x0f, 0x91, 0x0f, 0x06, 0x10, 0xa0, 0x0f, 0x46, 0x0e, 0xfa, 0x0b, 0xad, 0x09, 0x96, 0x07, + 0xb0, 0x05, 0x88, 0x04, 0x05, 0x02, 0xb1, 0xfe, 0xc1, 0xfb, 0xd5, 0xf8, 0x25, 0xf7, 0xd1, 0xf4, + 0x71, 0xf2, 0xe4, 0xf0, 0xa8, 0xee, 0x66, 0xed, 0x40, 0xec, 0xc3, 0xeb, 0x31, 0xec, 0xe4, 0xec, + 0xab, 0xee, 0xfa, 0xf1, 0x47, 0xf4, 0x8d, 0xf5, 0x60, 0xf5, 0x8d, 0xf5, 0xa8, 0xf5, 0xce, 0xf4, + 0x26, 0xf5, 0x86, 0xf5, 0xb1, 0xf5, 0x51, 0xf6, 0x6c, 0xf7, 0x9a, 0xf8, 0x49, 0xf9, 0x78, 0xfa, + 0xc4, 0xfa, 0x45, 0xfb, 0x79, 0xfb, 0x1a, 0xfc, 0xbf, 0xfe, 0x75, 0x00, 0x18, 0x00, 0xfa, 0xfe, + 0x60, 0xff, 0xd1, 0xff, 0x77, 0xff, 0x89, 0x00, 0x2e, 0x02, 0x0d, 0x04, 0x4f, 0x07, 0x81, 0x08, + 0x07, 0x09, 0x56, 0x09, 0x4a, 0x0a, 0xda, 0x0f, 0xa2, 0x13, 0x2a, 0x13, 0xae, 0x13, 0x65, 0x14, + 0x96, 0x15, 0x1b, 0x19, 0x03, 0x1b, 0x46, 0x1c, 0xde, 0x1c, 0xbe, 0x19, 0x3e, 0x16, 0x3f, 0x13, + 0xf2, 0x10, 0x04, 0x10, 0x6b, 0x0f, 0xa3, 0x0e, 0x24, 0x0e, 0xce, 0x0d, 0x1c, 0x0c, 0x78, 0x08, + 0x87, 0x03, 0xd1, 0xfe, 0x90, 0xfb, 0x58, 0xf9, 0xb7, 0xf6, 0x23, 0xf4, 0xe6, 0xf1, 0xe0, 0xee, + 0x6f, 0xed, 0x16, 0xeb, 0x8e, 0xe8, 0xbe, 0xe8, 0x7c, 0xe9, 0xd3, 0xe8, 0x41, 0xe9, 0xe1, 0xe9, + 0xdc, 0xeb, 0x77, 0xee, 0xe6, 0xef, 0x27, 0xee, 0xf0, 0xed, 0x6a, 0xf1, 0x37, 0xf4, 0xe7, 0xf6, + 0xe2, 0xf9, 0xaf, 0xfa, 0x5d, 0xfa, 0x1f, 0xfc, 0x62, 0xfd, 0x4e, 0xfc, 0x68, 0xfd, 0xa2, 0xfd, + 0xce, 0xfc, 0xb8, 0xfc, 0xd3, 0xfc, 0xfc, 0xfc, 0x90, 0xfd, 0x59, 0xfe, 0x6a, 0xfd, 0x8d, 0xfc, + 0x30, 0xfc, 0xa3, 0xfb, 0xdb, 0xfd, 0x1e, 0xfe, 0xa4, 0xfe, 0x94, 0xff, 0x0e, 0x02, 0xf2, 0x02, + 0x20, 0x05, 0x9d, 0x07, 0x2c, 0x09, 0xe9, 0x0a, 0x2d, 0x0d, 0x5b, 0x0f, 0x7a, 0x12, 0x08, 0x17, + 0xd3, 0x1b, 0xe6, 0x1d, 0xbd, 0x1f, 0x96, 0x20, 0xf0, 0x21, 0x1c, 0x22, 0xbd, 0x1f, 0x81, 0x1b, + 0x8d, 0x18, 0x2f, 0x17, 0xe4, 0x14, 0x98, 0x12, 0xca, 0x10, 0x7a, 0x0e, 0x0c, 0x0c, 0xf3, 0x09, + 0x28, 0x06, 0x8f, 0x01, 0x2b, 0xfe, 0x5a, 0xfb, 0x91, 0xf8, 0xaa, 0xf4, 0x49, 0xf0, 0x86, 0xee, + 0x58, 0xeb, 0x48, 0xe8, 0x31, 0xe4, 0x23, 0xe2, 0x22, 0xe2, 0xdb, 0xe2, 0xda, 0xe4, 0x9c, 0xe6, + 0x65, 0xe7, 0x7c, 0xe9, 0xae, 0xe9, 0x7f, 0xe8, 0x6e, 0xea, 0xf6, 0xe9, 0x13, 0xea, 0x46, 0xed, + 0x6b, 0xee, 0x1c, 0xee, 0x03, 0xef, 0x5c, 0xf0, 0x3f, 0xf1, 0xee, 0xf3, 0x01, 0xf5, 0x00, 0xf6, + 0xbd, 0xf6, 0x19, 0xf9, 0xd2, 0xf8, 0xe3, 0xf8, 0xe2, 0xf9, 0x9d, 0xfa, 0xd4, 0xfc, 0x67, 0xfc, + 0x41, 0xfc, 0xdc, 0xfd, 0x35, 0xff, 0xe8, 0x00, 0x27, 0x04, 0x11, 0x07, 0xcf, 0x08, 0x33, 0x0b, + 0x95, 0x0c, 0xdf, 0x0d, 0xa7, 0x0e, 0x94, 0x0e, 0x2c, 0x0d, 0x8d, 0x10, 0x1b, 0x13, 0xd3, 0x12, + 0x90, 0x14, 0x8f, 0x17, 0x1b, 0x17, 0x07, 0x18, 0xc7, 0x18, 0x3c, 0x17, 0xa6, 0x16, 0x1c, 0x16, + 0x71, 0x14, 0xd3, 0x11, 0x7a, 0x10, 0x08, 0x0f, 0x98, 0x0d, 0x27, 0x0d, 0x77, 0x0a, 0xc3, 0x07, + 0x85, 0x06, 0x96, 0x04, 0xa5, 0x01, 0x68, 0xff, 0x2d, 0xfb, 0x96, 0xf8, 0xcf, 0xf6, 0x80, 0xf5, + 0x8e, 0xf2, 0xa8, 0xf0, 0x99, 0xef, 0x47, 0xee, 0x66, 0xef, 0xc0, 0xf1, 0xe2, 0xf3, 0x1b, 0xf8, + 0x20, 0xfb, 0xc1, 0xfa, 0x1e, 0xf8, 0x80, 0xf6, 0xa0, 0xf6, 0xdb, 0xfa, 0x13, 0xfe, 0xbd, 0xfd, + 0x78, 0xff, 0xff, 0x00, 0xaf, 0x02, 0x76, 0x03, 0x15, 0x04, 0x21, 0x05, 0xd6, 0x04, 0x80, 0x07, + 0x66, 0x07, 0x02, 0x04, 0x7f, 0x05, 0xbf, 0x04, 0x9f, 0x04, 0x20, 0x07, 0x07, 0x04, 0x8b, 0xff, + 0x2f, 0xfe, 0xe9, 0xfa, 0x26, 0xf9, 0x93, 0xf6, 0x2c, 0xf9, 0x8f, 0xfc, 0x0c, 0xf8, 0x2f, 0xfa, + 0x6a, 0xf4, 0x76, 0xf3, 0x0b, 0xf6, 0x54, 0xfa, 0x55, 0xfc, 0x26, 0x03, 0xfc, 0x06, 0xbe, 0x0c, + 0x45, 0x0a, 0xae, 0x0d, 0xf6, 0x0f, 0x7f, 0x14, 0x93, 0x1a, 0x0f, 0x1a, 0xb4, 0x1a, 0x8b, 0x19, + 0x4c, 0x19, 0x15, 0x19, 0x36, 0x18, 0xba, 0x18, 0xac, 0x19, 0xef, 0x12, 0x17, 0x0e, 0x46, 0x09, + 0x2a, 0x09, 0x4c, 0x03, 0x07, 0x04, 0x92, 0x00, 0x2f, 0x01, 0xbb, 0xf9, 0x16, 0xf5, 0x86, 0xec, + 0x55, 0xea, 0xc2, 0xe9, 0xb0, 0xea, 0xb0, 0xe5, 0xe8, 0xe4, 0x1a, 0xe6, 0x1e, 0xea, 0x0d, 0xe9, + 0x50, 0xe5, 0xff, 0xe3, 0xb0, 0xe7, 0x53, 0xe7, 0xb6, 0xe4, 0x58, 0xe3, 0xd5, 0xe0, 0x4e, 0xe2, + 0xd0, 0xe4, 0xb3, 0xe7, 0xd6, 0xe6, 0xec, 0xee, 0xe1, 0xf0, 0xa6, 0xf6, 0xf8, 0xfa, 0x3b, 0xfd, + 0x62, 0xfc, 0x00, 0x04, 0x52, 0x01, 0x8e, 0x02, 0x0c, 0xff, 0x87, 0x00, 0x70, 0x00, 0xde, 0xff, + 0x89, 0xfb, 0x1b, 0xfb, 0x08, 0xfe, 0xdf, 0x02, 0x43, 0x07, 0x9b, 0x0b, 0x56, 0x0a, 0xc0, 0x0d, + 0x8b, 0x11, 0xfc, 0x0c, 0x8c, 0x0b, 0x04, 0x07, 0x5b, 0x07, 0x5b, 0x0c, 0x17, 0x0a, 0x8e, 0x0b, + 0x88, 0x0d, 0x73, 0x11, 0xa9, 0x18, 0x33, 0x1a, 0x45, 0x20, 0xf4, 0x21, 0xa2, 0x1d, 0xa3, 0x17, + 0xf8, 0x11, 0x25, 0x0a, 0x3d, 0x09, 0x57, 0x0a, 0x8a, 0x06, 0x4b, 0x06, 0x58, 0x0a, 0x43, 0x0d, + 0xec, 0x09, 0x59, 0x06, 0xe0, 0x06, 0xc4, 0x07, 0xfe, 0x05, 0x44, 0x05, 0x91, 0xfd, 0x3f, 0xf2, + 0xfe, 0xe7, 0xfc, 0xdf, 0x88, 0xdd, 0x89, 0xda, 0xc3, 0xcd, 0x6a, 0xcd, 0x0a, 0xcf, 0x08, 0xd5, + 0x45, 0xd9, 0x51, 0xe1, 0x00, 0xe9, 0xd5, 0xea, 0x1f, 0xeb, 0x20, 0xeb, 0xdc, 0xe8, 0xd0, 0xe5, + 0x0e, 0xe7, 0xf1, 0xe7, 0x7d, 0xe8, 0xa9, 0xe7, 0x5f, 0xee, 0xe0, 0xf3, 0xbc, 0xf5, 0xdc, 0xf4, + 0xf6, 0xfb, 0x7f, 0xfd, 0x86, 0xfc, 0xef, 0xfd, 0x71, 0x01, 0xe6, 0x03, 0xd1, 0xff, 0x3d, 0xfe, + 0x4e, 0xfd, 0x72, 0xf7, 0xc5, 0xf7, 0x90, 0xfb, 0xa5, 0xf9, 0xee, 0xfa, 0x97, 0x04, 0x0b, 0x0c, + 0xed, 0x0b, 0x8b, 0x0b, 0x61, 0x10, 0x1a, 0x10, 0xa0, 0x0f, 0x67, 0x13, 0x61, 0x18, 0x8c, 0x1d, + 0x8b, 0x1f, 0xda, 0x24, 0x28, 0x29, 0xcc, 0x2f, 0x3b, 0x2f, 0x9d, 0x31, 0xac, 0x35, 0x24, 0x35, + 0x4f, 0x37, 0xc8, 0x39, 0x3a, 0x39, 0x3e, 0x39, 0xef, 0x36, 0xc2, 0x35, 0x50, 0x34, 0xbc, 0x2f, + 0x7f, 0x2e, 0xd7, 0x28, 0x68, 0x22, 0x45, 0x1f, 0x1a, 0x20, 0x93, 0x1e, 0xec, 0x18, 0x4a, 0x14, + 0xac, 0x11, 0x35, 0x0c, 0x5c, 0x07, 0x8a, 0x01, 0x89, 0xfc, 0xb5, 0xf5, 0x59, 0xf2, 0x27, 0xf2, + 0x9f, 0xee, 0x82, 0xeb, 0x98, 0xea, 0x07, 0xe9, 0x58, 0xe6, 0xfc, 0xe2, 0x04, 0xe7, 0x91, 0xea, + 0x2e, 0xe7, 0xcf, 0xe3, 0x0d, 0xe5, 0xe4, 0xe5, 0xd3, 0xe5, 0xf6, 0xe6, 0x5e, 0xe7, 0x3f, 0xe4, + 0x38, 0xe0, 0xd0, 0xdc, 0xf8, 0xda, 0xef, 0xda, 0x9c, 0xd9, 0x3c, 0xdf, 0x35, 0xe4, 0xe8, 0xe6, + 0x4d, 0xe9, 0xe1, 0xe8, 0x33, 0xe8, 0x97, 0xe9, 0x29, 0xe7, 0x66, 0xe5, 0xbc, 0xe4, 0x06, 0xe8, + 0xa6, 0xe9, 0xaa, 0xe9, 0x89, 0xeb, 0x90, 0xeb, 0x57, 0xf0, 0x73, 0xf3, 0x04, 0xf7, 0x71, 0xf9, + 0x65, 0xfd, 0x87, 0x03, 0x7c, 0x05, 0x70, 0x04, 0xce, 0x04, 0x6c, 0x06, 0x43, 0x09, 0xf9, 0x08, + 0x98, 0x08, 0xb6, 0x0a, 0xb4, 0x0b, 0x03, 0x0a, 0x39, 0x0a, 0xe2, 0x0c, 0x7b, 0x0f, 0x8c, 0x0f, + 0x61, 0x10, 0x7d, 0x0b, 0x74, 0x09, 0x6d, 0x08, 0xce, 0x07, 0x83, 0x08, 0x17, 0x09, 0xe9, 0x0a, + 0x3a, 0x0a, 0xad, 0x09, 0x56, 0x0a, 0xfb, 0x08, 0x2a, 0x06, 0x79, 0x05, 0x0f, 0x06, 0x71, 0x0b, + 0x22, 0x0a, 0x74, 0x07, 0xe4, 0x08, 0x3a, 0x0a, 0xde, 0x08, 0x7d, 0x08, 0x7f, 0x07, 0xf8, 0x05, + 0xb5, 0x06, 0x50, 0x07, 0xd0, 0x07, 0x64, 0x08, 0x6b, 0x0c, 0x9b, 0x0e, 0x1a, 0x0e, 0xb4, 0x0f, + 0xb6, 0x10, 0x55, 0x0e, 0x5f, 0x07, 0xb9, 0x04, 0x18, 0x01, 0xeb, 0xfd, 0x10, 0x00, 0xb5, 0xfd, + 0x99, 0xfa, 0x3b, 0xf9, 0x7b, 0xf7, 0xaf, 0xf4, 0x9e, 0xf1, 0xdc, 0xee, 0xbb, 0xef, 0x57, 0xf1, + 0xf3, 0xf1, 0x52, 0xf1, 0xcd, 0xf0, 0xa1, 0xf1, 0xc3, 0xec, 0x4b, 0xe9, 0x4b, 0xeb, 0x1e, 0xee, + 0x19, 0xf4, 0x7a, 0xf8, 0x03, 0xf9, 0xf9, 0xf9, 0x29, 0xfb, 0xeb, 0xfe, 0xbf, 0x01, 0x3e, 0x03, + 0xb8, 0x01, 0x42, 0x01, 0xc4, 0x00, 0xb3, 0x01, 0xf3, 0x02, 0x5f, 0x01, 0x94, 0x01, 0xb4, 0x00, + 0x22, 0x02, 0x39, 0x04, 0x76, 0x02, 0xaa, 0x01, 0x2d, 0x00, 0x3f, 0xfc, 0x02, 0xfd, 0x3b, 0xfb, + 0xb2, 0xf8, 0xb2, 0xf5, 0x85, 0xf0, 0xf9, 0xed, 0x91, 0xec, 0xbf, 0xec, 0xcd, 0xee, 0xff, 0xef, + 0x7d, 0xf0, 0x0e, 0xf5, 0x33, 0xf6, 0x94, 0xf7, 0x5b, 0xfa, 0x11, 0xfa, 0x4a, 0xfa, 0x51, 0xfb, + 0xcb, 0xfa, 0xda, 0xf9, 0xff, 0xff, 0xed, 0x02, 0x95, 0x03, 0xe8, 0x08, 0x73, 0x09, 0xa2, 0x0c, + 0x98, 0x14, 0x82, 0x17, 0xe1, 0x18, 0xca, 0x1a, 0x95, 0x1b, 0x4f, 0x19, 0x6d, 0x1c, 0xb1, 0x1d, + 0x0c, 0x1e, 0x4c, 0x20, 0xbe, 0x23, 0xa7, 0x21, 0xc6, 0x1f, 0xf9, 0x1b, 0x6f, 0x15, 0xa3, 0x14, + 0xc2, 0x14, 0xeb, 0x11, 0x04, 0x15, 0xc0, 0x13, 0x87, 0x0f, 0xb8, 0x0d, 0xc3, 0x07, 0xea, 0x02, + 0x9b, 0x03, 0x23, 0x05, 0x06, 0x03, 0xe3, 0x03, 0xed, 0x06, 0x46, 0x07, 0xd4, 0x07, 0xff, 0x06, + 0x13, 0x04, 0x1c, 0x06, 0xab, 0x02, 0xa7, 0xff, 0xbd, 0xfa, 0x1d, 0xf8, 0x93, 0xf7, 0xd3, 0xf7, + 0x51, 0xf6, 0x9a, 0xf3, 0x06, 0xee, 0x71, 0xec, 0xe5, 0xeb, 0xba, 0xe8, 0x46, 0xe5, 0xcb, 0xe4, + 0x3f, 0xe2, 0x89, 0xe3, 0x7c, 0xe0, 0xcd, 0xdc, 0x81, 0xd8, 0x9c, 0xd3, 0x55, 0xd2, 0xfa, 0xd3, + 0x04, 0xd5, 0xb9, 0xd9, 0x94, 0xe1, 0xfe, 0xe6, 0x52, 0xea, 0xf2, 0xe9, 0x97, 0xe8, 0xe3, 0xe8, + 0x2d, 0xe7, 0xf4, 0xe9, 0xab, 0xef, 0x25, 0xf2, 0xde, 0xf5, 0x04, 0xfd, 0xcc, 0xfb, 0xe4, 0xfb, + 0xe0, 0xfe, 0xfe, 0xff, 0x10, 0xfd, 0xb0, 0xfd, 0xf9, 0xff, 0x64, 0x00, 0x56, 0x03, 0xdc, 0x00, + 0x8a, 0x03, 0xc3, 0x07, 0x1c, 0x0d, 0x86, 0x0f, 0xee, 0x0e, 0x91, 0x08, 0x57, 0x0a, 0xd0, 0x09, + 0xbb, 0x0e, 0xe1, 0x12, 0x99, 0x10, 0x35, 0x14, 0xae, 0x13, 0xcb, 0x0f, 0xf1, 0x11, 0x21, 0x0a, + 0x12, 0x0b, 0x01, 0x0e, 0x31, 0x0b, 0xa5, 0x11, 0x84, 0x13, 0x61, 0x15, 0xdf, 0x1c, 0xc2, 0x19, + 0x90, 0x1b, 0x66, 0x1a, 0x00, 0x15, 0x52, 0x13, 0xf3, 0x13, 0xa4, 0x0d, 0x3e, 0x0b, 0x53, 0x08, + 0x1e, 0x06, 0x75, 0x07, 0x05, 0x0e, 0xf7, 0x11, 0x29, 0x12, 0x78, 0x0e, 0xc9, 0x06, 0x14, 0x07, + 0x65, 0x00, 0x46, 0xfe, 0x51, 0xf9, 0x9f, 0xfa, 0x08, 0xfb, 0x4b, 0xfd, 0x48, 0xfb, 0x7d, 0xf8, + 0x6a, 0xf5, 0xb1, 0xf2, 0x37, 0xf2, 0x35, 0xef, 0xdd, 0xec, 0xbc, 0xeb, 0x7a, 0xe9, 0xad, 0xeb, + 0x7f, 0xf0, 0x61, 0xec, 0xcd, 0xed, 0x82, 0xf0, 0x62, 0xf3, 0xf9, 0xf6, 0xd1, 0xf1, 0x7a, 0xf0, + 0xb0, 0xf4, 0x74, 0xfe, 0x4f, 0x02, 0x4d, 0x07, 0xf2, 0x09, 0xef, 0x08, 0xc0, 0x0b, 0xc0, 0x11, + 0x8f, 0x0b, 0x53, 0x0c, 0xe1, 0x0e, 0x72, 0x0c, 0x37, 0x0e, 0x85, 0x0b, 0xef, 0x0b, 0x27, 0x0b, + 0x86, 0x08, 0xa3, 0x0b, 0x9c, 0x0c, 0xf2, 0x0b, 0x85, 0x04, 0x43, 0x00, 0x49, 0xff, 0x9e, 0xf9, + 0x93, 0xf7, 0x73, 0xf7, 0xd5, 0xf8, 0xbd, 0xfd, 0x34, 0x03, 0xbc, 0x0b, 0x0a, 0x13, 0x62, 0x16, + 0x11, 0x17, 0xc4, 0x15, 0x57, 0x0f, 0xc6, 0x0b, 0x52, 0x13, 0x03, 0x1b, 0x69, 0x22, 0xa6, 0x26, + 0x13, 0x22, 0x6f, 0x20, 0xf0, 0x1a, 0xc7, 0x18, 0x9d, 0x16, 0x4a, 0x0f, 0x13, 0x0a, 0x99, 0x02, + 0x5f, 0xff, 0x1f, 0xfc, 0xdf, 0xf8, 0xe0, 0xf4, 0x00, 0xee, 0x9f, 0xe7, 0xa2, 0xe3, 0x24, 0xe3, + 0xf5, 0xe3, 0xaa, 0xe2, 0xa9, 0xe0, 0xac, 0xdd, 0x60, 0xe2, 0x74, 0xe7, 0xfa, 0xe3, 0xec, 0xdd, + 0x80, 0xd6, 0xa0, 0xd7, 0x3c, 0xdf, 0x5b, 0xe1, 0xee, 0xe3, 0x95, 0xe0, 0xd3, 0xdc, 0xc7, 0xe3, + 0x47, 0xe9, 0xc1, 0xe5, 0xde, 0xe0, 0x21, 0xde, 0xad, 0xde, 0xdc, 0xdd, 0x71, 0xe1, 0xff, 0xde, + 0x3a, 0xdd, 0x3f, 0xdf, 0x79, 0xe1, 0x09, 0xe6, 0xb9, 0xe6, 0x85, 0xe8, 0xe3, 0xea, 0x8d, 0xec, + 0x85, 0xef, 0xa0, 0xf7, 0xd8, 0xfb, 0x2a, 0x00, 0x45, 0x02, 0xe6, 0x05, 0x5f, 0x07, 0x3b, 0x05, + 0xcb, 0x04, 0x21, 0x08, 0xb5, 0x0e, 0xf5, 0x14, 0x76, 0x1f, 0x91, 0x2d, 0x1a, 0x35, 0xc0, 0x31, + 0x10, 0x2f, 0xc7, 0x2c, 0xcf, 0x2d, 0x79, 0x2e, 0x7e, 0x2c, 0xa2, 0x26, 0xc3, 0x21, 0x74, 0x23, + 0xad, 0x22, 0xa7, 0x1d, 0xf3, 0x14, 0x59, 0x12, 0x08, 0x10, 0xcc, 0x0f, 0x44, 0x13, 0x4e, 0x14, + 0xe2, 0x10, 0x3b, 0x08, 0xe6, 0x04, 0xb8, 0x02, 0x6a, 0x00, 0x9f, 0xff, 0x9b, 0xf9, 0xee, 0xf1, + 0xdd, 0xf2, 0x22, 0xf7, 0x76, 0xf5, 0xac, 0xf0, 0x35, 0xed, 0x6b, 0xea, 0x48, 0xef, 0x66, 0xef, + 0x09, 0xef, 0x2b, 0xf3, 0xf8, 0xf3, 0x2f, 0xfb, 0x0d, 0xff, 0xc7, 0xff, 0x8b, 0xff, 0x5a, 0x01, + 0x44, 0x02, 0x6b, 0x03, 0x35, 0x0a, 0x26, 0x0f, 0xfc, 0x0e, 0x6c, 0x0e, 0x27, 0x0d, 0x91, 0x0e, + 0xdc, 0x13, 0x2c, 0x15, 0xc4, 0x17, 0xb4, 0x1a, 0x4d, 0x1b, 0x54, 0x1b, 0x39, 0x16, 0xed, 0x0e, + 0x4a, 0x08, 0x78, 0x04, 0x3f, 0x07, 0xff, 0x08, 0x07, 0x08, 0x2e, 0x05, 0xaf, 0x03, 0xb0, 0x02, + 0x8a, 0x00, 0xad, 0xfa, 0x16, 0xf6, 0x18, 0xf7, 0x7c, 0x00, 0xcf, 0x0c, 0x76, 0x19, 0x07, 0x23, + 0x42, 0x28, 0x96, 0x27, 0xc8, 0x1f, 0x5f, 0x1a, 0x9c, 0x14, 0x10, 0x0e, 0x4f, 0x0b, 0x1c, 0x09, + 0x46, 0x07, 0x53, 0x07, 0x8a, 0x05, 0xb3, 0xfe, 0x3b, 0xf8, 0x72, 0xef, 0xe4, 0xe6, 0x83, 0xe0, + 0x29, 0xdf, 0xac, 0xe1, 0xc3, 0xe2, 0xb0, 0xe1, 0xe2, 0xe1, 0x9b, 0xe3, 0x50, 0xe2, 0x08, 0xe2, + 0xfb, 0xe2, 0x53, 0xe5, 0x71, 0xe7, 0x9b, 0xed, 0x90, 0xf0, 0x49, 0xf2, 0xca, 0xf3, 0x16, 0xf3, + 0x34, 0xf1, 0x2e, 0xf1, 0xed, 0xf3, 0xef, 0xf6, 0x55, 0xfc, 0x80, 0xfc, 0xc4, 0xfb, 0x9a, 0xfc, + 0x6e, 0xfd, 0x94, 0xfb, 0xd9, 0xfc, 0x67, 0xfd, 0xc3, 0xfc, 0x84, 0xfb, 0xea, 0xf3, 0x4c, 0xec, + 0x70, 0xe9, 0xa6, 0xec, 0x3d, 0xee, 0xb1, 0xeb, 0x7f, 0xec, 0xf1, 0xea, 0xb5, 0xe9, 0xfc, 0xec, + 0x25, 0xef, 0xec, 0xf3, 0xa7, 0xf6, 0xf5, 0xf8, 0x00, 0xfb, 0xf1, 0xf8, 0xc1, 0xf6, 0xfa, 0xf3, + 0x21, 0xf3, 0xf1, 0xee, 0x86, 0xf0, 0x9e, 0xf2, 0x28, 0xf4, 0x6b, 0xf9, 0xaf, 0xfc, 0xd7, 0x03, + 0x38, 0x0d, 0x21, 0x17, 0x4a, 0x19, 0x16, 0x14, 0x4e, 0x0f, 0x15, 0x10, 0x7b, 0x0d, 0x3c, 0x08, + 0x1a, 0x04, 0xce, 0x05, 0x52, 0x0a, 0x0a, 0x0a, 0x76, 0x05, 0x2a, 0x02, 0xbd, 0xfe, 0x64, 0xf9, + 0x7d, 0xf7, 0x75, 0xf8, 0x23, 0xfc, 0x77, 0x01, 0x26, 0x06, 0xa6, 0x08, 0xa2, 0x07, 0x12, 0x03, + 0x37, 0x01, 0x13, 0xff, 0x8f, 0x00, 0x39, 0x04, 0x84, 0x03, 0x54, 0x01, 0x86, 0xff, 0x7f, 0xff, + 0x2a, 0xfd, 0xc1, 0xf8, 0xf3, 0xf8, 0x0e, 0xfb, 0xc9, 0x00, 0xe4, 0x04, 0x89, 0x06, 0x53, 0x09, + 0x96, 0x08, 0x3b, 0x0b, 0x02, 0x0d, 0xa9, 0x10, 0xba, 0x11, 0xe2, 0x10, 0xd1, 0x10, 0x9f, 0x0b, + 0xae, 0x0a, 0x2e, 0x0a, 0x4c, 0x06, 0x72, 0x05, 0x84, 0x07, 0x81, 0x07, 0x9f, 0x06, 0x31, 0x03, + 0xed, 0xff, 0x54, 0xfe, 0xf5, 0xfb, 0x19, 0xfb, 0x5b, 0xf8, 0xf3, 0xf6, 0x8f, 0xfa, 0x4d, 0xfb, + 0xcd, 0xf5, 0x56, 0xf1, 0x97, 0xf0, 0x07, 0xf3, 0x85, 0xf2, 0x0e, 0xf3, 0x0c, 0xf8, 0x88, 0xfa, + 0xc4, 0x00, 0x89, 0x0e, 0xb3, 0x19, 0xbe, 0x22, 0x9c, 0x23, 0xa7, 0x1f, 0x9f, 0x1b, 0xd1, 0x1a, + 0xba, 0x19, 0xd0, 0x15, 0xf0, 0x14, 0xb9, 0x15, 0xd2, 0x15, 0x9f, 0x14, 0x13, 0x10, 0x87, 0x05, + 0x05, 0xf8, 0x9a, 0xef, 0xde, 0xed, 0xc6, 0xf3, 0x96, 0xfb, 0x6d, 0x00, 0x40, 0xfe, 0x1b, 0x00, + 0xa5, 0x00, 0xce, 0xfd, 0x47, 0xfc, 0x92, 0x00, 0x52, 0x09, 0xca, 0x0b, 0xea, 0x0e, 0xcc, 0x0c, + 0xf5, 0x0a, 0xe9, 0x08, 0xd6, 0x04, 0xae, 0xfe, 0x67, 0xfc, 0x3f, 0xff, 0x0c, 0x01, 0x16, 0x04, + 0x22, 0x04, 0x5b, 0x02, 0xe4, 0xfd, 0x50, 0xfb, 0xe4, 0xf9, 0x41, 0xf7, 0x21, 0xf3, 0x61, 0xf3, + 0xde, 0xf1, 0xd2, 0xf0, 0x6d, 0xf3, 0x49, 0xf4, 0xbb, 0xf3, 0xbe, 0xf2, 0x2c, 0xf6, 0xf8, 0xf5, + 0x41, 0xf6, 0x05, 0xf6, 0xcd, 0xf8, 0x65, 0xfa, 0xb8, 0xfc, 0xf6, 0xff, 0x0a, 0xff, 0xcb, 0xff, + 0x66, 0xfd, 0x11, 0xfa, 0x26, 0xf8, 0x5a, 0xf9, 0x31, 0xff, 0x73, 0xfe, 0xdb, 0xfb, 0xce, 0xfb, + 0x97, 0xfc, 0x91, 0xfd, 0xac, 0xfe, 0x18, 0x05, 0x50, 0x0f, 0x70, 0x15, 0x74, 0x11, 0x0f, 0x0a, + 0x15, 0x07, 0xfc, 0x05, 0xaa, 0xfe, 0x15, 0xf7, 0x9a, 0xf6, 0xe0, 0xf7, 0x0c, 0xfc, 0x5b, 0xfb, + 0x95, 0xf2, 0x61, 0xe9, 0xd7, 0xe2, 0xc6, 0xdf, 0x8e, 0xe0, 0x38, 0xe5, 0x30, 0xeb, 0xbb, 0xea, + 0x02, 0xe7, 0xf4, 0xe9, 0x87, 0xec, 0x33, 0xec, 0x1d, 0xec, 0x77, 0xed, 0x3c, 0xef, 0xe5, 0xee, + 0x02, 0xef, 0xab, 0xef, 0xdb, 0xf1, 0xa7, 0xf3, 0xfb, 0xf3, 0x7f, 0xf5, 0x0c, 0xf8, 0xc8, 0xfa, + 0xd1, 0xfb, 0x4a, 0xfd, 0x2f, 0x03, 0xcb, 0x09, 0xb3, 0x10, 0x17, 0x13, 0xa9, 0x11, 0x9d, 0x14, + 0x5e, 0x19, 0x95, 0x1b, 0xb0, 0x1d, 0x96, 0x1e, 0x73, 0x21, 0x7c, 0x23, 0xcc, 0x23, 0x77, 0x23, + 0x2e, 0x20, 0x79, 0x1e, 0x41, 0x19, 0xd8, 0x15, 0x7a, 0x12, 0x3a, 0x13, 0x60, 0x15, 0xb1, 0x16, + 0x69, 0x17, 0xb4, 0x13, 0x26, 0x0e, 0xbf, 0x07, 0x85, 0x05, 0xa6, 0x05, 0x6e, 0x07, 0x02, 0x08, + 0x01, 0x07, 0x1d, 0x05, 0xb5, 0x03, 0x7a, 0x02, 0xcb, 0x07, 0x61, 0x0f, 0xc5, 0x15, 0x86, 0x17, + 0xfd, 0x0f, 0x79, 0x08, 0xab, 0x06, 0xf5, 0x04, 0xe9, 0xfb, 0x78, 0xf9, 0x67, 0xfa, 0xcc, 0xf5, + 0x63, 0xed, 0x2c, 0xe7, 0x7b, 0xe2, 0xd5, 0xda, 0x6a, 0xd6, 0x51, 0xd5, 0x62, 0xd7, 0x89, 0xdc, + 0x36, 0xdf, 0x0a, 0xde, 0xb4, 0xe1, 0x96, 0xe6, 0x89, 0xeb, 0x27, 0xef, 0x49, 0xf1, 0xc7, 0xf3, + 0x98, 0xf5, 0xd2, 0xf5, 0xf4, 0xf8, 0x15, 0xfe, 0xe7, 0xff, 0xcf, 0xfd, 0xdd, 0xf8, 0xae, 0xfb, + 0x7b, 0xfe, 0x71, 0x00, 0x8e, 0x01, 0x3a, 0x03, 0xd7, 0x03, 0x43, 0x01, 0xbc, 0xfd, 0x73, 0xfb, + 0x7f, 0xfb, 0x82, 0xf8, 0xd4, 0xfa, 0xa6, 0xfe, 0x44, 0x00, 0xc6, 0x02, 0xad, 0x03, 0xc2, 0x02, + 0xf8, 0x04, 0xa9, 0x07, 0x11, 0x06, 0xad, 0x05, 0x05, 0x07, 0x97, 0x0b, 0x9d, 0x0e, 0x01, 0x10, + 0x56, 0x0d, 0x0d, 0x07, 0x15, 0x03, 0x78, 0x03, 0x95, 0x01, 0xc4, 0xfe, 0x4c, 0xfe, 0x49, 0x00, + 0x6e, 0x03, 0x09, 0x01, 0xe4, 0xff, 0x05, 0x00, 0x73, 0xff, 0x79, 0x07, 0xb1, 0x14, 0xb4, 0x1c, + 0xd9, 0x23, 0xd9, 0x27, 0xa6, 0x21, 0xff, 0x1a, 0xbe, 0x16, 0x8d, 0x11, 0x90, 0x10, 0x89, 0x0a, + 0x50, 0x06, 0x7e, 0x09, 0x76, 0x0a, 0xd4, 0x04, 0x7a, 0xfe, 0xd1, 0xfc, 0xbb, 0xf7, 0x94, 0xf5, + 0xbe, 0xf4, 0xb2, 0xf5, 0xff, 0xf9, 0x6b, 0xfe, 0x00, 0xfe, 0x57, 0xfb, 0x45, 0xfa, 0x6b, 0xf9, + 0x29, 0xf8, 0xcd, 0xf2, 0x84, 0xef, 0x6f, 0xf2, 0xe1, 0xf5, 0x7a, 0xf9, 0x9f, 0xfc, 0x86, 0xfa, + 0x29, 0xf8, 0x36, 0xf7, 0xa3, 0xf9, 0x0d, 0xfe, 0x77, 0xfe, 0xa0, 0xff, 0x18, 0x02, 0xec, 0x03, + 0x18, 0x04, 0xf0, 0x02, 0x4e, 0xff, 0xd2, 0xfa, 0x42, 0xfb, 0x38, 0x01, 0xab, 0x02, 0x29, 0x02, + 0xd2, 0x03, 0xb0, 0x03, 0x1c, 0x01, 0xf7, 0xfd, 0x13, 0xfa, 0x9f, 0xf6, 0x6d, 0xf6, 0x47, 0xf8, + 0x88, 0xfb, 0xf4, 0x00, 0xcc, 0x03, 0xa8, 0x01, 0x21, 0x01, 0xc6, 0xfe, 0x96, 0xfb, 0xb8, 0xfb, + 0x0f, 0xfe, 0x00, 0xff, 0x9f, 0xfd, 0xf2, 0xfe, 0xee, 0x00, 0x40, 0x03, 0x51, 0x03, 0x78, 0x0a, + 0xd6, 0x16, 0xfa, 0x20, 0x12, 0x24, 0xc0, 0x20, 0x7d, 0x1e, 0xfb, 0x1e, 0x5c, 0x1d, 0xe3, 0x11, + 0xf1, 0x04, 0x06, 0xfa, 0xb7, 0xf2, 0xe6, 0xf2, 0x74, 0xf5, 0x41, 0xf3, 0x3e, 0xf1, 0x6f, 0xed, + 0x36, 0xe8, 0xa6, 0xe7, 0x5b, 0xe9, 0x58, 0xec, 0x12, 0xf0, 0x94, 0xf7, 0xeb, 0xfe, 0x46, 0x04, + 0x4d, 0x05, 0x02, 0x04, 0xe4, 0x00, 0x43, 0xf9, 0x83, 0xf0, 0xdb, 0xee, 0xf0, 0xf1, 0x0a, 0xf3, + 0x12, 0xf4, 0x88, 0xf7, 0x22, 0xf9, 0xd2, 0xf8, 0x7d, 0xf6, 0x0e, 0xf5, 0xe5, 0xf3, 0x0c, 0xf1, + 0xce, 0xf1, 0x87, 0xf3, 0xaa, 0xf5, 0x3c, 0xf8, 0x8b, 0xfa, 0x2a, 0xfb, 0xcf, 0xfa, 0x75, 0xfa, + 0xb0, 0xf9, 0xdd, 0xfb, 0x39, 0xfc, 0x8e, 0xfe, 0x94, 0x01, 0x7a, 0x05, 0xdc, 0x09, 0x53, 0x0d, + 0x99, 0x0c, 0xba, 0x08, 0xf2, 0x05, 0xa3, 0x05, 0xc0, 0x04, 0x0e, 0x02, 0x80, 0x03, 0x01, 0x05, + 0x02, 0x02, 0x8a, 0xfc, 0x9a, 0xf7, 0xeb, 0xf1, 0x85, 0xef, 0xa5, 0xf1, 0xbd, 0xf5, 0xfd, 0xf8, + 0x4c, 0xff, 0x26, 0x0b, 0x2c, 0x17, 0xef, 0x1c, 0x0b, 0x1d, 0xea, 0x1a, 0x56, 0x17, 0xcc, 0x11, + 0xd1, 0x08, 0x9e, 0x00, 0x55, 0xfb, 0x36, 0xfa, 0x70, 0xf8, 0x4a, 0xf6, 0x57, 0xf4, 0x91, 0xef, + 0x82, 0xe7, 0xe6, 0xe0, 0x79, 0xdf, 0x45, 0xe3, 0xc6, 0xe5, 0x04, 0xe7, 0x70, 0xeb, 0x12, 0xf0, + 0xf9, 0xf4, 0x75, 0xf6, 0x50, 0xf7, 0x8b, 0xf6, 0x4e, 0xf7, 0x85, 0xf9, 0x9d, 0xfa, 0xac, 0xfe, + 0x0d, 0x02, 0xaf, 0x04, 0xb4, 0x04, 0x28, 0x07, 0xb9, 0x09, 0xde, 0x0b, 0x9d, 0x0e, 0x32, 0x14, + 0x32, 0x18, 0x86, 0x1b, 0x36, 0x1d, 0xef, 0x1c, 0x54, 0x20, 0xd0, 0x23, 0x8b, 0x25, 0xd6, 0x26, + 0xb7, 0x26, 0x70, 0x22, 0x33, 0x20, 0xb4, 0x1b, 0xf5, 0x15, 0xfd, 0x13, 0x16, 0x13, 0xf7, 0x12, + 0x57, 0x13, 0xcf, 0x14, 0x27, 0x14, 0xdb, 0x12, 0x20, 0x11, 0xe1, 0x0d, 0xa6, 0x0b, 0x16, 0x0a, + 0xb4, 0x04, 0x29, 0x01, 0xf1, 0xfc, 0xc5, 0xfa, 0x84, 0xfb, 0x9e, 0xfb, 0x96, 0xf8, 0x7c, 0xf5, + 0x16, 0xf3, 0x96, 0xf6, 0xad, 0x02, 0x9e, 0x0f, 0x33, 0x1a, 0x26, 0x19, 0xd1, 0x15, 0x8d, 0x11, + 0x34, 0x0d, 0x6a, 0xff, 0x6e, 0xf0, 0x9f, 0xe5, 0xd9, 0xe0, 0x0e, 0xe2, 0x15, 0xe2, 0xb1, 0xe6, + 0x16, 0xe7, 0x95, 0xe4, 0x21, 0xdf, 0xc5, 0xdc, 0x5c, 0xdf, 0x1e, 0xe4, 0x66, 0xe8, 0x60, 0xee, + 0xf0, 0xf7, 0xab, 0xff, 0xf7, 0x05, 0x09, 0x08, 0x32, 0x06, 0xed, 0x02, 0x51, 0xfe, 0x64, 0xf9, + 0xd0, 0xf9, 0x8f, 0xfe, 0xa5, 0x03, 0x29, 0x04, 0x6f, 0x01, 0x73, 0xff, 0x03, 0xfe, 0x3a, 0xfb, + 0x63, 0xf5, 0x6e, 0xf3, 0x82, 0xf3, 0xda, 0xf4, 0xc0, 0xf5, 0xa5, 0xf6, 0x9a, 0xfa, 0x92, 0xfb, + 0xd1, 0xfa, 0x8d, 0xfb, 0xd9, 0xfc, 0xbf, 0xf8, 0x91, 0xf4, 0xc8, 0xf5, 0x38, 0xf8, 0x6b, 0xfa, + 0x37, 0xfc, 0x37, 0xfb, 0xc7, 0xf7, 0x66, 0xf3, 0x2c, 0xf1, 0xf6, 0xef, 0x03, 0xf1, 0x8e, 0xf1, + 0x45, 0xf5, 0x4a, 0xf5, 0x56, 0xf0, 0xbb, 0xeb, 0x44, 0xe9, 0x8f, 0xea, 0xe5, 0xed, 0xa3, 0xf1, + 0xf5, 0xf2, 0x36, 0xf5, 0x31, 0xf9, 0x11, 0x05, 0x60, 0x14, 0x81, 0x22, 0x1a, 0x28, 0xb0, 0x25, + 0x64, 0x21, 0x22, 0x1d, 0x2f, 0x19, 0xa7, 0x10, 0xad, 0x08, 0x18, 0x04, 0xef, 0x03, 0x56, 0x04, + 0x56, 0x04, 0x51, 0x04, 0xe9, 0x02, 0x20, 0xfd, 0x8b, 0xf8, 0x7c, 0xf5, 0xc8, 0xf5, 0x2a, 0xf7, + 0xaf, 0xf6, 0x9e, 0xf8, 0xac, 0xfe, 0x43, 0x04, 0x54, 0x05, 0x43, 0x06, 0x3f, 0x07, 0xef, 0x04, + 0xaf, 0x00, 0x1e, 0xfc, 0x14, 0xfc, 0x48, 0xff, 0x5f, 0xff, 0x3e, 0xff, 0xa7, 0x01, 0xb7, 0x04, + 0x3b, 0x06, 0x45, 0x04, 0x25, 0x02, 0x0f, 0xfb, 0x1c, 0xf8, 0x62, 0xf8, 0xf1, 0xfb, 0x0a, 0x02, + 0x05, 0x07, 0x3f, 0x08, 0x82, 0x06, 0xe0, 0x05, 0x3d, 0x01, 0x1b, 0xfb, 0xc5, 0xf6, 0x4a, 0xf7, + 0xad, 0xfb, 0xed, 0x00, 0xcb, 0x05, 0x2e, 0x09, 0x71, 0x09, 0xcc, 0x07, 0x0e, 0x05, 0xbe, 0x05, + 0x6d, 0x03, 0x18, 0xff, 0xd3, 0xff, 0xc0, 0xfe, 0x2e, 0x01, 0xd2, 0x01, 0x61, 0x01, 0x09, 0x00, + 0xfe, 0xfd, 0x25, 0xfd, 0xbf, 0xfd, 0xc7, 0xff, 0x80, 0x03, 0x3c, 0x11, 0xe8, 0x23, 0x9d, 0x32, + 0x16, 0x35, 0x39, 0x2f, 0x6e, 0x23, 0xd6, 0x17, 0x2c, 0x0c, 0xc7, 0x01, 0x15, 0xfb, 0xa3, 0xf6, + 0x75, 0xf9, 0x3b, 0xfe, 0xf3, 0x00, 0xd8, 0x00, 0x4d, 0xfd, 0x26, 0xf7, 0x86, 0xf4, 0x20, 0xf8, + 0xc6, 0xfe, 0x23, 0x00, 0x6a, 0x01, 0x6f, 0x04, 0xb3, 0x08, 0x4d, 0x08, 0xc1, 0x05, 0x6b, 0x03, + 0xe4, 0x00, 0x8c, 0xfb, 0x25, 0xf7, 0xd7, 0xf6, 0xd6, 0xf8, 0x11, 0xfe, 0x9f, 0xfe, 0xa3, 0xfc, + 0xb0, 0xfb, 0x42, 0xfb, 0xfe, 0xf9, 0x57, 0xf8, 0x78, 0xf8, 0xe5, 0xf9, 0x6d, 0xfa, 0x2e, 0xfd, + 0x21, 0x01, 0x37, 0x04, 0x61, 0x06, 0xb1, 0x06, 0x6b, 0x05, 0xff, 0x02, 0xc8, 0x03, 0x37, 0x07, + 0xbc, 0x0a, 0x95, 0x0a, 0x7d, 0x09, 0xdb, 0x07, 0x30, 0x04, 0x33, 0x03, 0x3b, 0x04, 0x00, 0x01, + 0x97, 0xfe, 0xa4, 0xfd, 0x77, 0xf8, 0xa3, 0xf1, 0xad, 0xec, 0xba, 0xe9, 0x2c, 0xe9, 0xed, 0xe7, + 0xaa, 0xe5, 0x5e, 0xe7, 0x06, 0xe9, 0x08, 0xe9, 0x8d, 0xec, 0xb4, 0xef, 0xdc, 0xf3, 0x3b, 0xfe, + 0x66, 0x0f, 0x1e, 0x1b, 0x53, 0x1a, 0xfc, 0x12, 0x56, 0x0d, 0xf6, 0x07, 0x04, 0xfc, 0x61, 0xed, + 0xa0, 0xe4, 0x2e, 0xe1, 0xd9, 0xe0, 0x7e, 0xe3, 0x1a, 0xe4, 0xc2, 0xe4, 0xf3, 0xe0, 0x04, 0xdd, + 0x3b, 0xda, 0xea, 0xda, 0xaf, 0xdb, 0xb9, 0xdd, 0x28, 0xe2, 0x40, 0xe9, 0x2a, 0xf4, 0xa8, 0xfb, + 0xaa, 0x00, 0x76, 0x02, 0x78, 0x01, 0x71, 0xfe, 0xc4, 0xfd, 0x3e, 0xff, 0x16, 0x05, 0x6f, 0x0b, + 0x89, 0x11, 0x10, 0x1a, 0x88, 0x20, 0x7c, 0x1e, 0x44, 0x17, 0xc5, 0x14, 0x27, 0x15, 0x57, 0x17, + 0x23, 0x1d, 0x96, 0x21, 0x15, 0x24, 0xa0, 0x23, 0x01, 0x1f, 0x7d, 0x17, 0xfc, 0x10, 0x1a, 0x0e, + 0x4b, 0x09, 0x95, 0x06, 0x01, 0x06, 0xd8, 0x06, 0x0c, 0x0a, 0xf3, 0x0c, 0xf6, 0x0f, 0xee, 0x0a, + 0x0d, 0x06, 0x89, 0x02, 0x53, 0xff, 0x16, 0xff, 0xb1, 0xfe, 0xbf, 0xff, 0x6c, 0xff, 0xea, 0xfa, + 0xc6, 0xf4, 0xf6, 0xf1, 0xcc, 0xee, 0x7c, 0xeb, 0x4f, 0xe9, 0xa2, 0xe8, 0x23, 0xec, 0x15, 0xf3, + 0x0e, 0x00, 0xf0, 0x0e, 0x45, 0x1b, 0x4a, 0x1c, 0x93, 0x14, 0xa5, 0x0b, 0x7f, 0x06, 0xf2, 0xff, + 0x53, 0xf4, 0x26, 0xee, 0xde, 0xee, 0x86, 0xf0, 0x99, 0xee, 0x05, 0xee, 0xdc, 0xef, 0x5c, 0xf2, + 0x2e, 0xf3, 0x80, 0xf3, 0xdc, 0xf7, 0x3d, 0xfe, 0xa8, 0x01, 0x69, 0x02, 0xb0, 0x04, 0x21, 0x0b, + 0xbf, 0x10, 0xe6, 0x13, 0x8f, 0x13, 0x82, 0x12, 0x2b, 0x10, 0x96, 0x0d, 0x25, 0x08, 0x0c, 0x05, + 0xa4, 0x06, 0xfa, 0x07, 0x4d, 0x06, 0x39, 0x04, 0xd0, 0x02, 0xae, 0xfe, 0x76, 0xfd, 0x4b, 0xfc, + 0xc2, 0xfb, 0xf3, 0xfc, 0x10, 0x00, 0x27, 0x01, 0xe5, 0x04, 0x16, 0x05, 0xa9, 0x04, 0x9d, 0x07, + 0x73, 0x06, 0x69, 0x03, 0x49, 0x00, 0x4c, 0xfe, 0x11, 0xfc, 0xb9, 0xfb, 0xdb, 0xf9, 0xa8, 0xf9, + 0xb7, 0xf9, 0xe4, 0xfa, 0xe8, 0xfb, 0x0b, 0xfa, 0x4d, 0xf6, 0x6b, 0xf1, 0x69, 0xef, 0x13, 0xf1, + 0x28, 0xf3, 0xed, 0xf5, 0x45, 0xfa, 0x2a, 0xfc, 0x54, 0xfc, 0x4e, 0xfb, 0xbb, 0xf8, 0xb7, 0xf9, + 0x2e, 0xfd, 0xe0, 0x03, 0xbb, 0x11, 0x61, 0x20, 0xe5, 0x2c, 0x8e, 0x2f, 0x8a, 0x2b, 0x1c, 0x24, + 0x59, 0x1c, 0x55, 0x13, 0xe5, 0x06, 0x16, 0xff, 0x28, 0xf8, 0x9d, 0xf6, 0x06, 0xf7, 0x1d, 0xf6, + 0xec, 0xf4, 0x22, 0xf3, 0x61, 0xef, 0x7e, 0xea, 0xca, 0xea, 0xb5, 0xea, 0xba, 0xea, 0x95, 0xee, + 0x10, 0xf8, 0xfc, 0xff, 0xa6, 0x03, 0x0f, 0x04, 0xa8, 0x05, 0xb3, 0x04, 0x3e, 0xfd, 0xa9, 0xf9, + 0xe3, 0xf9, 0x32, 0xfd, 0x0d, 0x00, 0x04, 0x01, 0x5d, 0xfd, 0xae, 0xfa, 0xdf, 0xf9, 0x81, 0xf8, + 0xbe, 0xf8, 0x98, 0xf9, 0x98, 0xfb, 0x12, 0xfe, 0x81, 0xfd, 0x54, 0xfc, 0x76, 0xfa, 0x88, 0xf5, + 0xac, 0xf3, 0x4a, 0xf3, 0x0f, 0xf4, 0xcd, 0xf4, 0x0a, 0xf6, 0x0b, 0xf9, 0xe5, 0xfc, 0x9b, 0xfe, + 0xab, 0xfd, 0xa1, 0xfc, 0xe0, 0xfb, 0xf9, 0xf9, 0x5a, 0xf9, 0x71, 0xfa, 0x01, 0xfd, 0xbf, 0xfd, + 0x7f, 0xfb, 0x86, 0xfa, 0x34, 0xfa, 0x41, 0xfb, 0xab, 0xfa, 0x10, 0xf9, 0x6f, 0xf8, 0x70, 0xf8, + 0x70, 0xfa, 0x62, 0xfd, 0x80, 0xff, 0xbe, 0x04, 0x8b, 0x0f, 0x50, 0x1c, 0xde, 0x20, 0xa4, 0x1c, + 0xee, 0x18, 0x46, 0x17, 0xdc, 0x16, 0x70, 0x0e, 0x96, 0x02, 0x39, 0xfa, 0xe7, 0xf5, 0x1c, 0xf7, + 0x52, 0xfc, 0x5b, 0x02, 0x89, 0x06, 0xa6, 0x09, 0x69, 0x06, 0xe8, 0x01, 0x12, 0xfe, 0xfa, 0xfa, + 0x47, 0xf9, 0xbd, 0xf9, 0xa5, 0xff, 0xed, 0x05, 0x5d, 0x0b, 0x82, 0x10, 0x93, 0x11, 0xd1, 0x0d, + 0x5c, 0x08, 0x77, 0x03, 0x53, 0x02, 0xc8, 0x01, 0xb6, 0x00, 0x67, 0xff, 0x67, 0x01, 0xaa, 0x04, + 0x49, 0x04, 0xe5, 0x02, 0xa9, 0x02, 0x67, 0x01, 0x49, 0xfe, 0x09, 0xfe, 0x36, 0x00, 0x7e, 0x05, + 0x71, 0x08, 0xf1, 0x09, 0xf1, 0x09, 0x2d, 0x09, 0x00, 0x09, 0xaa, 0x08, 0xba, 0x06, 0x7d, 0x02, + 0x4b, 0x01, 0xe8, 0xff, 0xf0, 0xfe, 0x24, 0xfe, 0xdc, 0xfc, 0xf5, 0xf6, 0x52, 0xf2, 0x8c, 0xee, + 0xfc, 0xeb, 0x6e, 0xec, 0xbf, 0xed, 0x19, 0xf2, 0xb1, 0xf4, 0x24, 0xf3, 0x33, 0xf1, 0x0e, 0xef, + 0x9b, 0xed, 0x6d, 0xee, 0x70, 0xf0, 0x5e, 0xf3, 0x50, 0xf9, 0xd8, 0x05, 0x42, 0x12, 0xe0, 0x1c, + 0xc9, 0x1d, 0xc1, 0x18, 0x7d, 0x13, 0x4a, 0x0e, 0x8e, 0x04, 0xf4, 0xf4, 0xea, 0xe9, 0x4f, 0xe5, + 0x18, 0xe4, 0x07, 0xe4, 0x01, 0xe7, 0x86, 0xec, 0x80, 0xee, 0xe1, 0xec, 0xf5, 0xeb, 0x44, 0xee, + 0x6f, 0xf2, 0x16, 0xf5, 0xd5, 0xf6, 0x77, 0xfc, 0x20, 0x06, 0x12, 0x0e, 0x20, 0x11, 0x62, 0x12, + 0x73, 0x14, 0xa6, 0x15, 0xab, 0x14, 0x17, 0x14, 0xf4, 0x13, 0xcb, 0x13, 0xac, 0x13, 0xaf, 0x13, + 0x68, 0x16, 0x17, 0x19, 0x26, 0x18, 0xb0, 0x16, 0x0c, 0x16, 0x65, 0x12, 0x80, 0x0d, 0x1b, 0x08, + 0x03, 0x05, 0x3f, 0x04, 0x62, 0x03, 0x51, 0x04, 0x28, 0x08, 0xc7, 0x0a, 0xfd, 0x08, 0xbc, 0x06, + 0x0f, 0x03, 0x9a, 0x00, 0x98, 0xff, 0x19, 0xff, 0xfe, 0xfc, 0x34, 0xfc, 0x10, 0xfa, 0xfc, 0xf6, + 0xf8, 0xf4, 0xff, 0xf1, 0xde, 0xef, 0xa2, 0xef, 0x5a, 0xef, 0x65, 0xec, 0x54, 0xe9, 0x00, 0xea, + 0x2b, 0xec, 0x46, 0xec, 0x9c, 0xea, 0xe6, 0xe8, 0x36, 0xeb, 0xbc, 0xef, 0xa1, 0xf9, 0xaa, 0x04, + 0x40, 0x11, 0x9e, 0x18, 0xc0, 0x1a, 0x79, 0x1b, 0xbd, 0x16, 0xea, 0x0d, 0xed, 0xfe, 0x17, 0xf2, + 0xf6, 0xeb, 0xa5, 0xec, 0x93, 0xf0, 0xf4, 0xf7, 0x39, 0xff, 0xea, 0x01, 0x4f, 0x01, 0x81, 0xfc, + 0x76, 0xfa, 0xe3, 0xfb, 0xa9, 0xfb, 0xae, 0xf7, 0xcd, 0xf8, 0xbf, 0xfe, 0x81, 0x03, 0x04, 0x06, + 0x33, 0x07, 0x23, 0x08, 0x69, 0x06, 0x98, 0x00, 0xd5, 0xf9, 0x7c, 0xf8, 0x72, 0xfa, 0x19, 0xfb, + 0xda, 0xf9, 0x11, 0xfa, 0x29, 0xfc, 0xa9, 0xfe, 0x58, 0xff, 0x1e, 0xfe, 0x9f, 0xfc, 0xeb, 0xfa, + 0xf0, 0xf9, 0x8a, 0xf8, 0x0a, 0xfb, 0xf1, 0xfc, 0x55, 0xfd, 0x42, 0xfd, 0xb2, 0xfe, 0x37, 0xff, + 0xda, 0xfc, 0x4e, 0xfc, 0x94, 0xfb, 0xc6, 0xfb, 0x33, 0xfc, 0xe4, 0xf9, 0xa6, 0xf6, 0xd4, 0xf6, + 0x34, 0xf8, 0x97, 0xfa, 0x6b, 0xfd, 0xc4, 0x02, 0x8e, 0x06, 0x1e, 0x08, 0x86, 0x06, 0x72, 0x02, + 0x3f, 0xff, 0x50, 0x00, 0x3f, 0x01, 0x19, 0x02, 0xa0, 0x04, 0xdb, 0x07, 0x6c, 0x0a, 0x05, 0x0e, + 0x33, 0x1a, 0x15, 0x27, 0x14, 0x34, 0xac, 0x38, 0xbc, 0x32, 0x83, 0x2b, 0x83, 0x24, 0x14, 0x18, + 0x9c, 0x07, 0x99, 0xf9, 0x0e, 0xf2, 0x58, 0xf1, 0x0b, 0xf2, 0x43, 0xf2, 0xbf, 0xf1, 0xea, 0xf2, + 0x9c, 0xf4, 0x80, 0xf5, 0x86, 0xf6, 0x45, 0xf5, 0x61, 0xf4, 0x9f, 0xf5, 0x4d, 0xfa, 0x21, 0x01, + 0x34, 0x06, 0x2b, 0x0a, 0xd1, 0x0d, 0x81, 0x0e, 0x41, 0x0a, 0x82, 0x03, 0xe5, 0xfd, 0x68, 0xfb, + 0x77, 0xfa, 0xe5, 0xf7, 0xe3, 0xf8, 0x93, 0xfb, 0x2a, 0xff, 0xa7, 0xff, 0xc7, 0xfb, 0x2c, 0xf6, + 0x11, 0xf1, 0x1c, 0xf0, 0x3d, 0xef, 0x66, 0xf2, 0xfb, 0xf6, 0x07, 0xfb, 0xbd, 0xfe, 0xda, 0x01, + 0xcc, 0x02, 0x83, 0x01, 0x22, 0xff, 0x25, 0xfb, 0xcb, 0xf9, 0x8a, 0xfa, 0xd1, 0xfb, 0x17, 0xfc, + 0x47, 0xfd, 0x56, 0xfc, 0x6e, 0xfa, 0x37, 0xfb, 0x68, 0xfc, 0x4e, 0xfb, 0xd4, 0xf8, 0x03, 0xf5, + 0xf0, 0xf2, 0xd1, 0xf1, 0x19, 0xf0, 0x45, 0xf0, 0x53, 0xf1, 0xc6, 0xf1, 0xee, 0xef, 0x3d, 0xf1, + 0x18, 0xf3, 0x63, 0xfb, 0x13, 0x0c, 0x39, 0x1d, 0xcb, 0x26, 0x86, 0x27, 0x65, 0x24, 0xf6, 0x1f, + 0x8f, 0x19, 0x9a, 0x0c, 0x7d, 0x00, 0x23, 0xfa, 0x95, 0xf8, 0xeb, 0xfa, 0x1f, 0xff, 0x1b, 0x01, + 0x98, 0x02, 0xbb, 0x01, 0x0a, 0xfe, 0xc9, 0xfa, 0x95, 0xf9, 0xec, 0xf7, 0x37, 0xf6, 0xd1, 0xf7, + 0x38, 0xfc, 0x1b, 0x04, 0x5b, 0x0a, 0x63, 0x0e, 0x3b, 0x10, 0xe1, 0x10, 0xf0, 0x0d, 0x15, 0x0a, + 0x87, 0x07, 0xa7, 0x05, 0x6c, 0x04, 0xb1, 0x03, 0x6c, 0x05, 0xf3, 0x07, 0xc2, 0x0a, 0xac, 0x0a, + 0xd4, 0x08, 0x29, 0x06, 0xf3, 0x03, 0x8e, 0x02, 0x13, 0x03, 0x4b, 0x07, 0x3a, 0x0a, 0x85, 0x0a, + 0x2b, 0x09, 0x3a, 0x07, 0x7f, 0x04, 0x08, 0x01, 0x09, 0xfc, 0x4e, 0xf6, 0x19, 0xf1, 0xef, 0xed, + 0x45, 0xed, 0x79, 0xec, 0x91, 0xec, 0x7f, 0xed, 0x89, 0xf0, 0xf6, 0xf4, 0x03, 0xf7, 0x31, 0xf5, + 0x76, 0xf2, 0xed, 0xef, 0x61, 0xed, 0xb1, 0xea, 0xbf, 0xea, 0xe2, 0xeb, 0x4d, 0xec, 0x15, 0xea, + 0x54, 0xe9, 0x98, 0xea, 0x90, 0xf3, 0x35, 0x02, 0xa9, 0x0f, 0xf1, 0x19, 0x35, 0x1c, 0x6f, 0x1a, + 0x8f, 0x12, 0x02, 0x09, 0x13, 0xfc, 0x39, 0xf0, 0xfc, 0xe7, 0x27, 0xe4, 0xa2, 0xe4, 0x22, 0xe7, + 0x4c, 0xec, 0x79, 0xf2, 0x3b, 0xf6, 0x4e, 0xf6, 0xb4, 0xf4, 0x89, 0xf5, 0x0e, 0xf8, 0x35, 0xf8, + 0x38, 0xfb, 0x3f, 0x02, 0x98, 0x0c, 0x06, 0x16, 0x92, 0x1d, 0xb0, 0x21, 0x2c, 0x24, 0xfe, 0x23, + 0x08, 0x1f, 0xbb, 0x18, 0xf2, 0x14, 0x1a, 0x14, 0xd1, 0x12, 0x81, 0x13, 0x2d, 0x15, 0x44, 0x14, + 0xb9, 0x0f, 0x54, 0x08, 0x02, 0x01, 0x51, 0xfd, 0x02, 0xfd, 0x03, 0xff, 0x8b, 0x02, 0x7d, 0x06, + 0xc9, 0x08, 0xe6, 0x09, 0xcb, 0x0a, 0x3a, 0x09, 0xee, 0x05, 0x46, 0x01, 0x6c, 0xfe, 0xf5, 0xfb, + 0x12, 0xf9, 0xfd, 0xf5, 0x6e, 0xf4, 0x18, 0xf5, 0x5b, 0xf6, 0x29, 0xf8, 0xfd, 0xf5, 0x9f, 0xf3, + 0x5b, 0xf2, 0x53, 0xf2, 0xe4, 0xef, 0xe8, 0xed, 0xb2, 0xec, 0x05, 0xed, 0x68, 0xf0, 0x1c, 0xf1, + 0xcf, 0xef, 0x73, 0xef, 0xfc, 0xf3, 0x9d, 0xf9, 0x9a, 0x03, 0x25, 0x10, 0x44, 0x1d, 0x4a, 0x28, + 0x83, 0x2a, 0x6f, 0x26, 0xc3, 0x20, 0x24, 0x19, 0x78, 0x0d, 0xc3, 0x01, 0xfc, 0xf9, 0x6c, 0xf6, + 0x7d, 0xf7, 0x29, 0xfa, 0xce, 0xfb, 0x1a, 0xfe, 0x0d, 0xfd, 0x63, 0xf8, 0x35, 0xf5, 0x68, 0xf3, + 0x4d, 0xf1, 0x6c, 0xf0, 0x96, 0xf3, 0xcc, 0xfa, 0x7f, 0x02, 0x1b, 0x08, 0x94, 0x0a, 0x13, 0x0c, + 0x63, 0x0b, 0x5d, 0x04, 0x45, 0xfd, 0x2b, 0xf9, 0x96, 0xf8, 0x76, 0xf7, 0x64, 0xf5, 0x3e, 0xf5, + 0x27, 0xf6, 0x82, 0xf5, 0x72, 0xf2, 0xc2, 0xef, 0x46, 0xed, 0x67, 0xed, 0x20, 0xef, 0x26, 0xf0, + 0xfe, 0xf2, 0xab, 0xf7, 0x85, 0xfa, 0xbf, 0xfb, 0x9f, 0xfb, 0x56, 0xf8, 0x08, 0xf5, 0xcc, 0xf2, + 0x4d, 0xf0, 0x88, 0xf1, 0xa3, 0xf4, 0x68, 0xf8, 0x82, 0xff, 0x09, 0x06, 0x9c, 0x09, 0x03, 0x0b, + 0xba, 0x0c, 0x1e, 0x0b, 0xdc, 0x07, 0x53, 0x06, 0x42, 0x04, 0x58, 0x03, 0x23, 0x04, 0x2c, 0x05, + 0x3b, 0x05, 0x79, 0x05, 0x6b, 0x06, 0x72, 0x09, 0x7e, 0x0a, 0x6f, 0x0d, 0x17, 0x17, 0xe9, 0x23, + 0x1f, 0x2f, 0x54, 0x31, 0x7f, 0x2d, 0x89, 0x28, 0xde, 0x20, 0xe1, 0x13, 0xac, 0x04, 0xdc, 0xf9, + 0xdd, 0xf5, 0x6f, 0xf6, 0x3a, 0xfb, 0x65, 0xff, 0x4f, 0x03, 0x46, 0x05, 0x41, 0x03, 0x2f, 0xfe, + 0xf9, 0xfa, 0x61, 0xf9, 0x12, 0xf8, 0x15, 0xfb, 0x31, 0x02, 0xcd, 0x09, 0x77, 0x0e, 0x77, 0x11, + 0x89, 0x10, 0xac, 0x0e, 0x08, 0x0a, 0x29, 0x03, 0x98, 0xfd, 0x5d, 0xfa, 0x59, 0xf8, 0xd9, 0xf6, + 0x28, 0xf6, 0x50, 0xf4, 0x1d, 0xf3, 0xed, 0xef, 0xce, 0xec, 0xa8, 0xeb, 0xca, 0xed, 0x3d, 0xf1, + 0xc8, 0xf3, 0x0f, 0xf7, 0x31, 0xfb, 0x7a, 0xfe, 0x6f, 0x00, 0x5c, 0x01, 0xf6, 0xff, 0xf7, 0xfb, + 0x18, 0xf6, 0x22, 0xf1, 0x5c, 0xee, 0xac, 0xef, 0xf0, 0xf2, 0x01, 0xf6, 0x5f, 0xf5, 0x67, 0xf4, + 0x01, 0xf4, 0x5a, 0xf2, 0xaf, 0xef, 0xb8, 0xeb, 0x69, 0xe8, 0x1c, 0xe6, 0xd0, 0xe5, 0x01, 0xe6, + 0x2f, 0xe7, 0xf2, 0xe7, 0x83, 0xea, 0x41, 0xed, 0x5e, 0xf0, 0x49, 0xf6, 0xf6, 0xfb, 0x25, 0x06, + 0xad, 0x14, 0xe6, 0x25, 0xb7, 0x31, 0x9c, 0x32, 0x1e, 0x2e, 0x90, 0x27, 0x05, 0x1f, 0xcc, 0x13, + 0xd8, 0x08, 0xc3, 0xfe, 0x70, 0xf9, 0xd9, 0xf8, 0x89, 0xfb, 0x60, 0xff, 0x59, 0x01, 0xf0, 0xfe, + 0x1c, 0xf9, 0x43, 0xf6, 0x02, 0xf7, 0xad, 0xf9, 0x03, 0xfc, 0x4e, 0xff, 0xfc, 0x07, 0xfc, 0x12, + 0xc8, 0x18, 0x4d, 0x19, 0x4e, 0x17, 0x67, 0x14, 0x7d, 0x11, 0x2f, 0x0e, 0x3a, 0x0a, 0x07, 0x08, + 0x15, 0x08, 0x16, 0x07, 0xfa, 0x03, 0xb1, 0x03, 0x3f, 0x03, 0x58, 0x03, 0xc4, 0x04, 0x8d, 0x05, + 0x18, 0x03, 0x8f, 0x02, 0xef, 0x02, 0x38, 0x03, 0xa6, 0x04, 0x1c, 0x04, 0xdd, 0x01, 0x26, 0xfd, + 0xbf, 0xf8, 0x3b, 0xf2, 0xd2, 0xed, 0xa9, 0xeb, 0x71, 0xeb, 0xe4, 0xec, 0x9f, 0xef, 0x28, 0xf4, + 0xfa, 0xf7, 0x31, 0xf9, 0xad, 0xf7, 0x3e, 0xf5, 0xdb, 0xf1, 0x47, 0xf0, 0x55, 0xef, 0x08, 0xed, + 0x3e, 0xea, 0xe0, 0xea, 0x38, 0xec, 0x11, 0xed, 0x9b, 0xed, 0x10, 0xee, 0x38, 0xf1, 0xab, 0xf4, + 0x9d, 0xf6, 0x24, 0xfe, 0xf8, 0x0a, 0x94, 0x18, 0x28, 0x21, 0x29, 0x20, 0x0c, 0x1a, 0x45, 0x12, + 0x4a, 0x0a, 0xa7, 0xff, 0xdf, 0xf5, 0xfe, 0xef, 0x86, 0xef, 0x98, 0xf4, 0x3c, 0xfa, 0x48, 0xff, + 0x02, 0x02, 0xaa, 0xff, 0x74, 0xfb, 0x4d, 0xfd, 0x86, 0xff, 0xfc, 0x02, 0x82, 0x08, 0xac, 0x10, + 0xaa, 0x1a, 0x7e, 0x20, 0x79, 0x21, 0x50, 0x1f, 0x10, 0x1d, 0x88, 0x18, 0xca, 0x13, 0x5d, 0x10, + 0xcf, 0x0d, 0x04, 0x0b, 0x6c, 0x08, 0x7d, 0x04, 0xd1, 0x01, 0xb5, 0x02, 0x91, 0x02, 0x20, 0x02, + 0x5d, 0x02, 0x67, 0x03, 0x3c, 0x04, 0x30, 0x06, 0x29, 0x08, 0xf1, 0x08, 0x82, 0x07, 0x9d, 0x05, + 0xef, 0x01, 0x10, 0xfc, 0x23, 0xf6, 0xe8, 0xf0, 0xa6, 0xee, 0x2a, 0xee, 0x58, 0xef, 0x3a, 0xf1, + 0xab, 0xf3, 0x62, 0xf5, 0x0f, 0xf5, 0x1a, 0xf2, 0x4c, 0xef, 0xba, 0xef, 0xa4, 0xf0, 0x45, 0xf0, + 0x89, 0xf0, 0x4f, 0xf0, 0x1e, 0xf0, 0x28, 0xf2, 0x48, 0xf4, 0x15, 0xf5, 0x4a, 0xf7, 0xd8, 0xf9, + 0xd5, 0xfd, 0x56, 0x02, 0xc3, 0x09, 0x6f, 0x15, 0x7c, 0x22, 0xdf, 0x2d, 0x62, 0x2e, 0x18, 0x2b, + 0x61, 0x27, 0xf1, 0x21, 0x46, 0x16, 0xb1, 0x06, 0x8f, 0xfa, 0x95, 0xf3, 0x77, 0xf2, 0xa3, 0xf1, + 0x88, 0xf0, 0x33, 0xef, 0x53, 0xf0, 0x7d, 0xef, 0x7f, 0xec, 0xa6, 0xee, 0x11, 0xf1, 0xad, 0xf3, + 0x67, 0xf9, 0x0a, 0x00, 0x98, 0x05, 0x9d, 0x08, 0xe6, 0x08, 0x48, 0x08, 0xc6, 0x07, 0x20, 0x05, + 0x71, 0xff, 0x1a, 0xf9, 0x59, 0xf6, 0xb2, 0xf2, 0xb7, 0xf0, 0x77, 0xee, 0x33, 0xee, 0xc5, 0xee, + 0x6c, 0xef, 0x45, 0xef, 0x12, 0xef, 0x16, 0xef, 0x90, 0xf0, 0xc6, 0xf1, 0x06, 0xf3, 0x0f, 0xf4, + 0x64, 0xf3, 0xa7, 0xf3, 0x95, 0xf2, 0xa7, 0xf1, 0x81, 0xf0, 0x31, 0xf2, 0x33, 0xf3, 0xa2, 0xf7, + 0x88, 0xfb, 0xc7, 0x01, 0xec, 0x07, 0x9f, 0x0b, 0xdd, 0x09, 0x9b, 0x07, 0xa4, 0x04, 0xd0, 0x02, + 0x44, 0x01, 0x66, 0x00, 0x13, 0x04, 0x34, 0x07, 0x35, 0x05, 0x3f, 0x03, 0x47, 0x01, 0x32, 0x00, + 0x8e, 0x00, 0x71, 0x00, 0x2c, 0xff, 0x66, 0x00, 0x5a, 0x0a, 0x2f, 0x18, 0x2a, 0x25, 0xe1, 0x2d, + 0xc3, 0x2d, 0xf9, 0x2a, 0xc8, 0x27, 0x02, 0x1f, 0xda, 0x12, 0xb9, 0x06, 0xf8, 0xfe, 0x47, 0xfc, + 0x64, 0xfe, 0x22, 0x00, 0x5a, 0x01, 0x35, 0x02, 0xfb, 0x02, 0xc9, 0x02, 0xa0, 0x04, 0x83, 0x05, + 0xbe, 0x06, 0x30, 0x08, 0xf5, 0x0a, 0x67, 0x0e, 0x89, 0x11, 0x9b, 0x11, 0x1d, 0x10, 0xf9, 0x0e, + 0x99, 0x0d, 0x12, 0x0a, 0x1c, 0x05, 0x90, 0x00, 0x85, 0xfb, 0xe2, 0xf8, 0x98, 0xf6, 0x51, 0xf5, + 0xc5, 0xf5, 0x2a, 0xf6, 0x68, 0xf6, 0x59, 0xfa, 0x39, 0xfd, 0x45, 0xfd, 0x2f, 0xfd, 0xd9, 0xfc, + 0x2c, 0xfe, 0x03, 0xfe, 0x23, 0xfc, 0x37, 0xfb, 0xe0, 0xfa, 0x65, 0xf9, 0x64, 0xf6, 0x5b, 0xf2, + 0x5b, 0xee, 0x10, 0xed, 0x10, 0xec, 0xb9, 0xe9, 0x1e, 0xe7, 0xfc, 0xe3, 0xfb, 0xe2, 0x47, 0xe4, + 0xf7, 0xe7, 0x31, 0xea, 0x3f, 0xeb, 0xec, 0xeb, 0xba, 0xeb, 0x24, 0xed, 0x1d, 0xf0, 0xab, 0xf2, + 0xdc, 0xf4, 0xfc, 0xf7, 0x42, 0xf9, 0x00, 0xfb, 0x87, 0xfd, 0x2f, 0x01, 0x2d, 0x0c, 0x6c, 0x1a, + 0x94, 0x28, 0x9e, 0x2f, 0xa2, 0x2e, 0x12, 0x2b, 0x02, 0x25, 0x61, 0x1b, 0xec, 0x0b, 0x89, 0xfb, + 0x49, 0xf1, 0x17, 0xee, 0x15, 0xee, 0x8b, 0xf2, 0xdd, 0xf5, 0xf9, 0xf8, 0xe4, 0xfb, 0xdd, 0xfe, + 0xdf, 0x02, 0x6d, 0x06, 0x2e, 0x06, 0x4c, 0x06, 0x2c, 0x0b, 0xdd, 0x12, 0x06, 0x19, 0xb4, 0x18, + 0xe5, 0x17, 0x9f, 0x15, 0x4a, 0x13, 0x51, 0x0e, 0xf6, 0x08, 0x7d, 0x04, 0xf2, 0x02, 0xd2, 0x02, + 0x11, 0x02, 0x29, 0x01, 0xf1, 0xff, 0x77, 0xfd, 0xed, 0xfb, 0x00, 0xfb, 0xc3, 0xf9, 0xb2, 0xf9, + 0xa3, 0xf9, 0x02, 0xf9, 0xda, 0xf8, 0x4b, 0xf7, 0x57, 0xf5, 0x1a, 0xf5, 0x5b, 0xf5, 0x6b, 0xf4, + 0x47, 0xf4, 0xd7, 0xf6, 0xcc, 0xf9, 0xa1, 0xfb, 0xf4, 0xfb, 0x39, 0xfa, 0x8e, 0xf7, 0xf9, 0xf4, + 0x1e, 0xf2, 0xad, 0xef, 0x8c, 0xef, 0xc1, 0xef, 0xbb, 0xef, 0x40, 0xef, 0x5a, 0xee, 0xf8, 0xed, + 0x25, 0xed, 0x91, 0xed, 0x20, 0xec, 0x27, 0xec, 0x99, 0xed, 0xa5, 0xf0, 0xb1, 0xf3, 0x32, 0xfa, + 0x94, 0x05, 0x74, 0x13, 0x30, 0x1f, 0xeb, 0x20, 0x87, 0x1d, 0x2c, 0x19, 0xb6, 0x14, 0x6f, 0x0b, + 0x32, 0x00, 0xe4, 0xf5, 0x22, 0xee, 0xff, 0xea, 0xdc, 0xee, 0xd9, 0xf6, 0xe9, 0xfe, 0xb9, 0x04, + 0x06, 0x08, 0xde, 0x0a, 0x97, 0x0b, 0x7d, 0x0a, 0x83, 0x07, 0x9b, 0x06, 0x30, 0x0a, 0x4f, 0x0f, + 0x37, 0x12, 0x86, 0x14, 0x39, 0x16, 0xa5, 0x15, 0xbf, 0x10, 0xb4, 0x09, 0xc9, 0x03, 0x94, 0xff, + 0x1c, 0xfe, 0xbe, 0xfd, 0x1e, 0xff, 0x88, 0x03, 0xd8, 0x07, 0x2d, 0x0a, 0x1a, 0x0a, 0x5d, 0x07, + 0x86, 0x04, 0x8d, 0x02, 0xb1, 0xff, 0x9e, 0xfc, 0xb5, 0xfa, 0x72, 0xfa, 0x7d, 0xfc, 0xb8, 0xff, + 0x6b, 0x00, 0xa2, 0xff, 0x08, 0xfd, 0x2a, 0xfb, 0xfb, 0xf9, 0x9b, 0xf9, 0x71, 0xf9, 0x1d, 0xfb, + 0xe6, 0xfc, 0x5a, 0xfc, 0xe3, 0xfb, 0x0e, 0xfc, 0xa8, 0xfb, 0x95, 0xf9, 0x89, 0xf9, 0xba, 0xfb, + 0xec, 0xfe, 0x6a, 0x00, 0xb3, 0x01, 0x36, 0x03, 0x53, 0x03, 0x06, 0x03, 0x28, 0x02, 0x6e, 0x02, + 0x08, 0x05, 0x23, 0x0f, 0x17, 0x1d, 0x53, 0x2b, 0x5e, 0x31, 0xc6, 0x2d, 0xe5, 0x25, 0xf7, 0x1b, + 0x1f, 0x0e, 0x0e, 0xfa, 0xc0, 0xe8, 0xff, 0xdd, 0x95, 0xda, 0x2d, 0xdd, 0x91, 0xe1, 0x68, 0xe8, + 0x16, 0xf0, 0x00, 0xf5, 0x78, 0xf7, 0x75, 0xf9, 0xca, 0xf9, 0x0f, 0xf8, 0x72, 0xf9, 0xb0, 0xfb, + 0xb6, 0x00, 0x32, 0x05, 0x8e, 0x05, 0x81, 0x04, 0xed, 0x02, 0x60, 0xfe, 0xc3, 0xf5, 0x32, 0xf0, + 0x00, 0xee, 0x8d, 0xed, 0xa8, 0xed, 0xe5, 0xed, 0xe8, 0xed, 0xd4, 0xef, 0x73, 0xf2, 0xd3, 0xf2, + 0xaf, 0xf4, 0x00, 0xf7, 0xc0, 0xf7, 0x7f, 0xf6, 0x7d, 0xf5, 0xdc, 0xf5, 0xfb, 0xf7, 0x7b, 0xfa, + 0x2d, 0xfe, 0xed, 0x03, 0xa4, 0x08, 0x49, 0x0a, 0x88, 0x0b, 0x4d, 0x0b, 0x43, 0x0a, 0x50, 0x0a, + 0xf0, 0x08, 0x71, 0x08, 0x5f, 0x0a, 0xb3, 0x0b, 0x5c, 0x0d, 0x67, 0x0d, 0xf9, 0x0a, 0x9a, 0x06, + 0x51, 0x04, 0xf3, 0x00, 0x2f, 0xff, 0xf9, 0xfa, 0x65, 0xf9, 0xd5, 0xf8, 0x8e, 0xfa, 0x74, 0xfb, + 0x08, 0xfc, 0xfe, 0xfe, 0xe4, 0x00, 0x00, 0x0b, 0xbb, 0x1a, 0xa7, 0x28, 0x86, 0x2d, 0xc1, 0x2a, + 0xa6, 0x25, 0xca, 0x1f, 0x60, 0x14, 0x39, 0x04, 0x6a, 0xf4, 0x5c, 0xeb, 0x27, 0xe7, 0xdf, 0xe9, + 0x5c, 0xef, 0x96, 0xf9, 0xc8, 0x00, 0x6d, 0x04, 0x79, 0x02, 0xf9, 0xff, 0x68, 0xfd, 0x49, 0xfc, + 0x50, 0xfb, 0xe7, 0xfe, 0xe5, 0x05, 0xe7, 0x0a, 0x08, 0x0c, 0x7b, 0x0c, 0x5e, 0x0c, 0xef, 0x06, + 0x2b, 0xfe, 0xfa, 0xf5, 0x2c, 0xf3, 0xa1, 0xf4, 0xad, 0xf6, 0xe6, 0xf8, 0x81, 0xfa, 0x4c, 0xfa, + 0x5b, 0xfa, 0x7f, 0xfa, 0x0a, 0xfa, 0x06, 0xf9, 0x40, 0xf7, 0x4d, 0xf5, 0x39, 0xf4, 0xf9, 0xf5, + 0x28, 0xf8, 0x26, 0xf8, 0x3d, 0xf9, 0xcd, 0xf6, 0xdf, 0xf4, 0x5a, 0xf0, 0x7f, 0xee, 0xcf, 0xec, + 0x54, 0xee, 0x0c, 0xf0, 0x83, 0xf3, 0x7d, 0xf5, 0x59, 0xf7, 0xdb, 0xf7, 0x34, 0xf8, 0x71, 0xf8, + 0xec, 0xf8, 0xa6, 0xf9, 0x04, 0xfd, 0xbf, 0xff, 0x27, 0xff, 0x82, 0xff, 0x35, 0xff, 0x4d, 0xff, + 0xfd, 0xfe, 0x78, 0xff, 0x29, 0x02, 0x5d, 0x04, 0x4c, 0x0b, 0x47, 0x16, 0x42, 0x24, 0xae, 0x31, + 0xd1, 0x33, 0x62, 0x2e, 0x5a, 0x26, 0xa1, 0x1d, 0x38, 0x10, 0x88, 0x01, 0xf6, 0xf5, 0xa8, 0xf1, + 0x5e, 0xf2, 0x5e, 0xf9, 0x5b, 0x00, 0x8d, 0x08, 0xec, 0x0e, 0xef, 0x10, 0x42, 0x10, 0x19, 0x0f, + 0x5e, 0x09, 0x00, 0x06, 0x7a, 0x04, 0x3f, 0x07, 0x17, 0x0c, 0x08, 0x0f, 0x5c, 0x0f, 0xb6, 0x0f, + 0xf5, 0x0c, 0x7e, 0x08, 0xaa, 0x00, 0x97, 0xf6, 0xb9, 0xf0, 0xdc, 0xec, 0xcd, 0xe8, 0x6d, 0xe9, + 0x94, 0xeb, 0x6f, 0xec, 0x54, 0xef, 0xe2, 0xf1, 0x12, 0xf2, 0xa7, 0xef, 0x58, 0xed, 0xc6, 0xeb, + 0xb6, 0xec, 0xaa, 0xf0, 0x52, 0xf4, 0xd9, 0xf7, 0x02, 0xfc, 0x6c, 0xfd, 0x7c, 0xfc, 0xb7, 0xfb, + 0x3c, 0xfa, 0xef, 0xf6, 0x4a, 0xf6, 0x2a, 0xf5, 0x03, 0xf6, 0xac, 0xf7, 0xe3, 0xf9, 0xb0, 0xf8, + 0x3b, 0xf7, 0xc8, 0xf6, 0x50, 0xf4, 0xc9, 0xf4, 0xa8, 0xf6, 0x92, 0xf7, 0x1b, 0xf8, 0x64, 0xf8, + 0x42, 0xf9, 0x74, 0xf8, 0x94, 0xf7, 0xb6, 0xf8, 0xb6, 0xfb, 0x50, 0xff, 0x1e, 0x0a, 0x2e, 0x1c, + 0x25, 0x2e, 0xd4, 0x35, 0x2c, 0x34, 0x78, 0x2e, 0x99, 0x25, 0x75, 0x1a, 0xa4, 0x09, 0x01, 0xfd, + 0x93, 0xf5, 0x2b, 0xf5, 0xa8, 0xfa, 0xea, 0x02, 0x75, 0x0a, 0x69, 0x0d, 0xcf, 0x0b, 0x50, 0x05, + 0xbd, 0xff, 0xef, 0xfb, 0x26, 0xf9, 0x98, 0xf8, 0x05, 0xfe, 0x5c, 0x05, 0x74, 0x0b, 0x3a, 0x0f, + 0x24, 0x0f, 0x74, 0x0e, 0xc2, 0x09, 0x39, 0x02, 0x35, 0xfc, 0xdc, 0xf9, 0x11, 0xf9, 0xb6, 0xfa, + 0x09, 0xfc, 0xb3, 0xfc, 0xe9, 0xfe, 0xd4, 0xfd, 0xad, 0xfc, 0x3b, 0xfa, 0x2b, 0xf7, 0x85, 0xf3, + 0x9b, 0xf2, 0xe0, 0xf2, 0x79, 0xf4, 0x37, 0xf7, 0xc5, 0xf9, 0x8c, 0xfb, 0x55, 0xfc, 0x8c, 0xf9, + 0xd1, 0xf6, 0x7a, 0xf5, 0x91, 0xf5, 0x3e, 0xf7, 0xdc, 0xf7, 0x61, 0xfa, 0x35, 0xfb, 0xbf, 0xfb, + 0xde, 0xfc, 0xe1, 0xfd, 0x37, 0xff, 0x7f, 0xff, 0xe7, 0xfe, 0x25, 0x00, 0x35, 0x00, 0xa0, 0x00, + 0xcb, 0x01, 0xdd, 0x03, 0xb7, 0x04, 0x1e, 0x03, 0x11, 0x01, 0xef, 0x00, 0xf4, 0x01, 0x8c, 0x07, + 0x7e, 0x11, 0x89, 0x1e, 0x62, 0x29, 0xf5, 0x29, 0x9d, 0x25, 0x75, 0x1e, 0x79, 0x15, 0x28, 0x08, + 0x1a, 0xf7, 0xb5, 0xeb, 0xf6, 0xe7, 0xe3, 0xea, 0x26, 0xf2, 0x95, 0xfa, 0xfb, 0x00, 0x2f, 0x04, + 0x71, 0x03, 0xe8, 0x00, 0x9a, 0xfd, 0xf5, 0xfa, 0x85, 0xf8, 0x10, 0xf7, 0xf1, 0xfa, 0x70, 0x00, + 0x5b, 0x03, 0x11, 0x03, 0x3d, 0x02, 0x54, 0x00, 0x89, 0xfa, 0x9d, 0xf2, 0x23, 0xeb, 0xe1, 0xe6, + 0x36, 0xe6, 0xdb, 0xe7, 0x03, 0xe9, 0x5a, 0xec, 0x6e, 0xef, 0x98, 0xf0, 0xd1, 0xf0, 0xfc, 0xf0, + 0xb3, 0xf1, 0x25, 0xf3, 0x64, 0xf6, 0x0e, 0xfa, 0x77, 0xfe, 0x65, 0x01, 0x90, 0x03, 0x9e, 0x03, + 0xce, 0x01, 0x3c, 0x01, 0x70, 0x01, 0xe4, 0x00, 0x45, 0x02, 0xf6, 0x02, 0x9b, 0x03, 0x05, 0x05, + 0x34, 0x05, 0x0f, 0x03, 0x10, 0x01, 0xa5, 0xff, 0x2e, 0xff, 0x6a, 0xfe, 0xea, 0xfd, 0x25, 0xfe, + 0xac, 0xfe, 0xbb, 0xfe, 0xb9, 0xfd, 0x4a, 0xff, 0x50, 0xff, 0x55, 0xfe, 0xda, 0xfd, 0xb8, 0xfe, + 0xbc, 0x01, 0x38, 0x0c, 0x3a, 0x1b, 0xda, 0x2a, 0x82, 0x34, 0xc8, 0x31, 0x50, 0x2a, 0x83, 0x1f, + 0x94, 0x12, 0x01, 0x02, 0x52, 0xf4, 0x5b, 0xed, 0x88, 0xec, 0x7d, 0xf0, 0x85, 0xf6, 0x43, 0xfe, + 0x85, 0x03, 0xc0, 0x05, 0xbb, 0x03, 0x85, 0x01, 0x82, 0x00, 0x43, 0x00, 0x7d, 0xff, 0x58, 0x01, + 0x22, 0x06, 0xa5, 0x0b, 0xd1, 0x0e, 0xe7, 0x0e, 0xd1, 0x0d, 0x90, 0x09, 0x5b, 0x01, 0x19, 0xfa, + 0xc0, 0xf6, 0x32, 0xf6, 0x00, 0xf8, 0x9e, 0xf8, 0xa8, 0xf9, 0x20, 0xfc, 0x56, 0xfd, 0x42, 0xfb, + 0xe3, 0xf8, 0x0a, 0xf7, 0x6e, 0xf3, 0x6f, 0xf2, 0xe3, 0xf1, 0x10, 0xf3, 0x97, 0xf4, 0xa4, 0xf3, + 0x8a, 0xf1, 0x51, 0xf1, 0x9a, 0xef, 0xdf, 0xed, 0x8a, 0xee, 0xc6, 0xef, 0x87, 0xf1, 0xc0, 0xf3, + 0xe6, 0xf6, 0xa9, 0xf9, 0xd0, 0xfb, 0x0d, 0xfc, 0x0d, 0xfb, 0xa5, 0xfa, 0xc4, 0xfa, 0xbe, 0xf9, + 0x9d, 0xf9, 0xb5, 0xf9, 0x5c, 0xf9, 0xdd, 0xf8, 0xb5, 0xf8, 0x85, 0xf8, 0x10, 0xf8, 0x7e, 0xf7, + 0x1f, 0xf8, 0x5f, 0xfb, 0xe8, 0x02, 0xbe, 0x11, 0xfa, 0x20, 0xc9, 0x2e, 0x7e, 0x32, 0x3e, 0x2e, + 0x27, 0x28, 0xe5, 0x1e, 0x2a, 0x12, 0x32, 0x05, 0xac, 0xfb, 0xa5, 0xf8, 0x49, 0xfb, 0x6a, 0x00, + 0xe8, 0x06, 0x91, 0x0b, 0x93, 0x0e, 0x59, 0x0d, 0x96, 0x0b, 0x17, 0x0c, 0xd8, 0x0c, 0x71, 0x0d, + 0xcf, 0x0e, 0x67, 0x12, 0xdf, 0x15, 0xdc, 0x16, 0x86, 0x14, 0x92, 0x10, 0xf6, 0x0a, 0x27, 0x03, + 0x9a, 0xf8, 0xd4, 0xf0, 0xd0, 0xee, 0x59, 0xed, 0x8b, 0xec, 0xcc, 0xec, 0xa1, 0xed, 0x76, 0xef, + 0xf9, 0xf0, 0x14, 0xf0, 0x10, 0xf1, 0xb4, 0xf3, 0x05, 0xf7, 0xf6, 0xf9, 0x2b, 0xfd, 0x7c, 0xff, + 0x49, 0xff, 0xb1, 0xfd, 0xaf, 0xfc, 0xa8, 0xfb, 0x6b, 0xf9, 0x61, 0xf7, 0x1e, 0xf5, 0x8e, 0xf4, + 0x63, 0xf6, 0x9d, 0xf7, 0x7f, 0xf7, 0xbb, 0xf8, 0x92, 0xf8, 0x42, 0xf9, 0x64, 0xfa, 0x63, 0xfb, + 0x73, 0xfb, 0xc9, 0xfa, 0xf5, 0xf9, 0xa7, 0xf7, 0xe4, 0xf4, 0xce, 0xf3, 0x21, 0xf5, 0xae, 0xf5, + 0xd9, 0xf5, 0x5b, 0xf6, 0xe4, 0xf7, 0x87, 0xf9, 0x46, 0x04, 0x52, 0x13, 0x23, 0x21, 0x62, 0x29, + 0x1f, 0x26, 0xda, 0x1e, 0x5a, 0x17, 0xfd, 0x0b, 0x67, 0xfd, 0xbe, 0xf1, 0xa0, 0xe9, 0x00, 0xe8, + 0xb8, 0xe9, 0x3c, 0xed, 0x2d, 0xf2, 0xd6, 0xf7, 0x3b, 0xfa, 0x6c, 0xf9, 0xfc, 0xf9, 0x40, 0xfb, + 0x97, 0xfc, 0x68, 0xfe, 0x56, 0x03, 0x69, 0x09, 0x91, 0x0e, 0xff, 0x0f, 0xe8, 0x0f, 0xa0, 0x0e, + 0x96, 0x0b, 0x9a, 0x04, 0x0a, 0xfc, 0x86, 0xf8, 0x55, 0xf7, 0x06, 0xf9, 0x71, 0xfb, 0x44, 0xfd, + 0x2a, 0xfe, 0xef, 0xf9, 0x64, 0xf9, 0xf2, 0xfe, 0x1a, 0x01, 0xc0, 0xff, 0x64, 0x05, 0x95, 0x07, + 0x9e, 0x0b, 0xf8, 0x0d, 0xe6, 0x0d, 0x7b, 0x0d, 0xdd, 0x0b, 0x1a, 0x09, 0xac, 0x04, 0x58, 0x04, + 0xc4, 0x06, 0xad, 0x06, 0x99, 0x06, 0xf9, 0x04, 0x8d, 0x04, 0x98, 0x06, 0x69, 0x07, 0xae, 0x09, + 0x91, 0x0b, 0x28, 0x0b, 0xe8, 0x09, 0x0e, 0x07, 0xc7, 0x03, 0xdf, 0xff, 0x1e, 0xfc, 0x69, 0xf8, + 0xc9, 0xf4, 0x10, 0xf3, 0x79, 0xf1, 0x9a, 0xf4, 0xc0, 0xf8, 0x8f, 0xfe, 0x9d, 0x0a, 0xff, 0x18, + 0xf6, 0x22, 0x49, 0x23, 0x94, 0x1c, 0x5f, 0x11, 0x64, 0x09, 0x8d, 0xfd, 0x79, 0xf1, 0x8d, 0xea, + 0x74, 0xe8, 0xd8, 0xe9, 0xb7, 0xeb, 0xf1, 0xef, 0x52, 0xf2, 0x00, 0xf3, 0x96, 0xf0, 0x3e, 0xef, + 0x2a, 0xf0, 0x8d, 0xef, 0x82, 0xef, 0x9b, 0xf1, 0x56, 0xf8, 0xa5, 0x00, 0x8b, 0x02, 0xfb, 0xfe, + 0xa2, 0xfe, 0xe4, 0xfc, 0xcd, 0xf7, 0xa1, 0xf3, 0x74, 0xf0, 0x43, 0xf0, 0x0d, 0xf1, 0x20, 0xf0, + 0x38, 0xee, 0x0b, 0xee, 0x4f, 0xf1, 0xfc, 0xf4, 0x73, 0xf7, 0xeb, 0xf8, 0x9d, 0xf8, 0x2a, 0xfb, + 0x6f, 0xfe, 0x64, 0x00, 0xf3, 0x04, 0xf9, 0x08, 0xb3, 0x09, 0xe4, 0x08, 0x0b, 0x09, 0x0b, 0x09, + 0xc1, 0x06, 0xb1, 0x04, 0xd3, 0x02, 0x20, 0x02, 0xb8, 0x03, 0xb8, 0x05, 0xac, 0x07, 0x81, 0x07, + 0xd9, 0x06, 0x87, 0x06, 0x74, 0x07, 0x98, 0x08, 0x56, 0x07, 0x18, 0x05, 0x31, 0x04, 0xf1, 0x01, + 0x72, 0x01, 0xce, 0x02, 0x9f, 0x03, 0x74, 0x04, 0x45, 0x05, 0xf3, 0x07, 0x44, 0x0a, 0xcf, 0x12, + 0x6d, 0x1f, 0x10, 0x2b, 0x2b, 0x2e, 0x25, 0x27, 0x8c, 0x1f, 0xf7, 0x18, 0x5c, 0x10, 0xe0, 0x02, + 0x69, 0xf8, 0x35, 0xf2, 0x49, 0xf1, 0xa9, 0xf3, 0x2f, 0xf8, 0x74, 0xfc, 0xe1, 0x01, 0x05, 0x03, + 0x53, 0x00, 0x00, 0xff, 0x58, 0xfe, 0xdd, 0xfe, 0xbd, 0xfe, 0x34, 0x01, 0xec, 0x04, 0x91, 0x08, + 0x82, 0x08, 0x3f, 0x06, 0x66, 0x04, 0x9a, 0x00, 0xbc, 0xfa, 0x9e, 0xf5, 0x69, 0xf2, 0x9b, 0xf1, + 0x2f, 0xf0, 0x99, 0xed, 0x78, 0xeb, 0xbe, 0xeb, 0x78, 0xec, 0xd5, 0xeb, 0x18, 0xeb, 0x00, 0xec, + 0x33, 0xee, 0xfe, 0xf0, 0x75, 0xf2, 0xe3, 0xf3, 0xe1, 0xf6, 0xf5, 0xf7, 0x51, 0xf7, 0xdc, 0xf6, + 0x54, 0xf8, 0x0e, 0xfa, 0x0f, 0xfa, 0xda, 0xf8, 0x9f, 0xf7, 0x92, 0xf8, 0x3c, 0xf9, 0x66, 0xfa, + 0xe8, 0xfc, 0xee, 0xfe, 0x97, 0xfe, 0x82, 0xff, 0x8f, 0x01, 0xfd, 0x00, 0xa9, 0xfe, 0x2c, 0xfb, + 0x5a, 0xf9, 0xe6, 0xf7, 0xaf, 0xf7, 0x77, 0xf8, 0xc6, 0xfa, 0xea, 0xfc, 0xd2, 0xff, 0xa4, 0x02, + 0x8a, 0x05, 0x66, 0x0f, 0x79, 0x1c, 0x21, 0x28, 0x38, 0x2c, 0x49, 0x29, 0x9a, 0x24, 0x52, 0x1f, + 0xb9, 0x16, 0x45, 0x0a, 0xaf, 0x01, 0x2c, 0xfa, 0x58, 0xf6, 0x3f, 0xf9, 0xb6, 0xfd, 0xb6, 0x02, + 0xce, 0x06, 0xff, 0x07, 0x04, 0x06, 0x6a, 0x04, 0xa8, 0x01, 0xa6, 0xfe, 0x24, 0xfe, 0xdb, 0xff, + 0x91, 0x03, 0x46, 0x05, 0x39, 0x05, 0x8e, 0x03, 0x98, 0x02, 0xd9, 0x00, 0xf7, 0xfb, 0x6b, 0xf8, + 0xbf, 0xf6, 0xe2, 0xf5, 0x8b, 0xf4, 0x8d, 0xf3, 0xd5, 0xf4, 0x48, 0xf8, 0xf0, 0xfa, 0xd7, 0xfa, + 0x0f, 0xfa, 0x26, 0xf9, 0x1f, 0xf8, 0xa7, 0xf9, 0x0f, 0xfc, 0xeb, 0xfd, 0xd2, 0x00, 0xc3, 0x00, + 0x35, 0x01, 0x55, 0x01, 0x43, 0xff, 0xa7, 0xfd, 0x14, 0xfd, 0xfb, 0xfd, 0xf3, 0x00, 0x58, 0x03, + 0xf8, 0x03, 0x56, 0x05, 0x2e, 0x05, 0xa3, 0x04, 0x7c, 0x04, 0xf5, 0x03, 0xeb, 0x01, 0xa3, 0x00, + 0x7a, 0xfe, 0x62, 0xfb, 0xc1, 0xf8, 0x55, 0xf6, 0x52, 0xf5, 0x13, 0xf6, 0xef, 0xf8, 0xde, 0xfc, + 0x71, 0xff, 0xfc, 0x00, 0xe2, 0x06, 0xc1, 0x0f, 0x16, 0x1c, 0x3c, 0x26, 0x9c, 0x25, 0xb3, 0x1f, + 0x2f, 0x1a, 0x0d, 0x12, 0x79, 0x05, 0x8f, 0xf9, 0x86, 0xed, 0xc4, 0xe6, 0x64, 0xe7, 0x0b, 0xe9, + 0x24, 0xed, 0x86, 0xf3, 0x09, 0xf8, 0x0b, 0xf9, 0xe8, 0xf7, 0xc6, 0xf8, 0xc0, 0xf8, 0xb0, 0xf7, + 0xe0, 0xf7, 0xd3, 0xf9, 0x01, 0xfd, 0x5c, 0xfe, 0x0a, 0x00, 0x53, 0x01, 0x06, 0x03, 0xae, 0x00, + 0xb2, 0xf9, 0xd4, 0xf4, 0x5e, 0xf2, 0x93, 0xf1, 0xc6, 0xf2, 0x5b, 0xf3, 0x94, 0xf4, 0x7d, 0xf7, + 0xf6, 0xf9, 0xfa, 0xfb, 0x17, 0xfe, 0x28, 0x00, 0x37, 0x01, 0x97, 0x04, 0x1c, 0x08, 0x46, 0x0d, + 0x0b, 0x13, 0xff, 0x16, 0x50, 0x18, 0xce, 0x16, 0x0b, 0x13, 0x5e, 0x0e, 0x63, 0x0b, 0x8d, 0x09, + 0xe3, 0x08, 0x78, 0x09, 0x85, 0x0c, 0x96, 0x0d, 0x22, 0x10, 0x66, 0x10, 0x5e, 0x0e, 0xa1, 0x0b, + 0xa0, 0x06, 0x6d, 0x02, 0x0b, 0xfe, 0x9a, 0xfa, 0xb4, 0xf6, 0xde, 0xf4, 0x5e, 0xf5, 0x23, 0xf6, + 0xc2, 0xf6, 0x51, 0xf7, 0x41, 0xf9, 0x25, 0xfa, 0x76, 0xff, 0x31, 0x0b, 0x3d, 0x18, 0x53, 0x1e, + 0x9d, 0x1b, 0x80, 0x15, 0x83, 0x0f, 0xaa, 0x06, 0xb0, 0xf8, 0x86, 0xea, 0x2b, 0xe2, 0x04, 0xde, + 0x19, 0xe0, 0xb0, 0xe4, 0x7f, 0xe8, 0x14, 0xec, 0x36, 0xec, 0xcb, 0xea, 0x74, 0xeb, 0x4f, 0xee, + 0x3d, 0xee, 0x15, 0xf1, 0xbb, 0xf5, 0x99, 0xfc, 0xcc, 0x02, 0x81, 0x05, 0xe2, 0x05, 0xc0, 0x05, + 0x99, 0x04, 0xff, 0x01, 0x5a, 0xfe, 0xba, 0xf9, 0x86, 0xf7, 0x07, 0xf7, 0x6c, 0xf7, 0xf9, 0xf6, + 0xe3, 0xf8, 0x32, 0xfb, 0x1b, 0xfd, 0x51, 0xfe, 0x2e, 0xff, 0xf9, 0x00, 0xb9, 0x01, 0x97, 0x01, + 0x88, 0x02, 0xcf, 0x04, 0x72, 0x05, 0xd9, 0x04, 0x82, 0x04, 0x93, 0x02, 0xb4, 0x00, 0x6f, 0xfd, + 0xbb, 0xfb, 0x07, 0xfb, 0x43, 0xfa, 0x49, 0xfc, 0x8a, 0xfd, 0xfc, 0xfe, 0xdf, 0xff, 0x3b, 0x02, + 0x9e, 0x03, 0xc6, 0x05, 0xb1, 0x05, 0xfc, 0x03, 0xab, 0x02, 0x79, 0x00, 0x29, 0xff, 0xb8, 0xfb, + 0x52, 0xfd, 0x84, 0xfd, 0x43, 0xfd, 0x3e, 0xfc, 0xa4, 0xfd, 0x70, 0xfe, 0xae, 0x06, 0xe9, 0x17, + 0x5f, 0x26, 0x5e, 0x30, 0x77, 0x2e, 0x44, 0x28, 0x36, 0x21, 0x0e, 0x1a, 0x37, 0x0c, 0x86, 0xff, + 0x24, 0xf6, 0x7f, 0xf0, 0xa6, 0xf4, 0xe1, 0xf8, 0x45, 0xfe, 0x78, 0x02, 0x61, 0x05, 0x68, 0x02, + 0x8d, 0xff, 0xe5, 0xfc, 0x50, 0xfa, 0x11, 0xfb, 0x16, 0xff, 0x50, 0x05, 0x92, 0x0a, 0x15, 0x0d, + 0xb1, 0x0b, 0xc4, 0x09, 0xab, 0x05, 0x97, 0xfd, 0x93, 0xf6, 0x41, 0xf2, 0x62, 0xf2, 0xb1, 0xf3, + 0x2d, 0xf5, 0xd2, 0xf5, 0xa8, 0xf3, 0x42, 0xf3, 0x75, 0xf2, 0xe3, 0xf2, 0xcd, 0xf4, 0xa3, 0xf6, + 0x15, 0xfb, 0xbd, 0xff, 0xb8, 0x05, 0x1e, 0x0a, 0x0b, 0x0b, 0x57, 0x0a, 0x9d, 0x08, 0x9e, 0x05, + 0xb6, 0x01, 0xbd, 0xff, 0x1c, 0xfe, 0x26, 0xfd, 0xe9, 0xfc, 0x9e, 0xfc, 0xa1, 0xfc, 0x61, 0xfc, + 0xda, 0xfa, 0xb5, 0xf9, 0x72, 0xf8, 0x35, 0xf7, 0x35, 0xf6, 0x6e, 0xf6, 0xbf, 0xf6, 0x15, 0xf6, + 0x98, 0xf4, 0x6e, 0xf3, 0x9f, 0xf2, 0x50, 0xf2, 0xef, 0xf1, 0xc0, 0xf2, 0x7b, 0xf4, 0xdf, 0xfb, + 0x57, 0x0c, 0x46, 0x1d, 0xe5, 0x29, 0x48, 0x2b, 0xeb, 0x24, 0xa7, 0x1c, 0x66, 0x14, 0x3a, 0x08, + 0x93, 0xfa, 0xc4, 0xf0, 0x39, 0xeb, 0x9c, 0xec, 0x04, 0xf0, 0x13, 0xf4, 0xa3, 0xf6, 0xc0, 0xf7, + 0x64, 0xf4, 0x03, 0xf3, 0x50, 0xf2, 0xf1, 0xf1, 0x8d, 0xf2, 0x08, 0xf6, 0x28, 0xfd, 0x85, 0x02, + 0x4b, 0x06, 0x1b, 0x06, 0xad, 0x05, 0x7a, 0x03, 0x25, 0xfe, 0xf1, 0xf6, 0x8c, 0xf2, 0x83, 0xf2, + 0x8c, 0xf3, 0xd2, 0xf4, 0x21, 0xf6, 0x14, 0xf9, 0xf8, 0xfa, 0x2e, 0xfc, 0x7e, 0xfb, 0xfe, 0xfb, + 0x60, 0xfe, 0x10, 0x01, 0x6d, 0x04, 0x06, 0x08, 0xec, 0x0b, 0x84, 0x0e, 0xb2, 0x10, 0x0a, 0x11, + 0x08, 0x10, 0x09, 0x0e, 0x99, 0x09, 0x1c, 0x06, 0x8b, 0x05, 0xbc, 0x07, 0x5e, 0x0b, 0x09, 0x0d, + 0xbc, 0x0d, 0xbb, 0x0c, 0xae, 0x0a, 0xaf, 0x08, 0x5f, 0x06, 0xf1, 0x03, 0x2a, 0x02, 0x5f, 0x03, + 0x03, 0x05, 0xd3, 0x05, 0xc0, 0x03, 0x16, 0x02, 0xb9, 0x00, 0x57, 0xfc, 0x65, 0xf7, 0xae, 0xf4, + 0x93, 0xf4, 0x71, 0xfa, 0xbf, 0x07, 0x51, 0x16, 0xab, 0x20, 0x73, 0x20, 0x99, 0x1a, 0x20, 0x11, + 0x5d, 0x07, 0x69, 0xf9, 0x92, 0xed, 0x00, 0xe6, 0xe4, 0xe2, 0x1f, 0xe6, 0x5d, 0xec, 0xd9, 0xf1, + 0xbd, 0xf5, 0xd7, 0xf6, 0xde, 0xf2, 0x79, 0xee, 0x86, 0xeb, 0xcf, 0xe9, 0x75, 0xeb, 0x03, 0xf1, + 0x92, 0xf8, 0x6d, 0xff, 0x39, 0x03, 0x61, 0x03, 0x07, 0x02, 0xa5, 0xff, 0x90, 0xfb, 0x3d, 0xf6, + 0xbc, 0xf3, 0x0a, 0xf4, 0xa9, 0xf6, 0x28, 0xf8, 0x8a, 0xf9, 0x70, 0xfb, 0x15, 0xfd, 0x60, 0xff, + 0x3e, 0x01, 0xcd, 0x04, 0xe4, 0x07, 0x52, 0x0b, 0x82, 0x0e, 0xa6, 0x10, 0x4a, 0x13, 0x13, 0x14, + 0x53, 0x13, 0x96, 0x11, 0xa2, 0x10, 0x27, 0x0f, 0x68, 0x0c, 0x81, 0x0b, 0x8b, 0x0c, 0xe9, 0x0d, + 0xc5, 0x0e, 0xa5, 0x0d, 0xcf, 0x0a, 0x2a, 0x08, 0xef, 0x05, 0xb7, 0x02, 0xb3, 0xff, 0x80, 0xfb, + 0x4d, 0xf9, 0x7e, 0xf9, 0x45, 0xfa, 0x92, 0xfa, 0x50, 0xf9, 0x11, 0xf6, 0x9a, 0xf5, 0x4f, 0xf8, + 0xbd, 0xfa, 0x90, 0xfc, 0x24, 0xff, 0xed, 0x07, 0xa4, 0x15, 0xe0, 0x22, 0xa0, 0x29, 0x12, 0x25, + 0x03, 0x1c, 0xa4, 0x14, 0x8a, 0x09, 0x45, 0xf9, 0xe4, 0xeb, 0x33, 0xe4, 0x01, 0xde, 0x99, 0xdd, + 0x0a, 0xe3, 0x93, 0xe9, 0x1d, 0xf0, 0x3b, 0xf2, 0xba, 0xef, 0x1a, 0xed, 0x00, 0xed, 0x8a, 0xee, + 0x1c, 0xf3, 0xfb, 0xf8, 0xc3, 0x01, 0x77, 0x08, 0x23, 0x08, 0x46, 0x07, 0x4c, 0x06, 0x97, 0x02, + 0x1b, 0xfd, 0xf7, 0xf6, 0x32, 0xf2, 0xcd, 0xf1, 0xeb, 0xf1, 0xbe, 0xf2, 0x44, 0xf4, 0xde, 0xf3, + 0x96, 0xf5, 0x75, 0xf5, 0x93, 0xf4, 0xc4, 0xf4, 0x65, 0xf3, 0x5a, 0xf6, 0x4d, 0xf9, 0xd3, 0xfb, + 0x3a, 0x00, 0xe1, 0x00, 0xfb, 0x03, 0x6a, 0x04, 0x0a, 0x03, 0x35, 0x02, 0xe9, 0x01, 0x73, 0x03, + 0x52, 0x03, 0xb1, 0x05, 0x2f, 0x08, 0xf7, 0x07, 0x9a, 0x08, 0x56, 0x06, 0x35, 0x02, 0xe1, 0x01, + 0x49, 0x03, 0xeb, 0x05, 0x00, 0x07, 0x02, 0x07, 0x33, 0x07, 0x27, 0x03, 0x04, 0xff, 0x8d, 0xfa, + 0x99, 0xf9, 0x29, 0xfc, 0xf0, 0xff, 0x02, 0x06, 0x42, 0x0f, 0xb2, 0x1d, 0xa8, 0x2b, 0x2f, 0x32, + 0x6e, 0x30, 0xb4, 0x29, 0xa5, 0x22, 0x40, 0x19, 0x62, 0x0c, 0x9e, 0x03, 0x56, 0xfb, 0x75, 0xf5, + 0x8c, 0xf4, 0x35, 0xf8, 0x49, 0xfc, 0xc3, 0xfc, 0xf1, 0xfb, 0xa3, 0xfb, 0xdf, 0xfc, 0x28, 0xfe, + 0x00, 0xfe, 0xdd, 0xff, 0x11, 0x02, 0xec, 0x02, 0x8d, 0x03, 0xda, 0x00, 0xa1, 0xfd, 0xf7, 0xfb, + 0x0a, 0xf9, 0x41, 0xf3, 0x9a, 0xf0, 0xa5, 0xee, 0x2b, 0xee, 0xc1, 0xed, 0xdb, 0xed, 0x1b, 0xed, + 0xf6, 0xed, 0x17, 0xf1, 0xb8, 0xf3, 0x07, 0xf7, 0xee, 0xfa, 0x49, 0xfd, 0x67, 0xfe, 0xb1, 0xfe, + 0x10, 0xfe, 0x98, 0x00, 0xea, 0x01, 0xff, 0x01, 0xd1, 0x00, 0x3c, 0xff, 0xa2, 0x00, 0x22, 0x01, + 0xb4, 0x01, 0xa4, 0x01, 0x85, 0x01, 0x8d, 0x00, 0x88, 0x01, 0xc7, 0x02, 0x90, 0x00, 0x42, 0xff, + 0xac, 0xfe, 0xc2, 0xfd, 0x65, 0xfd, 0x52, 0xfd, 0xa6, 0xfc, 0x37, 0xfd, 0xb2, 0xfb, 0xe0, 0xf9, + 0x65, 0xf7, 0xcc, 0xf5, 0xd9, 0xf5, 0xfa, 0xf6, 0x26, 0xfc, 0x51, 0x00, 0x61, 0x0a, 0xd3, 0x1a, + 0x45, 0x29, 0x05, 0x30, 0x59, 0x2b, 0x28, 0x23, 0x2c, 0x1c, 0xab, 0x10, 0x34, 0xfe, 0xb9, 0xed, + 0x40, 0xe5, 0xeb, 0xe5, 0x91, 0xe8, 0xae, 0xea, 0x87, 0xec, 0xc3, 0xed, 0x73, 0xef, 0x25, 0xef, + 0x2e, 0xee, 0x6a, 0xf0, 0xc8, 0xf3, 0x14, 0xf9, 0xbb, 0xfd, 0x8d, 0x02, 0x18, 0x07, 0xdf, 0x07, + 0x52, 0x05, 0xdb, 0x02, 0xbe, 0xff, 0xb0, 0xfb, 0xb4, 0xf7, 0xe0, 0xf3, 0x07, 0xf5, 0xcf, 0xf5, + 0x4b, 0xf6, 0x0f, 0xf6, 0xca, 0xf4, 0x17, 0xf5, 0xdc, 0xf6, 0xce, 0xf8, 0xb3, 0xfc, 0x4d, 0x01, + 0x8a, 0x05, 0xaf, 0x08, 0x5b, 0x09, 0x86, 0x0b, 0x9a, 0x0d, 0x59, 0x0f, 0x8f, 0x11, 0xcd, 0x12, + 0x21, 0x11, 0x9b, 0x0e, 0xa7, 0x0e, 0x7c, 0x0e, 0x2f, 0x0f, 0x4c, 0x0d, 0xc5, 0x09, 0xa5, 0x06, + 0xe9, 0x04, 0xe9, 0x05, 0xe0, 0x05, 0x6a, 0x07, 0xc3, 0x06, 0xd0, 0x05, 0xf9, 0x04, 0x58, 0xff, + 0xf3, 0xf9, 0xdc, 0xf5, 0x0a, 0xf3, 0x6a, 0xf3, 0xb3, 0xf2, 0xa2, 0xf4, 0xe6, 0xf8, 0x7b, 0xff, + 0x75, 0x0b, 0x5c, 0x1b, 0x5a, 0x28, 0x00, 0x2a, 0x0d, 0x22, 0x88, 0x18, 0xec, 0x0f, 0x94, 0x06, + 0xe4, 0xfa, 0x18, 0xef, 0x69, 0xe8, 0xdb, 0xe5, 0xd3, 0xe6, 0x22, 0xeb, 0x28, 0xf0, 0xc5, 0xf2, + 0xad, 0xf2, 0x77, 0xf0, 0x19, 0xef, 0x44, 0xef, 0x23, 0xf0, 0x2e, 0xf2, 0x50, 0xf8, 0x9a, 0xff, + 0x30, 0x03, 0x24, 0x03, 0xcd, 0x00, 0x18, 0x00, 0x22, 0xfe, 0x71, 0xf9, 0x5b, 0xf5, 0x2e, 0xf5, + 0x9f, 0xf8, 0x1a, 0xfc, 0xa1, 0xfc, 0x1a, 0xfd, 0xe0, 0xfe, 0x0e, 0x01, 0x74, 0x02, 0x32, 0x01, + 0x79, 0x02, 0xb2, 0x04, 0x06, 0x08, 0x9e, 0x0c, 0x47, 0x0f, 0x64, 0x12, 0x9a, 0x14, 0x5f, 0x13, + 0x64, 0x0f, 0x39, 0x0a, 0x39, 0x07, 0x1d, 0x05, 0x3a, 0x03, 0xf6, 0x01, 0x55, 0x00, 0x85, 0x01, + 0xf4, 0x01, 0x33, 0x01, 0x36, 0x01, 0x8a, 0xff, 0x9b, 0xfe, 0x03, 0xfe, 0x76, 0xfc, 0x8b, 0xfb, + 0x76, 0xfc, 0x1f, 0xfc, 0x06, 0xfa, 0x4b, 0xf8, 0x4b, 0xf7, 0x5b, 0xf6, 0x2a, 0xf7, 0x0a, 0xf8, + 0x87, 0xf9, 0x36, 0xfe, 0xcb, 0x0a, 0x15, 0x1b, 0xc1, 0x26, 0xb8, 0x26, 0xab, 0x1d, 0x25, 0x15, + 0xc6, 0x0e, 0xf1, 0x03, 0x38, 0xf5, 0x6c, 0xeb, 0xfe, 0xe5, 0x38, 0xe7, 0xde, 0xea, 0xfb, 0xee, + 0x7b, 0xf2, 0xb2, 0xf5, 0x31, 0xf4, 0xbb, 0xf1, 0x6c, 0xf3, 0x04, 0xf5, 0x3d, 0xf6, 0x80, 0xf9, + 0xb5, 0xfd, 0x4b, 0x00, 0x38, 0x02, 0xac, 0x01, 0xb7, 0x01, 0x8c, 0x00, 0x13, 0xfb, 0xb0, 0xf4, + 0x68, 0xf0, 0xdf, 0xee, 0x9e, 0xed, 0x63, 0xed, 0x64, 0xee, 0xed, 0xf0, 0x1b, 0xf3, 0xc6, 0xf3, + 0xa3, 0xf4, 0xad, 0xf4, 0x81, 0xf5, 0x90, 0xf6, 0xf9, 0xf8, 0xbc, 0xfb, 0xca, 0x00, 0x8c, 0x06, + 0xbd, 0x09, 0xf9, 0x0b, 0x08, 0x0e, 0xc3, 0x0d, 0x91, 0x0b, 0xa1, 0x07, 0x9f, 0x03, 0x64, 0x01, + 0x63, 0x01, 0x1d, 0x02, 0xaa, 0x02, 0x22, 0x04, 0x46, 0x05, 0x67, 0x05, 0x49, 0x03, 0xb8, 0xff, + 0xc3, 0xfc, 0xbb, 0xfb, 0x74, 0xfb, 0xd8, 0xfc, 0x46, 0xfe, 0x21, 0x01, 0x8a, 0x03, 0x58, 0x04, + 0xad, 0x05, 0x84, 0x07, 0x1d, 0x0a, 0xb6, 0x12, 0xf6, 0x21, 0xa0, 0x31, 0x9f, 0x38, 0x6d, 0x36, + 0x28, 0x2f, 0x07, 0x27, 0x70, 0x1c, 0x00, 0x0a, 0x0e, 0xfa, 0x04, 0xf1, 0x7b, 0xee, 0x60, 0xef, + 0xe2, 0xf4, 0x6f, 0xfa, 0x36, 0xfe, 0x02, 0xfe, 0xd9, 0xf9, 0x61, 0xf8, 0xb5, 0xf7, 0x18, 0xf6, + 0xe3, 0xf5, 0x9e, 0xf8, 0x8b, 0xfb, 0x86, 0xff, 0x1d, 0x01, 0xdb, 0x00, 0xb6, 0x01, 0xaa, 0x00, + 0xda, 0xfb, 0x20, 0xf7, 0x72, 0xf5, 0x80, 0xf5, 0xc0, 0xf8, 0xdd, 0xfa, 0x91, 0xfb, 0xf2, 0xfa, + 0x9a, 0xfa, 0xbb, 0xfb, 0x00, 0xfd, 0x2b, 0xfd, 0x86, 0xfc, 0x23, 0xfe, 0x6b, 0x00, 0x8f, 0x02, + 0xf7, 0x03, 0x1b, 0x06, 0xcd, 0x06, 0x87, 0x06, 0x62, 0x05, 0xec, 0x01, 0x72, 0xfd, 0x5e, 0xfa, + 0xab, 0xf6, 0x98, 0xf5, 0xb6, 0xf7, 0xc1, 0xf9, 0x7a, 0xfd, 0x03, 0x00, 0x6e, 0x01, 0xe4, 0x01, + 0xfc, 0x00, 0x55, 0xfe, 0x27, 0xfa, 0xcb, 0xf7, 0xfa, 0xf5, 0xa1, 0xf4, 0x9d, 0xf5, 0xf6, 0xf7, + 0x2e, 0xfb, 0x47, 0xfe, 0xe8, 0xff, 0xbe, 0x02, 0x7e, 0x02, 0x5a, 0x09, 0x50, 0x16, 0x3b, 0x21, + 0x71, 0x25, 0x1f, 0x1f, 0xfc, 0x15, 0xdc, 0x0b, 0x24, 0x01, 0xf0, 0xf2, 0x5f, 0xe6, 0xdd, 0xe0, + 0xb6, 0xdf, 0x36, 0xe2, 0x8b, 0xe8, 0xca, 0xee, 0x3d, 0xf4, 0xc4, 0xf6, 0x54, 0xf6, 0xad, 0xf6, + 0x22, 0xf6, 0x7b, 0xf6, 0x77, 0xf7, 0x6e, 0xfa, 0x02, 0x00, 0x99, 0x01, 0x60, 0x04, 0x53, 0x07, + 0x09, 0x06, 0x0c, 0x02, 0x67, 0xfb, 0x2e, 0xf6, 0xe9, 0xf3, 0xa6, 0xf4, 0x53, 0xf6, 0x90, 0xf7, + 0x61, 0xfa, 0x64, 0xfd, 0xb8, 0xfe, 0xfb, 0xff, 0x22, 0x01, 0x1b, 0x02, 0x3f, 0x03, 0x15, 0x06, + 0x94, 0x09, 0x8e, 0x0b, 0xa0, 0x0e, 0x64, 0x11, 0x6e, 0x12, 0x6c, 0x10, 0x98, 0x0d, 0x6c, 0x0a, + 0xe2, 0x06, 0x3e, 0x05, 0xa9, 0x04, 0xae, 0x06, 0x04, 0x08, 0x93, 0x07, 0xdb, 0x04, 0xf3, 0x01, + 0x74, 0xff, 0xee, 0xfc, 0x4f, 0xf9, 0x91, 0xf5, 0xa3, 0xf2, 0x02, 0xf1, 0x67, 0xf1, 0x2b, 0xf1, + 0x94, 0xf2, 0x6f, 0xf4, 0x71, 0xf5, 0x2a, 0xf7, 0x06, 0xfb, 0xf3, 0xfe, 0x9f, 0x05, 0x45, 0x13, + 0xaa, 0x22, 0xc7, 0x2a, 0x31, 0x27, 0xc3, 0x1f, 0x9e, 0x17, 0x09, 0x0f, 0x2a, 0x03, 0xd5, 0xf4, + 0xd8, 0xeb, 0xe5, 0xe7, 0x28, 0xe7, 0xc8, 0xe9, 0x27, 0xee, 0x6c, 0xf2, 0xf8, 0xf5, 0xaa, 0xf6, + 0x2d, 0xf7, 0xb0, 0xf9, 0x3e, 0xfb, 0x00, 0xfe, 0x51, 0x02, 0x3c, 0x07, 0x2b, 0x0c, 0xc1, 0x0d, + 0xd9, 0x0c, 0xe3, 0x0b, 0xa2, 0x0b, 0x09, 0x09, 0x6e, 0x04, 0x1a, 0x02, 0x4e, 0x00, 0x06, 0x01, + 0x39, 0x02, 0x80, 0x00, 0xff, 0xff, 0xf4, 0xff, 0xe2, 0x00, 0x68, 0x02, 0xe9, 0x01, 0x9a, 0x01, + 0x86, 0x02, 0x7a, 0x03, 0x30, 0x06, 0xfc, 0x06, 0x44, 0x07, 0x64, 0x07, 0x1e, 0x06, 0xdd, 0x02, + 0xde, 0xff, 0xe0, 0xfd, 0xa1, 0xfd, 0x15, 0xfd, 0xd8, 0xfd, 0x6d, 0xff, 0x0b, 0x01, 0xad, 0x03, + 0xef, 0x03, 0x3e, 0x05, 0xd5, 0x03, 0x39, 0x02, 0x58, 0x01, 0xc8, 0x00, 0xf7, 0x00, 0xc3, 0xff, + 0xe3, 0xfe, 0x93, 0xfe, 0x12, 0xfc, 0x4e, 0xfc, 0xb6, 0xfc, 0xaa, 0xfb, 0xfd, 0xfb, 0x94, 0xfb, + 0x9a, 0xfe, 0x14, 0x09, 0xc6, 0x18, 0xf7, 0x23, 0x23, 0x24, 0xa1, 0x1a, 0xf5, 0x10, 0x12, 0x08, + 0x67, 0xfc, 0x61, 0xee, 0xb2, 0xe8, 0x93, 0xe5, 0x70, 0xe5, 0xfd, 0xea, 0x2a, 0xf0, 0x0b, 0xf3, + 0xe6, 0xf2, 0x45, 0xf0, 0xf3, 0xed, 0x46, 0xf1, 0x99, 0xf6, 0x7c, 0xfa, 0x3a, 0xfe, 0x1a, 0x01, + 0xec, 0x02, 0xd3, 0x02, 0x62, 0xff, 0x61, 0xfb, 0x4e, 0xf9, 0xa9, 0xf4, 0xbf, 0xef, 0xe1, 0xed, + 0x28, 0xef, 0xac, 0xf2, 0x6d, 0xf4, 0xb6, 0xf3, 0x3b, 0xf2, 0x45, 0xf2, 0xec, 0xf0, 0xdf, 0xf0, + 0x3e, 0xf3, 0xec, 0xf6, 0xc3, 0xfb, 0x51, 0x00, 0x62, 0x02, 0xeb, 0x03, 0x24, 0x05, 0x66, 0x03, + 0x11, 0xfe, 0x57, 0xfa, 0xa4, 0xf8, 0xf4, 0xf6, 0x15, 0xf7, 0x1d, 0xf9, 0x04, 0xfd, 0xd4, 0x01, + 0xd8, 0x02, 0x68, 0x01, 0x31, 0x01, 0x0a, 0x02, 0xf5, 0x01, 0xcb, 0x00, 0x42, 0x01, 0x04, 0x02, + 0x45, 0x04, 0xb0, 0x05, 0xb7, 0x06, 0xfe, 0x07, 0x1b, 0x09, 0xb0, 0x0a, 0x63, 0x0b, 0x58, 0x0d, + 0xb6, 0x10, 0xc6, 0x13, 0xe6, 0x16, 0xf0, 0x1f, 0x83, 0x2d, 0x6a, 0x38, 0xdf, 0x39, 0x00, 0x34, + 0x3d, 0x2a, 0xfb, 0x1e, 0x0b, 0x11, 0x63, 0x01, 0x52, 0xf9, 0xfa, 0xf3, 0xc6, 0xf2, 0xbd, 0xf5, + 0x68, 0xf9, 0x5b, 0xfb, 0x2e, 0xfb, 0x1b, 0xf9, 0x74, 0xf5, 0x6e, 0xf3, 0xcf, 0xf3, 0x2b, 0xf6, + 0xd3, 0xf9, 0xa9, 0xfe, 0x57, 0x02, 0x61, 0x04, 0xea, 0x05, 0xaf, 0x06, 0x81, 0x04, 0xe4, 0xfe, + 0x85, 0xf8, 0xa3, 0xf4, 0xbf, 0xf3, 0x53, 0xf4, 0x43, 0xf4, 0x19, 0xf3, 0xf4, 0xf1, 0xda, 0xf1, + 0xcb, 0xf2, 0xdb, 0xf4, 0x12, 0xf7, 0x79, 0xf9, 0xde, 0xfe, 0x16, 0x02, 0x12, 0x05, 0x27, 0x06, + 0xaa, 0x06, 0xf9, 0x04, 0xc8, 0xff, 0xc7, 0xfc, 0xb2, 0xfb, 0x36, 0xfc, 0xc0, 0xfc, 0x8a, 0xfe, + 0x8f, 0xff, 0xcf, 0xff, 0xb7, 0xfc, 0x5a, 0xf7, 0xe4, 0xf2, 0x44, 0xf0, 0x63, 0xee, 0xa7, 0xed, + 0xa1, 0xef, 0xb8, 0xf2, 0x98, 0xf5, 0x41, 0xf6, 0x9a, 0xf4, 0xe0, 0xf1, 0x10, 0xf0, 0xa1, 0xee, + 0xb4, 0xeb, 0xe2, 0xe9, 0x53, 0xeb, 0xf0, 0xeb, 0xe5, 0xf1, 0xac, 0x01, 0x23, 0x13, 0x45, 0x1f, + 0xbc, 0x20, 0x0d, 0x19, 0x76, 0x0e, 0xe4, 0x06, 0xa0, 0xfd, 0x37, 0xf3, 0xfc, 0xed, 0x6a, 0xec, + 0xd7, 0xee, 0xa2, 0xf5, 0x1f, 0xfb, 0x59, 0xff, 0xe6, 0x01, 0x49, 0x01, 0x53, 0x01, 0x11, 0x03, + 0x22, 0x06, 0x69, 0x09, 0xc9, 0x0c, 0xab, 0x0e, 0x73, 0x10, 0x1b, 0x12, 0xaf, 0x14, 0x3a, 0x15, + 0x76, 0x14, 0x6b, 0x11, 0xc5, 0x0e, 0xe3, 0x0d, 0x19, 0x0c, 0x81, 0x0c, 0x85, 0x0b, 0xb0, 0x09, + 0xbd, 0x07, 0xa8, 0x07, 0x85, 0x08, 0x39, 0x09, 0xc9, 0x0a, 0xdf, 0x0c, 0x7b, 0x0f, 0xe3, 0x12, + 0x3d, 0x16, 0x69, 0x17, 0x9a, 0x17, 0x37, 0x14, 0xfd, 0x0e, 0xc4, 0x09, 0x98, 0x05, 0x65, 0x00, + 0x53, 0xfc, 0xe4, 0xfa, 0x45, 0xfb, 0x71, 0xfb, 0x47, 0xf9, 0x4d, 0xf8, 0x8f, 0xf7, 0x94, 0xfa, + 0xc5, 0xfb, 0xf6, 0xf8, 0x04, 0xf6, 0x5a, 0xf3, 0x88, 0xf3, 0xd7, 0xf4, 0x3b, 0xf5, 0x4c, 0xf4, + 0x3e, 0xf3, 0xd4, 0xf0, 0x7f, 0xef, 0x20, 0xef, 0xdd, 0xef, 0x85, 0xf2, 0x65, 0xf8, 0x4e, 0x08, + 0xc8, 0x18, 0x8d, 0x1b, 0x61, 0x16, 0xa7, 0x0d, 0xfb, 0x01, 0x59, 0xf9, 0xf2, 0xeb, 0x18, 0xe2, + 0x3c, 0xe0, 0xf9, 0xe1, 0xa9, 0xe8, 0x7f, 0xf1, 0x2c, 0xf6, 0x81, 0xfa, 0xb6, 0xfa, 0x79, 0xf8, + 0x6a, 0xfb, 0xbb, 0xfc, 0x7c, 0x00, 0x8b, 0x07, 0x71, 0x0c, 0x00, 0x13, 0xa8, 0x15, 0x4e, 0x13, + 0xa9, 0x11, 0xb5, 0x0c, 0x17, 0x0b, 0x2c, 0x09, 0x7f, 0x01, 0xa3, 0xff, 0xd2, 0xfe, 0xcb, 0xfe, + 0xb3, 0xff, 0x08, 0xfc, 0xb1, 0xf9, 0x2d, 0xfb, 0xfc, 0xf8, 0x53, 0xfa, 0xce, 0xf9, 0x02, 0xf7, + 0x00, 0xf8, 0xc5, 0xfb, 0x7b, 0xfd, 0xd6, 0xff, 0xb7, 0x00, 0x2d, 0x01, 0x8a, 0x04, 0x09, 0x08, + 0xee, 0x0b, 0x3b, 0x0b, 0xa4, 0x06, 0xa1, 0x04, 0xe4, 0x01, 0x3f, 0xfd, 0xfe, 0xfa, 0x44, 0xf5, + 0xb5, 0xf3, 0xf3, 0xf1, 0x26, 0xf2, 0x91, 0xf5, 0xc9, 0xf4, 0x28, 0xf5, 0xa5, 0xf6, 0xc7, 0xf6, + 0x50, 0xf6, 0x3c, 0xf5, 0x24, 0xf3, 0x56, 0xf2, 0xe8, 0xf0, 0xd3, 0xf1, 0xf9, 0xf5, 0x1f, 0xf8, + 0xcd, 0xff, 0xad, 0x11, 0x4f, 0x22, 0x2e, 0x28, 0x64, 0x23, 0xa3, 0x18, 0xdf, 0x11, 0xb0, 0x0b, + 0x66, 0xfe, 0x4c, 0xf4, 0x05, 0xed, 0x77, 0xeb, 0x47, 0xf2, 0xae, 0xf6, 0x6f, 0xfb, 0x1b, 0x00, + 0xe3, 0xfe, 0x46, 0xf9, 0xcd, 0xf5, 0x46, 0xf6, 0xc5, 0xf6, 0xc0, 0xf5, 0x1c, 0xf6, 0xd8, 0xf8, + 0x09, 0xfb, 0x43, 0xfd, 0x68, 0xff, 0x61, 0xff, 0x2b, 0xfc, 0x2b, 0xf6, 0x34, 0xf0, 0x7b, 0xed, + 0x6a, 0xef, 0x9c, 0xf2, 0xa4, 0xf8, 0x2a, 0xfc, 0x52, 0x00, 0x71, 0x06, 0x17, 0x0b, 0xb5, 0x0f, + 0x7f, 0x14, 0x29, 0x16, 0xfa, 0x17, 0x16, 0x19, 0x48, 0x18, 0x9b, 0x17, 0xd6, 0x15, 0xd7, 0x12, + 0x33, 0x0d, 0x61, 0x08, 0x0b, 0x05, 0x9a, 0x03, 0xb0, 0x00, 0xe9, 0xfd, 0x6f, 0x00, 0x7c, 0x03, + 0xde, 0x04, 0xdd, 0x03, 0x93, 0x03, 0x6a, 0x06, 0xa3, 0x06, 0x77, 0x05, 0x00, 0x05, 0x95, 0x02, + 0xdc, 0x01, 0x10, 0x00, 0xca, 0x01, 0x0a, 0x04, 0xb7, 0x04, 0xfc, 0x05, 0x47, 0x0a, 0xdb, 0x0d, + 0xda, 0x11, 0x99, 0x15, 0x19, 0x1c, 0xb2, 0x25, 0x23, 0x2f, 0x51, 0x2c, 0x57, 0x23, 0x3a, 0x1a, + 0x40, 0x10, 0x94, 0x04, 0x38, 0xf4, 0x9e, 0xeb, 0x8d, 0xe9, 0x02, 0xe8, 0xcd, 0xec, 0x7a, 0xf3, + 0xd2, 0xf7, 0x19, 0xfc, 0x56, 0xfb, 0xdf, 0xfa, 0x9d, 0xfb, 0xf1, 0xf8, 0x96, 0xf8, 0x1c, 0xf8, + 0x3c, 0xf7, 0x0b, 0xf8, 0x43, 0xfc, 0xaf, 0xff, 0x1d, 0x00, 0xb0, 0x00, 0x05, 0xff, 0x85, 0xfb, + 0xbf, 0xf6, 0x99, 0xf4, 0xef, 0xf3, 0x5f, 0xf2, 0xaf, 0xf2, 0x60, 0xf0, 0xbc, 0xf0, 0x2c, 0xf4, + 0xba, 0xf3, 0x42, 0xf2, 0x29, 0xf1, 0x7e, 0xee, 0xbe, 0xee, 0x84, 0xed, 0x17, 0xee, 0x51, 0xf2, + 0x5b, 0xf3, 0xf8, 0xf1, 0x20, 0xf0, 0x32, 0xee, 0xa5, 0xec, 0xdc, 0xe5, 0x9f, 0xe1, 0xcd, 0xe3, + 0xb3, 0xe6, 0xc1, 0xe6, 0xff, 0xea, 0x20, 0xf1, 0x80, 0xf5, 0xb3, 0xf8, 0xf4, 0xfa, 0x46, 0xfc, + 0x90, 0xfc, 0xd4, 0xfc, 0xe0, 0xf8, 0x57, 0xf6, 0xc4, 0xf5, 0x55, 0xf5, 0xb9, 0xf3, 0x1c, 0xf5, + 0x43, 0xf7, 0xc3, 0xf8, 0xd2, 0xfb, 0xda, 0xff, 0xdd, 0x0f, 0x15, 0x20, 0x9c, 0x27, 0xd3, 0x25, + 0x09, 0x1d, 0xe5, 0x13, 0xf9, 0x0b, 0x81, 0x00, 0xc5, 0xf6, 0x0f, 0xf0, 0x8f, 0xea, 0xc0, 0xec, + 0x63, 0xf0, 0xd0, 0xf3, 0x29, 0xf7, 0x4c, 0xfa, 0xe1, 0xfa, 0xfd, 0xfb, 0x77, 0x01, 0x41, 0x08, + 0x54, 0x0f, 0xf6, 0x15, 0x7a, 0x1c, 0x52, 0x21, 0x9e, 0x23, 0x42, 0x23, 0x29, 0x20, 0xcb, 0x1c, + 0x8b, 0x17, 0xf4, 0x0f, 0xff, 0x0b, 0x69, 0x0a, 0x1f, 0x0b, 0xb6, 0x0a, 0x9e, 0x07, 0x60, 0x0a, + 0xf8, 0x0e, 0xe4, 0x0d, 0x96, 0x0c, 0x58, 0x0c, 0x20, 0x0c, 0x5d, 0x09, 0x27, 0x04, 0x8a, 0x01, + 0x9e, 0x02, 0xc5, 0x00, 0x47, 0xfc, 0x8a, 0xfa, 0x7b, 0xfb, 0xa3, 0xfa, 0x89, 0xfa, 0x23, 0xfa, + 0xba, 0xfa, 0x36, 0xfb, 0xc0, 0xfa, 0x73, 0xf9, 0xa8, 0xf8, 0xaa, 0xfa, 0x03, 0xfb, 0x48, 0xfa, + 0xbe, 0xfd, 0x5f, 0xfe, 0xec, 0xfa, 0x25, 0xf7, 0x74, 0xf2, 0x10, 0xf2, 0x14, 0xf2, 0xd1, 0xf0, + 0x2b, 0xf0, 0xbd, 0xef, 0x52, 0xf2, 0x88, 0xf4, 0x76, 0xf6, 0x50, 0xfd, 0x61, 0x0a, 0xe2, 0x16, + 0xca, 0x1c, 0xfb, 0x17, 0xba, 0x0f, 0xdc, 0x0b, 0x17, 0x07, 0xd8, 0xfc, 0x12, 0xf5, 0xb3, 0xf3, + 0xf1, 0xf8, 0x85, 0x00, 0x9f, 0x06, 0xc3, 0x0c, 0x8a, 0x11, 0x8b, 0x12, 0x4d, 0x0f, 0x23, 0x0c, + 0xf0, 0x0d, 0x3f, 0x10, 0xd5, 0x11, 0x1c, 0x13, 0xbe, 0x13, 0x61, 0x15, 0xfe, 0x12, 0xc7, 0x0e, + 0x9c, 0x0c, 0xaa, 0x08, 0x42, 0x03, 0x3d, 0xfc, 0xca, 0xf7, 0xdb, 0xf8, 0xf0, 0xf7, 0x1a, 0xf6, + 0xb7, 0xf5, 0x52, 0xf5, 0x9a, 0xf6, 0x95, 0xf7, 0xdb, 0xfa, 0x89, 0xfe, 0x8f, 0x01, 0xc0, 0x05, + 0xa2, 0x0a, 0xf8, 0x10, 0xe6, 0x15, 0x54, 0x17, 0x37, 0x11, 0xd4, 0x0b, 0x9f, 0x08, 0xcb, 0x02, + 0xcf, 0xfe, 0xb6, 0xfd, 0x6f, 0xfd, 0x4c, 0xfe, 0xd8, 0xfb, 0xa4, 0xf9, 0xd6, 0xf8, 0x90, 0xf7, + 0xb5, 0xf7, 0x4d, 0xf5, 0x69, 0xf5, 0x32, 0xf5, 0xed, 0xf0, 0x7d, 0xf0, 0x38, 0xef, 0x7e, 0xeb, + 0xe4, 0xe8, 0xe1, 0xe6, 0x80, 0xe5, 0x48, 0xe6, 0xec, 0xe9, 0xa8, 0xef, 0x69, 0xf2, 0x6c, 0xfd, + 0xca, 0x0c, 0xd8, 0x17, 0xd6, 0x1a, 0xfe, 0x15, 0xd1, 0x0d, 0xf6, 0x04, 0x73, 0xfb, 0xa7, 0xed, + 0x72, 0xe4, 0x65, 0xdf, 0xb1, 0xdc, 0xe7, 0xdd, 0xb8, 0xdf, 0x08, 0xe0, 0x1e, 0xe1, 0xa9, 0xdf, + 0x3e, 0xde, 0x6e, 0xdf, 0x90, 0xe3, 0xda, 0xe9, 0xa1, 0xee, 0x39, 0xf4, 0x0f, 0xf9, 0x16, 0xfb, + 0x7e, 0xf9, 0x3e, 0xf7, 0x6e, 0xf6, 0x03, 0xf3, 0x71, 0xf1, 0x2b, 0xf3, 0x48, 0xf5, 0xc2, 0xfd, + 0x54, 0x04, 0xfd, 0x07, 0x52, 0x0d, 0x39, 0x11, 0xfc, 0x12, 0xbc, 0x10, 0x13, 0x0e, 0xd5, 0x0d, + 0x3d, 0x0e, 0x9c, 0x11, 0x1a, 0x14, 0x03, 0x18, 0xef, 0x18, 0xbb, 0x14, 0xec, 0x12, 0xa7, 0x0f, + 0xc8, 0x0c, 0x7b, 0x0a, 0x35, 0x08, 0x8e, 0x09, 0xf2, 0x09, 0x31, 0x0c, 0x5d, 0x0e, 0x30, 0x0f, + 0x38, 0x0d, 0x4a, 0x0a, 0x0b, 0x08, 0xbe, 0x05, 0x2d, 0x07, 0x50, 0x0b, 0x04, 0x0d, 0x56, 0x10, + 0xed, 0x12, 0xab, 0x13, 0xc3, 0x13, 0x5a, 0x14, 0x84, 0x15, 0x04, 0x12, 0x4b, 0x11, 0x34, 0x11, + 0x02, 0x12, 0x69, 0x1c, 0x69, 0x29, 0x95, 0x30, 0xe1, 0x2c, 0xd6, 0x1f, 0x35, 0x12, 0xd6, 0x06, + 0x6c, 0xfa, 0x85, 0xf1, 0xff, 0xeb, 0xf8, 0xea, 0xbf, 0xed, 0x03, 0xf2, 0x4c, 0xf6, 0x23, 0xf7, + 0x86, 0xf3, 0x8b, 0xee, 0xe4, 0xea, 0xbe, 0xe9, 0xf4, 0xeb, 0x42, 0xf2, 0x16, 0xf7, 0xf1, 0xfa, + 0x67, 0xfc, 0xe3, 0xfc, 0x9d, 0xfc, 0x34, 0xfb, 0x10, 0xfa, 0x99, 0xf5, 0x9e, 0xf1, 0x3c, 0xef, + 0x27, 0xf0, 0xe1, 0xf4, 0xec, 0xf7, 0xe7, 0xf7, 0xa3, 0xf8, 0x62, 0xf7, 0x77, 0xf6, 0x9d, 0xf8, + 0x37, 0xfa, 0x1d, 0xfd, 0xa5, 0xfe, 0x65, 0x02, 0xca, 0x03, 0x17, 0x03, 0x95, 0x03, 0x17, 0x03, + 0x2f, 0xff, 0xb5, 0xfb, 0x3b, 0xf9, 0xf7, 0xf6, 0xf5, 0xf7, 0x71, 0xfb, 0xf7, 0xff, 0x42, 0x03, + 0xf8, 0x05, 0xa1, 0x05, 0x8c, 0x05, 0xe4, 0x07, 0x6a, 0x09, 0x5f, 0x0b, 0x5d, 0x0b, 0xe1, 0x09, + 0xf6, 0x07, 0x37, 0x06, 0x52, 0x03, 0x55, 0x01, 0xc1, 0x00, 0x44, 0xfd, 0x12, 0xfa, 0x7d, 0xf9, + 0x58, 0xf8, 0x72, 0xf9, 0xd0, 0x00, 0xa3, 0x10, 0x0a, 0x1f, 0x50, 0x21, 0x92, 0x1b, 0xba, 0x11, + 0x30, 0x07, 0x00, 0xfd, 0x1d, 0xef, 0xae, 0xe5, 0xed, 0xe1, 0x32, 0xe3, 0xe0, 0xe9, 0xaa, 0xf1, + 0x99, 0xf8, 0x6a, 0xfc, 0x8e, 0xfd, 0x57, 0xfd, 0x93, 0xfe, 0x0c, 0x02, 0xf3, 0x03, 0x24, 0x05, + 0x95, 0x05, 0x0e, 0x07, 0xa2, 0x08, 0xe2, 0x06, 0x51, 0x03, 0x94, 0xfd, 0x83, 0xf7, 0xc4, 0xf3, + 0x79, 0xf0, 0xcc, 0xf0, 0xa3, 0xf5, 0xb6, 0xf8, 0x39, 0xf8, 0xbf, 0xf0, 0x13, 0xee, 0x6e, 0xef, + 0x5f, 0xe9, 0x14, 0xe1, 0x9b, 0xde, 0x78, 0xe2, 0x8f, 0xe2, 0x45, 0xe8, 0x89, 0xec, 0x03, 0xee, + 0x50, 0xee, 0xb3, 0xec, 0x8c, 0xea, 0xb8, 0xed, 0x11, 0xf1, 0xce, 0xf4, 0x29, 0xfa, 0x3d, 0xfe, + 0xc8, 0x01, 0x2f, 0x04, 0xf6, 0x06, 0x90, 0x05, 0x25, 0x04, 0xdd, 0x04, 0xb2, 0x02, 0x3f, 0x01, + 0x70, 0x02, 0x93, 0x00, 0xf7, 0xfe, 0x1c, 0xff, 0x21, 0xff, 0xdc, 0xfe, 0xe8, 0xfd, 0xa5, 0xff, + 0x9e, 0x01, 0xae, 0x05, 0x87, 0x08, 0x25, 0x0d, 0xed, 0x19, 0xfa, 0x29, 0x3b, 0x38, 0xbc, 0x3a, + 0xe2, 0x33, 0x1e, 0x2c, 0x0d, 0x26, 0x1c, 0x20, 0x4c, 0x17, 0x9d, 0x12, 0x59, 0x0f, 0x54, 0x0d, + 0x92, 0x0d, 0xe7, 0x0c, 0xf1, 0x0d, 0xc0, 0x0e, 0xe5, 0x0c, 0xab, 0x09, 0x3b, 0x09, 0xcf, 0x0a, + 0x8f, 0x0d, 0xef, 0x0c, 0xcc, 0x0b, 0xa2, 0x0b, 0xfa, 0x08, 0x97, 0x03, 0x85, 0xfd, 0xe3, 0xfb, + 0x64, 0xfa, 0x5a, 0xf7, 0xfa, 0xf4, 0x78, 0xf5, 0x0c, 0xf7, 0xb7, 0xf6, 0xe7, 0xf5, 0x41, 0xf5, + 0x85, 0xf7, 0xd1, 0xf8, 0x04, 0xf8, 0x36, 0xfa, 0xfd, 0xfe, 0xa2, 0x04, 0xd1, 0x08, 0x63, 0x08, + 0xaf, 0x09, 0xb7, 0x09, 0x67, 0x05, 0xd0, 0xff, 0xae, 0xfa, 0x73, 0xf9, 0xd0, 0xf4, 0x06, 0xf1, + 0x00, 0xf0, 0x36, 0xee, 0x81, 0xed, 0x47, 0xed, 0xd2, 0xeb, 0x83, 0xe9, 0x9e, 0xe7, 0xcf, 0xe6, + 0xdc, 0xea, 0x85, 0xed, 0x3b, 0xed, 0x37, 0xec, 0xf6, 0xec, 0xc4, 0xea, 0xd7, 0xe9, 0x75, 0xeb, + 0xd8, 0xec, 0x94, 0xf0, 0xec, 0xf4, 0x72, 0xfa, 0x0c, 0x02, 0x65, 0x0f, 0xeb, 0x25, 0x2e, 0x37, + 0xf3, 0x38, 0x99, 0x2e, 0xab, 0x22, 0x06, 0x1a, 0xb0, 0x0f, 0xf0, 0x01, 0xd7, 0xf6, 0x2c, 0xf2, + 0x9d, 0xf3, 0xba, 0xf5, 0x3d, 0xfa, 0x67, 0xff, 0x7a, 0x01, 0x1e, 0x01, 0xe5, 0xfc, 0xa7, 0xfc, + 0xc6, 0x01, 0x12, 0x08, 0x11, 0x0a, 0x16, 0x09, 0x2a, 0x0b, 0x4f, 0x0a, 0x91, 0x06, 0xf5, 0x04, + 0x7e, 0x04, 0x27, 0x03, 0x9e, 0x01, 0x5a, 0x00, 0xba, 0x02, 0x19, 0x07, 0x82, 0x08, 0x20, 0x05, + 0x35, 0x01, 0xf0, 0xfd, 0xf3, 0xfb, 0x24, 0xfb, 0x01, 0xfc, 0xd2, 0xfe, 0xd2, 0x01, 0x3d, 0x02, + 0x9f, 0x01, 0xc1, 0xff, 0xcc, 0xfc, 0x3e, 0xf8, 0x7f, 0xf4, 0xbd, 0xf2, 0xeb, 0xf2, 0x33, 0xf3, + 0x09, 0xf5, 0x21, 0xf6, 0x6c, 0xf7, 0x1e, 0xf7, 0xbb, 0xf4, 0x93, 0xf0, 0xa7, 0xed, 0xea, 0xed, + 0x66, 0xef, 0xf8, 0xf1, 0xa2, 0xf4, 0xd3, 0xf7, 0x67, 0xfa, 0xd8, 0xf8, 0xa3, 0xf9, 0x93, 0xf7, + 0x2c, 0xf3, 0xa0, 0xef, 0xf8, 0xea, 0x95, 0xeb, 0x5c, 0xf0, 0x22, 0xf2, 0x4b, 0xfa, 0xf3, 0x0a, + 0x32, 0x1b, 0xca, 0x20, 0x85, 0x19, 0x14, 0x0f, 0x38, 0x08, 0x7d, 0x03, 0x14, 0xfa, 0xa6, 0xf0, + 0xf7, 0xed, 0xab, 0xf0, 0xa5, 0xf3, 0x79, 0xf6, 0xbc, 0xf9, 0x8c, 0xf8, 0x84, 0xf4, 0xa9, 0xf2, + 0x6a, 0xf5, 0xc5, 0xfc, 0x45, 0x05, 0x62, 0x0b, 0xb1, 0x11, 0x97, 0x17, 0x53, 0x1a, 0xaa, 0x19, + 0xe8, 0x15, 0x24, 0x13, 0xfe, 0x10, 0xaf, 0x0e, 0xe6, 0x0d, 0x26, 0x10, 0xca, 0x14, 0xb6, 0x16, + 0x6a, 0x13, 0x54, 0x0d, 0xfe, 0x08, 0xcf, 0x04, 0xb3, 0x03, 0x3f, 0x03, 0xd9, 0x05, 0x28, 0x09, + 0x1c, 0x0c, 0xa6, 0x0f, 0x51, 0x10, 0xb8, 0x0e, 0x9e, 0x09, 0x8d, 0x02, 0x72, 0xfa, 0x18, 0xf6, + 0xa2, 0xf5, 0x7a, 0xf5, 0x35, 0xf6, 0x5d, 0xf8, 0xd0, 0xfb, 0xdd, 0xfd, 0xc8, 0xff, 0xff, 0x00, + 0x3f, 0x00, 0x5d, 0xfe, 0xb0, 0xfd, 0xc5, 0xfd, 0x01, 0x00, 0x7c, 0x00, 0x78, 0xfe, 0x11, 0xfc, + 0x6e, 0xfa, 0x55, 0xf8, 0x3b, 0xf5, 0xd8, 0xf3, 0x1a, 0xf5, 0x97, 0xfa, 0xb0, 0xfe, 0xe3, 0x02, + 0x4e, 0x10, 0x57, 0x20, 0x2e, 0x27, 0x39, 0x1f, 0x65, 0x11, 0x00, 0x07, 0x24, 0xfe, 0xbb, 0xf3, + 0xfd, 0xea, 0x36, 0xe8, 0x89, 0xe8, 0x2a, 0xeb, 0x52, 0xf1, 0x86, 0xf7, 0xbd, 0xfb, 0xc9, 0xfd, + 0x54, 0xfb, 0xdd, 0xfa, 0x96, 0xfd, 0xe2, 0xff, 0xee, 0x02, 0x1e, 0x05, 0xa9, 0x06, 0xfb, 0x06, + 0x1b, 0x03, 0xe7, 0xff, 0x14, 0xfd, 0x42, 0xfb, 0x2a, 0xf8, 0x0b, 0xf6, 0x2e, 0xf7, 0x9c, 0xfa, + 0x7e, 0xfb, 0xf8, 0xf8, 0x77, 0xf7, 0xed, 0xf4, 0x1c, 0xf2, 0x64, 0xf1, 0x47, 0xf0, 0x2b, 0xf0, + 0x03, 0xf5, 0x67, 0xfa, 0x4f, 0x00, 0x80, 0x03, 0x98, 0x04, 0x96, 0x04, 0x4f, 0x04, 0x5e, 0x05, + 0xb7, 0x06, 0xd6, 0x06, 0xfe, 0x05, 0xdb, 0x05, 0xad, 0x05, 0x88, 0x07, 0xb4, 0x07, 0xa4, 0x06, + 0xfa, 0x04, 0xa0, 0x03, 0x9f, 0x02, 0x1a, 0x01, 0x7e, 0x00, 0x68, 0x01, 0x52, 0x02, 0x0d, 0x02, + 0x40, 0x00, 0x86, 0xfc, 0xe7, 0xfa, 0xfc, 0xf9, 0xe4, 0xf6, 0xb0, 0xf5, 0x66, 0xf7, 0x7b, 0xf7, + 0x0b, 0xfa, 0x1a, 0x08, 0x15, 0x1d, 0x5b, 0x2d, 0x29, 0x2e, 0xc8, 0x24, 0x08, 0x1a, 0x8b, 0x14, + 0x43, 0x0d, 0x40, 0x03, 0xff, 0xfd, 0x2f, 0xfb, 0x70, 0xfb, 0x73, 0xfc, 0x75, 0xff, 0xc6, 0x01, + 0x09, 0x00, 0x19, 0xfa, 0xad, 0xf2, 0x72, 0xf1, 0xb7, 0xf3, 0x04, 0xf5, 0x13, 0xf7, 0xcf, 0xf7, + 0xe2, 0xf7, 0x7e, 0xf5, 0x11, 0xf3, 0xaf, 0xf1, 0x4e, 0xf1, 0x3c, 0xf1, 0x19, 0xef, 0xee, 0xed, + 0xa3, 0xee, 0x3d, 0xf1, 0x96, 0xf2, 0x4b, 0xf2, 0x5c, 0xef, 0xb8, 0xed, 0x10, 0xef, 0x0b, 0xf5, + 0x52, 0xfc, 0xf8, 0x00, 0x78, 0x01, 0x4d, 0x02, 0x82, 0x02, 0x61, 0x01, 0x2e, 0xfe, 0xcb, 0xf9, + 0x86, 0xf7, 0x04, 0xf6, 0x34, 0xf6, 0xd2, 0xf7, 0xa1, 0xf9, 0x43, 0xfb, 0x52, 0xfd, 0x8f, 0xff, + 0xdf, 0x00, 0xfa, 0x00, 0x2c, 0x01, 0x15, 0x05, 0x1f, 0x06, 0xc9, 0x06, 0x4f, 0x07, 0xd6, 0x03, + 0x08, 0x00, 0x8a, 0xfc, 0xcc, 0xfa, 0x4d, 0xfc, 0x0f, 0xff, 0xb3, 0x01, 0x05, 0x03, 0xbf, 0x06, + 0xe9, 0x0d, 0x7f, 0x12, 0x98, 0x1b, 0x99, 0x2b, 0xb5, 0x37, 0x81, 0x3a, 0x3b, 0x30, 0x2e, 0x23, + 0x5f, 0x1b, 0x1b, 0x11, 0xc1, 0x03, 0x3d, 0xf9, 0x2d, 0xf2, 0x99, 0xee, 0x69, 0xed, 0x60, 0xf3, + 0xba, 0xf9, 0x0e, 0xfa, 0x20, 0xf7, 0x4e, 0xf5, 0x6f, 0xf8, 0x1f, 0xfe, 0x77, 0x01, 0x11, 0x04, + 0xb7, 0x04, 0x40, 0x05, 0xf2, 0x05, 0x94, 0x05, 0xf5, 0x05, 0x96, 0x06, 0xc0, 0x03, 0xff, 0x01, + 0x08, 0x03, 0xa1, 0x05, 0x81, 0x08, 0xd8, 0x06, 0xbb, 0x04, 0xb3, 0x01, 0x66, 0xfc, 0x6d, 0xfa, + 0xda, 0xf8, 0xac, 0xf9, 0xf4, 0xfa, 0x06, 0xfa, 0xb7, 0xfb, 0xa8, 0xfc, 0xf1, 0xfb, 0x2c, 0xfd, + 0xdb, 0xfc, 0xbf, 0xfb, 0x9d, 0xf9, 0x8f, 0xf8, 0xc9, 0xf8, 0xea, 0xf7, 0x6b, 0xf9, 0x55, 0xfa, + 0x66, 0xf6, 0x27, 0xf5, 0x7a, 0xf4, 0xe0, 0xf5, 0x74, 0xfa, 0xa1, 0xfa, 0x24, 0xfa, 0xe5, 0xfb, + 0xef, 0xfc, 0x4b, 0xff, 0x84, 0xfe, 0xe4, 0xf9, 0x59, 0xf7, 0x33, 0xf5, 0xdd, 0xf4, 0xa2, 0xf6, + 0xe3, 0xf9, 0xa3, 0xff, 0x60, 0x01, 0x31, 0x08, 0x21, 0x1b, 0xa0, 0x29, 0x87, 0x2e, 0xaf, 0x27, + 0x56, 0x1a, 0x82, 0x11, 0x2b, 0x08, 0x8b, 0xfe, 0x73, 0xf8, 0xf5, 0xf4, 0x1e, 0xf2, 0x4d, 0xf1, + 0xc0, 0xf1, 0x54, 0xf2, 0x70, 0xf2, 0x97, 0xf3, 0x06, 0xf5, 0x01, 0xf7, 0xca, 0xfc, 0x6f, 0x02, + 0x66, 0x09, 0x2e, 0x11, 0xf6, 0x13, 0x7d, 0x11, 0x40, 0x0d, 0xb9, 0x0a, 0xc8, 0x09, 0xf0, 0x06, + 0x1b, 0x03, 0xb6, 0x00, 0xf8, 0xff, 0x10, 0xff, 0xbe, 0xfb, 0xbc, 0xf8, 0xcc, 0xf5, 0x73, 0xf4, + 0x2e, 0xf5, 0x7a, 0xf8, 0xbf, 0xfc, 0xce, 0xfe, 0x0e, 0x01, 0xd2, 0x02, 0x44, 0x02, 0xd4, 0xff, + 0x03, 0xfb, 0x93, 0xf3, 0x17, 0xf0, 0x73, 0xef, 0x4d, 0xf0, 0x70, 0xf2, 0x37, 0xf4, 0xde, 0xf3, + 0x13, 0xf3, 0x5d, 0xf5, 0x1a, 0xf8, 0xa8, 0xfa, 0x6f, 0xfb, 0xd6, 0xfc, 0xf0, 0xfc, 0x19, 0xfd, + 0x66, 0xfe, 0xce, 0xfc, 0xc9, 0xf9, 0x7d, 0xf7, 0xbd, 0xf4, 0x87, 0xf0, 0xd8, 0xed, 0xd0, 0xed, + 0xbb, 0xef, 0x67, 0xf2, 0xac, 0xf3, 0x98, 0xf0, 0xff, 0xf4, 0x91, 0x05, 0xf5, 0x16, 0x77, 0x20, + 0x11, 0x1a, 0xc3, 0x0c, 0xbb, 0x01, 0xde, 0xfb, 0x91, 0xf5, 0xd7, 0xee, 0x37, 0xed, 0xb6, 0xea, + 0x2b, 0xec, 0x4c, 0xf4, 0x14, 0xfd, 0x90, 0x01, 0xb2, 0x00, 0x34, 0xfe, 0xb1, 0xfe, 0x68, 0x03, + 0x55, 0x0a, 0x5a, 0x0f, 0x84, 0x13, 0x6f, 0x15, 0xfd, 0x14, 0x33, 0x13, 0xec, 0x10, 0xef, 0x0d, + 0x28, 0x0b, 0x58, 0x08, 0xc6, 0x05, 0xdb, 0x04, 0x10, 0x07, 0x86, 0x08, 0x44, 0x05, 0x8c, 0x02, + 0xfc, 0xfe, 0xd2, 0xf9, 0x43, 0xf7, 0xb3, 0xfa, 0xea, 0xff, 0x13, 0x04, 0x2d, 0x08, 0x9f, 0x09, + 0xa2, 0x0c, 0x26, 0x0f, 0xb3, 0x0d, 0xae, 0x0c, 0xaf, 0x0b, 0x59, 0x0a, 0x5a, 0x0a, 0x22, 0x0b, + 0x1d, 0x0c, 0x2f, 0x0a, 0x70, 0x07, 0x3d, 0x03, 0x21, 0x00, 0xf4, 0x00, 0xc3, 0x01, 0x30, 0x02, + 0x43, 0x03, 0xa5, 0x04, 0xbb, 0x05, 0xf6, 0x02, 0x75, 0xfe, 0x8b, 0xfb, 0xf5, 0xf6, 0xb0, 0xf5, + 0xb3, 0xf7, 0x30, 0xf8, 0x3a, 0xf8, 0x66, 0xfc, 0x2d, 0xff, 0x87, 0x06, 0x91, 0x17, 0x95, 0x24, + 0xb1, 0x2b, 0x66, 0x28, 0x7f, 0x20, 0xf9, 0x18, 0x04, 0x14, 0x7a, 0x0a, 0x0a, 0x02, 0x00, 0xfe, + 0x27, 0xf8, 0xf9, 0xf3, 0x18, 0xf3, 0x1c, 0xf3, 0xfa, 0xef, 0xc2, 0xed, 0x88, 0xea, 0xc1, 0xe7, + 0x43, 0xeb, 0xbb, 0xef, 0x40, 0xf5, 0x46, 0xf9, 0x30, 0xfb, 0x02, 0xfc, 0x55, 0xfb, 0x48, 0xfb, + 0x91, 0xfc, 0x30, 0xfa, 0x6d, 0xf5, 0x2d, 0xf2, 0x7e, 0xf2, 0x04, 0xf6, 0x4a, 0xf8, 0x5c, 0xf7, + 0x64, 0xf6, 0x7d, 0xf6, 0xee, 0xf9, 0x16, 0xff, 0x66, 0x03, 0x17, 0x06, 0xd3, 0x05, 0x8d, 0x05, + 0x50, 0x05, 0x5c, 0x05, 0xb0, 0x05, 0x3b, 0x03, 0x98, 0x01, 0x47, 0x01, 0x52, 0x00, 0xf7, 0xfd, + 0x62, 0xfc, 0xe9, 0xfc, 0xcd, 0xfd, 0x43, 0xfd, 0x82, 0xfb, 0xbb, 0xfb, 0xce, 0xfe, 0x9d, 0x00, + 0xc0, 0xff, 0x49, 0xfe, 0xb7, 0xfc, 0xa2, 0xf9, 0xa2, 0xf7, 0x67, 0xf6, 0xa7, 0xf5, 0x36, 0xf4, + 0xcf, 0xf2, 0x28, 0xf4, 0x27, 0xf7, 0x6b, 0xfa, 0x1a, 0xfd, 0x5f, 0xfd, 0xfa, 0x02, 0x8d, 0x11, + 0xf8, 0x1e, 0x93, 0x25, 0x70, 0x20, 0xed, 0x13, 0x6d, 0x07, 0x16, 0xff, 0xeb, 0xf7, 0x84, 0xf0, + 0x60, 0xed, 0xa0, 0xeb, 0xb0, 0xeb, 0x17, 0xf0, 0x16, 0xf3, 0xc0, 0xf3, 0x05, 0xf4, 0x3e, 0xf2, + 0x78, 0xf0, 0x78, 0xf2, 0x4f, 0xf6, 0x0d, 0xfa, 0x94, 0xfe, 0x2e, 0x02, 0x4a, 0x04, 0x11, 0x04, + 0x93, 0x02, 0xce, 0x02, 0x8f, 0x03, 0x16, 0x01, 0x84, 0x00, 0x1f, 0x01, 0xc4, 0x02, 0x0e, 0x03, + 0x40, 0xfe, 0xeb, 0xf9, 0x24, 0xf8, 0x57, 0xf6, 0x8a, 0xf5, 0x93, 0xf6, 0x0a, 0xf8, 0x1b, 0xf8, + 0xe2, 0xf8, 0xaf, 0xf9, 0x31, 0xfb, 0xc6, 0xfb, 0xa8, 0xf9, 0x9f, 0xf8, 0x61, 0xf7, 0x09, 0xf8, + 0x93, 0xf8, 0x57, 0xf9, 0xa1, 0xfa, 0xa6, 0xfb, 0x6d, 0xfb, 0xc6, 0xfb, 0x78, 0xfd, 0x5f, 0xff, + 0x94, 0x02, 0xae, 0x05, 0x1b, 0x08, 0xf1, 0x09, 0xa6, 0x09, 0xc9, 0x07, 0xdb, 0x05, 0xcb, 0x05, + 0x4f, 0x04, 0x1a, 0x04, 0x70, 0x05, 0xb2, 0x07, 0x21, 0x0b, 0x53, 0x0e, 0x79, 0x0f, 0xa3, 0x15, + 0x04, 0x26, 0xb1, 0x35, 0x0d, 0x3b, 0xe9, 0x33, 0xf8, 0x2a, 0x75, 0x23, 0xb6, 0x1b, 0x3b, 0x11, + 0x0e, 0x06, 0x01, 0xff, 0x36, 0xfb, 0x32, 0xf7, 0xea, 0xf6, 0x1b, 0xf8, 0x7c, 0xf6, 0x6f, 0xf5, + 0x22, 0xf4, 0x83, 0xf6, 0x0a, 0xfc, 0xc7, 0x01, 0xd0, 0x06, 0x3e, 0x0b, 0xaa, 0x0e, 0x6c, 0x11, + 0xff, 0x12, 0x04, 0x12, 0x1e, 0x10, 0x33, 0x0d, 0x45, 0x08, 0x1b, 0x04, 0xb8, 0x02, 0x80, 0x01, + 0xd5, 0x00, 0xe9, 0xfe, 0x39, 0xfb, 0xeb, 0xf9, 0x58, 0xfb, 0xc7, 0xfb, 0x65, 0xfb, 0xd4, 0xf9, + 0xb2, 0xf5, 0x08, 0xf3, 0xac, 0xf2, 0x95, 0xf3, 0xa2, 0xf3, 0x44, 0xf3, 0x50, 0xf4, 0x93, 0xf4, + 0xd3, 0xf5, 0xc0, 0xf5, 0xe1, 0xf4, 0x3b, 0xf4, 0xd6, 0xf3, 0xe5, 0xf2, 0x09, 0xf2, 0x00, 0xf5, + 0xa5, 0xf7, 0xb6, 0xf7, 0x75, 0xf8, 0x59, 0xf8, 0x9f, 0xf6, 0x15, 0xf4, 0x83, 0xf0, 0xdb, 0xed, + 0x0c, 0xec, 0xf7, 0xea, 0xd2, 0xe9, 0xc8, 0xe9, 0x37, 0xed, 0x09, 0xf1, 0xc3, 0xf5, 0x5c, 0xfb, + 0x34, 0x08, 0xe8, 0x1b, 0xf5, 0x26, 0xab, 0x26, 0xe1, 0x1d, 0x79, 0x13, 0xd7, 0x0e, 0x48, 0x08, + 0xf2, 0x01, 0x9d, 0xff, 0x15, 0xff, 0x55, 0xfc, 0x98, 0xfa, 0x89, 0xfc, 0x52, 0xfd, 0x1b, 0xfd, + 0x24, 0xfb, 0x85, 0xfa, 0xe0, 0xfe, 0x10, 0x06, 0x05, 0x0b, 0xd8, 0x0e, 0x9a, 0x10, 0x88, 0x10, + 0x49, 0x0f, 0x48, 0x0c, 0x35, 0x09, 0xa9, 0x07, 0x31, 0x06, 0xa3, 0x01, 0xe7, 0xfc, 0x1c, 0xf8, + 0x99, 0xf2, 0x52, 0xed, 0x67, 0xe9, 0x75, 0xe6, 0xad, 0xe5, 0x13, 0xe9, 0xed, 0xec, 0x6e, 0xf1, + 0xf6, 0xf4, 0x85, 0xf5, 0x82, 0xf6, 0x1f, 0xf8, 0x28, 0xf9, 0x50, 0xfa, 0x44, 0xfc, 0xaf, 0xff, + 0x3e, 0x01, 0x3c, 0x02, 0xee, 0xff, 0xdb, 0xfc, 0x86, 0xfb, 0xcf, 0xf9, 0x2f, 0xf8, 0xe9, 0xf6, + 0x65, 0xf9, 0x97, 0xfd, 0x14, 0xff, 0x50, 0xff, 0xbc, 0xff, 0xc3, 0xfe, 0xe1, 0xfd, 0x4d, 0xfb, + 0x91, 0xf9, 0xd9, 0xf8, 0x73, 0xf9, 0x4f, 0xfd, 0xa6, 0xfe, 0x2c, 0xff, 0xc4, 0x01, 0x9f, 0x01, + 0x48, 0x06, 0xb0, 0x14, 0xa0, 0x23, 0xda, 0x2b, 0xf7, 0x26, 0x5b, 0x1d, 0xf6, 0x14, 0xb4, 0x11, + 0x52, 0x0c, 0x49, 0x04, 0x6c, 0xfe, 0xfd, 0xf9, 0xa4, 0xf5, 0x40, 0xf4, 0x9b, 0xf4, 0xf6, 0xf0, + 0x75, 0xee, 0x13, 0xea, 0xe6, 0xe9, 0xec, 0xf0, 0x5c, 0xf9, 0xa3, 0x00, 0xdd, 0x04, 0x96, 0x07, + 0xb2, 0x08, 0x8a, 0x0a, 0x29, 0x0c, 0xee, 0x0c, 0xa3, 0x0d, 0x96, 0x0d, 0x79, 0x0b, 0x38, 0x0a, + 0xe7, 0x09, 0xfd, 0x07, 0xd0, 0x05, 0xee, 0x02, 0xbd, 0x01, 0x51, 0x03, 0x35, 0x06, 0x2c, 0x07, + 0x37, 0x08, 0xa0, 0x08, 0x67, 0x07, 0x35, 0x06, 0xb6, 0x06, 0x60, 0x07, 0xee, 0x05, 0x1a, 0x05, + 0x81, 0x05, 0xed, 0x05, 0x52, 0x03, 0xb8, 0x00, 0xa2, 0xfd, 0x9a, 0xfc, 0xb8, 0xfc, 0xc9, 0xfb, + 0x2f, 0xfd, 0x8f, 0xff, 0x3e, 0x01, 0x3c, 0x01, 0x91, 0x01, 0x52, 0x01, 0x0c, 0x00, 0x27, 0xff, + 0x81, 0xff, 0x86, 0xff, 0xca, 0xff, 0x63, 0xff, 0x19, 0xfe, 0x6c, 0xfd, 0x03, 0xfe, 0x52, 0x00, + 0x0d, 0x01, 0x92, 0x09, 0xcc, 0x19, 0x29, 0x26, 0xe0, 0x28, 0x2c, 0x1e, 0xa8, 0x10, 0xfa, 0x08, + 0x4d, 0x04, 0x8a, 0xfc, 0x9d, 0xf8, 0x2a, 0xf7, 0x00, 0xf4, 0xbe, 0xf2, 0x1e, 0xf3, 0x0e, 0xf1, + 0x04, 0xec, 0xd9, 0xe6, 0xe3, 0xe2, 0x13, 0xe5, 0x1e, 0xed, 0xc0, 0xf2, 0xdb, 0xf6, 0xd0, 0xfa, + 0x22, 0xfc, 0xcc, 0xfb, 0xc7, 0xfc, 0x2f, 0xfd, 0x0c, 0xff, 0x12, 0x02, 0xf4, 0x01, 0xab, 0xfe, + 0x13, 0xfc, 0x54, 0xf9, 0xaf, 0xf3, 0x11, 0xee, 0x78, 0xea, 0xc7, 0xea, 0x02, 0xef, 0x67, 0xf3, + 0xfa, 0xf5, 0x65, 0xf8, 0xed, 0xf9, 0xf0, 0xf7, 0x30, 0xf5, 0x7b, 0xf6, 0x1f, 0xf8, 0x49, 0xfa, + 0xab, 0xfd, 0x62, 0xff, 0xb1, 0x02, 0x81, 0x04, 0x52, 0x03, 0x4d, 0xff, 0x6f, 0xfc, 0x6e, 0xfb, + 0x11, 0xfb, 0xd6, 0xfd, 0x17, 0x02, 0x68, 0x03, 0xeb, 0x01, 0x1d, 0x00, 0xe8, 0xfd, 0xb4, 0xfc, + 0xd8, 0xfa, 0x62, 0xfa, 0x35, 0xfb, 0x65, 0xfc, 0x4d, 0x00, 0x8b, 0x01, 0x20, 0x01, 0x0c, 0x03, + 0x2f, 0x03, 0x0e, 0x04, 0x9d, 0x0e, 0xee, 0x1e, 0xac, 0x2c, 0x1b, 0x2d, 0x4b, 0x22, 0x39, 0x16, + 0x6e, 0x0f, 0x6a, 0x0b, 0x14, 0x03, 0x70, 0xfd, 0x92, 0xfb, 0x13, 0xf9, 0x15, 0xf8, 0xc1, 0xf9, + 0xea, 0xf8, 0x75, 0xf6, 0xff, 0xf3, 0xcd, 0xf1, 0x43, 0xf6, 0xdd, 0xfd, 0xb0, 0x02, 0xf0, 0x05, + 0x34, 0x08, 0x68, 0x08, 0x92, 0x08, 0xe0, 0x08, 0x88, 0x07, 0xf9, 0x07, 0xbe, 0x07, 0xf3, 0x05, + 0x2f, 0x02, 0x6a, 0x00, 0x20, 0xfe, 0x83, 0xf9, 0x94, 0xf4, 0x7f, 0xef, 0x55, 0xee, 0xbb, 0xf0, + 0x5f, 0xf1, 0x1f, 0xf1, 0xb0, 0xf2, 0x11, 0xf2, 0xeb, 0xf1, 0x37, 0xf2, 0xe7, 0xf3, 0x9e, 0xf5, + 0xa1, 0xf6, 0xe9, 0xf7, 0x43, 0xfa, 0x83, 0xfd, 0x37, 0xfe, 0xc2, 0xfb, 0xc8, 0xf9, 0xf4, 0xfa, + 0xc9, 0xfc, 0x07, 0x00, 0xf6, 0x02, 0x83, 0x05, 0xfc, 0x05, 0x81, 0x05, 0xa3, 0x05, 0x4f, 0x03, + 0x88, 0x01, 0x2a, 0xff, 0x9e, 0xfb, 0x94, 0xf9, 0xa0, 0xf8, 0xe8, 0xf8, 0x28, 0xfb, 0x22, 0xfd, + 0xcd, 0x00, 0x28, 0x04, 0x63, 0x09, 0xf7, 0x17, 0x1d, 0x28, 0xfa, 0x32, 0xc3, 0x2f, 0xda, 0x24, + 0x84, 0x1c, 0x93, 0x19, 0x7f, 0x14, 0x3f, 0x0f, 0x60, 0x0d, 0x58, 0x0a, 0x78, 0x08, 0x63, 0x05, + 0x74, 0x03, 0x8a, 0xff, 0x3b, 0xfb, 0xa7, 0xf4, 0xdb, 0xf3, 0xf5, 0xf9, 0x2b, 0x00, 0xb3, 0x04, + 0x3c, 0x06, 0x31, 0x06, 0x29, 0x05, 0x66, 0x05, 0xea, 0x04, 0x24, 0x04, 0xce, 0x05, 0x12, 0x07, + 0x66, 0x04, 0xf3, 0x01, 0xf4, 0xff, 0x2b, 0xfc, 0x67, 0xf8, 0x9b, 0xf4, 0xfa, 0xf3, 0xd8, 0xf6, + 0xec, 0xfa, 0xd8, 0xfd, 0x9e, 0xfe, 0x5a, 0xfd, 0x31, 0xfa, 0x37, 0xf6, 0x00, 0xf6, 0x0d, 0xf7, + 0x73, 0xf7, 0x2b, 0xf9, 0xbe, 0xfa, 0xd6, 0xfc, 0x5a, 0xfc, 0xcf, 0xf9, 0x15, 0xf5, 0x8d, 0xf1, + 0xc5, 0xf1, 0x69, 0xf2, 0xcb, 0xf2, 0xc3, 0xf4, 0xf3, 0xf5, 0x92, 0xf4, 0x88, 0xf2, 0xe8, 0xef, + 0x24, 0xed, 0xd9, 0xec, 0xbd, 0xed, 0x83, 0xef, 0x55, 0xf1, 0xb1, 0xf2, 0x11, 0xf3, 0xba, 0xf3, + 0x41, 0xf7, 0x43, 0xfb, 0x20, 0xff, 0xb6, 0x05, 0x22, 0x14, 0xcd, 0x23, 0x7d, 0x2d, 0xca, 0x29, + 0xc0, 0x1f, 0xab, 0x17, 0x94, 0x12, 0x54, 0x0b, 0x96, 0x02, 0x14, 0xfe, 0xb6, 0xf9, 0x60, 0xf4, + 0x7e, 0xef, 0x58, 0xec, 0xfe, 0xe9, 0xa5, 0xe7, 0x84, 0xe4, 0x2b, 0xe5, 0x63, 0xec, 0x09, 0xf5, + 0x88, 0xfb, 0xb0, 0x00, 0x52, 0x05, 0x24, 0x08, 0x02, 0x0a, 0x04, 0x0c, 0x24, 0x0e, 0xfa, 0x11, + 0x1e, 0x15, 0x70, 0x13, 0xa7, 0x10, 0xaa, 0x0d, 0xcb, 0x08, 0x61, 0x03, 0x06, 0xfc, 0xab, 0xf6, + 0x79, 0xf6, 0xc2, 0xf9, 0xd9, 0xfd, 0xee, 0xff, 0x39, 0xff, 0x65, 0xff, 0x54, 0xfe, 0xc5, 0xfd, + 0x14, 0xff, 0x7c, 0xfe, 0x63, 0xff, 0xff, 0x00, 0xcf, 0x03, 0x34, 0x04, 0x64, 0x03, 0xeb, 0x00, + 0x5e, 0xff, 0x83, 0xff, 0xfd, 0xfe, 0x6a, 0xff, 0xcf, 0x00, 0xaa, 0x00, 0x7e, 0xff, 0x7d, 0x00, + 0xab, 0xff, 0x0f, 0xff, 0xe1, 0xfd, 0xb9, 0xfb, 0x7a, 0xf9, 0x31, 0xf6, 0x38, 0xf5, 0x69, 0xf5, + 0x0f, 0xf7, 0x5b, 0xfa, 0x83, 0xfe, 0xeb, 0xff, 0x03, 0x06, 0x03, 0x12, 0x6c, 0x1c, 0x22, 0x1e, + 0xd9, 0x16, 0xbd, 0x0d, 0x9f, 0x06, 0x86, 0x05, 0xb5, 0x01, 0x1f, 0xff, 0x8a, 0xfc, 0xf6, 0xf7, + 0xca, 0xf4, 0x65, 0xf3, 0x60, 0xf2, 0x7c, 0xf0, 0x74, 0xed, 0xb5, 0xeb, 0x3f, 0xf0, 0xef, 0xf8, + 0x1c, 0x00, 0xe1, 0x03, 0xb2, 0x06, 0xb3, 0x08, 0xed, 0x09, 0x43, 0x0b, 0xd7, 0x0b, 0xbf, 0x0c, + 0xa8, 0x0e, 0x74, 0x0e, 0x65, 0x0c, 0x88, 0x0a, 0x3d, 0x08, 0x95, 0x02, 0x41, 0xfc, 0xef, 0xf7, + 0x88, 0xf5, 0x48, 0xf7, 0xab, 0xfa, 0x13, 0xfd, 0x62, 0xfe, 0x66, 0xfd, 0xc7, 0xfb, 0x46, 0xfa, + 0xd7, 0xfb, 0x38, 0xfe, 0xda, 0xff, 0x85, 0x02, 0xec, 0x03, 0xc2, 0x04, 0xc0, 0x04, 0xc6, 0x02, + 0xae, 0xff, 0x55, 0xfe, 0x9a, 0xfd, 0xdb, 0xfd, 0x27, 0xff, 0xa5, 0x01, 0x32, 0x02, 0x99, 0x00, + 0xf3, 0xff, 0x65, 0xff, 0x95, 0xff, 0xbb, 0xfe, 0x85, 0xfd, 0x71, 0xfd, 0x93, 0xfd, 0x6a, 0xff, + 0x93, 0xff, 0xfb, 0xff, 0x37, 0x02, 0xea, 0x04, 0xd7, 0x07, 0xc7, 0x13, 0xaf, 0x22, 0x3c, 0x2c, + 0x8c, 0x2b, 0x24, 0x22, 0x22, 0x18, 0x79, 0x11, 0x07, 0x0e, 0x9c, 0x06, 0xbb, 0x02, 0x82, 0x01, + 0x59, 0xff, 0x61, 0xfd, 0x3d, 0xfb, 0xa4, 0xf5, 0x27, 0xf0, 0x19, 0xeb, 0xa5, 0xe7, 0xfb, 0xea, + 0x75, 0xf0, 0xf4, 0xf4, 0x49, 0xf7, 0x51, 0xf7, 0xbe, 0xf7, 0xe3, 0xf7, 0xba, 0xf8, 0xaa, 0xf8, + 0xd6, 0xf9, 0x6a, 0xfb, 0x16, 0xfc, 0x3f, 0xfb, 0x43, 0xfb, 0xe0, 0xf9, 0x75, 0xf4, 0x37, 0xed, + 0x7e, 0xe7, 0x09, 0xe7, 0x29, 0xe8, 0x83, 0xea, 0x5b, 0xec, 0xa3, 0xef, 0x2f, 0xf1, 0xae, 0xef, + 0x9f, 0xee, 0xca, 0xef, 0xc7, 0xf1, 0xdd, 0xf2, 0xfe, 0xf5, 0x38, 0xfa, 0x04, 0xfe, 0xad, 0xfe, + 0xde, 0xfe, 0x1f, 0xfe, 0x7a, 0xff, 0xee, 0x00, 0xb3, 0x01, 0xc9, 0x03, 0x12, 0x05, 0x82, 0x04, + 0x63, 0x02, 0x42, 0x00, 0xb5, 0xfd, 0xb6, 0xfb, 0xba, 0xfa, 0xbc, 0xfa, 0x3c, 0xfb, 0x29, 0xfc, + 0xb8, 0xfd, 0xbb, 0xfe, 0x60, 0x00, 0x4c, 0x03, 0x4a, 0x07, 0x6d, 0x0a, 0x8d, 0x15, 0x3e, 0x24, + 0x99, 0x30, 0x58, 0x33, 0xbf, 0x2c, 0x7e, 0x24, 0xc9, 0x1f, 0xe4, 0x1c, 0xb1, 0x16, 0x4e, 0x11, + 0x3e, 0x0c, 0xf7, 0x08, 0xca, 0x04, 0xd6, 0x02, 0x72, 0xff, 0xf2, 0xfb, 0xeb, 0xf7, 0xfd, 0xf5, + 0xcb, 0xf8, 0xd0, 0xfe, 0x32, 0x04, 0xb9, 0x04, 0x84, 0x05, 0xba, 0x04, 0x63, 0x03, 0xe2, 0x02, + 0x1b, 0x02, 0x3d, 0x02, 0x96, 0x04, 0xde, 0x03, 0x9f, 0x01, 0xf8, 0x01, 0xee, 0x00, 0xff, 0xfc, + 0xff, 0xf7, 0x97, 0xf3, 0x8a, 0xf1, 0xde, 0xf1, 0x29, 0xf2, 0xad, 0xf1, 0x27, 0xf2, 0x0e, 0xf1, + 0x1f, 0xed, 0x8e, 0xea, 0xa4, 0xeb, 0xb2, 0xec, 0xaf, 0xed, 0x70, 0xf0, 0x21, 0xf3, 0xb5, 0xf3, + 0xe4, 0xf1, 0x14, 0xee, 0x87, 0xeb, 0x51, 0xed, 0x72, 0xf0, 0xf9, 0xf2, 0x97, 0xf7, 0x0c, 0xfc, + 0xda, 0xfc, 0xa2, 0xfd, 0x96, 0xfe, 0xcf, 0xfd, 0x91, 0xfd, 0xef, 0xfc, 0x90, 0xfc, 0x10, 0xfe, + 0x31, 0xff, 0xd9, 0x00, 0x17, 0x03, 0x29, 0x05, 0xad, 0x08, 0x45, 0x0d, 0x88, 0x11, 0xdf, 0x1c, + 0x78, 0x2c, 0xb6, 0x36, 0x3c, 0x35, 0x2b, 0x2a, 0xee, 0x1f, 0x20, 0x1a, 0xe0, 0x16, 0x99, 0x0e, + 0x94, 0x09, 0xca, 0x05, 0x71, 0x02, 0x87, 0xfe, 0xba, 0xfb, 0x84, 0xf7, 0xe0, 0xf1, 0x46, 0xed, + 0x0d, 0xeb, 0x6d, 0xf1, 0xac, 0xfa, 0xa9, 0x00, 0xba, 0x02, 0x2e, 0x04, 0x7c, 0x05, 0x65, 0x06, + 0x9e, 0x06, 0x69, 0x07, 0x26, 0x0a, 0x39, 0x0d, 0x7e, 0x0c, 0x2a, 0x09, 0xf6, 0x07, 0xb5, 0x06, + 0xbb, 0x02, 0x76, 0xfc, 0x35, 0xf7, 0xeb, 0xf5, 0x88, 0xf8, 0x7a, 0xfa, 0xca, 0xf9, 0x4f, 0xf8, + 0x6e, 0xf6, 0xac, 0xf1, 0x7e, 0xed, 0x40, 0xee, 0xdd, 0xee, 0x4b, 0xf1, 0xa6, 0xf4, 0xf4, 0xf7, + 0xae, 0xfa, 0xa8, 0xfa, 0x7b, 0xf9, 0xc8, 0xf9, 0xbf, 0xfb, 0xe1, 0xfb, 0xa9, 0xfb, 0xf2, 0xfc, + 0x21, 0xff, 0x8f, 0xfe, 0x11, 0xfd, 0xb1, 0xfa, 0xe5, 0xf7, 0xea, 0xf5, 0x8d, 0xf2, 0x9f, 0xef, + 0x6b, 0xed, 0x89, 0xec, 0xe7, 0xeb, 0xd0, 0xea, 0xa2, 0xeb, 0x04, 0xee, 0x8b, 0xf0, 0xc9, 0xf5, + 0x53, 0x02, 0xfd, 0x12, 0x82, 0x1f, 0xc5, 0x1d, 0x97, 0x17, 0x05, 0x11, 0x7b, 0x0f, 0xe5, 0x0d, + 0x03, 0x0a, 0x32, 0x08, 0xe2, 0x04, 0x3f, 0x03, 0x28, 0xff, 0x33, 0xfc, 0xf0, 0xf8, 0x3f, 0xf3, + 0xdd, 0xed, 0xad, 0xed, 0x6b, 0xf3, 0x0e, 0xfc, 0x4c, 0x03, 0x42, 0x07, 0xd6, 0x09, 0xc5, 0x0a, + 0xfa, 0x09, 0x2d, 0x09, 0x0e, 0x0a, 0x7f, 0x0d, 0x78, 0x10, 0x4a, 0x0f, 0x9f, 0x0d, 0xac, 0x0c, + 0x40, 0x0b, 0x5a, 0x07, 0xf4, 0xff, 0xb0, 0xf9, 0x92, 0xf7, 0x46, 0xf8, 0xf1, 0xf8, 0x0c, 0xf9, + 0x6e, 0xf9, 0x3e, 0xf9, 0x33, 0xf8, 0x63, 0xf8, 0xbd, 0xfa, 0xa6, 0xfc, 0x30, 0xfe, 0xb7, 0xff, + 0x03, 0x02, 0x6c, 0x03, 0xe1, 0x04, 0x31, 0x03, 0xa3, 0x03, 0x7d, 0x06, 0x03, 0x09, 0xe4, 0x0a, + 0x32, 0x0c, 0xb0, 0x0c, 0x19, 0x0a, 0x3c, 0x08, 0x48, 0x06, 0x36, 0x04, 0x62, 0x03, 0x55, 0x01, + 0xb1, 0xfe, 0xa3, 0xfc, 0x9b, 0xfc, 0xb6, 0xfc, 0xef, 0xfd, 0xfc, 0xff, 0x0b, 0x02, 0x49, 0x02, + 0xa0, 0x06, 0x84, 0x13, 0x0f, 0x1e, 0xde, 0x25, 0xf7, 0x1f, 0xf8, 0x15, 0xe7, 0x0e, 0x28, 0x0c, + 0xd6, 0x04, 0x5f, 0xfd, 0x1f, 0xfa, 0x7a, 0xf7, 0x70, 0xf3, 0xb4, 0xef, 0xa6, 0xed, 0xdf, 0xe9, + 0x13, 0xe5, 0x8b, 0xde, 0x26, 0xdd, 0xf2, 0xe3, 0x3a, 0xed, 0x72, 0xf3, 0x3b, 0xf7, 0xfc, 0xf9, + 0xf9, 0xfc, 0x20, 0xff, 0x9a, 0xff, 0x81, 0xfe, 0xbf, 0x00, 0x2d, 0x02, 0xf8, 0xff, 0x66, 0xff, + 0x20, 0xff, 0x30, 0xfe, 0x3c, 0xfb, 0x64, 0xf8, 0xd4, 0xf6, 0x2f, 0xf7, 0xb0, 0xf7, 0x98, 0xf6, + 0x26, 0xf7, 0xae, 0xf7, 0x8e, 0xf5, 0xa5, 0xf4, 0x60, 0xf7, 0x53, 0xfb, 0xc2, 0xfe, 0xf4, 0x02, + 0xee, 0x03, 0x2a, 0x06, 0x8f, 0x07, 0x32, 0x06, 0xd1, 0x03, 0xc3, 0x03, 0xd4, 0x05, 0xf6, 0x06, + 0x72, 0x09, 0xbf, 0x08, 0x9b, 0x06, 0xfa, 0x04, 0xce, 0x01, 0x70, 0xff, 0xdd, 0xfe, 0xf3, 0xfd, + 0xa4, 0xfc, 0x90, 0xfc, 0x4d, 0xfd, 0xa6, 0xfe, 0x70, 0xff, 0xf4, 0xff, 0x7a, 0x00, 0xa4, 0x03, + 0x71, 0x05, 0x49, 0x0b, 0x1f, 0x18, 0x2a, 0x26, 0x52, 0x2e, 0x12, 0x2b, 0xcc, 0x23, 0x79, 0x1b, + 0xec, 0x16, 0x3e, 0x10, 0x8b, 0x0a, 0x65, 0x07, 0xd7, 0x04, 0x5c, 0x01, 0x47, 0xfe, 0x3e, 0xfc, + 0x37, 0xf9, 0xf8, 0xf3, 0x5e, 0xeb, 0xa6, 0xe7, 0x34, 0xeb, 0x9d, 0xf0, 0x32, 0xf3, 0xe3, 0xf3, + 0xfb, 0xf3, 0xd1, 0xf4, 0xa0, 0xf4, 0x2b, 0xf4, 0x28, 0xf5, 0x8e, 0xf7, 0xf2, 0xf7, 0x9b, 0xf6, + 0x11, 0xf7, 0x71, 0xf8, 0xa7, 0xf7, 0xce, 0xf4, 0xfb, 0xf0, 0x03, 0xf0, 0x97, 0xf2, 0x2e, 0xf4, + 0xc1, 0xf5, 0x57, 0xf5, 0x94, 0xf4, 0xfb, 0xf1, 0x9d, 0xef, 0xe4, 0xf0, 0x13, 0xf2, 0x77, 0xf3, + 0x48, 0xf5, 0xda, 0xf7, 0x03, 0xfc, 0x57, 0xff, 0x58, 0xfe, 0x8a, 0xfd, 0x36, 0xfe, 0xab, 0xff, + 0x38, 0x02, 0xe5, 0x06, 0x5a, 0x0b, 0xf3, 0x0d, 0x50, 0x0f, 0x10, 0x0f, 0x02, 0x0d, 0xbc, 0x0b, + 0x61, 0x08, 0xc5, 0x03, 0x9b, 0x01, 0x52, 0x01, 0x4c, 0x03, 0x18, 0x05, 0x8c, 0x07, 0x66, 0x09, + 0xb9, 0x0a, 0x24, 0x0c, 0x82, 0x11, 0xea, 0x1a, 0xee, 0x26, 0x0b, 0x2c, 0x3a, 0x27, 0xf6, 0x20, + 0x84, 0x1c, 0x78, 0x18, 0x75, 0x10, 0x27, 0x09, 0x01, 0x02, 0x2e, 0xff, 0xb9, 0xfc, 0x48, 0xf9, + 0x3c, 0xf8, 0xc9, 0xf6, 0xf7, 0xf1, 0x0c, 0xec, 0xa8, 0xec, 0xeb, 0xf1, 0xf3, 0xf8, 0xac, 0xfd, + 0xed, 0xff, 0x4b, 0x03, 0x4e, 0x07, 0xa6, 0x06, 0xec, 0x02, 0xab, 0x02, 0xb2, 0x02, 0x9d, 0xff, + 0x3d, 0xfe, 0x67, 0xfe, 0x2f, 0x00, 0x0a, 0x00, 0xc4, 0xfb, 0xff, 0xf6, 0x8b, 0xf5, 0x08, 0xf7, + 0xec, 0xf4, 0xcd, 0xf1, 0x84, 0xf0, 0x00, 0xee, 0xb1, 0xea, 0xad, 0xea, 0x7b, 0xeb, 0x28, 0xec, + 0x3e, 0xed, 0x4c, 0xec, 0xa5, 0xed, 0xbb, 0xf1, 0x3a, 0xf4, 0x82, 0xf3, 0xc4, 0xf3, 0x33, 0xf6, + 0xfd, 0xf7, 0x42, 0xfa, 0xae, 0xfb, 0xb7, 0xfc, 0xfe, 0xfd, 0xb0, 0xfd, 0xe2, 0xfd, 0xbb, 0xff, + 0x44, 0x00, 0xef, 0xfd, 0x47, 0xf9, 0x6f, 0xf6, 0x7b, 0xf6, 0x92, 0xf6, 0xf0, 0xf6, 0xc7, 0xf7, + 0x23, 0xfb, 0xf2, 0x00, 0x85, 0x07, 0x09, 0x10, 0xe0, 0x1a, 0x16, 0x25, 0xce, 0x26, 0xa0, 0x24, + 0xc1, 0x20, 0x0a, 0x1d, 0xd9, 0x19, 0x78, 0x15, 0xc3, 0x10, 0x6c, 0x0e, 0xb4, 0x0a, 0xb7, 0x06, + 0x04, 0x03, 0x0a, 0xff, 0xe0, 0xfa, 0x06, 0xf6, 0x68, 0xf3, 0x8b, 0xf4, 0x1c, 0xf9, 0xe4, 0xfe, + 0x43, 0x03, 0xd5, 0x06, 0xe4, 0x09, 0x19, 0x0b, 0xab, 0x0a, 0xa8, 0x0a, 0x1e, 0x0b, 0xb4, 0x09, + 0x17, 0x06, 0x00, 0x05, 0x60, 0x05, 0x63, 0x06, 0xf8, 0x04, 0x8f, 0x00, 0xbb, 0xfd, 0xb5, 0xfd, + 0x07, 0xff, 0x1c, 0xff, 0x32, 0xfe, 0xa0, 0xfc, 0xb9, 0xf9, 0xd7, 0xf5, 0x40, 0xf4, 0x2e, 0xf3, + 0xaa, 0xf3, 0xcf, 0xf3, 0x40, 0xf2, 0x61, 0xf2, 0xa6, 0xf3, 0x1a, 0xf4, 0xfa, 0xf4, 0xa2, 0xf4, + 0x08, 0xf5, 0x47, 0xf5, 0x07, 0xf8, 0x23, 0xfb, 0xf7, 0xfc, 0xc0, 0xfe, 0x00, 0xfe, 0x17, 0xfb, + 0x60, 0xfa, 0xce, 0xf9, 0xc3, 0xf8, 0xa3, 0xf7, 0x1d, 0xf6, 0x21, 0xf4, 0x95, 0xf3, 0xf8, 0xf3, + 0x89, 0xf3, 0x35, 0xf5, 0x30, 0xf6, 0xa8, 0xf9, 0x81, 0x03, 0xad, 0x0f, 0x12, 0x1a, 0xb3, 0x1d, + 0x15, 0x1c, 0x34, 0x19, 0x48, 0x18, 0xab, 0x13, 0x21, 0x0f, 0x2f, 0x0b, 0x43, 0x0a, 0x1c, 0x09, + 0xa0, 0x06, 0xe5, 0x05, 0x67, 0x02, 0xb7, 0xfd, 0x51, 0xf8, 0x37, 0xf2, 0xb0, 0xf0, 0x37, 0xf3, + 0x19, 0xf5, 0x69, 0xf9, 0xc3, 0xfe, 0xeb, 0x03, 0x4a, 0x07, 0x21, 0x08, 0x9c, 0x09, 0xf2, 0x08, + 0x1c, 0x06, 0x64, 0x01, 0x51, 0xfe, 0xfa, 0xff, 0x5e, 0x02, 0x6f, 0x01, 0x22, 0xfe, 0x13, 0xfc, + 0x08, 0xfb, 0x84, 0xfa, 0xc6, 0xf9, 0x69, 0xf8, 0xa9, 0xf5, 0x07, 0xf4, 0x5a, 0xf3, 0x28, 0xf4, + 0x3c, 0xf8, 0xde, 0xfb, 0x23, 0xfe, 0x2f, 0xfe, 0xdc, 0xfe, 0x04, 0x00, 0x61, 0x02, 0xb0, 0x03, + 0x2c, 0x02, 0x96, 0x02, 0xd1, 0x03, 0x43, 0x05, 0x82, 0x05, 0x52, 0x06, 0xfc, 0x05, 0x1a, 0x04, + 0x2f, 0x02, 0x7c, 0x00, 0x62, 0xff, 0xa2, 0xfd, 0x8c, 0xfb, 0x06, 0xf9, 0x81, 0xf9, 0x64, 0xfa, + 0xa8, 0xfb, 0x1e, 0xfd, 0x0f, 0xfe, 0x7b, 0x00, 0xa0, 0x05, 0xcb, 0x0d, 0x99, 0x18, 0x37, 0x1f, + 0xfa, 0x21, 0xf7, 0x20, 0xf3, 0x1d, 0x6c, 0x1b, 0x06, 0x16, 0xc4, 0x0f, 0x19, 0x0b, 0x2e, 0x07, + 0xc1, 0x02, 0x50, 0xfe, 0xe8, 0xfa, 0x53, 0xf8, 0x38, 0xf4, 0x1f, 0xef, 0x04, 0xeb, 0x24, 0xea, + 0xa5, 0xea, 0xf3, 0xe9, 0xab, 0xe9, 0x3b, 0xed, 0xf3, 0xf1, 0xd1, 0xf5, 0x85, 0xf9, 0x8b, 0xfd, + 0x9e, 0xff, 0x90, 0xfe, 0x4f, 0xfc, 0x3d, 0xfa, 0x38, 0xfa, 0x1a, 0xfb, 0x63, 0xfb, 0xdd, 0xfb, + 0x6c, 0xfd, 0x0a, 0xff, 0xa6, 0x00, 0x1d, 0x00, 0x7d, 0xfd, 0xfd, 0xf9, 0xde, 0xf5, 0x72, 0xf2, + 0x21, 0xf1, 0xf3, 0xf2, 0xad, 0xf5, 0x36, 0xf7, 0x91, 0xf9, 0x95, 0xfb, 0x49, 0xfc, 0xf8, 0xfc, + 0xae, 0xfd, 0xf6, 0xfe, 0x91, 0xff, 0xc2, 0x00, 0xcf, 0x02, 0xd7, 0x03, 0xcb, 0x05, 0x17, 0x07, + 0x55, 0x07, 0x3c, 0x07, 0xa7, 0x06, 0x8c, 0x07, 0xef, 0x07, 0x8e, 0x08, 0xb7, 0x08, 0x82, 0x08, + 0xa2, 0x09, 0xb2, 0x0a, 0x8a, 0x0a, 0x2a, 0x0b, 0xbb, 0x0a, 0x90, 0x0d, 0xf5, 0x12, 0xf7, 0x19, + 0x38, 0x1f, 0xd9, 0x1f, 0x19, 0x1e, 0x88, 0x1a, 0x2e, 0x15, 0x69, 0x0f, 0xda, 0x09, 0x5f, 0x07, + 0x0d, 0x08, 0x22, 0x05, 0x4a, 0x02, 0xb6, 0x00, 0x8b, 0xfe, 0x1b, 0xfc, 0xb8, 0xf6, 0x6a, 0xf2, + 0xc5, 0xf0, 0x99, 0xf0, 0xd6, 0xee, 0xa5, 0xed, 0x47, 0xef, 0xee, 0xef, 0x79, 0xef, 0xcf, 0xee, + 0x50, 0xef, 0x34, 0xf0, 0xe3, 0xef, 0x1e, 0xed, 0x6b, 0xeb, 0x73, 0xeb, 0x72, 0xeb, 0x30, 0xea, + 0xfc, 0xe8, 0xc1, 0xe9, 0x30, 0xec, 0x0f, 0xef, 0x0a, 0xf1, 0x1d, 0xf4, 0xed, 0xf4, 0x3e, 0xf4, + 0xf1, 0xf3, 0x29, 0xf3, 0x37, 0xf3, 0xac, 0xf4, 0x42, 0xf5, 0x1d, 0xf7, 0x87, 0xf8, 0x0a, 0xfa, + 0x38, 0xfd, 0xdb, 0xfe, 0xf7, 0x00, 0x1b, 0x03, 0x4c, 0x05, 0x82, 0x07, 0x47, 0x08, 0xe1, 0x09, + 0xff, 0x0b, 0x09, 0x0d, 0xfa, 0x0d, 0x78, 0x0d, 0x12, 0x0c, 0x73, 0x0b, 0xf0, 0x08, 0x85, 0x06, + 0xbc, 0x04, 0x2f, 0x04, 0x74, 0x03, 0x81, 0x03, 0x74, 0x04, 0x19, 0x05, 0x3d, 0x06, 0xc8, 0x09, + 0x14, 0x10, 0x17, 0x16, 0x5f, 0x19, 0xe2, 0x19, 0x66, 0x1a, 0x81, 0x19, 0x39, 0x17, 0xb3, 0x14, + 0x41, 0x14, 0x60, 0x15, 0x59, 0x15, 0x99, 0x14, 0xb4, 0x14, 0xb8, 0x13, 0x0a, 0x11, 0x54, 0x0e, + 0x1e, 0x0b, 0x76, 0x09, 0x9f, 0x07, 0x6e, 0x05, 0x15, 0x04, 0xea, 0x02, 0xad, 0x02, 0x66, 0x00, + 0x30, 0xfe, 0x6a, 0xfd, 0x09, 0xfc, 0xbf, 0xf9, 0x93, 0xf4, 0x16, 0xf1, 0xab, 0xee, 0x4c, 0xec, + 0xcc, 0xeb, 0xa4, 0xeb, 0x31, 0xed, 0xc8, 0xed, 0x87, 0xec, 0x87, 0xeb, 0x49, 0xeb, 0xb2, 0xeb, + 0xb2, 0xea, 0xc2, 0xe9, 0xdb, 0xe9, 0xc5, 0xea, 0xcf, 0xec, 0xd2, 0xed, 0xa0, 0xee, 0x9d, 0xef, + 0x54, 0xf0, 0xd4, 0xf1, 0x98, 0xf4, 0x5b, 0xf7, 0xf1, 0xfa, 0x70, 0xfe, 0x34, 0x00, 0x7f, 0x01, + 0xa7, 0x01, 0xac, 0x02, 0xfc, 0x04, 0x16, 0x06, 0xce, 0x06, 0xb7, 0x06, 0xac, 0x06, 0xfd, 0x05, + 0x39, 0x04, 0x19, 0x03, 0xcd, 0x00, 0xe5, 0xfd, 0x8b, 0xfb, 0x5d, 0xfb, 0x8a, 0xfc, 0x22, 0xfd, + 0xcb, 0xff, 0xf3, 0x03, 0x7e, 0x07, 0x95, 0x0a, 0xea, 0x0c, 0xf8, 0x0d, 0x7a, 0x0f, 0x2c, 0x10, + 0xe2, 0x10, 0x32, 0x14, 0x90, 0x18, 0x5a, 0x1b, 0x83, 0x1b, 0x75, 0x1a, 0xa7, 0x18, 0x82, 0x16, + 0xf7, 0x13, 0xd2, 0x11, 0xeb, 0x10, 0x5f, 0x0f, 0xd2, 0x0d, 0x0a, 0x0b, 0xf4, 0x08, 0x07, 0x07, + 0x17, 0x04, 0x1c, 0x01, 0x0e, 0xff, 0x7b, 0xfd, 0x89, 0xfa, 0x9c, 0xf5, 0x3c, 0xf1, 0x5f, 0xed, + 0x8a, 0xea, 0xb7, 0xe7, 0x64, 0xe6, 0x08, 0xe8, 0x93, 0xe9, 0x66, 0xea, 0x2a, 0xeb, 0xe2, 0xec, + 0x9d, 0xef, 0x72, 0xf1, 0x99, 0xf1, 0xb1, 0xf2, 0x5e, 0xf4, 0xbb, 0xf5, 0x2c, 0xf7, 0x41, 0xf7, + 0x03, 0xf7, 0xc0, 0xf7, 0x67, 0xf7, 0x27, 0xf7, 0x6a, 0xf7, 0x9d, 0xf7, 0x1b, 0xf8, 0xb0, 0xf9, + 0x5b, 0xfc, 0x4a, 0xff, 0xa6, 0x00, 0x3a, 0x01, 0xc1, 0x00, 0x18, 0x00, 0x9c, 0xff, 0x3b, 0xff, + 0xa0, 0xfe, 0x23, 0xfd, 0xab, 0xfc, 0xf5, 0xfb, 0x9f, 0xfa, 0x9d, 0xfa, 0xc8, 0xfa, 0x2e, 0xfb, + 0x38, 0xfc, 0xb1, 0xfd, 0xdf, 0x01, 0x8f, 0x06, 0x20, 0x0a, 0x7b, 0x0c, 0xa3, 0x0d, 0x89, 0x0e, + 0x45, 0x0f, 0xa7, 0x10, 0x07, 0x13, 0xb0, 0x13, 0x85, 0x14, 0xe3, 0x13, 0xc8, 0x12, 0xed, 0x12, + 0x66, 0x11, 0xc1, 0x0e, 0x6f, 0x0c, 0x91, 0x0a, 0x7b, 0x08, 0x33, 0x07, 0x6a, 0x07, 0xa3, 0x07, + 0x6b, 0x07, 0x39, 0x08, 0x78, 0x07, 0x53, 0x06, 0x99, 0x06, 0xca, 0x05, 0x4b, 0x04, 0x1c, 0x02, + 0x00, 0x00, 0xf0, 0xfc, 0x38, 0xfa, 0x52, 0xf8, 0x1b, 0xf6, 0x7c, 0xf4, 0x7f, 0xf2, 0xd1, 0xef, + 0x5f, 0xee, 0x42, 0xed, 0x3f, 0xed, 0xbd, 0xed, 0x77, 0xed, 0x72, 0xed, 0xa5, 0xec, 0x8d, 0xec, + 0x61, 0xed, 0xc1, 0xee, 0xa9, 0xf0, 0xef, 0xf2, 0x60, 0xf5, 0xfc, 0xf7, 0xeb, 0xfa, 0xed, 0xfd, + 0x18, 0x00, 0x05, 0x02, 0x38, 0x04, 0xd2, 0x05, 0x8e, 0x07, 0x90, 0x0a, 0xb3, 0x0e, 0x6c, 0x11, + 0xcc, 0x11, 0xc4, 0x10, 0x0b, 0x0f, 0x99, 0x0d, 0x71, 0x0b, 0xab, 0x08, 0x4f, 0x07, 0x83, 0x06, + 0x08, 0x06, 0xf5, 0x06, 0x14, 0x08, 0x9f, 0x08, 0x49, 0x09, 0x76, 0x09, 0xc8, 0x08, 0xd7, 0x07, + 0x2b, 0x07, 0x9c, 0x07, 0x4a, 0x09, 0xa7, 0x0b, 0xd5, 0x0c, 0x21, 0x0c, 0x34, 0x0b, 0x84, 0x09, + 0x85, 0x08, 0x3d, 0x07, 0x82, 0x06, 0xb2, 0x05, 0x90, 0x03, 0xe1, 0x01, 0x5f, 0x01, 0x0b, 0x01, + 0x90, 0x00, 0x23, 0xff, 0xba, 0xfe, 0xb3, 0xff, 0x58, 0x00, 0x9d, 0x00, 0x6a, 0xff, 0x7a, 0xfd, + 0xec, 0xfa, 0x74, 0xf7, 0x2f, 0xf4, 0x8d, 0xf0, 0x77, 0xee, 0xb9, 0xec, 0x93, 0xea, 0x8d, 0xe9, + 0xef, 0xe9, 0x61, 0xea, 0xf5, 0xea, 0xdf, 0xeb, 0xad, 0xed, 0x32, 0xef, 0xfb, 0xef, 0x1f, 0xf1, + 0xcf, 0xf1, 0x08, 0xf2, 0x8e, 0xf2, 0xd4, 0xf3, 0x32, 0xf5, 0x88, 0xf6, 0xd9, 0xf8, 0xc1, 0xfa, + 0xc5, 0xfb, 0xf6, 0xfc, 0xad, 0xfd, 0x85, 0xfe, 0xb8, 0xfe, 0x64, 0xff, 0xd9, 0x00, 0x4c, 0x02, + 0x9a, 0x03, 0x37, 0x04, 0xcf, 0x04, 0x15, 0x05, 0xb8, 0x04, 0x0f, 0x04, 0x42, 0x03, 0xce, 0x02, + 0x71, 0x03, 0xbd, 0x03, 0x22, 0x05, 0x03, 0x08, 0x39, 0x0b, 0x12, 0x0d, 0x4c, 0x0d, 0xa1, 0x0d, + 0xe4, 0x0c, 0x0b, 0x0b, 0xf5, 0x09, 0xd4, 0x0b, 0x83, 0x0f, 0x41, 0x12, 0xb6, 0x13, 0x14, 0x14, + 0x3f, 0x14, 0xc6, 0x13, 0x04, 0x13, 0x4d, 0x12, 0xb3, 0x12, 0xc5, 0x12, 0x07, 0x12, 0x7c, 0x11, + 0x52, 0x10, 0xb7, 0x0d, 0x3f, 0x0a, 0x31, 0x06, 0xb2, 0x02, 0x6b, 0xff, 0x87, 0xfb, 0x7c, 0xf7, + 0x7d, 0xf4, 0x74, 0xf2, 0xfa, 0xef, 0xcb, 0xec, 0xeb, 0xe9, 0xbf, 0xe6, 0x75, 0xe3, 0x13, 0xe1, + 0x63, 0xdf, 0xb0, 0xde, 0x14, 0xdf, 0x07, 0xe0, 0xed, 0xe0, 0x02, 0xe3, 0x10, 0xe6, 0x8e, 0xe8, + 0x3c, 0xea, 0xa9, 0xeb, 0x3a, 0xed, 0x55, 0xef, 0x86, 0xf2, 0xd6, 0xf5, 0x54, 0xf9, 0x80, 0xfc, + 0x6e, 0xff, 0x31, 0x02, 0xe8, 0x04, 0xcd, 0x06, 0x8c, 0x08, 0x67, 0x0a, 0x85, 0x0c, 0x72, 0x0e, + 0x31, 0x10, 0x3f, 0x11, 0x51, 0x11, 0x06, 0x10, 0xc9, 0x0d, 0xd4, 0x0c, 0x09, 0x0a, 0x7c, 0x07, + 0x0d, 0x06, 0xfd, 0x04, 0x2c, 0x05, 0x22, 0x05, 0x41, 0x05, 0x48, 0x06, 0x43, 0x06, 0x87, 0x08, + 0xe4, 0x0a, 0xbe, 0x0c, 0xb7, 0x0f, 0xe5, 0x11, 0x8e, 0x14, 0x4e, 0x17, 0x6d, 0x1a, 0x91, 0x1b, + 0x79, 0x1a, 0x7e, 0x1a, 0x11, 0x1a, 0x0c, 0x18, 0x8e, 0x16, 0x83, 0x16, 0x31, 0x18, 0x38, 0x16, + 0x03, 0x13, 0x65, 0x11, 0x81, 0x0d, 0xe8, 0x09, 0xf6, 0x05, 0xaa, 0x03, 0xc7, 0x00, 0xec, 0xfc, + 0x44, 0xf9, 0x32, 0xf5, 0x64, 0xf3, 0x83, 0xf0, 0x33, 0xee, 0x51, 0xed, 0x9c, 0xec, 0x93, 0xec, + 0x8f, 0xeb, 0x8d, 0xea, 0xbe, 0xeb, 0x63, 0xec, 0x28, 0xec, 0x05, 0xed, 0x05, 0xee, 0x54, 0xef, + 0xbe, 0xef, 0xdf, 0xed, 0x6a, 0xeb, 0x94, 0xe9, 0xbe, 0xe7, 0xdb, 0xe7, 0x25, 0xe9, 0x3e, 0xeb, + 0x14, 0xee, 0xae, 0xf0, 0xd8, 0xf1, 0x0f, 0xf3, 0xe6, 0xf4, 0x27, 0xf7, 0x38, 0xf9, 0x70, 0xfa, + 0x2c, 0xfd, 0xf8, 0xff, 0x80, 0x03, 0x2d, 0x06, 0x94, 0x07, 0xcb, 0x07, 0x49, 0x07, 0x95, 0x06, + 0x07, 0x05, 0x56, 0x05, 0x44, 0x06, 0x6b, 0x08, 0x71, 0x09, 0x77, 0x09, 0x3d, 0x0a, 0xbf, 0x09, + 0xb2, 0x09, 0x19, 0x0c, 0xbe, 0x0d, 0x2b, 0x0f, 0x7b, 0x10, 0xef, 0x11, 0xee, 0x12, 0x3b, 0x13, + 0x16, 0x13, 0x3f, 0x12, 0x3d, 0x10, 0x0d, 0x0e, 0x32, 0x0c, 0x08, 0x0b, 0x4f, 0x0b, 0xcf, 0x0c, + 0x78, 0x0e, 0x81, 0x0f, 0xf5, 0x10, 0xf3, 0x0f, 0x21, 0x0d, 0x57, 0x0a, 0x1b, 0x07, 0x6a, 0x05, + 0x36, 0x03, 0x53, 0x00, 0xb8, 0xfe, 0x48, 0xfc, 0xff, 0xf8, 0x6e, 0xf6, 0x3d, 0xf3, 0x33, 0xf0, + 0xca, 0xec, 0x83, 0xea, 0x6c, 0xe8, 0x70, 0xe7, 0xe7, 0xe6, 0x39, 0xe5, 0x3b, 0xe4, 0x7a, 0xe3, + 0x01, 0xe5, 0xd8, 0xe6, 0x06, 0xe6, 0xc9, 0xe4, 0xcb, 0xe3, 0x5b, 0xe3, 0xb9, 0xe4, 0x9a, 0xe6, + 0x8c, 0xe9, 0xc5, 0xec, 0xd6, 0xef, 0xe4, 0xf2, 0x8d, 0xf4, 0xab, 0xf7, 0x88, 0xf9, 0xbb, 0xfb, + 0xcd, 0xfc, 0x84, 0x00, 0x08, 0x04, 0x08, 0x07, 0x33, 0x08, 0x1b, 0x09, 0xe5, 0x09, 0xa6, 0x0a, + 0x28, 0x0b, 0xf0, 0x0b, 0x89, 0x0b, 0xac, 0x0a, 0xd0, 0x0a, 0xa6, 0x09, 0xa0, 0x09, 0x94, 0x0b, + 0x64, 0x0d, 0x3d, 0x0c, 0xa5, 0x0c, 0x6d, 0x0e, 0x92, 0x10, 0x5f, 0x15, 0xd9, 0x18, 0xe5, 0x1c, + 0xb5, 0x1f, 0x01, 0x1f, 0x80, 0x1e, 0x82, 0x1d, 0xea, 0x19, 0x23, 0x16, 0x49, 0x13, 0x83, 0x12, + 0x98, 0x14, 0xd9, 0x14, 0xff, 0x14, 0x37, 0x13, 0x6c, 0x11, 0x15, 0x0f, 0x79, 0x0c, 0x79, 0x0b, + 0x61, 0x09, 0xf3, 0x06, 0x50, 0x02, 0xf7, 0xfd, 0x9b, 0xfc, 0x91, 0xf9, 0x5e, 0xf8, 0x05, 0xf7, + 0xf3, 0xf4, 0x93, 0xf1, 0x6f, 0xed, 0x4b, 0xea, 0xf2, 0xe6, 0x34, 0xe5, 0x6b, 0xe5, 0xb5, 0xe6, + 0xb7, 0xe8, 0x02, 0xeb, 0x8d, 0xec, 0xed, 0xec, 0xea, 0xea, 0x32, 0xe9, 0x8b, 0xe8, 0x3c, 0xe9, + 0xb5, 0xea, 0xe8, 0xed, 0xbd, 0xef, 0x46, 0xf1, 0x2e, 0xf3, 0xf1, 0xf6, 0x79, 0xf8, 0x9e, 0xf9, + 0xc5, 0xfb, 0xdf, 0xfc, 0xf1, 0xfe, 0x2b, 0x00, 0x10, 0x02, 0x00, 0x04, 0x84, 0x04, 0x22, 0x05, + 0x11, 0x04, 0x57, 0x02, 0x8c, 0x00, 0x1d, 0xff, 0xc6, 0xfe, 0x98, 0xfe, 0xa8, 0x00, 0x4e, 0x02, + 0x95, 0x01, 0x86, 0xff, 0x5b, 0xfd, 0x55, 0xfc, 0x5c, 0xfd, 0xf5, 0xff, 0xac, 0x04, 0x24, 0x09, + 0xc2, 0x0c, 0xd6, 0x0e, 0xf9, 0x0f, 0xb3, 0x0f, 0x2d, 0x10, 0x4b, 0x12, 0x96, 0x13, 0x28, 0x15, + 0x55, 0x16, 0x6a, 0x18, 0x11, 0x1b, 0xb0, 0x1c, 0x82, 0x1d, 0xba, 0x1d, 0x3c, 0x1d, 0x58, 0x19, + 0x9a, 0x14, 0xb8, 0x0f, 0x17, 0x0a, 0x2e, 0x06, 0xd5, 0x02, 0x1c, 0x00, 0x6b, 0xff, 0xae, 0xfd, + 0x62, 0xfa, 0x95, 0xf6, 0x0c, 0xf2, 0xbc, 0xee, 0xaa, 0xea, 0x49, 0xe5, 0xad, 0xe0, 0x5b, 0xdc, + 0x92, 0xd9, 0x6e, 0xda, 0x7b, 0xdd, 0xda, 0xe2, 0x29, 0xe7, 0x96, 0xe9, 0xfb, 0xe9, 0x0f, 0xea, + 0x6c, 0xeb, 0x3b, 0xee, 0xc7, 0xf0, 0xad, 0xf3, 0xb0, 0xf5, 0x39, 0xf6, 0xdd, 0xf6, 0xa7, 0xf7, + 0xaf, 0xf7, 0xae, 0xf7, 0xc0, 0xf8, 0x9e, 0xfb, 0x78, 0xfe, 0xef, 0xff, 0x15, 0x02, 0xd0, 0x05, + 0xe5, 0x08, 0x05, 0x0a, 0x16, 0x0b, 0x5d, 0x0b, 0xaf, 0x08, 0x6d, 0x06, 0x3c, 0x05, 0x2c, 0x04, + 0x62, 0x03, 0xfd, 0x02, 0x66, 0x04, 0x6f, 0x06, 0x5e, 0x07, 0x78, 0x08, 0x02, 0x0a, 0xe6, 0x0b, + 0x20, 0x0e, 0x64, 0x10, 0xb1, 0x12, 0x3b, 0x14, 0x83, 0x16, 0x0a, 0x17, 0x4b, 0x16, 0x79, 0x14, + 0xa8, 0x12, 0x81, 0x11, 0x9a, 0x11, 0x1d, 0x12, 0x44, 0x13, 0xbc, 0x13, 0x4b, 0x12, 0xe6, 0x10, + 0xc7, 0x0e, 0x98, 0x0b, 0x32, 0x08, 0xe6, 0x04, 0x5d, 0x02, 0x36, 0x00, 0xe5, 0xfe, 0xea, 0xfd, + 0xc6, 0xfd, 0xf5, 0xfe, 0xab, 0x00, 0xda, 0x01, 0xd0, 0x01, 0x3b, 0x00, 0xdd, 0xfd, 0x6d, 0xfb, + 0x9a, 0xf9, 0x1d, 0xf8, 0xb1, 0xf6, 0x02, 0xf6, 0xc4, 0xf5, 0x4c, 0xf5, 0x7c, 0xf3, 0xbc, 0xf0, + 0x61, 0xee, 0x5d, 0xed, 0x71, 0xed, 0xc3, 0xed, 0x51, 0xed, 0xd9, 0xeb, 0xf0, 0xea, 0x5e, 0xeb, + 0x0f, 0xed, 0x7e, 0xef, 0x6e, 0xf0, 0x9a, 0xf2, 0x9b, 0xf5, 0x09, 0xf9, 0xd6, 0xfa, 0x40, 0xfc, + 0x8d, 0xfe, 0xb6, 0x00, 0xbb, 0x02, 0x2e, 0x03, 0xcd, 0x03, 0x30, 0x03, 0x69, 0x01, 0xf6, 0x00, + 0xe4, 0x01, 0xfd, 0x02, 0x4c, 0x04, 0x12, 0x04, 0xd4, 0x03, 0xaa, 0x02, 0xef, 0x01, 0xa0, 0x01, + 0xeb, 0x02, 0x5d, 0x03, 0x42, 0x03, 0xe0, 0x02, 0x8a, 0x03, 0x94, 0x05, 0xcb, 0x07, 0xa1, 0x0a, + 0xb1, 0x0c, 0xd2, 0x0d, 0xe7, 0x0d, 0x13, 0x0e, 0x28, 0x0f, 0x01, 0x10, 0xf1, 0x0f, 0x12, 0x10, + 0x6e, 0x0f, 0x0b, 0x0e, 0xba, 0x0d, 0x4a, 0x0c, 0x75, 0x0a, 0xba, 0x08, 0x0d, 0x06, 0xb6, 0x04, + 0x83, 0x03, 0x25, 0x03, 0xfb, 0x02, 0x5a, 0x01, 0x92, 0xfe, 0xee, 0xfb, 0xa5, 0xfa, 0x7b, 0xf9, + 0x9e, 0xf6, 0x27, 0xf4, 0x85, 0xf2, 0x26, 0xf0, 0x90, 0xef, 0xc1, 0xf0, 0x87, 0xf1, 0x23, 0xf2, + 0x3d, 0xf1, 0x45, 0xf0, 0xea, 0xef, 0x03, 0xef, 0x50, 0xee, 0x3c, 0xee, 0x2a, 0xee, 0x54, 0xef, + 0x7c, 0xf0, 0xc0, 0xf1, 0x88, 0xf2, 0x59, 0xf2, 0x4c, 0xf4, 0xb8, 0xf5, 0x35, 0xf7, 0x6d, 0xf8, + 0x43, 0xf9, 0xb4, 0xfa, 0xe9, 0xfb, 0x09, 0xfd, 0xe2, 0xfd, 0x8d, 0xff, 0x16, 0x00, 0x5c, 0x01, + 0xf7, 0x01, 0x34, 0x02, 0x91, 0x01, 0x95, 0x02, 0x8f, 0x03, 0x25, 0x05, 0x0b, 0x07, 0x5c, 0x08, + 0x7b, 0x09, 0x1d, 0x0a, 0xd6, 0x0b, 0x65, 0x0d, 0x2e, 0x0e, 0x89, 0x0e, 0x60, 0x10, 0x03, 0x12, + 0xed, 0x12, 0xbb, 0x12, 0xf0, 0x11, 0xed, 0x11, 0x16, 0x11, 0xa5, 0x10, 0xa4, 0x0f, 0xba, 0x0e, + 0x48, 0x0e, 0x2b, 0x0d, 0xf0, 0x0c, 0x0d, 0x0c, 0xc9, 0x0b, 0xdc, 0x0b, 0x48, 0x0b, 0xbf, 0x08, + 0x38, 0x06, 0x71, 0x03, 0x52, 0x01, 0xd8, 0x00, 0x9a, 0x00, 0x83, 0xff, 0x39, 0xfe, 0x15, 0xfe, + 0x2b, 0xfd, 0x37, 0xfc, 0x88, 0xfb, 0x23, 0xfa, 0xb5, 0xf7, 0xfd, 0xf6, 0x44, 0xf7, 0xf0, 0xf6, + 0x47, 0xf5, 0x7e, 0xf2, 0x03, 0xef, 0x2c, 0xec, 0x66, 0xe9, 0x80, 0xe9, 0xab, 0xe9, 0x96, 0xea, + 0xc8, 0xea, 0x25, 0xec, 0xcb, 0xee, 0x20, 0xf1, 0xc9, 0xf2, 0x34, 0xf4, 0x21, 0xf6, 0x37, 0xf8, + 0x35, 0xfa, 0x3f, 0xfb, 0x6b, 0xfc, 0xdd, 0xfb, 0x93, 0xfc, 0x02, 0xfe, 0x28, 0xff, 0x14, 0x00, + 0x88, 0x00, 0x85, 0x00, 0xc6, 0x00, 0x24, 0x01, 0x73, 0x02, 0x2f, 0x03, 0xaf, 0x01, 0x7e, 0x00, + 0xe6, 0xfe, 0xa8, 0xfd, 0x1d, 0xfe, 0xba, 0xfe, 0x5a, 0x01, 0x54, 0x05, 0x17, 0x07, 0x66, 0x08, + 0xfb, 0x07, 0x28, 0x09, 0x81, 0x0a, 0xdc, 0x09, 0x82, 0x0e, 0xfd, 0x0b, 0x7e, 0x0c, 0x6c, 0x0e, + 0x29, 0x0d, 0x9f, 0x0c, 0xe3, 0x0d, 0x47, 0x0e, 0xb7, 0x0d, 0x92, 0x0f, 0x9a, 0x0f, 0x00, 0x0e, + 0x90, 0x0b, 0xdd, 0x09, 0xa4, 0x0a, 0xcc, 0x08, 0x79, 0x07, 0x79, 0x04, 0xff, 0x00, 0xef, 0xfb, + 0xb5, 0xf7, 0x0f, 0xf5, 0x68, 0xf6, 0x91, 0xf5, 0x29, 0xf5, 0x86, 0xf6, 0x65, 0xf5, 0xd2, 0xf5, + 0xbc, 0xf4, 0x69, 0xf5, 0x98, 0xf6, 0xd1, 0xf6, 0x8f, 0xf6, 0x6f, 0xf5, 0xec, 0xf2, 0xed, 0xf1, + 0xd0, 0xf4, 0x21, 0xf1, 0x09, 0xf1, 0x11, 0xf4, 0xdf, 0xf3, 0x55, 0xf5, 0xcf, 0xf6, 0x85, 0xf8, + 0x52, 0xf7, 0x9d, 0xf7, 0x73, 0xfb, 0xe6, 0xfb, 0x24, 0xfd, 0x02, 0x00, 0x5f, 0x00, 0x0d, 0x00, + 0xc9, 0x03, 0x0e, 0x05, 0x5a, 0x04, 0x52, 0x05, 0x77, 0x07, 0x82, 0x08, 0x25, 0x07, 0x49, 0x09, + 0x6f, 0x0a, 0xb6, 0x0c, 0x9c, 0x0f, 0x60, 0x11, 0x85, 0x13, 0x76, 0x14, 0xfa, 0x14, 0xfc, 0x14, + 0x5e, 0x17, 0xca, 0x15, 0x3a, 0x12, 0x99, 0x11, 0x7f, 0x13, 0x67, 0x12, 0x20, 0x12, 0xbe, 0x10, + 0x03, 0x0d, 0x1b, 0x0a, 0xe7, 0x09, 0x27, 0x0b, 0xc7, 0x0b, 0xb2, 0x0b, 0x3f, 0x0a, 0xde, 0x08, + 0x7f, 0x07, 0xac, 0x07, 0x30, 0x09, 0x10, 0x0a, 0x37, 0x0b, 0xb6, 0x0c, 0xfb, 0x0a, 0x9e, 0x08, + 0x5b, 0x06, 0xc4, 0x02, 0xfc, 0xff, 0x6b, 0xfd, 0x7c, 0xf9, 0x5b, 0xf6, 0xac, 0xf5, 0x87, 0xf4, + 0x89, 0xf2, 0xd2, 0xf3, 0xac, 0xf1, 0x68, 0xec, 0x16, 0xec, 0xab, 0xea, 0x5b, 0xe7, 0x6c, 0xe5, + 0x7f, 0xe6, 0x5a, 0xe5, 0x41, 0xe5, 0xb1, 0xe7, 0x00, 0xe8, 0x8a, 0xe6, 0x81, 0xe7, 0xe2, 0xe8, + 0xce, 0xe9, 0x9a, 0xec, 0x73, 0xef, 0xf2, 0xf0, 0xbe, 0xf4, 0x85, 0xf7, 0xf2, 0xf7, 0x6b, 0xfa, + 0x22, 0xfd, 0x54, 0xfc, 0x43, 0xfb, 0x9c, 0xfd, 0x41, 0xfe, 0x3b, 0xfd, 0x88, 0xff, 0xc2, 0xff, + 0x24, 0xfe, 0x3e, 0xfd, 0x71, 0xfc, 0x85, 0xfb, 0x4f, 0xfd, 0x27, 0x00, 0x43, 0x02, 0xb1, 0x03, + 0xfb, 0x05, 0x53, 0x07, 0x14, 0x08, 0x82, 0x08, 0xf4, 0x08, 0x80, 0x09, 0xf7, 0x09, 0xc1, 0x0a, + 0xda, 0x0b, 0x96, 0x0d, 0x22, 0x0b, 0xdd, 0x09, 0xfa, 0x08, 0xb3, 0x08, 0x6f, 0x09, 0xa2, 0x08, + 0x3f, 0x07, 0x53, 0x05, 0x12, 0x05, 0x1b, 0x05, 0x26, 0x05, 0x67, 0x05, 0xbf, 0x06, 0x87, 0x06, + 0x7d, 0x06, 0x84, 0x06, 0x14, 0x04, 0x5a, 0x03, 0x89, 0x01, 0xf3, 0xfe, 0xf4, 0xfe, 0x3a, 0xfc, + 0x79, 0xf9, 0x00, 0xfa, 0x89, 0xf8, 0x1a, 0xf6, 0xeb, 0xf4, 0x89, 0xf5, 0x39, 0xf5, 0x0a, 0xf5, + 0xe4, 0xf4, 0x61, 0xf4, 0x54, 0xf4, 0x2f, 0xf5, 0xc8, 0xf3, 0x1a, 0xf2, 0x09, 0xf1, 0x1c, 0xf0, + 0xc4, 0xf0, 0x86, 0xf1, 0x5e, 0xf2, 0x5d, 0xf3, 0x18, 0xf5, 0x6d, 0xf6, 0x10, 0xf9, 0x8c, 0xfd, + 0x44, 0x00, 0x13, 0x03, 0xbb, 0x05, 0x8b, 0x05, 0x27, 0x05, 0x86, 0x05, 0xdf, 0x05, 0xd5, 0x06, + 0x30, 0x07, 0x7d, 0x09, 0x6b, 0x0a, 0x45, 0x09, 0x07, 0x0a, 0x18, 0x0b, 0xf4, 0x0a, 0x1f, 0x0c, + 0x1d, 0x0c, 0xbf, 0x0a, 0x16, 0x0b, 0xfd, 0x0b, 0x7b, 0x0c, 0x42, 0x0c, 0x25, 0x0d, 0x78, 0x0d, + 0xf3, 0x0e, 0x7b, 0x10, 0xa5, 0x10, 0x32, 0x11, 0xe6, 0x10, 0x73, 0x10, 0x5e, 0x0f, 0x44, 0x0f, + 0x7b, 0x0e, 0x7e, 0x0c, 0xe6, 0x0b, 0xd5, 0x0a, 0x49, 0x0c, 0x96, 0x0e, 0xa6, 0x10, 0xdc, 0x11, + 0x65, 0x13, 0x79, 0x13, 0x7c, 0x11, 0x0a, 0x0f, 0xf2, 0x0c, 0x12, 0x0a, 0x7c, 0x06, 0x1d, 0x05, + 0x51, 0x03, 0xc5, 0x02, 0xd7, 0xff, 0xce, 0xfb, 0x74, 0xf7, 0x34, 0xf2, 0x2d, 0xef, 0x84, 0xed, + 0x7d, 0xec, 0x98, 0xeb, 0x50, 0xeb, 0xc1, 0xeb, 0xdc, 0xeb, 0x43, 0xec, 0x4c, 0xec, 0xc2, 0xec, + 0x67, 0xec, 0xf2, 0xed, 0x26, 0xf0, 0x70, 0xf1, 0x6d, 0xf3, 0xe7, 0xf3, 0x39, 0xf4, 0x72, 0xf4, + 0x40, 0xf5, 0x83, 0xf5, 0x1e, 0xf7, 0xe8, 0xf6, 0x03, 0xf6, 0x95, 0xf5, 0xa2, 0xf4, 0x99, 0xf4, + 0xf3, 0xf3, 0x11, 0xf4, 0xe2, 0xf3, 0x8a, 0xf2, 0xe1, 0xf1, 0x39, 0xf3, 0x9a, 0xf3, 0x3d, 0xf5, + 0x64, 0xf7, 0x01, 0xf8, 0x2e, 0xfa, 0x9f, 0xfb, 0x8d, 0xfe, 0xaa, 0x01, 0x79, 0x02, 0x40, 0x05, + 0xf9, 0x05, 0xce, 0x05, 0xec, 0x06, 0x8d, 0x08, 0x81, 0x08, 0x9f, 0x06, 0x2e, 0x05, 0x23, 0x04, + 0x92, 0x03, 0x9f, 0x02, 0x58, 0x02, 0x40, 0x02, 0x11, 0x01, 0x71, 0x00, 0xf0, 0xff, 0x77, 0xfe, + 0x3b, 0x00, 0x55, 0x00, 0x35, 0xff, 0x1c, 0x00, 0xa2, 0x00, 0x12, 0x01, 0x45, 0x00, 0xbc, 0x02, + 0xd3, 0x02, 0x90, 0x04, 0xbb, 0x06, 0xd9, 0x06, 0x0a, 0x07, 0x39, 0x05, 0x26, 0x01, 0xba, 0xff, + 0x76, 0xfd, 0xa2, 0xfb, 0x17, 0xfb, 0x53, 0xfb, 0x6e, 0xfb, 0x28, 0xfd, 0xbc, 0xfd, 0xf8, 0xfd, + 0x9d, 0xfa, 0x5d, 0xfa, 0xfc, 0xfa, 0xb8, 0xfb, 0x65, 0xfb, 0xd4, 0xfc, 0x8b, 0xfc, 0x7a, 0xfe, + 0x4e, 0x02, 0xb4, 0x04, 0x16, 0x0a, 0x93, 0x0d, 0x67, 0x0b, 0x94, 0x0a, 0x2c, 0x0c, 0x62, 0x09, + 0xb5, 0x08, 0x4b, 0x09, 0x90, 0x07, 0x23, 0x08, 0x2f, 0x0b, 0x72, 0x0c, 0xa4, 0x0e, 0x94, 0x10, + 0x9a, 0x10, 0x14, 0x0f, 0xfb, 0x0e, 0xbc, 0x11, 0x5b, 0x11, 0x25, 0x12, 0x95, 0x11, 0x85, 0x0e, + 0x28, 0x0f, 0xfd, 0x10, 0xc4, 0x0f, 0xf8, 0x12, 0x4a, 0x11, 0x65, 0x0f, 0xe3, 0x10, 0x8e, 0x10, + 0xe0, 0x0e, 0x9d, 0x0e, 0x1e, 0x0f, 0xee, 0x0d, 0x65, 0x0c, 0x55, 0x0e, 0x45, 0x0f, 0xc4, 0x10, + 0x6a, 0x11, 0x16, 0x10, 0xb4, 0x0d, 0x4e, 0x0b, 0xb8, 0x08, 0x46, 0x03, 0x30, 0xfe, 0x07, 0xfa, + 0x86, 0xf6, 0xe4, 0xf5, 0xeb, 0xf3, 0x04, 0xf3, 0x21, 0xf2, 0x2b, 0xed, 0xe0, 0xe7, 0x79, 0xe5, + 0xe5, 0xe2, 0x78, 0xe1, 0xf6, 0xe2, 0x6d, 0xe4, 0x84, 0xe1, 0x20, 0xe7, 0x6a, 0xeb, 0x9e, 0xe9, + 0xcc, 0xe6, 0x53, 0xe7, 0xe4, 0xe7, 0x53, 0xea, 0x3a, 0xec, 0x8b, 0xeb, 0x55, 0xee, 0xd8, 0xf1, + 0x95, 0xf1, 0x0a, 0xf4, 0xc9, 0xf7, 0xab, 0xf8, 0xc3, 0xfb, 0x37, 0x00, 0xa9, 0x00, 0x6f, 0x01, + 0xcf, 0x03, 0x26, 0x03, 0xb8, 0x01, 0x4d, 0x03, 0xfa, 0x01, 0xcc, 0xff, 0x88, 0x02, 0x55, 0x01, + 0x06, 0x00, 0x26, 0x03, 0x20, 0x03, 0x84, 0x03, 0xb9, 0x06, 0x5e, 0x07, 0x75, 0x06, 0xa3, 0x09, + 0xdd, 0x0a, 0x4d, 0x0d, 0x7c, 0x12, 0xc8, 0x11, 0x57, 0x11, 0xa4, 0x10, 0x85, 0x0b, 0x2a, 0x09, + 0xc5, 0x07, 0xa2, 0x05, 0xfe, 0x02, 0x85, 0x00, 0x22, 0xfd, 0xa8, 0xf8, 0xfd, 0xf4, 0xe3, 0xf5, + 0xb2, 0xf3, 0x3d, 0xf3, 0xdc, 0xf3, 0xd2, 0xf1, 0x2c, 0xf2, 0xbe, 0xf1, 0x06, 0xef, 0x23, 0xed, + 0x0d, 0xee, 0xb6, 0xec, 0x45, 0xee, 0x66, 0xee, 0xf4, 0xeb, 0x15, 0xee, 0x1e, 0xee, 0x42, 0xec, + 0x73, 0xed, 0xd5, 0xee, 0x7c, 0xed, 0xde, 0xec, 0x79, 0xec, 0xb6, 0xea, 0x24, 0xeb, 0xe7, 0xec, + 0x64, 0xec, 0x48, 0xed, 0x64, 0xee, 0x3e, 0xee, 0x0d, 0xee, 0x38, 0xef, 0xac, 0xf1, 0x8c, 0xf4, + 0x20, 0xf7, 0x53, 0xfa, 0xc2, 0xfe, 0x25, 0x02, 0x87, 0x04, 0x8d, 0x09, 0x2a, 0x0e, 0x8a, 0x10, + 0x87, 0x14, 0x33, 0x15, 0x20, 0x16, 0x85, 0x18, 0xf3, 0x18, 0xcd, 0x18, 0x47, 0x19, 0x72, 0x18, + 0x6e, 0x19, 0x4d, 0x1a, 0xe0, 0x19, 0xb3, 0x1b, 0x17, 0x1d, 0x25, 0x20, 0xbd, 0x23, 0x20, 0x2a, + 0xb9, 0x2e, 0x1e, 0x32, 0x1a, 0x36, 0x7f, 0x37, 0xce, 0x36, 0x99, 0x34, 0x96, 0x31, 0x51, 0x2c, + 0xd5, 0x28, 0x14, 0x25, 0xe5, 0x20, 0xb7, 0x1b, 0x4e, 0x14, 0x7b, 0x0f, 0x2f, 0x0b, 0x1f, 0x07, + 0x7f, 0x05, 0x76, 0x04, 0xba, 0x01, 0x88, 0xfe, 0x97, 0xfb, 0xc6, 0xf8, 0x21, 0xf6, 0xf6, 0xf3, + 0x70, 0xf2, 0xa5, 0xf1, 0x5f, 0xf0, 0x62, 0xef, 0x17, 0xef, 0x81, 0xeb, 0x99, 0xe9, 0x4f, 0xe7, + 0xcf, 0xe7, 0x39, 0xe9, 0x9b, 0xe9, 0x88, 0xe8, 0x6e, 0xe8, 0x54, 0xe9, 0x6d, 0xeb, 0xb9, 0xed, + 0x98, 0xed, 0x9d, 0xee, 0x75, 0xed, 0xcb, 0xeb, 0xdb, 0xea, 0xdb, 0xed, 0x90, 0xf0, 0xce, 0xee, + 0xf6, 0xeb, 0x2f, 0xe9, 0x22, 0xe8, 0x37, 0xe8, 0xcb, 0xe7, 0x90, 0xe9, 0x52, 0xe9, 0xa1, 0xe9, + 0x30, 0xea, 0xba, 0xea, 0x0e, 0xea, 0x2d, 0xea, 0x65, 0xe9, 0x5f, 0xe7, 0x46, 0xe6, 0x3f, 0xe9, + 0xfd, 0xee, 0x95, 0xf1, 0x3f, 0xf6, 0x92, 0xfa, 0x61, 0x00, 0x94, 0x07, 0xe6, 0x10, 0xd8, 0x17, + 0x43, 0x1c, 0xcf, 0x22, 0x48, 0x26, 0xc1, 0x26, 0x10, 0x26, 0x2a, 0x23, 0x90, 0x21, 0x4c, 0x1c, + 0xc2, 0x16, 0xd0, 0x11, 0x3e, 0x0f, 0x46, 0x0e, 0xac, 0x0b, 0x50, 0x0a, 0xf9, 0x07, 0x54, 0x02, + 0x88, 0x00, 0xd4, 0xff, 0x33, 0xfe, 0x32, 0xfd, 0xc2, 0xfb, 0xac, 0xfa, 0xa9, 0xfb, 0x7b, 0xfb, + 0x3c, 0xfb, 0xe2, 0xfb, 0x03, 0xfb, 0xe5, 0xf8, 0xed, 0xf9, 0x22, 0xfc, 0x01, 0xfc, 0x30, 0xfc, + 0x3b, 0xfc, 0x34, 0xfa, 0x66, 0xf9, 0x02, 0xf8, 0x98, 0xf5, 0x37, 0xf4, 0x63, 0xf2, 0xf2, 0xee, + 0x79, 0xeb, 0x94, 0xed, 0x39, 0xef, 0x5c, 0xef, 0x10, 0xee, 0x1e, 0xee, 0x0e, 0xf1, 0x03, 0xf5, + 0x69, 0xf6, 0xfc, 0xf6, 0x26, 0xf7, 0xbc, 0xf4, 0xa1, 0xf5, 0xd1, 0xf6, 0xcd, 0xf7, 0xf0, 0xfa, + 0xdc, 0xfb, 0xcc, 0xfb, 0xc2, 0xfb, 0x4e, 0xfd, 0xe6, 0xfe, 0x2b, 0xfe, 0x7d, 0xfd, 0x4f, 0xfb, + 0xe1, 0xf9, 0xe3, 0xfb, 0x95, 0x00, 0x9b, 0x06, 0x8f, 0x0b, 0x52, 0x11, 0xfd, 0x13, 0x57, 0x14, + 0xb5, 0x11, 0xfb, 0x0c, 0x88, 0x07, 0x85, 0x01, 0x97, 0xfe, 0xf3, 0xf9, 0xb6, 0xf7, 0x74, 0xf3, + 0x98, 0xf2, 0x86, 0xf3, 0x73, 0xf6, 0xf3, 0xfa, 0xe9, 0xff, 0xd1, 0x05, 0xd4, 0x06, 0x85, 0x08, + 0x97, 0x08, 0x19, 0x0a, 0x8b, 0x0a, 0x11, 0x0c, 0x90, 0x0d, 0xee, 0x0c, 0xff, 0x0d, 0x3a, 0x10, + 0xf4, 0x0f, 0xcb, 0x12, 0xfc, 0x15, 0x21, 0x18, 0x0e, 0x1a, 0x0a, 0x19, 0x04, 0x18, 0xbb, 0x16, + 0x1b, 0x14, 0x86, 0x11, 0xc9, 0x0c, 0x09, 0x0c, 0x0c, 0x08, 0x28, 0x09, 0x31, 0x0d, 0xa9, 0x0d, + 0x79, 0x0b, 0xaa, 0x0b, 0x7e, 0x0c, 0x9f, 0x08, 0xe6, 0x0a, 0x8b, 0x0a, 0x3f, 0x0b, 0x8d, 0x0d, + 0x1a, 0x0c, 0xc0, 0x0d, 0x67, 0x0d, 0x80, 0x0a, 0x78, 0x07, 0x4a, 0x03, 0xa4, 0x01, 0xf4, 0x00, + 0xdd, 0x00, 0x30, 0xfe, 0xa5, 0xfa, 0x50, 0xf9, 0x5d, 0xfa, 0xc8, 0xfd, 0xac, 0x02, 0xcc, 0x04, + 0xa0, 0x06, 0xf9, 0x09, 0x49, 0x0c, 0x02, 0x0f, 0xd9, 0x0e, 0x59, 0x0a, 0xb0, 0x03, 0xfd, 0xff, + 0x2a, 0xfc, 0x14, 0xf6, 0x67, 0xf0, 0x3e, 0xec, 0x3a, 0xe8, 0x26, 0xe6, 0xeb, 0xe4, 0xd3, 0xe2, + 0x47, 0xe3, 0x12, 0xe4, 0x8c, 0xe2, 0xd0, 0xdf, 0xb9, 0xe3, 0xf9, 0xe5, 0x53, 0xe5, 0x18, 0xe3, + 0xa0, 0xe0, 0xde, 0xdf, 0x96, 0xe0, 0x51, 0xe0, 0xe7, 0xe0, 0x69, 0xe5, 0x17, 0xe8, 0x2f, 0xeb, + 0x40, 0xee, 0x5a, 0xf2, 0xe8, 0xf5, 0x38, 0xfa, 0x05, 0xfb, 0x4d, 0xfb, 0x4a, 0xfe, 0xdf, 0x01, + 0xff, 0x01, 0xdb, 0x00, 0x2e, 0xff, 0xa5, 0xfe, 0xbc, 0xff, 0x9f, 0x01, 0xcd, 0x04, 0xaf, 0x0a, + 0x7a, 0x10, 0x67, 0x13, 0x88, 0x13, 0x6e, 0x13, 0xaf, 0x11, 0x90, 0x0f, 0x99, 0x0d, 0x5e, 0x0c, + 0x84, 0x0a, 0x8b, 0x0a, 0xa3, 0x09, 0xf3, 0x08, 0xd7, 0x0a, 0x3a, 0x09, 0x29, 0x0b, 0x0f, 0x0a, + 0x61, 0x0b, 0xf5, 0x0e, 0xb5, 0x13, 0xed, 0x16, 0xa3, 0x18, 0xc9, 0x1b, 0x31, 0x1c, 0x1e, 0x19, + 0x85, 0x0f, 0x1a, 0x08, 0x3a, 0x03, 0x4a, 0xfc, 0xbd, 0xf7, 0x2a, 0xf2, 0x50, 0xee, 0xbb, 0xec, + 0x58, 0xe9, 0x7d, 0xe8, 0x53, 0xea, 0xe7, 0xec, 0x53, 0xef, 0x44, 0xef, 0xd8, 0xed, 0x48, 0xee, + 0x07, 0xf1, 0xa4, 0xf2, 0x1c, 0xf0, 0x54, 0xee, 0x82, 0xf0, 0xa3, 0xf1, 0x20, 0xf2, 0x54, 0xf2, + 0x94, 0xf2, 0x48, 0xf5, 0x53, 0xf6, 0x53, 0xf5, 0xed, 0xf6, 0xef, 0xf7, 0x10, 0xf9, 0x32, 0xf9, + 0x43, 0xf8, 0xc0, 0xf5, 0x7f, 0xf5, 0xc9, 0xf4, 0x43, 0xf1, 0x32, 0xef, 0x9a, 0xee, 0xa4, 0xf0, + 0xde, 0xf2, 0x0e, 0xf7, 0x14, 0xf8, 0xd6, 0xfb, 0x26, 0x00, 0x85, 0x02, 0x90, 0x05, 0xe4, 0x0a, + 0x87, 0x0d, 0x17, 0x0f, 0x6d, 0x11, 0x60, 0x13, 0xd0, 0x14, 0x70, 0x14, 0x2d, 0x15, 0xcb, 0x16, + 0x15, 0x1d, 0x80, 0x20, 0x68, 0x22, 0x9b, 0x27, 0x06, 0x2d, 0x59, 0x32, 0x0f, 0x36, 0x90, 0x39, + 0x53, 0x3c, 0xb9, 0x3c, 0xeb, 0x36, 0x93, 0x31, 0x36, 0x2d, 0x2f, 0x27, 0x49, 0x20, 0x99, 0x18, + 0x90, 0x12, 0x81, 0x0c, 0x19, 0x09, 0xf0, 0x03, 0x02, 0x03, 0x5f, 0x01, 0x4c, 0x01, 0x5d, 0x02, + 0xf3, 0xff, 0xec, 0xff, 0xb1, 0x00, 0x66, 0x01, 0xee, 0xfe, 0xa5, 0xfc, 0x65, 0xf9, 0x09, 0xf5, + 0x85, 0xf2, 0x0f, 0xf0, 0x30, 0xef, 0xea, 0xef, 0x68, 0xf2, 0x6f, 0xf2, 0x77, 0xf2, 0xd2, 0xf4, + 0x11, 0xf3, 0xb1, 0xf1, 0x57, 0xef, 0x7e, 0xea, 0x41, 0xe8, 0x45, 0xe6, 0x3d, 0xe2, 0x06, 0xe2, + 0xc8, 0xe5, 0x22, 0xe8, 0x11, 0xea, 0x07, 0xec, 0x71, 0xef, 0x2b, 0xf0, 0xe2, 0xf0, 0xf6, 0xf1, + 0x48, 0xf3, 0x0d, 0xf4, 0x0a, 0xf2, 0xc5, 0xee, 0x78, 0xeb, 0xa3, 0xe7, 0xfe, 0xe5, 0x5b, 0xe6, + 0x21, 0xe6, 0x5a, 0xe8, 0xae, 0xea, 0x79, 0xeb, 0xf8, 0xeb, 0x0e, 0xef, 0x2f, 0xf2, 0xbc, 0xf8, + 0x7f, 0x00, 0xdb, 0x05, 0x32, 0x0c, 0x8c, 0x10, 0x2b, 0x13, 0xc8, 0x12, 0xe2, 0x0f, 0xad, 0x0a, + 0xd8, 0x07, 0x2e, 0x04, 0x03, 0x01, 0xd9, 0xfd, 0xf3, 0xfe, 0x46, 0x01, 0xf2, 0x03, 0xd3, 0x06, + 0x2d, 0x07, 0xd9, 0x09, 0x5b, 0x0c, 0x10, 0x0d, 0x00, 0x0c, 0xfe, 0x0d, 0x56, 0x0e, 0x5f, 0x0b, + 0xc6, 0x08, 0xdf, 0x05, 0xb1, 0x04, 0x00, 0x04, 0x75, 0x01, 0x0b, 0x01, 0x3b, 0x05, 0x91, 0x06, + 0xff, 0x06, 0xe0, 0x07, 0x91, 0x05, 0x89, 0x03, 0x3f, 0x02, 0x74, 0xfe, 0x86, 0xfb, 0x76, 0xfb, + 0x9f, 0xf7, 0x23, 0xf6, 0xbb, 0xf6, 0xb7, 0xf6, 0x10, 0xf7, 0x44, 0xf4, 0xce, 0xf3, 0x7d, 0xf5, + 0x5d, 0xf8, 0x67, 0xf9, 0x44, 0xfa, 0xbc, 0xfc, 0x70, 0xfd, 0x2b, 0xfd, 0x9b, 0xfc, 0x0a, 0xfd, + 0x9c, 0xfd, 0x74, 0xfe, 0x13, 0xff, 0xc6, 0xff, 0xd9, 0x01, 0xe4, 0x01, 0x40, 0x00, 0x71, 0x00, + 0x64, 0x03, 0x2d, 0x0b, 0x8a, 0x13, 0xd7, 0x17, 0xb8, 0x1b, 0xff, 0x1b, 0x77, 0x1a, 0x4f, 0x16, + 0x49, 0x0f, 0xc2, 0x06, 0x68, 0x00, 0x74, 0xfd, 0x60, 0xf9, 0xea, 0xf3, 0x4e, 0xf2, 0xda, 0xf1, + 0xf0, 0xf0, 0x77, 0xf0, 0x22, 0xef, 0x8b, 0xef, 0x5d, 0xf0, 0x12, 0xef, 0x2b, 0xf0, 0x9a, 0xf0, + 0xaa, 0xee, 0xa6, 0xed, 0xd0, 0xee, 0xd4, 0xee, 0xa4, 0xef, 0xd8, 0xf1, 0xe0, 0xf3, 0xd7, 0xf4, + 0x0a, 0xf6, 0x4a, 0xf8, 0x01, 0xfd, 0xcf, 0x02, 0xaf, 0x02, 0xc8, 0x01, 0xde, 0x00, 0xb5, 0xff, + 0xa0, 0xfe, 0x19, 0x00, 0xc8, 0xfe, 0x9e, 0xfd, 0x33, 0xfd, 0x1e, 0xfe, 0x2e, 0x01, 0x51, 0x06, + 0x8a, 0x0c, 0x90, 0x0e, 0xd5, 0x0d, 0x19, 0x0d, 0xbd, 0x0d, 0x3d, 0x10, 0x11, 0x12, 0x30, 0x0f, + 0xdc, 0x0c, 0x46, 0x0c, 0xf9, 0x08, 0xf3, 0x06, 0x83, 0x08, 0xe4, 0x09, 0x34, 0x0e, 0x9e, 0x11, + 0x5d, 0x14, 0x0c, 0x1a, 0xf8, 0x20, 0x91, 0x24, 0x01, 0x2a, 0x1a, 0x2c, 0x77, 0x2a, 0x8d, 0x28, + 0x51, 0x24, 0xae, 0x1f, 0x72, 0x18, 0x43, 0x10, 0x62, 0x0a, 0x56, 0x06, 0x7e, 0x02, 0xa2, 0xfc, + 0xf1, 0xf7, 0x43, 0xf7, 0xc1, 0xfb, 0x84, 0xff, 0x0a, 0x01, 0xba, 0x02, 0xd8, 0x03, 0xf0, 0x06, + 0xfd, 0x04, 0x73, 0x00, 0x0d, 0xfc, 0xc5, 0xf9, 0x92, 0xf8, 0x40, 0xf6, 0xe5, 0xf4, 0x4b, 0xf2, + 0x1a, 0xed, 0x50, 0xe8, 0xd9, 0xe7, 0x28, 0xe7, 0x89, 0xe8, 0x3b, 0xea, 0xf7, 0xe9, 0x34, 0xea, + 0xac, 0xe6, 0x1e, 0xe4, 0xd3, 0xe2, 0xa8, 0xe0, 0x1c, 0xe1, 0x06, 0xe0, 0x98, 0xe1, 0x36, 0xe5, + 0xd9, 0xe5, 0x45, 0xe6, 0xeb, 0xe8, 0x07, 0xec, 0x0f, 0xee, 0xd9, 0xef, 0x7d, 0xf4, 0x5a, 0xfa, + 0xa0, 0xfb, 0xe8, 0xf9, 0x2d, 0xf9, 0x47, 0xfa, 0x84, 0xfb, 0x6c, 0xfa, 0xf4, 0xf9, 0x3a, 0xfc, + 0x3e, 0xff, 0x41, 0x02, 0x04, 0x04, 0x3e, 0x0a, 0xb8, 0x13, 0xde, 0x18, 0xc1, 0x1b, 0xae, 0x1b, + 0x07, 0x1a, 0x45, 0x1b, 0x8b, 0x18, 0x9e, 0x0f, 0xf8, 0x09, 0xb9, 0x09, 0x84, 0x04, 0xf3, 0xfc, + 0xd0, 0xf6, 0xf8, 0xf3, 0xa6, 0xf4, 0xa9, 0xf8, 0xde, 0xfa, 0x93, 0xfb, 0xe7, 0xfe, 0x7d, 0xfd, + 0xb6, 0xfa, 0xd1, 0xf9, 0x27, 0xf8, 0xfb, 0xf8, 0x7d, 0xf9, 0x53, 0xf7, 0xb6, 0xf3, 0x54, 0xf5, + 0xa3, 0xf5, 0x06, 0xf6, 0x36, 0xfa, 0x6b, 0xfc, 0xab, 0xfe, 0x27, 0x00, 0x08, 0x00, 0x96, 0xfd, + 0x10, 0xfd, 0x91, 0xfc, 0x1f, 0xf8, 0x71, 0xf6, 0x73, 0xf5, 0xe9, 0xf3, 0x07, 0xf5, 0xab, 0xf6, + 0x7c, 0xf9, 0x74, 0xfd, 0x9d, 0x01, 0x7c, 0x04, 0xdb, 0x08, 0x9d, 0x0b, 0xab, 0x07, 0x49, 0x04, + 0x00, 0x05, 0x08, 0x05, 0xf2, 0x02, 0xfb, 0x00, 0x39, 0x00, 0xa4, 0xff, 0x66, 0xff, 0xcb, 0x01, + 0x4a, 0x06, 0xb2, 0x0b, 0x0e, 0x0f, 0x48, 0x11, 0x8e, 0x15, 0x57, 0x1b, 0xa5, 0x1f, 0x6b, 0x21, + 0x69, 0x22, 0x06, 0x23, 0xe8, 0x21, 0xd6, 0x1d, 0xb3, 0x17, 0xa1, 0x12, 0xa4, 0x0f, 0x7c, 0x0c, + 0x70, 0x09, 0x48, 0x07, 0x9f, 0x05, 0xda, 0x04, 0xa4, 0x04, 0x3b, 0x08, 0x5d, 0x0b, 0x6a, 0x0d, + 0xff, 0x0d, 0xe0, 0x0d, 0x4a, 0x0f, 0xb8, 0x0f, 0x9f, 0x0c, 0x92, 0x09, 0xf6, 0x06, 0x13, 0x03, + 0x15, 0x00, 0xd7, 0xfd, 0x59, 0xfb, 0x2b, 0xfa, 0x55, 0xfa, 0xa4, 0xf8, 0x1a, 0xf9, 0x64, 0xfa, + 0x57, 0xf9, 0x58, 0xf8, 0x6b, 0xf8, 0xb6, 0xf7, 0x1c, 0xf5, 0xfa, 0xf1, 0x19, 0xef, 0x49, 0xed, + 0x02, 0xec, 0xad, 0xe9, 0x2f, 0xe8, 0x2b, 0xea, 0x37, 0xeb, 0x45, 0xec, 0x60, 0xf0, 0xef, 0xf3, + 0xdb, 0xf6, 0x84, 0xf8, 0x25, 0xf7, 0x44, 0xf4, 0x06, 0xf4, 0x54, 0xf4, 0xc2, 0xf4, 0xaa, 0xf7, + 0x9d, 0xf7, 0x86, 0xf7, 0xf2, 0xf9, 0xa9, 0xfb, 0x4e, 0xfc, 0xd6, 0xfd, 0x12, 0x03, 0xdf, 0x09, + 0xcf, 0x0f, 0x9a, 0x13, 0x88, 0x14, 0x89, 0x13, 0x2d, 0x12, 0xbd, 0x0b, 0x26, 0x04, 0x79, 0xfe, + 0x76, 0xfa, 0xba, 0xf6, 0x92, 0xf1, 0x02, 0xef, 0xb5, 0xef, 0x8c, 0xf2, 0x19, 0xf5, 0x56, 0xf8, + 0x68, 0xfc, 0xaa, 0x00, 0x79, 0x03, 0xb5, 0x06, 0xee, 0x09, 0x7f, 0x0b, 0xd8, 0x0c, 0xe0, 0x0a, + 0xcc, 0x06, 0x80, 0x03, 0xb0, 0x00, 0x16, 0x01, 0x24, 0x02, 0xa9, 0x03, 0xb2, 0x05, 0x94, 0x07, + 0x7b, 0x09, 0x9f, 0x08, 0xf4, 0x06, 0xdb, 0x06, 0xcf, 0x06, 0x66, 0x04, 0xbf, 0x00, 0x00, 0xfe, + 0x72, 0xfc, 0xdc, 0xfb, 0x4b, 0xfb, 0xd2, 0xfa, 0xbd, 0xf9, 0x09, 0xfa, 0xa5, 0xfa, 0xef, 0xfb, + 0x16, 0xfc, 0x61, 0xf8, 0x6a, 0xf3, 0x90, 0xee, 0x0e, 0xea, 0xe6, 0xe6, 0x8e, 0xe5, 0xd6, 0xe4, + 0x93, 0xe8, 0xc7, 0xed, 0x65, 0xf0, 0xb0, 0xf2, 0x1d, 0xf6, 0xed, 0xf8, 0x31, 0xfb, 0x41, 0x01, + 0x12, 0x08, 0x2d, 0x0c, 0xfc, 0x0d, 0xe5, 0x0c, 0x7f, 0x0d, 0x44, 0x0f, 0x37, 0x0c, 0x6f, 0x04, + 0xd8, 0xfe, 0x96, 0xfc, 0x15, 0xfb, 0x86, 0xf8, 0x5b, 0xf5, 0xa5, 0xf3, 0xb4, 0xf5, 0x56, 0xf9, + 0xcd, 0xf9, 0xb1, 0xfb, 0x7a, 0xfe, 0x87, 0xff, 0x40, 0x02, 0x5a, 0x03, 0x6d, 0x03, 0x38, 0x03, + 0x60, 0x02, 0x4c, 0x03, 0x90, 0x04, 0xdb, 0x04, 0x77, 0x06, 0x95, 0x08, 0x58, 0x0c, 0x2a, 0x10, + 0x29, 0x11, 0x86, 0x14, 0xd5, 0x14, 0x03, 0x12, 0xa4, 0x10, 0x0f, 0x0e, 0x51, 0x09, 0xb5, 0x03, + 0x50, 0xfd, 0x3d, 0xfa, 0xbb, 0xfa, 0xe0, 0xf9, 0xaf, 0xf8, 0x18, 0xfa, 0x82, 0xfd, 0x07, 0x02, + 0x0c, 0x04, 0x01, 0x05, 0x0e, 0x06, 0x4e, 0x07, 0xb1, 0x07, 0x25, 0x07, 0xe4, 0x06, 0x47, 0x07, + 0x50, 0x05, 0x00, 0x03, 0xd3, 0x02, 0xde, 0x01, 0xb1, 0x01, 0xa6, 0x03, 0xd2, 0x06, 0xc5, 0x09, + 0xd0, 0x0d, 0x49, 0x14, 0x72, 0x18, 0x4d, 0x19, 0xa2, 0x18, 0x1c, 0x15, 0x5a, 0x11, 0x89, 0x0b, + 0x88, 0x00, 0xd3, 0xf6, 0xb6, 0xef, 0x03, 0xe8, 0x24, 0xe1, 0xb8, 0xdd, 0x06, 0xdf, 0xcb, 0xe1, + 0xf6, 0xe4, 0x88, 0xe8, 0x80, 0xed, 0x39, 0xf4, 0x7c, 0xf7, 0x72, 0xf8, 0xc7, 0xf9, 0xb9, 0xf9, + 0x3e, 0xf8, 0x57, 0xf6, 0xcb, 0xf6, 0x75, 0xf9, 0x8e, 0xfb, 0xe2, 0xfa, 0x20, 0xfb, 0x42, 0xfd, + 0xe7, 0xff, 0x52, 0x01, 0xda, 0x03, 0xef, 0x04, 0x3c, 0x03, 0xe0, 0x03, 0xd3, 0x02, 0xd1, 0x00, + 0xce, 0x00, 0x5f, 0xff, 0xc2, 0xfe, 0x3d, 0x01, 0xbb, 0x04, 0x7b, 0x07, 0xee, 0x08, 0xd3, 0x0a, + 0xba, 0x0a, 0x7e, 0x0a, 0x28, 0x0b, 0x6e, 0x0a, 0xd5, 0x0a, 0x88, 0x0b, 0x72, 0x0b, 0x33, 0x0d, + 0x58, 0x0f, 0xdb, 0x0f, 0x1e, 0x11, 0x0a, 0x11, 0xfe, 0x0e, 0x62, 0x10, 0xcf, 0x12, 0x7b, 0x14, + 0x40, 0x14, 0x4a, 0x13, 0x46, 0x16, 0x3b, 0x19, 0xb2, 0x19, 0x18, 0x18, 0x35, 0x15, 0xa8, 0x14, + 0x09, 0x12, 0x68, 0x0b, 0x7f, 0x04, 0x29, 0x00, 0xf0, 0xfd, 0xbf, 0xf9, 0xbb, 0xf3, 0x91, 0xf0, + 0x2b, 0xf2, 0x03, 0xf6, 0xef, 0xf6, 0x96, 0xf7, 0x82, 0xf9, 0xda, 0xf8, 0xe6, 0xf5, 0x4d, 0xf2, + 0x94, 0xef, 0x66, 0xec, 0x4a, 0xe8, 0x3b, 0xe5, 0xeb, 0xe2, 0xfd, 0xe0, 0xf2, 0xdf, 0x71, 0xdd, + 0x0c, 0xdd, 0xaf, 0xdf, 0xd5, 0xe0, 0xfc, 0xe1, 0x4f, 0xe3, 0x18, 0xe3, 0x8b, 0xe2, 0x38, 0xe0, + 0xe5, 0xdc, 0xac, 0xda, 0x0e, 0xd8, 0x3f, 0xd6, 0x98, 0xd7, 0x06, 0xdc, 0x30, 0xe1, 0x95, 0xe5, + 0x70, 0xec, 0x51, 0xf2, 0xfc, 0xf5, 0x24, 0xfa, 0x3e, 0xfb, 0x86, 0xfb, 0x5b, 0xfe, 0xef, 0xfe, + 0xed, 0xfd, 0x72, 0xfe, 0xe3, 0xfe, 0x84, 0xff, 0x1c, 0x01, 0xda, 0x02, 0x42, 0x07, 0xf4, 0x0c, + 0x02, 0x12, 0xdd, 0x16, 0x34, 0x1d, 0x17, 0x25, 0x24, 0x2c, 0x61, 0x32, 0x13, 0x37, 0xf6, 0x37, + 0xf8, 0x36, 0x9d, 0x34, 0x0c, 0x2d, 0x66, 0x23, 0x2a, 0x1d, 0x06, 0x19, 0xf6, 0x13, 0xea, 0x0d, + 0x01, 0x0a, 0xfc, 0x09, 0x38, 0x0b, 0x38, 0x0c, 0x0b, 0x0d, 0xa6, 0x0d, 0xd0, 0x0c, 0x2f, 0x09, + 0xd4, 0x04, 0x77, 0x01, 0x91, 0xfe, 0x2d, 0xfd, 0x5c, 0xfc, 0xb7, 0xfb, 0xb5, 0xfc, 0x20, 0xfe, + 0x77, 0xfe, 0x4d, 0xff, 0x89, 0x01, 0x61, 0x02, 0x7d, 0x02, 0xd4, 0x02, 0x8a, 0x01, 0xc0, 0xff, + 0xc2, 0xfd, 0xf6, 0xfb, 0xf7, 0xf8, 0x3c, 0xf6, 0xce, 0xf3, 0x92, 0xf1, 0x50, 0xf1, 0xa9, 0xf0, + 0x8d, 0xef, 0xe3, 0xef, 0xe5, 0xf0, 0x76, 0xf0, 0x65, 0xf1, 0xbd, 0xf1, 0xa3, 0xf0, 0xfd, 0xf0, + 0xd8, 0xf1, 0x05, 0xf2, 0xf1, 0xf1, 0x4f, 0xf3, 0xb5, 0xf4, 0xef, 0xf5, 0x40, 0xf7, 0x74, 0xf9, + 0x13, 0xfc, 0xef, 0xfe, 0x55, 0x01, 0xe7, 0x03, 0xdd, 0x09, 0x1f, 0x11, 0x63, 0x17, 0xe9, 0x1a, + 0x6d, 0x1c, 0x0b, 0x1c, 0xd9, 0x1a, 0xe0, 0x16, 0x3f, 0x0f, 0x03, 0x09, 0x37, 0x05, 0x2e, 0x02, + 0x2d, 0xff, 0xc0, 0xfd, 0xdf, 0xfd, 0x3f, 0xff, 0x84, 0x02, 0x3f, 0x04, 0x7e, 0x06, 0xd2, 0x08, + 0x52, 0x09, 0x6f, 0x09, 0x42, 0x09, 0xbf, 0x07, 0xad, 0x05, 0x1e, 0x02, 0x65, 0xff, 0xa1, 0xfe, + 0x40, 0xff, 0xbf, 0x00, 0x16, 0x01, 0x28, 0x02, 0x63, 0x05, 0x7f, 0x06, 0xb5, 0x05, 0x8c, 0x03, + 0x6b, 0x00, 0x42, 0xff, 0xe2, 0xfd, 0xbb, 0xfa, 0x53, 0xf8, 0x03, 0xf5, 0xbc, 0xf1, 0x8d, 0xf0, + 0x37, 0xf1, 0xaf, 0xf2, 0x45, 0xf4, 0x00, 0xf6, 0xcb, 0xf7, 0x3b, 0xfb, 0xe1, 0xfd, 0xc5, 0xfe, + 0xf6, 0xff, 0xbf, 0xff, 0x13, 0xfe, 0x4d, 0xfc, 0xbb, 0xfa, 0x81, 0xf9, 0xa4, 0xf9, 0x1b, 0xfb, + 0x25, 0xfb, 0x63, 0xfb, 0xd1, 0xfc, 0x06, 0xfd, 0xdf, 0xfd, 0x42, 0xff, 0x3c, 0x04, 0xf6, 0x0b, + 0x07, 0x0e, 0x36, 0x0d, 0xfc, 0x0a, 0x7c, 0x08, 0x70, 0x04, 0x27, 0xfb, 0x32, 0xf2, 0xec, 0xed, + 0x6a, 0xec, 0xb7, 0xe9, 0x0e, 0xe6, 0xbe, 0xe4, 0xe1, 0xe5, 0x6c, 0xe9, 0x2b, 0xec, 0xd3, 0xed, + 0xd4, 0xf1, 0xcb, 0xf5, 0xac, 0xf7, 0x45, 0xf8, 0xce, 0xf8, 0xc4, 0xf9, 0x5d, 0xf9, 0xa0, 0xf7, + 0x6e, 0xf7, 0x55, 0xf9, 0x26, 0xfb, 0xd8, 0xfb, 0x38, 0xfd, 0x0a, 0x00, 0x6d, 0x03, 0x5a, 0x06, + 0xcf, 0x07, 0xfd, 0x06, 0x4d, 0x08, 0x61, 0x09, 0x4d, 0x07, 0x38, 0x06, 0xda, 0x05, 0xbd, 0x04, + 0xcd, 0x04, 0x0a, 0x06, 0x74, 0x07, 0xe0, 0x08, 0xa4, 0x0b, 0x87, 0x0e, 0x5e, 0x11, 0x05, 0x14, + 0x46, 0x14, 0x07, 0x13, 0xd7, 0x12, 0x2c, 0x11, 0xb7, 0x0e, 0xe1, 0x0c, 0x03, 0x0a, 0x3b, 0x08, + 0x92, 0x07, 0xb2, 0x05, 0xe8, 0x04, 0x31, 0x06, 0x0b, 0x07, 0xd7, 0x07, 0x0b, 0x09, 0x5f, 0x0c, + 0x05, 0x13, 0x41, 0x17, 0x8a, 0x18, 0x26, 0x19, 0x70, 0x18, 0x5c, 0x16, 0xc3, 0x0f, 0xad, 0x07, + 0xdc, 0x01, 0x5d, 0xfc, 0x4c, 0xf7, 0x0d, 0xf3, 0xed, 0xef, 0x74, 0xef, 0x61, 0xef, 0xbc, 0xef, + 0x6c, 0xef, 0xca, 0xee, 0x50, 0xef, 0x3e, 0xef, 0x14, 0xef, 0xa3, 0xef, 0x31, 0xef, 0x25, 0xee, + 0xdf, 0xec, 0xff, 0xec, 0xd4, 0xed, 0x0e, 0xed, 0x70, 0xec, 0x04, 0xec, 0x54, 0xed, 0xd5, 0xee, + 0x88, 0xef, 0xeb, 0xf1, 0x80, 0xf3, 0x3e, 0xf4, 0xb3, 0xf4, 0x68, 0xf4, 0x8e, 0xf4, 0x1e, 0xf3, + 0x05, 0xf1, 0x4b, 0xf1, 0xba, 0xf3, 0xa9, 0xf6, 0xdc, 0xf8, 0x17, 0xfd, 0xfc, 0x01, 0x5b, 0x05, + 0xed, 0x08, 0xe6, 0x0a, 0xa6, 0x0b, 0x2e, 0x0d, 0x74, 0x0d, 0x46, 0x0b, 0xb9, 0x0a, 0x32, 0x0b, + 0x60, 0x0c, 0x45, 0x0e, 0x24, 0x10, 0x36, 0x12, 0xa2, 0x15, 0x2e, 0x1a, 0x75, 0x1d, 0x9d, 0x1f, + 0x46, 0x22, 0x22, 0x27, 0xd6, 0x29, 0x34, 0x29, 0x18, 0x28, 0x3f, 0x26, 0x2e, 0x24, 0x65, 0x1e, + 0x81, 0x16, 0x4a, 0x11, 0xad, 0x0d, 0x60, 0x09, 0xf0, 0x02, 0xae, 0xfd, 0x4c, 0xfc, 0x4b, 0xfc, + 0xcc, 0xfc, 0x32, 0xfe, 0x2f, 0x00, 0xc7, 0x02, 0xc9, 0x03, 0xb8, 0x03, 0xda, 0x04, 0x4a, 0x05, + 0x38, 0x03, 0x4f, 0xff, 0x63, 0xfc, 0x73, 0xfa, 0xf1, 0xf8, 0xbb, 0xf7, 0xe5, 0xf6, 0x0f, 0xf8, + 0x4e, 0xfa, 0x2c, 0xfc, 0xc6, 0xfd, 0x62, 0xfe, 0x52, 0xfd, 0x15, 0xfc, 0x9f, 0xf8, 0xee, 0xf2, + 0x43, 0xec, 0x74, 0xe6, 0xa4, 0xe2, 0x0d, 0xe1, 0xed, 0xe0, 0x6a, 0xe1, 0x36, 0xe3, 0xbe, 0xe5, + 0x88, 0xe6, 0xd4, 0xe6, 0x27, 0xe7, 0xa1, 0xe7, 0x57, 0xe8, 0xee, 0xe7, 0x82, 0xe7, 0x6a, 0xe7, + 0xea, 0xe5, 0xc1, 0xe4, 0xc5, 0xe4, 0xc2, 0xe4, 0x2b, 0xe6, 0x46, 0xe8, 0xfc, 0xeb, 0x83, 0xf0, + 0x75, 0xf5, 0xbc, 0xfa, 0x0c, 0x01, 0x83, 0x07, 0x04, 0x0b, 0x90, 0x0d, 0x92, 0x0e, 0xae, 0x0f, + 0x36, 0x0e, 0x92, 0x08, 0x6a, 0x03, 0x7c, 0x01, 0x5d, 0x00, 0x09, 0xfd, 0x08, 0xfa, 0xea, 0xf9, + 0x72, 0xfd, 0xce, 0x00, 0x88, 0x02, 0x3f, 0x06, 0xf2, 0x0c, 0xd2, 0x10, 0xf3, 0x11, 0x91, 0x12, + 0x76, 0x12, 0xa5, 0x12, 0xeb, 0x11, 0x33, 0x10, 0x12, 0x0f, 0xe3, 0x0e, 0xcb, 0x0e, 0xe7, 0x0e, + 0x5d, 0x0e, 0x5a, 0x0e, 0x77, 0x0e, 0x6d, 0x0e, 0xa0, 0x0c, 0xe1, 0x09, 0x36, 0x08, 0x4b, 0x05, + 0xca, 0x01, 0xf6, 0xff, 0xe6, 0xfd, 0xb3, 0xfd, 0xa6, 0x00, 0xef, 0x02, 0xa3, 0x04, 0xc5, 0x07, + 0xa7, 0x0a, 0x98, 0x0b, 0x52, 0x0c, 0x69, 0x0c, 0x38, 0x0b, 0xf7, 0x09, 0x1f, 0x07, 0x68, 0x03, + 0xa6, 0x00, 0x63, 0xff, 0x71, 0xfd, 0xb8, 0xfc, 0xe3, 0xfc, 0xf8, 0xfb, 0x73, 0xfc, 0xb0, 0xfd, + 0xba, 0xfe, 0x68, 0x01, 0xd0, 0x04, 0x85, 0x09, 0x62, 0x0d, 0x06, 0x0e, 0xbb, 0x0c, 0x0d, 0x0a, + 0x73, 0x08, 0x6f, 0x05, 0xb9, 0xff, 0x8e, 0xf8, 0xfb, 0xf1, 0x85, 0xee, 0xeb, 0xea, 0xa2, 0xe8, + 0xff, 0xe9, 0x5c, 0xec, 0xfa, 0xee, 0xd6, 0xf0, 0x21, 0xf3, 0x76, 0xf6, 0xf6, 0xf7, 0xd6, 0xf8, + 0x86, 0xfa, 0x38, 0xfb, 0x52, 0xfb, 0x71, 0xf9, 0xe0, 0xf7, 0x18, 0xf9, 0x0b, 0xfa, 0xef, 0xfa, + 0x30, 0xfb, 0xd0, 0xfb, 0xb2, 0xfe, 0xfc, 0x00, 0xa5, 0x03, 0xf8, 0x05, 0xa8, 0x05, 0x31, 0x06, + 0xaa, 0x05, 0x06, 0x04, 0xde, 0x02, 0xea, 0xff, 0xa0, 0xfc, 0xdd, 0xfa, 0x15, 0xfb, 0xe1, 0xfc, + 0x0a, 0xff, 0x3a, 0x02, 0xa2, 0x04, 0x19, 0x07, 0x37, 0x09, 0x77, 0x09, 0xa8, 0x09, 0x0b, 0x09, + 0x9e, 0x06, 0x90, 0x03, 0xd3, 0x00, 0xf8, 0xfe, 0x3b, 0xfe, 0xd4, 0xfd, 0xc1, 0xfe, 0x41, 0x01, + 0x08, 0x04, 0x03, 0x06, 0xaf, 0x08, 0x46, 0x0c, 0x8b, 0x11, 0x89, 0x16, 0x6c, 0x18, 0xe7, 0x19, + 0x47, 0x1a, 0xbf, 0x1a, 0x23, 0x18, 0x48, 0x11, 0x13, 0x09, 0x8c, 0x03, 0x77, 0xff, 0x1a, 0xf9, + 0xa1, 0xf4, 0x53, 0xf3, 0x18, 0xf4, 0x6d, 0xf5, 0xc3, 0xf5, 0xfa, 0xf5, 0x06, 0xf8, 0x68, 0xfa, + 0xa7, 0xf9, 0x37, 0xf8, 0x3c, 0xf7, 0x6d, 0xf5, 0x0c, 0xf2, 0xa1, 0xee, 0xe8, 0xec, 0x40, 0xed, + 0x13, 0xee, 0x46, 0xed, 0xb6, 0xed, 0x89, 0xf0, 0x3b, 0xf2, 0xa7, 0xf4, 0x3f, 0xf5, 0x3b, 0xf4, + 0xac, 0xf2, 0xce, 0xee, 0x7e, 0xeb, 0x48, 0xe9, 0x4a, 0xe8, 0x6f, 0xe9, 0xa8, 0xec, 0xc9, 0xef, + 0x6b, 0xf2, 0x0a, 0xf6, 0x5d, 0xf9, 0xf9, 0xfb, 0x08, 0xff, 0xc3, 0xff, 0xfe, 0xfe, 0x05, 0xff, + 0x73, 0x00, 0xbb, 0x01, 0x99, 0x02, 0x1b, 0x05, 0xa8, 0x07, 0x4f, 0x09, 0x5d, 0x0a, 0x6f, 0x0c, + 0x60, 0x10, 0x44, 0x13, 0xcd, 0x14, 0xd5, 0x17, 0xc7, 0x1b, 0x28, 0x21, 0xd0, 0x24, 0x46, 0x25, + 0x79, 0x26, 0x19, 0x26, 0x00, 0x24, 0xb0, 0x1d, 0x11, 0x14, 0x0d, 0x0b, 0x7a, 0x04, 0x66, 0xfd, + 0xde, 0xf6, 0x93, 0xf3, 0x99, 0xf2, 0x3b, 0xf3, 0x09, 0xf5, 0xbd, 0xf7, 0xef, 0xf9, 0x79, 0xfc, + 0x4d, 0xfe, 0x52, 0xff, 0x33, 0x01, 0x09, 0x02, 0x84, 0x00, 0x98, 0xfe, 0x61, 0xfd, 0xbc, 0xfc, + 0x12, 0xfc, 0x0b, 0xfb, 0x17, 0xfa, 0x0d, 0xfb, 0xba, 0xfc, 0x88, 0xfc, 0x8e, 0xfd, 0x72, 0xfd, + 0xe5, 0xfb, 0xa4, 0xf9, 0xf6, 0xf5, 0xe4, 0xf1, 0x03, 0xef, 0xf4, 0xec, 0xab, 0xeb, 0x67, 0xed, + 0x8f, 0xef, 0x8c, 0xf0, 0x6b, 0xf0, 0x6a, 0xf1, 0x7a, 0xf3, 0xf8, 0xf5, 0x1e, 0xf8, 0xb0, 0xf8, + 0xbe, 0xf9, 0x44, 0xfb, 0x64, 0xfa, 0x48, 0xf9, 0xc6, 0xf9, 0x45, 0xf9, 0x38, 0xf9, 0xdc, 0xf8, + 0x98, 0xf8, 0x41, 0xfa, 0x85, 0xfd, 0x1c, 0x01, 0xa9, 0x05, 0xa8, 0x0c, 0x9d, 0x15, 0xdd, 0x1a, + 0x83, 0x1c, 0x82, 0x1e, 0x7e, 0x1f, 0xb5, 0x1e, 0x51, 0x19, 0x52, 0x10, 0xfe, 0x08, 0x10, 0x05, + 0x9c, 0x02, 0xbf, 0xff, 0x13, 0xfd, 0xfe, 0xfd, 0xa0, 0x00, 0x00, 0x04, 0x1e, 0x07, 0x7c, 0x09, + 0x7a, 0x0d, 0xca, 0x0e, 0x61, 0x0d, 0x30, 0x0c, 0x12, 0x0a, 0xfe, 0x07, 0x3a, 0x06, 0xda, 0x03, + 0xa3, 0x02, 0x0b, 0x02, 0xd8, 0x01, 0xda, 0x00, 0x4e, 0x01, 0xcd, 0x02, 0x04, 0x04, 0x28, 0x05, + 0xa6, 0x02, 0x05, 0x00, 0xc1, 0xff, 0xe8, 0xfd, 0x59, 0xfa, 0x48, 0xf8, 0xd4, 0xf6, 0x4b, 0xf7, + 0xfa, 0xf7, 0x0e, 0xf8, 0x2b, 0xf9, 0x6b, 0xfb, 0x18, 0x00, 0x0b, 0x04, 0xca, 0x07, 0x64, 0x0b, + 0x9f, 0x0b, 0x93, 0x0b, 0xc3, 0x0a, 0xdb, 0x07, 0x07, 0x06, 0x91, 0x03, 0xee, 0x00, 0x32, 0x00, + 0x29, 0xff, 0x36, 0xff, 0x7e, 0x00, 0xbd, 0x00, 0x04, 0x02, 0x00, 0x04, 0xa7, 0x06, 0x38, 0x0a, + 0xe0, 0x0a, 0x26, 0x0a, 0x59, 0x07, 0xca, 0x03, 0x2e, 0x02, 0x86, 0xfd, 0xbd, 0xf5, 0x53, 0xef, + 0x6d, 0xea, 0xa9, 0xe7, 0x0e, 0xe5, 0x2b, 0xe3, 0x9d, 0xe3, 0x77, 0xe5, 0x8c, 0xe8, 0x1e, 0xea, + 0x83, 0xeb, 0x36, 0xee, 0xf6, 0xef, 0x4a, 0xf0, 0x94, 0xef, 0xf7, 0xed, 0x3d, 0xec, 0x92, 0xea, + 0xc1, 0xe9, 0x05, 0xea, 0xde, 0xeb, 0xbe, 0xee, 0xd7, 0xf0, 0x5a, 0xf5, 0x2f, 0xfa, 0xce, 0xfd, + 0x84, 0x00, 0xa3, 0x00, 0xc3, 0x01, 0xad, 0x02, 0x33, 0x02, 0x9e, 0x00, 0xb9, 0xfe, 0x61, 0xfe, + 0x71, 0x00, 0x35, 0x02, 0x4a, 0x02, 0xba, 0x02, 0x80, 0x05, 0x67, 0x08, 0xfe, 0x09, 0x6d, 0x0c, + 0xa3, 0x0e, 0xd6, 0x0e, 0x1d, 0x0f, 0xf2, 0x0d, 0x55, 0x0b, 0x7d, 0x09, 0xd4, 0x07, 0x04, 0x07, + 0x5f, 0x06, 0xa4, 0x05, 0x86, 0x06, 0xde, 0x08, 0xd5, 0x0a, 0xd9, 0x0d, 0xe4, 0x11, 0x67, 0x19, + 0x51, 0x21, 0x8a, 0x25, 0xe5, 0x27, 0xcc, 0x27, 0xd7, 0x25, 0x40, 0x20, 0xe3, 0x14, 0xd6, 0x09, + 0x43, 0x03, 0x4f, 0xfe, 0xed, 0xf8, 0x04, 0xf4, 0x46, 0xf3, 0xc9, 0xf6, 0xd8, 0xfa, 0xf5, 0xfd, + 0x0d, 0x00, 0xf0, 0x02, 0x23, 0x04, 0xc0, 0x03, 0xae, 0x03, 0x85, 0x02, 0xf2, 0xff, 0xd2, 0xfc, + 0xca, 0xf9, 0x53, 0xf8, 0x0f, 0xf8, 0x7f, 0xf8, 0x51, 0xf7, 0x0b, 0xf7, 0x6b, 0xf8, 0x18, 0xfa, + 0x71, 0xfb, 0x69, 0xfa, 0x53, 0xf9, 0xb0, 0xf8, 0x9d, 0xf7, 0x31, 0xf4, 0xbc, 0xef, 0x60, 0xec, + 0x73, 0xec, 0xb0, 0xed, 0xe5, 0xed, 0x35, 0xf0, 0xe7, 0xf3, 0x65, 0xf7, 0xc6, 0xfa, 0xe6, 0xfd, + 0xc6, 0xff, 0xd7, 0x00, 0x63, 0x01, 0x9b, 0x00, 0x37, 0x00, 0xc5, 0xff, 0x62, 0xfe, 0xf3, 0xfc, + 0x45, 0xfd, 0x52, 0xfe, 0x2b, 0x01, 0x92, 0x04, 0xf6, 0x06, 0xd6, 0x09, 0xb2, 0x0d, 0xcd, 0x14, + 0x04, 0x1b, 0xac, 0x1d, 0x12, 0x1e, 0x97, 0x1b, 0x5b, 0x19, 0x99, 0x13, 0x27, 0x09, 0x01, 0xff, + 0x92, 0xf8, 0xc0, 0xf4, 0xb1, 0xef, 0xf7, 0xeb, 0x58, 0xec, 0x1f, 0xf0, 0x3d, 0xf3, 0x5b, 0xf4, + 0x76, 0xf6, 0xdd, 0xf9, 0xc8, 0xfb, 0xf5, 0xfa, 0xc9, 0xf9, 0xcf, 0xf8, 0x53, 0xf8, 0x3f, 0xf7, + 0x87, 0xf6, 0x62, 0xf8, 0x62, 0xfb, 0x5b, 0xfe, 0xcd, 0xff, 0x0a, 0x01, 0x25, 0x05, 0xef, 0x08, + 0xee, 0x0a, 0xb7, 0x09, 0x53, 0x07, 0x94, 0x05, 0x38, 0x03, 0x8b, 0xff, 0x9d, 0xf9, 0x5a, 0xf4, + 0x19, 0xf2, 0xd5, 0xf2, 0x1a, 0xf3, 0x3a, 0xf3, 0x3e, 0xf5, 0x6d, 0xf8, 0xf7, 0xfa, 0x62, 0xfc, + 0x2d, 0xfe, 0x84, 0x00, 0x1a, 0x01, 0x10, 0x01, 0xc8, 0x00, 0x19, 0x00, 0xae, 0xff, 0xfa, 0xfd, + 0xab, 0xfc, 0x96, 0xfd, 0x2b, 0x00, 0x00, 0x02, 0xcc, 0x03, 0x9e, 0x05, 0x2f, 0x09, 0xa2, 0x11, + 0x89, 0x17, 0xc1, 0x18, 0x34, 0x1a, 0x5d, 0x1a, 0x91, 0x17, 0xd2, 0x10, 0x1b, 0x09, 0xa5, 0x02, + 0xea, 0xff, 0x4b, 0xff, 0x17, 0xfc, 0x4e, 0xfa, 0x8a, 0xfb, 0x48, 0xfd, 0xd2, 0x01, 0x90, 0x05, + 0xa7, 0x07, 0x47, 0x09, 0xe6, 0x08, 0x4a, 0x07, 0x91, 0x07, 0xad, 0x07, 0xf5, 0x04, 0xda, 0x00, + 0x0e, 0xfe, 0x87, 0xfc, 0x7b, 0xfc, 0x3c, 0xfc, 0xd0, 0xf9, 0x0a, 0xf9, 0x83, 0xfa, 0x7f, 0xfb, + 0x72, 0xfa, 0x00, 0xf8, 0x76, 0xf4, 0xd5, 0xf1, 0x91, 0xef, 0x65, 0xec, 0x29, 0xea, 0xea, 0xe9, + 0xe8, 0xea, 0x1f, 0xec, 0x10, 0xee, 0xdf, 0xef, 0x34, 0xf3, 0x38, 0xf8, 0xdc, 0xfb, 0x4e, 0xfe, + 0x5c, 0xff, 0x70, 0xfe, 0x20, 0xfc, 0x21, 0xfa, 0x1b, 0xfa, 0xbe, 0xf9, 0xbd, 0xf9, 0x41, 0xf9, + 0xb8, 0xf9, 0xce, 0xfc, 0x0c, 0x00, 0xae, 0x02, 0x7a, 0x05, 0xc0, 0x08, 0xa1, 0x0e, 0x84, 0x17, + 0x19, 0x1b, 0x8c, 0x1b, 0x17, 0x1a, 0x83, 0x16, 0xb1, 0x13, 0x36, 0x0d, 0x57, 0x05, 0x50, 0xfe, + 0x48, 0xf9, 0x06, 0xf6, 0xd8, 0xf4, 0x9b, 0xf6, 0xbb, 0xf9, 0x4c, 0xfd, 0x54, 0x02, 0xce, 0x06, + 0xc9, 0x09, 0xf8, 0x0b, 0x3a, 0x0a, 0xf8, 0x08, 0xef, 0x08, 0xec, 0x06, 0xcc, 0x04, 0x4b, 0x03, + 0x4d, 0x02, 0xc9, 0x00, 0xd0, 0xff, 0xbd, 0xfe, 0x87, 0xfe, 0x3c, 0x01, 0x74, 0x04, 0x8f, 0x05, + 0x05, 0x05, 0x7a, 0x01, 0xc2, 0xfd, 0x01, 0xfc, 0x30, 0xfa, 0xb4, 0xf8, 0xe3, 0xf5, 0x7c, 0xf3, + 0xc8, 0xf3, 0x63, 0xf5, 0x0f, 0xf7, 0xd9, 0xf8, 0xfa, 0xfa, 0x12, 0xfe, 0x33, 0x01, 0x14, 0x02, + 0x3f, 0x02, 0xfc, 0x01, 0x52, 0x02, 0xf9, 0x01, 0x75, 0x00, 0x7c, 0xff, 0x81, 0xfb, 0x3d, 0xf8, + 0x39, 0xf8, 0xa6, 0xf9, 0xbd, 0xfc, 0xf5, 0xff, 0x41, 0x03, 0x84, 0x08, 0x84, 0x11, 0xf3, 0x17, + 0xd3, 0x19, 0x9b, 0x1a, 0x75, 0x19, 0xe2, 0x17, 0x09, 0x14, 0xb0, 0x0c, 0x25, 0x05, 0x1b, 0x01, + 0x42, 0xfe, 0x34, 0xfc, 0xf3, 0xfc, 0x87, 0xfe, 0x56, 0x01, 0xf8, 0x04, 0xb9, 0x07, 0x9c, 0x0a, + 0x65, 0x0d, 0x60, 0x0c, 0x3f, 0x09, 0x96, 0x07, 0x0c, 0x05, 0x4b, 0x01, 0x70, 0xfd, 0x46, 0xf9, + 0xa6, 0xf6, 0x21, 0xf7, 0xcb, 0xf6, 0x62, 0xf5, 0xce, 0xf4, 0x1d, 0xf6, 0x93, 0xf7, 0xec, 0xf6, + 0xea, 0xf5, 0x5d, 0xf4, 0x15, 0xf3, 0xf3, 0xf0, 0xa6, 0xec, 0x7f, 0xe8, 0x2c, 0xe5, 0x58, 0xe3, + 0x48, 0xe3, 0xcd, 0xe3, 0xf4, 0xe4, 0xcf, 0xe6, 0xb3, 0xe9, 0x81, 0xed, 0xd9, 0xf0, 0xd4, 0xf2, + 0x2d, 0xf2, 0xd8, 0xf0, 0x9d, 0xf0, 0x6c, 0xf1, 0xb2, 0xf2, 0xa5, 0xf3, 0xb0, 0xf3, 0x3f, 0xf5, + 0x86, 0xf8, 0xd3, 0xfd, 0xea, 0x03, 0x7b, 0x09, 0x9a, 0x0e, 0x7b, 0x16, 0xf0, 0x1e, 0x18, 0x21, + 0xad, 0x20, 0xfa, 0x1e, 0xd5, 0x1c, 0xde, 0x17, 0xa7, 0x0d, 0x3a, 0x02, 0x2b, 0xfc, 0xe6, 0xf8, + 0x38, 0xf6, 0x15, 0xf5, 0x18, 0xf6, 0xec, 0xfa, 0x86, 0xff, 0x10, 0x03, 0xff, 0x04, 0x1f, 0x08, + 0xfe, 0x0a, 0xb9, 0x0a, 0xc3, 0x08, 0xa5, 0x06, 0x6e, 0x04, 0xd5, 0x01, 0xc0, 0xfe, 0x5d, 0xfd, + 0xf7, 0xfe, 0x07, 0x01, 0x87, 0x02, 0x77, 0x04, 0xfb, 0x07, 0x61, 0x0c, 0x8d, 0x0d, 0x58, 0x0c, + 0xe7, 0x09, 0x9d, 0x08, 0x81, 0x06, 0x81, 0x02, 0x88, 0xfe, 0x5c, 0xfc, 0xda, 0xfc, 0x14, 0xfd, + 0xac, 0xfb, 0xb6, 0xfb, 0x86, 0xfe, 0xc4, 0x01, 0x4d, 0x04, 0xe7, 0x04, 0xab, 0x04, 0x80, 0x04, + 0x31, 0x03, 0x8e, 0x01, 0x79, 0x00, 0x11, 0xff, 0x82, 0xfc, 0x5f, 0xfa, 0x62, 0xfa, 0x9d, 0xfc, + 0x1f, 0x00, 0xc0, 0x02, 0xa1, 0x05, 0x7a, 0x0a, 0xc6, 0x12, 0x2f, 0x1a, 0xc8, 0x1b, 0xe6, 0x1a, + 0x3e, 0x17, 0xf2, 0x14, 0x44, 0x12, 0xc1, 0x0a, 0x20, 0x03, 0xb2, 0xfc, 0x9a, 0xf7, 0x2d, 0xf3, + 0x37, 0xf0, 0x73, 0xf0, 0x54, 0xf2, 0xf2, 0xf5, 0xca, 0xf9, 0x9b, 0xfc, 0x5e, 0xff, 0xa2, 0x00, + 0xb1, 0xff, 0x85, 0x00, 0x23, 0x01, 0x2c, 0x00, 0x60, 0xfe, 0x49, 0xfb, 0xad, 0xf9, 0x79, 0xf9, + 0x9e, 0xf9, 0xfd, 0xf8, 0xdc, 0xf7, 0x4e, 0xf9, 0x8e, 0xfb, 0x0d, 0xfb, 0x89, 0xf9, 0x53, 0xf6, + 0x7e, 0xf5, 0x02, 0xf5, 0xca, 0xf0, 0xb6, 0xeb, 0xb6, 0xe7, 0xf4, 0xe6, 0x9f, 0xe8, 0xd2, 0xe9, + 0xcd, 0xeb, 0x72, 0xef, 0x7b, 0xf3, 0x2b, 0xf7, 0x86, 0xfa, 0x8f, 0xfd, 0x31, 0xff, 0x43, 0xff, + 0x4d, 0xff, 0xad, 0xff, 0x04, 0x00, 0x35, 0xff, 0x9d, 0xfe, 0x37, 0xff, 0x1b, 0x01, 0x63, 0x04, + 0x39, 0x07, 0xe7, 0x09, 0x36, 0x10, 0x4a, 0x1b, 0x5a, 0x22, 0x29, 0x24, 0x27, 0x23, 0xdf, 0x1f, + 0x97, 0x1d, 0xff, 0x15, 0x82, 0x09, 0xdb, 0xfe, 0x0b, 0xf7, 0x18, 0xf1, 0x80, 0xed, 0x95, 0xec, + 0x16, 0xed, 0x8e, 0xf0, 0xd9, 0xf4, 0xa6, 0xf8, 0x07, 0xfe, 0xf4, 0x03, 0x6a, 0x05, 0x2d, 0x05, + 0xe7, 0x05, 0x24, 0x04, 0x13, 0x01, 0x8c, 0xfc, 0x1b, 0xf8, 0x8c, 0xf7, 0x0e, 0xf8, 0x7a, 0xf7, + 0xf6, 0xf6, 0xd8, 0xf9, 0x98, 0xfe, 0xb1, 0xff, 0x4a, 0xff, 0x27, 0xfd, 0xc8, 0xfa, 0xe4, 0xfb, + 0xf3, 0xf9, 0x28, 0xf6, 0xa9, 0xf4, 0x16, 0xf4, 0x33, 0xf5, 0x72, 0xf7, 0x34, 0xfb, 0xcd, 0xff, + 0xc4, 0x03, 0x6b, 0x07, 0x6e, 0x0a, 0xed, 0x0c, 0x87, 0x0e, 0xf8, 0x0d, 0xf8, 0x0c, 0xb1, 0x0b, + 0xf6, 0x09, 0x20, 0x07, 0x41, 0x04, 0x99, 0x03, 0xcf, 0x05, 0x4c, 0x09, 0x16, 0x0c, 0x94, 0x0e, + 0x05, 0x12, 0xd1, 0x18, 0x95, 0x1d, 0xb2, 0x1d, 0x3b, 0x1c, 0xb0, 0x17, 0xc2, 0x12, 0x78, 0x0b, + 0xd0, 0x00, 0x53, 0xf6, 0x96, 0xef, 0xf7, 0xeb, 0x68, 0xe9, 0xf6, 0xe9, 0x11, 0xed, 0xc7, 0xf1, + 0x78, 0xf6, 0xff, 0xf8, 0xfd, 0xfa, 0x20, 0xfe, 0x4e, 0xfe, 0x80, 0xfb, 0x74, 0xf9, 0xe3, 0xf7, + 0x0e, 0xf6, 0x0a, 0xf4, 0x67, 0xf2, 0x32, 0xf2, 0xb9, 0xf4, 0xf1, 0xf6, 0x61, 0xf7, 0x52, 0xf9, + 0x5e, 0xfd, 0x70, 0xff, 0xe5, 0xfd, 0x86, 0xfb, 0xd8, 0xf7, 0x32, 0xf6, 0x29, 0xf4, 0xbc, 0xee, + 0x49, 0xea, 0x7a, 0xe8, 0xe0, 0xe9, 0x2f, 0xed, 0x94, 0xf0, 0x23, 0xf5, 0x01, 0xfb, 0xa6, 0x00, + 0xcf, 0x04, 0xbc, 0x07, 0xee, 0x09, 0xc8, 0x09, 0x81, 0x07, 0x82, 0x05, 0x31, 0x05, 0x85, 0x05, + 0x87, 0x05, 0x91, 0x05, 0xb4, 0x06, 0x86, 0x0a, 0x1b, 0x0f, 0xee, 0x12, 0x42, 0x16, 0x3c, 0x1d, + 0x74, 0x24, 0x53, 0x27, 0xc7, 0x28, 0x10, 0x26, 0x76, 0x22, 0xb6, 0x1c, 0x26, 0x13, 0xe7, 0x09, + 0x21, 0x03, 0x93, 0xfe, 0xfb, 0xf9, 0x25, 0xf8, 0x1f, 0xf9, 0x3e, 0xfb, 0x22, 0xfe, 0xa5, 0x00, + 0xee, 0x02, 0xf1, 0x04, 0x20, 0x05, 0xec, 0x02, 0xb5, 0x01, 0x3d, 0x00, 0xd8, 0xfd, 0xe4, 0xfa, + 0x4c, 0xf6, 0x48, 0xf3, 0xd3, 0xf1, 0x3d, 0xf1, 0x37, 0xf1, 0x9c, 0xf1, 0xd9, 0xf4, 0x31, 0xf8, + 0x25, 0xfa, 0x65, 0xfa, 0x77, 0xf8, 0x29, 0xf8, 0x0d, 0xf6, 0x5b, 0xf1, 0x6e, 0xee, 0xba, 0xed, + 0x55, 0xef, 0xbb, 0xf1, 0xce, 0xf3, 0x27, 0xf6, 0x5d, 0xfa, 0x87, 0xff, 0x4e, 0x03, 0xdb, 0x04, + 0x2a, 0x06, 0xfe, 0x05, 0x88, 0x03, 0x13, 0x01, 0x95, 0xfe, 0x9a, 0xfc, 0xcf, 0xf9, 0xd8, 0xf7, + 0x0b, 0xf9, 0x5e, 0xfc, 0xe3, 0x00, 0x8b, 0x05, 0x9d, 0x09, 0x4e, 0x10, 0x3f, 0x16, 0x7d, 0x18, + 0xf3, 0x18, 0x18, 0x16, 0xcc, 0x12, 0xd2, 0x0c, 0xbc, 0x03, 0xf5, 0xfb, 0x72, 0xf5, 0x38, 0xf0, + 0x6a, 0xec, 0xf5, 0xea, 0xb5, 0xeb, 0xc7, 0xee, 0x9d, 0xf3, 0x75, 0xf8, 0x77, 0xfc, 0x29, 0xff, + 0x04, 0x00, 0xcb, 0xfe, 0x06, 0xfd, 0x80, 0xfa, 0x4e, 0xf8, 0x69, 0xf6, 0xb3, 0xf3, 0x8a, 0xf2, + 0x48, 0xf4, 0x39, 0xf7, 0x1e, 0xf9, 0xb9, 0xfb, 0x1e, 0x00, 0x82, 0x03, 0xdd, 0x05, 0xfe, 0x05, + 0x19, 0x04, 0x84, 0x02, 0x6b, 0xfe, 0xa1, 0xf8, 0x50, 0xf4, 0xd4, 0xf1, 0x6f, 0xf1, 0x07, 0xf2, + 0x31, 0xf4, 0x7b, 0xf8, 0xa8, 0xfe, 0xcf, 0x03, 0xf6, 0x06, 0xbf, 0x08, 0x36, 0x08, 0xe9, 0x04, + 0xbb, 0x00, 0xf5, 0xfc, 0x39, 0xfa, 0xa3, 0xf8, 0x45, 0xf8, 0x7a, 0xf8, 0xa2, 0xfa, 0xfc, 0xfe, + 0xc1, 0x04, 0xe4, 0x0b, 0x59, 0x16, 0x20, 0x21, 0x84, 0x26, 0xbb, 0x28, 0x4e, 0x27, 0x16, 0x23, + 0xa1, 0x1d, 0x97, 0x14, 0x41, 0x0a, 0xbd, 0x02, 0x4b, 0xfe, 0x04, 0xfb, 0x58, 0xf9, 0x24, 0xfa, + 0x3b, 0xfd, 0x15, 0x02, 0x7e, 0x07, 0xec, 0x0a, 0xea, 0x0c, 0xbf, 0x0d, 0xff, 0x0b, 0xc7, 0x09, + 0xbf, 0x06, 0x59, 0x04, 0xea, 0x01, 0x93, 0xff, 0xe2, 0xfd, 0xac, 0xfd, 0xb3, 0xff, 0x9b, 0x00, + 0xcd, 0x01, 0x75, 0x05, 0x95, 0x07, 0xdd, 0x07, 0xe3, 0x06, 0xf9, 0x03, 0x62, 0x00, 0x7f, 0xfb, + 0x5d, 0xf5, 0x32, 0xf0, 0x27, 0xee, 0xb1, 0xed, 0x79, 0xee, 0xb6, 0xf0, 0x0f, 0xf5, 0x39, 0xfb, + 0xde, 0x00, 0xdf, 0x04, 0x22, 0x06, 0xeb, 0x05, 0xd7, 0x03, 0x53, 0xff, 0xdf, 0xfa, 0x3e, 0xf7, + 0x9e, 0xf3, 0x45, 0xf1, 0xe9, 0xf0, 0x97, 0xf3, 0xf5, 0xf8, 0xea, 0xfe, 0xdd, 0x03, 0x4e, 0x0c, + 0x89, 0x15, 0x4a, 0x19, 0xfe, 0x1b, 0x25, 0x18, 0x7d, 0x13, 0xae, 0x0d, 0x6c, 0x02, 0x12, 0xf8, + 0x81, 0xef, 0x25, 0xea, 0x4e, 0xe5, 0x86, 0xe2, 0xff, 0xe3, 0x43, 0xe7, 0xb1, 0xea, 0x19, 0xee, + 0x35, 0xf1, 0xb1, 0xf4, 0x79, 0xf7, 0x35, 0xf6, 0x00, 0xf4, 0xbd, 0xf2, 0xa2, 0xf1, 0x08, 0xf0, + 0x15, 0xee, 0x1b, 0xee, 0x4b, 0xf0, 0x6e, 0xf4, 0xc7, 0xf7, 0x56, 0xfc, 0xf6, 0x02, 0x03, 0x07, + 0x2c, 0x08, 0xae, 0x08, 0xf1, 0x07, 0x9c, 0x06, 0x02, 0x04, 0x6d, 0xfe, 0x1b, 0xfb, 0x04, 0xfa, + 0x69, 0xf9, 0x3a, 0xf8, 0x4e, 0xf7, 0xfa, 0xf8, 0x40, 0xfd, 0x94, 0x02, 0x99, 0x05, 0x0c, 0x08, + 0x79, 0x09, 0xe3, 0x08, 0x80, 0x07, 0xc7, 0x06, 0x47, 0x06, 0x1e, 0x04, 0x8f, 0x01, 0x52, 0x01, + 0xa8, 0x04, 0x94, 0x09, 0xe0, 0x0c, 0x43, 0x0f, 0xf4, 0x16, 0xf7, 0x1f, 0xfa, 0x23, 0x82, 0x24, + 0x8a, 0x20, 0x10, 0x1e, 0xfb, 0x18, 0x5a, 0x0e, 0x3e, 0x03, 0x3b, 0xfc, 0x0a, 0xf7, 0x58, 0xf1, + 0xf7, 0xee, 0x13, 0xf0, 0x0c, 0xf5, 0xa7, 0xfb, 0x6d, 0x01, 0x6a, 0x07, 0x59, 0x0d, 0xe2, 0x0f, + 0xe2, 0x0d, 0x15, 0x0b, 0x96, 0x08, 0xee, 0x05, 0x4b, 0x01, 0x66, 0xfb, 0x15, 0xf9, 0x54, 0xf9, + 0x87, 0xfa, 0xb1, 0xf9, 0x30, 0xfb, 0xf5, 0xfe, 0x5b, 0x01, 0x3a, 0x02, 0xfa, 0x00, 0xa9, 0xfe, + 0xe0, 0xfa, 0x7d, 0xf4, 0x13, 0xee, 0x7a, 0xe9, 0x9a, 0xe6, 0x0a, 0xe5, 0x3e, 0xe5, 0x78, 0xe8, + 0x6e, 0xee, 0x23, 0xf4, 0x2f, 0xf9, 0x97, 0xfc, 0xed, 0xfd, 0x2c, 0xff, 0x7b, 0xfe, 0x3a, 0xfd, + 0xea, 0xfc, 0x0a, 0xfc, 0xc2, 0xfa, 0x22, 0xf9, 0x25, 0xf9, 0x2c, 0xfb, 0x5a, 0xfe, 0xa6, 0x02, + 0x71, 0x09, 0xa5, 0x12, 0x47, 0x17, 0x35, 0x1a, 0x7f, 0x1a, 0x75, 0x18, 0xa7, 0x15, 0xd2, 0x0c, + 0xca, 0x01, 0xc4, 0xfa, 0xc6, 0xf6, 0x6c, 0xf2, 0xd6, 0xee, 0x4b, 0xee, 0xf4, 0xf1, 0x30, 0xf9, + 0xa6, 0xff, 0x7e, 0x03, 0x96, 0x06, 0xdb, 0x08, 0xac, 0x07, 0x87, 0x05, 0x20, 0x04, 0x77, 0x02, + 0x67, 0x00, 0xb8, 0xfc, 0xf3, 0xf9, 0xac, 0xf9, 0x80, 0xfa, 0xf7, 0xfa, 0x09, 0xfe, 0x9c, 0x03, + 0x8c, 0x07, 0x7e, 0x08, 0xe3, 0x06, 0x9a, 0x04, 0xa7, 0x02, 0xfb, 0xfe, 0x84, 0xf8, 0xc2, 0xf2, + 0xab, 0xef, 0x16, 0xee, 0x58, 0xee, 0x53, 0xf0, 0xbf, 0xf3, 0x9a, 0xf9, 0x7a, 0x00, 0xcc, 0x05, + 0x56, 0x09, 0x14, 0x0c, 0x16, 0x0d, 0xda, 0x0c, 0x17, 0x0b, 0xcc, 0x08, 0xd6, 0x07, 0xaf, 0x06, + 0x8a, 0x06, 0x61, 0x07, 0x30, 0x0a, 0xdb, 0x0d, 0x84, 0x14, 0x73, 0x1c, 0x01, 0x21, 0xbc, 0x23, + 0xb5, 0x20, 0xf3, 0x1a, 0xb3, 0x13, 0x65, 0x08, 0x46, 0xfc, 0xe5, 0xf2, 0x6f, 0xec, 0xbd, 0xe7, + 0xdb, 0xe5, 0x21, 0xe7, 0xb3, 0xeb, 0x59, 0xf3, 0x1e, 0xfc, 0x4c, 0x02, 0x14, 0x08, 0x64, 0x0b, + 0x9e, 0x0b, 0x05, 0x0b, 0xf0, 0x08, 0xf8, 0x04, 0xd9, 0x00, 0xc1, 0xfc, 0x25, 0xf9, 0xbb, 0xf7, + 0x3c, 0xf8, 0x63, 0xf9, 0x13, 0xfc, 0x4a, 0x00, 0x5a, 0x03, 0x80, 0x04, 0x16, 0x03, 0xda, 0xff, + 0xa5, 0xfb, 0x5e, 0xf7, 0xe7, 0xef, 0x14, 0xe9, 0xcf, 0xe4, 0x9b, 0xe1, 0x25, 0xe1, 0x65, 0xe3, + 0xa5, 0xe7, 0xca, 0xed, 0xd1, 0xf4, 0x85, 0xfb, 0x14, 0x01, 0x4e, 0x04, 0x72, 0x04, 0x46, 0x02, + 0x84, 0xfe, 0x46, 0xfa, 0x6c, 0xf6, 0x41, 0xf3, 0x3e, 0xf3, 0x5d, 0xf6, 0xcd, 0xfb, 0xd4, 0x01, + 0xf8, 0x0b, 0xc3, 0x16, 0x30, 0x1e, 0x32, 0x23, 0x93, 0x21, 0x19, 0x1e, 0xb7, 0x16, 0x4e, 0x0a, + 0xee, 0xfd, 0x62, 0xf5, 0xba, 0xf0, 0x58, 0xed, 0x87, 0xec, 0x5a, 0xef, 0x0c, 0xf5, 0x30, 0xfc, + 0x95, 0x03, 0xe5, 0x0a, 0x80, 0x12, 0x72, 0x16, 0x9a, 0x15, 0xb1, 0x12, 0x18, 0x0e, 0xb9, 0x09, + 0x3e, 0x04, 0x52, 0xfe, 0x47, 0xfb, 0x16, 0xfa, 0x18, 0xfa, 0x55, 0xfa, 0x01, 0xfd, 0xb0, 0x00, + 0xeb, 0x02, 0x8b, 0x02, 0x06, 0x00, 0x9f, 0xfc, 0x17, 0xf9, 0x51, 0xf3, 0xe4, 0xeb, 0xfc, 0xe5, + 0x05, 0xe3, 0x81, 0xe2, 0x96, 0xe3, 0x74, 0xe6, 0x9e, 0xec, 0x32, 0xf4, 0x44, 0xfb, 0x1c, 0x01, + 0x9c, 0x05, 0xbb, 0x08, 0xa9, 0x09, 0x28, 0x08, 0xb8, 0x04, 0xb6, 0x01, 0x3c, 0x00, 0x5a, 0xff, + 0xe1, 0x00, 0x7c, 0x05, 0x4b, 0x09, 0xa0, 0x0f, 0xbe, 0x1a, 0x3a, 0x23, 0xeb, 0x29, 0xf1, 0x2b, + 0xf7, 0x27, 0xee, 0x22, 0xd4, 0x19, 0x70, 0x0d, 0x97, 0x02, 0x6f, 0xfb, 0x8b, 0xf5, 0x69, 0xf1, + 0x90, 0xf0, 0x4e, 0xf3, 0x99, 0xf9, 0xf9, 0x01, 0xb9, 0x08, 0xd2, 0x0d, 0x54, 0x12, 0x6a, 0x12, + 0x4b, 0x10, 0xc7, 0x0d, 0xa0, 0x09, 0x95, 0x05, 0x4f, 0x01, 0xf3, 0xfd, 0xc4, 0xfb, 0x90, 0xfc, + 0xd5, 0xfd, 0x8b, 0xff, 0x42, 0x04, 0x41, 0x07, 0x4d, 0x08, 0x04, 0x07, 0x79, 0x03, 0x36, 0xff, + 0xc6, 0xf9, 0x34, 0xf2, 0x06, 0xea, 0x50, 0xe4, 0x71, 0xe1, 0x94, 0xe1, 0xd7, 0xe3, 0x51, 0xe8, + 0x07, 0xef, 0x18, 0xf5, 0xd6, 0xfa, 0xc2, 0xfe, 0x7a, 0xff, 0xfc, 0xfd, 0x10, 0xfb, 0x8a, 0xf6, + 0x28, 0xf2, 0x9e, 0xef, 0xc6, 0xec, 0x4f, 0xec, 0x8d, 0xee, 0x74, 0xf2, 0x31, 0xf7, 0xec, 0xff, + 0x8f, 0x07, 0x49, 0x0d, 0xb4, 0x11, 0x89, 0x0f, 0x23, 0x0d, 0xd6, 0x07, 0x27, 0xff, 0x77, 0xf5, + 0x4c, 0xee, 0xe9, 0xe8, 0x35, 0xe5, 0x9d, 0xe6, 0x3f, 0xea, 0xc8, 0xf1, 0xde, 0xfa, 0xd4, 0x02, + 0x38, 0x0a, 0xb8, 0x10, 0x39, 0x14, 0x41, 0x13, 0xa0, 0x11, 0x90, 0x0e, 0xe3, 0x0b, 0xcc, 0x08, + 0xd7, 0x04, 0xe4, 0x01, 0x0e, 0x01, 0x9c, 0x01, 0x84, 0x01, 0x25, 0x05, 0x76, 0x08, 0x6d, 0x0a, + 0x24, 0x0b, 0x97, 0x09, 0x8c, 0x07, 0xa9, 0x04, 0x9b, 0xff, 0xb6, 0xf8, 0xc8, 0xf2, 0x2c, 0xef, + 0x42, 0xee, 0x9c, 0xef, 0xbd, 0xf1, 0x7e, 0xf6, 0x75, 0xfc, 0x93, 0x01, 0x9f, 0x05, 0x79, 0x08, + 0x6e, 0x09, 0x9f, 0x08, 0x76, 0x06, 0xec, 0x02, 0x23, 0xff, 0x5c, 0xfc, 0x4d, 0xfb, 0xd7, 0xfc, + 0xe4, 0x00, 0xc2, 0x04, 0x81, 0x0e, 0x28, 0x18, 0xd9, 0x1e, 0x89, 0x24, 0x47, 0x24, 0x0c, 0x24, + 0x0c, 0x1f, 0xe2, 0x14, 0xb4, 0x09, 0x1e, 0x01, 0x7b, 0xfb, 0x4d, 0xf6, 0x69, 0xf3, 0x0e, 0xf4, + 0x80, 0xf9, 0x3e, 0x00, 0xf0, 0x04, 0xee, 0x08, 0x0b, 0x0e, 0xb7, 0x10, 0x7e, 0x0f, 0x62, 0x0d, + 0xf5, 0x09, 0x54, 0x06, 0xb2, 0x01, 0x92, 0xfc, 0x45, 0xf9, 0xdf, 0xf7, 0x76, 0xf7, 0x3e, 0xf6, + 0x08, 0xf7, 0xa2, 0xf9, 0xc9, 0xfa, 0xd5, 0xf8, 0xf3, 0xf4, 0xc9, 0xf0, 0x13, 0xef, 0x7c, 0xeb, + 0xc3, 0xe6, 0x3b, 0xe4, 0x9e, 0xe3, 0xdc, 0xe4, 0x54, 0xe6, 0xa7, 0xe8, 0x47, 0xed, 0xd5, 0xf1, + 0xfc, 0xf4, 0xfe, 0xf6, 0x14, 0xf8, 0x0a, 0xfa, 0xf7, 0xfa, 0x18, 0xfb, 0xef, 0xf9, 0x30, 0xf9, + 0x08, 0xf9, 0x40, 0xf8, 0x3e, 0xf9, 0xd6, 0xfc, 0xfa, 0xff, 0x73, 0x08, 0xa6, 0x10, 0xa6, 0x17, + 0x98, 0x1c, 0x9f, 0x1a, 0xf8, 0x16, 0x48, 0x10, 0xfe, 0x05, 0x09, 0xfa, 0x9e, 0xf1, 0x1d, 0xed, + 0x24, 0xea, 0x1e, 0xe9, 0x99, 0xeb, 0xfd, 0xf2, 0x79, 0xfd, 0x6d, 0x05, 0x26, 0x0a, 0x65, 0x0f, + 0x83, 0x12, 0x06, 0x12, 0x81, 0x10, 0xc8, 0x0c, 0x06, 0x0a, 0x9a, 0x06, 0x9b, 0x02, 0x1a, 0x00, + 0x34, 0x00, 0xda, 0x02, 0x16, 0x04, 0x48, 0x06, 0x0c, 0x0a, 0x23, 0x0d, 0xd5, 0x0d, 0xd6, 0x0b, + 0x6e, 0x08, 0xce, 0x05, 0x8a, 0x01, 0xe9, 0xfa, 0xe4, 0xf5, 0x24, 0xf4, 0xe8, 0xf4, 0xee, 0xf5, + 0x0e, 0xf7, 0x28, 0xfb, 0x31, 0x01, 0xd0, 0x05, 0xbd, 0x08, 0x17, 0x0b, 0x93, 0x0b, 0x29, 0x0a, + 0x1a, 0x07, 0x45, 0x03, 0xc4, 0x00, 0xe8, 0xfd, 0xde, 0xfa, 0xab, 0xfa, 0x5c, 0xfd, 0x5a, 0x02, + 0x54, 0x0c, 0x0d, 0x14, 0x60, 0x1b, 0xe5, 0x20, 0x97, 0x1f, 0xd9, 0x1c, 0xff, 0x14, 0x87, 0x08, + 0x1f, 0xfc, 0x99, 0xf2, 0x58, 0xeb, 0x13, 0xe5, 0x25, 0xe3, 0x08, 0xe5, 0x5a, 0xeb, 0xd6, 0xf4, + 0x7c, 0xfd, 0xc7, 0x04, 0x05, 0x0c, 0x1a, 0x0f, 0xaa, 0x0e, 0xcc, 0x0c, 0x5f, 0x08, 0x66, 0x03, + 0xc7, 0xfd, 0xae, 0xf8, 0x83, 0xf6, 0xc8, 0xf6, 0xc5, 0xf8, 0x0d, 0xfb, 0x9e, 0xfe, 0xdd, 0x02, + 0x4b, 0x05, 0x9c, 0x04, 0xb6, 0x01, 0xae, 0xfe, 0xba, 0xfb, 0x02, 0xf6, 0xcd, 0xee, 0xaf, 0xe9, + 0xf6, 0xe5, 0x52, 0xe4, 0xcb, 0xe3, 0x3d, 0xe4, 0x02, 0xe7, 0x71, 0xeb, 0x7d, 0xf0, 0xf1, 0xf5, + 0x31, 0xfa, 0x6d, 0xfc, 0x19, 0xfd, 0xd2, 0xfb, 0xfc, 0xf9, 0x05, 0xf8, 0x13, 0xf6, 0xe1, 0xf4, + 0x32, 0xf6, 0x59, 0xf9, 0x2e, 0xff, 0xc0, 0x0b, 0xc2, 0x14, 0xc7, 0x1d, 0x92, 0x24, 0xd2, 0x24, + 0x73, 0x23, 0xa5, 0x1c, 0x19, 0x12, 0x1c, 0x05, 0x50, 0xfc, 0xa1, 0xf4, 0x4c, 0xee, 0x44, 0xeb, + 0x20, 0xeb, 0x06, 0xf0, 0x98, 0xf8, 0x13, 0x01, 0x5d, 0x08, 0x89, 0x0f, 0xdf, 0x11, 0xc1, 0x10, + 0xf1, 0x0e, 0x2e, 0x0a, 0x5f, 0x04, 0x73, 0xfe, 0x91, 0xf9, 0xdb, 0xf7, 0x8d, 0xf8, 0x91, 0xf9, + 0x43, 0xfa, 0x56, 0xfe, 0x76, 0x04, 0xfd, 0x08, 0xc8, 0x0b, 0x3a, 0x0b, 0x2b, 0x08, 0xd1, 0x05, + 0x4d, 0x00, 0xbb, 0xf9, 0xd2, 0xf4, 0xe5, 0xf1, 0xb7, 0xf1, 0xe1, 0xf2, 0x70, 0xf5, 0xbb, 0xf9, + 0x3e, 0xff, 0x51, 0x05, 0x71, 0x09, 0x48, 0x0c, 0x8c, 0x0d, 0x78, 0x0d, 0x8e, 0x0c, 0x32, 0x09, + 0x40, 0x05, 0x87, 0x02, 0xb5, 0x00, 0xd1, 0x01, 0xed, 0x02, 0x2a, 0x08, 0xf6, 0x10, 0xcf, 0x17, + 0xea, 0x1e, 0x60, 0x20, 0x2c, 0x20, 0x90, 0x1d, 0x46, 0x14, 0xb1, 0x07, 0xa1, 0xfb, 0xe4, 0xf2, + 0xfc, 0xea, 0xf5, 0xe3, 0xd4, 0xdf, 0xdf, 0xe1, 0x84, 0xe8, 0xa8, 0xf0, 0xdb, 0xf7, 0xc2, 0xff, + 0x42, 0x07, 0x0e, 0x0a, 0xb3, 0x09, 0x5b, 0x06, 0x2c, 0x01, 0x6b, 0xfb, 0x0d, 0xf4, 0x00, 0xee, + 0x74, 0xea, 0x04, 0xea, 0x4d, 0xea, 0x85, 0xec, 0xfe, 0xf3, 0xce, 0xfb, 0x72, 0x01, 0xa5, 0x03, + 0xda, 0x03, 0x63, 0x04, 0x44, 0x03, 0x5f, 0xfd, 0x0e, 0xf6, 0x7a, 0xef, 0x87, 0xea, 0x49, 0xe8, + 0x71, 0xe7, 0xb4, 0xe8, 0x89, 0xed, 0x1e, 0xf4, 0x61, 0xfa, 0x56, 0xfe, 0xd0, 0x00, 0x9a, 0x01, + 0x8a, 0x00, 0x16, 0xff, 0x1e, 0xfd, 0x0b, 0xfb, 0x0b, 0xf9, 0x5f, 0xf9, 0x5f, 0xfb, 0x05, 0x00, + 0xe0, 0x0a, 0xf7, 0x13, 0x95, 0x1b, 0x51, 0x21, 0x2f, 0x22, 0x19, 0x22, 0xf6, 0x1e, 0x9f, 0x15, + 0x21, 0x0b, 0xdb, 0x02, 0xec, 0xfb, 0x35, 0xf6, 0xb0, 0xf1, 0xac, 0xef, 0x59, 0xf3, 0xb2, 0xfb, + 0x0a, 0x04, 0x19, 0x0b, 0xe1, 0x11, 0x16, 0x16, 0x3b, 0x17, 0xff, 0x15, 0x33, 0x12, 0x2e, 0x0d, + 0x99, 0x07, 0x4b, 0x01, 0xce, 0xfb, 0x6b, 0xf7, 0x6f, 0xf4, 0x90, 0xf2, 0x29, 0xf5, 0x62, 0xfb, + 0xd2, 0xff, 0x66, 0x02, 0x57, 0x02, 0x91, 0x00, 0x37, 0x00, 0xee, 0xfd, 0xa6, 0xf7, 0x1e, 0xf1, + 0x60, 0xec, 0x54, 0xea, 0x50, 0xea, 0xf3, 0xea, 0x5c, 0xed, 0xd2, 0xf2, 0xc7, 0xf9, 0xa8, 0xff, + 0xa9, 0x03, 0xb4, 0x05, 0x04, 0x05, 0xfc, 0x04, 0xdf, 0x03, 0xf6, 0x01, 0xf5, 0x00, 0x27, 0xff, + 0x28, 0x00, 0xb0, 0x02, 0xb8, 0x08, 0xaf, 0x12, 0x3f, 0x19, 0x7f, 0x20, 0xb1, 0x23, 0x34, 0x24, + 0x5b, 0x22, 0x56, 0x1a, 0x19, 0x0f, 0x4f, 0x04, 0xf8, 0xfb, 0xa1, 0xf4, 0x80, 0xee, 0x35, 0xeb, + 0x07, 0xee, 0x5d, 0xf5, 0xd4, 0xfd, 0xfb, 0x04, 0xa9, 0x0b, 0x1d, 0x12, 0x15, 0x14, 0x1c, 0x14, + 0xe3, 0x10, 0x10, 0x0b, 0xe8, 0x04, 0x4e, 0xfd, 0x02, 0xf7, 0x4f, 0xf2, 0x15, 0xef, 0xba, 0xed, + 0x92, 0xee, 0x9d, 0xf3, 0x20, 0xfa, 0xb4, 0xfe, 0xbf, 0x00, 0xf8, 0x00, 0x06, 0x00, 0x05, 0xfe, + 0x6a, 0xf7, 0xde, 0xee, 0xac, 0xe8, 0x98, 0xe4, 0xd6, 0xe2, 0x77, 0xe3, 0xc6, 0xe5, 0x10, 0xeb, + 0x30, 0xf3, 0x71, 0xfb, 0x3c, 0x02, 0xdd, 0x05, 0x58, 0x07, 0xb8, 0x06, 0xbb, 0x05, 0xdc, 0x03, + 0x26, 0x00, 0x58, 0xfd, 0xd6, 0xfb, 0x88, 0xfc, 0x0a, 0xfe, 0xfc, 0x06, 0x1d, 0x0e, 0x16, 0x15, + 0x45, 0x1b, 0xdd, 0x1b, 0xd5, 0x1b, 0xe4, 0x15, 0xb7, 0x0a, 0x51, 0xfd, 0x2a, 0xf4, 0xca, 0xeb, + 0x2c, 0xe3, 0xe8, 0xdd, 0xea, 0xdc, 0xfc, 0xe1, 0xaf, 0xea, 0x85, 0xf2, 0x88, 0xf9, 0x1d, 0x02, + 0x26, 0x07, 0x60, 0x09, 0xbc, 0x0a, 0xcf, 0x08, 0xc6, 0x04, 0x2c, 0xff, 0x65, 0xf9, 0xed, 0xf5, + 0x23, 0xf5, 0xf8, 0xf4, 0xce, 0xf4, 0x1e, 0xf9, 0x1c, 0x00, 0x55, 0x05, 0xa2, 0x08, 0x1b, 0x0b, + 0x80, 0x0b, 0xc0, 0x0b, 0x76, 0x08, 0xf0, 0x00, 0x48, 0xfa, 0xa3, 0xf5, 0x11, 0xf3, 0x73, 0xf2, + 0xec, 0xf2, 0x0c, 0xf5, 0x9f, 0xf9, 0x0e, 0xff, 0x25, 0x04, 0x5f, 0x08, 0x4f, 0x0a, 0xc4, 0x0a, + 0xed, 0x09, 0xdb, 0x08, 0x4b, 0x08, 0x57, 0x07, 0xbb, 0x06, 0x7a, 0x09, 0xa8, 0x0b, 0xe0, 0x13, + 0x37, 0x1e, 0xac, 0x26, 0x13, 0x30, 0xd6, 0x32, 0x06, 0x34, 0x85, 0x30, 0x38, 0x27, 0x18, 0x19, + 0x3a, 0x0c, 0xdc, 0x01, 0x0e, 0xf8, 0xda, 0xef, 0x7e, 0xeb, 0x13, 0xee, 0x5c, 0xf5, 0x48, 0xfe, + 0x94, 0x05, 0x27, 0x0c, 0xcf, 0x10, 0x5e, 0x11, 0x05, 0x10, 0xf4, 0x0b, 0x9b, 0x06, 0xc2, 0xff, + 0xa7, 0xf7, 0xc8, 0xf0, 0x85, 0xeb, 0x34, 0xe9, 0x73, 0xe8, 0x91, 0xe9, 0x95, 0xee, 0x61, 0xf3, + 0x7a, 0xf5, 0xc1, 0xf4, 0x79, 0xf1, 0xe8, 0xee, 0x70, 0xeb, 0x9f, 0xe5, 0x03, 0xdf, 0x56, 0xd9, + 0x99, 0xd6, 0xee, 0xd6, 0x26, 0xd9, 0x7f, 0xdc, 0x88, 0xe1, 0x2f, 0xe7, 0x84, 0xec, 0x79, 0xf0, + 0xdc, 0xf2, 0x46, 0xf4, 0x02, 0xf4, 0x81, 0xf3, 0x22, 0xf3, 0xce, 0xf3, 0x93, 0xf4, 0x10, 0xf7, + 0xda, 0xfa, 0x16, 0x01, 0xec, 0x0d, 0x3f, 0x18, 0x2d, 0x22, 0x99, 0x28, 0x6e, 0x2b, 0x89, 0x2c, + 0xf1, 0x25, 0x99, 0x1a, 0xdd, 0x0e, 0x50, 0x06, 0xa2, 0xfe, 0x91, 0xf7, 0xc4, 0xf2, 0x60, 0xf2, + 0x83, 0xf7, 0x31, 0xfe, 0x91, 0x04, 0xe5, 0x0b, 0xca, 0x12, 0x9f, 0x15, 0x20, 0x16, 0x85, 0x14, + 0x5b, 0x10, 0xb4, 0x0a, 0x1c, 0x03, 0x71, 0xfc, 0x64, 0xf9, 0x28, 0xf9, 0xde, 0xf9, 0x1e, 0xfc, + 0x1c, 0x03, 0x62, 0x0b, 0x8e, 0x11, 0x87, 0x14, 0xa1, 0x14, 0x22, 0x13, 0x94, 0x10, 0x70, 0x0a, + 0x2b, 0x03, 0xc3, 0xfc, 0x08, 0xf7, 0xe8, 0xf3, 0xac, 0xf2, 0x4b, 0xf3, 0x30, 0xf6, 0x9b, 0xf9, + 0xdf, 0xfc, 0xda, 0x00, 0x8c, 0x03, 0xed, 0x03, 0x0d, 0x03, 0x37, 0x01, 0xd6, 0xfe, 0x95, 0xfc, + 0x42, 0xf9, 0xfc, 0xf7, 0x6d, 0xf8, 0x17, 0xfb, 0x4d, 0x05, 0xff, 0x0c, 0x16, 0x15, 0xed, 0x19, + 0x53, 0x1b, 0xce, 0x1c, 0xe4, 0x17, 0x5f, 0x0d, 0xf9, 0x00, 0xa7, 0xf7, 0x79, 0xf0, 0xda, 0xe8, + 0x60, 0xe3, 0x69, 0xe3, 0x8b, 0xe7, 0x49, 0xee, 0x1e, 0xf4, 0xa2, 0xf9, 0xf0, 0xff, 0x4f, 0x03, + 0x44, 0x04, 0xbd, 0x02, 0x8b, 0xff, 0x6d, 0xfa, 0x8c, 0xf3, 0x80, 0xed, 0x87, 0xea, 0xed, 0xea, + 0x67, 0xec, 0x16, 0xee, 0xd2, 0xf2, 0xd1, 0xfa, 0x81, 0x01, 0xc4, 0x05, 0xf0, 0x06, 0xb5, 0x06, + 0x26, 0x06, 0x2d, 0x01, 0x8e, 0xfa, 0x71, 0xf4, 0x88, 0xf0, 0x26, 0xef, 0x41, 0xef, 0x21, 0xf1, + 0x28, 0xf4, 0x4b, 0xf8, 0xd1, 0xfc, 0xc5, 0x00, 0xcd, 0x03, 0xd9, 0x04, +}; + + diff --git a/examples/i2s/i2s_play_form_flash/main.c b/examples/i2s/i2s_play_form_flash/main.c new file mode 100644 index 00000000..16005b17 --- /dev/null +++ b/examples/i2s/i2s_play_form_flash/main.c @@ -0,0 +1,100 @@ + +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "hal_i2s.h" +#include "hal_gpio.h" +#include "hal_dma.h" +#include "fhm_onechannel_16k_20.h" +#include "bsp_es8388.h" + + +static ES8388_Cfg_Type ES8388Cfg = { + .work_mode = ES8388_CODEC_MDOE, /*!< ES8388 work mode */ + .role = ES8388_SLAVE, /*!< ES8388 role */ + .mic_input_mode = ES8388_DIFF_ENDED_MIC, /*!< ES8388 mic input mode */ + .mic_pga = ES8388_MIC_PGA_3DB, /*!< ES8388 mic PGA */ + .i2s_frame = ES8388_LEFT_JUSTIFY_FRAME, /*!< ES8388 I2S frame */ + .data_width = ES8388_DATA_LEN_16, /*!< ES8388 I2S dataWitdh */ +}; + +int main(void) +{ + + bflb_platform_init(0); + + /* init ES8388 Codec */ + ES8388_Init(&ES8388Cfg); + ES8388_Set_Voice_Volume(60); + + MSG("Play Music Form flash\r\n"); + + /* register & open i2s device */ + i2s_register(I2S0_INDEX,"I2S",DEVICE_OFLAG_RDWR); + struct device* i2s = device_find("I2S"); + + ((i2s_device_t*)i2s)->iis_mode = I2S_MODE_MASTER; + ((i2s_device_t*)i2s)->interface_mode = I2S_MODE_LEFT; + ((i2s_device_t*)i2s)->sampl_freq_hz = 16*1000; + ((i2s_device_t*)i2s)->channel_num = I2S_FS_CHANNELS_NUM_MONO; + ((i2s_device_t*)i2s)->frame_size = I2S_FRAME_LEN_16; + ((i2s_device_t*)i2s)->data_size = I2S_DATA_LEN_16; + ((i2s_device_t*)i2s)->fifo_threshold = 8; + + if(i2s) + { + device_open(i2s,DEVICE_OFLAG_DMA_TX|DEVICE_OFLAG_DMA_RX); + MSG("device open success\r\n"); + } + + + /* register & open dma device */ + if(dma_allocate_register("i2s_dma",DEVICE_OFLAG_RDWR) == SUCCESS){ + MSG("dma allocate success\r\n"); + } + + struct device *i2s_dma = device_find("i2s_dma"); + + if(i2s_dma) + { + ((dma_device_t*)i2s_dma)->direction = DMA_MEMORY_TO_PERIPH; + ((dma_device_t*)i2s_dma)->transfer_mode = DMA_LLI_ONCE_MODE; + ((dma_device_t*)i2s_dma)->src_req = DMA_REQUEST_NONE; + ((dma_device_t*)i2s_dma)->dst_req = DMA_REQUEST_I2S_TX; + ((dma_device_t*)i2s_dma)->src_width = DMA_TRANSFER_WIDTH_16BIT; + ((dma_device_t*)i2s_dma)->dst_width = DMA_TRANSFER_WIDTH_16BIT; + + device_open(i2s_dma, 0); + + /* connect i2s device and dma device */ + device_control(i2s,DEVICE_CTRL_I2S_ATTACH_TX_DMA,(void*)i2s_dma); + + /* start play source*/ + device_write(i2s,0,fhm_onechannel_16k_20,sizeof(fhm_onechannel_16k_20)); + } + + MSG("Play Music start \r\n"); + + BL_CASE_SUCCESS; +} + diff --git a/examples/i2s/i2s_play_form_sd/CMakeLists.txt b/examples/i2s/i2s_play_form_sd/CMakeLists.txt new file mode 100644 index 00000000..16ba5333 --- /dev/null +++ b/examples/i2s/i2s_play_form_sd/CMakeLists.txt @@ -0,0 +1,9 @@ +set(BSP_COMMON_DIR ${CMAKE_SOURCE_DIR}/bsp/bsp_common) +set(TARGET_REQUIRED_LIBS fatfs) +set(TARGET_REQUIRED_PRIVATE_INCLUDE ${BSP_COMMON_DIR}/es8388 ${BSP_COMMON_DIR}/spi_sd ${BSP_COMMON_DIR}/audio ) +set(TARGET_REQUIRED_SRCS ${BSP_COMMON_DIR}/es8388/bsp_es8388.c ${BSP_COMMON_DIR}/fatfs/fatfs_spi_sd.c ${BSP_COMMON_DIR}/spi_sd/bsp_spi_sd.c ./wav_play_form_sd_card.c) +set(mains main.c) +generate_bin() + + + diff --git a/examples/i2s/i2s_play_form_sd/main.c b/examples/i2s/i2s_play_form_sd/main.c new file mode 100644 index 00000000..c62fdfae --- /dev/null +++ b/examples/i2s/i2s_play_form_sd/main.c @@ -0,0 +1,84 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ + +#include "ff.h" +#include "wav_play_form_sd_card.h" + +FATFS Fs_1; +audio_dev_t Audio_Dev; + +void fatfs_sd_driver_register(void); + +int main(void) +{ + FRESULT res; + + bflb_platform_init(0); + + fatfs_sd_driver_register(); + sd_wav_play_register(&Audio_Dev); + + res = f_mount(&Fs_1,"1:",1); + if(res==FR_OK) + { + if(Audio_Dev.audio_init(&Audio_Dev,"1:wav_test/test9_44100_stereo_s32(24bit).wav") == 0) + { + MSG("Audio Init success\r\n"); + }else{ + MSG("Audio Init error\r\n"); + } + } + else + { + MSG("fatfs open ERROR\r\n"); + } + + /* start/stop test */ + Audio_Dev.audio_control(&Audio_Dev,AUDIO_CMD_START,NULL); + bflb_platform_delay_ms(10000); + Audio_Dev.audio_control(&Audio_Dev,AUDIO_CMD_STOP,NULL); + bflb_platform_delay_ms(5000); + Audio_Dev.audio_control(&Audio_Dev,AUDIO_CMD_START,NULL); + bflb_platform_delay_ms(5000); + + /* volume test */ + for(uint32_t vol=0; vol<80; vol++) + { + Audio_Dev.audio_control(&Audio_Dev,AUDIO_CMD_VOLUME,(void *)vol); + bflb_platform_delay_ms(100); + } + for(uint32_t vol=80; vol>0; vol--) + { + Audio_Dev.audio_control(&Audio_Dev,AUDIO_CMD_VOLUME,(void *)vol); + bflb_platform_delay_ms(100); + } + + Audio_Dev.audio_control(&Audio_Dev,AUDIO_CMD_VOLUME,(void *)30); + + BL_CASE_SUCCESS; + +} + + + + diff --git a/examples/i2s/i2s_play_form_sd/wav_play_form_sd_card.c b/examples/i2s/i2s_play_form_sd/wav_play_form_sd_card.c new file mode 100644 index 00000000..a1df5f62 --- /dev/null +++ b/examples/i2s/i2s_play_form_sd/wav_play_form_sd_card.c @@ -0,0 +1,300 @@ +#include "bsp_es8388.h" +#include "hal_i2s.h" +#include "hal_dma.h" +#include "ff.h" +#include "wav_play_form_sd_card.h" + +static int wav_data_parser(uint8_t buff[1024], wav_information_t *wav_information); +static uint32_t pcm_24bit_to_32bit(uint8_t *buff, uint32_t data_size); +static int sd_wav_play_init(audio_dev_t *audio_dev,const TCHAR* path); +static int sd_wav_play_control(struct audio_dev *audio_dev, AUDIO_CMD_t cmd, void *args); +static int sd_wav_play_callback(audio_dev_t *audio_dev); + +static FIL Wav_Fp; + +static uint8_t Data_Buff0[4*1024] __attribute__((section(".system_ram"),aligned(4))); +static uint8_t Data_Buff1[4*1024] __attribute__((section(".system_ram"),aligned(4))); + +static ES8388_Cfg_Type ES8388Cfg = { + .work_mode = ES8388_CODEC_MDOE, /*!< ES8388 work mode */ + .role = ES8388_SLAVE, /*!< ES8388 role */ + .mic_input_mode = ES8388_DIFF_ENDED_MIC, /*!< ES8388 mic input mode */ + .mic_pga = ES8388_MIC_PGA_3DB, /*!< ES8388 mic PGA */ + .i2s_frame = ES8388_LEFT_JUSTIFY_FRAME,/*!< ES8388 I2S frame */ + .data_width = ES8388_DATA_LEN_16, /*!< ES8388 I2S dataWitdh */ +}; + +static wav_information_t Wav_Information; +static audio_dev_t *p_Audio_Dev = NULL; + +static void dma_ch2_irq_callback(struct device *dev, void *args, uint32_t size ,uint32_t state) +{ + if(p_Audio_Dev && p_Audio_Dev->audio_callback) + { + p_Audio_Dev->audio_callback(p_Audio_Dev); + } +} + +/* get File pointer from top of file*/ +static int wav_data_parser(uint8_t buff[1024], wav_information_t *wav_information) +{ + uint32_t offset=0; + uint32_t chunk_id; + + /* RIFF WAVE Chunk */ + chunk_id = ((chunk_riff_t *)&buff[offset])->chunk_id; + if(chunk_id == 0x46464952) + { + wav_information->chunk_riff_offset = offset; + wav_information->chunk_riff = *((chunk_riff_t *)&buff[offset]); + offset += sizeof(chunk_riff_t); + }else{ + wav_information->chunk_riff_offset = -1; + return 1; + } + /* Format Chunk */ + chunk_id = ((chunk_format_t *)&buff[offset])->chunk_id; + if(chunk_id == 0x20746D66 && offset<1000) /* fmt */ + { + wav_information->chunk_format_offset = offset; + wav_information->chunk_format = *((chunk_format_t *)&buff[offset]); + offset += ((chunk_format_t*)&buff[offset])->chunk_size + 8; + }else + { + wav_information->chunk_format_offset = -1; + return 1; + } + /* Fact/list Chunk */ + chunk_id = ((chunk_fact_t *)&buff[offset])->chunk_id; + if((chunk_id == 0X74636166 || chunk_id == 0X5453494C) && offset<1000) /*fact or list*/ + { + wav_information->chunk_fact_offset = offset; + wav_information->chunk_fact = *((chunk_fact_t *)&buff[offset]); + offset += ((chunk_fact_t*)&buff[offset])->chunk_size + 8; + }else{ + wav_information->chunk_fact_offset = -1; + } + /* Data Chunk */ + chunk_id = ((chunk_data_t *)&buff[offset])->chunk_id; + if(chunk_id == 0X61746164 && offset<1000 ) + { + wav_information->chunk_data_offset = offset; + wav_information->chunk_data = *((chunk_data_t *)&buff[offset]); + }else{ + wav_information->chunk_data_offset = -1; + return 1; + } + return 0; +} + +static uint32_t pcm_24bit_to_32bit(uint8_t *buff, uint32_t data_size) +{ + /* buff大小应该在data_size的三分之四倍以上 */ + for (uint16_t i = data_size / 3; i > 0; i--) + { + buff[i * 4 - 1] = buff[i * 3 - 1]; + buff[i * 4 - 2] = buff[i * 3 - 2]; + buff[i * 4 - 3] = buff[i * 3 - 3]; + buff[i * 4 - 4] = 0; + } + return data_size/3*4; +} + +static int sd_wav_play_init(audio_dev_t *audio_dev, const TCHAR* path) +{ + UINT num; + int res; + uint8_t buff[1024]; + + audio_dev->buff_using = 1; + audio_dev->device = (struct device*)NULL; + + f_close(&Wav_Fp); + res = f_open(&Wav_Fp, path, FA_READ); + + res |= f_lseek(&Wav_Fp, 0); + res |= f_read(&Wav_Fp, buff, sizeof(buff), &num); + if(res != FR_OK) + { + MSG("wav file open error\r\n"); + return 1; + } + res = wav_data_parser(buff, &Wav_Information); + if (res == 0) + { + audio_dev->wav_information = &Wav_Information; + /* + MSG("RIFF_offset: %d\r\n", Wav_Information.chunk_riff_offset); + MSG("format_offset:%d\r\n", Wav_Information.chunk_format_offset); + MSG("fact_offset: %d\r\n", Wav_Information.chunk_fact_offset); + MSG("data_offset: %d\r\n", Wav_Information.chunk_data_offset); + */ + } + else + { + MSG("wav file parse error\r\n"); + return 1; + } + + i2s_register(I2S0_INDEX,"I2S",DEVICE_OFLAG_RDWR); + audio_dev->device = device_find("I2S"); + + dma_register(DMA0_CH2_INDEX, "i2s_ch2", DEVICE_OFLAG_RDWR); + struct device *dma_ch2 = device_find("i2s_ch2"); + + if((audio_dev->device) && dma_ch2) + { + /* I2S Config */ + ((i2s_device_t*)(audio_dev->device))->interface_mode = I2S_MODE_LEFT; + ((i2s_device_t*)(audio_dev->device))->sampl_freq_hz = audio_dev->wav_information->chunk_format.sample_rate ; + ((i2s_device_t*)(audio_dev->device))->channel_num = audio_dev->wav_information->chunk_format.num_of_channels; + uint8_t pcm_w = audio_dev->wav_information->chunk_format.bits_per_sample/8; + if(pcm_w <= 2) + ((i2s_device_t*)(audio_dev->device))->frame_size = I2S_FRAME_LEN_16; + else + ((i2s_device_t*)(audio_dev->device))->frame_size = I2S_FRAME_LEN_32; + ((i2s_device_t*)(audio_dev->device))->data_size = ((i2s_device_t*)(audio_dev->device))->frame_size; + ((i2s_device_t*)(audio_dev->device))->fifo_threshold = 8; + res = device_open((audio_dev->device),DEVICE_OFLAG_DMA_TX); + + /* ES8388 Config */ + switch (((i2s_device_t*)(audio_dev->device))->data_size) + { + case I2S_FRAME_LEN_16: + ES8388Cfg.data_width = ES8388_DATA_LEN_16; + break; + case I2S_FRAME_LEN_24: + ES8388Cfg.data_width = ES8388_DATA_LEN_24; + break; + case I2S_FRAME_LEN_32: + ES8388Cfg.data_width = ES8388_DATA_LEN_32; + break; + default: + return 1; + break; + } + + ES8388_Init(&ES8388Cfg); + ES8388_Set_Voice_Volume(20); + + MSG("sampl_freq_hz : %d\r\n",((i2s_device_t*)(audio_dev->device))->sampl_freq_hz); + MSG("channel_num : %d\r\n",((i2s_device_t*)(audio_dev->device))->channel_num); + MSG("data_size : %d\r\n",((i2s_device_t*)(audio_dev->device))->data_size); + + /* DMA Config */ + ((dma_device_t*)dma_ch2)->direction = DMA_MEMORY_TO_PERIPH; + ((dma_device_t*)dma_ch2)->transfer_mode = DMA_LLI_ONCE_MODE; + ((dma_device_t*)dma_ch2)->src_req = (uint32_t)NULL; + ((dma_device_t*)dma_ch2)->dst_req = DMA_REQUEST_I2S_TX; + switch (((i2s_device_t*)(audio_dev->device))->data_size * ((i2s_device_t*)(audio_dev->device))->channel_num) + { + case I2S_DATA_LEN_8: + ((dma_device_t*)dma_ch2)->src_width = DMA_TRANSFER_WIDTH_8BIT; + ((dma_device_t*)dma_ch2)->dst_width = DMA_TRANSFER_WIDTH_8BIT; + break; + case I2S_DATA_LEN_16: + ((dma_device_t*)dma_ch2)->src_width = DMA_TRANSFER_WIDTH_16BIT; + ((dma_device_t*)dma_ch2)->dst_width = DMA_TRANSFER_WIDTH_16BIT; + break; + default: + ((dma_device_t*)dma_ch2)->src_width = DMA_TRANSFER_WIDTH_32BIT; + ((dma_device_t*)dma_ch2)->dst_width = DMA_TRANSFER_WIDTH_32BIT; + break; + } + + device_open(dma_ch2, 0); + device_set_callback(dma_ch2, dma_ch2_irq_callback); + device_control(dma_ch2, DEVICE_CTRL_SET_INT, NULL); + device_control((audio_dev->device),DEVICE_CTRL_I2S_ATTACH_TX_DMA,(void*)dma_ch2); + + /* Fill data frist*/ + f_lseek(&Wav_Fp, audio_dev->wav_information->chunk_data_offset+sizeof(chunk_data_t)); + if(audio_dev->wav_information->chunk_format.bits_per_sample/8 == 3) + { + f_read(&Wav_Fp,audio_dev->buff[0], audio_dev->buff_size_max/4*3, &num); + audio_dev->buff_data_size[0] = pcm_24bit_to_32bit(audio_dev->buff[0],num); + f_read(&Wav_Fp,audio_dev->buff[1], audio_dev->buff_size_max/4*3, &num); + audio_dev->buff_data_size[1] = pcm_24bit_to_32bit(audio_dev->buff[1],num); + } + else + { + f_read(&Wav_Fp,audio_dev->buff[0], audio_dev->buff_size_max, &num); + audio_dev->buff_data_size[0] = num; + f_read(&Wav_Fp,audio_dev->buff[1], audio_dev->buff_size_max, &num); + audio_dev->buff_data_size[1] = num; + } + } + else{ + return 1; + } + return 0; +} + +static int sd_wav_play_control(struct audio_dev *audio_dev, AUDIO_CMD_t cmd, void *args) +{ + int res = -1; + switch (cmd) + { + case AUDIO_CMD_START: + res = device_write(audio_dev->device,0,audio_dev->buff[!audio_dev->buff_using],audio_dev->buff_data_size[!audio_dev->buff_using]); + audio_dev->audio_state = 1; + break; + case AUDIO_CMD_STOP: + audio_dev->audio_state = 0; + res=0; + break; + case AUDIO_CMD_VOLUME: + res = ES8388_Set_Voice_Volume((uint32_t)args); + break; + default: + break; + } + return res; +} + +static int sd_wav_play_callback(audio_dev_t *audio_dev) +{ + uint32_t num=0; + uint8_t buff_using = audio_dev->buff_using; + if(audio_dev->buff_data_size[!buff_using] ) + { + if(audio_dev->audio_state) + { + device_write(audio_dev->device, 0, audio_dev->buff[!buff_using], audio_dev->buff_data_size[!buff_using]); + audio_dev->buff_using = !buff_using; + } + + if (audio_dev->wav_information->chunk_format.bits_per_sample / 8 == 3) + { + f_read(&Wav_Fp, audio_dev->buff[buff_using], audio_dev->buff_size_max / 4 * 3, &num); + num = pcm_24bit_to_32bit(audio_dev->buff[buff_using], num); + } + else + { + f_read(&Wav_Fp, audio_dev->buff[buff_using], audio_dev->buff_size_max, &num); + } + audio_dev->buff_data_size[buff_using] = num; + } + + if(num==0 && audio_dev->buff_data_size[0]==0 && audio_dev->buff_data_size[1]==0) + { + MSG("End of the play\r\n"); + } + return 0; +} + +int sd_wav_play_register(audio_dev_t *audio_dev) +{ + p_Audio_Dev = audio_dev; + audio_dev->audio_init = sd_wav_play_init, + audio_dev->audio_control = sd_wav_play_control, + audio_dev->audio_callback = sd_wav_play_callback, + + audio_dev->buff[0] = Data_Buff0; + audio_dev->buff[1] = Data_Buff1; + audio_dev->buff_data_size[0] = 0; + audio_dev->buff_data_size[1] = 0; + audio_dev->buff_size_max = sizeof(Data_Buff1); + return 0; +} + diff --git a/examples/i2s/i2s_play_form_sd/wav_play_form_sd_card.h b/examples/i2s/i2s_play_form_sd/wav_play_form_sd_card.h new file mode 100644 index 00000000..4ab7841c --- /dev/null +++ b/examples/i2s/i2s_play_form_sd/wav_play_form_sd_card.h @@ -0,0 +1,95 @@ +#ifndef __MAV_PLAY_H__ +#define __MAV_PLAY_H__ + +#include "hal_i2s.h" + +//WAV文件块定义 + +/* RIFF (RIFF WAVE Chunk) */ +typedef struct __attribute__((packed)) +{ + uint32_t chunk_id; /*chunk id:"RIFF",(0X46464952) */ + uint32_t chunk_size; /*file size -8 */ + uint32_t format; /* "WAVE" (0X45564157) */ +}chunk_riff_t ; + +/* fmt (Format Chunk)*/ +typedef struct __attribute__((packed)) +{ + uint32_t chunk_id; /* chunk id:"fmt",(0X20746D66) */ + uint32_t chunk_size ; /* fmt size -8 = 20*/ + uint16_t audio_format; /* 音频格式;0X10,表示线性 PCM; 0X11 表示 IMA ADPCM */ + uint16_t num_of_channels; /* 通道数量;1,表示单声道;2,表示双声道*/ + uint32_t sample_rate; /* 采样率;0X1F40,表示 8Khz */ + uint32_t byte_rate; /* 字节速率 */ + uint16_t block_align; /*块对齐(字节)*/ + uint16_t bits_per_sample; /*单个采样数据大小;4 位 ADPCM,设置为 4*/ +}chunk_format_t; + +//fact (Fact Chunk) +typedef struct __attribute__((packed)) +{ + uint32_t chunk_id; //chunk id;这里固定为"fact",即 0X74636166; + uint32_t chunk_size ; //子集合大小(不包括 ID 和 Size);这里为:4. + uint32_t data_fact_size; //数据转换为 PCM 格式后的大小 +}chunk_fact_t; + +//data (Data Chunk) +typedef struct __attribute__((packed)) +{ + uint32_t chunk_id; //chunk id;这里固定为"data",即 0X61746164 + uint32_t chunk_size ; //子集合大小(不包括 ID 和 Size);文件大小-60. +}chunk_data_t; + +// +typedef enum +{ + CHUNK_RIFF, + CHUNK_FORMAT, + CHUNK_FACT, + CHUNK_DATA, +}mav_chunk_t; + +//.wav information +typedef struct +{ + int chunk_riff_offset; //在数据里的位置偏移,-1表示没有此块 + chunk_riff_t chunk_riff; + int chunk_format_offset; + chunk_format_t chunk_format; + int chunk_fact_offset; + chunk_fact_t chunk_fact; + int chunk_data_offset; + chunk_data_t chunk_data; +}wav_information_t; + + +typedef enum{ + AUDIO_CMD_START, + AUDIO_CMD_STOP, + AUDIO_CMD_VOLUME, +}AUDIO_CMD_t; + + +//播放控制块 +typedef struct audio_dev{ + uint8_t *buff[2]; + uint32_t buff_data_size[2]; //buff内数据长度 + uint32_t buff_size_max; //buff的大小 + uint8_t buff_using; //正在使用的buff + + uint8_t audio_state; //状态 + uint8_t audio_type; //类型 + + int (*audio_init)(struct audio_dev *audio_dev, const TCHAR* path); + int (*audio_control)(struct audio_dev *audio_dev, AUDIO_CMD_t cmd, void *args); + + int (*audio_callback)(struct audio_dev *audio_dev); //中断回调函数,用来重新装载buff, + + struct device* device; //i2s的device,可以考虑换成指向其他外设 + wav_information_t *wav_information; //wav信息结构体,可以考虑换成一个共用体指向其他音乐格式数据 +}audio_dev_t; + +int sd_wav_play_register(audio_dev_t *audio_dev); + +#endif \ No newline at end of file diff --git a/examples/i2s/script/read_and_write_wav.py b/examples/i2s/script/read_and_write_wav.py new file mode 100644 index 00000000..cc086c76 --- /dev/null +++ b/examples/i2s/script/read_and_write_wav.py @@ -0,0 +1,192 @@ +# -*- coding: utf-8 -*- +""" +Spyder Editor + +This is a temporary script file. +""" +from __future__ import print_function +from builtins import range +import os +import wave +import struct +import time +import re +import subprocess +import binascii + +# bh6bao 2021.03.05 + +from pydub import AudioSegment +filePath = './' + +# 操作函数 +def get_wav_make(dataDir): + sound= AudioSegment.from_wav(dataDir) + duration = sound.duration_seconds * 1000 # 音频时长(ms) + begin = 0 + end = 10000 + cut_wav = sound[begin:end] #以毫秒为单位截取[begin, end]区间的音频 + cut_wav.export(filePath+ 'fhm_onechannel_8k_10.wav', format='wav') #存储新的wav文件 + +# wav文件转PCM数组 +def get_wave_array_str(filename, target_bits): + wave_read = wave.open(filename, "r") + array_str = "// start\n\t" + nchannels, sampwidth, framerate, nframes, comptype, compname = wave_read.getparams() + sampwidth *= 8 + for i in range(wave_read.getnframes()): + val, = struct.unpack("', file=audio_table) + print("// time:{}".format(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))), file=audio_table) + print('const unsigned char audio_table[] = {', file=audio_table) + for wav in wav_file_list: + print("processing: {}".format(wav)) + print('//name:{}\n'.format(wav), file=audio_table) + print(get_wave_array_str(filename=wav, target_bits=scale_bits), file=audio_table) + print('};\n', file=audio_table) + print("Done...") + + +# 获取wav文件信息 +def get_wave_info(filename): + wave_read = wave.open(filename, "r") + nchannels, sampwidth, framerate, nframes, comptype, compname = wave_read.getparams() + + print('nchannels:{}'.format(nchannels)) + print('sampwidth:{}'.format(sampwidth)) + print('framerate:{}Hz'.format(framerate)) + print('nframes:{}'.format(nframes)) + print('comptype:{}'.format(comptype)) + print('compname:{}'.format(compname)) + return framerate + + +# 二进制文件转数组 +def file2array(filename,h_filename=None): + path, name = os.path.split(filename) + if h_filename is None: + h_filename = os.path.join(path, name.split('.')[0] +'.h') + + array_str = '\n//total len:{} bytes\n'.format(os.path.getsize(filename)) + array_str += 'const unsigned char '+name.split('.')[0]+'[]={\n\t' + # print(array_str) + + h_file = open(h_filename, "w") + file = open(filename, 'rb') + try: + while True: + chunk = file.read(16*32) + if not chunk: + break + + for i in range(len(chunk)): + array_str += "0x%02x, " % (chunk[i]) + if (i + 1) % 16 == 0: + array_str += "\n\t" + # print('get:{}'.format(binascii.b2a_hex(chunk))) + except: + print('read ERR') + finally: + print('read file done!') + array_str += '\n};\r\n' + # print('array='+array_str) + print(array_str, file=h_file) + + h_file.close() + file.close() + return 0 + + + +# ffmpeg路径 +ffpeg_path = 'D:/BouffaloLabWS/script_py/ffmpeg_4.3.2_full_build/bin' + +# amr文件转MP3 +def amr2mp3(amr_path,mp3_path=None): + path, name = os.path.split(amr_path) + if name.split('.')[-1]!='amr': + print('not a amr file') + return 0 + if mp3_path is None or mp3_path.split('.')[-1]!='mp3': + mp3_path = os.path.join(path, name.split('.')[0] +'.mp3') + error = subprocess.run(['./ffmpeg.exe','-i',amr_path,mp3_path]) + print('ERR:'+error) + if error: + return 0 + print ('success') + return mp3_path + +# wav文件转amr,wav必须为8000Hz +def wave2amr(wave_path,amr_path=None): + path, name = os.path.split(wave_path) + if name.split('.')[-1]!='wav': + print ('not a wave file') + return 0 + if amr_path is None or amr_path.split('.')[-1]!='amr': + amr_path = os.path.join(path, name.split('.')[0] +'.amr') + error = subprocess.run(['ffmpeg','-i',wave_path,'-y',amr_path]) + print('ERR:{}'.format(error)) + if error: + return 0 + print ('amr success') + return amr_path + +# wav 格式化为8000Hz +def wave2Hz8000(wave_path,out_path=None): + path, name = os.path.split(wave_path) + if name.split('.')[-1]!='wav': + print ('not a wave file') + return 0 + if out_path is None or wave_path.split('.')[-1]!='wav': + out_path = os.path.join(path, name.split('.')[0] +'_8k.wav') + error = subprocess.run(['ffmpeg.exe','-i',wave_path,'-ar','8000','-y',out_path]) + #error = subprocess.run(ffpeg_path+'ffmpeg.exe'+' -i '+wave_path+' -ar 8000 -y '+out_path) + print('ERR:{}'.format(error)) + if error: + return 0 + print ('wav success') + print (out_path) + return out_path + +# 将目录下所有wav文件转为amr,并转为对应的数组文件 +if __name__ == '__main__': + print("Generating audio array...") + # wav_list = [] + # for filename in os.listdir("./"): + # # print(os.getcwd()) + # if filename.endswith(".wav"): + # print('src_name:',filename) + # framerate = get_wave_info(filename) + # if framerate != 8000: + # print('to 8000Hz') + # filename = wave2Hz8000(filename) + # print(filename) + + # amr_file = wave2amr('fhm_onechannel_8k.wav') + # if amr_file!=0: + + get_wav_make('fhm_onechannel_8k.wav') + wave2amr('fhm_onechannel_8k_10.wav') + file2array('fhm_onechannel_8k_10.wav') + + # dst_name = "0_"+filename + # print('dst_name:',filename) + # os.rename(filename, dst_name) + # wav_list.append(filename) + # gen_wave_table(wav_file_list=wav_list, target_file_name="audio_example_file.h") + + diff --git a/examples/memheap/CMakeLists.txt b/examples/memheap/CMakeLists.txt new file mode 100644 index 00000000..551acd5a --- /dev/null +++ b/examples/memheap/CMakeLists.txt @@ -0,0 +1,4 @@ +set(TARGET_REQUIRED_LIBS common) +set(mains main.c) +generate_bin() + diff --git a/examples/memheap/cdk/memheap.cdkproj b/examples/memheap/cdk/memheap.cdkproj new file mode 100644 index 00000000..36ed8bac --- /dev/null +++ b/examples/memheap/cdk/memheap.cdkproj @@ -0,0 +1,707 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 76 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imac + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../components/fatfs;$(ProjectPath)../../../components/freertos/Source/include;$(ProjectPath)../../../components/shell;$(ProjectPath)../../../components/usb_stack/class/audio;$(ProjectPath)../../../components/usb_stack/class/cdc;$(ProjectPath)../../../components/usb_stack/class/hid;$(ProjectPath)../../../components/usb_stack/class/msc;$(ProjectPath)../../../components/usb_stack/class/video;$(ProjectPath)../../../components/usb_stack/class/webusb;$(ProjectPath)../../../components/usb_stack/class/winusb;$(ProjectPath)../../../components/usb_stack/common;$(ProjectPath)../../../components/usb_stack/core;$(ProjectPath)../../../bsp/board/bl706_iot;$(ProjectPath)../../../bsp/bsp_common/platform;$(ProjectPath)../../../common/libc/inc;$(ProjectPath)../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../common/libc/inc/bits;$(ProjectPath)../../../common/libc/inc/sys;$(ProjectPath)../../../common/libc/src;$(ProjectPath)../../../common/device;$(ProjectPath)../../../common/list;$(ProjectPath)../../../common/memheap;$(ProjectPath)../../../common/misc;$(ProjectPath)../../../common/ring_buffer;$(ProjectPath)../../../common/soft_crc;$(ProjectPath)../../../components/shell;$(ProjectPath)../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../drivers/bl702_driver/regs;$(ProjectPath)../../../drivers/bl702_driver/startup;$(ProjectPath)../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../drivers/bl602_driver/startup;$(ProjectPath)../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../drivers/bl602_driver/regs;$(ProjectPath)../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../components/fatfs;$(ProjectPath)../../../components/freertos/Source/include;$(ProjectPath)../../../components/shell;$(ProjectPath)../../../components/usb_stack/class/audio;$(ProjectPath)../../../components/usb_stack/class/cdc;$(ProjectPath)../../../components/usb_stack/class/hid;$(ProjectPath)../../../components/usb_stack/class/msc;$(ProjectPath)../../../components/usb_stack/class/video;$(ProjectPath)../../../components/usb_stack/class/webusb;$(ProjectPath)../../../components/usb_stack/class/winusb;$(ProjectPath)../../../components/usb_stack/common;$(ProjectPath)../../../components/usb_stack/core;$(ProjectPath)../../../bsp/board/bl706_iot;$(ProjectPath)../../../bsp/bsp_common/platform;$(ProjectPath)../../../common/device;$(ProjectPath)../../../common/list;$(ProjectPath)../../../common/memheap;$(ProjectPath)../../../common/misc;$(ProjectPath)../../../common/ring_buffer;$(ProjectPath)../../../common/soft_crc;$(ProjectPath)../../../components/shell;$(ProjectPath)../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../drivers/bl702_driver/regs;$(ProjectPath)../../../drivers/bl702_driver/startup;$(ProjectPath)../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../drivers/bl602_driver/startup;$(ProjectPath)../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../drivers/bl602_driver/regs;$(ProjectPath)../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + no + ICE + yes + main + $(ProjectPath)/../../../tools/openocd/bl70x_gdb.init + + yes + Hard Reset + 21000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + yes + no + with Pre-reset + Hard Reset + 21000000 + Bare Metal + no + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + $(ProjectPath)/flash.init + Erase Sectors + + no + no + no + Soft Reset + + yes + + + + + + diff --git a/examples/memheap/main.c b/examples/memheap/main.c new file mode 100644 index 00000000..55a5c2ab --- /dev/null +++ b/examples/memheap/main.c @@ -0,0 +1,69 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_uart.h" +#include "drv_mmheap.h" + +uint8_t mmheap_default_pool[4096] __attribute__((section(".system_ram"))); + +void memheap_test(void) +{ + char *ptr = NULL; /* 内存块的指针 */ + + for(int i=1;;i++) + { + ptr = mmheap_alloc(i*128); + /* 如果分配成功 */ + if (ptr != NULL) + { + memcpy(ptr,"hello123456789123456789123456789",32); + MSG("ptr :%s\n", ptr); + MSG("get memory :%d byte\n", i*128); + /* 释放内存块 */ + mmheap_free(ptr); + MSG("free memory :%d byte\n", i*128); + ptr = NULL; + bflb_platform_delay_ms(100); + } + else + { + MSG("try to get %d byte memory failed!\n", i*128); + + return; + } + } + +} + +int main(void) +{ + + bflb_platform_init(0); + + MSG("\r\n memheap test start\r\n"); + memheap_test(); + MSG("\r\n memheap test end\r\n"); + while(1) + { + + } +} \ No newline at end of file diff --git a/examples/pwm/pwm_breath_led/CMakeLists.txt b/examples/pwm/pwm_breath_led/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/pwm/pwm_breath_led/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/pwm/pwm_breath_led/cdk/pwm_breath_led.cdkproj b/examples/pwm/pwm_breath_led/cdk/pwm_breath_led.cdkproj new file mode 100644 index 00000000..36c67ba5 --- /dev/null +++ b/examples/pwm/pwm_breath_led/cdk/pwm_breath_led.cdkproj @@ -0,0 +1,724 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + BL702;BL702_EVB;ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + diff --git a/examples/pwm/pwm_breath_led/main.c b/examples/pwm/pwm_breath_led/main.c new file mode 100644 index 00000000..35014f39 --- /dev/null +++ b/examples/pwm/pwm_breath_led/main.c @@ -0,0 +1,67 @@ +/** + * @file pwm_breath_led.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_pwm.h" +#include "hal_gpio.h" + +int main(void) +{ + pwm_config_t pwm_cfg = { + 1000000, + 0, + }; + + bflb_platform_init(0); + + gpio_set_mode(GPIO_PIN_29, GPIO_OUTPUT_PP_MODE); + gpio_set_mode(GPIO_PIN_30, GPIO_OUTPUT_PP_MODE); + gpio_set_mode(GPIO_PIN_31, GPIO_OUTPUT_PP_MODE); + + gpio_write(GPIO_PIN_29, 0); + gpio_write(GPIO_PIN_30, 0); + gpio_write(GPIO_PIN_31, 0); + + pwm_register(PWM0_INDEX, "led_breath", DEVICE_OFLAG_RDWR); + + struct device *led_breath = device_find("led_breath"); + + if (led_breath) + { + device_open(led_breath, 0); + } + + while (1) + { + for (pwm_cfg.dutyCycle = 0; pwm_cfg.dutyCycle < 100; pwm_cfg.dutyCycle++) + { + device_control(led_breath, DEVICE_CTRL_CONFIG, &pwm_cfg); + bflb_platform_delay_ms(10); + } + for (pwm_cfg.dutyCycle = 100; pwm_cfg.dutyCycle > 0; pwm_cfg.dutyCycle--) + { + device_control(led_breath, DEVICE_CTRL_CONFIG, &pwm_cfg); + bflb_platform_delay_ms(10); + } + } + + BL_CASE_SUCCESS; +} diff --git a/examples/spi/spi_dma_sd/CMakeLists.txt b/examples/spi/spi_dma_sd/CMakeLists.txt new file mode 100644 index 00000000..01698ee4 --- /dev/null +++ b/examples/spi/spi_dma_sd/CMakeLists.txt @@ -0,0 +1,9 @@ +set(BSP_COMMON_DIR ${CMAKE_SOURCE_DIR}/bsp/bsp_common) +set(TARGET_REQUIRED_LIBS fatfs) +set(TARGET_REQUIRED_PRIVATE_INCLUDE ${BSP_COMMON_DIR}/spi_sd) +set(TARGET_REQUIRED_SRCS ${BSP_COMMON_DIR}/fatfs/fatfs_spi_sd.c ${BSP_COMMON_DIR}/spi_sd/bsp_spi_sd.c) +set(mains main.c) +generate_bin() + + + diff --git a/examples/spi/spi_dma_sd/cdk/spi_dma_sd.cdkproj b/examples/spi/spi_dma_sd/cdk/spi_dma_sd.cdkproj new file mode 100644 index 00000000..1d155cdf --- /dev/null +++ b/examples/spi/spi_dma_sd/cdk/spi_dma_sd.cdkproj @@ -0,0 +1,732 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../bsp/bsp_common/spi_sd;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../bsp/bsp_common/spi_sd;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/spi/spi_dma_sd/main.c b/examples/spi/spi_dma_sd/main.c new file mode 100644 index 00000000..ed9e0f47 --- /dev/null +++ b/examples/spi/spi_dma_sd/main.c @@ -0,0 +1,344 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_spi.h" +#include "hal_gpio.h" +#include "hal_dma.h" +#include "hal_mtimer.h" +#include "ff.h" + +uint32_t barebones_clock(){ + return (mtimer_get_time_ms()); +} + +#define GETMYTIME(_t) (*_t=barebones_clock()) +#define MYTIMEDIFF(fin,ini) ((fin)-(ini)) + +static uint32_t start_time_val, stop_time_val,read_start_time_val,read_stop_time_val; +uint32_t total_time; +void start_time(void) { + GETMYTIME(&start_time_val ); +} + +void stop_time(void) { + GETMYTIME(&stop_time_val ); +} + +void read_start_time(void) { + GETMYTIME(&read_start_time_val ); +} + +void read_stop_time(void) { + GETMYTIME(&read_stop_time_val ); +} + +uint32_t get_time(void) { + uint32_t runTimer=(uint32_t)(MYTIMEDIFF(stop_time_val, start_time_val)); + return runTimer; +} + +uint32_t get_read_time(void) { + uint32_t runTimer=(uint32_t)(MYTIMEDIFF(read_stop_time_val, read_start_time_val)); + return runTimer; +} + + +// static FRESULT miscellaneous(void); +// static FRESULT file_check(char* path); +// static FRESULT scan_files (char* path); +extern void fatfs_sd_driver_register(void); +MKFS_PARM fs_para={ + .fmt=FM_FAT32, /* Format option (FM_FAT, FM_FAT32, FM_EXFAT and FM_SFD) */ + .n_fat=1, /* Number of FATs */ + .align=0, /* Data area alignment (sector) */ + .n_root=1, /* Number of root directory entries */ + .au_size=512, /* Cluster size (byte) */ +}; +ATTR_DTCM_SECTION char WriteBuffer[] ="The path of the righteous man is beset on all sides by the inequities of the tyranny of evil man.\ +Blessed is he who, in the name of charity and good will, shepherds the weak through the valley of darkness, \ +for he is truly his brother's keeper and the finder of lost children. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And you will know my name is the lord when i lay my vengeance upon thee. And This test data is Over! 2048 2048 2048 2048.\ +The path of the righteous man is beset on all sides by the inequities of the tyranny of evil man.\ +Blessed is he who, in the name of charity and good will, shepherds the weak through the valley of darkness, \ +for he is truly his brother's keeper and the finder of lost children. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And i will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers\r\n. \ +And you will know my name is the lord when i lay my vengeance upon thee. And This test data is Over! 2048 2048 2048 2048.." ; + +FATFS fs ; +FIL fnew ; +FRESULT res_sd; +UINT fnum; +uint8_t ReadBuffer[4096] = {0} ; +FILINFO fno; +char fpath[100]; + +uint32_t workbuf[4096]; + +int main(void) +{ + bflb_platform_init(0); + fatfs_sd_driver_register(); + MSG("FATFS case"); + //mount file system + res_sd = f_mount(&fs,"1:",1); + MSG("f_mount:%d\r\n",res_sd); + /*----------------------- format test ---------------------------*/ + /*if no file system,then format and create file system*/ + if(res_sd == FR_NO_FILESYSTEM) + { + MSG("No filesystem yet, to be formatted...\r\n"); + /*format*/ + res_sd=f_mkfs("1:",&fs_para,workbuf,512*2); + + if(res_sd == FR_OK) + { + MSG("done with formatting.\r\n"); + /*after format, unmount first*/ + MSG("first start to unmount.\r\n"); + res_sd = f_mount(NULL,"1:",1); + /*then mount again*/ + MSG("then start to remount.\r\n"); + res_sd = f_mount(&fs,"1:",1); + } + else + { + MSG("fail to format.\r\n"); + while(1); + } + } + else if(res_sd!=FR_OK) + { + MSG("fail to mount filesystem,error= %d\r\n",res_sd); + MSG("SD card might fail to initialise.\r\n"); + while(1); + } + else + { + MSG("Succeed to mount filesystem. Go on to read write test.\r\n"); + } +#if 1 + /*-----------------------file system write test-----------------------------*/ + /* open file, create one if not exist*/ + MSG("\r\n*****be about to write test...******\r\n"); + res_sd = f_open(&fnew, "1:ftest.txt",FA_CREATE_ALWAYS | FA_WRITE ); + if ( res_sd == FR_OK ) + { + MSG("open or create ftest.txt, and write to it.\r\n"); + start_time(); + /*write into file*/ + for(uint16_t i=0;i<512;i++) + res_sd=f_write(&fnew,WriteBuffer,sizeof(WriteBuffer),&fnum); + /*close file*/ + f_close(&fnew); + stop_time(); + if(res_sd==FR_OK) + { + MSG("Done with writing, write %d bytes. \r\n",fnum); + MSG("Write contents: \r\n%s\r\n",WriteBuffer); + } + else + { + MSG("Fail to write files(%d)\n",res_sd); + } + } + else + { + MSG("Fail to open or create files.\r\n"); + } + total_time = get_time(); + MSG("write %d Byte * %d time: %d \n",sizeof(WriteBuffer),512,total_time); +#endif + + /*------------------- file system read test------------------------------------*/ + MSG("******be about to read test...******\r\n"); + res_sd = f_open(&fnew, "1:ftest.txt", FA_OPEN_EXISTING | FA_READ); + if(res_sd == FR_OK) + { + MSG("Done with open file.\r\n"); + read_start_time(); + for(uint16_t i=0;i<512;i++) + res_sd = f_read(&fnew, ReadBuffer, sizeof(ReadBuffer), &fnum); + read_stop_time(); + if(res_sd==FR_OK) + { + MSG("Done with reading file, read %d bytes.\r\n",fnum); + MSG("Read contents: \r\n%s \r\n", ReadBuffer); + } + else + { + MSG("Fail to read file: (%d)\n",res_sd); + } + total_time = get_read_time(); + MSG("\n write %d Byte * %d time: %d \n",sizeof(ReadBuffer),512,total_time); + } + else + { + MSG("Fail to open files.\r\n"); + } + /*close file*/ + f_close(&fnew); + /*unmount*/ + f_mount(NULL,"1:",1); + + while(1) + { + + } +} + +// static FRESULT miscellaneous(void) +// { +// DIR dir; +// FATFS* pfs; +// DWORD fre_clust, fre_sect, tot_sect; + +// MSG("\n*************** get device info***************\r\n"); +// res_sd = f_getfree("1:", &fre_clust, &pfs); + +// /* toal sector number and free sector number*/ +// tot_sect = (pfs->n_fatent - 2) * pfs->csize; +// fre_sect = fre_clust * pfs->csize; + +// MSG("total capacity%10lu KB\n available capacity: %10lu KB\n", tot_sect >>1, fre_sect >>1); + +// MSG("\n**********create directory and **********\r\n"); + +// res_sd=f_opendir(&dir,"1:TestDir"); +// if(res_sd!=FR_OK) +// { +// /*new dir if fail to open*/ +// MSG("\nf_mkdir\r\n"); +// res_sd=f_mkdir("1:TestDir"); +// } +// else +// { +// /*close dir if exist*/ +// res_sd=f_closedir(&dir); +// /*delete file*/ +// f_unlink("1:TestDir/ftest.txt"); +// } +// if(res_sd==FR_OK) +// { +// /*move and rename file*/ +// res_sd=f_rename("1:ftest.txt","1:TestDir/ftest.txt"); +// if(res_sd==FR_OK){ +// MSG("\nf_rename success\r\n"); +// }else{ +// MSG("\nf_rename fail\r\n"); +// } +// } + +// return res_sd; +// } +// static FRESULT file_check(char* path) +// { + + +// /*get file info*/ +// res_sd=f_stat(path,&fno); +// if(res_sd==FR_OK) +// { +// MSG("%s file infomation:\r\n",path); +// MSG("\tFile size: %ld(byte)\n", fno.fsize); +// MSG("\ttimestap: %u/%02u/%02u, %02u:%02u\n", +// (fno.fdate >> 9) + 1980, fno.fdate >> 5 & 15, fno.fdate & 31,fno.ftime >> 11, fno.ftime >> 5 & 63); +// MSG("\tttribute: %c%c%c%c%c\n\n", +// (fno.fattrib & AM_DIR) ? 'D' : '-', /* Directory */ +// (fno.fattrib & AM_RDO) ? 'R' : '-', /* Read only */ +// (fno.fattrib & AM_HID) ? 'H' : '-', /* Hidden */ +// (fno.fattrib & AM_SYS) ? 'S' : '-', /* System */ +// (fno.fattrib & AM_ARC) ? 'A' : '-'); /* Archive */ +// }else{ +// MSG("file_check fail:\r\n",path); +// } +// return res_sd; +// } + +// static FRESULT scan_files (char* path) +// { +// FRESULT res; +// FILINFO fno; +// DIR dir; +// int i; +// char* fn; + +// res = f_opendir(&dir, path); +// if (res == FR_OK) +// { +// i = strlen(path); +// for (;;) +// { +// //read contents under dir, next read will get next content +// res = f_readdir(&dir, &fno); +// //last name is blank, jump +// if (res != FR_OK || fno.fname[0] == 0) break; +// fn = fno.fname; +// //jump current dir +// if (*fn == '.') continue; +// //recursive dir +// if (fno.fattrib & AM_DIR) +// { +// //get full dir name +// sprintf(&path[i], "/%s", fn); +// //recursive +// res = scan_files(path); +// path[i] = 0; +// if (res != FR_OK) +// break; +// } +// else +// { +// MSG("\t %s/%s\r\n", path, fn); + +// } +// } +// }else{ +// MSG("f_opendir fail\r\n"); +// } +// return res; +// } + diff --git a/examples/spi/spi_lcd/CMakeLists.txt b/examples/spi/spi_lcd/CMakeLists.txt new file mode 100644 index 00000000..e7d458d4 --- /dev/null +++ b/examples/spi/spi_lcd/CMakeLists.txt @@ -0,0 +1,8 @@ +set(BSP_COMMON_DIR ${CMAKE_SOURCE_DIR}/bsp/bsp_common) +set(TARGET_REQUIRED_LIBS fatfs) +set(TARGET_REQUIRED_PRIVATE_INCLUDE ${BSP_COMMON_DIR}/il9431) +set(TARGET_REQUIRED_SRCS ${BSP_COMMON_DIR}/il9431/bsp_il9431.c) +set(mains main.c) +generate_bin() + + diff --git a/examples/spi/spi_lcd/cdk/spi_lcd.cdkproj b/examples/spi/spi_lcd/cdk/spi_lcd.cdkproj new file mode 100644 index 00000000..2aa7cad3 --- /dev/null +++ b/examples/spi/spi_lcd/cdk/spi_lcd.cdkproj @@ -0,0 +1,729 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../bsp/bsp_common/il9431;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../bsp/bsp_common/il9431;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/spi/spi_lcd/main.c b/examples/spi/spi_lcd/main.c new file mode 100644 index 00000000..ff0bbc1b --- /dev/null +++ b/examples/spi/spi_lcd/main.c @@ -0,0 +1,116 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "drv_shell.h" +#include "hal_spi.h" +#include "hal_gpio.h" +#include "hal_dma.h" +#include "bsp_il9431.h" + + +uint8_t bo[] = { +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00, +0x00,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x30,0x00,0x04,0x0C,0xFC,0xFF,0xFF,0x0F, +0x80,0xFF,0xFF,0x07,0x00,0x00,0x08,0x00,0x00,0x08,0x08,0x00,0x00,0x08,0x08,0x00, +0x00,0x08,0x00,0x00,0x00,0x08,0x30,0x00,0x00,0xC8,0x3F,0x00,0x00,0x08,0x20,0x00, +0x00,0x0B,0x29,0x01,0x80,0x1B,0x29,0x03,0x80,0x39,0xFF,0x3F,0x00,0xD0,0xFF,0x3F, +0x08,0x10,0x5A,0x06,0x0C,0x10,0x52,0x06,0x3E,0xF0,0x92,0x04,0xFC,0x7F,0x80,0x04, +0x00,0xB0,0x8F,0x10,0x00,0x30,0xFF,0x18,0x00,0x30,0x60,0x0C,0x00,0x20,0x00,0x0C, +0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00}; + +uint8_t liu[] = { +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x0C,0x00, +0xE0,0x00,0x06,0x00,0xF0,0x03,0x07,0x00,0x80,0x0F,0x00,0x03,0x00,0x38,0x80,0x03, +0x08,0x40,0x80,0x01,0x08,0x00,0x80,0x00,0x10,0x00,0x00,0x00,0x70,0x00,0x00,0x00, +0xC0,0xDF,0x20,0x00,0x00,0xCF,0x21,0x00,0x00,0x88,0x63,0x00,0x00,0x80,0x67,0x00, +0x20,0x98,0x7D,0x00,0xF0,0x1F,0x79,0x18,0x00,0x00,0x51,0x0C,0x00,0x00,0xC1,0x0E, +0x00,0x40,0xCA,0x00,0xE0,0x3F,0xCE,0x00,0x70,0x30,0x8E,0x00,0x30,0x00,0x87,0x01, +0x18,0x00,0x83,0x00,0x18,0x00,0x80,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00, +0x30,0x00,0x00,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; + +uint8_t zhi[] = { +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00, +0x00,0x00,0x06,0x00,0x00,0x08,0x06,0x00,0x00,0x08,0x04,0x00,0x00,0x10,0x64,0x00, +0x00,0x20,0xC4,0x00,0x00,0xC0,0x88,0x03,0x00,0x80,0x8B,0x3E,0x00,0x30,0xFF,0x1C, +0xFC,0x1F,0xF8,0x11,0x10,0x11,0x12,0x01,0x10,0x11,0x13,0x01,0x10,0xA2,0x13,0x03, +0x10,0xA2,0x11,0x02,0x10,0x22,0x00,0x00,0x30,0x22,0x80,0x00,0x10,0x60,0xFC,0x00, +0x1E,0x70,0x4E,0x00,0xFE,0x7F,0x82,0x00,0xF0,0x3F,0x84,0x00,0x00,0x10,0x84,0x00, +0x00,0x00,0x84,0x00,0x00,0x00,0x8C,0x01,0x00,0x00,0xFC,0x01,0x00,0x00,0xE0,0x00, +0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; + +uint8_t neng[] = { +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x38,0x00,0x0C,0x00,0xF0,0x01,0x1C,0x00,0x80,0xFF,0x6D,0x00,0x00,0x12,0xC9,0x00, +0x00,0x12,0x89,0x07,0x20,0x32,0x09,0x1E,0x30,0x10,0x11,0x0C,0xFC,0xFF,0x93,0x00, +0xF8,0xFF,0xF1,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00, +0x00,0x80,0x00,0x18,0xE0,0xFF,0xFC,0x1F,0x30,0x44,0x46,0x08,0x18,0x0C,0xC6,0x00, +0x18,0x08,0x82,0x00,0x18,0x18,0x82,0x01,0x18,0x70,0x02,0x03,0x18,0x70,0x06,0x03, +0x18,0x00,0x06,0x00,0x18,0x00,0x3E,0x00,0x38,0x00,0x00,0x00,0xF0,0x01,0x00,0x00, +0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; + +uint8_t ke[] = { +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x02,0x03,0x00, +0x00,0x04,0x03,0x00,0x00,0x08,0x02,0x00,0x00,0x10,0x46,0x00,0x00,0x60,0x46,0x00, +0x00,0xC0,0x84,0x00,0x60,0x80,0x87,0x01,0xF8,0xFF,0xFF,0x03,0x00,0x80,0x68,0x02, +0x00,0xC0,0x08,0x0E,0x00,0x40,0x18,0x0C,0x00,0x20,0x18,0x04,0x00,0x20,0x00,0x00, +0x00,0x20,0x00,0x00,0x00,0x20,0x04,0x00,0x00,0x20,0xC6,0x00,0x00,0x60,0xC6,0x00, +0x00,0x40,0x60,0x00,0x00,0x40,0x00,0x10,0xE0,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F, +0x00,0xC0,0x00,0x08,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00, +0x00,0x80,0x01,0x00,0x00,0x80,0x01,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00}; + +uint8_t ji[] = { +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0E,0x00,0x00, +0x00,0x0E,0x08,0x00,0x00,0x0C,0x08,0x00,0x00,0x18,0x08,0x00,0x20,0x30,0x08,0x00, +0x30,0x20,0x18,0x00,0xF8,0xFF,0xFF,0x1F,0xF0,0xFF,0xFF,0x1F,0x00,0x80,0x10,0x08, +0x00,0x00,0x11,0x00,0x10,0x00,0x00,0x00,0x20,0x40,0x00,0x00,0x20,0x50,0x10,0x00, +0x60,0x50,0x10,0x00,0x60,0xC8,0x30,0x00,0xC0,0x8C,0x30,0x00,0x80,0x87,0x3F,0x1C, +0x80,0x83,0xFF,0x1F,0x80,0x8F,0x61,0x0E,0xC0,0xFC,0x61,0x00,0xE0,0xE0,0x61,0x00, +0x70,0x80,0x40,0x00,0x30,0x00,0x40,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00, +0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +void LCD_Display_Test(void) +{ + LCD_Clear(RGB(0,0,0)); + LCD_DrawLine(200,200,50,50,RGB(255,0,255)); + LCD_DrawRectangle(40,70,150,300,RGB(0,255,0)); + LCD_DrawCircle(100,100,60,RGB(0,0,255)); + LCD_Clear(RGB(0,0,0)); +// LCD_DrawPicture(130,110,185,209,image); + LCD_DrawChinese(60,20,bo,RGB(0,0,0),RGB(0,255,0)); + LCD_DrawChinese(60,70,liu,RGB(0,0,0),RGB(0,255,0)); + LCD_DrawChinese(60,120,zhi,RGB(0,0,0),RGB(0,255,0)); + LCD_DrawChinese(60,170,neng,RGB(0,0,0),RGB(0,255,0)); + LCD_DrawChinese(60,220,ke,RGB(0,0,0),RGB(0,255,0)); + LCD_DrawChinese(60,270,ji,RGB(0,0,0),RGB(0,255,0)); +} + +int main(void) +{ + bflb_platform_init(0); + + LCD_Init(); + + LCD_Display_Test(); + while(1) + { + + } +} diff --git a/examples/spi/spi_loopback/CMakeLists.txt b/examples/spi/spi_loopback/CMakeLists.txt new file mode 100644 index 00000000..bfd0e557 --- /dev/null +++ b/examples/spi/spi_loopback/CMakeLists.txt @@ -0,0 +1,5 @@ +set(mains main.c) +generate_bin() + + + diff --git a/examples/spi/spi_loopback/cdk/spi_loopback.cdkproj b/examples/spi/spi_loopback/cdk/spi_loopback.cdkproj new file mode 100644 index 00000000..690a2ea7 --- /dev/null +++ b/examples/spi/spi_loopback/cdk/spi_loopback.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/spi/spi_loopback/main.c b/examples/spi/spi_loopback/main.c new file mode 100644 index 00000000..55ed9c7e --- /dev/null +++ b/examples/spi/spi_loopback/main.c @@ -0,0 +1,115 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_spi.h" +#include "hal_gpio.h" +#include "hal_dma.h" +#define TRANSFER_LEN 256 +static uint32_t txBuff[TRANSFER_LEN] = {0}; +static uint32_t rxBuff[TRANSFER_LEN] = {0}; + + +struct device *spi; +uint32_t i; +int main(void) +{ + bflb_platform_init(0); + spi_register(SPI0_INDEX, "spi", DEVICE_OFLAG_RDWR); + spi = device_find("spi"); + if (spi) + { + device_open(spi, DEVICE_OFLAG_STREAM_TX | DEVICE_OFLAG_STREAM_RX); + + } + /* TX buffer init */ + for (i = 0; i < TRANSFER_LEN; i++) + { + txBuff[i] = i * 0x1010101; + } + + MSG("SPI send and receive data by 32-bit frame size\r\n"); + spi_transmit_receive(spi, txBuff, rxBuff, TRANSFER_LEN, 3); + /* Check result */ + for (i = 0; i < TRANSFER_LEN; i++) + { + if (rxBuff[i] != txBuff[i]) + { + MSG("Received %08x expect %08x\n", rxBuff[i], txBuff[i]); + return ERROR; + } + } + BL702_MemSet4(rxBuff, 0, TRANSFER_LEN); + + /* Wait for slave done */ + bflb_platform_delay_ms(100); + + MSG("SPI send and receive data by 24-bit frame size\r\n"); + spi_transmit_receive(spi, txBuff, rxBuff, TRANSFER_LEN, 2); + /* Check result */ + for (i = 0; i < TRANSFER_LEN; i++) + { + if (rxBuff[i] != (txBuff[i] & 0xffffff)) + { + MSG("Received %08x expect %08x\n", rxBuff[i], txBuff[i] & 0xffffff); + return ERROR; + } + } + BL702_MemSet4(rxBuff, 0, TRANSFER_LEN); + + /* Wait for slave done */ + bflb_platform_delay_ms(100); + + MSG("SPI send and receive data by 16-bit frame size\r\n"); + spi_transmit_receive(spi, (uint16_t *)txBuff, (uint16_t *)rxBuff, 2 * TRANSFER_LEN, 1); + /* Check result */ + for (i = 0; i < TRANSFER_LEN; i++) + { + if (rxBuff[i] != txBuff[i]) + { + MSG("Received %08x expect %08x\r\n", rxBuff[i], txBuff[i]); + return ERROR; + } + } + BL702_MemSet4(rxBuff, 0, TRANSFER_LEN); + + /* Wait for slave done */ + bflb_platform_delay_ms(100); + + MSG("SPI send and receive data by 8-bit frame size\r\n"); + spi_transmit_receive(spi, (uint8_t *)txBuff, (uint8_t *)rxBuff, 4 * TRANSFER_LEN, 0); + /* Check result */ + for (i = 0; i < TRANSFER_LEN; i++) + { + if (rxBuff[i] != txBuff[i]) + { + MSG("Received %08x expect %08x\r\n", rxBuff[i], txBuff[i]); + return ERROR; + } + } + + /* Disable spi master mode */ + device_close(spi); + while (1) + { + + } +} \ No newline at end of file diff --git a/examples/uart/uart_dma/CMakeLists.txt b/examples/uart/uart_dma/CMakeLists.txt new file mode 100644 index 00000000..6979db2c --- /dev/null +++ b/examples/uart/uart_dma/CMakeLists.txt @@ -0,0 +1,2 @@ +set(mains main.c) +generate_bin() \ No newline at end of file diff --git a/examples/uart/uart_dma/cdk/uart_dma.cdkproj b/examples/uart/uart_dma/cdk/uart_dma.cdkproj new file mode 100644 index 00000000..8ed5ba02 --- /dev/null +++ b/examples/uart/uart_dma/cdk/uart_dma.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/uart/uart_dma/main.c b/examples/uart/uart_dma/main.c new file mode 100644 index 00000000..0823d3d8 --- /dev/null +++ b/examples/uart/uart_dma/main.c @@ -0,0 +1,85 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "drv_mmheap.h" +#include "hal_uart.h" +#include "hal_dma.h" + +struct device *dma_ch2; + +uint8_t src_buffer[4100] __attribute__((section(".system_ram"))); +uint8_t mmheap_default_pool[2048] __attribute__((section(".system_ram"))); + +uint8_t dma_tc_flag0 = 0; +uint8_t dma_tc_flag1 = 0; + +void dma_ch2_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state) +{ + if (!state) + { + dma_tc_flag0 = 1; + } +} + +void sram_init() +{ + memset(src_buffer, 'a', 4100); + src_buffer[3999] = 'B'; + src_buffer[4095] = 'A'; + src_buffer[4096] = 'B'; + src_buffer[4097] = 'C'; + src_buffer[4098] = 'D'; + src_buffer[4099] = 'E'; +} +int main(void) +{ + bflb_platform_init(0); + sram_init(); + + uart_register(UART1_INDEX, "uart1", DEVICE_OFLAG_RDWR); + struct device *uart = device_find("uart1"); + + if (uart) + { + device_open(uart, DEVICE_OFLAG_DMA_TX); + } + + dma_register(DMA0_CH2_INDEX, "ch2", DEVICE_OFLAG_RDWR); + dma_ch2 = device_find("ch2"); + if (dma_ch2) + { + device_open(dma_ch2, 0); + device_set_callback(dma_ch2, dma_ch2_irq_callback); + device_control(dma_ch2, DEVICE_CTRL_SET_INT, NULL); + } + + device_control(uart,DEVICE_CTRL_UART_ATTACH_TX_DMA,dma_ch2); + while (1) + { + device_write(uart,0,src_buffer,4100); + while (dma_tc_flag0 == 0) + { + bflb_platform_delay_ms(1); + } + bflb_platform_delay_ms(1000); + } +} diff --git a/examples/uart/uart_echo/CMakeLists.txt b/examples/uart/uart_echo/CMakeLists.txt new file mode 100644 index 00000000..6979db2c --- /dev/null +++ b/examples/uart/uart_echo/CMakeLists.txt @@ -0,0 +1,2 @@ +set(mains main.c) +generate_bin() \ No newline at end of file diff --git a/examples/uart/uart_echo/cdk/uart_echo.cdkproj b/examples/uart/uart_echo/cdk/uart_echo.cdkproj new file mode 100644 index 00000000..d9333204 --- /dev/null +++ b/examples/uart/uart_echo/cdk/uart_echo.cdkproj @@ -0,0 +1,724 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + BL702;BL702_EVB;ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + diff --git a/examples/uart/uart_echo/main.c b/examples/uart/uart_echo/main.c new file mode 100644 index 00000000..f364b01c --- /dev/null +++ b/examples/uart/uart_echo/main.c @@ -0,0 +1,50 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_uart.h" + +void uart_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state) +{ + if (state == UART_EVENT_RX_FIFO) + { + device_write(dev,0,(uint8_t *)args,size); + } + else if (state == UART_EVENT_RTO) + { + device_write(dev,0,(uint8_t *)args,size); + } +} + +int main(void) +{ + bflb_platform_init(0); + + struct device *uart = device_find("debug_log"); + + if (uart) + { + device_set_callback(uart, uart_irq_callback); + device_control(uart, DEVICE_CTRL_SET_INT, (void *)(UART_RX_FIFO_IT|UART_RTO_IT)); + } + + BL_CASE_SUCCESS; +} diff --git a/examples/uart/uart_poll/CMakeLists.txt b/examples/uart/uart_poll/CMakeLists.txt new file mode 100644 index 00000000..6979db2c --- /dev/null +++ b/examples/uart/uart_poll/CMakeLists.txt @@ -0,0 +1,2 @@ +set(mains main.c) +generate_bin() \ No newline at end of file diff --git a/examples/uart/uart_poll/cdk/uart_poll.cdkproj b/examples/uart/uart_poll/cdk/uart_poll.cdkproj new file mode 100644 index 00000000..d7cc5a35 --- /dev/null +++ b/examples/uart/uart_poll/cdk/uart_poll.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/uart/uart_poll/main.c b/examples/uart/uart_poll/main.c new file mode 100644 index 00000000..e5fbdbc8 --- /dev/null +++ b/examples/uart/uart_poll/main.c @@ -0,0 +1,42 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_uart.h" +const uint8_t buffer[10]="12345678\r\n"; +int main(void) +{ + bflb_platform_init(0); + uart_register(UART1_INDEX, "uart1", DEVICE_OFLAG_RDWR); + struct device *uart1 = device_find("uart1"); + + if (uart1) + { + device_open(uart1, DEVICE_OFLAG_STREAM_TX); //uart0 tx dma mode + MSG("device find success\r\n"); + } + device_write(uart1,0,buffer,10); + while(1) + { + MSG("\r\n uart0 and uart1 poll tx case\r\n"); + bflb_platform_delay_ms(1000); + } +} \ No newline at end of file diff --git a/examples/uart/uart_rx_it/CMakeLists.txt b/examples/uart/uart_rx_it/CMakeLists.txt new file mode 100644 index 00000000..6979db2c --- /dev/null +++ b/examples/uart/uart_rx_it/CMakeLists.txt @@ -0,0 +1,2 @@ +set(mains main.c) +generate_bin() \ No newline at end of file diff --git a/examples/uart/uart_rx_it/cdk/uart_rx_it.cdkproj b/examples/uart/uart_rx_it/cdk/uart_rx_it.cdkproj new file mode 100644 index 00000000..522df99c --- /dev/null +++ b/examples/uart/uart_rx_it/cdk/uart_rx_it.cdkproj @@ -0,0 +1,726 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/uart/uart_rx_it/main.c b/examples/uart/uart_rx_it/main.c new file mode 100644 index 00000000..2c503f3d --- /dev/null +++ b/examples/uart/uart_rx_it/main.c @@ -0,0 +1,72 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_mtimer.h" +#include "hal_uart.h" + +void uart_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state) +{ + uint8_t i = 0; + + if (state == UART_EVENT_RX_FIFO) + { + MSG("rf\r\n"); + for (i = 0; i < size; i++) + { + MSG("0x%x ", (*(uint8_t *)(args+i))); + } + MSG("\r\n"); + } + else if (state == UART_EVENT_RTO) + { + MSG("rto\r\n"); + for (i = 0; i < size; i++) + { + MSG("0x%x ", (*(uint8_t *)(args+i))); + } + MSG("\r\n"); + } +} + +const char* string = "uart1 poll tx and rx irq test\r\n"; + +int main(void) +{ + + bflb_platform_init(0); + uart_register(UART1_INDEX, "uart1", DEVICE_OFLAG_RDWR); + struct device *uart = device_find("uart1"); + + if (uart) + { + + device_open(uart, DEVICE_OFLAG_STREAM_TX | DEVICE_OFLAG_INT_RX); //uart0 tx dma mode + device_set_callback(uart, uart_irq_callback); + device_control(uart, DEVICE_CTRL_SET_INT, (void *)(UART_RX_FIFO_IT|UART_RTO_IT)); + } + + while (1) + { + device_write(uart,0,string,strlen(string)); + bflb_platform_delay_ms(1000); + } +} \ No newline at end of file diff --git a/examples/usb/script/cdc_in_loopback.py b/examples/usb/script/cdc_in_loopback.py new file mode 100644 index 00000000..b42e2647 --- /dev/null +++ b/examples/usb/script/cdc_in_loopback.py @@ -0,0 +1,149 @@ +# -*- coding:utf-8 -*- +import serial +import serial.tools.list_ports +import struct +import time +import sys +import random +import threading +import datetime + + +############################################################################### +#文件设置 +############################################################################### +writesize = 50*1024 +# readsize = 0*1024 +filesize = 1024*1024 +############################################################################### +#COM设置 +############################################################################### +loopbackcom = "COM20" +baudrate = 2000000 +############################################################################### +#单串口回环任务 +############################################################################### +def loopback_tx_thread(func): + print("loopback thread start") + txalllen = 0 + txdatalen = 0 + txflag = 0 + txendtime = datetime.datetime.now() + rxalllen = 0 + rxdatalen = 0 + rxflag = 0 + rxendtime = datetime.datetime.now() + begin = datetime.datetime.now() + while True: + if txflag == 0: + if txalllen < filesize: + loopback_send_data = loopback_send_obj.read(writesize) + txdatalen = loopback_serial.write(loopback_send_data) + txalllen += txdatalen + else: + txflag = 1 + print("loopback send end") + break + end = datetime.datetime.now() + k = end - begin + print("loopback tx time cost:", k) + time.sleep(0.2) + print("loopback tx thread end") + +############################################################################### +#单串口回环任务 +############################################################################### +def loopback_rx_thread(func): + print("loopback thread start") + txalllen = 0 + txdatalen = 0 + txflag = 0 + txendtime = datetime.datetime.now() + rxalllen = 0 + rxdatalen = 0 + rxflag = 0 + rxendtime = datetime.datetime.now() + begin = datetime.datetime.now() + while True: + if rxalllen < filesize: + loopback_recv_data = loopback_serial.read(writesize) + rxdatalen = loopback_recv_obj.write(loopback_recv_data) + rxalllen += rxdatalen + else: + rxflag = 1 + print("loopback recv end") + break + end = datetime.datetime.now() + k = end - begin + print("loopback rx time cost:", k) + time.sleep(0.2) + print("loopback rx thread end") + +############################################################################### +#创建原始文件 +############################################################################### +#create usb send file +begin = datetime.datetime.now() +loopback_send_obj = open("loopback_send_file.txt", "w+") +for i in range(filesize): + loopback_send_obj.write(str(random.randint(0, 9))) +loopback_send_obj.close() +end = datetime.datetime.now() +k = end - begin +print("file time cost:", k) + +#create uart receive file +loopback_recv_obj = open("loopback_recv_file.txt", "w+") +loopback_recv_obj.close() + +print("files created") + +############################################################################### +#打开原始文件 +############################################################################### +#open source file for read +loopback_send_obj = open("loopback_send_file.txt", "rb+") + +#open target file for write +loopback_recv_obj = open("loopback_recv_file.txt", "wb+") + +print("files opened") + +############################################################################### +#打开USB和UART串口 +#PC端serial的波特率不准确,比606稍快,在发送内容较短时可通过减小PC端波特率解决 +#uart_serial = serial.Serial("COM15", 2500000 - 20000, timeout = 2) +#uart_serial = serial.Serial("COM15", 5000000 - 100000, timeout = 2) +############################################################################### +#open usb serial for read & write +loopback_serial = serial.Serial(loopbackcom, baudrate, timeout = 0) +loopback_serial.set_buffer_size(rx_size = 1024 * 1024, tx_size = 1024 * 1024) + +print("serial opened") + +############################################################################### +#将各任务加入线程列表 +############################################################################### +#threads list +threads = [] +loopback_tx_th = threading.Thread(target=loopback_tx_thread, args=("1",)) +loopback_rx_th = threading.Thread(target=loopback_rx_thread, args=("2",)) +threads.append(loopback_tx_th) +threads.append(loopback_rx_th) +############################################################################### +#####################################MAIN###################################### +############################################################################### +if __name__ == '__main__': + time.sleep(1) + # loopback_tx_th.setDaemon(True) + loopback_rx_th.setDaemon(True) + loopback_rx_th.start() + # loopback_tx_th.start() + loopback_rx_th.join() + # loopback_tx_th.join() + # loopback_send_obj.close() + loopback_recv_obj.close() + loopback_serial.close() + print("all end") + print("") +############################################################################### diff --git a/examples/usb/script/cdc_out_loopback.py b/examples/usb/script/cdc_out_loopback.py new file mode 100644 index 00000000..0b068283 --- /dev/null +++ b/examples/usb/script/cdc_out_loopback.py @@ -0,0 +1,149 @@ +# -*- coding:utf-8 -*- +import serial +import serial.tools.list_ports +import struct +import time +import sys +import random +import threading +import datetime + + +############################################################################### +#文件设置 +############################################################################### +writesize = 50*1024 +# readsize = 0*1024 +filesize = 1024*1024 +############################################################################### +#COM设置 +############################################################################### +loopbackcom = "COM20" +baudrate = 2000000 +############################################################################### +#单串口回环任务 +############################################################################### +def loopback_tx_thread(func): + print("loopback thread start") + txalllen = 0 + txdatalen = 0 + txflag = 0 + txendtime = datetime.datetime.now() + rxalllen = 0 + rxdatalen = 0 + rxflag = 0 + rxendtime = datetime.datetime.now() + begin = datetime.datetime.now() + while True: + if txflag == 0: + if txalllen < filesize: + loopback_send_data = loopback_send_obj.read(writesize) + txdatalen = loopback_serial.write(loopback_send_data) + txalllen += txdatalen + else: + txflag = 1 + print("loopback send end") + break + end = datetime.datetime.now() + k = end - begin + print("loopback tx time cost:", k) + time.sleep(0.2) + print("loopback tx thread end") + +############################################################################### +#单串口回环任务 +############################################################################### +def loopback_rx_thread(func): + print("loopback thread start") + txalllen = 0 + txdatalen = 0 + txflag = 0 + txendtime = datetime.datetime.now() + rxalllen = 0 + rxdatalen = 0 + rxflag = 0 + rxendtime = datetime.datetime.now() + begin = datetime.datetime.now() + while True: + if rxalllen < filesize: + loopback_recv_data = loopback_serial.read(writesize) + rxdatalen = loopback_recv_obj.write(loopback_recv_data) + rxalllen += rxdatalen + else: + rxflag = 1 + print("loopback recv end") + break + end = datetime.datetime.now() + k = end - begin + print("loopback rx time cost:", k) + time.sleep(0.2) + print("loopback rx thread end") + +############################################################################### +#创建原始文件 +############################################################################### +#create usb send file +begin = datetime.datetime.now() +loopback_send_obj = open("loopback_send_file.txt", "w+") +for i in range(filesize): + loopback_send_obj.write(str(random.randint(0, 9))) +loopback_send_obj.close() +end = datetime.datetime.now() +k = end - begin +print("file time cost:", k) + +#create uart receive file +loopback_recv_obj = open("loopback_recv_file.txt", "w+") +loopback_recv_obj.close() + +print("files created") + +############################################################################### +#打开原始文件 +############################################################################### +#open source file for read +loopback_send_obj = open("loopback_send_file.txt", "rb+") + +#open target file for write +loopback_recv_obj = open("loopback_recv_file.txt", "wb+") + +print("files opened") + +############################################################################### +#打开USB和UART串口 +#PC端serial的波特率不准确,比606稍快,在发送内容较短时可通过减小PC端波特率解决 +#uart_serial = serial.Serial("COM15", 2500000 - 20000, timeout = 2) +#uart_serial = serial.Serial("COM15", 5000000 - 100000, timeout = 2) +############################################################################### +#open usb serial for read & write +loopback_serial = serial.Serial(loopbackcom, baudrate, timeout = 0) +loopback_serial.set_buffer_size(rx_size = 1024 * 1024, tx_size = 1024 * 1024) + +print("serial opened") + +############################################################################### +#将各任务加入线程列表 +############################################################################### +#threads list +threads = [] +loopback_tx_th = threading.Thread(target=loopback_tx_thread, args=("1",)) +loopback_rx_th = threading.Thread(target=loopback_rx_thread, args=("2",)) +threads.append(loopback_tx_th) +threads.append(loopback_rx_th) +############################################################################### +#####################################MAIN###################################### +############################################################################### +if __name__ == '__main__': + time.sleep(1) + loopback_tx_th.setDaemon(True) + # loopback_rx_th.setDaemon(True) + # loopback_rx_th.start() + loopback_tx_th.start() + # loopback_rx_th.join() + loopback_tx_th.join() + loopback_send_obj.close() + # loopback_recv_obj.close() + loopback_serial.close() + print("all end") + print("") +############################################################################### diff --git a/examples/usb/script/uart2usb_loopback.py b/examples/usb/script/uart2usb_loopback.py new file mode 100644 index 00000000..c787d988 --- /dev/null +++ b/examples/usb/script/uart2usb_loopback.py @@ -0,0 +1,149 @@ +# -*- coding:utf-8 -*- +import serial +import serial.tools.list_ports +import struct +import time +import sys +import random +import threading +import datetime + + +############################################################################### +#文件设置 +############################################################################### +writesize = 50*1024 +# readsize = 0*1024 +filesize = 5*1024*1024 +############################################################################### +#COM设置 +############################################################################### +loopbackcom = "COM21" +baudrate = 2000000 +############################################################################### +#单串口回环任务 +############################################################################### +def loopback_tx_thread(func): + print("loopback thread start") + txalllen = 0 + txdatalen = 0 + txflag = 0 + txendtime = datetime.datetime.now() + rxalllen = 0 + rxdatalen = 0 + rxflag = 0 + rxendtime = datetime.datetime.now() + begin = datetime.datetime.now() + while True: + if txflag == 0: + if txalllen < filesize: + loopback_send_data = loopback_send_obj.read(writesize) + txdatalen = loopback_serial.write(loopback_send_data) + txalllen += txdatalen + else: + txflag = 1 + print("loopback send end") + break + end = datetime.datetime.now() + k = end - begin + print("loopback tx time cost:", k) + time.sleep(0.2) + print("loopback tx thread end") + +############################################################################### +#单串口回环任务 +############################################################################### +def loopback_rx_thread(func): + print("loopback thread start") + txalllen = 0 + txdatalen = 0 + txflag = 0 + txendtime = datetime.datetime.now() + rxalllen = 0 + rxdatalen = 0 + rxflag = 0 + rxendtime = datetime.datetime.now() + begin = datetime.datetime.now() + while True: + if rxalllen < filesize: + loopback_recv_data = loopback_serial.read(writesize) + rxdatalen = loopback_recv_obj.write(loopback_recv_data) + rxalllen += rxdatalen + else: + rxflag = 1 + print("loopback recv end") + break + end = datetime.datetime.now() + k = end - begin + print("loopback rx time cost:", k) + time.sleep(0.2) + print("loopback rx thread end") + +############################################################################### +#创建原始文件 +############################################################################### +#create usb send file +begin = datetime.datetime.now() +loopback_send_obj = open("loopback_send_file.txt", "w+") +for i in range(filesize): + loopback_send_obj.write(str(random.randint(0, 9))) +loopback_send_obj.close() +end = datetime.datetime.now() +k = end - begin +print("file time cost:", k) + +#create uart receive file +loopback_recv_obj = open("loopback_recv_file.txt", "w+") +loopback_recv_obj.close() + +print("files created") + +############################################################################### +#打开原始文件 +############################################################################### +#open source file for read +loopback_send_obj = open("loopback_send_file.txt", "rb+") + +#open target file for write +loopback_recv_obj = open("loopback_recv_file.txt", "wb+") + +print("files opened") + +############################################################################### +#打开USB和UART串口 +#PC端serial的波特率不准确,比606稍快,在发送内容较短时可通过减小PC端波特率解决 +#uart_serial = serial.Serial("COM15", 2500000 - 20000, timeout = 2) +#uart_serial = serial.Serial("COM15", 5000000 - 100000, timeout = 2) +############################################################################### +#open usb serial for read & write +loopback_serial = serial.Serial(loopbackcom, baudrate, timeout = 0) +loopback_serial.set_buffer_size(rx_size = 1024 * 1024, tx_size = 1024 * 1024) + +print("serial opened") + +############################################################################### +#将各任务加入线程列表 +############################################################################### +#threads list +threads = [] +loopback_tx_th = threading.Thread(target=loopback_tx_thread, args=("1",)) +loopback_rx_th = threading.Thread(target=loopback_rx_thread, args=("2",)) +threads.append(loopback_tx_th) +threads.append(loopback_rx_th) +############################################################################### +#####################################MAIN###################################### +############################################################################### +if __name__ == '__main__': + time.sleep(1) + loopback_tx_th.setDaemon(True) + loopback_rx_th.setDaemon(True) + loopback_rx_th.start() + loopback_tx_th.start() + loopback_rx_th.join() + loopback_tx_th.join() + loopback_send_obj.close() + loopback_recv_obj.close() + loopback_serial.close() + print("all end") + print("") +############################################################################### diff --git a/examples/usb/usb_cdc_loopback/CMakeLists.txt b/examples/usb/usb_cdc_loopback/CMakeLists.txt new file mode 100644 index 00000000..06c9f000 --- /dev/null +++ b/examples/usb/usb_cdc_loopback/CMakeLists.txt @@ -0,0 +1,8 @@ +set(BSP_COMMON_DIR ${CMAKE_SOURCE_DIR}/bsp/bsp_common) +set(TARGET_REQUIRED_LIBS usb_stack) +set(TARGET_REQUIRED_PRIVATE_INCLUDE ${BSP_COMMON_DIR}/usb) +set(TARGET_REQUIRED_SRCS ${BSP_COMMON_DIR}/usb/usb_dc.c ${BSP_COMMON_DIR}/usb/uart_interface.c) +set(mains main.c) +generate_bin() + + diff --git a/examples/usb/usb_cdc_loopback/cdk/usb_cdc_loopback.cdkproj b/examples/usb/usb_cdc_loopback/cdk/usb_cdc_loopback.cdkproj new file mode 100644 index 00000000..e83cdec5 --- /dev/null +++ b/examples/usb/usb_cdc_loopback/cdk/usb_cdc_loopback.cdkproj @@ -0,0 +1,729 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../bsp/bsp_common/usb;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../bsp/bsp_common/usb;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/usb/usb_cdc_loopback/main.c b/examples/usb/usb_cdc_loopback/main.c new file mode 100644 index 00000000..5515bf7d --- /dev/null +++ b/examples/usb/usb_cdc_loopback/main.c @@ -0,0 +1,210 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_usb.h" +#include "usbd_core.h" +#include "usbd_cdc.h" + +#define CDC_IN_EP 0x82 +#define CDC_OUT_EP 0x01 +#define CDC_INT_EP 0x83 + +#define USBD_VID 0xFFFF +#define USBD_PID 0xFFFF +#define USBD_MAX_POWER 100 +#define USBD_LANGID_STRING 1033 + +#define USB_CONFIG_SIZE (9 + CDC_ACM_DESCRIPTOR_LEN) + +USB_DESC_SECTION const uint8_t cdc_descriptor[] = +{ + USB_DEVICE_DESCRIPTOR_INIT(USB_2_0,USBD_VID,USBD_PID,0x0100,0x01), + USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE,0x02,0x01,USB_CONFIG_BUS_POWERED,USBD_MAX_POWER), + CDC_ACM_DESCRIPTOR_INIT(0x00,CDC_INT_EP,CDC_OUT_EP,CDC_IN_EP,0x02), + /////////////////////////////////////// + /// string0 descriptor + /////////////////////////////////////// + USB_LANGID_INIT(USBD_LANGID_STRING), + /////////////////////////////////////// + /// string1 descriptor + /////////////////////////////////////// + 0x12, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'B', 0x00, /* wcChar0 */ + 'o', 0x00, /* wcChar1 */ + 'u', 0x00, /* wcChar2 */ + 'f', 0x00, /* wcChar3 */ + 'f', 0x00, /* wcChar4 */ + 'a', 0x00, /* wcChar5 */ + 'l', 0x00, /* wcChar6 */ + 'o', 0x00, /* wcChar7 */ + /////////////////////////////////////// + /// string2 descriptor + /////////////////////////////////////// + 0x24, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'B', 0x00, /* wcChar0 */ + 'o', 0x00, /* wcChar1 */ + 'u', 0x00, /* wcChar2 */ + 'f', 0x00, /* wcChar3 */ + 'f', 0x00, /* wcChar4 */ + 'a', 0x00, /* wcChar5 */ + 'l', 0x00, /* wcChar6 */ + 'o', 0x00, /* wcChar7 */ + ' ', 0x00, /* wcChar8 */ + 'C', 0x00, /* wcChar9 */ + 'D', 0x00, /* wcChar10 */ + 'C', 0x00, /* wcChar11 */ + ' ', 0x00, /* wcChar13 */ + 'D', 0x00, /* wcChar14 */ + 'E', 0x00, /* wcChar15 */ + 'M', 0x00, /* wcChar16 */ + 'O', 0x00, /* wcChar17 */ + /////////////////////////////////////// + /// string3 descriptor + /////////////////////////////////////// + 0x16, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + '2', 0x00, /* wcChar0 */ + '0', 0x00, /* wcChar1 */ + '2', 0x00, /* wcChar2 */ + '1', 0x00, /* wcChar3 */ + '0', 0x00, /* wcChar4 */ + '3', 0x00, /* wcChar5 */ + '1', 0x00, /* wcChar6 */ + '0', 0x00, /* wcChar7 */ + '0', 0x00, /* wcChar8 */ + '0', 0x00, /* wcChar9 */ + /////////////////////////////////////// + /// device qualifier descriptor + /////////////////////////////////////// + 0x0a, + USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER, + 0x00, + 0x02, + 0x02, + 0x02, + 0x01, + 0x40, + 0x01, + 0x00, + + 0x00 +}; + +bool zlp_flag = false; + +uint32_t actual_write_length = 0; +uint32_t total_recv_length = 0; +uint32_t rx_pos = 0; +uint8_t tx_pos = 0; +uint8_t out_buffer[4096]; + +void usbd_cdc_acm_bulk_out(uint8_t ep) +{ + uint32_t actual_read_length = 0; + + if (usbd_ep_read(ep, &out_buffer[rx_pos], 64, &actual_read_length) < 0) + { + USBD_LOG_DBG("Read DATA Packet failed\r\n"); + usbd_ep_set_stall(ep); + return; + } + usbd_ep_read(ep,NULL,0,NULL); + rx_pos += actual_read_length; + total_recv_length += actual_read_length; + actual_write_length = total_recv_length; + + if(rx_pos > 4096) + rx_pos = 0; +} + +void usbd_cdc_acm_bulk_in(uint8_t ep) +{ + if ((zlp_flag == false) && actual_write_length) + { + if(actual_write_length > 64) + { + usbd_ep_write(ep, (uint8_t*)&out_buffer[tx_pos], 64, NULL); + actual_write_length -= 64; + tx_pos+=64; + } + else + { + usbd_ep_write(ep, (uint8_t*)&out_buffer[tx_pos], actual_write_length, NULL); + actual_write_length = 0; + tx_pos = 0; + total_recv_length = 0; + } + if (!actual_write_length && !(total_recv_length % 64)) + { + MSG("zlp\r\n"); + zlp_flag = true; + } + } + else if (zlp_flag) + { + usbd_ep_write(ep, NULL, 0, NULL); + zlp_flag = false; + } +} + +usbd_class_t cdc_class; +usbd_interface_t cdc_cmd_intf; +usbd_interface_t cdc_data_intf; + +usbd_endpoint_t cdc_out_ep = +{ + .ep_addr = CDC_OUT_EP, + .ep_cb = usbd_cdc_acm_bulk_out +}; + +usbd_endpoint_t cdc_in_ep = +{ + .ep_addr = CDC_IN_EP, + .ep_cb = usbd_cdc_acm_bulk_in +}; + +struct device *usb_fs; + +extern struct device* usb_dc_init(void); +int main(void) +{ + bflb_platform_init(0); + + usbd_desc_register(cdc_descriptor); + + usbd_cdc_add_acm_interface(&cdc_class,&cdc_cmd_intf); + usbd_cdc_add_acm_interface(&cdc_class,&cdc_data_intf); + usbd_cdc_add_endpoint(&cdc_data_intf,&cdc_out_ep); + usbd_cdc_add_endpoint(&cdc_data_intf,&cdc_in_ep); + + usb_fs = usb_dc_init(); + if (usb_fs) + { + device_control(usb_fs, DEVICE_CTRL_SET_INT, (void *)(USB_EP1_DATA_OUT_IT|USB_EP2_DATA_IN_IT)); + } + + while (1) + { + } +} diff --git a/examples/usb/usb_cdc_msc/CMakeLists.txt b/examples/usb/usb_cdc_msc/CMakeLists.txt new file mode 100644 index 00000000..2c7cc5fd --- /dev/null +++ b/examples/usb/usb_cdc_msc/CMakeLists.txt @@ -0,0 +1,8 @@ +set(BSP_COMMON_DIR ${CMAKE_SOURCE_DIR}/bsp/bsp_common) +set(TARGET_REQUIRED_LIBS usb_stack) +set(TARGET_REQUIRED_PRIVATE_INCLUDE ${BSP_COMMON_DIR}/usb ${BSP_COMMON_DIR}/spi_sd) +set(TARGET_REQUIRED_SRCS ${BSP_COMMON_DIR}/usb/usb_dc.c ${BSP_COMMON_DIR}/usb/uart_interface.c ${BSP_COMMON_DIR}/spi_sd/bsp_spi_sd.c) +set(mains main.c) +generate_bin() + + diff --git a/examples/usb/usb_cdc_msc/cdk/usb_cdc_msc.cdkproj b/examples/usb/usb_cdc_msc/cdk/usb_cdc_msc.cdkproj new file mode 100644 index 00000000..284ad284 --- /dev/null +++ b/examples/usb/usb_cdc_msc/cdk/usb_cdc_msc.cdkproj @@ -0,0 +1,730 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../bsp/bsp_common/usb;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../bsp/bsp_common/usb;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/usb/usb_cdc_msc/main.c b/examples/usb/usb_cdc_msc/main.c new file mode 100644 index 00000000..bcef66d3 --- /dev/null +++ b/examples/usb/usb_cdc_msc/main.c @@ -0,0 +1,236 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_usb.h" +#include "usbd_core.h" +#include "usbd_cdc.h" +#include "usbd_msc.h" +#include "uart_interface.h" + +#define CDC_IN_EP 0x82 +#define CDC_OUT_EP 0x01 +#define CDC_INT_EP 0x83 +#define MSC_IN_EP 0x85 +#define MSC_OUT_EP 0x04 + +#define USBD_VID 0xFFFF +#define USBD_PID 0xFFFF +#define USBD_MAX_POWER 100 +#define USBD_LANGID_STRING 1033 + +#define USB_CONFIG_SIZE (9 + CDC_ACM_DESCRIPTOR_LEN + 8 + MSC_DESCRIPTOR_LEN) + +USB_DESC_SECTION const uint8_t cdc_msc_descriptor[] = +{ + USB_DEVICE_DESCRIPTOR_INIT(USB_2_0,USBD_VID,USBD_PID,0x0100,0x01), + USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE,0x03,0x01,USB_CONFIG_BUS_POWERED,USBD_MAX_POWER), + CDC_ACM_DESCRIPTOR_INIT(0x00,CDC_INT_EP,CDC_OUT_EP,CDC_IN_EP,0x02), + /////////////////////////////////////// + /// interface association descriptor + /////////////////////////////////////// + 0x08, /* bLength */ + USB_DESCRIPTOR_TYPE_INTERFACE_ASSOCIATION, /* bDescriptorType */ + 0x02, /* bFirstInterface */ + 0x01, /* bInterfaceCount */ + 0x08, /* bFunctionClass */ + 0x06, /* bFunctionSubClass */ + 0x50, /* bFunctionProtocol */ + 0x00, /* iFunction */ + + MSC_DESCRIPTOR_INIT(0x02,MSC_OUT_EP,MSC_IN_EP,0x02), + /////////////////////////////////////// + /// string0 descriptor + /////////////////////////////////////// + USB_LANGID_INIT(USBD_LANGID_STRING), + /////////////////////////////////////// + /// string1 descriptor + /////////////////////////////////////// + 0x12, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'B', 0x00, /* wcChar0 */ + 'o', 0x00, /* wcChar1 */ + 'u', 0x00, /* wcChar2 */ + 'f', 0x00, /* wcChar3 */ + 'f', 0x00, /* wcChar4 */ + 'a', 0x00, /* wcChar5 */ + 'l', 0x00, /* wcChar6 */ + 'o', 0x00, /* wcChar7 */ + /////////////////////////////////////// + /// string2 descriptor + /////////////////////////////////////// + 0x22, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'B', 0x00, /* wcChar0 */ + 'o', 0x00, /* wcChar1 */ + 'u', 0x00, /* wcChar2 */ + 'f', 0x00, /* wcChar3 */ + 'f', 0x00, /* wcChar4 */ + 'a', 0x00, /* wcChar5 */ + 'l', 0x00, /* wcChar6 */ + 'o', 0x00, /* wcChar7 */ + ' ', 0x00, /* wcChar8 */ + 'C', 0x00, /* wcChar9 */ + 'D', 0x00, /* wcChar10 */ + 'C', 0x00, /* wcChar11 */ + '_', 0x00, /* wcChar12 */ + 'M', 0x00, /* wcChar14 */ + 'S', 0x00, /* wcChar15 */ + 'C', 0x00, /* wcChar16 */ + /////////////////////////////////////// + /// string3 descriptor + /////////////////////////////////////// + 0x16, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'b', 0x00, /* wcChar0 */ + 'l', 0x00, /* wcChar1 */ + '7', 0x00, /* wcChar2 */ + '0', 0x00, /* wcChar3 */ + '2', 0x00, /* wcChar4 */ + '1', 0x00, /* wcChar5 */ + '2', 0x00, /* wcChar6 */ + '3', 0x00, /* wcChar7 */ + '4', 0x00, /* wcChar8 */ + '5', 0x00, /* wcChar9 */ + /////////////////////////////////////// + /// device qualifier descriptor + /////////////////////////////////////// + 0x0a, + USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER, + 0x00, + 0x02, + 0x02, + 0x02, + 0x01, + 0x40, + 0x01, + 0x00, + + 0x00 +}; + +#define BLOCK_SIZE 512 +#define BLOCK_COUNT 48 + +typedef struct +{ + uint8_t BlockSpace[BLOCK_SIZE]; +} BLOCK_TYPE; + +// The CDC recv buffer size should equal to the out endpoint size +// or we will need a timeout to flush the recv buffer +BLOCK_TYPE mass_block[BLOCK_COUNT] __attribute__((section(".system_ram"))); + +extern struct usbd_interface_cfg usb_msc; + +void usbd_msc_get_cap(uint8_t lun, uint32_t *block_num, uint16_t *block_size) +{ + *block_num = BLOCK_COUNT; + *block_size = BLOCK_SIZE; +} +int usbd_msc_sector_read(uint32_t sector,uint8_t* buffer,uint32_t length) +{ + memcpy(buffer, mass_block[sector].BlockSpace, length); + return 0; +} + +int usbd_msc_sector_write(uint32_t sector,uint8_t* buffer,uint32_t length) +{ + memcpy(mass_block[sector].BlockSpace, buffer, length); + return 0; +} + + +struct device *usb_fs; + +extern struct usbd_interface_cfg usb_cdc; + +void usbd_cdc_acm_bulk_out(uint8_t ep) +{ + usb_dc_receive_to_ringbuffer(usb_fs, &usb_rx_rb, ep); +} + +void usbd_cdc_acm_bulk_in(uint8_t ep) +{ + usb_dc_send_from_ringbuffer(usb_fs, &uart1_rx_rb, ep); +} +void usbd_cdc_acm_set_line_coding(uint32_t baudrate, uint8_t databits, uint8_t parity, uint8_t stopbits) +{ + uart1_config(baudrate, databits, parity, stopbits); +} + +void usbd_cdc_acm_set_dtr(bool dtr) +{ + dtr_pin_set(dtr); +} + +void usbd_cdc_acm_set_rts(bool rts) +{ + rts_pin_set(rts); +} + +usbd_class_t cdc_class; + +usbd_interface_t cdc_cmd_intf; +usbd_interface_t cdc_data_intf; + +usbd_endpoint_t cdc_out_ep = +{ + .ep_addr = CDC_OUT_EP, + .ep_cb = usbd_cdc_acm_bulk_out +}; + +usbd_endpoint_t cdc_in_ep = +{ + .ep_addr = CDC_IN_EP, + .ep_cb = usbd_cdc_acm_bulk_in +}; + +extern struct device* usb_dc_init(void); + +int main(void) +{ + bflb_platform_init(0); + uart_ringbuffer_init(); + uart1_init(); + uart1_dtr_init(); + uart1_rts_init(); + + usbd_desc_register(cdc_msc_descriptor); + + usbd_cdc_add_acm_interface(&cdc_class,&cdc_cmd_intf); + usbd_cdc_add_acm_interface(&cdc_class,&cdc_data_intf); + usbd_cdc_add_endpoint(&cdc_data_intf,&cdc_out_ep); + usbd_cdc_add_endpoint(&cdc_data_intf,&cdc_in_ep); + + usbd_msc_class_init(MSC_OUT_EP,MSC_IN_EP); + + usb_fs = usb_dc_init(); + if (usb_fs) + { + device_control(usb_fs, DEVICE_CTRL_SET_INT, (void *)(USB_EP1_DATA_OUT_IT | USB_EP2_DATA_IN_IT|USB_EP4_DATA_OUT_IT|USB_EP5_DATA_IN_IT)); + } + + while (1) + { + uart_send_from_ringbuffer(); + } +} diff --git a/examples/usb/usb_msc_ram/CMakeLists.txt b/examples/usb/usb_msc_ram/CMakeLists.txt new file mode 100644 index 00000000..2c7cc5fd --- /dev/null +++ b/examples/usb/usb_msc_ram/CMakeLists.txt @@ -0,0 +1,8 @@ +set(BSP_COMMON_DIR ${CMAKE_SOURCE_DIR}/bsp/bsp_common) +set(TARGET_REQUIRED_LIBS usb_stack) +set(TARGET_REQUIRED_PRIVATE_INCLUDE ${BSP_COMMON_DIR}/usb ${BSP_COMMON_DIR}/spi_sd) +set(TARGET_REQUIRED_SRCS ${BSP_COMMON_DIR}/usb/usb_dc.c ${BSP_COMMON_DIR}/usb/uart_interface.c ${BSP_COMMON_DIR}/spi_sd/bsp_spi_sd.c) +set(mains main.c) +generate_bin() + + diff --git a/examples/usb/usb_msc_ram/cdk/usb_msc_ram.cdkproj b/examples/usb/usb_msc_ram/cdk/usb_msc_ram.cdkproj new file mode 100644 index 00000000..31e7204a --- /dev/null +++ b/examples/usb/usb_msc_ram/cdk/usb_msc_ram.cdkproj @@ -0,0 +1,729 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../bsp/bsp_common/usb;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../bsp/bsp_common/usb;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/usb/usb_msc_ram/main.c b/examples/usb/usb_msc_ram/main.c new file mode 100644 index 00000000..80eabf64 --- /dev/null +++ b/examples/usb/usb_msc_ram/main.c @@ -0,0 +1,161 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_usb.h" +#include "usbd_core.h" +#include "usbd_msc.h" + +#define MSC_IN_EP 0x85 +#define MSC_OUT_EP 0x04 + +#define USBD_VID 0xFFFF +#define USBD_PID 0xFFFF +#define USBD_MAX_POWER 100 +#define USBD_LANGID_STRING 1033 + +#define USB_CONFIG_SIZE (9 + MSC_DESCRIPTOR_LEN) + +USB_DESC_SECTION const uint8_t msc_ram_descriptor[] = { + USB_DEVICE_DESCRIPTOR_INIT(USB_2_0,USBD_VID,USBD_PID,0x0200,0x01), + USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE,0x01,0x01,USB_CONFIG_BUS_POWERED,USBD_MAX_POWER), + MSC_DESCRIPTOR_INIT(0x00,MSC_OUT_EP,MSC_IN_EP,0x02), + /////////////////////////////////////// + /// string0 descriptor + /////////////////////////////////////// + USB_LANGID_INIT(USBD_LANGID_STRING), + /////////////////////////////////////// + /// string1 descriptor + /////////////////////////////////////// + 0x12, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'B', 0x00, /* wcChar0 */ + 'o', 0x00, /* wcChar1 */ + 'u', 0x00, /* wcChar2 */ + 'f', 0x00, /* wcChar3 */ + 'f', 0x00, /* wcChar4 */ + 'a', 0x00, /* wcChar5 */ + 'l', 0x00, /* wcChar6 */ + 'o', 0x00, /* wcChar7 */ + /////////////////////////////////////// + /// string2 descriptor + /////////////////////////////////////// + 0x24, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'B', 0x00, /* wcChar0 */ + 'o', 0x00, /* wcChar1 */ + 'u', 0x00, /* wcChar2 */ + 'f', 0x00, /* wcChar3 */ + 'f', 0x00, /* wcChar4 */ + 'a', 0x00, /* wcChar5 */ + 'l', 0x00, /* wcChar6 */ + 'o', 0x00, /* wcChar7 */ + ' ', 0x00, /* wcChar8 */ + 'M', 0x00, /* wcChar9 */ + 'S', 0x00, /* wcChar10 */ + 'C', 0x00, /* wcChar11 */ + ' ', 0x00, /* wcChar12 */ + 'D', 0x00, /* wcChar13 */ + 'E', 0x00, /* wcChar14 */ + 'M', 0x00, /* wcChar15 */ + 'O', 0x00, /* wcChar16 */ + /////////////////////////////////////// + /// string3 descriptor + /////////////////////////////////////// + 0x16, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + '2', 0x00, /* wcChar0 */ + '0', 0x00, /* wcChar1 */ + '2', 0x00, /* wcChar2 */ + '1', 0x00, /* wcChar3 */ + '0', 0x00, /* wcChar4 */ + '3', 0x00, /* wcChar5 */ + '1', 0x00, /* wcChar6 */ + '0', 0x00, /* wcChar7 */ + '0', 0x00, /* wcChar8 */ + '0', 0x00, /* wcChar9 */ + /////////////////////////////////////// + /// device qualifier descriptor + /////////////////////////////////////// + 0x0a, + USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x40, + 0x01, + 0x00, + + 0x00 +}; + +#define BLOCK_SIZE 512 +#define BLOCK_COUNT 64 + +typedef struct +{ + uint8_t BlockSpace[BLOCK_SIZE]; +} BLOCK_TYPE; + +// The CDC recv buffer size should equal to the out endpoint size +// or we will need a timeout to flush the recv buffer +BLOCK_TYPE mass_block[BLOCK_COUNT] __attribute__((section(".system_ram"))); + + +void usbd_msc_get_cap(uint8_t lun, uint32_t *block_num, uint16_t *block_size) +{ + *block_num = BLOCK_COUNT; + *block_size = BLOCK_SIZE; +} +int usbd_msc_sector_read(uint32_t sector,uint8_t* buffer,uint32_t length) +{ + memcpy(buffer, mass_block[sector].BlockSpace, length); + return 0; +} + +int usbd_msc_sector_write(uint32_t sector,uint8_t* buffer,uint32_t length) +{ + memcpy(mass_block[sector].BlockSpace, buffer, length); + return 0; +} + +struct device *usb_fs; + +extern struct device* usb_dc_init(void); +int main(void) +{ + bflb_platform_init(0); + + usbd_desc_register(msc_ram_descriptor); + usbd_msc_class_init(MSC_OUT_EP,MSC_IN_EP); + + usb_fs = usb_dc_init(); + if (usb_fs) + { + device_control(usb_fs, DEVICE_CTRL_SET_INT, (void *)(USB_EP4_DATA_OUT_IT|USB_EP5_DATA_IN_IT)); + } + + while (1) + { + } +} diff --git a/examples/usb/usb_msc_sd/CMakeLists.txt b/examples/usb/usb_msc_sd/CMakeLists.txt new file mode 100644 index 00000000..2c7cc5fd --- /dev/null +++ b/examples/usb/usb_msc_sd/CMakeLists.txt @@ -0,0 +1,8 @@ +set(BSP_COMMON_DIR ${CMAKE_SOURCE_DIR}/bsp/bsp_common) +set(TARGET_REQUIRED_LIBS usb_stack) +set(TARGET_REQUIRED_PRIVATE_INCLUDE ${BSP_COMMON_DIR}/usb ${BSP_COMMON_DIR}/spi_sd) +set(TARGET_REQUIRED_SRCS ${BSP_COMMON_DIR}/usb/usb_dc.c ${BSP_COMMON_DIR}/usb/uart_interface.c ${BSP_COMMON_DIR}/spi_sd/bsp_spi_sd.c) +set(mains main.c) +generate_bin() + + diff --git a/examples/usb/usb_msc_sd/cdk/usb_msc_sd.cdkproj b/examples/usb/usb_msc_sd/cdk/usb_msc_sd.cdkproj new file mode 100644 index 00000000..169dd96d --- /dev/null +++ b/examples/usb/usb_msc_sd/cdk/usb_msc_sd.cdkproj @@ -0,0 +1,730 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + no + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --firmware="D:/BouffaloLabWS/cdk_ws/bl_mcu_sdk/examples/hellowd/Obj/helloworld.bin" + + + + ARCH_RISCV; + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../bsp/bsp_common/spi_sd;$(ProjectPath)../../../../bsp/bsp_common/usb;$(ProjectPath)../../../../common/libc/inc;$(ProjectPath)../../../../common/libc/inc/arm_gcc;$(ProjectPath)../../../../common/libc/inc/bits;$(ProjectPath)../../../../common/libc/inc/sys;$(ProjectPath)../../../../common/libc/src;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4 + no + no + no + no + no + no + yes + no + yes + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl706_iot;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../bsp/bsp_common/spi_sd;$(ProjectPath)../../../../bsp/bsp_common/usb;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c;gcc + + + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-bl702 + no + 4444 + no + 6666 + -f openocd_bl702_evb.cfg + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/usb/usb_msc_sd/main.c b/examples/usb/usb_msc_sd/main.c new file mode 100644 index 00000000..070d8b6a --- /dev/null +++ b/examples/usb/usb_msc_sd/main.c @@ -0,0 +1,165 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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. + * + */ +#include "hal_usb.h" +#include "usbd_core.h" +#include "usbd_msc.h" +#include "bsp_spi_sd.h" + +#define MSC_IN_EP 0x85 +#define MSC_OUT_EP 0x04 + +#define USBD_VID 0xFFFF +#define USBD_PID 0xFFFF +#define USBD_MAX_POWER 100 +#define USBD_LANGID_STRING 1033 + +#define USB_CONFIG_SIZE (9 + MSC_DESCRIPTOR_LEN) + +USB_DESC_SECTION const uint8_t msc_ram_descriptor[] = { + USB_DEVICE_DESCRIPTOR_INIT(USB_2_0,USBD_VID,USBD_PID,0x0200,0x01), + USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE,0x01,0x01,USB_CONFIG_BUS_POWERED,USBD_MAX_POWER), + MSC_DESCRIPTOR_INIT(0x02,MSC_OUT_EP,MSC_IN_EP,0x02), + /////////////////////////////////////// + /// string0 descriptor + /////////////////////////////////////// + 0x04, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 0x09, 0x04, /* wLangID0 */ + /////////////////////////////////////// + /// string1 descriptor + /////////////////////////////////////// + 0x12, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'B', 0x00, /* wcChar0 */ + 'o', 0x00, /* wcChar1 */ + 'u', 0x00, /* wcChar2 */ + 'f', 0x00, /* wcChar3 */ + 'f', 0x00, /* wcChar4 */ + 'a', 0x00, /* wcChar5 */ + 'l', 0x00, /* wcChar6 */ + 'o', 0x00, /* wcChar7 */ + /////////////////////////////////////// + /// string2 descriptor + /////////////////////////////////////// + 0x24, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'B', 0x00, /* wcChar0 */ + 'o', 0x00, /* wcChar1 */ + 'u', 0x00, /* wcChar2 */ + 'f', 0x00, /* wcChar3 */ + 'f', 0x00, /* wcChar4 */ + 'a', 0x00, /* wcChar5 */ + 'l', 0x00, /* wcChar6 */ + 'o', 0x00, /* wcChar7 */ + ' ', 0x00, /* wcChar8 */ + 'M', 0x00, /* wcChar9 */ + 'S', 0x00, /* wcChar10 */ + 'C', 0x00, /* wcChar11 */ + ' ', 0x00, /* wcChar12 */ + 'D', 0x00, /* wcChar13 */ + 'E', 0x00, /* wcChar14 */ + 'M', 0x00, /* wcChar15 */ + 'O', 0x00, /* wcChar16 */ + /////////////////////////////////////// + /// string3 descriptor + /////////////////////////////////////// + 0x16, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + '2', 0x00, /* wcChar0 */ + '0', 0x00, /* wcChar1 */ + '2', 0x00, /* wcChar2 */ + '1', 0x00, /* wcChar3 */ + '0', 0x00, /* wcChar4 */ + '3', 0x00, /* wcChar5 */ + '1', 0x00, /* wcChar6 */ + '0', 0x00, /* wcChar7 */ + '0', 0x00, /* wcChar8 */ + '0', 0x00, /* wcChar9 */ + /////////////////////////////////////// + /// device qualifier descriptor + /////////////////////////////////////// + 0x0a, + USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x40, + 0x01, + 0x00, + + 0x00 +}; + +void usbd_msc_get_cap(uint8_t lun, uint32_t *block_num, uint16_t *block_size) +{ + *block_num = SD_CardInfo.CardCapacity / SD_CardInfo.CardBlockSize; + *block_size = SD_CardInfo.CardBlockSize; + MSG("nbr:%ld,size:%d\r\n",*block_num,*block_size); +} +int usbd_msc_sector_read(uint32_t sector,uint8_t* buffer,uint32_t length) +{ + SD_ReadBlock(sector,buffer,1); + return 0; +} + +int usbd_msc_sector_write(uint32_t sector,uint8_t* buffer,uint32_t length) +{ + SD_WriteBlock(sector,buffer,1); + return 0; +} + +struct device *usb_fs; + +extern struct device* usb_dc_init(void); +ATTR_DTCM_SECTION uint8_t t_buf[512] = {0}; + +void tx_buf_init(void) +{ + for(int i = 0; i < 512; i ++) + { + t_buf[i] = 0xFF; + } +} + + +int main(void) +{ + bflb_platform_init(0); + tx_buf_init(); + SD_Init(&SD_CardInfo); + + usbd_desc_register(msc_ram_descriptor); + usbd_msc_class_init(MSC_OUT_EP,MSC_IN_EP); + + usb_fs = usb_dc_init(); + if (usb_fs) + { + device_control(usb_fs, DEVICE_CTRL_SET_INT, (void *)(USB_EP4_DATA_OUT_IT|USB_EP5_DATA_IN_IT)); + } + + while (1) + { + } +} diff --git a/project.build b/project.build new file mode 100644 index 00000000..7c6878c7 --- /dev/null +++ b/project.build @@ -0,0 +1,4 @@ +PHONY := __build +__build: + cmake -DBOARD=$(BOARD) -DSUPPORT_SHELL=DISABLE -DAPP=$(APP) .. + make -j diff --git a/tools/bflb_flash_tool/bflb_iot_tool b/tools/bflb_flash_tool/bflb_iot_tool new file mode 100644 index 00000000..237d1bc1 Binary files /dev/null and b/tools/bflb_flash_tool/bflb_iot_tool differ diff --git a/tools/bflb_flash_tool/bflb_iot_tool.exe b/tools/bflb_flash_tool/bflb_iot_tool.exe new file mode 100644 index 00000000..1096a21b Binary files /dev/null and b/tools/bflb_flash_tool/bflb_iot_tool.exe differ diff --git a/tools/bflb_flash_tool/bflb_mcu_tool b/tools/bflb_flash_tool/bflb_mcu_tool new file mode 100644 index 00000000..e7d06004 Binary files /dev/null and b/tools/bflb_flash_tool/bflb_mcu_tool differ diff --git a/tools/bflb_flash_tool/bflb_mcu_tool.exe b/tools/bflb_flash_tool/bflb_mcu_tool.exe new file mode 100644 index 00000000..141e87f4 Binary files /dev/null and b/tools/bflb_flash_tool/bflb_mcu_tool.exe differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2.bin new file mode 100644 index 00000000..ee20787b Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2.elf b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2.elf new file mode 100644 index 00000000..1a233f1b Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2.elf differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2.map b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2.map new file mode 100644 index 00000000..15dc62be --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2.map @@ -0,0 +1,11014 @@ +Archive member included to satisfy reference by file (symbol) + +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + out/BSP_Common/xz/xz_dec_lzma2.o (memmove) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + out/3rdParty/FreeRTOS/Source/tasks.o (__clzsi2) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + out/BSP_Common/libc/vsnprintf.o (__udivdi3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + out/BSP_Common/libc/vsnprintf.o (__umoddi3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + out/BSP_Common/libc/atof.o (__adddf3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + out/BSP_Common/libc/atof.o (__divdf3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + out/BSP_Common/libc/atof.o (__muldf3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o (__fixdfsi) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o (__fixunsdfsi) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + out/BSP_Common/libc/atof.o (__floatsidf) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o (__floatunsidf) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) (__clz_tab) + +Discarded input sections + + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/croutine.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/croutine.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_info 0x0000000000000000 0x68 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_abbrev 0x0000000000000000 0x29 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_aranges + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x9a out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x43 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_line 0x0000000000000000 0x167 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_str 0x0000000000000000 0x6fba out/3rdParty/FreeRTOS/Source/croutine.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/croutine.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/list.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/list.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/list.o + .text.vListInitialise + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/list.o + .text.vListInitialiseItem + 0x0000000000000000 0x6 out/3rdParty/FreeRTOS/Source/list.o + .text.vListInsertEnd + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/list.o + .text.vListInsert + 0x0000000000000000 0x32 out/3rdParty/FreeRTOS/Source/list.o + .text.uxListRemove + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/list.o + .debug_info 0x0000000000000000 0x2a9 out/3rdParty/FreeRTOS/Source/list.o + .debug_abbrev 0x0000000000000000 0x114 out/3rdParty/FreeRTOS/Source/list.o + .debug_loc 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/list.o + .debug_aranges + 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/list.o + .debug_ranges 0x0000000000000000 0x30 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x99 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/list.o + .debug_line 0x0000000000000000 0x554 out/3rdParty/FreeRTOS/Source/list.o + .debug_str 0x0000000000000000 0x6701 out/3rdParty/FreeRTOS/Source/list.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/list.o + .debug_frame 0x0000000000000000 0x60 out/3rdParty/FreeRTOS/Source/list.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.prvInsertBlockIntoFreeList + 0x0000000000000000 0x50 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.pvPortMalloc + 0x0000000000000000 0x10c out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.vPortFree + 0x0000000000000000 0xb4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.xPortGetFreeHeapSize + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.xPortGetMinimumEverFreeHeapSize + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.vPortDefineHeapRegions + 0x0000000000000000 0x110 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.vPortGetHeapStats + 0x0000000000000000 0xb6 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .bss.xStart 0x0000000000000000 0x8 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.pxEnd 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xBlockAllocatedBit + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xFreeBytesRemaining + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xMinimumEverFreeBytesRemaining + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xNumberOfSuccessfulAllocations + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xNumberOfSuccessfulFrees + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_info 0x0000000000000000 0x5a7 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_abbrev 0x0000000000000000 0x1e3 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_loc 0x0000000000000000 0x530 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_aranges + 0x0000000000000000 0x50 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_ranges 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0xc0 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_line 0x0000000000000000 0xd17 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_str 0x0000000000000000 0x70c2 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_frame 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/queue.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/queue.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/queue.o + .text.prvCopyDataToQueue + 0x0000000000000000 0xb0 out/3rdParty/FreeRTOS/Source/queue.o + .text.prvCopyDataFromQueue + 0x0000000000000000 0x22 out/3rdParty/FreeRTOS/Source/queue.o + .text.prvUnlockQueue + 0x0000000000000000 0xd6 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericReset + 0x0000000000000000 0xb2 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericCreateStatic + 0x0000000000000000 0x94 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericCreate + 0x0000000000000000 0x90 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGetMutexHolder + 0x0000000000000000 0x3c out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGetMutexHolderFromISR + 0x0000000000000000 0x24 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueCreateCountingSemaphoreStatic + 0x0000000000000000 0x4e out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueCreateCountingSemaphore + 0x0000000000000000 0x44 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericSend + 0x0000000000000000 0x1c4 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueCreateMutexStatic + 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGiveMutexRecursive + 0x0000000000000000 0x54 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueCreateMutex + 0x0000000000000000 0x3c out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericSendFromISR + 0x0000000000000000 0xce out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGiveFromISR + 0x0000000000000000 0x8a out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueReceive + 0x0000000000000000 0x1c0 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueSemaphoreTake + 0x0000000000000000 0x216 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueTakeMutexRecursive + 0x0000000000000000 0x5c out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueuePeek + 0x0000000000000000 0x1a4 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueReceiveFromISR + 0x0000000000000000 0xa2 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueuePeekFromISR + 0x0000000000000000 0x70 out/3rdParty/FreeRTOS/Source/queue.o + .text.uxQueueMessagesWaiting + 0x0000000000000000 0x30 out/3rdParty/FreeRTOS/Source/queue.o + .text.uxQueueSpacesAvailable + 0x0000000000000000 0x38 out/3rdParty/FreeRTOS/Source/queue.o + .text.uxQueueMessagesWaitingFromISR + 0x0000000000000000 0x1e out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueDelete + 0x0000000000000000 0x92 out/3rdParty/FreeRTOS/Source/queue.o + .text.uxQueueGetQueueNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueSetQueueNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/queue.o + .text.ucQueueGetQueueType + 0x0000000000000000 0x6 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueIsQueueEmptyFromISR + 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueIsQueueFullFromISR + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueAddToRegistry + 0x0000000000000000 0x28 out/3rdParty/FreeRTOS/Source/queue.o + .text.pcQueueGetName + 0x0000000000000000 0x2a out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueUnregisterQueue + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueWaitForMessageRestricted + 0x0000000000000000 0x80 out/3rdParty/FreeRTOS/Source/queue.o + .bss.xQueueRegistry + 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/queue.o + .debug_info 0x0000000000000000 0x224e out/3rdParty/FreeRTOS/Source/queue.o + .debug_abbrev 0x0000000000000000 0x3ce out/3rdParty/FreeRTOS/Source/queue.o + .debug_loc 0x0000000000000000 0x23f3 out/3rdParty/FreeRTOS/Source/queue.o + .debug_aranges + 0x0000000000000000 0x130 out/3rdParty/FreeRTOS/Source/queue.o + .debug_ranges 0x0000000000000000 0x350 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x102 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x87 out/3rdParty/FreeRTOS/Source/queue.o + .debug_line 0x0000000000000000 0x301c out/3rdParty/FreeRTOS/Source/queue.o + .debug_str 0x0000000000000000 0x8148 out/3rdParty/FreeRTOS/Source/queue.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/queue.o + .debug_frame 0x0000000000000000 0x5cc out/3rdParty/FreeRTOS/Source/queue.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.prvInitialiseNewStreamBuffer + 0x0000000000000000 0x60 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.prvWriteBytesToBuffer + 0x0000000000000000 0xba out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.prvReadBytesFromBuffer + 0x0000000000000000 0xba out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferGenericCreate + 0x0000000000000000 0x8a out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferGenericCreateStatic + 0x0000000000000000 0xcc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.vStreamBufferDelete + 0x0000000000000000 0x56 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferReset + 0x0000000000000000 0x60 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSetTriggerLevel + 0x0000000000000000 0x32 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSpacesAvailable + 0x0000000000000000 0x44 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferBytesAvailable + 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSend + 0x0000000000000000 0x172 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSendFromISR + 0x0000000000000000 0xca out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferReceive + 0x0000000000000000 0x146 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferNextMessageLengthBytes + 0x0000000000000000 0x76 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferReceiveFromISR + 0x0000000000000000 0xc6 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferIsEmpty + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferIsFull + 0x0000000000000000 0x36 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSendCompletedFromISR + 0x0000000000000000 0x3e out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferReceiveCompletedFromISR + 0x0000000000000000 0x3e out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.uxStreamBufferGetStreamBufferNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.vStreamBufferSetStreamBufferNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.ucStreamBufferGetStreamBufferType + 0x0000000000000000 0x8 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_info 0x0000000000000000 0x1771 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_abbrev 0x0000000000000000 0x311 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_loc 0x0000000000000000 0x1e59 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_aranges + 0x0000000000000000 0xc8 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_ranges 0x0000000000000000 0x1e8 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0xdc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_line 0x0000000000000000 0x2092 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_str 0x0000000000000000 0x7a53 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_frame 0x0000000000000000 0x390 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/tasks.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/tasks.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvSearchForNameWithinSingleList + 0x0000000000000000 0x66 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvAddCurrentTaskToDelayedList + 0x0000000000000000 0xd8 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvResetNextTaskUnblockTime.part.0 + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvInitialiseNewTask.isra.2 + 0x0000000000000000 0xe0 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvDeleteTCB + 0x0000000000000000 0x46 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskEnterCritical.part.5 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskExitCritical.part.6 + 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvAddNewTaskToReadyList + 0x0000000000000000 0x1c0 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvIdleTask + 0x0000000000000000 0x96 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskCreateStatic + 0x0000000000000000 0xb8 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskCreate + 0x0000000000000000 0x90 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskDelete + 0x0000000000000000 0x152 out/3rdParty/FreeRTOS/Source/tasks.o + .text.eTaskGetState + 0x0000000000000000 0xda out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskPriorityGet + 0x0000000000000000 0x56 out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskPriorityGetFromISR + 0x0000000000000000 0x12 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPrioritySet + 0x0000000000000000 0x142 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskResume + 0x0000000000000000 0xe4 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskResumeFromISR + 0x0000000000000000 0xd8 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskStartScheduler + 0x0000000000000000 0x88 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskEndScheduler + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSuspendAll + 0x0000000000000000 0x10 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetTickCount + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetTickCountFromISR + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskGetNumberOfTasks + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.pcTaskGetName + 0x0000000000000000 0x2c out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskIncrementTick + 0x0000000000000000 0x1b6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskResumeAll + 0x0000000000000000 0x1d6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskDelayUntil + 0x0000000000000000 0x8e out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskDelay + 0x0000000000000000 0x4e out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetHandle + 0x0000000000000000 0xce out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskCatchUpTicks + 0x0000000000000000 0x42 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskAbortDelay + 0x0000000000000000 0xec out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSwitchContext + 0x0000000000000000 0xd6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSuspend + 0x0000000000000000 0x190 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPlaceOnEventList + 0x0000000000000000 0x3c out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPlaceOnUnorderedEventList + 0x0000000000000000 0x66 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPlaceOnEventListRestricted + 0x0000000000000000 0x46 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskRemoveFromEventList + 0x0000000000000000 0xac out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskRemoveFromUnorderedEventList + 0x0000000000000000 0xb6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSetTimeOutState + 0x0000000000000000 0x6c out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskInternalSetTimeOutState + 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskCheckForTimeOut + 0x0000000000000000 0xd2 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskMissedYield + 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskGetTaskNumber + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSetTaskNumber + 0x0000000000000000 0x6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskGetInfo + 0x0000000000000000 0xe4 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvListTasksWithinSingleList.part.9 + 0x0000000000000000 0x90 out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskGetSystemState + 0x0000000000000000 0x12a out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetCurrentTaskHandle + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetSchedulerState + 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskPriorityInherit + 0x0000000000000000 0xda out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskPriorityDisinherit + 0x0000000000000000 0xe6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPriorityDisinheritAfterTimeout + 0x0000000000000000 0xf6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskEnterCritical + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskExitCritical + 0x0000000000000000 0x20 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskList + 0x0000000000000000 0x11e out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskResetEventItemValue + 0x0000000000000000 0x1a out/3rdParty/FreeRTOS/Source/tasks.o + .text.pvTaskIncrementMutexHeldCount + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/tasks.o + .text.ulTaskNotifyTake + 0x0000000000000000 0xba out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskNotifyWait + 0x0000000000000000 0xf4 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGenericNotify + 0x0000000000000000 0x14c out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGenericNotifyFromISR + 0x0000000000000000 0x134 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskNotifyGiveFromISR + 0x0000000000000000 0xd4 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskNotifyStateClear + 0x0000000000000000 0x66 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.pxReadyTasksLists + 0x0000000000000000 0x8c out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xDelayedTaskList1 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xDelayedTaskList2 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xPendingReadyList + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xSuspendedTaskList + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xTasksWaitingTermination + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .rodata.CSWTCH.183 + 0x0000000000000000 0x5 out/3rdParty/FreeRTOS/Source/tasks.o + .rodata.vTaskList.str1.4 + 0x0000000000000000 0xf out/3rdParty/FreeRTOS/Source/tasks.o + .rodata.vTaskStartScheduler.str1.4 + 0x0000000000000000 0x5 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.pxCurrentTCB + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.pxDelayedTaskList + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.pxOverflowDelayedTaskList + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxCurrentNumberOfTasks + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxDeletedTasksWaitingCleanUp + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxSchedulerSuspended + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxTaskNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxTopReadyPriority + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xNextTaskUnblockTime + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xNumOfOverflows + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xPendedTicks + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xSchedulerRunning + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xTickCount + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xYieldPending + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_info 0x0000000000000000 0x34e7 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_abbrev 0x0000000000000000 0x466 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_loc 0x0000000000000000 0x2b4b out/3rdParty/FreeRTOS/Source/tasks.o + .debug_aranges + 0x0000000000000000 0x210 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_ranges 0x0000000000000000 0x748 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x17c out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x91 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x10 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_line 0x0000000000000000 0x5760 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_str 0x0000000000000000 0x8fee out/3rdParty/FreeRTOS/Source/tasks.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_frame 0x0000000000000000 0xab0 out/3rdParty/FreeRTOS/Source/tasks.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/timers.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/timers.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/timers.o + .text.prvCheckForValidListAndQueue + 0x0000000000000000 0x9c out/3rdParty/FreeRTOS/Source/timers.o + .text.prvInsertTimerInActiveList + 0x0000000000000000 0x60 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerCreateTimerTask + 0x0000000000000000 0x6c out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerCreate + 0x0000000000000000 0x80 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerCreateStatic + 0x0000000000000000 0x96 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerGenericCommand + 0x0000000000000000 0xa8 out/3rdParty/FreeRTOS/Source/timers.o + .text.prvSwitchTimerLists + 0x0000000000000000 0x9a out/3rdParty/FreeRTOS/Source/timers.o + .text.prvTimerTask + 0x0000000000000000 0x268 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerGetTimerDaemonTaskHandle + 0x0000000000000000 0x2c out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerGetPeriod + 0x0000000000000000 0x1e out/3rdParty/FreeRTOS/Source/timers.o + .text.vTimerSetReloadMode + 0x0000000000000000 0x56 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerGetExpiryTime + 0x0000000000000000 0x1e out/3rdParty/FreeRTOS/Source/timers.o + .text.pcTimerGetName + 0x0000000000000000 0x1e out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerIsTimerActive + 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/timers.o + .text.pvTimerGetTimerID + 0x0000000000000000 0x30 out/3rdParty/FreeRTOS/Source/timers.o + .text.vTimerSetTimerID + 0x0000000000000000 0x32 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerPendFunctionCallFromISR + 0x0000000000000000 0x2c out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerPendFunctionCall + 0x0000000000000000 0x56 out/3rdParty/FreeRTOS/Source/timers.o + .text.uxTimerGetTimerNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .text.vTimerSetTimerNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .bss.ucStaticTimerQueueStorage.2169 + 0x0000000000000000 0x80 out/3rdParty/FreeRTOS/Source/timers.o + .bss.xActiveTimerList1 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/timers.o + .bss.xActiveTimerList2 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/timers.o + .bss.xStaticTimerQueue.2168 + 0x0000000000000000 0x50 out/3rdParty/FreeRTOS/Source/timers.o + .rodata.prvCheckForValidListAndQueue.str1.4 + 0x0000000000000000 0x5 out/3rdParty/FreeRTOS/Source/timers.o + .rodata.xTimerCreateTimerTask.str1.4 + 0x0000000000000000 0x8 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.pxCurrentTimerList + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.pxOverflowTimerList + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.xLastTime.2122 + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.xTimerQueue + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.xTimerTaskHandle + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .debug_info 0x0000000000000000 0x190a out/3rdParty/FreeRTOS/Source/timers.o + .debug_abbrev 0x0000000000000000 0x361 out/3rdParty/FreeRTOS/Source/timers.o + .debug_loc 0x0000000000000000 0x12ee out/3rdParty/FreeRTOS/Source/timers.o + .debug_aranges + 0x0000000000000000 0xb8 out/3rdParty/FreeRTOS/Source/timers.o + .debug_ranges 0x0000000000000000 0x218 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0xee out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x87 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x97 out/3rdParty/FreeRTOS/Source/timers.o + .debug_line 0x0000000000000000 0x1529 out/3rdParty/FreeRTOS/Source/timers.o + .debug_str 0x0000000000000000 0x8752 out/3rdParty/FreeRTOS/Source/timers.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/timers.o + .debug_frame 0x0000000000000000 0x338 out/3rdParty/FreeRTOS/Source/timers.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .text 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/port.o + .data 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/port.o + .bss 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/port.o + .text.vPortSetupTimerInterrupt + 0x0000000000000000 0x6a out/BSP_Common/FreeRTOS/port.o + .text.xPortStartScheduler + 0x0000000000000000 0x4e out/BSP_Common/FreeRTOS/port.o + .text.vPortEndScheduler + 0x0000000000000000 0x2 out/BSP_Common/FreeRTOS/port.o + .bss.ullNextTime + 0x0000000000000000 0x8 out/BSP_Common/FreeRTOS/port.o + .sbss.pullMachineTimerCompareRegister + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .sdata.pullNextTime + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .sdata2.pullMachineTimerCompareRegisterBase + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .sdata2.uxTimerIncrementsForOneTick + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .sdata2.xISRStackTop + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .debug_info 0x0000000000000000 0x26d out/BSP_Common/FreeRTOS/port.o + .debug_abbrev 0x0000000000000000 0x148 out/BSP_Common/FreeRTOS/port.o + .debug_loc 0x0000000000000000 0x35 out/BSP_Common/FreeRTOS/port.o + .debug_aranges + 0x0000000000000000 0x30 out/BSP_Common/FreeRTOS/port.o + .debug_ranges 0x0000000000000000 0x40 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x97 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x118 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x15a out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0xbb out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x26 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x4b7 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0xb5 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0xaa out/BSP_Common/FreeRTOS/port.o + .debug_line 0x0000000000000000 0x33c out/BSP_Common/FreeRTOS/port.o + .debug_str 0x0000000000000000 0x6bbd out/BSP_Common/FreeRTOS/port.o + .comment 0x0000000000000000 0x33 out/BSP_Common/FreeRTOS/port.o + .debug_frame 0x0000000000000000 0x58 out/BSP_Common/FreeRTOS/port.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/FreeRTOS/port.o + .text 0x0000000000000000 0x600 out/BSP_Common/FreeRTOS/portASM.o + .data 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/portASM.o + .bss 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/portASM.o + .debug_line 0x0000000000000000 0x483 out/BSP_Common/FreeRTOS/portASM.o + .debug_info 0x0000000000000000 0x26 out/BSP_Common/FreeRTOS/portASM.o + .debug_abbrev 0x0000000000000000 0x14 out/BSP_Common/FreeRTOS/portASM.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/FreeRTOS/portASM.o + .debug_str 0x0000000000000000 0x7b out/BSP_Common/FreeRTOS/portASM.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/FreeRTOS/portASM.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .text 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_crypt.o + .data 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_crypt.o + .bss 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_init_do + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_setkey_do + 0x0000000000000000 0xea out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_setadd_do + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_encrypt_do + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_encrypt_tag_do + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_update_do + 0x0000000000000000 0x24 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_decrypt_do + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_auth_decrypt_do + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_finish_do + 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_deinit_do + 0x0000000000000000 0x2a out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_init + 0x0000000000000000 0x8 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_setkey + 0x0000000000000000 0x28 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_setadd + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_encrypt + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_encrypt_tag + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_update + 0x0000000000000000 0x24 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_decrypt + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_auth_decrypt + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_finish + 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_deinit + 0x0000000000000000 0x32 out/BSP_Common/cipher_suite/bflb_crypt.o + .rodata.bflb_crypt_setkey.str1.4 + 0x0000000000000000 0x15 out/BSP_Common/cipher_suite/bflb_crypt.o + .rodata.bflb_crypt_setkey_do.str1.4 + 0x0000000000000000 0x13 out/BSP_Common/cipher_suite/bflb_crypt.o + .sbss.aesCtx 0x0000000000000000 0x2 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_info 0x0000000000000000 0xdc4 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_abbrev 0x0000000000000000 0x238 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_loc 0x0000000000000000 0x806 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_aranges + 0x0000000000000000 0x70 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_ranges 0x0000000000000000 0xe0 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x1dd out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_line 0x0000000000000000 0x92a out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_str 0x0000000000000000 0x7f429 out/BSP_Common/cipher_suite/bflb_crypt.o + .comment 0x0000000000000000 0x33 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_frame 0x0000000000000000 0x228 out/BSP_Common/cipher_suite/bflb_crypt.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .text 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_dsa.o + .data 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_dsa.o + .bss 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_get_reg_size + 0x0000000000000000 0x7a out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_mexp_binary + 0x0000000000000000 0x190 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_mexp_mont + 0x0000000000000000 0x16a out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_decrypt_crt + 0x0000000000000000 0x1d8 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_init + 0x0000000000000000 0x42 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_sign + 0x0000000000000000 0x96 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_verify + 0x0000000000000000 0xc2 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_info 0x0000000000000000 0xeec out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_abbrev 0x0000000000000000 0x238 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_loc 0x0000000000000000 0x7fd out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_aranges + 0x0000000000000000 0x50 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_ranges 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x1f1 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_line 0x0000000000000000 0xc00 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_str 0x0000000000000000 0x7f32f out/BSP_Common/cipher_suite/bflb_dsa.o + .comment 0x0000000000000000 0x33 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_frame 0x0000000000000000 0x18c out/BSP_Common/cipher_suite/bflb_dsa.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .data 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .bss 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdh_get_scalar_point.isra.6 + 0x0000000000000000 0x3b4 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_deinit + 0x0000000000000000 0x14 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_get_public_key + 0x0000000000000000 0x12 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecc_get_random_value + 0x0000000000000000 0xde out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_sign + 0x0000000000000000 0x268 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_get_private_key + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdh_init + 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdh_deinit + 0x0000000000000000 0x14 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdh_get_encrypt_key + 0x0000000000000000 0x12 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdh_get_public_key + 0x0000000000000000 0x8 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1B + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1Gx + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1Gy + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .text 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_hash.o + .data 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_hash.o + .bss 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_hash.o + .text.bflb_hash_init + 0x0000000000000000 0x80 out/BSP_Common/cipher_suite/bflb_hash.o + .text.bflb_hash_start + 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_hash.o + .text.bflb_hash_update + 0x0000000000000000 0x4c out/BSP_Common/cipher_suite/bflb_hash.o + .text.bflb_hash_finish + 0x0000000000000000 0x4a out/BSP_Common/cipher_suite/bflb_hash.o + .text.bflb_hash_deinit + 0x0000000000000000 0x38 out/BSP_Common/cipher_suite/bflb_hash.o + .bss.shaCtx 0x0000000000000000 0x14 out/BSP_Common/cipher_suite/bflb_hash.o + .rodata.bflb_hash_init.str1.4 + 0x0000000000000000 0x13 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_info 0x0000000000000000 0x4a8 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_abbrev 0x0000000000000000 0x1ac out/BSP_Common/cipher_suite/bflb_hash.o + .debug_loc 0x0000000000000000 0x287 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_aranges + 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_ranges 0x0000000000000000 0x30 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x1d8 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_line 0x0000000000000000 0x770 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_str 0x0000000000000000 0x7f133 out/BSP_Common/cipher_suite/bflb_hash.o + .comment 0x0000000000000000 0x33 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_frame 0x0000000000000000 0xd0 out/BSP_Common/cipher_suite/bflb_hash.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/atof.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/atof.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/atof.o + .text.strntof.part.0 + 0x0000000000000000 0x2b6 out/BSP_Common/libc/atof.o + .text.strntof 0x0000000000000000 0x8 out/BSP_Common/libc/atof.o + .text.atof 0x0000000000000000 0x26 out/BSP_Common/libc/atof.o + .rodata.strntof.part.0.cst8 + 0x0000000000000000 0x10 out/BSP_Common/libc/atof.o + .debug_info 0x0000000000000000 0x391 out/BSP_Common/libc/atof.o + .debug_abbrev 0x0000000000000000 0x1be out/BSP_Common/libc/atof.o + .debug_loc 0x0000000000000000 0x5c0 out/BSP_Common/libc/atof.o + .debug_aranges + 0x0000000000000000 0x30 out/BSP_Common/libc/atof.o + .debug_ranges 0x0000000000000000 0x98 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x67 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/atof.o + .debug_line 0x0000000000000000 0x6f5 out/BSP_Common/libc/atof.o + .debug_str 0x0000000000000000 0x3ded out/BSP_Common/libc/atof.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/atof.o + .debug_frame 0x0000000000000000 0x90 out/BSP_Common/libc/atof.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/atoi.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/atoi.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/atoi.o + .text.atoi 0x0000000000000000 0x18 out/BSP_Common/libc/atoi.o + .debug_info 0x0000000000000000 0xdf out/BSP_Common/libc/atoi.o + .debug_abbrev 0x0000000000000000 0xa5 out/BSP_Common/libc/atoi.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/atoi.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/atoi.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x84 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atoi.o + .debug_line 0x0000000000000000 0x19e out/BSP_Common/libc/atoi.o + .debug_str 0x0000000000000000 0x3e8b out/BSP_Common/libc/atoi.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/atoi.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/atoi.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/atol.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/atol.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/atol.o + .text.atol 0x0000000000000000 0x18 out/BSP_Common/libc/atol.o + .debug_info 0x0000000000000000 0xe6 out/BSP_Common/libc/atol.o + .debug_abbrev 0x0000000000000000 0xa5 out/BSP_Common/libc/atol.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/atol.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/atol.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x84 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atol.o + .debug_line 0x0000000000000000 0x19e out/BSP_Common/libc/atol.o + .debug_str 0x0000000000000000 0x3e95 out/BSP_Common/libc/atol.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/atol.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/atol.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/atoll.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/atoll.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/atoll.o + .text.atoll 0x0000000000000000 0xe out/BSP_Common/libc/atoll.o + .debug_info 0x0000000000000000 0xdf out/BSP_Common/libc/atoll.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/atoll.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/atoll.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/atoll.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x84 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atoll.o + .debug_line 0x0000000000000000 0x17f out/BSP_Common/libc/atoll.o + .debug_str 0x0000000000000000 0x3e94 out/BSP_Common/libc/atoll.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/atoll.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/atoll.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/bsearch.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/bsearch.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/bsearch.o + .text.bsearch 0x0000000000000000 0x5e out/BSP_Common/libc/bsearch.o + .debug_info 0x0000000000000000 0x11a out/BSP_Common/libc/bsearch.o + .debug_abbrev 0x0000000000000000 0xd0 out/BSP_Common/libc/bsearch.o + .debug_loc 0x0000000000000000 0x181 out/BSP_Common/libc/bsearch.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/bsearch.o + .debug_ranges 0x0000000000000000 0x28 out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x3b out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/bsearch.o + .debug_line 0x0000000000000000 0x16d out/BSP_Common/libc/bsearch.o + .debug_str 0x0000000000000000 0x2909 out/BSP_Common/libc/bsearch.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/bsearch.o + .debug_frame 0x0000000000000000 0x4c out/BSP_Common/libc/bsearch.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/common.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/common.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/common.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/common.o + .text.__assert_func + 0x0000000000000000 0x2 out/BSP_Common/libc/common.o + .text.strtof 0x0000000000000000 0x6 out/BSP_Common/libc/common.o + .debug_info 0x0000000000000000 0xdc out/BSP_Common/libc/common.o + .debug_abbrev 0x0000000000000000 0x88 out/BSP_Common/libc/common.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Common/libc/common.o + .debug_ranges 0x0000000000000000 0x18 out/BSP_Common/libc/common.o + .debug_macro 0x0000000000000000 0x11 out/BSP_Common/libc/common.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/common.o + .debug_line 0x0000000000000000 0x76 out/BSP_Common/libc/common.o + .debug_str 0x0000000000000000 0x2632 out/BSP_Common/libc/common.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/common.o + .debug_frame 0x0000000000000000 0x30 out/BSP_Common/libc/common.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/common.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalnum.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalnum.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalnum.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalnum.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalnum.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalnum.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalnum.o + .text.isalnum 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isalnum.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isalnum.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isalnum.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isalnum.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isalnum.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isalnum.o + .debug_line 0x0000000000000000 0xcc out/BSP_Common/libc/ctype_isalnum.o + .debug_str 0x0000000000000000 0x29ab out/BSP_Common/libc/ctype_isalnum.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isalnum.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isalnum.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isalnum.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalpha.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalpha.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalpha.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalpha.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalpha.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalpha.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalpha.o + .text.isalpha 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isalpha.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isalpha.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isalpha.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isalpha.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isalpha.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isalpha.o + .debug_line 0x0000000000000000 0xcc out/BSP_Common/libc/ctype_isalpha.o + .debug_str 0x0000000000000000 0x29ab out/BSP_Common/libc/ctype_isalpha.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isalpha.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isalpha.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isalpha.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isascii.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isascii.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isascii.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isascii.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isascii.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isascii.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isascii.o + .text.isascii 0x0000000000000000 0xa out/BSP_Common/libc/ctype_isascii.o + .debug_info 0x0000000000000000 0xb2 out/BSP_Common/libc/ctype_isascii.o + .debug_abbrev 0x0000000000000000 0xc0 out/BSP_Common/libc/ctype_isascii.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isascii.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isascii.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isascii.o + .debug_line 0x0000000000000000 0xc6 out/BSP_Common/libc/ctype_isascii.o + .debug_str 0x0000000000000000 0x293a out/BSP_Common/libc/ctype_isascii.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isascii.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isascii.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isascii.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isblank.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isblank.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isblank.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isblank.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isblank.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isblank.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isblank.o + .text.isblank 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isblank.o + .debug_info 0x0000000000000000 0xb6 out/BSP_Common/libc/ctype_isblank.o + .debug_abbrev 0x0000000000000000 0xc2 out/BSP_Common/libc/ctype_isblank.o + .debug_loc 0x0000000000000000 0x80 out/BSP_Common/libc/ctype_isblank.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isblank.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isblank.o + .debug_line 0x0000000000000000 0xc6 out/BSP_Common/libc/ctype_isblank.o + .debug_str 0x0000000000000000 0x293a out/BSP_Common/libc/ctype_isblank.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isblank.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isblank.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isblank.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_iscntrl.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_iscntrl.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_iscntrl.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_iscntrl.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_iscntrl.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_iscntrl.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_iscntrl.o + .text.iscntrl 0x0000000000000000 0x14 out/BSP_Common/libc/ctype_iscntrl.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_iscntrl.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_iscntrl.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_iscntrl.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_iscntrl.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_iscntrl.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_iscntrl.o + .debug_str 0x0000000000000000 0x29ab out/BSP_Common/libc/ctype_iscntrl.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_iscntrl.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_iscntrl.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_iscntrl.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isdigit.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isdigit.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isdigit.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isdigit.o + .text.isdigit 0x0000000000000000 0xa out/BSP_Common/libc/ctype_isdigit.o + .debug_info 0x0000000000000000 0xb2 out/BSP_Common/libc/ctype_isdigit.o + .debug_abbrev 0x0000000000000000 0xc0 out/BSP_Common/libc/ctype_isdigit.o + .debug_loc 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isdigit.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isdigit.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isdigit.o + .debug_line 0x0000000000000000 0xc6 out/BSP_Common/libc/ctype_isdigit.o + .debug_str 0x0000000000000000 0x293a out/BSP_Common/libc/ctype_isdigit.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isdigit.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isdigit.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isgraph.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isgraph.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isgraph.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isgraph.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isgraph.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isgraph.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isgraph.o + .text.isgraph 0x0000000000000000 0x14 out/BSP_Common/libc/ctype_isgraph.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isgraph.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isgraph.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isgraph.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isgraph.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isgraph.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_isgraph.o + .debug_str 0x0000000000000000 0x29ab out/BSP_Common/libc/ctype_isgraph.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isgraph.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isgraph.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isgraph.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_islower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_islower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_islower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_islower.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_islower.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_islower.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_islower.o + .text.islower 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_islower.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_islower.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_islower.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_islower.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_islower.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_islower.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_islower.o + .debug_str 0x0000000000000000 0x29ab out/BSP_Common/libc/ctype_islower.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_islower.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_islower.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_islower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isprint.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isprint.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isprint.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isprint.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isprint.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isprint.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isprint.o + .text.isprint 0x0000000000000000 0x14 out/BSP_Common/libc/ctype_isprint.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isprint.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isprint.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isprint.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isprint.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isprint.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_isprint.o + .debug_str 0x0000000000000000 0x29ab out/BSP_Common/libc/ctype_isprint.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isprint.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isprint.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isprint.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_ispunct.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_ispunct.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_ispunct.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_ispunct.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_ispunct.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_ispunct.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_ispunct.o + .text.ispunct 0x0000000000000000 0x14 out/BSP_Common/libc/ctype_ispunct.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_ispunct.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_ispunct.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_ispunct.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_ispunct.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_ispunct.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_ispunct.o + .debug_str 0x0000000000000000 0x29ab out/BSP_Common/libc/ctype_ispunct.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_ispunct.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_ispunct.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_ispunct.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isspace.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isspace.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isspace.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isspace.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isspace.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isspace.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isspace.o + .text.isspace 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isspace.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isspace.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isspace.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isspace.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isspace.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isspace.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_isspace.o + .debug_str 0x0000000000000000 0x29ab out/BSP_Common/libc/ctype_isspace.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isspace.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isspace.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isspace.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isupper.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isupper.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isupper.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isupper.o + .text.isupper 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isupper.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isupper.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isupper.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isupper.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isupper.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isupper.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_isupper.o + .debug_str 0x0000000000000000 0x29ab out/BSP_Common/libc/ctype_isupper.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isupper.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isupper.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isxdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isxdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isxdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isxdigit.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isxdigit.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isxdigit.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isxdigit.o + .text.isxdigit + 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isxdigit.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isxdigit.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isxdigit.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isxdigit.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isxdigit.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isxdigit.o + .debug_line 0x0000000000000000 0xcf out/BSP_Common/libc/ctype_isxdigit.o + .debug_str 0x0000000000000000 0x29ae out/BSP_Common/libc/ctype_isxdigit.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isxdigit.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isxdigit.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isxdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_tolower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_tolower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_tolower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_tolower.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_tolower.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_tolower.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_tolower.o + .text.tolower 0x0000000000000000 0x18 out/BSP_Common/libc/ctype_tolower.o + .debug_info 0x0000000000000000 0x129 out/BSP_Common/libc/ctype_tolower.o + .debug_abbrev 0x0000000000000000 0xfc out/BSP_Common/libc/ctype_tolower.o + .debug_loc 0x0000000000000000 0x34 out/BSP_Common/libc/ctype_tolower.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_tolower.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_tolower.o + .debug_line 0x0000000000000000 0xd4 out/BSP_Common/libc/ctype_tolower.o + .debug_str 0x0000000000000000 0x29bb out/BSP_Common/libc/ctype_tolower.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_tolower.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_tolower.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_tolower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_toupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_toupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_toupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_toupper.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_toupper.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_toupper.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_toupper.o + .text.toupper 0x0000000000000000 0x18 out/BSP_Common/libc/ctype_toupper.o + .debug_info 0x0000000000000000 0x129 out/BSP_Common/libc/ctype_toupper.o + .debug_abbrev 0x0000000000000000 0xfc out/BSP_Common/libc/ctype_toupper.o + .debug_loc 0x0000000000000000 0x34 out/BSP_Common/libc/ctype_toupper.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_toupper.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_toupper.o + .debug_line 0x0000000000000000 0xd4 out/BSP_Common/libc/ctype_toupper.o + .debug_str 0x0000000000000000 0x29bb out/BSP_Common/libc/ctype_toupper.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_toupper.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_toupper.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_toupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctypes.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctypes.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctypes.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctypes.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctypes.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctypes.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctypes.o + .rodata.__ctypes + 0x0000000000000000 0x101 out/BSP_Common/libc/ctypes.o + .debug_info 0x0000000000000000 0x9e out/BSP_Common/libc/ctypes.o + .debug_abbrev 0x0000000000000000 0x71 out/BSP_Common/libc/ctypes.o + .debug_aranges + 0x0000000000000000 0x18 out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x32 out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctypes.o + .debug_line 0x0000000000000000 0x7b out/BSP_Common/libc/ctypes.o + .debug_str 0x0000000000000000 0x2950 out/BSP_Common/libc/ctypes.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctypes.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctypes.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/fnmatch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/fnmatch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/fnmatch.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/fnmatch.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/fnmatch.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/fnmatch.o + .text.fnmatch 0x0000000000000000 0x182 out/BSP_Common/libc/fnmatch.o + .debug_info 0x0000000000000000 0x110 out/BSP_Common/libc/fnmatch.o + .debug_abbrev 0x0000000000000000 0xc2 out/BSP_Common/libc/fnmatch.o + .debug_loc 0x0000000000000000 0x164 out/BSP_Common/libc/fnmatch.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/fnmatch.o + .debug_ranges 0x0000000000000000 0x70 out/BSP_Common/libc/fnmatch.o + .debug_macro 0x0000000000000000 0x29 out/BSP_Common/libc/fnmatch.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/fnmatch.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/fnmatch.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/libc/fnmatch.o + .debug_line 0x0000000000000000 0x404 out/BSP_Common/libc/fnmatch.o + .debug_str 0x0000000000000000 0x26b5 out/BSP_Common/libc/fnmatch.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/fnmatch.o + .debug_frame 0x0000000000000000 0x48 out/BSP_Common/libc/fnmatch.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/fnmatch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/jrand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/jrand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/jrand48.o + .text.jrand48 0x0000000000000000 0x58 out/BSP_Common/libc/jrand48.o + .debug_info 0x0000000000000000 0xd3 out/BSP_Common/libc/jrand48.o + .debug_abbrev 0x0000000000000000 0x85 out/BSP_Common/libc/jrand48.o + .debug_loc 0x0000000000000000 0x82 out/BSP_Common/libc/jrand48.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/jrand48.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/jrand48.o + .debug_line 0x0000000000000000 0x174 out/BSP_Common/libc/jrand48.o + .debug_str 0x0000000000000000 0x30c9 out/BSP_Common/libc/jrand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/jrand48.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/jrand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/lrand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/lrand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/lrand48.o + .text.lrand48 0x0000000000000000 0x1c out/BSP_Common/libc/lrand48.o + .text.rand 0x0000000000000000 0x1c out/BSP_Common/libc/lrand48.o + .text.random 0x0000000000000000 0x8 out/BSP_Common/libc/lrand48.o + .bss.__rand48_seed + 0x0000000000000000 0x6 out/BSP_Common/libc/lrand48.o + .debug_info 0x0000000000000000 0x129 out/BSP_Common/libc/lrand48.o + .debug_abbrev 0x0000000000000000 0xf4 out/BSP_Common/libc/lrand48.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Common/libc/lrand48.o + .debug_ranges 0x0000000000000000 0x38 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/lrand48.o + .debug_line 0x0000000000000000 0x131 out/BSP_Common/libc/lrand48.o + .debug_str 0x0000000000000000 0x30d4 out/BSP_Common/libc/lrand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/lrand48.o + .debug_frame 0x0000000000000000 0x58 out/BSP_Common/libc/lrand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memccpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memccpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memccpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memccpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memccpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memccpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memccpy.o + .text.memccpy 0x0000000000000000 0x20 out/BSP_Common/libc/memccpy.o + .debug_info 0x0000000000000000 0x116 out/BSP_Common/libc/memccpy.o + .debug_abbrev 0x0000000000000000 0xa9 out/BSP_Common/libc/memccpy.o + .debug_loc 0x0000000000000000 0xdf out/BSP_Common/libc/memccpy.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memccpy.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memccpy.o + .debug_line 0x0000000000000000 0x11b out/BSP_Common/libc/memccpy.o + .debug_str 0x0000000000000000 0x2e92 out/BSP_Common/libc/memccpy.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memccpy.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/memccpy.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memccpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memchr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memchr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memchr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memchr.o + .text.memchr 0x0000000000000000 0x24 out/BSP_Common/libc/memchr.o + .debug_info 0x0000000000000000 0xdd out/BSP_Common/libc/memchr.o + .debug_abbrev 0x0000000000000000 0x98 out/BSP_Common/libc/memchr.o + .debug_loc 0x0000000000000000 0x85 out/BSP_Common/libc/memchr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memchr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memchr.o + .debug_line 0x0000000000000000 0xfc out/BSP_Common/libc/memchr.o + .debug_str 0x0000000000000000 0x2e8b out/BSP_Common/libc/memchr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memchr.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/memchr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memcmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memcmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memcpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memcpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memcpy.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memcpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memcpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memcpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memmem.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memmem.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memmem.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memmem.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memmem.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memmem.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memmem.o + .text.memmem 0x0000000000000000 0xb6 out/BSP_Common/libc/memmem.o + .debug_info 0x0000000000000000 0x152 out/BSP_Common/libc/memmem.o + .debug_abbrev 0x0000000000000000 0xd1 out/BSP_Common/libc/memmem.o + .debug_loc 0x0000000000000000 0x253 out/BSP_Common/libc/memmem.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memmem.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memmem.o + .debug_line 0x0000000000000000 0x244 out/BSP_Common/libc/memmem.o + .debug_str 0x0000000000000000 0x2eb3 out/BSP_Common/libc/memmem.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memmem.o + .debug_frame 0x0000000000000000 0x80 out/BSP_Common/libc/memmem.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memmem.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memrchr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memrchr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memrchr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memrchr.o + .text.memrchr 0x0000000000000000 0x2c out/BSP_Common/libc/memrchr.o + .debug_info 0x0000000000000000 0xdd out/BSP_Common/libc/memrchr.o + .debug_abbrev 0x0000000000000000 0x98 out/BSP_Common/libc/memrchr.o + .debug_loc 0x0000000000000000 0x82 out/BSP_Common/libc/memrchr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memrchr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memrchr.o + .debug_line 0x0000000000000000 0x113 out/BSP_Common/libc/memrchr.o + .debug_str 0x0000000000000000 0x2e8d out/BSP_Common/libc/memrchr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memrchr.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/memrchr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memset.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memset.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memset.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memset.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memset.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memset.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memset.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memswap.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memswap.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memswap.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memswap.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memswap.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memswap.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memswap.o + .text.memswap 0x0000000000000000 0x1e out/BSP_Common/libc/memswap.o + .debug_info 0x0000000000000000 0xf3 out/BSP_Common/libc/memswap.o + .debug_abbrev 0x0000000000000000 0x8a out/BSP_Common/libc/memswap.o + .debug_loc 0x0000000000000000 0xdb out/BSP_Common/libc/memswap.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memswap.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memswap.o + .debug_line 0x0000000000000000 0x121 out/BSP_Common/libc/memswap.o + .debug_str 0x0000000000000000 0x2e92 out/BSP_Common/libc/memswap.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memswap.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/memswap.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memswap.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/mrand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/mrand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/mrand48.o + .text.mrand48 0x0000000000000000 0x10 out/BSP_Common/libc/mrand48.o + .debug_info 0x0000000000000000 0xbc out/BSP_Common/libc/mrand48.o + .debug_abbrev 0x0000000000000000 0x91 out/BSP_Common/libc/mrand48.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/mrand48.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/mrand48.o + .debug_line 0x0000000000000000 0xb8 out/BSP_Common/libc/mrand48.o + .debug_str 0x0000000000000000 0x30bf out/BSP_Common/libc/mrand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/mrand48.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/mrand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/nrand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/nrand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/nrand48.o + .text.nrand48 0x0000000000000000 0x14 out/BSP_Common/libc/nrand48.o + .debug_info 0x0000000000000000 0xca out/BSP_Common/libc/nrand48.o + .debug_abbrev 0x0000000000000000 0x9e out/BSP_Common/libc/nrand48.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/nrand48.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/nrand48.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/nrand48.o + .debug_line 0x0000000000000000 0xc8 out/BSP_Common/libc/nrand48.o + .debug_str 0x0000000000000000 0x30c0 out/BSP_Common/libc/nrand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/nrand48.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/nrand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/qsort.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/qsort.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/qsort.o + .text.qsort 0x0000000000000000 0xd2 out/BSP_Common/libc/qsort.o + .debug_info 0x0000000000000000 0x1d0 out/BSP_Common/libc/qsort.o + .debug_abbrev 0x0000000000000000 0x127 out/BSP_Common/libc/qsort.o + .debug_loc 0x0000000000000000 0x287 out/BSP_Common/libc/qsort.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/qsort.o + .debug_ranges 0x0000000000000000 0x48 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x65 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/qsort.o + .debug_line 0x0000000000000000 0x36c out/BSP_Common/libc/qsort.o + .debug_str 0x0000000000000000 0x321a out/BSP_Common/libc/qsort.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/qsort.o + .debug_frame 0x0000000000000000 0x70 out/BSP_Common/libc/qsort.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/seed48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/seed48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/seed48.o + .text.seed48 0x0000000000000000 0x5e out/BSP_Common/libc/seed48.o + .bss.oldseed.1539 + 0x0000000000000000 0x6 out/BSP_Common/libc/seed48.o + .debug_info 0x0000000000000000 0xc8 out/BSP_Common/libc/seed48.o + .debug_abbrev 0x0000000000000000 0x9b out/BSP_Common/libc/seed48.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/seed48.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/seed48.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x4e out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/seed48.o + .debug_line 0x0000000000000000 0xe7 out/BSP_Common/libc/seed48.o + .debug_str 0x0000000000000000 0x30c5 out/BSP_Common/libc/seed48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/seed48.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/seed48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/snprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/snprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/snprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/snprintf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/snprintf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/snprintf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/snprintf.o + .text.snprintf + 0x0000000000000000 0x24 out/BSP_Common/libc/snprintf.o + .debug_info 0x0000000000000000 0x110 out/BSP_Common/libc/snprintf.o + .debug_abbrev 0x0000000000000000 0xd5 out/BSP_Common/libc/snprintf.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/snprintf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/snprintf.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x3e out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/snprintf.o + .debug_line 0x0000000000000000 0x170 out/BSP_Common/libc/snprintf.o + .debug_str 0x0000000000000000 0x2842 out/BSP_Common/libc/snprintf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/snprintf.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/snprintf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/snprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sprintf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/sprintf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/sprintf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/sprintf.o + .text.sprintf 0x0000000000000000 0x30 out/BSP_Common/libc/sprintf.o + .debug_info 0x0000000000000000 0xf8 out/BSP_Common/libc/sprintf.o + .debug_abbrev 0x0000000000000000 0xc4 out/BSP_Common/libc/sprintf.o + .debug_loc 0x0000000000000000 0x4d out/BSP_Common/libc/sprintf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/sprintf.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x3e out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/sprintf.o + .debug_line 0x0000000000000000 0x17f out/BSP_Common/libc/sprintf.o + .debug_str 0x0000000000000000 0x2839 out/BSP_Common/libc/sprintf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/sprintf.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/sprintf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/sprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/srand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/srand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/srand48.o + .text.srand48 0x0000000000000000 0x20 out/BSP_Common/libc/srand48.o + .text.srand 0x0000000000000000 0x20 out/BSP_Common/libc/srand48.o + .text.srandom 0x0000000000000000 0x8 out/BSP_Common/libc/srand48.o + .debug_info 0x0000000000000000 0x121 out/BSP_Common/libc/srand48.o + .debug_abbrev 0x0000000000000000 0x107 out/BSP_Common/libc/srand48.o + .debug_loc 0x0000000000000000 0x13 out/BSP_Common/libc/srand48.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Common/libc/srand48.o + .debug_ranges 0x0000000000000000 0x18 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/srand48.o + .debug_line 0x0000000000000000 0x165 out/BSP_Common/libc/srand48.o + .debug_str 0x0000000000000000 0x30d6 out/BSP_Common/libc/srand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/srand48.o + .debug_frame 0x0000000000000000 0x40 out/BSP_Common/libc/srand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sscanf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/sscanf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/sscanf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/sscanf.o + .text.sscanf 0x0000000000000000 0x26 out/BSP_Common/libc/sscanf.o + .debug_info 0x0000000000000000 0xe9 out/BSP_Common/libc/sscanf.o + .debug_abbrev 0x0000000000000000 0xd5 out/BSP_Common/libc/sscanf.o + .debug_loc 0x0000000000000000 0x42 out/BSP_Common/libc/sscanf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/sscanf.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x3e out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/sscanf.o + .debug_line 0x0000000000000000 0x16e out/BSP_Common/libc/sscanf.o + .debug_str 0x0000000000000000 0x282e out/BSP_Common/libc/sscanf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/sscanf.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/sscanf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/sscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/stdlib.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/stdlib.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/stdlib.o + .text.malloc 0x0000000000000000 0x4 out/BSP_Common/libc/stdlib.o + .text.free 0x0000000000000000 0x2 out/BSP_Common/libc/stdlib.o + .text.calloc 0x0000000000000000 0x4 out/BSP_Common/libc/stdlib.o + .text.realloc 0x0000000000000000 0x4 out/BSP_Common/libc/stdlib.o + .debug_info 0x0000000000000000 0x9dc out/BSP_Common/libc/stdlib.o + .debug_abbrev 0x0000000000000000 0x23f out/BSP_Common/libc/stdlib.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/stdlib.o + .debug_aranges + 0x0000000000000000 0x38 out/BSP_Common/libc/stdlib.o + .debug_ranges 0x0000000000000000 0x28 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0xf4 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x5c out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x57 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x3b out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x18e out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/libc/stdlib.o + .debug_line 0x0000000000000000 0x2dc out/BSP_Common/libc/stdlib.o + .debug_str 0x0000000000000000 0x4b58 out/BSP_Common/libc/stdlib.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/stdlib.o + .debug_frame 0x0000000000000000 0x50 out/BSP_Common/libc/stdlib.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcasecmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcasecmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcasecmp.o + .text.strcasecmp + 0x0000000000000000 0x4a out/BSP_Common/libc/strcasecmp.o + .debug_info 0x0000000000000000 0x13f out/BSP_Common/libc/strcasecmp.o + .debug_abbrev 0x0000000000000000 0xd5 out/BSP_Common/libc/strcasecmp.o + .debug_loc 0x0000000000000000 0xde out/BSP_Common/libc/strcasecmp.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcasecmp.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x4e out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/strcasecmp.o + .debug_line 0x0000000000000000 0x140 out/BSP_Common/libc/strcasecmp.o + .debug_str 0x0000000000000000 0x312b out/BSP_Common/libc/strcasecmp.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcasecmp.o + .debug_frame 0x0000000000000000 0x3c out/BSP_Common/libc/strcasecmp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcat.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcat.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcat.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcat.o + .text.strcat 0x0000000000000000 0x2c out/BSP_Common/libc/strcat.o + .debug_info 0x0000000000000000 0xf7 out/BSP_Common/libc/strcat.o + .debug_abbrev 0x0000000000000000 0xb4 out/BSP_Common/libc/strcat.o + .debug_loc 0x0000000000000000 0x55 out/BSP_Common/libc/strcat.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcat.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcat.o + .debug_line 0x0000000000000000 0xd0 out/BSP_Common/libc/strcat.o + .debug_str 0x0000000000000000 0x2ea8 out/BSP_Common/libc/strcat.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcat.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Common/libc/strcat.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strchr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strchr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strchr.o + .text.strchr 0x0000000000000000 0x1e out/BSP_Common/libc/strchr.o + .debug_info 0x0000000000000000 0xb8 out/BSP_Common/libc/strchr.o + .debug_abbrev 0x0000000000000000 0x6c out/BSP_Common/libc/strchr.o + .debug_loc 0x0000000000000000 0x3f out/BSP_Common/libc/strchr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strchr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x3f out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x64 out/BSP_Common/libc/strchr.o + .debug_line 0x0000000000000000 0x138 out/BSP_Common/libc/strchr.o + .debug_str 0x0000000000000000 0x30e0 out/BSP_Common/libc/strchr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strchr.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strchr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcmp.o + .text.strcmp 0x0000000000000000 0x18 out/BSP_Common/libc/strcmp.o + .debug_info 0x0000000000000000 0xf8 out/BSP_Common/libc/strcmp.o + .debug_abbrev 0x0000000000000000 0x8e out/BSP_Common/libc/strcmp.o + .debug_loc 0x0000000000000000 0x52 out/BSP_Common/libc/strcmp.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcmp.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcmp.o + .debug_line 0x0000000000000000 0xf2 out/BSP_Common/libc/strcmp.o + .debug_str 0x0000000000000000 0x2e89 out/BSP_Common/libc/strcmp.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcmp.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strcmp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcpy.o + .text.strcpy 0x0000000000000000 0x12 out/BSP_Common/libc/strcpy.o + .debug_info 0x0000000000000000 0xe1 out/BSP_Common/libc/strcpy.o + .debug_abbrev 0x0000000000000000 0x9f out/BSP_Common/libc/strcpy.o + .debug_loc 0x0000000000000000 0x3f out/BSP_Common/libc/strcpy.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcpy.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcpy.o + .debug_line 0x0000000000000000 0x120 out/BSP_Common/libc/strcpy.o + .debug_str 0x0000000000000000 0x2e89 out/BSP_Common/libc/strcpy.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcpy.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strcpy.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcspn.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcspn.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcspn.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcspn.o + .text.strcspn 0x0000000000000000 0xa out/BSP_Common/libc/strcspn.o + .debug_info 0x0000000000000000 0xe9 out/BSP_Common/libc/strcspn.o + .debug_abbrev 0x0000000000000000 0xb9 out/BSP_Common/libc/strcspn.o + .debug_loc 0x0000000000000000 0x42 out/BSP_Common/libc/strcspn.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcspn.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcspn.o + .debug_line 0x0000000000000000 0xb2 out/BSP_Common/libc/strcspn.o + .debug_str 0x0000000000000000 0x2eae out/BSP_Common/libc/strcspn.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcspn.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strcspn.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcat.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strlcat.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strlcat.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strlcat.o + .text.strlcat 0x0000000000000000 0x76 out/BSP_Common/libc/strlcat.o + .debug_info 0x0000000000000000 0x130 out/BSP_Common/libc/strlcat.o + .debug_abbrev 0x0000000000000000 0xd8 out/BSP_Common/libc/strlcat.o + .debug_loc 0x0000000000000000 0x1c1 out/BSP_Common/libc/strlcat.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strlcat.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strlcat.o + .debug_line 0x0000000000000000 0x1ed out/BSP_Common/libc/strlcat.o + .debug_str 0x0000000000000000 0x2ea4 out/BSP_Common/libc/strlcat.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strlcat.o + .debug_frame 0x0000000000000000 0x40 out/BSP_Common/libc/strlcat.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strlcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strlcpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strlcpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strlcpy.o + .text.strlcpy 0x0000000000000000 0x2c out/BSP_Common/libc/strlcpy.o + .debug_info 0x0000000000000000 0x10f out/BSP_Common/libc/strlcpy.o + .debug_abbrev 0x0000000000000000 0xbf out/BSP_Common/libc/strlcpy.o + .debug_loc 0x0000000000000000 0xcc out/BSP_Common/libc/strlcpy.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strlcpy.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strlcpy.o + .debug_line 0x0000000000000000 0x15d out/BSP_Common/libc/strlcpy.o + .debug_str 0x0000000000000000 0x2e9d out/BSP_Common/libc/strlcpy.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strlcpy.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strlcpy.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strlcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlen.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strlen.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strlen.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strlen.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strlen.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strlen.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strlen.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strncasecmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strncasecmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strncasecmp.o + .text.strncasecmp + 0x0000000000000000 0x58 out/BSP_Common/libc/strncasecmp.o + .debug_info 0x0000000000000000 0x159 out/BSP_Common/libc/strncasecmp.o + .debug_abbrev 0x0000000000000000 0xe4 out/BSP_Common/libc/strncasecmp.o + .debug_loc 0x0000000000000000 0xf7 out/BSP_Common/libc/strncasecmp.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strncasecmp.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x4e out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/strncasecmp.o + .debug_line 0x0000000000000000 0x175 out/BSP_Common/libc/strncasecmp.o + .debug_str 0x0000000000000000 0x3134 out/BSP_Common/libc/strncasecmp.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strncasecmp.o + .debug_frame 0x0000000000000000 0x40 out/BSP_Common/libc/strncasecmp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncat.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strncat.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strncat.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strncat.o + .text.strncat 0x0000000000000000 0x50 out/BSP_Common/libc/strncat.o + .debug_info 0x0000000000000000 0x11c out/BSP_Common/libc/strncat.o + .debug_abbrev 0x0000000000000000 0xb4 out/BSP_Common/libc/strncat.o + .debug_loc 0x0000000000000000 0x112 out/BSP_Common/libc/strncat.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strncat.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strncat.o + .debug_line 0x0000000000000000 0x13f out/BSP_Common/libc/strncat.o + .debug_str 0x0000000000000000 0x2eaa out/BSP_Common/libc/strncat.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strncat.o + .debug_frame 0x0000000000000000 0x48 out/BSP_Common/libc/strncat.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strncat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strncmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strncmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strncmp.o + .text.strncmp 0x0000000000000000 0x22 out/BSP_Common/libc/strncmp.o + .debug_info 0x0000000000000000 0x114 out/BSP_Common/libc/strncmp.o + .debug_abbrev 0x0000000000000000 0x8c out/BSP_Common/libc/strncmp.o + .debug_loc 0x0000000000000000 0xef out/BSP_Common/libc/strncmp.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strncmp.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strncmp.o + .debug_line 0x0000000000000000 0x137 out/BSP_Common/libc/strncmp.o + .debug_str 0x0000000000000000 0x2e92 out/BSP_Common/libc/strncmp.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strncmp.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strncmp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strncmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strncpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strncpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strncpy.o + .text.strncpy 0x0000000000000000 0x56 out/BSP_Common/libc/strncpy.o + .debug_info 0x0000000000000000 0x11b out/BSP_Common/libc/strncpy.o + .debug_abbrev 0x0000000000000000 0xb4 out/BSP_Common/libc/strncpy.o + .debug_loc 0x0000000000000000 0x15a out/BSP_Common/libc/strncpy.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strncpy.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strncpy.o + .debug_line 0x0000000000000000 0x18d out/BSP_Common/libc/strncpy.o + .debug_str 0x0000000000000000 0x2eaa out/BSP_Common/libc/strncpy.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strncpy.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Common/libc/strncpy.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strncpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strnlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strnlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strnlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strnlen.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strnlen.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strnlen.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strnlen.o + .text.strnlen 0x0000000000000000 0x2c out/BSP_Common/libc/strnlen.o + .debug_info 0x0000000000000000 0xcf out/BSP_Common/libc/strnlen.o + .debug_abbrev 0x0000000000000000 0x9d out/BSP_Common/libc/strnlen.o + .debug_loc 0x0000000000000000 0xf4 out/BSP_Common/libc/strnlen.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strnlen.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strnlen.o + .debug_line 0x0000000000000000 0x10b out/BSP_Common/libc/strnlen.o + .debug_str 0x0000000000000000 0x2e99 out/BSP_Common/libc/strnlen.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strnlen.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strnlen.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strnlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strntoimax.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strntoimax.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strntoimax.o + .text.strntoimax + 0x0000000000000000 0x8 out/BSP_Common/libc/strntoimax.o + .debug_info 0x0000000000000000 0x136 out/BSP_Common/libc/strntoimax.o + .debug_abbrev 0x0000000000000000 0xb9 out/BSP_Common/libc/strntoimax.o + .debug_loc 0x0000000000000000 0x84 out/BSP_Common/libc/strntoimax.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strntoimax.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x45 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strntoimax.o + .debug_line 0x0000000000000000 0xdb out/BSP_Common/libc/strntoimax.o + .debug_str 0x0000000000000000 0x3b43 out/BSP_Common/libc/strntoimax.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strntoimax.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strntoimax.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strntoumax.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strntoumax.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strntoumax.o + .text.strntoumax + 0x0000000000000000 0x19e out/BSP_Common/libc/strntoumax.o + .debug_info 0x0000000000000000 0x1c0 out/BSP_Common/libc/strntoumax.o + .debug_abbrev 0x0000000000000000 0x142 out/BSP_Common/libc/strntoumax.o + .debug_loc 0x0000000000000000 0x332 out/BSP_Common/libc/strntoumax.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strntoumax.o + .debug_ranges 0x0000000000000000 0x40 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x5d out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strntoumax.o + .debug_line 0x0000000000000000 0x55f out/BSP_Common/libc/strntoumax.o + .debug_str 0x0000000000000000 0x3de3 out/BSP_Common/libc/strntoumax.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strntoumax.o + .debug_frame 0x0000000000000000 0x44 out/BSP_Common/libc/strntoumax.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strpbrk.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strpbrk.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strpbrk.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strpbrk.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strpbrk.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strpbrk.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strpbrk.o + .text.strpbrk 0x0000000000000000 0x2a out/BSP_Common/libc/strpbrk.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/strpbrk.o + .debug_abbrev 0x0000000000000000 0xb8 out/BSP_Common/libc/strpbrk.o + .debug_loc 0x0000000000000000 0x60 out/BSP_Common/libc/strpbrk.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strpbrk.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strpbrk.o + .debug_line 0x0000000000000000 0x102 out/BSP_Common/libc/strpbrk.o + .debug_str 0x0000000000000000 0x2ea7 out/BSP_Common/libc/strpbrk.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strpbrk.o + .debug_frame 0x0000000000000000 0x30 out/BSP_Common/libc/strpbrk.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strpbrk.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strrchr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strrchr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strrchr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strrchr.o + .text.strrchr 0x0000000000000000 0x22 out/BSP_Common/libc/strrchr.o + .debug_info 0x0000000000000000 0xc8 out/BSP_Common/libc/strrchr.o + .debug_abbrev 0x0000000000000000 0x7d out/BSP_Common/libc/strrchr.o + .debug_loc 0x0000000000000000 0x8b out/BSP_Common/libc/strrchr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strrchr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strrchr.o + .debug_line 0x0000000000000000 0x11d out/BSP_Common/libc/strrchr.o + .debug_str 0x0000000000000000 0x2e91 out/BSP_Common/libc/strrchr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strrchr.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strrchr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strsep.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strsep.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strsep.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strsep.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strsep.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strsep.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strsep.o + .text.strsep 0x0000000000000000 0x32 out/BSP_Common/libc/strsep.o + .debug_info 0x0000000000000000 0x101 out/BSP_Common/libc/strsep.o + .debug_abbrev 0x0000000000000000 0xa7 out/BSP_Common/libc/strsep.o + .debug_loc 0x0000000000000000 0x89 out/BSP_Common/libc/strsep.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strsep.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strsep.o + .debug_line 0x0000000000000000 0x12e out/BSP_Common/libc/strsep.o + .debug_str 0x0000000000000000 0x2e9f out/BSP_Common/libc/strsep.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strsep.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Common/libc/strsep.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strsep.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strspn.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strspn.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strspn.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strspn.o + .text.strspn 0x0000000000000000 0xa out/BSP_Common/libc/strspn.o + .debug_info 0x0000000000000000 0xe9 out/BSP_Common/libc/strspn.o + .debug_abbrev 0x0000000000000000 0xb9 out/BSP_Common/libc/strspn.o + .debug_loc 0x0000000000000000 0x42 out/BSP_Common/libc/strspn.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strspn.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strspn.o + .debug_line 0x0000000000000000 0xb1 out/BSP_Common/libc/strspn.o + .debug_str 0x0000000000000000 0x2eac out/BSP_Common/libc/strspn.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strspn.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strspn.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strstr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strstr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strstr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strstr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strstr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strstr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strstr.o + .text.strstr 0x0000000000000000 0x3c out/BSP_Common/libc/strstr.o + .debug_info 0x0000000000000000 0x114 out/BSP_Common/libc/strstr.o + .debug_abbrev 0x0000000000000000 0xa6 out/BSP_Common/libc/strstr.o + .debug_loc 0x0000000000000000 0x6e out/BSP_Common/libc/strstr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strstr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strstr.o + .debug_line 0x0000000000000000 0xd2 out/BSP_Common/libc/strstr.o + .debug_str 0x0000000000000000 0x2ea7 out/BSP_Common/libc/strstr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strstr.o + .debug_frame 0x0000000000000000 0x38 out/BSP_Common/libc/strstr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strstr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoimax.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoimax.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoimax.o + .text.strtoimax + 0x0000000000000000 0xa out/BSP_Common/libc/strtoimax.o + .debug_info 0x0000000000000000 0x127 out/BSP_Common/libc/strtoimax.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/strtoimax.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoimax.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoimax.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoimax.o + .debug_line 0x0000000000000000 0x113 out/BSP_Common/libc/strtoimax.o + .debug_str 0x0000000000000000 0x3eed out/BSP_Common/libc/strtoimax.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoimax.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtoimax.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtok.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtok.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtok.o + .text.strtok 0x0000000000000000 0x10 out/BSP_Common/libc/strtok.o + .sbss.holder.1472 + 0x0000000000000000 0x4 out/BSP_Common/libc/strtok.o + .debug_info 0x0000000000000000 0xf9 out/BSP_Common/libc/strtok.o + .debug_abbrev 0x0000000000000000 0xbb out/BSP_Common/libc/strtok.o + .debug_loc 0x0000000000000000 0x42 out/BSP_Common/libc/strtok.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtok.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtok.o + .debug_line 0x0000000000000000 0xaa out/BSP_Common/libc/strtok.o + .debug_str 0x0000000000000000 0x2e9f out/BSP_Common/libc/strtok.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtok.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtok.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtok.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok_r.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok_r.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok_r.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok_r.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtok_r.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtok_r.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtok_r.o + .text.strtok_r + 0x0000000000000000 0x30 out/BSP_Common/libc/strtok_r.o + .debug_info 0x0000000000000000 0xf2 out/BSP_Common/libc/strtok_r.o + .debug_abbrev 0x0000000000000000 0xa7 out/BSP_Common/libc/strtok_r.o + .debug_loc 0x0000000000000000 0x76 out/BSP_Common/libc/strtok_r.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtok_r.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtok_r.o + .debug_line 0x0000000000000000 0x118 out/BSP_Common/libc/strtok_r.o + .debug_str 0x0000000000000000 0x2ea1 out/BSP_Common/libc/strtok_r.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtok_r.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Common/libc/strtok_r.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtok_r.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtol.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtol.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtol.o + .text.strtol 0x0000000000000000 0x14 out/BSP_Common/libc/strtol.o + .debug_info 0x0000000000000000 0x116 out/BSP_Common/libc/strtol.o + .debug_abbrev 0x0000000000000000 0xa5 out/BSP_Common/libc/strtol.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtol.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtol.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtol.o + .debug_line 0x0000000000000000 0x130 out/BSP_Common/libc/strtol.o + .debug_str 0x0000000000000000 0x3edf out/BSP_Common/libc/strtol.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtol.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/strtol.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoll.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoll.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoll.o + .text.strtoll 0x0000000000000000 0xa out/BSP_Common/libc/strtoll.o + .debug_info 0x0000000000000000 0x10f out/BSP_Common/libc/strtoll.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/strtoll.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoll.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoll.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoll.o + .debug_line 0x0000000000000000 0x111 out/BSP_Common/libc/strtoll.o + .debug_str 0x0000000000000000 0x3ede out/BSP_Common/libc/strtoll.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoll.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtoll.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoul.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoul.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoul.o + .text.strtoul 0x0000000000000000 0x14 out/BSP_Common/libc/strtoul.o + .debug_info 0x0000000000000000 0x10f out/BSP_Common/libc/strtoul.o + .debug_abbrev 0x0000000000000000 0xa5 out/BSP_Common/libc/strtoul.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoul.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoul.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoul.o + .debug_line 0x0000000000000000 0x131 out/BSP_Common/libc/strtoul.o + .debug_str 0x0000000000000000 0x3edb out/BSP_Common/libc/strtoul.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoul.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/strtoul.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoull.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoull.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoull.o + .text.strtoull + 0x0000000000000000 0xa out/BSP_Common/libc/strtoull.o + .debug_info 0x0000000000000000 0x10f out/BSP_Common/libc/strtoull.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/strtoull.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoull.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoull.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoull.o + .debug_line 0x0000000000000000 0x112 out/BSP_Common/libc/strtoull.o + .debug_str 0x0000000000000000 0x3ee3 out/BSP_Common/libc/strtoull.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoull.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtoull.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoumax.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoumax.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoumax.o + .text.strtoumax + 0x0000000000000000 0xa out/BSP_Common/libc/strtoumax.o + .debug_info 0x0000000000000000 0x127 out/BSP_Common/libc/strtoumax.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/strtoumax.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoumax.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoumax.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoumax.o + .debug_line 0x0000000000000000 0x113 out/BSP_Common/libc/strtoumax.o + .debug_str 0x0000000000000000 0x3ef0 out/BSP_Common/libc/strtoumax.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoumax.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtoumax.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strxspn.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strxspn.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strxspn.o + .text.__strxspn + 0x0000000000000000 0x80 out/BSP_Common/libc/strxspn.o + .debug_info 0x0000000000000000 0x125 out/BSP_Common/libc/strxspn.o + .debug_abbrev 0x0000000000000000 0xe8 out/BSP_Common/libc/strxspn.o + .debug_loc 0x0000000000000000 0xa6 out/BSP_Common/libc/strxspn.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strxspn.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x62 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x8e out/BSP_Common/libc/strxspn.o + .debug_line 0x0000000000000000 0x219 out/BSP_Common/libc/strxspn.o + .debug_str 0x0000000000000000 0x3d0c out/BSP_Common/libc/strxspn.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strxspn.o + .debug_frame 0x0000000000000000 0x3c out/BSP_Common/libc/strxspn.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/vsnprintf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/vsnprintf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x8e out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsprintf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/vsprintf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/vsprintf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/vsprintf.o + .text.vsprintf + 0x0000000000000000 0x14 out/BSP_Common/libc/vsprintf.o + .debug_info 0x0000000000000000 0xec out/BSP_Common/libc/vsprintf.o + .debug_abbrev 0x0000000000000000 0xc2 out/BSP_Common/libc/vsprintf.o + .debug_loc 0x0000000000000000 0x79 out/BSP_Common/libc/vsprintf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/vsprintf.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x3e out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/vsprintf.o + .debug_line 0x0000000000000000 0x10e out/BSP_Common/libc/vsprintf.o + .debug_str 0x0000000000000000 0x283b out/BSP_Common/libc/vsprintf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/vsprintf.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/vsprintf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/vsprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/vsscanf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/vsscanf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/vsscanf.o + .text.vsscanf 0x0000000000000000 0x67c out/BSP_Common/libc/vsscanf.o + .debug_info 0x0000000000000000 0x55b out/BSP_Common/libc/vsscanf.o + .debug_abbrev 0x0000000000000000 0x28b out/BSP_Common/libc/vsscanf.o + .debug_loc 0x0000000000000000 0xee6 out/BSP_Common/libc/vsscanf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/vsscanf.o + .debug_ranges 0x0000000000000000 0xb8 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0xbe out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x8e out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x64 out/BSP_Common/libc/vsscanf.o + .debug_line 0x0000000000000000 0x10d2 out/BSP_Common/libc/vsscanf.o + .debug_str 0x0000000000000000 0x4537 out/BSP_Common/libc/vsscanf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/vsscanf.o + .debug_frame 0x0000000000000000 0x60 out/BSP_Common/libc/vsscanf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .text 0x0000000000000000 0x0 out/BSP_Common/partition/partition.o + .data 0x0000000000000000 0x0 out/BSP_Common/partition/partition.o + .bss 0x0000000000000000 0x0 out/BSP_Common/partition/partition.o + .text.PtTable_Create + 0x0000000000000000 0x80 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .text 0x0000000000000000 0x0 out/BSP_Common/ring_buffer/ring_buffer.o + .data 0x0000000000000000 0x0 out/BSP_Common/ring_buffer/ring_buffer.o + .bss 0x0000000000000000 0x0 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write_Copy + 0x0000000000000000 0x28 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Read_Copy + 0x0000000000000000 0x26 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Reset + 0x0000000000000000 0x2e out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Read_Callback + 0x0000000000000000 0xb0 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Read + 0x0000000000000000 0x22 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Read_Byte + 0x0000000000000000 0x70 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Peek + 0x0000000000000000 0xa0 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Peek_Byte + 0x0000000000000000 0x42 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write + 0x0000000000000000 0x22 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write_Byte + 0x0000000000000000 0x6c out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write_Force + 0x0000000000000000 0xe2 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Get_Status + 0x0000000000000000 0x40 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write_Byte_Force + 0x0000000000000000 0x7c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .text 0x0000000000000000 0x0 out/BSP_Common/soft_crc/softcrc.o + .data 0x0000000000000000 0x0 out/BSP_Common/soft_crc/softcrc.o + .bss 0x0000000000000000 0x0 out/BSP_Common/soft_crc/softcrc.o + .text.BFLB_Soft_CRC16 + 0x0000000000000000 0x4c out/BSP_Common/soft_crc/softcrc.o + .text.BFLB_Soft_CRC32_Table + 0x0000000000000000 0x36 out/BSP_Common/soft_crc/softcrc.o + .rodata.chCRCHTalbe + 0x0000000000000000 0x100 out/BSP_Common/soft_crc/softcrc.o + .rodata.chCRCLTalbe + 0x0000000000000000 0x100 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_crc32.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_crc32.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_lzma2.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_lzma2.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x25 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x2e out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_stream.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_stream.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x25 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x2e out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_decompress.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_decompress.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_decompress.o + .text.xz_uncompress_init + 0x0000000000000000 0x60 out/BSP_Common/xz/xz_decompress.o + .text.xz_uncompress_stream + 0x0000000000000000 0x64 out/BSP_Common/xz/xz_decompress.o + .text.xz_uncompress_end + 0x0000000000000000 0x10 out/BSP_Common/xz/xz_decompress.o + .sbss.s 0x0000000000000000 0x4 out/BSP_Common/xz/xz_decompress.o + .debug_info 0x0000000000000000 0x2e2 out/BSP_Common/xz/xz_decompress.o + .debug_abbrev 0x0000000000000000 0x167 out/BSP_Common/xz/xz_decompress.o + .debug_loc 0x0000000000000000 0x1dd out/BSP_Common/xz/xz_decompress.o + .debug_aranges + 0x0000000000000000 0x30 out/BSP_Common/xz/xz_decompress.o + .debug_ranges 0x0000000000000000 0x20 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x5d out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x1f out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_decompress.o + .debug_line 0x0000000000000000 0x2d9 out/BSP_Common/xz/xz_decompress.o + .debug_str 0x0000000000000000 0x3286 out/BSP_Common/xz/xz_decompress.o + .comment 0x0000000000000000 0x33 out/BSP_Common/xz/xz_decompress.o + .debug_frame 0x0000000000000000 0x88 out/BSP_Common/xz/xz_decompress.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_port.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_port.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .text.rf_pri_init_calib_mem + 0x0000000000000000 0x12e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .bss.data 0x0000000000000000 0xa8 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .sdata.rf_calib_data + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_info 0x0000000000000000 0x5bc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_abbrev 0x0000000000000000 0x14a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_loc 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_macro 0x0000000000000000 0x4a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_line 0x0000000000000000 0x3bb out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_str 0x0000000000000000 0x3368 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_set_gain_table_regs + 0x0000000000000000 0x1d4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_manu_pu + 0x0000000000000000 0x8c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_save_state_for_cal + 0x0000000000000000 0x13c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_restore_state_for_cal + 0x0000000000000000 0x13c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_pm_pwr + 0x0000000000000000 0x5e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_pm_pwr_avg + 0x0000000000000000 0x68 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_txcal_config_hw + 0x0000000000000000 0x276 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_fcal_meas + 0x0000000000000000 0x5a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_rccal_config.part.0 + 0x0000000000000000 0x28 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_rccal_config + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_rccal_iq + 0x0000000000000000 0x2ae out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_txcal_config + 0x0000000000000000 0x84 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_txcal_search_core + 0x0000000000000000 0x126 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_tcal_glb.part.4 + 0x0000000000000000 0x8a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_rccal.part.6 + 0x0000000000000000 0x290 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_config_channel.constprop.7 + 0x0000000000000000 0x150 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_singen_pwrmx_dc.constprop.8 + 0x0000000000000000 0x104 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_roscal_iq.isra.3 + 0x0000000000000000 0xf6 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_roscal.part.5 + 0x0000000000000000 0x25c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_tx_power_offset + 0x0000000000000000 0xa6 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_tx_power_offset_res + 0x0000000000000000 0x82 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_tcal_glb + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_init_fast + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_notch_param + 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_param + 0x0000000000000000 0x470 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_xtalfreq + 0x0000000000000000 0x1e4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_get_vco_freq_cw + 0x0000000000000000 0x56 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_get_vco_idac_cw + 0x0000000000000000 0x56 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_txgain_tempos + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_get_txgain_max + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_get_txgain_min + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_get_txgain_index + 0x0000000000000000 0x3a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_query_txgain_table + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_dvga_os + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_tcal_param + 0x0000000000000000 0x5c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_tx_gain_comp + 0x0000000000000000 0x244 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_config_bandwidth + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_txcal + 0x0000000000000000 0x508 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_roscal + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_rccal + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_lo_acal + 0x0000000000000000 0x1a4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_fcal + 0x0000000000000000 0x2ec out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_full_cal + 0x0000000000000000 0xee out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_restore_cal_reg + 0x0000000000000000 0x174 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_init + 0x0000000000000000 0x18a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_power_offset + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .bss.data 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .bss.tcal_param_data + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .bss.tx_pwr_ch_os + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .data.temps 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .data.temps_dvga + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .data.tx_pwr_table + 0x0000000000000000 0xe0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .data.tx_pwr_table_origin + 0x0000000000000000 0xe0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.channel_cnt_range_list + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.channel_cnt_table_list + 0x0000000000000000 0xd2 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.channel_div_table_list + 0x0000000000000000 0x1a4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_config_channel.constprop.7.str1.4 + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_fcal.str1.4 + 0x0000000000000000 0x37 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_get_vco_freq_cw.cst8 + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_lo_acal.str1.4 + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_rccal.part.6.str1.4 + 0x0000000000000000 0x9a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_rccal_iq.cst8 + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_roscal.part.5.str1.4 + 0x0000000000000000 0x9f out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_singen_pwrmx_dc.constprop.8.str1.4 + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_txcal.str1.4 + 0x0000000000000000 0xb9 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_update_param.str1.4 + 0x0000000000000000 0x59 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rx_notch_para_list + 0x0000000000000000 0x230 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.txcal_para + 0x0000000000000000 0x80 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.Tthr 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.channel_cnt_range + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.channel_cnt_table + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.channel_div_table + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.dvga_os_pre + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.index_os_pre + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.index_os_pre_mdb + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.init_fast + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.rx_notch_para + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_adda1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_dfe_ctrl_0 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_dfe_ctrl_3 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_dfe_ctrl_6 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_dfe_ctrl_7 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_fbdv + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_hbn_glb + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_pa1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_pucr1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_rbb3 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_rf_fsm_ctrl_hw + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_rf_resv_reg_1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_rfcal_ctrlen + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_rfctrl_hw_en + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_rfif_dfe_ctrl0 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_sdm1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_sdm2 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_singen_ctrl0 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_singen_ctrl2 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_singen_ctrl3 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_sram_ctrl0 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_sram_ctrl1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_sram_ctrl2 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_tbb + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_ten_ac + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_trx_gain1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_vco2 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.tcal_param_from + 0x0000000000000000 0x1 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.tx_pwr_os + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.tx_pwr_os_temperature + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.up_dn 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sdata.fcal_div + 0x0000000000000000 0x2 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sdata.tcal_param + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sdata.tp_index + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_info 0x0000000000000000 0x3134 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_abbrev 0x0000000000000000 0x4e5 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_loc 0x0000000000000000 0x3a9d out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_aranges + 0x0000000000000000 0x188 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_ranges 0x0000000000000000 0x7b0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x16d out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x6ff8 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_line 0x0000000000000000 0x7e3e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_str 0x0000000000000000 0x7a9d4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_frame 0x0000000000000000 0x5bc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .text.AON_ACOMP_Init + 0x0000000000000000 0xe4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .text.AON_ACOMP_Enable + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .text.AON_ACOMP_Get_Result + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_info 0x0000000000000000 0x2e1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_abbrev 0x0000000000000000 0x11b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_loc 0x0000000000000000 0x15c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_aranges + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_ranges 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0xc9 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x1a6e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x27 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_line 0x0000000000000000 0x60d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_str 0x0000000000000000 0x16e4e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_frame 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Reset + 0x0000000000000000 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Channel_Config + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Scan_Channel_Config + 0x0000000000000000 0x13e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Start + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Stop + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_FIFO_Cfg + 0x0000000000000000 0x2a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Get_FIFO_Count + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_FIFO_Is_Full + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_FIFO_Is_Empty + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Read_FIFO + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Parse_Result + 0x0000000000000000 0x22e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_IntMask + 0x0000000000000000 0xde out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_IntClr + 0x0000000000000000 0x102 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_GetIntStatus + 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Int_Callback_Install + 0x0000000000000000 0x2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Vbat_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Vbat_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Tsen_Init + 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.TSEN_Get_V_Error + 0x0000000000000000 0x102 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .sclock_rlt_code + 0x0000000000000000 0x1da out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_SET_TSVBE_LOW + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_SET_TSVBE_HIGH + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.TSEN_Get_Temp + 0x0000000000000000 0x158 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Mic_Init + 0x0000000000000000 0xa4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_MIC_Bias_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_MIC_Bias_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Init + 0x0000000000000000 0x106 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .data.adcGainCoeffCal + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .rodata.ADC_Parse_Result.cst4 + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .rodata.TSEN_Get_Temp.cst4 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .srodata.cst4 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_info 0x0000000000000000 0x14aa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_abbrev 0x0000000000000000 0x32e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_loc 0x0000000000000000 0x1467 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_aranges + 0x0000000000000000 0x108 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_ranges 0x0000000000000000 0x250 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x102 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x1a6e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x3fc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x82 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_line 0x0000000000000000 0x2f6f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_str 0x0000000000000000 0x21e9b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_frame 0x0000000000000000 0x290 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .tcm_code 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_info 0x0000000000000000 0xf4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_abbrev 0x0000000000000000 0xa9 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_loc 0x0000000000000000 0x4b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0xfd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x1a6e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_line 0x0000000000000000 0x370 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_str 0x0000000000000000 0x4dae9 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .text.FreeRTOS_Interrupt_Handler + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_DAC_Init + 0x0000000000000000 0x56 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_DAC_Set_ChanA_Config + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_DAC_Set_ChanB_Config + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_Set_DAC_ChanB_SRC_SEL + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_Set_DAC_ChanA_SRC_SEL + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_Set_DAC_Mod_SEL + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_DAC_ChanB_Enable + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_DAC_ChanB_Disable + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_DAC_ChanA_Enable + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_DAC_ChanA_Disable + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_Set_DAC_DMA_TX_FORMAT_SEL + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_Set_DAC_DMA_TX_Enable + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_Set_DAC_DMA_TX_Disable + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_DAC_DMA_WriteData + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_GPIP_DAC_Init + 0x0000000000000000 0x94 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_GPIP_DAC_Set_ChanA_Config + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_GPIP_DAC_Set_ChanB_Config + 0x0000000000000000 0x44 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_DAC_Set_ChanA_Value + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_DAC_Set_ChanB_Value + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_info 0x0000000000000000 0x7b0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_abbrev 0x0000000000000000 0x194 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_loc 0x0000000000000000 0x416 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_aranges + 0x0000000000000000 0xb0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_ranges 0x0000000000000000 0xa0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0xe1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x1a6e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x3fc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x35 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_line 0x0000000000000000 0xdb0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_str 0x0000000000000000 0x3a938 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_frame 0x0000000000000000 0x140 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Enable + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Disable + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_Init + 0x0000000000000000 0xc4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_Update_SrcMemcfg + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_Update_DstMemcfg + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_TranferSize + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_Is_Busy + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_Init + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_Update + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpStruct_Init + 0x0000000000000000 0x11c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpStruct_Start + 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpStruct_Stop + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpStruct_Set_Transfer_Len + 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpBuf_Start_New_Transmit + 0x0000000000000000 0x6c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpBuf_Remove_Completed_List + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpBuf_Append + 0x0000000000000000 0x9a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpBuf_Destroy + 0x0000000000000000 0x46 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_IntMask + 0x0000000000000000 0x90 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Int_Callback_Install + 0x0000000000000000 0x2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .bss.PingPongListArra + 0x0000000000000000 0x80 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_info 0x0000000000000000 0x1119 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_abbrev 0x0000000000000000 0x382 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_loc 0x0000000000000000 0xd58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_aranges + 0x0000000000000000 0xc0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_ranges 0x0000000000000000 0x170 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0xd5 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x11c7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_line 0x0000000000000000 0x1718 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_str 0x0000000000000000 0xc045 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_frame 0x0000000000000000 0x1dc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_Dbg_Pwd + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_Dbg_Pwd + 0x0000000000000000 0x2a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Readlock_Dbg_Pwd + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Writelock_Dbg_Pwd + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_Secure_Cfg + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_Secure_Cfg + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_Secure_Boot + 0x0000000000000000 0x5e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Get_Trim_Enable + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_Ana_Trim + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_Ana_Trim + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .sclock_rlt_code + 0x0000000000000000 0xb6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_Sw_Usage + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Writelock_Sw_Usage + 0x0000000000000000 0x44 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_MAC_Address + 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_MAC_Address_Raw + 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Writelock_MAC_Address + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Is_All_Bits_Zero + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Is_MAC_Address_Slot_Empty + 0x0000000000000000 0x8a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_MAC_Address_Opt + 0x0000000000000000 0x122 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_MAC_Address_Opt + 0x0000000000000000 0x136 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_Device_Info + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Is_CapCode_Slot_Empty + 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_CapCode_Opt + 0x0000000000000000 0xea out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_CapCode_Opt + 0x0000000000000000 0x94 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Is_PowerOffset_Slot_Empty + 0x0000000000000000 0x86 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_PowerOffset_Opt + 0x0000000000000000 0xde out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_PowerOffset_Opt + 0x0000000000000000 0xce out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_AES_Key + 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Writelock_AES_Key + 0x0000000000000000 0x64 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Readlock_AES_Key + 0x0000000000000000 0x4c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Program_Direct_R0 + 0x0000000000000000 0x48 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_Direct_R0 + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_R0 + 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_R0 + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Crc_Enable + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Crc_Is_Busy + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Crc_Set_Golden + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Crc_Result + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_BLE_CLK + 0x0000000000000000 0x2a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_WiFi_Core_CLK + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_WiFi_Encrypt_CLK + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_DMA_CLK + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_IR_CLK + 0x0000000000000000 0x3a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_I2C_CLK + 0x0000000000000000 0x3a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_SPI_CLK + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_AHB_Slave1_Clock_Gate + 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_Init + 0x0000000000000000 0x2a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_Addr_Monitor_Enable + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_Addr_Monitor_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_BusErrResponse_Enable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_BusErrResponse_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_Get_Status + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_Get_Err_Addr + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.BMX_ERR_INT_Callback_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.BMX_TIMEOUT_INT_Callback_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_SRAM_RET + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Get_SRAM_RET + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_SRAM_SLP + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Get_SRAM_SLP + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_SRAM_PARM + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Get_SRAM_PARM + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_UART_Sig_Swap_Set + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_JTAG_Sig_Swap_Set + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Swap_SPI_0_MOSI_With_MISO + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_SPI_0_ACT_MOD_Sel + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_ADC_CLK + 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_DAC_CLK + 0x0000000000000000 0x4e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Platform_Wakeup_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Platform_Wakeup_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_DIG_CLK_Sel + 0x0000000000000000 0x50 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_DIG_512K_CLK + 0x0000000000000000 0x5a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_DIG_32K_CLK + 0x0000000000000000 0x4c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_BT_Coex_Signal + 0x0000000000000000 0x44 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_IR_RX_GPIO_Sel + 0x0000000000000000 0x3e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_IR_LED_Driver_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_IR_LED_Driver_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_IR_LED_Driver_Ibias + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_Func_Init + 0x0000000000000000 0x5c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_Get_Real_Fun + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_Read + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_IntMask + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_IntClear + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Get_GPIO_IntStatus + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Clr_GPIO_IntStatus + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_GPIO_IntMod + 0x0000000000000000 0x8c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Get_GPIO_IntCtlMod + 0x0000000000000000 0x62 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_INT0_IRQHandler_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_INT0_Callback_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .tcm_code 0x0000000000000000 0x2e0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_App_Reset + 0x0000000000000000 0xb4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_PIR_Enable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_PIR_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_PIR_INT_Config + 0x0000000000000000 0x2c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_PIR_LPF_Sel + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_PIR_HPF_Sel + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_PIR_Threshold + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_PIR_Threshold + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_PIR_Interval + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_PIR_Interval + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_BOR_OUT_State + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_BOR_Config + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_XCLK_CLK_Sel + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_HRAM_slp + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_HRAM_Ret + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .sclock_rlt_code + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_Status_Flag + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_Wakeup_Addr + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_Wakeup_Addr + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Clear_RTC_Counter + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Enable_RTC_Counter + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_RTC_Timer + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_RTC_Timer_Val + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Clear_RTC_INT + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_GPIO_INT_Enable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_GPIO_INT_Disable + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_INT_State + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_Pin_Wakeup_Mode + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Clear_IRQ + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Aon_Pad_IeSmt_Cfg + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Enable_AComp0_IRQ + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Disable_AComp0_IRQ + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Enable_AComp1_IRQ + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Disable_AComp1_IRQ + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Enable_BOR_IRQ + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Disable_BOR_IRQ + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Out0_IRQHandler_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Out0_Callback_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Out1_IRQHandler_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Out1_Callback_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_SendWord + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_RecieveWord + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_Enable + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_Disable + 0x0000000000000000 0x2a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_Reset + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_Init + 0x0000000000000000 0x5c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_SetPrd + 0x0000000000000000 0x84 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_ClockSet + 0x0000000000000000 0x110 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_SetSclSync + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_IsBusy + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_MasterSendBlocking + 0x0000000000000000 0x186 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_MasterReceiveBlocking + 0x0000000000000000 0x1b6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_IntMask + 0x0000000000000000 0x10c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .bss.i2cIntCbfArra + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_info 0x0000000000000000 0xc02 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_abbrev 0x0000000000000000 0x320 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_loc 0x0000000000000000 0xbf0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_aranges + 0x0000000000000000 0x80 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_ranges 0x0000000000000000 0x200 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x193 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x877 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_line 0x0000000000000000 0x1ab0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_str 0x0000000000000000 0x6a8e9 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_frame 0x0000000000000000 0x158 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_Disable.part.1 + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_TxInit + 0x0000000000000000 0xd2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_TxPulseWidthConfig + 0x0000000000000000 0xca out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_TxSWMPulseWidthConfig + 0x0000000000000000 0x3a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_RxInit + 0x0000000000000000 0x84 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_DeInit + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_Enable + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_Disable + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_TxSWM + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_RxFIFOClear + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_SendData + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_SWMSendData + 0x0000000000000000 0x104 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_SendCommand + 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_SWMSendCommand + 0x0000000000000000 0x78 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_SendNEC + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_IntMask + 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_ClrIntStatus + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_Int_Callback_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_GetIntStatus + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_GetRxFIFOStatus + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_ReceiveData + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_SWMReceiveData + 0x0000000000000000 0x44 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_ReceiveNEC + 0x0000000000000000 0x3e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_GetRxDataBitCount + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_GetRxFIFOCount + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_LearnToInit + 0x0000000000000000 0x202 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_LearnToReceive + 0x0000000000000000 0x102 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_LearnToSend + 0x0000000000000000 0x50 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_LEDInit + 0x0000000000000000 0x9a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_LEDSend + 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .rodata 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_info 0x0000000000000000 0x19a4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_abbrev 0x0000000000000000 0x2a8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_loc 0x0000000000000000 0x1830 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_aranges + 0x0000000000000000 0x108 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_ranges 0x0000000000000000 0x410 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x1cf out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x7f4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_line 0x0000000000000000 0x28c9 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_str 0x0000000000000000 0x6aa41 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_frame 0x0000000000000000 0x2a4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_Init + 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_Addr_Monitor_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_Addr_Monitor_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_BusErrResponse_Enable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_BusErrResponse_Disable + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_Get_Status + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_Get_Err_Addr + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_ERR_INT_Callback_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_TIMEOUT_INT_Callback_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_info 0x0000000000000000 0x3e0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_abbrev 0x0000000000000000 0x172 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_loc 0x0000000000000000 0x1a6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_aranges + 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_ranges 0x0000000000000000 0x50 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0xcd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x365 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_line 0x0000000000000000 0x5cf out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_str 0x0000000000000000 0xaec3 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_frame 0x0000000000000000 0xa0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_get_rf_cal_slots + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_set_rf_cal_slots + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_is_xtal_capcode_slot_empty + 0x0000000000000000 0xd6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_xtal_capcode_pre + 0x0000000000000000 0xfc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_xtal_capcode + 0x0000000000000000 0x72 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_read_xtal_capcode + 0x0000000000000000 0xfa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_is_poweroffset_slot_empty + 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_poweroffset_pre + 0x0000000000000000 0x12e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_poweroffset + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_read_poweroffset + 0x0000000000000000 0x220 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_is_macaddr_slot_empty + 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_macaddr_pre + 0x0000000000000000 0x116 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_macaddr + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_read_macaddr + 0x0000000000000000 0x118 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_pre + 0x0000000000000000 0x84 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_read + 0x0000000000000000 0x98 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_program + 0x0000000000000000 0x76 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .rodata.mfg_efuse_is_xtal_capcode_slot_empty.str1.4 + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .rodata.mfg_efuse_read_xtal_capcode.str1.4 + 0x0000000000000000 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .rodata.mfg_efuse_write_xtal_capcode_pre.str1.4 + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .sdata.rf_cal_slots + 0x0000000000000000 0x1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_info 0x0000000000000000 0x14d6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_abbrev 0x0000000000000000 0x276 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_loc 0x0000000000000000 0xc90 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_aranges + 0x0000000000000000 0x90 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_ranges 0x0000000000000000 0x80 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x189 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_line 0x0000000000000000 0x16d8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_str 0x0000000000000000 0x665e0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_frame 0x0000000000000000 0x314 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_IntMask + 0x0000000000000000 0x2c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_Get_IntStatus + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_IntClear + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_Get_PdsPllStstus + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_Get_PdsRfStstus + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_Get_PdsStstus + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_WAKEUP_IRQHandler_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_Int_Callback_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_info 0x0000000000000000 0x388 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_abbrev 0x0000000000000000 0x161 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_loc 0x0000000000000000 0xcd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_aranges + 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_ranges 0x0000000000000000 0x48 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x13c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x11f2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x90 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_line 0x0000000000000000 0x5b0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_str 0x0000000000000000 0x61b9f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_frame 0x0000000000000000 0x90 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Init + 0x0000000000000000 0xc0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Update + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Set_Div + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Set_Threshold1 + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Set_Threshold2 + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Set_Period + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Get + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Disable + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_SW_Mode + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_SW_Force_Value + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Fource_Output + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_IntMask + 0x0000000000000000 0x2c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Int_Callback_Install + 0x0000000000000000 0x2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Smart_Configure + 0x0000000000000000 0x14c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_info 0x0000000000000000 0x8a5 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_abbrev 0x0000000000000000 0x2a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_loc 0x0000000000000000 0x94f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_aranges + 0x0000000000000000 0x90 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_ranges 0x0000000000000000 0xb0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0xdb out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0xbb4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x2d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_line 0x0000000000000000 0xd8f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_str 0x0000000000000000 0xa59c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_frame 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x1a6e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .text.sdio_GEN_CARD2HOST_INT + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .text.sdio_ioctl + 0x0000000000000000 0x2c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .sbss.flag_mport + 0x0000000000000000 0x1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .sdata.SdioFuncReg + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_info 0x0000000000000000 0x41c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_abbrev 0x0000000000000000 0x14d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_loc 0x0000000000000000 0x79 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_ranges 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0xb6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x189 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_line 0x0000000000000000 0x36a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_str 0x0000000000000000 0x9af6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_frame 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .text.Sec_Dbg_Read_Chip_ID + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .text.Sec_Dbg_Read_WiFi_MAC + 0x0000000000000000 0x32 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .text.Sec_Dbg_Read_Dbg_Mode + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .text.Sec_Dbg_Read_Dbg_Enable + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_info 0x0000000000000000 0x140 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_abbrev 0x0000000000000000 0xee out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_loc 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_aranges + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_ranges 0x0000000000000000 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0xc3 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x1de out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_line 0x0000000000000000 0x433 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_str 0x0000000000000000 0xa21e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_frame 0x0000000000000000 0x50 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA256_Link_Update.part.1 + 0x0000000000000000 0x15e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA_Enable_Link + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA_Disable_Link + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA256_Link_Init + 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA256_Link_Update + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA256_Link_Finish + 0x0000000000000000 0x19c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Init + 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Enable_BE + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Enable_LE + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Enable_Link + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Disable_Link + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Link_Work + 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Set_Hw_Key_Src + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Set_Key_IV + 0x0000000000000000 0x426 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Set_Key_IV_BE + 0x0000000000000000 0x252 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Set_Counter_Byte + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Crypt + 0x0000000000000000 0xac out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Finish + 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_Trng_Int_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_Trng_Int_Disable + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_Trng_Read + 0x0000000000000000 0x18e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_Trng_Int_Read_Trigger + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_Trng_Int_Read + 0x0000000000000000 0x150 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LittleEndian_Enable + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_Clear_Int + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_Read_Block + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_Write_Block + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_Write_Immediate + 0x0000000000000000 0x62 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_NREG + 0x0000000000000000 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_RESIZE + 0x0000000000000000 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_MADD + 0x0000000000000000 0x9e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_MSQR + 0x0000000000000000 0x80 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_MEXP + 0x0000000000000000 0x9e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LADD + 0x0000000000000000 0x7e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LSUB + 0x0000000000000000 0x7e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LSQR + 0x0000000000000000 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LDIV + 0x0000000000000000 0x80 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LMUL2N + 0x0000000000000000 0x68 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LDIV2N + 0x0000000000000000 0x68 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LMOD2N + 0x0000000000000000 0x6e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_GMAC_Enable_LE + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_GMAC_Enable_BE + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_GMAC_Enable_Link + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_GMAC_Disable_Link + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_GMAC_Link_Work + 0x0000000000000000 0x90 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.SEC_Eng_IntMask + 0x0000000000000000 0x14e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.SEC_Eng_ClrIntStatus + 0x0000000000000000 0x78 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.SEC_Eng_Int_Callback_Install + 0x0000000000000000 0x2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.SEC_Eng_GetIntStatus + 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x4cb out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x365 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Init + 0x0000000000000000 0x62 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_DeInit + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_ClockConfig + 0x0000000000000000 0x64 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SetClock + 0x0000000000000000 0xb6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_FifoConfig + 0x0000000000000000 0x4e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Enable + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Disable + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SetTimeOutValue + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SetDeglitchCount + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_RxIgnoreEnable + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_RxIgnoreDisable + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_ClrTxFifo + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_ClrRxFifo + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_ClrIntStatus + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_IntMask + 0x0000000000000000 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Int_Callback_Install + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SendData + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Send_8bits + 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Send_16bits + 0x0000000000000000 0xc0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Send_24bits + 0x0000000000000000 0xbe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Send_32bits + 0x0000000000000000 0xbc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Recv_8bits + 0x0000000000000000 0xc0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Recv_16bits + 0x0000000000000000 0xce out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Recv_24bits + 0x0000000000000000 0xe2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Recv_32bits + 0x0000000000000000 0xcc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SendRecv_8bits + 0x0000000000000000 0xda out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SendRecv_16bits + 0x0000000000000000 0xde out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SendRecv_24bits + 0x0000000000000000 0xf2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SendRecv_32bits + 0x0000000000000000 0xdc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_ReceiveData + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_GetTxFifoCount + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_GetRxFifoCount + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_GetIntStatus + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_GetBusyStatus + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_GetFifoStatus + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_info 0x0000000000000000 0x1966 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_abbrev 0x0000000000000000 0x27a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_loc 0x0000000000000000 0x2385 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_aranges + 0x0000000000000000 0x130 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_ranges 0x0000000000000000 0x360 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x193 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x782 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_line 0x0000000000000000 0x3461 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_str 0x0000000000000000 0x6a799 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_frame 0x0000000000000000 0x25c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_GetCompValue + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_SetCompValue + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_GetCounterValue + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_GetMatchStatus + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_GetPreloadValue + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_SetPreloadValue + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_SetPreloadTrigSrc + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_SetCountMode + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_ClearIntStatus + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_Init + 0x0000000000000000 0xce out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_Enable + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_Disable + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_IntMask + 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_Set_Clock + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_GetMatchValue + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_SetCompValue + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_GetCounterValue + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_ResetCounterValue + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_GetResetStatus + 0x0000000000000000 0x32 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_ClearResetStatus + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_Enable + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_Disable + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_IntMask + 0x0000000000000000 0x48 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.Timer_Int_Callback_Install + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_Int_Callback_Install + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .bss.timerIntCbfArra + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_info 0x0000000000000000 0xa8e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_abbrev 0x0000000000000000 0x2bb out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_loc 0x0000000000000000 0x6e3 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_aranges + 0x0000000000000000 0xe0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_ranges 0x0000000000000000 0x168 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0xcf out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x8cd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_line 0x0000000000000000 0xe6d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_str 0x0000000000000000 0xb9e3 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_frame 0x0000000000000000 0x1a0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .text.TZC_Sboot_Set + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .text.TZC_Set_Rom0_R0_Protect + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .text.TZC_Set_Rom0_R1_Protect + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .text.TZC_Set_Rom1_R0_Protect + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .text.TZC_Set_Rom1_R1_Protect + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_info 0x0000000000000000 0x1dc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_abbrev 0x0000000000000000 0xb8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_loc 0x0000000000000000 0x243 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_aranges + 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_ranges 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0xc3 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x33c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_line 0x0000000000000000 0x5e1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_str 0x0000000000000000 0xb07f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_frame 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_DeInit + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_IrConfig + 0x0000000000000000 0x76 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_SetTxDataLength + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_SetRxDataLength + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_SetDeglitchCount + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_SetBaudrate + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_SetRtsValue + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_ClrRtsValue + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_TxFifoClear + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_RxFifoClear + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_IntClear + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_SendDataBlock + 0x0000000000000000 0x5c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_GetAutoBaudCount + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_GetTxFifoCount + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_GetIntStatus + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_GetRxBusBusyStatus + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_GetOverflowStatus + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_GetBaudrate + 0x0000000000000000 0x9a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .rodata.CSWTCH.16 + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_usart_dbg_send + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_dump + 0x0000000000000000 0x84 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_prints + 0x0000000000000000 0x2a out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_printx + 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_printc + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_get_time_us + 0x0000000000000000 0xd0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_start_time + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_stop_time + 0x0000000000000000 0x2 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_set_alarm_time_callback + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_set_alarm_time + 0x0000000000000000 0x74 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_get_random + 0x0000000000000000 0x74 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_get_input + 0x0000000000000000 0x3e out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_get_length + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .rodata.bflb_platform_dump.str1.4 + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .rodata.hexTable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .sbss.systick_int_cnt + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xa68 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .text.bflb_platform_init_uart_debug_gpio + 0x0000000000000000 0x4c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .text.bflb_platform_deinit_uart_debug_gpio + 0x0000000000000000 0x5c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_info 0x0000000000000000 0x348 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_abbrev 0x0000000000000000 0xef out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_ranges 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x19d out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xa68 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_line 0x0000000000000000 0x56c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_str 0x0000000000000000 0x6bc0a out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_frame 0x0000000000000000 0x48 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .text 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .data 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .bss 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .rodata.bflb_bootrom_parse_bootheader.str1.4 + 0x0000000000000000 0x5 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x1f6 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x34 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x40 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x20a out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x88 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x52 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x163c out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xa68 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x22 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x47b7 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x11f8 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x7c0 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x36b out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x4f out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xaec out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x1a74 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xd67 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x2071 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x19 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xba out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x70 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x96 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x100 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x2c9b out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x40 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x25 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x10 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x46 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x4c out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .text 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .data 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .bss 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_deinit_ext_flash_gpio + 0x0000000000000000 0xce out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .text.bootrom_read_boot_mode + 0x0000000000000000 0x54 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_deinit_uart_gpio_do + 0x0000000000000000 0x50 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_deinit_uart_gpio + 0x0000000000000000 0x8 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_init_flash_gpio + 0x0000000000000000 0xfe out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x79c out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x34 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x1f6 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x40 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x20a out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x88 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x52 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x163c out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xa68 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x22 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x47b7 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x11f8 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x7c0 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x36b out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x4f out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xaec out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x1a74 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xd67 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x2071 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x19 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xba out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x70 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x96 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x100 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x2c9b out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x40 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x64 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .text 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .data 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .bss 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .text.bflb_eflash_loader_usart_if_send + 0x0000000000000000 0xe out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .text.bflb_eflash_loader_uart_recv + 0x0000000000000000 0xe out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .text.bflb_eflash_loader_usart_wait_tx_idle + 0x0000000000000000 0x14 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .text.bflb_eflash_loader_uart_change_rate + 0x0000000000000000 0x7e out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .text.bflb_eflash_loader_uart_deinit + 0x0000000000000000 0x4 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .sdata.xtalType + 0x0000000000000000 0x1 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .sdata.xtal_clk + 0x0000000000000000 0x4 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x79c out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x1f6 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x64 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x34 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x40 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x20a out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x88 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x52 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x163c out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xa68 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x22 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x47b7 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x11f8 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x7c0 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x36b out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x4f out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xaec out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x1a74 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xd67 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x2071 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x19 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xba out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x70 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x96 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x100 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x40 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .text 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_boot2.o + .data 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_boot2.o + .bss 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_boot2.o + .text.bfl_main + 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x79c out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x34 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x1f6 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x40 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x20a out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x88 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x52 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x163c out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x47b1 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x11f8 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x7c0 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x36b out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x22 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x4f out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0xaec out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x1a74 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0xd67 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x2071 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x19 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0xba out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x70 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x96 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x100 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x2c9b out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x10 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/blsp_boot2.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .text 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .data 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .bss 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x79c out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x1f6 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x20a out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x88 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x52 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x163c out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x47b1 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x11f8 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x7c0 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x36b out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x34 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x40 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x22 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x4f out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0xaec out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x1a74 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0xd67 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x2071 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x19 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0xba out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x70 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x96 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x100 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x8d3 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x2c9b out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x342 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x10 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x28 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x34 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x0000000000000000 0x25 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_boot_parser.o + .text 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .data 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .bss 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x79c out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x1f6 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x34 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x40 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x20a out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x88 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x52 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x163c out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x47b1 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x11f8 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x7c0 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x36b out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x22 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x4f out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0xaec out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x1a74 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0xd67 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x2071 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x19 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0xba out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x70 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x96 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x100 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x8d3 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x2c9b out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x342 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x10 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x28 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x0000000000000000 0x70 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_common.o + .text 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_common.o + .data 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_common.o + .bss 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_common.o + .text.BLSP_Boot2_Exit + 0x0000000000000000 0x62 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x79c out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x34 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x1f6 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x20a out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x88 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x52 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x163c out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x47b1 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x11f8 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x7c0 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x36b out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x40 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x22 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x4f out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0xaec out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x1a74 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0xd67 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x2071 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x19 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0xba out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x70 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x96 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x100 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x8d3 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x2c9b out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x342 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x10 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x28 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x76 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_common.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_media_boot.o + .text 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_media_boot.o + .data 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_media_boot.o + .bss 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x79c out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x1f6 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x34 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x20a out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x88 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x52 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x163c out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x47b1 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x11f8 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x7c0 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x36b out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x40 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x22 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x4f out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0xaec out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x1a74 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0xd67 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x2071 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x19 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0xba out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x70 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x96 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x100 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x8d3 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x2c9b out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x342 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x10 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x28 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x76 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_media_boot.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .group 0x0000000000000000 0xc out/Examples/BLSP_Boot2/blsp_port.o + .text 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_port.o + .data 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_port.o + .bss 0x0000000000000000 0x0 out/Examples/BLSP_Boot2/blsp_port.o + .text.BLSP_Boot2_Init_Timer + 0x0000000000000000 0x60 out/Examples/BLSP_Boot2/blsp_port.o + .text.BLSP_Boot2_Init_Sec_Eng_PKA + 0x0000000000000000 0x18 out/Examples/BLSP_Boot2/blsp_port.o + .text.BLSP_Boot2_Get_XIP_Offset + 0x0000000000000000 0x8 out/Examples/BLSP_Boot2/blsp_port.o + .rodata 0x0000000000000000 0x18 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x79c out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x34 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x1f6 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x20a out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x88 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x52 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x163c out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x47b1 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x11f8 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x7c0 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x36b out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x40 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x22 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x4f out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0xaec out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x1a74 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0xd67 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x2071 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x19 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0xba out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x70 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x96 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x100 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x8d3 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x3c out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x2c9b out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x66 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x342 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x58 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x16 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x10 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x28 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x76 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x0000000000000000 0x1c out/Examples/BLSP_Boot2/blsp_port.o + .text 0x0000000000000000 0x0 out/startup/GCC/entry.o + .data 0x0000000000000000 0x0 out/startup/GCC/entry.o + .bss 0x0000000000000000 0x0 out/startup/GCC/entry.o + .text.metal.init.trapvec + 0x0000000000000000 0x14 out/startup/GCC/entry.o + .text.metal.init.__register_frame_info + 0x0000000000000000 0x2 out/startup/GCC/entry.o + .eh_frame 0x0000000000000000 0x68 out/startup/GCC/entry.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .text 0x0000000000000000 0x0 out/startup/GCC/start_load.o + .data 0x0000000000000000 0x0 out/startup/GCC/start_load.o + .bss 0x0000000000000000 0x0 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x796 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x1f6 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x20a out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x88 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x52 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x163c out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/interrupt.o + .group 0x0000000000000000 0xc out/startup/interrupt.o + .group 0x0000000000000000 0xc out/startup/interrupt.o + .group 0x0000000000000000 0xc out/startup/interrupt.o + .text 0x0000000000000000 0x0 out/startup/interrupt.o + .data 0x0000000000000000 0x0 out/startup/interrupt.o + .bss 0x0000000000000000 0x0 out/startup/interrupt.o + .text.clic_set_pending + 0x0000000000000000 0xe out/startup/interrupt.o + .text.clic_clear_pending + 0x0000000000000000 0xc out/startup/interrupt.o + .text.clic_set_intcfg + 0x0000000000000000 0x14 out/startup/interrupt.o + .text.clic_get_intcfg + 0x0000000000000000 0x10 out/startup/interrupt.o + .text.clic_set_cliccfg + 0x0000000000000000 0xe out/startup/interrupt.o + .text.clic_get_cliccfg + 0x0000000000000000 0xa out/startup/interrupt.o + .debug_macro 0x0000000000000000 0x796 out/startup/interrupt.o + .debug_macro 0x0000000000000000 0x1f6 out/startup/interrupt.o + .debug_macro 0x0000000000000000 0x52 out/startup/interrupt.o + .debug_macro 0x0000000000000000 0x88 out/startup/interrupt.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .text 0x0000000000000000 0x0 out/startup/system_bl602.o + .data 0x0000000000000000 0x0 out/startup/system_bl602.o + .bss 0x0000000000000000 0x0 out/startup/system_bl602.o + .text.system_bor_init + 0x0000000000000000 0x1e out/startup/system_bl602.o + .text.System_NVIC_SetPriority + 0x0000000000000000 0x2 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x796 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x20a out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x1f6 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x88 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x52 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x163c out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x47b1 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x11f8 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x7c0 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x36b out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x16 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x58 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x34 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x1c out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x40 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x22 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x4f out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0xaec out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x1a74 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0xd67 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x3c out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x2071 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x66 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x19 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0xba out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x70 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x96 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x100 out/startup/system_bl602.o + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + .text 0x0000000000000000 0x3c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_info 0x0000000000000000 0xc08 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_abbrev 0x0000000000000000 0x24b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_loc 0x0000000000000000 0x6b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_ranges 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_line 0x0000000000000000 0x365 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_str 0x0000000000000000 0x83f /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_frame 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .eh_frame 0x0000000000000000 0x28 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .eh_frame 0x0000000000000000 0x28 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .text 0x0000000000000000 0x8b8 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_info 0x0000000000000000 0x5e4 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_abbrev 0x0000000000000000 0x189 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_loc 0x0000000000000000 0x1cfd /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_ranges 0x0000000000000000 0x3d0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_line 0x0000000000000000 0x162d /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_str 0x0000000000000000 0x363 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_frame 0x0000000000000000 0x44 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .text 0x0000000000000000 0x690 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .rodata 0x0000000000000000 0x3c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_info 0x0000000000000000 0x773 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_abbrev 0x0000000000000000 0x17f /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_loc 0x0000000000000000 0x16c9 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_ranges 0x0000000000000000 0x1d0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_line 0x0000000000000000 0x125d /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_str 0x0000000000000000 0x425 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_frame 0x0000000000000000 0x58 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .text 0x0000000000000000 0x5b6 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .rodata 0x0000000000000000 0x3c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_info 0x0000000000000000 0x7ab /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_abbrev 0x0000000000000000 0x186 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_loc 0x0000000000000000 0x1109 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_ranges 0x0000000000000000 0x250 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_line 0x0000000000000000 0x1089 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_str 0x0000000000000000 0x47d /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_frame 0x0000000000000000 0x58 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .text 0x0000000000000000 0xc2 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_info 0x0000000000000000 0x21a /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_abbrev 0x0000000000000000 0x181 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_loc 0x0000000000000000 0x26f /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_ranges 0x0000000000000000 0x50 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_line 0x0000000000000000 0x31b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_str 0x0000000000000000 0x27a /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_frame 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .text 0x0000000000000000 0x94 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_info 0x0000000000000000 0x202 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_abbrev 0x0000000000000000 0x177 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_loc 0x0000000000000000 0x230 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_ranges 0x0000000000000000 0x30 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_line 0x0000000000000000 0x284 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_str 0x0000000000000000 0x279 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_frame 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .text 0x0000000000000000 0x70 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_info 0x0000000000000000 0x2c0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_abbrev 0x0000000000000000 0x181 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_loc 0x0000000000000000 0x159 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_ranges 0x0000000000000000 0x50 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_line 0x0000000000000000 0x28b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_str 0x0000000000000000 0x310 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_frame 0x0000000000000000 0x38 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .text 0x0000000000000000 0x56 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_info 0x0000000000000000 0x2af /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_abbrev 0x0000000000000000 0x178 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_loc 0x0000000000000000 0x15c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_ranges 0x0000000000000000 0x68 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_line 0x0000000000000000 0x2ad /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_str 0x0000000000000000 0x30d /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_frame 0x0000000000000000 0x34 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .text 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +Memory Configuration + +Name Origin Length Attributes +xip_memory 0x0000000023000000 0x000000000000c000 xr +itcm_memory 0x000000002201c000 0x0000000000004000 xr +dtcm_memory 0x0000000042020000 0x000000000000c000 xr +ram_memory 0x000000004202c000 0x000000000001c000 !xr +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +LOAD out/3rdParty/FreeRTOS/Source/croutine.o +LOAD out/3rdParty/FreeRTOS/Source/list.o +LOAD out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +LOAD out/3rdParty/FreeRTOS/Source/queue.o +LOAD out/3rdParty/FreeRTOS/Source/stream_buffer.o +LOAD out/3rdParty/FreeRTOS/Source/tasks.o +LOAD out/3rdParty/FreeRTOS/Source/timers.o +LOAD out/BSP_Common/FreeRTOS/port.o +LOAD out/BSP_Common/FreeRTOS/portASM.o +LOAD out/BSP_Common/cipher_suite/bflb_crypt.o +LOAD out/BSP_Common/cipher_suite/bflb_dsa.o +LOAD out/BSP_Common/cipher_suite/bflb_ecdsa.o +LOAD out/BSP_Common/cipher_suite/bflb_hash.o +LOAD out/BSP_Common/libc/atof.o +LOAD out/BSP_Common/libc/atoi.o +LOAD out/BSP_Common/libc/atol.o +LOAD out/BSP_Common/libc/atoll.o +LOAD out/BSP_Common/libc/bsearch.o +LOAD out/BSP_Common/libc/common.o +LOAD out/BSP_Common/libc/ctype_isalnum.o +LOAD out/BSP_Common/libc/ctype_isalpha.o +LOAD out/BSP_Common/libc/ctype_isascii.o +LOAD out/BSP_Common/libc/ctype_isblank.o +LOAD out/BSP_Common/libc/ctype_iscntrl.o +LOAD out/BSP_Common/libc/ctype_isdigit.o +LOAD out/BSP_Common/libc/ctype_isgraph.o +LOAD out/BSP_Common/libc/ctype_islower.o +LOAD out/BSP_Common/libc/ctype_isprint.o +LOAD out/BSP_Common/libc/ctype_ispunct.o +LOAD out/BSP_Common/libc/ctype_isspace.o +LOAD out/BSP_Common/libc/ctype_isupper.o +LOAD out/BSP_Common/libc/ctype_isxdigit.o +LOAD out/BSP_Common/libc/ctype_tolower.o +LOAD out/BSP_Common/libc/ctype_toupper.o +LOAD out/BSP_Common/libc/ctypes.o +LOAD out/BSP_Common/libc/fnmatch.o +LOAD out/BSP_Common/libc/jrand48.o +LOAD out/BSP_Common/libc/lrand48.o +LOAD out/BSP_Common/libc/memccpy.o +LOAD out/BSP_Common/libc/memchr.o +LOAD out/BSP_Common/libc/memcmp.o +LOAD out/BSP_Common/libc/memcpy.o +LOAD out/BSP_Common/libc/memmem.o +LOAD out/BSP_Common/libc/memrchr.o +LOAD out/BSP_Common/libc/memset.o +LOAD out/BSP_Common/libc/memswap.o +LOAD out/BSP_Common/libc/mrand48.o +LOAD out/BSP_Common/libc/nrand48.o +LOAD out/BSP_Common/libc/qsort.o +LOAD out/BSP_Common/libc/seed48.o +LOAD out/BSP_Common/libc/snprintf.o +LOAD out/BSP_Common/libc/sprintf.o +LOAD out/BSP_Common/libc/srand48.o +LOAD out/BSP_Common/libc/sscanf.o +LOAD out/BSP_Common/libc/stdlib.o +LOAD out/BSP_Common/libc/strcasecmp.o +LOAD out/BSP_Common/libc/strcat.o +LOAD out/BSP_Common/libc/strchr.o +LOAD out/BSP_Common/libc/strcmp.o +LOAD out/BSP_Common/libc/strcpy.o +LOAD out/BSP_Common/libc/strcspn.o +LOAD out/BSP_Common/libc/strlcat.o +LOAD out/BSP_Common/libc/strlcpy.o +LOAD out/BSP_Common/libc/strlen.o +LOAD out/BSP_Common/libc/strncasecmp.o +LOAD out/BSP_Common/libc/strncat.o +LOAD out/BSP_Common/libc/strncmp.o +LOAD out/BSP_Common/libc/strncpy.o +LOAD out/BSP_Common/libc/strnlen.o +LOAD out/BSP_Common/libc/strntoimax.o +LOAD out/BSP_Common/libc/strntoumax.o +LOAD out/BSP_Common/libc/strpbrk.o +LOAD out/BSP_Common/libc/strrchr.o +LOAD out/BSP_Common/libc/strsep.o +LOAD out/BSP_Common/libc/strspn.o +LOAD out/BSP_Common/libc/strstr.o +LOAD out/BSP_Common/libc/strtoimax.o +LOAD out/BSP_Common/libc/strtok.o +LOAD out/BSP_Common/libc/strtok_r.o +LOAD out/BSP_Common/libc/strtol.o +LOAD out/BSP_Common/libc/strtoll.o +LOAD out/BSP_Common/libc/strtoul.o +LOAD out/BSP_Common/libc/strtoull.o +LOAD out/BSP_Common/libc/strtoumax.o +LOAD out/BSP_Common/libc/strxspn.o +LOAD out/BSP_Common/libc/vsnprintf.o +LOAD out/BSP_Common/libc/vsprintf.o +LOAD out/BSP_Common/libc/vsscanf.o +LOAD out/BSP_Common/partition/partition.o +LOAD out/BSP_Common/ring_buffer/ring_buffer.o +LOAD out/BSP_Common/soft_crc/softcrc.o +LOAD out/BSP_Common/xz/xz_crc32.o +LOAD out/BSP_Common/xz/xz_dec_lzma2.o +LOAD out/BSP_Common/xz/xz_dec_stream.o +LOAD out/BSP_Common/xz/xz_decompress.o +LOAD out/BSP_Common/xz/xz_port.o +LOAD out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o +LOAD out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +LOAD out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +LOAD out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o +LOAD out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o +LOAD out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o +LOAD out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +LOAD out/Examples/BLSP_Boot2/blsp_boot2.o +LOAD out/Examples/BLSP_Boot2/blsp_boot_decompress.o +LOAD out/Examples/BLSP_Boot2/blsp_boot_parser.o +LOAD out/Examples/BLSP_Boot2/blsp_common.o +LOAD out/Examples/BLSP_Boot2/blsp_media_boot.o +LOAD out/Examples/BLSP_Boot2/blsp_port.o +LOAD out/startup/GCC/entry.o +LOAD out/startup/GCC/start_load.o +LOAD out/startup/interrupt.o +LOAD out/startup/system_bl602.o +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libm.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a +START GROUP +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libgloss.a +END GROUP +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a + 0x0000000000000400 StackSize = 0x400 + 0x0000000000000000 PROVIDE (__metal_chicken_bit = 0x0) + +.text 0x0000000023000000 0x8e98 + 0x0000000023000000 . = ALIGN (0x4) + 0x0000000023000000 __text_code_start__ = . + *(.text.metal.init.enter) + .text.metal.init.enter + 0x0000000023000000 0x86 out/startup/GCC/entry.o + 0x0000000023000000 _enter + *(SORT_NONE(.init)) + *fill* 0x0000000023000086 0x3a + .init 0x00000000230000c0 0x142 out/startup/interrupt.o + 0x00000000230000c0 __Vectors + *(.text) + .text 0x0000000023000202 0xd0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + 0x0000000023000202 memmove + .text 0x00000000230002d2 0x35e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + 0x00000000230002d2 __udivdi3 + .text 0x0000000023000630 0x352 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + 0x0000000023000630 __umoddi3 + *(.text.*) + .text.bflb_ecc_basic_parameter_init.isra.0 + 0x0000000023000982 0x48 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecc_point_mul_init.isra.1 + 0x00000000230009ca 0xc0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_point_add.isra.4 + 0x0000000023000a8a 0x1f0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_verify_point_mul.isra.5 + 0x0000000023000c7a 0x362 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_init + 0x0000000023000fdc 0x28 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023000fdc bflb_ecdsa_init + .text.bflb_ecdsa_verify + 0x0000000023001004 0x4ca out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023001004 bflb_ecdsa_verify + .text.memcmp 0x00000000230014ce 0x1e out/BSP_Common/libc/memcmp.o + 0x00000000230014ce memcmp + .text.memcpy 0x00000000230014ec 0x18 out/BSP_Common/libc/memcpy.o + 0x00000000230014ec memcpy + .text.memset 0x0000000023001504 0x18 out/BSP_Common/libc/memset.o + 0x0000000023001504 memset + .text.strlen 0x000000002300151c 0x1a out/BSP_Common/libc/strlen.o + 0x000000002300151c strlen + .text.vsnprintf + 0x0000000023001536 0xae4 out/BSP_Common/libc/vsnprintf.o + 0x0000000023001536 vsnprintf + .text.pPtTable_Flash_Read_Fast + 0x000000002300201a 0x5a out/BSP_Common/partition/partition.o + .text.PtTable_Valid + 0x0000000023002074 0x6c out/BSP_Common/partition/partition.o + .text.PtTable_Set_Flash_Operation + 0x00000000230020e0 0x2e out/BSP_Common/partition/partition.o + 0x00000000230020e0 PtTable_Set_Flash_Operation + .text.PtTable_Get_Active_Partition_Need_Lock + 0x000000002300210e 0x84 out/BSP_Common/partition/partition.o + 0x000000002300210e PtTable_Get_Active_Partition_Need_Lock + .text.PtTable_Get_Active_Entries_By_ID + 0x0000000023002192 0x64 out/BSP_Common/partition/partition.o + 0x0000000023002192 PtTable_Get_Active_Entries_By_ID + .text.PtTable_Get_Active_Entries_By_Name + 0x00000000230021f6 0x94 out/BSP_Common/partition/partition.o + 0x00000000230021f6 PtTable_Get_Active_Entries_By_Name + .text.PtTable_Update_Entry + 0x000000002300228a 0x128 out/BSP_Common/partition/partition.o + 0x000000002300228a PtTable_Update_Entry + .text.Ring_Buffer_Init + 0x00000000230023b2 0x1c out/BSP_Common/ring_buffer/ring_buffer.o + 0x00000000230023b2 Ring_Buffer_Init + .text.Ring_Buffer_Get_Length + 0x00000000230023ce 0x4a out/BSP_Common/ring_buffer/ring_buffer.o + 0x00000000230023ce Ring_Buffer_Get_Length + .text.Ring_Buffer_Write_Callback + 0x0000000023002418 0xac out/BSP_Common/ring_buffer/ring_buffer.o + 0x0000000023002418 Ring_Buffer_Write_Callback + .text.Ring_Buffer_Get_Empty_Length + 0x00000000230024c4 0x16 out/BSP_Common/ring_buffer/ring_buffer.o + 0x00000000230024c4 Ring_Buffer_Get_Empty_Length + .text.xz_crc32_init + 0x00000000230024da 0x2 out/BSP_Common/xz/xz_crc32.o + 0x00000000230024da xz_crc32_init + .text.xz_crc32 + 0x00000000230024dc 0x34 out/BSP_Common/xz/xz_crc32.o + 0x00000000230024dc xz_crc32 + .text.lzma_len + 0x0000000023002510 0x17c out/BSP_Common/xz/xz_dec_lzma2.o + .text.dict_repeat.part.1 + 0x000000002300268c 0x64 out/BSP_Common/xz/xz_dec_lzma2.o + .text.lzma_main + 0x00000000230026f0 0x74a out/BSP_Common/xz/xz_dec_lzma2.o + .text.xz_dec_lzma2_run + 0x0000000023002e3a 0x612 out/BSP_Common/xz/xz_dec_lzma2.o + 0x0000000023002e3a xz_dec_lzma2_run + .text.xz_dec_lzma2_create + 0x000000002300344c 0x68 out/BSP_Common/xz/xz_dec_lzma2.o + 0x000000002300344c xz_dec_lzma2_create + .text.xz_dec_lzma2_reset + 0x00000000230034b4 0x78 out/BSP_Common/xz/xz_dec_lzma2.o + 0x00000000230034b4 xz_dec_lzma2_reset + .text.xz_dec_lzma2_end + 0x000000002300352c 0x2c out/BSP_Common/xz/xz_dec_lzma2.o + 0x000000002300352c xz_dec_lzma2_end + .text.fill_temp + 0x0000000023003558 0x72 out/BSP_Common/xz/xz_dec_stream.o + .text.dec_vli.isra.0 + 0x00000000230035ca 0x9a out/BSP_Common/xz/xz_dec_stream.o + .text.index_update.isra.2 + 0x0000000023003664 0x36 out/BSP_Common/xz/xz_dec_stream.o + .text.xz_dec_reset + 0x000000002300369a 0x46 out/BSP_Common/xz/xz_dec_stream.o + 0x000000002300369a xz_dec_reset + .text.xz_dec_run + 0x00000000230036e0 0x78e out/BSP_Common/xz/xz_dec_stream.o + 0x00000000230036e0 xz_dec_run + .text.xz_dec_init + 0x0000000023003e6e 0x46 out/BSP_Common/xz/xz_dec_stream.o + 0x0000000023003e6e xz_dec_init + .text.xz_dec_end + 0x0000000023003eb4 0x1e out/BSP_Common/xz/xz_dec_stream.o + 0x0000000023003eb4 xz_dec_end + .text.simple_malloc_init + 0x0000000023003ed2 0x1a out/BSP_Common/xz/xz_port.o + 0x0000000023003ed2 simple_malloc_init + .text.simple_malloc + 0x0000000023003eec 0x44 out/BSP_Common/xz/xz_port.o + 0x0000000023003eec simple_malloc + .text.simple_free + 0x0000000023003f30 0xe out/BSP_Common/xz/xz_port.o + 0x0000000023003f30 simple_free + .text.Trap_Handler + 0x0000000023003f3e 0x126 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + 0x0000000023003f3e Trap_Handler + .text.Interrupt_Handler_Register + 0x0000000023004064 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + 0x0000000023004064 Interrupt_Handler_Register + .text.Interrupt_Handler + 0x000000002300407c 0x9e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + 0x000000002300407c Interrupt_Handler + .text.EF_Ctrl_Read_Secure_Boot + 0x000000002300411a 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + 0x000000002300411a EF_Ctrl_Read_Secure_Boot + .text.EF_Ctrl_Read_Sw_Usage + 0x000000002300415a 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + 0x000000002300415a EF_Ctrl_Read_Sw_Usage + .text.EF_Ctrl_Read_MAC_Address + 0x000000002300418a 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + 0x000000002300418a EF_Ctrl_Read_MAC_Address + .text.EF_Ctrl_Read_Chip_ID + 0x0000000023004244 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + 0x0000000023004244 EF_Ctrl_Read_Chip_ID + .text.EF_Ctrl_Read_AES_Key + 0x000000002300424e 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + 0x000000002300424e EF_Ctrl_Read_AES_Key + .text.GLB_Set_UART_CLK + 0x000000002300428e 0x3e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x000000002300428e GLB_Set_UART_CLK + .text.GLB_AHB_Slave1_Reset + 0x00000000230042cc 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x00000000230042cc GLB_AHB_Slave1_Reset + .text.GLB_Set_EM_Sel + 0x0000000023004300 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x0000000023004300 GLB_Set_EM_Sel + .text.GLB_Set_MTimer_CLK + 0x0000000023004310 0x4a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x0000000023004310 GLB_Set_MTimer_CLK + .text.GLB_UART_Fun_Sel + 0x000000002300435a 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x000000002300435a GLB_UART_Fun_Sel + .text.GLB_GPIO_Write + 0x000000002300437e 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x000000002300437e GLB_GPIO_Write + .text.HBN_Set_UART_CLK_Sel + 0x00000000230043ac 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + 0x00000000230043ac HBN_Set_UART_CLK_Sel + .text.HBN_Get_Status_Flag + 0x00000000230043c0 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + 0x00000000230043c0 HBN_Get_Status_Flag + .text.HBN_Set_BOR_Cfg + 0x00000000230043ca 0x5c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + 0x00000000230043ca HBN_Set_BOR_Cfg + .text.Sec_Eng_SHA256_Update.part.0 + 0x0000000023004426 0x184 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_MREM.part.3 + 0x00000000230045aa 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA256_Init + 0x00000000230045c8 0x5a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x00000000230045c8 Sec_Eng_SHA256_Init + .text.Sec_Eng_SHA_Start + 0x0000000023004622 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000023004622 Sec_Eng_SHA_Start + .text.Sec_Eng_SHA256_Update + 0x0000000023004634 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000023004634 Sec_Eng_SHA256_Update + .text.Sec_Eng_SHA256_Finish + 0x0000000023004640 0x22a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000023004640 Sec_Eng_SHA256_Finish + .text.Sec_Eng_Trng_Enable + 0x000000002300486a 0x54 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x000000002300486a Sec_Eng_Trng_Enable + .text.Sec_Eng_Trng_Disable + 0x00000000230048be 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x00000000230048be Sec_Eng_Trng_Disable + .text.Sec_Eng_PKA_Reset + 0x00000000230048d2 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x00000000230048d2 Sec_Eng_PKA_Reset + .text.Sec_Eng_PKA_BigEndian_Enable + 0x00000000230048e2 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x00000000230048e2 Sec_Eng_PKA_BigEndian_Enable + .text.Sec_Eng_PKA_Write_Data + 0x00000000230048f4 0xc2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x00000000230048f4 Sec_Eng_PKA_Write_Data + .text.Sec_Eng_PKA_Read_Data + 0x00000000230049b6 0xc2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x00000000230049b6 Sec_Eng_PKA_Read_Data + .text.Sec_Eng_PKA_CREG + 0x0000000023004a78 0x64 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000023004a78 Sec_Eng_PKA_CREG + .text.Sec_Eng_PKA_Move_Data + 0x0000000023004adc 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000023004adc Sec_Eng_PKA_Move_Data + .text.Sec_Eng_PKA_MSUB + 0x0000000023004b46 0x9e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000023004b46 Sec_Eng_PKA_MSUB + .text.Sec_Eng_PKA_MREM + 0x0000000023004be4 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000023004be4 Sec_Eng_PKA_MREM + .text.Sec_Eng_PKA_MMUL + 0x0000000023004c4a 0x9e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000023004c4a Sec_Eng_PKA_MMUL + .text.Sec_Eng_PKA_MINV + 0x0000000023004ce8 0x80 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000023004ce8 Sec_Eng_PKA_MINV + .text.Sec_Eng_PKA_LCMP + 0x0000000023004d68 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000023004d68 Sec_Eng_PKA_LCMP + .text.Sec_Eng_PKA_LMUL + 0x0000000023004dd2 0x64 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000023004dd2 Sec_Eng_PKA_LMUL + .text.Sec_Eng_PKA_GF2Mont + 0x0000000023004e36 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000023004e36 Sec_Eng_PKA_GF2Mont + .text.Sec_Eng_PKA_Mont2GF + 0x0000000023004e78 0x5a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000023004e78 Sec_Eng_PKA_Mont2GF + .text.UART_IntHandler + 0x0000000023004ed2 0x152 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART0_IRQHandler + 0x0000000023005024 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000023005024 UART0_IRQHandler + .text.UART1_IRQHandler + 0x0000000023005028 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000023005028 UART1_IRQHandler + .text.UART_Init + 0x000000002300502c 0x11e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x000000002300502c UART_Init + .text.UART_FifoConfig + 0x000000002300514a 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x000000002300514a UART_FifoConfig + .text.UART_Enable + 0x00000000230051b4 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x00000000230051b4 UART_Enable + .text.UART_Disable + 0x00000000230051e8 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x00000000230051e8 UART_Disable + .text.UART_SetRxTimeoutValue + 0x0000000023005218 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000023005218 UART_SetRxTimeoutValue + .text.UART_TxFreeRun + 0x0000000023005236 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000023005236 UART_TxFreeRun + .text.UART_AutoBaudDetection + 0x000000002300525e 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x000000002300525e UART_AutoBaudDetection + .text.UART_IntMask + 0x0000000023005286 0x48 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000023005286 UART_IntMask + .text.UART_Int_Callback_Install + 0x00000000230052ce 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x00000000230052ce UART_Int_Callback_Install + .text.UART_SendData + 0x00000000230052e0 0x50 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x00000000230052e0 UART_SendData + .text.UART_ReceiveData + 0x0000000023005330 0x4e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000023005330 UART_ReceiveData + .text.UART_GetRxFifoCount + 0x000000002300537e 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x000000002300537e UART_GetRxFifoCount + .text.UART_GetTxBusBusyStatus + 0x0000000023005398 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000023005398 UART_GetTxBusBusyStatus + .text.bflb_platform_uart_dbg_init + 0x00000000230053ac 0x104 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x00000000230053ac bflb_platform_uart_dbg_init + .text.bflb_platform_uart_dbg_deinit + 0x00000000230054b0 0x4c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x00000000230054b0 bflb_platform_uart_dbg_deinit + .text.bflb_platform_printf + 0x00000000230054fc 0x5c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x00000000230054fc bflb_platform_printf + .text.UART_RTO_Cbf.part.0 + 0x0000000023005558 0x32 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.UART_RFR_Cbf + 0x000000002300558a 0x52 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.UART_RTO_Cbf + 0x00000000230055dc 0x52 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_clear_time + 0x000000002300562e 0x12 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x000000002300562e bflb_platform_clear_time + .text.bflb_platform_get_time_ms + 0x0000000023005640 0x8c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000023005640 bflb_platform_get_time_ms + .text.bflb_platform_init_time + 0x00000000230056cc 0x2a out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x00000000230056cc bflb_platform_init_time + .text.bflb_platform_deinit_time + 0x00000000230056f6 0x6 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x00000000230056f6 bflb_platform_deinit_time + .text.bflb_platform_delay_ms + 0x00000000230056fc 0x64 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x00000000230056fc bflb_platform_delay_ms + .text.bflb_platform_init + 0x0000000023005760 0x5c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000023005760 bflb_platform_init + .text.bflb_platform_deinit + 0x00000000230057bc 0x42 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x00000000230057bc bflb_platform_deinit + .text.bflb_platform_print_set + 0x00000000230057fe 0xa out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x00000000230057fe bflb_platform_print_set + .text.bflb_plat_uart_debug_port_set + 0x0000000023005808 0x2e out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000023005808 bflb_plat_uart_debug_port_set + .text.bflb_bootrom_cmd_get_bootinfo + 0x0000000023005836 0x3c out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .text.bflb_bootrom_cmd_ack.part.1 + 0x0000000023005872 0x14 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .text.bflb_bootrom_cmd_ack + 0x0000000023005886 0x1c out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .text.bflb_bootrom_cmd_load_segdata + 0x00000000230058a2 0xe4 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .text.bflb_bootrom_cmd_check_img + 0x0000000023005986 0x42 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .text.bflb_bootrom_cmd_run + 0x00000000230059c8 0x9c out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .text.bflb_bootrom_parse_bootheader + 0x0000000023005a64 0x1a4 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + 0x0000000023005a64 bflb_bootrom_parse_bootheader + .text.bflb_bootrom_cmd_load_bootheader + 0x0000000023005c08 0x5a out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .text.bflb_bootrom_parse_seg_header + 0x0000000023005c62 0x5a out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + 0x0000000023005c62 bflb_bootrom_parse_seg_header + .text.bflb_bootrom_cmd_load_segheader + 0x0000000023005cbc 0xa0 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_init + 0x0000000023005d5c 0x2 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + 0x0000000023005d5c bflb_eflash_loader_cmd_init + .text.bflb_eflash_loader_cmd_process + 0x0000000023005d5e 0x72 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + 0x0000000023005d5e bflb_eflash_loader_cmd_process + .text.bflb_eflash_loader_init_uart_gpio + 0x0000000023005dd0 0x44 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + 0x0000000023005dd0 bflb_eflash_loader_init_uart_gpio + .text.bflb_eflash_loader_usart_if_init + 0x0000000023005e14 0xb2 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .text.uart_if_rto_cbf + 0x0000000023005ec6 0x4a out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .text.uart_if_rda_cbf + 0x0000000023005f10 0x2 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .text.bflb_eflash_loader_usart_if_receive.isra.0 + 0x0000000023005f12 0xa2 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .text.bflb_eflash_loader_usart_if_wait_tx_idle + 0x0000000023005fb4 0x10 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + 0x0000000023005fb4 bflb_eflash_loader_usart_if_wait_tx_idle + .text.bflb_eflash_loader_uart_init + 0x0000000023005fc4 0x36 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + 0x0000000023005fc4 bflb_eflash_loader_uart_init + .text.bflb_eflash_loader_uart_handshake_poll + 0x0000000023005ffa 0xd4 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + 0x0000000023005ffa bflb_eflash_loader_uart_handshake_poll + .text.bflb_eflash_loader_uart_send + 0x00000000230060ce 0x16 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + 0x00000000230060ce bflb_eflash_loader_uart_send + .text.bflb_eflash_loader_main + 0x00000000230060e4 0xf8 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + 0x00000000230060e4 bflb_eflash_loader_main + .text.PtTable_Flash_Read + 0x00000000230061dc 0x22 out/Examples/BLSP_Boot2/blsp_boot2.o + .text.PtTable_Flash_Write + 0x00000000230061fe 0x22 out/Examples/BLSP_Boot2/blsp_boot2.o + .text.PtTable_Flash_Erase + 0x0000000023006220 0x20 out/Examples/BLSP_Boot2/blsp_boot2.o + .text.BLSP_Boot2_Deal_One_FW + 0x0000000023006240 0x20a out/Examples/BLSP_Boot2/blsp_boot2.o + .text.startup.main + 0x000000002300644a 0x552 out/Examples/BLSP_Boot2/blsp_boot2.o + 0x000000002300644a main + .text.BLSP_Boot2_Fw_Decompress + 0x000000002300699c 0x204 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .text.BLSP_Boot2_Update_Fw + 0x0000000023006ba0 0xce out/Examples/BLSP_Boot2/blsp_boot_decompress.o + 0x0000000023006ba0 BLSP_Boot2_Update_Fw + .text.BLSP_Boot2_Verify_XZ_Header + 0x0000000023006c6e 0x34 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + 0x0000000023006c6e BLSP_Boot2_Verify_XZ_Header + .text.BLSP_Boot_Parse_BootHeader + 0x0000000023006ca2 0x24a out/Examples/BLSP_Boot2/blsp_boot_parser.o + 0x0000000023006ca2 BLSP_Boot_Parse_BootHeader + .text.BLSP_Boot_Parse_PKey + 0x0000000023006eec 0x118 out/Examples/BLSP_Boot2/blsp_boot_parser.o + 0x0000000023006eec BLSP_Boot_Parse_PKey + .text.BLSP_Boot_Parse_Signature + 0x0000000023007004 0xd4 out/Examples/BLSP_Boot2/blsp_boot_parser.o + 0x0000000023007004 BLSP_Boot_Parse_Signature + .text.BLSP_Boot_Parse_AesIv + 0x00000000230070d8 0x82 out/Examples/BLSP_Boot2/blsp_boot_parser.o + 0x00000000230070d8 BLSP_Boot_Parse_AesIv + .text.BLSP_Boot_Parser_Check_Signature + 0x000000002300715a 0xb2 out/Examples/BLSP_Boot2/blsp_boot_parser.o + 0x000000002300715a BLSP_Boot_Parser_Check_Signature + .text.BLSP_Boot_Parser_Check_Hash + 0x000000002300720c 0x7c out/Examples/BLSP_Boot2/blsp_boot_parser.o + 0x000000002300720c BLSP_Boot_Parser_Check_Hash + .text.BLSP_Dump_Data + 0x0000000023007288 0x60 out/Examples/BLSP_Boot2/blsp_common.o + 0x0000000023007288 BLSP_Dump_Data + .text.BLSP_MediaBoot_Pre_Jump + 0x00000000230072e8 0x1a out/Examples/BLSP_Boot2/blsp_common.o + 0x00000000230072e8 BLSP_MediaBoot_Pre_Jump + .text.BLSP_MediaBoot_Main + 0x0000000023007302 0x464 out/Examples/BLSP_Boot2/blsp_media_boot.o + 0x0000000023007302 BLSP_MediaBoot_Main + .text.BLSP_Boot2_Disable_Other_Cache + 0x0000000023007766 0x2 out/Examples/BLSP_Boot2/blsp_port.o + 0x0000000023007766 BLSP_Boot2_Disable_Other_Cache + .text.BLSP_Boot2_Flush_XIP_Cache + 0x0000000023007768 0x8 out/Examples/BLSP_Boot2/blsp_port.o + 0x0000000023007768 BLSP_Boot2_Flush_XIP_Cache + .text.BLSP_Boot2_Show_Timer + 0x0000000023007770 0x1a out/Examples/BLSP_Boot2/blsp_port.o + 0x0000000023007770 BLSP_Boot2_Show_Timer + .text.BLSP_Boot2_Reset_Sec_Eng + 0x000000002300778a 0x6 out/Examples/BLSP_Boot2/blsp_port.o + 0x000000002300778a BLSP_Boot2_Reset_Sec_Eng + .text.BLSP_Boot2_Get_CPU_Count + 0x0000000023007790 0x4 out/Examples/BLSP_Boot2/blsp_port.o + 0x0000000023007790 BLSP_Boot2_Get_CPU_Count + .text.BLSP_Read_Power_Save_Mode + 0x0000000023007794 0x1c out/Examples/BLSP_Boot2/blsp_port.o + 0x0000000023007794 BLSP_Read_Power_Save_Mode + .text.BLSP_Boot2_Pass_Parameter + 0x00000000230077b0 0x52 out/Examples/BLSP_Boot2/blsp_port.o + 0x00000000230077b0 BLSP_Boot2_Pass_Parameter + .text.BLSP_Get_User_Specified_Fw + 0x0000000023007802 0xa out/Examples/BLSP_Boot2/blsp_port.o + 0x0000000023007802 BLSP_Get_User_Specified_Fw + .text.BLSP_Clr_User_Specified_Fw + 0x000000002300780c 0xa out/Examples/BLSP_Boot2/blsp_port.o + 0x000000002300780c BLSP_Clr_User_Specified_Fw + .text.BLSP_Is_MSP_Valid + 0x0000000023007816 0x2a out/Examples/BLSP_Boot2/blsp_port.o + 0x0000000023007816 BLSP_Is_MSP_Valid + .text.BLSP_Is_PC_Valid + 0x0000000023007840 0x3c out/Examples/BLSP_Boot2/blsp_port.o + 0x0000000023007840 BLSP_Is_PC_Valid + .text.BLSP_Fix_Invalid_MSP_PC + 0x000000002300787c 0x4a out/Examples/BLSP_Boot2/blsp_port.o + 0x000000002300787c BLSP_Fix_Invalid_MSP_PC + .text.bflb_platform_init_uart_debug_gpio + 0x00000000230078c6 0x42 out/Examples/BLSP_Boot2/blsp_port.o + 0x00000000230078c6 bflb_platform_init_uart_debug_gpio + .text.bflb_platform_deinit_uart_debug_gpio + 0x0000000023007908 0x48 out/Examples/BLSP_Boot2/blsp_port.o + 0x0000000023007908 bflb_platform_deinit_uart_debug_gpio + .text.BLSP_Boot2_init_gpio_for_bootrom + 0x0000000023007950 0x48 out/Examples/BLSP_Boot2/blsp_port.o + 0x0000000023007950 BLSP_Boot2_init_gpio_for_bootrom + .text.start_load + 0x0000000023007998 0x12a out/startup/GCC/start_load.o + 0x0000000023007998 start_load + .text.Interrupt_Handler_Stub + 0x0000000023007ac2 0x9c out/startup/interrupt.o + 0x0000000023007ac2 SDIO_IRQHandler_Wrapper + 0x0000000023007ac2 TIMER_WDT_IRQHandler_Wrapper + 0x0000000023007ac2 GPIO_INT0_IRQHandler_Wrapper + 0x0000000023007ac2 SEC_PKA_IRQHandler_Wrapper + 0x0000000023007ac2 SEC_TRNG_IRQHandler_Wrapper + 0x0000000023007ac2 MAC_GEN_IRQHandler_Wrapper + 0x0000000023007ac2 DMA_BMX_ERR_IRQHandler_Wrapper + 0x0000000023007ac2 EFUSE_IRQHandler_Wrapper + 0x0000000023007ac2 WIFI_IRQHandler_Wrapper + 0x0000000023007ac2 SEC_CDET_IRQHandler_Wrapper + 0x0000000023007ac2 SEC_AES_IRQHandler_Wrapper + 0x0000000023007ac2 PWM_IRQHandler_Wrapper + 0x0000000023007ac2 RF_TOP_INT1_IRQHandler_Wrapper + 0x0000000023007ac2 HBN_OUT0_IRQHandler_Wrapper + 0x0000000023007ac2 SF_CTRL_IRQHandler_Wrapper + 0x0000000023007ac2 TIMER_CH0_IRQHandler_Wrapper + 0x0000000023007ac2 clic_mext_handler_Wrapper + 0x0000000023007ac2 MAC_TXRX_TIMER_IRQHandler_Wrapper + 0x0000000023007ac2 Interrupt_Handler_Stub + 0x0000000023007ac2 clic_csoft_handler_Wrapper + 0x0000000023007ac2 I2C_IRQHandler_Wrapper + 0x0000000023007ac2 SPI_IRQHandler_Wrapper + 0x0000000023007ac2 MAC_PORT_TRG_IRQHandler_Wrapper + 0x0000000023007ac2 PDS_WAKEUP_IRQHandler_Wrapper + 0x0000000023007ac2 clic_mtimer_handler_Wrapper + 0x0000000023007ac2 L1C_BMX_ERR_IRQHandler_Wrapper + 0x0000000023007ac2 SEC_BMX_ERR_IRQHandler_Wrapper + 0x0000000023007ac2 MAC_RX_TRG_IRQHandler_Wrapper + 0x0000000023007ac2 MAC_TX_TRG_IRQHandler_Wrapper + 0x0000000023007ac2 HBN_OUT1_IRQHandler_Wrapper + 0x0000000023007ac2 SEC_GMAC_IRQHandler_Wrapper + 0x0000000023007ac2 clic_msip_handler_Wrapper + 0x0000000023007ac2 UART1_IRQHandler_Wrapper + 0x0000000023007ac2 GPADC_DMA_IRQHandler_Wrapper + 0x0000000023007ac2 MAC_TXRX_MISC_IRQHandler_Wrapper + 0x0000000023007ac2 DMA_ALL_IRQHandler_Wrapper + 0x0000000023007ac2 BLE_IRQHandler_Wrapper + 0x0000000023007ac2 SEC_SHA_IRQHandler_Wrapper + 0x0000000023007ac2 IRRX_IRQHandler_Wrapper + 0x0000000023007ac2 BMX_TO_IRQHandler_Wrapper + 0x0000000023007ac2 TIMER_CH1_IRQHandler_Wrapper + 0x0000000023007ac2 UART0_IRQHandler_Wrapper + 0x0000000023007ac2 BMX_ERR_IRQHandler_Wrapper + 0x0000000023007ac2 WIFI_IPC_PUBLIC_IRQHandler_Wrapper + 0x0000000023007ac2 L1C_BMX_TO_IRQHandler_Wrapper + 0x0000000023007ac2 BZ_PHY_IRQHandler_Wrapper + 0x0000000023007ac2 RF_TOP_INT0_IRQHandler_Wrapper + 0x0000000023007ac2 IRTX_IRQHandler_Wrapper + 0x0000000023007ac2 BOR_IRQHandler_Wrapper + *fill* 0x0000000023007b5e 0x22 + .text.Trap_Handler_Stub + 0x0000000023007b80 0xbe out/startup/interrupt.o + 0x0000000023007b80 Trap_Handler_Stub + .text.clic_enable_interrupt + 0x0000000023007c3e 0x12 out/startup/interrupt.o + 0x0000000023007c3e clic_enable_interrupt + .text.clic_disable_interrupt + 0x0000000023007c50 0x10 out/startup/interrupt.o + 0x0000000023007c50 clic_disable_interrupt + .text.SystemInit + 0x0000000023007c60 0xac out/startup/system_bl602.o + 0x0000000023007c60 SystemInit + *(.rodata) + *fill* 0x0000000023007d0c 0x0 + .rodata 0x0000000023007d0c 0x10 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .rodata 0x0000000023007d1c 0x6 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + *fill* 0x0000000023007d22 0x2 + .rodata 0x0000000023007d24 0x100 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + 0x0000000023007d24 __clz_tab + *(.rodata.*) + .rodata.bflb_ecdsa_verify_point_mul.isra.5.str1.4 + 0x0000000023007e24 0x35 out/BSP_Common/cipher_suite/bflb_ecdsa.o + *fill* 0x0000000023007e59 0x3 + .rodata.secp256r1InvR_N + 0x0000000023007e5c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007e5c secp256r1InvR_N + .rodata.secp256r1InvR_P + 0x0000000023007e7c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007e7c secp256r1InvR_P + .rodata.secp256r1N + 0x0000000023007e9c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007e9c secp256r1N + .rodata.secp256r1P + 0x0000000023007ebc 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007ebc secp256r1P + .rodata.secp256r1PrimeN_N + 0x0000000023007edc 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007edc secp256r1PrimeN_N + .rodata.secp256r1PrimeN_P + 0x0000000023007efc 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007efc secp256r1PrimeN_P + .rodata.secp256r1_1 + 0x0000000023007f1c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007f1c secp256r1_1 + .rodata.secp256r1_1M1 + 0x0000000023007f3c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007f3c secp256r1_1M1 + .rodata.secp256r1_1P1 + 0x0000000023007f5c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007f5c secp256r1_1P1 + .rodata.secp256r1_BAR2 + 0x0000000023007f7c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007f7c secp256r1_BAR2 + .rodata.secp256r1_BAR3 + 0x0000000023007f9c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007f9c secp256r1_BAR3 + .rodata.secp256r1_BAR4 + 0x0000000023007fbc 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007fbc secp256r1_BAR4 + .rodata.secp256r1_BAR8 + 0x0000000023007fdc 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007fdc secp256r1_BAR8 + .rodata.secp256r1_Gx + 0x0000000023007ffc 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000023007ffc secp256r1_Gx + .rodata.secp256r1_Gy + 0x000000002300801c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002300801c secp256r1_Gy + .rodata.secp256r1_Zerox + 0x000000002300803c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002300803c secp256r1_Zerox + .rodata.secp256r1_Zeroy + 0x000000002300805c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002300805c secp256r1_Zeroy + .rodata.lcdigits.1541 + 0x000000002300807c 0x11 out/BSP_Common/libc/vsnprintf.o + *fill* 0x000000002300808d 0x3 + .rodata.ucdigits.1542 + 0x0000000023008090 0x11 out/BSP_Common/libc/vsnprintf.o + *fill* 0x00000000230080a1 0x3 + .rodata.vsnprintf.str1.4 + 0x00000000230080a4 0x7 out/BSP_Common/libc/vsnprintf.o + *fill* 0x00000000230080ab 0x1 + .rodata.crc32Tab + 0x00000000230080ac 0x400 out/BSP_Common/soft_crc/softcrc.o + 0x00000000230080ac crc32Tab + .rodata.xz_dec_run.str1.4 + 0x00000000230084ac 0xb out/BSP_Common/xz/xz_dec_stream.o + *fill* 0x00000000230084b7 0x1 + .rodata.simple_free.str1.4 + 0x00000000230084b8 0x13 out/BSP_Common/xz/xz_port.o + *fill* 0x00000000230084cb 0x1 + .rodata.simple_malloc.str1.4 + 0x00000000230084cc 0x13 out/BSP_Common/xz/xz_port.o + *fill* 0x00000000230084df 0x1 + .rodata.Interrupt_Handler.str1.4 + 0x00000000230084e0 0x8a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + *fill* 0x000000002300856a 0x2 + .rodata.Trap_Handler.str1.4 + 0x000000002300856c 0x13b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + *fill* 0x00000000230086a7 0x1 + .rodata.CSWTCH.116 + 0x00000000230086a8 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .rodata.str1.4 + 0x00000000230086bc 0x5 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + *fill* 0x00000000230086c1 0x3 + .rodata.uartAddr + 0x00000000230086c4 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .rodata.UART_RTO_Cbf.part.0.str1.4 + 0x00000000230086cc 0x11 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + *fill* 0x00000000230086dd 0x3 + .rodata.bflb_platform_init.str1.4 + 0x00000000230086e0 0x13 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + *fill* 0x00000000230086f3 0x1 + .rodata.bflb_bootrom_cmd_load_segdata.str1.4 + 0x00000000230086f4 0x40 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .rodata.bflb_bootrom_cmd_run.str1.4 + 0x0000000023008734 0x4a out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + *fill* 0x000000002300877e 0x2 + .rodata.eflash_loader_cmds + 0x0000000023008780 0x30 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_main.str1.4 + 0x00000000230087b0 0x49 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + *fill* 0x00000000230087f9 0x3 + .rodata.bflb_eflash_loader_uart_handshake_poll.str1.4 + 0x00000000230087fc 0x49 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + *fill* 0x0000000023008845 0x3 + .rodata.BLSP_Boot2_Deal_One_FW.str1.4 + 0x0000000023008848 0xf5 out/Examples/BLSP_Boot2/blsp_boot2.o + *fill* 0x000000002300893d 0x3 + .rodata.main.str1.4 + 0x0000000023008940 0x202 out/Examples/BLSP_Boot2/blsp_boot2.o + 0x20a (size before relaxing) + *fill* 0x0000000023008b42 0x2 + .rodata.BLSP_Boot2_Fw_Decompress.str1.4 + 0x0000000023008b44 0xc1 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + *fill* 0x0000000023008c05 0x3 + .rodata.BLSP_Boot2_Update_Fw.str1.4 + 0x0000000023008c08 0x79 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + *fill* 0x0000000023008c81 0x3 + .rodata.BLSP_Boot_Parse_AesIv.str1.4 + 0x0000000023008c84 0x13 out/Examples/BLSP_Boot2/blsp_boot_parser.o + *fill* 0x0000000023008c97 0x1 + .rodata.BLSP_Boot_Parse_BootHeader.str1.4 + 0x0000000023008c98 0x85 out/Examples/BLSP_Boot2/blsp_boot_parser.o + *fill* 0x0000000023008d1d 0x3 + .rodata.BLSP_Boot_Parse_PKey.str1.4 + 0x0000000023008d20 0x1f out/Examples/BLSP_Boot2/blsp_boot_parser.o + *fill* 0x0000000023008d3f 0x1 + .rodata.BLSP_Boot_Parse_Signature.str1.4 + 0x0000000023008d40 0x10 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .rodata.BLSP_Boot_Parser_Check_Hash.str1.4 + 0x0000000023008d50 0xd out/Examples/BLSP_Boot2/blsp_boot_parser.o + *fill* 0x0000000023008d5d 0x3 + .rodata.BLSP_Boot_Parser_Check_Signature.str1.4 + 0x0000000023008d60 0x32 out/Examples/BLSP_Boot2/blsp_boot_parser.o + *fill* 0x0000000023008d92 0x2 + .rodata.BLSP_Dump_Data.str1.4 + 0x0000000023008d94 0x6 out/Examples/BLSP_Boot2/blsp_common.o + 0xa (size before relaxing) + *fill* 0x0000000023008d9a 0x2 + .rodata.BLSP_MediaBoot_Main.str1.4 + 0x0000000023008d9c 0xdf out/Examples/BLSP_Boot2/blsp_media_boot.o + *fill* 0x0000000023008e7b 0x1 + .rodata.BLSP_Boot2_Show_Timer.str1.4 + 0x0000000023008e7c 0x14 out/Examples/BLSP_Boot2/blsp_port.o + 0x12 (size before relaxing) + *(.srodata) + .srodata 0x0000000023008e90 0x4 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .srodata 0x0000000023008e94 0x4 out/startup/system_bl602.o + *(.srodata.*) + 0x0000000023008e98 . = ALIGN (0x4) + 0x0000000023008e98 __text_code_end__ = . + 0x0000000023008e98 . = ALIGN (0x4) + 0x0000000023008e98 __itcm_load_addr = . + +.itcm_region 0x000000002201c000 0x1880 load address 0x0000000023008e98 + 0x000000002201c000 . = ALIGN (0x4) + 0x000000002201c000 __tcm_code_start__ = . + *(.tcm_code) + .tcm_code 0x000000002201c000 0x1f2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x000000002201c000 GLB_GPIO_Init + 0x000000002201c130 GLB_GPIO_INPUT_Enable + 0x000000002201c15a GLB_GPIO_INPUT_Disable + 0x000000002201c184 GLB_GPIO_Set_PullUp + 0x000000002201c1bc GLB_GPIO_Set_PullDown + .tcm_code 0x000000002201c1f2 0x546 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + 0x000000002201c1f2 AON_Power_On_BG + 0x000000002201c1fc AON_Power_Off_BG + 0x000000002201c206 AON_Power_On_LDO11_SOC + 0x000000002201c210 AON_Power_Off_LDO11_SOC + 0x000000002201c21a AON_Power_On_LDO15_RF + 0x000000002201c224 AON_Power_Off_LDO15_RF + 0x000000002201c22e AON_Power_On_SFReg + 0x000000002201c238 AON_Power_Off_SFReg + 0x000000002201c242 AON_LowPower_Enter_PDS0 + 0x000000002201c24c AON_LowPower_Exit_PDS0 + 0x000000002201c256 ASM_Delay_Us + 0x000000002201c260 BL602_Delay_US + 0x000000002201c26a BL602_Delay_MS + 0x000000002201c274 BL602_MemCpy + 0x000000002201c27e BL602_MemCpy4 + 0x000000002201c288 BL602_MemCpy_Fast + 0x000000002201c292 BL602_MemSet + 0x000000002201c29c BL602_MemSet4 + 0x000000002201c2a6 BL602_MemCmp + 0x000000002201c2b0 EF_Ctrl_Sw_AHB_Clk_0 + 0x000000002201c2ba EF_Ctrl_Program_Efuse_0 + 0x000000002201c2c4 EF_Ctrl_Load_Efuse_R0 + 0x000000002201c2ce EF_Ctrl_Busy + 0x000000002201c2d8 EF_Ctrl_AutoLoad_Done + 0x000000002201c2e2 EF_Ctrl_Clear + 0x000000002201c2ec GLB_SW_System_Reset + 0x000000002201c2f6 GLB_SW_CPU_Reset + 0x000000002201c300 GLB_SW_POR_Reset + 0x000000002201c30a GLB_Select_Internal_Flash + 0x000000002201c314 GLB_Select_External_Flash + 0x000000002201c31e GLB_Deswap_Flash_Pin + 0x000000002201c328 GLB_Swap_Flash_Pin + 0x000000002201c332 GLB_GPIO_OUTPUT_Enable + 0x000000002201c33c GLB_GPIO_OUTPUT_Disable + 0x000000002201c346 GLB_GPIO_Set_HZ + 0x000000002201c350 GLB_GPIO_Get_Fun + 0x000000002201c35a HBN_Power_Down_Flash + 0x000000002201c364 HBN_Enable + 0x000000002201c36e HBN_Reset + 0x000000002201c378 HBN_Set_Ldo11_Aon_Vout + 0x000000002201c382 HBN_Set_Ldo11_Rt_Vout + 0x000000002201c38c HBN_Set_Ldo11_Soc_Vout + 0x000000002201c396 HBN_Hw_Pu_Pd_Cfg + 0x000000002201c3a0 HBN_Pin_WakeUp_Mask + 0x000000002201c3aa HBN_GPIO7_Dbg_Pull_Cfg + 0x000000002201c3b4 HBN_Set_Embedded_Flash_Pullup + 0x000000002201c3be L1C_Set_Wrap + 0x000000002201c3c8 L1C_Set_Way_Disable + 0x000000002201c3d2 L1C_IROM_2T_Access_Set + 0x000000002201c3dc PDS_Reset + 0x000000002201c3e6 PDS_Enable + 0x000000002201c3f0 PDS_Force_Config + 0x000000002201c3fa PDS_RAM_Config + 0x000000002201c404 PDS_Default_Level_Config + 0x000000002201c40e SEC_Eng_Turn_On_Sec_Ring + 0x000000002201c418 SEC_Eng_Turn_Off_Sec_Ring + 0x000000002201c422 SFlash_Init + 0x000000002201c42c SFlash_SetSPIMode + 0x000000002201c436 SFlash_Read_Reg + 0x000000002201c440 SFlash_Write_Reg + 0x000000002201c44a SFlash_Busy + 0x000000002201c454 SFlash_Write_Enable + 0x000000002201c45e SFlash_Qspi_Enable + 0x000000002201c468 SFlash_Volatile_Reg_Write_Enable + 0x000000002201c472 SFlash_Chip_Erase + 0x000000002201c47c SFlash_Sector_Erase + 0x000000002201c486 SFlash_Blk32_Erase + 0x000000002201c490 SFlash_Blk64_Erase + 0x000000002201c49a SFlash_Erase + 0x000000002201c4a4 SFlash_Program + 0x000000002201c4ae SFlash_GetUniqueId + 0x000000002201c4b8 SFlash_GetJedecId + 0x000000002201c4c2 SFlash_GetDeviceId + 0x000000002201c4cc SFlash_Powerdown + 0x000000002201c4d6 SFlash_Releae_Powerdown + 0x000000002201c4e0 SFlash_SetBurstWrap + 0x000000002201c4ea SFlash_DisableBurstWrap + 0x000000002201c4f4 SFlash_Software_Reset + 0x000000002201c4fe SFlash_Reset_Continue_Read + 0x000000002201c508 SFlash_Set_IDbus_Cfg + 0x000000002201c512 SFlash_IDbus_Read_Enable + 0x000000002201c51c SFlash_Cache_Enable_Set + 0x000000002201c526 SFlash_Cache_Flush + 0x000000002201c530 SFlash_Cache_Read_Enable + 0x000000002201c53a SFlash_Cache_Hit_Count_Get + 0x000000002201c544 SFlash_Cache_Miss_Count_Get + 0x000000002201c54e SFlash_Cache_Read_Disable + 0x000000002201c558 SFlash_Read + 0x000000002201c562 SFlash_Read_Reg_With_Cmd + 0x000000002201c56c SFlash_Write_Reg_With_Cmd + 0x000000002201c576 SF_Cfg_Init_Ext_Flash_Gpio + 0x000000002201c580 SF_Cfg_Init_Internal_Flash_Gpio + 0x000000002201c58a SF_Cfg_Deinit_Ext_Flash_Gpio + 0x000000002201c594 SF_Cfg_Restore_GPIO17_Fun + 0x000000002201c59e SF_Cfg_Get_Flash_Cfg_Need_Lock + 0x000000002201c5a8 SF_Cfg_Init_Flash_Gpio + 0x000000002201c5b2 SF_Cfg_Flash_Identify + 0x000000002201c5bc SF_Ctrl_Enable + 0x000000002201c5c6 SF_Ctrl_Select_Pad + 0x000000002201c5d0 SF_Ctrl_Set_Owner + 0x000000002201c5da SF_Ctrl_Disable + 0x000000002201c5e4 SF_Ctrl_AES_Enable_BE + 0x000000002201c5ee SF_Ctrl_AES_Enable_LE + 0x000000002201c5f8 SF_Ctrl_AES_Set_Region + 0x000000002201c602 SF_Ctrl_AES_Set_Key + 0x000000002201c60c SF_Ctrl_AES_Set_Key_BE + 0x000000002201c616 SF_Ctrl_AES_Set_IV + 0x000000002201c620 SF_Ctrl_AES_Set_IV_BE + 0x000000002201c62a SF_Ctrl_AES_Enable + 0x000000002201c634 SF_Ctrl_AES_Disable + 0x000000002201c63e SF_Ctrl_Set_Flash_Image_Offset + 0x000000002201c648 SF_Ctrl_Get_Flash_Image_Offset + 0x000000002201c652 SF_Ctrl_Select_Clock + 0x000000002201c65c SF_Ctrl_SendCmd + 0x000000002201c666 SF_Ctrl_Icache_Set + 0x000000002201c670 SF_Ctrl_Icache2_Set + 0x000000002201c67a SF_Ctrl_GetBusyState + 0x000000002201c684 SF_Ctrl_Is_AES_Enable + 0x000000002201c68e SF_Ctrl_Get_Clock_Delay + 0x000000002201c698 SF_Ctrl_Set_Clock_Delay + 0x000000002201c6a2 XIP_SFlash_State_Save + 0x000000002201c6ac XIP_SFlash_State_Restore + 0x000000002201c6b6 XIP_SFlash_Erase_Need_Lock + 0x000000002201c6c0 XIP_SFlash_Write_Need_Lock + 0x000000002201c6ca XIP_SFlash_Read_Need_Lock + 0x000000002201c6d4 XIP_SFlash_GetJedecId_Need_Lock + 0x000000002201c6de XIP_SFlash_GetDeviceId_Need_Lock + 0x000000002201c6e8 XIP_SFlash_GetUniqueId_Need_Lock + 0x000000002201c6f2 XIP_SFlash_Read_Via_Cache_Need_Lock + 0x000000002201c6fc XIP_SFlash_Read_With_Lock + 0x000000002201c706 XIP_SFlash_Write_With_Lock + 0x000000002201c710 XIP_SFlash_Erase_With_Lock + 0x000000002201c71a XIP_SFlash_Opt_Enter + 0x000000002201c724 XIP_SFlash_Opt_Exit + 0x000000002201c72e BFLB_Soft_CRC32 + .tcm_code 0x000000002201c738 0x134 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + 0x000000002201c738 SF_Cfg_Get_Flash_Cfg_Need_Lock_Ext + 0x000000002201c7f4 SF_Cfg_Flash_Identify_Ext + .tcm_code 0x000000002201c86c 0x558 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + 0x000000002201c86c SFlash_Restore_From_Powerdown + 0x000000002201c902 SFlash_RCV_Enable + 0x000000002201c9bc SFlash_Erase_Security_Register + 0x000000002201cab8 SFlash_Program_Security_Register + 0x000000002201cc46 SFlash_Read_Security_Register + .tcm_code 0x000000002201cdc4 0x47c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + 0x000000002201cdc4 XIP_SFlash_State_Restore_Ext + 0x000000002201ce0c XIP_SFlash_Erase_Need_Lock_Ext + 0x000000002201ce66 XIP_SFlash_Write_Need_Lock_Ext + 0x000000002201ceca XIP_SFlash_Read_Need_Lock_Ext + 0x000000002201cf30 XIP_SFlash_GetJedecId_Need_Lock_Ext + 0x000000002201cf86 XIP_SFlash_GetDeviceId_Need_Lock_Ext + 0x000000002201cfda XIP_SFlash_GetUniqueId_Need_Lock_Ext + 0x000000002201d038 XIP_SFlash_RCV_Enable_Need_Lock + 0x000000002201d09a XIP_SFlash_Read_With_Lock_Ext + 0x000000002201d0b0 XIP_SFlash_Write_With_Lock_Ext + 0x000000002201d0c6 XIP_SFlash_Erase_With_Lock_Ext + 0x000000002201d0e2 XIP_SFlash_RCV_Enable_With_Lock + 0x000000002201d0f8 XIP_SFlash_Init + 0x000000002201d15a XIP_SFlash_Read + 0x000000002201d1a8 XIP_SFlash_Write + 0x000000002201d1f6 XIP_SFlash_Erase + .tcm_code 0x000000002201d240 0x136 out/Examples/BLSP_Boot2/blsp_common.o + 0x000000002201d240 BLSP_Boot2_Jump_Entry + .tcm_code 0x000000002201d376 0x16 out/Examples/BLSP_Boot2/blsp_media_boot.o + 0x000000002201d376 BLSP_MediaBoot_Read + .tcm_code 0x000000002201d38c 0x1f8 out/Examples/BLSP_Boot2/blsp_port.o + 0x000000002201d38c BLSP_Sboot_Finish + 0x000000002201d39c BLSP_Boot2_Get_Clk_Cfg + 0x000000002201d3b8 BLSP_Boot2_Get_Efuse_Cfg + 0x000000002201d416 BLSP_Boot2_Releae_Other_CPU + 0x000000002201d418 BLSP_Boot2_Update_System_Flash_Clk + 0x000000002201d41a BLSP_Boot2_Set_Encrypt + 0x000000002201d48c BLSP_Boot2_Set_Cache + 0x000000002201d528 BLSP_Boot2_Get_TX_GPIO + 0x000000002201d532 BLSP_Boot2_Get_UART_Port + 0x000000002201d53c BLSP_Boot2_Get_Feature_Flag + 0x000000002201d55c BLSP_Boot2_Get_Log_Disable_Flag + 0x000000002201d566 BLSP_Boot2_8M_Support_Flag + 0x000000002201d570 BLSP_Boot2_Dump_Critical_Flag + 0x000000002201d57a BLSP_Boot2_Get_Baudrate + *(.tcm_const) + .tcm_const 0x000000002201d584 0x1bc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + *(.sclock_rlt_code) + .sclock_rlt_code + 0x000000002201d740 0x140 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + 0x000000002201d740 AON_Power_On_MBG + 0x000000002201d74a AON_Power_Off_MBG + 0x000000002201d754 AON_Power_On_XTAL + 0x000000002201d75e AON_Set_Xtal_CapCode + 0x000000002201d768 AON_Get_Xtal_CapCode + 0x000000002201d772 AON_Power_Off_XTAL + 0x000000002201d77c EF_Ctrl_Get_Trim_Parity + 0x000000002201d786 EF_Ctrl_Read_RC32M_Trim + 0x000000002201d790 EF_Ctrl_Read_RC32K_Trim + 0x000000002201d79a GLB_Get_Root_CLK_Sel + 0x000000002201d7a4 GLB_Set_System_CLK_Div + 0x000000002201d7ae GLB_Get_BCLK_Div + 0x000000002201d7b8 GLB_Get_HCLK_Div + 0x000000002201d7c2 Update_SystemCoreClockWith_XTAL + 0x000000002201d7cc GLB_Set_System_CLK + 0x000000002201d7d6 System_Core_Clock_Update_From_RC32M + 0x000000002201d7e0 GLB_Set_SF_CLK + 0x000000002201d7ea GLB_Set_PKA_CLK_Sel + 0x000000002201d7f4 HBN_32K_Sel + 0x000000002201d7fe HBN_Set_ROOT_CLK_Sel + 0x000000002201d808 HBN_Power_On_Xtal_32K + 0x000000002201d812 HBN_Power_Off_Xtal_32K + 0x000000002201d81c HBN_Trim_RC32K + 0x000000002201d826 PDS_Trim_RC32M + 0x000000002201d830 PDS_Select_RC32M_As_PLL_Ref + 0x000000002201d83a PDS_Select_XTAL_As_PLL_Ref + 0x000000002201d844 PDS_Power_On_PLL + 0x000000002201d84e PDS_Enable_PLL_All_Clks + 0x000000002201d858 PDS_Disable_PLL_All_Clks + 0x000000002201d862 PDS_Enable_PLL_Clk + 0x000000002201d86c PDS_Disable_PLL_Clk + 0x000000002201d876 PDS_Power_Off_PLL + *(.sclock_rlt_const) + *bl602_romapi.o(.text) + *bl602_romapi.o(.text.*) + *bl602_romapi.o(.rodata) + *bl602_romapi.o(.rodata.*) + *bl602_romapi.o(.srodata) + *bl602_romapi.o(.srodata.*) + 0x000000002201d880 . = ALIGN (0x4) + 0x000000002201d880 __tcm_code_end__ = . + 0x000000002300a718 __dtcm_load_addr = (__itcm_load_addr + SIZEOF (.itcm_region)) + +.rela.dyn 0x000000002201d880 0x0 load address 0x000000002300a718 + .rela.tcm_code + 0x000000002201d880 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rela.text.PtTable_Flash_Read + 0x000000002201d880 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rela.text.PtTable_Flash_Write + 0x000000002201d880 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rela.text.PtTable_Flash_Erase + 0x000000002201d880 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rela.text.BLSP_Boot2_Deal_One_FW + 0x000000002201d880 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rela.text.startup.main + 0x000000002201d880 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rela.text.BLSP_Boot2_Fw_Decompress + 0x000000002201d880 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rela.text.metal.init.enter + 0x000000002201d880 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rela.text.start_load + 0x000000002201d880 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rela.init 0x000000002201d880 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + +.dtcm_region 0x0000000042020000 0x0 load address 0x000000002300a718 + 0x0000000042020000 . = ALIGN (0x4) + 0x0000000042020000 __tcm_data_start__ = . + *(.tcm_data) + 0x0000000042020000 . = ALIGN (0x4) + 0x0000000042020000 __tcm_data_end__ = . + +.stack_dummy 0x0000000042020000 0x400 + 0x0000000042020000 . = ALIGN (0x4) + 0x0000000042020400 . = (. + StackSize) + *fill* 0x0000000042020000 0x400 + 0x0000000042020400 . = ALIGN (0x4) + 0x000000004202c000 __StackTop = (ORIGIN (dtcm_memory) + LENGTH (dtcm_memory)) + 0x000000004202bc00 __StackLimit = (__StackTop - SIZEOF (.stack_dummy)) + 0x0000000000000001 ASSERT ((__StackLimit >= __tcm_data_end__), region RAM overflowed with stack) + 0x000000002300a718 __system_ram_load_addr = (__dtcm_load_addr + SIZEOF (.dtcm_region)) + +.system_ram_data_region + 0x000000004202c000 0x1080 load address 0x000000002300a718 + 0x000000004202c000 . = ALIGN (0x4) + 0x000000004202c000 __system_ram_data_start__ = . + *(.system_ram) + .system_ram 0x000000004202c000 0x1000 out/Examples/BLSP_Boot2/blsp_boot2.o + 0x000000004202c000 boot2ReadBuf + .system_ram 0x000000004202d000 0x80 out/Examples/BLSP_Boot2/blsp_boot_parser.o + 0x000000004202d080 . = ALIGN (0x4) + 0x000000004202d080 __system_ram_data_end__ = . + 0x000000002300b798 __ram_load_addr = (__system_ram_load_addr + SIZEOF (.system_ram_data_region)) + +RAM_DATA 0x000000004202d080 0x34 load address 0x000000002300b798 + 0x000000004202d080 . = ALIGN (0x4) + 0x000000004202d080 __ram_data_start__ = . + 0x000000004202d880 PROVIDE (__global_pointer$ = (. + 0x800)) + *(.data) + *(.data.*) + .data.uart_if_cfg + 0x000000004202d080 0x10 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .data.bootCpuCfg + 0x000000004202d090 0x18 out/Examples/BLSP_Boot2/blsp_boot2.o + 0x000000004202d090 bootCpuCfg + *(.sdata) + *(.sdata.*) + .sdata.index.8437 + 0x000000004202d0a8 0x1 out/BSP_Common/partition/partition.o + .sdata.debug_uart_irq + 0x000000004202d0a9 0x1 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + *fill* 0x000000004202d0aa 0x2 + .sdata.uart_if_fifocfg + 0x000000004202d0ac 0x4 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .sdata.boot2Flag.9408 + 0x000000004202d0b0 0x1 out/Examples/BLSP_Boot2/blsp_port.o + *(.sdata2) + *(.sdata2.*) + 0x000000004202d0b4 . = ALIGN (0x4) + *fill* 0x000000004202d0b1 0x3 + 0x000000004202d0b4 __ram_data_end__ = . + +.bss 0x000000004202d0b4 0x89f8 load address 0x000000002300b7cc + 0x000000004202d0b4 . = ALIGN (0x4) + 0x000000004202d0b4 __bss_start__ = . + *(.bss*) + .bss.__Interrupt_Handlers + 0x000000004202d0b4 0x140 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + 0x000000004202d0b4 __Interrupt_Handlers + .bss.uartIntCbfArra + 0x000000004202d1f4 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .bss.flashCfg 0x000000004202d234 0x54 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .bss.print_buf.8828 + 0x000000004202d288 0x80 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .bss.uartBuf 0x000000004202d308 0x40 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .bss.uartRB 0x000000004202d348 0x20 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .bss.image_cfg + 0x000000004202d368 0x2c out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .bss.img_ctrl 0x000000004202d394 0x8 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .bss.segment_hdr + 0x000000004202d39c 0x10 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .bss.eflash_loader_cmd_ack_buf + 0x000000004202d3ac 0x40 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + 0x000000004202d3ac eflash_loader_cmd_ack_buf + .bss.eflash_loader_readbuf + 0x000000004202d3ec 0x8010 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + 0x000000004202d3ec eflash_loader_readbuf + .bss.bootImgCfg + 0x00000000420353fc 0x5c0 out/Examples/BLSP_Boot2/blsp_boot2.o + 0x00000000420353fc bootImgCfg + .bss.efuseCfg 0x00000000420359bc 0x50 out/Examples/BLSP_Boot2/blsp_boot2.o + 0x00000000420359bc efuseCfg + .bss.flashCfg 0x0000000042035a0c 0x54 out/Examples/BLSP_Boot2/blsp_boot2.o + 0x0000000042035a0c flashCfg + .bss.shaCtx 0x0000000042035a60 0x14 out/Examples/BLSP_Boot2/blsp_boot_parser.o + 0x0000000042035a60 shaCtx + *(.sbss*) + .sbss.PtTable_Flash_Erase + 0x0000000042035a74 0x4 out/BSP_Common/partition/partition.o + 0x0000000042035a74 PtTable_Flash_Erase + .sbss.PtTable_Flash_Read + 0x0000000042035a78 0x4 out/BSP_Common/partition/partition.o + 0x0000000042035a78 PtTable_Flash_Read + .sbss.PtTable_Flash_Write + 0x0000000042035a7c 0x4 out/BSP_Common/partition/partition.o + 0x0000000042035a7c PtTable_Flash_Write + .sbss.bufsize 0x0000000042035a80 0x4 out/BSP_Common/xz/xz_port.o + .sbss.mallocBuf + 0x0000000042035a84 0x4 out/BSP_Common/xz/xz_port.o + .sbss.malloced + 0x0000000042035a88 0x4 out/BSP_Common/xz/xz_port.o + .sbss.aesEnable + 0x0000000042035a8c 0x1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .sbss.debug_uartId + 0x0000000042035a8d 0x1 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + *fill* 0x0000000042035a8e 0x2 + .sbss.init_flag + 0x0000000042035a90 0x4 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .sbss.uart_dbg_disable + 0x0000000042035a94 0x1 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + *fill* 0x0000000042035a95 0x3 + .sbss.rx_buf_index + 0x0000000042035a98 0x4 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + 0x0000000042035a98 rx_buf_index + .sbss.rx_buf_len + 0x0000000042035a9c 0x4 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + 0x0000000042035a9c rx_buf_len + .sbss.cpuCount + 0x0000000042035aa0 0x1 out/Examples/BLSP_Boot2/blsp_boot2.o + 0x0000000042035aa0 cpuCount + .sbss.psMode 0x0000000042035aa1 0x1 out/Examples/BLSP_Boot2/blsp_boot2.o + 0x0000000042035aa1 psMode + *fill* 0x0000000042035aa2 0x2 + .sbss.userHashIgnored + 0x0000000042035aa4 0x4 out/Examples/BLSP_Boot2/blsp_boot2.o + 0x0000000042035aa4 userHashIgnored + .sbss.pParameter.9346 + 0x0000000042035aa8 0x4 out/Examples/BLSP_Boot2/blsp_port.o + *(COMMON) + 0x0000000042035aac . = ALIGN (0x4) + 0x0000000042035aac __bss_end__ = . + +.noinit_data 0x0000000042035aac 0x11000 load address 0x00000000230141c4 + 0x0000000042035aac . = ALIGN (0x4) + 0x0000000042035aac __noinit_data_start__ = . + *(.noinit_data*) + .noinit_data 0x0000000042035aac 0x11000 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + 0x0000000042046aac . = ALIGN (0x4) + 0x0000000042046aac __noinit_data_end__ = . + +.heap 0x0000000042046aac 0x0 + 0x0000000042046aac . = ALIGN (0x4) + 0x0000000042046aac __HeapBase = . + *(.heap*) + 0x0000000042046aac . = ALIGN (0x4) + 0x0000000042046aac __HeapLimit = . +OUTPUT(out/Examples/BLSP_Boot2/blsp_boot2.elf elf32-littleriscv) + +.debug_info 0x0000000000000000 0x287e1 + .debug_info 0x0000000000000000 0x32e1 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_info 0x00000000000032e1 0xf8 out/BSP_Common/libc/memcmp.o + .debug_info 0x00000000000033d9 0xf7 out/BSP_Common/libc/memcpy.o + .debug_info 0x00000000000034d0 0xd7 out/BSP_Common/libc/memset.o + .debug_info 0x00000000000035a7 0xbf out/BSP_Common/libc/strlen.o + .debug_info 0x0000000000003666 0x525 out/BSP_Common/libc/vsnprintf.o + .debug_info 0x0000000000003b8b 0x8f9 out/BSP_Common/partition/partition.o + .debug_info 0x0000000000004484 0xa04 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_info 0x0000000000004e88 0x1dd out/BSP_Common/soft_crc/softcrc.o + .debug_info 0x0000000000005065 0x11b out/BSP_Common/xz/xz_crc32.o + .debug_info 0x0000000000005180 0x1b15 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_info 0x0000000000006c95 0xce6 out/BSP_Common/xz/xz_dec_stream.o + .debug_info 0x000000000000797b 0x18b out/BSP_Common/xz/xz_port.o + .debug_info 0x0000000000007b06 0x577 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_info 0x000000000000807d 0x1a16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_info 0x0000000000009a93 0x179b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_info 0x000000000000b22e 0x1a5a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_info 0x000000000000cc88 0x3b0d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_info 0x0000000000010795 0x4566 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_info 0x0000000000014cfb 0x86a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_info 0x0000000000015565 0x104b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_info 0x00000000000165b0 0x1481 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_info 0x0000000000017a31 0x1297 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_info 0x0000000000018cc8 0x14ec out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_info 0x000000000001a1b4 0x151e out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_info 0x000000000001b6d2 0x632 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_info 0x000000000001bd04 0x1406 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_info 0x000000000001d10a 0x1dbc out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_info 0x000000000001eec6 0x10ca out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_info 0x000000000001ff90 0x1655 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_info 0x00000000000215e5 0xbe5 out/Examples/BLSP_Boot2/blsp_common.o + .debug_info 0x00000000000221ca 0x127a out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_info 0x0000000000023444 0x1aa3 out/Examples/BLSP_Boot2/blsp_port.o + .debug_info 0x0000000000024ee7 0x22 out/startup/GCC/entry.o + .debug_info 0x0000000000024f09 0x1cb out/startup/GCC/start_load.o + .debug_info 0x00000000000250d4 0x24e out/startup/interrupt.o + .debug_info 0x0000000000025322 0x3da out/startup/system_bl602.o + .debug_info 0x00000000000256fc 0x1276 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_info 0x0000000000026972 0x12d4 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .debug_info 0x0000000000027c46 0xb9b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_abbrev 0x0000000000000000 0x5f4c + .debug_abbrev 0x0000000000000000 0x326 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_abbrev 0x0000000000000326 0xa2 out/BSP_Common/libc/memcmp.o + .debug_abbrev 0x00000000000003c8 0xba out/BSP_Common/libc/memcpy.o + .debug_abbrev 0x0000000000000482 0x9d out/BSP_Common/libc/memset.o + .debug_abbrev 0x000000000000051f 0x8c out/BSP_Common/libc/strlen.o + .debug_abbrev 0x00000000000005ab 0x1f4 out/BSP_Common/libc/vsnprintf.o + .debug_abbrev 0x000000000000079f 0x292 out/BSP_Common/partition/partition.o + .debug_abbrev 0x0000000000000a31 0x2a0 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_abbrev 0x0000000000000cd1 0x109 out/BSP_Common/soft_crc/softcrc.o + .debug_abbrev 0x0000000000000dda 0xcb out/BSP_Common/xz/xz_crc32.o + .debug_abbrev 0x0000000000000ea5 0x3a0 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_abbrev 0x0000000000001245 0x359 out/BSP_Common/xz/xz_dec_stream.o + .debug_abbrev 0x000000000000159e 0x111 out/BSP_Common/xz/xz_port.o + .debug_abbrev 0x00000000000016af 0x191 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_abbrev 0x0000000000001840 0x2fa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_abbrev 0x0000000000001b3a 0x1d6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_abbrev 0x0000000000001d10 0x359 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_abbrev 0x0000000000002069 0x2ab out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_abbrev 0x0000000000002314 0x44f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_abbrev 0x0000000000002763 0x179 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_abbrev 0x00000000000028dc 0x202 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_abbrev 0x0000000000002ade 0x2ba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_abbrev 0x0000000000002d98 0x236 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_abbrev 0x0000000000002fce 0x3e7 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_abbrev 0x00000000000033b5 0x461 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_abbrev 0x0000000000003816 0x24a out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_abbrev 0x0000000000003a60 0x474 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_abbrev 0x0000000000003ed4 0x3f8 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_abbrev 0x00000000000042cc 0x31b out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_abbrev 0x00000000000045e7 0x3af out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_abbrev 0x0000000000004996 0x2d5 out/Examples/BLSP_Boot2/blsp_common.o + .debug_abbrev 0x0000000000004c6b 0x35d out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_abbrev 0x0000000000004fc8 0x45e out/Examples/BLSP_Boot2/blsp_port.o + .debug_abbrev 0x0000000000005426 0x12 out/startup/GCC/entry.o + .debug_abbrev 0x0000000000005438 0x94 out/startup/GCC/start_load.o + .debug_abbrev 0x00000000000054cc 0x130 out/startup/interrupt.o + .debug_abbrev 0x00000000000055fc 0x199 out/startup/system_bl602.o + .debug_abbrev 0x0000000000005795 0x2d5 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_abbrev 0x0000000000005a6a 0x2f1 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .debug_abbrev 0x0000000000005d5b 0x1f1 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_loc 0x0000000000000000 0x1a20a + .debug_loc 0x0000000000000000 0xb4a out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_loc 0x0000000000000b4a 0xb1 out/BSP_Common/libc/memcmp.o + .debug_loc 0x0000000000000bfb 0x6f out/BSP_Common/libc/memcpy.o + .debug_loc 0x0000000000000c6a 0x9a out/BSP_Common/libc/memset.o + .debug_loc 0x0000000000000d04 0x71 out/BSP_Common/libc/strlen.o + .debug_loc 0x0000000000000d75 0x183c out/BSP_Common/libc/vsnprintf.o + .debug_loc 0x00000000000025b1 0x95b out/BSP_Common/partition/partition.o + .debug_loc 0x0000000000002f0c 0xa81 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_loc 0x000000000000398d 0x1f5 out/BSP_Common/soft_crc/softcrc.o + .debug_loc 0x0000000000003b82 0x8c out/BSP_Common/xz/xz_crc32.o + .debug_loc 0x0000000000003c0e 0x173e out/BSP_Common/xz/xz_dec_lzma2.o + .debug_loc 0x000000000000534c 0x769 out/BSP_Common/xz/xz_dec_stream.o + .debug_loc 0x0000000000005ab5 0x58 out/BSP_Common/xz/xz_port.o + .debug_loc 0x0000000000005b0d 0x290 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_loc 0x0000000000005d9d 0x22a9 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_loc 0x0000000000008046 0x1743 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_loc 0x0000000000009789 0x121c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_loc 0x000000000000a9a5 0x1cbf out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_loc 0x000000000000c664 0x62b2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_loc 0x0000000000012916 0x205 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_loc 0x0000000000012b1b 0x8fd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_loc 0x0000000000013418 0x12f3 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_loc 0x000000000001470b 0xaef out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_loc 0x00000000000151fa 0x848 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_loc 0x0000000000015a42 0x93a out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_loc 0x000000000001637c 0x19d out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_loc 0x0000000000016519 0x698 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_loc 0x0000000000016bb1 0x9bf out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_loc 0x0000000000017570 0x2d6 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_loc 0x0000000000017846 0x758 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_loc 0x0000000000017f9e 0x165 out/Examples/BLSP_Boot2/blsp_common.o + .debug_loc 0x0000000000018103 0x684 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_loc 0x0000000000018787 0x356 out/Examples/BLSP_Boot2/blsp_port.o + .debug_loc 0x0000000000018add 0x73 out/startup/GCC/start_load.o + .debug_loc 0x0000000000018b50 0x122 out/startup/interrupt.o + .debug_loc 0x0000000000018c72 0x5f out/startup/system_bl602.o + .debug_loc 0x0000000000018cd1 0xbd0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_loc 0x00000000000198a1 0x969 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + +.debug_aranges 0x0000000000000000 0x17f0 + .debug_aranges + 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_aranges + 0x0000000000000088 0x20 out/BSP_Common/libc/memcmp.o + .debug_aranges + 0x00000000000000a8 0x20 out/BSP_Common/libc/memcpy.o + .debug_aranges + 0x00000000000000c8 0x20 out/BSP_Common/libc/memset.o + .debug_aranges + 0x00000000000000e8 0x20 out/BSP_Common/libc/strlen.o + .debug_aranges + 0x0000000000000108 0x20 out/BSP_Common/libc/vsnprintf.o + .debug_aranges + 0x0000000000000128 0x58 out/BSP_Common/partition/partition.o + .debug_aranges + 0x0000000000000180 0xa0 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_aranges + 0x0000000000000220 0x28 out/BSP_Common/soft_crc/softcrc.o + .debug_aranges + 0x0000000000000248 0x28 out/BSP_Common/xz/xz_crc32.o + .debug_aranges + 0x0000000000000270 0x50 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_aranges + 0x00000000000002c0 0x50 out/BSP_Common/xz/xz_dec_stream.o + .debug_aranges + 0x0000000000000310 0x30 out/BSP_Common/xz/xz_port.o + .debug_aranges + 0x0000000000000340 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_aranges + 0x0000000000000378 0x178 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_aranges + 0x00000000000004f0 0x200 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_aranges + 0x00000000000006f0 0x198 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_aranges + 0x0000000000000888 0x550 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_aranges + 0x0000000000000dd8 0x250 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_aranges + 0x0000000000001028 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_aranges + 0x0000000000001050 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_aranges + 0x0000000000001090 0x128 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_aranges + 0x00000000000011b8 0x98 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_aranges + 0x0000000000001250 0xf0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_aranges + 0x0000000000001340 0x78 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_aranges + 0x00000000000013b8 0x48 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_aranges + 0x0000000000001400 0x78 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_aranges + 0x0000000000001478 0x48 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_aranges + 0x00000000000014c0 0x30 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_aranges + 0x00000000000014f0 0x48 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_aranges + 0x0000000000001538 0x38 out/Examples/BLSP_Boot2/blsp_common.o + .debug_aranges + 0x0000000000001570 0x28 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_aranges + 0x0000000000001598 0x118 out/Examples/BLSP_Boot2/blsp_port.o + .debug_aranges + 0x00000000000016b0 0x30 out/startup/GCC/entry.o + .debug_aranges + 0x00000000000016e0 0x20 out/startup/GCC/start_load.o + .debug_aranges + 0x0000000000001700 0x68 out/startup/interrupt.o + .debug_aranges + 0x0000000000001768 0x30 out/startup/system_bl602.o + .debug_aranges + 0x0000000000001798 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_aranges + 0x00000000000017b8 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .debug_aranges + 0x00000000000017d8 0x18 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_ranges 0x0000000000000000 0x2bd8 + .debug_ranges 0x0000000000000000 0xa8 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_ranges 0x00000000000000a8 0x10 out/BSP_Common/libc/memcmp.o + .debug_ranges 0x00000000000000b8 0x10 out/BSP_Common/libc/memcpy.o + .debug_ranges 0x00000000000000c8 0x10 out/BSP_Common/libc/memset.o + .debug_ranges 0x00000000000000d8 0x10 out/BSP_Common/libc/strlen.o + .debug_ranges 0x00000000000000e8 0x90 out/BSP_Common/libc/vsnprintf.o + .debug_ranges 0x0000000000000178 0x48 out/BSP_Common/partition/partition.o + .debug_ranges 0x00000000000001c0 0xd8 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_ranges 0x0000000000000298 0x18 out/BSP_Common/soft_crc/softcrc.o + .debug_ranges 0x00000000000002b0 0x18 out/BSP_Common/xz/xz_crc32.o + .debug_ranges 0x00000000000002c8 0x618 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_ranges 0x00000000000008e0 0x290 out/BSP_Common/xz/xz_dec_stream.o + .debug_ranges 0x0000000000000b70 0x20 out/BSP_Common/xz/xz_port.o + .debug_ranges 0x0000000000000b90 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_ranges 0x0000000000000bb8 0x278 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_ranges 0x0000000000000e30 0x1f0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_ranges 0x0000000000001020 0x238 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_ranges 0x0000000000001258 0x540 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_ranges 0x0000000000001798 0x6f0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_ranges 0x0000000000001e88 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_ranges 0x0000000000001ea0 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_ranges 0x0000000000001ed0 0x168 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_ranges 0x0000000000002038 0x130 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_ranges 0x0000000000002168 0x188 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_ranges 0x00000000000022f0 0xf8 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_ranges 0x00000000000023e8 0x50 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_ranges 0x0000000000002438 0x130 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_ranges 0x0000000000002568 0x100 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_ranges 0x0000000000002668 0x20 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_ranges 0x0000000000002688 0x58 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_ranges 0x00000000000026e0 0x40 out/Examples/BLSP_Boot2/blsp_common.o + .debug_ranges 0x0000000000002720 0xd0 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_ranges 0x00000000000027f0 0x168 out/Examples/BLSP_Boot2/blsp_port.o + .debug_ranges 0x0000000000002958 0x28 out/startup/GCC/entry.o + .debug_ranges 0x0000000000002980 0x10 out/startup/GCC/start_load.o + .debug_ranges 0x0000000000002990 0x58 out/startup/interrupt.o + .debug_ranges 0x00000000000029e8 0x20 out/startup/system_bl602.o + .debug_ranges 0x0000000000002a08 0x100 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_ranges 0x0000000000002b08 0xd0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + +.debug_macro 0x0000000000000000 0xd874 + .debug_macro 0x0000000000000000 0x24b out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x000000000000024b 0x1c out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000267 0x36 out/BSP_Common/libc/memcmp.o + .debug_macro 0x000000000000029d 0x36 out/BSP_Common/libc/memcpy.o + .debug_macro 0x00000000000002d3 0x36 out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000000309 0x36 out/BSP_Common/libc/strlen.o + .debug_macro 0x000000000000033f 0x97 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x00000000000003d6 0x1cc out/BSP_Common/partition/partition.o + .debug_macro 0x00000000000005a2 0x2e out/BSP_Common/partition/partition.o + .debug_macro 0x00000000000005d0 0x1b7 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000787 0x1b1 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000938 0x84 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x00000000000009bc 0x1c out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x00000000000009d8 0x25 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x00000000000009fd 0x46 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000a43 0x2e out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000a71 0x93 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000b04 0xd7 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000bdb 0x8d out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000c68 0x40 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000ca8 0x65 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000d0d 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000dc7 0x365 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x000000000000112c 0xef out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x000000000000121b 0xd61 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000001f7c 0x99c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000002918 0x197 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000002aaf 0x183 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000002c32 0xae6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000003718 0x1aa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x00000000000038c2 0x4cb out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000003d8d 0xf2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000003e7f 0x2c95 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000006b14 0x1c6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000006cda 0x104 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000006dde 0x18d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000006f6b 0xa68 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x00000000000079d3 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000007a2b 0x112 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000007b3d 0x206b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000009ba8 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000009c12 0x21a out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000009e2c 0x40 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000009e6c 0x2b0 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x000000000000a11c 0x79c out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x000000000000a8b8 0xdc out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x000000000000a994 0x64 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x000000000000a9f8 0x28 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_macro 0x000000000000aa20 0x2e6 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_macro 0x000000000000ad06 0x1df out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x000000000000aee5 0xe2 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_macro 0x000000000000afc7 0x295 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x000000000000b25c 0x8d3 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x000000000000bb2f 0x342 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x000000000000be71 0x28 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x000000000000be99 0x76 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x000000000000bf0f 0x34 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x000000000000bf43 0x1c out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x000000000000bf5f 0xa6e out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_macro 0x000000000000c9cd 0x278 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x000000000000cc45 0x70 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_macro 0x000000000000ccb5 0x26c out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x000000000000cf21 0x16 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_macro 0x000000000000cf37 0x256 out/Examples/BLSP_Boot2/blsp_common.o + .debug_macro 0x000000000000d18d 0x274 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_macro 0x000000000000d401 0x256 out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x000000000000d657 0x1c out/Examples/BLSP_Boot2/blsp_port.o + .debug_macro 0x000000000000d673 0x52 out/startup/GCC/start_load.o + .debug_macro 0x000000000000d6c5 0x2c out/startup/interrupt.o + .debug_macro 0x000000000000d6f1 0x183 out/startup/system_bl602.o + +.debug_line 0x0000000000000000 0x2ae59 + .debug_line 0x0000000000000000 0x14a0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_line 0x00000000000014a0 0x116 out/BSP_Common/libc/memcmp.o + .debug_line 0x00000000000015b6 0xf6 out/BSP_Common/libc/memcpy.o + .debug_line 0x00000000000016ac 0xe8 out/BSP_Common/libc/memset.o + .debug_line 0x0000000000001794 0xd4 out/BSP_Common/libc/strlen.o + .debug_line 0x0000000000001868 0x16cb out/BSP_Common/libc/vsnprintf.o + .debug_line 0x0000000000002f33 0xdce out/BSP_Common/partition/partition.o + .debug_line 0x0000000000003d01 0x13fd out/BSP_Common/ring_buffer/ring_buffer.o + .debug_line 0x00000000000050fe 0x552 out/BSP_Common/soft_crc/softcrc.o + .debug_line 0x0000000000005650 0x18a out/BSP_Common/xz/xz_crc32.o + .debug_line 0x00000000000057da 0x36ed out/BSP_Common/xz/xz_dec_lzma2.o + .debug_line 0x0000000000008ec7 0x1757 out/BSP_Common/xz/xz_dec_stream.o + .debug_line 0x000000000000a61e 0x283 out/BSP_Common/xz/xz_port.o + .debug_line 0x000000000000a8a1 0x6cc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_line 0x000000000000af6d 0x2e4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_line 0x000000000000ddbc 0x29b3 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_line 0x000000000001076f 0x2031 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_line 0x00000000000127a0 0x1526 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_line 0x0000000000013cc6 0x6c16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_line 0x000000000001a8dc 0x6dc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_line 0x000000000001afb8 0x1337 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_line 0x000000000001c2ef 0x1ea5 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_line 0x000000000001e194 0xba6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_line 0x000000000001ed3a 0x171c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_line 0x0000000000020456 0x12ac out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_line 0x0000000000021702 0xb7b out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_line 0x000000000002227d 0xe96 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_line 0x0000000000023113 0x1322 out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_line 0x0000000000024435 0xb24 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_line 0x0000000000024f59 0xfab out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_line 0x0000000000025f04 0xa37 out/Examples/BLSP_Boot2/blsp_common.o + .debug_line 0x000000000002693b 0xef4 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_line 0x000000000002782f 0x1127 out/Examples/BLSP_Boot2/blsp_port.o + .debug_line 0x0000000000028956 0x15e out/startup/GCC/entry.o + .debug_line 0x0000000000028ab4 0x36c out/startup/GCC/start_load.o + .debug_line 0x0000000000028e20 0x2d7 out/startup/interrupt.o + .debug_line 0x00000000000290f7 0x631 out/startup/system_bl602.o + .debug_line 0x0000000000029728 0x9c9 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_line 0x000000000002a0f1 0xa8f /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .debug_line 0x000000000002ab80 0x2d9 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_str 0x0000000000000000 0xa37fe + .debug_str 0x0000000000000000 0x7f6d9 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x7f859 (size before relaxing) + .debug_str 0x000000000007f6d9 0x49 out/BSP_Common/libc/memcmp.o + 0x2e8b (size before relaxing) + .debug_str 0x000000000007f722 0x1d out/BSP_Common/libc/memcpy.o + 0x2e90 (size before relaxing) + .debug_str 0x000000000007f73f 0x1d out/BSP_Common/libc/memset.o + 0x2e90 (size before relaxing) + .debug_str 0x000000000007f75c 0x24 out/BSP_Common/libc/strlen.o + 0x2e90 (size before relaxing) + .debug_str 0x000000000007f780 0x1051 out/BSP_Common/libc/vsnprintf.o + 0x4077 (size before relaxing) + .debug_str 0x00000000000807d1 0x65e out/BSP_Common/partition/partition.o + 0x7f325 (size before relaxing) + .debug_str 0x0000000000080e2f 0x367 out/BSP_Common/ring_buffer/ring_buffer.o + 0x7efac (size before relaxing) + .debug_str 0x0000000000081196 0x83 out/BSP_Common/soft_crc/softcrc.o + 0x7ec59 (size before relaxing) + .debug_str 0x0000000000081219 0x32c out/BSP_Common/xz/xz_crc32.o + 0x33d7 (size before relaxing) + .debug_str 0x0000000000081545 0x9c4 out/BSP_Common/xz/xz_dec_lzma2.o + 0x3e23 (size before relaxing) + .debug_str 0x0000000000081f09 0x382 out/BSP_Common/xz/xz_dec_stream.o + 0x3941 (size before relaxing) + .debug_str 0x000000000008228b 0x46 out/BSP_Common/xz/xz_port.o + 0x32de (size before relaxing) + .debug_str 0x00000000000822d1 0x423 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + 0xacf1 (size before relaxing) + .debug_str 0x00000000000826f4 0x6593 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + 0x17259 (size before relaxing) + .debug_str 0x0000000000088c87 0x11b9 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x673df (size before relaxing) + .debug_str 0x0000000000089e40 0x1010 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + 0x672ec (size before relaxing) + .debug_str 0x000000000008ae50 0x7b7b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + 0x87d83 (size before relaxing) + .debug_str 0x00000000000929cb 0x116d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x22e79 (size before relaxing) + .debug_str 0x0000000000093b38 0x122 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + 0x84798 (size before relaxing) + .debug_str 0x0000000000093c5a 0x1c6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + 0x1db1d (size before relaxing) + .debug_str 0x0000000000093e20 0x5cc3 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x6c3e1 (size before relaxing) + .debug_str 0x0000000000099ae3 0x23d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + 0x1c077 (size before relaxing) + .debug_str 0x0000000000099d20 0x624 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x853f0 (size before relaxing) + .debug_str 0x000000000009a344 0x1cc9 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + 0x8675f (size before relaxing) + .debug_str 0x000000000009c00d 0xb96 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + 0x854c0 (size before relaxing) + .debug_str 0x000000000009cba3 0x434 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + 0x6da23 (size before relaxing) + .debug_str 0x000000000009cfd7 0x545e out/Examples/BLSP_Boot2/blsp_boot2.o + 0x8a47f (size before relaxing) + .debug_str 0x00000000000a2435 0x6a out/Examples/BLSP_Boot2/blsp_boot_decompress.o + 0x84a52 (size before relaxing) + .debug_str 0x00000000000a249f 0x1bf out/Examples/BLSP_Boot2/blsp_boot_parser.o + 0x8473e (size before relaxing) + .debug_str 0x00000000000a265e 0xc1 out/Examples/BLSP_Boot2/blsp_common.o + 0x8441a (size before relaxing) + .debug_str 0x00000000000a271f 0xfd out/Examples/BLSP_Boot2/blsp_media_boot.o + 0x846b2 (size before relaxing) + .debug_str 0x00000000000a281c 0x364 out/Examples/BLSP_Boot2/blsp_port.o + 0x8537e (size before relaxing) + .debug_str 0x00000000000a2b80 0x58 out/startup/GCC/entry.o + 0x84 (size before relaxing) + .debug_str 0x00000000000a2bd8 0x1ff out/startup/GCC/start_load.o + 0x8b87 (size before relaxing) + .debug_str 0x00000000000a2dd7 0xcf out/startup/interrupt.o + 0x32eb (size before relaxing) + .debug_str 0x00000000000a2ea6 0xd6 out/startup/system_bl602.o + 0x66595 (size before relaxing) + .debug_str 0x00000000000a2f7c 0x7e2 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + 0x8db (size before relaxing) + .debug_str 0x00000000000a375e 0xa /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + 0x8db (size before relaxing) + .debug_str 0x00000000000a3768 0x96 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + 0x822 (size before relaxing) + +.comment 0x0000000000000000 0x32 + .comment 0x0000000000000000 0x32 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x33 (size before relaxing) + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/memcmp.o + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/memcpy.o + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/memset.o + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/strlen.o + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/vsnprintf.o + .comment 0x0000000000000032 0x33 out/BSP_Common/partition/partition.o + .comment 0x0000000000000032 0x33 out/BSP_Common/ring_buffer/ring_buffer.o + .comment 0x0000000000000032 0x33 out/BSP_Common/soft_crc/softcrc.o + .comment 0x0000000000000032 0x33 out/BSP_Common/xz/xz_crc32.o + .comment 0x0000000000000032 0x33 out/BSP_Common/xz/xz_dec_lzma2.o + .comment 0x0000000000000032 0x33 out/BSP_Common/xz/xz_dec_stream.o + .comment 0x0000000000000032 0x33 out/BSP_Common/xz/xz_port.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .comment 0x0000000000000032 0x33 out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .comment 0x0000000000000032 0x33 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .comment 0x0000000000000032 0x33 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .comment 0x0000000000000032 0x33 out/Examples/BLSP_Boot2/blsp_boot2.o + .comment 0x0000000000000032 0x33 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .comment 0x0000000000000032 0x33 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .comment 0x0000000000000032 0x33 out/Examples/BLSP_Boot2/blsp_common.o + .comment 0x0000000000000032 0x33 out/Examples/BLSP_Boot2/blsp_media_boot.o + .comment 0x0000000000000032 0x33 out/Examples/BLSP_Boot2/blsp_port.o + .comment 0x0000000000000032 0x33 out/startup/GCC/start_load.o + .comment 0x0000000000000032 0x33 out/startup/interrupt.o + .comment 0x0000000000000032 0x33 out/startup/system_bl602.o + .comment 0x0000000000000032 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + .comment 0x0000000000000032 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .comment 0x0000000000000032 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .comment 0x0000000000000032 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.riscv.attributes + 0x0000000000000000 0x2e + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/cipher_suite/bflb_ecdsa.o + .riscv.attributes + 0x000000000000002e 0x2e out/BSP_Common/libc/memcmp.o + .riscv.attributes + 0x000000000000005c 0x2e out/BSP_Common/libc/memcpy.o + .riscv.attributes + 0x000000000000008a 0x2e out/BSP_Common/libc/memset.o + .riscv.attributes + 0x00000000000000b8 0x2e out/BSP_Common/libc/strlen.o + .riscv.attributes + 0x00000000000000e6 0x2e out/BSP_Common/libc/vsnprintf.o + .riscv.attributes + 0x0000000000000114 0x2e out/BSP_Common/partition/partition.o + .riscv.attributes + 0x0000000000000142 0x2e out/BSP_Common/ring_buffer/ring_buffer.o + .riscv.attributes + 0x0000000000000170 0x2e out/BSP_Common/soft_crc/softcrc.o + .riscv.attributes + 0x000000000000019e 0x2e out/BSP_Common/xz/xz_crc32.o + .riscv.attributes + 0x00000000000001cc 0x2e out/BSP_Common/xz/xz_dec_lzma2.o + .riscv.attributes + 0x00000000000001fa 0x2e out/BSP_Common/xz/xz_dec_stream.o + .riscv.attributes + 0x0000000000000228 0x2e out/BSP_Common/xz/xz_port.o + .riscv.attributes + 0x0000000000000256 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .riscv.attributes + 0x0000000000000284 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .riscv.attributes + 0x00000000000002b2 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .riscv.attributes + 0x00000000000002e0 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .riscv.attributes + 0x000000000000030e 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .riscv.attributes + 0x000000000000033c 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .riscv.attributes + 0x000000000000036a 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .riscv.attributes + 0x0000000000000398 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .riscv.attributes + 0x00000000000003c6 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .riscv.attributes + 0x00000000000003f4 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .riscv.attributes + 0x0000000000000422 0x2e out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .riscv.attributes + 0x0000000000000450 0x2e out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .riscv.attributes + 0x000000000000047e 0x2e out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .riscv.attributes + 0x00000000000004ac 0x2e out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .riscv.attributes + 0x00000000000004da 0x2e out/Examples/BLSP_Boot2/blsp_boot2.o + .riscv.attributes + 0x0000000000000508 0x2e out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .riscv.attributes + 0x0000000000000536 0x2e out/Examples/BLSP_Boot2/blsp_boot_parser.o + .riscv.attributes + 0x0000000000000564 0x2e out/Examples/BLSP_Boot2/blsp_common.o + .riscv.attributes + 0x0000000000000592 0x2e out/Examples/BLSP_Boot2/blsp_media_boot.o + .riscv.attributes + 0x00000000000005c0 0x2e out/Examples/BLSP_Boot2/blsp_port.o + .riscv.attributes + 0x00000000000005ee 0x2e out/startup/GCC/entry.o + .riscv.attributes + 0x000000000000061c 0x2e out/startup/GCC/start_load.o + .riscv.attributes + 0x000000000000064a 0x2e out/startup/interrupt.o + .riscv.attributes + 0x0000000000000678 0x2e out/startup/system_bl602.o + .riscv.attributes + 0x00000000000006a6 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + .riscv.attributes + 0x00000000000006d4 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .riscv.attributes + 0x0000000000000702 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .riscv.attributes + 0x0000000000000730 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_frame 0x0000000000000000 0x4378 + .debug_frame 0x0000000000000000 0x278 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_frame 0x0000000000000278 0x20 out/BSP_Common/libc/memcmp.o + .debug_frame 0x0000000000000298 0x20 out/BSP_Common/libc/memcpy.o + .debug_frame 0x00000000000002b8 0x20 out/BSP_Common/libc/memset.o + .debug_frame 0x00000000000002d8 0x20 out/BSP_Common/libc/strlen.o + .debug_frame 0x00000000000002f8 0x60 out/BSP_Common/libc/vsnprintf.o + .debug_frame 0x0000000000000358 0x1bc out/BSP_Common/partition/partition.o + .debug_frame 0x0000000000000514 0x2cc out/BSP_Common/ring_buffer/ring_buffer.o + .debug_frame 0x00000000000007e0 0x30 out/BSP_Common/soft_crc/softcrc.o + .debug_frame 0x0000000000000810 0x30 out/BSP_Common/xz/xz_crc32.o + .debug_frame 0x0000000000000840 0x144 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_frame 0x0000000000000984 0x134 out/BSP_Common/xz/xz_dec_stream.o + .debug_frame 0x0000000000000ab8 0x50 out/BSP_Common/xz/xz_port.o + .debug_frame 0x0000000000000b08 0x8c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_frame 0x0000000000000b94 0x6dc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_frame 0x0000000000001270 0x40c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_frame 0x000000000000167c 0x390 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_frame 0x0000000000001a0c 0xa80 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_frame 0x000000000000248c 0x574 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_frame 0x0000000000002a00 0x7c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_frame 0x0000000000002a7c 0x15c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_frame 0x0000000000002bd8 0x290 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_frame 0x0000000000002e68 0x2dc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_frame 0x0000000000003144 0x3e4 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_frame 0x0000000000003528 0x1ac out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + .debug_frame 0x00000000000036d4 0xf0 out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + .debug_frame 0x00000000000037c4 0x1d4 out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + .debug_frame 0x0000000000003998 0xec out/Examples/BLSP_Boot2/blsp_boot2.o + .debug_frame 0x0000000000003a84 0xb8 out/Examples/BLSP_Boot2/blsp_boot_decompress.o + .debug_frame 0x0000000000003b3c 0x1b0 out/Examples/BLSP_Boot2/blsp_boot_parser.o + .debug_frame 0x0000000000003cec 0xa0 out/Examples/BLSP_Boot2/blsp_common.o + .debug_frame 0x0000000000003d8c 0x80 out/Examples/BLSP_Boot2/blsp_media_boot.o + .debug_frame 0x0000000000003e0c 0x30c out/Examples/BLSP_Boot2/blsp_port.o + .debug_frame 0x0000000000004118 0x20 out/startup/GCC/start_load.o + .debug_frame 0x0000000000004138 0x1e8 out/startup/interrupt.o + .debug_frame 0x0000000000004320 0x58 out/startup/system_bl602.o + +Cross Reference Table + +Symbol File +ADC_Channel_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_FIFO_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_FIFO_Is_Empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_FIFO_Is_Full out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Gain_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_GetIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Get_FIFO_Count out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_IntClr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_MIC_Bias_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_MIC_Bias_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Mic_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Parse_Result out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Read_FIFO out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_SET_TSVBE_HIGH out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_SET_TSVBE_LOW out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Scan_Channel_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Start out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Stop out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Trim_TSEN out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Tsen_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Vbat_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Vbat_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +AON_ACOMP_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o +AON_ACOMP_Get_Result out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o +AON_ACOMP_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o +AON_Get_Xtal_CapCode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_LowPower_Enter_PDS0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_LowPower_Exit_PDS0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_Off_BG out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_Off_LDO11_SOC out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_Off_LDO15_RF out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_Off_MBG out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_Off_SFReg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_Off_XTAL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_On_BG out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_On_LDO11_SOC out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_On_LDO15_RF out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_On_MBG out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_On_SFReg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_On_XTAL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Set_LDO11_SOC_Sstart_Delay out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o +AON_Set_Xtal_CapCode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +ASM_Delay_Us out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +BFLB_Soft_CRC16 out/BSP_Common/soft_crc/softcrc.o +BFLB_Soft_CRC32 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + out/BSP_Common/partition/partition.o +BFLB_Soft_CRC32_Table out/BSP_Common/soft_crc/softcrc.o +BL602_Delay_MS out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_common.o + out/Examples/BLSP_Boot2/blsp_boot2.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +BL602_Delay_US out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +BL602_MemCmp out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o +BL602_MemCpy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +BL602_MemCpy4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +BL602_MemCpy_Fast out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/blsp_boot2.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/ring_buffer/ring_buffer.o + out/BSP_Common/partition/partition.o +BL602_MemSet out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +BL602_MemSet4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +BLE_IRQHandler_Wrapper out/startup/interrupt.o +BLSP_Boot2_8M_Support_Flag out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Disable_Other_Cache out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Dump_Critical_Flag out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Exit out/Examples/BLSP_Boot2/blsp_common.o +BLSP_Boot2_Flush_XIP_Cache out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Get_Baudrate out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Get_CPU_Count out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Get_Clk_Cfg out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Get_Efuse_Cfg out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Get_Feature_Flag out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_common.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Get_Log_Disable_Flag out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Get_TX_GPIO out/Examples/BLSP_Boot2/blsp_port.o +BLSP_Boot2_Get_UART_Port out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Get_XIP_Offset out/Examples/BLSP_Boot2/blsp_port.o +BLSP_Boot2_Init_Sec_Eng_PKA out/Examples/BLSP_Boot2/blsp_port.o +BLSP_Boot2_Init_Timer out/Examples/BLSP_Boot2/blsp_port.o +BLSP_Boot2_Jump_Entry out/Examples/BLSP_Boot2/blsp_common.o +BLSP_Boot2_Pass_Parameter out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Releae_Other_CPU out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_common.o +BLSP_Boot2_Reset_Sec_Eng out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_common.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Set_Cache out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_common.o +BLSP_Boot2_Set_Encrypt out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_common.o +BLSP_Boot2_Show_Timer out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_media_boot.o +BLSP_Boot2_Update_Fw out/Examples/BLSP_Boot2/blsp_boot_decompress.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_Update_System_Flash_Clk out/Examples/BLSP_Boot2/blsp_port.o +BLSP_Boot2_Verify_XZ_Header out/Examples/BLSP_Boot2/blsp_boot_decompress.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot2_init_gpio_for_bootrom out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Boot_Parse_AesIv out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/blsp_media_boot.o +BLSP_Boot_Parse_BootHeader out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/blsp_media_boot.o +BLSP_Boot_Parse_PKey out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/blsp_media_boot.o +BLSP_Boot_Parse_Signature out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/blsp_media_boot.o +BLSP_Boot_Parser_Check_Hash out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/blsp_media_boot.o +BLSP_Boot_Parser_Check_Signature out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/blsp_media_boot.o +BLSP_Clr_User_Specified_Fw out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Dump_Data out/Examples/BLSP_Boot2/blsp_common.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Fix_Invalid_MSP_PC out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_media_boot.o +BLSP_Get_User_Specified_Fw out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Is_MSP_Valid out/Examples/BLSP_Boot2/blsp_port.o +BLSP_Is_PC_Valid out/Examples/BLSP_Boot2/blsp_port.o +BLSP_MediaBoot_Main out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_MediaBoot_Pre_Jump out/Examples/BLSP_Boot2/blsp_common.o + out/Examples/BLSP_Boot2/blsp_media_boot.o +BLSP_MediaBoot_Read out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_boot_decompress.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Read_Power_Save_Mode out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot2.o +BLSP_Sboot_Finish out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_common.o +BMX_ERR_INT_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +BMX_ERR_IRQHandler_Wrapper out/startup/interrupt.o +BMX_TIMEOUT_INT_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +BMX_TO_IRQHandler_Wrapper out/startup/interrupt.o +BOR_IRQHandler_Wrapper out/startup/interrupt.o +BZ_PHY_IRQHandler_Wrapper out/startup/interrupt.o +DMA_ALL_IRQHandler_Wrapper out/startup/interrupt.o +DMA_BMX_ERR_IRQHandler_Wrapper out/startup/interrupt.o +DMA_Channel_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Channel_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Channel_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Channel_Is_Busy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Channel_TranferSize out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Channel_Update_DstMemcfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Channel_Update_SrcMemcfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpBuf_Append out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpBuf_Destroy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpBuf_Remove_Completed_List out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpBuf_Start_New_Transmit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpStruct_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpStruct_Set_Transfer_Len out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpStruct_Start out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpStruct_Stop out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_Update out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +EFUSE_IRQHandler_Wrapper out/startup/interrupt.o +EF_Ctrl_AutoLoad_Done out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +EF_Ctrl_Busy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Clear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +EF_Ctrl_Crc_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Crc_Is_Busy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Crc_Result out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Crc_Set_Golden out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Get_Trim_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Get_Trim_Parity out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +EF_Ctrl_Is_All_Bits_Zero out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Is_CapCode_Slot_Empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Is_MAC_Address_Slot_Empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Is_PowerOffset_Slot_Empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Load_Efuse_R0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Program_Direct_R0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Program_Efuse_0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_ADC_Gain_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +EF_Ctrl_Read_AES_Key out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/Examples/BLSP_Boot2/blsp_port.o +EF_Ctrl_Read_Ana_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_CapCode_Opt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Read_Chip_ID out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/Examples/BLSP_Boot2/blsp_port.o +EF_Ctrl_Read_Dbg_Pwd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_Device_Info out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_Direct_R0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Read_MAC_Address out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_MAC_Address_Opt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Read_MAC_Address_Raw out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_PowerOffset_Opt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Read_R0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Read_RC32K_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +EF_Ctrl_Read_RC32M_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +EF_Ctrl_Read_Secure_Boot out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/Examples/BLSP_Boot2/blsp_port.o +EF_Ctrl_Read_Secure_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_Sw_Usage out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/Examples/BLSP_Boot2/blsp_port.o +EF_Ctrl_Read_TSEN_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +EF_Ctrl_Readlock_AES_Key out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Readlock_Dbg_Pwd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Sw_AHB_Clk_0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_AES_Key out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_Ana_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_CapCode_Opt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Write_Dbg_Pwd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_MAC_Address out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_MAC_Address_Opt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Write_PowerOffset_Opt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Write_R0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Write_Secure_Boot out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_Secure_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_Sw_Usage out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Writelock_AES_Key out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Writelock_Dbg_Pwd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Writelock_MAC_Address out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Writelock_Sw_Usage out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +FreeRTOS_Interrupt_Handler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + out/BSP_Common/FreeRTOS/portASM.o +GLB_AHB_Slave1_Clock_Gate out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_AHB_Slave1_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +GLB_BMX_Addr_Monitor_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_BMX_Addr_Monitor_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_BMX_BusErrResponse_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_BMX_BusErrResponse_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_BMX_Get_Err_Addr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_BMX_Get_Status out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_BMX_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Clr_GPIO_IntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_DAC_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_DAC_Set_ChanA_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_DAC_Set_ChanA_Value out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_DAC_Set_ChanB_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_DAC_Set_ChanB_Value out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_Deswap_Flash_Pin out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o +GLB_GPIO_Func_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_Get_Fun out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o +GLB_GPIO_Get_Real_Fun out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_INPUT_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_INPUT_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_INT0_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_INT0_IRQHandler_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o +GLB_GPIO_IntClear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_OUTPUT_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_GPIO_OUTPUT_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o +GLB_GPIO_Read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o +GLB_GPIO_Set_HZ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_GPIO_Set_PullDown out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_Set_PullUp out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_Write out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/Examples/BLSP_Boot2/blsp_port.o +GLB_GPIP_DAC_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_GPIP_DAC_Set_ChanA_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_GPIP_DAC_Set_ChanB_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_Get_BCLK_Div out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +GLB_Get_GPIO_IntCtlMod out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Get_GPIO_IntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Get_HCLK_Div out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +GLB_Get_Root_CLK_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +GLB_Get_SRAM_PARM out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Get_SRAM_RET out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Get_SRAM_SLP out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_IR_LED_Driver_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_IR_LED_Driver_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_IR_LED_Driver_Ibias out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_IR_RX_GPIO_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_JTAG_Sig_Swap_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Platform_Wakeup_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Platform_Wakeup_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_SW_CPU_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_SW_POR_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_SW_System_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_Select_External_Flash out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o +GLB_Select_Internal_Flash out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o +GLB_Set_ADC_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_BLE_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_BT_Coex_Signal out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_DAC_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_DIG_32K_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_DIG_512K_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_DIG_CLK_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_DMA_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_EM_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/Examples/BLSP_Boot2/blsp_port.o +GLB_Set_GPIO_IntMod out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_I2C_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +GLB_Set_IR_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +GLB_Set_MTimer_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +GLB_Set_PKA_CLK_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_Set_SF_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_Set_SPI_0_ACT_MOD_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_SPI_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +GLB_Set_SRAM_PARM out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_SRAM_RET out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_SRAM_SLP out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_System_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +GLB_Set_System_CLK_Div out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +GLB_Set_UART_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +GLB_Set_WiFi_Core_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_WiFi_Encrypt_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Swap_Flash_Pin out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o +GLB_Swap_SPI_0_MOSI_With_MISO out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_UART_Fun_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o +GLB_UART_Sig_Swap_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o +GPADC_DMA_IRQHandler_Wrapper out/startup/interrupt.o +GPIO_INT0_IRQHandler_Wrapper out/startup/interrupt.o +GPIP_DAC_ChanA_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_DAC_ChanA_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_DAC_ChanB_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_DAC_ChanB_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_DAC_DMA_WriteData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_Set_DAC_ChanA_SRC_SEL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_Set_DAC_ChanB_SRC_SEL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_Set_DAC_DMA_TX_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_Set_DAC_DMA_TX_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_Set_DAC_DMA_TX_FORMAT_SEL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_Set_DAC_Mod_SEL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +HBN_32K_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Aon_Pad_IeSmt_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_App_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Clear_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Clear_RTC_Counter out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Clear_RTC_INT out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Disable_AComp0_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Disable_AComp1_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Disable_BOR_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Enable_AComp0_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Enable_AComp1_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Enable_BOR_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Enable_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Enable_RTC_Counter out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_GPIO7_Dbg_Pull_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +HBN_GPIO_INT_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_GPIO_INT_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_BOR_OUT_State out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_INT_State out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_PIR_Interval out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_PIR_Threshold out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_Pin_Wakeup_Mode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_RTC_Timer_Val out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_Status_Flag out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + out/Examples/BLSP_Boot2/blsp_port.o +HBN_Get_Wakeup_Addr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Hw_Pu_Pd_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Mode_Enter out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Mode_Enter_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_OUT0_IRQHandler_Wrapper out/startup/interrupt.o +HBN_OUT1_IRQHandler_Wrapper out/startup/interrupt.o +HBN_Out0_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Out0_IRQHandler_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Out1_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Out1_IRQHandler_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_PIR_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_PIR_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_PIR_HPF_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_PIR_INT_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_PIR_LPF_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Pin_WakeUp_Mask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Power_Down_Flash out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Power_Off_RC32K out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Power_Off_Xtal_32K out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Power_On_RC32K out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Power_On_Xtal_32K out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +HBN_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_BOR_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + out/startup/system_bl602.o +HBN_Set_BOR_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_Embedded_Flash_Pullup out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_HRAM_Ret out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_HRAM_slp out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_Ldo11_All_Vout out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_Ldo11_Aon_Vout out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +HBN_Set_Ldo11_Rt_Vout out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +HBN_Set_Ldo11_Soc_Vout out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +HBN_Set_PIR_Interval out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_PIR_Threshold out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_ROOT_CLK_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +HBN_Set_RTC_Timer out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_Status_Flag out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_UART_CLK_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +HBN_Set_Wakeup_Addr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_XCLK_CLK_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +HBN_Trim_RC32K out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +I2C_ClockSet out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_IRQHandler_Wrapper out/startup/interrupt.o +I2C_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_IsBusy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_MasterReceiveBlocking out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_MasterSendBlocking out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_RecieveWord out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_SendWord out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_SetPrd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_SetSclSync out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +IRRX_IRQHandler_Wrapper out/startup/interrupt.o +IRTX_IRQHandler_Wrapper out/startup/interrupt.o +IR_ClrIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_DeInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_GetIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_GetRxDataBitCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_GetRxFIFOCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_GetRxFIFOStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_LEDInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_LEDSend out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_LearnToInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_LearnToReceive out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_LearnToSend out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_ReceiveData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_ReceiveNEC out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_RxFIFOClear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_RxInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_SWMReceiveData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_SWMSendCommand out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_SWMSendData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_SendCommand out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_SendData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_SendNEC out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_TxInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_TxPulseWidthConfig out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_TxSWM out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_TxSWMPulseWidthConfig out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +Interrupt_Handler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + out/startup/interrupt.o +Interrupt_Handler_Register out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +Interrupt_Handler_Stub out/startup/interrupt.o +L1C_BMX_Addr_Monitor_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_Addr_Monitor_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_BusErrResponse_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_BusErrResponse_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_ERR_INT_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_ERR_IRQHandler_Wrapper out/startup/interrupt.o +L1C_BMX_Get_Err_Addr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_Get_Status out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_TIMEOUT_INT_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_TO_IRQHandler_Wrapper out/startup/interrupt.o +L1C_IROM_2T_Access_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +L1C_Set_Way_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +L1C_Set_Wrap out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +MAC_GEN_IRQHandler_Wrapper out/startup/interrupt.o +MAC_PORT_TRG_IRQHandler_Wrapper out/startup/interrupt.o +MAC_RX_TRG_IRQHandler_Wrapper out/startup/interrupt.o +MAC_TXRX_MISC_IRQHandler_Wrapper out/startup/interrupt.o +MAC_TXRX_TIMER_IRQHandler_Wrapper out/startup/interrupt.o +MAC_TX_TRG_IRQHandler_Wrapper out/startup/interrupt.o +PDS_Default_Level_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Disable_PLL_All_Clks out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Disable_PLL_Clk out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Enable_PLL_All_Clks out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Enable_PLL_Clk out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Force_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Get_IntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_Get_PdsPllStstus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_Get_PdsRfStstus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_Get_PdsStstus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_IntClear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_Power_Off_PLL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Power_On_PLL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_RAM_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Select_RC32M_As_PLL_Ref out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Select_XTAL_As_PLL_Ref out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Trim_RC32M out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_WAKEUP_IRQHandler_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_WAKEUP_IRQHandler_Wrapper out/startup/interrupt.o +PWM_Channel_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Fource_Output out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Get out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Set_Div out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Set_Period out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Set_Threshold1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Set_Threshold2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Update out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_IRQHandler_Wrapper out/startup/interrupt.o +PWM_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_SW_Force_Value out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_SW_Mode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Smart_Configure out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PtTable_Create out/BSP_Common/partition/partition.o +PtTable_Flash_Erase out/BSP_Common/partition/partition.o +PtTable_Flash_Read out/BSP_Common/partition/partition.o +PtTable_Flash_Write out/BSP_Common/partition/partition.o +PtTable_Get_Active_Entries_By_ID out/BSP_Common/partition/partition.o + out/Examples/BLSP_Boot2/blsp_boot2.o +PtTable_Get_Active_Entries_By_Name out/BSP_Common/partition/partition.o + out/Examples/BLSP_Boot2/blsp_boot2.o +PtTable_Get_Active_Partition_Need_Lock out/BSP_Common/partition/partition.o + out/Examples/BLSP_Boot2/blsp_boot2.o +PtTable_Set_Flash_Operation out/BSP_Common/partition/partition.o + out/Examples/BLSP_Boot2/blsp_boot2.o +PtTable_Update_Entry out/BSP_Common/partition/partition.o + out/Examples/BLSP_Boot2/blsp_boot_decompress.o + out/Examples/BLSP_Boot2/blsp_boot2.o +RF_TOP_INT0_IRQHandler_Wrapper out/startup/interrupt.o +RF_TOP_INT1_IRQHandler_Wrapper out/startup/interrupt.o +Ring_Buffer_Get_Empty_Length out/BSP_Common/ring_buffer/ring_buffer.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +Ring_Buffer_Get_Length out/BSP_Common/ring_buffer/ring_buffer.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +Ring_Buffer_Get_Status out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Init out/BSP_Common/ring_buffer/ring_buffer.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +Ring_Buffer_Peek out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Peek_Byte out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Read out/BSP_Common/ring_buffer/ring_buffer.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +Ring_Buffer_Read_Byte out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Read_Callback out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Reset out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Write out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Write_Byte out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Write_Byte_Force out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Write_Callback out/BSP_Common/ring_buffer/ring_buffer.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +Ring_Buffer_Write_Force out/BSP_Common/ring_buffer/ring_buffer.o +SDIO_IRQHandler_Wrapper out/startup/interrupt.o +SEC_AES_IRQHandler_Wrapper out/startup/interrupt.o +SEC_BMX_ERR_IRQHandler_Wrapper out/startup/interrupt.o +SEC_CDET_IRQHandler_Wrapper out/startup/interrupt.o +SEC_Eng_ClrIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_Eng_GetIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_Eng_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_Eng_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_Eng_Turn_Off_Sec_Ring out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SEC_Eng_Turn_On_Sec_Ring out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SEC_GMAC_IRQHandler_Wrapper out/startup/interrupt.o +SEC_PKA_IRQHandler_Wrapper out/startup/interrupt.o +SEC_SHA_IRQHandler_Wrapper out/startup/interrupt.o +SEC_TRNG_IRQHandler_Wrapper out/startup/interrupt.o +SF_CTRL_IRQHandler_Wrapper out/startup/interrupt.o +SF_Cfg_Deinit_Ext_Flash_Gpio out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Cfg_Flash_Identify out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o +SF_Cfg_Flash_Identify_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +SF_Cfg_Get_Flash_Cfg_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_boot2.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o +SF_Cfg_Get_Flash_Cfg_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o +SF_Cfg_Init_Ext_Flash_Gpio out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Cfg_Init_Flash_Gpio out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Cfg_Init_Internal_Flash_Gpio out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Cfg_Restore_GPIO17_Fun out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o +SF_Ctrl_AES_Enable_BE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o +SF_Ctrl_AES_Enable_LE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Set_IV out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Set_IV_BE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o +SF_Ctrl_AES_Set_Key out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Set_Key_BE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o +SF_Ctrl_AES_Set_Region out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o +SF_Ctrl_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_GetBusyState out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SF_Ctrl_Get_Clock_Delay out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Get_Flash_Image_Offset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o +SF_Ctrl_Icache2_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Icache_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Is_AES_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Select_Clock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Select_Pad out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_SendCmd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SF_Ctrl_Set_Clock_Delay out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Set_Flash_Image_Offset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +SF_Ctrl_Set_Owner out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o +SFlash_Blk32_Erase out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Blk64_Erase out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Busy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_Cache_Enable_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o +SFlash_Cache_Flush out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o +SFlash_Cache_Hit_Count_Get out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Cache_Miss_Count_Get out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Cache_Read_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Cache_Read_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o +SFlash_Chip_Erase out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_DisableBurstWrap out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Erase out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +SFlash_Erase_Security_Register out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_GetDeviceId out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +SFlash_GetJedecId out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_GetUniqueId out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +SFlash_IDbus_Read_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Powerdown out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Program out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +SFlash_Program_Security_Register out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_Qspi_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_RCV_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +SFlash_Read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_Read_Reg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Read_Reg_With_Cmd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_Read_Security_Register out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_Releae_Powerdown out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_Reset_Continue_Read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o +SFlash_Restore_From_Powerdown out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_Sector_Erase out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_SetBurstWrap out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_SetSPIMode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Set_IDbus_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o +SFlash_Software_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Volatile_Reg_Write_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Write_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_Write_Reg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Write_Reg_With_Cmd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SPI_ClockConfig out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_ClrIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_ClrRxFifo out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_ClrTxFifo out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_DeInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_FifoConfig out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_GetBusyStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_GetFifoStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_GetIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_GetRxFifoCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_GetTxFifoCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_IRQHandler_Wrapper out/startup/interrupt.o +SPI_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_ReceiveData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Recv_16bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Recv_24bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Recv_32bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Recv_8bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_RxIgnoreDisable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_RxIgnoreEnable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SendData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SendRecv_16bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SendRecv_24bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SendRecv_32bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SendRecv_8bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Send_16bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Send_24bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Send_32bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Send_8bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SetClock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SetDeglitchCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SetTimeOutValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SdioFuncReg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o +Sec_Dbg_Read_Chip_ID out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o +Sec_Dbg_Read_Dbg_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o +Sec_Dbg_Read_Dbg_Mode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o +Sec_Dbg_Read_WiFi_MAC out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o +Sec_Eng_AES_Crypt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_AES_Disable_Link out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Enable_BE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_AES_Enable_LE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Enable_Link out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Finish out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_AES_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_AES_Link_Work out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Set_Counter_Byte out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Set_Hw_Key_Src out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Set_Key_IV out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Set_Key_IV_BE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_GMAC_Disable_Link out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_GMAC_Enable_BE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_GMAC_Enable_LE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_GMAC_Enable_Link out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_GMAC_Link_Work out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_BigEndian_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/Examples/BLSP_Boot2/blsp_port.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_CREG out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_Clear_Int out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_GF2Mont out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_LADD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_LCMP out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_LDIV out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_LDIV2N out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_LMOD2N out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_LMUL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_LMUL2N out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_LSQR out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_LSUB out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_LittleEndian_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_MADD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_MEXP out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_MINV out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_MMUL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_MREM out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_MSQR out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_MSUB out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_Mont2GF out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_Move_Data out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_NREG out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_RESIZE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_Read_Block out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_Read_Data out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/Examples/BLSP_Boot2/blsp_port.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_Write_Block out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_Write_Data out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_Write_Immediate out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_SHA256_Finish out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/BSP_Common/cipher_suite/bflb_hash.o +Sec_Eng_SHA256_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/BSP_Common/cipher_suite/bflb_hash.o +Sec_Eng_SHA256_Link_Finish out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_SHA256_Link_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_SHA256_Link_Update out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_SHA256_Update out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/BSP_Common/cipher_suite/bflb_hash.o +Sec_Eng_SHA_Disable_Link out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_SHA_Enable_Link out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_SHA_Start out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/BSP_Common/cipher_suite/bflb_hash.o +Sec_Eng_Trng_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +Sec_Eng_Trng_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_Trng_Int_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_Trng_Int_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_Trng_Int_Read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_Trng_Int_Read_Trigger out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_Trng_Read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +SystemInit out/startup/system_bl602.o + out/startup/GCC/entry.o +System_Core_Clock_Update_From_RC32M out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +System_NVIC_SetPriority out/startup/system_bl602.o +TIMER_CH0_IRQHandler_Wrapper out/startup/interrupt.o +TIMER_CH1_IRQHandler_Wrapper out/startup/interrupt.o +TIMER_ClearIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + out/Examples/BLSP_Boot2/blsp_port.o +TIMER_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + out/Examples/BLSP_Boot2/blsp_port.o +TIMER_GetCompValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_GetCounterValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_GetMatchStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_GetPreloadValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + out/Examples/BLSP_Boot2/blsp_port.o +TIMER_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + out/Examples/BLSP_Boot2/blsp_port.o +TIMER_SetCompValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_SetCountMode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_SetPreloadTrigSrc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_SetPreloadValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_WDT_IRQHandler_Wrapper out/startup/interrupt.o +TSEN_Get_Temp out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +TSEN_Get_V_Error out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +TZC_Sboot_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o +TZC_Set_Rom0_R0_Protect out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o +TZC_Set_Rom0_R1_Protect out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o +TZC_Set_Rom1_R0_Protect out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o +TZC_Set_Rom1_R1_Protect out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o +Timer_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +Trap_Handler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + out/startup/interrupt.o + out/BSP_Common/FreeRTOS/portASM.o +Trap_Handler_Stub out/startup/interrupt.o + out/startup/GCC/entry.o +UART0_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART0_IRQHandler_Wrapper out/startup/interrupt.o +UART1_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART1_IRQHandler_Wrapper out/startup/interrupt.o +UART_AutoBaudDetection out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +UART_ClrRtsValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_DeInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +UART_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +UART_FifoConfig out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +UART_GetAutoBaudCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_GetBaudrate out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_GetIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_GetOverflowStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_GetRxBusBusyStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_GetRxFifoCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +UART_GetTxBusBusyStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +UART_GetTxFifoCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +UART_IntClear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +UART_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +UART_IrConfig out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_ReceiveData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +UART_RxFifoClear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_SendData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +UART_SendDataBlock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_SetBaudrate out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_SetDeglitchCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_SetRtsValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_SetRxDataLength out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_SetRxTimeoutValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +UART_SetTxDataLength out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_TxFifoClear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_TxFreeRun out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +Update_SystemCoreClockWith_XTAL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +WDT_ClearResetStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_GetCounterValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_GetMatchValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_GetResetStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_ResetCounterValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_SetCompValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_Set_Clock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WIFI_IPC_PUBLIC_IRQHandler_Wrapper out/startup/interrupt.o +WIFI_IRQHandler_Wrapper out/startup/interrupt.o +XIP_SFlash_Erase out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Erase_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_Erase_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/Examples/BLSP_Boot2/blsp_boot_decompress.o + out/Examples/BLSP_Boot2/blsp_boot2.o +XIP_SFlash_Erase_With_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_Erase_With_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_GetDeviceId_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_GetDeviceId_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_GetJedecId_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_GetJedecId_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_GetUniqueId_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_GetUniqueId_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Opt_Enter out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Opt_Exit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_RCV_Enable_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_RCV_Enable_With_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Read_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_Read_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/Examples/BLSP_Boot2/blsp_boot2.o +XIP_SFlash_Read_Via_Cache_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_boot2.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + out/BSP_Common/partition/partition.o +XIP_SFlash_Read_With_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_Read_With_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_State_Restore out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_State_Restore_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_State_Save out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Write out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Write_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_Write_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/Examples/BLSP_Boot2/blsp_boot_decompress.o + out/Examples/BLSP_Boot2/blsp_boot2.o +XIP_SFlash_Write_With_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_Write_With_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +__Interrupt_Handlers out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o +__StackTop out/startup/GCC/entry.o +__Vectors out/startup/interrupt.o + out/startup/GCC/entry.o + out/Examples/BLSP_Boot2/blsp_port.o +__adddf3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + out/BSP_Common/libc/atof.o +__assert_func out/BSP_Common/libc/common.o +__bss_end__ out/startup/GCC/start_load.o +__bss_start__ out/startup/GCC/start_load.o +__clz_tab /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) +__clzsi2 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + out/3rdParty/FreeRTOS/Source/tasks.o +__ctypes out/BSP_Common/libc/ctypes.o + out/BSP_Common/libc/ctype_toupper.o + out/BSP_Common/libc/ctype_tolower.o + out/BSP_Common/libc/ctype_isxdigit.o + out/BSP_Common/libc/ctype_isupper.o + out/BSP_Common/libc/ctype_isspace.o + out/BSP_Common/libc/ctype_ispunct.o + out/BSP_Common/libc/ctype_isprint.o + out/BSP_Common/libc/ctype_islower.o + out/BSP_Common/libc/ctype_isgraph.o + out/BSP_Common/libc/ctype_iscntrl.o + out/BSP_Common/libc/ctype_isalpha.o + out/BSP_Common/libc/ctype_isalnum.o +__divdf3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Common/libc/atof.o +__dtcm_load_addr out/startup/GCC/start_load.o +__fixdfsi /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +__fixunsdfsi /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +__floatsidf /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + out/BSP_Common/libc/atof.o +__floatunsidf /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +__freertos_irq_stack_top out/BSP_Common/FreeRTOS/port.o +__global_pointer$ out/startup/GCC/entry.o +__itcm_load_addr out/startup/GCC/start_load.o +__metal_after_main out/startup/GCC/entry.o +__metal_chicken_bit out/startup/GCC/entry.o +__muldf3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + out/BSP_Common/libc/atof.o +__ram_data_end__ out/startup/GCC/start_load.o +__ram_data_start__ out/startup/GCC/start_load.o +__ram_load_addr out/startup/GCC/start_load.o +__rand48_seed out/BSP_Common/libc/lrand48.o + out/BSP_Common/libc/srand48.o + out/BSP_Common/libc/seed48.o + out/BSP_Common/libc/mrand48.o +__register_frame_info out/startup/GCC/entry.o +__strxspn out/BSP_Common/libc/strxspn.o + out/BSP_Common/libc/strspn.o + out/BSP_Common/libc/strpbrk.o + out/BSP_Common/libc/strcspn.o +__system_ram_data_end__ out/startup/GCC/start_load.o +__system_ram_data_start__ out/startup/GCC/start_load.o +__system_ram_load_addr out/startup/GCC/start_load.o +__tcm_code_end__ out/startup/GCC/start_load.o +__tcm_code_start__ out/startup/GCC/start_load.o +__tcm_data_end__ out/startup/GCC/start_load.o +__tcm_data_start__ out/startup/GCC/start_load.o +__udivdi3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/libc/vsnprintf.o +__umoddi3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + out/BSP_Common/libc/vsnprintf.o +_enter out/startup/GCC/entry.o +atof out/BSP_Common/libc/atof.o +atoi out/BSP_Common/libc/atoi.o +atol out/BSP_Common/libc/atol.o +atoll out/BSP_Common/libc/atoll.o +bfl_main out/Examples/BLSP_Boot2/blsp_boot2.o +bflb_bootrom_parse_bootheader out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o +bflb_bootrom_parse_seg_header out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o +bflb_crypt_auth_decrypt out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_auth_decrypt_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_decrypt out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_decrypt_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_deinit out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_deinit_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_encrypt out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_encrypt_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_encrypt_tag out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_encrypt_tag_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_finish out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_finish_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_init out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_init_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_setadd out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_setadd_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_setkey out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_setkey_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_update out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_update_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_dsa_decrypt_crt out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_init out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_mexp_binary out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_mexp_mont out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_sign out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_verify out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_ecc_get_random_value out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdh_deinit out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdh_get_encrypt_key out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdh_get_public_key out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdh_init out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_deinit out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_get_private_key out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_get_public_key out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_init out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o +bflb_ecdsa_sign out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_verify out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o +bflb_eflash_loader_cmd_init out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +bflb_eflash_loader_cmd_process out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +bflb_eflash_loader_deinit_uart_gpio out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o +bflb_eflash_loader_deinit_uart_gpio_do out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o +bflb_eflash_loader_init_flash_gpio out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o +bflb_eflash_loader_init_uart_gpio out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +bflb_eflash_loader_main out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_boot2.o +bflb_eflash_loader_uart_change_rate out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +bflb_eflash_loader_uart_deinit out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +bflb_eflash_loader_uart_handshake_poll out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_boot2.o +bflb_eflash_loader_uart_init out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/Examples/BLSP_Boot2/blsp_boot2.o +bflb_eflash_loader_uart_recv out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +bflb_eflash_loader_uart_send out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o +bflb_eflash_loader_usart_if_send out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +bflb_eflash_loader_usart_if_wait_tx_idle out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o +bflb_eflash_loader_usart_wait_tx_idle out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +bflb_hash_deinit out/BSP_Common/cipher_suite/bflb_hash.o +bflb_hash_finish out/BSP_Common/cipher_suite/bflb_hash.o +bflb_hash_init out/BSP_Common/cipher_suite/bflb_hash.o +bflb_hash_start out/BSP_Common/cipher_suite/bflb_hash.o +bflb_hash_update out/BSP_Common/cipher_suite/bflb_hash.o +bflb_plat_uart_debug_port_set out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/Examples/BLSP_Boot2/blsp_boot2.o +bflb_platform_clear_time out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +bflb_platform_deinit out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/Examples/BLSP_Boot2/blsp_common.o +bflb_platform_deinit_time out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/Examples/BLSP_Boot2/blsp_boot2.o +bflb_platform_deinit_uart_debug_gpio out/Examples/BLSP_Boot2/blsp_port.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_delay_ms out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +bflb_platform_dump out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_get_input out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_get_length out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_get_random out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_platform_get_time_ms out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +bflb_platform_get_time_us out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_init out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/Examples/BLSP_Boot2/blsp_boot2.o +bflb_platform_init_time out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_init_uart_debug_gpio out/Examples/BLSP_Boot2/blsp_port.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_print_set out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/Examples/BLSP_Boot2/blsp_boot2.o +bflb_platform_printc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_printf out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_common.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/blsp_boot_decompress.o + out/Examples/BLSP_Boot2/blsp_boot2.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + out/BSP_Common/xz/xz_port.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_platform_prints out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_printx out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_set_alarm_time out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_set_alarm_time_callback out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_start_time out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_stop_time out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_uart_dbg_deinit out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_uart_dbg_init out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_usart_dbg_send out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +boot2ReadBuf out/Examples/BLSP_Boot2/blsp_boot2.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_boot_decompress.o +bootCpuCfg out/Examples/BLSP_Boot2/blsp_boot2.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_common.o +bootImgCfg out/Examples/BLSP_Boot2/blsp_boot2.o + out/Examples/BLSP_Boot2/blsp_port.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_common.o +bootrom_read_boot_mode out/Examples/BLSP_Boot2/bflb_eflash_loader_gpio.o +bsearch out/BSP_Common/libc/bsearch.o +calloc out/BSP_Common/libc/stdlib.o +chCRCHTalbe out/BSP_Common/soft_crc/softcrc.o +chCRCLTalbe out/BSP_Common/soft_crc/softcrc.o +clic_clear_pending out/startup/interrupt.o +clic_csoft_handler_Wrapper out/startup/interrupt.o +clic_disable_interrupt out/startup/interrupt.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +clic_enable_interrupt out/startup/interrupt.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +clic_get_cliccfg out/startup/interrupt.o +clic_get_intcfg out/startup/interrupt.o +clic_mext_handler_Wrapper out/startup/interrupt.o +clic_msip_handler_Wrapper out/startup/interrupt.o +clic_mtimer_handler_Wrapper out/startup/interrupt.o +clic_set_cliccfg out/startup/interrupt.o +clic_set_intcfg out/startup/interrupt.o +clic_set_pending out/startup/interrupt.o +cpuCount out/Examples/BLSP_Boot2/blsp_boot2.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_common.o +crc32Tab out/BSP_Common/soft_crc/softcrc.o + out/BSP_Common/xz/xz_crc32.o +eTaskGetState out/3rdParty/FreeRTOS/Source/tasks.o +eflash_loader_cmd_ack_buf out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o +eflash_loader_readbuf out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +efuseCfg out/Examples/BLSP_Boot2/blsp_boot2.o + out/Examples/BLSP_Boot2/blsp_common.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o +flag_mport out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o +flashCfg out/Examples/BLSP_Boot2/blsp_boot2.o + out/Examples/BLSP_Boot2/blsp_common.o + out/Examples/BLSP_Boot2/blsp_boot_decompress.o +fnmatch out/BSP_Common/libc/fnmatch.o +free out/BSP_Common/libc/stdlib.o +freertos_risc_v_trap_handler out/BSP_Common/FreeRTOS/portASM.o +i2cIntCbfArra out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +isalnum out/BSP_Common/libc/ctype_isalnum.o +isalpha out/BSP_Common/libc/ctype_isalpha.o +isascii out/BSP_Common/libc/ctype_isascii.o +isblank out/BSP_Common/libc/ctype_isblank.o +iscntrl out/BSP_Common/libc/ctype_iscntrl.o +isdigit out/BSP_Common/libc/ctype_isdigit.o +isgraph out/BSP_Common/libc/ctype_isgraph.o +islower out/BSP_Common/libc/ctype_islower.o +isprint out/BSP_Common/libc/ctype_isprint.o +ispunct out/BSP_Common/libc/ctype_ispunct.o +isspace out/BSP_Common/libc/ctype_isspace.o + out/BSP_Common/libc/vsscanf.o + out/BSP_Common/libc/strntoumax.o + out/BSP_Common/libc/atof.o +isupper out/BSP_Common/libc/ctype_isupper.o +isxdigit out/BSP_Common/libc/ctype_isxdigit.o +jrand48 out/BSP_Common/libc/jrand48.o + out/BSP_Common/libc/nrand48.o + out/BSP_Common/libc/mrand48.o + out/BSP_Common/libc/lrand48.o +lrand48 out/BSP_Common/libc/lrand48.o +main out/Examples/BLSP_Boot2/blsp_boot2.o + out/startup/GCC/entry.o + out/BSP_Common/partition/partition.o +malloc out/BSP_Common/libc/stdlib.o +memccpy out/BSP_Common/libc/memccpy.o +memchr out/BSP_Common/libc/memchr.o +memcmp out/BSP_Common/libc/memcmp.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/blsp_boot_decompress.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/partition/partition.o + out/BSP_Common/libc/memmem.o +memcpy out/BSP_Common/libc/memcpy.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/bflb_eflash_loader_cmds.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o +memmem out/BSP_Common/libc/memmem.o + out/BSP_Common/libc/strstr.o +memmove /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + out/BSP_Common/xz/xz_dec_lzma2.o +memrchr out/BSP_Common/libc/memrchr.o +memset out/BSP_Common/libc/memset.o + out/Examples/BLSP_Boot2/blsp_media_boot.o + out/Examples/BLSP_Boot2/blsp_boot2.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/libc/strxspn.o + out/BSP_Common/libc/strncpy.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +memswap out/BSP_Common/libc/memswap.o + out/BSP_Common/libc/qsort.o +mfg_efuse_get_rf_cal_slots out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_is_macaddr_slot_empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_is_poweroffset_slot_empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_is_xtal_capcode_slot_empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_program out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_read_macaddr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_read_poweroffset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_read_xtal_capcode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_set_rf_cal_slots out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_macaddr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_macaddr_pre out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_poweroffset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_poweroffset_pre out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_pre out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_xtal_capcode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_xtal_capcode_pre out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mrand48 out/BSP_Common/libc/mrand48.o +notch_p out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +nrand48 out/BSP_Common/libc/nrand48.o +pcQueueGetName out/3rdParty/FreeRTOS/Source/queue.o +pcTaskGetName out/3rdParty/FreeRTOS/Source/tasks.o +pcTimerGetName out/3rdParty/FreeRTOS/Source/timers.o +psMode out/Examples/BLSP_Boot2/blsp_boot2.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o +pullMachineTimerCompareRegister out/BSP_Common/FreeRTOS/port.o + out/BSP_Common/FreeRTOS/portASM.o +pullMachineTimerCompareRegisterBase out/BSP_Common/FreeRTOS/port.o +pullNextTime out/BSP_Common/FreeRTOS/port.o + out/BSP_Common/FreeRTOS/portASM.o +pvPortMalloc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o +pvTaskIncrementMutexHeldCount out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +pvTimerGetTimerID out/3rdParty/FreeRTOS/Source/timers.o +pxCurrentTCB out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Common/FreeRTOS/portASM.o +pxPortInitialiseStack out/BSP_Common/FreeRTOS/portASM.o + out/3rdParty/FreeRTOS/Source/tasks.o +qsort out/BSP_Common/libc/qsort.o +rand out/BSP_Common/libc/lrand48.o +random out/BSP_Common/libc/lrand48.o +realloc out/BSP_Common/libc/stdlib.o +rf_calib_data out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_config_bandwidth out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_fcal out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_full_cal out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_get_txgain_index out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_get_txgain_max out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_get_txgain_min out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_get_vco_freq_cw out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_get_vco_idac_cw out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_init out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_init_calib_mem out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o +rf_pri_init_fast out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_lo_acal out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_notch_param out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_query_txgain_table out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_rccal out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_restore_cal_reg out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_roscal out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_tcal_glb out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_tx_gain_comp out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_txcal out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_dvga_os out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_param out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_power_offset out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_tcal_param out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_tx_power_offset out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_tx_power_offset_res out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_txgain_tempos out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_xtalfreq out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rfc_apply_tx_dvga out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rx_buf_index out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +rx_buf_len out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +sdio_GEN_CARD2HOST_INT out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o +sdio_ioctl out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o +secp256r1B out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1Gx out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1Gy out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1InvR_N out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1InvR_P out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1N out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1P out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1PrimeN_N out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1PrimeN_P out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_1 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_1M1 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_1P1 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_BAR2 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_BAR3 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_BAR4 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_BAR8 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_Gx out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_Gy out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_Zerox out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_Zeroy out/BSP_Common/cipher_suite/bflb_ecdsa.o +seed48 out/BSP_Common/libc/seed48.o +shaCtx out/Examples/BLSP_Boot2/blsp_boot_parser.o + out/Examples/BLSP_Boot2/blsp_media_boot.o +simple_free out/BSP_Common/xz/xz_port.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_dec_lzma2.o +simple_malloc out/BSP_Common/xz/xz_port.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_dec_lzma2.o +simple_malloc_init out/BSP_Common/xz/xz_port.o + out/Examples/BLSP_Boot2/blsp_boot_decompress.o +snprintf out/BSP_Common/libc/snprintf.o +sprintf out/BSP_Common/libc/sprintf.o + out/3rdParty/FreeRTOS/Source/tasks.o +srand out/BSP_Common/libc/srand48.o +srand48 out/BSP_Common/libc/srand48.o +srandom out/BSP_Common/libc/srand48.o +sscanf out/BSP_Common/libc/sscanf.o +start_load out/startup/GCC/start_load.o + out/startup/GCC/entry.o +strcasecmp out/BSP_Common/libc/strcasecmp.o +strcat out/BSP_Common/libc/strcat.o +strchr out/BSP_Common/libc/strchr.o +strcmp out/BSP_Common/libc/strcmp.o +strcpy out/BSP_Common/libc/strcpy.o + out/BSP_Common/libc/strcat.o + out/3rdParty/FreeRTOS/Source/tasks.o +strcspn out/BSP_Common/libc/strcspn.o +strlcat out/BSP_Common/libc/strlcat.o +strlcpy out/BSP_Common/libc/strlcpy.o +strlen out/BSP_Common/libc/strlen.o + out/Examples/BLSP_Boot2/blsp_boot2.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/partition/partition.o + out/BSP_Common/libc/vsnprintf.o + out/BSP_Common/libc/strstr.o + out/BSP_Common/libc/strncat.o + out/BSP_Common/libc/strlcat.o + out/BSP_Common/libc/strcat.o + out/BSP_Common/libc/atof.o + out/3rdParty/FreeRTOS/Source/tasks.o +strncasecmp out/BSP_Common/libc/strncasecmp.o +strncat out/BSP_Common/libc/strncat.o +strncmp out/BSP_Common/libc/strncmp.o +strncpy out/BSP_Common/libc/strncpy.o +strnlen out/BSP_Common/libc/strnlen.o +strntof out/BSP_Common/libc/atof.o +strntoimax out/BSP_Common/libc/strntoimax.o +strntoumax out/BSP_Common/libc/strntoumax.o + out/BSP_Common/libc/vsscanf.o + out/BSP_Common/libc/strtoumax.o + out/BSP_Common/libc/strtoull.o + out/BSP_Common/libc/strtoul.o + out/BSP_Common/libc/strtoll.o + out/BSP_Common/libc/strtol.o + out/BSP_Common/libc/strtoimax.o + out/BSP_Common/libc/strntoimax.o + out/BSP_Common/libc/atoll.o + out/BSP_Common/libc/atol.o + out/BSP_Common/libc/atoi.o +strpbrk out/BSP_Common/libc/strpbrk.o + out/BSP_Common/libc/strsep.o +strrchr out/BSP_Common/libc/strrchr.o +strsep out/BSP_Common/libc/strsep.o + out/BSP_Common/libc/strtok_r.o +strspn out/BSP_Common/libc/strspn.o +strstr out/BSP_Common/libc/strstr.o +strtof out/BSP_Common/libc/common.o +strtoimax out/BSP_Common/libc/strtoimax.o +strtok out/BSP_Common/libc/strtok.o +strtok_r out/BSP_Common/libc/strtok_r.o + out/BSP_Common/libc/strtok.o +strtol out/BSP_Common/libc/strtol.o +strtoll out/BSP_Common/libc/strtoll.o +strtoul out/BSP_Common/libc/strtoul.o +strtoull out/BSP_Common/libc/strtoull.o +strtoumax out/BSP_Common/libc/strtoumax.o +system_bor_init out/startup/system_bl602.o +tcal_param out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +timerIntCbfArra out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +tolower out/BSP_Common/libc/ctype_tolower.o +toupper out/BSP_Common/libc/ctype_toupper.o + out/BSP_Common/libc/strncasecmp.o + out/BSP_Common/libc/strcasecmp.o +tp_index out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +ucQueueGetQueueType out/3rdParty/FreeRTOS/Source/queue.o +ucStreamBufferGetStreamBufferType out/3rdParty/FreeRTOS/Source/stream_buffer.o +ulTaskNotifyTake out/3rdParty/FreeRTOS/Source/tasks.o +ullNextTime out/BSP_Common/FreeRTOS/port.o +userHashIgnored out/Examples/BLSP_Boot2/blsp_boot2.o + out/Examples/BLSP_Boot2/blsp_boot_parser.o +uxListRemove out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o +uxQueueGetQueueNumber out/3rdParty/FreeRTOS/Source/queue.o +uxQueueMessagesWaiting out/3rdParty/FreeRTOS/Source/queue.o +uxQueueMessagesWaitingFromISR out/3rdParty/FreeRTOS/Source/queue.o +uxQueueSpacesAvailable out/3rdParty/FreeRTOS/Source/queue.o +uxStreamBufferGetStreamBufferNumber out/3rdParty/FreeRTOS/Source/stream_buffer.o +uxTaskGetNumberOfTasks out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskGetSystemState out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskGetTaskNumber out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskPriorityGet out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskPriorityGetFromISR out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskResetEventItemValue out/3rdParty/FreeRTOS/Source/tasks.o +uxTimerGetTimerNumber out/3rdParty/FreeRTOS/Source/timers.o +uxTimerIncrementsForOneTick out/BSP_Common/FreeRTOS/port.o + out/BSP_Common/FreeRTOS/portASM.o +vApplicationGetIdleTaskMemory out/3rdParty/FreeRTOS/Source/tasks.o +vApplicationGetTimerTaskMemory out/3rdParty/FreeRTOS/Source/timers.o +vApplicationMallocFailedHook out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +vApplicationStackOverflowHook out/3rdParty/FreeRTOS/Source/tasks.o +vApplicationTickHook out/3rdParty/FreeRTOS/Source/tasks.o +vAssertCalled out/BSP_Common/FreeRTOS/port.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +vListInitialise out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vListInitialiseItem out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o +vListInsert out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o +vListInsertEnd out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/tasks.o +vPortDefineHeapRegions out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +vPortEndScheduler out/BSP_Common/FreeRTOS/port.o + out/3rdParty/FreeRTOS/Source/tasks.o +vPortFree out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o +vPortGetHeapStats out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +vPortSetupTimerInterrupt out/BSP_Common/FreeRTOS/port.o +vQueueAddToRegistry out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +vQueueDelete out/3rdParty/FreeRTOS/Source/queue.o +vQueueSetQueueNumber out/3rdParty/FreeRTOS/Source/queue.o +vQueueUnregisterQueue out/3rdParty/FreeRTOS/Source/queue.o +vQueueWaitForMessageRestricted out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +vStreamBufferDelete out/3rdParty/FreeRTOS/Source/stream_buffer.o +vStreamBufferSetStreamBufferNumber out/3rdParty/FreeRTOS/Source/stream_buffer.o +vTaskDelay out/3rdParty/FreeRTOS/Source/tasks.o +vTaskDelayUntil out/3rdParty/FreeRTOS/Source/tasks.o +vTaskDelete out/3rdParty/FreeRTOS/Source/tasks.o +vTaskEndScheduler out/3rdParty/FreeRTOS/Source/tasks.o +vTaskEnterCritical out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +vTaskExitCritical out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +vTaskGetInfo out/3rdParty/FreeRTOS/Source/tasks.o +vTaskInternalSetTimeOutState out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskList out/3rdParty/FreeRTOS/Source/tasks.o +vTaskMissedYield out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskNotifyGiveFromISR out/3rdParty/FreeRTOS/Source/tasks.o +vTaskPlaceOnEventList out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskPlaceOnEventListRestricted out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskPlaceOnUnorderedEventList out/3rdParty/FreeRTOS/Source/tasks.o +vTaskPriorityDisinheritAfterTimeout out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskPrioritySet out/3rdParty/FreeRTOS/Source/tasks.o +vTaskRemoveFromUnorderedEventList out/3rdParty/FreeRTOS/Source/tasks.o +vTaskResume out/3rdParty/FreeRTOS/Source/tasks.o +vTaskSetTaskNumber out/3rdParty/FreeRTOS/Source/tasks.o +vTaskSetTimeOutState out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +vTaskStartScheduler out/3rdParty/FreeRTOS/Source/tasks.o +vTaskSuspend out/3rdParty/FreeRTOS/Source/tasks.o +vTaskSuspendAll out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +vTaskSwitchContext out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Common/FreeRTOS/portASM.o +vTimerSetReloadMode out/3rdParty/FreeRTOS/Source/timers.o +vTimerSetTimerID out/3rdParty/FreeRTOS/Source/timers.o +vTimerSetTimerNumber out/3rdParty/FreeRTOS/Source/timers.o +vsnprintf out/BSP_Common/libc/vsnprintf.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/libc/vsprintf.o + out/BSP_Common/libc/sprintf.o + out/BSP_Common/libc/snprintf.o +vsprintf out/BSP_Common/libc/vsprintf.o +vsscanf out/BSP_Common/libc/vsscanf.o + out/BSP_Common/libc/sscanf.o +xISRStackTop out/BSP_Common/FreeRTOS/port.o + out/BSP_Common/FreeRTOS/portASM.o +xPortGetFreeHeapSize out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +xPortGetMinimumEverFreeHeapSize out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +xPortStartFirstTask out/BSP_Common/FreeRTOS/portASM.o + out/BSP_Common/FreeRTOS/port.o +xPortStartScheduler out/BSP_Common/FreeRTOS/port.o + out/3rdParty/FreeRTOS/Source/tasks.o +xQueueCreateCountingSemaphore out/3rdParty/FreeRTOS/Source/queue.o +xQueueCreateCountingSemaphoreStatic out/3rdParty/FreeRTOS/Source/queue.o +xQueueCreateMutex out/3rdParty/FreeRTOS/Source/queue.o +xQueueCreateMutexStatic out/3rdParty/FreeRTOS/Source/queue.o +xQueueGenericCreate out/3rdParty/FreeRTOS/Source/queue.o +xQueueGenericCreateStatic out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +xQueueGenericReset out/3rdParty/FreeRTOS/Source/queue.o +xQueueGenericSend out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +xQueueGenericSendFromISR out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +xQueueGetMutexHolder out/3rdParty/FreeRTOS/Source/queue.o +xQueueGetMutexHolderFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueGiveFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueGiveMutexRecursive out/3rdParty/FreeRTOS/Source/queue.o +xQueueIsQueueEmptyFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueIsQueueFullFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueuePeek out/3rdParty/FreeRTOS/Source/queue.o +xQueuePeekFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueReceive out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +xQueueReceiveFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueRegistry out/3rdParty/FreeRTOS/Source/queue.o +xQueueSemaphoreTake out/3rdParty/FreeRTOS/Source/queue.o +xQueueTakeMutexRecursive out/3rdParty/FreeRTOS/Source/queue.o +xStreamBufferBytesAvailable out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferGenericCreate out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferGenericCreateStatic out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferIsEmpty out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferIsFull out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferNextMessageLengthBytes out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferReceive out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferReceiveCompletedFromISR out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferReceiveFromISR out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferReset out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSend out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSendCompletedFromISR out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSendFromISR out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSetTriggerLevel out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSpacesAvailable out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskAbortDelay out/3rdParty/FreeRTOS/Source/tasks.o +xTaskCatchUpTicks out/3rdParty/FreeRTOS/Source/tasks.o +xTaskCheckForTimeOut out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskCreate out/3rdParty/FreeRTOS/Source/tasks.o +xTaskCreateStatic out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/timers.o +xTaskGenericNotify out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskGenericNotifyFromISR out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskGetCurrentTaskHandle out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskGetHandle out/3rdParty/FreeRTOS/Source/tasks.o +xTaskGetSchedulerState out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskGetTickCount out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/timers.o +xTaskGetTickCountFromISR out/3rdParty/FreeRTOS/Source/tasks.o +xTaskIncrementTick out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Common/FreeRTOS/portASM.o +xTaskNotifyStateClear out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskNotifyWait out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskPriorityDisinherit out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskPriorityInherit out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskRemoveFromEventList out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskResumeAll out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +xTaskResumeFromISR out/3rdParty/FreeRTOS/Source/tasks.o +xTimerCreate out/3rdParty/FreeRTOS/Source/timers.o +xTimerCreateStatic out/3rdParty/FreeRTOS/Source/timers.o +xTimerCreateTimerTask out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o +xTimerGenericCommand out/3rdParty/FreeRTOS/Source/timers.o +xTimerGetExpiryTime out/3rdParty/FreeRTOS/Source/timers.o +xTimerGetPeriod out/3rdParty/FreeRTOS/Source/timers.o +xTimerGetTimerDaemonTaskHandle out/3rdParty/FreeRTOS/Source/timers.o +xTimerIsTimerActive out/3rdParty/FreeRTOS/Source/timers.o +xTimerPendFunctionCall out/3rdParty/FreeRTOS/Source/timers.o +xTimerPendFunctionCallFromISR out/3rdParty/FreeRTOS/Source/timers.o +xtalType out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +xtal_clk out/Examples/BLSP_Boot2/bflb_eflash_loader_uart.o +xz_crc32 out/BSP_Common/xz/xz_crc32.o + out/BSP_Common/xz/xz_dec_stream.o +xz_crc32_init out/BSP_Common/xz/xz_crc32.o + out/Examples/BLSP_Boot2/blsp_boot_decompress.o + out/BSP_Common/xz/xz_decompress.o +xz_dec_end out/BSP_Common/xz/xz_dec_stream.o + out/Examples/BLSP_Boot2/blsp_boot_decompress.o + out/BSP_Common/xz/xz_decompress.o +xz_dec_init out/BSP_Common/xz/xz_dec_stream.o + out/Examples/BLSP_Boot2/blsp_boot_decompress.o + out/BSP_Common/xz/xz_decompress.o +xz_dec_lzma2_create out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/xz/xz_dec_stream.o +xz_dec_lzma2_end out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/xz/xz_dec_stream.o +xz_dec_lzma2_reset out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/xz/xz_dec_stream.o +xz_dec_lzma2_run out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/xz/xz_dec_stream.o +xz_dec_reset out/BSP_Common/xz/xz_dec_stream.o +xz_dec_run out/BSP_Common/xz/xz_dec_stream.o + out/Examples/BLSP_Boot2/blsp_boot_decompress.o + out/BSP_Common/xz/xz_decompress.o +xz_uncompress_end out/BSP_Common/xz/xz_decompress.o +xz_uncompress_init out/BSP_Common/xz/xz_decompress.o +xz_uncompress_stream out/BSP_Common/xz/xz_decompress.o diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2_debug.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2_debug.bin new file mode 100644 index 00000000..9d49be39 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2_debug.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2_release.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2_release.bin new file mode 100644 index 00000000..ee20787b Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/blsp_boot2_release.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_24m.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_24m.bin new file mode 100644 index 00000000..d9ebb6ae Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_24m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_24m_autoboot.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_24m_autoboot.bin new file mode 100644 index 00000000..213a0c4a Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_24m_autoboot.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_26m.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_26m.bin new file mode 100644 index 00000000..938acebe Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_26m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_26m_autoboot.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_26m_autoboot.bin new file mode 100644 index 00000000..0c8e31ce Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_26m_autoboot.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_32m.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_32m.bin new file mode 100644 index 00000000..0c22f8ae Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_32m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_32m_autoboot.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_32m_autoboot.bin new file mode 100644 index 00000000..0abcdafa Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_32m_autoboot.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_38p4m.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_38p4m.bin new file mode 100644 index 00000000..363bbcc5 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_38p4m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_38p4m_autoboot.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_38p4m_autoboot.bin new file mode 100644 index 00000000..f26db312 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_38p4m_autoboot.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_40m.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_40m.bin new file mode 100644 index 00000000..4f4ad469 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_40m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_40m_autoboot.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_40m_autoboot.bin new file mode 100644 index 00000000..19840e17 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_40m_autoboot.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_40m_rfpa.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_40m_rfpa.bin new file mode 100644 index 00000000..92ce4116 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_gu_932b317e_40m_rfpa.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_24m.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_24m.bin new file mode 100644 index 00000000..270f2d79 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_24m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_26m.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_26m.bin new file mode 100644 index 00000000..bbeccd72 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_26m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_32m.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_32m.bin new file mode 100644 index 00000000..a895bdb7 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_32m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_38p4m.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_38p4m.bin new file mode 100644 index 00000000..464cb73e Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_38p4m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_40m.bin b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_40m.bin new file mode 100644 index 00000000..93bf8805 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/builtin_imgs/mfg/bl602_bl604_mfg_ram_932b317e_40m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/conf/ota.toml b/tools/bflb_flash_tool/chips/bl602/conf/ota.toml new file mode 100644 index 00000000..a714ddf3 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/conf/ota.toml @@ -0,0 +1,5 @@ +[ota] +#max length of version_hardware is 15 bytes +version_hardware = "BFL_Module_v1.1" +#max length of version_software is 15 bytes +version_software = "EVENT_V1.1.1" diff --git a/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_24M.dts b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_24M.dts new file mode 100644 index 00000000..ee95aea9 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_24M.dts @@ -0,0 +1,348 @@ +/dts-v1/; +/include/ "bl602_base.dtsi"; +// version: 17 +// last_comp_version: 16 +// boot_cpuid_phys: 0x0 + +/ { + model = "bl bl602 IOT board"; + compatible = "bl,bl602-sample", "bl,bl602-common"; + #address-cells = <0x1>; + #size-cells = <0x1>; + gpio { + #address-cells = <1>; + #size-cells = <1>; + max_num = <40>; + gpio0 { + status = "okay"; + pin = <5>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio1 { + status = "disable"; + pin = <6>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio2 { + status = "okay"; + pin = <2>; + feature = "button"; + active = "Hi"; + mode = "multipress"; + button { + debounce = <10>; + short_press_ms { + start = <100>; + end = <3000>; + kevent = <2>; + }; + long_press_ms { + start = <6000>; + end = <10000>; + kevent = <3>; + }; + longlong_press_ms { + start = <15000>; + kevent = <4>; + }; + trig_level = "Hi"; + }; + hbn_use = "disable"; + }; + }; + i2s { + #address-cells = <1>; + #size-cells = <1>; + i2s@40017000 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017000 0x100>; + mclk_only = "okay"; + pin { + mclk = <11>; + }; + }; + i2s@40017100 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017100 0x100>; + mclk_only = "disable"; + pin { + bclk = <12>; + fs = <29>; + do = <30>; + di = <31>; + }; + }; + }; + i2c { + #address-cells = <1>; + #size-cells = <1>; + i2c@40011000 { + status = "okay"; + compatible = "bl602_i2c"; + reg = <0x40011000 0x100>; + pin { + scl = <32>; + sda = <13>; + }; + devices { + list_addr = <0x18 0x21>; + list_driver = "i2c_es8311", "i2c_gc0308>"; + }; + }; + i2c@40011100 { + status = "disable"; + compatible = "bl602_i2c"; + reg = <0x40011100 0x100>; + pin { + /*empty here*/ + }; + }; + }; + timer { + #address-cells = <1>; + #size-cells = <1>; + timer@40014000 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014000 0x100>; + }; + timer@40014100 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014100 0x100>; + }; + }; + pwm { + #address-cells = <1>; + #size-cells = <1>; + pwm@4000A420 { + status = "okay"; + compatible = "bl602_pwm"; + reg = <0x4000A420 0x20>; + path = "/dev/pwm0"; + id = <0>; + pin = <0>; + freq = <800000>; + duty = <50>; + }; + pwm@4000A440 { + status = "disable"; + reg = <0x4000A440 0x20>; + path = "/dev/pwm1"; + id = <1>; + pin = <1>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A460 { + status = "disable"; + reg = <0x4000A460 0x20>; + path = "/dev/pwm2"; + id = <2>; + pin = <2>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A480 { + status = "disable"; + reg = <0x4000A480 0x20>; + path = "/dev/pwm3"; + id = <3>; + pin = <3>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A4A0 { + status = "disable"; + reg = <0x4000A4A0 0x20>; + path = "/dev/pwm4"; + id = <4>; + pin = <4>; + freq = <5000>; + duty = <50>; + }; + }; + ir { + #address-cells = <1>; + #size-cells = <1>; + ctrltype = <0>; + tx { + status = "disable"; + pin = <11>; // only support 11 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + interval = <100>; // ms + active_mode = "Hi"; //Hi,Lo + }; + rx { + status = "okay"; + pin = <12>; // only support 12 13 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + active_mode = "Hi"; //Hi,Lo + data_check = <2>; //bit 0:check cmd, bit 1:check addr + }; + }; + uart { + #address-cells = <1>; + #size-cells = <1>; + uart@4000A000 { + status = "okay"; + id = <0>; + compatible = "bl602_uart"; + path = "/dev/ttyS0"; + baudrate = <2000000>; + pin { + rx = <7>; + tx = <16>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + uart@4000A100 { + status = "okay"; + id = <1>; + compatible = "bl602_uart"; + path = "/dev/ttyS1"; + baudrate = <115200>; + pin { + rx = <3>; + tx = <4>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + }; + spi { + #address-cells = <1>; + #size-cells = <1>; + spi@4000F000 { + status = "okay"; /* okay disable */ + mode = "master"; + reg = <0x4000F000 0x100>; /* 4KB */ + path = "/dev/spi0"; + port = <0>; + polar_phase = <1>; /* 0,1,2,3 */ + freq = <6000000>; + pin { + clk = <3>; + cs = <2>; + mosi = <1>; + miso = <0>; + }; + dma_cfg { + tx_dma_ch = <2>; + rx_dma_ch = <3>; + }; + }; + }; + gpip { + #address-cells = <1>; + #size-cells = <1>; + adc_key { + status = "disable"; + pin = <9>; + interrupt = <3>; + key_vol = <0 100 400 300 500>; + key_pcb = "SW1", "SW2", "SW3", "SW4","SW5"; + key_event = "Usr1", "Usr2", "Start", "Up", "Down"; + key_raw = <1 2 3 4 5>; + }; + }; + qspi { + #address-cells = <1>; + #size-cells = <1>; + qspi@4000A000 { + status = "disable"; + reg = <0x4000A000 0x1000>;/* 4KB */ + }; + }; + wifi { + #address-cells = <1>; + #size-cells = <1>; + region { + country_code = <86>; + }; + mac { + mode = "MBF"; + sta_mac_addr = [C8 43 57 82 73 40]; + ap_mac_addr = [C8 43 57 82 73 02]; + }; + sta { + ssid = "yourssid"; + pwd = "yourapssword"; + auto_connect_enable = <0>; + }; + ap { + ssid = "bl_test_005"; + pwd = "12345678"; + ap_channel = <11>; + auto_chan_detect = "disable"; + }; + brd_rf { + xtal_mode = "MF"; + xtal = <36 36 0 60 60>; + /* + pwr_table = < 4 3 3 186 + 4 3 4 176 + 4 3 5 167 + 3 3 0 159 + 3 3 1 149 + 3 3 2 140 + 3 3 3 129 + 3 3 4 119 + 3 3 5 110 + 2 3 0 101 + 2 3 1 91 + 2 3 2 82 + 2 3 3 72 + 2 3 4 62 + 2 3 5 52 + 1 3 3 10>; + */ + pwr_mode = "bf";//B: only use power offset in EFUSE; b: use power offset in EFUSE with incremental mode; F: only use power offset in Flash; f: use power offset in Flash with incremental mode + pwr_table_11b = <20 20 20 18>;//1Mbps 2Mbps 5.5Mbps 11Mbps + pwr_table_11g = <18 18 18 18 18 18 14 14>; //6Mbps 9Mbps 12Mbps 18MBps 24Mbps 36Mbps 48Mbps 54Mbps + pwr_table_11n = <18 18 18 18 18 16 14 14>; //MCS0 MCS1 MCS2 MCS3 MCS4 MCS5 MCS6 MCS7 + pwr_offset = <10 10 10 10 10 10 10 10 10 10 10 10 10 10>;//due to the limit of current DTC, negative value is used. So we work around by adding all the poweroffset with 10. so 8 represents -2; 10 represents 0; 13 represents 3 + }; + rf_temp { + en_tcal = <0>; + linear_or_follow = <1>; + Tchannels = <2412 2427 2442 2457 2472>; + Tchannel_os = <180 168 163 160 157>; + Tchannel_os_low = <199 186 170 165 160>; + Troom_os = <255>; + //negative value is NOT supported. So we use '256' for 0, '255' for -1, '257' for 1,'511' for 256 + }; + }; + bluetooth { + #address-cells = <1>; + #size-cells = <1>; + brd_rf { + pwr_table_ble = <13>; //range:-3~15dbm; if set -3, please set 253 here + }; + }; +}; diff --git a/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_26M.dts b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_26M.dts new file mode 100644 index 00000000..ee95aea9 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_26M.dts @@ -0,0 +1,348 @@ +/dts-v1/; +/include/ "bl602_base.dtsi"; +// version: 17 +// last_comp_version: 16 +// boot_cpuid_phys: 0x0 + +/ { + model = "bl bl602 IOT board"; + compatible = "bl,bl602-sample", "bl,bl602-common"; + #address-cells = <0x1>; + #size-cells = <0x1>; + gpio { + #address-cells = <1>; + #size-cells = <1>; + max_num = <40>; + gpio0 { + status = "okay"; + pin = <5>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio1 { + status = "disable"; + pin = <6>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio2 { + status = "okay"; + pin = <2>; + feature = "button"; + active = "Hi"; + mode = "multipress"; + button { + debounce = <10>; + short_press_ms { + start = <100>; + end = <3000>; + kevent = <2>; + }; + long_press_ms { + start = <6000>; + end = <10000>; + kevent = <3>; + }; + longlong_press_ms { + start = <15000>; + kevent = <4>; + }; + trig_level = "Hi"; + }; + hbn_use = "disable"; + }; + }; + i2s { + #address-cells = <1>; + #size-cells = <1>; + i2s@40017000 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017000 0x100>; + mclk_only = "okay"; + pin { + mclk = <11>; + }; + }; + i2s@40017100 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017100 0x100>; + mclk_only = "disable"; + pin { + bclk = <12>; + fs = <29>; + do = <30>; + di = <31>; + }; + }; + }; + i2c { + #address-cells = <1>; + #size-cells = <1>; + i2c@40011000 { + status = "okay"; + compatible = "bl602_i2c"; + reg = <0x40011000 0x100>; + pin { + scl = <32>; + sda = <13>; + }; + devices { + list_addr = <0x18 0x21>; + list_driver = "i2c_es8311", "i2c_gc0308>"; + }; + }; + i2c@40011100 { + status = "disable"; + compatible = "bl602_i2c"; + reg = <0x40011100 0x100>; + pin { + /*empty here*/ + }; + }; + }; + timer { + #address-cells = <1>; + #size-cells = <1>; + timer@40014000 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014000 0x100>; + }; + timer@40014100 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014100 0x100>; + }; + }; + pwm { + #address-cells = <1>; + #size-cells = <1>; + pwm@4000A420 { + status = "okay"; + compatible = "bl602_pwm"; + reg = <0x4000A420 0x20>; + path = "/dev/pwm0"; + id = <0>; + pin = <0>; + freq = <800000>; + duty = <50>; + }; + pwm@4000A440 { + status = "disable"; + reg = <0x4000A440 0x20>; + path = "/dev/pwm1"; + id = <1>; + pin = <1>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A460 { + status = "disable"; + reg = <0x4000A460 0x20>; + path = "/dev/pwm2"; + id = <2>; + pin = <2>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A480 { + status = "disable"; + reg = <0x4000A480 0x20>; + path = "/dev/pwm3"; + id = <3>; + pin = <3>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A4A0 { + status = "disable"; + reg = <0x4000A4A0 0x20>; + path = "/dev/pwm4"; + id = <4>; + pin = <4>; + freq = <5000>; + duty = <50>; + }; + }; + ir { + #address-cells = <1>; + #size-cells = <1>; + ctrltype = <0>; + tx { + status = "disable"; + pin = <11>; // only support 11 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + interval = <100>; // ms + active_mode = "Hi"; //Hi,Lo + }; + rx { + status = "okay"; + pin = <12>; // only support 12 13 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + active_mode = "Hi"; //Hi,Lo + data_check = <2>; //bit 0:check cmd, bit 1:check addr + }; + }; + uart { + #address-cells = <1>; + #size-cells = <1>; + uart@4000A000 { + status = "okay"; + id = <0>; + compatible = "bl602_uart"; + path = "/dev/ttyS0"; + baudrate = <2000000>; + pin { + rx = <7>; + tx = <16>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + uart@4000A100 { + status = "okay"; + id = <1>; + compatible = "bl602_uart"; + path = "/dev/ttyS1"; + baudrate = <115200>; + pin { + rx = <3>; + tx = <4>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + }; + spi { + #address-cells = <1>; + #size-cells = <1>; + spi@4000F000 { + status = "okay"; /* okay disable */ + mode = "master"; + reg = <0x4000F000 0x100>; /* 4KB */ + path = "/dev/spi0"; + port = <0>; + polar_phase = <1>; /* 0,1,2,3 */ + freq = <6000000>; + pin { + clk = <3>; + cs = <2>; + mosi = <1>; + miso = <0>; + }; + dma_cfg { + tx_dma_ch = <2>; + rx_dma_ch = <3>; + }; + }; + }; + gpip { + #address-cells = <1>; + #size-cells = <1>; + adc_key { + status = "disable"; + pin = <9>; + interrupt = <3>; + key_vol = <0 100 400 300 500>; + key_pcb = "SW1", "SW2", "SW3", "SW4","SW5"; + key_event = "Usr1", "Usr2", "Start", "Up", "Down"; + key_raw = <1 2 3 4 5>; + }; + }; + qspi { + #address-cells = <1>; + #size-cells = <1>; + qspi@4000A000 { + status = "disable"; + reg = <0x4000A000 0x1000>;/* 4KB */ + }; + }; + wifi { + #address-cells = <1>; + #size-cells = <1>; + region { + country_code = <86>; + }; + mac { + mode = "MBF"; + sta_mac_addr = [C8 43 57 82 73 40]; + ap_mac_addr = [C8 43 57 82 73 02]; + }; + sta { + ssid = "yourssid"; + pwd = "yourapssword"; + auto_connect_enable = <0>; + }; + ap { + ssid = "bl_test_005"; + pwd = "12345678"; + ap_channel = <11>; + auto_chan_detect = "disable"; + }; + brd_rf { + xtal_mode = "MF"; + xtal = <36 36 0 60 60>; + /* + pwr_table = < 4 3 3 186 + 4 3 4 176 + 4 3 5 167 + 3 3 0 159 + 3 3 1 149 + 3 3 2 140 + 3 3 3 129 + 3 3 4 119 + 3 3 5 110 + 2 3 0 101 + 2 3 1 91 + 2 3 2 82 + 2 3 3 72 + 2 3 4 62 + 2 3 5 52 + 1 3 3 10>; + */ + pwr_mode = "bf";//B: only use power offset in EFUSE; b: use power offset in EFUSE with incremental mode; F: only use power offset in Flash; f: use power offset in Flash with incremental mode + pwr_table_11b = <20 20 20 18>;//1Mbps 2Mbps 5.5Mbps 11Mbps + pwr_table_11g = <18 18 18 18 18 18 14 14>; //6Mbps 9Mbps 12Mbps 18MBps 24Mbps 36Mbps 48Mbps 54Mbps + pwr_table_11n = <18 18 18 18 18 16 14 14>; //MCS0 MCS1 MCS2 MCS3 MCS4 MCS5 MCS6 MCS7 + pwr_offset = <10 10 10 10 10 10 10 10 10 10 10 10 10 10>;//due to the limit of current DTC, negative value is used. So we work around by adding all the poweroffset with 10. so 8 represents -2; 10 represents 0; 13 represents 3 + }; + rf_temp { + en_tcal = <0>; + linear_or_follow = <1>; + Tchannels = <2412 2427 2442 2457 2472>; + Tchannel_os = <180 168 163 160 157>; + Tchannel_os_low = <199 186 170 165 160>; + Troom_os = <255>; + //negative value is NOT supported. So we use '256' for 0, '255' for -1, '257' for 1,'511' for 256 + }; + }; + bluetooth { + #address-cells = <1>; + #size-cells = <1>; + brd_rf { + pwr_table_ble = <13>; //range:-3~15dbm; if set -3, please set 253 here + }; + }; +}; diff --git a/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_32M.dts b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_32M.dts new file mode 100644 index 00000000..ee95aea9 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_32M.dts @@ -0,0 +1,348 @@ +/dts-v1/; +/include/ "bl602_base.dtsi"; +// version: 17 +// last_comp_version: 16 +// boot_cpuid_phys: 0x0 + +/ { + model = "bl bl602 IOT board"; + compatible = "bl,bl602-sample", "bl,bl602-common"; + #address-cells = <0x1>; + #size-cells = <0x1>; + gpio { + #address-cells = <1>; + #size-cells = <1>; + max_num = <40>; + gpio0 { + status = "okay"; + pin = <5>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio1 { + status = "disable"; + pin = <6>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio2 { + status = "okay"; + pin = <2>; + feature = "button"; + active = "Hi"; + mode = "multipress"; + button { + debounce = <10>; + short_press_ms { + start = <100>; + end = <3000>; + kevent = <2>; + }; + long_press_ms { + start = <6000>; + end = <10000>; + kevent = <3>; + }; + longlong_press_ms { + start = <15000>; + kevent = <4>; + }; + trig_level = "Hi"; + }; + hbn_use = "disable"; + }; + }; + i2s { + #address-cells = <1>; + #size-cells = <1>; + i2s@40017000 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017000 0x100>; + mclk_only = "okay"; + pin { + mclk = <11>; + }; + }; + i2s@40017100 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017100 0x100>; + mclk_only = "disable"; + pin { + bclk = <12>; + fs = <29>; + do = <30>; + di = <31>; + }; + }; + }; + i2c { + #address-cells = <1>; + #size-cells = <1>; + i2c@40011000 { + status = "okay"; + compatible = "bl602_i2c"; + reg = <0x40011000 0x100>; + pin { + scl = <32>; + sda = <13>; + }; + devices { + list_addr = <0x18 0x21>; + list_driver = "i2c_es8311", "i2c_gc0308>"; + }; + }; + i2c@40011100 { + status = "disable"; + compatible = "bl602_i2c"; + reg = <0x40011100 0x100>; + pin { + /*empty here*/ + }; + }; + }; + timer { + #address-cells = <1>; + #size-cells = <1>; + timer@40014000 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014000 0x100>; + }; + timer@40014100 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014100 0x100>; + }; + }; + pwm { + #address-cells = <1>; + #size-cells = <1>; + pwm@4000A420 { + status = "okay"; + compatible = "bl602_pwm"; + reg = <0x4000A420 0x20>; + path = "/dev/pwm0"; + id = <0>; + pin = <0>; + freq = <800000>; + duty = <50>; + }; + pwm@4000A440 { + status = "disable"; + reg = <0x4000A440 0x20>; + path = "/dev/pwm1"; + id = <1>; + pin = <1>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A460 { + status = "disable"; + reg = <0x4000A460 0x20>; + path = "/dev/pwm2"; + id = <2>; + pin = <2>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A480 { + status = "disable"; + reg = <0x4000A480 0x20>; + path = "/dev/pwm3"; + id = <3>; + pin = <3>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A4A0 { + status = "disable"; + reg = <0x4000A4A0 0x20>; + path = "/dev/pwm4"; + id = <4>; + pin = <4>; + freq = <5000>; + duty = <50>; + }; + }; + ir { + #address-cells = <1>; + #size-cells = <1>; + ctrltype = <0>; + tx { + status = "disable"; + pin = <11>; // only support 11 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + interval = <100>; // ms + active_mode = "Hi"; //Hi,Lo + }; + rx { + status = "okay"; + pin = <12>; // only support 12 13 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + active_mode = "Hi"; //Hi,Lo + data_check = <2>; //bit 0:check cmd, bit 1:check addr + }; + }; + uart { + #address-cells = <1>; + #size-cells = <1>; + uart@4000A000 { + status = "okay"; + id = <0>; + compatible = "bl602_uart"; + path = "/dev/ttyS0"; + baudrate = <2000000>; + pin { + rx = <7>; + tx = <16>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + uart@4000A100 { + status = "okay"; + id = <1>; + compatible = "bl602_uart"; + path = "/dev/ttyS1"; + baudrate = <115200>; + pin { + rx = <3>; + tx = <4>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + }; + spi { + #address-cells = <1>; + #size-cells = <1>; + spi@4000F000 { + status = "okay"; /* okay disable */ + mode = "master"; + reg = <0x4000F000 0x100>; /* 4KB */ + path = "/dev/spi0"; + port = <0>; + polar_phase = <1>; /* 0,1,2,3 */ + freq = <6000000>; + pin { + clk = <3>; + cs = <2>; + mosi = <1>; + miso = <0>; + }; + dma_cfg { + tx_dma_ch = <2>; + rx_dma_ch = <3>; + }; + }; + }; + gpip { + #address-cells = <1>; + #size-cells = <1>; + adc_key { + status = "disable"; + pin = <9>; + interrupt = <3>; + key_vol = <0 100 400 300 500>; + key_pcb = "SW1", "SW2", "SW3", "SW4","SW5"; + key_event = "Usr1", "Usr2", "Start", "Up", "Down"; + key_raw = <1 2 3 4 5>; + }; + }; + qspi { + #address-cells = <1>; + #size-cells = <1>; + qspi@4000A000 { + status = "disable"; + reg = <0x4000A000 0x1000>;/* 4KB */ + }; + }; + wifi { + #address-cells = <1>; + #size-cells = <1>; + region { + country_code = <86>; + }; + mac { + mode = "MBF"; + sta_mac_addr = [C8 43 57 82 73 40]; + ap_mac_addr = [C8 43 57 82 73 02]; + }; + sta { + ssid = "yourssid"; + pwd = "yourapssword"; + auto_connect_enable = <0>; + }; + ap { + ssid = "bl_test_005"; + pwd = "12345678"; + ap_channel = <11>; + auto_chan_detect = "disable"; + }; + brd_rf { + xtal_mode = "MF"; + xtal = <36 36 0 60 60>; + /* + pwr_table = < 4 3 3 186 + 4 3 4 176 + 4 3 5 167 + 3 3 0 159 + 3 3 1 149 + 3 3 2 140 + 3 3 3 129 + 3 3 4 119 + 3 3 5 110 + 2 3 0 101 + 2 3 1 91 + 2 3 2 82 + 2 3 3 72 + 2 3 4 62 + 2 3 5 52 + 1 3 3 10>; + */ + pwr_mode = "bf";//B: only use power offset in EFUSE; b: use power offset in EFUSE with incremental mode; F: only use power offset in Flash; f: use power offset in Flash with incremental mode + pwr_table_11b = <20 20 20 18>;//1Mbps 2Mbps 5.5Mbps 11Mbps + pwr_table_11g = <18 18 18 18 18 18 14 14>; //6Mbps 9Mbps 12Mbps 18MBps 24Mbps 36Mbps 48Mbps 54Mbps + pwr_table_11n = <18 18 18 18 18 16 14 14>; //MCS0 MCS1 MCS2 MCS3 MCS4 MCS5 MCS6 MCS7 + pwr_offset = <10 10 10 10 10 10 10 10 10 10 10 10 10 10>;//due to the limit of current DTC, negative value is used. So we work around by adding all the poweroffset with 10. so 8 represents -2; 10 represents 0; 13 represents 3 + }; + rf_temp { + en_tcal = <0>; + linear_or_follow = <1>; + Tchannels = <2412 2427 2442 2457 2472>; + Tchannel_os = <180 168 163 160 157>; + Tchannel_os_low = <199 186 170 165 160>; + Troom_os = <255>; + //negative value is NOT supported. So we use '256' for 0, '255' for -1, '257' for 1,'511' for 256 + }; + }; + bluetooth { + #address-cells = <1>; + #size-cells = <1>; + brd_rf { + pwr_table_ble = <13>; //range:-3~15dbm; if set -3, please set 253 here + }; + }; +}; diff --git a/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_38.4M.dts b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_38.4M.dts new file mode 100644 index 00000000..ee95aea9 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_38.4M.dts @@ -0,0 +1,348 @@ +/dts-v1/; +/include/ "bl602_base.dtsi"; +// version: 17 +// last_comp_version: 16 +// boot_cpuid_phys: 0x0 + +/ { + model = "bl bl602 IOT board"; + compatible = "bl,bl602-sample", "bl,bl602-common"; + #address-cells = <0x1>; + #size-cells = <0x1>; + gpio { + #address-cells = <1>; + #size-cells = <1>; + max_num = <40>; + gpio0 { + status = "okay"; + pin = <5>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio1 { + status = "disable"; + pin = <6>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio2 { + status = "okay"; + pin = <2>; + feature = "button"; + active = "Hi"; + mode = "multipress"; + button { + debounce = <10>; + short_press_ms { + start = <100>; + end = <3000>; + kevent = <2>; + }; + long_press_ms { + start = <6000>; + end = <10000>; + kevent = <3>; + }; + longlong_press_ms { + start = <15000>; + kevent = <4>; + }; + trig_level = "Hi"; + }; + hbn_use = "disable"; + }; + }; + i2s { + #address-cells = <1>; + #size-cells = <1>; + i2s@40017000 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017000 0x100>; + mclk_only = "okay"; + pin { + mclk = <11>; + }; + }; + i2s@40017100 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017100 0x100>; + mclk_only = "disable"; + pin { + bclk = <12>; + fs = <29>; + do = <30>; + di = <31>; + }; + }; + }; + i2c { + #address-cells = <1>; + #size-cells = <1>; + i2c@40011000 { + status = "okay"; + compatible = "bl602_i2c"; + reg = <0x40011000 0x100>; + pin { + scl = <32>; + sda = <13>; + }; + devices { + list_addr = <0x18 0x21>; + list_driver = "i2c_es8311", "i2c_gc0308>"; + }; + }; + i2c@40011100 { + status = "disable"; + compatible = "bl602_i2c"; + reg = <0x40011100 0x100>; + pin { + /*empty here*/ + }; + }; + }; + timer { + #address-cells = <1>; + #size-cells = <1>; + timer@40014000 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014000 0x100>; + }; + timer@40014100 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014100 0x100>; + }; + }; + pwm { + #address-cells = <1>; + #size-cells = <1>; + pwm@4000A420 { + status = "okay"; + compatible = "bl602_pwm"; + reg = <0x4000A420 0x20>; + path = "/dev/pwm0"; + id = <0>; + pin = <0>; + freq = <800000>; + duty = <50>; + }; + pwm@4000A440 { + status = "disable"; + reg = <0x4000A440 0x20>; + path = "/dev/pwm1"; + id = <1>; + pin = <1>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A460 { + status = "disable"; + reg = <0x4000A460 0x20>; + path = "/dev/pwm2"; + id = <2>; + pin = <2>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A480 { + status = "disable"; + reg = <0x4000A480 0x20>; + path = "/dev/pwm3"; + id = <3>; + pin = <3>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A4A0 { + status = "disable"; + reg = <0x4000A4A0 0x20>; + path = "/dev/pwm4"; + id = <4>; + pin = <4>; + freq = <5000>; + duty = <50>; + }; + }; + ir { + #address-cells = <1>; + #size-cells = <1>; + ctrltype = <0>; + tx { + status = "disable"; + pin = <11>; // only support 11 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + interval = <100>; // ms + active_mode = "Hi"; //Hi,Lo + }; + rx { + status = "okay"; + pin = <12>; // only support 12 13 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + active_mode = "Hi"; //Hi,Lo + data_check = <2>; //bit 0:check cmd, bit 1:check addr + }; + }; + uart { + #address-cells = <1>; + #size-cells = <1>; + uart@4000A000 { + status = "okay"; + id = <0>; + compatible = "bl602_uart"; + path = "/dev/ttyS0"; + baudrate = <2000000>; + pin { + rx = <7>; + tx = <16>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + uart@4000A100 { + status = "okay"; + id = <1>; + compatible = "bl602_uart"; + path = "/dev/ttyS1"; + baudrate = <115200>; + pin { + rx = <3>; + tx = <4>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + }; + spi { + #address-cells = <1>; + #size-cells = <1>; + spi@4000F000 { + status = "okay"; /* okay disable */ + mode = "master"; + reg = <0x4000F000 0x100>; /* 4KB */ + path = "/dev/spi0"; + port = <0>; + polar_phase = <1>; /* 0,1,2,3 */ + freq = <6000000>; + pin { + clk = <3>; + cs = <2>; + mosi = <1>; + miso = <0>; + }; + dma_cfg { + tx_dma_ch = <2>; + rx_dma_ch = <3>; + }; + }; + }; + gpip { + #address-cells = <1>; + #size-cells = <1>; + adc_key { + status = "disable"; + pin = <9>; + interrupt = <3>; + key_vol = <0 100 400 300 500>; + key_pcb = "SW1", "SW2", "SW3", "SW4","SW5"; + key_event = "Usr1", "Usr2", "Start", "Up", "Down"; + key_raw = <1 2 3 4 5>; + }; + }; + qspi { + #address-cells = <1>; + #size-cells = <1>; + qspi@4000A000 { + status = "disable"; + reg = <0x4000A000 0x1000>;/* 4KB */ + }; + }; + wifi { + #address-cells = <1>; + #size-cells = <1>; + region { + country_code = <86>; + }; + mac { + mode = "MBF"; + sta_mac_addr = [C8 43 57 82 73 40]; + ap_mac_addr = [C8 43 57 82 73 02]; + }; + sta { + ssid = "yourssid"; + pwd = "yourapssword"; + auto_connect_enable = <0>; + }; + ap { + ssid = "bl_test_005"; + pwd = "12345678"; + ap_channel = <11>; + auto_chan_detect = "disable"; + }; + brd_rf { + xtal_mode = "MF"; + xtal = <36 36 0 60 60>; + /* + pwr_table = < 4 3 3 186 + 4 3 4 176 + 4 3 5 167 + 3 3 0 159 + 3 3 1 149 + 3 3 2 140 + 3 3 3 129 + 3 3 4 119 + 3 3 5 110 + 2 3 0 101 + 2 3 1 91 + 2 3 2 82 + 2 3 3 72 + 2 3 4 62 + 2 3 5 52 + 1 3 3 10>; + */ + pwr_mode = "bf";//B: only use power offset in EFUSE; b: use power offset in EFUSE with incremental mode; F: only use power offset in Flash; f: use power offset in Flash with incremental mode + pwr_table_11b = <20 20 20 18>;//1Mbps 2Mbps 5.5Mbps 11Mbps + pwr_table_11g = <18 18 18 18 18 18 14 14>; //6Mbps 9Mbps 12Mbps 18MBps 24Mbps 36Mbps 48Mbps 54Mbps + pwr_table_11n = <18 18 18 18 18 16 14 14>; //MCS0 MCS1 MCS2 MCS3 MCS4 MCS5 MCS6 MCS7 + pwr_offset = <10 10 10 10 10 10 10 10 10 10 10 10 10 10>;//due to the limit of current DTC, negative value is used. So we work around by adding all the poweroffset with 10. so 8 represents -2; 10 represents 0; 13 represents 3 + }; + rf_temp { + en_tcal = <0>; + linear_or_follow = <1>; + Tchannels = <2412 2427 2442 2457 2472>; + Tchannel_os = <180 168 163 160 157>; + Tchannel_os_low = <199 186 170 165 160>; + Troom_os = <255>; + //negative value is NOT supported. So we use '256' for 0, '255' for -1, '257' for 1,'511' for 256 + }; + }; + bluetooth { + #address-cells = <1>; + #size-cells = <1>; + brd_rf { + pwr_table_ble = <13>; //range:-3~15dbm; if set -3, please set 253 here + }; + }; +}; diff --git a/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_40M.dts b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_40M.dts new file mode 100644 index 00000000..ee95aea9 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_40M.dts @@ -0,0 +1,348 @@ +/dts-v1/; +/include/ "bl602_base.dtsi"; +// version: 17 +// last_comp_version: 16 +// boot_cpuid_phys: 0x0 + +/ { + model = "bl bl602 IOT board"; + compatible = "bl,bl602-sample", "bl,bl602-common"; + #address-cells = <0x1>; + #size-cells = <0x1>; + gpio { + #address-cells = <1>; + #size-cells = <1>; + max_num = <40>; + gpio0 { + status = "okay"; + pin = <5>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio1 { + status = "disable"; + pin = <6>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio2 { + status = "okay"; + pin = <2>; + feature = "button"; + active = "Hi"; + mode = "multipress"; + button { + debounce = <10>; + short_press_ms { + start = <100>; + end = <3000>; + kevent = <2>; + }; + long_press_ms { + start = <6000>; + end = <10000>; + kevent = <3>; + }; + longlong_press_ms { + start = <15000>; + kevent = <4>; + }; + trig_level = "Hi"; + }; + hbn_use = "disable"; + }; + }; + i2s { + #address-cells = <1>; + #size-cells = <1>; + i2s@40017000 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017000 0x100>; + mclk_only = "okay"; + pin { + mclk = <11>; + }; + }; + i2s@40017100 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017100 0x100>; + mclk_only = "disable"; + pin { + bclk = <12>; + fs = <29>; + do = <30>; + di = <31>; + }; + }; + }; + i2c { + #address-cells = <1>; + #size-cells = <1>; + i2c@40011000 { + status = "okay"; + compatible = "bl602_i2c"; + reg = <0x40011000 0x100>; + pin { + scl = <32>; + sda = <13>; + }; + devices { + list_addr = <0x18 0x21>; + list_driver = "i2c_es8311", "i2c_gc0308>"; + }; + }; + i2c@40011100 { + status = "disable"; + compatible = "bl602_i2c"; + reg = <0x40011100 0x100>; + pin { + /*empty here*/ + }; + }; + }; + timer { + #address-cells = <1>; + #size-cells = <1>; + timer@40014000 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014000 0x100>; + }; + timer@40014100 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014100 0x100>; + }; + }; + pwm { + #address-cells = <1>; + #size-cells = <1>; + pwm@4000A420 { + status = "okay"; + compatible = "bl602_pwm"; + reg = <0x4000A420 0x20>; + path = "/dev/pwm0"; + id = <0>; + pin = <0>; + freq = <800000>; + duty = <50>; + }; + pwm@4000A440 { + status = "disable"; + reg = <0x4000A440 0x20>; + path = "/dev/pwm1"; + id = <1>; + pin = <1>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A460 { + status = "disable"; + reg = <0x4000A460 0x20>; + path = "/dev/pwm2"; + id = <2>; + pin = <2>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A480 { + status = "disable"; + reg = <0x4000A480 0x20>; + path = "/dev/pwm3"; + id = <3>; + pin = <3>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A4A0 { + status = "disable"; + reg = <0x4000A4A0 0x20>; + path = "/dev/pwm4"; + id = <4>; + pin = <4>; + freq = <5000>; + duty = <50>; + }; + }; + ir { + #address-cells = <1>; + #size-cells = <1>; + ctrltype = <0>; + tx { + status = "disable"; + pin = <11>; // only support 11 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + interval = <100>; // ms + active_mode = "Hi"; //Hi,Lo + }; + rx { + status = "okay"; + pin = <12>; // only support 12 13 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + active_mode = "Hi"; //Hi,Lo + data_check = <2>; //bit 0:check cmd, bit 1:check addr + }; + }; + uart { + #address-cells = <1>; + #size-cells = <1>; + uart@4000A000 { + status = "okay"; + id = <0>; + compatible = "bl602_uart"; + path = "/dev/ttyS0"; + baudrate = <2000000>; + pin { + rx = <7>; + tx = <16>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + uart@4000A100 { + status = "okay"; + id = <1>; + compatible = "bl602_uart"; + path = "/dev/ttyS1"; + baudrate = <115200>; + pin { + rx = <3>; + tx = <4>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + }; + spi { + #address-cells = <1>; + #size-cells = <1>; + spi@4000F000 { + status = "okay"; /* okay disable */ + mode = "master"; + reg = <0x4000F000 0x100>; /* 4KB */ + path = "/dev/spi0"; + port = <0>; + polar_phase = <1>; /* 0,1,2,3 */ + freq = <6000000>; + pin { + clk = <3>; + cs = <2>; + mosi = <1>; + miso = <0>; + }; + dma_cfg { + tx_dma_ch = <2>; + rx_dma_ch = <3>; + }; + }; + }; + gpip { + #address-cells = <1>; + #size-cells = <1>; + adc_key { + status = "disable"; + pin = <9>; + interrupt = <3>; + key_vol = <0 100 400 300 500>; + key_pcb = "SW1", "SW2", "SW3", "SW4","SW5"; + key_event = "Usr1", "Usr2", "Start", "Up", "Down"; + key_raw = <1 2 3 4 5>; + }; + }; + qspi { + #address-cells = <1>; + #size-cells = <1>; + qspi@4000A000 { + status = "disable"; + reg = <0x4000A000 0x1000>;/* 4KB */ + }; + }; + wifi { + #address-cells = <1>; + #size-cells = <1>; + region { + country_code = <86>; + }; + mac { + mode = "MBF"; + sta_mac_addr = [C8 43 57 82 73 40]; + ap_mac_addr = [C8 43 57 82 73 02]; + }; + sta { + ssid = "yourssid"; + pwd = "yourapssword"; + auto_connect_enable = <0>; + }; + ap { + ssid = "bl_test_005"; + pwd = "12345678"; + ap_channel = <11>; + auto_chan_detect = "disable"; + }; + brd_rf { + xtal_mode = "MF"; + xtal = <36 36 0 60 60>; + /* + pwr_table = < 4 3 3 186 + 4 3 4 176 + 4 3 5 167 + 3 3 0 159 + 3 3 1 149 + 3 3 2 140 + 3 3 3 129 + 3 3 4 119 + 3 3 5 110 + 2 3 0 101 + 2 3 1 91 + 2 3 2 82 + 2 3 3 72 + 2 3 4 62 + 2 3 5 52 + 1 3 3 10>; + */ + pwr_mode = "bf";//B: only use power offset in EFUSE; b: use power offset in EFUSE with incremental mode; F: only use power offset in Flash; f: use power offset in Flash with incremental mode + pwr_table_11b = <20 20 20 18>;//1Mbps 2Mbps 5.5Mbps 11Mbps + pwr_table_11g = <18 18 18 18 18 18 14 14>; //6Mbps 9Mbps 12Mbps 18MBps 24Mbps 36Mbps 48Mbps 54Mbps + pwr_table_11n = <18 18 18 18 18 16 14 14>; //MCS0 MCS1 MCS2 MCS3 MCS4 MCS5 MCS6 MCS7 + pwr_offset = <10 10 10 10 10 10 10 10 10 10 10 10 10 10>;//due to the limit of current DTC, negative value is used. So we work around by adding all the poweroffset with 10. so 8 represents -2; 10 represents 0; 13 represents 3 + }; + rf_temp { + en_tcal = <0>; + linear_or_follow = <1>; + Tchannels = <2412 2427 2442 2457 2472>; + Tchannel_os = <180 168 163 160 157>; + Tchannel_os_low = <199 186 170 165 160>; + Troom_os = <255>; + //negative value is NOT supported. So we use '256' for 0, '255' for -1, '257' for 1,'511' for 256 + }; + }; + bluetooth { + #address-cells = <1>; + #size-cells = <1>; + brd_rf { + pwr_table_ble = <13>; //range:-3~15dbm; if set -3, please set 253 here + }; + }; +}; diff --git a/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_None.dts b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_None.dts new file mode 100644 index 00000000..ee95aea9 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_None.dts @@ -0,0 +1,348 @@ +/dts-v1/; +/include/ "bl602_base.dtsi"; +// version: 17 +// last_comp_version: 16 +// boot_cpuid_phys: 0x0 + +/ { + model = "bl bl602 IOT board"; + compatible = "bl,bl602-sample", "bl,bl602-common"; + #address-cells = <0x1>; + #size-cells = <0x1>; + gpio { + #address-cells = <1>; + #size-cells = <1>; + max_num = <40>; + gpio0 { + status = "okay"; + pin = <5>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio1 { + status = "disable"; + pin = <6>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio2 { + status = "okay"; + pin = <2>; + feature = "button"; + active = "Hi"; + mode = "multipress"; + button { + debounce = <10>; + short_press_ms { + start = <100>; + end = <3000>; + kevent = <2>; + }; + long_press_ms { + start = <6000>; + end = <10000>; + kevent = <3>; + }; + longlong_press_ms { + start = <15000>; + kevent = <4>; + }; + trig_level = "Hi"; + }; + hbn_use = "disable"; + }; + }; + i2s { + #address-cells = <1>; + #size-cells = <1>; + i2s@40017000 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017000 0x100>; + mclk_only = "okay"; + pin { + mclk = <11>; + }; + }; + i2s@40017100 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017100 0x100>; + mclk_only = "disable"; + pin { + bclk = <12>; + fs = <29>; + do = <30>; + di = <31>; + }; + }; + }; + i2c { + #address-cells = <1>; + #size-cells = <1>; + i2c@40011000 { + status = "okay"; + compatible = "bl602_i2c"; + reg = <0x40011000 0x100>; + pin { + scl = <32>; + sda = <13>; + }; + devices { + list_addr = <0x18 0x21>; + list_driver = "i2c_es8311", "i2c_gc0308>"; + }; + }; + i2c@40011100 { + status = "disable"; + compatible = "bl602_i2c"; + reg = <0x40011100 0x100>; + pin { + /*empty here*/ + }; + }; + }; + timer { + #address-cells = <1>; + #size-cells = <1>; + timer@40014000 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014000 0x100>; + }; + timer@40014100 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014100 0x100>; + }; + }; + pwm { + #address-cells = <1>; + #size-cells = <1>; + pwm@4000A420 { + status = "okay"; + compatible = "bl602_pwm"; + reg = <0x4000A420 0x20>; + path = "/dev/pwm0"; + id = <0>; + pin = <0>; + freq = <800000>; + duty = <50>; + }; + pwm@4000A440 { + status = "disable"; + reg = <0x4000A440 0x20>; + path = "/dev/pwm1"; + id = <1>; + pin = <1>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A460 { + status = "disable"; + reg = <0x4000A460 0x20>; + path = "/dev/pwm2"; + id = <2>; + pin = <2>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A480 { + status = "disable"; + reg = <0x4000A480 0x20>; + path = "/dev/pwm3"; + id = <3>; + pin = <3>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A4A0 { + status = "disable"; + reg = <0x4000A4A0 0x20>; + path = "/dev/pwm4"; + id = <4>; + pin = <4>; + freq = <5000>; + duty = <50>; + }; + }; + ir { + #address-cells = <1>; + #size-cells = <1>; + ctrltype = <0>; + tx { + status = "disable"; + pin = <11>; // only support 11 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + interval = <100>; // ms + active_mode = "Hi"; //Hi,Lo + }; + rx { + status = "okay"; + pin = <12>; // only support 12 13 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + active_mode = "Hi"; //Hi,Lo + data_check = <2>; //bit 0:check cmd, bit 1:check addr + }; + }; + uart { + #address-cells = <1>; + #size-cells = <1>; + uart@4000A000 { + status = "okay"; + id = <0>; + compatible = "bl602_uart"; + path = "/dev/ttyS0"; + baudrate = <2000000>; + pin { + rx = <7>; + tx = <16>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + uart@4000A100 { + status = "okay"; + id = <1>; + compatible = "bl602_uart"; + path = "/dev/ttyS1"; + baudrate = <115200>; + pin { + rx = <3>; + tx = <4>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + }; + spi { + #address-cells = <1>; + #size-cells = <1>; + spi@4000F000 { + status = "okay"; /* okay disable */ + mode = "master"; + reg = <0x4000F000 0x100>; /* 4KB */ + path = "/dev/spi0"; + port = <0>; + polar_phase = <1>; /* 0,1,2,3 */ + freq = <6000000>; + pin { + clk = <3>; + cs = <2>; + mosi = <1>; + miso = <0>; + }; + dma_cfg { + tx_dma_ch = <2>; + rx_dma_ch = <3>; + }; + }; + }; + gpip { + #address-cells = <1>; + #size-cells = <1>; + adc_key { + status = "disable"; + pin = <9>; + interrupt = <3>; + key_vol = <0 100 400 300 500>; + key_pcb = "SW1", "SW2", "SW3", "SW4","SW5"; + key_event = "Usr1", "Usr2", "Start", "Up", "Down"; + key_raw = <1 2 3 4 5>; + }; + }; + qspi { + #address-cells = <1>; + #size-cells = <1>; + qspi@4000A000 { + status = "disable"; + reg = <0x4000A000 0x1000>;/* 4KB */ + }; + }; + wifi { + #address-cells = <1>; + #size-cells = <1>; + region { + country_code = <86>; + }; + mac { + mode = "MBF"; + sta_mac_addr = [C8 43 57 82 73 40]; + ap_mac_addr = [C8 43 57 82 73 02]; + }; + sta { + ssid = "yourssid"; + pwd = "yourapssword"; + auto_connect_enable = <0>; + }; + ap { + ssid = "bl_test_005"; + pwd = "12345678"; + ap_channel = <11>; + auto_chan_detect = "disable"; + }; + brd_rf { + xtal_mode = "MF"; + xtal = <36 36 0 60 60>; + /* + pwr_table = < 4 3 3 186 + 4 3 4 176 + 4 3 5 167 + 3 3 0 159 + 3 3 1 149 + 3 3 2 140 + 3 3 3 129 + 3 3 4 119 + 3 3 5 110 + 2 3 0 101 + 2 3 1 91 + 2 3 2 82 + 2 3 3 72 + 2 3 4 62 + 2 3 5 52 + 1 3 3 10>; + */ + pwr_mode = "bf";//B: only use power offset in EFUSE; b: use power offset in EFUSE with incremental mode; F: only use power offset in Flash; f: use power offset in Flash with incremental mode + pwr_table_11b = <20 20 20 18>;//1Mbps 2Mbps 5.5Mbps 11Mbps + pwr_table_11g = <18 18 18 18 18 18 14 14>; //6Mbps 9Mbps 12Mbps 18MBps 24Mbps 36Mbps 48Mbps 54Mbps + pwr_table_11n = <18 18 18 18 18 16 14 14>; //MCS0 MCS1 MCS2 MCS3 MCS4 MCS5 MCS6 MCS7 + pwr_offset = <10 10 10 10 10 10 10 10 10 10 10 10 10 10>;//due to the limit of current DTC, negative value is used. So we work around by adding all the poweroffset with 10. so 8 represents -2; 10 represents 0; 13 represents 3 + }; + rf_temp { + en_tcal = <0>; + linear_or_follow = <1>; + Tchannels = <2412 2427 2442 2457 2472>; + Tchannel_os = <180 168 163 160 157>; + Tchannel_os_low = <199 186 170 165 160>; + Troom_os = <255>; + //negative value is NOT supported. So we use '256' for 0, '255' for -1, '257' for 1,'511' for 256 + }; + }; + bluetooth { + #address-cells = <1>; + #size-cells = <1>; + brd_rf { + pwr_table_ble = <13>; //range:-3~15dbm; if set -3, please set 253 here + }; + }; +}; diff --git a/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_RC32M.dts b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_RC32M.dts new file mode 100644 index 00000000..ee95aea9 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/device_tree/bl_factory_params_IoTKitA_RC32M.dts @@ -0,0 +1,348 @@ +/dts-v1/; +/include/ "bl602_base.dtsi"; +// version: 17 +// last_comp_version: 16 +// boot_cpuid_phys: 0x0 + +/ { + model = "bl bl602 IOT board"; + compatible = "bl,bl602-sample", "bl,bl602-common"; + #address-cells = <0x1>; + #size-cells = <0x1>; + gpio { + #address-cells = <1>; + #size-cells = <1>; + max_num = <40>; + gpio0 { + status = "okay"; + pin = <5>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio1 { + status = "disable"; + pin = <6>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat + time = <100>; //duration for this mode + }; + gpio2 { + status = "okay"; + pin = <2>; + feature = "button"; + active = "Hi"; + mode = "multipress"; + button { + debounce = <10>; + short_press_ms { + start = <100>; + end = <3000>; + kevent = <2>; + }; + long_press_ms { + start = <6000>; + end = <10000>; + kevent = <3>; + }; + longlong_press_ms { + start = <15000>; + kevent = <4>; + }; + trig_level = "Hi"; + }; + hbn_use = "disable"; + }; + }; + i2s { + #address-cells = <1>; + #size-cells = <1>; + i2s@40017000 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017000 0x100>; + mclk_only = "okay"; + pin { + mclk = <11>; + }; + }; + i2s@40017100 { + status = "okay"; + compatible = "bl602_i2s"; + reg = <0x40017100 0x100>; + mclk_only = "disable"; + pin { + bclk = <12>; + fs = <29>; + do = <30>; + di = <31>; + }; + }; + }; + i2c { + #address-cells = <1>; + #size-cells = <1>; + i2c@40011000 { + status = "okay"; + compatible = "bl602_i2c"; + reg = <0x40011000 0x100>; + pin { + scl = <32>; + sda = <13>; + }; + devices { + list_addr = <0x18 0x21>; + list_driver = "i2c_es8311", "i2c_gc0308>"; + }; + }; + i2c@40011100 { + status = "disable"; + compatible = "bl602_i2c"; + reg = <0x40011100 0x100>; + pin { + /*empty here*/ + }; + }; + }; + timer { + #address-cells = <1>; + #size-cells = <1>; + timer@40014000 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014000 0x100>; + }; + timer@40014100 { + status = "disable"; + compatible = "bl602_timer"; + reg = <0x40014100 0x100>; + }; + }; + pwm { + #address-cells = <1>; + #size-cells = <1>; + pwm@4000A420 { + status = "okay"; + compatible = "bl602_pwm"; + reg = <0x4000A420 0x20>; + path = "/dev/pwm0"; + id = <0>; + pin = <0>; + freq = <800000>; + duty = <50>; + }; + pwm@4000A440 { + status = "disable"; + reg = <0x4000A440 0x20>; + path = "/dev/pwm1"; + id = <1>; + pin = <1>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A460 { + status = "disable"; + reg = <0x4000A460 0x20>; + path = "/dev/pwm2"; + id = <2>; + pin = <2>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A480 { + status = "disable"; + reg = <0x4000A480 0x20>; + path = "/dev/pwm3"; + id = <3>; + pin = <3>; + freq = <5000>; + duty = <50>; + }; + pwm@4000A4A0 { + status = "disable"; + reg = <0x4000A4A0 0x20>; + path = "/dev/pwm4"; + id = <4>; + pin = <4>; + freq = <5000>; + duty = <50>; + }; + }; + ir { + #address-cells = <1>; + #size-cells = <1>; + ctrltype = <0>; + tx { + status = "disable"; + pin = <11>; // only support 11 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + interval = <100>; // ms + active_mode = "Hi"; //Hi,Lo + }; + rx { + status = "okay"; + pin = <12>; // only support 12 13 + mode = "NEC"; // NEC,ExtenedNEC,RC5,SWM + active_mode = "Hi"; //Hi,Lo + data_check = <2>; //bit 0:check cmd, bit 1:check addr + }; + }; + uart { + #address-cells = <1>; + #size-cells = <1>; + uart@4000A000 { + status = "okay"; + id = <0>; + compatible = "bl602_uart"; + path = "/dev/ttyS0"; + baudrate = <2000000>; + pin { + rx = <7>; + tx = <16>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + uart@4000A100 { + status = "okay"; + id = <1>; + compatible = "bl602_uart"; + path = "/dev/ttyS1"; + baudrate = <115200>; + pin { + rx = <3>; + tx = <4>; + }; + buf_size { + rx_size = <512>; + tx_size = <512>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + }; + spi { + #address-cells = <1>; + #size-cells = <1>; + spi@4000F000 { + status = "okay"; /* okay disable */ + mode = "master"; + reg = <0x4000F000 0x100>; /* 4KB */ + path = "/dev/spi0"; + port = <0>; + polar_phase = <1>; /* 0,1,2,3 */ + freq = <6000000>; + pin { + clk = <3>; + cs = <2>; + mosi = <1>; + miso = <0>; + }; + dma_cfg { + tx_dma_ch = <2>; + rx_dma_ch = <3>; + }; + }; + }; + gpip { + #address-cells = <1>; + #size-cells = <1>; + adc_key { + status = "disable"; + pin = <9>; + interrupt = <3>; + key_vol = <0 100 400 300 500>; + key_pcb = "SW1", "SW2", "SW3", "SW4","SW5"; + key_event = "Usr1", "Usr2", "Start", "Up", "Down"; + key_raw = <1 2 3 4 5>; + }; + }; + qspi { + #address-cells = <1>; + #size-cells = <1>; + qspi@4000A000 { + status = "disable"; + reg = <0x4000A000 0x1000>;/* 4KB */ + }; + }; + wifi { + #address-cells = <1>; + #size-cells = <1>; + region { + country_code = <86>; + }; + mac { + mode = "MBF"; + sta_mac_addr = [C8 43 57 82 73 40]; + ap_mac_addr = [C8 43 57 82 73 02]; + }; + sta { + ssid = "yourssid"; + pwd = "yourapssword"; + auto_connect_enable = <0>; + }; + ap { + ssid = "bl_test_005"; + pwd = "12345678"; + ap_channel = <11>; + auto_chan_detect = "disable"; + }; + brd_rf { + xtal_mode = "MF"; + xtal = <36 36 0 60 60>; + /* + pwr_table = < 4 3 3 186 + 4 3 4 176 + 4 3 5 167 + 3 3 0 159 + 3 3 1 149 + 3 3 2 140 + 3 3 3 129 + 3 3 4 119 + 3 3 5 110 + 2 3 0 101 + 2 3 1 91 + 2 3 2 82 + 2 3 3 72 + 2 3 4 62 + 2 3 5 52 + 1 3 3 10>; + */ + pwr_mode = "bf";//B: only use power offset in EFUSE; b: use power offset in EFUSE with incremental mode; F: only use power offset in Flash; f: use power offset in Flash with incremental mode + pwr_table_11b = <20 20 20 18>;//1Mbps 2Mbps 5.5Mbps 11Mbps + pwr_table_11g = <18 18 18 18 18 18 14 14>; //6Mbps 9Mbps 12Mbps 18MBps 24Mbps 36Mbps 48Mbps 54Mbps + pwr_table_11n = <18 18 18 18 18 16 14 14>; //MCS0 MCS1 MCS2 MCS3 MCS4 MCS5 MCS6 MCS7 + pwr_offset = <10 10 10 10 10 10 10 10 10 10 10 10 10 10>;//due to the limit of current DTC, negative value is used. So we work around by adding all the poweroffset with 10. so 8 represents -2; 10 represents 0; 13 represents 3 + }; + rf_temp { + en_tcal = <0>; + linear_or_follow = <1>; + Tchannels = <2412 2427 2442 2457 2472>; + Tchannel_os = <180 168 163 160 157>; + Tchannel_os_low = <199 186 170 165 160>; + Troom_os = <255>; + //negative value is NOT supported. So we use '256' for 0, '255' for -1, '257' for 1,'511' for 256 + }; + }; + bluetooth { + #address-cells = <1>; + #size-cells = <1>; + brd_rf { + pwr_table_ble = <13>; //range:-3~15dbm; if set -3, please set 253 here + }; + }; +}; diff --git a/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader.elf b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader.elf new file mode 100644 index 00000000..6946579c Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader.elf differ diff --git a/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader.map b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader.map new file mode 100644 index 00000000..c4074b5c --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader.map @@ -0,0 +1,11542 @@ +Archive member included to satisfy reference by file (symbol) + +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + out/BSP_Common/xz/xz_dec_lzma2.o (memmove) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + out/3rdParty/FreeRTOS/Source/tasks.o (__clzsi2) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + out/BSP_Common/libc/vsnprintf.o (__udivdi3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + out/BSP_Common/libc/vsnprintf.o (__umoddi3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + out/BSP_Common/libc/atof.o (__adddf3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o (__divdf3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o (__muldf3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o (__fixdfsi) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o (__fixunsdfsi) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + out/BSP_Common/libc/atof.o (__floatsidf) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o (__floatunsidf) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) (__clz_tab) + +Discarded input sections + + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/main.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/main.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/main.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/main.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x7a2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x20a out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xa68 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x47b7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x11f8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x7c0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x36b out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x4f out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xaec out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x1a74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x2071 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xba out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x70 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x96 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x7c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_deinit_ext_flash_gpio + 0x0000000000000000 0xce out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_deinit_uart_gpio_do + 0x0000000000000000 0x50 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_deinit_uart_gpio + 0x0000000000000000 0x8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_deinit_sdio_gpio + 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_disable_cci_sdio_co_exsit + 0x0000000000000000 0x14 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_init_flash_gpio + 0x0000000000000000 0x12c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .rodata.bflb_eflash_loader_init_flash_gpio.str1.4 + 0x0000000000000000 0x13 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x7a2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x20a out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xa68 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x47b7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x11f8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x7c0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x36b out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x4f out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xaec out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x1a74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x2071 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xba out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x70 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x96 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x7c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_select + 0x0000000000000000 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_init + 0x0000000000000000 0x8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_handshake_poll + 0x0000000000000000 0x8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_read + 0x0000000000000000 0x12 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_write + 0x0000000000000000 0xa out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_wait_tx_idle + 0x0000000000000000 0x8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_deinit + 0x0000000000000000 0x6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.eflash_loader_dump_data + 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x7a2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x20a out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0xa68 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x47b7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x11f8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x7c0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x36b out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x4f out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0xaec out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x1a74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x2071 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0xba out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x70 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x96 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x7c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0xe2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x28 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .text.bflb_eflash_loader_jlink_change_rate + 0x0000000000000000 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x7a2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x20a out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0xa68 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x47b7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x11f8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x7c0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x36b out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x4f out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0xaec out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x1a74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x2071 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0xba out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x70 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x96 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x7c out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .text.bflb_eflash_loader_uart_change_rate + 0x0000000000000000 0xae out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .rodata.bflb_eflash_loader_uart_change_rate.str1.4 + 0x0000000000000000 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x7a2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x20a out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xa68 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x47b7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x11f8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x7c0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x36b out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x4f out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xaec out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x1a74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x2071 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xba out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x70 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x96 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x7c out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x7a2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x20a out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0xa68 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x47b7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x11f8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x7c0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x36b out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x4f out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0xaec out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x1a74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x2071 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0xba out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x70 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x96 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x7c out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x18f out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .text.bflb_eflash_loader_no_header_boot_enable + 0x0000000000000000 0xe out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .text.bflb_eflash_loader_boot_init + 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .text.bflb_eflash_loader_boot_read + 0x0000000000000000 0x8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .rodata.bflb_eflash_loader_clk_set_from_user.str1.4 + 0x0000000000000000 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x7a2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x20a out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0xa68 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x47b7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x11f8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x7c0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x36b out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x4f out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0xaec out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x1a74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x2071 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0xba out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x70 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x96 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x7c out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0xe2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text.bflb_spi_flash_update_controller + 0x0000000000000000 0xec out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text.bflb_spi_flash_update_cfg + 0x0000000000000000 0xae out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text.bflb_spi_flash_boot + 0x0000000000000000 0x114 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text.bflb_spi_flash_sbus_xip_read_init + 0x0000000000000000 0x60 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text.bflb_spi_flash_deinit + 0x0000000000000000 0x2 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text.bflb_spi_flash_read_sahb_xip + 0x0000000000000000 0x4 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text.bflb_qe_data_clear + 0x0000000000000000 0x68 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .rodata.CSWTCH.58 + 0x0000000000000000 0x7 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .rodata.bflb_qe_data_clear.str1.4 + 0x0000000000000000 0x8 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .rodata.bflb_spi_flash_boot.str1.4 + 0x0000000000000000 0x15 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .rodata.bflb_spi_flash_sbus_xip_read_init.str1.4 + 0x0000000000000000 0xb out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .rodata.bflb_spi_flash_update_cfg.str1.4 + 0x0000000000000000 0x21 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x7a2 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x20a out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0xa68 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x47b7 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x11f8 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x7c0 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x36b out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x4f out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0xaec out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x1a74 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x2071 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0xba out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x70 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x96 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x7c out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_efuse.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_efuse.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x7a2 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x20a out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0xa68 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x47b7 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x11f8 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x7c0 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x36b out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x4f out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0xaec out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x1a74 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x2071 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0xba out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x70 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x96 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x7a2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x20a out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0xa68 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x47b7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x11f8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x7c0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x36b out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x4f out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0xaec out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x1a74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x2071 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0xba out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x70 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x96 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x0000000000000000 0x7c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .text.bflb_set_low_speed_system_clock + 0x0000000000000000 0xa out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x7a2 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x20a out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0xa68 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x47b7 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x11f8 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x7c0 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x36b out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x4f out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0xaec out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x1a74 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x2071 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0xba out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x70 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x96 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x7c out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/sdu.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/sdu.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/sdu.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x7a2 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x20a out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0xa68 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x47b7 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x11f8 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x7c0 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x36b out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x4f out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0xaec out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x1a74 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x2071 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0xba out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x70 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x96 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x7c out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/sdu.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .text 0x0000000000000000 0x0 out/BSP_Common/ring_buffer/ring_buffer.o + .data 0x0000000000000000 0x0 out/BSP_Common/ring_buffer/ring_buffer.o + .bss 0x0000000000000000 0x0 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write_Copy + 0x0000000000000000 0x28 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Read_Copy + 0x0000000000000000 0x26 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Init + 0x0000000000000000 0x1c out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Reset + 0x0000000000000000 0x14 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Get_Length + 0x0000000000000000 0x44 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Read_Callback + 0x0000000000000000 0xb0 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Read + 0x0000000000000000 0x22 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Read_Byte + 0x0000000000000000 0x70 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Peek + 0x0000000000000000 0xa0 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Peek_Byte + 0x0000000000000000 0x42 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write_Callback + 0x0000000000000000 0xb2 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write + 0x0000000000000000 0x22 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write_Byte + 0x0000000000000000 0x6c out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write_Force + 0x0000000000000000 0xe2 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Get_Empty_Length + 0x0000000000000000 0x1c out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Get_Status + 0x0000000000000000 0x40 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write_Byte_Force + 0x0000000000000000 0x7c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_info 0x0000000000000000 0x9d9 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_abbrev 0x0000000000000000 0x2c2 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_loc 0x0000000000000000 0xa0b out/BSP_Common/ring_buffer/ring_buffer.o + .debug_aranges + 0x0000000000000000 0xa0 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_ranges 0x0000000000000000 0xf0 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x1b7 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_line 0x0000000000000000 0x136f out/BSP_Common/ring_buffer/ring_buffer.o + .debug_str 0x0000000000000000 0x7efdc out/BSP_Common/ring_buffer/ring_buffer.o + .comment 0x0000000000000000 0x33 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_frame 0x0000000000000000 0x2b8 out/BSP_Common/ring_buffer/ring_buffer.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/atof.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/atof.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/atof.o + .text.strntof.part.0 + 0x0000000000000000 0x2b6 out/BSP_Common/libc/atof.o + .text.strntof 0x0000000000000000 0x8 out/BSP_Common/libc/atof.o + .text.atof 0x0000000000000000 0x26 out/BSP_Common/libc/atof.o + .rodata.strntof.part.0.cst8 + 0x0000000000000000 0x10 out/BSP_Common/libc/atof.o + .debug_info 0x0000000000000000 0x391 out/BSP_Common/libc/atof.o + .debug_abbrev 0x0000000000000000 0x1be out/BSP_Common/libc/atof.o + .debug_loc 0x0000000000000000 0x5c0 out/BSP_Common/libc/atof.o + .debug_aranges + 0x0000000000000000 0x30 out/BSP_Common/libc/atof.o + .debug_ranges 0x0000000000000000 0x98 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x67 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/atof.o + .debug_line 0x0000000000000000 0x6f5 out/BSP_Common/libc/atof.o + .debug_str 0x0000000000000000 0x3e1d out/BSP_Common/libc/atof.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/atof.o + .debug_frame 0x0000000000000000 0x90 out/BSP_Common/libc/atof.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/atoi.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/atoi.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/atoi.o + .text.atoi 0x0000000000000000 0x18 out/BSP_Common/libc/atoi.o + .debug_info 0x0000000000000000 0xdf out/BSP_Common/libc/atoi.o + .debug_abbrev 0x0000000000000000 0xa5 out/BSP_Common/libc/atoi.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/atoi.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/atoi.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x84 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atoi.o + .debug_line 0x0000000000000000 0x19e out/BSP_Common/libc/atoi.o + .debug_str 0x0000000000000000 0x3ebb out/BSP_Common/libc/atoi.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/atoi.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/atoi.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/atol.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/atol.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/atol.o + .text.atol 0x0000000000000000 0x18 out/BSP_Common/libc/atol.o + .debug_info 0x0000000000000000 0xe6 out/BSP_Common/libc/atol.o + .debug_abbrev 0x0000000000000000 0xa5 out/BSP_Common/libc/atol.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/atol.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/atol.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x84 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atol.o + .debug_line 0x0000000000000000 0x19e out/BSP_Common/libc/atol.o + .debug_str 0x0000000000000000 0x3ec5 out/BSP_Common/libc/atol.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/atol.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/atol.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/atoll.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/atoll.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/atoll.o + .text.atoll 0x0000000000000000 0xe out/BSP_Common/libc/atoll.o + .debug_info 0x0000000000000000 0xdf out/BSP_Common/libc/atoll.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/atoll.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/atoll.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/atoll.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x84 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atoll.o + .debug_line 0x0000000000000000 0x17f out/BSP_Common/libc/atoll.o + .debug_str 0x0000000000000000 0x3ec4 out/BSP_Common/libc/atoll.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/atoll.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/atoll.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/jrand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/jrand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/jrand48.o + .text.jrand48 0x0000000000000000 0x58 out/BSP_Common/libc/jrand48.o + .debug_info 0x0000000000000000 0xd3 out/BSP_Common/libc/jrand48.o + .debug_abbrev 0x0000000000000000 0x85 out/BSP_Common/libc/jrand48.o + .debug_loc 0x0000000000000000 0x82 out/BSP_Common/libc/jrand48.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/jrand48.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/jrand48.o + .debug_line 0x0000000000000000 0x174 out/BSP_Common/libc/jrand48.o + .debug_str 0x0000000000000000 0x30f9 out/BSP_Common/libc/jrand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/jrand48.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/jrand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/lrand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/lrand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/lrand48.o + .text.lrand48 0x0000000000000000 0x1c out/BSP_Common/libc/lrand48.o + .text.rand 0x0000000000000000 0x1c out/BSP_Common/libc/lrand48.o + .text.random 0x0000000000000000 0x8 out/BSP_Common/libc/lrand48.o + .bss.__rand48_seed + 0x0000000000000000 0x6 out/BSP_Common/libc/lrand48.o + .debug_info 0x0000000000000000 0x129 out/BSP_Common/libc/lrand48.o + .debug_abbrev 0x0000000000000000 0xf4 out/BSP_Common/libc/lrand48.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Common/libc/lrand48.o + .debug_ranges 0x0000000000000000 0x38 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/lrand48.o + .debug_line 0x0000000000000000 0x131 out/BSP_Common/libc/lrand48.o + .debug_str 0x0000000000000000 0x3104 out/BSP_Common/libc/lrand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/lrand48.o + .debug_frame 0x0000000000000000 0x58 out/BSP_Common/libc/lrand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/mrand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/mrand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/mrand48.o + .text.mrand48 0x0000000000000000 0x10 out/BSP_Common/libc/mrand48.o + .debug_info 0x0000000000000000 0xbc out/BSP_Common/libc/mrand48.o + .debug_abbrev 0x0000000000000000 0x91 out/BSP_Common/libc/mrand48.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/mrand48.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/mrand48.o + .debug_line 0x0000000000000000 0xb8 out/BSP_Common/libc/mrand48.o + .debug_str 0x0000000000000000 0x30ef out/BSP_Common/libc/mrand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/mrand48.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/mrand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/nrand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/nrand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/nrand48.o + .text.nrand48 0x0000000000000000 0x14 out/BSP_Common/libc/nrand48.o + .debug_info 0x0000000000000000 0xca out/BSP_Common/libc/nrand48.o + .debug_abbrev 0x0000000000000000 0x9e out/BSP_Common/libc/nrand48.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/nrand48.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/nrand48.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/nrand48.o + .debug_line 0x0000000000000000 0xc8 out/BSP_Common/libc/nrand48.o + .debug_str 0x0000000000000000 0x30f0 out/BSP_Common/libc/nrand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/nrand48.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/nrand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/seed48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/seed48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/seed48.o + .text.seed48 0x0000000000000000 0x5e out/BSP_Common/libc/seed48.o + .bss.oldseed.1539 + 0x0000000000000000 0x6 out/BSP_Common/libc/seed48.o + .debug_info 0x0000000000000000 0xc8 out/BSP_Common/libc/seed48.o + .debug_abbrev 0x0000000000000000 0x9b out/BSP_Common/libc/seed48.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/seed48.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/seed48.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x4e out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/seed48.o + .debug_line 0x0000000000000000 0xe7 out/BSP_Common/libc/seed48.o + .debug_str 0x0000000000000000 0x30f5 out/BSP_Common/libc/seed48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/seed48.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/seed48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/srand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/srand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/srand48.o + .text.srand48 0x0000000000000000 0x20 out/BSP_Common/libc/srand48.o + .text.srand 0x0000000000000000 0x20 out/BSP_Common/libc/srand48.o + .text.srandom 0x0000000000000000 0x8 out/BSP_Common/libc/srand48.o + .debug_info 0x0000000000000000 0x121 out/BSP_Common/libc/srand48.o + .debug_abbrev 0x0000000000000000 0x107 out/BSP_Common/libc/srand48.o + .debug_loc 0x0000000000000000 0x13 out/BSP_Common/libc/srand48.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Common/libc/srand48.o + .debug_ranges 0x0000000000000000 0x18 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/srand48.o + .debug_line 0x0000000000000000 0x165 out/BSP_Common/libc/srand48.o + .debug_str 0x0000000000000000 0x3106 out/BSP_Common/libc/srand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/srand48.o + .debug_frame 0x0000000000000000 0x40 out/BSP_Common/libc/srand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memccpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memccpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memccpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memccpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memccpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memccpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memccpy.o + .text.memccpy 0x0000000000000000 0x20 out/BSP_Common/libc/memccpy.o + .debug_info 0x0000000000000000 0x116 out/BSP_Common/libc/memccpy.o + .debug_abbrev 0x0000000000000000 0xa9 out/BSP_Common/libc/memccpy.o + .debug_loc 0x0000000000000000 0xdf out/BSP_Common/libc/memccpy.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memccpy.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memccpy.o + .debug_line 0x0000000000000000 0x11b out/BSP_Common/libc/memccpy.o + .debug_str 0x0000000000000000 0x2ec2 out/BSP_Common/libc/memccpy.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memccpy.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/memccpy.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memccpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memcpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memcpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memcpy.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/memcpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memcpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memcpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memset.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memset.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memset.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memset.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memset.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memset.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memset.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memswap.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memswap.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memswap.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memswap.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memswap.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memswap.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memswap.o + .text.memswap 0x0000000000000000 0x1e out/BSP_Common/libc/memswap.o + .debug_info 0x0000000000000000 0xf3 out/BSP_Common/libc/memswap.o + .debug_abbrev 0x0000000000000000 0x8a out/BSP_Common/libc/memswap.o + .debug_loc 0x0000000000000000 0xdb out/BSP_Common/libc/memswap.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memswap.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memswap.o + .debug_line 0x0000000000000000 0x121 out/BSP_Common/libc/memswap.o + .debug_str 0x0000000000000000 0x2ec2 out/BSP_Common/libc/memswap.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memswap.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/memswap.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memswap.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memchr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memchr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memchr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memchr.o + .text.memchr 0x0000000000000000 0x24 out/BSP_Common/libc/memchr.o + .debug_info 0x0000000000000000 0xdd out/BSP_Common/libc/memchr.o + .debug_abbrev 0x0000000000000000 0x98 out/BSP_Common/libc/memchr.o + .debug_loc 0x0000000000000000 0x85 out/BSP_Common/libc/memchr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memchr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memchr.o + .debug_line 0x0000000000000000 0xfc out/BSP_Common/libc/memchr.o + .debug_str 0x0000000000000000 0x2ebb out/BSP_Common/libc/memchr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memchr.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/memchr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memrchr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memrchr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memrchr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memrchr.o + .text.memrchr 0x0000000000000000 0x2c out/BSP_Common/libc/memrchr.o + .debug_info 0x0000000000000000 0xdd out/BSP_Common/libc/memrchr.o + .debug_abbrev 0x0000000000000000 0x98 out/BSP_Common/libc/memrchr.o + .debug_loc 0x0000000000000000 0x82 out/BSP_Common/libc/memrchr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memrchr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memrchr.o + .debug_line 0x0000000000000000 0x113 out/BSP_Common/libc/memrchr.o + .debug_str 0x0000000000000000 0x2ebd out/BSP_Common/libc/memrchr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memrchr.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/memrchr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memmem.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memmem.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memmem.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memmem.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memmem.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memmem.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memmem.o + .text.memmem 0x0000000000000000 0xb6 out/BSP_Common/libc/memmem.o + .debug_info 0x0000000000000000 0x152 out/BSP_Common/libc/memmem.o + .debug_abbrev 0x0000000000000000 0xd1 out/BSP_Common/libc/memmem.o + .debug_loc 0x0000000000000000 0x253 out/BSP_Common/libc/memmem.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memmem.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memmem.o + .debug_line 0x0000000000000000 0x244 out/BSP_Common/libc/memmem.o + .debug_str 0x0000000000000000 0x2ee3 out/BSP_Common/libc/memmem.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memmem.o + .debug_frame 0x0000000000000000 0x80 out/BSP_Common/libc/memmem.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memmem.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memcmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memcmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/bsearch.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/bsearch.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/bsearch.o + .text.bsearch 0x0000000000000000 0x5e out/BSP_Common/libc/bsearch.o + .debug_info 0x0000000000000000 0x11a out/BSP_Common/libc/bsearch.o + .debug_abbrev 0x0000000000000000 0xd0 out/BSP_Common/libc/bsearch.o + .debug_loc 0x0000000000000000 0x181 out/BSP_Common/libc/bsearch.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/bsearch.o + .debug_ranges 0x0000000000000000 0x28 out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x3b out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/bsearch.o + .debug_line 0x0000000000000000 0x16d out/BSP_Common/libc/bsearch.o + .debug_str 0x0000000000000000 0x2939 out/BSP_Common/libc/bsearch.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/bsearch.o + .debug_frame 0x0000000000000000 0x4c out/BSP_Common/libc/bsearch.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/qsort.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/qsort.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/qsort.o + .text.qsort 0x0000000000000000 0xd2 out/BSP_Common/libc/qsort.o + .debug_info 0x0000000000000000 0x1d0 out/BSP_Common/libc/qsort.o + .debug_abbrev 0x0000000000000000 0x127 out/BSP_Common/libc/qsort.o + .debug_loc 0x0000000000000000 0x287 out/BSP_Common/libc/qsort.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/qsort.o + .debug_ranges 0x0000000000000000 0x48 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x65 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/qsort.o + .debug_line 0x0000000000000000 0x36c out/BSP_Common/libc/qsort.o + .debug_str 0x0000000000000000 0x324a out/BSP_Common/libc/qsort.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/qsort.o + .debug_frame 0x0000000000000000 0x70 out/BSP_Common/libc/qsort.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/fnmatch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/fnmatch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/fnmatch.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/fnmatch.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/fnmatch.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/fnmatch.o + .text.fnmatch 0x0000000000000000 0x182 out/BSP_Common/libc/fnmatch.o + .debug_info 0x0000000000000000 0x110 out/BSP_Common/libc/fnmatch.o + .debug_abbrev 0x0000000000000000 0xd3 out/BSP_Common/libc/fnmatch.o + .debug_loc 0x0000000000000000 0x164 out/BSP_Common/libc/fnmatch.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/fnmatch.o + .debug_ranges 0x0000000000000000 0x70 out/BSP_Common/libc/fnmatch.o + .debug_macro 0x0000000000000000 0x29 out/BSP_Common/libc/fnmatch.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/fnmatch.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/fnmatch.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/libc/fnmatch.o + .debug_line 0x0000000000000000 0x404 out/BSP_Common/libc/fnmatch.o + .debug_str 0x0000000000000000 0x26dc out/BSP_Common/libc/fnmatch.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/fnmatch.o + .debug_frame 0x0000000000000000 0x48 out/BSP_Common/libc/fnmatch.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/fnmatch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/snprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/snprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/snprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/snprintf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/snprintf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/snprintf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/snprintf.o + .text.snprintf + 0x0000000000000000 0x24 out/BSP_Common/libc/snprintf.o + .debug_info 0x0000000000000000 0x110 out/BSP_Common/libc/snprintf.o + .debug_abbrev 0x0000000000000000 0xd5 out/BSP_Common/libc/snprintf.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/snprintf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/snprintf.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x3e out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/snprintf.o + .debug_line 0x0000000000000000 0x170 out/BSP_Common/libc/snprintf.o + .debug_str 0x0000000000000000 0x2872 out/BSP_Common/libc/snprintf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/snprintf.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/snprintf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/snprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sprintf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/sprintf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/sprintf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/sprintf.o + .text.sprintf 0x0000000000000000 0x30 out/BSP_Common/libc/sprintf.o + .debug_info 0x0000000000000000 0xf8 out/BSP_Common/libc/sprintf.o + .debug_abbrev 0x0000000000000000 0xc4 out/BSP_Common/libc/sprintf.o + .debug_loc 0x0000000000000000 0x4d out/BSP_Common/libc/sprintf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/sprintf.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x3e out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/sprintf.o + .debug_line 0x0000000000000000 0x17f out/BSP_Common/libc/sprintf.o + .debug_str 0x0000000000000000 0x2869 out/BSP_Common/libc/sprintf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/sprintf.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/sprintf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/sprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sscanf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/sscanf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/sscanf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/sscanf.o + .text.sscanf 0x0000000000000000 0x26 out/BSP_Common/libc/sscanf.o + .debug_info 0x0000000000000000 0xe9 out/BSP_Common/libc/sscanf.o + .debug_abbrev 0x0000000000000000 0xd5 out/BSP_Common/libc/sscanf.o + .debug_loc 0x0000000000000000 0x42 out/BSP_Common/libc/sscanf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/sscanf.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x3e out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/sscanf.o + .debug_line 0x0000000000000000 0x16e out/BSP_Common/libc/sscanf.o + .debug_str 0x0000000000000000 0x285e out/BSP_Common/libc/sscanf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/sscanf.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/sscanf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/sscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/vsnprintf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/vsnprintf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsprintf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/vsprintf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/vsprintf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/vsprintf.o + .text.vsprintf + 0x0000000000000000 0x14 out/BSP_Common/libc/vsprintf.o + .debug_info 0x0000000000000000 0xec out/BSP_Common/libc/vsprintf.o + .debug_abbrev 0x0000000000000000 0xc2 out/BSP_Common/libc/vsprintf.o + .debug_loc 0x0000000000000000 0x79 out/BSP_Common/libc/vsprintf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/vsprintf.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x3e out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/vsprintf.o + .debug_line 0x0000000000000000 0x10e out/BSP_Common/libc/vsprintf.o + .debug_str 0x0000000000000000 0x286b out/BSP_Common/libc/vsprintf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/vsprintf.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/vsprintf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/vsprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/vsscanf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/vsscanf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/vsscanf.o + .text.vsscanf 0x0000000000000000 0x67c out/BSP_Common/libc/vsscanf.o + .debug_info 0x0000000000000000 0x55b out/BSP_Common/libc/vsscanf.o + .debug_abbrev 0x0000000000000000 0x28b out/BSP_Common/libc/vsscanf.o + .debug_loc 0x0000000000000000 0xee6 out/BSP_Common/libc/vsscanf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/vsscanf.o + .debug_ranges 0x0000000000000000 0xb8 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0xbe out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x8e out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x64 out/BSP_Common/libc/vsscanf.o + .debug_line 0x0000000000000000 0x10d2 out/BSP_Common/libc/vsscanf.o + .debug_str 0x0000000000000000 0x4567 out/BSP_Common/libc/vsscanf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/vsscanf.o + .debug_frame 0x0000000000000000 0x60 out/BSP_Common/libc/vsscanf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcmp.o + .text.strcmp 0x0000000000000000 0x18 out/BSP_Common/libc/strcmp.o + .debug_info 0x0000000000000000 0xf8 out/BSP_Common/libc/strcmp.o + .debug_abbrev 0x0000000000000000 0x8e out/BSP_Common/libc/strcmp.o + .debug_loc 0x0000000000000000 0x52 out/BSP_Common/libc/strcmp.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcmp.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcmp.o + .debug_line 0x0000000000000000 0xf2 out/BSP_Common/libc/strcmp.o + .debug_str 0x0000000000000000 0x2eb9 out/BSP_Common/libc/strcmp.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcmp.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strcmp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strncmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strncmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strncmp.o + .text.strncmp 0x0000000000000000 0x22 out/BSP_Common/libc/strncmp.o + .debug_info 0x0000000000000000 0x114 out/BSP_Common/libc/strncmp.o + .debug_abbrev 0x0000000000000000 0x8c out/BSP_Common/libc/strncmp.o + .debug_loc 0x0000000000000000 0xef out/BSP_Common/libc/strncmp.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strncmp.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strncmp.o + .debug_line 0x0000000000000000 0x137 out/BSP_Common/libc/strncmp.o + .debug_str 0x0000000000000000 0x2ec2 out/BSP_Common/libc/strncmp.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strncmp.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strncmp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strncmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcasecmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcasecmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcasecmp.o + .text.strcasecmp + 0x0000000000000000 0x4a out/BSP_Common/libc/strcasecmp.o + .debug_info 0x0000000000000000 0x13f out/BSP_Common/libc/strcasecmp.o + .debug_abbrev 0x0000000000000000 0xd5 out/BSP_Common/libc/strcasecmp.o + .debug_loc 0x0000000000000000 0xde out/BSP_Common/libc/strcasecmp.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcasecmp.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x4e out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/strcasecmp.o + .debug_line 0x0000000000000000 0x140 out/BSP_Common/libc/strcasecmp.o + .debug_str 0x0000000000000000 0x315b out/BSP_Common/libc/strcasecmp.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcasecmp.o + .debug_frame 0x0000000000000000 0x3c out/BSP_Common/libc/strcasecmp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strncasecmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strncasecmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strncasecmp.o + .text.strncasecmp + 0x0000000000000000 0x58 out/BSP_Common/libc/strncasecmp.o + .debug_info 0x0000000000000000 0x159 out/BSP_Common/libc/strncasecmp.o + .debug_abbrev 0x0000000000000000 0xe4 out/BSP_Common/libc/strncasecmp.o + .debug_loc 0x0000000000000000 0xf7 out/BSP_Common/libc/strncasecmp.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strncasecmp.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x4e out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/strncasecmp.o + .debug_line 0x0000000000000000 0x175 out/BSP_Common/libc/strncasecmp.o + .debug_str 0x0000000000000000 0x3164 out/BSP_Common/libc/strncasecmp.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strncasecmp.o + .debug_frame 0x0000000000000000 0x40 out/BSP_Common/libc/strncasecmp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcpy.o + .text.strcpy 0x0000000000000000 0x12 out/BSP_Common/libc/strcpy.o + .debug_info 0x0000000000000000 0xe1 out/BSP_Common/libc/strcpy.o + .debug_abbrev 0x0000000000000000 0x9f out/BSP_Common/libc/strcpy.o + .debug_loc 0x0000000000000000 0x3f out/BSP_Common/libc/strcpy.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcpy.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcpy.o + .debug_line 0x0000000000000000 0x120 out/BSP_Common/libc/strcpy.o + .debug_str 0x0000000000000000 0x2eb9 out/BSP_Common/libc/strcpy.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcpy.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strcpy.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strlcpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strlcpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strlcpy.o + .text.strlcpy 0x0000000000000000 0x2c out/BSP_Common/libc/strlcpy.o + .debug_info 0x0000000000000000 0x10f out/BSP_Common/libc/strlcpy.o + .debug_abbrev 0x0000000000000000 0xbf out/BSP_Common/libc/strlcpy.o + .debug_loc 0x0000000000000000 0xcc out/BSP_Common/libc/strlcpy.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strlcpy.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strlcpy.o + .debug_line 0x0000000000000000 0x15d out/BSP_Common/libc/strlcpy.o + .debug_str 0x0000000000000000 0x2ecd out/BSP_Common/libc/strlcpy.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strlcpy.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strlcpy.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strlcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strncpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strncpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strncpy.o + .text.strncpy 0x0000000000000000 0x56 out/BSP_Common/libc/strncpy.o + .debug_info 0x0000000000000000 0x11b out/BSP_Common/libc/strncpy.o + .debug_abbrev 0x0000000000000000 0xb4 out/BSP_Common/libc/strncpy.o + .debug_loc 0x0000000000000000 0x15a out/BSP_Common/libc/strncpy.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strncpy.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strncpy.o + .debug_line 0x0000000000000000 0x18d out/BSP_Common/libc/strncpy.o + .debug_str 0x0000000000000000 0x2eda out/BSP_Common/libc/strncpy.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strncpy.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Common/libc/strncpy.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strncpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcat.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcat.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcat.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcat.o + .text.strcat 0x0000000000000000 0x2c out/BSP_Common/libc/strcat.o + .debug_info 0x0000000000000000 0xf7 out/BSP_Common/libc/strcat.o + .debug_abbrev 0x0000000000000000 0xb4 out/BSP_Common/libc/strcat.o + .debug_loc 0x0000000000000000 0x55 out/BSP_Common/libc/strcat.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcat.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcat.o + .debug_line 0x0000000000000000 0xd0 out/BSP_Common/libc/strcat.o + .debug_str 0x0000000000000000 0x2ed8 out/BSP_Common/libc/strcat.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcat.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Common/libc/strcat.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcat.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strlcat.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strlcat.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strlcat.o + .text.strlcat 0x0000000000000000 0x76 out/BSP_Common/libc/strlcat.o + .debug_info 0x0000000000000000 0x130 out/BSP_Common/libc/strlcat.o + .debug_abbrev 0x0000000000000000 0xd8 out/BSP_Common/libc/strlcat.o + .debug_loc 0x0000000000000000 0x1c1 out/BSP_Common/libc/strlcat.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strlcat.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strlcat.o + .debug_line 0x0000000000000000 0x1ed out/BSP_Common/libc/strlcat.o + .debug_str 0x0000000000000000 0x2ed4 out/BSP_Common/libc/strlcat.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strlcat.o + .debug_frame 0x0000000000000000 0x40 out/BSP_Common/libc/strlcat.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strlcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncat.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strncat.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strncat.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strncat.o + .text.strncat 0x0000000000000000 0x50 out/BSP_Common/libc/strncat.o + .debug_info 0x0000000000000000 0x11c out/BSP_Common/libc/strncat.o + .debug_abbrev 0x0000000000000000 0xb4 out/BSP_Common/libc/strncat.o + .debug_loc 0x0000000000000000 0x112 out/BSP_Common/libc/strncat.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strncat.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strncat.o + .debug_line 0x0000000000000000 0x13f out/BSP_Common/libc/strncat.o + .debug_str 0x0000000000000000 0x2eda out/BSP_Common/libc/strncat.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strncat.o + .debug_frame 0x0000000000000000 0x48 out/BSP_Common/libc/strncat.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strncat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlen.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strlen.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strlen.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strlen.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strlen.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strlen.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strlen.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strnlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strnlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strnlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strnlen.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strnlen.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strnlen.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strnlen.o + .text.strnlen 0x0000000000000000 0x2c out/BSP_Common/libc/strnlen.o + .debug_info 0x0000000000000000 0xcf out/BSP_Common/libc/strnlen.o + .debug_abbrev 0x0000000000000000 0x9d out/BSP_Common/libc/strnlen.o + .debug_loc 0x0000000000000000 0xf4 out/BSP_Common/libc/strnlen.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strnlen.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strnlen.o + .debug_line 0x0000000000000000 0x10b out/BSP_Common/libc/strnlen.o + .debug_str 0x0000000000000000 0x2ec9 out/BSP_Common/libc/strnlen.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strnlen.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strnlen.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strnlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strchr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strchr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strchr.o + .text.strchr 0x0000000000000000 0x1e out/BSP_Common/libc/strchr.o + .debug_info 0x0000000000000000 0xb8 out/BSP_Common/libc/strchr.o + .debug_abbrev 0x0000000000000000 0x6c out/BSP_Common/libc/strchr.o + .debug_loc 0x0000000000000000 0x3f out/BSP_Common/libc/strchr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strchr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x3f out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x64 out/BSP_Common/libc/strchr.o + .debug_line 0x0000000000000000 0x138 out/BSP_Common/libc/strchr.o + .debug_str 0x0000000000000000 0x3110 out/BSP_Common/libc/strchr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strchr.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strchr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strrchr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strrchr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strrchr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strrchr.o + .text.strrchr 0x0000000000000000 0x22 out/BSP_Common/libc/strrchr.o + .debug_info 0x0000000000000000 0xc8 out/BSP_Common/libc/strrchr.o + .debug_abbrev 0x0000000000000000 0x7d out/BSP_Common/libc/strrchr.o + .debug_loc 0x0000000000000000 0x8b out/BSP_Common/libc/strrchr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strrchr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strrchr.o + .debug_line 0x0000000000000000 0x11d out/BSP_Common/libc/strrchr.o + .debug_str 0x0000000000000000 0x2ec1 out/BSP_Common/libc/strrchr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strrchr.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strrchr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strsep.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strsep.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strsep.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strsep.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strsep.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strsep.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strsep.o + .text.strsep 0x0000000000000000 0x32 out/BSP_Common/libc/strsep.o + .debug_info 0x0000000000000000 0x101 out/BSP_Common/libc/strsep.o + .debug_abbrev 0x0000000000000000 0xa7 out/BSP_Common/libc/strsep.o + .debug_loc 0x0000000000000000 0x89 out/BSP_Common/libc/strsep.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strsep.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strsep.o + .debug_line 0x0000000000000000 0x12e out/BSP_Common/libc/strsep.o + .debug_str 0x0000000000000000 0x2ecf out/BSP_Common/libc/strsep.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strsep.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Common/libc/strsep.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strsep.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strstr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strstr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strstr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strstr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strstr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strstr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strstr.o + .text.strstr 0x0000000000000000 0x3c out/BSP_Common/libc/strstr.o + .debug_info 0x0000000000000000 0x114 out/BSP_Common/libc/strstr.o + .debug_abbrev 0x0000000000000000 0xa6 out/BSP_Common/libc/strstr.o + .debug_loc 0x0000000000000000 0x6e out/BSP_Common/libc/strstr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strstr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strstr.o + .debug_line 0x0000000000000000 0xd2 out/BSP_Common/libc/strstr.o + .debug_str 0x0000000000000000 0x2ed7 out/BSP_Common/libc/strstr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strstr.o + .debug_frame 0x0000000000000000 0x38 out/BSP_Common/libc/strstr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strstr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcspn.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcspn.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcspn.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcspn.o + .text.strcspn 0x0000000000000000 0xa out/BSP_Common/libc/strcspn.o + .debug_info 0x0000000000000000 0xe9 out/BSP_Common/libc/strcspn.o + .debug_abbrev 0x0000000000000000 0xb9 out/BSP_Common/libc/strcspn.o + .debug_loc 0x0000000000000000 0x42 out/BSP_Common/libc/strcspn.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcspn.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcspn.o + .debug_line 0x0000000000000000 0xb2 out/BSP_Common/libc/strcspn.o + .debug_str 0x0000000000000000 0x2ede out/BSP_Common/libc/strcspn.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcspn.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strcspn.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strspn.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strspn.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strspn.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strspn.o + .text.strspn 0x0000000000000000 0xa out/BSP_Common/libc/strspn.o + .debug_info 0x0000000000000000 0xe9 out/BSP_Common/libc/strspn.o + .debug_abbrev 0x0000000000000000 0xb9 out/BSP_Common/libc/strspn.o + .debug_loc 0x0000000000000000 0x42 out/BSP_Common/libc/strspn.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strspn.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strspn.o + .debug_line 0x0000000000000000 0xb1 out/BSP_Common/libc/strspn.o + .debug_str 0x0000000000000000 0x2edc out/BSP_Common/libc/strspn.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strspn.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strspn.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strxspn.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strxspn.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strxspn.o + .text.__strxspn + 0x0000000000000000 0x80 out/BSP_Common/libc/strxspn.o + .debug_info 0x0000000000000000 0x125 out/BSP_Common/libc/strxspn.o + .debug_abbrev 0x0000000000000000 0xe8 out/BSP_Common/libc/strxspn.o + .debug_loc 0x0000000000000000 0xa6 out/BSP_Common/libc/strxspn.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strxspn.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x62 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x8e out/BSP_Common/libc/strxspn.o + .debug_line 0x0000000000000000 0x219 out/BSP_Common/libc/strxspn.o + .debug_str 0x0000000000000000 0x3d3c out/BSP_Common/libc/strxspn.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strxspn.o + .debug_frame 0x0000000000000000 0x3c out/BSP_Common/libc/strxspn.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strpbrk.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strpbrk.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strpbrk.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strpbrk.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strpbrk.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strpbrk.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strpbrk.o + .text.strpbrk 0x0000000000000000 0x2a out/BSP_Common/libc/strpbrk.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/strpbrk.o + .debug_abbrev 0x0000000000000000 0xb8 out/BSP_Common/libc/strpbrk.o + .debug_loc 0x0000000000000000 0x60 out/BSP_Common/libc/strpbrk.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strpbrk.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strpbrk.o + .debug_line 0x0000000000000000 0x102 out/BSP_Common/libc/strpbrk.o + .debug_str 0x0000000000000000 0x2ed7 out/BSP_Common/libc/strpbrk.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strpbrk.o + .debug_frame 0x0000000000000000 0x30 out/BSP_Common/libc/strpbrk.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strpbrk.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtok.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtok.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtok.o + .text.strtok 0x0000000000000000 0x10 out/BSP_Common/libc/strtok.o + .sbss.holder.1472 + 0x0000000000000000 0x4 out/BSP_Common/libc/strtok.o + .debug_info 0x0000000000000000 0xf9 out/BSP_Common/libc/strtok.o + .debug_abbrev 0x0000000000000000 0xbb out/BSP_Common/libc/strtok.o + .debug_loc 0x0000000000000000 0x42 out/BSP_Common/libc/strtok.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtok.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtok.o + .debug_line 0x0000000000000000 0xaa out/BSP_Common/libc/strtok.o + .debug_str 0x0000000000000000 0x2ecf out/BSP_Common/libc/strtok.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtok.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtok.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtok.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok_r.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok_r.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok_r.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok_r.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtok_r.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtok_r.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtok_r.o + .text.strtok_r + 0x0000000000000000 0x30 out/BSP_Common/libc/strtok_r.o + .debug_info 0x0000000000000000 0xf2 out/BSP_Common/libc/strtok_r.o + .debug_abbrev 0x0000000000000000 0xa7 out/BSP_Common/libc/strtok_r.o + .debug_loc 0x0000000000000000 0x76 out/BSP_Common/libc/strtok_r.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtok_r.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtok_r.o + .debug_line 0x0000000000000000 0x118 out/BSP_Common/libc/strtok_r.o + .debug_str 0x0000000000000000 0x2ed1 out/BSP_Common/libc/strtok_r.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtok_r.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Common/libc/strtok_r.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtok_r.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtol.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtol.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtol.o + .text.strtol 0x0000000000000000 0x14 out/BSP_Common/libc/strtol.o + .debug_info 0x0000000000000000 0x116 out/BSP_Common/libc/strtol.o + .debug_abbrev 0x0000000000000000 0xa5 out/BSP_Common/libc/strtol.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtol.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtol.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtol.o + .debug_line 0x0000000000000000 0x130 out/BSP_Common/libc/strtol.o + .debug_str 0x0000000000000000 0x3f0f out/BSP_Common/libc/strtol.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtol.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/strtol.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoll.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoll.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoll.o + .text.strtoll 0x0000000000000000 0xa out/BSP_Common/libc/strtoll.o + .debug_info 0x0000000000000000 0x10f out/BSP_Common/libc/strtoll.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/strtoll.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoll.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoll.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoll.o + .debug_line 0x0000000000000000 0x111 out/BSP_Common/libc/strtoll.o + .debug_str 0x0000000000000000 0x3f0e out/BSP_Common/libc/strtoll.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoll.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtoll.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoul.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoul.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoul.o + .text.strtoul 0x0000000000000000 0x14 out/BSP_Common/libc/strtoul.o + .debug_info 0x0000000000000000 0x10f out/BSP_Common/libc/strtoul.o + .debug_abbrev 0x0000000000000000 0xa5 out/BSP_Common/libc/strtoul.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoul.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoul.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoul.o + .debug_line 0x0000000000000000 0x131 out/BSP_Common/libc/strtoul.o + .debug_str 0x0000000000000000 0x3f0b out/BSP_Common/libc/strtoul.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoul.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/strtoul.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoull.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoull.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoull.o + .text.strtoull + 0x0000000000000000 0xa out/BSP_Common/libc/strtoull.o + .debug_info 0x0000000000000000 0x10f out/BSP_Common/libc/strtoull.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/strtoull.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoull.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoull.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoull.o + .debug_line 0x0000000000000000 0x112 out/BSP_Common/libc/strtoull.o + .debug_str 0x0000000000000000 0x3f13 out/BSP_Common/libc/strtoull.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoull.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtoull.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoimax.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoimax.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoimax.o + .text.strtoimax + 0x0000000000000000 0xa out/BSP_Common/libc/strtoimax.o + .debug_info 0x0000000000000000 0x127 out/BSP_Common/libc/strtoimax.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/strtoimax.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoimax.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoimax.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoimax.o + .debug_line 0x0000000000000000 0x113 out/BSP_Common/libc/strtoimax.o + .debug_str 0x0000000000000000 0x3f1d out/BSP_Common/libc/strtoimax.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoimax.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtoimax.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoumax.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoumax.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoumax.o + .text.strtoumax + 0x0000000000000000 0xa out/BSP_Common/libc/strtoumax.o + .debug_info 0x0000000000000000 0x127 out/BSP_Common/libc/strtoumax.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/strtoumax.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoumax.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoumax.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoumax.o + .debug_line 0x0000000000000000 0x113 out/BSP_Common/libc/strtoumax.o + .debug_str 0x0000000000000000 0x3f20 out/BSP_Common/libc/strtoumax.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoumax.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtoumax.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strntoimax.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strntoimax.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strntoimax.o + .text.strntoimax + 0x0000000000000000 0x8 out/BSP_Common/libc/strntoimax.o + .debug_info 0x0000000000000000 0x136 out/BSP_Common/libc/strntoimax.o + .debug_abbrev 0x0000000000000000 0xb9 out/BSP_Common/libc/strntoimax.o + .debug_loc 0x0000000000000000 0x84 out/BSP_Common/libc/strntoimax.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strntoimax.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x45 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strntoimax.o + .debug_line 0x0000000000000000 0xdb out/BSP_Common/libc/strntoimax.o + .debug_str 0x0000000000000000 0x3b73 out/BSP_Common/libc/strntoimax.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strntoimax.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strntoimax.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strntoumax.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strntoumax.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strntoumax.o + .text.strntoumax + 0x0000000000000000 0x19e out/BSP_Common/libc/strntoumax.o + .debug_info 0x0000000000000000 0x1c0 out/BSP_Common/libc/strntoumax.o + .debug_abbrev 0x0000000000000000 0x142 out/BSP_Common/libc/strntoumax.o + .debug_loc 0x0000000000000000 0x332 out/BSP_Common/libc/strntoumax.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strntoumax.o + .debug_ranges 0x0000000000000000 0x40 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x5d out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strntoumax.o + .debug_line 0x0000000000000000 0x55f out/BSP_Common/libc/strntoumax.o + .debug_str 0x0000000000000000 0x3e13 out/BSP_Common/libc/strntoumax.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strntoumax.o + .debug_frame 0x0000000000000000 0x44 out/BSP_Common/libc/strntoumax.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/stdlib.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/stdlib.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/stdlib.o + .text.malloc 0x0000000000000000 0x4 out/BSP_Common/libc/stdlib.o + .text.free 0x0000000000000000 0x2 out/BSP_Common/libc/stdlib.o + .text.calloc 0x0000000000000000 0x4 out/BSP_Common/libc/stdlib.o + .text.realloc 0x0000000000000000 0x4 out/BSP_Common/libc/stdlib.o + .debug_info 0x0000000000000000 0x9dc out/BSP_Common/libc/stdlib.o + .debug_abbrev 0x0000000000000000 0x23f out/BSP_Common/libc/stdlib.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/stdlib.o + .debug_aranges + 0x0000000000000000 0x38 out/BSP_Common/libc/stdlib.o + .debug_ranges 0x0000000000000000 0x28 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0xf4 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x5c out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x57 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x3b out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x18e out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/libc/stdlib.o + .debug_line 0x0000000000000000 0x2dc out/BSP_Common/libc/stdlib.o + .debug_str 0x0000000000000000 0x4b88 out/BSP_Common/libc/stdlib.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/stdlib.o + .debug_frame 0x0000000000000000 0x50 out/BSP_Common/libc/stdlib.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/common.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/common.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/common.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/common.o + .text.__assert_func + 0x0000000000000000 0x2 out/BSP_Common/libc/common.o + .text.strtof 0x0000000000000000 0x6 out/BSP_Common/libc/common.o + .debug_info 0x0000000000000000 0xdc out/BSP_Common/libc/common.o + .debug_abbrev 0x0000000000000000 0x88 out/BSP_Common/libc/common.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Common/libc/common.o + .debug_ranges 0x0000000000000000 0x18 out/BSP_Common/libc/common.o + .debug_macro 0x0000000000000000 0x11 out/BSP_Common/libc/common.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/common.o + .debug_line 0x0000000000000000 0x76 out/BSP_Common/libc/common.o + .debug_str 0x0000000000000000 0x2662 out/BSP_Common/libc/common.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/common.o + .debug_frame 0x0000000000000000 0x30 out/BSP_Common/libc/common.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/common.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalnum.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalnum.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalnum.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalnum.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalnum.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalnum.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalnum.o + .text.isalnum 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isalnum.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isalnum.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isalnum.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isalnum.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isalnum.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isalnum.o + .debug_line 0x0000000000000000 0xcc out/BSP_Common/libc/ctype_isalnum.o + .debug_str 0x0000000000000000 0x29db out/BSP_Common/libc/ctype_isalnum.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isalnum.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isalnum.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isalnum.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalpha.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalpha.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalpha.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalpha.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalpha.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalpha.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalpha.o + .text.isalpha 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isalpha.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isalpha.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isalpha.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isalpha.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isalpha.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isalpha.o + .debug_line 0x0000000000000000 0xcc out/BSP_Common/libc/ctype_isalpha.o + .debug_str 0x0000000000000000 0x29db out/BSP_Common/libc/ctype_isalpha.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isalpha.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isalpha.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isalpha.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isascii.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isascii.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isascii.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isascii.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isascii.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isascii.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isascii.o + .text.isascii 0x0000000000000000 0xa out/BSP_Common/libc/ctype_isascii.o + .debug_info 0x0000000000000000 0xb2 out/BSP_Common/libc/ctype_isascii.o + .debug_abbrev 0x0000000000000000 0xc0 out/BSP_Common/libc/ctype_isascii.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isascii.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isascii.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isascii.o + .debug_line 0x0000000000000000 0xc6 out/BSP_Common/libc/ctype_isascii.o + .debug_str 0x0000000000000000 0x296a out/BSP_Common/libc/ctype_isascii.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isascii.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isascii.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isascii.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isblank.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isblank.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isblank.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isblank.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isblank.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isblank.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isblank.o + .text.isblank 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isblank.o + .debug_info 0x0000000000000000 0xb6 out/BSP_Common/libc/ctype_isblank.o + .debug_abbrev 0x0000000000000000 0xc2 out/BSP_Common/libc/ctype_isblank.o + .debug_loc 0x0000000000000000 0x80 out/BSP_Common/libc/ctype_isblank.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isblank.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isblank.o + .debug_line 0x0000000000000000 0xc6 out/BSP_Common/libc/ctype_isblank.o + .debug_str 0x0000000000000000 0x296a out/BSP_Common/libc/ctype_isblank.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isblank.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isblank.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isblank.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_iscntrl.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_iscntrl.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_iscntrl.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_iscntrl.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_iscntrl.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_iscntrl.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_iscntrl.o + .text.iscntrl 0x0000000000000000 0x14 out/BSP_Common/libc/ctype_iscntrl.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_iscntrl.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_iscntrl.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_iscntrl.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_iscntrl.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_iscntrl.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_iscntrl.o + .debug_str 0x0000000000000000 0x29db out/BSP_Common/libc/ctype_iscntrl.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_iscntrl.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_iscntrl.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_iscntrl.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isdigit.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isdigit.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isdigit.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isdigit.o + .text.isdigit 0x0000000000000000 0xa out/BSP_Common/libc/ctype_isdigit.o + .debug_info 0x0000000000000000 0xb2 out/BSP_Common/libc/ctype_isdigit.o + .debug_abbrev 0x0000000000000000 0xc0 out/BSP_Common/libc/ctype_isdigit.o + .debug_loc 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isdigit.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isdigit.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isdigit.o + .debug_line 0x0000000000000000 0xc6 out/BSP_Common/libc/ctype_isdigit.o + .debug_str 0x0000000000000000 0x296a out/BSP_Common/libc/ctype_isdigit.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isdigit.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isdigit.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isgraph.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isgraph.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isgraph.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isgraph.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isgraph.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isgraph.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isgraph.o + .text.isgraph 0x0000000000000000 0x14 out/BSP_Common/libc/ctype_isgraph.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isgraph.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isgraph.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isgraph.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isgraph.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isgraph.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_isgraph.o + .debug_str 0x0000000000000000 0x29db out/BSP_Common/libc/ctype_isgraph.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isgraph.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isgraph.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isgraph.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_ispunct.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_ispunct.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_ispunct.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_ispunct.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_ispunct.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_ispunct.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_ispunct.o + .text.ispunct 0x0000000000000000 0x14 out/BSP_Common/libc/ctype_ispunct.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_ispunct.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_ispunct.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_ispunct.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_ispunct.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_ispunct.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_ispunct.o + .debug_str 0x0000000000000000 0x29db out/BSP_Common/libc/ctype_ispunct.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_ispunct.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_ispunct.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_ispunct.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_islower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_islower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_islower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_islower.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_islower.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_islower.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_islower.o + .text.islower 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_islower.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_islower.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_islower.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_islower.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_islower.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_islower.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_islower.o + .debug_str 0x0000000000000000 0x29db out/BSP_Common/libc/ctype_islower.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_islower.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_islower.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_islower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isprint.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isprint.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isprint.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isprint.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isprint.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isprint.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isprint.o + .text.isprint 0x0000000000000000 0x14 out/BSP_Common/libc/ctype_isprint.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isprint.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isprint.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isprint.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isprint.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isprint.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_isprint.o + .debug_str 0x0000000000000000 0x29db out/BSP_Common/libc/ctype_isprint.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isprint.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isprint.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isprint.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isspace.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isspace.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isspace.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isspace.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isspace.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isspace.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isspace.o + .text.isspace 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isspace.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isspace.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isspace.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isspace.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isspace.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isspace.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_isspace.o + .debug_str 0x0000000000000000 0x29db out/BSP_Common/libc/ctype_isspace.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isspace.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isspace.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isspace.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isupper.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isupper.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isupper.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isupper.o + .text.isupper 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isupper.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isupper.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isupper.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isupper.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isupper.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isupper.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_isupper.o + .debug_str 0x0000000000000000 0x29db out/BSP_Common/libc/ctype_isupper.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isupper.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isupper.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_tolower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_tolower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_tolower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_tolower.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_tolower.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_tolower.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_tolower.o + .text.tolower 0x0000000000000000 0x18 out/BSP_Common/libc/ctype_tolower.o + .debug_info 0x0000000000000000 0x129 out/BSP_Common/libc/ctype_tolower.o + .debug_abbrev 0x0000000000000000 0xfc out/BSP_Common/libc/ctype_tolower.o + .debug_loc 0x0000000000000000 0x34 out/BSP_Common/libc/ctype_tolower.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_tolower.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_tolower.o + .debug_line 0x0000000000000000 0xd4 out/BSP_Common/libc/ctype_tolower.o + .debug_str 0x0000000000000000 0x29eb out/BSP_Common/libc/ctype_tolower.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_tolower.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_tolower.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_tolower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_toupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_toupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_toupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_toupper.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_toupper.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_toupper.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_toupper.o + .text.toupper 0x0000000000000000 0x18 out/BSP_Common/libc/ctype_toupper.o + .debug_info 0x0000000000000000 0x129 out/BSP_Common/libc/ctype_toupper.o + .debug_abbrev 0x0000000000000000 0xfc out/BSP_Common/libc/ctype_toupper.o + .debug_loc 0x0000000000000000 0x34 out/BSP_Common/libc/ctype_toupper.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_toupper.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_toupper.o + .debug_line 0x0000000000000000 0xd4 out/BSP_Common/libc/ctype_toupper.o + .debug_str 0x0000000000000000 0x29eb out/BSP_Common/libc/ctype_toupper.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_toupper.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_toupper.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_toupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isxdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isxdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isxdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isxdigit.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isxdigit.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isxdigit.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isxdigit.o + .text.isxdigit + 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isxdigit.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isxdigit.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isxdigit.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isxdigit.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isxdigit.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isxdigit.o + .debug_line 0x0000000000000000 0xcf out/BSP_Common/libc/ctype_isxdigit.o + .debug_str 0x0000000000000000 0x29de out/BSP_Common/libc/ctype_isxdigit.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isxdigit.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isxdigit.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isxdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctypes.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctypes.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctypes.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctypes.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctypes.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctypes.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctypes.o + .rodata.__ctypes + 0x0000000000000000 0x101 out/BSP_Common/libc/ctypes.o + .debug_info 0x0000000000000000 0x9e out/BSP_Common/libc/ctypes.o + .debug_abbrev 0x0000000000000000 0x71 out/BSP_Common/libc/ctypes.o + .debug_aranges + 0x0000000000000000 0x18 out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x32 out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctypes.o + .debug_line 0x0000000000000000 0x7b out/BSP_Common/libc/ctypes.o + .debug_str 0x0000000000000000 0x2980 out/BSP_Common/libc/ctypes.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctypes.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctypes.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .text 0x0000000000000000 0x0 out/BSP_Common/soft_crc/softcrc.o + .data 0x0000000000000000 0x0 out/BSP_Common/soft_crc/softcrc.o + .bss 0x0000000000000000 0x0 out/BSP_Common/soft_crc/softcrc.o + .text.BFLB_Soft_CRC16 + 0x0000000000000000 0x4c out/BSP_Common/soft_crc/softcrc.o + .text.BFLB_Soft_CRC32_Table + 0x0000000000000000 0x36 out/BSP_Common/soft_crc/softcrc.o + .rodata.chCRCHTalbe + 0x0000000000000000 0x100 out/BSP_Common/soft_crc/softcrc.o + .rodata.chCRCLTalbe + 0x0000000000000000 0x100 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .text 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_crypt.o + .data 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_crypt.o + .bss 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_init_do + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_setkey_do + 0x0000000000000000 0xea out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_setadd_do + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_encrypt_do + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_encrypt_tag_do + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_update_do + 0x0000000000000000 0x24 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_decrypt_do + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_auth_decrypt_do + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_finish_do + 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_deinit_do + 0x0000000000000000 0x2a out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_init + 0x0000000000000000 0x8 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_setkey + 0x0000000000000000 0x28 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_setadd + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_encrypt + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_encrypt_tag + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_update + 0x0000000000000000 0x24 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_decrypt + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_auth_decrypt + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_finish + 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_deinit + 0x0000000000000000 0x32 out/BSP_Common/cipher_suite/bflb_crypt.o + .rodata.bflb_crypt_setkey.str1.4 + 0x0000000000000000 0x15 out/BSP_Common/cipher_suite/bflb_crypt.o + .rodata.bflb_crypt_setkey_do.str1.4 + 0x0000000000000000 0x13 out/BSP_Common/cipher_suite/bflb_crypt.o + .sbss.aesCtx 0x0000000000000000 0x2 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_info 0x0000000000000000 0xdc4 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_abbrev 0x0000000000000000 0x238 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_loc 0x0000000000000000 0x806 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_aranges + 0x0000000000000000 0x70 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_ranges 0x0000000000000000 0xe0 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x1dd out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_line 0x0000000000000000 0x92a out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_str 0x0000000000000000 0x7f459 out/BSP_Common/cipher_suite/bflb_crypt.o + .comment 0x0000000000000000 0x33 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_frame 0x0000000000000000 0x228 out/BSP_Common/cipher_suite/bflb_crypt.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .text 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_hash.o + .data 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_hash.o + .bss 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_hash.o + .text.bflb_hash_init + 0x0000000000000000 0x80 out/BSP_Common/cipher_suite/bflb_hash.o + .text.bflb_hash_start + 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_hash.o + .text.bflb_hash_update + 0x0000000000000000 0x4c out/BSP_Common/cipher_suite/bflb_hash.o + .text.bflb_hash_finish + 0x0000000000000000 0x4a out/BSP_Common/cipher_suite/bflb_hash.o + .text.bflb_hash_deinit + 0x0000000000000000 0x38 out/BSP_Common/cipher_suite/bflb_hash.o + .bss.shaCtx 0x0000000000000000 0x14 out/BSP_Common/cipher_suite/bflb_hash.o + .rodata.bflb_hash_init.str1.4 + 0x0000000000000000 0x13 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_info 0x0000000000000000 0x4a8 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_abbrev 0x0000000000000000 0x1ac out/BSP_Common/cipher_suite/bflb_hash.o + .debug_loc 0x0000000000000000 0x287 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_aranges + 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_ranges 0x0000000000000000 0x30 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x1d8 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_line 0x0000000000000000 0x770 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_str 0x0000000000000000 0x7f163 out/BSP_Common/cipher_suite/bflb_hash.o + .comment 0x0000000000000000 0x33 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_frame 0x0000000000000000 0xd0 out/BSP_Common/cipher_suite/bflb_hash.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .data 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .bss 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecc_basic_parameter_init.isra.0 + 0x0000000000000000 0x54 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecc_point_mul_init.isra.1 + 0x0000000000000000 0xe4 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_point_add.isra.4 + 0x0000000000000000 0x248 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_verify_point_mul.isra.5 + 0x0000000000000000 0x3f4 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdh_get_scalar_point.isra.6 + 0x0000000000000000 0x3b4 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_init + 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_deinit + 0x0000000000000000 0x14 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_verify + 0x0000000000000000 0x5e4 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_get_public_key + 0x0000000000000000 0x12 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecc_get_random_value + 0x0000000000000000 0xde out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_sign + 0x0000000000000000 0x268 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_get_private_key + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdh_init + 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdh_deinit + 0x0000000000000000 0x14 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdh_get_encrypt_key + 0x0000000000000000 0x12 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdh_get_public_key + 0x0000000000000000 0x8 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.bflb_ecdsa_verify_point_mul.isra.5.str1.4 + 0x0000000000000000 0x35 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1B + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1Gx + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1Gy + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1InvR_N + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1InvR_P + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1N + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1P + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1PrimeN_N + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1PrimeN_P + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1_1 + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1_1M1 + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1_1P1 + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1_BAR2 + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1_BAR3 + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1_BAR4 + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1_BAR8 + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1_Gx + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1_Gy + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1_Zerox + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1_Zeroy + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_info 0x0000000000000000 0x32e1 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_abbrev 0x0000000000000000 0x326 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_loc 0x0000000000000000 0xb4a out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_aranges + 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_ranges 0x0000000000000000 0xa8 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x24b out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_line 0x0000000000000000 0x14a0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_str 0x0000000000000000 0x7f889 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .comment 0x0000000000000000 0x33 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_frame 0x0000000000000000 0x278 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .text 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_dsa.o + .data 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_dsa.o + .bss 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_get_reg_size + 0x0000000000000000 0x7a out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_mexp_binary + 0x0000000000000000 0x190 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_mexp_mont + 0x0000000000000000 0x16a out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_decrypt_crt + 0x0000000000000000 0x1d8 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_init + 0x0000000000000000 0x42 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_sign + 0x0000000000000000 0x96 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_verify + 0x0000000000000000 0xc2 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_info 0x0000000000000000 0xeec out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_abbrev 0x0000000000000000 0x238 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_loc 0x0000000000000000 0x7fd out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_aranges + 0x0000000000000000 0x50 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_ranges 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x1f1 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_line 0x0000000000000000 0xc00 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_str 0x0000000000000000 0x7f35f out/BSP_Common/cipher_suite/bflb_dsa.o + .comment 0x0000000000000000 0x33 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_frame 0x0000000000000000 0x18c out/BSP_Common/cipher_suite/bflb_dsa.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_crc32.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_crc32.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x25 out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_lzma2.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_lzma2.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x25 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x2e out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_stream.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_stream.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x25 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x2e out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_decompress.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_decompress.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_decompress.o + .text.xz_uncompress_init + 0x0000000000000000 0x60 out/BSP_Common/xz/xz_decompress.o + .text.xz_uncompress_stream + 0x0000000000000000 0x64 out/BSP_Common/xz/xz_decompress.o + .text.xz_uncompress_end + 0x0000000000000000 0x10 out/BSP_Common/xz/xz_decompress.o + .sbss.s 0x0000000000000000 0x4 out/BSP_Common/xz/xz_decompress.o + .debug_info 0x0000000000000000 0x2e2 out/BSP_Common/xz/xz_decompress.o + .debug_abbrev 0x0000000000000000 0x167 out/BSP_Common/xz/xz_decompress.o + .debug_loc 0x0000000000000000 0x1dd out/BSP_Common/xz/xz_decompress.o + .debug_aranges + 0x0000000000000000 0x30 out/BSP_Common/xz/xz_decompress.o + .debug_ranges 0x0000000000000000 0x20 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x5d out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x1f out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_decompress.o + .debug_line 0x0000000000000000 0x2d9 out/BSP_Common/xz/xz_decompress.o + .debug_str 0x0000000000000000 0x32b6 out/BSP_Common/xz/xz_decompress.o + .comment 0x0000000000000000 0x33 out/BSP_Common/xz/xz_decompress.o + .debug_frame 0x0000000000000000 0x88 out/BSP_Common/xz/xz_decompress.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_port.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_port.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .text 0x0000000000000000 0x0 out/BSP_Common/partition/partition.o + .data 0x0000000000000000 0x0 out/BSP_Common/partition/partition.o + .bss 0x0000000000000000 0x0 out/BSP_Common/partition/partition.o + .text.pPtTable_Flash_Read_Fast + 0x0000000000000000 0x5e out/BSP_Common/partition/partition.o + .text.PtTable_Valid + 0x0000000000000000 0x6c out/BSP_Common/partition/partition.o + .text.PtTable_Set_Flash_Operation + 0x0000000000000000 0x2e out/BSP_Common/partition/partition.o + .text.PtTable_Get_Active_Partition_Need_Lock + 0x0000000000000000 0x90 out/BSP_Common/partition/partition.o + .text.PtTable_Get_Active_Entries_By_ID + 0x0000000000000000 0x64 out/BSP_Common/partition/partition.o + .text.PtTable_Get_Active_Entries_By_Name + 0x0000000000000000 0xa0 out/BSP_Common/partition/partition.o + .text.PtTable_Update_Entry + 0x0000000000000000 0x128 out/BSP_Common/partition/partition.o + .text.PtTable_Create + 0x0000000000000000 0x80 out/BSP_Common/partition/partition.o + .sbss.PtTable_Flash_Erase + 0x0000000000000000 0x4 out/BSP_Common/partition/partition.o + .sbss.PtTable_Flash_Read + 0x0000000000000000 0x4 out/BSP_Common/partition/partition.o + .sbss.PtTable_Flash_Write + 0x0000000000000000 0x4 out/BSP_Common/partition/partition.o + .sdata.index.8467 + 0x0000000000000000 0x1 out/BSP_Common/partition/partition.o + .debug_info 0x0000000000000000 0x8f9 out/BSP_Common/partition/partition.o + .debug_abbrev 0x0000000000000000 0x292 out/BSP_Common/partition/partition.o + .debug_loc 0x0000000000000000 0x95b out/BSP_Common/partition/partition.o + .debug_aranges + 0x0000000000000000 0x58 out/BSP_Common/partition/partition.o + .debug_ranges 0x0000000000000000 0x48 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x1cc out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0xba out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x2e out/BSP_Common/partition/partition.o + .debug_line 0x0000000000000000 0xdce out/BSP_Common/partition/partition.o + .debug_str 0x0000000000000000 0x7f355 out/BSP_Common/partition/partition.o + .comment 0x0000000000000000 0x33 out/BSP_Common/partition/partition.o + .debug_frame 0x0000000000000000 0x1bc out/BSP_Common/partition/partition.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/system_bl602.o + .text 0x0000000000000000 0x0 out/startup/system_bl602.o + .data 0x0000000000000000 0x0 out/startup/system_bl602.o + .bss 0x0000000000000000 0x0 out/startup/system_bl602.o + .text.system_bor_init + 0x0000000000000000 0x1e out/startup/system_bl602.o + .text.System_NVIC_SetPriority + 0x0000000000000000 0x2 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x7a2 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x20a out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x1f6 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x88 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x52 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x163c out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x47b1 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x11f8 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x7c0 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x36b out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x16 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x58 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x34 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x1c out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x40 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x22 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x4f out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0xaec out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x1a74 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0xd67 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x3c out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x2071 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x66 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x19 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0xba out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x70 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x96 out/startup/system_bl602.o + .debug_macro 0x0000000000000000 0x100 out/startup/system_bl602.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .text 0x0000000000000000 0x0 out/startup/GCC/start_load.o + .data 0x0000000000000000 0x0 out/startup/GCC/start_load.o + .bss 0x0000000000000000 0x0 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x7a2 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x1f6 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x20a out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x88 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x52 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x163c out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/interrupt.o + .group 0x0000000000000000 0xc out/startup/interrupt.o + .group 0x0000000000000000 0xc out/startup/interrupt.o + .group 0x0000000000000000 0xc out/startup/interrupt.o + .text 0x0000000000000000 0x0 out/startup/interrupt.o + .data 0x0000000000000000 0x0 out/startup/interrupt.o + .bss 0x0000000000000000 0x0 out/startup/interrupt.o + .text.clic_set_pending + 0x0000000000000000 0xe out/startup/interrupt.o + .text.clic_set_intcfg + 0x0000000000000000 0x14 out/startup/interrupt.o + .text.clic_get_intcfg + 0x0000000000000000 0x10 out/startup/interrupt.o + .text.clic_set_cliccfg + 0x0000000000000000 0xe out/startup/interrupt.o + .text.clic_get_cliccfg + 0x0000000000000000 0xa out/startup/interrupt.o + .debug_macro 0x0000000000000000 0x7a2 out/startup/interrupt.o + .debug_macro 0x0000000000000000 0x1f6 out/startup/interrupt.o + .debug_macro 0x0000000000000000 0x52 out/startup/interrupt.o + .debug_macro 0x0000000000000000 0x88 out/startup/interrupt.o + .text 0x0000000000000000 0x0 out/startup/GCC/entry.o + .data 0x0000000000000000 0x0 out/startup/GCC/entry.o + .bss 0x0000000000000000 0x0 out/startup/GCC/entry.o + .text.metal.init.trapvec + 0x0000000000000000 0x14 out/startup/GCC/entry.o + .text.metal.init.__register_frame_info + 0x0000000000000000 0x2 out/startup/GCC/entry.o + .eh_frame 0x0000000000000000 0x68 out/startup/GCC/entry.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .text 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/port.o + .data 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/port.o + .bss 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/port.o + .text.vPortSetupTimerInterrupt + 0x0000000000000000 0x6a out/BSP_Common/FreeRTOS/port.o + .text.xPortStartScheduler + 0x0000000000000000 0x4e out/BSP_Common/FreeRTOS/port.o + .text.vPortEndScheduler + 0x0000000000000000 0x2 out/BSP_Common/FreeRTOS/port.o + .bss.ullNextTime + 0x0000000000000000 0x8 out/BSP_Common/FreeRTOS/port.o + .sbss.pullMachineTimerCompareRegister + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .sdata.pullNextTime + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .sdata2.pullMachineTimerCompareRegisterBase + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .sdata2.uxTimerIncrementsForOneTick + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .sdata2.xISRStackTop + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .debug_info 0x0000000000000000 0x26d out/BSP_Common/FreeRTOS/port.o + .debug_abbrev 0x0000000000000000 0x148 out/BSP_Common/FreeRTOS/port.o + .debug_loc 0x0000000000000000 0x35 out/BSP_Common/FreeRTOS/port.o + .debug_aranges + 0x0000000000000000 0x30 out/BSP_Common/FreeRTOS/port.o + .debug_ranges 0x0000000000000000 0x40 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x97 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x118 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x15a out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0xbb out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x26 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x4b7 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0xb5 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0xaa out/BSP_Common/FreeRTOS/port.o + .debug_line 0x0000000000000000 0x33c out/BSP_Common/FreeRTOS/port.o + .debug_str 0x0000000000000000 0x6bed out/BSP_Common/FreeRTOS/port.o + .comment 0x0000000000000000 0x33 out/BSP_Common/FreeRTOS/port.o + .debug_frame 0x0000000000000000 0x58 out/BSP_Common/FreeRTOS/port.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/FreeRTOS/port.o + .text 0x0000000000000000 0x600 out/BSP_Common/FreeRTOS/portASM.o + .data 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/portASM.o + .bss 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/portASM.o + .debug_line 0x0000000000000000 0x483 out/BSP_Common/FreeRTOS/portASM.o + .debug_info 0x0000000000000000 0x26 out/BSP_Common/FreeRTOS/portASM.o + .debug_abbrev 0x0000000000000000 0x14 out/BSP_Common/FreeRTOS/portASM.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/FreeRTOS/portASM.o + .debug_str 0x0000000000000000 0x72 out/BSP_Common/FreeRTOS/portASM.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/FreeRTOS/portASM.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .text.FreeRTOS_Interrupt_Handler + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_DeInit + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_IrConfig + 0x0000000000000000 0x76 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_SetTxDataLength + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_SetRxDataLength + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_SetDeglitchCount + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_SetBaudrate + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_SetRtsValue + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_ClrRtsValue + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_TxFifoClear + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_RxFifoClear + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_SendDataBlock + 0x0000000000000000 0x5c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_GetTxFifoCount + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_GetRxFifoCount + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_GetRxBusBusyStatus + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_GetOverflowStatus + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART_GetBaudrate + 0x0000000000000000 0x9a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .rodata.CSWTCH.16 + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0xa68 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_ALL_IRQHandler + 0x0000000000000000 0x8a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Enable + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Disable + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_Init + 0x0000000000000000 0xc4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_Update_SrcMemcfg + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_Update_DstMemcfg + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_TranferSize + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_Is_Busy + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Channel_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_Init + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_Update + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpStruct_Init + 0x0000000000000000 0x11c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpStruct_Start + 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpStruct_Stop + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpStruct_Set_Transfer_Len + 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpBuf_Start_New_Transmit + 0x0000000000000000 0x6c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpBuf_Remove_Completed_List + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpBuf_Append + 0x0000000000000000 0x9a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_LLI_PpBuf_Destroy + 0x0000000000000000 0x46 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_IntMask + 0x0000000000000000 0x90 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .text.DMA_Int_Callback_Install + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .bss.PingPongListArra + 0x0000000000000000 0x80 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .bss.dmaIntCbfArra + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_info 0x0000000000000000 0x119f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_abbrev 0x0000000000000000 0x3a0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_loc 0x0000000000000000 0xe4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_aranges + 0x0000000000000000 0xc8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_ranges 0x0000000000000000 0x178 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0xd5 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x11c7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_line 0x0000000000000000 0x1961 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_str 0x0000000000000000 0xc0aa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .debug_frame 0x0000000000000000 0x210 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.BMX_ERR_IRQHandler + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.BMX_TO_IRQHandler + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GPIO_INT0_IRQHandler + 0x0000000000000000 0x9c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_BLE_CLK + 0x0000000000000000 0x2a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_WiFi_Core_CLK + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_WiFi_Encrypt_CLK + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_DMA_CLK + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_IR_CLK + 0x0000000000000000 0x3a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_I2C_CLK + 0x0000000000000000 0x3a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_SPI_CLK + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_AHB_Slave1_Clock_Gate + 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_Init + 0x0000000000000000 0x56 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_Addr_Monitor_Enable + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_Addr_Monitor_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_BusErrResponse_Enable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_BusErrResponse_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_Get_Status + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_BMX_Get_Err_Addr + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.BMX_ERR_INT_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.BMX_TIMEOUT_INT_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_SRAM_RET + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Get_SRAM_RET + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_SRAM_SLP + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Get_SRAM_SLP + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_SRAM_PARM + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Get_SRAM_PARM + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_EM_Sel + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_JTAG_Sig_Swap_Set + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Swap_SPI_0_MOSI_With_MISO + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_SPI_0_ACT_MOD_Sel + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_ADC_CLK + 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_DAC_CLK + 0x0000000000000000 0x4e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Platform_Wakeup_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Platform_Wakeup_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_DIG_CLK_Sel + 0x0000000000000000 0x50 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_DIG_512K_CLK + 0x0000000000000000 0x5a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_DIG_32K_CLK + 0x0000000000000000 0x4c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_BT_Coex_Signal + 0x0000000000000000 0x44 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_IR_RX_GPIO_Sel + 0x0000000000000000 0x3e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_IR_LED_Driver_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_IR_LED_Driver_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_IR_LED_Driver_Ibias + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_Func_Init + 0x0000000000000000 0x5c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_Get_Real_Fun + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_Write + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_IntMask + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_IntClear + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Get_GPIO_IntStatus + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Clr_GPIO_IntStatus + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Set_GPIO_IntMod + 0x0000000000000000 0x8c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_Get_GPIO_IntCtlMod + 0x0000000000000000 0x62 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_INT0_IRQHandler_Install + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .text.GLB_GPIO_INT0_Callback_Install + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .bss.glbGpioInt0CbfArra + 0x0000000000000000 0x5c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .rodata.BMX_ERR_IRQHandler.str1.4 + 0x0000000000000000 0x15 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .rodata.BMX_TO_IRQHandler.str1.4 + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .rodata.GPIO_INT0_IRQHandler.str1.4 + 0x0000000000000000 0x2d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .sbss.glbBmxErrIntCbfArra + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .sbss.glbBmxToIntCbfArra + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_IntHandler + 0x0000000000000000 0xc4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_CH0_IRQHandler + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_CH1_IRQHandler + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_WDT_IRQHandler + 0x0000000000000000 0x46 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_GetCompValue + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_SetCompValue + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_GetCounterValue + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_GetMatchStatus + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_GetPreloadValue + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_SetPreloadValue + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_SetPreloadTrigSrc + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_SetCountMode + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_ClearIntStatus + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_Init + 0x0000000000000000 0xfe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_Enable + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_Disable + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.TIMER_IntMask + 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_Set_Clock + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_GetMatchValue + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_SetCompValue + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_GetCounterValue + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_ResetCounterValue + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_GetResetStatus + 0x0000000000000000 0x32 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_ClearResetStatus + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_Enable + 0x0000000000000000 0x54 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_Disable + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_IntMask + 0x0000000000000000 0x48 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.Timer_Int_Callback_Install + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .text.WDT_Int_Callback_Install + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .bss.timerIntCbfArra + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_info 0x0000000000000000 0xd96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_abbrev 0x0000000000000000 0x2fe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_loc 0x0000000000000000 0x7dd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_aranges + 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_ranges 0x0000000000000000 0x188 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0xcf out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x8cd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_line 0x0000000000000000 0x1113 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_str 0x0000000000000000 0xbe01 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .debug_frame 0x0000000000000000 0x22c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_Dbg_Pwd + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_Dbg_Pwd + 0x0000000000000000 0x2a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Readlock_Dbg_Pwd + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Writelock_Dbg_Pwd + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_Secure_Cfg + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_Secure_Cfg + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_Secure_Boot + 0x0000000000000000 0x5e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_Secure_Boot + 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Get_Trim_Enable + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_Ana_Trim + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_Ana_Trim + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .sclock_rlt_code + 0x0000000000000000 0xb6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_Sw_Usage + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_Sw_Usage + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Writelock_Sw_Usage + 0x0000000000000000 0x44 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_MAC_Address + 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_MAC_Address_Raw + 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Writelock_MAC_Address + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Is_All_Bits_Zero + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Is_MAC_Address_Slot_Empty + 0x0000000000000000 0x8a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_MAC_Address_Opt + 0x0000000000000000 0x122 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_MAC_Address_Opt + 0x0000000000000000 0x136 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_Chip_ID + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_Device_Info + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Is_CapCode_Slot_Empty + 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_CapCode_Opt + 0x0000000000000000 0xea out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_CapCode_Opt + 0x0000000000000000 0x94 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Is_PowerOffset_Slot_Empty + 0x0000000000000000 0x86 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_PowerOffset_Opt + 0x0000000000000000 0xde out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_PowerOffset_Opt + 0x0000000000000000 0xce out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_AES_Key + 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_AES_Key + 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Writelock_AES_Key + 0x0000000000000000 0x64 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Readlock_AES_Key + 0x0000000000000000 0x4c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Write_R0 + 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Read_R0 + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Crc_Enable + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Crc_Is_Busy + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Crc_Set_Golden + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .text.EF_Ctrl_Crc_Result + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .tcm_code 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_info 0x0000000000000000 0xf4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_abbrev 0x0000000000000000 0xa9 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_loc 0x0000000000000000 0x4b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0xfd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x1a6e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_line 0x0000000000000000 0x370 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_str 0x0000000000000000 0x4db19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_OUT1_IRQHandler + 0x0000000000000000 0xce out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_OUT0_IRQHandler + 0x0000000000000000 0x8a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .tcm_code 0x0000000000000000 0x2e0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_App_Reset + 0x0000000000000000 0xb4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_PIR_Enable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_PIR_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_PIR_INT_Config + 0x0000000000000000 0x2c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_PIR_LPF_Sel + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_PIR_HPF_Sel + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_PIR_Threshold + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_PIR_Threshold + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_PIR_Interval + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_PIR_Interval + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_BOR_OUT_State + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_BOR_Config + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_XCLK_CLK_Sel + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_HRAM_slp + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_HRAM_Ret + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .sclock_rlt_code + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_Status_Flag + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_Status_Flag + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_Wakeup_Addr + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_Wakeup_Addr + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Clear_RTC_Counter + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Enable_RTC_Counter + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Set_RTC_Timer + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_RTC_Timer_Val + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Clear_RTC_INT + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_GPIO_INT_Enable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_GPIO_INT_Disable + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_INT_State + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Get_Pin_Wakeup_Mode + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Clear_IRQ + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Aon_Pad_IeSmt_Cfg + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Enable_AComp0_IRQ + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Disable_AComp0_IRQ + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Enable_AComp1_IRQ + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Disable_AComp1_IRQ + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Enable_BOR_IRQ + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Disable_BOR_IRQ + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Out0_IRQHandler_Install + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Out0_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Out1_IRQHandler_Install + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .text.HBN_Out1_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .bss.hbnInt0CbfArra + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .bss.hbnInt1CbfArra + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.SEC_PKA_IRQHandler + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.SEC_AES_IRQHandler + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.SEC_GMAC_IRQHandler + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA256_Link_Update.part.1 + 0x0000000000000000 0x15e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_MREM.part.3 + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA_Enable_Link + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA_Disable_Link + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA256_Link_Init + 0x0000000000000000 0x68 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA256_Link_Update + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA256_Link_Finish + 0x0000000000000000 0x19c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Init + 0x0000000000000000 0x86 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Enable_BE + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Enable_LE + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Enable_Link + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Disable_Link + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Link_Work + 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Set_Hw_Key_Src + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Set_Key_IV + 0x0000000000000000 0x426 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Set_Key_IV_BE + 0x0000000000000000 0x252 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Set_Counter_Byte + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Crypt + 0x0000000000000000 0xac out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_AES_Finish + 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_Trng_Int_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_Trng_Int_Disable + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_Trng_Read + 0x0000000000000000 0x18e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_Trng_Int_Read_Trigger + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_Trng_Int_Read + 0x0000000000000000 0x150 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_Reset + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_BigEndian_Enable + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LittleEndian_Enable + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_Clear_Int + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_Read_Block + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_Write_Block + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_Write_Data + 0x0000000000000000 0xc2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_Read_Data + 0x0000000000000000 0xc2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_CREG + 0x0000000000000000 0x64 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_Write_Immediate + 0x0000000000000000 0x62 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_NREG + 0x0000000000000000 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_Move_Data + 0x0000000000000000 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_RESIZE + 0x0000000000000000 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_MADD + 0x0000000000000000 0x9e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_MSUB + 0x0000000000000000 0x9e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_MREM + 0x0000000000000000 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_MMUL + 0x0000000000000000 0x9e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_MSQR + 0x0000000000000000 0x80 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_MEXP + 0x0000000000000000 0x9e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_MINV + 0x0000000000000000 0x80 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LCMP + 0x0000000000000000 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LADD + 0x0000000000000000 0x7e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LSUB + 0x0000000000000000 0x7e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LMUL + 0x0000000000000000 0x68 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LSQR + 0x0000000000000000 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LDIV + 0x0000000000000000 0x80 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LMUL2N + 0x0000000000000000 0x68 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LDIV2N + 0x0000000000000000 0x68 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_LMOD2N + 0x0000000000000000 0x6e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_GF2Mont + 0x0000000000000000 0x48 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_PKA_Mont2GF + 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_GMAC_Enable_LE + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_GMAC_Enable_BE + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_GMAC_Enable_Link + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_GMAC_Disable_Link + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_GMAC_Link_Work + 0x0000000000000000 0x90 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.SEC_Eng_IntMask + 0x0000000000000000 0x14e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.SEC_Eng_ClrIntStatus + 0x0000000000000000 0x78 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.SEC_Eng_Int_Callback_Install + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.SEC_Eng_GetIntStatus + 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.SEC_CDET_IRQHandler + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .rodata.CSWTCH.116 + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .text.sdio_GEN_CARD2HOST_INT + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .text.sdio_ioctl + 0x0000000000000000 0x2c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000000000 0x189 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_DAC_Init + 0x0000000000000000 0x56 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_DAC_Set_ChanA_Config + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_DAC_Set_ChanB_Config + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_Set_DAC_ChanB_SRC_SEL + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_Set_DAC_ChanA_SRC_SEL + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_Set_DAC_Mod_SEL + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_DAC_ChanB_Enable + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_DAC_ChanB_Disable + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_DAC_ChanA_Enable + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_DAC_ChanA_Disable + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_Set_DAC_DMA_TX_FORMAT_SEL + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_Set_DAC_DMA_TX_Enable + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_Set_DAC_DMA_TX_Disable + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GPIP_DAC_DMA_WriteData + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_GPIP_DAC_Init + 0x0000000000000000 0x94 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_GPIP_DAC_Set_ChanA_Config + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_GPIP_DAC_Set_ChanB_Config + 0x0000000000000000 0x44 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_DAC_Set_ChanA_Value + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .text.GLB_DAC_Set_ChanB_Value + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_info 0x0000000000000000 0x7b0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_abbrev 0x0000000000000000 0x194 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_loc 0x0000000000000000 0x416 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_aranges + 0x0000000000000000 0xb0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_ranges 0x0000000000000000 0xa0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0xe1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x1a6e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x3fc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_macro 0x0000000000000000 0x35 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_line 0x0000000000000000 0xdb0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_str 0x0000000000000000 0x3a968 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .debug_frame 0x0000000000000000 0x140 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_ERR_IRQHandler + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_TO_IRQHandler + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_Init + 0x0000000000000000 0x6c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_Addr_Monitor_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_Addr_Monitor_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_BusErrResponse_Enable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_BusErrResponse_Disable + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_Get_Status + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_Get_Err_Addr + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_ERR_INT_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .text.L1C_BMX_TIMEOUT_INT_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .rodata.L1C_BMX_ERR_IRQHandler.str1.4 + 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .rodata.L1C_BMX_TO_IRQHandler.str1.4 + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .sbss.l1cBmxErrIntCbfArra + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .sbss.l1cBmxToIntCbfArra + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_info 0x0000000000000000 0x693 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_abbrev 0x0000000000000000 0x1c7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_loc 0x0000000000000000 0x1ce out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_aranges + 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_ranges 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0xcd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x365 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_line 0x0000000000000000 0x74b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_str 0x0000000000000000 0xb2cc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .debug_frame 0x0000000000000000 0xdc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_IRQHandler + 0x0000000000000000 0x84 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Init + 0x0000000000000000 0xda out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Update + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Set_Div + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Set_Threshold1 + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Set_Threshold2 + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Set_Period + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Get + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Disable + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_SW_Mode + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_SW_Force_Value + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Channel_Fource_Output + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_IntMask + 0x0000000000000000 0x2c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Int_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .text.PWM_Smart_Configure + 0x0000000000000000 0x14c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .bss.PWMIntCbfArra + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_info 0x0000000000000000 0xb37 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_abbrev 0x0000000000000000 0x32f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_loc 0x0000000000000000 0xa16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_aranges + 0x0000000000000000 0x98 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_ranges 0x0000000000000000 0xe0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0xdb out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0xbb4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_macro 0x0000000000000000 0x2d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_line 0x0000000000000000 0xf5b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_str 0x0000000000000000 0xa986 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .debug_frame 0x0000000000000000 0x14c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_IRQHandler + 0x0000000000000000 0x8a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_SendWord + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_RecieveWord + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_Enable + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_Disable + 0x0000000000000000 0x2a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_Reset + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_Init + 0x0000000000000000 0x6e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_SetPrd + 0x0000000000000000 0x84 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_ClockSet + 0x0000000000000000 0x110 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_SetSclSync + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_IsBusy + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_MasterSendBlocking + 0x0000000000000000 0x186 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_MasterReceiveBlocking + 0x0000000000000000 0x1b6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_IntMask + 0x0000000000000000 0x10c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .text.I2C_Int_Callback_Install + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .bss.i2cIntCbfArra + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_info 0x0000000000000000 0xe9b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_abbrev 0x0000000000000000 0x376 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_loc 0x0000000000000000 0xc87 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_aranges + 0x0000000000000000 0x90 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_ranges 0x0000000000000000 0x240 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x193 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x877 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_line 0x0000000000000000 0x1cdb out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_str 0x0000000000000000 0x6acde out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .debug_frame 0x0000000000000000 0x194 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .text.Sec_Dbg_Read_Chip_ID + 0x0000000000000000 0x42 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .text.Sec_Dbg_Read_WiFi_MAC + 0x0000000000000000 0x32 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .text.Sec_Dbg_Read_Dbg_Mode + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .text.Sec_Dbg_Read_Dbg_Enable + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_info 0x0000000000000000 0x140 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_abbrev 0x0000000000000000 0xee out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_loc 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_aranges + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_ranges 0x0000000000000000 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0xc3 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x1de out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_line 0x0000000000000000 0x433 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_str 0x0000000000000000 0xa24e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .debug_frame 0x0000000000000000 0x50 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IRRX_IRQHandler + 0x0000000000000000 0x2a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IRTX_IRQHandler + 0x0000000000000000 0x2a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_Disable.part.1 + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_TxInit + 0x0000000000000000 0xee out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_TxPulseWidthConfig + 0x0000000000000000 0xca out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_TxSWMPulseWidthConfig + 0x0000000000000000 0x3a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_RxInit + 0x0000000000000000 0xa0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_DeInit + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_Enable + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_Disable + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_TxSWM + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_RxFIFOClear + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_SendData + 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_SWMSendData + 0x0000000000000000 0x104 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_SendCommand + 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_SWMSendCommand + 0x0000000000000000 0x78 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_SendNEC + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_IntMask + 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_ClrIntStatus + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_Int_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_GetIntStatus + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_GetRxFIFOStatus + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_ReceiveData + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_SWMReceiveData + 0x0000000000000000 0x44 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_ReceiveNEC + 0x0000000000000000 0x3e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_GetRxDataBitCount + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_GetRxFIFOCount + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_LearnToInit + 0x0000000000000000 0x202 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_LearnToReceive + 0x0000000000000000 0x102 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_LearnToSend + 0x0000000000000000 0x50 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_LEDInit + 0x0000000000000000 0x9a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .text.IR_LEDSend + 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .rodata 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .bss.irIntCbfArra + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_info 0x0000000000000000 0x1be3 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_abbrev 0x0000000000000000 0x2d6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_loc 0x0000000000000000 0x1877 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_aranges + 0x0000000000000000 0x118 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_ranges 0x0000000000000000 0x420 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x1cf out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x7f4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_line 0x0000000000000000 0x2a17 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_str 0x0000000000000000 0x6ae19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .debug_frame 0x0000000000000000 0x2e4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_IRQHandler + 0x0000000000000000 0x110 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Init + 0x0000000000000000 0x7e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_DeInit + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_ClockConfig + 0x0000000000000000 0x64 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SetClock + 0x0000000000000000 0xb6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_FifoConfig + 0x0000000000000000 0x4e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Enable + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Disable + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SetTimeOutValue + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SetDeglitchCount + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_RxIgnoreEnable + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_RxIgnoreDisable + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_ClrTxFifo + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_ClrRxFifo + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_ClrIntStatus + 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_IntMask + 0x0000000000000000 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Int_Callback_Install + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SendData + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Send_8bits + 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Send_16bits + 0x0000000000000000 0xc0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Send_24bits + 0x0000000000000000 0xbe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Send_32bits + 0x0000000000000000 0xbc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Recv_8bits + 0x0000000000000000 0xc0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Recv_16bits + 0x0000000000000000 0xce out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Recv_24bits + 0x0000000000000000 0xe2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_Recv_32bits + 0x0000000000000000 0xcc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SendRecv_8bits + 0x0000000000000000 0xda out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SendRecv_16bits + 0x0000000000000000 0xde out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SendRecv_24bits + 0x0000000000000000 0xf2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_SendRecv_32bits + 0x0000000000000000 0xdc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_ReceiveData + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_GetTxFifoCount + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_GetRxFifoCount + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_GetIntStatus + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_GetBusyStatus + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .text.SPI_GetFifoStatus + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .bss.spiIntCbfArra + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_info 0x0000000000000000 0x1bbc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_abbrev 0x0000000000000000 0x2e2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_loc 0x0000000000000000 0x23e5 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_aranges + 0x0000000000000000 0x138 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_ranges 0x0000000000000000 0x3a0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x193 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x782 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_line 0x0000000000000000 0x375a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_str 0x0000000000000000 0x6ab6f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .debug_frame 0x0000000000000000 0x294 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_WAKEUP_IRQHandler + 0x0000000000000000 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_IntMask + 0x0000000000000000 0x2c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_Get_IntStatus + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_IntClear + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_Get_PdsPllStstus + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_Get_PdsRfStstus + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_Get_PdsStstus + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_WAKEUP_IRQHandler_Install + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .text.PDS_Int_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .bss.pdsIntCbfArra + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_info 0x0000000000000000 0x5f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_abbrev 0x0000000000000000 0x225 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_loc 0x0000000000000000 0x129 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_aranges + 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_ranges 0x0000000000000000 0xb0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x13c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x11f2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_macro 0x0000000000000000 0x90 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_line 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_str 0x0000000000000000 0x61f6d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .debug_frame 0x0000000000000000 0xd0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .text.TZC_Sboot_Set + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .text.TZC_Set_Rom0_R0_Protect + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .text.TZC_Set_Rom0_R1_Protect + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .text.TZC_Set_Rom1_R0_Protect + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .text.TZC_Set_Rom1_R1_Protect + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_info 0x0000000000000000 0x1dc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_abbrev 0x0000000000000000 0xb8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_loc 0x0000000000000000 0x243 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_aranges + 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_ranges 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0xc3 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x33c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_line 0x0000000000000000 0x5e1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_str 0x0000000000000000 0xb0af out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .debug_frame 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.GPADC_DMA_IRQHandler + 0x0000000000000000 0x10a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Reset + 0x0000000000000000 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Channel_Config + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Scan_Channel_Config + 0x0000000000000000 0x13e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Start + 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Stop + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_FIFO_Cfg + 0x0000000000000000 0x2a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Get_FIFO_Count + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_FIFO_Is_Full + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_FIFO_Is_Empty + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Read_FIFO + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Parse_Result + 0x0000000000000000 0x22e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_IntMask + 0x0000000000000000 0xde out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_IntClr + 0x0000000000000000 0x102 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_GetIntStatus + 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Int_Callback_Install + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Vbat_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Vbat_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Tsen_Init + 0x0000000000000000 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.TSEN_Get_V_Error + 0x0000000000000000 0x102 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .sclock_rlt_code + 0x0000000000000000 0x1da out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_SET_TSVBE_LOW + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_SET_TSVBE_HIGH + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.TSEN_Get_Temp + 0x0000000000000000 0x158 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Mic_Init + 0x0000000000000000 0xa4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_MIC_Bias_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_MIC_Bias_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .text.ADC_Init + 0x0000000000000000 0x122 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .bss.adcIntCbfArra + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .data.adcGainCoeffCal + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .rodata.ADC_Parse_Result.cst4 + 0x0000000000000000 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .rodata.TSEN_Get_Temp.cst4 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .srodata.cst4 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_info 0x0000000000000000 0x1922 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_abbrev 0x0000000000000000 0x37b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_loc 0x0000000000000000 0x1610 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_aranges + 0x0000000000000000 0x110 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_ranges 0x0000000000000000 0x2d0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x102 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x1a6e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x3fc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x82 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_line 0x0000000000000000 0x353c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_str 0x0000000000000000 0x22268 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .debug_frame 0x0000000000000000 0x2c8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .text.AON_ACOMP_Init + 0x0000000000000000 0xe4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .text.AON_ACOMP_Enable + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .text.AON_ACOMP_Get_Result + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_info 0x0000000000000000 0x2e1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_abbrev 0x0000000000000000 0x11b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_loc 0x0000000000000000 0x15c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_aranges + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_ranges 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0xc9 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x1a6e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_macro 0x0000000000000000 0x27 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_line 0x0000000000000000 0x60d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_str 0x0000000000000000 0x16e7e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .debug_frame 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_get_rf_cal_slots + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_set_rf_cal_slots + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_is_xtal_capcode_slot_empty + 0x0000000000000000 0xd6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_xtal_capcode_pre + 0x0000000000000000 0xfc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_xtal_capcode + 0x0000000000000000 0x72 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_read_xtal_capcode + 0x0000000000000000 0xfa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_is_poweroffset_slot_empty + 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_poweroffset_pre + 0x0000000000000000 0x12e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_poweroffset + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_read_poweroffset + 0x0000000000000000 0x220 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_is_macaddr_slot_empty + 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_macaddr_pre + 0x0000000000000000 0x116 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_macaddr + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_read_macaddr + 0x0000000000000000 0x118 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_write_pre + 0x0000000000000000 0x84 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_read + 0x0000000000000000 0x98 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .text.mfg_efuse_program + 0x0000000000000000 0x76 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .rodata.mfg_efuse_is_xtal_capcode_slot_empty.str1.4 + 0x0000000000000000 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .rodata.mfg_efuse_read_xtal_capcode.str1.4 + 0x0000000000000000 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .rodata.mfg_efuse_write_xtal_capcode_pre.str1.4 + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .sdata.rf_cal_slots + 0x0000000000000000 0x1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_info 0x0000000000000000 0x14d6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_abbrev 0x0000000000000000 0x276 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_loc 0x0000000000000000 0xc90 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_aranges + 0x0000000000000000 0x90 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_ranges 0x0000000000000000 0x80 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x189 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_line 0x0000000000000000 0x16d8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_str 0x0000000000000000 0x66610 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .debug_frame 0x0000000000000000 0x314 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x1a6e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x365 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x47b1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x4cb out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .tcm_code 0x0000000000000000 0x56c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .bss.flashCfg 0x0000000000000000 0x54 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .sbss.aesEnable + 0x0000000000000000 0x1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_info 0x0000000000000000 0x1297 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_abbrev 0x0000000000000000 0x236 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_loc 0x0000000000000000 0xaef out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_aranges + 0x0000000000000000 0x98 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_ranges 0x0000000000000000 0x130 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x112 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x206b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_line 0x0000000000000000 0xba6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_str 0x0000000000000000 0x1c0a7 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .debug_frame 0x0000000000000000 0x2dc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_set_gain_table_regs + 0x0000000000000000 0x1d4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_manu_pu + 0x0000000000000000 0x8c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_save_state_for_cal + 0x0000000000000000 0x13c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_restore_state_for_cal + 0x0000000000000000 0x13c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_pm_pwr + 0x0000000000000000 0x5e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_pm_pwr_avg + 0x0000000000000000 0x68 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_txcal_config_hw + 0x0000000000000000 0x276 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_fcal_meas + 0x0000000000000000 0x5a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_rccal_config.part.0 + 0x0000000000000000 0x28 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_rccal_config + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_rccal_iq + 0x0000000000000000 0x2ae out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_txcal_config + 0x0000000000000000 0x84 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_txcal_search_core + 0x0000000000000000 0x126 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_tcal_glb.part.4 + 0x0000000000000000 0x8a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_rccal.part.6 + 0x0000000000000000 0x290 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_config_channel.constprop.7 + 0x0000000000000000 0x150 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_singen_pwrmx_dc.constprop.8 + 0x0000000000000000 0x104 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_roscal_iq.isra.3 + 0x0000000000000000 0xf6 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_roscal.part.5 + 0x0000000000000000 0x25c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_tx_power_offset + 0x0000000000000000 0xa6 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_tx_power_offset_res + 0x0000000000000000 0x82 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_tcal_glb + 0x0000000000000000 0x14 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_init_fast + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_notch_param + 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_param + 0x0000000000000000 0x470 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_xtalfreq + 0x0000000000000000 0x1e4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_get_vco_freq_cw + 0x0000000000000000 0x56 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_get_vco_idac_cw + 0x0000000000000000 0x56 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_txgain_tempos + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_get_txgain_max + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_get_txgain_min + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_get_txgain_index + 0x0000000000000000 0x3a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_query_txgain_table + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_dvga_os + 0x0000000000000000 0x30 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_tcal_param + 0x0000000000000000 0x5c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_tx_gain_comp + 0x0000000000000000 0x244 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_config_bandwidth + 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_txcal + 0x0000000000000000 0x508 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_roscal + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_rccal + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_lo_acal + 0x0000000000000000 0x1a4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_fcal + 0x0000000000000000 0x2ec out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_full_cal + 0x0000000000000000 0xee out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_restore_cal_reg + 0x0000000000000000 0x174 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_init + 0x0000000000000000 0x18a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .text.rf_pri_update_power_offset + 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .bss.data 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .bss.tcal_param_data + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .bss.tx_pwr_ch_os + 0x0000000000000000 0xe out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .data.temps 0x0000000000000000 0x1a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .data.temps_dvga + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .data.tx_pwr_table + 0x0000000000000000 0xe0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .data.tx_pwr_table_origin + 0x0000000000000000 0xe0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.channel_cnt_range_list + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.channel_cnt_table_list + 0x0000000000000000 0xd2 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.channel_div_table_list + 0x0000000000000000 0x1a4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_config_channel.constprop.7.str1.4 + 0x0000000000000000 0x18 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_fcal.str1.4 + 0x0000000000000000 0x37 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_get_vco_freq_cw.cst8 + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_lo_acal.str1.4 + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_rccal.part.6.str1.4 + 0x0000000000000000 0x9a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_rccal_iq.cst8 + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_roscal.part.5.str1.4 + 0x0000000000000000 0x9f out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_singen_pwrmx_dc.constprop.8.str1.4 + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_txcal.str1.4 + 0x0000000000000000 0xb9 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rf_pri_update_param.str1.4 + 0x0000000000000000 0x59 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.rx_notch_para_list + 0x0000000000000000 0x230 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .rodata.txcal_para + 0x0000000000000000 0x80 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.Tthr 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.channel_cnt_range + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.channel_cnt_table + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.channel_div_table + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.dvga_os_pre + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.index_os_pre + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.index_os_pre_mdb + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.init_fast + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.rx_notch_para + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_adda1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_dfe_ctrl_0 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_dfe_ctrl_3 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_dfe_ctrl_6 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_dfe_ctrl_7 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_fbdv + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_hbn_glb + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_pa1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_pucr1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_rbb3 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_rf_fsm_ctrl_hw + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_rf_resv_reg_1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_rfcal_ctrlen + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_rfctrl_hw_en + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_rfif_dfe_ctrl0 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_sdm1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_sdm2 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_singen_ctrl0 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_singen_ctrl2 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_singen_ctrl3 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_sram_ctrl0 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_sram_ctrl1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_sram_ctrl2 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_tbb + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_ten_ac + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_trx_gain1 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.state_vco2 + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.tcal_param_from + 0x0000000000000000 0x1 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.tx_pwr_os + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.tx_pwr_os_temperature + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sbss.up_dn 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sdata.fcal_div + 0x0000000000000000 0x2 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sdata.tcal_param + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .sdata.tp_index + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_info 0x0000000000000000 0x3134 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_abbrev 0x0000000000000000 0x4e5 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_loc 0x0000000000000000 0x3a9d out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_aranges + 0x0000000000000000 0x188 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_ranges 0x0000000000000000 0x7b0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x16d out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x6ff8 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_line 0x0000000000000000 0x7e3e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_str 0x0000000000000000 0x7aa04 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .debug_frame 0x0000000000000000 0x5bc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .text.rf_pri_init_calib_mem + 0x0000000000000000 0x12e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .bss.data 0x0000000000000000 0xa8 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .sdata.rf_calib_data + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_info 0x0000000000000000 0x5bc out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_abbrev 0x0000000000000000 0x14a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_loc 0x0000000000000000 0x36 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_macro 0x0000000000000000 0x4a out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_macro 0x0000000000000000 0x7a2 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_line 0x0000000000000000 0x3bb out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_str 0x0000000000000000 0x3398 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_dump + 0x0000000000000000 0x84 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_prints + 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_printx + 0x0000000000000000 0x38 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_printc + 0x0000000000000000 0x1e out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_get_time_us + 0x0000000000000000 0xd0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_start_time + 0x0000000000000000 0x8 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_stop_time + 0x0000000000000000 0x2 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_set_alarm_time_callback + 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_set_alarm_time + 0x0000000000000000 0x74 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_deinit_time + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_print_set + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_plat_uart_debug_port_set + 0x0000000000000000 0x2 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_get_random + 0x0000000000000000 0x74 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .rodata.bflb_platform_dump.str1.4 + 0x0000000000000000 0xa out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .rodata.hexTable + 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .sbss.systick_int_cnt + 0x0000000000000000 0x4 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xa68 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x7a8 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x20a out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xa68 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x47b7 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x11f8 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x7c0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x36b out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x4f out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xaec out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x1a74 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x2071 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xba out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x70 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x96 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x100 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/tasks.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/tasks.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvSearchForNameWithinSingleList + 0x0000000000000000 0x66 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvAddCurrentTaskToDelayedList + 0x0000000000000000 0xd8 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvResetNextTaskUnblockTime.part.0 + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvInitialiseNewTask.isra.2 + 0x0000000000000000 0xe0 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvDeleteTCB + 0x0000000000000000 0x46 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskEnterCritical.part.5 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskExitCritical.part.6 + 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvAddNewTaskToReadyList + 0x0000000000000000 0x1c0 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvIdleTask + 0x0000000000000000 0x96 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskCreateStatic + 0x0000000000000000 0xb8 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskCreate + 0x0000000000000000 0x90 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskDelete + 0x0000000000000000 0x152 out/3rdParty/FreeRTOS/Source/tasks.o + .text.eTaskGetState + 0x0000000000000000 0xda out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskPriorityGet + 0x0000000000000000 0x56 out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskPriorityGetFromISR + 0x0000000000000000 0x12 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPrioritySet + 0x0000000000000000 0x142 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskResume + 0x0000000000000000 0xe4 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskResumeFromISR + 0x0000000000000000 0xd8 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskStartScheduler + 0x0000000000000000 0x88 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskEndScheduler + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSuspendAll + 0x0000000000000000 0x10 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetTickCount + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetTickCountFromISR + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskGetNumberOfTasks + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.pcTaskGetName + 0x0000000000000000 0x2c out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskIncrementTick + 0x0000000000000000 0x1b6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskResumeAll + 0x0000000000000000 0x1d6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskDelayUntil + 0x0000000000000000 0x8e out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskDelay + 0x0000000000000000 0x4e out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetHandle + 0x0000000000000000 0xce out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskCatchUpTicks + 0x0000000000000000 0x42 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskAbortDelay + 0x0000000000000000 0xec out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSwitchContext + 0x0000000000000000 0xd6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSuspend + 0x0000000000000000 0x190 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPlaceOnEventList + 0x0000000000000000 0x3c out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPlaceOnUnorderedEventList + 0x0000000000000000 0x66 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPlaceOnEventListRestricted + 0x0000000000000000 0x46 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskRemoveFromEventList + 0x0000000000000000 0xac out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskRemoveFromUnorderedEventList + 0x0000000000000000 0xb6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSetTimeOutState + 0x0000000000000000 0x6c out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskInternalSetTimeOutState + 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskCheckForTimeOut + 0x0000000000000000 0xd2 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskMissedYield + 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskGetTaskNumber + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSetTaskNumber + 0x0000000000000000 0x6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskGetInfo + 0x0000000000000000 0xe4 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvListTasksWithinSingleList.part.9 + 0x0000000000000000 0x90 out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskGetSystemState + 0x0000000000000000 0x12a out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetCurrentTaskHandle + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetSchedulerState + 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskPriorityInherit + 0x0000000000000000 0xda out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskPriorityDisinherit + 0x0000000000000000 0xe6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPriorityDisinheritAfterTimeout + 0x0000000000000000 0xf6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskEnterCritical + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskExitCritical + 0x0000000000000000 0x20 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskList + 0x0000000000000000 0x11e out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskResetEventItemValue + 0x0000000000000000 0x1a out/3rdParty/FreeRTOS/Source/tasks.o + .text.pvTaskIncrementMutexHeldCount + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/tasks.o + .text.ulTaskNotifyTake + 0x0000000000000000 0xba out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskNotifyWait + 0x0000000000000000 0xf4 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGenericNotify + 0x0000000000000000 0x14c out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGenericNotifyFromISR + 0x0000000000000000 0x134 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskNotifyGiveFromISR + 0x0000000000000000 0xd4 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskNotifyStateClear + 0x0000000000000000 0x66 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.pxReadyTasksLists + 0x0000000000000000 0x8c out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xDelayedTaskList1 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xDelayedTaskList2 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xPendingReadyList + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xSuspendedTaskList + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xTasksWaitingTermination + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .rodata.CSWTCH.183 + 0x0000000000000000 0x5 out/3rdParty/FreeRTOS/Source/tasks.o + .rodata.vTaskList.str1.4 + 0x0000000000000000 0xf out/3rdParty/FreeRTOS/Source/tasks.o + .rodata.vTaskStartScheduler.str1.4 + 0x0000000000000000 0x5 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.pxCurrentTCB + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.pxDelayedTaskList + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.pxOverflowDelayedTaskList + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxCurrentNumberOfTasks + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxDeletedTasksWaitingCleanUp + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxSchedulerSuspended + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxTaskNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxTopReadyPriority + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xNextTaskUnblockTime + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xNumOfOverflows + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xPendedTicks + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xSchedulerRunning + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xTickCount + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xYieldPending + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_info 0x0000000000000000 0x34e7 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_abbrev 0x0000000000000000 0x466 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_loc 0x0000000000000000 0x2b4b out/3rdParty/FreeRTOS/Source/tasks.o + .debug_aranges + 0x0000000000000000 0x210 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_ranges 0x0000000000000000 0x748 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x17c out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x7a8 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x91 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x10 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_line 0x0000000000000000 0x5760 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_str 0x0000000000000000 0x901e out/3rdParty/FreeRTOS/Source/tasks.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_frame 0x0000000000000000 0xab0 out/3rdParty/FreeRTOS/Source/tasks.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/list.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/list.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/list.o + .text.vListInitialise + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/list.o + .text.vListInitialiseItem + 0x0000000000000000 0x6 out/3rdParty/FreeRTOS/Source/list.o + .text.vListInsertEnd + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/list.o + .text.vListInsert + 0x0000000000000000 0x32 out/3rdParty/FreeRTOS/Source/list.o + .text.uxListRemove + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/list.o + .debug_info 0x0000000000000000 0x2a9 out/3rdParty/FreeRTOS/Source/list.o + .debug_abbrev 0x0000000000000000 0x114 out/3rdParty/FreeRTOS/Source/list.o + .debug_loc 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/list.o + .debug_aranges + 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/list.o + .debug_ranges 0x0000000000000000 0x30 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x99 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x7a8 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/list.o + .debug_line 0x0000000000000000 0x554 out/3rdParty/FreeRTOS/Source/list.o + .debug_str 0x0000000000000000 0x6731 out/3rdParty/FreeRTOS/Source/list.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/list.o + .debug_frame 0x0000000000000000 0x60 out/3rdParty/FreeRTOS/Source/list.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/queue.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/queue.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/queue.o + .text.prvCopyDataToQueue + 0x0000000000000000 0xb0 out/3rdParty/FreeRTOS/Source/queue.o + .text.prvCopyDataFromQueue + 0x0000000000000000 0x22 out/3rdParty/FreeRTOS/Source/queue.o + .text.prvUnlockQueue + 0x0000000000000000 0xd6 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericReset + 0x0000000000000000 0xb2 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericCreateStatic + 0x0000000000000000 0x94 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericCreate + 0x0000000000000000 0x90 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGetMutexHolder + 0x0000000000000000 0x3c out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGetMutexHolderFromISR + 0x0000000000000000 0x24 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueCreateCountingSemaphoreStatic + 0x0000000000000000 0x4e out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueCreateCountingSemaphore + 0x0000000000000000 0x44 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericSend + 0x0000000000000000 0x1c4 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueCreateMutexStatic + 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGiveMutexRecursive + 0x0000000000000000 0x54 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueCreateMutex + 0x0000000000000000 0x3c out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericSendFromISR + 0x0000000000000000 0xce out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGiveFromISR + 0x0000000000000000 0x8a out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueReceive + 0x0000000000000000 0x1c0 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueSemaphoreTake + 0x0000000000000000 0x216 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueTakeMutexRecursive + 0x0000000000000000 0x5c out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueuePeek + 0x0000000000000000 0x1a4 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueReceiveFromISR + 0x0000000000000000 0xa2 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueuePeekFromISR + 0x0000000000000000 0x70 out/3rdParty/FreeRTOS/Source/queue.o + .text.uxQueueMessagesWaiting + 0x0000000000000000 0x30 out/3rdParty/FreeRTOS/Source/queue.o + .text.uxQueueSpacesAvailable + 0x0000000000000000 0x38 out/3rdParty/FreeRTOS/Source/queue.o + .text.uxQueueMessagesWaitingFromISR + 0x0000000000000000 0x1e out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueDelete + 0x0000000000000000 0x92 out/3rdParty/FreeRTOS/Source/queue.o + .text.uxQueueGetQueueNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueSetQueueNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/queue.o + .text.ucQueueGetQueueType + 0x0000000000000000 0x6 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueIsQueueEmptyFromISR + 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueIsQueueFullFromISR + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueAddToRegistry + 0x0000000000000000 0x28 out/3rdParty/FreeRTOS/Source/queue.o + .text.pcQueueGetName + 0x0000000000000000 0x2a out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueUnregisterQueue + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueWaitForMessageRestricted + 0x0000000000000000 0x80 out/3rdParty/FreeRTOS/Source/queue.o + .bss.xQueueRegistry + 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/queue.o + .debug_info 0x0000000000000000 0x224e out/3rdParty/FreeRTOS/Source/queue.o + .debug_abbrev 0x0000000000000000 0x3ce out/3rdParty/FreeRTOS/Source/queue.o + .debug_loc 0x0000000000000000 0x23f3 out/3rdParty/FreeRTOS/Source/queue.o + .debug_aranges + 0x0000000000000000 0x130 out/3rdParty/FreeRTOS/Source/queue.o + .debug_ranges 0x0000000000000000 0x350 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x102 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x7a8 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x87 out/3rdParty/FreeRTOS/Source/queue.o + .debug_line 0x0000000000000000 0x301c out/3rdParty/FreeRTOS/Source/queue.o + .debug_str 0x0000000000000000 0x8178 out/3rdParty/FreeRTOS/Source/queue.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/queue.o + .debug_frame 0x0000000000000000 0x5cc out/3rdParty/FreeRTOS/Source/queue.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/timers.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/timers.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/timers.o + .text.prvCheckForValidListAndQueue + 0x0000000000000000 0x9c out/3rdParty/FreeRTOS/Source/timers.o + .text.prvInsertTimerInActiveList + 0x0000000000000000 0x60 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerCreateTimerTask + 0x0000000000000000 0x6c out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerCreate + 0x0000000000000000 0x80 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerCreateStatic + 0x0000000000000000 0x96 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerGenericCommand + 0x0000000000000000 0xa8 out/3rdParty/FreeRTOS/Source/timers.o + .text.prvSwitchTimerLists + 0x0000000000000000 0x9a out/3rdParty/FreeRTOS/Source/timers.o + .text.prvTimerTask + 0x0000000000000000 0x268 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerGetTimerDaemonTaskHandle + 0x0000000000000000 0x2c out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerGetPeriod + 0x0000000000000000 0x1e out/3rdParty/FreeRTOS/Source/timers.o + .text.vTimerSetReloadMode + 0x0000000000000000 0x56 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerGetExpiryTime + 0x0000000000000000 0x1e out/3rdParty/FreeRTOS/Source/timers.o + .text.pcTimerGetName + 0x0000000000000000 0x1e out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerIsTimerActive + 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/timers.o + .text.pvTimerGetTimerID + 0x0000000000000000 0x30 out/3rdParty/FreeRTOS/Source/timers.o + .text.vTimerSetTimerID + 0x0000000000000000 0x32 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerPendFunctionCallFromISR + 0x0000000000000000 0x2c out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerPendFunctionCall + 0x0000000000000000 0x56 out/3rdParty/FreeRTOS/Source/timers.o + .text.uxTimerGetTimerNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .text.vTimerSetTimerNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .bss.ucStaticTimerQueueStorage.2169 + 0x0000000000000000 0x80 out/3rdParty/FreeRTOS/Source/timers.o + .bss.xActiveTimerList1 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/timers.o + .bss.xActiveTimerList2 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/timers.o + .bss.xStaticTimerQueue.2168 + 0x0000000000000000 0x50 out/3rdParty/FreeRTOS/Source/timers.o + .rodata.prvCheckForValidListAndQueue.str1.4 + 0x0000000000000000 0x5 out/3rdParty/FreeRTOS/Source/timers.o + .rodata.xTimerCreateTimerTask.str1.4 + 0x0000000000000000 0x8 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.pxCurrentTimerList + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.pxOverflowTimerList + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.xLastTime.2122 + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.xTimerQueue + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.xTimerTaskHandle + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .debug_info 0x0000000000000000 0x190a out/3rdParty/FreeRTOS/Source/timers.o + .debug_abbrev 0x0000000000000000 0x361 out/3rdParty/FreeRTOS/Source/timers.o + .debug_loc 0x0000000000000000 0x12ee out/3rdParty/FreeRTOS/Source/timers.o + .debug_aranges + 0x0000000000000000 0xb8 out/3rdParty/FreeRTOS/Source/timers.o + .debug_ranges 0x0000000000000000 0x218 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0xee out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x7a8 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x87 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x97 out/3rdParty/FreeRTOS/Source/timers.o + .debug_line 0x0000000000000000 0x1529 out/3rdParty/FreeRTOS/Source/timers.o + .debug_str 0x0000000000000000 0x8782 out/3rdParty/FreeRTOS/Source/timers.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/timers.o + .debug_frame 0x0000000000000000 0x338 out/3rdParty/FreeRTOS/Source/timers.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.prvInitialiseNewStreamBuffer + 0x0000000000000000 0x60 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.prvWriteBytesToBuffer + 0x0000000000000000 0xba out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.prvReadBytesFromBuffer + 0x0000000000000000 0xba out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferGenericCreate + 0x0000000000000000 0x8a out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferGenericCreateStatic + 0x0000000000000000 0xcc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.vStreamBufferDelete + 0x0000000000000000 0x56 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferReset + 0x0000000000000000 0x60 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSetTriggerLevel + 0x0000000000000000 0x32 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSpacesAvailable + 0x0000000000000000 0x44 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferBytesAvailable + 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSend + 0x0000000000000000 0x172 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSendFromISR + 0x0000000000000000 0xca out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferReceive + 0x0000000000000000 0x146 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferNextMessageLengthBytes + 0x0000000000000000 0x76 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferReceiveFromISR + 0x0000000000000000 0xc6 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferIsEmpty + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferIsFull + 0x0000000000000000 0x36 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSendCompletedFromISR + 0x0000000000000000 0x3e out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferReceiveCompletedFromISR + 0x0000000000000000 0x3e out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.uxStreamBufferGetStreamBufferNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.vStreamBufferSetStreamBufferNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.ucStreamBufferGetStreamBufferType + 0x0000000000000000 0x8 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_info 0x0000000000000000 0x1771 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_abbrev 0x0000000000000000 0x311 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_loc 0x0000000000000000 0x1e59 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_aranges + 0x0000000000000000 0xc8 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_ranges 0x0000000000000000 0x1e8 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0xdc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x7a8 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_line 0x0000000000000000 0x2092 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_str 0x0000000000000000 0x7a83 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_frame 0x0000000000000000 0x390 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/croutine.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/croutine.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_info 0x0000000000000000 0x68 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_abbrev 0x0000000000000000 0x29 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_aranges + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x9a out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x7a8 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x43 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_line 0x0000000000000000 0x167 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_str 0x0000000000000000 0x6fea out/3rdParty/FreeRTOS/Source/croutine.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/croutine.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.prvInsertBlockIntoFreeList + 0x0000000000000000 0x50 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.pvPortMalloc + 0x0000000000000000 0x10c out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.vPortFree + 0x0000000000000000 0xb4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.xPortGetFreeHeapSize + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.xPortGetMinimumEverFreeHeapSize + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.vPortDefineHeapRegions + 0x0000000000000000 0x110 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.vPortGetHeapStats + 0x0000000000000000 0xb6 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .bss.xStart 0x0000000000000000 0x8 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.pxEnd 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xBlockAllocatedBit + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xFreeBytesRemaining + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xMinimumEverFreeBytesRemaining + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xNumberOfSuccessfulAllocations + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xNumberOfSuccessfulFrees + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_info 0x0000000000000000 0x5a7 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_abbrev 0x0000000000000000 0x1e3 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_loc 0x0000000000000000 0x530 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_aranges + 0x0000000000000000 0x50 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_ranges 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0xc0 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x7a8 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_line 0x0000000000000000 0xd17 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_str 0x0000000000000000 0x70f2 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_frame 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + .text 0x0000000000000000 0x3c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_info 0x0000000000000000 0xc08 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_abbrev 0x0000000000000000 0x24b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_loc 0x0000000000000000 0x6b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_ranges 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_line 0x0000000000000000 0x365 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_str 0x0000000000000000 0x83f /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_frame 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .eh_frame 0x0000000000000000 0x28 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .eh_frame 0x0000000000000000 0x28 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .text 0x0000000000000000 0x8b8 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_info 0x0000000000000000 0x5e4 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_abbrev 0x0000000000000000 0x189 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_loc 0x0000000000000000 0x1cfd /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_ranges 0x0000000000000000 0x3d0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_line 0x0000000000000000 0x162d /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_str 0x0000000000000000 0x363 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_frame 0x0000000000000000 0x44 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .text 0x0000000000000000 0x690 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .rodata 0x0000000000000000 0x3c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_info 0x0000000000000000 0x773 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_abbrev 0x0000000000000000 0x17f /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_loc 0x0000000000000000 0x16c9 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_ranges 0x0000000000000000 0x1d0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_line 0x0000000000000000 0x125d /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_str 0x0000000000000000 0x425 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_frame 0x0000000000000000 0x58 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .text 0x0000000000000000 0x5b6 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .rodata 0x0000000000000000 0x3c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_info 0x0000000000000000 0x7ab /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_abbrev 0x0000000000000000 0x186 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_loc 0x0000000000000000 0x1109 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_ranges 0x0000000000000000 0x250 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_line 0x0000000000000000 0x1089 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_str 0x0000000000000000 0x47d /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_frame 0x0000000000000000 0x58 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .text 0x0000000000000000 0xc2 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_info 0x0000000000000000 0x21a /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_abbrev 0x0000000000000000 0x181 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_loc 0x0000000000000000 0x26f /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_ranges 0x0000000000000000 0x50 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_line 0x0000000000000000 0x31b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_str 0x0000000000000000 0x27a /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .debug_frame 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + .text 0x0000000000000000 0x94 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_info 0x0000000000000000 0x202 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_abbrev 0x0000000000000000 0x177 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_loc 0x0000000000000000 0x230 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_ranges 0x0000000000000000 0x30 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_line 0x0000000000000000 0x284 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_str 0x0000000000000000 0x279 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_frame 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .text 0x0000000000000000 0x70 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_info 0x0000000000000000 0x2c0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_abbrev 0x0000000000000000 0x181 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_loc 0x0000000000000000 0x159 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_ranges 0x0000000000000000 0x50 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_line 0x0000000000000000 0x28b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_str 0x0000000000000000 0x310 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_frame 0x0000000000000000 0x38 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .text 0x0000000000000000 0x56 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_info 0x0000000000000000 0x2af /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_abbrev 0x0000000000000000 0x178 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_loc 0x0000000000000000 0x15c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_ranges 0x0000000000000000 0x68 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_line 0x0000000000000000 0x2ad /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_str 0x0000000000000000 0x30d /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_frame 0x0000000000000000 0x34 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .text 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +Memory Configuration + +Name Origin Length Attributes +itcm_memory 0x0000000022010000 0x000000000000c000 xr +dtcm_memory 0x000000004201c000 0x0000000000004000 xr +ram_memory 0x0000000042020000 0x0000000000017000 !xr +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +LOAD out/ChipTest/Eflash_Loader/main.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +LOAD out/ChipTest/Eflash_Loader/bflb_spi_flash.o +LOAD out/ChipTest/Eflash_Loader/bflb_efuse.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o +LOAD out/ChipTest/Eflash_Loader/bflb_set_clock.o +LOAD out/ChipTest/Eflash_Loader/sdu.o +LOAD out/BSP_Common/ring_buffer/ring_buffer.o +LOAD out/BSP_Common/libc/atof.o +LOAD out/BSP_Common/libc/atoi.o +LOAD out/BSP_Common/libc/atol.o +LOAD out/BSP_Common/libc/atoll.o +LOAD out/BSP_Common/libc/jrand48.o +LOAD out/BSP_Common/libc/lrand48.o +LOAD out/BSP_Common/libc/mrand48.o +LOAD out/BSP_Common/libc/nrand48.o +LOAD out/BSP_Common/libc/seed48.o +LOAD out/BSP_Common/libc/srand48.o +LOAD out/BSP_Common/libc/memccpy.o +LOAD out/BSP_Common/libc/memcpy.o +LOAD out/BSP_Common/libc/memset.o +LOAD out/BSP_Common/libc/memswap.o +LOAD out/BSP_Common/libc/memchr.o +LOAD out/BSP_Common/libc/memrchr.o +LOAD out/BSP_Common/libc/memmem.o +LOAD out/BSP_Common/libc/memcmp.o +LOAD out/BSP_Common/libc/bsearch.o +LOAD out/BSP_Common/libc/qsort.o +LOAD out/BSP_Common/libc/fnmatch.o +LOAD out/BSP_Common/libc/snprintf.o +LOAD out/BSP_Common/libc/sprintf.o +LOAD out/BSP_Common/libc/sscanf.o +LOAD out/BSP_Common/libc/vsnprintf.o +LOAD out/BSP_Common/libc/vsprintf.o +LOAD out/BSP_Common/libc/vsscanf.o +LOAD out/BSP_Common/libc/strcmp.o +LOAD out/BSP_Common/libc/strncmp.o +LOAD out/BSP_Common/libc/strcasecmp.o +LOAD out/BSP_Common/libc/strncasecmp.o +LOAD out/BSP_Common/libc/strcpy.o +LOAD out/BSP_Common/libc/strlcpy.o +LOAD out/BSP_Common/libc/strncpy.o +LOAD out/BSP_Common/libc/strcat.o +LOAD out/BSP_Common/libc/strlcat.o +LOAD out/BSP_Common/libc/strncat.o +LOAD out/BSP_Common/libc/strlen.o +LOAD out/BSP_Common/libc/strnlen.o +LOAD out/BSP_Common/libc/strchr.o +LOAD out/BSP_Common/libc/strrchr.o +LOAD out/BSP_Common/libc/strsep.o +LOAD out/BSP_Common/libc/strstr.o +LOAD out/BSP_Common/libc/strcspn.o +LOAD out/BSP_Common/libc/strspn.o +LOAD out/BSP_Common/libc/strxspn.o +LOAD out/BSP_Common/libc/strpbrk.o +LOAD out/BSP_Common/libc/strtok.o +LOAD out/BSP_Common/libc/strtok_r.o +LOAD out/BSP_Common/libc/strtol.o +LOAD out/BSP_Common/libc/strtoll.o +LOAD out/BSP_Common/libc/strtoul.o +LOAD out/BSP_Common/libc/strtoull.o +LOAD out/BSP_Common/libc/strtoimax.o +LOAD out/BSP_Common/libc/strtoumax.o +LOAD out/BSP_Common/libc/strntoimax.o +LOAD out/BSP_Common/libc/strntoumax.o +LOAD out/BSP_Common/libc/stdlib.o +LOAD out/BSP_Common/libc/common.o +LOAD out/BSP_Common/libc/ctype_isalnum.o +LOAD out/BSP_Common/libc/ctype_isalpha.o +LOAD out/BSP_Common/libc/ctype_isascii.o +LOAD out/BSP_Common/libc/ctype_isblank.o +LOAD out/BSP_Common/libc/ctype_iscntrl.o +LOAD out/BSP_Common/libc/ctype_isdigit.o +LOAD out/BSP_Common/libc/ctype_isgraph.o +LOAD out/BSP_Common/libc/ctype_ispunct.o +LOAD out/BSP_Common/libc/ctype_islower.o +LOAD out/BSP_Common/libc/ctype_isprint.o +LOAD out/BSP_Common/libc/ctype_isspace.o +LOAD out/BSP_Common/libc/ctype_isupper.o +LOAD out/BSP_Common/libc/ctype_tolower.o +LOAD out/BSP_Common/libc/ctype_toupper.o +LOAD out/BSP_Common/libc/ctype_isxdigit.o +LOAD out/BSP_Common/libc/ctypes.o +LOAD out/BSP_Common/soft_crc/softcrc.o +LOAD out/BSP_Common/cipher_suite/bflb_crypt.o +LOAD out/BSP_Common/cipher_suite/bflb_hash.o +LOAD out/BSP_Common/cipher_suite/bflb_ecdsa.o +LOAD out/BSP_Common/cipher_suite/bflb_dsa.o +LOAD out/BSP_Common/xz/xz_crc32.o +LOAD out/BSP_Common/xz/xz_dec_lzma2.o +LOAD out/BSP_Common/xz/xz_dec_stream.o +LOAD out/BSP_Common/xz/xz_decompress.o +LOAD out/BSP_Common/xz/xz_port.o +LOAD out/BSP_Common/partition/partition.o +LOAD out/startup/system_bl602.o +LOAD out/startup/GCC/start_load.o +LOAD out/startup/interrupt.o +LOAD out/startup/GCC/entry.o +LOAD out/BSP_Common/FreeRTOS/port.o +LOAD out/BSP_Common/FreeRTOS/portASM.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o +LOAD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +LOAD out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +LOAD out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o +LOAD out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +LOAD out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o +LOAD out/3rdParty/FreeRTOS/Source/tasks.o +LOAD out/3rdParty/FreeRTOS/Source/list.o +LOAD out/3rdParty/FreeRTOS/Source/queue.o +LOAD out/3rdParty/FreeRTOS/Source/timers.o +LOAD out/3rdParty/FreeRTOS/Source/stream_buffer.o +LOAD out/3rdParty/FreeRTOS/Source/croutine.o +LOAD out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libm.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a +START GROUP +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libgloss.a +END GROUP +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a + 0x0000000000000400 StackSize = 0x400 + 0x0000000000000000 PROVIDE (__metal_chicken_bit = 0x0) + +.text 0x0000000022010000 0x8ab4 + 0x0000000022010000 . = ALIGN (0x4) + 0x0000000022010000 __text_code_start__ = . + *(.text.metal.init.enter) + .text.metal.init.enter + 0x0000000022010000 0x86 out/startup/GCC/entry.o + 0x0000000022010000 _enter + *(SORT_NONE(.init)) + *fill* 0x0000000022010086 0x3a + .init 0x00000000220100c0 0x142 out/startup/interrupt.o + 0x00000000220100c0 __Vectors + *(.text) + .text 0x0000000022010202 0xd0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + 0x0000000022010202 memmove + .text 0x00000000220102d2 0x35e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + 0x00000000220102d2 __udivdi3 + .text 0x0000000022010630 0x352 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + 0x0000000022010630 __umoddi3 + *(.text.*) + .text.startup.main + 0x0000000022010982 0x1aa out/ChipTest/Eflash_Loader/main.o + 0x0000000022010982 main + .text.bflb_eflash_loader_cmd_read_jedec_id + 0x0000000022010b2c 0x50 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_read_log + 0x0000000022010b7c 0x5a out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_ack.part.0 + 0x0000000022010bd6 0x1e out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_ack + 0x0000000022010bf4 0x28 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_write_mem + 0x0000000022010c1c 0x98 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_write_flash_check + 0x0000000022010cb4 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_read_mac_addr + 0x0000000022010cd6 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_read_efuse + 0x0000000022010d5e 0x132 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_write_efuse + 0x0000000022010e90 0xd0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_xip_read_flash + 0x0000000022010f60 0x166 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_xip_readSha_flash + 0x00000000220110c6 0x154 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_readSha_flash + 0x000000002201121a 0x154 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_read_flash + 0x000000002201136e 0x168 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_flash_chip_erase + 0x00000000220114d6 0x48 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_erase_flash + 0x000000002201151e 0x14e out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_write_status_register + 0x000000002201166c 0xca out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_set_flash_para + 0x0000000022011736 0x110 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_read_mem + 0x0000000022011846 0xec out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_read_status_register + 0x0000000022011932 0xc6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_flash_boot + 0x00000000220119f8 0x32 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_reset + 0x0000000022011a2a 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_write_flash + 0x0000000022011a5e 0xba out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_write_flash_with_decompress + 0x0000000022011b18 0x1ca out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_xip_read_flash_start + 0x0000000022011ce2 0x20 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_xip_read_flash_finish + 0x0000000022011d02 0x20 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_init + 0x0000000022011d22 0xa out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + 0x0000000022011d22 bflb_eflash_loader_cmd_init + .text.bflb_eflash_loader_cmd_process + 0x0000000022011d2c 0x5a out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + 0x0000000022011d2c bflb_eflash_loader_cmd_process + .text.bootrom_read_boot_mode + 0x0000000022011d86 0x48 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + 0x0000000022011d86 bootrom_read_boot_mode + .text.bflb_eflash_loader_init_uart_gpio + 0x0000000022011dce 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + 0x0000000022011dce bflb_eflash_loader_init_uart_gpio + .text.bflb_eflash_loader_init_sdio_gpio + 0x0000000022011e0a 0x9c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + 0x0000000022011e0a bflb_eflash_loader_init_sdio_gpio + .text.bflb_eflash_loader_if_set + 0x0000000022011ea6 0x128 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0x0000000022011ea6 bflb_eflash_loader_if_set + .text.bflb_eflash_loader_interface_init + 0x0000000022011fce 0x14 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0x0000000022011fce bflb_eflash_loader_interface_init + .text.bflb_eflash_loader_interface_deinit + 0x0000000022011fe2 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0x0000000022011fe2 bflb_eflash_loader_interface_deinit + .text.bflb_eflash_loader_main + 0x0000000022011ff2 0x14c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0x0000000022011ff2 bflb_eflash_loader_main + .text.bflb_eflash_loader_jlink_init + 0x000000002201213e 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0x000000002201213e bflb_eflash_loader_jlink_init + .text.bflb_eflash_loader_jlink_handshake_poll + 0x0000000022012142 0x6e out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0x0000000022012142 bflb_eflash_loader_jlink_handshake_poll + .text.bflb_eflash_loader_jlink_recv + 0x00000000220121b0 0x92 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0x00000000220121b0 bflb_eflash_loader_jlink_recv + .text.bflb_eflash_loader_jlink_send + 0x0000000022012242 0x44 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0x0000000022012242 bflb_eflash_loader_jlink_send + .text.bflb_eflash_loader_jlink_wait_tx_idle + 0x0000000022012286 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0x0000000022012286 bflb_eflash_loader_jlink_wait_tx_idle + .text.bflb_eflash_loader_jlink_deinit + 0x000000002201228a 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0x000000002201228a bflb_eflash_loader_jlink_deinit + .text.bflb_eflash_loader_usart_if_init + 0x000000002201228e 0xb8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .text.uart_if_rto_cbf + 0x0000000022012346 0x4e out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .text.uart_if_rda_cbf + 0x0000000022012394 0x2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .text.bflb_eflash_loader_usart_if_receive.isra.0 + 0x0000000022012396 0x9e out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .text.bflb_eflash_loader_uart_init + 0x0000000022012434 0x82 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x0000000022012434 bflb_eflash_loader_uart_init + .text.bflb_eflash_loader_uart_handshake_poll + 0x00000000220124b6 0x12c out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x00000000220124b6 bflb_eflash_loader_uart_handshake_poll + .text.bflb_eflash_loader_uart_recv + 0x00000000220125e2 0x8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x00000000220125e2 bflb_eflash_loader_uart_recv + .text.bflb_eflash_loader_uart_send + 0x00000000220125ea 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x00000000220125ea bflb_eflash_loader_uart_send + .text.bflb_eflash_loader_usart_wait_tx_idle + 0x0000000022012600 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x0000000022012600 bflb_eflash_loader_usart_wait_tx_idle + .text.bflb_eflash_loader_uart_deinit + 0x0000000022012610 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x0000000022012610 bflb_eflash_loader_uart_deinit + .text.bflb_eflash_loader_sdio_init + 0x0000000022012614 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + 0x0000000022012614 bflb_eflash_loader_sdio_init + .text.bflb_eflash_loader_sdio_handshake_poll + 0x0000000022012618 0x1e out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + 0x0000000022012618 bflb_eflash_loader_sdio_handshake_poll + .text.bflb_eflash_loader_sdio_recv + 0x0000000022012636 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + 0x0000000022012636 bflb_eflash_loader_sdio_recv + .text.bflb_eflash_loader_sdio_send + 0x000000002201266a 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + 0x000000002201266a bflb_eflash_loader_sdio_send + .text.bflb_eflash_loader_sdio_wait_tx_idle + 0x000000002201267a 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + 0x000000002201267a bflb_eflash_loader_sdio_wait_tx_idle + .text.bflb_eflash_loader_sdio_deinit + 0x000000002201267e 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + 0x000000002201267e bflb_eflash_loader_sdio_deinit + .text.bflb_eflash_loader_clk_set_from_user + 0x0000000022012682 0xda out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + 0x0000000022012682 bflb_eflash_loader_clk_set_from_user + .text.bflb_eflash_loader_parse_bootheader + 0x000000002201275c 0x1a0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + 0x000000002201275c bflb_eflash_loader_parse_bootheader + .text.bflb_eflash_loader_boot_pre_jump + 0x00000000220128fc 0x38 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + 0x00000000220128fc bflb_eflash_loader_boot_pre_jump + .text.bflb_eflash_loader_boot + 0x0000000022012934 0x4e out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + 0x0000000022012934 bflb_eflash_loader_boot + .text.bflb_eflash_loader_boot_main + 0x0000000022012982 0xca out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + 0x0000000022012982 bflb_eflash_loader_boot_main + .text.bflb_eflash_loader_cache_enable + 0x0000000022012a4c 0x9a out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012a4c bflb_eflash_loader_cache_enable + .text.bflb_spi_flash_update_para + 0x0000000022012ae6 0x1a out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012ae6 bflb_spi_flash_update_para + .text.bflb_spi_flash_xip_read_init + 0x0000000022012b00 0x5e out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012b00 bflb_spi_flash_xip_read_init + .text.bflb_spi_flash_xip_read_exit + 0x0000000022012b5e 0x26 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012b5e bflb_spi_flash_xip_read_exit + .text.bflb_spi_flash_set_io_mode + 0x0000000022012b84 0x6 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012b84 bflb_spi_flash_set_io_mode + .text.bflb_spi_flash_read_jedec_id + 0x0000000022012b8a 0x40 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012b8a bflb_spi_flash_read_jedec_id + .text.bflb_spi_flash_read_status_reg_with_cmd + 0x0000000022012bca 0xe out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012bca bflb_spi_flash_read_status_reg_with_cmd + .text.bflb_spi_flash_write_status_reg_with_cmd + 0x0000000022012bd8 0x46 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012bd8 bflb_spi_flash_write_status_reg_with_cmd + .text.bflb_spi_flash_erase + 0x0000000022012c1e 0x22 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012c1e bflb_spi_flash_erase + .text.bflb_spi_flash_chiperase + 0x0000000022012c40 0x1e out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012c40 bflb_spi_flash_chiperase + .text.bflb_spi_flash_program + 0x0000000022012c5e 0x26 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012c5e bflb_spi_flash_program + .text.bflb_spi_flash_read_sahb + 0x0000000022012c84 0x24 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012c84 bflb_spi_flash_read_sahb + .text.bflb_spi_flash_read_xip + 0x0000000022012ca8 0x32 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012ca8 bflb_spi_flash_read_xip + .text.bflb_spi_flash_read + 0x0000000022012cda 0x1e out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012cda bflb_spi_flash_read + .text.bflb_clear_flash_status_register + 0x0000000022012cf8 0x74 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012cf8 bflb_clear_flash_status_register + .text.bflb_spi_flash_init + 0x0000000022012d6c 0x10e out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012d6c bflb_spi_flash_init + .text.bflb_efuse_write + 0x0000000022012e7a 0x56 out/ChipTest/Eflash_Loader/bflb_efuse.o + 0x0000000022012e7a bflb_efuse_write + .text.bflb_efuse_read + 0x0000000022012ed0 0x2c out/ChipTest/Eflash_Loader/bflb_efuse.o + 0x0000000022012ed0 bflb_efuse_read + .text.xz_BSP_init + 0x0000000022012efc 0x2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + 0x0000000022012efc xz_BSP_init + .text.xz_BSP_get_dict_buffer + 0x0000000022012efe 0x6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + 0x0000000022012efe xz_BSP_get_dict_buffer + .text.xz_BSP_get_work_buffer + 0x0000000022012f04 0x6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + 0x0000000022012f04 xz_BSP_get_work_buffer + .text.xz_BSP_get_output_size + 0x0000000022012f0a 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + 0x0000000022012f0a xz_BSP_get_output_size + .text.bflb_set_high_speed_system_clock + 0x0000000022012f0e 0x6 out/ChipTest/Eflash_Loader/bflb_set_clock.o + 0x0000000022012f0e bflb_set_high_speed_system_clock + .text.bflb_set_high_speed_flash_clock + 0x0000000022012f14 0xa out/ChipTest/Eflash_Loader/bflb_set_clock.o + 0x0000000022012f14 bflb_set_high_speed_flash_clock + .text.bflb_set_low_speed_flash_clock + 0x0000000022012f1e 0xa out/ChipTest/Eflash_Loader/bflb_set_clock.o + 0x0000000022012f1e bflb_set_low_speed_flash_clock + .text.bflb_set_flash_clock_div + 0x0000000022012f28 0xa out/ChipTest/Eflash_Loader/bflb_set_clock.o + 0x0000000022012f28 bflb_set_flash_clock_div + .text.sdu_init + 0x0000000022012f32 0x12 out/ChipTest/Eflash_Loader/sdu.o + 0x0000000022012f32 sdu_init + .text.sdu_host_check + 0x0000000022012f44 0x160 out/ChipTest/Eflash_Loader/sdu.o + 0x0000000022012f44 sdu_host_check + .text.sdu_deinit + 0x00000000220130a4 0x1e out/ChipTest/Eflash_Loader/sdu.o + 0x00000000220130a4 sdu_deinit + .text.sdu_receive_data + 0x00000000220130c2 0x16c out/ChipTest/Eflash_Loader/sdu.o + 0x00000000220130c2 sdu_receive_data + .text.sdu_send_data + 0x000000002201322e 0x124 out/ChipTest/Eflash_Loader/sdu.o + 0x000000002201322e sdu_send_data + .text.memcpy 0x0000000022013352 0x18 out/BSP_Common/libc/memcpy.o + 0x0000000022013352 memcpy + .text.memset 0x000000002201336a 0x18 out/BSP_Common/libc/memset.o + 0x000000002201336a memset + .text.memcmp 0x0000000022013382 0x1e out/BSP_Common/libc/memcmp.o + 0x0000000022013382 memcmp + .text.vsnprintf + 0x00000000220133a0 0xae2 out/BSP_Common/libc/vsnprintf.o + 0x00000000220133a0 vsnprintf + .text.strlen 0x0000000022013e82 0x1a out/BSP_Common/libc/strlen.o + 0x0000000022013e82 strlen + .text.xz_crc32_init + 0x0000000022013e9c 0x2 out/BSP_Common/xz/xz_crc32.o + 0x0000000022013e9c xz_crc32_init + .text.xz_crc32 + 0x0000000022013e9e 0x34 out/BSP_Common/xz/xz_crc32.o + 0x0000000022013e9e xz_crc32 + .text.lzma_len + 0x0000000022013ed2 0x17c out/BSP_Common/xz/xz_dec_lzma2.o + .text.dict_repeat.part.1 + 0x000000002201404e 0x64 out/BSP_Common/xz/xz_dec_lzma2.o + .text.lzma_main + 0x00000000220140b2 0x74c out/BSP_Common/xz/xz_dec_lzma2.o + .text.xz_dec_lzma2_run + 0x00000000220147fe 0x612 out/BSP_Common/xz/xz_dec_lzma2.o + 0x00000000220147fe xz_dec_lzma2_run + .text.xz_dec_lzma2_create + 0x0000000022014e10 0x68 out/BSP_Common/xz/xz_dec_lzma2.o + 0x0000000022014e10 xz_dec_lzma2_create + .text.xz_dec_lzma2_reset + 0x0000000022014e78 0x78 out/BSP_Common/xz/xz_dec_lzma2.o + 0x0000000022014e78 xz_dec_lzma2_reset + .text.xz_dec_lzma2_end + 0x0000000022014ef0 0x2c out/BSP_Common/xz/xz_dec_lzma2.o + 0x0000000022014ef0 xz_dec_lzma2_end + .text.fill_temp + 0x0000000022014f1c 0x72 out/BSP_Common/xz/xz_dec_stream.o + .text.dec_vli.isra.0 + 0x0000000022014f8e 0x9a out/BSP_Common/xz/xz_dec_stream.o + .text.index_update.isra.2 + 0x0000000022015028 0x36 out/BSP_Common/xz/xz_dec_stream.o + .text.xz_dec_reset + 0x000000002201505e 0x46 out/BSP_Common/xz/xz_dec_stream.o + 0x000000002201505e xz_dec_reset + .text.xz_dec_run + 0x00000000220150a4 0x794 out/BSP_Common/xz/xz_dec_stream.o + 0x00000000220150a4 xz_dec_run + .text.xz_dec_init + 0x0000000022015838 0x46 out/BSP_Common/xz/xz_dec_stream.o + 0x0000000022015838 xz_dec_init + .text.xz_dec_end + 0x000000002201587e 0x1e out/BSP_Common/xz/xz_dec_stream.o + 0x000000002201587e xz_dec_end + .text.simple_malloc_init + 0x000000002201589c 0x1a out/BSP_Common/xz/xz_port.o + 0x000000002201589c simple_malloc_init + .text.simple_malloc + 0x00000000220158b6 0x44 out/BSP_Common/xz/xz_port.o + 0x00000000220158b6 simple_malloc + .text.simple_free + 0x00000000220158fa 0xe out/BSP_Common/xz/xz_port.o + 0x00000000220158fa simple_free + .text.SystemInit + 0x0000000022015908 0xac out/startup/system_bl602.o + 0x0000000022015908 SystemInit + .text.start_load + 0x00000000220159b4 0x126 out/startup/GCC/start_load.o + 0x00000000220159b4 start_load + .text.Interrupt_Handler_Stub + 0x0000000022015ada 0x9a out/startup/interrupt.o + 0x0000000022015ada SDIO_IRQHandler_Wrapper + 0x0000000022015ada TIMER_WDT_IRQHandler_Wrapper + 0x0000000022015ada GPIO_INT0_IRQHandler_Wrapper + 0x0000000022015ada SEC_PKA_IRQHandler_Wrapper + 0x0000000022015ada SEC_TRNG_IRQHandler_Wrapper + 0x0000000022015ada MAC_GEN_IRQHandler_Wrapper + 0x0000000022015ada DMA_BMX_ERR_IRQHandler_Wrapper + 0x0000000022015ada EFUSE_IRQHandler_Wrapper + 0x0000000022015ada WIFI_IRQHandler_Wrapper + 0x0000000022015ada SEC_CDET_IRQHandler_Wrapper + 0x0000000022015ada SEC_AES_IRQHandler_Wrapper + 0x0000000022015ada PWM_IRQHandler_Wrapper + 0x0000000022015ada RF_TOP_INT1_IRQHandler_Wrapper + 0x0000000022015ada HBN_OUT0_IRQHandler_Wrapper + 0x0000000022015ada SF_CTRL_IRQHandler_Wrapper + 0x0000000022015ada TIMER_CH0_IRQHandler_Wrapper + 0x0000000022015ada clic_mext_handler_Wrapper + 0x0000000022015ada MAC_TXRX_TIMER_IRQHandler_Wrapper + 0x0000000022015ada Interrupt_Handler_Stub + 0x0000000022015ada clic_csoft_handler_Wrapper + 0x0000000022015ada I2C_IRQHandler_Wrapper + 0x0000000022015ada SPI_IRQHandler_Wrapper + 0x0000000022015ada MAC_PORT_TRG_IRQHandler_Wrapper + 0x0000000022015ada PDS_WAKEUP_IRQHandler_Wrapper + 0x0000000022015ada clic_mtimer_handler_Wrapper + 0x0000000022015ada L1C_BMX_ERR_IRQHandler_Wrapper + 0x0000000022015ada SEC_BMX_ERR_IRQHandler_Wrapper + 0x0000000022015ada MAC_RX_TRG_IRQHandler_Wrapper + 0x0000000022015ada MAC_TX_TRG_IRQHandler_Wrapper + 0x0000000022015ada HBN_OUT1_IRQHandler_Wrapper + 0x0000000022015ada SEC_GMAC_IRQHandler_Wrapper + 0x0000000022015ada clic_msip_handler_Wrapper + 0x0000000022015ada UART1_IRQHandler_Wrapper + 0x0000000022015ada GPADC_DMA_IRQHandler_Wrapper + 0x0000000022015ada MAC_TXRX_MISC_IRQHandler_Wrapper + 0x0000000022015ada DMA_ALL_IRQHandler_Wrapper + 0x0000000022015ada BLE_IRQHandler_Wrapper + 0x0000000022015ada SEC_SHA_IRQHandler_Wrapper + 0x0000000022015ada IRRX_IRQHandler_Wrapper + 0x0000000022015ada BMX_TO_IRQHandler_Wrapper + 0x0000000022015ada TIMER_CH1_IRQHandler_Wrapper + 0x0000000022015ada UART0_IRQHandler_Wrapper + 0x0000000022015ada BMX_ERR_IRQHandler_Wrapper + 0x0000000022015ada WIFI_IPC_PUBLIC_IRQHandler_Wrapper + 0x0000000022015ada L1C_BMX_TO_IRQHandler_Wrapper + 0x0000000022015ada BZ_PHY_IRQHandler_Wrapper + 0x0000000022015ada RF_TOP_INT0_IRQHandler_Wrapper + 0x0000000022015ada IRTX_IRQHandler_Wrapper + 0x0000000022015ada BOR_IRQHandler_Wrapper + *fill* 0x0000000022015b74 0xc + .text.Trap_Handler_Stub + 0x0000000022015b80 0xbc out/startup/interrupt.o + 0x0000000022015b80 Trap_Handler_Stub + .text.clic_enable_interrupt + 0x0000000022015c3c 0x12 out/startup/interrupt.o + 0x0000000022015c3c clic_enable_interrupt + .text.clic_disable_interrupt + 0x0000000022015c4e 0x10 out/startup/interrupt.o + 0x0000000022015c4e clic_disable_interrupt + .text.clic_clear_pending + 0x0000000022015c5e 0xc out/startup/interrupt.o + 0x0000000022015c5e clic_clear_pending + .text.Trap_Handler + 0x0000000022015c6a 0x126 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + 0x0000000022015c6a Trap_Handler + .text.Interrupt_Handler_Register + 0x0000000022015d90 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + 0x0000000022015d90 Interrupt_Handler_Register + .text.Interrupt_Handler + 0x0000000022015da8 0x9e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + 0x0000000022015da8 Interrupt_Handler + .text.UART_IntHandler + 0x0000000022015e46 0x172 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .text.UART0_IRQHandler + 0x0000000022015fb8 0x6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000022015fb8 UART0_IRQHandler + .text.UART1_IRQHandler + 0x0000000022015fbe 0x6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000022015fbe UART1_IRQHandler + .text.UART_Init + 0x0000000022015fc4 0x11e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000022015fc4 UART_Init + .text.UART_FifoConfig + 0x00000000220160e2 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x00000000220160e2 UART_FifoConfig + .text.UART_Enable + 0x000000002201614c 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x000000002201614c UART_Enable + .text.UART_Disable + 0x0000000022016180 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000022016180 UART_Disable + .text.UART_SetRxTimeoutValue + 0x00000000220161b0 0x1e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x00000000220161b0 UART_SetRxTimeoutValue + .text.UART_TxFreeRun + 0x00000000220161ce 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x00000000220161ce UART_TxFreeRun + .text.UART_AutoBaudDetection + 0x00000000220161f6 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x00000000220161f6 UART_AutoBaudDetection + .text.UART_IntMask + 0x000000002201621e 0x48 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x000000002201621e UART_IntMask + .text.UART_IntClear + 0x0000000022016266 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000022016266 UART_IntClear + .text.UART_Int_Callback_Install + 0x0000000022016294 0x16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000022016294 UART_Int_Callback_Install + .text.UART_SendData + 0x00000000220162aa 0x50 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x00000000220162aa UART_SendData + .text.UART_ReceiveData + 0x00000000220162fa 0x4e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x00000000220162fa UART_ReceiveData + .text.UART_GetAutoBaudCount + 0x0000000022016348 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000022016348 UART_GetAutoBaudCount + .text.UART_GetIntStatus + 0x0000000022016360 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x0000000022016360 UART_GetIntStatus + .text.UART_GetTxBusBusyStatus + 0x000000002201638e 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x000000002201638e UART_GetTxBusBusyStatus + .text.GLB_Set_UART_CLK + 0x00000000220163a2 0x3e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x00000000220163a2 GLB_Set_UART_CLK + .text.GLB_AHB_Slave1_Reset + 0x00000000220163e0 0x34 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x00000000220163e0 GLB_AHB_Slave1_Reset + .text.GLB_UART_Sig_Swap_Set + 0x0000000022016414 0x1c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x0000000022016414 GLB_UART_Sig_Swap_Set + .text.GLB_Set_MTimer_CLK + 0x0000000022016430 0x4a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x0000000022016430 GLB_Set_MTimer_CLK + .text.GLB_UART_Fun_Sel + 0x000000002201647a 0x24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x000000002201647a GLB_UART_Fun_Sel + .text.GLB_GPIO_Read + 0x000000002201649e 0x20 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x000000002201649e GLB_GPIO_Read + .text.EF_Ctrl_Read_MAC_Address + 0x00000000220164be 0xb6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + 0x00000000220164be EF_Ctrl_Read_MAC_Address + .text.EF_Ctrl_Program_Direct_R0 + 0x0000000022016574 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + 0x0000000022016574 EF_Ctrl_Program_Direct_R0 + .text.EF_Ctrl_Read_Direct_R0 + 0x00000000220165ac 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + 0x00000000220165ac EF_Ctrl_Read_Direct_R0 + .text.HBN_Set_UART_CLK_Sel + 0x00000000220165da 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + 0x00000000220165da HBN_Set_UART_CLK_Sel + .text.HBN_Set_BOR_Cfg + 0x00000000220165ee 0x5c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + 0x00000000220165ee HBN_Set_BOR_Cfg + .text.SEC_TRNG_IRQHandler + 0x000000002201664a 0x26 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x000000002201664a SEC_TRNG_IRQHandler + .text.SEC_SHA_IRQHandler + 0x0000000022016670 0x22 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000022016670 SEC_SHA_IRQHandler + .text.Sec_Eng_SHA256_Update.part.0 + 0x0000000022016692 0x17c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .text.Sec_Eng_SHA256_Init + 0x000000002201680e 0x60 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x000000002201680e Sec_Eng_SHA256_Init + .text.Sec_Eng_SHA_Start + 0x000000002201686e 0x12 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x000000002201686e Sec_Eng_SHA_Start + .text.Sec_Eng_SHA256_Update + 0x0000000022016880 0xe out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000022016880 Sec_Eng_SHA256_Update + .text.Sec_Eng_SHA256_Finish + 0x000000002201688e 0x22a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x000000002201688e Sec_Eng_SHA256_Finish + .text.Sec_Eng_Trng_Enable + 0x0000000022016ab8 0x6a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000022016ab8 Sec_Eng_Trng_Enable + .text.Sec_Eng_Trng_Disable + 0x0000000022016b22 0x14 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x0000000022016b22 Sec_Eng_Trng_Disable + .text.bflb_platform_uart_dbg_init + 0x0000000022016b36 0x8e out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000022016b36 bflb_platform_uart_dbg_init + .text.bflb_platform_get_log + 0x0000000022016bc4 0x2c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000022016bc4 bflb_platform_get_log + .text.bflb_platform_usart_dbg_send + 0x0000000022016bf0 0x52 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000022016bf0 bflb_platform_usart_dbg_send + .text.bflb_platform_uart_dbg_deinit + 0x0000000022016c42 0x18 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000022016c42 bflb_platform_uart_dbg_deinit + .text.bflb_platform_printf + 0x0000000022016c5a 0x5a out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000022016c5a bflb_platform_printf + .text.bflb_platform_clear_time + 0x0000000022016cb4 0x12 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000022016cb4 bflb_platform_clear_time + .text.bflb_platform_get_time_ms + 0x0000000022016cc6 0x88 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000022016cc6 bflb_platform_get_time_ms + .text.bflb_platform_init_time + 0x0000000022016d4e 0x2a out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000022016d4e bflb_platform_init_time + .text.bflb_platform_delay_ms + 0x0000000022016d78 0x66 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000022016d78 bflb_platform_delay_ms + .text.bflb_platform_init + 0x0000000022016dde 0x60 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000022016dde bflb_platform_init + .text.bflb_platform_deinit + 0x0000000022016e3e 0x42 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x0000000022016e3e bflb_platform_deinit + .text.bflb_platform_init_uart_debug_gpio + 0x0000000022016e80 0x2e out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + 0x0000000022016e80 bflb_platform_init_uart_debug_gpio + .text.bflb_platform_deinit_uart_debug_gpio + 0x0000000022016eae 0x30 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + 0x0000000022016eae bflb_platform_deinit_uart_debug_gpio + *(.rodata) + *fill* 0x0000000022016ede 0x2 + .rodata 0x0000000022016ee0 0x10 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .rodata 0x0000000022016ef0 0x100 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + 0x0000000022016ef0 __clz_tab + *(.rodata.*) + .rodata.main.str1.4 + 0x0000000022016ff0 0xea out/ChipTest/Eflash_Loader/main.o + *fill* 0x00000000220170da 0x2 + .rodata.bflb_eflash_loader_cmd_erase_flash.str1.4 + 0x00000000220170dc 0x3 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x00000000220170df 0x1 + .rodata.bflb_eflash_loader_cmd_flash_boot.str1.4 + 0x00000000220170e0 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_cmd_flash_chip_erase.str1.4 + 0x00000000220170e4 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + 0xa (size before relaxing) + .rodata.bflb_eflash_loader_cmd_readSha_flash.str1.4 + 0x00000000220170e8 0x6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x00000000220170ee 0x2 + .rodata.bflb_eflash_loader_cmd_read_efuse.str1.4 + 0x00000000220170f0 0x3 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x00000000220170f3 0x1 + .rodata.bflb_eflash_loader_cmd_read_jedec_id.str1.4 + 0x00000000220170f4 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x00000000220170f9 0x3 + .rodata.bflb_eflash_loader_cmd_read_log.str1.4 + 0x00000000220170fc 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_cmd_read_mac_addr.str1.4 + 0x0000000022017100 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022017105 0x3 + .rodata.bflb_eflash_loader_cmd_read_mem.str1.4 + 0x0000000022017108 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_cmd_read_status_register.str1.4 + 0x000000002201710c 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022017111 0x3 + .rodata.bflb_eflash_loader_cmd_reset.str1.4 + 0x0000000022017114 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022017119 0x3 + .rodata.bflb_eflash_loader_cmd_set_flash_para.str1.4 + 0x000000002201711c 0x9 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022017125 0x3 + .rodata.bflb_eflash_loader_cmd_write_efuse.str1.4 + 0x0000000022017128 0x3 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x000000002201712b 0x1 + .rodata.bflb_eflash_loader_cmd_write_flash_check.str1.4 + 0x000000002201712c 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_cmd_write_flash_with_decompress.str1.4 + 0x0000000022017130 0xd out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x000000002201713d 0x3 + .rodata.bflb_eflash_loader_cmd_write_mem.str1.4 + 0x0000000022017140 0x8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_cmd_write_status_register.str1.4 + 0x0000000022017148 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x000000002201714d 0x3 + .rodata.bflb_eflash_loader_cmd_xip_readSha_flash.str1.4 + 0x0000000022017150 0x7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + 0xb (size before relaxing) + *fill* 0x0000000022017157 0x1 + .rodata.bflb_eflash_loader_cmd_xip_read_flash.str1.4 + 0x0000000022017158 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_cmd_xip_read_flash_finish.str1.4 + 0x000000002201715c 0x6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022017162 0x2 + .rodata.bflb_eflash_loader_cmd_xip_read_flash_start.str1.4 + 0x0000000022017164 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022017169 0x3 + .rodata.eflash_loader_cmds + 0x000000002201716c 0xb8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_main.str1.4 + 0x0000000022017224 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .rodata.eflash_loader_dump_data.str1.4 + 0x0000000022017252 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0x2 (size before relaxing) + *fill* 0x0000000022017252 0x2 + .rodata.bflb_eflash_loader_jlink_handshake_poll.str1.4 + 0x0000000022017254 0x7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + *fill* 0x000000002201725b 0x1 + .rodata.bflb_eflash_loader_uart_handshake_poll.str1.4 + 0x000000002201725c 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x14 (size before relaxing) + .rodata.bflb_eflash_loader_boot_main.str1.4 + 0x000000002201726c 0x13 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + *fill* 0x000000002201727f 0x1 + .rodata.bflb_eflash_loader_parse_bootheader.str1.4 + 0x0000000022017280 0x2b out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + *fill* 0x00000000220172ab 0x1 + .rodata.bflb_eflash_loader_cache_enable.str1.4 + 0x00000000220172ac 0xf out/ChipTest/Eflash_Loader/bflb_spi_flash.o + *fill* 0x00000000220172bb 0x1 + .rodata.bflb_spi_flash_init.str1.4 + 0x00000000220172bc 0x35 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + *fill* 0x00000000220172f1 0x3 + .rodata.bflb_spi_flash_xip_read_init.str1.4 + 0x00000000220172f4 0xa out/ChipTest/Eflash_Loader/bflb_spi_flash.o + *fill* 0x00000000220172fe 0x2 + .rodata.sdu_host_check.str1.4 + 0x0000000022017300 0x12 out/ChipTest/Eflash_Loader/sdu.o + *fill* 0x0000000022017312 0x2 + .rodata.sdu_send_data.str1.4 + 0x0000000022017314 0x13 out/ChipTest/Eflash_Loader/sdu.o + *fill* 0x0000000022017327 0x1 + .rodata.lcdigits.1541 + 0x0000000022017328 0x11 out/BSP_Common/libc/vsnprintf.o + *fill* 0x0000000022017339 0x3 + .rodata.ucdigits.1542 + 0x000000002201733c 0x11 out/BSP_Common/libc/vsnprintf.o + *fill* 0x000000002201734d 0x3 + .rodata.vsnprintf.str1.4 + 0x0000000022017350 0x7 out/BSP_Common/libc/vsnprintf.o + *fill* 0x0000000022017357 0x1 + .rodata.crc32Tab + 0x0000000022017358 0x400 out/BSP_Common/soft_crc/softcrc.o + 0x0000000022017358 crc32Tab + .rodata.xz_dec_run.str1.4 + 0x0000000022017758 0xb out/BSP_Common/xz/xz_dec_stream.o + *fill* 0x0000000022017763 0x1 + .rodata.simple_free.str1.4 + 0x0000000022017764 0x13 out/BSP_Common/xz/xz_port.o + *fill* 0x0000000022017777 0x1 + .rodata.simple_malloc.str1.4 + 0x0000000022017778 0x13 out/BSP_Common/xz/xz_port.o + *fill* 0x000000002201778b 0x1 + .rodata.Interrupt_Handler.str1.4 + 0x000000002201778c 0x8a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + *fill* 0x0000000022017816 0x2 + .rodata.Trap_Handler.str1.4 + 0x0000000022017818 0x13b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + *fill* 0x0000000022017953 0x1 + .rodata.uartAddr + 0x0000000022017954 0x8 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .rodata.str1.4 + 0x000000002201795c 0x5 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + *fill* 0x0000000022017961 0x3 + .rodata.bflb_platform_init.str1.4 + 0x0000000022017964 0x14 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x13 (size before relaxing) + *(.srodata) + .srodata 0x0000000022017978 0x4 out/startup/system_bl602.o + .srodata 0x000000002201797c 0x4 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + *(.srodata.*) + *(.tcm_code) + .tcm_code 0x0000000022017980 0x1f2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x0000000022017980 GLB_GPIO_Init + 0x0000000022017ab0 GLB_GPIO_INPUT_Enable + 0x0000000022017ada GLB_GPIO_INPUT_Disable + 0x0000000022017b04 GLB_GPIO_Set_PullUp + 0x0000000022017b3c GLB_GPIO_Set_PullDown + .tcm_code 0x0000000022017b72 0x546 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + 0x0000000022017b72 AON_Power_On_BG + 0x0000000022017b7c AON_Power_Off_BG + 0x0000000022017b86 AON_Power_On_LDO11_SOC + 0x0000000022017b90 AON_Power_Off_LDO11_SOC + 0x0000000022017b9a AON_Power_On_LDO15_RF + 0x0000000022017ba4 AON_Power_Off_LDO15_RF + 0x0000000022017bae AON_Power_On_SFReg + 0x0000000022017bb8 AON_Power_Off_SFReg + 0x0000000022017bc2 AON_LowPower_Enter_PDS0 + 0x0000000022017bcc AON_LowPower_Exit_PDS0 + 0x0000000022017bd6 ASM_Delay_Us + 0x0000000022017be0 BL602_Delay_US + 0x0000000022017bea BL602_Delay_MS + 0x0000000022017bf4 BL602_MemCpy + 0x0000000022017bfe BL602_MemCpy4 + 0x0000000022017c08 BL602_MemCpy_Fast + 0x0000000022017c12 BL602_MemSet + 0x0000000022017c1c BL602_MemSet4 + 0x0000000022017c26 BL602_MemCmp + 0x0000000022017c30 EF_Ctrl_Sw_AHB_Clk_0 + 0x0000000022017c3a EF_Ctrl_Program_Efuse_0 + 0x0000000022017c44 EF_Ctrl_Load_Efuse_R0 + 0x0000000022017c4e EF_Ctrl_Busy + 0x0000000022017c58 EF_Ctrl_AutoLoad_Done + 0x0000000022017c62 EF_Ctrl_Clear + 0x0000000022017c6c GLB_SW_System_Reset + 0x0000000022017c76 GLB_SW_CPU_Reset + 0x0000000022017c80 GLB_SW_POR_Reset + 0x0000000022017c8a GLB_Select_Internal_Flash + 0x0000000022017c94 GLB_Select_External_Flash + 0x0000000022017c9e GLB_Deswap_Flash_Pin + 0x0000000022017ca8 GLB_Swap_Flash_Pin + 0x0000000022017cb2 GLB_GPIO_OUTPUT_Enable + 0x0000000022017cbc GLB_GPIO_OUTPUT_Disable + 0x0000000022017cc6 GLB_GPIO_Set_HZ + 0x0000000022017cd0 GLB_GPIO_Get_Fun + 0x0000000022017cda HBN_Power_Down_Flash + 0x0000000022017ce4 HBN_Enable + 0x0000000022017cee HBN_Reset + 0x0000000022017cf8 HBN_Set_Ldo11_Aon_Vout + 0x0000000022017d02 HBN_Set_Ldo11_Rt_Vout + 0x0000000022017d0c HBN_Set_Ldo11_Soc_Vout + 0x0000000022017d16 HBN_Hw_Pu_Pd_Cfg + 0x0000000022017d20 HBN_Pin_WakeUp_Mask + 0x0000000022017d2a HBN_GPIO7_Dbg_Pull_Cfg + 0x0000000022017d34 HBN_Set_Embedded_Flash_Pullup + 0x0000000022017d3e L1C_Set_Wrap + 0x0000000022017d48 L1C_Set_Way_Disable + 0x0000000022017d52 L1C_IROM_2T_Access_Set + 0x0000000022017d5c PDS_Reset + 0x0000000022017d66 PDS_Enable + 0x0000000022017d70 PDS_Force_Config + 0x0000000022017d7a PDS_RAM_Config + 0x0000000022017d84 PDS_Default_Level_Config + 0x0000000022017d8e SEC_Eng_Turn_On_Sec_Ring + 0x0000000022017d98 SEC_Eng_Turn_Off_Sec_Ring + 0x0000000022017da2 SFlash_Init + 0x0000000022017dac SFlash_SetSPIMode + 0x0000000022017db6 SFlash_Read_Reg + 0x0000000022017dc0 SFlash_Write_Reg + 0x0000000022017dca SFlash_Busy + 0x0000000022017dd4 SFlash_Write_Enable + 0x0000000022017dde SFlash_Qspi_Enable + 0x0000000022017de8 SFlash_Volatile_Reg_Write_Enable + 0x0000000022017df2 SFlash_Chip_Erase + 0x0000000022017dfc SFlash_Sector_Erase + 0x0000000022017e06 SFlash_Blk32_Erase + 0x0000000022017e10 SFlash_Blk64_Erase + 0x0000000022017e1a SFlash_Erase + 0x0000000022017e24 SFlash_Program + 0x0000000022017e2e SFlash_GetUniqueId + 0x0000000022017e38 SFlash_GetJedecId + 0x0000000022017e42 SFlash_GetDeviceId + 0x0000000022017e4c SFlash_Powerdown + 0x0000000022017e56 SFlash_Releae_Powerdown + 0x0000000022017e60 SFlash_SetBurstWrap + 0x0000000022017e6a SFlash_DisableBurstWrap + 0x0000000022017e74 SFlash_Software_Reset + 0x0000000022017e7e SFlash_Reset_Continue_Read + 0x0000000022017e88 SFlash_Set_IDbus_Cfg + 0x0000000022017e92 SFlash_IDbus_Read_Enable + 0x0000000022017e9c SFlash_Cache_Enable_Set + 0x0000000022017ea6 SFlash_Cache_Flush + 0x0000000022017eb0 SFlash_Cache_Read_Enable + 0x0000000022017eba SFlash_Cache_Hit_Count_Get + 0x0000000022017ec4 SFlash_Cache_Miss_Count_Get + 0x0000000022017ece SFlash_Cache_Read_Disable + 0x0000000022017ed8 SFlash_Read + 0x0000000022017ee2 SFlash_Read_Reg_With_Cmd + 0x0000000022017eec SFlash_Write_Reg_With_Cmd + 0x0000000022017ef6 SF_Cfg_Init_Ext_Flash_Gpio + 0x0000000022017f00 SF_Cfg_Init_Internal_Flash_Gpio + 0x0000000022017f0a SF_Cfg_Deinit_Ext_Flash_Gpio + 0x0000000022017f14 SF_Cfg_Restore_GPIO17_Fun + 0x0000000022017f1e SF_Cfg_Get_Flash_Cfg_Need_Lock + 0x0000000022017f28 SF_Cfg_Init_Flash_Gpio + 0x0000000022017f32 SF_Cfg_Flash_Identify + 0x0000000022017f3c SF_Ctrl_Enable + 0x0000000022017f46 SF_Ctrl_Select_Pad + 0x0000000022017f50 SF_Ctrl_Set_Owner + 0x0000000022017f5a SF_Ctrl_Disable + 0x0000000022017f64 SF_Ctrl_AES_Enable_BE + 0x0000000022017f6e SF_Ctrl_AES_Enable_LE + 0x0000000022017f78 SF_Ctrl_AES_Set_Region + 0x0000000022017f82 SF_Ctrl_AES_Set_Key + 0x0000000022017f8c SF_Ctrl_AES_Set_Key_BE + 0x0000000022017f96 SF_Ctrl_AES_Set_IV + 0x0000000022017fa0 SF_Ctrl_AES_Set_IV_BE + 0x0000000022017faa SF_Ctrl_AES_Enable + 0x0000000022017fb4 SF_Ctrl_AES_Disable + 0x0000000022017fbe SF_Ctrl_Set_Flash_Image_Offset + 0x0000000022017fc8 SF_Ctrl_Get_Flash_Image_Offset + 0x0000000022017fd2 SF_Ctrl_Select_Clock + 0x0000000022017fdc SF_Ctrl_SendCmd + 0x0000000022017fe6 SF_Ctrl_Icache_Set + 0x0000000022017ff0 SF_Ctrl_Icache2_Set + 0x0000000022017ffa SF_Ctrl_GetBusyState + 0x0000000022018004 SF_Ctrl_Is_AES_Enable + 0x000000002201800e SF_Ctrl_Get_Clock_Delay + 0x0000000022018018 SF_Ctrl_Set_Clock_Delay + 0x0000000022018022 XIP_SFlash_State_Save + 0x000000002201802c XIP_SFlash_State_Restore + 0x0000000022018036 XIP_SFlash_Erase_Need_Lock + 0x0000000022018040 XIP_SFlash_Write_Need_Lock + 0x000000002201804a XIP_SFlash_Read_Need_Lock + 0x0000000022018054 XIP_SFlash_GetJedecId_Need_Lock + 0x000000002201805e XIP_SFlash_GetDeviceId_Need_Lock + 0x0000000022018068 XIP_SFlash_GetUniqueId_Need_Lock + 0x0000000022018072 XIP_SFlash_Read_Via_Cache_Need_Lock + 0x000000002201807c XIP_SFlash_Read_With_Lock + 0x0000000022018086 XIP_SFlash_Write_With_Lock + 0x0000000022018090 XIP_SFlash_Erase_With_Lock + 0x000000002201809a XIP_SFlash_Opt_Enter + 0x00000000220180a4 XIP_SFlash_Opt_Exit + 0x00000000220180ae BFLB_Soft_CRC32 + .tcm_code 0x00000000220180b8 0x5ac out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + 0x00000000220180b8 SFlash_Restore_From_Powerdown + 0x0000000022018164 SFlash_RCV_Enable + 0x000000002201822e SFlash_Erase_Security_Register + 0x000000002201833c SFlash_Program_Security_Register + 0x00000000220184d8 SFlash_Read_Security_Register + .tcm_code 0x0000000022018664 0x152 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + 0x0000000022018664 SF_Cfg_Get_Flash_Cfg_Need_Lock_Ext + 0x000000002201872c SF_Cfg_Flash_Identify_Ext + *(.tcm_const) + *fill* 0x00000000220187b6 0x2 + .tcm_const 0x00000000220187b8 0x1bc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + *(.sclock_rlt_code) + .sclock_rlt_code + 0x0000000022018974 0x140 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + 0x0000000022018974 AON_Power_On_MBG + 0x000000002201897e AON_Power_Off_MBG + 0x0000000022018988 AON_Power_On_XTAL + 0x0000000022018992 AON_Set_Xtal_CapCode + 0x000000002201899c AON_Get_Xtal_CapCode + 0x00000000220189a6 AON_Power_Off_XTAL + 0x00000000220189b0 EF_Ctrl_Get_Trim_Parity + 0x00000000220189ba EF_Ctrl_Read_RC32M_Trim + 0x00000000220189c4 EF_Ctrl_Read_RC32K_Trim + 0x00000000220189ce GLB_Get_Root_CLK_Sel + 0x00000000220189d8 GLB_Set_System_CLK_Div + 0x00000000220189e2 GLB_Get_BCLK_Div + 0x00000000220189ec GLB_Get_HCLK_Div + 0x00000000220189f6 Update_SystemCoreClockWith_XTAL + 0x0000000022018a00 GLB_Set_System_CLK + 0x0000000022018a0a System_Core_Clock_Update_From_RC32M + 0x0000000022018a14 GLB_Set_SF_CLK + 0x0000000022018a1e GLB_Set_PKA_CLK_Sel + 0x0000000022018a28 HBN_32K_Sel + 0x0000000022018a32 HBN_Set_ROOT_CLK_Sel + 0x0000000022018a3c HBN_Power_On_Xtal_32K + 0x0000000022018a46 HBN_Power_Off_Xtal_32K + 0x0000000022018a50 HBN_Trim_RC32K + 0x0000000022018a5a PDS_Trim_RC32M + 0x0000000022018a64 PDS_Select_RC32M_As_PLL_Ref + 0x0000000022018a6e PDS_Select_XTAL_As_PLL_Ref + 0x0000000022018a78 PDS_Power_On_PLL + 0x0000000022018a82 PDS_Enable_PLL_All_Clks + 0x0000000022018a8c PDS_Disable_PLL_All_Clks + 0x0000000022018a96 PDS_Enable_PLL_Clk + 0x0000000022018aa0 PDS_Disable_PLL_Clk + 0x0000000022018aaa PDS_Power_Off_PLL + *(.sclock_rlt_const) + 0x0000000022018ab4 . = ALIGN (0x4) + 0x0000000022018ab4 __text_code_end__ = . + +.rela.dyn 0x0000000022018ab4 0x0 + .rela.text.start_load + 0x0000000022018ab4 0x0 out/ChipTest/Eflash_Loader/main.o + .rela.init 0x0000000022018ab4 0x0 out/ChipTest/Eflash_Loader/main.o + .rela.text.metal.init.enter + 0x0000000022018ab4 0x0 out/ChipTest/Eflash_Loader/main.o + .rela.text.bflb_platform_uart_dbg_init + 0x0000000022018ab4 0x0 out/ChipTest/Eflash_Loader/main.o + .rela.text.bflb_platform_uart_dbg_deinit + 0x0000000022018ab4 0x0 out/ChipTest/Eflash_Loader/main.o + 0x0000000022018ab4 . = ALIGN (0x4) + 0x0000000022018ab4 __itcm_load_addr = . + +.itcm_region 0x0000000022018ab4 0x0 + 0x0000000022018ab4 . = ALIGN (0x4) + 0x0000000022018ab4 __tcm_code_start__ = . + 0x0000000022018ab4 . = ALIGN (0x4) + 0x0000000022018ab4 __tcm_code_end__ = . + 0x0000000022018ab4 __dtcm_load_addr = (__itcm_load_addr + SIZEOF (.itcm_region)) + +.dtcm_region 0x000000004201c000 0x0 load address 0x0000000022018ab4 + 0x000000004201c000 . = ALIGN (0x4) + 0x000000004201c000 __tcm_data_start__ = . + *(.tcm_data) + 0x000000004201c000 . = ALIGN (0x4) + 0x000000004201c000 __tcm_data_end__ = . + +.stack_dummy 0x000000004201c000 0x400 + 0x000000004201c000 . = ALIGN (0x4) + 0x000000004201c400 . = (. + StackSize) + *fill* 0x000000004201c000 0x400 + 0x000000004201c400 . = ALIGN (0x4) + 0x0000000042020000 __StackTop = (ORIGIN (dtcm_memory) + LENGTH (dtcm_memory)) + 0x000000004201fc00 __StackLimit = (__StackTop - SIZEOF (.stack_dummy)) + 0x0000000000000001 ASSERT ((__StackLimit >= __tcm_data_end__), region RAM overflowed with stack) + 0x0000000022018ab4 __system_ram_load_addr = (__dtcm_load_addr + SIZEOF (.dtcm_region)) + +.system_ram_data_region + 0x0000000042020000 0x0 load address 0x0000000022018ab4 + 0x0000000042020000 . = ALIGN (0x4) + 0x0000000042020000 __system_ram_data_start__ = . + 0x0000000042020000 . = ALIGN (0x4) + 0x0000000042020000 __system_ram_data_end__ = . + 0x0000000022018ab4 __ram_load_addr = (__system_ram_load_addr + SIZEOF (.system_ram_data_region)) + +RAM_DATA 0x0000000042020000 0xec load address 0x0000000022018ab4 + 0x0000000042020000 . = ALIGN (0x4) + 0x0000000042020000 __ram_data_start__ = . + 0x0000000042020800 PROVIDE (__global_pointer$ = (. + 0x800)) + *(.data) + *(.data.*) + .data.flashCfg_Gd_Q80E_Q16E + 0x0000000042020000 0x54 out/ChipTest/Eflash_Loader/main.o + .data.uart_if_cfg + 0x0000000042020054 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .data.boot_cpu_cfg + 0x0000000042020064 0x24 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + 0x0000000042020064 boot_cpu_cfg + .data.flashCfg_Gd_Q80E_Q16E + 0x0000000042020088 0x54 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + *(.sdata) + *(.sdata.*) + .sdata.xtalType + 0x00000000420200dc 0x1 out/ChipTest/Eflash_Loader/main.o + 0x00000000420200dc xtalType + *fill* 0x00000000420200dd 0x3 + .sdata.xtal_clk + 0x00000000420200e0 0x4 out/ChipTest/Eflash_Loader/main.o + 0x00000000420200e0 xtal_clk + .sdata.uart_if_fifocfg + 0x00000000420200e4 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .sdata.SdioFuncReg + 0x00000000420200e8 0x4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + 0x00000000420200e8 SdioFuncReg + *(.sdata2) + *(.sdata2.*) + 0x00000000420200ec . = ALIGN (0x4) + 0x00000000420200ec __ram_data_end__ = . + +.bss 0x00000000420200ec 0xdbdc load address 0x0000000022018ba0 + 0x00000000420200ec . = ALIGN (0x4) + 0x00000000420200ec __bss_start__ = . + *(.bss*) + .bss.eflash_loader_cmd_ack_buf + 0x00000000420200ec 0x40 out/ChipTest/Eflash_Loader/main.o + 0x00000000420200ec eflash_loader_cmd_ack_buf + .bss.eflash_loader_readbuf + 0x000000004202012c 0x8010 out/ChipTest/Eflash_Loader/main.o + 0x000000004202012c eflash_loader_readbuf + .bss.b.9351 0x000000004202813c 0x18 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .bss.eflash_loader_if_cfg + 0x0000000042028154 0x24 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .bss.image_cfg + 0x0000000042028178 0x2c out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + 0x0000000042028178 image_cfg + .bss.otp_cfg 0x00000000420281a4 0x30 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + 0x00000000420281a4 otp_cfg + .bss.__Interrupt_Handlers + 0x00000000420281d4 0x140 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + 0x00000000420281d4 __Interrupt_Handlers + .bss.uartIntCbfArra + 0x0000000042028314 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .bss.secEngIntCbfArra + 0x0000000042028354 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .bss.print_buf.8849 + 0x000000004202836c 0x80 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + *(.sbss*) + .sbss.bootMode + 0x00000000420283ec 0x1 out/ChipTest/Eflash_Loader/main.o + 0x00000000420283ec bootMode + *fill* 0x00000000420283ed 0x3 + .sbss.jid 0x00000000420283f0 0x4 out/ChipTest/Eflash_Loader/main.o + 0x00000000420283f0 jid + .sbss.rx_buf_index + 0x00000000420283f4 0x4 out/ChipTest/Eflash_Loader/main.o + 0x00000000420283f4 rx_buf_index + .sbss.rx_buf_len + 0x00000000420283f8 0x4 out/ChipTest/Eflash_Loader/main.o + 0x00000000420283f8 rx_buf_len + .sbss.eflash_loader_error + 0x00000000420283fc 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .sbss.s.9352 0x0000000042028400 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .sbss.startaddr.9349 + 0x0000000042028404 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .sbss.eflash_loader_if + 0x0000000042028408 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0x0000000042028408 eflash_loader_if + .sbss.abr_gpio_sel + 0x000000004202840c 0x1 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + *fill* 0x000000004202840d 0x3 + .sbss.detected_baudrate + 0x0000000042028410 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .sbss.clk_locked.9085 + 0x0000000042028414 0x1 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + *fill* 0x0000000042028415 0x3 + .sbss.bflb_eflash_loader_flash_id_valid_flag + 0x0000000042028418 0x4 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .sbss.curr_dnld_port.9000 + 0x000000004202841c 0x1 out/ChipTest/Eflash_Loader/sdu.o + .sbss.curr_upld_port.9017 + 0x000000004202841d 0x1 out/ChipTest/Eflash_Loader/sdu.o + *fill* 0x000000004202841e 0x2 + .sbss.sdu_rx_buf_attached + 0x0000000042028420 0x2 out/ChipTest/Eflash_Loader/sdu.o + *fill* 0x0000000042028422 0x2 + .sbss.bufsize 0x0000000042028424 0x4 out/BSP_Common/xz/xz_port.o + .sbss.mallocBuf + 0x0000000042028428 0x4 out/BSP_Common/xz/xz_port.o + .sbss.malloced + 0x000000004202842c 0x4 out/BSP_Common/xz/xz_port.o + .sbss.flag_mport + 0x0000000042028430 0x1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + 0x0000000042028430 flag_mport + *fill* 0x0000000042028431 0x3 + .sbss.init_flag + 0x0000000042028434 0x4 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .sbss.log_len 0x0000000042028438 0x4 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .sbss.uart_dbg_disable + 0x000000004202843c 0x1 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + *(COMMON) + *(.system_ram) + *fill* 0x000000004202843d 0x3 + .system_ram 0x0000000042028440 0x4888 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + 0x0000000042028440 padding + 0x0000000042028480 shaTmpBuf + 0x00000000420284c0 checkBuf + 0x0000000042028cc0 ShaInbuf + .system_ram 0x000000004202ccc8 0x1000 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x000000004202dcc8 . = ALIGN (0x4) + 0x000000004202dcc8 __bss_end__ = . + +.noinit_data 0x000000004202dcc8 0x0 + 0x000000004202dcc8 . = ALIGN (0x4) + 0x000000004202dcc8 __noinit_data_start__ = . + *(.noinit_data*) + 0x000000004202dcc8 . = ALIGN (0x4) + 0x000000004202dcc8 __noinit_data_end__ = . + +.heap 0x000000004202dcc8 0x0 + 0x000000004202dcc8 . = ALIGN (0x4) + 0x000000004202dcc8 __HeapBase = . + *(.heap*) + 0x000000004202dcc8 . = ALIGN (0x4) + 0x000000004202dcc8 __HeapLimit = . +OUTPUT(out/ChipTest/Eflash_Loader/chiptest_eflash_loader.elf elf32-littleriscv) + +.debug_info 0x0000000000000000 0x23fad + .debug_info 0x0000000000000000 0xbb3 out/ChipTest/Eflash_Loader/main.o + .debug_info 0x0000000000000bb3 0x25d2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_info 0x0000000000003185 0x78c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_info 0x0000000000003911 0xd04 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_info 0x0000000000004615 0x6b7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_info 0x0000000000004ccc 0x13da out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_info 0x00000000000060a6 0x8c7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_info 0x000000000000696d 0x1785 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_info 0x00000000000080f2 0x1c11 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_info 0x0000000000009d03 0x1fc out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_info 0x0000000000009eff 0x143 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_info 0x000000000000a042 0x2b7 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_info 0x000000000000a2f9 0x8de out/ChipTest/Eflash_Loader/sdu.o + .debug_info 0x000000000000abd7 0xf7 out/BSP_Common/libc/memcpy.o + .debug_info 0x000000000000acce 0xd7 out/BSP_Common/libc/memset.o + .debug_info 0x000000000000ada5 0xf8 out/BSP_Common/libc/memcmp.o + .debug_info 0x000000000000ae9d 0x525 out/BSP_Common/libc/vsnprintf.o + .debug_info 0x000000000000b3c2 0xbf out/BSP_Common/libc/strlen.o + .debug_info 0x000000000000b481 0x1dd out/BSP_Common/soft_crc/softcrc.o + .debug_info 0x000000000000b65e 0x11b out/BSP_Common/xz/xz_crc32.o + .debug_info 0x000000000000b779 0x1b15 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_info 0x000000000000d28e 0xcde out/BSP_Common/xz/xz_dec_stream.o + .debug_info 0x000000000000df6c 0x18b out/BSP_Common/xz/xz_port.o + .debug_info 0x000000000000e0f7 0x3da out/startup/system_bl602.o + .debug_info 0x000000000000e4d1 0x1cb out/startup/GCC/start_load.o + .debug_info 0x000000000000e69c 0x24e out/startup/interrupt.o + .debug_info 0x000000000000e8ea 0x22 out/startup/GCC/entry.o + .debug_info 0x000000000000e90c 0x577 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_info 0x000000000000ee83 0x1481 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_info 0x0000000000010304 0x1c3d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_info 0x0000000000011f41 0x1a16 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_info 0x0000000000013957 0x1f9f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_info 0x00000000000158f6 0x49e0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_info 0x000000000001a2d6 0x41c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_info 0x000000000001a6f2 0x3b0d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_info 0x000000000001e1ff 0x104b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_info 0x000000000001f24a 0x870 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_info 0x000000000001faba 0x110b out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_info 0x0000000000020bc5 0x303 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_info 0x0000000000020ec8 0x1276 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_info 0x000000000002213e 0x12d4 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .debug_info 0x0000000000023412 0xb9b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_abbrev 0x0000000000000000 0x585d + .debug_abbrev 0x0000000000000000 0x1ea out/ChipTest/Eflash_Loader/main.o + .debug_abbrev 0x00000000000001ea 0x4fc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_abbrev 0x00000000000006e6 0x27d out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_abbrev 0x0000000000000963 0x2de out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_abbrev 0x0000000000000c41 0x20c out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_abbrev 0x0000000000000e4d 0x3aa out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_abbrev 0x00000000000011f7 0x1a8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_abbrev 0x000000000000139f 0x48d out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_abbrev 0x000000000000182c 0x426 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_abbrev 0x0000000000001c52 0x10b out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_abbrev 0x0000000000001d5d 0xb0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_abbrev 0x0000000000001e0d 0x11a out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_abbrev 0x0000000000001f27 0x21c out/ChipTest/Eflash_Loader/sdu.o + .debug_abbrev 0x0000000000002143 0xba out/BSP_Common/libc/memcpy.o + .debug_abbrev 0x00000000000021fd 0x9d out/BSP_Common/libc/memset.o + .debug_abbrev 0x000000000000229a 0xa2 out/BSP_Common/libc/memcmp.o + .debug_abbrev 0x000000000000233c 0x1f4 out/BSP_Common/libc/vsnprintf.o + .debug_abbrev 0x0000000000002530 0x8c out/BSP_Common/libc/strlen.o + .debug_abbrev 0x00000000000025bc 0x109 out/BSP_Common/soft_crc/softcrc.o + .debug_abbrev 0x00000000000026c5 0xcb out/BSP_Common/xz/xz_crc32.o + .debug_abbrev 0x0000000000002790 0x3a0 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_abbrev 0x0000000000002b30 0x36c out/BSP_Common/xz/xz_dec_stream.o + .debug_abbrev 0x0000000000002e9c 0x111 out/BSP_Common/xz/xz_port.o + .debug_abbrev 0x0000000000002fad 0x199 out/startup/system_bl602.o + .debug_abbrev 0x0000000000003146 0x94 out/startup/GCC/start_load.o + .debug_abbrev 0x00000000000031da 0x130 out/startup/interrupt.o + .debug_abbrev 0x000000000000330a 0x12 out/startup/GCC/entry.o + .debug_abbrev 0x000000000000331c 0x191 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_abbrev 0x00000000000034ad 0x2ba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_abbrev 0x0000000000003767 0x2af out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_abbrev 0x0000000000003a16 0x2fa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_abbrev 0x0000000000003d10 0x38b out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_abbrev 0x000000000000409b 0x473 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_abbrev 0x000000000000450e 0x14d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_abbrev 0x000000000000465b 0x2ab out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_abbrev 0x0000000000004906 0x202 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_abbrev 0x0000000000004b08 0x179 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_abbrev 0x0000000000004c81 0x336 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_abbrev 0x0000000000004fb7 0xef out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_abbrev 0x00000000000050a6 0x2d5 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_abbrev 0x000000000000537b 0x2f1 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .debug_abbrev 0x000000000000566c 0x1f1 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_aranges 0x0000000000000000 0x17e8 + .debug_aranges + 0x0000000000000000 0x20 out/ChipTest/Eflash_Loader/main.o + .debug_aranges + 0x0000000000000020 0xf0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_aranges + 0x0000000000000110 0x60 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_aranges + 0x0000000000000170 0x78 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_aranges + 0x00000000000001e8 0x50 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_aranges + 0x0000000000000238 0x68 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_aranges + 0x00000000000002a0 0x48 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_aranges + 0x00000000000002e8 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_aranges + 0x0000000000000340 0xd0 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_aranges + 0x0000000000000410 0x28 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_aranges + 0x0000000000000438 0x38 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_aranges + 0x0000000000000470 0x40 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_aranges + 0x00000000000004b0 0x40 out/ChipTest/Eflash_Loader/sdu.o + .debug_aranges + 0x00000000000004f0 0x20 out/BSP_Common/libc/memcpy.o + .debug_aranges + 0x0000000000000510 0x20 out/BSP_Common/libc/memset.o + .debug_aranges + 0x0000000000000530 0x20 out/BSP_Common/libc/memcmp.o + .debug_aranges + 0x0000000000000550 0x20 out/BSP_Common/libc/vsnprintf.o + .debug_aranges + 0x0000000000000570 0x20 out/BSP_Common/libc/strlen.o + .debug_aranges + 0x0000000000000590 0x28 out/BSP_Common/soft_crc/softcrc.o + .debug_aranges + 0x00000000000005b8 0x28 out/BSP_Common/xz/xz_crc32.o + .debug_aranges + 0x00000000000005e0 0x50 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_aranges + 0x0000000000000630 0x50 out/BSP_Common/xz/xz_dec_stream.o + .debug_aranges + 0x0000000000000680 0x30 out/BSP_Common/xz/xz_port.o + .debug_aranges + 0x00000000000006b0 0x30 out/startup/system_bl602.o + .debug_aranges + 0x00000000000006e0 0x20 out/startup/GCC/start_load.o + .debug_aranges + 0x0000000000000700 0x68 out/startup/interrupt.o + .debug_aranges + 0x0000000000000768 0x30 out/startup/GCC/entry.o + .debug_aranges + 0x0000000000000798 0x38 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_aranges + 0x00000000000007d0 0x128 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_aranges + 0x00000000000008f8 0x218 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_aranges + 0x0000000000000b10 0x178 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_aranges + 0x0000000000000c88 0x1b0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_aranges + 0x0000000000000e38 0x280 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_aranges + 0x00000000000010b8 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_aranges + 0x00000000000010e0 0x550 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_aranges + 0x0000000000001630 0x40 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_aranges + 0x0000000000001670 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_aranges + 0x0000000000001698 0xd0 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_aranges + 0x0000000000001768 0x28 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_aranges + 0x0000000000001790 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_aranges + 0x00000000000017b0 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .debug_aranges + 0x00000000000017d0 0x18 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_ranges 0x0000000000000000 0x2aa0 + .debug_ranges 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/main.o + .debug_ranges 0x0000000000000010 0x138 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_ranges 0x0000000000000148 0x68 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_ranges 0x00000000000001b0 0x68 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_ranges 0x0000000000000218 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_ranges 0x0000000000000270 0x110 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_ranges 0x0000000000000380 0x38 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_ranges 0x00000000000003b8 0xc8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_ranges 0x0000000000000480 0x130 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_ranges 0x00000000000005b0 0x18 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_ranges 0x00000000000005c8 0x28 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_ranges 0x00000000000005f0 0x30 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_ranges 0x0000000000000620 0x50 out/ChipTest/Eflash_Loader/sdu.o + .debug_ranges 0x0000000000000670 0x10 out/BSP_Common/libc/memcpy.o + .debug_ranges 0x0000000000000680 0x10 out/BSP_Common/libc/memset.o + .debug_ranges 0x0000000000000690 0x10 out/BSP_Common/libc/memcmp.o + .debug_ranges 0x00000000000006a0 0x90 out/BSP_Common/libc/vsnprintf.o + .debug_ranges 0x0000000000000730 0x10 out/BSP_Common/libc/strlen.o + .debug_ranges 0x0000000000000740 0x18 out/BSP_Common/soft_crc/softcrc.o + .debug_ranges 0x0000000000000758 0x18 out/BSP_Common/xz/xz_crc32.o + .debug_ranges 0x0000000000000770 0x618 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_ranges 0x0000000000000d88 0x290 out/BSP_Common/xz/xz_dec_stream.o + .debug_ranges 0x0000000000001018 0x20 out/BSP_Common/xz/xz_port.o + .debug_ranges 0x0000000000001038 0x20 out/startup/system_bl602.o + .debug_ranges 0x0000000000001058 0x10 out/startup/GCC/start_load.o + .debug_ranges 0x0000000000001068 0x58 out/startup/interrupt.o + .debug_ranges 0x00000000000010c0 0x28 out/startup/GCC/entry.o + .debug_ranges 0x00000000000010e8 0x28 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_ranges 0x0000000000001110 0x168 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_ranges 0x0000000000001278 0x290 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_ranges 0x0000000000001508 0x278 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_ranges 0x0000000000001780 0x330 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_ranges 0x0000000000001ab0 0x720 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_ranges 0x00000000000021d0 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_ranges 0x00000000000021e8 0x540 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_ranges 0x0000000000002728 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_ranges 0x0000000000002758 0x18 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_ranges 0x0000000000002770 0x148 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_ranges 0x00000000000028b8 0x18 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_ranges 0x00000000000028d0 0x100 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_ranges 0x00000000000029d0 0xd0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + +.debug_macro 0x0000000000000000 0x1aabb + .debug_macro 0x0000000000000000 0x20f out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000020f 0x7a2 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x00000000000009b1 0x20a out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000000bbb 0x1f6 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000000db1 0x88 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000000e39 0x52 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000000e8b 0x163c out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x00000000000024c7 0xa68 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000002f2f 0x16 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000002f45 0x58 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000002f9d 0x34 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000002fd1 0x1c out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000002fed 0x40 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000302d 0x22 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000304f 0x58 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x00000000000030a7 0x47b7 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000785e 0x11f8 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000008a56 0x7c0 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000009216 0x36b out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000009581 0x4f out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x00000000000095d0 0xaec out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000a0bc 0x1a74 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000bb30 0xd67 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000c897 0x3c out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000c8d3 0x2071 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000e944 0x66 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000e9aa 0x19 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000e9c3 0xba out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000ea7d 0x70 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000eaed 0x96 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000eb83 0x100 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000000ec83 0x2c9b out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x000000000001191e 0x66 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000011984 0x7c out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000011a00 0xe2 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000011ae2 0x22 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000011b04 0x22 out/ChipTest/Eflash_Loader/main.o + .debug_macro 0x0000000000011b26 0x260 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000011d86 0xdc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000011e62 0x28 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000011e8a 0x25 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000011eaf 0x36f out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x000000000001221e 0x259 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000012477 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000012493 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x00000000000124eb 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000012501 0x18f out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000012690 0x202 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000012892 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x00000000000128b4 0x217 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000012acb 0x236 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_macro 0x0000000000012d01 0x224 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_macro 0x0000000000012f25 0x214 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000013139 0x1ba out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x00000000000132f3 0x1db out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_macro 0x00000000000134ce 0x1e1 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x00000000000136af 0x259 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000013908 0x189 out/ChipTest/Eflash_Loader/sdu.o + .debug_macro 0x0000000000013a91 0x36 out/BSP_Common/libc/memcpy.o + .debug_macro 0x0000000000013ac7 0x36 out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000013afd 0x36 out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000013b33 0x97 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000013bca 0x8e out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000013c58 0x36 out/BSP_Common/libc/strlen.o + .debug_macro 0x0000000000013c8e 0x1b1 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000013e3f 0x84 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000013ec3 0x1c out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000013edf 0x46 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000013f25 0x2e out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000013f53 0x93 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000013fe6 0xd7 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x00000000000140bd 0x8d out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x000000000001414a 0x40 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x000000000001418a 0x65 out/BSP_Common/xz/xz_port.o + .debug_macro 0x00000000000141ef 0x183 out/startup/system_bl602.o + .debug_macro 0x0000000000014372 0x52 out/startup/GCC/start_load.o + .debug_macro 0x00000000000143c4 0x2c out/startup/interrupt.o + .debug_macro 0x00000000000143f0 0xba out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x00000000000144aa 0x365 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_macro 0x000000000001480f 0x18d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_macro 0x000000000001499c 0x197 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_macro 0x0000000000014b33 0xef out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000014c22 0xd61 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x0000000000015983 0x99c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_macro 0x000000000001631f 0x183 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x00000000000164a2 0xae6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_macro 0x0000000000016f88 0xf2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x000000000001707a 0x2c95 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_macro 0x0000000000019d0f 0xb6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_macro 0x0000000000019dc5 0x1aa out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x0000000000019f6f 0x4cb out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_macro 0x000000000001a43a 0x104 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_macro 0x000000000001a53e 0x1c6 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_macro 0x000000000001a704 0x21a out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x000000000001a91e 0x19d out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + +.debug_line 0x0000000000000000 0x2a359 + .debug_line 0x0000000000000000 0x6c7 out/ChipTest/Eflash_Loader/main.o + .debug_line 0x00000000000006c7 0x2b5c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_line 0x0000000000003223 0xf01 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_line 0x0000000000004124 0xd87 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_line 0x0000000000004eab 0x7de out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_line 0x0000000000005689 0xcdd out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_line 0x0000000000006366 0x659 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_line 0x00000000000069bf 0xe18 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_line 0x00000000000077d7 0x132f out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_line 0x0000000000008b06 0x515 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_line 0x000000000000901b 0x4b7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_line 0x00000000000094d2 0x4a8 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_line 0x000000000000997a 0xd1b out/ChipTest/Eflash_Loader/sdu.o + .debug_line 0x000000000000a695 0xf6 out/BSP_Common/libc/memcpy.o + .debug_line 0x000000000000a78b 0xe8 out/BSP_Common/libc/memset.o + .debug_line 0x000000000000a873 0x116 out/BSP_Common/libc/memcmp.o + .debug_line 0x000000000000a989 0x16cb out/BSP_Common/libc/vsnprintf.o + .debug_line 0x000000000000c054 0xd4 out/BSP_Common/libc/strlen.o + .debug_line 0x000000000000c128 0x552 out/BSP_Common/soft_crc/softcrc.o + .debug_line 0x000000000000c67a 0x18a out/BSP_Common/xz/xz_crc32.o + .debug_line 0x000000000000c804 0x36dd out/BSP_Common/xz/xz_dec_lzma2.o + .debug_line 0x000000000000fee1 0x1757 out/BSP_Common/xz/xz_dec_stream.o + .debug_line 0x0000000000011638 0x283 out/BSP_Common/xz/xz_port.o + .debug_line 0x00000000000118bb 0x631 out/startup/system_bl602.o + .debug_line 0x0000000000011eec 0x36c out/startup/GCC/start_load.o + .debug_line 0x0000000000012258 0x2d7 out/startup/interrupt.o + .debug_line 0x000000000001252f 0x15e out/startup/GCC/entry.o + .debug_line 0x000000000001268d 0x6cc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_line 0x0000000000012d59 0x1ea5 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_line 0x0000000000014bfe 0x2e24 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_line 0x0000000000017a22 0x2e4f out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_line 0x000000000001a871 0x272d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_line 0x000000000001cf9e 0x704e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_line 0x0000000000023fec 0x36a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_line 0x0000000000024356 0x1526 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_line 0x000000000002587c 0x1337 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_line 0x0000000000026bb3 0x6f0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_line 0x00000000000272a3 0x1487 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_line 0x000000000002872a 0x4fe out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .debug_line 0x0000000000028c28 0x9c9 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_line 0x00000000000295f1 0xa8f /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .debug_line 0x000000000002a080 0x2d9 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_str 0x0000000000000000 0x9ea93 + .debug_str 0x0000000000000000 0x854a8 out/ChipTest/Eflash_Loader/main.o + 0x85639 (size before relaxing) + .debug_str 0x00000000000854a8 0x15a0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + 0x86703 (size before relaxing) + .debug_str 0x0000000000086a48 0x1228 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + 0x8599e (size before relaxing) + .debug_str 0x0000000000087c70 0xf39 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0x8691a (size before relaxing) + .debug_str 0x0000000000088ba9 0x170 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0x853af (size before relaxing) + .debug_str 0x0000000000088d19 0xc8f out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x85f27 (size before relaxing) + .debug_str 0x00000000000899a8 0x139 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + 0x8602a (size before relaxing) + .debug_str 0x0000000000089ae1 0x74e out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + 0x8663b (size before relaxing) + .debug_str 0x000000000008a22f 0x25d out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x85c71 (size before relaxing) + .debug_str 0x000000000008a48c 0x55 out/ChipTest/Eflash_Loader/bflb_efuse.o + 0x841af (size before relaxing) + .debug_str 0x000000000008a4e1 0x30 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + 0x84550 (size before relaxing) + .debug_str 0x000000000008a511 0xd6 out/ChipTest/Eflash_Loader/bflb_set_clock.o + 0x8473b (size before relaxing) + .debug_str 0x000000000008a5e7 0x1c1 out/ChipTest/Eflash_Loader/sdu.o + 0x85b19 (size before relaxing) + .debug_str 0x000000000008a7a8 0x49 out/BSP_Common/libc/memcpy.o + 0x2ec0 (size before relaxing) + .debug_str 0x000000000008a7f1 0x1d out/BSP_Common/libc/memset.o + 0x2ec0 (size before relaxing) + .debug_str 0x000000000008a80e 0x1d out/BSP_Common/libc/memcmp.o + 0x2ebb (size before relaxing) + .debug_str 0x000000000008a82b 0x1051 out/BSP_Common/libc/vsnprintf.o + 0x40a7 (size before relaxing) + .debug_str 0x000000000008b87c 0x1d out/BSP_Common/libc/strlen.o + 0x2ec0 (size before relaxing) + .debug_str 0x000000000008b899 0xee out/BSP_Common/soft_crc/softcrc.o + 0x7ec89 (size before relaxing) + .debug_str 0x000000000008b987 0x2cd out/BSP_Common/xz/xz_crc32.o + 0x3407 (size before relaxing) + .debug_str 0x000000000008bc54 0x8fe out/BSP_Common/xz/xz_dec_lzma2.o + 0x3e53 (size before relaxing) + .debug_str 0x000000000008c552 0x340 out/BSP_Common/xz/xz_dec_stream.o + 0x3947 (size before relaxing) + .debug_str 0x000000000008c892 0x33 out/BSP_Common/xz/xz_port.o + 0x330e (size before relaxing) + .debug_str 0x000000000008c8c5 0x159 out/startup/system_bl602.o + 0x665c5 (size before relaxing) + .debug_str 0x000000000008ca1e 0x1ff out/startup/GCC/start_load.o + 0x8bb7 (size before relaxing) + .debug_str 0x000000000008cc1d 0xdc out/startup/interrupt.o + 0x331b (size before relaxing) + .debug_str 0x000000000008ccf9 0x58 out/startup/GCC/entry.o + 0x7b (size before relaxing) + .debug_str 0x000000000008cd51 0xb2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + 0xad21 (size before relaxing) + .debug_str 0x000000000008ce03 0x3c5 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + 0x6c411 (size before relaxing) + .debug_str 0x000000000008d1c8 0xd01 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + 0x677fd (size before relaxing) + .debug_str 0x000000000008dec9 0x651a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + 0x17289 (size before relaxing) + .debug_str 0x00000000000943e3 0xb50 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + 0x676cc (size before relaxing) + .debug_str 0x0000000000094f33 0x1333 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + 0x232b9 (size before relaxing) + .debug_str 0x0000000000096266 0x98 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + 0x9b26 (size before relaxing) + .debug_str 0x00000000000962fe 0x784a out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + 0x87db3 (size before relaxing) + .debug_str 0x000000000009db48 0x190 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + 0x1db4d (size before relaxing) + .debug_str 0x000000000009dcd8 0xcd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + 0x847c8 (size before relaxing) + .debug_str 0x000000000009dda5 0x445 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + 0x85203 (size before relaxing) + .debug_str 0x000000000009e1ea 0x3c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + 0x6bb5b (size before relaxing) + .debug_str 0x000000000009e226 0x7cd /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + 0x8db (size before relaxing) + .debug_str 0x000000000009e9f3 0xa /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + 0x8db (size before relaxing) + .debug_str 0x000000000009e9fd 0x96 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + 0x822 (size before relaxing) + +.comment 0x0000000000000000 0x32 + .comment 0x0000000000000000 0x32 out/ChipTest/Eflash_Loader/main.o + 0x33 (size before relaxing) + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_efuse.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/sdu.o + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/memcpy.o + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/memset.o + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/memcmp.o + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/vsnprintf.o + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/strlen.o + .comment 0x0000000000000032 0x33 out/BSP_Common/soft_crc/softcrc.o + .comment 0x0000000000000032 0x33 out/BSP_Common/xz/xz_crc32.o + .comment 0x0000000000000032 0x33 out/BSP_Common/xz/xz_dec_lzma2.o + .comment 0x0000000000000032 0x33 out/BSP_Common/xz/xz_dec_stream.o + .comment 0x0000000000000032 0x33 out/BSP_Common/xz/xz_port.o + .comment 0x0000000000000032 0x33 out/startup/system_bl602.o + .comment 0x0000000000000032 0x33 out/startup/GCC/start_load.o + .comment 0x0000000000000032 0x33 out/startup/interrupt.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .comment 0x0000000000000032 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + .comment 0x0000000000000032 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .comment 0x0000000000000032 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .comment 0x0000000000000032 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.riscv.attributes + 0x0000000000000000 0x2e + .riscv.attributes + 0x0000000000000000 0x2e out/ChipTest/Eflash_Loader/main.o + .riscv.attributes + 0x000000000000002e 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .riscv.attributes + 0x000000000000005c 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .riscv.attributes + 0x000000000000008a 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .riscv.attributes + 0x00000000000000b8 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .riscv.attributes + 0x00000000000000e6 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .riscv.attributes + 0x0000000000000114 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .riscv.attributes + 0x0000000000000142 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .riscv.attributes + 0x0000000000000170 0x2e out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .riscv.attributes + 0x000000000000019e 0x2e out/ChipTest/Eflash_Loader/bflb_efuse.o + .riscv.attributes + 0x00000000000001cc 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .riscv.attributes + 0x00000000000001fa 0x2e out/ChipTest/Eflash_Loader/bflb_set_clock.o + .riscv.attributes + 0x0000000000000228 0x2e out/ChipTest/Eflash_Loader/sdu.o + .riscv.attributes + 0x0000000000000256 0x2e out/BSP_Common/libc/memcpy.o + .riscv.attributes + 0x0000000000000284 0x2e out/BSP_Common/libc/memset.o + .riscv.attributes + 0x00000000000002b2 0x2e out/BSP_Common/libc/memcmp.o + .riscv.attributes + 0x00000000000002e0 0x2e out/BSP_Common/libc/vsnprintf.o + .riscv.attributes + 0x000000000000030e 0x2e out/BSP_Common/libc/strlen.o + .riscv.attributes + 0x000000000000033c 0x2e out/BSP_Common/soft_crc/softcrc.o + .riscv.attributes + 0x000000000000036a 0x2e out/BSP_Common/xz/xz_crc32.o + .riscv.attributes + 0x0000000000000398 0x2e out/BSP_Common/xz/xz_dec_lzma2.o + .riscv.attributes + 0x00000000000003c6 0x2e out/BSP_Common/xz/xz_dec_stream.o + .riscv.attributes + 0x00000000000003f4 0x2e out/BSP_Common/xz/xz_port.o + .riscv.attributes + 0x0000000000000422 0x2e out/startup/system_bl602.o + .riscv.attributes + 0x0000000000000450 0x2e out/startup/GCC/start_load.o + .riscv.attributes + 0x000000000000047e 0x2e out/startup/interrupt.o + .riscv.attributes + 0x00000000000004ac 0x2e out/startup/GCC/entry.o + .riscv.attributes + 0x00000000000004da 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .riscv.attributes + 0x0000000000000508 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .riscv.attributes + 0x0000000000000536 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .riscv.attributes + 0x0000000000000564 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .riscv.attributes + 0x0000000000000592 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .riscv.attributes + 0x00000000000005c0 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .riscv.attributes + 0x00000000000005ee 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .riscv.attributes + 0x000000000000061c 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .riscv.attributes + 0x000000000000064a 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .riscv.attributes + 0x0000000000000678 0x2e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .riscv.attributes + 0x00000000000006a6 0x2e out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .riscv.attributes + 0x00000000000006d4 0x2e out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + .riscv.attributes + 0x0000000000000702 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + .riscv.attributes + 0x0000000000000730 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .riscv.attributes + 0x000000000000075e 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .riscv.attributes + 0x000000000000078c 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_frame 0x0000000000000000 0x3f94 + .debug_frame 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/main.o + .debug_frame 0x0000000000000040 0x47c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_frame 0x00000000000004bc 0x168 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_frame 0x0000000000000624 0x108 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_frame 0x000000000000072c 0xd8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_frame 0x0000000000000804 0x190 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_frame 0x0000000000000994 0xa8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_frame 0x0000000000000a3c 0x128 out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_frame 0x0000000000000b64 0x368 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_frame 0x0000000000000ecc 0x64 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_frame 0x0000000000000f30 0x50 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + .debug_frame 0x0000000000000f80 0x60 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_frame 0x0000000000000fe0 0xc4 out/ChipTest/Eflash_Loader/sdu.o + .debug_frame 0x00000000000010a4 0x20 out/BSP_Common/libc/memcpy.o + .debug_frame 0x00000000000010c4 0x20 out/BSP_Common/libc/memset.o + .debug_frame 0x00000000000010e4 0x20 out/BSP_Common/libc/memcmp.o + .debug_frame 0x0000000000001104 0x60 out/BSP_Common/libc/vsnprintf.o + .debug_frame 0x0000000000001164 0x20 out/BSP_Common/libc/strlen.o + .debug_frame 0x0000000000001184 0x30 out/BSP_Common/soft_crc/softcrc.o + .debug_frame 0x00000000000011b4 0x30 out/BSP_Common/xz/xz_crc32.o + .debug_frame 0x00000000000011e4 0x144 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_frame 0x0000000000001328 0x134 out/BSP_Common/xz/xz_dec_stream.o + .debug_frame 0x000000000000145c 0x50 out/BSP_Common/xz/xz_port.o + .debug_frame 0x00000000000014ac 0x58 out/startup/system_bl602.o + .debug_frame 0x0000000000001504 0x20 out/startup/GCC/start_load.o + .debug_frame 0x0000000000001524 0x1e8 out/startup/interrupt.o + .debug_frame 0x000000000000170c 0x8c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_frame 0x0000000000001798 0x290 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_frame 0x0000000000001a28 0x490 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_frame 0x0000000000001eb8 0x6dc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_frame 0x0000000000002594 0x3f0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_frame 0x0000000000002984 0x5ec out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_frame 0x0000000000002f70 0x30 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_frame 0x0000000000002fa0 0xa80 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_frame 0x0000000000003a20 0x15c out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_frame 0x0000000000003b7c 0x84 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_frame 0x0000000000003c00 0x34c out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_frame 0x0000000000003f4c 0x48 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + +.debug_loc 0x0000000000000000 0x18146 + .debug_loc 0x0000000000000000 0x1745 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_loc 0x0000000000001745 0x282 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_loc 0x00000000000019c7 0x4d4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_loc 0x0000000000001e9b 0x21c out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_loc 0x00000000000020b7 0x35c out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_loc 0x0000000000002413 0x172 out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + .debug_loc 0x0000000000002585 0x3ee out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + .debug_loc 0x0000000000002973 0x7de out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_loc 0x0000000000003151 0x151 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_loc 0x00000000000032a2 0x63 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_loc 0x0000000000003305 0x27c out/ChipTest/Eflash_Loader/sdu.o + .debug_loc 0x0000000000003581 0x6f out/BSP_Common/libc/memcpy.o + .debug_loc 0x00000000000035f0 0x9a out/BSP_Common/libc/memset.o + .debug_loc 0x000000000000368a 0xb1 out/BSP_Common/libc/memcmp.o + .debug_loc 0x000000000000373b 0x183c out/BSP_Common/libc/vsnprintf.o + .debug_loc 0x0000000000004f77 0x71 out/BSP_Common/libc/strlen.o + .debug_loc 0x0000000000004fe8 0x1f5 out/BSP_Common/soft_crc/softcrc.o + .debug_loc 0x00000000000051dd 0x8c out/BSP_Common/xz/xz_crc32.o + .debug_loc 0x0000000000005269 0x173e out/BSP_Common/xz/xz_dec_lzma2.o + .debug_loc 0x00000000000069a7 0x769 out/BSP_Common/xz/xz_dec_stream.o + .debug_loc 0x0000000000007110 0x58 out/BSP_Common/xz/xz_port.o + .debug_loc 0x0000000000007168 0x5f out/startup/system_bl602.o + .debug_loc 0x00000000000071c7 0x73 out/startup/GCC/start_load.o + .debug_loc 0x000000000000723a 0x122 out/startup/interrupt.o + .debug_loc 0x000000000000735c 0x290 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + .debug_loc 0x00000000000075ec 0x12f3 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + .debug_loc 0x00000000000088df 0x18fb out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + .debug_loc 0x000000000000a1da 0x22a9 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + .debug_loc 0x000000000000c483 0x143d out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + .debug_loc 0x000000000000d8c0 0x638e out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + .debug_loc 0x0000000000013c4e 0x79 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + .debug_loc 0x0000000000013cc7 0x1cbf out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + .debug_loc 0x0000000000015986 0x8fd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + .debug_loc 0x0000000000016283 0x233 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + .debug_loc 0x00000000000164b6 0x757 out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + .debug_loc 0x0000000000016c0d 0xbd0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_loc 0x00000000000177dd 0x969 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + +Cross Reference Table + +Symbol File +ADC_Channel_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_FIFO_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_FIFO_Is_Empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_FIFO_Is_Full out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Gain_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_GetIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Get_FIFO_Count out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_IntClr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_MIC_Bias_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_MIC_Bias_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Mic_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Parse_Result out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Read_FIFO out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_SET_TSVBE_HIGH out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_SET_TSVBE_LOW out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Scan_Channel_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Start out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Stop out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Trim_TSEN out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Tsen_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Vbat_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +ADC_Vbat_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +AON_ACOMP_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o +AON_ACOMP_Get_Result out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o +AON_ACOMP_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_acomp.o +AON_Get_Xtal_CapCode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_LowPower_Enter_PDS0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_LowPower_Exit_PDS0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_Off_BG out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_Off_LDO11_SOC out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_Off_LDO15_RF out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_Off_MBG out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_Off_SFReg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_Off_XTAL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_On_BG out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_On_LDO11_SOC out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_On_LDO15_RF out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_On_MBG out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_On_SFReg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Power_On_XTAL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +AON_Set_LDO11_SOC_Sstart_Delay out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_aon.o +AON_Set_Xtal_CapCode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +ASM_Delay_Us out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +BFLB_Soft_CRC16 out/BSP_Common/soft_crc/softcrc.o +BFLB_Soft_CRC32 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + out/BSP_Common/partition/partition.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +BFLB_Soft_CRC32_Table out/BSP_Common/soft_crc/softcrc.o +BL602_Delay_MS out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +BL602_Delay_US out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +BL602_MemCmp out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o +BL602_MemCpy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +BL602_MemCpy4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +BL602_MemCpy_Fast out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/partition/partition.o + out/BSP_Common/ring_buffer/ring_buffer.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o +BL602_MemSet out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +BL602_MemSet4 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +BLE_IRQHandler_Wrapper out/startup/interrupt.o +BMX_ERR_INT_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +BMX_ERR_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +BMX_ERR_IRQHandler_Wrapper out/startup/interrupt.o +BMX_TIMEOUT_INT_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +BMX_TO_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +BMX_TO_IRQHandler_Wrapper out/startup/interrupt.o +BOR_IRQHandler_Wrapper out/startup/interrupt.o +BZ_PHY_IRQHandler_Wrapper out/startup/interrupt.o +DMA_ALL_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_ALL_IRQHandler_Wrapper out/startup/interrupt.o +DMA_BMX_ERR_IRQHandler_Wrapper out/startup/interrupt.o +DMA_Channel_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Channel_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Channel_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Channel_Is_Busy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Channel_TranferSize out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Channel_Update_DstMemcfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Channel_Update_SrcMemcfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpBuf_Append out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpBuf_Destroy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpBuf_Remove_Completed_List out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpBuf_Start_New_Transmit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpStruct_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpStruct_Set_Transfer_Len out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpStruct_Start out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_PpStruct_Stop out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +DMA_LLI_Update out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o +EFUSE_IRQHandler_Wrapper out/startup/interrupt.o +EF_Ctrl_AutoLoad_Done out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +EF_Ctrl_Busy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/ChipTest/Eflash_Loader/bflb_efuse.o +EF_Ctrl_Clear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +EF_Ctrl_Crc_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Crc_Is_Busy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Crc_Result out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Crc_Set_Golden out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Get_Trim_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Get_Trim_Parity out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Is_All_Bits_Zero out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Is_CapCode_Slot_Empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Is_MAC_Address_Slot_Empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Is_PowerOffset_Slot_Empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Load_Efuse_R0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/ChipTest/Eflash_Loader/bflb_efuse.o +EF_Ctrl_Program_Direct_R0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + out/ChipTest/Eflash_Loader/bflb_efuse.o +EF_Ctrl_Program_Efuse_0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_ADC_Gain_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +EF_Ctrl_Read_AES_Key out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_Ana_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_CapCode_Opt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Read_Chip_ID out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_Dbg_Pwd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_Device_Info out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_Direct_R0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + out/ChipTest/Eflash_Loader/bflb_efuse.o +EF_Ctrl_Read_MAC_Address out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +EF_Ctrl_Read_MAC_Address_Opt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Read_MAC_Address_Raw out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_PowerOffset_Opt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Read_R0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Read_RC32K_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +EF_Ctrl_Read_RC32M_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +EF_Ctrl_Read_Secure_Boot out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_Secure_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_Sw_Usage out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Read_TSEN_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +EF_Ctrl_Readlock_AES_Key out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Readlock_Dbg_Pwd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Sw_AHB_Clk_0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_AES_Key out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_Ana_Trim out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_CapCode_Opt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Write_Dbg_Pwd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_MAC_Address out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_MAC_Address_Opt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Write_PowerOffset_Opt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Write_R0 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +EF_Ctrl_Write_Secure_Boot out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_Secure_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Write_Sw_Usage out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Writelock_AES_Key out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Writelock_Dbg_Pwd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Writelock_MAC_Address out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +EF_Ctrl_Writelock_Sw_Usage out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ef_ctrl.o +FreeRTOS_Interrupt_Handler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + out/BSP_Common/FreeRTOS/portASM.o +GLB_AHB_Slave1_Clock_Gate out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_AHB_Slave1_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/ChipTest/Eflash_Loader/sdu.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +GLB_BMX_Addr_Monitor_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_BMX_Addr_Monitor_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_BMX_BusErrResponse_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_BMX_BusErrResponse_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_BMX_Get_Err_Addr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_BMX_Get_Status out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_BMX_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Clr_GPIO_IntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_DAC_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_DAC_Set_ChanA_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_DAC_Set_ChanA_Value out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_DAC_Set_ChanB_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_DAC_Set_ChanB_Value out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_Deswap_Flash_Pin out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_GPIO_Func_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_Get_Fun out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_GPIO_Get_Real_Fun out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_INPUT_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_INPUT_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_INT0_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_INT0_IRQHandler_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_GPIO_IntClear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_OUTPUT_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_GPIO_OUTPUT_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_GPIO_Read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_GPIO_Set_HZ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_GPIO_Set_PullDown out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_Set_PullUp out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIO_Write out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_GPIP_DAC_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_GPIP_DAC_Set_ChanA_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_GPIP_DAC_Set_ChanB_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GLB_Get_BCLK_Div out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +GLB_Get_GPIO_IntCtlMod out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Get_GPIO_IntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Get_HCLK_Div out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +GLB_Get_Root_CLK_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +GLB_Get_SRAM_PARM out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Get_SRAM_RET out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Get_SRAM_SLP out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_IR_LED_Driver_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_IR_LED_Driver_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_IR_LED_Driver_Ibias out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_IR_RX_GPIO_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_JTAG_Sig_Swap_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Platform_Wakeup_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Platform_Wakeup_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_SW_CPU_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_SW_POR_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_SW_System_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +GLB_Select_External_Flash out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_Select_Internal_Flash out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_Set_ADC_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_BLE_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_BT_Coex_Signal out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_DAC_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_DIG_32K_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_DIG_512K_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_DIG_CLK_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_DMA_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_EM_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_GPIO_IntMod out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_I2C_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +GLB_Set_IR_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +GLB_Set_MTimer_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +GLB_Set_PKA_CLK_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +GLB_Set_SF_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_set_clock.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +GLB_Set_SPI_0_ACT_MOD_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_SPI_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +GLB_Set_SRAM_PARM out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_SRAM_RET out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_SRAM_SLP out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_System_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + out/ChipTest/Eflash_Loader/bflb_set_clock.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +GLB_Set_System_CLK_Div out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +GLB_Set_UART_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +GLB_Set_WiFi_Core_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Set_WiFi_Encrypt_CLK out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_Swap_Flash_Pin out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_Swap_SPI_0_MOSI_With_MISO out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GLB_UART_Fun_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_UART_Sig_Swap_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o +GPADC_DMA_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +GPADC_DMA_IRQHandler_Wrapper out/startup/interrupt.o +GPIO_INT0_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +GPIO_INT0_IRQHandler_Wrapper out/startup/interrupt.o +GPIP_DAC_ChanA_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_DAC_ChanA_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_DAC_ChanB_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_DAC_ChanB_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_DAC_DMA_WriteData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_Set_DAC_ChanA_SRC_SEL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_Set_DAC_ChanB_SRC_SEL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_Set_DAC_DMA_TX_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_Set_DAC_DMA_TX_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_Set_DAC_DMA_TX_FORMAT_SEL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +GPIP_Set_DAC_Mod_SEL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dac.o +HBN_32K_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Aon_Pad_IeSmt_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_App_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Clear_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Clear_RTC_Counter out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Clear_RTC_INT out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Disable_AComp0_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Disable_AComp1_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Disable_BOR_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Enable_AComp0_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Enable_AComp1_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Enable_BOR_IRQ out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Enable_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Enable_RTC_Counter out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_GPIO7_Dbg_Pull_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +HBN_GPIO_INT_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_GPIO_INT_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_BOR_OUT_State out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_INT_State out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_PIR_Interval out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_PIR_Threshold out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_Pin_Wakeup_Mode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_RTC_Timer_Val out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_Status_Flag out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Get_Wakeup_Addr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Hw_Pu_Pd_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Mode_Enter out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Mode_Enter_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_OUT0_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_OUT0_IRQHandler_Wrapper out/startup/interrupt.o +HBN_OUT1_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_OUT1_IRQHandler_Wrapper out/startup/interrupt.o +HBN_Out0_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Out0_IRQHandler_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Out1_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Out1_IRQHandler_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_PIR_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_PIR_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_PIR_HPF_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_PIR_INT_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_PIR_LPF_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Pin_WakeUp_Mask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Power_Down_Flash out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Power_Off_RC32K out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Power_Off_Xtal_32K out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Power_On_RC32K out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Power_On_Xtal_32K out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +HBN_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_BOR_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + out/startup/system_bl602.o +HBN_Set_BOR_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_Embedded_Flash_Pullup out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_HRAM_Ret out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_HRAM_slp out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_Ldo11_All_Vout out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_Ldo11_Aon_Vout out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +HBN_Set_Ldo11_Rt_Vout out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +HBN_Set_Ldo11_Soc_Vout out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +HBN_Set_PIR_Interval out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_PIR_Threshold out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_ROOT_CLK_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +HBN_Set_RTC_Timer out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_Status_Flag out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_UART_CLK_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o +HBN_Set_Wakeup_Addr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o +HBN_Set_XCLK_CLK_Sel out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +HBN_Trim_RC32K out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +I2C_ClockSet out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_IRQHandler_Wrapper out/startup/interrupt.o +I2C_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_IsBusy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_MasterReceiveBlocking out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_MasterSendBlocking out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_RecieveWord out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_SendWord out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_SetPrd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +I2C_SetSclSync out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +IRRX_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IRRX_IRQHandler_Wrapper out/startup/interrupt.o +IRTX_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IRTX_IRQHandler_Wrapper out/startup/interrupt.o +IR_ClrIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_DeInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_GetIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_GetRxDataBitCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_GetRxFIFOCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_GetRxFIFOStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_LEDInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_LEDSend out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_LearnToInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_LearnToReceive out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_LearnToSend out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_ReceiveData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_ReceiveNEC out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_RxFIFOClear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_RxInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_SWMReceiveData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_SWMSendCommand out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_SWMSendData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_SendCommand out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_SendData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_SendNEC out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_TxInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_TxPulseWidthConfig out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_TxSWM out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +IR_TxSWMPulseWidthConfig out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o +Interrupt_Handler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + out/startup/interrupt.o +Interrupt_Handler_Register out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_ir.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_hbn.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +Interrupt_Handler_Stub out/startup/interrupt.o +L1C_BMX_Addr_Monitor_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_Addr_Monitor_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_BusErrResponse_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_BusErrResponse_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_ERR_INT_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_ERR_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_ERR_IRQHandler_Wrapper out/startup/interrupt.o +L1C_BMX_Get_Err_Addr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_Get_Status out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_TIMEOUT_INT_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_TO_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o +L1C_BMX_TO_IRQHandler_Wrapper out/startup/interrupt.o +L1C_IROM_2T_Access_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +L1C_Set_Way_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +L1C_Set_Wrap out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +MAC_GEN_IRQHandler_Wrapper out/startup/interrupt.o +MAC_PORT_TRG_IRQHandler_Wrapper out/startup/interrupt.o +MAC_RX_TRG_IRQHandler_Wrapper out/startup/interrupt.o +MAC_TXRX_MISC_IRQHandler_Wrapper out/startup/interrupt.o +MAC_TXRX_TIMER_IRQHandler_Wrapper out/startup/interrupt.o +MAC_TX_TRG_IRQHandler_Wrapper out/startup/interrupt.o +PDS_Default_Level_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Disable_PLL_All_Clks out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Disable_PLL_Clk out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Enable_PLL_All_Clks out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Enable_PLL_Clk out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Force_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Get_IntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_Get_PdsPllStstus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_Get_PdsRfStstus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_Get_PdsStstus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_IntClear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_Power_Off_PLL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Power_On_PLL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_RAM_Config out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Select_RC32M_As_PLL_Ref out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Select_XTAL_As_PLL_Ref out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_Trim_RC32M out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +PDS_WAKEUP_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_WAKEUP_IRQHandler_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pds.o +PDS_WAKEUP_IRQHandler_Wrapper out/startup/interrupt.o +PWM_Channel_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Fource_Output out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Get out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Set_Div out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Set_Period out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Set_Threshold1 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Set_Threshold2 out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Channel_Update out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_IRQHandler_Wrapper out/startup/interrupt.o +PWM_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_SW_Force_Value out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_SW_Mode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PWM_Smart_Configure out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_pwm.o +PtTable_Create out/BSP_Common/partition/partition.o +PtTable_Flash_Erase out/BSP_Common/partition/partition.o +PtTable_Flash_Read out/BSP_Common/partition/partition.o +PtTable_Flash_Write out/BSP_Common/partition/partition.o +PtTable_Get_Active_Entries_By_ID out/BSP_Common/partition/partition.o +PtTable_Get_Active_Entries_By_Name out/BSP_Common/partition/partition.o +PtTable_Get_Active_Partition_Need_Lock out/BSP_Common/partition/partition.o +PtTable_Set_Flash_Operation out/BSP_Common/partition/partition.o +PtTable_Update_Entry out/BSP_Common/partition/partition.o +RF_TOP_INT0_IRQHandler_Wrapper out/startup/interrupt.o +RF_TOP_INT1_IRQHandler_Wrapper out/startup/interrupt.o +Ring_Buffer_Get_Empty_Length out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Get_Length out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Get_Status out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Init out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Peek out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Peek_Byte out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Read out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Read_Byte out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Read_Callback out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Reset out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Write out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Write_Byte out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Write_Byte_Force out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Write_Callback out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Write_Force out/BSP_Common/ring_buffer/ring_buffer.o +SDIO_IRQHandler_Wrapper out/startup/interrupt.o +SEC_AES_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_AES_IRQHandler_Wrapper out/startup/interrupt.o +SEC_BMX_ERR_IRQHandler_Wrapper out/startup/interrupt.o +SEC_CDET_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_CDET_IRQHandler_Wrapper out/startup/interrupt.o +SEC_Eng_ClrIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_Eng_GetIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_Eng_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_Eng_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_Eng_Turn_Off_Sec_Ring out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SEC_Eng_Turn_On_Sec_Ring out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SEC_GMAC_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_GMAC_IRQHandler_Wrapper out/startup/interrupt.o +SEC_PKA_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_PKA_IRQHandler_Wrapper out/startup/interrupt.o +SEC_SHA_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_SHA_IRQHandler_Wrapper out/startup/interrupt.o +SEC_TRNG_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +SEC_TRNG_IRQHandler_Wrapper out/startup/interrupt.o +SF_CTRL_IRQHandler_Wrapper out/startup/interrupt.o +SF_Cfg_Deinit_Ext_Flash_Gpio out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Cfg_Flash_Identify out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o +SF_Cfg_Flash_Identify_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SF_Cfg_Get_Flash_Cfg_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o +SF_Cfg_Get_Flash_Cfg_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o +SF_Cfg_Init_Ext_Flash_Gpio out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Cfg_Init_Flash_Gpio out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Cfg_Init_Internal_Flash_Gpio out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Cfg_Restore_GPIO17_Fun out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Enable_BE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Enable_LE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Set_IV out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Set_IV_BE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Set_Key out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Set_Key_BE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_AES_Set_Region out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_GetBusyState out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SF_Ctrl_Get_Clock_Delay out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Get_Flash_Image_Offset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SF_Ctrl_Icache2_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Icache_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Is_AES_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Select_Clock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Select_Pad out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_SendCmd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SF_Ctrl_Set_Clock_Delay out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SF_Ctrl_Set_Flash_Image_Offset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SF_Ctrl_Set_Owner out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Blk32_Erase out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Blk64_Erase out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Busy out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_Cache_Enable_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Cache_Flush out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Cache_Hit_Count_Get out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Cache_Miss_Count_Get out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Cache_Read_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Cache_Read_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Chip_Erase out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_DisableBurstWrap out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Erase out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Erase_Security_Register out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_GetDeviceId out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +SFlash_GetJedecId out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/main.o +SFlash_GetUniqueId out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +SFlash_IDbus_Read_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/main.o +SFlash_Powerdown out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Program out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Program_Security_Register out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_Qspi_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/main.o +SFlash_RCV_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Read_Reg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Read_Reg_With_Cmd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Read_Security_Register out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_Releae_Powerdown out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Reset_Continue_Read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Restore_From_Powerdown out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_Sector_Erase out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_SetBurstWrap out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_SetSPIMode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Set_IDbus_Cfg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o +SFlash_Software_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Volatile_Reg_Write_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +SFlash_Write_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Write_Reg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Write_Reg_With_Cmd out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SPI_ClockConfig out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_ClrIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_ClrRxFifo out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_ClrTxFifo out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_DeInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_FifoConfig out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_GetBusyStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_GetFifoStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_GetIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_GetRxFifoCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_GetTxFifoCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_IRQHandler_Wrapper out/startup/interrupt.o +SPI_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_ReceiveData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Recv_16bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Recv_24bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Recv_32bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Recv_8bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_RxIgnoreDisable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_RxIgnoreEnable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SendData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SendRecv_16bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SendRecv_24bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SendRecv_32bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SendRecv_8bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Send_16bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Send_24bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Send_32bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_Send_8bits out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SetClock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SetDeglitchCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SPI_SetTimeOutValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_spi.o +SdioFuncReg out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + out/ChipTest/Eflash_Loader/sdu.o +Sec_Dbg_Read_Chip_ID out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o +Sec_Dbg_Read_Dbg_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o +Sec_Dbg_Read_Dbg_Mode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o +Sec_Dbg_Read_WiFi_MAC out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_dbg.o +Sec_Eng_AES_Crypt out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_AES_Disable_Link out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Enable_BE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_AES_Enable_LE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Enable_Link out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Finish out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_AES_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_AES_Link_Work out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Set_Counter_Byte out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Set_Hw_Key_Src out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Set_Key_IV out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_AES_Set_Key_IV_BE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_GMAC_Disable_Link out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_GMAC_Enable_BE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_GMAC_Enable_LE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_GMAC_Enable_Link out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_GMAC_Link_Work out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_BigEndian_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_CREG out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_Clear_Int out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_GF2Mont out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_LADD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_LCMP out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_LDIV out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_LDIV2N out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_LMOD2N out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_LMUL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_LMUL2N out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_LSQR out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_LSUB out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_LittleEndian_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_MADD out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_MEXP out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_MINV out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_MMUL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_MREM out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_MSQR out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_MSUB out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_Mont2GF out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_Move_Data out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_NREG out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_RESIZE out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_Read_Block out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_Read_Data out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_Reset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_Write_Block out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_PKA_Write_Data out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_Write_Immediate out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_SHA256_Finish out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +Sec_Eng_SHA256_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +Sec_Eng_SHA256_Link_Finish out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_SHA256_Link_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_SHA256_Link_Update out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_SHA256_Update out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +Sec_Eng_SHA_Disable_Link out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_SHA_Enable_Link out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_SHA_Start out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +Sec_Eng_Trng_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +Sec_Eng_Trng_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_Trng_Int_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_Trng_Int_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_Trng_Int_Read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_Trng_Int_Read_Trigger out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o +Sec_Eng_Trng_Read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +ShaInbuf out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +SystemInit out/startup/system_bl602.o + out/startup/GCC/entry.o +System_Core_Clock_Update_From_RC32M out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +System_NVIC_SetPriority out/startup/system_bl602.o +TIMER_CH0_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_CH0_IRQHandler_Wrapper out/startup/interrupt.o +TIMER_CH1_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_CH1_IRQHandler_Wrapper out/startup/interrupt.o +TIMER_ClearIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_GetCompValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_GetCounterValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_GetMatchStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_GetPreloadValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_SetCompValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_SetCountMode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_SetPreloadTrigSrc out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_SetPreloadValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_WDT_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +TIMER_WDT_IRQHandler_Wrapper out/startup/interrupt.o +TSEN_Get_Temp out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +TSEN_Get_V_Error out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_adc.o +TZC_Sboot_Set out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o +TZC_Set_Rom0_R0_Protect out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o +TZC_Set_Rom0_R1_Protect out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o +TZC_Set_Rom1_R0_Protect out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o +TZC_Set_Rom1_R1_Protect out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_tzc_sec.o +Timer_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +Trap_Handler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + out/BSP_Common/FreeRTOS/portASM.o + out/startup/interrupt.o +Trap_Handler_Stub out/startup/interrupt.o +UART0_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART0_IRQHandler_Wrapper out/startup/interrupt.o +UART1_IRQHandler out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART1_IRQHandler_Wrapper out/startup/interrupt.o +UART_AutoBaudDetection out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_ClrRtsValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_DeInit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_FifoConfig out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_GetAutoBaudCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_GetBaudrate out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_GetIntStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_GetOverflowStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_GetRxBusBusyStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_GetRxFifoCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_GetTxBusBusyStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_GetTxFifoCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_IntClear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_IrConfig out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_ReceiveData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_RxFifoClear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_SendData out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_SendDataBlock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_SetBaudrate out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_SetDeglitchCount out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_SetRtsValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_SetRxDataLength out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_SetRxTimeoutValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_SetTxDataLength out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_TxFifoClear out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o +UART_TxFreeRun out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_uart.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +Update_SystemCoreClockWith_XTAL out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +WDT_ClearResetStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_Disable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_Enable out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_GetCounterValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_GetMatchValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_GetResetStatus out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_IntMask out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_Int_Callback_Install out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_ResetCounterValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_SetCompValue out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WDT_Set_Clock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +WIFI_IPC_PUBLIC_IRQHandler_Wrapper out/startup/interrupt.o +WIFI_IRQHandler_Wrapper out/startup/interrupt.o +XIP_SFlash_Erase out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Erase_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_Erase_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Erase_With_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_Erase_With_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_GetDeviceId_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_GetDeviceId_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_GetJedecId_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_GetJedecId_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_GetUniqueId_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_GetUniqueId_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Init out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Opt_Enter out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +XIP_SFlash_Opt_Exit out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +XIP_SFlash_RCV_Enable_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_RCV_Enable_With_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Read_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_Read_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Read_Via_Cache_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sf_cfg_ext.o + out/BSP_Common/partition/partition.o +XIP_SFlash_Read_With_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_Read_With_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_State_Restore out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_State_Restore_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_State_Save out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Write out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Write_Need_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_Write_Need_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +XIP_SFlash_Write_With_Lock out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_romapi.o +XIP_SFlash_Write_With_Lock_Ext out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o +__Interrupt_Handlers out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o +__StackTop out/startup/GCC/entry.o +__Vectors out/startup/interrupt.o + out/startup/GCC/entry.o + out/ChipTest/Eflash_Loader/main.o +__adddf3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + out/BSP_Common/libc/atof.o +__assert_func out/BSP_Common/libc/common.o +__bss_end__ out/startup/GCC/start_load.o +__bss_start__ out/startup/GCC/start_load.o +__clz_tab /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) +__clzsi2 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + out/3rdParty/FreeRTOS/Source/tasks.o +__ctypes out/BSP_Common/libc/ctypes.o + out/BSP_Common/libc/ctype_isxdigit.o + out/BSP_Common/libc/ctype_toupper.o + out/BSP_Common/libc/ctype_tolower.o + out/BSP_Common/libc/ctype_isupper.o + out/BSP_Common/libc/ctype_isspace.o + out/BSP_Common/libc/ctype_isprint.o + out/BSP_Common/libc/ctype_islower.o + out/BSP_Common/libc/ctype_ispunct.o + out/BSP_Common/libc/ctype_isgraph.o + out/BSP_Common/libc/ctype_iscntrl.o + out/BSP_Common/libc/ctype_isalpha.o + out/BSP_Common/libc/ctype_isalnum.o +__divdf3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + out/BSP_Common/libc/atof.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +__dtcm_load_addr out/startup/GCC/start_load.o +__fixdfsi /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixdfsi.o) + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +__fixunsdfsi /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +__floatsidf /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + out/BSP_Common/libc/atof.o +__floatunsidf /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +__freertos_irq_stack_top out/BSP_Common/FreeRTOS/port.o +__global_pointer$ out/startup/GCC/entry.o +__itcm_load_addr out/startup/GCC/start_load.o +__metal_after_main out/startup/GCC/entry.o +__metal_chicken_bit out/startup/GCC/entry.o +__muldf3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + out/BSP_Common/libc/atof.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +__ram_data_end__ out/startup/GCC/start_load.o +__ram_data_start__ out/startup/GCC/start_load.o +__ram_load_addr out/startup/GCC/start_load.o +__rand48_seed out/BSP_Common/libc/lrand48.o + out/BSP_Common/libc/srand48.o + out/BSP_Common/libc/seed48.o + out/BSP_Common/libc/mrand48.o +__register_frame_info out/startup/GCC/entry.o +__strxspn out/BSP_Common/libc/strxspn.o + out/BSP_Common/libc/strpbrk.o + out/BSP_Common/libc/strspn.o + out/BSP_Common/libc/strcspn.o +__system_ram_data_end__ out/startup/GCC/start_load.o +__system_ram_data_start__ out/startup/GCC/start_load.o +__system_ram_load_addr out/startup/GCC/start_load.o +__tcm_code_end__ out/startup/GCC/start_load.o +__tcm_code_start__ out/startup/GCC/start_load.o +__tcm_data_end__ out/startup/GCC/start_load.o +__tcm_data_start__ out/startup/GCC/start_load.o +__udivdi3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/libc/vsnprintf.o +__umoddi3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + out/BSP_Common/libc/vsnprintf.o +_enter out/startup/GCC/entry.o +atof out/BSP_Common/libc/atof.o +atoi out/BSP_Common/libc/atoi.o +atol out/BSP_Common/libc/atol.o +atoll out/BSP_Common/libc/atoll.o +bflb_clear_flash_status_register out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_crypt_auth_decrypt out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_auth_decrypt_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_decrypt out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_decrypt_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_deinit out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_deinit_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_encrypt out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_encrypt_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_encrypt_tag out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_encrypt_tag_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_finish out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_finish_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_init out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_init_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_setadd out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_setadd_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_setkey out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_setkey_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_update out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_update_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_dsa_decrypt_crt out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_init out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_mexp_binary out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_mexp_mont out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_sign out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_verify out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_ecc_get_random_value out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdh_deinit out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdh_get_encrypt_key out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdh_get_public_key out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdh_init out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_deinit out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_get_private_key out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_get_public_key out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_init out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_sign out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_verify out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_eflash_loader_boot out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bflb_eflash_loader_boot_init out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bflb_eflash_loader_boot_main out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_eflash_loader_boot_pre_jump out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bflb_eflash_loader_boot_read out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bflb_eflash_loader_cache_enable out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bflb_eflash_loader_clk_set_from_user out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bflb_eflash_loader_cmd_init out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_cmd_process out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_deinit_sdio_gpio out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +bflb_eflash_loader_deinit_uart_gpio out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +bflb_eflash_loader_deinit_uart_gpio_do out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +bflb_eflash_loader_disable_cci_sdio_co_exsit out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +bflb_eflash_loader_if_deinit out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_handshake_poll out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_init out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_read out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_select out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_set out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_wait_tx_idle out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_write out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_init_flash_gpio out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bflb_eflash_loader_init_sdio_gpio out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_init_uart_gpio out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +bflb_eflash_loader_interface_deinit out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bflb_eflash_loader_interface_init out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + out/ChipTest/Eflash_Loader/main.o +bflb_eflash_loader_jlink_change_rate out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o +bflb_eflash_loader_jlink_deinit out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_jlink_handshake_poll out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_jlink_init out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_jlink_recv out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_jlink_send out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_jlink_wait_tx_idle out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_main out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + out/ChipTest/Eflash_Loader/main.o +bflb_eflash_loader_no_header_boot_enable out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bflb_eflash_loader_parse_bootheader out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bflb_eflash_loader_sdio_deinit out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_sdio_handshake_poll out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_sdio_init out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_sdio_recv out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_sdio_send out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_sdio_wait_tx_idle out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_uart_change_rate out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +bflb_eflash_loader_uart_deinit out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_uart_handshake_poll out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_uart_init out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_uart_recv out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_uart_send out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_usart_wait_tx_idle out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_efuse_read out/ChipTest/Eflash_Loader/bflb_efuse.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_efuse_write out/ChipTest/Eflash_Loader/bflb_efuse.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_hash_deinit out/BSP_Common/cipher_suite/bflb_hash.o +bflb_hash_finish out/BSP_Common/cipher_suite/bflb_hash.o +bflb_hash_init out/BSP_Common/cipher_suite/bflb_hash.o +bflb_hash_start out/BSP_Common/cipher_suite/bflb_hash.o +bflb_hash_update out/BSP_Common/cipher_suite/bflb_hash.o +bflb_plat_uart_debug_port_set out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_clear_time out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/sdu.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_platform_deinit out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bflb_platform_deinit_time out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_deinit_uart_debug_gpio out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_delay_ms out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_platform_dump out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_get_log out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_platform_get_random out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_platform_get_time_ms out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/sdu.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o +bflb_platform_get_time_us out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_init out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + out/ChipTest/Eflash_Loader/main.o +bflb_platform_init_time out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_init_uart_debug_gpio out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_gpio.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_print_set out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_printc out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_printf out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_l1c.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_glb.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_common.o + out/BSP_Common/xz/xz_port.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/BSP_Common/cipher_suite/bflb_crypt.o + out/ChipTest/Eflash_Loader/sdu.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/main.o +bflb_platform_prints out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_printx out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_set_alarm_time out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_set_alarm_time_callback out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_start_time out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_stop_time out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_uart_dbg_deinit out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_uart_dbg_init out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_platform_usart_dbg_send out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o +bflb_qe_data_clear out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_set_flash_clock_div out/ChipTest/Eflash_Loader/bflb_set_clock.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_set_high_speed_flash_clock out/ChipTest/Eflash_Loader/bflb_set_clock.o + out/ChipTest/Eflash_Loader/main.o +bflb_set_high_speed_system_clock out/ChipTest/Eflash_Loader/bflb_set_clock.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/main.o +bflb_set_low_speed_flash_clock out/ChipTest/Eflash_Loader/bflb_set_clock.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/main.o +bflb_set_low_speed_system_clock out/ChipTest/Eflash_Loader/bflb_set_clock.o +bflb_spi_flash_boot out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bflb_spi_flash_chiperase out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_deinit out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_spi_flash_erase out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_init out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/main.o +bflb_spi_flash_program out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_read out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bflb_spi_flash_read_jedec_id out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_read_sahb out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_read_sahb_xip out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_spi_flash_read_status_reg_with_cmd out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_read_xip out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_sbus_xip_read_init out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_spi_flash_set_io_mode out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_update_cfg out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_spi_flash_update_controller out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_spi_flash_update_para out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_write_status_reg_with_cmd out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_xip_read_exit out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_xip_read_init out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bootMode out/ChipTest/Eflash_Loader/main.o +boot_cpu_cfg out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +bootrom_read_boot_mode out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + out/ChipTest/Eflash_Loader/main.o +bsearch out/BSP_Common/libc/bsearch.o +calloc out/BSP_Common/libc/stdlib.o +chCRCHTalbe out/BSP_Common/soft_crc/softcrc.o +chCRCLTalbe out/BSP_Common/soft_crc/softcrc.o +checkBuf out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +clic_clear_pending out/startup/interrupt.o + out/ChipTest/Eflash_Loader/sdu.o +clic_csoft_handler_Wrapper out/startup/interrupt.o +clic_disable_interrupt out/startup/interrupt.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + out/ChipTest/Eflash_Loader/sdu.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +clic_enable_interrupt out/startup/interrupt.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_dma.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +clic_get_cliccfg out/startup/interrupt.o +clic_get_intcfg out/startup/interrupt.o +clic_mext_handler_Wrapper out/startup/interrupt.o +clic_msip_handler_Wrapper out/startup/interrupt.o +clic_mtimer_handler_Wrapper out/startup/interrupt.o +clic_set_cliccfg out/startup/interrupt.o +clic_set_intcfg out/startup/interrupt.o +clic_set_pending out/startup/interrupt.o +crc32Tab out/BSP_Common/soft_crc/softcrc.o + out/BSP_Common/xz/xz_crc32.o +eTaskGetState out/3rdParty/FreeRTOS/Source/tasks.o +eflash_loader_cmd_ack_buf out/ChipTest/Eflash_Loader/main.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +eflash_loader_dump_data out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +eflash_loader_if out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +eflash_loader_readbuf out/ChipTest/Eflash_Loader/main.o + out/ChipTest/Eflash_Loader/sdu.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +flag_mport out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o + out/ChipTest/Eflash_Loader/sdu.o +fnmatch out/BSP_Common/libc/fnmatch.o +free out/BSP_Common/libc/stdlib.o +freertos_risc_v_trap_handler out/BSP_Common/FreeRTOS/portASM.o +i2cIntCbfArra out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_i2c.o +image_cfg out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +isalnum out/BSP_Common/libc/ctype_isalnum.o +isalpha out/BSP_Common/libc/ctype_isalpha.o +isascii out/BSP_Common/libc/ctype_isascii.o +isblank out/BSP_Common/libc/ctype_isblank.o +iscntrl out/BSP_Common/libc/ctype_iscntrl.o +isdigit out/BSP_Common/libc/ctype_isdigit.o +isgraph out/BSP_Common/libc/ctype_isgraph.o +islower out/BSP_Common/libc/ctype_islower.o +isprint out/BSP_Common/libc/ctype_isprint.o +ispunct out/BSP_Common/libc/ctype_ispunct.o +isspace out/BSP_Common/libc/ctype_isspace.o + out/BSP_Common/libc/strntoumax.o + out/BSP_Common/libc/vsscanf.o + out/BSP_Common/libc/atof.o +isupper out/BSP_Common/libc/ctype_isupper.o +isxdigit out/BSP_Common/libc/ctype_isxdigit.o +jid out/ChipTest/Eflash_Loader/main.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +jrand48 out/BSP_Common/libc/jrand48.o + out/BSP_Common/libc/nrand48.o + out/BSP_Common/libc/mrand48.o + out/BSP_Common/libc/lrand48.o +lrand48 out/BSP_Common/libc/lrand48.o +main out/ChipTest/Eflash_Loader/main.o + out/startup/GCC/entry.o + out/BSP_Common/partition/partition.o +malloc out/BSP_Common/libc/stdlib.o +memccpy out/BSP_Common/libc/memccpy.o +memchr out/BSP_Common/libc/memchr.o +memcmp out/BSP_Common/libc/memcmp.o + out/BSP_Common/partition/partition.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/libc/memmem.o +memcpy out/BSP_Common/libc/memcpy.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_xip_sflash_ext.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +memmem out/BSP_Common/libc/memmem.o + out/BSP_Common/libc/strstr.o +memmove /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + out/BSP_Common/xz/xz_dec_lzma2.o +memrchr out/BSP_Common/libc/memrchr.o +memset out/BSP_Common/libc/memset.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sec_eng.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/BSP_Common/libc/strxspn.o + out/BSP_Common/libc/strncpy.o +memswap out/BSP_Common/libc/memswap.o + out/BSP_Common/libc/qsort.o +mfg_efuse_get_rf_cal_slots out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_is_macaddr_slot_empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_is_poweroffset_slot_empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_is_xtal_capcode_slot_empty out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_program out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_read out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_read_macaddr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_read_poweroffset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_read_xtal_capcode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_set_rf_cal_slots out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_macaddr out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_macaddr_pre out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_poweroffset out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_poweroffset_pre out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_pre out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_xtal_capcode out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mfg_efuse_write_xtal_capcode_pre out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_mfg_efuse.o +mrand48 out/BSP_Common/libc/mrand48.o +notch_p out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +nrand48 out/BSP_Common/libc/nrand48.o +otp_cfg out/ChipTest/Eflash_Loader/bflb_eflash_loader_boot.o +padding out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +pcQueueGetName out/3rdParty/FreeRTOS/Source/queue.o +pcTaskGetName out/3rdParty/FreeRTOS/Source/tasks.o +pcTimerGetName out/3rdParty/FreeRTOS/Source/timers.o +pullMachineTimerCompareRegister out/BSP_Common/FreeRTOS/port.o + out/BSP_Common/FreeRTOS/portASM.o +pullMachineTimerCompareRegisterBase out/BSP_Common/FreeRTOS/port.o +pullNextTime out/BSP_Common/FreeRTOS/port.o + out/BSP_Common/FreeRTOS/portASM.o +pvPortMalloc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/tasks.o +pvTaskIncrementMutexHeldCount out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +pvTimerGetTimerID out/3rdParty/FreeRTOS/Source/timers.o +pxCurrentTCB out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Common/FreeRTOS/portASM.o +pxPortInitialiseStack out/BSP_Common/FreeRTOS/portASM.o + out/3rdParty/FreeRTOS/Source/tasks.o +qsort out/BSP_Common/libc/qsort.o +rand out/BSP_Common/libc/lrand48.o +random out/BSP_Common/libc/lrand48.o +realloc out/BSP_Common/libc/stdlib.o +rf_calib_data out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o + out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_config_bandwidth out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_fcal out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_full_cal out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_get_txgain_index out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_get_txgain_max out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_get_txgain_min out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_get_vco_freq_cw out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_get_vco_idac_cw out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_init out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_init_calib_mem out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_calib_data.o +rf_pri_init_fast out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_lo_acal out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_notch_param out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_query_txgain_table out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_rccal out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_restore_cal_reg out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_roscal out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_tcal_glb out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_tx_gain_comp out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_txcal out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_dvga_os out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_param out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_power_offset out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_tcal_param out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_tx_power_offset out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_tx_power_offset_res out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_update_txgain_tempos out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rf_pri_xtalfreq out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rfc_apply_tx_dvga out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +rx_buf_index out/ChipTest/Eflash_Loader/main.o + out/ChipTest/Eflash_Loader/sdu.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +rx_buf_len out/ChipTest/Eflash_Loader/main.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +sdio_GEN_CARD2HOST_INT out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o +sdio_ioctl out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_sdu.o +sdu_deinit out/ChipTest/Eflash_Loader/sdu.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +sdu_host_check out/ChipTest/Eflash_Loader/sdu.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o +sdu_init out/ChipTest/Eflash_Loader/sdu.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +sdu_receive_data out/ChipTest/Eflash_Loader/sdu.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o +sdu_send_data out/ChipTest/Eflash_Loader/sdu.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_sdio.o +secp256r1B out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1Gx out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1Gy out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1InvR_N out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1InvR_P out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1N out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1P out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1PrimeN_N out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1PrimeN_P out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_1 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_1M1 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_1P1 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_BAR2 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_BAR3 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_BAR4 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_BAR8 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_Gx out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_Gy out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_Zerox out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_Zeroy out/BSP_Common/cipher_suite/bflb_ecdsa.o +seed48 out/BSP_Common/libc/seed48.o +shaTmpBuf out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +simple_free out/BSP_Common/xz/xz_port.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_dec_lzma2.o +simple_malloc out/BSP_Common/xz/xz_port.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_dec_lzma2.o +simple_malloc_init out/BSP_Common/xz/xz_port.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +snprintf out/BSP_Common/libc/snprintf.o +sprintf out/BSP_Common/libc/sprintf.o + out/3rdParty/FreeRTOS/Source/tasks.o +srand out/BSP_Common/libc/srand48.o +srand48 out/BSP_Common/libc/srand48.o +srandom out/BSP_Common/libc/srand48.o +sscanf out/BSP_Common/libc/sscanf.o +start_load out/startup/GCC/start_load.o + out/startup/GCC/entry.o +strcasecmp out/BSP_Common/libc/strcasecmp.o +strcat out/BSP_Common/libc/strcat.o +strchr out/BSP_Common/libc/strchr.o +strcmp out/BSP_Common/libc/strcmp.o +strcpy out/BSP_Common/libc/strcpy.o + out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Common/libc/strcat.o +strcspn out/BSP_Common/libc/strcspn.o +strlcat out/BSP_Common/libc/strlcat.o +strlcpy out/BSP_Common/libc/strlcpy.o +strlen out/BSP_Common/libc/strlen.o + out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/partition/partition.o + out/BSP_Common/libc/strstr.o + out/BSP_Common/libc/strncat.o + out/BSP_Common/libc/strlcat.o + out/BSP_Common/libc/strcat.o + out/BSP_Common/libc/vsnprintf.o + out/BSP_Common/libc/atof.o +strncasecmp out/BSP_Common/libc/strncasecmp.o +strncat out/BSP_Common/libc/strncat.o +strncmp out/BSP_Common/libc/strncmp.o +strncpy out/BSP_Common/libc/strncpy.o +strnlen out/BSP_Common/libc/strnlen.o +strntof out/BSP_Common/libc/atof.o +strntoimax out/BSP_Common/libc/strntoimax.o +strntoumax out/BSP_Common/libc/strntoumax.o + out/BSP_Common/libc/strntoimax.o + out/BSP_Common/libc/strtoumax.o + out/BSP_Common/libc/strtoimax.o + out/BSP_Common/libc/strtoull.o + out/BSP_Common/libc/strtoul.o + out/BSP_Common/libc/strtoll.o + out/BSP_Common/libc/strtol.o + out/BSP_Common/libc/vsscanf.o + out/BSP_Common/libc/atoll.o + out/BSP_Common/libc/atol.o + out/BSP_Common/libc/atoi.o +strpbrk out/BSP_Common/libc/strpbrk.o + out/BSP_Common/libc/strsep.o +strrchr out/BSP_Common/libc/strrchr.o +strsep out/BSP_Common/libc/strsep.o + out/BSP_Common/libc/strtok_r.o +strspn out/BSP_Common/libc/strspn.o +strstr out/BSP_Common/libc/strstr.o +strtof out/BSP_Common/libc/common.o +strtoimax out/BSP_Common/libc/strtoimax.o +strtok out/BSP_Common/libc/strtok.o +strtok_r out/BSP_Common/libc/strtok_r.o + out/BSP_Common/libc/strtok.o +strtol out/BSP_Common/libc/strtol.o +strtoll out/BSP_Common/libc/strtoll.o +strtoul out/BSP_Common/libc/strtoul.o +strtoull out/BSP_Common/libc/strtoull.o +strtoumax out/BSP_Common/libc/strtoumax.o +system_bor_init out/startup/system_bl602.o +tcal_param out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +timerIntCbfArra out/BSP_Driver/BL602_BSP_Driver/StdDriver/bl602_timer.o +tolower out/BSP_Common/libc/ctype_tolower.o +toupper out/BSP_Common/libc/ctype_toupper.o + out/BSP_Common/libc/strncasecmp.o + out/BSP_Common/libc/strcasecmp.o +tp_index out/BSP_Driver/BL602_BSP_Driver/RFDriver/bl602_rf_private.o +ucQueueGetQueueType out/3rdParty/FreeRTOS/Source/queue.o +ucStreamBufferGetStreamBufferType out/3rdParty/FreeRTOS/Source/stream_buffer.o +ulTaskNotifyTake out/3rdParty/FreeRTOS/Source/tasks.o +ullNextTime out/BSP_Common/FreeRTOS/port.o +uxListRemove out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o +uxQueueGetQueueNumber out/3rdParty/FreeRTOS/Source/queue.o +uxQueueMessagesWaiting out/3rdParty/FreeRTOS/Source/queue.o +uxQueueMessagesWaitingFromISR out/3rdParty/FreeRTOS/Source/queue.o +uxQueueSpacesAvailable out/3rdParty/FreeRTOS/Source/queue.o +uxStreamBufferGetStreamBufferNumber out/3rdParty/FreeRTOS/Source/stream_buffer.o +uxTaskGetNumberOfTasks out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskGetSystemState out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskGetTaskNumber out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskPriorityGet out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskPriorityGetFromISR out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskResetEventItemValue out/3rdParty/FreeRTOS/Source/tasks.o +uxTimerGetTimerNumber out/3rdParty/FreeRTOS/Source/timers.o +uxTimerIncrementsForOneTick out/BSP_Common/FreeRTOS/port.o + out/BSP_Common/FreeRTOS/portASM.o +vApplicationGetIdleTaskMemory out/3rdParty/FreeRTOS/Source/tasks.o +vApplicationGetTimerTaskMemory out/3rdParty/FreeRTOS/Source/timers.o +vApplicationMallocFailedHook out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +vApplicationStackOverflowHook out/3rdParty/FreeRTOS/Source/tasks.o +vApplicationTickHook out/3rdParty/FreeRTOS/Source/tasks.o +vAssertCalled out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Common/FreeRTOS/port.o +vListInitialise out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/tasks.o +vListInitialiseItem out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o +vListInsert out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o +vListInsertEnd out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/tasks.o +vPortDefineHeapRegions out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +vPortEndScheduler out/BSP_Common/FreeRTOS/port.o + out/3rdParty/FreeRTOS/Source/tasks.o +vPortFree out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/tasks.o +vPortGetHeapStats out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +vPortSetupTimerInterrupt out/BSP_Common/FreeRTOS/port.o +vQueueAddToRegistry out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +vQueueDelete out/3rdParty/FreeRTOS/Source/queue.o +vQueueSetQueueNumber out/3rdParty/FreeRTOS/Source/queue.o +vQueueUnregisterQueue out/3rdParty/FreeRTOS/Source/queue.o +vQueueWaitForMessageRestricted out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +vStreamBufferDelete out/3rdParty/FreeRTOS/Source/stream_buffer.o +vStreamBufferSetStreamBufferNumber out/3rdParty/FreeRTOS/Source/stream_buffer.o +vTaskDelay out/3rdParty/FreeRTOS/Source/tasks.o +vTaskDelayUntil out/3rdParty/FreeRTOS/Source/tasks.o +vTaskDelete out/3rdParty/FreeRTOS/Source/tasks.o +vTaskEndScheduler out/3rdParty/FreeRTOS/Source/tasks.o +vTaskEnterCritical out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskExitCritical out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskGetInfo out/3rdParty/FreeRTOS/Source/tasks.o +vTaskInternalSetTimeOutState out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskList out/3rdParty/FreeRTOS/Source/tasks.o +vTaskMissedYield out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskNotifyGiveFromISR out/3rdParty/FreeRTOS/Source/tasks.o +vTaskPlaceOnEventList out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskPlaceOnEventListRestricted out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskPlaceOnUnorderedEventList out/3rdParty/FreeRTOS/Source/tasks.o +vTaskPriorityDisinheritAfterTimeout out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskPrioritySet out/3rdParty/FreeRTOS/Source/tasks.o +vTaskRemoveFromUnorderedEventList out/3rdParty/FreeRTOS/Source/tasks.o +vTaskResume out/3rdParty/FreeRTOS/Source/tasks.o +vTaskSetTaskNumber out/3rdParty/FreeRTOS/Source/tasks.o +vTaskSetTimeOutState out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +vTaskStartScheduler out/3rdParty/FreeRTOS/Source/tasks.o +vTaskSuspend out/3rdParty/FreeRTOS/Source/tasks.o +vTaskSuspendAll out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskSwitchContext out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Common/FreeRTOS/portASM.o +vTimerSetReloadMode out/3rdParty/FreeRTOS/Source/timers.o +vTimerSetTimerID out/3rdParty/FreeRTOS/Source/timers.o +vTimerSetTimerNumber out/3rdParty/FreeRTOS/Source/timers.o +vsnprintf out/BSP_Common/libc/vsnprintf.o + out/BSP_Driver/BL602_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/libc/vsprintf.o + out/BSP_Common/libc/sprintf.o + out/BSP_Common/libc/snprintf.o +vsprintf out/BSP_Common/libc/vsprintf.o +vsscanf out/BSP_Common/libc/vsscanf.o + out/BSP_Common/libc/sscanf.o +xISRStackTop out/BSP_Common/FreeRTOS/port.o + out/BSP_Common/FreeRTOS/portASM.o +xPortGetFreeHeapSize out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +xPortGetMinimumEverFreeHeapSize out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +xPortStartFirstTask out/BSP_Common/FreeRTOS/portASM.o + out/BSP_Common/FreeRTOS/port.o +xPortStartScheduler out/BSP_Common/FreeRTOS/port.o + out/3rdParty/FreeRTOS/Source/tasks.o +xQueueCreateCountingSemaphore out/3rdParty/FreeRTOS/Source/queue.o +xQueueCreateCountingSemaphoreStatic out/3rdParty/FreeRTOS/Source/queue.o +xQueueCreateMutex out/3rdParty/FreeRTOS/Source/queue.o +xQueueCreateMutexStatic out/3rdParty/FreeRTOS/Source/queue.o +xQueueGenericCreate out/3rdParty/FreeRTOS/Source/queue.o +xQueueGenericCreateStatic out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +xQueueGenericReset out/3rdParty/FreeRTOS/Source/queue.o +xQueueGenericSend out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +xQueueGenericSendFromISR out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +xQueueGetMutexHolder out/3rdParty/FreeRTOS/Source/queue.o +xQueueGetMutexHolderFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueGiveFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueGiveMutexRecursive out/3rdParty/FreeRTOS/Source/queue.o +xQueueIsQueueEmptyFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueIsQueueFullFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueuePeek out/3rdParty/FreeRTOS/Source/queue.o +xQueuePeekFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueReceive out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +xQueueReceiveFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueRegistry out/3rdParty/FreeRTOS/Source/queue.o +xQueueSemaphoreTake out/3rdParty/FreeRTOS/Source/queue.o +xQueueTakeMutexRecursive out/3rdParty/FreeRTOS/Source/queue.o +xStreamBufferBytesAvailable out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferGenericCreate out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferGenericCreateStatic out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferIsEmpty out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferIsFull out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferNextMessageLengthBytes out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferReceive out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferReceiveCompletedFromISR out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferReceiveFromISR out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferReset out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSend out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSendCompletedFromISR out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSendFromISR out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSetTriggerLevel out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSpacesAvailable out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskAbortDelay out/3rdParty/FreeRTOS/Source/tasks.o +xTaskCatchUpTicks out/3rdParty/FreeRTOS/Source/tasks.o +xTaskCheckForTimeOut out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskCreate out/3rdParty/FreeRTOS/Source/tasks.o +xTaskCreateStatic out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/timers.o +xTaskGenericNotify out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskGenericNotifyFromISR out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskGetCurrentTaskHandle out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskGetHandle out/3rdParty/FreeRTOS/Source/tasks.o +xTaskGetSchedulerState out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskGetTickCount out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/timers.o +xTaskGetTickCountFromISR out/3rdParty/FreeRTOS/Source/tasks.o +xTaskIncrementTick out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Common/FreeRTOS/portASM.o +xTaskNotifyStateClear out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskNotifyWait out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskPriorityDisinherit out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskPriorityInherit out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskRemoveFromEventList out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskResumeAll out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskResumeFromISR out/3rdParty/FreeRTOS/Source/tasks.o +xTimerCreate out/3rdParty/FreeRTOS/Source/timers.o +xTimerCreateStatic out/3rdParty/FreeRTOS/Source/timers.o +xTimerCreateTimerTask out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o +xTimerGenericCommand out/3rdParty/FreeRTOS/Source/timers.o +xTimerGetExpiryTime out/3rdParty/FreeRTOS/Source/timers.o +xTimerGetPeriod out/3rdParty/FreeRTOS/Source/timers.o +xTimerGetTimerDaemonTaskHandle out/3rdParty/FreeRTOS/Source/timers.o +xTimerIsTimerActive out/3rdParty/FreeRTOS/Source/timers.o +xTimerPendFunctionCall out/3rdParty/FreeRTOS/Source/timers.o +xTimerPendFunctionCallFromISR out/3rdParty/FreeRTOS/Source/timers.o +xtalType out/ChipTest/Eflash_Loader/main.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +xtal_clk out/ChipTest/Eflash_Loader/main.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +xz_BSP_get_dict_buffer out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +xz_BSP_get_output_size out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +xz_BSP_get_work_buffer out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +xz_BSP_init out/ChipTest/Eflash_Loader/bflb_eflash_loader_cfg.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +xz_crc32 out/BSP_Common/xz/xz_crc32.o + out/BSP_Common/xz/xz_dec_stream.o +xz_crc32_init out/BSP_Common/xz/xz_crc32.o + out/BSP_Common/xz/xz_decompress.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +xz_dec_end out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_decompress.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +xz_dec_init out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_decompress.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +xz_dec_lzma2_create out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/xz/xz_dec_stream.o +xz_dec_lzma2_end out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/xz/xz_dec_stream.o +xz_dec_lzma2_reset out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/xz/xz_dec_stream.o +xz_dec_lzma2_run out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/xz/xz_dec_stream.o +xz_dec_reset out/BSP_Common/xz/xz_dec_stream.o +xz_dec_run out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_decompress.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +xz_uncompress_end out/BSP_Common/xz/xz_decompress.o +xz_uncompress_init out/BSP_Common/xz/xz_decompress.o +xz_uncompress_stream out/BSP_Common/xz/xz_decompress.o diff --git a/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_24m.bin b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_24m.bin new file mode 100644 index 00000000..0d978b93 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_24m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_26m.bin b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_26m.bin new file mode 100644 index 00000000..6a7f19e5 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_26m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_32m.bin b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_32m.bin new file mode 100644 index 00000000..689391a0 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_32m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_38p4m.bin b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_38p4m.bin new file mode 100644 index 00000000..a8156400 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_38p4m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_40m.bin b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_40m.bin new file mode 100644 index 00000000..734641ca Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_40m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_cfg.conf b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_cfg.conf new file mode 100644 index 00000000..14e6571f --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_cfg.conf @@ -0,0 +1,56 @@ +[LOAD_CFG] +#jlink or uart +interface = uart +device = COM1 +speed_uart_boot = 500000 +speed_uart_load = 500000 +speed_jlink = 2000 +openocd_config = ft2232 +#0:without load, 1:eflash_loader load +load_function = 1 +auto_burn = false +do_reset = true +#reset retry+reset hold time +reset_hold_time = 5 +shake_hand_delay = 100 +reset_revert = false +#cutoff revert+cutoff time +cutoff_time = 100 +shake_hand_retry = 2 +flash_burn_retry = 1 +checksum_err_retry = 3 +boot2_loader_timeout = 0 +#1:24M, 2:32M, 3:38.4M, 4:40M, 5:26M, 6:RC32M +#xtal_type = 4 +erase_time_out = 15000 +#chiptype=602 +eflash_loader_file = chips/bl602/eflash_loader/eflash_loader_40m.bin +check_mac = false +#0:no erase,1:programmed section erase,2:chip erase +erase = 1 +# switch eflash_loader command log save +local_log = false +#0:verify by calculating SHA256(xip), >0:read back verify and verify by calculating SHA256(sbus) +verify = 0 +tx_size = 2056 +cpu_reset_after_load = false + +[FLASH_CFG] +flash_id = ef4015 +flash_clock_cfg = 1 +#0:NIO, 1:DO, 2:QO, 3:DIO, 4:QIO +flash_io_mode = 1 +#empty: auto,0: internal flash with io switch,1: internal flash no io switch,2: GPIO 17-22,3: GPIO 0-2&20-22 +flash_pin = "" +#empty for auto, otherwise specified para file path: eg: chips/bl602/efuse_bootheader/flash_para.bin +flash_para = chips/bl602/efuse_bootheader/flash_para.bin +decompress_write = true +file = chips/bl602/img_create/bootinfo_boot2.bin chips/bl602/img_create/img_boot2.bin chips/bl602/partition/partition.bin chips/bl602/partition/partition.bin +address = 00000000 00002000 e000 f000 + +[EFUSE_CFG] +burn_en = true +factory_mode = false +security_write = false +file = ../../../Tools/img_tools/efuse_bootheader/efusedata.bin +maskfile = ../../../Tools/img_tools/efuse_bootheader/efusedata_mask.bin diff --git a/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_none.bin b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_none.bin new file mode 100644 index 00000000..9242cb85 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_none.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_rc32m.bin b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_rc32m.bin new file mode 100644 index 00000000..3af11185 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl602/eflash_loader/eflash_loader_rc32m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl602/efuse_bootheader/efuse_bootheader_cfg.conf b/tools/bflb_flash_tool/chips/bl602/efuse_bootheader/efuse_bootheader_cfg.conf new file mode 100644 index 00000000..58ce971e --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/efuse_bootheader/efuse_bootheader_cfg.conf @@ -0,0 +1,196 @@ +[EFUSE_CFG] +######################################################################## +#2bits +ef_sf_aes_mode = 0 +#2bits +ef_sboot_sign_mode = 0 +#2bits +ef_sboot_en = 0 +#2bits +ef_dbg_jtag_dis = 0 +#4bits +ef_dbg_mode = 0 +#32bits +ef_dbg_pwd_low = 0 +#32bits +ef_dbg_pwd_high = 0 +#2bits +flash_pwr_delay = 0 +################################################################### +ef_key_slot_2_w0 = 0 +ef_key_slot_2_w1 = 0 +ef_key_slot_2_w2 = 0 +ef_key_slot_2_w3 = 0 +ef_key_slot_3_w0 = 0 +ef_key_slot_3_w1 = 0 +ef_key_slot_3_w2 = 0 +ef_key_slot_3_w3 = 0 +ef_key_slot_4_w0 = 0 +ef_key_slot_4_w1 = 0 +ef_key_slot_4_w2 = 0 +ef_key_slot_4_w3 = 0 + +wr_lock_key_slot_4_l = 0 +wr_lock_dbg_pwd = 0 +wr_lock_key_slot_2 = 0 +wr_lock_key_slot_3 = 0 +wr_lock_key_slot_4_h = 0 +rd_lock_dbg_pwd = 0 +rd_lock_key_slot_2 = 0 +rd_lock_key_slot_3 = 0 +rd_lock_key_slot_4 = 0 + +[BOOTHEADER_CFG] +magic_code = 0x504e4642 +revision = 0x01 +#########################flash cfg############################# +flashcfg_magic_code = 0x47464346 +#flashcfg_magic_code=0 +io_mode = 4 +cont_read_support = 1 +#0.5T sfctrl_clk_delay=0 sfctrl_clk_invert=3 +#1 T sfctrl_clk_delay=1 sfctrl_clk_invert=1 +#1.5T sfctrl_clk_delay=1 sfctrl_clk_invert=3 +sfctrl_clk_delay = 1 +sfctrl_clk_invert = 0x01 + +reset_en_cmd = 0x66 +reset_cmd = 0x99 +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 + +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 + +sector_size = 4 +mfg_id = 0xc8 +page_size = 256 + +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 + +write_enable_cmd = 0x06 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 + +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 + +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 + +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 + +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 + +wel_reg_index = 0 +qe_reg_index = 1 +busy_reg_index = 0 +wel_bit_pos = 1 + +qe_bit_pos = 1 +busy_bit_pos = 0 +wel_reg_write_len = 2 +wel_reg_read_len = 1 + +qe_reg_write_len = 2 +qe_reg_read_len = 1 +release_power_down = 0xab +busy_reg_read_len = 1 + +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 + +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 + +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +cont_read_code = 0xa0 +cont_read_exit_code = 0xff + +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 + +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 + +sector_erase_time = 300 +blk32k_erase_time = 1200 + +blk64k_erase_time = 1200 +page_prog_time = 5 + +chip_erase_time = 200000 +power_down_delay = 20 +qe_data = 0 + +flashcfg_crc32 = 0 + +#########################clk cfg#################################### +clkcfg_magic_code = 0x47464350 +#clkcfg_magic_code=0 + +#0:Not use XTAL to set PLL,1:XTAL is 24M ,2:XTAL is 32M ,3:XTAL is 38.4M +#4:XTAL is 40M,5:XTAL is 26M,6:XTAL is RC32M +xtal_type = 4 +#0:RC32M,1:XTAL,2:PLL 48M,3:PLL 120M,4:PLL 160M,5:PLL 192M +pll_clk = 4 +hclk_div = 0 +bclk_div = 1 +#0:120M,1:XCLK(RC32M or XTAL),2:48M,3:80M,4:BCLK,5:96M +flash_clk_type = 3 +flash_clk_div = 1 +clkcfg_crc32 = 0 + +########################boot cfg#################################### +#1:ECC +sign = 0 +#1:AES128,2:AES256,3:AES192 +encrypt_type = 0 +key_sel = 0 +no_segment = 1 +cache_enable = 1 +notload_in_bootrom = 0 +aes_region_lock = 0 +cache_way_disable = 0x03 +crc_ignore = 0 +hash_ignore = 0 + +########################image cfg#################################### +#total image len or segment count +img_len = 0x100 +bootentry = 0 +#img RAM address or flash offset +img_start = 0x2000 + +#img hash +hash_0 = 0xdeadbeef +hash_1 = 0 +hash_2 = 0 +hash_3 = 0 +hash_4 = 0 +hash_5 = 0 +hash_6 = 0 +hash_7 = 0 + +crc32 = 0xdeadbeef diff --git a/tools/bflb_flash_tool/chips/bl602/img_create_iot/img_create_cfg.conf b/tools/bflb_flash_tool/chips/bl602/img_create_iot/img_create_cfg.conf new file mode 100644 index 00000000..3bb4fbad --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/img_create_iot/img_create_cfg.conf @@ -0,0 +1,15 @@ +[Img_Cfg] +boot_header_file = +efuse_file = +efuse_mask_file = +encrypt_key_org = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +aesiv_file = img_create/aesiv_cpu0.bin +publickey_file = img_create/publickey_uecc.pem +privatekey_file_uecc = img_create/privatekey_uecc.pem +segheader_file = img_create/segheader.bin +segdata_file = +bootinfo_file = +img_file = +whole_img_file = +aes_key_org = 00000000000000000000000000000000 +aes_iv = 00000000000000000000000000000000 diff --git a/tools/bflb_flash_tool/chips/bl602/img_create_iot/img_create_cfg_boot2.conf b/tools/bflb_flash_tool/chips/bl602/img_create_iot/img_create_cfg_boot2.conf new file mode 100644 index 00000000..1c886479 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/img_create_iot/img_create_cfg_boot2.conf @@ -0,0 +1,15 @@ +[Img_Cfg] +boot_header_file = +efuse_file = +efuse_mask_file = +encrypt_key_org = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +aesiv_file = img_create/aesiv.bin +publickey_file = img_create/publickey_uecc.pem +privatekey_file_uecc = img_create/privatekey_uecc.pem +segheader_file = img_create/segheader.bin +segdata_file = +bootinfo_file = +img_file = +whole_img_file = +aes_key_org = 11 +aes_iv = 11 diff --git a/tools/bflb_flash_tool/chips/bl602/img_create_iot/img_create_cfg_mfg.conf b/tools/bflb_flash_tool/chips/bl602/img_create_iot/img_create_cfg_mfg.conf new file mode 100644 index 00000000..0e34c3f8 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/img_create_iot/img_create_cfg_mfg.conf @@ -0,0 +1,13 @@ +[Img_Cfg] +boot_header_file = ./efuse_bootheader/bootheader.bin +efuse_file = ./efuse_bootheader/efusedata.bin +efuse_mask_file = ./efuse_bootheader/efusedata_mask.bin +encrypt_key_org = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +aesiv_file = ./img_create/aesiv.bin +publickey_file = ./img_create/publickey_uecc.pem +privatekey_file_uecc = ./img_create/privatekey_uecc.pem +segheader_file = ./img_create/segheader.bin +segdata_file = +bootinfo_file = ./img_create/bootinfo_mfg.bin +img_file = ./img_create/img_mfg.bin +whole_img_file = ./img_create/wholeimg_mfg_if.bin diff --git a/tools/bflb_flash_tool/chips/bl602/img_create_mcu/img_create_cfg.conf b/tools/bflb_flash_tool/chips/bl602/img_create_mcu/img_create_cfg.conf new file mode 100644 index 00000000..3bb4fbad --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/img_create_mcu/img_create_cfg.conf @@ -0,0 +1,15 @@ +[Img_Cfg] +boot_header_file = +efuse_file = +efuse_mask_file = +encrypt_key_org = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +aesiv_file = img_create/aesiv_cpu0.bin +publickey_file = img_create/publickey_uecc.pem +privatekey_file_uecc = img_create/privatekey_uecc.pem +segheader_file = img_create/segheader.bin +segdata_file = +bootinfo_file = +img_file = +whole_img_file = +aes_key_org = 00000000000000000000000000000000 +aes_iv = 00000000000000000000000000000000 diff --git a/tools/bflb_flash_tool/chips/bl602/img_create_mcu/img_create_cfg_boot2.conf b/tools/bflb_flash_tool/chips/bl602/img_create_mcu/img_create_cfg_boot2.conf new file mode 100644 index 00000000..1c886479 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/img_create_mcu/img_create_cfg_boot2.conf @@ -0,0 +1,15 @@ +[Img_Cfg] +boot_header_file = +efuse_file = +efuse_mask_file = +encrypt_key_org = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +aesiv_file = img_create/aesiv.bin +publickey_file = img_create/publickey_uecc.pem +privatekey_file_uecc = img_create/privatekey_uecc.pem +segheader_file = img_create/segheader.bin +segdata_file = +bootinfo_file = +img_file = +whole_img_file = +aes_key_org = 11 +aes_iv = 11 diff --git a/tools/bflb_flash_tool/chips/bl602/img_create_mcu/img_create_cfg_mfg.conf b/tools/bflb_flash_tool/chips/bl602/img_create_mcu/img_create_cfg_mfg.conf new file mode 100644 index 00000000..0e34c3f8 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/img_create_mcu/img_create_cfg_mfg.conf @@ -0,0 +1,13 @@ +[Img_Cfg] +boot_header_file = ./efuse_bootheader/bootheader.bin +efuse_file = ./efuse_bootheader/efusedata.bin +efuse_mask_file = ./efuse_bootheader/efusedata_mask.bin +encrypt_key_org = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +aesiv_file = ./img_create/aesiv.bin +publickey_file = ./img_create/publickey_uecc.pem +privatekey_file_uecc = ./img_create/privatekey_uecc.pem +segheader_file = ./img_create/segheader.bin +segdata_file = +bootinfo_file = ./img_create/bootinfo_mfg.bin +img_file = ./img_create/img_mfg.bin +whole_img_file = ./img_create/wholeimg_mfg_if.bin diff --git a/tools/bflb_flash_tool/chips/bl602/partition/partition_cfg_1M.toml b/tools/bflb_flash_tool/chips/bl602/partition/partition_cfg_1M.toml new file mode 100644 index 00000000..dfd33a57 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/partition/partition_cfg_1M.toml @@ -0,0 +1,94 @@ +[pt_table] +#partition table is 4K in size +address0 = 0xE000 +address1 = 0xF000 + +[[pt_entry]] +type = 0 +name = "FW" +device = 0 +address0 = 0x010000 +size0 = 0xE7000 +address1 = 0x000 +size1 = 0x000 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 2 +name = "mfg" +device = 0 +address0 = 0x000 +size0 = 0x000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 3 +name = "media" +device = 0 +address0 = 0x0F7000 +size0 = 0x2000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 4 +name = "PSM" +device = 0 +address0 = 0x0F9000 +size0 = 0x2000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 5 +name = "KEY" +device = 0 +address0 = 0x0000 +size0 = 0x000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 6 +name = "DATA" +device = 0 +address0 = 0x0000 +size0 = 0x000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + + +[[pt_entry]] +type = 7 +name = "factory" +device = 0 +address0 = 0x0FB000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +#if user want to put RF calibration data on flash, uncomment following pt entry +#[[pt_entry]] +#type = 8 +#name = "rf_para" +#device = 0 +#address0 = 0x1FF000 +#size0 = 0x1000 +#address1 = 0 +#size1 = 0 +## compressed image must set len,normal image can left it to 0 +#len = 0 diff --git a/tools/bflb_flash_tool/chips/bl602/partition/partition_cfg_1M_ota.toml b/tools/bflb_flash_tool/chips/bl602/partition/partition_cfg_1M_ota.toml new file mode 100644 index 00000000..6494d41a --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/partition/partition_cfg_1M_ota.toml @@ -0,0 +1,94 @@ +[pt_table] +#partition table is 4K in size +address0 = 0xE000 +address1 = 0xF000 + +[[pt_entry]] +type = 0 +name = "FW" +device = 0 +address0 = 0x010000 +size0 = 0x96000 +address1 = 0xA6000 +size1 = 0x50000 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 2 +name = "mfg" +device = 0 +address0 = 0x000 +size0 = 0x000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 3 +name = "media" +device = 0 +address0 = 0x0F6000 +size0 = 0x2000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 4 +name = "PSM" +device = 0 +address0 = 0x0F8000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 5 +name = "KEY" +device = 0 +address0 = 0x0000 +size0 = 0x000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 6 +name = "DATA" +device = 0 +address0 = 0x0000 +size0 = 0x000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + + +[[pt_entry]] +type = 7 +name = "factory" +device = 0 +address0 = 0x0FC000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +#if user want to put RF calibration data on flash, uncomment following pt entry +#[[pt_entry]] +#type = 8 +#name = "rf_para" +#device = 0 +#address0 = 0x1FF000 +#size0 = 0x1000 +#address1 = 0 +#size1 = 0 +## compressed image must set len,normal image can left it to 0 +#len = 0 diff --git a/tools/bflb_flash_tool/chips/bl602/partition/partition_cfg_2M.toml b/tools/bflb_flash_tool/chips/bl602/partition/partition_cfg_2M.toml new file mode 100644 index 00000000..14e26737 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl602/partition/partition_cfg_2M.toml @@ -0,0 +1,94 @@ +[pt_table] +#partition table is 4K in size +address0 = 0xE000 +address1 = 0xF000 + +[[pt_entry]] +type = 0 +name = "FW" +device = 0 +address0 = 0x10000 +size0 = 0xC8000 +address1 = 0xD8000 +size1 = 0x88000 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 2 +name = "mfg" +device = 0 +address0 = 0x160000 +size0 = 0x32000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 3 +name = "media" +device = 0 +address0 = 0x192000 +size0 = 0x57000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 4 +name = "PSM" +device = 0 +address0 = 0x1E9000 +size0 = 0x8000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 5 +name = "KEY" +device = 0 +address0 = 0x1F1000 +size0 = 0x2000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +[[pt_entry]] +type = 6 +name = "DATA" +device = 0 +address0 = 0x1F3000 +size0 = 0x5000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + + +[[pt_entry]] +type = 7 +name = "factory" +device = 0 +address0 = 0x1F8000 +size0 = 0x7000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 + +#if user want to put RF calibration data on flash, uncomment following pt entry +#[[pt_entry]] +#type = 8 +#name = "rf_para" +#device = 0 +#address0 = 0x1FF000 +#size0 = 0x1000 +#address1 = 0 +#size1 = 0 +## compressed image must set len,normal image can left it to 0 +#len = 0 diff --git a/tools/bflb_flash_tool/chips/bl702/builtin_imgs/mfg/bl702_mfg_stdfw.bin b/tools/bflb_flash_tool/chips/bl702/builtin_imgs/mfg/bl702_mfg_stdfw.bin new file mode 100644 index 00000000..95aa1058 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl702/builtin_imgs/mfg/bl702_mfg_stdfw.bin differ diff --git a/tools/bflb_flash_tool/chips/bl702/conf/ota.toml b/tools/bflb_flash_tool/chips/bl702/conf/ota.toml new file mode 100644 index 00000000..a714ddf3 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/conf/ota.toml @@ -0,0 +1,5 @@ +[ota] +#max length of version_hardware is 15 bytes +version_hardware = "BFL_Module_v1.1" +#max length of version_software is 15 bytes +version_software = "EVENT_V1.1.1" diff --git a/tools/bflb_flash_tool/chips/bl702/device_tree/bl_factory_params_IoTKitA_32M.dts b/tools/bflb_flash_tool/chips/bl702/device_tree/bl_factory_params_IoTKitA_32M.dts new file mode 100644 index 00000000..71b9fc43 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/device_tree/bl_factory_params_IoTKitA_32M.dts @@ -0,0 +1,83 @@ +/dts-v1/; +// version: 17 +// last_comp_version: 16 +// boot_cpuid_phys: 0x0 + +/ { + model = "bl bl702 AVB board"; + compatible = "bl,bl702-sample", "bl,bl702-common"; + #address-cells = <0x1>; + #size-cells = <0x1>; + gpio { + #address-cells = <1>; + #size-cells = <1>; + max_num = <40>; + gpio0 { + status = "okay"; + pin = <22>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "onoff"; //blink or hearbeat or onoff + time = <100>; //duration for this mode + }; + gpio1 { + status = "disable"; + pin = <6>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat or onoff + time = <100>; //duration for this mode + }; + }; + uart { + #address-cells = <1>; + #size-cells = <1>; + uart@4000A000 { + status = "okay"; + id = <0>; + compatible = "bl702_uart"; + path = "/dev/ttyS0"; + baudrate = <2000000>; + pin { + rx = <15>; + tx = <14>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + uart@4000A100 { + status = "disable"; + id = <1>; + compatible = "bl702_uart"; + path = "/dev/ttyS1"; + baudrate = <115200>; + pin { + rx = <3>; + tx = <4>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + }; + wireless { + #address-cells = <1>; + #size-cells = <1>; + mac { + mode = "MBF"; // 'M': manufacture; 'B': efuse; 'F': flash + mac_addr = [C8 43 57 82 73 40 88 88]; + }; + brd_rf { + xtal_mode = "MF"; + xtal = <36 36 0 60 60>; + pwr = <14>; + }; + }; +}; diff --git a/tools/bflb_flash_tool/chips/bl702/device_tree/bl_factory_params_IoTKitA_None.dts b/tools/bflb_flash_tool/chips/bl702/device_tree/bl_factory_params_IoTKitA_None.dts new file mode 100644 index 00000000..71b9fc43 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/device_tree/bl_factory_params_IoTKitA_None.dts @@ -0,0 +1,83 @@ +/dts-v1/; +// version: 17 +// last_comp_version: 16 +// boot_cpuid_phys: 0x0 + +/ { + model = "bl bl702 AVB board"; + compatible = "bl,bl702-sample", "bl,bl702-common"; + #address-cells = <0x1>; + #size-cells = <0x1>; + gpio { + #address-cells = <1>; + #size-cells = <1>; + max_num = <40>; + gpio0 { + status = "okay"; + pin = <22>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "onoff"; //blink or hearbeat or onoff + time = <100>; //duration for this mode + }; + gpio1 { + status = "disable"; + pin = <6>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat or onoff + time = <100>; //duration for this mode + }; + }; + uart { + #address-cells = <1>; + #size-cells = <1>; + uart@4000A000 { + status = "okay"; + id = <0>; + compatible = "bl702_uart"; + path = "/dev/ttyS0"; + baudrate = <2000000>; + pin { + rx = <15>; + tx = <14>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + uart@4000A100 { + status = "disable"; + id = <1>; + compatible = "bl702_uart"; + path = "/dev/ttyS1"; + baudrate = <115200>; + pin { + rx = <3>; + tx = <4>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + }; + wireless { + #address-cells = <1>; + #size-cells = <1>; + mac { + mode = "MBF"; // 'M': manufacture; 'B': efuse; 'F': flash + mac_addr = [C8 43 57 82 73 40 88 88]; + }; + brd_rf { + xtal_mode = "MF"; + xtal = <36 36 0 60 60>; + pwr = <14>; + }; + }; +}; diff --git a/tools/bflb_flash_tool/chips/bl702/device_tree/bl_factory_params_IoTKitA_RC32M.dts b/tools/bflb_flash_tool/chips/bl702/device_tree/bl_factory_params_IoTKitA_RC32M.dts new file mode 100644 index 00000000..71b9fc43 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/device_tree/bl_factory_params_IoTKitA_RC32M.dts @@ -0,0 +1,83 @@ +/dts-v1/; +// version: 17 +// last_comp_version: 16 +// boot_cpuid_phys: 0x0 + +/ { + model = "bl bl702 AVB board"; + compatible = "bl,bl702-sample", "bl,bl702-common"; + #address-cells = <0x1>; + #size-cells = <0x1>; + gpio { + #address-cells = <1>; + #size-cells = <1>; + max_num = <40>; + gpio0 { + status = "okay"; + pin = <22>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "onoff"; //blink or hearbeat or onoff + time = <100>; //duration for this mode + }; + gpio1 { + status = "disable"; + pin = <6>; + feature = "led"; + active = "Hi"; //Hi or Lo + mode = "blink"; //blink or hearbeat or onoff + time = <100>; //duration for this mode + }; + }; + uart { + #address-cells = <1>; + #size-cells = <1>; + uart@4000A000 { + status = "okay"; + id = <0>; + compatible = "bl702_uart"; + path = "/dev/ttyS0"; + baudrate = <2000000>; + pin { + rx = <15>; + tx = <14>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + uart@4000A100 { + status = "disable"; + id = <1>; + compatible = "bl702_uart"; + path = "/dev/ttyS1"; + baudrate = <115200>; + pin { + rx = <3>; + tx = <4>; + }; + feature { + tx = "okay"; + rx = "okay"; + cts = "disable"; + rts = "disable"; + }; + }; + }; + wireless { + #address-cells = <1>; + #size-cells = <1>; + mac { + mode = "MBF"; // 'M': manufacture; 'B': efuse; 'F': flash + mac_addr = [C8 43 57 82 73 40 88 88]; + }; + brd_rf { + xtal_mode = "MF"; + xtal = <36 36 0 60 60>; + pwr = <14>; + }; + }; +}; diff --git a/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader.elf b/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader.elf new file mode 100644 index 00000000..a97779fd Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader.elf differ diff --git a/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader.map b/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader.map new file mode 100644 index 00000000..8eb0ab08 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader.map @@ -0,0 +1,15224 @@ +Archive member included to satisfy reference by file (symbol) + +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + out/BSP_Common/xz/xz_dec_lzma2.o (memmove) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + out/3rdParty/FreeRTOS/Source/tasks.o (__clzsi2) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + out/BSP_Common/libc/vsnprintf.o (__udivdi3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + out/BSP_Common/libc/vsnprintf.o (__umoddi3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + out/BSP_Common/libc/atof.o (__adddf3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o (__divdf3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o (__muldf3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o (__subdf3) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o (__fixunsdfsi) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + out/BSP_Common/libc/atof.o (__floatsidf) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o (__floatunsidf) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o (__extendsfdf2) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o (__truncdfsf2) +/home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) (__clz_tab) + +Discarded input sections + + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/eflash_loader.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/eflash_loader.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/eflash_loader.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/eflash_loader.o + .tcm_code 0x0000000000000000 0xa out/ChipTest/Eflash_Loader/eflash_loader.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.ecdsa_private_key + 0x0000000000000000 0x20 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.ecdsa_public_keyx + 0x0000000000000000 0x20 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.ecdsa_public_keyy + 0x0000000000000000 0x20 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x46 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0xbe out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x115 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x82 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x72 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_deinit_ext_flash_gpio + 0x0000000000000000 0xd4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_deinit_uart_gpio_do + 0x0000000000000000 0x50 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_deinit_uart_gpio + 0x0000000000000000 0x8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .text.bflb_eflash_loader_init_flash_gpio + 0x0000000000000000 0x154 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .rodata.bflb_eflash_loader_init_flash_gpio.str1.4 + 0x0000000000000000 0x13 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xbaa out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0xbe out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x115 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x82 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x72 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_select + 0x0000000000000000 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_init + 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_handshake_poll + 0x0000000000000000 0x8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_read + 0x0000000000000000 0x12 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_write + 0x0000000000000000 0xa out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_wait_tx_idle + 0x0000000000000000 0x8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .text.bflb_eflash_loader_if_deinit + 0x0000000000000000 0xe out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0xbaa out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0xbe out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x115 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x82 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x72 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x46 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x100 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x28 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .text.bflb_eflash_loader_jlink_change_rate + 0x0000000000000000 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0xbaa out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0xbe out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x115 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x82 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x72 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .text.bflb_eflash_loader_uart_change_rate + 0x0000000000000000 0xe0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .rodata.bflb_eflash_loader_uart_change_rate.str1.4 + 0x0000000000000000 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xbaa out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0xbe out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x115 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x82 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x72 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_efuse.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_efuse.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_efuse.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0xbaa out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_efuse.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0xbaa out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0xbe out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x115 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x82 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x0000000000000000 0x72 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text.bflb_spi_flash_sbus_xip_read_init + 0x0000000000000000 0x60 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text.bflb_spi_flash_deinit + 0x0000000000000000 0x2 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text.bflb_spi_flash_read_sahb_xip + 0x0000000000000000 0x4 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text.bflb_spi_flash_nread + 0x0000000000000000 0x26 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .text.bflb_qe_data_clear + 0x0000000000000000 0x72 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .rodata.bflb_qe_data_clear.str1.4 + 0x0000000000000000 0x8 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .rodata.bflb_spi_flash_sbus_xip_read_init.str1.4 + 0x0000000000000000 0xb out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0xbaa out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x2c9b out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0xbe out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x115 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x82 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x0000000000000000 0x72 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .text.bflb_eflash_loader_init_usb_xcvr + 0x0000000000000000 0x70 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .text.bflb_eflash_loader_deinit_usb_xcvr + 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .text.bflb_eflash_loader_usb_deinit + 0x0000000000000000 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x2c95 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0xbb0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x82 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0xbe out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x115 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x72 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x2c95 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x0000000000000000 0x82 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .text.USBD_CDC_TransmitPacket + 0x0000000000000000 0x3e out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .text.USBD_CDC_ReceivePacket + 0x0000000000000000 0x54 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x2c95 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x82 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .text.CDC_Transmit_FS + 0x0000000000000000 0x44 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x2c95 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x0000000000000000 0x82 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .text.HAL_PCD_MspDeInit + 0x0000000000000000 0x3e out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .text.HAL_PCD_SuspendCallback + 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .text.HAL_PCD_ResumeCallback + 0x0000000000000000 0x30 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .text.HAL_PCD_ISOOUTIncompleteCallback + 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .text.HAL_PCD_ISOINIncompleteCallback + 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .text.HAL_PCD_ConnectCallback + 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .text.HAL_PCD_DisconnectCallback + 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .text.USBD_LL_DeInit + 0x0000000000000000 0x32 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .text.USBD_LL_Stop + 0x0000000000000000 0x32 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .text.USBD_LL_FlushEP + 0x0000000000000000 0x32 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .text.USBD_LL_Delay + 0x0000000000000000 0x8 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x2c95 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x82 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0xbe out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x0000000000000000 0x115 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x2c95 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .text 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .data 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .bss 0x0000000000000000 0x0 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .text.USB_RESP_RB_Memory_Reset + 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .text.USB_RESP_RB_Memory_Peek + 0x0000000000000000 0x14 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x796 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x1f6 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x290 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x88 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x52 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x163c out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x16 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x34 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x40 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x2a out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x2c95 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x66 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x2525 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x74 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x19 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x6234 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x189d out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x1454 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x47d out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x79 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0xc27 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x1add out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0xd67 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x3c out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0xd6 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0xb2 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0xdc out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x11c out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x5ef out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x5f out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x2fed out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x131 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0xbb0 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x22 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x6a out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x1bb out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x82 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x10 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x0000000000000000 0x1c out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/ring_buffer/ring_buffer.o + .text 0x0000000000000000 0x0 out/BSP_Common/ring_buffer/ring_buffer.o + .data 0x0000000000000000 0x0 out/BSP_Common/ring_buffer/ring_buffer.o + .bss 0x0000000000000000 0x0 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Read_Byte + 0x0000000000000000 0x70 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Peek_Byte + 0x0000000000000000 0x42 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write_Byte + 0x0000000000000000 0x6c out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write_Force + 0x0000000000000000 0xe2 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Get_Status + 0x0000000000000000 0x40 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Write_Byte_Force + 0x0000000000000000 0x7c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x2c95 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x5ef out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x2fed out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x131 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/ring_buffer/ring_buffer.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atof.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/atof.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/atof.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/atof.o + .text.strntof.part.0 + 0x0000000000000000 0x2b6 out/BSP_Common/libc/atof.o + .text.strntof 0x0000000000000000 0x8 out/BSP_Common/libc/atof.o + .text.atof 0x0000000000000000 0x26 out/BSP_Common/libc/atof.o + .rodata.strntof.part.0.cst8 + 0x0000000000000000 0x10 out/BSP_Common/libc/atof.o + .debug_info 0x0000000000000000 0x391 out/BSP_Common/libc/atof.o + .debug_abbrev 0x0000000000000000 0x1be out/BSP_Common/libc/atof.o + .debug_loc 0x0000000000000000 0x5c0 out/BSP_Common/libc/atof.o + .debug_aranges + 0x0000000000000000 0x30 out/BSP_Common/libc/atof.o + .debug_ranges 0x0000000000000000 0x98 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x67 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/atof.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/atof.o + .debug_line 0x0000000000000000 0x6f5 out/BSP_Common/libc/atof.o + .debug_str 0x0000000000000000 0x3de5 out/BSP_Common/libc/atof.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/atof.o + .debug_frame 0x0000000000000000 0x90 out/BSP_Common/libc/atof.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/atof.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoi.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/atoi.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/atoi.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/atoi.o + .text.atoi 0x0000000000000000 0x18 out/BSP_Common/libc/atoi.o + .debug_info 0x0000000000000000 0xdf out/BSP_Common/libc/atoi.o + .debug_abbrev 0x0000000000000000 0xa5 out/BSP_Common/libc/atoi.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/atoi.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/atoi.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x84 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atoi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atoi.o + .debug_line 0x0000000000000000 0x19e out/BSP_Common/libc/atoi.o + .debug_str 0x0000000000000000 0x3e83 out/BSP_Common/libc/atoi.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/atoi.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/atoi.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/atoi.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atol.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/atol.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/atol.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/atol.o + .text.atol 0x0000000000000000 0x18 out/BSP_Common/libc/atol.o + .debug_info 0x0000000000000000 0xe6 out/BSP_Common/libc/atol.o + .debug_abbrev 0x0000000000000000 0xa5 out/BSP_Common/libc/atol.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/atol.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/atol.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x84 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atol.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atol.o + .debug_line 0x0000000000000000 0x19e out/BSP_Common/libc/atol.o + .debug_str 0x0000000000000000 0x3e8d out/BSP_Common/libc/atol.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/atol.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/atol.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/atol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/atoll.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/atoll.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/atoll.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/atoll.o + .text.atoll 0x0000000000000000 0xe out/BSP_Common/libc/atoll.o + .debug_info 0x0000000000000000 0xdf out/BSP_Common/libc/atoll.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/atoll.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/atoll.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/atoll.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x84 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/atoll.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/atoll.o + .debug_line 0x0000000000000000 0x17f out/BSP_Common/libc/atoll.o + .debug_str 0x0000000000000000 0x3e8c out/BSP_Common/libc/atoll.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/atoll.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/atoll.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/atoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/jrand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/jrand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/jrand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/jrand48.o + .text.jrand48 0x0000000000000000 0x58 out/BSP_Common/libc/jrand48.o + .debug_info 0x0000000000000000 0xd3 out/BSP_Common/libc/jrand48.o + .debug_abbrev 0x0000000000000000 0x85 out/BSP_Common/libc/jrand48.o + .debug_loc 0x0000000000000000 0x82 out/BSP_Common/libc/jrand48.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/jrand48.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/jrand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/jrand48.o + .debug_line 0x0000000000000000 0x174 out/BSP_Common/libc/jrand48.o + .debug_str 0x0000000000000000 0x30c1 out/BSP_Common/libc/jrand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/jrand48.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/jrand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/jrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/lrand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/lrand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/lrand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/lrand48.o + .text.lrand48 0x0000000000000000 0x1c out/BSP_Common/libc/lrand48.o + .text.rand 0x0000000000000000 0x1c out/BSP_Common/libc/lrand48.o + .text.random 0x0000000000000000 0x8 out/BSP_Common/libc/lrand48.o + .bss.__rand48_seed + 0x0000000000000000 0x6 out/BSP_Common/libc/lrand48.o + .debug_info 0x0000000000000000 0x129 out/BSP_Common/libc/lrand48.o + .debug_abbrev 0x0000000000000000 0xf4 out/BSP_Common/libc/lrand48.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Common/libc/lrand48.o + .debug_ranges 0x0000000000000000 0x38 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/lrand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/lrand48.o + .debug_line 0x0000000000000000 0x131 out/BSP_Common/libc/lrand48.o + .debug_str 0x0000000000000000 0x30cc out/BSP_Common/libc/lrand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/lrand48.o + .debug_frame 0x0000000000000000 0x58 out/BSP_Common/libc/lrand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/lrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/mrand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/mrand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/mrand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/mrand48.o + .text.mrand48 0x0000000000000000 0x10 out/BSP_Common/libc/mrand48.o + .debug_info 0x0000000000000000 0xbc out/BSP_Common/libc/mrand48.o + .debug_abbrev 0x0000000000000000 0x91 out/BSP_Common/libc/mrand48.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/mrand48.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/mrand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/mrand48.o + .debug_line 0x0000000000000000 0xb8 out/BSP_Common/libc/mrand48.o + .debug_str 0x0000000000000000 0x30b7 out/BSP_Common/libc/mrand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/mrand48.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/mrand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/mrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/nrand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/nrand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/nrand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/nrand48.o + .text.nrand48 0x0000000000000000 0x14 out/BSP_Common/libc/nrand48.o + .debug_info 0x0000000000000000 0xca out/BSP_Common/libc/nrand48.o + .debug_abbrev 0x0000000000000000 0x9e out/BSP_Common/libc/nrand48.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/nrand48.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/nrand48.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/nrand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/nrand48.o + .debug_line 0x0000000000000000 0xc8 out/BSP_Common/libc/nrand48.o + .debug_str 0x0000000000000000 0x30b8 out/BSP_Common/libc/nrand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/nrand48.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/nrand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/nrand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/seed48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/seed48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/seed48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/seed48.o + .text.seed48 0x0000000000000000 0x5e out/BSP_Common/libc/seed48.o + .bss.oldseed.1539 + 0x0000000000000000 0x6 out/BSP_Common/libc/seed48.o + .debug_info 0x0000000000000000 0xc8 out/BSP_Common/libc/seed48.o + .debug_abbrev 0x0000000000000000 0x9b out/BSP_Common/libc/seed48.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/seed48.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/seed48.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x4e out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/seed48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/seed48.o + .debug_line 0x0000000000000000 0xe7 out/BSP_Common/libc/seed48.o + .debug_str 0x0000000000000000 0x30bd out/BSP_Common/libc/seed48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/seed48.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/seed48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/seed48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/srand48.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/srand48.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/srand48.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/srand48.o + .text.srand48 0x0000000000000000 0x20 out/BSP_Common/libc/srand48.o + .text.srand 0x0000000000000000 0x20 out/BSP_Common/libc/srand48.o + .text.srandom 0x0000000000000000 0x8 out/BSP_Common/libc/srand48.o + .debug_info 0x0000000000000000 0x121 out/BSP_Common/libc/srand48.o + .debug_abbrev 0x0000000000000000 0x107 out/BSP_Common/libc/srand48.o + .debug_loc 0x0000000000000000 0x13 out/BSP_Common/libc/srand48.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Common/libc/srand48.o + .debug_ranges 0x0000000000000000 0x18 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x44 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/srand48.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/srand48.o + .debug_line 0x0000000000000000 0x165 out/BSP_Common/libc/srand48.o + .debug_str 0x0000000000000000 0x30ce out/BSP_Common/libc/srand48.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/srand48.o + .debug_frame 0x0000000000000000 0x40 out/BSP_Common/libc/srand48.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/srand48.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memccpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memccpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memccpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memccpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memccpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memccpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memccpy.o + .text.memccpy 0x0000000000000000 0x20 out/BSP_Common/libc/memccpy.o + .debug_info 0x0000000000000000 0x116 out/BSP_Common/libc/memccpy.o + .debug_abbrev 0x0000000000000000 0xa9 out/BSP_Common/libc/memccpy.o + .debug_loc 0x0000000000000000 0xdf out/BSP_Common/libc/memccpy.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memccpy.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memccpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memccpy.o + .debug_line 0x0000000000000000 0x11b out/BSP_Common/libc/memccpy.o + .debug_str 0x0000000000000000 0x2e8a out/BSP_Common/libc/memccpy.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memccpy.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/memccpy.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memccpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memcpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memcpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memcpy.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memcpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memcpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memcpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memset.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memset.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memset.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memset.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memset.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memset.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memset.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memswap.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memswap.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memswap.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memswap.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memswap.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memswap.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memswap.o + .text.memswap 0x0000000000000000 0x1e out/BSP_Common/libc/memswap.o + .debug_info 0x0000000000000000 0xf3 out/BSP_Common/libc/memswap.o + .debug_abbrev 0x0000000000000000 0x8a out/BSP_Common/libc/memswap.o + .debug_loc 0x0000000000000000 0xdb out/BSP_Common/libc/memswap.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memswap.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memswap.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memswap.o + .debug_line 0x0000000000000000 0x121 out/BSP_Common/libc/memswap.o + .debug_str 0x0000000000000000 0x2e8a out/BSP_Common/libc/memswap.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memswap.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/memswap.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memswap.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memchr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memchr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memchr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memchr.o + .text.memchr 0x0000000000000000 0x24 out/BSP_Common/libc/memchr.o + .debug_info 0x0000000000000000 0xdd out/BSP_Common/libc/memchr.o + .debug_abbrev 0x0000000000000000 0x98 out/BSP_Common/libc/memchr.o + .debug_loc 0x0000000000000000 0x85 out/BSP_Common/libc/memchr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memchr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memchr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memchr.o + .debug_line 0x0000000000000000 0xfc out/BSP_Common/libc/memchr.o + .debug_str 0x0000000000000000 0x2e83 out/BSP_Common/libc/memchr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memchr.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/memchr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memrchr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memrchr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memrchr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memrchr.o + .text.memrchr 0x0000000000000000 0x2c out/BSP_Common/libc/memrchr.o + .debug_info 0x0000000000000000 0xdd out/BSP_Common/libc/memrchr.o + .debug_abbrev 0x0000000000000000 0x98 out/BSP_Common/libc/memrchr.o + .debug_loc 0x0000000000000000 0x82 out/BSP_Common/libc/memrchr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memrchr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memrchr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memrchr.o + .debug_line 0x0000000000000000 0x113 out/BSP_Common/libc/memrchr.o + .debug_str 0x0000000000000000 0x2e85 out/BSP_Common/libc/memrchr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memrchr.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/memrchr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memmem.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memmem.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memmem.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memmem.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memmem.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memmem.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memmem.o + .text.memmem 0x0000000000000000 0xb6 out/BSP_Common/libc/memmem.o + .debug_info 0x0000000000000000 0x152 out/BSP_Common/libc/memmem.o + .debug_abbrev 0x0000000000000000 0xd1 out/BSP_Common/libc/memmem.o + .debug_loc 0x0000000000000000 0x253 out/BSP_Common/libc/memmem.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memmem.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memmem.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memmem.o + .debug_line 0x0000000000000000 0x244 out/BSP_Common/libc/memmem.o + .debug_str 0x0000000000000000 0x2eab out/BSP_Common/libc/memmem.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memmem.o + .debug_frame 0x0000000000000000 0x80 out/BSP_Common/libc/memmem.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memmem.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/memcmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/memcmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/memcmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/memcmp.o + .text.memcmp 0x0000000000000000 0x1e out/BSP_Common/libc/memcmp.o + .debug_info 0x0000000000000000 0xf8 out/BSP_Common/libc/memcmp.o + .debug_abbrev 0x0000000000000000 0xa2 out/BSP_Common/libc/memcmp.o + .debug_loc 0x0000000000000000 0xb1 out/BSP_Common/libc/memcmp.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/memcmp.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/memcmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/memcmp.o + .debug_line 0x0000000000000000 0x116 out/BSP_Common/libc/memcmp.o + .debug_str 0x0000000000000000 0x2e83 out/BSP_Common/libc/memcmp.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/memcmp.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/memcmp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/memcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/bsearch.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/bsearch.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/bsearch.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/bsearch.o + .text.bsearch 0x0000000000000000 0x5e out/BSP_Common/libc/bsearch.o + .debug_info 0x0000000000000000 0x11a out/BSP_Common/libc/bsearch.o + .debug_abbrev 0x0000000000000000 0xd0 out/BSP_Common/libc/bsearch.o + .debug_loc 0x0000000000000000 0x181 out/BSP_Common/libc/bsearch.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/bsearch.o + .debug_ranges 0x0000000000000000 0x28 out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x3b out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/bsearch.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/bsearch.o + .debug_line 0x0000000000000000 0x16d out/BSP_Common/libc/bsearch.o + .debug_str 0x0000000000000000 0x2901 out/BSP_Common/libc/bsearch.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/bsearch.o + .debug_frame 0x0000000000000000 0x4c out/BSP_Common/libc/bsearch.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/bsearch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/qsort.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/qsort.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/qsort.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/qsort.o + .text.qsort 0x0000000000000000 0xd2 out/BSP_Common/libc/qsort.o + .debug_info 0x0000000000000000 0x1d0 out/BSP_Common/libc/qsort.o + .debug_abbrev 0x0000000000000000 0x127 out/BSP_Common/libc/qsort.o + .debug_loc 0x0000000000000000 0x287 out/BSP_Common/libc/qsort.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/qsort.o + .debug_ranges 0x0000000000000000 0x48 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x65 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/qsort.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/qsort.o + .debug_line 0x0000000000000000 0x36c out/BSP_Common/libc/qsort.o + .debug_str 0x0000000000000000 0x3212 out/BSP_Common/libc/qsort.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/qsort.o + .debug_frame 0x0000000000000000 0x70 out/BSP_Common/libc/qsort.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/qsort.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/fnmatch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/fnmatch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/fnmatch.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/fnmatch.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/fnmatch.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/fnmatch.o + .text.fnmatch 0x0000000000000000 0x182 out/BSP_Common/libc/fnmatch.o + .debug_info 0x0000000000000000 0x110 out/BSP_Common/libc/fnmatch.o + .debug_abbrev 0x0000000000000000 0xc2 out/BSP_Common/libc/fnmatch.o + .debug_loc 0x0000000000000000 0x164 out/BSP_Common/libc/fnmatch.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/fnmatch.o + .debug_ranges 0x0000000000000000 0x70 out/BSP_Common/libc/fnmatch.o + .debug_macro 0x0000000000000000 0x29 out/BSP_Common/libc/fnmatch.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/fnmatch.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/fnmatch.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/libc/fnmatch.o + .debug_line 0x0000000000000000 0x404 out/BSP_Common/libc/fnmatch.o + .debug_str 0x0000000000000000 0x26ad out/BSP_Common/libc/fnmatch.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/fnmatch.o + .debug_frame 0x0000000000000000 0x48 out/BSP_Common/libc/fnmatch.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/fnmatch.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/snprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/snprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/snprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/snprintf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/snprintf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/snprintf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/snprintf.o + .text.snprintf + 0x0000000000000000 0x24 out/BSP_Common/libc/snprintf.o + .debug_info 0x0000000000000000 0x110 out/BSP_Common/libc/snprintf.o + .debug_abbrev 0x0000000000000000 0xd5 out/BSP_Common/libc/snprintf.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/snprintf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/snprintf.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x3e out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/snprintf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/snprintf.o + .debug_line 0x0000000000000000 0x170 out/BSP_Common/libc/snprintf.o + .debug_str 0x0000000000000000 0x283a out/BSP_Common/libc/snprintf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/snprintf.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/snprintf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/snprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sprintf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/sprintf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/sprintf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/sprintf.o + .text.sprintf 0x0000000000000000 0x30 out/BSP_Common/libc/sprintf.o + .debug_info 0x0000000000000000 0xf8 out/BSP_Common/libc/sprintf.o + .debug_abbrev 0x0000000000000000 0xc4 out/BSP_Common/libc/sprintf.o + .debug_loc 0x0000000000000000 0x4d out/BSP_Common/libc/sprintf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/sprintf.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x3e out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/sprintf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/sprintf.o + .debug_line 0x0000000000000000 0x17f out/BSP_Common/libc/sprintf.o + .debug_str 0x0000000000000000 0x2831 out/BSP_Common/libc/sprintf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/sprintf.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/sprintf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/sprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/sscanf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/sscanf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/sscanf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/sscanf.o + .text.sscanf 0x0000000000000000 0x26 out/BSP_Common/libc/sscanf.o + .debug_info 0x0000000000000000 0xe9 out/BSP_Common/libc/sscanf.o + .debug_abbrev 0x0000000000000000 0xd5 out/BSP_Common/libc/sscanf.o + .debug_loc 0x0000000000000000 0x42 out/BSP_Common/libc/sscanf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/sscanf.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x3e out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/sscanf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/sscanf.o + .debug_line 0x0000000000000000 0x16e out/BSP_Common/libc/sscanf.o + .debug_str 0x0000000000000000 0x2826 out/BSP_Common/libc/sscanf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/sscanf.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/sscanf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/sscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsnprintf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/vsnprintf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/vsnprintf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/vsnprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsprintf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/vsprintf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/vsprintf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/vsprintf.o + .text.vsprintf + 0x0000000000000000 0x14 out/BSP_Common/libc/vsprintf.o + .debug_info 0x0000000000000000 0xec out/BSP_Common/libc/vsprintf.o + .debug_abbrev 0x0000000000000000 0xc2 out/BSP_Common/libc/vsprintf.o + .debug_loc 0x0000000000000000 0x79 out/BSP_Common/libc/vsprintf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/vsprintf.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x3e out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/vsprintf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/vsprintf.o + .debug_line 0x0000000000000000 0x10e out/BSP_Common/libc/vsprintf.o + .debug_str 0x0000000000000000 0x2833 out/BSP_Common/libc/vsprintf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/vsprintf.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/vsprintf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/vsprintf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/vsscanf.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/vsscanf.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/vsscanf.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/vsscanf.o + .text.vsscanf 0x0000000000000000 0x67c out/BSP_Common/libc/vsscanf.o + .debug_info 0x0000000000000000 0x55b out/BSP_Common/libc/vsscanf.o + .debug_abbrev 0x0000000000000000 0x28b out/BSP_Common/libc/vsscanf.o + .debug_loc 0x0000000000000000 0xee6 out/BSP_Common/libc/vsscanf.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/vsscanf.o + .debug_ranges 0x0000000000000000 0xb8 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0xbe out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x8e out/BSP_Common/libc/vsscanf.o + .debug_macro 0x0000000000000000 0x64 out/BSP_Common/libc/vsscanf.o + .debug_line 0x0000000000000000 0x10d2 out/BSP_Common/libc/vsscanf.o + .debug_str 0x0000000000000000 0x452f out/BSP_Common/libc/vsscanf.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/vsscanf.o + .debug_frame 0x0000000000000000 0x60 out/BSP_Common/libc/vsscanf.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/vsscanf.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcmp.o + .text.strcmp 0x0000000000000000 0x18 out/BSP_Common/libc/strcmp.o + .debug_info 0x0000000000000000 0xf8 out/BSP_Common/libc/strcmp.o + .debug_abbrev 0x0000000000000000 0x8e out/BSP_Common/libc/strcmp.o + .debug_loc 0x0000000000000000 0x52 out/BSP_Common/libc/strcmp.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcmp.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcmp.o + .debug_line 0x0000000000000000 0xf2 out/BSP_Common/libc/strcmp.o + .debug_str 0x0000000000000000 0x2e81 out/BSP_Common/libc/strcmp.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcmp.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strcmp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strncmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strncmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strncmp.o + .text.strncmp 0x0000000000000000 0x22 out/BSP_Common/libc/strncmp.o + .debug_info 0x0000000000000000 0x114 out/BSP_Common/libc/strncmp.o + .debug_abbrev 0x0000000000000000 0x8c out/BSP_Common/libc/strncmp.o + .debug_loc 0x0000000000000000 0xef out/BSP_Common/libc/strncmp.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strncmp.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strncmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strncmp.o + .debug_line 0x0000000000000000 0x137 out/BSP_Common/libc/strncmp.o + .debug_str 0x0000000000000000 0x2e8a out/BSP_Common/libc/strncmp.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strncmp.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strncmp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strncmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcasecmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcasecmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcasecmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcasecmp.o + .text.strcasecmp + 0x0000000000000000 0x4a out/BSP_Common/libc/strcasecmp.o + .debug_info 0x0000000000000000 0x13f out/BSP_Common/libc/strcasecmp.o + .debug_abbrev 0x0000000000000000 0xd5 out/BSP_Common/libc/strcasecmp.o + .debug_loc 0x0000000000000000 0xde out/BSP_Common/libc/strcasecmp.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcasecmp.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x4e out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strcasecmp.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/strcasecmp.o + .debug_line 0x0000000000000000 0x140 out/BSP_Common/libc/strcasecmp.o + .debug_str 0x0000000000000000 0x3123 out/BSP_Common/libc/strcasecmp.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcasecmp.o + .debug_frame 0x0000000000000000 0x3c out/BSP_Common/libc/strcasecmp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncasecmp.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strncasecmp.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strncasecmp.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strncasecmp.o + .text.strncasecmp + 0x0000000000000000 0x58 out/BSP_Common/libc/strncasecmp.o + .debug_info 0x0000000000000000 0x159 out/BSP_Common/libc/strncasecmp.o + .debug_abbrev 0x0000000000000000 0xe4 out/BSP_Common/libc/strncasecmp.o + .debug_loc 0x0000000000000000 0xf7 out/BSP_Common/libc/strncasecmp.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strncasecmp.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x4e out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strncasecmp.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/strncasecmp.o + .debug_line 0x0000000000000000 0x175 out/BSP_Common/libc/strncasecmp.o + .debug_str 0x0000000000000000 0x312c out/BSP_Common/libc/strncasecmp.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strncasecmp.o + .debug_frame 0x0000000000000000 0x40 out/BSP_Common/libc/strncasecmp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strncasecmp.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcpy.o + .text.strcpy 0x0000000000000000 0x12 out/BSP_Common/libc/strcpy.o + .debug_info 0x0000000000000000 0xe1 out/BSP_Common/libc/strcpy.o + .debug_abbrev 0x0000000000000000 0x9f out/BSP_Common/libc/strcpy.o + .debug_loc 0x0000000000000000 0x3f out/BSP_Common/libc/strcpy.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcpy.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcpy.o + .debug_line 0x0000000000000000 0x120 out/BSP_Common/libc/strcpy.o + .debug_str 0x0000000000000000 0x2e81 out/BSP_Common/libc/strcpy.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcpy.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strcpy.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strlcpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strlcpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strlcpy.o + .text.strlcpy 0x0000000000000000 0x2c out/BSP_Common/libc/strlcpy.o + .debug_info 0x0000000000000000 0x10f out/BSP_Common/libc/strlcpy.o + .debug_abbrev 0x0000000000000000 0xbf out/BSP_Common/libc/strlcpy.o + .debug_loc 0x0000000000000000 0xcc out/BSP_Common/libc/strlcpy.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strlcpy.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strlcpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strlcpy.o + .debug_line 0x0000000000000000 0x15d out/BSP_Common/libc/strlcpy.o + .debug_str 0x0000000000000000 0x2e95 out/BSP_Common/libc/strlcpy.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strlcpy.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strlcpy.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strlcpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncpy.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strncpy.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strncpy.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strncpy.o + .text.strncpy 0x0000000000000000 0x56 out/BSP_Common/libc/strncpy.o + .debug_info 0x0000000000000000 0x11b out/BSP_Common/libc/strncpy.o + .debug_abbrev 0x0000000000000000 0xb4 out/BSP_Common/libc/strncpy.o + .debug_loc 0x0000000000000000 0x15a out/BSP_Common/libc/strncpy.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strncpy.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strncpy.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strncpy.o + .debug_line 0x0000000000000000 0x18d out/BSP_Common/libc/strncpy.o + .debug_str 0x0000000000000000 0x2ea2 out/BSP_Common/libc/strncpy.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strncpy.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Common/libc/strncpy.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strncpy.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcat.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcat.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcat.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcat.o + .text.strcat 0x0000000000000000 0x2c out/BSP_Common/libc/strcat.o + .debug_info 0x0000000000000000 0xf7 out/BSP_Common/libc/strcat.o + .debug_abbrev 0x0000000000000000 0xb4 out/BSP_Common/libc/strcat.o + .debug_loc 0x0000000000000000 0x55 out/BSP_Common/libc/strcat.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcat.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcat.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcat.o + .debug_line 0x0000000000000000 0xd0 out/BSP_Common/libc/strcat.o + .debug_str 0x0000000000000000 0x2ea0 out/BSP_Common/libc/strcat.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcat.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Common/libc/strcat.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlcat.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strlcat.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strlcat.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strlcat.o + .text.strlcat 0x0000000000000000 0x76 out/BSP_Common/libc/strlcat.o + .debug_info 0x0000000000000000 0x130 out/BSP_Common/libc/strlcat.o + .debug_abbrev 0x0000000000000000 0xd8 out/BSP_Common/libc/strlcat.o + .debug_loc 0x0000000000000000 0x1c1 out/BSP_Common/libc/strlcat.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strlcat.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strlcat.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strlcat.o + .debug_line 0x0000000000000000 0x1ed out/BSP_Common/libc/strlcat.o + .debug_str 0x0000000000000000 0x2e9c out/BSP_Common/libc/strlcat.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strlcat.o + .debug_frame 0x0000000000000000 0x40 out/BSP_Common/libc/strlcat.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strlcat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strncat.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strncat.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strncat.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strncat.o + .text.strncat 0x0000000000000000 0x50 out/BSP_Common/libc/strncat.o + .debug_info 0x0000000000000000 0x11c out/BSP_Common/libc/strncat.o + .debug_abbrev 0x0000000000000000 0xb4 out/BSP_Common/libc/strncat.o + .debug_loc 0x0000000000000000 0x112 out/BSP_Common/libc/strncat.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strncat.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strncat.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strncat.o + .debug_line 0x0000000000000000 0x13f out/BSP_Common/libc/strncat.o + .debug_str 0x0000000000000000 0x2ea2 out/BSP_Common/libc/strncat.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strncat.o + .debug_frame 0x0000000000000000 0x48 out/BSP_Common/libc/strncat.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strncat.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strlen.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strlen.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strlen.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strlen.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strlen.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strlen.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strlen.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strnlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strnlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strnlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strnlen.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strnlen.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strnlen.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strnlen.o + .text.strnlen 0x0000000000000000 0x2c out/BSP_Common/libc/strnlen.o + .debug_info 0x0000000000000000 0xcf out/BSP_Common/libc/strnlen.o + .debug_abbrev 0x0000000000000000 0x9d out/BSP_Common/libc/strnlen.o + .debug_loc 0x0000000000000000 0xf4 out/BSP_Common/libc/strnlen.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strnlen.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strnlen.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strnlen.o + .debug_line 0x0000000000000000 0x10b out/BSP_Common/libc/strnlen.o + .debug_str 0x0000000000000000 0x2e91 out/BSP_Common/libc/strnlen.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strnlen.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strnlen.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strnlen.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strchr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strchr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strchr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strchr.o + .text.strchr 0x0000000000000000 0x1e out/BSP_Common/libc/strchr.o + .debug_info 0x0000000000000000 0xb8 out/BSP_Common/libc/strchr.o + .debug_abbrev 0x0000000000000000 0x6c out/BSP_Common/libc/strchr.o + .debug_loc 0x0000000000000000 0x3f out/BSP_Common/libc/strchr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strchr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x3f out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strchr.o + .debug_macro 0x0000000000000000 0x64 out/BSP_Common/libc/strchr.o + .debug_line 0x0000000000000000 0x138 out/BSP_Common/libc/strchr.o + .debug_str 0x0000000000000000 0x30d8 out/BSP_Common/libc/strchr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strchr.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strchr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strrchr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strrchr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strrchr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strrchr.o + .text.strrchr 0x0000000000000000 0x22 out/BSP_Common/libc/strrchr.o + .debug_info 0x0000000000000000 0xc8 out/BSP_Common/libc/strrchr.o + .debug_abbrev 0x0000000000000000 0x7d out/BSP_Common/libc/strrchr.o + .debug_loc 0x0000000000000000 0x8b out/BSP_Common/libc/strrchr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strrchr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strrchr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strrchr.o + .debug_line 0x0000000000000000 0x11d out/BSP_Common/libc/strrchr.o + .debug_str 0x0000000000000000 0x2e89 out/BSP_Common/libc/strrchr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strrchr.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strrchr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strrchr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strsep.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strsep.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strsep.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strsep.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strsep.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strsep.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strsep.o + .text.strsep 0x0000000000000000 0x32 out/BSP_Common/libc/strsep.o + .debug_info 0x0000000000000000 0x101 out/BSP_Common/libc/strsep.o + .debug_abbrev 0x0000000000000000 0xa7 out/BSP_Common/libc/strsep.o + .debug_loc 0x0000000000000000 0x89 out/BSP_Common/libc/strsep.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strsep.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strsep.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strsep.o + .debug_line 0x0000000000000000 0x12e out/BSP_Common/libc/strsep.o + .debug_str 0x0000000000000000 0x2e97 out/BSP_Common/libc/strsep.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strsep.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Common/libc/strsep.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strsep.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strstr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strstr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strstr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strstr.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strstr.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strstr.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strstr.o + .text.strstr 0x0000000000000000 0x3c out/BSP_Common/libc/strstr.o + .debug_info 0x0000000000000000 0x114 out/BSP_Common/libc/strstr.o + .debug_abbrev 0x0000000000000000 0xa6 out/BSP_Common/libc/strstr.o + .debug_loc 0x0000000000000000 0x6e out/BSP_Common/libc/strstr.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strstr.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strstr.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strstr.o + .debug_line 0x0000000000000000 0xd2 out/BSP_Common/libc/strstr.o + .debug_str 0x0000000000000000 0x2e9f out/BSP_Common/libc/strstr.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strstr.o + .debug_frame 0x0000000000000000 0x38 out/BSP_Common/libc/strstr.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strstr.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strcspn.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strcspn.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strcspn.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strcspn.o + .text.strcspn 0x0000000000000000 0xa out/BSP_Common/libc/strcspn.o + .debug_info 0x0000000000000000 0xe9 out/BSP_Common/libc/strcspn.o + .debug_abbrev 0x0000000000000000 0xb9 out/BSP_Common/libc/strcspn.o + .debug_loc 0x0000000000000000 0x42 out/BSP_Common/libc/strcspn.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strcspn.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strcspn.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strcspn.o + .debug_line 0x0000000000000000 0xb2 out/BSP_Common/libc/strcspn.o + .debug_str 0x0000000000000000 0x2ea6 out/BSP_Common/libc/strcspn.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strcspn.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strcspn.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strcspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strspn.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strspn.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strspn.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strspn.o + .text.strspn 0x0000000000000000 0xa out/BSP_Common/libc/strspn.o + .debug_info 0x0000000000000000 0xe9 out/BSP_Common/libc/strspn.o + .debug_abbrev 0x0000000000000000 0xb9 out/BSP_Common/libc/strspn.o + .debug_loc 0x0000000000000000 0x42 out/BSP_Common/libc/strspn.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strspn.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strspn.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strspn.o + .debug_line 0x0000000000000000 0xb1 out/BSP_Common/libc/strspn.o + .debug_str 0x0000000000000000 0x2ea4 out/BSP_Common/libc/strspn.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strspn.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strspn.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strxspn.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strxspn.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strxspn.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strxspn.o + .text.__strxspn + 0x0000000000000000 0x80 out/BSP_Common/libc/strxspn.o + .debug_info 0x0000000000000000 0x125 out/BSP_Common/libc/strxspn.o + .debug_abbrev 0x0000000000000000 0xe8 out/BSP_Common/libc/strxspn.o + .debug_loc 0x0000000000000000 0xa6 out/BSP_Common/libc/strxspn.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strxspn.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x62 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strxspn.o + .debug_macro 0x0000000000000000 0x8e out/BSP_Common/libc/strxspn.o + .debug_line 0x0000000000000000 0x219 out/BSP_Common/libc/strxspn.o + .debug_str 0x0000000000000000 0x3d04 out/BSP_Common/libc/strxspn.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strxspn.o + .debug_frame 0x0000000000000000 0x3c out/BSP_Common/libc/strxspn.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strxspn.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strpbrk.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strpbrk.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strpbrk.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strpbrk.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strpbrk.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strpbrk.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strpbrk.o + .text.strpbrk 0x0000000000000000 0x2a out/BSP_Common/libc/strpbrk.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/strpbrk.o + .debug_abbrev 0x0000000000000000 0xb8 out/BSP_Common/libc/strpbrk.o + .debug_loc 0x0000000000000000 0x60 out/BSP_Common/libc/strpbrk.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strpbrk.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strpbrk.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strpbrk.o + .debug_line 0x0000000000000000 0x102 out/BSP_Common/libc/strpbrk.o + .debug_str 0x0000000000000000 0x2e9f out/BSP_Common/libc/strpbrk.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strpbrk.o + .debug_frame 0x0000000000000000 0x30 out/BSP_Common/libc/strpbrk.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strpbrk.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtok.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtok.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtok.o + .text.strtok 0x0000000000000000 0x10 out/BSP_Common/libc/strtok.o + .sbss.holder.1472 + 0x0000000000000000 0x4 out/BSP_Common/libc/strtok.o + .debug_info 0x0000000000000000 0xf9 out/BSP_Common/libc/strtok.o + .debug_abbrev 0x0000000000000000 0xbb out/BSP_Common/libc/strtok.o + .debug_loc 0x0000000000000000 0x42 out/BSP_Common/libc/strtok.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtok.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtok.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtok.o + .debug_line 0x0000000000000000 0xaa out/BSP_Common/libc/strtok.o + .debug_str 0x0000000000000000 0x2e97 out/BSP_Common/libc/strtok.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtok.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtok.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtok.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok_r.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok_r.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok_r.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtok_r.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtok_r.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtok_r.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtok_r.o + .text.strtok_r + 0x0000000000000000 0x30 out/BSP_Common/libc/strtok_r.o + .debug_info 0x0000000000000000 0xf2 out/BSP_Common/libc/strtok_r.o + .debug_abbrev 0x0000000000000000 0xa7 out/BSP_Common/libc/strtok_r.o + .debug_loc 0x0000000000000000 0x76 out/BSP_Common/libc/strtok_r.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtok_r.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x36 out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtok_r.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtok_r.o + .debug_line 0x0000000000000000 0x118 out/BSP_Common/libc/strtok_r.o + .debug_str 0x0000000000000000 0x2e99 out/BSP_Common/libc/strtok_r.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtok_r.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Common/libc/strtok_r.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtok_r.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtol.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtol.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtol.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtol.o + .text.strtol 0x0000000000000000 0x14 out/BSP_Common/libc/strtol.o + .debug_info 0x0000000000000000 0x116 out/BSP_Common/libc/strtol.o + .debug_abbrev 0x0000000000000000 0xa5 out/BSP_Common/libc/strtol.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtol.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtol.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtol.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtol.o + .debug_line 0x0000000000000000 0x130 out/BSP_Common/libc/strtol.o + .debug_str 0x0000000000000000 0x3ed7 out/BSP_Common/libc/strtol.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtol.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/strtol.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtol.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoll.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoll.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoll.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoll.o + .text.strtoll 0x0000000000000000 0xa out/BSP_Common/libc/strtoll.o + .debug_info 0x0000000000000000 0x10f out/BSP_Common/libc/strtoll.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/strtoll.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoll.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoll.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoll.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoll.o + .debug_line 0x0000000000000000 0x111 out/BSP_Common/libc/strtoll.o + .debug_str 0x0000000000000000 0x3ed6 out/BSP_Common/libc/strtoll.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoll.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtoll.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoll.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoul.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoul.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoul.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoul.o + .text.strtoul 0x0000000000000000 0x14 out/BSP_Common/libc/strtoul.o + .debug_info 0x0000000000000000 0x10f out/BSP_Common/libc/strtoul.o + .debug_abbrev 0x0000000000000000 0xa5 out/BSP_Common/libc/strtoul.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoul.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoul.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoul.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoul.o + .debug_line 0x0000000000000000 0x131 out/BSP_Common/libc/strtoul.o + .debug_str 0x0000000000000000 0x3ed3 out/BSP_Common/libc/strtoul.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoul.o + .debug_frame 0x0000000000000000 0x2c out/BSP_Common/libc/strtoul.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoul.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoull.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoull.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoull.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoull.o + .text.strtoull + 0x0000000000000000 0xa out/BSP_Common/libc/strtoull.o + .debug_info 0x0000000000000000 0x10f out/BSP_Common/libc/strtoull.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/strtoull.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoull.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoull.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoull.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoull.o + .debug_line 0x0000000000000000 0x112 out/BSP_Common/libc/strtoull.o + .debug_str 0x0000000000000000 0x3edb out/BSP_Common/libc/strtoull.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoull.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtoull.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoull.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoimax.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoimax.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoimax.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoimax.o + .text.strtoimax + 0x0000000000000000 0xa out/BSP_Common/libc/strtoimax.o + .debug_info 0x0000000000000000 0x127 out/BSP_Common/libc/strtoimax.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/strtoimax.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoimax.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoimax.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoimax.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoimax.o + .debug_line 0x0000000000000000 0x113 out/BSP_Common/libc/strtoimax.o + .debug_str 0x0000000000000000 0x3ee5 out/BSP_Common/libc/strtoimax.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoimax.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtoimax.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strtoumax.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strtoumax.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strtoumax.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strtoumax.o + .text.strtoumax + 0x0000000000000000 0xa out/BSP_Common/libc/strtoumax.o + .debug_info 0x0000000000000000 0x127 out/BSP_Common/libc/strtoumax.o + .debug_abbrev 0x0000000000000000 0xa8 out/BSP_Common/libc/strtoumax.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/strtoumax.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strtoumax.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x76 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strtoumax.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/libc/strtoumax.o + .debug_line 0x0000000000000000 0x113 out/BSP_Common/libc/strtoumax.o + .debug_str 0x0000000000000000 0x3ee8 out/BSP_Common/libc/strtoumax.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strtoumax.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strtoumax.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strtoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoimax.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strntoimax.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strntoimax.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strntoimax.o + .text.strntoimax + 0x0000000000000000 0x8 out/BSP_Common/libc/strntoimax.o + .debug_info 0x0000000000000000 0x136 out/BSP_Common/libc/strntoimax.o + .debug_abbrev 0x0000000000000000 0xb9 out/BSP_Common/libc/strntoimax.o + .debug_loc 0x0000000000000000 0x84 out/BSP_Common/libc/strntoimax.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strntoimax.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x45 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strntoimax.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strntoimax.o + .debug_line 0x0000000000000000 0xdb out/BSP_Common/libc/strntoimax.o + .debug_str 0x0000000000000000 0x3b3b out/BSP_Common/libc/strntoimax.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strntoimax.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/strntoimax.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strntoimax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/strntoumax.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/strntoumax.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/strntoumax.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/strntoumax.o + .text.strntoumax + 0x0000000000000000 0x19e out/BSP_Common/libc/strntoumax.o + .debug_info 0x0000000000000000 0x1c0 out/BSP_Common/libc/strntoumax.o + .debug_abbrev 0x0000000000000000 0x142 out/BSP_Common/libc/strntoumax.o + .debug_loc 0x0000000000000000 0x332 out/BSP_Common/libc/strntoumax.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/strntoumax.o + .debug_ranges 0x0000000000000000 0x40 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x5d out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/strntoumax.o + .debug_macro 0x0000000000000000 0x3eb out/BSP_Common/libc/strntoumax.o + .debug_line 0x0000000000000000 0x55f out/BSP_Common/libc/strntoumax.o + .debug_str 0x0000000000000000 0x3ddb out/BSP_Common/libc/strntoumax.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/strntoumax.o + .debug_frame 0x0000000000000000 0x44 out/BSP_Common/libc/strntoumax.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/strntoumax.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/stdlib.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/stdlib.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/stdlib.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/stdlib.o + .text.malloc 0x0000000000000000 0x4 out/BSP_Common/libc/stdlib.o + .text.free 0x0000000000000000 0x2 out/BSP_Common/libc/stdlib.o + .text.calloc 0x0000000000000000 0x4 out/BSP_Common/libc/stdlib.o + .text.realloc 0x0000000000000000 0x4 out/BSP_Common/libc/stdlib.o + .debug_info 0x0000000000000000 0x9dc out/BSP_Common/libc/stdlib.o + .debug_abbrev 0x0000000000000000 0x23f out/BSP_Common/libc/stdlib.o + .debug_loc 0x0000000000000000 0x63 out/BSP_Common/libc/stdlib.o + .debug_aranges + 0x0000000000000000 0x38 out/BSP_Common/libc/stdlib.o + .debug_ranges 0x0000000000000000 0x28 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0xf4 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x5c out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x57 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x3b out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x18e out/BSP_Common/libc/stdlib.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/libc/stdlib.o + .debug_line 0x0000000000000000 0x2dc out/BSP_Common/libc/stdlib.o + .debug_str 0x0000000000000000 0x4b50 out/BSP_Common/libc/stdlib.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/stdlib.o + .debug_frame 0x0000000000000000 0x50 out/BSP_Common/libc/stdlib.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/stdlib.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/common.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/common.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/common.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/common.o + .text.__assert_func + 0x0000000000000000 0x2 out/BSP_Common/libc/common.o + .text.strtof 0x0000000000000000 0x6 out/BSP_Common/libc/common.o + .debug_info 0x0000000000000000 0xdc out/BSP_Common/libc/common.o + .debug_abbrev 0x0000000000000000 0x88 out/BSP_Common/libc/common.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Common/libc/common.o + .debug_ranges 0x0000000000000000 0x18 out/BSP_Common/libc/common.o + .debug_macro 0x0000000000000000 0x11 out/BSP_Common/libc/common.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/common.o + .debug_line 0x0000000000000000 0x76 out/BSP_Common/libc/common.o + .debug_str 0x0000000000000000 0x262a out/BSP_Common/libc/common.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/common.o + .debug_frame 0x0000000000000000 0x30 out/BSP_Common/libc/common.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/common.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalnum.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalnum.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalnum.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalnum.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalnum.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalnum.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalnum.o + .text.isalnum 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isalnum.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isalnum.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isalnum.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isalnum.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isalnum.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isalnum.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isalnum.o + .debug_line 0x0000000000000000 0xcc out/BSP_Common/libc/ctype_isalnum.o + .debug_str 0x0000000000000000 0x29a3 out/BSP_Common/libc/ctype_isalnum.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isalnum.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isalnum.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isalnum.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalpha.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalpha.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalpha.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isalpha.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalpha.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalpha.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isalpha.o + .text.isalpha 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isalpha.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isalpha.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isalpha.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isalpha.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isalpha.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isalpha.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isalpha.o + .debug_line 0x0000000000000000 0xcc out/BSP_Common/libc/ctype_isalpha.o + .debug_str 0x0000000000000000 0x29a3 out/BSP_Common/libc/ctype_isalpha.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isalpha.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isalpha.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isalpha.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isascii.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isascii.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isascii.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isascii.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isascii.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isascii.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isascii.o + .text.isascii 0x0000000000000000 0xa out/BSP_Common/libc/ctype_isascii.o + .debug_info 0x0000000000000000 0xb2 out/BSP_Common/libc/ctype_isascii.o + .debug_abbrev 0x0000000000000000 0xc0 out/BSP_Common/libc/ctype_isascii.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isascii.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isascii.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isascii.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isascii.o + .debug_line 0x0000000000000000 0xc6 out/BSP_Common/libc/ctype_isascii.o + .debug_str 0x0000000000000000 0x2932 out/BSP_Common/libc/ctype_isascii.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isascii.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isascii.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isascii.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isblank.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isblank.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isblank.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isblank.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isblank.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isblank.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isblank.o + .text.isblank 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isblank.o + .debug_info 0x0000000000000000 0xb6 out/BSP_Common/libc/ctype_isblank.o + .debug_abbrev 0x0000000000000000 0xc2 out/BSP_Common/libc/ctype_isblank.o + .debug_loc 0x0000000000000000 0x80 out/BSP_Common/libc/ctype_isblank.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isblank.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isblank.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isblank.o + .debug_line 0x0000000000000000 0xc6 out/BSP_Common/libc/ctype_isblank.o + .debug_str 0x0000000000000000 0x2932 out/BSP_Common/libc/ctype_isblank.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isblank.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isblank.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isblank.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_iscntrl.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_iscntrl.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_iscntrl.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_iscntrl.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_iscntrl.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_iscntrl.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_iscntrl.o + .text.iscntrl 0x0000000000000000 0x14 out/BSP_Common/libc/ctype_iscntrl.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_iscntrl.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_iscntrl.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_iscntrl.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_iscntrl.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_iscntrl.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_iscntrl.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_iscntrl.o + .debug_str 0x0000000000000000 0x29a3 out/BSP_Common/libc/ctype_iscntrl.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_iscntrl.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_iscntrl.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_iscntrl.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isdigit.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isdigit.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isdigit.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isdigit.o + .text.isdigit 0x0000000000000000 0xa out/BSP_Common/libc/ctype_isdigit.o + .debug_info 0x0000000000000000 0xb2 out/BSP_Common/libc/ctype_isdigit.o + .debug_abbrev 0x0000000000000000 0xc0 out/BSP_Common/libc/ctype_isdigit.o + .debug_loc 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isdigit.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isdigit.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isdigit.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isdigit.o + .debug_line 0x0000000000000000 0xc6 out/BSP_Common/libc/ctype_isdigit.o + .debug_str 0x0000000000000000 0x2932 out/BSP_Common/libc/ctype_isdigit.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isdigit.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isdigit.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isgraph.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isgraph.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isgraph.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isgraph.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isgraph.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isgraph.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isgraph.o + .text.isgraph 0x0000000000000000 0x14 out/BSP_Common/libc/ctype_isgraph.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isgraph.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isgraph.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isgraph.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isgraph.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isgraph.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isgraph.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_isgraph.o + .debug_str 0x0000000000000000 0x29a3 out/BSP_Common/libc/ctype_isgraph.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isgraph.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isgraph.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isgraph.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_ispunct.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_ispunct.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_ispunct.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_ispunct.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_ispunct.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_ispunct.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_ispunct.o + .text.ispunct 0x0000000000000000 0x14 out/BSP_Common/libc/ctype_ispunct.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_ispunct.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_ispunct.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_ispunct.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_ispunct.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_ispunct.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_ispunct.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_ispunct.o + .debug_str 0x0000000000000000 0x29a3 out/BSP_Common/libc/ctype_ispunct.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_ispunct.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_ispunct.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_ispunct.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_islower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_islower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_islower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_islower.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_islower.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_islower.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_islower.o + .text.islower 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_islower.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_islower.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_islower.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_islower.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_islower.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_islower.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_islower.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_islower.o + .debug_str 0x0000000000000000 0x29a3 out/BSP_Common/libc/ctype_islower.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_islower.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_islower.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_islower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isprint.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isprint.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isprint.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isprint.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isprint.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isprint.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isprint.o + .text.isprint 0x0000000000000000 0x14 out/BSP_Common/libc/ctype_isprint.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isprint.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isprint.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isprint.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isprint.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isprint.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isprint.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_isprint.o + .debug_str 0x0000000000000000 0x29a3 out/BSP_Common/libc/ctype_isprint.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isprint.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isprint.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isprint.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isspace.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isspace.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isspace.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isspace.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isspace.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isspace.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isspace.o + .text.isspace 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isspace.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isspace.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isspace.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isspace.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isspace.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isspace.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isspace.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_isspace.o + .debug_str 0x0000000000000000 0x29a3 out/BSP_Common/libc/ctype_isspace.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isspace.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isspace.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isspace.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isupper.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isupper.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isupper.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isupper.o + .text.isupper 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isupper.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isupper.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isupper.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isupper.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isupper.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isupper.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isupper.o + .debug_line 0x0000000000000000 0xce out/BSP_Common/libc/ctype_isupper.o + .debug_str 0x0000000000000000 0x29a3 out/BSP_Common/libc/ctype_isupper.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isupper.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isupper.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_tolower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_tolower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_tolower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_tolower.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_tolower.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_tolower.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_tolower.o + .text.tolower 0x0000000000000000 0x18 out/BSP_Common/libc/ctype_tolower.o + .debug_info 0x0000000000000000 0x129 out/BSP_Common/libc/ctype_tolower.o + .debug_abbrev 0x0000000000000000 0xfc out/BSP_Common/libc/ctype_tolower.o + .debug_loc 0x0000000000000000 0x34 out/BSP_Common/libc/ctype_tolower.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_tolower.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_tolower.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_tolower.o + .debug_line 0x0000000000000000 0xd4 out/BSP_Common/libc/ctype_tolower.o + .debug_str 0x0000000000000000 0x29b3 out/BSP_Common/libc/ctype_tolower.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_tolower.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_tolower.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_tolower.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_toupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_toupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_toupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_toupper.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_toupper.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_toupper.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_toupper.o + .text.toupper 0x0000000000000000 0x18 out/BSP_Common/libc/ctype_toupper.o + .debug_info 0x0000000000000000 0x129 out/BSP_Common/libc/ctype_toupper.o + .debug_abbrev 0x0000000000000000 0xfc out/BSP_Common/libc/ctype_toupper.o + .debug_loc 0x0000000000000000 0x34 out/BSP_Common/libc/ctype_toupper.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_toupper.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_toupper.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_toupper.o + .debug_line 0x0000000000000000 0xd4 out/BSP_Common/libc/ctype_toupper.o + .debug_str 0x0000000000000000 0x29b3 out/BSP_Common/libc/ctype_toupper.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_toupper.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_toupper.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_toupper.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isxdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isxdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isxdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctype_isxdigit.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isxdigit.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isxdigit.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctype_isxdigit.o + .text.isxdigit + 0x0000000000000000 0x12 out/BSP_Common/libc/ctype_isxdigit.o + .debug_info 0x0000000000000000 0xf1 out/BSP_Common/libc/ctype_isxdigit.o + .debug_abbrev 0x0000000000000000 0xdc out/BSP_Common/libc/ctype_isxdigit.o + .debug_loc 0x0000000000000000 0x21 out/BSP_Common/libc/ctype_isxdigit.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isxdigit.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x42 out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctype_isxdigit.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctype_isxdigit.o + .debug_line 0x0000000000000000 0xcf out/BSP_Common/libc/ctype_isxdigit.o + .debug_str 0x0000000000000000 0x29a6 out/BSP_Common/libc/ctype_isxdigit.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctype_isxdigit.o + .debug_frame 0x0000000000000000 0x20 out/BSP_Common/libc/ctype_isxdigit.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctype_isxdigit.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctypes.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctypes.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctypes.o + .group 0x0000000000000000 0xc out/BSP_Common/libc/ctypes.o + .text 0x0000000000000000 0x0 out/BSP_Common/libc/ctypes.o + .data 0x0000000000000000 0x0 out/BSP_Common/libc/ctypes.o + .bss 0x0000000000000000 0x0 out/BSP_Common/libc/ctypes.o + .rodata.__ctypes + 0x0000000000000000 0x101 out/BSP_Common/libc/ctypes.o + .debug_info 0x0000000000000000 0x9e out/BSP_Common/libc/ctypes.o + .debug_abbrev 0x0000000000000000 0x71 out/BSP_Common/libc/ctypes.o + .debug_aranges + 0x0000000000000000 0x18 out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x32 out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/libc/ctypes.o + .debug_macro 0x0000000000000000 0x41 out/BSP_Common/libc/ctypes.o + .debug_line 0x0000000000000000 0x7b out/BSP_Common/libc/ctypes.o + .debug_str 0x0000000000000000 0x2948 out/BSP_Common/libc/ctypes.o + .comment 0x0000000000000000 0x33 out/BSP_Common/libc/ctypes.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/libc/ctypes.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/soft_crc/softcrc.o + .text 0x0000000000000000 0x0 out/BSP_Common/soft_crc/softcrc.o + .data 0x0000000000000000 0x0 out/BSP_Common/soft_crc/softcrc.o + .bss 0x0000000000000000 0x0 out/BSP_Common/soft_crc/softcrc.o + .text.BFLB_Soft_CRC16 + 0x0000000000000000 0x4c out/BSP_Common/soft_crc/softcrc.o + .text.BFLB_Soft_CRC32_Table + 0x0000000000000000 0x36 out/BSP_Common/soft_crc/softcrc.o + .rodata.chCRCHTalbe + 0x0000000000000000 0x100 out/BSP_Common/soft_crc/softcrc.o + .rodata.chCRCLTalbe + 0x0000000000000000 0x100 out/BSP_Common/soft_crc/softcrc.o + .rodata.crc32Tab + 0x0000000000000000 0x400 out/BSP_Common/soft_crc/softcrc.o + .debug_info 0x0000000000000000 0x1dd out/BSP_Common/soft_crc/softcrc.o + .debug_abbrev 0x0000000000000000 0x109 out/BSP_Common/soft_crc/softcrc.o + .debug_loc 0x0000000000000000 0x1f5 out/BSP_Common/soft_crc/softcrc.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Common/soft_crc/softcrc.o + .debug_ranges 0x0000000000000000 0x18 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x1e1 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x2c95 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x5ef out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x2fed out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x131 out/BSP_Common/soft_crc/softcrc.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/soft_crc/softcrc.o + .debug_line 0x0000000000000000 0x58a out/BSP_Common/soft_crc/softcrc.o + .debug_str 0x0000000000000000 0xb14b8 out/BSP_Common/soft_crc/softcrc.o + .comment 0x0000000000000000 0x33 out/BSP_Common/soft_crc/softcrc.o + .debug_frame 0x0000000000000000 0x30 out/BSP_Common/soft_crc/softcrc.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/soft_crc/softcrc.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_crypt.o + .text 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_crypt.o + .data 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_crypt.o + .bss 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_init_do + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_setkey_do + 0x0000000000000000 0xea out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_setadd_do + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_encrypt_do + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_encrypt_tag_do + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_update_do + 0x0000000000000000 0x24 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_decrypt_do + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_auth_decrypt_do + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_finish_do + 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_deinit_do + 0x0000000000000000 0x2a out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_init + 0x0000000000000000 0x8 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_setkey + 0x0000000000000000 0x28 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_setadd + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_encrypt + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_encrypt_tag + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_update + 0x0000000000000000 0x24 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_decrypt + 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_auth_decrypt + 0x0000000000000000 0x4 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_finish + 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_crypt.o + .text.bflb_crypt_deinit + 0x0000000000000000 0x32 out/BSP_Common/cipher_suite/bflb_crypt.o + .rodata.bflb_crypt_setkey.str1.4 + 0x0000000000000000 0x15 out/BSP_Common/cipher_suite/bflb_crypt.o + .rodata.bflb_crypt_setkey_do.str1.4 + 0x0000000000000000 0x13 out/BSP_Common/cipher_suite/bflb_crypt.o + .sbss.aesCtx 0x0000000000000000 0x2 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_info 0x0000000000000000 0xdc4 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_abbrev 0x0000000000000000 0x238 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_loc 0x0000000000000000 0x806 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_aranges + 0x0000000000000000 0x70 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_ranges 0x0000000000000000 0xe0 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x20d out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x2c95 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x5ef out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x2fed out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x131 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_macro 0x0000000000000000 0x4c out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_line 0x0000000000000000 0x962 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_str 0x0000000000000000 0xb1c88 out/BSP_Common/cipher_suite/bflb_crypt.o + .comment 0x0000000000000000 0x33 out/BSP_Common/cipher_suite/bflb_crypt.o + .debug_frame 0x0000000000000000 0x228 out/BSP_Common/cipher_suite/bflb_crypt.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/cipher_suite/bflb_crypt.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_hash.o + .text 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_hash.o + .data 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_hash.o + .bss 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x2c95 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x5ef out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x2fed out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x131 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/cipher_suite/bflb_hash.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .data 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .bss 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_init + 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_deinit + 0x0000000000000000 0x14 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_verify + 0x0000000000000000 0x5e4 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdh_init + 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdh_deinit + 0x0000000000000000 0x14 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1B + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1Gx + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .rodata.secp256r1Gy + 0x0000000000000000 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x2c95 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x5ef out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x2fed out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x131 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/cipher_suite/bflb_dsa.o + .text 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_dsa.o + .data 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_dsa.o + .bss 0x0000000000000000 0x0 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_get_reg_size + 0x0000000000000000 0x7a out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_mexp_binary + 0x0000000000000000 0x190 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_mexp_mont + 0x0000000000000000 0x16a out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_decrypt_crt + 0x0000000000000000 0x1d8 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_init + 0x0000000000000000 0x42 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_sign + 0x0000000000000000 0x96 out/BSP_Common/cipher_suite/bflb_dsa.o + .text.bflb_dsa_verify + 0x0000000000000000 0xc2 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_info 0x0000000000000000 0xeec out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_abbrev 0x0000000000000000 0x238 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_loc 0x0000000000000000 0x7fd out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_aranges + 0x0000000000000000 0x50 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_ranges 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x221 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x2c95 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x5ef out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x2fed out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x131 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_line 0x0000000000000000 0xc38 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_str 0x0000000000000000 0xb1b8e out/BSP_Common/cipher_suite/bflb_dsa.o + .comment 0x0000000000000000 0x33 out/BSP_Common/cipher_suite/bflb_dsa.o + .debug_frame 0x0000000000000000 0x18c out/BSP_Common/cipher_suite/bflb_dsa.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/cipher_suite/bflb_dsa.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_core.o + .text 0x0000000000000000 0x0 out/BSP_Common/usbd_core.o + .data 0x0000000000000000 0x0 out/BSP_Common/usbd_core.o + .bss 0x0000000000000000 0x0 out/BSP_Common/usbd_core.o + .text.USBD_DeInit + 0x0000000000000000 0x38 out/BSP_Common/usbd_core.o + .text.USBD_Stop + 0x0000000000000000 0x28 out/BSP_Common/usbd_core.o + .text.USBD_RunTestMode + 0x0000000000000000 0x4 out/BSP_Common/usbd_core.o + .text.USBD_LL_Suspend + 0x0000000000000000 0x12 out/BSP_Common/usbd_core.o + .text.USBD_LL_Resume + 0x0000000000000000 0x16 out/BSP_Common/usbd_core.o + .text.USBD_LL_IsoINIncomplete + 0x0000000000000000 0x4 out/BSP_Common/usbd_core.o + .text.USBD_LL_IsoOUTIncomplete + 0x0000000000000000 0x4 out/BSP_Common/usbd_core.o + .text.USBD_LL_DevConnected + 0x0000000000000000 0x4 out/BSP_Common/usbd_core.o + .text.USBD_LL_DevDisconnected + 0x0000000000000000 0x1e out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x2c95 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x5ef out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x2fed out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x131 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x6a out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000000000 0x1bb out/BSP_Common/usbd_core.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ctlreq.o + .text 0x0000000000000000 0x0 out/BSP_Common/usbd_ctlreq.o + .data 0x0000000000000000 0x0 out/BSP_Common/usbd_ctlreq.o + .bss 0x0000000000000000 0x0 out/BSP_Common/usbd_ctlreq.o + .text.USBD_CtlError + 0x0000000000000000 0xa out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x2c95 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x5ef out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x2fed out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x131 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x6a out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1bb out/BSP_Common/usbd_ctlreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/usbd_ioreq.o + .text 0x0000000000000000 0x0 out/BSP_Common/usbd_ioreq.o + .data 0x0000000000000000 0x0 out/BSP_Common/usbd_ioreq.o + .bss 0x0000000000000000 0x0 out/BSP_Common/usbd_ioreq.o + .text.USBD_GetRxCount + 0x0000000000000000 0x16 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x2c95 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x5ef out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x2fed out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x131 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x6a out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1bb out/BSP_Common/usbd_ioreq.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_crc32.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_crc32.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_crc32.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_crc32.o + .text.xz_crc32_init + 0x0000000000000000 0x2 out/BSP_Common/xz/xz_crc32.o + .text.xz_crc32 + 0x0000000000000000 0x34 out/BSP_Common/xz/xz_crc32.o + .debug_info 0x0000000000000000 0x11b out/BSP_Common/xz/xz_crc32.o + .debug_abbrev 0x0000000000000000 0xcb out/BSP_Common/xz/xz_crc32.o + .debug_loc 0x0000000000000000 0x8c out/BSP_Common/xz/xz_crc32.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Common/xz/xz_crc32.o + .debug_ranges 0x0000000000000000 0x18 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x84 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x25 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/xz/xz_crc32.o + .debug_macro 0x0000000000000000 0x2e out/BSP_Common/xz/xz_crc32.o + .debug_line 0x0000000000000000 0x18a out/BSP_Common/xz/xz_crc32.o + .debug_str 0x0000000000000000 0x33cf out/BSP_Common/xz/xz_crc32.o + .comment 0x0000000000000000 0x33 out/BSP_Common/xz/xz_crc32.o + .debug_frame 0x0000000000000000 0x30 out/BSP_Common/xz/xz_crc32.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/xz/xz_crc32.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_lzma2.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_lzma2.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_lzma2.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_lzma2.o + .text.lzma_len + 0x0000000000000000 0x17c out/BSP_Common/xz/xz_dec_lzma2.o + .text.dict_repeat.part.1 + 0x0000000000000000 0x64 out/BSP_Common/xz/xz_dec_lzma2.o + .text.lzma_main + 0x0000000000000000 0x75c out/BSP_Common/xz/xz_dec_lzma2.o + .text.xz_dec_lzma2_run + 0x0000000000000000 0x636 out/BSP_Common/xz/xz_dec_lzma2.o + .text.xz_dec_lzma2_create + 0x0000000000000000 0x74 out/BSP_Common/xz/xz_dec_lzma2.o + .text.xz_dec_lzma2_reset + 0x0000000000000000 0x80 out/BSP_Common/xz/xz_dec_lzma2.o + .text.xz_dec_lzma2_end + 0x0000000000000000 0x38 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_info 0x0000000000000000 0x1b15 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_abbrev 0x0000000000000000 0x3a0 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_loc 0x0000000000000000 0x173e out/BSP_Common/xz/xz_dec_lzma2.o + .debug_aranges + 0x0000000000000000 0x50 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_ranges 0x0000000000000000 0x618 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x93 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x25 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0x2e out/BSP_Common/xz/xz_dec_lzma2.o + .debug_macro 0x0000000000000000 0xd7 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_line 0x0000000000000000 0x36ed out/BSP_Common/xz/xz_dec_lzma2.o + .debug_str 0x0000000000000000 0x3e1b out/BSP_Common/xz/xz_dec_lzma2.o + .comment 0x0000000000000000 0x33 out/BSP_Common/xz/xz_dec_lzma2.o + .debug_frame 0x0000000000000000 0x144 out/BSP_Common/xz/xz_dec_lzma2.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/xz/xz_dec_lzma2.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_dec_stream.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_stream.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_stream.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_dec_stream.o + .text.fill_temp + 0x0000000000000000 0x76 out/BSP_Common/xz/xz_dec_stream.o + .text.dec_vli.isra.0 + 0x0000000000000000 0x9a out/BSP_Common/xz/xz_dec_stream.o + .text.index_update.isra.2 + 0x0000000000000000 0x3a out/BSP_Common/xz/xz_dec_stream.o + .text.xz_dec_reset + 0x0000000000000000 0x4e out/BSP_Common/xz/xz_dec_stream.o + .text.xz_dec_run + 0x0000000000000000 0x7e8 out/BSP_Common/xz/xz_dec_stream.o + .text.xz_dec_init + 0x0000000000000000 0x5a out/BSP_Common/xz/xz_dec_stream.o + .text.xz_dec_end + 0x0000000000000000 0x28 out/BSP_Common/xz/xz_dec_stream.o + .rodata.xz_dec_run.str1.4 + 0x0000000000000000 0xb out/BSP_Common/xz/xz_dec_stream.o + .debug_info 0x0000000000000000 0xce6 out/BSP_Common/xz/xz_dec_stream.o + .debug_abbrev 0x0000000000000000 0x359 out/BSP_Common/xz/xz_dec_stream.o + .debug_loc 0x0000000000000000 0x769 out/BSP_Common/xz/xz_dec_stream.o + .debug_aranges + 0x0000000000000000 0x50 out/BSP_Common/xz/xz_dec_stream.o + .debug_ranges 0x0000000000000000 0x290 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x8d out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x25 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x46 out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x2e out/BSP_Common/xz/xz_dec_stream.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/xz/xz_dec_stream.o + .debug_line 0x0000000000000000 0x1757 out/BSP_Common/xz/xz_dec_stream.o + .debug_str 0x0000000000000000 0x3939 out/BSP_Common/xz/xz_dec_stream.o + .comment 0x0000000000000000 0x33 out/BSP_Common/xz/xz_dec_stream.o + .debug_frame 0x0000000000000000 0x134 out/BSP_Common/xz/xz_dec_stream.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/xz/xz_dec_stream.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_decompress.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_decompress.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_decompress.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_decompress.o + .text.xz_uncompress_init + 0x0000000000000000 0x60 out/BSP_Common/xz/xz_decompress.o + .text.xz_uncompress_stream + 0x0000000000000000 0x64 out/BSP_Common/xz/xz_decompress.o + .text.xz_uncompress_end + 0x0000000000000000 0x10 out/BSP_Common/xz/xz_decompress.o + .sbss.s 0x0000000000000000 0x4 out/BSP_Common/xz/xz_decompress.o + .debug_info 0x0000000000000000 0x2e2 out/BSP_Common/xz/xz_decompress.o + .debug_abbrev 0x0000000000000000 0x167 out/BSP_Common/xz/xz_decompress.o + .debug_loc 0x0000000000000000 0x1dd out/BSP_Common/xz/xz_decompress.o + .debug_aranges + 0x0000000000000000 0x30 out/BSP_Common/xz/xz_decompress.o + .debug_ranges 0x0000000000000000 0x20 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x5d out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x1f out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_decompress.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_decompress.o + .debug_line 0x0000000000000000 0x2d9 out/BSP_Common/xz/xz_decompress.o + .debug_str 0x0000000000000000 0x327e out/BSP_Common/xz/xz_decompress.o + .comment 0x0000000000000000 0x33 out/BSP_Common/xz/xz_decompress.o + .debug_frame 0x0000000000000000 0x88 out/BSP_Common/xz/xz_decompress.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/xz/xz_decompress.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/xz/xz_port.o + .text 0x0000000000000000 0x0 out/BSP_Common/xz/xz_port.o + .data 0x0000000000000000 0x0 out/BSP_Common/xz/xz_port.o + .bss 0x0000000000000000 0x0 out/BSP_Common/xz/xz_port.o + .text.simple_malloc_init + 0x0000000000000000 0x1a out/BSP_Common/xz/xz_port.o + .text.simple_malloc + 0x0000000000000000 0x48 out/BSP_Common/xz/xz_port.o + .text.simple_free + 0x0000000000000000 0x12 out/BSP_Common/xz/xz_port.o + .rodata.simple_free.str1.4 + 0x0000000000000000 0x13 out/BSP_Common/xz/xz_port.o + .rodata.simple_malloc.str1.4 + 0x0000000000000000 0x13 out/BSP_Common/xz/xz_port.o + .sbss.bufsize 0x0000000000000000 0x4 out/BSP_Common/xz/xz_port.o + .sbss.mallocBuf + 0x0000000000000000 0x4 out/BSP_Common/xz/xz_port.o + .sbss.malloced + 0x0000000000000000 0x4 out/BSP_Common/xz/xz_port.o + .debug_info 0x0000000000000000 0x18b out/BSP_Common/xz/xz_port.o + .debug_abbrev 0x0000000000000000 0x111 out/BSP_Common/xz/xz_port.o + .debug_loc 0x0000000000000000 0x58 out/BSP_Common/xz/xz_port.o + .debug_aranges + 0x0000000000000000 0x30 out/BSP_Common/xz/xz_port.o + .debug_ranges 0x0000000000000000 0x20 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x65 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/xz/xz_port.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/xz/xz_port.o + .debug_line 0x0000000000000000 0x283 out/BSP_Common/xz/xz_port.o + .debug_str 0x0000000000000000 0x32f7 out/BSP_Common/xz/xz_port.o + .comment 0x0000000000000000 0x33 out/BSP_Common/xz/xz_port.o + .debug_frame 0x0000000000000000 0x50 out/BSP_Common/xz/xz_port.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/xz/xz_port.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/BSP_Common/partition/partition.o + .text 0x0000000000000000 0x0 out/BSP_Common/partition/partition.o + .data 0x0000000000000000 0x0 out/BSP_Common/partition/partition.o + .bss 0x0000000000000000 0x0 out/BSP_Common/partition/partition.o + .text.pPtTable_Flash_Read_Fast + 0x0000000000000000 0x5e out/BSP_Common/partition/partition.o + .text.PtTable_Valid + 0x0000000000000000 0x6c out/BSP_Common/partition/partition.o + .text.PtTable_Set_Flash_Operation + 0x0000000000000000 0x2e out/BSP_Common/partition/partition.o + .text.PtTable_Get_Active_Partition_Need_Lock + 0x0000000000000000 0x90 out/BSP_Common/partition/partition.o + .text.PtTable_Get_Active_Entries_By_ID + 0x0000000000000000 0x64 out/BSP_Common/partition/partition.o + .text.PtTable_Get_Active_Entries_By_Name + 0x0000000000000000 0xa0 out/BSP_Common/partition/partition.o + .text.PtTable_Update_Entry + 0x0000000000000000 0x128 out/BSP_Common/partition/partition.o + .text.PtTable_Create + 0x0000000000000000 0x80 out/BSP_Common/partition/partition.o + .sbss.PtTable_Flash_Erase + 0x0000000000000000 0x4 out/BSP_Common/partition/partition.o + .sbss.PtTable_Flash_Read + 0x0000000000000000 0x4 out/BSP_Common/partition/partition.o + .sbss.PtTable_Flash_Write + 0x0000000000000000 0x4 out/BSP_Common/partition/partition.o + .sdata.index.10613 + 0x0000000000000000 0x1 out/BSP_Common/partition/partition.o + .debug_info 0x0000000000000000 0x905 out/BSP_Common/partition/partition.o + .debug_abbrev 0x0000000000000000 0x292 out/BSP_Common/partition/partition.o + .debug_loc 0x0000000000000000 0x95b out/BSP_Common/partition/partition.o + .debug_aranges + 0x0000000000000000 0x58 out/BSP_Common/partition/partition.o + .debug_ranges 0x0000000000000000 0x48 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x1fc out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x2c95 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x5ef out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x2fed out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x131 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Common/partition/partition.o + .debug_macro 0x0000000000000000 0x2e out/BSP_Common/partition/partition.o + .debug_line 0x0000000000000000 0xe06 out/BSP_Common/partition/partition.o + .debug_str 0x0000000000000000 0xb1b92 out/BSP_Common/partition/partition.o + .comment 0x0000000000000000 0x33 out/BSP_Common/partition/partition.o + .debug_frame 0x0000000000000000 0x1bc out/BSP_Common/partition/partition.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/partition/partition.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/system_bl702.o + .text 0x0000000000000000 0x0 out/startup/system_bl702.o + .data 0x0000000000000000 0x0 out/startup/system_bl702.o + .bss 0x0000000000000000 0x0 out/startup/system_bl702.o + .text.system_bor_init + 0x0000000000000000 0x1e out/startup/system_bl702.o + .text.System_NVIC_SetPriority + 0x0000000000000000 0x2 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x796 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x290 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x1f6 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x88 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x52 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x163c out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x189d out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x1454 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x47d out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x16 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x58 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x34 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x1c out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x40 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x2a out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x79 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0xc27 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x1add out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0xd67 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x3c out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x2525 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x74 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x19 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0xd6 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0xb2 out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0xdc out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x11c out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x2fed out/startup/system_bl702.o + .debug_macro 0x0000000000000000 0x131 out/startup/system_bl702.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/GCC/start_load.o + .text 0x0000000000000000 0x0 out/startup/GCC/start_load.o + .data 0x0000000000000000 0x0 out/startup/GCC/start_load.o + .bss 0x0000000000000000 0x0 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x796 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x1f6 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x290 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x88 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x52 out/startup/GCC/start_load.o + .debug_macro 0x0000000000000000 0x163c out/startup/GCC/start_load.o + .group 0x0000000000000000 0xc out/startup/interrupt.o + .group 0x0000000000000000 0xc out/startup/interrupt.o + .group 0x0000000000000000 0xc out/startup/interrupt.o + .group 0x0000000000000000 0xc out/startup/interrupt.o + .text 0x0000000000000000 0x0 out/startup/interrupt.o + .data 0x0000000000000000 0x0 out/startup/interrupt.o + .bss 0x0000000000000000 0x0 out/startup/interrupt.o + .text.clic_set_pending + 0x0000000000000000 0xe out/startup/interrupt.o + .text.clic_clear_pending + 0x0000000000000000 0xc out/startup/interrupt.o + .text.clic_set_intcfg + 0x0000000000000000 0x14 out/startup/interrupt.o + .text.clic_get_intcfg + 0x0000000000000000 0x10 out/startup/interrupt.o + .text.clic_set_cliccfg + 0x0000000000000000 0xe out/startup/interrupt.o + .text.clic_get_cliccfg + 0x0000000000000000 0xa out/startup/interrupt.o + .debug_macro 0x0000000000000000 0x796 out/startup/interrupt.o + .debug_macro 0x0000000000000000 0x1f6 out/startup/interrupt.o + .debug_macro 0x0000000000000000 0x52 out/startup/interrupt.o + .debug_macro 0x0000000000000000 0x88 out/startup/interrupt.o + .text 0x0000000000000000 0x0 out/startup/GCC/entry.o + .data 0x0000000000000000 0x0 out/startup/GCC/entry.o + .bss 0x0000000000000000 0x0 out/startup/GCC/entry.o + .text.metal.init.trapvec + 0x0000000000000000 0x14 out/startup/GCC/entry.o + .text.metal.init.__register_frame_info + 0x0000000000000000 0x2 out/startup/GCC/entry.o + .eh_frame 0x0000000000000000 0x68 out/startup/GCC/entry.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .group 0x0000000000000000 0xc out/BSP_Common/FreeRTOS/port.o + .text 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/port.o + .data 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/port.o + .bss 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/port.o + .text.vPortSetupTimerInterrupt + 0x0000000000000000 0x6a out/BSP_Common/FreeRTOS/port.o + .text.xPortStartScheduler + 0x0000000000000000 0x4e out/BSP_Common/FreeRTOS/port.o + .text.vPortEndScheduler + 0x0000000000000000 0x2 out/BSP_Common/FreeRTOS/port.o + .bss.ullNextTime + 0x0000000000000000 0x8 out/BSP_Common/FreeRTOS/port.o + .sbss.pullMachineTimerCompareRegister + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .sdata.pullNextTime + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .sdata2.pullMachineTimerCompareRegisterBase + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .sdata2.uxTimerIncrementsForOneTick + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .sdata2.xISRStackTop + 0x0000000000000000 0x4 out/BSP_Common/FreeRTOS/port.o + .debug_info 0x0000000000000000 0x26d out/BSP_Common/FreeRTOS/port.o + .debug_abbrev 0x0000000000000000 0x148 out/BSP_Common/FreeRTOS/port.o + .debug_loc 0x0000000000000000 0x35 out/BSP_Common/FreeRTOS/port.o + .debug_aranges + 0x0000000000000000 0x30 out/BSP_Common/FreeRTOS/port.o + .debug_ranges 0x0000000000000000 0x40 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x97 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x118 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x15a out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0xbb out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x26 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0x4b7 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0xb5 out/BSP_Common/FreeRTOS/port.o + .debug_macro 0x0000000000000000 0xaa out/BSP_Common/FreeRTOS/port.o + .debug_line 0x0000000000000000 0x33c out/BSP_Common/FreeRTOS/port.o + .debug_str 0x0000000000000000 0x6bb4 out/BSP_Common/FreeRTOS/port.o + .comment 0x0000000000000000 0x33 out/BSP_Common/FreeRTOS/port.o + .debug_frame 0x0000000000000000 0x58 out/BSP_Common/FreeRTOS/port.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/FreeRTOS/port.o + .text 0x0000000000000000 0x600 out/BSP_Common/FreeRTOS/portASM.o + .data 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/portASM.o + .bss 0x0000000000000000 0x0 out/BSP_Common/FreeRTOS/portASM.o + .debug_line 0x0000000000000000 0x483 out/BSP_Common/FreeRTOS/portASM.o + .debug_info 0x0000000000000000 0x26 out/BSP_Common/FreeRTOS/portASM.o + .debug_abbrev 0x0000000000000000 0x14 out/BSP_Common/FreeRTOS/portASM.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Common/FreeRTOS/portASM.o + .debug_str 0x0000000000000000 0x74 out/BSP_Common/FreeRTOS/portASM.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Common/FreeRTOS/portASM.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .text.FreeRTOS_Interrupt_Handler + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_AutoLoad_Done + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Write_Dbg_Pwd + 0x0000000000000000 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Read_Dbg_Pwd + 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Readlock_Dbg_Pwd + 0x0000000000000000 0x64 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Writelock_Dbg_Pwd + 0x0000000000000000 0x62 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Write_Secure_Cfg + 0x0000000000000000 0x7a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Read_Secure_Cfg + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Write_Secure_Boot + 0x0000000000000000 0x86 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Read_Secure_Boot + 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Write_Ana_Trim + 0x0000000000000000 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Read_Ana_Trim + 0x0000000000000000 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .sclock_rlt_code + 0x0000000000000000 0xa8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Write_Sw_Usage + 0x0000000000000000 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Writelock_Sw_Usage + 0x0000000000000000 0x6c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Write_MAC_Address + 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Read_MAC_Address_Raw + 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Writelock_MAC_Address + 0x0000000000000000 0x64 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Is_All_Bits_Zero + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Is_MAC_Address_Slot_Empty + 0x0000000000000000 0x8a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Write_MAC_Address_Opt + 0x0000000000000000 0x15a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Read_MAC_Address_Opt + 0x0000000000000000 0x136 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Read_Chip_ID + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Is_CapCode_Empty + 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Write_CapCode_Opt + 0x0000000000000000 0x9c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Read_CapCode_Opt + 0x0000000000000000 0x64 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Is_PowerOffset_Slot_Empty + 0x0000000000000000 0x86 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Write_PowerOffset_Opt + 0x0000000000000000 0x104 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Read_PowerOffset_Opt + 0x0000000000000000 0xce out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Write_AES_Key + 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Read_AES_Key + 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Writelock_AES_Key + 0x0000000000000000 0x8c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Readlock_AES_Key + 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Crc_Enable + 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Crc_Is_Busy + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Crc_Set_Golden + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .text.EF_Ctrl_Crc_Result + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .sclock_rlt_code + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .tcm_code 0x0000000000000000 0x1a6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_info 0x0000000000000000 0x390 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_abbrev 0x0000000000000000 0x111 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_loc 0x0000000000000000 0x205 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_aranges + 0x0000000000000000 0x78 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_ranges 0x0000000000000000 0x68 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0xfd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x1ad7 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_line 0x0000000000000000 0x81e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_str 0x0000000000000000 0x5f14e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .debug_frame 0x0000000000000000 0x130 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_ALL_IRQHandler + 0x0000000000000000 0x8a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_Enable + 0x0000000000000000 0x1e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_Disable + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_Channel_Init + 0x0000000000000000 0x10a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_Channel_Update_SrcMemcfg + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_Channel_Update_DstMemcfg + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_Channel_TranferSize + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_Channel_Is_Busy + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_Channel_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_Channel_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_LLI_Init + 0x0000000000000000 0x56 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_LLI_Update + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_LLI_PpStruct_Set_Transfer_Len + 0x0000000000000000 0x8c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_LLI_PpBuf_Start_New_Transmit + 0x0000000000000000 0x6c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_LLI_PpBuf_Remove_Completed_List + 0x0000000000000000 0x42 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_LLI_PpBuf_Append + 0x0000000000000000 0x9a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_LLI_PpBuf_Destroy + 0x0000000000000000 0x46 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_IntMask + 0x0000000000000000 0x90 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_Int_Callback_Install + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_LLI_PpStruct_Init + 0x0000000000000000 0xd2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_LLI_PpStruct_Start + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .text.DMA_LLI_PpStruct_Stop + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .bss.PingPongListArra + 0x0000000000000000 0x100 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .bss.dmaIntCbfArra + 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_info 0x0000000000000000 0x127a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_abbrev 0x0000000000000000 0x36c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_loc 0x0000000000000000 0xd89 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_aranges + 0x0000000000000000 0xc8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_ranges 0x0000000000000000 0xd8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x193 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x5e9 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_line 0x0000000000000000 0x18ed out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_str 0x0000000000000000 0x81bf0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .debug_frame 0x0000000000000000 0x23c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.BMX_ERR_IRQHandler + 0x0000000000000000 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.BMX_TO_IRQHandler + 0x0000000000000000 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GPIO_INT0_IRQHandler + 0x0000000000000000 0x100 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_CAM_CLK + 0x0000000000000000 0x44 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_MAC154_ZIGBEE_CLK + 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_BLE_CLK + 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_I2S_CLK + 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_QDEC_CLK + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_DMA_CLK + 0x0000000000000000 0x42 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_IR_CLK + 0x0000000000000000 0x3a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_Chip_Out_0_CLK_Sel + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_Chip_Out_1_CLK_Sel + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_I2C_CLK + 0x0000000000000000 0x3a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Invert_ETH_RX_CLK + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Invert_RF_TEST_O_CLK + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_SPI_CLK + 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Invert_ETH_TX_CLK + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Invert_ETH_REF_O_CLK + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_ETH_REF_O_CLK_Sel + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .sclock_rlt_code + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_AHB_Slave1_Clock_Gate + 0x0000000000000000 0x9c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_BMX_Init + 0x0000000000000000 0x56 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_BMX_Addr_Monitor_Enable + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_BMX_Addr_Monitor_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_BMX_BusErrResponse_Enable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_BMX_BusErrResponse_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_BMX_Get_Status + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_BMX_Get_Err_Addr + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.BMX_ERR_INT_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.BMX_TIMEOUT_INT_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_SRAM_RET + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Get_SRAM_RET + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_SRAM_SLP + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Get_SRAM_SLP + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_SRAM_PARM + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Get_SRAM_PARM + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_SWAP_EMAC_CAM_Pin + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_Ext_Rst_Smt + 0x0000000000000000 0x2c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_Kys_Drv_Col + 0x0000000000000000 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_JTAG_Sig_Swap_Set + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_CCI_Use_IO_0_1_2_7 + 0x0000000000000000 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_CCI_Use_Jtag_Pin + 0x0000000000000000 0x2c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Swap_SPI_0_MOSI_With_MISO + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_SPI_0_ACT_MOD_Sel + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_PDM_CLK + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_ADC_CLK + 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_DAC_CLK + 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_DIG_CLK_Sel + 0x0000000000000000 0x50 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_DIG_512K_CLK + 0x0000000000000000 0x5a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_DIG_32K_CLK + 0x0000000000000000 0x4c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_BT_Coex_Signal + 0x0000000000000000 0x44 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_IR_RX_GPIO_Sel + 0x0000000000000000 0x2c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_IR_LED_Driver_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_IR_LED_Driver_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_IR_LED_Driver_Output_Enable + 0x0000000000000000 0x4c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_IR_LED_Driver_Output_Disable + 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_IR_LED_Driver_Ibias + 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_GPIO_Func_Init + 0x0000000000000000 0x5c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_GPIO_Write + 0x0000000000000000 0x5a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_GPIO_IntMask + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_GPIO_IntClear + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Get_GPIO_IntStatus + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_GPIO_IntMod + 0x0000000000000000 0xbc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Get_GPIO_IntCtlMod + 0x0000000000000000 0x78 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_GPIO_Int2Mask + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_GPIO_Int2Clear + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Get_GPIO_Int2Status + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Set_GPIO_Int2Mod + 0x0000000000000000 0xbc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_Get_GPIO_Int2CtlMod + 0x0000000000000000 0x78 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_GPIO_INT0_IRQHandler_Install + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_GPIO_INT0_Callback_Install + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .text.GLB_GPIO_INT0_Callback_Install2 + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .bss.glbGpioInt0CbfArra + 0x0000000000000000 0x80 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .bss.glbGpioInt0CbfArra2 + 0x0000000000000000 0x80 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .rodata.BMX_ERR_IRQHandler.str1.4 + 0x0000000000000000 0x15 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .rodata.BMX_TO_IRQHandler.str1.4 + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .rodata.GPIO_INT0_IRQHandler.str1.4 + 0x0000000000000000 0x2d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .sbss.glbBmxErrIntCbfArra + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .sbss.glbBmxToIntCbfArra + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x622e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_OUT0_IRQHandler + 0x0000000000000000 0xf6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_OUT1_IRQHandler + 0x0000000000000000 0xce out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_App_Reset + 0x0000000000000000 0xb4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_PIR_Enable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_PIR_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_PIR_INT_Config + 0x0000000000000000 0x2c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_PIR_LPF_Sel + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_PIR_HPF_Sel + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Set_PIR_Threshold + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Get_PIR_Threshold + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Set_PIR_Interval + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Get_PIR_Interval + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Get_BOR_OUT_State + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Set_BOR_Config + 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .sclock_rlt_code + 0x0000000000000000 0xa0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Set_XCLK_CLK_Sel + 0x0000000000000000 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Set_HRAM_slp + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Set_HRAM_Ret + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Get_Wakeup_Addr + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Set_Wakeup_Addr + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Clear_RTC_Counter + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Enable_RTC_Counter + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Set_RTC_Timer + 0x0000000000000000 0x24 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Get_RTC_Timer_Val + 0x0000000000000000 0x26 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Clear_RTC_INT + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_GPIO_INT_Enable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_GPIO_INT_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Get_INT_State + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Get_Pin_Wakeup_Mode + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Clear_IRQ + 0x0000000000000000 0x1e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Aon_Pad_IeSmt_Cfg + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Enable_AComp0_IRQ + 0x0000000000000000 0x26 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Disable_AComp0_IRQ + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Enable_AComp1_IRQ + 0x0000000000000000 0x26 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Disable_AComp1_IRQ + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Enable_BOR_IRQ + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Disable_BOR_IRQ + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Get_Reset_Event + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Clear_Reset_Event + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Out0_IRQHandler_Install + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Out0_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Out1_IRQHandler_Install + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .text.HBN_Out1_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .bss.hbnInt0CbfArra + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .bss.hbnInt1CbfArra + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .text.L1C_BMX_ERR_IRQHandler + 0x0000000000000000 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .text.L1C_BMX_TO_IRQHandler + 0x0000000000000000 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .text.L1C_BMX_Init + 0x0000000000000000 0x6c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .text.L1C_BMX_Addr_Monitor_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .text.L1C_BMX_Addr_Monitor_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .text.L1C_BMX_BusErrResponse_Enable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .text.L1C_BMX_BusErrResponse_Disable + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .text.L1C_BMX_Get_Status + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .text.L1C_BMX_Get_Err_Addr + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .text.L1C_BMX_ERR_INT_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .text.L1C_BMX_TIMEOUT_INT_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .rodata.L1C_BMX_ERR_IRQHandler.str1.4 + 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .rodata.L1C_BMX_TO_IRQHandler.str1.4 + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .sbss.l1cBmxErrIntCbfArra + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .sbss.l1cBmxToIntCbfArra + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_info 0x0000000000000000 0x6a6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_abbrev 0x0000000000000000 0x187 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_loc 0x0000000000000000 0x1ce out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_aranges + 0x0000000000000000 0x70 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_ranges 0x0000000000000000 0x60 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0xcd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x477 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_line 0x0000000000000000 0x74b out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_str 0x0000000000000000 0xbcd0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .debug_frame 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_WAKEUP_IRQHandler + 0x0000000000000000 0x82 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_IntEn + 0x0000000000000000 0x48 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_IntMask + 0x0000000000000000 0x42 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_Get_IntStatus + 0x0000000000000000 0x3e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_IntClear + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_Get_PdsPllStstus + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_Get_PdsRfStstus + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_Get_PdsStstus + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_Clear_Reset_Event + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_Get_Reset_Event + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_Set_Vddcore_GPIO_IntCfg + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_Set_Vddcore_GPIO_IntMask + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_Get_Vddcore_GPIO_IntStatus + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_Set_Vddcore_GPIO_IntClear + 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_WAKEUP_IRQHandler_Install + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .text.PDS_Int_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .sclock_rlt_code + 0x0000000000000000 0xc8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .rodata 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .bss.pdsIntCbfArra + 0x0000000000000000 0x2c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .rodata.CSWTCH.1 + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .rodata.CSWTCH.2 + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .rodata.CSWTCH.3 + 0x0000000000000000 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_DeInit + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_IrConfig + 0x0000000000000000 0x76 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_SetTxDataLength + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_SetRxDataLength + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_SetDeglitchCount + 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_SetBaudrate + 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_SetRtsValue + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_ClrRtsValue + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_SetTxValue + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_ClrTxValue + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_TxFifoClear + 0x0000000000000000 0x1e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_RxFifoClear + 0x0000000000000000 0x1e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_SendDataBlock + 0x0000000000000000 0x5c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_GetTxFifoCount + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_GetRxFifoCount + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_GetRxBusBusyStatus + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART_GetOverflowStatus + 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0xbaa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .tcm_code 0x0000000000000000 0xa2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .text.SF_Ctrl_IRQHandler + 0x0000000000000000 0x2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_info 0x0000000000000000 0x250 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_abbrev 0x0000000000000000 0x118 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_loc 0x0000000000000000 0xdf out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_ranges 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0xd5 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x251f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_line 0x0000000000000000 0x490 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_str 0x0000000000000000 0x1e877 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .debug_frame 0x0000000000000000 0x44 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_info 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_abbrev 0x0000000000000000 0x4b out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_aranges + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0xf9 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x251f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_line 0x0000000000000000 0x2ec out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .debug_str 0x0000000000000000 0x209cf out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .tcm_code 0x0000000000000000 0x106 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_info 0x0000000000000000 0x87c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_abbrev 0x0000000000000000 0x17e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_loc 0x0000000000000000 0x1b7 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_aranges + 0x0000000000000000 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_ranges 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0xef out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x251f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_line 0x0000000000000000 0x57f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_str 0x0000000000000000 0x20c9c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .debug_frame 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x251f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .text.Clock_System_Clock_Set + 0x0000000000000000 0x24 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .text.Clock_Peripheral_Clock_Set + 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .text.Clock_System_Clock_Get + 0x0000000000000000 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .text.Clock_Peripheral_Clock_Get + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .bss.clkCfg 0x0000000000000000 0x4c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_info 0x0000000000000000 0x2d7 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_abbrev 0x0000000000000000 0x122 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_loc 0x0000000000000000 0x127 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_aranges + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_ranges 0x0000000000000000 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x13d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x622e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_line 0x0000000000000000 0x4c6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_str 0x0000000000000000 0x756d3 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .debug_frame 0x0000000000000000 0x50 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_IntHandler + 0x0000000000000000 0xc4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_CH0_IRQHandler + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_CH1_IRQHandler + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_WDT_IRQHandler + 0x0000000000000000 0x46 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_GetCompValue + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_SetCompValue + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_GetCounterValue + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_GetMatchStatus + 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_GetPreloadValue + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_SetPreloadValue + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_SetPreloadTrigSrc + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_SetCountMode + 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_ClearIntStatus + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_Init + 0x0000000000000000 0xfe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_Enable + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_Disable + 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.TIMER_IntMask + 0x0000000000000000 0x70 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.WDT_Set_Clock + 0x0000000000000000 0x26 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.WDT_GetMatchValue + 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.WDT_SetCompValue + 0x0000000000000000 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.WDT_GetCounterValue + 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.WDT_ResetCounterValue + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.WDT_GetResetStatus + 0x0000000000000000 0x32 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.WDT_ClearResetStatus + 0x0000000000000000 0x36 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.WDT_Enable + 0x0000000000000000 0x54 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.WDT_Disable + 0x0000000000000000 0x36 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.WDT_IntMask + 0x0000000000000000 0x48 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.Timer_Int_Callback_Install + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .text.WDT_Int_Callback_Install + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .bss.timerIntCbfArra + 0x0000000000000000 0x24 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_info 0x0000000000000000 0xda2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_abbrev 0x0000000000000000 0x2fe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_loc 0x0000000000000000 0x7dd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_aranges + 0x0000000000000000 0x100 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_ranges 0x0000000000000000 0x188 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0xcf out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x8cd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_line 0x0000000000000000 0x1113 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_str 0x0000000000000000 0xbff3 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .debug_frame 0x0000000000000000 0x22c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_IRQHandler + 0x0000000000000000 0x8a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_SendWord + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_RecieveWord + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_Enable + 0x0000000000000000 0x1e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_Disable + 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_Reset + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_Init + 0x0000000000000000 0x8e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_SetPrd + 0x0000000000000000 0x84 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_ClockSet + 0x0000000000000000 0xe0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_SetSclSync + 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_IsBusy + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_TransferEndStatus + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_MasterSendBlocking + 0x0000000000000000 0x1b8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_MasterReceiveBlocking + 0x0000000000000000 0x1e0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_IntMask + 0x0000000000000000 0x10c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .text.I2C_Int_Callback_Install + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .bss.i2cIntCbfArra + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_info 0x0000000000000000 0xf20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_abbrev 0x0000000000000000 0x36f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_loc 0x0000000000000000 0xd09 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_aranges + 0x0000000000000000 0x98 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_ranges 0x0000000000000000 0x2b0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x193 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x877 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_line 0x0000000000000000 0x1e8b out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_str 0x0000000000000000 0x8333d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .debug_frame 0x0000000000000000 0x1c8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_IRQHandler + 0x0000000000000000 0x110 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_Init + 0x0000000000000000 0x92 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_DeInit + 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_ClockConfig + 0x0000000000000000 0x64 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_FifoConfig + 0x0000000000000000 0x4e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_SetClock + 0x0000000000000000 0xb6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_Enable + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_Disable + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_SetTimeOutValue + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_SetDeglitchCount + 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_RxIgnoreEnable + 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_RxIgnoreDisable + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_ClrTxFifo + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_ClrRxFifo + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_ClrIntStatus + 0x0000000000000000 0x36 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_IntMask + 0x0000000000000000 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_Int_Callback_Install + 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_SendData + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_Send_8bits + 0x0000000000000000 0xba out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_Send_16bits + 0x0000000000000000 0xc0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_Send_24bits + 0x0000000000000000 0xbe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_Send_32bits + 0x0000000000000000 0xbc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_Recv_8bits + 0x0000000000000000 0xc0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_Recv_16bits + 0x0000000000000000 0xce out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_Recv_24bits + 0x0000000000000000 0xe2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_Recv_32bits + 0x0000000000000000 0xcc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_SendRecv_8bits + 0x0000000000000000 0xda out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_SendRecv_16bits + 0x0000000000000000 0xde out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_SendRecv_24bits + 0x0000000000000000 0xf2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_SendRecv_32bits + 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_ReceiveData + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_GetTxFifoCount + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_GetRxFifoCount + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_GetIntStatus + 0x0000000000000000 0x26 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_GetBusyStatus + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .text.SPI_GetFifoStatus + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .bss.spiIntCbfArra + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_info 0x0000000000000000 0x1c17 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_abbrev 0x0000000000000000 0x2ef out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_loc 0x0000000000000000 0x23c7 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_aranges + 0x0000000000000000 0x138 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_ranges 0x0000000000000000 0x3a0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x193 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x782 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_line 0x0000000000000000 0x377c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_str 0x0000000000000000 0x831b8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .debug_frame 0x0000000000000000 0x29c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IRRX_IRQHandler + 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IRTX_IRQHandler + 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_Disable.part.1 + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_TxInit + 0x0000000000000000 0x100 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_TxPulseWidthConfig + 0x0000000000000000 0xca out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_TxSWMPulseWidthConfig + 0x0000000000000000 0x3a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_RxInit + 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_DeInit + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_Enable + 0x0000000000000000 0x36 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_Disable + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_TxSWM + 0x0000000000000000 0x24 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_RxFIFOClear + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_SendData + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_SWMSendData + 0x0000000000000000 0x104 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_SendCommand + 0x0000000000000000 0x70 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_SWMSendCommand + 0x0000000000000000 0x78 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_SendNEC + 0x0000000000000000 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_IntMask + 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_ClrIntStatus + 0x0000000000000000 0x36 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_Int_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_GetIntStatus + 0x0000000000000000 0x24 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_GetRxFIFOStatus + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_ReceiveData + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_SWMReceiveData + 0x0000000000000000 0x44 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_ReceiveNEC + 0x0000000000000000 0x3e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_GetRxDataBitCount + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_GetRxFIFOCount + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_LearnToInit + 0x0000000000000000 0x228 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_LearnToReceive + 0x0000000000000000 0x102 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_LearnToSend + 0x0000000000000000 0x50 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_LEDInit + 0x0000000000000000 0x9a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .text.IR_LEDSend + 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .rodata 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .bss.irIntCbfArra + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_info 0x0000000000000000 0x1c72 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_abbrev 0x0000000000000000 0x2d6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_loc 0x0000000000000000 0x1866 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_aranges + 0x0000000000000000 0x118 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_ranges 0x0000000000000000 0x408 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x1cf out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x7f4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_line 0x0000000000000000 0x2a9a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_str 0x0000000000000000 0x83462 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .debug_frame 0x0000000000000000 0x310 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .tcm_code 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_info 0x0000000000000000 0x4ff out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_abbrev 0x0000000000000000 0x10e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_loc 0x0000000000000000 0x84 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0xea out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x251f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x7a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x17 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_line 0x0000000000000000 0x360 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_str 0x0000000000000000 0x210d9 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .debug_frame 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.SEC_AES_IRQHandler + 0x0000000000000000 0x26 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.SEC_GMAC_IRQHandler + 0x0000000000000000 0x26 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_SHA256_Link_Update.part.1 + 0x0000000000000000 0x15e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_SHA_Enable_Link + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_SHA_Disable_Link + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_SHA256_Link_Init + 0x0000000000000000 0x68 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_SHA256_Link_Update + 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_SHA256_Link_Finish + 0x0000000000000000 0x19c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_AES_Init + 0x0000000000000000 0x86 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_AES_Enable_BE + 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_AES_Enable_LE + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_AES_Enable_Link + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_AES_Disable_Link + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_AES_Link_Work + 0x0000000000000000 0x96 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_AES_Set_Hw_Key_Src + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_AES_Set_Key_IV + 0x0000000000000000 0x426 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_AES_Set_Key_IV_BE + 0x0000000000000000 0x252 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_AES_Set_Counter_Byte + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_AES_Crypt + 0x0000000000000000 0xac out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_AES_Finish + 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_Trng_Int_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_Trng_Int_Disable + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_Trng_Int_Read_Trigger + 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_Trng_Int_Read + 0x0000000000000000 0x150 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_LittleEndian_Enable + 0x0000000000000000 0x24 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_GetStatus + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_Clear_Int + 0x0000000000000000 0x1e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_Read_Block + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_Write_Block + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_Write_Immediate + 0x0000000000000000 0x62 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_NREG + 0x0000000000000000 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_RESIZE + 0x0000000000000000 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_MADD + 0x0000000000000000 0x9e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_MSQR + 0x0000000000000000 0x80 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_MEXP + 0x0000000000000000 0x9e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_LSUB + 0x0000000000000000 0x7e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_LSQR + 0x0000000000000000 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_LDIV + 0x0000000000000000 0x80 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_LMUL2N + 0x0000000000000000 0x68 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_LDIV2N + 0x0000000000000000 0x68 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_LMOD2N + 0x0000000000000000 0x6e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_GMAC_Enable_LE + 0x0000000000000000 0x24 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_GMAC_Enable_BE + 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_GMAC_Enable_Link + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_GMAC_Disable_Link + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_GMAC_Link_Work + 0x0000000000000000 0x90 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.SEC_Eng_IntMask + 0x0000000000000000 0x14e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.SEC_Eng_ClrIntStatus + 0x0000000000000000 0x78 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.SEC_Eng_Int_Callback_Install + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.SEC_Eng_GetIntStatus + 0x0000000000000000 0x66 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.SEC_CDET_IRQHandler + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .tcm_code 0x0000000000000000 0x26 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x2c95 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.GPADC_DMA_IRQHandler + 0x0000000000000000 0x13a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Reset + 0x0000000000000000 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Channel_Config + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Scan_Channel_Config + 0x0000000000000000 0x13e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Start + 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Stop + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_FIFO_Cfg + 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Get_FIFO_Count + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_FIFO_Is_Full + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_FIFO_Is_Empty + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Read_FIFO + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Parse_Result + 0x0000000000000000 0x2fe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_IntMask + 0x0000000000000000 0xf4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_IntClr + 0x0000000000000000 0x11e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_GetIntStatus + 0x0000000000000000 0x70 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Int_Callback_Install + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Vbat_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Vbat_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Tsen_Init + 0x0000000000000000 0x60 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.TSEN_Get_V_Error + 0x0000000000000000 0x102 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .sclock_rlt_code + 0x0000000000000000 0x15c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_SET_TSVBE_LOW + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_SET_TSVBE_HIGH + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.TSEN_Get_Temp + 0x0000000000000000 0x146 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Mic_Init + 0x0000000000000000 0xa4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_MIC_Bias_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_MIC_Bias_Disable + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .text.ADC_Init + 0x0000000000000000 0x132 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .bss.adcIntCbfArra + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .data.adcGainCoeffCal + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .rodata.ADC_Parse_Result.cst4 + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .rodata.ADC_Parse_Result.cst8 + 0x0000000000000000 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .rodata.TSEN_Get_Temp.cst8 + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .rodata.cst8 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_info 0x0000000000000000 0x1910 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_abbrev 0x0000000000000000 0x3aa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_loc 0x0000000000000000 0x133f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_aranges + 0x0000000000000000 0x110 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_ranges 0x0000000000000000 0x2e8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x102 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x1ad7 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x43e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x82 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_line 0x0000000000000000 0x340e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_str 0x0000000000000000 0x22b86 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .debug_frame 0x0000000000000000 0x2f8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GLB_DAC_Init + 0x0000000000000000 0x56 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GLB_DAC_Set_ChanA_Config + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GLB_DAC_Set_ChanB_Config + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GPIP_Set_DAC_ChanB_SRC_SEL + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GPIP_Set_DAC_ChanA_SRC_SEL + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GPIP_DAC_ChanB_Enable + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GPIP_DAC_ChanB_Disable + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GPIP_DAC_ChanA_Enable + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GPIP_DAC_ChanA_Disable + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GPIP_Set_DAC_DMA_TX_FORMAT_SEL + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GPIP_Set_DAC_DMA_TX_Enable + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GPIP_Set_DAC_DMA_TX_Disable + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GPIP_DAC_DMA_WriteData + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GLB_GPIP_DAC_Init + 0x0000000000000000 0x84 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GLB_GPIP_DAC_Set_ChanA_Config + 0x0000000000000000 0x42 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GLB_GPIP_DAC_Set_ChanB_Config + 0x0000000000000000 0x44 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GLB_DAC_Set_ChanA_Value + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .text.GLB_DAC_Set_ChanB_Value + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_info 0x0000000000000000 0x783 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_abbrev 0x0000000000000000 0x194 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_loc 0x0000000000000000 0x3c2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_aranges + 0x0000000000000000 0xa8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_ranges 0x0000000000000000 0x98 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0xe1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x1ad7 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x43e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_macro 0x0000000000000000 0x35 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_line 0x0000000000000000 0xd14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_str 0x0000000000000000 0x47cbe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .debug_frame 0x0000000000000000 0x130 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text.I2S_SetBclkPeriod + 0x0000000000000000 0x70 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text.I2S_Init + 0x0000000000000000 0xfc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text.I2S_FifoConfig + 0x0000000000000000 0x68 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text.I2S_IOConfig + 0x0000000000000000 0x46 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text.I2S_Enable + 0x0000000000000000 0x3e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text.I2S_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text.I2S_Read + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text.I2S_Write + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text.I2S_Mute + 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text.I2S_SetFifoJustified + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text.I2S_GetTxFIFO_AvlCnt + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text.I2S_GetRxFIFO_AvlCnt + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .text.I2S_Flush + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_info 0x0000000000000000 0x73a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_abbrev 0x0000000000000000 0x1cf out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_loc 0x0000000000000000 0x4a9 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_aranges + 0x0000000000000000 0x80 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_ranges 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x187 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x6be out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_line 0x0000000000000000 0xe38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_str 0x0000000000000000 0x823a5 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .debug_frame 0x0000000000000000 0xf4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .text.KYS_IRQHandler + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .text.KYS_Init + 0x0000000000000000 0x7c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .text.KYS_Enable + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .text.KYS_Disable + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .text.KYS_IntMask + 0x0000000000000000 0x1e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .text.KYS_IntClear + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .text.KYS_Int_Callback_Install + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .text.KYS_GetIntStatus + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .text.KYS_GetKeycode + 0x0000000000000000 0x32 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .sbss.KYSIntCbfArra + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_info 0x0000000000000000 0x548 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_abbrev 0x0000000000000000 0x17d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_loc 0x0000000000000000 0x197 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_aranges + 0x0000000000000000 0x60 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_ranges 0x0000000000000000 0x50 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0xca out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0x1c6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_line 0x0000000000000000 0x68f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_str 0x0000000000000000 0xa401 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .debug_frame 0x0000000000000000 0xac out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_IRQHandler + 0x0000000000000000 0x126 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_Phy_Read + 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_Phy_Write + 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_Phy_Reset + 0x0000000000000000 0x70 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_Phy_AutoNegotiate + 0x0000000000000000 0x1ee out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_Phy_Linkup + 0x0000000000000000 0xec out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_Init + 0x0000000000000000 0x12a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_PhyInit + 0x0000000000000000 0xee out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_DeInit + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_DMADescListInit + 0x0000000000000000 0xcc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_DMATxDescGet + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_StartTx + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_Enable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_Enable_TX + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_Disable_TX + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_Disable + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_IntMask + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_GetIntStatus + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_ClrIntStatus + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_Int_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_TxPauseReq + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .text.EMAC_SetHash + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .bss.emacIntCbfArra + 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_info 0x0000000000000000 0x12ec out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_abbrev 0x0000000000000000 0x387 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_loc 0x0000000000000000 0xa19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_aranges + 0x0000000000000000 0xc0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_ranges 0x0000000000000000 0x218 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x18d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x7b3 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x2f8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_line 0x0000000000000000 0x2007 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_str 0x0000000000000000 0x82af0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .debug_frame 0x0000000000000000 0x228 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC_Init + 0x0000000000000000 0xd2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC_DeInit + 0x0000000000000000 0x56 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC_Enable + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC_Disable + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC_SetIntMask + 0x0000000000000000 0x54 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC_GetIntMask + 0x0000000000000000 0x4e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC_Int_Callback_Install + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC_Get_Int_Status + 0x0000000000000000 0x44 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC_Clr_Int_Status + 0x0000000000000000 0x44 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC_Get_Sample_Direction + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC_Get_Err_Cnt + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC_Get_Sample_Val + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC_IntHandler + 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC0_IRQHandler + 0x0000000000000000 0x3a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC1_IRQHandler + 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .text.QDEC2_IRQHandler + 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .bss.qdecIntCbfArra + 0x0000000000000000 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .rodata.qdecAddr + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_info 0x0000000000000000 0xba6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_abbrev 0x0000000000000000 0x21e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_loc 0x0000000000000000 0x8a3 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_aranges + 0x0000000000000000 0x98 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_ranges 0x0000000000000000 0xa0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0xc9 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0xb45 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_macro 0x0000000000000000 0x35 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_line 0x0000000000000000 0xe99 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_str 0x0000000000000000 0xbac9 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .debug_frame 0x0000000000000000 0x188 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_IRQHandler + 0x0000000000000000 0x174 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Init + 0x0000000000000000 0x1f0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Deinit + 0x0000000000000000 0x2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Clock_Gate + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Hsync_Crop + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Vsync_Crop + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Set_Hsync_Total_Count + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Set_Vsync_Total_Count + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Interleave_Get_Frame_Info + 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Planar_Get_Frame_Info + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Get_Frame_Count_0 + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Get_Frame_Count_1 + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Interleave_Pop_Frame + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Planar_Pop_Frame + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_IntMask + 0x0000000000000000 0xa2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_IntClr + 0x0000000000000000 0xac out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .text.CAM_Int_Callback_Install + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .bss.camIntCbfArra + 0x0000000000000000 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_info 0x0000000000000000 0xc54 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_abbrev 0x0000000000000000 0x2ca out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_loc 0x0000000000000000 0x45d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_aranges + 0x0000000000000000 0xb0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_ranges 0x0000000000000000 0x178 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x187 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0xed1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_line 0x0000000000000000 0x15d0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_str 0x0000000000000000 0x87122 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .debug_frame 0x0000000000000000 0x170 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_IRQHandler + 0x0000000000000000 0xd0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Init + 0x0000000000000000 0x172 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Packet_Config + 0x0000000000000000 0x5c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Set_YUYV_Order_Interleave + 0x0000000000000000 0x4e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Set_YUYV_Order_Planar + 0x0000000000000000 0x3a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Deinit + 0x0000000000000000 0x2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Enable + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Disable + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_SW_Enable + 0x0000000000000000 0x1e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_SW_Run + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Get_Frame_Info + 0x0000000000000000 0x32 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Get_Frame_Count + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Pop_Frame + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Current_Block_Clear + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Get_Current_Block + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Block_Is_Full + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Current_Block_Is_Start + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Current_Block_Is_End + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Get_Remain_Bit + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Set_Frame_Threshold + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_IntMask + 0x0000000000000000 0xa2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_IntClr + 0x0000000000000000 0x94 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .text.MJPEG_Int_Callback_Install + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .bss.mjpegIntCbfArra + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_info 0x0000000000000000 0xb01 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_abbrev 0x0000000000000000 0x2bb out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_loc 0x0000000000000000 0x654 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_aranges + 0x0000000000000000 0xd0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_ranges 0x0000000000000000 0xc0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x187 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x14c5 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_line 0x0000000000000000 0x1440 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_str 0x0000000000000000 0x89ade out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .debug_frame 0x0000000000000000 0x1b0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .tcm_code 0x0000000000000000 0x152 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .bss.flashCfg 0x0000000000000000 0x54 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_info 0x0000000000000000 0x7a0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_abbrev 0x0000000000000000 0x194 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_loc 0x0000000000000000 0x1c6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_aranges + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_ranges 0x0000000000000000 0x70 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0xfe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x251f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_line 0x0000000000000000 0x578 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_str 0x0000000000000000 0x1ef97 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .debug_frame 0x0000000000000000 0xb0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x622e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_IRQHandler + 0x0000000000000000 0x84 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_Channel_Init + 0x0000000000000000 0x102 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_Channel_Update + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_Channel_Set_Div + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_Channel_Set_Threshold1 + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_Channel_Set_Threshold2 + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_Channel_Set_Period + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_Channel_Get + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_Channel_Enable + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_Channel_Disable + 0x0000000000000000 0x26 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_SW_Mode + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_SW_Force_Value + 0x0000000000000000 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_Channel_Fource_Output + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_IntMask + 0x0000000000000000 0x2c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .text.PWM_Int_Callback_Install + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .bss.PWMIntCbfArra + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_info 0x0000000000000000 0xb85 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_abbrev 0x0000000000000000 0x320 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_loc 0x0000000000000000 0x803 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_aranges + 0x0000000000000000 0x90 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_ranges 0x0000000000000000 0xe8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x199 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0xbb4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x2d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_line 0x0000000000000000 0xd55 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_str 0x0000000000000000 0x80317 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .debug_frame 0x0000000000000000 0x158 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .text.AON_ACOMP_Init + 0x0000000000000000 0xe4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .text.AON_ACOMP_Enable + 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .text.AON_ACOMP_Get_Result + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_info 0x0000000000000000 0x2e1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_abbrev 0x0000000000000000 0x11b out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_loc 0x0000000000000000 0x15c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_aranges + 0x0000000000000000 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_ranges 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0xc9 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x1ad7 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_macro 0x0000000000000000 0x27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_line 0x0000000000000000 0x60d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_str 0x0000000000000000 0x174ce out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .debug_frame 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .text.Sec_Dbg_Read_Chip_ID + 0x0000000000000000 0x42 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .text.Sec_Dbg_Read_WiFi_MAC + 0x0000000000000000 0x32 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .text.Sec_Dbg_Read_Dbg_Mode + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .text.Sec_Dbg_Read_Dbg_Enable + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_info 0x0000000000000000 0x140 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_abbrev 0x0000000000000000 0xee out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_loc 0x0000000000000000 0x26 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_aranges + 0x0000000000000000 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_ranges 0x0000000000000000 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0xc3 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0x1de out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_line 0x0000000000000000 0x433 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_str 0x0000000000000000 0xa531 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .debug_frame 0x0000000000000000 0x50 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .text.I2C_SDA_OUT.part.0 + 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .text.I2C_SDA_IN.part.1 + 0x0000000000000000 0x3a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .text.I2C_GPIO_Sim_Init + 0x0000000000000000 0x5a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .text.I2C_Start + 0x0000000000000000 0x8c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .text.I2C_Stop + 0x0000000000000000 0x96 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .text.I2C_GetAck + 0x0000000000000000 0xac out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .text.I2C_SendByte + 0x0000000000000000 0xc8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .text.I2C_ReadByte + 0x0000000000000000 0x136 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .text.SCCB_Init + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .text.SCCB_Write + 0x0000000000000000 0x84 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .text.SCCB_Read + 0x0000000000000000 0x9a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .sbss.sclPin 0x0000000000000000 0x1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .sbss.sdaPin 0x0000000000000000 0x1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .sbss.sda_out 0x0000000000000000 0x1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_info 0x0000000000000000 0xad6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_abbrev 0x0000000000000000 0x2e7 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_loc 0x0000000000000000 0x376 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_aranges + 0x0000000000000000 0x70 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_ranges 0x0000000000000000 0x100 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x19d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x622e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_line 0x0000000000000000 0xee2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_str 0x0000000000000000 0x7eb88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .debug_frame 0x0000000000000000 0x1e8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .tcm_code 0x0000000000000000 0x8f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .text.ff_disk_initialize + 0x0000000000000000 0x24 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .text.ff_disk_read + 0x0000000000000000 0x64 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .text.ff_disk_write + 0x0000000000000000 0x64 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .bss.flashCfg 0x0000000000000000 0x57 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_info 0x0000000000000000 0x16a1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_abbrev 0x0000000000000000 0x2f2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_loc 0x0000000000000000 0x16d6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_aranges + 0x0000000000000000 0x98 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_ranges 0x0000000000000000 0xa0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x110 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x251f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_line 0x0000000000000000 0x1bc4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_str 0x0000000000000000 0x214b4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .debug_frame 0x0000000000000000 0x3a4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .tcm_code 0x0000000000000000 0xbc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .tcm_const 0x0000000000000000 0x57 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_info 0x0000000000000000 0x6f0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_abbrev 0x0000000000000000 0x155 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_loc 0x0000000000000000 0xf2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_aranges + 0x0000000000000000 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_ranges 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x19a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x622e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_line 0x0000000000000000 0x56d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_str 0x0000000000000000 0x7edb6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .debug_frame 0x0000000000000000 0x4c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .tcm_code 0x0000000000000000 0xf8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Gpio_Init + 0x0000000000000000 0xf6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_CS_High + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_CS_Low + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Clock_Init + 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_SPI_Init + 0x0000000000000000 0x54 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_SendRecv + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_WriteDisable + 0x0000000000000000 0x4c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Get_BlockLock + 0x0000000000000000 0x72 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_WriteEnable + 0x0000000000000000 0x7e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Set_BlockLock + 0x0000000000000000 0x56 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Get_Feature + 0x0000000000000000 0x72 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Set_Feature + 0x0000000000000000 0x56 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Get_Status + 0x0000000000000000 0x72 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Set_Status + 0x0000000000000000 0x56 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_PageReadToCache + 0x0000000000000000 0xfe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_ReadFromCache + 0x0000000000000000 0xc2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_CheckBadBlock + 0x0000000000000000 0x56 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_PageRead + 0x0000000000000000 0x7e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_PageReadToPsram.constprop.1 + 0x0000000000000000 0x8c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_PagesRead + 0x0000000000000000 0x128 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_ReadID + 0x0000000000000000 0x84 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_ProgramLoad + 0x0000000000000000 0xc0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_ProgramExecute + 0x0000000000000000 0xe2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_PageProgram + 0x0000000000000000 0x5c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_PageProgramFromPsram.constprop.0 + 0x0000000000000000 0xa8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_PagesProgram + 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_InternalDataMove + 0x0000000000000000 0x2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_ProgramLoadRandomData + 0x0000000000000000 0x2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_BlockErase + 0x0000000000000000 0xbe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Reset + 0x0000000000000000 0x2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_WriteUnprotect + 0x0000000000000000 0x2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Check_ECC_Status + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Disk_Status + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Disk_Initialize + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Disk_Read + 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Disk_Write + 0x0000000000000000 0x170 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Disk_Ioctl + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Translate_Result_Code + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .text.Nandflash_Init + 0x0000000000000000 0x3e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .rodata 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .data.nfCfg 0x0000000000000000 0xd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .rodata.Nandflash_BlockErase.str1.4 + 0x0000000000000000 0x32 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .rodata.Nandflash_PageReadToCache.str1.4 + 0x0000000000000000 0x3e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .rodata.Nandflash_ProgramExecute.str1.4 + 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .rodata.Nandflash_ProgramLoad.str1.4 + 0x0000000000000000 0x39 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .rodata.Nandflash_ReadFromCache.str1.4 + 0x0000000000000000 0x42 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .rodata.Nandflash_WriteEnable.str1.4 + 0x0000000000000000 0x39 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .srodata 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_info 0x0000000000000000 0x324c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_abbrev 0x0000000000000000 0x4c1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_loc 0x0000000000000000 0x1ec2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_aranges + 0x0000000000000000 0x148 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_ranges 0x0000000000000000 0x310 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x1ed out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x1ad7 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x788 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x106 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0xf5 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x8e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0xa0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_macro 0x0000000000000000 0x1d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_line 0x0000000000000000 0x2411 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_str 0x0000000000000000 0x84a44 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .comment 0x0000000000000000 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .debug_frame 0x0000000000000000 0x61c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .riscv.attributes + 0x0000000000000000 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Disable + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_EPx_Xfer_Size + 0x0000000000000000 0xd4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_EPx_IN_Busy + 0x0000000000000000 0x100 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_EPx_IN_Stall + 0x0000000000000000 0xf2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_EPx_OUT_Busy + 0x0000000000000000 0x100 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_EPx_OUT_Stall + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_EPx_STALL + 0x0000000000000000 0x2c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_EPx_Status + 0x0000000000000000 0xe0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_Frame_Num + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_EPx_Type + 0x0000000000000000 0x96 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_EPx_Dir + 0x0000000000000000 0xf4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_EPx_Dir + 0x0000000000000000 0x92 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_EPx_Size + 0x0000000000000000 0xe0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_EPx_TX_FIFO_Errors + 0x0000000000000000 0x138 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_EPx_RX_FIFO_Errors + 0x0000000000000000 0x138 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Clr_EPx_TX_FIFO_Errors + 0x0000000000000000 0xca out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Clr_EPx_RX_FIFO_Errors + 0x0000000000000000 0xca out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_EPx_TX_DMA_Interface_Config + 0x0000000000000000 0x168 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_EPx_RX_DMA_Interface_Config + 0x0000000000000000 0x168 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_EPx_Write_Data_To_FIFO_DMA + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_EPx_Read_Data_From_FIFO_DMA + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_EPx_TX_FIFO_CNT + 0x0000000000000000 0x9e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_EPx_TX_FIFO_Status + 0x0000000000000000 0x138 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_EPx_RX_FIFO_Status + 0x0000000000000000 0x128 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_Internal_PullUp_Config + 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_LPM_Status + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_LPM_Packet_Attr + 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_LPM_Default_Response + 0x0000000000000000 0x24 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_LPM_Enable + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_LPM_Disable + 0x0000000000000000 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Device_Output_K_State + 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_Current_Packet_PID + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_Current_Packet_EP + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Get_Error_Status + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Clr_Error_Status + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Clr_RstEndIntStatus + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x131 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x5ef out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x1bb out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0xbe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x0000000000000000 0x115 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.USB_Stress_Test_Origin_Init + 0x0000000000000000 0x7e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.USB_Stress_Test_Data_Check + 0x0000000000000000 0x32 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.HAL_PCD_MspDeInit + 0x0000000000000000 0x2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.HAL_PCD_DevConnect + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.HAL_PCD_DevDisconnect + 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.HAL_PCD_EP_Flush + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.HAL_PCD_ActivateRemoteWakeup + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.HAL_PCD_DeActivateRemoteWakeup + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.HAL_PCD_GetState + 0x0000000000000000 0x6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.PCD_WritePMA + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.PCD_ReadPMA + 0x0000000000000000 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.PCD_EP_ISR_Handler + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.USB_HAL_GPIO_Init + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.USB_HAL_Clock_Init + 0x0000000000000000 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.USB_HAL_Interrupts_Init + 0x0000000000000000 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.HAL_PCD_Stop + 0x0000000000000000 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.HAL_PCD_DeInit + 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .bss.USB_Stress_Test_Origin_Data + 0x0000000000000000 0x1000 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .bss.USB_Stress_Test_Recv_Data + 0x0000000000000000 0x1000 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .rodata.USB_Stress_Test_Origin_Init.str1.4 + 0x0000000000000000 0x1e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .sbss.StressTestItem + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x2c95 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x5ef out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x2fed out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x131 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x1bb out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0xbe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x0000000000000000 0x115 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x622e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x0000000000000000 0x1d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x796 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x1ad7 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x1d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x0000000000000000 0x4bd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_dump + 0x0000000000000000 0x84 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_prints + 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_printc + 0x0000000000000000 0x1e out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_get_time_ms + 0x0000000000000000 0x90 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_start_time + 0x0000000000000000 0x8 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_stop_time + 0x0000000000000000 0x2 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_set_alarm_time_callback + 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_set_alarm_time + 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .text.bflb_platform_deinit_time + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .rodata.bflb_platform_dump.str1.4 + 0x0000000000000000 0xa out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .sbss.systick_int_cnt + 0x0000000000000000 0x4 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xbaa out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x2c9b out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x66 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x5ef out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x5f out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x2fed out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x131 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000000000 0x10 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .text 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .data 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .bss 0x0000000000000000 0x0 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x79c out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x16 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x34 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x1f6 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x290 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x88 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x52 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x163c out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xbaa out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x1c out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x40 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x2a out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x58 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x6234 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x189d out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x1454 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x47d out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x79 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xc27 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x1add out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xd67 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x3c out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x2525 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x74 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x19 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xd6 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xb2 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0xdc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x11c out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_macro 0x0000000000000000 0x22 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .group 0x0000000000000000 0xc out/HAL/hal_uart.o + .group 0x0000000000000000 0xc out/HAL/hal_uart.o + .group 0x0000000000000000 0xc out/HAL/hal_uart.o + .group 0x0000000000000000 0xc out/HAL/hal_uart.o + .group 0x0000000000000000 0xc out/HAL/hal_uart.o + .group 0x0000000000000000 0xc out/HAL/hal_uart.o + .group 0x0000000000000000 0xc out/HAL/hal_uart.o + .group 0x0000000000000000 0xc out/HAL/hal_uart.o + .text 0x0000000000000000 0x0 out/HAL/hal_uart.o + .data 0x0000000000000000 0x0 out/HAL/hal_uart.o + .bss 0x0000000000000000 0x0 out/HAL/hal_uart.o + .text.UART_close + 0x0000000000000000 0x8 out/HAL/hal_uart.o + .text.UART_control + 0x0000000000000000 0x8 out/HAL/hal_uart.o + .text.UART_init + 0x0000000000000000 0x5c out/HAL/hal_uart.o + .text.UART_open + 0x0000000000000000 0x40 out/HAL/hal_uart.o + .text.UART_Params_init + 0x0000000000000000 0x3e out/HAL/hal_uart.o + .text.UART_read + 0x0000000000000000 0x8 out/HAL/hal_uart.o + .text.UART_rxFifoDump + 0x0000000000000000 0x8 out/HAL/hal_uart.o + .text.UART_readCancel + 0x0000000000000000 0x8 out/HAL/hal_uart.o + .text.UART_write + 0x0000000000000000 0x8 out/HAL/hal_uart.o + .text.UART_writeCancel + 0x0000000000000000 0x8 out/HAL/hal_uart.o + .text.UART_getDMAAddr + 0x0000000000000000 0x8 out/HAL/hal_uart.o + .text.UART_getDMARxReq + 0x0000000000000000 0x8 out/HAL/hal_uart.o + .text.UART_getDMATxReq + 0x0000000000000000 0x8 out/HAL/hal_uart.o + .rodata.UART_defaultParams + 0x0000000000000000 0x24 out/HAL/hal_uart.o + .sbss.isInitialized + 0x0000000000000000 0x1 out/HAL/hal_uart.o + .debug_info 0x0000000000000000 0x99c out/HAL/hal_uart.o + .debug_abbrev 0x0000000000000000 0x201 out/HAL/hal_uart.o + .debug_loc 0x0000000000000000 0x2ec out/HAL/hal_uart.o + .debug_aranges + 0x0000000000000000 0x80 out/HAL/hal_uart.o + .debug_ranges 0x0000000000000000 0x70 out/HAL/hal_uart.o + .debug_macro 0x0000000000000000 0x56 out/HAL/hal_uart.o + .debug_macro 0x0000000000000000 0x796 out/HAL/hal_uart.o + .debug_macro 0x0000000000000000 0x1c out/HAL/hal_uart.o + .debug_macro 0x0000000000000000 0x34 out/HAL/hal_uart.o + .debug_macro 0x0000000000000000 0x1f6 out/HAL/hal_uart.o + .debug_macro 0x0000000000000000 0x16 out/HAL/hal_uart.o + .debug_macro 0x0000000000000000 0x58 out/HAL/hal_uart.o + .debug_macro 0x0000000000000000 0x16 out/HAL/hal_uart.o + .debug_macro 0x0000000000000000 0x60 out/HAL/hal_uart.o + .debug_line 0x0000000000000000 0x3f9 out/HAL/hal_uart.o + .debug_str 0x0000000000000000 0x3779 out/HAL/hal_uart.o + .comment 0x0000000000000000 0x33 out/HAL/hal_uart.o + .debug_frame 0x0000000000000000 0xf4 out/HAL/hal_uart.o + .riscv.attributes + 0x0000000000000000 0x2e out/HAL/hal_uart.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/diskio.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/diskio.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/diskio.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/diskio.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/diskio.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/diskio.o + .text 0x0000000000000000 0x0 out/3rdParty/fatfs/source/diskio.o + .data 0x0000000000000000 0x0 out/3rdParty/fatfs/source/diskio.o + .bss 0x0000000000000000 0x0 out/3rdParty/fatfs/source/diskio.o + .text.disk_driver_callback_init + 0x0000000000000000 0x82 out/3rdParty/fatfs/source/diskio.o + .text.disk_status + 0x0000000000000000 0x5e out/3rdParty/fatfs/source/diskio.o + .text.disk_initialize + 0x0000000000000000 0x5e out/3rdParty/fatfs/source/diskio.o + .text.disk_read + 0x0000000000000000 0x70 out/3rdParty/fatfs/source/diskio.o + .text.disk_write + 0x0000000000000000 0x70 out/3rdParty/fatfs/source/diskio.o + .text.disk_ioctl + 0x0000000000000000 0x6e out/3rdParty/fatfs/source/diskio.o + .bss.pDiskioDriver + 0x0000000000000000 0x40 out/3rdParty/fatfs/source/diskio.o + .debug_info 0x0000000000000000 0x4c8 out/3rdParty/fatfs/source/diskio.o + .debug_abbrev 0x0000000000000000 0x1a0 out/3rdParty/fatfs/source/diskio.o + .debug_loc 0x0000000000000000 0x528 out/3rdParty/fatfs/source/diskio.o + .debug_aranges + 0x0000000000000000 0x48 out/3rdParty/fatfs/source/diskio.o + .debug_ranges 0x0000000000000000 0x38 out/3rdParty/fatfs/source/diskio.o + .debug_macro 0x0000000000000000 0x6b out/3rdParty/fatfs/source/diskio.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/fatfs/source/diskio.o + .debug_macro 0x0000000000000000 0x106 out/3rdParty/fatfs/source/diskio.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/fatfs/source/diskio.o + .debug_macro 0x0000000000000000 0xef out/3rdParty/fatfs/source/diskio.o + .debug_macro 0x0000000000000000 0x8e out/3rdParty/fatfs/source/diskio.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/fatfs/source/diskio.o + .debug_line 0x0000000000000000 0x766 out/3rdParty/fatfs/source/diskio.o + .debug_str 0x0000000000000000 0x36f6 out/3rdParty/fatfs/source/diskio.o + .comment 0x0000000000000000 0x33 out/3rdParty/fatfs/source/diskio.o + .debug_frame 0x0000000000000000 0x128 out/3rdParty/fatfs/source/diskio.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/fatfs/source/diskio.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/ff.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/ff.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/ff.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/ff.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/ff.o + .text 0x0000000000000000 0x0 out/3rdParty/fatfs/source/ff.o + .data 0x0000000000000000 0x0 out/3rdParty/fatfs/source/ff.o + .bss 0x0000000000000000 0x0 out/3rdParty/fatfs/source/ff.o + .text.get_ldnumber + 0x0000000000000000 0x4e out/3rdParty/fatfs/source/ff.o + .text.validate + 0x0000000000000000 0x4e out/3rdParty/fatfs/source/ff.o + .text.mem_cpy.part.0 + 0x0000000000000000 0x14 out/3rdParty/fatfs/source/ff.o + .text.sync_window.part.6 + 0x0000000000000000 0x66 out/3rdParty/fatfs/source/ff.o + .text.dir_clear + 0x0000000000000000 0xa4 out/3rdParty/fatfs/source/ff.o + .text.sync_fs 0x0000000000000000 0xfc out/3rdParty/fatfs/source/ff.o + .text.move_window.part.7 + 0x0000000000000000 0x4e out/3rdParty/fatfs/source/ff.o + .text.check_fs + 0x0000000000000000 0xce out/3rdParty/fatfs/source/ff.o + .text.put_fat.part.9 + 0x0000000000000000 0x1b6 out/3rdParty/fatfs/source/ff.o + .text.get_fat.isra.10 + 0x0000000000000000 0x12e out/3rdParty/fatfs/source/ff.o + .text.dir_sdi 0x0000000000000000 0xf2 out/3rdParty/fatfs/source/ff.o + .text.create_chain + 0x0000000000000000 0x162 out/3rdParty/fatfs/source/ff.o + .text.remove_chain + 0x0000000000000000 0xc2 out/3rdParty/fatfs/source/ff.o + .text.dir_next + 0x0000000000000000 0x114 out/3rdParty/fatfs/source/ff.o + .text.dir_remove + 0x0000000000000000 0x9c out/3rdParty/fatfs/source/ff.o + .text.dir_find + 0x0000000000000000 0x20e out/3rdParty/fatfs/source/ff.o + .text.follow_path + 0x0000000000000000 0x428 out/3rdParty/fatfs/source/ff.o + .text.dir_register + 0x0000000000000000 0x388 out/3rdParty/fatfs/source/ff.o + .text.get_fileinfo + 0x0000000000000000 0x22a out/3rdParty/fatfs/source/ff.o + .text.mount_volume + 0x0000000000000000 0x424 out/3rdParty/fatfs/source/ff.o + .text.dir_read.constprop.14 + 0x0000000000000000 0x1a2 out/3rdParty/fatfs/source/ff.o + .text.f_mount 0x0000000000000000 0x6a out/3rdParty/fatfs/source/ff.o + .text.f_open 0x0000000000000000 0x2ac out/3rdParty/fatfs/source/ff.o + .text.f_read 0x0000000000000000 0x21a out/3rdParty/fatfs/source/ff.o + .text.f_write 0x0000000000000000 0x252 out/3rdParty/fatfs/source/ff.o + .text.f_sync 0x0000000000000000 0x106 out/3rdParty/fatfs/source/ff.o + .text.f_close 0x0000000000000000 0x34 out/3rdParty/fatfs/source/ff.o + .text.f_lseek 0x0000000000000000 0x314 out/3rdParty/fatfs/source/ff.o + .text.f_opendir + 0x0000000000000000 0xb6 out/3rdParty/fatfs/source/ff.o + .text.f_closedir + 0x0000000000000000 0x20 out/3rdParty/fatfs/source/ff.o + .text.f_readdir + 0x0000000000000000 0x70 out/3rdParty/fatfs/source/ff.o + .text.f_stat 0x0000000000000000 0x56 out/3rdParty/fatfs/source/ff.o + .text.f_getfree + 0x0000000000000000 0x144 out/3rdParty/fatfs/source/ff.o + .text.f_truncate + 0x0000000000000000 0xf8 out/3rdParty/fatfs/source/ff.o + .text.f_unlink + 0x0000000000000000 0xcc out/3rdParty/fatfs/source/ff.o + .text.f_mkdir 0x0000000000000000 0x1d4 out/3rdParty/fatfs/source/ff.o + .text.f_rename + 0x0000000000000000 0x18c out/3rdParty/fatfs/source/ff.o + .text.f_mkfs 0x0000000000000000 0x92c out/3rdParty/fatfs/source/ff.o + .bss.FatFs 0x0000000000000000 0xc out/3rdParty/fatfs/source/ff.o + .bss.LfnBuf 0x0000000000000000 0x200 out/3rdParty/fatfs/source/ff.o + .rodata.ExCvt 0x0000000000000000 0x80 out/3rdParty/fatfs/source/ff.o + .rodata.LfnOfs + 0x0000000000000000 0xd out/3rdParty/fatfs/source/ff.o + .rodata.check_fs.str1.4 + 0x0000000000000000 0x6 out/3rdParty/fatfs/source/ff.o + .rodata.cst.2269 + 0x0000000000000000 0xe out/3rdParty/fatfs/source/ff.o + .rodata.cst32.2270 + 0x0000000000000000 0xe out/3rdParty/fatfs/source/ff.o + .rodata.defopt.2271 + 0x0000000000000000 0x10 out/3rdParty/fatfs/source/ff.o + .rodata.f_mkfs.str1.4 + 0x0000000000000000 0x34 out/3rdParty/fatfs/source/ff.o + .rodata.follow_path.str1.4 + 0x0000000000000000 0x13 out/3rdParty/fatfs/source/ff.o + .sbss.Fsid 0x0000000000000000 0x2 out/3rdParty/fatfs/source/ff.o + .debug_info 0x0000000000000000 0x5cdb out/3rdParty/fatfs/source/ff.o + .debug_abbrev 0x0000000000000000 0x37e out/3rdParty/fatfs/source/ff.o + .debug_loc 0x0000000000000000 0x8194 out/3rdParty/fatfs/source/ff.o + .debug_aranges + 0x0000000000000000 0x148 out/3rdParty/fatfs/source/ff.o + .debug_ranges 0x0000000000000000 0xf00 out/3rdParty/fatfs/source/ff.o + .debug_macro 0x0000000000000000 0x592 out/3rdParty/fatfs/source/ff.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/fatfs/source/ff.o + .debug_macro 0x0000000000000000 0x106 out/3rdParty/fatfs/source/ff.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/fatfs/source/ff.o + .debug_macro 0x0000000000000000 0xef out/3rdParty/fatfs/source/ff.o + .debug_macro 0x0000000000000000 0x8e out/3rdParty/fatfs/source/ff.o + .debug_line 0x0000000000000000 0xb909 out/3rdParty/fatfs/source/ff.o + .debug_str 0x0000000000000000 0x75bd out/3rdParty/fatfs/source/ff.o + .comment 0x0000000000000000 0x33 out/3rdParty/fatfs/source/ff.o + .debug_frame 0x0000000000000000 0x8c4 out/3rdParty/fatfs/source/ff.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/fatfs/source/ff.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/ffunicode.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/ffunicode.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/ffunicode.o + .group 0x0000000000000000 0xc out/3rdParty/fatfs/source/ffunicode.o + .text 0x0000000000000000 0x0 out/3rdParty/fatfs/source/ffunicode.o + .data 0x0000000000000000 0x0 out/3rdParty/fatfs/source/ffunicode.o + .bss 0x0000000000000000 0x0 out/3rdParty/fatfs/source/ffunicode.o + .text.ff_uni2oem + 0x0000000000000000 0x5a out/3rdParty/fatfs/source/ffunicode.o + .text.ff_oem2uni + 0x0000000000000000 0x2e out/3rdParty/fatfs/source/ffunicode.o + .text.ff_wtoupper + 0x0000000000000000 0x11a out/3rdParty/fatfs/source/ffunicode.o + .rodata.cvt1.1592 + 0x0000000000000000 0x1f2 out/3rdParty/fatfs/source/ffunicode.o + .rodata.cvt2.1593 + 0x0000000000000000 0xbc out/3rdParty/fatfs/source/ffunicode.o + .rodata.uc437 0x0000000000000000 0x100 out/3rdParty/fatfs/source/ffunicode.o + .debug_info 0x0000000000000000 0x266 out/3rdParty/fatfs/source/ffunicode.o + .debug_abbrev 0x0000000000000000 0xed out/3rdParty/fatfs/source/ffunicode.o + .debug_loc 0x0000000000000000 0x62c out/3rdParty/fatfs/source/ffunicode.o + .debug_aranges + 0x0000000000000000 0x30 out/3rdParty/fatfs/source/ffunicode.o + .debug_ranges 0x0000000000000000 0x20 out/3rdParty/fatfs/source/ffunicode.o + .debug_macro 0x0000000000000000 0x44 out/3rdParty/fatfs/source/ffunicode.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/fatfs/source/ffunicode.o + .debug_macro 0x0000000000000000 0x106 out/3rdParty/fatfs/source/ffunicode.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/fatfs/source/ffunicode.o + .debug_macro 0x0000000000000000 0xef out/3rdParty/fatfs/source/ffunicode.o + .debug_line 0x0000000000000000 0x50e out/3rdParty/fatfs/source/ffunicode.o + .debug_str 0x0000000000000000 0x3363 out/3rdParty/fatfs/source/ffunicode.o + .comment 0x0000000000000000 0x33 out/3rdParty/fatfs/source/ffunicode.o + .debug_frame 0x0000000000000000 0x40 out/3rdParty/fatfs/source/ffunicode.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/fatfs/source/ffunicode.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/tasks.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/tasks.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvSearchForNameWithinSingleList + 0x0000000000000000 0x66 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvAddCurrentTaskToDelayedList + 0x0000000000000000 0xd8 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvResetNextTaskUnblockTime.part.0 + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvInitialiseNewTask.isra.2 + 0x0000000000000000 0xe0 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvDeleteTCB + 0x0000000000000000 0x46 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskEnterCritical.part.5 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskExitCritical.part.6 + 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvAddNewTaskToReadyList + 0x0000000000000000 0x1c0 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvIdleTask + 0x0000000000000000 0x96 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskCreateStatic + 0x0000000000000000 0xb8 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskCreate + 0x0000000000000000 0x90 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskDelete + 0x0000000000000000 0x152 out/3rdParty/FreeRTOS/Source/tasks.o + .text.eTaskGetState + 0x0000000000000000 0xda out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskPriorityGet + 0x0000000000000000 0x56 out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskPriorityGetFromISR + 0x0000000000000000 0x12 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPrioritySet + 0x0000000000000000 0x142 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskResume + 0x0000000000000000 0xe4 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskResumeFromISR + 0x0000000000000000 0xd8 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskStartScheduler + 0x0000000000000000 0x88 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskEndScheduler + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSuspendAll + 0x0000000000000000 0x10 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetTickCount + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetTickCountFromISR + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskGetNumberOfTasks + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.pcTaskGetName + 0x0000000000000000 0x2c out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskIncrementTick + 0x0000000000000000 0x1b6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskResumeAll + 0x0000000000000000 0x1d6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskDelayUntil + 0x0000000000000000 0x8e out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskDelay + 0x0000000000000000 0x4e out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetHandle + 0x0000000000000000 0xce out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskCatchUpTicks + 0x0000000000000000 0x42 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskAbortDelay + 0x0000000000000000 0xec out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSwitchContext + 0x0000000000000000 0xd6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSuspend + 0x0000000000000000 0x190 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPlaceOnEventList + 0x0000000000000000 0x3c out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPlaceOnUnorderedEventList + 0x0000000000000000 0x66 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPlaceOnEventListRestricted + 0x0000000000000000 0x46 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskRemoveFromEventList + 0x0000000000000000 0xac out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskRemoveFromUnorderedEventList + 0x0000000000000000 0xb6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSetTimeOutState + 0x0000000000000000 0x6c out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskInternalSetTimeOutState + 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskCheckForTimeOut + 0x0000000000000000 0xd2 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskMissedYield + 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskGetTaskNumber + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskSetTaskNumber + 0x0000000000000000 0x6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskGetInfo + 0x0000000000000000 0xe4 out/3rdParty/FreeRTOS/Source/tasks.o + .text.prvListTasksWithinSingleList.part.9 + 0x0000000000000000 0x90 out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskGetSystemState + 0x0000000000000000 0x12a out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetCurrentTaskHandle + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGetSchedulerState + 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskPriorityInherit + 0x0000000000000000 0xda out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskPriorityDisinherit + 0x0000000000000000 0xe6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskPriorityDisinheritAfterTimeout + 0x0000000000000000 0xf6 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskEnterCritical + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskExitCritical + 0x0000000000000000 0x20 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskList + 0x0000000000000000 0x11e out/3rdParty/FreeRTOS/Source/tasks.o + .text.uxTaskResetEventItemValue + 0x0000000000000000 0x1a out/3rdParty/FreeRTOS/Source/tasks.o + .text.pvTaskIncrementMutexHeldCount + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/tasks.o + .text.ulTaskNotifyTake + 0x0000000000000000 0xba out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskNotifyWait + 0x0000000000000000 0xf4 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGenericNotify + 0x0000000000000000 0x14c out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskGenericNotifyFromISR + 0x0000000000000000 0x134 out/3rdParty/FreeRTOS/Source/tasks.o + .text.vTaskNotifyGiveFromISR + 0x0000000000000000 0xd4 out/3rdParty/FreeRTOS/Source/tasks.o + .text.xTaskNotifyStateClear + 0x0000000000000000 0x66 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.pxReadyTasksLists + 0x0000000000000000 0x8c out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xDelayedTaskList1 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xDelayedTaskList2 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xPendingReadyList + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xSuspendedTaskList + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .bss.xTasksWaitingTermination + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/tasks.o + .rodata.CSWTCH.183 + 0x0000000000000000 0x5 out/3rdParty/FreeRTOS/Source/tasks.o + .rodata.vTaskList.str1.4 + 0x0000000000000000 0xf out/3rdParty/FreeRTOS/Source/tasks.o + .rodata.vTaskStartScheduler.str1.4 + 0x0000000000000000 0x5 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.pxCurrentTCB + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.pxDelayedTaskList + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.pxOverflowDelayedTaskList + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxCurrentNumberOfTasks + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxDeletedTasksWaitingCleanUp + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxSchedulerSuspended + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxTaskNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.uxTopReadyPriority + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xNextTaskUnblockTime + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xNumOfOverflows + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xPendedTicks + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xSchedulerRunning + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xTickCount + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .sbss.xYieldPending + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_info 0x0000000000000000 0x34e6 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_abbrev 0x0000000000000000 0x466 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_loc 0x0000000000000000 0x2b4b out/3rdParty/FreeRTOS/Source/tasks.o + .debug_aranges + 0x0000000000000000 0x210 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_ranges 0x0000000000000000 0x748 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x17c out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x91 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_macro 0x0000000000000000 0x10 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_line 0x0000000000000000 0x5760 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_str 0x0000000000000000 0x8fe5 out/3rdParty/FreeRTOS/Source/tasks.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/tasks.o + .debug_frame 0x0000000000000000 0xab0 out/3rdParty/FreeRTOS/Source/tasks.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/tasks.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/list.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/list.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/list.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/list.o + .text.vListInitialise + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/list.o + .text.vListInitialiseItem + 0x0000000000000000 0x6 out/3rdParty/FreeRTOS/Source/list.o + .text.vListInsertEnd + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/list.o + .text.vListInsert + 0x0000000000000000 0x32 out/3rdParty/FreeRTOS/Source/list.o + .text.uxListRemove + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/list.o + .debug_info 0x0000000000000000 0x2a9 out/3rdParty/FreeRTOS/Source/list.o + .debug_abbrev 0x0000000000000000 0x114 out/3rdParty/FreeRTOS/Source/list.o + .debug_loc 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/list.o + .debug_aranges + 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/list.o + .debug_ranges 0x0000000000000000 0x30 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x99 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/list.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/list.o + .debug_line 0x0000000000000000 0x554 out/3rdParty/FreeRTOS/Source/list.o + .debug_str 0x0000000000000000 0x66f8 out/3rdParty/FreeRTOS/Source/list.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/list.o + .debug_frame 0x0000000000000000 0x60 out/3rdParty/FreeRTOS/Source/list.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/list.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/queue.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/queue.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/queue.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/queue.o + .text.prvCopyDataToQueue + 0x0000000000000000 0xb0 out/3rdParty/FreeRTOS/Source/queue.o + .text.prvCopyDataFromQueue + 0x0000000000000000 0x22 out/3rdParty/FreeRTOS/Source/queue.o + .text.prvUnlockQueue + 0x0000000000000000 0xd6 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericReset + 0x0000000000000000 0xb2 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericCreateStatic + 0x0000000000000000 0x94 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericCreate + 0x0000000000000000 0x90 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGetMutexHolder + 0x0000000000000000 0x3c out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGetMutexHolderFromISR + 0x0000000000000000 0x24 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueCreateCountingSemaphoreStatic + 0x0000000000000000 0x4e out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueCreateCountingSemaphore + 0x0000000000000000 0x44 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericSend + 0x0000000000000000 0x1c4 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueCreateMutexStatic + 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGiveMutexRecursive + 0x0000000000000000 0x54 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueCreateMutex + 0x0000000000000000 0x3c out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGenericSendFromISR + 0x0000000000000000 0xce out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueGiveFromISR + 0x0000000000000000 0x8a out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueReceive + 0x0000000000000000 0x1c0 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueSemaphoreTake + 0x0000000000000000 0x216 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueTakeMutexRecursive + 0x0000000000000000 0x5c out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueuePeek + 0x0000000000000000 0x1a4 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueReceiveFromISR + 0x0000000000000000 0xa2 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueuePeekFromISR + 0x0000000000000000 0x70 out/3rdParty/FreeRTOS/Source/queue.o + .text.uxQueueMessagesWaiting + 0x0000000000000000 0x30 out/3rdParty/FreeRTOS/Source/queue.o + .text.uxQueueSpacesAvailable + 0x0000000000000000 0x38 out/3rdParty/FreeRTOS/Source/queue.o + .text.uxQueueMessagesWaitingFromISR + 0x0000000000000000 0x1e out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueDelete + 0x0000000000000000 0x92 out/3rdParty/FreeRTOS/Source/queue.o + .text.uxQueueGetQueueNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueSetQueueNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/queue.o + .text.ucQueueGetQueueType + 0x0000000000000000 0x6 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueIsQueueEmptyFromISR + 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/queue.o + .text.xQueueIsQueueFullFromISR + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueAddToRegistry + 0x0000000000000000 0x28 out/3rdParty/FreeRTOS/Source/queue.o + .text.pcQueueGetName + 0x0000000000000000 0x2a out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueUnregisterQueue + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/queue.o + .text.vQueueWaitForMessageRestricted + 0x0000000000000000 0x80 out/3rdParty/FreeRTOS/Source/queue.o + .bss.xQueueRegistry + 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/queue.o + .debug_info 0x0000000000000000 0x224e out/3rdParty/FreeRTOS/Source/queue.o + .debug_abbrev 0x0000000000000000 0x3ce out/3rdParty/FreeRTOS/Source/queue.o + .debug_loc 0x0000000000000000 0x23f3 out/3rdParty/FreeRTOS/Source/queue.o + .debug_aranges + 0x0000000000000000 0x130 out/3rdParty/FreeRTOS/Source/queue.o + .debug_ranges 0x0000000000000000 0x350 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x102 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/queue.o + .debug_macro 0x0000000000000000 0x87 out/3rdParty/FreeRTOS/Source/queue.o + .debug_line 0x0000000000000000 0x301c out/3rdParty/FreeRTOS/Source/queue.o + .debug_str 0x0000000000000000 0x813f out/3rdParty/FreeRTOS/Source/queue.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/queue.o + .debug_frame 0x0000000000000000 0x5cc out/3rdParty/FreeRTOS/Source/queue.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/queue.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/timers.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/timers.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/timers.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/timers.o + .text.prvCheckForValidListAndQueue + 0x0000000000000000 0x9c out/3rdParty/FreeRTOS/Source/timers.o + .text.prvInsertTimerInActiveList + 0x0000000000000000 0x60 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerCreateTimerTask + 0x0000000000000000 0x6c out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerCreate + 0x0000000000000000 0x80 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerCreateStatic + 0x0000000000000000 0x96 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerGenericCommand + 0x0000000000000000 0xa8 out/3rdParty/FreeRTOS/Source/timers.o + .text.prvSwitchTimerLists + 0x0000000000000000 0x9a out/3rdParty/FreeRTOS/Source/timers.o + .text.prvTimerTask + 0x0000000000000000 0x268 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerGetTimerDaemonTaskHandle + 0x0000000000000000 0x2c out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerGetPeriod + 0x0000000000000000 0x1e out/3rdParty/FreeRTOS/Source/timers.o + .text.vTimerSetReloadMode + 0x0000000000000000 0x56 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerGetExpiryTime + 0x0000000000000000 0x1e out/3rdParty/FreeRTOS/Source/timers.o + .text.pcTimerGetName + 0x0000000000000000 0x1e out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerIsTimerActive + 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/timers.o + .text.pvTimerGetTimerID + 0x0000000000000000 0x30 out/3rdParty/FreeRTOS/Source/timers.o + .text.vTimerSetTimerID + 0x0000000000000000 0x32 out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerPendFunctionCallFromISR + 0x0000000000000000 0x2c out/3rdParty/FreeRTOS/Source/timers.o + .text.xTimerPendFunctionCall + 0x0000000000000000 0x56 out/3rdParty/FreeRTOS/Source/timers.o + .text.uxTimerGetTimerNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .text.vTimerSetTimerNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .bss.ucStaticTimerQueueStorage.2169 + 0x0000000000000000 0x80 out/3rdParty/FreeRTOS/Source/timers.o + .bss.xActiveTimerList1 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/timers.o + .bss.xActiveTimerList2 + 0x0000000000000000 0x14 out/3rdParty/FreeRTOS/Source/timers.o + .bss.xStaticTimerQueue.2168 + 0x0000000000000000 0x50 out/3rdParty/FreeRTOS/Source/timers.o + .rodata.prvCheckForValidListAndQueue.str1.4 + 0x0000000000000000 0x5 out/3rdParty/FreeRTOS/Source/timers.o + .rodata.xTimerCreateTimerTask.str1.4 + 0x0000000000000000 0x8 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.pxCurrentTimerList + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.pxOverflowTimerList + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.xLastTime.2122 + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.xTimerQueue + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .sbss.xTimerTaskHandle + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/timers.o + .debug_info 0x0000000000000000 0x190a out/3rdParty/FreeRTOS/Source/timers.o + .debug_abbrev 0x0000000000000000 0x361 out/3rdParty/FreeRTOS/Source/timers.o + .debug_loc 0x0000000000000000 0x12ee out/3rdParty/FreeRTOS/Source/timers.o + .debug_aranges + 0x0000000000000000 0xb8 out/3rdParty/FreeRTOS/Source/timers.o + .debug_ranges 0x0000000000000000 0x218 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0xee out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x87 out/3rdParty/FreeRTOS/Source/timers.o + .debug_macro 0x0000000000000000 0x97 out/3rdParty/FreeRTOS/Source/timers.o + .debug_line 0x0000000000000000 0x1529 out/3rdParty/FreeRTOS/Source/timers.o + .debug_str 0x0000000000000000 0x8749 out/3rdParty/FreeRTOS/Source/timers.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/timers.o + .debug_frame 0x0000000000000000 0x338 out/3rdParty/FreeRTOS/Source/timers.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/timers.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.prvInitialiseNewStreamBuffer + 0x0000000000000000 0x60 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.prvWriteBytesToBuffer + 0x0000000000000000 0xba out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.prvReadBytesFromBuffer + 0x0000000000000000 0xba out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferGenericCreate + 0x0000000000000000 0x8a out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferGenericCreateStatic + 0x0000000000000000 0xcc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.vStreamBufferDelete + 0x0000000000000000 0x56 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferReset + 0x0000000000000000 0x60 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSetTriggerLevel + 0x0000000000000000 0x32 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSpacesAvailable + 0x0000000000000000 0x44 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferBytesAvailable + 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSend + 0x0000000000000000 0x172 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSendFromISR + 0x0000000000000000 0xca out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferReceive + 0x0000000000000000 0x146 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferNextMessageLengthBytes + 0x0000000000000000 0x76 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferReceiveFromISR + 0x0000000000000000 0xc6 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferIsEmpty + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferIsFull + 0x0000000000000000 0x36 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferSendCompletedFromISR + 0x0000000000000000 0x3e out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.xStreamBufferReceiveCompletedFromISR + 0x0000000000000000 0x3e out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.uxStreamBufferGetStreamBufferNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.vStreamBufferSetStreamBufferNumber + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .text.ucStreamBufferGetStreamBufferType + 0x0000000000000000 0x8 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_info 0x0000000000000000 0x1771 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_abbrev 0x0000000000000000 0x311 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_loc 0x0000000000000000 0x1e59 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_aranges + 0x0000000000000000 0xc8 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_ranges 0x0000000000000000 0x1e8 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0xdc out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_macro 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_line 0x0000000000000000 0x2092 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_str 0x0000000000000000 0x7a4a out/3rdParty/FreeRTOS/Source/stream_buffer.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .debug_frame 0x0000000000000000 0x390 out/3rdParty/FreeRTOS/Source/stream_buffer.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/stream_buffer.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/croutine.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/croutine.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/croutine.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_info 0x0000000000000000 0x68 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_abbrev 0x0000000000000000 0x29 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_aranges + 0x0000000000000000 0x18 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x9a out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/croutine.o + .debug_macro 0x0000000000000000 0x43 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_line 0x0000000000000000 0x167 out/3rdParty/FreeRTOS/Source/croutine.o + .debug_str 0x0000000000000000 0x6fb1 out/3rdParty/FreeRTOS/Source/croutine.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/croutine.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/croutine.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .group 0x0000000000000000 0xc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .data 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .bss 0x0000000000000000 0x0 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.prvInsertBlockIntoFreeList + 0x0000000000000000 0x50 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.pvPortMalloc + 0x0000000000000000 0x10c out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.vPortFree + 0x0000000000000000 0xb4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.xPortGetFreeHeapSize + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.xPortGetMinimumEverFreeHeapSize + 0x0000000000000000 0xa out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.vPortDefineHeapRegions + 0x0000000000000000 0x110 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text.vPortGetHeapStats + 0x0000000000000000 0xb6 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .bss.xStart 0x0000000000000000 0x8 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.pxEnd 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xBlockAllocatedBit + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xFreeBytesRemaining + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xMinimumEverFreeBytesRemaining + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xNumberOfSuccessfulAllocations + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .sbss.xNumberOfSuccessfulFrees + 0x0000000000000000 0x4 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_info 0x0000000000000000 0x5a7 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_abbrev 0x0000000000000000 0x1e3 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_loc 0x0000000000000000 0x530 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_aranges + 0x0000000000000000 0x50 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_ranges 0x0000000000000000 0x40 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0xc0 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x79c out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x58 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x34 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x16 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x1f6 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x15a out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0xbb out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x1c out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x26 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0x4b7 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0xb5 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_macro 0x0000000000000000 0xaa out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_line 0x0000000000000000 0xd17 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_str 0x0000000000000000 0x70b9 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .comment 0x0000000000000000 0x33 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .debug_frame 0x0000000000000000 0x118 out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .riscv.attributes + 0x0000000000000000 0x2e out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + .text 0x0000000000000000 0xd0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + .text 0x0000000000000000 0x3c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_info 0x0000000000000000 0xc08 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_abbrev 0x0000000000000000 0x24b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_loc 0x0000000000000000 0x6b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_ranges 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_line 0x0000000000000000 0x365 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_str 0x0000000000000000 0x83f /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .debug_frame 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .eh_frame 0x0000000000000000 0x28 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .eh_frame 0x0000000000000000 0x28 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .text 0x0000000000000000 0x8b8 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_info 0x0000000000000000 0x5e4 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_abbrev 0x0000000000000000 0x189 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_loc 0x0000000000000000 0x1cfd /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_ranges 0x0000000000000000 0x3d0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_line 0x0000000000000000 0x162d /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_str 0x0000000000000000 0x363 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .debug_frame 0x0000000000000000 0x44 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + .text 0x0000000000000000 0x690 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .rodata 0x0000000000000000 0x3c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_info 0x0000000000000000 0x773 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_abbrev 0x0000000000000000 0x17f /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_loc 0x0000000000000000 0x16c9 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_ranges 0x0000000000000000 0x1d0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_line 0x0000000000000000 0x125d /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_str 0x0000000000000000 0x425 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .debug_frame 0x0000000000000000 0x58 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + .text 0x0000000000000000 0x5b6 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .rodata 0x0000000000000000 0x3c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_info 0x0000000000000000 0x7ab /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_abbrev 0x0000000000000000 0x186 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_loc 0x0000000000000000 0x1109 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_ranges 0x0000000000000000 0x250 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_line 0x0000000000000000 0x1089 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_str 0x0000000000000000 0x47d /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .debug_frame 0x0000000000000000 0x58 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + .text 0x0000000000000000 0x8e0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + .debug_info 0x0000000000000000 0x5e4 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + .debug_abbrev 0x0000000000000000 0x189 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + .debug_loc 0x0000000000000000 0x1acb /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + .debug_ranges 0x0000000000000000 0x398 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + .debug_line 0x0000000000000000 0x1669 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + .debug_str 0x0000000000000000 0x363 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + .debug_frame 0x0000000000000000 0x44 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + .text 0x0000000000000000 0x94 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_info 0x0000000000000000 0x202 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_abbrev 0x0000000000000000 0x177 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_loc 0x0000000000000000 0x230 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_ranges 0x0000000000000000 0x30 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_line 0x0000000000000000 0x284 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_str 0x0000000000000000 0x279 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .debug_frame 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + .text 0x0000000000000000 0x70 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_info 0x0000000000000000 0x2c0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_abbrev 0x0000000000000000 0x181 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_loc 0x0000000000000000 0x159 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_ranges 0x0000000000000000 0x50 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_line 0x0000000000000000 0x28b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_str 0x0000000000000000 0x310 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .debug_frame 0x0000000000000000 0x38 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + .text 0x0000000000000000 0x56 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_info 0x0000000000000000 0x2af /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_abbrev 0x0000000000000000 0x178 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_loc 0x0000000000000000 0x15c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_ranges 0x0000000000000000 0x68 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_line 0x0000000000000000 0x2ad /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_str 0x0000000000000000 0x30d /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .debug_frame 0x0000000000000000 0x34 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + .text 0x0000000000000000 0xc2 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + .debug_info 0x0000000000000000 0x2af /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + .debug_abbrev 0x0000000000000000 0x16c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + .debug_loc 0x0000000000000000 0x264 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + .debug_ranges 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + .debug_line 0x0000000000000000 0x40f /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + .debug_str 0x0000000000000000 0x29e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + .debug_frame 0x0000000000000000 0x3c /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + .text 0x0000000000000000 0x212 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + .debug_info 0x0000000000000000 0x2f3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + .debug_abbrev 0x0000000000000000 0x179 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + .debug_loc 0x0000000000000000 0x5f6 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + .debug_aranges + 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + .debug_ranges 0x0000000000000000 0x80 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + .debug_line 0x0000000000000000 0x6df /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + .debug_str 0x0000000000000000 0x2fc /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + .comment 0x0000000000000000 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + .debug_frame 0x0000000000000000 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + .riscv.attributes + 0x0000000000000000 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + .text 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + .data 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + .bss 0x0000000000000000 0x0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +Memory Configuration + +Name Origin Length Attributes +itcm_memory 0x0000000022010000 0x000000000000c000 xr +dtcm_memory 0x000000004201c000 0x0000000000004000 xr +ram_memory 0x0000000042020000 0x000000000000bff0 !xr +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +LOAD out/ChipTest/Eflash_Loader/eflash_loader.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +LOAD out/ChipTest/Eflash_Loader/bflb_efuse.o +LOAD out/ChipTest/Eflash_Loader/bflb_set_clock.o +LOAD out/ChipTest/Eflash_Loader/bflb_spi_flash.o +LOAD out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +LOAD out/ChipTest/Eflash_Loader/usb_if/usb_device.o +LOAD out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +LOAD out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o +LOAD out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +LOAD out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o +LOAD out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +LOAD out/BSP_Common/ring_buffer/ring_buffer.o +LOAD out/BSP_Common/libc/atof.o +LOAD out/BSP_Common/libc/atoi.o +LOAD out/BSP_Common/libc/atol.o +LOAD out/BSP_Common/libc/atoll.o +LOAD out/BSP_Common/libc/jrand48.o +LOAD out/BSP_Common/libc/lrand48.o +LOAD out/BSP_Common/libc/mrand48.o +LOAD out/BSP_Common/libc/nrand48.o +LOAD out/BSP_Common/libc/seed48.o +LOAD out/BSP_Common/libc/srand48.o +LOAD out/BSP_Common/libc/memccpy.o +LOAD out/BSP_Common/libc/memcpy.o +LOAD out/BSP_Common/libc/memset.o +LOAD out/BSP_Common/libc/memswap.o +LOAD out/BSP_Common/libc/memchr.o +LOAD out/BSP_Common/libc/memrchr.o +LOAD out/BSP_Common/libc/memmem.o +LOAD out/BSP_Common/libc/memcmp.o +LOAD out/BSP_Common/libc/bsearch.o +LOAD out/BSP_Common/libc/qsort.o +LOAD out/BSP_Common/libc/fnmatch.o +LOAD out/BSP_Common/libc/snprintf.o +LOAD out/BSP_Common/libc/sprintf.o +LOAD out/BSP_Common/libc/sscanf.o +LOAD out/BSP_Common/libc/vsnprintf.o +LOAD out/BSP_Common/libc/vsprintf.o +LOAD out/BSP_Common/libc/vsscanf.o +LOAD out/BSP_Common/libc/strcmp.o +LOAD out/BSP_Common/libc/strncmp.o +LOAD out/BSP_Common/libc/strcasecmp.o +LOAD out/BSP_Common/libc/strncasecmp.o +LOAD out/BSP_Common/libc/strcpy.o +LOAD out/BSP_Common/libc/strlcpy.o +LOAD out/BSP_Common/libc/strncpy.o +LOAD out/BSP_Common/libc/strcat.o +LOAD out/BSP_Common/libc/strlcat.o +LOAD out/BSP_Common/libc/strncat.o +LOAD out/BSP_Common/libc/strlen.o +LOAD out/BSP_Common/libc/strnlen.o +LOAD out/BSP_Common/libc/strchr.o +LOAD out/BSP_Common/libc/strrchr.o +LOAD out/BSP_Common/libc/strsep.o +LOAD out/BSP_Common/libc/strstr.o +LOAD out/BSP_Common/libc/strcspn.o +LOAD out/BSP_Common/libc/strspn.o +LOAD out/BSP_Common/libc/strxspn.o +LOAD out/BSP_Common/libc/strpbrk.o +LOAD out/BSP_Common/libc/strtok.o +LOAD out/BSP_Common/libc/strtok_r.o +LOAD out/BSP_Common/libc/strtol.o +LOAD out/BSP_Common/libc/strtoll.o +LOAD out/BSP_Common/libc/strtoul.o +LOAD out/BSP_Common/libc/strtoull.o +LOAD out/BSP_Common/libc/strtoimax.o +LOAD out/BSP_Common/libc/strtoumax.o +LOAD out/BSP_Common/libc/strntoimax.o +LOAD out/BSP_Common/libc/strntoumax.o +LOAD out/BSP_Common/libc/stdlib.o +LOAD out/BSP_Common/libc/common.o +LOAD out/BSP_Common/libc/ctype_isalnum.o +LOAD out/BSP_Common/libc/ctype_isalpha.o +LOAD out/BSP_Common/libc/ctype_isascii.o +LOAD out/BSP_Common/libc/ctype_isblank.o +LOAD out/BSP_Common/libc/ctype_iscntrl.o +LOAD out/BSP_Common/libc/ctype_isdigit.o +LOAD out/BSP_Common/libc/ctype_isgraph.o +LOAD out/BSP_Common/libc/ctype_ispunct.o +LOAD out/BSP_Common/libc/ctype_islower.o +LOAD out/BSP_Common/libc/ctype_isprint.o +LOAD out/BSP_Common/libc/ctype_isspace.o +LOAD out/BSP_Common/libc/ctype_isupper.o +LOAD out/BSP_Common/libc/ctype_tolower.o +LOAD out/BSP_Common/libc/ctype_toupper.o +LOAD out/BSP_Common/libc/ctype_isxdigit.o +LOAD out/BSP_Common/libc/ctypes.o +LOAD out/BSP_Common/soft_crc/softcrc.o +LOAD out/BSP_Common/cipher_suite/bflb_crypt.o +LOAD out/BSP_Common/cipher_suite/bflb_hash.o +LOAD out/BSP_Common/cipher_suite/bflb_ecdsa.o +LOAD out/BSP_Common/cipher_suite/bflb_dsa.o +LOAD out/BSP_Common/usbd_core.o +LOAD out/BSP_Common/usbd_ctlreq.o +LOAD out/BSP_Common/usbd_ioreq.o +LOAD out/BSP_Common/xz/xz_crc32.o +LOAD out/BSP_Common/xz/xz_dec_lzma2.o +LOAD out/BSP_Common/xz/xz_dec_stream.o +LOAD out/BSP_Common/xz/xz_decompress.o +LOAD out/BSP_Common/xz/xz_port.o +LOAD out/BSP_Common/partition/partition.o +LOAD out/startup/system_bl702.o +LOAD out/startup/GCC/start_load.o +LOAD out/startup/interrupt.o +LOAD out/startup/GCC/entry.o +LOAD out/BSP_Common/FreeRTOS/port.o +LOAD out/BSP_Common/FreeRTOS/portASM.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o +LOAD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +LOAD out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +LOAD out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o +LOAD out/HAL/hal_uart.o +LOAD out/3rdParty/fatfs/source/diskio.o +LOAD out/3rdParty/fatfs/source/ff.o +LOAD out/3rdParty/fatfs/source/ffunicode.o +LOAD out/3rdParty/FreeRTOS/Source/tasks.o +LOAD out/3rdParty/FreeRTOS/Source/list.o +LOAD out/3rdParty/FreeRTOS/Source/queue.o +LOAD out/3rdParty/FreeRTOS/Source/timers.o +LOAD out/3rdParty/FreeRTOS/Source/stream_buffer.o +LOAD out/3rdParty/FreeRTOS/Source/croutine.o +LOAD out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libm.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a +START GROUP +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libgloss.a +END GROUP +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a +LOAD /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a + 0x0000000000000400 StackSize = 0x400 + 0x0000000000000000 PROVIDE (__metal_chicken_bit = 0x0) + +.text 0x0000000022010000 0xbd24 + 0x0000000022010000 . = ALIGN (0x4) + 0x0000000022010000 __text_code_start__ = . + *(.text.metal.init.enter) + .text.metal.init.enter + 0x0000000022010000 0x86 out/startup/GCC/entry.o + 0x0000000022010000 _enter + *(SORT_NONE(.init)) + *fill* 0x0000000022010086 0x3a + .init 0x00000000220100c0 0x142 out/startup/interrupt.o + 0x00000000220100c0 __Vectors + *(.text) + .text 0x0000000022010202 0x35e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + 0x0000000022010202 __udivdi3 + .text 0x0000000022010560 0x352 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + 0x0000000022010560 __umoddi3 + *(.text.*) + .text.startup.main + 0x00000000220108b2 0x22e out/ChipTest/Eflash_Loader/eflash_loader.o + 0x00000000220108b2 main + .text.bflb_eflash_loader_cmd_read_jedec_id + 0x0000000022010ae0 0x4e out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_read_log + 0x0000000022010b2e 0x5e out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_ack.part.0 + 0x0000000022010b8c 0x1e out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_ack + 0x0000000022010baa 0x28 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_write_flash_check + 0x0000000022010bd2 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_write_mem + 0x0000000022010bf4 0x9c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_write_status_register + 0x0000000022010c90 0xe0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_read_mac_addr + 0x0000000022010d70 0xc0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_read_efuse + 0x0000000022010e30 0x146 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_write_efuse + 0x0000000022010f76 0xdc out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_xip_read_flash + 0x0000000022011052 0x16a out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_xip_readSha_flash + 0x00000000220111bc 0x15e out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_readSha_flash + 0x000000002201131a 0x160 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_read_flash + 0x000000002201147a 0x16c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_flash_chip_erase + 0x00000000220115e6 0x48 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_erase_flash + 0x000000002201162e 0x9e out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_set_flash_para + 0x00000000220116cc 0x144 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_ecdh_chanllenge + 0x0000000022011810 0x11e out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_get_ecdh_pk + 0x000000002201192e 0xf0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_read_mem + 0x0000000022011a1e 0xee out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_read_status_register + 0x0000000022011b0c 0xd4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_xip_read_flash_finish + 0x0000000022011be0 0x20 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_reset + 0x0000000022011c00 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_write_flash + 0x0000000022011c40 0xba out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_xip_read_flash_start + 0x0000000022011cfa 0x20 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .text.bflb_eflash_loader_cmd_init + 0x0000000022011d1a 0xa out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + 0x0000000022011d1a bflb_eflash_loader_cmd_init + .text.bflb_eflash_loader_cmd_process + 0x0000000022011d24 0x5a out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + 0x0000000022011d24 bflb_eflash_loader_cmd_process + .text.bootrom_read_boot_mode + 0x0000000022011d7e 0xec out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + 0x0000000022011d7e bootrom_read_boot_mode + .text.bflb_eflash_loader_init_uart_gpio + 0x0000000022011e6a 0x3c out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + 0x0000000022011e6a bflb_eflash_loader_init_uart_gpio + .text.bflb_eflash_loader_if_set + 0x0000000022011ea6 0x122 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0x0000000022011ea6 bflb_eflash_loader_if_set + .text.eflash_loader_dump_data + 0x0000000022011fc8 0x5e out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0x0000000022011fc8 eflash_loader_dump_data + .text.bflb_eflash_loader_main + 0x0000000022012026 0x1c4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0x0000000022012026 bflb_eflash_loader_main + .text.bflb_eflash_loader_jlink_init + 0x00000000220121ea 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0x00000000220121ea bflb_eflash_loader_jlink_init + .text.bflb_eflash_loader_jlink_handshake_poll + 0x00000000220121ee 0x6e out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0x00000000220121ee bflb_eflash_loader_jlink_handshake_poll + .text.bflb_eflash_loader_jlink_recv + 0x000000002201225c 0xa4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0x000000002201225c bflb_eflash_loader_jlink_recv + .text.bflb_eflash_loader_jlink_send + 0x0000000022012300 0x44 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0x0000000022012300 bflb_eflash_loader_jlink_send + .text.bflb_eflash_loader_jlink_wait_tx_idle + 0x0000000022012344 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0x0000000022012344 bflb_eflash_loader_jlink_wait_tx_idle + .text.bflb_eflash_loader_jlink_deinit + 0x0000000022012348 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0x0000000022012348 bflb_eflash_loader_jlink_deinit + .text.bflb_eflash_loader_usart_if_init + 0x000000002201234c 0xb8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .text.uart_if_rto_cbf + 0x0000000022012404 0x4c out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .text.uart_if_rda_cbf + 0x0000000022012450 0x2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .text.bflb_eflash_loader_usart_if_receive.isra.0 + 0x0000000022012452 0xb2 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .text.bflb_eflash_loader_uart_init + 0x0000000022012504 0x8a out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x0000000022012504 bflb_eflash_loader_uart_init + .text.bflb_eflash_loader_uart_handshake_poll + 0x000000002201258e 0x13a out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x000000002201258e bflb_eflash_loader_uart_handshake_poll + .text.bflb_eflash_loader_uart_recv + 0x00000000220126c8 0x8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x00000000220126c8 bflb_eflash_loader_uart_recv + .text.bflb_eflash_loader_uart_send + 0x00000000220126d0 0x16 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x00000000220126d0 bflb_eflash_loader_uart_send + .text.bflb_eflash_loader_usart_wait_tx_idle + 0x00000000220126e6 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x00000000220126e6 bflb_eflash_loader_usart_wait_tx_idle + .text.bflb_eflash_loader_uart_deinit + 0x00000000220126f6 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x00000000220126f6 bflb_eflash_loader_uart_deinit + .text.bflb_efuse_write + 0x00000000220126fa 0x56 out/ChipTest/Eflash_Loader/bflb_efuse.o + 0x00000000220126fa bflb_efuse_write + .text.bflb_efuse_read + 0x0000000022012750 0x2c out/ChipTest/Eflash_Loader/bflb_efuse.o + 0x0000000022012750 bflb_efuse_read + .text.bflb_set_high_speed_system_clock + 0x000000002201277c 0x6 out/ChipTest/Eflash_Loader/bflb_set_clock.o + 0x000000002201277c bflb_set_high_speed_system_clock + .text.bflb_set_low_speed_system_clock + 0x0000000022012782 0x6 out/ChipTest/Eflash_Loader/bflb_set_clock.o + 0x0000000022012782 bflb_set_low_speed_system_clock + .text.bflb_set_high_speed_flash_clock + 0x0000000022012788 0xa out/ChipTest/Eflash_Loader/bflb_set_clock.o + 0x0000000022012788 bflb_set_high_speed_flash_clock + .text.bflb_set_low_speed_flash_clock + 0x0000000022012792 0xa out/ChipTest/Eflash_Loader/bflb_set_clock.o + 0x0000000022012792 bflb_set_low_speed_flash_clock + .text.bflb_set_flash_clock_div + 0x000000002201279c 0xa out/ChipTest/Eflash_Loader/bflb_set_clock.o + 0x000000002201279c bflb_set_flash_clock_div + .text.bflb_deinit_all_psram_cs + 0x00000000220127a6 0x5a out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x00000000220127a6 bflb_deinit_all_psram_cs + .text.bflb_set_pad_pullnone + 0x0000000022012800 0x70 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012800 bflb_set_pad_pullnone + .text.bflb_spi_flash_update_para + 0x0000000022012870 0x1a out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012870 bflb_spi_flash_update_para + .text.bflb_spi_flash_xip_read_init + 0x000000002201288a 0x62 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x000000002201288a bflb_spi_flash_xip_read_init + .text.bflb_spi_flash_xip_read_exit + 0x00000000220128ec 0x26 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x00000000220128ec bflb_spi_flash_xip_read_exit + .text.bflb_spi_flash_set_io_mode + 0x0000000022012912 0x6 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012912 bflb_spi_flash_set_io_mode + .text.bflb_spi_flash_read_jedec_id + 0x0000000022012918 0x40 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012918 bflb_spi_flash_read_jedec_id + .text.bflb_spi_flash_read_status_reg_with_cmd + 0x0000000022012958 0xe out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012958 bflb_spi_flash_read_status_reg_with_cmd + .text.bflb_spi_flash_write_status_reg_with_cmd + 0x0000000022012966 0x46 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012966 bflb_spi_flash_write_status_reg_with_cmd + .text.bflb_spi_flash_erase + 0x00000000220129ac 0x22 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x00000000220129ac bflb_spi_flash_erase + .text.bflb_spi_flash_chiperase + 0x00000000220129ce 0x1e out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x00000000220129ce bflb_spi_flash_chiperase + .text.bflb_spi_flash_program + 0x00000000220129ec 0x26 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x00000000220129ec bflb_spi_flash_program + .text.bflb_spi_flash_read_sahb + 0x0000000022012a12 0x24 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012a12 bflb_spi_flash_read_sahb + .text.bflb_spi_flash_read_xip + 0x0000000022012a36 0x32 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012a36 bflb_spi_flash_read_xip + .text.bflb_clear_flash_status_register + 0x0000000022012a68 0x74 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012a68 bflb_clear_flash_status_register + .text.bflb_spi_flash_init + 0x0000000022012adc 0xd0 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0x0000000022012adc bflb_spi_flash_init + .text.bflb_eflash_loader_usb_if_send + 0x0000000022012bac 0x8c out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .text.USB_Rework_In_Callback + 0x0000000022012c38 0x54 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0x0000000022012c38 USB_Rework_In_Callback + .text.USB_Rework_Out_Callback + 0x0000000022012c8c 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0x0000000022012c8c USB_Rework_Out_Callback + .text.USB_Rework_IRQHandler + 0x0000000022012ccc 0x234 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0x0000000022012ccc USB_Rework_IRQHandler + .text.bflb_eflash_loader_usb_init + 0x0000000022012f00 0x1fa out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0x0000000022012f00 bflb_eflash_loader_usb_init + .text.bflb_eflash_loader_usb_handshake_poll + 0x00000000220130fa 0xb8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0x00000000220130fa bflb_eflash_loader_usb_handshake_poll + .text.bflb_eflash_loader_usb_recv + 0x00000000220131b2 0xea out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0x00000000220131b2 bflb_eflash_loader_usb_recv + .text.bflb_eflash_loader_usb_send + 0x000000002201329c 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0x000000002201329c bflb_eflash_loader_usb_send + .text.bflb_eflash_loader_usb_wait_tx_idle + 0x00000000220132ac 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0x00000000220132ac bflb_eflash_loader_usb_wait_tx_idle + .text.USB_Device_Init + 0x00000000220132bc 0xae out/ChipTest/Eflash_Loader/usb_if/usb_device.o + 0x00000000220132bc USB_Device_Init + .text.USB_Error_Handler + 0x000000002201336a 0xc out/ChipTest/Eflash_Loader/usb_if/usb_device.o + 0x000000002201336a USB_Error_Handler + .text.USBD_CDC_DataIn + 0x0000000022013376 0x12 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .text.USBD_CDC_EP0_RxReady + 0x0000000022013388 0x3a out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .text.USBD_CDC_GetFSCfgDesc + 0x00000000220133c2 0xe out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .text.USBD_CDC_GetHSCfgDesc + 0x00000000220133d0 0xe out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .text.USBD_CDC_GetOtherSpeedCfgDesc + 0x00000000220133de 0xe out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .text.USBD_CDC_GetDeviceQualifierDescriptor + 0x00000000220133ec 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + 0x00000000220133ec USBD_CDC_GetDeviceQualifierDescriptor + .text.USBD_CDC_DataOut + 0x00000000220133f8 0x44 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .text.USBD_CDC_Setup + 0x000000002201343c 0xfc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .text.USBD_CDC_DeInit + 0x0000000022013538 0x3e out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .text.USBD_CDC_Init + 0x0000000022013576 0xae out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .text.USBD_CDC_RegisterInterface + 0x0000000022013624 0xe out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + 0x0000000022013624 USBD_CDC_RegisterInterface + .text.USBD_CDC_SetTxBuffer + 0x0000000022013632 0x10 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + 0x0000000022013632 USBD_CDC_SetTxBuffer + .text.USBD_CDC_SetRxBuffer + 0x0000000022013642 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + 0x0000000022013642 USBD_CDC_SetRxBuffer + .text.CDC_DeInit_FS + 0x000000002201364e 0x4 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .text.CDC_Receive_FS + 0x0000000022013652 0x92 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .text.CDC_Init_FS + 0x00000000220136e4 0x36 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .text.CDC_Control_FS + 0x000000002201371a 0x106 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .text.HAL_PCD_MspInit + 0x0000000022013820 0x184 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013820 HAL_PCD_MspInit + .text.HAL_PCD_SetupStageCallback + 0x00000000220139a4 0xe out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x00000000220139a4 HAL_PCD_SetupStageCallback + .text.HAL_PCD_DataOutStageCallback + 0x00000000220139b2 0x16 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x00000000220139b2 HAL_PCD_DataOutStageCallback + .text.HAL_PCD_DataInStageCallback + 0x00000000220139c8 0x14 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x00000000220139c8 HAL_PCD_DataInStageCallback + .text.HAL_PCD_SOFCallback + 0x00000000220139dc 0x8 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x00000000220139dc HAL_PCD_SOFCallback + .text.HAL_PCD_ResetCallback + 0x00000000220139e4 0x30 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x00000000220139e4 HAL_PCD_ResetCallback + .text.USBD_LL_Init + 0x0000000022013a14 0xdc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013a14 USBD_LL_Init + .text.USBD_LL_Start + 0x0000000022013af0 0x2a out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013af0 USBD_LL_Start + .text.USBD_LL_OpenEP + 0x0000000022013b1a 0x30 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013b1a USBD_LL_OpenEP + .text.USBD_LL_CloseEP + 0x0000000022013b4a 0x2a out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013b4a USBD_LL_CloseEP + .text.USBD_LL_StallEP + 0x0000000022013b74 0x2a out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013b74 USBD_LL_StallEP + .text.USBD_LL_ClearStallEP + 0x0000000022013b9e 0x2a out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013b9e USBD_LL_ClearStallEP + .text.USBD_LL_IsStallEP + 0x0000000022013bc8 0x32 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013bc8 USBD_LL_IsStallEP + .text.USBD_LL_SetUSBAddress + 0x0000000022013bfa 0x2a out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013bfa USBD_LL_SetUSBAddress + .text.USBD_LL_Transmit + 0x0000000022013c24 0x2a out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013c24 USBD_LL_Transmit + .text.USBD_LL_PrepareReceive + 0x0000000022013c4e 0x2a out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013c4e USBD_LL_PrepareReceive + .text.USBD_LL_GetRxDataSize + 0x0000000022013c78 0x12 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013c78 USBD_LL_GetRxDataSize + .text.USBD_static_malloc + 0x0000000022013c8a 0xa out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013c8a USBD_static_malloc + .text.USBD_static_free + 0x0000000022013c94 0x2 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000022013c94 USBD_static_free + .text.USBD_FS_DeviceDescriptor + 0x0000000022013c96 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + 0x0000000022013c96 USBD_FS_DeviceDescriptor + .text.USBD_FS_LangIDStrDescriptor + 0x0000000022013ca2 0xc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + 0x0000000022013ca2 USBD_FS_LangIDStrDescriptor + .text.IntToUnicode + 0x0000000022013cae 0x1e out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .text.USBD_FS_SerialStrDescriptor + 0x0000000022013ccc 0x38 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + 0x0000000022013ccc USBD_FS_SerialStrDescriptor + .text.USBD_FS_ManufacturerStrDescriptor + 0x0000000022013d04 0x28 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + 0x0000000022013d04 USBD_FS_ManufacturerStrDescriptor + .text.USBD_FS_ProductStrDescriptor + 0x0000000022013d2c 0x28 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + 0x0000000022013d2c USBD_FS_ProductStrDescriptor + .text.USBD_FS_ConfigStrDescriptor + 0x0000000022013d54 0x28 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + 0x0000000022013d54 USBD_FS_ConfigStrDescriptor + .text.USBD_FS_InterfaceStrDescriptor + 0x0000000022013d7c 0x28 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + 0x0000000022013d7c USBD_FS_InterfaceStrDescriptor + .text.MEM_TO_FIFO_Copy + 0x0000000022013da4 0x14 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .text.USB_CMD_RB_Memory_Init + 0x0000000022013db8 0x38 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x0000000022013db8 USB_CMD_RB_Memory_Init + .text.USB_CMD_RB_Memory_Reset + 0x0000000022013df0 0x1c out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x0000000022013df0 USB_CMD_RB_Memory_Reset + .text.USB_CMD_RB_Memory_Push + 0x0000000022013e0c 0x34 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x0000000022013e0c USB_CMD_RB_Memory_Push + .text.USB_CMD_RB_Memory_Pop + 0x0000000022013e40 0x1a out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x0000000022013e40 USB_CMD_RB_Memory_Pop + .text.USB_CMD_RB_Memory_Peek + 0x0000000022013e5a 0x1a out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x0000000022013e5a USB_CMD_RB_Memory_Peek + .text.USB_CMD_RB_Memory_Get_Length + 0x0000000022013e74 0x1c out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x0000000022013e74 USB_CMD_RB_Memory_Get_Length + .text.USB_CMD_RB_Memory_Get_Empty_Length + 0x0000000022013e90 0x1c out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x0000000022013e90 USB_CMD_RB_Memory_Get_Empty_Length + .text.USB_RESP_RB_Memory_Init + 0x0000000022013eac 0x32 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x0000000022013eac USB_RESP_RB_Memory_Init + .text.USB_RESP_RB_Memory_Push + 0x0000000022013ede 0x26 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x0000000022013ede USB_RESP_RB_Memory_Push + .text.USB_RESP_RB_Memory_Pop + 0x0000000022013f04 0x1c out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x0000000022013f04 USB_RESP_RB_Memory_Pop + .text.USB_RESP_RB_Memory_Get_Length + 0x0000000022013f20 0x1c out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x0000000022013f20 USB_RESP_RB_Memory_Get_Length + .text.USB_RESP_RB_Memory_Get_Empty_Length + 0x0000000022013f3c 0x1c out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x0000000022013f3c USB_RESP_RB_Memory_Get_Empty_Length + .text.Ring_Buffer_Write_Copy + 0x0000000022013f58 0x24 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Read_Copy + 0x0000000022013f7c 0x22 out/BSP_Common/ring_buffer/ring_buffer.o + .text.Ring_Buffer_Init + 0x0000000022013f9e 0x1c out/BSP_Common/ring_buffer/ring_buffer.o + 0x0000000022013f9e Ring_Buffer_Init + .text.Ring_Buffer_Reset + 0x0000000022013fba 0x2e out/BSP_Common/ring_buffer/ring_buffer.o + 0x0000000022013fba Ring_Buffer_Reset + .text.Ring_Buffer_Get_Length + 0x0000000022013fe8 0x4a out/BSP_Common/ring_buffer/ring_buffer.o + 0x0000000022013fe8 Ring_Buffer_Get_Length + .text.Ring_Buffer_Read_Callback + 0x0000000022014032 0xac out/BSP_Common/ring_buffer/ring_buffer.o + 0x0000000022014032 Ring_Buffer_Read_Callback + .text.Ring_Buffer_Read + 0x00000000220140de 0x1e out/BSP_Common/ring_buffer/ring_buffer.o + 0x00000000220140de Ring_Buffer_Read + .text.Ring_Buffer_Peek + 0x00000000220140fc 0x90 out/BSP_Common/ring_buffer/ring_buffer.o + 0x00000000220140fc Ring_Buffer_Peek + .text.Ring_Buffer_Write_Callback + 0x000000002201418c 0xae out/BSP_Common/ring_buffer/ring_buffer.o + 0x000000002201418c Ring_Buffer_Write_Callback + .text.Ring_Buffer_Write + 0x000000002201423a 0x1e out/BSP_Common/ring_buffer/ring_buffer.o + 0x000000002201423a Ring_Buffer_Write + .text.Ring_Buffer_Get_Empty_Length + 0x0000000022014258 0x18 out/BSP_Common/ring_buffer/ring_buffer.o + 0x0000000022014258 Ring_Buffer_Get_Empty_Length + .text.memcpy 0x0000000022014270 0x18 out/BSP_Common/libc/memcpy.o + 0x0000000022014270 memcpy + .text.memset 0x0000000022014288 0x18 out/BSP_Common/libc/memset.o + 0x0000000022014288 memset + .text.vsnprintf + 0x00000000220142a0 0xae2 out/BSP_Common/libc/vsnprintf.o + 0x00000000220142a0 vsnprintf + .text.strlen 0x0000000022014d82 0x1a out/BSP_Common/libc/strlen.o + 0x0000000022014d82 strlen + .text.bflb_hash_init + 0x0000000022014d9c 0x74 out/BSP_Common/cipher_suite/bflb_hash.o + 0x0000000022014d9c bflb_hash_init + .text.bflb_hash_start + 0x0000000022014e10 0x38 out/BSP_Common/cipher_suite/bflb_hash.o + 0x0000000022014e10 bflb_hash_start + .text.bflb_hash_update + 0x0000000022014e48 0x44 out/BSP_Common/cipher_suite/bflb_hash.o + 0x0000000022014e48 bflb_hash_update + .text.bflb_hash_finish + 0x0000000022014e8c 0x42 out/BSP_Common/cipher_suite/bflb_hash.o + 0x0000000022014e8c bflb_hash_finish + .text.bflb_hash_deinit + 0x0000000022014ece 0x30 out/BSP_Common/cipher_suite/bflb_hash.o + 0x0000000022014ece bflb_hash_deinit + .text.bflb_ecc_basic_parameter_init.isra.0 + 0x0000000022014efe 0x48 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecc_point_mul_init.isra.1 + 0x0000000022014f46 0xc0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_point_add.isra.4 + 0x0000000022015006 0x1f0 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_verify_point_mul.isra.5 + 0x00000000220151f6 0x364 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdh_get_scalar_point.isra.6 + 0x000000002201555a 0x2fc out/BSP_Common/cipher_suite/bflb_ecdsa.o + .text.bflb_ecdsa_get_public_key + 0x0000000022015856 0xe out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000022015856 bflb_ecdsa_get_public_key + .text.bflb_ecc_get_random_value + 0x0000000022015864 0xda out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000022015864 bflb_ecc_get_random_value + .text.bflb_ecdsa_sign + 0x000000002201593e 0x200 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201593e bflb_ecdsa_sign + .text.bflb_ecdsa_get_private_key + 0x0000000022015b3e 0x1e out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000022015b3e bflb_ecdsa_get_private_key + .text.bflb_ecdh_get_encrypt_key + 0x0000000022015b5c 0xe out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000022015b5c bflb_ecdh_get_encrypt_key + .text.bflb_ecdh_get_public_key + 0x0000000022015b6a 0x4 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x0000000022015b6a bflb_ecdh_get_public_key + .text.USBD_Init + 0x0000000022015b6e 0x54 out/BSP_Common/usbd_core.o + 0x0000000022015b6e USBD_Init + .text.USBD_RegisterClass + 0x0000000022015bc2 0x22 out/BSP_Common/usbd_core.o + 0x0000000022015bc2 USBD_RegisterClass + .text.USBD_Start + 0x0000000022015be4 0x10 out/BSP_Common/usbd_core.o + 0x0000000022015be4 USBD_Start + .text.USBD_SetClassConfig + 0x0000000022015bf4 0x1c out/BSP_Common/usbd_core.o + 0x0000000022015bf4 USBD_SetClassConfig + .text.USBD_ClrClassConfig + 0x0000000022015c10 0x14 out/BSP_Common/usbd_core.o + 0x0000000022015c10 USBD_ClrClassConfig + .text.USBD_LL_SetupStage + 0x0000000022015c24 0x90 out/BSP_Common/usbd_core.o + 0x0000000022015c24 USBD_LL_SetupStage + .text.USBD_LL_DataOutStage + 0x0000000022015cb4 0x96 out/BSP_Common/usbd_core.o + 0x0000000022015cb4 USBD_LL_DataOutStage + .text.USBD_LL_DataInStage + 0x0000000022015d4a 0xe6 out/BSP_Common/usbd_core.o + 0x0000000022015d4a USBD_LL_DataInStage + .text.USBD_LL_Reset + 0x0000000022015e30 0x5a out/BSP_Common/usbd_core.o + 0x0000000022015e30 USBD_LL_Reset + .text.USBD_LL_SetSpeed + 0x0000000022015e8a 0x8 out/BSP_Common/usbd_core.o + 0x0000000022015e8a USBD_LL_SetSpeed + .text.USBD_LL_SOF + 0x0000000022015e92 0x24 out/BSP_Common/usbd_core.o + 0x0000000022015e92 USBD_LL_SOF + .text.USBD_StdDevReq + 0x0000000022015eb6 0x40e out/BSP_Common/usbd_ctlreq.o + 0x0000000022015eb6 USBD_StdDevReq + .text.USBD_StdItfReq + 0x00000000220162c4 0x80 out/BSP_Common/usbd_ctlreq.o + 0x00000000220162c4 USBD_StdItfReq + .text.USBD_StdEPReq + 0x0000000022016344 0x17e out/BSP_Common/usbd_ctlreq.o + 0x0000000022016344 USBD_StdEPReq + .text.USBD_ParseSetupRequest + 0x00000000220164c2 0x42 out/BSP_Common/usbd_ctlreq.o + 0x00000000220164c2 USBD_ParseSetupRequest + .text.USBD_GetString + 0x0000000022016504 0x6a out/BSP_Common/usbd_ctlreq.o + 0x0000000022016504 USBD_GetString + .text.USBD_CtlSendData + 0x000000002201656e 0x20 out/BSP_Common/usbd_ioreq.o + 0x000000002201656e USBD_CtlSendData + .text.USBD_CtlContinueSendData + 0x000000002201658e 0x16 out/BSP_Common/usbd_ioreq.o + 0x000000002201658e USBD_CtlContinueSendData + .text.USBD_CtlPrepareRx + 0x00000000220165a4 0x24 out/BSP_Common/usbd_ioreq.o + 0x00000000220165a4 USBD_CtlPrepareRx + .text.USBD_CtlContinueRx + 0x00000000220165c8 0x16 out/BSP_Common/usbd_ioreq.o + 0x00000000220165c8 USBD_CtlContinueRx + .text.USBD_CtlSendStatus + 0x00000000220165de 0x1c out/BSP_Common/usbd_ioreq.o + 0x00000000220165de USBD_CtlSendStatus + .text.USBD_CtlReceiveStatus + 0x00000000220165fa 0x1c out/BSP_Common/usbd_ioreq.o + 0x00000000220165fa USBD_CtlReceiveStatus + .text.USB_DoNothing_IRQHandler + 0x0000000022016616 0x8 out/startup/system_bl702.o + 0x0000000022016616 USB_DoNothing_IRQHandler + .text.SystemInit + 0x000000002201661e 0xa4 out/startup/system_bl702.o + 0x000000002201661e SystemInit + .text.start_load + 0x00000000220166c2 0x126 out/startup/GCC/start_load.o + 0x00000000220166c2 start_load + .text.Interrupt_Handler_Stub + 0x00000000220167e8 0x9a out/startup/interrupt.o + 0x00000000220167e8 TIMER_WDT_IRQHandler_Wrapper + 0x00000000220167e8 GPIO_INT0_IRQHandler_Wrapper + 0x00000000220167e8 SEC_PKA_IRQHandler_Wrapper + 0x00000000220167e8 SEC_TRNG_IRQHandler_Wrapper + 0x00000000220167e8 MAC_GEN_IRQHandler_Wrapper + 0x00000000220167e8 DMA_BMX_ERR_IRQHandler_Wrapper + 0x00000000220167e8 EFUSE_IRQHandler_Wrapper + 0x00000000220167e8 KYS_IRQHandler_Wrapper + 0x00000000220167e8 WIFI_IRQHandler_Wrapper + 0x00000000220167e8 SEC_CDET_IRQHandler_Wrapper + 0x00000000220167e8 I2S_IRQHandler_Wrapper + 0x00000000220167e8 SEC_AES_IRQHandler_Wrapper + 0x00000000220167e8 PWM_IRQHandler_Wrapper + 0x00000000220167e8 RF_TOP_INT1_IRQHandler_Wrapper + 0x00000000220167e8 HBN_OUT0_IRQHandler_Wrapper + 0x00000000220167e8 SF_CTRL_IRQHandler_Wrapper + 0x00000000220167e8 TIMER_CH0_IRQHandler_Wrapper + 0x00000000220167e8 clic_mext_handler_Wrapper + 0x00000000220167e8 MAC_TXRX_TIMER_IRQHandler_Wrapper + 0x00000000220167e8 Interrupt_Handler_Stub + 0x00000000220167e8 clic_csoft_handler_Wrapper + 0x00000000220167e8 M154_AES_IRQHandler_Wrapper + 0x00000000220167e8 I2C_IRQHandler_Wrapper + 0x00000000220167e8 SPI_IRQHandler_Wrapper + 0x00000000220167e8 MAC_PORT_TRG_IRQHandler_Wrapper + 0x00000000220167e8 PDS_WAKEUP_IRQHandler_Wrapper + 0x00000000220167e8 clic_mtimer_handler_Wrapper + 0x00000000220167e8 L1C_BMX_ERR_IRQHandler_Wrapper + 0x00000000220167e8 SEC_BMX_ERR_IRQHandler_Wrapper + 0x00000000220167e8 TOUCH_IRQHandler_Wrapper + 0x00000000220167e8 QDEC2_IRQHandler_Wrapper + 0x00000000220167e8 MAC_RX_TRG_IRQHandler_Wrapper + 0x00000000220167e8 MAC_TX_TRG_IRQHandler_Wrapper + 0x00000000220167e8 EMAC_IRQHandler_Wrapper + 0x00000000220167e8 MJPEG_IRQHandler_Wrapper + 0x00000000220167e8 HBN_OUT1_IRQHandler_Wrapper + 0x00000000220167e8 M154_REQ_ENH_ACK_IRQHandler_Wrapper + 0x00000000220167e8 SEC_GMAC_IRQHandler_Wrapper + 0x00000000220167e8 clic_msip_handler_Wrapper + 0x00000000220167e8 UART1_IRQHandler_Wrapper + 0x00000000220167e8 GPADC_DMA_IRQHandler_Wrapper + 0x00000000220167e8 MAC_TXRX_MISC_IRQHandler_Wrapper + 0x00000000220167e8 DMA_ALL_IRQHandler_Wrapper + 0x00000000220167e8 CAM_IRQHandler_Wrapper + 0x00000000220167e8 QDEC0_IRQHandler_Wrapper + 0x00000000220167e8 BLE_IRQHandler_Wrapper + 0x00000000220167e8 SEC_SHA_IRQHandler_Wrapper + 0x00000000220167e8 IRRX_IRQHandler_Wrapper + 0x00000000220167e8 BMX_TO_IRQHandler_Wrapper + 0x00000000220167e8 TIMER_CH1_IRQHandler_Wrapper + 0x00000000220167e8 UART0_IRQHandler_Wrapper + 0x00000000220167e8 BMX_ERR_IRQHandler_Wrapper + 0x00000000220167e8 WIFI_IPC_PUBLIC_IRQHandler_Wrapper + 0x00000000220167e8 USB_IRQHandler_Wrapper + 0x00000000220167e8 L1C_BMX_TO_IRQHandler_Wrapper + 0x00000000220167e8 QDEC1_IRQHandler_Wrapper + 0x00000000220167e8 BZ_PHY_IRQHandler_Wrapper + 0x00000000220167e8 RF_TOP_INT0_IRQHandler_Wrapper + 0x00000000220167e8 M154_IRQHandler_Wrapper + 0x00000000220167e8 IRTX_IRQHandler_Wrapper + 0x00000000220167e8 BOR_IRQHandler_Wrapper + *fill* 0x0000000022016882 0x3e + .text.Trap_Handler_Stub + 0x00000000220168c0 0xbc out/startup/interrupt.o + 0x00000000220168c0 Trap_Handler_Stub + .text.clic_enable_interrupt + 0x000000002201697c 0x12 out/startup/interrupt.o + 0x000000002201697c clic_enable_interrupt + .text.clic_disable_interrupt + 0x000000002201698e 0x10 out/startup/interrupt.o + 0x000000002201698e clic_disable_interrupt + .text.Trap_Handler + 0x000000002201699e 0x12e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + 0x000000002201699e Trap_Handler + .text.Interrupt_Handler_Register + 0x0000000022016acc 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + 0x0000000022016acc Interrupt_Handler_Register + .text.Interrupt_Handler + 0x0000000022016ae4 0x9e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + 0x0000000022016ae4 Interrupt_Handler + .text.EF_Ctrl_Read_Sw_Usage + 0x0000000022016b82 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + 0x0000000022016b82 EF_Ctrl_Read_Sw_Usage + .text.EF_Ctrl_Read_MAC_Address + 0x0000000022016baa 0x96 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + 0x0000000022016baa EF_Ctrl_Read_MAC_Address + .text.EF_Ctrl_Get_Chip_PIDVID + 0x0000000022016c40 0x2c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + 0x0000000022016c40 EF_Ctrl_Get_Chip_PIDVID + .text.EF_Ctrl_Get_Customer_PIDVID + 0x0000000022016c6c 0x2c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + 0x0000000022016c6c EF_Ctrl_Get_Customer_PIDVID + .text.EF_Ctrl_Read_Device_Info + 0x0000000022016c98 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + 0x0000000022016c98 EF_Ctrl_Read_Device_Info + .text.EF_Ctrl_Program_Direct_R0 + 0x0000000022016cb4 0x64 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + 0x0000000022016cb4 EF_Ctrl_Program_Direct_R0 + .text.EF_Ctrl_Read_Direct_R0 + 0x0000000022016d18 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + 0x0000000022016d18 EF_Ctrl_Read_Direct_R0 + .text.GLB_Set_USB_CLK + 0x0000000022016d46 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + 0x0000000022016d46 GLB_Set_USB_CLK + .text.GLB_Set_UART_CLK + 0x0000000022016d68 0x3e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + 0x0000000022016d68 GLB_Set_UART_CLK + .text.GLB_AHB_Slave1_Reset + 0x0000000022016da6 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + 0x0000000022016da6 GLB_AHB_Slave1_Reset + .text.GLB_Set_EM_Sel + 0x0000000022016dda 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + 0x0000000022016dda GLB_Set_EM_Sel + .text.GLB_UART_Sig_Swap_Set + 0x0000000022016dea 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + 0x0000000022016dea GLB_UART_Sig_Swap_Set + .text.GLB_Set_MTimer_CLK + 0x0000000022016e06 0x4a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + 0x0000000022016e06 GLB_Set_MTimer_CLK + .text.GLB_UART_Fun_Sel + 0x0000000022016e50 0x24 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + 0x0000000022016e50 GLB_UART_Fun_Sel + .text.GLB_GPIO_Read + 0x0000000022016e74 0x4a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + 0x0000000022016e74 GLB_GPIO_Read + .text.HBN_Set_UART_CLK_Sel + 0x0000000022016ebe 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + 0x0000000022016ebe HBN_Set_UART_CLK_Sel + .text.HBN_Get_Status_Flag + 0x0000000022016ed2 0xa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + 0x0000000022016ed2 HBN_Get_Status_Flag + .text.HBN_Set_Status_Flag + 0x0000000022016edc 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + 0x0000000022016edc HBN_Set_Status_Flag + .text.HBN_Set_BOR_Cfg + 0x0000000022016ee8 0x5c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + 0x0000000022016ee8 HBN_Set_BOR_Cfg + .text.UART_IntHandler + 0x0000000022016f44 0x1de out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .text.UART0_IRQHandler + 0x0000000022017122 0x6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x0000000022017122 UART0_IRQHandler + .text.UART1_IRQHandler + 0x0000000022017128 0x6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x0000000022017128 UART1_IRQHandler + .text.UART_Init + 0x000000002201712e 0x144 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x000000002201712e UART_Init + .text.UART_FifoConfig + 0x0000000022017272 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x0000000022017272 UART_FifoConfig + .text.UART_Enable + 0x00000000220172dc 0x34 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x00000000220172dc UART_Enable + .text.UART_Disable + 0x0000000022017310 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x0000000022017310 UART_Disable + .text.UART_SetRxTimeoutValue + 0x0000000022017340 0x1e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x0000000022017340 UART_SetRxTimeoutValue + .text.UART_TxFreeRun + 0x000000002201735e 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x000000002201735e UART_TxFreeRun + .text.UART_AutoBaudDetection + 0x0000000022017386 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x0000000022017386 UART_AutoBaudDetection + .text.UART_IntMask + 0x00000000220173ae 0x48 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x00000000220173ae UART_IntMask + .text.UART_IntClear + 0x00000000220173f6 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x00000000220173f6 UART_IntClear + .text.UART_Int_Callback_Install + 0x0000000022017424 0x1a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x0000000022017424 UART_Int_Callback_Install + .text.UART_SendData + 0x000000002201743e 0x50 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x000000002201743e UART_SendData + .text.UART_ReceiveData + 0x000000002201748e 0x4e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x000000002201748e UART_ReceiveData + .text.UART_GetAutoBaudCount + 0x00000000220174dc 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x00000000220174dc UART_GetAutoBaudCount + .text.UART_GetIntStatus + 0x00000000220174f4 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x00000000220174f4 UART_GetIntStatus + .text.UART_GetTxBusBusyStatus + 0x0000000022017522 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x0000000022017522 UART_GetTxBusBusyStatus + .text.XIP_SFlash_Opt_Enter + 0x0000000022017536 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + 0x0000000022017536 XIP_SFlash_Opt_Enter + .text.XIP_SFlash_Opt_Exit + 0x0000000022017556 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + 0x0000000022017556 XIP_SFlash_Opt_Exit + .text.SEC_TRNG_IRQHandler + 0x0000000022017566 0x26 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022017566 SEC_TRNG_IRQHandler + .text.SEC_PKA_IRQHandler + 0x000000002201758c 0x26 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x000000002201758c SEC_PKA_IRQHandler + .text.SEC_SHA_IRQHandler + 0x00000000220175b2 0x22 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x00000000220175b2 SEC_SHA_IRQHandler + .text.Sec_Eng_SHA256_Update.part.0 + 0x00000000220175d4 0x17c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_PKA_MREM.part.3 + 0x0000000022017750 0x1e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .text.Sec_Eng_SHA256_Init + 0x000000002201776e 0x60 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x000000002201776e Sec_Eng_SHA256_Init + .text.Sec_Eng_SHA_Start + 0x00000000220177ce 0x12 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x00000000220177ce Sec_Eng_SHA_Start + .text.Sec_Eng_SHA256_Update + 0x00000000220177e0 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x00000000220177e0 Sec_Eng_SHA256_Update + .text.Sec_Eng_SHA256_Finish + 0x00000000220177ee 0x22a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x00000000220177ee Sec_Eng_SHA256_Finish + .text.Sec_Eng_Trng_Enable + 0x0000000022017a18 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022017a18 Sec_Eng_Trng_Enable + .text.Sec_Eng_Trng_Read + 0x0000000022017a82 0x18e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022017a82 Sec_Eng_Trng_Read + .text.Sec_Eng_Trng_Disable + 0x0000000022017c10 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022017c10 Sec_Eng_Trng_Disable + .text.Sec_Eng_PKA_Reset + 0x0000000022017c24 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022017c24 Sec_Eng_PKA_Reset + .text.Sec_Eng_PKA_BigEndian_Enable + 0x0000000022017c34 0x1e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022017c34 Sec_Eng_PKA_BigEndian_Enable + .text.Sec_Eng_PKA_Write_Data + 0x0000000022017c52 0xc2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022017c52 Sec_Eng_PKA_Write_Data + .text.Sec_Eng_PKA_Read_Data + 0x0000000022017d14 0xc2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022017d14 Sec_Eng_PKA_Read_Data + .text.Sec_Eng_PKA_CREG + 0x0000000022017dd6 0x64 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022017dd6 Sec_Eng_PKA_CREG + .text.Sec_Eng_PKA_Move_Data + 0x0000000022017e3a 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022017e3a Sec_Eng_PKA_Move_Data + .text.Sec_Eng_PKA_MSUB + 0x0000000022017ea4 0x9e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022017ea4 Sec_Eng_PKA_MSUB + .text.Sec_Eng_PKA_MREM + 0x0000000022017f42 0x66 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022017f42 Sec_Eng_PKA_MREM + .text.Sec_Eng_PKA_MMUL + 0x0000000022017fa8 0x9e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022017fa8 Sec_Eng_PKA_MMUL + .text.Sec_Eng_PKA_MINV + 0x0000000022018046 0x80 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022018046 Sec_Eng_PKA_MINV + .text.Sec_Eng_PKA_LCMP + 0x00000000220180c6 0x6a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x00000000220180c6 Sec_Eng_PKA_LCMP + .text.Sec_Eng_PKA_LADD + 0x0000000022018130 0x7e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022018130 Sec_Eng_PKA_LADD + .text.Sec_Eng_PKA_LMUL + 0x00000000220181ae 0x64 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x00000000220181ae Sec_Eng_PKA_LMUL + .text.Sec_Eng_PKA_GF2Mont + 0x0000000022018212 0x44 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022018212 Sec_Eng_PKA_GF2Mont + .text.Sec_Eng_PKA_Mont2GF + 0x0000000022018256 0x5c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x0000000022018256 Sec_Eng_PKA_Mont2GF + .text.USB_Set_EPx_Rdy.part.1 + 0x00000000220182b2 0xe4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_EPx_STALL.part.2 + 0x0000000022018396 0xac out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_Set_EPx_Busy.part.4 + 0x0000000022018442 0xe4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .text.USB_IRQHandler + 0x0000000022018526 0xc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x0000000022018526 USB_IRQHandler + .text.USB_Enable + 0x0000000022018532 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x0000000022018532 USB_Enable + .text.USB_Set_Config + 0x0000000022018546 0x90 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x0000000022018546 USB_Set_Config + .text.USB_Set_Device_Addr + 0x00000000220185d6 0x1c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x00000000220185d6 USB_Set_Device_Addr + .text.USB_Get_Device_Addr + 0x00000000220185f2 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x00000000220185f2 USB_Get_Device_Addr + .text.USB_Set_EPx_Rdy + 0x0000000022018602 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x0000000022018602 USB_Set_EPx_Rdy + .text.USB_Is_EPx_RDY_Free + 0x0000000022018632 0xc0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x0000000022018632 USB_Is_EPx_RDY_Free + .text.USB_Clr_EPx_STALL + 0x00000000220186f2 0xba out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x00000000220186f2 USB_Clr_EPx_STALL + .text.USB_Set_EPx_Busy + 0x00000000220187ac 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x00000000220187ac USB_Set_EPx_Busy + .text.USB_Set_EPx_Status + 0x00000000220187d4 0x80 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x00000000220187d4 USB_Set_EPx_Status + .text.USB_IntEn + 0x0000000022018854 0x50 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x0000000022018854 USB_IntEn + .text.USB_IntMask + 0x00000000220188a4 0x50 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x00000000220188a4 USB_IntMask + .text.USB_Get_IntStatus + 0x00000000220188f4 0x2c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x00000000220188f4 USB_Get_IntStatus + .text.USB_Clr_IntStatus + 0x0000000022018920 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x0000000022018920 USB_Clr_IntStatus + .text.USB_Clr_EPx_IntStatus + 0x000000002201894e 0x32 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x000000002201894e USB_Clr_EPx_IntStatus + .text.USB_Set_EPx_Config + 0x0000000022018980 0x180 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x0000000022018980 USB_Set_EPx_Config + .text.USB_Set_EPx_Type + 0x0000000022018b00 0xe6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x0000000022018b00 USB_Set_EPx_Type + .text.USB_EPx_Write_Data_To_FIFO + 0x0000000022018be6 0x120 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x0000000022018be6 USB_EPx_Write_Data_To_FIFO + .text.USB_EPx_Read_Data_From_FIFO + 0x0000000022018d06 0xb2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x0000000022018d06 USB_EPx_Read_Data_From_FIFO + .text.USB_Get_EPx_RX_FIFO_CNT + 0x0000000022018db8 0xae out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0x0000000022018db8 USB_Get_EPx_RX_FIFO_CNT + .text.USB_HAL_GPIO_Init.part.0 + 0x0000000022018e66 0x42 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .text.HAL_PCD_Init + 0x0000000022018ea8 0x9a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x0000000022018ea8 HAL_PCD_Init + .text.HAL_PCD_Start + 0x0000000022018f42 0xe out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x0000000022018f42 HAL_PCD_Start + .text.HAL_PCD_IRQHandler + 0x0000000022018f50 0x27e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x0000000022018f50 HAL_PCD_IRQHandler + .text.HAL_PCD_SetAddress + 0x00000000220191ce 0x4c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x00000000220191ce HAL_PCD_SetAddress + .text.HAL_PCD_EP_Open + 0x000000002201921a 0xbc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x000000002201921a HAL_PCD_EP_Open + .text.HAL_PCD_EP_Close + 0x00000000220192d6 0x80 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x00000000220192d6 HAL_PCD_EP_Close + .text.HAL_PCD_EP_Receive + 0x0000000022019356 0x7e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x0000000022019356 HAL_PCD_EP_Receive + .text.HAL_PCD_EP_GetRxCount + 0x00000000220193d4 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x00000000220193d4 HAL_PCD_EP_GetRxCount + .text.HAL_PCD_EP_Transmit + 0x00000000220193e8 0xba out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x00000000220193e8 HAL_PCD_EP_Transmit + .text.HAL_PCD_EP_SetStall + 0x00000000220194a2 0x82 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x00000000220194a2 HAL_PCD_EP_SetStall + .text.HAL_PCD_EP_ClrStall + 0x0000000022019524 0x82 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x0000000022019524 HAL_PCD_EP_ClrStall + .text.HAL_PCDEx_PMAConfig + 0x00000000220195a6 0x42 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x00000000220195a6 HAL_PCDEx_PMAConfig + .text.USB_HAL_Power_Up + 0x00000000220195e8 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x00000000220195e8 USB_HAL_Power_Up + .text.USB_HAL_Power_Off + 0x00000000220195fc 0x16 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x00000000220195fc USB_HAL_Power_Off + .text.USB_HAL_Xcvr_Config + 0x0000000022019612 0x82 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x0000000022019612 USB_HAL_Xcvr_Config + .text.USB_HAL_System_Init + 0x0000000022019694 0x2c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x0000000022019694 USB_HAL_System_Init + .text.USB_HAL_Interrupts_LPM_Init + 0x00000000220196c0 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x00000000220196c0 USB_HAL_Interrupts_LPM_Init + .text.bflb_platform_uart_dbg_init + 0x00000000220196ee 0x76 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x00000000220196ee bflb_platform_uart_dbg_init + .text.bflb_platform_get_log + 0x0000000022019764 0x2c out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x0000000022019764 bflb_platform_get_log + .text.bflb_platform_usart_dbg_send + 0x0000000022019790 0x72 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x0000000022019790 bflb_platform_usart_dbg_send + .text.bflb_platform_uart_dbg_deinit + 0x0000000022019802 0x18 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x0000000022019802 bflb_platform_uart_dbg_deinit + .text.bflb_platform_printf + 0x000000002201981a 0x48 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x000000002201981a bflb_platform_printf + .text.bflb_platform_printx + 0x0000000022019862 0x34 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x0000000022019862 bflb_platform_printx + .text.bflb_platform_clear_time + 0x0000000022019896 0x12 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x0000000022019896 bflb_platform_clear_time + .text.bflb_platform_get_time_us + 0x00000000220198a8 0xc8 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x00000000220198a8 bflb_platform_get_time_us + .text.bflb_platform_init_time + 0x0000000022019970 0x2a out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x0000000022019970 bflb_platform_init_time + .text.bflb_platform_delay_ms + 0x000000002201999a 0x66 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x000000002201999a bflb_platform_delay_ms + .text.bflb_platform_delay_us + 0x0000000022019a00 0x5e out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x0000000022019a00 bflb_platform_delay_us + .text.bflb_platform_init + 0x0000000022019a5e 0x60 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x0000000022019a5e bflb_platform_init + .text.bflb_platform_deinit + 0x0000000022019abe 0x42 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x0000000022019abe bflb_platform_deinit + .text.bflb_platform_print_set + 0x0000000022019b00 0xa out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x0000000022019b00 bflb_platform_print_set + .text.bflb_platform_get_random + 0x0000000022019b0a 0x70 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x0000000022019b0a bflb_platform_get_random + .text.bflb_platform_init_uart_debug_gpio + 0x0000000022019b7a 0x2e out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + 0x0000000022019b7a bflb_platform_init_uart_debug_gpio + .text.bflb_platform_deinit_uart_debug_gpio + 0x0000000022019ba8 0x30 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + 0x0000000022019ba8 bflb_platform_deinit_uart_debug_gpio + *(.rodata) + *fill* 0x0000000022019bd8 0x0 + .rodata 0x0000000022019bd8 0x6 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + *fill* 0x0000000022019bde 0x2 + .rodata 0x0000000022019be0 0x6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + *fill* 0x0000000022019be6 0x2 + .rodata 0x0000000022019be8 0x100 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + 0x0000000022019be8 __clz_tab + *(.rodata.*) + .rodata.main.str1.4 + 0x0000000022019ce8 0xe2 out/ChipTest/Eflash_Loader/eflash_loader.o + 0xe6 (size before relaxing) + *fill* 0x0000000022019dca 0x2 + .rodata.bflb_eflash_loader_cmd_ecdh_chanllenge.str1.4 + 0x0000000022019dcc 0x17 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022019de3 0x1 + .rodata.bflb_eflash_loader_cmd_erase_flash.str1.4 + 0x0000000022019de4 0x3 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022019de7 0x1 + .rodata.bflb_eflash_loader_cmd_flash_chip_erase.str1.4 + 0x0000000022019de8 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + 0xa (size before relaxing) + .rodata.bflb_eflash_loader_cmd_readSha_flash.str1.4 + 0x0000000022019dec 0x6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022019df2 0x2 + .rodata.bflb_eflash_loader_cmd_read_efuse.str1.4 + 0x0000000022019df4 0x3 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022019df7 0x1 + .rodata.bflb_eflash_loader_cmd_read_jedec_id.str1.4 + 0x0000000022019df8 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022019dfd 0x3 + .rodata.bflb_eflash_loader_cmd_read_log.str1.4 + 0x0000000022019e00 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_cmd_read_mac_addr.str1.4 + 0x0000000022019e04 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022019e09 0x3 + .rodata.bflb_eflash_loader_cmd_read_mem.str1.4 + 0x0000000022019e0c 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_cmd_read_status_register.str1.4 + 0x0000000022019e10 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022019e15 0x3 + .rodata.bflb_eflash_loader_cmd_reset.str1.4 + 0x0000000022019e18 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022019e1d 0x3 + .rodata.bflb_eflash_loader_cmd_set_flash_para.str1.4 + 0x0000000022019e20 0x9 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022019e29 0x3 + .rodata.bflb_eflash_loader_cmd_write_efuse.str1.4 + 0x0000000022019e2c 0x3 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022019e2f 0x1 + .rodata.bflb_eflash_loader_cmd_write_flash_check.str1.4 + 0x0000000022019e30 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_cmd_write_mem.str1.4 + 0x0000000022019e34 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_cmd_write_status_register.str1.4 + 0x0000000022019e38 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022019e3d 0x3 + .rodata.bflb_eflash_loader_cmd_xip_readSha_flash.str1.4 + 0x0000000022019e40 0x7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + 0xb (size before relaxing) + *fill* 0x0000000022019e47 0x1 + .rodata.bflb_eflash_loader_cmd_xip_read_flash.str1.4 + 0x0000000022019e48 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_cmd_xip_read_flash_finish.str1.4 + 0x0000000022019e4c 0x6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022019e52 0x2 + .rodata.bflb_eflash_loader_cmd_xip_read_flash_start.str1.4 + 0x0000000022019e54 0x5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + *fill* 0x0000000022019e59 0x3 + .rodata.eflash_loader_cmds + 0x0000000022019e5c 0xb8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .rodata.bflb_eflash_loader_main.str1.4 + 0x0000000022019f14 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0x32 (size before relaxing) + *fill* 0x0000000022019f42 0x2 + .rodata.eflash_loader_dump_data.str1.4 + 0x0000000022019f44 0x6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0xa (size before relaxing) + *fill* 0x0000000022019f4a 0x2 + .rodata.bflb_eflash_loader_jlink_handshake_poll.str1.4 + 0x0000000022019f4c 0x7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + *fill* 0x0000000022019f53 0x1 + .rodata.bflb_eflash_loader_uart_handshake_poll.str1.4 + 0x0000000022019f54 0x10 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0x14 (size before relaxing) + .rodata.bflb_spi_flash_init.str1.4 + 0x0000000022019f64 0x29 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + *fill* 0x0000000022019f8d 0x3 + .rodata.bflb_spi_flash_xip_read_init.str1.4 + 0x0000000022019f90 0xa out/ChipTest/Eflash_Loader/bflb_spi_flash.o + *fill* 0x0000000022019f9a 0x2 + .rodata.USB_Rework_IRQHandler.str1.4 + 0x0000000022019f9c 0x24 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .rodata.bflb_eflash_loader_usb_handshake_poll.str1.4 + 0x0000000022019fc0 0x6 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0xb (size before relaxing) + *fill* 0x0000000022019fc6 0x2 + .rodata.bflb_eflash_loader_usb_if_send.str1.4 + 0x0000000022019fc8 0xf out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + *fill* 0x0000000022019fd7 0x1 + .rodata.bflb_eflash_loader_usb_recv.str1.4 + 0x0000000022019fd8 0x13 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + *fill* 0x0000000022019feb 0x1 + .rodata.USB_Device_Init.str1.4 + 0x0000000022019fec 0x74 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .rodata.USBD_CDC_Setup.str1.4 + 0x000000002201a060 0x10 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .rodata.CDC_Control_FS.str1.4 + 0x000000002201a070 0x65 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + *fill* 0x000000002201a0d5 0x3 + .rodata.CDC_Receive_FS.str1.4 + 0x000000002201a0d8 0xb out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + 0xf (size before relaxing) + *fill* 0x000000002201a0e3 0x1 + .rodata.USBD_LL_Init.str1.4 + 0x000000002201a0e4 0x14 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .rodata.USBD_FS_ConfigStrDescriptor.str1.4 + 0x000000002201a0f8 0xb out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + *fill* 0x000000002201a103 0x1 + .rodata.USBD_FS_InterfaceStrDescriptor.str1.4 + 0x000000002201a104 0xe out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + *fill* 0x000000002201a112 0x2 + .rodata.USBD_FS_ManufacturerStrDescriptor.str1.4 + 0x000000002201a114 0x13 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + *fill* 0x000000002201a127 0x1 + .rodata.USBD_FS_ProductStrDescriptor.str1.4 + 0x000000002201a128 0x16 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + *fill* 0x000000002201a13e 0x2 + .rodata.lcdigits.1541 + 0x000000002201a140 0x11 out/BSP_Common/libc/vsnprintf.o + *fill* 0x000000002201a151 0x3 + .rodata.ucdigits.1542 + 0x000000002201a154 0x11 out/BSP_Common/libc/vsnprintf.o + *fill* 0x000000002201a165 0x3 + .rodata.vsnprintf.str1.4 + 0x000000002201a168 0x7 out/BSP_Common/libc/vsnprintf.o + *fill* 0x000000002201a16f 0x1 + .rodata.bflb_hash_init.str1.4 + 0x000000002201a170 0x13 out/BSP_Common/cipher_suite/bflb_hash.o + *fill* 0x000000002201a183 0x1 + .rodata.bflb_ecdsa_verify_point_mul.isra.5.str1.4 + 0x000000002201a184 0x35 out/BSP_Common/cipher_suite/bflb_ecdsa.o + *fill* 0x000000002201a1b9 0x3 + .rodata.secp256r1InvR_N + 0x000000002201a1bc 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a1bc secp256r1InvR_N + .rodata.secp256r1InvR_P + 0x000000002201a1dc 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a1dc secp256r1InvR_P + .rodata.secp256r1N + 0x000000002201a1fc 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a1fc secp256r1N + .rodata.secp256r1P + 0x000000002201a21c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a21c secp256r1P + .rodata.secp256r1PrimeN_N + 0x000000002201a23c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a23c secp256r1PrimeN_N + .rodata.secp256r1PrimeN_P + 0x000000002201a25c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a25c secp256r1PrimeN_P + .rodata.secp256r1_1 + 0x000000002201a27c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a27c secp256r1_1 + .rodata.secp256r1_1M1 + 0x000000002201a29c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a29c secp256r1_1M1 + .rodata.secp256r1_1P1 + 0x000000002201a2bc 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a2bc secp256r1_1P1 + .rodata.secp256r1_BAR2 + 0x000000002201a2dc 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a2dc secp256r1_BAR2 + .rodata.secp256r1_BAR3 + 0x000000002201a2fc 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a2fc secp256r1_BAR3 + .rodata.secp256r1_BAR4 + 0x000000002201a31c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a31c secp256r1_BAR4 + .rodata.secp256r1_BAR8 + 0x000000002201a33c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a33c secp256r1_BAR8 + .rodata.secp256r1_Gx + 0x000000002201a35c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a35c secp256r1_Gx + .rodata.secp256r1_Gy + 0x000000002201a37c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a37c secp256r1_Gy + .rodata.secp256r1_Zerox + 0x000000002201a39c 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a39c secp256r1_Zerox + .rodata.secp256r1_Zeroy + 0x000000002201a3bc 0x20 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0x000000002201a3bc secp256r1_Zeroy + .rodata.USBD_Init.str1.4 + 0x000000002201a3dc 0x2b out/BSP_Common/usbd_core.o + *fill* 0x000000002201a407 0x1 + .rodata.USBD_LL_SetupStage.str1.4 + 0x000000002201a408 0x1b out/BSP_Common/usbd_core.o + *fill* 0x000000002201a423 0x1 + .rodata.USBD_RegisterClass.str1.4 + 0x000000002201a424 0x15 out/BSP_Common/usbd_core.o + *fill* 0x000000002201a439 0x3 + .rodata.USBD_StdDevReq.str1.4 + 0x000000002201a43c 0x16f out/BSP_Common/usbd_ctlreq.o + *fill* 0x000000002201a5ab 0x1 + .rodata.USBD_StdEPReq.str1.4 + 0x000000002201a5ac 0x77 out/BSP_Common/usbd_ctlreq.o + *fill* 0x000000002201a623 0x1 + .rodata.USBD_StdItfReq.str1.4 + 0x000000002201a624 0x30 out/BSP_Common/usbd_ctlreq.o + .rodata.Interrupt_Handler.str1.4 + 0x000000002201a654 0x8a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + *fill* 0x000000002201a6de 0x2 + .rodata.Trap_Handler.str1.4 + 0x000000002201a6e0 0x13b out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + *fill* 0x000000002201a81b 0x1 + .rodata.uartAddr + 0x000000002201a81c 0x8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .rodata.CSWTCH.116 + 0x000000002201a824 0x14 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .rodata.HAL_PCD_IRQHandler.str1.4 + 0x000000002201a838 0x71 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x79 (size before relaxing) + *fill* 0x000000002201a8a9 0x3 + .rodata.HAL_PCD_Init.str1.4 + 0x000000002201a8ac 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .rodata.str1.4 + 0x000000002201a8c4 0x5 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + *fill* 0x000000002201a8c9 0x3 + .rodata.bflb_platform_init.str1.4 + 0x000000002201a8cc 0x14 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x13 (size before relaxing) + .rodata.hexTable + 0x000000002201a8e0 0x10 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + *(.srodata) + .srodata 0x000000002201a8f0 0x4 out/startup/system_bl702.o + *(.srodata.*) + *(.tcm_code) + .tcm_code 0x000000002201a8f4 0x440 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + 0x000000002201a8f4 GLB_GPIO_Init + 0x000000002201ab0e GLB_GPIO_INPUT_Enable + 0x000000002201ab64 GLB_GPIO_INPUT_Disable + 0x000000002201abc4 GLB_GPIO_OUTPUT_Enable + 0x000000002201ac04 GLB_GPIO_OUTPUT_Disable + 0x000000002201ac48 GLB_GPIO_Set_HZ + .tcm_code 0x000000002201ad34 0x448 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + 0x000000002201ad34 HBN_Power_Down_Flash + 0x000000002201ad7e HBN_Enable_Ext + 0x000000002201ae28 HBN_Mode_Enter + 0x000000002201afc4 HBN_Set_Ldo11_Aon_Vout + 0x000000002201afda HBN_Set_Ldo11_Rt_Vout + 0x000000002201aff2 HBN_Set_Ldo11_Soc_Vout + 0x000000002201b00a HBN_Set_Ldo11_All_Vout + 0x000000002201b03a HBN_Set_Ldo11rt_Drive_Strength + 0x000000002201b050 HBN_Hw_Pu_Pd_Cfg + 0x000000002201b076 HBN_Pin_WakeUp_Mask + 0x000000002201b08c HBN_Set_Pad_23_28_Pullnone + 0x000000002201b0a0 HBN_Set_Pad_23_28_Pullup + 0x000000002201b0ba HBN_Set_Pad_23_28_Pulldown + 0x000000002201b0d4 HBN_Set_Pad_23_28_ActiveIE + 0x000000002201b0ee HBN_Enable + .tcm_code 0x000000002201b17c 0x224 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + 0x000000002201b17c PDS_RAM_Config + 0x000000002201b18e PDS_Set_Pad_Config + 0x000000002201b314 PDS_App_Enable + 0x000000002201b370 PDS_Force_Config + 0x000000002201b380 PDS_Default_Level_Config + .tcm_code 0x000000002201b3a0 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + 0x000000002201b3a0 SF_Cfg_Init_Flash_Gpio + .tcm_code 0x000000002201b476 0x1ae out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + 0x000000002201b476 SF_Cfg_Init_Internal_Flash_Gpio + 0x000000002201b4ea SF_Cfg_Get_Flash_Cfg_Need_Lock_Ext + 0x000000002201b5a0 SF_Cfg_Flash_Identify_Ext + .tcm_code 0x000000002201b624 0x50a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + 0x000000002201b624 ASM_Delay_Us + 0x000000002201b62e BL702_Delay_US + 0x000000002201b638 BL702_Delay_MS + 0x000000002201b642 BL702_MemCpy + 0x000000002201b64c BL702_MemCpy4 + 0x000000002201b656 BL702_MemCpy_Fast + 0x000000002201b660 ARCH_MemCpy_Fast + 0x000000002201b66a BL702_MemSet + 0x000000002201b674 BL702_MemSet4 + 0x000000002201b67e BL702_MemCmp + 0x000000002201b688 BFLB_Soft_CRC32 + 0x000000002201b692 GLB_SW_System_Reset + 0x000000002201b69c GLB_SW_CPU_Reset + 0x000000002201b6a6 GLB_SW_POR_Reset + 0x000000002201b6b0 GLB_Select_Internal_Flash + 0x000000002201b6ba GLB_Swap_Flash_Pin + 0x000000002201b6c4 GLB_Swap_Flash_CS_IO2_Pin + 0x000000002201b6ce GLB_Swap_Flash_IO0_IO3_Pin + 0x000000002201b6d8 GLB_Select_Internal_PSram + 0x000000002201b6e2 GLB_Deswap_Flash_Pin + 0x000000002201b6ec GLB_Select_External_Flash + 0x000000002201b6f6 GLB_GPIO_Get_Fun + 0x000000002201b700 EF_Ctrl_Busy + 0x000000002201b70a EF_Ctrl_Sw_AHB_Clk_0 + 0x000000002201b714 EF_Ctrl_Load_Efuse_R0 + 0x000000002201b71e EF_Ctrl_Clear + 0x000000002201b728 PDS_Reset + 0x000000002201b732 PDS_Enable + 0x000000002201b73c PDS_Auto_Time_Config + 0x000000002201b746 PDS_Auto_Enable + 0x000000002201b750 PDS_Manual_Force_Turn_Off + 0x000000002201b75a PDS_Manual_Force_Turn_On + 0x000000002201b764 HBN_Reset + 0x000000002201b76e HBN_GPIO_Dbg_Pull_Cfg + 0x000000002201b778 XIP_SFlash_State_Save + 0x000000002201b782 XIP_SFlash_State_Restore + 0x000000002201b78c XIP_SFlash_Erase_Need_Lock + 0x000000002201b796 XIP_SFlash_Write_Need_Lock + 0x000000002201b7a0 XIP_SFlash_Read_Need_Lock + 0x000000002201b7aa XIP_SFlash_GetJedecId_Need_Lock + 0x000000002201b7b4 XIP_SFlash_GetDeviceId_Need_Lock + 0x000000002201b7be XIP_SFlash_GetUniqueId_Need_Lock + 0x000000002201b7c8 XIP_SFlash_Read_Via_Cache_Need_Lock + 0x000000002201b7d2 XIP_SFlash_Read_With_Lock + 0x000000002201b7dc XIP_SFlash_Write_With_Lock + 0x000000002201b7e6 XIP_SFlash_Erase_With_Lock + 0x000000002201b7f0 SFlash_Init + 0x000000002201b7fa SFlash_SetSPIMode + 0x000000002201b804 SFlash_Read_Reg + 0x000000002201b80e SFlash_Write_Reg + 0x000000002201b818 SFlash_Read_Reg_With_Cmd + 0x000000002201b822 SFlash_Write_Reg_With_Cmd + 0x000000002201b82c SFlash_Busy + 0x000000002201b836 SFlash_Write_Enable + 0x000000002201b840 SFlash_Qspi_Enable + 0x000000002201b84a SFlash_Volatile_Reg_Write_Enable + 0x000000002201b854 SFlash_Chip_Erase + 0x000000002201b85e SFlash_Sector_Erase + 0x000000002201b868 SFlash_Blk32_Erase + 0x000000002201b872 SFlash_Blk64_Erase + 0x000000002201b87c SFlash_Erase + 0x000000002201b886 SFlash_Program + 0x000000002201b890 SFlash_GetUniqueId + 0x000000002201b89a SFlash_GetJedecId + 0x000000002201b8a4 SFlash_GetDeviceId + 0x000000002201b8ae SFlash_Powerdown + 0x000000002201b8b8 SFlash_Releae_Powerdown + 0x000000002201b8c2 SFlash_Restore_From_Powerdown + 0x000000002201b8cc SFlash_SetBurstWrap + 0x000000002201b8d6 SFlash_DisableBurstWrap + 0x000000002201b8e0 SFlash_Software_Reset + 0x000000002201b8ea SFlash_Reset_Continue_Read + 0x000000002201b8f4 SFlash_Set_IDbus_Cfg + 0x000000002201b8fe SFlash_IDbus_Read_Enable + 0x000000002201b908 SFlash_Cache_Read_Enable + 0x000000002201b912 SFlash_Cache_Read_Disable + 0x000000002201b91c SFlash_Read + 0x000000002201b926 L1C_Cache_Enable_Set + 0x000000002201b930 L1C_Cache_Write_Set + 0x000000002201b93a L1C_Cache_Flush + 0x000000002201b944 L1C_Cache_Hit_Count_Get + 0x000000002201b94e L1C_Cache_Miss_Count_Get + 0x000000002201b958 L1C_Cache_Read_Disable + 0x000000002201b962 L1C_Set_Wrap + 0x000000002201b96c L1C_Set_Way_Disable + 0x000000002201b976 L1C_IROM_2T_Access_Set + 0x000000002201b980 SF_Ctrl_Enable + 0x000000002201b98a SF_Ctrl_Get_Clock_Delay + 0x000000002201b994 SF_Ctrl_Set_Clock_Delay + 0x000000002201b99e SF_Ctrl_Cmds_Set + 0x000000002201b9a8 SF_Ctrl_Set_Owner + 0x000000002201b9b2 SF_Ctrl_Disable + 0x000000002201b9bc SF_Ctrl_Select_Pad + 0x000000002201b9c6 SF_Ctrl_Select_Bank + 0x000000002201b9d0 SF_Ctrl_AES_Enable_BE + 0x000000002201b9da SF_Ctrl_AES_Enable_LE + 0x000000002201b9e4 SF_Ctrl_AES_Set_Region + 0x000000002201b9ee SF_Ctrl_AES_Set_Key + 0x000000002201b9f8 SF_Ctrl_AES_Set_Key_BE + 0x000000002201ba02 SF_Ctrl_AES_Set_IV + 0x000000002201ba0c SF_Ctrl_AES_Set_IV_BE + 0x000000002201ba16 SF_Ctrl_AES_Enable + 0x000000002201ba20 SF_Ctrl_AES_Disable + 0x000000002201ba2a SF_Ctrl_Is_AES_Enable + 0x000000002201ba34 SF_Ctrl_Set_Flash_Image_Offset + 0x000000002201ba3e SF_Ctrl_Get_Flash_Image_Offset + 0x000000002201ba48 SF_Ctrl_Select_Clock + 0x000000002201ba52 SF_Ctrl_SendCmd + 0x000000002201ba5c SF_Ctrl_Flash_Read_Icache_Set + 0x000000002201ba66 SF_Ctrl_Psram_Write_Icache_Set + 0x000000002201ba70 SF_Ctrl_Psram_Read_Icache_Set + 0x000000002201ba7a SF_Ctrl_GetBusyState + 0x000000002201ba84 SF_Cfg_Deinit_Ext_Flash_Gpio + 0x000000002201ba8e SF_Cfg_Init_Ext_Flash_Gpio + 0x000000002201ba98 SF_Cfg_Get_Flash_Cfg_Need_Lock + 0x000000002201baa2 SF_Cfg_Flash_Identify + 0x000000002201baac Psram_ReadReg + 0x000000002201bab6 Psram_WriteReg + 0x000000002201bac0 Psram_SetDriveStrength + 0x000000002201baca Psram_SetBurstWrap + 0x000000002201bad4 Psram_ReadId + 0x000000002201bade Psram_EnterQuadMode + 0x000000002201bae8 Psram_ExitQuadMode + 0x000000002201baf2 Psram_ToggleBurstLength + 0x000000002201bafc Psram_SoftwareReset + 0x000000002201bb06 Psram_Set_IDbus_Cfg + 0x000000002201bb10 Psram_Cache_Write_Set + 0x000000002201bb1a Psram_Write + 0x000000002201bb24 Psram_Read + *(.tcm_const) + *fill* 0x000000002201bb2e 0x2 + .tcm_const 0x000000002201bb30 0xa8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + *(.sclock_rlt_code) + .sclock_rlt_code + 0x000000002201bbd8 0x14a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + 0x000000002201bbd8 AON_Power_On_MBG + 0x000000002201bbe2 AON_Power_Off_MBG + 0x000000002201bbec AON_Power_On_XTAL + 0x000000002201bbf6 AON_Set_Xtal_CapCode + 0x000000002201bc00 AON_Power_Off_XTAL + 0x000000002201bc0a GLB_Get_Root_CLK_Sel + 0x000000002201bc14 GLB_Set_System_CLK_Div + 0x000000002201bc1e GLB_Get_BCLK_Div + 0x000000002201bc28 GLB_Get_HCLK_Div + 0x000000002201bc32 Update_SystemCoreClockWith_XTAL + 0x000000002201bc3c GLB_Set_System_CLK + 0x000000002201bc46 System_Core_Clock_Update_From_RC32M + 0x000000002201bc50 GLB_Set_SF_CLK + 0x000000002201bc5a GLB_Power_Off_DLL + 0x000000002201bc64 GLB_Power_On_DLL + 0x000000002201bc6e GLB_Enable_DLL_All_Clks + 0x000000002201bc78 GLB_Enable_DLL_Clk + 0x000000002201bc82 GLB_Disable_DLL_All_Clks + 0x000000002201bc8c GLB_Disable_DLL_Clk + 0x000000002201bc96 EF_Ctrl_Get_Trim_Parity + 0x000000002201bca0 EF_Ctrl_Read_RC32K_Trim + 0x000000002201bcaa EF_Ctrl_Read_RC32M_Trim + 0x000000002201bcb4 PDS_Trim_RC32M + 0x000000002201bcbe PDS_Select_RC32M_As_PLL_Ref + 0x000000002201bcc8 PDS_Select_XTAL_As_PLL_Ref + 0x000000002201bcd2 PDS_Power_On_PLL + 0x000000002201bcdc PDS_Enable_PLL_All_Clks + 0x000000002201bce6 PDS_Disable_PLL_All_Clks + 0x000000002201bcf0 PDS_Enable_PLL_Clk + 0x000000002201bcfa PDS_Disable_PLL_Clk + 0x000000002201bd04 PDS_Power_Off_PLL + 0x000000002201bd0e HBN_Trim_RC32K + 0x000000002201bd18 HBN_Set_ROOT_CLK_Sel + *(.sclock_rlt_const) + 0x000000002201bd24 . = ALIGN (0x4) + *fill* 0x000000002201bd22 0x2 + 0x000000002201bd24 __text_code_end__ = . + +.rela.dyn 0x000000002201bd24 0x0 + .rela.text.startup.main + 0x000000002201bd24 0x0 out/ChipTest/Eflash_Loader/eflash_loader.o + .rela.text.start_load + 0x000000002201bd24 0x0 out/ChipTest/Eflash_Loader/eflash_loader.o + .rela.init 0x000000002201bd24 0x0 out/ChipTest/Eflash_Loader/eflash_loader.o + .rela.text.metal.init.enter + 0x000000002201bd24 0x0 out/ChipTest/Eflash_Loader/eflash_loader.o + 0x000000002201bd24 . = ALIGN (0x4) + 0x000000002201bd24 __itcm_load_addr = . + +.itcm_region 0x000000002201bd24 0x0 + 0x000000002201bd24 . = ALIGN (0x4) + 0x000000002201bd24 __tcm_code_start__ = . + 0x000000002201bd24 . = ALIGN (0x4) + 0x000000002201bd24 __tcm_code_end__ = . + 0x000000002201bd24 __dtcm_load_addr = (__itcm_load_addr + SIZEOF (.itcm_region)) + +.dtcm_region 0x000000004201c000 0x0 load address 0x000000002201bd24 + 0x000000004201c000 . = ALIGN (0x4) + 0x000000004201c000 __tcm_data_start__ = . + *(.tcm_data) + 0x000000004201c000 . = ALIGN (0x4) + 0x000000004201c000 __tcm_data_end__ = . + +.stack_dummy 0x000000004201c000 0x400 + 0x000000004201c000 . = ALIGN (0x4) + 0x000000004201c400 . = (. + StackSize) + *fill* 0x000000004201c000 0x400 + 0x000000004201c400 . = ALIGN (0x4) + 0x0000000042020000 __StackTop = (ORIGIN (dtcm_memory) + LENGTH (dtcm_memory)) + 0x000000004201fc00 __StackLimit = (__StackTop - SIZEOF (.stack_dummy)) + 0x0000000000000001 ASSERT ((__StackLimit >= __tcm_data_end__), region RAM overflowed with stack) + 0x000000002201bd24 __system_ram_load_addr = (__dtcm_load_addr + SIZEOF (.dtcm_region)) + +.system_ram_data_region + 0x0000000042020000 0x3d0c load address 0x000000002201bd24 + 0x0000000042020000 . = ALIGN (0x4) + 0x0000000042020000 __system_ram_data_start__ = . + *(.system_ram) + .system_ram 0x0000000042020000 0x2d0c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + 0x0000000042020000 padding + 0x0000000042020040 shaTmpBuf + 0x0000000042020080 hash_handle + 0x0000000042020104 checkBuf + 0x0000000042020904 ShaInbuf + .system_ram 0x0000000042022d0c 0x1000 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0x0000000042023d0c . = ALIGN (0x4) + 0x0000000042023d0c __system_ram_data_end__ = . + 0x000000002201fa30 __ram_load_addr = (__system_ram_load_addr + SIZEOF (.system_ram_data_region)) + +RAM_DATA 0x0000000042023d0c 0x3a8 load address 0x000000002201fa30 + 0x0000000042023d0c . = ALIGN (0x4) + 0x0000000042023d0c __ram_data_start__ = . + 0x000000004202450c PROVIDE (__global_pointer$ = (. + 0x800)) + *(.data) + *(.data.*) + .data.flashCfg_Gd_Q80E_Q16E + 0x0000000042023d0c 0x54 out/ChipTest/Eflash_Loader/eflash_loader.o + .data.uart_if_cfg + 0x0000000042023d60 0x14 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .data.flashCfg_Gd_Q80E_Q16E + 0x0000000042023d74 0x54 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .data.hUsbDeviceFS + 0x0000000042023dc8 0x148 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + 0x0000000042023dc8 hUsbDeviceFS + .data.USBD_CDC + 0x0000000042023f10 0x38 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + 0x0000000042023f10 USBD_CDC + .data.USBD_CDC_CfgFSDesc + 0x0000000042023f48 0x43 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + 0x0000000042023f48 USBD_CDC_CfgFSDesc + *fill* 0x0000000042023f8b 0x1 + .data.USBD_CDC_CfgHSDesc + 0x0000000042023f8c 0x43 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + 0x0000000042023f8c USBD_CDC_CfgHSDesc + *fill* 0x0000000042023fcf 0x1 + .data.USBD_CDC_DeviceQualifierDesc + 0x0000000042023fd0 0xa out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + *fill* 0x0000000042023fda 0x2 + .data.USBD_CDC_OtherSpeedCfgDesc + 0x0000000042023fdc 0x43 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + 0x0000000042023fdc USBD_CDC_OtherSpeedCfgDesc + *fill* 0x000000004202401f 0x1 + .data.USBD_Interface_fops_FS + 0x0000000042024020 0x10 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + 0x0000000042024020 USBD_Interface_fops_FS + .data.cdc_line_coding + 0x0000000042024030 0x8 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + 0x0000000042024030 cdc_line_coding + .data.FS_Desc 0x0000000042024038 0x20 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + 0x0000000042024038 FS_Desc + .data.USBD_FS_DeviceDesc + 0x0000000042024058 0x12 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + 0x0000000042024058 USBD_FS_DeviceDesc + *fill* 0x000000004202406a 0x2 + .data.USBD_StringSerial + 0x000000004202406c 0x1a out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + 0x000000004202406c USBD_StringSerial + *fill* 0x0000000042024086 0x2 + .data.uart_dbg_cfg.10993 + 0x0000000042024088 0x14 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + *(.sdata) + *(.sdata.*) + .sdata.uart_if_fifocfg + 0x000000004202409c 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .sdata.ReworkBaudrate + 0x00000000420240a0 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .sdata.toCnt 0x00000000420240a4 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0x00000000420240a4 toCnt + .sdata.USBD_LangIDDesc + 0x00000000420240a8 0x4 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + 0x00000000420240a8 USBD_LangIDDesc + .sdata.fifoCfg.10994 + 0x00000000420240ac 0x4 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + *(.sdata2) + *(.sdata2.*) + .sdata2.CSWTCH.6 + 0x00000000420240b0 0x4 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x00000000420240b4 . = ALIGN (0x4) + 0x00000000420240b4 __ram_data_end__ = . + +.bss 0x00000000420240b4 0x6bf8 load address 0x000000002201fdd8 + 0x00000000420240b4 . = ALIGN (0x4) + 0x00000000420240b4 __bss_start__ = . + *(.bss*) + .bss.eflash_loader_cmd_ack_buf + 0x00000000420240b4 0x40 out/ChipTest/Eflash_Loader/eflash_loader.o + 0x00000000420240b4 eflash_loader_cmd_ack_buf + .bss.eflash_loader_readbuf + 0x00000000420240f4 0x4810 out/ChipTest/Eflash_Loader/eflash_loader.o + 0x00000000420240f4 eflash_loader_readbuf + .bss.otp_cfg 0x0000000042028904 0x8 out/ChipTest/Eflash_Loader/eflash_loader.o + 0x0000000042028904 otp_cfg + .bss.ecdh_shared_keyx + 0x000000004202890c 0x20 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .bss.ecdh_shared_keyy + 0x000000004202892c 0x20 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .bss.eflash_loader_if_cfg + 0x000000004202894c 0x24 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .bss.ReworkSetupCmd + 0x0000000042028970 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0x0000000042028970 ReworkSetupCmd + .bss.ReworkSetupInData + 0x00000000420289b0 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0x00000000420289b0 ReworkSetupInData + .bss.ReworkSetupOutData + 0x00000000420289f0 0x40 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0x00000000420289f0 ReworkSetupOutData + .bss.UserRxBufferFS + 0x0000000042028a30 0x3e8 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + 0x0000000042028a30 UserRxBufferFS + .bss.UserTxBufferFS + 0x0000000042028e18 0x3e8 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + 0x0000000042028e18 UserTxBufferFS + .bss.hpcd_USB_FS + 0x0000000042029200 0x2a4 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0x0000000042029200 hpcd_USB_FS + .bss.mem.11148 + 0x00000000420294a4 0x220 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .bss.USBD_StrDesc + 0x00000000420296c4 0x200 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + 0x00000000420296c4 USBD_StrDesc + .bss.usbCmdRbHandle + 0x00000000420298c4 0x20 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x00000000420298c4 usbCmdRbHandle + .bss.usbRespRbHandle + 0x00000000420298e4 0x20 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x00000000420298e4 usbRespRbHandle + .bss.usb_cmd_rb_mem + 0x0000000042029904 0xc00 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x0000000042029904 usb_cmd_rb_mem + .bss.usb_resp_rb_mem + 0x000000004202a504 0x400 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0x000000004202a504 usb_resp_rb_mem + .bss.shaCtx 0x000000004202a904 0x14 out/BSP_Common/cipher_suite/bflb_hash.o + .bss.__Interrupt_Handlers + 0x000000004202a918 0x140 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + 0x000000004202a918 __Interrupt_Handlers + .bss.uartIntCbfArra + 0x000000004202aa58 0x48 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .bss.secEngIntCbfArra + 0x000000004202aaa0 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .bss.ep0_in_data_buff + 0x000000004202aab8 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x000000004202aab8 ep0_in_data_buff + .bss.ep0_out_data_buff + 0x000000004202aaf8 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x000000004202aaf8 ep0_out_data_buff + .bss.ep1_out_data_buff + 0x000000004202ab38 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x000000004202ab38 ep1_out_data_buff + .bss.ep2_in_data_buff + 0x000000004202ab78 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x000000004202ab78 ep2_in_data_buff + .bss.ep3_out_data_buff + 0x000000004202abb8 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0x000000004202abb8 ep3_out_data_buff + .bss.print_buf.11011 + 0x000000004202abf8 0x80 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + *(.sbss*) + .sbss.PllOnFlag + 0x000000004202ac78 0x1 out/ChipTest/Eflash_Loader/eflash_loader.o + 0x000000004202ac78 PllOnFlag + .sbss.bootMode + 0x000000004202ac79 0x1 out/ChipTest/Eflash_Loader/eflash_loader.o + 0x000000004202ac79 bootMode + *fill* 0x000000004202ac7a 0x2 + .sbss.rx_buf_index + 0x000000004202ac7c 0x4 out/ChipTest/Eflash_Loader/eflash_loader.o + 0x000000004202ac7c rx_buf_index + .sbss.rx_buf_len + 0x000000004202ac80 0x4 out/ChipTest/Eflash_Loader/eflash_loader.o + 0x000000004202ac80 rx_buf_len + .sbss.xtalType + 0x000000004202ac84 0x1 out/ChipTest/Eflash_Loader/eflash_loader.o + 0x000000004202ac84 xtalType + *fill* 0x000000004202ac85 0x3 + .sbss.eflash_loader_error + 0x000000004202ac88 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .sbss.eflash_loader_if + 0x000000004202ac8c 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0x000000004202ac8c eflash_loader_if + .sbss.abr_gpio_sel + 0x000000004202ac90 0x1 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + *fill* 0x000000004202ac91 0x3 + .sbss.detected_baudrate + 0x000000004202ac94 0x4 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .sbss.bflb_eflash_loader_flash_id_valid_flag + 0x000000004202ac98 0x4 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .sbss.ifalt.10862 + 0x000000004202ac9c 0x1 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .sbss.cfgidx.10868 + 0x000000004202ac9d 0x1 out/BSP_Common/usbd_ctlreq.o + .sbss.aesEnable + 0x000000004202ac9e 0x1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + *fill* 0x000000004202ac9f 0x1 + .sbss.init_flag + 0x000000004202aca0 0x4 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .sbss.log_len 0x000000004202aca4 0x4 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .sbss.uart_dbg_disable + 0x000000004202aca8 0x1 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + *(COMMON) + 0x000000004202acac . = ALIGN (0x4) + *fill* 0x000000004202aca9 0x3 + 0x000000004202acac __bss_end__ = . + +.noinit_data 0x000000004202acac 0x0 + 0x000000004202acac . = ALIGN (0x4) + 0x000000004202acac __noinit_data_start__ = . + *(.noinit_data*) + 0x000000004202acac . = ALIGN (0x4) + 0x000000004202acac __noinit_data_end__ = . + +.heap 0x000000004202acac 0x0 + 0x000000004202acac . = ALIGN (0x4) + 0x000000004202acac __HeapBase = . + *(.heap*) + 0x000000004202acac . = ALIGN (0x4) + 0x000000004202acac __HeapLimit = . +OUTPUT(out/ChipTest/Eflash_Loader/chiptest_eflash_loader.elf elf32-littleriscv) + +.debug_info 0x0000000000000000 0x3d1de + .debug_info 0x0000000000000000 0x17bd out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_info 0x00000000000017bd 0x2f7c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_info 0x0000000000004739 0xf94 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_info 0x00000000000056cd 0x14e5 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_info 0x0000000000006bb2 0xe79 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_info 0x0000000000007a2b 0x1c8b out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_info 0x00000000000096b6 0x1fc out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_info 0x00000000000098b2 0xa2d out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_info 0x000000000000a2df 0x1e84 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_info 0x000000000000c163 0x20ed out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_info 0x000000000000e250 0x7db out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_info 0x000000000000ea2b 0xde4 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_info 0x000000000000f80f 0xb76 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_info 0x0000000000010385 0x4448 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_info 0x00000000000147cd 0x5cc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_info 0x0000000000014d99 0xd78 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_info 0x0000000000015b11 0xa10 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_info 0x0000000000016521 0xf7 out/BSP_Common/libc/memcpy.o + .debug_info 0x0000000000016618 0xd7 out/BSP_Common/libc/memset.o + .debug_info 0x00000000000166ef 0x525 out/BSP_Common/libc/vsnprintf.o + .debug_info 0x0000000000016c14 0xbf out/BSP_Common/libc/strlen.o + .debug_info 0x0000000000016cd3 0x4a8 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_info 0x000000000001717b 0x32e1 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_info 0x000000000001a45c 0xcdf out/BSP_Common/usbd_core.o + .debug_info 0x000000000001b13b 0x12f9 out/BSP_Common/usbd_ctlreq.o + .debug_info 0x000000000001c434 0x787 out/BSP_Common/usbd_ioreq.o + .debug_info 0x000000000001cbbb 0x439 out/startup/system_bl702.o + .debug_info 0x000000000001cff4 0x1cb out/startup/GCC/start_load.o + .debug_info 0x000000000001d1bf 0x24e out/startup/interrupt.o + .debug_info 0x000000000001d40d 0x22 out/startup/GCC/entry.o + .debug_info 0x000000000001d42f 0x595 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_info 0x000000000001d9c4 0x1bc0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_info 0x000000000001f584 0x267e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_info 0x0000000000021c02 0x2650 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_info 0x0000000000024252 0x13fa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_info 0x000000000002564c 0x150f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_info 0x0000000000026b5b 0x10f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_info 0x0000000000026c6a 0x4b60 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_info 0x000000000002b7ca 0x1c0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_info 0x000000000002b98a 0x42e0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_info 0x000000000002fc6a 0x46a8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_info 0x0000000000034312 0xaa1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_info 0x0000000000034db3 0x3e74 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_info 0x0000000000038c27 0x1172 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_info 0x0000000000039d99 0x360 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_info 0x000000000003a0f9 0x1276 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_info 0x000000000003b36f 0x12d4 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .debug_info 0x000000000003c643 0xb9b /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_abbrev 0x0000000000000000 0x76b9 + .debug_abbrev 0x0000000000000000 0x2f8 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_abbrev 0x00000000000002f8 0x568 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_abbrev 0x0000000000000860 0x34d out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_abbrev 0x0000000000000bad 0x391 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_abbrev 0x0000000000000f3e 0x2a0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_abbrev 0x00000000000011de 0x425 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_abbrev 0x0000000000001603 0x10b out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_abbrev 0x000000000000170e 0x1e8 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_abbrev 0x00000000000018f6 0x329 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_abbrev 0x0000000000001c1f 0x449 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_abbrev 0x0000000000002068 0x1cb out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_abbrev 0x0000000000002233 0x294 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_abbrev 0x00000000000024c7 0x2cb out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_abbrev 0x0000000000002792 0x36f out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_abbrev 0x0000000000002b01 0x226 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_abbrev 0x0000000000002d27 0x2d3 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_abbrev 0x0000000000002ffa 0x2a0 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_abbrev 0x000000000000329a 0xba out/BSP_Common/libc/memcpy.o + .debug_abbrev 0x0000000000003354 0x9d out/BSP_Common/libc/memset.o + .debug_abbrev 0x00000000000033f1 0x1f4 out/BSP_Common/libc/vsnprintf.o + .debug_abbrev 0x00000000000035e5 0x8c out/BSP_Common/libc/strlen.o + .debug_abbrev 0x0000000000003671 0x1ac out/BSP_Common/cipher_suite/bflb_hash.o + .debug_abbrev 0x000000000000381d 0x326 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_abbrev 0x0000000000003b43 0x293 out/BSP_Common/usbd_core.o + .debug_abbrev 0x0000000000003dd6 0x397 out/BSP_Common/usbd_ctlreq.o + .debug_abbrev 0x000000000000416d 0x16d out/BSP_Common/usbd_ioreq.o + .debug_abbrev 0x00000000000042da 0x1c9 out/startup/system_bl702.o + .debug_abbrev 0x00000000000044a3 0x94 out/startup/GCC/start_load.o + .debug_abbrev 0x0000000000004537 0x130 out/startup/interrupt.o + .debug_abbrev 0x0000000000004667 0x12 out/startup/GCC/entry.o + .debug_abbrev 0x0000000000004679 0x191 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_abbrev 0x000000000000480a 0x30d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_abbrev 0x0000000000004b17 0x2af out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_abbrev 0x0000000000004dc6 0x392 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_abbrev 0x0000000000005158 0x335 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_abbrev 0x000000000000548d 0x2ba out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_abbrev 0x0000000000005747 0xa8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_abbrev 0x00000000000057ef 0x4a8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_abbrev 0x0000000000005c97 0x106 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_abbrev 0x0000000000005d9d 0x3f8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_abbrev 0x0000000000006195 0x4a3 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_abbrev 0x0000000000006638 0x1c9 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_abbrev 0x0000000000006801 0x2b4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_abbrev 0x0000000000006ab5 0x33c out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_abbrev 0x0000000000006df1 0x111 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_abbrev 0x0000000000006f02 0x2d5 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_abbrev 0x00000000000071d7 0x2f1 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .debug_abbrev 0x00000000000074c8 0x1f1 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_loc 0x0000000000000000 0x2203c + .debug_loc 0x0000000000000000 0x7e out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_loc 0x000000000000007e 0x164a out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_loc 0x00000000000016c8 0x28a out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_loc 0x0000000000001952 0x5ef out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_loc 0x0000000000001f41 0x1f8 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_loc 0x0000000000002139 0x387 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_loc 0x00000000000024c0 0x151 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_loc 0x0000000000002611 0x63 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_loc 0x0000000000002674 0x687 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_loc 0x0000000000002cfb 0x5ae out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_loc 0x00000000000032a9 0x62a out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_loc 0x00000000000038d3 0x347 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_loc 0x0000000000003c1a 0xe18 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_loc 0x0000000000004a32 0x2b0 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_loc 0x0000000000004ce2 0x325 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_loc 0x0000000000005007 0xa81 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_loc 0x0000000000005a88 0x6f out/BSP_Common/libc/memcpy.o + .debug_loc 0x0000000000005af7 0x9a out/BSP_Common/libc/memset.o + .debug_loc 0x0000000000005b91 0x183c out/BSP_Common/libc/vsnprintf.o + .debug_loc 0x00000000000073cd 0x71 out/BSP_Common/libc/strlen.o + .debug_loc 0x000000000000743e 0x287 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_loc 0x00000000000076c5 0xb4a out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_loc 0x000000000000820f 0x870 out/BSP_Common/usbd_core.o + .debug_loc 0x0000000000008a7f 0xb42 out/BSP_Common/usbd_ctlreq.o + .debug_loc 0x00000000000095c1 0x23c out/BSP_Common/usbd_ioreq.o + .debug_loc 0x00000000000097fd 0x49 out/startup/system_bl702.o + .debug_loc 0x0000000000009846 0x73 out/startup/GCC/start_load.o + .debug_loc 0x00000000000098b9 0x122 out/startup/interrupt.o + .debug_loc 0x00000000000099db 0x2e5 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_loc 0x0000000000009cc0 0x248f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_loc 0x000000000000c14f 0x2aa5 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_loc 0x000000000000ebf4 0x1a8b out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_loc 0x000000000001067f 0xb0b out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_loc 0x000000000001118a 0x12b4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_loc 0x000000000001243e 0x63ea out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_loc 0x0000000000018828 0x188 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_loc 0x00000000000189b0 0x449e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_loc 0x000000000001ce4e 0x106e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_loc 0x000000000001debc 0x2c4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_loc 0x000000000001e180 0x21c6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_loc 0x0000000000020346 0x7bd out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_loc 0x0000000000020b03 0xbd0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_loc 0x00000000000216d3 0x969 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + +.debug_aranges 0x0000000000000000 0x2040 + .debug_aranges + 0x0000000000000000 0x28 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_aranges + 0x0000000000000028 0xf0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_aranges + 0x0000000000000118 0x48 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_aranges + 0x0000000000000160 0x68 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_aranges + 0x00000000000001c8 0x50 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_aranges + 0x0000000000000218 0x68 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_aranges + 0x0000000000000280 0x28 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_aranges + 0x00000000000002a8 0x40 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_aranges + 0x00000000000002e8 0xc0 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_aranges + 0x00000000000003a8 0x78 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_aranges + 0x0000000000000420 0x28 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_aranges + 0x0000000000000448 0x90 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_aranges + 0x00000000000004d8 0x40 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_aranges + 0x0000000000000518 0x108 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_aranges + 0x0000000000000620 0x58 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_aranges + 0x0000000000000678 0x90 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_aranges + 0x0000000000000708 0xa0 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_aranges + 0x00000000000007a8 0x20 out/BSP_Common/libc/memcpy.o + .debug_aranges + 0x00000000000007c8 0x20 out/BSP_Common/libc/memset.o + .debug_aranges + 0x00000000000007e8 0x20 out/BSP_Common/libc/vsnprintf.o + .debug_aranges + 0x0000000000000808 0x20 out/BSP_Common/libc/strlen.o + .debug_aranges + 0x0000000000000828 0x40 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_aranges + 0x0000000000000868 0x88 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_aranges + 0x00000000000008f0 0xa8 out/BSP_Common/usbd_core.o + .debug_aranges + 0x0000000000000998 0x48 out/BSP_Common/usbd_ctlreq.o + .debug_aranges + 0x00000000000009e0 0x50 out/BSP_Common/usbd_ioreq.o + .debug_aranges + 0x0000000000000a30 0x38 out/startup/system_bl702.o + .debug_aranges + 0x0000000000000a68 0x20 out/startup/GCC/start_load.o + .debug_aranges + 0x0000000000000a88 0x68 out/startup/interrupt.o + .debug_aranges + 0x0000000000000af0 0x30 out/startup/GCC/entry.o + .debug_aranges + 0x0000000000000b20 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_aranges + 0x0000000000000b58 0x178 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_aranges + 0x0000000000000cd0 0x2c8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_aranges + 0x0000000000000f98 0x230 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_aranges + 0x00000000000011c8 0xc8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_aranges + 0x0000000000001290 0x130 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_aranges + 0x00000000000013c0 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_aranges + 0x00000000000013e8 0x298 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_aranges + 0x0000000000001680 0x20 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_aranges + 0x00000000000016a0 0x1e0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_aranges + 0x0000000000001880 0x118 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_aranges + 0x0000000000001998 0x30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_aranges + 0x00000000000019c8 0x528 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_aranges + 0x0000000000001ef0 0xd0 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_aranges + 0x0000000000001fc0 0x28 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_aranges + 0x0000000000001fe8 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_aranges + 0x0000000000002008 0x20 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .debug_aranges + 0x0000000000002028 0x18 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_ranges 0x0000000000000000 0x31f0 + .debug_ranges 0x0000000000000000 0x18 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_ranges 0x0000000000000018 0x150 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_ranges 0x0000000000000168 0x50 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_ranges 0x00000000000001b8 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_ranges 0x0000000000000210 0x58 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_ranges 0x0000000000000268 0x108 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_ranges 0x0000000000000370 0x18 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_ranges 0x0000000000000388 0x30 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_ranges 0x00000000000003b8 0xb0 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_ranges 0x0000000000000468 0x190 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_ranges 0x00000000000005f8 0x40 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_ranges 0x0000000000000638 0x80 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_ranges 0x00000000000006b8 0x48 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_ranges 0x0000000000000700 0x270 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_ranges 0x0000000000000970 0xc0 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_ranges 0x0000000000000a30 0x110 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_ranges 0x0000000000000b40 0xd8 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_ranges 0x0000000000000c18 0x10 out/BSP_Common/libc/memcpy.o + .debug_ranges 0x0000000000000c28 0x10 out/BSP_Common/libc/memset.o + .debug_ranges 0x0000000000000c38 0x90 out/BSP_Common/libc/vsnprintf.o + .debug_ranges 0x0000000000000cc8 0x10 out/BSP_Common/libc/strlen.o + .debug_ranges 0x0000000000000cd8 0x30 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_ranges 0x0000000000000d08 0xa8 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_ranges 0x0000000000000db0 0x98 out/BSP_Common/usbd_core.o + .debug_ranges 0x0000000000000e48 0x110 out/BSP_Common/usbd_ctlreq.o + .debug_ranges 0x0000000000000f58 0x40 out/BSP_Common/usbd_ioreq.o + .debug_ranges 0x0000000000000f98 0x28 out/startup/system_bl702.o + .debug_ranges 0x0000000000000fc0 0x10 out/startup/GCC/start_load.o + .debug_ranges 0x0000000000000fd0 0x58 out/startup/interrupt.o + .debug_ranges 0x0000000000001028 0x28 out/startup/GCC/entry.o + .debug_ranges 0x0000000000001050 0x28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_ranges 0x0000000000001078 0x260 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_ranges 0x00000000000012d8 0x3c8 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_ranges 0x00000000000016a0 0x3e0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_ranges 0x0000000000001a80 0x150 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_ranges 0x0000000000001bd0 0x170 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_ranges 0x0000000000001d40 0x18 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_ranges 0x0000000000001d58 0x738 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_ranges 0x0000000000002490 0x10 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_ranges 0x00000000000024a0 0x250 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_ranges 0x00000000000026f0 0x250 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_ranges 0x0000000000002940 0x38 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_ranges 0x0000000000002978 0x518 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_ranges 0x0000000000002e90 0x178 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_ranges 0x0000000000003008 0x18 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_ranges 0x0000000000003020 0x100 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_ranges 0x0000000000003120 0xd0 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + +.debug_macro 0x0000000000000000 0x301c5 + .debug_macro 0x0000000000000000 0x3c2 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x00000000000003c2 0x796 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000000b58 0x290 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000000de8 0x1f6 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000000fde 0x88 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000001066 0x52 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x00000000000010b8 0x163c out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x00000000000026f4 0xbaa out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000000329e 0x16 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x00000000000032b4 0x58 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000000330c 0x34 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000003340 0x1c out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000000335c 0x40 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000000339c 0x2a out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x00000000000033c6 0x58 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000000341e 0x6234 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000009652 0x189d out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000000aeef 0x1454 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000000c343 0x47d out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000000c7c0 0x79 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000000c839 0xc27 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000000d460 0x1add out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000000ef3d 0xd67 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000000fca4 0x3c out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000000fce0 0x2525 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000012205 0x74 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000012279 0x19 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000012292 0xd6 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000012368 0xb2 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000001241a 0xdc out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x00000000000124f6 0x11c out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000012612 0x2c9b out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x00000000000152ad 0x66 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000015313 0x2fed out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000018300 0x131 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000018431 0x22 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000018453 0xbe out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000018511 0x115 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000018626 0x5ef out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000018c15 0x5f out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000018c74 0x10 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000018c84 0x6a out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000018cee 0x1bb out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000018ea9 0x1c out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000018ec5 0x82 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000018f47 0x72 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000018fb9 0x58 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000019011 0x16 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x0000000000019027 0x46 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000001906d 0x100 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000001916d 0x22 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x000000000001918f 0x22 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x00000000000191b1 0x10 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x00000000000191c1 0x1c out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_macro 0x00000000000191dd 0x3e3 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x00000000000195c0 0x2c95 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x000000000001c255 0xbb0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x000000000001ce05 0x28 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x000000000001ce2d 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_macro 0x000000000001ce49 0x4cb out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_macro 0x000000000001d314 0x3c9 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x000000000001d6dd 0x1c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_macro 0x000000000001d6f9 0x358 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x000000000001da51 0x22 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_macro 0x000000000001da73 0x36d out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_macro 0x000000000001dde0 0x1ba out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_macro 0x000000000001df9a 0x337 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_macro 0x000000000001e2d1 0x34c out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_macro 0x000000000001e61d 0x37d out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_macro 0x000000000001e99a 0x2a9 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_macro 0x000000000001ec43 0x283 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_macro 0x000000000001eec6 0x282 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_macro 0x000000000001f148 0x2a6 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_macro 0x000000000001f3ee 0x2a0 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_macro 0x000000000001f68e 0x2d8 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_macro 0x000000000001f966 0x1e7 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x000000000001fb4d 0x79c out/BSP_Common/ring_buffer/ring_buffer.o + .debug_macro 0x00000000000202e9 0x36 out/BSP_Common/libc/memcpy.o + .debug_macro 0x000000000002031f 0x36 out/BSP_Common/libc/memset.o + .debug_macro 0x0000000000020355 0x97 out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x00000000000203ec 0x8e out/BSP_Common/libc/vsnprintf.o + .debug_macro 0x000000000002047a 0x36 out/BSP_Common/libc/strlen.o + .debug_macro 0x00000000000204b0 0x208 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_macro 0x00000000000206b8 0x27b out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_macro 0x0000000000020933 0x24a out/BSP_Common/usbd_core.o + .debug_macro 0x0000000000020b7d 0x24a out/BSP_Common/usbd_ctlreq.o + .debug_macro 0x0000000000020dc7 0x24a out/BSP_Common/usbd_ioreq.o + .debug_macro 0x0000000000021011 0x19b out/startup/system_bl702.o + .debug_macro 0x00000000000211ac 0x622e out/startup/system_bl702.o + .debug_macro 0x00000000000273da 0x52 out/startup/GCC/start_load.o + .debug_macro 0x000000000002742c 0x2c out/startup/interrupt.o + .debug_macro 0x0000000000027458 0xba out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000027512 0x477 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_macro 0x0000000000027989 0xef out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x0000000000027a78 0xd61 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x00000000000287d9 0xa26 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_macro 0x00000000000291ff 0x197 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_macro 0x0000000000029396 0x183 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x0000000000029519 0xc21 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_macro 0x000000000002a13a 0x13c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x000000000002a276 0x1897 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x000000000002bb0d 0xd6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_macro 0x000000000002bbe3 0x18d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_macro 0x000000000002bd70 0xe1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_macro 0x000000000002be51 0xf2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_macro 0x000000000002bf43 0x18d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_macro 0x000000000002c0d0 0x24d out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x000000000002c31d 0x2fe7 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x000000000002f304 0x40 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_macro 0x000000000002f344 0x258 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x000000000002f59c 0x3a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_macro 0x000000000002f5d6 0x1b7 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x000000000002f78d 0x4bd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_macro 0x000000000002fc4a 0x19b out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_macro 0x000000000002fde5 0x243 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_macro 0x0000000000030028 0x19d out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + +.debug_line 0x0000000000000000 0x38156 + .debug_line 0x0000000000000000 0xb27 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_line 0x0000000000000b27 0x29f3 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_line 0x000000000000351a 0xf12 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_line 0x000000000000442c 0x1067 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_line 0x0000000000005493 0x977 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_line 0x0000000000005e0a 0xe98 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_line 0x0000000000006ca2 0x515 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_line 0x00000000000071b7 0x62f out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_line 0x00000000000077e6 0x10b6 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_line 0x000000000000889c 0x1830 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_line 0x000000000000a0cc 0x630 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_line 0x000000000000a6fc 0xd69 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_line 0x000000000000b465 0x86a out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_line 0x000000000000bccf 0x12c5 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_line 0x000000000000cf94 0x7c0 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_line 0x000000000000d754 0xb96 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_line 0x000000000000e2ea 0x1435 out/BSP_Common/ring_buffer/ring_buffer.o + .debug_line 0x000000000000f71f 0xf6 out/BSP_Common/libc/memcpy.o + .debug_line 0x000000000000f815 0xe8 out/BSP_Common/libc/memset.o + .debug_line 0x000000000000f8fd 0x16cb out/BSP_Common/libc/vsnprintf.o + .debug_line 0x0000000000010fc8 0xd4 out/BSP_Common/libc/strlen.o + .debug_line 0x000000000001109c 0x7a8 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_line 0x0000000000011844 0x14d8 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_line 0x0000000000012d1c 0xfbe out/BSP_Common/usbd_core.o + .debug_line 0x0000000000013cda 0x1106 out/BSP_Common/usbd_ctlreq.o + .debug_line 0x0000000000014de0 0x6f7 out/BSP_Common/usbd_ioreq.o + .debug_line 0x00000000000154d7 0x645 out/startup/system_bl702.o + .debug_line 0x0000000000015b1c 0x36c out/startup/GCC/start_load.o + .debug_line 0x0000000000015e88 0x2d7 out/startup/interrupt.o + .debug_line 0x000000000001615f 0x15e out/startup/GCC/entry.o + .debug_line 0x00000000000162bd 0x73b out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_line 0x00000000000169f8 0x2da6 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_line 0x000000000001979e 0x4721 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_line 0x000000000001debf 0x3382 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_line 0x0000000000021241 0x1340 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_line 0x0000000000022581 0x1e28 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_line 0x00000000000243a9 0x38f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_line 0x0000000000024738 0x712a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_line 0x000000000002b862 0x671 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_line 0x000000000002bed3 0x5369 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_line 0x000000000003123c 0x23bb out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_line 0x00000000000335f7 0x7c2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_line 0x0000000000033db9 0x126f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_line 0x0000000000035028 0x152b out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_line 0x0000000000036553 0x4d2 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .debug_line 0x0000000000036a25 0x9c9 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .debug_line 0x00000000000373ee 0xa8f /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .debug_line 0x0000000000037e7d 0x2d9 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_str 0x0000000000000000 0xd8244 + .debug_str 0x0000000000000000 0xbab32 out/ChipTest/Eflash_Loader/eflash_loader.o + 0xbae19 (size before relaxing) + .debug_str 0x00000000000bab32 0x16de out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + 0xbbcc0 (size before relaxing) + .debug_str 0x00000000000bc210 0x1464 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + 0xbac2d (size before relaxing) + .debug_str 0x00000000000bd674 0x44c out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + 0xbb577 (size before relaxing) + .debug_str 0x00000000000bdac0 0x170 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + 0xba4d9 (size before relaxing) + .debug_str 0x00000000000bdc30 0xd60 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + 0xbb12f (size before relaxing) + .debug_str 0x00000000000be990 0x55 out/ChipTest/Eflash_Loader/bflb_efuse.o + 0x9d127 (size before relaxing) + .debug_str 0x00000000000be9e5 0xbb out/ChipTest/Eflash_Loader/bflb_set_clock.o + 0xb9680 (size before relaxing) + .debug_str 0x00000000000beaa0 0x392 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + 0xbaf4f (size before relaxing) + .debug_str 0x00000000000bee32 0x5e7 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + 0xbb0b5 (size before relaxing) + .debug_str 0x00000000000bf419 0xa9 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + 0xb2748 (size before relaxing) + .debug_str 0x00000000000bf4c2 0x2a8 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + 0xb2925 (size before relaxing) + .debug_str 0x00000000000bf76a 0xd4 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + 0xb2a5a (size before relaxing) + .debug_str 0x00000000000bf83e 0x1fc6 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + 0xb5226 (size before relaxing) + .debug_str 0x00000000000c1804 0x281 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + 0xb2333 (size before relaxing) + .debug_str 0x00000000000c1a85 0x130 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + 0xb8a4d (size before relaxing) + .debug_str 0x00000000000c1bb5 0x20c out/BSP_Common/ring_buffer/ring_buffer.o + 0xb1819 (size before relaxing) + .debug_str 0x00000000000c1dc1 0x1d out/BSP_Common/libc/memcpy.o + 0x2e88 (size before relaxing) + .debug_str 0x00000000000c1dde 0x1d out/BSP_Common/libc/memset.o + 0x2e88 (size before relaxing) + .debug_str 0x00000000000c1dfb 0x104a out/BSP_Common/libc/vsnprintf.o + 0x406f (size before relaxing) + .debug_str 0x00000000000c2e45 0x1d out/BSP_Common/libc/strlen.o + 0x2e88 (size before relaxing) + .debug_str 0x00000000000c2e62 0x28 out/BSP_Common/cipher_suite/bflb_hash.o + 0xb1992 (size before relaxing) + .debug_str 0x00000000000c2e8a 0x790 out/BSP_Common/cipher_suite/bflb_ecdsa.o + 0xb20b8 (size before relaxing) + .debug_str 0x00000000000c361a 0x12f out/BSP_Common/usbd_core.o + 0xb25c1 (size before relaxing) + .debug_str 0x00000000000c3749 0xb4 out/BSP_Common/usbd_ctlreq.o + 0xb24c7 (size before relaxing) + .debug_str 0x00000000000c37fd 0x31 out/BSP_Common/usbd_ioreq.o + 0xb23df (size before relaxing) + .debug_str 0x00000000000c382e 0x143 out/startup/system_bl702.o + 0x96759 (size before relaxing) + .debug_str 0x00000000000c3971 0x1ff out/startup/GCC/start_load.o + 0x8e7f (size before relaxing) + .debug_str 0x00000000000c3b70 0xdc out/startup/interrupt.o + 0x32e3 (size before relaxing) + .debug_str 0x00000000000c3c4c 0x58 out/startup/GCC/entry.o + 0x7d (size before relaxing) + .debug_str 0x00000000000c3ca4 0x9f out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + 0xb6aa (size before relaxing) + .debug_str 0x00000000000c3d43 0x69fa out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + 0x17b3b (size before relaxing) + .debug_str 0x00000000000ca73d 0x107b out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + 0x8042b (size before relaxing) + .debug_str 0x00000000000cb7b8 0xe98 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + 0x7ffa6 (size before relaxing) + .debug_str 0x00000000000cc650 0xe09 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + 0x77ae3 (size before relaxing) + .debug_str 0x00000000000cd459 0x380 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + 0x85472 (size before relaxing) + .debug_str 0x00000000000cd7d9 0x47 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + 0x1e6b6 (size before relaxing) + .debug_str 0x00000000000cd820 0x11d1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + 0x23668 (size before relaxing) + .debug_str 0x00000000000ce9f1 0x137 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + 0x7e851 (size before relaxing) + .debug_str 0x00000000000ceb28 0xb0a out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + 0xb5213 (size before relaxing) + .debug_str 0x00000000000cf632 0x216 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + 0xb55df (size before relaxing) + .debug_str 0x00000000000cf848 0x5a68 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + 0x84b22 (size before relaxing) + .debug_str 0x00000000000d52b0 0x23cf out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + 0x87ec1 (size before relaxing) + .debug_str 0x00000000000d767f 0x30f out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + 0xb84aa (size before relaxing) + .debug_str 0x00000000000d798e 0x3b out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + 0x84be6 (size before relaxing) + .debug_str 0x00000000000d79c9 0x7db /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + 0x8db (size before relaxing) + .debug_str 0x00000000000d81a4 0xa /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + 0x8db (size before relaxing) + .debug_str 0x00000000000d81ae 0x96 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + 0x822 (size before relaxing) + +.comment 0x0000000000000000 0x32 + .comment 0x0000000000000000 0x32 out/ChipTest/Eflash_Loader/eflash_loader.o + 0x33 (size before relaxing) + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_efuse.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .comment 0x0000000000000032 0x33 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .comment 0x0000000000000032 0x33 out/BSP_Common/ring_buffer/ring_buffer.o + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/memcpy.o + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/memset.o + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/vsnprintf.o + .comment 0x0000000000000032 0x33 out/BSP_Common/libc/strlen.o + .comment 0x0000000000000032 0x33 out/BSP_Common/cipher_suite/bflb_hash.o + .comment 0x0000000000000032 0x33 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .comment 0x0000000000000032 0x33 out/BSP_Common/usbd_core.o + .comment 0x0000000000000032 0x33 out/BSP_Common/usbd_ctlreq.o + .comment 0x0000000000000032 0x33 out/BSP_Common/usbd_ioreq.o + .comment 0x0000000000000032 0x33 out/startup/system_bl702.o + .comment 0x0000000000000032 0x33 out/startup/GCC/start_load.o + .comment 0x0000000000000032 0x33 out/startup/interrupt.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .comment 0x0000000000000032 0x33 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .comment 0x0000000000000032 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .comment 0x0000000000000032 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .comment 0x0000000000000032 0x33 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.riscv.attributes + 0x0000000000000000 0x2e + .riscv.attributes + 0x0000000000000000 0x2e out/ChipTest/Eflash_Loader/eflash_loader.o + .riscv.attributes + 0x000000000000002e 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .riscv.attributes + 0x000000000000005c 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .riscv.attributes + 0x000000000000008a 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .riscv.attributes + 0x00000000000000b8 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .riscv.attributes + 0x00000000000000e6 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .riscv.attributes + 0x0000000000000114 0x2e out/ChipTest/Eflash_Loader/bflb_efuse.o + .riscv.attributes + 0x0000000000000142 0x2e out/ChipTest/Eflash_Loader/bflb_set_clock.o + .riscv.attributes + 0x0000000000000170 0x2e out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .riscv.attributes + 0x000000000000019e 0x2e out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .riscv.attributes + 0x00000000000001cc 0x2e out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .riscv.attributes + 0x00000000000001fa 0x2e out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .riscv.attributes + 0x0000000000000228 0x2e out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .riscv.attributes + 0x0000000000000256 0x2e out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .riscv.attributes + 0x0000000000000284 0x2e out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .riscv.attributes + 0x00000000000002b2 0x2e out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .riscv.attributes + 0x00000000000002e0 0x2e out/BSP_Common/ring_buffer/ring_buffer.o + .riscv.attributes + 0x000000000000030e 0x2e out/BSP_Common/libc/memcpy.o + .riscv.attributes + 0x000000000000033c 0x2e out/BSP_Common/libc/memset.o + .riscv.attributes + 0x000000000000036a 0x2e out/BSP_Common/libc/vsnprintf.o + .riscv.attributes + 0x0000000000000398 0x2e out/BSP_Common/libc/strlen.o + .riscv.attributes + 0x00000000000003c6 0x2e out/BSP_Common/cipher_suite/bflb_hash.o + .riscv.attributes + 0x00000000000003f4 0x2e out/BSP_Common/cipher_suite/bflb_ecdsa.o + .riscv.attributes + 0x0000000000000422 0x2e out/BSP_Common/usbd_core.o + .riscv.attributes + 0x0000000000000450 0x2e out/BSP_Common/usbd_ctlreq.o + .riscv.attributes + 0x000000000000047e 0x2e out/BSP_Common/usbd_ioreq.o + .riscv.attributes + 0x00000000000004ac 0x2e out/startup/system_bl702.o + .riscv.attributes + 0x00000000000004da 0x2e out/startup/GCC/start_load.o + .riscv.attributes + 0x0000000000000508 0x2e out/startup/interrupt.o + .riscv.attributes + 0x0000000000000536 0x2e out/startup/GCC/entry.o + .riscv.attributes + 0x0000000000000564 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .riscv.attributes + 0x0000000000000592 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .riscv.attributes + 0x00000000000005c0 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .riscv.attributes + 0x00000000000005ee 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .riscv.attributes + 0x000000000000061c 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .riscv.attributes + 0x000000000000064a 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .riscv.attributes + 0x0000000000000678 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .riscv.attributes + 0x00000000000006a6 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .riscv.attributes + 0x00000000000006d4 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .riscv.attributes + 0x0000000000000702 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .riscv.attributes + 0x0000000000000730 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .riscv.attributes + 0x000000000000075e 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .riscv.attributes + 0x000000000000078c 0x2e out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .riscv.attributes + 0x00000000000007ba 0x2e out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .riscv.attributes + 0x00000000000007e8 0x2e out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + .riscv.attributes + 0x0000000000000816 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + .riscv.attributes + 0x0000000000000844 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + .riscv.attributes + 0x0000000000000872 0x2e /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + +.debug_frame 0x0000000000000000 0x599c + .debug_frame 0x0000000000000000 0x58 out/ChipTest/Eflash_Loader/eflash_loader.o + .debug_frame 0x0000000000000058 0x47c out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + .debug_frame 0x00000000000004d4 0x100 out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + .debug_frame 0x00000000000005d4 0xf0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + .debug_frame 0x00000000000006c4 0xdc out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + .debug_frame 0x00000000000007a0 0x1a0 out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + .debug_frame 0x0000000000000940 0x64 out/ChipTest/Eflash_Loader/bflb_efuse.o + .debug_frame 0x00000000000009a4 0x60 out/ChipTest/Eflash_Loader/bflb_set_clock.o + .debug_frame 0x0000000000000a04 0x2d8 out/ChipTest/Eflash_Loader/bflb_spi_flash.o + .debug_frame 0x0000000000000cdc 0x1ec out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + .debug_frame 0x0000000000000ec8 0x50 out/ChipTest/Eflash_Loader/usb_if/usb_device.o + .debug_frame 0x0000000000000f18 0x1e4 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + .debug_frame 0x00000000000010fc 0xf0 out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + .debug_frame 0x00000000000011ec 0x338 out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + .debug_frame 0x0000000000001524 0xe4 out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + .debug_frame 0x0000000000001608 0x1a0 out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + .debug_frame 0x00000000000017a8 0x2cc out/BSP_Common/ring_buffer/ring_buffer.o + .debug_frame 0x0000000000001a74 0x20 out/BSP_Common/libc/memcpy.o + .debug_frame 0x0000000000001a94 0x20 out/BSP_Common/libc/memset.o + .debug_frame 0x0000000000001ab4 0x60 out/BSP_Common/libc/vsnprintf.o + .debug_frame 0x0000000000001b14 0x20 out/BSP_Common/libc/strlen.o + .debug_frame 0x0000000000001b34 0xd0 out/BSP_Common/cipher_suite/bflb_hash.o + .debug_frame 0x0000000000001c04 0x278 out/BSP_Common/cipher_suite/bflb_ecdsa.o + .debug_frame 0x0000000000001e7c 0x274 out/BSP_Common/usbd_core.o + .debug_frame 0x00000000000020f0 0xfc out/BSP_Common/usbd_ctlreq.o + .debug_frame 0x00000000000021ec 0xd4 out/BSP_Common/usbd_ioreq.o + .debug_frame 0x00000000000022c0 0x68 out/startup/system_bl702.o + .debug_frame 0x0000000000002328 0x20 out/startup/GCC/start_load.o + .debug_frame 0x0000000000002348 0x1e8 out/startup/interrupt.o + .debug_frame 0x0000000000002530 0x98 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + .debug_frame 0x00000000000025c8 0x6ec out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + .debug_frame 0x0000000000002cb4 0x5f4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + .debug_frame 0x00000000000032a8 0x51c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + .debug_frame 0x00000000000037c4 0x1d0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + .debug_frame 0x0000000000003994 0x2a0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + .debug_frame 0x0000000000003c34 0x44 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + .debug_frame 0x0000000000003c78 0x61c out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + .debug_frame 0x0000000000004294 0x58 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + .debug_frame 0x00000000000042ec 0x424 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + .debug_frame 0x0000000000004710 0x3f4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + .debug_frame 0x0000000000004b04 0xb0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + .debug_frame 0x0000000000004bb4 0xa30 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + .debug_frame 0x00000000000055e4 0x370 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + .debug_frame 0x0000000000005954 0x48 out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + +Cross Reference Table + +Symbol File +ADC_Channel_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_FIFO_Cfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_FIFO_Is_Empty out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_FIFO_Is_Full out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Gain_Trim out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_GetIntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Get_FIFO_Count out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_IntClr out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_MIC_Bias_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_MIC_Bias_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Mic_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Parse_Result out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Read_FIFO out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Reset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_SET_TSVBE_HIGH out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_SET_TSVBE_LOW out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Scan_Channel_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Start out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Stop out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Trim_TSEN out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Tsen_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Vbat_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +ADC_Vbat_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +AON_ACOMP_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o +AON_ACOMP_Get_Result out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o +AON_ACOMP_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_acomp.o +AON_Get_Xtal_CapCode out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o +AON_LowPower_Enter_PDS0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o +AON_LowPower_Exit_PDS0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o +AON_Power_Off_BG out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o +AON_Power_Off_LDO11_SOC out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o +AON_Power_Off_LDO15_RF out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o +AON_Power_Off_MBG out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +AON_Power_Off_SFReg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o +AON_Power_Off_XTAL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +AON_Power_On_BG out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o +AON_Power_On_LDO11_SOC out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o +AON_Power_On_LDO15_RF out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o +AON_Power_On_MBG out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +AON_Power_On_SFReg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o +AON_Power_On_XTAL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +AON_Set_LDO11_SOC_Sstart_Delay out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o +AON_Set_Xtal_CapCode out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +ARCH_MemCpy_Fast out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Common/partition/partition.o + out/BSP_Common/ring_buffer/ring_buffer.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +ASM_Delay_Us out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +BFLB_Soft_CRC16 out/BSP_Common/soft_crc/softcrc.o +BFLB_Soft_CRC32 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + out/BSP_Common/partition/partition.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +BFLB_Soft_CRC32_Table out/BSP_Common/soft_crc/softcrc.o +BL702_Delay_MS out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +BL702_Delay_US out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_aon.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +BL702_MemCmp out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o +BL702_MemCpy out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +BL702_MemCpy4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +BL702_MemCpy_Fast out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o +BL702_MemSet out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +BL702_MemSet4 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o +BLE_IRQHandler_Wrapper out/startup/interrupt.o +BLSP_Boot2_Get_Log_Disable_Flag out/ChipTest/Eflash_Loader/eflash_loader.o +BMX_ERR_INT_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +BMX_ERR_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +BMX_ERR_IRQHandler_Wrapper out/startup/interrupt.o +BMX_TIMEOUT_INT_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +BMX_TO_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +BMX_TO_IRQHandler_Wrapper out/startup/interrupt.o +BOR_IRQHandler_Wrapper out/startup/interrupt.o +BZ_PHY_IRQHandler_Wrapper out/startup/interrupt.o +CAM_Clock_Gate out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Deinit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Get_Frame_Count_0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Get_Frame_Count_1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Hsync_Crop out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_IRQHandler_Wrapper out/startup/interrupt.o +CAM_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_IntClr out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Interleave_Get_Frame_Info out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Interleave_Pop_Frame out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Planar_Get_Frame_Info out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Planar_Pop_Frame out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Set_Hsync_Total_Count out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Set_Vsync_Total_Count out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CAM_Vsync_Crop out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o +CDC_Transmit_FS out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o +Clock_Peripheral_Clock_Get out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o +Clock_Peripheral_Clock_Set out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o +Clock_System_Clock_Get out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o +Clock_System_Clock_Set out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_clock.o +DMA_ALL_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_ALL_IRQHandler_Wrapper out/startup/interrupt.o +DMA_BMX_ERR_IRQHandler_Wrapper out/startup/interrupt.o +DMA_Channel_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_Channel_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_Channel_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_Channel_Is_Busy out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_Channel_TranferSize out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_Channel_Update_DstMemcfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_Channel_Update_SrcMemcfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_LLI_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_LLI_PpBuf_Append out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_LLI_PpBuf_Destroy out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_LLI_PpBuf_Remove_Completed_List out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_LLI_PpBuf_Start_New_Transmit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_LLI_PpStruct_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_LLI_PpStruct_Set_Transfer_Len out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_LLI_PpStruct_Start out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_LLI_PpStruct_Stop out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +DMA_LLI_Update out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +EFUSE_IRQHandler_Wrapper out/startup/interrupt.o +EF_Ctrl_AutoLoad_Done out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Busy out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + out/ChipTest/Eflash_Loader/bflb_efuse.o +EF_Ctrl_Clear out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +EF_Ctrl_Crc_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Crc_Is_Busy out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Crc_Result out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Crc_Set_Golden out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Get_Chip_PIDVID out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +EF_Ctrl_Get_Customer_PIDVID out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +EF_Ctrl_Get_Trim_Parity out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Is_All_Bits_Zero out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Is_CapCode_Empty out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Is_MAC_Address_Slot_Empty out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Is_PowerOffset_Slot_Empty out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Load_Efuse_R0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + out/ChipTest/Eflash_Loader/bflb_efuse.o +EF_Ctrl_Program_Direct_R0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + out/ChipTest/Eflash_Loader/bflb_efuse.o +EF_Ctrl_Read_ADC_Gain_Trim out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +EF_Ctrl_Read_AES_Key out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Read_Ana_Trim out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Read_CapCode_Opt out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Read_Chip_ID out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Read_Dbg_Pwd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Read_Device_Info out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + out/ChipTest/Eflash_Loader/eflash_loader.o +EF_Ctrl_Read_Direct_R0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + out/ChipTest/Eflash_Loader/bflb_efuse.o +EF_Ctrl_Read_MAC_Address out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +EF_Ctrl_Read_MAC_Address_Opt out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Read_MAC_Address_Raw out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Read_PowerOffset_Opt out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Read_RC32K_Trim out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +EF_Ctrl_Read_RC32M_Trim out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +EF_Ctrl_Read_Secure_Boot out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Read_Secure_Cfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Read_Sw_Usage out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + out/ChipTest/Eflash_Loader/eflash_loader.o +EF_Ctrl_Read_TSEN_Trim out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +EF_Ctrl_Readlock_AES_Key out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Readlock_Dbg_Pwd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Sw_AHB_Clk_0 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Write_AES_Key out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Write_Ana_Trim out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Write_CapCode_Opt out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Write_Dbg_Pwd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Write_MAC_Address out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Write_MAC_Address_Opt out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Write_PowerOffset_Opt out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Write_Secure_Boot out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Write_Secure_Cfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Write_Sw_Usage out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Writelock_AES_Key out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Writelock_Dbg_Pwd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Writelock_MAC_Address out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EF_Ctrl_Writelock_Sw_Usage out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ef_ctrl.o +EMAC_ClrIntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_DMADescListInit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_DMATxDescGet out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_DeInit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_Disable_TX out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_Enable_TX out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_GetIntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_IRQHandler_Wrapper out/startup/interrupt.o +EMAC_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_PhyInit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_Phy_AutoNegotiate out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_Phy_Linkup out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_Phy_Read out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_Phy_Reset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_Phy_Write out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_SetHash out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_StartTx out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +EMAC_TxPauseReq out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o +FS_Desc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + out/ChipTest/Eflash_Loader/usb_if/usb_device.o +FreeRTOS_Interrupt_Handler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + out/BSP_Common/FreeRTOS/portASM.o +GLB_AHB_Slave1_Clock_Gate out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o +GLB_AHB_Slave1_Reset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +GLB_BMX_Addr_Monitor_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_BMX_Addr_Monitor_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_BMX_BusErrResponse_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_BMX_BusErrResponse_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_BMX_Get_Err_Addr out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_BMX_Get_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_BMX_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_CCI_Use_IO_0_1_2_7 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_CCI_Use_Jtag_Pin out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_DAC_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GLB_DAC_Set_ChanA_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GLB_DAC_Set_ChanA_Value out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GLB_DAC_Set_ChanB_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GLB_DAC_Set_ChanB_Value out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GLB_Deswap_Flash_Pin out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_Disable_DLL_All_Clks out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +GLB_Disable_DLL_Clk out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +GLB_Enable_DLL_All_Clks out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/eflash_loader.o +GLB_Enable_DLL_Clk out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +GLB_GPIO_Func_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_GPIO_Get_Fun out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +GLB_GPIO_INPUT_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +GLB_GPIO_INPUT_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +GLB_GPIO_INT0_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_GPIO_INT0_Callback_Install2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_GPIO_INT0_IRQHandler_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_GPIO_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_GPIO_Int2Clear out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_GPIO_Int2Mask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_GPIO_IntClear out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_GPIO_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_GPIO_OUTPUT_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_GPIO_OUTPUT_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +GLB_GPIO_Read out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_GPIO_Set_HZ out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_GPIO_Write out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o +GLB_GPIP_DAC_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GLB_GPIP_DAC_Set_ChanA_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GLB_GPIP_DAC_Set_ChanB_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GLB_Get_BCLK_Div out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +GLB_Get_GPIO_Int2CtlMod out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Get_GPIO_Int2Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Get_GPIO_IntCtlMod out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Get_GPIO_IntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Get_HCLK_Div out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +GLB_Get_Root_CLK_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +GLB_Get_SRAM_PARM out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Get_SRAM_RET out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Get_SRAM_SLP out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_IR_LED_Driver_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_IR_LED_Driver_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_IR_LED_Driver_Ibias out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_IR_LED_Driver_Output_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_IR_LED_Driver_Output_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_IR_RX_GPIO_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Invert_ETH_REF_O_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Invert_ETH_RX_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Invert_ETH_TX_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Invert_RF_TEST_O_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_JTAG_Sig_Swap_Set out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Power_Off_DLL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +GLB_Power_On_DLL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +GLB_SWAP_EMAC_CAM_Pin out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_SW_CPU_Reset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +GLB_SW_POR_Reset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +GLB_SW_System_Reset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +GLB_Select_External_Flash out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_Select_Internal_Flash out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_Select_Internal_PSram out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +GLB_Set_ADC_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_BLE_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_BT_Coex_Signal out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_CAM_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_Chip_Out_0_CLK_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_Chip_Out_1_CLK_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_DAC_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_DIG_32K_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_DIG_512K_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_DIG_CLK_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_DMA_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_EM_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +GLB_Set_ETH_REF_O_CLK_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_Ext_Rst_Smt out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_GPIO_Int2Mod out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_GPIO_IntMod out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_I2C_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +GLB_Set_I2S_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_IR_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +GLB_Set_Kys_Drv_Col out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_MAC154_ZIGBEE_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_MTimer_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +GLB_Set_PDM_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_PKA_CLK_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_QDEC_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_SF_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_set_clock.o +GLB_Set_SPI_0_ACT_MOD_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +GLB_Set_SPI_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +GLB_Set_SRAM_PARM out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_SRAM_RET out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_SRAM_SLP out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_Set_System_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + out/ChipTest/Eflash_Loader/bflb_set_clock.o +GLB_Set_System_CLK_Div out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/eflash_loader.o +GLB_Set_UART_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +GLB_Set_USB_CLK out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +GLB_Swap_Flash_CS_IO2_Pin out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +GLB_Swap_Flash_IO0_IO3_Pin out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +GLB_Swap_Flash_Pin out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_Swap_SPI_0_MOSI_With_MISO out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GLB_UART_Fun_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +GLB_UART_Sig_Swap_Set out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o +GPADC_DMA_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +GPADC_DMA_IRQHandler_Wrapper out/startup/interrupt.o +GPIO_INT0_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +GPIO_INT0_IRQHandler_Wrapper out/startup/interrupt.o +GPIP_DAC_ChanA_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GPIP_DAC_ChanA_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GPIP_DAC_ChanB_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GPIP_DAC_ChanB_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GPIP_DAC_DMA_WriteData out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GPIP_Set_DAC_ChanA_SRC_SEL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GPIP_Set_DAC_ChanB_SRC_SEL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GPIP_Set_DAC_DMA_TX_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GPIP_Set_DAC_DMA_TX_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +GPIP_Set_DAC_DMA_TX_FORMAT_SEL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dac.o +HAL_PCDEx_PMAConfig out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_ActivateRemoteWakeup out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +HAL_PCD_ConnectCallback out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_DataInStageCallback out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +HAL_PCD_DataOutStageCallback out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +HAL_PCD_DeActivateRemoteWakeup out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +HAL_PCD_DeInit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_DevConnect out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +HAL_PCD_DevDisconnect out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +HAL_PCD_DisconnectCallback out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_EP_Close out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_EP_ClrStall out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_EP_Flush out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_EP_GetRxCount out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_EP_Open out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_EP_Receive out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_EP_SetStall out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_EP_Transmit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_GetState out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +HAL_PCD_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +HAL_PCD_ISOINIncompleteCallback out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_ISOOUTIncompleteCallback out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_MspDeInit out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_MspInit out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +HAL_PCD_ResetCallback out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +HAL_PCD_ResumeCallback out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_SOFCallback out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +HAL_PCD_SetAddress out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_SetupStageCallback out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +HAL_PCD_Start out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_Stop out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HAL_PCD_SuspendCallback out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +HBN_32K_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Aon_Pad_IeSmt_Cfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_App_Reset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Clear_IRQ out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Clear_RTC_Counter out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Clear_RTC_INT out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Clear_Reset_Event out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Disable_AComp0_IRQ out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Disable_AComp1_IRQ out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Disable_BOR_IRQ out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Enable_AComp0_IRQ out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Enable_AComp1_IRQ out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Enable_BOR_IRQ out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Enable_Ext out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Enable_RTC_Counter out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_GPIO_Dbg_Pull_Cfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +HBN_GPIO_INT_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_GPIO_INT_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Get_BOR_OUT_State out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Get_INT_State out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Get_PIR_Interval out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Get_PIR_Threshold out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Get_Pin_Wakeup_Mode out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Get_RTC_Timer_Val out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Get_Reset_Event out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Get_Status_Flag out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +HBN_Get_Wakeup_Addr out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Hw_Pu_Pd_Cfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Mode_Enter out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_OUT0_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_OUT0_IRQHandler_Wrapper out/startup/interrupt.o +HBN_OUT1_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_OUT1_IRQHandler_Wrapper out/startup/interrupt.o +HBN_Out0_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Out0_IRQHandler_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Out1_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Out1_IRQHandler_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_PIR_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_PIR_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_PIR_HPF_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_PIR_INT_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_PIR_LPF_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Pin_WakeUp_Mask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Power_Down_Flash out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Power_Off_RC32K out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Power_Off_Xtal_32K out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Power_On_RC32K out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Power_On_Xtal_32K out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Reset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_BOR_Cfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + out/startup/system_bl702.o +HBN_Set_BOR_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_HRAM_Ret out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_HRAM_slp out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_Ldo11_All_Vout out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_Ldo11_Aon_Vout out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_Ldo11_Rt_Vout out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_Ldo11_Soc_Vout out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_Ldo11rt_Drive_Strength out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_PIR_Interval out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_PIR_Threshold out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_Pad_23_28_ActiveIE out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_Pad_23_28_Pulldown out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_Pad_23_28_Pullnone out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +HBN_Set_Pad_23_28_Pullup out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_ROOT_CLK_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/eflash_loader.o +HBN_Set_RTC_Timer out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_Status_Flag out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +HBN_Set_UART_CLK_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o +HBN_Set_Wakeup_Addr out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +HBN_Set_XCLK_CLK_Sel out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +HBN_Trim_RC32K out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +I2C_ClockSet out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_GPIO_Sim_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o +I2C_GetAck out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o +I2C_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_IRQHandler_Wrapper out/startup/interrupt.o +I2C_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_IsBusy out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_MasterReceiveBlocking out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_MasterSendBlocking out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_ReadByte out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o +I2C_RecieveWord out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_Reset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_SendByte out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o +I2C_SendWord out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_SetPrd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_SetSclSync out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2C_Start out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o +I2C_Stop out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o +I2C_TransferEndStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +I2S_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +I2S_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +I2S_FifoConfig out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +I2S_Flush out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +I2S_GetRxFIFO_AvlCnt out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +I2S_GetTxFIFO_AvlCnt out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +I2S_IOConfig out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +I2S_IRQHandler_Wrapper out/startup/interrupt.o +I2S_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +I2S_Mute out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +I2S_Read out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +I2S_SetBclkPeriod out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +I2S_SetFifoJustified out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +I2S_Write out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2s.o +IRRX_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IRRX_IRQHandler_Wrapper out/startup/interrupt.o +IRTX_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IRTX_IRQHandler_Wrapper out/startup/interrupt.o +IR_ClrIntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_DeInit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_GetIntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_GetRxDataBitCount out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_GetRxFIFOCount out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_GetRxFIFOStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_LEDInit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_LEDSend out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_LearnToInit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_LearnToReceive out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_LearnToSend out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_ReceiveData out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_ReceiveNEC out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_RxFIFOClear out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_RxInit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_SWMReceiveData out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_SWMSendCommand out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_SWMSendData out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_SendCommand out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_SendData out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_SendNEC out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_TxInit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_TxPulseWidthConfig out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_TxSWM out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +IR_TxSWMPulseWidthConfig out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o +Interrupt_Handler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + out/startup/interrupt.o +Interrupt_Handler_Register out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_cam.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_emac.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_ir.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + out/startup/system_bl702.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +Interrupt_Handler_Stub out/startup/interrupt.o +KYS_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o +KYS_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o +KYS_GetIntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o +KYS_GetKeycode out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o +KYS_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o +KYS_IRQHandler_Wrapper out/startup/interrupt.o +KYS_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o +KYS_IntClear out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o +KYS_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o +KYS_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_kys.o +L1C_BMX_Addr_Monitor_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o +L1C_BMX_Addr_Monitor_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o +L1C_BMX_BusErrResponse_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o +L1C_BMX_BusErrResponse_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o +L1C_BMX_ERR_INT_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o +L1C_BMX_ERR_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o +L1C_BMX_ERR_IRQHandler_Wrapper out/startup/interrupt.o +L1C_BMX_Get_Err_Addr out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o +L1C_BMX_Get_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o +L1C_BMX_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o +L1C_BMX_TIMEOUT_INT_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o +L1C_BMX_TO_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o +L1C_BMX_TO_IRQHandler_Wrapper out/startup/interrupt.o +L1C_Cache_Enable_Set out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +L1C_Cache_Flush out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +L1C_Cache_Hit_Count_Get out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +L1C_Cache_Miss_Count_Get out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +L1C_Cache_Read_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +L1C_Cache_Write_Set out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +L1C_IROM_2T_Access_Set out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/eflash_loader.o +L1C_Set_Way_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +L1C_Set_Wrap out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +M154_AES_IRQHandler_Wrapper out/startup/interrupt.o +M154_IRQHandler_Wrapper out/startup/interrupt.o +M154_REQ_ENH_ACK_IRQHandler_Wrapper out/startup/interrupt.o +MAC_GEN_IRQHandler_Wrapper out/startup/interrupt.o +MAC_PORT_TRG_IRQHandler_Wrapper out/startup/interrupt.o +MAC_RX_TRG_IRQHandler_Wrapper out/startup/interrupt.o +MAC_TXRX_MISC_IRQHandler_Wrapper out/startup/interrupt.o +MAC_TXRX_TIMER_IRQHandler_Wrapper out/startup/interrupt.o +MAC_TX_TRG_IRQHandler_Wrapper out/startup/interrupt.o +MJPEG_Block_Is_Full out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Current_Block_Clear out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Current_Block_Is_End out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Current_Block_Is_Start out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Deinit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Get_Current_Block out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Get_Frame_Count out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Get_Frame_Info out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Get_Remain_Bit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_IRQHandler_Wrapper out/startup/interrupt.o +MJPEG_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_IntClr out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Packet_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Pop_Frame out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_SW_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_SW_Run out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Set_Frame_Threshold out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Set_YUYV_Order_Interleave out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +MJPEG_Set_YUYV_Order_Planar out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_mjpeg.o +NF_Cfg_Flash_Identify out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +NFlash_Blk128_Erase out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +NFlash_Check_Bad_Block out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +NFlash_Erase out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +NFlash_GetJedecId out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o +NFlash_Get_Feature out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +NFlash_Page_Read_To_Cache out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +NFlash_Program out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +NFlash_Program_Execute out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +NFlash_Program_Load out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +NFlash_Read out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +NFlash_Read_From_Cache out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +NFlash_Set_Feature out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +NFlash_Write_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +Nandflash_BlockErase out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_CS_High out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_CS_Low out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_CheckBadBlock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Check_ECC_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Clock_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Disk_Initialize out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Disk_Ioctl out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Disk_Read out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Disk_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Disk_Write out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Get_BlockLock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Get_Feature out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Get_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Gpio_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_InternalDataMove out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_PageProgram out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_PageRead out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_PageReadToCache out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_PagesProgram out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_PagesRead out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_ProgramExecute out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_ProgramLoad out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_ProgramLoadRandomData out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Psram_Cfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_ReadFromCache out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_ReadID out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Reset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_SPI_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_SendRecv out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Set_BlockLock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Set_Feature out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Set_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_Translate_Result_Code out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_WriteDisable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_WriteEnable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Nandflash_WriteUnprotect out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +PCD_EP_ISR_Handler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +PCD_ReadPMA out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +PCD_WritePMA out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +PDS_App_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Auto_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_Auto_Time_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_Clear_Reset_Event out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Default_Level_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Disable_PLL_All_Clks out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_Disable_PLL_Clk out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_Enable_PLL_All_Clks out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_Enable_PLL_Clk out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_Force_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Get_IntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Get_PdsPllStstus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Get_PdsRfStstus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Get_PdsStstus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Get_Reset_Event out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Get_Vddcore_GPIO_IntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_IntClear out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_IntEn out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Manual_Force_Turn_Off out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_Manual_Force_Turn_On out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_Power_Off_PLL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_Power_On_PLL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_RAM_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Reset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_Select_RC32M_As_PLL_Ref out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_Select_XTAL_As_PLL_Ref out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_Set_Audio_PLL_Freq out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Set_Pad_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +PDS_Set_Vddcore_GPIO_IntCfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Set_Vddcore_GPIO_IntClear out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Set_Vddcore_GPIO_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_Trim_RC32M out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PDS_WAKEUP_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_WAKEUP_IRQHandler_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pds.o +PDS_WAKEUP_IRQHandler_Wrapper out/startup/interrupt.o +PWM_Channel_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_Channel_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_Channel_Fource_Output out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_Channel_Get out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_Channel_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_Channel_Set_Div out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_Channel_Set_Period out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_Channel_Set_Threshold1 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_Channel_Set_Threshold2 out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_Channel_Update out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_IRQHandler_Wrapper out/startup/interrupt.o +PWM_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_SW_Force_Value out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PWM_SW_Mode out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_pwm.o +PllOnFlag out/ChipTest/Eflash_Loader/eflash_loader.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +Psram_Cache_Write_Set out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Psram_EnterQuadMode out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +Psram_ExitQuadMode out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +Psram_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Psram_Read out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +Psram_ReadId out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Psram_ReadReg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +Psram_SetBurstWrap out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o +Psram_SetDriveStrength out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o +Psram_Set_IDbus_Cfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +Psram_SoftwareReset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +Psram_ToggleBurstLength out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +Psram_Write out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +Psram_WriteReg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +PtTable_Create out/BSP_Common/partition/partition.o +PtTable_Flash_Erase out/BSP_Common/partition/partition.o +PtTable_Flash_Read out/BSP_Common/partition/partition.o +PtTable_Flash_Write out/BSP_Common/partition/partition.o +PtTable_Get_Active_Entries_By_ID out/BSP_Common/partition/partition.o +PtTable_Get_Active_Entries_By_Name out/BSP_Common/partition/partition.o +PtTable_Get_Active_Partition_Need_Lock out/BSP_Common/partition/partition.o +PtTable_Set_Flash_Operation out/BSP_Common/partition/partition.o +PtTable_Update_Entry out/BSP_Common/partition/partition.o +QDEC0_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC0_IRQHandler_Wrapper out/startup/interrupt.o +QDEC1_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC1_IRQHandler_Wrapper out/startup/interrupt.o +QDEC2_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC2_IRQHandler_Wrapper out/startup/interrupt.o +QDEC_Clr_Int_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC_DeInit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC_GetIntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC_Get_Err_Cnt out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC_Get_Int_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC_Get_Sample_Direction out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC_Get_Sample_Val out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC_IntHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +QDEC_SetIntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_qdec.o +RF_TOP_INT0_IRQHandler_Wrapper out/startup/interrupt.o +RF_TOP_INT1_IRQHandler_Wrapper out/startup/interrupt.o +ReworkSetupCmd out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +ReworkSetupInData out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +ReworkSetupOutData out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +Ring_Buffer_Get_Empty_Length out/BSP_Common/ring_buffer/ring_buffer.o + out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +Ring_Buffer_Get_Length out/BSP_Common/ring_buffer/ring_buffer.o + out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +Ring_Buffer_Get_Status out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Init out/BSP_Common/ring_buffer/ring_buffer.o + out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +Ring_Buffer_Peek out/BSP_Common/ring_buffer/ring_buffer.o + out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +Ring_Buffer_Peek_Byte out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Read out/BSP_Common/ring_buffer/ring_buffer.o + out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +Ring_Buffer_Read_Byte out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Read_Callback out/BSP_Common/ring_buffer/ring_buffer.o + out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +Ring_Buffer_Reset out/BSP_Common/ring_buffer/ring_buffer.o + out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +Ring_Buffer_Write out/BSP_Common/ring_buffer/ring_buffer.o + out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +Ring_Buffer_Write_Byte out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Write_Byte_Force out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Write_Callback out/BSP_Common/ring_buffer/ring_buffer.o +Ring_Buffer_Write_Force out/BSP_Common/ring_buffer/ring_buffer.o +SCCB_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o +SCCB_Read out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o +SCCB_Write out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c_gpio_sim.o +SEC_AES_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +SEC_AES_IRQHandler_Wrapper out/startup/interrupt.o +SEC_BMX_ERR_IRQHandler_Wrapper out/startup/interrupt.o +SEC_CDET_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +SEC_CDET_IRQHandler_Wrapper out/startup/interrupt.o +SEC_Eng_ClrIntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +SEC_Eng_GetIntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +SEC_Eng_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +SEC_Eng_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +SEC_Eng_Turn_Off_Sec_Ring out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +SEC_Eng_Turn_On_Sec_Ring out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +SEC_GMAC_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +SEC_GMAC_IRQHandler_Wrapper out/startup/interrupt.o +SEC_PKA_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +SEC_PKA_IRQHandler_Wrapper out/startup/interrupt.o +SEC_SHA_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +SEC_SHA_IRQHandler_Wrapper out/startup/interrupt.o +SEC_TRNG_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +SEC_TRNG_IRQHandler_Wrapper out/startup/interrupt.o +SF_CTRL_IRQHandler_Wrapper out/startup/interrupt.o +SF_Cfg_Deinit_Ext_Flash_Gpio out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/eflash_loader.o +SF_Cfg_Flash_Identify out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o +SF_Cfg_Flash_Identify_Ext out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SF_Cfg_Get_Flash_Cfg_Need_Lock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o +SF_Cfg_Get_Flash_Cfg_Need_Lock_Ext out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o +SF_Cfg_Init_Ext_Flash_Gpio out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o +SF_Cfg_Init_Flash_Gpio out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nf_cfg.o + out/ChipTest/Eflash_Loader/eflash_loader.o +SF_Cfg_Init_Internal_Flash_Gpio out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o +SF_Ctrl_AES_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o +SF_Ctrl_AES_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o +SF_Ctrl_AES_Enable_BE out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_AES_Enable_LE out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_AES_Set_IV out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_AES_Set_IV_BE out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_AES_Set_Key out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_AES_Set_Key_BE out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_AES_Set_Region out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_Cmds_Set out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o +SF_Ctrl_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_Flash_Read_Icache_Set out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_GetBusyState out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o +SF_Ctrl_Get_Clock_Delay out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_Get_Flash_Image_Offset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SF_Ctrl_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o +SF_Ctrl_Is_AES_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o +SF_Ctrl_Psram_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_psram.o +SF_Ctrl_Psram_Read_Icache_Set out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_Psram_Write_Icache_Set out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_Select_Bank out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o +SF_Ctrl_Select_Clock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_Select_Pad out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o +SF_Ctrl_SendCmd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o +SF_Ctrl_Set_Clock_Delay out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SF_Ctrl_Set_Flash_Image_Offset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SF_Ctrl_Set_Owner out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_ctrl.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Blk32_Erase out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SFlash_Blk64_Erase out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SFlash_Busy out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o +SFlash_Cache_Read_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SFlash_Cache_Read_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SFlash_Chip_Erase out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_DisableBurstWrap out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Erase out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_GetDeviceId out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SFlash_GetJedecId out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/eflash_loader.o +SFlash_GetUniqueId out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SFlash_IDbus_Read_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SFlash_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/eflash_loader.o +SFlash_Powerdown out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o +SFlash_Program out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Qspi_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/eflash_loader.o +SFlash_Read out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Read_Reg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Read_Reg_With_Cmd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Releae_Powerdown out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Reset_Continue_Read out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Restore_From_Powerdown out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SFlash_Sector_Erase out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SFlash_SetBurstWrap out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_SetSPIMode out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SFlash_Set_IDbus_Cfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Software_Reset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SFlash_Volatile_Reg_Write_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +SFlash_Write_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Write_Reg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SFlash_Write_Reg_With_Cmd out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +SPI_ClockConfig out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +SPI_ClrIntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_ClrRxFifo out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_ClrTxFifo out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_DeInit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +SPI_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +SPI_FifoConfig out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_GetBusyStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_GetFifoStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_GetIntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_GetRxFifoCount out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_GetTxFifoCount out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_IRQHandler_Wrapper out/startup/interrupt.o +SPI_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +SPI_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +SPI_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_ReceiveData out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_Recv_16bits out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_Recv_24bits out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_Recv_32bits out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_Recv_8bits out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +SPI_RxIgnoreDisable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_RxIgnoreEnable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_SendData out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_SendRecv_16bits out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_SendRecv_24bits out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_SendRecv_32bits out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_SendRecv_8bits out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +SPI_Send_16bits out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_Send_24bits out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_Send_32bits out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_Send_8bits out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +SPI_SetClock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_SetDeglitchCount out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +SPI_SetTimeOutValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_spi.o +Sec_Dbg_Read_Chip_ID out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o +Sec_Dbg_Read_Dbg_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o +Sec_Dbg_Read_Dbg_Mode out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o +Sec_Dbg_Read_WiFi_MAC out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_dbg.o +Sec_Eng_AES_Crypt out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_AES_Disable_Link out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_AES_Enable_BE out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_AES_Enable_LE out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_AES_Enable_Link out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_AES_Finish out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_AES_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_AES_Link_Work out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_AES_Set_Counter_Byte out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_AES_Set_Hw_Key_Src out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_AES_Set_Key_IV out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_AES_Set_Key_IV_BE out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_crypt.o +Sec_Eng_GMAC_Disable_Link out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_GMAC_Enable_BE out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_GMAC_Enable_LE out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_GMAC_Enable_Link out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_GMAC_Link_Work out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_BigEndian_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +Sec_Eng_PKA_CREG out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_Clear_Int out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_GF2Mont out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_GetStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_LADD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_LCMP out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_LDIV out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_LDIV2N out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_LMOD2N out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_LMUL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_LMUL2N out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_LSQR out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_LSUB out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_LittleEndian_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_MADD out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_MEXP out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o +Sec_Eng_PKA_MINV out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_MMUL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_MREM out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_MSQR out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_MSUB out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_Mont2GF out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_Move_Data out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_NREG out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_RESIZE out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_Read_Block out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_Read_Data out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_Reset out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +Sec_Eng_PKA_Write_Block out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_PKA_Write_Data out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_PKA_Write_Immediate out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_SHA256_Finish out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +Sec_Eng_SHA256_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +Sec_Eng_SHA256_Link_Finish out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_SHA256_Link_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_SHA256_Link_Update out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_SHA256_Update out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +Sec_Eng_SHA_Disable_Link out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_SHA_Enable_Link out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_SHA_Start out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +Sec_Eng_Trng_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +Sec_Eng_Trng_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +Sec_Eng_Trng_Int_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_Trng_Int_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_Trng_Int_Read out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_Trng_Int_Read_Trigger out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o +Sec_Eng_Trng_Read out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +ShaInbuf out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +StressTestItem out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +SystemClock_Config out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +SystemInit out/startup/system_bl702.o + out/startup/GCC/entry.o +System_Core_Clock_Update_From_RC32M out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +System_NVIC_SetPriority out/startup/system_bl702.o +TIMER_CH0_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_CH0_IRQHandler_Wrapper out/startup/interrupt.o +TIMER_CH1_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_CH1_IRQHandler_Wrapper out/startup/interrupt.o +TIMER_ClearIntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_GetCompValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_GetCounterValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_GetMatchStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_GetPreloadValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_SetCompValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_SetCountMode out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_SetPreloadTrigSrc out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_SetPreloadValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_WDT_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +TIMER_WDT_IRQHandler_Wrapper out/startup/interrupt.o +TOUCH_IRQHandler_Wrapper out/startup/interrupt.o +TSEN_Get_Temp out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +TSEN_Get_V_Error out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +Timer_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +Trap_Handler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + out/BSP_Common/FreeRTOS/portASM.o + out/startup/interrupt.o +Trap_Handler_Stub out/startup/interrupt.o +UART0_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART0_IRQHandler_Wrapper out/startup/interrupt.o +UART1_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART1_IRQHandler_Wrapper out/startup/interrupt.o +UART_AutoBaudDetection out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_ClrRtsValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_ClrTxValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_DeInit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_FifoConfig out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_GetAutoBaudCount out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_GetIntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_GetOverflowStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_GetRxBusBusyStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_GetRxFifoCount out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_GetTxBusBusyStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_GetTxFifoCount out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_IntClear out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_IrConfig out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_Params_init out/HAL/hal_uart.o +UART_ReceiveData out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_RxFifoClear out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_SendData out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_SendDataBlock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_SetBaudrate out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_SetDeglitchCount out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_SetRtsValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_SetRxDataLength out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_SetRxTimeoutValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_SetTxDataLength out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_SetTxValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_TxFifoClear out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o +UART_TxFreeRun out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_uart.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +UART_close out/HAL/hal_uart.o +UART_config out/HAL/hal_uart.o +UART_control out/HAL/hal_uart.o +UART_count out/HAL/hal_uart.o +UART_defaultParams out/HAL/hal_uart.o +UART_getDMAAddr out/HAL/hal_uart.o +UART_getDMARxReq out/HAL/hal_uart.o +UART_getDMATxReq out/HAL/hal_uart.o +UART_init out/HAL/hal_uart.o +UART_open out/HAL/hal_uart.o +UART_read out/HAL/hal_uart.o +UART_readCancel out/HAL/hal_uart.o +UART_rxFifoDump out/HAL/hal_uart.o +UART_write out/HAL/hal_uart.o +UART_writeCancel out/HAL/hal_uart.o +USBD_CDC out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + out/ChipTest/Eflash_Loader/usb_if/usb_device.o +USBD_CDC_CfgFSDesc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USBD_CDC_CfgHSDesc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USBD_CDC_GetDeviceQualifierDescriptor out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USBD_CDC_OtherSpeedCfgDesc out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USBD_CDC_ReceivePacket out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USBD_CDC_RegisterInterface out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + out/ChipTest/Eflash_Loader/usb_if/usb_device.o +USBD_CDC_SetRxBuffer out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o +USBD_CDC_SetTxBuffer out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o +USBD_CDC_TransmitPacket out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o +USBD_ClrClassConfig out/BSP_Common/usbd_core.o + out/BSP_Common/usbd_ctlreq.o +USBD_CtlContinueRx out/BSP_Common/usbd_ioreq.o + out/BSP_Common/usbd_core.o +USBD_CtlContinueSendData out/BSP_Common/usbd_ioreq.o + out/BSP_Common/usbd_core.o +USBD_CtlError out/BSP_Common/usbd_ctlreq.o +USBD_CtlPrepareRx out/BSP_Common/usbd_ioreq.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USBD_CtlReceiveStatus out/BSP_Common/usbd_ioreq.o + out/BSP_Common/usbd_core.o +USBD_CtlSendData out/BSP_Common/usbd_ioreq.o + out/BSP_Common/usbd_ctlreq.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USBD_CtlSendStatus out/BSP_Common/usbd_ioreq.o + out/BSP_Common/usbd_ctlreq.o + out/BSP_Common/usbd_core.o +USBD_DeInit out/BSP_Common/usbd_core.o +USBD_FS_ConfigStrDescriptor out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o +USBD_FS_DeviceDesc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USBD_FS_DeviceDescriptor out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o +USBD_FS_InterfaceStrDescriptor out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o +USBD_FS_LangIDStrDescriptor out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o +USBD_FS_ManufacturerStrDescriptor out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o +USBD_FS_ProductStrDescriptor out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o +USBD_FS_SerialStrDescriptor out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o +USBD_GetRxCount out/BSP_Common/usbd_ioreq.o +USBD_GetString out/BSP_Common/usbd_ctlreq.o + out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o +USBD_Init out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usb_device.o +USBD_Interface_fops_FS out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + out/ChipTest/Eflash_Loader/usb_if/usb_device.o +USBD_LL_ClearStallEP out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Common/usbd_ctlreq.o +USBD_LL_CloseEP out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USBD_LL_DataInStage out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_DataOutStage out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_DeInit out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Common/usbd_core.o +USBD_LL_Delay out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_DevConnected out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_DevDisconnected out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_FlushEP out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_GetRxDataSize out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Common/usbd_ioreq.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USBD_LL_Init out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Common/usbd_core.o +USBD_LL_IsStallEP out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Common/usbd_ctlreq.o +USBD_LL_IsoINIncomplete out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_IsoOUTIncomplete out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_OpenEP out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USBD_LL_PrepareReceive out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Common/usbd_ioreq.o + out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USBD_LL_Reset out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_Resume out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_SOF out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_SetSpeed out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_SetUSBAddress out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Common/usbd_ctlreq.o +USBD_LL_SetupStage out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_StallEP out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Common/usbd_ctlreq.o + out/BSP_Common/usbd_core.o +USBD_LL_Start out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Common/usbd_core.o +USBD_LL_Stop out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Common/usbd_core.o +USBD_LL_Suspend out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USBD_LL_Transmit out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Common/usbd_ioreq.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USBD_LangIDDesc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o +USBD_ParseSetupRequest out/BSP_Common/usbd_ctlreq.o + out/BSP_Common/usbd_core.o +USBD_RegisterClass out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usb_device.o +USBD_RunTestMode out/BSP_Common/usbd_core.o +USBD_SetClassConfig out/BSP_Common/usbd_core.o + out/BSP_Common/usbd_ctlreq.o +USBD_Start out/BSP_Common/usbd_core.o + out/ChipTest/Eflash_Loader/usb_if/usb_device.o +USBD_StdDevReq out/BSP_Common/usbd_ctlreq.o + out/BSP_Common/usbd_core.o +USBD_StdEPReq out/BSP_Common/usbd_ctlreq.o + out/BSP_Common/usbd_core.o +USBD_StdItfReq out/BSP_Common/usbd_ctlreq.o + out/BSP_Common/usbd_core.o +USBD_Stop out/BSP_Common/usbd_core.o +USBD_StrDesc out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o +USBD_StringSerial out/ChipTest/Eflash_Loader/usb_if/usbd_desc.o +USBD_static_free out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USBD_static_malloc out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o +USB_CMD_RB_Memory_Get_Empty_Length out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_CMD_RB_Memory_Get_Length out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_CMD_RB_Memory_Init out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_CMD_RB_Memory_Peek out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_CMD_RB_Memory_Pop out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_CMD_RB_Memory_Push out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_CMD_RB_Memory_Reset out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_Clr_EPx_IntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_Clr_EPx_RX_FIFO_Errors out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Clr_EPx_STALL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Clr_EPx_TX_FIFO_Errors out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Clr_Error_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Clr_IntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/startup/system_bl702.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +USB_Clr_RstEndIntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Device_Init out/ChipTest/Eflash_Loader/usb_if/usb_device.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_Device_Output_K_State out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_DoNothing_IRQHandler out/startup/system_bl702.o +USB_EPx_Read_Data_From_FIFO out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_EPx_Read_Data_From_FIFO_DMA out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_EPx_Write_Data_To_FIFO out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_EPx_Write_Data_To_FIFO_DMA out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USB_Error_Handler out/ChipTest/Eflash_Loader/usb_if/usb_device.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USB_Get_Current_Packet_EP out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Get_Current_Packet_PID out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Get_Device_Addr out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +USB_Get_EPx_Dir out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Get_EPx_RX_FIFO_CNT out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_Get_EPx_RX_FIFO_Errors out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Get_EPx_RX_FIFO_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Get_EPx_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Get_EPx_TX_FIFO_CNT out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Get_EPx_TX_FIFO_Errors out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Get_EPx_TX_FIFO_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Get_EPx_Type out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Get_Error_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Get_Frame_Num out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Get_IntStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_Get_LPM_Packet_Attr out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Get_LPM_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_HAL_Clock_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +USB_HAL_GPIO_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +USB_HAL_Interrupts_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +USB_HAL_Interrupts_LPM_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USB_HAL_Power_Off out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USB_HAL_Power_Up out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USB_HAL_System_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USB_HAL_Xcvr_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USB_IRQHandler out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_IRQHandler_Wrapper out/startup/interrupt.o +USB_IntEn out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_Is_EPx_RDY_Free out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_LPM_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_LPM_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_RESP_RB_Memory_Get_Empty_Length out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_RESP_RB_Memory_Get_Length out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_RESP_RB_Memory_Init out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_RESP_RB_Memory_Peek out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +USB_RESP_RB_Memory_Pop out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_RESP_RB_Memory_Push out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_RESP_RB_Memory_Reset out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +USB_Rework_IRQHandler out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_Rework_In_Callback out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_Rework_Out_Callback out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_Set_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +USB_Set_Device_Addr out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/BSP_Common/usbd_core.o +USB_Set_EPx_Busy out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_Set_EPx_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_Set_EPx_Dir out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Set_EPx_IN_Busy out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Set_EPx_IN_Stall out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Set_EPx_OUT_Busy out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Set_EPx_OUT_Stall out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Set_EPx_RX_DMA_Interface_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Set_EPx_Rdy out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +USB_Set_EPx_STALL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Set_EPx_Size out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Set_EPx_Status out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +USB_Set_EPx_TX_DMA_Interface_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Set_EPx_Type out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +USB_Set_EPx_Xfer_Size out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Set_Internal_PullUp_Config out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Set_LPM_Default_Response out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +USB_Stress_Test_Data_Check out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +USB_Stress_Test_Origin_Data out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +USB_Stress_Test_Origin_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +USB_Stress_Test_Recv_Data out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o +Update_SystemCoreClockWith_XTAL out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +UserRxBufferFS out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o +UserTxBufferFS out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o +WDT_ClearResetStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +WDT_Disable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +WDT_Enable out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +WDT_GetCounterValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +WDT_GetMatchValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +WDT_GetResetStatus out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +WDT_IntMask out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +WDT_Int_Callback_Install out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +WDT_ResetCounterValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +WDT_SetCompValue out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +WDT_Set_Clock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +WIFI_IPC_PUBLIC_IRQHandler_Wrapper out/startup/interrupt.o +WIFI_IRQHandler_Wrapper out/startup/interrupt.o +XIP_SFlash_Erase out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o +XIP_SFlash_Erase_Need_Lock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o +XIP_SFlash_Erase_With_Lock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +XIP_SFlash_GetDeviceId_Need_Lock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +XIP_SFlash_GetJedecId_Need_Lock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +XIP_SFlash_GetUniqueId_Need_Lock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +XIP_SFlash_Init out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o +XIP_SFlash_Opt_Enter out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +XIP_SFlash_Opt_Exit out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o +XIP_SFlash_Read out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o +XIP_SFlash_Read_Need_Lock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o +XIP_SFlash_Read_Via_Cache_Need_Lock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sf_cfg_ext.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hbn.o + out/BSP_Common/partition/partition.o +XIP_SFlash_Read_With_Lock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +XIP_SFlash_State_Restore out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +XIP_SFlash_State_Save out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +XIP_SFlash_Write out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o +XIP_SFlash_Write_Need_Lock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o +XIP_SFlash_Write_With_Lock out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_romapi.o +__Interrupt_Handlers out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o +__StackTop out/startup/GCC/entry.o +__Vectors out/startup/interrupt.o + out/startup/GCC/entry.o + out/ChipTest/Eflash_Loader/eflash_loader.o +__adddf3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + out/BSP_Common/libc/atof.o +__assert_func out/BSP_Common/libc/common.o +__bss_end__ out/startup/GCC/start_load.o +__bss_start__ out/startup/GCC/start_load.o +__clz_tab /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clz.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) +__clzsi2 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_clzsi2.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(adddf3.o) + out/3rdParty/FreeRTOS/Source/tasks.o +__ctypes out/BSP_Common/libc/ctypes.o + out/BSP_Common/libc/ctype_isxdigit.o + out/BSP_Common/libc/ctype_toupper.o + out/BSP_Common/libc/ctype_tolower.o + out/BSP_Common/libc/ctype_isupper.o + out/BSP_Common/libc/ctype_isspace.o + out/BSP_Common/libc/ctype_isprint.o + out/BSP_Common/libc/ctype_islower.o + out/BSP_Common/libc/ctype_ispunct.o + out/BSP_Common/libc/ctype_isgraph.o + out/BSP_Common/libc/ctype_iscntrl.o + out/BSP_Common/libc/ctype_isalpha.o + out/BSP_Common/libc/ctype_isalnum.o +__divdf3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(divdf3.o) + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + out/BSP_Common/libc/atof.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +__dtcm_load_addr out/startup/GCC/start_load.o +__extendsfdf2 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(extendsfdf2.o) + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +__fixunsdfsi /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(fixunsdfsi.o) + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +__floatsidf /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatsidf.o) + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + out/BSP_Common/libc/atof.o +__floatunsidf /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(floatunsidf.o) + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +__freertos_irq_stack_top out/BSP_Common/FreeRTOS/port.o +__global_pointer$ out/startup/GCC/entry.o +__itcm_load_addr out/startup/GCC/start_load.o +__metal_after_main out/startup/GCC/entry.o +__metal_chicken_bit out/startup/GCC/entry.o +__muldf3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(muldf3.o) + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o + out/BSP_Common/libc/atof.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +__ram_data_end__ out/startup/GCC/start_load.o +__ram_data_start__ out/startup/GCC/start_load.o +__ram_load_addr out/startup/GCC/start_load.o +__rand48_seed out/BSP_Common/libc/lrand48.o + out/BSP_Common/libc/srand48.o + out/BSP_Common/libc/seed48.o + out/BSP_Common/libc/mrand48.o +__register_frame_info out/startup/GCC/entry.o +__strxspn out/BSP_Common/libc/strxspn.o + out/BSP_Common/libc/strpbrk.o + out/BSP_Common/libc/strspn.o + out/BSP_Common/libc/strcspn.o +__subdf3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(subdf3.o) + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +__system_ram_data_end__ out/startup/GCC/start_load.o +__system_ram_data_start__ out/startup/GCC/start_load.o +__system_ram_load_addr out/startup/GCC/start_load.o +__tcm_code_end__ out/startup/GCC/start_load.o +__tcm_code_start__ out/startup/GCC/start_load.o +__tcm_data_end__ out/startup/GCC/start_load.o +__tcm_data_start__ out/startup/GCC/start_load.o +__truncdfsf2 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(truncdfsf2.o) + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_adc.o +__udivdi3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_udivdi3.o) + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/libc/vsnprintf.o +__umoddi3 /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/rv32imafc/ilp32f/libgcc.a(_umoddi3.o) + out/BSP_Common/libc/vsnprintf.o +_enter out/startup/GCC/entry.o +atof out/BSP_Common/libc/atof.o +atoi out/BSP_Common/libc/atoi.o +atol out/BSP_Common/libc/atol.o +atoll out/BSP_Common/libc/atoll.o +bflb_clear_flash_status_register out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_crypt_auth_decrypt out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_auth_decrypt_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_decrypt out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_decrypt_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_deinit out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_deinit_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_encrypt out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_encrypt_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_encrypt_tag out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_encrypt_tag_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_finish out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_finish_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_init out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_init_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_setadd out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_setadd_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_setkey out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_setkey_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_update out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_crypt_update_do out/BSP_Common/cipher_suite/bflb_crypt.o +bflb_deinit_all_psram_cs out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_dsa_decrypt_crt out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_init out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_mexp_binary out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_mexp_mont out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_sign out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_dsa_verify out/BSP_Common/cipher_suite/bflb_dsa.o +bflb_ecc_get_random_value out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_ecdh_deinit out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdh_get_encrypt_key out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_ecdh_get_public_key out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_ecdh_init out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_deinit out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_get_private_key out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_ecdsa_get_public_key out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_init out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_ecdsa_sign out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_ecdsa_verify out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_eflash_loader_cmd_init out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_cmd_process out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_deinit_uart_gpio out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +bflb_eflash_loader_deinit_uart_gpio_do out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +bflb_eflash_loader_deinit_usb_xcvr out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +bflb_eflash_loader_if_deinit out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_handshake_poll out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_init out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_read out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_select out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_set out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_wait_tx_idle out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_if_write out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_init_flash_gpio out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +bflb_eflash_loader_init_uart_gpio out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +bflb_eflash_loader_init_usb_xcvr out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +bflb_eflash_loader_jlink_change_rate out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o +bflb_eflash_loader_jlink_deinit out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_jlink_handshake_poll out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_jlink_init out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_jlink_recv out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_jlink_send out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_jlink_wait_tx_idle out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_main out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + out/ChipTest/Eflash_Loader/eflash_loader.o +bflb_eflash_loader_uart_change_rate out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +bflb_eflash_loader_uart_deinit out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_uart_handshake_poll out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_uart_init out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_uart_recv out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_uart_send out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_usart_wait_tx_idle out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_usb_deinit out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +bflb_eflash_loader_usb_handshake_poll out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_usb_init out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_usb_recv out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_usb_send out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_eflash_loader_usb_wait_tx_idle out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +bflb_efuse_read out/ChipTest/Eflash_Loader/bflb_efuse.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_efuse_write out/ChipTest/Eflash_Loader/bflb_efuse.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_hash_deinit out/BSP_Common/cipher_suite/bflb_hash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_hash_finish out/BSP_Common/cipher_suite/bflb_hash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_hash_init out/BSP_Common/cipher_suite/bflb_hash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_hash_start out/BSP_Common/cipher_suite/bflb_hash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_hash_update out/BSP_Common/cipher_suite/bflb_hash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_platform_clear_time out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_platform_deinit out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/eflash_loader.o +bflb_platform_deinit_time out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_deinit_uart_debug_gpio out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_delay_ms out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +bflb_platform_delay_us out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_platform_dump out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_get_log out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_platform_get_random out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +bflb_platform_get_time_ms out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_get_time_us out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o +bflb_platform_init out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/eflash_loader.o +bflb_platform_init_time out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_init_uart_debug_gpio out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_gpio.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_print_set out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/eflash_loader.o +bflb_platform_printc out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_printf out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_l1c.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_glb.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_common.o + out/BSP_Common/xz/xz_port.o + out/BSP_Common/usbd_ctlreq.o + out/BSP_Common/usbd_core.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/BSP_Common/cipher_suite/bflb_crypt.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc.o + out/ChipTest/Eflash_Loader/usb_if/usb_device.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_jlink.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/eflash_loader.o +bflb_platform_prints out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_printx out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/eflash_loader.o +bflb_platform_set_alarm_time out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_set_alarm_time_callback out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_start_time out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_stop_time out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_uart_dbg_deinit out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_uart_dbg_init out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_platform_usart_dbg_send out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o +bflb_qe_data_clear out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_set_flash_clock_div out/ChipTest/Eflash_Loader/bflb_set_clock.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_set_high_speed_flash_clock out/ChipTest/Eflash_Loader/bflb_set_clock.o + out/ChipTest/Eflash_Loader/eflash_loader.o +bflb_set_high_speed_system_clock out/ChipTest/Eflash_Loader/bflb_set_clock.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/eflash_loader.o +bflb_set_low_speed_flash_clock out/ChipTest/Eflash_Loader/bflb_set_clock.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/eflash_loader.o +bflb_set_low_speed_system_clock out/ChipTest/Eflash_Loader/bflb_set_clock.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_set_pad_pullnone out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_spi_flash_chiperase out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_deinit out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_spi_flash_erase out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_init out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o + out/ChipTest/Eflash_Loader/eflash_loader.o +bflb_spi_flash_nread out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_spi_flash_program out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_read_jedec_id out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_read_sahb out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_read_sahb_xip out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_spi_flash_read_status_reg_with_cmd out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_read_xip out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_sbus_xip_read_init out/ChipTest/Eflash_Loader/bflb_spi_flash.o +bflb_spi_flash_set_io_mode out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_update_para out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_write_status_reg_with_cmd out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_xip_read_exit out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bflb_spi_flash_xip_read_init out/ChipTest/Eflash_Loader/bflb_spi_flash.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +bootMode out/ChipTest/Eflash_Loader/eflash_loader.o +bootrom_read_boot_mode out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o + out/ChipTest/Eflash_Loader/eflash_loader.o +bsearch out/BSP_Common/libc/bsearch.o +calloc out/BSP_Common/libc/stdlib.o +cdc_line_coding out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o +chCRCHTalbe out/BSP_Common/soft_crc/softcrc.o +chCRCLTalbe out/BSP_Common/soft_crc/softcrc.o +checkBuf out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +clic_clear_pending out/startup/interrupt.o +clic_csoft_handler_Wrapper out/startup/interrupt.o +clic_disable_interrupt out/startup/interrupt.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +clic_enable_interrupt out/startup/interrupt.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_dma.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +clic_get_cliccfg out/startup/interrupt.o +clic_get_intcfg out/startup/interrupt.o +clic_mext_handler_Wrapper out/startup/interrupt.o +clic_msip_handler_Wrapper out/startup/interrupt.o +clic_mtimer_handler_Wrapper out/startup/interrupt.o +clic_set_cliccfg out/startup/interrupt.o +clic_set_intcfg out/startup/interrupt.o +clic_set_pending out/startup/interrupt.o +crc32Tab out/BSP_Common/soft_crc/softcrc.o + out/BSP_Common/xz/xz_crc32.o +disk_driver_callback_init out/3rdParty/fatfs/source/diskio.o +disk_initialize out/3rdParty/fatfs/source/diskio.o + out/3rdParty/fatfs/source/ff.o +disk_ioctl out/3rdParty/fatfs/source/diskio.o + out/3rdParty/fatfs/source/ff.o +disk_read out/3rdParty/fatfs/source/diskio.o + out/3rdParty/fatfs/source/ff.o +disk_status out/3rdParty/fatfs/source/diskio.o + out/3rdParty/fatfs/source/ff.o +disk_write out/3rdParty/fatfs/source/diskio.o + out/3rdParty/fatfs/source/ff.o +eTaskGetState out/3rdParty/FreeRTOS/Source/tasks.o +ecdsa_private_key out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +ecdsa_public_keyx out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +ecdsa_public_keyy out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +eflash_loader_cmd_ack_buf out/ChipTest/Eflash_Loader/eflash_loader.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +eflash_loader_dump_data out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o +eflash_loader_if out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +eflash_loader_readbuf out/ChipTest/Eflash_Loader/eflash_loader.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +ep0_in_data_buff out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +ep0_out_data_buff out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +ep1_out_data_buff out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +ep2_in_data_buff out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +ep3_out_data_buff out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_hal_pcd.o + out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o +f_close out/3rdParty/fatfs/source/ff.o +f_closedir out/3rdParty/fatfs/source/ff.o +f_getfree out/3rdParty/fatfs/source/ff.o +f_lseek out/3rdParty/fatfs/source/ff.o +f_mkdir out/3rdParty/fatfs/source/ff.o +f_mkfs out/3rdParty/fatfs/source/ff.o +f_mount out/3rdParty/fatfs/source/ff.o +f_open out/3rdParty/fatfs/source/ff.o +f_opendir out/3rdParty/fatfs/source/ff.o +f_read out/3rdParty/fatfs/source/ff.o +f_readdir out/3rdParty/fatfs/source/ff.o +f_rename out/3rdParty/fatfs/source/ff.o +f_stat out/3rdParty/fatfs/source/ff.o +f_sync out/3rdParty/fatfs/source/ff.o +f_truncate out/3rdParty/fatfs/source/ff.o +f_unlink out/3rdParty/fatfs/source/ff.o +f_write out/3rdParty/fatfs/source/ff.o +ff_disk_initialize out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +ff_disk_read out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +ff_disk_write out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +ff_oem2uni out/3rdParty/fatfs/source/ffunicode.o + out/3rdParty/fatfs/source/ff.o +ff_uni2oem out/3rdParty/fatfs/source/ffunicode.o + out/3rdParty/fatfs/source/ff.o +ff_wtoupper out/3rdParty/fatfs/source/ffunicode.o + out/3rdParty/fatfs/source/ff.o +flashCfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_nflash.o +fnmatch out/BSP_Common/libc/fnmatch.o +free out/BSP_Common/libc/stdlib.o +freertos_risc_v_trap_handler out/BSP_Common/FreeRTOS/portASM.o +hUsbDeviceFS out/ChipTest/Eflash_Loader/usb_if/usb_device.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o +hash_handle out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +hpcd_USB_FS out/ChipTest/Eflash_Loader/usb_if/usbd_conf.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_usb.o +i2cIntCbfArra out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_i2c.o +isalnum out/BSP_Common/libc/ctype_isalnum.o +isalpha out/BSP_Common/libc/ctype_isalpha.o +isascii out/BSP_Common/libc/ctype_isascii.o +isblank out/BSP_Common/libc/ctype_isblank.o +iscntrl out/BSP_Common/libc/ctype_iscntrl.o +isdigit out/BSP_Common/libc/ctype_isdigit.o +isgraph out/BSP_Common/libc/ctype_isgraph.o +islower out/BSP_Common/libc/ctype_islower.o +isprint out/BSP_Common/libc/ctype_isprint.o +ispunct out/BSP_Common/libc/ctype_ispunct.o +isspace out/BSP_Common/libc/ctype_isspace.o + out/BSP_Common/libc/strntoumax.o + out/BSP_Common/libc/vsscanf.o + out/BSP_Common/libc/atof.o +isupper out/BSP_Common/libc/ctype_isupper.o +isxdigit out/BSP_Common/libc/ctype_isxdigit.o +jrand48 out/BSP_Common/libc/jrand48.o + out/BSP_Common/libc/nrand48.o + out/BSP_Common/libc/mrand48.o + out/BSP_Common/libc/lrand48.o +lrand48 out/BSP_Common/libc/lrand48.o +main out/ChipTest/Eflash_Loader/eflash_loader.o + out/startup/GCC/entry.o + out/BSP_Common/partition/partition.o +malloc out/BSP_Common/libc/stdlib.o +memccpy out/BSP_Common/libc/memccpy.o +memchr out/BSP_Common/libc/memchr.o +memcmp out/BSP_Common/libc/memcmp.o + out/BSP_Common/partition/partition.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/libc/memmem.o +memcpy out/BSP_Common/libc/memcpy.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_xip_sflash_ext.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_ecdsa.o +memmem out/BSP_Common/libc/memmem.o + out/BSP_Common/libc/strstr.o +memmove /home/cbpeng/toolchain/riscv64-elf-x86_64-20210120/bin/../lib/gcc/riscv64-unknown-elf/8.4.0/../../../../riscv64-unknown-elf/lib/rv32imafc/ilp32f/libc.a(lib_a-memmove-stub.o) + out/BSP_Common/xz/xz_dec_lzma2.o +memrchr out/BSP_Common/libc/memrchr.o +memset out/BSP_Common/libc/memset.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o + out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_sec_eng.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/cipher_suite/bflb_dsa.o + out/BSP_Common/cipher_suite/bflb_hash.o + out/BSP_Common/libc/strxspn.o + out/BSP_Common/libc/strncpy.o + out/ChipTest/Eflash_Loader/usb_if/usb_rb.o + out/ChipTest/Eflash_Loader/usb_if/usbd_cdc_if.o +memswap out/BSP_Common/libc/memswap.o + out/BSP_Common/libc/qsort.o +mrand48 out/BSP_Common/libc/mrand48.o +nfCfg out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_snflash.o +nrand48 out/BSP_Common/libc/nrand48.o +otp_cfg out/ChipTest/Eflash_Loader/eflash_loader.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_interface.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_gpio.o +pDiskioDriver out/3rdParty/fatfs/source/diskio.o +padding out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +pcQueueGetName out/3rdParty/FreeRTOS/Source/queue.o +pcTaskGetName out/3rdParty/FreeRTOS/Source/tasks.o +pcTimerGetName out/3rdParty/FreeRTOS/Source/timers.o +pullMachineTimerCompareRegister out/BSP_Common/FreeRTOS/port.o + out/BSP_Common/FreeRTOS/portASM.o +pullMachineTimerCompareRegisterBase out/BSP_Common/FreeRTOS/port.o +pullNextTime out/BSP_Common/FreeRTOS/port.o + out/BSP_Common/FreeRTOS/portASM.o +pvPortMalloc out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/tasks.o +pvTaskIncrementMutexHeldCount out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +pvTimerGetTimerID out/3rdParty/FreeRTOS/Source/timers.o +pxCurrentTCB out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Common/FreeRTOS/portASM.o +pxPortInitialiseStack out/BSP_Common/FreeRTOS/portASM.o + out/3rdParty/FreeRTOS/Source/tasks.o +qsort out/BSP_Common/libc/qsort.o +rand out/BSP_Common/libc/lrand48.o +random out/BSP_Common/libc/lrand48.o +realloc out/BSP_Common/libc/stdlib.o +rx_buf_index out/ChipTest/Eflash_Loader/eflash_loader.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +rx_buf_len out/ChipTest/Eflash_Loader/eflash_loader.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_uart.o +secp256r1B out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1Gx out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1Gy out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1InvR_N out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1InvR_P out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1N out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1P out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1PrimeN_N out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1PrimeN_P out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_1 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_1M1 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_1P1 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_BAR2 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_BAR3 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_BAR4 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_BAR8 out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_Gx out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_Gy out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_Zerox out/BSP_Common/cipher_suite/bflb_ecdsa.o +secp256r1_Zeroy out/BSP_Common/cipher_suite/bflb_ecdsa.o +seed48 out/BSP_Common/libc/seed48.o +shaTmpBuf out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +simple_free out/BSP_Common/xz/xz_port.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_dec_lzma2.o +simple_malloc out/BSP_Common/xz/xz_port.o + out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_dec_lzma2.o +simple_malloc_init out/BSP_Common/xz/xz_port.o +snprintf out/BSP_Common/libc/snprintf.o +sprintf out/BSP_Common/libc/sprintf.o + out/3rdParty/FreeRTOS/Source/tasks.o +srand out/BSP_Common/libc/srand48.o +srand48 out/BSP_Common/libc/srand48.o +srandom out/BSP_Common/libc/srand48.o +sscanf out/BSP_Common/libc/sscanf.o +start_load out/startup/GCC/start_load.o + out/startup/GCC/entry.o +strcasecmp out/BSP_Common/libc/strcasecmp.o +strcat out/BSP_Common/libc/strcat.o +strchr out/BSP_Common/libc/strchr.o +strcmp out/BSP_Common/libc/strcmp.o +strcpy out/BSP_Common/libc/strcpy.o + out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Common/libc/strcat.o +strcspn out/BSP_Common/libc/strcspn.o +strlcat out/BSP_Common/libc/strlcat.o +strlcpy out/BSP_Common/libc/strlcpy.o +strlen out/BSP_Common/libc/strlen.o + out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/partition/partition.o + out/BSP_Common/libc/strstr.o + out/BSP_Common/libc/strncat.o + out/BSP_Common/libc/strlcat.o + out/BSP_Common/libc/strcat.o + out/BSP_Common/libc/vsnprintf.o + out/BSP_Common/libc/atof.o +strncasecmp out/BSP_Common/libc/strncasecmp.o +strncat out/BSP_Common/libc/strncat.o +strncmp out/BSP_Common/libc/strncmp.o +strncpy out/BSP_Common/libc/strncpy.o +strnlen out/BSP_Common/libc/strnlen.o +strntof out/BSP_Common/libc/atof.o +strntoimax out/BSP_Common/libc/strntoimax.o +strntoumax out/BSP_Common/libc/strntoumax.o + out/BSP_Common/libc/strntoimax.o + out/BSP_Common/libc/strtoumax.o + out/BSP_Common/libc/strtoimax.o + out/BSP_Common/libc/strtoull.o + out/BSP_Common/libc/strtoul.o + out/BSP_Common/libc/strtoll.o + out/BSP_Common/libc/strtol.o + out/BSP_Common/libc/vsscanf.o + out/BSP_Common/libc/atoll.o + out/BSP_Common/libc/atol.o + out/BSP_Common/libc/atoi.o +strpbrk out/BSP_Common/libc/strpbrk.o + out/BSP_Common/libc/strsep.o +strrchr out/BSP_Common/libc/strrchr.o +strsep out/BSP_Common/libc/strsep.o + out/BSP_Common/libc/strtok_r.o +strspn out/BSP_Common/libc/strspn.o +strstr out/BSP_Common/libc/strstr.o +strtof out/BSP_Common/libc/common.o +strtoimax out/BSP_Common/libc/strtoimax.o +strtok out/BSP_Common/libc/strtok.o +strtok_r out/BSP_Common/libc/strtok_r.o + out/BSP_Common/libc/strtok.o +strtol out/BSP_Common/libc/strtol.o +strtoll out/BSP_Common/libc/strtoll.o +strtoul out/BSP_Common/libc/strtoul.o +strtoull out/BSP_Common/libc/strtoull.o +strtoumax out/BSP_Common/libc/strtoumax.o +system_bor_init out/startup/system_bl702.o +timerIntCbfArra out/BSP_Driver/BL702_BSP_Driver/StdDriver/bl702_timer.o +toCnt out/ChipTest/Eflash_Loader/bflb_eflash_loader_usb.o +tolower out/BSP_Common/libc/ctype_tolower.o +toupper out/BSP_Common/libc/ctype_toupper.o + out/BSP_Common/libc/strncasecmp.o + out/BSP_Common/libc/strcasecmp.o +ucQueueGetQueueType out/3rdParty/FreeRTOS/Source/queue.o +ucStreamBufferGetStreamBufferType out/3rdParty/FreeRTOS/Source/stream_buffer.o +ulTaskNotifyTake out/3rdParty/FreeRTOS/Source/tasks.o +ullNextTime out/BSP_Common/FreeRTOS/port.o +usbCmdRbHandle out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +usbRespRbHandle out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +usb_cmd_rb_mem out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +usb_resp_rb_mem out/ChipTest/Eflash_Loader/usb_if/usb_rb.o +uxListRemove out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o +uxQueueGetQueueNumber out/3rdParty/FreeRTOS/Source/queue.o +uxQueueMessagesWaiting out/3rdParty/FreeRTOS/Source/queue.o +uxQueueMessagesWaitingFromISR out/3rdParty/FreeRTOS/Source/queue.o +uxQueueSpacesAvailable out/3rdParty/FreeRTOS/Source/queue.o +uxStreamBufferGetStreamBufferNumber out/3rdParty/FreeRTOS/Source/stream_buffer.o +uxTaskGetNumberOfTasks out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskGetSystemState out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskGetTaskNumber out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskPriorityGet out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskPriorityGetFromISR out/3rdParty/FreeRTOS/Source/tasks.o +uxTaskResetEventItemValue out/3rdParty/FreeRTOS/Source/tasks.o +uxTimerGetTimerNumber out/3rdParty/FreeRTOS/Source/timers.o +uxTimerIncrementsForOneTick out/BSP_Common/FreeRTOS/port.o + out/BSP_Common/FreeRTOS/portASM.o +vApplicationGetIdleTaskMemory out/3rdParty/FreeRTOS/Source/tasks.o +vApplicationGetTimerTaskMemory out/3rdParty/FreeRTOS/Source/timers.o +vApplicationMallocFailedHook out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +vApplicationStackOverflowHook out/3rdParty/FreeRTOS/Source/tasks.o +vApplicationTickHook out/3rdParty/FreeRTOS/Source/tasks.o +vAssertCalled out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Common/FreeRTOS/port.o +vListInitialise out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/tasks.o +vListInitialiseItem out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o +vListInsert out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o +vListInsertEnd out/3rdParty/FreeRTOS/Source/list.o + out/3rdParty/FreeRTOS/Source/tasks.o +vPortDefineHeapRegions out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +vPortEndScheduler out/BSP_Common/FreeRTOS/port.o + out/3rdParty/FreeRTOS/Source/tasks.o +vPortFree out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/tasks.o +vPortGetHeapStats out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +vPortSetupTimerInterrupt out/BSP_Common/FreeRTOS/port.o +vQueueAddToRegistry out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +vQueueDelete out/3rdParty/FreeRTOS/Source/queue.o +vQueueSetQueueNumber out/3rdParty/FreeRTOS/Source/queue.o +vQueueUnregisterQueue out/3rdParty/FreeRTOS/Source/queue.o +vQueueWaitForMessageRestricted out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +vStreamBufferDelete out/3rdParty/FreeRTOS/Source/stream_buffer.o +vStreamBufferSetStreamBufferNumber out/3rdParty/FreeRTOS/Source/stream_buffer.o +vTaskDelay out/3rdParty/FreeRTOS/Source/tasks.o +vTaskDelayUntil out/3rdParty/FreeRTOS/Source/tasks.o +vTaskDelete out/3rdParty/FreeRTOS/Source/tasks.o +vTaskEndScheduler out/3rdParty/FreeRTOS/Source/tasks.o +vTaskEnterCritical out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskExitCritical out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskGetInfo out/3rdParty/FreeRTOS/Source/tasks.o +vTaskInternalSetTimeOutState out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskList out/3rdParty/FreeRTOS/Source/tasks.o +vTaskMissedYield out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskNotifyGiveFromISR out/3rdParty/FreeRTOS/Source/tasks.o +vTaskPlaceOnEventList out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskPlaceOnEventListRestricted out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskPlaceOnUnorderedEventList out/3rdParty/FreeRTOS/Source/tasks.o +vTaskPriorityDisinheritAfterTimeout out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskPrioritySet out/3rdParty/FreeRTOS/Source/tasks.o +vTaskRemoveFromUnorderedEventList out/3rdParty/FreeRTOS/Source/tasks.o +vTaskResume out/3rdParty/FreeRTOS/Source/tasks.o +vTaskSetTaskNumber out/3rdParty/FreeRTOS/Source/tasks.o +vTaskSetTimeOutState out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +vTaskStartScheduler out/3rdParty/FreeRTOS/Source/tasks.o +vTaskSuspend out/3rdParty/FreeRTOS/Source/tasks.o +vTaskSuspendAll out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o +vTaskSwitchContext out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Common/FreeRTOS/portASM.o +vTimerSetReloadMode out/3rdParty/FreeRTOS/Source/timers.o +vTimerSetTimerID out/3rdParty/FreeRTOS/Source/timers.o +vTimerSetTimerNumber out/3rdParty/FreeRTOS/Source/timers.o +vsnprintf out/BSP_Common/libc/vsnprintf.o + out/BSP_Driver/BL702_BSP_Driver/platform_print/platform_device.o + out/BSP_Common/libc/vsprintf.o + out/BSP_Common/libc/sprintf.o + out/BSP_Common/libc/snprintf.o +vsprintf out/BSP_Common/libc/vsprintf.o +vsscanf out/BSP_Common/libc/vsscanf.o + out/BSP_Common/libc/sscanf.o +xISRStackTop out/BSP_Common/FreeRTOS/port.o + out/BSP_Common/FreeRTOS/portASM.o +xPortGetFreeHeapSize out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +xPortGetMinimumEverFreeHeapSize out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o +xPortStartFirstTask out/BSP_Common/FreeRTOS/portASM.o + out/BSP_Common/FreeRTOS/port.o +xPortStartScheduler out/BSP_Common/FreeRTOS/port.o + out/3rdParty/FreeRTOS/Source/tasks.o +xQueueCreateCountingSemaphore out/3rdParty/FreeRTOS/Source/queue.o +xQueueCreateCountingSemaphoreStatic out/3rdParty/FreeRTOS/Source/queue.o +xQueueCreateMutex out/3rdParty/FreeRTOS/Source/queue.o +xQueueCreateMutexStatic out/3rdParty/FreeRTOS/Source/queue.o +xQueueGenericCreate out/3rdParty/FreeRTOS/Source/queue.o +xQueueGenericCreateStatic out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +xQueueGenericReset out/3rdParty/FreeRTOS/Source/queue.o +xQueueGenericSend out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +xQueueGenericSendFromISR out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +xQueueGetMutexHolder out/3rdParty/FreeRTOS/Source/queue.o +xQueueGetMutexHolderFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueGiveFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueGiveMutexRecursive out/3rdParty/FreeRTOS/Source/queue.o +xQueueIsQueueEmptyFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueIsQueueFullFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueuePeek out/3rdParty/FreeRTOS/Source/queue.o +xQueuePeekFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueReceive out/3rdParty/FreeRTOS/Source/queue.o + out/3rdParty/FreeRTOS/Source/timers.o +xQueueReceiveFromISR out/3rdParty/FreeRTOS/Source/queue.o +xQueueRegistry out/3rdParty/FreeRTOS/Source/queue.o +xQueueSemaphoreTake out/3rdParty/FreeRTOS/Source/queue.o +xQueueTakeMutexRecursive out/3rdParty/FreeRTOS/Source/queue.o +xStreamBufferBytesAvailable out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferGenericCreate out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferGenericCreateStatic out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferIsEmpty out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferIsFull out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferNextMessageLengthBytes out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferReceive out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferReceiveCompletedFromISR out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferReceiveFromISR out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferReset out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSend out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSendCompletedFromISR out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSendFromISR out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSetTriggerLevel out/3rdParty/FreeRTOS/Source/stream_buffer.o +xStreamBufferSpacesAvailable out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskAbortDelay out/3rdParty/FreeRTOS/Source/tasks.o +xTaskCatchUpTicks out/3rdParty/FreeRTOS/Source/tasks.o +xTaskCheckForTimeOut out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskCreate out/3rdParty/FreeRTOS/Source/tasks.o +xTaskCreateStatic out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/timers.o +xTaskGenericNotify out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskGenericNotifyFromISR out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskGetCurrentTaskHandle out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskGetHandle out/3rdParty/FreeRTOS/Source/tasks.o +xTaskGetSchedulerState out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskGetTickCount out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/timers.o +xTaskGetTickCountFromISR out/3rdParty/FreeRTOS/Source/tasks.o +xTaskIncrementTick out/3rdParty/FreeRTOS/Source/tasks.o + out/BSP_Common/FreeRTOS/portASM.o +xTaskNotifyStateClear out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskNotifyWait out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o +xTaskPriorityDisinherit out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskPriorityInherit out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskRemoveFromEventList out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskResumeAll out/3rdParty/FreeRTOS/Source/tasks.o + out/3rdParty/FreeRTOS/Source/portable/MemMang/heap_5.o + out/3rdParty/FreeRTOS/Source/stream_buffer.o + out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/queue.o +xTaskResumeFromISR out/3rdParty/FreeRTOS/Source/tasks.o +xTimerCreate out/3rdParty/FreeRTOS/Source/timers.o +xTimerCreateStatic out/3rdParty/FreeRTOS/Source/timers.o +xTimerCreateTimerTask out/3rdParty/FreeRTOS/Source/timers.o + out/3rdParty/FreeRTOS/Source/tasks.o +xTimerGenericCommand out/3rdParty/FreeRTOS/Source/timers.o +xTimerGetExpiryTime out/3rdParty/FreeRTOS/Source/timers.o +xTimerGetPeriod out/3rdParty/FreeRTOS/Source/timers.o +xTimerGetTimerDaemonTaskHandle out/3rdParty/FreeRTOS/Source/timers.o +xTimerIsTimerActive out/3rdParty/FreeRTOS/Source/timers.o +xTimerPendFunctionCall out/3rdParty/FreeRTOS/Source/timers.o +xTimerPendFunctionCallFromISR out/3rdParty/FreeRTOS/Source/timers.o +xtalType out/ChipTest/Eflash_Loader/eflash_loader.o + out/ChipTest/Eflash_Loader/bflb_eflash_loader_cmds.o +xz_crc32 out/BSP_Common/xz/xz_crc32.o + out/BSP_Common/xz/xz_dec_stream.o +xz_crc32_init out/BSP_Common/xz/xz_crc32.o + out/BSP_Common/xz/xz_decompress.o +xz_dec_end out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_decompress.o +xz_dec_init out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_decompress.o +xz_dec_lzma2_create out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/xz/xz_dec_stream.o +xz_dec_lzma2_end out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/xz/xz_dec_stream.o +xz_dec_lzma2_reset out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/xz/xz_dec_stream.o +xz_dec_lzma2_run out/BSP_Common/xz/xz_dec_lzma2.o + out/BSP_Common/xz/xz_dec_stream.o +xz_dec_reset out/BSP_Common/xz/xz_dec_stream.o +xz_dec_run out/BSP_Common/xz/xz_dec_stream.o + out/BSP_Common/xz/xz_decompress.o +xz_uncompress_end out/BSP_Common/xz/xz_decompress.o +xz_uncompress_init out/BSP_Common/xz/xz_decompress.o +xz_uncompress_stream out/BSP_Common/xz/xz_decompress.o diff --git a/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader_32m.bin b/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader_32m.bin new file mode 100644 index 00000000..67efe8e5 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader_32m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader_cfg.conf b/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader_cfg.conf new file mode 100644 index 00000000..fe6124e4 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader_cfg.conf @@ -0,0 +1,57 @@ +[LOAD_CFG] +#jlink or uart +interface = uart +device = COM1 +speed_uart_boot = 500000 +speed_uart_load = 500000 +openocd_config = ft2232 +auto_burn = false +speed_jlink = 2000 +#0:without load, 1:eflash_loader load +load_function = 1 +do_reset = true +#reset retry+hold time +reset_hold_time = 50 +shake_hand_delay = 100 +reset_revert = false +cutoff_time = 50 +shake_hand_retry = 3 +flash_burn_retry = 1 +checksum_err_retry = 3 +boot2_loader_timeout = 0 +#1: 32M, 2: RC32M +#xtal_type = 2 +erase_time_out = 15000 +#chiptype=702 +#eflash_loader_file=chips/bl702/eflash_loader/eflash_loader_32m.bin +check_mac = false +#0:no erase,1:programmed section erase,2:chip erase +erase = 1 +# switch eflash_loader command log save +local_log = false +#0:verify by calculating SHA256(xip), >0:read back verify and verify by calculating SHA256(sbus) +verify = 0 +tx_size = 2056 +cpu_reset_after_load = false + +[FLASH_CFG] +flash_id = c84015 +flash_clock_cfg = 1 +#0:NIO, 1:DO, 2:QO, 3:DIO, 4:QIO +flash_io_mode = 1 +#flash_pin value: +#bit 0-1 = flash_cfg: 0: external gpio 23-28, 1: internal 512K, 2: internal 1M, 3: external gpio 17-22 +#bit 2-3 = swap_cfg: 0: do not swap, 1: swap cs&io2, 2: swap io0&io3, 3: swap cs&io2 io0&io3 both +flash_pin = "" +#empty for auto, otherwise specified para file path: eg: chips/bl702/efuse_bootheader/flash_para.bin +flash_para = chips/bl702/efuse_bootheader/flash_para.bin +decompress_write = false +file = chips/bl702/img_create/bootinfo_boot2.bin chips/bl702/img_create/img_boot2.bin chips/bl702/partition/partition.bin chips/bl702/partition/partition.bin +address = 00000000 00002000 e000 f000 + +[EFUSE_CFG] +burn_en = true +factory_mode = false +security_write = false +file = ../../../Tools/img_tools/efuse_bootheader/efusedata.bin +maskfile = ../../../Tools/img_tools/efuse_bootheader/efusedata_mask.bin diff --git a/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader_none.bin b/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader_none.bin new file mode 100644 index 00000000..5d646b9a Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader_none.bin differ diff --git a/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader_rc32m.bin b/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader_rc32m.bin new file mode 100644 index 00000000..828d3801 Binary files /dev/null and b/tools/bflb_flash_tool/chips/bl702/eflash_loader/eflash_loader_rc32m.bin differ diff --git a/tools/bflb_flash_tool/chips/bl702/efuse_bootheader/efuse_bootheader_cfg.conf b/tools/bflb_flash_tool/chips/bl702/efuse_bootheader/efuse_bootheader_cfg.conf new file mode 100644 index 00000000..b9c5ad6c --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/efuse_bootheader/efuse_bootheader_cfg.conf @@ -0,0 +1,196 @@ +[EFUSE_CFG] +######################################################################## +#2bits +ef_sf_aes_mode = 0 +#2bits +ef_sboot_sign_mode = 0 +#2bits +ef_sboot_en = 0 +#2bits +ef_dbg_jtag_dis = 0 +#4bits +ef_dbg_mode = 0 +#32bits +ef_dbg_pwd_low = 0 +#32bits +ef_dbg_pwd_high = 0 +################################################################### +ef_key_slot_2_w0 = 0 +ef_key_slot_2_w1 = 0 +ef_key_slot_2_w2 = 0 +ef_key_slot_2_w3 = 0 +ef_key_slot_3_w0 = 0 +ef_key_slot_3_w1 = 0 +ef_key_slot_3_w2 = 0 +ef_key_slot_3_w3 = 0 +ef_key_slot_4_w0 = 0 +ef_key_slot_4_w1 = 0 +ef_key_slot_4_w2 = 0 +ef_key_slot_4_w3 = 0 + +wr_lock_key_slot_4_l = 0 +wr_lock_dbg_pwd = 0 +wr_lock_key_slot_2 = 0 +wr_lock_key_slot_3 = 0 +wr_lock_key_slot_4_h = 0 +rd_lock_dbg_pwd = 0 +rd_lock_key_slot_2 = 0 +rd_lock_key_slot_3 = 0 +rd_lock_key_slot_4 = 0 + +[BOOTHEADER_CFG] +magic_code = 0x504e4642 +revision = 0x01 +#########################flash cfg############################# +flashcfg_magic_code = 0x47464346 +#flashcfg_magic_code=0 +io_mode = 0x11 +cont_read_support = 0 +sfctrl_clk_delay = 1 +sfctrl_clk_invert = 0x01 + +reset_en_cmd = 0x66 +reset_cmd = 0x99 +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 + +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 + +sector_size = 4 +mfg_id = 0xc8 +page_size = 256 + +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 + +write_enable_cmd = 0x06 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 + +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 + +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 + +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 + +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 + +wel_reg_index = 0 +qe_reg_index = 1 +busy_reg_index = 0 +wel_bit_pos = 1 + +qe_bit_pos = 1 +busy_bit_pos = 0 +wel_reg_write_len = 2 +wel_reg_read_len = 1 + +qe_reg_write_len = 2 +qe_reg_read_len = 1 +release_power_down = 0xab +busy_reg_read_len = 1 + +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 + +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 + +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +cont_read_code = 0xa0 +cont_read_exit_code = 0xff + +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 + +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 + +sector_erase_time = 300 +blk32k_erase_time = 1200 + +blk64k_erase_time = 1200 +page_prog_time = 5 + +chip_erase_time = 200000 +power_down_delay = 20 +qe_data = 0 + +flashcfg_crc32 = 0 + +#########################clk cfg#################################### +clkcfg_magic_code = 0x47464350 +#clkcfg_magic_code=0 + +#0:Not use XTAL to set PLL, 1:XTAL is 32M, 2:XTAL is RC32M +xtal_type = 1 +#0:RC32M, 1:XTAL, 2:PLL 57.6M, 3:PLL 96M, 4:PLL 144M +pll_clk = 1 +hclk_div = 0 +bclk_div = 0 +#0:144M, 1:XCLK(RC32M or XTAL), 2:57.6M, 3:72M, 4:BCLK, 5:96M +flash_clk_type = 1 +flash_clk_div = 0 +clkcfg_crc32 = 0 + +########################boot cfg#################################### +#1:ECC +sign = 0 +#1:AES128,2:AES256,3:AES192 +encrypt_type = 0 +key_sel = 1 +no_segment = 1 +cache_enable = 1 +notload_in_bootrom = 0 +aes_region_lock = 0 +cache_way_disable = 0x00 +crc_ignore = 0 +hash_ignore = 0 +boot2_enable=1 +boot2_rollback=0 + +########################image cfg#################################### +#total image len or segment count +img_len = 0x100 +bootentry = 0 +#img RAM address or flash offset +img_start = 0x2000 + +#img hash +hash_0 = 0xdeadbeef +hash_1 = 0 +hash_2 = 0 +hash_3 = 0 +hash_4 = 0 +hash_5 = 0 +hash_6 = 0 +hash_7 = 0 + +#address of partition tables for boot2 in bootrom +boot2_pt_table_0=0x1000 +boot2_pt_table_1=0x2000 + +crc32 = 0xdeadbeef diff --git a/tools/bflb_flash_tool/chips/bl702/img_create_iot/img_create_cfg.conf b/tools/bflb_flash_tool/chips/bl702/img_create_iot/img_create_cfg.conf new file mode 100644 index 00000000..1ca04c85 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/img_create_iot/img_create_cfg.conf @@ -0,0 +1,15 @@ +[Img_Cfg] +boot_header_file = +efuse_file = +efuse_mask_file = +encrypt_key_org = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +aesiv_file = img_create/aesiv_cpu0.bin +publickey_file = img_create/publickey_uecc.pem +privatekey_file_uecc = img_create/privatekey_uecc.pem +segheader_file = img_create/segheader.bin +segdata_file = +bootinfo_file = +img_file = +whole_img_file = +aes_key_org = 00000000000000000000000000000000 +aes_iv = 00000000000000000000000000000000 diff --git a/tools/bflb_flash_tool/chips/bl702/img_create_iot/img_create_cfg_boot2.conf b/tools/bflb_flash_tool/chips/bl702/img_create_iot/img_create_cfg_boot2.conf new file mode 100644 index 00000000..9ca12e55 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/img_create_iot/img_create_cfg_boot2.conf @@ -0,0 +1,15 @@ +[Img_Cfg] +boot_header_file = +efuse_file = +efuse_mask_file = +encrypt_key_org = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +aesiv_file = img_create/aesiv.bin +publickey_file = img_create/publickey_uecc.pem +privatekey_file_uecc = img_create/privatekey_uecc.pem +segheader_file = img_create/segheader.bin +segdata_file = +bootinfo_file = +img_file = +whole_img_file = +aes_key_org = 11 +aes_iv = 11 diff --git a/tools/bflb_flash_tool/chips/bl702/img_create_iot/img_create_cfg_mfg.conf b/tools/bflb_flash_tool/chips/bl702/img_create_iot/img_create_cfg_mfg.conf new file mode 100644 index 00000000..0e34c3f8 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/img_create_iot/img_create_cfg_mfg.conf @@ -0,0 +1,13 @@ +[Img_Cfg] +boot_header_file = ./efuse_bootheader/bootheader.bin +efuse_file = ./efuse_bootheader/efusedata.bin +efuse_mask_file = ./efuse_bootheader/efusedata_mask.bin +encrypt_key_org = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +aesiv_file = ./img_create/aesiv.bin +publickey_file = ./img_create/publickey_uecc.pem +privatekey_file_uecc = ./img_create/privatekey_uecc.pem +segheader_file = ./img_create/segheader.bin +segdata_file = +bootinfo_file = ./img_create/bootinfo_mfg.bin +img_file = ./img_create/img_mfg.bin +whole_img_file = ./img_create/wholeimg_mfg_if.bin diff --git a/tools/bflb_flash_tool/chips/bl702/img_create_mcu/img_create_cfg.conf b/tools/bflb_flash_tool/chips/bl702/img_create_mcu/img_create_cfg.conf new file mode 100644 index 00000000..1ca04c85 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/img_create_mcu/img_create_cfg.conf @@ -0,0 +1,15 @@ +[Img_Cfg] +boot_header_file = +efuse_file = +efuse_mask_file = +encrypt_key_org = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +aesiv_file = img_create/aesiv_cpu0.bin +publickey_file = img_create/publickey_uecc.pem +privatekey_file_uecc = img_create/privatekey_uecc.pem +segheader_file = img_create/segheader.bin +segdata_file = +bootinfo_file = +img_file = +whole_img_file = +aes_key_org = 00000000000000000000000000000000 +aes_iv = 00000000000000000000000000000000 diff --git a/tools/bflb_flash_tool/chips/bl702/img_create_mcu/img_create_cfg_boot2.conf b/tools/bflb_flash_tool/chips/bl702/img_create_mcu/img_create_cfg_boot2.conf new file mode 100644 index 00000000..9ca12e55 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/img_create_mcu/img_create_cfg_boot2.conf @@ -0,0 +1,15 @@ +[Img_Cfg] +boot_header_file = +efuse_file = +efuse_mask_file = +encrypt_key_org = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +aesiv_file = img_create/aesiv.bin +publickey_file = img_create/publickey_uecc.pem +privatekey_file_uecc = img_create/privatekey_uecc.pem +segheader_file = img_create/segheader.bin +segdata_file = +bootinfo_file = +img_file = +whole_img_file = +aes_key_org = 11 +aes_iv = 11 diff --git a/tools/bflb_flash_tool/chips/bl702/img_create_mcu/img_create_cfg_mfg.conf b/tools/bflb_flash_tool/chips/bl702/img_create_mcu/img_create_cfg_mfg.conf new file mode 100644 index 00000000..0e34c3f8 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/img_create_mcu/img_create_cfg_mfg.conf @@ -0,0 +1,13 @@ +[Img_Cfg] +boot_header_file = ./efuse_bootheader/bootheader.bin +efuse_file = ./efuse_bootheader/efusedata.bin +efuse_mask_file = ./efuse_bootheader/efusedata_mask.bin +encrypt_key_org = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +aesiv_file = ./img_create/aesiv.bin +publickey_file = ./img_create/publickey_uecc.pem +privatekey_file_uecc = ./img_create/privatekey_uecc.pem +segheader_file = ./img_create/segheader.bin +segdata_file = +bootinfo_file = ./img_create/bootinfo_mfg.bin +img_file = ./img_create/img_mfg.bin +whole_img_file = ./img_create/wholeimg_mfg_if.bin diff --git a/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_1M.toml b/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_1M.toml new file mode 100644 index 00000000..d0f334bd --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_1M.toml @@ -0,0 +1,70 @@ +[pt_table] +#partition table is 4K in size +address0 = 0x1000 +address1 = 0x2000 + +[[pt_entry]] +type = 0 +name = "FW" +device = 0 +address0 = 0x3000 +size0 = 0x8D000 +address1 = 0x90000 +size1 = 0x63000 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 1 +name = "mfg" +device = 0 +address0 = 0x90000 +size0 = 0x63000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 2 +name = "media" +device = 0 +address0 = 0xF3000 +size0 = 0x5000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 3 +name = "PSM" +device = 0 +address0 = 0xF8000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 4 +name = "factory" +device = 0 +address0 = 0xFC000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + diff --git a/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_1M_FW1.toml b/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_1M_FW1.toml new file mode 100644 index 00000000..8a81e904 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_1M_FW1.toml @@ -0,0 +1,70 @@ +[pt_table] +#partition table is 4K in size +address0 = 0x1000 +address1 = 0x2000 + +[[pt_entry]] +type = 0 +name = "FW" +device = 0 +address0 = 0x3000 +size0 = 0x8D000 +address1 = 0x90000 +size1 = 0x63000 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 1 +age = 0 + +[[pt_entry]] +type = 1 +name = "mfg" +device = 0 +address0 = 0x90000 +size0 = 0x63000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 2 +name = "media" +device = 0 +address0 = 0xF3000 +size0 = 0x5000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 3 +name = "PSM" +device = 0 +address0 = 0xF8000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 4 +name = "factory" +device = 0 +address0 = 0xFC000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + diff --git a/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_2M.toml b/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_2M.toml new file mode 100644 index 00000000..fe211b60 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_2M.toml @@ -0,0 +1,70 @@ +[pt_table] +#partition table is 4K in size +address0 = 0x1000 +address1 = 0x2000 + +[[pt_entry]] +type = 0 +name = "FW" +device = 0 +address0 = 0x3000 +size0 = 0x123000 +address1 = 0x126000 +size1 = 0xCD000 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 1 +name = "mfg" +device = 0 +address0 = 0x126000 +size0 = 0xCD000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 2 +name = "media" +device = 0 +address0 = 0x1F3000 +size0 = 0x5000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 3 +name = "PSM" +device = 0 +address0 = 0x1F8000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 4 +name = "factory" +device = 0 +address0 = 0x1FC000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + diff --git a/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_2M_FW1.toml b/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_2M_FW1.toml new file mode 100644 index 00000000..e8a3ab5e --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_2M_FW1.toml @@ -0,0 +1,70 @@ +[pt_table] +#partition table is 4K in size +address0 = 0x1000 +address1 = 0x2000 + +[[pt_entry]] +type = 0 +name = "FW" +device = 0 +address0 = 0x3000 +size0 = 0x123000 +address1 = 0x126000 +size1 = 0xCD000 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 1 +age = 0 + +[[pt_entry]] +type = 1 +name = "mfg" +device = 0 +address0 = 0x126000 +size0 = 0xCD000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 2 +name = "media" +device = 0 +address0 = 0x1F3000 +size0 = 0x5000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 3 +name = "PSM" +device = 0 +address0 = 0x1F8000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 4 +name = "factory" +device = 0 +address0 = 0x1FC000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + diff --git a/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_512K.toml b/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_512K.toml new file mode 100644 index 00000000..c5da66f6 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_512K.toml @@ -0,0 +1,70 @@ +[pt_table] +#partition table is 4K in size +address0 = 0x1000 +address1 = 0x2000 + +[[pt_entry]] +type = 0 +name = "FW" +device = 0 +address0 = 0x3000 +size0 = 0x42000 +address1 = 0x45000 +size1 = 0x2E000 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 1 +name = "mfg" +device = 0 +address0 = 0x45000 +size0 = 0x2E000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 2 +name = "media" +device = 0 +address0 = 0x73000 +size0 = 0x5000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 3 +name = "PSM" +device = 0 +address0 = 0x78000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 4 +name = "factory" +device = 0 +address0 = 0x7C000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + diff --git a/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_512K_FW1.toml b/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_512K_FW1.toml new file mode 100644 index 00000000..bb09fbb6 --- /dev/null +++ b/tools/bflb_flash_tool/chips/bl702/partition/partition_cfg_512K_FW1.toml @@ -0,0 +1,70 @@ +[pt_table] +#partition table is 4K in size +address0 = 0x1000 +address1 = 0x2000 + +[[pt_entry]] +type = 0 +name = "FW" +device = 0 +address0 = 0x3000 +size0 = 0x42000 +address1 = 0x45000 +size1 = 0x2E000 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 1 +age = 0 + +[[pt_entry]] +type = 1 +name = "mfg" +device = 0 +address0 = 0x45000 +size0 = 0x2E000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 2 +name = "media" +device = 0 +address0 = 0x73000 +size0 = 0x5000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 3 +name = "PSM" +device = 0 +address0 = 0x78000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + +[[pt_entry]] +type = 4 +name = "factory" +device = 0 +address0 = 0x7C000 +size0 = 0x4000 +address1 = 0 +size1 = 0 +# compressed image must set len,normal image can left it to 0 +len = 0 +activeindex = 0 +age = 0 + diff --git a/tools/bflb_flash_tool/clear.bat b/tools/bflb_flash_tool/clear.bat new file mode 100644 index 00000000..ca94585c --- /dev/null +++ b/tools/bflb_flash_tool/clear.bat @@ -0,0 +1,30 @@ +del /a /f /s /q "*.log" +del /a /f /s /q "*.ini" +del /a /f /s /q "iot.toml" +del /a /f /s /q "mcu.toml" +del /a /f /s /q "storage.toml" +del /a /f /s /q "partition.bin" +del /a /f /s /q "ro_params.dtb" +del /a /f /s /q "flash_para.bin" +del /a /f /s /q .\chips\bl602\img_create_iot\*.bin +del /a /f /s /q .\chips\bl702\img_create_iot\*.bin +del /a /f /s /q .\chips\bl56x\img_create_iot\*.bin +del /a /f /s /q .\chips\bl60x\img_create_iot\*.bin +del /a /f /s /q .\chips\bl606p\img_create_iot\*.bin +del /a /f /s /q .\chips\bl602\img_create_mcu\*.bin +del /a /f /s /q .\chips\bl702\img_create_mcu\*.bin +del /a /f /s /q .\chips\bl56x\img_create_mcu\*.bin +del /a /f /s /q .\chips\bl60x\img_create_mcu\*.bin +del /a /f /s /q .\chips\bl606p\img_create_mcu\*.bin +del /a /f /s /q .\chips\bl602\efuse_bootheader\*.bin +del /a /f /s /q .\chips\bl702\efuse_bootheader\*.bin +del /a /f /s /q .\chips\bl56x\efuse_bootheader\*.bin +del /a /f /s /q .\chips\bl60x\efuse_bootheader\*.bin +del /a /f /s /q .\chips\bl606p\efuse_bootheader\*.bin +del /a /f /s /q .\chips\*.pack +rd /s /Q .\chips\bl602\ota +rd /s /Q .\chips\bl702\ota +rd /s /Q .\chips\bl56x\ota +rd /s /Q .\chips\bl60x\ota +rd /s /Q .\chips\bl606p\ota +pause \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/BY25128BS_684018.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/BY25128BS_684018.conf new file mode 100644 index 00000000..7f875960 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/BY25128BS_684018.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x68 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/BY25Q16BS_684015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/BY25Q16BS_684015.conf new file mode 100644 index 00000000..7f875960 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/BY25Q16BS_684015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x68 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/BY25Q32BS_684016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/BY25Q32BS_684016.conf new file mode 100644 index 00000000..7f875960 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/BY25Q32BS_684016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x68 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/BY25Q64BS_684017.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/BY25Q64BS_684017.conf new file mode 100644 index 00000000..7f875960 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/BY25Q64BS_684017.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x68 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/FM25Q08_a14014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/FM25Q08_a14014.conf new file mode 100644 index 00000000..72c33abf --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/FM25Q08_a14014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 800 +blk32k_erase_time = 3000 +blk64k_erase_time = 4000 +page_prog_time = 10 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/FTVQ80_5e6014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/FTVQ80_5e6014.conf new file mode 100644 index 00000000..2511550e --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/FTVQ80_5e6014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25LE16C_c86015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25LE16C_c86015.conf new file mode 100644 index 00000000..8af338c6 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25LE16C_c86015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25LQ32D_c86016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25LQ32D_c86016.conf new file mode 100644 index 00000000..8af338c6 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25LQ32D_c86016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25LQ80C_c86014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25LQ80C_c86014.conf new file mode 100644 index 00000000..8af338c6 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25LQ80C_c86014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25Q16E_c84015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25Q16E_c84015.conf new file mode 100644 index 00000000..de9a78d7 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25Q16E_c84015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25Q32C_c84016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25Q32C_c84016.conf new file mode 100644 index 00000000..8343806d --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25Q32C_c84016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25Q64E_c84017.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25Q64E_c84017.conf new file mode 100644 index 00000000..8343806d --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25Q64E_c84017.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25Q80E_c84014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25Q80E_c84014.conf new file mode 100644 index 00000000..de9a78d7 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25Q80E_c84014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25WQ16E_c86515.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25WQ16E_c86515.conf new file mode 100644 index 00000000..b8e63a53 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25WQ16E_c86515.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 4 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 1 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 4 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0x12 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25WQ32E_c86516.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25WQ32E_c86516.conf new file mode 100644 index 00000000..8af338c6 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25WQ32E_c86516.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25WQ80E_c86514.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25WQ80E_c86514.conf new file mode 100644 index 00000000..b8e63a53 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/GD25WQ80E_c86514.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 4 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 1 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 4 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0x12 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/IS25LP016D_9d6015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/IS25LP016D_9d6015.conf new file mode 100644 index 00000000..2eec6257 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/IS25LP016D_9d6015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x9d +io_mode = 4 +de_burst_wrap_cmd = 0xc0 +de_burst_wrap_cmd_dmy_clk = 0x00 +de_burst_wrap_code_mode = 0 +de_burst_wrap_code = 0x00 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 0 +qe_bit_pos = 6 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 0 +burst_wrap_code = 0x06 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 5 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/IS25LP032D_9d6016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/IS25LP032D_9d6016.conf new file mode 100644 index 00000000..2eec6257 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/IS25LP032D_9d6016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x9d +io_mode = 4 +de_burst_wrap_cmd = 0xc0 +de_burst_wrap_cmd_dmy_clk = 0x00 +de_burst_wrap_code_mode = 0 +de_burst_wrap_code = 0x00 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 0 +qe_bit_pos = 6 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 0 +burst_wrap_code = 0x06 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 5 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/IS25LP080D_9d6014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/IS25LP080D_9d6014.conf new file mode 100644 index 00000000..2eec6257 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/IS25LP080D_9d6014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x9d +io_mode = 4 +de_burst_wrap_cmd = 0xc0 +de_burst_wrap_cmd_dmy_clk = 0x00 +de_burst_wrap_code_mode = 0 +de_burst_wrap_code = 0x00 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 0 +qe_bit_pos = 6 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 0 +burst_wrap_code = 0x06 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 5 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/KH25V16_c22015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/KH25V16_c22015.conf new file mode 100644 index 00000000..a2f4a6b2 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/KH25V16_c22015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc2 +io_mode = 0x11 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x00 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x00 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 0 +cont_read_code = 0x00 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/KH25V40_c22013.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/KH25V40_c22013.conf new file mode 100644 index 00000000..a2f4a6b2 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/KH25V40_c22013.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc2 +io_mode = 0x11 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x00 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x00 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 0 +cont_read_code = 0x00 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/KH25V80_c22014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/KH25V80_c22014.conf new file mode 100644 index 00000000..a2f4a6b2 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/KH25V80_c22014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc2 +io_mode = 0x11 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x00 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x00 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 0 +cont_read_code = 0x00 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/MD25D40_514013.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/MD25D40_514013.conf new file mode 100644 index 00000000..616c93d7 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/MD25D40_514013.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x51 +io_mode = 0x11 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 0 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/MX25V1633FM_c22535.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/MX25V1633FM_c22535.conf new file mode 100644 index 00000000..b6d5b097 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/MX25V1633FM_c22535.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc2 +io_mode = 4 +de_burst_wrap_cmd = 0xc0 +de_burst_wrap_cmd_dmy_clk = 0x00 +de_burst_wrap_code_mode = 0 +de_burst_wrap_code = 0x10 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 0 +qe_bit_pos = 6 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa5 +burst_wrap_cmd = 0xc0 +burst_wrap_dmy_clk = 0x00 +burst_wrap_data_mode = 0 +burst_wrap_code = 0x02 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 45 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/MX25V3233FM_c22536.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/MX25V3233FM_c22536.conf new file mode 100644 index 00000000..b6d5b097 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/MX25V3233FM_c22536.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc2 +io_mode = 4 +de_burst_wrap_cmd = 0xc0 +de_burst_wrap_cmd_dmy_clk = 0x00 +de_burst_wrap_code_mode = 0 +de_burst_wrap_code = 0x10 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 0 +qe_bit_pos = 6 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa5 +burst_wrap_cmd = 0xc0 +burst_wrap_dmy_clk = 0x00 +burst_wrap_data_mode = 0 +burst_wrap_code = 0x02 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 45 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/MX25V8035F_c22534.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/MX25V8035F_c22534.conf new file mode 100644 index 00000000..b6d5b097 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/MX25V8035F_c22534.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc2 +io_mode = 4 +de_burst_wrap_cmd = 0xc0 +de_burst_wrap_cmd_dmy_clk = 0x00 +de_burst_wrap_code_mode = 0 +de_burst_wrap_code = 0x10 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 0 +qe_bit_pos = 6 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa5 +burst_wrap_cmd = 0xc0 +burst_wrap_dmy_clk = 0x00 +burst_wrap_data_mode = 0 +burst_wrap_code = 0x02 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 45 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/P25Q16H_856015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/P25Q16H_856015.conf new file mode 100644 index 00000000..cb31f9ec --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/P25Q16H_856015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x85 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/P25Q32H_856016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/P25Q32H_856016.conf new file mode 100644 index 00000000..6a5d790c --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/P25Q32H_856016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x85 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/P25Q64H_856017.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/P25Q64H_856017.conf new file mode 100644 index 00000000..6a5d790c --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/P25Q64H_856017.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x85 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/P25Q80H_856014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/P25Q80H_856014.conf new file mode 100644 index 00000000..cb31f9ec --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/P25Q80H_856014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x85 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q128FW_ef6018.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q128FW_ef6018.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q128FW_ef6018.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q16FW_ef6015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q16FW_ef6015.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q16FW_ef6015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q16JV_ef4015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q16JV_ef4015.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q16JV_ef4015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q16JV_ef7015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q16JV_ef7015.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q16JV_ef7015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q32FV_ef4016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q32FV_ef4016.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q32FV_ef4016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q32FW_ef6016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q32FW_ef6016.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q32FW_ef6016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q32JW_ef8016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q32JW_ef8016.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q32JW_ef8016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q80DV_ef4014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q80DV_ef4014.conf new file mode 100644 index 00000000..5e000a93 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q80DV_ef4014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xA0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q80EW_ef6014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q80EW_ef6014.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/W25Q80EW_ef6014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/XM25QH16_204015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/XM25QH16_204015.conf new file mode 100644 index 00000000..bca0fff6 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/XM25QH16_204015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x20 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/XM25QH64_204017.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/XM25QH64_204017.conf new file mode 100644 index 00000000..bca0fff6 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/XM25QH64_204017.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x20 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25F16B_0b4015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25F16B_0b4015.conf new file mode 100644 index 00000000..842ba5a7 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25F16B_0b4015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x0b +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25F32B_0b4016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25F32B_0b4016.conf new file mode 100644 index 00000000..842ba5a7 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25F32B_0b4016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x0b +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25F64B_0b4017.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25F64B_0b4017.conf new file mode 100644 index 00000000..842ba5a7 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25F64B_0b4017.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x0b +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25Q32B_0b6016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25Q32B_0b6016.conf new file mode 100644 index 00000000..b68a87b9 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25Q32B_0b6016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x0b +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 6000 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25Q80B_0b6014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25Q80B_0b6014.conf new file mode 100644 index 00000000..842ba5a7 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/XT25Q80B_0b6014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x0b +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/ZBVQ16_5e6015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/ZBVQ16_5e6015.conf new file mode 100644 index 00000000..d75813d4 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/ZBVQ16_5e6015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x5e +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl602/ZBVQ64_5e4017.conf b/tools/bflb_flash_tool/utils/flash-conf/bl602/ZBVQ64_5e4017.conf new file mode 100644 index 00000000..d75813d4 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl602/ZBVQ64_5e4017.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x5e +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/BY25128BS_684018.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/BY25128BS_684018.conf new file mode 100644 index 00000000..7f875960 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/BY25128BS_684018.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x68 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/BY25Q16BS_684015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/BY25Q16BS_684015.conf new file mode 100644 index 00000000..7f875960 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/BY25Q16BS_684015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x68 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/BY25Q32BS_684016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/BY25Q32BS_684016.conf new file mode 100644 index 00000000..7f875960 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/BY25Q32BS_684016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x68 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/BY25Q64BS_684017.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/BY25Q64BS_684017.conf new file mode 100644 index 00000000..7f875960 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/BY25Q64BS_684017.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x68 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/FM25Q08_a14014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/FM25Q08_a14014.conf new file mode 100644 index 00000000..8af338c6 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/FM25Q08_a14014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/FTVQ80_5e6014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/FTVQ80_5e6014.conf new file mode 100644 index 00000000..2511550e --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/FTVQ80_5e6014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25LE16C_c86015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25LE16C_c86015.conf new file mode 100644 index 00000000..8af338c6 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25LE16C_c86015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25LQ32D_c86016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25LQ32D_c86016.conf new file mode 100644 index 00000000..8af338c6 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25LQ32D_c86016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25LQ80C_c86014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25LQ80C_c86014.conf new file mode 100644 index 00000000..8af338c6 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25LQ80C_c86014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25Q16E_c84015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25Q16E_c84015.conf new file mode 100644 index 00000000..de9a78d7 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25Q16E_c84015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25Q32C_c84016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25Q32C_c84016.conf new file mode 100644 index 00000000..8343806d --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25Q32C_c84016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25Q80E_c84014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25Q80E_c84014.conf new file mode 100644 index 00000000..de9a78d7 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25Q80E_c84014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25WQ16E_c86515.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25WQ16E_c86515.conf new file mode 100644 index 00000000..b8e63a53 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25WQ16E_c86515.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 4 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 1 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 4 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0x12 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25WQ32E_c86516.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25WQ32E_c86516.conf new file mode 100644 index 00000000..8af338c6 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25WQ32E_c86516.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25WQ80E_c86514.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25WQ80E_c86514.conf new file mode 100644 index 00000000..b8e63a53 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/GD25WQ80E_c86514.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc8 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 4 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 1 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 4 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0x12 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/IS25LP016D_9d6015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/IS25LP016D_9d6015.conf new file mode 100644 index 00000000..2eec6257 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/IS25LP016D_9d6015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x9d +io_mode = 4 +de_burst_wrap_cmd = 0xc0 +de_burst_wrap_cmd_dmy_clk = 0x00 +de_burst_wrap_code_mode = 0 +de_burst_wrap_code = 0x00 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 0 +qe_bit_pos = 6 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 0 +burst_wrap_code = 0x06 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 5 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/IS25LP032D_9d6016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/IS25LP032D_9d6016.conf new file mode 100644 index 00000000..2eec6257 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/IS25LP032D_9d6016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x9d +io_mode = 4 +de_burst_wrap_cmd = 0xc0 +de_burst_wrap_cmd_dmy_clk = 0x00 +de_burst_wrap_code_mode = 0 +de_burst_wrap_code = 0x00 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 0 +qe_bit_pos = 6 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 0 +burst_wrap_code = 0x06 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 5 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/IS25LP080D_9d6014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/IS25LP080D_9d6014.conf new file mode 100644 index 00000000..2eec6257 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/IS25LP080D_9d6014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x9d +io_mode = 4 +de_burst_wrap_cmd = 0xc0 +de_burst_wrap_cmd_dmy_clk = 0x00 +de_burst_wrap_code_mode = 0 +de_burst_wrap_code = 0x00 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 0 +qe_bit_pos = 6 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 0 +burst_wrap_code = 0x06 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 5 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/KH25V16_c22015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/KH25V16_c22015.conf new file mode 100644 index 00000000..a2f4a6b2 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/KH25V16_c22015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc2 +io_mode = 0x11 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x00 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x00 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 0 +cont_read_code = 0x00 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/KH25V40_c22013.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/KH25V40_c22013.conf new file mode 100644 index 00000000..a2f4a6b2 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/KH25V40_c22013.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc2 +io_mode = 0x11 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x00 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x00 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 0 +cont_read_code = 0x00 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/KH25V80_c22014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/KH25V80_c22014.conf new file mode 100644 index 00000000..a2f4a6b2 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/KH25V80_c22014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc2 +io_mode = 0x11 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x00 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x00 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 0 +cont_read_code = 0x00 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/MD25D40_514013.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/MD25D40_514013.conf new file mode 100644 index 00000000..616c93d7 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/MD25D40_514013.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x51 +io_mode = 0x11 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 0 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/MX25V1633FM_c22535.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/MX25V1633FM_c22535.conf new file mode 100644 index 00000000..b6d5b097 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/MX25V1633FM_c22535.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc2 +io_mode = 4 +de_burst_wrap_cmd = 0xc0 +de_burst_wrap_cmd_dmy_clk = 0x00 +de_burst_wrap_code_mode = 0 +de_burst_wrap_code = 0x10 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 0 +qe_bit_pos = 6 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa5 +burst_wrap_cmd = 0xc0 +burst_wrap_dmy_clk = 0x00 +burst_wrap_data_mode = 0 +burst_wrap_code = 0x02 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 45 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/MX25V3233FM_c22536.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/MX25V3233FM_c22536.conf new file mode 100644 index 00000000..b6d5b097 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/MX25V3233FM_c22536.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc2 +io_mode = 4 +de_burst_wrap_cmd = 0xc0 +de_burst_wrap_cmd_dmy_clk = 0x00 +de_burst_wrap_code_mode = 0 +de_burst_wrap_code = 0x10 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 0 +qe_bit_pos = 6 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa5 +burst_wrap_cmd = 0xc0 +burst_wrap_dmy_clk = 0x00 +burst_wrap_data_mode = 0 +burst_wrap_code = 0x02 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 45 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/MX25V8035F_c22534.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/MX25V8035F_c22534.conf new file mode 100644 index 00000000..b6d5b097 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/MX25V8035F_c22534.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xc2 +io_mode = 4 +de_burst_wrap_cmd = 0xc0 +de_burst_wrap_cmd_dmy_clk = 0x00 +de_burst_wrap_code_mode = 0 +de_burst_wrap_code = 0x10 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 0 +qe_bit_pos = 6 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa5 +burst_wrap_cmd = 0xc0 +burst_wrap_dmy_clk = 0x00 +burst_wrap_data_mode = 0 +burst_wrap_code = 0x02 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 45 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/P25Q16H_856015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/P25Q16H_856015.conf new file mode 100644 index 00000000..cb31f9ec --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/P25Q16H_856015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x85 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/P25Q32H_856016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/P25Q32H_856016.conf new file mode 100644 index 00000000..6a5d790c --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/P25Q32H_856016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x85 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/P25Q80H_856014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/P25Q80H_856014.conf new file mode 100644 index 00000000..cb31f9ec --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/P25Q80H_856014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x85 +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q128FW_ef6018.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q128FW_ef6018.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q128FW_ef6018.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q16FW_ef6015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q16FW_ef6015.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q16FW_ef6015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q16JV_ef4015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q16JV_ef4015.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q16JV_ef4015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q16JV_ef7015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q16JV_ef7015.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q16JV_ef7015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q32FV_ef4016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q32FV_ef4016.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q32FV_ef4016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q32FW_ef6016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q32FW_ef6016.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q32FW_ef6016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q32JW_ef8016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q32JW_ef8016.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q32JW_ef8016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q80DV_ef4014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q80DV_ef4014.conf new file mode 100644 index 00000000..5e000a93 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q80DV_ef4014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xA0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q80EW_ef6014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q80EW_ef6014.conf new file mode 100644 index 00000000..686cfd6a --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/W25Q80EW_ef6014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0xef +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 3 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/XT25F16B_0b4015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/XT25F16B_0b4015.conf new file mode 100644 index 00000000..842ba5a7 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/XT25F16B_0b4015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x0b +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/XT25F32B_0b4016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/XT25F32B_0b4016.conf new file mode 100644 index 00000000..842ba5a7 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/XT25F32B_0b4016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x0b +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/XT25Q32B_0b6016.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/XT25Q32B_0b6016.conf new file mode 100644 index 00000000..b68a87b9 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/XT25Q32B_0b6016.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x0b +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 6000 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/XT25Q80B_0b6014.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/XT25Q80B_0b6014.conf new file mode 100644 index 00000000..842ba5a7 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/XT25Q80B_0b6014.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x0b +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 2 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x01 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0xa0 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 20 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/flash-conf/bl702/ZBVQ16_5e6015.conf b/tools/bflb_flash_tool/utils/flash-conf/bl702/ZBVQ16_5e6015.conf new file mode 100644 index 00000000..d75813d4 --- /dev/null +++ b/tools/bflb_flash_tool/utils/flash-conf/bl702/ZBVQ16_5e6015.conf @@ -0,0 +1,73 @@ +[FLASH_CFG] +exit_contread_cmd = 0xff +exit_contread_cmd_size = 3 +mfg_id = 0x5e +io_mode = 4 +de_burst_wrap_cmd = 0x77 +de_burst_wrap_cmd_dmy_clk = 0x03 +de_burst_wrap_code_mode = 2 +de_burst_wrap_code = 0xF0 +write_enable_cmd = 0x06 +wel_reg_index = 0 +wel_bit_pos = 1 +wel_reg_read_len = 1 +wel_reg_write_len = 2 +qe_reg_index = 1 +qe_bit_pos = 1 +qe_reg_write_len = 1 +qe_reg_read_len = 1 +busy_reg_index = 0 +busy_bit_pos = 0 +busy_reg_read_len = 1 +release_power_down = 0xab +reg_read_cmd0 = 0x05 +reg_read_cmd1 = 0x35 +reg_write_cmd0 = 0x01 +reg_write_cmd1 = 0x31 +fast_read_qio_cmd = 0xeb +fast_read_qio_dmy_clk = 2 +cont_read_support = 1 +cont_read_code = 0x20 +burst_wrap_cmd = 0x77 +burst_wrap_dmy_clk = 0x03 +burst_wrap_data_mode = 2 +burst_wrap_code = 0x40 +chip_erase_cmd = 0xc7 +sector_erase_cmd = 0x20 +blk32k_erase_cmd = 0x52 +blk64k_erase_cmd = 0xd8 +page_prog_cmd = 0x02 +qpage_prog_cmd = 0x32 +qual_page_prog_addr_mode = 0 +reset_en_cmd = 0x66 +reset_cmd = 0x99 +cont_read_exit_code = 0xff +jedecid_cmd = 0x9f +jedecid_cmd_dmy_clk = 0 +qpi_jedecid_cmd = 0x9f +qpi_jedecid_dmy_clk = 0 +sector_size = 4 +page_size = 256 +fast_read_cmd = 0x0b +fast_read_dmy_clk = 1 +qpi_fast_read_cmd = 0x0b +qpi_fast_read_dmy_clk = 1 +fast_read_do_cmd = 0x3b +fast_read_do_dmy_clk = 1 +fast_read_dio_cmd = 0xbb +fast_read_dio_dmy_clk = 0 +fast_read_qo_cmd = 0x6b +fast_read_qo_dmy_clk = 1 +qpi_fast_read_qio_cmd = 0xeb +qpi_fast_read_qio_dmy_clk = 2 +qpi_page_prog_cmd = 0x02 +write_vreg_enable_cmd = 0x50 +enter_qpi_cmd = 0x38 +exit_qpi_cmd = 0xff +sector_erase_time = 300 +blk32k_erase_time = 1200 +blk64k_erase_time = 1200 +page_prog_time = 5 +chip_erase_time = 65535 +power_down_delay = 8 +qe_data = 0 \ No newline at end of file diff --git a/tools/bflb_flash_tool/utils/genromfs/cygwin1.dll b/tools/bflb_flash_tool/utils/genromfs/cygwin1.dll new file mode 100644 index 00000000..5aa99284 Binary files /dev/null and b/tools/bflb_flash_tool/utils/genromfs/cygwin1.dll differ diff --git a/tools/bflb_flash_tool/utils/genromfs/genromfs.exe b/tools/bflb_flash_tool/utils/genromfs/genromfs.exe new file mode 100644 index 00000000..046ad075 Binary files /dev/null and b/tools/bflb_flash_tool/utils/genromfs/genromfs.exe differ diff --git a/tools/bflb_flash_tool/utils/genromfs/genromfs_amd64 b/tools/bflb_flash_tool/utils/genromfs/genromfs_amd64 new file mode 100644 index 00000000..2f139f10 Binary files /dev/null and b/tools/bflb_flash_tool/utils/genromfs/genromfs_amd64 differ diff --git a/tools/bflb_flash_tool/utils/genromfs/genromfs_armel b/tools/bflb_flash_tool/utils/genromfs/genromfs_armel new file mode 100644 index 00000000..631c0b69 Binary files /dev/null and b/tools/bflb_flash_tool/utils/genromfs/genromfs_armel differ diff --git a/tools/bflb_flash_tool/utils/jlink/JLink.exe b/tools/bflb_flash_tool/utils/jlink/JLink.exe new file mode 100644 index 00000000..d06bfd7c Binary files /dev/null and b/tools/bflb_flash_tool/utils/jlink/JLink.exe differ diff --git a/tools/bflb_flash_tool/utils/jlink/JLinkARM.dll b/tools/bflb_flash_tool/utils/jlink/JLinkARM.dll new file mode 100644 index 00000000..8700ffcc Binary files /dev/null and b/tools/bflb_flash_tool/utils/jlink/JLinkARM.dll differ diff --git a/tools/bflb_flash_tool/utils/openocd/if_bflb_dbg.cfg b/tools/bflb_flash_tool/utils/openocd/if_bflb_dbg.cfg new file mode 100644 index 00000000..e2e382db --- /dev/null +++ b/tools/bflb_flash_tool/utils/openocd/if_bflb_dbg.cfg @@ -0,0 +1,16 @@ +# BouffaloLab USB-JTAG/TTL adapter +interface ftdi +ftdi_vid_pid 0x0403 0x6010 + +ftdi_channel 1 +ftdi_tdo_sample_edge falling +transport select jtag +adapter_khz 10000 + +ftdi_layout_init 0x00f8 0x00fb +#ftdi_layout_signal nTRST -data 0x0400 +#ftdi_layout_signal nSRST -ndata 0x0020 + +#reset_config srst_only srst_push_pull +#adapter_nsrst_delay 100 +#adapter_nsrst_assert_width 100 diff --git a/tools/bflb_flash_tool/utils/openocd/image-loader.cfg b/tools/bflb_flash_tool/utils/openocd/image-loader.cfg new file mode 100644 index 00000000..d152290f --- /dev/null +++ b/tools/bflb_flash_tool/utils/openocd/image-loader.cfg @@ -0,0 +1,22 @@ +# image loader + +proc install_bin {} { +# mww 0x21000000 0x55aaaa55 +# sleep 1000 + init + reset init + #reg pc 0x22010000 + #eflash_loader_openocd.bin no bootheader + load_image bl602/eflash_loader/eflash_loader_openocd.bin 0x22010000 bin + sleep 500 + reg pc 0x22010000 + reg mstatus 0x80000000 + sleep 500 + resume + shutdown +} + +echo "Ready for Remote Connections" + +#init +install_bin diff --git a/tools/bflb_flash_tool/utils/openocd/libftdi1.dll b/tools/bflb_flash_tool/utils/openocd/libftdi1.dll new file mode 100644 index 00000000..95c7c33b Binary files /dev/null and b/tools/bflb_flash_tool/utils/openocd/libftdi1.dll differ diff --git a/tools/bflb_flash_tool/utils/openocd/libusb-0-1-4.dll b/tools/bflb_flash_tool/utils/openocd/libusb-0-1-4.dll new file mode 100644 index 00000000..d7988bb8 Binary files /dev/null and b/tools/bflb_flash_tool/utils/openocd/libusb-0-1-4.dll differ diff --git a/tools/bflb_flash_tool/utils/openocd/libusb-1.0.dll b/tools/bflb_flash_tool/utils/openocd/libusb-1.0.dll new file mode 100644 index 00000000..c6f52123 Binary files /dev/null and b/tools/bflb_flash_tool/utils/openocd/libusb-1.0.dll differ diff --git a/tools/bflb_flash_tool/utils/openocd/openocd-usb-sipeed.cfg b/tools/bflb_flash_tool/utils/openocd/openocd-usb-sipeed.cfg new file mode 100644 index 00000000..bcb477b2 --- /dev/null +++ b/tools/bflb_flash_tool/utils/openocd/openocd-usb-sipeed.cfg @@ -0,0 +1,25 @@ +# SiPEED USB-JTAG/TTL based on FT2232D +interface ftdi +ftdi_vid_pid 0x0403 0x6010 +# http://blog.sipeed.com/p/727.html +ftdi_channel 0 +transport select jtag +adapter_khz 8000 + +ftdi_layout_init 0x0508 0x0f1b +ftdi_layout_signal nTRST -data 0x0200 -noe 0x0100 +ftdi_layout_signal nSRST -data 0x0800 -noe 0x0400 + +set _CHIPNAME riscv +#jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x20000001 +jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x0 + +set _TARGETNAME $_CHIPNAME.cpu +target create $_TARGETNAME.0 riscv -chain-position $_TARGETNAME +#$_TARGETNAME.0 configure -work-area-phys 0x80000000 -work-area-size 10000 -work-area-backup 1 +#$_TARGETNAME.0 configure -work-area-phys 0x50000000 -work-area-size 32768 -work-area-backup 0 +$_TARGETNAME.0 configure -work-area-phys 0x22020000 -work-area-size 0x10000 -work-area-backup 0 +riscv set_reset_timeout_sec 10 +riscv set_prefer_sba on +##riscv set_command_timeout_sec 1000 +echo "SiPEED USB-JTAG/TTL Ready for Remote Connections" diff --git a/tools/bflb_flash_tool/utils/openocd/openocd.exe b/tools/bflb_flash_tool/utils/openocd/openocd.exe new file mode 100644 index 00000000..4d7e36d2 Binary files /dev/null and b/tools/bflb_flash_tool/utils/openocd/openocd.exe differ diff --git a/tools/bflb_flash_tool/utils/openocd/tgt_602.cfg b/tools/bflb_flash_tool/utils/openocd/tgt_602.cfg new file mode 100644 index 00000000..c30c1a17 --- /dev/null +++ b/tools/bflb_flash_tool/utils/openocd/tgt_602.cfg @@ -0,0 +1,45 @@ +#target chip + +set _CHIPNAME riscv +jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x20000c05 + +set _TARGETNAME $_CHIPNAME.cpu +target create $_TARGETNAME.0 riscv -chain-position $_TARGETNAME +$_TARGETNAME.0 configure -work-area-phys 0x22020000 -work-area-size 0x10000 -work-area-backup 1 +#$_TARGETNAME.0 configure -rtos auto + +echo "Ready for Remote Connections" + +$_TARGETNAME.0 configure -event reset-assert-pre { + echo "reset-assert-pre" + adapter_khz 100 +} + +$_TARGETNAME.0 configure -event reset-deassert-post { + echo "reset-deassert-post" + adapter_khz 4000 + reg mstatus 0x7800 + reg mie 0x0 +# reg pc 0x22008000 +} + +$_TARGETNAME.0 configure -event reset-init { + echo "reset-init" +# 4MHz for FPGA + adapter_khz 4000 +} + +gdb_memory_map enable +gdb_flash_program disable + +riscv set_prefer_sba on +riscv set_command_timeout_sec 1 + +init +reset init + +#jtag arp_init + +#resume +#exit + diff --git a/tools/bflb_flash_tool/utils/openocd/tgt_702.cfg b/tools/bflb_flash_tool/utils/openocd/tgt_702.cfg new file mode 100644 index 00000000..b1771666 --- /dev/null +++ b/tools/bflb_flash_tool/utils/openocd/tgt_702.cfg @@ -0,0 +1,45 @@ +#target chip + +set _CHIPNAME riscv +jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x20000e05 + +set _TARGETNAME $_CHIPNAME.cpu +target create $_TARGETNAME.0 riscv -chain-position $_TARGETNAME +$_TARGETNAME.0 configure -work-area-phys 0x22020000 -work-area-size 0x10000 -work-area-backup 1 +#$_TARGETNAME.0 configure -rtos auto + +echo "Ready for Remote Connections" + +$_TARGETNAME.0 configure -event reset-assert-pre { + echo "reset-assert-pre" + adapter_khz 100 +} + +$_TARGETNAME.0 configure -event reset-deassert-post { + echo "reset-deassert-post" + adapter_khz 4000 + reg mstatus 0x7800 + reg mie 0x0 +# reg pc 0x22008000 +} + +$_TARGETNAME.0 configure -event reset-init { + echo "reset-init" +# 4MHz for FPGA + adapter_khz 4000 +} + +gdb_memory_map enable +gdb_flash_program disable + +riscv set_prefer_sba on +riscv set_command_timeout_sec 1 + +init +reset init + +#jtag arp_init + +#resume +#exit + diff --git a/tools/cdk_flashloader/bl70x_flasher.elf b/tools/cdk_flashloader/bl70x_flasher.elf new file mode 100644 index 00000000..3530563e Binary files /dev/null and b/tools/cdk_flashloader/bl70x_flasher.elf differ diff --git a/tools/cmake/compiler_flags.cmake b/tools/cmake/compiler_flags.cmake new file mode 100644 index 00000000..30763262 --- /dev/null +++ b/tools/cmake/compiler_flags.cmake @@ -0,0 +1,91 @@ +#set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) +# Object build options +# -O0 No optimizations, reduce compilation time and make debugging produce the expected results. +# -fno-builtin Do not use built-in functions provided by GCC. +# -Wall Print only standard warnings, for all use Wextra +# -ffunction-sections Place each function item into its own section in the output file. +# -fdata-sections Place each data item into its own section in the output file. +# -fomit-frame-pointer Omit the frame pointer in functions that don’t need one. +# -Og Enables optimizations that do not interfere with debugging. +# -g Produce debugging information in the operating system’s native format. +# -Os Optimize for size. -Os enables all -O2 optimizations. +# -flto Runs the standard link-time optimizer. + +SET(MARCH "rv32imafc") +SET(MCPU "riscv-e24") +SET(MABI "ilp32f") +SET(MCU_FLAG "-march=${MARCH} -mabi=${MABI}") + +SET(COMMON_FLAGS "-O2 -g3 -fshort-enums -fno-common \ +-fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields \ +-Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -fno-jump-tables \ +-Wignored-qualifiers -Wswitch-default -Wunused -Wundef -msmall-data-limit=4") + +# compiler: language specific flags +set(CMAKE_C_FLAGS "${MCU_FLAG} ${COMMON_FLAGS} -std=c99" CACHE INTERNAL "c compiler flags") +set(CMAKE_C_FLAGS_DEBUG "-Og -g" CACHE INTERNAL "c compiler flags: Debug") +set(CMAKE_C_FLAGS_RELEASE "-Os -flto" CACHE INTERNAL "c compiler flags: Release") + +# message("") +# message("-----------------------------------------------------------------------------------------------------------------------------------------------------") +# message("Setting C compiler") +# message("C compiler flags options: ${CMAKE_C_FLAGS}") +# message("C compiler debug options: ${CMAKE_C_FLAGS_DEBUG}") +# message("C compiler release options: ${CMAKE_C_FLAGS_RELEASE}") +# message("-----------------------------------------------------------------------------------------------------------------------------------------------------") + + +set(CMAKE_CXX_FLAGS "${MCU_FLAG} ${COMMON_FLAGS} -std=c++11 " CACHE INTERNAL "cxx compiler flags") +set(CMAKE_CXX_FLAGS_DEBUG "-Og -g" CACHE INTERNAL "cxx compiler flags: Debug") +set(CMAKE_CXX_FLAGS_RELEASE "-Os -flto" CACHE INTERNAL "cxx compiler flags: Release") + +# message("") +# message("-----------------------------------------------------------------------------------------------------------------------------------------------------") +# message("Setting C++ compiler") +# message("C++ compiler flags options: ${CMAKE_CXX_FLAGS}") +# message("C++ compiler debug options: ${CMAKE_CXX_FLAGS_DEBUG}") +# message("C++ compiler release options: ${CMAKE_CXX_FLAGS_RELEASE}") +# message("-----------------------------------------------------------------------------------------------------------------------------------------------------") + + +set(CMAKE_ASM_FLAGS "${MCU_FLAG} ${COMMON_FLAGS}" CACHE INTERNAL "asm compiler flags") +set(CMAKE_ASM_FLAGS_DEBUG "-Og -g" CACHE INTERNAL "asm compiler flags: Debug") +set(CMAKE_ASM_FLAGS_RELEASE "-Os -flto" CACHE INTERNAL "asm compiler flags: Release") + +# message("") +# message("-----------------------------------------------------------------------------------------------------------------------------------------------------") +# message("Setting ASM compiler") +# message("ASM compiler flags options: ${CMAKE_ASM_FLAGS}") +# message("ASM compiler debug options: ${CMAKE_ASM_FLAGS_DEBUG}") +# message("ASM compiler release options: ${CMAKE_ASM_FLAGS_RELEASE}") +# message("-----------------------------------------------------------------------------------------------------------------------------------------------------") + +# -Wl,--gc-sections Perform the dead code elimination. +# --specs=nano.specs Link with newlib-nano. +# --specs=nosys.specs No syscalls, provide empty implementations for the POSIX system calls. + +if(${SUPPORT_SHELL} STREQUAL "ENABLE") +add_definitions(-DSHELL_SUPPORT) +else() +endif() + +if(${BOARD} MATCHES "(bl602u.*)") +set(mcu bl602u) + +elseif(${BOARD} MATCHES "(bl602).*") +set(mcu bl602) + +elseif(${BOARD} MATCHES "(bl702|bl704|bl706).*") +set(mcu bl702) + +elseif(${BOARD} MATCHES "(bl606p).*") +set(mcu bl606p) + +else() +endif() + +SET(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/drivers/${mcu}_driver/${mcu}_flash.ld) + +set(CMAKE_EXE_LINKER_FLAGS "${MCU_FLAG} -Wl,--cref -Wl,--gc-sections -nostartfiles -lc -lm -g3 \ +-fms-extensions -ffunction-sections -fdata-sections -Wall -Wchar-subscripts \ +-Wformat -Wuninitialized -Winit-self -Wignored-qualifiers -Wswitch-default -Wunused -Wundef -std=c99" CACHE INTERNAL "Linker options") diff --git a/tools/cmake/riscv64-unknown-elf-gcc.cmake b/tools/cmake/riscv64-unknown-elf-gcc.cmake new file mode 100644 index 00000000..15651668 --- /dev/null +++ b/tools/cmake/riscv64-unknown-elf-gcc.cmake @@ -0,0 +1,40 @@ +SET(CMAKE_SYSTEM_NAME Generic) +SET(CMAKE_SYSTEM_VERSION 1) +set(CMAKE_SYSTEM_PROCESSOR RISCV) + +if(MINGW OR CYGWIN OR WIN32) + set(WHERE_CMD where) + set(TOOLCHAIN_SUFFIX ".exe") +elseif(UNIX OR APPLE) + set(WHERE_CMD which) + set(TOOLCHAIN_SUFFIX "") +endif() + +set(TOOLCHAIN_PREFIX riscv64-unknown-elf-) + +execute_process( + COMMAND ${WHERE_CMD} ${TOOLCHAIN_PREFIX}gcc + OUTPUT_VARIABLE TOOLCHAIN_PATH + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +message(STATUS "TOOLCHAIN_PATH:${TOOLCHAIN_PATH}") +# specify cross compilers and tools +SET(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc${TOOLCHAIN_SUFFIX} CACHE INTERNAL "") +SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++${TOOLCHAIN_SUFFIX} CACHE INTERNAL "") +set(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}gcc${TOOLCHAIN_SUFFIX} CACHE INTERNAL "") +set(CMAKE_LINKER ${TOOLCHAIN_PREFIX}ld${TOOLCHAIN_SUFFIX} CACHE INTERNAL "") +set(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy CACHE INTERNAL "") +set(CMAKE_OBJDUMP ${TOOLCHAIN_PREFIX}objdump CACHE INTERNAL "") +set(SIZE ${TOOLCHAIN_PREFIX}size CACHE INTERNAL "") + +set(CMAKE_C_COMPILER_WORKS 1) +set(CMAKE_CXX_COMPILER_WORKS 1) + +set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_PATH}) +# search for programs in the build host directories +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +# for libraries and headers in the target directories +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/tools/cmake/tools.cmake b/tools/cmake/tools.cmake new file mode 100644 index 00000000..87100aa7 --- /dev/null +++ b/tools/cmake/tools.cmake @@ -0,0 +1,193 @@ +function(generate_library) + get_filename_component(library_name ${CMAKE_CURRENT_LIST_DIR} NAME) + message(STATUS "[register library component: ${library_name} ], path:${CMAKE_CURRENT_LIST_DIR}") + + # Add src to lib + if(ADD_SRCS) + add_library(${library_name} STATIC ${ADD_SRCS}) + set(include_type PUBLIC) + else() + add_library(${library_name} INTERFACE) + set(include_type INTERFACE) + endif() + + # Add include + foreach(include_dir ${ADD_INCLUDE}) + get_filename_component(abs_dir ${include_dir} ABSOLUTE BASE_DIR ${CMAKE_CURRENT_LIST_DIR}) + if(NOT IS_DIRECTORY ${abs_dir}) + message(FATAL_ERROR "${CMAKE_CURRENT_LIST_FILE}: ${include_dir} not found!") + endif() + target_include_directories(${library_name} ${include_type} ${abs_dir}) + endforeach() + + # Add private include + foreach(include_dir ${ADD_PRIVATE_INCLUDE}) + if(${include_type} STREQUAL INTERFACE) + message(FATAL_ERROR "${CMAKE_CURRENT_LIST_FILE}: ADD_PRIVATE_INCLUDE set but no source file!") + endif() + get_filename_component(abs_dir ${include_dir} ABSOLUTE BASE_DIR ${CMAKE_CURRENT_LIST_DIR}) + if(NOT IS_DIRECTORY ${abs_dir}) + message(FATAL_ERROR "${CMAKE_CURRENT_LIST_FILE}: ${include_dir} not found!") + endif() + target_include_directories(${library_name} PRIVATE ${abs_dir}) + endforeach() + + # Add global config include + target_include_directories(${library_name} PUBLIC ${global_config_dir}) + + # Add requirements + target_link_libraries(${library_name} ${ADD_REQUIREMENTS}) + + # Add definitions public + foreach(difinition ${ADD_DEFINITIONS}) + target_compile_options(${library_name} PUBLIC ${difinition}) + endforeach() + + # Add definitions private + foreach(difinition ${ADD_DEFINITIONS_PRIVATE}) + target_compile_options(${library_name} PRIVATE ${difinition}) + endforeach() + + # Add static lib + if(ADD_STATIC_LIB) + foreach(lib ${ADD_STATIC_LIB}) + if(NOT EXISTS "${lib}") + prepend(lib_full "${CMAKE_CURRENT_LIST_DIR}/" ${lib}) + if(NOT EXISTS "${lib_full}") + message(FATAL_ERROR "Can not find ${lib} or ${lib_full}") + endif() + set(lib ${lib_full}) + endif() + target_link_libraries(${library_name} ${lib}) + endforeach() + endif() + # Add dynamic lib + if(ADD_DYNAMIC_LIB) + set(dynamic_libs ${g_dynamic_libs}) + foreach(lib ${ADD_DYNAMIC_LIB}) + if(NOT EXISTS "${lib}") + prepend(lib_full "${CMAKE_CURRENT_LIST_DIR}/" ${lib}) + if(NOT EXISTS "${lib_full}") + message(FATAL_ERROR "Can not find ${lib} or ${lib_full}") + endif() + set(lib ${lib_full}) + endif() + list(APPEND dynamic_libs ${lib}) + get_filename_component(lib_dir ${lib} DIRECTORY) + get_filename_component(lib_name ${lib} NAME) + target_link_libraries(${library_name} -L${lib_dir} ${lib_name}) + endforeach() + set(g_dynamic_libs ${dynamic_libs} CACHE INTERNAL "g_dynamic_libs") + endif() +endfunction() + +function(generate_bin) + + get_filename_component(current_relative_dir_name ${CMAKE_CURRENT_LIST_DIR} NAME) + + #上面写法等价于string(REGEX REPLACE ".*/(.*)" "\\1" current_relative_dir_name ${CMAKE_CURRENT_LIST_DIR}) + string(REGEX REPLACE "(.*)/${current_relative_dir_name}$" "\\1" above_absolute_dir ${CMAKE_CURRENT_LIST_DIR}) + + get_filename_component(above_relative_dir_name ${above_absolute_dir} NAME) + + set(platform ${CMAKE_SOURCE_DIR}/bsp/bsp_common/platform/bflb_platform.c) + + foreach(mainfile IN LISTS mains) + # Get file name without directory + get_filename_component(mainname ${mainfile} NAME_WE) + + if(DEFINED OUTPUT) + set(OUTPUT_DIR ${OUTPUT}) + set(target_name firmware) + else() + if(${above_relative_dir_name} STREQUAL "examples") + set(OUTPUT_DIR ${CMAKE_SOURCE_DIR}/out/${current_relative_dir_name}) + set(target_name ${current_relative_dir_name}_${mainname}) + else() + set(OUTPUT_DIR ${CMAKE_SOURCE_DIR}/out/${above_relative_dir_name}/${current_relative_dir_name}) + set(target_name ${current_relative_dir_name}_${mainname}) + endif() + + endif() + + file(MAKE_DIRECTORY ${OUTPUT_DIR}) + set(HEX_FILE ${OUTPUT_DIR}/main.hex) + set(BIN_FILE ${OUTPUT_DIR}/main.bin) + set(MAP_FILE ${OUTPUT_DIR}/main.map) + + if(TARGET_REQUIRED_SRCS) + list(APPEND SRCS ${TARGET_REQUIRED_SRCS}) + endif() + + list(APPEND SRCS ${CMAKE_SOURCE_DIR}/bsp/board/${BOARD}/board.c) + + add_executable(${target_name}.elf ${mainfile} ${SRCS} ${platform}) + + set_target_properties(${target_name}.elf PROPERTIES LINK_FLAGS "-T${LINKER_SCRIPT}") + set_target_properties(${target_name}.elf PROPERTIES LINK_DEPENDS ${LINKER_SCRIPT}) + set_target_properties(${target_name}.elf PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${OUTPUT_DIR}") + + # Add private include + foreach(include_dir ${TARGET_REQUIRED_PRIVATE_INCLUDE}) + get_filename_component(abs_dir ${include_dir} ABSOLUTE BASE_DIR ${CMAKE_SOURCE_DIR}) + if(NOT IS_DIRECTORY ${abs_dir}) + message(FATAL_ERROR "${CMAKE_CURRENT_LIST_FILE}: ${include_dir} not found!") + endif() + target_include_directories(${target_name}.elf PRIVATE ${abs_dir}) + endforeach() + + # Add definitions private + foreach(difinition ${TARGET_REQUIRED_PRIVATE_OPTIONS}) + target_compile_options(${target_name}.elf PRIVATE ${difinition}) + endforeach() + # Add libs + target_link_libraries(${target_name}.elf ${mcu}_driver) + + if(${SUPPORT_SHELL} STREQUAL "ENABLE") + target_link_libraries(${target_name}.elf shell) + else() + include_directories(${CMAKE_SOURCE_DIR}/components/shell) + endif() + + if(TARGET_REQUIRED_LIBS) + target_link_libraries(${target_name}.elf ${TARGET_REQUIRED_LIBS}) + endif() + + target_link_libraries(${target_name}.elf "-Wl,-Map=${MAP_FILE}") + + add_custom_command(TARGET ${target_name}.elf POST_BUILD + COMMAND ${CMAKE_OBJCOPY} -Obinary $ ${BIN_FILE} + # COMMAND ${CMAKE_OBJCOPY} -Oihex $ ${HEX_FILE} + COMMAND ${CMAKE_COMMAND} -E copy ${BIN_FILE} ${CMAKE_SOURCE_DIR}/tools/bflb_flash_tool/img/project.bin + COMMENT "Generate ${BIN_FILE}\r\nCopy ${BIN_FILE} into download path") + endforeach() +endfunction(generate_bin) + +function(search_application component_path) + +if(DEFINED APP) + + file(GLOB_RECURSE cmakelists_files ${component_path}/CMakeLists.txt) + set(app_find_ok 0) + + foreach(cmakelists_file ${cmakelists_files}) + get_filename_component(app_relative_dir ${cmakelists_file} DIRECTORY) + get_filename_component(app_name ${app_relative_dir} NAME) + if(${APP} STREQUAL "all") + message("[run app:${app_name}],path:${app_relative_dir}") + add_subdirectory(${app_relative_dir}) + set(app_find_ok 1) + elseif(${app_name} MATCHES "^${APP}") + message("[run app:${app_name}],path:${app_relative_dir}") + add_subdirectory(${app_relative_dir}) + set(app_find_ok 1) + endif() + endforeach() + if(NOT app_find_ok) + message(FATAL_ERROR "can not find app:${APP}") + endif() +else() +add_subdirectory($ENV{PROJECT_DIR}/src src) +endif() + +endfunction() diff --git a/tools/openocd/602.init b/tools/openocd/602.init new file mode 100644 index 00000000..76910ed8 --- /dev/null +++ b/tools/openocd/602.init @@ -0,0 +1,15 @@ +set architecture riscv:rv32 +#target remote :3333 +#set disassemble-next-line on +set mem inaccessible-by-default off +#gdb_breakpoint_override [hard|soft|disable] + +mem 0x22008000 0x22014000 rw +mem 0x42008000 0x42014000 rw +mem 0x22014000 0x22020000 rw +mem 0x42014000 0x42020000 rw +mem 0x22020000 0x22030000 rw +mem 0x42020000 0x42030000 rw +mem 0x22030000 0x2204C000 rw +mem 0x42030000 0x4204C000 rw +mem 0x23000000 0x23400000 ro diff --git a/tools/openocd/602.svd b/tools/openocd/602.svd new file mode 100644 index 00000000..63f23bc7 --- /dev/null +++ b/tools/openocd/602.svd @@ -0,0 +1,236 @@ + + + bouffalolab + bouffalolab + 602 + WiFi BT + + high-performance, 32-bit RV32IMAFC core + + + 8 + 32 + 32 + 0x00000000 + 0xFFFFFFFF + + + 602 + little + + + + + + CLINT + Core Local Interruptor. + 0x02000000 + CLINT + 32 + read-write + + + 0 + 0x10000 + registers + + + + + + MSIP + Machine Software Interrupt Pending Register. + 0x0000 + + + + MTIMECMP_LO + Machine Timer Compare Register Low. + 0x4000 + + + + MTIMECMP_HI + Machine Timer Compare Register High. + 0x4004 + + + + MTIME_LO + Machine Timer Register Low. + 0xBFF8 + + + + MTIME_HI + Machine Timer Register High. + 0xBFFC + + + + + + + CLIC + Core Local Interrupter controller. + 0x02800000 + CLIC + 8 + read-write + + + 0 + 0x10000 + registers + + + + + + 128 + 1 + PENDING[%s] + CLIC Interrupt Pending Registers. + 0x0000 + + PENDING00 + + + + + 128 + 1 + ENABLE[%s] + CLIC Interrupt enable Registers. + 0x0400 + + ENABLE00 + + + + + 128 + 1 + INTCFG[%s] + CLIC Interrupt config Registers. + 0x0800 + + INTCFG37 + + + + + clic_cfg + clic_cfg. + 0x0C00 + + nvbits00 + nlbits13 + nmbits45 + + + + + + + + GLB + GLB. + 0x40000000 + GLB + 32 + read-write + + + 0 + 0x1000 + registers + + + + + + clk_cfg0 + clk_cfg0. + 0x0000 + + pll_en00 + fclk_en11 + hclk_en22 + bclk_en33 + pll_set45 + hbn_root_clk_set67 + hclk_div815 + bclk_div1623 + fclk_sw_state2426 + chip_rdy2727 + glb_id2831 + + + + + + + + + eFuse + eFuse Programmable Memory. + 0x40007000 + eFuse + 32 + read-only + + + 0 + 0x1000 + registers + + + + + + ef_cfg_0 + ef_cfg_0. + 0x0000 + + ef_sboot_en45 + ef_boot_sel811 + ef_cpu0_enc_en77 + ef_cpu1_enc_en66 + ef_sboot_en45 + ef_sboot_sign_mode23 + ef_sf_aes_mode01 + + + + + ef_wifi_mac_low + ef_wifi_mac_low. + 0x0014 + + mac_addr1031 + + + + + ef_wifi_mac_high + ef_wifi_mac_high. + 0x0018 + + dev_info73131 + dev_info63030 + dev_info52929 + dev_info4_32728 + dev_info2_02426 + cust_id1_02223 + mac_addr1_crc5_01621 + mac_addr1015 + + + + + + + + + diff --git a/tools/openocd/702.init b/tools/openocd/702.init new file mode 100644 index 00000000..76910ed8 --- /dev/null +++ b/tools/openocd/702.init @@ -0,0 +1,15 @@ +set architecture riscv:rv32 +#target remote :3333 +#set disassemble-next-line on +set mem inaccessible-by-default off +#gdb_breakpoint_override [hard|soft|disable] + +mem 0x22008000 0x22014000 rw +mem 0x42008000 0x42014000 rw +mem 0x22014000 0x22020000 rw +mem 0x42014000 0x42020000 rw +mem 0x22020000 0x22030000 rw +mem 0x42020000 0x42030000 rw +mem 0x22030000 0x2204C000 rw +mem 0x42030000 0x4204C000 rw +mem 0x23000000 0x23400000 ro diff --git a/tools/openocd/bl70x_gdb.init b/tools/openocd/bl70x_gdb.init new file mode 100644 index 00000000..af3fbcc9 --- /dev/null +++ b/tools/openocd/bl70x_gdb.init @@ -0,0 +1,20 @@ +set mem inaccessible-by-default off +set architecture riscv:rv32 +set remotetimeout 250 + + +set $pc=0x21000000 +set $mie=0 +set $mstatus=0x1880 + +mem 0x22008000 0x22014000 rw +mem 0x42008000 0x42014000 rw +mem 0x22014000 0x22020000 rw +mem 0x42014000 0x42020000 rw +mem 0x22020000 0x22030000 rw +mem 0x42020000 0x42030000 rw +mem 0x22030000 0x2204C000 rw +mem 0x42030000 0x4204C000 rw +mem 0x23000000 0x23400000 ro + + diff --git a/tools/openocd/eclipse_settings_debugger.jpg b/tools/openocd/eclipse_settings_debugger.jpg new file mode 100644 index 00000000..2f84af83 Binary files /dev/null and b/tools/openocd/eclipse_settings_debugger.jpg differ diff --git a/tools/openocd/eclipse_settings_startup_RAM.jpg b/tools/openocd/eclipse_settings_startup_RAM.jpg new file mode 100644 index 00000000..2e0c6043 Binary files /dev/null and b/tools/openocd/eclipse_settings_startup_RAM.jpg differ diff --git a/tools/openocd/if_bflb_dbg.cfg b/tools/openocd/if_bflb_dbg.cfg new file mode 100644 index 00000000..9f754f8d --- /dev/null +++ b/tools/openocd/if_bflb_dbg.cfg @@ -0,0 +1,16 @@ +# BouffaloLab USB-JTAG/TTL adapter +interface ftdi +ftdi_vid_pid 0x0403 0x6010 + +ftdi_channel 1 +ftdi_tdo_sample_edge falling +transport select jtag +adapter_khz 10000 + +ftdi_layout_init 0x00f8 0x00fb +#ftdi_layout_signal nTRST -data 0x0400 +#ftdi_layout_signal nSRST -ndata 0x0020 + +#reset_config srst_only srst_push_pull +#adapter_nsrst_delay 100 +#adapter_nsrst_assert_width 100 diff --git a/tools/openocd/if_bflb_link.cfg b/tools/openocd/if_bflb_link.cfg new file mode 100644 index 00000000..5de10689 --- /dev/null +++ b/tools/openocd/if_bflb_link.cfg @@ -0,0 +1,16 @@ +# BouffaloLab USB-JTAG/TTL adapter +interface ftdi +ftdi_vid_pid 0x0403 0x6010 + +ftdi_channel 1 +ftdi_tdo_sample_edge falling +transport select jtag +adapter_khz 30000 + +ftdi_layout_init 0x00f8 0x00fb +#ftdi_layout_signal nTRST -data 0x0400 +#ftdi_layout_signal nSRST -ndata 0x0020 + +#reset_config srst_only srst_push_pull +#adapter_nsrst_delay 100 +#adapter_nsrst_assert_width 100 diff --git a/tools/openocd/if_ft2232d.cfg b/tools/openocd/if_ft2232d.cfg new file mode 100644 index 00000000..1146ec73 --- /dev/null +++ b/tools/openocd/if_ft2232d.cfg @@ -0,0 +1,15 @@ +# USB-JTAG/TTL based on FT2232D +interface ftdi +ftdi_vid_pid 0x0403 0x6010 + +ftdi_channel 0 +transport select jtag +adapter_khz 2000 + +ftdi_layout_init 0x0508 0x0f2b +#ftdi_layout_signal nTRST -data 0x0400 +ftdi_layout_signal nSRST -ndata 0x0020 + +reset_config srst_only srst_push_pull +adapter_nsrst_delay 100 +adapter_nsrst_assert_width 100 diff --git a/tools/openocd/if_jlink.cfg b/tools/openocd/if_jlink.cfg new file mode 100644 index 00000000..34e8d2c8 --- /dev/null +++ b/tools/openocd/if_jlink.cfg @@ -0,0 +1,7 @@ +# USB-JTAG/TTL based on FT2232D +interface jlink + +transport select jtag +adapter_khz 12000 + + diff --git a/tools/openocd/jtag_help.txt b/tools/openocd/jtag_help.txt new file mode 100644 index 00000000..54c218d8 --- /dev/null +++ b/tools/openocd/jtag_help.txt @@ -0,0 +1,15 @@ +/*************************************************************************************************/ + reg --- show all registers + reg pc --- show register pc + reg a0 0 --- set register x1 to 0 + mdw --- Memory Dump Word + mww --- Memory Write Word + help mww --- Show help info of command "mww" + dump_image --- dump image from memory to file + load_image --- load image from file to memory + halt --- stop core + step --- execute instructions + run --- let the target run + bp --- set breakpoint + help --- Show all help info +/*************************************************************************************************/ diff --git a/tools/openocd/openocd-usb-sipeed-xip.cfg b/tools/openocd/openocd-usb-sipeed-xip.cfg new file mode 100644 index 00000000..1deb31d2 --- /dev/null +++ b/tools/openocd/openocd-usb-sipeed-xip.cfg @@ -0,0 +1,40 @@ +# SiPEED USB-JTAG/TTL based on FT2232D +interface ftdi +ftdi_vid_pid 0x0403 0x6010 +# http://blog.sipeed.com/p/727.html +ftdi_channel 0 +transport select jtag +adapter_khz 10000 + +ftdi_layout_init 0x0508 0x0f1b +ftdi_layout_signal nTRST -data 0x0200 -noe 0x0100 +ftdi_layout_signal nSRST -data 0x0800 -noe 0x0400 + +set _CHIPNAME riscv +#jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x20000001 +jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x0 + +set _TARGETNAME $_CHIPNAME.cpu +target create $_TARGETNAME.0 riscv -chain-position $_TARGETNAME +#$_TARGETNAME.0 configure -work-area-phys 0x80000000 -work-area-size 10000 -work-area-backup 1 +#$_TARGETNAME.0 configure -work-area-phys 0x50000000 -work-area-size 32768 -work-area-backup 0 + +echo "SiPEED USB-JTAG/TTL Ready for Remote Connections" + +proc install_bootrom {} { +# sleep 1000 + init + reset init + load_image chiptest_bootrom.bin 0x21000000 bin + sleep 500 + reg pc 0x21000000 +# sleep 500 +# bp 0x21002f0c 4 hw +# resume +} + +echo "Start loading BOOTROM under project folder" +install_bootrom +echo "flash the XIP code before debugging" +echo "ONLY load symbol in GDB" +echo "use [gdb_breakpoint_override hard] for XIP debugging" diff --git a/tools/openocd/openocd-usb-sipeed.cfg b/tools/openocd/openocd-usb-sipeed.cfg new file mode 100644 index 00000000..b2460328 --- /dev/null +++ b/tools/openocd/openocd-usb-sipeed.cfg @@ -0,0 +1,24 @@ +# SiPEED USB-JTAG/TTL based on FT2232D +interface ftdi +ftdi_vid_pid 0x0403 0x6010 +# http://blog.sipeed.com/p/727.html +ftdi_channel 0 +transport select jtag +adapter_khz 1000 + +ftdi_layout_init 0x0508 0x0f1b +ftdi_layout_signal nTRST -data 0x0200 -noe 0x0100 +ftdi_layout_signal nSRST -data 0x0800 -noe 0x0400 + +set _CHIPNAME riscv +#jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x20000001 +jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x0 + +set _TARGETNAME $_CHIPNAME.cpu +target create $_TARGETNAME.0 riscv -chain-position $_TARGETNAME +#$_TARGETNAME.0 configure -work-area-phys 0x80000000 -work-area-size 10000 -work-area-backup 1 +#$_TARGETNAME.0 configure -work-area-phys 0x50000000 -work-area-size 32768 -work-area-backup 0 + +riscv set_prefer_sba on + +echo "SiPEED USB-JTAG/TTL Ready for Remote Connections" diff --git a/tools/openocd/sifive-e2-ftdi.cfg b/tools/openocd/sifive-e2-ftdi.cfg new file mode 100644 index 00000000..59a20eab --- /dev/null +++ b/tools/openocd/sifive-e2-ftdi.cfg @@ -0,0 +1,23 @@ +# JTAG adapter setup + +interface ftdi +ftdi_vid_pid 0x0403 0x6010 +# ftdi_channel 0 is port ADBUS, ftdi_channel 1 is port BDBUS. +ftdi_channel 1 +transport select jtag +adapter_khz 1000 + +ftdi_layout_init 0x00f8 0x00fb +ftdi_layout_signal nSRST -oe 0x0040 +ftdi_layout_signal nTRST -oe 0x0010 + +set _CHIPNAME riscv +#jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x20000001 +jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x0 + +set _TARGETNAME $_CHIPNAME.cpu +target create $_TARGETNAME.0 riscv -chain-position $_TARGETNAME +#$_TARGETNAME.0 configure -work-area-phys 0x80000000 -work-area-size 10000 -work-area-backup 1 +#$_TARGETNAME.0 configure -work-area-phys 0x50000000 -work-area-size 32768 -work-area-backup 0 + +echo "Ready for Remote Connections" diff --git a/tools/openocd/tgt_602.cfg b/tools/openocd/tgt_602.cfg new file mode 100644 index 00000000..53c813ba --- /dev/null +++ b/tools/openocd/tgt_602.cfg @@ -0,0 +1,45 @@ +#target chip + +set _CHIPNAME riscv +jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x20000c05 + +set _TARGETNAME $_CHIPNAME.cpu +target create $_TARGETNAME.0 riscv -chain-position $_TARGETNAME +$_TARGETNAME.0 configure -work-area-phys 0x22020000 -work-area-size 0x10000 -work-area-backup 1 +#$_TARGETNAME.0 configure -rtos auto + +echo "Ready for Remote Connections" + +$_TARGETNAME.0 configure -event reset-assert-pre { + echo "reset-assert-pre" + adapter_khz 100 +} + +$_TARGETNAME.0 configure -event reset-deassert-post { + echo "reset-deassert-post" + adapter_khz 4000 + reg mstatus 0x7800 + reg mie 0x0 +# reg pc 0x22008000 +} + +$_TARGETNAME.0 configure -event reset-init { + echo "reset-init" +# 4MHz for FPGA + adapter_khz 4000 +} + +gdb_memory_map enable +gdb_flash_program disable + +riscv set_prefer_sba on +riscv set_command_timeout_sec 1 + +init +reset init + +#jtag arp_init + +#resume +#exit + diff --git a/tools/openocd/tgt_702.cfg b/tools/openocd/tgt_702.cfg new file mode 100644 index 00000000..a3b46560 --- /dev/null +++ b/tools/openocd/tgt_702.cfg @@ -0,0 +1,45 @@ +#target chip + +set _CHIPNAME riscv +jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x20000e05 + +set _TARGETNAME $_CHIPNAME.cpu +target create $_TARGETNAME.0 riscv -chain-position $_TARGETNAME +$_TARGETNAME.0 configure -work-area-phys 0x22020000 -work-area-size 0x10000 -work-area-backup 1 +#$_TARGETNAME.0 configure -rtos auto + +echo "Ready for Remote Connections" + +$_TARGETNAME.0 configure -event reset-assert-pre { + echo "reset-assert-pre" + adapter_khz 100 +} + +$_TARGETNAME.0 configure -event reset-deassert-post { + echo "reset-deassert-post" + adapter_khz 4000 + reg mstatus 0x7800 + reg mie 0x0 +# reg pc 0x22008000 +} + +$_TARGETNAME.0 configure -event reset-init { + echo "reset-init" +# 4MHz for FPGA + adapter_khz 4000 +} + +gdb_memory_map enable +gdb_flash_program disable + +riscv set_prefer_sba on +riscv set_command_timeout_sec 1 + +init +reset init + +#jtag arp_init + +#resume +#exit +